<?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>164101</bug_id>
          
          <creation_ts>2016-10-27 18:13:27 -0700</creation_ts>
          <short_desc>Update ANGLE</short_desc>
          <delta_ts>2016-11-29 01:42:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>jeremyhu</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1245380</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-27 18:13:27 -0700</bug_when>
    <thetext>Update ANGLE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245381</commentid>
    <comment_count>1</comment_count>
      <attachid>293093</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-27 18:28:30 -0700</bug_when>
    <thetext>Created attachment 293093
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245393</commentid>
    <comment_count>2</comment_count>
      <attachid>293099</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-27 18:59:31 -0700</bug_when>
    <thetext>Created attachment 293099
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245398</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-27 19:15:00 -0700</bug_when>
    <thetext>Attachment 293099 did not pass style-queue:


ERROR: Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/resolvedepthstencil11_ps.h:1:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
ERROR: Suppressing further [whitespace/carriage_return] reports for this file.
ERROR: Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/resolvedepth11_ps.h:1:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
ERROR: Suppressing further [whitespace/carriage_return] reports for this file.
ERROR: Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/resolvedepthstencil11_vs.h:1:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
ERROR: Suppressing further [whitespace/carriage_return] reports for this file.
ERROR: Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrgbapremultiply2d11ps.h:1:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
ERROR: Suppressing further [whitespace/carriage_return] reports for this file.
ERROR: Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/resolvestencil11_ps.h:1:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
ERROR: Suppressing further [whitespace/carriage_return] reports for this file.
ERROR: Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrgbpremultiply2d11ps.h:1:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
ERROR: Suppressing further [whitespace/carriage_return] reports for this file.
ERROR: Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrgbaunmultiply2d11ps.h:1:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
ERROR: Suppressing further [whitespace/carriage_return] reports for this file.
ERROR: Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrgbunmultiply2d11ps.h:1:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
ERROR: Suppressing further [whitespace/carriage_return] reports for this file.
Total errors found: 764 in 919 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245416</commentid>
    <comment_count>4</comment_count>
      <attachid>293099</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-27 20:33:04 -0700</bug_when>
    <thetext>Comment on attachment 293099
patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245464</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-27 23:04:02 -0700</bug_when>
    <thetext>https://trac.webkit.org/r208036</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245465</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-27 23:05:05 -0700</bug_when>
    <thetext>I also replaced some tabs with spaces in these files:
    src/tests/compiler_tests/QualificationOrder_test.cpp
    src/tests/third_party/rapidjson/include/rapidjson/prettywriter.h
    src/tests/third_party/rapidjson/include/rapidjson/reader.h
    src/tests/third_party/rapidjson/include/rapidjson/writer.h
    src/third_party/murmurhash/MurmurHash3.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254234</commentid>
    <comment_count>7</comment_count>
    <who name="Jeremy Huddleston Sequoia">jeremyhu</who>
    <bug_when>2016-11-29 01:42:21 -0800</bug_when>
    <thetext>Caused: https://bugs.webkit.org/show_bug.cgi?id=165135</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293093</attachid>
            <date>2016-10-27 18:28:30 -0700</date>
            <delta_ts>2016-10-27 18:59:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164101-20161027182439.patch</filename>
            <type>text/plain</type>
            <size>11538833</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODAyMSkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDEzIEBACisyMDE2LTEwLTI3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVXBkYXRlIEFOR0xFCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQxMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIHRvIGYwMTczMTUzMGU3Zjc1NGU1ZWJhZjMy
ZDAwZjNlMjNiNjIzNzY0MjQKKyAgICAgICAgRGlmZmVyZW5jZXMgYmV0d2VlbiB1cHN0cmVhbSBB
TkdMRSBhbmQgV2ViS2l0J3MgY29weSBvZiBBTkdMRSBhcmUgaW4gY2hhbmdlcy5kaWZmCisKIDIw
MTYtMTAtMjQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZW1vdmUgdW51c2VkIEFOR0xFLnZjeHByb2ogYWZ0ZXIgc3dpdGNoaW5nIHRvIENN
YWtlIG9uIFdpbmRvd3MKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnBsaXN0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnBsaXN0CShyZXZp
c2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS5wbGlzdAkod29y
a2luZyBjb3B5KQpAQCAtMTAsNyArMTAsNyBAQAogICAgICAgICA8a2V5Pk9wZW5Tb3VyY2VXZWJz
aXRlVVJMPC9rZXk+CiAgICAgICAgIDxzdHJpbmc+aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2Fu
Z2xlcHJvamVjdC88L3N0cmluZz4KICAgICAgICAgPGtleT5PcGVuU291cmNlU0NNPC9rZXk+Ci0g
ICAgICAgIDxzdHJpbmc+Z2l0IGNsb25lIGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNv
bS9hbmdsZS9hbmdsZSAmYW1wOyZhbXA7IGNkIGFuZ2xlICZhbXA7JmFtcDsgZ2l0IGNoZWNrb3V0
IDY2ODQwMDdhNzc1NzJmMzYxNmZjNDUzMTM4YjBlZjVmN2Q0MmQwMzg8L3N0cmluZz4KKyAgICAg
ICAgPHN0cmluZz5naXQgY2xvbmUgaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Fu
Z2xlL2FuZ2xlICZhbXA7JmFtcDsgY2QgYW5nbGUgJmFtcDsmYW1wOyBnaXQgY2hlY2tvdXQgZjAx
NzMxNTMwZTdmNzU0ZTVlYmFmMzJkMDBmM2UyM2I2MjM3NjQyNDwvc3RyaW5nPgogICAgICAgICA8
a2V5Pk9wZW5Tb3VyY2VJbXBvcnREYXRlPC9rZXk+CiAgICAgICAgIDxzdHJpbmc+MjAxNC0wNC0y
OTwvc3RyaW5nPgogICAgICAgICA8a2V5Pk9wZW5Tb3VyY2VMaWNlbnNlPC9rZXk+CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BVVRIT1JTCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL0FVVEhPUlMJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL0FVVEhPUlMJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIFRoaXMg
aXMgdGhlIG9mZmljaWFsIGxpc3Qgb2YgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycwor77u/IyBU
aGlzIGlzIHRoZSBvZmZpY2lhbCBsaXN0IG9mIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMKICMg
Zm9yIGNvcHlyaWdodCBwdXJwb3Nlcy4KICMgVGhpcyBmaWxlIGlzIGRpc3RpbmN0IGZyb20gdGhl
IENPTlRSSUJVVE9SUyBmaWxlcy4KICMgU2VlIHRoZSBsYXR0ZXIgZm9yIGFuIGV4cGxhbmF0aW9u
LgpAQCAtNDQsMyArNDQsNSBAQCBKb3NoIFNvcmVmCiBNYWtzIE5hdW1vdgogSmlueW91bmcgSHVy
CiBTZWJhc3RpYW4gQmVyZ3N0ZWluCitKYW1lcyBSb3NzLUdvd2FuCitOaWNrb2xheSBBcnRhbW9u
b3YKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0JVSUxELmduCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0JVSUxELmduCShyZXZpc2lvbiAyMDc4MDQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9CVUlMRC5nbgkod29ya2luZyBjb3B5KQpAQCAtMyw4ICsz
LDE4IEBACiAjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAKICMgaW1wb3J0IHRoZSB1c2Vf
eDExIHZhcmlhYmxlCitpbXBvcnQoIi8vYnVpbGQvY29uZmlnL2RjaGVja19hbHdheXNfb24uZ25p
IikKK2ltcG9ydCgiLy9idWlsZC9jb25maWcvbGludXgvcGtnX2NvbmZpZy5nbmkiKQogaW1wb3J0
KCIvL2J1aWxkL2NvbmZpZy91aS5nbmkiKQoraW1wb3J0KCIvL3Rlc3RpbmcvbGliZnV6emVyL2Z1
enplcl90ZXN0LmduaSIpCiBpbXBvcnQoIi8vdGhpcmRfcGFydHkvYW5nbGUvYnVpbGQvYW5nbGVf
Y29tbW9uLmduaSIpCitpbXBvcnQoIi8vdWkvb3pvbmUvb3pvbmUuZ25pIikKKworaWYgKG96b25l
X3BsYXRmb3JtX2dibSkgeworICBwa2dfY29uZmlnKCJsaWJkcm0iKSB7CisgICAgcGFja2FnZXMg
PSBbICJsaWJkcm0iIF0KKyAgfQorfQogCiBhbmdsZV9naXRfaXNfcHJlc2VudCA9IGV4ZWNfc2Ny
aXB0KCJzcmMvY29tbWl0X2lkLnB5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWwpAQCAtMzksNiArNDksMTcgQEAgY29uZmlnKCJpbnRlcm5hbF9jb25maWciKSB7CiAgIF0K
IH0KIAorY29uZmlnKCJleHRyYV93YXJuaW5ncyIpIHsKKyAgIyBFbmFibGUgbW9yZSBkZWZhdWx0
IHdhcm5pbmdzIG9uIFdpbmRvd3MuCisgIGlmIChpc193aW4pIHsKKyAgICBjZmxhZ3MgPSBbCisg
ICAgICAiL3dlNDI0NCIsICAjIENvbnZlcnNpb246IHBvc3NpYmxlIGxvc3Mgb2YgZGF0YS4KKyAg
ICAgICIvd2U0NDU2IiwgICMgVmFyaWFibGUgc2hhZG93aW5nLgorICAgICAgIi93ZTQ0NTgiLCAg
IyBkZWNsYXJhdGlvbiBoaWRlcyBjbGFzcyBtZW1iZXIuCisgICAgXQorICB9Cit9CisKIGlmIChp
c193aW4pIHsKICAgY29weSgiY29weV9jb21waWxlcl9kbGwiKSB7CiAgICAgc291cmNlcyA9IFsK
QEAgLTUwLDYgKzcxLDggQEAgaWYgKGlzX3dpbikgewogICB9CiB9CiAKK2FuZ2xlX3VuZGVmaW5l
X2NvbmZpZ3MgPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpkZWZhdWx0X2luY2x1ZGVfZGly
cyIgXQorCiBjb21wb25lbnQoInRyYW5zbGF0b3IiKSB7CiAgIHNvdXJjZXMgPSBbCiAgICAgInNy
Yy9jb21waWxlci90cmFuc2xhdG9yL1NoYWRlckxhbmcuY3BwIiwKQEAgLTU4LDExICs4MSw4IEBA
IGNvbXBvbmVudCgidHJhbnNsYXRvciIpIHsKIAogICBkZWZpbmVzID0gWyAiQU5HTEVfVFJBTlNM
QVRPUl9JTVBMRU1FTlRBVElPTiIgXQogCi0gIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcv
Y29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQotICBjb25maWdzICs9IFsKLSAgICAiOmludGVybmFs
X2NvbmZpZyIsCi0gICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUi
LAotICBdCisgIGNvbmZpZ3MgLT0gYW5nbGVfdW5kZWZpbmVfY29uZmlncworICBjb25maWdzICs9
IFsgIjppbnRlcm5hbF9jb25maWciIF0KIAogICBwdWJsaWNfZGVwcyA9IFsKICAgICAiOnRyYW5z
bGF0b3JfbGliIiwKQEAgLTkwLDEwICsxMTAsMTEgQEAgc291cmNlX3NldCgiaW5jbHVkZXMiKSB7
CiBzdGF0aWNfbGlicmFyeSgicHJlcHJvY2Vzc29yIikgewogICBzb3VyY2VzID0gcmViYXNlX3Bh
dGgoY29tcGlsZXJfZ3lwaS5hbmdsZV9wcmVwcm9jZXNzb3Jfc291cmNlcywgIi4iLCAic3JjIikK
IAotICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUi
IF0KLSAgY29uZmlncyArPSBbCi0gICAgIjppbnRlcm5hbF9jb25maWciLAotICAgICIvL2J1aWxk
L2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgY29uZmlncyAtPSBhbmdsZV91
bmRlZmluZV9jb25maWdzCisgIGNvbmZpZ3MgKz0gWyAiOmludGVybmFsX2NvbmZpZyIgXQorCisg
IHB1YmxpY19kZXBzID0gWworICAgICI6YW5nbGVfY29tbW9uIiwKICAgXQogfQogCkBAIC0xMDEs
NTMgKzEyMiw5NiBAQCBjb25maWcoInRyYW5zbGF0b3Jfc3RhdGljX2NvbmZpZyIpIHsKICAgZGVm
aW5lcyA9IFsgIkFOR0xFX1RSQU5TTEFUT1JfU1RBVElDIiBdCiB9CiAKK2NvbmZpZygidHJhbnNs
YXRvcl9kaXNhYmxlX3Bvb2xfYWxsb2MiKSB7CisgIGRlZmluZXMgPSBbICJBTkdMRV9UUkFOU0xB
VE9SX0RJU0FCTEVfUE9PTF9BTExPQyIgXQorfQorCiBjb25maWcoImRlYnVnX2Fubm90YXRpb25z
X2NvbmZpZyIpIHsKICAgaWYgKGlzX2RlYnVnKSB7CiAgICAgZGVmaW5lcyA9IFsgIkFOR0xFX0VO
QUJMRV9ERUJVR19BTk5PVEFUSU9OUyIgXQogICB9CiB9CiAKK2NvbmZpZygiYW5nbGVfcmVsZWFz
ZV9hc3NlcnRzX2NvbmZpZyIpIHsKKyAgaWYgKGRjaGVja19hbHdheXNfb24pIHsKKyAgICBkZWZp
bmVzID0gWyAiQU5HTEVfRU5BQkxFX1JFTEVBU0VfQVNTRVJUUyIgXQorICB9Cit9CisKK2NvbmZp
ZygiYW5nbGVfY29tbW9uX2NvbmZpZyIpIHsKKyAgaW5jbHVkZV9kaXJzID0gWyAic3JjL2NvbW1v
bi90aGlyZF9wYXJ0eS9udW1lcmljcyIgXQorfQorCiBzdGF0aWNfbGlicmFyeSgiYW5nbGVfY29t
bW9uIikgewogICBzb3VyY2VzID0gcmViYXNlX3BhdGgoZ2xlc19neXBpLmxpYmFuZ2xlX2NvbW1v
bl9zb3VyY2VzLCAiLiIsICJzcmMiKQogCi0gIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcv
Y29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzIC09IGFuZ2xlX3VuZGVmaW5lX2Nv
bmZpZ3MKICAgY29uZmlncyArPSBbCi0gICAgIjppbnRlcm5hbF9jb25maWciLAorICAgICI6YW5n
bGVfY29tbW9uX2NvbmZpZyIsCiAgICAgIjpkZWJ1Z19hbm5vdGF0aW9uc19jb25maWciLAotICAg
ICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiOmV4dHJh
X3dhcm5pbmdzIiwKKyAgICAiOmludGVybmFsX2NvbmZpZyIsCisgIF0KKworICBwdWJsaWNfZGVw
cyA9IFsKKyAgICAiOmNvbW1pdF9pZCIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbCisgICAg
IjphbmdsZV9yZWxlYXNlX2Fzc2VydHNfY29uZmlnIiwKKyAgICAiOmFuZ2xlX2NvbW1vbl9jb25m
aWciLAogICBdCit9CiAKLSAgcHVibGljX2RlcHMgPSBbICI6Y29tbWl0X2lkIiBdCitjb25maWco
ImFuZ2xlX2ltYWdlX3V0aWxfY29uZmlnIikgeworICBpbmNsdWRlX2RpcnMgPSBbCisgICAgImlu
Y2x1ZGUiLAorICAgICJzcmMiLAorICBdCit9CisKK3N0YXRpY19saWJyYXJ5KCJhbmdsZV9pbWFn
ZV91dGlsIikgeworICBzb3VyY2VzID0gcmViYXNlX3BhdGgoZ2xlc19neXBpLmxpYmFuZ2xlX2lt
YWdlX3V0aWxfc291cmNlcywgIi4iLCAic3JjIikKKworICBjb25maWdzIC09IGFuZ2xlX3VuZGVm
aW5lX2NvbmZpZ3MKKyAgY29uZmlncyArPSBbICI6aW50ZXJuYWxfY29uZmlnIiBdCisKKyAgcHVi
bGljX2NvbmZpZ3MgPSBbICI6YW5nbGVfaW1hZ2VfdXRpbF9jb25maWciIF0KKworICBwdWJsaWNf
ZGVwcyA9IFsKKyAgICAiOmFuZ2xlX2NvbW1vbiIsCisgIF0KIH0KIAogc3RhdGljX2xpYnJhcnko
InRyYW5zbGF0b3JfbGliIikgewogICBzb3VyY2VzID0gcmViYXNlX3BhdGgoY29tcGlsZXJfZ3lw
aS5hbmdsZV90cmFuc2xhdG9yX2xpYl9zb3VyY2VzLCAiLiIsICJzcmMiKQogICBkZWZpbmVzID0g
W10KIAotICBpZiAoYW5nbGVfZW5hYmxlX2Vzc2wpIHsKKyAgaWYgKGFuZ2xlX2VuYWJsZV9lc3Ns
IHx8IHVzZV9saWJmdXp6ZXIpIHsKICAgICBzb3VyY2VzICs9CiAgICAgICAgIHJlYmFzZV9wYXRo
KGNvbXBpbGVyX2d5cGkuYW5nbGVfdHJhbnNsYXRvcl9saWJfZXNzbF9zb3VyY2VzLCAiLiIsICJz
cmMiKQogICAgIGRlZmluZXMgKz0gWyAiQU5HTEVfRU5BQkxFX0VTU0wiIF0KICAgfQogCi0gIGlm
IChhbmdsZV9lbmFibGVfZ2xzbCkgeworICBpZiAoYW5nbGVfZW5hYmxlX2dsc2wgfHwgdXNlX2xp
YmZ1enplcikgewogICAgIHNvdXJjZXMgKz0KICAgICAgICAgcmViYXNlX3BhdGgoY29tcGlsZXJf
Z3lwaS5hbmdsZV90cmFuc2xhdG9yX2xpYl9nbHNsX3NvdXJjZXMsICIuIiwgInNyYyIpCiAgICAg
ZGVmaW5lcyArPSBbICJBTkdMRV9FTkFCTEVfR0xTTCIgXQogICB9CiAKLSAgaWYgKGFuZ2xlX2Vu
YWJsZV9obHNsKSB7CisgIGlmIChhbmdsZV9lbmFibGVfaGxzbCB8fCB1c2VfbGliZnV6emVyKSB7
CiAgICAgc291cmNlcyArPQogICAgICAgICByZWJhc2VfcGF0aChjb21waWxlcl9neXBpLmFuZ2xl
X3RyYW5zbGF0b3JfbGliX2hsc2xfc291cmNlcywgIi4iLCAic3JjIikKICAgICBkZWZpbmVzICs9
IFsgIkFOR0xFX0VOQUJMRV9ITFNMIiBdCiAgIH0KLSAgY29uZmlncyAtPSBbICIvL2J1aWxkL2Nv
bmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgLT0gYW5nbGVfdW5kZWZp
bmVfY29uZmlncwogICBjb25maWdzICs9IFsKICAgICAiOmludGVybmFsX2NvbmZpZyIsCiAgICAg
Ijp0cmFuc2xhdG9yX3N0YXRpY19jb25maWciLAotICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxl
cjpub19jaHJvbWl1bV9jb2RlIiwKICAgXQogICBwdWJsaWNfY29uZmlncyA9IFsgIjpleHRlcm5h
bF9jb25maWciIF0KKyAgaWYgKHVzZV9saWJmdXp6ZXIpIHsKKyAgICBhbGxfZGVwZW5kZW50X2Nv
bmZpZ3MgPSBbICI6dHJhbnNsYXRvcl9kaXNhYmxlX3Bvb2xfYWxsb2MiIF0KKyAgfQogCiAgIGRl
cHMgPSBbCiAgICAgIjppbmNsdWRlcyIsCkBAIC0xNTcsNiArMjIxLDEyIEBAIHN0YXRpY19saWJy
YXJ5KCJ0cmFuc2xhdG9yX2xpYiIpIHsKICAgcHVibGljX2RlcHMgPSBbCiAgICAgIjphbmdsZV9j
b21tb24iLAogICBdCisKKyAgaWYgKGlzX3dpbikgeworICAgICMgTmVjZXNzYXJ5IHRvIHN1cHBy
ZXNzIHNvbWUgc3lzdGVtIGhlYWRlciB4dHJlZSB3YXJuaWducyBpbiBSZWxlYXNlLgorICAgICMg
Rm9yIHNvbWUgcmVhc29uIHRoaXMgd2FybmluZyBkb2Vzbid0IGdldCB0cmlnZ2VyZWQgaW4gQ2hy
b21pdW0KKyAgICBjZmxhZ3MgPSBbICIvd2Q0NzE4IiBdCisgIH0KIH0KIAogc3RhdGljX2xpYnJh
cnkoInRyYW5zbGF0b3Jfc3RhdGljIikgewpAQCAtMTY5LDExICsyMzksOCBAQCBzdGF0aWNfbGli
cmFyeSgidHJhbnNsYXRvcl9zdGF0aWMiKSB7CiAgICAgZGVmaW5lcyA9IFsgIkFOR0xFX0VOQUJM
RV9ITFNMIiBdCiAgIH0KIAotICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVy
OmNocm9taXVtX2NvZGUiIF0KLSAgY29uZmlncyArPSBbCi0gICAgIjppbnRlcm5hbF9jb25maWci
LAotICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKLSAgXQor
ICBjb25maWdzIC09IGFuZ2xlX3VuZGVmaW5lX2NvbmZpZ3MKKyAgY29uZmlncyArPSBbICI6aW50
ZXJuYWxfY29uZmlnIiBdCiAgIHB1YmxpY19jb25maWdzID0gWyAiOnRyYW5zbGF0b3Jfc3RhdGlj
X2NvbmZpZyIgXQogCiAgIHB1YmxpY19kZXBzID0gWwpAQCAtMTgxLDYgKzI0OCwyMSBAQCBzdGF0
aWNfbGlicmFyeSgidHJhbnNsYXRvcl9zdGF0aWMiKSB7CiAgIF0KIH0KIAorc291cmNlX3NldCgi
dHJhbnNsYXRvcl9mdXp6ZXIiKSB7CisgIHNvdXJjZXMgPSBbCisgICAgInNyYy9jb21waWxlci9m
dXp6L3RyYW5zbGF0b3JfZnV6emVyLmNwcCIsCisgIF0KKworICBpbmNsdWRlX2RpcnMgPSBbCisg
ICAgImluY2x1ZGUiLAorICAgICJzcmMiLAorICBdCisKKyAgZGVwcyA9IFsKKyAgICAiOnRyYW5z
bGF0b3Jfc3RhdGljIiwKKyAgXQorfQorCiBjb25maWcoImNvbW1pdF9pZF9jb25maWciKSB7CiAg
IGluY2x1ZGVfZGlycyA9IFsgIiRyb290X2dlbl9kaXIvYW5nbGUiIF0KIH0KQEAgLTIyNCw5ICsz
MDYsMTUgQEAgY29uZmlnKCJsaWJBTkdMRV9jb25maWciKSB7CiAgIH0KICAgaWYgKGFuZ2xlX2Vu
YWJsZV9nbCkgewogICAgIGRlZmluZXMgKz0gWyAiQU5HTEVfRU5BQkxFX09QRU5HTCIgXQorICAg
IGlmICh1c2VfeDExKSB7CisgICAgICBkZWZpbmVzICs9IFsgIkFOR0xFX1VTRV9YMTEiIF0KKyAg
ICB9CiAgIH0KLSAgaWYgKHVzZV94MTEpIHsKLSAgICBkZWZpbmVzICs9IFsgIkFOR0xFX1VTRV9Y
MTEiIF0KKyAgaWYgKGFuZ2xlX2VuYWJsZV92dWxrYW4pIHsKKyAgICBkZWZpbmVzICs9IFsgIkFO
R0xFX0VOQUJMRV9WVUxLQU4iIF0KKyAgfQorICBpZiAoYW5nbGVfZW5hYmxlX251bGwpIHsKKyAg
ICBkZWZpbmVzICs9IFsgIkFOR0xFX0VOQUJMRV9OVUxMIiBdCiAgIH0KICAgZGVmaW5lcyArPSBb
CiAgICAgIkdMX0dMRVhUX1BST1RPVFlQRVMiLApAQCAtMjU1LDkgKzM0MywxMSBAQCBzdGF0aWNf
bGlicmFyeSgibGliQU5HTEUiKSB7CiAgIGluY2x1ZGVfZGlycyA9IFtdCiAgIGxpYnMgPSBbXQog
ICBkZWZpbmVzID0gWyAiTElCQU5HTEVfSU1QTEVNRU5UQVRJT04iIF0KLQotICBkZXBzID0gWwor
ICBwdWJsaWNfZGVwcyA9IFsKICAgICAiOmFuZ2xlX2NvbW1vbiIsCisgIF0KKyAgZGVwcyA9IFsK
KyAgICAiOmFuZ2xlX2ltYWdlX3V0aWwiLAogICAgICI6Y29tbWl0X2lkIiwKICAgICAiOmluY2x1
ZGVzIiwKICAgICAiOnRyYW5zbGF0b3Jfc3RhdGljIiwKQEAgLTI5MCwzMiArMzgwLDc5IEBAIHN0
YXRpY19saWJyYXJ5KCJsaWJBTkdMRSIpIHsKICAgICB9CiAgICAgaWYgKHVzZV94MTEpIHsKICAg
ICAgIHNvdXJjZXMgKz0gcmViYXNlX3BhdGgoZ2xlc19neXBpLmxpYmFuZ2xlX2dsX2dseF9zb3Vy
Y2VzLCAiLiIsICJzcmMiKQotICAgICAgZGVwcyArPSBbCi0gICAgICAgICJzcmMvdGhpcmRfcGFy
dHkvbGliWE5WQ3RybDpsaWJYTlZDdHJsIgotICAgICAgXQorICAgICAgZGVwcyArPSBbICJzcmMv
dGhpcmRfcGFydHkvbGliWE5WQ3RybDpsaWJYTlZDdHJsIiBdCiAgICAgICBsaWJzICs9IFsKICAg
ICAgICAgIlgxMSIsCiAgICAgICAgICJYaSIsCiAgICAgICAgICJYZXh0IiwKICAgICAgIF0KICAg
ICB9CisgICAgaWYgKGlzX21hYykgeworICAgICAgc291cmNlcyArPSByZWJhc2VfcGF0aChnbGVz
X2d5cGkubGliYW5nbGVfZ2xfY2dsX3NvdXJjZXMsICIuIiwgInNyYyIpCisgICAgICBsaWJzICs9
IFsKKyAgICAgICAgIkNvY29hLmZyYW1ld29yayIsCisgICAgICAgICJJT1N1cmZhY2UuZnJhbWV3
b3JrIiwKKyAgICAgICAgIk9wZW5HTC5mcmFtZXdvcmsiLAorICAgICAgICAiUXVhcnR6Q29yZS5m
cmFtZXdvcmsiLAorICAgICAgXQorICAgIH0KKyAgICBpZiAoaXNfYW5kcm9pZCkgeworICAgICAg
c291cmNlcyArPSByZWJhc2VfcGF0aChnbGVzX2d5cGkubGliYW5nbGVfZ2xfZWdsX3NvdXJjZXMs
ICIuIiwgInNyYyIpCisgICAgICBzb3VyY2VzICs9IHJlYmFzZV9wYXRoKGdsZXNfZ3lwaS5saWJh
bmdsZV9nbF9lZ2xfZGxfc291cmNlcywgIi4iLCAic3JjIikKKyAgICAgIHNvdXJjZXMgKz0KKyAg
ICAgICAgICByZWJhc2VfcGF0aChnbGVzX2d5cGkubGliYW5nbGVfZ2xfZWdsX2FuZHJvaWRfc291
cmNlcywgIi4iLCAic3JjIikKKyAgICAgIGxpYnMgKz0gWworICAgICAgICAiYW5kcm9pZCIsCisg
ICAgICAgICJsb2ciLAorICAgICAgXQorICAgIH0KKyAgICBpZiAob3pvbmVfcGxhdGZvcm1fZ2Jt
KSB7CisgICAgICBjb25maWdzICs9IFsgIjpsaWJkcm0iIF0KKyAgICAgIGRlZmluZXMgKz0gWyAi
QU5HTEVfVVNFX09aT05FIiBdCisgICAgICBkZXBzICs9IFsgIi8vdGhpcmRfcGFydHkvbWluaWdi
bSIgXQorICAgICAgc291cmNlcyArPSByZWJhc2VfcGF0aChnbGVzX2d5cGkubGliYW5nbGVfZ2xf
ZWdsX3NvdXJjZXMsICIuIiwgInNyYyIpCisgICAgICBzb3VyY2VzICs9IHJlYmFzZV9wYXRoKGds
ZXNfZ3lwaS5saWJhbmdsZV9nbF9lZ2xfZGxfc291cmNlcywgIi4iLCAic3JjIikKKyAgICAgIHNv
dXJjZXMgKz0gcmViYXNlX3BhdGgoZ2xlc19neXBpLmxpYmFuZ2xlX2dsX296b25lX3NvdXJjZXMs
ICIuIiwgInNyYyIpCisgICAgfQorICB9CisKKyAgaWYgKGFuZ2xlX2VuYWJsZV92dWxrYW4pIHsK
KyAgICBzb3VyY2VzICs9IHJlYmFzZV9wYXRoKGdsZXNfZ3lwaS5saWJhbmdsZV92dWxrYW5fc291
cmNlcywgIi4iLCAic3JjIikKKyAgfQorCisgIGlmIChhbmdsZV9lbmFibGVfbnVsbCkgeworICAg
IHNvdXJjZXMgKz0gcmViYXNlX3BhdGgoZ2xlc19neXBpLmxpYmFuZ2xlX251bGxfc291cmNlcywg
Ii4iLCAic3JjIikKICAgfQogCiAgIGlmIChpc19kZWJ1ZykgewogICAgIGRlZmluZXMgKz0gWyAi
QU5HTEVfR0VORVJBVEVfU0hBREVSX0RFQlVHX0lORk8iIF0KICAgfQogCi0gIGNvbmZpZ3MgLT0g
WyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzIC09
IGFuZ2xlX3VuZGVmaW5lX2NvbmZpZ3MKKwogICBjb25maWdzICs9IFsKICAgICAiOmNvbW1pdF9p
ZF9jb25maWciLAogICAgICI6ZGVidWdfYW5ub3RhdGlvbnNfY29uZmlnIiwKKyAgICAiOmV4dHJh
X3dhcm5pbmdzIiwKICAgICAiOmxpYkFOR0xFX2NvbmZpZyIsCiAgICAgIjppbnRlcm5hbF9jb25m
aWciLAotICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKICAg
XQogCiAgIGlmIChpc193aW4pIHsKLSAgICBkZXBzICs9IFsgIjpjb3B5X2NvbXBpbGVyX2RsbCIg
XQorICAgIGRhdGFfZGVwcyA9IFsKKyAgICAgICI6Y29weV9jb21waWxlcl9kbGwiLAorICAgIF0K
KyAgfQorfQorCitjb25maWcoInNoYXJlZF9saWJyYXJ5X3B1YmxpY19jb25maWciKSB7CisgIGlm
IChpc19tYWMgJiYgIWlzX2NvbXBvbmVudF9idWlsZCkgeworICAgICMgRXhlY3V0YWJsZSB0YXJn
ZXRzIHRoYXQgZGVwZW5kIG9uIHRoZSBzaGFyZWQgbGlicmFyaWVzIGJlbG93IG5lZWQgdG8gaGF2
ZQorICAgICMgdGhlIHJwYXRoIHNldHVwIGluIG5vbi1jb21wb25lbnQgYnVpbGQgY29uZmlndXJh
dGlvbnMuCisgICAgbGRmbGFncyA9IFsKKyAgICAgICItcnBhdGgiLAorICAgICAgIkBleGVjdXRh
YmxlX3BhdGgvIiwKKyAgICBdCiAgIH0KIH0KIApAQCAtMzI3LDEzICs0NjQsMjAgQEAgc2hhcmVk
X2xpYnJhcnkoImxpYkdMRVN2MiIpIHsKICAgICAgICAgWyAiL0RFRjoiICsgcmViYXNlX3BhdGgo
InNyYy9saWJHTEVTdjIvbGliR0xFU3YyLmRlZiIsIHJvb3RfYnVpbGRfZGlyKSBdCiAgIH0KIAot
ICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0K
KyAgaWYgKGlzX21hYyAmJiAhaXNfY29tcG9uZW50X2J1aWxkKSB7CisgICAgbGRmbGFncyA9IFsK
KyAgICAgICItaW5zdGFsbF9uYW1lIiwKKyAgICAgICJAcnBhdGgvJHt0YXJnZXRfbmFtZX0uZHls
aWIiLAorICAgIF0KKyAgICBwdWJsaWNfY29uZmlncyA9IFsgIjpzaGFyZWRfbGlicmFyeV9wdWJs
aWNfY29uZmlnIiBdCisgIH0KKworICBjb25maWdzIC09IGFuZ2xlX3VuZGVmaW5lX2NvbmZpZ3MK
ICAgY29uZmlncyArPSBbCiAgICAgIjppbnRlcm5hbF9jb25maWciLAogICAgICI6Y29tbWl0X2lk
X2NvbmZpZyIsCiAgICAgIjpkZWJ1Z19hbm5vdGF0aW9uc19jb25maWciLAogICAgICI6bGliQU5H
TEVfY29uZmlnIiwKLSAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29k
ZSIsCiAgIF0KIAogICBkZWZpbmVzID0gWyAiTElCR0xFU1YyX0lNUExFTUVOVEFUSU9OIiBdCkBA
IC0zNTEsMTMgKzQ5NSwyMSBAQCBzaGFyZWRfbGlicmFyeSgibGliRUdMIikgewogICAgIGxkZmxh
Z3MgPSBbICIvREVGOiIgKyByZWJhc2VfcGF0aCgic3JjL2xpYkVHTC9saWJFR0wuZGVmIiwgcm9v
dF9idWlsZF9kaXIpIF0KICAgfQogCi0gIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29t
cGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBpZiAoaXNfbWFjICYmICFpc19jb21wb25lbnRfYnVp
bGQpIHsKKyAgICBsZGZsYWdzID0gWworICAgICAgIi1pbnN0YWxsX25hbWUiLAorICAgICAgIkBy
cGF0aC8ke3RhcmdldF9uYW1lfS5keWxpYiIsCisgICAgXQorICAgIHB1YmxpY19jb25maWdzID0g
WyAiOnNoYXJlZF9saWJyYXJ5X3B1YmxpY19jb25maWciIF0KKyAgfQorCisgIGNvbmZpZ3MgLT0g
YW5nbGVfdW5kZWZpbmVfY29uZmlncwogICBjb25maWdzICs9IFsKLSAgICAiOmludGVybmFsX2Nv
bmZpZyIsCiAgICAgIjpjb21taXRfaWRfY29uZmlnIiwKICAgICAiOmRlYnVnX2Fubm90YXRpb25z
X2NvbmZpZyIsCisgICAgIjpleHRyYV93YXJuaW5ncyIsCisgICAgIjppbnRlcm5hbF9jb25maWci
LAogICAgICI6bGliQU5HTEVfY29uZmlnIiwKLSAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6
bm9fY2hyb21pdW1fY29kZSIsCiAgIF0KIAogICBkZWZpbmVzID0gWyAiTElCRUdMX0lNUExFTUVO
VEFUSU9OIiBdCkBAIC0zNzUsMTIgKzUyNywxMiBAQCB1dGlsX2d5cGkgPSBleGVjX3NjcmlwdCgi
Ly9idWlsZC9neXBpX3RvCiAKIGNvbmZpZygiYW5nbGVfdXRpbF9jb25maWciKSB7CiAgIGluY2x1
ZGVfZGlycyA9IFsgInV0aWwiIF0KLSAgaWYgKGlzX2xpbnV4KSB7CisgIGlmIChpc19saW51eCAm
JiB1c2VfeDExKSB7CiAgICAgbGlicyA9IFsgIlgxMSIgXQogICB9CiB9CiAKLXN0YXRpY19saWJy
YXJ5KCJhbmdsZV91dGlsIikgeworc2hhcmVkX2xpYnJhcnkoImFuZ2xlX3V0aWwiKSB7CiAgIHNv
dXJjZXMgPSByZWJhc2VfcGF0aCh1dGlsX2d5cGkudXRpbF9zb3VyY2VzLCAiLiIsICJ1dGlsIikK
IAogICBpZiAoaXNfd2luKSB7CkBAIC0zODksMjggKzU0MSw2MSBAQCBzdGF0aWNfbGlicmFyeSgi
YW5nbGVfdXRpbCIpIHsKIAogICBpZiAoaXNfbGludXgpIHsKICAgICBzb3VyY2VzICs9IHJlYmFz
ZV9wYXRoKHV0aWxfZ3lwaS51dGlsX2xpbnV4X3NvdXJjZXMsICIuIiwgInV0aWwiKQotICAgIGxp
YnMgPSBbICJydCIgXQorICAgIGxpYnMgPSBbCisgICAgICAicnQiLAorICAgICAgImRsIiwKKyAg
ICBdCiAgIH0KIAogICBpZiAoaXNfbWFjKSB7CiAgICAgc291cmNlcyArPSByZWJhc2VfcGF0aCh1
dGlsX2d5cGkudXRpbF9vc3hfc291cmNlcywgIi4iLCAidXRpbCIpCisgICAgbGlicyA9IFsKKyAg
ICAgICJBcHBLaXQuZnJhbWV3b3JrIiwKKyAgICAgICJRdWFydHpDb3JlLmZyYW1ld29yayIsCisg
ICAgXQogICB9CiAKICAgaWYgKHVzZV94MTEpIHsKICAgICBzb3VyY2VzICs9IHJlYmFzZV9wYXRo
KHV0aWxfZ3lwaS51dGlsX3gxMV9zb3VyY2VzLCAiLiIsICJ1dGlsIikKICAgfQogCisgIGlmIChp
c19hbmRyb2lkKSB7CisgICAgIyBUbyBwcmV2ZW50IGxpbnV4IHNvdXJjZXMgZmlsdGVyaW5nIG9u
IGFuZHJvaWQKKyAgICBzZXRfc291cmNlc19hc3NpZ25tZW50X2ZpbHRlcihbXSkKKyAgICBzb3Vy
Y2VzICs9IHJlYmFzZV9wYXRoKHV0aWxfZ3lwaS51dGlsX2xpbnV4X3NvdXJjZXMsICIuIiwgInV0
aWwiKQorICAgIHNvdXJjZXMgKz0gcmViYXNlX3BhdGgodXRpbF9neXBpLnV0aWxfYW5kcm9pZF9z
b3VyY2VzLCAiLiIsICJ1dGlsIikKKyAgICBsaWJzID0gWworICAgICAgImFuZHJvaWQiLAorICAg
ICAgImxvZyIsCisgICAgXQorICB9CisKKyAgaWYgKHVzZV9vem9uZSkgeworICAgIHNvdXJjZXMg
Kz0gcmViYXNlX3BhdGgodXRpbF9neXBpLnV0aWxfb3pvbmVfc291cmNlcywgIi4iLCAidXRpbCIp
CisgIH0KKwogICBkZWZpbmVzID0gWwogICAgICJHTF9HTEVYVF9QUk9UT1RZUEVTIiwKICAgICAi
RUdMX0VHTEVYVF9QUk9UT1RZUEVTIiwKKyAgICAiTElCQU5HTEVfVVRJTF9JTVBMRU1FTlRBVElP
TiIsCiAgIF0KIAotICBjb25maWdzICs9IFsgIjpkZWJ1Z19hbm5vdGF0aW9uc19jb25maWciIF0K
KyAgY29uZmlncyArPSBbCisgICAgIjpkZWJ1Z19hbm5vdGF0aW9uc19jb25maWciLAorICAgICI6
ZXh0cmFfd2FybmluZ3MiLAorICBdCiAKICAgcHVibGljX2NvbmZpZ3MgPSBbCiAgICAgIjphbmds
ZV91dGlsX2NvbmZpZyIsCiAgICAgIjppbnRlcm5hbF9jb25maWciLAogICBdCisgIGlmIChpc19t
YWMgJiYgIWlzX2NvbXBvbmVudF9idWlsZCkgeworICAgIGxkZmxhZ3MgPSBbCisgICAgICAiLWlu
c3RhbGxfbmFtZSIsCisgICAgICAiQHJwYXRoL2xpYiR7dGFyZ2V0X25hbWV9LmR5bGliIiwKKyAg
ICBdCisgICAgcHVibGljX2NvbmZpZ3MgKz0gWyAiOnNoYXJlZF9saWJyYXJ5X3B1YmxpY19jb25m
aWciIF0KKyAgfQogCiAgIGRlcHMgPSBbCiAgICAgIjphbmdsZV9jb21tb24iLApJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNiBAQAogaW5jbHVkZV9kaXJlY3RvcmllcygKICAgICBzcmMKKyAgICBzcmMvY29tbW9u
L3RoaXJkX3BhcnR5L251bWVyaWNzCiAgICAgaW5jbHVkZQogICAgIGluY2x1ZGUvS0hSCiApCkBA
IC0yNyw2ICsyOCw3IEBAIGFkZF9saWJyYXJ5KGxpYkVHTCBTSEFSRUQKIHNldF9wcm9wZXJ0eShU
QVJHRVQgbGliRUdMIFBST1BFUlRZIENPTVBJTEVfREVGSU5JVElPTlMKICAgICBBTkdMRV9XRUJL
SVRfV0lOCiAgICAgRUdMQVBJPQorICAgIF9fU1REQ19DT05TVEFOVF9NQUNST1MKICkKIAogYWRk
X2xpYnJhcnkobGliR0xFU3YyIFNIQVJFRApAQCAtMzYsNiArMzgsNyBAQCBhZGRfbGlicmFyeShs
aWJHTEVTdjIgU0hBUkVECiAgICAgc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18yXzBf
ZXh0LmNwcAogICAgIHNyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfM18wLmNwcAogICAg
IHNyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfM18wX2V4dC5jcHAKKyAgICBzcmMvbGli
R0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMS5jcHAKICAgICBzcmMvbGliR0xFU3YyL2dsb2Jh
bF9zdGF0ZS5jcHAKICAgICBzcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5jcHAKICAgICBzcmMvbGli
R0xFU3YyL2xpYkdMRVN2Mi5kZWYKQEAgLTQ2LDkgKzQ5LDUwIEBAIHNldF9wcm9wZXJ0eShUQVJH
RVQgbGliR0xFU3YyIFBST1BFUlRZIEMKICAgICBBTkdMRV9XRUJLSVRfV0lOCiAgICAgR0xfQVBJ
Q0FMTD0KICAgICBMSUJHTEVTVjJfSU1QTEVNRU5UQVRJT04KKyAgICBfX1NURENfQ09OU1RBTlRf
TUFDUk9TCisgICAgX19TVERDX0xJTUlUX01BQ1JPUwogKQogCiBhZGRfbGlicmFyeShsaWJBTkdM
RSBTVEFUSUMKKyAgICBzcmMvY29tbW9uL0Zsb2F0MTZUb0Zsb2F0MzIuY3BwCisgICAgc3JjL2Nv
bW1vbi9zdHJpbmdfdXRpbHMuY3BwCisgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQWRkQW5k
VHJ1ZVRvTG9vcENvbmRpdGlvbi5jcHAKKyAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9BZGRE
ZWZhdWx0UmV0dXJuU3RhdGVtZW50cy5jcHAKKyAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9C
cmVha1ZhcmlhYmxlQWxpYXNpbmdJbklubmVyTG9vcHMuY3BwCisgICAgc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0LmNwcAorICAgIHNyYy9jb21waWxl
ci90cmFuc2xhdG9yL0V4cGFuZEludGVnZXJQb3dFeHByZXNzaW9ucy5jcHAKKyAgICBzcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlVGV4ZWxGZXRjaE9mZnNldC5jcHAKKyAgICBzcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlVW5hcnlNaW51c09wZXJhdG9ySW50LmNwcAorICAgIHNy
Yy9jb21waWxlci90cmFuc2xhdG9yL1NpbXBsaWZ5TG9vcENvbmRpdGlvbnMuY3BwCisgICAgc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvU3BsaXRTZXF1ZW5jZU9wZXJhdG9yLmNwcAorICAgIHNyYy9j
b21waWxlci90cmFuc2xhdG9yL1RleHR1cmVGdW5jdGlvbkhMU0wuY3BwCisgICAgc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvVXNlSW50ZXJmYWNlQmxvY2tGaWVsZHMuY3BwCisgICAgc3JjL2ltYWdl
X3V0aWwvY29weWltYWdlLmNwcAorICAgIHNyYy9pbWFnZV91dGlsL2ltYWdlZm9ybWF0cy5jcHAK
KyAgICBzcmMvaW1hZ2VfdXRpbC9sb2FkaW1hZ2VfZXRjLmNwcAorICAgIHNyYy9pbWFnZV91dGls
L2xvYWRpbWFnZS5jcHAKKyAgICBzcmMvbGliQU5HTEUvZm9ybWF0X21hcF9hdXRvZ2VuLmNwcAor
ICAgIHNyYy9saWJBTkdMRS9mb3JtYXRfbWFwX2F1dG9nZW4uY3BwCisgICAgc3JjL2xpYkFOR0xF
L2Zvcm1hdHV0aWxzLmNwcAorICAgIHNyYy9saWJBTkdMRS9IYW5kbGVSYW5nZUFsbG9jYXRvci5j
cHAKKyAgICBzcmMvbGliQU5HTEUvUGF0aC5jcHAKKyAgICBzcmMvbGliQU5HTEUvcXVlcnl1dGls
cy5jcHAKKyAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvQ29udGV4dEltcGwuY3BwCisgICAgc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Db250ZXh0MTEuY3BwCisgICAgc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX2Zvcm1hdF9tYXBfYXV0b2dlbi5jcHAKKyAgICBz
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0cmVhbVByb2R1Y2VyTlYxMi5jcHAKKyAg
ICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlLmNw
cAorICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVGV4dHVyZVN0b3JhZ2UxMS5j
cHAKKyAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1RyYW5zZm9ybUZlZWRiYWNr
MTEuY3BwCisgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW4zMi9OYXRpdmVX
aW5kb3cxMVdpbjMyLmNwcAorICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9Db250
ZXh0OS5jcHAKKyAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvTmF0aXZlV2luZG93
OS5jcHAKKyAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL05hdGl2ZVdpbmRvd0QzRC5jcHAK
KyAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvRm9ybWF0X2F1dG9nZW4uY3BwCisgICAgc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL0Zvcm1hdC5jcHAKKyAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvbG9h
ZF9mdW5jdGlvbnNfdGFibGVfYXV0b2dlbi5jcHAKKyAgICBzcmMvbGliQU5HTEUvc2lnbmFsX3V0
aWxzLmNwcAorICAgIHNyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMzMS5jcHAKICAgICBzcmMvY29t
bW9uL2FuZ2xldXRpbHMuY3BwCiAgICAgc3JjL2NvbW1vbi9kZWJ1Zy5jcHAKICAgICBzcmMvY29t
bW9uL2V2ZW50X3RyYWNlci5jcHAKQEAgLTY3LDUyICsxMTEsNTIgQEAgYWRkX2xpYnJhcnkobGli
QU5HTEUgU1RBVElDCiAgICAgc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3Iu
Y3BwCiAgICAgc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5jcHAKICAgICBzcmMvY29t
cGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5jcHAKLSAgICBzcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvckdMU0wuY3BwCi0gICAgc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvRXh0ZW5zaW9uR0xTTC5jcHAKLSAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9P
dXRwdXRFU1NMLmNwcAotICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dEdMU0wuY3Bw
Ci0gICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0R0xTTEJhc2UuY3BwCi0gICAgc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVjb3JkQ29uc3RhbnRQcmVjaXNpb24uY3BwCi0gICAgc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VhcmNoU3ltYm9sLmNwcAotICAgIHNyYy9jb21waWxlci90
cmFuc2xhdG9yL1RyYW5zbGF0b3JFU1NMLmNwcAotICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9y
L1RyYW5zbGF0b3JHTFNMLmNwcAotICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1ZlcnNpb25H
TFNMLmNwcAotICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL0FTVE1ldGFkYXRhSExTTC5jcHAK
LSAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9ibG9ja2xheW91dEhMU0wuY3BwCi0gICAgc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JITFNMLmNwcAotICAg
IHNyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dEhMU0wuY3BwCi0gICAgc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvU2VhcmNoU3ltYm9sLmNwcAotICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9y
L1N0cnVjdHVyZUhMU0wuY3BwCi0gICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRv
ckhMU0wuY3BwCi0gICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVW5pZm9ybUhMU0wuY3BwCi0g
ICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVXRpbHNITFNMLmNwcAogICAgIHNyYy9jb21waWxl
ci90cmFuc2xhdG9yL0FycmF5UmV0dXJuVmFsdWVUb091dFBhcmFtZXRlci5jcHAKKyAgICBzcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9BU1RNZXRhZGF0YUhMU0wuY3BwCiAgICAgc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvYmxvY2tsYXlvdXQuY3BwCisgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
YmxvY2tsYXlvdXRITFNMLmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL0J1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yLmNwcAorICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL0J1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yR0xTTC5jcHAKKyAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9CdWls
dEluRnVuY3Rpb25FbXVsYXRvckhMU0wuY3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
Q2FjaGUuY3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ2FsbERBRy5jcHAKICAgICBz
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db2RlR2VuLmNwcAogICAgIHNyYy9jb21waWxlci90cmFu
c2xhdG9yL0NvbXBpbGVyLmNwcAorICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL0NvbnN0YW50
VW5pb24uY3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRGVmZXJHbG9iYWxJbml0aWFs
aXplcnMuY3BwCisgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5j
eUdyYXBoLmNwcAorICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVu
Y3lHcmFwaEJ1aWxkZXIuY3BwCisgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgv
RGVwZW5kZW5jeUdyYXBoT3V0cHV0LmNwcAorICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL2Rl
cGdyYXBoL0RlcGVuZGVuY3lHcmFwaFRyYXZlcnNlLmNwcAogICAgIHNyYy9jb21waWxlci90cmFu
c2xhdG9yL0RpYWdub3N0aWNzLmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL0RpcmVj
dGl2ZUhhbmRsZXIuY3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRW11bGF0ZVByZWNp
c2lvbi5jcHAKKyAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9FeHRlbnNpb25HTFNMLmNwcAog
ICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL0ZsYWdTdGQxNDBTdHJ1Y3RzLmNwcAogICAgIHNy
Yy9jb21waWxlci90cmFuc2xhdG9yL0Zvckxvb3BVbnJvbGwuY3BwCisgICAgc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvZ2xzbGFuZ19sZXguY3BwCisgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
Z2xzbGFuZ190YWIuY3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5mb1NpbmsuY3Bw
CiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZS5jcHAKLSAgICBzcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplVmFyaWFibGVzLmNwcAogICAgIHNyYy9jb21waWxl
ci90cmFuc2xhdG9yL0luaXRpYWxpemVEbGwuY3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5jcHAKKyAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9Jbml0aWFsaXplVmFyaWFibGVzLmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL0lu
dGVybWVkaWF0ZS5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmNw
cAorICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGVQYXR0ZXJuTWF0Y2hlci5j
cHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9pbnRlcm1PdXQuY3BwCiAgICAgc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtVHJhdmVyc2UuY3BwCiAgICAgc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvTG9vcEluZm8uY3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3BlcmF0
b3IuY3BwCisgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0RVNTTC5jcHAKKyAgICBz
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRHTFNMLmNwcAorICAgIHNyYy9jb21waWxlci90
cmFuc2xhdG9yL091dHB1dEdMU0xCYXNlLmNwcAorICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9y
L091dHB1dEhMU0wuY3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUGFyc2VDb250ZXh0
LmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1Bvb2xBbGxvYy5jcHAKICAgICBzcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9QcnVuZUVtcHR5RGVjbGFyYXRpb25zLmNwcAorICAgIHNyYy9j
b21waWxlci90cmFuc2xhdG9yL1F1YWxpZmllclR5cGVzLmNwcAorICAgIHNyYy9jb21waWxlci90
cmFuc2xhdG9yL1JlY29yZENvbnN0YW50UHJlY2lzaW9uLmNwcAogICAgIHNyYy9jb21waWxlci90
cmFuc2xhdG9yL1JlZ2VuZXJhdGVTdHJ1Y3ROYW1lcy5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9SZW1vdmVEeW5hbWljSW5kZXhpbmcuY3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvUmVtb3ZlUG93LmNwcApAQCAtMTIxLDE2ICsxNjUsMjYgQEAgYWRkX2xpYnJhcnkobGli
QU5HTEUgU1RBVElDCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZUVsc2VCbG9j
a3MuY3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2NhbGFyaXplVmVjQW5kTWF0Q29u
c3RydWN0b3JBcmdzLmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1NlYXJjaFN5bWJv
bC5jcHAKKyAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TZWFyY2hTeW1ib2wuY3BwCisgICAg
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VhcmNoU3ltYm9sLmNwcAogICAgIHNyYy9jb21waWxl
ci90cmFuc2xhdG9yL1NlcGFyYXRlQXJyYXlJbml0aWFsaXphdGlvbi5jcHAKICAgICBzcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9TZXBhcmF0ZURlY2xhcmF0aW9ucy5jcHAKICAgICBzcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9TZXBhcmF0ZUV4cHJlc3Npb25zUmV0dXJuaW5nQXJyYXlzLmNwcAogICAg
IHNyYy9jb21waWxlci90cmFuc2xhdG9yL1NoYWRlckxhbmcuY3BwCiAgICAgc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvU2hhZGVyVmFycy5jcHAKKyAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9T
dHJ1Y3R1cmVITFNMLmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1N5bWJvbFRhYmxl
LmNwcAorICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL3RpbWluZy9SZXN0cmljdEZyYWdtZW50
U2hhZGVyVGltaW5nLmNwcAorICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL3RpbWluZy9SZXN0
cmljdFZlcnRleFNoYWRlclRpbWluZy5jcHAKKyAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9U
cmFuc2xhdG9yRVNTTC5jcHAKKyAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9y
R0xTTC5jcHAKKyAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9ySExTTC5jcHAK
ICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UeXBlcy5jcHAKICAgICBzcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9VbmZvbGRTaG9ydENpcmN1aXRBU1QuY3BwCiAgICAgc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvVW5mb2xkU2hvcnRDaXJjdWl0VG9JZi5jcHAKKyAgICBzcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9Vbmlmb3JtSExTTC5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci91dGls
LmNwcAorICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1V0aWxzSExTTC5jcHAKICAgICBzcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyLmNwcAogICAgIHNy
Yy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlTGltaXRhdGlvbnMuY3BwCiAgICAgc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVNYXhQYXJhbWV0ZXJzLmNwcApAQCAtMTM4LDE0ICsx
OTIsNyBAQCBhZGRfbGlicmFyeShsaWJBTkdMRSBTVEFUSUMKICAgICBzcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9WYWxpZGF0ZVN3aXRjaC5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9W
YXJpYWJsZUluZm8uY3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFyaWFibGVQYWNr
ZXIuY3BwCi0gICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZ19sZXguY3BwCi0gICAg
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZ190YWIuY3BwCi0gICAgc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoLmNwcAotICAgIHNyYy9jb21waWxl
ci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuY3BwCi0gICAgc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmNwcAot
ICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaFRyYXZl
cnNlLmNwcAotICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL3RpbWluZy9SZXN0cmljdEZyYWdt
ZW50U2hhZGVyVGltaW5nLmNwcAotICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL3RpbWluZy9S
ZXN0cmljdFZlcnRleFNoYWRlclRpbWluZy5jcHAKKyAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9WZXJzaW9uR0xTTC5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WZXJzaW9uR0xT
TC5jcHAKICAgICBzcmMvbGliQU5HTEUvYW5nbGV0eXBlcy5jcHAKICAgICBzcmMvbGliQU5HTEUv
QXR0cmlidXRlTWFwLmNwcApAQCAtMTU0LDYgKzIwMSw3IEBAIGFkZF9saWJyYXJ5KGxpYkFOR0xF
IFNUQVRJQwogICAgIHNyYy9saWJBTkdMRS9Db21waWxlci5jcHAKICAgICBzcmMvbGliQU5HTEUv
Q29uZmlnLmNwcAogICAgIHNyYy9saWJBTkdMRS9Db250ZXh0LmNwcAorICAgIHNyYy9saWJBTkdM
RS9Db250ZXh0U3RhdGUuY3BwCiAgICAgc3JjL2xpYkFOR0xFL0RhdGEuY3BwCiAgICAgc3JjL2xp
YkFOR0xFL0RlYnVnLmNwcAogICAgIHNyYy9saWJBTkdMRS9EZXZpY2UuY3BwCkBAIC0xNjUsNDcg
KzIxMyw0NCBAQCBhZGRfbGlicmFyeShsaWJBTkdMRSBTVEFUSUMKICAgICBzcmMvbGliQU5HTEUv
RnJhbWVidWZmZXIuY3BwCiAgICAgc3JjL2xpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5j
cHAKICAgICBzcmMvbGliQU5HTEUvSGFuZGxlQWxsb2NhdG9yLmNwcAotICAgIHNyYy9saWJBTkdM
RS9JbmRleFJhbmdlQ2FjaGUuY3BwCiAgICAgc3JjL2xpYkFOR0xFL0ltYWdlLmNwcAogICAgIHNy
Yy9saWJBTkdMRS9JbWFnZUluZGV4LmNwcAorICAgIHNyYy9saWJBTkdMRS9JbmRleFJhbmdlQ2Fj
aGUuY3BwCiAgICAgc3JjL2xpYkFOR0xFL1BsYXRmb3JtLmNwcAogICAgIHNyYy9saWJBTkdMRS9Q
cm9ncmFtLmNwcAogICAgIHNyYy9saWJBTkdMRS9RdWVyeS5jcHAKICAgICBzcmMvbGliQU5HTEUv
cXVlcnljb252ZXJzaW9ucy5jcHAKICAgICBzcmMvbGliQU5HTEUvUmVuZGVyYnVmZmVyLmNwcAot
ICAgIHNyYy9saWJBTkdMRS9TdHJlYW0uY3BwCiAgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9CdWZmZXJEM0QuY3BwCiAgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9Db21waWxlckQz
RC5jcHAKLSAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0VHTEltYWdlRDNELmNwcAogICAg
IHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvY29weWltYWdlLmNwcAotICAgIHNyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvbG9hZGltYWdlX2V0Yy5jcHAKICAgICBzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL0JsaXQxMS5jcHAKICAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL0J1ZmZlcjExLmNwcAogICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQ2xl
YXIxMS5jcHAKICAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0RlYnVnQW5ub3Rh
dG9yMTEuY3BwCisgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX3N1cHBv
cnRfdGFibGUuY3BwCiAgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9GZW5jZTEx
LmNwcAogICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZm9ybWF0dXRpbHMxMS5j
cHAKICAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ZyYW1lYnVmZmVyMTEuY3Bw
CiAgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9JbWFnZTExLmNwcAogICAgIHNy
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvSW5kZXhCdWZmZXIxMS5jcHAKICAgICBzcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0lucHV0TGF5b3V0Q2FjaGUuY3BwCisgICAgc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9sb2FkX2Z1bmN0aW9uc190YWJsZV9hdXRvZ2Vu
LmNwcAogICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUGl4ZWxUcmFuc2ZlcjEx
LmNwcAogICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUXVlcnkxMS5jcHAKLSAg
ICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlcmVyMTEuY3BwCiAgICAgc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxzLmNwcAorICAgIHNy
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyZXIxMS5jcHAKICAgICBzcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclN0YXRlQ2FjaGUuY3BwCiAgICAgc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJUYXJnZXQxMS5jcHAKKyAgICBzcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1NoYWRlckV4ZWN1dGFibGUxMS5jcHAKICAgICBzcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0YXRlTWFuYWdlcjExLmNwcAogICAgIHNyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RyZWFtMTEuY3BwCi0gICAgc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9TaGFkZXJFeGVjdXRhYmxlMTEuY3BwCiAgICAgc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Td2FwQ2hhaW4xMS5jcHAKKyAgICBzcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlX2F1dG9nZW4uY3BwCiAgICAg
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9UZXh0dXJlU3RvcmFnZTExLmNwcAogICAg
IHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVHJpbTExLmNwcAogICAgIHNyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVmVydGV4QXJyYXkxMS5jcHAKICAgICBzcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEJ1ZmZlcjExLmNwcAotICAgIHNyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9zdXBwb3J0X3RhYmxlLmNwcAotICAgIHNyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvbG9hZF9mdW5jdGlvbnNfdGFibGVfYXV0b2dlbi5jcHAK
LSAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxl
X2F1dG9nZW4uY3BwCiAgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW4zMi9O
YXRpdmVXaW5kb3cuY3BwCiAgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0JsaXQ5
LmNwcAogICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9CdWZmZXI5LmNwcApAQCAt
MjE2LDggKzI2MSw4IEBAIGFkZF9saWJyYXJ5KGxpYkFOR0xFIFNUQVRJQwogICAgIHNyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkOS9JbWFnZTkuY3BwCiAgICAgc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2Q5L0luZGV4QnVmZmVyOS5jcHAKICAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDkvUXVlcnk5LmNwcAotICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9S
ZW5kZXJlcjkuY3BwCiAgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3JlbmRlcmVy
OV91dGlscy5jcHAKKyAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvUmVuZGVyZXI5
LmNwcAogICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9SZW5kZXJUYXJnZXQ5LmNw
cAogICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9TaGFkZXJFeGVjdXRhYmxlOS5j
cHAKICAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvU3RhdGVNYW5hZ2VyOS5jcHAK
QEAgLTIyOCwxMiArMjczLDE0IEBAIGFkZF9saWJyYXJ5KGxpYkFOR0xFIFNUQVRJQwogICAgIHNy
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRGV2aWNlRDNELmNwcAogICAgIHNyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvRGlzcGxheUQzRC5jcHAKICAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L0R5bmFtaWNITFNMLmNwcAorICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRUdMSW1hZ2VE
M0QuY3BwCiAgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9mb3JtYXR1dGlsc0QzRC5jcHAK
ICAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0ZyYW1lYnVmZmVyRDNELmNwcAogICAgIHNy
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvSExTTENvbXBpbGVyLmNwcAogICAgIHNyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvSW1hZ2VEM0QuY3BwCiAgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9JbmRleEJ1ZmZlci5jcHAKICAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0luZGV4RGF0
YU1hbmFnZXIuY3BwCisgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9sb2FkaW1hZ2VfZXRj
LmNwcAogICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvbG9hZGltYWdlLmNwcAogICAgIHNy
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvbG9hZGltYWdlU1NFMi5jcHAKICAgICBzcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL1Byb2dyYW1EM0QuY3BwCkBAIC0yNTAsMTIgKzI5NywxNSBAQCBhZGRf
bGlicmFyeShsaWJBTkdMRSBTVEFUSUMKICAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1Zl
cnRleERhdGFNYW5hZ2VyLmNwcAogICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9EZXZpY2VJbXBs
LmNwcAogICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9EaXNwbGF5SW1wbC5jcHAKKyAgICBzcmMv
bGliQU5HTEUvcmVuZGVyZXIvcmVuZGVyZXJfdXRpbHMuY3BwCiAgICAgc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL1JlbmRlcmVyLmNwcAogICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9TdXJmYWNlSW1w
bC5jcHAKKyAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvVGV4dHVyZUltcGwuY3BwCiAgICAgc3Jj
L2xpYkFOR0xFL1Jlc291cmNlTWFuYWdlci5jcHAKICAgICBzcmMvbGliQU5HTEUvU2FtcGxlci5j
cHAKICAgICBzcmMvbGliQU5HTEUvU2hhZGVyLmNwcAogICAgIHNyYy9saWJBTkdMRS9TdGF0ZS5j
cHAKKyAgICBzcmMvbGliQU5HTEUvU3RyZWFtLmNwcAogICAgIHNyYy9saWJBTkdMRS9TdXJmYWNl
LmNwcAogICAgIHNyYy9saWJBTkdMRS9UZXh0dXJlLmNwcAogICAgIHNyYy9saWJBTkdMRS9UcmFu
c2Zvcm1GZWVkYmFjay5jcHAKQEAgLTI4Miw2ICszMzIsNyBAQCBzZXRfcHJvcGVydHkoVEFSR0VU
IGxpYkFOR0xFIFBST1BFUlRZIENPCiAgICAgQU5HTEVfV0VCS0lUX1dJTgogICAgIExJQkFOR0xF
X0lNUExFTUVOVEFUSU9OCiAgICAgTk9NSU5NQVgKKyAgICBfX1NURENfQ09OU1RBTlRfTUFDUk9T
CiAgICAgX19TVERDX0xJTUlUX01BQ1JPUwogKQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9DT05UUklCVVRPUlMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
Q09OVFJJQlVUT1JTCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9DT05UUklCVVRPUlMJKHdvcmtpbmcgY29weSkKQEAgLTY0LDEyICs2NCwxNyBAQCBJbnRlbCBD
b3Jwb3JhdGlvbgogIEFuZHkgQ2hlbgogIEpvc2ggVHJpcGxldHQKICBTdWRhcnNhbmEgTmFnaW5l
bmkKKyBKaWFqaWEgUWluCisgSmlhd2VpIFNoYW8KKyBKaWUgQ2hlbgorIFFpYW5rdW4gTWlhbwog
CiBLbGFyw6RsdmRhbGVucyBEYXRha29uc3VsdCBBQgogIE1pbGlhbiBXb2xmZgogCiBNb3ppbGxh
IENvcnAuCiAgRWhzYW4gQWtoZ2FyaQorIEVkd2luIEZsb3JlcwogIEplZmYgR2lsYmVydAogIE1p
a2UgSG9tbWV5CiAgQmVub2l0IEphY29iCkBAIC04Niw2ICs5MSw3IEBAIEphY2VrIENhYmFuCiBU
aWJvciBkZW4gT3VkZW4KIFLDqWdpcyBGw6luw6lvbgogU2ViYXN0aWFuIEJlcmdzdGVpbgorSmFt
ZXMgUm9zcy1Hb3dhbgogCiBNaWNyb3NvZnQgQ29ycG9yYXRpb24KICBDb29wZXIgUGFydGluCkBA
IC0xMDIsMTAgKzEwOCwxMyBAQCBOVklESUEgQ29ycG9yYXRpb24KICBBcnVuIFBhdG9sZQogIFFp
bmdxaW5nIERlbmcKICBLaW1tbyBLaW5udW5lbgorIFNhbWkgVsOkaXPDpG5lbgorIE1hcnRpbiBS
YWRldgogCiBPcGVyYSBTb2Z0d2FyZSBBU0EKICBEYW5pZWwgQnJhdGVsbAogIFRvbWFzeiBNb25p
dXN6a28KKyBEYXZpZCBMYW5kZWxsCiAKIEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4KICBS
dXNzIExpbmQKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0RFUFMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvREVQUwkocmV2aXNpb24gMjA3ODA0KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvREVQUwkod29ya2luZyBjb3B5KQpAQCAtMTYsMTAgKzE2LDEw
IEBAIGRlcHMgPSB7CiAKICAgIyBDaGVycnkgaXMgYSBkRVFQIG1hbmFnZW1lbnQgR1VJIHdyaXR0
ZW4gaW4gR28uIFdlIHVzZSBpdCBmb3Igdmlld2luZyB0ZXN0IHJlc3VsdHMuCiAgICJ0aGlyZF9w
YXJ0eS9jaGVycnkiOgotICAgICAgImh0dHBzOi8vYW5kcm9pZC5nb29nbGVzb3VyY2UuY29tL3Bs
YXRmb3JtL2V4dGVybmFsL2NoZXJyeUBhZjZjMDlmZTA1MTE1ZjBjY2E2MWFlMjNlZTg3MWJkYTI3
Y2YxZmY1IiwKKyAgICAgICJodHRwczovL2FuZHJvaWQuZ29vZ2xlc291cmNlLmNvbS9wbGF0Zm9y
bS9leHRlcm5hbC9jaGVycnlAZDJlMjZiNGQ4NjRlYzJhNjc1N2U3ZjExNzRlNDY0OTQ5Y2E1YmY3
MyIsCiAKICAgInRoaXJkX3BhcnR5L2RlcXAvc3JjIjoKLSAgICAgICJodHRwczovL2FuZHJvaWQu
Z29vZ2xlc291cmNlLmNvbS9wbGF0Zm9ybS9leHRlcm5hbC9kZXFwQGNjMGRlZDZjNzcyNjdiYmIx
NGQyMWFhYzM1OGZjNWQ5NjkwYzA3ZjgiLAorICAgICAgImh0dHBzOi8vYW5kcm9pZC5nb29nbGVz
b3VyY2UuY29tL3BsYXRmb3JtL2V4dGVybmFsL2RlcXBAZjRmM2Q4MDc5ZTdhMzdkNzY3NWFiOTM1
ODNlNjQzOGQwYmNhMGU1OCIsCiAKICAgInRoaXJkX3BhcnR5L2xpYnBuZyI6CiAgICAgICAiaHR0
cHM6Ly9hbmRyb2lkLmdvb2dsZXNvdXJjZS5jb20vcGxhdGZvcm0vZXh0ZXJuYWwvbGlicG5nQDA5
NGUxODFlNzlhM2Q2YzIzZmQwMDU2NzkwMjUwNThiN2RmMWFkNmMiLApAQCAtMjgsNyArMjgsNyBA
QCBkZXBzID0gewogICAgICAgVmFyKCdjaHJvbWl1bV9naXQnKSArICIvY2hyb21pdW0vc3JjL3Ro
aXJkX3BhcnR5L3psaWJAYWZkOGM0NTkzYzAxMGMwNDU5MDJmNmMwNTAxNzE4ZjE4MjMwNjRhMyIs
CiAKICAgImJ1aWxkdG9vbHMiOgotICAgICAgVmFyKCdjaHJvbWl1bV9naXQnKSArICcvY2hyb21p
dW0vYnVpbGR0b29scy5naXRAMTI1ZDE1NzYwN2RlNGQ3Yzk1YmY4YjAyZGQ1ODBhYWUxNzk2MmYx
OScsCisgICAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9jaHJvbWl1bS9idWlsZHRvb2xzLmdp
dEAwNmU4MGEwZTE3MzE5ODY4ZDRhOWIxM2Y5YmI2YTI0OGRjOGQ4YjIwJywKIH0KIAogaG9va3Mg
PSBbCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9SRUFETUUubWQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvUkVBRE1FLm1kCShyZXZpc2lvbiAyMDc4MDQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9SRUFETUUubWQJKHdvcmtpbmcgY29weSkKQEAgLTEs
NDQgKzEsNzUgQEAKLSNBTkdMRQotVGhlIGdvYWwgb2YgQU5HTEUgaXMgdG8gYWxsb3cgdXNlcnMg
b2YgbXVsdGlwbGUgb3BlcmF0aW5nIHN5c3RlbXMgdG8gc2VhbWxlc3NseSBydW4gV2ViR0wgYW5k
IG90aGVyIE9wZW5HTCBFUyBjb250ZW50IGJ5IHRyYW5zbGF0aW5nIE9wZW5HTCBFUyBBUEkgY2Fs
bHMgdG8gb25lIG9mIHRoZSBoYXJkd2FyZS1zdXBwb3J0ZWQgQVBJcyBhdmFpbGFibGUgZm9yIHRo
YXQgcGxhdGZvcm0uIEFOR0xFIGN1cnJlbnRseSBwcm92aWRlcyB0cmFuc2xhdGlvbiBmcm9tIE9w
ZW5HTCBFUyAyLjAgdG8gZGVza3RvcCBPcGVuR0wsIERpcmVjdDNEIDksIGFuZCBEaXJlY3QzRCAx
MS4gU3VwcG9ydCBmb3IgdHJhbnNsYXRpb24gZnJvbSBPcGVuR0wgRVMgMy4wIHRvIGFsbCBvZiB0
aGVzZSBBUElzIGlzIG5lYXJpbmcgY29tcGxldGlvbiwgYW5kIGZ1dHVyZSBwbGFucyBpbmNsdWRl
IGVuYWJsaW5nIHZhbGlkYXRlZCBFUy10by1FUyBzdXBwb3J0LgorIyBBTkdMRSAtIEFsbW9zdCBO
YXRpdmUgR3JhcGhpY3MgTGF5ZXIgRW5naW5lCiAKLXwgICAgICAgICAgICAgICAgfCAgRGlyZWN0
M0QgOSAgIHwgICAgRGlyZWN0M0QgMTEgICAgICB8ICAgIERlc2t0b3AgR0wgICAgICB8ICAgIEdM
IEVTICB8Ci18LS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS0t
LS0tLS06fDotLS0tLS0tLS0tLS0tLS0tLS06fDotLS0tLS0tLS06fAotfCBPcGVuR0wgRVMgMi4w
ICB8ICAgIGNvbXBsZXRlICAgfCAgICAgIGNvbXBsZXRlICAgICAgIHwgICAgIGNvbXBsZXRlICAg
ICAgIHwgICBwbGFubmVkIHwKLXwgT3BlbkdMIEVTIDMuMCAgfCAgICAgICAgICAgICAgIHwgIG5l
YXJpbmcgY29tcGxldGlvbiB8IG5lYXJpbmcgY29tcGxldGlvbiB8ICAgcGxhbm5lZCB8Ci1bTGV2
ZWwgb2YgT3BlbkdMIEVTIHN1cHBvcnQgdmlhIGJhY2tpbmcgcmVuZGVyZXJzXQorVGhlIGdvYWwg
b2YgQU5HTEUgaXMgdG8gYWxsb3cgdXNlcnMgb2YgbXVsdGlwbGUgb3BlcmF0aW5nIHN5c3RlbXMg
dG8gc2VhbWxlc3NseSBydW4gV2ViR0wgYW5kIG90aGVyCitPcGVuR0wgRVMgY29udGVudCBieSB0
cmFuc2xhdGluZyBPcGVuR0wgRVMgQVBJIGNhbGxzIHRvIG9uZSBvZiB0aGUgaGFyZHdhcmUtc3Vw
cG9ydGVkIEFQSXMgYXZhaWxhYmxlCitmb3IgdGhhdCBwbGF0Zm9ybS4gQU5HTEUgY3VycmVudGx5
IHByb3ZpZGVzIHRyYW5zbGF0aW9uIGZyb20gT3BlbkdMIEVTIDIuMCBhbmQgMy4wIHRvIGRlc2t0
b3AKK09wZW5HTCwgT3BlbkdMIEVTLCBEaXJlY3QzRCA5LCBhbmQgRGlyZWN0M0QgMTEuIFN1cHBv
cnQgZm9yIHRyYW5zbGF0aW9uIGZyb20gT3BlbkdMIEVTIHRvIFZ1bGthbiBpcwordW5kZXJ3YXks
IGFuZCBmdXR1cmUgcGxhbnMgaW5jbHVkZSBjb21wdXRlIHNoYWRlciBzdXBwb3J0IChFUyAzLjEp
IGFuZCBNYWNPUyBzdXBwb3J0LgogCisjIyMgTGV2ZWwgb2YgT3BlbkdMIEVTIHN1cHBvcnQgdmlh
IGJhY2tpbmcgcmVuZGVyZXJzCiAKLXwgICAgICAgICAgICAgfCAgICBEaXJlY3QzRCA5ICB8ICAg
RGlyZWN0M0QgMTEgIHwgICBEZXNrdG9wIEdMICB8Ci18LS0tLS0tLS0tLS0tOnw6LS0tLS0tLS0t
LS0tLS06fDotLS0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS06fAotfCBXaW5kb3dzICAgICB8
ICAgICAgICAqICAgICAgIHwgICAgICAgICogICAgICAgfCAgICAgICAqICAgICAgIHwKLXwgTGlu
dXggICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgICAgICAgKiAgICAg
ICB8Ci18IE1hYyBPUyBYICAgIHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8ICAg
aW4gcHJvZ3Jlc3MgfAotW1BsYXRmb3JtIHN1cHBvcnQgdmlhIGJhY2tpbmcgcmVuZGVyZXJzXQor
fCAgICAgICAgICAgICAgICB8ICBEaXJlY3QzRCA5ICAgfCAgRGlyZWN0M0QgMTEgICAgIHwgICBE
ZXNrdG9wIEdMICAgfCAgICBHTCBFUyAgICAgIHwgICAgVnVsa2FuICAgICB8Cit8LS0tLS0tLS0t
LS0tLS0tLXw6LS0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS0tLS06fDotLS0tLS0tLS0tLS0t
LTp8Oi0tLS0tLS0tLS0tLS06fDotLS0tLS0tLS0tLS0tOnwKK3wgT3BlbkdMIEVTIDIuMCAgfCAg
ICBjb21wbGV0ZSAgIHwgICAgY29tcGxldGUgICAgICB8ICAgIGNvbXBsZXRlICAgIHwgICBjb21w
bGV0ZSAgICB8ICBpbiBwcm9ncmVzcyAgfAorfCBPcGVuR0wgRVMgMy4wICB8ICAgICAgICAgICAg
ICAgfCAgICBjb21wbGV0ZSAgICAgIHwgICAgY29tcGxldGUgICAgfCAgaW4gcHJvZ3Jlc3MgIHwg
IG5vdCBzdGFydGVkICB8Cit8IE9wZW5HTCBFUyAzLjEgIHwgICAgICAgICAgICAgICB8ICAgbm90
IHN0YXJ0ZWQgICAgfCAgIGluIHByb2dyZXNzICB8ICBpbiBwcm9ncmVzcyAgfCAgbm90IHN0YXJ0
ZWQgIHwKIAotQU5HTEUgdjEuMC43NzIgd2FzIGNlcnRpZmllZCBjb21wbGlhbnQgYnkgcGFzc2lu
ZyB0aGUgRVMgMi4wLjMgY29uZm9ybWFuY2UgdGVzdHMgaW4gT2N0b2JlciAyMDExLiBBTkdMRSBh
bHNvIHByb3ZpZGVzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBFR0wgMS40IHNwZWNpZmljYXRp
b24uCisjIyMgUGxhdGZvcm0gc3VwcG9ydCB2aWEgYmFja2luZyByZW5kZXJlcnMKIAotQU5HTEUg
aXMgdXNlZCBhcyB0aGUgZGVmYXVsdCBXZWJHTCBiYWNrZW5kIGZvciBib3RoIEdvb2dsZSBDaHJv
bWUgYW5kIE1vemlsbGEgRmlyZWZveCBvbiBXaW5kb3dzIHBsYXRmb3Jtcy4gQ2hyb21lIHVzZXMg
QU5HTEUgZm9yIGFsbCBncmFwaGljcyByZW5kZXJpbmcgb24gV2luZG93cywgaW5jbHVkaW5nIHRo
ZSBhY2NlbGVyYXRlZCBDYW52YXMyRCBpbXBsZW1lbnRhdGlvbiBhbmQgdGhlIE5hdGl2ZSBDbGll
bnQgc2FuZGJveCBlbnZpcm9ubWVudC4KK3wgICAgICAgICAgICAgfCAgICBEaXJlY3QzRCA5ICB8
ICAgRGlyZWN0M0QgMTEgIHwgICBEZXNrdG9wIEdMICB8ICAgIEdMIEVTICAgIHwgICBWdWxrYW4g
ICAgfAorfC0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS0tOnw6LS0tLS0tLS0tLS0tLS06fDot
LS0tLS0tLS0tLS0tOnw6LS0tLS0tLS0tLS06fDotLS0tLS0tLS0tLTp8Cit8IFdpbmRvd3MgICAg
IHwgICAgY29tcGxldGUgICAgfCAgICBjb21wbGV0ZSAgICB8ICAgY29tcGxldGUgICAgfCAgIGNv
bXBsZXRlICB8IGluIHByb2dyZXNzIHwKK3wgTGludXggICAgICAgfCAgICAgICAgICAgICAgICB8
ICAgICAgICAgICAgICAgIHwgICBjb21wbGV0ZSAgICB8ICAgICAgICAgICAgIHwgICBwbGFubmVk
ICAgfAorfCBNYWMgT1MgWCAgICB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCAg
IGluIHByb2dyZXNzIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICB8Cit8IENocm9tZSBPUyAg
IHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgIGNv
bXBsZXRlICB8ICAgcGxhbm5lZCAgIHwKK3wgQW5kcm9pZCAgICAgfCAgICAgICAgICAgICAgICB8
ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgY29tcGxldGUgIHwgICBwbGFubmVk
ICAgfAogCi1Qb3J0aW9ucyBvZiB0aGUgQU5HTEUgc2hhZGVyIGNvbXBpbGVyIGFyZSB1c2VkIGFz
IGEgc2hhZGVyIHZhbGlkYXRvciBhbmQgdHJhbnNsYXRvciBieSBXZWJHTCBpbXBsZW1lbnRhdGlv
bnMgYWNyb3NzIG11bHRpcGxlIHBsYXRmb3Jtcy4gSXQgaXMgdXNlZCBvbiBNYWMgT1MgWCwgTGlu
dXgsIGFuZCBpbiBtb2JpbGUgdmFyaWFudHMgb2YgdGhlIGJyb3dzZXJzLiBIYXZpbmcgb25lIHNo
YWRlciB2YWxpZGF0b3IgaGVscHMgdG8gZW5zdXJlIHRoYXQgYSBjb25zaXN0ZW50IHNldCBvZiBH
TFNMIEVTIHNoYWRlcnMgYXJlIGFjY2VwdGVkIGFjcm9zcyBicm93c2VycyBhbmQgcGxhdGZvcm1z
LiBUaGUgc2hhZGVyIHRyYW5zbGF0b3IgY2FuIGJlIHVzZWQgdG8gdHJhbnNsYXRlIHNoYWRlcnMg
dG8gb3RoZXIgc2hhZGluZyBsYW5ndWFnZXMsIGFuZCB0byBvcHRpb25hbGx5IGFwcGx5IHNoYWRl
ciBtb2RpZmljYXRpb25zIHRvIHdvcmsgYXJvdW5kIGJ1Z3Mgb3IgcXVpcmtzIGluIHRoZSBuYXRp
dmUgZ3JhcGhpY3MgZHJpdmVycy4gVGhlIHRyYW5zbGF0b3IgdGFyZ2V0cyBEZXNrdG9wIEdMU0ws
IERpcmVjdDNEIEhMU0wsIGFuZCBldmVuIEVTU0wgZm9yIG5hdGl2ZSBHTEVTMiBwbGF0Zm9ybXMu
CitBTkdMRSB2MS4wLjc3MiB3YXMgY2VydGlmaWVkIGNvbXBsaWFudCBieSBwYXNzaW5nIHRoZSBF
UyAyLjAuMyBjb25mb3JtYW5jZSB0ZXN0cyBpbiBPY3RvYmVyIDIwMTEuCitBTkdMRSBhbHNvIHBy
b3ZpZGVzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBFR0wgMS40IHNwZWNpZmljYXRpb24uCiAK
LSMjQnJvd3NpbmcKLUJyb3dzZSBBTkdMRSdzIHNvdXJjZSBpbiB0aGUgW3JlcG9zaXRvcnldKGh0
dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9hbmdsZS9hbmdsZSkKK0FOR0xFIGlzIHVz
ZWQgYXMgdGhlIGRlZmF1bHQgV2ViR0wgYmFja2VuZCBmb3IgYm90aCBHb29nbGUgQ2hyb21lIGFu
ZCBNb3ppbGxhIEZpcmVmb3ggb24gV2luZG93cworcGxhdGZvcm1zLiBDaHJvbWUgdXNlcyBBTkdM
RSBmb3IgYWxsIGdyYXBoaWNzIHJlbmRlcmluZyBvbiBXaW5kb3dzLCBpbmNsdWRpbmcgdGhlIGFj
Y2VsZXJhdGVkCitDYW52YXMyRCBpbXBsZW1lbnRhdGlvbiBhbmQgdGhlIE5hdGl2ZSBDbGllbnQg
c2FuZGJveCBlbnZpcm9ubWVudC4KKworUG9ydGlvbnMgb2YgdGhlIEFOR0xFIHNoYWRlciBjb21w
aWxlciBhcmUgdXNlZCBhcyBhIHNoYWRlciB2YWxpZGF0b3IgYW5kIHRyYW5zbGF0b3IgYnkgV2Vi
R0wKK2ltcGxlbWVudGF0aW9ucyBhY3Jvc3MgbXVsdGlwbGUgcGxhdGZvcm1zLiBJdCBpcyB1c2Vk
IG9uIE1hYyBPUyBYLCBMaW51eCwgYW5kIGluIG1vYmlsZSB2YXJpYW50cyBvZgordGhlIGJyb3dz
ZXJzLiBIYXZpbmcgb25lIHNoYWRlciB2YWxpZGF0b3IgaGVscHMgdG8gZW5zdXJlIHRoYXQgYSBj
b25zaXN0ZW50IHNldCBvZiBHTFNMIEVTIHNoYWRlcnMKK2FyZSBhY2NlcHRlZCBhY3Jvc3MgYnJv
d3NlcnMgYW5kIHBsYXRmb3Jtcy4gVGhlIHNoYWRlciB0cmFuc2xhdG9yIGNhbiBiZSB1c2VkIHRv
IHRyYW5zbGF0ZSBzaGFkZXJzCit0byBvdGhlciBzaGFkaW5nIGxhbmd1YWdlcywgYW5kIHRvIG9w
dGlvbmFsbHkgYXBwbHkgc2hhZGVyIG1vZGlmaWNhdGlvbnMgdG8gd29yayBhcm91bmQgYnVncyBv
cgorcXVpcmtzIGluIHRoZSBuYXRpdmUgZ3JhcGhpY3MgZHJpdmVycy4gVGhlIHRyYW5zbGF0b3Ig
dGFyZ2V0cyBEZXNrdG9wIEdMU0wsIERpcmVjdDNEIEhMU0wsIGFuZCBldmVuCitFU1NMIGZvciBu
YXRpdmUgR0xFUzIgcGxhdGZvcm1zLgorCisjIyBTb3VyY2VzCisKK0FOR0xFIHJlcG9zaXRvcnkg
aXMgaG9zdGVkIGJ5IENocm9taXVtIHByb2plY3QgYW5kIGNhbiBiZQorW2Jyb3dzZWQgb25saW5l
XShodHRwczovL2Nocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vYW5nbGUvYW5nbGUpIG9yIGNsb25l
ZCB3aXRoCisKKyAgICBnaXQgY2xvbmUgaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29t
L2FuZ2xlL2FuZ2xlCisKKworIyMgQnVpbGRpbmcKIAotIyNCdWlsZGluZwogVmlldyB0aGUgW0Rl
diBzZXR1cCBpbnN0cnVjdGlvbnNdKGRvYy9EZXZTZXR1cC5tZCkuIEZvciBnZW5lcmF0aW5nIGEg
V2luZG93cyBTdG9yZSB2ZXJzaW9uIG9mIEFOR0xFIHZpZXcgdGhlIFtXaW5kb3dzIFN0b3JlIGlu
c3RydWN0aW9uc10oZG9jL0J1aWxkaW5nQW5nbGVGb3JXaW5kb3dzU3RvcmUubWQpCiAKLSMjQ29u
dHJpYnV0aW5nCisjIyBDb250cmlidXRpbmcKKwogKiBKb2luIG91ciBbR29vZ2xlIGdyb3VwXSho
dHRwczovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL2FuZ2xlcHJvamVjdCkgdG8ga2VlcCB1cCB0
byBkYXRlLgogKiBKb2luIHVzIG9uIElSQyBpbiB0aGUgI0FOR0xFcHJvamVjdCBjaGFubmVsIG9u
IEZyZWVOb2RlLgotKiBSZWFkIGFib3V0IEFOR0xFIGRldmVsb3BtZW50IGluIG91ciBbZG9jdW1l
bnRhdGlvbl0oZG9jKS4KKyogRmlsZSBidWdzIGluIHRoZSBbaXNzdWUgdHJhY2tlcl0oaHR0cDov
L2NvZGUuZ29vZ2xlLmNvbS9wL2FuZ2xlcHJvamVjdC9pc3N1ZXMvbGlzdCkgKHByZWZlcmFibHkg
d2l0aCBhbiBpc29sYXRlZCB0ZXN0LWNhc2UpLgorKiBbQ2hvb3NlIGFuIEFOR0xFIGJyYW5jaF0o
ZG9jL0Nob29zaW5nQU5HTEVCcmFuY2gubWQpIHRvIHRyYWNrIGluIHlvdXIgb3duIHByb2plY3Qu
CisKKworKiBSZWFkIEFOR0xFIGRldmVsb3BtZW50IFtkb2N1bWVudGF0aW9uXShkb2MpLgorKiBM
b29rIGF0IFtwZW5kaW5nXShodHRwczovL2Nocm9taXVtLXJldmlldy5nb29nbGVzb3VyY2UuY29t
LyMvcS9wcm9qZWN0OmFuZ2xlL2FuZ2xlK3N0YXR1czpvcGVuKQorICBhbmQgW21lcmdlZF0oaHR0
cHM6Ly9jaHJvbWl1bS1yZXZpZXcuZ29vZ2xlc291cmNlLmNvbS8jL3EvcHJvamVjdDphbmdsZS9h
bmdsZStzdGF0dXM6bWVyZ2VkKSBjaGFuZ2VzLgogKiBCZWNvbWUgYSBbY29kZSBjb250cmlidXRv
cl0oZG9jL0NvbnRyaWJ1dGluZ0NvZGUubWQpLgotKiBSZWZlciB0byBBTkdMRSdzIFtjb2Rpbmcg
c3RhbmRhcmRdKGRvYy9Db2RpbmdTdGFuZGFyZC5tZCkuCisqIFVzZSBBTkdMRSdzIFtjb2Rpbmcg
c3RhbmRhcmRdKGRvYy9Db2RpbmdTdGFuZGFyZC5tZCkuCiAqIExlYXJuIGhvdyB0byBbYnVpbGQg
QU5HTEUgZm9yIENocm9taXVtIGRldmVsb3BtZW50XShkb2MvQnVpbGRpbmdBbmdsZUZvckNocm9t
aXVtRGV2ZWxvcG1lbnQubWQpLgotKiBbQ2hvb3NlIGFuIEFOR0xFIGJyYW5jaF0oZG9jL0Nob29z
aW5nQU5HTEVCcmFuY2gubWQpIHRvIHRyYWNrIGluIHlvdXIgb3duIHByb2plY3QuCi0qIEZpbGUg
YnVncyBpbiB0aGUgW2lzc3VlIHRyYWNrZXJdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9hbmds
ZXByb2plY3QvaXNzdWVzL2xpc3QpIChwcmVmZXJhYmx5IHdpdGggYW4gaXNvbGF0ZWQgdGVzdC1j
YXNlKS4KKyogR2V0IGhlbHAgb24gW2RlYnVnZ2luZyBBTkdMRV0oZG9jL0RlYnVnZ2luZ1RpcHMu
bWQpLgorCisKICogUmVhZCBhYm91dCBXZWJHTCBvbiB0aGUgW0tocm9ub3MgV2ViR0wgV2lraV0o
aHR0cDovL2tocm9ub3Mub3JnL3dlYmdsL3dpa2kvTWFpbl9QYWdlKS4KICogTGVhcm4gYWJvdXQg
aW1wbGVtZW50YXRpb24gZGV0YWlscyBpbiB0aGUgW09wZW5HTCBJbnNpZ2h0cyBjaGFwdGVyIG9u
IEFOR0xFXShodHRwOi8vd3d3LnNlYXMudXBlbm4uZWR1L35wY296emkvT3BlbkdMSW5zaWdodHMv
T3BlbkdMSW5zaWdodHMtQU5HTEUucGRmKSBhbmQgdGhpcyBbQU5HTEUgcHJlc2VudGF0aW9uXSho
dHRwczovL2RyaXZlLmdvb2dsZS5jb20vZmlsZS9kLzBCdzI5b1llQzA5UWJiSG94TkU1RVVGaDBS
R3Mvdmlldz91c3A9c2hhcmluZykuCiAqIExlYXJuIGFib3V0IHRoZSBwYXN0LCBwcmVzZW50LCBh
bmQgZnV0dXJlIG9mIHRoZSBBTkdMRSBpbXBsZW1lbnRhdGlvbiBpbiBbdGhpcyByZWNlbnQgcHJl
c2VudGF0aW9uXShodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9wcmVzZW50YXRpb24vZC8xQ3VjSXNk
R1ZEbWRUV1JVYmc2OEl4TEU1alh3Q2IyeTFFOVlWaFFvMHRoZy9wdWI/c3RhcnQ9ZmFsc2UmbG9v
cD1mYWxzZSkuCi0qIE5vdGVzIG9uIFtkZWJ1Z2dpbmcgQU5HTEVdKGRvYy9EZWJ1Z2dpbmdUaXBz
Lm1kKS4KICogSWYgeW91IHVzZSBBTkdMRSBpbiB5b3VyIG93biBwcm9qZWN0LCB3ZSdkIGxvdmUg
dG8gaGVhciBhYm91dCBpdCEKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvYW5nbGUu
aXNvbGF0ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9hbmdsZS5pc29s
YXRlCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9hbmdsZS5p
c29sYXRlCShub25leGlzdGVudCkKQEAgLTEsMTkgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxNSBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCi0jIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0KLSMgVGhpcyBpc29sYXRlIGV4
cHJlc3NlcyB0aGUgQ2hyb21pdW0gcHJvamVjdCdzIGRlZmF1bHQgcnVudGltZQotIyBkZXBlbmRl
bmNpZXMuCi17Ci0gICdjb25kaXRpb25zJzogWwotICAgIFsnT1M9PSJ3aW4iJywgewotICAgICAg
J3ZhcmlhYmxlcyc6IHsKLSAgICAgICAgJ2ZpbGVzJzogWwotICAgICAgICAgICc8KFBST0RVQ1Rf
RElSKS9kM2Rjb21waWxlcl80Ny5kbGwnLAotICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9saWJF
R0wuZGxsJywKLSAgICAgICAgICAnPChQUk9EVUNUX0RJUikvbGliR0xFU3YyLmRsbCcsCi0gICAg
ICAgIF0sCi0gICAgICB9LAotICAgIH1dLAotICBdLAotfQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvY2hhbmdlcy5kaWZmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL2NoYW5nZXMuZGlmZgkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvY2hhbmdlcy5kaWZmCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsMTIxIEBACitkaWZm
IC0tZ2l0IGEvaW5jbHVkZS9FR0wvZWdsLmggYi9pbmNsdWRlL0VHTC9lZ2wuaAoraW5kZXggOWY5
ZTAyMS4uOGFkYTA1MSAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvRUdML2VnbC5oCisrKysgYi9pbmNs
dWRlL0VHTC9lZ2wuaAorQEAgLTM4LDYgKzM4LDEyIEBAIGV4dGVybiAiQyIgeworIAorICNpbmNs
dWRlIDxFR0wvZWdscGxhdGZvcm0uaD4KKyAKKysjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRl
ZmluZWQoQU5HTEVfV0VCS0lUX1dJTikKKysjZGVmaW5lIEVHTF9TT0ZUX0xJTktJTkcgMQorKyNl
bHNlCisrI2RlZmluZSBFR0xfU09GVF9MSU5LSU5HIDAKKysjZW5kaWYKKysKKyAvKiBHZW5lcmF0
ZWQgb24gZGF0ZSAyMDE1MDYyMyAqLworIAorIC8qIEdlbmVyYXRlZCBDIGhlYWRlciBmb3I6CitA
QCAtMTE4LDYgKzEyNCw3IEBAIHR5cGVkZWYgdm9pZCAoKl9fZWdsTXVzdENhc3RUb1Byb3BlckZ1
bmN0aW9uUG9pbnRlclR5cGUpKHZvaWQpOworICNkZWZpbmUgRUdMX1ZFUlNJT04gICAgICAgICAg
ICAgICAgICAgICAgIDB4MzA1NAorICNkZWZpbmUgRUdMX1dJRFRIICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4MzA1NworICNkZWZpbmUgRUdMX1dJTkRPV19CSVQgICAgICAgICAgICAgICAgICAg
IDB4MDAwNAorKyNpZiAhRUdMX1NPRlRfTElOS0lORworIEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQ
SUVOVFJZIGVnbENob29zZUNvbmZpZyAoRUdMRGlzcGxheSBkcHksIGNvbnN0IEVHTGludCAqYXR0
cmliX2xpc3QsIEVHTENvbmZpZyAqY29uZmlncywgRUdMaW50IGNvbmZpZ19zaXplLCBFR0xpbnQg
Km51bV9jb25maWcpOworIEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbENvcHlCdWZm
ZXJzIChFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xOYXRpdmVQaXhtYXBU
eXBlIHRhcmdldCk7CisgRUdMQVBJIEVHTENvbnRleHQgRUdMQVBJRU5UUlkgZWdsQ3JlYXRlQ29u
dGV4dCAoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25maWcsIEVHTENvbnRleHQgc2hhcmVf
Y29udGV4dCwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCk7CitAQCAtMTQyLDYgKzE0OSw3IEBA
IEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFN3YXBCdWZmZXJzIChFR0xEaXNwbGF5
IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlCisgRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkg
ZWdsVGVybWluYXRlIChFR0xEaXNwbGF5IGRweSk7CisgRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJ
RU5UUlkgZWdsV2FpdEdMICh2b2lkKTsKKyBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBl
Z2xXYWl0TmF0aXZlIChFR0xpbnQgZW5naW5lKTsKKysjZW5kaWYKKyAjZW5kaWYgLyogRUdMX1ZF
UlNJT05fMV8wICovCisgCisgI2lmbmRlZiBFR0xfVkVSU0lPTl8xXzEKK0BAIC0xNjAsMTAgKzE2
OCwxMiBAQCBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xXYWl0TmF0aXZlIChFR0xp
bnQgZW5naW5lKTsKKyAjZGVmaW5lIEVHTF9URVhUVVJFX1JHQiAgICAgICAgICAgICAgICAgICAw
eDMwNUQKKyAjZGVmaW5lIEVHTF9URVhUVVJFX1JHQkEgICAgICAgICAgICAgICAgICAweDMwNUUK
KyAjZGVmaW5lIEVHTF9URVhUVVJFX1RBUkdFVCAgICAgICAgICAgICAgICAweDMwODEKKysjaWYg
IUVHTF9TT0ZUX0xJTktJTkcKKyBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xCaW5k
VGV4SW1hZ2UgKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTGludCBidWZm
ZXIpOworIEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFJlbGVhc2VUZXhJbWFnZSAo
RUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IGJ1ZmZlcik7CisgRUdM
QVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsU3VyZmFjZUF0dHJpYiAoRUdMRGlzcGxheSBk
cHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IGF0dHJpYnV0ZSwgRUdMaW50IHZhbHVlKTsK
KyBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xTd2FwSW50ZXJ2YWwgKEVHTERpc3Bs
YXkgZHB5LCBFR0xpbnQgaW50ZXJ2YWwpOworKyNlbmRpZgorICNlbmRpZiAvKiBFR0xfVkVSU0lP
Tl8xXzEgKi8KKyAKKyAjaWZuZGVmIEVHTF9WRVJTSU9OXzFfMgorQEAgLTE5OSwxMSArMjA5LDEz
IEBAIHR5cGVkZWYgdm9pZCAqRUdMQ2xpZW50QnVmZmVyOworICNkZWZpbmUgRUdMX1NXQVBfQkVI
QVZJT1IgICAgICAgICAgICAgICAgIDB4MzA5MworICNkZWZpbmUgRUdMX1VOS05PV04gICAgICAg
ICAgICAgICAgICAgICAgICgoRUdMaW50KS0xKQorICNkZWZpbmUgRUdMX1ZFUlRJQ0FMX1JFU09M
VVRJT04gICAgICAgICAgIDB4MzA5MQorKyNpZiAhRUdMX1NPRlRfTElOS0lORworIEVHTEFQSSBF
R0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbEJpbmRBUEkgKEVHTGVudW0gYXBpKTsKKyBFR0xBUEkg
RUdMZW51bSBFR0xBUElFTlRSWSBlZ2xRdWVyeUFQSSAodm9pZCk7CisgRUdMQVBJIEVHTFN1cmZh
Y2UgRUdMQVBJRU5UUlkgZWdsQ3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIgKEVHTERpc3Bs
YXkgZHB5LCBFR0xlbnVtIGJ1ZnR5cGUsIEVHTENsaWVudEJ1ZmZlciBidWZmZXIsIEVHTENvbmZp
ZyBjb25maWcsIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpOworIEVHTEFQSSBFR0xCb29sZWFu
IEVHTEFQSUVOVFJZIGVnbFJlbGVhc2VUaHJlYWQgKHZvaWQpOworIEVHTEFQSSBFR0xCb29sZWFu
IEVHTEFQSUVOVFJZIGVnbFdhaXRDbGllbnQgKHZvaWQpOworKyNlbmRpZgorICNlbmRpZiAvKiBF
R0xfVkVSU0lPTl8xXzIgKi8KKyAKKyAjaWZuZGVmIEVHTF9WRVJTSU9OXzFfMworQEAgLTIzMiw3
ICsyNDQsOSBAQCBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xXYWl0Q2xpZW50ICh2
b2lkKTsKKyAjZGVmaW5lIEVHTF9PUEVOR0xfQVBJICAgICAgICAgICAgICAgICAgICAweDMwQTIK
KyAjZGVmaW5lIEVHTF9PUEVOR0xfQklUICAgICAgICAgICAgICAgICAgICAweDAwMDgKKyAjZGVm
aW5lIEVHTF9TV0FQX0JFSEFWSU9SX1BSRVNFUlZFRF9CSVQgICAweDA0MDAKKysjaWYgIUVHTF9T
T0ZUX0xJTktJTkcKKyBFR0xBUEkgRUdMQ29udGV4dCBFR0xBUElFTlRSWSBlZ2xHZXRDdXJyZW50
Q29udGV4dCAodm9pZCk7CisrI2VuZGlmCisgI2VuZGlmIC8qIEVHTF9WRVJTSU9OXzFfNCAqLwor
IAorICNpZm5kZWYgRUdMX1ZFUlNJT05fMV81CitAQCAtMjg0LDYgKzI5OCw3IEBAIHR5cGVkZWYg
dm9pZCAqRUdMSW1hZ2U7CisgI2RlZmluZSBFR0xfR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElW
RV9aIDB4MzBCOAorICNkZWZpbmUgRUdMX0lNQUdFX1BSRVNFUlZFRCAgICAgICAgICAgICAgIDB4
MzBEMgorICNkZWZpbmUgRUdMX05PX0lNQUdFICAgICAgICAgICAgICAgICAgICAgICgoRUdMSW1h
Z2UpMCkKKysjaWYgIUVHTF9TT0ZUX0xJTktJTkcKKyBFR0xBUEkgRUdMU3luYyBFR0xBUElFTlRS
WSBlZ2xDcmVhdGVTeW5jIChFR0xEaXNwbGF5IGRweSwgRUdMZW51bSB0eXBlLCBjb25zdCBFR0xB
dHRyaWIgKmF0dHJpYl9saXN0KTsKKyBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xE
ZXN0cm95U3luYyAoRUdMRGlzcGxheSBkcHksIEVHTFN5bmMgc3luYyk7CisgRUdMQVBJIEVHTGlu
dCBFR0xBUElFTlRSWSBlZ2xDbGllbnRXYWl0U3luYyAoRUdMRGlzcGxheSBkcHksIEVHTFN5bmMg
c3luYywgRUdMaW50IGZsYWdzLCBFR0xUaW1lIHRpbWVvdXQpOworQEAgLTI5NCw4ICszMDksMTMg
QEAgRUdMQVBJIEVHTERpc3BsYXkgRUdMQVBJRU5UUlkgZWdsR2V0UGxhdGZvcm1EaXNwbGF5IChF
R0xlbnVtIHBsYXRmb3JtLCB2b2lkICpuYXQKKyBFR0xBUEkgRUdMU3VyZmFjZSBFR0xBUElFTlRS
WSBlZ2xDcmVhdGVQbGF0Zm9ybVdpbmRvd1N1cmZhY2UgKEVHTERpc3BsYXkgZHB5LCBFR0xDb25m
aWcgY29uZmlnLCB2b2lkICpuYXRpdmVfd2luZG93LCBjb25zdCBFR0xBdHRyaWIgKmF0dHJpYl9s
aXN0KTsKKyBFR0xBUEkgRUdMU3VyZmFjZSBFR0xBUElFTlRSWSBlZ2xDcmVhdGVQbGF0Zm9ybVBp
eG1hcFN1cmZhY2UgKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgY29uZmlnLCB2b2lkICpuYXRp
dmVfcGl4bWFwLCBjb25zdCBFR0xBdHRyaWIgKmF0dHJpYl9saXN0KTsKKyBFR0xBUEkgRUdMQm9v
bGVhbiBFR0xBUElFTlRSWSBlZ2xXYWl0U3luYyAoRUdMRGlzcGxheSBkcHksIEVHTFN5bmMgc3lu
YywgRUdMaW50IGZsYWdzKTsKKysjZW5kaWYKKyAjZW5kaWYgLyogRUdMX1ZFUlNJT05fMV81ICov
CisgCisrI2lmIEVHTF9TT0ZUX0xJTktJTkcKKysjaW5jbHVkZSA8RUdML2VnbHNvZnRsaW5raW5n
Lmg+CisrI2VuZGlmCisrCisgI2lmZGVmIF9fY3BsdXNwbHVzCisgfQorICNlbmRpZgorZGlmZiAt
LWdpdCBhL2luY2x1ZGUvR0xFUzIvZ2wyLmggYi9pbmNsdWRlL0dMRVMyL2dsMi5oCitpbmRleCAw
MjdlMWY3Li40ZDcxMGMyIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9HTEVTMi9nbDIuaAorKysrIGIv
aW5jbHVkZS9HTEVTMi9nbDIuaAorQEAgLTUyMCw2ICs1MjAsMTEgQEAgdHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xWRVJURVhBVFRSSUI0RlBST0MpIChHTHVpbnQgaW5kZXgsIEdMZmxv
YXQgeCwgR0wKKyB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFZFUlRFWEFUVFJJQjRG
VlBST0MpIChHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKnYpOworIHR5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMVkVSVEVYQVRUUklCUE9JTlRFUlBST0MpIChHTHVpbnQgaW5kZXgs
IEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0xzaXplaSBz
dHJpZGUsIGNvbnN0IHZvaWQgKnBvaW50ZXIpOworIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMVklFV1BPUlRQUk9DKSAoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQpOworKworKyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChBTkdM
RV9XRUJLSVRfV0lOKQorKyNpbmNsdWRlIDxHTEVTMi9nbDJzb2Z0bGlua2luZy5oPgorKyNlbHNl
CisrCisgI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKKyBHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xBY3RpdmVUZXh0dXJlIChHTGVudW0gdGV4dHVyZSk7CisgR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsQXR0YWNoU2hhZGVyIChHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IHNoYWRl
cik7CitAQCAtNjY0LDYgKzY2OSw3IEBAIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFZl
cnRleEF0dHJpYjRmdiAoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KTsKKyBHTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyIChHTHVpbnQgaW5kZXgs
IEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0xzaXplaSBz
dHJpZGUsIGNvbnN0IHZvaWQgKnBvaW50ZXIpOworIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbFZpZXdwb3J0IChHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCk7CisgI2VuZGlmCisrI2VuZGlmCisgI2VuZGlmIC8qIEdMX0VTX1ZFUlNJT05fMl8wICov
CisgCisgI2lmZGVmIF9fY3BsdXNwbHVzCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9HTFNMQU5HL1No
YWRlckxhbmcuaCBiL2luY2x1ZGUvR0xTTEFORy9TaGFkZXJMYW5nLmgKLWluZGV4IDc4ZjhlZjYu
LmI3ZmRmNTUgMTAwNjQ0CitpbmRleCA5NjVmN2FiLi5mN2IwZWY3IDEwMDY0NAogLS0tIGEvaW5j
bHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaAogKysrIGIvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxh
bmcuaAogQEAgLTI1LDcgKzI1LDcgQEAKQEAgLTksMTcgKzEyNSw3MCBAQCBpbmRleCA3OGY4ZWY2
Li5iN2ZkZjU1IDEwMDY0NAogLSNpbmNsdWRlICJLSFIva2hycGxhdGZvcm0uaCIKICsjaW5jbHVk
ZSAia2hycGxhdGZvcm0uaCIKICAKKyAjaW5jbHVkZSA8YXJyYXk+CiAgI2luY2x1ZGUgPG1hcD4K
LSAjaW5jbHVkZSA8c3RyaW5nPgotQEAgLTM0Myw3ICszNDMsNyBAQCBDT01QSUxFUl9FWFBPUlQg
Y29uc3Qgc3RkOjpzdHJpbmcgJlNoR2V0QnVpbHRJblJlc291cmNlc1N0cmluZyhjb25zdCBTaEhh
bmRsZSBoYQotIC8vIHR5cGU6IFNwZWNpZmllcyB0aGUgdHlwZSBvZiBzaGFkZXIgLSBHTF9GUkFH
TUVOVF9TSEFERVIgb3IgR0xfVkVSVEVYX1NIQURFUi4KLSAvLyBzcGVjOiBTcGVjaWZpZXMgdGhl
IGxhbmd1YWdlIHNwZWMgdGhlIGNvbXBpbGVyIG11c3QgY29uZm9ybSB0byAtCi0gLy8gICAgICAg
U0hfR0xFUzJfU1BFQyBvciBTSF9XRUJHTF9TUEVDLgotLS8vIG91dHB1dDogU3BlY2lmaWVzIHRo
ZSBvdXRwdXQgY29kZSB0eXBlIC0gZm9yIGV4YW1wbGUgU0hfRVNTTF9PVVRQVVQsIFNIX0dMU0xf
T1VUUFVULAotKy8vIG91dHB1dDogU3BlY2lmaWVzIHRoZSBvdXRwdXQgY29kZSB0eXBlIC0gZm9y
IGV4YW1wbGUgU0hfRVNTTF9PVVRQVVQsIFNIX0dMU0xfQ09NUEFUSUJJTElUWV9PVVRQVVQsCi0g
Ly8gICAgICAgICBTSF9ITFNMXzNfMF9PVVRQVVQgb3IgU0hfSExTTF80XzFfT1VUUFVULiBOb3Rl
OiBFYWNoIG91dHB1dCB0eXBlIG1heSBvbmx5Ci0gLy8gICAgICAgICBiZSBzdXBwb3J0ZWQgaW4g
c29tZSBjb25maWd1cmF0aW9ucy4KLSAvLyByZXNvdXJjZXM6IFNwZWNpZmllcyB0aGUgYnVpbHQt
aW4gcmVzb3VyY2VzLgorZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vYW5nbGV1dGlscy5jcHAgYi9z
cmMvY29tbW9uL2FuZ2xldXRpbHMuY3BwCitpbmRleCA3MDk5YzIxLi40NjQxOTI4IDEwMDY0NAor
LS0tIGEvc3JjL2NvbW1vbi9hbmdsZXV0aWxzLmNwcAorKysrIGIvc3JjL2NvbW1vbi9hbmdsZXV0
aWxzLmNwcAorQEAgLTM2LDcgKzM2LDEwIEBAIHNpemVfdCBGb3JtYXRTdHJpbmdJbnRvVmVjdG9y
KGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCB2YXJhcmcsIHN0ZDo6dmVjdG9yPGNoYXI+CisgCisg
c3RkOjpzdHJpbmcgRm9ybWF0U3RyaW5nKGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCB2YXJhcmcp
CisgeworKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAorKyNwcmFnbWEgR0NDIGRpYWdub3N0
aWMgaWdub3JlZCAiLVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMiCisgICAgIHN0YXRpYyBzdGQ6OnZl
Y3RvcjxjaGFyPiBidWZmZXIoNTEyKTsKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAorIAor
ICAgICBzaXplX3QgbGVuID0gRm9ybWF0U3RyaW5nSW50b1ZlY3RvcihmbXQsIHZhcmFyZywgYnVm
ZmVyKTsKKyAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCZidWZmZXJbMF0sIGxlbik7CitkaWZmIC0t
Z2l0IGEvc3JjL2NvbW1vbi9hbmdsZXV0aWxzLmggYi9zcmMvY29tbW9uL2FuZ2xldXRpbHMuaAor
aW5kZXggZjVlZjdiZC4uNGNiNTU2YyAxMDA2NDQKKy0tLSBhL3NyYy9jb21tb24vYW5nbGV1dGls
cy5oCisrKysgYi9zcmMvY29tbW9uL2FuZ2xldXRpbHMuaAorQEAgLTExNiw3ICsxMTYsMTAgQEAg
aW5saW5lIGJvb2wgSXNNYXNrRmxhZ1NldChUIG1hc2ssIFQgZmxhZykKKyAKKyBpbmxpbmUgY29u
c3QgY2hhciogTWFrZVN0YXRpY1N0cmluZyhjb25zdCBzdGQ6OnN0cmluZyAmc3RyKQorIHsKKysj
cHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9y
ZWQgIi1XZXhpdC10aW1lLWRlc3RydWN0b3JzIgorICAgICBzdGF0aWMgc3RkOjpzZXQ8c3RkOjpz
dHJpbmc+IHN0cmluZ3M7CisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKKyAgICAgc3RkOjpz
ZXQ8c3RkOjpzdHJpbmc+OjppdGVyYXRvciBpdCA9IHN0cmluZ3MuZmluZChzdHIpOworICAgICBp
ZiAoaXQgIT0gc3RyaW5ncy5lbmQoKSkKKyAgICAgeworZGlmZiAtLWdpdCBhL3NyYy9jb21tb24v
ZGVidWcuY3BwIGIvc3JjL2NvbW1vbi9kZWJ1Zy5jcHAKK2luZGV4IDc0NmRhNWUuLjQ3ZTE1NjUg
MTAwNjQ0CistLS0gYS9zcmMvY29tbW9uL2RlYnVnLmNwcAorKysrIGIvc3JjL2NvbW1vbi9kZWJ1
Zy5jcHAKK0BAIC02OSw3ICs2OSwxMCBAQCB2b2lkIG91dHB1dChib29sIHRyYWNlSW5EZWJ1Z09u
bHksIE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBEZWJ1Z1RyYWNlT3V0cHV0VHlwZQorIHsKKyAg
ICAgaWYgKERlYnVnQW5ub3RhdGlvbnNBY3RpdmUoKSkKKyAgICAgeworKyNwcmFnbWEgR0NDIGRp
YWdub3N0aWMgcHVzaAorKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdleGl0LXRp
bWUtZGVzdHJ1Y3RvcnMiCisgICAgICAgICBzdGF0aWMgc3RkOjp2ZWN0b3I8Y2hhcj4gYnVmZmVy
KDUxMik7CisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKKyAgICAgICAgIHNpemVfdCBsZW4g
PSBGb3JtYXRTdHJpbmdJbnRvVmVjdG9yKGZvcm1hdCwgdmFyYXJnLCBidWZmZXIpOworICAgICAg
ICAgc3RkOjp3c3RyaW5nIGZvcm1hdHRlZFdpZGVNZXNzYWdlKGJ1ZmZlci5iZWdpbigpLCBidWZm
ZXIuYmVnaW4oKSArIGxlbik7CisgCitkaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9tYXRodXRpbC5j
cHAgYi9zcmMvY29tbW9uL21hdGh1dGlsLmNwcAoraW5kZXggYWNiY2JkZi4uYmE2ZGE1MiAxMDA2
NDQKKy0tLSBhL3NyYy9jb21tb24vbWF0aHV0aWwuY3BwCisrKysgYi9zcmMvY29tbW9uL21hdGh1
dGlsLmNwcAorQEAgLTMxLDkgKzMxLDEyIEBAIHN0YXRpYyBjb25zdCBpbnQgZ19zaGFyZWRleHBf
bWFudGlzc2FiaXRzID0gOTsKKyAvLyBFbWF4IGlzIHRoZSBtYXhpbXVtIGFsbG93ZWQgYmlhc2Vk
IGV4cG9uZW50IHZhbHVlICgzMSkKKyBzdGF0aWMgY29uc3QgaW50IGdfc2hhcmVkZXhwX21heGV4
cG9uZW50ID0gMzE7CisgCisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisrI3ByYWdtYSBH
Q0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2dsb2JhbC1jb25zdHJ1Y3RvcnMiCisgc3RhdGljIGNv
bnN0IGZsb2F0IGdfc2hhcmVkZXhwX21heCA9ICgocG93KDIuMGYsIGdfc2hhcmVkZXhwX21hbnRp
c3NhYml0cykgLSAxKSAvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cG93KDIuMGYsIGdfc2hhcmVkZXhwX21hbnRpc3NhYml0cykpICoKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcG93KDIuMGYsIGdfc2hhcmVkZXhwX21heGV4cG9uZW50IC0g
Z19zaGFyZWRleHBfYmlhcyk7CisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKKyAKKyB1bnNp
Z25lZCBpbnQgY29udmVydFJHQkZsb2F0c1RvOTk5RTUoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwg
ZmxvYXQgYmx1ZSkKKyB7CiBkaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi92ZXJzaW9uLmggYi9zcmMv
Y29tbW9uL3ZlcnNpb24uaAogaW5kZXggZTdmZmE3Yy4uYjY1M2FlMyAxMDA2NDQKIC0tLSBhL3Ny
Yy9jb21tb24vdmVyc2lvbi5oCkBAIC0zNCw3ICsyMDMsNyBAQCBpbmRleCBlN2ZmYTdjLi5iNjUz
YWUzIDEwMDY0NAogICNkZWZpbmUgQU5HTEVfTUFKT1JfVkVSU0lPTiAyCiAgI2RlZmluZSBBTkdM
RV9NSU5PUl9WRVJTSU9OIDEKIGRpZmYgLS1naXQgYS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29y
L0V4cHJlc3Npb25QYXJzZXIuY3BwIGIvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNz
aW9uUGFyc2VyLmNwcAotaW5kZXggMTkzYjE1MC4uYjM4YjdhZSAxMDA2NDQKK2luZGV4IGY3Mzdh
MmUuLmE4ZGYyMzUgMTAwNjQ0CiAtLS0gYS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJl
c3Npb25QYXJzZXIuY3BwCiArKysgYi9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Np
b25QYXJzZXIuY3BwCiBAQCAtMSw1ICsxLDcgQEAKQEAgLTQ2LDY0ICsyMTUsMTQxIEBAIGluZGV4
IDE5M2IxNTAuLmIzOGI3YWUgMTAwNjQ0CiAgCiAgICAgQ29weXJpZ2h0IChDKSAxOTg0LCAxOTg5
LTE5OTAsIDIwMDAtMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIGRpZmYgLS1n
aXQgYS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5jcHAgYi9zcmMvY29tcGls
ZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5jcHAKLWluZGV4IGViNjE1NmYuLjFjYWVlNDcgMTAw
NjQ0CitpbmRleCA0MGU5MTBlLi5mZWUyMGM2IDEwMDY0NAogLS0tIGEvc3JjL2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci9Ub2tlbml6ZXIuY3BwCiArKysgYi9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29y
L1Rva2VuaXplci5jcHAKLUBAIC03MTIsNyArNzEyLDcgQEAgc3RhdGljIHZvaWQgeXlfZmxleF9z
dHJuY3B5IChjaGFyICoseXljb25zdCBjaGFyICosaW50ICx5eXNjYW5fdCB5eXNjYW5uZXIpOwor
QEAgLTk2OSw3ICs5NjksNyBAQCBzdGF0aWMgdm9pZCB5eV9mbGV4X3N0cm5jcHkgKGNoYXIgKix5
eWNvbnN0IGNoYXIgKixpbnQgLHl5c2Nhbl90IHl5c2Nhbm5lcik7CiAgc3RhdGljIGludCB5eV9m
bGV4X3N0cmxlbiAoeXljb25zdCBjaGFyICogLHl5c2Nhbl90IHl5c2Nhbm5lcik7CiAgI2VuZGlm
CiAgCiAtI2lmbmRlZiBZWV9OT19JTlBVVAotKyNpZiAwIC8vI2lmbmRlZiBZWV9OT19JTlBVVAor
KyNpZiAwCiAgCiAgI2lmZGVmIF9fY3BsdXNwbHVzCiAgc3RhdGljIGludCB5eWlucHV0ICh5eXNj
YW5fdCB5eXNjYW5uZXIgKTsKLUBAIC0xNTI2LDcgKzE1MjYsNyBAQCBzdGF0aWMgaW50IHl5X2dl
dF9uZXh0X2J1ZmZlciAoeXlzY2FuX3QgeXlzY2FubmVyKQotICAgICAgICByZXR1cm4geXlfaXNf
amFtID8gMCA6IHl5X2N1cnJlbnRfc3RhdGU7Ci0gfQorQEAgLTE4NTgsNyArMTg1OCw3IEBAIHN0
YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCB5eXNjYW5uZXIpCisgCisgI2Vu
ZGlmCiAgCiAtI2lmbmRlZiBZWV9OT19JTlBVVAotKyNpZiAwIC8vI2lmbmRlZiBZWV9OT19JTlBV
VAorKyNpZiAwCiAgI2lmZGVmIF9fY3BsdXNwbHVzCiAgICAgIHN0YXRpYyBpbnQgeXlpbnB1dCAo
eXlzY2FuX3QgeXlzY2FubmVyKQogICNlbHNlCi1kaWZmIC0tZ2l0IGEvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvQ29kZUdlbi5jcHAgYi9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db2RlR2VuLmNw
cAotaW5kZXggZjA5OWJjYy4uZmU3YzRmMSAxMDA2NDQKLS0tLSBhL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL0NvZGVHZW4uY3BwCi0rKysgYi9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db2RlR2Vu
LmNwcAotQEAgLTQsNiArNCw4IEBACi0gLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLSAv
LworQEAgLTE4ODMsNyArMTg4Myw3IEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVmZmVyICh5
eXNjYW5fdCB5eXNjYW5uZXIpCiAgCi0rI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvQ29t
cGlsZXIuaCIKLSsKLSAjaWZkZWYgQU5HTEVfRU5BQkxFX0VTU0wKLSAjaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yRVNTTC5oIgotICNlbmRpZgotZGlmZiAtLWdpdCBhL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1NoYWRlckxhbmcuY3BwIGIvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvU2hhZGVyTGFuZy5jcHAKLWluZGV4IDQyMTU5N2IuLmE1OGU5MTcgMTAwNjQ0Ci0tLS0g
YS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TaGFkZXJMYW5nLmNwcAotKysrIGIvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvU2hhZGVyTGFuZy5jcHAKLUBAIC0zNzQsNCArMzc0LDQgQEAgY29uc3Qg
c3RkOjptYXA8c3RkOjpzdHJpbmcsIHVuc2lnbmVkIGludD4gKlNoR2V0VW5pZm9ybVJlZ2lzdGVy
TWFwKGNvbnN0IFNoSGFuZGwKLSAgICAgc3RhdGljIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCB1bnNp
Z25lZCBpbnQ+IG1hcDsKLSAgICAgcmV0dXJuICZtYXA7Ci0gI2VuZGlmICAvLyBBTkdMRV9FTkFC
TEVfSExTTAorIAkJZWxzZQorIAkJCXsgLyogbmVlZCBtb3JlIGlucHV0ICovCistCQkJaW50IG9m
ZnNldCA9IHl5Zy0+eXlfY19idWZfcCAtIHl5Zy0+eXl0ZXh0X3B0cjsKKysJCQlhdXRvIG9mZnNl
dCA9IHl5Zy0+eXlfY19idWZfcCAtIHl5Zy0+eXl0ZXh0X3B0cjsKKyAJCQkrK3l5Zy0+eXlfY19i
dWZfcDsKKyAKKyAJCQlzd2l0Y2ggKCB5eV9nZXRfbmV4dF9idWZmZXIoIHl5c2Nhbm5lciApICkK
K0BAIC0yMDE0LDcgKzIwMTQsNyBAQCBzdGF0aWMgdm9pZCBwcF9sb2FkX2J1ZmZlcl9zdGF0ZSAg
KHl5c2Nhbl90IHl5c2Nhbm5lcikKKyAJaWYgKCAhIGIgKQorIAkJWVlfRkFUQUxfRVJST1IoICJv
dXQgb2YgZHluYW1pYyBtZW1vcnkgaW4gcHBfY3JlYXRlX2J1ZmZlcigpIiApOworIAorLQliLT55
eV9idWZfc2l6ZSA9ICh5eV9zaXplX3Qpc2l6ZTsKKysJYi0+eXlfYnVmX3NpemUgPSBzaXplOwor
IAorIAkvKiB5eV9jaF9idWYgaGFzIHRvIGJlIDIgY2hhcmFjdGVycyBsb25nZXIgdGhhbiB0aGUg
c2l6ZSBnaXZlbiBiZWNhdXNlCisgCSAqIHdlIG5lZWQgdG8gcHV0IGluIDIgZW5kLW9mLWJ1ZmZl
ciBjaGFyYWN0ZXJzLgorZGlmZiAtLWdpdCBhL3NyYy9jb21waWxlci90cmFuc2xhdG9yL09wZXJh
dG9yLmNwcCBiL3NyYy9jb21waWxlci90cmFuc2xhdG9yL09wZXJhdG9yLmNwcAoraW5kZXggNTc4
NzhiOS4uMGI2OTNlMiAxMDA2NDQKKy0tLSBhL3NyYy9jb21waWxlci90cmFuc2xhdG9yL09wZXJh
dG9yLmNwcAorKysrIGIvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3BlcmF0b3IuY3BwCitAQCAt
MjI0LDQgKzIyNCw0IEBAIGJvb2wgSXNBc3NpZ25tZW50KFRPcGVyYXRvciBvcCkKKyAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9CiAtfQogXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCiArfQotZGlmZiAtLWdpdCBhL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1RyYW5zbGF0b3JITFNMLmNwcCBiL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5z
bGF0b3JITFNMLmNwcAotaW5kZXggMTExYTM4Yi4uMjk0MDI2MCAxMDA2NDQKLS0tLSBhL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JITFNMLmNwcAotKysrIGIvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvVHJhbnNsYXRvckhMU0wuY3BwCi1AQCAtNzUsNCArNzUsNCBAQCB1bnNpZ25l
ZCBpbnQgVHJhbnNsYXRvckhMU0w6OmdldEludGVyZmFjZUJsb2NrUmVnaXN0ZXIoY29uc3Qgc3Rk
OjpzdHJpbmcgJmludGVyZgotIGNvbnN0IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCB1bnNpZ25lZCBp
bnQ+ICpUcmFuc2xhdG9ySExTTDo6Z2V0VW5pZm9ybVJlZ2lzdGVyTWFwKCkgY29uc3QKLSB7Ci0g
ICAgIHJldHVybiAmbVVuaWZvcm1SZWdpc3Rlck1hcDsKLS19CitkaWZmIC0tZ2l0IGEvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0SExTTC5oIGIvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
T3V0cHV0SExTTC5oCitpbmRleCBkYjc4ODU5Li5mMjk2ZGQ5IDEwMDY0NAorLS0tIGEvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0SExTTC5oCisrKysgYi9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9PdXRwdXRITFNMLmgKK0BAIC01NiwyMSArNTYsMjEgQEAgY2xhc3MgT3V0cHV0SExTTCA6
IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCisgICAgIHZvaWQgaGVhZGVyKFRJbmZvU2lua0Jhc2Ug
Jm91dCwgY29uc3QgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IgKmJ1aWx0SW5GdW5jdGlvbkVtdWxh
dG9yKTsKKyAKKyAgICAgLy8gVmlzaXQgQVNUIG5vZGVzIGFuZCBvdXRwdXQgdGhlaXIgY29kZSB0
byB0aGUgYm9keSBzdHJlYW0KKy0gICAgdm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sKik7
CistICAgIHZvaWQgdmlzaXRSYXcoVEludGVybVJhdyopOworLSAgICB2b2lkIHZpc2l0Q29uc3Rh
bnRVbmlvbihUSW50ZXJtQ29uc3RhbnRVbmlvbiopOworKyAgICB2b2lkIHZpc2l0U3ltYm9sKFRJ
bnRlcm1TeW1ib2wqKSBvdmVycmlkZTsKKysgICAgdm9pZCB2aXNpdFJhdyhUSW50ZXJtUmF3Kikg
b3ZlcnJpZGU7CisrICAgIHZvaWQgdmlzaXRDb25zdGFudFVuaW9uKFRJbnRlcm1Db25zdGFudFVu
aW9uKikgb3ZlcnJpZGU7CisgICAgIGJvb2wgdmlzaXRTd2l6emxlKFZpc2l0IHZpc2l0LCBUSW50
ZXJtU3dpenpsZSAqbm9kZSkgb3ZlcnJpZGU7CistICAgIGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQg
dmlzaXQsIFRJbnRlcm1CaW5hcnkqKTsKKy0gICAgYm9vbCB2aXNpdFVuYXJ5KFZpc2l0IHZpc2l0
LCBUSW50ZXJtVW5hcnkqKTsKKy0gICAgYm9vbCB2aXNpdFRlcm5hcnkoVmlzaXQgdmlzaXQsIFRJ
bnRlcm1UZXJuYXJ5ICopOworLSAgICBib29sIHZpc2l0SWZFbHNlKFZpc2l0IHZpc2l0LCBUSW50
ZXJtSWZFbHNlICopOworLSAgICBib29sIHZpc2l0U3dpdGNoKFZpc2l0IHZpc2l0LCBUSW50ZXJt
U3dpdGNoICopOworLSAgICBib29sIHZpc2l0Q2FzZShWaXNpdCB2aXNpdCwgVEludGVybUNhc2Ug
Kik7CisrICAgIGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkqKSBv
dmVycmlkZTsKKysgICAgYm9vbCB2aXNpdFVuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtVW5hcnkq
KSBvdmVycmlkZTsKKysgICAgYm9vbCB2aXNpdFRlcm5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1U
ZXJuYXJ5ICopIG92ZXJyaWRlOworKyAgICBib29sIHZpc2l0SWZFbHNlKFZpc2l0IHZpc2l0LCBU
SW50ZXJtSWZFbHNlICopIG92ZXJyaWRlOworKyAgICBib29sIHZpc2l0U3dpdGNoKFZpc2l0IHZp
c2l0LCBUSW50ZXJtU3dpdGNoICopIG92ZXJyaWRlOworKyAgICBib29sIHZpc2l0Q2FzZShWaXNp
dCB2aXNpdCwgVEludGVybUNhc2UgKikgb3ZlcnJpZGU7CisgICAgIGJvb2wgdmlzaXRGdW5jdGlv
bkRlZmluaXRpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKm5vZGUp
IG92ZXJyaWRlOworLSAgICBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJt
QWdncmVnYXRlKik7CistICAgIGJvb2wgdmlzaXRCbG9jayhWaXNpdCB2aXNpdCwgVEludGVybUJs
b2NrICpub2RlKTsKKy0gICAgYm9vbCB2aXNpdExvb3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29w
Kik7CistICAgIGJvb2wgdmlzaXRCcmFuY2goVmlzaXQgdmlzaXQsIFRJbnRlcm1CcmFuY2gqKTsK
KysgICAgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSop
IG92ZXJyaWRlOworKyAgICBib29sIHZpc2l0QmxvY2soVmlzaXQgdmlzaXQsIFRJbnRlcm1CbG9j
ayAqbm9kZSkgb3ZlcnJpZGU7CisrICAgIGJvb2wgdmlzaXRMb29wKFZpc2l0IHZpc2l0LCBUSW50
ZXJtTG9vcCopIG92ZXJyaWRlOworKyAgICBib29sIHZpc2l0QnJhbmNoKFZpc2l0IHZpc2l0LCBU
SW50ZXJtQnJhbmNoKikgb3ZlcnJpZGU7CisgCisgICAgIGJvb2wgaXNTaW5nbGVTdGF0ZW1lbnQo
VEludGVybU5vZGUgKm5vZGUpOworICAgICBib29sIGhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVEluZm9T
aW5rQmFzZSAmb3V0LCBUSW50ZXJtTG9vcCAqbm9kZSk7CitkaWZmIC0tZ2l0IGEvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQuY3BwIGIvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQuY3BwCitpbmRleCA0ODdjOTA5Li42
ZDBjODY2IDEwMDY0NAorLS0tIGEvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVRleGVs
RmV0Y2hPZmZzZXQuY3BwCisrKysgYi9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlVGV4
ZWxGZXRjaE9mZnNldC5jcHAKK0BAIC0xNjcsNCArMTY3LDQgQEAgdm9pZCBSZXdyaXRlVGV4ZWxG
ZXRjaE9mZnNldChUSW50ZXJtTm9kZSAqcm9vdCwKKyAgICAgVHJhdmVyc2VyOjpBcHBseShyb290
LCBzeW1ib2xUYWJsZSwgc2hhZGVyVmVyc2lvbik7CisgfQorIAorLX0gIC8vIG5hbWVzcGFjZSBz
aAogXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi0rfQorK30gIC8vIG5hbWVzcGFjZSBzaAor
ZGlmZiAtLWdpdCBhL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVUZXhlbEZldGNoT2Zm
c2V0LmggYi9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlVGV4ZWxGZXRjaE9mZnNldC5o
CitpbmRleCA0MjE4ZjBiLi5jNmRiNjY0IDEwMDY0NAorLS0tIGEvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQuaAorKysrIGIvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQuaAorQEAgLTI3LDQgKzI3LDQgQEAgdm9pZCBS
ZXdyaXRlVGV4ZWxGZXRjaE9mZnNldChUSW50ZXJtTm9kZSAqcm9vdCwKKyAKKyB9ICAvLyBuYW1l
c3BhY2Ugc2gKKyAKKy0jZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfUkVXUklURV9URVhF
TEZFVENIT0ZGU0VUX0hfCitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKysjZW5kaWYgIC8v
IENPTVBJTEVSX1RSQU5TTEFUT1JfUkVXUklURV9URVhFTEZFVENIT0ZGU0VUX0hfCitkaWZmIC0t
Z2l0IGEvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvcklu
dC5jcHAgYi9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlVW5hcnlNaW51c09wZXJhdG9y
SW50LmNwcAoraW5kZXggZWY3MDhjYi4uZDIwNTgwNSAxMDA2NDQKKy0tLSBhL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL1Jld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JJbnQuY3BwCisrKysgYi9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlVW5hcnlNaW51c09wZXJhdG9ySW50LmNwcAorQEAg
LTEwOSw0ICsxMDksNCBAQCB2b2lkIFJld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JJbnQoVEludGVy
bU5vZGUgKnJvb3QpCisgICAgIFRyYXZlcnNlcjo6QXBwbHkocm9vdCk7CisgfQorIAorLX0gIC8v
IG5hbWVzcGFjZSBzaAorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisrfSAgLy8gbmFtZXNw
YWNlIHNoCitkaWZmIC0tZ2l0IGEvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVVuYXJ5
TWludXNPcGVyYXRvckludC5oIGIvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVVuYXJ5
TWludXNPcGVyYXRvckludC5oCitpbmRleCA1MGYwYzQ0Li44MDJlZDU3IDEwMDY0NAorLS0tIGEv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckludC5oCisr
KysgYi9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlVW5hcnlNaW51c09wZXJhdG9ySW50
LmgKK0BAIC0xNyw0ICsxNyw0IEBAIHZvaWQgUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckludChU
SW50ZXJtTm9kZSAqcm9vdCk7CisgCisgfSAgLy8gbmFtZXNwYWNlIHNoCisgCistI2VuZGlmICAv
LyBDT01QSUxFUl9UUkFOU0xBVE9SX1JFV1JJVEVVTkFSWU1JTlVTT1BFUkFUT1JJTlRfSF8KK1wg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorKyNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRP
Ul9SRVdSSVRFVU5BUllNSU5VU09QRVJBVE9SSU5UX0hfCiBkaWZmIC0tZ2l0IGEvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckhMU0wuaCBiL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L1RyYW5zbGF0b3JITFNMLmgKLWluZGV4IDQwY2ZkNzAuLjRlODQ2MTIgMTAwNjQ0CitpbmRleCAy
MTNkODYwLi5kMmFkZDE0IDEwMDY0NAogLS0tIGEvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJh
bnNsYXRvckhMU0wuaAogKysrIGIvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckhM
U0wuaAogQEAgLTEzLDcgKzEzLDkgQEAgY2xhc3MgVHJhbnNsYXRvckhMU0wgOiBwdWJsaWMgVENv
bXBpbGVyCkBAIC0xMTIsMjUgKzM1OCwxMiBAQCBpbmRleCA0MGNmZDcwLi40ZTg0NjEyIDEwMDY0
NAogICAgICBUcmFuc2xhdG9ySExTTChzaDo6R0xlbnVtIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVj
LCBTaFNoYWRlck91dHB1dCBvdXRwdXQpOwogKyNpZmRlZiBBTkdMRV9FTkFCTEVfSExTTAogICAg
ICBUcmFuc2xhdG9ySExTTCAqZ2V0QXNUcmFuc2xhdG9ySExTTCgpIG92ZXJyaWRlIHsgcmV0dXJu
IHRoaXM7IH0KLSsjZW5kaWYKKysjZW5kaWYgLy8gQU5HTEVfRU5BQkxFX0hMU0wKICAKICAgICAg
Ym9vbCBoYXNJbnRlcmZhY2VCbG9jayhjb25zdCBzdGQ6OnN0cmluZyAmaW50ZXJmYWNlQmxvY2tO
YW1lKSBjb25zdDsKICAgICAgdW5zaWduZWQgaW50IGdldEludGVyZmFjZUJsb2NrUmVnaXN0ZXIo
Y29uc3Qgc3RkOjpzdHJpbmcgJmludGVyZmFjZUJsb2NrTmFtZSkgY29uc3Q7Ci1kaWZmIC0tZ2l0
IGEvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZ19sZXguY3BwIGIvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvZ2xzbGFuZ19sZXguY3BwCi1pbmRleCBmZjZjMmQ2Li4xYWY4NzZiIDEwMDY0
NAotLS0tIGEvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZ19sZXguY3BwCi0rKysgYi9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nX2xleC5jcHAKLUBAIC0yMDkwLDcgKzIwOTAs
NyBAQCBjYXNlIFlZX1NUQVRFX0VPRihGSUVMRFMpOgotICAgICAgICBZWV9CUkVBSwotIGNhc2Ug
MjM5OgotIFlZX1JVTEVfU0VUVVAKLS17IGFzc2VydChmYWxzZSk7IHJldHVybiAwOyB9Ci0reyBy
ZXR1cm4gMDsgfQotICAgICAgICBZWV9CUkVBSwotIGNhc2UgMjQwOgotIFlZX1JVTEVfU0VUVVAK
IGRpZmYgLS1naXQgYS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nX3RhYi5jcHAgYi9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nX3RhYi5jcHAKLWluZGV4IDhiNGZiZDIuLmE3
OTlkMjkgMTAwNjQ0CitpbmRleCBkOWI4YWRhLi4zZTUwZmJjIDEwMDY0NAogLS0tIGEvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZ190YWIuY3BwCiArKysgYi9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9nbHNsYW5nX3RhYi5jcHAKIEBAIC0xLDUgKzEsNyBAQApAQCAtMTQyLDcgKzM3NSw3
IEBAIGluZGV4IDhiNGZiZDIuLmE3OTlkMjkgMTAwNjQ0CiAgCiAgICAgQ29weXJpZ2h0IChDKSAx
OTg0LCAxOTg5LTE5OTAsIDIwMDAtMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K
IGRpZmYgLS1naXQgYS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nX3RhYi5oIGIvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZ190YWIuaAotaW5kZXggNzMzMTU5NC4uZWI3ZWYz
OSAxMDA2NDQKK2luZGV4IGQwZTY5MWQuLjc0YTU2ZGEgMTAwNjQ0CiAtLS0gYS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9nbHNsYW5nX3RhYi5oCiArKysgYi9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9nbHNsYW5nX3RhYi5oCiBAQCAtMSw1ICsxLDcgQEAKQEAgLTE1MywyMyArMzg2LDE3NSBAQCBp
bmRleCA3MzMxNTk0Li5lYjdlZjM5IDEwMDY0NAogIC8qIEJpc29uIGludGVyZmFjZSBmb3IgWWFj
Yy1saWtlIHBhcnNlcnMgaW4gQwogIAogICAgIENvcHlyaWdodCAoQykgMTk4NCwgMTk4OS0xOTkw
LCAyMDAwLTIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkaWZmIC0tZ2l0IGEv
c3JjL2xpYkFOR0xFL0NhcHMuY3BwIGIvc3JjL2xpYkFOR0xFL0NhcHMuY3BwCitpbmRleCA0N2Ux
Y2YwLi4wZjRkNjlkIDEwMDY0NAorLS0tIGEvc3JjL2xpYkFOR0xFL0NhcHMuY3BwCisrKysgYi9z
cmMvbGliQU5HTEUvQ2Fwcy5jcHAKK0BAIC03Nyw3ICs3NywxMCBAQCB2b2lkIFRleHR1cmVDYXBz
TWFwOjpjbGVhcigpCisgCisgY29uc3QgVGV4dHVyZUNhcHMgJlRleHR1cmVDYXBzTWFwOjpnZXQo
R0xlbnVtIGludGVybmFsRm9ybWF0KSBjb25zdAorIHsKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGlj
IHB1c2gKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZXhpdC10aW1lLWRlc3Ry
dWN0b3JzIgorICAgICBzdGF0aWMgVGV4dHVyZUNhcHMgZGVmYXVsdFVuc3VwcG9ydGVkVGV4dHVy
ZTsKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAorICAgICBJbnRlcm5hbEZvcm1hdFRvQ2Fw
c01hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1DYXBzTWFwLmZpbmQoaW50ZXJuYWxGb3JtYXQp
OworICAgICByZXR1cm4gKGl0ZXIgIT0gbUNhcHNNYXAuZW5kKCkpID8gaXRlci0+c2Vjb25kIDog
ZGVmYXVsdFVuc3VwcG9ydGVkVGV4dHVyZTsKKyB9CitAQCAtNTk0LDcgKzU5NywxMCBAQCBjb25z
dCBFeHRlbnNpb25JbmZvTWFwICZHZXRFeHRlbnNpb25JbmZvTWFwKCkKKyAgICAgICAgIHJldHVy
biBtYXA7CisgICAgIH07CisgCisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisrI3ByYWdt
YSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2V4aXQtdGltZS1kZXN0cnVjdG9ycyIKKyAgICAg
c3RhdGljIGNvbnN0IEV4dGVuc2lvbkluZm9NYXAgZXh0ZW5zaW9uSW5mbyA9IGJ1aWxkRXh0ZW5z
aW9uSW5mb01hcCgpOworKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCisgICAgIHJldHVybiBl
eHRlbnNpb25JbmZvOworIH0KKyAKK2RpZmYgLS1naXQgYS9zcmMvbGliQU5HTEUvRGV2aWNlLmNw
cCBiL3NyYy9saWJBTkdMRS9EZXZpY2UuY3BwCitpbmRleCBlYjMwYjIwLi5hOTRkNTAwIDEwMDY0
NAorLS0tIGEvc3JjL2xpYkFOR0xFL0RldmljZS5jcHAKKysrKyBiL3NyYy9saWJBTkdMRS9EZXZp
Y2UuY3BwCitAQCAtMzgsNyArMzgsMTAgQEAgc3RhdGljIHN0ZDo6c3RyaW5nIEdlbmVyYXRlRXh0
ZW5zaW9uc1N0cmluZyhjb25zdCBUICZleHRlbnNpb25zKQorIHR5cGVkZWYgc3RkOjpzZXQ8ZWds
OjpEZXZpY2UgKj4gRGV2aWNlU2V0OworIHN0YXRpYyBEZXZpY2VTZXQgKkdldERldmljZVNldCgp
CisgeworKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAorKyNwcmFnbWEgR0NDIGRpYWdub3N0
aWMgaWdub3JlZCAiLVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMiCisgICAgIHN0YXRpYyBEZXZpY2VT
ZXQgZGV2aWNlczsKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAorICAgICByZXR1cm4gJmRl
dmljZXM7CisgfQorIAogZGlmZiAtLWdpdCBhL3NyYy9saWJBTkdMRS9EaXNwbGF5LmNwcCBiL3Ny
Yy9saWJBTkdMRS9EaXNwbGF5LmNwcAotaW5kZXggYzk0ZGZmMi4uNGRlNTc5YiAxMDA2NDQKK2lu
ZGV4IDkyZDdkZGEuLjU3MTExMTcgMTAwNjQ0CiAtLS0gYS9zcmMvbGliQU5HTEUvRGlzcGxheS5j
cHAKICsrKyBiL3NyYy9saWJBTkdMRS9EaXNwbGF5LmNwcAotQEAgLTEzOSw2ICsxMzksNyBAQCBy
eDo6RGlzcGxheUltcGwgKkNyZWF0ZURpc3BsYXlGcm9tQXR0cmlicyhjb25zdCBBdHRyaWJ1dGVN
YXAgJmF0dHJpYk1hcCkKLSAgICAgc3dpdGNoIChkaXNwbGF5VHlwZSkKLSAgICAgewotICAgICAg
IGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfREVGQVVMVF9BTkdMRToKLSsjaWYgZGVmaW5l
ZChBTkdMRV9FTkFCTEVfT1BFTkdMKQotICNpZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9EM0Q5KSB8
fCBkZWZpbmVkKEFOR0xFX0VOQUJMRV9EM0QxMSkKLSAgICAgICAgIC8vIERlZmF1bHQgdG8gRDNE
IGRpc3BsYXlzCi0gICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5RDNEKCk7Ci1AQCAtMTUw
LDYgKzE1MSw3IEBAIHJ4OjpEaXNwbGF5SW1wbCAqQ3JlYXRlRGlzcGxheUZyb21BdHRyaWJzKGNv
bnN0IEF0dHJpYnV0ZU1hcCAmYXR0cmliTWFwKQotICAgICAgICAgLy8gTm8gZGlzcGxheSBhdmFp
bGFibGUKLSAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gI2VuZGlmCi0rI2VuZGlmCi0gICAgICAg
ICBicmVhazsKK0BAIC05MCwyMSArOTAsMzAgQEAgdHlwZWRlZiBzdGQ6Om1hcDxFR0xOYXRpdmVX
aW5kb3dUeXBlLCBTdXJmYWNlKj4gV2luZG93U3VyZmFjZU1hcDsKKyAvLyBhc3NvY2lhdGVkIHdp
dGggaXQuCisgc3RhdGljIFdpbmRvd1N1cmZhY2VNYXAgKkdldFdpbmRvd1N1cmZhY2VzKCkKKyB7
CisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBp
Z25vcmVkICItV2V4aXQtdGltZS1kZXN0cnVjdG9ycyIKKyAgICAgc3RhdGljIFdpbmRvd1N1cmZh
Y2VNYXAgd2luZG93U3VyZmFjZXM7CisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKKyAgICAg
cmV0dXJuICZ3aW5kb3dTdXJmYWNlczsKKyB9CisgCisgdHlwZWRlZiBzdGQ6Om1hcDxFR0xOYXRp
dmVEaXNwbGF5VHlwZSwgRGlzcGxheSAqPiBBTkdMRVBsYXRmb3JtRGlzcGxheU1hcDsKKyBzdGF0
aWMgQU5HTEVQbGF0Zm9ybURpc3BsYXlNYXAgKkdldEFOR0xFUGxhdGZvcm1EaXNwbGF5TWFwKCkK
KyB7CisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisrI3ByYWdtYSBHQ0MgZGlhZ25vc3Rp
YyBpZ25vcmVkICItV2V4aXQtdGltZS1kZXN0cnVjdG9ycyIKKyAgICAgc3RhdGljIEFOR0xFUGxh
dGZvcm1EaXNwbGF5TWFwIGRpc3BsYXlzOworKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCisg
ICAgIHJldHVybiAmZGlzcGxheXM7CisgfQorIAorIHR5cGVkZWYgc3RkOjptYXA8RGV2aWNlICos
IERpc3BsYXkgKj4gRGV2aWNlUGxhdGZvcm1EaXNwbGF5TWFwOworIHN0YXRpYyBEZXZpY2VQbGF0
Zm9ybURpc3BsYXlNYXAgKkdldERldmljZVBsYXRmb3JtRGlzcGxheU1hcCgpCisgeworKyNwcmFn
bWEgR0NDIGRpYWdub3N0aWMgcHVzaAorKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAi
LVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMiCisgICAgIHN0YXRpYyBEZXZpY2VQbGF0Zm9ybURpc3Bs
YXlNYXAgZGlzcGxheXM7CisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKKyAgICAgcmV0dXJu
ICZkaXNwbGF5czsKKyB9CisgCitAQCAtOTIxLDcgKzkzMCwxMCBAQCBjb25zdCBDbGllbnRFeHRl
bnNpb25zICZEaXNwbGF5OjpnZXRDbGllbnRFeHRlbnNpb25zKCkKICAKLSAgICAgICBjYXNlIEVH
TF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDlfQU5HTEU6CisgY29uc3Qgc3RkOjpzdHJpbmcgJkRp
c3BsYXk6OmdldENsaWVudEV4dGVuc2lvblN0cmluZygpCisgeworKyNwcmFnbWEgR0NDIGRpYWdu
b3N0aWMgcHVzaAorKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdleGl0LXRpbWUt
ZGVzdHJ1Y3RvcnMiCisgICAgIHN0YXRpYyBjb25zdCBzdGQ6OnN0cmluZyBjbGllbnRFeHRlbnNp
b25zU3RyaW5nID0gR2VuZXJhdGVFeHRlbnNpb25zU3RyaW5nKGdldENsaWVudEV4dGVuc2lvbnMo
KSk7CisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKKyAgICAgcmV0dXJuIGNsaWVudEV4dGVu
c2lvbnNTdHJpbmc7CisgfQorIAorZGlmZiAtLWdpdCBhL3NyYy9saWJBTkdMRS9IYW5kbGVSYW5n
ZUFsbG9jYXRvci5jcHAgYi9zcmMvbGliQU5HTEUvSGFuZGxlUmFuZ2VBbGxvY2F0b3IuY3BwCitp
bmRleCBmMjE5Zjk1Li4zODMxYWNhIDEwMDY0NAorLS0tIGEvc3JjL2xpYkFOR0xFL0hhbmRsZVJh
bmdlQWxsb2NhdG9yLmNwcAorKysrIGIvc3JjL2xpYkFOR0xFL0hhbmRsZVJhbmdlQWxsb2NhdG9y
LmNwcAorQEAgLTIyMyw0ICsyMjMsNCBAQCBib29sIEhhbmRsZVJhbmdlQWxsb2NhdG9yOjppc1Vz
ZWQoR0x1aW50IGhhbmRsZSkgY29uc3QKKyAgICAgcmV0dXJuIGN1cnJlbnQtPnNlY29uZCA+PSBo
YW5kbGU7CisgfQorIAorLX0gIC8vIG5hbWVzcGFjZSBnbAorXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCisrfSAgLy8gbmFtZXNwYWNlIGdsCitkaWZmIC0tZ2l0IGEvc3JjL2xpYkFOR0xFL0hh
bmRsZVJhbmdlQWxsb2NhdG9yLmggYi9zcmMvbGliQU5HTEUvSGFuZGxlUmFuZ2VBbGxvY2F0b3Iu
aAoraW5kZXggMjBmOWExMS4uMTAyM2E4NCAxMDA2NDQKKy0tLSBhL3NyYy9saWJBTkdMRS9IYW5k
bGVSYW5nZUFsbG9jYXRvci5oCisrKysgYi9zcmMvbGliQU5HTEUvSGFuZGxlUmFuZ2VBbGxvY2F0
b3IuaAorQEAgLTU2LDQgKzU2LDQgQEAgY2xhc3MgSGFuZGxlUmFuZ2VBbGxvY2F0b3IgZmluYWwg
OiBhbmdsZTo6Tm9uQ29weWFibGUKKyAKKyB9ICAvLyBuYW1lc3BhY2UgZ2wKKyAKKy0jZW5kaWYg
IC8vIExJQkFOR0xFX0hBTkRMRVJBTkdFQUxMT0NBVE9SX0hfCitcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKKysjZW5kaWYgIC8vIExJQkFOR0xFX0hBTkRMRVJBTkdFQUxMT0NBVE9SX0hfCitk
aWZmIC0tZ2l0IGEvc3JjL2xpYkFOR0xFL1BhdGguaCBiL3NyYy9saWJBTkdMRS9QYXRoLmgKK2lu
ZGV4IGIxMDNjODQuLjg1ZjQ5YzEgMTAwNjQ0CistLS0gYS9zcmMvbGliQU5HTEUvUGF0aC5oCisr
KysgYi9zcmMvbGliQU5HTEUvUGF0aC5oCitAQCAtNjgsNCArNjgsNCBAQCBjbGFzcyBQYXRoIGZp
bmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCisgCisgfSAgLy8gbmFtZXNwYWNlIGdsCisgCistI2Vu
ZGlmICAvLyBMSUJBTkdMRV9QQVRIX0hfCitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKysj
ZW5kaWYgIC8vIExJQkFOR0xFX1BBVEhfSF8KK2RpZmYgLS1naXQgYS9zcmMvbGliQU5HTEUvZm9y
bWF0dXRpbHMuY3BwIGIvc3JjL2xpYkFOR0xFL2Zvcm1hdHV0aWxzLmNwcAoraW5kZXggZmYyODVk
ZC4uNTVhNWZjOCAxMDA2NDQKKy0tLSBhL3NyYy9saWJBTkdMRS9mb3JtYXR1dGlscy5jcHAKKysr
KyBiL3NyYy9saWJBTkdMRS9mb3JtYXR1dGlscy5jcHAKK0BAIC02MTUsNyArNjE1LDEwIEBAIHN0
YXRpYyBJbnRlcm5hbEZvcm1hdEluZm9NYXAgQnVpbGRJbnRlcm5hbEZvcm1hdEluZm9NYXAoKQor
IAorIHN0YXRpYyBjb25zdCBJbnRlcm5hbEZvcm1hdEluZm9NYXAgJkdldEludGVybmFsRm9ybWF0
TWFwKCkKKyB7CisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisrI3ByYWdtYSBHQ0MgZGlh
Z25vc3RpYyBpZ25vcmVkICItV2V4aXQtdGltZS1kZXN0cnVjdG9ycyIKKyAgICAgc3RhdGljIGNv
bnN0IEludGVybmFsRm9ybWF0SW5mb01hcCBmb3JtYXRNYXAgPSBCdWlsZEludGVybmFsRm9ybWF0
SW5mb01hcCgpOworKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCisgICAgIHJldHVybiBmb3Jt
YXRNYXA7CisgfQorIAorQEAgLTg1OSw3ICs4NjIsMTAgQEAgR0xlbnVtIEdldFNpemVkSW50ZXJu
YWxGb3JtYXQoR0xlbnVtIGludGVybmFsRm9ybWF0LCBHTGVudW0gdHlwZSkKKyAKKyBjb25zdCBG
b3JtYXRTZXQgJkdldEFsbFNpemVkSW50ZXJuYWxGb3JtYXRzKCkKKyB7CisrI3ByYWdtYSBHQ0Mg
ZGlhZ25vc3RpYyBwdXNoCisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2V4aXQt
dGltZS1kZXN0cnVjdG9ycyIKKyAgICAgc3RhdGljIEZvcm1hdFNldCBmb3JtYXRTZXQgPSBCdWls
ZEFsbFNpemVkSW50ZXJuYWxGb3JtYXRTZXQoKTsKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBv
cAorICAgICByZXR1cm4gZm9ybWF0U2V0OworIH0KKyAKK2RpZmYgLS1naXQgYS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvUGF0aEltcGwuaCBiL3NyYy9saWJBTkdMRS9yZW5kZXJlci9QYXRoSW1wbC5o
CitpbmRleCAzNjA3ZjY5Li5jYjAzZWQ2IDEwMDY0NAorLS0tIGEvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL1BhdGhJbXBsLmgKKysrKyBiL3NyYy9saWJBTkdMRS9yZW5kZXJlci9QYXRoSW1wbC5oCitA
QCAtMzMsNCArMzMsNCBAQCBjbGFzcyBQYXRoSW1wbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQorIAor
IH0gIC8vIG5hbWVzcGFjZSByeAorIAorLSNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfUEFU
SElNUExfSF8KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorKyNlbmRpZiAgLy8gTElCQU5H
TEVfUkVOREVSRVJfUEFUSElNUExfSF8KK2RpZmYgLS1naXQgYS9zcmMvbGliQU5HTEUvdmFsaWRh
dGlvbkVTMy5jcHAgYi9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMy5jcHAKK2luZGV4IDJmOTM2
NTEuLjQ5YWE2MDQgMTAwNjQ0CistLS0gYS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMy5jcHAK
KysrKyBiL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMzLmNwcAorQEAgLTUyNCw3ICs1MjQsMTAg
QEAgc3RhdGljIGJvb2wgSXNWYWxpZEVTM0NvcHlUZXhJbWFnZUNvbWJpbmF0aW9uKGNvbnN0IEZv
cm1hdCAmdGV4dHVyZUZvcm1hdCwKKyAgICAgY29uc3QgYXV0byAmdGV4dHVyZUZvcm1hdEluZm8g
ICAgID0gKnRleHR1cmVGb3JtYXQuaW5mbzsKKyAgICAgY29uc3QgYXV0byAmZnJhbWVidWZmZXJG
b3JtYXRJbmZvID0gKmZyYW1lYnVmZmVyRm9ybWF0LmluZm87CisgCisrI3ByYWdtYSBHQ0MgZGlh
Z25vc3RpYyBwdXNoCisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2V4aXQtdGlt
ZS1kZXN0cnVjdG9ycyIKKyAgICAgc3RhdGljIGNvbnN0IENvcHlDb252ZXJzaW9uU2V0IGNvbnZl
cnNpb25TZXQgPSBCdWlsZFZhbGlkRVMzQ29weVRleEltYWdlQ29tYmluYXRpb25zKCk7CisrI3By
YWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKKyAgICAgaWYgKGNvbnZlcnNpb25TZXQuZmluZChDb3B5
Q29udmVyc2lvbih0ZXh0dXJlRm9ybWF0SW5mby5mb3JtYXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVidWZmZXJGb3JtYXRJbmZvLmZvcm1hdCkpICE9
IGNvbnZlcnNpb25TZXQuZW5kKCkpCisgICAgIHsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL2NvZGVyZXZpZXcuc2V0dGluZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvY29kZXJldmlldy5zZXR0aW5ncwkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvY29kZXJldmlldy5zZXR0aW5ncwkod29ya2luZyBjb3B5KQpAQCAtMiwz
ICsyLDQgQEAKIENPREVfUkVWSUVXX1NFUlZFUjogaHR0cHM6Ly9jaHJvbWl1bS1yZXZpZXcuZ29v
Z2xlc291cmNlLmNvbQogR0VSUklUX0hPU1Q6IFRydWUKIFRSWVNFUlZFUl9HRVJSSVRfVVJMOiBo
dHRwczovL2Nocm9taXVtLXJldmlldy5nb29nbGVzb3VyY2UuY29tCitHRVJSSVRfU1FVQVNIX1VQ
TE9BRFM6IEZhbHNlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0FO
R0xFX2RlcHRoX3RleHR1cmUudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL2V4dGVuc2lvbnMvQU5HTEVfZGVwdGhfdGV4dHVyZS50eHQJKHJldmlzaW9uIDIwNzgwNCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvQU5HTEVfZGVwdGhfdGV4dHVy
ZS50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSw0MDIgKzAsMCBAQAotTmFtZQotCi0gICAgQU5HTEVf
ZGVwdGhfdGV4dHVyZQotCi1OYW1lIFN0cmluZ3MKLQotICAgIEdMX0FOR0xFX2RlcHRoX3RleHR1
cmUKLQotQ29udHJpYnV0b3JzCi0KLSAgICBOaWNvbGFzIENhcGVucywgVHJhbnNHYW1pbmcKLSAg
ICBEYW5pZWwgS29jaCwgVHJhbnNHYW1pbmcKLSAgICBTaGFubm9uIFdvb2RzLCBUcmFuc0dhbWlu
ZwotICAgIEtlbm5ldGggUnVzc2VsbCwgR29vZ2xlCi0gICAgVmFuZ2VsaXMgS29ra2V2aXMsIEdv
b2dsZQotICAgIEdyZWdnIFRhdmFyZXMsIEdvb2dsZQotICAgIENvbnRyaWJ1dG9ycyB0byBPRVNf
ZGVwdGhfdGV4dHVyZQotICAgIENvbnRyaWJ1dG9ycyB0byBPRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwKLQotQ29udGFjdAotCi0gICAgU2hhbm5vbiBXb29kcywgVHJhbnNHYW1pbmcgKHNoYW5ub24g
J2RvdCcgd29vZHMgJ2F0JyB0cmFuc2dhbWluZy5jb20pCi0KLVN0YXR1cwotCi0gICAgSW1wbGVt
ZW50ZWQgaW4gQU5HTEUuCi0KLVZlcnNpb24KLQotICAgIExhc3QgTW9kaWZpZWQgRGF0ZTogRmVi
cnVhcnkgMjUsIDIwMTMKLSAgICBSZXZpc2lvbjogIzQKLQotTnVtYmVyCi0KLSAgICBUQkQKLQot
RGVwZW5kZW5jaWVzCi0KLSAgICBPcGVuR0wgRVMgMi4wIGlzIHJlcXVpcmVkLgotICAgIFRoaXMg
ZXh0ZW5zaW9uIGlzIHdyaXR0ZW4gYWdhaW5zdCB0aGUgT3BlbkdMIEVTIDIuMC4yNSBzcGVjaWZp
Y2F0aW9uCi0KLSAgICBPRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwgYWZmZWN0cyB0aGUgZGVmaW5p
dGlvbiBvZiB0aGlzIGV4dGVuc2lvbi4KLQotICAgIEVYVF90ZXh0dXJlX3N0b3JhZ2UgYWZmZWN0
cyB0aGUgZGVmaW5pdGlvbiBvZiB0aGlzIGV4dGVuc2lvbi4KLQotT3ZlcnZpZXcKLQotICAgIFRo
aXMgZXh0ZW5zaW9uIGRlZmluZXMgc3VwcG9ydCBmb3IgMkQgZGVwdGggYW5kIGRlcHRoLXN0ZW5j
aWwKLSAgICB0ZXh0dXJlcyBpbiBhbiBPcGVuR0wgRVMgaW1wbGVtZW50YXRpb24uCi0KLSAgICBU
aGlzIGV4dGVuc2lvbiBpbmNvcnBvcmF0ZXMgdGhlIGRlcHRoIHRleHR1cmluZyBmdW5jdGlvbmFs
aXR5IG9mIAotICAgIE9FU19kZXB0aF90ZXh0dXJlIGFuZCBPRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwsIGJ1dCBkb2VzIG5vdCAKLSAgICBwcm92aWRlIHRoZSBhYmlsaXR5IHRvIGxvYWQgZXhpc3Rp
bmcgZGF0YSB2aWEgVGV4SW1hZ2UyRCBvcgotICAgIFRleFN1YkltYWdlMkQuIFRoaXMgZXh0ZW5z
aW9uIGFsc28gYWxsb3dzIGltcGxlbWVudGF0aW9uIAotICAgIHZhcmlhYmlsaXR5IGluIHdoaWNo
IGNvbXBvbmVudHMgZnJvbSBhIHNhbXBsZWQgZGVwdGggdGV4dHVyZQotICAgIGNvbnRhaW4gdGhl
IGRlcHRoIGRhdGEuIERlcHRoIHRleHR1cmVzIGNyZWF0ZWQgd2l0aCB0aGlzCi0gICAgZXh0ZW5z
aW9uIG9ubHkgc3VwcG9ydCAxIGxldmVsLgotCi1OZXcgUHJvY2VkdXJlcyBhbmQgRnVuY3Rpb25z
Ci0KLSAgICBOb25lCi0KLU5ldyBUb2tlbnMKLQotICAgIEFjY2VwdGVkIGJ5IHRoZSA8Zm9ybWF0
PiBwYXJhbWV0ZXIgb2YgVGV4SW1hZ2UyRCBhbmQgVGV4U3ViSW1hZ2UyRCBhbmQKLSAgICA8aW50
ZXJuYWxmb3JtYXQ+IHBhcmFtZXRlciBvZiBUZXhJbWFnZTJEOgotICAgIAotICAgICAgICBERVBU
SF9DT01QT05FTlQgICAgICAgICAgICAgMHgxOTAyCi0gICAgICAgIERFUFRIX1NURU5DSUxfT0VT
ICAgICAgICAgICAweDg0RjkKLSAgICAgICAgCi0gICAgQWNjZXB0ZWQgYnkgdGhlIDx0eXBlPiBw
YXJhbWV0ZXIgb2YgVGV4SW1hZ2UyRCwgVGV4U3ViSW1hZ2UyRDogCi0KLSAgICAgICAgVU5TSUdO
RURfU0hPUlQgICAgICAgICAgICAgIDB4MTQwMwotICAgICAgICBVTlNJR05FRF9JTlQgICAgICAg
ICAgICAgICAgMHgxNDA1Ci0gICAgICAgIFVOU0lHTkVEX0lOVF8yNF84X09FUyAgICAgICAweDg0
RkEKLQotICAgIEFjY2VwdGVkIGJ5IHRoZSA8aW50ZXJuYWxmb3JtYXQ+IHBhcmFtZXRlciBvZiBU
ZXhTdG9yYWdlMkRFWFQ6Ci0KLSAgICAgICAgREVQVEhfQ09NUE9ORU5UMTYgICAgICAgICAgIDB4
ODFBNQotICAgICAgICBERVBUSF9DT01QT05FTlQzMl9PRVMgICAgICAgMHg4MUE3Ci0gICAgICAg
IERFUFRIMjRfU1RFTkNJTDhfT0VTICAgICAgICAweDg4RjAKLQotQWRkaXRpb25zIHRvIENoYXB0
ZXIgMiBvZiB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZpY2F0aW9uIChPcGVuR0wgT3BlcmF0aW9u
KQotCi0gICAgVXBkYXRlIFNlY3Rpb24gMi4xMC41ICJTaGFkZXIgRXhlY3V0aW9uIiBpbiB0aGUg
c3Vic2VjdGlvbiB0aXRsZWQgCi0gICAgIlRleHR1cmUgQWNjZXNzIiBhZGQgYSBuZXcgcGFyYWdy
YXBoIGJlZm9yZSB0aGUgbGFzdCBwYXJhZ3JhcGggYWRkCi0gICAgdGhpcyBsaW5lOgotCi0gICAg
IlRoZSBzdGVuY2lsIGluZGV4IHRleHR1cmUgaW50ZXJuYWwgY29tcG9uZW50IGlzIGlnbm9yZWQg
aWYgdGhlIGJhc2UKLSAgICBpbnRlcm5hbCBmb3JtYXQgaXMgREVQVEhfU1RFTkNJTF9PRVMuCi0K
LSAgICBJZiBhIHZlcnRleCBzaGFkZXIgdXNlcy4uLiIKLQotQWRkaXRpb25zIHRvIENoYXB0ZXIg
MyBvZiB0aGUgT3BlbkdMIEVTIDIuMCBzcGVjaWZpY2F0aW9uIChSYXN0ZXJpemF0aW9uKQotCi0g
ICAgQWRkIHRoZSBmb2xsb3dpbmcgcm93cyB0byBUYWJsZSAzLjIgKHBhZ2UgNjIpOgotCi0gICAg
ICB0eXBlIFBhcmFtZXRlciAgICAgICAgICAgR0wgRGF0YSBUeXBlICAgIFNwZWNpYWwKLSAgICAg
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAg
Li4uICAgICAgICAgICAgICAgICAgICAgIC4uLiAgICAgICAgICAgICAgLi4uCi0gICAgICBVTlNJ
R05FRF9TSE9SVCAgICAgICAgICAgdXNob3J0ICAgICAgICAgICBObwotICAgICAgVU5TSUdORURf
SU5UICAgICAgICAgICAgIHVpbnQgICAgICAgICAgICAgTm8KLSAgICAgIFVOU0lHTkVEX0lOVF8y
NF84X09FUyAgICB1aW50ICAgICAgICAgICAgIFllcwotCi0gICAgQWRkIHRoZSBmb2xsb3dpbmcg
cm93cyB0byBUYWJsZSAzLjMgKHBhZ2UgNjIpOgotCi0gICAgICBGb3JtYXQgTmFtZSAgICAgICBF
bGVtZW50IE1lYW5pbmcgYW5kIE9yZGVyICAgICAgVGFyZ2V0IEJ1ZmZlcgotICAgICAgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0gICAgICAuLi4gICAgICAgICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLi4uCi0gICAgICBERVBUSF9DT01QT05FTlQgICBEZXB0aCAgICAgICAgICAgICAgICAgICAg
ICAgICAgRGVwdGgKLSAgICAgIERFUFRIX1NURU5DSUxfT0VTIERlcHRoIGFuZCBTdGVuY2lsIElu
ZGV4ICAgICAgICBEZXB0aCBhbmQgU3RlbmNpbAotICAgICAgLi4uICAgICAgICAgICAgICAgLi4u
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLgotCi0gICAgQWRkIGEgcm93IHRvIFRhYmxl
IDMuNSAiUGFja2VkIHBpeGVsIGZvcm1hdHMiIChwYWdlIDY0KToKLQotICAgICAgdHlwZSBQYXJh
bWV0ZXIgICAgICAgICAgICAgICBHTCBUeXBlICBDb21wb25lbnRzICBQaXhlbCBGb3JtYXRzCi0g
ICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLSAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uICAg
ICAgLi4uICAgICAgICAgLi4uCi0gICAgICBVTlNJR05FRF9JTlRfMjRfOF9PRVMgICAgICAgIHVp
bnQgICAgIDIgICAgICAgICAgIERFUFRIX1NURU5DSUxfT0VTCi0KLSAgICBBZGQgYSBuZXcgdGFi
bGUgYWZ0ZXIgVGFibGUgMy42IChwYWdlIDY0KToKLQotICAgIFVOU0lHTkVEX0lOVF8yNF84X09F
UwotCi0gICAgICAgMzEgMzAgMjkgMjggMjcgMjYgLi4uIDEyIDExIDEwIDkgOCA3IDYgNSA0IDMg
MiAxIDAKLSAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t
LS0tLS0tLSsKLSAgICAgIHwgICAgICAgICAgIDFzdCBDb21wb25lbnQgICAgICAgICAgfCAybmQg
Q29tcG9uZW50IHwKLSAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t
LS0tLS0tLS0tLS0tLSsKLQotICAgICAgVGFibGUgMy42LkI6IFVOU0lHTkVEX0lOVCBmb3JtYXRz
Ci0KLSAgICBBZGQgYSByb3cgdG8gVGFibGUgMy43ICJQYWNrZWQgcGl4ZWwgZmllbGQgYXNzaWdu
bWVudHMiIChwYWdlIDY1KToKLQotICAgICAgRm9ybWF0ICAgICAgICAgICAgfCAgMXN0ICAgICAy
bmQgICAgIDNyZCAgICAgNHRoCi0gICAgICAtLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgLi4uICAgICAgICAgICAgICAgfCAgLi4uICAgICAu
Li4gICAgIC4uLiAgICAgLi4uCi0gICAgICBERVBUSF9TVEVOQ0lMX09FUyB8ICBkZXB0aCAgIHN0
ZW5jaWwgTi9BICAgICBOL0EKLQotICAgIEFkZCB0aGUgZm9sbG93aW5nIHBhcmFncmFwaCB0byB0
aGUgZW5kIG9mIHRoZSBzZWN0aW9uICJDb252ZXJzaW9uIHRvCi0gICAgZmxvYXRpbmctcG9pbnQi
IChwYWdlIDY1KToKLQotICAgICJGb3IgZ3JvdXBzIG9mIGNvbXBvbmVudHMgdGhhdCBjb250YWlu
IGJvdGggc3RhbmRhcmQgY29tcG9uZW50cyBhbmQgaW5kZXgKLSAgICBlbGVtZW50cywgc3VjaCBh
cyBERVBUSF9TVEVOQ0lMX09FUywgdGhlIGluZGV4IGVsZW1lbnRzIGFyZSBub3QgY29udmVydGVk
LiIKLQotICAgIEluIHNlY3Rpb24gMy43LjEgIlRleHR1cmUgSW1hZ2UgU3BlY2lmaWNhdGlvbiIs
IHVwZGF0ZSBwYWdlIDY3IHRvCi0gICAgc2F5OgotCi0gICAgIlRoZSBzZWxlY3RlZCBncm91cHMg
YXJlIHByb2Nlc3NlZCBhcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjYuMiwgc3RvcHBpbmcKLSAg
ICBqdXN0IGJlZm9yZSBmaW5hbCBjb252ZXJzaW9uLiAgRWFjaCBSLCBHLCBCLCBBLCBvciBkZXB0
aCB2YWx1ZSBzbyBnZW5lcmF0ZWQKLSAgICBpcyBjbGFtcGVkIHRvIFswLCAxXSwgd2hpbGUgdGhl
IHN0ZW5jaWwgaW5kZXggdmFsdWVzIGFyZSBtYXNrZWQgYnkgMl5uLTEsCi0gICAgd2hlcmUgbiBp
cyB0aGUgbnVtYmVyIG9mIHN0ZW5jaWwgYml0cyBpbiB0aGUgaW50ZXJuYWwgZm9ybWF0IHJlc29s
dXRpb24KLSAgICAoc2VlIGJlbG93KS4KLQotICAgIENvbXBvbmVudHMgYXJlIHRoZW4gc2VsZWN0
ZWQgZnJvbSB0aGUgcmVzdWx0aW5nIFIsIEcsIEIsIEEsIGRlcHRoLCBvcgotICAgIHN0ZW5jaWwg
aW5kZXggdmFsdWVzIHRvIG9idGFpbiBhIHRleHR1cmUgd2l0aCB0aGUgYmFzZSBpbnRlcm5hbCBm
b3JtYXQKLSAgICBzcGVjaWZpZWQgYnkgPGludGVybmFsZm9ybWF0Pi4gIFRhYmxlIDMuOCBzdW1t
YXJpemVzIHRoZSBtYXBwaW5nIG9mIFIsIEcsCi0gICAgQiwgQSwgZGVwdGgsIG9yIHN0ZW5jaWwg
dmFsdWVzIHRvIHRleHR1cmUgY29tcG9uZW50cywgYXMgYSBmdW5jdGlvbiBvZiB0aGUKLSAgICBi
YXNlIGludGVybmFsIGZvcm1hdCBvZiB0aGUgdGV4dHVyZSBpbWFnZS4gIDxpbnRlcm5hbGZvcm1h
dD4gbWF5IGJlCi0gICAgc3BlY2lmaWVkIGFzIG9uZSBvZiB0aGUgaW50ZXJuYWwgZm9ybWF0IHN5
bWJvbGljIGNvbnN0YW50cyBsaXN0ZWQgaW4KLSAgICB0YWJsZSAzLjguIFNwZWNpZnlpbmcgYSB2
YWx1ZSBmb3IgPGludGVybmFsZm9ybWF0PiB0aGF0IGlzIG5vdCBvbmUgb2YgdGhlCi0gICAgYWJv
dmUgdmFsdWVzIGdlbmVyYXRlcyB0aGUgZXJyb3IgSU5WQUxJRF9WQUxVRS4gSWYgPGludGVybmFs
Zm9ybWF0PiBkb2VzCi0gICAgbm90IG1hdGNoIDxmb3JtYXQ+LCB0aGUgZXJyb3IgSU5WQUxJRF9P
UEVSQVRJT04gaXMgZ2VuZXJhdGVkLgotCi0gICAgVGV4dHVyZXMgd2l0aCBhIGJhc2UgaW50ZXJu
YWwgZm9ybWF0IG9mIERFUFRIX0NPTVBPTkVOVCBvciAKLSAgICBERVBUSF9TVEVOQ0lMX09FUyBh
cmUgc3VwcG9ydGVkIGJ5IHRleHR1cmUgaW1hZ2Ugc3BlY2lmaWNhdGlvbiBjb21tYW5kcwotICAg
IG9ubHkgaWYgPHRhcmdldD4gaXMgVEVYVFVSRV8yRC4gIFVzaW5nIHRoZXNlIGZvcm1hdHMgaW4g
Y29uanVuY3Rpb24gd2l0aAotICAgIGFueSBvdGhlciA8dGFyZ2V0PiB3aWxsIHJlc3VsdCBpbiBh
biBJTlZBTElEX09QRVJBVElPTiBlcnJvci4KLQotICAgIFRleHR1cmVzIHdpdGggYSBiYXNlIGlu
dGVybmFsIGZvcm1hdCBvZiBERVBUSF9DT01QT05FTlQgb3IKLSAgICBERVBUSF9TVEVOQ0lMX09F
UyBvbmx5IHN1cHBvcnQgb25lIGxldmVsIG9mIGltYWdlIGRhdGEuICBTcGVjaWZ5aW5nIGEKLSAg
ICBub24temVybyB2YWx1ZSBmb3IgPGxldmVsPiB3aWxsIHJlc3VsdCBpbiBhbiBJTlZBTElEX09Q
RVJBVElPTiBlcnJvci4KLQotICAgIFRleHR1cmVzIHdpdGggYSBiYXNlIGludGVybmFsIGZvcm1h
dCBvZiBERVBUSF9DT01QT05FTlQgb3IgREVQVEhfU1RFTkNJTF9PRVMKLSAgICByZXF1aXJlIGVp
dGhlciBkZXB0aCBjb21wb25lbnQgZGF0YSBvciBkZXB0aC9zdGVuY2lsIGNvbXBvbmVudCBkYXRh
LgotICAgIFRleHR1cmVzIHdpdGggb3RoZXIgYmFzZSBpbnRlcm5hbCBmb3JtYXRzIHJlcXVpcmUg
UkdCQSBjb21wb25lbnQgZGF0YS4gIFRoZQotICAgIGVycm9yIElOVkFMSURfT1BFUkFUSU9OIGlz
IGdlbmVyYXRlZCBpZiB0aGUgYmFzZSBpbnRlcm5hbCBmb3JtYXQgaXMKLSAgICBERVBUSF9DT01Q
T05FTlQgb3IgREVQVEhfU1RFTkNJTF9PRVMgYW5kIDxmb3JtYXQ+IGlzIG5vdCBERVBUSF9DT01Q
T05FTlQgb3IKLSAgICBERVBUSF9TVEVOQ0lMX09FUywgb3IgaWYgdGhlIGJhc2UgaW50ZXJuYWwg
Zm9ybWF0IGlzIG5vdCBERVBUSF9DT01QT05FTlQgb3IKLSAgICBERVBUSF9TVEVOQ0lMX09FUyBh
bmQgPGZvcm1hdD4gaXMgREVQVEhfQ09NUE9ORU5UIG9yIERFUFRIX1NURU5DSUxfT0VTLgotCi0g
ICAgVGV4dHVyZXMgd2l0aCBhIGJhc2UgaW50ZXJuYWwgZm9ybWF0IG9mIERFUFRIX0NPTVBPTkVO
VCBvcgotICAgIERFUFRIX1NURU5DSUxfT0VTIGRvIG5vdCBzdXBwb3J0IGxvYWRpbmcgaW1hZ2Ug
ZGF0YSB2aWEgdGhlIFRleEltYWdlCi0gICAgY29tbWFuZHMuIFRoZXkgY2FuIG9ubHkgaGF2ZSB0
aGVpciBjb250ZW50cyBzcGVjaWZpZWQgYnkgcmVuZGVyaW5nCi0gICAgdG8gdGhlbS4gVGhlIElO
VkFMSURfT1BFUkFUSU9OIGVycm9yIGlzIGdlbmVyYXRlZCBieSB0aGUgVGV4SW1hZ2UyRAotICAg
IGNvbW1hbmQgaWYgPGRhdGE+IGlzIG5vdCBOVUxMIGZvciBzdWNoIHRleHR1cmVzLiIKLQotICAg
IEFkZCBhIHJvdyB0byB0YWJsZSAzLjggKHBhZ2UgNjgpLCBhbmQgdXBkYXRlIHRoZSB0aXRsZSBv
ZiB0aGUKLSAgICBzZWNvbmQgY29sdW1uOgotCi0gICAgICBCYXNlIEludGVybmFsIEZvcm1hdCAg
UkdCQSwgRGVwdGggYW5kIFN0ZW5jaWwgVmFsdWVzICBJbnRlcm5hbCBDb21wb25lbnRzCi0gICAg
ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAuLi4gICAgICAgICAgICAgICAgICAgLi4uICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAuLi4KLSAgICAgIERFUFRIX0NPTVBPTkVOVCAgICAgICBE
ZXB0aCAgICAgICAgICAgICAgICAgICAgICAgICAgIEQKLSAgICAgIERFUFRIX1NURU5DSUxfT0VT
ICAgICBEZXB0aCxTdGVuY2lsICAgICAgICAgICAgICAgICAgIEQsUwotICAgICAgLi4uICAgICAg
ICAgICAgICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uCi0KLSAgICBV
cGRhdGUgdGhlIGNhcHRpb24gZm9yIHRhYmxlIDMuOCAocGFnZSA2OCkKLQotICAgICJUYWJsZSAz
Ljg6IENvbnZlcnNpb24gZnJvbSBSR0JBLCBkZXB0aCwgYW5kIHN0ZW5jaWwgcGl4ZWwgY29tcG9u
ZW50cyB0bwotICAgIGludGVybmFsIHRleHR1cmUgY29tcG9uZW50cy4gIFRleHR1cmUgY29tcG9u
ZW50cyBSLCBHLCBCLCBBLCBhbmQgTCBhcmUgCi0gICAgY29udmVydGVkIGJhY2sgdG8gUkdCQSBj
b2xvcnMgZHVyaW5nIGZpbHRlcmluZyBhcyBzaG93biBpbiB0YWJsZSAzLjEyLgotICAgIFRleHR1
cmUgY29tcG9uZW50cyBEIGFyZSBjb252ZXJ0ZWQgdG8gUkdCQSBjb2xvcnMgYXMgZGVzY3JpYmVk
IGluIAotICAgIHNlY3Rpb24gMy43LjgtMS8yLiIKLQotICAgIEFkZCB0aGUgZm9sbG93aW5nIHRv
IHNlY3Rpb24gMy43LjIgIkFsdGVybmF0ZSBUZXh0dXJlIEltYWdlIFNwZWNpZmljYXRpb24KLSAg
ICBDb21tYW5kcyI6Ci0KLSAgICAiQ29weVRleEltYWdlMkQgYW5kIENvcHlUZXhTdWJJbWFnZTJE
IGdlbmVyYXRlIHRoZSBJTlZBTElEX09QRVJBVElPTiAKLSAgICBlcnJvciBpZiB0aGUgYmFzZSBp
bnRlcm5hbCBmb3JtYXQgb2YgdGhlIGRlc3RpbmF0aW9uIHRleHR1cmUgaXMgCi0gICAgREVQVEhf
Q09NUE9ORU5UIG9yIERFUFRIX1NURU5DSUxfT0VTLgotCi0gICAgVGV4U3ViSW1hZ2UyRCBnZW5l
cmF0ZXMgdGhlIElOVkFMSURfT1BFUkFUSU9OIGVycm9yIGlmIHRoZSBiYXNlIGludGVybmFsCi0g
ICAgZm9ybWF0IG9mIHRoZSB0ZXh0dXJlIGlzIERFUFRIX0NPTVBPTkVOVCBvciBERVBUSF9TVEVO
Q0lMX09FUy4iCi0KLSAgICBBZGQgYSBuZXcgc2VjdGlvbiBiZXR3ZWVuIHNlY3Rpb25zIDMuNy44
IGFuZCAzLjcuOToKLQotICAgICIzLjcuOC0xLzIgRGVwdGgvU3RlbmNpbCBUZXh0dXJlcwotCi0g
ICAgSWYgdGhlIGN1cnJlbnRseSBib3VuZCB0ZXh0dXJlJ3MgYmFzZSBpbnRlcm5hbCBmb3JtYXQg
aXMgREVQVEhfQ09NUE9ORU5UIG9yCi0gICAgREVQVEhfU1RFTkNJTF9PRVMsIHRoZW4gdGhlIG91
dHB1dCBvZiB0aGUgdGV4dHVyZSB1bml0IGlzIGFzIGRlc2NyaWJlZAotICAgIGJlbG93LiBPdGhl
cndpc2UsIHRoZSB0ZXh0dXJlIHVuaXQgb3BlcmF0ZXMgaW4gdGhlIG5vcm1hbCBtYW5uZXIuCi0K
LSAgICBMZXQgPERfdD4gYmUgdGhlIGRlcHRoIHRleHR1cmUgdmFsdWUsIHByb3ZpZGVkIGJ5IHRo
ZSBzaGFkZXIncyB0ZXh0dXJlIGxvb2t1cAotICAgIGZ1bmN0aW9uLiBUaGVuIHRoZSBlZmZlY3Rp
dmUgdGV4dHVyZSB2YWx1ZSBpcyBjb21wdXRlZCBhcyBmb2xsb3dzOgotICAgICAgICAgICAgPFRh
dT4gPSA8RF90PgotCi0gICAgSWYgdGhlIHRleHR1cmUgaW1hZ2UgaGFzIGEgYmFzZSBpbnRlcm5h
bCBmb3JtYXQgb2YgREVQVEhfU1RFTkNJTF9PRVMsIHRoZW4KLSAgICB0aGUgc3RlbmNpbCBpbmRl
eCB0ZXh0dXJlIGNvbXBvbmVudCBpcyBpZ25vcmVkLiAgVGhlIHRleHR1cmUgdmFsdWUgPFRhdT4g
ZG9lcwotICAgIG5vdCBpbmNsdWRlIGEgc3RlbmNpbCBpbmRleCBjb21wb25lbnQsIGJ1dCBpbmNs
dWRlcyBvbmx5IHRoZSBkZXB0aAotICAgIGNvbXBvbmVudC4KLQotICAgIFRoZSByZXN1bHRpbmcg
PFRhdT4gaXMgYXNzaWduZWQgdG8gPFJfdD4uIEluIHNvbWUgaW1wbGVtZW50YXRpb25zLCA8VGF1
PiBpcwotICAgIGFsc28gYXNzaWduZWQgdG8gPEdfdD4sIDxCX3Q+LCBvciA8QV90Pi4gVGh1cyBp
biB0YWJsZSAzLjEyLCB0ZXh0dXJlcyB3aXRoCi0gICAgZGVwdGggY29tcG9uZW50IGRhdGEgYmVo
YXZlIGFzIGlmIHRoZWlyIGJhc2UgaW50ZXJuYWwgZm9ybWF0IGlzIFJHQkEsIHdpdGgKLSAgICB2
YWx1ZXMgaW4gPEdfdD4sIDxCX3Q+LCBhbmQgPEFfdD4gYmVpbmcgaW1wbGVtZW50YXRpb24gZGVw
ZW5kZW50LiIKLQotICAgIEFkZCB0aGUgZm9sbG93aW5nIHRvIHNlY3Rpb24gMy43LjExICJNaXBt
YXAgR2VuZXJhdGlvbiI6Ci0KLSAgICAiSWYgdGhlIGxldmVsIHplcm8gYXJyYXkgY29udGFpbnMg
ZGVwdGggb3IgZGVwdGgtc3RlbmNpbCBkYXRhLCB0aGUKLSAgICAgZXJyb3IgSU5WQUxJRF9PUEVS
QVRJT04gaXMgZ2VuZXJhdGVkLiIKLQotICAgIEluc2VydCBhIG5ldyBwYXJhZ3JhcGggYWZ0ZXIg
dGhlIGZpcnN0IHBhcmFncmFwaCBvZiB0aGUgIlRleHR1cmUgQWNjZXNzIgotICAgIHN1YnNlY3Rp
b24gb2Ygc2VjdGlvbiAzLjguMiBvbiBwYWdlIDg3LCB3aGljaCBzYXlzOgotCi0gICAgIlRleHR1
cmUgbG9va3VwcyBpbnZvbHZpbmcgdGV4dHVyZXMgd2l0aCBkZXB0aCBjb21wb25lbnQgZGF0YSBn
ZW5lcmF0ZQotICAgIGEgdGV4dHVyZSBzb3VyY2UgY29sb3IgYnkgdXNpbmcgZGVwdGggZGF0YSBk
aXJlY3RseSwgYXMgZGVzY3JpYmVkIGluCi0gICAgc2VjdGlvbiAzLjcuOC0xLzIuICBUaGUgc3Rl
bmNpbCB0ZXh0dXJlIGludGVybmFsIGNvbXBvbmVudCBpcyBpZ25vcmVkCi0gICAgaWYgdGhlIGJh
c2UgaW50ZXJuYWwgZm9ybWF0IGlzIERFUFRIX1NURU5DSUxfT0VTLiIKLQotQWRkaXRpb25zIHRv
IENoYXB0ZXIgNCBvZiB0aGUgT3BlbkdMIEVTIDIuMCBzcGVjaWZpY2F0aW9uIChQZXItRnJhZ21l
bnQKLU9wZXJhdGlvbnMgYW5kIHRoZSBGcmFtZWJ1ZmZlcikKLQotICAgIEluIHNlY3Rpb24gNC40
LjUgIkZyYW1lYnVmZmVyIENvbXBsZXRlbmVzcyIsIHJlcGxhY2UgdGhlIHRoZSAzcmQKLSAgICBw
YXJhZ3JhcGggd2l0aCB0aGUgZm9sbG93aW5nIHRleHQ6Ci0KLSAgICAgIiogQW4gaW50ZXJuYWwg
Zm9ybWF0IGlzIGNvbG9yLXJlbmRlcmFibGUgaWYgaXQgaXMgb25lIG9mIHRoZSBmb3JtYXRzCi0g
ICAgICAgIGZyb20gdGFibGUgNC41IG5vdGVkIGFzIGNvbG9yLXJlbmRlcmFibGUgb3IgaWYgaXQg
aXMgdW5zaXplZCBmb3JtYXQKLSAgICAgICAgUkdCQSBvciBSR0IuIE5vIG90aGVyIGZvcm1hdHMs
IGluY2x1ZGluZyBjb21wcmVzc2VkIGludGVybmFsIGZvcm1hdHMsCi0gICAgICAgIGFyZSBjb2xv
ci1yZW5kZXJhYmxlLgotCi0gICAgICAqIEFuIGludGVybmFsIGZvcm1hdCBpcyBkZXB0aC1yZW5k
ZXJhYmxlIGlmIGl0IGlzIG9uZSBvZiB0aGUgc2l6ZWQKLSAgICAgICAgaW50ZXJuYWwgZm9ybWF0
cyBmcm9tIHRhYmxlIDQuNSBub3RlZCBhcyBkZXB0aC1yZW5kZXJhYmxlLCBpZiBpdAotICAgICAg
ICBpcyB0aGUgdW5zaXplZCBmb3JtYXQgREVQVEhfQ09NUE9ORU5UIG9yIGlmIGl0IGlzIHRoZSBp
bnRlcm5hbCAKLSAgICAgICAgZm9ybWF0IHZhbHVlIG9mIERFUFRIMjRfU1RFTkNJTDhfT0VTLiBO
byBvdGhlciBmb3JtYXRzIGFyZSAKLSAgICAgICAgZGVwdGgtcmVuZGVyYWJsZS4KLQotICAgICAg
KiBBbiBpbnRlcm5hbCBmb3JtYXQgaXMgc3RlbmNpbC1yZW5kZXJhYmxlIGlmIGl0IGlzIG9uZSBv
ZiB0aGUgc2l6ZWQgCi0gICAgICAgIGludGVybmFsIGZvcm1hdHMgZnJvbSB0YWJsZSA0LjUgbm90
ZWQgYXMgc3RlbmNpbC1yZW5kZXJhYmxlIG9yIGlmIGl0Ci0gICAgICAgIGlzIERFUFRIMjRfU1RF
TkNJTDhfT0VTLiBObyBvdGhlciBmb3JtYXRzIGFyZSBzdGVuY2lsLXJlbmRlcmFibGUuIgotCi1B
ZGRpdGlvbnMgdG8gQ2hhcHRlciA1IG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmljYXRpb24g
KFNwZWNpYWwKLUZ1bmN0aW9ucykKLQotICAgIE5vbmUuCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVy
IDYgb2YgdGhlIE9wZW5HTCBFUyAyLjAgU3BlY2lmaWNhdGlvbiAoU3RhdGUgYW5kIFN0YXRlCi1S
ZXF1ZXN0cykKLQotICAgIE5vbmUuCi0KLUludGVyYWN0aW9ucyB3aXRoIE9FU19wYWNrZWRfZGVw
dGhfc3RlbmNpbAotCi0gICAgSWYgT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIGlzIG5vdCBzdXBw
b3J0ZWQsIG1lbnRpb25zIG9mCi0gICAgREVQVEhfU1RFTkNJTF9PRVMgYW5kIFVOU0lHTkVEX0lO
VF8yNF84X09FUyBhcyBhIGZvcm1hdC90eXBlIGNvbWJpbmF0aW9ucwotICAgIGZvciBUZXhJbWFn
ZTJEIGFuZCBUZXhTdWJJbWFnZTJEIGFyZSBvbWl0dGVkLiBNZW50aW9ucyBvZgotICAgIHRoZSBp
bnRlcm5hbCBmb3JtYXQgREVQVEgyNF9TVEVOQ0lMOF9PRVMgYXJlIGFsc28gb21pdHRlZC4KLQot
SW50ZXJhY3Rpb25zIHdpdGggRVhUX3RleHR1cmVfc3RvcmFnZQotCi0gICAgSWYgRVhUX3RleHR1
cmVfc3RvcmFnZSBpcyBzdXBwb3J0ZWQgdGhlIGZvbGxvd2luZyBpbnRlcm5hbGZvcm1hdAotICAg
IHRvIGZvcm1hdC90eXBlIG1hcHBpbmdzIGFyZSB1c2VkOgotCi0gICAgICAgIDxpbnRlcm5hbGZv
cm1hdD4gICAgICAgPGZvcm1hdD4gICAgICAgICAgIDx0eXBlPgotICAgICAgICAtLS0tLS0tLS0t
LS0tLS0tICAgICAgIC0tLS0tLS0tICAgICAgICAgICAtLS0tLS0KLSAgICAgICAgREVQVEhfQ09N
UE9ORU5UMTYgICAgICBERVBUSF9DT01QT05FTlQgICAgVU5TSUdORURfU0hPUlQKLSAgICAgICAg
REVQVEhfQ09NUE9ORU5UMzJfT0VTICBERVBUSF9DT01QT05FTlQgICAgVU5TSUdORURfSU5UCi0g
ICAgICAgIERFUFRIMjRfU1RFTkNJTDhfT0VTICAgREVQVEhfU1RFTkNJTF9PRVMgIFVOU0lHTkVE
X0lOVAotCi0gICAgVGV4dHVyZXMgd2l0aCB0aGUgYWJvdmUgPGludGVybmFsZm9ybWF0cz4gb25s
eSBzdXBwb3J0IG9uZSBsZXZlbCBvZgotICAgIGltYWdlIGRhdGEuIFNwZWNpZnlpbmcgYSB2YWx1
ZSBvdGhlciB0aGFuIG9uZSBmb3IgdGhlIDxsZXZlbHM+IHBhcmFtZXRlcgotICAgIHRvIFRleFN0
b3JhZ2UyREVYVCB3aWxsIHJlc3VsdCBpbiBhbiBJTlZBTElEX09QRVJBVElPTiBlcnJvci4KLQot
ICAgIElmIEVYVF90ZXh0dXJlX3N0b3JhZ2UgaXMgbm90IHN1cHBvcnRlZCwgaWdub3JlIGFueSBy
ZWZlcmVuY2VzCi0gICAgdG8gVGV4U3RvcmFnZTJERVhULiAKLQotRXJyb3JzCi0KLSAgICBUaGUg
ZXJyb3IgSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGJ5IFRleEltYWdlMkQgaWYgPGZv
cm1hdD4gYW5kIAotICAgIDxpbnRlcm5hbGZvcm1hdD4gYXJlIERFUFRIX0NPTVBPTkVOVCBhbmQg
PHR5cGU+IGlzIG5vdCBVTlNJR05FRF9TSE9SVCwKLSAgICBvciBVTlNJR05FRF9JTlQuCi0KLSAg
ICBUaGUgZXJyb3IgSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGJ5IFRleFN1YkltYWdl
MkQgaWYgPGZvcm1hdD4gaXMgCi0gICAgREVQVEhfQ09NUE9ORU5UIGFuZCA8dHlwZT4gaXMgbm90
IFVOU0lHTkVEX1NIT1JULCBvciBVTlNJR05FRF9JTlQuCi0KLSAgICBUaGUgZXJyb3IgSU5WQUxJ
RF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGJ5IFRleEltYWdlMkQgaWYgPGZvcm1hdD4gYW5kCi0g
ICAgPGludGVybmFsZm9ybWF0PiBhcmUgbm90IERFUFRIX0NPTVBPTkVOVCBhbmQgPHR5cGU+IGlz
IFVOU0lHTkVEX1NIT1JULAotICAgIG9yIFVOU0lHTkVEX0lOVC4KLQotICAgIFRoZSBlcnJvciBJ
TlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgYnkgVGV4U3ViSW1hZ2UyRCBpZiA8Zm9ybWF0
PiBpcwotICAgIG5vdCBERVBUSF9DT01QT05FTlQgYW5kIDx0eXBlPiBpcyBVTlNJR05FRF9TSE9S
VCwgb3IgVU5TSUdORURfSU5ULgotCi0gICAgVGhlIGVycm9yIElOVkFMSURfT1BFUkFUSU9OIGlz
IGdlbmVyYXRlZCBieSBUZXhJbWFnZTJEIGlmIDxmb3JtYXQ+IGFuZAotICAgIDxpbnRlcm5hbGZv
cm1hdD4gYXJlIERFUFRIX1NURU5DSUxfT0VTIGFuZCA8dHlwZT4gaXMgbm90Ci0gICAgVU5TSUdO
RURfSU5UXzI0XzhfT0VTLiAKLQotICAgIFRoZSBlcnJvciBJTlZBTElEX09QRVJBVElPTiBpcyBn
ZW5lcmF0ZWQgYnkgVGV4U3ViSW1hZ2UyRCBpZiA8Zm9ybWF0PgotICAgIGlzIERFUFRIX1NURU5D
SUxfT0VTIGFuZCA8dHlwZT4gaXMgbm90IFVOU0lHTkVEX0lOVF8yNF84X09FUy4gCi0KLSAgICBU
aGUgZXJyb3IgSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGJ5IFRleEltYWdlMkQgaWYg
PGZvcm1hdD4gYW5kCi0gICAgPGludGVybmFsZm9ybWF0PiBpcyBub3QgREVQVEhfU1RFTkNJTF9P
RVMgYW5kIDx0eXBlPiBpcyAKLSAgICBVTlNJR05FRF9JTlRfMjRfOF9PRVMuCi0KLSAgICBUaGUg
ZXJyb3IgSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGJ5IFRleFN1YkltYWdlMkQgaWYg
PGZvcm1hdD4KLSAgICBpcyBub3QgREVQVEhfU1RFTkNJTF9PRVMgYW5kIDx0eXBlPiBpcyBVTlNJ
R05FRF9JTlRfMjRfOF9PRVMuCi0KLSAgICBUaGUgZXJyb3IgSU5WQUxJRF9PUEVSQVRJT04gaXMg
Z2VuZXJhdGVkIGluIHRoZSBmb2xsb3dpbmcgc2l0dWF0aW9uczoKLSAgICAtIFRleEltYWdlMkQg
aXMgY2FsbGVkIHdpdGggPGZvcm1hdD4gYW5kIDxpbnRlcm5hbGZvcm1hdD4gb2YKLSAgICAgIERF
UFRIX0NPTVBPTkVOVCBvciBERVBUSF9TVEVOQ0lMX09FUyBhbmQKLSAgICAgICAtIDx0YXJnZXQ+
IGlzIG5vdCBURVhUVVJFXzJELAotICAgICAgIC0gPGRhdGE+IGlzIG5vdCBOVUxMLCBvcgotICAg
ICAgIC0gPGxldmVsPiBpcyBub3QgemVyby4KLSAgICAtIFRleFN1YkltYWdlMkQgaXMgY2FsbGVk
IHdpdGggPGZvcm1hdD4gb2YgREVQVEhfQ09NUE9ORU5UIG9yIAotICAgICAgREVQVEhfU1RFTkNJ
TF9PRVMuCi0gICAgLSBUZXhTdG9yYWdlMkRFWFQgaXMgY2FsbGVkIHdpdGggPGludGVybmFsZm9y
bWF0PiBvZiBERVBUSF9DT01QT05FTlQxNiwKLSAgICAgIERFUFRIX0NPTVBPTkVOVDMyX09FUywg
b3IgREVQVEgyNF9TVEVOQ0lMOF9PRVMsIGFuZCAKLSAgICAgICAtIDx0YXJnZXQ+IGlzIG5vdCBU
RVhUVVJFXzJELCBvcgotICAgICAgIC0gPGxldmVscz4gaXMgbm90IG9uZS4KLSAgICAtIENvcHlU
ZXhJbWFnZTJEIGlzIGNhbGxlZCB3aXRoIGFuIDxpbnRlcm5hbGZvcm1hdD4gdGhhdCBoYXMgYSBi
YXNlCi0gICAgICBpbnRlcm5hbCBmb3JtYXQgb2YgREVQVEhfQ09NUE9ORU5UIG9yIERFUFRIX1NU
RU5DSUxfT0VTLgotICAgIC0gQ29weVRleFN1YkltYWdlMkQgaXMgY2FsbGVkIHdpdGggYSB0YXJn
ZXQgdGV4dHVyZSB0aGF0IGhhcyBhIGJhc2UKLSAgICAgIGludGVybmFsIGZvcm1hdCBvZiBERVBU
SF9DT01QT05FTlQgb3IgREVQVEhfU1RFTkNJTF9PRVMuCi0gICAgLSBHZW5lcmF0ZU1pcG1hcCBp
cyBjYWxsZWQgb24gYSB0ZXh0dXJlIHRoYXQgaGFzIGEgYmFzZSBpbnRlcm5hbCBmb3JtYXQKLSAg
ICAgIG9mIERFUFRIX0NPTVBPTkVOVCBvciBERVBUSF9TVEVOQ0lMX09FUy4KLSAgICAKLU5ldyBT
dGF0ZQotCi0gICAgTm9uZS4KLQotSXNzdWVzCi0KLSAgICAxKSBXaGF0IGFyZSB0aGUgZGlmZmVy
ZW5jZXMgYmV0d2VlbiB0aGlzIGV4dGVuc2lvbiBhbmQgT0VTX2RlcHRoX3RleHR1cmUKLSAgICAg
ICBhbmQgT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsPwotICAgIAotICAgICAgIFJFU09MVkVEOiBU
aGlzIGV4dGVuc2lvbjoKLSAgICAgICAgIC0gZG9lcyBub3Qgc3VwcG9ydCBsb2FkaW5nIHByZS1i
YWtlZCBkZXB0aCBzdGVuY2lsIGRhdGEgdmlhIAotICAgICAgICAgICBUZXhJbWFnZTJEIG9yIFRl
eFN1YkltYWdlMkQuCi0gICAgICAgICAtIGFsbG93cyB2YXJpYWJpbGl0eSBpbiB0aGUgeS0sIHot
LCBhbmQgdy1jb21wb25lbnRzIG9mIHRoZSBzYW1wbGUKLSAgICAgICAgICAgcmVzdWx0cyBmcm9t
IGRlcHRoIHRleHR1cmVzLgotICAgICAgICAgLSBvbmx5IHN1cHBvcnRzIG9uZSBsZXZlbCB0ZXh0
dXJlcy4KLSAgICAgICAgIC0gZXhwbGljaXRseSBsaXN0cyB0aGUgZXJyb3JzIGZvciB1bnN1cHBv
cnRlZCBmdW5jdGlvbmFsaXR5LgotICAgICAgICAgICBTaW5jZSB0aGVzZSB3ZXJlIG5vdCBjbGVh
cmx5IHNwZWNpZmllZCBpbiB0aGUgT0VTX2RlcHRoX3RleHR1cmUKLSAgICAgICAgICAgZXh0ZW5z
aW9uIHRoZXJlIG1heSBiZSBkaWZmZXJlbmNlcyBpbiBlcnJvciB2YWx1ZXMgYmV0d2VlbiAKLSAg
ICAgICAgICAgaW1wbGVtZW50YXRpb25zIG9mIE9FU19kZXB0aF90ZXh0dXJlIGFuZCBBTkdMRV9k
ZXB0aF90ZXh0dXJlLgotICAgICAgIFRoaXMgc3BlY2lmaWNhdGlvbiB3YXMgYWxzbyByZWJhc2Vk
IHRvIGFwcGx5IGFnYWluc3QgdGhlIE9wZW5HTCBFUyAyLjAKLSAgICAgICBzcGVjaWZpY2F0aW9u
IGluc3RlYWQgb2YgdGhlIE9wZW5HTCBzcGVjaWZpY2F0aW9uLCBtYWtpbmcgaXQgbW9yZSAKLSAg
ICAgICBvYnZpb3VzIHdoYXQgYWxsIHRoZSBmdW5jdGlvbmFsaXR5IGNoYW5nZXMgYXJlLgotCi0g
ICAgMikgV2h5IGRvZXMgVGV4U3ViSW1hZ2UyRCBhY2NlcHQgdGhlIG5ldyBmb3JtYXQvdHlwZSBj
b21iaW5hdGlvbnMgZXZlbgotICAgICAgIHRob3VnaCBpdCBkb2VzIG5vdCBhY3R1YWxseSBzdXBw
b3J0IGxvYWRpbmcgZGF0YT8KLQotICAgICAgIFJFU09MVkVEOiBUaGlzIHdhcyBkb25lIHRvIGJl
IG1vcmUgY29uc2lzdGVudCB3aXRoIHRoZSBPRVNfZGVwdGhfdGV4dHVyZQotICAgICAgIGV4dGVu
c2lvbiBhbmQgdG8gbWFrZSBpdCBlYXNpZXIgdG8gYWRkIHN1cHBvcnQgZm9yIGxvYWRpbmcgdGV4
dHVyZQotICAgICAgIGRhdGEgaWYgaXQgaXMgcG9zc2libGUgdG8gc3VwcG9ydCBpbiB0aGUgZnV0
dXJlLgotCi0gICAgMykgV2h5IGFyZSBvbmx5IDEtbGV2ZWwgZGVwdGggdGV4dHVyZXMgc3VwcG9y
dGVkPyAKLQotICAgICAgIFJFU09MVkVEOiBUaGUgb25seSB1c2UgZm9yIG11bHRpcGxlIGxldmVs
cyBvZiBkZXB0aCB0ZXh0dXJlcyB3b3VsZAotICAgICAgIGJlIGZvciBmaXRsZXJlZCB0ZXh0dXJp
bmcuIEhvd2V2ZXIgc2luY2UgaXQgaXMgbm90IHBvc3NpYmxlIHRvCi0gICAgICAgcmVuZGVyIHRv
IG5vbi16ZXJvLWxldmVsIHRleHR1cmUgbGV2ZWxzIGluIE9wZW5HTCBFUyAyLjAsIGFuZCBzaW5j
ZQotICAgICAgIHRoaXMgZXh0ZW5zaW9uIGZvcmJpZHMgbG9hZGluZyBleGlzdGluZyBkYXRhIGFu
ZCBHZW5lcmF0ZU1pcG1hcCBvbiAKLSAgICAgICBkZXB0aCB0ZXh0dXJlcywgaXQgaXMgaW1wb3Nz
aWJsZSB0byBpbml0aWFsaXplIG9yIHNwZWNpZnkgY29udGVudHMKLSAgICAgICBmb3Igbm9uLXpl
cm8gbGV2ZWxzIG9mIGRlcHRoIHRleHR1cmVzLgotCi1SZXZpc2lvbiBIaXN0b3J5Ci0gCi0gICAg
MDIvMjUvMjAxMyAgc3dvb2RzICByZXZpc2UgdG8gYWxsb3cgdGV4dHVyZSBsb29rdXAgdG8gZ3Vh
cmFudGVlIGRlcHRoIHZhbHVlcwotICAgICAgICAgICAgICAgICAgICAgICAgb25seSBpbiByZWQg
Y2hhbm5lbCBvZiBzYW1wbGUgcmVzdWx0LgotICAgIDA2LzA0LzIwMTIgIGRna29jaCAgZml4IGVy
cm9ycywgZGlzYWxsb3cgbXVsdGktbGV2ZWwgZGVwdGggdGV4dHVyZXMuCi0gICAgMDUvMzAvMjAx
MiAgZGdrb2NoICBtaW5vciB1cGRhdGVzIGFuZCBhZGQgaXNzdWVzLgotICAgIDA1LzIzLzIwMTIg
IGRna29jaCAgaW50aWFsIHJldmlzaW9uIGJhc2VkIG9uIE9FU19kZXB0aF90ZXh0dXJlIGFuZCAK
LSAgICAgICAgICAgICAgICAgICAgICAgIE9FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCBhbmQgcmVi
YXNlZCBhZ2FpbnN0IHRoZSBFUyAyLjAgc3BlYwotCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9leHRlbnNpb25zL0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvQU5HTEVfZnJhbWVidWZmZXJfYmxp
dC50eHQJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVu
c2lvbnMvQU5HTEVfZnJhbWVidWZmZXJfYmxpdC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSw0Mzcg
KzAsMCBAQAotTmFtZQotCi0gICAgQU5HTEVfZnJhbWVidWZmZXJfYmxpdAotCi1OYW1lIFN0cmlu
Z3MKLQotICAgIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQKLQotQ29udHJpYnV0b3JzCi0KLSAg
ICBDb250cmlidXRvcnMgdG8gRVhUX2ZyYW1lYnVmZmVyX2JsaXQKLSAgICBEYW5pZWwgS29jaCwg
VHJhbnNHYW1pbmcgSW5jLgotICAgIFNoYW5ub24gV29vZHMsIFRyYW5zR2FtaW5nIEluYy4KLSAg
ICBLZW5uZXRoIFJ1c3NlbGwsIEdvb2dsZSBJbmMuCi0gICAgVmFuZ2VsaXMgS29ra2V2aXMsIEdv
b2dsZSBJbmMuCi0KLUNvbnRhY3QKLQotICAgIERhbmllbCBLb2NoLCBUcmFuc0dhbWluZyBJbmMu
IChkYW5pZWwgJ2F0JyB0cmFuc2dhbWluZyAnZG90JyBjb20pCi0KLVN0YXR1cwotCi0gICAgSW1w
bGVtZW50ZWQgaW4gQU5HTEUgRVMyCi0KLVZlcnNpb24KLQotICAgIExhc3QgTW9kaWZpZWQgRGF0
ZTogU2VwdCAyMiwgMjAxMgotICAgIEF1dGhvciBSZXZpc2lvbjogNAotCi1OdW1iZXIKLQotICAg
IE9wZW5HTCBFUyBFeHRlbnNpb24gIzgzCi0KLURlcGVuZGVuY2llcwotCi0gICAgT3BlbkdMIEVT
IDIuMCBpcyByZXF1aXJlZC4KLQotICAgIFRoZSBleHRlbnNpb24gaXMgd3JpdHRlbiBhZ2FpbnN0
IHRoZSBPcGVuR0wgRVMgMi4wIHNwZWNpZmljYXRpb24uCi0KLSAgICBPRVNfdGV4dHVyZV8zRCBh
ZmZlY3RzIHRoZSBkZWZpbml0aW9uIG9mIHRoaXMgZXh0ZW5zaW9uLgotCi1PdmVydmlldwotCi0g
ICAgVGhpcyBleHRlbnNpb24gbW9kaWZpZXMgZnJhbWVidWZmZXIgb2JqZWN0cyBieSBzcGxpdHRp
bmcgdGhlCi0gICAgZnJhbWVidWZmZXIgb2JqZWN0IGJpbmRpbmcgcG9pbnQgaW50byBzZXBhcmF0
ZSBEUkFXIGFuZCBSRUFECi0gICAgYmluZGluZ3MuICBUaGlzIGFsbG93cyBjb3B5aW5nIGRpcmVj
dGx5IGZyb20gb25lIGZyYW1lYnVmZmVyIHRvCi0gICAgYW5vdGhlci4gIEluIGFkZGl0aW9uLCBh
IG5ldyBoaWdoIHBlcmZvcm1hbmNlIGJsaXQgZnVuY3Rpb24gaXMKLSAgICBhZGRlZCB0byBmYWNp
bGl0YXRlIHRoZXNlIGJsaXRzIGFuZCBwZXJmb3JtIHNvbWUgZGF0YSBjb252ZXJzaW9uCi0gICAg
d2hlcmUgYWxsb3dlZC4KLQotSVAgU3RhdHVzCi0KLSAgICBObyBrbm93biBJUCBjbGFpbXMuCi0K
LU5ldyBQcm9jZWR1cmVzIGFuZCBGdW5jdGlvbnMKLQotICAgIHZvaWQgQmxpdEZyYW1lYnVmZmVy
QU5HTEUoaW50IHNyY1gwLCBpbnQgc3JjWTAsIGludCBzcmNYMSwgaW50IHNyY1kxLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRzdFgwLCBpbnQgZHN0WTAsIGludCBkc3RYMSwg
aW50IGRzdFkxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0ZmllbGQgbWFzaywg
ZW51bSBmaWx0ZXIpOwotCi1OZXcgVG9rZW5zCi0KLSAgICBBY2NlcHRlZCBieSB0aGUgPHRhcmdl
dD4gcGFyYW1ldGVyIG9mIEJpbmRGcmFtZWJ1ZmZlciwKLSAgICBDaGVja0ZyYW1lYnVmZmVyU3Rh
dHVzLCBGcmFtZWJ1ZmZlclRleHR1cmUyRCwgRnJhbWVidWZmZXJUZXh0dXJlM0RPRVMsCi0gICAg
RnJhbWVidWZmZXJSZW5kZXJidWZmZXIsIGFuZAotICAgIEdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcml2OgotCi0gICAgLy8gKHJldXNpbmcgdGhlIHRva2VucyBmcm9tIEVYVF9mcmFt
ZWJ1ZmZlcl9ibGl0KQotICAgIFJFQURfRlJBTUVCVUZGRVJfQU5HTEUgICAgICAgICAgICAgICAg
MHg4Q0E4Ci0gICAgRFJBV19GUkFNRUJVRkZFUl9BTkdMRSAgICAgICAgICAgICAgICAweDhDQTkK
LQotICAgIEFjY2VwdGVkIGJ5IHRoZSA8cG5hbWU+IHBhcmFtZXRlcnMgb2YgR2V0SW50ZWdlcnYg
YW5kIEdldEZsb2F0djoKLQotICAgIC8vIChyZXVzaW5nIHRoZSB0b2tlbnMgZnJvbSBFWFRfZnJh
bWVidWZmZXJfYmxpdCkKLSAgICBEUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkdfQU5HTEUgICAgICAg
IDB4OENBNiAvLyBhbGlhcyBGUkFNRUJVRkZFUl9CSU5ESU5HCi0gICAgUkVBRF9GUkFNRUJVRkZF
Ul9CSU5ESU5HX0FOR0xFICAgICAgICAweDhDQUEKLQotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciAz
IG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmljYXRpb24gKFJhc3Rlcml6YXRpb24pCi0KLSAg
ICBDaGFuZ2UgdGhlIGxhc3QgcGFyYWdyYXBoIG9mIHNlY3Rpb24gMy43LjIgKEFsdGVybmF0ZSBU
ZXh0dXJlIEltYWdlCi0gICAgU3BlY2lmaWNhdGlvbiBDb21tYW5kcykgdG86Ci0KLSAgICAiQ2Fs
bGluZyBDb3B5VGV4U3ViSW1hZ2UzRE9FUywgQ29weVRleEltYWdlMkQgb3IgQ29weVRleFN1Yklt
YWdlMkQgd2lsbAotICAgIHJlc3VsdCBpbiBhbiBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElP
TiBlcnJvciBpZiB0aGUgb2JqZWN0IGJvdW5kCi0gICAgdG8gUkVBRF9GUkFNRUJVRkZFUl9CSU5E
SU5HX0FOR0xFIGlzIG5vdCAiZnJhbWVidWZmZXIgY29tcGxldGUiCi0gICAgKHNlY3Rpb24gNC40
LjQuMikuIgotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciA0IG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNw
ZWNpZmljYXRpb24gKFBlci1GcmFnbWVudAotT3BlcmF0aW9ucyBhbmQgdGhlIEZyYW1lYnVmZmVy
KQotCi0gICAgQ2hhbmdlIHRoZSBmaXJzdCB3b3JkIG9mIENoYXB0ZXIgNCBmcm9tICJUaGUiIHRv
ICJBIi4KLQotICAgIEFwcGVuZCB0byB0aGUgaW50cm9kdWN0aW9uIG9mIENoYXB0ZXIgNDoKLQot
ICAgICJDb25jZXB0dWFsbHksIHRoZSBHTCBoYXMgdHdvIGFjdGl2ZSBmcmFtZWJ1ZmZlcnM7IHRo
ZSBkcmF3Ci0gICAgZnJhbWVidWZmZXIgaXMgdGhlIGRlc3RpbmF0aW9uIGZvciByZW5kZXJpbmcg
b3BlcmF0aW9ucywgYW5kIHRoZQotICAgIHJlYWQgZnJhbWVidWZmZXIgaXMgdGhlIHNvdXJjZSBm
b3IgcmVhZGJhY2sgb3BlcmF0aW9ucy4gIFRoZSBzYW1lCi0gICAgZnJhbWVidWZmZXIgbWF5IGJl
IHVzZWQgZm9yIGJvdGggZHJhd2luZyBhbmQgcmVhZGluZy4gIFNlY3Rpb24KLSAgICA0LjQuMSBk
ZXNjcmliZXMgdGhlIG1lY2hhbmlzbSBmb3IgY29udHJvbGxpbmcgZnJhbWVidWZmZXIgdXNhZ2Uu
IgotCi0gICAgTW9kaWZ5IHRoZSBmaXJzdCBzZW50ZW5jZSBvZiB0aGUgbGFzdCBwYXJhZ3JhcGgg
b2Ygc2VjdGlvbiA0LjEuMSBhcyBmb2xsb3dzOgotCi0gICAgIldoaWxlIGFuIGFwcGxpY2F0aW9u
LWNyZWF0ZWQgZnJhbWVidWZmZXIgb2JqZWN0IGlzIGJvdW5kIHRvCi0gICAgRFJBV19GUkFNRUJV
RkZFUl9BTkdMRSwgdGhlIHBpeGVsIG93bmVyc2hpcCB0ZXN0IGFsd2F5cyBwYXNzZXMuIgotCi0g
ICAgQWRkIHRvIDQuMy4xIChSZWFkaW5nIFBpeGVscyksIHJpZ2h0IGJlZm9yZSB0aGUgc3Vic2Vj
dGlvbiB0aXRsZWQKLSAgICAiT2J0YWluaW5nIFBpeGVscyBmcm9tIHRoZSBGcmFtZWJ1ZmZlciI6
Ci0KLSAgICAiQ2FsbGluZyBSZWFkUGl4ZWxzIGdlbmVyYXRlcyBJTlZBTElEX0ZSQU1FQlVGRkVS
X09QRVJBVElPTiBpZgotICAgIHRoZSBvYmplY3QgYm91bmQgdG8gUkVBRF9GUkFNRUJVRkZFUl9C
SU5ESU5HX0FOR0xFIGlzIG5vdCAiZnJhbWVidWZmZXIKLSAgICBjb21wbGV0ZSIgKHNlY3Rpb24g
NC40LjQuMikuIEdldEludGVnZXJ2IGdlbmVyYXRlcyBhbiBJTlZBTElEX09QRVJBVElPTgotICAg
IGVycm9yIGlmIHRoZSBvYmplY3QgYm91bmQgdG8gUkVBRF9GUkFNRUJVRkZFUl9CSU5ESU5HX0FO
R0xFIGlzIG5vdAotICAgIGZyYW1lYnVmZmVyIGNvbXBsZXRlLCBvciBpZiB0aGUgR0wgaXMgdXNp
bmcgYSBmcmFtZWJ1ZmZlciBvYmplY3QgCi0gICAgKGkuZS4gUkVBRF9GUkFNRUJVRkZFUl9CSU5E
SU5HX0FOR0xFIGlzIG5vbi16ZXJvKSBhbmQgdGhlcmUgaXMgbm8gY29sb3IKLSAgICBhdHRhY2ht
ZW50LiIKLQotICAgIEluc2VydCBhIG5ldyBzZWN0aW9uIDQuMy4yIHRpdGxlZCAiQ29weWluZyBQ
aXhlbHMiIGFuZCByZW51bWJlciB0aGUKLSAgICBzdWJzZXF1ZW50IHNlY3Rpb25zLiAgQWRkIHRo
ZSBmb2xsb3dpbmcgdGV4dDoKLQotICAgICJCbGl0RnJhbWVidWZmZXJBTkdMRSB0cmFuc2ZlcnMg
YSByZWN0YW5nbGUgb2YgcGl4ZWwgdmFsdWVzIGZyb20gb25lCi0gICAgcmVnaW9uIG9mIHRoZSBy
ZWFkIGZyYW1lYnVmZmVyIHRvIGFub3RoZXIgaW4gdGhlIGRyYXcgZnJhbWVidWZmZXIuCi0KLSAg
ICBCbGl0RnJhbWVidWZmZXJBTkdMRShpbnQgc3JjWDAsIGludCBzcmNZMCwgaW50IHNyY1gxLCBp
bnQgc3JjWTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRzdFgwLCBpbnQgZHN0WTAs
IGludCBkc3RYMSwgaW50IGRzdFkxLAotICAgICAgICAgICAgICAgICAgICAgICAgIGJpdGZpZWxk
IG1hc2ssIGVudW0gZmlsdGVyKTsKLQotICAgIDxtYXNrPiBpcyB0aGUgYml0d2lzZSBPUiBvZiBh
IG51bWJlciBvZiB2YWx1ZXMgaW5kaWNhdGluZyB3aGljaAotICAgIGJ1ZmZlcnMgYXJlIHRvIGJl
IGNvcGllZC4gVGhlIHZhbHVlcyBhcmUgQ09MT1JfQlVGRkVSX0JJVCwKLSAgICBERVBUSF9CVUZG
RVJfQklULCBhbmQgU1RFTkNJTF9CVUZGRVJfQklULCB3aGljaCBhcmUgZGVzY3JpYmVkIGluCi0g
ICAgc2VjdGlvbiA0LjIuMy4gIFRoZSBwaXhlbHMgY29ycmVzcG9uZGluZyB0byB0aGVzZSBidWZm
ZXJzIGFyZQotICAgIGNvcGllZCBmcm9tIHRoZSBzb3VyY2UgcmVjdGFuZ2xlLCBib3VuZCBieSB0
aGUgbG9jYXRpb25zIChzcmNYMCwKLSAgICBzcmNZMCkgYW5kIChzcmNYMSwgc3JjWTEpLCB0byB0
aGUgZGVzdGluYXRpb24gcmVjdGFuZ2xlLCBib3VuZCBieQotICAgIHRoZSBsb2NhdGlvbnMgKGRz
dFgwLCBkc3RZMCkgYW5kIChkc3RYMSwgZHN0WTEpLiAgVGhlIGxvd2VyIGJvdW5kcwotICAgIG9m
IHRoZSByZWN0YW5nbGUgYXJlIGluY2x1c2l2ZSwgd2hpbGUgdGhlIHVwcGVyIGJvdW5kcyBhcmUK
LSAgICBleGNsdXNpdmUuCi0KLSAgICBUaGUgYWN0dWFsIHJlZ2lvbiB0YWtlbiBmcm9tIHRoZSBy
ZWFkIGZyYW1lYnVmZmVyIGlzIGxpbWl0ZWQgdG8gdGhlCi0gICAgaW50ZXJzZWN0aW9uIG9mIHRo
ZSBzb3VyY2UgYnVmZmVycyBiZWluZyB0cmFuc2ZlcnJlZCwgd2hpY2ggbWF5IGluY2x1ZGUKLSAg
ICB0aGUgY29sb3IgYnVmZmVyLCB0aGUgZGVwdGggYnVmZmVyLCBhbmQvb3IgdGhlIHN0ZW5jaWwg
YnVmZmVyIGRlcGVuZGluZyBvbgotICAgIDxtYXNrPi4gVGhlIGFjdHVhbCByZWdpb24gd3JpdHRl
biB0byB0aGUgZHJhdyBmcmFtZWJ1ZmZlciBpcyBsaW1pdGVkIHRvIHRoZQotICAgIGludGVyc2Vj
dGlvbiBvZiB0aGUgZGVzdGluYXRpb24gYnVmZmVycyBiZWluZyB3cml0dGVuLCB3aGljaCBtYXkg
aW5jbHVkZQotICAgIHRoZSBjb2xvciBidWZmZXIsIHRoZSBkZXB0aCBidWZmZXIsIGFuZC9vciB0
aGUgc3RlbmNpbCBidWZmZXIKLSAgICBkZXBlbmRpbmcgb24gPG1hc2s+LiBXaGV0aGVyIG9yIG5v
dCB0aGUgc291cmNlIG9yIGRlc3RpbmF0aW9uIHJlZ2lvbnMgYXJlCi0gICAgYWx0ZXJlZCBkdWUg
dG8gdGhlc2UgbGltaXRzLCB0aGUgb2Zmc2V0IGFwcGxpZWQgdG8gcGl4ZWxzIGJlaW5nIHRyYW5z
ZmVycmVkCi0gICAgaXMgcGVyZm9ybWVkIGFzIHRob3VnaCBubyBzdWNoIGxpbWl0cyB3ZXJlIHBy
ZXNlbnQuCi0KLSAgICBTdHJldGNoaW5nIGFuZCBzY2FsaW5nIGR1cmluZyBhIGNvcHkgYXJlIG5v
dCBzdXBwb3J0ZWQuIElmIHRoZSBzb3VyY2UKLSAgICBhbmQgZGVzdGluYXRpb24gcmVjdGFuZ2xl
IGRpbWVuc2lvbnMgZG8gbm90IG1hdGNoLCBubyBjb3B5IGlzCi0gICAgcGVyZm9ybWVkIGFuZCBh
biBJTlZBTElEX09QRVJBVElPTiBlcnJvciBpcyBnZW5lcmF0ZWQuCi0gICAgQmVjYXVzZSBzdHJl
dGNoaW5nIGlzIG5vdCBzdXBwb3J0ZWQsIDxmaWx0ZXI+IG11c3QgYmUgTkVBUkVTVCBhbmQKLSAg
ICBubyBmaWx0ZXJpbmcgaXMgYXBwbGllZC4gCi0KLSAgICBGbGlwcGluZyBkdXJpbmcgYSBjb3B5
IGlzIG5vdCBzdXBwb3J0ZWQuIElmIGVpdGhlciB0aGUgc291cmNlIG9yIAotICAgIGRlc3RpbmF0
aW9uIHJlY3RhbmdsZSBzcGVjaWZpZXMgYSBuZWdhdGl2ZSBkaW1lbnNpb24sIHRoZSBlcnJvciAK
LSAgICBJTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQuIElmIGJvdGggdGhlIHNvdXJjZSBh
bmQgCi0gICAgZGVzdGluYXRpb24gcmVjdGFuZ2xlcyBzcGVjaWZ5IGEgbmVnYXRpdmUgZGltZW5z
aW9uIGZvciB0aGUgc2FtZSAKLSAgICBkaXJlY3Rpb24sIG5vIHJldmVyc2FsIGlzIHJlcXVpcmVk
IGFuZCB0aGUgb3BlcmF0aW9uIGlzIHN1cHBvcnRlZC4KLQotICAgIElmIHRoZSBzb3VyY2UgYW5k
IGRlc3RpbmF0aW9uIGJ1ZmZlcnMgYXJlIGlkZW50aWNhbCwgYW5kIHRoZQotICAgIHNvdXJjZSBh
bmQgZGVzdGluYXRpb24gcmVjdGFuZ2xlcyBvdmVybGFwLCB0aGUgcmVzdWx0IG9mIHRoZSBibGl0
Ci0gICAgb3BlcmF0aW9uIGlzIHVuZGVmaW5lZC4KLQotICAgIFRoZSBwaXhlbCBjb3B5IGJ5cGFz
c2VzIHRoZSBmcmFnbWVudCBwaXBlbGluZS4gIFRoZSBvbmx5IGZyYWdtZW50Ci0gICAgb3BlcmF0
aW9ucyB3aGljaCBhZmZlY3QgdGhlIGJsaXQgYXJlIHRoZSBwaXhlbCBvd25lcnNoaXAgdGVzdCBh
bmQKLSAgICB0aGUgc2Npc3NvciB0ZXN0LgotCi0gICAgSWYgYSBidWZmZXIgaXMgc3BlY2lmaWVk
IGluIDxtYXNrPiBhbmQgZG9lcyBub3QgZXhpc3QgaW4gYm90aCB0aGUKLSAgICByZWFkIGFuZCBk
cmF3IGZyYW1lYnVmZmVycywgdGhlIGNvcnJlc3BvbmRpbmcgYml0IGlzIHNpbGVudGx5Ci0gICAg
aWdub3JlZC4KLQotICAgIENhbGxpbmcgQmxpdEZyYW1lYnVmZmVyQU5HTEUgd2lsbCByZXN1bHQg
aW4gYW4KLSAgICBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiBlcnJvciBpZiB0aGUgb2Jq
ZWN0cyBib3VuZCB0bwotICAgIERSQVdfRlJBTUVCVUZGRVJfQklORElOR19BTkdMRSBhbmQgUkVB
RF9GUkFNRUJVRkZFUl9CSU5ESU5HX0FOR0xFIGFyZQotICAgIG5vdCAiZnJhbWVidWZmZXIgY29t
cGxldGUiIChzZWN0aW9uIDQuNC40LjIpLiIKLQotICAgIENhbGxpbmcgQmxpdEZyYW1lYnVmZmVy
QU5HTEUgd2lsbCByZXN1bHQgaW4gYW4gSU5WQUxJRF9PUEVSQVRJT04KLSAgICBlcnJvciBpZiA8
bWFzaz4gaW5jbHVkZXMgQ09MT1JfQlVGRkVSX0JJVCBhbmQgdGhlIHNvdXJjZSBhbmQgCi0gICAg
ZGVzdGluYXRpb24gY29sb3IgZm9ybWF0cyB0byBub3QgbWF0Y2guCi0KLSAgICBDYWxsaW5nIEJs
aXRGcmFtZWJ1ZmZlckFOR0xFIHdpbGwgcmVzdWx0IGluIGFuIElOVkFMSURfT1BFUkFUSU9OCi0g
ICAgZXJyb3IgaWYgPG1hc2s+IGluY2x1ZGVzIERFUFRIX0JVRkZFUl9CSVQgb3IgU1RFTkNJTF9C
VUZGRVJfQklUCi0gICAgYW5kIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGRlcHRoIGFuZCBz
dGVuY2lsIGJ1ZmZlciBmb3JtYXRzIGRvCi0gICAgbm90IG1hdGNoLgotCi0gICAgSWYgPG1hc2s+
IGluY2x1ZGVzIERFUFRIX0JVRkZFUl9CSVQgb3IgU1RFTkNJTF9CVUZGRVJfQklULCBvbmx5IAot
ICAgIGNvbXBsZXRlIGJ1ZmZlcnMgY2FuIGJlIGNvcGllZC4gIElmIHRoZSBzb3VyY2UgcmVjdGFu
Z2xlIGRvZXMgbm90IAotICAgIHNwZWNpZnkgdGhlIGNvbXBsZXRlIHNvdXJjZSBidWZmZXIgb3Ig
dGhlIGRlc3RpbmF0aW9uIHJlY3RhbmdsZSAKLSAgICAoYWZ0ZXIgZmFjdG9yaW5nIHRoZSBzY2lz
c29yIHJlZ2lvbiwgaWYgYXBwbGljYWJsZSkgZG9lcyBub3Qgc3BlY2lmeSAKLSAgICB0aGUgY29t
cGxldGUgZGVzdGluYXRpb24gYnVmZmVyLCBhbiBJTlZBTElEX09QRVJBVElPTgotICAgIGVycm9y
IGlzIGdlbmVyYXRlZC4KLQotICAgIE1vZGlmeSB0aGUgYmVnaW5uaW5nIG9mIHNlY3Rpb24gNC40
LjEgYXMgZm9sbG93czoKLQotICAgICJUaGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciBmb3IgcmVuZGVy
aW5nIGFuZCByZWFkYmFjayBvcGVyYXRpb25zIGlzCi0gICAgcHJvdmlkZWQgYnkgdGhlIHdpbmRv
d2luZyBzeXN0ZW0uICBJbiBhZGRpdGlvbiwgbmFtZWQgZnJhbWVidWZmZXIKLSAgICBvYmplY3Rz
IGNhbiBiZSBjcmVhdGVkIGFuZCBvcGVyYXRlZCB1cG9uLiAgVGhlIG5hbWVzcGFjZSBmb3IKLSAg
ICBmcmFtZWJ1ZmZlciBvYmplY3RzIGlzIHRoZSB1bnNpZ25lZCBpbnRlZ2Vycywgd2l0aCB6ZXJv
IHJlc2VydmVkCi0gICAgYnkgdGhlIEdMIGZvciB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlci4KLQot
ICAgIEEgZnJhbWVidWZmZXIgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgYmluZGluZyBhbiB1bnVzZWQg
bmFtZSB0bwotICAgIERSQVdfRlJBTUVCVUZGRVJfQU5HTEUgb3IgUkVBRF9GUkFNRUJVRkZFUl9B
TkdMRS4gIFRoZSBiaW5kaW5nIGlzCi0gICAgZWZmZWN0ZWQgYnkgY2FsbGluZwotCi0gICAgICAg
IHZvaWQgQmluZEZyYW1lYnVmZmVyKGVudW0gdGFyZ2V0LCB1aW50IGZyYW1lYnVmZmVyKTsKLQot
ICAgIHdpdGggPHRhcmdldD4gc2V0IHRvIHRoZSBkZXNpcmVkIGZyYW1lYnVmZmVyIHRhcmdldCBh
bmQKLSAgICA8ZnJhbWVidWZmZXI+IHNldCB0byB0aGUgdW51c2VkIG5hbWUuICBUaGUgcmVzdWx0
aW5nIGZyYW1lYnVmZmVyCi0gICAgb2JqZWN0IGlzIGEgbmV3IHN0YXRlIHZlY3RvciwgY29tcHJp
c2luZyBvbmUgc2V0IG9mIHRoZSBzdGF0ZSB2YWx1ZXMKLSAgICBsaXN0ZWQgaW4gdGFibGUgNi4y
MyBmb3IgZWFjaCBhdHRhY2htZW50IHBvaW50IG9mIHRoZQotICAgIGZyYW1lYnVmZmVyLCBzZXQg
dG8gdGhlIHNhbWUgaW5pdGlhbCB2YWx1ZXMuICBUaGVyZSBpcyBvbmUKLSAgICBjb2xvciBhdHRh
Y2htZW50IHBvaW50LCBwbHVzIG9uZSBlYWNoCi0gICAgZm9yIHRoZSBkZXB0aCBhbmQgc3RlbmNp
bCBhdHRhY2htZW50IHBvaW50cy4KLQotICAgIEJpbmRGcmFtZWJ1ZmZlciBtYXkgYWxzbyBiZSB1
c2VkIHRvIGJpbmQgYW4gZXhpc3RpbmcKLSAgICBmcmFtZWJ1ZmZlciBvYmplY3QgdG8gRFJBV19G
UkFNRUJVRkZFUl9BTkdMRSBvcgotICAgIFJFQURfRlJBTUVCVUZGRVJfQU5HTEUuICBJZiB0aGUg
YmluZCBpcyBzdWNjZXNzZnVsIG5vIGNoYW5nZSBpcyBtYWRlCi0gICAgdG8gdGhlIHN0YXRlIG9m
IHRoZSBib3VuZCBmcmFtZWJ1ZmZlciBvYmplY3QsIGFuZCBhbnkgcHJldmlvdXMKLSAgICBiaW5k
aW5nIHRvIDx0YXJnZXQ+IGlzIGJyb2tlbi4KLQotICAgIElmIGEgZnJhbWVidWZmZXIgb2JqZWN0
IGlzIGJvdW5kIHRvIERSQVdfRlJBTUVCVUZGRVJfQU5HTEUgb3IKLSAgICBSRUFEX0ZSQU1FQlVG
RkVSX0FOR0xFLCBpdCBiZWNvbWVzIHRoZSB0YXJnZXQgZm9yIHJlbmRlcmluZyBvcgotICAgIHJl
YWRiYWNrIG9wZXJhdGlvbnMsIHJlc3BlY3RpdmVseSwgdW50aWwgaXQgaXMgZGVsZXRlZCBvciBh
bm90aGVyCi0gICAgZnJhbWVidWZmZXIgaXMgYm91bmQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYmlu
ZCBwb2ludC4gIENhbGxpbmcKLSAgICBCaW5kRnJhbWVidWZmZXIgd2l0aCA8dGFyZ2V0PiBzZXQg
dG8gRlJBTUVCVUZGRVIgYmluZHMgdGhlCi0gICAgZnJhbWVidWZmZXIgdG8gYm90aCBEUkFXX0ZS
QU1FQlVGRkVSX0FOR0xFIGFuZCBSRUFEX0ZSQU1FQlVGRkVSX0FOR0xFLgotCi0gICAgV2hpbGUg
YSBmcmFtZWJ1ZmZlciBvYmplY3QgaXMgYm91bmQsIEdMIG9wZXJhdGlvbnMgb24gdGhlIHRhcmdl
dAotICAgIHRvIHdoaWNoIGl0IGlzIGJvdW5kIGFmZmVjdCB0aGUgaW1hZ2VzIGF0dGFjaGVkIHRv
IHRoZSBib3VuZAotICAgIGZyYW1lYnVmZmVyIG9iamVjdCwgYW5kIHF1ZXJpZXMgb2YgdGhlIHRh
cmdldCB0byB3aGljaCBpdCBpcyBib3VuZAotICAgIHJldHVybiBzdGF0ZSBmcm9tIHRoZSBib3Vu
ZCBvYmplY3QuICBRdWVyaWVzIG9mIHRoZSB2YWx1ZXMKLSAgICBzcGVjaWZpZWQgaW4gdGFibGUg
Ni4yMCAoSW1wbGVtZW50YXRpb24gRGVwZW5kZW50IFBpeGVsIERlcHRocykKLSAgICBhbmQgdGFi
bGUgNi55eSAoRnJhbWVidWZmZXIgRGVwZW5kZW50IFZhbHVlcykgYXJlCi0gICAgZGVyaXZlZCBm
cm9tIHRoZSBmcmFtZWJ1ZmZlciBvYmplY3QgYm91bmQgdG8gRFJBV19GUkFNRUJVRkZFUl9BTkdM
RS4KLQotICAgIFRoZSBpbml0aWFsIHN0YXRlIG9mIERSQVdfRlJBTUVCVUZGRVJfQU5HTEUgYW5k
IFJFQURfRlJBTUVCVUZGRVJfQU5HTEUKLSAgICByZWZlcnMgdG8gdGhlIGRlZmF1bHQgZnJhbWVi
dWZmZXIgcHJvdmlkZWQgYnkgdGhlIHdpbmRvd2luZwotICAgIHN5c3RlbS4gIEluIG9yZGVyIHRo
YXQgYWNjZXNzIHRvIHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyIGlzIG5vdAotICAgIGxvc3QsIGl0
IGlzIHRyZWF0ZWQgYXMgYSBmcmFtZWJ1ZmZlciBvYmplY3Qgd2l0aCB0aGUgbmFtZSBvZiAwLgot
ICAgIFRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyIGlzIHRoZXJlZm9yZSByZW5kZXJlZCB0byBhbmQg
cmVhZCBmcm9tCi0gICAgd2hpbGUgMCBpcyBib3VuZCB0byB0aGUgY29ycmVzcG9uZGluZyB0YXJn
ZXRzLiAgT24gc29tZQotICAgIGltcGxlbWVudGF0aW9ucywgdGhlIHByb3BlcnRpZXMgb2YgdGhl
IGRlZmF1bHQgZnJhbWVidWZmZXIgY2FuCi0gICAgY2hhbmdlIG92ZXIgdGltZSAoZS5nLiwgaW4g
cmVzcG9uc2UgdG8gd2luZG93aW5nIHN5c3RlbSBldmVudHMKLSAgICBzdWNoIGFzIGF0dGFjaGlu
ZyB0aGUgY29udGV4dCB0byBhIG5ldyB3aW5kb3dpbmcgc3lzdGVtIGRyYXdhYmxlLikiCi0KLSAg
ICBDaGFuZ2UgdGhlIGRlc2NyaXB0aW9uIG9mIERlbGV0ZUZyYW1lYnVmZmVycyBhcyBmb2xsb3dz
OgotCi0gICAgIjxmcmFtZWJ1ZmZlcnM+IGNvbnRhaW5zIDxuPiBuYW1lcyBvZiBmcmFtZWJ1ZmZl
ciBvYmplY3RzIHRvIGJlCi0gICAgZGVsZXRlZC4gIEFmdGVyIGEgZnJhbWVidWZmZXIgb2JqZWN0
IGlzIGRlbGV0ZWQsIGl0IGhhcyBubwotICAgIGF0dGFjaG1lbnRzLCBhbmQgaXRzIG5hbWUgaXMg
YWdhaW4gdW51c2VkLiAgSWYgYSBmcmFtZWJ1ZmZlciB0aGF0Ci0gICAgaXMgY3VycmVudGx5IGJv
dW5kIHRvIG9uZSBvciBtb3JlIG9mIHRoZSB0YXJnZXRzCi0gICAgRFJBV19GUkFNRUJVRkZFUl9B
TkdMRSBvciBSRUFEX0ZSQU1FQlVGRkVSX0FOR0xFIGlzIGRlbGV0ZWQsIGl0IGlzIGFzCi0gICAg
dGhvdWdoIEJpbmRGcmFtZWJ1ZmZlciBoYWQgYmVlbiBleGVjdXRlZCB3aXRoIHRoZSBjb3JyZXNw
b25kaW5nCi0gICAgPHRhcmdldD4gYW5kIDxmcmFtZWJ1ZmZlcj4gemVyby4gIFVudXNlZCBuYW1l
cyBpbiA8ZnJhbWVidWZmZXJzPgotICAgIGFyZSBzaWxlbnRseSBpZ25vcmVkLCBhcyBpcyB0aGUg
dmFsdWUgemVyby4iCi0KLQotICAgIEluIHNlY3Rpb24gNC40LjMgKFJlbmRlcmJ1ZmZlciBPYmpl
Y3RzKSwgbW9kaWZ5IHRoZSBmaXJzdCB0d28gc2VudGVuY2VzCi0gICAgb2YgdGhlIGRlc2NyaXB0
aW9uIG9mIEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyIGFzIGZvbGxvd3M6Ci0KLSAgICAiPHRhcmdl
dD4gbXVzdCBiZSBEUkFXX0ZSQU1FQlVGRkVSX0FOR0xFLCBSRUFEX0ZSQU1FQlVGRkVSX0FOR0xF
LCBvcgotICAgIEZSQU1FQlVGRkVSLiAgSWYgPHRhcmdldD4gaXMgRlJBTUVCVUZGRVIsIGl0IGJl
aGF2ZXMgYXMKLSAgICB0aG91Z2ggRFJBV19GUkFNRUJVRkZFUl9BTkdMRSB3YXMgc3BlY2lmaWVk
LiAgVGhlIElOVkFMSURfT1BFUkFUSU9OIAotICAgIGVycm9yIGlzIGdlbmVyYXRlZCBpZiB0aGUg
dmFsdWUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgYmluZGluZyBpcyB6ZXJvLiIKLQotICAgIEluIHNl
Y3Rpb24gNC40LjMgKFJlbmRlcmJ1ZmZlciBPYmplY3RzKSwgbW9kaWZ5IHRoZSBmaXJzdCB0d28g
c2VudGVuY2VzCi0gICAgb2YgdGhlIGRlc2NyaXB0aW9uIG9mIEZyYW1lYnVmZmVyVGV4dHVyZTJE
IGFzIGZvbGxvd3M6Ci0KLSAgICAiPHRhcmdldD4gbXVzdCBiZSBEUkFXX0ZSQU1FQlVGRkVSX0FO
R0xFLAotICAgIFJFQURfRlJBTUVCVUZGRVJfQU5HTEUsIG9yIEZSQU1FQlVGRkVSLiAgSWYgPHRh
cmdldD4gaXMKLSAgICBGUkFNRUJVRkZFUiwgaXQgYmVoYXZlcyBhcyB0aG91Z2ggRFJBV19GUkFN
RUJVRkZFUl9BTkdMRSB3YXMKLSAgICBzcGVjaWZpZWQuICBUaGUgSU5WQUxJRF9PUEVSQVRJT04g
ZXJyb3IgaXMgZ2VuZXJhdGVkIGlmIHRoZSB2YWx1ZSBvZiB0aGUKLSAgICBjb3JyZXNwb25kaW5n
IGJpbmRpbmcgaXMgemVyby4iCi0KLSAgICBJbiBzZWN0aW9uIDQuNC41IChGcmFtZWJ1ZmZlciBD
b21wbGV0ZW5lc3MpLCBtb2RpZnkgdGhlIGZpcnN0IHNlbnRlbmNlIAotICAgIG9mIHRoZSBkZXNj
cmlwdGlvbiBvZiBDaGVja0ZyYW1lYnVmZmVyU3RhdHVzIGFzIGZvbGxvd3M6Ci0KLSAgICAiSWYg
PHRhcmdldD4gaXMgbm90IERSQVdfRlJBTUVCVUZGRVJfQU5HTEUsIFJFQURfRlJBTUVCVUZGRVJf
QU5HTEUgb3IKLSAgICBGUkFNRUJVRkZFUiwgdGhlIGVycm9yIElOVkFMSURfRU5VTSBpcyBnZW5l
cmF0ZWQuICBJZiA8dGFyZ2V0PiBpcwotICAgIEZSQU1FQlVGRkVSLCBpdCBiZWhhdmVzIGFzIHRo
b3VnaCBEUkFXX0ZSQU1FQlVGRkVSX0FOR0xFIHdhcwotICAgIHNwZWNpZmllZC4iCi0KLSAgICBN
b2RpZnkgdGhlIGZpcnN0IHNlbnRlbmNlIG9mIHRoZSBzdWJzZWN0aW9uIHRpdGxlZCAiRWZmZWN0
cyBvZiBGcmFtZWJ1ZmZlcgotICAgIENvbXBsZXRlbmVzcyBvbiBGcmFtZWJ1ZmZlciBPcGVyYXRp
b25zIiB0byBiZToKLQotICAgICJBdHRlbXB0aW5nIHRvIHJlbmRlciB0byBvciByZWFkIGZyb20g
YSBmcmFtZWJ1ZmZlciB3aGljaCBpcyBub3QKLSAgICBmcmFtZWJ1ZmZlciBjb21wbGV0ZSB3aWxs
IGdlbmVyYXRlIGFuCi0gICAgSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gZXJyb3IuIgot
ICAgIAotCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDYgb2YgdGhlIE9wZW5HTCAxLjUgU3BlY2lm
aWNhdGlvbiAoU3RhdGUgYW5kIFN0YXRlCi1SZXF1ZXN0cykKLQotICAgIEluIHNlY3Rpb24gNi4x
LjMsIG1vZGlmeSB0aGUgZmlyc3Qgc2VudGVuY2Ugb2YgdGhlIGRlc2NyaXB0aW9uIG9mCi0gICAg
R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYgYXMgZm9sbG93czoKLQotICAgICI8
dGFyZ2V0PiBtdXN0IGJlIERSQVdfRlJBTUVCVUZGRVJfQU5HTEUsIFJFQURfRlJBTUVCVUZGRVJf
QU5HTEUgb3IKLSAgICBGUkFNRUJVRkZFUi4gIElmIDx0YXJnZXQ+IGlzIEZSQU1FQlVGRkVSLCBp
dCBiZWhhdmVzIGFzCi0gICAgdGhvdWdoIERSQVdfRlJBTUVCVUZGRVJfQU5HTEUgd2FzIHNwZWNp
ZmllZC4iCi0KLSAgICBNb2RpZnkgdGhlIHRpdGxlIG9mIFRhYmxlIDYuMjMgKEZyYW1lYnVmZmVy
IFN0YXRlKSB0byBiZSAiRnJhbWVidWZmZXIgCi0gICAgKHN0YXRlIHBlciBhdHRhY2htZW50IHBv
aW50KSIuIAotCi0KLURlcGVuZGVuY2llcyBvbiBPRVNfdGV4dHVyZV8zRAotCi0gICAgT24gYW4g
T3BlbkdMIEVTIGltcGxlbWVudGF0aW9uLCBpbiB0aGUgYWJzZW5zZSBvZiBPRVNfdGV4dHVyZV8z
RCwKLSAgICBvbWl0IHJlZmVyZW5jZXMgdG8gRnJhbWVidWZmZXJUZXh0dXJlM0RPRVMgYW5kIENv
cHlUZXhTdWJJbWFnZTNET0VTLgotCi1FcnJvcnMKLQotICAgIFRoZSBlcnJvciBJTlZBTElEX0ZS
QU1FQlVGRkVSX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYKLSAgICBCbGl0RnJhbWVidWZmZXJB
TkdMRSBpcyBjYWxsZWQgd2hpbGUgdGhlCi0gICAgZHJhdyBmcmFtZWJ1ZmZlciBpcyBub3QgZnJh
bWVidWZmZXIgY29tcGxldGUuCi0KLSAgICBUaGUgZXJyb3IgSU5WQUxJRF9GUkFNRUJVRkZFUl9P
UEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmCi0gICAgQmxpdEZyYW1lYnVmZmVyQU5HTEUsIFJlYWRQ
aXhlbHMsIENvcHlUZXh7U3VifUltYWdlKiwgaXMgY2FsbGVkIHdoaWxlIHRoZQotICAgIHJlYWQg
ZnJhbWVidWZmZXIgaXMgbm90IGZyYW1lYnVmZmVyIGNvbXBsZXRlLgotCi0gICAgVGhlIGVycm9y
IElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBHZXRJbnRlZ2VydiBpcyBjYWxsZWQK
LSAgICB3aGlsZSB0aGUgcmVhZCBmcmFtZWJ1ZmZlciBpcyBub3QgZnJhbWVidWZmZXIgY29tcGxl
dGUsIG9yIGlmIHRoZXJlCi0gICAgaXMgbm8gY29sb3IgYXR0YWNobWVudCBwcmVzZW50IG9uIHRo
ZSByZWFkIGZyYW1lYnVmZmVyIG9iamVjdC4KLQotICAgIFRoZSBlcnJvciBJTlZBTElEX1ZBTFVF
IGlzIGdlbmVyYXRlZCBieSBCbGl0RnJhbWVidWZmZXJBTkdMRSBpZgotICAgIDxtYXNrPiBoYXMg
YW55IGJpdHMgc2V0IG90aGVyIHRoYW4gdGhvc2UgbmFtZWQgYnkKLSAgICBDT0xPUl9CVUZGRVJf
QklULCBERVBUSF9CVUZGRVJfQklUIG9yIFNURU5DSUxfQlVGRkVSX0JJVC4KLQotICAgIFRoZSBl
cnJvciBJTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgQmxpdEZyYW1lYnVmZmVyQU5H
TEUgaXMKLSAgICBjYWxsZWQgYW5kIDxtYXNrPiBpbmNsdWRlcyBERVBUSF9CVUZGRVJfQklUIG9y
IFNURU5DSUxfQlVGRkVSX0JJVAotICAgIGFuZCB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBk
ZXB0aCBvciBzdGVuY2lsIGJ1ZmZlciBmb3JtYXRzIGRvCi0gICAgbm90IG1hdGNoLgotCi0gICAg
VGhlIGVycm9yIElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBCbGl0RnJhbWVidWZm
ZXJBTkdMRSBpcyAKLSAgICBjYWxsZWQgYW5kIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlIHRydWU6Ci0gICAgIC0gdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gcmVjdGFuZ2xl
IGRpbWVuc2lvbnMgZG8gbm90IG1hdGNoCi0gICAgICAgKGllIHNjYWxpbmcgb3IgZmxpcHBpbmcg
aXMgcmVxdWlyZWQpLgotICAgICAtIDxtYXNrPiBpbmNsdWRlcyBDT0xPUl9CVUZGRVJfQklUIGFu
ZCB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiAKLSAgICAgICBidWZmZXIgZm9ybWF0cyBkbyBu
b3QgbWF0Y2guCi0gICAgIC0gPG1hc2s+IGluY2x1ZGVzIERFUFRIX0JVRkZFUl9CSVQgb3IgU1RF
TkNJTF9CVUZGRVJfQklUIGFuZCB0aGUKLSAgICAgICBzb3VyY2Ugb3IgZGVzdGluYXRpb24gcmVj
dGFuZ2xlcyBkbyBub3Qgc3BlY2lmeSB0aGUgZW50aXJlIHNvdXJjZQotICAgICAgIG9yIGRlc3Rp
bmF0aW9uIGJ1ZmZlciAoYWZ0ZXIgYXBwbHlpbmcgYW55IHNjaXNzb3IgcmVnaW9uKS4KLQotICAg
IFRoZSBlcnJvciBJTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGJ5IEJsaXRGcmFtZWJ1ZmZlckFO
R0xFIGlmCi0gICAgPGZpbHRlcj4gaXMgbm90IE5FQVJFU1QuCi0KLSAgICBUaGUgZXJyb3IgSU5W
QUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBpZiBCaW5kRnJhbWVidWZmZXIsCi0gICAgQ2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cywgRnJhbWVidWZmZXJUZXh0dXJlezJEfDNET0VTfSwKLSAgICBGcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlciwgb3IKLSAgICBHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXJpdiBpcyBjYWxsZWQgYW5kIDx0YXJnZXQ+IGlzCi0gICAgbm90IERSQVdfRlJBTUVCVUZGRVJf
QU5HTEUsIFJFQURfRlJBTUVCVUZGRVJfQU5HTEUgb3IgRlJBTUVCVUZGRVIuCi0KLU5ldyBTdGF0
ZQotCi0gICAgKEFkZCBhIG5ldyB0YWJsZSA2Lnh4LCAiRnJhbWVidWZmZXIgKHN0YXRlIHBlciBm
cmFtZWJ1ZmZlciB0YXJnZXQgYmluZGluZyBwb2ludCkiKQotCi0gICAgR2V0IFZhbHVlICAgICAg
ICAgICAgICAgICAgICAgVHlwZSAgIEdldCBDb21tYW5kICAgSW5pdGlhbCBWYWx1ZSAgICBEZXNj
cmlwdGlvbiAgICAgICAgICAgICAgIFNlY3Rpb24KLSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gIC0tLS0gICAtLS0tLS0tLS0tLSAgIC0tLS0tLS0tLS0tLS0tICAgLS0tLS0tLS0t
LS0tLS0tLS0tLSAgICAgICAtLS0tLS0tLS0tLS0KLSAgICBEUkFXX0ZSQU1FQlVGRkVSX0JJTkRJ
TkdfQU5HTEUgICBaKyAgICBHZXRJbnRlZ2VydiAgIDAgICAgICAgICAgICAgICAgZnJhbWVidWZm
ZXIgb2JqZWN0IGJvdW5kICA0LjQuMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBEUkFXX0ZSQU1FQlVG
RkVSX0FOR0xFCi0gICAgUkVBRF9GUkFNRUJVRkZFUl9CSU5ESU5HX0FOR0xFICAgWisgICAgR2V0
SW50ZWdlcnYgICAwICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyIG9iamVjdCAgICAgICAgNC40
LjEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdG8gUkVBRF9GUkFNRUJVRkZFUl9BTkdMRQotCi0gICAgUmVt
b3ZlIHJlZmVyZW5jZSB0byBGUkFNRUJVRkZFUl9CSU5ESU5HIGZyb20gVGFibGUgNi4yMy4KLQot
ICAgIChBZGQgYSBuZXcgdGFibGUgNi55eSwgIkZyYW1lYnVmZmVyIERlcGVuZGVudCBWYWx1ZXMi
KSAKLQotICAgIEdldCBWYWx1ZSAgICAgICAgICAgICAgICAgICAgIFR5cGUgICBHZXQgQ29tbWFu
ZCAgIEluaXRpYWwgVmFsdWUgICAgRGVzY3JpcHRpb24gICAgICAgICAgICAgICBTZWN0aW9uCi0g
ICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgLS0tLSAgIC0tLS0tLS0tLS0tICAgLS0t
LS0tLS0tLS0tLS0gICAtLS0tLS0tLS0tLS0tLS0tLS0tICAgICAgIC0tLS0tLS0tLS0tLQotICAg
IFNBTVBMRV9CVUZGRVJTICAgICAgICAgICAgICAgICBaKyAgICBHZXRJbnRlZ2VydiAgIDAgICAg
ICAgICAgICAgICAgTnVtYmVyIG9mIG11bHRpc2FtcGxlICAgICAzLjIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJ1ZmZlcnMKLSAgICBTQU1QTEVTICAgICAgICAgICAgICAgICAgICAgICAgWisgICAgR2V0SW50
ZWdlcnYgICAwICAgICAgICAgICAgICAgIENvdmVyYWdlIG1hc2sgc2l6ZSAgICAgICAgMy4yCi0K
LSAgICBSZW1vdmUgdGhlIHJlZmVyZW5jZXMgdG8gU0FNUExFX0JVRkZFUlMgYW5kIFNBTVBMRVMg
ZnJvbSBUYWJsZSA2LjE3LgotCi0KLUlzc3VlcwotCi0gICAgMSkgV2hhdCBzaG91bGQgd2UgY2Fs
bCB0aGlzIGV4dGVuc2lvbj8KLSAgCi0gICAgICAgUmVzb2x2ZWQ6IEFOR0xFX2ZyYW1lYnVmZmVy
X2JsaXQuICAKLQotICAgICAgIFRoaXMgZXh0ZW5zaW9uIGlzIGEgcmVzdWx0IG9mIGEgY29sbGFi
b3JhdGlvbiBiZXR3ZWVuIEdvb2dsZSBhbmQgCi0gICAgICAgVHJhbnNHYW1pbmcgZm9yIHRoZSBv
cGVuLXNvdXJjZSBBTkdMRSBwcm9qZWN0LiBUeXBpY2FsbHkgb25lIHdvdWxkCi0gICAgICAgbGFi
ZWwgYSBtdWx0aS12ZW5kb3IgZXh0ZW5zaW9uIGFzIEVYVCwgYnV0IEVYVF9mcmFtZWJ1ZmZlcl9i
bGl0IAotICAgICAgIGlzIGFscmVhZHkgdGhlIG5hbWUgZm9yIHRoaXMgb24gRGVza3RvcCBHTC4g
IEFkZGl0aW9uYWxseSB0aGlzCi0gICAgICAgaXNuJ3QgdHJ1ZWx5IGEgbXVsdGktdmVuZG9yIGV4
dGVuc2lvbiBiZWNhdXNlIHRoZXJlIGlzIG9ubHkgb25lCi0gICAgICAgaW1wbGVtZW50YXRpb24g
b2YgdGhpcy4gIFdlJ2xsIGZvbGxvdyB0aGUgZXhhbXBsZSBvZiB0aGUgb3Blbi1zb3VyY2UKLSAg
ICAgICBNRVNBIHByb2plY3Qgd2hpY2ggdXNlcyB0aGUgcHJvamVjdCBuYW1lIGZvciB0aGUgdmVu
ZG9yIHN1ZmZpeC4KLQotICAgIDIpIFdoeSBpcyB0aGlzIGRvbmUgYXMgYSBzZXBhcmF0ZSBleHRl
bnNpb24gaW5zdGVhZCBvZiBqdXN0IHN1cHBvcnRpbmcKLSAgICAgICBFWFRfZnJhbWVidWZmZXJf
YmxpdD8KLQotICAgICAgIFRvIGRhdGUsIEVYVF9mcmFtZWJ1ZmZlcl9ibGl0IGhhcyBub3QgaGFk
IGludGVyYWN0aW9ucyB3aXRoIE9wZW5HTCBFUwotICAgICAgIHNwZWNpZmllZCBhbmQsIGFzIGZh
ciBhcyB3ZSBrbm93LCBpdCBoYXMgbm90IHByZXZpb3VzbHkgYmVlbiBleHBvc2VkIG9uIAotICAg
ICAgIGFuIEVTIDEuMSBvciBFUyAyLjAgaW1wbGVtZW50YXRpb24uIEJlY2F1c2UgdGhlcmUgYXJl
IGVub3VnaCAKLSAgICAgICBkaWZmZXJlbmNlcyBiZXR3ZWVuIERlc2t0b3AgR0wgYW5kIE9wZW5H
TCBFUywgYW5kIHNpbmNlIE9wZW5HTCBFUyAyLjAgCi0gICAgICAgaGFzIGFscmVhZHkgc3Vic3Vt
ZWQgdGhlIEVYVF9mcmFtZWJ1ZmZlcl9vYmplY3QgZnVuY3Rpb25hbGl0eSAod2l0aCAKLSAgICAg
ICBzb21lIGNoYW5nZXMpIGl0IHdhcyBkZWVtZWQgYSB3b3J0aHdoaWxlIGV4ZXJjaXNlIHRvIGZ1
bGx5IHNwZWNpZnkgdGhlCi0gICAgICAgaW50ZXJhY3Rpb25zLiAgQWRkaXRpb25hbGx5LCBzb21l
IG9mIHRoZSBjaG9pY2VzIGluIGV4YWN0bHkgd2hpY2ggCi0gICAgICAgZnVuY3Rpb25hbGl0eSBp
cyBzdXBwb3J0ZWQgYnkgQmxpdEZyYW1lYnVmZmVyQU5HTEUgaXMgZGljdGF0ZWQgYnkKLSAgICAg
ICB3aGF0IGlzIHJlYXNvbmFibGUgdG8gc3VwcG9ydCBvbiBhIGltcGxlbWVudGF0aW9uIHdoaWNo
IGlzIAotICAgICAgIGxheWVyZWQgb24gRGlyZWN0M0Q5LiAgSXQgaXMgbm90IGV4cGVjdGVkIHRo
YXQgb3RoZXIgaW1wbGVtZW50YXRpb25zIAotICAgICAgIHdpbGwgbmVjZXNzYXJ5IGhhdmUgdGhl
IHNhbWUgc2V0IG9mIHJlc3RyaWN0aW9ucyBvciByZXF1aXJlbWVudHMuIAotCi0gICAgMykgSG93
IGRvZXMgdGhpcyBleHRlbnNpb24gZGlmZmVyIGZyb20gRVhUX2ZyYW1lYnVmZmVyX2JsaXQ/Ci0K
LSAgICAgICBUaGlzIGV4dGVuc2lvbiBpcyBkZXNpZ25lZCB0byBiZSBhIHB1cmUgc3Vic2V0IG9m
IHRoZSAKLSAgICAgICBFWFRfZnJhbWVidWZmZXJfYmxpdCBmdW5jdGlvbmFsaXR5IGFzIGFwcGxp
Y2FibGUgdG8gT3BlbkdMIEVTIDIuMC4KLQotICAgICAgIEZ1bmN0aW9uYWxpdHkgdGhhdCBpcyB1
bmNoYW5nZWQ6Ci0gICAgICAgIC0gdGhlIHNwbGl0IERSQVcgYW5kIFJFQUQgZnJhbWVidWZmZXIg
YXR0YWNobWVudCBwb2ludHMgYW5kIHJlbGF0ZWQgc2VtYXRpY3MuCi0gICAgICAgIC0gdGhlIHRv
a2VuIHZhbHVlcyBmb3IgdGhlIERSQVcvUkVBRF9GUkFNRUJVRkZFUiBhbmQgRFJBVy9SRUFEX0ZS
QU1CVUZGRVJfQklORElORwotICAgICAgICAtIHRoZSBzaWduYXR1cmUgb2YgdGhlIEJsaXRGcmFt
ZWJ1ZmZlciBlbnRyeS1wb2ludC4KLSAgICAgICAKLSAgICAgICBBZGRpdGlvbmFsIHJlc3RyaWN0
aW9ucyBpbXBvc2VkIGJ5IEJsaXRGcmFtZWJ1ZmZlckFOR0xFOgotICAgICAgICAtIG5vIGNvbG9y
IGNvbnZlcnNpb25zIGFyZSBzdXBwb3J0ZWQKLSAgICAgICAgLSBubyBzY2FsaW5nLCBzdHJldGNo
aW5nIG9yIGZsaXBwaW5nIGFyZSBzdXBwb3J0ZWQKLSAgICAgICAgLSBubyBmaWx0ZXJpbmcgaXMg
c3VwcG9ydGVkIChhIGNvbnNlcXVlbmNlIG9mIG5vIHN0cmV0Y2hpbmcpCi0gICAgICAgIC0gb25s
eSB3aG9sZSBkZXB0aCBhbmQvb3Igc3RlbmNpbCBidWZmZXJzIGNhbiBiZSBjb3BpZWQKLQotUmV2
aXNpb24gSGlzdG9yeQotCi0gICAgUmV2aXNpb24gMSwgMjAxMC8wNy8wNgotICAgICAgLSBjb3Bp
ZWQgZnJvbSByZXZpc2lvbiAxNSBvZiBFWFRfZnJhbWVidWZmZXJfb2JqZWN0Ci0gICAgICAtIHJl
bW92ZWQgbGFuZ3VhZ2UgdGhhdCB3YXMgY2xlYXJseSBub3QgcmVsZXZhbnQgdG8gRVMyCi0gICAg
ICAtIHJlYmFzZWQgY2hhbmdlcyBhZ2FpbnN0IHRoZSBPcGVuR0wgRVMgMi4wIHNwZWNpZmljYXRp
b24KLSAgICAgIC0gYWRkZWQgQU5HTEUtc3BlY2lmaWMgcmVzdHJpY3Rpb25zCi0gICAgUmV2aXNp
b24gMiwgMjAxMC8wNy8xNQotICAgICAgLSBjbGFyaWZpY2F0aW9ucyBvZiBpbXBsaWNpdCBjbGFt
cGluZyB0byBidWZmZXIgc2l6ZXMgKGZyb20gQVJCX2ZibykKLSAgICAgIC0gY2xhcmlmeSB0aGF0
IEQvUyByZXN0cmljdHMgYXBwbHkgYWZ0ZXIgdGhlIHNjaXNzb3IgaXMgYXBwbGllZAotICAgICAg
LSBpbXByb3ZlIHNvbWUgZXJyb3IgbGFuZ3VhZ2UKLSAgICBSZXZpc2lvbiAzLCAyMDEwLzA4LzA2
Ci0gICAgICAtIGFkZCBhZGRpdGlvbmFsIGNvbnRyaWJ1dG9ycywgdXBkYXRlIGltcGxlbWVudGF0
aW9uIHN0YXR1cwotICAgIFJldmlzaW9uIDQsIDIwMTIvMDkvMjIKLSAgICAgIC0gZG9jdW1lbnQg
ZXJyb3JzIGZvciBHZXRJbnRlZ2Vydi4KLQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
ZXh0ZW5zaW9ucy9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZS50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9BTkdMRV9mcmFtZWJ1ZmZlcl9t
dWx0aXNhbXBsZS50eHQJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL2V4dGVuc2lvbnMvQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUudHh0CShub25leGlz
dGVudCkKQEAgLTEsMzYzICswLDAgQEAKLU5hbWUKLQotICAgIEFOR0xFX2ZyYW1lYnVmZmVyX211
bHRpc2FtcGxlCi0KLU5hbWUgU3RyaW5ncwotCi0gICAgR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVs
dGlzYW1wbGUKLQotQ29udHJpYnV0b3JzCi0KLSAgICBDb250cmlidXRvcnMgdG8gRVhUX2ZyYW1l
YnVmZmVyX211bHRpc2FtcGxlCi0gICAgRGFuaWVsIEtvY2gsIFRyYW5zR2FtaW5nIEluYy4KLSAg
ICBTaGFubm9uIFdvb2RzLCBUcmFuc0dhbWluZyBJbmMuCi0gICAgS2VubmV0aCBSdXNzZWxsLCBH
b29nbGUgSW5jLgotICAgIFZhbmdlbGlzIEtva2tldmlzLCBHb29nbGUgSW5jLgotCi1Db250YWN0
cwotCi0gICAgRGFuaWVsIEtvY2gsIFRyYW5zR2FtaW5nIEluYy4gKGRhbmllbCAnYXQnIHRyYW5z
Z2FtaW5nICdkb3QnIGNvbSkKLQotU3RhdHVzCi0KLSAgICBJbXBsZW1lbnRlZCBpbiBBTkdMRSBF
UzIKLQotVmVyc2lvbgotCi0gICAgTGFzdCBNb2RpZmllZCBEYXRlOiBBdWcgNiwgMjAxMCAKLSAg
ICBBdXRob3IgUmV2aXNpb246ICMzCi0KLU51bWJlcgotCi0gICAgT3BlbkdMIEVTIEV4dGVuc2lv
biAjODQKLQotRGVwZW5kZW5jaWVzCi0KLSAgICBSZXF1aXJlcyBPcGVuR0wgRVMgMi4wLgotCi0g
ICAgUmVxdWlyZXMgR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCAob3IgZXF1aXZhbGVudCBmdW5j
dGlvbmFsaXR5KS4KLQotICAgIFRoZSBleHRlbnNpb24gaXMgd3JpdHRlbiBhZ2FpbnN0IHRoZSBP
cGVuR0wgRVMgMi4wIHNwZWNpZmljYXRpb24uIAotCi0gICAgT0VTX3RleHR1cmVfM0QgYWZmZWN0
cyB0aGUgZGVmaW5pdGlvbiBvZiB0aGlzIGV4dGVuc2lvbi4KLQotT3ZlcnZpZXcKLQotICAgIFRo
aXMgZXh0ZW5zaW9uIGV4dGVuZHMgdGhlIGZyYW1lYnVmZmVyIG9iamVjdCBmcmFtZXdvcmsgdG8K
LSAgICBlbmFibGUgbXVsdGlzYW1wbGUgcmVuZGVyaW5nLgotCi0gICAgVGhlIG5ldyBvcGVyYXRp
b24gUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoKSBhbGxvY2F0ZXMKLSAgICBz
dG9yYWdlIGZvciBhIHJlbmRlcmJ1ZmZlciBvYmplY3QgdGhhdCBjYW4gYmUgdXNlZCBhcyBhIG11
bHRpc2FtcGxlCi0gICAgYnVmZmVyLiAgQSBtdWx0aXNhbXBsZSByZW5kZXIgYnVmZmVyIGltYWdl
IGRpZmZlcnMgZnJvbSBhCi0gICAgc2luZ2xlLXNhbXBsZSByZW5kZXIgYnVmZmVyIGltYWdlIGlu
IHRoYXQgYSBtdWx0aXNhbXBsZSBpbWFnZSBoYXMgYQotICAgIG51bWJlciBvZiBTQU1QTEVTIHRo
YXQgaXMgZ3JlYXRlciB0aGFuIHplcm8uICBObyBtZXRob2QgaXMgcHJvdmlkZWQKLSAgICBmb3Ig
Y3JlYXRpbmcgbXVsdGlzYW1wbGUgdGV4dHVyZSBpbWFnZXMuCi0KLSAgICBBbGwgb2YgdGhlIGZy
YW1lYnVmZmVyLWF0dGFjaGFibGUgaW1hZ2VzIGF0dGFjaGVkIHRvIGEgZnJhbWVidWZmZXIKLSAg
ICBvYmplY3QgbXVzdCBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiBTQU1QTEVTIG9yIGVsc2UgdGhl
IGZyYW1lYnVmZmVyCi0gICAgb2JqZWN0IGlzIG5vdCAiZnJhbWVidWZmZXIgY29tcGxldGUiLiAg
SWYgYSBmcmFtZWJ1ZmZlciBvYmplY3Qgd2l0aAotICAgIG11bHRpc2FtcGxlIGF0dGFjaG1lbnRz
IGlzICJmcmFtZWJ1ZmZlciBjb21wbGV0ZSIsIHRoZW4gdGhlCi0gICAgZnJhbWVidWZmZXIgb2Jq
ZWN0IGJlaGF2ZXMgYXMgaWYgU0FNUExFX0JVRkZFUlMgaXMgb25lLgotCi0gICAgVGhlIHJlc29s
dmUgb3BlcmF0aW9uIGlzIGFmZmVjdGVkIGJ5IGNhbGxpbmcgCi0gICAgQmxpdEZyYW1lYnVmZmVy
QU5HTEUgKHByb3ZpZGVkIGJ5IHRoZSBBTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0Ci0gICAgZXh0ZW5z
aW9uKSB3aGVyZSB0aGUgc291cmNlIGlzIGEgbXVsdGlzYW1wbGUgYXBwbGljYXRpb24tY3JlYXRl
ZAotICAgIGZyYW1lYnVmZmVyIG9iamVjdCBhbmQgdGhlIGRlc3RpbmF0aW9uIGlzIGEgc2luZ2xl
LXNhbXBsZQotICAgIGZyYW1lYnVmZmVyIG9iamVjdCAoZWl0aGVyIGFwcGxpY2F0aW9uLWNyZWF0
ZWQgb3Igd2luZG93LXN5c3RlbQotICAgIHByb3ZpZGVkKS4KLQotTmV3IFByb2NlZHVyZXMgYW5k
IEZ1bmN0aW9ucwotCi0gICAgdm9pZCBSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdM
RSgKLSAgICAgICAgICAgIGVudW0gdGFyZ2V0LCBzaXplaSBzYW1wbGVzLAotICAgICAgICAgICAg
ZW51bSBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAgIHNpemVpIHdpZHRoLCBzaXplaSBoZWln
aHQpOwotCi1OZXcgVHlwZXMKLQotICAgIE5vbmUuCi0KLU5ldyBUb2tlbnMKLQotICAgIEFjY2Vw
dGVkIGJ5IHRoZSA8cG5hbWU+IHBhcmFtZXRlciBvZiBHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJp
djoKLQotICAgICAgICBSRU5ERVJCVUZGRVJfU0FNUExFU19BTkdMRSAgICAgICAgICAgICAgICAg
IDB4OENBQgotCi0gICAgUmV0dXJuZWQgYnkgQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1czoKLQotICAg
ICAgICBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExFX0FOR0xFICAgIDB4OEQ1Ngot
Ci0gICAgQWNjZXB0ZWQgYnkgdGhlIDxwbmFtZT4gcGFyYW1ldGVyIG9mIEdldEJvb2xlYW52LCBH
ZXRJbnRlZ2VydiwKLSAgICBhbmQgR2V0RmxvYXR2OgotCi0gICAgICAgIE1BWF9TQU1QTEVTX0FO
R0xFICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4RDU3Ci0KLUFkZGl0aW9ucyB0byBDaGFw
dGVyIDIgb2YgdGhlIE9wZW5HTCBFUyAyLjAgU3BlY2lmaWNhdGlvbiAoT3BlbkdMIE9wZXJhdGlv
bikKLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgMyBvZiB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZp
Y2F0aW9uIChSYXN0ZXJpemF0aW9uKQotCi0gICAgQWRkIHRvIHRoZSBsYXN0IHBhcmFncmFwaCBv
ZiAzLjcuMiAoQWx0ZXJuYXRlIFRleHR1cmUgSW1hZ2UgU3BlY2lmaWNhdGlvbikKLSAgICAoYXMg
bW9kaWZpZWQgYnkgQU5HTEVfZnJhbWVidWZmZXJfYmxpdCkgdGhlIGZvbGxvd2luZzoKLQotICAg
ICJDYWxsaW5nIENvcHlUZXhTdWJJbWFnZTNET0VTLCBDb3B5VGV4SW1hZ2UyRCBvciBDb3B5VGV4
U3ViSW1hZ2UyRCB3aWxsCi0gICAgcmVzdWx0IGluIElOVkFMSURfT1BFUkFUSU9OIGJlaW5nIGdl
bmVyYXRlZCBpZiB0aGUgb2JqZWN0IGJvdW5kIHRvCi0gICAgUkVBRF9GUkFNRUJVRkZFUl9CSU5E
SU5HX0FOR0xFIGlzICJmcmFtZWJ1ZmZlciBjb21wbGV0ZSIgYW5kIHRoZSB2YWx1ZQotICAgIG9m
IFNBTVBMRV9CVUZGRVJTIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLiIKLQotQWRkaXRpb25zIHRvIENo
YXB0ZXIgNCBvZiB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZpY2F0aW9uIChQZXItRnJhZ21lbnQK
LU9wZXJhdGlvbnMgYW5kIHRoZSBGcmFtZWJ1ZmZlcikKLQotICAgIEFkZCB0byA0LjMuMSAoUmVh
ZGluZyBQaXhlbHMpLCByaWdodCBiZWZvcmUgdGhlIHN1YnNlY3Rpb24gdGl0bGVkCi0gICAgIk9i
dGFpbmluZyBQaXhlbHMgZnJvbSB0aGUgRnJhbWVidWZmZXIiOgotCi0gICAgIlJlYWRQaXhlbHMg
Z2VuZXJhdGVzIElOVkFMSURfT1BFUkFUSU9OIGlmIFJFQURfRlJBTUVCVUZGRVJfQklORElOR19B
TkdMRQotICAgIChzZWN0aW9uIDQuNCkgaXMgbm9uLXplcm8sIHRoZSByZWFkIGZyYW1lYnVmZmVy
IGlzIGZyYW1lYnVmZmVyCi0gICAgY29tcGxldGUsIGFuZCB0aGUgdmFsdWUgb2YgU0FNUExFX0JV
RkZFUlMgZm9yIHRoZSByZWFkIGZyYW1lYnVmZmVyCi0gICAgaXMgZ3JlYXRlciB0aGFuIHplcm8u
IgotCi0gICAgSW4gNC4zLjIgKENvcHlpbmcgUGl4ZWxzKSwgYWRkIHRvIHRoZSBzZWN0aW9uIGRl
c2NyaWJpbmcgQmxpdEZyYW1lYnVmZmVyCi0gICAgdGhhdCB3YXMgYWRkZWQgYnkgQU5HTEVfZnJh
bWVidWZmZXJfYmxpdC4KLQotICAgICJJZiBTQU1QTEVfQlVGRkVSUyBmb3IgdGhlIHJlYWQgZnJh
bWVidWZmZXIgaXMgZ3JlYXRlciB0aGFuIHplcm8gYW5kCi0gICAgU0FNUExFX0JVRkZFUlMgZm9y
IHRoZSBkcmF3IGZyYW1lYnVmZmVyIGlzIHplcm8sIHRoZSBzYW1wbGVzCi0gICAgY29ycmVzcG9u
ZGluZyB0byBlYWNoIHBpeGVsIGxvY2F0aW9uIGluIHRoZSBzb3VyY2UgYXJlIGNvbnZlcnRlZCB0
bwotICAgIGEgc2luZ2xlIHNhbXBsZSBiZWZvcmUgYmVpbmcgd3JpdHRlbiB0byB0aGUgZGVzdGlu
YXRpb24uCi0KLSAgICBJZiBTQU1QTEVfQlVGRkVSUyBmb3IgdGhlIGRyYXcgZnJhbWVidWZmZXIg
aXMgZ3JlYXRlciB0aGFuIHplcm8sIAotICAgIG5vIGNvcHkgaXMgcGVyZm9ybWVkIGFuZCBhbiBJ
TlZBTElEX09QRVJBVElPTiBlcnJvciBpcyBnZW5lcmF0ZWQuCi0KLSAgICBJZiBTQU1QTEVfQlVG
RkVSUyBmb3IgdGhlIHJlYWQgZnJhbWVidWZmZXIgaXMgZ3JlYXRlciB0aGFuIHplcm8gYW5kCi0g
ICAgPG1hc2s+IGluY2x1ZGVzIERFUFRIX0JVRkZFUl9CSVQgb3IgU1RFTkNJTF9CVUZGRVJfQklU
LCBubyBjb3B5IGlzIAotICAgIHBlcmZvcm1lZCBhbmQgYW4gSU5WQUxJRF9PUEVSQVRJT04gZXJy
b3IgaXMgZ2VuZXJhdGVkLgotCi0gICAgSWYgU0FNUExFX0JVRkZFUlMgZm9yIHRoZSByZWFkIGZy
YW1lYnVmZmVyIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvIGFuZCAKLSAgICB0aGUgZm9ybWF0IG9mIHRo
ZSByZWFkIGFuZCBkcmF3IGZyYW1lYnVmZmVycyBhcmUgbm90IGlkZW50aWNhbCwgbm8KLSAgICBj
b3B5IGlzIHBlcmZvcm1lZCBhbmQgYW4gSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IgaXMgZ2VuZXJh
dGVkLgotCi0gICAgSWYgU0FNUExFX0JVRkZFUlMgZm9yIHRoZSByZWFkIGZyYW1lYnVmZmVyIGlz
IGdyZWF0ZXIgdGhhbiB6ZXJvLCB0aGUKLSAgICBkaW1lbnNpb25zIG9mIHRoZSBzb3VyY2UgYW5k
IGRlc3RpbmF0aW9uIHJlY3RhbmdsZXMgcHJvdmlkZWQgdG8gCi0gICAgQmxpdEZyYW1lYnVmZmVy
QU5HTEUgbXVzdCBiZSBpZGVudGljYWwgYW5kIG11c3Qgc3BlY2lmeSB0aGUgY29tcGxldGUgCi0g
ICAgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBidWZmZXJzLCBvdGhlcndpc2Ugbm8gY29weSBpcyBw
ZXJmb3JtZWQgYW5kIAotICAgIGFuIElOVkFMSURfT1BFUkFUSU9OIGVycm9yIGlzIGdlbmVyYXRl
ZC4iCi0KLSAgICBNb2RpZmljYXRpb24gdG8gNC40LjMgKFJlbmRlcmJ1ZmZlciBPYmplY3RzKQot
Ci0gICAgQWRkLCBqdXN0IGFib3ZlIHRoZSBkZWZpbml0aW9uIG9mIFJlbmRlcmJ1ZmZlclN0b3Jh
Z2U6Ci0KLSAgICAiVGhlIGNvbW1hbmQKLQotICAgICAgICB2b2lkIFJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZUFOR0xFKAotICAgICAgICAgICAgZW51bSB0YXJnZXQsIHNpemVpIHNhbXBs
ZXMsCi0gICAgICAgICAgICBlbnVtIGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAgc2l6ZWkg
d2lkdGgsIHNpemVpIGhlaWdodCk7Ci0KLSAgICBlc3RhYmxpc2hlcyB0aGUgZGF0YSBzdG9yYWdl
LCBmb3JtYXQsIGRpbWVuc2lvbnMsIGFuZCBudW1iZXIgb2YKLSAgICBzYW1wbGVzIG9mIGEgcmVu
ZGVyYnVmZmVyIG9iamVjdCdzIGltYWdlLiAgPHRhcmdldD4gbXVzdCBiZQotICAgIFJFTkRFUkJV
RkZFUi4gIDxpbnRlcm5hbGZvcm1hdD4gbXVzdCBiZSBvbmUgb2YgdGhlIGNvbG9yLXJlbmRlcmFi
bGUsCi0gICAgZGVwdGgtcmVuZGVyYWJsZSwgb3Igc3RlbmNpbC1yZW5kZXJhYmxlIGZvcm1hdHMg
ZGVzY3JpYmVkIGluIHRhYmxlIDQuNS4KLSAgICA8d2lkdGg+IGFuZCA8aGVpZ2h0PiBhcmUgdGhl
IGRpbWVuc2lvbnMgaW4gcGl4ZWxzIG9mIHRoZSByZW5kZXJidWZmZXIuICBJZgotICAgIGVpdGhl
ciA8d2lkdGg+IG9yIDxoZWlnaHQ+IGlzIGdyZWF0ZXIgdGhhbiB0aGUgdmFsdWUgb2YgCi0gICAg
TUFYX1JFTkRFUkJVRkZFUl9TSVpFLCBvciBpZiA8c2FtcGxlcz4gaXMgZ3JlYXRlciB0aGFuIE1B
WF9TQU1QTEVTX0FOR0xFLCAKLSAgICB0aGVuIHRoZSBlcnJvciBJTlZBTElEX1ZBTFVFIGlzIGdl
bmVyYXRlZC4gSWYgT3BlbkdMIEVTIGlzIHVuYWJsZSB0byAKLSAgICBjcmVhdGUgYSBkYXRhIHN0
b3JlIG9mIHRoZSByZXF1ZXN0ZWQgc2l6ZSwgdGhlIGVycm9yIE9VVF9PRl9NRU1PUlkgCi0gICAg
aXMgZ2VuZXJhdGVkLgotCi0gICAgVXBvbiBzdWNjZXNzLCBSZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGVBTkdMRSBkZWxldGVzIGFueSBleGlzdGluZwotICAgIGRhdGEgc3RvcmUgZm9yIHRo
ZSByZW5kZXJidWZmZXIgaW1hZ2UgYW5kIHRoZSBjb250ZW50cyBvZiB0aGUgZGF0YQotICAgIHN0
b3JlIGFmdGVyIGNhbGxpbmcgUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUgYXJl
IHVuZGVmaW5lZC4KLSAgICBSRU5ERVJCVUZGRVJfV0lEVEggaXMgc2V0IHRvIDx3aWR0aD4sIFJF
TkRFUkJVRkZFUl9IRUlHSFQgaXMKLSAgICBzZXQgdG8gPGhlaWdodD4sIGFuZCBSRU5ERVJCVUZG
RVJfSU5URVJOQUxfRk9STUFUIGlzIHNldCB0bwotICAgIDxpbnRlcm5hbGZvcm1hdD4uCi0KLSAg
ICBJZiA8c2FtcGxlcz4gaXMgemVybywgdGhlbiBSRU5ERVJCVUZGRVJfU0FNUExFU19BTkdMRSBp
cyBzZXQgdG8gemVyby4KLSAgICBPdGhlcndpc2UgPHNhbXBsZXM+IHJlcHJlc2VudHMgYSByZXF1
ZXN0IGZvciBhIGRlc2lyZWQgbWluaW11bQotICAgIG51bWJlciBvZiBzYW1wbGVzLiBTaW5jZSBk
aWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIG1heSBzdXBwb3J0Ci0gICAgZGlmZmVyZW50IHNhbXBs
ZSBjb3VudHMgZm9yIG11bHRpc2FtcGxlZCByZW5kZXJpbmcsIHRoZSBhY3R1YWwKLSAgICBudW1i
ZXIgb2Ygc2FtcGxlcyBhbGxvY2F0ZWQgZm9yIHRoZSByZW5kZXJidWZmZXIgaW1hZ2UgaXMKLSAg
ICBpbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQuICBIb3dldmVyLCB0aGUgcmVzdWx0aW5nIHZhbHVl
IGZvcgotICAgIFJFTkRFUkJVRkZFUl9TQU1QTEVTX0FOR0xFIGlzIGd1YXJhbnRlZWQgdG8gYmUg
Z3JlYXRlciB0aGFuIG9yIGVxdWFsCi0gICAgdG8gPHNhbXBsZXM+IGFuZCBubyBtb3JlIHRoYW4g
dGhlIG5leHQgbGFyZ2VyIHNhbXBsZSBjb3VudCBzdXBwb3J0ZWQKLSAgICBieSB0aGUgaW1wbGVt
ZW50YXRpb24uCi0KLSAgICBBbiBPcGVuR0wgRVMgaW1wbGVtZW50YXRpb24gbWF5IHZhcnkgaXRz
IGFsbG9jYXRpb24gb2YgaW50ZXJuYWwgY29tcG9uZW50Ci0gICAgcmVzb2x1dGlvbiBiYXNlZCBv
biBhbnkgUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUgcGFyYW1ldGVyIChleGNl
cHQKLSAgICB0YXJnZXQpLCBidXQgdGhlIGFsbG9jYXRpb24gYW5kIGNob3NlbiBpbnRlcm5hbCBm
b3JtYXQgbXVzdCBub3QgYmUgYQotICAgIGZ1bmN0aW9uIG9mIGFueSBvdGhlciBzdGF0ZSBhbmQg
Y2Fubm90IGJlIGNoYW5nZWQgb25jZSB0aGV5IGFyZQotICAgIGVzdGFibGlzaGVkLiBUaGUgYWN0
dWFsIHJlc29sdXRpb24gaW4gYml0cyBvZiBlYWNoIGNvbXBvbmVudCBvZiB0aGUgCi0gICAgYWxs
b2NhdGVkIGltYWdlIGNhbiBiZSBxdWVyaWVkIHdpdGggR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVy
aXYuIgotCi0gICAgTW9kaWZ5IHRoZSBkZWZpbml0b24gb2YgUmVuZGVyYnVmZmVyU3RvcmFnZSBh
cyBmb2xsb3dzOgotCi0gICAgIlRoZSBjb21tYW5kCi0KLSAgICAgICAgdm9pZCBSZW5kZXJidWZm
ZXJTdG9yYWdlKGVudW0gdGFyZ2V0LCBlbnVtIGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZWkgd2lkdGgsIHNpemVpIGhlaWdodCk7Ci0KLSAg
ICAgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nIFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZUFOR0xFIHdpdGgKLSAgICAgPHNhbXBsZXM+IGVxdWFsIHRvIHplcm8uIgotCi0gICAgSW4gc2Vj
dGlvbiA0LjQuNSAoRnJhbWVidWZmZXIgQ29tcGxldGVuZXNzKSBpbiB0aGUgc3Vic2VjdGlvbgot
ICAgIHRpdGxlZCAiRnJhbWVidWZmZXIgQ29tcGxldGVuZXNzIiBhZGQgYW4gZW50cnkgdG8gdGhl
IGJ1bGxldCBsaXN0OgotCi0gICAgKiBUaGUgdmFsdWUgb2YgUkVOREVSQlVGRkVSX1NBTVBMRVNf
QU5HTEUgaXMgdGhlIHNhbWUgZm9yIGFsbCBhdHRhY2hlZAotICAgICAgaW1hZ2VzLgotICAgICAg
eyBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExFX0FOR0xFIH0KLQotICAgIEFsc28g
YWRkIGEgcGFyYWdyYXBoIHRvIHRoZSBlbmQgb2YgdGhlIHNlY3Rpb24gYWZ0ZXIgdGhlIGRlZmlu
aXRpb24KLSAgICBvZiBDaGVja0ZyYW1lYnVmZmVyU3RhdHVzOgotCi0gICAgIlRoZSB2YWx1ZXMg
b2YgU0FNUExFX0JVRkZFUlMgYW5kIFNBTVBMRVMgYXJlIGRlcml2ZWQgZnJvbSB0aGUKLSAgICBh
dHRhY2htZW50cyBvZiB0aGUgY3VycmVudGx5IGJvdW5kIGZyYW1lYnVmZmVyIG9iamVjdC4gIElm
IHRoZQotICAgIGN1cnJlbnQgRFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HX0FOR0xFIGlzIG5vdCAi
ZnJhbWVidWZmZXIgY29tcGxldGUiLAotICAgIHRoZW4gYm90aCBTQU1QTEVfQlVGRkVSUyBhbmQg
U0FNUExFUyBhcmUgdW5kZWZpbmVkLiAgT3RoZXJ3aXNlLAotICAgIFNBTVBMRVMgaXMgZXF1YWwg
dG8gdGhlIHZhbHVlIG9mIFJFTkRFUkJVRkZFUl9TQU1QTEVTX0FOR0xFIGZvciB0aGUKLSAgICBh
dHRhY2hlZCBpbWFnZXMgKHdoaWNoIGFsbCBtdXN0IGhhdmUgdGhlIHNhbWUgdmFsdWUgZm9yCi0g
ICAgUkVOREVSQlVGRkVSX1NBTVBMRVNfQU5HTEUpLiAgRnVydGhlciwgU0FNUExFX0JVRkZFUlMg
aXMgb25lIGlmCi0gICAgU0FNUExFUyBpcyBub24temVyby4gIE90aGVyd2lzZSwgU0FNUExFX0JV
RkZFUlMgaXMgemVyby4KLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgNSBvZiB0aGUgT3BlbkdMIEVT
IDIuMCBTcGVjaWZpY2F0aW9uIChTcGVjaWFsIEZ1bmN0aW9ucykKLQotCi1BZGRpdGlvbnMgdG8g
Q2hhcHRlciA2IG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmljYXRpb24gKFN0YXRlIGFuZCBT
dGF0ZQotUmVxdWVzdHMpCi0KLSAgICBJbiBzZWN0aW9uIDYuMS4zIChFbnVtZXJhZ2VkIFF1ZXJp
ZXMpLCBtb2RpZnkgdGhlIHRoaXJkIHBhcmFncmFwaCAKLSAgICBvZiB0aGUgZGVzY3JpcHRpb24g
b2YgR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYgYXMgZm9sbG93czoKLQotICAgICJVcG9uIHN1
Y2Nlc3NmdWwgcmV0dXJuIGZyb20gR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYsIGlmCi0gICAg
PHBuYW1lPiBpcyBSRU5ERVJCVUZGRVJfV0lEVEgsIFJFTkRFUkJVRkZFUl9IRUlHSFQsCi0gICAg
UkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVCwgb3IgUkVOREVSQlVGRkVSX1NBTVBMRVNfQU5H
TEUsIHRoZW4gPHBhcmFtcz4gCi0gICAgd2lsbCBjb250YWluIHRoZSB3aWR0aCBpbiBwaXhlbHMs
IGhlaWdodCBpbiBwaXhlbHMsIGludGVybmFsIGZvcm1hdCwgb3IgCi0gICAgbnVtYmVyIG9mIHNh
bXBsZXMsIHJlc3BlY3RpdmVseSwgb2YgdGhlIGltYWdlIG9mIHRoZSByZW5kZXJidWZmZXIgCi0g
ICAgY3VycmVudGx5IGJvdW5kIHRvIDx0YXJnZXQ+LiIKLQotCi1EZXBlbmRlbmNpZXMgb24gQU5H
TEVfZnJhbWVidWZmZXJfYmxpdCAgICAKLQotICAgIEFOR0xFX2ZyYW1lYnVmZmVyX2JsaXQgaXMg
cmVxdWlyZWQuICBUZWNobmljYWxseSwgQU5HTEVfZnJhbWVidWZmZXJfYmxpdAotICAgIHdvdWxk
IG5vdCBiZSByZXF1aXJlZCB0byBzdXBwb3J0IG11bHRpc2FtcGxlZCByZW5kZXJpbmcsIGV4Y2Vw
dCBmb3IKLSAgICB0aGUgZmFjdCB0aGF0IGl0IHByb3ZpZGVzIHRoZSBvbmx5IG1ldGhvZCBvZiBk
b2luZyBhIG11bHRpc2FtcGxlCi0gICAgcmVzb3ZsZSBmcm9tIGEgbXVsdGlzYW1wbGUgcmVuZGVy
YnVmZmVyLgotCi1EZXBlbmRlbmNpZXMgb24gT0VTX3RleHR1cmVfM0QKLQotICAgIE9uIGFuIE9w
ZW5HTCBFUyBpbXBsZW1lbnRhdGlvbiwgaW4gdGhlIGFic2Vuc2Ugb2YgT0VTX3RleHR1cmVfM0Qs
Ci0gICAgb21pdCByZWZlcmVuY2VzIHRvIENvcHlUZXhTdWJJbWFnZTNET0VTLgotCi1FcnJvcnMK
LQotICAgIFRoZSBlcnJvciBJTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgUmVhZFBp
eGVscyBvciAKLSAgICBDb3B5VGV4e1N1Yn1JbWFnZSogaXMgY2FsbGVkIHdoaWxlIFJFQURfRlJB
TUVCVUZGRVJfQklORElOR19BTkdMRQotICAgIGlzIG5vbi16ZXJvLCB0aGUgcmVhZCBmcmFtZWJ1
ZmZlciBpcyBmcmFtZWJ1ZmZlciBjb21wbGV0ZSwgYW5kIHRoZQotICAgIHZhbHVlIG9mIFNBTVBM
RV9CVUZGRVJTIGZvciB0aGUgcmVhZCBmcmFtZWJ1ZmZlciBpcyBncmVhdGVyIHRoYW4KLSAgICB6
ZXJvLgotCi0gICAgSWYgYm90aCB0aGUgZHJhdyBhbmQgcmVhZCBmcmFtZWJ1ZmZlcnMgYXJlIGZy
YW1lYnVmZmVyIGNvbXBsZXRlIGFuZAotICAgIHRoZSBkcmF3IGZyYW1lYnVmZmVyIGhhcyBhIHZh
bHVlIG9mIFNBTVBMRV9CVUZGRVJTIHRoYXQgaXMgZ3JlYXRlciAKLSAgICB0aGFuIHplcm8sIHRo
ZW4gdGhlIGVycm9yIElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiAKLSAgICBCbGl0
RnJhbWVidWZmZXJBTkdMRSBpcyBjYWxsZWQuCi0KLSAgICBJZiBib3RoIHRoZSBkcmF3IGFuZCBy
ZWFkIGZyYW1lYnVmZmVycyBhcmUgZnJhbWVidWZmZXIgY29tcGxldGUgYW5kCi0gICAgdGhlIHJl
YWQgZnJhbWVidWZmZXIgaGFzIGEgdmFsdWUgb2YgU0FNUExFX0JVRkZFUlMgdGhhdCBpcyBncmVh
dGVyCi0gICAgdGhhbiB6ZXJvLCB0aGUgZXJyb3IgSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJh
dGVkIGlmIAotICAgIEJsaXRGcmFtZWJ1ZmZlckFOR0xFIGlzIGNhbGxlZCBhbmQgYW55IG9mIHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICAgIGFyZSB0cnVlOgotICAgICAtIDxtYXNrPiBpbmNs
dWRlcyBERVBUSF9CVUZGRVJfQklUIG9yIFNURU5DSUxfQlVGRkVSX0JJVC4KLSAgICAgLSB0aGUg
c291cmNlIG9yIGRlc3RpbmF0aW9uIHJlY3RhbmdsZXMgZG8gbm90IHNwZWNpZnkgdGhlIGVudGly
ZQotICAgICAgIHNvdXJjZSBvciBkZXN0aW5hdGlvbiBidWZmZXIuCi0KLSAgICBJZiBib3RoIHRo
ZSBkcmF3IGFuZCByZWFkIGZyYW1lYnVmZmVycyBhcmUgZnJhbWVidWZmZXIgY29tcGxldGUgYW5k
Ci0gICAgZWl0aGVyIGhhcyBhIHZhbHVlIG9mIFNBTVBMRV9CVUZGRVJTIHRoYXQgaXMgZ3JlYXRl
ciB0aGFuIHplcm8sIHRoZW4KLSAgICB0aGUgZXJyb3IgSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2Vu
ZXJhdGVkIGlmIEJsaXRGcmFtZWJ1ZmZlckFOR0xFIGlzCi0gICAgY2FsbGVkIGFuZCB0aGUgZm9y
bWF0cyBvZiB0aGUgZHJhdyBhbmQgcmVhZCBmcmFtZWJ1ZmZlcnMgYXJlIG5vdAotICAgIGlkZW50
aWNhbC4KLQotICAgIElmIGVpdGhlciB0aGUgZHJhdyBvciByZWFkIGZyYW1lYnVmZmVyIGlzIGZy
YW1lYnVmZmVyIGNvbXBsZXRlIGFuZAotICAgIGhhcyBhIHZhbHVlIG9mIFNBTVBMRV9CVUZGRVJT
IHRoYXQgaXMgZ3JlYXRlciB0aGFuIHplcm8sIHRoZW4gdGhlCi0gICAgZXJyb3IgSU5WQUxJRF9P
UEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIEJsaXRGcmFtZWJ1ZmZlckFOR0xFIGlzIGNhbGxlZAot
ICAgIGFuZCB0aGUgc3BlY2lmaWVkIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZGltZW5zaW9ucyBh
cmUgbm90Ci0gICAgaWRlbnRpY2FsLgotCi0gICAgSWYgUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlQU5HTEUgaXMgY2FsbGVkIHdpdGggPHRhcmdldD4gbm90Ci0gICAgZXF1YWwgdG8gUkVO
REVSQlVGRkVSLCB0aGUgZXJyb3IgSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZC4KLQotICAgIElm
IFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFIGlzIGNhbGxlZCB3aXRoIGFuIAot
ICAgIDxpbnRlcm5hbGZvcm1hdD4gdGhhdCBpcyBub3QgbGlzdGVkIGFzIG9uZSBvZiB0aGUgY29s
b3ItLCBkZXB0aC0gCi0gICAgb3Igc3RlbmNpbC1yZW5kZXJhYmxlIGZvcm1hdHMgaW4gVGFibGUg
NC41LCB0aGVuIHRoZSBlcnJvcgotICAgIElOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQuCi0KLSAg
ICBJZiBSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSBpcyBjYWxsZWQgd2l0aCA8
d2lkdGg+IG9yIAotICAgIDxoZWlnaHQ+IGdyZWF0ZXIgdGhhbiBNQVhfUkVOREVSQlVGRkVSX1NJ
WkUsIHRoZW4gdGhlIGVycm9yIAotICAgIElOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkLgotCi0g
ICAgSWYgUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUgaXMgY2FsbGVkIHdpdGgg
YSB2YWx1ZSBvZgotICAgIDxzYW1wbGVzPiB0aGF0IGlzIGdyZWF0ZXIgdGhhbiBNQVhfU0FNUExF
U19BTkdMRSBvciBsZXNzIHRoYW4gemVybywKLSAgICB0aGVuIHRoZSBlcnJvciBJTlZBTElEX1ZB
TFVFIGlzIGdlbmVyYXRlZC4KLQotICAgIFRoZSBlcnJvciBPVVRfT0ZfTUVNT1JZIGlzIGdlbmVy
YXRlZCB3aGVuCi0gICAgUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUgY2Fubm90
IGNyZWF0ZSBzdG9yYWdlIG9mIHRoZQotICAgIHNwZWNpZmllZCBzaXplLgotCi1OZXcgU3RhdGUK
LQotICAgIEFkZCB0byB0YWJsZSA2LjIyIChSZW5kZXJidWZmZXIgU3RhdGUpCi0KLSAgICBHZXQg
VmFsdWUgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgR2V0IENvbW1hbmQgICAgICAg
ICAgICAgICAgIEluaXRpYWwgVmFsdWUgIERlc2NyaXB0aW9uICAgICAgICAgICAgIFNlY3Rpb24K
LSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgIC0tLS0tLSAgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tICAg
IC0tLS0tLS0KLSAgICBSRU5ERVJCVUZGRVJfU0FNUExFU19BTkdMRSAgICAgICAgIForICAgICAg
R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYgIDAgICAgICAgICAgICAgIG51bWJlciBvZiBzYW1w
bGVzICAgICAgIDQuNC4zCi0KLQotICAgIEFkZCB0byB0YWJsZSA2Lnl5IChGcmFtZWJ1ZmZlciBE
ZXBlbmRlbnQgVmF1ZXMpIChhZGRlZCBieSAKLSAgICBBTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0KSwg
dGhlIGZvbGxvd2luZyBuZXcgZnJhbWVidWZmZXIgZGVwZW5kZW50IHN0YXRlLgotCi0gICAgR2V0
IFZhbHVlICAgICAgICAgIFR5cGUgIEdldCBDb21tYW5kICAgICBNaW5pbXVtIFZhbHVlICAgIERl
c2NyaXB0aW9uICAgICAgICAgICAgIFNlY3Rpb24KLSAgICAtLS0tLS0tLS0tLS0tLS0tLSAgLS0t
LSAgLS0tLS0tLS0tLS0gICAgIC0tLS0tLS0tLS0tLS0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLSAg
ICAgLS0tLS0tLQotICAgIE1BWF9TQU1QTEVTX0FOR0xFICBaKyAgICBHZXRJbnRlZ2VydiAgICAg
MSAgICAgICAgICAgICAgICBNYXhpbXVtIG51bWJlciBvZiAgICAgICA0LjQuMwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1w
bGVzIHN1cHBvcnRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmb3IgbXVsdGlzYW1wbGluZwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0KLQotSXNzdWVzCi0g
ICAgCi0gICAgSXNzdWVzIGZyb20gRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIGhhdmUgYmVl
biByZW1vdmVkLgotIAotICAgIDEpIFdoYXQgc2hvdWxkIHdlIGNhbGwgdGhpcyBleHRlbnNpb24/
Ci0KLSAgICAgICBSZXNvbHZlZDogQU5HTEVfZnJhbWVidWZmZXJfYmxpdC4gIAotCi0gICAgICAg
VGhpcyBleHRlbnNpb24gaXMgYSByZXN1bHQgb2YgYSBjb2xsYWJvcmF0aW9uIGJldHdlZW4gR29v
Z2xlIGFuZCAKLSAgICAgICBUcmFuc0dhbWluZyBmb3IgdGhlIG9wZW4tc291cmNlIEFOR0xFIHBy
b2plY3QuIFR5cGljYWxseSBvbmUgd291bGQKLSAgICAgICBsYWJlbCBhIG11bHRpLXZlbmRvciBl
eHRlbnNpb24gYXMgRVhULCBidXQgRVhUX2ZyYW1lYnVmZmVyX211bGl0c2FtcGxlIAotICAgICAg
IGlzIGFscmVhZHkgdGhlIG5hbWUgZm9yIHRoaXMgb24gRGVza3RvcCBHTC4gIEFkZGl0aW9uYWxs
eSB0aGlzCi0gICAgICAgaXNuJ3QgdHJ1ZWx5IGEgbXVsdGktdmVuZG9yIGV4dGVuc2lvbiBiZWNh
dXNlIHRoZXJlIGlzIG9ubHkgb25lCi0gICAgICAgaW1wbGVtZW50YXRpb24gb2YgdGhpcy4gIFdl
J2xsIGZvbGxvdyB0aGUgZXhhbXBsZSBvZiB0aGUgb3Blbi1zb3VyY2UKLSAgICAgICBNRVNBIHBy
b2plY3Qgd2hpY2ggdXNlcyB0aGUgcHJvamVjdCBuYW1lIGZvciB0aGUgdmVuZG9yIHN1ZmZpeC4K
LSAKLSAgICAyKSBIb3cgZG9lcyB0aGlzIGV4dGVuc2lvbiBkaWZmZXIgZnJvbSBFWFRfZnJhbWVi
dWZmZXJfbXVsdGlzYW1wbGU/Ci0KLSAgICAgICBUaGlzIGlzIGRlc2lnbmVkIHRvIGJlIGEgcHJv
cGVyIHN1YnNldCBvZiBFWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUKLSAgICAgICBmdW5jdGlv
bmFsaXR5IGFzIGFwcGxpY2FibGUgdG8gT3BlbkdMIEVTIDIuMC4KLQotICAgICAgIEZ1bmN0aW9u
YWxpdHkgdGhhdCBpcyB1bmNoYW5nZWQ6IAotICAgICAgICAtIGNyZWF0aW9uIG9mIG11bHRpc2Ft
cGxlIHJlbmRlcmJ1ZmZlcnMuCi0gICAgICAgIC0gd2hvbGUgYnVmZmVyIG11bHRpLXNhbXBsZS0+
c2luZ2xlLXNhbXBsZSByZXNvbHZlLgotICAgICAgICAtIG5vIGZvcm1hdCBjb252ZXJzaW9ucywg
c3RyZXRjaGluZyBvciBmbGlwcGluZyBzdXBwb3J0ZWQgb24gbXVsdGlzYW1wbGUgYmxpdHMuCi0K
LSAgICAgICBBZGRpdGlvbmFsIHJlc3RyaWN0aW9ucyBvbiBCbGl0RnJhbWVidWZmZXJBTkdMRToK
LSAgICAgICAgLSBtdWx0aXNhbXBsZSByZXNvbHZlIGlzIG9ubHkgc3VwcG9ydGVkIG9uIGNvbG9y
IGJ1ZmZlcnMuCi0gICAgICAgIC0gbm8gYmxpdHMgdG8gbXVsdGlzYW1wbGUgZGVzdGluYXRpb25z
IChubyBzaW5nbGUtPm11bHRpIG9yIG11bHRpLW11bHRpKS4KLSAgICAgICAgLSBvbmx5IGVudGly
ZSBidWZmZXJzIGNhbiBiZSByZXNvbHZlZC4KLSAgICAgICAgIAotUmV2aXNpb24gSGlzdG9yeQot
Ci0gICAgUmV2aXNpb24gMSwgMjAxMC8wNy8wOAotICAgICAgLSBjb3BpZWQgZnJvbSByZXZpc2lv
biA3IG9mIEVYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQotICAgICAgLSByZW1vdmVkIGxhbmd1
YWdlIHRoYXQgd2FzIG5vdCByZWxldmFudCB0byBFUzIgCi0gICAgICAtIHJlYmFzZSBjaGFuZ2Vz
IGFnYWluc3QgdGhlIE9wZW4gR0wgRVMgMi4wIHNwZWNpZmljYXRpb24KLSAgICAgIC0gYWRkZWQg
QU5HTEUtc3BlY2lmaWMgcmVzdHJpY3Rpb25zCi0gICAgUmV2aXNpb24gMiwgMjAxMC8wNy8xOQot
ICAgICAgLSBmaXggbWlzc2luZyBlcnJvciBjb2RlCi0gICAgUmV2aXNpb24gMywgMjAxMC8wOC8w
NgotICAgICAgLSBhZGQgYWRkaXRpb25hbCBjb250cmlidXRvcnMsIHVwZGF0ZSBpbXBsZW1lbnRh
dGlvbiBzdGF0dXMKLSAgICAgIC0gZGlzYWxsb3cgbmVnYXRpdmUgc2FtcGxlcyAKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvQU5HTEVfaW5zdGFuY2VkX2FycmF5cy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9BTkdM
RV9pbnN0YW5jZWRfYXJyYXlzLnR4dAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzLnR4dAkobm9uZXhp
c3RlbnQpCkBAIC0xLDM1OSArMCwwIEBACi1OYW1lCi0KLSAgICBBTkdMRV9pbnN0YW5jZWRfYXJy
YXlzCi0KLU5hbWUgU3RyaW5ncwotCi0gICAgR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cwotCi1D
b250cmlidXRvcnMKLQotICAgIENvbnRyaWJ1dG9ycyB0byBBUkJfaW5zdGFuY2VkX2FycmF5cwot
ICAgIE5pY29sYXMgQ2FwZW5zLCBUcmFuc0dhbWluZyBJbmMuCi0gICAgSmFtZXMgSGVsZmVydHks
IFRyYW5zR2FtaW5nIEluYy4KLSAgICBLZW5uZXRoIFJ1c3NlbGwsIEdvb2dsZSBJbmMuCi0gICAg
VmFuZ2VsaXMgS29ra2V2aXMsIEdvb2dsZSBJbmMuCi0KLUNvbnRhY3QKLQotICAgIERhbmllbCBL
b2NoLCBUcmFuc0dhbWluZyBJbmMuIChkYW5pZWwgJ2F0JyB0cmFuc2dhbWluZy5jb20pCi0KLVN0
YXR1cwotCi0gICAgSW1wbGVtZW50ZWQgaW4gQU5HTEUgcjk3Ni4KLQotVmVyc2lvbgotCi0gICAg
TGFzdCBNb2RpZmllZCBEYXRlOiBGZWJydWFyeSA4LCAyMDEyCi0gICAgQXV0aG9yIFJldmlzaW9u
OiAzCi0KLU51bWJlcgotCi0gICAgT3BlbkdMIEVTIEV4dGVuc2lvbiAjMTA5Ci0KLURlcGVuZGVu
Y2llcwotCi0gICAgT3BlbkdMIEVTIDIuMCBpcyByZXF1aXJlZC4KLQotICAgIFRoaXMgZXh0ZW5z
aW9uIGlzIHdyaXR0ZW4gYWdhaW5zdCB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZpY2F0aW9uLgot
Ci1PdmVydmlldwotCi0gICAgQSBjb21tb24gdXNlIGNhc2UgaW4gR0wgZm9yIHNvbWUgYXBwbGlj
YXRpb25zIGlzIHRvIGJlIGFibGUgdG8KLSAgICBkcmF3IHRoZSBzYW1lIG9iamVjdCwgb3IgZ3Jv
dXBzIG9mIHNpbWlsYXIgb2JqZWN0cyB0aGF0IHNoYXJlCi0gICAgdmVydGV4IGRhdGEsIHByaW1p
dGl2ZSBjb3VudCBhbmQgdHlwZSwgbXVsdGlwbGUgdGltZXMuICBUaGlzIAotICAgIGV4dGVuc2lv
biBwcm92aWRlcyBhIG1lYW5zIG9mIGFjY2VsZXJhdGluZyBzdWNoIHVzZSBjYXNlcyB3aGlsZSAK
LSAgICByZXN0cmljdGluZyB0aGUgbnVtYmVyIG9mIEFQSSBjYWxscywgYW5kIGtlZXBpbmcgdGhl
IGFtb3VudCBvZiAKLSAgICBkdXBsaWNhdGUgZGF0YSB0byBhIG1pbmltdW0uCi0gICAgCi0gICAg
VGhpcyBleHRlbnNpb24gaW50cm9kdWNlcyBhbiBhcnJheSAiZGl2aXNvciIgZm9yIGdlbmVyaWMK
LSAgICB2ZXJ0ZXggYXJyYXkgYXR0cmlidXRlcywgd2hpY2ggd2hlbiBub24temVybyBzcGVjaWZp
ZXMgdGhhdCB0aGUKLSAgICBhdHRyaWJ1dGUgaXMgImluc3RhbmNlZC4iICBBbiBpbnN0YW5jZWQg
YXR0cmlidXRlIGRvZXMgbm90Ci0gICAgYWR2YW5jZSBwZXItdmVydGV4IGFzIHVzdWFsLCBidXQg
cmF0aGVyIGFmdGVyIGV2ZXJ5IDxkaXZpc29yPgotICAgIGNvbmNlcHR1YWwgZHJhdyBjYWxscy4K
LSAgICAKLSAgICAoQXR0cmlidXRlcyB3aGljaCBhcmVuJ3QgaW5zdGFuY2VkIGFyZSByZXBlYXRl
ZCBpbiB0aGVpciBlbnRpcmV0eQotICAgIGZvciBldmVyeSBjb25jZXB0dWFsIGRyYXcgY2FsbC4p
Ci0gICAgCi0gICAgQnkgc3BlY2lmeWluZyB0cmFuc2Zvcm0gZGF0YSBpbiBhbiBpbnN0YW5jZWQg
YXR0cmlidXRlIG9yIHNlcmllcwotICAgIG9mIGluc3RhbmNlZCBhdHRyaWJ1dGVzLCB2ZXJ0ZXgg
c2hhZGVycyBjYW4sIGluIGNvbmNlcnQgd2l0aCB0aGUgCi0gICAgaW5zdGFuY2luZyBkcmF3IGNh
bGxzLCBkcmF3IG11bHRpcGxlIGluc3RhbmNlcyBvZiBhbiBvYmplY3Qgd2l0aCAKLSAgICBvbmUg
ZHJhdyBjYWxsLgotCi1JUCBTdGF0dXMKLQotICAgIE5vIGtub3duIElQIGNsYWltcy4KLQotTmV3
IFRva2VucwotCi0gICAgQWNjZXB0ZWQgYnkgdGhlIDxwbmFtZT4gcGFyYW1ldGVycyBvZiBHZXRW
ZXJ0ZXhBdHRyaWJmdiBhbmQgCi0gICAgR2V0VmVydGV4QXR0cmliaXY6Ci0KLSAgICAgICAgVkVS
VEVYX0FUVFJJQl9BUlJBWV9ESVZJU09SX0FOR0xFICAgICAgICAgICAgICAgMHg4OEZFCi0KLU5l
dyBQcm9jZWR1cmVzIGFuZCBGdW5jdGlvbnMKLQotICAgIHZvaWQgRHJhd0FycmF5c0luc3RhbmNl
ZEFOR0xFKGVudW0gbW9kZSwgaW50IGZpcnN0LCBzaXplaSBjb3VudCwKLSAgICAgICAgICAgIHNp
emVpIHByaW1jb3VudCk7Ci0KLSAgICB2b2lkIERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKGVu
dW0gbW9kZSwgc2l6ZWkgY291bnQsIGVudW0gdHlwZSwKLSAgICAgICAgICAgIGNvbnN0IHZvaWQg
KmluZGljZXMsIHNpemVpIHByaW1jb3VudCk7Ci0KLSAgICB2b2lkIFZlcnRleEF0dHJpYkRpdmlz
b3JBTkdMRSh1aW50IGluZGV4LCB1aW50IGRpdmlzb3IpOwotCi1BZGRpdGlvbnMgdG8gQ2hhcHRl
ciAyIG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmljYXRpb24KLShPcGVuR0wgRVMgT3BlcmF0
aW9uKQotCi0gICAgTW9kaWZ5IHNlY3Rpb24gMi44IChWZXJ0ZXggQXJyYXlzKSwgcC4gMjEKLQot
ICAgIEFmdGVyIGRlc2NyaXB0aW9uIG9mIEVuYWJsZVZlcnRleEF0dHJpYkFycmF5IC8gRGlzYWJs
ZVZlcnRleEF0dHJpYkFycmF5Ci0gICAgYWRkIHRoZSBmb2xsb3dpbmc6Ci0KLSAgICAiVGhlIGNv
bW1hbmQKLQotICAgICAgICB2b2lkIFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSh1aW50IGluZGV4
LCB1aW50IGRpdmlzb3IpOwotCi0gICAgbW9kaWZpZXMgdGhlIHJhdGUgYXQgd2hpY2ggZ2VuZXJp
YyB2ZXJ0ZXggYXR0cmlidXRlcyBhZHZhbmNlIHdoZW4KLSAgICByZW5kZXJpbmcgbXVsdGlwbGUg
aW5zdGFuY2VzIG9mIHByaW1pdGl2ZXMgaW4gYSBzaW5nbGUgZHJhdyBjYWxsCi0gICAgKHNlZSBE
cmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgYW5kIERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFIGJl
bG93KS4KLSAgICBJZiA8ZGl2aXNvcj4gaXMgemVybywgdGhlIGF0dHJpYnV0ZSBhdCBzbG90IDxp
bmRleD4gYWR2YW5jZXMgb25jZQotICAgIHBlciB2ZXJ0ZXguICBJZiA8ZGl2aXNvcj4gaXMgbm9u
LXplcm8sIHRoZSBhdHRyaWJ1dGUgYWR2YW5jZXMgb25jZQotICAgIHBlciA8ZGl2aXNvcj4gaW5z
dGFuY2VzIG9mIHRoZSBwcmltaXRpdmVzIGJlaW5nIHJlbmRlcmVkLgotICAgIEFuIGF0dHJpYnV0
ZSBpcyByZWZlcnJlZCB0byBhcyAiaW5zdGFuY2VkIiBpZiBpdHMgPGRpdmlzb3I+IHZhbHVlIGlz
Ci0gICAgbm9uLXplcm8uIgotCi0gICAgUmVwbGFjZSB0aGUgdGV4dCBkZXNjcmliaW5nIERyYXdB
cnJheXMgYW5kIERyYXdFbGVtZW50cyBpbiB0aGUKLSAgICAiVHJhbnNmZXJyaW5nIEFycmF5IEVs
ZW1lbnRzIiBzdWJzZWN0aW9uIG9mIDIuOCwgZnJvbSB0aGUgc2Vjb25kIHBhcmFncmFwaAotICAg
IHRocm91Z2ggdGhlIGVuZCBvZiB0aGUgc2VjdGlvbiB3aXRoIHRoZSBmb2xsb3dpbmc6Ci0KLSAg
ICAiVGhlIGNvbW1hbmQKLQotICAgICAgICB2b2lkIERyYXdBcnJheXNPbmVJbnN0YW5jZSggZW51
bSBtb2RlLCBpbnQgZmlyc3QsIHNpemVpIGNvdW50LCBpbnQgaW5zdGFuY2UgKTsKLQotICAgIGRv
ZXMgbm90IGV4aXN0IGluIHRoZSBHTCwgYnV0IGlzIHVzZWQgdG8gZGVzY3JpYmUgZnVuY3Rpb25h
bGl0eSBpbgotICAgIHRoZSByZXN0IG9mIHRoaXMgc2VjdGlvbi4gIFRoaXMgZnVuY3Rpb24gY29u
c3RydWN0cyBhIHNlcXVlbmNlIG9mCi0gICAgZ2VvbWV0cmljIHByaW1pdGl2ZXMgYnkgdHJhbnNm
ZXJyaW5nIGVsZW1lbnRzIDxmaXJzdD4gdGhyb3VnaCA8Zmlyc3Q+ICsKLSAgICA8Y291bnQ+IC0g
MSBvZiBlYWNoIGVuYWJsZWQgbm9uLWluc3RhbmNlZCBhcnJheSB0byB0aGUgR0wuIDxtb2RlPgot
ICAgIHNwZWNpZmllcyB3aGF0IGtpbmQgb2YgcHJpbWl0aXZlcyBhcmUgY29uc3RydWN0ZWQsIGFz
IGRlZmluZWQgaW4gc2VjdGlvbgotICAgIDIuNi4xLgotCi0gICAgSWYgYW4gZW5hYmxlZCB2ZXJ0
ZXggYXR0cmlidXRlIGFycmF5IGlzIGluc3RhbmNlZCAoaXQgaGFzIGEgbm9uLXplcm8KLSAgICBh
dHRyaWJ1dGUgPGRpdmlzb3I+IGFzIHNwZWNpZmllZCBieSBWZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUpLCB0aGUgZWxlbWVudAotICAgIHRoYXQgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIEdMIGlzIGdp
dmVuIGJ5OgotCi0gICAgICAgIGZsb29yKCA8aW5zdGFuY2U+IC8gPGRpdmlzb3I+ICkuCi0KLSAg
ICBJZiBhbiBhcnJheSBjb3JyZXNwb25kaW5nIHRvIGEgZ2VuZXJpYyBhdHRyaWJ1dGUgcmVxdWly
ZWQgYnkgYSB2ZXJ0ZXggc2hhZGVyCi0gICAgaXMgbm90IGVuYWJsZWQsIHRoZW4gdGhlIGNvcnJl
c3BvbmRpbmcgZWxlbWVudCBpcyB0YWtlbiBmcm9tIHRoZSBjdXJyZW50Ci0gICAgZ2VuZXJpYyBh
dHRyaWJ1dGUgc3RhdGUgKHNlZSBzZWN0aW9uIDIuNykuCi0KLSAgICBJZiBhbiBhcnJheSBjb3Jy
ZXNwb25kaW5nIHRvIGEgZ2VuZXJpYyBhdHRyaWJ1dGUgcmVxdWlyZWQgYnkgYSB2ZXJ0ZXggc2hh
ZGVyCi0gICAgaXMgZW5hYmxlZCwgdGhlIGNvcnJlc3BvbmRpbmcgY3VycmVudCBnZW5lcmljIGF0
dHJpYnV0ZSB2YWx1ZSBpcyB1bmFmZmVjdGVkIAotICAgIGJ5IHRoZSBleGVjdXRpb24gb2YgRHJh
d0FycmF5c09uZUluc3RhbmNlLgotCi0gICAgU3BlY2lmeWluZyA8Zmlyc3Q+IDwgMCByZXN1bHRz
IGluIHVuZGVmaW5lZCBiZWhhdmlvci4gR2VuZXJhdGluZyB0aGUgZXJyb3IgCi0gICAgSU5WQUxJ
RF9WQUxVRSBpcyByZWNvbW1lbmRlZCBpbiB0aGlzIGNhc2UuCi0KLSAgICBUaGUgY29tbWFuZAot
Ci0gICAgICAgIHZvaWQgRHJhd0FycmF5cyggZW51bSBtb2RlLCBpbnQgZmlyc3QsIHNpemVpIGNv
dW50ICk7Ci0KLSAgICBpcyBlcXVpdmFsZW50IHRvIHRoZSBjb21tYW5kIHNlcXVlbmNlCi0gICAg
Ci0gICAgICAgIERyYXdBcnJheXNPbmVJbnN0YW5jZShtb2RlLCBmaXJzdCwgY291bnQsIDApOwot
Ci0gICAgVGhlIGNvbW1hbmQKLQotICAgICAgICB2b2lkIERyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RShlbnVtIG1vZGUsIGludCBmaXJzdCwgc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgc2l6
ZWkgcHJpbWNvdW50KTsKLQotICAgIGJlaGF2ZXMgaWRlbnRpY2FsbHkgdG8gRHJhd0FycmF5cyBl
eGNlcHQgdGhhdCA8cHJpbWNvdW50PgotICAgIGluc3RhbmNlcyBvZiB0aGUgcmFuZ2Ugb2YgZWxl
bWVudHMgYXJlIGV4ZWN1dGVkLCBhbmQgdGhlCi0gICAgPGluc3RhbmNlPiBhZHZhbmNlcyBmb3Ig
ZWFjaCBpdGVyYXRpb24uIEluc3RhbmNlZCBhdHRyaWJ1dGVzIHRoYXQKLSAgICBoYXZlIDxkaXZp
c29yPiBOLCAod2hlcmUgTiA+IDAsIGFzIHNwZWNpZmllZCBieQotICAgIFZlcnRleEF0dHJpYkRp
dmlzb3JBTkdMRSkgYWR2YW5jZSBvbmNlIGV2ZXJ5IE4gaW5zdGFuY2VzLgotICAgIAotICAgIEl0
IGhhcyB0aGUgc2FtZSBlZmZlY3QgYXM6IAotCi0gICAgICAgIGlmIChtb2RlLCBjb3VudCwgb3Ig
cHJpbWNvdW50IGlzIGludmFsaWQpCi0gICAgICAgICAgICBnZW5lcmF0ZSBhcHByb3ByaWF0ZSBl
cnJvcgotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwcmltY291
bnQ7IGkrKykgewotICAgICAgICAgICAgICAgIERyYXdBcnJheXNPbmVJbnN0YW5jZShtb2RlLCBm
aXJzdCwgY291bnQsIGkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICBUaGUgY29t
bWFuZAotCi0gICAgICAgdm9pZCBEcmF3RWxlbWVudHNPbmVJbnN0YW5jZSggZW51bSBtb2RlLCBz
aXplaSBjb3VudCwgZW51bSB0eXBlLAotICAgICAgICAgICAgdm9pZCAqaW5kaWNlcywgaW50IGlu
c3RhbmNlICk7Ci0KLSAgICBkb2VzIG5vdCBleGlzdCBpbiB0aGUgR0wsIGJ1dCBpcyB1c2VkIHRv
IGRlc2NyaWJlIGZ1bmN0aW9uYWxpdHkgaW4KLSAgICB0aGUgcmVzdCBvZiB0aGlzIHNlY3Rpb24u
ICBUaGlzIGNvbW1hbmQgY29uc3RydWN0cyBhIHNlcXVlbmNlIG9mCi0gICAgZ2VvbWV0cmljIHBy
aW1pdGl2ZXMgYnkgc3VjY2Vzc2l2ZWx5IHRyYW5zZmVycmluZyB0aGUgPGNvdW50PiBlbGVtZW50
cwotICAgIHdob3NlIGluZGljZXMgYXJlIHN0b3JlZCBpbiB0aGUgY3VycmVudGx5IGJvdW5kIGVs
ZW1lbnQgYXJyYXkgYnVmZmVyCi0gICAgKHNlZSBzZWN0aW9uIDIuOS4yKSBhdCB0aGUgb2Zmc2V0
IGRlZmluZWQgYnkgPGluZGljZXM+IHRvIHRoZSBHTC4KLSAgICBUaGUgPGk+LXRoIGVsZW1lbnQg
dHJhbnNmZXJyZWQgYnkgRHJhd0VsZW1lbnRzT25lSW5zdGFuY2Ugd2lsbCBiZSB0YWtlbgotICAg
IGZyb20gZWxlbWVudCA8aW5kaWNlcz5baV0gb2YgZWFjaCBlbmFibGVkIG5vbi1pbnN0YW5jZWQg
YXJyYXkuCi0gICAgPHR5cGU+IG11c3QgYmUgb25lIG9mIFVOU0lHTkVEX0JZVEUsIFVOU0lHTkVE
X1NIT1JULCBvciBVTlNJR05FRF9JTlQsIAotICAgIGluZGljYXRpbmcgdGhhdCB0aGUgaW5kZXgg
dmFsdWVzIGFyZSBvZiBHTCB0eXBlIHVieXRlLCB1c2hvcnQsIG9yIHVpbnQKLSAgICByZXNwZWN0
aXZlbHkuIDxtb2RlPiBzcGVjaWZpZXMgd2hhdCBraW5kIG9mIHByaW1pdGl2ZXMgYXJlIGNvbnN0
cnVjdGVkLAotICAgIGFzIGRlZmluZWQgaW4gc2VjdGlvbiAyLjYuMS4KLQotICAgIElmIGFuIGVu
YWJsZWQgdmVydGV4IGF0dHJpYnV0ZSBhcnJheSBpcyBpbnN0YW5jZWQgKGl0IGhhcyBhIG5vbi16
ZXJvCi0gICAgYXR0cmlidXRlIDxkaXZpc29yPiBhcyBzcGVjaWZpZWQgYnkgVmVydGV4QXR0cmli
RGl2aXNvckFOR0xFKSwgdGhlIGVsZW1lbnQKLSAgICB0aGF0IGlzIHRyYW5zZmVycmVkIHRvIHRo
ZSBHTCBpcyBnaXZlbiBieToKLQotICAgICAgICBmbG9vciggPGluc3RhbmNlPiAvIDxkaXZpc29y
PiApOwotCi0gICAgSWYgYW4gYXJyYXkgY29ycmVzcG9uZGluZyB0byBhIGdlbmVyaWMgYXR0cmli
dXRlIHJlcXVpcmVkIGJ5IGEgdmVydGV4Ci0gICAgc2hhZGVyIGlzIG5vdCBlbmFibGVkLCB0aGVu
IHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgaXMgdGFrZW4gZnJvbSB0aGUgCi0gICAgY3VycmVu
dCBnZW5lcmljIGF0dHJpYnV0ZSBzdGF0ZSAoc2VlIHNlY3Rpb24gMi43KS4gT3RoZXJ3aXNlLCBp
ZiBhbiBhcnJheQotICAgIGlzIGVuYWJsZWQsIHRoZSBjb3JyZXNwb25kaW5nIGN1cnJlbnQgZ2Vu
ZXJpYyBhdHRyaWJ1dGUgdmFsdWUgaXMgCi0gICAgdW5hZmZlY3RlZCBieSB0aGUgZXhlY3V0aW9u
IG9mIERyYXdFbGVtZW50c09uZUluc3RhbmNlLgotCi0gICAgVGhlIGNvbW1hbmQKLQotICAgICAg
ICB2b2lkIERyYXdFbGVtZW50cyggZW51bSBtb2RlLCBzaXplaSBjb3VudCwgZW51bSB0eXBlLAot
ICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmluZGljZXMpOwotCi0gICAgYmVoYXZlcyBpZGVudGlj
YWxseSB0byBEcmF3RWxlbWVudHNPbmVJbnN0YW5jZSB3aXRoIHRoZSA8aW5zdGFuY2U+IAotICAg
IHBhcmFtZXRlciBzZXQgdG8gemVybzsgdGhlIGVmZmVjdCBvZiBjYWxsaW5nCi0KLSAgICAgICAg
RHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCBpbmRpY2VzKTsKLQotICAgIGlzIGVxdWl2
YWxlbnQgdG8gdGhlIGNvbW1hbmQgc2VxdWVuY2U6Ci0KLSAgICAgICBpZiAobW9kZSwgY291bnQg
b3IgdHlwZSBpcyBpbnZhbGlkICkKLSAgICAgICAgICAgIGdlbmVyYXRlIGFwcHJvcHJpYXRlIGVy
cm9yCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIERyYXdFbGVtZW50c09uZUluc3RhbmNlKG1v
ZGUsIGNvdW50LCB0eXBlLCBpbmRpY2VzLCAwKTsKLQotICAgIFRoZSBjb21tYW5kCi0KLSAgICAg
ICAgdm9pZCBEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShlbnVtIG1vZGUsIHNpemVpIGNvdW50
LCBlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5kaWNlcywgc2l6ZWkg
cHJpbWNvdW50KTsKLQotICAgIGJlaGF2ZXMgaWRlbnRpY2FsbHkgdG8gRHJhd0VsZW1lbnRzIGV4
Y2VwdCB0aGF0IDxwcmltY291bnQ+Ci0gICAgaW5zdGFuY2VzIG9mIHRoZSBzZXQgb2YgZWxlbWVu
dHMgYXJlIGV4ZWN1dGVkIGFuZCB0aGUgaW5zdGFuY2UKLSAgICBhZHZhbmNlcyBiZXR3ZWVuIGVh
Y2ggc2V0LiBJbnN0YW5jZWQgYXR0cmlidXRlcyBhcmUgYWR2YW5jZWQgYXMgdGhleSBkbwotICAg
IGR1cmluZyB0aGUgZXhlY3V0aW9uIG9mIERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRS4gSXQgaGFz
IHRoZSBzYW1lIGVmZmVjdCBhczoKLQotICAgICAgICBpZiAobW9kZSwgY291bnQsIHByaW1jb3Vu
dCwgb3IgdHlwZSBpcyBpbnZhbGlkICkKLSAgICAgICAgICAgIGdlbmVyYXRlIGFwcHJvcHJpYXRl
IGVycm9yCi0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBw
cmltY291bnQ7IGkrKykgewotICAgICAgICAgICAgICAgIERyYXdFbGVtZW50c09uZUluc3RhbmNl
KG1vZGUsIGNvdW50LCB0eXBlLCBpbmRpY2VzLCBpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotCi0gICAgSWYgdGhlIG51bWJlciBvZiBzdXBwb3J0ZWQgZ2VuZXJpYyB2ZXJ0ZXggYXR0cmli
dXRlcyAodGhlIHZhbHVlIG9mIAotICAgIE1BWF9WRVJURVhfQVRUUklCUykgaXMgPG4+LCB0aGVu
IHRoZSBjbGllbnQgc3RhdGUgcmVxdWlyZWQgdG8gaW1wbGVtZW50Ci0gICAgdmVydGV4IGFycmF5
cyBjb25zaXN0cyBvZiA8bj4gYm9vbGVhbiB2YWx1ZXMsIDxuPiBtZW1vcnkgcG9pbnRlcnMsIDxu
PgotICAgIGludGVnZXIgc3RyaWRlIHZhbHVlcywgPG4+IHN5bWJvbGljIGNvbnN0YW50cyByZXBy
ZXNlbnRpbmcgYXJyYXkgdHlwZXMsCi0gICAgPG4+IGludGVnZXJzIHJlcHJlc2VudGluZyB2YWx1
ZXMgcGVyIGVsZW1lbnQsIDxuPiBib29sZWFuIHZhbHVlcyAKLSAgICBpbmRpY2F0aW5nIG5vcm1h
bGl6YXRpb24sIGFuZCA8bj4gaW50ZWdlcnMgcmVwcmVzZW50aW5nIHZlcnRleCBhdHRyaWJ1dGUK
LSAgICBkaXZpc29ycy4gCi0KLSAgICBJbiB0aGUgaW5pdGlhbCBzdGF0ZSwgdGhlIGJvb2xlYW4g
dmFsdWVzIGFyZSBlYWNoIGZhbHNlLCB0aGUgbWVtb3J5Ci0gICAgcG9pbnRlcnMgYXJlIGVhY2gg
TlVMTCwgdGhlIHN0cmlkZXMgYXJlIGVhY2ggemVybywgdGhlIGFycmF5IHR5cGVzIGFyZSAKLSAg
ICBlYWNoIEZMT0FULCB0aGUgaW50ZWdlcnMgcmVwcmVzZW50aW5nIHZhbHVlcyBwZXIgZWxlbWVu
dCBhcmUgZWFjaCBmb3VyLAotICAgIGFuZCB0aGUgZGl2aXNvcnMgYXJlIGVhY2ggemVyby4iCi0K
LUFkZGl0aW9ucyB0byBDaGFwdGVyIDMgb2YgdGhlIE9wZW5HTCBFUyAyLjAgU3BlY2lmaWNhdGlv
biAoUmFzdGVyaXphdGlvbikKLQotICAgIE5vbmUKLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgNCBv
ZiB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZpY2F0aW9uIChQZXItRnJhZ21lbnQKLU9wZXJhdGlv
bnMgYW5kIHRoZSBGcmFtZWJ1ZmZlcikKLQotICAgIE5vbmUKLQotQWRkaXRpb25zIHRvIENoYXB0
ZXIgNSBvZiB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZpY2F0aW9uIChTcGVjaWFsIEZ1bmN0aW9u
cykKLQotICAgIE5vbmUKLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgNiBvZiB0aGUgT3BlbkdMIEVT
IDIuMCBTcGVjaWZpY2F0aW9uIChTdGF0ZSBhbmQgU3RhdGUKLVJlcXVlc3RzKQotCi0gICAgSW4g
c2VjdGlvbiA2LjEuOCwgYWRkIFZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNPUl9BTkdMRSB0byB0
aGUgbGlzdCBvZiAKLSAgICBwbmFtZXMgYWNjZXB0ZWQgYnkgR2V0VmVydGV4QXR0cmliZnYgYW5k
IEdldFZlcnRleEF0dHJpYml2LgotCi1BZGRpdGlvbnMgdG8gdGhlIEFHTC9FR0wvR0xYL1dHTCBT
cGVjaWZpY2F0aW9ucwotCi0gICAgTm9uZQotCi1EZXBlbmRlbmNpZXMgb24gT0VTX2VsZW1lbnRf
aW5kZXhfdWludAotCi0gICAgSWYgT0VTX2VsZW1lbnRfaW5kZXhfdWludCBpcyBub3Qgc3VwcG9y
dGVkLCByZW1vdmVkIGFsbCByZWZlcmVuY2VzCi0gICAgdG8gVU5TSUdORURfSU5UIGluZGljZXMg
YW5kIHRoZSBhc3NvY2lhdGVkIEdMIGRhdGEgdHlwZSB1aW50IGluIAotICAgIHRoZSBkZXNjcmlw
dGlvbiBvZiBEcmF3RWxlbWVudHNPbmVJbnN0YW5jZS4KLQotRXJyb3JzCi0KLSAgICBJTlZBTElE
X1ZBTFVFIGlzIGdlbmVyYXRlZCBieSBWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUgaWYgPGluZGV4
PgotICAgIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBNQVhfVkVSVEVYX0FUVFJJQlMuCi0K
LSAgICBJTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGJ5IERyYXdFbGVtZW50c0luc3RhbmNlZEFO
R0xFIGlmIDx0eXBlPiBpcwotICAgIG5vdCBvbmUgb2YgVU5TSUdORURfQllURSwgVU5TSUdORURf
U0hPUlQgb3IgVU5TSUdORURfSU5ULgotCi0gICAgSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQg
YnkgRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFIGlmIDxmaXJzdD4sCi0gICAgPGNvdW50Piwgb3Ig
PHByaW1jb3VudD4gaXMgbGVzcyB0aGFuIHplcm8uCi0KLSAgICBJTlZBTElEX0VOVU0gaXMgZ2Vu
ZXJhdGVkIGJ5IERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSBvciAKLSAgICBEcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRSBpZiA8bW9kZT4gaXMgbm90IG9uZSBvZiB0aGUgbW9kZXMgZGVzY3JpYmVk
IGluCi0gICAgc2VjdGlvbiAyLjYuMS4KLQotICAgIElOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVk
IGJ5IERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFIGlmIDxjb3VudD4gb3IKLSAgICA8cHJpbWNv
dW50PiBpcyBsZXNzIHRoYW4gemVyby4KLQotICAgIElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVy
YXRlZCBieSBEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgb3IgCi0gICAgRHJhd0VsZW1lbnRzSW5z
dGFuY2VkQU5HTEUgaWYgdGhlcmUgaXMgbm90IGF0IGxlYXN0IG9uZSBlbmFibGVkCi0gICAgdmVy
dGV4IGF0dHJpYnV0ZSBhcnJheSB0aGF0IGhhcyBhIDxkaXZpc29yPiBvZiB6ZXJvIGFuZCBpcyBi
b3VuZCB0byBhbgotICAgIGFjdGl2ZSBnZW5lcmljIGF0dHJpYnV0ZSB2YWx1ZSBpbiB0aGUgcHJv
Z3JhbSB1c2VkIGZvciB0aGUgZHJhdyBjb21tYW5kLgotCi1OZXcgU3RhdGUKLQotICAgIENoYW5n
ZXMgdG8gdGFibGUgNi43LCBwLiAyNjggKFZlcnRleCBBcnJheSBEYXRhKQotCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0
aWFsCi0gICAgR2V0IFZhbHVlICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgR2V0IENv
bW1hbmQgICAgICBWYWx1ZSAgICBEZXNjcmlwdGlvbiAgICAgICBTZWMuICAKLSAgICAtLS0tLS0t
LS0gICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tICAtLS0tLS0tLS0tLSAgICAgIC0tLS0t
LS0gIC0tLS0tLS0tLS0tICAgICAgIC0tLS0KLSAgICBWRVJURVhfQVRUUklCX0FSUkFZX0RJVklT
T1JfQU5HTEUgIDgqeForICBHZXRWZXJ0ZXhBdHRyaWIgIDAgICAgICAgIEluc3RhbmNlIERpdmlz
b3IgIDIuOAotCi1Jc3N1ZXMKLQotICAgIDEpIFNob3VsZCB2ZXJ0ZXggYXR0cmlidXRlIHplcm8g
YmUgaW5zdGFuY2UtYWJsZT8KLQotICAgICAgIFJlc29sdmVkOiBZZXMuIAotICAgICAgIERpc2N1
c3Npb246IEluIERpcmVjdDNEIDkgc3RyZWFtIDAgbXVzdCBiZSBzcGVjaWZpZWQgYXMgaW5kZXhl
ZCBkYXRhCi0gICAgICAgYW5kIGl0IGNhbm5vdCBiZSBpbnN0YW5jZWQuIEluIEFOR0xFIHdlIGNh
biB3b3JrIGFyb3VuZCB0aGlzIGJ5Ci0gICAgICAgcmVtYXBwaW5nIGFueSBvdGhlciBzdHJlYW0g
dGhhdCBkb2VzIGhhdmUgaW5kZXhlZCBkYXRhIChpZSBhIHplcm8KLSAgICAgICBhdHRyaWJ1dGUg
ZGl2aXNvcikgdG8gc3RyZWFtIDAgaW4gRDNEOS4gVGhpcyB3b3JrcyBiZWNhdXNlIHRoZSBITFNM
Ci0gICAgICAgdmVydGV4IHNoYWRlciBtYXRjaGVzIGF0dHJpYnV0ZXMgYWdhaW5zdCB0aGUgc3Ry
ZWFtIGJ5IHVzaW5nIHRoZSAKLSAgICAgICBzaGFkZXIgc2VtYW50aWMgaW5kZXguCi0KLSAgICAy
KSBDYW4gYWxsIHZlcnRleCBhdHRyaWJ1dGVzIGJlIGluc3RhbmNlZCBzaW11bHRhbmVvdXNseT8K
LQotICAgICAgIFJlc29sdmVkOiBObwotICAgICAgIERpc2N1c3Npb246IEluIHJhcmUgY2FzZXMg
aXQgaXMgcG9zc2libGUgZm9yIG5vIGF0dHJpYnV0ZSB0byBoYXZlIGEgCi0gICAgICAgZGl2aXNv
ciBvZiAwLCBtZWFuaW5nIHRoYXQgYWxsIGF0dHJpYnV0ZXMgYXJlIGluc3RhbmNlZCBhbmQgbm9u
ZSBvZgotICAgICAgIHRoZW0gYXJlIHJlZ3VsYXJseSBpbmRleGVkLiBUaGlzIGluIHR1cm4gbWVh
bnMgZWFjaCBpbnN0YW5jZSBjYW4gb25seQotICAgICAgIGhhdmUgYSBzaW5nbGUgcG9zaXRpb24g
ZWxlbWVudCwgYW5kIHNvIGl0IG9ubHkgYWN0dWFsbHkgcmVuZGVycwotICAgICAgIHNvbWV0aGlu
ZyB3aGVuIHJlbmRlcmluZyBwb2ludCBwcmltaXRpdmVzLiBUaGlzIGlzIG5vdCBhIHZlcnkgCi0g
ICAgICAgbWVhbmluZ2Z1bCB3YXkgb2YgdXNpbmcgaW5zdGFuY2luZyAod2hpY2ggaXMgbGlrZWx5
IHdoeSBEM0QgcmVzdHJpY3RzCi0gICAgICAgc3RyZWFtIDAgdG8gYmUgaW5kZXhlZCByZWd1bGFy
bHkgZm9yIHBvc2l0aW9uIGRhdGEgaW4gdGhlIGZpcnN0IHBsYWNlKS4KLSAgICAgICBXZSBjb3Vs
ZCBpbXBsZW1lbnQgaXQgYnkgZHJhd2luZyB0aGVzZSBwb2ludHMgb25lIGF0IGEgdGltZSAoZXNz
ZW50aWFsbHkKLSAgICAgICBlbXVsYXRpbmcgaW5zdGFuY2luZyksIGJ1dCBpdCB3b3VsZCBub3Qg
YmUgdmVyeSBlZmZpY2llbnQgYW5kIHRoZXJlCi0gICAgICAgc2VlbXMgdG8gYmUgbGl0dGxlLXRv
LW5vIHZhbHVlIGluIGRvaW5nIHNvLgotCi0gICAgICAgSWYgYWxsIG9mIHRoZSBlbmFibGVkIHZl
cnRleCBhdHRyaWJ1dGUgYXJyYXlzIHRoYXQgYXJlIGJvdW5kIHRvIGFjdGl2ZQotICAgICAgIGdl
bmVyaWMgYXR0cmlidXRlcyBpbiB0aGUgcHJvZ3JhbSBoYXZlIGEgbm9uLXplcm8gZGl2aXNvciwg
dGhlIGRyYXcKLSAgICAgICBjYWxsIHNob3VsZCByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT04uCi0K
LSAgICAzKSBEaXJlY3QzRCA5IG9ubHkgc3VwcG9ydHMgaW5zdGFuY2luZyBmb3IgRHJhd0luZGV4
ZWRQcmltaXRpdmUgd2hpY2gKLSAgICAgICBjb3JyZXNwb25kcyB0byBEcmF3RWxlbWVudHNJbnN0
YW5jZWQuICBTaG91bGQgd2Ugc3VwcG9ydCAKLSAgICAgICBEcmF3QXJyYXlzSW5zdGFuY2VkPwot
Ci0gICAgICAgUmVzb2x2ZWQ6IFllcwotICAgICAgIERpc2N1c3Npb246IFRoaXMgY2FuIGJlIHN1
cHBvcnRlZCBlYXNpbHkgZW5vdWdoIGJ5IHNpbXBseSBtYW51ZmFjdHVyaW5nCi0gICAgICAgYSBs
aW5lYXIgaW5kZXggYnVmZmVyIG9mIHN1ZmZpY2llbnQgc2l6ZSBhbmQgdXNpbmcgdGhhdCB0byBk
byBpbmRleGVkCi0gICAgICAgRDNEOSBkcmF3aW5nLgotCi0gICAgNCkgSG93IG11Y2ggZGF0YSBp
cyBuZWVkZWQgaW4gYSBidWZmZXIgZm9yIGFuIGluc3RhbmNlZCBhdHRyaWJ1dGU/Ci0KLSAgICAg
ICBSZXNvbHZlZDogV2hlcmUgc3RyaWRlIGlzIHRoZSB2YWx1ZSBwYXNzZWQgdG8gVmVydGV4QXR0
cmliUG9pbnRlcjoKLQotICAgICAgIGlmIHN0cmlkZSA+IDAKLSAgICAgICAgIHNpemUgPSBzdHJp
ZGUgKiBjZWlsKHByaW1jb3VudCAvIGRpdmlzb3IpOwotICAgICAgIGVsc2UKLSAgICAgICAgIHNp
emUgPSBlbGVtZW50c2l6ZSAqIGNlaWwocHJpbWNvdW50IC8gZGl2aXNvcik7Ci0KLVJldmlzaW9u
IEhpc3RvcnkKLQotICAgICMzIEZlYnJ1YXJ5IDgsIDIwMTIgZGdrb2NoCi0gICAgICAgLSBjbGFy
aWZ5IElzc3VlIDMgYW5kIHRoZSBlcnJvciBjb25kaXRpb24gZm9yIG5vIGluZGV4ZWQgYXR0cmli
dXRlcwotICAgICMyIEphbnVhcnkgMjQsIDIwMTIgZGdrb2NoCi0gICAgICAgLSBmaXggdHlwb3Ms
IGFkZCBjbGFyaWZpY2F0aW9ucywgYW5kIG1vcmUgZXJyb3JzCi0gICAgIzEgSmFudWFyeSAxNywg
MjAxMiBkZ2tvY2gKLSAgICAgICAtIGluaXRpYWwgR0xFUzIgdmVyc2lvbiBmcm9tIEFSQl9pbnN0
YW5jZWRfYXJyYXlzCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0FO
R0xFX3BhY2tfcmV2ZXJzZV9yb3dfb3JkZXIudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvQU5HTEVfcGFja19yZXZlcnNlX3Jvd19vcmRlci50eHQJ
KHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMv
QU5HTEVfcGFja19yZXZlcnNlX3Jvd19vcmRlci50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNjgg
KzAsMCBAQAotTmFtZQotCi0gICAgQU5HTEVfcGFja19yZXZlcnNlX3Jvd19vcmRlcgotCi1OYW1l
IFN0cmluZ3MKLQotICAgIEdMX0FOR0xFX3BhY2tfcmV2ZXJzZV9yb3dfb3JkZXIKLQotQ29udGFj
dAotCi0gICAgRGFuaWVsIEtvY2gsIFRyYW5zR2FtaW5nIChkYW5pZWwgJ2F0JyB0cmFuc2dhbWlu
Zy5jb20pCi0KLUNvbnRyaWJ1dG9ycwotCi0gICAgQnJpYW4gU2Fsb21vbgotICAgIERhbmllbCBL
b2NoCi0KLVN0YXR1cwotCi0gICAgSW1wbGVtZW50ZWQgaW4gQU5HTEUgRVMyCi0KLVZlcnNpb24K
LQotICAgIExhc3QgTW9kaWZpZWQgRGF0ZTogRmVicnVhcnkgMjIsIDIwMTEKLSAgICBBdXRob3Ig
UmV2aXNpb246IDIyCi0KLU51bWJlcgotCi0gICAgT3BlbkdMIEVTIEV4dGVuc2lvbiAjMTEwCi0K
LURlcGVuZGVuY2llcwotCi0gICAgT3BlbkdMIDEuNSBvciBPcGVuR0wgRVMgMS4wIGFyZSByZXF1
aXJlZC4KLQotICAgIFNvbWUgb2YgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhpcyBleHRlbnNpb24g
aXMgbm90IHN1cHBvcnRlZAotICAgIHdoZW4gaW1wbGVtZW50ZWQgYWdhaW5zdCBPcGVuR0wgRVMu
Ci0KLSAgICBFWFRfdGV4dHVyZV9yZyBpbnRlcmFjdHMgd2l0aCB0aGlzIGV4dGVuc2lvbi4KLQot
ICAgIFRoZSBleHRlbnNpb24gaXMgd3JpdHRlbiBhZ2FpbnN0IHRoZSBPcGVuR0wgMy4yIFNwZWNp
ZmljYXRpb24KLSAgICAoQ29yZSBQcm9maWxlKS4KLQotT3ZlcnZpZXcKLQotICAgIFRoaXMgZXh0
ZW5zaW9uIGludHJvZHVjZXMgYSBtZWNoYW5pc20gdG8gYWxsb3cgcmV2ZXJzaW5nIHRoZSBvcmRl
cgotICAgIGluIHdoaWNoIGltYWdlIHJvd3MgYXJlIHdyaXR0ZW4gaW50byBhIHBhY2sgZGVzdGlu
YXRpb24uIFRoaXMKLSAgICBlZmZlY3RpdmVseSBhbGxvd3MgYW4gYXBwbGljYXRpb24gdG8gZmxp
cCB0aGUgcmVzdWx0cyBvZiBhIFJlYWRQaXhlbHMKLSAgICBpbiB0aGUgeSBkaXJlY3Rpb24gb3Bl
cmF0aW9uIHdpdGhvdXQgaGF2aW5nIHRvIHJlbmRlciB1cHNpZGUgZG93bi4KLQotICAgIFRoZSBj
b29yZGluYXRlIHN5c3RlbSBvZiBPcGVuR0wgaXMgdmVydGljYWxseSByZXZlcnNlZCBpbiBjb21w
YXJpc29uIHRvIGEKLSAgICBudW1iZXIgb2Ygb3RoZXIgZ3JhcGhpY3Mgc3lzdGVtcyBzdWNoIGFz
IG5hdGl2ZSB3aW5kb3dpbmcgQVBJcy4gQXBwbGljYXRpb25zCi0gICAgdGhhdCBwZXJmb3JtIFJl
YWRQaXhlbHMgbWF5IGhhdmUgdG8gZWl0aGVyIHJlbmRlciB0byBhbiBpbnRlcm1lZGlhdGUgY29s
b3IKLSAgICBidWZmZXIgYmVmb3JlIGNhbGxpbmcgUmVhZFBpeGVscyBvciBwZXJmb3JtIGEgZmxp
cCBpbiBzb2Z0d2FyZSBhZnRlcgotICAgIFJlYWRQaXhlbHMuIEluIHNvbWUgc3lzdGVtcyB0aGUg
R0wgY2FuIHBlcmZvcm0gdGhlIHJvdyByZXZlcnNhbCBkdXJpbmcKLSAgICBSZWFkUGl4ZWxzIHdp
dGhvdXQgaW5jdXJyaW5nIGFkZGl0aW9uYWwgY29zdC4KLQotSVAgU3RhdHVzCi0KLSAgICBObyBr
bm93biBJUCBjbGFpbXMuCi0KLU5ldyBQcm9jZWR1cmVzIGFuZCBGdW5jdGlvbnMKLQotICAgIE5v
bmUKLQotTmV3IFR5cGVzCi0KLSAgICBOb25lCi0KLU5ldyBUb2tlbnMKLQotICAgIEFjY2VwdGVk
IGJ5IHRoZSA8cG5hbWU+IHBhcmFtZXRlciBvZiBQaXhlbFN0b3Jle2lmfSwgR2V0SW50ZWdlcnYo
KSwKLSAgICBHZXRCb29sZWFudigpLCBhbmQgR2V0RmxvYXR2KCk6Ci0KLSAgICAgICAgUEFDS19S
RVZFUlNFX1JPV19PUkRFUl9BTkdMRSAgICAweDkzQTQKLQotQWRkaXRpb25zIHRvIENoYXB0ZXIg
MyBvZiB0aGUgT3BlbkdMIDMuMiBTcGVjaWZpY2F0aW9uIChSYXN0ZXJpemF0aW9uKQotCi0gICAg
SW4gU2VjdGlvbiA0LjMuMSAoUmVhZGluZyBQaXhlbHMpIGFkZCBhIHJvdyB0byB0YWJsZSA0Ljc6
Ci0KLSAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t
LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rCi0gICAgICAgIHwgUGFyYW1ldGVyIE5hbWUgICAg
ICAgICAgICAgICB8IFR5cGUgICAgfCBJbml0aWFsIFZhbHVlIHwgVmFsaWQgUmFuZ2UgfAotICAg
ICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t
LS0tLS0rLS0tLS0tLS0tLS0tLSsKLSAgICAgICAgfCBQQUNLX1JFVkVSU0VfUk9XX09SREVSX0FO
R0xFIHwgYm9vbGVhbiB8IEZBTFNFICAgICAgICAgfCBUUlVFL0ZBTFNFICB8Ci0gICAgICAgICst
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSst
LS0tLS0tLS0tLS0tKwotCi0gICAgSW4gU2VjdGlvbiA0LjMuMSAoUmVhZGluZyBQaXhlbHMpIG1v
ZGlmeSB0aGUgc2Vjb25kIHBhcmFncmFwaCBvZiBzdWJzZWN0aW9uIAotICAgICJQbGFjZW1lbnQg
aW4gUGl4ZWwgUGFjayBCdWZmZXIgb3IgQ2xpZW50IE1lbW9yeSIgdG8gcmVhZDoKLQotICAgICAg
ICBXaGVuIFBBQ0tfUkVWRVJTRV9ST1dfT1JERVJfQU5HTEUgaXMgRkFMU0UgZ3JvdXBzIG9mIGVs
ZW1lbnRzIGFyZSBwbGFjZWQKLSAgICAgICAgaW4gbWVtb3J5IGp1c3QgYXMgdGhleSBhcmUgdGFr
ZW4gZnJvbSBtZW1vcnkgd2hlbiB0cmFuc2ZlcnJpbmcgcGl4ZWwKLSAgICAgICAgcmVjdGFuZ2xl
cyB0byB0aGUgR0wuIFRoYXQgaXMsIHRoZSBpdGggZ3JvdXAgb2YgdGhlIGp0aCByb3cKLSAgICAg
ICAgKGNvcnJlc3BvbmRpbmcgdG8gdGhlIGl0aCBwaXhlbCBpbiB0aGUganRoIHJvdykgaXMgcGxh
Y2VkIGluIG1lbW9yeSBqdXN0Ci0gICAgICAgIHdoZXJlIHRoZSBpdGggZ3JvdXAgb2YgdGhlIGp0
aCByb3cgd291bGQgYmUgdGFrZW4gZnJvbSB3aGVuIHRyYW5zZmVycmluZwotICAgICAgICBwaXhl
bHMuIFNlZSBVbnBhY2tpbmcgdW5kZXIgc2VjdGlvbiAzLjcuMi4gVGhlIG9ubHkgZGlmZmVyZW5j
ZSBpcyB0aGF0Ci0gICAgICAgIHRoZSBzdG9yYWdlIG1vZGUgcGFyYW1ldGVycyB3aG9zZSBuYW1l
cyBiZWdpbiB3aXRoIFBBQ0tfIGFyZSB1c2VkCi0gICAgICAgIGluc3RlYWQgb2YgdGhvc2Ugd2hv
c2UgbmFtZXMgYmVnaW4gd2l0aCBVTlBBQ0tfLiBJZiB0aGUgZm9ybWF0IGlzIFJFRCwKLSAgICAg
ICAgR1JFRU4sIEJMVUUsIG9yIEFMUEhBLCBvbmx5IHRoZSBjb3JyZXNwb25kaW5nIHNpbmdsZSBl
bGVtZW50IGlzIHdyaXR0ZW4uCi0gICAgICAgIExpa2V3aXNlIGlmIHRoZSBmb3JtYXQgaXMgUkcs
IFJHQiwgb3IgQkdSLCBvbmx5IHRoZSBjb3JyZXNwb25kaW5nIHR3byBvcgotICAgICAgICB0aHJl
ZSBlbGVtZW50cyBhcmUgd3JpdHRlbi4gT3RoZXJ3aXNlIGFsbCB0aGUgZWxlbWVudHMgb2YgZWFj
aCBncm91cCBhcmUKLSAgICAgICAgd3JpdHRlbi4gV2hlbiBQQUNLX1JFVkVSU0VfUk9XX09SREVS
X0FOR0xFIGlzIFRSVUUgdGhlIG9yZGVyIG9mIHRoZSByb3dzCi0gICAgICAgIG9mIGVsZW1lbnRz
IGlzIHJldmVyc2VkIGJlZm9yZSB0aGUgZGF0YSBpcyBwYWNrZWQuIFRoYXQgaXMsIHRoZSBlbGVt
ZW50Ci0gICAgICAgIGNvcnJlc3BvbmRpbmcgdG8gcGl4ZWwgKHgsIHkgKyBoZWlnaHQgLSAxKSBi
ZWNvbWVzIHRoZSBmaXJzdCBlbGVtZW50Ci0gICAgICAgIHBhY2tlZCwgZm9sbG93ZWQgYnkgKHgg
KyAxLCB5ICsgaGVpZ2h0IC0gMSksIGV0Yy4gT3RoZXJ3aXNlLCBwaXhlbCBkYXRhCi0gICAgICAg
IGlzIHBhY2tlZCBpbiB0aGUgc2FtZSBtYW5uZXIgYXMgd2hlbiBQQUNLX1JFVkVSU0VfUk9XX09S
REVSX0FOR0xFIGlzCi0gICAgICAgIEZBTFNFLgotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciA2IG9m
IHRoZSBPcGVuR0wgMy4yIFNwZWNpZmljYXRpb24gKFN0YXRlIGFuZCBTdGF0ZSBSZXF1ZXN0cykK
LQotICAgIEluIFNlY3Rpb24gNi4xLjQgYWRkIHRoZSBmb2xsb3dpbmcgc2VudGVuY2UgdG8gdGhl
IGZpZnRoIHBhcmFncmFwaAotICAgIChiZWdpbm5pbmcgd2l0aCAiRm9yIHRocmVlLWRpbWVuc2lv
bmFsIGFuZCB0d28tZGltZW5zaW9uYWwgYXJyYXkKLSAgICB0ZXh0dXJlcy4uLiIpOgotICAgICAg
ICBXaGVuIFBBQ0tfUkVWRVJTRV9ST1dfT1JERVJfQU5HTEUgaXMgVFJVRSB0aGUgb3JkZXIgb2Yg
cm93cyB3aXRoaW4KLSAgICAgICAgZWFjaCBpbWFnZSBhcmUgcmV2ZXJzZWQgd2l0aG91dCByZW9y
ZGVyaW5nIHRoZSBpbWFnZXMgdGhlbXNlbHZlcy4KLQotRGVwZW5kZW5jaWVzIG9uIE9wZW5HTCBF
UwotCi0gICAgSWYgaW1wbGVtZW50ZWQgZm9yIE9wZW5HTCBFUywgdGhpcyBleHRlbnNpb24gYmVo
YXZlcyBhcyBzcGVjaWZpZWQsIGV4Y2VwdDoKLQotICAgIC1EZWxldGUgYWxsIHJlZmVyZW5jZXMg
dG8gZm9ybWF0cyBSRUQsIEdSRUVOLCBCTFVFLCBSRywgYW5kIEJHUi4KLQotICAgIC1UaGUgbGFu
Z3VhZ2UgYWJvdXQgaW1hZ2Ugb3JkZXIgaW4gU2VjdGlvbiA2LjEuNCBkb2VzIG5vdCBhcHBseSBh
cyBPcGVuR0wgRVMKLSAgICAgZG9lcyBub3QgaGF2ZSBHZXRUZXhJbWFnZS4KLQotRGVwZW5kZW5j
aWVzIG9uIEVYVF90ZXh0dXJlX3JnCi0KLSAgICBJZiBFWFRfdGV4dHVyZV9yZyBpcyBwcmVzZW50
IHJlaW5zZXJ0IGxhbmd1YWdlIGFib3V0IGZvcm1hdHMgUkVEIGFuZCBSRwotICAgIGludG8gdGhl
IE9wZW5HTCBFUyAyLjAgc3BlY2lmaWNhdGlvbi4KLQotRXJyb3JzCi0KLSAgICBOb25lCi0KLU5l
dyBTdGF0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJbml0aWFsCi0gICAgR2V0IFZhbHVlICAgICAgICAgICAgICAgICAgICAgICBU
eXBlICBHZXQgQ29tbWFuZCAgICAgIFZhbHVlICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgICAg
ICAgICBTZWMuCi0gICAgLS0tLS0tLS0tICAgICAgICAgICAgICAgICAgICAgICAtLS0tICAtLS0t
LS0tLS0tLSAgICAgIC0tLS0tLS0gIC0tLS0tLS0tLS0tICAgICAgICAgICAgICAgICAgICAtLS0t
Ci0gICAgUEFDS19SRVZFUlNFX1JPV19PUkRFUl9BTkdMRSAgICBCICAgICBHZXRJbnRlZ2VydiAg
ICAgIEZBTFNFICAgIFBpeGVsIHBhY2sgcm93IG9yZGVyIHJldmVyc2FsICA0LjMuMQotCi1OZXcg
SW1wbGVtZW50YXRpb24gRGVwZW5kZW50IFN0YXRlCi0KLSAgICBOb25lCi0KLUlzc3VlcwotCi0g
ICAgTm9uZQotCi1TYW1wbGUgQ29kZQotCi0gICAgLyogQWxsb2NhdGUgc3BhY2UgdG8gaG9sZCB0
aGUgcGl4ZWwgZGF0YSAqLwotICAgIGNvbnN0IEdMdm9pZCogcGl4ZWxzID0gbWFsbG9jKHdpZHRo
ICogaGVpZ2h0ICogNCk7Ci0KLSAgICAvKiBCaW5kIHRoZSBmcmFtZWJ1ZmZlciBvYmplY3QgdG8g
YmUgcmVhZCAqLwotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJBTUVCVUZGRVIsIGZy
YW1lYnVmZmVyKTsKLQotICAgIC8qIEVuYWJsZSByb3cgb3JkZXIgcmV2ZXJzYWwgKi8KLSAgICBn
bFBpeGVsU3RvcmUoR0xfUEFDS19SRVZFUlNFX1JPV19PUkRFUl9BTkdMRSwgVFJVRSk7Ci0KLSAg
ICAvKiBUaGUgcGl4ZWwgZGF0YSBzdG9yZWQgaW4gcGl4ZWxzIHdpbGwgYmUgaW4gdG9wLWRvd24g
b3JkZXIsIHJlYWR5IGZvcgotICAgICAqIHVzZSB3aXRoIGEgd2luZG93aW5nIHN5c3RlbSBBUEkg
dGhhdCBleHBlY3RzIHRoaXMgb3JkZXIuCi0gICAgICovCi0gICAgZ2xSZWFkUGl4ZWxzKHgsIHks
IHdpZHRoLCBoZWlnaHQsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVscyk7Ci0KLVJl
dmlzaW9uIEhpc3RvcnkKLQotICAgIFJldmlzaW9uIDEsIDIwMTEvMTEvMjIgKEJyaWFuIFNhbG9t
b24pCi0gICAgICAtIEZpcnN0IHZlcnNpb24KLSAgICBSZXZpc2lvbiAyLCAyMDEyLzAyLzIyIChk
Z2tvY2gpCi0gICAgICAtIHByZXBhcmUgZm9yIHB1Ymxpc2hpbmcKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvQU5HTEVfcGxhdGZvcm1fYW5nbGUudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvQU5HTEVfcGxhdGZvcm1f
YW5nbGUudHh0CShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9l
eHRlbnNpb25zL0FOR0xFX3BsYXRmb3JtX2FuZ2xlLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDEy
NyArMCwwIEBACi1OYW1lCi0KLSAgICBBTkdMRV9wbGF0Zm9ybV9hbmdsZQotCi1OYW1lIFN0cmlu
Z3MKLQotICAgIEVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZQotCi1Db250cmlidXRvcnMKLQotICAg
IFNjb3R0IEdyYWhhbSwgR29vZ2xlCi0gICAgU2hhbm5vbiBXb29kcywgR29vZ2xlCi0gICAgR2Vv
ZmYgTGFuZywgR29vZ2xlCi0KLUNvbnRhY3RzCi0KLSAgICBTY290dCBHcmFoYW0sIEdvb2dsZSAo
c2NvdHRtZyAnYXQnIGdvb2dsZSAnZG90JyBjb20pCi0KLVN0YXR1cwotCi0gICAgRHJhZnQKLQot
VmVyc2lvbgotCi0gICAgVmVyc2lvbiAzLCAyMDE0LTEwLTIwCi0KLU51bWJlcgotCi0gICAgRUdM
IEV4dGVuc2lvbiBYWFgKLQotRXh0ZW5zaW9uIFR5cGUKLQotICAgIEVHTCBjbGllbnQgZXh0ZW5z
aW9uCi0KLURlcGVuZGVuY2llcwotCi0gICAgUmVxdWlyZXMgRUdMX0VYVF9jbGllbnRfZXh0ZW5z
aW9ucyB0byBxdWVyeSBpdHMgZXhpc3RlbmNlIHdpdGhvdXQKLSAgICBhIGRpc3BsYXkuCi0KLSAg
ICBSZXF1aXJlcyBFR0xfRVhUX3BsYXRmb3JtX2Jhc2UuCi0KLSAgICBUaGlzIGV4dGVuc2lvbiBp
cyB3cml0dGVuIGFnYWluc3QgdGhlIHdvcmRpbmcgb2YgdmVyc2lvbiA5IG9mIHRoZQotICAgIEVH
TF9FWFRfcGxhdGZvcm1fYmFzZSBzcGVjaWZpY2F0aW9uLgotCi0gICAgQU5HTEVfcGxhdGZvcm1f
YW5nbGVfZDNkIGFmZmVjdHMgdGhlIGRlZmluaXRpb24gb2YgdGhpcyBleHRlbnNpb24uCi0gICAg
QU5HTEVfcGxhdGZvcm1fYW5nbGVfb3BlbmdsIGFmZmVjdHMgdGhlIGRlZmluaXRpb24gb2YgdGhp
cyBleHRlbnNpb24uCi0KLU92ZXJ2aWV3Ci0KLSAgICBUaGlzIGV4dGVuc2lvbiBkZWZpbmVzIGhv
dyB0byBjcmVhdGUgRUdMIHJlc291cmNlcyBmcm9tIG5hdGl2ZSByZXNvdXJjZXMKLSAgICB1c2lu
ZyB0aGUgZnVuY3Rpb25zIGRlZmluZWQgYnkgRUdMX0VYVF9wbGF0Zm9ybV9iYXNlLgotCi1OZXcg
VHlwZXMKLQotICAgIE5vbmUKLQotTmV3IFByb2NlZHVyZXMgYW5kIEZ1bmN0aW9ucwotCi0gICAg
Tm9uZQotCi1OZXcgVG9rZW5zCi0KLSAgICBBY2NlcHRlZCBhcyB0aGUgPHBsYXRmb3JtPiBhcmd1
bWVudCBvZiBlZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQ6Ci0KLSAgICAgICAgRUdMX1BMQVRGT1JN
X0FOR0xFX0FOR0xFICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMjAyCi0KLSAgICBBY2Nl
cHRlZCBhcyBhbiBhdHRyaWJ1dGUgbmFtZSBpbiB0aGUgPGF0dHJpYl9saXN0PiBhcmd1bWVudCBv
ZgotICAgIGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVDoKLQotICAgICAgICBFR0xfUExBVEZPUk1f
QU5HTEVfVFlQRV9BTkdMRSAgICAgICAgICAgICAgICAgICAgICAweDMyMDMKLSAgICAgICAgRUdM
X1BMQVRGT1JNX0FOR0xFX01BWF9WRVJTSU9OX01BSk9SX0FOR0xFICAgICAgICAgMHgzMjA0Ci0g
ICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9NQVhfVkVSU0lPTl9NSU5PUl9BTkdMRSAgICAgICAg
IDB4MzIwNQotCi0gICAgQWNjZXB0ZWQgYXMgdmFsdWVzIGZvciB0aGUgRUdMX1BMQVRGT1JNX0FO
R0xFX1RZUEVfQU5HTEUgYXR0cmlidXRlOgotCi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9U
WVBFX0RFRkFVTFRfQU5HTEUgICAgICAgICAgICAgIDB4MzIwNgotCi1BZGRpdGlvbnMgdG8gdGhl
IEVHTCBTcGVjaWZpY2F0aW9uCi0KLSAgICBOb25lLgotCi1OZXcgQmVoYXZpb3IKLQotICAgIFRv
IGRldGVybWluZSBpZiB0aGUgRUdMIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIHRoaXMgZXh0ZW5z
aW9uLCBjbGllbnRzCi0gICAgc2hvdWxkIHF1ZXJ5IHRoZSBFR0xfRVhURU5TSU9OUyBzdHJpbmcg
b2YgRUdMX05PX0RJU1BMQVkuCi0KLSAgICBUbyBvYnRhaW4gYW4gRUdMRGlzcGxheSBiYWNrZWQg
YnkgYSBBTkdMRSBkaXNwbGF5LCBjYWxsCi0gICAgZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUIHdp
dGggPHBsYXRmb3JtPiBzZXQgdG8gRUdMX1BMQVRGT1JNX0FOR0xFX0FOR0xFLgotCi0gICAgVGhl
IDxuYXRpdmVfZGlzcGxheT4gcGFyYW1ldGVyIGlzIG9mIHR5cGUgRUdMTmF0aXZlRGlzcGxheVR5
cGUuIElmCi0gICAgPG5hdGl2ZV9kaXNwbGF5PiBpcyBFR0xfREVGQVVMVF9ESVNQTEFZIGEgZGVm
YXVsdCBkaXNwbGF5IGlzIHJldHVybmVkLgotICAgIE11bHRpcGxlIGNhbGxzIHdpdGggdGhlIHNh
bWUgPG5hdGl2ZV9kaXNwbGF5PiB3aWxsIHJldHVybiB0aGUgc2FtZQotICAgIEVHTERpc3BsYXkg
aGFuZGxlLiBJZiA8cGxhdGZvcm0+IGlzIHNldCB0byBFR0xfUExBVEZPUk1fQU5HTEVfQU5HTEUg
YW5kCi0gICAgdGhlIHJldHVybmVkIGRpc3BsYXkgaXMgaW4gYW4gdW5pbml0aWFsaXplZCBzdGF0
ZSwgaXRzIGF0dHJpYnV0ZXMgYXJlCi0gICAgb3ZlcndyaXR0ZW4gYnkgdGhvc2UgcHJvdmlkZWQg
aW4gdGhlIDxhdHRyaWJfbGlzdD4sIGlmIGFueS4KLQotICAgIElmIG5vIDxhdHRyaWJfbGlzdD4g
aXMgc3BlY2lmaWVkLCB0aGUgdmFsdWUgb2YKLSAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9B
TkdMRSBpcyBpbXBsaWNpdGx5IHNldCB0bwotICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0RF
RkFVTFRfQU5HTEUuCi0KLSAgICBJZiBubyA8YXR0cmliX2xpc3Q+IGlzIHNwZWNpZmllZCwgdGhl
IHZhbHVlcyBvZgotICAgIEVHTF9QTEFURk9STV9BTkdMRV9NQVhfVkVSU0lPTl9NQUpPUl9BTkdM
RSBhbmQKLSAgICBFR0xfUExBVEZPUk1fQU5HTEVfTUFYX1ZFUlNJT05fTUlOT1JfQU5HTEUgYXJl
IGltcGxpY2l0bHkgc2V0IHRvCi0gICAgRUdMX0RPTlRfQ0FSRS4KLQotICAgIElmIEVHTF9QTEFU
Rk9STV9BTkdMRV9NQVhfVkVSU0lPTl9NQUpPUl9BTkdMRSBpcyBzZXQgdG8gRUdMX0RPTlRfQ0FS
RSBhbmQKLSAgICBFR0xfUExBVEZPUk1fQU5HTEVfTUFYX1ZFUlNJT05fTUlOT1JfQU5HTEUgaXMg
bm90IHNldCB0byBFR0xfRE9OVF9DQVJFLAotICAgIGFuIEVHTF9CQURfQVRUUklCVVRFIGVycm9y
IGlzIGdlbmVyYXRlZCBhbmQgRUdMX05PX0RJU1BMQVkgaXMgcmV0dXJuZWQuCi0KLSAgICBJZiBu
byBkaXNwbGF5IG1hdGNoaW5nIHRoZSByZXF1ZXN0ZWQgPG5hdGl2ZV9kaXNwbGF5PiBvciBvZiB0
aGUgdHlwZQotICAgIHJlcXVlc3RlZCBieSB0aGUgdmFsdWUgb2YgRUdMX1BMQVRGT1JNX0FOR0xF
X1RZUEVfQU5HTEUgaXMgYXZhaWxhYmxlLAotICAgIEVHTF9OT19ESVNQTEFZIGlzIHJldHVybmVk
LiBObyBlcnJvciBjb25kaXRpb24gaXMgcmFpc2VkIGluIHRoaXMgY2FzZS4KLQotSXNzdWVzCi0K
LSAgICBOb25lCi0KLVJldmlzaW9uIEhpc3RvcnkKLQotICAgIFZlcnNpb24gMSwgMjAxNC0wMi0w
NCAoU2NvdHQgR3JhaGFtKQotICAgICAgLSBJbml0aWFsIGRyYWZ0Ci0gICAgVmVyc2lvbiAyLCAy
MDE0LTA2LTA1IChHZW9mZiBMYW5nKQotICAgICAgLSBSZW5hbWUgZXh0ZW5zaW9uIGZyb20gQU5H
TEVfcGxhdGZvcm1fYW5nbGVfZDNkIHRvIEFOR0xFX3BsYXRmb3JtX2FuZ2xlLgotICAgICAgLSBB
ZGQgc3ViLWV4dGVuc2lvbnMgZm9yIHNwZWNpZmljIHBsYXRmb3Jtcy4KLSAgICBWZXJzaW9uIDMs
IDIwMTQtMTAtMjAgKEdlb2ZmIExhbmcpCi0gICAgICAtIEFkZCBhdHRyaWJ1dGVzIHRvIHJlcXVl
c3Qgc3BlY2lmaWMgZmVhdHVyZSBsZXZlbCBhbmQgY29udGV4dCB2ZXJzaW9ucy4KLSAgICAgIC0g
TW92ZWQgZGVzY3JpcHRpb25zIG9mIHBsYXRmb3JtcyB0byBjaGlsZCBleHRlbnNpb24gc3BlY3Mu
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0FOR0xFX3BsYXRmb3Jt
X2FuZ2xlX2QzZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0
ZW5zaW9ucy9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9kM2QudHh0CShyZXZpc2lvbiAyMDc4MDQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0FOR0xFX3BsYXRmb3JtX2FuZ2xl
X2QzZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNDAgKzAsMCBAQAotTmFtZQotCi0gICAgQU5H
TEVfcGxhdGZvcm1fYW5nbGVfZDNkCi0KLU5hbWUgU3RyaW5ncwotCi0gICAgRUdMX0FOR0xFX3Bs
YXRmb3JtX2FuZ2xlX2QzZAotCi1Db250cmlidXRvcnMKLQotICAgIFNoYW5ub24gV29vZHMsIEdv
b2dsZQotICAgIEdlb2ZmIExhbmcsIEdvb2dsZQotCi1Db250YWN0cwotCi0gICAgR2VvZmYgTGFu
ZywgR29vZ2xlIChnZW9mZmxhbmcgJ2F0JyBjaHJvbWl1bSAnZG90JyBvcmcpCi0KLVN0YXR1cwot
Ci0gICAgRHJhZnQKLQotVmVyc2lvbgotCi0gICAgVmVyc2lvbiAzLCAyMDE0LTExLTI2Ci0KLU51
bWJlcgotCi0gICAgRUdMIEV4dGVuc2lvbiBYWFgKLQotRXh0ZW5zaW9uIFR5cGUKLQotICAgIEVH
TCBjbGllbnQgZXh0ZW5zaW9uCi0KLURlcGVuZGVuY2llcwotCi0gICAgUmVxdWlyZXMgQU5HTEVf
cGxhdGZvcm1fYW5nbGUuCi0KLU92ZXJ2aWV3Ci0KLSAgICBUaGlzIGV4dGVuc2lvbiBlbmFibGVz
IHNlbGVjdGlvbiBvZiBEM0QgZGlzcGxheSB0eXBlcy4KLQotTmV3IFR5cGVzCi0KLSAgICBOb25l
Ci0KLU5ldyBQcm9jZWR1cmVzIGFuZCBGdW5jdGlvbnMKLQotICAgIE5vbmUKLQotTmV3IFRva2Vu
cwotCi0gICAgQWNjZXB0ZWQgYXMgdmFsdWVzIGZvciB0aGUgRUdMX1BMQVRGT1JNX0FOR0xFX1RZ
UEVfQU5HTEUgYXR0cmlidXRlOgotCi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0Qz
RDlfQU5HTEUgICAgICAgICAgICAgICAgIDB4MzIwNwotICAgICAgICBFR0xfUExBVEZPUk1fQU5H
TEVfVFlQRV9EM0QxMV9BTkdMRSAgICAgICAgICAgICAgICAweDMyMDgKLQotICAgIEFjY2VwdGVk
IGFzIGFuIGF0dHJpYnV0ZSBuYW1lIGluIHRoZSA8YXR0cmliX2xpc3Q+IGFyZ3VtZW50IG9mCi0g
ICAgZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUOgotCi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdM
RV9ERVZJQ0VfVFlQRV9BTkdMRSAgICAgICAgICAgICAgIDB4MzIwOQotICAgICAgICBFR0xfUExB
VEZPUk1fQU5HTEVfRU5BQkxFX0FVVE9NQVRJQ19UUklNX0FOR0xFICAgICAweDMyMEYKLQotICAg
IEFjY2VwdGVkIGFzIHZhbHVlcyBmb3IgdGhlIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQ
RV9BTkdMRSBhdHRyaWJ1dGU6Ci0KLSAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9U
WVBFX0hBUkRXQVJFX0FOR0xFICAgICAgMHgzMjBBCi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdM
RV9ERVZJQ0VfVFlQRV9XQVJQX0FOR0xFICAgICAgICAgIDB4MzIwQgotICAgICAgICBFR0xfUExB
VEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfUkVGRVJFTkNFX0FOR0xFICAgICAweDMyMEMKLQotQWRk
aXRpb25zIHRvIHRoZSBFR0wgU3BlY2lmaWNhdGlvbgotCi0gICAgTm9uZS4KLQotTmV3IEJlaGF2
aW9yCi0KLSAgICBUbyByZXF1ZXN0IGEgZGlzcGxheSB0aGF0IGlzIGJhY2tlZCBieSBEaXJlY3Qz
RCByZXNvdXJjZXMsIHRoZSB2YWx1ZSBvZgotICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0FO
R0xFIHNob3VsZCBiZToKLSAgICAgIC0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEOV9BTkdM
RSBmb3IgYSBEM0Q5IGRpc3BsYXksCi0gICAgICAtIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0Qz
RDExX0FOR0xFIGZvciBhIEQzRDExIGRpc3BsYXkuCi0KLSAgICBUbyByZXF1ZXN0IGEgc3BlY2lm
aWMgbWF4aW11bSBmZWF0dXJlIGxldmVsIHRvIGJlIHVzZWQgYnkgdGhlIEQzRDExCi0gICAgZGlz
cGxheSwgRUdMX1BMQVRGT1JNX0FOR0xFX01BWF9WRVJTSU9OX01BSk9SX0FOR0xFIGFuZAotICAg
IEVHTF9QTEFURk9STV9BTkdMRV9NQVhfVkVSU0lPTl9NSU5PUl9BTkdMRSBjYW4gYmUgdXNlZC4g
IE9ubHkgZmVhdHVyZQotICAgIGxldmVscyB0aGF0IGFyZSBjYXBhYmxlIG9mIHN1cHBvcnRpbmcg
YWxsIGF2YWlsYWJsZSBjbGllbnQgQVBJcyB3aWxsIGJlCi0gICAgdXNlZCB1bmxlc3MgZXhwbGlj
aXRseSByZXF1ZXN0ZWQuCi0gICAgRUdMX1BMQVRGT1JNX0FOR0xFX01BWF9WRVJTSU9OX01BSk9S
X0FOR0xFIGFuZAotICAgIEVHTF9QTEFURk9STV9BTkdMRV9NQVhfVkVSU0lPTl9NSU5PUl9BTkdM
RSBoYXZlIG5vIGVmZmVjdCB3aGVuIHJlcXVlc3RpbmcKLSAgICBhIEQzRDkgZGlzcGxheS4KLQot
ICAgIElmIG5vIDxhdHRyaWJfbGlzdD4gaXMgc3BlY2lmaWVkIHRvIGVnbEdldFBsYXRmb3JtRGlz
cGxheUVYVCwgdGhlIHZhbHVlIG9mCi0gICAgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBF
X0FOR0xFIGlzIGltcGxpY2l0bHkgc2V0IHRvCi0gICAgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklD
RV9UWVBFX0hBUkRXQVJFX0FOR0xFLiBPdGhlcndpc2UsIHRoZSB2YWx1ZSBvZgotICAgIEVHTF9Q
TEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9BTkdMRSBzaG91bGQgYmU6Ci0gICAgICAtIEVHTF9Q
TEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9IQVJEV0FSRV9BTkdMRSB0byByZXF1ZXN0IGEgaGFy
ZHdhcmUKLSAgICAgICAgYWNjZWxlcmF0ZWQgZGV2aWNlLgotICAgICAgLSBFR0xfUExBVEZPUk1f
QU5HTEVfREVWSUNFX1RZUEVfV0FSUF9BTkdMRSB0byByZXF1ZXN0IGFuCi0gICAgICAgIG9wdGlt
aXplZCBzb2Z0d2FyZSByYXN0ZXJpemVyLgotICAgICAgLSBFR0xfUExBVEZPUk1fQU5HTEVfREVW
SUNFX1RZUEVfUkVGRVJFTkNFX0FOR0xFIHRvIHJlcXVlc3QgYQotICAgICAgICByZWZlcmVuY2Ug
cmFzdGVyaXplci4KLQotICAgIElmIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0FOR0xFIGlzIHNl
dCB0bwotICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFLCB0aGUgZGlzcGxh
eSBjYW4gYXV0b21hdGljYWxseSByZXNwb25kCi0gICAgdG8gdHJpbSBldmVudHMgZnJvbSB0aGUg
b3BlcmF0aW5nIHN5c3RlbS4gIElmIHRoZSBhdHRyaWJ1dGUKLSAgICBFR0xfUExBVEZPUk1fQU5H
TEVfRU5BQkxFX0FVVE9NQVRJQ19UUklNX0FOR0xFIGlzIHVuc3BlY2lmaWVkLCBpdCBpcwotICAg
IGltcGxpY2l0bHkgc2V0IHRvIEVHTF9GQUxTRS4gIE90aGVyd2lzZSwgdGhlIHZhbHVlIG9mCi0g
ICAgRUdMX1BMQVRGT1JNX0FOR0xFX0VOQUJMRV9BVVRPTUFUSUNfVFJJTV9BTkdMRSBzaG91bGQg
YmUgRUdMX1RSVUUgb3IKLSAgICBFR0xfRkFMU0UuCi0KLSAgICBJZiBFR0xfUExBVEZPUk1fQU5H
TEVfREVWSUNFX1RZUEVfQU5HTEUgaXMgc2V0IHRvCi0gICAgRUdMX1BMQVRGT1JNX0FOR0xFX0RF
VklDRV9UWVBFX1dBUlBfQU5HTEUgYW5kIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0FOR0xFCi0g
ICAgaXMgbm90IHNldCB0byBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwgYW4g
RUdMX0JBRF9BVFRSSUJVVEUKLSAgICBlcnJvciBpcyBnZW5lcmF0ZWQgYW5kIEVHTF9OT19ESVNQ
TEFZIGlzIHJldHVybmVkLgotCi0gICAgSWYgRUdMX1BMQVRGT1JNX0FOR0xFX0VOQUJMRV9BVVRP
TUFUSUNfVFJJTV9BTkdMRSBpcyBzcGVjaWZpZWQgd2hlbgotICAgIEVHTF9QTEFURk9STV9BTkdM
RV9UWVBFX0FOR0xFIGlzIG5vdCBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRQot
ICAgIG9yIGEgdmFsdWUgb3RoZXIgdGhhbiBFR0xfVFJVRSBvciBFR0xfRkFMU0UgaXMgdXNlZCwg
YW4gRUdMX0JBRF9BVFRSSUJVVEUKLSAgICBlcnJvciBpcyBnZW5lcmF0ZWQgYW5kIEVHTF9OT19E
SVNQTEFZIGlzIHJldHVybmVkLgotCi1Jc3N1ZXMKLQotICAgIDEpIFNvbWUgbXVsdGl0aHJlYWRl
ZCBhcHBsaWNhdGlvbnMgY2FuIGNyYXNoIGlmIHRoZSBkaXNwbGF5IGF1dG9tYXRpY2FsbHkKLSAg
ICAgICByZXNwb25kcyB0byB0cmltIGV2ZW50cyB3aGlsZSB0aGUgYXBwbGljYXRpb24gaXMgcmVu
ZGVyaW5nIGZyb20gYW5vdGhlcgotICAgICAgIHRocmVhZC4KLQotICAgICAgIFJFU09MVkVEOiBB
ZGRlZCBhbiBFR0xfUExBVEZPUk1fQU5HTEVfRU5BQkxFX0FVVE9NQVRJQ19UUklNX0FOR0xFCi0g
ICAgICAgZW51bSB0byBzcGVjaWZ5IGlmIHRoZSBkaXNwbGF5IHNob3VsZCByZXNwb25kIHRvIHRy
aW0gZXZlbnRzLgotICAgICAgIEFwcGxpY2F0aW9ucyB0aGF0IGRvIG11bHRpdGhyZWFkZWQgcmVu
ZGVyaW5nIHNob3VsZCBkaXNhYmxlIGF1dG9tYXRpYwotICAgICAgIHRyaW0gYW5kIGhhbmRsZSB0
aGUgdHJpbSBldmVudHMgb24gdGhlaXIgb3duLgotCi1SZXZpc2lvbiBIaXN0b3J5Ci0KLSAgICBW
ZXJzaW9uIDEsIDIwMTQtMDYtMDUgKEdlb2ZmIExhbmcpCi0gICAgICAtIEluaXRpYWwgZHJhZnQK
LSAgICBWZXJzaW9uIDIsIDIwMTQtMTAtMjcgKEdlb2ZmIExhbmcpCi0gICAgICAtIFNlcGFyYXRl
IFdBUlAgZGV2aWNlcyBpbnRvIGEgbmV3IGF0dHJpYnV0ZSBpbnN0ZWFkIG9mIGEgcGxhdGZvcm0g
dHlwZS4KLSAgICAgIC0gTW92ZWQgZGVzY3JpcHRpb25zIG9mIHBsYXRmb3JtcyBhbmQgbWFqb3Iv
bWlub3IgdmVyc2lvbnMgZnJvbQotICAgICAgICBFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGUgc3Bl
YyB0byBFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfZDNkLgotICAgIFZlcnNpb24gMywgMjAxNC0x
MS0yNiAoR2VvZmYgTGFuZykKLSAgICAgIC0gUmVtb3ZlIHRoZSBVU0VfV0FSUCBib29sIGFuZCBy
ZXBsYWNlIGl0IHdpdGggYSBERVZJQ0VfVFlQRSBlbnVtLgotICAgIFZlcnNpb24gNCwgMjAxNS0w
My0xMSAoR2VvZmYgTGFuZykKLSAgICAgIC0gQWRkIHRoZSBFTkFCTEVfQVVUT01BVElDX1RSSU0g
ZW51bS4KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvQU5HTEVfcGxh
dGZvcm1fYW5nbGVfb3BlbmdsLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9leHRlbnNpb25zL0FOR0xFX3BsYXRmb3JtX2FuZ2xlX29wZW5nbC50eHQJKHJldmlzaW9u
IDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvQU5HTEVfcGxh
dGZvcm1fYW5nbGVfb3BlbmdsLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDg0ICswLDAgQEAKLU5h
bWUKLQotICAgIEFOR0xFX3BsYXRmb3JtX2FuZ2xlX29wZW5nbAotCi1OYW1lIFN0cmluZ3MKLQot
ICAgIEVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9vcGVuZ2wKLQotQ29udHJpYnV0b3JzCi0KLSAg
ICBTaGFubm9uIFdvb2RzLCBHb29nbGUKLSAgICBHZW9mZiBMYW5nLCBHb29nbGUKLQotQ29udGFj
dHMKLQotICAgIEdlb2ZmIExhbmcsIEdvb2dsZSAoZ2VvZmZsYW5nICdhdCcgY2hyb21pdW0gJ2Rv
dCcgb3JnKQotCi1TdGF0dXMKLQotICAgIERyYWZ0Ci0KLVZlcnNpb24KLQotICAgIFZlcnNpb24g
MywgMjAxNC0xMS0yNgotCi1OdW1iZXIKLQotICAgIEVHTCBFeHRlbnNpb24gWFhYCi0KLUV4dGVu
c2lvbiBUeXBlCi0KLSAgICBFR0wgY2xpZW50IGV4dGVuc2lvbgotCi1EZXBlbmRlbmNpZXMKLQot
ICAgIFJlcXVpcmVzIEFOR0xFX3BsYXRmb3JtX2FuZ2xlLgotCi1PdmVydmlldwotCi0gICAgVGhp
cyBleHRlbnNpb24gZW5hYmxlcyBzZWxlY3Rpb24gb2YgT3BlbkdMIGRpc3BsYXkgdHlwZXMuCi0K
LU5ldyBUeXBlcwotCi0gICAgTm9uZQotCi1OZXcgUHJvY2VkdXJlcyBhbmQgRnVuY3Rpb25zCi0K
LSAgICBOb25lCi0KLU5ldyBUb2tlbnMKLQotICAgIEFjY2VwdGVkIGFzIHZhbHVlcyBmb3IgdGhl
IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0FOR0xFIGF0dHJpYnV0ZToKLQotICAgICAgICBFR0xf
UExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUgICAgICAgICAgICAgICAweDMyMEQKLSAg
ICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEUgICAgICAgICAgICAg
MHgzMjBFCi0KLUFkZGl0aW9ucyB0byB0aGUgRUdMIFNwZWNpZmljYXRpb24KLQotICAgIE5vbmUu
Ci0KLU5ldyBCZWhhdmlvcgotCi0gICAgVG8gcmVxdWVzdCBhIGRpc3BsYXkgdGhhdCB0cmFuc2xh
dGVzIHRvIE9wZW5HTCBvciBPcGVuR0wgRVMsIHRoZSB2YWx1ZSBvZgotICAgIEVHTF9QTEFURk9S
TV9BTkdMRV9UWVBFX0FOR0xFIHNob3VsZCBiZToKLSAgICAgIC0gRUdMX1BMQVRGT1JNX0FOR0xF
X1RZUEVfT1BFTkdMX0FOR0xFIGZvciBhbiBPcGVuR0wgZGlzcGxheSwKLSAgICAgIC0gRUdMX1BM
QVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEUgZm9yIGEgbmF0aXZlIE9wZW5HTCBFUyBk
aXNwbGF5LgotCi0gICAgVG8gcmVxdWVzdCBhIHNwZWNpZmljIG1heGltdW0gY29udGV4dCB2ZXJz
aW9uIHRvIHVzZSBmb3IgdGhlIHVuZGVybHlpbmcKLSAgICBBUEksIEVHTF9QTEFURk9STV9BTkdM
RV9NQVhfVkVSU0lPTl9NQUpPUl9BTkdMRSBhbmQKLSAgICBFR0xfUExBVEZPUk1fQU5HTEVfTUFY
X1ZFUlNJT05fTUlOT1JfQU5HTEUgY2FuIGJlIHVzZWQuCi0KLUlzc3VlcwotCi0gICAgTm9uZQot
Ci1SZXZpc2lvbiBIaXN0b3J5Ci0KLSAgICBWZXJzaW9uIDEsIDIwMTQtMDYtMDUgKEdlb2ZmIExh
bmcpCi0gICAgICAtIEluaXRpYWwgZHJhZnQKLSAgICBWZXJzaW9uIDIsIDIwMTQtMTAtMjcgKEdl
b2ZmIExhbmcpCi0gICAgICAtIE1vdmVkIGRlc2NyaXB0aW9ucyBvZiBwbGF0Zm9ybXMgYW5kIG1h
am9yL21pbm9yIHZlcnNpb25zIGZyb20KLSAgICAgICAgRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xl
IHNwZWMgdG8gRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlX29wZW5nbC4KLSAgICBWZXJzaW9uIDMs
IDIwMTQtMTEtMjYgKEdlb2ZmIExhbmcpCi0gICAgICAtIFVwZGF0ZWQgZW51bSB2YWx1ZXMuCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0FOR0xFX3Byb2dyYW1fYmlu
YXJ5LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25z
L0FOR0xFX3Byb2dyYW1fYmluYXJ5LnR4dAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9BTkdMRV9wcm9ncmFtX2JpbmFyeS50eHQJKG5vbmV4
aXN0ZW50KQpAQCAtMSw5NCArMCwwIEBACi1OYW1lCi0KLSAgICBBTkdMRV9wcm9ncmFtX2JpbmFy
eQotCi1OYW1lIFN0cmluZ3MKLQotICAgIEdMX0FOR0xFX3Byb2dyYW1fYmluYXJ5Ci0KLUNvbnRy
aWJ1dG9ycwotCi0gICAgQWxhc3RhaXIgUGF0cmljaywgR29vZ2xlIEluYy4KLSAgICBEYW5pZWwg
S29jaCwgVHJhbnNHYW1pbmcgSW5jLgotCi1Db250YWN0Ci0KLSAgICBBbGFzdGFpciBQYXRyaWNr
LCBHb29nbGUgSW5jLiAoYXBhdHJpY2sgJ2F0JyBnb29nbGUgJ2RvdCcgY29tKQotCi1TdGF0dXMK
LQotICAgIFVuZGVyIGRldmVsb3BtZW50LgotCi1WZXJzaW9uCi0KLSAgICBMYXN0IE1vZGlmZWQg
RGF0ZTogSnVuZSA2LCAyMDEyCi0gICAgUmV2aXNpb246ICMxCi0KLU51bWJlcgotCi0gICAgVEJE
Ci0KLURlcGVuZGVuY2llcwotCi0gICAgT3BlbkdMIEVTIDIuMCBpcyByZXF1aXJlZC4KLSAgICBP
RVNfZ2V0X3Byb2dyYW1fYmluYXJ5IGlzIHJlcXVpcmVkLgotICAgIFRoaXMgZXh0ZW5zaW9uIGlz
IHdyaXR0ZW4gYWdhaW5zdCB0aGUgT3BlbkdMIEVTIDIuMC4yNSBzcGVjaWZpY2F0aW9uLgotCi1P
dmVydmlldwotCi0gICAgVGhpcyBleHRlbnNpb24gbWFrZXMgYXZhaWxhYmxlIGEgcHJvZ3JhbSBi
aW5hcnkgZm9ybWF0LAotICAgIFBST0dSQU1fQklOQVJZX0FOR0xFLiBJdCBlbmFibGVzIHJldHJp
ZXZpbmcgYW5kIGxvYWRpbmcgb2YgcHJlLWxpbmtlZAotICAgIEFOR0xFIHByb2dyYW0gb2JqZWN0
cy4KLQotTmV3IFByb2NlZHVyZXMgYW5kIEZ1bmN0aW9ucwotCi0gICAgTm9uZQotCi1OZXcgVG9r
ZW5zCi0KLSAgICBBY2NlcHRlZCBieSB0aGUgPGJpbmFyeUZvcm1hdD4gcGFyYW1ldGVyIG9mIFBy
b2dyYW1CaW5hcnlPRVM6Ci0KLSAgICAgICAgUFJPR1JBTV9CSU5BUllfQU5HTEUgICAgICAgIDB4
OTNBNgotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciAyIG9mIHRoZSBPcGVuR0wtRVMgMi4wIFNwZWNp
ZmljYXRpb24gKE9wZW5HTCBPcGVyYXRpb24pCi0KLSAgICBBZGQgdGhlIGZvbGxvd2luZyBwYXJh
Z3JhcGggdG8gdGhlIGVuZCBvZiBzZWN0aW9uIDIuMTUuNCwgUHJvZ3JhbSBCaW5hcmllczoKLSAg
ICAKLSAgICAiUFJPR1JBTV9CSU5BUllfQU5HTEUsIHJldHVybmVkIGluIHRoZSBsaXN0IG9mIFBS
T0dSQU1fQklOQVJZX0ZPUk1BVFNfT0VTLAotICAgIGlzIGEgZm9ybWF0IHRoYXQgbWF5IGJlIGxv
YWRlZCBpbnRvIGEgcHJvZ3JhbSBvYmplY3QgdmlhIFByb2dyYW1CaW5hcnlPRVMuIiAKLSAgICAK
LUFkZGl0aW9ucyB0byBDaGFwdGVyIDMgb2YgdGhlIE9wZW5HTCBFUyAyLjAgc3BlY2lmaWNhdGlv
biAoUmFzdGVyaXphdG9pbikKLQotICAgIE5vbmUuCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDQg
b2YgdGhlIE9wZW5HTCBFUyAyLjAgc3BlY2lmaWNhdGlvbiAoUGVyLUZyYWdtZW50Ci1PcGVyYXRp
b25zIGFuZCB0aGUgRnJhbWVidWZmZXIpCi0KLSAgICBOb25lLgotCi1BZGRpdGlvbnMgdG8gQ2hh
cHRlciA1IG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmljYXRpb24gKFNwZWNpYWwKLUZ1bmN0
aW9ucykKLQotICAgIE5vbmUuCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDYgb2YgdGhlIE9wZW5H
TCBFUyAyLjAgU3BlY2lmaWNhdGlvbiAoU3RhdGUgYW5kIFN0YXRlCi1SZXF1ZXN0cykKLQotICAg
IE5vbmUuCi0KLUVycm9ycwotCi0gICAgTm9uZQotCi1OZXcgU3RhdGUKLQotICAgIE5vbmUuCi0K
LUlzc3VlcwotCi0gICAgTm9uZQotCi1SZXZpc2lvbiBIaXN0b3J5Ci0gCi0gICAgMDYvMDYvMjAx
MiAgYXBhdHJpY2sgIGludGlhbCByZXZpc2lvbgotCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9leHRlbnNpb25zL0FOR0xFX3JvYnVzdF9yZXNvdXJjZV9pbml0aWFsaXphdGlvbi50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9BTkdMRV9y
b2J1c3RfcmVzb3VyY2VfaW5pdGlhbGl6YXRpb24udHh0CShyZXZpc2lvbiAyMDc4MDQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0FOR0xFX3JvYnVzdF9yZXNvdXJjZV9p
bml0aWFsaXphdGlvbi50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNDIgKzAsMCBAQAotTmFtZQot
Ci0gICAgQU5HTEVfcm9idXN0X3Jlc291cmNlX2luaXRpYWxpemF0aW9uLnR4dAotCi1OYW1lIFN0
cmluZ3MKLQotICAgIEFOR0xFX3JvYnVzdF9yZXNvdXJjZV9pbnRpYWxpemF0aW9uCi0KLUNvbnRy
aWJ1dG9ycwotCi0gICAgR2VvZmYgTGFuZywgR29vZ2xlCi0gICAgS2VuIFJ1c3NlbGwsIEdvb2ds
ZQotCi1Db250YWN0cwotCi0gICAgU2hhbm5vbiBXb29kcywgR29vZ2xlIChzaGFubm9ud29vZHMg
J2F0JyBnb29nbGUuY29tKQotCi1TdGF0dXMKLQotICAgIERyYWZ0Ci0KLVZlcnNpb24KLQotICAg
IFZlcnNpb24gMSwgSmFudWFyeSA3LCAyMDE1Ci0KLU51bWJlcgotCi0gICAgT3BlbkdMIEVTIEV4
dGVuc2lvbiBUQkQKLQotRGVwZW5kZW5jaWVzCi0KLSAgICBPcGVuR0wgRVMgMi4wIGlzIHJlcXVp
cmVkLgotCi0gICAgVGhpcyBleHRlbnNpb24gaXMgd3JpdHRlbiBhZ2FpbnN0IHRoZSB3b3JkaW5n
IG9mIHRoZSBPcGVuR0wgRVMKLSAgICAzLjEgc3BlY2lmaWNhdGlvbi4KLQotICAgIEVHTF9FWFRf
Y3JlYXRlX2NvbnRleHRfcm9idXN0X2luaXRpYWxpemF0aW9uIGlzIHVzZWQgdG8gcmVxdWVzdCBh
Ci0gICAgY29udGV4dCBzdXBwb3J0aW5nIHRoaXMgZXh0ZW5zaW9uIHRvIHBlcmZvcm0gcmVzb3Vy
Y2UgaW5pdGlhbGl6YXRpb24uCi0KLU92ZXJ2aWV3Ci0KLSAgICBUaGlzIGV4dGVuc2lvbiBzcGVj
aWZpZXMgdGhlIGJlaGF2aW9yIGZvciBpbml0aWFsaXphdGlvbiBvZgotICAgIHJlc291cmNlcyBz
dWNoIGFzIHRleHR1cmVzIGFuZCBidWZmZXJzIHRvIGRlZmF1bHQgdmFsdWVzLiBUaGlzCi0gICAg
aW5pdGlhbGl6YXRpb24gZW5zdXJlcyB0aGF0IGFjY2VzcyB3aWxsIG5vdCBiZSBwcm92aWRlZCBi
eSB0aGUKLSAgICBHTCB0byBwcmV2aW91c2x5IGFsbG9jYXRlZCBkYXRhIG5vdCBvd25lZCBieSB0
aGUgYXBwbGljYXRpb24uCi0KLU5ldyBUeXBlcwotCi0gICAgTm9uZQotCi1OZXcgUHJvY2VkdXJl
cyBhbmQgRnVuY3Rpb25zCi0KLSAgICBOb25lCi0KLU5ldyBUb2tlbnMKLQotICAgIEFjY2VwdGVk
IGJ5IHRoZSA8dmFsdWU+IHBhcmFtZXRlciBvZiBHZXRCb29sZWFudiwgR2V0SW50ZWdlcnYsCi0g
ICAgR2V0RmxvYXR2LCBHZXREb3VibGV2LCBhbmQgR2V0SW50ZWdlcjU0djoKLQotICAgICAgICBD
T05URVhUX1JPQlVTVF9SRVNPVVJDRV9JTklUSUFMSVpBVElPTl9BTkdMRSAgICAweDkzQTcKLQot
Ci1BZGRpdGlvbnMgdG8gQ2hhcHRlciA2IG9mIHRoZSBPcGVuR0wgRVMgMy4xIFNwZWNpZmljYXRp
b24gKEJ1ZmZlcgotT2JqZWN0cykKLQotICAgIFJlcGxhY2UgdGhlIGxhc3Qgc2VudGVuY2Ugb2Yg
dGhlIGZpcnN0IHBhcmFncmFwaCBvZiBzZWN0aW9uIDYuMgotICAgICJCdWZmZXJEYXRhIjoKLQot
ICAgIElmIDxkYXRhPiBpcyBOVUxMLCBhbmQgcm9idXN0IHJlc291cmNlIGluaXRpYWxpemF0aW9u
IGlzIGVuYWJsZWQsCi0gICAgdGhlIGNvbnRlbnRzIG9mIHRoZSBidWZmZXIgb2JqZWN0J3MgZGF0
YSBzdG9yZSBhcmUgc2V0IHRvIHplcm8uCi0gICAgT3RoZXJ3aXNlLCB0aGUgY29udGVudHMgb2Yg
dGhlIGJ1ZmZlciBvYmplY3QncyBkYXRhIHN0b3JlIGFyZQotICAgIHVuZGVmaW5lZC4KLQotQWRk
aXRpb25zIHRvIENoYXB0ZXIgOCBvZiB0aGUgT3BlbkdMIEVTIDMuMSBTcGVjaWZpY2F0aW9uIChU
ZXh0dXJlcyBhbmQKLVNhbXBsZXJzKQotCi0gICAgUmVwbGFjZSB0aGUgZmlyc3QgdHdvIHNlbnRh
bmNlcyBvZiB0aGUgZmluYWwgcGFyYWdyYXBoIGluIHNlY3Rpb24KLSAgICA4LjUuMyAiVGV4dHVy
ZSBJbWFnZSBTdHJ1Y3R1cmUiOgotCi0gICAgSWYgdGhlIDxkYXRhPiBhcmd1bWVudCBvZiBUZXhJ
bWFnZTJEIG9yIFRleEltYWdlM0QgaXMgTlVMTCwgYW5kIHRoZQotICAgIHBpeGVsIHVucGFjayBi
dWZmZXIgb2JqZWN0IGlzIHplcm8sIGEgdHdvLSBvciB0aHJlZS1kaW1lbnNpb25hbAotICAgIHRl
eGVsIGFycmF5IGlzIGNyZWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIDx0YXJnZXQ+LCA8bGV2ZWw+
LAotICAgIDxpbnRlcm5hbGZvcm1hdD4sIDxib3JkZXI+LCA8d2lkdGg+LCA8aGVpZ2h0PiwgYW5k
IDxkZXB0aD4uIElmCi0gICAgcm9idXN0IHJlc291cmNlIGluaXRpYWxpemF0aW9uIGlzIGVuYWJs
ZWQsIHRoZSBjb250ZW50cyBvZiB0aGUgaW1hZ2UKLSAgICBhcmUgaW5pdGlhbGl6ZWQgYXMgdGhv
dWdoIGEgemVybyB2YWx1ZSB3ZXJlIHByb3ZpZGVkIGZvciBlYWNoCi0gICAgY29tcG9uZW50IG9m
IGVhY2ggcGl4ZWwsIGFuZCBwcm9jZXNzZWQgYW5kIHRyYW5zZmVycmVkIHRvIHRoZSBHTAotICAg
IGFzIGRlc2NyaWJlZCBhYm92ZS4gVGhlIGNvbXBvbmVudHMgY29tcHJpc2luZyB0aGlzIHplcm8t
ZmlsbGVkIGRhdGEKLSAgICBhcmUgZGV0ZXJtaW5lZCBieSA8aW50ZXJuYWxmb3JtYXQ+LiBJZiBy
b2J1c3QgcmVzb3VyY2UKLSAgICBpbml0aWFsaXphdGlvbiBpcyBub3QgZW5hYmxlZCwgdGhlIGlt
YWdlIGNvbnRlbnRzIGFyZSB1bmRlZmluZWQsIGFuZAotICAgIG5vIHBpeGVsIHByb2Nlc3Npbmcg
aXMgcGVyZm9ybWVkLiBJbiBlaXRoZXIgY2FzZSwgbm8gcGl4ZWwgdmFsdWVzCi0gICAgYXJlIGFj
Y2Vzc2VkIGluIGNsaWVudCBtZW1vcnkuCi0KLSAgICBSZXBsYWNlIHRoZSBmaXJzdCBzZW50ZW5j
ZSBvZiB0aGUgZmlmdGggcGFyYWdyYXBoIGluIHNlY3Rpb24gOC44Ci0gICAgIk11bHRpc2FtcGxl
IFRleHR1cmVzIjoKLQotICAgIFVwb24gc3VjY2VzcywgVGV4U3RvcmFnZTJETXVsdGlzYW1wbGUg
ZGVsZXRlcyBhbnkgZXhpc3RpbmcgaW1hZ2UKLSAgICBmb3IgdGFyZ2V0LiBJZiByb2J1c3QgcmVz
b3VyY2UgaW5pdGlhbGl6YXRpb24gaXMgZW5hYmxlZCwgdGhlCi0gICAgY29udGVudHMgb2YgZWFj
aCB0ZXhlbCBhcmUgaW5pdGlhbGl6ZWQgYXMgdGhvdWdoIGEgemVybyB2YWx1ZSB3ZXJlCi0gICAg
d3JpdHRlbiB0byBlYWNoIGNoYW5uZWwgb2YgZWFjaCBzYW1wbGU7IG90aGVyd2lzZSB0aGUgY29u
dGVudHMgb2YKLSAgICB0ZXhlbHMgYXJlIHVuZGVmaW5lZC4KLQotICAgIEFkZCB0byB0aGUgZmlu
YWwgcGFyYWdyYXBoIG9mIHNlY3Rpb24gOC4xNyAiSW1tdXRhYmxlLUZvcm1hdCBUZXh0dXJlCi0g
ICAgSW1hZ2VzIjoKLQotICAgIElmIHJvYnVzdCByZXNvdXJjZSBpbml0aWFsaXphdGlvbiBpcyBl
bmFibGVkLCB0aGUgY29udGVudHMgb2YgZWFjaAotICAgIHRleGVsIGlzIGluaXRpYWxpemVkIGFz
IHRob3VnaCBhIHplcm8gdmFsdWUgd2VyZSBwcm92aWRlZCBmb3IgZWFjaAotICAgIGNvbXBvbmVu
dCBvZiBlYWNoIHBpeGVsLCBhbmQgcHJvY2Vzc2VkIGFuZCB0cmFuc2ZlcnJlZCB0byB0aGUgR0wK
LSAgICBhcyBmb3IgYSBjYWxsIHRvIHRoZSBhcHByb3ByaWF0ZSBUZXhTdWJJbWFnZSogY2FsbCBm
b3IgPHRhcmdldD4uCi0gICAgT3RoZXJ3aXNlLCB0aGUgY29udGVudHMgb2YgdGV4ZWxzIGFyZSB1
bmRlZmluZWQuCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDkgb2YgdGhlIE9wZW5HTCBFUyAzLjEg
U3BlY2lmaWNhdGlvbiAoRnJhbWVidWZmZXJzCi1hbmQgRnJhbWVidWZmZXIgT2JqZWN0cykKLQot
ICAgIFJlcGxhY2UgdGhlIHNlbnRlbmNlIGluIHNlY3Rpb24gOS4yLjQgIlJlbmRlcmJ1ZmZlciBP
YmplY3RzIgotICAgIGJlZ2lubmluZyAiVXBvbiBzdWNjZXNzLCBSZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGUiOgotCi0gICAgVXBvbiBzdWNjZXNzLCBSZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGUgZGVsZXRlcyBhbnkgZXhpc3RpbmcKLSAgICBkYXRhIHN0b3JlIGZvciB0aGUgcmVu
ZGVyYnVmZmVyIGltYWdlLiBJZiByb2J1c3QgcmVzb3VyY2UKLSAgICBpbml0aWFsaXphdGlvbiBp
cyBlbmFibGVkLCB0aGUgY29udGVudHMgb2YgZWFjaCBwaXhlbCBpbiB0aGUgZGF0YQotICAgIHN0
b3JlIGFyZSBpbml0aWFsaXplZCBhcyB0aG91Z2ggYSB6ZXJvIHZhbHVlIHdhcyB3cml0dGVuIHRv
IGVhY2gKLSAgICBjaGFubmVsIG9mIGVhY2ggc2FtcGxlOyBvdGhlcndpc2UsIHRoZSBjb250ZW50
cyBvZiB0aGUgZGF0YSBzdG9yZQotICAgIGFyZSB1bmRlZmluZWQuCi0KLUludGVyYWN0aW9ucyB3
aXRoIEVHTF9BTkdMRV9jcmVhdGVfY29udGV4dF9yb2J1c3RfcmVzb3VyY2UKLQotICAgIElmIHRo
ZSBFR0wgd2luZG93LXN5c3RlbSBiaW5kaW5nIEFQSSBpcyB1c2VkIHRvIGNyZWF0ZSBhIGNvbnRl
eHQsCi0gICAgdGhlIEVHTF9BTkdMRV9jcmVhdGVfY29udGV4dF9yb2J1c3RfaW5pdGlhbGl6YXRp
b24gZXh0ZW5zaW9uIGlzCi0gICAgc3VwcG9ydGVkLCBhbmQgdGhlIGF0dHJpYnV0ZQotICAgIEVH
TF9DT05URVhUX09QRU5HTF9ST0JVU1RfSU5JVElBTElaQVRJT05fQU5HTEUgaXMgc2V0IHRvCi0g
ICAgRUdMX1RSVUUgd2hlbiBlZ2xDcmVhdGVDb250ZXh0IGlzIGNhbGxlZCwgdGhlIHJlc3VsdGlu
ZyBjb250ZXh0Ci0gICAgd2lsbCBwZXJmb3JtIHJvYnVzdCByZXNvdXJjZSBpbml0aWFsaXphdGlv
biBhcyBkZXNjcmliZWQgYWJvdmUgaW4KLSAgICBzZWN0aW9uIDxzZWN0aW9uPiwgYW5kIHRoZQot
ICAgIENPTlRFWFRfUk9CVVNUX1JFU09VUkNFX0lOSVRJQUxJWkFUSU9OX0FOR0xFCi0gICAgcXVl
cnkgd2lsbCByZXR1cm4gR0xfVFJVRSBhcyBkZXNjcmliZWQgYWJvdmUgaW4gc2VjdGlvbiAyLjYu
MS4xLgotCi1Jc3N1ZXMKLQotICAgIE5vbmUKLQotUmV2aXNpb24gSGlzdG9yeQotCi0gICAgVmVy
c2lvbiAxLCAyMDE1LzAxLzA3IC0gZmlyc3QgZHJhZnQuCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9leHRlbnNpb25zL0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0LnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0FOR0xFX3RleHR1
cmVfY29tcHJlc3Npb25fZHh0LnR4dAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dC50eHQJ
KG5vbmV4aXN0ZW50KQpAQCAtMSwxNjMgKzAsMCBAQAotTmFtZQotCi0gICAgQU5HTEVfdGV4dHVy
ZV9jb21wcmVzc2lvbl9keHQKLQotTmFtZSBTdHJpbmdzCi0KLSAgICBHTF9BTkdMRV90ZXh0dXJl
X2NvbXByZXNzaW9uX2R4dDEKLSAgICBHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDMK
LSAgICBHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUKLQotQ29udHJpYnV0b3JzCi0K
LSAgICBHcmVnZyBUYXZhcmVzLCBHb29nbGUgSW5jLgotICAgIERhbmllbCBLb2NoLCBUcmFuc0dh
bWluZyBJbmMuCi0gICAgQWwgUGF0cmljaywgR29vZ2xlIEluYy4KLQotQ29udGFjdHMKLQotICAg
IEdyZWdnIFRhdmFyZXMsIEdvb2dsZSBJbmMuIChnbWFuICdhdCcgZ29vZ2xlICdkb3QnIGNvbSkK
LQotU3RhdHVzCi0KLSAgICBJbXBsZW1lbnRlZCBpbiBBTkdMRSBFUzIKLQotVmVyc2lvbgotCi0g
ICAgTGFzdCBNb2RpZmllZCBEYXRlOiBTZXB0IDIyLCAyMDEyCi0gICAgQXV0aG9yIFJldmlzaW9u
OiAyCi0KLU51bWJlcgotCi0gICAgT3BlbkdMIEVTIEV4dGVuc2lvbiAjMTExCi0KLURlcGVuZGVu
Y2llcwotCi0gICAgUmVxdWlyZXMgT3BlbkdMIEVTIDEuMC4KLQotICAgIFRoZSBleHRlbnNpb24g
aXMgd3JpdHRlbiBhZ2FpbnN0IHRoZSBPcGVuR0wgRVMgMi4wIHNwZWNpZmljYXRpb24uCi0KLU92
ZXJ2aWV3Ci0KLSAgICBUaGVzZSBleHRlbnNpb25zIGFyZSBleGFjdGx5IHRoZSBzYW1lIGFzIEVY
VF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEKLSAgICBleGNlcHQgdGhleSBhZGRpdGlvbmFsbHkg
ZXhwb3NlIHRoZSBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFIGFuZAotICAgIENPTVBS
RVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEUgZm9ybWF0cyBhbmQgaGF2ZSBhIHNpemUgcmVzdHJp
Y3Rpb25zCi0gICAgc3VjaCB0aGF0IHRoZSBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiBmb3Vy
IChleGNlcHQgZm9yIG1pcCBsZXZlbHMKLSAgICB3aGVyZSB0aGUgZGltZW5zaW9ucyBhcmUgZWl0
aGVyIDIgb3IgMSkuCi0KLSAgICBTZWUgRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSBmb3Ig
dGhlIGZ1bGwgbGlzdCBvZiBjaGFuZ2VzLiBBbHNvCi0gICAgc2VlIEVYVF90ZXh0dXJlX2NvbXBy
ZXNzaW9uX3MzdGMgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZvcm1hdHMuCi0KLUlQIFN0YXR1
cwotCi0gICAgQSBsaWNlbnNlIHRvIHRoZSBTM1RDIEludGVsbGVjdHVhbCBQcm9wZXJ0eSBtYXkg
YmUgbmVjZXNzYXJ5IGZvciAKLSAgICBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGV4dGVuc2lvbi4g
IFlvdSBzaG91bGQgY29uc3VsdCB3aXRoIHlvdXIgCi0gICAgQXR0b3JuZXkgdG8gZGV0ZXJtaW5l
IHRoZSBuZWVkIGZvciBhIGxpY2Vuc2UuCi0KLU5ldyBQcm9jZWR1cmVzIGFuZCBGdW5jdGlvbnMK
LQotICAgIE5vbmUuCi0KLU5ldyBUeXBlcwotCi0gICAgTm9uZS4KLQotTmV3IFRva2VucwotCi0g
ICAgQWNjZXB0ZWQgYnkgdGhlIDxpbnRlcm5hbGZvcm1hdD4gcGFyYW1ldGVyIG9mIENvbXByZXNz
ZWRUZXhJbWFnZTJECi0gICAgYW5kIHRoZSA8Zm9ybWF0PiBwYXJhbWV0ZXIgb2YgQ29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQ6Ci0KLSAgICBDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfQU5HTEUgICAg
ICAgICAgICAgICAgICAgIDB4ODNGMAotICAgIENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfQU5H
TEUgICAgICAgICAgICAgICAgICAgMHg4M0YxCi0gICAgQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
M19BTkdMRSAgICAgICAgICAgICAgICAgICAweDgzRjIKLSAgICBDT01QUkVTU0VEX1JHQkFfUzNU
Q19EWFQ1X0FOR0xFICAgICAgICAgICAgICAgICAgIDB4ODNGMwotCi1BZGRpdGlvbnMgdG8gQ2hh
cHRlciAzIG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmljYXRpb24gKFJhc3Rlcml6YXRpb24p
Ci0KLSAgICBBZGQgdGhlIGZvbGxvd2luZyB0byBTZWN0aW9uIDMuNy4zIChDb21wcmVzc2VkIFRl
eHR1cmUgSW1hZ2VzKQotICAgIChhdCB0aGUgZW5kIG9mIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUg
Q29tcHJlc3NlZFRleEltYWdlMkQgY29tbWFuZCk6Ci0KLSAgICBDb21wcmVzc2VkIEludGVybmFs
IEZvcm1hdCAgICAgICAgQmFzZSBJbnRlcm5hbCBGb3JtYXQKLSAgICA9PT09PT09PT09PT09PT09
PT09PT09PT09PSAgICAgICAgPT09PT09PT09PT09PT09PT09PT0KLSAgICBDT01QUkVTU0VEX1JH
Ql9TM1RDX0RYVDFfQU5HTEUgICAgUkdCCi0gICAgQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9B
TkdMRSAgIFJHQkEKLSAgICBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFICAgUkdCQQot
ICAgIENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEUgICBSR0JBCi0KLSAgICBUYWJsZSAz
Lng6IFNwZWNpZmljIENvbXByZXNzZWQgSW50ZXJuYWwgRm9ybWF0cwotCi0gICAgSWYgPGludGVy
bmFsZm9ybWF0PiBpcyBvbmUgb2YgdGhlIFMzVEMgZm9ybWF0cyBsaXN0ZWQgaW4gVGFibGUgMy54
LAotICAgIHRoZSBjb21wcmVzc2VkIHRleHR1cmUgaXMgc3RvcmVkIGluIHRoZSBhcHByb3ByaWF0
ZSBTM1RDIGNvbXByZXNzZWQKLSAgICB0ZXh0dXJlIGZvcm1hdCAoc2VlIEFwcGVuZGl4KS4gVGhl
IEdMIGFuZCB0aGUgUzNUQyB0ZXh0dXJlIGNvbXByZXNzaW9uCi0gICAgYWxnb3JpdGhtIHN1cHBv
cnQgb25seSAyRCBpbWFnZXMgd2l0aG91dCBib3JkZXJzLgotCi0gICAgQ29tcHJlc3NlZFRleElt
YWdlMkQgd2lsbCBwcm9kdWNlIHRoZSBJTlZBTElEX09QRVJBVElPTiBlcnJvciB3aGVuCi0gICAg
PGludGVybmFsZm9ybWF0PiBpcyBvbmUgb2YgdGhlIHZhbHVlcyBmcm9tIFRhYmxlIDMueCB1bmRl
ciB0aGUgZm9sbG93aW5nCi0gICAgY29uZGl0aW9uczogCi0KLSAgICAgICogPGJvcmRlcj4gaXMg
bm9uLXplcm8uCi0gICAgICAqIDx3aWR0aD4gaXMgbm90IG9uZSwgdHdvLCBvciBhIG11bHRpcGxl
IG9mIGZvdXIuCi0gICAgICAqIDxoZWlnaHQ+IGlzIG5vdCBvbmUsIHR3bywgb3IgYSBtdWx0aXBs
ZSBvZiBmb3VyLgotCi0gICAgQWRkIHRoZSBmb2xsb3dpbmcgdG8gU2VjdGlvbiAzLjcuMyAoQ29t
cHJlc3NlZCBUZXh0dXJlIEltYWdlcykKLSAgICAoYXQgdGhlIGVuZCBvZiB0aGUgZGVzY3JpcHRp
b24gb2YgdGhlIENvbXByZXNzZWRUZXhTdWJJbWFnZTJEIGNvbW1hbmQpOgotCi0gICAgSWYgdGhl
IGludGVybmFsIGZvcm1hdCBvZiB0aGUgdGV4dHVyZSBpbWFnZSBiZWluZyBtb2RpZmllZCBpcyBs
aXN0ZWQKLSAgICBpbiBUYWJsZSAzLngsIHRoZSB0ZXh0dXJlIGlzIHN0b3JlZCBpbiB0aGUgYXBw
cm9wcmlhdGUgUzNUQyBjb21wcmVzc2VkCi0gICAgdGV4dHVyZSBmb3JtYXQgKHNlZSBBcHBlbmRp
eCkuIFNpbmNlIERYVC9TM1RDIGltYWdlcyBhcmUgZWFzaWx5IGVkaXRlZAotICAgIGFsb25nIDR4
NCB0ZXhlbCBib3VuZGFyaWVzLCB0aGUgbGltaXRhdGlvbnMgb2YgQ29tcHJlc3NlZFRleFN1Yklt
YWdlMkQKLSAgICBhcmUgcmVsYXhlZC4gQ29tcHJlc3NlZFRleFN1YkltYWdlMkQgd2lsbCByZXN1
bHQgaW4gYW4gSU5WQUxJRF9PUEVSQVRJT04KLSAgICBlcnJvciBvbmx5IGlmIG9uZSBvZiB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgb2NjdXJzOgotCi0gICAgICAqIDx3aWR0aD4gaXMgbm90IGEg
bXVsdGlwbGUgb2YgZm91ciBvciBlcXVhbCB0byBURVhUVVJFX1dJRFRILgotICAgICAgKiA8aGVp
Z2h0PiBpcyBub3QgYSBtdWx0aXBscyBvZiBmb3VyIG9yIGVxdWFsIHRvIFRFWFRVUkVfSEVJR0hU
LgotICAgICAgKiA8eG9mZnNldD4gb3IgPHlvZmZzZXQ+IGlzIG5vdCBhIG11bHRpcGxlIG9mIGZv
dXIuCi0gICAgICAqIDxmb3JtYXQ+IGRvZXMgbm90IG1hdGNoIHRoZSBpbnRlcm5hbCBmb3JtYXQg
b2YgdGhlIHRleHR1cmUgaW1hZ2UKLSAgICAgICAgYmVpbmcgbW9kaWZpZWQuCi0KLSAgICBUaGUg
Zm9sbG93aW5nIHJlc3RyaWN0aW9ucyBhdCB0aGUgZW5kIG9mIHNlY3Rpb24gMy43LjMgZG8gbm90
IGFwcGx5Ci0gICAgdG8gUzNUQyBEWFQgdGV4dHVyZSBmb3JtYXRzLCBzaW5jZSBzdWJpbWFnZSBt
b2RpZmljYXRpb24gaXMgc3RyYWlnaHRmb3J3YXJkCi0gICAgYXMgbG9uZyBhcyB0aGUgc3ViaW1h
Z2UgaXMgcHJvcGVybHkgYWxpZ25lZC4KLQotRXJyb3JzCi0KLSAgICBJTlZBTElEX09QRVJBVElP
TiBpcyBnZW5lcmF0ZWQgYnkgQ29tcHJlc3NlZFRleEltYWdlMkQgaWYgPGludGVybmFsZm9ybWF0
PgotICAgIGlzIG9uZSBvZiB0aGUgY29tcHJlc3NlZCBpbnRlcm5hbCBmb3JtYXRzIGZyb20gVGFi
bGUgMy54IGFuZCBhbnkgb2YgdGhlIAotICAgIGZvbGxvd2luZyBhcHBseToKLSAgICAgIC0gPGJv
cmRlcj4gaXMgbm90IGVxdWFsIHRvIHplcm8uCi0gICAgICAtIDx3aWR0aD4gaXMgbm90IG9uZSwg
dHdvLCBvciBhIG11bHRpcGxlIG9mIGZvdXIuIAotICAgICAgLSA8aGVpZ2h0PiBpcyBub3Qgb25l
LCB0d28sIG9yIGEgbXVsdGlwbGUgb2YgZm91ci4gCi0KLSAgICBJTlZBTElEX09QRVJBVElPTiBp
cyBnZW5lcmF0ZWQgYnkgVGV4SW1hZ2UyRCBhbmQgQ29weVRleEltYWdlMkQgaWYKLSAgICA8aW50
ZXJuYWxmb3JtYXQ+IGlzIG9uZSBvZiB0aGUgY29tcHJlc3NlZCBpbnRlcm5hbCBmb3JtYXRzIGZy
b20KLSAgICBUYWJsZSAzLnguCi0KLSAgICBJTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQg
YnkgVGV4U3ViSW1hZ2UyRCBhbmQgQ29weVRleFN1YkltYWdlMkQKLSAgICBpZiB0aGUgaW50ZXJu
YWwgZm9ybWF0IG9mIHRoZSB0ZXh0dXJlIGN1cnJlbnRseSBib3VuZCB0byA8dGFyZ2V0PiBpcwot
ICAgIG9uZSBvZiB0aGUgY29tcHJlc3NlZCBpbnRlcm5hbCBmb3JtYXRzIGZyb20gVGFibGUgMy54
LgotCi0gICAgSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGJ5IENvbXByZXNzZWRUZXhT
dWJJbWFnZTJEIGlmIDxmb3JtYXQ+Ci0gICAgaXMgb25lIG9mIHRoZSBjb21wcmVzc2VkIGludGVy
YWwgZm9ybWF0cyBmcm9tIFRhYmxlIDMueCBhbmQgYW55IG9mIHRoZQotICAgIGZvbGxvd2luZyBh
cHBseToKLSAgICAgIC0gPHdpZHRoPiBpcyBub3QgYSBtdWx0aXBsZSBvZiBmb3VyIG9yIGVxdWFs
IHRvIFRFWFRVUkVfV0lEVEg7Ci0gICAgICAtIDxoZWlnaHQ+IGlzIG5vdCBhIG11bHRpcGxlIG9m
IGZvdXIgb3IgZXF1YWwgdG8gVEVYVFVSRV9IRUlHSFQ7Ci0gICAgICAtIDx4b2Zmc2V0PiBvciA8
eW9mZnNldD4gaXMgbm90IGEgbXVsdGlwbGUgb2YgZm91cjsKLSAgICAgIC0gPGZvcm1hdD4gZG9l
cyBub3QgbWF0Y2ggdGhlIGludGVybmFsIGZvcm1hdCBvZiB0aGUgdGV4dHVyZSBpbWFnZQotICAg
ICAgYmVpbmcgbW9kaWZpZWQuCi0KLU5ldyBTdGF0ZQotCi0gICAgTm9uZS4KLQotQXBwZW5kaXg6
IAotCi0gICAgVGhlIGZvcm1hdCBmb3IgdGhlIFMzVEMgQ29tcHJlc3NlZCBUZXh0dXJlIEltYWdl
cyBGb3JtYXRzIGlzIGRvY3VtZW50ZWQKLSAgICBpbiB0aGUgYXBwZW5kaXggb2YgRVhUX3RleHR1
cmVfY29tcHJlc3Npb25fczN0Yy4KLQotUmV2aXNpb24gSGlzdG9yeQotCi0gICAgUmV2aXNpb24g
MSwgMjAxMC8wOC8wNiAtIGdtYW4KLSAgICAgIC0gSW5pdGlhbCByZXZpc2lvbgotICAgIFJldmlz
aW9uIDIsIDIwMTIvMDkvMjIgLSBkZ2tvY2gKLSAgICAgIC0gQWRkZWQgRFhUMSBmb3JtYXRzIGFu
ZCBkb2N1bWVudGVkIG11bHRpcGxlIG9mIDQgcmVzdHJpY3Rpb24uCi0KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvQU5HTEVfdGV4dHVyZV91c2FnZS50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9BTkdMRV90ZXh0dXJl
X3VzYWdlLnR4dAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
ZXh0ZW5zaW9ucy9BTkdMRV90ZXh0dXJlX3VzYWdlLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDIw
MiArMCwwIEBACi1OYW1lCi0KLSAgICBBTkdMRV90ZXh0dXJlX3VzYWdlCi0KLU5hbWUgU3RyaW5n
cwotCi0gICAgR0xfQU5HTEVfdGV4dHVyZV91c2FnZQotCi1Db250cmlidXRvcnMKLQotICAgIE5p
Y29sYXMgQ2FwZW5zLCBUcmFuc0dhbWluZwotICAgIERhbmllbCBLb2NoLCBUcmFuc0dhbWluZwot
Ci1Db250YWN0Ci0KLSAgICBEYW5pZWwgS29jaCwgVHJhbnNHYW1pbmcgKGRhbmllbCAnYXQnIHRy
YW5zZ2FtaW5nLmNvbSkKLQotU3RhdHVzCi0KLSAgICBDb21wbGV0ZQotCi1WZXJzaW9uCi0KLSAg
ICBMYXN0IE1vZGlmaWVkIERhdGU6ICBOb3ZlbWJlciAxMCwgMjAxMQotICAgIFZlcnNpb246ICAg
ICAgICAgICAgIDIKLQotTnVtYmVyCi0KLSAgICBPcGVuR0wgRVMgRXh0ZW5zaW9uICMxMTIgCi0K
LURlcGVuZGVuY2llcwotCi0gICAgVGhpcyBleHRlbnNpb24gaXMgd3JpdHRlbiBhZ2FpbnN0IHRo
ZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmljYXRpb24uCi0KLU92ZXJ2aWV3Ci0KLSAgICBJbiBzb21l
IGltcGxlbWVudGF0aW9ucyBpdCBpcyBhZHZhbnRhZ2VvdXMgdG8ga25vdyB0aGUgZXhwZWN0ZWQK
LSAgICB1c2FnZSBvZiBhIHRleHR1cmUgYmVmb3JlIHRoZSBiYWNraW5nIHN0b3JhZ2UgZm9yIGl0
IGlzIGFsbG9jYXRlZC4gIAotICAgIFRoaXMgY2FuIGhlbHAgdG8gaW5mb3JtIHRoZSBpbXBsZW1l
bnRhdGlvbidzIGNob2ljZSBvZiBmb3JtYXQKLSAgICBhbmQgdHlwZSBvZiBtZW1vcnkgdXNlZCBm
b3IgdGhlIGFsbG9jYXRpb24uIElmIHRoZSB1c2FnZSBpcyBub3QKLSAgICBrbm93biBpbiBhZHZh
bmNlLCB0aGUgaW1wbGVtZW50YXRpb24gZXNzZW50aWFsbHkgaGFzIHRvIG1ha2UgYSAKLSAgICBn
dWVzcyBhcyB0byBob3cgaXQgd2lsbCBiZSB1c2VkLiAgSWYgaXQgaXMgbGF0ZXIgcHJvdmVuIHdy
b25nLAotICAgIGl0IG1heSBuZWVkIHRvIHBlcmZvcm0gY29zdGx5IHJlLWFsbG9jYXRpb25zIGFu
ZC9vciByZWZvcm1hdHRpbmcgCi0gICAgb2YgdGhlIHRleHR1cmUgZGF0YSwgcmVzdWx0aW5nIGlu
IHJlZHVjZWQgcGVyZm9ybWFuY2UuCi0KLSAgICBUaGlzIGV4dGVuc2lvbiBhZGRzIGEgdGV4dHVy
ZSB1c2FnZSBmbGFnIHRoYXQgaXMgc3BlY2lmaWVkIHZpYQotICAgIHRoZSBURVhUVVJFX1VTQUdF
X0FOR0xFIFRleFBhcmFtZXRlci4gIFRoaXMgY2FuIGJlIHVzZWQgdG8gCi0gICAgaW5kaWNhdGUg
dGhhdCB0aGUgYXBwbGljYXRpb24ga25vd3MgdGhhdCB0aGlzIHRleHR1cmUgd2lsbCBiZSAKLSAg
ICB1c2VkIGZvciByZW5kZXJpbmcuCi0KLUlQIFN0YXR1cwotCi0gICAgTm8ga25vd24gSVAgY2xh
aW1zLgotCi1OZXcgUHJvY2VkdXJlcyBhbmQgRnVuY3Rpb25zCi0KLSAgICBOb25lCi0KLU5ldyBU
b2tlbnMKLQotICAgIEFjY2VwdGVkIGFzIGEgdmFsdWUgZm9yIDxwbmFtZT4gZm9yIHRoZSBUZXhQ
YXJhbWV0ZXJ7aWZ9IGFuZCAKLSAgICBUZXhQYXJhbWV0ZXJ7aWZ9diBjb21tYW5kcyBhbmQgZm9y
IHRoZSA8dmFsdWU+IHBhcmFtZXRlciBvZgotICAgIEdldFRleFBhcmFtZXRlcntpZn12OiAKLQot
ICAgICAgICBURVhUVVJFX1VTQUdFX0FOR0xFICAgICAgICAgICAgICAgICAgICAgMHg5M0EyCi0K
LSAgICBBY2NlcHRlZCBhcyBhIHZhbHVlIHRvIDxwYXJhbT4gZm9yIHRoZSBUZXhQYXJhbWV0ZXJ7
aWZ9IGFuZCAKLSAgICB0byA8cGFyYW1zPiBmb3IgdGhlIFRleFBhcmFtZXRlcntpZn12IGNvbW1h
bmRzIHdpdGggYSA8cG5hbWU+IG9mIAotICAgIFRFWFRVUkVfVVNBR0VfQU5HTEU7IHJldHVybmVk
IGFzIHBvc3NpYmxlIHZhbHVlcyBmb3IgPGRhdGE+IHdoZW4gCi0gICAgR2V0VGV4UGFyYW1ldGVy
e2lmfXYgaXMgcXVlcmllZCB3aXRoIGEgPHZhbHVlPiBvZiBURVhUVVJFX1VTQUdFX0FOR0xFOgot
Ci0gICAgICAgIE5PTkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAK
LSAgICAgICAgRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9BTkdMRSAgICAgICAgICAgIDB4OTNBMwot
Ci1BZGRpdGlvbnMgdG8gQ2hhcHRlciAyIG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmljYXRp
b24gKE9wZW5HTCBFUyBPcGVyYXRpb24pCi0KLSAgICBOb25lCi0KLUFkZGl0aW9ucyB0byBDaGFw
dGVyIDMgb2YgdGhlIE9wZW5HTCBFUyAyLjAgU3BlY2lmaWNhdGlvbiAoUmFzdGVyaXphdGlvbikK
LQotICAgIEFkZCBhIG5ldyByb3cgdG8gVGFibGUgMy4xMCAoVGV4dHVyZSBwYXJhbWV0ZXJzIGFu
ZCB0aGVpciB2YWx1ZXMpOgotCi0gICAgTmFtZSAgICAgICAgICAgICAgICB8IFR5cGUgfCBMZWdh
bCBWYWx1ZXMgCi0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgVEVYVFVSRV9VU0FHRV9BTkdMRSB8IGVudW0gfCBOT05F
LCBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0FOR0xFCi0KLSAgICBBZGQgYSBuZXcgc2VjdGlvbiAz
LjcueCAoVGV4dHVyZSBVc2FnZSkgYmVmb3JlIHNlY3Rpb24gMy43LjEyIGFuZCAKLSAgICByZW51
bWJlciB0aGUgc3Vic2VxdWVudCBzZWN0aW9uczogCi0KLSAgICAiMy43LnggVGV4dHVyZSBVc2Fn
ZQotCi0gICAgVGV4dHVyZSB1c2FnZSBjYW4gYmUgc3BlY2lmaWVkIHZpYSB0aGUgVEVYVFVSRV9V
U0FHRV9BTkdMRSB2YWx1ZQotICAgIGZvciB0aGUgPHBuYW1lPiBhcmd1bWVudCB0byBUZXhQYXJh
bWV0ZXJ7aWZ9W3ZdLiBJbiBvcmRlciB0byB0YWtlIGVmZmVjdCwKLSAgICB0aGUgdGV4dHVyZSB1
c2FnZSBtdXN0IGJlIHNwZWNpZmllZCBiZWZvcmUgdGhlIHRleHR1cmUgY29udGVudHMgYXJlCi0g
ICAgZGVmaW5lZCBlaXRoZXIgdmlhIFRleEltYWdlMkQgb3IgVGV4U3RvcmFnZTJERVhULgotCi0g
ICAgVGhlIHVzYWdlIHZhbHVlcyBjYW4gaW1wYWN0IHRoZSBsYXlvdXQgYW5kIHR5cGUgb2YgbWVt
b3J5IHVzZWQgZm9yIHRoZSAKLSAgICB0ZXh0dXJlIGRhdGEuIFNwZWNpZnlpbmcgaW5jb3JyZWN0
IHVzYWdlIHZhbHVlcyBtYXkgcmVzdWx0IGluIHJlZHVjZWQKLSAgICBmdW5jdGlvbmFsaXR5IGFu
ZC9vciBzaWduaWZpY2FudGx5IGRlZ3JhZGVkIHBlcmZvcm1hbmNlLgotCi0gICAgUG9zc2libGUg
dmFsdWVzIGZvciA8cGFyYW1zPiB3aGVuIDxwbmFtZT4gaXMgVEVYVFVSRV9VU0FHRV9BTkdMRSBh
cmU6Ci0KLSAgICBOT05FIC0gdGhlIGRlZmF1bHQuIE5vIHBhcnRpY3VsYXIgdXNhZ2UgaGFzIGJl
ZW4gc3BlY2lmaWVkIGFuZCBpdCBpcwotICAgICAgICB1cCB0byB0aGUgaW1wbGVtZW50YXRpb24g
dG8gZGV0ZXJtaW5lIHRoZSB1c2FnZSBvZiB0aGUgdGV4dHVyZS4KLSAgICAgICAgTGVhdmluZyB0
aGUgdXNhZ2UgdW5zcGVjaWZpZWQgbWVhbnMgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gbWF5IAot
ICAgICAgICBoYXZlIHRvIHJlYWxsb2NhdGUgdGhlIHRleHR1cmUgZGF0YSBhcyB0aGUgdGV4dHVy
ZSBpcyB1c2VkIGluIAotICAgICAgICB2YXJpb3VzIHdheXMuCi0KLSAgICBGUkFNRUJVRkZFUl9B
VFRBQ0hNRU5UX0FOR0xFIC0gdGhpcyB0ZXh0dXJlIHdpbGwgYmUgYXR0YWNoZWQgdG8gYSAKLSAg
ICAgICAgZnJhbWVidWZmZXIgb2JqZWN0IGFuZCB1c2VkIGFzIGEgZGVzaW5hdGlvbiBmb3IgcmVu
ZGVyaW5nIG9yIGJsaXRzLiIKLQotICAgIE1vZGlmeSBzZWN0aW9uIDMuNy4xMiAoVGV4dHVyZSBT
dGF0ZSkgYW5kIHBsYWNlIHRoZSBsYXN0IDMgc2VudGVuY2VzCi0gICAgd2l0aCB0aGUgZm9sbG93
aW5nOgotCi0gICAgIk5leHQsIHRoZXJlIGFyZSB0aGUgdGhyZWUgc2V0cyBvZiB0ZXh0dXJlIHBy
b3BlcnRpZXM7IGVhY2ggY29uc2lzdHMgb2YKLSAgICB0aGUgc2VsZWN0ZWQgbWluaWZpY2F0aW9u
IGFuZCBtYWduaWZpY2F0aW9uIGZpbHRlcnMsIHRoZSB3cmFwIG1vZGVzIGZvcgotICAgIDxzPiBh
bmQgPHQ+LCBhbmQgdGhlIHVzYWdlIGZsYWdzLiBJbiB0aGUgaW5pdGlhbCBzdGF0ZSwgdGhlIHZh
bHVlIGFzc2lnbmVkCi0gICAgdG8gVEVYVFVSRV9NSU5fRklMVEVSIGlzIE5FQVJFU1RfTUlQTUFQ
X0xJTkVBUiwgYW5kIHRoZSB2YWx1ZSBmb3IgCi0gICAgVEVYVFVSRV9NQUdfRklMVEVSIGlzIExJ
TkVBUi4gPHM+IGFuZCA8dD4gd3JhcCBtb2RlcyBhcmUgYm90aCBzZXQgdG8KLSAgICBSRVBFQVQu
IFRoZSBpbml0aWFsIHZhbHVlIGZvciBURVhUVVJFX1VTQUdFX0FOR0xFIGlzIE5PTkUuIgotCi0K
LUFkZGl0aW9ucyB0byBDaGFwdGVyIDQgb2YgdGhlIE9wZW5HTCBFUyAyLjAgU3BlY2lmaWNhdGlv
biAoUGVyLUZyYWdtZW50Ci1PcGVyYXRpb25zIGFuZCB0aGUgRnJhbWVidWZmZXIpCi0KLSAgICBO
b25lCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDUgb2YgdGhlIE9wZW5HTCBFUyAyLjAgU3BlY2lm
aWNhdGlvbiAoU3BlY2lhbAotRnVuY3Rpb25zKToKLQotICAgIE5vbmUKLQotQWRkaXRpb25zIHRv
IENoYXB0ZXIgNiBvZiB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZpY2F0aW9uIChTdGF0ZSBhbmQK
LVN0YXRlIFJlcXVlc3RzKQotCi0gICAgTm9uZQotCi1EZXBlbmRlbmNpZXMgb24gRVhUX3RleHR1
cmVfc3RvcmFnZQotCi0gICAgSWYgRVhUX3RleHR1cmVfc3RvcmFnZSBpcyBub3Qgc3VwcG9ydGVk
LCBvbWl0IGFueSByZWZlcmVuY2VzIHRvIAotICAgIFRleFN0b3JhZ2UyREVYVC4KLQotRXJyb3Jz
Ci0KLSAgICBJZiBUZXhQYXJhbWV0ZXJ7aWZ9IG9yIFRleFBhcmFtdGVye2lmfXYgaXMgY2FsbGVk
IHdpdGggYSA8cG5hbWU+Ci0gICAgb2YgVEVYVFVSRV9VU0FHRV9BTkdMRSBhbmQgdGhlIHZhbHVl
IG9mIDxwYXJhbT4gb3IgPHBhcmFtcz4gaXMgbm90Ci0gICAgTk9ORSBvciBGUkFNRUJVRkZFUl9B
VFRBQ0hNRU5UX0FOR0xFIHRoZSBlcnJvciBJTlZBTElEX1ZBTFVFIGlzCi0gICAgZ2VuZXJhdGVk
LgotCi1Vc2FnZSBFeGFtcGxlCi0KLSAgICAvKiBjcmVhdGUgYW5kIGJpbmQgdGV4dHVyZSAqLwot
ICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleHR1cmUpOwotICAgIGdsQWN0aXZlVGV4dHVyZShHTF9U
RVhUVVJFMCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlKTsKLQot
ICAgIC8qIHNwZWNpZnkgdGV4dHVyZSBwYXJhbWV0ZXJzICovCi0gICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfMkQsIEdMXyosIC4uLik7ICAvKiBhcyBiZWZvcmUgKi8KLSAgICAKLSAgICAv
KiBzcGVjaWZ5IHRoYXQgd2UnbGwgYmUgcmVuZGVyaW5nIHRvIHRoZSB0ZXh0dXJlICovCi0gICAg
Z2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfVVNBR0VfQU5HTEUsIEdM
X0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQU5HTEUpOwotCi0gICAgZ2xUZXhTdG9yYWdlMkRFWFQo
R0xfVEVYVFVSRV8yRCwgbGV2ZWxzLCAuLi4pOyAvLyBBbGxvY2F0aW9uCi0gICAgZm9yKGludCBs
ZXZlbCA9IDA7IGxldmVsIDwgbGV2ZWxzOyArK2xldmVsKQotICAgICAgICBnbFRleFN1YkltYWdl
MkQoR0xfVEVYVFVSRV8yRCwgbGV2ZWwsIC4uLik7IC8vIEluaXRpYWxpc2F0aW9uCi0KLUlzc3Vl
cwotCi0gICAgMS4gU2hvdWxkIHRoZXJlIGJlIGEgZHluYW1pYyB1c2FnZSB2YWx1ZT8KLSAgIAot
ICAgICAgIERJU0NVU1NJT046IFdlIGNvdWxkIGFjY2VwdCBhIGR5bmFtaWMgZmxhZyB0byBpbmRp
Y2F0ZSB0aGF0IGEgdGV4dHVyZSB3aWxsCi0gICAgICAgYmUgdXBkYXRlZCBmcmVxdWVudGx5LiBX
ZSBjb3VsZCBtYXAgdGhpcyB0byBEM0Q5IGR5bmFtaWMgdGV4dHVyZXMuIFRoaXMgd291bGQKLSAg
ICAgICBhbGxvdyB1cyB0byBhdm9pZCBjcmVhdGluZyB0ZW1wb3Jhcnkgc3VyZmFjZXMgd2hlbiB1
cGRhdGluZyB0aGUgdGV4dHVyZS4KLSAgICAgICBIb3dldmVyIHJlbmRlcmFibGUgdGV4dHVyZXMg
Y2Fubm90IGJlIGR5bmFtaWMgaW4gRDNEOSwgd2hpY2ggZWxpbWluYXRlcyB0aGUgCi0gICAgICAg
cHJpbWFyeSB1c2UgY2FzZSBmb3IgdGhpcy4gIEZ1cnRoZXJtb3JlLCB0aGUgbWVtb3J5IHVzYWdl
IG9mIGR5bmFtaWMgdGV4dHVyZXMKLSAgICAgICB0eXBpY2FsbHkgaW5jcmVhc2VzIHRocmVlZm9s
ZCB3aGVuIHlvdSBsb2NrIGl0LgotCi0gICAgMi4gU2hvdWxkIHRoZSB0ZXh0dXJlIHVzYWdlIGJl
IGFuIGVudW0gb3IgYSBiaXRmaWVsZD8KLQotICAgICAgIFVOUkVTT0xWRUQuICBVc2luZyBhIGJp
dGZpZWxkIHdvdWxkIGFsbG93IGNvbWJpbmF0aW9uIG9mIHZhbHVlcyB0byBiZSBzcGVjaWZpZWQu
Ci0gICAgICAgT24gdGhlIG90aGVyIGhhbmQsIGlmIGNvbWJpbmF0aW9ucyBhcmUgcmVhbGx5IHJl
cXVpcmVkLCBhZGRpdGlvbmFsIDxwbmFtZXM+Ci0gICAgICAgY291bGQgYmUgYWRkZWQgYXMgbmVj
ZXNzYXJ5LiAgUXVlcnlpbmcgYSBiaXRmaWVsZCB2aWEgdGhlIEdldFRleFBhcmFtZXRlciBjb21t
YW5kCi0gICAgICAgZmVlbHMgYSBiaXQgb2RkLgotCi0gICAgMy4gV2hhdCBzaG91bGQgaGFwcGVu
IGlmIFRFWFRVUkVfVVNBR0VfQU5HTEUgaXMgc2V0L2NoYW5nZWQgYWZ0ZXIgdGhlIHRleHR1cmUK
LSAgICAgICBjb250ZW50cyBoYXZlIGJlZW4gc3BlY2lmaWVkPwotCi0gICAgICAgUkVTT0xWRUQ6
IEl0IHdpbGwgaGF2ZSBubyBlZmZlY3QuIEhvd2V2ZXIsIGlmIHRoZSB0ZXh0dXJlIGlzIHJlZGVm
aW5lZCAoZm9yIAotICAgICAgIGV4YW1wbGUgYnkgVGV4SW1hZ2UyRCkgdGhlIG5ldyBhbGxvY2F0
aW9uIHdpbGwgdXNlIHRoZSB1cGRhdGVkIHVzYWdlLgotICAgICAgIEdldFRleFBhcmFtZXRlciBp
cyB1c2VkIHRvIHF1ZXJ5IHRoZSB2YWx1ZSBvZiB0aGUgVEVYVFVSRV9VU0FHRV9BTkdMRQotICAg
ICAgIHN0YXRlIHRoYXQgd2FzIGxhc3Qgc2V0IGJ5IFRleFBhcmFtZXRlciBmb3IgdGhlIGN1cnJl
bnRseSBib3VuZCB0ZXh0dXJlLCBvcgotICAgICAgIHRoZSBkZWZhdWx0IHZhbHVlIGlmIGl0IGhh
cyBuZXZlciBiZWVuIHNldC4gVGhlcmUgaXMgbm8gd2F5IHRvIGRldGVybWluZSB0aGUgCi0gICAg
ICAgdXNhZ2UgdGhhdCB3YXMgaW4gZWZmZWN0IGF0IHRoZSB0aW1lIHRoZSB0ZXh0dXJlIHdhcyBk
ZWZpbmVkLgotCi1SZXZpc2lvbiBIaXN0b3J5Ci0KLSAgICBSZXYuICAgIERhdGUgICAgICBBdXRo
b3IgICAgIENoYW5nZXMKLSAgICAtLS0tICAtLS0tLS0tLS0tLSAtLS0tLS0tLS0gIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgIDEgICAxMCBOb3YgMjAxMSBk
Z2tvY2ggICAgIEluaXRpYWwgcmV2aXNpb24KLSAgICAgIDIgICAxMCBOb3YgMjAxMSBkZ2tvY2gg
ICAgIEFkZCBvdmVydmlldwotICAgCi0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4
dGVuc2lvbnMvQU5HTEVfdGltZXJfcXVlcnkudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvQU5HTEVfdGltZXJfcXVlcnkudHh0CShyZXZpc2lvbiAy
MDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0FOR0xFX3RpbWVy
X3F1ZXJ5LnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDU5MSArMCwwIEBACi1OYW1lCi0KLSAgICBB
TkdMRV90aW1lcl9xdWVyeQotCi1OYW1lIFN0cmluZ3MKLQotICAgIEdMX0FOR0xFX3RpbWVyX3F1
ZXJ5Ci0KLUNvbnRyaWJ1dG9ycwotCi0gICAgQ29udHJpYnV0b3JzIHRvIEFSQl9vY2NsdXNpb25f
cXVlcnkKLSAgICBDb250cmlidXRvcnMgdG8gRVhUX3RpbWVyX3F1ZXJ5Ci0gICAgQ29udHJpYnV0
b3JzIHRvIEFSQl90aW1lcl9xdWVyeQotICAgIEJlbiBWYW5paywgR29vZ2xlIEluYy4KLSAgICBE
YW5pZWwgS29jaCwgVHJhbnNHYW1pbmcgSW5jLgotCi1Db250YWN0Ci0KLSAgICBCZW4gVmFuaWss
IEdvb2dsZSBJbmMuIChiZW52YW5payAnYXQnIGdvb2dsZSAnZG90JyBjb20pCi0KLVN0YXR1cwot
Ci0gICAgRHJhZnQKLQotVmVyc2lvbgotCi0gICAgTGFzdCBNb2RpZmllZCBEYXRlOiBBcHIgMjgs
IDIwMTEKLSAgICBBdXRob3IgUmV2aXNpb246IDEKLQotTnVtYmVyCi0KLSAgICBPcGVuR0wgRVMg
RXh0ZW5zaW9uICM/PwotCi1EZXBlbmRlbmNpZXMKLQotICAgIE9wZW5HTCBFUyAyLjAgaXMgcmVx
dWlyZWQuCi0KLSAgICBUaGUgZXh0ZW5zaW9uIGlzIHdyaXR0ZW4gYWdhaW5zdCB0aGUgT3BlbkdM
IEVTIDIuMCBzcGVjaWZpY2F0aW9uLgotCi1PdmVydmlldwotCi0gICAgQXBwbGljYXRpb25zIGNh
biBiZW5lZml0IGZyb20gYWNjdXJhdGUgdGltaW5nIGluZm9ybWF0aW9uIGluIGEgbnVtYmVyIG9m
Ci0gICAgZGlmZmVyZW50IHdheXMuICBEdXJpbmcgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQsIHRp
bWluZyBpbmZvcm1hdGlvbiBjYW4KLSAgICBoZWxwIGlkZW50aWZ5IGFwcGxpY2F0aW9uIG9yIGRy
aXZlciBib3R0bGVuZWNrcy4gIEF0IHJ1biB0aW1lLAotICAgIGFwcGxpY2F0aW9ucyBjYW4gdXNl
IHRpbWluZyBpbmZvcm1hdGlvbiB0byBkeW5hbWljYWxseSBhZGp1c3QgdGhlIGFtb3VudAotICAg
IG9mIGRldGFpbCBpbiBhIHNjZW5lIHRvIGFjaGlldmUgY29uc3RhbnQgZnJhbWUgcmF0ZXMuICBP
cGVuR0wKLSAgICBpbXBsZW1lbnRhdGlvbnMgaGF2ZSBoaXN0b3JpY2FsbHkgcHJvdmlkZWQgbGl0
dGxlIHRvIG5vIHVzZWZ1bCB0aW1pbmcKLSAgICBpbmZvcm1hdGlvbi4gIEFwcGxpY2F0aW9ucyBj
YW4gZ2V0IHNvbWUgaWRlYSBvZiB0aW1pbmcgYnkgcmVhZGluZyB0aW1lcnMKLSAgICBvbiB0aGUg
Q1BVLCBidXQgdGhlc2UgdGltZXJzIGFyZSBub3Qgc3luY2hyb25pemVkIHdpdGggdGhlIGdyYXBo
aWNzCi0gICAgcmVuZGVyaW5nIHBpcGVsaW5lLiAgUmVhZGluZyBhIENQVSB0aW1lciBkb2VzIG5v
dCBndWFyYW50ZWUgdGhlIGNvbXBsZXRpb24KLSAgICBvZiBhIHBvdGVudGlhbGx5IGxhcmdlIGFt
b3VudCBvZiBncmFwaGljcyB3b3JrIGFjY3VtdWxhdGVkIGJlZm9yZSB0aGUKLSAgICB0aW1lciBp
cyByZWFkLCBhbmQgd2lsbCB0aHVzIHByb2R1Y2Ugd2lsZGx5IGluYWNjdXJhdGUgcmVzdWx0cy4K
LSAgICBnbEZpbmlzaCgpIGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSB3aGVuIHByZXZpb3VzIHJl
bmRlcmluZyBjb21tYW5kcyBoYXZlCi0gICAgYmVlbiBjb21wbGV0ZWQsIGJ1dCB3aWxsIGlkbGUg
dGhlIGdyYXBoaWNzIHBpcGVsaW5lIGFuZCBhZHZlcnNlbHkgYWZmZWN0Ci0gICAgYXBwbGljYXRp
b24gcGVyZm9ybWFuY2UuCi0KLSAgICBUaGlzIGV4dGVuc2lvbiBwcm92aWRlcyBhIHF1ZXJ5IG1l
Y2hhbmlzbSB0aGF0IGNhbiBiZSB1c2VkIHRvIGRldGVybWluZQotICAgIHRoZSBhbW91bnQgb2Yg
dGltZSBpdCB0YWtlcyB0byBmdWxseSBjb21wbGV0ZSBhIHNldCBvZiBHTCBjb21tYW5kcywgYW5k
Ci0gICAgd2l0aG91dCBzdGFsbGluZyB0aGUgcmVuZGVyaW5nIHBpcGVsaW5lLiAgSXQgdXNlcyB0
aGUgcXVlcnkgb2JqZWN0Ci0gICAgbWVjaGFuaXNtcyBmaXJzdCBpbnRyb2R1Y2VkIGluIHRoZSBv
Y2NsdXNpb24gcXVlcnkgZXh0ZW5zaW9uLCB3aGljaCBhbGxvdwotICAgIHRpbWUgaW50ZXJ2YWxz
IHRvIGJlIHBvbGxlZCBhc3luY2hyb25vdXNseSBieSB0aGUgYXBwbGljYXRpb24uCi0KLUlQIFN0
YXR1cwotCi0gICAgTm8ga25vd24gSVAgY2xhaW1zLgotCi1OZXcgUHJvY2VkdXJlcyBhbmQgRnVu
Y3Rpb25zCi0KLSAgICB2b2lkIEdlblF1ZXJpZXNBTkdMRShzaXplaSBuLCB1aW50ICppZHMpOwot
ICAgIHZvaWQgRGVsZXRlUXVlcmllc0FOR0xFKHNpemVpIG4sIGNvbnN0IHVpbnQgKmlkcyk7Ci0g
ICAgYm9vbGVhbiBJc1F1ZXJ5QU5HTEUodWludCBpZCk7Ci0gICAgdm9pZCBCZWdpblF1ZXJ5QU5H
TEUoZW51bSB0YXJnZXQsIHVpbnQgaWQpOwotICAgIHZvaWQgRW5kUXVlcnlBTkdMRShlbnVtIHRh
cmdldCk7Ci0gICAgdm9pZCBRdWVyeUNvdW50ZXJBTkdMRSh1aW50IGlkLCBlbnVtIHRhcmdldCk7
Ci0gICAgdm9pZCBHZXRRdWVyeWl2QU5HTEUoZW51bSB0YXJnZXQsIGVudW0gcG5hbWUsIGludCAq
cGFyYW1zKTsKLSAgICB2b2lkIEdldFF1ZXJ5T2JqZWN0aXZBTkdMRSh1aW50IGlkLCBlbnVtIHBu
YW1lLCBpbnQgKnBhcmFtcyk7Ci0gICAgdm9pZCBHZXRRdWVyeU9iamVjdHVpdkFOR0xFKHVpbnQg
aWQsIGVudW0gcG5hbWUsIHVpbnQgKnBhcmFtcyk7Ci0gICAgdm9pZCBHZXRRdWVyeU9iamVjdGk2
NHZBTkdMRSh1aW50IGlkLCBlbnVtIHBuYW1lLCBpbnQ2NCAqcGFyYW1zKTsKLSAgICB2b2lkIEdl
dFF1ZXJ5T2JqZWN0dWk2NHZBTkdMRSh1aW50IGlkLCBlbnVtIHBuYW1lLCB1aW50NjQgKnBhcmFt
cyk7Ci0KLU5ldyBUb2tlbnMKLQotICAgIEFjY2VwdGVkIGJ5IHRoZSA8cG5hbWU+IHBhcmFtZXRl
ciBvZiBHZXRRdWVyeWl2QU5HTEU6Ci0KLSAgICAgICAgUVVFUllfQ09VTlRFUl9CSVRTX0FOR0xF
ICAgICAgICAgICAgICAgICAgICAgICAweDg4NjQKLSAgICAgICAgQ1VSUkVOVF9RVUVSWV9BTkdM
RSAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4NjUKLQotICAgIEFjY2VwdGVkIGJ5IHRo
ZSA8cG5hbWU+IHBhcmFtZXRlciBvZiBHZXRRdWVyeU9iamVjdGl2QU5HTEUsCi0gICAgR2V0UXVl
cnlPYmplY3R1aXZBTkdMRSwgR2V0UXVlcnlPYmplY3RpNjR2QU5HTEUsIGFuZAotICAgIEdldFF1
ZXJ5T2JqZWN0dWk2NHZBTkdMRToKLQotICAgICAgICBRVUVSWV9SRVNVTFRfQU5HTEUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4ODg2NgotICAgICAgICBRVUVSWV9SRVNVTFRfQVZBSUxB
QkxFX0FOR0xFICAgICAgICAgICAgICAgICAgIDB4ODg2NwotICAgICAgICAKLSAgICBBY2NlcHRl
ZCBieSB0aGUgPHRhcmdldD4gcGFyYW1ldGVyIG9mIEJlZ2luUXVlcnlBTkdMRSwgRW5kUXVlcnlB
TkdMRSwgYW5kCi0gICAgR2V0UXVlcnlpdkFOR0xFOgotCi0gICAgICAgIFRJTUVfRUxBUFNFRF9B
TkdMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OEJGCi0KLSAgICBBY2NlcHRlZCBi
eSB0aGUgPHRhcmdldD4gcGFyYW1ldGVyIG9mIEdldFF1ZXJ5aXZBTkdMRSBhbmQKLSAgICBRdWVy
eUNvdW50ZXJBTkdMRToKLQotICAgICAgICBUSU1FU1RBTVBfQU5HTEUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4OEUyOAotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciAyIG9mIHRoZSBP
cGVuR0wgRVMgMi4wIFNwZWNpZmljYXRpb24gKE9wZW5HTCBFUyBPcGVyYXRpb24pCi0KLSAgICAo
TW9kaWZ5IHRhYmxlIDIuMSwgQ29ycmVzcG9uZGVuY2Ugb2YgY29tbWFuZCBzdWZmaXggbGV0dGVy
cyB0byBHTCBhcmd1bWVudCkKLSAgICBBZGQgdHdvIG5ldyB0eXBlczoKLSAgICAKLSAgICBMZXR0
ZXIgQ29ycmVzcG9uZGluZyBHTCBUeXBlCi0gICAgLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotICAgIGk2NCAgICBpbnQ2NEFOR0xFCi0gICAgdWk2NCAgIHVpbnQ2NEFOR0xFCi0KLSAgICAo
TW9kaWZ5IHRhYmxlIDIuMiwgR0wgZGF0YSB0eXBlcykgQWRkIHR3byBuZXcgdHlwZXM6Ci0gICAg
Ci0gICAgR0wgVHlwZSAgICAgICBNaW5pbXVtIEJpdCBXaWR0aCAgIERlc2NyaXB0aW9uCi0gICAg
LS0tLS0tLSAgICAgICAtLS0tLS0tLS0tLS0tLS0tLSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0gICAgaW50NjRBTkdMRSAgICA2NCAgICAgICAgICAgICAgICAgIFNpZ25lZCAyJ3Mg
Y29tcGxlbWVudCBpbnRlZ2VyCi0gICAgdWludDY0QU5HTEUgICA2NCAgICAgICAgICAgICAgICAg
IFVuc2lnbmVkIGJpbmFyeSBpbnRlZ2VyCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDUgb2YgdGhl
IE9wZW5HTCBFUyAyLjAgU3BlY2lmaWNhdGlvbiAoU3BlY2lhbCBGdW5jdGlvbnMpCi0KLSAgICBB
ZGQgYSBuZXcgc2VjdGlvbiA1LjMgIlRpbWVyIFF1ZXJpZXMiOgotCi0gICAgIjUuMyAgVGltZXIg
UXVlcmllcwotCi0gICAgVGltZXIgcXVlcmllcyB1c2UgcXVlcnkgb2JqZWN0cyB0byB0cmFjayB0
aGUgYW1vdW50IG9mIHRpbWUgbmVlZGVkIHRvCi0gICAgZnVsbHkgY29tcGxldGUgYSBzZXQgb2Yg
R0wgY29tbWFuZHMsIG9yIHRvIGRldGVybWluZSB0aGUgY3VycmVudCB0aW1lCi0gICAgb2YgdGhl
IEdMLgotICAgIAotICAgIFRpbWVyIHF1ZXJpZXMgYXJlIGFzc29jaWF0ZWQgd2l0aCBxdWVyeSBv
YmplY3RzLiAgVGhlIGNvbW1hbmQKLQotICAgICAgdm9pZCBHZW5RdWVyaWVzQU5HTEUoc2l6ZWkg
biwgdWludCAqaWRzKTsKLQotICAgIHJldHVybnMgPG4+IHByZXZpb3VzbHkgdW51c2VkIHF1ZXJ5
IG9iamVjdCBuYW1lcyBpbiA8aWRzPi4gIFRoZXNlCi0gICAgbmFtZXMgYXJlIG1hcmtlZCBhcyB1
c2VkLCBidXQgbm8gb2JqZWN0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGVtIHVudGlsCi0gICAgdGhl
IGZpcnN0IHRpbWUgdGhleSBhcmUgdXNlZCBieSBCZWdpblF1ZXJ5QU5HTEUuICBRdWVyeSBvYmpl
Y3RzIGNvbnRhaW4KLSAgICBvbmUgcGllY2Ugb2Ygc3RhdGUsIGFuIGludGVnZXIgcmVzdWx0IHZh
bHVlLiAgVGhpcyByZXN1bHQgdmFsdWUgaXMKLSAgICBpbml0aWFsaXplZCB0byB6ZXJvIHdoZW4g
dGhlIG9iamVjdCBpcyBjcmVhdGVkLiAgQW55IHBvc2l0aXZlIGludGVnZXIKLSAgICBleGNlcHQg
Zm9yIHplcm8gKHdoaWNoIGlzIHJlc2VydmVkIGZvciB0aGUgR0wpIGlzIGEgdmFsaWQgcXVlcnkK
LSAgICBvYmplY3QgbmFtZS4KLQotICAgIFF1ZXJ5IG9iamVjdHMgYXJlIGRlbGV0ZWQgYnkgY2Fs
bGluZwotCi0gICAgICB2b2lkIERlbGV0ZVF1ZXJpZXNBTkdMRShzaXplaSBuLCBjb25zdCB1aW50
ICppZHMpOwotCi0gICAgPGlkcz4gY29udGFpbnMgPG4+IG5hbWVzIG9mIHF1ZXJ5IG9iamVjdHMg
dG8gYmUgZGVsZXRlZC4gIEFmdGVyIGEKLSAgICBxdWVyeSBvYmplY3QgaXMgZGVsZXRlZCwgaXRz
IG5hbWUgaXMgYWdhaW4gdW51c2VkLiAgVW51c2VkIG5hbWVzIGluCi0gICAgPGlkcz4gYXJlIHNp
bGVudGx5IGlnbm9yZWQuCi0gICAgSWYgYW4gYWN0aXZlIHF1ZXJ5IG9iamVjdCBpcyBkZWxldGVk
IGl0cyBuYW1lIGltbWVkaWF0ZWx5IGJlY29tZXMgdW51c2VkLAotICAgIGJ1dCB0aGUgdW5kZXJs
eWluZyBvYmplY3QgaXMgbm90IGRlbGV0ZWQgdW50aWwgaXQgaXMgbm8gbG9uZ2VyIGFjdGl2ZS4K
LQotICAgIEEgdGltZXIgcXVlcnkgY2FuIGJlIHN0YXJ0ZWQgYW5kIGZpbmlzaGVkIGJ5IGNhbGxp
bmcKLQotICAgICAgdm9pZCBCZWdpblF1ZXJ5QU5HTEUoZW51bSB0YXJnZXQsIHVpbnQgaWQpOwot
ICAgICAgdm9pZCBFbmRRdWVyeUFOR0xFKGVudW0gdGFyZ2V0KTsKLQotICAgIHdoZXJlIDx0YXJn
ZXQ+IGlzIFRJTUVfRUxBUFNFRF9BTkdMRS4gIElmIEJlZ2luUXVlcnlBTkdMRSBpcyBjYWxsZWQK
LSAgICB3aXRoIGFuIHVudXNlZCA8aWQ+LCB0aGF0IG5hbWUgaXMgbWFya2VkIGFzIHVzZWQgYW5k
IGFzc29jaWF0ZWQgd2l0aAotICAgIGEgbmV3IHF1ZXJ5IG9iamVjdC4KLSAgICAKLSAgICBJZiBC
ZWdpblF1ZXJ5QU5HTEUgaXMgY2FsbGVkIHdpdGggYW4gPGlkPiBvZiB6ZXJvLCBpZiB0aGUgYWN0
aXZlIHF1ZXJ5Ci0gICAgb2JqZWN0IG5hbWUgZm9yIDx0YXJnZXQ+IGlzIG5vbi16ZXJvLCBpZiA8
aWQ+IGlzIHRoZSBuYW1lIG9mIGFuIGV4aXN0aW5nCi0gICAgcXVlcnkgb2JqZWN0IHdob3NlIHR5
cGUgZG9lcyBub3QgbWF0Y2ggPHRhcmdldD4sIG9yIGlmIDxpZD4gaXMgdGhlIGFjdGl2ZQotICAg
IHF1ZXJ5IG9iamVjdCBuYW1lIGZvciBhbnkgcXVlcnkgdHlwZSwgdGhlIGVycm9yIElOVkFMSURf
T1BFUkFUSU9OIGlzCi0gICAgZ2VuZXJhdGVkLiAgSWYgRW5kUXVlcnlBTkdMRSBpcyBjYWxsZWQg
d2hpbGUgbm8gcXVlcnkgd2l0aCB0aGUgc2FtZSB0YXJnZXQKLSAgICBpcyBpbiBwcm9ncmVzcywg
YW4gSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IgaXMgZ2VuZXJhdGVkLgotCi0gICAgV2hlbiBCZWdp
blF1ZXJ5QU5HTEUgYW5kIEVuZFF1ZXJ5QU5HTEUgYXJlIGNhbGxlZCB3aXRoIGEgPHRhcmdldD4g
b2YKLSAgICBUSU1FX0VMQVBTRURfQU5HTEUsIHRoZSBHTCBwcmVwYXJlcyB0byBzdGFydCBhbmQg
c3RvcCB0aGUgdGltZXIgdXNlZCBmb3IKLSAgICB0aW1lciBxdWVyaWVzLiAgVGhlIHRpbWVyIGlz
IHN0YXJ0ZWQgb3Igc3RvcHBlZCB3aGVuIHRoZSBlZmZlY3RzIGZyb20gYWxsCi0gICAgcHJldmlv
dXMgY29tbWFuZHMgb24gdGhlIEdMIGNsaWVudCBhbmQgc2VydmVyIHN0YXRlIGFuZCB0aGUgZnJh
bWVidWZmZXIKLSAgICBoYXZlIGJlZW4gZnVsbHkgcmVhbGl6ZWQuICBUaGUgQmVnaW5RdWVyeUFO
R0xFIGFuZCBFbmRRdWVyeUFOR0xFIGNvbW1hbmRzCi0gICAgbWF5IHJldHVybiBiZWZvcmUgdGhl
IHRpbWVyIGlzIGFjdHVhbGx5IHN0YXJ0ZWQgb3Igc3RvcHBlZC4gIFdoZW4gdGhlIHRpbWVyCi0g
ICAgcXVlcnkgdGltZXIgaXMgZmluYWxseSBzdG9wcGVkLCB0aGUgZWxhcHNlZCB0aW1lIChpbiBu
YW5vc2Vjb25kcykgaXMKLSAgICB3cml0dGVuIHRvIHRoZSBjb3JyZXNwb25kaW5nIHF1ZXJ5IG9i
amVjdCBhcyB0aGUgcXVlcnkgcmVzdWx0IHZhbHVlLCBhbmQKLSAgICB0aGUgcXVlcnkgcmVzdWx0
IGZvciB0aGF0IG9iamVjdCBpcyBtYXJrZWQgYXMgYXZhaWxhYmxlLgotCi0gICAgSWYgdGhlIGVs
YXBzZWQgdGltZSBvdmVyZmxvd3MgdGhlIG51bWJlciBvZiBiaXRzLCA8bj4sIGF2YWlsYWJsZSB0
byBob2xkCi0gICAgZWxhcHNlZCB0aW1lLCBpdHMgdmFsdWUgYmVjb21lcyB1bmRlZmluZWQuICBJ
dCBpcyByZWNvbW1lbmRlZCwgYnV0IG5vdAotICAgIHJlcXVpcmVkLCB0aGF0IGltcGxlbWVudGF0
aW9ucyBoYW5kbGUgdGhpcyBvdmVyZmxvdyBjYXNlIGJ5IHNhdHVyYXRpbmcgYXQKLSAgICAyXm4g
LSAxLgotCi0gICAgVGhlIG5lY2Vzc2FyeSBzdGF0ZSBpcyBhIHNpbmdsZSBiaXQgaW5kaWNhdGlu
ZyB3aGV0aGVyIGFuIHRpbWVyCi0gICAgcXVlcnkgaXMgYWN0aXZlLCB0aGUgaWRlbnRpZmllciBv
ZiB0aGUgY3VycmVudGx5IGFjdGl2ZSB0aW1lcgotICAgIHF1ZXJ5LCBhbmQgYSBjb3VudGVyIGtl
ZXBpbmcgdHJhY2sgb2YgdGhlIHRpbWUgdGhhdCBoYXMgcGFzc2VkLgotCi0gICAgV2hlbiB0aGUg
Y29tbWFuZAotCi0gICAgICAgICB2b2lkIFF1ZXJ5Q291bnRlckFOR0xFKHVpbnQgaWQsIGVudW0g
dGFyZ2V0KTsKLQotICAgIGlzIGNhbGxlZCB3aXRoIDx0YXJnZXQ+IFRJTUVTVEFNUF9BTkdMRSwg
dGhlIEdMIHJlY29yZHMgdGhlIGN1cnJlbnQgdGltZQotICAgIGludG8gdGhlIGNvcnJlc3BvbmRp
bmcgcXVlcnkgb2JqZWN0LiBUaGUgdGltZSBpcyByZWNvcmRlZCBhZnRlciBhbGwKLSAgICBwcmV2
aW91cyBjb21tYW5kcyBvbiB0aGUgR0wgY2xpZW50IGFuZCBzZXJ2ZXIgc3RhdGUgYW5kIHRoZSBm
cmFtZWJ1ZmZlcgotICAgIGhhdmUgYmVlbiBmdWxseSByZWFsaXplZC4gV2hlbiB0aGUgdGltZSBp
cyByZWNvcmRlZCwgdGhlIHF1ZXJ5IHJlc3VsdCBmb3IKLSAgICB0aGF0IG9iamVjdCBpcyBtYXJr
ZWQgYXZhaWxhYmxlLiBRdWVyeUNvdW50ZXJBTkdMRSB0aW1lciBxdWVyaWVzIGNhbiBiZQotICAg
IHVzZWQgd2l0aGluIGEgQmVnaW5RdWVyeUFOR0xFIC8gRW5kUXVlcnlBTkdMRSBibG9jayB3aGVy
ZSB0aGUgPHRhcmdldD4gaXMKLSAgICBUSU1FX0VMQVBTRURfQU5HTEUgYW5kIGl0IGRvZXMgbm90
IGFmZmVjdCB0aGUgcmVzdWx0IG9mIHRoYXQgcXVlcnkgb2JqZWN0LgotICAgIFRoZSBlcnJvciBJ
TlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgdGhlIDxpZD4gaXMgYWxyZWFkeSBpbiB1
c2UKLSAgICB3aXRoaW4gYSBCZWdpblF1ZXJ5QU5HTEUvRW5kUXVlcnlBTkdMRSBibG9jay4iCi0K
LUFkZGl0aW9ucyB0byBDaGFwdGVyIDYgb2YgdGhlIE9wZW5HTCBFUyAyLjAgU3BlY2lmaWNhdGlv
biAoU3RhdGUgYW5kIFN0YXRlCi1SZXF1ZXN0cykKLQotICAgIEFkZCBhIG5ldyBzZWN0aW9uIDYu
MS45ICJUaW1lciBRdWVyaWVzIjoKLQotICAgICJUaGUgY29tbWFuZAotCi0gICAgICBib29sZWFu
IElzUXVlcnlBTkdMRSh1aW50IGlkKTsKLQotICAgIHJldHVybnMgVFJVRSBpZiA8aWQ+IGlzIHRo
ZSBuYW1lIG9mIGEgcXVlcnkgb2JqZWN0LiAgSWYgPGlkPiBpcyB6ZXJvLAotICAgIG9yIGlmIDxp
ZD4gaXMgYSBub24temVybyB2YWx1ZSB0aGF0IGlzIG5vdCB0aGUgbmFtZSBvZiBhIHF1ZXJ5Ci0g
ICAgb2JqZWN0LCBJc1F1ZXJ5QU5HTEUgcmV0dXJucyBGQUxTRS4KLQotICAgIEluZm9ybWF0aW9u
IGFib3V0IGEgcXVlcnkgdGFyZ2V0IGNhbiBiZSBxdWVyaWVkIHdpdGggdGhlIGNvbW1hbmQKLQot
ICAgICAgdm9pZCBHZXRRdWVyeWl2QU5HTEUoZW51bSB0YXJnZXQsIGVudW0gcG5hbWUsIGludCAq
cGFyYW1zKTsKLQotICAgIDx0YXJnZXQ+IGlkZW50aWZpZXMgdGhlIHF1ZXJ5IHRhcmdldCBhbmQg
Y2FuIGJlIFRJTUVfRUxBUFNFRF9BTkdMRSBvcgotICAgIFRJTUVTVEFNUF9BTkdMRSBmb3IgdGlt
ZXIgcXVlcmllcy4KLQotICAgIElmIDxwbmFtZT4gaXMgQ1VSUkVOVF9RVUVSWV9BTkdMRSwgdGhl
IG5hbWUgb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUgcXVlcnkKLSAgICBmb3IgPHRhcmdldD4sIG9y
IHplcm8gaWYgbm8gcXVlcnkgaXMgYWN0aXZlLCB3aWxsIGJlIHBsYWNlZCBpbiA8cGFyYW1zPi4K
LQotICAgIElmIDxwbmFtZT4gaXMgUVVFUllfQ09VTlRFUl9CSVRTX0FOR0xFLCB0aGUgaW1wbGVt
ZW50YXRpb24tZGVwZW5kZW50IG51bWJlcgotICAgIG9mIGJpdHMgdXNlZCB0byBob2xkIHRoZSBx
dWVyeSByZXN1bHQgZm9yIDx0YXJnZXQ+IHdpbGwgYmUgcGxhY2VkIGluCi0gICAgPHBhcmFtcz4u
ICBUaGUgbnVtYmVyIG9mIHF1ZXJ5IGNvdW50ZXIgYml0cyBtYXkgYmUgemVybywgaW4gd2hpY2gg
Y2FzZQotICAgIHRoZSBjb3VudGVyIGNvbnRhaW5zIG5vIHVzZWZ1bCBpbmZvcm1hdGlvbi4KLQot
ICAgIEZvciB0aW1lciBxdWVyaWVzIChUSU1FX0VMQVBTRURfQU5HTEUgYW5kIFRJTUVTVEFNUF9B
TkdMRSksIGlmIHRoZSBudW1iZXIKLSAgICBvZiBiaXRzIGlzIG5vbi16ZXJvLCB0aGUgbWluaW11
bSBudW1iZXIgb2YgYml0cyBhbGxvd2VkIGlzIDMwIHdoaWNoCi0gICAgd2lsbCBhbGxvdyBhdCBs
ZWFzdCAxIHNlY29uZCBvZiB0aW1pbmcuCi0KLSAgICBUaGUgc3RhdGUgb2YgYSBxdWVyeSBvYmpl
Y3QgY2FuIGJlIHF1ZXJpZWQgd2l0aCB0aGUgY29tbWFuZHMKLQotICAgICAgdm9pZCBHZXRRdWVy
eU9iamVjdGl2QU5HTEUodWludCBpZCwgZW51bSBwbmFtZSwgaW50ICpwYXJhbXMpOwotICAgICAg
dm9pZCBHZXRRdWVyeU9iamVjdHVpdkFOR0xFKHVpbnQgaWQsIGVudW0gcG5hbWUsIHVpbnQgKnBh
cmFtcyk7Ci0gICAgICB2b2lkIEdldFF1ZXJ5T2JqZWN0aTY0dkFOR0xFKHVpbnQgaWQsIGVudW0g
cG5hbWUsIGludDY0ICpwYXJhbXMpOwotICAgICAgdm9pZCBHZXRRdWVyeU9iamVjdHVpNjR2QU5H
TEUodWludCBpZCwgZW51bSBwbmFtZSwgdWludDY0ICpwYXJhbXMpOwotCi0gICAgSWYgPGlkPiBp
cyBub3QgdGhlIG5hbWUgb2YgYSBxdWVyeSBvYmplY3QsIG9yIGlmIHRoZSBxdWVyeSBvYmplY3QK
LSAgICBuYW1lZCBieSA8aWQ+IGlzIGN1cnJlbnRseSBhY3RpdmUsIHRoZW4gYW4gSU5WQUxJRF9P
UEVSQVRJT04gZXJyb3IgaXMKLSAgICBnZW5lcmF0ZWQuCi0KLSAgICBJZiA8cG5hbWU+IGlzIFFV
RVJZX1JFU1VMVF9BTkdMRSwgdGhlbiB0aGUgcXVlcnkgb2JqZWN0J3MgcmVzdWx0Ci0gICAgdmFs
dWUgaXMgcmV0dXJuZWQgYXMgYSBzaW5nbGUgaW50ZWdlciBpbiA8cGFyYW1zPi4gSWYgdGhlIHZh
bHVlIGlzIHNvCi0gICAgbGFyZ2UgaW4gbWFnbml0dWRlIHRoYXQgaXQgY2Fubm90IGJlIHJlcHJl
c2VudGVkIHdpdGggdGhlIHJlcXVlc3RlZCB0eXBlLAotICAgIHRoZW4gdGhlIG5lYXJlc3QgdmFs
dWUgcmVwcmVzZW50YWJsZSB1c2luZyB0aGUgcmVxdWVzdGVkIHR5cGUgaXMKLSAgICByZXR1cm5l
ZC4gSWYgdGhlIG51bWJlciBvZiBxdWVyeSBjb3VudGVyIGJpdHMgZm9yIHRhcmdldCBpcyB6ZXJv
LCB0aGVuCi0gICAgdGhlIHJlc3VsdCBpcyByZXR1cm5lZCBhcyBhIHNpbmdsZSBpbnRlZ2VyIHdp
dGggdGhlIHZhbHVlIHplcm8uCi0gICAgCi0gICAgVGhlcmUgbWF5IGJlIGFuIGluZGV0ZXJtaW5h
dGUgZGVsYXkgYmVmb3JlIHRoZSBhYm92ZSBxdWVyeSByZXR1cm5zLiBJZgotICAgIDxwbmFtZT4g
aXMgUVVFUllfUkVTVUxUX0FWQUlMQUJMRV9BTkdMRSwgRkFMU0UgaXMgcmV0dXJuZWQgaWYgc3Vj
aCBhIGRlbGF5Ci0gICAgd291bGQgYmUgcmVxdWlyZWQ7IG90aGVyd2lzZSBUUlVFIGlzIHJldHVy
bmVkLiBJdCBtdXN0IGFsd2F5cyBiZSB0cnVlCi0gICAgdGhhdCBpZiBhbnkgcXVlcnkgb2JqZWN0
IHJldHVybnMgYSByZXN1bHQgYXZhaWxhYmxlIG9mIFRSVUUsIGFsbCBxdWVyaWVzCi0gICAgb2Yg
dGhlIHNhbWUgdHlwZSBpc3N1ZWQgcHJpb3IgdG8gdGhhdCBxdWVyeSBtdXN0IGFsc28gcmV0dXJu
IFRSVUUuCi0KLSAgICBRdWVyeWluZyB0aGUgc3RhdGUgZm9yIGEgZ2l2ZW4gdGltZXIgcXVlcnkg
Zm9yY2VzIHRoYXQgdGltZXIgcXVlcnkgdG8KLSAgICBjb21wbGV0ZSB3aXRoaW4gYSBmaW5pdGUg
YW1vdW50IG9mIHRpbWUuCi0KLSAgICBJZiBtdWx0aXBsZSBxdWVyaWVzIGFyZSBpc3N1ZWQgb24g
dGhlIHNhbWUgdGFyZ2V0IGFuZCBpZCBwcmlvciB0byAKLSAgICBjYWxsaW5nIEdldFF1ZXJ5T2Jq
ZWN0W3VdaVs2NF12QU5HTEUsIHRoZSByZXN1bHQgcmV0dXJuZWQgd2lsbCBhbHdheXMgYmUKLSAg
ICBmcm9tIHRoZSBsYXN0IHF1ZXJ5IGlzc3VlZC4gIFRoZSByZXN1bHRzIGZyb20gYW55IHF1ZXJp
ZXMgYmVmb3JlIHRoZQotICAgIGxhc3Qgb25lIHdpbGwgYmUgbG9zdCBpZiB0aGUgcmVzdWx0cyBh
cmUgbm90IHJldHJpZXZlZCBiZWZvcmUgc3RhcnRpbmcKLSAgICBhIG5ldyBxdWVyeSBvbiB0aGUg
c2FtZSA8dGFyZ2V0PiBhbmQgPGlkPi4iCi0KLUVycm9ycwotCi0gICAgVGhlIGVycm9yIElOVkFM
SURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIEdlblF1ZXJpZXNBTkdMRSBpcyBjYWxsZWQgd2hlcmUK
LSAgICA8bj4gaXMgbmVnYXRpdmUuCi0KLSAgICBUaGUgZXJyb3IgSU5WQUxJRF9WQUxVRSBpcyBn
ZW5lcmF0ZWQgaWYgRGVsZXRlUXVlcmllc0FOR0xFIGlzIGNhbGxlZAotICAgIHdoZXJlIDxuPiBp
cyBuZWdhdGl2ZS4KLQotICAgIFRoZSBlcnJvciBJTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0
ZWQgaWYgQmVnaW5RdWVyeUFOR0xFIGlzIGNhbGxlZAotICAgIHdoZW4gYSBxdWVyeSBvZiB0aGUg
Z2l2ZW4gPHRhcmdldD4gaXMgYWxyZWFkeSBhY3RpdmUuCi0KLSAgICBUaGUgZXJyb3IgSU5WQUxJ
RF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIEVuZFF1ZXJ5QU5HTEUgaXMgY2FsbGVkCi0gICAg
d2hlbiBhIHF1ZXJ5IG9mIHRoZSBnaXZlbiA8dGFyZ2V0PiBpcyBub3QgYWN0aXZlLgotCi0gICAg
VGhlIGVycm9yIElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBCZWdpblF1ZXJ5QU5H
TEUgaXMgY2FsbGVkCi0gICAgd2hlcmUgPGlkPiBpcyB6ZXJvLgotCi0gICAgVGhlIGVycm9yIElO
VkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBCZWdpblF1ZXJ5QU5HTEUgaXMgY2FsbGVk
Ci0gICAgd2hlcmUgPGlkPiBpcyB0aGUgbmFtZSBvZiBhIHF1ZXJ5IGN1cnJlbnRseSBpbiBwcm9n
cmVzcy4KLSAgICAKLSAgICBUaGUgZXJyb3IgSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVk
IGlmIEJlZ2luUXVlcnlBTkdMRSBpcyBjYWxsZWQKLSAgICB3aGVyZSA8aWQ+IGlzIHRoZSBuYW1l
IG9mIGFuIGV4aXN0aW5nIHF1ZXJ5IG9iamVjdCB3aG9zZSB0eXBlIGRvZXMgbm90Ci0gICAgbWF0
Y2ggPHRhcmdldD4uCi0KLSAgICBUaGUgZXJyb3IgSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBp
ZiBCZWdpblF1ZXJ5QU5HTEUgb3IgRW5kUXVlcnlBTkdMRQotICAgIGlzIGNhbGxlZCB3aGVyZSA8
dGFyZ2V0PiBpcyBub3QgVElNRV9FTEFQU0VEX0FOR0xFLgotCi0gICAgVGhlIGVycm9yIElOVkFM
SURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgR2V0UXVlcnlpdkFOR0xFIGlzIGNhbGxlZCB3aGVyZQot
ICAgIDx0YXJnZXQ+IGlzIG5vdCBUSU1FX0VMQVBTRURfQU5HTEUgb3IgVElNRVNUQU1QX0FOR0xF
LgotCi0gICAgVGhlIGVycm9yIElOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgR2V0UXVlcnlp
dkFOR0xFIGlzIGNhbGxlZCB3aGVyZQotICAgIDxwbmFtZT4gaXMgbm90IFFVRVJZX0NPVU5URVJf
QklUU19BTkdMRSBvciBDVVJSRU5UX1FVRVJZX0FOR0xFLgotCi0gICAgVGhlIGVycm9yIElOVkFM
SURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgUXVlcnlDb3VudGVyQU5HTEUgaXMgY2FsbGVkIHdoZXJl
Ci0gICAgPHRhcmdldD4gaXMgbm90IFRJTUVTVEFNUF9BTkdMRS4KLQotICAgIFRoZSBlcnJvciBJ
TlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgUXVlcnlDb3VudGVyQU5HTEUgaXMgY2Fs
bGVkCi0gICAgb24gYSBxdWVyeSBvYmplY3QgdGhhdCBpcyBhbHJlYWR5IGluIHVzZSBpbnNpZGUg
YQotICAgIEJlZ2luUXVlcnlBTkdMRS9FbmRRdWVyeUFOR0xFLgotCi0gICAgVGhlIGVycm9yIElO
VkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBHZXRRdWVyeU9iamVjdGl2QU5HTEUsCi0g
ICAgR2V0UXVlcnlPYmplY3R1aXZBTkdMRSwgR2V0UXVlcnlPYmplY3RpNjR2QU5HTEUsIG9yCi0g
ICAgR2V0UXVlcnlPYmplY3R1aTY0dkFOR0xFIGlzIGNhbGxlZCB3aGVyZSA8aWQ+IGlzIG5vdCB0
aGUgbmFtZSBvZiBhIHF1ZXJ5Ci0gICAgb2JqZWN0LgotCi0gICAgVGhlIGVycm9yIElOVkFMSURf
T1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBHZXRRdWVyeU9iamVjdGl2QU5HTEUsCi0gICAgR2V0
UXVlcnlPYmplY3R1aXZBTkdMRSwgR2V0UXVlcnlPYmplY3RpNjR2QU5HTEUsIG9yCi0gICAgR2V0
UXVlcnlPYmplY3R1aTY0dkFOR0xFIGlzIGNhbGxlZCB3aGVyZSA8aWQ+IGlzIHRoZSBuYW1lIG9m
IGEgY3VycmVudGx5Ci0gICAgYWN0aXZlIHF1ZXJ5IG9iamVjdC4KLQotICAgIFRoZSBlcnJvciBJ
TlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIEdldFF1ZXJ5T2JqZWN0aXZBTkdMRSwKLSAgICBH
ZXRRdWVyeU9iamVjdHVpdkFOR0xFLCBHZXRRdWVyeU9iamVjdGk2NHZBTkdMRSwgb3IKLSAgICBH
ZXRRdWVyeU9iamVjdHVpNjR2QU5HTEUgaXMgY2FsbGVkIHdoZXJlIDxwbmFtZT4gaXMgbm90Ci0g
ICAgUVVFUllfUkVTVUxUX0FOR0xFIG9yIFFVRVJZX1JFU1VMVF9BVkFJTEFCTEVfQU5HTEUuCi0K
LU5ldyBTdGF0ZQotCi0gICAgKEFkZCBhIG5ldyB0YWJsZSA2Lnh4LCAiUXVlcnkgT3BlcmF0aW9u
cyIpCi0gICAgCi0gICAgR2V0IFZhbHVlICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgR2V0
IENvbW1hbmQgICAgICAgICAgICAgIEluaXRpYWwgVmFsdWUgICBEZXNjcmlwdGlvbiAgICAgICAg
ICAgICAgU2VjCi0gICAgLS0tLS0tLS0tICAgICAgICAgICAgICAgICAgICAgIC0tLS0gICAgLS0t
LS0tLS0tLS0gICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0gICAtLS0tLS0tLS0tLSAgICAgICAg
ICAgICAgLS0tLS0tCi0gICAgLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgICAgICAg
LSAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFICAgICAgICAgICBxdWVyeSBhY3RpdmUgICAg
ICAgICAgICAgNS4zCi0gICAgQ1VSUkVOVF9RVUVSWV9BTkdMRSAgICAgICAgICAgIForICAgICAg
R2V0UXVlcnlpdkFOR0xFICAgICAgICAgIDAgICAgICAgICAgICAgICBhY3RpdmUgcXVlcnkgSUQg
ICAgICAgICAgNS4zCi0gICAgUVVFUllfUkVTVUxUX0FOR0xFICAgICAgICAgICAgIForICAgICAg
R2V0UXVlcnlPYmplY3R1aXZBTkdMRSwgIDAgICAgICAgICAgICAgICBzYW1wbGVzLXBhc3NlZCBj
b3VudCAgICAgNS4zCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R2V0UXVlcnlPYmplY3R1aTY0dkFOR0xFCi0gICAgUVVFUllfUkVTVUxUX0FWQUlMQUJMRV9BTkdM
RSAgIEIgICAgICAgR2V0UXVlcnlPYmplY3RpdkFOR0xFICAgIEZBTFNFICAgICAgICAgICBxdWVy
eSByZXN1bHQgYXZhaWxhYmxlICAgNS4zCi0KLU5ldyBJbXBsZW1lbnRhdGlvbiBEZXBlbmRlbnQg
U3RhdGUKLQotICAgIChBZGQgdGhlIGZvbGxvd2luZyBlbnRyeSB0byB0YWJsZSA2LjE4KToKLQot
ICAgIEdldCBWYWx1ZSAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgIEdldCBDb21tYW5kICAg
ICAgTWluaW11bSBWYWx1ZSAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICBTZWMKLSAgICAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgICAgLS0tLSAgICAtLS0tLS0tLS0tLSAgICAgIC0tLS0t
LS0tLS0tLS0gICAgICAtLS0tLS0tLS0tLS0tLS0tICAgICAgLS0tLS0tCi0gICAgUVVFUllfQ09V
TlRFUl9CSVRTX0FOR0xFICAgICAgIForICAgICAgR2V0UXVlcnlpdkFOR0xFICBzZWUgNi4xLjkg
ICAgICAgICAgTnVtYmVyIG9mIGJpdHMgaW4gICAgIDYuMS45Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcXVlcnkgY291bnRlcgotCi1FeGFtcGxlcwotCi0gICAgKDEpIEhlcmUgaXMgc29tZSByb3Vn
aCBzYW1wbGUgY29kZSB0aGF0IGRlbW9uc3RyYXRlcyB0aGUgaW50ZW5kZWQgdXNhZ2UKLSAgICAg
ICAgb2YgdGhpcyBleHRlbnNpb24uCi0KLSAgICAgICAgR0xpbnQgcXVlcmllc1tOXTsKLSAgICAg
ICAgR0xpbnQgYXZhaWxhYmxlID0gMDsKLSAgICAgICAgLy8gdGltZXIgcXVlcmllcyBjYW4gY29u
dGFpbiBtb3JlIHRoYW4gMzIgYml0cyBvZiBkYXRhLCBzbyBhbHdheXMKLSAgICAgICAgLy8gcXVl
cnkgdGhlbSB1c2luZyB0aGUgNjQgYml0IHR5cGVzIHRvIGF2b2lkIG92ZXJmbG93Ci0gICAgICAg
IEdMdWludDY0QU5HTEUgdGltZUVsYXBzZWQgPSAwOwotCi0gICAgICAgIC8vIENyZWF0ZSBhIHF1
ZXJ5IG9iamVjdC4KLSAgICAgICAgZ2xHZW5RdWVyaWVzQU5HTEUoTiwgcXVlcmllcyk7Ci0KLSAg
ICAgICAgLy8gU3RhcnQgcXVlcnkgMQotICAgICAgICBnbEJlZ2luUXVlcnlBTkdMRShHTF9USU1F
X0VMQVBTRURfQU5HTEUsIHF1ZXJpZXNbMF0pOwotCi0gICAgICAgIC8vIERyYXcgb2JqZWN0IDEK
LSAgICAgICAgLi4uLgotCi0gICAgICAgIC8vIEVuZCBxdWVyeSAxCi0gICAgICAgIGdsRW5kUXVl
cnlBTkdMRShHTF9USU1FX0VMQVBTRURfQU5HTEUpOwotCi0gICAgICAgIC4uLgotCi0gICAgICAg
IC8vIFN0YXJ0IHF1ZXJ5IE4KLSAgICAgICAgZ2xCZWdpblF1ZXJ5QU5HTEUoR0xfVElNRV9FTEFQ
U0VEX0FOR0xFLCBxdWVyaWVzW04tMV0pOwotCi0gICAgICAgIC8vIERyYXcgb2JqZWN0IE4KLSAg
ICAgICAgLi4uLgotCi0gICAgICAgIC8vIEVuZCBxdWVyeSBOCi0gICAgICAgIGdsRW5kUXVlcnlB
TkdMRShHTF9USU1FX0VMQVBTRURfQU5HTEUpOwotCi0gICAgICAgIC8vIFdhaXQgZm9yIGFsbCBy
ZXN1bHRzIHRvIGJlY29tZSBhdmFpbGFibGUKLSAgICAgICAgd2hpbGUgKCFhdmFpbGFibGUpIHsK
LSAgICAgICAgICAgIGdsR2V0UXVlcnlPYmplY3RpdkFOR0xFKHF1ZXJpZXNbTi0xXSwgR0xfUVVF
UllfUkVTVUxUX0FWQUlMQUJMRV9BTkdMRSwgJmF2YWlsYWJsZSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBmb3IgKGkgPSAwOyBpIDwgTjsgaSsrKSB7Ci0gICAgICAgICAgICAvLyBTZWUgaG93IG11
Y2ggdGltZSB0aGUgcmVuZGVyaW5nIG9mIG9iamVjdCBpIHRvb2sgaW4gbmFub3NlY29uZHMuCi0g
ICAgICAgICAgICBnbEdldFF1ZXJ5T2JqZWN0dWk2NHZBTkdMRShxdWVyaWVzW2ldLCBHTF9RVUVS
WV9SRVNVTFRfQU5HTEUsICZ0aW1lRWxhcHNlZCk7Ci0KLSAgICAgICAgICAgIC8vIERvIHNvbWV0
aGluZyB1c2VmdWwgd2l0aCB0aGUgdGltZS4gIE5vdGUgdGhhdCBjYXJlIHNob3VsZCBiZQotICAg
ICAgICAgICAgLy8gdGFrZW4gdG8gdXNlIGFsbCBzaWduaWZpY2FudCBiaXRzIG9mIHRoZSByZXN1
bHQsIG5vdCBqdXN0IHRoZQotICAgICAgICAgICAgLy8gbGVhc3Qgc2lnbmlmaWNhbnQgMzIgYml0
cy4KLSAgICAgICAgICAgIEFkanVzdE9iamVjdExPREJhc2VkT25EcmF3VGltZShpLCB0aW1lRWxh
cHNlZCk7Ci0gICAgICAgIH0KLQotICAgICAgICBUaGlzIGV4YW1wbGUgaXMgc3ViLW9wdGltYWwg
aW4gdGhhdCBpdCBzdGFsbHMgYXQgdGhlIGVuZCBvZiBldmVyeQotICAgICAgICBmcmFtZSB0byB3
YWl0IGZvciBxdWVyeSByZXN1bHRzLiAgSWRlYWxseSwgdGhlIGNvbGxlY3Rpb24gb2YgcmVzdWx0
cwotICAgICAgICB3b3VsZCBiZSBkZWxheWVkIG9uZSBmcmFtZSB0byBtaW5pbWl6ZSB0aGUgYW1v
dW50IG9mIHRpbWUgc3BlbnQKLSAgICAgICAgd2FpdGluZyBmb3IgdGhlIEdQVSB0byBmaW5pc2gg
cmVuZGVyaW5nLgotICAgICAgICAKLSAgICAoMikgVGhpcyBleGFtcGxlIGlzIGJhc2ljYWxseSB0
aGUgc2FtZSBhcyB0aGUgZXhhbXBsZSBhYm92ZSBidXQgdXNlcwotICAgICAgICBRdWVyeUNvdW50
ZXIgaW5zdGVhZC4KLSAgICAKLSAgICAgICAgR0xpbnQgcXVlcmllc1tOKzFdOwotICAgICAgICBH
TGludCBhdmFpbGFibGUgPSAwOwotICAgICAgICAvLyB0aW1lciBxdWVyaWVzIGNhbiBjb250YWlu
IG1vcmUgdGhhbiAzMiBiaXRzIG9mIGRhdGEsIHNvIGFsd2F5cwotICAgICAgICAvLyBxdWVyeSB0
aGVtIHVzaW5nIHRoZSA2NCBiaXQgdHlwZXMgdG8gYXZvaWQgb3ZlcmZsb3cKLSAgICAgICAgR0x1
aW50NjRBTkdMRSB0aW1lU3RhcnQsIHRpbWVFbmQsIHRpbWVFbGFwc2VkID0gMDsKLQotICAgICAg
ICAvLyBDcmVhdGUgYSBxdWVyeSBvYmplY3QuCi0gICAgICAgIGdsR2VuUXVlcmllc0FOR0xFKE4r
MSwgcXVlcmllcyk7Ci0KLSAgICAgICAgLy8gUXVlcnkgY3VycmVudCB0aW1lc3RhbXAgMQotICAg
ICAgICBnbFF1ZXJ5Q291bnRlckFOR0xFKHF1ZXJpZXNbMF0sIEdMX1RJTUVTVEFNUF9BTkdMRSk7
Ci0KLSAgICAgICAgLy8gRHJhdyBvYmplY3QgMQotICAgICAgICAuLi4uCi0KLSAgICAgICAgLy8g
UXVlcnkgY3VycmVudCB0aW1lc3RhbXAgTgotICAgICAgICBnbFF1ZXJ5Q291bnRlckFOR0xFKHF1
ZXJpZXNbTi0xXSwgR0xfVElNRVNUQU1QX0FOR0xFKTsKLQotICAgICAgICAvLyBEcmF3IG9iamVj
dCBOCi0gICAgICAgIC4uLi4KLQotICAgICAgICAvLyBRdWVyeSBjdXJyZW50IHRpbWVzdGFtcCBO
KzEKLSAgICAgICAgZ2xRdWVyeUNvdW50ZXJBTkdMRShxdWVyaWVzW05dLCBHTF9USU1FU1RBTVBf
QU5HTEUpOwotCi0gICAgICAgIC8vIFdhaXQgZm9yIGFsbCByZXN1bHRzIHRvIGJlY29tZSBhdmFp
bGFibGUKLSAgICAgICAgd2hpbGUgKCFhdmFpbGFibGUpIHsKLSAgICAgICAgICAgIGdsR2V0UXVl
cnlPYmplY3RpdkFOR0xFKHF1ZXJpZXNbTl0sIEdMX1FVRVJZX1JFU1VMVF9BVkFJTEFCTEVfQU5H
TEUsICZhdmFpbGFibGUpOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IE47
IGkrKykgewotICAgICAgICAgICAgLy8gU2VlIGhvdyBtdWNoIHRpbWUgdGhlIHJlbmRlcmluZyBv
ZiBvYmplY3QgaSB0b29rIGluIG5hbm9zZWNvbmRzLgotICAgICAgICAgICAgZ2xHZXRRdWVyeU9i
amVjdHVpNjR2QU5HTEUocXVlcmllc1tpXSwgR0xfUVVFUllfUkVTVUxUX0FOR0xFLCAmdGltZVN0
YXJ0KTsKLSAgICAgICAgICAgIGdsR2V0UXVlcnlPYmplY3R1aTY0dkFOR0xFKHF1ZXJpZXNbaSsx
XSwgR0xfUVVFUllfUkVTVUxUX0FOR0xFLCAmdGltZUVuZCk7Ci0gICAgICAgICAgICB0aW1lRWxh
cHNlZCA9IHRpbWVFbmQgLSB0aW1lU3RhcnQ7Ci0KLSAgICAgICAgICAgIC8vIERvIHNvbWV0aGlu
ZyB1c2VmdWwgd2l0aCB0aGUgdGltZS4gIE5vdGUgdGhhdCBjYXJlIHNob3VsZCBiZQotICAgICAg
ICAgICAgLy8gdGFrZW4gdG8gdXNlIGFsbCBzaWduaWZpY2FudCBiaXRzIG9mIHRoZSByZXN1bHQs
IG5vdCBqdXN0IHRoZQotICAgICAgICAgICAgLy8gbGVhc3Qgc2lnbmlmaWNhbnQgMzIgYml0cy4K
LSAgICAgICAgICAgIEFkanVzdE9iamVjdExPREJhc2VkT25EcmF3VGltZShpLCB0aW1lRWxhcHNl
ZCk7Ci0gICAgICAgIH0KLQotSXNzdWVzIGZyb20gRVhUX3RpbWVyX3F1ZXJ5Ci0KLSAgICAoMSkg
V2hhdCB0aW1lIGludGVydmFsIGlzIGJlaW5nIG1lYXN1cmVkPwotCi0gICAgUkVTT0xWRUQ6ICBU
aGUgdGltZXIgc3RhcnRzIHdoZW4gYWxsIGNvbW1hbmRzIHByaW9yIHRvIEJlZ2luUXVlcnkoKSBo
YXZlCi0gICAgYmVlbiBmdWxseSBleGVjdXRlZC4gIEF0IHRoYXQgcG9pbnQsIGV2ZXJ5dGhpbmcg
dGhhdCBzaG91bGQgYmUgZHJhd24gYnkKLSAgICB0aG9zZSBjb21tYW5kcyBoYXMgYmVlbiB3cml0
dGVuIHRvIHRoZSBmcmFtZWJ1ZmZlci4gIFRoZSB0aW1lciBzdG9wcwotICAgIHdoZW4gYWxsIGNv
bW1hbmRzIHByaW9yIHRvIEVuZFF1ZXJ5KCkgaGF2ZSBiZWVuIGZ1bGx5IGV4ZWN1dGVkLgotCi0g
ICAgKDIpIFdoYXQgdW5pdCBvZiB0aW1lIHdpbGwgdGltZSBpbnRlcnZhbHMgYmUgcmV0dXJuZWQg
aW4/Ci0KLSAgICBSRVNPTFZFRDogIE5hbm9zZWNvbmRzICgxMF4tOSBzZWNvbmRzKS4gIFRoaXMg
dW5pdCBvZiBtZWFzdXJlbWVudCBhbGxvd3MKLSAgICBmb3IgcmVhc29uYWJseSBhY2N1cmF0ZSB0
aW1pbmcgb2YgZXZlbiBzbWFsbCBibG9ja3Mgb2YgcmVuZGVyaW5nCi0gICAgY29tbWFuZHMuICBU
aGUgZ3JhbnVsYXJpdHkgb2YgdGhlIHRpbWVyIGlzIGltcGxlbWVudGF0aW9uLWRlcGVuZGVudC4g
IEEKLSAgICAzMi1iaXQgcXVlcnkgY291bnRlciBjYW4gZXhwcmVzcyBpbnRlcnZhbHMgb2YgdXAg
dG8gYXBwcm94aW1hdGVseSA0Ci0gICAgc2Vjb25kcy4KLQotICAgICgzKSBXaGF0IHNob3VsZCBi
ZSB0aGUgbWluaW11bSBudW1iZXIgb2YgY291bnRlciBiaXRzIGZvciB0aW1lciBxdWVyaWVzPwot
Ci0gICAgUkVTT0xWRUQ6ICAzMCBiaXRzLCB3aGljaCB3aWxsIGFsbG93IHRpbWluZyBzZWN0aW9u
cyB0aGF0IHRha2UgdXAgdG8gMQotICAgIHNlY29uZCB0byByZW5kZXIuCi0KLSAgICAoNCkgSG93
IGFyZSBjb3VudGVyIHJlc3VsdHMgb2YgbW9yZSB0aGFuIDMyIGJpdHMgcmV0dXJuZWQ/Ci0KLSAg
ICBSRVNPTFZFRDogIFZpYSB0d28gbmV3IGRhdGF0eXBlcywgaW50NjRBTkdMRSBhbmQgdWludDY0
QU5HTEUsIGFuZCB0aGVpcgotICAgIGNvcnJlc3BvbmRpbmcgR2V0UXVlcnlPYmplY3QgZW50cnkg
cG9pbnRzLiAgVGhlc2UgdHlwZXMgaG9sZCBpbnRlZ2VyCi0gICAgdmFsdWVzIGFuZCBoYXZlIGEg
bWluaW11bSBiaXQgd2lkdGggb2YgNjQuCi0KLSAgICAoNSkgU2hvdWxkIHRoZSBleHRlbnNpb24g
bWVhc3VyZSB0b3RhbCB0aW1lIGVsYXBzZWQgYmV0d2VlbiB0aGUgZnVsbAotICAgICAgICBjb21w
bGV0aW9uIG9mIHRoZSBCZWdpblF1ZXJ5IGFuZCBFbmRRdWVyeSBjb21tYW5kcywgb3IganVzdCB0
aW1lCi0gICAgICAgIHNwZW50IGluIHRoZSBncmFwaGljcyBsaWJyYXJ5PwotCi0gICAgUkVTT0xW
RUQ6ICBUaGlzIGV4dGVuc2lvbiB3aWxsIG1lYXN1cmUgdGhlIHRvdGFsIHRpbWUgZWxhcHNlZCBi
ZXR3ZWVuCi0gICAgdGhlIGZ1bGwgY29tcGxldGlvbiBvZiB0aGVzZSBjb21tYW5kcy4gIEZ1dHVy
ZSBleHRlbnNpb25zIG1heSBpbXBsZW1lbnQKLSAgICBhIHF1ZXJ5IHRvIGRldGVybWluZSB0aW1l
IGVsYXBzZWQgYXQgZGlmZmVyZW50IHN0YWdlcyBvZiB0aGUgZ3JhcGhpY3MKLSAgICBwaXBlbGlu
ZS4KLQotICAgICg2KSBJZiBtdWx0aXBsZSBxdWVyeSB0eXBlcyBhcmUgc3VwcG9ydGVkLCBjYW4g
bXVsdGlwbGUgcXVlcnkgdHlwZXMgYmUKLSAgICAgICAgYWN0aXZlIHNpbXVsdGFuZW91c2x5Pwot
Ci0gICAgUkVTT0xWRUQ6ICBZZXM7IGFuIGFwcGxpY2F0aW9uIG1heSBwZXJmb3JtIGEgdGltZXIg
cXVlcnkgYW5kIGFub3RoZXIKLSAgICB0eXBlIG9mIHF1ZXJ5IHNpbXVsdGFuZW91c2x5LiAgQW4g
YXBwbGljYXRpb24gY2FuIG5vdCBwZXJmb3JtIG11bHRpcGxlCi0gICAgdGltZXIgcXVlcmllcyBv
ciBtdWx0aXBsZSBxdWVyaWVzIG9mIG90aGVyIHR5cGVzIHNpbXVsdGFuZW91c2x5LiAgQW4KLSAg
ICBhcHBsaWNhdGlvbiBhbHNvIGNhbiBub3QgdXNlIHRoZSBzYW1lIHF1ZXJ5IG9iamVjdCBmb3Ig
YW5vdGhlciBxdWVyeQotICAgIGFuZCBhIHRpbWVyIHF1ZXJ5IHNpbXVsdGFuZW91c2x5LgotCi0g
ICAgKDcpIERvIHF1ZXJ5IG9iamVjdHMgaGF2ZSBhIHF1ZXJ5IHR5cGUgcGVybWFuZW50bHkgYXNz
b2NpYXRlZCB3aXRoIHRoZW0/Ci0KLSAgICBSRVNPTFZFRDogIE5vLiAgQSBzaW5nbGUgcXVlcnkg
b2JqZWN0IGNhbiBiZSB1c2VkIHRvIHBlcmZvcm0gZGlmZmVyZW50Ci0gICAgdHlwZXMgb2YgcXVl
cmllcywgYnV0IG5vdCBhdCB0aGUgc2FtZSB0aW1lLgotCi0gICAgSGF2aW5nIGEgZml4ZWQgdHlw
ZSBmb3IgZWFjaCBxdWVyeSBvYmplY3Qgc2ltcGxpZmllcyBzb21lIGFzcGVjdHMgb2YgdGhlCi0g
ICAgaW1wbGVtZW50YXRpb24gLS0gbm90IGhhdmluZyB0byBkZWFsIHdpdGggcXVlcmllcyB3aXRo
IGRpZmZlcmVudCByZXN1bHQKLSAgICBzaXplcywgZm9yIGV4YW1wbGUuICBJdCB3b3VsZCBhbHNv
IG1lYW4gdGhhdCBCZWdpblF1ZXJ5KCkgd2l0aCBhIHF1ZXJ5Ci0gICAgb2JqZWN0IG9mIHRoZSAi
d3JvbmciIHR5cGUgd291bGQgcmVzdWx0IGluIGFuIElOVkFMSURfT1BFUkFUSU9OIGVycm9yLgot
Ci0gICAgVVBEQVRFOiBUaGlzIHJlc29sdXRpb24gd2FzIHJlbGV2YW50IGZvciBFWFRfdGltZXJf
cXVlcnkgYW5kIE9wZW5HTCAyLjAuCi0gICAgU2luY2UgRVhUX3RyYW5zZm9ybV9mZWVkYmFjayBo
YXMgc2luY2UgYmVlbiBpbmNvcnBvcmF0ZWQgaW50byB0aGUgY29yZSwKLSAgICB0aGUgcmVzb2x1
dGlvbiBpcyB0aGF0IEJlZ2luUXVlcnkgd2lsbCBnZW5lcmF0ZSBlcnJvciBJTlZBTElEX09QRVJB
VElPTgotICAgIGlmIDxpZD4gcmVwcmVzZW50cyBhIHF1ZXJ5IG9iamVjdCBvZiBhIGRpZmZlcmVu
dCB0eXBlLgotCi0gICAgKDgpIEhvdyBwcmVkaWN0YWJsZS9yZXBlYXRhYmxlIGFyZSB0aGUgcmVz
dWx0cyByZXR1cm5lZCBieSB0aGUgdGltZXIKLSAgICAgICAgcXVlcnk/Ci0KLSAgICBSRVNPTFZF
RDogIEluIGdlbmVyYWwsIHRoZSBhbW91bnQgb2YgdGltZSBuZWVkZWQgdG8gcmVuZGVyIHRoZSBz
YW1lCi0gICAgcHJpbWl0aXZlcyBzaG91bGQgYmUgZmFpcmx5IGNvbnN0YW50LiAgQnV0IHRoZXJl
IG1heSBiZSBtYW55IG90aGVyCi0gICAgc3lzdGVtIGlzc3VlcyAoZS5nLiwgY29udGV4dCBzd2l0
Y2hpbmcgb24gdGhlIENQVSBhbmQgR1BVLCB2aXJ0dWFsCi0gICAgbWVtb3J5IHBhZ2UgZmF1bHRz
LCBtZW1vcnkgY2FjaGUgYmVoYXZpb3Igb24gdGhlIENQVSBhbmQgR1BVKSB0aGF0IGNhbgotICAg
IGNhdXNlIHRpbWVzIHRvIHZhcnkgd2lsZGx5LgotCi0gICAgTm90ZSB0aGF0IG1vZGVybiBHUFVz
IGFyZSBnZW5lcmFsbHkgaGlnaGx5IHBpcGVsaW5lZCwgYW5kIG1heSBiZQotICAgIHByb2Nlc3Np
bmcgZGlmZmVyZW50IHByaW1pdGl2ZXMgaW4gZGlmZmVyZW50IHBpcGVsaW5lIHN0YWdlcwotICAg
IHNpbXVsdGFuZW91c2x5LiAgSW4gdGhpcyBleHRlbnNpb24sIHRoZSB0aW1lcnMgc3RhcnQgYW5k
IHN0b3Agd2hlbiB0aGUKLSAgICBCZWdpblF1ZXJ5L0VuZFF1ZXJ5IGNvbW1hbmRzIHJlYWNoIHRo
ZSBib3R0b20gb2YgdGhlIHJlbmRlcmluZyBwaXBlbGluZS4KLSAgICBXaGF0IHRoYXQgbWVhbnMg
aXMgdGhhdCBieSB0aGUgdGltZSB0aGUgdGltZXIgc3RhcnRzLCB0aGUgR0wgZHJpdmVyIG9uCi0g
ICAgdGhlIENQVSBtYXkgaGF2ZSBzdGFydGVkIHdvcmsgb24gR0wgY29tbWFuZHMgaXNzdWVkIGFm
dGVyIEJlZ2luUXVlcnksCi0gICAgYW5kIHRoZSBoaWdoZXIgcGlwZWxpbmUgc3RhZ2VzIChlLmcu
LCB2ZXJ0ZXggdHJhbnNmb3JtYXRpb24pIG1heSBoYXZlCi0gICAgc3RhcnRlZCBhcyB3ZWxsLgot
Ci0gICAoOSkgV2hhdCBzaG91bGQgdGhlIG5ldyA2NCBiaXQgaW50ZWdlciB0eXBlIGJlIGNhbGxl
ZD8KLQotICAgIFJFU09MVkVEOiBUaGUgbmV3IHR5cGVzIHdpbGwgYmUgY2FsbGVkIEdMaW50NjRB
TkdMRS9HTHVpbnQ2NEFOR0xFLiAgVGhlIG5ldwotICAgIGNvbW1hbmQgc3VmZml4ZXMgd2lsbCBi
ZSBpNjQgYW5kIHVpNjQuICBUaGVzZSBuYW1lcyBjbGVhcmx5IGNvbnZleSB0aGUKLSAgICBtaW5p
bXVtIHNpemUgb2YgdGhlIHR5cGVzLiAgVGhlc2UgdHlwZXMgYXJlIHNpbWlsYXIgdG8gdGhlIEM5
OSBzdGFuZGFyZAotICAgIHR5cGUgaW50X2xlYXN0NjRfdCwgYnV0IHdlIHVzZSBuYW1lcyBzaW1p
bGFyIHRvIHRoZSBDOTkgb3B0aW9uYWwgdHlwZQotICAgIGludDY0X3QgZm9yIHNpbXBsaWNpdHku
Ci0KLUlzc3VlcyBmcm9tIEFSQl90aW1lcl9xdWVyeQotCi0gICAoMTApIFdoYXQgYWJvdXQgdGls
ZS1iYXNlZCBpbXBsZW1lbnRhdGlvbnM/IFRoZSBlZmZlY3RzIG9mIGEgY29tbWFuZCBhcmUKLSAg
ICAgICAgbm90IGNvbXBsZXRlIHVudGlsIHRoZSBmcmFtZSBpcyBjb21wbGV0ZWx5IHJlbmRlcmVk
LiBUaW1pbmcgcmVjb3JkZWQKLSAgICAgICAgYmVmb3JlIHRoZSBmcmFtZSBpcyBjb21wbGV0ZSBt
YXkgbm90IGJlIHdoYXQgZGV2ZWxvcGVycyBleHBlY3QuIEFsc28KLSAgICAgICAgdGhlIGFtb3Vu
dCBvZiB0aW1lIG5lZWRlZCB0byByZW5kZXIgdGhlIHNhbWUgcHJpbWl0aXZlcyBpcyBub3QKLSAg
ICAgICAgY29uc2lzdGVudCwgd2hpY2ggY29uZmxpY3RzIHdpdGggaXNzdWUgKDgpIGFib3ZlLiBU
aGUgdGltZSBkZXBlbmRzIG9uCi0gICAgICAgIGhvdyBlYXJseSBvciBsYXRlIGluIHRoZSBzY2Vu
ZSBpdCBpcyBwbGFjZWQuCi0KLSAgICBSRVNPTFZFRDogVGhlIGN1cnJlbnQgbGFuZ3VhZ2Ugc3Vw
cG9ydHMgdGlsZS1iYXNlZCByZW5kZXJpbmcgb2theSBhcyBpdAotICAgIGlzIHdyaXR0ZW4uIERl
dmVsb3BlcnMgYXJlIHdhcm5lZCB0aGF0IHVzaW5nIHRpbWVycyBvbiB0aWxlLWJhc2VkCi0gICAg
aW1wbGVtZW50YXRpb24gbWF5IG5vdCBwcm9kdWNlIHJlc3VsdHMgdGhleSBleHBlY3Qgc2luY2Ug
cmVuZGVyaW5nIGlzIG5vdAotICAgIGRvbmUgaW4gYSBsaW5lYXIgb3JkZXIuIFRpbWluZyByZXN1
bHRzIGFyZSBjYWxjdWxhdGVkIHdoZW4gdGhlIGZyYW1lIGlzCi0gICAgY29tcGxldGVkIGFuZCBt
YXkgZGVwZW5kIG9uIGhvdyBlYXJseSBvciBsYXRlIGluIHRoZSBzY2VuZSBpdCBpcyBwbGFjZWQu
Ci0gICAgCi0gICAoMTEpIENhbiB0aGUgR0wgaW1wbGVtZW50YXRpb24gdXNlIGRpZmZlcmVudCBj
bG9ja3MgdG8gaW1wbGVtZW50IHRoZQotICAgICAgICBUSU1FX0VMQVBTRUQgYW5kIFRJTUVTVEFN
UCBxdWVyaWVzPwotCi0gICBSRVNPTFZFRDogWWVzLCB0aGUgaW1wbGVtZW5hdGlvbiBjYW4gdXNl
IGRpZmZlcmVudCBpbnRlcm5hbCBjbG9ja3MgdG8KLSAgIGltcGxlbWVudCBUSU1FX0VMQVBTRUQg
YW5kIFRJTUVTVEFNUC4gSWYgZGlmZmVyZW50IGNsb2NrcyBhcmUKLSAgIHVzZWQgaXQgaXMgcG9z
c2libGUgdGhlcmUgaXMgYSBzbGlnaHQgZGlzY3JlcGFuY3kgd2hlbiBjb21wYXJpbmcgcXVlcmll
cwotICAgbWFkZSBmcm9tIFRJTUVfRUxBUFNFRCBhbmQgVElNRVNUQU1QOyB0aGV5IG1heSBoYXZl
IHNsaWdodAotICAgZGlmZmVyZW5jZXMgd2hlbiBib3RoIGFyZSB1c2VkIHRvIG1lYXN1cmUgdGhl
IHNhbWUgc2VxdWVuY2UuIEhvd2V2ZXIsIHRoaXMKLSAgIGlzIHVubGlrZWx5IHRvIGFmZmVjdCBy
ZWFsIGFwcGxpY2F0aW9ucyBzaW5jZSBjb21wYXJpbmcgdGhlIHR3byBxdWVyaWVzIGlzCi0gICBu
b3QgZXhwZWN0ZWQgdG8gYmUgdXNlZnVsLgotCi1Jc3N1ZXMKLQotICAgICgxMikgV2hhdCBzaG91
bGQgd2UgY2FsbCB0aGlzIGV4dGVuc2lvbj8KLQotICAgIFJFU09MVkVEOiBBTkdMRV90aW1lcl9x
dWVyeQotCi0gICAgKDEzKSBXaHkgaXMgdGhpcyBkb25lIGFzIGEgc2VwYXJhdGUgZXh0ZW5zaW9u
IGluc3RlYWQgb2YganVzdCBzdXBwb3J0aW5nCi0gICAgICAgICBBUkJfdGltZXJfcXVlcnk/Ci0K
LSAgICBBUkJfdGltZXJfcXVlcnkgaXMgd3JpdHRlbiBhZ2FpbnN0IE9wZW5HTCAzLjIsIHdoaWNo
IGluY2x1ZGVzIGEgbG90IG9mCi0gICAgdGhlIHJlcXVpcmVkIHN1cHBvcnQgZm9yIGRlYWxpbmcg
d2l0aCBxdWVyeSBvYmplY3RzLiBOb25lIG9mIHRoZXNlCi0gICAgZnVuY3Rpb25zIG9yIHRva2Vu
cyBleGlzdCBpbiBPcGVuR0wgRVMsIGFuZCBhcyBzdWNoIGhhdmUgdG8gYmUgYWRkZWQgaW4KLSAg
ICB0aGlzIHNwZWNpZmljYXRpb24uCi0KLSAgICAoMTQpIEhvdyBkb2VzIHRoaXMgZXh0ZW5zaW9u
IGRpZmZlciBmcm9tIEFSQl90aW1lcl9xdWVyeT8KLQotICAgIFRoaXMgZXh0ZW5zaW9uIGNvbnRh
aW5zIG1vc3QgQVJCX3RpbWVyX3F1ZXJ5IGJlaGF2aW9yIHVuY2hhbmdlZCBhcyB3ZWxsCi0gICAg
YXMgYSBzdWJzZXQgb2YgdGhlIHF1ZXJ5IHN1cHBvcnQgcmVxdWlyZWQgdG8gdXNlIGl0IGZyb20g
dGhlIGNvcmUKLSAgICBPcGVuR0wgMy4yIHNwZWMuIEl0IG9taXRzIHRoZSBnbEdldEludGVnZXIo
VElNRVNUQU1QKSBmdW5jdGlvbmFsaXR5IHVzZWQgdG8KLSAgICBxdWVyeSB0aGUgY3VycmVudCB0
aW1lIG9uIHRoZSBHUFUsIGJ1dCB0aGUgYmVoYXZpb3IgZm9yIGFsbCByZW1haW5pbmcKLSAgICBm
dW5jdGlvbmFsaXR5IHRha2VuIGZyb20gQVJCX3RpbWVyX3F1ZXJ5IGlzIHRoZSBzYW1lLgotICAg
IAotICAgICgxNSkgQXJlIHF1ZXJ5IG9iamVjdHMgc2hhcmVhYmxlIGJldHdlZW4gbXVsdGlwbGUg
Y29udGV4dHM/Ci0KLSAgICBSRVNPTFZFRDogTm8uICBRdWVyeSBvYmplY3RzIGFyZSBsaWdodHdl
aWdodCBhbmQgd2Ugbm9ybWFsbHkgc2hhcmUgCi0gICAgbGFyZ2UgZGF0YSBhY3Jvc3MgY29udGV4
dHMuICBBbHNvLCBiZWluZyBhYmxlIHRvIHNoYXJlIHF1ZXJ5IG9iamVjdHMKLSAgICBhY3Jvc3Mg
Y29udGV4dHMgaXMgbm90IHBhcnRpY3VsYXJseSB1c2VmdWwuICBJbiBvcmRlciB0byBkbyB0aGUg
YXN5bmMgCi0gICAgcXVlcnkgYWNyb3NzIGNvbnRleHRzLCBhIHF1ZXJ5IG9uIG9uZSBjb250ZXh0
IHdvdWxkIGhhdmUgdG8gYmUgZmluaXNoZWQgCi0gICAgYmVmb3JlIHRoZSBvdGhlciBjb250ZXh0
IGNvdWxkIHF1ZXJ5IGl0LiAKLQotUmV2aXNpb24gSGlzdG9yeQotCi0gICAgUmV2aXNpb24gMSwg
MjAxMS8wNC8yOAotICAgICAgLSBjb3BpZWQgZnJvbSByZXZpc2lvbiA5IG9mIEFSQl90aW1lcl9x
dWVyeSBhbmQgcmV2aXNpb24gNyBvZgotICAgICAgICBBUkJfb2NjbHVzaW9uX3F1ZXJ5Ci0gICAg
ICAtIHJlbW92ZWQgbGFuZ3VhZ2UgdGhhdCB3YXMgY2xlYXJseSBub3QgcmVsZXZhbnQgdG8gRVMy
Ci0gICAgICAtIHJlYmFzZWQgY2hhbmdlcyBhZ2FpbnN0IHRoZSBPcGVuR0wgRVMgMi4wIHNwZWNp
ZmljYXRpb24KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvQU5HTEVf
dHJhbnNsYXRlZF9zaGFkZXJfc291cmNlLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9leHRlbnNpb25zL0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZS50eHQJ
KHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMv
QU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDEx
OCArMCwwIEBACi1OYW1lCi0KLSAgICBBTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UKLQot
TmFtZSBTdHJpbmdzCi0KLSAgICBHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UKLQot
Q29udHJpYnV0b3JzCi0KLSAgICBEYW5pZWwgS29jaCwgVHJhbnNHYW1pbmcgSW5jLgotICAgIEdy
ZWdnIFRhdmFyZXMsIEdvb2dsZSBJbmMuCi0gICAgS2VubmV0aCBSdXNzZWxsLCBHb29nbGUgSW5j
LgotICAgIFpoZW55YW8gTW8sIEdvb2dsZSBJbmMuCi0KLUNvbnRhY3QKLQotICAgIFpoZW55YW8g
TW8sIEdvb2dsZSBJbmMuICh6bW8gJ2F0JyBnb29nbGUgJ2RvdCcgY29tKQotCi1TdGF0dXMKLQot
ICAgIEltcGxlbWVudGVkIGluIEFOR0xFIEVTMgotCi1WZXJzaW9uCi0KLSAgICBMYXN0IE1vZGlm
aWVkIERhdGU6IE9jdG9iZXIgNSwgMjAxMQotICAgIEF1dGhvciBSZXZpc2lvbjogMgotCi1OdW1i
ZXIKLQotICAgIE9wZW5HTCBFUyBFeHRlbnNpb24gIzExMwotCi1EZXBlbmRlbmNpZXMKLQotICAg
IE9wZW5HTCBFUyAyLjAgaXMgcmVxdWlyZWQuCi0KLSAgICBUaGUgZXh0ZW5zaW9uIGlzIHdyaXR0
ZW4gYWdhaW5zdCB0aGUgT3BlbkdMIEVTIDIuMCBzcGVjaWZpY2F0aW9uLgotCi1PdmVydmlldwot
Ci0gICAgV2ViR0wgdXNlcyB0aGUgR0xTTCBFUyAyLjAgc3BlYyBvbiBhbGwgcGxhdGZvcm1zLCBh
bmQgdHJhbnNsYXRlcyB0aGVzZQotICAgIHNoYWRlcnMgdG8gdGhlIGhvc3QgcGxhdGZvcm0ncyBu
YXRpdmUgbGFuZ3VhZ2UgKEhMU0wsIEdMU0wsIGFuZCBldmVuIEdMU0wKLSAgICBFUykuIEZvciBk
ZWJ1Z2dpbmcgcHVycG9zZXMsIGl0IGlzIHVzZWZ1bCB0byBiZSBhYmxlIHRvIGV4YW1pbmUgdGhl
IHNoYWRlcgotICAgIGFmdGVyIHRyYW5zbGF0aW9uLgotCi0gICAgVGhpcyBleHRlbnNpb24gYWRk
ZXMgYSBuZXcgZnVuY3Rpb24gdG8gcXVlcnkgdGhlIHRyYW5zbGF0ZWQgc2hhZGVyIHNvdXJjZSwK
LSAgICBhbmQgYWRkcyBhIG5ldyBlbnVtIGZvciBHZXRTaGFkZXJpdidzIDxwbmFtZT4gcGFyYW1l
dGVyIHRvIHF1ZXJ5IHRoZQotICAgIHRyYW5zbGF0ZWQgc2hhZGVyIHNvdXJjZSBsZW5ndGguIAot
Ci1JUCBTdGF0dXMKLQotICAgIE5vIGtub3duIElQIGNsYWltcy4KLQotTmV3IFR5cGVzCi0KLSAg
ICBOb25lCi0KLU5ldyBQcm9jZWR1cmVzIGFuZCBGdW5jdGlvbnMKLQotICAgIHZvaWQgR2V0VHJh
bnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHVpbnQgc2hhZGVyLCBzaXplaSBidWZzaXplLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVpKiBsZW5ndGgsIGNoYXIq
IHNvdXJjZSk7Ci0KLU5ldyBUb2tlbnMKLQotICAgIEFjY2VwdGVkIGJ5IHRoZSA8cG5hbWU+IHBh
cmFtZXRlciBvZiBHZXRTaGFkZXJpdjoKLQotICAgIFRSQU5TTEFURURfU0hBREVSX1NPVVJDRV9M
RU5HVEhfQU5HTEUgICAgICAgICAgICAgIDB4OTNBMAotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciA2
IG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmljYXRpb24gKFN0YXRlIGFuZCBTdGF0ZQotUmVx
dWVzdHMpCi0KLSAgICBBcHBlbmQgaW4gdGhlIGVuZCBvZiB0aGUgZm91cnRoIHBhcmFncmFwaCBv
ZiBzZWN0aW9uIDYuMS44IChTaGFkZXIgYW5kCi0gICAgUHJvZ3JhbSBRdWVyaWVzKToKLQotICAg
ICIgSWYgPHBuYW1lPiBpcyBUUkFOU0xBVEVEX1NIQURFUl9MRU5HVEhfQU5HTEUsIHRoZSBsZW5n
dGggb2YgdGhlIHRyYW5zbGF0ZWQKLSAgICBzb3VyY2Ugc3RyaW5nLCBpbmNsdWRpbmcgYSBudWxs
IHRlcm1pbmF0b3IsIGlzIHJldHVybmVkLiBJZiBubyBzb3VyY2UgaGFzCi0gICAgYmVlbiBkZWZp
bmVkLCBDb21waWxlU2hhZGVyIGhhcyBub3QgYmVlbiBjYWxsZWQsIG9yIHRoZSB0cmFuc2xhdGlv
biBoYXMKLSAgICBmYWlsZWQgZm9yIDxzaGFkZXI+LCB6ZXJvIGlzIHJldHVybmVkLiIKLQotICAg
IEFwcGVuZCBhZnRlciB0aGUgbGFzdCBwYXJhZ3JhcGggb2Ygc2VjdGlvbiA2LjEuOCAoU2hhZGVy
IGFuZCBQcm9ncmFtCi0gICAgUXVlcmllcyk6Ci0KLSAgICAiVGhlIGNvbW1hbmQKLQotICAgICAg
dm9pZCBHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoIHVpbnQgc2hhZGVyLCBzaXplaSBi
dWZTaXplLAotICAgICAgICAgc2l6ZWkgKmxlbmd0aCwgY2hhciAqc291cmNlICk7Ci0KLSAgICBy
ZXR1cm5zIGluIDxzb3VyY2U+IHRoZSBzdHJpbmcgbWFraW5nIHVwIHRoZSB0cmFuc2xhdGVkIHNv
dXJjZSBjb2RlIGZvcgotICAgIHRoZSBzaGFkZXIgb2JqZWN0IDxzaGFkZXI+LiBUaGUgc3RyaW5n
IDxzb3VyY2U+IHdpbGwgYmUgbnVsbCB0ZXJtaW5hdGVkLgotICAgIFRoZSBhY3R1YWwgbnVtYmVy
IG9mIGNoYXJhY3RlcnMgd3JpdHRlbiBpbnRvIDxzb3VyY2U+LCBleGNsdWRpbmcgdGhlIG51bGwK
LSAgICB0ZXJtaW5hdG9yLCBpcyByZXR1cm5lZCBpbiA8bGVuZ3RoPi4gSWYgPGxlbmd0aD4gaXMg
TlVMTCwgbm8gbGVuZ3RoIGlzCi0gICAgcmV0dXJuZWQuIFRoZSBtYXhpbXVtIG51bWJlciBvZiBj
aGFyYWN0ZXJzIHRoYXQgbWF5IGJlIHdyaXR0ZW4gaW50byAKLSAgICA8c291cmNlPiwgaW5jbHVk
aW5nIHRoZSBudWxsIHRlcm1pbmF0b3IsIGlzIHNwZWNp76yBZWQgYnkgPGJ1ZlNpemU+LiBUaGUK
LSAgICBzdHJpbmcgPHNvdXJjZT4gaXMgdGhlIHRyYW5zbGF0ZWQgc3RyaW5nIG9mIGEgY29uY2F0
ZW5hdGlvbiBvZiB0aGUgc3RyaW5ncwotICAgIHBhc3NlZCB0byB0aGUgR0wgdXNpbmcgU2hhZGVy
U291cmNlLiBUaGUgbGVuZ3RoIG9mIHRoaXMgdHJhbnNsYXRlZCBzdHJpbmcKLSAgICBpcyBnaXZl
biBieSBUUkFOU0xBVEVEX1NIQURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFLCB3aGljaCBjYW4gYmUg
cXVlcmllZAotICAgIHdpdGggR2V0U2hhZGVyaXYuCi0KLSAgICBJZiBubyBzb3VyY2UgaGFzIGJl
ZW4gZGVmaW5lZCwgQ29tcGlsZVNoYWRlciBoYXMgbm90IGJlZW4gY2FsbGVkLCBvciB0aGUKLSAg
ICB0cmFuc2xhdGlvbiBoYXMgZmFpbGVkIGZvciA8c2hhZGVyPiwgemVybyBpcyByZXR1cm5lZCBm
b3IgPGxlbmd0aD4sIGFuZAotICAgIGFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBmb3IgPHNv
dXJjZT4uCi0KLSAgICBJZiB0aGUgdmFsdWUgb2YgU0hBREVSX0NPTVBJTEVSIGlzIG5vdCBUUlVF
LCB0aGVuIHRoZSBlcnJvciBJTlZBTElEXy0KLSAgICBPUEVSQVRJT04gaXMgZ2VuZXJhdGVkLiIK
LQotSXNzdWVzCi0KLSAgICAxKSBXaGF0IGVudW0gdmFsdWUgc2hvdWxkIGJlIHVzZWQgZm9yIFRS
QU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEU/Ci0KLSAgICAgIFJFU09MVkVEOiBU
aGUgZmlyc3QgZHJhZnQgdXNlZCBhIHRlbXBvcmFyeSBlbnVtIHZhbHVlLiBUaGlzIGJlZW4gcmVw
bGFjZWQKLSAgICAgIHdpdGggYSBlbnVtIGFsbG9jYXRlZCBmcm9tIHRoZSBBTkdMRSByYW5nZSBv
ZiBHTCBlbnVtcy4gCi0KLVJldmlzaW9uIEhpc3RvcnkKLQotICAgIFJldmlzaW9uIDEsIDIwMTEv
MDkvMjksIHptbwotICAgICAgLSBmaXJzdCBkcmFmdAotICAgIFJldmlzaW9uIDIsIDIwMTEvMTAv
MDUsIGRna29jaAotICAgICAgLSBhc3NpZ25lZCBlbnVtCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9leHRlbnNpb25zL0VHTF9BTkdMRV9kM2Rfc2hhcmVfaGFuZGxlX2NsaWVudF9idWZm
ZXIudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMv
RUdMX0FOR0xFX2QzZF9zaGFyZV9oYW5kbGVfY2xpZW50X2J1ZmZlci50eHQJKHJldmlzaW9uIDIw
NzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRUdMX0FOR0xFX2Qz
ZF9zaGFyZV9oYW5kbGVfY2xpZW50X2J1ZmZlci50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSw5OCAr
MCwwIEBACi1OYW1lCi0KLSAgICBBTkdMRV9kM2Rfc2hhcmVfaGFuZGxlX2NsaWVudF9idWZmZXIK
LQotTmFtZSBTdHJpbmdzCi0KLSAgICBFR0xfQU5HTEVfZDNkX3NoYXJlX2hhbmRsZV9jbGllbnRf
YnVmZmVyCi0KLUNvbnRyaWJ1dG9ycwotCi0gICAgSm9obiBCYXVtYW4KLSAgICBBbGFzdGFpciBQ
YXRyaWNrCi0gICAgRGFuaWVsIEtvY2gKLQotQ29udGFjdHMKLQotICAgIEpvaG4gQmF1bWFuLCBH
b29nbGUgSW5jLiAoamJhdW1hbiAnYXQnIGNocm9taXVtLm9yZykKLQotU3RhdHVzCi0KLSAgICBD
b21wbGV0ZQotICAgIEltcGxlbWVudGVkIChBTkdMRSByNjUwKQotCi1WZXJzaW9uCi0KLSAgICBW
ZXJzaW9uIDMsIE1heSAxMiwgMjAxMQotCi1OdW1iZXIKLQotICAgIEVHTCBFeHRlbnNpb24gIz8/
Ci0KLURlcGVuZGVuY2llcwotCi0gICAgUmVxdWlyZXMgdGhlIEVHTF9BTkdMRV9zdXJmYWNlX2Qz
ZF90ZXh0dXJlXzJkX3NoYXJlX2hhbmRsZSBleHRlbnNpb24uCi0KLSAgICBUaGlzIGV4dGVuc2lv
biBpcyB3cml0dGVuIGFnYWluc3QgdGhlIHdvcmRpbmcgb2YgdGhlIEVHTCAxLjQKLSAgICBTcGVj
aWZpY2F0aW9uLgotCi1PdmVydmlldwotCi0gICAgVGhpcyBleHRlbnNpb24gYWxsb3dzIGNyZWF0
aW5nIEVHTCBzdXJmYWNlcyBmcm9tIGhhbmRsZXMgdG8gdGV4dHVyZXMKLSAgICBzaGFyZWQgZnJv
bSB0aGUgRGlyZWN0M0QgQVBJIG9yIGZyb20KLSAgICBFR0xfQU5HTEVfc3VyZmFjZV90ZXh0dXJl
XzJkX3NoYXJlX2hhbmRsZS4KLQotTmV3IFR5cGVzCi0KLSAgICBOb25lCi0KLU5ldyBQcm9jZWR1
cmVzIGFuZCBGdW5jdGlvbnMKLQotICAgIE5vbmUKLQotTmV3IFRva2VucwotCi0gICAgQWNjZXB0
ZWQgaW4gdGhlIDxidWZ0eXBlPiBwYXJhbWV0ZXIgb2YgZWdsQ3JlYXRlUGJ1ZmZlckZyb21DbGll
bnRCdWZmZXI6Ci0KLSAgICAgICAgRUdMX0QzRF9URVhUVVJFXzJEX1NIQVJFX0hBTkRMRV9BTkdM
RSAgICAgICAgICAgIDB4MzIwMAotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciAzIG9mIHRoZSBFR0wg
MS40IFNwZWNpZmljYXRpb24gKEVHTCBGdW5jdGlvbnMgYW5kIEVycm9ycykKLQotICAgIFJlcGxh
Y2UgdGhlIGxhc3Qgc2VudGVuY2Ugb2YgcGFyYWdyYXBoIDEgb2YgU2VjdGlvbiAzLjUuMyB3aXRo
IHRoZQotICAgIGZvbGxvd2luZyB0ZXh0LgotICAgICJDdXJyZW50bHksIHRoZSBvbmx5IGNsaWVu
dCBBUEkgcmVzb3VyY2VzIHdoaWNoIG1heSBiZSBib3VuZCBpbiB0aGlzCi0gICAgZmFzaGlvbiBh
cmUgT3BlblZHIFZHSW1hZ2Ugb2JqZWN0cyBhbmQgRGlyZWN0M0Qgc2hhcmUgaGFuZGxlcy4iCi0K
LSAgICBSZXBsYWNlIHRoZSBsYXN0IHNlbnRlbmNlIG9mIHBhcmFncmFwaCAyICgiVG8gYmluZCBh
IGNsaWVudCBBUEkuLi4iKSBvZgotICAgIFNlY3Rpb24gMy41LjMgd2l0aCB0aGUgZm9sbG93aW5n
IHRleHQuCi0gICAgIldoZW4gPGJ1ZnR5cGU+IGlzIEVHTF9PUEVOVkdfSU1BR0UsIHRoZSB3aWR0
aCBhbmQgaGVpZ2h0IG9mIHRoZSBwYnVmZmVyCi0gICAgYXJlIGRldGVybWluZWQgYnkgdGhlIHdp
ZHRoIGFuZCBoZWlnaHQgb2YgPGJ1ZmZlcj4uIFdoZW4gPGJ1ZnR5cGU+IGlzCi0gICAgRUdMX0Qz
RF9URVhUVVJFXzJEX1NIQVJFX0hBTkRMRV9BTkdMRSwgdGhlIHdpZHRoIGFuZCBoZWlnaHQgYXJl
IHNwZWNpZmllZAotICAgIHVzaW5nIEVHTF9XSURUSCBhbmQgRUdMX0hFSUdIVCwgb3IgZWxzZSB0
aGV5IGRlZmF1bHQgdG8gemVyby4gVGhlIHdpZHRoCi0gICAgYW5kIGhlaWdodCBtdXN0IG1hdGNo
IHRoZSBkaW1lbnNpb25zIG9mIHRoZSB0ZXh0dXJlIHdoaWNoIHRoZSBzaGFyZSBoYW5kbGUgCi0g
ICAgd2FzIGNyZWF0ZWQgZnJvbSBvciBlbHNlIGFuIEVHTF9CQURfQUxMT0MgZXJyb3IgaXMgZ2Vu
ZXJhdGVkLiIKLQotICAgIFJlcGxhY2UgdGhlIHRoaXJkIHBhcmFncmFwaCBvZiBTZWN0aW9uIDMu
NS4zIHdpdGggdGhlIGZvbGxvd2luZyB0ZXh0LgotICAgICI8YnVmdHlwZT4gc3BlY2lmaWVzIHRo
ZSB0eXBlIG9mIGJ1ZmZlciB0byBiZSBib3VuZC4gVGhlIG9ubHkgYWxsb3dlZCB2YWx1ZXMKLSAg
ICBvZiA8YnVmdHlwZT4gYXJlIEVHTF9PUEVOVkdfSU1BR0UgYW5kCi0gICAgRUdMX0QzRF9URVhU
VVJFXzJEX1NIQVJFX0hBTkRMRV9BTkdMRSIuCi0KLSAgICBBcHBlbmQgdGhlIGZvbGxvd2luZyB0
ZXh0IHRvIHRoZSBmb3VydGggcGFyYWdyYXBoIG9mIFNlY3Rpb24gMy41LjMuCi0gICAgIldoZW4g
PGJ1ZnR5cGU+IGlzIEVHTF9EM0RfVEVYVFVSRV8yRF9TSEFSRV9IQU5ETEVfQU5HTEUsIDxidWZm
ZXI+IG11c3QgYmUKLSAgICBhIHZhbGlkIEQzRCBzaGFyZSBoYW5kbGUsIGNhc3QgaW50byB0aGUg
dHlwZSBFR0xDbGllbnRCdWZmZXIuIFRoZSBoYW5kbGUKLSAgICBtYXkgYmUgb2J0YWluZWQgZnJv
bSB0aGUgRGlyZWN0M0Q5RXggQ3JlYXRlVGV4dHVyZSBmdW5jdGlvbiwgZnJvbSBEWEdJJ3MKLSAg
ICBHZXRTaGFyZWRIYW5kbGUgbWV0aG9kIG9uIGFuIElEM0QxMFRleHR1cmUyRCwgb3IgZnJvbSB0
aGUKLSAgICBFR0xfQU5HTEVfc3VyZmFjZV9kM2RfdGV4dHVyZV8yZF9zaGFyZV9oYW5kbGUgZXh0
ZW5zaW9uLiIKLQotSXNzdWVzCi0KLVJldmlzaW9uIEhpc3RvcnkKLQotICAgIFZlcnNpb24gMywg
MjAxMS8wNS8xMgotICAgICAgLSBwdWJsaXNoCi0KLSAgICBWZXJzaW9uIDIsIDIwMTEvMDUvMDMK
LSAgICAgIC0gc3BlY2lmeSBFR0xfRDNEX1RFWFRVUkVfMkRfU0hBUkVfSEFORExFCi0gICAgICAt
IHNwZWNpZnkgZXJyb3IgaWYgZGltZW5zaW9ucyBkb24ndCBtYXRjaAotCi0gICAgVmVyc2lvbiAx
LCAyMDExLzA0LzEyIC0gZmlyc3QgZHJhZnQuCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9leHRlbnNpb25zL0VHTF9BTkdMRV9kZXZpY2VfZDNkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VHTF9BTkdMRV9kZXZpY2VfZDNkLnR4dAko
cmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9F
R0xfQU5HTEVfZGV2aWNlX2QzZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSw5MyArMCwwIEBACi1O
YW1lCi0KLSAgICBBTkdMRV9kZXZpY2VfZDNkCi0KLU5hbWUgU3RyaW5ncwotCi0gICAgRUdMX0FO
R0xFX2RldmljZV9kM2QKLQotQ29udHJpYnV0b3JzCi0KLSAgICBKYW1pZSBNYWRpbGwgIChqbWFk
aWxsICdhdCcgZ29vZ2xlLmNvbSkKLQotQ29udGFjdAotCi0gICAgSmFtaWUgTWFkaWxsICAoam1h
ZGlsbCAnYXQnIGdvb2dsZS5jb20pCi0KLVN0YXR1cwotCi0gICAgRHJhZnQKLQotVmVyc2lvbgot
Ci0gICAgVmVyc2lvbiAxLCBNYXIgMjUsIDIwMTUKLQotTnVtYmVyCi0KLSAgICBFR0wgRXh0ZW5z
aW9uICNYWFgKLQotRXh0ZW5zaW9uIFR5cGUKLQotICAgIEVHTCBkZXZpY2UgZXh0ZW5zaW9uCi0K
LURlcGVuZGVuY2llcwotCi0gICAgVGhpcyBleHRlbnNpb24gaXMgd3JpdHRlbiBhZ2FpbnN0IHRo
ZSBsYW5ndWFnZSBvZiBFR0wgMS41IGFzCi0gICAgbW9kaWZpZWQgYnkgRUdMX0VYVF9kZXZpY2Vf
cXVlcnkuCi0KLSAgICBFR0xfRVhUX2RldmljZV9xdWVyeSBpcyByZXF1aXJlZC4KLQotT3ZlcnZp
ZXcKLQotICAgIEFOR0xFIGhhcyB0aGUgYWJpbGl0eSB0byBydW4gR1BVIGNvbW1hbmRzIG9uIGEg
bmF0aXZlIEQzRCBkZXZpY2UuCi0gICAgVGhpcyBleHRlbnNpb24gZGVmaW5lcyBhIG1hcHBpbmcg
ZnJvbSBhbiBFR0wgZGV2aWNlIHRvIGEgRDNECi0gICAgZGV2aWNlLCBhZnRlciBpdCdzIHF1ZXJp
ZWQgZnJvbSBhbiBFR0wgZGlzcGxheS4KLQotSVAgU3RhdHVzCi0KLSAgICBObyBrbm93biBjbGFp
bXMuCi0KLU5ldyBUeXBlcwotCi0gICAgTm9uZS4KLQotTmV3IFByb2NlZHVyZXMgYW5kIEZ1bmN0
aW9ucwotCi0gICAgTm9uZS4KLQotTmV3IFRva2VucwotCi0gICAgQWNjZXB0ZWQgYXMgYSBxdWVy
aWVkIDxhdHRyaWJ1dGU+IGluIGVnbFF1ZXJ5RGV2aWNlQXR0cmliRVhUOgotCi0gICAgICAgIEVH
TF9EM0Q5X0RFVklDRV9BTkdMRSAgICAgICAgICAgICAgMHgzM0EwCi0gICAgICAgIEVHTF9EM0Qx
MV9ERVZJQ0VfQU5HTEUgICAgICAgICAgICAgMHgzM0ExCi0KLUFkZCBhIG5ldyBzZWN0aW9uIDIu
MS4zIChEM0QgRGV2aWNlcykgYWZ0ZXIgMi4xLjIgKERldmljZXMpCi0KLSAgICBTb21ld2hhdCBh
bmFsb2dvdXMgdG8gYW4gRUdMIGRldmljZSwgYSBEM0QgZGV2aWNlIGVzdGFibGlzaGVzIGEKLSAg
ICBuYW1lc3BhY2UgZm9yIEQzRCBvcGVyYXRpb25zLiBJbiB0aGUgRDNEIEFQSXMsIHN1Y2ggZGV2
aWNlcyBhcmUKLSAgICByZXByZXNlbnRlZCBieSBwb2ludGVycy4gRm9yIG1vcmUgZGV0YWlscywg
c2VlIHRoZSBEM0QKLSAgICBkb2N1bWVudGF0aW9uLgotCi1DaGFuZ2VzIHRvIHNlY3Rpb24gMy4y
IChEZXZpY2VzKQotCi0gICAgUmVwbGFjZSB0aGUgcGFyYWdyYXBoIGltbWVkaWF0ZWx5IGZvbGxv
d2luZyB0aGUgcHJvdG90eXBlIGZvcgotICAgIGVnbFF1ZXJ5RGV2aWNlQXR0cmliRVhUOgotCi0g
ICAgPGF0dHJpYnV0ZT4gbWF5IGJlIGVpdGhlciBFR0xfRDNEOV9ERVZJQ0VfQU5HTEUgb3IgRUdM
X0QzRDExX0RFVklDRV9BTkdMRS4KLSAgICBPbiBzdWNjZXNzLCBFR0xfVFJVRSBpcyByZXR1cm5l
ZCwgYW5kIGEgdmFsaWQgRDNEOSBvciBEM0QxMSBkZXZpY2UgcG9pbnRlcgotICAgIGNvcnJlc3Bv
bmRpbmcgdG8gdGhlIEVHTCBkZXZpY2UgaXMgcmV0dXJuZWQgaW4gPHZhbHVlPi4gVGhpcyBoYW5k
bGUKLSAgICBpcyBjb21wYXRpYmxlIHdpdGggRDNEIEFQSSBmdW5jdGlvbnMuIElmIHRoZSBFR0wg
ZGV2aWNlIGlzIG5vdCBjdXJyZW50bHkKLSAgICBhc3NvY2lhdGVkIHdpdGggYSBEM0Q5IGRldmlj
ZSBhbmQgPGF0dHJpYnV0ZT4gaXMgRUdMX0QzRDlfREVWSUNFX0FOR0xFLAotICAgIG9yIGlmIHRo
ZSBFR0wgZGV2aWNlIGlzIG5vdCBjdXJyZW50bHkgYXNzb2NpYXRlZCB3aXRoIGEgRDNEMTEgZGV2
aWNlIGFuZAotICAgIDxhdHRyaWJ1dGU+IGlzIEVHTF9EM0QxMV9ERVZJQ0VfQU5HTEUsIEVHTF9C
QURfQVRUUklCVVRFIGlzIHJldHVybmVkLAotICAgIGFuZCA8dmFsdWU+IGlzIGxlZnQgdW5jaGFu
Z2VkLgotCi1Jc3N1ZXMKLQotICAgIE5vbmUKLQotUmV2aXNpb24gSGlzdG9yeQotCi0gICAgVmVy
c2lvbiAxLCBNYXIgMjUsIDIwMTUgKEphbWllIE1hZGlsbCkKLSAgICAgICAgLSBJbml0aWFsIERy
YWZ0CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VHTF9BTkdMRV9k
aXJlY3QzZF9kaXNwbGF5LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9leHRlbnNpb25zL0VHTF9BTkdMRV9kaXJlY3QzZF9kaXNwbGF5LnR4dAkocmV2aXNpb24gMjA3
ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FR0xfQU5HTEVfZGly
ZWN0M2RfZGlzcGxheS50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSw2OCArMCwwIEBACi1OYW1lCi0K
LSAgICBBTkdMRV9kaXJlY3QzZF9kaXNwbGF5Ci0KLU5hbWUgU3RyaW5ncwotCi0gICAgRUdMX0FO
R0xFX2RpcmVjdDNkX2Rpc3BsYXkKLQotQ29udHJpYnV0b3JzCi0KLSAgICBOaWNvbGFzIENhcGVu
cwotICAgIFNoYW5ub24gV29vZHMKLQotQ29udGFjdHMKLQotICAgIFNoYW5ub24gV29vZHMsIEdv
b2dsZSBJbmMuIChzaGFubm9ud29vZHMgJ2F0JyBjaHJvbWl1bS5vcmcpCi0KLVN0YXR1cwotCi0g
ICAgSW4gcHJvZ3Jlc3MKLQotVmVyc2lvbgotCi0gICAgVmVyc2lvbiAxLCBNYXkgMTUsIDIwMTMK
LQotTnVtYmVyCi0KLSAgICBFR0wgRXh0ZW5zaW9uICM/PwotCi1EZXBlbmRlbmNpZXMKLQotICAg
IFRoaXMgZXh0ZW5zaW9uIGlzIHdyaXR0ZW4gYWdhaW5zdCB0aGUgd29yZGluZyBvZiB0aGUgRUdM
IDEuNAotICAgIFNwZWNpZmljYXRpb24uIAotCi1PdmVydmlldwotCi0gICAgVGhpcyBleHRlbnNp
b24gYWxsb3dzIGZvciBzcGVjaWZ5aW5nIHRoZSBiZWhhdmlvciBvZiB0aGUgcmVuZGVyZXIgYmFj
a2luZyB0aGUgZGlzcGxheS4KLQotTmV3IFR5cGVzCi0KLSAgICBOb25lCi0KLU5ldyBQcm9jZWR1
cmVzIGFuZCBGdW5jdGlvbnMKLQotICAgIE5vbmUKLQotTmV3IFRva2VucwotCi0gICAgRUdMX0Qz
RDExX0VMU0VfRDNEOV9ESVNQTEFZX0FOR0xFICAgICAgICAgKEVHTE5hdGl2ZURpc3BsYXlUeXBl
KS0yCi0gICAgRUdMX0QzRDExX09OTFlfRElTUExBWV9BTkdMRSAgICAgICAgICAgICAgKEVHTE5h
dGl2ZURpc3BsYXlUeXBlKS0zCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDMgb2YgdGhlIEVHTCAx
LjQgU3BlY2lmaWNhdGlvbiAoRUdMIEZ1bmN0aW9ucyBhbmQgRXJyb3JzKQotCi0gICAgQWRkIGJl
Zm9yZSB0aGUgbGFzdCBzZW50ZW5jZSBvZiB0aGUgZmlyc3QgcGFyYWdyYXBoIG9mIHNlY3Rpb24g
My4yLAotICAgICJJbml0aWFsaXphdGlvbiI6Ci0KLSAgICAiSWYgPGRpc3BsYXlfaWQ+IGlzIEVH
TF9EM0QxMV9FTFNFX0QzRDlfRElTUExBWV9BTkdMRSwgdGhlIGRpc3BsYXkgcmV0dXJuZWQKLSAg
ICB3aWxsIGJlIGJhY2tlZCBieSBhIERpcmVjdDNEIDExIHJlbmRlcmVyIGlmIG9uZSBpcyBhdmFp
bGFibGUsIG9yIGJ5IGEKLSAgICBEaXJlY3QzRCA5IHJlbmRlcmVyIG90aGVyd2lzZS4gSWYgPGRp
c3BsYXlfaWQ+IGlzIEVHTF9EM0QxMV9PTkxZX0RJU1BMQVlfQU5HTEUsCi0gICAgdGhlIGRpc3Bs
YXkgcmV0dXJuZWQgd2lsbCBiZSBiYWNrZWQgYnkgYSBEaXJlY3QzRCAxMSByZW5kZXJlciBpZiBv
bmUgaXMKLSAgICBhdmFpbGFibGUsIG9yIHdpbGwgcmV0dXJuIE5VTEwgb3RoZXJ3aXNlLiIKLQot
SXNzdWVzCi0KLVJldmlzaW9uIEhpc3RvcnkKLQotICAgIFZlcnNpb24gMSwgMjAxMy8wNS8xNSAt
IEZpcnN0IGRyYWZ0LgotCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25z
L0VHTF9BTkdMRV9xdWVyeV9zdXJmYWNlX3BvaW50ZXIudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRUdMX0FOR0xFX3F1ZXJ5X3N1cmZhY2VfcG9p
bnRlci50eHQJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4
dGVuc2lvbnMvRUdMX0FOR0xFX3F1ZXJ5X3N1cmZhY2VfcG9pbnRlci50eHQJKG5vbmV4aXN0ZW50
KQpAQCAtMSw4OCArMCwwIEBACi1OYW1lCi0KLSAgICBBTkdMRV9xdWVyeV9zdXJmYWNlX3BvaW50
ZXIKLQotTmFtZSBTdHJpbmdzCi0KLSAgICBFR0xfQU5HTEVfcXVlcnlfc3VyZmFjZV9wb2ludGVy
Ci0KLUNvbnRyaWJ1dG9ycwotCi0gICAgVmxhZGltaXIgVnVraWNldmljCi0gICAgRGFuaWVsIEtv
Y2gKLQotQ29udGFjdHMKLQotICAgIFZsYWRpbWlyIFZ1a2ljZXZpYyAodmxhZGltaXIgJ2F0JyBw
b2JveC5jb20pCi0KLVN0YXR1cwotCi0gICAgQ29tcGxldGUKLSAgICBJbXBsZW1lbnRlZCAoQU5H
TEUgcjU1OCkKLQotVmVyc2lvbgotCi0gICAgVmVyc2lvbiAzLCBGZWJydWFyeSAxMSwgMjAxMQot
Ci1OdW1iZXIKLQotICAgIEVHTCBFeHRlbnNpb24gIzI4Ci0KLURlcGVuZGVuY2llcwotCi0gICAg
VGhpcyBleHRlbnNpb24gaXMgd3JpdHRlbiBhZ2FpbnN0IHRoZSB3b3JkaW5nIG9mIHRoZSBFR0wg
MS40Ci0gICAgU3BlY2lmaWNhdGlvbi4gCi0KLU92ZXJ2aWV3Ci0KLSAgICBUaGlzIGV4dGVuc2lv
biBhbGxvd3MgcXVlcnlpbmcgcG9pbnRlci1zaXplZCBzdXJmYWNlIGF0dHJpYnV0ZXMsCi0gICAg
dGh1cyBhdm9pZGluZyBwcm9ibGVtcyB3aXRoIGNvZXJjaW5nIDY0LWJpdCBwb2ludGVycyBpbnRv
IGEgMzItYml0Ci0gICAgaW50ZWdlci4KLQotTmV3IFR5cGVzCi0KLSAgICBOb25lCi0KLU5ldyBQ
cm9jZWR1cmVzIGFuZCBGdW5jdGlvbnMKLQotICAgIEVHTEJvb2xlYW4gZWdsUXVlcnlTdXJmYWNl
UG9pbnRlckFOR0xFKAotICAgICAgICAgICAgICAgICAgICAgICAgRUdMRGlzcGxheSBkcHksCi0g
ICAgICAgICAgICAgICAgICAgICAgICBFR0xTdXJmYWNlIHN1cmZhY2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBFR0xpbnQgYXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgdm9p
ZCAqKnZhbHVlKTsKLQotTmV3IFRva2VucwotCi0gICAgTm9uZQotCi1BZGRpdGlvbnMgdG8gQ2hh
cHRlciAzIG9mIHRoZSBFR0wgMS40IFNwZWNpZmljYXRpb24gKEVHTCBGdW5jdGlvbnMgYW5kIEVy
cm9ycykKLQotICAgIEFkZCB0byB0aGUgZW5kIG9mIHRoZSBwYXJhZ3JhcGggc3RhcnRpbmcgd2l0
aCAiVG8gcXVlcnkgYW4KLSAgICBhdHRyaWJ1dGUgYXNzb2NpYXRlZCB3aXRoIGFuIEVHTFN1cmZh
Y2UiIGluIHNlY3Rpb24gMy41LjYsCi0gICAgIlN1cmZhY2UgQXR0cmlidXRlcyI6Ci0KLSAgICAi
SWYgdGhlIGF0dHJpYnV0ZSB0eXBlIGluIHRhYmxlIDMuNSBpcyAncG9pbnRlcicsIHRoZW4KLSAg
ICBlZ2xRdWVyeVN1cmZhY2UgcmV0dXJucyBFR0xfRkFMU0UgYW5kIGFuIEVHTF9CQURfUEFSQU1F
VEVSIGVycm9yCi0gICAgaXMgZ2VuZXJhdGVkLiAgVG8gcXVlcnkgcG9pbnRlciBhdHRyaWJ1dGVz
LCBjYWxsOgotCi0gICAgICAgICBFR0xCb29sZWFuIGVnbFF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdM
RSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMRGlzcGxheSBkcHksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRUdMaW50IGF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdm9pZCAqKnZhbHVlKTsKLQotICAgICBlZ2xRdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUg
YmVoYXZlcyBpZGVudGljYWxseSB0byBlZ2xRdWVyeVN1cmZhY2UsCi0gICAgIGV4Y2VwdCB0aGF0
IG9ubHkgYXR0cmlidXRlcyBvZiB0eXBlICdwb2ludGVyJyBjYW4gYmUgcXVlcmllZC4KLSAgICAg
SWYgYW4gYXR0cmlidXRlIHF1ZXJpZWQgdmlhIGVnbFF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRSBp
cyBub3QKLSAgICAgb2YgdHlwZSAncG9pbnRlcicsIHRoZW4gZWdsUXVlcnlTdXJmYWNlUG9pbnRl
ciByZXR1cm5zIEVHTF9GQUxTRQotICAgICBhbmQgYW4gRUdMX0JBRF9QQVJBTUVURVIgZXJyb3Ig
aXMgZ2VuZXJhdGVkLiIKLQotSXNzdWVzCi0KLVJldmlzaW9uIEhpc3RvcnkKLQotICAgIFZlcnNp
b24gMywgMjAxMS8wMi8xMSAtIHB1Ymxpc2gKLQotICAgIFZlcnNpb24gMiwgMjAxMC8xMi8yMSAt
IGZpeCB0eXBvcy4KLQotICAgIFZlcnNpb24gMSwgMjAxMC8xMi8wNyAtIGZpcnN0IGRyYWZ0LgpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FR0xfQU5HTEVfcm9idXN0
X3Jlc291cmNlX2luaXRpYWxpemF0aW9uLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9leHRlbnNpb25zL0VHTF9BTkdMRV9yb2J1c3RfcmVzb3VyY2VfaW5pdGlhbGl6
YXRpb24udHh0CShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9l
eHRlbnNpb25zL0VHTF9BTkdMRV9yb2J1c3RfcmVzb3VyY2VfaW5pdGlhbGl6YXRpb24udHh0CShu
b25leGlzdGVudCkKQEAgLTEsODAgKzAsMCBAQAotTmFtZQotCi0gICAgRUdMX0FOR0xFX3JvYnVz
dF9yZXNvdXJjZV9pbml0aWFsaXphdGlvbi50eHQKLQotTmFtZSBTdHJpbmdzCi0KLSAgICBFR0xf
QU5HTEVfcm9idXN0X3Jlc291cmNlX2ludGlhbGl6YXRpb24KLQotQ29udHJpYnV0b3JzCi0KLSAg
ICBHZW9mZiBMYW5nLCBHb29nbGUKLSAgICBLZW4gUnVzc2VsbCwgR29vZ2xlCi0KLUNvbnRhY3Rz
Ci0KLSAgICBTaGFubm9uIFdvb2RzLCBHb29nbGUgKHNoYW5ub253b29kcyAnYXQnIGdvb2dsZS5j
b20pCi0KLVN0YXR1cwotCi0gICAgRHJhZnQKLQotVmVyc2lvbgotCi0gICAgVmVyc2lvbiAxLCBK
YW51YXJ5IDcsIDIwMTUKLQotTnVtYmVyCi0KLSAgICBFR0wgRXh0ZW5zaW9uIFRCRAotCi1EZXBl
bmRlbmNpZXMKLQotICAgIFRoaXMgZXh0ZW5zaW9uIGlzIHdyaXR0ZW4gYWdhaW5zdCB0aGUgd29y
ZGluZyBvZiB0aGUgRUdMIDEuNQotICAgIHNwZWNpZmljYXRpb24uCi0KLSAgICBBbiBPcGVuR0wg
RVMgaW1wbGVtZW50YXRpb24gc3VwcG9ydGluZyBBTkdMRV9yb2J1c3RfcmVzb3VyY2VfaW5pdGlh
bGl6YXRpb24KLSAgICBvciBhbiBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0aW5nIGVxdWl2YWxlbnQg
ZnVuY3Rpb25hbGl0eSBpcyByZXF1aXJlZC4KLQotT3ZlcnZpZXcKLQotICAgIFRoaXMgZXh0ZW5z
aW9uIGFsbG93cyBjcmVhdGluZyBhbiBPcGVuR0wgRVMgY29udGV4dCBzdXBwb3J0aW5nCi0gICAg
cm9idXN0IHJlc291cmNlIGluaXRpYWxpemF0aW9uLgotCi1OZXcgVHlwZXMKLQotICAgIE5vbmUK
LQotTmV3IFByb2NlZHVyZXMgYW5kIEZ1bmN0aW9ucwotCi0gICAgTm9uZQotCi1OZXcgVG9rZW5z
Ci0KLSAgICBBY2NlcHRlZCBhcyBhbiBhdHRyaWJ1dGUgbmFtZSBpbiB0aGUgPCphdHRyaWJfbGlz
dD4gYXJndW1lbnQgdG8KLSAgICBlZ2xDcmVhdGVDb250ZXh0OgotCi0gICAgICAgIEVHTF9DT05U
RVhUX09QRU5HTF9ST0JVU1RfUkVTT1VSQ0VfSU5JVElBTElaQVRJT05fQU5HTEUgICAgMHgzMjBG
Ci0KLUFkZGl0aW9ucyB0byB0aGUgRUdMIDEuNSBTcGVjaWZpY2F0aW9uCi0KLSAgICBBZGQgYSBu
ZXcgc2VjdGlvbiBlbnRpdGxlZCAiT3BlbkdMIEVTIFJvYnVzdCBSZXNvdXJjZSBJbml0aWFsaXph
dGlvbiIKLSAgICB0byBzZWN0aW9uIDMuNy4xOgotCi0gICAgIklmIHRoZSBhdHRyaWJ1dGUgRUdM
X0NPTlRFWFRfT1BFTkdMX1JPQlVTVF9SRVNPVVJDRV9JTklUSUFMSVpBVElPTl9BTkdMRQotICAg
IGlzIHNldCB0byBFR0xfVFJVRSwgYSBjb250ZXh0IHN1cHBvcnRpbmcgPHJvYnVzdCByZXNvdXJj
ZSBpbml0aWFsaXphdGlvbj4KLSAgICB3aWxsIGJlIGNyZWF0ZWQuIE9wZW5HTCBFUyBjb250ZXh0
cyBtdXN0IHN1cHBvcnQgdGhlCi0gICAgQU5HTEVfcm9idXN0X3Jlc291cmNlX2luaXRpYWxpemF0
aW9uIGV4dGVuc2lvbiwgb3IgZXF1aXZhbGVudCBjb3JlIEFQSQotICAgIGZ1bmN0aW9uYWxpdHku
Ci0gICAgVGhpcyBhdHRyaWJ1dGUgaXMgc3VwcG9ydGVkIG9ubHkgZm9yIE9wZW5HTCBFUyBjb250
ZXh0cy4gSWYgdGhlCi0gICAgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCByb2J1c3Qg
cmVzb3VyY2UgaW5pdGlhbGl6YXRpb24sCi0gICAgY29udGV4dCBjcmVhdGlvbiB3aWxsIGZhaWwu
Ci0gICAgVGhlIGRlZmF1bHQgdmFsdWUgb2YgRUdMX0NPTlRFWFRfT1BFTkdMX1JPQlVTVF9SRVNP
VVJDRV9JTklUSUFMSVpBVElPTl9BTkdMRQotICAgIGlzIEVHTF9GQUxTRS4iCi0KLUlzc3Vlcwot
Ci0gICAgTm9uZQotCi1SZXZpc2lvbiBIaXN0b3J5Ci0KLSAgICBWZXJzaW9uIDEsIDIwMTUvMDEv
MDcgLSBmaXJzdCBkcmFmdC4KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lv
bnMvRUdMX0FOR0xFX3NvZnR3YXJlX2Rpc3BsYXkudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRUdMX0FOR0xFX3NvZnR3YXJlX2Rpc3BsYXkudHh0
CShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25z
L0VHTF9BTkdMRV9zb2Z0d2FyZV9kaXNwbGF5LnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDY1ICsw
LDAgQEAKLU5hbWUKLQotICAgIEFOR0xFX3NvZnR3YXJlX2Rpc3BsYXkKLQotTmFtZSBTdHJpbmdz
Ci0KLSAgICBFR0xfQU5HTEVfc29mdHdhcmVfZGlzcGxheQotCi1Db250cmlidXRvcnMKLQotICAg
IEpvaG4gQmF1bWFuCi0gICAgRGFuaWVsIEtvY2gKLQotQ29udGFjdHMKLQotICAgIEpvaG4gQmF1
bWFuLCBHb29nbGUgSW5jLiAoamJhdW1hbiAnYXQnIGNocm9taXVtLm9yZykKLQotU3RhdHVzCi0K
LSAgICBJbiBwcm9ncmVzcwotCi1WZXJzaW9uCi0KLSAgICBWZXJzaW9uIDIsIE9jdG9iZXIgMTks
IDIwMTEKLQotTnVtYmVyCi0KLSAgICBFR0wgRXh0ZW5zaW9uICM/PwotCi1EZXBlbmRlbmNpZXMK
LQotICAgIFRoaXMgZXh0ZW5zaW9uIGlzIHdyaXR0ZW4gYWdhaW5zdCB0aGUgd29yZGluZyBvZiB0
aGUgRUdMIDEuNAotICAgIFNwZWNpZmljYXRpb24uIAotCi1PdmVydmlldwotCi0gICAgVGhpcyBl
eHRlbnNpb24gYWxsb3dzIGZvciByZWNlaXZpbmcgYSBkZXZpY2UgdGhhdCB1c2VzIHNvZnR3YXJl
IHJlbmRlcmluZy4KLQotTmV3IFR5cGVzCi0KLSAgICBOb25lCi0KLU5ldyBQcm9jZWR1cmVzIGFu
ZCBGdW5jdGlvbnMKLQotICAgIE5vbmUKLQotTmV3IFRva2VucwotCi0gICAgRUdMX1NPRlRXQVJF
X0RJU1BMQVlfQU5HTEUgICAgICAgICAoRUdMTmF0aXZlRGlzcGxheVR5cGUpLTEKLQotQWRkaXRp
b25zIHRvIENoYXB0ZXIgMyBvZiB0aGUgRUdMIDEuNCBTcGVjaWZpY2F0aW9uIChFR0wgRnVuY3Rp
b25zIGFuZCBFcnJvcnMpCi0KLSAgICBBZGQgYmVmb3JlIHRoZSBsYXN0IHNlbnRlbmNlIG9mIHRo
ZSBmaXJzdCBwYXJhZ3JhcGggb2Ygc2VjdGlvbiAzLjIsCi0gICAgIkluaXRpYWxpemF0aW9uIjoK
LQotICAgICJJZiA8ZGlzcGxheV9pZD4gaXMgRUdMX1NPRlRXQVJFX0RJU1BMQVlfQU5HTEUsIGEg
ZGlzcGxheSB0aGF0IHdpbGwgcmVuZGVyCi0gICAgZXZlcnl0aGluZyBpbiBzb2Z0d2FyZSB3aWxs
IGJlIHJldHVybmVkLiIKLQotSXNzdWVzCi0KLVJldmlzaW9uIEhpc3RvcnkKLQotICAgIFZlcnNp
b24gMSwgMjAxMS8wNy8xMiAtIGZpcnN0IGRyYWZ0LgotICAgIFZlcnNpb24gMiwgMjAxMS8xMC8x
OCAtIGFkZCB0b2tlbiBkZWZpbml0aW9uCi0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L2V4dGVuc2lvbnMvRUdMX0FOR0xFX3N1cmZhY2VfZDNkX3RleHR1cmVfMmRfc2hhcmVfaGFuZGxl
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VH
TF9BTkdMRV9zdXJmYWNlX2QzZF90ZXh0dXJlXzJkX3NoYXJlX2hhbmRsZS50eHQJKHJldmlzaW9u
IDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRUdMX0FOR0xF
X3N1cmZhY2VfZDNkX3RleHR1cmVfMmRfc2hhcmVfaGFuZGxlLnR4dAkobm9uZXhpc3RlbnQpCkBA
IC0xLDk1ICswLDAgQEAKLU5hbWUKLQotICAgIEFOR0xFX3N1cmZhY2VfZDNkX3RleHR1cmVfMmRf
c2hhcmVfaGFuZGxlCi0KLU5hbWUgU3RyaW5ncwotCi0gICAgRUdMX0FOR0xFX3N1cmZhY2VfZDNk
X3RleHR1cmVfMmRfc2hhcmVfaGFuZGxlCi0KLUNvbnRyaWJ1dG9ycwotCi0gICAgVmxhZGltaXIg
VnVraWNldmljCi0gICAgRGFuaWVsIEtvY2gKLQotQ29udGFjdHMKLQotICAgIFZsYWRpbWlyIFZ1
a2ljZXZpYyAodmxhZGltaXIgJ2F0JyBwb2JveC5jb20pCi0KLVN0YXR1cwotCi0gICAgQ29tcGxl
dGUKLSAgICBJbXBsZW1lbnRlZCAoQU5HTEUgcjU1OCkKLQotVmVyc2lvbgotCi0gICAgVmVyc2lv
biAyLCBEZWNlbWJlciAyMSwgMjAxMAotCi1OdW1iZXIKLQotICAgIEVHTCBFeHRlbnNpb24gIzI5
Ci0KLURlcGVuZGVuY2llcwotCi0gICAgUmVxdWlyZXMgdGhlIEVHTF9BTkdMRV9xdWVyeV9zdXJm
YWNlX3BvaW50ZXIgZXh0ZW5zaW9uLgotCi0gICAgVGhpcyBleHRlbnNpb24gaXMgd3JpdHRlbiBh
Z2FpbnN0IHRoZSB3b3JkaW5nIG9mIHRoZSBFR0wgMS40Ci0gICAgU3BlY2lmaWNhdGlvbi4KLQot
T3ZlcnZpZXcKLQotICAgIFNvbWUgRUdMIGltcGxlbWVudGF0aW9ucyBnZW5lcmF0ZSBFR0xTdXJm
YWNlIGhhbmRsZXMgdGhhdCBhcmUKLSAgICBiYWNrZWQgYnkgRGlyZWN0M0QgMkQgdGV4dHVyZXMu
ICBGb3Igc3VjaCBzdXJmYWNlcywgYSBEM0Qgc2hhcmUKLSAgICBoYW5kbGUgY2FuIGJlIGdlbmVy
YXRlZCwgYWxsb3dpbmcgYWNjZXNzIHRvIHRoZSBzYW1lIHN1cmZhY2UKLSAgICBmcm9tIHRoZSBE
aXJlY3QzRCBBUEkuCi0KLU5ldyBUeXBlcwotCi0gICAgTm9uZQotCi1OZXcgUHJvY2VkdXJlcyBh
bmQgRnVuY3Rpb25zCi0KLSAgICBOb25lCi0KLU5ldyBUb2tlbnMKLQotICAgIEFjY2VwdGVkIGlu
IHRoZSA8YXR0cmlidXRlPiBwYXJhbWV0ZXIgb2YgZWdsUXVlcnlTdXJmYWNlUG9pbnRlckFOR0xF
OgotCi0gICAgICAgIEVHTF9EM0RfVEVYVFVSRV8yRF9TSEFSRV9IQU5ETEVfQU5HTEUgICAgICAg
ICAgICAweDMyMDAKLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgMyBvZiB0aGUgRUdMIDEuNCBTcGVj
aWZpY2F0aW9uIChFR0wgRnVuY3Rpb25zIGFuZCBFcnJvcnMpCi0KLSAgICBBZGQgdG8gdGFibGUg
My41LCAiUXVlcnlhYmxlIHN1cmZhY2UgYXR0cmlidXRlcyBhbmQgdHlwZXMiOgotCi0gICAgICAg
IEF0dHJpYnV0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICBEZXNjcmlw
dGlvbgotICAgICAgICAtLS0tLS0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0t
ICAgICAgLS0tLS0tLS0tLS0KLSAgICAgICAgRUdMX0QzRF9URVhUVVJFXzJEX1NIQVJFX0hBTkRM
RV9BTkdMRSAgcG9pbnRlciAgIERpcmVjdDNEIHNoYXJlIGhhbmRsZQotCi0gICAgQWRkIGJlZm9y
ZSB0aGUgbGFzdCBwYXJhZ3JhcGggaW4gc2VjdGlvbiAzLjUsICJTdXJmYWNlIGF0dHJpYnV0ZXMi
OgotCi0gICAiUXVlcnlpbmcgRUdMX0QzRF9URVhUVVJFXzJEX1NIQVJFX0hBTkRMRV9BTkdMRSBy
ZXR1cm5zIGEgRGlyZWN0M0QKLSAgICBzaGFyZSBoYW5kbGUsIG9yIE5VTEwgaWYgYSBzaGFyZSBo
YW5kbGUgZm9yIHRoZSBzdXJmYWNlIGlzIG5vdAotICAgIGF2YWlsYWJsZS4gIFRoZSBzaGFyZSBo
YW5kbGUgbXVzdCBiZSBxdWVyaWVkIHVzaW5nCi0gICAgZWdsUXVlcnlTdXJmYWNlQXR0cmliUG9p
bnRlckFOR0xFLiAgQmVmb3JlIHVzaW5nIGEgRGlyZWN0M0Qgc3VyZmFjZQotICAgIGNyZWF0ZWQg
d2l0aCB0aGlzIHNoYXJlIGhhbmRsZSwgZW5zdXJlIHRoYXQgYWxsIHJlbmRlcmluZwotICAgIHRv
IHRoZSBFR0xTdXJmYWNlIHdpdGggRUdMIGNsaWVudCBBUElzIGhhcyBjb21wbGV0ZWQuCi0KLSAg
ICBUaGUgRGlyZWN0M0Qgc2hhcmUgaGFuZGxlIG1heSBiZSBwYXNzZWQgYXMgdGhlIHBTaGFyZWRI
YW5kbGUKLSAgICBwYXJhbWV0ZXIgb2YgdGhlIERpcmVjdDNEOUV4IENyZWF0ZVRleHR1cmUgZnVu
Y3Rpb24sIG9yIHZpYSB0aGUKLSAgICBEaXJlY3QzRDEwIE9wZW5TaGFyZWRSZXNvdXJjZSBmdW5j
dGlvbi4gIElmIHVzZWQgd2l0aCBEaXJlY3QzRCA5LAotICAgIHRoZSBsZXZlbCBhcmd1bWVudCB0
byBDcmVhdGVUZXh0dXJlIG11c3QgYmUgMSwgYW5kIHRoZSBkaW1lbnNpb25zCi0gICAgbXVzdCBt
YXRjaCB0aGUgZGltZW5zaW9ucyBvZiB0aGUgRUdMIHN1cmZhY2UuICBJZiB1c2VkIHdpdGgKLSAg
ICBEaXJlY3QzRCAxMCwgT3BlblNoYXJlZFJlc291cmNlIHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0
aGUKLSAgICBJRDNEMTBUZXh0dXJlMkQgdXVpZCB0byBvYnRhaW4gYW4gSUQzRDEwVGV4dHVyZTJE
IG9iamVjdC4KLQotSXNzdWVzCi0KLVJldmlzaW9uIEhpc3RvcnkKLQotICAgIFZlcnNpb24gMywg
MjAxMS8wMi8xMSAtIHB1Ymxpc2gKLQotICAgIFZlcnNpb24gMiwgMjAxMC8xMi8yMQotICAgICAg
LSByZW5hbWVkIHRva2VuIHRvIEVHTF9EM0RfVEVYVFVSRV8yRF9TSEFSRV9IQU5ETEVfQU5HTEUg
KGFkZGluZyAiMkQiKQotICAgICAgLSByZW5hbWVkIGV4dGVuc2lvbiB0byBBTkdMRV9zdXJmYWNl
X2QzZF90ZXh0dXJlXzJkX3NoYXJlX2hhbmRsZQotICAgICAgLSBhZGRlZCBsYW5ndWFnZSBhYm91
dCBzdXBwb3J0ZWQgdXNhZ2Ugb2YgdGhlIHNoYXJlZCBoYW5kbGUgZnJvbSBEM0QKLQotICAgIFZl
cnNpb24gMSwgMjAxMC8xMi8wNyAtIGZpcnN0IGRyYWZ0LgpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvZXh0ZW5zaW9ucy9FR0xfQU5HTEVfd2luZG93X2ZpeGVkX3NpemUudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRUdMX0FOR0xFX3dp
bmRvd19maXhlZF9zaXplLnR4dAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvZXh0ZW5zaW9ucy9FR0xfQU5HTEVfd2luZG93X2ZpeGVkX3NpemUudHh0CShub25l
eGlzdGVudCkKQEAgLTEsMTM2ICswLDAgQEAKLU5hbWUKLQotICAgIEFOR0xFX3dpbmRvd19maXhl
ZF9zaXplCi0KLU5hbWUgU3RyaW5ncwotCi0gICAgRUdMX0FOR0xFX3dpbmRvd19maXhlZF9zaXpl
Ci0KLUNvbnRyaWJ1dG9ycwotCi0gICAgSm9obiBCYXVtYW4KLSAgICBTaGFubm9uIFdvb2RzCi0K
LUNvbnRhY3RzCi0KLSAgICBKb2huIEJhdW1hbiwgR29vZ2xlIEluYy4gKGpiYXVtYW4gJ2F0JyBn
b29nbGUuY29tKQotCi1TdGF0dXMKLQotICAgIENvbXBsZXRlCi0KLVZlcnNpb24KLQotICAgIFZl
cnNpb24gNCwgRmVicnVhcnkgMjQsIDIwMTQKLQotTnVtYmVyCi0KLSAgICBFR0wgRXh0ZW5zaW9u
ICM/PwotCi1EZXBlbmRlbmNpZXMKLQotICAgIFRoaXMgZXh0ZW5zaW9uIGlzIHdyaXR0ZW4gYWdh
aW5zdCB0aGUgd29yZGluZyBvZiB0aGUgRUdMIDEuNAotICAgIFNwZWNpZmljYXRpb24uCi0KLU92
ZXJ2aWV3Ci0KLSAgICBUaGlzIGV4dGVuc2lvbiBhbGxvd3MgY3JlYXRpbmcgYSB3aW5kb3cgc3Vy
ZmFjZSB3aXRoIGEgZml4ZWQgc2l6ZSB0aGF0IGlzCi0gICAgc3BlY2lmaWVkIHdoZW4gaXQgaXMg
Y3JlYXRlZC4KLQotTmV3IFR5cGVzCi0KLSAgICBOb25lCi0KLU5ldyBQcm9jZWR1cmVzIGFuZCBG
dW5jdGlvbnMKLQotICAgIE5vbmUKLQotTmV3IFRva2VucwotCi0gICAgQWNjZXB0ZWQgYnkgdGhl
IDxhdHRyaWJ1dGU+IHBhcmFtZXRlciBvZiBlZ2xRdWVyeVN1cmZhY2UgYW5kIGJ5IHRoZQotICAg
IDxhdHRyaWJfbGlzdD4gcGFyYW1ldGVyIG9mIGVnbENyZWF0ZVdpbmRvd1N1cmZhY2U6Ci0KLSAg
ICBFR0xfRklYRURfU0laRV9BTkdMRSAgICAgICAgMHgzMjAxCi0KLUFkZGl0aW9ucyB0byBDaGFw
dGVyIDMgb2YgdGhlIEVHTCAxLjQgU3BlY2lmaWNhdGlvbjoKLQotICAgIE1vZGlmeSB0aGUgdGhp
cmQgcGFyYWdyYXBoIG9mIFNlY3Rpb24gMy41LjEgKENyZWF0aW5nIE9uLVNjcmVlbiBSZW5kZXJp
bmcgU3VyZmFjZXMpCi0KLSAgICAiPGF0dHJpYl9saXN0PiBzcGVjaWZpZXMgYSBsaXN0IG9mIGF0
dHJpYnV0ZXMgZm9yIHRoZSB3aW5kb3cuIFRoZSBsaXN0IGhhcwotICAgIHRoZSBzYW1lIHN0cnVj
dHVyZSBhcyBkZXNjcmliZWQgZm9yIGVnbENob29zZUNvbmZpZy4gIEF0dHJpYnV0ZXMgdGhhdCBj
YW4KLSAgICBiZSBzcGVjaWZpZWQgaW4gPGF0dHJpYl9saXN0PiBpbmNsdWRlIEVHTF9SRU5ERVJf
QlVGRkVSLAotICAgIEVHTF9WR19DT0xPUlNQQUNFLCBFR0xfVkdfQUxQSEFfRk9STUFULCBFR0xf
RklYRURfU0laRV9BTkdMRSwgRUdMX1dJRFRILAotICAgIGFuZCBFR0xfSEVJR0hULiIKLQotICAg
IEFkZCBiZWZvcmUgdGhlIGxhc3QgcGFyYWdyYXBoIG9mIFNlY3Rpb24gMy41LjEKLQotICAgICJF
R0xfRklYRURfU0laRV9BTkdMRSBzcGVjaWZpZXMgd2hldGhlciB0aGUgc3VyZmFjZSBtdXN0IGJl
IHJlc2l6ZWQgYnkgdGhlCi0gICAgaW1wbGVtZW50YXRpb24gd2hlbiB0aGUgbmF0aXZlIHdpbmRv
dyBpcyByZXNpemVkLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMKLSAgICBFR0xfRkFMU0UuICBJdHMg
dmFsdWUgY2FuIGJlIEVHTF9UUlVFLCBpbiB3aGljaCBjYXNlIHRoZSBzaXplIG11c3QgYmUKLSAg
ICBzcGVjaWZpZWQgd2hlbiB0aGUgd2luZG93IGlzIGNyZWF0ZWQsIG9yIEVHTF9GQUxTRSwgaW4g
d2hpY2ggY2FzZSB0aGUgc2l6ZQotICAgIGlzIHRha2VuIGZyb20gdGhlIG5hdGl2ZSB3aW5kb3cu
IEl0cyBkZWZhdWx0IHZhbHVlIGlzIEVHTF9GQUxTRS4KLQotICAgIElmIHRoZSB2YWx1ZSBvZiBF
R0xfRklYRURfU0laRV9BTkdMRSBpcyBFR0xfVFJVRSwgdGhlIHdpbmRvdyBzdXJmYWNlJ3MKLSAg
ICBzaXplIGluIHBpeGVscyBpcyBzcGVjaWZpZWQgYnkgdGhlIEVHTF9XSURUSCBhbmQgRUdMX0hF
SUdIVCBhdHRyaWJ1dGVzLAotICAgIGFuZCB3aWxsIG5vdCBjaGFuZ2UgdGhyb3VnaG91dCB0aGUg
bGlmZXRpbWUgb2YgdGhlIHN1cmZhY2UuIElmIGl0cyB2YWx1ZQotICAgIGlzIEVHTF9GQUxTRSwg
dGhlbiB0aGUgdmFsdWVzIG9mIEVHTF9XSURUSCBhbmQgRUdMX0hFSUdIVCBhcmUgaWdub3JlZCBh
bmQKLSAgICB0aGUgd2luZG93IHN1cmZhY2UgbXVzdCBiZSByZXNpemVkIGJ5IHRoZSBpbXBsZW1l
bnRhdGlvbiBzdWJzZXF1ZW50IHRvIHRoZQotICAgIG5hdGl2ZSB3aW5kb3cgYmVpbmcgcmVzaXpl
ZCwgYW5kIHByaW9yIHRvIGNvcHlpbmcgaXRzIGNvbnRlbnRzIHRvIHRoZQotICAgIG5hdGl2ZSB3
aW5kb3cgKGUuZy4gaW4gZWdsU3dhcEJ1ZmZlcnMsIGFzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMu
OS4xLjEpLgotICAgIFRoZSBkZWZhdWx0IHZhbHVlcyBmb3IgRUdMX1dJRFRIIGFuZCBFR0xfSEVJ
R0hUIGFyZSB6ZXJvLiBJZiB0aGUgdmFsdWUKLSAgICBzcGVjaWZpZWQgZm9yIGVpdGhlciBvZiBF
R0xfV0lEVEggb3IgRUdMX0hFSUdIVCBpcyBsZXNzIHRoYW4gemVybyB0aGVuIGFuCi0gICAgRUdM
X0JBRF9QQVJBTUVURVIgZXJyb3IgaXMgZ2VuZXJhdGVkLiIKLQotICAgIEFkZCB0aGUgZm9sbG93
aW5nIGVudHJ5IHRvIFRhYmxlIDMuNQotICAgIChRdWVyeWFibGUgc3VyZmFjZSBhdHRyaWJ1dGVz
IGFuZCB0eXBlcykKLQotICAgIEF0dHJpYnV0ZSAgICAgICAgICAgIFR5cGUgICAgRGVzY3JpcHRp
b24KLSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIEVHTF9GSVhFRF9TSVpFX0FOR0xFIGJvb2xl
YW4gU3VyZmFjZSB3aWxsIG5vdCBiZSByZXNpemVkIHdpdGggYSBuYXRpdmUKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdwotCi0gICAgUmVwbGFjZSB0aGUgbGFzdCBwYXJh
Z3JhcGggb24gcGFnZSAzNyBpbiBTZWN0aW9uIDMuNS42IChTdXJmYWNlIEF0dHJpYnV0ZXMpCi0K
LSAgICAiUXVlcnlpbmcgRUdMX1dJRFRIIGFuZCBFR0xfSEVJR0hUIHJldHVybnMgcmVzcGVjdGl2
ZWx5IHRoZSB3aWR0aCBhbmQKLSAgICBoZWlnaHQsIGluIHBpeGVscywgb2YgdGhlIHN1cmZhY2Uu
IEZvciBhIHBpeG1hcCBzdXJmYWNlIG9yIHdpbmRvdyBzdXJmYWNlCi0gICAgd2l0aCBFR0xfRklY
RURfU0laRV9BTkdMRSBzZXQgdG8gRUdMX0ZBTFNFLCB0aGVzZSB2YWx1ZXMgYXJlIGluaXRpYWxs
eQotICAgIGVxdWFsIHRvIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSBuYXRpdmUgd2luZG93
IG9yIHBpeG1hcCB3aXRoIHJlc3BlY3QKLSAgICB0byB3aGljaCB0aGUgc3VyZmFjZSB3YXMgY3Jl
YXRlZC4gSWYgdGhlIG5hdGl2ZSB3aW5kb3cgaXMgcmVzaXplZCBhbmQgdGhlCi0gICAgY29ycmVz
cG9uZGluZyB3aW5kb3cgc3VyZmFjZSBpcyBub3QgZml4ZWQgc2l6ZSwgdGhlIGNvcnJlc3BvbmRp
bmcgd2luZG93Ci0gICAgc3VyZmFjZSB3aWxsIGV2ZW50dWFsbHkgYmUgcmVzaXplZCBieSB0aGUg
aW1wbGVtZW50YXRpb24gdG8gbWF0Y2ggKGFzCi0gICAgZGlzY3Vzc2VkIGluIHNlY3Rpb24gMy45
LjEpLiBJZiB0aGVyZSBpcyBhIGRpc2NyZXBhbmN5IGJlY2F1c2UgRUdMIGhhcyBub3QKLSAgICB5
ZXQgcmVzaXplZCB0aGUgd2luZG93IHN1cmZhY2UsIHRoZSBzaXplIHJldHVybmVkIGJ5IGVnbFF1
ZXJ5U3VyZmFjZSB3aWxsCi0gICAgYWx3YXlzIGJlIHRoYXQgb2YgdGhlIEVHTCBzdXJmYWNlLCBu
b3QgdGhlIGNvcnJlc3BvbmRpbmcgbmF0aXZlIHdpbmRvdy4iCi0KLSAgICBBZGQgdGhlIGZvbGxv
d2luZyBwYXJhZ3JhcGggdG8gU2VjdGlvbiAzLjUuNiAoU3VyZmFjZSBBdHRyaWJ1dGVzKQotCi0g
ICAgIlF1ZXJ5aW5nIEVHTF9GSVhFRF9TSVpFX0FOR0xFIHJldHVybnMgRUdMX0ZBTFNFIGlmIHRo
ZSBzdXJmYWNlIHdpbGwgYmUKLSAgICByZXNpemVkIHRvIG1hdGNoIGEgbmF0aXZlIHdpbmRvdywg
YW5kIEVHTF9UUlVFIGlmIHRoZSBzdXJmYWNlIGNhbm5vdCBiZQotICAgIHJlc2l6ZWQuIgotCi0g
ICAgQWx0ZXIgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlyc3QgcGFyYWdyYXBoIG9mIFNlY3Rpb24g
My45LjEuMSAoTmF0aXZlCi0gICAgV2luZG93IFJlc2l6aW5nKQotCi0gICAgIklmIDxzdXJmYWNl
PiBkb2VzIG5vdCBoYXZlIEVHTF9GSVhFRF9TSVpFX0FOR0xFIHNldCBhbmQgdGhlIG5hdGl2ZSB3
aW5kb3cKLSAgICBjb3JyZXNwb25kaW5nIHRvIDxzdXJmYWNlPiBoYXMgYmVlbiByZXNpemVkIHBy
aW9yIHRvIHRoZSBzd2FwLCA8c3VyZmFjZT4KLSAgICBtdXN0IGJlIHJlc2l6ZWQgdG8gbWF0Y2gu
IgotCi1Jc3N1ZXMKLQotICAgIDEuIFNob3VsZCB0aGVyZSBiZSBhIHdheSB0byByZXNpemUgYSB3
aW5kb3cgc3VyZmFjZSB0aGF0IGhhZCBpdHMgc2l6ZQotICAgIHNwZWNpZmllZCBpbml0aWFsbHku
Ci0KLSAgICBSRVNPTFZFRDogTm8uIFN1cmZhY2VzIHRoYXQgaGF2ZSB0aGVpciBzaXplcyBzcGVj
aWZpZWQgaW5pdGlhbGx5IG11c3QgaGF2ZQotICAgIEVHTF9GSVhFRF9TSVpFX0FOR0xFIHNldCBh
bmQgY2FuIG5ldmVyIGJlIHJlc2l6ZWQuCi0KLVJldmlzaW9uIEhpc3RvcnkKLQotICAgIFZlcnNp
b24gNCwgMjAxNC8wMi8yNCAtIGZvcm1hdHRpbmcgY2hhbmdlcy4KLQotICAgIFZlcnNpb24gMywg
MjAxNC8wMi8xMiAtIGlnbm9yZSBFR0xfV0lEVEggYW5kIEVHTF9IRUlHSFQgaWYKLSAgICBFR0xf
RklYRURfU0laRV9BTkdMRSBpcyBFR0xfRkFMU0UKLQotICAgIFZlcnNpb24gMiwgMjAxNC8wMi8w
NyAtIHJlbmFtZSB0byBFR0xfQU5HTEVfd2luZG93X2ZpeGVkX3NpemUsIGFuZCBhZGQgYW4KLSAg
ICBFR0xfRklYRURfU0laRV9BTkdMRSB0b2tlbi4KLQotICAgIFZlcnNpb24gMSwgMjAxNC8wMi8w
NSAtIGZpcnN0IGRyYWZ0LgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9u
cy9FR0xfRVhUX2NyZWF0ZV9jb250ZXh0X3JvYnVzdG5lc3MudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRUdMX0VYVF9jcmVhdGVfY29udGV4dF9y
b2J1c3RuZXNzLnR4dAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvZXh0ZW5zaW9ucy9FR0xfRVhUX2NyZWF0ZV9jb250ZXh0X3JvYnVzdG5lc3MudHh0CShub25l
eGlzdGVudCkKQEAgLTEsMTY5ICswLDAgQEAKLU5hbWUKLQotICAgIEVYVF9jcmVhdGVfY29udGV4
dF9yb2J1c3RuZXNzCi0KLU5hbWUgU3RyaW5ncwotCi0gICAgRUdMX0VYVF9jcmVhdGVfY29udGV4
dF9yb2J1c3RuZXNzCi0KLUNvbnRyaWJ1dG9ycwotCi0gICAgRGFuaWVsIEtvY2gsIFRyYW5zR2Ft
aW5nCi0gICAgQ29udHJpYnV0b3JzIHRvIEVHTF9LSFJfY3JlYXRlX2NvbnRleHQKLQotQ29udGFj
dAotCi0gICAgR3JlZyBSb3RoIChncm90aCAnYXQnIG52aWRpYS5jb20pCi0KLVN0YXR1cwotCi0g
ICAgQ29tcGxldGUuCi0KLVZlcnNpb24KLQotICAgIFZlcnNpb24gMywgMjAxMS8xMC8zMQotCi1O
dW1iZXIKLQotICAgIEVHTCBFeHRlbnNpb24gIzM3Ci0KLURlcGVuZGVuY2llcwotCi0gICAgUmVx
dWlyZXMgRUdMIDEuNAotCi0gICAgV3JpdHRlbiBhZ2FpbnN0IHRoZSBFR0wgMS40IHNwZWNpZmlj
YXRpb24uCi0KLSAgICBBbiBPcGVuR0wgaW1wbGVtZW50YXRpb24gc3VwcG9ydGluZyBHTF9BUkJf
cm9idXN0bmVzcywgYW4gT3BlbkdMIEVTCi0gICAgaW1wbGVtZW50YXRpb24gc3VwcG9ydGluZyBH
TF9FWFRfcm9idXN0bmVzcywgb3IgYW4gaW1wbGVtZW50YXRpb24KLSAgICBzdXBwb3J0aW5nIGVx
dWl2YWxlbnQgZnVuY3Rpb25hbGl0eSBpcyByZXF1aXJlZC4KLQotT3ZlcnZpZXcKLQotICAgIFRo
aXMgZXh0ZW5zaW9uIGFsbG93cyBjcmVhdGluZyBhbiBPcGVuR0wgb3IgT3BlbkdMIEVTIGNvbnRl
eHQKLSAgICBzdXBwb3J0aW5nIHJvYnVzdCBidWZmZXIgYWNjZXNzIGJlaGF2aW9yIGFuZCBhIHNw
ZWNpZmllZCBncmFwaGljcwotICAgIHJlc2V0IG5vdGlmaWNhdGlvbiBiZWhhdmlvci4KLQotTmV3
IFByb2NlZHVyZXMgYW5kIEZ1bmN0aW9ucwotCi0gICAgTm9uZQotCi1OZXcgVG9rZW5zCi0KLSAg
ICBBY2NlcHRlZCBhcyBhbiBhdHRyaWJ1dGUgbmFtZSBpbiB0aGUgPCphdHRyaWJfbGlzdD4gYXJn
dW1lbnQgdG8KLSAgICBlZ2xDcmVhdGVDb250ZXh0OgotCi0gICAgICAgIEVHTF9DT05URVhUX09Q
RU5HTF9ST0JVU1RfQUNDRVNTX0VYVCAgICAweDMwQkYKLSAgICAgICAgRUdMX0NPTlRFWFRfT1BF
TkdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWV9FWFQgIDB4MzEzOAotCi0gICAgQWNjZXB0
ZWQgYXMgYW4gYXR0cmlidXRlIHZhbHVlIGZvciBFR0xfQ09OVEVYVF9SRVNFVF9OT1RJRklDQVRJ
T05fLQotICAgIFNUUkFURUdZX0VYVCBpbiB0aGUgPCphdHRyaWJfbGlzdD4gYXJndW1lbnQgdG8g
ZWdsQ3JlYXRlQ29udGV4dDoKLQotICAgICAgICBFR0xfTk9fUkVTRVRfTk9USUZJQ0FUSU9OX0VY
VCAgICAgICAgICAgMHgzMUJFCi0gICAgICAgIEVHTF9MT1NFX0NPTlRFWFRfT05fUkVTRVRfRVhU
ICAgICAgICAgICAweDMxQkYKLQotQWRkaXRpb25zIHRvIHRoZSBFR0wgMS40IFNwZWNpZmljYXRp
b24KLQotICAgIFJlcGxhY2Ugc2VjdGlvbiAzLjcuMSAiQ3JlYXRpbmcgUmVuZGVyaW5nIENvbnRl
eHRzIiBmcm9tIHRoZQotICAgIGZpZnRoIHBhcmFncmFwaCB0aHJvdWdoIHRoZSBzZXZlbnRoIHBh
cmFncmFwaDoKLQotICAgIDxhdHRyaWJfbGlzdD4gc3BlY2lmaWVzIGEgbGlzdCBvZiBhdHRyaWJ1
dGVzIGZvciB0aGUgY29udGV4dC4gVGhlCi0gICAgbGlzdCBoYXMgdGhlIHNhbWUgc3RydWN0dXJl
IGFzIGRlc2NyaWJlZCBmb3IgZWdsQ2hvb3NlQ29uZmlnLiBJZiBhbgotICAgIGF0dHJpYnV0ZSBp
cyBub3Qgc3BlY2lmaWVkIGluIDxhdHRyaWJfbGlzdD4sIHRoZW4gdGhlIGRlZmF1bHQgdmFsdWUK
LSAgICBzcGVjaWZpZWQgYmVsb3cgaXMgdXNlZCBpbnN0ZWFkLiA8YXR0cmliX2xpc3Q+IG1heSBi
ZSBOVUxMIG9yIGVtcHR5Ci0gICAgKGZpcnN0IGF0dHJpYnV0ZSBpcyBFR0xfTk9ORSksIGluIHdo
aWNoIGNhc2UgYXR0cmlidXRlcyBhc3N1bWUgdGhlaXIKLSAgICBkZWZhdWx0IHZhbHVlcyBhcyBk
ZXNjcmliZWQgYmVsb3cuIE1vc3QgYXR0cmlidXRlcyBhcmUgb25seSBtZWFuaW5nZnVsCi0gICAg
Zm9yIHNwZWNpZmljIGNsaWVudCBBUElzLCBhbmQgd2lsbCBnZW5lcmF0ZSBhbiBFR0xfQkFEX0FU
VFJJQlVURQotICAgIGVycm9yIHdoZW4gc3BlY2lmaWVkIHRvIGNyZWF0ZSBmb3IgYW5vdGhlciBj
bGllbnQgQVBJIGNvbnRleHQuCi0KLSAgICBDb250ZXh0IFZlcnNpb25zCi0gICAgLS0tLS0tLS0t
LS0tLS0tLQotCi0gICAgRUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04gZGV0ZXJtaW5lcyB3aGlj
aCB2ZXJzaW9uIG9mIGFuIE9wZW5HTCBFUwotICAgIGNvbnRleHQgdG8gY3JlYXRlLiBUaGlzIGF0
dHJpYnV0ZSBtYXkgb25seSBiZSBzcGVjaWZpZWQgd2hlbiBjcmVhdGluZwotICAgIGFuIE9wZW5H
TCBFUyBjb250ZXh0IChlLmcuIHdoZW4gdGhlIGN1cnJlbnQgcmVuZGVyaW5nIEFQSSBpcwotICAg
IEVHTF9PUEVOR0xfRVNfQVBJKS4gQW4gYXR0cmlidXRlIHZhbHVlIG9mIDEgc3BlY2lmaWVzIGNy
ZWF0aW9uIG9mIGFuCi0gICAgT3BlbkdMIEVTIDEueCBjb250ZXh0LiAgQW4gYXR0cmlidXRlIHZh
bHVlIG9mIDIgc3BlY2lmaWVzIGNyZWF0aW9uIG9mIGFuCi0gICAgT3BlbiBHTCBFUyAyLnggY29u
dGV4dC4gVGhlIGRlZmF1bHQgdmFsdWUgZm9yIEVHTF9DT05URVhUX0NMSUVOVF9WRVJTSU9OCi0g
ICAgaXMgMS4KLQotICAgIENvbnRleHQgUm9idXN0IEFjY2VzcwotICAgIC0tLS0tLS0tLS0tLS0K
LQotICAgIEVHTF9DT05URVhUX09QRU5HTF9ST0JVU1RfQUNDRVNTX0VYVCBpbmRpY2F0ZXMgd2hl
dGhlciA8cm9idXN0IGJ1ZmZlcgotICAgIGFjY2Vzcz4gc2hvdWxkIGJlIGVuYWJsZWQgZm9yIHRo
ZSBPcGVuR0wgRVMgY29udGV4dC4gUm9idXN0IGJ1ZmZlcgotICAgIGFjY2VzcyBpcyBkZWZpbmVk
IGluIHRoZSBHTF9FWFRfcm9idXN0bmVzcyBleHRlbnNpb24gc3BlY2lmaWNhdGlvbiwKLSAgICBh
bmQgdGhlIHJlc3VsdGluZyBjb250ZXh0IG11c3Qgc3VwcG9ydCBHTF9FWFRfcm9idXN0bmVzcyBh
bmQgcm9idXN0Ci0gICAgYnVmZmVyIGFjY2VzcyBhcyBkZXNjcmliZWQgdGhlcmVpbi4gVGhlIGRl
ZmF1bHQgdmFsdWUgb2YKLSAgICBFR0xfQ09OVEVYVF9PUEVOR0xfUk9CVVNUX0FDQ0VTU19FWFQg
aXMgRUdMX0ZBTFNFLgotCi0gICAgQ29udGV4dCBSZXNldCBOb3RpZmljYXRpb24KLSAgICAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgVGhlIGF0dHJpYnV0ZSBuYW1lIEVHTF9DT05U
RVhUX09QRU5HTF9SRVNFVF9OT1RJRklDQVRJT05fU1RSQVRFR1lfLQotICAgIEVYVCBzcGVjaWZp
ZXMgdGhlIDxyZXNldCBub3RpZmljYXRpb24gYmVoYXZpb3I+IG9mIHRoZSByZW5kZXJpbmcKLSAg
ICBjb250ZXh0LiBUaGlzIGF0dHJpYnV0ZSBpcyBvbmx5IG1lYW5pbmdmdWwgZm9yIE9wZW5HTCBF
UyBjb250ZXh0cywKLSAgICBhbmQgc3BlY2lmeWluZyBpdCBmb3Igb3RoZXIgdHlwZXMgb2YgY29u
dGV4dHMgd2lsbCBnZW5lcmF0ZSBhbgotICAgIEVHTF9CQURfQVRUUklCVVRFIGVycm9yLgotCi0g
ICAgUmVzZXQgbm90aWZpY2F0aW9uIGJlaGF2aW9yIGlzIGRlZmluZWQgaW4gdGhlIEdMX0VYVF9y
b2J1c3RuZXNzCi0gICAgZXh0ZW5zaW9uIGZvciBPcGVuR0wgRVMsIGFuZCB0aGUgcmVzdWx0aW5n
IGNvbnRleHQgbXVzdCBzdXBwb3J0Ci0gICAgR0xfRVhUX3JvYnVzdG5lc3MgYW5kIHRoZSBzcGVj
aWZpZWQgcmVzZXQgc3RyYXRlZ3kuIFRoZSBhdHRyaWJ1dGUKLSAgICB2YWx1ZSBtYXkgYmUgZWl0
aGVyIEVHTF9OT19SRVNFVF9OT1RJRklDQVRJT05fRVhUIG9yIEVHTF9MT1NFXy0KLSAgICBDT05U
RVhUX09OX1JFU0VUX0VYVCwgd2hpY2ggcmVzcGVjdGl2ZWx5IHJlc3VsdCBpbiBkaXNhYmxpbmcK
LSAgICBkZWxpdmVyeSBvZiByZXNldCBub3RpZmljYXRpb25zIG9yIHRoZSBsb3NzIG9mIGFsbCBj
b250ZXh0IHN0YXRlCi0gICAgdXBvbiByZXNldCBub3RpZmljYXRpb24gYXMgZGVzY3JpYmVkIGJ5
IHRoZSBHTF9FWFRfcm9idXN0bmVzcy4gVGhlCi0gICAgZGVmYXVsdCB2YWx1ZSBmb3IgRUdMX0NP
TlRFWFRfT1BFTkdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWV9FWFQKLSAgICBpcyBFR0xf
Tk9fUkVTRVRfTk9USUZJQ0FUSU9OX0VYVC4KLSAgICAKLSAgICBBZGQgdG8gdGhlIGVnbENyZWF0
ZUNvbnRleHQgY29udGV4dCBjcmVhdGlvbiBlcnJvcnM6Ci0KLSAgICAqIElmIDxjb25maWc+IGRv
ZXMgbm90IHN1cHBvcnQgYSBjbGllbnQgQVBJIGNvbnRleHQgY29tcGF0aWJsZQotICAgICAgd2l0
aCB0aGUgcmVxdWVzdGVkIGNvbnRleHQgZmxhZ3MgYW5kIGNvbnRleHQgcmVzZXQgbm90aWZpY2F0
aW9uCi0gICAgICBiZWhhdmlvciAoZm9yIGNsaWVudCBBUEkgdHlwZXMgd2hlcmUgdGhlc2UgYXR0
cmlidXRlcyBhcmUKLSAgICAgIHN1cHBvcnRlZCksIHRoZW4gYW4gRUdMX0JBRF9DT05GSUcgZXJy
b3IgaXMgZ2VuZXJhdGVkLgotCi0gICAgKiBJZiB0aGUgcmVzZXQgbm90aWZpY2F0aW9uIGJlaGF2
aW9yIG9mIDxzaGFyZV9jb250ZXh0PiBhbmQgdGhlCi0gICAgICBuZXdseSBjcmVhdGVkIGNvbnRl
eHQgYXJlIGRpZmZlcmVudCB0aGVuIGFuIEVHTF9CQURfTUFUQ0ggZXJyb3IgaXMKLSAgICAgIGdl
bmVyYXRlZC4KLQotCi1FcnJvcnMKLQotICAgIEVHTF9CQURfQ09ORklHIGlzIGdlbmVyYXRlZCBp
ZiBFR0xfQ09OVEVYVF9PUEVOR0xfUk9CVVNUX0FDQ0VTU18tCi0gICAgRVhUIGlzIHNldCB0byBF
R0xfVFJVRSBhbmQgbm8gR0wgY29udGV4dCBzdXBwb3J0aW5nIHRoZSBHTF9FWFRfLQotICAgIHJv
YnVzdG5lc3MgZXh0ZW5zaW9uIGFuZCByb2J1c3QgYWNjZXNzIGFzIGRlc2NyaWJlZCB0aGVyZWlu
IGNhbiBiZQotICAgIGNyZWF0ZWQuCi0KLSAgICBFR0xfQkFEX0NPTkZJRyBpcyBnZW5lcmF0ZWQg
aWYgbm8gR0wgY29udGV4dCBzdXBwb3J0aW5nIHRoZQotICAgIEdMX0VYVF9yb2J1c3RuZXNzIGV4
dGVuc2lvbiBhbmQgdGhlIHNwZWNpZmllZCByZXNldCBub3RpZmljYXRpb24KLSAgICBiZWhhdmlv
ciAodGhlIHZhbHVlIG9mIGF0dHJpYnV0ZSBFR0xfQ09OVEVYVF9SRVNFVF9OT1RJRklDQVRJT05f
LQotICAgIFNUUkFURUdZX0VYVCkgY2FuIGJlIGNyZWF0ZWQuCi0KLSAgICBCQURfTUFUQ0ggaXMg
Z2VuZXJhdGVkIGlmIHRoZSByZXNldCBub3RpZmljYXRpb24gYmVoYXZpb3Igb2YKLSAgICA8c2hh
cmVfY29udGV4dD4gZG9lcyBub3QgbWF0Y2ggdGhlIHJlc2V0IG5vdGlmaWNhdGlvbiBiZWhhdmlv
ciBvZgotICAgIHRoZSBjb250ZXh0IGJlaW5nIGNyZWF0ZWQuCi0KLU5ldyBTdGF0ZQotCi0gICAg
Tm9uZQotCi1Db25mb3JtYW5jZSBUZXN0cwotCi0gICAgVEJECi0KLVNhbXBsZSBDb2RlCi0KLSAg
ICBUQkQKLQotSXNzdWVzCi0KLSAgICBOb25lCi0KLVJldmlzaW9uIEhpc3RvcnkKLQotICAgIFJl
di4gICAgRGF0ZSAgICAgICBBdXRob3IgICAgIENoYW5nZXMKLSAgICAtLS0tICAtLS0tLS0tLS0t
LS0gLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0g
ICAgICAzICAgMzEgT2N0ICAyMDExIGdyb3RoICAgICAgUmV2ZXJ0ZWQgdG8gYXR0cmlidXRlIGZv
ciByb2J1c3QgYWNjZXNzLiBOb3cgaXQncyBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29tcGFuaW9uIHRvIHJhdGhlciB0aGFuIHN1YnNldCBvZiBLSFJfY3JlYXRlX2NvbnRl
eHQKLSAgICAgIDIgICAxMSBPY3QgIDIwMTEgZ3JvdGggICAgICBNZXJnZWQgQU5HTEUgYW5kIE5W
IGV4dGVuc2lvbnMuCi0gICAgICAxICAgMTUgSnVseSAyMDExIGdyb3RoICAgICAgSW5pdGlhbCB2
ZXJzaW9uCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VHTF9FWFRf
ZGV2aWNlX3F1ZXJ5LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9l
eHRlbnNpb25zL0VHTF9FWFRfZGV2aWNlX3F1ZXJ5LnR4dAkocmV2aXNpb24gMjA3ODA0KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FR0xfRVhUX2RldmljZV9xdWVyeS50
eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwxODggKzAsMCBAQAotTmFtZQotCi0gICAgRVhUX2Rldmlj
ZV9xdWVyeQotCi1OYW1lIFN0cmluZ3MKLQotICAgIEVHTF9FWFRfZGV2aWNlX3F1ZXJ5Ci0KLUNv
bnRyaWJ1dG9ycwotCi0gICAgSmFtZXMgSm9uZXMsIE5WSURJQSAgKGpham9uZXMgJ2F0JyBudmlk
aWEuY29tKQotICAgIEphbWllIE1hZGlsbCwgR29vZ2xlICAoam1hZGlsbCAnYXQnIGdvb2dsZS5j
b20pCi0KLUNvbnRhY3RzCi0KLSAgICBKYW1pZSBNYWRpbGwsIEdvb2dsZSAgKGptYWRpbGwgJ2F0
JyBnb29nbGUuY29tKQotCi1TdGF0dXMKLQotICAgIERyYWZ0Ci0KLVZlcnNpb24KLQotICAgIFZl
cnNpb24gMSAtIE1hciAyNXJkLCAyMDE1Ci0KLU51bWJlcgotCi0gICAgRUdMIEV4dGVuc2lvbiAj
WFhYCi0KLUV4dGVuc2lvbiBUeXBlCi0KLSAgICBFR0wgY2xpZW50IGV4dGVuc2lvbgotCi1EZXBl
bmRlbmNpZXMKLQotICAgIFdyaXR0ZW4gYWdhaW5zdCB0aGUgd29yZGluZyBvZiBFR0wgMS41Lgot
Ci0gICAgUmVxdWlyZXMgRUdMIDEuNSBvciBhbiBlYXJsaWVyIHZlcmlzb24gb2YgRUdMIHdpdGgg
dGhlCi0gICAgRUdMX0VYVF9jbGllbnRfZXh0ZW5zaW9ucyBleHRlbnNpb24uCi0KLU92ZXJ2aWV3
Ci0KLSAgICBJbmNyZWFzaW5nbHksIEVHTCBhbmQgaXRzIGNsaWVudCBBUElzIGFyZSBiZWluZyB1
c2VkIGluIHBsYWNlIG9mCi0gICAgIm5hdGl2ZSIgcmVuZGVyaW5nIEFQSXMgdG8gaW1wbGVtZW50
IHRoZSBiYXNpYyBncmFwaGljcwotICAgIGZ1bmN0aW9uYWxpdHkgb2YgbmF0aXZlIHdpbmRvd2lu
ZyBzeXN0ZW1zLiAgVGhpcyBjcmVhdGVzIGRlbWFuZAotICAgIGZvciBhIG1ldGhvZCB0byBhY2Nl
c3MgbmF0aXZlIEdQVSBvciBkZXZpY2Ugb2JqZWN0cyBkaXJlY3RseQotICAgIHJhdGhlciB0aGFu
IGNhbGxpbmcgRUdMIG9yIEdMIGVudHJ5IHBvaW50cy4KLQotICAgIFRoaXMgZXh0ZW5zaW9uIGRl
ZmluZXMgdGhlIG1ldGhvZCBmb3IgYW4gYXBwbGljYXRpb24gdG8gcXVlcnkKLSAgICBuYXRpdmUg
ZGV2aWNlIG9iamVjdHMgZnJvbSBhbiBFR0wgRGlzcGxheS4KLQotTmV3IFR5cGVzCi0KLSAgICBU
aGlzIGlzIHRoZSB0eXBlIG9mIGEgaGFuZGxlIHRoYXQgcmVwcmVzZW50cyBhbiBFR0xEZXZpY2VF
WFQKLSAgICBvYmplY3QuCi0KLSAgICAgICAgdHlwZWRlZiB2b2lkKiBFR0xEZXZpY2VFWFQ7Ci0K
LSAgICBJZiBFR0wgMS41IGlzIG5vdCBzdXBwb3J0ZWQsIHRoZSBmb2xsb3dpbmcgdHlwZSBpcyBh
ZGRlZCwgYXMKLSAgICBkZWZpbmVkIGluIHRoZSBFR0wgMS41IHNwZWNpZmljYXRpb246Ci0KLSAg
ICAgICAgdHlwZWRlZiBpbnRwdHJfdCBFR0xBdHRyaWI7Ci0KLU5ldyBGdW5jdGlvbnMKLQotICAg
IEVHTEJvb2xlYW4gZWdsUXVlcnlEZXZpY2VBdHRyaWJFWFQoRUdMRGV2aWNlRVhUIGRldmljZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBhdHRyaWJ1dGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xBdHRyaWIgKnZhbHVl
KTsKLQotICAgIGNvbnN0IGNoYXIgKmVnbFF1ZXJ5RGV2aWNlU3RyaW5nRVhUKEVHTERldmljZUVY
VCBkZXZpY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50
IG5hbWUpOwotCi0gICAgRUdMQm9vbGVhbiBlZ2xRdWVyeURpc3BsYXlBdHRyaWJFWFQoRUdMRGlz
cGxheSBkcHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50
IGF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xB
dHRyaWIgKnZhbHVlKTsKLQotTmV3IFRva2VucwotCi0gICAgRnVuY3Rpb25zIHdpdGggYSByZXR1
cm4gdHlwZSBvZiBFR0xEZXZpY2VFWFQgd2lsbCByZXR1cm4gdGhpcwotICAgIHZhbHVlIG9uIGZh
aWx1cmU6Ci0KLSAgICAgICAgRUdMX05PX0RFVklDRV9FWFQgICAgICAgICAgICAgICAgICAgICAg
KChFR0xEZXZpY2VFWFQpMCkKLQotICAgIFRoaXMgZXJyb3IgdmFsdWUgd2lsbCBiZSBnZW5lcmF0
ZWQgYnkgZnVuY3Rpb25zIHRoYXQgdGFrZSBhbgotICAgIEVHTERldmljZUVYVCBvYmplY3QgYXMg
YSBwYXJhbWV0ZXI6Ci0KLSAgICAgICAgRUdMX0JBRF9ERVZJQ0VfRVhUICAgICAgICAgICAgICAg
ICAgICAgMHgzMjJCCi0KLSAgICBBY2NlcHRlZCBieSB0aGUgPGF0dHJpYnV0ZT4gcGFyYW1ldGVy
IG9mCi0gICAgZWdsUXVlcnlEaXNwbGF5QXR0cmliRVhUOgotCi0gICAgICAgIEVHTF9ERVZJQ0Vf
RVhUICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzIyQwotCi1BZGQgYSBuZXcgc2VjdGlvbiAi
Mi4xLjIgRGV2aWNlcyIgYWZ0ZXIgIjIuMS4xIFNjYWxhciBUeXBlcyIKLQotICAgIEFsbCBFR0wg
b3BlcmF0aW9ucyBvY2N1ciBvbiBhbiBFR0xEZXZpY2VFWFQuICBIb3dldmVyLCBkZXZpY2VzCi0g
ICAgdGhlbXNlbHZlcyBleHBvc2Ugbm8gZnVuY3Rpb25hbGl0eS4gIFRoZXkgYXJlIHNpbXBsZSBh
YnN0cmFjdAotICAgIG9iamVjdHMgdGhhdCBleGlzdCBvbmx5IGZvciB0aGUgc2FrZSBvZiBlbnVt
ZXJhdGlvbiBhbmQKLSAgICBkZWZpbmluZyBhIG5hbWVzcGFjZS4KLQotTW9kaWZ5IHRoZSBsYXN0
IHNlbnRlbmNlIG9mIHNlY3Rpb24gIjIuMS4zIiBEaXNwbGF5cyIgdG8gcmVhZDoKLQotICAgIEJl
c2lkZXMgZGV2aWNlcywgb2JqZWN0cyBhcmUgYWx3YXlzIHNwZWNpZmllZCBieSB0aGUgY29tYmlu
YXRpb24KLSAgICBvZiBhbiBFR0xEaXNwbGF5IHBhcmFtZXRlciB3aXRoIGEgcGFyYW1ldGVyIHJl
cHJlc2VudGluZyB0aGUKLSAgICBoYW5kbGUgb2YgdGhlIG9iamVjdC4KLQotQWRkIGEgbmV3IGV4
dGVuc2lvbiB0eXBlIHRvIHRoZSBsaXN0IGluIHNlY3Rpb24gIjIuOCBFeHRlbnNpb25zIgotCi0g
ICAgRGV2aWNlIEV4dGVuc2lvbnMKLSAgICAgICAgQSAqZGV2aWNlIGV4dGVuc2lvbiogYWRkcyBm
dW5jdGlvbmFsaXR5IHRvIGFuIGluZGl2aWR1YWwKLSAgICAgICAgRUdMRGV2aWNlRVhULiAgRGlm
ZmVyZW50IGluc3RhbmNlcyBvZiBFR0xEZXZpY2VFWFQgbWF5IHN1cHBvcnQKLSAgICAgICAgZGlm
ZmVyZW50IHNldHMgb2YgZGV2aWNlIGV4dGVuc2lvbnMKLQotQWRkIGEgbmV3IGVycm9yIHRvIHNl
Y3Rpb24gIjMuMSBFcnJvcnMiCi0KLSAgICBFR0xfQkFEX0RFVklDRV9FWFQKLSAgICAgICAgQW4g
RUdMRGV2aWNlRVhUIGFyZ3VtZW50IGRvZXMgbm90IHJlZmVyIHRvIGEgdmFsaWQKLSAgICAgICAg
RUdMRGV2aWNlRVhULiAgQW55IGNvbW1hbmQgdGFraW5nIGFuIEVHTERldmljZUVYVCBwYXJhbWV0
ZXIKLSAgICAgICAgbWF5IGdlbmVyYXRlIHRoaXMgZXJyb3IuCi0KLUFkZCBhIHNlY3Rpb24gIjMu
MiBEZXZpY2VzIiBhZnRlciAiMy4xIEVycm9ycyIKLQotICAgIFRvIHF1ZXJ5IHRoZSBwcm9wZXJ0
aWVzIG9mIGEgZGV2aWNlLCB1c2U6Ci0KLSAgICAgICAgRUdMQm9vbGVhbiBlZ2xRdWVyeURldmlj
ZUF0dHJpYkVYVChFR0xEZXZpY2VFWFQgZGV2aWNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVHTGludCBhdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRUdMQXR0cmliICp2YWx1ZSk7Ci0KLSAgICBPbiBzdWNj
ZXNzLCBFR0xfVFJVRSBpcyByZXR1cm5lZCBhbmQgdGhlIHJlcXVlc3RlZCBhdHRyaWJ1dGUgdmFs
dWUKLSAgICBpcyByZXR1cm5lZCBpbiA8dmFsdWU+LiAgQ3VycmVudGx5IHRoZXJlIGFyZSBubyB2
YWxpZCB2YWx1ZXMgb2YKLSAgICA8YXR0cmlidXRlPiBkZWZpbmVkLgotCi0gICAgT24gZmFpbHVy
ZSwgRUdMX0ZBTFNFIGlzIHJldHVybmVkLiAgQW4gRUdMX0JBRF9BVFRSSUJVVEUgZXJyb3IgaXMK
LSAgICBnZW5lcmF0ZWQgaWYgPGF0dHJpYnV0ZT4gaXMgbm90IGEgdmFsaWQgYXR0cmlidXRlLiAg
QW4KLSAgICBFR0xfQkFEX0RFVklDRV9FWFQgZXJyb3IgaXMgZ2VuZXJhdGVkIGlmIDxkZXZpY2U+
IGlzIG5vdCBhIHZhbGlkCi0gICAgRUdMRGV2aWNlRVhULgotCi0gICAgICAgIGNvbnN0IGNoYXIg
KmVnbFF1ZXJ5RGV2aWNlU3RyaW5nRVhUKEVHTERldmljZUVYVCBkZXZpY2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBuYW1lKTsKLQotICAgIHJl
dHVybnMgYSBwb2ludGVyIHRvIGEgc3RhdGljLCB6ZXJvLXRlcm1pbmF0ZWQgc3RyaW5nIGRlc2Ny
aWJpbmcKLSAgICBzb21lIGFzcGVjdCBvZiB0aGUgc3BlY2lmaWVkIEVHTERldmljZUVYVC4gIDxu
YW1lPiBtdXN0IGJlCi0gICAgRUdMX0VYVEVOU0lPTlMuCi0KLSAgICBUaGUgRUdMX0VYVEVOU0lP
TlMgc3RyaW5nIGRlc2NyaWJlcyB3aGljaCBkZXZpY2UgZXh0ZW5zaW9ucyBhcmUKLSAgICBzdXBw
b3J0ZWQgYnkgPGRldmljZT4uICBUaGUgc3RyaW5nIGlzIG9mIHRoZSBzYW1lIGZvcm1hdCBzcGVj
aWZpZWQKLSAgICBmb3IgZGlzcGxheSBhbmQgY2xpZW50IGV4dGVuc2lvbiBzdHJpbmdzIGluIHNl
Y3Rpb24gMy40LiBOb3RlIHRoYXQKLSAgICBkZXZpY2UgZXh0ZW5zaW9ucyBhcmUgcHJvcGVydGll
cyBvZiB0aGUgZGV2aWNlLCBhbmQgYXJlIGRpc3RpbmN0Ci0gICAgZnJvbSBvdGhlciBleHRlbnNp
b24gc3RyaW5ncy4KLQotICAgIE9uIGZhaWx1cmUsIE5VTEwgaXMgcmV0dXJuZWQuICBBbiBFR0xf
QkFEX0RFVklDRV9FWFQgZXJyb3IgaXMKLSAgICBnZW5lcmF0ZWQgaWYgPGRldmljZT4gaXMgbm90
IGEgdmFsaWQgRUdMRGV2aWNlRVhULiAgQW4KLSAgICBFR0xfQkFEX1BBUkFNRVRFUiBlcnJvciBp
cyBnZW5lcmF0ZWQgaWYgPG5hbWU+IGlzIG5vdCBvbmUgb2YgdGhlCi0gICAgdmFsdWVzIGRlc2Ny
aWJlZCBhYm92ZS4KLQotQWRkIGEgc2VjdGlvbiAiMy40IERpc3BsYXkgQXR0cmlidXRlcyIgYWZ0
ZXIgIjMuMyBFR0wgVmVyc2lvbmluZyIKLQotICAgIFRvIHF1ZXJ5IGF0dHJpYnV0ZXMgb2YgYW4g
aW5pdGlhbGl6ZWQgZGlzcGxheSwgdXNlOgotCi0gICAgICAgIEVHTEJvb2xlYW4gZWdsUXVlcnlE
aXNwbGF5QXR0cmliRVhUKEVHTERpc3BsYXkgZHB5LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFR0xpbnQgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRUdMQXR0cmliICp2YWx1ZSk7Ci0KLSAgICBPbiBzdWNjZXNz
LCBFR0xfVFJVRSBpcyByZXR1cm5lZC4gIElmIDxuYW1lPiBpcyBFR0xfREVWSUNFX0VYVCwKLSAg
ICB0aGUgRUdMRGV2aWNlRVhUIGFzc29jaWF0ZWQgd2l0aCA8ZHB5PiBpcyByZXR1cm5lZCBpbiA8
dmFsdWU+LgotICAgIEFsbCBkaXNwbGF5cyBoYXZlIGFuIGFzc29jaWF0ZWQgRUdMRGV2aWNlRVhU
LCByZWdhcmRsZXNzIG9mIGhvdwotICAgIHRoZXkgd2VyZSBjcmVhdGVkLiAgQSBzdWNjZXNzZnVs
IHF1ZXJ5IG9mIEVHTF9ERVZJQ0VfRVhUIHdpbGwKLSAgICBuZXZlciByZXR1cm4gRUdMX05PX0RF
VklDRV9FWFQuCi0KLSAgICBPbiBmYWlsdXJlLCBFR0xfRkFMU0UgaXMgcmV0dXJuZWQuICBBbiBF
R0xfTk9UX0lOSVRJQUxJWkVEIGVycm9yCi0gICAgaXMgZ2VuZXJhdGVkIGlmIEVHTCBpcyBub3Qg
aW5pdGlhbGl6ZWQgZm9yIDxkcHk+LiAgQW4KLSAgICBFR0xfQkFEX0FUVFJJQlVURSBlcnJvciBp
cyBnZW5lcmF0ZWQgaWYgPG5hbWU+IGlzIG5vdCBhIHZhbGlkCi0gICAgdmFsdWUuCi0KLSAgICBC
ZWNhdXNlIHRoZSBFR0xEZXZpY2VFWFQgaXMgYSBwcm9wZXJ0eSBvZiA8ZHB5PiwgYW55IHVzZSBv
ZiBhbgotICAgIGFzc29jaWF0ZWQgRUdMRGV2aWNlRVhUIGFmdGVyIDxkcHk+IGhhcyBiZWVuIHRl
cm1pbmF0ZWQgZ2l2ZXMKLSAgICB1bmRlZmluZWQgcmVzdWx0cy4gUXVlcnlpbmcgYW4gRUdMX0RF
VklDRV9FWFQgZnJvbSA8ZHB5PiBhZnRlciBhCi0gICAgY2FsbCB0byBlZ2xUZXJtaW5hdGUoKSAo
YW5kIHN1YnNlcXVlbnQgcmUtaW5pdGlhbGl6YXRpb24pIG1heQotICAgIHJldHVybiBhIGRpZmZl
cmVudCB2YWx1ZS4KLQotSXNzdWVzCi0KLSAgICBOb25lLgotCi1SZXZpc2lvbiBIaXN0b3J5Ogot
Ci0gICAgIzEgIChNYXIgMjVyZCwgMjAxNSkgSmFtaWUgTWFkaWxsCi0gICAgICAgIC0gSW5pdGlh
bCBEcmFmdCBiYXNlZCBvbiBFR0xfRVhUX2RldmljZV9iYXNlCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9leHRlbnNpb25zL0VYVF9ibGVuZF9taW5tYXgudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRVhUX2JsZW5kX21pbm1heC50eHQJ
KHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMv
RVhUX2JsZW5kX21pbm1heC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNjQgKzAsMCBAQAotTmFt
ZQotCi0gICAgRVhUX2JsZW5kX21pbm1heAotCi1OYW1lIFN0cmluZ3MKLQotICAgIEdMX0VYVF9i
bGVuZF9taW5tYXgKLQotVmVyc2lvbgotCi0gICAgTGFzdCBNb2RpZmllZCBEYXRlOiBTZXB0ZW1i
ZXIgMTcsIDIwMDkKLSAgICBWZXJzaW9uOiAgICAgICAgICAgIDEuNQotCi1OdW1iZXIKLQotICAg
IE9wZW5HTCBFeHRlbnNpb24gIzM3Ci0gICAgT3BlbkdMIEVTIEV4dGVuc2lvbiAjNjUKLQotRGVw
ZW5kZW5jaWVzCi0KLSAgICBUaGVyZSBpcyBhbiBpbnRlcmFjdGlvbiB3aXRoIE9wZW5HTCBFUy4K
LQotT3ZlcnZpZXcKLQotICAgIEJsZW5kaW5nIGNhcGFiaWxpdHkgaXMgZXh0ZW5kZWQgYnkgcmVz
cGVjaWZ5aW5nIHRoZSBlbnRpcmUgYmxlbmQKLSAgICBlcXVhdGlvbi4gIFdoaWxlIHRoaXMgZG9j
dW1lbnQgZGVmaW5lcyBvbmx5IHR3byBuZXcgZXF1YXRpb25zLCB0aGUKLSAgICBCbGVuZEVxdWF0
aW9uRVhUIHByb2NlZHVyZSB0aGF0IGl0IGRlZmluZXMgd2lsbCBiZSB1c2VkIGJ5IHN1YnNlcXVl
bnQKLSAgICBleHRlbnNpb25zIHRvIGRlZmluZSBhZGRpdGlvbmFsIGJsZW5kaW5nIGVxdWF0aW9u
cy4KLQotICAgIFRoZSB0d28gbmV3IGVxdWF0aW9ucyBkZWZpbmVkIGJ5IHRoaXMgZXh0ZW5zaW9u
IHByb2R1Y2UgdGhlIG1pbmltdW0KLSAgICAob3IgbWF4aW11bSkgY29sb3IgY29tcG9uZW50cyBv
ZiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBjb2xvcnMuCi0gICAgVGFraW5nIHRoZSBtYXhp
bXVtIGlzIHVzZWZ1bCBmb3IgYXBwbGljYXRpb25zIHN1Y2ggYXMgbWF4aW11bSBwcm9qZWN0aW9u
Ci0gICAgaW4gbWVkaWNhbCBpbWFnaW5nLgotCi1Jc3N1ZXMKLQotICAgICogICBJJ3ZlIHByZWZp
eGVkIHRoZSBBREQgdG9rZW4gd2l0aCBGVU5DLCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBibGVuZAot
ICAgICAgICBlcXVhdGlvbiBpbmNsdWRlcyB0aGUgcGFyYW1ldGVycyBzcGVjaWZpZWQgYnkgQmxl
bmRGdW5jLiAgKFRoZSBtaW4KLSAgICAgICAgYW5kIG1heCBlcXVhdGlvbnMgZG9uJ3QuKSAgSXMg
dGhpcyBuZWNlc3Nhcnk/ICBJcyBpdCB0b28gdWdseT8KLSAgICAgICAgSXMgdGhlcmUgYSBiZXR0
ZXIgd2F5IHRvIGFjY29tcGxpc2ggdGhlIHNhbWUgdGhpbmc/Ci0gICAgCi1OZXcgUHJvY2VkdXJl
cyBhbmQgRnVuY3Rpb25zCi0KLSAgICB2b2lkIEJsZW5kRXF1YXRpb25FWFQoZW51bSBtb2RlKTsK
LQotTmV3IFRva2VucwotCi0gICAgQWNjZXB0ZWQgYnkgdGhlIDxtb2RlPiBwYXJhbWV0ZXIgb2Yg
QmxlbmRFcXVhdGlvbkVYVDoKLQotICAgICAgICBGVU5DX0FERF9FWFQgICAgICAgICAgICAgICAg
ICAgICAweDgwMDYKLSAgICAgICAgTUlOX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4
MDA3Ci0gICAgICAgIE1BWF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAwOAotCi0g
ICAgQWNjZXB0ZWQgYnkgdGhlIDxwbmFtZT4gcGFyYW1ldGVyIG9mIEdldEJvb2xlYW52LCBHZXRJ
bnRlZ2VydiwKLSAgICBHZXRGbG9hdHYsIGFuZCBHZXREb3VibGV2OgotCi0gICAgICAgIEJMRU5E
X0VRVUFUSU9OX0VYVCAgICAgICAgICAgICAgIDB4ODAwOQotCi1BZGRpdGlvbnMgdG8gQ2hhcHRl
ciAyIG9mIHRoZSBHTCBTcGVjaWZpY2F0aW9uIChPcGVuR0wgT3BlcmF0aW9uKQotCi0gICAgTm9u
ZQotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciAzIG9mIHRoZSBHTCBTcGVjaWZpY2F0aW9uIChSYXN0
ZXJpemF0aW9uKQotCi0gICAgTm9uZQotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciA0IG9mIHRoZSBH
TCBTcGVjaWZpY2F0aW9uIChQZXItRnJhZ21lbnQgT3BlcmF0aW9ucwotYW5kIHRoZSBGcmFtZWJ1
ZmZlcikKLQotICAgIFRoZSBHTCBTcGVjaWZpY2F0aW9uIGRlZmluZXMgYSBzaW5nbGUgYmxlbmRp
bmcgZXF1YXRpb24uICBUaGlzCi0gICAgZXh0ZW5zaW9uIGludHJvZHVjZXMgYSBibGVuZCBlcXVh
dGlvbiBtb2RlIHRoYXQgaXMgc3BlY2lmaWVkIGJ5IGNhbGxpbmcKLSAgICBCbGVuZEVxdWF0aW9u
RVhUIHdpdGggb25lIG9mIHRocmVlIGVudW1lcmF0ZWQgdmFsdWVzLiAgVGhlIGRlZmF1bHQKLSAg
ICB2YWx1ZSBGVU5DX0FERF9FWFQgc3BlY2lmaWVzIHRoYXQgdGhlIGJsZW5kaW5nIGVxdWF0aW9u
IGRlZmluZWQgaW4KLSAgICB0aGUgR0wgU3BlY2lmaWNhdGlvbiBiZSB1c2VkLiAgVGhpcyBlcXVh
dGlvbiBpcwotCi0gICAgICAgIEMnID0gKENzICogUykgKyAoQ2QgKiBEKQotCi0gICAgICAgICAg
ICAgLyAgMS4wICAgICBDJyA+IDEuMAotICAgICAgICBDID0gKAotICAgICAgICAgICAgIFwgICBD
JyAgICAgQycgPD0gMS4wCi0KLSAgICB3aGVyZSBDcyBhbmQgQ2QgYXJlIHRoZSBzb3VyY2UgYW5k
IGRlc3RpbmF0aW9uIGNvbG9ycywgYW5kIFMgYW5kIEQgYXJlCi0gICAgYXMgc3BlY2lmaWVkIGJ5
IEJsZW5kRnVuYy4KLQotICAgIElmIEJsZW5kRXF1YXRpb25FWFQgaXMgY2FsbGVkIHdpdGggPG1v
ZGU+IHNldCB0byBNSU5fRVhULCB0aGUKLSAgICBibGVuZGluZyBlcXVhdGlvbiBiZWNvbWVzCi0K
LSAgICAgICAgQyA9IG1pbiAoQ3MsIENkKQotCi0gICAgRmluYWxseSwgaWYgQmxlbmRFcXVhdGlv
bkVYVCBpcyBjYWxsZWQgd2l0aCA8bW9kZT4gc2V0IHRvIE1BWF9FWFQsIHRoZQotICAgIGJsZW5k
aW5nIGVxdWF0aW9uIGJlY29tZXMKLQotICAgICAgICBDID0gbWF4IChDcywgQ2QpCi0KLSAgICBJ
biBhbGwgY2FzZXMgdGhlIGJsZW5kaW5nIGVxdWF0aW9uIGlzIGV2YWx1YXRlZCBzZXBhcmF0ZWx5
IGZvciBlYWNoCi0gICAgY29sb3IgY29tcG9uZW50LgotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciA1
IG9mIHRoZSBHTCBTcGVjaWZpY2F0aW9uIChTcGVjaWFsIEZ1bmN0aW9ucykKLQotICAgIE5vbmUK
LQotQWRkaXRpb25zIHRvIENoYXB0ZXIgNiBvZiB0aGUgR0wgU3BlY2lmaWNhdGlvbiAoU3RhdGUg
YW5kIFN0YXRlIFJlcXVlc3RzKQotCi0gICAgTm9uZQotCi1BZGRpdGlvbnMgdG8gdGhlIEdMWCBT
cGVjaWZpY2F0aW9uCi0KLSAgICBOb25lCi0KLUdMWCBQcm90b2NvbAotCi0gICAgQSBuZXcgR0wg
cmVuZGVyaW5nIGNvbW1hbmQgaXMgYWRkZWQuIFRoZSBmb2xsb3dpbmcgY29tbWFuZCBpcyBzZW50
IHRvIHRoZSAKLSAgICBzZXJ2ZXIgYXMgcGFydCBvZiBhIGdsWFJlbmRlciByZXF1ZXN0OgotCi0g
ICAgICAgIEJsZW5kRXF1YXRpb25FWFQKLSAgICAgICAgICAgIDIgICAgICAgICAgIDggICAgICAg
ICAgICAgICByZW5kZXJpbmcgY29tbWFuZCBsZW5ndGgKLSAgICAgICAgICAgIDIgICAgICAgICAg
IDQwOTcgICAgICAgICAgICByZW5kZXJpbmcgY29tbWFuZCBvcGNvZGUKLSAgICAgICAgICAgIDQg
ICAgICAgICAgIEVOVU0gICAgICAgICAgICBtb2RlCi0KLURlcGVuZGVuY2llcyBvbiBPcGVuR0wg
RVMKLQotICAgIElmIHRoZSBHTCBpcyBPcGVuR0wgRVMsIG9ubHkgdGhlIG5ldyBNSU5fRVhUIGFu
ZCBNQVhfRVhUIGJsZW5kIGVxdWF0aW9ucwotICAgIGFyZSBpbnRyb2R1Y2VkIGJ5IHRoaXMgZXh0
ZW5zaW9uLiAgQmxlbmRFcXVhdGlvbk9FUywgRlVOQ19BRERfT0VTLCBhbmQKLSAgICBCTEVORF9F
UVVBVElPTl9PRVMgYXJlIGludHJvZHVjZWQgYnkgdGhlIE9FU19ibGVuZF9zdWJ0cmFjdCBleHRl
bnNpb24sCi0gICAgd2hpY2ggaXMgcmVxdWlyZWQgZm9yIHRoaXMgZXh0ZW5zaW9uIHRvIG9wZXJh
dGUuICBBbHRlcm5hdGl2ZWx5LAotICAgIE9wZW5HTCBFUyAyLjAgaXMgcmVxdWlyZWQsIHdoaWNo
IGludHJvZHVjZXMgQmxlbmRFcXVhdGlvbiwgRlVOQ19BREQsIGFuZAotICAgIEJMRU5EX0VRVUFU
SU9OIHdpdGhvdXQgdGhlIHN1ZmZpeGVzLgotCi0gICAgTUlOX0VYVCBhbmQgTUFYX0VYVCBzaG91
bGQgYmUgYWRkZWQgdG8gVGFibGUgNC5ibGVuZGVxIGRlc2NyaWJlZCBpbiB0aGUKLSAgICBPRVNf
YmxlbmRfc3VidHJhY3QgZXh0ZW5zaW9uIHNwZWNpZmljYXRpb24sIGFuZCBUYWJsZSA0LjEgb2Yg
dGhlIE9wZW5HTAotICAgIEVTIDIuMCBzcGVjaWZpY2F0aW9uLgotCi0gICAgTWVudGlvbnMgb2Yg
R2V0RG91YmxldiwgQmVnaW4vRW5kLCBhbmQgR0xYIGluIHRoaXMgZXh0ZW5zaW9uIHNwZWNpZmlj
YXRpb24KLSAgICBjYW4gYmUgaWdub3JlZCBmb3IgT3BlbkdMIEVTLiAgQWxzbywgQmxlbmRFcXVh
dGlvbkVYVCBhbmQgRlVOQ19BRERfRVhUCi0gICAgaW5zdGVhZCBoYXZlIHRoZSBPRVMgc3VmZml4
IGNvdXJ0ZXN5IG9mIE9FU19ibGVuZF9zdWJ0cmFjdCwgb3Igbm8gc3VmZml4Ci0gICAgY291cnRl
c3kgb2YgY29yZSBPcGVuR0wgRVMgMi4wLgotCi1FcnJvcnMKLQotICAgIElOVkFMSURfRU5VTSBp
cyBnZW5lcmF0ZWQgYnkgQmxlbmRFcXVhdGlvbkVYVCBpZiBpdHMgc2luZ2xlIHBhcmFtZXRlcgot
ICAgIGlzIG5vdCBGVU5DX0FERF9FWFQsIE1JTl9FWFQsIG9yIE1BWF9FWFQuCi0KLSAgICBJTlZB
TElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgQmxlbmRFcXVhdGlvbkVYVCBpcyBleGVjdXRl
ZCBiZXR3ZWVuCi0gICAgdGhlIGV4ZWN1dGlvbiBvZiBCZWdpbiBhbmQgdGhlIGNvcnJlc3BvbmRp
bmcgZXhlY3V0aW9uIHRvIEVuZC4KLQotTmV3IFN0YXRlCi0KLSAgICBHZXQgVmFsdWUgICAgICAg
ICAgIEdldCBDb21tYW5kICAgICBUeXBlICAgIEluaXRpYWwgVmFsdWUgICBBdHRyaWJ1dGUKLSAg
ICAtLS0tLS0tLS0gICAgICAgICAgIC0tLS0tLS0tLS0tICAgICAtLS0tICAgIC0tLS0tLS0tLS0t
LS0gICAtLS0tLS0tLS0KLSAgICBCTEVORF9FUVVBVElPTl9FWFQgIEdldEludGVnZXJ2ICAgICBa
MyAgICAgIEZVTkNfQUREX0VYVCAgICBjb2xvci1idWZmZXIKLQotTmV3IEltcGxlbWVudGF0aW9u
IERlcGVuZGVudCBTdGF0ZQotCi0gICAgTm9uZQotCi1SZXZpc2lvbiBIaXN0b3J5Ci0KLSAgICBW
ZXJzaW9uIDEuNSwgU2VwdGVtYmVyIDE3LCAyMDA5IChKb24gTGVlY2gpIC0KLSAgICAgICAgTWVy
Z2UgaW50byBPcGVuR0wgUmVnaXN0cnkgdmVyc2lvbiBvZiB0aGUgZXh0ZW5zaW9uIGFuZCBhc3Np
Z24KLSAgICAgICAgT3BlbkdMIEVTIGV4dGVuc2lvbiBudW1iZXIuCi0gICAgVmVyc2lvbiAxLjQs
IE1heSAxOSwgMjAwOSAoQmVuaiBMaXBjaGFrKSAtCi0gICAgICAgIEFkYXB0ZWQgZm9yIE9wZW5H
TCBFUy4KLSAgICBWZXJzaW9uIDEuMywgTWF5IDMxLCAxOTk1IC0KLSAgICAgICAgTGFzdCBTR0kg
cmV2aXNpb24uCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VYVF9j
b2xvcl9idWZmZXJfZmxvYXQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL2V4dGVuc2lvbnMvRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdC50eHQJKHJldmlzaW9uIDIwNzgw
NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRVhUX2NvbG9yX2J1ZmZl
cl9mbG9hdC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMzAgKzAsMCBAQAotTmFtZQotCi0gICAg
RVhUX2NvbG9yX2J1ZmZlcl9mbG9hdAotCi1OYW1lIFN0cmluZ3MKLQotICAgIEdMX0VYVF9jb2xv
cl9idWZmZXJfZmxvYXQKLQotQ29udHJpYnV0b3JzCi0KLSAgICBPcGVuR0wgRVMgV29ya2luZyBH
cm91cCBtZW1iZXJzCi0KLUNvbnRhY3QKLQotICAgIE1hcmsgQ2FsbG93LCBISSBDb3JwLiAoY2Fs
bG93Lm1hcmsgJ2F0JyBhcnRzcGFyay5jby5qcCkKLQotTm90aWNlCi0KLSAgICDCqTIwMTIgVGhl
IEtocm9ub3MgR3JvdXAgSW5jLgotCi1TdGF0dXMKLQotICAgIENvbXBsZXRlCi0KLUlQIFN0YXR1
cwotCi0gICAgR3JhcGhpY3MgUHJvcGVydGllcyBIb2xkaW5ncyAoR1BILCBmb3JtZXJseSBTR0kp
IG93bnMgVVMgUGF0ZW50Ci0gICAgIzYsNjUwLDMyNywgaXNzdWVkIE5vdmVtYmVyIDE4LCAyMDAz
LiBHUEggYmVsaWV2ZXMgdGhpcyBwYXRlbnQKLSAgICBjb250YWlucyBuZWNlc3NhcnkgSVAgZm9y
IGdyYXBoaWNzIHN5c3RlbXMgaW1wbGVtZW50aW5nIGZsb2F0aW5nCi0gICAgcG9pbnQgKEZQKSBy
YXN0ZXJpemF0aW9uIGFuZCBGUCBmcmFtZWJ1ZmZlciBjYXBhYmlsaXRpZXMuCi0KLSAgICBHUEgg
d2lsbCBub3QgZ3JhbnQgS2hyb25vcyByb3lhbHR5LWZyZWUgdXNlIG9mIHRoaXMgSVAgZm9yIHVz
ZQotICAgIGluIE9wZW5HTCBFUywgYnV0IHdpbGwgZGlzY3VzcyBsaWNlbnNpbmcgb24gUkFORCB0
ZXJtcywgb24gYW4KLSAgICBpbmRpdmlkdWFsIGJhc2lzIHdpdGggY29tcGFuaWVzIHdpc2hpbmcg
dG8gdXNlIHRoaXMgSVAgaW4gdGhlCi0gICAgY29udGV4dCBvZiBjb25mb3JtYW50IE9wZW5HTCBF
UyBpbXBsZW1lbnRhdGlvbnMuIEdQSCBkb2VzIG5vdAotICAgIHBsYW4gdG8gbWFrZSBhbnkgc3Bl
Y2lhbCBleGVtcHRpb24gZm9yIG9wZW4gc291cmNlCi0gICAgaW1wbGVtZW50YXRpb25zLgotCi0g
ICAgU2VlCi0gICAgaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvZmlsZXMvaXAtZGlzY2xvc3VyZXMv
b3BlbmdsL1NHSSUyMElQJTIwRGlzY2xvc3VyZSUyME1hcjA1X2NsZWFuLnBkZgotICAgIGZvciB0
aGUgZnVsbCBkaXNjbG9zdXJlLgotCi1WZXJzaW9uCi0KLSAgICBEYXRlOiBKYW51YXJ5IDExdGgs
IDIwMTMKLSAgICBSZXZpc2lvbjogNQotCi1OdW1iZXIKLQotICAgIE9wZW5HTCBFUyBFeHRlbnNp
b24gIzEzNwotCi1EZXBlbmRlbmNpZXMKLQotICAgIFJlcXVpcmVzIE9wZW5HTCBFUyAzLjAuCi0K
LSAgICBXcml0dGVuIGJhc2VkIG9uIHRoZSB3b3JkaW5nIG9mIHRoZSBPcGVuR0wgRVMgMy4wLjEg
U3BlY2lmaWNhdGlvbgotICAgIChKYW51YXJ5IDEwdGgsIDIwMTMpLgotCi1PdmVydmlldwotCi0g
ICAgVGhpcyBleHRlbnNpb24gYWxsb3dzIGEgdmFyaWV0eSBvZiBmbG9hdGluZyBwb2ludCBmb3Jt
YXRzIHRvIGJlCi0gICAgcmVuZGVyZWQgdG8gdmlhIGZyYW1lYnVmZmVyIG9iamVjdHMuCi0KLU5l
dyBQcm9jZWR1cmVzIGFuZCBGdW5jdGlvbnMKLQotICAgIE5vbmUKLQotTmV3IFRva2VucwotCi0g
ICAgTm9uZQotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciAzIG9mIHRoZSBPcGVuR0wgRVMgMy4wIFNw
ZWNpZmljYXRpb24KLShSYXN0ZXJpemF0aW9uKQotCi0gICAgMy44LjMgVGV4dHVyZSBJbWFnZSBT
cGVjaWZpY2F0aW9uLCB1bm51bWJlcmVkIHN1YnNlY3Rpb24gIlJlcXVpcmVkCi0gICAgVGV4dHVy
ZSBGb3JtYXRzIiwgcC4gMTI2Ci0KLSAgICBDaGFuZ2UgdGhlIGZpcnN0IHR3byBidWxsZXQgaXRl
bXMgdG8gdGhlIGZvbGxvd2luZzoKLQotICAgIC0gVGV4dHVyZSBhbmQgcmVuZGVyYnVmZmVyIGNv
bG9yIGZvcm1hdHMgKHNlZSBzZWN0aW9uIDQuNC4yKS4KLSAgICAgIC0gUkdCQTMyRiwgUkdCQTMy
SSwgUkdCQTMyVUksIFJHQkExNkYsIFJHQkExNkksIFJHQkExNlVJLAotICAgICAgICBSR0JBOCwg
UkdCQThJLCBSR0JBOFVJLCBTUkdCOF9BTFBIQTgsIFJHQjEwX0EyLCBSR0IxMF8tCi0gICAgICAg
IEEyVUksIFJHQkE0LCBhbmQgUkdCNV9BMS4KLSAgICAgIC0gUkdCOCBhbmQgUkdCNTY1LgotICAg
ICAgLSBSMTFGIEcxMUYgQjEwRi4KLSAgICAgIC0gUkczMkYsIFJHMzJJLCBSRzMyVUksIFJHMTZG
LCBSRzE2SSwgUkcxNlVJLCBSRzgsIFJHOEksIGFuZAotICAgICAgICBSRzhVSS4KLSAgICAgIC0g
UjMyRiwgUjMySSwgUjMyVUksIFIxNkYsIFIxNkksIFIxNlVJLCBSOCwgUjhJLCBhbmQgUjhVSS4K
LQotICAgIC0gVGV4dHVyZS1vbmx5IGNvbG9yIGZvcm1hdHM6Ci0gICAgICAtIFJHQkE4X1NOT1JN
LgotICAgICAgLSBSR0IzMkYsIFJHQjMySSwgYW5kIFJHQjMyVUkuCi0gICAgICAtIFJHQjE2Riwg
UkdCMTZJLCBhbmQgUkdCMTZVSS4KLSAgICAgIC0gUkdCOF9TTk9STSwgUkdCOEksIFJHQjhVSSwg
YW5kIFNSR0I4LgotICAgICAgLSBSR0I5X0U1LgotICAgICAgLSBSRzhfU05PUk0uCi0gICAgICAt
IFI4X1NOT1JNLgotCi0gICAgVGFibGUgMy4xMiwgcC4gMTI4ICYgMTI5Ci0KLSAgICBDb252ZXJ0
IHRoZSBkYXNoIHVuZGVyICdDb2xvci1yZW5kZXJhYmxlJyB0byBhICdjaGVjaycgZm9yIHRoZQot
ICAgIGZvbGxvd2luZyBpbnRlcm5hbCBmb3JtYXRzOiBSMTZGLCBSRzE2RiwgUkdCQTE2RiwgUjMy
RiwgUkczMkYsCi0gICAgUkdCQTMyRiBhbmQgUjExRl9HMTFGX0IxMEYuCi0gICAgCi1BZGRpdGlv
bnMgdG8gQ2hhcHRlciA0IG9mIHRoZSBPcGVuR0wgRVMgMy4wIFNwZWNpZmljYXRpb24gKFBlci1G
cmFnbWVudAotT3BlcmF0aW9ucyBhbmQgdGhlIEZyYW1lYnVmZmVyKQotCi0gICAgKGNoYW5nZWQg
bGluZXMgbWFya2VkIHdpdGggKjsgYWRkZWQgbGluZXMgbWFya2VkIHdpdGggKykKLQotICAgIENo
YXB0ZXIgNCBJbnRyb2R1Y3Rpb24sIHAuIDE2NwotCi0gICAgUGFyYWdyYXBoIDUsIHNlbnRlbmNl
IDMsIHAgMTY4LCBpbnNlcnQgImZsb2F0aW5nIHBvaW50IiBhcyBzaG93bjoKLSAgICAgICAgIlIs
IEcsIEIsIGFuZCBBIGNvbXBvbmVudHMgbWF5IGJlIHJlcHJlc2VudGVkIGFzIHVuc2lnbmVkCi0g
KiAgICAgIG5vcm1hbGl6ZWQgZml4ZWQtcG9pbnQsIGZsb2F0aW5nIHBvaW50IG9yIHNpZ25lZCBv
ciB1bnNpZ25lZAotICAgICAgICBpbnRlZ2VyIHZhbHVlczsgLi4uIiAgICBeXl5eXl5eXl5eXl5e
XgotCi0gICAgNC4xLjcgQmxlbmRpbmcsIHAuIDE3NAotCi0gICAgTW9kaWZ5IHBhcmFncmFwaHMg
MyAmIDQ6Ci0gICAgCi0gKiAgICAgICJJZiB0aGUgY29sb3IgYnVmZmVyIGlzIGZpeGVkLXBvaW50
LCB0aGUgY29tcG9uZW50cyBvZiB0aGUKLSAgICBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHZhbHVl
cyBhbmQgYmxlbmQgZmFjdG9ycyBhcmUgY2xhbXBlZAotICogIHRvIFswOyAxXSBwcmlvciB0byBl
dmFsdWF0aW5nIHRoZSBibGVuZCBlcXVhdGlvbi4gSWYgdGhlIGNvbG9yCi0gKyAgYnVmZmVyIGlz
IGZsb2F0aW5nLXBvaW50LCBubyBjbGFtcGluZyBvY2N1cnMuIFRoZSByZXN1bHRpbmcgZm91cgot
ICsgIHZhbHVlcyBhcmUgc2VudCB0byB0aGUgbmV4dCBvcGVyYXRpb24uCi0gICAgCi0gICAgICAg
IEJsZW5kaW5nIGFwcGxpZXMgb25seSBpZiB0aGUgY29sb3IgYnVmZmVyIGhhcyBhIGZpeGVkLXBv
aW50IG9yCi0gKiAgb3IgZmxvYXRpbmctcG9pbnQgZm9ybWF0LiBJZiB0aGUgY29sb3IgYnVmZmVy
IGhhcyBhbiBpbnRlZ2VyCi0gKiAgZm9ybWF0LCBwcm9jZWVkIHRvIHRoZSBuZXh0IG9wZXJhdGlv
bi4gIEZ1cnRoZXJtb3JlLCBhbgotICsgIElOVkFMSURfT1BFUkFUSU9OIGVycm9yIGlzIGdlbmVy
YXRlZCBieSBEcmF3QXJyYXlzIGFuZCB0aGUgb3RoZXIKLSArICBkcmF3aW5nIGNvbW1hbmRzIGRl
ZmluZWQgaW4gc2VjdGlvbiAyLjguMyBpZiBibGVuZGluZyBpcyBlbmFibGVkCi0gKyAgKHNlZSBi
ZWxvdykgYW5kIGFueSBkcmF3IGJ1ZmZlciBoYXMgYSAzMi1iaXQgZmxvYXRpbmctcG9pbnQKLSAr
ICBmb3JtYXQuIgotCi0gICAgNC4yLjMgQ2xlYXJpbmcgdGhlIEJ1ZmZlcnMsIHAuIDE4MwotCi0g
ICAgTW9kaWZ5IHNlY29uZCBwYXJhZ3JhcGgsIGluc2VydGluZyAiZmxvYXRpbmcgcG9pbnQiOgot
Ci0gICAgIiAgIHZvaWQgQ2xlYXJDb2xvcihmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9h
dCBhKTsKLQotICogIHNldHMgdGhlIGNsZWFyIHZhbHVlIGZvciBmaXhlZC0gYW5kIGZsb2F0aW5n
LXBvaW50IGNvbG9yIGJ1ZmZlcnMuCi0gICAgLi4uIiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBeXl5eXl5eXl5eXl5eXl5eXl4KLQotICAgIDQuMy4xIFJlYWRpbmcgUGl4ZWxzLCBwLiAxODYK
LQotICAgIEluIHBhcmFncmFwaCA0LCBiZWdpbm5pbmcgIk9ubHkgdHdvIGNvbWJpbmF0aW9ucyBv
ZiBmb3JtYXQKLSAgICBhbmQgdHlwZSBhcmUgYWNjZXB0ZWQgLi4uIiwgYWZ0ZXIgdGhlIHNlbnRl
bmNlIGVuZGluZyAiLi4uIHR5cGUKLSAgICBVTlNJR05FRF9CWVRFIGlzIGFjY2VwdGVkLiIgaW5z
ZXJ0IHRoZSBmb2xsb3dpbmcgc2VudGVuY2U6Ci0gICAgICAgICJGb3IgZmxvYXRpbmctcG9pbnQg
cmVuZGVyaW5nIHN1cmZhY2VzLCB0aGUgY29tYmluYXRpb24KLSAgICAgICAgZm9ybWF0IFJHQkEg
YW5kIHR5cGUgRkxPQVQgaXMgYWNjZXB0ZWQuIgotCi0gICAgNC4zLjEgdW5udW1iZXJlZCBzdWJz
ZWN0aW9uICJPYnRhaW5pbmcgUGl4ZWxzIGZyb20gdGhlIEZyYW1lYnVmZmVyIiwKLSAgICBwLiAx
ODgKLQotICAgIE1vZGlmeSBwZW51bHRpbWF0ZSBwYXJhZ3JhcGgsIHAxODksICJJZiBmb3JtYXQg
aXMgYW4gaW50ZWdlciAuLi4iCi0KLSAgICAiSWYgZm9ybWF0IGlzIGFuIGludGVnZXIgZm9ybWF0
IGFuZCB0aGUgY29sb3IgYnVmZmVyIGlzIG5vdCBhbgotICAgIGludGVnZXIgZm9ybWF0OyBpZiB0
aGUgY29sb3IgYnVmZmVyIGlzIGFuIGludGVnZXIgZm9ybWF0IGFuZAotICogIGZvcm1hdCBpcyBu
b3QgYW4gaW50ZWdlciBmb3JtYXQ7IGlmIGZvcm1hdCBpcyBhbiBpbnRlZ2VyIGZvcm1hdAotICog
IGFuZCB0eXBlIGlzIEZMT0FULCBIQUxGX0ZMT0FULCBvciBVTlNJR05FRF9JTlRfMTBGXzExRl8x
MUZfUkVWOwotICsgIG9yIGlmIHRoZSBjb2xvciBidWZmZXIgaXMgYSBmbG9hdGluZy1wb2ludCBm
b3JtYXQgYW5kIHR5cGUgaXMKLSArICBub3QgRkxPQVQsIEhBTEYgRkxPQVQsIG9yIFVOU0lHTkVE
X0lOVF8xMEZfMTFGXzExRl9SRVYsIHRoZSBlcnJvcgotICAgIElOVkFMSURfT1BFUkFUSU9OIG9j
Y3Vycy4iCi0KLSAgICA0LjMuMSB1bm51bWJlcmVkIHN1YnNlY3Rpb24gIkNvbnZlcnNpb24gb2Yg
UkdCQSB2YWx1ZXMiLCBwLjE5MAotCi0gICAgU29sZSBwYXJhZ3JhcGgsIHNlbnRlbmNlIDMsIGlu
c2VydCAib3IgZmxvYXRpbmcgcG9pbnQiIGFzIHNob3duOgotICogICAgICAiRm9yIGFuIGludGVn
ZXIgb3IgZmxvYXRpbmcgcG9pbnQgY29sb3IgYnVmZmVyLCB0aGUgZWxlbWVudHMKLSAgICAgICAg
YXJlIHVubW9kaWZpZWQuIl5eXl5eXl5eXl5eXl5eXl5eCi0KLSAgICA0LjMuMiBDb3B5aW5nIFBp
eGVscywgcDE5MgotCi0gICAgTW9kaWZ5IGZpcnN0IGVycm9yIGNvbmRpdGlvbiwgYXQgYm90dG9t
IG9mIHAxOTMsICJUaGUgcmVhZCBidWZmZXIKLSAgICBjb250YWlucyAuLi4iIHRvIGVuY29tcGFz
cyBmbG9hdGluZy1wb2ludCBidWZmZXJzLgotCi0gKiAgIi0gVGhlIHJlYWQgYnVmZmVyIGNvbnRh
aW5zIGZpeGVkLXBvaW50IG9yIGZsb2F0aW5nLXBvaW50IHZhbHVlcwotICogICAgIGFuZCBhbnkg
ZHJhdyBidWZmZXIgY29udGFpbnMgbmVpdGhlciBmaXhlZC1wb2ludCBub3IKLSAqICAgICBmbG9h
dGluZy1wb2ludCB2YWx1ZXMuIgotCi0gICAgNC40LjIgQXR0YWNoaW5nIEltYWdlcyB0byBGcmFt
ZWJ1ZmZlciBPYmplY3RzLCBwLiAxOTcsIHVubnVtYmVyZWQKLSAgICBzdWJzZWN0aW9uICJSZXF1
aXJlZCBSZW5kZXJidWZmZXIgRm9ybWF0cyIsIHAuIDIwMAotCi0gICAgSW4gdGhlIGxhc3QgcGFy
YWdyYXBoIGJlZ2lubmluZyAiSW1wbGVtZW50YXRpb25zIG11c3Qgc3VwcG9ydAotICAgIGNyZWF0
aW9uIC4uLiIsIG1vZGlmeSB0aGUgZmluYWwgcGhyYXNlIHRvCi0KLSAqICAgIndpdGggdGhlIGV4
Y2VwdGlvbiBvZiBzaWduZWQgYW5kIHVuc2lnbmVkIGludGVnZXIsIFJHQkExNkYsCi0gKyAgIFIz
MkYsIFJHMzJGIGFuZCBSR0JBMzJGIGZvcm1hdHMuCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDUg
b2YgdGhlIE9wZW5HTCBFUyAyLjAgU3BlY2lmaWNhdGlvbiAoU3BlY2lhbCBGdW5jdGlvbnMpCi0K
LSAgICBOb25lCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDYgb2YgdGhlIE9wZW5HTCBFUyAyLjAg
U3BlY2lmaWNhdGlvbiAoU3RhdGUgYW5kIFN0YXRlCi1SZXF1ZXN0cykKLQotICAgIDYuMS4xNSBJ
bnRlcm5hbCBGb3JtYXQgUXVlcmllcywgcC4gMjM3Ci0KLSAgICBQLiAyMzgsIHBhcmFncmFwaCA4
IGFmdGVyICJTaW5jZSBtdWx0aXNhbXBsaW5nIGlzIG5vdCBzdXBwb3J0ZWQKLSAgICBmb3Igc2ln
bmVkIGFuZCB1bnNpZ25lZCBpbnRlZ2VyIGludGVybmFsIGZvcm1hdHMsIHRoZSB2YWx1ZSBvZgot
ICAgIE5VTV9TQU1QTEVfQ09VTlRTIHdpbGwgYmUgemVybyBmb3Igc3VjaCBmb3JtYXRzLiIsIGlu
c2VydCBuZXcKLSAgICBvbmUtc2VudGVuY2UgcGFyYWdyYXBoOgotCi0gICAgICAgICJJZiA8aW50
ZXJuYWxmb3JtYXQ+IGlzIFJHQkExNkYsIFIzMkYsIFJHMzJGLCBvciBSR0JBMzJGLCB0aGUKLSAg
ICAgICAgdmFsdWUgb2YgTlVNX1NBTVBMRV9DT1VOVFMgbWF5IGJlIHplcm8sIG9yIGVsc2UgdGhl
IG1heGltdW0KLSAgICAgICAgdmFsdWUgaW4gU0FNUExFUyBtYXkgYmUgbGVzcyB0aGFuIHRoZSB2
YWx1ZSBvZiBNQVhfU0FNUExFUy4iCi0KLU5ldyBJbXBsZW1lbnRhdGlvbiBEZXBlbmRlbnQgU3Rh
dGUKLQotICAgIE5vbmUKLQotSXNzdWVzCi0KLVJldmlzaW9uIEhpc3RvcnkKLQotICAgIFJldi4g
IERhdGUgICAgIEF1dGhvciAgICAgQ2hhbmdlcwotICAgIC0tLS0gIC0tLS0tLS0tIC0tLS0tLS0t
LSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgIDEgICAx
MC8xNi8xMiBtYXJrYyAgICAgIEluaXRpYWwgdmVyc2lvbgotICAgICAgMiAgIDEwLzE4LzEyIG1h
cmtjICAgICAgUmVmZXJlbmNlZCBwcmVsaW1pbmFyeSB2ZXJzaW9uIG9mIE9wZW5HTAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRVMgMy4wLjEgc3BlY2lmaWNhdGlvbiBhbmQgdXBkYXRl
ZCBwYWdlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJzLgotICAgICAgMyAg
IDExLzIxLzEyIG1hcmtjICAgICAgQ29ycmVjdGVkIElQIHN0YXR1cy4KLSAgICAgIDQgICAwMS8w
OS8xMyBtYXJrYyAgICAgIENoYW5nZWQgZGF0ZSBvZiByZWZlcmVuY2VkIE9wZW5HTCBFUwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4wLjEgc3BlY2lmaWNhdGlvbi4gTWFkZSBtaW5v
ciBsYW5ndWFnZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ltcGxpZmljYXRpb24u
Ci0gICAgICA1ICAgMDEvMTEvMTMgbWFya2MgICAgICBDaGFuZ2VkIGRhdGUgdG8gcmVsZWFzZSB2
ZXJzaW9uIG9mCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVuR0wgRVMgMy4wLjEg
c3BlY2lmaWNhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXJpZmllZCBj
aGFuZ2UgdG8gIlJlcXVpcmVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJi
dWZmZXIgZm9ybWF0cyIgc2VjdGlvbi4KLQotIyB2aW06YWk6dHM9NDpzdHM9NDpzdz00OmV4cGFu
ZHRhYjp0ZXh0d2lkdGg9NzAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lv
bnMvRVhUX2RyYXdfYnVmZmVycy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvZXh0ZW5zaW9ucy9FWFRfZHJhd19idWZmZXJzLnR4dAkocmV2aXNpb24gMjA3ODA0KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FWFRfZHJhd19idWZmZXJzLnR4
dAkobm9uZXhpc3RlbnQpCkBAIC0xLDU0MiArMCwwIEBACi1OYW1lCi0KLSAgICBFWFRfZHJhd19i
dWZmZXJzCi0KLU5hbWUgU3RyaW5ncwotCi0gICAgR0xfRVhUX2RyYXdfYnVmZmVycwotCi1Db250
cmlidXRvcnMKLQotICAgIENvbnRyaWJ1dG9ycyB0byBHTF9OVl9kcmF3X2J1ZmZlcnMKLSAgICBD
b250cmlidXRvcnMgdG8gR0xfTlZfZmJvX2NvbG9yX2F0dGFjaG1lbnRzCi0gICAgQ29udHJpYnV0
b3JzIHRvIHRoZSBPcGVuR0wgRVMgMi4wIHNwZWNpZmljYXRpb24KLSAgICBDb250cmlidXRvcnMg
dG8gdGhlIE9wZW5HTFNMIEVTIDEuMC4xNyBzcGVjaWZpY2F0aW9uCi0gICAgQ29udHJpYnV0b3Jz
IHRvIHRoZSBPcGVuR0wgRVMgMy4wIHNwZWNpZmljYXRpb24KLSAgICBOaWNvbGFzIENhcGVucywg
VHJhbnNHYW1pbmcgSW5jLgotICAgIERhbmllbCBLb2NoLCBUcmFuc0dhbWluZyBJbmMuCi0gICAg
QWxhc3RhaXIgUGF0cmljaywgR29vZ2xlIEluYy4KLSAgICBLZW5uZXRoIFJ1c3NlbGwsIEdvb2ds
ZSBJbmMuCi0gICAgR3JlZyBSb3RoLCBOVklESUEgQ29ycG9yYXRpb24KLSAgICBCZW4gQm93bWFu
LCBJbWFnaW5hdGlvbiBUZWNobm9sb2dpZXMKLSAgICBNZW1iZXJzIG9mIHRoZSBXZWJHTCBhbmQg
T3BlbkdMIEVTIHdvcmtpbmcgZ3JvdXBzCi0KLUNvbnRhY3QKLQotICAgIERhbmllbCBLb2NoIChk
YW5pZWwgJ2F0JyB0cmFuc2dhbWluZy5jb20pCi0KLVN0YXR1cwotCi0gICAgRHJhZnQgQ29tcGxl
dGUgCi0KLVZlcnNpb24KLQotICAgIExhc3QgTW9kaWZpZWQgRGF0ZTogSmFudWFyeSAzMCwgMjAx
MwotICAgIFJldmlzaW9uOiAjNwotCi1OdW1iZXIKLQotICAgIFRCRAotCi1EZXBlbmRlbmNpZXMK
LQotICAgIE9wZW5HTCBFUyAyLjAgaXMgcmVxdWlyZWQuCi0KLSAgICBUaGUgZXh0ZW5zaW9uIGlz
IHdyaXR0ZW4gYWdhaW5zdCB0aGUgT3BlbkdMIEVTIDIuMCBzcGVjaWZpY2F0aW9uLgotCi0gICAg
QU5HTEVfZnJhbWVidWZmZXJfYmxpdCBhZmZlY3RzIHRoZSBkZWZpbml0aW9uIG9mIHRoaXMgZXh0
ZW5zaW9uLgotICAgIEFQUExFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIGFmZmVjdHMgdGhlIGRl
ZmluaXRpbiBvZiB0aGlzIGV4dGVuc2lvbi4KLQotT3ZlcnZpZXcKLQotICAgIFRoaXMgZXh0ZW5z
aW9uIGluY3JlYXNlcyB0aGUgbnVtYmVyIG9mIGF2YWlsYWJsZSBmcmFtZWJ1ZmZlciBvYmplY3QK
LSAgICBjb2xvciBhdHRhY2htZW50IHBvaW50cywgZXh0ZW5kcyBPcGVuR0wgRVMgMi4wIHRvIGFs
bG93IG11bHRpcGxlIG91dHB1dAotICAgIGNvbG9ycywgYW5kIHByb3ZpZGVzIGEgbWVjaGFuaXNt
IGZvciBkaXJlY3RpbmcgdGhvc2Ugb3V0cHV0cyB0bwotICAgIG11bHRpcGxlIGNvbG9yIGJ1ZmZl
cnMuCi0KLSAgICBUaGlzIGV4dGVuc2lvbiBpcyBzaW1pbGFyIHRvIHRoZSBjb21iaW5hdGlvbiBv
ZiB0aGUgR0xfTlZfZHJhd19idWZmZXJzCi0gICAgYW5kIEdMX05WX2Zib19jb2xvcl9hdHRhY2ht
ZW50cyBleHRlbnNpb25zLCBidXQgaW1wb3NlcyBjZXJ0YWluCi0gICAgcmVzdHJpY3Rpb25zIGlu
Zm9ybWVkIGJ5IHRoZSBPcGVuR0wgRVMgMy4wIEFQSS4KLQotTmV3IFByb2NlZHVyZXMgYW5kIEZ1
bmN0aW9ucwotCi0gICAgICB2b2lkIERyYXdCdWZmZXJzRVhUKHNpemVpIG4sIGNvbnN0IGVudW0g
KmJ1ZnMpOwotCi1OZXcgVG9rZW5zCi0KLSAgICBBY2NlcHRlZCBieSB0aGUgPHBuYW1lPiBwYXJh
bWV0ZXIgb2YgR2V0SW50ZWdlcnY6Ci0KLSAgICAgICAgTUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VY
VCAgICAgICAgICAgICAweDhDREYKLQotICAgIEFjY2VwdGVkIGJ5IHRoZSA8cG5hbWU+IHBhcmFt
ZXRlcnMgb2YgR2V0SW50ZWdlcnYgYW5kIEdldEZsb2F0djoKLQotICAgICAgICBNQVhfRFJBV19C
VUZGRVJTX0VYVCAgICAgICAgICAgICAgICAgIDB4ODgyNAotICAgICAgICBEUkFXX0JVRkZFUjBf
RVhUICAgICAgICAgICAgICAgICAgICAgIDB4ODgyNQotICAgICAgICBEUkFXX0JVRkZFUjFfRVhU
ICAgICAgICAgICAgICAgICAgICAgIDB4ODgyNgotICAgICAgICBEUkFXX0JVRkZFUjJfRVhUICAg
ICAgICAgICAgICAgICAgICAgIDB4ODgyNwotICAgICAgICBEUkFXX0JVRkZFUjNfRVhUICAgICAg
ICAgICAgICAgICAgICAgIDB4ODgyOAotICAgICAgICBEUkFXX0JVRkZFUjRfRVhUICAgICAgICAg
ICAgICAgICAgICAgIDB4ODgyOQotICAgICAgICBEUkFXX0JVRkZFUjVfRVhUICAgICAgICAgICAg
ICAgICAgICAgIDB4ODgyQQotICAgICAgICBEUkFXX0JVRkZFUjZfRVhUICAgICAgICAgICAgICAg
ICAgICAgIDB4ODgyQgotICAgICAgICBEUkFXX0JVRkZFUjdfRVhUICAgICAgICAgICAgICAgICAg
ICAgIDB4ODgyQwotICAgICAgICBEUkFXX0JVRkZFUjhfRVhUICAgICAgICAgICAgICAgICAgICAg
IDB4ODgyRAotICAgICAgICBEUkFXX0JVRkZFUjlfRVhUICAgICAgICAgICAgICAgICAgICAgIDB4
ODgyRQotICAgICAgICBEUkFXX0JVRkZFUjEwX0VYVCAgICAgICAgICAgICAgICAgICAgIDB4ODgy
RgotICAgICAgICBEUkFXX0JVRkZFUjExX0VYVCAgICAgICAgICAgICAgICAgICAgIDB4ODgzMAot
ICAgICAgICBEUkFXX0JVRkZFUjEyX0VYVCAgICAgICAgICAgICAgICAgICAgIDB4ODgzMQotICAg
ICAgICBEUkFXX0JVRkZFUjEzX0VYVCAgICAgICAgICAgICAgICAgICAgIDB4ODgzMgotICAgICAg
ICBEUkFXX0JVRkZFUjE0X0VYVCAgICAgICAgICAgICAgICAgICAgIDB4ODgzMwotICAgICAgICBE
UkFXX0JVRkZFUjE1X0VYVCAgICAgICAgICAgICAgICAgICAgIDB4ODgzNAotCi0gICAgQWNjZXB0
ZWQgYnkgdGhlIDxhdHRhY2htZW50PiBwYXJhbWV0ZXIgb2YgRnJhbWVidWZmZXJSZW5kZXJidWZm
ZXIsCi0gICAgRnJhbWVidWZmZXJUZXh0dXJlMkQgYW5kIEdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcml2LCBhbmQgYnkKLSAgICB0aGUgPGJ1ZnM+IHBhcmFtZXRlciBvZiBEcmF3QnVm
ZmVyc0VYVDoKLQotICAgICAgICBDT0xPUl9BVFRBQ0hNRU5UMF9FWFQgICAgICAgICAgICAgICAg
ICAgICAgMHg4Q0UwCi0gICAgICAgIENPTE9SX0FUVEFDSE1FTlQxX0VYVCAgICAgICAgICAgICAg
ICAgICAgICAweDhDRTEKLSAgICAgICAgQ09MT1JfQVRUQUNITUVOVDJfRVhUICAgICAgICAgICAg
ICAgICAgICAgIDB4OENFMgotICAgICAgICBDT0xPUl9BVFRBQ0hNRU5UM19FWFQgICAgICAgICAg
ICAgICAgICAgICAgMHg4Q0UzCi0gICAgICAgIENPTE9SX0FUVEFDSE1FTlQ0X0VYVCAgICAgICAg
ICAgICAgICAgICAgICAweDhDRTQKLSAgICAgICAgQ09MT1JfQVRUQUNITUVOVDVfRVhUICAgICAg
ICAgICAgICAgICAgICAgIDB4OENFNQotICAgICAgICBDT0xPUl9BVFRBQ0hNRU5UNl9FWFQgICAg
ICAgICAgICAgICAgICAgICAgMHg4Q0U2Ci0gICAgICAgIENPTE9SX0FUVEFDSE1FTlQ3X0VYVCAg
ICAgICAgICAgICAgICAgICAgICAweDhDRTcKLSAgICAgICAgQ09MT1JfQVRUQUNITUVOVDhfRVhU
ICAgICAgICAgICAgICAgICAgICAgIDB4OENFOAotICAgICAgICBDT0xPUl9BVFRBQ0hNRU5UOV9F
WFQgICAgICAgICAgICAgICAgICAgICAgMHg4Q0U5Ci0gICAgICAgIENPTE9SX0FUVEFDSE1FTlQx
MF9FWFQgICAgICAgICAgICAgICAgICAgICAweDhDRUEKLSAgICAgICAgQ09MT1JfQVRUQUNITUVO
VDExX0VYVCAgICAgICAgICAgICAgICAgICAgIDB4OENFQgotICAgICAgICBDT0xPUl9BVFRBQ0hN
RU5UMTJfRVhUICAgICAgICAgICAgICAgICAgICAgMHg4Q0VDCi0gICAgICAgIENPTE9SX0FUVEFD
SE1FTlQxM19FWFQgICAgICAgICAgICAgICAgICAgICAweDhDRUQKLSAgICAgICAgQ09MT1JfQVRU
QUNITUVOVDE0X0VYVCAgICAgICAgICAgICAgICAgICAgIDB4OENFRQotICAgICAgICBDT0xPUl9B
VFRBQ0hNRU5UMTVfRVhUICAgICAgICAgICAgICAgICAgICAgMHg4Q0VGCi0KLSAgICBUaGUgQ09M
T1JfQVRUQUNITUVOVDBfRVhUIGNvbnN0YW50IGlzIGVxdWFsIHRvIHRoZQotICAgIENPTE9SX0FU
VEFDSE1FTlQwIGNvbnN0YW50LgotCi0gICAgRWFjaCBDT0xPUl9BVFRBQ0hNRU5UPGk+X0VYVCBh
ZGhlcmVzIHRvIENPTE9SX0FUVEFDSE1FTlQ8aT5fRVhUCi0gICAgPSBDT0xPUl9BVFRBQ0hNRU5U
MF9FWFQgKyA8aT4uCi0KLUNoYW5nZXMgdG8gQ2hhcHRlciAzIG9mIHRoZSBPcGVuR0wgRVMgMi4w
IFNwZWNpZmljYXRpb24gKFJhc3Rlcml6YXRpb24pCi0KLSAgICBTZWN0aW9uIDMuMiwgKE11bHRp
c2FtcGxpbmcpLiBSZXBsYWNlIHRoZSBzZWNvbmQgcGFyYWdyYXBoOgotCi0gICAgQW4gYWRkaXRp
b25hbCBidWZmZXIsIGNhbGxlZCB0aGUgbXVsdGlzYW1wbGUgYnVmZmVyLCBpcyBhZGRlZCB0byB0
aGUKLSAgICB3aW5kb3cgc3lzdGVtLXByb3ZpZGVkIGZyYW1lYnVmZmVyLiBQaXhlbCBzYW1wbGUg
dmFsdWVzLCBpbmNsdWRpbmcKLSAgICBjb2xvciwgZGVwdGgsIGFuZCBzdGVuY2lsIHZhbHVlcywg
YXJlIHN0b3JlZCBpbiB0aGlzIGJ1ZmZlci4gU2FtcGxlcwotICAgIGNvbnRhaW4gc2VwYXJhdGUg
Y29sb3IgdmFsdWVzIGZvciBlYWNoIGZyYWdtZW50IGNvbG9yLiBXaGVuIHRoZQotICAgIHdpbmRv
dyBzeXN0ZW0tcHJvdmlkZWQgZnJhbWVidWZmZXIgaW5jbHVkZXMgYSBtdWx0aXNhbXBsZSBidWZm
ZXIsIGl0Ci0gICAgZG9lcyBub3QgaW5jbHVkZSBkZXB0aCBvciBzdGVuY2lsIGJ1ZmZlcnMsIGV2
ZW4gaWYgdGhlIG11bHRpc2FtcGxlCi0gICAgYnVmZmVyIGRvZXMgbm90IHN0b3JlIGRlcHRoIG9y
IHN0ZW5jaWwgdmFsdWVzLiBDb2xvciBidWZmZXJzIGRvCi0gICAgY29leGlzdCB3aXRoIHRoZSBt
dWx0aXNhbXBsZSBidWZmZXIsIGhvd2V2ZXIuCi0KLSAgICBTZWN0aW9uIDMuOC4yLCAoU2hhZGVy
IEV4ZWN1dGlvbikgUmVwbGFjZSBzdWJzZWN0aW9uICJTaGFkZXIKLSAgICBPdXRwdXRzIjoKLQot
ICAgIFRoZSBPcGVuR0wgRVMgU2hhZGluZyBMYW5ndWFnZSBzcGVjaWZpY2F0aW9uIGRlc2NyaWJl
cyB0aGUgdmFsdWVzCi0gICAgdGhhdCBtYXkgYmUgb3V0cHV0IGJ5IGEgZnJhZ21lbnQgc2hhZGVy
LiBUaGVzZSBhcmUgZ2xfRnJhZ0NvbG9yIGFuZAotICAgIGdsX0ZyYWdEYXRhW25dLiAgVGhlIGZp
bmFsIGZyYWdtZW50IGNvbG9yIHZhbHVlcyBvciB0aGUgZmluYWwKLSAgICBmcmFnbWVudCBkYXRh
IHZhbHVlcyB3cml0dGVuIGJ5IGEgZnJhZ21lbnQgc2hhZGVyIGFyZSBjbGFtcGVkIHRvIHRoZQot
ICAgIHJhbmdlIFswLCAxXSBhbmQgdGhlbiBjb252ZXJ0ZWQgdG8gZml4ZWQtcG9pbnQgYXMgZGVz
Y3JpYmVkIGluCi0gICAgc2VjdGlvbiAyLjEuMiBmb3IgZnJhbWVidWZmZXIgY29sb3IgY29tcG9u
ZW50cy4KLQotICAgIFdyaXRpbmcgdG8gZ2xfRnJhZ0NvbG9yIHNwZWNpZmllcyB0aGUgZnJhZ21l
bnQgY29sb3IgKGNvbG9yIG51bWJlcgotICAgIHplcm8pIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHN1
YnNlcXVlbnQgc3RhZ2VzIG9mIHRoZSBwaXBlbGluZS4KLSAgICBXcml0aW5nIHRvIGdsX0ZyYWdE
YXRhW25dIHNwZWNpZmllcyB0aGUgdmFsdWUgb2YgZnJhZ21lbnQgY29sb3IKLSAgICBudW1iZXIg
bi4gQW55IGNvbG9ycywgb3IgY29sb3IgY29tcG9uZW50cywgYXNzb2NpYXRlZCB3aXRoIGEKLSAg
ICBmcmFnbWVudCB0aGF0IGFyZSBub3Qgd3JpdHRlbiBieSB0aGUgZnJhZ21lbnQgc2hhZGVyIGFy
ZSB1bmRlZmluZWQuCi0gICAgQSBmcmFnbWVudCBzaGFkZXIgbWF5IG5vdCBzdGF0aWNhbGx5IGFz
c2lnbiB2YWx1ZXMgdG8gYm90aAotICAgIGdsX0ZyYWdDb2xvciBhbmQgZ2xfRnJhZ0RhdGEuIElu
IHRoaXMgY2FzZSwgYSBjb21waWxlIG9yIGxpbmsgZXJyb3IKLSAgICB3aWxsIHJlc3VsdC4gQSBz
aGFkZXIgc3RhdGljYWxseSBhc3NpZ25zIGEgdmFsdWUgdG8gYSB2YXJpYWJsZSBpZiwKLSAgICBh
ZnRlciBwcmVwcm9jZXNzaW5nLCBpdCBjb250YWlucyBhIHN0YXRlbWVudCB0aGF0IHdvdWxkIHdy
aXRlIHRvIHRoZQotICAgIHZhcmlhYmxlLCB3aGV0aGVyIG9yIG5vdCBydW4tdGltZSBmbG93IG9m
IGNvbnRyb2wgd2lsbCBjYXVzZSB0aGF0Ci0gICAgc3RhdGVtZW50IHRvIGJlIGV4ZWN1dGVkLgot
Ci1DaGFuZ2VzIHRvIENoYXB0ZXIgNCBvZiB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZpY2F0aW9u
IChQZXItRnJhZ21lbnQKLU9wZXJhdGlvbnMgYW5kIHRoZSBGcmFtZSBCdWZmZXIpCi0KLSAgICBN
b2RpZnkgdGhlIG92ZXJ2aWV3IG9mIENoYXB0ZXIgNCBhbmQgcmVwbGFjZSB0aGUgc2VudGVuY2Vz
Ci0gICAgb2YgdGhlIGZpZnRoIHBhcmFncmFwaCB3aGljaCByZWFkOiAKLQotICAgICJUaGUgbmFt
ZSBvZiB0aGUgY29sb3IgYnVmZmVyIG9mIGFuIGFwcGxpY2F0aW9uLWNyZWF0ZWQgZnJhbWVidWZm
ZXIKLSAgICBvYmplY3QgaXMgQ09MT1JfQVRUQUNITUVOVDAuIFRoZSBuYW1lcyBvZiB0aGUgZGVw
dGggYW5kIHN0ZW5jaWwgYnVmZmVycwotICAgIGFyZSBERVBUSF9BVFRBQ0hNRU5UIGFuZCBTVEVO
Q0lMX0FUVEFDSE1FTlQuIiAKLQotICAgIFdpdGggdGhlIGZvbGxvd2luZzoKLQotICAgICJBIGZy
YW1lYnVmZmVyIG9iamVjdCBoYXMgYW4gYXJyYXkgb2YgY29sb3IgYnVmZmVyIGF0dGFjaG1lbnQg
cG9pbnRzLAotICAgIG51bWJlcmVkIHplcm8gdGhyb3VnaCA8bj4sIGEgZGVwdGggYnVmZmVyIGF0
dGFjaG1lbnQgcG9pbnQsIGFuZCBhCi0gICAgc3RlbmNpbCBidWZmZXIgYXR0YWNobWVudCBwb2lu
dC4iIAotCi0gICAgSW5zZXJ0IFRhYmxlIDQuMyB0byBTZWN0aW9uIDQuMi4xIChhbmQgcmVudW1i
ZXIgc3Vic2VxdWVudCB0YWJsZXMpOgotCi0gICAgU3ltYm9saWMgQ29uc3RhbnQgICAgICAgICAg
ICAgICAgICAgICAgIE1lYW5pbmcKLSAgICAtLS0tLS0tLS0tLS0tLS0tLSAgICAgICAgICAgICAg
ICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgTk9ORSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5vIGJ1ZmZlcgotCi0gICAgQ09MT1JfQVRUQUNITUVOVDxpPl9F
WFQgKHNlZSBjYXB0aW9uKSAgIE91dHB1dCBmcmFnbWVudCBjb2xvciB0byBpbWFnZSAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0YWNoZWQgYXQgY29sb3Ig
YXR0YWNobWVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
b2ludCBpCi0KLSAgICBUYWJsZSA0LjM6IEFyZ3VtZW50cyB0byBEcmF3QnVmZmVyc0VYVCB3aGVu
IHRoZSBjb250ZXh0IGlzIGJvdW5kIHRvIGEKLSAgICBmcmFtZWJ1ZmZlciBvYmplY3QsIGFuZCB0
aGUgYnVmZmVycyB0aGV5IGluZGljYXRlLiA8aT4gaW4KLSAgICBDT0xPUl9BVFRBQ0hNRU5UPGk+
X0VYVCBtYXkgcmFuZ2UgZnJvbSB6ZXJvIHRvIHRoZSB2YWx1ZSBvZgotICAgIE1BWF9DT0xPUl9B
VFRBQ0hNRU5UU19FWFQgbWludXMgb25lLgotCi0gICAgUmVwbGFjZSBTZWN0aW9uIDQuMi4xLCAi
U2VsZWN0aW5nIGEgQnVmZmVyIGZvciBXcml0aW5nIiB3aXRoIHRoZSBmb2xsb3dpbmc6Ci0KLSAg
ICAiQnkgZGVmYXVsdCwgY29sb3IgdmFsdWVzIGFyZSB3cml0dGVuIGludG8gdGhlIGZyb250IGJ1
ZmZlciBmb3IKLSAgICBzaW5nbGUgYnVmZmVyZWQgc3VyZmFjZXMgb3IgaW50byB0aGUgYmFjayBi
dWZmZXIgZm9yIGJhY2sgYnVmZmVyZWQKLSAgICBzdXJmYWNlcyBhcyBkZXRlcm1pbmVkIHdoZW4g
bWFraW5nIHRoZSBjb250ZXh0IGN1cnJlbnQuIFRvIGNvbnRyb2wKLSAgICB0aGUgY29sb3IgYnVm
ZmVyIGludG8gd2hpY2ggZWFjaCBvZiB0aGUgZnJhZ21lbnQgY29sb3IgdmFsdWVzIGlzCi0gICAg
d3JpdHRlbiwgRHJhd0J1ZmZlcnNFWFQgaXMgdXNlZC4KLQotICAgIFRoZSBjb21tYW5kCi0KLSAg
ICAgIHZvaWQgRHJhd0J1ZmZlcnNFWFQoc2l6ZWkgbiwgY29uc3QgZW51bSAqYnVmcyk7Ci0KLSAg
ICBkZWZpbmVzIHRoZSBkcmF3IGJ1ZmZlcnMgdG8gd2hpY2ggYWxsIGZyYWdtZW50IGNvbG9ycyBh
cmUgd3JpdHRlbi4KLSAgICA8bj4gc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgYnVmZmVycyBpbiA8
YnVmcz4uIDxidWZzPiBpcyBhIHBvaW50ZXIKLSAgICB0byBhbiBhcnJheSBvZiBzeW1ib2xpYyBj
b25zdGFudHMgc3BlY2lmeWluZyB0aGUgYnVmZmVyIHRvIHdoaWNoCi0gICAgZWFjaCBmcmFnbWVu
dCBjb2xvciBpcyB3cml0dGVuLgotCi0gICAgRWFjaCBidWZmZXIgbGlzdGVkIGluIDxidWZzPiBt
dXN0IGJlIEJBQ0ssIE5PTkUsIG9yIG9uZSBvZiB0aGUKLSAgICB2YWx1ZXMgZnJvbSB0YWJsZSA0
LjMuIEZ1cnRoZXIsIGFjY2VwdGFibGUgdmFsdWVzIGZvciB0aGUgY29uc3RhbnRzCi0gICAgaW4g
PGJ1ZnM+IGRlcGVuZCBvbiB3aGV0aGVyIHRoZSBHTCBpcyB1c2luZyB0aGUgZGVmYXVsdCBmcmFt
ZWJ1ZmZlcgotICAgIChpLmUuLCBEUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkcgaXMgemVybyksIG9y
IGEgZnJhbWVidWZmZXIgb2JqZWN0Ci0gICAgKGkuZS4sIERSQVdfRlJBTUVCVUZGRVJfQklORElO
RyBpcyBub24temVybykuIEZvciBtb3JlIGluZm9ybWF0aW9uCi0gICAgYWJvdXQgZnJhbWVidWZm
ZXIgb2JqZWN0cywgc2VlIHNlY3Rpb24gNC40LgotCi0gICAgSWYgdGhlIEdMIGlzIGJvdW5kIHRv
IHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyLCB0aGVuIDxuPiBtdXN0IGJlIDEKLSAgICBhbmQgdGhl
IGNvbnN0YW50IG11c3QgYmUgQkFDSyBvciBOT05FLiBXaGVuIGRyYXcgYnVmZmVyIHplcm8gaXMK
LSAgICBCQUNLLCBjb2xvciB2YWx1ZXMgYXJlIHdyaXR0ZW4gaW50byB0aGUgc29sZSBidWZmZXIg
Zm9yIHNpbmdsZS0KLSAgICBidWZmZXJlZCBjb250ZXh0cywgb3IgaW50byB0aGUgYmFjayBidWZm
ZXIgZm9yIGRvdWJsZS1idWZmZXJlZAotICAgIGNvbnRleHRzLiBJZiBEcmF3QnVmZmVyc0VYVCBp
cyBzdXBwbGllZCB3aXRoIGEgY29uc3RhbnQgb3RoZXIgdGhhbgotICAgIEJBQ0sgYW5kIE5PTkUs
IHRoZSBlcnJvciBJTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQuCi0KLSAgICBJZiB0aGUg
R0wgaXMgYm91bmQgdG8gYSBkcmF3IGZyYW1lYnVmZmVyIG9iamVjdCwgdGhlbiBlYWNoIG9mIHRo
ZQotICAgIGNvbnN0YW50cyBtdXN0IGJlIG9uZSBvZiB0aGUgdmFsdWVzIGxpc3RlZCBpbiB0YWJs
ZSA0LjMuCi0KLSAgICBJbiBib3RoIGNhc2VzLCB0aGUgZHJhdyBidWZmZXJzIGJlaW5nIGRlZmlu
ZWQgY29ycmVzcG9uZCBpbiBvcmRlciB0bwotICAgIHRoZSByZXNwZWN0aXZlIGZyYWdtZW50IGNv
bG9ycy4gVGhlIGRyYXcgYnVmZmVyIGZvciBmcmFnbWVudAotICAgIGNvbG9ycyBiZXlvbmQgPG4+
IGlzIHNldCB0byBOT05FLgotCi0gICAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGRyYXcgYnVmZmVy
cyBpcyBpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQuIFRoZQotICAgIG51bWJlciBvZiBkcmF3IGJ1
ZmZlcnMgc3VwcG9ydGVkIGNhbiBiZSBxdWVyaWVkIGJ5IGNhbGxpbmcKLSAgICBHZXRJbnRlZ2Vy
diB3aXRoIHRoZSBzeW1ib2xpYyBjb25zdGFudCBNQVhfRFJBV19CVUZGRVJTX0VYVC4gQW4KLSAg
ICBJTlZBTElEX1ZBTFVFIGVycm9yIGlzIGdlbmVyYXRlZCBpZiA8bj4gaXMgZ3JlYXRlciB0aGFu
Ci0gICAgTUFYX0RSQVdfQlVGRkVSU19FWFQuCi0KLSAgICBJZiB0aGUgR0wgaXMgYm91bmQgdG8g
YSBkcmF3IGZyYW1lYnVmZmVyIG9iamVjdCwgdGhlIDxpPnRoIGJ1ZmZlciBsaXN0ZWQKLSAgICBp
biA8YnVmcz4gbXVzdCBiZSBDT0xPUl9BVFRBQ0hNRU5UPGk+X0VYVCBvciBOT05FLiBTcGVjaWZ5
aW5nIGEKLSAgICBidWZmZXIgb3V0IG9mIG9yZGVyLCBCQUNLLCBvciBDT0xPUl9BVFRBQ0hNRU5U
PG0+X0VYVCB3aGVyZSA8bT4gaXMKLSAgICBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHZh
bHVlIG9mIE1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQsCi0gICAgd2lsbCBnZW5lcmF0ZSB0aGUg
ZXJyb3IgSU5WQUxJRF9PUEVSQVRJT04uCi0KLSAgICBJZiBhIGZyYWdtZW50IHNoYWRlciB3cml0
ZXMgdG8gImdsX0ZyYWdDb2xvciIsIERyYXdCdWZmZXJzRVhUIAotICAgIHNwZWNpZmllcyB0aGUg
c2V0IG9mIGRyYXcgYnVmZmVycyBpbnRvIHdoaWNoIHRoZSBjb2xvciAKLSAgICB3cml0dGVuIHRv
ICJnbF9GcmFnQ29sb3IiIGlzIHdyaXR0ZW4uIElmIGEgZnJhZ21lbnQgc2hhZGVyIHdyaXRlcyB0
bwotICAgICJnbF9GcmFnRGF0YSIsIERyYXdCdWZmZXJzRVhUIHNwZWNpZmllcyBhIHNldCBvZiBk
cmF3IGJ1ZmZlcnMKLSAgICBpbnRvIHdoaWNoIGVhY2ggb2YgdGhlIG11bHRpcGxlIG91dHB1dCBj
b2xvcnMgZGVmaW5lZCBieSB0aGVzZQotICAgIHZhcmlhYmxlcyBhcmUgc2VwYXJhdGVseSB3cml0
dGVuLiBJZiBhIGZyYWdtZW50IHNoYWRlciB3cml0ZXMgdG8KLSAgICBuZWl0aGVyICJnbF9GcmFn
Q29sb3IiIG5vciAiZ2xfRnJhZ0RhdGEiIHRoZSB2YWx1ZXMgb2YgdGhlCi0gICAgZnJhZ21lbnQg
Y29sb3JzIGZvbGxvd2luZyBzaGFkZXIgZXhlY3V0aW9uIGFyZSB1bmRlZmluZWQsIGFuZCBtYXkK
LSAgICBkaWZmZXIgZm9yIGVhY2ggZnJhZ21lbnQgY29sb3IuCi0KLSAgICBJbmRpY2F0aW5nIGEg
YnVmZmVyIG9yIGJ1ZmZlcnMgdXNpbmcgRHJhd0J1ZmZlcnNFWFQgY2F1c2VzCi0gICAgc3Vic2Vx
dWVudCBwaXhlbCBjb2xvciB2YWx1ZSB3cml0ZXMgdG8gYWZmZWN0IHRoZSBpbmRpY2F0ZWQKLSAg
ICBidWZmZXJzLiBJZiB0aGUgR0wgaXMgYm91bmQgdG8gYSBkcmF3IGZyYW1lYnVmZmVyIG9iamVj
dCBhbmQgYSBkcmF3Ci0gICAgYnVmZmVyIHNlbGVjdHMgYW4gYXR0YWNobWVudCB0aGF0IGhhcyBu
byBpbWFnZSBhdHRhY2hlZCwgdGhlbiB0aGF0Ci0gICAgZnJhZ21lbnQgY29sb3IgaXMgbm90IHdy
aXR0ZW4uCi0KLSAgICBTcGVjaWZ5aW5nIE5PTkUgYXMgdGhlIGRyYXcgYnVmZmVyIGZvciBhIGZy
YWdtZW50IGNvbG9yIHdpbGwgaW5oaWJpdAotICAgIHRoYXQgZnJhZ21lbnQgY29sb3IgZnJvbSBi
ZWluZyB3cml0dGVuLgotCi0gICAgVGhlIHN0YXRlIHJlcXVpcmVkIHRvIGhhbmRsZSBjb2xvciBi
dWZmZXIgc2VsZWN0aW9uIGZvciBlYWNoCi0gICAgZnJhbWVidWZmZXIgaXMgYW4gaW50ZWdlciBm
b3IgZWFjaCBzdXBwb3J0ZWQgZnJhZ21lbnQgY29sb3IuIEZvciB0aGUKLSAgICBkZWZhdWx0IGZy
YW1lYnVmZmVyLCBpbiB0aGUgaW5pdGlhbCBzdGF0ZSB0aGUgZHJhdyBidWZmZXIgZm9yCi0gICAg
ZnJhZ21lbnQgY29sb3IgemVybyBpcyBCQUNLIGlmIHRoZXJlIGlzIGEgZGVmYXVsdCBmcmFtZWJ1
ZmZlcgotICAgIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29udGV4dCwgb3RoZXJ3aXNlIE5PTkUuIEZv
ciBmcmFtZWJ1ZmZlcgotICAgIG9iamVjdHMsIGluIHRoZSBpbml0aWFsIHN0YXRlIHRoZSBkcmF3
IGJ1ZmZlciBmb3IgZnJhZ21lbnQgY29sb3IKLSAgICB6ZXJvIGlzIENPTE9SX0FUVEFDSE1FTlQw
X0VYVC4KLQotICAgIEZvciBib3RoIHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyIGFuZCBmcmFtZWJ1
ZmZlciBvYmplY3RzLCB0aGUKLSAgICBpbml0aWFsIHN0YXRlIG9mIGRyYXcgYnVmZmVycyBmb3Ig
ZnJhZ21lbnQgY29sb3JzIG90aGVyIHRoYW4gemVybyBpcwotICAgIE5PTkUuCi0KLSAgICBUaGUg
dmFsdWUgb2YgdGhlIGRyYXcgYnVmZmVyIHNlbGVjdGVkIGZvciBmcmFnbWVudCBjb2xvciA8aT4g
Y2FuIGJlCi0gICAgcXVlcmllZCBieSBjYWxsaW5nIEdldEludGVnZXJ2IHdpdGggdGhlIHN5bWJv
bGljIGNvbnN0YW50Ci0gICAgRFJBV19CVUZGRVI8aT5fRVhULiIKLQotICAgIE1vZGlmeSBTZWN0
aW9uIDQuMi4zIChDbGVhcmluZyB0aGUgQnVmZmVycykgYW5kIHJlcGxhY2UgdGhlIGZpcnN0Ci0g
ICAgdHdvIHBhcmFncmFwaHMgd2l0aCB0aGUgZm9sbG93aW5nOgotCi0gICAgIlRoZSBHTCBwcm92
aWRlcyBhIG1lYW5zIGZvciBzZXR0aW5nIHBvcnRpb25zIG9mIGV2ZXJ5IHBpeGVsIGluIGEKLSAg
ICBwYXJ0aWN1bGFyIGJ1ZmZlciB0byB0aGUgc2FtZSB2YWx1ZS4gIFRoZSBhcmd1bWVudCB0bwot
ICAgIAotICAgICAgICB2b2lkIENsZWFyKGJpdGZpZWxkIGJ1Zik7Ci0KLSAgICBpcyB0aGUgYml0
d2lzZSBPUiBvZiBhIG51bWJlciBvZiB2YWx1ZXMgaW5kaWNhdGluZyB3aGljaCBidWZmZXJzIGFy
ZQotICAgIHRvIGJlIGNsZWFyZWQuIFRoZSB2YWx1ZXMgYXJlIENPTE9SX0JVRkZFUl9CSVQsIERF
UFRIX0JVRkZFUl9CSVQsIGFuZAotICAgIFNURU5DSUxfQlVGRkVSX0JJVCwgaW5kaWNhdGluZyB0
aGUgYnVmZmVycyBjdXJyZW50bHkgZW5hYmxlZCBmb3IgY29sb3IKLSAgICB3cml0aW5nLCB0aGUg
ZGVwdGggYnVmZmVyLCBhbmQgdGhlIHN0ZW5jaWwgYnVmZmVyIChzZWUgYmVsb3cpLCAKLSAgICBy
ZXNwZWN0aXZlbHkuIFRoZSB2YWx1ZSB0byB3aGljaCBlYWNoIGJ1ZmZlciBpcyBjbGVhcmVkIGRl
cGVuZHMgb24KLSAgICB0aGUgc2V0dGluZyBvZiB0aGUgY2xlYXIgdmFsdWUgZm9yIHRoYXQgYnVm
ZmVyLiAgSWYgdGhlIG1hc2sgaXMgbm90IGEKLSAgICBiaXR3aXNlIE9SIG9mIHRoZSBzcGVjaWZp
ZWQgdmFsdWVzLCB0aGVuIHRoZSBlcnJvciBJTlZBTElEX1ZBTFVFIGlzCi0gICAgZ2VuZXJhdGVk
LgotCi0gICAgICAgIHZvaWQgQ2xlYXJDb2xvcihjbGFtcGYgciwgY2xhbXBmLCBnLCBjbGFtcGYg
YiwgY2xhbXBmIGEpOwotICAgCi0gICAgc2V0cyB0aGUgY2xlYXIgdmFsdWUgZm9yIGZpeGVkLXBv
aW50IGNvbG9yIGJ1ZmZlcnMuICBFYWNoIG9mIHRoZQotICAgIHNwZWNpZmllZCBjb21wb25lbnRz
IGlzIGNsYW1wZWQgdG8gWzAsIDFdIGFuZCBjb252ZXJ0ZWQgdG8gZml4ZWQtcG9pbnQKLSAgICBh
cyBkZXNjcmliZWQgaW4gc2VjdGlvbiAyLjEuMiBmb3IgZnJhbWVidWZmZXIgY29sb3IgY29tcG9u
ZW50cy4iCi0KLSAgICBSZXBsYWNlIHRoZSBzZWNvbmQgcGFyYWdyYXBoIG9mIFNlY3Rpb24gNC40
LjEgKEJpbmRpbmcgYW5kIE1hbmFnaW5nCi0gICAgRnJhbWVidWZmZXIgT2JqZWN0cykgd2l0aCB0
aGUgZm9sbG93aW5nOgotCi0gICAgIlRoZSBuYW1lc3BhY2UgZm9yIGZyYW1lYnVmZmVyIG9iamVj
dHMgaXMgdGhlIHVuc2lnbmVkIGludGVnZXJzLCB3aXRoCi0gICAgemVybyByZXNlcnZlZCBieSBP
cGVuR0wgRVMgdG8gcmVmZXIgdG8gdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIuIEEKLSAgICBmcmFt
ZWJ1ZmZlciBvYmplY3QgaXMgY3JlYXRlZCBieSBiaW5kaW5nIGFuIHVudXNlZCBuYW1lIHRvIHRo
ZQotICAgIHRhcmdldCBGUkFNRUJVRkZFUiwgRFJBV19GUkFNRUJVRkZFUiwgb3IgUkVBRF9GUkFN
RUJVRkZFUi4gVGhlIGJpbmRpbmcKLSAgICBpcyBlZmZlY3RlZCBieSBjYWxsaW5nCi0KLSAgICAg
ICAgdm9pZCBCaW5kRnJhbWVidWZmZXIoZW51bSB0YXJnZXQsIHVpbnQgZnJhbWVidWZmZXIpOwot
Ci0gICAgd2l0aCA8dGFyZ2V0PiBzZXQgdGhlIGRlc2lyZWQgZnJhbWVidWZmZXIgdGFyZ2V0IGFu
ZCA8ZnJhbWVidWZmZXI+IHNldCAKLSAgICB0byB0aGUgdW51c2VkIG5hbWUuIFRoZSByZXN1bHRp
bmcgZnJhbWVidWZmZXIgb2JqZWN0IGlzIGEgbmV3IHN0YXRlIAotICAgIHZlY3Rvci4gVGhlcmUg
aXMgYSBudW1iZXIgb2YgY29sb3IgYXR0YWNobWVudCBwb2ludHMsIHBsdXMgb25lIGVhY2gKLSAg
ICBmb3IgdGhlIGRlcHRoIGFuZCBzdGVuY2lsIGF0dGFjaG1lbnQgcG9pbnRzLiBUaGUgbnVtYmVy
IG9mIGNvbG9yIGF0dGFjaG1lbnQKLSAgICBwb2ludHMgaXMgZXF1YWwgdG8gdGhlIHZhbHVlIG9m
IE1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQuIgotCi0gICAgUmVwbGFjZSB0aGUgdGhpcmQgaXRl
bSBpbiB0aGUgYnVsbGV0ZWQgbGlzdCBpbiBTZWN0aW9uIDQuNC4xIChCaW5kaW5nCi0gICAgYW5k
IE1hbmFnaW5nIEZyYW1lYnVmZmVyIE9iamVjdHMpIHdpdGggdGhlIGZvbGxvd2luZzoKLQotICAg
ICIgKiBUaGUgb25seSBjb2xvciBidWZmZXIgYml0cGxhbmVzIGFyZSB0aGUgb25lcyBkZWZpbmVk
IGJ5IHRoZQotICAgIGZyYW1lYnVmZmVyIGF0dGFjaG1lbnRzIHBvaW50cyBuYW1lZCBDT0xPUl9B
VFRBQ0hNRU5UMF9FWFQgdGhyb3VnaAotICAgIENPTE9SX0FUVEFDSE1FTlQ8bj5fRVhULiIKLQot
ICAgIE1vZGlmeSBTZWN0aW9uIDQuNC4zIChSZW5kZXJidWZmZXIgT2JqZWN0cykgaW4gdGhlIAot
ICAgICJBdHRhY2hpbmcgUmVuZGVyYnVmZmVyIEltYWdlcyB0byBhIEZyYW1lYnVmZmVyIiBzdWJz
ZWN0aW9uIGFzIGZvbGxvd3M6Ci0KLSAgICBJbnNlcnQgdGhlIGZvbGxvd2luZyB0YWJsZToKLQot
ICAgIE5hbWUgb2YgYXR0YWNobWVudAotICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotICAgIENPTE9SX0FUVEFDSE1FTlQ8aT5fRVhUIChzZWUgY2FwdGlvbikKLSAg
ICBERVBUSF9BVFRBQ0hNRU5UCi0gICAgU1RFTkNJTF9BVFRBQ0hNRU5UCi0KLSAgICBUYWJsZSA0
Lng6IEZyYW1lYnVmZmVyIGF0dGFjaG1lbnQgcG9pbnRzLiA8aT4gaW4gQ09MT1JfQVRUQUNITUVO
VDxpPl9FWFQKLSAgICBtYXkgcmFuZ2UgZnJvbSB6ZXJvIHRvIHRoZSB2YWx1ZSBvZiBNQVhfQ09M
T1JfQVRUQUNITUVOVFNfRVhUIG1pbnVzIDEuCi0KLSAgICBNb2RpZnkgdGhlIHRoaXJkIHNlbnRl
bmNlIG9mIHRoZSBwYXJhZ3JhcGggZm9sbG93aW5nIHRoZSBkZWZpbml0aW9uIG9mCi0gICAgRnJh
bWVidWZmZXJSZW5kZXJidWZmZXIgdG8gYmUgYXMgZm9sbG93czoKLQotICAgICI8YXR0YWNobWVu
dD4gc2hvdWxkIGJlIHNldCB0byBvbmUgb2YgdGhlIGF0dGFjaG1lbnQgcG9pbnRzIG9mIHRoZSAK
LSAgICBmcmFtZWJ1ZmZlciBsaXN0ZWQgaW4gVGFibGUgNC54LiIgCi0KLSAgICBNb2RpZnkgU2Vj
dGlvbiA0LjQuMyAoUmVuZGVyYnVmZmVyIE9iamVjdHMpIGluIHRoZSAiQXR0YWNoaW5nIFRleHR1
cmUKLSAgICBJbWFnZXMgdG8gYSBGcmFtZWJ1ZmZlciIgc3Vic2VjdGlvbiBhcyBmb2xsb3dzOgot
Ci0gICAgTW9kaWZ5IHRoZSBsYXN0IHNlbnRlbmNlIG9mIHRoZSBwYXJhZ3JhcGggZm9sbG93aW5n
IHRoZSBkZWZpbml0aW9uIG9mCi0gICAgRnJhbWVidWZmZXJUZXh0dXJlMkQgdG8gYmUgYXMgZm9s
bG93czoKLQotICAgICI8YXR0YWNobWVudD4gbXVzdCBiZSBvbmUgb2YgdGhlIGF0dGFjaG1lbnQg
cG9pbnRzIG9mIHRoZSBmcmFtZWJ1ZmZlcgotICAgIGxpc3RlZCBpbiBUYWJsZSA0LnguIgotCi0g
ICAgTW9kaWZ5IFNlY3Rpb24gNC40LjUgKEZyYW1lYnVmZmVyIENvbXBsZXRlbmVzcykgYW5kIHJl
cGxhY2UgdGhlIDNyZAotICAgIGl0ZW0gaW4gdGhlIGJ1bGxldGVkIGxpc3QgaW4gdGhlICJGcmFt
ZWJ1ZmZlciBBdHRhY2htZW50IENvbXBsZXRlbmVzcyIKLSAgICBzdWJzZWN0aW9uIHdpdGggdGhl
IGZvbGxvd2luZzoKLQotICAgICIgKiBJZiA8YXR0YWNobWVudD4gaXMgQ09MT1JfQVRUQUNITUVO
VDxpPl9FWFQsIHRoZW4gPGltYWdlPiBtdXN0Ci0gICAgaGF2ZSBhIGNvbG9yLXJlbmRlcmFibGUg
aW50ZXJuYWwgZm9ybWF0LiIKLQotQ2hhbmdlcyB0byBDaGFwdGVyIDYgb2YgdGhlIE9wZW5HTCBF
UyAyLjAgU3BlY2lmaWNhdGlvbiAoU3RhdGUgYW5kCi1TdGF0ZSBSZXF1ZXN0cykKLQotICAgIElu
IHNlY3Rpb24gNi4xLjMgKEVudW1lcmF0ZWQgUXVlcmllcykgbW9kaWZ5IHRoZSB0aGlyZCBzZW50
ZW5jZSBpbgotICAgIHRoZSBkZWZpbml0aW9uIG9mIEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcml2IHRvIGJlIGFzIGZvbGxvd3M6Ci0KLSAgICAiPGF0dGFjaG1lbnQ+IG11c3QgYmUg
b25lIG9mIHRoZSBhdHRhY2htZW50IHBvaW50cyBvZiB0aGUgZnJhbWVidWZmZXIKLSAgICBsaXN0
ZWQgaW4gVGFibGUgNC54LiIKLQotQ2hhbmdlcyB0byBDaGFwdGVyIDMgb2YgdGhlIE9wZW5HTCBF
UyBTaGFkaW5nIExhbmd1YWdlIDEuMC4xNyBTcGVjaWZpY2F0aW9uIChCYXNpY3MpCi0KLSAgICBB
ZGQgYSBuZXcgc2VjdGlvbjoKLQotICAgIDMuNC4xIEdMX0VYVF9kcmF3X2J1ZmZlcnMgRXh0ZW5z
aW9uCi0KLSAgICBUbyB1c2UgdGhlIEdMX0VYVF9kcmF3X2J1ZmZlcnMgZXh0ZW5zaW9uIGluIGEg
c2hhZGVyIGl0Ci0gICAgbXVzdCBiZSBlbmFibGVkIHVzaW5nIHRoZSAjZXh0ZW5zaW9uIGRpcmVj
dGl2ZS4KLQotICAgIFRoZSBzaGFkaW5nIGxhbmd1YWdlIHByZXByb2Nlc3NvciAjZGVmaW5lCi0g
ICAgR0xfRVhUX2RyYXdfYnVmZmVycyB3aWxsIGJlIGRlZmluZWQgdG8gMSwgaWYgdGhlCi0gICAg
R0xfRVhUX2RyYXdfYnVmZmVycyBleHRlbnNpb24gaXMgc3VwcG9ydGVkLgotCi1EZXBlbmRlbmNp
ZXMgb24gQU5HTEVfZnJhbWVidWZmZXJfYmxpdCBhbmQgQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlz
YW1wbGU6Ci0KLSAgICBJZiBuZWl0aGVyIEFOR0xFX2ZyYW1lYnVmZmVyX2JsaXQgbm9yIEFQUExF
X2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIGFyZQotICAgIHN1cHBvcnRlZCwgdGhlbiBhbGwgcmVm
ZXJlbmNlcyB0byAiZHJhdyBmcmFtZWJ1ZmZlcnMiIHNob3VsZCBiZSByZXBsYWNlZAotICAgIHdp
dGggcmVmZXJlbmNlcyB0byAiZnJhbWVidWZmZXJzIi4gUmVmZXJlbmNlcyB0byBEUkFXX0ZSQU1F
QlVGRkVSX0JJTkRJTkcKLSAgICBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCByZWZlcmVuY2VzIHRv
IEZSQU1FQlVGRkVSX0JJTkRJTkcuIFJlZmVyZW5jZXMgdG8KLSAgICBEUkFXX0ZSQU1FQlVGRkVS
IGFuZCBSRUFEX0ZSQU1FQlVGRkVSIHNob3VsZCBiZSByZW1vdmVkLgotCi0gICAgSWYgQU5HTEVf
ZnJhbWVidWZmZXJfYmxpdCBpcyBzdXBwb3J0ZWQsIERSQVdfRlJBTUVCVUZGRVJfQklORElORywg
RFJBV19GUkFNRUJVRkZFUgotICAgIGFuZCBSRUFEX0ZSQU1FQlVGRkVSIGFsbCByZWZlciB0byBj
b3JyZXNwb25kaW5nIF9BTkdMRSBzdWZmaXhlZCBuYW1lcwotICAgICh0aGV5IGhhdmUgdGhlIHNh
bWUgdG9rZW4gdmFsdWVzKS4KLQotICAgIElmIEFQUExFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxl
IGlzIHN1cHBvcnRlZCwgRFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HLAotICAgIERSQVdfRlJBTUVC
VUZGRVIgYW5kIFJFQURfRlJBTUVCVUZGRVIgYWxsIHJlZmVyIHRvIHRoZSBjb3JyZXNwb25kaW5n
IF9BUFBMRQotICAgIHN1ZmZpeGVkIG5hbWVzICh0aGV5IGhhdmUgdGhlIHNhbWUgdG9rZW4gdmFs
dWVzKS4KLQotRXJyb3JzCi0KLSAgICBUaGUgSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IgaXMgZ2Vu
ZXJhdGVkIGlmIERyYXdCdWZmZXJzRVhUIGlzIGNhbGxlZAotICAgIHdoZW4gdGhlIGRlZmF1bHQg
ZnJhbWVidWZmZXIgaXMgYm91bmQgYW5kIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAgICBob2xkOiAKLSAgICAgLSA8bj4gaXMgZ3JlYXRlciB0aGFuIDEgYW5kIGxlc3MgdGhhbiBN
QVhfRFJBV19CVUZGRVJTX0VYVCwKLSAgICAgLSA8YnVmcz4gY29udGFpbnMgYSB2YWx1ZSBvdGhl
ciB0aGFuIEJBQ0sgb3IgTk9ORS4KLQotICAgIFRoZSBJTlZBTElEX09QRVJBVElPTiBlcnJvciBp
cyBnZW5lcmF0ZWQgaWYgRHJhd0J1ZmZlcnNFWFQgaXMgY2FsbGVkCi0gICAgd2hlbiBib3VuZCB0
byBhIGRyYXcgZnJhbWVidWZmZXIgb2JqZWN0IGFuZCBhbnkgb2YgdGhlIGZvbGxvd2luZwotICAg
IGNvbmRpdGlvbnMgaG9sZDoKLSAgICAgLSB0aGUgPGk+dGggdmFsdWUgaW4gPGJ1ZnM+IGlzIG5v
dCBDT0xPUl9BVFRBQ0hNRU5UPGk+X0VYVCBvciBOT05FLgotCi0gICAgVGhlIElOVkFMSURfVkFM
VUUgZXJyb3IgaXMgZ2VuZXJhdGVkIGlmIERyYXdCdWZmZXJzRVhUIGlzIGNhbGxlZAotICAgIHdp
dGggYSB2YWx1ZSBvZiA8bj4gd2hpY2ggaXMgZ3JlYXRlciB0aGFuIE1BWF9EUkFXX0JVRkZFUlNf
RVhULgotCi0gICAgVGhlIElOVkFMSURfRU5VTSBlcnJvciBpcyBnZW5lcmF0ZWQgYnkgRnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIgaWYKLSAgICB0aGUgPGF0dGFjaG1lbnQ+IHBhcmFtZXRlciBpcyBu
b3Qgb25lIG9mIHRoZSB2YWx1ZXMgbGlzdGVkIGluIFRhYmxlIDQueC4KLQotICAgIFRoZSBJTlZB
TElEX0VOVU0gZXJyb3IgaXMgZ2VuZXJhdGVkIGJ5IEZyYW1lYnVmZmVyVGV4dHVyZTJEIGlmCi0g
ICAgdGhlIDxhdHRhY2htZW50PiBwYXJhbWV0ZXIgaXMgbm90IG9uZSBvZiB0aGUgdmFsdWVzIGxp
c3RlZCBpbiBUYWJsZSA0LnguCi0KLSAgICBUaGUgSU5WQUxJRF9FTlVNIGVycm9yIGlzIGdlbmVy
YXRlZCBieSBHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdgotICAgIGlmIHRoZSA8
YXR0YWNobWVudD4gcGFyYW1ldGVyIGlzIG5vdCBvbmUgb2YgdGhlIHZhbHVlcyBsaXN0ZWQgaW4g
VGFibGUgNC54LgotCi1OZXcgU3RhdGUKLQotICAgIEFkZCBUYWJsZSA2LlggRnJhbWVidWZmZXIg
KFN0YXRlIHBlciBmcmFtZWJ1ZmZlciBvYmplY3QpOgotCi0gICAgU3RhdGUgICAgICAgICAgICAg
ICBUeXBlIEdldCBDb21tYW5kICBJbml0aWFsIFZhbHVlIERlc2NyaXB0aW9uIAotICAgIC0tLS0t
LS0tLS0tLS0tLS0tLSAgLS0tLSAtLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0t
LQotICAgIERSQVdfQlVGRkVSPGk+X0VYVCAgWjEwKiBHZXRJbnRlZ2VydiAgc2VlIDQuMi4xICAg
ICBEcmF3IGJ1ZmZlciBzZWxlY3RlZCAKLQkJCQkJCQkgIGZvciBmcmFnbWVudCBjb2xvciBpCi0K
LSAgICBBZGQgdG8gVGFibGUgNi4xOCAoSW1wbGVtZW50YXRpb24gRGVwZW5kZW50IFZhbHVlcykK
LQotICAgIEdldCB2YWx1ZSAgICAgICAgICAgICAgICAgVHlwZSBHZXQgQ21uZCAgICBNaW5pbXVt
IFZhbHVlIERlc2NyaXB0aW9uICAgICAgICAgICAgIFNlYy4KLSAgICAtLS0tLS0tLS0tLS0tLS0t
LS0tLSAgICAgIC0tLS0gLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLSAgICAg
ICAgICAgICAtLS0tLQotICAgIE1BWF9EUkFXX0JVRkZFUlNfRVhUICAgICAgWisgICBHZXRJbnRl
Z2VydiAxICAgICAgICAgICAgIE1heGltdW0gbnVtYmVyIG9mICAgICAgIDQuMi4xCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0
aXZlIGRyYXcgYnVmZmVycwotICAgIE1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQgWisgICBHZXRJ
bnRlZ2VydiAxICAgICAgICAgICAgIE51bWJlciBvZiBmcmFtZWJ1ZmZlciAgIDQuNC4xCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29sb3IgYXR0YWNobWVudCBwb2ludHMKLUlzc3VlcwotCi0gICAgU2VlIEFSQl9kcmF3X2J1ZmZl
cnMgZm9yIHJlbGV2YW50IGlzc3Vlcy4KLQotICAxKSBXaGF0IGFyZSB0aGUgZGlmZmVyZW5jZXMg
YmV0d2VlbiB0aGlzIGV4dGVuc2lvbiBhbmQgTlZfZHJhd19idWZmZXJzCi0gICAgKyBOVl9mYm9f
Y29sb3JfYXR0YWNobWVudHM/Ci0KLSAgICBSRVNPTFZFRC4gVGhpcyBleHRlbnNpb246Ci0gICAg
IC0gYWRkcyBpbnRlcmFjdGlvbnMgd2l0aCBibGl0X2ZyYW1lYnVmZmVyIGFuZCB0aGUgc2VwYXJh
dGUgCi0gICAgICAgZHJhdy9yZWFkIGJpbmRpbmcgcG9pbnRzCi0gICAgIC0gVGhlIGRyYXcgYnVm
ZmVyIGFuZCBjb2xvciBhdHRhY2htZW50IGxpbWl0cyBhcmUgZ2xvYmFsIGluc3RlYWQKLSAgICAg
ICBvZiBwZXItZmJvIChzZWUgSXNzdWUgMikKLSAgICAgLSBjYW4gYmUgdXNlZCB0byB3aXRoIGRl
ZmF1bHQgZnJhbWVidWZmZXIgdG8gc2V0IE5PTkUvQkFDSyAoc2VlIElzc3VlIDQpCi0gICAgIC0g
cmV0YWlucyB0aGUgb3JkZXJpbmcgcmVzdHJpY3Rpb25zIG9uIGNvbG9yIGF0dGFjaG1lbnRzIHRo
YXQgYXJlIAotICAgICAgIGltcG9zZWQgYnkgRVMgMy4wLgotCi0gICAyKSBTaG91bGQgdGhlIE1B
WF9EUkFXX0JVRkZFUlNfRVhUIGFuZCBNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUIGxpbWl0cwot
ICAgIGJlIHBlci1mcmFtZWJ1ZmZlciB2YWx1ZXMgb3IgaW1wbGVtZW50YXRpb24gZGVwZW5kZW50
IGNvbnN0YW50cz8KLQotICAgIERJU0NVU1NJT046IEluIEFSQl9kcmF3X2J1ZmZlcnMgdGhpcyB3
YXMgcGVyLWNvbnRleHQgKHNlZSBJc3N1ZSAyKS4KLSAgICBFWFRfZnJhbWVidWZmZXJfb2JqZWN0
IChhbmQgc3Vic2VxdWVudGx5IEFSQl9mcmFtZWJ1ZmZlcl9vYmplY3QsIGFuZCBHTCAzLjAKLSAg
ICB0aHJvdWdoIEdMIDQuMikgbWFkZSB0aGVzZSBxdWVyaWVzIGZyYW1lYnVmZmVyLWRlcGVuZGVu
dC4gCi0gICAgSG93ZXZlciBpbiBHTCA0LjMgYW5kIEdMRVMgMy4wLCB0aGVzZSBsaW1pdHMgd2Vy
ZSBjaGFuZ2VkIGZyb20gCi0gICAgZnJhbWVidWZmZXItZGVwZW5kZW50IHN0YXRlIHRvIGltcGxl
bWVudGF0aW9uLWRlcGVuZGVudCBzdGF0ZSBhZnRlcgotICAgIG11Y2ggZGlzY3Vzc2lvbiAoQnVn
IDc5OTApLgotCi0gICAgTlZfZHJhd19idWZmZXJzIGhhcyBNQVhfRFJBV19CVUZGRVJTIGxpc3Rl
ZCBhcyBwZXItZnJhbWVidWZmZXIgc3RhdGUsCi0gICAgYnV0IE5WX2Zib19jb2xvcl9hdHRhY2ht
ZW50cyBoYXMgTUFYX0NPTE9SX0FUVEFDSE1FTlRTIGFzIGFuIAotICAgIGltcGxlbWVudGF0aW9u
LWRlcGVuZGVudCBjb25zdGFudC4KLQotICAgIFRoaXMgaXMgcmVsZXZhbnQgYmVjYXVzZSBzb21l
IGltcGxlbWVudGF0aW9ucyBhcmUgbm90IGFibGUgdG8gc3VwcG9ydCAKLSAgICBtdWx0aXNhbXBs
aW5nIGluIGNvbmp1Y3Rpb24gd2l0aCBtdWx0aXBsZSBjb2xvciBhdHRhY2htZW50cy4gIElmIHRo
ZQotICAgIHF1ZXJ5IGlzIHBlci1mcmFtZWJ1ZmZlciwgdGhleSBjYW4gcmVwb3J0IGEgbWF4aW11
bSBvZiBvbmUgYXR0YWNobWVudAotICAgIHdoZW4gdGhlcmUgYXJlIG11bHRpc2FtcGxlZCBhdHRh
Y2htZW50cywgYnV0IGEgaGlnaGVyIGxpbWl0IHdoZW4gb25seQotICAgIHNpbmdsZS1zYW1wbGVk
IGF0dGFjaG1lbnRzIGFyZSBwcmVzZW50LgotCi0gICAgUkVTT0xWRUQuIE1ha2UgdGhpcyBnbG9i
YWwgY29udGV4dCBzdGF0ZSBhcyB0aGlzIGlzIG1vc3QgY29uc2lzdGVudCAKLSAgICB3aXRoIEdM
RVMgMy4wIGFuZCB1cGRhdGVkIEdMIGRyaXZlcnMuIEluIGFuIGltcGxlbWVudGF0aW9uIGNhbm5v
dAotICAgIHN1cHBvcnQgbXVsdGlzYW1wbGluZyBpbiBjb25qdW5jdGlvbiB3aXRoIG11bHRpcGxl
IGNvbG9yIGF0dGFjaG1lbnRzLAotICAgIHBlcmhhcHMgc3VjaCBhbiBpbXBsZW1lbnRhdGlvbiBj
b3VsZCByZXBvcnQgRkJPIGluY29tcGxldGUgaW4gdGhpcyAKLSAgICBzaXR1YXRpb24sIGJ1dCB0
aGlzIGlzIGxlc3MgdGhhbiBkZXNpcmFibGUuCi0KLSAgIDMpIFNob3VsZCB3ZSBzdXBwb3J0IGJy
b2FkY2FzdCBmcm9tIGdsX0ZyYWdDb2xvciB0byBhbGwgZ2xfRnJhZ0RhdGFbeF0KLSAgICBvciBz
aG91bGQgaXQgYmUgc3lub255bW91cyB3aXRoIGdsX0ZyYWdEYXRhWzBdPwotCi0gICAgRElTQ1VT
U0lPTjogV2l0aCBOVl9kcmF3X2J1ZmZlcnMsIHdyaXRpbmcgdG8gZ2xfRnJhZ0NvbG9yIHdyaXRl
cyB0byBhbGwKLSAgICB0aGUgZW5hYmxlZCBkcmF3IGJ1ZmZlcnMgKGllIGJyb2FkY2FzdCkuIElu
IE9wZW5HTCBFUyAzLjAgd2hlbiB1c2luZyAKLSAgICBFU1NMIDEuMCwgZ2xfRnJhZ0NvbG9yIGlz
IGVxdWl2YWxlbnQgdG8gd3JpdGluZyBhIHNpbmdsZSBvdXRwdXQgdG8gCi0gICAgZ2xfRnJhZ0Rh
dGFbMF0gYW5kIG11bHRpcGxlIG91dHB1dHMgYXJlIG5vdCBwb3NzaWJsZS4gV2hlbiB1c2luZyBF
U1NMIDMuMCwKLSAgICBvbmx5IHVzZXItZGVmaW5lZCBvdXQgdmFyaWFibGVzIG1heSBiZSB1c2Vk
LgotCi0gICAgSWYgYnJvYWRjYXN0IGlzIHN1cHBvcnRlZCwgc29tZSBpbXBsZW1lbnRhdGlvbnMg
bWF5IGhhdmUgdG8gcmVwbGFjZQotICAgIHdyaXRlcyB0byBnbF9GcmFnQ29sb3Igd2l0aCByZXBs
aWNhdGVkIHdyaXRlcyB0byBhbGwgcG9zc2libGUgZ2xfRnJhZ0RhdGEKLSAgICBsb2NhdGlvbnMg
d2hlbiB0aGlzIGV4dGVuc2lvbiBpcyBlbmFibGVkLgotCi0gICAgUkVTT0xWRUQ6IFdyaXRlcyB0
byBnbF9GcmFnQ29sb3IgYXJlIGJyb2FkY2FzdCB0byBhbGwgZW5hYmxlZCBjb2xvcgotICAgIGJ1
ZmZlcnMuIEVTIDMuMCB1c2luZyBFU1NMIDEuMCBkb2Vzbid0IHN1cHBvcnQgYnJvYWRjYXN0IGJl
Y2F1c2UKLSAgICBFU1NMIDEuMCB3YXMgbm90IGV4dGVuZGVkIHRvIGhhdmUgbXVsdGlwbGUgY29s
b3Igb3V0cHV0cyAoYnV0IHRoYXQgaXMKLSAgICB3aGF0IHRoaXMgZXh0ZW5zaW9uIGFkZHMpLiBF
U1NMIDMuMCBkb2Vzbid0IHN1cHBvcnQgdGhlIGJyb2FkY2FzdCBiZWNhdXNlCi0gICAgaXQgZG9l
c24ndCBoYXZlIHRoZSBnbF9GcmFnQ29sb3IgdmFyaWFibGUgYXQgYWxsLCBhbmQgb25seSBoYXMg
dXNlci0KLSAgICBkZWZpbmVkIG91dCB2YXJpYWJsZXMuIFRoaXMgZXh0ZW5zaW9uIGV4dGVuZHMg
RVNTTCAxLjAgdG8gaGF2ZSBtdWx0aXBsZQotICAgIGNvbG9yIG91dHB1dHMuIEJyb2FkY2FzdGlu
ZyBmcm9tIGdsX0ZyYWdDb2xvciB0byBhbGwgZW5hYmxlZCBjb2xvciAKLSAgICBidWZmZXJzIGlz
IHRoZSBtb3N0IGNvbnNpc3RlbnQgd2l0aCBleGlzdGluZyBkcmF3IGJ1ZmZlciBleHRlbnNpb25z
IHRvCi0gICAgZGF0ZSAoYm90aCBOVl9kcmF3X2J1ZmZlcnMgYW5kIGRlc2t0b3AgR0wpLgotICAg
IAotICAgNCkgU2hvdWxkIHdlIGFsbG93IERyYXdCdWZmZXJzRVhUIHRvIGJlIGNhbGxlZCB3aGVu
IHRoZSBkZWZhdWx0IEZCTyBpcwotICAgIGJvdW5kPwotCi0gICAgRElTQ1VTU0lPTjogTlZfZHJh
d19idWZmZXJzIHNwZWNpZmllcyB0aGF0IERyYXdCdWZmZXJzTlYgZXJyb3JzIHdpdGggCi0gICAg
SU5WQUxJRF9PUEVSQVRJT04gd2hlbiB0aGUgZGVmYXVsdCBGQk8gaXMgYm91bmQuIE9wZW5HTCBF
UyAzLjAgYWxsb3dzCi0gICAgRHJhd0J1ZmZlcnMgdG8gdG9nZ2xlIGJldHdlZW4gQkFDSyBhbmQg
Tk9ORSBvbiB0aGUgZGVmYXVsdCBGQk8uCi0KLSAgICBBbiBpbXBsZW1lbnRhdGlvbiB0aGF0IGRv
ZXMgbm90IG5hdGl2ZWx5IHN1cHBvcnQgZGlzYWJsaW5nIHRoZSBkcmF3YnVmZmVyCi0gICAgb24g
dGhlIGRlZmF1bHQgRkJPIGNvdWxkIGVtdWxhdGUgdGhpcyBieSBkaXNhYmxpbmcgY29sb3Igd3Jp
dGVzLgotCi0gICAgUkVTT0xWRUQ6IEFsbG93IERyYXdCdWZmZXJzRVhUIHRvIGJlIGNhbGxlZCBm
b3IgdGhlIGRlZmF1bHQgRkJPLiBUaGlzCi0gICAgaXMgbW9yZSBmb3J3YXJkIGxvb2tpbmcgYW5k
IGlzIGNvbXBhdGlibGUgd2l0aCBFUyAzLjAuCi0KLSAgIDUpIFdoYXQgYXJlIHRoZSByZXF1aXJl
bWVudHMgb24gdGhlIGNvbG9yIGF0dGFjaG1lbnQgc2l6ZXMgYW5kIGZvcm1hdHM/Ci0gICAgCi0g
ICAgUkVTT0xWRUQ6IEVTIDIuMCByZXF1aXJlcyB0aGF0IGFsbCBjb2xvciBidWZmZXJzIGF0dGFj
aGVkIHRvIGFwcGxpY2F0aW9uLQotICAgIGNyZWF0ZWQgZnJhbWVidWZmZXIgb2JqZWN0cyBtdXN0
IGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIGJpdHBsYW5lcwotICAgIChDaGFwdGVyIDQgb3ZlcnZp
ZXcgcDkxKS4gRVMgMi4wIGFsc28gcmVxdWlyZXMgdGhhdCBhbGwgYXR0YWNoZWQgaW1hZ2VzCi0g
ICAgaGF2ZSB0aGUgc2FtZSB3aWR0aCBhbmQgaGVpZ2h0IChTZWN0aW9uIDQuNC41IEZyYW1lYnVm
ZmVyIENvbXBsZXRlbmVzcykuCi0gICAgVGhpcyBleHRlbnNpb24gZG9lcyBub3QgbGlmdCB0aG9z
ZSByZXF1aXJlbWVudHMsIGFuZCBmYWlsaW5nIHRvIG1lZXQKLSAgICB0aGVtIHdpbGwgcmVzdWx0
IGluIGFuIGluY29tcGxldGUgRkJPLgotCi0gICA2KSBEb2VzIHRoaXMgaGF2ZSBhbnkgaW50ZXJh
Y3Rpb25zIHdpdGggZ2xDbGVhcj8KLQotICAgIFJFU09MVkVEOiBZZXMuIFdoZW4gbXVsdGlwbGUg
Y29sb3IgYnVmZmVycyBhcmUgZW5hYmxlZCBmb3Igd3JpdGluZywKLSAgICBnbENsZWFyIGNsZWFy
cyBhbGwgb2YgdGhlIGNvbG9yIGJ1ZmZlcnMuICBBZGRlZCBsYW5ndWFnZSBjbGFyaWZ5aW5nCi0g
ICAgdGhhdCBnbENsZWFyIGFuZCBnbENsZWFyQ29sb3IgbWF5IGFmZmVjdCBtdWx0aXBsZSBjb2xv
ciBidWZmZXJzLgotCi1SZXZpc2lvbiBIaXN0b3J5Ci0KLSAgICAwMS8zMC8yMDEzICBkZ2tvY2gg
IGFkZCBpc3N1ZSA2IGFuZCBjbGVhciBpbnRlcmFjdGlvbnMKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJlbmFtZWQgdG8gRVhUX2RyYXdfYnVmZmVycyBiYXNlZCBvbiBmZWVkYmFjawotICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhbmdlZCByZXNvbHV0aW9uIG9mIGlzc3VlIDMuCi0gICAgMDEv
MjMvMjAxMyAgZGdrb2NoICBhZGQgcmVzb2x1dGlvbnMgdG8gaXNzdWVzIDItNC4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIGFkZCBpc3N1ZSA1LgotICAgICAgICAgICAgICAgICAgICAgICAgQWRk
IFRhYmxlIDQueCBhbmQgdXBkYXRlIHZhcmlvdXMgZXhwbGljaXQKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJlZmVyZW5jZXMgdG8gQ09MT1JfQVRUQUNITUVOVDAuCi0gICAgICAgICAgICAgICAg
ICAgICAgICBBZGQgZXJyb3JzLgotICAgIDExLzEzLzIwMTIgIGRna29jaCAgYWRkIHJldmlzaW9u
IGhpc3RvcnkKLSAgICAgICAgICAgICAgICAgICAgICAgIGFkZCB0ZXh0IGZyb20gdXBkYXRlZCBF
UyAzLjAgc3BlYwotICAgICAgICAgICAgICAgICAgICAgICAgYWRkIGlzc3VlcyBmb3IgZGlzY3Vz
c2lvbgotICAgIDEwLzE2LzIwMTIgIGticiAgICAgdXBkYXRlIG5hbWUgc3RyaW5nCi0gICAgMTAv
MTYvMjAxMiAga2JyICAgICByZW1vdmUgcmVzdHJpdGlvbiByZXF1aXJpbmcgZHJhdyBidWZmZXIg
MCB0byBiZSBub24tTlVMTAotICAgIDEwLzEyLzIwMTIgIGticiAgICAgcmVtb3ZlIHJlZmVyZW5j
ZXMgdG8gR2V0RG91YmxldiBhbmQgUmVhZEJ1ZmZlcgotICAgIDEwLzExLzIwMTIgIGticiAgICAg
aW5pdGlhbCBkcmFmdCBleHRlbnNpb24KLQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
ZXh0ZW5zaW9ucy9FWFRfcm9idXN0bmVzcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FWFRfcm9idXN0bmVzcy50eHQJKHJldmlzaW9uIDIwNzgw
NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRVhUX3JvYnVzdG5lc3Mu
dHh0CShub25leGlzdGVudCkKQEAgLTEsMzY1ICswLDAgQEAKLU5hbWUKLQotICAgIEVYVF9yb2J1
c3RuZXNzCi0KLU5hbWUgU3RyaW5ncwotCi0gICAgR0xfRVhUX3JvYnVzdG5lc3MKLQotQ29udHJp
YnV0b3JzCi0KLSAgICBEYW5pZWwgS29jaCwgVHJhbnNHYW1pbmcKLSAgICBOaWNvbGFzIENhcGVu
cywgVHJhbnNHYW1pbmcKLSAgICBDb250cmlidXRvcnMgdG8gQVJCX3JvYnVzdG5lc3MKLQotQ29u
dGFjdAotCi0gICAgR3JlZyBSb3RoLCBOVklESUEgKGdyb3RoICdhdCcgbnZpZGlhLmNvbSkKLQot
U3RhdHVzCi0KLSAgICBDb21wbGV0ZS4KLQotVmVyc2lvbgotCi0gICAgVmVyc2lvbiAzLCAyMDEx
LzEwLzMxCi0KLU51bWJlcgotCi0gICAgT3BlbkdMIEVTIEV4dGVuc2lvbiAjMTA3Ci0KLURlcGVu
ZGVuY2llcwotCi0gICAgVGhpcyBleHRlbnNpb24gaXMgd3JpdHRlbiBhZ2FpbnN0IHRoZSBPcGVu
R0wgRVMgMi4wIFNwZWNpZmljYXRpb24KLSAgICBidXQgY2FuIGFwcGx5IHRvIE9wZW5HTCBFUyAx
LjEgYW5kIHVwLgotCi0gICAgRUdMX0VYVF9jcmVhdGVfY29udGV4dF9yb2J1c3RuZXNzIGlzIHVz
ZWQgdG8gZGV0ZXJtaW5lIGlmIGEgY29udGV4dAotICAgIGltcGxlbWVudGluZyB0aGlzIGV4dGVu
c2lvbiBzdXBwb3J0cyByb2J1c3QgYnVmZmVyIGFjY2VzcywgYW5kIGlmIGl0Ci0gICAgc3VwcG9y
dHMgcmVzZXQgbm90aWZpY2F0aW9uLiAKLQotT3ZlcnZpZXcKLQotICAgIFNldmVyYWwgcmVjZW50
IHRyZW5kcyBpbiBob3cgT3BlbkdMIGludGVncmF0ZXMgaW50byBtb2Rlcm4gY29tcHV0ZXIKLSAg
ICBzeXN0ZW1zIGhhdmUgY3JlYXRlZCBuZXcgcmVxdWlyZW1lbnRzIGZvciByb2J1c3RuZXNzIGFu
ZCBzZWN1cml0eQotICAgIGZvciBPcGVuR0wgcmVuZGVyaW5nIGNvbnRleHRzLgotICAgIAotICAg
IEFkZGl0aW9uYWxseSBHUFUgYXJjaGl0ZWN0dXJlcyBub3cgc3VwcG9ydCBoYXJkd2FyZSBmYXVs
dCBkZXRlY3Rpb247Ci0gICAgZm9yIGV4YW1wbGUsIHZpZGVvIG1lbW9yeSBzdXBwb3J0aW5nIEVD
QyAoZXJyb3IgY29ycmVjdGluZyBjb2RlcykKLSAgICBhbmQgZXJyb3IgZGV0ZWN0aW9uLiAgT3Bl
bkdMIGNvbnRleHRzIHNob3VsZCBiZSBjYXBhYmxlIG9mIHJlY292ZXJpbmcKLSAgICBmcm9tIGhh
cmR3YXJlIGZhdWx0cyBzdWNoIGFzIHVuY29ycmVjdGFibGUgbWVtb3J5IGVycm9ycy4gIEFsb25n
IHdpdGgKLSAgICByZWNvdmVyeSBmcm9tIHN1Y2ggaGFyZHdhcmUgZmF1bHRzLCB0aGUgcmVjb3Zl
cnkgbWVjaGFuaXNtIGNhbgotICAgIGFsc28gYWxsb3cgcmVjb3ZlcnkgZnJvbSB2aWRlbyBtZW1v
cnkgYWNjZXNzIGV4Y2VwdGlvbnMgYW5kIHN5c3RlbQotICAgIHNvZnR3YXJlIGZhaWx1cmVzLiAg
U3lzdGVtIHNvZnR3YXJlIGZhaWx1cmVzIGNhbiBiZSBkdWUgdG8gZGV2aWNlCi0gICAgY2hhbmdl
cyBvciBkcml2ZXIgZmFpbHVyZXMuCi0KLSAgICBPcGVuR0wgcXVlcmllcyB0aGF0IHRoYXQgcmV0
dXJuICh3cml0ZSkgc29tZSBudW1iZXIgb2YgYnl0ZXMgdG8gYQotICAgIGJ1ZmZlciBpbmRpY2F0
ZWQgYnkgYSBwb2ludGVyIHBhcmFtZXRlciBpbnRyb2R1Y2UgcmlzayBvZiBidWZmZXIKLSAgICBv
dmVyZmxvd3MgdGhhdCBtaWdodCBiZSBleHBsb2l0YWJsZSBieSBtYWx3YXJlLiBUbyBhZGRyZXNz
IHRoaXMsCi0gICAgcXVlcmllcyB3aXRoIHJldHVybiB2YWx1ZSBzaXplcyB0aGF0IGFyZSBub3Qg
ZXhwcmVzc2VkIGRpcmVjdGx5IGJ5Ci0gICAgdGhlIHBhcmFtZXRlcnMgdG8gdGhlIHF1ZXJ5IGl0
c2VsZiBhcmUgZ2l2ZW4gYWRkaXRpb25hbCBBUEkKLSAgICBmdW5jdGlvbnMgd2l0aCBhbiBhZGRp
dGlvbmFsIHBhcmFtZXRlciB0aGF0IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mCi0gICAgYnl0ZXMg
aW4gdGhlIGJ1ZmZlciBhbmQgbmV2ZXIgd3JpdGluZyBieXRlcyBiZXlvbmQgdGhhdCBsaW1pdC4g
VGhpcwotICAgIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIG11bHRpLXRocmVhZGVkIHVzYWdl
IG9mIE9wZW5HTCBjb250ZXh0cwotICAgIGluIGEgInNoYXJlIGdyb3VwIiB3aGVyZSBvbmUgY29u
dGV4dCBjYW4gY2hhbmdlIG9iamVjdHMgaW4gd2F5cyB0aGF0Ci0gICAgY2FuIGNhdXNlIGJ1ZmZl
ciBvdmVyZmxvd3MgZm9yIGFub3RoZXIgY29udGV4dCdzIE9wZW5HTCBxdWVyaWVzLgotCi0gICAg
VGhlIG9yaWdpbmFsIEFSQl92ZXJ0ZXhfYnVmZmVyX29iamVjdCBleHRlbnNpb24gaW5jbHVkZXMg
YW4gaXNzdWUKLSAgICB0aGF0IGV4cGxpY2l0bHkgc3RhdGVzIHByb2dyYW0gdGVybWluYXRpb24g
aXMgYWxsb3dlZCB3aGVuCi0gICAgb3V0LW9mLWJvdW5kcyB2ZXJ0ZXggYnVmZmVyIG9iamVjdCBm
ZXRjaGVzIG9jY3VyLiBNb2Rlcm4gZ3JhcGhpY3MKLSAgICBoYXJkd2FyZSBpcyBjYXBhYmxlIHdl
bGwtZGVmaW5lZCBiZWhhdmlvciBpbiB0aGUgY2FzZSBvZiBvdXQtb2YtCi0gICAgYm91bmRzIHZl
cnRleCBidWZmZXIgb2JqZWN0IGZldGNoZXMuIE9sZGVyIGhhcmR3YXJlIG1heSByZXF1aXJlCi0g
ICAgZXh0cmEgY2hlY2tzIHRvIGVuZm9yY2Ugd2VsbC1kZWZpbmVkIChhbmQgdGVybWluYXRpb24g
ZnJlZSkKLSAgICBiZWhhdmlvciwgYnV0IHRoaXMgZXhwZW5zZSBpcyB3YXJyYW50ZWQgd2hlbiBw
cm9jZXNzaW5nIHBvdGVudGlhbGx5Ci0gICAgdW50cnVzdGVkIGNvbnRlbnQuCi0KLSAgICBUaGUg
aW50ZW50IG9mIHRoaXMgZXh0ZW5zaW9uIGlzIHRvIGFkZHJlc3Mgc29tZSBzcGVjaWZpYyByb2J1
c3RuZXNzCi0gICAgZ29hbHM6Ci0KLSAgICAqICAgRm9yIGFsbCBleGlzdGluZyBPcGVuR0wgcXVl
cmllcywgcHJvdmlkZSBhZGRpdGlvbmFsICJzYWZlIiBBUElzIAotICAgICAgICB0aGF0IGxpbWl0
IGRhdGEgd3JpdHRlbiB0byB1c2VyIHBvaW50ZXJzIHRvIGEgYnVmZmVyIHNpemUgaW4gCi0gICAg
ICAgIGJ5dGVzIHRoYXQgaXMgYW4gZXhwbGljaXQgYWRkaXRpb25hbCBwYXJhbWV0ZXIgb2YgdGhl
IHF1ZXJ5LgotCi0gICAgKiAgIFByb3ZpZGUgYSBtZWNoYW5pc20gZm9yIGFuIE9wZW5HTCBhcHBs
aWNhdGlvbiB0byBsZWFybiBhYm91dAotICAgICAgICBncmFwaGljcyByZXNldHMgdGhhdCBhZmZl
Y3QgdGhlIGNvbnRleHQuICBXaGVuIGEgZ3JhcGhpY3MgcmVzZXQKLSAgICAgICAgb2NjdXJzLCB0
aGUgT3BlbkdMIGNvbnRleHQgYmVjb21lcyB1bnVzYWJsZSBhbmQgdGhlIGFwcGxpY2F0aW9uCi0g
ICAgICAgIG11c3QgY3JlYXRlIGEgbmV3IGNvbnRleHQgdG8gY29udGludWUgb3BlcmF0aW9uLiBE
ZXRlY3RpbmcgYQotICAgICAgICBncmFwaGljcyByZXNldCBoYXBwZW5zIHRocm91Z2ggYW4gaW5l
eHBlbnNpdmUgcXVlcnkuCi0KLSAgICAqICAgUHJvdmlkZSBhbiBlbmFibGUgdG8gZ3VhcmFudGVl
IHRoYXQgb3V0LW9mLWJvdW5kcyBidWZmZXIgb2JqZWN0Ci0gICAgICAgIGFjY2Vzc2VzIGJ5IHRo
ZSBHUFUgd2lsbCBoYXZlIGRldGVybWluaXN0aWMgYmVoYXZpb3IgYW5kIHByZWNsdWRlCi0gICAg
ICAgIGFwcGxpY2F0aW9uIGluc3RhYmlsaXR5IG9yIHRlcm1pbmF0aW9uIGR1ZSB0byBhbiBpbmNv
cnJlY3QgYnVmZmVyCi0gICAgICAgIGFjY2Vzcy4gIFN1Y2ggYWNjZXNzZXMgaW5jbHVkZSB2ZXJ0
ZXggYnVmZmVyIGZldGNoZXMgb2YKLSAgICAgICAgYXR0cmlidXRlcyBhbmQgaW5kaWNlcywgYW5k
IGluZGV4ZWQgcmVhZHMgb2YgdW5pZm9ybXMgb3IKLSAgICAgICAgcGFyYW1ldGVycyBmcm9tIGJ1
ZmZlcnMuCi0KLU5ldyBQcm9jZWR1cmVzIGFuZCBGdW5jdGlvbnMKLQotICAgICAgICBlbnVtIEdl
dEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQoKTsKLQotICAgICAgICB2b2lkIFJlYWRuUGl4ZWxzRVhU
KGludCB4LCBpbnQgeSwgc2l6ZWkgd2lkdGgsIHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbnVtIGZvcm1hdCwgZW51bSB0eXBlLCBzaXplaSBidWZTaXplLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEpOwotCi0gICAgICAgIHZvaWQgR2V0
blVuaWZvcm1mdkVYVCh1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgc2l6ZWkgYnVmU2l6ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0ICpwYXJhbXMpOwotICAgICAgICB2
b2lkIEdldG5Vbmlmb3JtaXZFWFQodWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIHNpemVpIGJ1
ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnBhcmFtcyk7Ci0KLU5l
dyBUb2tlbnMKLQotICAgIFJldHVybmVkIGJ5IEdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQ6Ci0K
LSAgICAgICAgTk9fRVJST1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MHgwMDAwCi0gICAgICAgIEdVSUxUWV9DT05URVhUX1JFU0VUX0VYVCAgICAgICAgICAgICAgICAg
ICAgICAgIDB4ODI1MwotICAgICAgICBJTk5PQ0VOVF9DT05URVhUX1JFU0VUX0VYVCAgICAgICAg
ICAgICAgICAgICAgICAweDgyNTQKLSAgICAgICAgVU5LTk9XTl9DT05URVhUX1JFU0VUX0VYVCAg
ICAgICAgICAgICAgICAgICAgICAgMHg4MjU1Ci0KLSAgICBBY2NlcHRlZCBieSB0aGUgPHZhbHVl
PiBwYXJhbWV0ZXIgb2YgR2V0Qm9vbGVhbnYsIEdldEludGVnZXJ2LAotICAgIGFuZCBHZXRGbG9h
dHY6Ci0KLSAgICAgICAgQ09OVEVYVF9ST0JVU1RfQUNDRVNTX0VYVCAgICAgICAgICAgICAgICAg
ICAgICAgMHg5MEYzCi0gICAgICAgIFJFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWV9FWFQgICAg
ICAgICAgICAgICAgIDB4ODI1NgotCi0gICAgUmV0dXJuZWQgYnkgR2V0SW50ZWdlcnYgYW5kIHJl
bGF0ZWQgc2ltcGxlIHF1ZXJpZXMgd2hlbiA8dmFsdWU+IGlzCi0gICAgUkVTRVRfTk9USUZJQ0FU
SU9OX1NUUkFURUdZX0VYVCA6Ci0KLSAgICAgICAgTE9TRV9DT05URVhUX09OX1JFU0VUX0VYVCAg
ICAgICAgICAgICAgICAgICAgICAgMHg4MjUyCi0gICAgICAgIE5PX1JFU0VUX05PVElGSUNBVElP
Tl9FWFQgICAgICAgICAgICAgICAgICAgICAgIDB4ODI2MQotCi1BZGRpdGlvbnMgdG8gQ2hhcHRl
ciAyIG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmljYXRpb24gKE9wZW5HTCBFUyBPcGVyYXRp
b24pCi0KLUFkZCBhIG5ldyBzdWJzZWN0aW9uIGFmdGVyIDIuNSAiR0wgRXJyb3JzIiBhbmQgcmVu
dW1iZXIgc3Vic2VxdWVudAotc2VjdGlvbnMgYWNjb3JkaW5nbHkuCi0KLSAgICAyLjYgIkdyYXBo
aWNzIFJlc2V0IFJlY292ZXJ5IgotCi0gICAgQ2VydGFpbiBldmVudHMgY2FuIHJlc3VsdCBpbiBh
IHJlc2V0IG9mIHRoZSBHTCBjb250ZXh0LiBTdWNoIGEgcmVzZXQKLSAgICBjYXVzZXMgYWxsIGNv
bnRleHQgc3RhdGUgdG8gYmUgbG9zdC4gUmVjb3ZlcnkgZnJvbSBzdWNoIGV2ZW50cwotICAgIHJl
cXVpcmVzIHJlY3JlYXRpb24gb2YgYWxsIG9iamVjdHMgaW4gdGhlIGFmZmVjdGVkIGNvbnRleHQu
IFRoZQotICAgIGN1cnJlbnQgc3RhdHVzIG9mIHRoZSBncmFwaGljcyByZXNldCBzdGF0ZSBpcyBy
ZXR1cm5lZCBieQotCi0gICAgICAgIGVudW0gR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCgpOwot
Ci0gICAgVGhlIHN5bWJvbGljIGNvbnN0YW50IHJldHVybmVkIGluZGljYXRlcyBpZiB0aGUgR0wg
Y29udGV4dCBoYXMgYmVlbgotICAgIGluIGEgcmVzZXQgc3RhdGUgYXQgYW55IHBvaW50IHNpbmNl
IHRoZSBsYXN0IGNhbGwgdG8KLSAgICBHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhULiBOT19FUlJP
UiBpbmRpY2F0ZXMgdGhhdCB0aGUgR0wgY29udGV4dAotICAgIGhhcyBub3QgYmVlbiBpbiBhIHJl
c2V0IHN0YXRlIHNpbmNlIHRoZSBsYXN0IGNhbGwuCi0gICAgR1VJTFRZX0NPTlRFWFRfUkVTRVRf
RVhUIGluZGljYXRlcyB0aGF0IGEgcmVzZXQgaGFzIGJlZW4gZGV0ZWN0ZWQKLSAgICB0aGF0IGlz
IGF0dHJpYnV0YWJsZSB0byB0aGUgY3VycmVudCBHTCBjb250ZXh0LgotICAgIElOTk9DRU5UX0NP
TlRFWFRfUkVTRVRfRVhUIGluZGljYXRlcyBhIHJlc2V0IGhhcyBiZWVuIGRldGVjdGVkIHRoYXQK
LSAgICBpcyBub3QgYXR0cmlidXRhYmxlIHRvIHRoZSBjdXJyZW50IEdMIGNvbnRleHQuCi0gICAg
VU5LTk9XTl9DT05URVhUX1JFU0VUX0VYVCBpbmRpY2F0ZXMgYSBkZXRlY3RlZCBncmFwaGljcyBy
ZXNldCB3aG9zZQotICAgIGNhdXNlIGlzIHVua25vd24uCi0KLSAgICBJZiBhIHJlc2V0IHN0YXR1
cyBvdGhlciB0aGFuIE5PX0VSUk9SIGlzIHJldHVybmVkIGFuZCBzdWJzZXF1ZW50Ci0gICAgY2Fs
bHMgcmV0dXJuIE5PX0VSUk9SLCB0aGUgY29udGV4dCByZXNldCB3YXMgZW5jb3VudGVyZWQgYW5k
Ci0gICAgY29tcGxldGVkLiBJZiBhIHJlc2V0IHN0YXR1cyBpcyByZXBlYXRlZGx5IHJldHVybmVk
LCB0aGUgY29udGV4dCBtYXkKLSAgICBiZSBpbiB0aGUgcHJvY2VzcyBvZiByZXNldHRpbmcuCi0K
LSAgICBSZXNldCBub3RpZmljYXRpb24gYmVoYXZpb3IgaXMgZGV0ZXJtaW5lZCBhdCBjb250ZXh0
IGNyZWF0aW9uIHRpbWUsCi0gICAgYW5kIG1heSBiZSBxdWVyaWVkIGJ5IGNhbGxpbmcgR2V0SW50
ZWdlcnYgd2l0aCB0aGUgc3ltYm9saWMgY29uc3RhbnQKLSAgICBSRVNFVF9OT1RJRklDQVRJT05f
U1RSQVRFR1lfRVhULgotCi0gICAgSWYgdGhlIHJlc2V0IG5vdGlmaWNhdGlvbiBiZWhhdmlvciBp
cyBOT19SRVNFVF9OT1RJRklDQVRJT05fRVhULAotICAgIHRoZW4gdGhlIGltcGxlbWVudGF0aW9u
IHdpbGwgbmV2ZXIgZGVsaXZlciBub3RpZmljYXRpb24gb2YgcmVzZXQKLSAgICBldmVudHMsIGFu
ZCBHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhUIHdpbGwgYWx3YXlzIHJldHVybgotICAgIE5PX0VS
Uk9SW2ZuMV0uCi0gICAgICAgW2ZuMTogSW4gdGhpcyBjYXNlIGl0IGlzIHJlY29tbWVuZGVkIHRo
YXQgaW1wbGVtZW50YXRpb25zIHNob3VsZAotICAgICAgICBub3QgYWxsb3cgbG9zcyBvZiBjb250
ZXh0IHN0YXRlIG5vIG1hdHRlciB3aGF0IGV2ZW50cyBvY2N1ci4KLSAgICAgICAgSG93ZXZlciwg
dGhpcyBpcyBvbmx5IGEgcmVjb21tZW5kYXRpb24sIGFuZCBjYW5ub3QgYmUgcmVsaWVkCi0gICAg
ICAgIHVwb24gYnkgYXBwbGljYXRpb25zLl0KLQotICAgIElmIHRoZSBiZWhhdmlvciBpcyBMT1NF
X0NPTlRFWFRfT05fUkVTRVRfRVhULCBhIGdyYXBoaWNzIHJlc2V0IHdpbGwKLSAgICByZXN1bHQg
aW4gdGhlIGxvc3Mgb2YgYWxsIGNvbnRleHQgc3RhdGUsIHJlcXVpcmluZyB0aGUgcmVjcmVhdGlv
biBvZgotICAgIGFsbCBhc3NvY2lhdGVkIG9iamVjdHMuIEluIHRoaXMgY2FzZSBHZXRHcmFwaGlj
c1Jlc2V0U3RhdHVzRVhUIG1heQotICAgIHJldHVybiBhbnkgb2YgdGhlIHZhbHVlcyBkZXNjcmli
ZWQgYWJvdmUuCi0KLSAgICBJZiBhIGdyYXBoaWNzIHJlc2V0IG5vdGlmaWNhdGlvbiBvY2N1cnMg
aW4gYSBjb250ZXh0LCBhIG5vdGlmaWNhdGlvbgotICAgIG11c3QgYWxzbyBvY2N1ciBpbiBhbGwg
b3RoZXIgY29udGV4dHMgd2hpY2ggc2hhcmUgb2JqZWN0cyB3aXRoIHRoYXQKLSAgICBjb250ZXh0
W2ZuMl0uCi0gICAgICAgW2ZuMjogVGhlIHZhbHVlcyByZXR1cm5lZCBieSBHZXRHcmFwaGljc1Jl
c2V0U3RhdHVzRVhUIGluIHRoZQotICAgICAgICBkaWZmZXJlbnQgY29udGV4dHMgbWF5IGRpZmZl
ci5dCi0KLSAgICBBZGQgdG8gU2VjdGlvbiAyLjggIlZlcnRleCBBcnJheXMiIGJlZm9yZSBzdWJz
ZWN0aW9uICJUcmFuc2ZlcnJpbmcKLSAgICBBcnJheSBFbGVtZW50cyIKLQotICAgIFJvYnVzdCBi
dWZmZXIgYWNjZXNzIGlzIGVuYWJsZWQgYnkgY3JlYXRpbmcgYSBjb250ZXh0IHdpdGggcm9idXN0
Ci0gICAgYWNjZXNzIGVuYWJsZWQgdGhyb3VnaCB0aGUgd2luZG93IHN5c3RlbSBiaW5kaW5nIEFQ
SXMuIFdoZW4gZW5hYmxlZCwKLSAgICBpbmRpY2VzIHdpdGhpbiB0aGUgdmVydGV4IGFycmF5IHRo
YXQgbGllIG91dHNpZGUgdGhlIGFycmF5cyBkZWZpbmVkCi0gICAgZm9yIGVuYWJsZWQgYXR0cmli
dXRlcyByZXN1bHQgaW4gdW5kZWZpbmVkIHZhbHVlcyBmb3IgdGhlCi0gICAgY29ycmVzcG9uZGlu
ZyBhdHRyaWJ1dGVzLCBidXQgY2Fubm90IHJlc3VsdCBpbiBhcHBsaWNhdGlvbiBmYWlsdXJlLgot
ICAgIFJvYnVzdCBidWZmZXIgYWNjZXNzIGJlaGF2aW9yIG1heSBiZSBxdWVyaWVkIGJ5IGNhbGxp
bmcgR2V0SW50ZWdlcnYKLSAgICB3aXRoIHRoZSBzeW1ib2xpYyBjb25zdGFudCBDT05URVhUX1JP
QlVTVF9BQ0NFU1NfRVhULgotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciA0IG9mIHRoZSBPcGVuR0wg
RVMgMi4wIFNwZWNpZmljYXRpb24gKFBlci1GcmFnbWVudAotT3BlcmF0aW9ucyBhbmQgdGhlIEZy
YW1lIEJ1ZmZlcikKLQotICAgIE1vZGlmeSBzZWN0aW9uIDQuMy4xICJSZWFkaW5nIFBpeGVscyIK
LQotICAgIFBpeGVscyBhcmUgcmVhZCB1c2luZwotCi0gICAgICAgIHZvaWQgUmVhZFBpeGVscyhp
bnQgeCwgaW50IHksIHNpemVpIHdpZHRoLCBzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBlbnVtIGZvcm1hdCwgZW51bSB0eXBlLCB2b2lkICpkYXRhKTsKLSAgICAgICAgdm9p
ZCBSZWFkblBpeGVsc0VYVChpbnQgeCwgaW50IHksIHNpemVpIHdpZHRoLCBzaXplaSBoZWlnaHQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGZvcm1hdCwgZW51bSB0eXBlLCBzaXpl
aSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSk7Ci0KLSAg
ICBBZGQgdG8gdGhlIGRlc2NyaXB0aW9uIG9mIFJlYWRQaXhlbHM6Ci0KLSAgICBSZWFkblBpeGVs
c0VYVCBiZWhhdmVzIGlkZW50aWNhbGx5IHRvIFJlYWRQaXhlbHMgZXhjZXB0IHRoYXQgaXQgZG9l
cwotICAgIG5vdCB3cml0ZSBtb3JlIHRoYW4gPGJ1ZlNpemU+IGJ5dGVzIGludG8gPGRhdGE+LiBJ
ZiB0aGUgYnVmZmVyIHNpemUKLSAgICByZXF1aXJlZCB0byBmaWxsIGFsbCB0aGUgcmVxdWVzdGVk
IGRhdGEgaXMgZ3JlYXRlciB0aGFuIDxidWZTaXplPiBhbgotICAgIElOVkFMSURfT1BFUkFUSU9O
IGVycm9yIGlzIGdlbmVyYXRlZCBhbmQgPGRhdGE+IGlzIG5vdCBhbHRlcmVkLgotCi1BZGRpdGlv
bnMgdG8gQ2hhcHRlciA1IG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmljYXRpb24gKFNwZWNp
YWwKLUZ1bmN0aW9ucyk6Ci0KLSAgICBOb25lCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDYgb2Yg
dGhlIE9wZW5HTCBFUyAyLjAgU3BlY2lmaWNhdGlvbiAoU3RhdGUgYW5kCi1TdGF0ZSBSZXF1ZXN0
cykKLQotICAgIE1vZGlmeSBTZWN0aW9uIDYuMS44ICJTaGFkZXIgYW5kIFByb2dyYW0gUXVlcmll
cyIKLQotICAgIFRoZSBjb21tYW5kcwotCi0gICAgICAgIHZvaWQgR2V0VW5pZm9ybWZ2KHVpbnQg
cHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBmbG9hdCAqcGFyYW1zKTsKLSAgICAgICAgdm9pZCBHZXRu
VW5pZm9ybWZ2RVhUKHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBzaXplaSBidWZTaXplLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgKnBhcmFtcyk7Ci0gICAgICAgIHZv
aWQgR2V0VW5pZm9ybWl2KHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBpbnQgKnBhcmFtcyk7
Ci0gICAgICAgIHZvaWQgR2V0blVuaWZvcm1pdkVYVCh1aW50IHByb2dyYW0sIGludCBsb2NhdGlv
biwgc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqcGFy
YW1zKTsKLQotICAgIHJldHVybiB0aGUgdmFsdWUgb3IgdmFsdWVzIG9mIHRoZSB1bmlmb3JtIGF0
IGxvY2F0aW9uIDxsb2NhdGlvbj4KLSAgICBmb3IgcHJvZ3JhbSBvYmplY3QgPHByb2dyYW0+IGlu
IHRoZSBhcnJheSA8cGFyYW1zPi4gQ2FsbGluZwotICAgIEdldG5Vbmlmb3JtZnZFWFQgb3IgR2V0
blVuaWZvcm1pdkVYVCBlbnN1cmVzIHRoYXQgbm8gbW9yZSB0aGFuCi0gICAgPGJ1ZlNpemU+IGJ5
dGVzIGFyZSB3cml0dGVuIGludG8gPHBhcmFtcz4uIElmIHRoZSBidWZmZXIgc2l6ZQotICAgIHJl
cXVpcmVkIHRvIGZpbGwgYWxsIHRoZSByZXF1ZXN0ZWQgZGF0YSBpcyBncmVhdGVyIHRoYW4gPGJ1
ZlNpemU+IGFuCi0gICAgSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IgaXMgZ2VuZXJhdGVkIGFuZCA8
cGFyYW1zPiBpcyBub3QgYWx0ZXJlZC4KLSAgICAuLi4KLQotQWRkaXRpb25zIHRvIFRoZSBPcGVu
R0wgRVMgU2hhZGluZyBMYW5ndWFnZSBTcGVjaWZpY2F0aW9uLCBWZXJzaW9uIDEuCi0KLSAgICBB
cHBlbmQgdG8gdGhlIHRoaXJkIHBhcmFncmFwaCBvZiBzZWN0aW9uIDQuMS45ICJBcnJheXMiCi0K
LSAgICBJZiByb2J1c3QgYnVmZmVyIGFjY2VzcyBpcyBlbmFibGVkIHZpYSB0aGUgT3BlbkdMIEVT
IEFQSSwgc3VjaAotICAgIGluZGV4aW5nIG11c3Qgbm90IHJlc3VsdCBpbiBhYm5vcm1hbCBwcm9n
cmFtIHRlcm1pbmF0aW9uLiBUaGUKLSAgICByZXN1bHRzIGFyZSBzdGlsbCB1bmRlZmluZWQsIGJ1
dCBpbXBsZW1lbnRhdGlvbnMgYXJlIGVuY291cmFnZWQgdG8KLSAgICBwcm9kdWNlIHplcm8gdmFs
dWVzIGZvciBzdWNoIGFjY2Vzc2VzLgotCi1JbnRlcmFjdGlvbnMgd2l0aCBFR0xfRVhUX2NyZWF0
ZV9jb250ZXh0X3JvYnVzdG5lc3MKLQotICAgIElmIHRoZSBFR0wgd2luZG93LXN5c3RlbSBiaW5k
aW5nIEFQSSBpcyB1c2VkIHRvIGNyZWF0ZSBhIGNvbnRleHQsCi0gICAgdGhlIEVHTF9FWFRfY3Jl
YXRlX2NvbnRleHRfcm9idXN0bmVzcyBleHRlbnNpb24gaXMgc3VwcG9ydGVkLCBhbmQKLSAgICB0
aGUgYXR0cmlidXRlIEVHTF9DT05URVhUX09QRU5HTF9ST0JVU1RfQUNDRVNTX0VYVCBpcyBzZXQg
dG8KLSAgICBFR0xfVFJVRSB3aGVuIGVnbENyZWF0ZUNvbnRleHQgaXMgY2FsbGVkLCB0aGUgcmVz
dWx0aW5nIGNvbnRleHQgd2lsbAotICAgIHBlcmZvcm0gcm9idXN0IGJ1ZmZlciBhY2Nlc3MgYXMg
ZGVzY3JpYmVkIGFib3ZlIGluIHNlY3Rpb24gMi44LCBhbmQKLSAgICB0aGUgQ09OVEVYVF9ST0JV
U1RfQUNDRVNTX0VYVCBxdWVyeSB3aWxsIHJldHVybiBHTF9UUlVFIGFzIGRlc2NyaWJlZAotICAg
IGFib3ZlIGluIHNlY3Rpb24gNi4xLjUuCi0KLSAgICBJZiB0aGUgRUdMIHdpbmRvdy1zeXN0ZW0g
YmluZGluZyBBUEkgaXMgdXNlZCB0byBjcmVhdGUgYSBjb250ZXh0IGFuZAotICAgIHRoZSBFR0xf
RVhUX2NyZWF0ZV9jb250ZXh0X3JvYnVzdG5lc3MgZXh0ZW5zaW9uIGlzIHN1cHBvcnRlZCwgdGhl
bgotICAgIHRoZSB2YWx1ZSBvZiBhdHRyaWJ1dGUgRUdMX0NPTlRFWFRfUkVTRVRfTk9USUZJQ0FU
SU9OX1NUUkFURUdZX0VYVAotICAgIGRldGVybWluZXMgdGhlIHJlc2V0IG5vdGlmaWNhdGlvbiBi
ZWhhdmlvciBhbmQgdGhlIHZhbHVlIG9mCi0gICAgUkVTRVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZ
X0VYVCwgYXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gMi42LgotCi1FcnJvcnMKLQotICAgIFJlYWRu
UGl4ZWxzRVhULCBHZXRuVW5pZm9ybWZ2RVhULCBhbmQgR2V0blVuaWZvcm1pdkVYVCBzaGFyZSBh
bGwgdGhlCi0gICAgZXJyb3JzIG9mIHRoZWlyIHVuc2l6ZWQgYnVmZmVyIHF1ZXJ5IGNvdW50ZXJw
YXJ0cyB3aXRoIHRoZSBhZGRpdGlvbgotICAgIHRoYXQgSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2Vu
ZXJhdGVkIGlmIHRoZSBidWZmZXIgc2l6ZSByZXF1aXJlZCB0bwotICAgIGZpbGwgYWxsIHRoZSBy
ZXF1ZXN0ZWQgZGF0YSBpcyBncmVhdGVyIHRoYW4gPGJ1ZlNpemU+LgotCi1OZXcgSW1wbGVtZW50
YXRpb24gRGVwZW5kZW50IFN0YXRlCi0KLSAgICBHZXQgVmFsdWUgICAgICAgICAgICAgICAgICAg
ICAgIFR5cGUgIEdldCBDb21tYW5kICAgICBNaW5pbXVtIFZhbHVlICAgIERlc2NyaXB0aW9uICAg
ICAgICAgICAgICAgICAgU2VjLiAgQXR0cmlidXRlCi0gICAgLS0tLS0tLS0tICAgICAgICAgICAg
ICAgICAgICAgICAtLS0tICAtLS0tLS0tLS0tLSAgICAgLS0tLS0tLS0tLS0tLSAgICAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gIC0tLS0tIC0tLS0tLS0tLQotICAgIENPTlRFWFRfUk9CVVNU
X0FDQ0VTU19FWFQgICAgICAgQiAgICAgR2V0SW50ZWdlcnYgICAgIC0gICAgICAgICAgICAgICAg
Um9idXN0IGFjY2VzcyBlbmFibGVkICAgICAgICA2LjEuNSAtCi0gICAgUkVTRVRfTk9USUZJQ0FU
SU9OX1NUUkFURUdZX0VYVCBaXzIgICBHZXRJbnRlZ2VydiAgICAgU2VlIHNlYy4gMi42ICAgICBS
ZXNldCBub3RpZmljYXRpb24gYmVoYXZpb3IgIDIuNiAgIC0KLQotSXNzdWVzCi0KLQotICAgIDEu
ICBXaGF0IHNob3VsZCB0aGlzIGV4dGVuc2lvbiBiZSBjYWxsZWQ/Ci0KLSAgICAgICAgUkVTT0xW
RUQ6IEVYVF9yb2J1c3RuZXNzCi0KLSAgICAgICAgU2luY2UgdGhpcyBpcyBpbnRlbmRlZCB0byBi
ZSBhIHZlcnNpb24gb2YgQVJCX3JvYnVzdG5lc3MgZm9yCi0gICAgICAgIE9wZW5HTCBFUywgaXQg
c2hvdWxkIGJlIG5hbWVkIGFjY29yZGluZ2x5LgotCi0gICAgMi4gIEhvdyBkb2VzIHRoaXMgZXh0
ZW5zaW9uIGRpZmZlciBmcm9tIERlc2t0b3AgR0wncyBBUkJfcm9idXN0bmVzcz8KLQotICAgICAg
ICBSRVNPTFZFRDogQmVjYXVzZSBFR0xfRVhUX2NyZWF0ZV9jb250ZXh0X3JvYnVzdG5lc3MgdXNl
cyBhCi0Jc2VwYXJhdGUgYXR0cmlidXRlIHRvIGVuYWJsZSByb2J1c3QgYnVmZmVyIGFjY2Vzcywg
YQotCWNvcnJlc3BvbmRpbmcgcXVlcnkgaXMgYWRkZWQgaGVyZS4KLQotICAgIDMuICBTaG91bGQg
d2UgcHJvdmlkZSBhIGNvbnRleHQgY3JlYXRpb24gbWVjaGFuaXNtIHRvIGVuYWJsZSB0aGlzIGV4
dGVuc2lvbj8KLQotICAgICAgICBSRVNPTFZFRC4gWWVzLgotCi0gICAgICAgIEN1cnJlbnRseSwg
RUdMX0VYVF9jcmVhdGVfY29udGV4dF9yb2J1c3RuZXNzIHByb3ZpZGVzIHRoaXMKLSAgICAgICAg
bWVjaGFuaXNtIHZpYSB0d28gdW5pcXVlIGF0dHJpYnV0ZXMuIFRoZXNlIGF0dHJpYnV0ZXMgZGlm
ZmVyCi0JZnJvbSB0aG9zZSBzcGVjaWZpZWQgYnkgS0hSX2NyZWF0ZV9jb250ZXh0IHRvIGFsbG93
IGZvcgotCWRpZmZlcmVuY2VzIGluIHdoYXQgZnVuY3Rpb25hbGl0eSB0aG9zZSBhdHRyaWJ1dGVz
IGRlZmluZS4KLSAgICAgICAgCi0gICAgNC4gV2hhdCBjYW4gY2F1c2UgYSBncmFwaGljcyByZXNl
dD8KLQotICAgICAgIEVpdGhlciB1c2VyIG9yIGltcGxlbWVudG9yIGVycm9ycyBtYXkgcmVzdWx0
IGluIGEgZ3JhcGhpY3MgcmVzZXQuCi0gICAgICAgSWYgdGhlIGFwcGxpY2F0aW9uIGF0dGVtcHRz
IHRvIHBlcmZvcm0gYSByZW5kZXJpbmcgdGhhdCB0YWtlcyB0b28gbG9uZwotICAgICAgIHdoZXRo
ZXIgZHVlIHRvIGFuIGluZmluaXRlIGxvb3AgaW4gYSBzaGFkZXIgb3IgZXZlbiBqdXN0IGEgcmVu
ZGVyaW5nCi0gICAgICAgb3BlcmF0aW9uIHRoYXQgdGFrZXMgdG9vIGxvbmcgb24gdGhlIGdpdmVu
IGhhcmR3YXJlLiBJbXBsZW1lbnRhdGlvbgotICAgICAgIGVycm9ycyBtYXkgcHJvZHVjZSBiYWRs
eSBmb3JtZWQgaGFyZHdhcmUgY29tbWFuZHMuIE1lbW9yeSBhY2Nlc3MgZXJyb3JzCi0gICAgICAg
bWF5IHJlc3VsdCBmcm9tIHVzZXIgb3IgaW1wbGVtZW50b3IgbWlzdGFrZXMuIE9uIHNvbWUgc3lz
dGVtcywgcG93ZXIKLSAgICAgICBtYW5hZ2VtZW50IGV2ZW50cyBzdWNoIGFzIHN5c3RlbSBzbGVl
cCwgc2NyZWVuIHNhdmVyIGFjdGl2YXRpb24sIG9yCi0gICAgICAgcHJlLWVtcHRpb24gbWF5IGFs
c28gY29udGV4dCByZXNldHMgdG8gb2NjdXIuIEFueSBvZiB0aGVzZSBldmVudHMgbWF5Ci0gICAg
ICAgcmVzdWx0IGluIGEgZ3JhcGhpY3MgcmVzZXQgZXZlbnQgdGhhdCB3aWxsIGJlIGRldGVjdGFi
bGUgYnkgdGhlCi0gICAgICAgbWVjaGFuaXNtIGRlc2NyaWJlZCBpbiB0aGlzIGV4dGVuc2lvbi4K
LQotICAgIDUuIEhvdyBzaG91bGQgdGhlIGFwcGxpY2F0aW9uIHJlYWN0IHRvIGEgcmVzZXQgY29u
dGV4dCBldmVudD8KLQotICAgICAgIFJFU09MVkVEOiBGb3IgdGhpcyBleHRlbnNpb24sIHRoZSBh
cHBsaWNhdGlvbiBpcyBleHBlY3RlZCB0byBxdWVyeQotICAgICAgIHRoZSByZXNldCBzdGF0dXMg
dW50aWwgTk9fRVJST1IgaXMgcmV0dXJuZWQuIElmIGEgcmVzZXQgaXMgZW5jb3VudGVyZWQsCi0g
ICAgICAgYXQgbGVhc3Qgb25lICpSRVNFVCogc3RhdHVzIHdpbGwgYmUgcmV0dXJuZWQuIE9uY2Ug
Tk9fRVJST1IgaXMgYWdhaW4KLSAgICAgICBlbmNvdW50ZXJlZCwgdGhlIGFwcGxpY2F0aW9uIGNh
biBzYWZlbHkgZGVzdHJveSB0aGUgb2xkIGNvbnRleHQgYW5kCi0gICAgICAgY3JlYXRlIGEgbmV3
IG9uZS4KLQotICAgICAgIEFmdGVyIGEgcmVzZXQgZXZlbnQsIGFwcHMgc2hvdWxkIG5vdCB1c2Ug
YSBjb250ZXh0IGZvciBhbnkgcHVycG9zZQotICAgICAgIG90aGVyIHRoYW4gZGV0ZXJtaW5pbmcg
aXRzIHJlc2V0IHN0YXR1cywgYW5kIHRoZW4gZGVzdHJveWluZyBpdC4gSWYgYQotICAgICAgIGNv
bnRleHQgcmVjZWl2ZXMgYSByZXNldCBldmVudCwgYWxsIG90aGVyIGNvbnRleHRzIGluIGl0cyBz
aGFyZSBncm91cAotICAgICAgIHdpbGwgYWxzbyByZWNlaXZlIHJlc2V0IGV2ZW50cywgYW5kIHNo
b3VsZCBiZSBkZXN0cm95ZWQgYW5kCi0gICAgICAgcmVjcmVhdGVkLgotCi0gICAgICAgQXBwcyBz
aG91bGQgYmUgY2F1dGlvdXMgaW4gaW50ZXJwcmV0aW5nIHRoZSBHVUlMVFkgYW5kIElOTk9DRU5U
IHJlc2V0Ci0gICAgICAgc3RhdHVzZXMuIFRoZXNlIGFyZSBndWlkZWxpbmVzIHRvIHRoZSBpbW1l
ZGlhdGUgY2F1c2Ugb2YgYSByZXNldCwgYnV0Ci0gICAgICAgbm90IGd1YXJhbnRlZXMgb2YgdGhl
IHVsdGltYXRlIGNhdXNlLgotCi0gICAgNi4gSWYgYSBncmFwaGljcyByZXNldCBvY2N1cnMgaW4g
YSBzaGFyZWQgY29udGV4dCwgd2hhdCBoYXBwZW5zIGluCi0gICAgICAgc2hhcmVkIGNvbnRleHRz
PwotCi0gICAgICAgUkVTT0xWRUQ6IEEgcmVzZXQgaW4gb25lIGNvbnRleHQgd2lsbCByZXN1bHQg
aW4gYSByZXNldCBpbiBhbGwgb3RoZXIKLSAgICAgICBjb250ZXh0cyBpbiBpdHMgc2hhcmUgZ3Jv
dXAuIAotCi0gICAgNy4gSG93IGNhbiBhbiBhcHBsaWNhdGlvbiBxdWVyeSBmb3Igcm9idXN0IGJ1
ZmZlciBhY2Nlc3Mgc3VwcG9ydCwKLSAgICAgICBzaW5jZSB0aGlzIGlzIG5vdyBkZXRlcm1pbmVk
IGF0IGNvbnRleHQgY3JlYXRpb24gdGltZT8KLQotICAgICAgIFJFU09MVkVELiBUaGUgYXBwbGlj
YXRpb24gY2FuIHF1ZXJ5IHRoZSB2YWx1ZSBvZiBST0JVU1RfQUNDRVNTX0VYVAotICAgICAgIHVz
aW5nIEdldEludGVnZXJ2LiBJZiB0cnVlLCB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgZW5hYmxlZC4K
LQotICAgIDguIEhvdyBpcyB0aGUgcmVzZXQgbm90aWZpY2F0aW9uIGJlaGF2aW9yIGNvbnRyb2xs
ZWQ/Ci0KLSAgICAgICBSRVNPTFZFRDogUmVzZXQgbm90aWZpY2F0aW9uIGJlaGF2aW9yIGlzIGRl
dGVybWluZWQgYXQgY29udGV4dAotICAgICAgIGNyZWF0aW9uIHRpbWUgdXNpbmcgRUdML0dMWC9X
R0wvZXRjLiBtZWNoYW5pc21zLiBJbiBvcmRlciB0aGF0IHNoYXJlZAotICAgICAgIG9iamVjdHMg
YmUgaGFuZGxlZCBwcmVkaWN0YWJseSwgYSBjb250ZXh0IGNhbm5vdCBzaGFyZSB3aXRoCi0gICAg
ICAgYW5vdGhlciBjb250ZXh0IHVubGVzcyBib3RoIGhhdmUgdGhlIHNhbWUgcmVzZXQgbm90aWZp
Y2F0aW9uCi0gICAgICAgYmVoYXZpb3IuCi0KLQotUmV2aXNpb24gSGlzdG9yeQotCi0gICAgUmV2
LiAgICBEYXRlICAgICAgIEF1dGhvciAgICAgQ2hhbmdlcwotICAgIC0tLS0gIC0tLS0tLS0tLS0t
LSAtLS0tLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAg
ICAgIDMgICAzMSBPY3QgIDIwMTEgZ3JvdGggICAgICBSZXZlcnRlZCB0byBhdHRyaWJ1dGUgZm9y
IHJvYnVzdCBhY2Nlc3MuIE5vdyBpdCdzIGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb21wYW5pb24gdG8gcmF0aGVyIHRoYW4gc3Vic2V0IG9mIEtIUl9jcmVhdGVfY29udGV4
dAotICAgICAgMiAgIDExIE9jdCAgMjAxMSBncm90aCAgICAgIE1lcmdlZCBBTkdMRSBhbmQgTlYg
ZXh0ZW5zaW9ucy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJ0IHRv
IHVzaW5nIGZsYWcgdG8gaW5kaWNhdGUgcm9idXN0IGFjY2Vzcy4KLSAgICAgIDEgICAxNSBKdWx5
IDIwMTEgZ3JvdGggICAgICBJbml0aWFsIHZlcnNpb24KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL2V4dGVuc2lvbnMvRVhUX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FWFRfc2hhZGVyX2Zy
YW1lYnVmZmVyX2ZldGNoLnR4dAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvZXh0ZW5zaW9ucy9FWFRfc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoLnR4dAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDI2MyArMCwwIEBACi1OYW1lCi0KLSAgICBFWFRfc2hhZGVyX2ZyYW1l
YnVmZmVyX2ZldGNoCi0KLU5hbWUgU3RyaW5ncwotCi0gICAgR0xfRVhUX3NoYWRlcl9mcmFtZWJ1
ZmZlcl9mZXRjaAotCi1Db250YWN0Ci0KLSAgICBCZW5qIExpcGNoYWssIEFwcGxlIChsaXBjaGFr
ICdhdCcgYXBwbGUuY29tKQotCi1TdGF0dXMKLQotICAgIENvbXBsZXRlCi0KLVZlcnNpb24KLQot
ICAgIExhc3QgTW9kaWZpZWQgRGF0ZTogTWF5IDI4LCAyMDEzCi0gICAgQXV0aG9yIFJldmlzaW9u
OiA0Ci0KLU51bWJlcgotCi0gICAgT3BlbkdMIEVTIEV4dGVuc2lvbiAjMTIyCi0KLURlcGVuZGVu
Y2llcwotCi0gICAgT3BlbkdMIEVTIDIuMCBpcyByZXF1aXJlZC4KLSAgICAKLSAgICBUaGlzIHNw
ZWNpZmljYXRpb24gaXMgd3JpdHRlbiBhZ2FpbnN0IHRoZSBPcGVuR0wgRVMgMi4wLjI0IHNwZWNp
ZmljYXRpb24uCi0gICAgVGhpcyBleHRlbnNpb24gaXMgd3JpdHRlbiBhZ2FpbnN0IHRoZSBPcGVu
R0wgRVMgU2hhZGluZyBMYW5ndWFnZSAxLjAuMTcKLSAgICBzcGVjaWZpY2F0aW9uLgotICAgIAot
ICAgIE9wZW5HTCBFUyAzLjAgYWZmZWN0cyB0aGUgZGVmaW5pdGlvbiBvZiB0aGlzIGV4dGVuc2lv
bi4KLQotT3ZlcnZpZXcKLQotICAgIENvbnZlbnRpb25hbCBPcGVuR0wgYmxlbmRpbmcgcHJvdmlk
ZXMgYSBjb25maWd1cmFibGUgc2VyaWVzIG9mIG9wZXJhdGlvbnMKLSAgICB0aGF0IGNhbiBiZSB1
c2VkIHRvIGNvbWJpbmUgdGhlIG91dHB1dCB2YWx1ZXMgZnJvbSBhIGZyYWdtZW50IHNoYWRlciB3
aXRoCi0gICAgdGhlIHZhbHVlcyBhbHJlYWR5IGluIHRoZSBmcmFtZWJ1ZmZlci4gV2hpbGUgdGhl
c2Ugb3BlcmF0aW9ucyBhcmUKLSAgICBzdWl0YWJsZSBmb3IgYmFzaWMgaW1hZ2UgY29tcG9zaXRp
bmcsIG90aGVyIGNvbXBvc2l0aW5nIG9wZXJhdGlvbnMgb3IKLSAgICBvcGVyYXRpb25zIHRoYXQg
dHJlYXQgZnJhZ21lbnQgb3V0cHV0IGFzIHNvbWV0aGluZyBvdGhlciB0aGFuIGEgY29sb3IKLSAg
ICAobm9ybWFscywgZm9yIGluc3RhbmNlKSBtYXkgbm90IGJlIGV4cHJlc3NpYmxlIHdpdGhvdXQg
bXVsdGlwbGUgcGFzc2VzIG9yCi0gICAgcmVuZGVyLXRvLXRleHR1cmUgb3BlcmF0aW9ucy4KLQot
ICAgIFRoaXMgZXh0ZW5zaW9uIHByb3ZpZGVzIGEgbWVjaGFuaXNtIHdoZXJlYnkgYSBmcmFnbWVu
dCBzaGFkZXIgbWF5IHJlYWQKLSAgICBleGlzdGluZyBmcmFtZWJ1ZmZlciBkYXRhIGFzIGlucHV0
LiBUaGlzIGNhbiBiZSB1c2VkIHRvIGltcGxlbWVudAotICAgIGNvbXBvc2l0aW5nIG9wZXJhdGlv
bnMgdGhhdCB3b3VsZCBoYXZlIGJlZW4gaW5jb252ZW5pZW50IG9yIGltcG9zc2libGUgd2l0aAot
ICAgIGZpeGVkLWZ1bmN0aW9uIGJsZW5kaW5nLiBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGFwcGx5
IGEgZnVuY3Rpb24gdG8gdGhlCi0gICAgZnJhbWVidWZmZXIgY29sb3IsIGJ5IHdyaXRpbmcgYSBz
aGFkZXIgd2hpY2ggdXNlcyB0aGUgZXhpc3RpbmcgZnJhbWVidWZmZXIKLSAgICBjb2xvciBhcyBp
dHMgb25seSBpbnB1dC4KLQotSXNzdWVzCi0KLSAgICAxLiBIb3cgaXMgZnJhbWVidWZmZXIgZGF0
YSB0cmVhdGVkIGR1cmluZyBtdWx0aXNhbXBsZSByZW5kZXJpbmc/Ci0gICAgCi0gICAgUkVTT0xW
RUQ6IFJlYWRpbmcgdGhlIHZhbHVlIG9mIGdsX0xhc3RGcmFnRGF0YSBwcm9kdWNlcyBhIGRpZmZl
cmVudAotICAgIHJlc3VsdCBmb3IgZWFjaCBzYW1wbGUuIFRoaXMgaW1wbGllcyB0aGF0IGFsbCBv
ciBwYXJ0IG9mIHRoZSBzaGFkZXIgYmUgcnVuCi0gICAgb25jZSBmb3IgZWFjaCBzYW1wbGUuIElu
cHV0IHZhbHVlcyB0byB0aGUgc2hhZGVyIGZyb20gZXhpc3RpbmcgdmFyaWFibGVzCi0gICAgaW4g
R0xTTCBFUyByZW1haW4gaWRlbnRpY2FsIGFjcm9zcyBzYW1wbGVzLgotICAgIAotICAgIDIuIEhv
dyBkb2VzIHRoZSB1c2Ugb2YgZ2xfTGFzdEZyYWdEYXRhIGludGVyYWN0IHdpdGggZnJhZ21lbnQg
ZGlzY2FyZD8KLSAgICAKLSAgICBSRVNPTFZFRDogSGFyZHdhcmUgbWF5IG5vdCBuZWNlc3Nhcmls
eSBzdXBwb3J0IGRpc2NhcmRpbmcgb24gc2FtcGxlCi0gICAgZ3JhbnVsYXJpdHkuIFRoZXJlZm9y
ZSwgdGhyZWUgb3B0aW9ucyB3ZXJlIGNvbnNpZGVyZWQgZm9yIHRoaXMKLSAgICBmdW5jdGlvbmFs
aXR5OgotICAgIAotICAgICAgICBBKSBBbGxvdyBkaXNjYXJkIGJhc2VkIG9uIHZhcmlhYmxlcyBj
YWxjdWxhdGVkIHVzaW5nIHRoZSBmcmFtZWJ1ZmZlcgotICAgICAgICAgICBjb2xvciB3aGVuIG11
bHRpc2FtcGxlIHJhc3Rlcml6YXRpb24gaXMgZGlzYWJsZWQsIGJ1dCBkaXNhbGxvdwotICAgICAg
ICAgICBkaXNjYXJkIGluIHRoaXMgbWFubmVyIHdoZW4gbXVsdGlzYW1wbGUgcmFzdGVyaXphdGlv
biBpcyBlbmFibGVkLgotICAgICAgICAKLSAgICAgICAgQikgUmVzdHJpY3QgdXNhZ2Ugb2YgdGhl
IGZyYW1lYnVmZmVyIGNvbG9yIHVudGlsIGl0IGlzIGtub3duIHdoZXRoZXIKLSAgICAgICAgICAg
b3Igbm90IHRoZSBwaXhlbCB3aWxsIGJlIGRpc2NhcmRlZC4KLSAgICAgICAgICAgIAotICAgICAg
ICBDKSBBbGxvdyB1bmRlZmluZWQgcmVzdWx0cyBmb3IgZnJhZ21lbnQgc2hhZGVycyB0aGF0IGRp
c2NhcmQgb24gYQotICAgICAgICAgICBwZXItc2FtcGxlIGJhc2lzIG9uIGhhcmR3YXJlIHRoYXQg
ZG9lc24ndCBzdXBwb3J0IGl0LgotICAgIAotICAgIFRoaXMgZXh0ZW5zaW9uIGhhcyBjaG9zZW4g
b3B0aW9uIEMuIFJlc3RyaWN0aW5nIG9ydGhvZ29uYWxpdHkgb2YgZnJhZ21lbnQKLSAgICBzaGFk
ZXJzIGJldHdlZW4gc2luZ2xlLXNhbXBsZSBhbmQgbXVsdGlzYW1wbGUgcmVuZGVyaW5nIGlzIHVu
ZGVzaXJhYmxlLCBhcwotICAgIGlzIHJlc3RyaWN0aW5nIHVzYWdlIG9mIHRoZSBmcmFtZWJ1ZmZl
ciBjb2xvciwgd2hpY2ggY2FuIGdlbmVyYWxseSBvbmx5IGJlCi0gICAgZG9uZSB3aXRoIGRldGFp
bGVkIGZsb3ctY29udHJvbCBhbmFseXNpcy4KLSAgICAKLSAgICAzLiBXaGF0IGlzIHRoZSBwcmVj
aXNpb24gb2YgZ2xfTGFzdEZyYWdEYXRhIGluIHByYWN0aWNlPwotICAgIAotICAgIFJFU09MVkVE
OiBUaHJlZSBvcHRpb25zIHdlcmUgY29uc2lkZXJlZCBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5Ogot
ICAgIAotICAgICAgICBBKSBnbF9MYXN0RnJhZ0RhdGEgaXMgYWx3YXlzIG1lZGl1bXAuCi0gICAg
ICAgIAotICAgICAgICBCKSBnbF9MYXN0RnJhZ0RhdGEgdGFrZXMgdGhlIHByZWNpc2lvbiBtb3N0
IGNsb3NlbHkgbWF0Y2hpbmcgdGhlCi0gICAgICAgICAgIGFjdHVhbCBzdG9yYWdlIGZvcm1hdCBv
ZiB0aGUgZnJhbWVidWZmZXIuCi0gICAgICAgIAotICAgICAgICBDKSBBbGxvdyByZWRlY2xhcmF0
aW9uIG9mIGdsX0xhc3RGcmFnRGF0YSBpbiBvcmRlciB0byBjaGFuZ2UgaXRzCi0gICAgICAgICAg
IHByZWNpc2lvbi4KLSAgICAKLSAgICBUaGlzIGV4dGVuc2lvbiBoYXMgY2hvc2VuIG9wdGlvbiBD
LiBBIGZpeGVkIHByZWNpc2lvbiBwZXIgb3B0aW9uIEEKLSAgICBpbmNyZWFzZXMgdGhlIGxpa2Vs
aWhvb2Qgb2YgcmVkdW5kYW50IGNvbnZlcnNpb24gb3BlcmF0aW9ucyBpbiB0aGUgc2hhZGVyLAot
ICAgIGFuZCBvcHRpb24gQiBkb2VzIG5vdCBwcm92aWRlIGZvciBjbGVhciBiZWhhdmlvciB3aXRo
IHJlZ2FyZCB0byB0aGUKLSAgICBwcmVjaXNpb24gb2YgaW50ZXJtZWRpYXRlIHJlc3VsdHMgZnJv
bSBjYWxjdWxhdGlvbnMgdXNpbmcgdGhlCi0gICAgZnJhbWVidWZmZXIgY29sb3IuCi0KLSAgICA0
LiBIb3cgZG9lcyB0aGlzIGV4dGVuc2lvbiBpdGVyYWN0IHdpdGggY29udmVudGlvbmFsIGJsZW5k
aW5nPwotICAgIAotICAgIFJFU09MVkVEOiBUaGVyZSBpcyBubyBpbnRlcmFjdGlvbi4gIFRoZSB0
d28gcmVtYWluIG9ydGhvZ29uYWwuICBUaGUgcmVzdAotICAgIG9mIHRoZSBwaXBlbGluZSBjb250
aW51ZXMgYXMgdXN1YWwgYWZ0ZXIgdGhlIGZyYWdtZW50IHNoYWRlciBzdGFnZS4KLSAgICAKLQot
ICAgIDUuIEhvdyBkb2VzIHRoaXMgZXh0ZW5zaW9uIHdvcmsgaW4gRVMgMy4wPwotCi0gICAgUkVT
T0xWRUQ6IERpZmZlcmVudGx5IHRoYW4gaW4gRVMgMi4wLgotCi0gICAgVGhlIGJ1aWx0LWluIGZy
YWdtZW50IG91dHB1dHMgb2YgRVMgMi4wIGFyZSByZXBsYWNlZCBpbiAjdmVyc2lvbiAzMDAgZXMK
LSAgICBzaGFkZXJzIGJ5IHVzZXItZGVjbGFyZWQgb3V0cHV0cywgdG8gYWNjb21vZGF0ZSBpbnRl
Z2VyIGFuZCBNUlQgCi0gICAgZnJhbWVidWZmZXJzLiAgVGhyZWUgb3B0aW9ucyB3ZXJlIGNvbnNp
ZGVyZWQ6Ci0KLSAgICAgICAgQSkgQWRkIGJ1aWx0LWlucyBzaW1pbGFyIHRvIGdsX0xhc3RGcmFn
RGF0YS4KLSAgICAgICAgCi0gICAgICAgIEIpIEFkZCBhIGxheW91dCB0byBtYXJrIHVzZXItZGVj
bGFyZWQgZnJhZ21lbnQgb3V0cHV0cyBhcyBoYXZpbmcKLSAgICAgICAgZGVmaW5lZCBjb250ZW50
IG9uIGVudHJ5IHRvIGZyYWdtZW50IHNoYWRlci4KLSAgICAgICAgICAgIAotICAgICAgICBDKSBB
bGxvdyBtYXJraW5nIHVzZXItZGVjbGFyZWQgZnJhZ21lbnQgb3V0cHV0cyBhcyAiaW5vdXQiLgot
Ci0gICAgVGhpcyBleHRlbnNpb24gaGFzIGNob3NlbiBvcHRpb24gQy4gIEFkZGluZyBidWlsdC1p
bnMgcGVyIG9wdGlvbiBBIGlzCi0gICAgdW53aWVsZHkgZm9yIE1SVCBmcmFtZWJ1ZmZlcnMgd2l0
aCBtaXhlZCBhdHRhY2htZW50IHR5cGVzIGFuZCBwcmVjaXNpb25zLiAgCi0gICAgT3B0aW9ucyBC
IGFuZCBDIGFyZSBzZW1hbnRpY2FsbHkgaWRlbnRpY2FsLCBidXQgQyByZXF1aXJlcyBmZXdlciAK
LSAgICBtb2RpZmljYXRpb25zIHRvIHRoZSBzcGVjaWZpY2F0aW9uIGFuZCB0byB1c2VyIHNoYWRl
cnMuICBOb3RlIHRoYXQgdGhlIAotICAgIGlub3V0IHF1YWxpZmllciBpcyBub3QgYWxsb3dlZCBm
b3IgcmUtZGVjbGFyaW5nIGV4aXN0aW5nIGZyYWdtZW50IG91dHB1dHMgCi0gICAgc3VjaCBhcyBn
bF9GcmFnRGVwdGguCi0KLU5ldyBQcm9jZWR1cmVzIGFuZCBGdW5jdGlvbnMKLQotICAgIE5vbmUK
LSAgICAKLU5ldyBUb2tlbnMKLQotICAgIEFjY2VwdGVkIGJ5IHRoZSA8cG5hbWU+IHBhcmFtZXRl
ciBvZiBHZXRCb29sZWFudiwgR2V0SW50ZWdlcnYsIEdldEZsb2F0diwKLSAgICBhbmQgR2V0RG91
YmxldjoKLSAgICAKLSAgICAgICAgRlJBR01FTlRfU0hBREVSX0RJU0NBUkRTX1NBTVBMRVNfRVhU
ICAgICAgICAgICAgMHg4QTUyCi0KLU5ldyBCdWlsdGluIFZhcmlhYmxlcwotCi0gICAgbWVkaXVt
cCB2ZWM0IGdsX0xhc3RGcmFnRGF0YVtnbF9NYXhEcmF3QnVmZmVyc10KLSAgICAKLUNoYW5nZXMg
dG8gdGhlIE9wZW5HTCBFUyAyLjAuMjQgU3BlY2lmaWNhdGlvbiwgQ2hhcHRlciAzCi0KLSAgICBS
ZW1vdmUgdGhlIGxhc3Qgc2VudGVuY2Ugb2YgUGFyYWdyYXBoIDIgb2YgU2VjdGlvbiAzLjguMSwg
cGFnZSA4NCAoIlRoZXNlCi0gICAgYnVpbHQtaW4gdmFyeWluZyB2YXJpYWJsZXMgaW5jbHVkZSBb
Li4uXSIgYW5kIGFkZDoKLSAgICAKLSAgICBUaGVzZSBidWlsdC1pbiB2YXJ5aW5nIHZhcmlhYmxl
cyBpbmNsdWRlIHRoZSBmcmFnbWVudCdzIHBvc2l0aW9uLCBleWUgegotICAgIGNvb3JkaW5hdGUs
IGFuZCBmcm9udC1mYWNpbmcgZmxhZywgYXMgd2VsbCBhcyB0aGUgbGFzdCBkYXRhIG9yIGNvbG9y
IHZhbHVlCi0gICAgd3JpdHRlbiB0byB0aGUgZnJhbWVidWZmZXIuIFdoZW4gdGhlIHZhbHVlIG9m
IFNBTVBMRV9CVUZGRVJTIGlzIDEgYW5kIHRoZSAKLSAgICBjdXJyZW50IGZyYW1lYnVmZmVyIGNv
bG9yIGlzIGFjY2Vzc2VkIGluIHRoZSBmcmFnbWVudCBzaGFkZXIsIHRoZSBmcmFnbWVudAotICAg
IHNoYWRlciB3aWxsIGJlIGludm9rZWQgc2VwYXJhdGVseSBmb3IgZWFjaCBjb3ZlcmVkIHNhbXBs
ZSBhbmQgYSBzZXBhcmF0ZSAKLSAgICB2YWx1ZSBmb3IgdGhlIHByZXZpb3VzIGZyYW1lYnVmZmVy
IGNvbG9yIHdpbGwgYmUgcHJvdmlkZWQgZm9yIGVhY2ggc2FtcGxlLiIKLSAgICAKLSAgICBBZGQg
YSBuZXcgc3Vic2VjdGlvbiB0byBzZWN0aW9uIDMuOC4yLCBwYWdlIDg3ICgiU2hhZGVyIEV4ZWN1
dGlvbiIpOgotICAgIAotICAgICJEaXNjYXJkCi0gICAgCi0gICAgRnJhZ21lbnQgc2hhZGVycyBt
YXkgY29uZGl0aW9uYWxseSBhYmFuZG9uIG9wZXJhdGlvbnMgdXNpbmcgdGhlIGRpc2NhcmQKLSAg
ICBrZXl3b3JkLiBIb3dldmVyLCB0aGUgYWJpbGl0eSBvZiBoYXJkd2FyZSB0byBzdXBwb3J0IGFi
YW5kb25pbmcgb3BlcmF0aW9ucwotICAgIG9uIGEgc2luZ2xlIHNhbXBsZSB3aGVuIHRoZSBzaGFk
ZXIgaXMgaW52b2tlZCBvbmNlIGZvciBlYWNoIGNvdmVyZWQgc2FtcGxlCi0gICAgaXMgaW1wbGVt
ZW50YXRpb24tZGVwZW5kZW50LiBUaGlzIGNhcGFiaWxpdHkgY2FuIGJlIGRldGVybWluZWQgYnkg
Y2FsbGluZwotICAgIEdldEJvb2xlYW52IHdpdGggdGhlIHN5bWJvbGljIGNvbnN0YW50IAotICAg
IEZSQUdNRU5UX1NIQURFUl9ESVNDQVJEU19TQU1QTEVTX0VYVC4gSWYgRkFMU0UgaXMgcmV0dXJu
ZWQsIHJlc3VsdHMgZnJvbQotICAgIHNoYWRlcnMgd2hpY2ggZGlzY2FyZCBiYXNlZCBvbiBwZXIt
c2FtcGxlIGxvZ2ljIGFyZSB1bmRlZmluZWQuIgotCi1DaGFuZ2VzIHRvIHRoZSBPcGVuR0wgRVMg
Mi4wLjI0IFNwZWNpZmljYXRpb24sIENoYXB0ZXIgNAotCi0gICAgUmVwbGFjZSBmaXJzdCBlbGVt
ZW50IG9mIEZpZ3VyZSA0LjEsIHBhZ2UgOTAgKCJGcmFnbWVudCArIEFzc29jaWF0ZWQgRGF0YSIp
OgotICAgIAotICAgICJGcmFnbWVudCAob3Igc2FtcGxlKSArIEFzc29jaWF0ZWQgRGF0YSIKLQot
TmV3IEltcGxlbWVudGF0aW9uIERlcGVuZGVudCBTdGF0ZQotCi0gICAgQWRkIHRvIHRhYmxlIDYu
MTkgKEltcGxlbWVudGF0aW9uIERlcGVuZGVudCBWYWx1ZXMgKGNvbnQuKSk6Ci0KLSAgICBHZXQg
VmFsdWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgIEdldCBDb21tYW5kICBNaW5p
bXVtIFZhbHVlICBEZXNjcmlwdGlvbiAgICAgICAgU2VjdGlvbgotICAgIC0tLS0tLS0tLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLS0tLSAgLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLS0g
IC0tLS0tLS0tLS0tLS0tICAgICAtLS0tLS0tCi0gICAgRlJBR01FTlRfU0hBREVSX0RJU0NBUkRT
X1NBTVBMRVNfRVhUICBCICAgICBHZXRCb29sZWFudiAgLSAgICAgICAgICAgICAgU2FtcGxlcyBt
YXkgYmUgICAgIDMuOC4yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzY2FyZGVkIAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluZGl2aWR1YWxseSAKLQotQ2hhbmdlcyB0byB0aGUgT3BlbkdMIEVTIFNoYWRp
bmcgTGFuZ3VhZ2UgMS4wLjE3IFNwZWNpZmljYXRpb24sIENoYXB0ZXIgMwotCi0gICAgUmVtb3Zl
IFBhcmFncmFwaCAyIG9mIHNlY3Rpb24gMy44LCBwYWdlIDE3LCBJZGVudGlmaWVycyAoIklkZW50
aWZpZXJzCi0gICAgc3RhcnRpbmcgd2l0aCAiZ2xfIiBhcmUgcmVzZXJ2ZWQgWy4uLl0iKSBhbmQg
YWRkOgotCi0gICAgIklkZW50aWZpZXJzIHN0YXJ0aW5nIHdpdGggImdsXyIgYXJlIHJlc2VydmVk
IGZvciB1c2UgYnkgT3BlbkdMIEVTLCBhbmQKLSAgICBtYXkgbm90IGJlIGRlY2xhcmVkIGluIGEg
c2hhZGVyIGFzIGVpdGhlciBhIHZhcmlhYmxlIG9yIGEgZnVuY3Rpb24uCi0gICAgSG93ZXZlciwg
YXMgbm90ZWQgaW4gdGhlIHNwZWNpZmljYXRpb24sIGNlcnRhaW4gcHJlZGVjbGFyZWQgImdsXyIg
bmFtZXMKLSAgICBhcmUgYWxsb3dlZCB0byBiZSByZWRlY2xhcmVkIGluIGEgc2hhZGVyIGZvciB0
aGUgc3BlY2lmaWMgcHVycG9zZSBvZgotICAgIGNoYW5naW5nIHRoZWlyIHByZWNpc2lvbiBxdWFs
aWZpZXIuIgotICAgIAotQ2hhbmdlcyB0byB0aGUgT3BlbkdMIEVTIFNoYWRpbmcgTGFuZ3VhZ2Ug
MS4wLjE3IFNwZWNpZmljYXRpb24sIENoYXB0ZXIgNwotCi0gICAgQWRkIGFmdGVyIHRoZSBsYXN0
IHNlbnRlbmNlIG9mIFBhcmFncmFwaCAyIG9mIFNlY3Rpb24gNy4yLCBwYWdlIDYwLAotICAgIEZy
YWdtZW50IFNoYWRlciBTcGVjaWFsIFZhcmlhYmxlcyAoIlRoZXNlIHZhcmlhYmxlcyBtYXkgYmUg
d3JpdHRlbiB0bwotICAgIG1vcmUgWy4uLl0iKToKLSAgICAKLSAgICAiLi4uIFRvIGFjY2VzcyB0
aGUgZXhpc3RpbmcgZnJhbWVidWZmZXIgdmFsdWVzIChlLmcuLCB0byBpbXBsZW1lbnQgYQotICAg
IGNvbXBsZXggYmxlbmQgb3BlcmF0aW9uIGluc2lkZSB0aGUgc2hhZGVyKSwgZnJhZ21lbnQgc2hh
ZGVycyBzaG91bGQgdXNlCi0gICAgdGhlIHJlYWQtb25seSBpbnB1dCBhcnJheSBnbF9MYXN0RnJh
Z0RhdGEuICBnbF9MYXN0RnJhZ0RhdGEgcmV0dXJucyB0aGUKLSAgICB2YWx1ZSB3cml0dGVuIGJ5
IHRoZSBtb3N0IHJlY2VudCBmcmFnbWVudCBhdCB0aGUgc2FtZSBwb3NpdGlvbi4KLSAgICAKLSAg
ICBBY2Nlc3MgdG8gZ2xfTGFzdEZyYWdEYXRhIGlzIG9wdGlvbmFsLCBhbmQgbXVzdCBiZSBlbmFi
bGVkIGJ5IAotICAgIAotICAgICNleHRlbnNpb24gR0xfRVhUX3NoYWRlcl9mcmFtZWJ1ZmZlcl9m
ZXRjaCA6IDxiZWhhdmlvcj4KLSAgICAKLSAgICBXaGVyZSA8YmVoYXZpb3I+IGlzIGFzIHNwZWNp
ZmllZCBpbiBzZWN0aW9uIDMuMy4KLSAgICAKLSAgICBCeSBkZWZhdWx0LCBnbF9MYXN0RnJhZ0Rh
dGEgaXMgZGVjbGFyZWQgd2l0aCB0aGUgbWVkaXVtcCBwcmVjaXNpb24KLSAgICBxdWFsaWZpZXIu
IFRoaXMgY2FuIGJlIGNoYW5nZWQgYnkgcmVkZWNsYXJpbmcgdGhlIGNvcnJlc3BvbmRpbmcgdmFy
aWFibGVzCi0gICAgd2l0aCB0aGUgZGVzaXJlZCBwcmVjaXNpb24gcXVhbGlmaWVyLgotICAgIAot
ICAgIFJlZGVjbGFyYXRpb25zIGFyZSBkb25lIGFzIGZvbGxvd3MKLSAgICAKLSAgICAvLyBSZWRl
Y2xhcmF0aW9uIHRoYXQgY2hhbmdlcyBub3RoaW5nIGlzIGFsbG93ZWQKLSAgICBtZWRpdW1wIHZl
YzQgZ2xfTGFzdEZyYWdEYXRhW2dsX01heERyYXdCdWZmZXJzXTsgCi0gICAgCi0gICAgLy8gQWxs
IHRoZSBmb2xsb3dpbmcgYXJlIGFsbG93ZWQgcmVkZWNsYXJhdGlvbiB0aGF0IGNoYW5nZSBiZWhh
dmlvcgotICAgIGxvd3AgdmVjNCBnbF9MYXN0RnJhZ0RhdGFbZ2xfTWF4RHJhd0J1ZmZlcnNdOwot
ICAgIGhpZ2hwIHZlYzQgZ2xfTGFzdEZyYWdEYXRhW2dsX01heERyYXdCdWZmZXJzXTsKLSAgICAK
LSAgICBSZWRlY2xhcmF0aW9ucyBtdXN0IG5vdCBvdGhlcndpc2UgYWx0ZXIgdGhlIGRlY2xhcmVk
IHR5cGUgb3IgYXJyYXkgc2l6ZSBvZgotICAgIGdsX0xhc3RGcmFnRGF0YS4iCi0gICAgCi1DaGFu
Z2VzIHRvIHRoZSBPcGVuR0wgRVMgU2hhZGluZyBMYW5ndWFnZSAzLjAwLjMgU3BlY2lmaWNhdGlv
biwgQ2hhcHRlciA0Ci0KLSAgICBNb2RpZnkgUGFyYWdyYXBoIDIgb2Ygc2VjdGlvbiA0LjMuNjoK
LSAgICAiRXhjZXB0IGluIHRoZSBmcmFnbWVudCBzdGFnZSwgdGhlcmUgaXMgbm90IGFuIGlub3V0
IHN0b3JhZ2UgcXVhbGlmaWVyIGF0Ci0gICAgZ2xvYmFsIHNjb3BlIGZvciBkZWNsYXJpbmcgYSBz
aW5nbGUgdmFyaWFibGUgbmFtZSBhcyBib3RoIGlucHV0IGFuZCBvdXRwdXQKLSAgICBbLi4uXSIK
LQotICAgIE1vZGlmeSBQYXJhZ3JhcGggNSBvZiBzZWN0aW9uIDQuMy42OgotICAgICJGcmFnbWVu
dCBvdXRwdXRzIG91dHB1dCBwZXItZnJhZ21lbnQgZGF0YSBhbmQgYXJlIGRlY2xhcmVkIHVzaW5n
IHRoZSBvdXQKLSAgICBvciBpbm91dCBzdG9yYWdlIHF1YWxpZmllci4gSXQgaXMgYW4gZXJyb3Ig
dG8gdXNlIGNlbnRyb2lkIG91dCBvciBjZW50cm9pZAotICAgIGlub3V0IGluIGEgZnJhZ21lbnQg
c2hhZGVyIFsuLi5dIiBhbmQgYXBwZW5kIG5ldyBwYXJhZ3JhcGg6Ci0KLSAgICAiVXBvbiBlbnRy
eSB0byB0aGUgZnJhZ21lbnQgc2hhZGVyLCBmcmFnbWVudCBvdXRwdXRzIGRlY2xhcmVkIGFzIGlu
b3V0IHdpbGwKLSAgICBjb250YWluIHRoZSB2YWx1ZSB3cml0dGVuIGJ5IHRoZSBtb3N0IHJlY2Vu
dCBmcmFnbWVudCBhdCB0aGUgc2FtZSBwb3NpdGlvbi4KLSAgICBUaGlzIGJlaGF2aW9yLCBhbmQg
dGhlIGFiaWxpdHkgdG8gdXNlIHRoZSBpbm91dCBxdWFsaWZpZXIgYXQgZ2xvYmFsIHNjb3BlIAot
ICAgIGluIGEgZnJhZ21lbnQgc2hhZGVyLCBpcyBvcHRpb25hbCBhbmQgbXVzdCBiZSBlbmFibGVk
IGJ5Ci0KLSAgICAjZXh0ZW5zaW9uIEdMX0VYVF9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2ggOiA8
YmVoYXZpb3I+Ci0gICAgCi0gICAgV2hlcmUgPGJlaGF2aW9yPiBpcyBhcyBzcGVjaWZpZWQgaW4g
c2VjdGlvbiAzLjQuIgotCi1JbnRlcmFjdGlvbnMgd2l0aCBPRVNfc3RhbmRhcmRfZGVyaXZhdGl2
ZXMKLQotICAgIFJlc3VsdHMgZnJvbSBzaGFkZXJzIHdoaWNoIHVzZSB0aGUgYnVpbHQtaW4gZGVy
aXZhdGl2ZSBmdW5jdGlvbnMgZEZkeCwKLSAgICBkRmR5LCBhbmQgZndpZHRoIG9uIHZhcmlhYmxl
cyBjYWxjdWxhdGVkIHVzaW5nIHRoZSBjdXJyZW50IGZyYW1lYnVmZmVyIAotICAgIGNvbG9yIGFy
ZSB1bmRlZmluZWQuCi0KLVJldmlzaW9uIEhpc3RvcnkKLQotICAgIFZlcnNpb24gNCwgMjAxMy8w
NS8yOCAtIEFkZGVkIEVTMyBpbnRlcmFjdGlvbiBhcyByZXF1ZXN0ZWQgaW4gQnVnIDEwMjM2Ci0g
ICAgVmVyc2lvbiAzLCAyMDEyLzA5LzI0IC0gUmVtb3ZlIG9ic29sZXRlIGlzc3VlIDMgYWJvdXQg
ZGVyaXZhdGl2ZXMKLSAgICBWZXJzaW9uIDIsIDIwMTIvMDYvMjEgLSBGaXggTVVMVElTQU1QTEUg
ZW5hYmxlZCAtPiBTQU1QTEVfQlVGRkVSUyA9IDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVjYXN0IGZyb20gQVBQTEUgdG8gbXVsdGl2ZW5kb3IgRVhULCBjbGFyaWZ5IHRoYXQKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9MYXN0RnJhZ0RhdGEgcmVmbGVjdHMgdmFsdWUg
d3JpdHRlbiBieSBwcmV2aW91cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVsIGF0
IHNhbWUgY29vcmRpbmF0ZXMuCi0gICAgVmVyc2lvbiAxLCAyMDEyLzA2LzAxIC0gQ29udmVyc2lv
biBmcm9tIEFSQl9zeW5jIHRvIEFQUExFX3N5bmMgZm9yIEVTLgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRVhUX3Rl
eHR1cmVfcmcudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVu
c2lvbnMvRVhUX3RleHR1cmVfcmcudHh0CShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VYVF90ZXh0dXJlX3JnLnR4dAkobm9uZXhpc3RlbnQp
CkBAIC0xLDE5NSArMCwwIEBACi1OYW1lCi0KLSAgICBFWFRfdGV4dHVyZV9yZwotCi1OYW1lIFN0
cmluZ3MKLSAgICAKLSAgICBHTF9FWFRfdGV4dHVyZV9yZwotCi1Db250cmlidXRvcnMKLQotICAg
IENvbnRyaWJ1dG9ycyB0byBBUkJfdGV4dHVyZV9yZywgb24gd2hpY2ggdGhpcyBleHRlbnNpb24g
aXMgYmFzZWQKLSAgICBLeWxlIEhhdWdoZXkKLSAgICBSaWNoYXJkIFNjaHJleWVyCi0KLUNvbnRh
Y3QKLQotICAgIEJlbmogTGlwY2hhaywgQXBwbGUgKGxpcGNoYWsgJ2F0JyBhcHBsZS5jb20pCi0K
LVN0YXR1cyAKLSAgICAKLSAgICBDb21wbGV0ZQotCi1WZXJzaW9uCi0gICAgCi0gICAgRGF0ZTog
SnVseSAyMiwgMjAxMQotICAgIFJldmlzaW9uOiAzCi0KLU51bWJlcgotCi0gICAgT3BlbkdMIEVT
IEV4dGVuc2lvbiAjMTAzCi0KLURlcGVuZGVuY2llcwotCi0gICAgUmVxdWlyZXMgT3BlbkdMIEVT
IDIuMC4KLQotICAgIFdyaXR0ZW4gYmFzZWQgb24gdGhlIHdvcmRpbmcgb2YgdGhlIE9wZW5HTCBF
UyAyLjAuMjUgRnVsbCBTcGVjaWZpY2F0aW9uCi0gICAgKE5vdmVtYmVyIDIsIDIwMTApLgotCi0g
ICAgT0VTX3RleHR1cmVfZmxvYXQgYWZmZWN0cyB0aGUgZGVmaW5pdGlvbiBvZiB0aGlzIGV4dGVu
c2lvbi4KLQotICAgIE9FU190ZXh0dXJlX2hhbGZfZmxvYXQgYWZmZWN0cyB0aGUgZGVmaW5pdGlv
biBvZiB0aGlzIGV4dGVuc2lvbi4KLQotICAgIEFQUExFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxl
IGFmZmVjdHMgdGhlIGRlZmluaXRpb24gb2YgdGhpcyBleHRlbnNpb24uCi0KLU92ZXJ2aWV3Ci0K
LSAgICBIaXN0b3JpY2FsbHkgb25lLSBhbmQgdHdvLWNvbXBvbmVudCB0ZXh0dXJlcyBoYXZlIGJl
ZW4gc3BlY2lmaWVkIGluIE9wZW5HTAotICAgIEVTIHVzaW5nIHRoZSBsdW1pbmFuY2Ugb3IgbHVt
aW5hbmNlLWFscGhhIChML0xBKSBmb3JtYXRzLiBXaXRoIHRoZSBhZHZlbnQKLSAgICBvZiBwcm9n
cmFtbWFibGUgc2hhZGVycyBhbmQgcmVuZGVyLXRvLXRleHR1cmUgY2FwYWJpbGl0aWVzIHRoZXNl
IGxlZ2FjeQotICAgIGZvcm1hdHMgY2Fycnkgc29tZSBoaXN0b3JpY2FsIGFydGlmYWN0cyB3aGlj
aCBhcmUgbm8gbG9uZ2VyIHVzZWZ1bC4KLQotICAgIEZvciBleGFtcGxlLCB3aGVuIHNhbXBsaW5n
IGZyb20gc3VjaCB0ZXh0dXJlcywgdGhlIGx1bWluYW5jZSB2YWx1ZXMgYXJlCi0gICAgcmVwbGlj
YXRlZCBhY3Jvc3MgdGhlIGNvbG9yIGNvbXBvbmVudHMuIFRoaXMgaXMgbm8gbG9uZ2VyIG5lY2Vz
c2FyeSB3aXRoCi0gICAgcHJvZ3JhbW1hYmxlIHNoYWRlcnMuCi0gICAgCi0gICAgSXQgaXMgYWxz
byBkZXNpcmFibGUgdG8gYmUgYWJsZSB0byByZW5kZXIgdG8gb25lLSBhbmQgdHdvLWNvbXBvbmVu
dCBmb3JtYXQKLSAgICB0ZXh0dXJlcyB1c2luZyBjYXBhYmlsaXRpZXMgc3VjaCBhcyBmcmFtZWJ1
ZmZlciBvYmplY3RzIChGQk8pLCBidXQKLSAgICByZW5kZXJpbmcgdG8gTC9MQSBmb3JtYXRzIGlz
IHVuZGVyLXNwZWNpZmllZCAoc3BlY2lmaWNhbGx5IGhvdyB0byBtYXAKLSAgICBSL0cvQi9BIHZh
bHVlcyB0byBML0EgdGV4dHVyZSBjaGFubmVscykuCi0KLSAgICBUaGlzIGV4dGVuc2lvbiBhZGRz
IG5ldyBiYXNlIGludGVybmFsIGZvcm1hdHMgZm9yIG9uZS1jb21wb25lbnQgUkVEIGFuZAotICAg
IHR3by1jb21wb25lbnQgUkcgKHJlZCBncmVlbikgdGV4dHVyZXMgYXMgd2VsbCBhcyBzaXplZCBS
RUQgYW5kIFJHIGludGVybmFsCi0gICAgZm9ybWF0cyBmb3IgcmVuZGVyYnVmZmVycy4gVGhlIFJF
RCBhbmQgUkcgdGV4dHVyZSBmb3JtYXRzIGNhbiBiZSB1c2VkIGZvcgotICAgIGJvdGggdGV4dHVy
aW5nIGFuZCByZW5kZXJpbmcgaW50byB3aXRoIGZyYW1lYnVmZmVyIG9iamVjdHMuCi0KLU5ldyBQ
cm9jZWR1cmVzIGFuZCBGdW5jdGlvbnMKLSAgICAKLSAgICBOb25lCi0KLU5ldyBUb2tlbnMKLQot
ICAgIEFjY2VwdGVkIGJ5IHRoZSA8aW50ZXJuYWxmb3JtYXQ+IHBhcmFtZXRlciBvZiBUZXhJbWFn
ZTJEIGFuZCBDb3B5VGV4SW1hZ2UyRCwKLSAgICBhbmQgdGhlIDxmb3JtYXQ+IHBhcmFtZXRlciBv
ZiBUZXhJbWFnZTJELCBUZXhTdWJJbWFnZTJELCBhbmQgUmVhZFBpeGVsczoKLQotICAgICAgICBS
RURfRVhUICAgICAgICAgICAgICAgICAweDE5MDMKLSAgICAgICAgUkdfRVhUICAgICAgICAgICAg
ICAgICAgMHg4MjI3Ci0KLSAgICBBY2NlcHRlZCBieSB0aGUgPGludGVybmFsZm9ybWF0PiBwYXJh
bWV0ZXIgb2YgUmVuZGVyYnVmZmVyU3RvcmFnZSBhbmQKLSAgICBSZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGVBUFBMRToKLQotICAgICAgICBSOF9FWFQgICAgICAgICAgICAgICAgICAweDgy
MjkKLSAgICAgICAgUkc4X0VYVCAgICAgICAgICAgICAgICAgMHg4MjJCCi0KLUFkZGl0aW9ucyB0
byBDaGFwdGVyIDIgb2YgdGhlIE9wZW5HTCBFUyAyLjAgU3BlY2lmaWNhdGlvbiAoT3BlbkdMIEVT
IE9wZXJhdGlvbikKLQotICAgIE5vbmUKLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgMyBvZiB0aGUg
T3BlbkdMIEVTIDIuMCBTcGVjaWZpY2F0aW9uIChSYXN0ZXJpemF0aW9uKQotCi0gICAgKEFkZCB0
aGUgZm9sbG93aW5nIHRvIFRhYmxlIDMuMzogIlRleEltYWdlMkQgYW5kIFJlYWRQaXhlbHMgZm9y
bWF0cyIpCi0KLSAgICBGb3JtYXQgTmFtZSAgICAgRWxlbWVudCBNZWFuaW5nIGFuZCBPcmRlciAg
ICAgIFRhcmdldCBCdWZmZXIKLSAgICAtLS0tLS0tLS0tLSAgICAgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSAgICAgIC0tLS0tLS0tLS0tLS0KLSAgICBSRURfRVhUICAgICAgICAgUiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENvbG9yCi0gICAgUkdfRVhUICAgICAgICAgIFIsIEcgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDb2xvcgotCi0gICAgKEFkZCB0aGUgZm9sbG93aW5nIHRv
IFRhYmxlIDMuNDogIlZhbGlkIHBpeGVsIGZvcm1hdCBhbmQgdHlwZSBjb21iaW5hdGlvbnMiKQot
ICAgIChhcyBtb2RpZmllZCBieSBPRVNfdGV4dHVyZV9mbG9hdCBhbmQgT0VTX3RleHR1cmVfaGFs
Zl9mbG9hdCkKLQotICAgIEZvcm1hdCAgICAgICAgICBUeXBlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQnl0ZXMgcGVyIFBpeGVsCi0gICAgLS0tLS0tLS0tLS0gICAgIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gICAgICAtLS0tLS0tLS0tLS0tLS0KLSAgICBSRURfRVhUICAgICAgICAgRkxP
QVQgICAgICAgICAgICAgICAgICAgICAgICAgIDQKLSAgICBSRURfRVhUICAgICAgICAgSEFMRl9G
TE9BVF9PRVMgICAgICAgICAgICAgICAgIDIKLSAgICBSRURfRVhUICAgICAgICAgVU5TSUdORURf
QllURSAgICAgICAgICAgICAgICAgIDEKLSAgICBSR19FWFQgICAgICAgICAgRkxPQVQgICAgICAg
ICAgICAgICAgICAgICAgICAgIDgKLSAgICBSR19FWFQgICAgICAgICAgSEFMRl9GTE9BVF9PRVMg
ICAgICAgICAgICAgICAgIDQKLSAgICBSR19FWFQgICAgICAgICAgVU5TSUdORURfQllURSAgICAg
ICAgICAgICAgICAgIDIKLQotICAgIChBZGQgdGhlIGZvbGxvd2luZyB0byBUYWJsZSAzLjg6ICJD
b252ZXJzaW9uIGZyb20gUkdCQSBhbmQgZGVwdGggcGl4ZWwKLSAgICBjb21wb25lbnRzIHRvIGlu
dGVybmFsIHRleHR1cmUiKQotCi0gICAgQmFzZSBJbnRlcm5hbCBGb3JtYXQgICAgIFJHQkEgICAg
ICAgSW50ZXJuYWwgQ29tcG9uZW50cwotICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tICAgICAtLS0t
LS0gICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICBSRURfRVhUICAgICAgICAgICAgICAgICAg
UiAgICAgICAgICBSCi0gICAgUkdfRVhUICAgICAgICAgICAgICAgICAgIFIsRyAgICAgICAgUixH
Ci0KLSAgICAoTW9kaWZ5IFRhYmxlIDMuOTogIkNvcHlUZXhJbWFnZSBpbnRlcm5hbCBmb3JtYXQv
Y29sb3IgYnVmZmVyIGNvbWJpbmF0aW9ucyIpCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUZXh0dXJlIEZvcm1hdAotICAgIENvbG9yIEJ1ZmZlciAgICAgIEEgIEwgIExBICBSICBSRyAg
UkdCICBSR0JBCi0gICAgLS0tLS0tLS0tLS0tICAgICAgLSAgLSAgLS0gIC0gIC0tICAtLS0gIC0t
LS0KLSAgICBBICAgICAgICAgICAgICAgICBYCi0gICAgUiAgICAgICAgICAgICAgICAgICAgWCAg
ICAgIFgKLSAgICBSRyAgICAgICAgICAgICAgICAgICBYICAgICAgWCAgWAotICAgIFJHQiAgICAg
ICAgICAgICAgICAgIFggICAgICBYICBYICAgWAotICAgIFJHQkEgICAgICAgICAgICAgIFggIFgg
IFggICBYICBYICAgWCAgICBYCi0KLSAgICAoQWRkIHRoZSBmb2xsb3dpbmcgdG8gVGFibGUgMy4x
MjogIkNvcnJlc3BvbmRlbmNlIG9mIGZpbHRlcmVkIHRleHR1cmUKLSAgICBjb21wb25lbnRzIHRv
IHRleHR1cmUgc291cmNlIGNvbG9yIGNvbXBvbmVudHMiKQotCi0gICAgVGV4dHVyZSBCYXNlICAg
ICAgICBUZXh0dXJlIHNvdXJjZSBjb2xvcgotICAgIEludGVybmFsIEZvcm1hdCAgICAgQ19zICAg
ICAgICAgICAgIEFfcwotICAgIC0tLS0tLS0tLS0tLS0tLSAgICAgLS0tLS0tLS0tLS0tLSAgIC0t
LS0tLQotICAgIFJFRF9FWFQgICAgICAgICAgICAgKFJfdCwgMCwgMCkgICAgIDEKLSAgICBSR19F
WFQgICAgICAgICAgICAgIChSX3QsIEdfdCwgMCkgICAxCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVy
IDQgb2YgdGhlIE9wZW5HTCBFUyAyLjAgU3BlY2lmaWNhdGlvbiAoUGVyLUZyYWdtZW50Ci1PcGVy
YXRpb25zIGFuZCB0aGUgRnJhbWVidWZmZXIpCi0KLSAgICBJbiBzZWN0aW9uIDQuMy4xICJSZWFk
aW5nIFBpeGVscyIsIHN1YnNlY3Rpb24gIk9idGFpbmluZyBQaXhlbHMgZnJvbSB0aGUKLSAgICBG
cmFtZWJ1ZmZlciIsIG1vZGlmeSB0aGUgbGFzdCBzZW50ZW5jZSB0byByZWFkOgotCi0gICAgIklm
IHRoZSBmcmFtZWJ1ZmZlciBkb2VzIG5vdCBzdXBwb3J0IEcsIEIsIG9yIEEgdmFsdWVzIHRoZW4g
dGhlIEcsIEIsIGFuZCBBCi0gICAgdmFsdWVzIHRoYXQgYXJlIG9idGFpbmVkIGFyZSAwLjAsIDAu
MCwgYW5kIDEuMCByZXNwZWN0aXZlbHkuIgotCi0gICAgSW4gc2VjdGlvbiA0LjQuNSAiRnJhbWVi
dWZmZXIgQ29tcGxldGVuZXNzIiwgbW9kaWZ5IHRoZSBsYXN0IHNlbnRlbmNlIG9mCi0gICAgdGhl
IHNlY29uZCBwYXJhZ3JhcGggdG8gcmVhZDoKLQotICAgICJDb2xvci1yZW5kZXJhYmxlIGZvcm1h
dHMgY29udGFpbiByZWQsIGFuZCBwb3NzaWJseSBncmVlbiwgYmx1ZSwgYW5kIGFscGhhCi0gICAg
Y29tcG9uZW50czsgZGVwdGgtcmVuZGVyYWJsZSBmb3JtYXRzIGNvbnRhaW4gZGVwdGggY29tcG9u
ZW50czsgYW5kCi0gICAgc3RlbmNpbC1yZW5kZXJhYmxlIGZvcm1hdHMgY29udGFpbiBzdGVuY2ls
IGNvbXBvbmVudHMuIgotCi0gICAgKEFkZCB0aGUgZm9sbG93aW5nIHRvIFRhYmxlIDQuNTogIlJl
bmRlcmJ1ZmZlciBpbWFnZSBmb3JtYXRzLCBzaG93aW5nIHRoZWlyCi0gICAgcmVuZGVyYWJsZSB0
eXBlIChjb2xvci0sIGRlcHRoLSwgb3Igc3RlbmNpbC1yZW5kZXJhYmxlKSBhbmQgdGhlIG51bWJl
ciBvZgotICAgIGJpdHMgZWFjaCBmb3JtYXQgY29udGFpbnMgZm9yIGNvbG9yIChSLCBHLCBCLCBB
KSwgZGVwdGggKEQpLCBhbmQgc3RlbmNpbAotICAgIChTKSBjb21wb25lbnRzIikKLQotICAgIFNp
emVkIEludGVybmFsICBSZW5kZXJhYmxlIFR5cGUgICBSIGJpdHMgRyBiaXRzIEIgYml0cyBBIGJp
dHMgRCBiaXRzIFMgYml0cwotICAgIEZvcm1hdAotICAgIC0tLS0tLS0tLS0tLS0tICAtLS0tLS0t
LS0tLS0tLS0tICAtLS0tLS0gLS0tLS0tIC0tLS0tLSAtLS0tLS0gLS0tLS0tIC0tLS0tLQotICAg
IFI4X0VYVCAgICAgICAgY29sb3ItcmVuZGVyYWJsZSAgOAotICAgIFJHOF9FWFQgICAgICAgY29s
b3ItcmVuZGVyYWJsZSAgOCAgICAgIDgKLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgNSBvZiB0aGUg
T3BlbkdMIEVTIDIuMCBTcGVjaWZpY2F0aW9uIChTcGVjaWFsIEZ1bmN0aW9ucykKLQotICAgIE5v
bmUKLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgNiBvZiB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZp
Y2F0aW9uIChTdGF0ZSBhbmQgU3RhdGUKLVJlcXVlc3RzKQotCi0gICAgTm9uZQotCi1EZXBlbmRl
bmNpZXMgb24gT0VTX3RleHR1cmVfZmxvYXQKLQotICAgIElmIE9FU190ZXh0dXJlX2Zsb2F0IGlz
IG5vdCBzdXBwb3J0ZWQsIHRoZW4gb21pdCB0aGUgcm93cyBvZgotICAgIFRhYmxlIDMuNCB0aGF0
IGhhdmUgVHlwZSBGTE9BVC4KLQotRGVwZW5kZW5jaWVzIG9uIE9FU190ZXh0dXJlX2hhbGZfZmxv
YXQKLQotICAgIElmIE9FU190ZXh0dXJlX2hhbGZfZmxvYXQgaXMgbm90IHN1cHBvcnRlZCwgdGhl
biBvbWl0IHRoZSByb3dzIG9mIAotICAgIFRhYmxlIDMuNCB0aGF0IGhhdmUgVHlwZSBIQUxGX0ZM
T0FUX09FUy4KLQotRGVwZW5kZW5jaWVzIG9uIEFQUExFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxl
Ci0KLSAgICBJZiBBUFBMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSBpcyBub3Qgc3VwcG9ydGVk
LCB0aGVuIGFsbCByZWZlcmVuY2VzIHRvCi0gICAgUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlQVBQTEUgc2hvdWxkIGJlIGlnbm9yZWQuCi0KLVJldmlzaW9uIEhpc3RvcnkKLSAgICAKLSAg
ICAjMSBGZWJydWFyeSAyMiwgMjAxMSwga2hhdWdoZXkKLSAgICAgICAgLSBpbml0aWFsIHZlcnNp
b24gYWRhcHRlZCBmcm9tIEFSQl90ZXh0dXJlX3JnLgotICAgICMyIEp1bmUgMTYsIDIwMTEsIGJl
bmoKLSAgICAgICAgLSBhZGQgaW50ZXJhY3Rpb24gd2l0aCBBUFBMRV9mcmFtZWJ1ZmZlcl9tdWx0
aXNhbXBsZQotICAgICMzIEp1bHkgMjIsIDIwMTEsIGJlbmoKLSAgICAgICAgLSByZW5hbWUgZnJv
bSBBUFBMRSB0byBFWFQKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMv
RVhUX3RleHR1cmVfc3RvcmFnZS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvZXh0ZW5zaW9ucy9FWFRfdGV4dHVyZV9zdG9yYWdlLnR4dAkocmV2aXNpb24gMjA3ODA0
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FWFRfdGV4dHVyZV9zdG9y
YWdlLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDEwOTAgKzAsMCBAQAotTmFtZQotCi0gICAgRVhU
X3RleHR1cmVfc3RvcmFnZQotCi1OYW1lIFN0cmluZ3MKLQotICAgIEdMX0VYVF90ZXh0dXJlX3N0
b3JhZ2UKLQotQ29udGFjdAotCi0gICAgQnJ1Y2UgTWVycnkgKGJtZXJyeSAnYXQnIGdtYWlsLmNv
bSkKLSAgICBJYW4gUm9tYW5pY2ssIEludGVsIChpYW4uZC5yb21hbmljayAnYXQnIGludGVsLmNv
bSkKLQotQ29udHJpYnV0b3JzCi0KLSAgICBKZXJlbXkgU2FuZG1lbCwgQXBwbGUKLSAgICBCcnVj
ZSBNZXJyeSwgQVJNCi0gICAgVG9tIE9sc29uLCBBUk0KLSAgICBCZW5qaSBCb3dtYW4sIEltYWdp
bmF0aW9uIFRlY2hub2xvZ2llcwotICAgIElhbiBSb21hbmljaywgSW50ZWwKLSAgICBKZWZmIEJv
bHosIE5WSURJQQotICAgIFBhdCBCcm93biwgTlZJRElBCi0gICAgTWF1cmljZSBSaWJibGUsIFF1
YWxjb21tCi0gICAgTGluZ2p1biBDaGVuLCBRdWFsY29tbQotICAgIERhbmllbCBLb2NoLCBUcmFu
c2dhbWluZyBJbmMKLQotU3RhdHVzCi0KLSAgICBDb21wbGV0ZS4gCi0KLVZlcnNpb24KLQotICAg
IExhc3QgTW9kaWZpZWQgRGF0ZTogTm92ZW1iZXIgMTEsIDIwMTEKLSAgICBBdXRob3IgUmV2aXNp
b246IDI0Ci0KLU51bWJlcgotCi0gICAgT3BlbkdMIEVTIEV4dGVuc2lvbiAjMTA4Ci0KLURlcGVu
ZGVuY2llcwotCi0gICAgT3BlbkdMIEVTIDEuMCwgT3BlbkdMIEVTIDIuMCBvciBPcGVuR0wgMS4y
IGlzIHJlcXVpcmVkLgotCi0gICAgT0VTX3RleHR1cmVfbnBvdCwgT0VTX3RleHR1cmVfY3ViZV9t
YXAsIE9FU190ZXh0dXJlXzNELAotICAgIE9FU19kZXB0aF90ZXh0dXJlLCBPRVNfcGFja2VkX2Rl
cHRoX3N0ZW5jaWwsCi0gICAgT0VTX2NvbXByZXNzZWRfcGFsZXR0ZWRfdGV4dHVyZSwgT0VTX3Rl
eHR1cmVfZmxvYXQsIE9FU190ZXh0dXJlX2hhbGZfZmxvYXQKLSAgICBFWFRfdGV4dHVyZV90eXBl
XzJfMTBfMTBfMTBfUkVWLCBFWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgsCi0gICAgRVhUX3Rl
eHR1cmUzRCwgT0VTX3RleHR1cmVfbnBvdCwgQVBQTEVfdGV4dHVyZV8yRF9saW1pdGVkX25wb3Qs
Ci0gICAgQVJCX3RleHR1cmVfY3ViZV9tYXAsIEFSQl90ZXh0dXJlX2N1YmVfbWFwX2FycmF5LAot
ICAgIEFSQl90ZXh0dXJlX3JlY3RhbmdsZSwgU0dJU19nZW5lcmF0ZV9taXBtYXAsCi0gICAgRVhU
X2RpcmVjdF9zdGF0ZV9hY2Nlc3MsIE9FU19FR0xfaW1hZ2UsIFdHTF9BUkJfcmVuZGVyX3RleHR1
cmUsCi0gICAgR0xYX0VYVF90ZXh0dXJlX2Zyb21fcGl4bWFwLCBhbmQgY29yZSBzcGVjaWZpY2F0
aW9ucyB0aGF0Ci0gICAgaW5jb3Jwb3JhdGUgdGhlc2UgZXh0ZW5zaW9ucyBhZmZlY3QgdGhlIGRl
ZmluaXRpb24gb2YgdGhpcwotICAgIGV4dGVuc2lvbi4KLQotICAgIFRoaXMgZXh0ZW5zaW9uIGlz
IHdyaXR0ZW4gYWdhaW5zdCB0aGUgT3BlbkdMIDMuMiBDb3JlIFByb2ZpbGUKLSAgICBzcGVjaWZp
Y2F0aW9uLgotCi1PdmVydmlldwotCi0gICAgVGhlIHRleHR1cmUgaW1hZ2Ugc3BlY2lmaWNhdGlv
biBjb21tYW5kcyBpbiBPcGVuR0wgYWxsb3cgZWFjaCBsZXZlbAotICAgIHRvIGJlIHNlcGFyYXRl
bHkgc3BlY2lmaWVkIHdpdGggZGlmZmVyZW50IHNpemVzLCBmb3JtYXRzLCB0eXBlcyBhbmQKLSAg
ICBzbyBvbiwgYW5kIG9ubHkgaW1wb3NlcyBjb25zaXN0ZW5jeSBjaGVja3MgYXQgZHJhdyB0aW1l
LiBUaGlzIGFkZHMKLSAgICBvdmVyaGVhZCBmb3IgaW1wbGVtZW50YXRpb25zLgotCi0gICAgVGhp
cyBleHRlbnNpb24gcHJvdmlkZXMgYSBtZWNoYW5pc20gZm9yIHNwZWNpZnlpbmcgdGhlIGVudGly
ZQotICAgIHN0cnVjdHVyZSBvZiBhIHRleHR1cmUgaW4gYSBzaW5nbGUgY2FsbCwgYWxsb3dpbmcg
Y2VydGFpbgotICAgIGNvbnNpc3RlbmN5IGNoZWNrcyBhbmQgbWVtb3J5IGFsbG9jYXRpb25zIHRv
IGJlIGRvbmUgdXAgZnJvbnQuIE9uY2UKLSAgICBzcGVjaWZpZWQsIHRoZSBmb3JtYXQgYW5kIGRp
bWVuc2lvbnMgb2YgdGhlIGltYWdlIGFycmF5IGJlY29tZQotICAgIGltbXV0YWJsZSwgdG8gc2lt
cGxpZnkgY29tcGxldGVuZXNzIGNoZWNrcyBpbiB0aGUgaW1wbGVtZW50YXRpb24uCi0KLSAgICBX
aGVuIHVzaW5nIHRoaXMgZXh0ZW5zaW9uLCBpdCBpcyBubyBsb25nZXIgcG9zc2libGUgdG8gc3Vw
cGx5IHRleHR1cmUKLSAgICBkYXRhIHVzaW5nIFRleEltYWdlKi4gSW5zdGVhZCwgZGF0YSBjYW4g
YmUgdXBsb2FkZWQgdXNpbmcgVGV4U3ViSW1hZ2UqLAotICAgIG9yIHByb2R1Y2VkIGJ5IG90aGVy
IG1lYW5zIChzdWNoIGFzIHJlbmRlci10by10ZXh0dXJlLCBtaXBtYXAgZ2VuZXJhdGlvbiwKLSAg
ICBvciByZW5kZXJpbmcgdG8gYSBzaWJsaW5nIEVHTEltYWdlKS4KLQotICAgIFRoaXMgZXh0ZW5z
aW9uIGhhcyBjb21wbGljYXRlZCBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBleHRlbnNpb25zLgot
ICAgIFRoZSBnb2FsIG9mIG1vc3Qgb2YgdGhlc2UgaW50ZXJhY3Rpb25zIGlzIHRvIGVuc3VyZSB0
aGF0IGEgdGV4dHVyZQotICAgIGlzIGFsd2F5cyBtaXBtYXAgY29tcGxldGUgKGFuZCBjdWJlIGNv
bXBsZXRlIGZvciBjdWJlbWFwIHRleHR1cmVzKS4KLQotSVAgU3RhdHVzCi0KLSAgICBObyBrbm93
biBJUCBjbGFpbXMKLQotTmV3IFByb2NlZHVyZXMgYW5kIEZ1bmN0aW9ucwotCi0gICAgdm9pZCBU
ZXhTdG9yYWdlMURFWFQoZW51bSB0YXJnZXQsIHNpemVpIGxldmVscywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICBlbnVtIGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVpIHdpZHRoKTsKLQotICAgIHZvaWQgVGV4U3RvcmFnZTJERVhUKGVudW0gdGFyZ2V0LCBz
aXplaSBsZXZlbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBpbnRlcm5hbGZvcm1h
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzaXplaSB3aWR0aCwgc2l6ZWkgaGVpZ2h0KTsK
LQotICAgIHZvaWQgVGV4U3RvcmFnZTNERVhUKGVudW0gdGFyZ2V0LCBzaXplaSBsZXZlbHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplaSB3aWR0aCwgc2l6ZWkgaGVpZ2h0LCBzaXplaSBkZXB0aCk7Ci0K
LSAgICB2b2lkIFRleHR1cmVTdG9yYWdlMURFWFQodWludCB0ZXh0dXJlLCBlbnVtIHRhcmdldCwg
c2l6ZWkgbGV2ZWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gaW50ZXJuYWxmb3Jt
YXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZWkgd2lkdGgpOwotCi0gICAgdm9pZCBU
ZXh0dXJlU3RvcmFnZTJERVhUKHVpbnQgdGV4dHVyZSwgZW51bSB0YXJnZXQsIHNpemVpIGxldmVs
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGludGVybmFsZm9ybWF0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVpIHdpZHRoLCBzaXplaSBoZWlnaHQpOwotCi0gICAgdm9p
ZCBUZXh0dXJlU3RvcmFnZTNERVhUKHVpbnQgdGV4dHVyZSwgZW51bSB0YXJnZXQsIHNpemVpIGxl
dmVscywKLSAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGludGVybmFsZm9ybWF0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVpIHdpZHRoLCBzaXplaSBoZWlnaHQsIHNpemVpIGRl
cHRoKTsKLQotTmV3IFR5cGVzCi0KLSAgICBOb25lCi0KLU5ldyBUb2tlbnMKLQotICAgIEFjY2Vw
dGVkIGJ5IHRoZSA8dmFsdWU+IHBhcmFtZXRlciBvZiBHZXRUZXhQYXJhbWV0ZXJ7aWZ9djoKLQot
ICAgICAgICBURVhUVVJFX0lNTVVUQUJMRV9GT1JNQVRfRVhUICAgMHg5MTJGCi0KLSAgICBBY2Nl
cHRlZCBieSB0aGUgPGludGVybmFsZm9ybWF0PiBwYXJhbWV0ZXIgb2YgVGV4U3RvcmFnZSogd2hl
bgotICAgIGltcGxlbWVudGVkIG9uIE9wZW5HTCBFUzoKLQotICAgICAgICBBTFBIQThfRVhUICAg
ICAgICAgICAgICAgICAgICAgMHg4MDNDICAvKiByZXVzZSB0b2tlbnMgZnJvbSBFWFRfdGV4dHVy
ZSAqLwotICAgICAgICBMVU1JTkFOQ0U4X0VYVCAgICAgICAgICAgICAgICAgMHg4MDQwCi0gICAg
ICAgIExVTUlOQU5DRThfQUxQSEE4X0VYVCAgICAgICAgICAweDgwNDUKLQotICAgICAgKGlmIE9F
U190ZXh0dXJlX2Zsb2F0IGlzIHN1cHBvcnRlZCkKLSAgICAgICAgUkdCQTMyRl9FWFQgICAgICAg
ICAgICAgICAgICAgIDB4ODgxNCAgLyogcmV1c2UgdG9rZW5zIGZyb20gQVJCX3RleHR1cmVfZmxv
YXQgKi8KLSAgICAgICAgUkdCMzJGX0VYVCAgICAgICAgICAgICAgICAgICAgIDB4ODgxNQotICAg
ICAgICBBTFBIQTMyRl9FWFQgICAgICAgICAgICAgICAgICAgMHg4ODE2Ci0gICAgICAgIExVTUlO
QU5DRTMyRl9FWFQgICAgICAgICAgICAgICAweDg4MTgKLSAgICAgICAgTFVNSU5BTkNFX0FMUEhB
MzJGX0VYVCAgICAgICAgIDB4ODgxOQotCi0gICAgICAoaWYgT0VTX3RleHR1cmVfaGFsZl9mbG9h
dCBpcyBzdXBwb3J0ZWQpCi0gICAgICAgIFJHQkExNkZfRVhUICAgICAgICAgICAgICAgICAgICAw
eDg4MUEgIC8qIHJldXNlIHRva2VucyBmcm9tIEFSQl90ZXh0dXJlX2Zsb2F0ICovCi0gICAgICAg
IFJHQjE2Rl9FWFQgICAgICAgICAgICAgICAgICAgICAweDg4MUIKLSAgICAgICAgQUxQSEExNkZf
RVhUICAgICAgICAgICAgICAgICAgIDB4ODgxQwotICAgICAgICBMVU1JTkFOQ0UxNkZfRVhUICAg
ICAgICAgICAgICAgMHg4ODFFCi0gICAgICAgIExVTUlOQU5DRV9BTFBIQTE2Rl9FWFQgICAgICAg
ICAweDg4MUYKLQotICAgICAgKGlmIEVYVF90ZXh0dXJlX3R5cGVfMl8xMF8xMF8xMF9SRVYgaXMg
c3VwcG9ydGVkKQotICAgICAgICBSR0IxMF9BMl9FWFQgICAgICAgICAgICAgICAgICAgMHg4MDU5
ICAvKiByZXVzZSB0b2tlbnMgZnJvbSBFWFRfdGV4dHVyZSAqLwotICAgICAgICBSR0IxMF9FWFQg
ICAgICAgICAgICAgICAgICAgICAgMHg4MDUyCi0KLSAgICAgIChpZiBFWFRfdGV4dHVyZV9mb3Jt
YXRfQkdSQTg4ODggaXMgc3VwcG9ydGVkKQotICAgICAgICBCR1JBOF9FWFQgICAgICAgICAgICAg
ICAgICAgICAgMHg5M0ExCi0KLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgMiBvZiB0aGUgT3BlbkdM
IDMuMiBDb3JlIFByb2ZpbGUgU3BlY2lmaWNhdGlvbgotKE9wZW5HTCBPcGVyYXRpb24pCi0KLSAg
ICBOb25lCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDMgb2YgdGhlIE9wZW5HTCAzLjIgQ29yZSBQ
cm9maWxlIFNwZWNpZmljYXRpb24KLShSYXN0ZXJpemF0aW9uKQotCi0gICAgQWZ0ZXIgc2VjdGlv
biAzLjguMSAoVGV4dHVyZSBJbWFnZSBTcGVjaWZpY2F0aW9uKSBhZGQgYSBuZXcKLSAgICBzdWJz
ZWN0aW9uIGNhbGxlZCAiSW1tdXRhYmxlLWZvcm1hdCB0ZXh0dXJlIGltYWdlcyI6Ci0KLSAgICAi
QW4gYWx0ZXJhdGl2ZSBzZXQgb2YgY29tbWFuZHMgaXMgcHJvdmlkZWQgZm9yIHNwZWNpZnlpbmcg
dGhlCi0gICAgcHJvcGVydGllcyBvZiBhbGwgbGV2ZWxzIG9mIGEgdGV4dHVyZSBhdCBvbmNlLiBP
bmNlIGEgdGV4dHVyZSBpcwotICAgIHNwZWNpZmllZCB3aXRoIHN1Y2ggYSBjb21tYW5kLCB0aGUg
Zm9ybWF0IGFuZCBkaW1lbnNpb25zIG9mIGFsbAotICAgIGxldmVscyBiZWNvbWVzIGltbXV0YWJs
ZSwgdW5sZXNzIGl0IGlzIGEgcHJveHkgdGV4dHVyZSAoc2luY2UKLSAgICBvdGhlcndpc2UgaXQg
d291bGQgbm8gbG9uZ2VyIGJlIHBvc3NpYmxlIHRvIHVzZSB0aGUgcHJveHkpLiBUaGUKLSAgICBj
b250ZW50cyBvZiB0aGUgaW1hZ2VzIGFuZCB0aGUgcGFyYW1ldGVycyBjYW4gc3RpbGwgYmUgbW9k
aWZpZWQuCi0gICAgU3VjaCBhIHRleHR1cmUgaXMgcmVmZXJyZWQgdG8gYXMgYW4gImltbXV0YWJs
ZS1mb3JtYXQiIHRleHR1cmUuIFRoZQotICAgIGltbXV0YWJpbGl0eSBzdGF0dXMgb2YgYSB0ZXh0
dXJlIGNhbiBiZSBkZXRlcm1pbmVkIGJ5IGNhbGxpbmcKLSAgICBHZXRUZXhQYXJhbWV0ZXIgd2l0
aCA8cG5hbWU+IFRFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVF9FWFQuCi0KLSAgICBFYWNoIG9mIHRo
ZSBjb21tYW5kcyBiZWxvdyBpcyBkZXNjcmliZWQgYnkgcHNldWRvLWNvZGUgd2hpY2gKLSAgICBp
bmRpY2F0ZXMgdGhlIGVmZmVjdCBvbiB0aGUgZGltZW5zaW9ucyBhbmQgZm9ybWF0IG9mIHRoZSB0
ZXh0dXJlLgotICAgIEZvciBhbGwgb2YgdGhlIGNvbW1hbmRzLCB0aGUgZm9sbG93aW5nIGFwcGx5
IGluIGFkZGl0aW9uIHRvIHRoZQotICAgIHBzZXVkby1jb2RlOgotCi0gICAgLSBJZiB0aGUgZGVm
YXVsdCB0ZXh0dXJlIG9iamVjdCBpcyBib3VuZCB0byA8dGFyZ2V0PiwgYW4KLSAgICAgIElOVkFM
SURfT1BFUkFUSU9OIGVycm9yIGlzIGdlbmVyYXRlZC4KLSAgICAtIElmIGV4ZWN1dGluZyB0aGUg
cHNldWRvLWNvZGUgd291bGQgbGVhZCB0byBhbiBlcnJvciwgdGhlIGVycm9yIGlzCi0gICAgICBn
ZW5lcmF0ZWQgYW5kIHRoZSBjb21tYW5kIHdpbGwgaGF2ZSBubyBlZmZlY3QuCi0gICAgLSBBbnkg
ZXhpc3RpbmcgbGV2ZWxzIHRoYXQgYXJlIG5vdCByZXBsYWNlZCBhcmUgcmVzZXQgdG8gdGhlaXIK
LSAgICAgIGluaXRpYWwgc3RhdGUuCi0gICAgLSBJZiA8d2lkdGg+LCA8aGVpZ2h0PiwgPGRlcHRo
PiBvciA8bGV2ZWxzPiBpcyBsZXNzIHRoYW4gMSwgdGhlCi0gICAgICBlcnJvciBJTlZBTElEX1ZB
TFVFIGlzIGdlbmVyYXRlZC4KLSAgICAtIFNpbmNlIG5vIHBpeGVsIGRhdGEgYXJlIHByb3ZpZGVk
LCB0aGUgPGZvcm1hdD4gYW5kIDx0eXBlPiB2YWx1ZXMKLSAgICAgIHVzZWQgaW4gdGhlIHBzZXVk
by1jb2RlIGFyZSBpcnJlbGV2YW50OyB0aGV5IGNhbiBiZSBjb25zaWRlcmVkIHRvCi0gICAgICBi
ZSBhbnkgdmFsdWVzIHRoYXQgYXJlIGxlZ2FsIHRvIHVzZSB3aXRoIDxpbnRlcm5hbGZvcm1hdD4u
Ci0gICAgLSBJZiB0aGUgY29tbWFuZCBpcyBzdWNjZXNzZnVsLCBURVhUVVJFX0lNTVVUQUJMRV9G
T1JNQVRfRVhUIGJlY29tZXMKLSAgICAgIFRSVUUuCi0gICAgLSBJZiA8aW50ZXJuYWxmb3JtYXQ+
IGlzIGEgc3BlY2lmaWMgY29tcHJlc3NlZCB0ZXh0dXJlIGZvcm1hdCwgdGhlbgotICAgICAgcmVm
ZXJlbmNlcyB0byBUZXhJbWFnZSogc2hvdWxkIGJlIHJlcGxhY2VkIGJ5IENvbXByZXNzZWRUZXhJ
bWFnZSosCi0gICAgICB3aXRoIDxmb3JtYXQ+LCA8dHlwZT4gYW5kIDxkYXRhPiByZXBsYWNlZCBi
eSBhbnkgdmFsaWQgPGltYWdlU2l6ZT4gYW5kCi0gICAgICA8ZGF0YT4uIElmIHRoZXJlIGlzIG5v
IDxpbWFnZVNpemU+IGZvciB3aGljaCB0aGlzIGNvbW1hbmQgd291bGQgaGF2ZQotICAgICAgYmVl
biB2YWxpZCwgYW4gSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IgaXMgZ2VuZXJhdGVkIFtmbjogVGhp
cwotICAgICAgY29uZGl0aW9uIGlzIG5vdCByZXF1aXJlZCBmb3IgT3BlbkdMLCBidXQgaXMgbmVj
ZXNzYXJ5IGZvciBPcGVuR0wKLSAgICAgIEVTIHdoaWNoIGRvZXMgbm90IHN1cHBvcnQgb24tdGhl
LWZseSBjb21wcmVzc2lvbi5dCi0gICAgLSBJZiA8aW50ZXJuYWxmb3JtYXQ+IGlzIG9uZSBvZiB0
aGUgaW50ZXJuYWwgZm9ybWF0cyBsaXN0ZWQgaW4gdGFibGUKLSAgICAgIDMuMTEsIGFuIElOVkFM
SURfRU5VTSBlcnJvciBpcyBnZW5lcmF0ZWQuIFtmbjogVGhlIGNvcnJlc3BvbmRpbmcgdGFibGUK
LSAgICAgIGluIE9wZW5HTCBFUyAyLjAgaXMgdGFibGUgMy44Ll0KLQotICAgIFRoZSBjb21tYW5k
Ci0KLSAgICAgICAgdm9pZCBUZXhTdG9yYWdlMURFWFQoZW51bSB0YXJnZXQsIHNpemVpIGxldmVs
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBpbnRlcm5hbGZvcm1hdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZWkgd2lkdGgpOwotCi0gICAgc3BlY2lmaWVz
IGFsbCB0aGUgbGV2ZWxzIG9mIGEgb25lLWRpbWVuc2lvbmFsIHRleHR1cmUgKG9yIHByb3h5KSBh
dAotICAgIHRoZSBzYW1lIHRpbWUuIEl0IGlzIGRlc2NyaWJlZCBieSB0aGUgcHNldWRvLWNvZGUg
YmVsb3c6Ci0KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGxldmVsczsgaSsrKQotICAgICAgICB7
Ci0gICAgICAgICAgICBUZXhJbWFnZTFEKHRhcmdldCwgaSwgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCAwLAotICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIHR5cGUsIE5VTEwpOwotICAgICAg
ICAgICAgd2lkdGggPSBtYXgoMSwgZmxvb3Iod2lkdGggLyAyKSk7Ci0gICAgICAgIH0KLQotICAg
IElmIDx0YXJnZXQ+IGlzIG5vdCBURVhUVVJFXzFEIG9yIFBST1hZX1RFWFRVUkVfMUQgdGhlbiBJ
TlZBTElEX0VOVU0KLSAgICBpcyBnZW5lcmF0ZWQuIElmIDxsZXZlbHM+IGlzIGdyZWF0ZXIgdGhh
biBmbG9vcihsb2dfMih3aWR0aCkpICsgMQotICAgIHRoZW4gSU5WQUxJRF9PUEVSQVRJT04gaXMg
Z2VuZXJhdGVkLgotCi0gICAgVGhlIGNvbW1hbmQKLQotICAgICAgICB2b2lkIFRleFN0b3JhZ2Uy
REVYVChlbnVtIHRhcmdldCwgc2l6ZWkgbGV2ZWxzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbnVtIGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplaSB3aWR0aCwgc2l6ZWkgaGVpZ2h0KTsKLQotICAgIHNwZWNpZmllcyBhbGwgdGhlIGxldmVs
cyBvZiBhIHR3by1kaW1lbnNpb25hbCwgY3ViZS1tYXAsCi0gICAgb25lLWRpbWVuc2lvbiBhcnJh
eSBvciByZWN0YW5nbGUgdGV4dHVyZSAob3IgcHJveHkpIGF0IHRoZSBzYW1lCi0gICAgdGltZS4g
VGhlIHBzZXVkby1jb2RlIGRlcGVuZHMgb24gdGhlIDx0YXJnZXQ+OgotCi0gICAgW1BST1hZX11U
RVhUVVJFXzJELCBbUFJPWFlfXVRFWFRVUkVfUkVDVEFOR0xFIG9yCi0gICAgUFJPWFlfVEVYVFVS
RV9DVUJFX01BUDoKLQotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGV2ZWxzOyBpKyspCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIFRleEltYWdlMkQodGFyZ2V0LCBpLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBO
VUxMKTsKLSAgICAgICAgICAgIHdpZHRoID0gbWF4KDEsIGZsb29yKHdpZHRoIC8gMikpOwotICAg
ICAgICAgICAgaGVpZ2h0ID0gbWF4KDEsIGZsb29yKGhlaWdodCAvIDIpKTsKLSAgICAgICAgfQot
Ci0gICAgVEVYVFVSRV9DVUJFX01BUDoKLQotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGV2ZWxz
OyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciBmYWNlIGluICgrWCwgLVgsICtZLCAt
WSwgK1osIC1aKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFRleEltYWdlMkQoZmFj
ZSwgaSwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICBmb3JtYXQsIHR5cGUsIE5VTEwpOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgd2lkdGggPSBtYXgoMSwgZmxvb3Iod2lkdGggLyAyKSk7Ci0gICAgICAgICAgICBoZWlnaHQg
PSBtYXgoMSwgZmxvb3IoaGVpZ2h0IC8gMikpOwotICAgICAgICB9Ci0KLSAgICBbUFJPWFlfXVRF
WFRVUkVfMURfQVJSQVk6Ci0KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGxldmVsczsgaSsrKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBUZXhJbWFnZTJEKHRhcmdldCwgaSwgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlw
ZSwgTlVMTCk7Ci0gICAgICAgICAgICB3aWR0aCA9IG1heCgxLCBmbG9vcih3aWR0aCAvIDIpKTsK
LSAgICAgICAgfQotCi0gICAgSWYgPHRhcmdldD4gaXMgbm90IG9uZSBvZiB0aG9zZSBsaXN0ZWQg
YWJvdmUsIHRoZSBlcnJvciBJTlZBTElEX0VOVU0KLSAgICBpcyBnZW5lcmF0ZWQuCi0KLSAgICBU
aGUgZXJyb3IgSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIGFueSBvZiB0aGUgZm9s
bG93aW5nCi0gICAgY29uZGl0aW9ucyBob2xkOgotICAgIC0gPHRhcmdldD4gaXMgW1BST1hZX11U
RVhUVVJFXzFEX0FSUkFZIGFuZCA8bGV2ZWxzPiBpcyBncmVhdGVyIHRoYW4KLSAgICAgIGZsb29y
KGxvZ18yKHdpZHRoKSkgKyAxCi0gICAgLSA8dGFyZ2V0PiBpcyBub3QgW1BST1hZX11URVhUVVJF
XzFEX0FSUkFZIGFuZCA8bGV2ZWxzPiBpcyBncmVhdGVyCi0gICAgdGhhbiBmbG9vcihsb2dfMiht
YXgod2lkdGgsIGhlaWdodCkpKSArIDEKLQotICAgIFRoZSBjb21tYW5kCi0KLSAgICAgICAgdm9p
ZCBUZXhTdG9yYWdlM0RFWFQoZW51bSB0YXJnZXQsIHNpemVpIGxldmVscywgZW51bSBpbnRlcm5h
bGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZWkgd2lkdGgsIHNpemVp
IGhlaWdodCwgc2l6ZWkgZGVwdGgpOwotCi0gICAgc3BlY2lmaWVzIGFsbCB0aGUgbGV2ZWxzIG9m
IGEgdGhyZWUtZGltZW5zaW9uYWwsIHR3by1kaW1lbnNpb25hbAotICAgIGFycmF5IHRleHR1cmUs
IG9yIGN1YmUtbWFwIGFycmF5IHRleHR1cmUgKG9yIHByb3h5KS4gVGhlIHBzZXVkby1jb2RlCi0g
ICAgZGVwZW5kcyBvbiA8dGFyZ2V0PjoKLQotICAgIFtQUk9YWV9dVEVYVFVSRV8zRDoKLQotICAg
ICAgICBmb3IgKGkgPSAwOyBpIDwgbGV2ZWxzOyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAg
IFRleEltYWdlM0QodGFyZ2V0LCBpLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVw
dGgsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlwZSwgTlVMTCk7Ci0gICAg
ICAgICAgICB3aWR0aCA9IG1heCgxLCBmbG9vcih3aWR0aCAvIDIpKTsKLSAgICAgICAgICAgIGhl
aWdodCA9IG1heCgxLCBmbG9vcihoZWlnaHQgLyAyKSk7Ci0gICAgICAgICAgICBkZXB0aCA9IG1h
eCgxLCBmbG9vcihkZXB0aCAvIDIpKTsKLSAgICAgICAgfQotCi0gICAgW1BST1hZX11URVhUVVJF
XzJEX0FSUkFZLCBbUFJPWFlfXVRFWFRVUkVfQ1VCRV9NQVBfQVJSQVlfQVJCOgotCi0gICAgICAg
IGZvciAoaSA9IDA7IGkgPCBsZXZlbHM7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgVGV4
SW1hZ2UzRCh0YXJnZXQsIGksIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwg
MCwKLSAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBOVUxMKTsKLSAgICAgICAg
ICAgIHdpZHRoID0gbWF4KDEsIGZsb29yKHdpZHRoIC8gMikpOwotICAgICAgICAgICAgaGVpZ2h0
ID0gbWF4KDEsIGZsb29yKGhlaWdodCAvIDIpKTsKLSAgICAgICAgfQotCi0gICAgSWYgPHRhcmdl
dD4gaXMgbm90IG9uZSBvZiB0aG9zZSBsaXN0ZWQgYWJvdmUsIHRoZSBlcnJvciBJTlZBTElEX0VO
VU0KLSAgICBpcyBnZW5lcmF0ZWQuCi0KLSAgICBUaGUgZXJyb3IgSU5WQUxJRF9PUEVSQVRJT04g
aXMgZ2VuZXJhdGVkIGlmIGFueSBvZiB0aGUgZm9sbG93aW5nCi0gICAgY29uZGl0aW9ucyBob2xk
OgotICAgIC0gPHRhcmdldD4gaXMgW1BST1hZX11URVhUVVJFXzNEIGFuZCA8bGV2ZWxzPiBpcyBn
cmVhdGVyIHRoYW4KLSAgICAgIGZsb29yKGxvZ18yKG1heCh3aWR0aCwgaGVpZ2h0LCBkZXB0aCkp
KSArIDEKLSAgICAtIDx0YXJnZXQ+IGlzIFtQUk9YWV9dVEVYVFVSRV8yRF9BUlJBWSBvcgotICAg
ICAgW1BST1hZX11URVhUVVJFX0NVQkVfTUFQX0FSUkFZX0VYVCBhbmQgPGxldmVscz4gaXMgZ3Jl
YXRlciB0aGFuCi0gICAgICBmbG9vcihsb2dfMihtYXgod2lkdGgsIGhlaWdodCkpKSArIDEKLQot
ICAgIEFmdGVyIGEgc3VjY2Vzc2Z1bCBjYWxsIHRvIGFueSBUZXhTdG9yYWdlKiBjb21tYW5kIHdp
dGggYSBub24tcHJveHkKLSAgICB0YXJnZXQsIHRoZSB2YWx1ZSBvZiBURVhUVVJFX0lNTVVUQUJM
RV9GT1JNQVRfRVhUIGZvciB0aGlzIHRleHR1cmUKLSAgICBvYmplY3QgaXMgc2V0IHRvIFRSVUUs
IGFuZCBubyBmdXJ0aGVyIGNoYW5nZXMgdG8gdGhlIGRpbWVuc2lvbnMgb3IKLSAgICBmb3JtYXQg
b2YgdGhlIHRleHR1cmUgb2JqZWN0IG1heSBiZSBtYWRlLiBPdGhlciBjb21tYW5kcyBtYXkgb25s
eQotICAgIGFsdGVyIHRoZSB0ZXhlbCB2YWx1ZXMgYW5kIHRleHR1cmUgcGFyYW1ldGVycy4gVXNp
bmcgYW55IG9mIHRoZQotICAgIGZvbGxvd2luZyBjb21tYW5kcyB3aXRoIHRoZSBzYW1lIHRleHR1
cmUgd2lsbCByZXN1bHQgaW4gdGhlIGVycm9yCi0gICAgSU5WQUxJRF9PUEVSQVRJT04gYmVpbmcg
Z2VuZXJhdGVkLCBldmVuIGlmIGl0IGRvZXMgbm90IGFmZmVjdCB0aGUKLSAgICBkaW1lbnNpb25z
IG9yIGZvcm1hdDoKLQotICAgICAgICAtIFRleEltYWdlKgotICAgICAgICAtIENvbXByZXNzZWRU
ZXhJbWFnZSoKLSAgICAgICAgLSBDb3B5VGV4SW1hZ2UqCi0gICAgICAgIC0gVGV4U3RvcmFnZSoK
LQotICAgIFRoZSBUZXh0dXJlU3RvcmFnZSogY29tbWFuZHMgb3BlcmF0ZSBpZGVudGljYWxseSB0
byB0aGUKLSAgICBjb3JyZXNwb25kaW5nIGNvbW1hbmQgd2hlcmUgIlRleHR1cmUiIGlzIHN1YnN0
aXR1dGVkIGZvciAiVGV4IgotICAgIGV4Y2VwdCwgcmF0aGVyIHRoYW4gdXBkYXRpbmcgdGhlIGN1
cnJlbnQgYm91bmQgdGV4dHVyZSBmb3IgdGhlCi0gICAgdGV4dHVyZSB1bml0IGluZGljYXRlZCBi
eSB0aGUgY3VycmVudCBhY3RpdmUgdGV4dHVyZSBzdGF0ZSBhbmQgdGhlCi0gICAgdGFyZ2V0IHBh
cmFtZXRlciwgdGhlc2UgIlRleHR1cmUiIGNvbW1hbmRzIHVwZGF0ZSB0aGUgdGV4dHVyZSBvYmpl
Y3QKLSAgICBuYW1lZCBieSB0aGUgaW5pdGlhbCB0ZXh0dXJlIHBhcmFtZXRlci4gVGhlIGVycm9y
IElOVkFMSURfVkFMVUUKLSAgICBpcyBnZW5lcmF0ZWQgaWYgPHRleHR1cmU+IGlzIHplcm8uCi0g
ICAgIgotCi0gICAgSW4gc2VjdGlvbiAzLjguNiAoVGV4dHVyZSBQYXJhbWV0ZXJzKSwgYWZ0ZXIg
dGhlIHNlbnRlbmNlCi0KLSAgICAiSW4gdGhlIHJlbWFpbmRlciBvZiBzZWN0aW9uIDMuOCwgZGVu
b3RlIGJ5IGxvZF9taW4sIGxvZF9tYXgsCi0gICAgbGV2ZWxfYmFzZSwgYW5kIGxldmVsX21heCB0
aGUgdmFsdWVzIG9mIHRoZSB0ZXh0dXJlIHBhcmFtZXRlcnMKLSAgICBURVhUVVJFX01JTl9MT0Qs
IFRFWFRVUkVfTUFYX0xPRCwgVEVYVFVSRV9CQVNFX0xFVkVMLCBhbmQKLSAgICBURVhUVVJFX01B
WF9MRVZFTCByZXNwZWN0aXZlbHkuIgotCi0gICAgYWRkCi0KLSAgICAiSG93ZXZlciwgaWYgVEVY
VFVSRV9JTU1VVEFCTEVfRk9STUFUX0VYVCBpcwotICAgIFRSVUUsIHRoZW4gbGV2ZWxfYmFzZSBp
cyBjbGFtcGVkIHRvIHRoZSByYW5nZSBbMCwgPGxldmVscz4gLSAxXSBhbmQKLSAgICBsZXZlbF9t
YXggaXMgdGhlbiBjbGFtcGVkIHRvIHRoZSByYW5nZSBbbGV2ZWxfYmFzZSwgPGxldmVscz4gLSAx
XSwKLSAgICB3aGVyZSA8bGV2ZWxzPiBpcyB0aGUgcGFyYW1ldGVyIHBhc3NlZCB0aGUgY2FsbCB0
byBUZXhTdG9yYWdlKiBmb3IKLSAgICB0aGUgdGV4dHVyZSBvYmplY3QuCi0KLSAgICBJbiBzZWN0
aW9uIDMuOC45IChSZW5kZXJpbmcgZmVlZGJhY2sgbG9vcHMpIHJlcGxhY2UgYWxsIHJlZmVyZW5j
ZXMKLSAgICB0byBURVhUVVJFX0JBU0VfTEVWRUwgYnkgbGV2ZWxfYmFzZS4KLQotICAgIEluIHNl
Y3Rpb24gMy44LjkgKE1pcG1hcHBpbmcpLCByZXBsYWNlIHRoZSBwYXJhZ3JhcGggc3RhcnRpbmcg
IkVhY2gKLSAgICBhcnJheSBpbiBhIG1pcG1hcCBpcyBkZWZpbmVkLi4uIiBieQotCi0gICAgIkVh
Y2ggYXJyYXkgaW4gYSBtaXBtYXAgaXMgZGVmaW5lZCB1c2luZyBUZXhJbWFnZTNELCBUZXhJbWFn
ZTJELAotICAgIENvcHlUZXhJbWFnZTJELCBUZXhJbWFnZTFELCBDb3B5VGV4SW1hZ2UxRCwgb3Ig
YnkgZnVuY3Rpb25zIHRoYXQgYXJlCi0gICAgZGVmaW5lZCBpbiB0ZXJtcyBvZiB0aGVzZSBmdW5j
dGlvbnMuIExldmVsLW9mLWRldGFpbCBudW1iZXJzIHByb2NlZWQKLSAgICBmcm9tIGxldmVsX2Jh
c2UgZm9yIHRoZSBvcmlnaW5hbCB0ZXhlbCBhcnJheSB0aHJvdWdoIHRoZSBtYXhpbXVtCi0gICAg
bGV2ZWwgcCwgd2l0aCBlYWNoIHVuaXQgaW5jcmVhc2UgaW5kaWNhdGluZyBhbiBhcnJheSBvZiBo
YWxmIHRoZQotICAgIGRpbWVuc2lvbnMgb2YgdGhlIHByZXZpb3VzIG9uZSAocm91bmRlZCBkb3du
IHRvIHRoZSBuZXh0IGludGVnZXIgaWYKLSAgICBmcmFjdGlvbmFsKSBhcyBhbHJlYWR5IGRlc2Ny
aWJlZC4gRm9yIGltbXV0YWJsZS1mb3JtYXQgdGV4dHVyZXMsCi0gICAgcCBpcyBvbmUgbGVzcyB0
aGFuIHRoZSA8bGV2ZWxzPiBwYXJhbWV0ZXIgcGFzc2VkIHRvIFRleFN0b3JhZ2UqOwotICAgIG90
aGVyd2lzZSBwID0gZmxvb3IobG9nXzIobWF4c2l6ZSkpICsgbGV2ZWxfYmFzZS4gIEFsbCBhcnJh
eXMgZnJvbQotICAgIGxldmVsX2Jhc2UgdGhyb3VnaCBxID0gbWluKHAsIGxldmVsX21heCkgbXVz
dCBiZSBkZWZpbmVkLCBhcwotICAgIGRpc2N1c3NlZCBpbiBzZWN0aW9uIDMuOC4xMi4iCi0KLSAg
ICBJbiBzZWN0aW9uIDMuOC4xMiAoVGV4dHVyZSBDb21wbGV0ZW5lc3MpLCBtb2RpZnkgdGhlIGxh
c3Qgc2VudGVuY2UKLSAgICB0byBhdm9pZCByZWZlcmluZyB0byBsZXZlbF9iYXNlIGFuZCBsZXZl
bF9tYXg6Ci0KLSAgICAiQW4gaW1wbGVtZW50YXRpb24gbWF5IGFsbG93IGEgdGV4dHVyZSBpbWFn
ZSBhcnJheSBvZiBsZXZlbCAxIG9yCi0gICAgZ3JlYXRlciB0byBiZSBjcmVhdGVkIG9ubHkgaWYg
YSBtaXBtYXAgY29tcGxldGUgc2V0IG9mIGltYWdlIGFycmF5cwotICAgIGNvbnNpc3RlbnQgd2l0
aCB0aGUgcmVxdWVzdGVkIGFycmF5IGNhbiBiZSBzdXBwb3J0ZWQgd2hlcmUgdGhlCi0gICAgdmFs
dWVzIG9mIFRFWFRVUkVfQkFTRV9MRVZFTCBhbmQgVEVYVFVSRV9NQVhfTEVWRUwgYXJlIDAgYW5k
IDEwMDAKLSAgICByZXNwZWN0aXZlbHkuIgotCi0gICAgTW9kaWZ5IHNlY3Rpb24gMy44LjEzIChU
ZXh0dXJlIFN0YXRlIGFuZCBQcm94eSBTdGF0ZSkgdG8gYWRkIHRoZSBuZXcKLSAgICBzdGF0ZToK
LQotICAgICJFYWNoIHNldCBjb25zaXN0cyBvZiAuLi4sIGFuZCBhIGJvb2xlYW4gZmxhZyBpbmRp
Y2F0aW5nIHdoZXRoZXIgdGhlCi0gICAgZm9ybWF0IGFuZCBkaW1lbnNpb25zIG9mIHRoZSB0ZXh0
dXJlIGFyZSBpbW11dGFibGUuIgotCi0gICAgQWRkCi0gICAgIlRoZSBpbml0aWFsIHZhbHVlIG9m
IFRFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVF9FWFQgaXMgRkFMU0UuIgotCi1BZGRpdGlvbnMgdG8g
Q2hhcHRlciA0IG9mIHRoZSBPcGVuR0wgMy4yIENvcmUgUHJvZmlsZSBTcGVjaWZpY2F0aW9uCi0o
UGVyLUZyYWdtZW50IE9wZXJhdGlvbnMgYW5kIHRoZSBGcmFtZSBCdWZmZXIpCi0KLSAgICBOb25l
Ci0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDUgb2YgdGhlIE9wZW5HTCAzLjIgQ29tcGF0aWJpbGl0
eSBQcm9maWxlIFNwZWNpZmljYXRpb24KLShTcGVjaWFsIEZ1bmN0aW9ucykKLQotICAgIEluIHNl
Y3Rpb24gNS40LjEgKENvbW1hbmRzIE5vdCBVc2FibGUgaW4gRGlzcGxheSBMaXN0cyksIGFkZAot
ICAgIFRleFN0b3JhZ2UqIHRvIHRoZSBsaXN0IG9mIGNvbW1hbmRzIHRoYXQgY2Fubm90IGJlIHVz
ZWQuCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDYgb2YgdGhlIE9wZW5HTCAzLjIgQ29yZSBQcm9m
aWxlIFNwZWNpZmljYXRpb24KLShTdGF0ZSBhbmQgU3RhdGUgUmVxdWVzdHMpCi0KLSAgICBSZXBs
YWNlIHRoZSBmb2xsb3dpbmcgc3RhdGVtZW50IGluIDYuMS4zIChFbnVtZXJhdGVkIFF1ZXJpZXMp
OgotCi0gICAgIjx2YWx1ZT4gbXVzdCBiZSBvbmUgb2YgdGhlIHN5bWJvbGljIHZhbHVlcyBpbiB0
YWJsZSAzLjEwLiIKLQotICAgIHdpdGgKLQotICAgICI8dmFsdWU+IG11c3QgYmUgVEVYVFVSRV9J
TU1VVEFCTEVfRk9STUFUX0VYVCBvciBvbmUgb2YgdGhlIHN5bWJvbGljCi0gICAgdmFsdWVzIGlu
IHRhYmxlIDMuMjIuIgotCi1BZGRpdGlvbnMgdG8gdGhlIEFHTC9FR0wvR0xYL1dHTCBTcGVjaWZp
Y2F0aW9ucwotCi0gICAgTm9uZQotCi1BZGRpdGlvbnMgdG8gT0VTX2NvbXByZXNzZWRfRVRDMV9S
R0I4X3RleHR1cmUKLQotICAgIEFkZCB0aGUgZm9sbG93aW5nIHRvIHRoZSBhZGRpdGlvbnMgdG8g
Q2hhcHRlciAzOgotCi0gICAgIlNpbmNlIEVUQzEgaW1hZ2VzIGFyZSBlYXNpbHkgZWRpdGVkIGFs
b25nIDR4NCB0ZXhlbCBib3VuZGFyaWVzLCB0aGUKLSAgICBsaW1pdGF0aW9ucyBvbiBDb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRCBhcmUgcmVsYXhlZC4KLSAgICBDb21wcmVzc2VkVGV4U3ViSW1hZ2Uy
RCB3aWxsIHJlc3VsdCBpbiBhbiBJTlZBTElEX09QRVJBVElPTiBlcnJvcgotICAgIG9ubHkgaWYg
b25lIG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBvY2N1cnM6Ci0KLSAgICAgICAgKiA8d2lk
dGg+IGlzIG5vdCBhIG11bHRpcGxlIG9mIGZvdXIsIGFuZCA8d2lkdGg+IHBsdXMgPHhvZmZzZXQ+
IGlzIG5vdAotICAgICAgICAgIGVxdWFsIHRvIHRoZSB0ZXh0dXJlIHdpZHRoOwotCi0gICAgICAg
ICogPGhlaWdodD4gaXMgbm90IGEgbXVsdGlwbGUgb2YgZm91ciwgYW5kIDxoZWlnaHQ+IHBsdXMg
PHlvZmZzZXQ+IGlzCi0gICAgICAgICAgbm90IGVxdWFsIHRvIHRoZSB0ZXh0dXJlIGhlaWdodDsg
b3IKLQotICAgICAgICAqIDx4b2Zmc2V0PiBvciA8eW9mZnNldD4gaXMgbm90IGEgbXVsdGlwbGUg
b2YgZm91ci4KLQotICAgIFJlbW92ZSBDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCBmcm9tIHRoaXMg
ZXJyb3I6Ci0KLSAgICAiSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGJ5IENvbXByZXNz
ZWRUZXhTdWJJbWFnZTJELAotICAgIFRleFN1YkltYWdlMkQsIG9yIENvcHlUZXhTdWJJbWFnZTJE
IGlmIHRoZSB0ZXh0dXJlIGltYWdlIDxsZXZlbD4KLSAgICBib3VuZCB0byA8dGFyZ2V0PiBoYXMg
aW50ZXJuYWwgZm9ybWF0IEVUQzFfUkdCOF9PRVMuIgotCi0gICAgQWRkIHRoZSBmb2xsb3dpbmcg
ZXJyb3I6Ci0KLSAgICAiSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGJ5IENvbXByZXNz
ZWRUZXhTdWJJbWFnZTJECi0gICAgaWYgdGhlIHJlZ2lvbiB0byBiZSBtb2RpZmllZCBpcyBub3Qg
YWxpZ25lZCB0byBibG9jayBib3VuZGFyaWVzCi0gICAgKHJlZmVyIHRvIHRoZSBleHRlbnNpb24g
dGV4dCBmb3IgZGV0YWlscykuIgotCi1BZGRpdGlvbnMgdG8gQU1EX2NvbXByZXNzZWRfQVRDX3Rl
eHR1cmUgYW5kIEFNRF9jb21wcmVzc2VkXzNEQ190ZXh0dXJlOgotCi0gICAgQXBwbHkgdGhlIHNh
bWUgY2hhbmdlcyBhcyBmb3IgT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUKLSAgICBh
Ym92ZSwgc3Vic3RpdHV0aW5nIHRoZSBhcHByb3ByaWF0ZSBpbnRlcm5hbCBmb3JtYXQgdG9rZW5z
IGZyb20KLSAgICB0aGVzZSBleHRlbnNpb25zLgotCi1EZXBlbmRlbmNpZXMgb24gRVhUX2RpcmVj
dF9zdGF0ZV9hY2Nlc3MKLQotICAgIElmIEVYVF9kaXJlY3Rfc3RhdGVfYWNjZXNzIGlzIG5vdCBw
cmVzZW50LCByZWZlcmVuY2VzIHRvCi0gICAgVGV4dHVyZVN0b3JhZ2UqIHNob3VsZCBiZSBpZ25v
cmVkLgotCi1EZXBlbmRlbmNpZXMgb24gT3BlbkdMIEVTCi0KLSAgICBPbiBPcGVuR0wgRVMgd2l0
aG91dCBleHRlbnNpb25zIGludHJvZHVjaW5nIFRFWFRVUkVfTUFYX0xFVkVMLAotICAgIG1pcG1h
cHBlZCB0ZXh0dXJlcyBzcGVjaWZpZWQgd2l0aCBUZXhTdG9yYWdlIGFyZSByZXF1aXJlZCB0byBo
YXZlIGEKLSAgICBmdWxsIHNldCBvZiBtaXBtYXBzLiBJZiBURVhUVVJFX01BWF9MRVZFTCBpcyBu
b3Qgc3VwcG9ydGVkLCB0aGlzCi0gICAgZXh0ZW5zaW9uIGlzIG1vZGlmaWVkIGFzIGZvbGxvd3M6
Ci0KLSAgICAtIFdoZXJlIGFuIHVwcGVyIGJvdW5kIGlzIHBsYWNlZCBvbiA8bGV2ZWxzPiBpbiB0
aGlzIGV4dGVuc2lvbiAoaS5lLgotICAgICAgdGhlIG1heGltdW0gbnVtYmVyIG9mIG1pcG1hcCBs
ZXZlbHMgZm9yIGEgdGV4dHVyZSBvZiB0aGUgZ2l2ZW4KLSAgICAgIHRhcmdldCBhbmQgZGltZW5z
aW9ucyksIGFuIElOVkFMSURfT1BFUkFUSU9OIGVycm9yIGlzIGdlbmVyYXRlZCBpZgotICAgICAg
PGxldmVscz4gaXMgbmVpdGhlciAxIG5vciB0aGlzIHVwcGVyIGJvdW5kLgotICAgIC0gcSAodGhl
IGVmZmVjdGl2ZSBtYXhpbXVtIG51bWJlciBvZiBsZXZlbHMpIGlzIHJlZGVmaW5lZCB0byBjbGFt
cAotICAgICAgdG8gdGhlIG51bWJlciBvZiBsZXZlbHMgcHJlc2VudCBpbiBpbW11dGFibGUtZm9y
bWF0IHRleHR1cmVzLgotCi0gICAgT3BlbkdMIEVTIGRvZXMgbm90IGFjY2VwdCBzaXplZCBpbnRl
cm5hbCBmb3JtYXRzIChlLmcuLCBSR0JBOCkgYW5kCi0gICAgaW5zdGVhZCBkZXJpdmVzIGFuIGlu
dGVybmFsIGZvcm1hdCBmcm9tIHRoZSA8Zm9ybWF0PiBhbmQgPHR5cGU+Ci0gICAgcGFyYW1ldGVy
cyBvZiBUZXhJbWFnZTJELiBTaW5jZSBUZXhTdG9yYWdlKiBkb2VzIG5vdCBzcGVjaWZ5IHRleGVs
Ci0gICAgZGF0YSwgdGhlIEFQSSBkb2Vzbid0IGluY2x1ZGUgPGZvcm1hdD4gYW5kIDx0eXBlPiBw
YXJhbWV0ZXJzLgotICAgIE9uIGFuIE9wZW5HTCBFUyBpbXBsZW1lbnRhdGlvbiwgdGhlIHZhbHVl
cyBpbiB0aGUgPGludGVybmFsZm9ybWF0PgotICAgIGNvbHVtbiBpbiB0aGUgdGFibGVzIGJlbG93
IGFyZSBhY2NlcHRlZCBhcyA8aW50ZXJuYWxmb3JtYXQ+Ci0gICAgcGFyYW1ldGVycywgYW5kIGJh
c2UgaW50ZXJuYWwgZm9ybWF0cyBhcmUgbm90IGFjY2VwdGVkLiBUaGUKLSAgICBUZXhJbWFnZSog
Y2FsbHMgaW4gdGhlIFRleFN0b3JhZ2UqIHBzZXVkb2NvZGUgYXJlIG1vZGlmaWVkIHNvIHRoYXQK
LSAgICB0aGUgPGludGVybmFsZm9ybWF0PiwgPGZvcm1hdD4gYW5kIDx0eXBlPiBwYXJhbWV0ZXJz
IGFyZQotICAgIHRha2VuIGZyb20gdGhlIDxmb3JtYXQ+LCA8Zm9ybWF0PiBhbmQgPHR5cGU+IGNv
bHVtbnMgKHJlc3BlY3RpdmVseSkKLSAgICBpbiB0aGUgdGFibGVzIGJlbG93LCBhY2NvcmRpbmcg
dG8gdGhlIDxpbnRlcm5hbGZvcm1hdD4KLSAgICBzcGVjaWZpZWQgaW4gdGhlIFRleFN0b3JhZ2Uq
IGNvbW1hbmQuCi0KLSAgICAgICAgPGludGVybmFsZm9ybWF0PiAgICAgICA8Zm9ybWF0PiAgICAg
ICAgICAgPHR5cGU+Ci0gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0gICAgICAgLS0tLS0tLS0gICAg
ICAgICAgIC0tLS0tLQotICAgICAgICBSR0I1NjUgICAgICAgICAgICAgICAgIFJHQiAgICAgICAg
ICAgICAgICBVTlNJR05FRF9TSE9SVF81XzZfNQotICAgICAgICBSR0JBNCAgICAgICAgICAgICAg
ICAgIFJHQkEgICAgICAgICAgICAgICBVTlNJR05FRF9TSE9SVF80XzRfNF80Ci0gICAgICAgIFJH
QjVfQTEgICAgICAgICAgICAgICAgUkdCQSAgICAgICAgICAgICAgIFVOU0lHTkVEX1NIT1JUXzVf
NV81XzEKLSAgICAgICAgUkdCOF9PRVMgICAgICAgICAgICAgICBSR0IgICAgICAgICAgICAgICAg
VU5TSUdORURfQllURQotICAgICAgICBSR0JBOF9PRVMgICAgICAgICAgICAgIFJHQkEgICAgICAg
ICAgICAgICBVTlNJR05FRF9CWVRFCi0gICAgICAgIExVTUlOQU5DRThfQUxQSEE4X0VYVCAgTFVN
SU5BTkNFX0FMUEhBICAgIFVOU0lHTkVEX0JZVEUKLSAgICAgICAgTFVNSU5BTkNFOF9FWFQgICAg
ICAgICBMVU1JTkFOQ0UgICAgICAgICAgVU5TSUdORURfQllURQotICAgICAgICBBTFBIQThfRVhU
ICAgICAgICAgICAgIEFMUEhBICAgICAgICAgICAgICBVTlNJR05FRF9CWVRFCi0KLSAgICBJZiBP
RVNfZGVwdGhfdGV4dHVyZSBpcyBzdXBwb3J0ZWQ6Ci0KLSAgICAgICAgPGludGVybmFsZm9ybWF0
PiAgICAgICA8Zm9ybWF0PiAgICAgICAgICAgPHR5cGU+Ci0gICAgICAgIC0tLS0tLS0tLS0tLS0t
LS0gICAgICAgLS0tLS0tLS0gICAgICAgICAgIC0tLS0tLQotICAgICAgICBERVBUSF9DT01QT05F
TlQxNl9PRVMgIERFUFRIX0NPTVBPTkVOVCAgICBVTlNJR05FRF9TSE9SVAotICAgICAgICBERVBU
SF9DT01QT05FTlQzMl9PRVMgIERFUFRIX0NPTVBPTkVOVCAgICBVTlNJR05FRF9JTlQKLQotICAg
IElmIE9FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCBpcyBzdXBwb3J0ZWQ6Ci0KLSAgICAgICAgPGlu
dGVybmFsZm9ybWF0PiAgICAgICA8Zm9ybWF0PiAgICAgICAgICAgPHR5cGU+Ci0gICAgICAgIC0t
LS0tLS0tLS0tLS0tLS0gICAgICAgLS0tLS0tLS0gICAgICAgICAgIC0tLS0tLQotICAgICAgICBE
RVBUSDI0X1NURU5DSUw4X09FUyAgIERFUFRIX1NURU5DSUxfT0VTICBVTlNJR05FRF9JTlQKLQot
ICAgIElmIE9FU190ZXh0dXJlX2Zsb2F0IGlzIHN1cHBvcnRlZDoKLQotICAgICAgICA8aW50ZXJu
YWxmb3JtYXQ+ICAgICAgIDxmb3JtYXQ+ICAgICAgICAgICA8dHlwZT4KLSAgICAgICAgLS0tLS0t
LS0tLS0tLS0tLSAgICAgICAtLS0tLS0tLSAgICAgICAgICAgLS0tLS0tCi0gICAgICAgIFJHQkEz
MkZfRVhUICAgICAgICAgICAgUkdCQSAgICAgICAgICAgICAgIEZMT0FUCi0gICAgICAgIFJHQjMy
Rl9FWFQgICAgICAgICAgICAgUkdCICAgICAgICAgICAgICAgIEZMT0FUCi0gICAgICAgIExVTUlO
QU5DRV9BTFBIQTMyRl9FWFQgTFVNSU5BTkNFX0FMUEhBICAgIEZMT0FUCi0gICAgICAgIExVTUlO
QU5DRTMyRl9FWFQgICAgICAgTFVNSU5BTkNFICAgICAgICAgIEZMT0FUIAotICAgICAgICBBTFBI
QTMyRl9FWFQgICAgICAgICAgIEFMUEhBICAgICAgICAgICAgICBGTE9BVAotCi0gICAgSWYgT0VT
X3RleHR1cmVfaGFsZl9mbG9hdCBpcyBzdXBwb3J0ZWQ6Ci0KLSAgICAgICAgPGludGVybmFsZm9y
bWF0PiAgICAgICA8Zm9ybWF0PiAgICAgICAgICAgPHR5cGU+Ci0gICAgICAgIC0tLS0tLS0tLS0t
LS0tLS0gICAgICAgLS0tLS0tLS0gICAgICAgICAgIC0tLS0tLQotICAgICAgICBSR0JBMTZGX0VY
VCAgICAgICAgICAgIFJHQkEgICAgICAgICAgICAgICBIQUxGX0ZMT0FUX09FUwotICAgICAgICBS
R0IxNkZfRVhUICAgICAgICAgICAgIFJHQiAgICAgICAgICAgICAgICBIQUxGX0ZMT0FUX09FUwot
ICAgICAgICBMVU1JTkFOQ0VfQUxQSEExNkZfRVhUIExVTUlOQU5DRV9BTFBIQSAgICBIQUxGX0ZM
T0FUX09FUwotICAgICAgICBMVU1JTkFOQ0UxNkZfRVhUICAgICAgIExVTUlOQU5DRSAgICAgICAg
ICBIQUxGX0ZMT0FUX09FUyAKLSAgICAgICAgQUxQSEExNkZfRVhUICAgICAgICAgICBBTFBIQSAg
ICAgICAgICAgICAgSEFMRl9GTE9BVF9PRVMKLQotICAgIElmIEVYVF90ZXh0dXJlX3R5cGVfMl8x
MF8xMF8xMF9SRVYgaXMgc3VwcG9ydGVkOgotCi0gICAgICAgIDxpbnRlcm5hbGZvcm1hdD4gICAg
PGZvcm1hdD4gICA8dHlwZT4KLSAgICAgICAgLS0tLS0tLS0tLS0tLS0tLSAgICAtLS0tLS0tLSAg
IC0tLS0tLQotICAgICAgICBSR0IxMF9BMl9FWFQgICAgICAgIFJHQkEgICAgICAgVU5TSUdORURf
SU5UXzJfMTBfMTBfMTBfUkVWX0VYVAotICAgICAgICBSR0IxMF9FWFQgICAgICAgICAgIFJHQiAg
ICAgICAgVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWX0VYVAotCi0gICAgSWYgRVhUX3RleHR1
cmVfZm9ybWF0X0JHUkE4ODg4IGlzIHN1cHBvcnRlZDoKLQotICAgICAgICA8aW50ZXJuYWxmb3Jt
YXQ+ICAgIDxmb3JtYXQ+ICAgPHR5cGU+Ci0gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0gICAgLS0t
LS0tLS0gICAtLS0tLS0KLSAgICAgICAgQkdSQThfRVhUICAgICAgICAgICBCR1JBX0VYVCAgIFVO
U0lHTkVEX0JZVEUKLQotCi1EZXBlbmRlbmNpZXMgb24gdGV4dHVyZSB0YXJnZXRzCi0KLSAgICBJ
ZiBhIHBhcnRpY3VsYXIgdGV4dHVyZSB0YXJnZXQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUKLSAg
ICBpbXBsZW1lbnRhdGlvbiwgcGFzc2luZyBpdCBhcyBhIDx0YXJnZXQ+IHRvIFRleFN0b3JhZ2Uq
IHdpbGwKLSAgICBnZW5lcmF0ZSBhbiBJTlZBTElEX0VOVU0gZXJyb3IuIElmIGFzIGEgcmVzdWx0
LCBhbnkgb2YgdGhlIGNvbW1hbmRzCi0gICAgZGVmaW5lZCBpbiB0aGlzIGV4dGVuc2lvbiB3b3Vs
ZCBubyBsb25nZXIgaGF2ZSBhbnkgdmFsaWQgPHRhcmdldD4sCi0gICAgYWxsIHJlZmVyZW5jZXMg
dG8gdGhlIGNvbW1hbmQgc2hvdWxkIGJlIGlnbm9yZWQuCi0KLSAgICBJbiBwYXJ0aWN1bGFyLCBu
b3RlIHRoYXQgT3BlbkdMIEVTIDEueC8yLjAgZG8gbm90IGhhdmUgcHJveHkgdGV4dHVyZXMsCi0g
ICAgMUQgdGV4dHVyZXMsIG9yIDNEIHRleHR1cmVzLCBhbmQgdGh1cyBvbmx5IHRoZSBUZXhTdG9y
YWdlMkRFWFQKLSAgICBlbnRyeSBwb2ludCBpcyByZXF1aXJlZC4gSWYgT0VTX3RleHR1cmVfM0Qg
aXMgc3VwcG9ydGVkLCB0aGUKLSAgICBUZXhTdG9yYWdlM0RFWFQgZW50cnkgcG9pbnQgaXMgYWxz
byByZXF1aXJlZC4KLQotRGVwZW5kZW5jaWVzIG9uIE9FU190ZXh0dXJlX25wb3QKLQotICAgIElm
IE9wZW5HTCBFUyAyLjAgb3IgQVBQTEVfdGV4dHVyZV8yRF9saW1pdGVkX25wb3QgaXMgcHJlc2Vu
dCBidXQKLSAgICBPRVNfdGV4dHVyZV9ucG90IGlzIG5vdCBwcmVzZW50LCB0aGVuIElOVkFMSURf
T1BFUkFUSU9OIGlzCi0gICAgZ2VuZXJhdGVkIGJ5IFRleFN0b3JhZ2UqIGFuZCBUZXhTdG9yYWdl
M0RFWFQgaWYgPGxldmVscz4gaXMKLSAgICBub3Qgb25lIGFuZCA8d2lkdGg+LCA8aGVpZ2h0PiBv
ciA8ZGVwdGg+IGlzIG5vdCBhIHBvd2VyIG9mCi0gICAgdHdvLgotCi1EZXBlbmRlbmNpZXMgb24g
V0dMX0FSQl9yZW5kZXJfdGV4dHVyZSwgR0xYX0VYVF90ZXh0dXJlX2Zyb21fcGl4bWFwLCBFR0wK
LTEuNCBhbmQgR0xfT0VTX0VHTF9pbWFnZQotCi0gICAgVGhlIGNvbW1hbmRzIGVnbEJpbmRUZXhJ
bWFnZSwgd2dsQmluZFRleEltYWdlQVJCLCBnbFhCaW5kVGV4SW1hZ2VFWFQgb3IKLSAgICBFR0xJ
bWFnZVRhcmdldFRleHR1cmUyRE9FUyBhcmUgbm90IHBlcm1pdHRlZCBvbiBhbiBpbW11dGFibGUt
Zm9ybWF0Ci0gICAgdGV4dHVyZS4KLSAgICBUaGV5IHdpbGwgZ2VuZXJhdGUgdGhlIGZvbGxvd2lu
ZyBlcnJvcnM6Ci0gICAgICAtIEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTOiBJTlZBTElEX09Q
RVJBVElPTgotICAgICAgLSBlZ2xCaW5kVGV4SW1hZ2U6IEVHTF9CQURfTUFUQ0gKLSAgICAgIC0g
d2dsQmluZFRleEltYWdlOiBFUlJPUl9JTlZBTElEX09QRVJBVElPTgotICAgICAgLSBnbFhCaW5k
VGV4SW1hZ2VFWFQ6IEJhZE1hdGNoCi0KLURlcGVuZGVuY2llcyBvbiBPRVNfY29tcHJlc3NlZF9w
YWxldHRlZF90ZXh0dXJlCi0KLSAgICBUaGUgY29tcHJlc3NlZCB0ZXh0dXJlIGZvcm1hdHMgZXhw
b3NlZCBieQotICAgIE9FU19jb21wcmVzc2VkX3BhbGV0dGVkX3RleHR1cmUgYXJlIG5vdCBzdXBw
b3J0ZWQgYnkgVGV4U3RvcmFnZSouCi0gICAgUGFzc2luZyBvbmUgb2YgdGhlc2UgdG9rZW5zIHRv
IFRleFN0b3JhZ2UqIHdpbGwgZ2VuZXJhdGUgYW4KLSAgICBJTlZBTElEX0VOVU0gZXJyb3IuCi0K
LUVycm9ycwotCi0gICAgTm90ZSB0aGF0IGRlcGVuZGVuY2llcyBhYm92ZSBtb2RpZnkgdGhlIGVy
cm9ycy4KLQotICAgIElmIFRleFN0b3JhZ2UqIGlzIGNhbGxlZCB3aXRoIGEgPHdpZHRoPiwgPGhl
aWdodD4sIDxkZXB0aD4gb3IKLSAgICA8bGV2ZWxzPiBwYXJhbWV0ZXIgdGhhdCBpcyBsZXNzIHRo
YW4gb25lLCB0aGVuIHRoZSBlcnJvcgotICAgIElOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkLgot
Ci0gICAgSWYgdGhlIDx0YXJnZXQ+IHBhcmFtZXRlciB0byBUZXhTdG9yYWdlMURFWFQgaXMgbm90
Ci0gICAgW1BST1hZX11URVhUVVJFXzFELCB0aGVuIHRoZSBlcnJvciBJTlZBTElEX0VOVU0gaXMg
Z2VuZXJhdGVkLgotCi0gICAgSWYgdGhlIDx0YXJnZXQ+IHBhcmFtZXRlciB0byBUZXhTdG9yYWdl
MkRFWFQgaXMgbm90Ci0gICAgW1BST1hZX11URVhUVVJFXzJELCBbUFJPWFlfXVRFWFRVUkVfQ1VC
RV9NQVAsCi0gICAgW1BST1hZX11URVhUVVJFX1JFQ1RBTkdMRSBvciBbUFJPWFlfXVRFWFRVUkVf
MURfQVJSQVksIHRoZW4gdGhlCi0gICAgZXJyb3IgSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZC4K
LQotICAgIElmIHRoZSA8dGFyZ2V0PiBwYXJhbWV0ZXIgdG8gVGV4U3RvcmFnZTNERVhUIGlzIG5v
dAotICAgIFtQUk9YWV9dVEVYVFVSRV8zRCwgW1BST1hZX11URVhUVVJFXzJEX0FSUkFZIG9yCi0g
ICAgW1BST1hZX11URVhUVVJFX0NVQkVfTUFQX0FSUkFZIHRoZW4gdGhlIGVycm9yIElOVkFMSURf
RU5VTSBpcwotICAgIGdlbmVyYXRlZC4KLQotICAgIElmIHRoZSA8bGV2ZWxzPiBwYXJhbWV0ZXIg
dG8gVGV4U3RvcmFnZSogaXMgZ3JlYXRlciB0aGFuIHRoZQotICAgIDx0YXJnZXQ+LXNwZWNpZmlj
IHZhbHVlIGxpc3RlZCBiZWxvdyB0aGVuIHRoZSBlcnJvcgotICAgIElOVkFMSURfT1BFUkFUSU9O
IGlzIGdlbmVyYXRlZDoKLSAgICAgICAgW1BST1hZX11URVhUVVJFX3sxRCwxRF9BUlJBWX06Ci0g
ICAgICAgICAgICBmbG9vcihsb2dfMih3aWR0aCkpICsgMQotICAgICAgICBbUFJPWFlfXVRFWFRV
UkVfezJELDJEX0FSUkFZLENVQkVfTUFQLENVQkVfTUFQX0FSUkFZfToKLSAgICAgICAgICAgIGZs
b29yKGxvZ18yKG1heCh3aWR0aCwgaGVpZ2h0KSkpICsgMQotICAgICAgICBbUFJPWFlfXVRFWFRV
UkVfM0Q6Ci0gICAgICAgICAgICBmbG9vcihsb2dfMihtYXgod2lkdGgsIGhlaWdodCwgZGVwdGgp
KSkgKyAxCi0gICAgICAgIFtQUk9YWV9dVEVYVFVSRV9SRUNUQU5HTEU6Ci0gICAgICAgICAgICAx
Ci0KLSAgICBJZiB0aGUgZGVmYXVsdCB0ZXh0dXJlIG9iamVjdCBpcyBib3VuZCB0byB0aGUgPHRh
cmdldD4gcGFzc2VkIHRvCi0gICAgVGV4U3RvcmFnZSosIHRoZW4gdGhlIGVycm9yIElOVkFMSURf
T1BFUkFUSU9OIGlzIGdlbmVyYXRlZC4KLQotICAgIElmIHRoZSA8dGFyZ2V0PiBwYXJhbWV0ZXIg
dG8gVGV4dHVyZVN0b3JhZ2UqIGRvZXMgbm90IG1hdGNoIHRoZQotICAgIGRpbWVuc2lvbmFsaXR5
IG9mIDx0ZXh0dXJlPiwgdGhlbiB0aGUgZXJyb3IgSU5WQUxJRF9PUEVSQVRJT04gaXMKLSAgICBn
ZW5lcmF0ZWQuCi0KLSAgICBJZiB0aGUgPHRleHR1cmU+IHBhcmFtZXRlciB0byBUZXh0dXJlU3Rv
cmFnZSogaXMgemVybywgdGhlbiB0aGUKLSAgICBJTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZC4K
LQotICAgIElmIGFueSBwc2V1ZG8tY29kZSBsaXN0ZWQgaW4gdGhpcyBleHRlbnNpb24gd291bGQg
Z2VuZXJhdGUgYW4gZXJyb3IsCi0gICAgdGhlbiB0aGF0IGVycm9yIGlzIGdlbmVyYXRlZC4KLQot
ICAgIENhbGxpbmcgYW55IG9mIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIG9uIGEgdGV4dHVyZSBm
b3Igd2hpY2gKLSAgICBURVhUVVJFX0lNTVVUQUJMRV9GT1JNQVRfRVhUIGlzIFRSVUUgd2lsbCBn
ZW5lcmF0ZSBhbgotICAgIElOVkFMSURfT1BFUkFUSU9OIGVycm9yOgotICAgICAgICAtIFRleElt
YWdlKgotICAgICAgICAtIENvbXByZXNzZWRUZXhJbWFnZSoKLSAgICAgICAgLSBDb3B5VGV4SW1h
Z2UqCi0KLU5ldyBTdGF0ZQotCi0gICAgQWRkaXRpb25zIHRvIFRhYmxlIDYuOCBUZXh0dXJlcyAo
c3RhdGUgcGVyIHRleHR1cmUgb2JqZWN0KQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsCi0gICAgICAgIEdldCBW
YWx1ZSAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgR2V0IENvbW1hbmQgICAgICBWYWx1ZSAg
ICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICBTZWMuCi0gICAgICAgIC0tLS0tLS0tLSAgICAg
ICAgICAgICAgICAgICAgICAtLS0tICAgLS0tLS0tLS0tLS0gICAgICAtLS0tLS0tICAtLS0tLS0t
LS0tLSAgICAgICAgICAgICAgICAtLS0tCi0gICAgICAgIFRFWFRVUkVfSU1NVVRBQkxFX0ZPUk1B
VF9FWFQgICBCICAgICAgR2V0VGV4UGFyYW1ldGVyICBGQUxTRSAgICBTaXplIGFuZCBmb3JtYXQg
aW1tdXRhYmxlICAyLjYKLQotTmV3IEltcGxlbWVudGF0aW9uIERlcGVuZGVudCBTdGF0ZQotCi0g
ICAgTm9uZQotCi1Jc3N1ZXMKLQotICAgIDEuIFdoYXQgc2hvdWxkIHRoaXMgZXh0ZW5zaW9uIGJl
IGNhbGxlZD8KLQotICAgIFJFU09MVkVEOiBFWFRfdGV4dHVyZV9zdG9yYWdlIGlzIGNob3NlbiBm
b3IgY29uc2lzdGVuY3kgd2l0aCB0aGUKLSAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UgZW50cnkg
cG9pbnQuCi0KLSAgICAyLiBTaG91bGQgVGV4U3RvcmFnZSogYWNjZXB0IGEgYm9yZGVyIHBhcmFt
ZXRlcj8KLQotICAgIFJFU09MVkVEOiBuby4KLQotICAgIERJU0NVU1NJT046IEN1cnJlbnRseSBp
dCBkb2VzIG5vdCwgc2luY2UgYm9yZGVycyBhcmUgYSBkZXByZWNhdGVkCi0gICAgZmVhdHVyZSB3
aGljaCBpcyBub3Qgc3VwcG9ydGVkIGJ5IGFsbCBoYXJkd2FyZS4gVXNlcnMgb2YgdGhlCi0gICAg
Y29tcGF0aWJpbGl0eSBwcm9maWxlIGNhbiBjb250aW51ZSB0byB1c2UgdGhlIGV4aXN0aW5nIHRl
eHR1cmUKLSAgICBzcGVjaWZpY2F0aW9uIGZ1bmN0aW9ucywgYnV0IHRoZXJlIGlzIGFuIGFyZ3Vt
ZW50IHRoYXQgdXNlcnMgb2YKLSAgICBjb21wYXRpYmlsaXR5IHByb2ZpbGUgbWF5IGFsc28gd2Fu
dCB0byB1c2UgdGhpcyBleHRlbnNpb24uCi0KLSAgICAzLiBXaGF0IGlzIHRoZSBjb3JyZWN0IGVy
cm9yIHdoZW4gPGxldmVscz4gc3BlY2lmaWVzIGEgcGFydGlhbAotICAgIG1pcG1hcCBweXJhbWlk
IGZvciBPcGVuR0wgRVM/Ci0KLSAgICBSRVNPTFZFRDogSU5WQUxJRF9PUEVSQVRJT04sIHNpbmNl
IGl0IGlzIGFuIGludGVyYWN0aW9uIGJldHdlZW4KLSAgICBwYXJhbWV0ZXJzIHJhdGhlciB0aGFu
IGEgc2luZ2xlIHZhbHVlIGJlaW5nIGludmFsaWQuIEl0IGFsc28gbWFrZXMKLSAgICBzZW5zZSB0
byByZWxheCB0aGlzIGNvbmRpdGlvbiBmb3IgZGVza3RvcCBHTCB3aGVyZSBpdCBtYWtlcyBzZW5z
ZSB0bwotICAgIHVzZSBhIHRydW5jYXRlZCBweXJhbWlkIHdpdGggVEVYVFVSRV9NQVhfTEVWRUwu
Ci0KLSAgICA0LiBTaG91bGQgdXNlIG9mIHRoZXNlIGVudHJ5LXBvaW50cyBtYWtlIHRoZSBtZXRh
ZGF0YSAoZm9ybWF0IGFuZAotICAgIGRpbWVuc2lvbnMpIGltbXV0YWJsZT8KLQotICAgIFJFU09M
VkVEOiBZZXMuCi0KLSAgICBESVNDVVNTSU9OOiBUaGUgYmVuZWZpdHMgb2Yga25vd2luZyBtZXRh
ZGF0YSBjYW4ndCBjaGFuZ2Ugd2lsbAotICAgIHByb2JhYmx5IG91dHdlaWdoIHRoZSBleHRyYSBj
b3N0IG9mIGNoZWNraW5nIHRoZQotICAgIFRFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVF9FWFQgZmxh
ZyBvbiBlYWNoIHRleHR1cmUgc3BlY2lmaWNhdGlvbgotICAgIGNhbGwuCi0KLSAgICA1LiBTaG91
bGQgaXQgYmUgbGVnYWwgdG8gY29tcGxldGVseSByZXBsYWNlIHRoZSB0ZXh0dXJlIHVzaW5nIGEg
bmV3IGNhbGwKLSAgICB0byBUZXhTdG9yYWdlKj8KLQotICAgIFJFU09MVkVELiBJdCB3aWxsIG5v
dCBiZSBhbGxvd2VkLgotCi0gICAgRElTQ1VTU0lPTjogVGhpcyBpcyB1c2VmdWwgdG8gaW52YWxp
ZGF0ZSBhbGwgbGV2ZWxzIG9mIGEgdGV4dHVyZS4KLSAgICBBbGxvd2luZyB0aGUgbWV0YWRhdGEg
dG8gYmUgY2hhbmdlZCBoZXJlIHNlZW1zIGVhc2llciB0aGFuIHRyeWluZyB0bwotICAgIGRlZmlu
ZSBhIHBvcnRhYmxlIGRlZmluaXRpb24gb2Ygd2hhdCBpdCBtZWFucyB0byBjaGFuZ2UgdGhlIG1l
dGFkYXRhCi0gICAgKGUuZy4gd2hhdCBpZiB5b3UgdXNlZCBhbiB1bnNpemVkIGludGVybmFsIGZv
cm1hdCB0aGUgZmlyc3QgdGltZSBhbmQKLSAgICB0aGUgY29ycmVzcG9uZGluZyBzaXplZCBpbnRl
cm5hbCBmb3JtYXQgdGhlIHNlY29uZCB0aW1lLCBvciB2aWNlCi0gICAgdmVyc2EpPwotCi0gICAg
SG93ZXZlciwgd2hpbGUgdGhpcyBpcyBsYXJnZWx5IHNpbWlsYXIgdG8gZGVsZXRpbmcgdGhlIG9s
ZCB0ZXh0dXJlCi0gICAgb2JqZWN0IGFuZCByZXBsYWNpbmcgaXQgd2l0aCBhIG5ldyBvbmUsIGl0
IGRvZXMgbG9zZSBzb21lIG9mIHRoZQotICAgIGFkdmFudGFnZXMgb2YgaW1tdXRhYmlsaXR5LiBT
cGVjaWZpY2FsbHksIGJlY2F1c2UgZG9pbmcgc28gZG9lcyBub3QKLSAgICByZXNldCBiaW5kaW5n
cywgaXQgZG9lc24ndCBhbGxvdyBhIG1pZ3JhdGlvbiBwYXRoIHRvIGFuIEFQSSB0aGF0Ci0gICAg
dmFsaWRhdGVzIHRoZSB0ZXh0dXJlIGZvcm1hdCBhdCBiaW5kIHRpbWUuCi0KLSAgICA2LiBTaG91
bGQgaXQgYmUgbGVnYWwgdG8gdXNlIFRleEltYWdlKiBhZnRlciBUZXhTdG9yYWdlKiBpZiBpdCBk
b2Vzbid0Ci0gICAgYWZmZWN0IHRoZSBtZXRhZGF0YT8KLQotICAgIFJFU09MVkVEOiBOby4KLQot
ICAgIERJU0NVU1NJT046IEEgcG90ZW50aWFsIHVzZSBjYXNlIGlzIHRvIGFsbG93IGEgc2luZ2xl
IGxldmVsIG9mIGEKLSAgICB0ZXh0dXJlIHRvIGJlIGludmFsaWRhdGVkIHVzaW5nIGEgTlVMTCBw
b2ludGVyLiBIb3dldmVyLCBhcyBub3RlZAotICAgIGFib3ZlIGl0IGlzIG5vbi10cml2aWFsIHRv
IGRldGVybWluZSB3aGF0IGNvbnN0aXR1dGVzIGEgY2hhbmdlLgotCi0gICAgNy4gSG93IGRvZXMg
dGhpcyBleHRlbnNpb24gaW50ZXJhY3Qgd2l0aCBBUFBMRV90ZXh0dXJlXzJEX2xpbWl0ZWRfbnBv
dD8KLQotICAgIFJFU09MVkVELiBBUFBMRV90ZXh0dXJlXzJEX2xpbWl0ZWRfbnBvdCBpcyBlcXVp
dmFsZW50IHRvIHRoZSBOUE9UCi0gICAgc3VwcG9ydCBpbiBPcGVuR0wgRVMgMi4wLgotCi0gICAg
OC4gU2hvdWxkIHRoaXMgZXh0ZW5zaW9uIGJlIHdyaXR0ZW4gdG8gd29yayB3aXRoIGRlc2t0b3Ag
T3BlbkdMPwotCi0gICAgUkVTT0xWRUQ6IFllcy4KLQotICAgIERJU0NVU1NJT046IFRoZXJlIGhh
cyBiZWVuIGJlZW4gaW50ZXJlc3QgYW5kIGl0IHdpbGwgZnV0dXJlLXByb29mIGl0Ci0gICAgYWdh
aW5zdCBmdXJ0aGVyIGFkZGl0aW9ucyB0byBPcGVuR0wgRVMuCi0KLSAgICA5LiBXaGljaCB0ZXh0
dXJlIHRhcmdldHMgc2hvdWxkIGJlIHN1cHBvcnRlZD8KLQotICAgIFJFU09MVkVELiBBbGwgdGFy
Z2V0cyBleGNlcHQgbXVsdGlzYW1wbGUgYW5kIGJ1ZmZlciB0ZXh0dXJlcyBhcmUKLSAgICBzdXBw
b3J0ZWQuCi0KLSAgICBJbml0aWFsbHkgYWxsIHRhcmdldHMgZXhjZXB0IFRFWFRVUkVfQlVGRkVS
IHdlcmUgc3VwcG9ydGVkLiBJdCB3YXMKLSAgICBub3RlZCB0aGF0IHRoZSBlbnRyeXBvaW50cyBm
b3IgbXVsdGlzYW1wbGUgdGFyZ2V0cyBhZGRlZCBubyB1c2VmdWwKLSAgICBmdW5jdGlvbmFsaXR5
LCBzaW5jZSBtdWx0aXNhbXBsZSB0ZXh0dXJlcyBoYXZlIG5vIGNvbXBsZXRlbmVzcwotICAgIGNo
ZWNrcyBiZXlvbmQgYmVpbmcgbm9uLWVtcHR5LgotCi0gICAgUmVjdGFuZ2xlIHRleHR1cmVzIGhh
dmUgY29tcGxldGVuZXNzIGNoZWNrcyB0byBwcmV2ZW50IGZpbHRlcmluZyBvZgotICAgIGludGVn
ZXIgdGV4dHVyZXMuIEhvd2V2ZXIsIHNpbmNlIHdlIGRlY2lkZWQgdG8gb25seSBmb3JjZSBtaXBt
YXAKLSAgICBjb21wbGV0ZW5lc3MsIHRoaXMgYmVjb21lcyBsZXNzIHVzZWZ1bC4KLQotICAgIDEw
LiBTaG91bGQgdGhpcyBleHRlbnNpb24gc3VwcG9ydCBwcm94eSB0ZXh0dXJlcz8KLQotICAgIFJF
U09MVkVEOiBZZXMuCi0KLSAgICBESVNDVVNTSU9OOiBJdCBzaG91bGQgYmUgb3J0aG9nb25hbC4K
LQotICAgIDExLiBBcmUgdGhlIDxmb3JtYXQ+IGFuZCA8dHlwZT4gcGFyYW1ldGVycyBuZWNlc3Nh
cnk/Ci0KLSAgICBSRVNPTFZFRC4gTm8sIHRoZXkgd2lsbCBiZSByZW1vdmVkLgotCi0gICAgRElT
Q1VTU0lPTjogRm9yIE9wZW5HTCBFUyB0aGUgdHlwZSBwYXJhbWV0ZXIgd2FzIG5lY2Vzc2FyeSB0
bwotICAgIGRldGVybWluZSB0aGUgcHJlY2lzaW9uIG9mIHRoZSB0ZXh0dXJlLCBidXQgdGhpcyBj
YW4gYmUgc29sdmVkIGJ5Ci0gICAgaGF2aW5nIHRoZXNlIGZ1bmN0aW9ucyBhY2NlcHQgc2l6ZWQg
aW50ZXJuYWwgZm9ybWF0cyAod2hpY2ggYXJlCi0gICAgYWxyZWFkeSBhY2NlcHRlZCBieSByZW5k
ZXJidWZmZXJzKS4KLQotICAgIDEyLiBTaG91bGQgaXQgYmUgbGVnYWwgdG8gbWFrZSB0aGUgZGVm
YXVsdCB0ZXh0dXJlIChpZCAwKQotICAgIGltbXV0YWJsZS1mb3JtYXQ/Ci0KLSAgICBSRVNPTFZF
RDogTm8uCi0KLSAgICBESVNDVVNTSU9OOiBUaGlzIHdvdWxkIG1ha2UgaXQgaW1wb3NzaWJsZSB0
byByZXN0b3JlIHRoZSBjb250ZXh0IHRvCi0gICAgaXQncyBkZWZhdWx0IHN0YXRlLCB3aGljaCBp
cyBkZWVtZWQgdW5kZXNpcmFibGUuIFRoZXJlIGlzIG5vIGdvb2QKLSAgICByZWFzb24gbm90IHRv
IHVzZSBuYW1lZCB0ZXh0dXJlIG9iamVjdHMuCi0KLSAgICAxMy4gU2hvdWxkIHdlIHRyeSB0byBn
dWFyYW50ZWUgdGhhdCB0ZXh0dXJlcyBtYWRlIHRocm91Z2ggdGhpcyBwYXRoCi0gICAgd2lsbCBh
bHdheXMgYmUgY29tcGxldGU/Ci0KLSAgICBSRVNPTFZFRDogSXQgc2hvdWxkIGJlIGd1YXJhbnRl
ZWQgdGhhdCB0aGUgdGV4dHVyZSB3aWxsIGJlIG1pcG1hcAotICAgIGNvbXBsZXRlLgotCi0gICAg
RElTQ1VTU0lPTjogRnV0dXJlIHNlcGFyYXRpb24gYmV0d2VlbiBpbWFnZXMgYW5kIHNhbXBsZXJz
IHdpbGwgc3RpbGwKLSAgICBhbGxvdyB1c2VycyB0byBjcmVhdGUgY29tYmluYXRpb25zIHRoYXQg
YXJlIGludmFsaWQsIGJ1dAotICAgIGNvbnN0cmFpbmluZyB0aGUgc2ltcGxlIGNhc2VzIHdpbGwg
bWFrZSB0aGVzZSBBUElzIGVhc2llciB0byB1c2UgZm9yCi0gICAgYmVnaW5uZXJzLgotCi0gICAg
MTQuIFNob3VsZCB0aGVzZSBmdW5jdGlvbnMgdXNlIGEgRVhUX2RpcmVjdF9zdGF0ZV9hY2Nlc3Mg
YXBwcm9hY2ggdG8KLSAgICBzcGVjaWZ5aW5nIHRoZSB0ZXh0dXJlIG9iamVjdHM/Ci0KLSAgICBV
TlJFU09MVkVELgotCi0gICAgRElTQ1VTU0lPTjogYXMgYSBzdGFuZGFsb25lIGV4dGVuc2lvbiwg
bm8gRFNBLWxpa2UgZnVuY3Rpb25zIHdpbGwgYmUKLSAgICBhZGRlZC4gSG93ZXZlciwgaW50ZXJh
Y3Rpb25zIHdpdGggRVhUX2RpcmVjdF9zdGF0ZV9hY2Nlc3MgYW5kCi0gICAgQVJCX2RpcmVjdF9z
dGF0ZV9hY2Nlc3MgbmVlZCB0byBiZSByZXNvbHZlZC4KLQotICAgIDE1LiBTaG91bGQgdGhlc2Ug
ZnVuY3Rpb25zIGFjY2VwdCBnZW5lcmljIGNvbXByZXNzZWQgZm9ybWF0cz8KLQotICAgIFJFU09M
VkVEOiBZZXMuIE5vdGUgdGhhdCB0aGUgc3BlYyBsYW5ndWFnZSB3aWxsIG5lZWQgdG8gYmUgbW9k
aWZpZWQKLSAgICB0byBhbGxvdyB0aGlzIGZvciBFUywgc2luY2UgdGhlIHBzZXVkb2NvZGUgaXMg
d3JpdHRlbiBpbiB0ZXJtcyBvZgotICAgIFRleEltYWdlMkQsIHdoaWNoIGRvZXMgbm90IGFsbG93
IGNvbXByZXNzZWQgdGV4dHVyZSBmb3JtYXRzIGluIEVTLgotICAgIFNlZSBhbHNvIGlzc3VlcyAy
MyBhbmQgMjcuCi0KLSAgICAxNi4gSG93IHNob3VsZCBjb21wbGV0ZW5lc3MgYmUgZm9yY2VkIHdo
ZW4gVEVYVFVSRV9NQVhfTEVWRUwgaXMgbm90Ci0gICAgcHJlc2VudD8KLQotICAgIFJFU09MVkVE
LiBUaGUgbWF4aW11bSBsZXZlbCBxIHdpbGwgYmUgcmVkZWZpbmVkIHRvIGNsYW1wIHRvIHRoZQot
ICAgIGhpZ2hlc3QgbGV2ZWwgYXZhaWxhYmxlLgotCi0gICAgRElTQ1VTU0lPTjogQSBzaW5nbGUt
bGV2ZWwgdGV4dHVyZSBjYW4gYmUgbWFkZSBjb21wbGV0ZSBlaXRoZXIgYnkKLSAgICBtYWtpbmcg
aXQgbWlwbWFwIGNvbXBsZXRlIChieSBzZXR0aW5nIFRFWFRVUkVfTUFYX0xFVkVMIHRvIDApIG9y
IGJ5Ci0gICAgdHVybmluZyBvZmYgbWlwbWFwcGluZyAoYnkgY2hvb3NlIGFuIGFwcHJvcHJpYXRl
IG1pbmlmaWNhdGlvbgotICAgIGZpbHRlcikuCi0KLSAgICBTb21lIG9wdGlvbnM6Ci0KLSAgICBB
OiBTcGVjaWZ5IHRoYXQgVGV4U3RvcmFnZSogY2hhbmdlcyB0aGUgZGVmYXVsdCBtaW5pZmljYXRp
b24gZmlsdGVyCi0gICAgZm9yIE9wZW5HTCBFUy4gVGhpcyBtYWtlcyBpdCBhd2t3YXJkIHRvIGFk
ZCBURVhUVVJFX01BWF9MRVZFTAotICAgIHN1cHBvcnQgdG8gT3BlbkdMIEVTIGxhdGVyLCBzaW5j
ZSBzd2l0Y2hpbmcgdG8gbWF0Y2ggR0wgd291bGQgYnJlYWsKLSAgICBjb21wYXRpYmlsaXR5LiBU
aGUgdHdvIG1lY2hhbmlzbXMgYWxzbyBkbyBub3QgZ2l2ZSBpZGVudGljYWwKLSAgICByZXN1bHRz
LCBzaW5jZSB0aGUgbWFnbmlmaWNhdGlvbiB0aHJlc2hvbGQgZGVwZW5kcyBvbiB0aGUKLSAgICBt
aW5pZmljYXRpb24gZmlsdGVyLgotCi0gICAgQjogU3BlY2lmeSB0aGF0IHRoZSB0ZXh0dXJlIGJl
aGF2ZXMgYXMgdGhvdWdoIFRFWFRVUkVfTUFYX0xFVkVMIHdlcmUKLSAgICB6ZXJvLiBUbyBzcGVj
aWZ5IHRoaXMgcHJvcGVybHkgcHJvYmFibHkgcmVxdWlyZXMgZmFpcmx5IGludHJ1c2l2ZQotICAg
IGNoYW5nZXMgdG8gdGhlIE9wZW5HTCBFUyBmdWxsIHNwZWNpZmljYXRpb24gdG8gYWRkIGJhY2sg
YWxsIHRoZQotICAgIGxhbmd1YWdlIHJlbGF0aW5nIHRvIHRoZSBtYXggbGV2ZWwuIEl0IGFsc28g
ZG9lcyBub3Qgc29sdmUgdGhlCi0gICAgc2ltaWxhciBwcm9ibGVtIG9mIHdoYXQgdG8gZG8gd2l0
aCBOUE9UIHRleHR1cmVzOyBhbmQgaXQgbWF5IGhhdmUKLSAgICBoYXJkd2FyZSBpbXBhY3RzIGR1
ZSB0byB0aGUgY2hhbmdlIGluIHRoZSBtaW4vbWFnIGNyb3Nzb3Zlci4KLQotICAgIEM6IFNwZWNp
ZnkgdGhhdCBUZXhTdG9yYWdlKiBjaGFuZ2VzIHRoZSBkZWZhdWx0IG1pbmlmaWNhdGlvbiBmaWx0
ZXIKLSAgICBmb3IgYWxsIGltcGxlbWVudGF0aW9ucyB3aGVuIGEgc2luZ2xlLWxldmVsIHRleHR1
cmUgaXMgc3BlY2lmaWVkLgotICAgIFRoaXMgbWF5IGJlIHNsaWdodGx5IGNvdW50ZXItaW50dWl0
aXZlIHRvIGRlc2t0b3AgR0wgdXNlcnMsIGJ1dCB3aWxsCi0gICAgZ2l2ZSBjb25zaXN0ZW50IGJl
aGF2aW91ciBhY3Jvc3MgdmFyaWFudHMgb2YgR0wgYW5kIGF2b2lkcyBjaGFuZ2luZwotICAgIHRo
ZSBmdW5jdGlvbmFsIGJlaGF2aW91ciBvZiB0aGlzIGV4dGVuc2lvbiBiYXNlZCBvbiB0aGUgcHJl
c2VuY2Ugb3IKLSAgICBhYnNlbmNlIG9mIHNvbWUgb3RoZXIgZmVhdHVyZS4KLQotICAgIEN1cnJl
bnRseSBCIGlzIHNwZWNpZmllZC4gVGhpcyBoYXMgcG90ZW50aWFsIGhhcmR3YXJlIGltcGxpY2F0
aW9ucwotICAgIGZvciBPcGVuR0wgRVMgYmVjYXVzZSBvZiB0aGUgZWZmZWN0IG9mIHRoZSBtaW5p
ZmljYXRpb24gZmlsdGVyIG9uCi0gICAgdGhlIG1pbi9tYWcgY3Jvc3NvdmVyLiBIb3dldmVyLCBD
IGhhcyBwb3RlbnRpYWwgaGFyZHdhcmUgaW1wbGljYXRpb25zCi0gICAgZm9yIE9wZW5HTCBkdWUg
dG8gdGhlIHNlcGFyYXRpb24gb2YgdGV4dHVyZSBhbmQgc2FtcGxlciBzdGF0ZS4KLQotICAgIDE3
LiBIb3cgc2hvdWxkIGNvbXBsZXRlbmVzcyBiZSBmb3JjZWQgd2hlbiBvbmx5IEVTMi1zdHlsZSBO
UE9UIGlzCi0gICAgYXZhaWxhYmxlPwotCi0gICAgUkVTT0xWRUQuIEl0IGlzIG5vdCB3b3J0aCB0
cnlpbmcgdG8gZG8gdGhpcywgaW4gbGlnaHQgb2YgaXNzdWUgMTMuCi0KLSAgICBQcmV2aW91cyBy
ZXZpc2lvbnMgb2YgdGhpcyBleHRlbnNpb24gb3ZlcnJvZGUgdGhlIG1pbmlmaWNhdGlvbgotICAg
IGZpbHRlciBhbmQgd3JhcCBtb2RlcywgYnV0IHRoYXQgaXMgbm8gbG9uZ2VyIHRoZSBjYXNlLiBT
aW5jZQotICAgIE9FU190ZXh0dXJlX25wb3QgcmVtb3ZlcyB0aGUgY2F2ZWF0cyBvbiBOUE9UIHRl
eHR1cmVzIGFueXdheSwgaXQKLSAgICBtaWdodCBub3QgYmUgd29ydGggdHJ5aW5nIHRvICJmaXgi
IHRoaXMuCi0KLSAgICAxOC4gRm9yIE9wZW5HTCBFUywgaG93IGRvIHRoZSBuZXcgc2l6ZWQgaW50
ZXJuYWwgZm9ybWF0cyBpbnRlcmFjdAotICAgIHdpdGggT0VTX3JlcXVpcmVkX2ludGVybmFsX2Zv
cm1hdD8KLQotICAgIFJFU09MVkVELgotCi0gICAgSWYgT0VTX3JlcXVpcmVkX2ludGVybmFsX2Zv
cm1hdCBpcyBub3QgcHJlc2VudCwgdGhlbiB0aGUKLSAgICA8aW50ZXJuYWxmb3JtYXQ+IHBhcmFt
ZXRlciBpcyBpbnRlbmRlZCBtZXJlbHkgdG8gaW5kaWNhdGUgd2hhdCB0aGUKLSAgICBjb3JyZXNw
b25kaW5nIDxmb3JtYXQ+IGFuZCA8dHlwZT4gd291bGQgaGF2ZSBiZWVuLCBoYWQgVGV4SW1hZ2Uq
Ci0gICAgYmVlbiB1c2VkIGluc3RlYWQuIElmIE9FU19yZXF1aXJlZF9pbnRlcm5hbF9mb3JtYXQg
aXMgcHJlc2VudCwgdGhlbgotICAgIGl0IGlzIGludGVuZGVkIHRoYXQgdGhlIDxpbnRlcm5hbGZv
cm1hdD4gd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBpZgotICAgIGl0IGhhZCBiZWVuIHBhc3NlZCBk
aXJlY3RseSB0byBUZXhJbWFnZSouCi0KLSAgICAxOS4gU2hvdWxkIHRoZXJlIGJlIHNvbWUgaGlu
dGluZyBtZWNoYW5pc20gdG8gaW5kaWNhdGUgd2hldGhlciBkYXRhCi0gICAgaXMgY29taW5nIGlt
bWVkaWF0ZWx5IG9yIGxhdGVyPwotCi0gICAgUkVTT0xWRUQuIE5vIHBhcmFtZXRlciBpcyBuZWVk
ZWQuIEFuIGV4dGVuc2lvbiBjYW4gYmUgYWRkZWQgdG8gcHJvdmlkZQotICAgIGEgVGV4UGFyYW1l
dGVyIHZhbHVlIHdoaWNoIGlzIGxhdGNoZWQgYXQgVGV4U3RvcmFnZSB0aW1lLgotCi0gICAgRElT
Q1VTU0lPTjogU29tZSBtZW1iZXJzIGZlbHQgdGhhdCB0aGlzIHdvdWxkIGJlIHVzZWZ1bCBzbyB0
aGF0IHRoZXkKLSAgICBjb3VsZCBkZWZlciBhbGxvY2F0aW9uIHdoZW4gc3VpdGFibGUsIHBhcnRp
Y3VsYXJseSBpZiBoaWdoZXItCi0gICAgcmVzb2x1dGlvbiBpbWFnZXMgd2lsbCBiZSBzdHJlYW1l
ZCBpbiBsYXRlcjsgb3IgdG8gY2hvb3NlIGEgbWVtb3J5Ci0gICAgdHlwZSBvciBsYXlvdXQgYXBw
cm9wcmlhdGUgdG8gdGhlIHVzYWdlLiBIb3dldmVyLCBpbXBsZW1lbnRhdGlvbgotICAgIGV4cGVy
aWVuY2Ugd2l0aCBCdWZmZXJEYXRhIGlzIHRoYXQgZGV2ZWxvcGVycyBmcmVxdWVudGx5IHByb3Zp
ZGUKLSAgICB3cm9uZyB2YWx1ZXMgYW5kIGltcGxlbWVudGF0aW9ucyBoYXZlIHRvIGd1ZXNzIGFu
eXdheS4KLQotICAgIE9uZSBvcHRpb24gc3VnZ2VzdGVkIHdhcyB0aGUgPHVzYWdlPiBwYXJhbWV0
ZXIgY3VycmVudGx5IHBhc3NlZCB0bwotICAgIEJ1ZmZlckRhdGEuIEFub3RoZXIgb3B0aW9uIHdh
cyB0byBzZXQgaXQgd2l0aCBUZXhQYXJhbWV0ZXIuCi0KLSAgICAyMC4gSG93IHNob3VsZCB0aGlz
IGV4dGVuc2lvbiBpbnRlcmFjdCB3aXRoCi0gICAgRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMs
IGVnbEJpbmRUZXhJbWFnZSwgZ2xYQmluZFRleEltYWdlIGFuZAotICAgIHdnbEJpbmRUZXhJbWFn
ZT8KLQotICAgIFJFU09MVkVELiBUaGVzZSBmdW5jdGlvbnMgd2lsbCBub3QgYmUgcGVybWl0dGVk
IGFmdGVyIGdsVGV4U3RvcmFnZSouCi0KLSAgICBTZXZlcmFsIG9wdGlvbnMgYXJlIHBvc3NpYmxl
OgotCi0gICAgQSkgRGlzYWxsb3cgdGhlc2UgZnVuY3Rpb25zLgotICAgIEIpIEFsbG93IHRoZW0s
IGJ1dCBoYXZlIHRoZW0gcmVzZXQgdGhlIFRFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVF9FWFQKLSAg
ICAgICBmbGFnLgotICAgIEMpIEFsbG93IHRoZW0gdW5jb25kaXRpb25hbGx5LgotCi0gICAgQyB3
b3VsZCB2aW9sYXRlIHRoZSBkZXNpZ24gcHJpbmNpcGxlIHRoYXQgdGhlIGRpbWVuc2lvbnMgYW5k
IGZvcm1hdAotICAgIG9mIHRoZSBtaXBtYXAgYXJyYXkgYXJlIGltbXV0YWJsZS4gQiBkb2VzIG5v
dCBzbyBtdWNoIG1vZGlmeSB0aGUKLSAgICBkaW1lbnNpb24gYW5kIGZvcm1hdHMgYXMgcmVwbGFj
ZSB0aGVtIHdpdGggYW4gZW50aXJlbHkgZGlmZmVyZW50Ci0gICAgc2V0LgotCi0gICAgMjEuIFNo
b3VsZCB0aGVyZSBiZSBhIHNpbmdsZSBmdW5jdGlvbiBmb3Igc3BlY2lmeWluZyAxRCwgMkQgYW5k
IDNECi0gICAgdGFyZ2V0cz8KLQotICAgIFJFU09MVkVELiBObywgd2Ugd2lsbCBzdGljayB3aXRo
IGV4aXN0aW5nIHByZWNlZGVudC4KLQotICAgIDIyLiBJcyBpdCBwb3NzaWJsZSB0byB1c2UgR2Vu
ZXJhdGVNaXBtYXAgd2l0aCBhbiBpbmNvbXBsZXRlIG1pcG1hcAotICAgIHB5cmFtaWQ/Ci0KLSAg
ICBSRVNPTFZFRC4gWWVzLCBiZWNhdXNlIHRoZSBlZmZlY3RpdmUgbWF4IGxldmVsIGlzIGxpbWl0
ZWQgdG8gdGhlCi0gICAgbGV2ZWxzIHRoYXQgd2VyZSBzcGVjaWZpZWQsIGFuZCBzbyBHZW5lcmF0
ZU1pcG1hcCBkb2VzIG5vdCBnZW5lcmF0ZQotICAgIGFueSBuZXcgbGV2ZWxzLgotCi0gICAgSG93
ZXZlciwgdG8gbWFrZSBhdXRvbWF0aWMgbWlwbWFwIGdlbmVyYXRpb24gd29yaywgaXQgaXMgbmVj
ZXNzYXJ5Ci0gICAgdG8gcmVkZWZpbmUgcCByYXRoZXIgdGhhbiBxLCBzaW5jZSBhdXRvbWF0aWMg
bWlwbWFwIGdlbmVyYXRpb24KLSAgICBpZ25vcmVzIHRoZSBtYXggbGV2ZWwuCi0KLSAgICAyMy4g
SG93IHNob3VsZCB0aGlzIGV4dGVuc2lvbiBpbnRlcmFjdCB3aXRoCi0gICAgT0VTX2NvbXByZXNz
ZWRfcGFsZXR0ZWRfdGV4dHVyZT8KLQotICAgIFJFU09MVkVELiBQYWxldHRlZCB0ZXh0dXJlcyB3
aWxsIG5vdCBiZSBwZXJtaXR0ZWQsIGFuZCB3aWxsCi0gICAgZ2VuZXJhdGUgSU5WQUxJRF9FTlVN
LgotCi0gICAgRElTQ1VTU0lPTjogT0VTX2NvbXByZXNzZWRfcGFsZXR0ZWRfdGV4dHVyZSBzdXBw
bGllcyBhbGwgdGhlIG1pcG1hcHMKLSAgICBpbiBhIHNpbmdsZSBmdW5jdGlvbiBjYWxsLCB3aXRo
IHRoZSBwYWxldHRlIHNwZWNpZmllZCBvbmNlLiBUaGF0J3MKLSAgICBpbmNvbXBhdGlibGUgd2l0
aCB0aGUgdXBsb2FkIG1vZGVsIGluIHRoaXMgZXh0ZW5zaW9uLgotCi0gICAgMjQuIEhvdyBjYW4g
RVRDMSB0ZXh0dXJlcyBiZSB1c2VkIHdpdGggdGhpcyBleHRlbnNpb24/Ci0KLSAgICBSRVNPTFZF
RC4gQWRkIGxhbmd1YWdlIGluIHRoaXMgZXh0ZW5zaW9uIHRvIGFsbG93IHN1YnJlZ2lvbiB1cGxv
YWRzCi0gICAgZm9yIEVUQzEuCi0KLSAgICBESVNDVVNTSU9OOiBHTF9PRVNfY29tcHJlc3NlZF9F
VEMxX1JHQjhfdGV4dHVyZSBkb2Vzbid0IGFsbG93Ci0gICAgQ29tcHJlc3NlZFRleFN1YkltYWdl
Kiwgc28gaXQgd291bGQgYmUgaW1wb3NzaWJsZSB0byB1c2UgdGhpcwotICAgIGV4dGVuc2lvbiB3
aXRoIEVUQzEuIFRoaXMgaXMgc2VlbiBhcyBhbiBvdmVyc2lnaHQgaW4gdGhlIEVUQzEKLSAgICBl
eHRlbnNpb24uIFdoaWxlIGl0IGNhbm5vdCBiZSBmaXhlZCBpbiB0aGF0IGV4dGVuc2lvbiAoc2lu
Y2UgaXQgaXMKLSAgICBhbHJlYWR5IHNoaXBwaW5nKSwgdGhpcyBleHRlbnNpb24gY2FuIGFkZCB0
aGF0IGNhcGFiaWxpdHkuCi0KLSAgICAyNS4gU2hvdWxkIGFueSBvdGhlciBjb21wcmVzc2VkIGZv
cm1hdHMgYmUgc2ltaWxhcmx5IG1vZGlmaWVkPwotCi0gICAgUkVTT0xWRUQuIFllcywgQU1EX2Nv
bXByZXNzZWRfQVRDX3RleHR1cmUgYW5kCi0gICAgQU1EX2NvbXByZXNzZWRfM0RDX3RleHR1cmUg
Y2FuIGJlIG1vZGlmaWVkIHNpbWlsYXJseSB0byBFVEMxCi0gICAgKE1hdXJpY2UgUmliYmxlIGlu
ZGljYXRlZCB0aGF0IGJvdGggZm9ybWF0cyB1c2UgNHg0IGJsb2NrcykuIERlc2t0b3AKLSAgICBP
cGVuR0wgcmVxdWlyZXMgdGhhdCB3aG9sZS1pbWFnZSByZXBsYWNlbWVudCBpcyBzdXBwb3J0ZWQg
Zm9yIGFueQotICAgIGNvbXByZXNzZWQgdGV4dHVyZSBmb3JtYXQsIGFuZCB0aGUgT3BlbkdMIEVT
IGV4dGVuc2lvbnMKLSAgICBFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIGFuZCBJTUdfdGV4
dHVyZV9jb21wcmVzc2lvbl9wdnJ0YwotICAgIGFscmVhZHkgYWxsb3cgd2hvbGUtaW1hZ2UgcmVw
bGFjZW1lbnQsIHNvIGl0IGlzIG5vdCBuZWNlc3NhcnkgdG8KLSAgICBtb2RpZnkgdGhlbSB0byBi
ZSB1c2VkIHdpdGggdGhpcyBleHRlbnNpb24uCi0KLSAgICAyNi4gU2hvdWxkIHRoZXNlIGNvbW1h
bmRzIGJlIHBlcm1pdHRlZCBpbiBkaXNwbGF5IGxpc3RzPwotCi0gICAgUkVTT0xWRUQuIE5vLgot
Ci0gICAgRElTQ1VTU0lPTjogRGlzcGxheSBsaXN0cyBhcmUgbW9zdCB1c2VmdWwgZm9yIHJlcGVh
dGluZyBjb21tYW5kcywKLSAgICBhbmQgVGV4U3RvcmFnZSogY29tbWFuZHMgY2Fubm90IGJlIHJl
cGVhdGVkIGJlY2F1c2UgdGhlIGZpcnN0IGNhbGwKLSAgICBtYWtlcyB0aGUgZm9ybWF0IGltbXV0
YWJsZS4KLQotICAgIDI3LiBTaG91bGQgdGhlc2UgY29tbWFuZHMgYWNjZXB0IHVuc2l6ZWQgaW50
ZXJuYWwgZm9ybWF0cz8KLQotICAgIFJFU09MVkVEOiBObywgZm9yIGJvdGggT3BlbkdMIGFuZCBP
cGVuR0wgRVMuCi0KLSAgICBESVNDVVNTSU9OOiBub3JtYWxseSB0aGUgPHR5cGU+IHBhcmFtZXRl
ciB0byBUZXhJbWFnZSogY2FuIHNlcnZlIGFzCi0gICAgYSBoaW50IHRvIHNlbGVjdCBhIHNpemVk
IGZvcm1hdCAoYW5kIGluIE9wZW5HTCBFUywgdGhpcyBpcyB0aGUgb25seQotICAgIG1lY2hhbmlz
bSBhdmFpbGFibGUpOyBzaW5jZSBUZXhTdG9yYWdlKiBkb2VzIG5vdCBoYXZlIGEgPHR5cGU+Ci0g
ICAgcGFyYW1ldGVyLCB0aGUgaW1wbGVtZW50YXRpb24gaGFzIG5vIGluZm9ybWF0aW9uIG9uIHdo
aWNoIHRvIGJhc2UgYQotICAgIGRlY2lzaW9uLgotCi1SZXZpc2lvbiBIaXN0b3J5Ci0KLSAgICBS
ZXZpc2lvbiAyNCwgMjAxMS8xMS8xMSAoZGdrb2NoKQotICAgICAgLSBNYXJrIGNvbXBsZXRlLiBD
bGFyaWZ5IEVTIGNsYXJpZmljYXRpb25zLgotCi0gICAgUmV2aXNpb24gMjMsIDIwMTEvMTEvMTAg
KGRna29jaCkKLSAgICAgIC0gQWRkIEdMRVMgY2xhcmlmY2F0aW9ucyBhbmQgaW50ZXJhY3Rpb25z
IHdpdGggbW9yZSBHTEVTIGV4dGVuc2lvbnMKLQotICAgIFJldmlzaW9uIDIyLCAyMDExLzExLzEw
IChibWVycnkpCi0gICAgICAtIFVwZGF0ZSBteSBjb250YWN0IGRldGFpbHMKLQotICAgIFJldmlz
aW9uIDIxLCAyMDExLzA3LzI1IChibWVycnkpCi0gICAgICAtIFJlbW92ZSBkYW5nbGluZyByZWZl
cmVuY2VzIHRvIE11bHRpVGV4U3RvcmFnZSBpbiBFcnJvcnMgc2VjdGlvbgotCi0gICAgUmV2aXNp
b24gMjAsIDIwMTEvMDcvMjEgKGJtZXJyeSkKLSAgICAgIC0gUmVtb3ZlIGRhbmdsaW5nIHJlZmVy
ZW5jZSB0byA8c2FtcGxlcz4gaW4gRXJyb3JzIHNlY3Rpb24KLQotICAgIFJldmlzaW9uIDE5LCAy
MDExLzA1LzAyIChKb24gTGVlY2gpCi0gICAgICAtIEFzc2lnbiBlbnVtIHZhbHVlCi0KLSAgICBS
ZXZpc2lvbiAxOCwgMjAxMS8wMS8yNCAoYm1lcnJ5KQotICAgICAgLSBEaXNhbGxvdyB1bnNpemVk
IGludGVybmFsIGZvcm1hdHMgKG92ZXJzaWdodCBpbiByZXZpc2lvbiAxNykuCi0KLSAgICBSZXZp
c2lvbiAxNywgMjAxMS8wMS8yNCAoYm1lcnJ5KQotICAgICAgLSBBZGRlZCBhbmQgcmVzb2x2ZWQg
aXNzdWUgMjYuCi0gICAgICAtIFNwbGl0IGlzc3VlIDI3IG91dCBmcm9tIGlzc3VlIDE1LgotICAg
ICAgLSBEaXNhbGxvdyBUZXhTdG9yYWdlKiBpbiBkaXNwbGF5IGxpc3RzLgotICAgICAgLSBVc2Ug
dGhlIHRlcm0gImltbXV0YWJsZS1mb3JtYXQiIGNvbnNpc3RlbnRseSAoYnVnIDcyODEpLgotCi0g
ICAgUmV2aXNpb24gMTYsIDIwMTAvMTEvMjMgKGJtZXJyeSkKLSAgICAgIC0gRGlzYWxsb3dlZCBU
ZXhTdG9yYWdlIG9uIGFuIGltbXV0YWJsZS1mb3JtYXQgdGV4dHVyZQotICAgICAgICAocmVzb2x2
ZXMgaXNzdWUgNSkuCi0gICAgICAtIERlbGV0ZWQgTXVsdGlUZXhTdG9yYWdlKiBjb21tYW5kcyAo
b3RoZXIgRFNBIGZ1bmN0aW9ucyBzdGlsbAotICAgICAgICB1bnJlc29sdmVkKS4KLSAgICAgIC0g
U29tZSBtaW5vciB3b3JkaW5nIGNoYW5nZXMgc3VnZ2VzdGVkIGJ5IFBhdCBCcm93biAoYnVnIDcw
MDIpLgotCi0gICAgUmV2aXNpb24gMTUsIDIwMTAvMTEvMDkgKGJtZXJyeSkKLSAgICAgIC0gUmVv
cGVuZWQgaXNzdWUgNS4KLSAgICAgIC0gUmVvcGVuZWQgaXNzdWUgMTQsIHBlbmRpbmcgc3RhYmls
aXNhdGlvbiBvZgotICAgICAgICBBUkJfZGlyZWN0X3N0YXRlX2FjY2Vzcy4KLSAgICAgIC0gTWFy
a2VkIGlzc3VlIDkgcmVzb2x2ZWQsIHBlbmRpbmcgYW55IG9iamVjdGlvbnMuCi0gICAgICAtIEZp
eCByZWZlcmVuY2VzIHRvIG5vIG9iamVjdCBiZWluZyBib3VuZCAod2FzIG1lYW50IHRvIHJlZmVy
IHRvCi0gICAgICAgIHRoZSBkZWZhdWx0IG9iamVjdCkuCi0gICAgICAtIEFkZGluZyBtaXNzaW5n
IHBzZXVkb2NvZGUgZm9yIFRFWFRVUkVfMURfQVJSQVkuCi0gICAgICAtIENvcnJlY3RlZCBURVhU
VVJFXzJEX0FSUkFZIC0+IFRFWFRVUkVfMURfQVJSQVkgaW4gZXJyb3IgY2hlY2tzLgotICAgICAg
LSBDaGFuZ2VkICJsZXZlbHMuLi4gYXJlIHJlbW92ZWQiIHRvICJsZXZlbHMuLi4gYXJlIHJlc2V0
IHRvIHRoZWlyCi0gICAgICAgIGluaXQgc3RhdGUiLCBzaW5jZSBkZXNrdG9wIEdMIGhhcyBwZXIt
bGV2ZWwgc3RhdGUgYXBhcnQgZnJvbSB0aGUKLSAgICAgICAgdGV4ZWxzLgotICAgICAgLSBNaXNj
ZWxsYW5lb3VzIHdvcmRpbmcgZml4ZXMuCi0KLSAgICBSZXZpc2lvbiAxNCwgMjAxMC8wOS8yNSAo
Ym1lcnJ5KQotICAgICAgLSBBZGQgaXNzdWVzIDI0LTI1IGFuZCBhbHRlcmF0aW9ucyB0bwotICAg
ICAgICBPRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZSwgQU1EX2NvbXByZXNzZWRfQVRD
X3RleHR1cmUgYW5kCi0gICAgICAgIEFNRF9jb21wcmVzc2VkXzNEQ190ZXh0dXJlLgotCi0gICAg
UmV2aXNpb24gMTMsIDIwMTAvMDkvMTkgKGJtZXJyeSkKLSAgICAgIC0gVHdvIHR5cG8gZml4ZXMg
ZnJvbSBEYW5pZWwgS29jaAotCi0gICAgUmV2aXNpb24gMTIsIDIwMTAvMDkvMTggKGJtZXJyeSkK
LSAgICAgIC0gQ2hhbmdlZCByZXNvbHV0aW9uIHRvIGlzc3VlIDIwCi0gICAgICAtIEFkZGVkIGFu
ZCByZXNvbHZlZCBpc3N1ZSAyMwotICAgICAgLSBBZGRlZCBleHBsYW5hdGlvbiBvZiBob3cgdG8g
dXBsb2FkIGRhdGEgKGluIG92ZXJ2aWV3KQotICAgICAgLSBBZGRlZCBzcGVjIGxhbmd1YWdlIHRv
IGltcGxlbWVudCByZXNvbHV0aW9uIHRvIGlzc3VlIDE1Ci0KLSAgICBSZXZpc2lvbiAxMSwgMjAx
MC8wNy8yMSAoYm1lcnJ5KQotICAgICAgLSBSZXNvbHZlZCBpc3N1ZSAxNgotICAgICAgLSBSZW9w
ZW4gaXNzdWUgMjAKLSAgICAgIC0gRml4IHNvbWUgdHlwb3MKLQotICAgIFJldmlzaW9uIDEwLCAy
MDEwLzA3LzE1IChibWVycnkpCi0gICAgICAtIFVwZGF0ZSBzb21lIGlzc3VlcyB0byBtYXRjaCBj
b3JlIHRleHQKLSAgICAgIC0gUmVzb2x2ZWQgaXNzdWUgMTcKLQotICAgIFJldmlzaW9uIDksIDIw
MTAvMDUvMjQgKGJtZXJyeSkKLSAgICAgIC0gTWFya2VkIGlzc3VlIDIgYXMgcmVzb2x2ZWQKLSAg
ICAgIC0gUmVzb2x2ZWQgaXNzdWUgMTkgKGFzIG5vIGNoYW5nZSkKLSAgICAgIC0gUmVzb2x2ZWQg
aXNzdWUgMjAKLSAgICAgIC0gQWRkIGlzc3VlcyAyMS0yMgotICAgICAgLSBBZGQgaW4gc3BlYyBs
YW5ndWFnZSB0byBmb3JiaWQgdXNlIG9uIGRlZmF1bHQgdGV4dHVyZXMKLSAgICAgIC0gUmVkZWZp
bmUgbGV2ZWxfYmFzZSwgbGV2ZWxfbWF4IHRvIGJlIGNsYW1wZWQgZm9ybXMgb2YKLSAgICAgICAg
VEVYVFVSRV9CQVNFX0xFVkVML1RFWFRVUkVfTUFYX0xFVkVMIHdoZW4gdXNpbmcgaW1tdXRhYmxl
Ci0gICAgICAgIHRleHR1cmVzCi0gICAgICAtIFJlZGVmaW5lIHAgdG8gYWxzbyBiZSBjbGFtcGVk
IHRvIHRoZSBwcm92aWRlZCBsZXZlbHMgZm9yCi0gICAgICAgIGltbXV0YWJsZSB0ZXh0dXJlcywg
dG8gc3VwcG9ydCBhdXRvbWF0aWMgbWlwbWFwIGdlbmVyYXRpb24KLSAgICAgIC0gUmVtb3ZlZCBt
dWx0aXNhbXBsZSBmdW5jdGlvbnMKLSAgICAgIC0gUmVtb3ZlZCBsYW5ndWFnZSBzdGF0aW5nIHRo
YXQgdGV4dHVyZSBwYXJhbWV0ZXJzIHdlcmUgcmVzZXQgdG8KLSAgICAgICAgZGVmYXVsdHMKLQot
ICAgIFJldmlzaW9uIDgsIDIwMTAvMDUvMTggKGJtZXJyeSkKLSAgICAgIC0gQWRkZWQgaXNzdWUg
YWJvdXQgRUdMaW1hZ2UKLSAgICAgIC0gTWFya2VkIGlzc3VlIDE0IGFzIHJlc29sdmVkCi0KLSAg
ICBSZXZpc2lvbiA3LCAyMDEwLzA1LzA0IChibWVycnkpCi0gICAgICAtIFJlbW92ZWQgc29tZSBs
aW5nZXJpbmcgPGZvcm1hdD4sIDx0eXBlPiBwYXJhbWV0ZXJzIHRvIHRoZSBuZXcKLSAgICAgICAg
ZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkIGluIHJldmlzaW9uIDQKLSAg
ICAgIC0gVHJpdmlhbCB0eXBvIGZpeGVzCi0KLSAgICBSZXZpc2lvbiA2LCAyMDEwLzAyLzE4IChi
bWVycnkpCi0gICAgICAtIFJlc29sdmVkIGlzc3VlcyA1LCA2IGFuZCAxOAotICAgICAgLSBBZGRl
ZCBNdWx0aVRleFN0b3JhZ2UqIGZ1bmN0aW9ucyBmb3IgRFNBIGludGVyYWN0aW9uCi0gICAgICAt
IEFkZGVkIGVycm9yIGZvciB0ZXh0dXJlLXRhcmdldCBtaXNtYXRjaCBpbiBEU0EKLSAgICAgIC0g
QWxsb3dlZCBUZXhTdG9yYWdlKiB0byBiZSBjYWxsZWQgYWdhaW4KLQotICAgIFJldmlzaW9uIDUs
IDIwMTAvMDEvMjUgKGJtZXJyeSkKLSAgICAgIC0gQWRkZWQgdG8gY29udHJpYnV0b3JzIGxpc3QK
LSAgICAgIC0gUmVxdWlyZSBPcGVuR0wgMS4yLCB0byBzaW1wbGlmeSBpbnRlcmFjdGlvbnMgd2l0
aAotICAgICAgICBURVhUVVJFX0JBU0VfTEVWRUwvVEVYVFVSRV9NQVhfTEVWRUwgYW5kIENMQU1Q
X1RPX0VER0UKLSAgICAgIC0gQ2hhbmdlIGRlZmF1bHQgd3JhcCBtb2RlcyB0byBhbHdheXMgYmUg
Q0xBTVBfVE9fRURHRQotICAgICAgLSBDaGFuZ2UgZGVmYXVsdCBmaWx0ZXJzIHRvIGFsd2F5cyBi
ZSBORUFSRVNUCi0gICAgICAtIE1vdmVkIGxhbmd1YWdlIGFib3V0IGdlbmVyYXRpbmcgbmV3IGxl
dmVscyBpbnRvIGFuIGludGVyYWN0aW9uLAotICAgICAgICBzaW5jZSBpdCBjYW4gb25seSBoYXBw
ZW4gb24gT3BlbkdMIEVTCi0gICAgICAtIEFkZGVkIGludGVyYWN0aW9uIHdpdGggRVhUX2RpcmVj
dF9zdGF0ZV9hY2Nlc3MKLSAgICAgIC0gQWRkZWQgZXh0cmEgPGludGVybmFsZm9ybWF0cz4gZm9y
IEdMIEVTIHdoZW4gT0VTX2RlcHRoX3RleHR1cmUsCi0gICAgICAgIE9FU19wYWNrZWRfZGVwdGhf
c3RlbmNpbCBhbmQgRVhUX3RleHR1cmVfdHlwZV8yXzEwXzEwXzEwX1JFViBhcmUKLSAgICAgICAg
cHJlc2VudC4KLSAgICAgIC0gTWlub3Igbm9uLWZ1bmN0aW9uYWwgd29yZGluZyBmaXhlcyBhbmQg
dHlwb3MKLSAgICAgIC0gUmVzb2x2ZWQgaXNzdWUgMTYKLSAgICAgIC0gQWRkZWQgaXNzdWVzIDE3
LTE5Ci0KLSAgICBSZXZpc2lvbiA0LCAyMDEwLzAxLzEzIChibWVycnkpCi0gICAgICAtIENoYW5n
ZWQgc3VmZml4IGZyb20gQVJNIHRvIEVYVAotICAgICAgLSBBZGRlZCBsaXN0IG9mIGNvbnRyaWJ1
dG9ycwotICAgICAgLSBBZGRlZCBsYW5ndWFnZSB0byBmb3JjZSB0aGUgdGV4dHVyZSB0byBhbHdh
eXMgYmUgY29tcGxldGUKLSAgICAgIC0gUmVtb3ZlZCA8Zm9ybWF0PiBhbmQgPHR5cGU+IGFyZ3Vt
ZW50cwotICAgICAgLSBBZGRlZCBpc3N1ZXMgMTQtMTYKLSAgICAgIC0gUmVvcGVuZWQgaXNzdWUg
MgotICAgICAgLSBSZWZvcm1hdHRlZCBpc3N1ZXMgdG8gc2VwYXJhdGUgcmVzb2x1dGlvbiBhbmQg
ZGlzY3Vzc2lvbgotICAgICAgLSBSZXNvbHZlZCBpc3N1ZXMgMSwgOSBhbmQgMTEtMTMKLSAgICAg
IC0gRml4ZWQgdGhlIG1heCBudW1iZXIgb2YgbGV2ZWxzIGluIGEgY3ViZSBtYXAgYXJyYXkKLQot
ICAgIFJldmlzaW9uIDMsIDIwMDkvMTIvMTcgKGJtZXJyeSkKLSAgICAgIC0gQWRkZWQgbWlzc2lu
ZyB2ZW5kb3Igc3VmZml4IHRvIFRFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVF9BUk0KLSAgICAgIC0g
UmV3cml0dGVuIHRvIGFnYWluc3QgZGVza3RvcCBPcGVuR0wKLSAgICAgIC0gQWRkZWQgcHJvdG90
eXBlcyBmb3IgMUQgYW5kIG11bHRpc2FtcGxlIHN0b3JhZ2UgZnVuY3Rpb25zCi0gICAgICAtIEFk
ZGVkIGlzc3VlcyA4LTEzCi0KLSAgICBSZXZpc2lvbiAyLCAyMDA5LzA4LzIwIChibWVycnkpCi0g
ICAgICAtIFJlc29sdmVkIGlzc3VlIDIgKG5vIGJvcmRlciBwYXJhbWV0ZXIpCi0gICAgICAtIFJl
c29sdmVkIGlzc3VlIDQgKG1ldGFkYXRhIGJlY29tZXMgaW1tdXRhYmxlKQotICAgICAgLSBBZGRl
ZCBpbnRlcmFjdGlvbiB3aXRoIE9FU190ZXh0dXJlX2N1YmVfbWFwCi0gICAgICAtIEFkZGVkIGVy
cm9yIGlmIHdpZHRoICE9IGhlaWdodCBpbiBhIGN1YmUgbWFwCi0gICAgICAtIEFkZGVkIGlzc3Vl
cyA1LTcKLQotICAgIFJldmlzaW9uIDEsIDIwMDkvMDUvMDYgKGJtZXJyeSkKLSAgICAgIC0gRmly
c3QgZHJhZnQKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2dlbmVyYXRlX3dpbnJ0X3By
b2plY3RzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2dlbmVyYXRl
X3dpbnJ0X3Byb2plY3RzLnB5CShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9nZW5lcmF0ZV93aW5ydF9wcm9qZWN0cy5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDQx
ICswLDAgQEAKLSMgQ29weXJpZ2h0IChjKSAyMDEzLTIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotIyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgotCi0jIFRoaXMgc2NyaXB0IGdlbmVyYXRlcyB2aXN1YWwgc3R1ZGlv
IHByb2plY3RzIHRoYXQgY2FuIGJlIHVzZWQgb24gV2luUlQKLQotaW1wb3J0IG9zCi1pbXBvcnQg
c3lzCi0KLXNjcmlwdF9kaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9f
KSwgJ2J1aWxkJykKLWFuZ2xlX2RpciA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKHNj
cmlwdF9kaXIsIG9zLnBhcmRpcikpCi1neXBfZGlyID0gb3MucGF0aC5qb2luKGFuZ2xlX2Rpciwg
J3RoaXJkX3BhcnR5JywgJ2d5cCcpCi0KLWd5cF9nZW5lcmF0b3JzID0gIm1zdnMiCi1tc3ZzX3Zl
cnNpb24gPSAiMjAxM2UiCi0KLWRlZiBnZW5lcmF0ZVByb2plY3RzKGdlbmVyYXRpb25fZGlyLCBi
dWlsZF93aW5waG9uZSk6Ci0gICAgZ3lwX2NtZCA9IG9zLnBhdGguam9pbihneXBfZGlyLCAnZ3lw
JykKLSAgICBneXBfY21kICs9ICcgLS1pZ25vcmUtZW52aXJvbm1lbnQnCi0gICAgZ3lwX2NtZCAr
PSAnIC0tZGVwdGg9LicKLSAgICBneXBfY21kICs9ICcgLS1pbmNsdWRlPScgKyBvcy5wYXRoLmpv
aW4oc2NyaXB0X2RpciwgJ2NvbW1vbi5neXBpJykKLSAgICBneXBfY21kICs9ICcgLS1nZW5lcmF0
b3Itb3V0cHV0PScgKyBnZW5lcmF0aW9uX2RpcgotICAgIGd5cF9jbWQgKz0gJyAtLWZvcm1hdD0n
ICsgZ3lwX2dlbmVyYXRvcnMKLSAgICBneXBfY21kICs9ICcgLUcgbXN2c192ZXJzaW9uPScgKyBt
c3ZzX3ZlcnNpb24KLSAgICBneXBfY21kICs9ICcgLUQgYW5nbGVfdXNlX2NvbW1pdF9pZD0wJwot
ICAgIGd5cF9jbWQgKz0gJyAtRCBhbmdsZV9idWlsZF93aW5ydD0xJwotICAgIGd5cF9jbWQgKz0g
JyAtRCBhbmdsZV9idWlsZF93aW5waG9uZT0nICsgKCcxJyBpZiBidWlsZF93aW5waG9uZSBlbHNl
ICcwJykKLSAgICBneXBfY21kICs9ICcgLUQgYW5nbGVfZW5hYmxlX2QzZDk9MCcKLSAgICBneXBf
Y21kICs9ICcgLUQgYW5nbGVfZW5hYmxlX2dsPTAnCi0gICAgZ3lwX2NtZCArPSAnIC1EIGFuZ2xl
X3N0YW5kYWxvbmU9MScKLSAgICBneXBfY21kICs9ICcgJyArIG9zLnBhdGguam9pbihzY3JpcHRf
ZGlyLCAnYW5nbGUuZ3lwJykKLQotICAgIHByaW50ICdHZW5lcmF0aW5nIHByb2plY3RzIHRvICcg
KyBnZW5lcmF0aW9uX2RpciArICcgZnJvbSBneXAgZmlsZXMuLi4nCi0gICAgcHJpbnQgZ3lwX2Nt
ZAotICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgIG9zLnN5c3RlbShneXBfY21kKQotCi1pZiBf
X25hbWVfXyA9PSAnX19tYWluX18nOgotICAgICMgR2VuZXJhdGUgV2luZG93cyA4LjEgcHJvamVj
dHMKLSAgICBnZW5lcmF0ZVByb2plY3RzKCJ3aW5ydC84LjEvd2luZG93cyIsIEZhbHNlKTsKLSAg
ICBnZW5lcmF0ZVByb2plY3RzKCJ3aW5ydC84LjEvd2luZG93c3Bob25lIiwgVHJ1ZSk7ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5H
TEUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDc4
MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNCwxMyArMTQsNiBAQAogCQkzMTAxMkUxNjE4Qjk3
QjlCMDAzOTA2MkYgLyogQ29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMTAxMkRBNDE4Qjk3QjlCMDAzOTA2MkYgLyogQ29tbW9uLmggKi87IH07
CiAJCTMxMDEyRTE3MThCOTdCOUIwMDM5MDYyRiAvKiBDb21waWxlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAxMkRBNTE4Qjk3QjlCMDAzOTA2
MkYgLyogQ29tcGlsZXIuY3BwICovOyB9OwogCQkzMTAxMkUxQTE4Qjk3QjlCMDAzOTA2MkYgLyog
Q29uc3RhbnRVbmlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzEwMTJEQTgxOEI5N0I5QjAwMzkwNjJGIC8qIENvbnN0YW50VW5pb24uaCAqLzsgfTsK
LQkJMzEwMTJFMUIxOEI5N0I5QjAwMzkwNjJGIC8qIERlcGVuZGVuY3lHcmFwaC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAxMkRBQTE4Qjk3QjlC
MDAzOTA2MkYgLyogRGVwZW5kZW5jeUdyYXBoLmNwcCAqLzsgfTsKLQkJMzEwMTJFMUMxOEI5N0I5
QjAwMzkwNjJGIC8qIERlcGVuZGVuY3lHcmFwaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwMTJEQUIxOEI5N0I5QjAwMzkwNjJGIC8qIERlcGVuZGVu
Y3lHcmFwaC5oICovOyB9OwotCQkzMTAxMkUxRDE4Qjk3QjlCMDAzOTA2MkYgLyogRGVwZW5kZW5j
eUdyYXBoQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMTAxMkRBQzE4Qjk3QjlCMDAzOTA2MkYgLyogRGVwZW5kZW5jeUdyYXBoQnVpbGRl
ci5jcHAgKi87IH07Ci0JCTMxMDEyRTFFMThCOTdCOUIwMDM5MDYyRiAvKiBEZXBlbmRlbmN5R3Jh
cGhCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMTAxMkRBRDE4Qjk3QjlCMDAzOTA2MkYgLyogRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5oICov
OyB9OwotCQkzMTAxMkUxRjE4Qjk3QjlCMDAzOTA2MkYgLyogRGVwZW5kZW5jeUdyYXBoT3V0cHV0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDEy
REFFMThCOTdCOUIwMDM5MDYyRiAvKiBEZXBlbmRlbmN5R3JhcGhPdXRwdXQuY3BwICovOyB9Owot
CQkzMTAxMkUyMDE4Qjk3QjlCMDAzOTA2MkYgLyogRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAxMkRBRjE4Qjk3
QjlCMDAzOTA2MkYgLyogRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmggKi87IH07Ci0JCTMxMDEyRTIx
MThCOTdCOUIwMDM5MDYyRiAvKiBEZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAxMkRCMDE4Qjk3QjlCMDAz
OTA2MkYgLyogRGVwZW5kZW5jeUdyYXBoVHJhdmVyc2UuY3BwICovOyB9OwogCQkzMTAxMkUyNjE4
Qjk3QjlCMDAzOTA2MkYgLyogRGlhZ25vc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwMTJEQjUxOEI5N0I5QjAwMzkwNjJGIC8qIERpYWdu
b3N0aWNzLmNwcCAqLzsgfTsKIAkJMzEwMTJFMjcxOEI5N0I5QjAwMzkwNjJGIC8qIERpYWdub3N0
aWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAx
MkRCNjE4Qjk3QjlCMDAzOTA2MkYgLyogRGlhZ25vc3RpY3MuaCAqLzsgfTsKIAkJMzEwMTJFMjgx
OEI5N0I5QjAwMzkwNjJGIC8qIERpcmVjdGl2ZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwMTJEQjcxOEI5N0I5QjAwMzkwNjJGIC8q
IERpcmVjdGl2ZUhhbmRsZXIuY3BwICovOyB9OwpAQCAtNjIsOCArNTUsNiBAQAogCQkzMTAxMkU1
NjE4Qjk3QjlCMDAzOTA2MkYgLyogUG9vbEFsbG9jLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDEyREU2MThCOTdCOUIwMDM5MDYyRiAvKiBQb29s
QWxsb2MuY3BwICovOyB9OwogCQkzMTAxMkU1NzE4Qjk3QjlCMDAzOTA2MkYgLyogUG9vbEFsbG9j
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAxMkRF
NzE4Qjk3QjlCMDAzOTA2MkYgLyogUG9vbEFsbG9jLmggKi87IH07CiAJCTMxMDEyRTU4MThCOTdC
OUIwMDM5MDYyRiAvKiBQcmFnbWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMxMDEyREU4MThCOTdCOUIwMDM5MDYyRiAvKiBQcmFnbWEuaCAqLzsgfTsK
LQkJMzEwMTJFNUExOEI5N0I5QjAwMzkwNjJGIC8qIFF1YWxpZmllckFsaXZlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAxMkRFQTE4Qjk3QjlCMDAz
OTA2MkYgLyogUXVhbGlmaWVyQWxpdmUuaCAqLzsgfTsKLQkJMzEwMTJFNUQxOEI5N0I5QjAwMzkw
NjJGIC8qIFJlbmFtZUZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMTAxMkRFRDE4Qjk3QjlCMDAzOTA2MkYgLyogUmVuYW1lRnVuY3Rpb24u
aCAqLzsgfTsKIAkJMzEwMTJFNUUxOEI5N0I5QjAwMzkwNjJGIC8qIFJld3JpdGVFbHNlQmxvY2tz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDEy
REVFMThCOTdCOUIwMDM5MDYyRiAvKiBSZXdyaXRlRWxzZUJsb2Nrcy5jcHAgKi87IH07CiAJCTMx
MDEyRTVGMThCOTdCOUIwMDM5MDYyRiAvKiBSZXdyaXRlRWxzZUJsb2Nrcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwMTJERUYxOEI5N0I5QjAwMzkw
NjJGIC8qIFJld3JpdGVFbHNlQmxvY2tzLmggKi87IH07CiAJCTMxMDEyRTYwMThCOTdCOUIwMDM5
MDYyRiAvKiBTZWFyY2hTeW1ib2wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzEwMTJERjAxOEI5N0I5QjAwMzkwNjJGIC8qIFNlYXJjaFN5bWJvbC5j
cHAgKi87IH07CkBAIC03MSwxMCArNjIsNiBAQAogCQkzMTAxMkU2MjE4Qjk3QjlCMDAzOTA2MkYg
LyogU2hhZGVyTGFuZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMTAxMkRGMjE4Qjk3QjlCMDAzOTA2MkYgLyogU2hhZGVyTGFuZy5jcHAgKi87IH07
CiAJCTMxMDEyRTY0MThCOTdCOUIwMDM5MDYyRiAvKiBTeW1ib2xUYWJsZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAxMkRGNDE4Qjk3QjlCMDAz
OTA2MkYgLyogU3ltYm9sVGFibGUuY3BwICovOyB9OwogCQkzMTAxMkU2NTE4Qjk3QjlCMDAzOTA2
MkYgLyogU3ltYm9sVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxMDEyREY1MThCOTdCOUIwMDM5MDYyRiAvKiBTeW1ib2xUYWJsZS5oICovOyB9
OwotCQkzMTAxMkU2NjE4Qjk3QjlCMDAzOTA2MkYgLyogUmVzdHJpY3RGcmFnbWVudFNoYWRlclRp
bWluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MTAxMkRGNzE4Qjk3QjlCMDAzOTA2MkYgLyogUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZy5j
cHAgKi87IH07Ci0JCTMxMDEyRTY3MThCOTdCOUIwMDM5MDYyRiAvKiBSZXN0cmljdEZyYWdtZW50
U2hhZGVyVGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMTAxMkRGODE4Qjk3QjlCMDAzOTA2MkYgLyogUmVzdHJpY3RGcmFnbWVudFNoYWRlclRp
bWluZy5oICovOyB9OwotCQkzMTAxMkU2ODE4Qjk3QjlCMDAzOTA2MkYgLyogUmVzdHJpY3RWZXJ0
ZXhTaGFkZXJUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzEwMTJERjkxOEI5N0I5QjAwMzkwNjJGIC8qIFJlc3RyaWN0VmVydGV4U2hhZGVy
VGltaW5nLmNwcCAqLzsgfTsKLQkJMzEwMTJFNjkxOEI5N0I5QjAwMzkwNjJGIC8qIFJlc3RyaWN0
VmVydGV4U2hhZGVyVGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMTAxMkRGQTE4Qjk3QjlCMDAzOTA2MkYgLyogUmVzdHJpY3RWZXJ0ZXhTaGFk
ZXJUaW1pbmcuaCAqLzsgfTsKIAkJMzEwMTJFNkExOEI5N0I5QjAwMzkwNjJGIC8qIFRyYW5zbGF0
b3JFU1NMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDMxMDEyREZCMThCOTdCOUIwMDM5MDYyRiAvKiBUcmFuc2xhdG9yRVNTTC5jcHAgKi87IH07CiAJ
CTMxMDEyRTZCMThCOTdCOUIwMDM5MDYyRiAvKiBUcmFuc2xhdG9yRVNTTC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwMTJERkMxOEI5N0I5QjAwMzkw
NjJGIC8qIFRyYW5zbGF0b3JFU1NMLmggKi87IH07CiAJCTMxMDEyRTZDMThCOTdCOUIwMDM5MDYy
RiAvKiBUcmFuc2xhdG9yR0xTTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMTAxMkRGRDE4Qjk3QjlCMDAzOTA2MkYgLyogVHJhbnNsYXRvckdMU0wu
Y3BwICovOyB9OwpAQCAtMTU3LDggKzE0NCw2IEBACiAJCTVDMURCREUxMUIwNDM4RDMwMDIzNTU1
MiAvKiBDb25zdGFudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDMURCQzU2MUIwNDM4RDIwMDIzNTU1MiAvKiBDb25zdGFudHMuaCAqLzsgfTsKIAkJ
NUMxREJERTIxQjA0MzhEMzAwMjM1NTUyIC8qIENvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxREJDNTcxQjA0MzhEMjAwMjM1NTUyIC8q
IENvbnRleHQuY3BwICovOyB9OwogCQk1QzFEQkRFMzFCMDQzOEQzMDAyMzU1NTIgLyogQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxREJD
NTgxQjA0MzhEMjAwMjM1NTUyIC8qIENvbnRleHQuaCAqLzsgfTsKLQkJNUMxREJERTQxQjA0MzhE
MzAwMjM1NTUyIC8qIERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUMxREJDNTkxQjA0MzhEMjAwMjM1NTUyIC8qIERhdGEuY3BwICovOyB9Owot
CQk1QzFEQkRFNTFCMDQzOEQzMDAyMzU1NTIgLyogRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxREJDNUExQjA0MzhEMjAwMjM1NTUyIC8qIERh
dGEuaCAqLzsgfTsKIAkJNUMxREJERTYxQjA0MzhEMzAwMjM1NTUyIC8qIERldmljZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzFEQkM1QjFCMDQz
OEQyMDAyMzU1NTIgLyogRGV2aWNlLmNwcCAqLzsgfTsKIAkJNUMxREJERTcxQjA0MzhEMzAwMjM1
NTUyIC8qIERldmljZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUMxREJDNUMxQjA0MzhEMjAwMjM1NTUyIC8qIERldmljZS5oICovOyB9OwogCQk1QzFE
QkRFODFCMDQzOEQzMDAyMzU1NTIgLyogRGlzcGxheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzFEQkM1RDFCMDQzOEQyMDAyMzU1NTIgLyogRGlz
cGxheS5jcHAgKi87IH07CkBAIC0xNjgsNyArMTUzLDYgQEAKIAkJNUMxREJERUMxQjA0MzhEMzAw
MjM1NTUyIC8qIGZlYXR1cmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1QzFEQkM2MjFCMDQzOEQyMDAyMzU1NTIgLyogZmVhdHVyZXMuaCAqLzsgfTsK
IAkJNUMxREJERUUxQjA0MzhEMzAwMjM1NTUyIC8qIEZlbmNlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMURCQzY0MUIwNDM4RDIwMDIzNTU1MiAv
KiBGZW5jZS5jcHAgKi87IH07CiAJCTVDMURCREVGMUIwNDM4RDMwMDIzNTU1MiAvKiBGZW5jZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxREJDNjUx
QjA0MzhEMjAwMjM1NTUyIC8qIEZlbmNlLmggKi87IH07Ci0JCTVDMURCREYwMUIwNDM4RDMwMDIz
NTU1MiAvKiBGbG9hdDE2VG9GbG9hdDMyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDMURCQzY2MUIwNDM4RDIwMDIzNTU1MiAvKiBGbG9hdDE2VG9G
bG9hdDMyLmNwcCAqLzsgfTsKIAkJNUMxREJERjExQjA0MzhEMzAwMjM1NTUyIC8qIGZvcm1hdHV0
aWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
MURCQzY4MUIwNDM4RDIwMDIzNTU1MiAvKiBmb3JtYXR1dGlscy5jcHAgKi87IH07CiAJCTVDMURC
REYyMUIwNDM4RDMwMDIzNTU1MiAvKiBmb3JtYXR1dGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxREJDNjkxQjA0MzhEMjAwMjM1NTUyIC8qIGZv
cm1hdHV0aWxzLmggKi87IH07CiAJCTVDMURCREYzMUIwNDM4RDMwMDIzNTU1MiAvKiBGcmFtZWJ1
ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
QzFEQkM2QTFCMDQzOEQyMDAyMzU1NTIgLyogRnJhbWVidWZmZXIuY3BwICovOyB9OwpAQCAtMjU2
LDYgKzI0MCw1OSBAQAogCQk1Q0M3RDQ3OTE5MTAyNjIxMDAwQjhDMUYgLyogdXRpbGl0aWVzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQzdENDY4
MTkxMDI2MjAwMDBCOEMxRiAvKiB1dGlsaXRpZXMuY3BwICovOyB9OwogCQk1Q0M3RDQ3QTE5MTAy
NjIxMDAwQjhDMUYgLyogdXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1Q0M3RDQ2OTE5MTAyNjIwMDAwQjhDMUYgLyogdXRpbGl0aWVzLmgg
Ki87IH07CiAJCTVDQzdENDdCMTkxMDI2MjEwMDBCOEMxRiAvKiB2ZXJzaW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0M3RDQ2QTE5MTAyNjIwMDAw
QjhDMUYgLyogdmVyc2lvbi5oICovOyB9OworCQk1Q0NEODE3MDFEQkZFOTk5MDA2MDY2QjggLyog
Q29udGV4dFN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDQ0Q4MTU4MURCRkU5OTkwMDYwNjZCOCAvKiBDb250ZXh0U3RhdGUuY3BwICovOyB9
OworCQk1Q0NEODE3MTFEQkZFOTk5MDA2MDY2QjggLyogQ29udGV4dFN0YXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODE1OTFEQkZFOTk5MDA2
MDY2QjggLyogQ29udGV4dFN0YXRlLmggKi87IH07CisJCTVDQ0Q4MTcyMURCRkU5OTkwMDYwNjZC
OCAvKiBEZWJ1Zy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Q0NEODE1QTFEQkZFOTk5MDA2MDY2QjggLyogRGVidWcuY3BwICovOyB9OworCQk1Q0NE
ODE3MzFEQkZFOTk5MDA2MDY2QjggLyogRGVidWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTVCMURCRkU5OTkwMDYwNjZCOCAvKiBEZWJ1Zy5o
ICovOyB9OworCQk1Q0NEODE3NDFEQkZFOTk5MDA2MDY2QjggLyogSGFuZGxlUmFuZ2VBbGxvY2F0
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUND
RDgxNUMxREJGRTk5OTAwNjA2NkI4IC8qIEhhbmRsZVJhbmdlQWxsb2NhdG9yLmNwcCAqLzsgfTsK
KwkJNUNDRDgxNzUxREJGRTk5OTAwNjA2NkI4IC8qIEhhbmRsZVJhbmdlQWxsb2NhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODE1RDFEQkZF
OTk5MDA2MDY2QjggLyogSGFuZGxlUmFuZ2VBbGxvY2F0b3IuaCAqLzsgfTsKKwkJNUNDRDgxNzYx
REJGRTk5OTAwNjA2NkI4IC8qIEltYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTVFMURCRkU5OTkwMDYwNjZCOCAvKiBJbWFnZS5jcHAg
Ki87IH07CisJCTVDQ0Q4MTc3MURCRkU5OTkwMDYwNjZCOCAvKiBJbWFnZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDgxNUYxREJGRTk5OTAwNjA2
NkI4IC8qIEltYWdlLmggKi87IH07CisJCTVDQ0Q4MTc4MURCRkU5OTkwMDYwNjZCOCAvKiBJbmRl
eFJhbmdlQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUNDRDgxNjAxREJGRTk5OTAwNjA2NkI4IC8qIEluZGV4UmFuZ2VDYWNoZS5jcHAgKi87
IH07CisJCTVDQ0Q4MTc5MURCRkU5OTkwMDYwNjZCOCAvKiBJbmRleFJhbmdlQ2FjaGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTYxMURCRkU5
OTkwMDYwNjZCOCAvKiBJbmRleFJhbmdlQ2FjaGUuaCAqLzsgfTsKKwkJNUNDRDgxN0ExREJGRTk5
OTAwNjA2NkI4IC8qIFBhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUNDRDgxNjIxREJGRTk5OTAwNjA2NkI4IC8qIFBhdGguY3BwICovOyB9Owor
CQk1Q0NEODE3QjFEQkZFOTk5MDA2MDY2QjggLyogUGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDgxNjMxREJGRTk5OTAwNjA2NkI4IC8qIFBh
dGguaCAqLzsgfTsKKwkJNUNDRDgxN0MxREJGRTk5OTAwNjA2NkI4IC8qIHF1ZXJ5dXRpbHMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDgxNjQx
REJGRTk5OTAwNjA2NkI4IC8qIHF1ZXJ5dXRpbHMuY3BwICovOyB9OworCQk1Q0NEODE3RDFEQkZF
OTk5MDA2MDY2QjggLyogcXVlcnl1dGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUNDRDgxNjUxREJGRTk5OTAwNjA2NkI4IC8qIHF1ZXJ5dXRpbHMu
aCAqLzsgfTsKKwkJNUNDRDgxN0UxREJGRTk5OTAwNjA2NkI4IC8qIHNpZ25hbF91dGlscy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODE2NjFE
QkZFOTk5MDA2MDY2QjggLyogc2lnbmFsX3V0aWxzLmNwcCAqLzsgfTsKKwkJNUNDRDgxN0YxREJG
RTk5OTAwNjA2NkI4IC8qIHNpZ25hbF91dGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDgxNjcxREJGRTk5OTAwNjA2NkI4IC8qIHNpZ25hbF91
dGlscy5oICovOyB9OworCQk1Q0NEODE4MDFEQkZFOTk5MDA2MDY2QjggLyogU3RyZWFtLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTY4MURC
RkU5OTkwMDYwNjZCOCAvKiBTdHJlYW0uY3BwICovOyB9OworCQk1Q0NEODE4MTFEQkZFOTk5MDA2
MDY2QjggLyogU3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1Q0NEODE2OTFEQkZFOTk5MDA2MDY2QjggLyogU3RyZWFtLmggKi87IH07CisJCTVD
Q0Q4MTgyMURCRkU5OTkwMDYwNjZCOCAvKiB2YWxpZGF0aW9uRVMzMS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODE2QTFEQkZFOTk5MDA2MDY2
QjggLyogdmFsaWRhdGlvbkVTMzEuY3BwICovOyB9OworCQk1Q0NEODE4MzFEQkZFOTk5MDA2MDY2
QjggLyogdmFsaWRhdGlvbkVTMzEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDQ0Q4MTZCMURCRkU5OTkwMDYwNjZCOCAvKiB2YWxpZGF0aW9uRVMzMS5o
ICovOyB9OworCQk1Q0NEODE4NDFEQkZFOTk5MDA2MDY2QjggLyogVmVyc2lvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDgxNkMxREJGRTk5OTAw
NjA2NkI4IC8qIFZlcnNpb24uaCAqLzsgfTsKKwkJNUNDRDgxODUxREJGRTk5OTAwNjA2NkI4IC8q
IFdvcmthcm91bmRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Q0NEODE2RjFEQkZFOTk5MDA2MDY2QjggLyogV29ya2Fyb3VuZHMuaCAqLzsgfTsKKwkJ
NUNDRDgxOEQxREJGRUExMDAwNjA2NkI4IC8qIEJpdFNldEl0ZXJhdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODE4NjFEQkZFQTEwMDA2MDY2
QjggLyogQml0U2V0SXRlcmF0b3IuaCAqLzsgfTsKKwkJNUNDRDgxOEUxREJGRUExMDAwNjA2NkI4
IC8qIENvbG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1Q0NEODE4NzFEQkZFQTEwMDA2MDY2QjggLyogQ29sb3IuaCAqLzsgfTsKKwkJNUNDRDgxOEYx
REJGRUExMDAwNjA2NkI4IC8qIEZsb2F0MTZUb0Zsb2F0MzIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDgxODkxREJGRUExMDAwNjA2NkI4IC8q
IEZsb2F0MTZUb0Zsb2F0MzIuY3BwICovOyB9OworCQk1Q0NEODE5MDFEQkZFQTEwMDA2MDY2Qjgg
LyogbWF0cml4X3V0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1Q0NEODE4QTFEQkZFQTEwMDA2MDY2QjggLyogbWF0cml4X3V0aWxzLmggKi87IH07
CisJCTVDQ0Q4MTkxMURCRkVBMTAwMDYwNjZCOCAvKiBzdHJpbmdfdXRpbHMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDgxOEIxREJGRUExMDAw
NjA2NkI4IC8qIHN0cmluZ191dGlscy5jcHAgKi87IH07CisJCTVDQ0Q4MTkyMURCRkVBMTAwMDYw
NjZCOCAvKiBzdHJpbmdfdXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDQ0Q4MThDMURCRkVBMTAwMDYwNjZCOCAvKiBzdHJpbmdfdXRpbHMuaCAq
LzsgfTsKKwkJNUNDRDgxQUExREJGRUE1QzAwNjA2NkI4IC8qIEFkZEFuZFRydWVUb0xvb3BDb25k
aXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUNDRDgxOTMxREJGRUE1QzAwNjA2NkI4IC8qIEFkZEFuZFRydWVUb0xvb3BDb25kaXRpb24uY3Bw
ICovOyB9OworCQk1Q0NEODFBQjFEQkZFQTVDMDA2MDY2QjggLyogQWRkQW5kVHJ1ZVRvTG9vcENv
bmRpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUNDRDgxOTQxREJGRUE1QzAwNjA2NkI4IC8qIEFkZEFuZFRydWVUb0xvb3BDb25kaXRpb24uaCAq
LzsgfTsKKwkJNUNDRDgxQUMxREJGRUE1QzAwNjA2NkI4IC8qIEFkZERlZmF1bHRSZXR1cm5TdGF0
ZW1lbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDQ0Q4MTk1MURCRkVBNUMwMDYwNjZCOCAvKiBBZGREZWZhdWx0UmV0dXJuU3RhdGVtZW50cy5j
cHAgKi87IH07CisJCTVDQ0Q4MUFEMURCRkVBNUMwMDYwNjZCOCAvKiBBZGREZWZhdWx0UmV0dXJu
U3RhdGVtZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUNDRDgxOTYxREJGRUE1QzAwNjA2NkI4IC8qIEFkZERlZmF1bHRSZXR1cm5TdGF0ZW1lbnRz
LmggKi87IH07CisJCTVDQ0Q4MUFFMURCRkVBNUMwMDYwNjZCOCAvKiBCcmVha1ZhcmlhYmxlQWxp
YXNpbmdJbklubmVyTG9vcHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUNDRDgxOTcxREJGRUE1QzAwNjA2NkI4IC8qIEJyZWFrVmFyaWFibGVBbGlh
c2luZ0luSW5uZXJMb29wcy5jcHAgKi87IH07CisJCTVDQ0Q4MUFGMURCRkVBNUMwMDYwNjZCOCAv
KiBCcmVha1ZhcmlhYmxlQWxpYXNpbmdJbklubmVyTG9vcHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTk4MURCRkVBNUMwMDYwNjZCOCAvKiBC
cmVha1ZhcmlhYmxlQWxpYXNpbmdJbklubmVyTG9vcHMuaCAqLzsgfTsKKwkJNUNDRDgxQjAxREJG
RUE1QzAwNjA2NkI4IC8qIENvbnN0YW50VW5pb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDgxOTkxREJGRUE1QzAwNjA2NkI4IC8qIENvbnN0
YW50VW5pb24uY3BwICovOyB9OworCQk1Q0NEODFCMTFEQkZFQTVDMDA2MDY2QjggLyogRXhwYW5k
SW50ZWdlclBvd0V4cHJlc3Npb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTlBMURCRkVBNUMwMDYwNjZCOCAvKiBFeHBhbmRJbnRlZ2Vy
UG93RXhwcmVzc2lvbnMuY3BwICovOyB9OworCQk1Q0NEODFCMjFEQkZFQTVDMDA2MDY2QjggLyog
RXhwYW5kSW50ZWdlclBvd0V4cHJlc3Npb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODE5QjFEQkZFQTVDMDA2MDY2QjggLyogRXhwYW5kSW50
ZWdlclBvd0V4cHJlc3Npb25zLmggKi87IH07CisJCTVDQ0Q4MUIzMURCRkVBNUMwMDYwNjZCOCAv
KiBJbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDgxOUMxREJGRUE1QzAwNjA2NkI4IC8qIEludGVybU5v
ZGVQYXR0ZXJuTWF0Y2hlci5jcHAgKi87IH07CisJCTVDQ0Q4MUI0MURCRkVBNUMwMDYwNjZCOCAv
KiBJbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTlEMURCRkVBNUMwMDYwNjZCOCAvKiBJbnRlcm1Ob2Rl
UGF0dGVybk1hdGNoZXIuaCAqLzsgfTsKKwkJNUNDRDgxQjUxREJGRUE1QzAwNjA2NkI4IC8qIFF1
YWxpZmllclR5cGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDQ0Q4MTlFMURCRkVBNUMwMDYwNjZCOCAvKiBRdWFsaWZpZXJUeXBlcy5jcHAgKi87
IH07CisJCTVDQ0Q4MUI2MURCRkVBNUMwMDYwNjZCOCAvKiBRdWFsaWZpZXJUeXBlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDgxOUYxREJGRUE1
QzAwNjA2NkI4IC8qIFF1YWxpZmllclR5cGVzLmggKi87IH07CisJCTVDQ0Q4MUI3MURCRkVBNUMw
MDYwNjZCOCAvKiBSZXdyaXRlVGV4ZWxGZXRjaE9mZnNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODFBMDFEQkZFQTVDMDA2MDY2QjggLyog
UmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQuY3BwICovOyB9OworCQk1Q0NEODFCODFEQkZFQTVDMDA2
MDY2QjggLyogUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MUExMURCRkVBNUMwMDYwNjZCOCAvKiBSZXdy
aXRlVGV4ZWxGZXRjaE9mZnNldC5oICovOyB9OworCQk1Q0NEODFCOTFEQkZFQTVDMDA2MDY2Qjgg
LyogUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODFBMjFEQkZFQTVDMDA2MDY2QjggLyogUmV3
cml0ZVVuYXJ5TWludXNPcGVyYXRvckludC5jcHAgKi87IH07CisJCTVDQ0Q4MUJBMURCRkVBNUMw
MDYwNjZCOCAvKiBSZXdyaXRlVW5hcnlNaW51c09wZXJhdG9ySW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODFBMzFEQkZFQTVDMDA2MDY2Qjgg
LyogUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckludC5oICovOyB9OworCQk1Q0NEODFCQjFEQkZF
QTVDMDA2MDY2QjggLyogU2ltcGxpZnlMb29wQ29uZGl0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODFBNDFEQkZFQTVDMDA2MDY2Qjgg
LyogU2ltcGxpZnlMb29wQ29uZGl0aW9ucy5jcHAgKi87IH07CisJCTVDQ0Q4MUJDMURCRkVBNUMw
MDYwNjZCOCAvKiBTaW1wbGlmeUxvb3BDb25kaXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODFBNTFEQkZFQTVDMDA2MDY2QjggLyogU2lt
cGxpZnlMb29wQ29uZGl0aW9ucy5oICovOyB9OworCQk1Q0NEODFCRDFEQkZFQTVDMDA2MDY2Qjgg
LyogU3BsaXRTZXF1ZW5jZU9wZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MUE2MURCRkVBNUMwMDYwNjZCOCAvKiBTcGxpdFNlcXVl
bmNlT3BlcmF0b3IuY3BwICovOyB9OworCQk1Q0NEODFCRTFEQkZFQTVDMDA2MDY2QjggLyogU3Bs
aXRTZXF1ZW5jZU9wZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1Q0NEODFBNzFEQkZFQTVDMDA2MDY2QjggLyogU3BsaXRTZXF1ZW5jZU9wZXJh
dG9yLmggKi87IH07CisJCTVDQ0Q4MUJGMURCRkVBNUMwMDYwNjZCOCAvKiBVc2VJbnRlcmZhY2VC
bG9ja0ZpZWxkcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Q0NEODFBODFEQkZFQTVDMDA2MDY2QjggLyogVXNlSW50ZXJmYWNlQmxvY2tGaWVsZHMu
Y3BwICovOyB9OworCQk1Q0NEODFDMDFEQkZFQTVDMDA2MDY2QjggLyogVXNlSW50ZXJmYWNlQmxv
Y2tGaWVsZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDQ0Q4MUE5MURCRkVBNUMwMDYwNjZCOCAvKiBVc2VJbnRlcmZhY2VCbG9ja0ZpZWxkcy5oICov
OyB9OworCQk1Q0NEODFDMzFEQkZFQUQ5MDA2MDY2QjggLyogRW11bGF0ZUdMRnJhZ0NvbG9yQnJv
YWRjYXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDQ0Q4MUMxMURCRkVBRDkwMDYwNjZCOCAvKiBFbXVsYXRlR0xGcmFnQ29sb3JCcm9hZGNhc3Qu
Y3BwICovOyB9OworCQk1Q0NEODFDNDFEQkZFQUQ5MDA2MDY2QjggLyogRW11bGF0ZUdMRnJhZ0Nv
bG9yQnJvYWRjYXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Q0NEODFDMjFEQkZFQUQ5MDA2MDY2QjggLyogRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRj
YXN0LmggKi87IH07CiAJCTcyMzA5QTU2MTgzQzI3REUwMDM3MEI5MyAvKiBUb2tlbml6ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIzMDlBNTUx
ODNDMjdEQjAwMzcwQjkzIC8qIFRva2VuaXplci5jcHAgKi87IH07CiAJCTcyMzA5QTU4MTgzQzI3
RjMwMDM3MEI5MyAvKiBFeHByZXNzaW9uUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMzA5QTU3MTgzQzI3RjEwMDM3MEI5MyAvKiBFeHBy
ZXNzaW9uUGFyc2VyLmNwcCAqLzsgfTsKIAkJQTA4QzNDREMxNkQ2Q0I2MTAwM0YwQjgzIC8qIEFy
cmF5Qm91bmRzQ2xhbXBlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMDhDM0NEQTE2RDZDQjYxMDAzRjBCODMgLyogQXJyYXlCb3VuZHNDbGFtcGVy
LmNwcCAqLzsgfTsKQEAgLTI3Niw3ICszMTMsNiBAQAogCQlBMjY0RjhCQTE2OTc0REVEMDA2RkFB
NUEgLyogTWFjcm9FeHBhbmRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMjY0RjhBMTE2OTc0REVEMDA2RkFBNUEgLyogTWFjcm9FeHBhbmRlci5j
cHAgKi87IH07CiAJCUEyNjRGOEJCMTY5NzRERUQwMDZGQUE1QSAvKiBNYWNyb0V4cGFuZGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMjY0RjhBMjE2
OTc0REVEMDA2RkFBNUEgLyogTWFjcm9FeHBhbmRlci5oICovOyB9OwogCQlBMjY0RjhCQzE2OTc0
REVEMDA2RkFBNUEgLyogbnVtZXJpY19sZXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEEyNjRGOEEzMTY5NzRERUQwMDZGQUE1QSAvKiBudW1lcmljX2xl
eC5oICovOyB9OwotCQlBMjY0RjhCRDE2OTc0REVEMDA2RkFBNUEgLyogcHBfdXRpbHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEyNjRGOEE0MTY5NzRE
RUQwMDZGQUE1QSAvKiBwcF91dGlscy5oICovOyB9OwogCQlBMjY0RjhCRTE2OTc0REVEMDA2RkFB
NUEgLyogUHJlcHJvY2Vzc29yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEEyNjRGOEE1MTY5NzRERUQwMDZGQUE1QSAvKiBQcmVwcm9jZXNzb3IuY3Bw
ICovOyB9OwogCQlBMjY0RjhCRjE2OTc0REVEMDA2RkFBNUEgLyogUHJlcHJvY2Vzc29yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMjY0RjhBNjE2OTc0
REVEMDA2RkFBNUEgLyogUHJlcHJvY2Vzc29yLmggKi87IH07CiAJCUEyNjRGOEMwMTY5NzRERUQw
MDZGQUE1QSAvKiBTb3VyY2VMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTI2NEY4QTcxNjk3NERFRDAwNkZBQTVBIC8qIFNvdXJjZUxvY2F0
aW9uLmggKi87IH07CkBAIC0zMTgsMTMgKzM1NCw2IEBACiAJCTMxMDEyREE0MThCOTdCOUIwMDM5
MDYyRiAvKiBDb21tb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDEyREE1MThCOTdCOUIwMDM5MDYy
RiAvKiBDb21waWxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
b21waWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDEyREE4MThCOTdC
OUIwMDM5MDYyRiAvKiBDb25zdGFudFVuaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENvbnN0YW50VW5pb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzEw
MTJEQUExOEI5N0I5QjAwMzkwNjJGIC8qIERlcGVuZGVuY3lHcmFwaC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXBlbmRlbmN5R3JhcGguY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkzMTAxMkRBQjE4Qjk3QjlCMDAzOTA2MkYgLyogRGVwZW5kZW5j
eUdyYXBoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlcGVuZGVuY3lHcmFw
aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTAxMkRBQzE4Qjk3QjlCMDAzOTA2
MkYgLyogRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBEZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMzEwMTJEQUQxOEI5N0I5QjAwMzkwNjJGIC8qIERlcGVuZGVuY3lHcmFw
aEJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVwZW5kZW5jeUdy
YXBoQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTAxMkRBRTE4Qjk3
QjlCMDAzOTA2MkYgLyogRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlcGVuZGVuY3lHcmFwaE91dHB1dC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMDEyREFGMThCOTdCOUIwMDM5MDYyRiAvKiBEZXBlbmRl
bmN5R3JhcGhPdXRwdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVwZW5k
ZW5jeUdyYXBoT3V0cHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMDEyREIw
MThCOTdCOUIwMDM5MDYyRiAvKiBEZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDEyREI1MThCOTdCOUIwMDM5MDYyRiAv
KiBEaWFnbm9zdGljcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
aWFnbm9zdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDEyREI2MThC
OTdCOUIwMDM5MDYyRiAvKiBEaWFnbm9zdGljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEaWFnbm9zdGljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTAx
MkRCNzE4Qjk3QjlCMDAzOTA2MkYgLyogRGlyZWN0aXZlSGFuZGxlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXJlY3RpdmVIYW5kbGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM2Niw4ICszOTUsNiBAQAogCQkzMTAxMkRFNjE4Qjk3QjlC
MDAzOTA2MkYgLyogUG9vbEFsbG9jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBvb2xBbGxvYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDEy
REU3MThCOTdCOUIwMDM5MDYyRiAvKiBQb29sQWxsb2MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUG9vbEFsbG9jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMx
MDEyREU4MThCOTdCOUIwMDM5MDYyRiAvKiBQcmFnbWEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUHJhZ21hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMDEy
REVBMThCOTdCOUIwMDM5MDYyRiAvKiBRdWFsaWZpZXJBbGl2ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBRdWFsaWZpZXJBbGl2ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkzMTAxMkRFRDE4Qjk3QjlCMDAzOTA2MkYgLyogUmVuYW1lRnVuY3Rpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuYW1lRnVuY3Rpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEwMTJERUUxOEI5N0I5QjAwMzkwNjJGIC8qIFJld3JpdGVF
bHNlQmxvY2tzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJld3Jp
dGVFbHNlQmxvY2tzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEwMTJERUYx
OEI5N0I5QjAwMzkwNjJGIC8qIFJld3JpdGVFbHNlQmxvY2tzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJld3JpdGVFbHNlQmxvY2tzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTMxMDEyREYwMThCOTdCOUIwMDM5MDYyRiAvKiBTZWFyY2hTeW1ib2wuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VhcmNoU3ltYm9sLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM3NSwxMCArNDAyLDYgQEAKIAkJMzEwMTJERjIx
OEI5N0I5QjAwMzkwNjJGIC8qIFNoYWRlckxhbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2hhZGVyTGFuZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTMxMDEyREY0MThCOTdCOUIwMDM5MDYyRiAvKiBTeW1ib2xUYWJsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTeW1ib2xUYWJsZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTMxMDEyREY1MThCOTdCOUIwMDM5MDYyRiAvKiBTeW1ib2xUYWJs
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeW1ib2xUYWJsZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTAxMkRGNzE4Qjk3QjlCMDAzOTA2MkYgLyogUmVz
dHJpY3RGcmFnbWVudFNoYWRlclRpbWluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMzEwMTJERjgxOEI5N0I5QjAwMzkwNjJGIC8qIFJlc3RyaWN0RnJh
Z21lbnRTaGFkZXJUaW1pbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVz
dHJpY3RGcmFnbWVudFNoYWRlclRpbWluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkzMTAxMkRGOTE4Qjk3QjlCMDAzOTA2MkYgLyogUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzdHJpY3RWZXJ0ZXhT
aGFkZXJUaW1pbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTAxMkRGQTE4
Qjk3QjlCMDAzOTA2MkYgLyogUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEwMTJERkIxOEI5N0I5QjAwMzkwNjJGIC8qIFRy
YW5zbGF0b3JFU1NMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRy
YW5zbGF0b3JFU1NMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEwMTJERkMx
OEI5N0I5QjAwMzkwNjJGIC8qIFRyYW5zbGF0b3JFU1NMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRyYW5zbGF0b3JFU1NMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTMxMDEyREZEMThCOTdCOUIwMDM5MDYyRiAvKiBUcmFuc2xhdG9yR0xTTC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUcmFuc2xhdG9yR0xTTC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NjEsOCArNDg0LDYgQEAKIAkJNUMxREJDNTYxQjA0
MzhEMjAwMjM1NTUyIC8qIENvbnN0YW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBDb25zdGFudHMuaDsgcGF0aCA9IHNyYy9saWJBTkdMRS9Db25zdGFudHMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMxREJDNTcxQjA0MzhEMjAwMjM1NTUyIC8qIENvbnRl
eHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ29udGV4dC5jcHA7
IHBhdGggPSBzcmMvbGliQU5HTEUvQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDMURCQzU4MUIwNDM4RDIwMDIzNTU1MiAvKiBDb250ZXh0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENvbnRleHQuaDsgcGF0aCA9IHNyYy9saWJBTkdMRS9Db250
ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDMURCQzU5MUIwNDM4RDIwMDIz
NTU1MiAvKiBEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERh
dGEuY3BwOyBwYXRoID0gc3JjL2xpYkFOR0xFL0RhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk1QzFEQkM1QTFCMDQzOEQyMDAyMzU1NTIgLyogRGF0YS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBEYXRhLmg7IHBhdGggPSBzcmMvbGliQU5HTEUvRGF0YS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzFEQkM1QjFCMDQzOEQyMDAyMzU1NTIg
LyogRGV2aWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERldmlj
ZS5jcHA7IHBhdGggPSBzcmMvbGliQU5HTEUvRGV2aWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUMxREJDNUMxQjA0MzhEMjAwMjM1NTUyIC8qIERldmljZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEZXZpY2UuaDsgcGF0aCA9IHNyYy9saWJBTkdMRS9E
ZXZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMxREJDNUQxQjA0MzhEMjAw
MjM1NTUyIC8qIERpc3BsYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gRGlzcGxheS5jcHA7IHBhdGggPSBzcmMvbGliQU5HTEUvRGlzcGxheS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NzMsNyArNDk0LDYgQEAKIAkJNUMxREJDNjIxQjA0MzhE
MjAwMjM1NTUyIC8qIGZlYXR1cmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IGZlYXR1cmVzLmg7IHBhdGggPSBzcmMvbGliQU5HTEUvZmVhdHVyZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUMxREJDNjQxQjA0MzhEMjAwMjM1NTUyIC8qIEZlbmNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZlbmNlLmNwcDsgcGF0aCA9IHNy
Yy9saWJBTkdMRS9GZW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMURC
QzY1MUIwNDM4RDIwMDIzNTU1MiAvKiBGZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBGZW5jZS5oOyBwYXRoID0gc3JjL2xpYkFOR0xFL0ZlbmNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTVDMURCQzY2MUIwNDM4RDIwMDIzNTU1MiAvKiBGbG9hdDE2VG9G
bG9hdDMyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZsb2F0MTZU
b0Zsb2F0MzIuY3BwOyBwYXRoID0gc3JjL2xpYkFOR0xFL0Zsb2F0MTZUb0Zsb2F0MzIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzFEQkM2ODFCMDQzOEQyMDAyMzU1NTIgLyog
Zm9ybWF0dXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gZm9y
bWF0dXRpbHMuY3BwOyBwYXRoID0gc3JjL2xpYkFOR0xFL2Zvcm1hdHV0aWxzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMxREJDNjkxQjA0MzhEMjAwMjM1NTUyIC8qIGZvcm1h
dHV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGZvcm1hdHV0aWxzLmg7
IHBhdGggPSBzcmMvbGliQU5HTEUvZm9ybWF0dXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUMxREJDNkExQjA0MzhEMjAwMjM1NTUyIC8qIEZyYW1lYnVmZmVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZyYW1lYnVmZmVyLmNwcDsgcGF0aCA9
IHNyYy9saWJBTkdMRS9GcmFtZWJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC01NjEsNiArNTgxLDYzIEBACiAJCTVDQzdENDY4MTkxMDI2MjAwMDBCOEMxRiAvKiB1dGls
aXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gdXRpbGl0aWVz
LmNwcDsgcGF0aCA9IHNyYy9jb21tb24vdXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUNDN0Q0NjkxOTEwMjYyMDAwMEI4QzFGIC8qIHV0aWxpdGllcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSB1dGlsaXRpZXMuaDsgcGF0aCA9IHNyYy9jb21t
b24vdXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQzdENDZBMTkx
MDI2MjAwMDBCOEMxRiAvKiB2ZXJzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IHZlcnNpb24uaDsgcGF0aCA9IHNyYy9jb21tb24vdmVyc2lvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1Q0NEODE1NzFEQkZFOTk5MDA2MDY2QjggLyogYW5nbGV0eXBlcy5p
bmwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gYW5nbGV0eXBlcy5pbmw7IHBhdGggPSBzcmMvbGli
QU5HTEUvYW5nbGV0eXBlcy5pbmw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQ0Q4
MTU4MURCRkU5OTkwMDYwNjZCOCAvKiBDb250ZXh0U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gQ29udGV4dFN0YXRlLmNwcDsgcGF0aCA9IHNyYy9saWJBTkdM
RS9Db250ZXh0U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0NEODE1
OTFEQkZFOTk5MDA2MDY2QjggLyogQ29udGV4dFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IENvbnRleHRTdGF0ZS5oOyBwYXRoID0gc3JjL2xpYkFOR0xFL0NvbnRleHRT
dGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0NEODE1QTFEQkZFOTk5MDA2
MDY2QjggLyogRGVidWcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
RGVidWcuY3BwOyBwYXRoID0gc3JjL2xpYkFOR0xFL0RlYnVnLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNUNDRDgxNUIxREJGRTk5OTAwNjA2NkI4IC8qIERlYnVnLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERlYnVnLmg7IHBhdGggPSBzcmMvbGliQU5HTEUv
RGVidWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDRDgxNUMxREJGRTk5OTAw
NjA2NkI4IC8qIEhhbmRsZVJhbmdlQWxsb2NhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEhhbmRsZVJhbmdlQWxsb2NhdG9yLmNwcDsgcGF0aCA9IHNyYy9saWJB
TkdMRS9IYW5kbGVSYW5nZUFsbG9jYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTVDQ0Q4MTVEMURCRkU5OTkwMDYwNjZCOCAvKiBIYW5kbGVSYW5nZUFsbG9jYXRvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBIYW5kbGVSYW5nZUFsbG9jYXRvci5oOyBw
YXRoID0gc3JjL2xpYkFOR0xFL0hhbmRsZVJhbmdlQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTVDQ0Q4MTVFMURCRkU5OTkwMDYwNjZCOCAvKiBJbWFnZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBJbWFnZS5jcHA7IHBhdGggPSBzcmMv
bGliQU5HTEUvSW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0NEODE1
RjFEQkZFOTk5MDA2MDY2QjggLyogSW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gSW1hZ2UuaDsgcGF0aCA9IHNyYy9saWJBTkdMRS9JbWFnZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1Q0NEODE2MDFEQkZFOTk5MDA2MDY2QjggLyogSW5kZXhSYW5nZUNh
Y2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEluZGV4UmFuZ2VD
YWNoZS5jcHA7IHBhdGggPSBzcmMvbGliQU5HTEUvSW5kZXhSYW5nZUNhY2hlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDRDgxNjExREJGRTk5OTAwNjA2NkI4IC8qIEluZGV4
UmFuZ2VDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJbmRleFJhbmdl
Q2FjaGUuaDsgcGF0aCA9IHNyYy9saWJBTkdMRS9JbmRleFJhbmdlQ2FjaGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDRDgxNjIxREJGRTk5OTAwNjA2NkI4IC8qIFBhdGguY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUGF0aC5jcHA7IHBhdGggPSBz
cmMvbGliQU5HTEUvUGF0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQ0Q4
MTYzMURCRkU5OTkwMDYwNjZCOCAvKiBQYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFBhdGguaDsgcGF0aCA9IHNyYy9saWJBTkdMRS9QYXRoLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTVDQ0Q4MTY0MURCRkU5OTkwMDYwNjZCOCAvKiBxdWVyeXV0aWxzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHF1ZXJ5dXRpbHMuY3BwOyBw
YXRoID0gc3JjL2xpYkFOR0xFL3F1ZXJ5dXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1Q0NEODE2NTFEQkZFOTk5MDA2MDY2QjggLyogcXVlcnl1dGlscy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBxdWVyeXV0aWxzLmg7IHBhdGggPSBzcmMvbGliQU5H
TEUvcXVlcnl1dGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0NEODE2NjFE
QkZFOTk5MDA2MDY2QjggLyogc2lnbmFsX3V0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IHNpZ25hbF91dGlscy5jcHA7IHBhdGggPSBzcmMvbGliQU5HTEUvc2ln
bmFsX3V0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDRDgxNjcxREJG
RTk5OTAwNjA2NkI4IC8qIHNpZ25hbF91dGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBzaWduYWxfdXRpbHMuaDsgcGF0aCA9IHNyYy9saWJBTkdMRS9zaWduYWxfdXRpbHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDRDgxNjgxREJGRTk5OTAwNjA2NkI4
IC8qIFN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTdHJl
YW0uY3BwOyBwYXRoID0gc3JjL2xpYkFOR0xFL1N0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTVDQ0Q4MTY5MURCRkU5OTkwMDYwNjZCOCAvKiBTdHJlYW0uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU3RyZWFtLmg7IHBhdGggPSBzcmMvbGliQU5HTEUv
U3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQ0Q4MTZBMURCRkU5OTkw
MDYwNjZCOCAvKiB2YWxpZGF0aW9uRVMzMS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSB2YWxpZGF0aW9uRVMzMS5jcHA7IHBhdGggPSBzcmMvbGliQU5HTEUvdmFsaWRh
dGlvbkVTMzEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0NEODE2QjFEQkZF
OTk5MDA2MDY2QjggLyogdmFsaWRhdGlvbkVTMzEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gdmFsaWRhdGlvbkVTMzEuaDsgcGF0aCA9IHNyYy9saWJBTkdMRS92YWxpZGF0aW9u
RVMzMS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0NEODE2QzFEQkZFOTk5MDA2
MDY2QjggLyogVmVyc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBWZXJz
aW9uLmg7IHBhdGggPSBzcmMvbGliQU5HTEUvVmVyc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1Q0NEODE2RDFEQkZFOTk5MDA2MDY2QjggLyogVmVyc2lvbi5pbmwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBuYW1lID0gVmVyc2lvbi5pbmw7IHBhdGggPSBzcmMvbGliQU5HTEUvVmVyc2lv
bi5pbmw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQ0Q4MTZFMURCRkU5OTkwMDYw
NjZCOCAvKiBWZXJ0ZXhBdHRyaWJ1dGUuaW5sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFZlcnRl
eEF0dHJpYnV0ZS5pbmw7IHBhdGggPSBzcmMvbGliQU5HTEUvVmVydGV4QXR0cmlidXRlLmlubDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDRDgxNkYxREJGRTk5OTAwNjA2NkI4IC8q
IFdvcmthcm91bmRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdvcmthcm91
bmRzLmg7IHBhdGggPSBzcmMvbGliQU5HTEUvV29ya2Fyb3VuZHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNUNDRDgxODYxREJGRUExMDAwNjA2NkI4IC8qIEJpdFNldEl0ZXJhdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJpdFNldEl0ZXJhdG9yLmg7IHBh
dGggPSBzcmMvY29tbW9uL0JpdFNldEl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTVDQ0Q4MTg3MURCRkVBMTAwMDYwNjZCOCAvKiBDb2xvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBDb2xvci5oOyBwYXRoID0gc3JjL2NvbW1vbi9Db2xvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0NEODE4ODFEQkZFQTEwMDA2MDY2QjggLyog
Q29sb3IuaW5sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IENvbG9yLmlubDsgcGF0aCA9IHNyYy9j
b21tb24vQ29sb3IuaW5sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0NEODE4OTFE
QkZFQTEwMDA2MDY2QjggLyogRmxvYXQxNlRvRmxvYXQzMi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBGbG9hdDE2VG9GbG9hdDMyLmNwcDsgcGF0aCA9IHNyYy9jb21t
b24vRmxvYXQxNlRvRmxvYXQzMi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVD
Q0Q4MThBMURCRkVBMTAwMDYwNjZCOCAvKiBtYXRyaXhfdXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gbWF0cml4X3V0aWxzLmg7IHBhdGggPSBzcmMvY29tbW9uL21hdHJp
eF91dGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0NEODE4QjFEQkZFQTEw
MDA2MDY2QjggLyogc3RyaW5nX3V0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IHN0cmluZ191dGlscy5jcHA7IHBhdGggPSBzcmMvY29tbW9uL3N0cmluZ191dGls
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQ0Q4MThDMURCRkVBMTAwMDYw
NjZCOCAvKiBzdHJpbmdfdXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
c3RyaW5nX3V0aWxzLmg7IHBhdGggPSBzcmMvY29tbW9uL3N0cmluZ191dGlscy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1Q0NEODE5MzFEQkZFQTVDMDA2MDY2QjggLyogQWRkQW5k
VHJ1ZVRvTG9vcENvbmRpdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBZGRBbmRUcnVlVG9Mb29wQ29uZGl0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUNDRDgxOTQxREJGRUE1QzAwNjA2NkI4IC8qIEFkZEFuZFRydWVUb0xvb3BDb25k
aXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWRkQW5kVHJ1ZVRvTG9v
cENvbmRpdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0NEODE5NTFEQkZF
QTVDMDA2MDY2QjggLyogQWRkRGVmYXVsdFJldHVyblN0YXRlbWVudHMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWRkRGVmYXVsdFJldHVyblN0YXRlbWVudHMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0NEODE5NjFEQkZFQTVDMDA2MDY2Qjgg
LyogQWRkRGVmYXVsdFJldHVyblN0YXRlbWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQWRkRGVmYXVsdFJldHVyblN0YXRlbWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUNDRDgxOTcxREJGRUE1QzAwNjA2NkI4IC8qIEJyZWFrVmFyaWFibGVBbGlh
c2luZ0luSW5uZXJMb29wcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBCcmVha1ZhcmlhYmxlQWxpYXNpbmdJbklubmVyTG9vcHMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1Q0NEODE5ODFEQkZFQTVDMDA2MDY2QjggLyogQnJlYWtWYXJpYWJsZUFs
aWFzaW5nSW5Jbm5lckxvb3BzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJy
ZWFrVmFyaWFibGVBbGlhc2luZ0luSW5uZXJMb29wcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1Q0NEODE5OTFEQkZFQTVDMDA2MDY2QjggLyogQ29uc3RhbnRVbmlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb25zdGFudFVuaW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDRDgxOUExREJGRUE1QzAwNjA2NkI4IC8qIEV4
cGFuZEludGVnZXJQb3dFeHByZXNzaW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBFeHBhbmRJbnRlZ2VyUG93RXhwcmVzc2lvbnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1Q0NEODE5QjFEQkZFQTVDMDA2MDY2QjggLyogRXhwYW5kSW50ZWdl
clBvd0V4cHJlc3Npb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4cGFu
ZEludGVnZXJQb3dFeHByZXNzaW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
Q0NEODE5QzFEQkZFQTVDMDA2MDY2QjggLyogSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGVybU5vZGVQYXR0ZXJuTWF0
Y2hlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQ0Q4MTlEMURCRkVBNUMw
MDYwNjZCOCAvKiBJbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTVDQ0Q4MTlFMURCRkVBNUMwMDYwNjZCOCAvKiBRdWFsaWZpZXJUeXBl
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBRdWFsaWZpZXJUeXBl
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQ0Q4MTlGMURCRkVBNUMwMDYw
NjZCOCAvKiBRdWFsaWZpZXJUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBRdWFsaWZpZXJUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0NEODFB
MDFEQkZFQTVDMDA2MDY2QjggLyogUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0NEODFBMTFEQkZFQTVDMDA2MDY2Qjgg
LyogUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNUNDRDgxQTIxREJGRUE1QzAwNjA2NkI4IC8qIFJld3JpdGVVbmFyeU1pbnVzT3BlcmF0
b3JJbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmV3cml0ZVVu
YXJ5TWludXNPcGVyYXRvckludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVD
Q0Q4MUEzMURCRkVBNUMwMDYwNjZCOCAvKiBSZXdyaXRlVW5hcnlNaW51c09wZXJhdG9ySW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJld3JpdGVVbmFyeU1pbnVzT3BlcmF0
b3JJbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDRDgxQTQxREJGRUE1QzAw
NjA2NkI4IC8qIFNpbXBsaWZ5TG9vcENvbmRpdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2ltcGxpZnlMb29wQ29uZGl0aW9ucy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTVDQ0Q4MUE1MURCRkVBNUMwMDYwNjZCOCAvKiBTaW1wbGlmeUxv
b3BDb25kaXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbXBsaWZ5
TG9vcENvbmRpdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDRDgxQTYx
REJGRUE1QzAwNjA2NkI4IC8qIFNwbGl0U2VxdWVuY2VPcGVyYXRvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGxpdFNlcXVlbmNlT3BlcmF0b3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0NEODFBNzFEQkZFQTVDMDA2MDY2QjggLyogU3Bs
aXRTZXF1ZW5jZU9wZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNw
bGl0U2VxdWVuY2VPcGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0NE
ODFBODFEQkZFQTVDMDA2MDY2QjggLyogVXNlSW50ZXJmYWNlQmxvY2tGaWVsZHMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNlSW50ZXJmYWNlQmxvY2tGaWVsZHMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0NEODFBOTFEQkZFQTVDMDA2MDY2
QjggLyogVXNlSW50ZXJmYWNlQmxvY2tGaWVsZHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVXNlSW50ZXJmYWNlQmxvY2tGaWVsZHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUNDRDgxQzExREJGRUFEOTAwNjA2NkI4IC8qIEVtdWxhdGVHTEZyYWdDb2xvckJy
b2FkY2FzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFbXVsYXRl
R0xGcmFnQ29sb3JCcm9hZGNhc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
Q0NEODFDMjFEQkZFQUQ5MDA2MDY2QjggLyogRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVtdWxhdGVHTEZyYWdDb2xvckJyb2Fk
Y2FzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDdDNTlDNTEyMDhDNjhCMDAx
Qzg3M0UgLyogQU5HTEUueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0g
QU5HTEUueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEN0M1OUM2MTIw
OEM2OEIwMDFDODczRSAvKiBCYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsg
cGF0aCA9IEJhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEN0M1
OUM3MTIwOEM2OEIwMDFDODczRSAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnhjY29uZmlnOyBwYXRoID0gRGVidWdSZWxlYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNTg0LDcgKzY2MSw2IEBACiAJCUEyNjRGOEExMTY5NzRERUQwMDZG
QUE1QSAvKiBNYWNyb0V4cGFuZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1hY3JvRXhwYW5kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
MjY0RjhBMjE2OTc0REVEMDA2RkFBNUEgLyogTWFjcm9FeHBhbmRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0V4cGFuZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUEyNjRGOEEzMTY5NzRERUQwMDZGQUE1QSAvKiBudW1lcmljX2xleC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBudW1lcmljX2xleC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlBMjY0RjhBNDE2OTc0REVEMDA2RkFBNUEgLyogcHBfdXRpbHMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gcHBfdXRpbHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTI2NEY4QTUxNjk3NERFRDAwNkZBQTVBIC8qIFByZXByb2Nlc3Nv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcmVwcm9jZXNzb3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMjY0RjhBNjE2OTc0REVEMDA2RkFB
NUEgLyogUHJlcHJvY2Vzc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBy
ZXByb2Nlc3Nvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMjY0RjhBNzE2OTc0
REVEMDA2RkFBNUEgLyogU291cmNlTG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU291cmNlTG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTYxMCw2ICs2ODYsMzEgQEAKIAkJMzEwMTJEOUYxOEI5N0I5QjAwMzkwNjJGIC8qIHRyYW5zbGF0
b3IgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTVDQ0Q4
MUMxMURCRkVBRDkwMDYwNjZCOCAvKiBFbXVsYXRlR0xGcmFnQ29sb3JCcm9hZGNhc3QuY3BwICov
LAorCQkJCTVDQ0Q4MUMyMURCRkVBRDkwMDYwNjZCOCAvKiBFbXVsYXRlR0xGcmFnQ29sb3JCcm9h
ZGNhc3QuaCAqLywKKwkJCQk1Q0NEODE5MzFEQkZFQTVDMDA2MDY2QjggLyogQWRkQW5kVHJ1ZVRv
TG9vcENvbmRpdGlvbi5jcHAgKi8sCisJCQkJNUNDRDgxOTQxREJGRUE1QzAwNjA2NkI4IC8qIEFk
ZEFuZFRydWVUb0xvb3BDb25kaXRpb24uaCAqLywKKwkJCQk1Q0NEODE5NTFEQkZFQTVDMDA2MDY2
QjggLyogQWRkRGVmYXVsdFJldHVyblN0YXRlbWVudHMuY3BwICovLAorCQkJCTVDQ0Q4MTk2MURC
RkVBNUMwMDYwNjZCOCAvKiBBZGREZWZhdWx0UmV0dXJuU3RhdGVtZW50cy5oICovLAorCQkJCTVD
Q0Q4MTk3MURCRkVBNUMwMDYwNjZCOCAvKiBCcmVha1ZhcmlhYmxlQWxpYXNpbmdJbklubmVyTG9v
cHMuY3BwICovLAorCQkJCTVDQ0Q4MTk4MURCRkVBNUMwMDYwNjZCOCAvKiBCcmVha1ZhcmlhYmxl
QWxpYXNpbmdJbklubmVyTG9vcHMuaCAqLywKKwkJCQk1Q0NEODE5OTFEQkZFQTVDMDA2MDY2Qjgg
LyogQ29uc3RhbnRVbmlvbi5jcHAgKi8sCisJCQkJNUNDRDgxOUExREJGRUE1QzAwNjA2NkI4IC8q
IEV4cGFuZEludGVnZXJQb3dFeHByZXNzaW9ucy5jcHAgKi8sCisJCQkJNUNDRDgxOUIxREJGRUE1
QzAwNjA2NkI4IC8qIEV4cGFuZEludGVnZXJQb3dFeHByZXNzaW9ucy5oICovLAorCQkJCTVDQ0Q4
MTlDMURCRkVBNUMwMDYwNjZCOCAvKiBJbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXIuY3BwICovLAor
CQkJCTVDQ0Q4MTlEMURCRkVBNUMwMDYwNjZCOCAvKiBJbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXIu
aCAqLywKKwkJCQk1Q0NEODE5RTFEQkZFQTVDMDA2MDY2QjggLyogUXVhbGlmaWVyVHlwZXMuY3Bw
ICovLAorCQkJCTVDQ0Q4MTlGMURCRkVBNUMwMDYwNjZCOCAvKiBRdWFsaWZpZXJUeXBlcy5oICov
LAorCQkJCTVDQ0Q4MUEwMURCRkVBNUMwMDYwNjZCOCAvKiBSZXdyaXRlVGV4ZWxGZXRjaE9mZnNl
dC5jcHAgKi8sCisJCQkJNUNDRDgxQTExREJGRUE1QzAwNjA2NkI4IC8qIFJld3JpdGVUZXhlbEZl
dGNoT2Zmc2V0LmggKi8sCisJCQkJNUNDRDgxQTIxREJGRUE1QzAwNjA2NkI4IC8qIFJld3JpdGVV
bmFyeU1pbnVzT3BlcmF0b3JJbnQuY3BwICovLAorCQkJCTVDQ0Q4MUEzMURCRkVBNUMwMDYwNjZC
OCAvKiBSZXdyaXRlVW5hcnlNaW51c09wZXJhdG9ySW50LmggKi8sCisJCQkJNUNDRDgxQTQxREJG
RUE1QzAwNjA2NkI4IC8qIFNpbXBsaWZ5TG9vcENvbmRpdGlvbnMuY3BwICovLAorCQkJCTVDQ0Q4
MUE1MURCRkVBNUMwMDYwNjZCOCAvKiBTaW1wbGlmeUxvb3BDb25kaXRpb25zLmggKi8sCisJCQkJ
NUNDRDgxQTYxREJGRUE1QzAwNjA2NkI4IC8qIFNwbGl0U2VxdWVuY2VPcGVyYXRvci5jcHAgKi8s
CisJCQkJNUNDRDgxQTcxREJGRUE1QzAwNjA2NkI4IC8qIFNwbGl0U2VxdWVuY2VPcGVyYXRvci5o
ICovLAorCQkJCTVDQ0Q4MUE4MURCRkVBNUMwMDYwNjZCOCAvKiBVc2VJbnRlcmZhY2VCbG9ja0Zp
ZWxkcy5jcHAgKi8sCisJCQkJNUNDRDgxQTkxREJGRUE1QzAwNjA2NkI4IC8qIFVzZUludGVyZmFj
ZUJsb2NrRmllbGRzLmggKi8sCiAJCQkJNUMzMTVDRTgxQ0M1QjZEQTAwNzc2Njk3IC8qIENhY2hl
LmNwcCAqLywKIAkJCQk1QzMxNUNFOTFDQzVCNkRBMDA3NzY2OTcgLyogQ2FjaGUuaCAqLywKIAkJ
CQk1QzMxNUNFQTFDQzVCNkRBMDA3NzY2OTcgLyogRGVmZXJHbG9iYWxJbml0aWFsaXplcnMuY3Bw
ICovLApAQCAtNjc1LDggKzc3Niw2IEBACiAJCQkJNUNDN0Q0NEMxOTEwMjRFNDAwMEI4QzFGIC8q
IExvb3BJbmZvLmggKi8sCiAJCQkJNUNDN0Q0NTAxOTEwMjRFNDAwMEI4QzFGIC8qIFZhbGlkYXRl
T3V0cHV0cy5jcHAgKi8sCiAJCQkJNUNDN0Q0NTExOTEwMjRFNDAwMEI4QzFGIC8qIFZhbGlkYXRl
T3V0cHV0cy5oICovLAotCQkJCTMxMDEyREE5MThCOTdCOUIwMDM5MDYyRiAvKiBkZXBncmFwaCAq
LywKLQkJCQkzMTAxMkRGNjE4Qjk3QjlCMDAzOTA2MkYgLyogdGltaW5nICovLAogCQkJCTMxMDEy
REEwMThCOTdCOUIwMDM5MDYyRiAvKiBCYXNlVHlwZXMuaCAqLywKIAkJCQkzMTAxMkRBMTE4Qjk3
QjlCMDAzOTA2MkYgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwICovLAogCQkJCTMxMDEy
REEyMThCOTdCOUIwMDM5MDYyRiAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oICovLApAQCAt
NzI1LDggKzgyNCw2IEBACiAJCQkJMzEwMTJERTYxOEI5N0I5QjAwMzkwNjJGIC8qIFBvb2xBbGxv
Yy5jcHAgKi8sCiAJCQkJMzEwMTJERTcxOEI5N0I5QjAwMzkwNjJGIC8qIFBvb2xBbGxvYy5oICov
LAogCQkJCTMxMDEyREU4MThCOTdCOUIwMDM5MDYyRiAvKiBQcmFnbWEuaCAqLywKLQkJCQkzMTAx
MkRFQTE4Qjk3QjlCMDAzOTA2MkYgLyogUXVhbGlmaWVyQWxpdmUuaCAqLywKLQkJCQkzMTAxMkRF
RDE4Qjk3QjlCMDAzOTA2MkYgLyogUmVuYW1lRnVuY3Rpb24uaCAqLywKIAkJCQkzMTAxMkRFRTE4
Qjk3QjlCMDAzOTA2MkYgLyogUmV3cml0ZUVsc2VCbG9ja3MuY3BwICovLAogCQkJCTMxMDEyREVG
MThCOTdCOUIwMDM5MDYyRiAvKiBSZXdyaXRlRWxzZUJsb2Nrcy5oICovLAogCQkJCTMxMDEyREYw
MThCOTdCOUIwMDM5MDYyRiAvKiBTZWFyY2hTeW1ib2wuY3BwICovLApAQCAtNzU3LDMxICs4NTQs
NiBAQAogCQkJcGF0aCA9IHRyYW5zbGF0b3I7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwog
CQl9OwotCQkzMTAxMkRBOTE4Qjk3QjlCMDAzOTA2MkYgLyogZGVwZ3JhcGggKi8gPSB7Ci0JCQlp
c2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTMxMDEyREFBMThCOTdCOUIwMDM5
MDYyRiAvKiBEZXBlbmRlbmN5R3JhcGguY3BwICovLAotCQkJCTMxMDEyREFCMThCOTdCOUIwMDM5
MDYyRiAvKiBEZXBlbmRlbmN5R3JhcGguaCAqLywKLQkJCQkzMTAxMkRBQzE4Qjk3QjlCMDAzOTA2
MkYgLyogRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5jcHAgKi8sCi0JCQkJMzEwMTJEQUQxOEI5N0I5
QjAwMzkwNjJGIC8qIERlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuaCAqLywKLQkJCQkzMTAxMkRBRTE4
Qjk3QjlCMDAzOTA2MkYgLyogRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmNwcCAqLywKLQkJCQkzMTAx
MkRBRjE4Qjk3QjlCMDAzOTA2MkYgLyogRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmggKi8sCi0JCQkJ
MzEwMTJEQjAxOEI5N0I5QjAwMzkwNjJGIC8qIERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlLmNwcCAq
LywKLQkJCSk7Ci0JCQlwYXRoID0gZGVwZ3JhcGg7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwotCQl9OwotCQkzMTAxMkRGNjE4Qjk3QjlCMDAzOTA2MkYgLyogdGltaW5nICovID0gewotCQkJ
aXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQkzMTAxMkRGNzE4Qjk3QjlCMDAz
OTA2MkYgLyogUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZy5jcHAgKi8sCi0JCQkJMzEwMTJE
RjgxOEI5N0I5QjAwMzkwNjJGIC8qIFJlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmcuaCAqLywK
LQkJCQkzMTAxMkRGOTE4Qjk3QjlCMDAzOTA2MkYgLyogUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1p
bmcuY3BwICovLAotCQkJCTMxMDEyREZBMThCOTdCOUIwMDM5MDYyRiAvKiBSZXN0cmljdFZlcnRl
eFNoYWRlclRpbWluZy5oICovLAotCQkJKTsKLQkJCXBhdGggPSB0aW1pbmc7Ci0JCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwotCQl9OwogCQkzMTJCREIwNzE1RkVDOEU2MDA5N0VCQzcgLyogbWlz
YyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC03OTQsNiAr
ODY2LDMxIEBACiAJCTVDMURCQzQ3MUIwNDM4QjcwMDIzNTU1MiAvKiBsaWJBTkdMRSAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNUNDRDgxNTcxREJGRTk5
OTAwNjA2NkI4IC8qIGFuZ2xldHlwZXMuaW5sICovLAorCQkJCTVDQ0Q4MTU4MURCRkU5OTkwMDYw
NjZCOCAvKiBDb250ZXh0U3RhdGUuY3BwICovLAorCQkJCTVDQ0Q4MTU5MURCRkU5OTkwMDYwNjZC
OCAvKiBDb250ZXh0U3RhdGUuaCAqLywKKwkJCQk1Q0NEODE1QTFEQkZFOTk5MDA2MDY2QjggLyog
RGVidWcuY3BwICovLAorCQkJCTVDQ0Q4MTVCMURCRkU5OTkwMDYwNjZCOCAvKiBEZWJ1Zy5oICov
LAorCQkJCTVDQ0Q4MTVDMURCRkU5OTkwMDYwNjZCOCAvKiBIYW5kbGVSYW5nZUFsbG9jYXRvci5j
cHAgKi8sCisJCQkJNUNDRDgxNUQxREJGRTk5OTAwNjA2NkI4IC8qIEhhbmRsZVJhbmdlQWxsb2Nh
dG9yLmggKi8sCisJCQkJNUNDRDgxNUUxREJGRTk5OTAwNjA2NkI4IC8qIEltYWdlLmNwcCAqLywK
KwkJCQk1Q0NEODE1RjFEQkZFOTk5MDA2MDY2QjggLyogSW1hZ2UuaCAqLywKKwkJCQk1Q0NEODE2
MDFEQkZFOTk5MDA2MDY2QjggLyogSW5kZXhSYW5nZUNhY2hlLmNwcCAqLywKKwkJCQk1Q0NEODE2
MTFEQkZFOTk5MDA2MDY2QjggLyogSW5kZXhSYW5nZUNhY2hlLmggKi8sCisJCQkJNUNDRDgxNjIx
REJGRTk5OTAwNjA2NkI4IC8qIFBhdGguY3BwICovLAorCQkJCTVDQ0Q4MTYzMURCRkU5OTkwMDYw
NjZCOCAvKiBQYXRoLmggKi8sCisJCQkJNUNDRDgxNjQxREJGRTk5OTAwNjA2NkI4IC8qIHF1ZXJ5
dXRpbHMuY3BwICovLAorCQkJCTVDQ0Q4MTY1MURCRkU5OTkwMDYwNjZCOCAvKiBxdWVyeXV0aWxz
LmggKi8sCisJCQkJNUNDRDgxNjYxREJGRTk5OTAwNjA2NkI4IC8qIHNpZ25hbF91dGlscy5jcHAg
Ki8sCisJCQkJNUNDRDgxNjcxREJGRTk5OTAwNjA2NkI4IC8qIHNpZ25hbF91dGlscy5oICovLAor
CQkJCTVDQ0Q4MTY4MURCRkU5OTkwMDYwNjZCOCAvKiBTdHJlYW0uY3BwICovLAorCQkJCTVDQ0Q4
MTY5MURCRkU5OTkwMDYwNjZCOCAvKiBTdHJlYW0uaCAqLywKKwkJCQk1Q0NEODE2QTFEQkZFOTk5
MDA2MDY2QjggLyogdmFsaWRhdGlvbkVTMzEuY3BwICovLAorCQkJCTVDQ0Q4MTZCMURCRkU5OTkw
MDYwNjZCOCAvKiB2YWxpZGF0aW9uRVMzMS5oICovLAorCQkJCTVDQ0Q4MTZDMURCRkU5OTkwMDYw
NjZCOCAvKiBWZXJzaW9uLmggKi8sCisJCQkJNUNDRDgxNkQxREJGRTk5OTAwNjA2NkI4IC8qIFZl
cnNpb24uaW5sICovLAorCQkJCTVDQ0Q4MTZFMURCRkU5OTkwMDYwNjZCOCAvKiBWZXJ0ZXhBdHRy
aWJ1dGUuaW5sICovLAorCQkJCTVDQ0Q4MTZGMURCRkU5OTkwMDYwNjZCOCAvKiBXb3JrYXJvdW5k
cy5oICovLAogCQkJCTVDMURCQzQ4MUIwNDM4RDIwMDIzNTU1MiAvKiBhbmdsZXR5cGVzLmNwcCAq
LywKIAkJCQk1QzFEQkM0OTFCMDQzOEQyMDAyMzU1NTIgLyogYW5nbGV0eXBlcy5oICovLAogCQkJ
CTVDMURCQzRBMUIwNDM4RDIwMDIzNTU1MiAvKiBBdHRyaWJ1dGVNYXAuY3BwICovLApAQCAtODEw
LDggKzkwNyw2IEBACiAJCQkJNUMxREJDNTYxQjA0MzhEMjAwMjM1NTUyIC8qIENvbnN0YW50cy5o
ICovLAogCQkJCTVDMURCQzU3MUIwNDM4RDIwMDIzNTU1MiAvKiBDb250ZXh0LmNwcCAqLywKIAkJ
CQk1QzFEQkM1ODFCMDQzOEQyMDAyMzU1NTIgLyogQ29udGV4dC5oICovLAotCQkJCTVDMURCQzU5
MUIwNDM4RDIwMDIzNTU1MiAvKiBEYXRhLmNwcCAqLywKLQkJCQk1QzFEQkM1QTFCMDQzOEQyMDAy
MzU1NTIgLyogRGF0YS5oICovLAogCQkJCTVDMURCQzVCMUIwNDM4RDIwMDIzNTU1MiAvKiBEZXZp
Y2UuY3BwICovLAogCQkJCTVDMURCQzVDMUIwNDM4RDIwMDIzNTU1MiAvKiBEZXZpY2UuaCAqLywK
IAkJCQk1QzFEQkM1RDFCMDQzOEQyMDAyMzU1NTIgLyogRGlzcGxheS5jcHAgKi8sCkBAIC04MjIs
NyArOTE3LDYgQEAKIAkJCQk1QzFEQkM2MjFCMDQzOEQyMDAyMzU1NTIgLyogZmVhdHVyZXMuaCAq
LywKIAkJCQk1QzFEQkM2NDFCMDQzOEQyMDAyMzU1NTIgLyogRmVuY2UuY3BwICovLAogCQkJCTVD
MURCQzY1MUIwNDM4RDIwMDIzNTU1MiAvKiBGZW5jZS5oICovLAotCQkJCTVDMURCQzY2MUIwNDM4
RDIwMDIzNTU1MiAvKiBGbG9hdDE2VG9GbG9hdDMyLmNwcCAqLywKIAkJCQk1QzFEQkM2ODFCMDQz
OEQyMDAyMzU1NTIgLyogZm9ybWF0dXRpbHMuY3BwICovLAogCQkJCTVDMURCQzY5MUIwNDM4RDIw
MDIzNTU1MiAvKiBmb3JtYXR1dGlscy5oICovLAogCQkJCTVDMURCQzZBMUIwNDM4RDIwMDIzNTU1
MiAvKiBGcmFtZWJ1ZmZlci5jcHAgKi8sCkBAIC04NzksNiArOTczLDEzIEBACiAJCTVDQzdENDU5
MTkxMDI2MDgwMDBCOEMxRiAvKiBjb21tb24gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTVDQ0Q4MTg2MURCRkVBMTAwMDYwNjZCOCAvKiBCaXRTZXRJdGVy
YXRvci5oICovLAorCQkJCTVDQ0Q4MTg3MURCRkVBMTAwMDYwNjZCOCAvKiBDb2xvci5oICovLAor
CQkJCTVDQ0Q4MTg4MURCRkVBMTAwMDYwNjZCOCAvKiBDb2xvci5pbmwgKi8sCisJCQkJNUNDRDgx
ODkxREJGRUExMDAwNjA2NkI4IC8qIEZsb2F0MTZUb0Zsb2F0MzIuY3BwICovLAorCQkJCTVDQ0Q4
MThBMURCRkVBMTAwMDYwNjZCOCAvKiBtYXRyaXhfdXRpbHMuaCAqLywKKwkJCQk1Q0NEODE4QjFE
QkZFQTEwMDA2MDY2QjggLyogc3RyaW5nX3V0aWxzLmNwcCAqLywKKwkJCQk1Q0NEODE4QzFEQkZF
QTEwMDA2MDY2QjggLyogc3RyaW5nX3V0aWxzLmggKi8sCiAJCQkJNUMxREJCRTcxQjA0MzZFQzAw
MjM1NTUyIC8qIGFuZ2xldXRpbHMuY3BwICovLAogCQkJCTVDMURCQkU4MUIwNDM2RUMwMDIzNTU1
MiAvKiBNZW1vcnlCdWZmZXIuY3BwICovLAogCQkJCTVDMURCQkU5MUIwNDM2RUMwMDIzNTU1MiAv
KiBNZW1vcnlCdWZmZXIuaCAqLywKQEAgLTEwMDUsNyArMTEwNiw2IEBACiAJCQkJQTI2NEY4QTEx
Njk3NERFRDAwNkZBQTVBIC8qIE1hY3JvRXhwYW5kZXIuY3BwICovLAogCQkJCUEyNjRGOEEyMTY5
NzRERUQwMDZGQUE1QSAvKiBNYWNyb0V4cGFuZGVyLmggKi8sCiAJCQkJQTI2NEY4QTMxNjk3NERF
RDAwNkZBQTVBIC8qIG51bWVyaWNfbGV4LmggKi8sCi0JCQkJQTI2NEY4QTQxNjk3NERFRDAwNkZB
QTVBIC8qIHBwX3V0aWxzLmggKi8sCiAJCQkJQTI2NEY4QTUxNjk3NERFRDAwNkZBQTVBIC8qIFBy
ZXByb2Nlc3Nvci5jcHAgKi8sCiAJCQkJQTI2NEY4QTYxNjk3NERFRDAwNkZBQTVBIC8qIFByZXBy
b2Nlc3Nvci5oICovLAogCQkJCUEyNjRGOEE3MTY5NzRERUQwMDZGQUE1QSAvKiBTb3VyY2VMb2Nh
dGlvbi5oICovLApAQCAtMTAzOCwxMCArMTEzOCwxMiBAQAogCQkJCTVDMzE1RDA3MUNDNUI2REEw
MDc3NjY5NyAvKiBSZW1vdmVEeW5hbWljSW5kZXhpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTMx
MDEyRTNDMThCOTdCOUIwMDM5MDYyRiAvKiBJbml0aWFsaXplUGFyc2VDb250ZXh0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBMDhDM0NERDE2RDZDQjYxMDAzRjBCODMgLyogQXJyYXlCb3VuZHNDbGFt
cGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1Q0NEODE3MzFEQkZFOTk5MDA2MDY2QjggLyogRGVi
dWcuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQzdENDZGMTkxMDI2MjEwMDBCOEMxRiAvKiBkZWJ1
Zy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJEREQxQjA0MzhEMzAwMjM1NTUyIC8qIENvbXBp
bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTAxMkUzRTE4Qjk3QjlCMDAzOTA2MkYgLyogSW5p
dGlhbGl6ZVZhcmlhYmxlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJGMkExQjA0MzhEMzAw
MjM1NTUyIC8qIFNoYWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUNDRDgxN0IxREJGRTk5OTAw
NjA2NkI4IC8qIFBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMDEyRTE0MThCOTdCOUIwMDM5
MDYyRiAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEw
MTJFNTUxOEI5N0I5QjAwMzkwNjJGIC8qIFBhcnNlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUMxREJERUYxQjA0MzhEMzAwMjM1NTUyIC8qIEZlbmNlLmggaW4gSGVhZGVycyAqLywKQEAg
LTEwNTQsMTYgKzExNTYsMTkgQEAKIAkJCQkzMTAxMkU2QjE4Qjk3QjlCMDAzOTA2MkYgLyogVHJh
bnNsYXRvckVTU0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCRTAwMUIwNDM4RDMwMDIzNTU1
MiAvKiBQcm9ncmFtLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkMyQjFCMDQzNzVGMDAyMzU1
NTIgLyogQ2FsbERBRy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUNDRDgxODUxREJGRTk5OTAwNjA2
NkI4IC8qIFdvcmthcm91bmRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTAxMkUxNjE4Qjk3QjlC
MDAzOTA2MkYgLyogQ29tbW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTAxMkUyMDE4Qjk3QjlC
MDAzOTA2MkYgLyogRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQkz
MTAxMkU3QzE4Qjk3QjlCMDAzOTA2MkYgLyogVmFyaWFibGVJbmZvLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1QzFEQkREQjFCMDQzOEQzMDAyMzU1NTIgLyogQ2Fwcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUMzMTVEMDkxQ0M1QjZEQTAwNzc2Njk3IC8qIFJlbW92ZVBvdy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUMxREJFMDIxQjA0MzhEMzAwMjM1NTUyIC8qIFF1ZXJ5LmggaW4gSGVhZGVycyAqLywK
IAkJCQkzMTAxMkU2MTE4Qjk3QjlCMDAzOTA2MkYgLyogU2VhcmNoU3ltYm9sLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1Q0NEODFCNjFEQkZFQTVDMDA2MDY2QjggLyogUXVhbGlmaWVyVHlwZXMuaCBp
biBIZWFkZXJzICovLAorCQkJCTVDQ0Q4MUI0MURCRkVBNUMwMDYwNjZCOCAvKiBJbnRlcm1Ob2Rl
UGF0dGVybk1hdGNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCRjMxMUIwNDM4RDMwMDIz
NTU1MiAvKiBUZXh0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTAxMkU0NzE4Qjk3QjlCMDAz
OTA2MkYgLyogTm9kZVNlYXJjaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NEY4QUQxNjk3NERF
RDAwNkZBQTVBIC8qIERpYWdub3N0aWNzQmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUNDRDgx
QUQxREJGRUE1QzAwNjA2NkI4IC8qIEFkZERlZmF1bHRSZXR1cm5TdGF0ZW1lbnRzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1QzFEQkUwNDFCMDQzOEQzMDAyMzU1NTIgLyogcXVlcnljb252ZXJzaW9u
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEwMTJFNEMxOEI5N0I5QjAwMzkwNjJGIC8qIE91dHB1
dEVTU0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCRjI2MUIwNDM4RDMwMDIzNTU1MiAvKiBS
ZXNvdXJjZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTA3NiwxNCArMTE4MSwxNiBAQAog
CQkJCTMxMDEyRTUwMThCOTdCOUIwMDM5MDYyRiAvKiBPdXRwdXRHTFNMQmFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNUNDN0Q0NzExOTEwMjYyMTAwMEI4QzFGIC8qIGV2ZW50X3RyYWNlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNUMxREJERTcxQjA0MzhEMzAwMjM1NTUyIC8qIERldmljZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNUNDRDgxQjgxREJGRUE1QzAwNjA2NkI4IC8qIFJld3JpdGVUZXhl
bEZldGNoT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkUwNjFCMDQzOEQzMDAyMzU1
NTIgLyogUmVmQ291bnRPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMzE1RDA1MUNDNUI2
REEwMDc3NjY5NyAvKiBSZWNvcmRDb25zdGFudFByZWNpc2lvbi5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJMzEwMTJFNUQxOEI5N0I5QjAwMzkwNjJGIC8qIFJlbmFtZUZ1bmN0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1QzFEQkRGQTFCMDQzOEQzMDAyMzU1NTIgLyogaGlzdG9ncmFtX21hY3Jvcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJERDcxQjA0MzhEMzAwMjM1NTUyIC8qIEJpbmFyeVN0
cmVhbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUNDRDgxQUIxREJGRUE1QzAwNjA2NkI4IC8qIEFk
ZEFuZFRydWVUb0xvb3BDb25kaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMDEyRTNBMThC
OTdCOUIwMDM5MDYyRiAvKiBJbml0aWFsaXplR2xvYmFscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NUMxREJDMjkxQjA0Mzc1RjAwMjM1NTUyIC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yR0xTTC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJCRTYxQjA0MDc1QjAwMjM1NTUyIC8qIFNoYWRlclZh
cnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTVDQ0Q4MUMwMURCRkVBNUMwMDYwNjZCOCAvKiBVc2VJ
bnRlcmZhY2VCbG9ja0ZpZWxkcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMzMTVEMEIxQ0M1QjZE
QTAwNzc2Njk3IC8qIFJld3JpdGVEb1doaWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkMy
NTFCMDQzNzVGMDAyMzU1NTIgLyogYmxvY2tsYXlvdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
MURCQzI3MUIwNDM3NUYwMDIzNTU1MiAvKiBibG9ja2xheW91dEhMU0wuaCBpbiBIZWFkZXJzICov
LApAQCAtMTA5MSwxNCArMTE5OCwxOSBAQAogCQkJCTVDOUZGRjRGMTkxMDJBMDAwMDI1QjhGQSAv
KiBGbGFnU3RkMTQwU3RydWN0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJERjkxQjA0MzhE
MzAwMjM1NTUyIC8qIEhhbmRsZUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJE
RDkxQjA0MzhEMzAwMjM1NTUyIC8qIEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUNDRDgx
QkMxREJGRUE1QzAwNjA2NkI4IC8qIFNpbXBsaWZ5TG9vcENvbmRpdGlvbnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTMxMDEyRTI3MThCOTdCOUIwMDM5MDYyRiAvKiBEaWFnbm9zdGljcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNUMxREJDMzYxQjA0Mzc1RjAwMjM1NTUyIC8qIFBydW5lRW1wdHlEZWNs
YXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTVDQ0Q4MThFMURCRkVBMTAwMDYwNjZCOCAv
KiBDb2xvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMzMTVEMDExQ0M1QjZEQTAwNzc2Njk3IC8q
IERlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkRGNjFC
MDQzOEQzMDAyMzU1NTIgLyogRnJhbWVidWZmZXJBdHRhY2htZW50LmggaW4gSGVhZGVycyAqLywK
KwkJCQk1Q0NEODE5MjFEQkZFQTEwMDA2MDY2QjggLyogc3RyaW5nX3V0aWxzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1Q0NEODFDNDFEQkZFQUQ5MDA2MDY2QjggLyogRW11bGF0ZUdMRnJhZ0NvbG9y
QnJvYWRjYXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0M3RDQ2QjE5MTAyNjIwMDAwQjhDMUYg
LyogYW5nbGV1dGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEwMTJFMzIxOEI5N0I5QjAwMzkw
NjJGIC8qIGdsc2xhbmdfdGFiLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY0RjhCMTE2OTc0REVE
MDA2RkFBNUEgLyogRGlyZWN0aXZlUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkYz
NDFCMDQzOEQzMDAyMzU1NTIgLyogVHJhbnNmb3JtRmVlZGJhY2suaCBpbiBIZWFkZXJzICovLAor
CQkJCTVDQ0Q4MTc1MURCRkU5OTkwMDYwNjZCOCAvKiBIYW5kbGVSYW5nZUFsbG9jYXRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzEwMTJFNTgxOEI5N0I5QjAwMzkwNjJGIC8qIFByYWdtYS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNUMxREJERTAxQjA0MzhEMzAwMjM1NTUyIC8qIENvbmZpZy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzEwMTJFNjUxOEI5N0I5QjAwMzkwNjJGIC8qIFN5bWJvbFRhYmxl
LmggaW4gSGVhZGVycyAqLywKQEAgLTExMTAsMTggKzEyMjIsMTkgQEAKIAkJCQkzMTAxMkUzNTE4
Qjk3QjlCMDAzOTA2MkYgLyogSW5mb1NpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCRjNB
MUIwNDM4RDMwMDIzNTU1MiAvKiB2YWxpZGF0aW9uRVMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
MURCRjQwMUIwNDM4RDMwMDIzNTU1MiAvKiBWZXJ0ZXhBcnJheS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNUNDRDgxODMxREJGRTk5OTAwNjA2NkI4IC8qIHZhbGlkYXRpb25FUzMxLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1Q0NEODE3NzFEQkZFOTk5MDA2MDY2QjggLyogSW1hZ2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVDMURCREVCMUIwNDM4RDMwMDIzNTU1MiAvKiBFcnJvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNUMxREJDMkMxQjA0Mzc1RjAwMjM1NTUyIC8qIENvbXBpbGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1QzFEQkRENDFCMDQzOEQzMDAyMzU1NTIgLyogYW5nbGV0eXBlcy5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJMzEwMTJFMUMxOEI5N0I5QjAwMzkwNjJGIC8qIERlcGVuZGVuY3lHcmFw
aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEwMTJFNzAxOEI5N0I5QjAwMzkwNjJGIC8qIFR5cGVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkMzQTFCMDQzNzVGMDAyMzU1NTIgLyogUmVtb3Zl
U3dpdGNoRmFsbFRocm91Z2guaCBpbiBIZWFkZXJzICovLAotCQkJCTMxMDEyRTY3MThCOTdCOUIw
MDM5MDYyRiAvKiBSZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1Q0M3RDQ3QjE5MTAyNjIxMDAwQjhDMUYgLyogdmVyc2lvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUMxREJGMjgxQjA0MzhEMzAwMjM1NTUyIC8qIFNhbXBsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDMzE1RDExMUNDNUI2REEwMDc3NjY5NyAvKiBWYWxpZGF0ZUdsb2JhbEluaXRpYWxp
emVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkYzODFCMDQzOEQzMDAyMzU1NTIgLyogdmFs
aWRhdGlvbkVHTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJGM0MxQjA0MzhEMzAwMjM1NTUy
IC8qIHZhbGlkYXRpb25FUzIuaCBpbiBIZWFkZXJzICovLAorCQkJCTVDQ0Q4MTkwMURCRkVBMTAw
MDYwNjZCOCAvKiBtYXRyaXhfdXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMDEyRTc4MThC
OTdCOUIwMDM5MDYyRiAvKiB1dGlsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkRFQzFCMDQz
OEQzMDAyMzU1NTIgLyogZmVhdHVyZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRGOEI1MTY5
NzRERUQwMDZGQUE1QSAvKiBJbnB1dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTM1LDkgKzEyNDgs
MTAgQEAKIAkJCQkzMTAxMkUzOTE4Qjk3QjlCMDAzOTA2MkYgLyogSW5pdGlhbGl6ZURsbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNUMxREJCRjIxQjA0MzZFQzAwMjM1NTUyIC8qIE1lbW9yeUJ1ZmZl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NEY4QjcxNjk3NERFRDAwNkZBQTVBIC8qIExleGVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1Q0NEODE3MTFEQkZFOTk5MDA2MDY2QjggLyogQ29udGV4
dFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzMxNUQwRDFDQzVCNkRBMDA3NzY2OTcgLyog
U2VwYXJhdGVFeHByZXNzaW9uc1JldHVybmluZ0FycmF5cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NUNDRDgxQUYxREJGRUE1QzAwNjA2NkI4IC8qIEJyZWFrVmFyaWFibGVBbGlhc2luZ0luSW5uZXJM
b29wcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NEY4QjkxNjk3NERFRDAwNkZBQTVBIC8qIE1h
Y3JvLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTAxMkU1QTE4Qjk3QjlCMDAzOTA2MkYgLyogUXVh
bGlmaWVyQWxpdmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMDEyRTU3MThCOTdCOUIwMDM5MDYy
RiAvKiBQb29sQWxsb2MuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCQzMxMUIwNDM3NUYwMDIz
NTU1MiAvKiBJbnRlcm1Ob2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTAxMkUzNzE4Qjk3QjlC
MDAzOTA2MkYgLyogSW5pdGlhbGl6ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTQ2LDE3ICsxMjYw
LDE5IEBACiAJCQkJMzEwMTJFMUExOEI5N0I5QjAwMzkwNjJGIC8qIENvbnN0YW50VW5pb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTVDMURCREUzMUIwNDM4RDMwMDIzNTU1MiAvKiBDb250ZXh0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkYzNjFCMDQzOEQzMDAyMzU1NTIgLyogVW5pZm9ybS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNUNDRDgxN0QxREJGRTk5OTAwNjA2NkI4IC8qIHF1ZXJ5dXRp
bHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCREZDMUIwNDM4RDMwMDIzNTU1MiAvKiBJbWFn
ZUluZGV4LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY0RjhCQjE2OTc0REVEMDA2RkFBNUEgLyog
TWFjcm9FeHBhbmRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUNDRDgxODExREJGRTk5OTAwNjA2
NkI4IC8qIFN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJERTExQjA0MzhEMzAwMjM1
NTUyIC8qIENvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEwMTJFMkQxOEI5N0I5QjAw
MzkwNjJGIC8qIGdsc2xhbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCRjJGMUIwNDM4RDMw
MDIzNTU1MiAvKiBTdXJmYWNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1Q0NEODE3RjFEQkZFOTk5
MDA2MDY2QjggLyogc2lnbmFsX3V0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkYyQzFC
MDQzOEQzMDAyMzU1NTIgLyogU3RhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTVDQ0Q4MUJBMURC
RkVBNUMwMDYwNjZCOCAvKiBSZXdyaXRlVW5hcnlNaW51c09wZXJhdG9ySW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1QzFEQkMzODFCMDQzNzVGMDAyMzU1NTIgLyogUmVnZW5lcmF0ZVN0cnVjdE5h
bWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY0RjhCQzE2OTc0REVEMDA2RkFBNUEgLyogbnVt
ZXJpY19sZXguaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCQzNDMUIwNDM3NUYwMDIzNTU1MiAv
KiBTY2FsYXJpemVWZWNBbmRNYXRDb25zdHJ1Y3RvckFyZ3MuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTMxMDEyRTY5MThCOTdCOUIwMDM5MDYyRiAvKiBSZXN0cmljdFZlcnRleFNoYWRlclRpbWluZy5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJQTI2NEY4QkQxNjk3NERFRDAwNkZBQTVBIC8qIHBwX3V0aWxz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTAxMkUyQTE4Qjk3QjlCMDAzOTA2MkYgLyogRXh0ZW5z
aW9uQmVoYXZpb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCQzIzMUIwNDM3NUYwMDIzNTU1
MiAvKiBBU1RNZXRhZGF0YUhMU0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCQzJFMUIwNDM3
NUYwMDIzNTU1MiAvKiBFbXVsYXRlUHJlY2lzaW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTExNjcs
MTggKzEyODMsMjEgQEAKIAkJCQlBMjY0RjhDMDE2OTc0REVEMDA2RkFBNUEgLyogU291cmNlTG9j
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMDEyRTRFMThCOTdCOUIwMDM5MDYyRiAvKiBP
dXRwdXRHTFNMLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkRGMjFCMDQzOEQzMDAyMzU1NTIg
LyogZm9ybWF0dXRpbHMuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxMDEyRTFFMThCOTdCOUIwMDM5
MDYyRiAvKiBEZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFE
QkRFOTFCMDQzOEQzMDAyMzU1NTIgLyogRGlzcGxheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEw
MTJFN0ExOEI5N0I5QjAwMzkwNjJGIC8qIFZhbGlkYXRlTGltaXRhdGlvbnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVDMURCQzM0MUIwNDM3NUYwMDIzNTU1MiAvKiBPcGVyYXRvci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNUNDRDgxQkUxREJGRUE1QzAwNjA2NkI4IC8qIFNwbGl0U2VxdWVuY2VPcGVy
YXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUNDRDgxNzkxREJGRTk5OTAwNjA2NkI4IC8qIElu
ZGV4UmFuZ2VDYWNoZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUNDRDgxOEQxREJGRUExMDAwNjA2
NkI4IC8qIEJpdFNldEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkM0MDFCMDQz
NzVGMDAyMzU1NTIgLyogU2VwYXJhdGVEZWNsYXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDMzE1Q0ZGMUNDNUI2REEwMDc3NjY5NyAvKiBDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NUMxREJERDYxQjA0MzhEMzAwMjM1NTUyIC8qIEF0dHJpYnV0ZU1hcC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNUNDRDgxODQxREJGRTk5OTAwNjA2NkI4IC8qIFZlcnNpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTMxMDEyRTMzMThCOTdCOUIwMDM5MDYyRiAvKiBIYXNoTmFtZXMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTVDQ0Q4MUIyMURCRkVBNUMwMDYwNjZCOCAvKiBFeHBhbmRJbnRlZ2VyUG93RXhw
cmVzc2lvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRGOEMyMTY5NzRERUQwMDZGQUE1QSAv
KiBUb2tlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEwMTJFMjkxOEI5N0I5QjAwMzkwNjJGIC8q
IERpcmVjdGl2ZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMDEyRTEyMThCOTdCOUIw
MDM5MDYyRiAvKiBCYXNlVHlwZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTVDMURCREU1MUIwNDM4
RDMwMDIzNTU1MiAvKiBEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkUwODFCMDQzOEQz
MDAyMzU1NTIgLyogUmVuZGVyYnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY0RjhDNDE2
OTc0REVEMDA2RkFBNUEgLyogVG9rZW5pemVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CkBAIC0x
MjQ4LDE3ICsxMzY3LDIwIEBACiAJCQkJNUMxREJERjUxQjA0MzhEMzAwMjM1NTUyIC8qIEZyYW1l
YnVmZmVyQXR0YWNobWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFEQkM0NDFCMDQzNzVG
MDAyMzU1NTIgLyogVHlwZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzIzMDlBNTYxODNDMjdE
RTAwMzcwQjkzIC8qIFRva2VuaXplci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1Q0NEODFCMTFE
QkZFQTVDMDA2MDY2QjggLyogRXhwYW5kSW50ZWdlclBvd0V4cHJlc3Npb25zLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTMxMDEyRTZDMThCOTdCOUIwMDM5MDYyRiAvKiBUcmFuc2xhdG9yR0xTTC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzMxNUQwRTFDQzVCNkRBMDA3NzY2OTcgLyogVW5mb2xk
U2hvcnRDaXJjdWl0VG9JZi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFEQkY0MTFCMDQzOEQz
MDAyMzU1NTIgLyogVmVydGV4QXR0cmlidXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjRG
OEFDMTY5NzRERUQwMDZGQUE1QSAvKiBEaWFnbm9zdGljc0Jhc2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNUMzMTVEMTAxQ0M1QjZEQTAwNzc2Njk3IC8qIFZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNUMxREJERTQxQjA0MzhEMzAwMjM1NTUyIC8qIERh
dGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxREJGMjkxQjA0MzhEMzAwMjM1NTUyIC8qIFNo
YWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTAxMkUxNTE4Qjk3QjlCMDAzOTA2MkYgLyog
Q29kZUdlbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFEQkRGODFCMDQzOEQzMDAyMzU1NTIg
LyogSGFuZGxlQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxMDEyRTNGMThCOTdC
OUIwMDM5MDYyRiAvKiBJbnRlcm1lZGlhdGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUNDRDgx
QjcxREJGRUE1QzAwNjA2NkI4IC8qIFJld3JpdGVUZXhlbEZldGNoT2Zmc2V0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDQzdENDcyMTkxMDI2MjEwMDBCOEMxRiAvKiBtYXRodXRpbC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk1Q0NEODE3NjFEQkZFOTk5MDA2MDY2QjggLyogSW1hZ2UuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNUNDRDgxQUExREJGRUE1QzAwNjA2NkI4IC8qIEFkZEFuZFRydWVU
b0xvb3BDb25kaXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxREJFMDcxQjA0MzhEMzAw
MjM1NTUyIC8qIFJlbmRlcmJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTAxMkUzQjE4
Qjk3QjlCMDAzOTA2MkYgLyogSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1QzMxNUQwMjFDQzVCNkRBMDA3NzY2OTcgLyogRXh0ZW5zaW9uR0xTTC5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTEyNjgsNyArMTM5MCw2IEBACiAJCQkJNUMxREJGMjcxQjA0MzhEMzAw
MjM1NTUyIC8qIFNhbXBsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxREJERkIxQjA0MzhE
MzAwMjM1NTUyIC8qIEltYWdlSW5kZXguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxREJEREEx
QjA0MzhEMzAwMjM1NTUyIC8qIENhcHMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMzEwMTJFMjEx
OEI5N0I5QjAwMzkwNjJGIC8qIERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTMxMDEyRTVFMThCOTdCOUIwMDM5MDYyRiAvKiBSZXdyaXRlRWxzZUJsb2Nrcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFEQkMyQTFCMDQzNzVGMDAyMzU1NTIgLyogQ2FsbERB
Ry5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFEQkMyRDFCMDQzNzVGMDAyMzU1NTIgLyogRW11
bGF0ZVByZWNpc2lvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEyNzgsMTMgKzEzOTksMTYgQEAK
IAkJCQkzMTAxMkU0RDE4Qjk3QjlCMDAzOTA2MkYgLyogT3V0cHV0R0xTTC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkzMTAxMkUzMDE4Qjk3QjlCMDAzOTA2MkYgLyogZ2xzbGFuZ19sZXguY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUMzMTVEMDAxQ0M1QjZEQTAwNzc2Njk3IC8qIERlZmVyR2xvYmFs
SW5pdGlhbGl6ZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDQ0Q4MTcwMURCRkU5OTkwMDYw
NjZCOCAvKiBDb250ZXh0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxREJERTYxQjA0
MzhEMzAwMjM1NTUyIC8qIERldmljZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFEQkRERjFC
MDQzOEQzMDAyMzU1NTIgLyogQ29uZmlnLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMURCREVB
MUIwNDM4RDMwMDIzNTU1MiAvKiBFcnJvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFEQkYz
MDFCMDQzOEQzMDAyMzU1NTIgLyogVGV4dHVyZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTAx
MkU0MTE4Qjk3QjlCMDAzOTA2MkYgLyogaW50ZXJtT3V0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTVDQ0Q4MThGMURCRkVBMTAwMDYwNjZCOCAvKiBGbG9hdDE2VG9GbG9hdDMyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDMURCQzM3MUIwNDM3NUYwMDIzNTU1MiAvKiBSZWdlbmVyYXRlU3RydWN0
TmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEwMTJFNkUxOEI5N0I5QjAwMzkwNjJGIC8q
IFRyYW5zbGF0b3JITFNMLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDQ0Q4MTdBMURCRkU5OTkw
MDYwNjZCOCAvKiBQYXRoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjRGOEIwMTY5NzRERUQw
MDZGQUE1QSAvKiBEaXJlY3RpdmVQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxREJD
MjQxQjA0Mzc1RjAwMjM1NTUyIC8qIGJsb2NrbGF5b3V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTVDMURCQzM5MUIwNDM3NUYwMDIzNTU1MiAvKiBSZW1vdmVTd2l0Y2hGYWxsVGhyb3VnaC5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTEzMDUsMjkgKzE0MjksMzMgQEAKIAkJCQkzMTAxMkU2MjE4Qjk3
QjlCMDAzOTA2MkYgLyogU2hhZGVyTGFuZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFEQkYy
RTFCMDQzOEQzMDAyMzU1NTIgLyogU3VyZmFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFE
QkYzQjFCMDQzOEQzMDAyMzU1NTIgLyogdmFsaWRhdGlvbkVTMi5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk1Q0NEODE4MDFEQkZFOTk5MDA2MDY2QjggLyogU3RyZWFtLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTMxMDEyRTM4MThCOTdCOUIwMDM5MDYyRiAvKiBJbml0aWFsaXplRGxsLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTVDMURCRjNGMUIwNDM4RDMwMDIzNTU1MiAvKiBWZXJ0ZXhBcnJheS5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQk1QzFEQkRGMDFCMDQzOEQzMDAyMzU1NTIgLyogRmxvYXQx
NlRvRmxvYXQzMi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFEQkYzRDFCMDQzOEQzMDAyMzU1
NTIgLyogdmFsaWRhdGlvbkVTMy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFEQkRFODFCMDQz
OEQzMDAyMzU1NTIgLyogRGlzcGxheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMjY0RjhCODE2
OTc0REVEMDA2RkFBNUEgLyogTWFjcm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTI2NEY4QkEx
Njk3NERFRDAwNkZBQTVBIC8qIE1hY3JvRXhwYW5kZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NUNDRDgxNzQxREJGRTk5OTAwNjA2NkI4IC8qIEhhbmRsZVJhbmdlQWxsb2NhdG9yLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTVDQ0Q4MUI1MURCRkVBNUMwMDYwNjZCOCAvKiBRdWFsaWZpZXJUeXBl
cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1Q0NEODFCRjFEQkZFQTVDMDA2MDY2QjggLyogVXNl
SW50ZXJmYWNlQmxvY2tGaWVsZHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEwMTJFNzMxOEI5
N0I5QjAwMzkwNjJGIC8qIFVuZm9sZFNob3J0Q2lyY3VpdEFTVC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1QzFEQkUwMzFCMDQzOEQzMDAyMzU1NTIgLyogcXVlcnljb252ZXJzaW9ucy5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQkzMTAxMkU2ODE4Qjk3QjlCMDAzOTA2MkYgLyogUmVzdHJpY3RWZXJ0
ZXhTaGFkZXJUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUNDRDgxNzgxREJGRTk5OTAw
NjA2NkI4IC8qIEluZGV4UmFuZ2VDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTAxMkUx
MzE4Qjk3QjlCMDAzOTA2MkYgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNUNDRDgxOTExREJGRUExMDAwNjA2NkI4IC8qIHN0cmluZ191dGlscy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1QzFEQkM0MTFCMDQzNzVGMDAyMzU1NTIgLyogU2hhZGVyVmFy
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFEQkYzMzFCMDQzOEQzMDAyMzU1NTIgLyogVHJh
bnNmb3JtRmVlZGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEwMTJFMzQxOEI5N0I5QjAw
MzkwNjJGIC8qIEluZm9TaW5rLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMURCQzIwMUIwNDM3
NUYwMDIzNTU1MiAvKiBBcnJheVJldHVyblZhbHVlVG9PdXRQYXJhbWV0ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMzEwMTJFNTYxOEI5N0I5QjAwMzkwNjJGIC8qIFBvb2xBbGxvYy5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQkzMTAxMkU2NjE4Qjk3QjlCMDAzOTA2MkYgLyogUmVzdHJpY3RGcmFn
bWVudFNoYWRlclRpbWluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFEQkMzNTFCMDQzNzVG
MDAyMzU1NTIgLyogUHJ1bmVFbXB0eURlY2xhcmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1QzFEQkRGMTFCMDQzOEQzMDAyMzU1NTIgLyogZm9ybWF0dXRpbHMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzEwMTJFNzkxOEI5N0I5QjAwMzkwNjJGIC8qIFZhbGlkYXRlTGltaXRhdGlvbnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEwMTJFNzcxOEI5N0I5QjAwMzkwNjJGIC8qIHV0aWwu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxREJERTIxQjA0MzhEMzAwMjM1NTUyIC8qIENvbnRl
eHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEwMTJFNTExOEI5N0I5QjAwMzkwNjJGIC8qIE91
dHB1dEhMU0wuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUNDRDgxQUMxREJGRUE1QzAwNjA2NkI4
IC8qIEFkZERlZmF1bHRSZXR1cm5TdGF0ZW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVD
MzE1RDBDMUNDNUI2REEwMDc3NjY5NyAvKiBTZXBhcmF0ZUV4cHJlc3Npb25zUmV0dXJuaW5nQXJy
YXlzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxMDEyRTM2MThCOTdCOUIwMDM5MDYyRiAvKiBJ
bml0aWFsaXplLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMURCRTAxMUIwNDM4RDMwMDIzNTU1
MiAvKiBRdWVyeS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEzMzUsMTUgKzE0NjMsMTcgQEAKIAkJ
CQk1QzFEQkRGRjFCMDQzOEQzMDAyMzU1NTIgLyogUHJvZ3JhbS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1QzMxNUQwNDFDQzVCNkRBMDA3NzY2OTcgLyogUmVjb3JkQ29uc3RhbnRQcmVjaXNpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEwMTJFN0IxOEI5N0I5QjAwMzkwNjJGIC8qIFZhcmlh
YmxlSW5mby5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1Q0NEODE3MjFEQkZFOTk5MDA2MDY2Qjgg
LyogRGVidWcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxREJGMkIxQjA0MzhEMzAwMjM1NTUy
IC8qIFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMzE1RDA2MUNDNUI2REEwMDc3NjY5
NyAvKiBSZW1vdmVEeW5hbWljSW5kZXhpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxREJC
RjYxQjA0MzZFQzAwMjM1NTUyIC8qIHRscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Q0M3RDQ1
MjE5MTAyNEU0MDAwQjhDMUYgLyogTG9vcEluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMx
REJDM0YxQjA0Mzc1RjAwMjM1NTUyIC8qIFNlcGFyYXRlRGVjbGFyYXRpb25zLmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCTMxMDEyRTFEMThCOTdCOUIwMDM5MDYyRiAvKiBEZXBlbmRlbmN5R3JhcGhC
dWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDQ0Q4MUJCMURCRkVBNUMwMDYwNjZCOCAv
KiBTaW1wbGlmeUxvb3BDb25kaXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDQ0Q4MTdD
MURCRkU5OTkwMDYwNjZCOCAvKiBxdWVyeXV0aWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMx
MDEyRTdEMThCOTdCOUIwMDM5MDYyRiAvKiBWYXJpYWJsZVBhY2tlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk1Q0NEODFCOTFEQkZFQTVDMDA2MDY2QjggLyogUmV3cml0ZVVuYXJ5TWludXNPcGVy
YXRvckludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFEQkRGMzFCMDQzOEQzMDAyMzU1NTIg
LyogRnJhbWVidWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMzEwMTJFMUYxOEI5N0I5QjAw
MzkwNjJGIC8qIERlcGVuZGVuY3lHcmFwaE91dHB1dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
QzMxNUQxMjFDQzVCNkRBMDA3NzY2OTcgLyogVmFsaWRhdGVNYXhQYXJhbWV0ZXJzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTVDMURCREQ4MUIwNDM4RDMwMDIzNTU1MiAvKiBCdWZmZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUMxREJERDMxQjA0MzhEMzAwMjM1NTUyIC8qIGFuZ2xldHlwZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMzUyLDIxICsxNDgyLDI3IEBACiAJCQkJQTI2NEY4QkUx
Njk3NERFRDAwNkZBQTVBIC8qIFByZXByb2Nlc3Nvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
QzMxNUNGRTFDQzVCNkRBMDA3NzY2OTcgLyogQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUMxREJERUUxQjA0MzhEMzAwMjM1NTUyIC8qIEZlbmNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTVDQ0Q4MUJEMURCRkVBNUMwMDYwNjZCOCAvKiBTcGxpdFNlcXVlbmNlT3BlcmF0b3IuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUNDN0Q0NTcxOTEwMjRFNDAwMEI4QzFGIC8qIFZhbGlkYXRlT3V0
cHV0cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFEQkJGMDFCMDQzNkVDMDAyMzU1NTIgLyog
YW5nbGV1dGlscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTAxMkUyQjE4Qjk3QjlCMDAzOTA2
MkYgLyogRm9yTG9vcFVucm9sbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1Q0NEODFDMzFEQkZF
QUQ5MDA2MDY2QjggLyogRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTVDQ0Q4MUFFMURCRkVBNUMwMDYwNjZCOCAvKiBCcmVha1ZhcmlhYmxlQWxpYXNp
bmdJbklubmVyTG9vcHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxREJDM0QxQjA0Mzc1RjAw
MjM1NTUyIC8qIFNlcGFyYXRlQXJyYXlJbml0aWFsaXphdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1QzlGRkY0RTE5MTAyQTAwMDAyNUI4RkEgLyogRmxhZ1N0ZDE0MFN0cnVjdHMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMzEwMTJFMTcxOEI5N0I5QjAwMzkwNjJGIC8qIENvbXBpbGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTVDQzdENDZFMTkxMDI2MjEwMDBCOEMxRiAvKiBkZWJ1Zy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk1Q0NEODFCMzFEQkZFQTVDMDA2MDY2QjggLyogSW50ZXJt
Tm9kZVBhdHRlcm5NYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMURCQzI4MUIwNDM3
NUYwMDIzNTU1MiAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvckdMU0wuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNUNDRDgxQjAxREJGRUE1QzAwNjA2NkI4IC8qIENvbnN0YW50VW5pb24uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUMxREJERDUxQjA0MzhEMzAwMjM1NTUyIC8qIEF0dHJpYnV0ZU1h
cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTAxMkU2QTE4Qjk3QjlCMDAzOTA2MkYgLyogVHJh
bnNsYXRvckVTU0wuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEwMTJFNEYxOEI5N0I5QjAwMzkw
NjJGIC8qIE91dHB1dEdMU0xCYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTMxMDEyRTFCMThC
OTdCOUIwMDM5MDYyRiAvKiBEZXBlbmRlbmN5R3JhcGguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUMxREJDM0IxQjA0Mzc1RjAwMjM1NTUyIC8qIFNjYWxhcml6ZVZlY0FuZE1hdENvbnN0cnVjdG9y
QXJncy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFEQkREQzFCMDQzOEQzMDAyMzU1NTIgLyog
Q29tcGlsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxREJERkUxQjA0MzhEMzAwMjM1NTUy
IC8qIFBsYXRmb3JtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDQ0Q4MTdFMURCRkU5OTkwMDYw
NjZCOCAvKiBzaWduYWxfdXRpbHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUNDRDgxODIxREJG
RTk5OTAwNjA2NkI4IC8qIHZhbGlkYXRpb25FUzMxLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEy
NjRGOEMxMTY5NzRERUQwMDZGQUE1QSAvKiBUb2tlbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL0NvbmZpZ3VyYXRpb25zL0FOR0xFLnhjY29uZmlnCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NvbmZpZ3VyYXRpb25zL0FOR0xFLnhjY29u
ZmlnCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9Db25maWd1
cmF0aW9ucy9BTkdMRS54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtNSw2ICs1LDYgQEAgQ0xB
TkdfV0FSTl9FTlVNX0NPTlZFUlNJT04gPSBZRVM7CiBDTEFOR19XQVJOX0lOVF9DT05WRVJTSU9O
ID0gWUVTOwogQ09NQklORV9ISURQSV9JTUFHRVMgPSBOTzsKIEVOQUJMRV9TVFJJQ1RfT0JKQ19N
U0dTRU5EID0gWUVTOwotSEVBREVSX1NFQVJDSF9QQVRIUyA9IGluY2x1ZGUgc3JjOworSEVBREVS
X1NFQVJDSF9QQVRIUyA9IGluY2x1ZGUgc3JjIHNyYy9jb21tb24vdGhpcmRfcGFydHkvbnVtZXJp
Y3M7CiBJTlNUQUxMX1BBVEggPSAvdXNyL2xvY2FsL2xpYjsKIFBVQkxJQ19IRUFERVJTX0ZPTERF
Ul9QQVRIID0gL3Vzci9sb2NhbC9pbmNsdWRlL0FOR0xFOwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvZXh0ZW5zaW9ucy9BTkdMRV9kZXB0aF90ZXh0dXJlLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0FOR0xFX2RlcHRoX3RleHR1cmUu
dHh0CShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNp
b25zL0FOR0xFX2RlcHRoX3RleHR1cmUudHh0CShub25leGlzdGVudCkKQEAgLTEsNDAyICswLDAg
QEAKLU5hbWUKLQotICAgIEFOR0xFX2RlcHRoX3RleHR1cmUKLQotTmFtZSBTdHJpbmdzCi0KLSAg
ICBHTF9BTkdMRV9kZXB0aF90ZXh0dXJlCi0KLUNvbnRyaWJ1dG9ycwotCi0gICAgTmljb2xhcyBD
YXBlbnMsIFRyYW5zR2FtaW5nCi0gICAgRGFuaWVsIEtvY2gsIFRyYW5zR2FtaW5nCi0gICAgU2hh
bm5vbiBXb29kcywgVHJhbnNHYW1pbmcKLSAgICBLZW5uZXRoIFJ1c3NlbGwsIEdvb2dsZQotICAg
IFZhbmdlbGlzIEtva2tldmlzLCBHb29nbGUKLSAgICBHcmVnZyBUYXZhcmVzLCBHb29nbGUKLSAg
ICBDb250cmlidXRvcnMgdG8gT0VTX2RlcHRoX3RleHR1cmUKLSAgICBDb250cmlidXRvcnMgdG8g
T0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsCi0KLUNvbnRhY3QKLQotICAgIFNoYW5ub24gV29vZHMs
IFRyYW5zR2FtaW5nIChzaGFubm9uICdkb3QnIHdvb2RzICdhdCcgdHJhbnNnYW1pbmcuY29tKQot
Ci1TdGF0dXMKLQotICAgIEltcGxlbWVudGVkIGluIEFOR0xFLgotCi1WZXJzaW9uCi0KLSAgICBM
YXN0IE1vZGlmaWVkIERhdGU6IEZlYnJ1YXJ5IDI1LCAyMDEzCi0gICAgUmV2aXNpb246ICM0Ci0K
LU51bWJlcgotCi0gICAgVEJECi0KLURlcGVuZGVuY2llcwotCi0gICAgT3BlbkdMIEVTIDIuMCBp
cyByZXF1aXJlZC4KLSAgICBUaGlzIGV4dGVuc2lvbiBpcyB3cml0dGVuIGFnYWluc3QgdGhlIE9w
ZW5HTCBFUyAyLjAuMjUgc3BlY2lmaWNhdGlvbgotCi0gICAgT0VTX3BhY2tlZF9kZXB0aF9zdGVu
Y2lsIGFmZmVjdHMgdGhlIGRlZmluaXRpb24gb2YgdGhpcyBleHRlbnNpb24uCi0KLSAgICBFWFRf
dGV4dHVyZV9zdG9yYWdlIGFmZmVjdHMgdGhlIGRlZmluaXRpb24gb2YgdGhpcyBleHRlbnNpb24u
Ci0KLU92ZXJ2aWV3Ci0KLSAgICBUaGlzIGV4dGVuc2lvbiBkZWZpbmVzIHN1cHBvcnQgZm9yIDJE
IGRlcHRoIGFuZCBkZXB0aC1zdGVuY2lsCi0gICAgdGV4dHVyZXMgaW4gYW4gT3BlbkdMIEVTIGlt
cGxlbWVudGF0aW9uLgotCi0gICAgVGhpcyBleHRlbnNpb24gaW5jb3Jwb3JhdGVzIHRoZSBkZXB0
aCB0ZXh0dXJpbmcgZnVuY3Rpb25hbGl0eSBvZiAKLSAgICBPRVNfZGVwdGhfdGV4dHVyZSBhbmQg
T0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsLCBidXQgZG9lcyBub3QgCi0gICAgcHJvdmlkZSB0aGUg
YWJpbGl0eSB0byBsb2FkIGV4aXN0aW5nIGRhdGEgdmlhIFRleEltYWdlMkQgb3IKLSAgICBUZXhT
dWJJbWFnZTJELiBUaGlzIGV4dGVuc2lvbiBhbHNvIGFsbG93cyBpbXBsZW1lbnRhdGlvbiAKLSAg
ICB2YXJpYWJpbGl0eSBpbiB3aGljaCBjb21wb25lbnRzIGZyb20gYSBzYW1wbGVkIGRlcHRoIHRl
eHR1cmUKLSAgICBjb250YWluIHRoZSBkZXB0aCBkYXRhLiBEZXB0aCB0ZXh0dXJlcyBjcmVhdGVk
IHdpdGggdGhpcwotICAgIGV4dGVuc2lvbiBvbmx5IHN1cHBvcnQgMSBsZXZlbC4KLQotTmV3IFBy
b2NlZHVyZXMgYW5kIEZ1bmN0aW9ucwotCi0gICAgTm9uZQotCi1OZXcgVG9rZW5zCi0KLSAgICBB
Y2NlcHRlZCBieSB0aGUgPGZvcm1hdD4gcGFyYW1ldGVyIG9mIFRleEltYWdlMkQgYW5kIFRleFN1
YkltYWdlMkQgYW5kCi0gICAgPGludGVybmFsZm9ybWF0PiBwYXJhbWV0ZXIgb2YgVGV4SW1hZ2Uy
RDoKLSAgICAKLSAgICAgICAgREVQVEhfQ09NUE9ORU5UICAgICAgICAgICAgIDB4MTkwMgotICAg
ICAgICBERVBUSF9TVEVOQ0lMX09FUyAgICAgICAgICAgMHg4NEY5Ci0gICAgICAgIAotICAgIEFj
Y2VwdGVkIGJ5IHRoZSA8dHlwZT4gcGFyYW1ldGVyIG9mIFRleEltYWdlMkQsIFRleFN1YkltYWdl
MkQ6IAotCi0gICAgICAgIFVOU0lHTkVEX1NIT1JUICAgICAgICAgICAgICAweDE0MDMKLSAgICAg
ICAgVU5TSUdORURfSU5UICAgICAgICAgICAgICAgIDB4MTQwNQotICAgICAgICBVTlNJR05FRF9J
TlRfMjRfOF9PRVMgICAgICAgMHg4NEZBCi0KLSAgICBBY2NlcHRlZCBieSB0aGUgPGludGVybmFs
Zm9ybWF0PiBwYXJhbWV0ZXIgb2YgVGV4U3RvcmFnZTJERVhUOgotCi0gICAgICAgIERFUFRIX0NP
TVBPTkVOVDE2ICAgICAgICAgICAweDgxQTUKLSAgICAgICAgREVQVEhfQ09NUE9ORU5UMzJfT0VT
ICAgICAgIDB4ODFBNwotICAgICAgICBERVBUSDI0X1NURU5DSUw4X09FUyAgICAgICAgMHg4OEYw
Ci0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDIgb2YgdGhlIE9wZW5HTCBFUyAyLjAgU3BlY2lmaWNh
dGlvbiAoT3BlbkdMIE9wZXJhdGlvbikKLQotICAgIFVwZGF0ZSBTZWN0aW9uIDIuMTAuNSAiU2hh
ZGVyIEV4ZWN1dGlvbiIgaW4gdGhlIHN1YnNlY3Rpb24gdGl0bGVkIAotICAgICJUZXh0dXJlIEFj
Y2VzcyIgYWRkIGEgbmV3IHBhcmFncmFwaCBiZWZvcmUgdGhlIGxhc3QgcGFyYWdyYXBoIGFkZAot
ICAgIHRoaXMgbGluZToKLQotICAgICJUaGUgc3RlbmNpbCBpbmRleCB0ZXh0dXJlIGludGVybmFs
IGNvbXBvbmVudCBpcyBpZ25vcmVkIGlmIHRoZSBiYXNlCi0gICAgaW50ZXJuYWwgZm9ybWF0IGlz
IERFUFRIX1NURU5DSUxfT0VTLgotCi0gICAgSWYgYSB2ZXJ0ZXggc2hhZGVyIHVzZXMuLi4iCi0K
LUFkZGl0aW9ucyB0byBDaGFwdGVyIDMgb2YgdGhlIE9wZW5HTCBFUyAyLjAgc3BlY2lmaWNhdGlv
biAoUmFzdGVyaXphdGlvbikKLQotICAgIEFkZCB0aGUgZm9sbG93aW5nIHJvd3MgdG8gVGFibGUg
My4yIChwYWdlIDYyKToKLQotICAgICAgdHlwZSBQYXJhbWV0ZXIgICAgICAgICAgIEdMIERhdGEg
VHlwZSAgICBTcGVjaWFsCi0gICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLSAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAuLi4gICAgICAg
ICAgICAgIC4uLgotICAgICAgVU5TSUdORURfU0hPUlQgICAgICAgICAgIHVzaG9ydCAgICAgICAg
ICAgTm8KLSAgICAgIFVOU0lHTkVEX0lOVCAgICAgICAgICAgICB1aW50ICAgICAgICAgICAgIE5v
Ci0gICAgICBVTlNJR05FRF9JTlRfMjRfOF9PRVMgICAgdWludCAgICAgICAgICAgICBZZXMKLQot
ICAgIEFkZCB0aGUgZm9sbG93aW5nIHJvd3MgdG8gVGFibGUgMy4zIChwYWdlIDYyKToKLQotICAg
ICAgRm9ybWF0IE5hbWUgICAgICAgRWxlbWVudCBNZWFuaW5nIGFuZCBPcmRlciAgICAgIFRhcmdl
dCBCdWZmZXIKLSAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgLi4uICAgICAgICAgICAgICAgLi4uICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC4uLgotICAgICAgREVQVEhfQ09NUE9ORU5UICAgRGVw
dGggICAgICAgICAgICAgICAgICAgICAgICAgIERlcHRoCi0gICAgICBERVBUSF9TVEVOQ0lMX09F
UyBEZXB0aCBhbmQgU3RlbmNpbCBJbmRleCAgICAgICAgRGVwdGggYW5kIFN0ZW5jaWwKLSAgICAg
IC4uLiAgICAgICAgICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4KLQot
ICAgIEFkZCBhIHJvdyB0byBUYWJsZSAzLjUgIlBhY2tlZCBwaXhlbCBmb3JtYXRzIiAocGFnZSA2
NCk6Ci0KLSAgICAgIHR5cGUgUGFyYW1ldGVyICAgICAgICAgICAgICAgR0wgVHlwZSAgQ29tcG9u
ZW50cyAgUGl4ZWwgRm9ybWF0cwotICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAuLi4gICAgICAgICAg
ICAgICAgICAgICAgICAgIC4uLiAgICAgIC4uLiAgICAgICAgIC4uLgotICAgICAgVU5TSUdORURf
SU5UXzI0XzhfT0VTICAgICAgICB1aW50ICAgICAyICAgICAgICAgICBERVBUSF9TVEVOQ0lMX09F
UwotCi0gICAgQWRkIGEgbmV3IHRhYmxlIGFmdGVyIFRhYmxlIDMuNiAocGFnZSA2NCk6Ci0KLSAg
ICBVTlNJR05FRF9JTlRfMjRfOF9PRVMKLQotICAgICAgIDMxIDMwIDI5IDI4IDI3IDI2IC4uLiAx
MiAxMSAxMCA5IDggNyA2IDUgNCAzIDIgMSAwCi0gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rCi0gICAgICB8ICAgICAgICAgICAxc3QgQ29t
cG9uZW50ICAgICAgICAgIHwgMm5kIENvbXBvbmVudCB8Ci0gICAgICArLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rCi0KLSAgICAgIFRhYmxlIDMuNi5C
OiBVTlNJR05FRF9JTlQgZm9ybWF0cwotCi0gICAgQWRkIGEgcm93IHRvIFRhYmxlIDMuNyAiUGFj
a2VkIHBpeGVsIGZpZWxkIGFzc2lnbm1lbnRzIiAocGFnZSA2NSk6Ci0KLSAgICAgIEZvcm1hdCAg
ICAgICAgICAgIHwgIDFzdCAgICAgMm5kICAgICAzcmQgICAgIDR0aAotICAgICAgLS0tLS0tLS0t
LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgIC4uLiAgICAg
ICAgICAgICAgIHwgIC4uLiAgICAgLi4uICAgICAuLi4gICAgIC4uLgotICAgICAgREVQVEhfU1RF
TkNJTF9PRVMgfCAgZGVwdGggICBzdGVuY2lsIE4vQSAgICAgTi9BCi0KLSAgICBBZGQgdGhlIGZv
bGxvd2luZyBwYXJhZ3JhcGggdG8gdGhlIGVuZCBvZiB0aGUgc2VjdGlvbiAiQ29udmVyc2lvbiB0
bwotICAgIGZsb2F0aW5nLXBvaW50IiAocGFnZSA2NSk6Ci0KLSAgICAiRm9yIGdyb3VwcyBvZiBj
b21wb25lbnRzIHRoYXQgY29udGFpbiBib3RoIHN0YW5kYXJkIGNvbXBvbmVudHMgYW5kIGluZGV4
Ci0gICAgZWxlbWVudHMsIHN1Y2ggYXMgREVQVEhfU1RFTkNJTF9PRVMsIHRoZSBpbmRleCBlbGVt
ZW50cyBhcmUgbm90IGNvbnZlcnRlZC4iCi0KLSAgICBJbiBzZWN0aW9uIDMuNy4xICJUZXh0dXJl
IEltYWdlIFNwZWNpZmljYXRpb24iLCB1cGRhdGUgcGFnZSA2NyB0bwotICAgIHNheToKLQotICAg
ICJUaGUgc2VsZWN0ZWQgZ3JvdXBzIGFyZSBwcm9jZXNzZWQgYXMgZGVzY3JpYmVkIGluIHNlY3Rp
b24gMy42LjIsIHN0b3BwaW5nCi0gICAganVzdCBiZWZvcmUgZmluYWwgY29udmVyc2lvbi4gIEVh
Y2ggUiwgRywgQiwgQSwgb3IgZGVwdGggdmFsdWUgc28gZ2VuZXJhdGVkCi0gICAgaXMgY2xhbXBl
ZCB0byBbMCwgMV0sIHdoaWxlIHRoZSBzdGVuY2lsIGluZGV4IHZhbHVlcyBhcmUgbWFza2VkIGJ5
IDJebi0xLAotICAgIHdoZXJlIG4gaXMgdGhlIG51bWJlciBvZiBzdGVuY2lsIGJpdHMgaW4gdGhl
IGludGVybmFsIGZvcm1hdCByZXNvbHV0aW9uCi0gICAgKHNlZSBiZWxvdykuCi0KLSAgICBDb21w
b25lbnRzIGFyZSB0aGVuIHNlbGVjdGVkIGZyb20gdGhlIHJlc3VsdGluZyBSLCBHLCBCLCBBLCBk
ZXB0aCwgb3IKLSAgICBzdGVuY2lsIGluZGV4IHZhbHVlcyB0byBvYnRhaW4gYSB0ZXh0dXJlIHdp
dGggdGhlIGJhc2UgaW50ZXJuYWwgZm9ybWF0Ci0gICAgc3BlY2lmaWVkIGJ5IDxpbnRlcm5hbGZv
cm1hdD4uICBUYWJsZSAzLjggc3VtbWFyaXplcyB0aGUgbWFwcGluZyBvZiBSLCBHLAotICAgIEIs
IEEsIGRlcHRoLCBvciBzdGVuY2lsIHZhbHVlcyB0byB0ZXh0dXJlIGNvbXBvbmVudHMsIGFzIGEg
ZnVuY3Rpb24gb2YgdGhlCi0gICAgYmFzZSBpbnRlcm5hbCBmb3JtYXQgb2YgdGhlIHRleHR1cmUg
aW1hZ2UuICA8aW50ZXJuYWxmb3JtYXQ+IG1heSBiZQotICAgIHNwZWNpZmllZCBhcyBvbmUgb2Yg
dGhlIGludGVybmFsIGZvcm1hdCBzeW1ib2xpYyBjb25zdGFudHMgbGlzdGVkIGluCi0gICAgdGFi
bGUgMy44LiBTcGVjaWZ5aW5nIGEgdmFsdWUgZm9yIDxpbnRlcm5hbGZvcm1hdD4gdGhhdCBpcyBu
b3Qgb25lIG9mIHRoZQotICAgIGFib3ZlIHZhbHVlcyBnZW5lcmF0ZXMgdGhlIGVycm9yIElOVkFM
SURfVkFMVUUuIElmIDxpbnRlcm5hbGZvcm1hdD4gZG9lcwotICAgIG5vdCBtYXRjaCA8Zm9ybWF0
PiwgdGhlIGVycm9yIElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZC4KLQotICAgIFRleHR1
cmVzIHdpdGggYSBiYXNlIGludGVybmFsIGZvcm1hdCBvZiBERVBUSF9DT01QT05FTlQgb3IgCi0g
ICAgREVQVEhfU1RFTkNJTF9PRVMgYXJlIHN1cHBvcnRlZCBieSB0ZXh0dXJlIGltYWdlIHNwZWNp
ZmljYXRpb24gY29tbWFuZHMKLSAgICBvbmx5IGlmIDx0YXJnZXQ+IGlzIFRFWFRVUkVfMkQuICBV
c2luZyB0aGVzZSBmb3JtYXRzIGluIGNvbmp1bmN0aW9uIHdpdGgKLSAgICBhbnkgb3RoZXIgPHRh
cmdldD4gd2lsbCByZXN1bHQgaW4gYW4gSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IuCi0KLSAgICBU
ZXh0dXJlcyB3aXRoIGEgYmFzZSBpbnRlcm5hbCBmb3JtYXQgb2YgREVQVEhfQ09NUE9ORU5UIG9y
Ci0gICAgREVQVEhfU1RFTkNJTF9PRVMgb25seSBzdXBwb3J0IG9uZSBsZXZlbCBvZiBpbWFnZSBk
YXRhLiAgU3BlY2lmeWluZyBhCi0gICAgbm9uLXplcm8gdmFsdWUgZm9yIDxsZXZlbD4gd2lsbCBy
ZXN1bHQgaW4gYW4gSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IuCi0KLSAgICBUZXh0dXJlcyB3aXRo
IGEgYmFzZSBpbnRlcm5hbCBmb3JtYXQgb2YgREVQVEhfQ09NUE9ORU5UIG9yIERFUFRIX1NURU5D
SUxfT0VTCi0gICAgcmVxdWlyZSBlaXRoZXIgZGVwdGggY29tcG9uZW50IGRhdGEgb3IgZGVwdGgv
c3RlbmNpbCBjb21wb25lbnQgZGF0YS4KLSAgICBUZXh0dXJlcyB3aXRoIG90aGVyIGJhc2UgaW50
ZXJuYWwgZm9ybWF0cyByZXF1aXJlIFJHQkEgY29tcG9uZW50IGRhdGEuICBUaGUKLSAgICBlcnJv
ciBJTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgdGhlIGJhc2UgaW50ZXJuYWwgZm9y
bWF0IGlzCi0gICAgREVQVEhfQ09NUE9ORU5UIG9yIERFUFRIX1NURU5DSUxfT0VTIGFuZCA8Zm9y
bWF0PiBpcyBub3QgREVQVEhfQ09NUE9ORU5UIG9yCi0gICAgREVQVEhfU1RFTkNJTF9PRVMsIG9y
IGlmIHRoZSBiYXNlIGludGVybmFsIGZvcm1hdCBpcyBub3QgREVQVEhfQ09NUE9ORU5UIG9yCi0g
ICAgREVQVEhfU1RFTkNJTF9PRVMgYW5kIDxmb3JtYXQ+IGlzIERFUFRIX0NPTVBPTkVOVCBvciBE
RVBUSF9TVEVOQ0lMX09FUy4KLQotICAgIFRleHR1cmVzIHdpdGggYSBiYXNlIGludGVybmFsIGZv
cm1hdCBvZiBERVBUSF9DT01QT05FTlQgb3IKLSAgICBERVBUSF9TVEVOQ0lMX09FUyBkbyBub3Qg
c3VwcG9ydCBsb2FkaW5nIGltYWdlIGRhdGEgdmlhIHRoZSBUZXhJbWFnZQotICAgIGNvbW1hbmRz
LiBUaGV5IGNhbiBvbmx5IGhhdmUgdGhlaXIgY29udGVudHMgc3BlY2lmaWVkIGJ5IHJlbmRlcmlu
ZwotICAgIHRvIHRoZW0uIFRoZSBJTlZBTElEX09QRVJBVElPTiBlcnJvciBpcyBnZW5lcmF0ZWQg
YnkgdGhlIFRleEltYWdlMkQKLSAgICBjb21tYW5kIGlmIDxkYXRhPiBpcyBub3QgTlVMTCBmb3Ig
c3VjaCB0ZXh0dXJlcy4iCi0KLSAgICBBZGQgYSByb3cgdG8gdGFibGUgMy44IChwYWdlIDY4KSwg
YW5kIHVwZGF0ZSB0aGUgdGl0bGUgb2YgdGhlCi0gICAgc2Vjb25kIGNvbHVtbjoKLQotICAgICAg
QmFzZSBJbnRlcm5hbCBGb3JtYXQgIFJHQkEsIERlcHRoIGFuZCBTdGVuY2lsIFZhbHVlcyAgSW50
ZXJuYWwgQ29tcG9uZW50cwotICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgLi4uICAgICAg
ICAgICAgICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uCi0gICAgICBE
RVBUSF9DT01QT05FTlQgICAgICAgRGVwdGggICAgICAgICAgICAgICAgICAgICAgICAgICBECi0g
ICAgICBERVBUSF9TVEVOQ0lMX09FUyAgICAgRGVwdGgsU3RlbmNpbCAgICAgICAgICAgICAgICAg
ICBELFMKLSAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC4uLgotCi0gICAgVXBkYXRlIHRoZSBjYXB0aW9uIGZvciB0YWJsZSAzLjggKHBh
Z2UgNjgpCi0KLSAgICAiVGFibGUgMy44OiBDb252ZXJzaW9uIGZyb20gUkdCQSwgZGVwdGgsIGFu
ZCBzdGVuY2lsIHBpeGVsIGNvbXBvbmVudHMgdG8KLSAgICBpbnRlcm5hbCB0ZXh0dXJlIGNvbXBv
bmVudHMuICBUZXh0dXJlIGNvbXBvbmVudHMgUiwgRywgQiwgQSwgYW5kIEwgYXJlIAotICAgIGNv
bnZlcnRlZCBiYWNrIHRvIFJHQkEgY29sb3JzIGR1cmluZyBmaWx0ZXJpbmcgYXMgc2hvd24gaW4g
dGFibGUgMy4xMi4KLSAgICBUZXh0dXJlIGNvbXBvbmVudHMgRCBhcmUgY29udmVydGVkIHRvIFJH
QkEgY29sb3JzIGFzIGRlc2NyaWJlZCBpbiAKLSAgICBzZWN0aW9uIDMuNy44LTEvMi4iCi0KLSAg
ICBBZGQgdGhlIGZvbGxvd2luZyB0byBzZWN0aW9uIDMuNy4yICJBbHRlcm5hdGUgVGV4dHVyZSBJ
bWFnZSBTcGVjaWZpY2F0aW9uCi0gICAgQ29tbWFuZHMiOgotCi0gICAgIkNvcHlUZXhJbWFnZTJE
IGFuZCBDb3B5VGV4U3ViSW1hZ2UyRCBnZW5lcmF0ZSB0aGUgSU5WQUxJRF9PUEVSQVRJT04gCi0g
ICAgZXJyb3IgaWYgdGhlIGJhc2UgaW50ZXJuYWwgZm9ybWF0IG9mIHRoZSBkZXN0aW5hdGlvbiB0
ZXh0dXJlIGlzIAotICAgIERFUFRIX0NPTVBPTkVOVCBvciBERVBUSF9TVEVOQ0lMX09FUy4KLQot
ICAgIFRleFN1YkltYWdlMkQgZ2VuZXJhdGVzIHRoZSBJTlZBTElEX09QRVJBVElPTiBlcnJvciBp
ZiB0aGUgYmFzZSBpbnRlcm5hbAotICAgIGZvcm1hdCBvZiB0aGUgdGV4dHVyZSBpcyBERVBUSF9D
T01QT05FTlQgb3IgREVQVEhfU1RFTkNJTF9PRVMuIgotCi0gICAgQWRkIGEgbmV3IHNlY3Rpb24g
YmV0d2VlbiBzZWN0aW9ucyAzLjcuOCBhbmQgMy43Ljk6Ci0KLSAgICAiMy43LjgtMS8yIERlcHRo
L1N0ZW5jaWwgVGV4dHVyZXMKLQotICAgIElmIHRoZSBjdXJyZW50bHkgYm91bmQgdGV4dHVyZSdz
IGJhc2UgaW50ZXJuYWwgZm9ybWF0IGlzIERFUFRIX0NPTVBPTkVOVCBvcgotICAgIERFUFRIX1NU
RU5DSUxfT0VTLCB0aGVuIHRoZSBvdXRwdXQgb2YgdGhlIHRleHR1cmUgdW5pdCBpcyBhcyBkZXNj
cmliZWQKLSAgICBiZWxvdy4gT3RoZXJ3aXNlLCB0aGUgdGV4dHVyZSB1bml0IG9wZXJhdGVzIGlu
IHRoZSBub3JtYWwgbWFubmVyLgotCi0gICAgTGV0IDxEX3Q+IGJlIHRoZSBkZXB0aCB0ZXh0dXJl
IHZhbHVlLCBwcm92aWRlZCBieSB0aGUgc2hhZGVyJ3MgdGV4dHVyZSBsb29rdXAKLSAgICBmdW5j
dGlvbi4gVGhlbiB0aGUgZWZmZWN0aXZlIHRleHR1cmUgdmFsdWUgaXMgY29tcHV0ZWQgYXMgZm9s
bG93czoKLSAgICAgICAgICAgIDxUYXU+ID0gPERfdD4KLQotICAgIElmIHRoZSB0ZXh0dXJlIGlt
YWdlIGhhcyBhIGJhc2UgaW50ZXJuYWwgZm9ybWF0IG9mIERFUFRIX1NURU5DSUxfT0VTLCB0aGVu
Ci0gICAgdGhlIHN0ZW5jaWwgaW5kZXggdGV4dHVyZSBjb21wb25lbnQgaXMgaWdub3JlZC4gIFRo
ZSB0ZXh0dXJlIHZhbHVlIDxUYXU+IGRvZXMKLSAgICBub3QgaW5jbHVkZSBhIHN0ZW5jaWwgaW5k
ZXggY29tcG9uZW50LCBidXQgaW5jbHVkZXMgb25seSB0aGUgZGVwdGgKLSAgICBjb21wb25lbnQu
Ci0KLSAgICBUaGUgcmVzdWx0aW5nIDxUYXU+IGlzIGFzc2lnbmVkIHRvIDxSX3Q+LiBJbiBzb21l
IGltcGxlbWVudGF0aW9ucywgPFRhdT4gaXMKLSAgICBhbHNvIGFzc2lnbmVkIHRvIDxHX3Q+LCA8
Ql90Piwgb3IgPEFfdD4uIFRodXMgaW4gdGFibGUgMy4xMiwgdGV4dHVyZXMgd2l0aAotICAgIGRl
cHRoIGNvbXBvbmVudCBkYXRhIGJlaGF2ZSBhcyBpZiB0aGVpciBiYXNlIGludGVybmFsIGZvcm1h
dCBpcyBSR0JBLCB3aXRoCi0gICAgdmFsdWVzIGluIDxHX3Q+LCA8Ql90PiwgYW5kIDxBX3Q+IGJl
aW5nIGltcGxlbWVudGF0aW9uIGRlcGVuZGVudC4iCi0KLSAgICBBZGQgdGhlIGZvbGxvd2luZyB0
byBzZWN0aW9uIDMuNy4xMSAiTWlwbWFwIEdlbmVyYXRpb24iOgotCi0gICAgIklmIHRoZSBsZXZl
bCB6ZXJvIGFycmF5IGNvbnRhaW5zIGRlcHRoIG9yIGRlcHRoLXN0ZW5jaWwgZGF0YSwgdGhlCi0g
ICAgIGVycm9yIElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZC4iCi0KLSAgICBJbnNlcnQg
YSBuZXcgcGFyYWdyYXBoIGFmdGVyIHRoZSBmaXJzdCBwYXJhZ3JhcGggb2YgdGhlICJUZXh0dXJl
IEFjY2VzcyIKLSAgICBzdWJzZWN0aW9uIG9mIHNlY3Rpb24gMy44LjIgb24gcGFnZSA4Nywgd2hp
Y2ggc2F5czoKLQotICAgICJUZXh0dXJlIGxvb2t1cHMgaW52b2x2aW5nIHRleHR1cmVzIHdpdGgg
ZGVwdGggY29tcG9uZW50IGRhdGEgZ2VuZXJhdGUKLSAgICBhIHRleHR1cmUgc291cmNlIGNvbG9y
IGJ5IHVzaW5nIGRlcHRoIGRhdGEgZGlyZWN0bHksIGFzIGRlc2NyaWJlZCBpbgotICAgIHNlY3Rp
b24gMy43LjgtMS8yLiAgVGhlIHN0ZW5jaWwgdGV4dHVyZSBpbnRlcm5hbCBjb21wb25lbnQgaXMg
aWdub3JlZAotICAgIGlmIHRoZSBiYXNlIGludGVybmFsIGZvcm1hdCBpcyBERVBUSF9TVEVOQ0lM
X09FUy4iCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDQgb2YgdGhlIE9wZW5HTCBFUyAyLjAgc3Bl
Y2lmaWNhdGlvbiAoUGVyLUZyYWdtZW50Ci1PcGVyYXRpb25zIGFuZCB0aGUgRnJhbWVidWZmZXIp
Ci0KLSAgICBJbiBzZWN0aW9uIDQuNC41ICJGcmFtZWJ1ZmZlciBDb21wbGV0ZW5lc3MiLCByZXBs
YWNlIHRoZSB0aGUgM3JkCi0gICAgcGFyYWdyYXBoIHdpdGggdGhlIGZvbGxvd2luZyB0ZXh0Ogot
Ci0gICAgICIqIEFuIGludGVybmFsIGZvcm1hdCBpcyBjb2xvci1yZW5kZXJhYmxlIGlmIGl0IGlz
IG9uZSBvZiB0aGUgZm9ybWF0cwotICAgICAgICBmcm9tIHRhYmxlIDQuNSBub3RlZCBhcyBjb2xv
ci1yZW5kZXJhYmxlIG9yIGlmIGl0IGlzIHVuc2l6ZWQgZm9ybWF0Ci0gICAgICAgIFJHQkEgb3Ig
UkdCLiBObyBvdGhlciBmb3JtYXRzLCBpbmNsdWRpbmcgY29tcHJlc3NlZCBpbnRlcm5hbCBmb3Jt
YXRzLAotICAgICAgICBhcmUgY29sb3ItcmVuZGVyYWJsZS4KLQotICAgICAgKiBBbiBpbnRlcm5h
bCBmb3JtYXQgaXMgZGVwdGgtcmVuZGVyYWJsZSBpZiBpdCBpcyBvbmUgb2YgdGhlIHNpemVkCi0g
ICAgICAgIGludGVybmFsIGZvcm1hdHMgZnJvbSB0YWJsZSA0LjUgbm90ZWQgYXMgZGVwdGgtcmVu
ZGVyYWJsZSwgaWYgaXQKLSAgICAgICAgaXMgdGhlIHVuc2l6ZWQgZm9ybWF0IERFUFRIX0NPTVBP
TkVOVCBvciBpZiBpdCBpcyB0aGUgaW50ZXJuYWwgCi0gICAgICAgIGZvcm1hdCB2YWx1ZSBvZiBE
RVBUSDI0X1NURU5DSUw4X09FUy4gTm8gb3RoZXIgZm9ybWF0cyBhcmUgCi0gICAgICAgIGRlcHRo
LXJlbmRlcmFibGUuCi0KLSAgICAgICogQW4gaW50ZXJuYWwgZm9ybWF0IGlzIHN0ZW5jaWwtcmVu
ZGVyYWJsZSBpZiBpdCBpcyBvbmUgb2YgdGhlIHNpemVkIAotICAgICAgICBpbnRlcm5hbCBmb3Jt
YXRzIGZyb20gdGFibGUgNC41IG5vdGVkIGFzIHN0ZW5jaWwtcmVuZGVyYWJsZSBvciBpZiBpdAot
ICAgICAgICBpcyBERVBUSDI0X1NURU5DSUw4X09FUy4gTm8gb3RoZXIgZm9ybWF0cyBhcmUgc3Rl
bmNpbC1yZW5kZXJhYmxlLiIKLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgNSBvZiB0aGUgT3BlbkdM
IEVTIDIuMCBTcGVjaWZpY2F0aW9uIChTcGVjaWFsCi1GdW5jdGlvbnMpCi0KLSAgICBOb25lLgot
Ci1BZGRpdGlvbnMgdG8gQ2hhcHRlciA2IG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmljYXRp
b24gKFN0YXRlIGFuZCBTdGF0ZQotUmVxdWVzdHMpCi0KLSAgICBOb25lLgotCi1JbnRlcmFjdGlv
bnMgd2l0aCBPRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwKLQotICAgIElmIE9FU19wYWNrZWRfZGVw
dGhfc3RlbmNpbCBpcyBub3Qgc3VwcG9ydGVkLCBtZW50aW9ucyBvZgotICAgIERFUFRIX1NURU5D
SUxfT0VTIGFuZCBVTlNJR05FRF9JTlRfMjRfOF9PRVMgYXMgYSBmb3JtYXQvdHlwZSBjb21iaW5h
dGlvbnMKLSAgICBmb3IgVGV4SW1hZ2UyRCBhbmQgVGV4U3ViSW1hZ2UyRCBhcmUgb21pdHRlZC4g
TWVudGlvbnMgb2YKLSAgICB0aGUgaW50ZXJuYWwgZm9ybWF0IERFUFRIMjRfU1RFTkNJTDhfT0VT
IGFyZSBhbHNvIG9taXR0ZWQuCi0KLUludGVyYWN0aW9ucyB3aXRoIEVYVF90ZXh0dXJlX3N0b3Jh
Z2UKLQotICAgIElmIEVYVF90ZXh0dXJlX3N0b3JhZ2UgaXMgc3VwcG9ydGVkIHRoZSBmb2xsb3dp
bmcgaW50ZXJuYWxmb3JtYXQKLSAgICB0byBmb3JtYXQvdHlwZSBtYXBwaW5ncyBhcmUgdXNlZDoK
LQotICAgICAgICA8aW50ZXJuYWxmb3JtYXQ+ICAgICAgIDxmb3JtYXQ+ICAgICAgICAgICA8dHlw
ZT4KLSAgICAgICAgLS0tLS0tLS0tLS0tLS0tLSAgICAgICAtLS0tLS0tLSAgICAgICAgICAgLS0t
LS0tCi0gICAgICAgIERFUFRIX0NPTVBPTkVOVDE2ICAgICAgREVQVEhfQ09NUE9ORU5UICAgIFVO
U0lHTkVEX1NIT1JUCi0gICAgICAgIERFUFRIX0NPTVBPTkVOVDMyX09FUyAgREVQVEhfQ09NUE9O
RU5UICAgIFVOU0lHTkVEX0lOVAotICAgICAgICBERVBUSDI0X1NURU5DSUw4X09FUyAgIERFUFRI
X1NURU5DSUxfT0VTICBVTlNJR05FRF9JTlQKLQotICAgIFRleHR1cmVzIHdpdGggdGhlIGFib3Zl
IDxpbnRlcm5hbGZvcm1hdHM+IG9ubHkgc3VwcG9ydCBvbmUgbGV2ZWwgb2YKLSAgICBpbWFnZSBk
YXRhLiBTcGVjaWZ5aW5nIGEgdmFsdWUgb3RoZXIgdGhhbiBvbmUgZm9yIHRoZSA8bGV2ZWxzPiBw
YXJhbWV0ZXIKLSAgICB0byBUZXhTdG9yYWdlMkRFWFQgd2lsbCByZXN1bHQgaW4gYW4gSU5WQUxJ
RF9PUEVSQVRJT04gZXJyb3IuCi0KLSAgICBJZiBFWFRfdGV4dHVyZV9zdG9yYWdlIGlzIG5vdCBz
dXBwb3J0ZWQsIGlnbm9yZSBhbnkgcmVmZXJlbmNlcwotICAgIHRvIFRleFN0b3JhZ2UyREVYVC4g
Ci0KLUVycm9ycwotCi0gICAgVGhlIGVycm9yIElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRl
ZCBieSBUZXhJbWFnZTJEIGlmIDxmb3JtYXQ+IGFuZCAKLSAgICA8aW50ZXJuYWxmb3JtYXQ+IGFy
ZSBERVBUSF9DT01QT05FTlQgYW5kIDx0eXBlPiBpcyBub3QgVU5TSUdORURfU0hPUlQsCi0gICAg
b3IgVU5TSUdORURfSU5ULgotCi0gICAgVGhlIGVycm9yIElOVkFMSURfT1BFUkFUSU9OIGlzIGdl
bmVyYXRlZCBieSBUZXhTdWJJbWFnZTJEIGlmIDxmb3JtYXQ+IGlzIAotICAgIERFUFRIX0NPTVBP
TkVOVCBhbmQgPHR5cGU+IGlzIG5vdCBVTlNJR05FRF9TSE9SVCwgb3IgVU5TSUdORURfSU5ULgot
Ci0gICAgVGhlIGVycm9yIElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBieSBUZXhJbWFn
ZTJEIGlmIDxmb3JtYXQ+IGFuZAotICAgIDxpbnRlcm5hbGZvcm1hdD4gYXJlIG5vdCBERVBUSF9D
T01QT05FTlQgYW5kIDx0eXBlPiBpcyBVTlNJR05FRF9TSE9SVCwKLSAgICBvciBVTlNJR05FRF9J
TlQuCi0KLSAgICBUaGUgZXJyb3IgSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGJ5IFRl
eFN1YkltYWdlMkQgaWYgPGZvcm1hdD4gaXMKLSAgICBub3QgREVQVEhfQ09NUE9ORU5UIGFuZCA8
dHlwZT4gaXMgVU5TSUdORURfU0hPUlQsIG9yIFVOU0lHTkVEX0lOVC4KLQotICAgIFRoZSBlcnJv
ciBJTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgYnkgVGV4SW1hZ2UyRCBpZiA8Zm9ybWF0
PiBhbmQKLSAgICA8aW50ZXJuYWxmb3JtYXQ+IGFyZSBERVBUSF9TVEVOQ0lMX09FUyBhbmQgPHR5
cGU+IGlzIG5vdAotICAgIFVOU0lHTkVEX0lOVF8yNF84X09FUy4gCi0KLSAgICBUaGUgZXJyb3Ig
SU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGJ5IFRleFN1YkltYWdlMkQgaWYgPGZvcm1h
dD4KLSAgICBpcyBERVBUSF9TVEVOQ0lMX09FUyBhbmQgPHR5cGU+IGlzIG5vdCBVTlNJR05FRF9J
TlRfMjRfOF9PRVMuIAotCi0gICAgVGhlIGVycm9yIElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVy
YXRlZCBieSBUZXhJbWFnZTJEIGlmIDxmb3JtYXQ+IGFuZAotICAgIDxpbnRlcm5hbGZvcm1hdD4g
aXMgbm90IERFUFRIX1NURU5DSUxfT0VTIGFuZCA8dHlwZT4gaXMgCi0gICAgVU5TSUdORURfSU5U
XzI0XzhfT0VTLgotCi0gICAgVGhlIGVycm9yIElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRl
ZCBieSBUZXhTdWJJbWFnZTJEIGlmIDxmb3JtYXQ+Ci0gICAgaXMgbm90IERFUFRIX1NURU5DSUxf
T0VTIGFuZCA8dHlwZT4gaXMgVU5TSUdORURfSU5UXzI0XzhfT0VTLgotCi0gICAgVGhlIGVycm9y
IElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpbiB0aGUgZm9sbG93aW5nIHNpdHVhdGlv
bnM6Ci0gICAgLSBUZXhJbWFnZTJEIGlzIGNhbGxlZCB3aXRoIDxmb3JtYXQ+IGFuZCA8aW50ZXJu
YWxmb3JtYXQ+IG9mCi0gICAgICBERVBUSF9DT01QT05FTlQgb3IgREVQVEhfU1RFTkNJTF9PRVMg
YW5kCi0gICAgICAgLSA8dGFyZ2V0PiBpcyBub3QgVEVYVFVSRV8yRCwKLSAgICAgICAtIDxkYXRh
PiBpcyBub3QgTlVMTCwgb3IKLSAgICAgICAtIDxsZXZlbD4gaXMgbm90IHplcm8uCi0gICAgLSBU
ZXhTdWJJbWFnZTJEIGlzIGNhbGxlZCB3aXRoIDxmb3JtYXQ+IG9mIERFUFRIX0NPTVBPTkVOVCBv
ciAKLSAgICAgIERFUFRIX1NURU5DSUxfT0VTLgotICAgIC0gVGV4U3RvcmFnZTJERVhUIGlzIGNh
bGxlZCB3aXRoIDxpbnRlcm5hbGZvcm1hdD4gb2YgREVQVEhfQ09NUE9ORU5UMTYsCi0gICAgICBE
RVBUSF9DT01QT05FTlQzMl9PRVMsIG9yIERFUFRIMjRfU1RFTkNJTDhfT0VTLCBhbmQgCi0gICAg
ICAgLSA8dGFyZ2V0PiBpcyBub3QgVEVYVFVSRV8yRCwgb3IKLSAgICAgICAtIDxsZXZlbHM+IGlz
IG5vdCBvbmUuCi0gICAgLSBDb3B5VGV4SW1hZ2UyRCBpcyBjYWxsZWQgd2l0aCBhbiA8aW50ZXJu
YWxmb3JtYXQ+IHRoYXQgaGFzIGEgYmFzZQotICAgICAgaW50ZXJuYWwgZm9ybWF0IG9mIERFUFRI
X0NPTVBPTkVOVCBvciBERVBUSF9TVEVOQ0lMX09FUy4KLSAgICAtIENvcHlUZXhTdWJJbWFnZTJE
IGlzIGNhbGxlZCB3aXRoIGEgdGFyZ2V0IHRleHR1cmUgdGhhdCBoYXMgYSBiYXNlCi0gICAgICBp
bnRlcm5hbCBmb3JtYXQgb2YgREVQVEhfQ09NUE9ORU5UIG9yIERFUFRIX1NURU5DSUxfT0VTLgot
ICAgIC0gR2VuZXJhdGVNaXBtYXAgaXMgY2FsbGVkIG9uIGEgdGV4dHVyZSB0aGF0IGhhcyBhIGJh
c2UgaW50ZXJuYWwgZm9ybWF0Ci0gICAgICBvZiBERVBUSF9DT01QT05FTlQgb3IgREVQVEhfU1RF
TkNJTF9PRVMuCi0gICAgCi1OZXcgU3RhdGUKLQotICAgIE5vbmUuCi0KLUlzc3VlcwotCi0gICAg
MSkgV2hhdCBhcmUgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhpcyBleHRlbnNpb24gYW5kIE9F
U19kZXB0aF90ZXh0dXJlCi0gICAgICAgYW5kIE9FU19wYWNrZWRfZGVwdGhfc3RlbmNpbD8KLSAg
ICAKLSAgICAgICBSRVNPTFZFRDogVGhpcyBleHRlbnNpb246Ci0gICAgICAgICAtIGRvZXMgbm90
IHN1cHBvcnQgbG9hZGluZyBwcmUtYmFrZWQgZGVwdGggc3RlbmNpbCBkYXRhIHZpYSAKLSAgICAg
ICAgICAgVGV4SW1hZ2UyRCBvciBUZXhTdWJJbWFnZTJELgotICAgICAgICAgLSBhbGxvd3MgdmFy
aWFiaWxpdHkgaW4gdGhlIHktLCB6LSwgYW5kIHctY29tcG9uZW50cyBvZiB0aGUgc2FtcGxlCi0g
ICAgICAgICAgIHJlc3VsdHMgZnJvbSBkZXB0aCB0ZXh0dXJlcy4KLSAgICAgICAgIC0gb25seSBz
dXBwb3J0cyBvbmUgbGV2ZWwgdGV4dHVyZXMuCi0gICAgICAgICAtIGV4cGxpY2l0bHkgbGlzdHMg
dGhlIGVycm9ycyBmb3IgdW5zdXBwb3J0ZWQgZnVuY3Rpb25hbGl0eS4KLSAgICAgICAgICAgU2lu
Y2UgdGhlc2Ugd2VyZSBub3QgY2xlYXJseSBzcGVjaWZpZWQgaW4gdGhlIE9FU19kZXB0aF90ZXh0
dXJlCi0gICAgICAgICAgIGV4dGVuc2lvbiB0aGVyZSBtYXkgYmUgZGlmZmVyZW5jZXMgaW4gZXJy
b3IgdmFsdWVzIGJldHdlZW4gCi0gICAgICAgICAgIGltcGxlbWVudGF0aW9ucyBvZiBPRVNfZGVw
dGhfdGV4dHVyZSBhbmQgQU5HTEVfZGVwdGhfdGV4dHVyZS4KLSAgICAgICBUaGlzIHNwZWNpZmlj
YXRpb24gd2FzIGFsc28gcmViYXNlZCB0byBhcHBseSBhZ2FpbnN0IHRoZSBPcGVuR0wgRVMgMi4w
Ci0gICAgICAgc3BlY2lmaWNhdGlvbiBpbnN0ZWFkIG9mIHRoZSBPcGVuR0wgc3BlY2lmaWNhdGlv
biwgbWFraW5nIGl0IG1vcmUgCi0gICAgICAgb2J2aW91cyB3aGF0IGFsbCB0aGUgZnVuY3Rpb25h
bGl0eSBjaGFuZ2VzIGFyZS4KLQotICAgIDIpIFdoeSBkb2VzIFRleFN1YkltYWdlMkQgYWNjZXB0
IHRoZSBuZXcgZm9ybWF0L3R5cGUgY29tYmluYXRpb25zIGV2ZW4KLSAgICAgICB0aG91Z2ggaXQg
ZG9lcyBub3QgYWN0dWFsbHkgc3VwcG9ydCBsb2FkaW5nIGRhdGE/Ci0KLSAgICAgICBSRVNPTFZF
RDogVGhpcyB3YXMgZG9uZSB0byBiZSBtb3JlIGNvbnNpc3RlbnQgd2l0aCB0aGUgT0VTX2RlcHRo
X3RleHR1cmUKLSAgICAgICBleHRlbnNpb24gYW5kIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGFkZCBz
dXBwb3J0IGZvciBsb2FkaW5nIHRleHR1cmUKLSAgICAgICBkYXRhIGlmIGl0IGlzIHBvc3NpYmxl
IHRvIHN1cHBvcnQgaW4gdGhlIGZ1dHVyZS4KLQotICAgIDMpIFdoeSBhcmUgb25seSAxLWxldmVs
IGRlcHRoIHRleHR1cmVzIHN1cHBvcnRlZD8gCi0KLSAgICAgICBSRVNPTFZFRDogVGhlIG9ubHkg
dXNlIGZvciBtdWx0aXBsZSBsZXZlbHMgb2YgZGVwdGggdGV4dHVyZXMgd291bGQKLSAgICAgICBi
ZSBmb3IgZml0bGVyZWQgdGV4dHVyaW5nLiBIb3dldmVyIHNpbmNlIGl0IGlzIG5vdCBwb3NzaWJs
ZSB0bwotICAgICAgIHJlbmRlciB0byBub24temVyby1sZXZlbCB0ZXh0dXJlIGxldmVscyBpbiBP
cGVuR0wgRVMgMi4wLCBhbmQgc2luY2UKLSAgICAgICB0aGlzIGV4dGVuc2lvbiBmb3JiaWRzIGxv
YWRpbmcgZXhpc3RpbmcgZGF0YSBhbmQgR2VuZXJhdGVNaXBtYXAgb24gCi0gICAgICAgZGVwdGgg
dGV4dHVyZXMsIGl0IGlzIGltcG9zc2libGUgdG8gaW5pdGlhbGl6ZSBvciBzcGVjaWZ5IGNvbnRl
bnRzCi0gICAgICAgZm9yIG5vbi16ZXJvIGxldmVscyBvZiBkZXB0aCB0ZXh0dXJlcy4KLQotUmV2
aXNpb24gSGlzdG9yeQotIAotICAgIDAyLzI1LzIwMTMgIHN3b29kcyAgcmV2aXNlIHRvIGFsbG93
IHRleHR1cmUgbG9va3VwIHRvIGd1YXJhbnRlZSBkZXB0aCB2YWx1ZXMKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG9ubHkgaW4gcmVkIGNoYW5uZWwgb2Ygc2FtcGxlIHJlc3VsdC4KLSAgICAwNi8w
NC8yMDEyICBkZ2tvY2ggIGZpeCBlcnJvcnMsIGRpc2FsbG93IG11bHRpLWxldmVsIGRlcHRoIHRl
eHR1cmVzLgotICAgIDA1LzMwLzIwMTIgIGRna29jaCAgbWlub3IgdXBkYXRlcyBhbmQgYWRkIGlz
c3Vlcy4KLSAgICAwNS8yMy8yMDEyICBkZ2tvY2ggIGludGlhbCByZXZpc2lvbiBiYXNlZCBvbiBP
RVNfZGVwdGhfdGV4dHVyZSBhbmQgCi0gICAgICAgICAgICAgICAgICAgICAgICBPRVNfcGFja2Vk
X2RlcHRoX3N0ZW5jaWwgYW5kIHJlYmFzZWQgYWdhaW5zdCB0aGUgRVMgMi4wIHNwZWMKLQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9BTkdMRV9mcmFtZWJ1ZmZlcl9i
bGl0LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25z
L0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQudHh0CShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQudHh0CShu
b25leGlzdGVudCkKQEAgLTEsNDM3ICswLDAgQEAKLU5hbWUKLQotICAgIEFOR0xFX2ZyYW1lYnVm
ZmVyX2JsaXQKLQotTmFtZSBTdHJpbmdzCi0KLSAgICBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0
Ci0KLUNvbnRyaWJ1dG9ycwotCi0gICAgQ29udHJpYnV0b3JzIHRvIEVYVF9mcmFtZWJ1ZmZlcl9i
bGl0Ci0gICAgRGFuaWVsIEtvY2gsIFRyYW5zR2FtaW5nIEluYy4KLSAgICBTaGFubm9uIFdvb2Rz
LCBUcmFuc0dhbWluZyBJbmMuCi0gICAgS2VubmV0aCBSdXNzZWxsLCBHb29nbGUgSW5jLgotICAg
IFZhbmdlbGlzIEtva2tldmlzLCBHb29nbGUgSW5jLgotCi1Db250YWN0Ci0KLSAgICBEYW5pZWwg
S29jaCwgVHJhbnNHYW1pbmcgSW5jLiAoZGFuaWVsICdhdCcgdHJhbnNnYW1pbmcgJ2RvdCcgY29t
KQotCi1TdGF0dXMKLQotICAgIEltcGxlbWVudGVkIGluIEFOR0xFIEVTMgotCi1WZXJzaW9uCi0K
LSAgICBMYXN0IE1vZGlmaWVkIERhdGU6IFNlcHQgMjIsIDIwMTIKLSAgICBBdXRob3IgUmV2aXNp
b246IDQKLQotTnVtYmVyCi0KLSAgICBPcGVuR0wgRVMgRXh0ZW5zaW9uICM4MwotCi1EZXBlbmRl
bmNpZXMKLQotICAgIE9wZW5HTCBFUyAyLjAgaXMgcmVxdWlyZWQuCi0KLSAgICBUaGUgZXh0ZW5z
aW9uIGlzIHdyaXR0ZW4gYWdhaW5zdCB0aGUgT3BlbkdMIEVTIDIuMCBzcGVjaWZpY2F0aW9uLgot
Ci0gICAgT0VTX3RleHR1cmVfM0QgYWZmZWN0cyB0aGUgZGVmaW5pdGlvbiBvZiB0aGlzIGV4dGVu
c2lvbi4KLQotT3ZlcnZpZXcKLQotICAgIFRoaXMgZXh0ZW5zaW9uIG1vZGlmaWVzIGZyYW1lYnVm
ZmVyIG9iamVjdHMgYnkgc3BsaXR0aW5nIHRoZQotICAgIGZyYW1lYnVmZmVyIG9iamVjdCBiaW5k
aW5nIHBvaW50IGludG8gc2VwYXJhdGUgRFJBVyBhbmQgUkVBRAotICAgIGJpbmRpbmdzLiAgVGhp
cyBhbGxvd3MgY29weWluZyBkaXJlY3RseSBmcm9tIG9uZSBmcmFtZWJ1ZmZlciB0bwotICAgIGFu
b3RoZXIuICBJbiBhZGRpdGlvbiwgYSBuZXcgaGlnaCBwZXJmb3JtYW5jZSBibGl0IGZ1bmN0aW9u
IGlzCi0gICAgYWRkZWQgdG8gZmFjaWxpdGF0ZSB0aGVzZSBibGl0cyBhbmQgcGVyZm9ybSBzb21l
IGRhdGEgY29udmVyc2lvbgotICAgIHdoZXJlIGFsbG93ZWQuCi0KLUlQIFN0YXR1cwotCi0gICAg
Tm8ga25vd24gSVAgY2xhaW1zLgotCi1OZXcgUHJvY2VkdXJlcyBhbmQgRnVuY3Rpb25zCi0KLSAg
ICB2b2lkIEJsaXRGcmFtZWJ1ZmZlckFOR0xFKGludCBzcmNYMCwgaW50IHNyY1kwLCBpbnQgc3Jj
WDEsIGludCBzcmNZMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkc3RYMCwg
aW50IGRzdFkwLCBpbnQgZHN0WDEsIGludCBkc3RZMSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJpdGZpZWxkIG1hc2ssIGVudW0gZmlsdGVyKTsKLQotTmV3IFRva2VucwotCi0gICAg
QWNjZXB0ZWQgYnkgdGhlIDx0YXJnZXQ+IHBhcmFtZXRlciBvZiBCaW5kRnJhbWVidWZmZXIsCi0g
ICAgQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cywgRnJhbWVidWZmZXJUZXh0dXJlMkQsIEZyYW1lYnVm
ZmVyVGV4dHVyZTNET0VTLAotICAgIEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyLCBhbmQKLSAgICBH
ZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdjoKLQotICAgIC8vIChyZXVzaW5nIHRo
ZSB0b2tlbnMgZnJvbSBFWFRfZnJhbWVidWZmZXJfYmxpdCkKLSAgICBSRUFEX0ZSQU1FQlVGRkVS
X0FOR0xFICAgICAgICAgICAgICAgIDB4OENBOAotICAgIERSQVdfRlJBTUVCVUZGRVJfQU5HTEUg
ICAgICAgICAgICAgICAgMHg4Q0E5Ci0KLSAgICBBY2NlcHRlZCBieSB0aGUgPHBuYW1lPiBwYXJh
bWV0ZXJzIG9mIEdldEludGVnZXJ2IGFuZCBHZXRGbG9hdHY6Ci0KLSAgICAvLyAocmV1c2luZyB0
aGUgdG9rZW5zIGZyb20gRVhUX2ZyYW1lYnVmZmVyX2JsaXQpCi0gICAgRFJBV19GUkFNRUJVRkZF
Ul9CSU5ESU5HX0FOR0xFICAgICAgICAweDhDQTYgLy8gYWxpYXMgRlJBTUVCVUZGRVJfQklORElO
RwotICAgIFJFQURfRlJBTUVCVUZGRVJfQklORElOR19BTkdMRSAgICAgICAgMHg4Q0FBCi0KLQot
QWRkaXRpb25zIHRvIENoYXB0ZXIgMyBvZiB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZpY2F0aW9u
IChSYXN0ZXJpemF0aW9uKQotCi0gICAgQ2hhbmdlIHRoZSBsYXN0IHBhcmFncmFwaCBvZiBzZWN0
aW9uIDMuNy4yIChBbHRlcm5hdGUgVGV4dHVyZSBJbWFnZQotICAgIFNwZWNpZmljYXRpb24gQ29t
bWFuZHMpIHRvOgotCi0gICAgIkNhbGxpbmcgQ29weVRleFN1YkltYWdlM0RPRVMsIENvcHlUZXhJ
bWFnZTJEIG9yIENvcHlUZXhTdWJJbWFnZTJEIHdpbGwKLSAgICByZXN1bHQgaW4gYW4gSU5WQUxJ
RF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gZXJyb3IgaWYgdGhlIG9iamVjdCBib3VuZAotICAgIHRv
IFJFQURfRlJBTUVCVUZGRVJfQklORElOR19BTkdMRSBpcyBub3QgImZyYW1lYnVmZmVyIGNvbXBs
ZXRlIgotICAgIChzZWN0aW9uIDQuNC40LjIpLiIKLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgNCBv
ZiB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZpY2F0aW9uIChQZXItRnJhZ21lbnQKLU9wZXJhdGlv
bnMgYW5kIHRoZSBGcmFtZWJ1ZmZlcikKLQotICAgIENoYW5nZSB0aGUgZmlyc3Qgd29yZCBvZiBD
aGFwdGVyIDQgZnJvbSAiVGhlIiB0byAiQSIuCi0KLSAgICBBcHBlbmQgdG8gdGhlIGludHJvZHVj
dGlvbiBvZiBDaGFwdGVyIDQ6Ci0KLSAgICAiQ29uY2VwdHVhbGx5LCB0aGUgR0wgaGFzIHR3byBh
Y3RpdmUgZnJhbWVidWZmZXJzOyB0aGUgZHJhdwotICAgIGZyYW1lYnVmZmVyIGlzIHRoZSBkZXN0
aW5hdGlvbiBmb3IgcmVuZGVyaW5nIG9wZXJhdGlvbnMsIGFuZCB0aGUKLSAgICByZWFkIGZyYW1l
YnVmZmVyIGlzIHRoZSBzb3VyY2UgZm9yIHJlYWRiYWNrIG9wZXJhdGlvbnMuICBUaGUgc2FtZQot
ICAgIGZyYW1lYnVmZmVyIG1heSBiZSB1c2VkIGZvciBib3RoIGRyYXdpbmcgYW5kIHJlYWRpbmcu
ICBTZWN0aW9uCi0gICAgNC40LjEgZGVzY3JpYmVzIHRoZSBtZWNoYW5pc20gZm9yIGNvbnRyb2xs
aW5nIGZyYW1lYnVmZmVyIHVzYWdlLiIKLQotICAgIE1vZGlmeSB0aGUgZmlyc3Qgc2VudGVuY2Ug
b2YgdGhlIGxhc3QgcGFyYWdyYXBoIG9mIHNlY3Rpb24gNC4xLjEgYXMgZm9sbG93czoKLQotICAg
ICJXaGlsZSBhbiBhcHBsaWNhdGlvbi1jcmVhdGVkIGZyYW1lYnVmZmVyIG9iamVjdCBpcyBib3Vu
ZCB0bwotICAgIERSQVdfRlJBTUVCVUZGRVJfQU5HTEUsIHRoZSBwaXhlbCBvd25lcnNoaXAgdGVz
dCBhbHdheXMgcGFzc2VzLiIKLQotICAgIEFkZCB0byA0LjMuMSAoUmVhZGluZyBQaXhlbHMpLCBy
aWdodCBiZWZvcmUgdGhlIHN1YnNlY3Rpb24gdGl0bGVkCi0gICAgIk9idGFpbmluZyBQaXhlbHMg
ZnJvbSB0aGUgRnJhbWVidWZmZXIiOgotCi0gICAgIkNhbGxpbmcgUmVhZFBpeGVscyBnZW5lcmF0
ZXMgSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gaWYKLSAgICB0aGUgb2JqZWN0IGJvdW5k
IHRvIFJFQURfRlJBTUVCVUZGRVJfQklORElOR19BTkdMRSBpcyBub3QgImZyYW1lYnVmZmVyCi0g
ICAgY29tcGxldGUiIChzZWN0aW9uIDQuNC40LjIpLiBHZXRJbnRlZ2VydiBnZW5lcmF0ZXMgYW4g
SU5WQUxJRF9PUEVSQVRJT04KLSAgICBlcnJvciBpZiB0aGUgb2JqZWN0IGJvdW5kIHRvIFJFQURf
RlJBTUVCVUZGRVJfQklORElOR19BTkdMRSBpcyBub3QKLSAgICBmcmFtZWJ1ZmZlciBjb21wbGV0
ZSwgb3IgaWYgdGhlIEdMIGlzIHVzaW5nIGEgZnJhbWVidWZmZXIgb2JqZWN0IAotICAgIChpLmUu
IFJFQURfRlJBTUVCVUZGRVJfQklORElOR19BTkdMRSBpcyBub24temVybykgYW5kIHRoZXJlIGlz
IG5vIGNvbG9yCi0gICAgYXR0YWNobWVudC4iCi0KLSAgICBJbnNlcnQgYSBuZXcgc2VjdGlvbiA0
LjMuMiB0aXRsZWQgIkNvcHlpbmcgUGl4ZWxzIiBhbmQgcmVudW1iZXIgdGhlCi0gICAgc3Vic2Vx
dWVudCBzZWN0aW9ucy4gIEFkZCB0aGUgZm9sbG93aW5nIHRleHQ6Ci0KLSAgICAiQmxpdEZyYW1l
YnVmZmVyQU5HTEUgdHJhbnNmZXJzIGEgcmVjdGFuZ2xlIG9mIHBpeGVsIHZhbHVlcyBmcm9tIG9u
ZQotICAgIHJlZ2lvbiBvZiB0aGUgcmVhZCBmcmFtZWJ1ZmZlciB0byBhbm90aGVyIGluIHRoZSBk
cmF3IGZyYW1lYnVmZmVyLgotCi0gICAgQmxpdEZyYW1lYnVmZmVyQU5HTEUoaW50IHNyY1gwLCBp
bnQgc3JjWTAsIGludCBzcmNYMSwgaW50IHNyY1kxLAotICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBkc3RYMCwgaW50IGRzdFkwLCBpbnQgZHN0WDEsIGludCBkc3RZMSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBiaXRmaWVsZCBtYXNrLCBlbnVtIGZpbHRlcik7Ci0KLSAgICA8bWFzaz4g
aXMgdGhlIGJpdHdpc2UgT1Igb2YgYSBudW1iZXIgb2YgdmFsdWVzIGluZGljYXRpbmcgd2hpY2gK
LSAgICBidWZmZXJzIGFyZSB0byBiZSBjb3BpZWQuIFRoZSB2YWx1ZXMgYXJlIENPTE9SX0JVRkZF
Ul9CSVQsCi0gICAgREVQVEhfQlVGRkVSX0JJVCwgYW5kIFNURU5DSUxfQlVGRkVSX0JJVCwgd2hp
Y2ggYXJlIGRlc2NyaWJlZCBpbgotICAgIHNlY3Rpb24gNC4yLjMuICBUaGUgcGl4ZWxzIGNvcnJl
c3BvbmRpbmcgdG8gdGhlc2UgYnVmZmVycyBhcmUKLSAgICBjb3BpZWQgZnJvbSB0aGUgc291cmNl
IHJlY3RhbmdsZSwgYm91bmQgYnkgdGhlIGxvY2F0aW9ucyAoc3JjWDAsCi0gICAgc3JjWTApIGFu
ZCAoc3JjWDEsIHNyY1kxKSwgdG8gdGhlIGRlc3RpbmF0aW9uIHJlY3RhbmdsZSwgYm91bmQgYnkK
LSAgICB0aGUgbG9jYXRpb25zIChkc3RYMCwgZHN0WTApIGFuZCAoZHN0WDEsIGRzdFkxKS4gIFRo
ZSBsb3dlciBib3VuZHMKLSAgICBvZiB0aGUgcmVjdGFuZ2xlIGFyZSBpbmNsdXNpdmUsIHdoaWxl
IHRoZSB1cHBlciBib3VuZHMgYXJlCi0gICAgZXhjbHVzaXZlLgotCi0gICAgVGhlIGFjdHVhbCBy
ZWdpb24gdGFrZW4gZnJvbSB0aGUgcmVhZCBmcmFtZWJ1ZmZlciBpcyBsaW1pdGVkIHRvIHRoZQot
ICAgIGludGVyc2VjdGlvbiBvZiB0aGUgc291cmNlIGJ1ZmZlcnMgYmVpbmcgdHJhbnNmZXJyZWQs
IHdoaWNoIG1heSBpbmNsdWRlCi0gICAgdGhlIGNvbG9yIGJ1ZmZlciwgdGhlIGRlcHRoIGJ1ZmZl
ciwgYW5kL29yIHRoZSBzdGVuY2lsIGJ1ZmZlciBkZXBlbmRpbmcgb24KLSAgICA8bWFzaz4uIFRo
ZSBhY3R1YWwgcmVnaW9uIHdyaXR0ZW4gdG8gdGhlIGRyYXcgZnJhbWVidWZmZXIgaXMgbGltaXRl
ZCB0byB0aGUKLSAgICBpbnRlcnNlY3Rpb24gb2YgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlcnMgYmVp
bmcgd3JpdHRlbiwgd2hpY2ggbWF5IGluY2x1ZGUKLSAgICB0aGUgY29sb3IgYnVmZmVyLCB0aGUg
ZGVwdGggYnVmZmVyLCBhbmQvb3IgdGhlIHN0ZW5jaWwgYnVmZmVyCi0gICAgZGVwZW5kaW5nIG9u
IDxtYXNrPi4gV2hldGhlciBvciBub3QgdGhlIHNvdXJjZSBvciBkZXN0aW5hdGlvbiByZWdpb25z
IGFyZQotICAgIGFsdGVyZWQgZHVlIHRvIHRoZXNlIGxpbWl0cywgdGhlIG9mZnNldCBhcHBsaWVk
IHRvIHBpeGVscyBiZWluZyB0cmFuc2ZlcnJlZAotICAgIGlzIHBlcmZvcm1lZCBhcyB0aG91Z2gg
bm8gc3VjaCBsaW1pdHMgd2VyZSBwcmVzZW50LgotCi0gICAgU3RyZXRjaGluZyBhbmQgc2NhbGlu
ZyBkdXJpbmcgYSBjb3B5IGFyZSBub3Qgc3VwcG9ydGVkLiBJZiB0aGUgc291cmNlCi0gICAgYW5k
IGRlc3RpbmF0aW9uIHJlY3RhbmdsZSBkaW1lbnNpb25zIGRvIG5vdCBtYXRjaCwgbm8gY29weSBp
cwotICAgIHBlcmZvcm1lZCBhbmQgYW4gSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IgaXMgZ2VuZXJh
dGVkLgotICAgIEJlY2F1c2Ugc3RyZXRjaGluZyBpcyBub3Qgc3VwcG9ydGVkLCA8ZmlsdGVyPiBt
dXN0IGJlIE5FQVJFU1QgYW5kCi0gICAgbm8gZmlsdGVyaW5nIGlzIGFwcGxpZWQuIAotCi0gICAg
RmxpcHBpbmcgZHVyaW5nIGEgY29weSBpcyBub3Qgc3VwcG9ydGVkLiBJZiBlaXRoZXIgdGhlIHNv
dXJjZSBvciAKLSAgICBkZXN0aW5hdGlvbiByZWN0YW5nbGUgc3BlY2lmaWVzIGEgbmVnYXRpdmUg
ZGltZW5zaW9uLCB0aGUgZXJyb3IgCi0gICAgSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVk
LiBJZiBib3RoIHRoZSBzb3VyY2UgYW5kIAotICAgIGRlc3RpbmF0aW9uIHJlY3RhbmdsZXMgc3Bl
Y2lmeSBhIG5lZ2F0aXZlIGRpbWVuc2lvbiBmb3IgdGhlIHNhbWUgCi0gICAgZGlyZWN0aW9uLCBu
byByZXZlcnNhbCBpcyByZXF1aXJlZCBhbmQgdGhlIG9wZXJhdGlvbiBpcyBzdXBwb3J0ZWQuCi0K
LSAgICBJZiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBidWZmZXJzIGFyZSBpZGVudGljYWws
IGFuZCB0aGUKLSAgICBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHJlY3RhbmdsZXMgb3ZlcmxhcCwg
dGhlIHJlc3VsdCBvZiB0aGUgYmxpdAotICAgIG9wZXJhdGlvbiBpcyB1bmRlZmluZWQuCi0KLSAg
ICBUaGUgcGl4ZWwgY29weSBieXBhc3NlcyB0aGUgZnJhZ21lbnQgcGlwZWxpbmUuICBUaGUgb25s
eSBmcmFnbWVudAotICAgIG9wZXJhdGlvbnMgd2hpY2ggYWZmZWN0IHRoZSBibGl0IGFyZSB0aGUg
cGl4ZWwgb3duZXJzaGlwIHRlc3QgYW5kCi0gICAgdGhlIHNjaXNzb3IgdGVzdC4KLQotICAgIElm
IGEgYnVmZmVyIGlzIHNwZWNpZmllZCBpbiA8bWFzaz4gYW5kIGRvZXMgbm90IGV4aXN0IGluIGJv
dGggdGhlCi0gICAgcmVhZCBhbmQgZHJhdyBmcmFtZWJ1ZmZlcnMsIHRoZSBjb3JyZXNwb25kaW5n
IGJpdCBpcyBzaWxlbnRseQotICAgIGlnbm9yZWQuCi0KLSAgICBDYWxsaW5nIEJsaXRGcmFtZWJ1
ZmZlckFOR0xFIHdpbGwgcmVzdWx0IGluIGFuCi0gICAgSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVS
QVRJT04gZXJyb3IgaWYgdGhlIG9iamVjdHMgYm91bmQgdG8KLSAgICBEUkFXX0ZSQU1FQlVGRkVS
X0JJTkRJTkdfQU5HTEUgYW5kIFJFQURfRlJBTUVCVUZGRVJfQklORElOR19BTkdMRSBhcmUKLSAg
ICBub3QgImZyYW1lYnVmZmVyIGNvbXBsZXRlIiAoc2VjdGlvbiA0LjQuNC4yKS4iCi0KLSAgICBD
YWxsaW5nIEJsaXRGcmFtZWJ1ZmZlckFOR0xFIHdpbGwgcmVzdWx0IGluIGFuIElOVkFMSURfT1BF
UkFUSU9OCi0gICAgZXJyb3IgaWYgPG1hc2s+IGluY2x1ZGVzIENPTE9SX0JVRkZFUl9CSVQgYW5k
IHRoZSBzb3VyY2UgYW5kIAotICAgIGRlc3RpbmF0aW9uIGNvbG9yIGZvcm1hdHMgdG8gbm90IG1h
dGNoLgotCi0gICAgQ2FsbGluZyBCbGl0RnJhbWVidWZmZXJBTkdMRSB3aWxsIHJlc3VsdCBpbiBh
biBJTlZBTElEX09QRVJBVElPTgotICAgIGVycm9yIGlmIDxtYXNrPiBpbmNsdWRlcyBERVBUSF9C
VUZGRVJfQklUIG9yIFNURU5DSUxfQlVGRkVSX0JJVAotICAgIGFuZCB0aGUgc291cmNlIGFuZCBk
ZXN0aW5hdGlvbiBkZXB0aCBhbmQgc3RlbmNpbCBidWZmZXIgZm9ybWF0cyBkbwotICAgIG5vdCBt
YXRjaC4KLQotICAgIElmIDxtYXNrPiBpbmNsdWRlcyBERVBUSF9CVUZGRVJfQklUIG9yIFNURU5D
SUxfQlVGRkVSX0JJVCwgb25seSAKLSAgICBjb21wbGV0ZSBidWZmZXJzIGNhbiBiZSBjb3BpZWQu
ICBJZiB0aGUgc291cmNlIHJlY3RhbmdsZSBkb2VzIG5vdCAKLSAgICBzcGVjaWZ5IHRoZSBjb21w
bGV0ZSBzb3VyY2UgYnVmZmVyIG9yIHRoZSBkZXN0aW5hdGlvbiByZWN0YW5nbGUgCi0gICAgKGFm
dGVyIGZhY3RvcmluZyB0aGUgc2Npc3NvciByZWdpb24sIGlmIGFwcGxpY2FibGUpIGRvZXMgbm90
IHNwZWNpZnkgCi0gICAgdGhlIGNvbXBsZXRlIGRlc3RpbmF0aW9uIGJ1ZmZlciwgYW4gSU5WQUxJ
RF9PUEVSQVRJT04KLSAgICBlcnJvciBpcyBnZW5lcmF0ZWQuCi0KLSAgICBNb2RpZnkgdGhlIGJl
Z2lubmluZyBvZiBzZWN0aW9uIDQuNC4xIGFzIGZvbGxvd3M6Ci0KLSAgICAiVGhlIGRlZmF1bHQg
ZnJhbWVidWZmZXIgZm9yIHJlbmRlcmluZyBhbmQgcmVhZGJhY2sgb3BlcmF0aW9ucyBpcwotICAg
IHByb3ZpZGVkIGJ5IHRoZSB3aW5kb3dpbmcgc3lzdGVtLiAgSW4gYWRkaXRpb24sIG5hbWVkIGZy
YW1lYnVmZmVyCi0gICAgb2JqZWN0cyBjYW4gYmUgY3JlYXRlZCBhbmQgb3BlcmF0ZWQgdXBvbi4g
IFRoZSBuYW1lc3BhY2UgZm9yCi0gICAgZnJhbWVidWZmZXIgb2JqZWN0cyBpcyB0aGUgdW5zaWdu
ZWQgaW50ZWdlcnMsIHdpdGggemVybyByZXNlcnZlZAotICAgIGJ5IHRoZSBHTCBmb3IgdGhlIGRl
ZmF1bHQgZnJhbWVidWZmZXIuCi0KLSAgICBBIGZyYW1lYnVmZmVyIG9iamVjdCBpcyBjcmVhdGVk
IGJ5IGJpbmRpbmcgYW4gdW51c2VkIG5hbWUgdG8KLSAgICBEUkFXX0ZSQU1FQlVGRkVSX0FOR0xF
IG9yIFJFQURfRlJBTUVCVUZGRVJfQU5HTEUuICBUaGUgYmluZGluZyBpcwotICAgIGVmZmVjdGVk
IGJ5IGNhbGxpbmcKLQotICAgICAgICB2b2lkIEJpbmRGcmFtZWJ1ZmZlcihlbnVtIHRhcmdldCwg
dWludCBmcmFtZWJ1ZmZlcik7Ci0KLSAgICB3aXRoIDx0YXJnZXQ+IHNldCB0byB0aGUgZGVzaXJl
ZCBmcmFtZWJ1ZmZlciB0YXJnZXQgYW5kCi0gICAgPGZyYW1lYnVmZmVyPiBzZXQgdG8gdGhlIHVu
dXNlZCBuYW1lLiAgVGhlIHJlc3VsdGluZyBmcmFtZWJ1ZmZlcgotICAgIG9iamVjdCBpcyBhIG5l
dyBzdGF0ZSB2ZWN0b3IsIGNvbXByaXNpbmcgb25lIHNldCBvZiB0aGUgc3RhdGUgdmFsdWVzCi0g
ICAgbGlzdGVkIGluIHRhYmxlIDYuMjMgZm9yIGVhY2ggYXR0YWNobWVudCBwb2ludCBvZiB0aGUK
LSAgICBmcmFtZWJ1ZmZlciwgc2V0IHRvIHRoZSBzYW1lIGluaXRpYWwgdmFsdWVzLiAgVGhlcmUg
aXMgb25lCi0gICAgY29sb3IgYXR0YWNobWVudCBwb2ludCwgcGx1cyBvbmUgZWFjaAotICAgIGZv
ciB0aGUgZGVwdGggYW5kIHN0ZW5jaWwgYXR0YWNobWVudCBwb2ludHMuCi0KLSAgICBCaW5kRnJh
bWVidWZmZXIgbWF5IGFsc28gYmUgdXNlZCB0byBiaW5kIGFuIGV4aXN0aW5nCi0gICAgZnJhbWVi
dWZmZXIgb2JqZWN0IHRvIERSQVdfRlJBTUVCVUZGRVJfQU5HTEUgb3IKLSAgICBSRUFEX0ZSQU1F
QlVGRkVSX0FOR0xFLiAgSWYgdGhlIGJpbmQgaXMgc3VjY2Vzc2Z1bCBubyBjaGFuZ2UgaXMgbWFk
ZQotICAgIHRvIHRoZSBzdGF0ZSBvZiB0aGUgYm91bmQgZnJhbWVidWZmZXIgb2JqZWN0LCBhbmQg
YW55IHByZXZpb3VzCi0gICAgYmluZGluZyB0byA8dGFyZ2V0PiBpcyBicm9rZW4uCi0KLSAgICBJ
ZiBhIGZyYW1lYnVmZmVyIG9iamVjdCBpcyBib3VuZCB0byBEUkFXX0ZSQU1FQlVGRkVSX0FOR0xF
IG9yCi0gICAgUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSwgaXQgYmVjb21lcyB0aGUgdGFyZ2V0IGZv
ciByZW5kZXJpbmcgb3IKLSAgICByZWFkYmFjayBvcGVyYXRpb25zLCByZXNwZWN0aXZlbHksIHVu
dGlsIGl0IGlzIGRlbGV0ZWQgb3IgYW5vdGhlcgotICAgIGZyYW1lYnVmZmVyIGlzIGJvdW5kIHRv
IHRoZSBjb3JyZXNwb25kaW5nIGJpbmQgcG9pbnQuICBDYWxsaW5nCi0gICAgQmluZEZyYW1lYnVm
ZmVyIHdpdGggPHRhcmdldD4gc2V0IHRvIEZSQU1FQlVGRkVSIGJpbmRzIHRoZQotICAgIGZyYW1l
YnVmZmVyIHRvIGJvdGggRFJBV19GUkFNRUJVRkZFUl9BTkdMRSBhbmQgUkVBRF9GUkFNRUJVRkZF
Ul9BTkdMRS4KLQotICAgIFdoaWxlIGEgZnJhbWVidWZmZXIgb2JqZWN0IGlzIGJvdW5kLCBHTCBv
cGVyYXRpb25zIG9uIHRoZSB0YXJnZXQKLSAgICB0byB3aGljaCBpdCBpcyBib3VuZCBhZmZlY3Qg
dGhlIGltYWdlcyBhdHRhY2hlZCB0byB0aGUgYm91bmQKLSAgICBmcmFtZWJ1ZmZlciBvYmplY3Qs
IGFuZCBxdWVyaWVzIG9mIHRoZSB0YXJnZXQgdG8gd2hpY2ggaXQgaXMgYm91bmQKLSAgICByZXR1
cm4gc3RhdGUgZnJvbSB0aGUgYm91bmQgb2JqZWN0LiAgUXVlcmllcyBvZiB0aGUgdmFsdWVzCi0g
ICAgc3BlY2lmaWVkIGluIHRhYmxlIDYuMjAgKEltcGxlbWVudGF0aW9uIERlcGVuZGVudCBQaXhl
bCBEZXB0aHMpCi0gICAgYW5kIHRhYmxlIDYueXkgKEZyYW1lYnVmZmVyIERlcGVuZGVudCBWYWx1
ZXMpIGFyZQotICAgIGRlcml2ZWQgZnJvbSB0aGUgZnJhbWVidWZmZXIgb2JqZWN0IGJvdW5kIHRv
IERSQVdfRlJBTUVCVUZGRVJfQU5HTEUuCi0KLSAgICBUaGUgaW5pdGlhbCBzdGF0ZSBvZiBEUkFX
X0ZSQU1FQlVGRkVSX0FOR0xFIGFuZCBSRUFEX0ZSQU1FQlVGRkVSX0FOR0xFCi0gICAgcmVmZXJz
IHRvIHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyIHByb3ZpZGVkIGJ5IHRoZSB3aW5kb3dpbmcKLSAg
ICBzeXN0ZW0uICBJbiBvcmRlciB0aGF0IGFjY2VzcyB0byB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZl
ciBpcyBub3QKLSAgICBsb3N0LCBpdCBpcyB0cmVhdGVkIGFzIGEgZnJhbWVidWZmZXIgb2JqZWN0
IHdpdGggdGhlIG5hbWUgb2YgMC4KLSAgICBUaGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciBpcyB0aGVy
ZWZvcmUgcmVuZGVyZWQgdG8gYW5kIHJlYWQgZnJvbQotICAgIHdoaWxlIDAgaXMgYm91bmQgdG8g
dGhlIGNvcnJlc3BvbmRpbmcgdGFyZ2V0cy4gIE9uIHNvbWUKLSAgICBpbXBsZW1lbnRhdGlvbnMs
IHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyIGNhbgotICAgIGNoYW5n
ZSBvdmVyIHRpbWUgKGUuZy4sIGluIHJlc3BvbnNlIHRvIHdpbmRvd2luZyBzeXN0ZW0gZXZlbnRz
Ci0gICAgc3VjaCBhcyBhdHRhY2hpbmcgdGhlIGNvbnRleHQgdG8gYSBuZXcgd2luZG93aW5nIHN5
c3RlbSBkcmF3YWJsZS4pIgotCi0gICAgQ2hhbmdlIHRoZSBkZXNjcmlwdGlvbiBvZiBEZWxldGVG
cmFtZWJ1ZmZlcnMgYXMgZm9sbG93czoKLQotICAgICI8ZnJhbWVidWZmZXJzPiBjb250YWlucyA8
bj4gbmFtZXMgb2YgZnJhbWVidWZmZXIgb2JqZWN0cyB0byBiZQotICAgIGRlbGV0ZWQuICBBZnRl
ciBhIGZyYW1lYnVmZmVyIG9iamVjdCBpcyBkZWxldGVkLCBpdCBoYXMgbm8KLSAgICBhdHRhY2ht
ZW50cywgYW5kIGl0cyBuYW1lIGlzIGFnYWluIHVudXNlZC4gIElmIGEgZnJhbWVidWZmZXIgdGhh
dAotICAgIGlzIGN1cnJlbnRseSBib3VuZCB0byBvbmUgb3IgbW9yZSBvZiB0aGUgdGFyZ2V0cwot
ICAgIERSQVdfRlJBTUVCVUZGRVJfQU5HTEUgb3IgUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSBpcyBk
ZWxldGVkLCBpdCBpcyBhcwotICAgIHRob3VnaCBCaW5kRnJhbWVidWZmZXIgaGFkIGJlZW4gZXhl
Y3V0ZWQgd2l0aCB0aGUgY29ycmVzcG9uZGluZwotICAgIDx0YXJnZXQ+IGFuZCA8ZnJhbWVidWZm
ZXI+IHplcm8uICBVbnVzZWQgbmFtZXMgaW4gPGZyYW1lYnVmZmVycz4KLSAgICBhcmUgc2lsZW50
bHkgaWdub3JlZCwgYXMgaXMgdGhlIHZhbHVlIHplcm8uIgotCi0KLSAgICBJbiBzZWN0aW9uIDQu
NC4zIChSZW5kZXJidWZmZXIgT2JqZWN0cyksIG1vZGlmeSB0aGUgZmlyc3QgdHdvIHNlbnRlbmNl
cwotICAgIG9mIHRoZSBkZXNjcmlwdGlvbiBvZiBGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciBhcyBm
b2xsb3dzOgotCi0gICAgIjx0YXJnZXQ+IG11c3QgYmUgRFJBV19GUkFNRUJVRkZFUl9BTkdMRSwg
UkVBRF9GUkFNRUJVRkZFUl9BTkdMRSwgb3IKLSAgICBGUkFNRUJVRkZFUi4gIElmIDx0YXJnZXQ+
IGlzIEZSQU1FQlVGRkVSLCBpdCBiZWhhdmVzIGFzCi0gICAgdGhvdWdoIERSQVdfRlJBTUVCVUZG
RVJfQU5HTEUgd2FzIHNwZWNpZmllZC4gIFRoZSBJTlZBTElEX09QRVJBVElPTiAKLSAgICBlcnJv
ciBpcyBnZW5lcmF0ZWQgaWYgdGhlIHZhbHVlIG9mIHRoZSBjb3JyZXNwb25kaW5nIGJpbmRpbmcg
aXMgemVyby4iCi0KLSAgICBJbiBzZWN0aW9uIDQuNC4zIChSZW5kZXJidWZmZXIgT2JqZWN0cyks
IG1vZGlmeSB0aGUgZmlyc3QgdHdvIHNlbnRlbmNlcwotICAgIG9mIHRoZSBkZXNjcmlwdGlvbiBv
ZiBGcmFtZWJ1ZmZlclRleHR1cmUyRCBhcyBmb2xsb3dzOgotCi0gICAgIjx0YXJnZXQ+IG11c3Qg
YmUgRFJBV19GUkFNRUJVRkZFUl9BTkdMRSwKLSAgICBSRUFEX0ZSQU1FQlVGRkVSX0FOR0xFLCBv
ciBGUkFNRUJVRkZFUi4gIElmIDx0YXJnZXQ+IGlzCi0gICAgRlJBTUVCVUZGRVIsIGl0IGJlaGF2
ZXMgYXMgdGhvdWdoIERSQVdfRlJBTUVCVUZGRVJfQU5HTEUgd2FzCi0gICAgc3BlY2lmaWVkLiAg
VGhlIElOVkFMSURfT1BFUkFUSU9OIGVycm9yIGlzIGdlbmVyYXRlZCBpZiB0aGUgdmFsdWUgb2Yg
dGhlCi0gICAgY29ycmVzcG9uZGluZyBiaW5kaW5nIGlzIHplcm8uIgotCi0gICAgSW4gc2VjdGlv
biA0LjQuNSAoRnJhbWVidWZmZXIgQ29tcGxldGVuZXNzKSwgbW9kaWZ5IHRoZSBmaXJzdCBzZW50
ZW5jZSAKLSAgICBvZiB0aGUgZGVzY3JpcHRpb24gb2YgQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyBh
cyBmb2xsb3dzOgotCi0gICAgIklmIDx0YXJnZXQ+IGlzIG5vdCBEUkFXX0ZSQU1FQlVGRkVSX0FO
R0xFLCBSRUFEX0ZSQU1FQlVGRkVSX0FOR0xFIG9yCi0gICAgRlJBTUVCVUZGRVIsIHRoZSBlcnJv
ciBJTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkLiAgSWYgPHRhcmdldD4gaXMKLSAgICBGUkFNRUJV
RkZFUiwgaXQgYmVoYXZlcyBhcyB0aG91Z2ggRFJBV19GUkFNRUJVRkZFUl9BTkdMRSB3YXMKLSAg
ICBzcGVjaWZpZWQuIgotCi0gICAgTW9kaWZ5IHRoZSBmaXJzdCBzZW50ZW5jZSBvZiB0aGUgc3Vi
c2VjdGlvbiB0aXRsZWQgIkVmZmVjdHMgb2YgRnJhbWVidWZmZXIKLSAgICBDb21wbGV0ZW5lc3Mg
b24gRnJhbWVidWZmZXIgT3BlcmF0aW9ucyIgdG8gYmU6Ci0KLSAgICAiQXR0ZW1wdGluZyB0byBy
ZW5kZXIgdG8gb3IgcmVhZCBmcm9tIGEgZnJhbWVidWZmZXIgd2hpY2ggaXMgbm90Ci0gICAgZnJh
bWVidWZmZXIgY29tcGxldGUgd2lsbCBnZW5lcmF0ZSBhbgotICAgIElOVkFMSURfRlJBTUVCVUZG
RVJfT1BFUkFUSU9OIGVycm9yLiIKLSAgICAKLQotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciA2IG9m
IHRoZSBPcGVuR0wgMS41IFNwZWNpZmljYXRpb24gKFN0YXRlIGFuZCBTdGF0ZQotUmVxdWVzdHMp
Ci0KLSAgICBJbiBzZWN0aW9uIDYuMS4zLCBtb2RpZnkgdGhlIGZpcnN0IHNlbnRlbmNlIG9mIHRo
ZSBkZXNjcmlwdGlvbiBvZgotICAgIEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2
IGFzIGZvbGxvd3M6Ci0KLSAgICAiPHRhcmdldD4gbXVzdCBiZSBEUkFXX0ZSQU1FQlVGRkVSX0FO
R0xFLCBSRUFEX0ZSQU1FQlVGRkVSX0FOR0xFIG9yCi0gICAgRlJBTUVCVUZGRVIuICBJZiA8dGFy
Z2V0PiBpcyBGUkFNRUJVRkZFUiwgaXQgYmVoYXZlcyBhcwotICAgIHRob3VnaCBEUkFXX0ZSQU1F
QlVGRkVSX0FOR0xFIHdhcyBzcGVjaWZpZWQuIgotCi0gICAgTW9kaWZ5IHRoZSB0aXRsZSBvZiBU
YWJsZSA2LjIzIChGcmFtZWJ1ZmZlciBTdGF0ZSkgdG8gYmUgIkZyYW1lYnVmZmVyIAotICAgIChz
dGF0ZSBwZXIgYXR0YWNobWVudCBwb2ludCkiLiAKLQotCi1EZXBlbmRlbmNpZXMgb24gT0VTX3Rl
eHR1cmVfM0QKLQotICAgIE9uIGFuIE9wZW5HTCBFUyBpbXBsZW1lbnRhdGlvbiwgaW4gdGhlIGFi
c2Vuc2Ugb2YgT0VTX3RleHR1cmVfM0QsCi0gICAgb21pdCByZWZlcmVuY2VzIHRvIEZyYW1lYnVm
ZmVyVGV4dHVyZTNET0VTIGFuZCBDb3B5VGV4U3ViSW1hZ2UzRE9FUy4KLQotRXJyb3JzCi0KLSAg
ICBUaGUgZXJyb3IgSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlm
Ci0gICAgQmxpdEZyYW1lYnVmZmVyQU5HTEUgaXMgY2FsbGVkIHdoaWxlIHRoZQotICAgIGRyYXcg
ZnJhbWVidWZmZXIgaXMgbm90IGZyYW1lYnVmZmVyIGNvbXBsZXRlLgotCi0gICAgVGhlIGVycm9y
IElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZgotICAgIEJsaXRG
cmFtZWJ1ZmZlckFOR0xFLCBSZWFkUGl4ZWxzLCBDb3B5VGV4e1N1Yn1JbWFnZSosIGlzIGNhbGxl
ZCB3aGlsZSB0aGUKLSAgICByZWFkIGZyYW1lYnVmZmVyIGlzIG5vdCBmcmFtZWJ1ZmZlciBjb21w
bGV0ZS4KLQotICAgIFRoZSBlcnJvciBJTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYg
R2V0SW50ZWdlcnYgaXMgY2FsbGVkCi0gICAgd2hpbGUgdGhlIHJlYWQgZnJhbWVidWZmZXIgaXMg
bm90IGZyYW1lYnVmZmVyIGNvbXBsZXRlLCBvciBpZiB0aGVyZQotICAgIGlzIG5vIGNvbG9yIGF0
dGFjaG1lbnQgcHJlc2VudCBvbiB0aGUgcmVhZCBmcmFtZWJ1ZmZlciBvYmplY3QuCi0KLSAgICBU
aGUgZXJyb3IgSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgYnkgQmxpdEZyYW1lYnVmZmVyQU5H
TEUgaWYKLSAgICA8bWFzaz4gaGFzIGFueSBiaXRzIHNldCBvdGhlciB0aGFuIHRob3NlIG5hbWVk
IGJ5Ci0gICAgQ09MT1JfQlVGRkVSX0JJVCwgREVQVEhfQlVGRkVSX0JJVCBvciBTVEVOQ0lMX0JV
RkZFUl9CSVQuCi0KLSAgICBUaGUgZXJyb3IgSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVk
IGlmIEJsaXRGcmFtZWJ1ZmZlckFOR0xFIGlzCi0gICAgY2FsbGVkIGFuZCA8bWFzaz4gaW5jbHVk
ZXMgREVQVEhfQlVGRkVSX0JJVCBvciBTVEVOQ0lMX0JVRkZFUl9CSVQKLSAgICBhbmQgdGhlIHNv
dXJjZSBhbmQgZGVzdGluYXRpb24gZGVwdGggb3Igc3RlbmNpbCBidWZmZXIgZm9ybWF0cyBkbwot
ICAgIG5vdCBtYXRjaC4KLQotICAgIFRoZSBlcnJvciBJTlZBTElEX09QRVJBVElPTiBpcyBnZW5l
cmF0ZWQgaWYgQmxpdEZyYW1lYnVmZmVyQU5HTEUgaXMgCi0gICAgY2FsbGVkIGFuZCBhbnkgb2Yg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSB0cnVlOgotICAgICAtIHRoZSBzb3VyY2UgYW5k
IGRlc3RpbmF0aW9uIHJlY3RhbmdsZSBkaW1lbnNpb25zIGRvIG5vdCBtYXRjaAotICAgICAgIChp
ZSBzY2FsaW5nIG9yIGZsaXBwaW5nIGlzIHJlcXVpcmVkKS4KLSAgICAgLSA8bWFzaz4gaW5jbHVk
ZXMgQ09MT1JfQlVGRkVSX0JJVCBhbmQgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gCi0gICAg
ICAgYnVmZmVyIGZvcm1hdHMgZG8gbm90IG1hdGNoLgotICAgICAtIDxtYXNrPiBpbmNsdWRlcyBE
RVBUSF9CVUZGRVJfQklUIG9yIFNURU5DSUxfQlVGRkVSX0JJVCBhbmQgdGhlCi0gICAgICAgc291
cmNlIG9yIGRlc3RpbmF0aW9uIHJlY3RhbmdsZXMgZG8gbm90IHNwZWNpZnkgdGhlIGVudGlyZSBz
b3VyY2UKLSAgICAgICBvciBkZXN0aW5hdGlvbiBidWZmZXIgKGFmdGVyIGFwcGx5aW5nIGFueSBz
Y2lzc29yIHJlZ2lvbikuCi0KLSAgICBUaGUgZXJyb3IgSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRl
ZCBieSBCbGl0RnJhbWVidWZmZXJBTkdMRSBpZgotICAgIDxmaWx0ZXI+IGlzIG5vdCBORUFSRVNU
LgotCi0gICAgVGhlIGVycm9yIElOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgQmluZEZyYW1l
YnVmZmVyLAotICAgIENoZWNrRnJhbWVidWZmZXJTdGF0dXMsIEZyYW1lYnVmZmVyVGV4dHVyZXsy
RHwzRE9FU30sCi0gICAgRnJhbWVidWZmZXJSZW5kZXJidWZmZXIsIG9yCi0gICAgR2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYgaXMgY2FsbGVkIGFuZCA8dGFyZ2V0PiBpcwotICAg
IG5vdCBEUkFXX0ZSQU1FQlVGRkVSX0FOR0xFLCBSRUFEX0ZSQU1FQlVGRkVSX0FOR0xFIG9yIEZS
QU1FQlVGRkVSLgotCi1OZXcgU3RhdGUKLQotICAgIChBZGQgYSBuZXcgdGFibGUgNi54eCwgIkZy
YW1lYnVmZmVyIChzdGF0ZSBwZXIgZnJhbWVidWZmZXIgdGFyZ2V0IGJpbmRpbmcgcG9pbnQpIikK
LQotICAgIEdldCBWYWx1ZSAgICAgICAgICAgICAgICAgICAgIFR5cGUgICBHZXQgQ29tbWFuZCAg
IEluaXRpYWwgVmFsdWUgICAgRGVzY3JpcHRpb24gICAgICAgICAgICAgICBTZWN0aW9uCi0gICAg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAtLS0tICAgLS0tLS0tLS0tLS0gICAtLS0t
LS0tLS0tLS0tLSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0gICAgICAgLS0tLS0tLS0tLS0tCi0gICAg
RFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HX0FOR0xFICAgWisgICAgR2V0SW50ZWdlcnYgICAwICAg
ICAgICAgICAgICAgIGZyYW1lYnVmZmVyIG9iamVjdCBib3VuZCAgNC40LjEKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdG8gRFJBV19GUkFNRUJVRkZFUl9BTkdMRQotICAgIFJFQURfRlJBTUVCVUZGRVJfQklO
RElOR19BTkdMRSAgIForICAgIEdldEludGVnZXJ2ICAgMCAgICAgICAgICAgICAgICBmcmFtZWJ1
ZmZlciBvYmplY3QgICAgICAgIDQuNC4xCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIFJFQURfRlJBTUVC
VUZGRVJfQU5HTEUKLQotICAgIFJlbW92ZSByZWZlcmVuY2UgdG8gRlJBTUVCVUZGRVJfQklORElO
RyBmcm9tIFRhYmxlIDYuMjMuCi0KLSAgICAoQWRkIGEgbmV3IHRhYmxlIDYueXksICJGcmFtZWJ1
ZmZlciBEZXBlbmRlbnQgVmFsdWVzIikgCi0KLSAgICBHZXQgVmFsdWUgICAgICAgICAgICAgICAg
ICAgICBUeXBlICAgR2V0IENvbW1hbmQgICBJbml0aWFsIFZhbHVlICAgIERlc2NyaXB0aW9uICAg
ICAgICAgICAgICAgU2VjdGlvbgotICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIC0t
LS0gICAtLS0tLS0tLS0tLSAgIC0tLS0tLS0tLS0tLS0tICAgLS0tLS0tLS0tLS0tLS0tLS0tLSAg
ICAgICAtLS0tLS0tLS0tLS0KLSAgICBTQU1QTEVfQlVGRkVSUyAgICAgICAgICAgICAgICAgWisg
ICAgR2V0SW50ZWdlcnYgICAwICAgICAgICAgICAgICAgIE51bWJlciBvZiBtdWx0aXNhbXBsZSAg
ICAgMy4yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJzCi0gICAgU0FNUExFUyAgICAgICAgICAgICAg
ICAgICAgICAgIForICAgIEdldEludGVnZXJ2ICAgMCAgICAgICAgICAgICAgICBDb3ZlcmFnZSBt
YXNrIHNpemUgICAgICAgIDMuMgotCi0gICAgUmVtb3ZlIHRoZSByZWZlcmVuY2VzIHRvIFNBTVBM
RV9CVUZGRVJTIGFuZCBTQU1QTEVTIGZyb20gVGFibGUgNi4xNy4KLQotCi1Jc3N1ZXMKLQotICAg
IDEpIFdoYXQgc2hvdWxkIHdlIGNhbGwgdGhpcyBleHRlbnNpb24/Ci0gIAotICAgICAgIFJlc29s
dmVkOiBBTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0LiAgCi0KLSAgICAgICBUaGlzIGV4dGVuc2lvbiBp
cyBhIHJlc3VsdCBvZiBhIGNvbGxhYm9yYXRpb24gYmV0d2VlbiBHb29nbGUgYW5kIAotICAgICAg
IFRyYW5zR2FtaW5nIGZvciB0aGUgb3Blbi1zb3VyY2UgQU5HTEUgcHJvamVjdC4gVHlwaWNhbGx5
IG9uZSB3b3VsZAotICAgICAgIGxhYmVsIGEgbXVsdGktdmVuZG9yIGV4dGVuc2lvbiBhcyBFWFQs
IGJ1dCBFWFRfZnJhbWVidWZmZXJfYmxpdCAKLSAgICAgICBpcyBhbHJlYWR5IHRoZSBuYW1lIGZv
ciB0aGlzIG9uIERlc2t0b3AgR0wuICBBZGRpdGlvbmFsbHkgdGhpcwotICAgICAgIGlzbid0IHRy
dWVseSBhIG11bHRpLXZlbmRvciBleHRlbnNpb24gYmVjYXVzZSB0aGVyZSBpcyBvbmx5IG9uZQot
ICAgICAgIGltcGxlbWVudGF0aW9uIG9mIHRoaXMuICBXZSdsbCBmb2xsb3cgdGhlIGV4YW1wbGUg
b2YgdGhlIG9wZW4tc291cmNlCi0gICAgICAgTUVTQSBwcm9qZWN0IHdoaWNoIHVzZXMgdGhlIHBy
b2plY3QgbmFtZSBmb3IgdGhlIHZlbmRvciBzdWZmaXguCi0KLSAgICAyKSBXaHkgaXMgdGhpcyBk
b25lIGFzIGEgc2VwYXJhdGUgZXh0ZW5zaW9uIGluc3RlYWQgb2YganVzdCBzdXBwb3J0aW5nCi0g
ICAgICAgRVhUX2ZyYW1lYnVmZmVyX2JsaXQ/Ci0KLSAgICAgICBUbyBkYXRlLCBFWFRfZnJhbWVi
dWZmZXJfYmxpdCBoYXMgbm90IGhhZCBpbnRlcmFjdGlvbnMgd2l0aCBPcGVuR0wgRVMKLSAgICAg
ICBzcGVjaWZpZWQgYW5kLCBhcyBmYXIgYXMgd2Uga25vdywgaXQgaGFzIG5vdCBwcmV2aW91c2x5
IGJlZW4gZXhwb3NlZCBvbiAKLSAgICAgICBhbiBFUyAxLjEgb3IgRVMgMi4wIGltcGxlbWVudGF0
aW9uLiBCZWNhdXNlIHRoZXJlIGFyZSBlbm91Z2ggCi0gICAgICAgZGlmZmVyZW5jZXMgYmV0d2Vl
biBEZXNrdG9wIEdMIGFuZCBPcGVuR0wgRVMsIGFuZCBzaW5jZSBPcGVuR0wgRVMgMi4wIAotICAg
ICAgIGhhcyBhbHJlYWR5IHN1YnN1bWVkIHRoZSBFWFRfZnJhbWVidWZmZXJfb2JqZWN0IGZ1bmN0
aW9uYWxpdHkgKHdpdGggCi0gICAgICAgc29tZSBjaGFuZ2VzKSBpdCB3YXMgZGVlbWVkIGEgd29y
dGh3aGlsZSBleGVyY2lzZSB0byBmdWxseSBzcGVjaWZ5IHRoZQotICAgICAgIGludGVyYWN0aW9u
cy4gIEFkZGl0aW9uYWxseSwgc29tZSBvZiB0aGUgY2hvaWNlcyBpbiBleGFjdGx5IHdoaWNoIAot
ICAgICAgIGZ1bmN0aW9uYWxpdHkgaXMgc3VwcG9ydGVkIGJ5IEJsaXRGcmFtZWJ1ZmZlckFOR0xF
IGlzIGRpY3RhdGVkIGJ5Ci0gICAgICAgd2hhdCBpcyByZWFzb25hYmxlIHRvIHN1cHBvcnQgb24g
YSBpbXBsZW1lbnRhdGlvbiB3aGljaCBpcyAKLSAgICAgICBsYXllcmVkIG9uIERpcmVjdDNEOS4g
IEl0IGlzIG5vdCBleHBlY3RlZCB0aGF0IG90aGVyIGltcGxlbWVudGF0aW9ucyAKLSAgICAgICB3
aWxsIG5lY2Vzc2FyeSBoYXZlIHRoZSBzYW1lIHNldCBvZiByZXN0cmljdGlvbnMgb3IgcmVxdWly
ZW1lbnRzLiAKLQotICAgIDMpIEhvdyBkb2VzIHRoaXMgZXh0ZW5zaW9uIGRpZmZlciBmcm9tIEVY
VF9mcmFtZWJ1ZmZlcl9ibGl0PwotCi0gICAgICAgVGhpcyBleHRlbnNpb24gaXMgZGVzaWduZWQg
dG8gYmUgYSBwdXJlIHN1YnNldCBvZiB0aGUgCi0gICAgICAgRVhUX2ZyYW1lYnVmZmVyX2JsaXQg
ZnVuY3Rpb25hbGl0eSBhcyBhcHBsaWNhYmxlIHRvIE9wZW5HTCBFUyAyLjAuCi0KLSAgICAgICBG
dW5jdGlvbmFsaXR5IHRoYXQgaXMgdW5jaGFuZ2VkOgotICAgICAgICAtIHRoZSBzcGxpdCBEUkFX
IGFuZCBSRUFEIGZyYW1lYnVmZmVyIGF0dGFjaG1lbnQgcG9pbnRzIGFuZCByZWxhdGVkIHNlbWF0
aWNzLgotICAgICAgICAtIHRoZSB0b2tlbiB2YWx1ZXMgZm9yIHRoZSBEUkFXL1JFQURfRlJBTUVC
VUZGRVIgYW5kIERSQVcvUkVBRF9GUkFNQlVGRkVSX0JJTkRJTkcKLSAgICAgICAgLSB0aGUgc2ln
bmF0dXJlIG9mIHRoZSBCbGl0RnJhbWVidWZmZXIgZW50cnktcG9pbnQuCi0gICAgICAgCi0gICAg
ICAgQWRkaXRpb25hbCByZXN0cmljdGlvbnMgaW1wb3NlZCBieSBCbGl0RnJhbWVidWZmZXJBTkdM
RToKLSAgICAgICAgLSBubyBjb2xvciBjb252ZXJzaW9ucyBhcmUgc3VwcG9ydGVkCi0gICAgICAg
IC0gbm8gc2NhbGluZywgc3RyZXRjaGluZyBvciBmbGlwcGluZyBhcmUgc3VwcG9ydGVkCi0gICAg
ICAgIC0gbm8gZmlsdGVyaW5nIGlzIHN1cHBvcnRlZCAoYSBjb25zZXF1ZW5jZSBvZiBubyBzdHJl
dGNoaW5nKQotICAgICAgICAtIG9ubHkgd2hvbGUgZGVwdGggYW5kL29yIHN0ZW5jaWwgYnVmZmVy
cyBjYW4gYmUgY29waWVkCi0KLVJldmlzaW9uIEhpc3RvcnkKLQotICAgIFJldmlzaW9uIDEsIDIw
MTAvMDcvMDYKLSAgICAgIC0gY29waWVkIGZyb20gcmV2aXNpb24gMTUgb2YgRVhUX2ZyYW1lYnVm
ZmVyX29iamVjdAotICAgICAgLSByZW1vdmVkIGxhbmd1YWdlIHRoYXQgd2FzIGNsZWFybHkgbm90
IHJlbGV2YW50IHRvIEVTMgotICAgICAgLSByZWJhc2VkIGNoYW5nZXMgYWdhaW5zdCB0aGUgT3Bl
bkdMIEVTIDIuMCBzcGVjaWZpY2F0aW9uCi0gICAgICAtIGFkZGVkIEFOR0xFLXNwZWNpZmljIHJl
c3RyaWN0aW9ucwotICAgIFJldmlzaW9uIDIsIDIwMTAvMDcvMTUKLSAgICAgIC0gY2xhcmlmaWNh
dGlvbnMgb2YgaW1wbGljaXQgY2xhbXBpbmcgdG8gYnVmZmVyIHNpemVzIChmcm9tIEFSQl9mYm8p
Ci0gICAgICAtIGNsYXJpZnkgdGhhdCBEL1MgcmVzdHJpY3RzIGFwcGx5IGFmdGVyIHRoZSBzY2lz
c29yIGlzIGFwcGxpZWQKLSAgICAgIC0gaW1wcm92ZSBzb21lIGVycm9yIGxhbmd1YWdlCi0gICAg
UmV2aXNpb24gMywgMjAxMC8wOC8wNgotICAgICAgLSBhZGQgYWRkaXRpb25hbCBjb250cmlidXRv
cnMsIHVwZGF0ZSBpbXBsZW1lbnRhdGlvbiBzdGF0dXMKLSAgICBSZXZpc2lvbiA0LCAyMDEyLzA5
LzIyCi0gICAgICAtIGRvY3VtZW50IGVycm9ycyBmb3IgR2V0SW50ZWdlcnYuCi0KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlz
YW1wbGUudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lv
bnMvQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUudHh0CShyZXZpc2lvbiAyMDc4MDQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0FOR0xFX2ZyYW1lYnVmZmVyX211
bHRpc2FtcGxlLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDM2MyArMCwwIEBACi1OYW1lCi0KLSAg
ICBBTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQotCi1OYW1lIFN0cmluZ3MKLQotICAgIEdM
X0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlCi0KLUNvbnRyaWJ1dG9ycwotCi0gICAgQ29u
dHJpYnV0b3JzIHRvIEVYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQotICAgIERhbmllbCBLb2No
LCBUcmFuc0dhbWluZyBJbmMuCi0gICAgU2hhbm5vbiBXb29kcywgVHJhbnNHYW1pbmcgSW5jLgot
ICAgIEtlbm5ldGggUnVzc2VsbCwgR29vZ2xlIEluYy4KLSAgICBWYW5nZWxpcyBLb2trZXZpcywg
R29vZ2xlIEluYy4KLQotQ29udGFjdHMKLQotICAgIERhbmllbCBLb2NoLCBUcmFuc0dhbWluZyBJ
bmMuIChkYW5pZWwgJ2F0JyB0cmFuc2dhbWluZyAnZG90JyBjb20pCi0KLVN0YXR1cwotCi0gICAg
SW1wbGVtZW50ZWQgaW4gQU5HTEUgRVMyCi0KLVZlcnNpb24KLQotICAgIExhc3QgTW9kaWZpZWQg
RGF0ZTogQXVnIDYsIDIwMTAgCi0gICAgQXV0aG9yIFJldmlzaW9uOiAjMwotCi1OdW1iZXIKLQot
ICAgIE9wZW5HTCBFUyBFeHRlbnNpb24gIzg0Ci0KLURlcGVuZGVuY2llcwotCi0gICAgUmVxdWly
ZXMgT3BlbkdMIEVTIDIuMC4KLQotICAgIFJlcXVpcmVzIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2Js
aXQgKG9yIGVxdWl2YWxlbnQgZnVuY3Rpb25hbGl0eSkuCi0KLSAgICBUaGUgZXh0ZW5zaW9uIGlz
IHdyaXR0ZW4gYWdhaW5zdCB0aGUgT3BlbkdMIEVTIDIuMCBzcGVjaWZpY2F0aW9uLiAKLQotICAg
IE9FU190ZXh0dXJlXzNEIGFmZmVjdHMgdGhlIGRlZmluaXRpb24gb2YgdGhpcyBleHRlbnNpb24u
Ci0KLU92ZXJ2aWV3Ci0KLSAgICBUaGlzIGV4dGVuc2lvbiBleHRlbmRzIHRoZSBmcmFtZWJ1ZmZl
ciBvYmplY3QgZnJhbWV3b3JrIHRvCi0gICAgZW5hYmxlIG11bHRpc2FtcGxlIHJlbmRlcmluZy4K
LQotICAgIFRoZSBuZXcgb3BlcmF0aW9uIFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFO
R0xFKCkgYWxsb2NhdGVzCi0gICAgc3RvcmFnZSBmb3IgYSByZW5kZXJidWZmZXIgb2JqZWN0IHRo
YXQgY2FuIGJlIHVzZWQgYXMgYSBtdWx0aXNhbXBsZQotICAgIGJ1ZmZlci4gIEEgbXVsdGlzYW1w
bGUgcmVuZGVyIGJ1ZmZlciBpbWFnZSBkaWZmZXJzIGZyb20gYQotICAgIHNpbmdsZS1zYW1wbGUg
cmVuZGVyIGJ1ZmZlciBpbWFnZSBpbiB0aGF0IGEgbXVsdGlzYW1wbGUgaW1hZ2UgaGFzIGEKLSAg
ICBudW1iZXIgb2YgU0FNUExFUyB0aGF0IGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLiAgTm8gbWV0aG9k
IGlzIHByb3ZpZGVkCi0gICAgZm9yIGNyZWF0aW5nIG11bHRpc2FtcGxlIHRleHR1cmUgaW1hZ2Vz
LgotCi0gICAgQWxsIG9mIHRoZSBmcmFtZWJ1ZmZlci1hdHRhY2hhYmxlIGltYWdlcyBhdHRhY2hl
ZCB0byBhIGZyYW1lYnVmZmVyCi0gICAgb2JqZWN0IG11c3QgaGF2ZSB0aGUgc2FtZSBudW1iZXIg
b2YgU0FNUExFUyBvciBlbHNlIHRoZSBmcmFtZWJ1ZmZlcgotICAgIG9iamVjdCBpcyBub3QgImZy
YW1lYnVmZmVyIGNvbXBsZXRlIi4gIElmIGEgZnJhbWVidWZmZXIgb2JqZWN0IHdpdGgKLSAgICBt
dWx0aXNhbXBsZSBhdHRhY2htZW50cyBpcyAiZnJhbWVidWZmZXIgY29tcGxldGUiLCB0aGVuIHRo
ZQotICAgIGZyYW1lYnVmZmVyIG9iamVjdCBiZWhhdmVzIGFzIGlmIFNBTVBMRV9CVUZGRVJTIGlz
IG9uZS4KLQotICAgIFRoZSByZXNvbHZlIG9wZXJhdGlvbiBpcyBhZmZlY3RlZCBieSBjYWxsaW5n
IAotICAgIEJsaXRGcmFtZWJ1ZmZlckFOR0xFIChwcm92aWRlZCBieSB0aGUgQU5HTEVfZnJhbWVi
dWZmZXJfYmxpdAotICAgIGV4dGVuc2lvbikgd2hlcmUgdGhlIHNvdXJjZSBpcyBhIG11bHRpc2Ft
cGxlIGFwcGxpY2F0aW9uLWNyZWF0ZWQKLSAgICBmcmFtZWJ1ZmZlciBvYmplY3QgYW5kIHRoZSBk
ZXN0aW5hdGlvbiBpcyBhIHNpbmdsZS1zYW1wbGUKLSAgICBmcmFtZWJ1ZmZlciBvYmplY3QgKGVp
dGhlciBhcHBsaWNhdGlvbi1jcmVhdGVkIG9yIHdpbmRvdy1zeXN0ZW0KLSAgICBwcm92aWRlZCku
Ci0KLU5ldyBQcm9jZWR1cmVzIGFuZCBGdW5jdGlvbnMKLQotICAgIHZvaWQgUmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoCi0gICAgICAgICAgICBlbnVtIHRhcmdldCwgc2l6ZWkg
c2FtcGxlcywKLSAgICAgICAgICAgIGVudW0gaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICBz
aXplaSB3aWR0aCwgc2l6ZWkgaGVpZ2h0KTsKLQotTmV3IFR5cGVzCi0KLSAgICBOb25lLgotCi1O
ZXcgVG9rZW5zCi0KLSAgICBBY2NlcHRlZCBieSB0aGUgPHBuYW1lPiBwYXJhbWV0ZXIgb2YgR2V0
UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXY6Ci0KLSAgICAgICAgUkVOREVSQlVGRkVSX1NBTVBMRVNf
QU5HTEUgICAgICAgICAgICAgICAgICAweDhDQUIKLQotICAgIFJldHVybmVkIGJ5IENoZWNrRnJh
bWVidWZmZXJTdGF0dXM6Ci0KLSAgICAgICAgRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NVUxUSVNB
TVBMRV9BTkdMRSAgICAweDhENTYKLQotICAgIEFjY2VwdGVkIGJ5IHRoZSA8cG5hbWU+IHBhcmFt
ZXRlciBvZiBHZXRCb29sZWFudiwgR2V0SW50ZWdlcnYsCi0gICAgYW5kIEdldEZsb2F0djoKLQot
ICAgICAgICBNQVhfU0FNUExFU19BTkdMRSAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEQ1
NwotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciAyIG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmlj
YXRpb24gKE9wZW5HTCBPcGVyYXRpb24pCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDMgb2YgdGhl
IE9wZW5HTCBFUyAyLjAgU3BlY2lmaWNhdGlvbiAoUmFzdGVyaXphdGlvbikKLQotICAgIEFkZCB0
byB0aGUgbGFzdCBwYXJhZ3JhcGggb2YgMy43LjIgKEFsdGVybmF0ZSBUZXh0dXJlIEltYWdlIFNw
ZWNpZmljYXRpb24pCi0gICAgKGFzIG1vZGlmaWVkIGJ5IEFOR0xFX2ZyYW1lYnVmZmVyX2JsaXQp
IHRoZSBmb2xsb3dpbmc6Ci0KLSAgICAiQ2FsbGluZyBDb3B5VGV4U3ViSW1hZ2UzRE9FUywgQ29w
eVRleEltYWdlMkQgb3IgQ29weVRleFN1YkltYWdlMkQgd2lsbAotICAgIHJlc3VsdCBpbiBJTlZB
TElEX09QRVJBVElPTiBiZWluZyBnZW5lcmF0ZWQgaWYgdGhlIG9iamVjdCBib3VuZCB0bwotICAg
IFJFQURfRlJBTUVCVUZGRVJfQklORElOR19BTkdMRSBpcyAiZnJhbWVidWZmZXIgY29tcGxldGUi
IGFuZCB0aGUgdmFsdWUKLSAgICBvZiBTQU1QTEVfQlVGRkVSUyBpcyBncmVhdGVyIHRoYW4gemVy
by4iCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDQgb2YgdGhlIE9wZW5HTCBFUyAyLjAgU3BlY2lm
aWNhdGlvbiAoUGVyLUZyYWdtZW50Ci1PcGVyYXRpb25zIGFuZCB0aGUgRnJhbWVidWZmZXIpCi0K
LSAgICBBZGQgdG8gNC4zLjEgKFJlYWRpbmcgUGl4ZWxzKSwgcmlnaHQgYmVmb3JlIHRoZSBzdWJz
ZWN0aW9uIHRpdGxlZAotICAgICJPYnRhaW5pbmcgUGl4ZWxzIGZyb20gdGhlIEZyYW1lYnVmZmVy
IjoKLQotICAgICJSZWFkUGl4ZWxzIGdlbmVyYXRlcyBJTlZBTElEX09QRVJBVElPTiBpZiBSRUFE
X0ZSQU1FQlVGRkVSX0JJTkRJTkdfQU5HTEUKLSAgICAoc2VjdGlvbiA0LjQpIGlzIG5vbi16ZXJv
LCB0aGUgcmVhZCBmcmFtZWJ1ZmZlciBpcyBmcmFtZWJ1ZmZlcgotICAgIGNvbXBsZXRlLCBhbmQg
dGhlIHZhbHVlIG9mIFNBTVBMRV9CVUZGRVJTIGZvciB0aGUgcmVhZCBmcmFtZWJ1ZmZlcgotICAg
IGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLiIKLQotICAgIEluIDQuMy4yIChDb3B5aW5nIFBpeGVscyks
IGFkZCB0byB0aGUgc2VjdGlvbiBkZXNjcmliaW5nIEJsaXRGcmFtZWJ1ZmZlcgotICAgIHRoYXQg
d2FzIGFkZGVkIGJ5IEFOR0xFX2ZyYW1lYnVmZmVyX2JsaXQuCi0KLSAgICAiSWYgU0FNUExFX0JV
RkZFUlMgZm9yIHRoZSByZWFkIGZyYW1lYnVmZmVyIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvIGFuZAot
ICAgIFNBTVBMRV9CVUZGRVJTIGZvciB0aGUgZHJhdyBmcmFtZWJ1ZmZlciBpcyB6ZXJvLCB0aGUg
c2FtcGxlcwotICAgIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBwaXhlbCBsb2NhdGlvbiBpbiB0aGUg
c291cmNlIGFyZSBjb252ZXJ0ZWQgdG8KLSAgICBhIHNpbmdsZSBzYW1wbGUgYmVmb3JlIGJlaW5n
IHdyaXR0ZW4gdG8gdGhlIGRlc3RpbmF0aW9uLgotCi0gICAgSWYgU0FNUExFX0JVRkZFUlMgZm9y
IHRoZSBkcmF3IGZyYW1lYnVmZmVyIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLCAKLSAgICBubyBjb3B5
IGlzIHBlcmZvcm1lZCBhbmQgYW4gSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IgaXMgZ2VuZXJhdGVk
LgotCi0gICAgSWYgU0FNUExFX0JVRkZFUlMgZm9yIHRoZSByZWFkIGZyYW1lYnVmZmVyIGlzIGdy
ZWF0ZXIgdGhhbiB6ZXJvIGFuZAotICAgIDxtYXNrPiBpbmNsdWRlcyBERVBUSF9CVUZGRVJfQklU
IG9yIFNURU5DSUxfQlVGRkVSX0JJVCwgbm8gY29weSBpcyAKLSAgICBwZXJmb3JtZWQgYW5kIGFu
IElOVkFMSURfT1BFUkFUSU9OIGVycm9yIGlzIGdlbmVyYXRlZC4KLQotICAgIElmIFNBTVBMRV9C
VUZGRVJTIGZvciB0aGUgcmVhZCBmcmFtZWJ1ZmZlciBpcyBncmVhdGVyIHRoYW4gemVybyBhbmQg
Ci0gICAgdGhlIGZvcm1hdCBvZiB0aGUgcmVhZCBhbmQgZHJhdyBmcmFtZWJ1ZmZlcnMgYXJlIG5v
dCBpZGVudGljYWwsIG5vCi0gICAgY29weSBpcyBwZXJmb3JtZWQgYW5kIGFuIElOVkFMSURfT1BF
UkFUSU9OIGVycm9yIGlzIGdlbmVyYXRlZC4KLQotICAgIElmIFNBTVBMRV9CVUZGRVJTIGZvciB0
aGUgcmVhZCBmcmFtZWJ1ZmZlciBpcyBncmVhdGVyIHRoYW4gemVybywgdGhlCi0gICAgZGltZW5z
aW9ucyBvZiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiByZWN0YW5nbGVzIHByb3ZpZGVkIHRv
IAotICAgIEJsaXRGcmFtZWJ1ZmZlckFOR0xFIG11c3QgYmUgaWRlbnRpY2FsIGFuZCBtdXN0IHNw
ZWNpZnkgdGhlIGNvbXBsZXRlIAotICAgIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gYnVmZmVycywg
b3RoZXJ3aXNlIG5vIGNvcHkgaXMgcGVyZm9ybWVkIGFuZCAKLSAgICBhbiBJTlZBTElEX09QRVJB
VElPTiBlcnJvciBpcyBnZW5lcmF0ZWQuIgotCi0gICAgTW9kaWZpY2F0aW9uIHRvIDQuNC4zIChS
ZW5kZXJidWZmZXIgT2JqZWN0cykKLQotICAgIEFkZCwganVzdCBhYm92ZSB0aGUgZGVmaW5pdGlv
biBvZiBSZW5kZXJidWZmZXJTdG9yYWdlOgotCi0gICAgIlRoZSBjb21tYW5kCi0KLSAgICAgICAg
dm9pZCBSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSgKLSAgICAgICAgICAgIGVu
dW0gdGFyZ2V0LCBzaXplaSBzYW1wbGVzLAotICAgICAgICAgICAgZW51bSBpbnRlcm5hbGZvcm1h
dCwKLSAgICAgICAgICAgIHNpemVpIHdpZHRoLCBzaXplaSBoZWlnaHQpOwotCi0gICAgZXN0YWJs
aXNoZXMgdGhlIGRhdGEgc3RvcmFnZSwgZm9ybWF0LCBkaW1lbnNpb25zLCBhbmQgbnVtYmVyIG9m
Ci0gICAgc2FtcGxlcyBvZiBhIHJlbmRlcmJ1ZmZlciBvYmplY3QncyBpbWFnZS4gIDx0YXJnZXQ+
IG11c3QgYmUKLSAgICBSRU5ERVJCVUZGRVIuICA8aW50ZXJuYWxmb3JtYXQ+IG11c3QgYmUgb25l
IG9mIHRoZSBjb2xvci1yZW5kZXJhYmxlLAotICAgIGRlcHRoLXJlbmRlcmFibGUsIG9yIHN0ZW5j
aWwtcmVuZGVyYWJsZSBmb3JtYXRzIGRlc2NyaWJlZCBpbiB0YWJsZSA0LjUuCi0gICAgPHdpZHRo
PiBhbmQgPGhlaWdodD4gYXJlIHRoZSBkaW1lbnNpb25zIGluIHBpeGVscyBvZiB0aGUgcmVuZGVy
YnVmZmVyLiAgSWYKLSAgICBlaXRoZXIgPHdpZHRoPiBvciA8aGVpZ2h0PiBpcyBncmVhdGVyIHRo
YW4gdGhlIHZhbHVlIG9mIAotICAgIE1BWF9SRU5ERVJCVUZGRVJfU0laRSwgb3IgaWYgPHNhbXBs
ZXM+IGlzIGdyZWF0ZXIgdGhhbiBNQVhfU0FNUExFU19BTkdMRSwgCi0gICAgdGhlbiB0aGUgZXJy
b3IgSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQuIElmIE9wZW5HTCBFUyBpcyB1bmFibGUgdG8g
Ci0gICAgY3JlYXRlIGEgZGF0YSBzdG9yZSBvZiB0aGUgcmVxdWVzdGVkIHNpemUsIHRoZSBlcnJv
ciBPVVRfT0ZfTUVNT1JZIAotICAgIGlzIGdlbmVyYXRlZC4KLQotICAgIFVwb24gc3VjY2Vzcywg
UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUgZGVsZXRlcyBhbnkgZXhpc3RpbmcK
LSAgICBkYXRhIHN0b3JlIGZvciB0aGUgcmVuZGVyYnVmZmVyIGltYWdlIGFuZCB0aGUgY29udGVu
dHMgb2YgdGhlIGRhdGEKLSAgICBzdG9yZSBhZnRlciBjYWxsaW5nIFJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZUFOR0xFIGFyZSB1bmRlZmluZWQuCi0gICAgUkVOREVSQlVGRkVSX1dJRFRI
IGlzIHNldCB0byA8d2lkdGg+LCBSRU5ERVJCVUZGRVJfSEVJR0hUIGlzCi0gICAgc2V0IHRvIDxo
ZWlnaHQ+LCBhbmQgUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVCBpcyBzZXQgdG8KLSAgICA8
aW50ZXJuYWxmb3JtYXQ+LgotCi0gICAgSWYgPHNhbXBsZXM+IGlzIHplcm8sIHRoZW4gUkVOREVS
QlVGRkVSX1NBTVBMRVNfQU5HTEUgaXMgc2V0IHRvIHplcm8uCi0gICAgT3RoZXJ3aXNlIDxzYW1w
bGVzPiByZXByZXNlbnRzIGEgcmVxdWVzdCBmb3IgYSBkZXNpcmVkIG1pbmltdW0KLSAgICBudW1i
ZXIgb2Ygc2FtcGxlcy4gU2luY2UgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBtYXkgc3VwcG9y
dAotICAgIGRpZmZlcmVudCBzYW1wbGUgY291bnRzIGZvciBtdWx0aXNhbXBsZWQgcmVuZGVyaW5n
LCB0aGUgYWN0dWFsCi0gICAgbnVtYmVyIG9mIHNhbXBsZXMgYWxsb2NhdGVkIGZvciB0aGUgcmVu
ZGVyYnVmZmVyIGltYWdlIGlzCi0gICAgaW1wbGVtZW50YXRpb24gZGVwZW5kZW50LiAgSG93ZXZl
ciwgdGhlIHJlc3VsdGluZyB2YWx1ZSBmb3IKLSAgICBSRU5ERVJCVUZGRVJfU0FNUExFU19BTkdM
RSBpcyBndWFyYW50ZWVkIHRvIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbAotICAgIHRvIDxzYW1w
bGVzPiBhbmQgbm8gbW9yZSB0aGFuIHRoZSBuZXh0IGxhcmdlciBzYW1wbGUgY291bnQgc3VwcG9y
dGVkCi0gICAgYnkgdGhlIGltcGxlbWVudGF0aW9uLgotCi0gICAgQW4gT3BlbkdMIEVTIGltcGxl
bWVudGF0aW9uIG1heSB2YXJ5IGl0cyBhbGxvY2F0aW9uIG9mIGludGVybmFsIGNvbXBvbmVudAot
ICAgIHJlc29sdXRpb24gYmFzZWQgb24gYW55IFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZUFOR0xFIHBhcmFtZXRlciAoZXhjZXB0Ci0gICAgdGFyZ2V0KSwgYnV0IHRoZSBhbGxvY2F0aW9u
IGFuZCBjaG9zZW4gaW50ZXJuYWwgZm9ybWF0IG11c3Qgbm90IGJlIGEKLSAgICBmdW5jdGlvbiBv
ZiBhbnkgb3RoZXIgc3RhdGUgYW5kIGNhbm5vdCBiZSBjaGFuZ2VkIG9uY2UgdGhleSBhcmUKLSAg
ICBlc3RhYmxpc2hlZC4gVGhlIGFjdHVhbCByZXNvbHV0aW9uIGluIGJpdHMgb2YgZWFjaCBjb21w
b25lbnQgb2YgdGhlIAotICAgIGFsbG9jYXRlZCBpbWFnZSBjYW4gYmUgcXVlcmllZCB3aXRoIEdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2LiIKLQotICAgIE1vZGlmeSB0aGUgZGVmaW5pdG9uIG9m
IFJlbmRlcmJ1ZmZlclN0b3JhZ2UgYXMgZm9sbG93czoKLQotICAgICJUaGUgY29tbWFuZAotCi0g
ICAgICAgIHZvaWQgUmVuZGVyYnVmZmVyU3RvcmFnZShlbnVtIHRhcmdldCwgZW51bSBpbnRlcm5h
bGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVpIHdpZHRo
LCBzaXplaSBoZWlnaHQpOwotCi0gICAgIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyBSZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSB3aXRoCi0gICAgIDxzYW1wbGVzPiBlcXVhbCB0
byB6ZXJvLiIKLQotICAgIEluIHNlY3Rpb24gNC40LjUgKEZyYW1lYnVmZmVyIENvbXBsZXRlbmVz
cykgaW4gdGhlIHN1YnNlY3Rpb24KLSAgICB0aXRsZWQgIkZyYW1lYnVmZmVyIENvbXBsZXRlbmVz
cyIgYWRkIGFuIGVudHJ5IHRvIHRoZSBidWxsZXQgbGlzdDoKLQotICAgICogVGhlIHZhbHVlIG9m
IFJFTkRFUkJVRkZFUl9TQU1QTEVTX0FOR0xFIGlzIHRoZSBzYW1lIGZvciBhbGwgYXR0YWNoZWQK
LSAgICAgIGltYWdlcy4KLSAgICAgIHsgRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NVUxUSVNBTVBM
RV9BTkdMRSB9Ci0KLSAgICBBbHNvIGFkZCBhIHBhcmFncmFwaCB0byB0aGUgZW5kIG9mIHRoZSBz
ZWN0aW9uIGFmdGVyIHRoZSBkZWZpbml0aW9uCi0gICAgb2YgQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1
czoKLQotICAgICJUaGUgdmFsdWVzIG9mIFNBTVBMRV9CVUZGRVJTIGFuZCBTQU1QTEVTIGFyZSBk
ZXJpdmVkIGZyb20gdGhlCi0gICAgYXR0YWNobWVudHMgb2YgdGhlIGN1cnJlbnRseSBib3VuZCBm
cmFtZWJ1ZmZlciBvYmplY3QuICBJZiB0aGUKLSAgICBjdXJyZW50IERSQVdfRlJBTUVCVUZGRVJf
QklORElOR19BTkdMRSBpcyBub3QgImZyYW1lYnVmZmVyIGNvbXBsZXRlIiwKLSAgICB0aGVuIGJv
dGggU0FNUExFX0JVRkZFUlMgYW5kIFNBTVBMRVMgYXJlIHVuZGVmaW5lZC4gIE90aGVyd2lzZSwK
LSAgICBTQU1QTEVTIGlzIGVxdWFsIHRvIHRoZSB2YWx1ZSBvZiBSRU5ERVJCVUZGRVJfU0FNUExF
U19BTkdMRSBmb3IgdGhlCi0gICAgYXR0YWNoZWQgaW1hZ2VzICh3aGljaCBhbGwgbXVzdCBoYXZl
IHRoZSBzYW1lIHZhbHVlIGZvcgotICAgIFJFTkRFUkJVRkZFUl9TQU1QTEVTX0FOR0xFKS4gIEZ1
cnRoZXIsIFNBTVBMRV9CVUZGRVJTIGlzIG9uZSBpZgotICAgIFNBTVBMRVMgaXMgbm9uLXplcm8u
ICBPdGhlcndpc2UsIFNBTVBMRV9CVUZGRVJTIGlzIHplcm8uCi0KLUFkZGl0aW9ucyB0byBDaGFw
dGVyIDUgb2YgdGhlIE9wZW5HTCBFUyAyLjAgU3BlY2lmaWNhdGlvbiAoU3BlY2lhbCBGdW5jdGlv
bnMpCi0KLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgNiBvZiB0aGUgT3BlbkdMIEVTIDIuMCBTcGVj
aWZpY2F0aW9uIChTdGF0ZSBhbmQgU3RhdGUKLVJlcXVlc3RzKQotCi0gICAgSW4gc2VjdGlvbiA2
LjEuMyAoRW51bWVyYWdlZCBRdWVyaWVzKSwgbW9kaWZ5IHRoZSB0aGlyZCBwYXJhZ3JhcGggCi0g
ICAgb2YgdGhlIGRlc2NyaXB0aW9uIG9mIEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2IGFzIGZv
bGxvd3M6Ci0KLSAgICAiVXBvbiBzdWNjZXNzZnVsIHJldHVybiBmcm9tIEdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcml2LCBpZgotICAgIDxwbmFtZT4gaXMgUkVOREVSQlVGRkVSX1dJRFRILCBSRU5E
RVJCVUZGRVJfSEVJR0hULAotICAgIFJFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVQsIG9yIFJF
TkRFUkJVRkZFUl9TQU1QTEVTX0FOR0xFLCB0aGVuIDxwYXJhbXM+IAotICAgIHdpbGwgY29udGFp
biB0aGUgd2lkdGggaW4gcGl4ZWxzLCBoZWlnaHQgaW4gcGl4ZWxzLCBpbnRlcm5hbCBmb3JtYXQs
IG9yIAotICAgIG51bWJlciBvZiBzYW1wbGVzLCByZXNwZWN0aXZlbHksIG9mIHRoZSBpbWFnZSBv
ZiB0aGUgcmVuZGVyYnVmZmVyIAotICAgIGN1cnJlbnRseSBib3VuZCB0byA8dGFyZ2V0Pi4iCi0K
LQotRGVwZW5kZW5jaWVzIG9uIEFOR0xFX2ZyYW1lYnVmZmVyX2JsaXQgICAgCi0KLSAgICBBTkdM
RV9mcmFtZWJ1ZmZlcl9ibGl0IGlzIHJlcXVpcmVkLiAgVGVjaG5pY2FsbHksIEFOR0xFX2ZyYW1l
YnVmZmVyX2JsaXQKLSAgICB3b3VsZCBub3QgYmUgcmVxdWlyZWQgdG8gc3VwcG9ydCBtdWx0aXNh
bXBsZWQgcmVuZGVyaW5nLCBleGNlcHQgZm9yCi0gICAgdGhlIGZhY3QgdGhhdCBpdCBwcm92aWRl
cyB0aGUgb25seSBtZXRob2Qgb2YgZG9pbmcgYSBtdWx0aXNhbXBsZQotICAgIHJlc292bGUgZnJv
bSBhIG11bHRpc2FtcGxlIHJlbmRlcmJ1ZmZlci4KLQotRGVwZW5kZW5jaWVzIG9uIE9FU190ZXh0
dXJlXzNECi0KLSAgICBPbiBhbiBPcGVuR0wgRVMgaW1wbGVtZW50YXRpb24sIGluIHRoZSBhYnNl
bnNlIG9mIE9FU190ZXh0dXJlXzNELAotICAgIG9taXQgcmVmZXJlbmNlcyB0byBDb3B5VGV4U3Vi
SW1hZ2UzRE9FUy4KLQotRXJyb3JzCi0KLSAgICBUaGUgZXJyb3IgSU5WQUxJRF9PUEVSQVRJT04g
aXMgZ2VuZXJhdGVkIGlmIFJlYWRQaXhlbHMgb3IgCi0gICAgQ29weVRleHtTdWJ9SW1hZ2UqIGlz
IGNhbGxlZCB3aGlsZSBSRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkdfQU5HTEUKLSAgICBpcyBub24t
emVybywgdGhlIHJlYWQgZnJhbWVidWZmZXIgaXMgZnJhbWVidWZmZXIgY29tcGxldGUsIGFuZCB0
aGUKLSAgICB2YWx1ZSBvZiBTQU1QTEVfQlVGRkVSUyBmb3IgdGhlIHJlYWQgZnJhbWVidWZmZXIg
aXMgZ3JlYXRlciB0aGFuCi0gICAgemVyby4KLQotICAgIElmIGJvdGggdGhlIGRyYXcgYW5kIHJl
YWQgZnJhbWVidWZmZXJzIGFyZSBmcmFtZWJ1ZmZlciBjb21wbGV0ZSBhbmQKLSAgICB0aGUgZHJh
dyBmcmFtZWJ1ZmZlciBoYXMgYSB2YWx1ZSBvZiBTQU1QTEVfQlVGRkVSUyB0aGF0IGlzIGdyZWF0
ZXIgCi0gICAgdGhhbiB6ZXJvLCB0aGVuIHRoZSBlcnJvciBJTlZBTElEX09QRVJBVElPTiBpcyBn
ZW5lcmF0ZWQgaWYgCi0gICAgQmxpdEZyYW1lYnVmZmVyQU5HTEUgaXMgY2FsbGVkLgotCi0gICAg
SWYgYm90aCB0aGUgZHJhdyBhbmQgcmVhZCBmcmFtZWJ1ZmZlcnMgYXJlIGZyYW1lYnVmZmVyIGNv
bXBsZXRlIGFuZAotICAgIHRoZSByZWFkIGZyYW1lYnVmZmVyIGhhcyBhIHZhbHVlIG9mIFNBTVBM
RV9CVUZGRVJTIHRoYXQgaXMgZ3JlYXRlcgotICAgIHRoYW4gemVybywgdGhlIGVycm9yIElOVkFM
SURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiAKLSAgICBCbGl0RnJhbWVidWZmZXJBTkdMRSBp
cyBjYWxsZWQgYW5kIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAgICBhcmUgdHJ1
ZToKLSAgICAgLSA8bWFzaz4gaW5jbHVkZXMgREVQVEhfQlVGRkVSX0JJVCBvciBTVEVOQ0lMX0JV
RkZFUl9CSVQuCi0gICAgIC0gdGhlIHNvdXJjZSBvciBkZXN0aW5hdGlvbiByZWN0YW5nbGVzIGRv
IG5vdCBzcGVjaWZ5IHRoZSBlbnRpcmUKLSAgICAgICBzb3VyY2Ugb3IgZGVzdGluYXRpb24gYnVm
ZmVyLgotCi0gICAgSWYgYm90aCB0aGUgZHJhdyBhbmQgcmVhZCBmcmFtZWJ1ZmZlcnMgYXJlIGZy
YW1lYnVmZmVyIGNvbXBsZXRlIGFuZAotICAgIGVpdGhlciBoYXMgYSB2YWx1ZSBvZiBTQU1QTEVf
QlVGRkVSUyB0aGF0IGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLCB0aGVuCi0gICAgdGhlIGVycm9yIElO
VkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBCbGl0RnJhbWVidWZmZXJBTkdMRSBpcwot
ICAgIGNhbGxlZCBhbmQgdGhlIGZvcm1hdHMgb2YgdGhlIGRyYXcgYW5kIHJlYWQgZnJhbWVidWZm
ZXJzIGFyZSBub3QKLSAgICBpZGVudGljYWwuCi0KLSAgICBJZiBlaXRoZXIgdGhlIGRyYXcgb3Ig
cmVhZCBmcmFtZWJ1ZmZlciBpcyBmcmFtZWJ1ZmZlciBjb21wbGV0ZSBhbmQKLSAgICBoYXMgYSB2
YWx1ZSBvZiBTQU1QTEVfQlVGRkVSUyB0aGF0IGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLCB0aGVuIHRo
ZQotICAgIGVycm9yIElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBCbGl0RnJhbWVi
dWZmZXJBTkdMRSBpcyBjYWxsZWQKLSAgICBhbmQgdGhlIHNwZWNpZmllZCBzb3VyY2UgYW5kIGRl
c3RpbmF0aW9uIGRpbWVuc2lvbnMgYXJlIG5vdAotICAgIGlkZW50aWNhbC4KLQotICAgIElmIFJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFIGlzIGNhbGxlZCB3aXRoIDx0YXJnZXQ+
IG5vdAotICAgIGVxdWFsIHRvIFJFTkRFUkJVRkZFUiwgdGhlIGVycm9yIElOVkFMSURfRU5VTSBp
cyBnZW5lcmF0ZWQuCi0KLSAgICBJZiBSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdM
RSBpcyBjYWxsZWQgd2l0aCBhbiAKLSAgICA8aW50ZXJuYWxmb3JtYXQ+IHRoYXQgaXMgbm90IGxp
c3RlZCBhcyBvbmUgb2YgdGhlIGNvbG9yLSwgZGVwdGgtIAotICAgIG9yIHN0ZW5jaWwtcmVuZGVy
YWJsZSBmb3JtYXRzIGluIFRhYmxlIDQuNSwgdGhlbiB0aGUgZXJyb3IKLSAgICBJTlZBTElEX0VO
VU0gaXMgZ2VuZXJhdGVkLgotCi0gICAgSWYgUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
QU5HTEUgaXMgY2FsbGVkIHdpdGggPHdpZHRoPiBvciAKLSAgICA8aGVpZ2h0PiBncmVhdGVyIHRo
YW4gTUFYX1JFTkRFUkJVRkZFUl9TSVpFLCB0aGVuIHRoZSBlcnJvciAKLSAgICBJTlZBTElEX1ZB
TFVFIGlzIGdlbmVyYXRlZC4KLQotICAgIElmIFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZUFOR0xFIGlzIGNhbGxlZCB3aXRoIGEgdmFsdWUgb2YKLSAgICA8c2FtcGxlcz4gdGhhdCBpcyBn
cmVhdGVyIHRoYW4gTUFYX1NBTVBMRVNfQU5HTEUgb3IgbGVzcyB0aGFuIHplcm8sCi0gICAgdGhl
biB0aGUgZXJyb3IgSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQuCi0KLSAgICBUaGUgZXJyb3Ig
T1VUX09GX01FTU9SWSBpcyBnZW5lcmF0ZWQgd2hlbgotICAgIFJlbmRlcmJ1ZmZlclN0b3JhZ2VN
dWx0aXNhbXBsZUFOR0xFIGNhbm5vdCBjcmVhdGUgc3RvcmFnZSBvZiB0aGUKLSAgICBzcGVjaWZp
ZWQgc2l6ZS4KLQotTmV3IFN0YXRlCi0KLSAgICBBZGQgdG8gdGFibGUgNi4yMiAoUmVuZGVyYnVm
ZmVyIFN0YXRlKQotCi0gICAgR2V0IFZhbHVlICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBl
ICAgIEdldCBDb21tYW5kICAgICAgICAgICAgICAgICBJbml0aWFsIFZhbHVlICBEZXNjcmlwdGlv
biAgICAgICAgICAgICBTZWN0aW9uCi0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSAgICAtLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tICAt
LS0tLS0tLS0tLS0tLS0tLS0tLSAgICAtLS0tLS0tCi0gICAgUkVOREVSQlVGRkVSX1NBTVBMRVNf
QU5HTEUgICAgICAgICBaKyAgICAgIEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2ICAwICAgICAg
ICAgICAgICBudW1iZXIgb2Ygc2FtcGxlcyAgICAgICA0LjQuMwotCi0KLSAgICBBZGQgdG8gdGFi
bGUgNi55eSAoRnJhbWVidWZmZXIgRGVwZW5kZW50IFZhdWVzKSAoYWRkZWQgYnkgCi0gICAgQU5H
TEVfZnJhbWVidWZmZXJfYmxpdCksIHRoZSBmb2xsb3dpbmcgbmV3IGZyYW1lYnVmZmVyIGRlcGVu
ZGVudCBzdGF0ZS4KLQotICAgIEdldCBWYWx1ZSAgICAgICAgICBUeXBlICBHZXQgQ29tbWFuZCAg
ICAgTWluaW11bSBWYWx1ZSAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICBTZWN0aW9uCi0gICAg
LS0tLS0tLS0tLS0tLS0tLS0gIC0tLS0gIC0tLS0tLS0tLS0tICAgICAtLS0tLS0tLS0tLS0tICAg
IC0tLS0tLS0tLS0tLS0tLS0tLS0gICAgIC0tLS0tLS0KLSAgICBNQVhfU0FNUExFU19BTkdMRSAg
WisgICAgR2V0SW50ZWdlcnYgICAgIDEgICAgICAgICAgICAgICAgTWF4aW11bSBudW1iZXIgb2Yg
ICAgICAgNC40LjMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2FtcGxlcyBzdXBwb3J0ZWQKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG11bHRpc2FtcGxp
bmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIAotCi0KLUlzc3VlcwotICAgIAotICAgIElzc3VlcyBmcm9tIEVYVF9mcmFtZWJ1ZmZl
cl9tdWx0aXNhbXBsZSBoYXZlIGJlZW4gcmVtb3ZlZC4KLSAKLSAgICAxKSBXaGF0IHNob3VsZCB3
ZSBjYWxsIHRoaXMgZXh0ZW5zaW9uPwotCi0gICAgICAgUmVzb2x2ZWQ6IEFOR0xFX2ZyYW1lYnVm
ZmVyX2JsaXQuICAKLQotICAgICAgIFRoaXMgZXh0ZW5zaW9uIGlzIGEgcmVzdWx0IG9mIGEgY29s
bGFib3JhdGlvbiBiZXR3ZWVuIEdvb2dsZSBhbmQgCi0gICAgICAgVHJhbnNHYW1pbmcgZm9yIHRo
ZSBvcGVuLXNvdXJjZSBBTkdMRSBwcm9qZWN0LiBUeXBpY2FsbHkgb25lIHdvdWxkCi0gICAgICAg
bGFiZWwgYSBtdWx0aS12ZW5kb3IgZXh0ZW5zaW9uIGFzIEVYVCwgYnV0IEVYVF9mcmFtZWJ1ZmZl
cl9tdWxpdHNhbXBsZSAKLSAgICAgICBpcyBhbHJlYWR5IHRoZSBuYW1lIGZvciB0aGlzIG9uIERl
c2t0b3AgR0wuICBBZGRpdGlvbmFsbHkgdGhpcwotICAgICAgIGlzbid0IHRydWVseSBhIG11bHRp
LXZlbmRvciBleHRlbnNpb24gYmVjYXVzZSB0aGVyZSBpcyBvbmx5IG9uZQotICAgICAgIGltcGxl
bWVudGF0aW9uIG9mIHRoaXMuICBXZSdsbCBmb2xsb3cgdGhlIGV4YW1wbGUgb2YgdGhlIG9wZW4t
c291cmNlCi0gICAgICAgTUVTQSBwcm9qZWN0IHdoaWNoIHVzZXMgdGhlIHByb2plY3QgbmFtZSBm
b3IgdGhlIHZlbmRvciBzdWZmaXguCi0gCi0gICAgMikgSG93IGRvZXMgdGhpcyBleHRlbnNpb24g
ZGlmZmVyIGZyb20gRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlPwotCi0gICAgICAgVGhpcyBp
cyBkZXNpZ25lZCB0byBiZSBhIHByb3BlciBzdWJzZXQgb2YgRVhUX2ZyYW1lYnVmZmVyX211bHRp
c2FtcGxlCi0gICAgICAgZnVuY3Rpb25hbGl0eSBhcyBhcHBsaWNhYmxlIHRvIE9wZW5HTCBFUyAy
LjAuCi0KLSAgICAgICBGdW5jdGlvbmFsaXR5IHRoYXQgaXMgdW5jaGFuZ2VkOiAKLSAgICAgICAg
LSBjcmVhdGlvbiBvZiBtdWx0aXNhbXBsZSByZW5kZXJidWZmZXJzLgotICAgICAgICAtIHdob2xl
IGJ1ZmZlciBtdWx0aS1zYW1wbGUtPnNpbmdsZS1zYW1wbGUgcmVzb2x2ZS4KLSAgICAgICAgLSBu
byBmb3JtYXQgY29udmVyc2lvbnMsIHN0cmV0Y2hpbmcgb3IgZmxpcHBpbmcgc3VwcG9ydGVkIG9u
IG11bHRpc2FtcGxlIGJsaXRzLgotCi0gICAgICAgQWRkaXRpb25hbCByZXN0cmljdGlvbnMgb24g
QmxpdEZyYW1lYnVmZmVyQU5HTEU6Ci0gICAgICAgIC0gbXVsdGlzYW1wbGUgcmVzb2x2ZSBpcyBv
bmx5IHN1cHBvcnRlZCBvbiBjb2xvciBidWZmZXJzLgotICAgICAgICAtIG5vIGJsaXRzIHRvIG11
bHRpc2FtcGxlIGRlc3RpbmF0aW9ucyAobm8gc2luZ2xlLT5tdWx0aSBvciBtdWx0aS1tdWx0aSku
Ci0gICAgICAgIC0gb25seSBlbnRpcmUgYnVmZmVycyBjYW4gYmUgcmVzb2x2ZWQuCi0gICAgICAg
ICAKLVJldmlzaW9uIEhpc3RvcnkKLQotICAgIFJldmlzaW9uIDEsIDIwMTAvMDcvMDgKLSAgICAg
IC0gY29waWVkIGZyb20gcmV2aXNpb24gNyBvZiBFWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUK
LSAgICAgIC0gcmVtb3ZlZCBsYW5ndWFnZSB0aGF0IHdhcyBub3QgcmVsZXZhbnQgdG8gRVMyIAot
ICAgICAgLSByZWJhc2UgY2hhbmdlcyBhZ2FpbnN0IHRoZSBPcGVuIEdMIEVTIDIuMCBzcGVjaWZp
Y2F0aW9uCi0gICAgICAtIGFkZGVkIEFOR0xFLXNwZWNpZmljIHJlc3RyaWN0aW9ucwotICAgIFJl
dmlzaW9uIDIsIDIwMTAvMDcvMTkKLSAgICAgIC0gZml4IG1pc3NpbmcgZXJyb3IgY29kZQotICAg
IFJldmlzaW9uIDMsIDIwMTAvMDgvMDYKLSAgICAgIC0gYWRkIGFkZGl0aW9uYWwgY29udHJpYnV0
b3JzLCB1cGRhdGUgaW1wbGVtZW50YXRpb24gc3RhdHVzCi0gICAgICAtIGRpc2FsbG93IG5lZ2F0
aXZlIHNhbXBsZXMgCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0FO
R0xFX2luc3RhbmNlZF9hcnJheXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL2V4dGVuc2lvbnMvQU5HTEVfaW5zdGFuY2VkX2FycmF5cy50eHQJKHJldmlzaW9uIDIw
NzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvQU5HTEVfaW5zdGFu
Y2VkX2FycmF5cy50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNTkgKzAsMCBAQAotTmFtZQotCi0g
ICAgQU5HTEVfaW5zdGFuY2VkX2FycmF5cwotCi1OYW1lIFN0cmluZ3MKLQotICAgIEdMX0FOR0xF
X2luc3RhbmNlZF9hcnJheXMKLQotQ29udHJpYnV0b3JzCi0KLSAgICBDb250cmlidXRvcnMgdG8g
QVJCX2luc3RhbmNlZF9hcnJheXMKLSAgICBOaWNvbGFzIENhcGVucywgVHJhbnNHYW1pbmcgSW5j
LgotICAgIEphbWVzIEhlbGZlcnR5LCBUcmFuc0dhbWluZyBJbmMuCi0gICAgS2VubmV0aCBSdXNz
ZWxsLCBHb29nbGUgSW5jLgotICAgIFZhbmdlbGlzIEtva2tldmlzLCBHb29nbGUgSW5jLgotCi1D
b250YWN0Ci0KLSAgICBEYW5pZWwgS29jaCwgVHJhbnNHYW1pbmcgSW5jLiAoZGFuaWVsICdhdCcg
dHJhbnNnYW1pbmcuY29tKQotCi1TdGF0dXMKLQotICAgIEltcGxlbWVudGVkIGluIEFOR0xFIHI5
NzYuCi0KLVZlcnNpb24KLQotICAgIExhc3QgTW9kaWZpZWQgRGF0ZTogRmVicnVhcnkgOCwgMjAx
MgotICAgIEF1dGhvciBSZXZpc2lvbjogMwotCi1OdW1iZXIKLQotICAgIE9wZW5HTCBFUyBFeHRl
bnNpb24gIzEwOQotCi1EZXBlbmRlbmNpZXMKLQotICAgIE9wZW5HTCBFUyAyLjAgaXMgcmVxdWly
ZWQuCi0KLSAgICBUaGlzIGV4dGVuc2lvbiBpcyB3cml0dGVuIGFnYWluc3QgdGhlIE9wZW5HTCBF
UyAyLjAgU3BlY2lmaWNhdGlvbi4KLQotT3ZlcnZpZXcKLQotICAgIEEgY29tbW9uIHVzZSBjYXNl
IGluIEdMIGZvciBzb21lIGFwcGxpY2F0aW9ucyBpcyB0byBiZSBhYmxlIHRvCi0gICAgZHJhdyB0
aGUgc2FtZSBvYmplY3QsIG9yIGdyb3VwcyBvZiBzaW1pbGFyIG9iamVjdHMgdGhhdCBzaGFyZQot
ICAgIHZlcnRleCBkYXRhLCBwcmltaXRpdmUgY291bnQgYW5kIHR5cGUsIG11bHRpcGxlIHRpbWVz
LiAgVGhpcyAKLSAgICBleHRlbnNpb24gcHJvdmlkZXMgYSBtZWFucyBvZiBhY2NlbGVyYXRpbmcg
c3VjaCB1c2UgY2FzZXMgd2hpbGUgCi0gICAgcmVzdHJpY3RpbmcgdGhlIG51bWJlciBvZiBBUEkg
Y2FsbHMsIGFuZCBrZWVwaW5nIHRoZSBhbW91bnQgb2YgCi0gICAgZHVwbGljYXRlIGRhdGEgdG8g
YSBtaW5pbXVtLgotICAgIAotICAgIFRoaXMgZXh0ZW5zaW9uIGludHJvZHVjZXMgYW4gYXJyYXkg
ImRpdmlzb3IiIGZvciBnZW5lcmljCi0gICAgdmVydGV4IGFycmF5IGF0dHJpYnV0ZXMsIHdoaWNo
IHdoZW4gbm9uLXplcm8gc3BlY2lmaWVzIHRoYXQgdGhlCi0gICAgYXR0cmlidXRlIGlzICJpbnN0
YW5jZWQuIiAgQW4gaW5zdGFuY2VkIGF0dHJpYnV0ZSBkb2VzIG5vdAotICAgIGFkdmFuY2UgcGVy
LXZlcnRleCBhcyB1c3VhbCwgYnV0IHJhdGhlciBhZnRlciBldmVyeSA8ZGl2aXNvcj4KLSAgICBj
b25jZXB0dWFsIGRyYXcgY2FsbHMuCi0gICAgCi0gICAgKEF0dHJpYnV0ZXMgd2hpY2ggYXJlbid0
IGluc3RhbmNlZCBhcmUgcmVwZWF0ZWQgaW4gdGhlaXIgZW50aXJldHkKLSAgICBmb3IgZXZlcnkg
Y29uY2VwdHVhbCBkcmF3IGNhbGwuKQotICAgIAotICAgIEJ5IHNwZWNpZnlpbmcgdHJhbnNmb3Jt
IGRhdGEgaW4gYW4gaW5zdGFuY2VkIGF0dHJpYnV0ZSBvciBzZXJpZXMKLSAgICBvZiBpbnN0YW5j
ZWQgYXR0cmlidXRlcywgdmVydGV4IHNoYWRlcnMgY2FuLCBpbiBjb25jZXJ0IHdpdGggdGhlIAot
ICAgIGluc3RhbmNpbmcgZHJhdyBjYWxscywgZHJhdyBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgYW4g
b2JqZWN0IHdpdGggCi0gICAgb25lIGRyYXcgY2FsbC4KLQotSVAgU3RhdHVzCi0KLSAgICBObyBr
bm93biBJUCBjbGFpbXMuCi0KLU5ldyBUb2tlbnMKLQotICAgIEFjY2VwdGVkIGJ5IHRoZSA8cG5h
bWU+IHBhcmFtZXRlcnMgb2YgR2V0VmVydGV4QXR0cmliZnYgYW5kIAotICAgIEdldFZlcnRleEF0
dHJpYml2OgotCi0gICAgICAgIFZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNPUl9BTkdMRSAgICAg
ICAgICAgICAgIDB4ODhGRQotCi1OZXcgUHJvY2VkdXJlcyBhbmQgRnVuY3Rpb25zCi0KLSAgICB2
b2lkIERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShlbnVtIG1vZGUsIGludCBmaXJzdCwgc2l6ZWkg
Y291bnQsCi0gICAgICAgICAgICBzaXplaSBwcmltY291bnQpOwotCi0gICAgdm9pZCBEcmF3RWxl
bWVudHNJbnN0YW5jZWRBTkdMRShlbnVtIG1vZGUsIHNpemVpIGNvdW50LCBlbnVtIHR5cGUsCi0g
ICAgICAgICAgICBjb25zdCB2b2lkICppbmRpY2VzLCBzaXplaSBwcmltY291bnQpOwotCi0gICAg
dm9pZCBWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUodWludCBpbmRleCwgdWludCBkaXZpc29yKTsK
LQotQWRkaXRpb25zIHRvIENoYXB0ZXIgMiBvZiB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZpY2F0
aW9uCi0oT3BlbkdMIEVTIE9wZXJhdGlvbikKLQotICAgIE1vZGlmeSBzZWN0aW9uIDIuOCAoVmVy
dGV4IEFycmF5cyksIHAuIDIxCi0KLSAgICBBZnRlciBkZXNjcmlwdGlvbiBvZiBFbmFibGVWZXJ0
ZXhBdHRyaWJBcnJheSAvIERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheQotICAgIGFkZCB0aGUgZm9s
bG93aW5nOgotCi0gICAgIlRoZSBjb21tYW5kCi0KLSAgICAgICAgdm9pZCBWZXJ0ZXhBdHRyaWJE
aXZpc29yQU5HTEUodWludCBpbmRleCwgdWludCBkaXZpc29yKTsKLQotICAgIG1vZGlmaWVzIHRo
ZSByYXRlIGF0IHdoaWNoIGdlbmVyaWMgdmVydGV4IGF0dHJpYnV0ZXMgYWR2YW5jZSB3aGVuCi0g
ICAgcmVuZGVyaW5nIG11bHRpcGxlIGluc3RhbmNlcyBvZiBwcmltaXRpdmVzIGluIGEgc2luZ2xl
IGRyYXcgY2FsbAotICAgIChzZWUgRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFIGFuZCBEcmF3RWxl
bWVudHNJbnN0YW5jZWRBTkdMRSBiZWxvdykuCi0gICAgSWYgPGRpdmlzb3I+IGlzIHplcm8sIHRo
ZSBhdHRyaWJ1dGUgYXQgc2xvdCA8aW5kZXg+IGFkdmFuY2VzIG9uY2UKLSAgICBwZXIgdmVydGV4
LiAgSWYgPGRpdmlzb3I+IGlzIG5vbi16ZXJvLCB0aGUgYXR0cmlidXRlIGFkdmFuY2VzIG9uY2UK
LSAgICBwZXIgPGRpdmlzb3I+IGluc3RhbmNlcyBvZiB0aGUgcHJpbWl0aXZlcyBiZWluZyByZW5k
ZXJlZC4KLSAgICBBbiBhdHRyaWJ1dGUgaXMgcmVmZXJyZWQgdG8gYXMgImluc3RhbmNlZCIgaWYg
aXRzIDxkaXZpc29yPiB2YWx1ZSBpcwotICAgIG5vbi16ZXJvLiIKLQotICAgIFJlcGxhY2UgdGhl
IHRleHQgZGVzY3JpYmluZyBEcmF3QXJyYXlzIGFuZCBEcmF3RWxlbWVudHMgaW4gdGhlCi0gICAg
IlRyYW5zZmVycmluZyBBcnJheSBFbGVtZW50cyIgc3Vic2VjdGlvbiBvZiAyLjgsIGZyb20gdGhl
IHNlY29uZCBwYXJhZ3JhcGgKLSAgICB0aHJvdWdoIHRoZSBlbmQgb2YgdGhlIHNlY3Rpb24gd2l0
aCB0aGUgZm9sbG93aW5nOgotCi0gICAgIlRoZSBjb21tYW5kCi0KLSAgICAgICAgdm9pZCBEcmF3
QXJyYXlzT25lSW5zdGFuY2UoIGVudW0gbW9kZSwgaW50IGZpcnN0LCBzaXplaSBjb3VudCwgaW50
IGluc3RhbmNlICk7Ci0KLSAgICBkb2VzIG5vdCBleGlzdCBpbiB0aGUgR0wsIGJ1dCBpcyB1c2Vk
IHRvIGRlc2NyaWJlIGZ1bmN0aW9uYWxpdHkgaW4KLSAgICB0aGUgcmVzdCBvZiB0aGlzIHNlY3Rp
b24uICBUaGlzIGZ1bmN0aW9uIGNvbnN0cnVjdHMgYSBzZXF1ZW5jZSBvZgotICAgIGdlb21ldHJp
YyBwcmltaXRpdmVzIGJ5IHRyYW5zZmVycmluZyBlbGVtZW50cyA8Zmlyc3Q+IHRocm91Z2ggPGZp
cnN0PiArCi0gICAgPGNvdW50PiAtIDEgb2YgZWFjaCBlbmFibGVkIG5vbi1pbnN0YW5jZWQgYXJy
YXkgdG8gdGhlIEdMLiA8bW9kZT4KLSAgICBzcGVjaWZpZXMgd2hhdCBraW5kIG9mIHByaW1pdGl2
ZXMgYXJlIGNvbnN0cnVjdGVkLCBhcyBkZWZpbmVkIGluIHNlY3Rpb24KLSAgICAyLjYuMS4KLQot
ICAgIElmIGFuIGVuYWJsZWQgdmVydGV4IGF0dHJpYnV0ZSBhcnJheSBpcyBpbnN0YW5jZWQgKGl0
IGhhcyBhIG5vbi16ZXJvCi0gICAgYXR0cmlidXRlIDxkaXZpc29yPiBhcyBzcGVjaWZpZWQgYnkg
VmVydGV4QXR0cmliRGl2aXNvckFOR0xFKSwgdGhlIGVsZW1lbnQKLSAgICB0aGF0IGlzIHRyYW5z
ZmVycmVkIHRvIHRoZSBHTCBpcyBnaXZlbiBieToKLQotICAgICAgICBmbG9vciggPGluc3RhbmNl
PiAvIDxkaXZpc29yPiApLgotCi0gICAgSWYgYW4gYXJyYXkgY29ycmVzcG9uZGluZyB0byBhIGdl
bmVyaWMgYXR0cmlidXRlIHJlcXVpcmVkIGJ5IGEgdmVydGV4IHNoYWRlcgotICAgIGlzIG5vdCBl
bmFibGVkLCB0aGVuIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgaXMgdGFrZW4gZnJvbSB0aGUg
Y3VycmVudAotICAgIGdlbmVyaWMgYXR0cmlidXRlIHN0YXRlIChzZWUgc2VjdGlvbiAyLjcpLgot
Ci0gICAgSWYgYW4gYXJyYXkgY29ycmVzcG9uZGluZyB0byBhIGdlbmVyaWMgYXR0cmlidXRlIHJl
cXVpcmVkIGJ5IGEgdmVydGV4IHNoYWRlcgotICAgIGlzIGVuYWJsZWQsIHRoZSBjb3JyZXNwb25k
aW5nIGN1cnJlbnQgZ2VuZXJpYyBhdHRyaWJ1dGUgdmFsdWUgaXMgdW5hZmZlY3RlZCAKLSAgICBi
eSB0aGUgZXhlY3V0aW9uIG9mIERyYXdBcnJheXNPbmVJbnN0YW5jZS4KLQotICAgIFNwZWNpZnlp
bmcgPGZpcnN0PiA8IDAgcmVzdWx0cyBpbiB1bmRlZmluZWQgYmVoYXZpb3IuIEdlbmVyYXRpbmcg
dGhlIGVycm9yIAotICAgIElOVkFMSURfVkFMVUUgaXMgcmVjb21tZW5kZWQgaW4gdGhpcyBjYXNl
LgotCi0gICAgVGhlIGNvbW1hbmQKLQotICAgICAgICB2b2lkIERyYXdBcnJheXMoIGVudW0gbW9k
ZSwgaW50IGZpcnN0LCBzaXplaSBjb3VudCApOwotCi0gICAgaXMgZXF1aXZhbGVudCB0byB0aGUg
Y29tbWFuZCBzZXF1ZW5jZQotICAgIAotICAgICAgICBEcmF3QXJyYXlzT25lSW5zdGFuY2UobW9k
ZSwgZmlyc3QsIGNvdW50LCAwKTsKLQotICAgIFRoZSBjb21tYW5kCi0KLSAgICAgICAgdm9pZCBE
cmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoZW51bSBtb2RlLCBpbnQgZmlyc3QsIHNpemVpIGNvdW50
LAotICAgICAgICAgICAgICAgIHNpemVpIHByaW1jb3VudCk7Ci0KLSAgICBiZWhhdmVzIGlkZW50
aWNhbGx5IHRvIERyYXdBcnJheXMgZXhjZXB0IHRoYXQgPHByaW1jb3VudD4KLSAgICBpbnN0YW5j
ZXMgb2YgdGhlIHJhbmdlIG9mIGVsZW1lbnRzIGFyZSBleGVjdXRlZCwgYW5kIHRoZQotICAgIDxp
bnN0YW5jZT4gYWR2YW5jZXMgZm9yIGVhY2ggaXRlcmF0aW9uLiBJbnN0YW5jZWQgYXR0cmlidXRl
cyB0aGF0Ci0gICAgaGF2ZSA8ZGl2aXNvcj4gTiwgKHdoZXJlIE4gPiAwLCBhcyBzcGVjaWZpZWQg
YnkKLSAgICBWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpIGFkdmFuY2Ugb25jZSBldmVyeSBOIGlu
c3RhbmNlcy4KLSAgICAKLSAgICBJdCBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzOiAKLQotICAgICAg
ICBpZiAobW9kZSwgY291bnQsIG9yIHByaW1jb3VudCBpcyBpbnZhbGlkKQotICAgICAgICAgICAg
Z2VuZXJhdGUgYXBwcm9wcmlhdGUgZXJyb3IKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBm
b3IgKGkgPSAwOyBpIDwgcHJpbWNvdW50OyBpKyspIHsKLSAgICAgICAgICAgICAgICBEcmF3QXJy
YXlzT25lSW5zdGFuY2UobW9kZSwgZmlyc3QsIGNvdW50LCBpKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotCi0gICAgVGhlIGNvbW1hbmQKLQotICAgICAgIHZvaWQgRHJhd0VsZW1lbnRzT25l
SW5zdGFuY2UoIGVudW0gbW9kZSwgc2l6ZWkgY291bnQsIGVudW0gdHlwZSwKLSAgICAgICAgICAg
IHZvaWQgKmluZGljZXMsIGludCBpbnN0YW5jZSApOwotCi0gICAgZG9lcyBub3QgZXhpc3QgaW4g
dGhlIEdMLCBidXQgaXMgdXNlZCB0byBkZXNjcmliZSBmdW5jdGlvbmFsaXR5IGluCi0gICAgdGhl
IHJlc3Qgb2YgdGhpcyBzZWN0aW9uLiAgVGhpcyBjb21tYW5kIGNvbnN0cnVjdHMgYSBzZXF1ZW5j
ZSBvZgotICAgIGdlb21ldHJpYyBwcmltaXRpdmVzIGJ5IHN1Y2Nlc3NpdmVseSB0cmFuc2ZlcnJp
bmcgdGhlIDxjb3VudD4gZWxlbWVudHMKLSAgICB3aG9zZSBpbmRpY2VzIGFyZSBzdG9yZWQgaW4g
dGhlIGN1cnJlbnRseSBib3VuZCBlbGVtZW50IGFycmF5IGJ1ZmZlcgotICAgIChzZWUgc2VjdGlv
biAyLjkuMikgYXQgdGhlIG9mZnNldCBkZWZpbmVkIGJ5IDxpbmRpY2VzPiB0byB0aGUgR0wuCi0g
ICAgVGhlIDxpPi10aCBlbGVtZW50IHRyYW5zZmVycmVkIGJ5IERyYXdFbGVtZW50c09uZUluc3Rh
bmNlIHdpbGwgYmUgdGFrZW4KLSAgICBmcm9tIGVsZW1lbnQgPGluZGljZXM+W2ldIG9mIGVhY2gg
ZW5hYmxlZCBub24taW5zdGFuY2VkIGFycmF5LgotICAgIDx0eXBlPiBtdXN0IGJlIG9uZSBvZiBV
TlNJR05FRF9CWVRFLCBVTlNJR05FRF9TSE9SVCwgb3IgVU5TSUdORURfSU5ULCAKLSAgICBpbmRp
Y2F0aW5nIHRoYXQgdGhlIGluZGV4IHZhbHVlcyBhcmUgb2YgR0wgdHlwZSB1Ynl0ZSwgdXNob3J0
LCBvciB1aW50Ci0gICAgcmVzcGVjdGl2ZWx5LiA8bW9kZT4gc3BlY2lmaWVzIHdoYXQga2luZCBv
ZiBwcmltaXRpdmVzIGFyZSBjb25zdHJ1Y3RlZCwKLSAgICBhcyBkZWZpbmVkIGluIHNlY3Rpb24g
Mi42LjEuCi0KLSAgICBJZiBhbiBlbmFibGVkIHZlcnRleCBhdHRyaWJ1dGUgYXJyYXkgaXMgaW5z
dGFuY2VkIChpdCBoYXMgYSBub24temVybwotICAgIGF0dHJpYnV0ZSA8ZGl2aXNvcj4gYXMgc3Bl
Y2lmaWVkIGJ5IFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSksIHRoZSBlbGVtZW50Ci0gICAgdGhh
dCBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgR0wgaXMgZ2l2ZW4gYnk6Ci0KLSAgICAgICAgZmxvb3Io
IDxpbnN0YW5jZT4gLyA8ZGl2aXNvcj4gKTsKLQotICAgIElmIGFuIGFycmF5IGNvcnJlc3BvbmRp
bmcgdG8gYSBnZW5lcmljIGF0dHJpYnV0ZSByZXF1aXJlZCBieSBhIHZlcnRleAotICAgIHNoYWRl
ciBpcyBub3QgZW5hYmxlZCwgdGhlbiB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGlzIHRha2Vu
IGZyb20gdGhlIAotICAgIGN1cnJlbnQgZ2VuZXJpYyBhdHRyaWJ1dGUgc3RhdGUgKHNlZSBzZWN0
aW9uIDIuNykuIE90aGVyd2lzZSwgaWYgYW4gYXJyYXkKLSAgICBpcyBlbmFibGVkLCB0aGUgY29y
cmVzcG9uZGluZyBjdXJyZW50IGdlbmVyaWMgYXR0cmlidXRlIHZhbHVlIGlzIAotICAgIHVuYWZm
ZWN0ZWQgYnkgdGhlIGV4ZWN1dGlvbiBvZiBEcmF3RWxlbWVudHNPbmVJbnN0YW5jZS4KLQotICAg
IFRoZSBjb21tYW5kCi0KLSAgICAgICAgdm9pZCBEcmF3RWxlbWVudHMoIGVudW0gbW9kZSwgc2l6
ZWkgY291bnQsIGVudW0gdHlwZSwKLSAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpY2VzKTsK
LQotICAgIGJlaGF2ZXMgaWRlbnRpY2FsbHkgdG8gRHJhd0VsZW1lbnRzT25lSW5zdGFuY2Ugd2l0
aCB0aGUgPGluc3RhbmNlPiAKLSAgICBwYXJhbWV0ZXIgc2V0IHRvIHplcm87IHRoZSBlZmZlY3Qg
b2YgY2FsbGluZwotCi0gICAgICAgIERyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwgdHlwZSwgaW5k
aWNlcyk7Ci0KLSAgICBpcyBlcXVpdmFsZW50IHRvIHRoZSBjb21tYW5kIHNlcXVlbmNlOgotCi0g
ICAgICAgaWYgKG1vZGUsIGNvdW50IG9yIHR5cGUgaXMgaW52YWxpZCApCi0gICAgICAgICAgICBn
ZW5lcmF0ZSBhcHByb3ByaWF0ZSBlcnJvcgotICAgICAgICBlbHNlCi0gICAgICAgICAgICBEcmF3
RWxlbWVudHNPbmVJbnN0YW5jZShtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgMCk7Ci0KLSAg
ICBUaGUgY29tbWFuZAotCi0gICAgICAgIHZvaWQgRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUo
ZW51bSBtb2RlLCBzaXplaSBjb3VudCwgZW51bSB0eXBlLAotICAgICAgICAgICAgICAgIGNvbnN0
IHZvaWQgKmluZGljZXMsIHNpemVpIHByaW1jb3VudCk7Ci0KLSAgICBiZWhhdmVzIGlkZW50aWNh
bGx5IHRvIERyYXdFbGVtZW50cyBleGNlcHQgdGhhdCA8cHJpbWNvdW50PgotICAgIGluc3RhbmNl
cyBvZiB0aGUgc2V0IG9mIGVsZW1lbnRzIGFyZSBleGVjdXRlZCBhbmQgdGhlIGluc3RhbmNlCi0g
ICAgYWR2YW5jZXMgYmV0d2VlbiBlYWNoIHNldC4gSW5zdGFuY2VkIGF0dHJpYnV0ZXMgYXJlIGFk
dmFuY2VkIGFzIHRoZXkgZG8KLSAgICBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiBEcmF3QXJyYXlz
SW5zdGFuY2VkQU5HTEUuIEl0IGhhcyB0aGUgc2FtZSBlZmZlY3QgYXM6Ci0KLSAgICAgICAgaWYg
KG1vZGUsIGNvdW50LCBwcmltY291bnQsIG9yIHR5cGUgaXMgaW52YWxpZCApCi0gICAgICAgICAg
ICBnZW5lcmF0ZSBhcHByb3ByaWF0ZSBlcnJvcgotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgcHJpbWNvdW50OyBpKyspIHsKLSAgICAgICAgICAgICAgICBE
cmF3RWxlbWVudHNPbmVJbnN0YW5jZShtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgaSk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgIElmIHRoZSBudW1iZXIgb2Ygc3VwcG9ydGVk
IGdlbmVyaWMgdmVydGV4IGF0dHJpYnV0ZXMgKHRoZSB2YWx1ZSBvZiAKLSAgICBNQVhfVkVSVEVY
X0FUVFJJQlMpIGlzIDxuPiwgdGhlbiB0aGUgY2xpZW50IHN0YXRlIHJlcXVpcmVkIHRvIGltcGxl
bWVudAotICAgIHZlcnRleCBhcnJheXMgY29uc2lzdHMgb2YgPG4+IGJvb2xlYW4gdmFsdWVzLCA8
bj4gbWVtb3J5IHBvaW50ZXJzLCA8bj4KLSAgICBpbnRlZ2VyIHN0cmlkZSB2YWx1ZXMsIDxuPiBz
eW1ib2xpYyBjb25zdGFudHMgcmVwcmVzZW50aW5nIGFycmF5IHR5cGVzLAotICAgIDxuPiBpbnRl
Z2VycyByZXByZXNlbnRpbmcgdmFsdWVzIHBlciBlbGVtZW50LCA8bj4gYm9vbGVhbiB2YWx1ZXMg
Ci0gICAgaW5kaWNhdGluZyBub3JtYWxpemF0aW9uLCBhbmQgPG4+IGludGVnZXJzIHJlcHJlc2Vu
dGluZyB2ZXJ0ZXggYXR0cmlidXRlCi0gICAgZGl2aXNvcnMuIAotCi0gICAgSW4gdGhlIGluaXRp
YWwgc3RhdGUsIHRoZSBib29sZWFuIHZhbHVlcyBhcmUgZWFjaCBmYWxzZSwgdGhlIG1lbW9yeQot
ICAgIHBvaW50ZXJzIGFyZSBlYWNoIE5VTEwsIHRoZSBzdHJpZGVzIGFyZSBlYWNoIHplcm8sIHRo
ZSBhcnJheSB0eXBlcyBhcmUgCi0gICAgZWFjaCBGTE9BVCwgdGhlIGludGVnZXJzIHJlcHJlc2Vu
dGluZyB2YWx1ZXMgcGVyIGVsZW1lbnQgYXJlIGVhY2ggZm91ciwKLSAgICBhbmQgdGhlIGRpdmlz
b3JzIGFyZSBlYWNoIHplcm8uIgotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciAzIG9mIHRoZSBPcGVu
R0wgRVMgMi4wIFNwZWNpZmljYXRpb24gKFJhc3Rlcml6YXRpb24pCi0KLSAgICBOb25lCi0KLUFk
ZGl0aW9ucyB0byBDaGFwdGVyIDQgb2YgdGhlIE9wZW5HTCBFUyAyLjAgU3BlY2lmaWNhdGlvbiAo
UGVyLUZyYWdtZW50Ci1PcGVyYXRpb25zIGFuZCB0aGUgRnJhbWVidWZmZXIpCi0KLSAgICBOb25l
Ci0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDUgb2YgdGhlIE9wZW5HTCBFUyAyLjAgU3BlY2lmaWNh
dGlvbiAoU3BlY2lhbCBGdW5jdGlvbnMpCi0KLSAgICBOb25lCi0KLUFkZGl0aW9ucyB0byBDaGFw
dGVyIDYgb2YgdGhlIE9wZW5HTCBFUyAyLjAgU3BlY2lmaWNhdGlvbiAoU3RhdGUgYW5kIFN0YXRl
Ci1SZXF1ZXN0cykKLQotICAgIEluIHNlY3Rpb24gNi4xLjgsIGFkZCBWRVJURVhfQVRUUklCX0FS
UkFZX0RJVklTT1JfQU5HTEUgdG8gdGhlIGxpc3Qgb2YgCi0gICAgcG5hbWVzIGFjY2VwdGVkIGJ5
IEdldFZlcnRleEF0dHJpYmZ2IGFuZCBHZXRWZXJ0ZXhBdHRyaWJpdi4KLQotQWRkaXRpb25zIHRv
IHRoZSBBR0wvRUdML0dMWC9XR0wgU3BlY2lmaWNhdGlvbnMKLQotICAgIE5vbmUKLQotRGVwZW5k
ZW5jaWVzIG9uIE9FU19lbGVtZW50X2luZGV4X3VpbnQKLQotICAgIElmIE9FU19lbGVtZW50X2lu
ZGV4X3VpbnQgaXMgbm90IHN1cHBvcnRlZCwgcmVtb3ZlZCBhbGwgcmVmZXJlbmNlcwotICAgIHRv
IFVOU0lHTkVEX0lOVCBpbmRpY2VzIGFuZCB0aGUgYXNzb2NpYXRlZCBHTCBkYXRhIHR5cGUgdWlu
dCBpbiAKLSAgICB0aGUgZGVzY3JpcHRpb24gb2YgRHJhd0VsZW1lbnRzT25lSW5zdGFuY2UuCi0K
LUVycm9ycwotCi0gICAgSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgYnkgVmVydGV4QXR0cmli
RGl2aXNvckFOR0xFIGlmIDxpbmRleD4KLSAgICBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8g
TUFYX1ZFUlRFWF9BVFRSSUJTLgotCi0gICAgSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBieSBE
cmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSBpZiA8dHlwZT4gaXMKLSAgICBub3Qgb25lIG9mIFVO
U0lHTkVEX0JZVEUsIFVOU0lHTkVEX1NIT1JUIG9yIFVOU0lHTkVEX0lOVC4KLQotICAgIElOVkFM
SURfVkFMVUUgaXMgZ2VuZXJhdGVkIGJ5IERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSBpZiA8Zmly
c3Q+LAotICAgIDxjb3VudD4sIG9yIDxwcmltY291bnQ+IGlzIGxlc3MgdGhhbiB6ZXJvLgotCi0g
ICAgSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBieSBEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUg
b3IgCi0gICAgRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUgaWYgPG1vZGU+IGlzIG5vdCBvbmUg
b2YgdGhlIG1vZGVzIGRlc2NyaWJlZCBpbgotICAgIHNlY3Rpb24gMi42LjEuCi0KLSAgICBJTlZB
TElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBieSBEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSBpZiA8
Y291bnQ+IG9yCi0gICAgPHByaW1jb3VudD4gaXMgbGVzcyB0aGFuIHplcm8uCi0KLSAgICBJTlZB
TElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgYnkgRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFIG9y
IAotICAgIERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFIGlmIHRoZXJlIGlzIG5vdCBhdCBsZWFz
dCBvbmUgZW5hYmxlZAotICAgIHZlcnRleCBhdHRyaWJ1dGUgYXJyYXkgdGhhdCBoYXMgYSA8ZGl2
aXNvcj4gb2YgemVybyBhbmQgaXMgYm91bmQgdG8gYW4KLSAgICBhY3RpdmUgZ2VuZXJpYyBhdHRy
aWJ1dGUgdmFsdWUgaW4gdGhlIHByb2dyYW0gdXNlZCBmb3IgdGhlIGRyYXcgY29tbWFuZC4KLQot
TmV3IFN0YXRlCi0KLSAgICBDaGFuZ2VzIHRvIHRhYmxlIDYuNywgcC4gMjY4IChWZXJ0ZXggQXJy
YXkgRGF0YSkKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSW5pdGlhbAotICAgIEdldCBWYWx1ZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgVHlwZSAgIEdldCBDb21tYW5kICAgICAgVmFsdWUgICAgRGVzY3JpcHRpb24gICAg
ICAgU2VjLiAgCi0gICAgLS0tLS0tLS0tICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLSAg
LS0tLS0tLS0tLS0gICAgICAtLS0tLS0tICAtLS0tLS0tLS0tLSAgICAgICAtLS0tCi0gICAgVkVS
VEVYX0FUVFJJQl9BUlJBWV9ESVZJU09SX0FOR0xFICA4KnhaKyAgR2V0VmVydGV4QXR0cmliICAw
ICAgICAgICBJbnN0YW5jZSBEaXZpc29yICAyLjgKLQotSXNzdWVzCi0KLSAgICAxKSBTaG91bGQg
dmVydGV4IGF0dHJpYnV0ZSB6ZXJvIGJlIGluc3RhbmNlLWFibGU/Ci0KLSAgICAgICBSZXNvbHZl
ZDogWWVzLiAKLSAgICAgICBEaXNjdXNzaW9uOiBJbiBEaXJlY3QzRCA5IHN0cmVhbSAwIG11c3Qg
YmUgc3BlY2lmaWVkIGFzIGluZGV4ZWQgZGF0YQotICAgICAgIGFuZCBpdCBjYW5ub3QgYmUgaW5z
dGFuY2VkLiBJbiBBTkdMRSB3ZSBjYW4gd29yayBhcm91bmQgdGhpcyBieQotICAgICAgIHJlbWFw
cGluZyBhbnkgb3RoZXIgc3RyZWFtIHRoYXQgZG9lcyBoYXZlIGluZGV4ZWQgZGF0YSAoaWUgYSB6
ZXJvCi0gICAgICAgYXR0cmlidXRlIGRpdmlzb3IpIHRvIHN0cmVhbSAwIGluIEQzRDkuIFRoaXMg
d29ya3MgYmVjYXVzZSB0aGUgSExTTAotICAgICAgIHZlcnRleCBzaGFkZXIgbWF0Y2hlcyBhdHRy
aWJ1dGVzIGFnYWluc3QgdGhlIHN0cmVhbSBieSB1c2luZyB0aGUgCi0gICAgICAgc2hhZGVyIHNl
bWFudGljIGluZGV4LgotCi0gICAgMikgQ2FuIGFsbCB2ZXJ0ZXggYXR0cmlidXRlcyBiZSBpbnN0
YW5jZWQgc2ltdWx0YW5lb3VzbHk/Ci0KLSAgICAgICBSZXNvbHZlZDogTm8KLSAgICAgICBEaXNj
dXNzaW9uOiBJbiByYXJlIGNhc2VzIGl0IGlzIHBvc3NpYmxlIGZvciBubyBhdHRyaWJ1dGUgdG8g
aGF2ZSBhIAotICAgICAgIGRpdmlzb3Igb2YgMCwgbWVhbmluZyB0aGF0IGFsbCBhdHRyaWJ1dGVz
IGFyZSBpbnN0YW5jZWQgYW5kIG5vbmUgb2YKLSAgICAgICB0aGVtIGFyZSByZWd1bGFybHkgaW5k
ZXhlZC4gVGhpcyBpbiB0dXJuIG1lYW5zIGVhY2ggaW5zdGFuY2UgY2FuIG9ubHkKLSAgICAgICBo
YXZlIGEgc2luZ2xlIHBvc2l0aW9uIGVsZW1lbnQsIGFuZCBzbyBpdCBvbmx5IGFjdHVhbGx5IHJl
bmRlcnMKLSAgICAgICBzb21ldGhpbmcgd2hlbiByZW5kZXJpbmcgcG9pbnQgcHJpbWl0aXZlcy4g
VGhpcyBpcyBub3QgYSB2ZXJ5IAotICAgICAgIG1lYW5pbmdmdWwgd2F5IG9mIHVzaW5nIGluc3Rh
bmNpbmcgKHdoaWNoIGlzIGxpa2VseSB3aHkgRDNEIHJlc3RyaWN0cwotICAgICAgIHN0cmVhbSAw
IHRvIGJlIGluZGV4ZWQgcmVndWxhcmx5IGZvciBwb3NpdGlvbiBkYXRhIGluIHRoZSBmaXJzdCBw
bGFjZSkuCi0gICAgICAgV2UgY291bGQgaW1wbGVtZW50IGl0IGJ5IGRyYXdpbmcgdGhlc2UgcG9p
bnRzIG9uZSBhdCBhIHRpbWUgKGVzc2VudGlhbGx5Ci0gICAgICAgZW11bGF0aW5nIGluc3RhbmNp
bmcpLCBidXQgaXQgd291bGQgbm90IGJlIHZlcnkgZWZmaWNpZW50IGFuZCB0aGVyZQotICAgICAg
IHNlZW1zIHRvIGJlIGxpdHRsZS10by1ubyB2YWx1ZSBpbiBkb2luZyBzby4KLQotICAgICAgIElm
IGFsbCBvZiB0aGUgZW5hYmxlZCB2ZXJ0ZXggYXR0cmlidXRlIGFycmF5cyB0aGF0IGFyZSBib3Vu
ZCB0byBhY3RpdmUKLSAgICAgICBnZW5lcmljIGF0dHJpYnV0ZXMgaW4gdGhlIHByb2dyYW0gaGF2
ZSBhIG5vbi16ZXJvIGRpdmlzb3IsIHRoZSBkcmF3Ci0gICAgICAgY2FsbCBzaG91bGQgcmV0dXJu
IElOVkFMSURfT1BFUkFUSU9OLgotCi0gICAgMykgRGlyZWN0M0QgOSBvbmx5IHN1cHBvcnRzIGlu
c3RhbmNpbmcgZm9yIERyYXdJbmRleGVkUHJpbWl0aXZlIHdoaWNoCi0gICAgICAgY29ycmVzcG9u
ZHMgdG8gRHJhd0VsZW1lbnRzSW5zdGFuY2VkLiAgU2hvdWxkIHdlIHN1cHBvcnQgCi0gICAgICAg
RHJhd0FycmF5c0luc3RhbmNlZD8KLQotICAgICAgIFJlc29sdmVkOiBZZXMKLSAgICAgICBEaXNj
dXNzaW9uOiBUaGlzIGNhbiBiZSBzdXBwb3J0ZWQgZWFzaWx5IGVub3VnaCBieSBzaW1wbHkgbWFu
dWZhY3R1cmluZwotICAgICAgIGEgbGluZWFyIGluZGV4IGJ1ZmZlciBvZiBzdWZmaWNpZW50IHNp
emUgYW5kIHVzaW5nIHRoYXQgdG8gZG8gaW5kZXhlZAotICAgICAgIEQzRDkgZHJhd2luZy4KLQot
ICAgIDQpIEhvdyBtdWNoIGRhdGEgaXMgbmVlZGVkIGluIGEgYnVmZmVyIGZvciBhbiBpbnN0YW5j
ZWQgYXR0cmlidXRlPwotCi0gICAgICAgUmVzb2x2ZWQ6IFdoZXJlIHN0cmlkZSBpcyB0aGUgdmFs
dWUgcGFzc2VkIHRvIFZlcnRleEF0dHJpYlBvaW50ZXI6Ci0KLSAgICAgICBpZiBzdHJpZGUgPiAw
Ci0gICAgICAgICBzaXplID0gc3RyaWRlICogY2VpbChwcmltY291bnQgLyBkaXZpc29yKTsKLSAg
ICAgICBlbHNlCi0gICAgICAgICBzaXplID0gZWxlbWVudHNpemUgKiBjZWlsKHByaW1jb3VudCAv
IGRpdmlzb3IpOwotCi1SZXZpc2lvbiBIaXN0b3J5Ci0KLSAgICAjMyBGZWJydWFyeSA4LCAyMDEy
IGRna29jaAotICAgICAgIC0gY2xhcmlmeSBJc3N1ZSAzIGFuZCB0aGUgZXJyb3IgY29uZGl0aW9u
IGZvciBubyBpbmRleGVkIGF0dHJpYnV0ZXMKLSAgICAjMiBKYW51YXJ5IDI0LCAyMDEyIGRna29j
aAotICAgICAgIC0gZml4IHR5cG9zLCBhZGQgY2xhcmlmaWNhdGlvbnMsIGFuZCBtb3JlIGVycm9y
cwotICAgICMxIEphbnVhcnkgMTcsIDIwMTIgZGdrb2NoCi0gICAgICAgLSBpbml0aWFsIEdMRVMy
IHZlcnNpb24gZnJvbSBBUkJfaW5zdGFuY2VkX2FycmF5cwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvZXh0ZW5zaW9ucy9BTkdMRV9wYWNrX3JldmVyc2Vfcm93X29yZGVyLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0FOR0xFX3BhY2tf
cmV2ZXJzZV9yb3dfb3JkZXIudHh0CShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9leHRlbnNpb25zL0FOR0xFX3BhY2tfcmV2ZXJzZV9yb3dfb3JkZXIudHh0CShu
b25leGlzdGVudCkKQEAgLTEsMTY4ICswLDAgQEAKLU5hbWUKLQotICAgIEFOR0xFX3BhY2tfcmV2
ZXJzZV9yb3dfb3JkZXIKLQotTmFtZSBTdHJpbmdzCi0KLSAgICBHTF9BTkdMRV9wYWNrX3JldmVy
c2Vfcm93X29yZGVyCi0KLUNvbnRhY3QKLQotICAgIERhbmllbCBLb2NoLCBUcmFuc0dhbWluZyAo
ZGFuaWVsICdhdCcgdHJhbnNnYW1pbmcuY29tKQotCi1Db250cmlidXRvcnMKLQotICAgIEJyaWFu
IFNhbG9tb24KLSAgICBEYW5pZWwgS29jaAotCi1TdGF0dXMKLQotICAgIEltcGxlbWVudGVkIGlu
IEFOR0xFIEVTMgotCi1WZXJzaW9uCi0KLSAgICBMYXN0IE1vZGlmaWVkIERhdGU6IEZlYnJ1YXJ5
IDIyLCAyMDExCi0gICAgQXV0aG9yIFJldmlzaW9uOiAyMgotCi1OdW1iZXIKLQotICAgIE9wZW5H
TCBFUyBFeHRlbnNpb24gIzExMAotCi1EZXBlbmRlbmNpZXMKLQotICAgIE9wZW5HTCAxLjUgb3Ig
T3BlbkdMIEVTIDEuMCBhcmUgcmVxdWlyZWQuCi0KLSAgICBTb21lIG9mIHRoZSBmdW5jdGlvbmFs
aXR5IG9mIHRoaXMgZXh0ZW5zaW9uIGlzIG5vdCBzdXBwb3J0ZWQKLSAgICB3aGVuIGltcGxlbWVu
dGVkIGFnYWluc3QgT3BlbkdMIEVTLgotCi0gICAgRVhUX3RleHR1cmVfcmcgaW50ZXJhY3RzIHdp
dGggdGhpcyBleHRlbnNpb24uCi0KLSAgICBUaGUgZXh0ZW5zaW9uIGlzIHdyaXR0ZW4gYWdhaW5z
dCB0aGUgT3BlbkdMIDMuMiBTcGVjaWZpY2F0aW9uCi0gICAgKENvcmUgUHJvZmlsZSkuCi0KLU92
ZXJ2aWV3Ci0KLSAgICBUaGlzIGV4dGVuc2lvbiBpbnRyb2R1Y2VzIGEgbWVjaGFuaXNtIHRvIGFs
bG93IHJldmVyc2luZyB0aGUgb3JkZXIKLSAgICBpbiB3aGljaCBpbWFnZSByb3dzIGFyZSB3cml0
dGVuIGludG8gYSBwYWNrIGRlc3RpbmF0aW9uLiBUaGlzCi0gICAgZWZmZWN0aXZlbHkgYWxsb3dz
IGFuIGFwcGxpY2F0aW9uIHRvIGZsaXAgdGhlIHJlc3VsdHMgb2YgYSBSZWFkUGl4ZWxzCi0gICAg
aW4gdGhlIHkgZGlyZWN0aW9uIG9wZXJhdGlvbiB3aXRob3V0IGhhdmluZyB0byByZW5kZXIgdXBz
aWRlIGRvd24uCi0KLSAgICBUaGUgY29vcmRpbmF0ZSBzeXN0ZW0gb2YgT3BlbkdMIGlzIHZlcnRp
Y2FsbHkgcmV2ZXJzZWQgaW4gY29tcGFyaXNvbiB0byBhCi0gICAgbnVtYmVyIG9mIG90aGVyIGdy
YXBoaWNzIHN5c3RlbXMgc3VjaCBhcyBuYXRpdmUgd2luZG93aW5nIEFQSXMuIEFwcGxpY2F0aW9u
cwotICAgIHRoYXQgcGVyZm9ybSBSZWFkUGl4ZWxzIG1heSBoYXZlIHRvIGVpdGhlciByZW5kZXIg
dG8gYW4gaW50ZXJtZWRpYXRlIGNvbG9yCi0gICAgYnVmZmVyIGJlZm9yZSBjYWxsaW5nIFJlYWRQ
aXhlbHMgb3IgcGVyZm9ybSBhIGZsaXAgaW4gc29mdHdhcmUgYWZ0ZXIKLSAgICBSZWFkUGl4ZWxz
LiBJbiBzb21lIHN5c3RlbXMgdGhlIEdMIGNhbiBwZXJmb3JtIHRoZSByb3cgcmV2ZXJzYWwgZHVy
aW5nCi0gICAgUmVhZFBpeGVscyB3aXRob3V0IGluY3VycmluZyBhZGRpdGlvbmFsIGNvc3QuCi0K
LUlQIFN0YXR1cwotCi0gICAgTm8ga25vd24gSVAgY2xhaW1zLgotCi1OZXcgUHJvY2VkdXJlcyBh
bmQgRnVuY3Rpb25zCi0KLSAgICBOb25lCi0KLU5ldyBUeXBlcwotCi0gICAgTm9uZQotCi1OZXcg
VG9rZW5zCi0KLSAgICBBY2NlcHRlZCBieSB0aGUgPHBuYW1lPiBwYXJhbWV0ZXIgb2YgUGl4ZWxT
dG9yZXtpZn0sIEdldEludGVnZXJ2KCksCi0gICAgR2V0Qm9vbGVhbnYoKSwgYW5kIEdldEZsb2F0
digpOgotCi0gICAgICAgIFBBQ0tfUkVWRVJTRV9ST1dfT1JERVJfQU5HTEUgICAgMHg5M0E0Ci0K
LUFkZGl0aW9ucyB0byBDaGFwdGVyIDMgb2YgdGhlIE9wZW5HTCAzLjIgU3BlY2lmaWNhdGlvbiAo
UmFzdGVyaXphdGlvbikKLQotICAgIEluIFNlY3Rpb24gNC4zLjEgKFJlYWRpbmcgUGl4ZWxzKSBh
ZGQgYSByb3cgdG8gdGFibGUgNC43OgotCi0gICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKwotICAgICAg
ICB8IFBhcmFtZXRlciBOYW1lICAgICAgICAgICAgICAgfCBUeXBlICAgIHwgSW5pdGlhbCBWYWx1
ZSB8IFZhbGlkIFJhbmdlIHwKLSAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rCi0gICAgICAgIHwgUEFD
S19SRVZFUlNFX1JPV19PUkRFUl9BTkdMRSB8IGJvb2xlYW4gfCBGQUxTRSAgICAgICAgIHwgVFJV
RS9GQUxTRSAgfAotICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSsKLQotICAgIEluIFNlY3Rpb24gNC4z
LjEgKFJlYWRpbmcgUGl4ZWxzKSBtb2RpZnkgdGhlIHNlY29uZCBwYXJhZ3JhcGggb2Ygc3Vic2Vj
dGlvbiAKLSAgICAiUGxhY2VtZW50IGluIFBpeGVsIFBhY2sgQnVmZmVyIG9yIENsaWVudCBNZW1v
cnkiIHRvIHJlYWQ6Ci0KLSAgICAgICAgV2hlbiBQQUNLX1JFVkVSU0VfUk9XX09SREVSX0FOR0xF
IGlzIEZBTFNFIGdyb3VwcyBvZiBlbGVtZW50cyBhcmUgcGxhY2VkCi0gICAgICAgIGluIG1lbW9y
eSBqdXN0IGFzIHRoZXkgYXJlIHRha2VuIGZyb20gbWVtb3J5IHdoZW4gdHJhbnNmZXJyaW5nIHBp
eGVsCi0gICAgICAgIHJlY3RhbmdsZXMgdG8gdGhlIEdMLiBUaGF0IGlzLCB0aGUgaXRoIGdyb3Vw
IG9mIHRoZSBqdGggcm93Ci0gICAgICAgIChjb3JyZXNwb25kaW5nIHRvIHRoZSBpdGggcGl4ZWwg
aW4gdGhlIGp0aCByb3cpIGlzIHBsYWNlZCBpbiBtZW1vcnkganVzdAotICAgICAgICB3aGVyZSB0
aGUgaXRoIGdyb3VwIG9mIHRoZSBqdGggcm93IHdvdWxkIGJlIHRha2VuIGZyb20gd2hlbiB0cmFu
c2ZlcnJpbmcKLSAgICAgICAgcGl4ZWxzLiBTZWUgVW5wYWNraW5nIHVuZGVyIHNlY3Rpb24gMy43
LjIuIFRoZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhhdAotICAgICAgICB0aGUgc3RvcmFnZSBtb2Rl
IHBhcmFtZXRlcnMgd2hvc2UgbmFtZXMgYmVnaW4gd2l0aCBQQUNLXyBhcmUgdXNlZAotICAgICAg
ICBpbnN0ZWFkIG9mIHRob3NlIHdob3NlIG5hbWVzIGJlZ2luIHdpdGggVU5QQUNLXy4gSWYgdGhl
IGZvcm1hdCBpcyBSRUQsCi0gICAgICAgIEdSRUVOLCBCTFVFLCBvciBBTFBIQSwgb25seSB0aGUg
Y29ycmVzcG9uZGluZyBzaW5nbGUgZWxlbWVudCBpcyB3cml0dGVuLgotICAgICAgICBMaWtld2lz
ZSBpZiB0aGUgZm9ybWF0IGlzIFJHLCBSR0IsIG9yIEJHUiwgb25seSB0aGUgY29ycmVzcG9uZGlu
ZyB0d28gb3IKLSAgICAgICAgdGhyZWUgZWxlbWVudHMgYXJlIHdyaXR0ZW4uIE90aGVyd2lzZSBh
bGwgdGhlIGVsZW1lbnRzIG9mIGVhY2ggZ3JvdXAgYXJlCi0gICAgICAgIHdyaXR0ZW4uIFdoZW4g
UEFDS19SRVZFUlNFX1JPV19PUkRFUl9BTkdMRSBpcyBUUlVFIHRoZSBvcmRlciBvZiB0aGUgcm93
cwotICAgICAgICBvZiBlbGVtZW50cyBpcyByZXZlcnNlZCBiZWZvcmUgdGhlIGRhdGEgaXMgcGFj
a2VkLiBUaGF0IGlzLCB0aGUgZWxlbWVudAotICAgICAgICBjb3JyZXNwb25kaW5nIHRvIHBpeGVs
ICh4LCB5ICsgaGVpZ2h0IC0gMSkgYmVjb21lcyB0aGUgZmlyc3QgZWxlbWVudAotICAgICAgICBw
YWNrZWQsIGZvbGxvd2VkIGJ5ICh4ICsgMSwgeSArIGhlaWdodCAtIDEpLCBldGMuIE90aGVyd2lz
ZSwgcGl4ZWwgZGF0YQotICAgICAgICBpcyBwYWNrZWQgaW4gdGhlIHNhbWUgbWFubmVyIGFzIHdo
ZW4gUEFDS19SRVZFUlNFX1JPV19PUkRFUl9BTkdMRSBpcwotICAgICAgICBGQUxTRS4KLQotQWRk
aXRpb25zIHRvIENoYXB0ZXIgNiBvZiB0aGUgT3BlbkdMIDMuMiBTcGVjaWZpY2F0aW9uIChTdGF0
ZSBhbmQgU3RhdGUgUmVxdWVzdHMpCi0KLSAgICBJbiBTZWN0aW9uIDYuMS40IGFkZCB0aGUgZm9s
bG93aW5nIHNlbnRlbmNlIHRvIHRoZSBmaWZ0aCBwYXJhZ3JhcGgKLSAgICAoYmVnaW5uaW5nIHdp
dGggIkZvciB0aHJlZS1kaW1lbnNpb25hbCBhbmQgdHdvLWRpbWVuc2lvbmFsIGFycmF5Ci0gICAg
dGV4dHVyZXMuLi4iKToKLSAgICAgICAgV2hlbiBQQUNLX1JFVkVSU0VfUk9XX09SREVSX0FOR0xF
IGlzIFRSVUUgdGhlIG9yZGVyIG9mIHJvd3Mgd2l0aGluCi0gICAgICAgIGVhY2ggaW1hZ2UgYXJl
IHJldmVyc2VkIHdpdGhvdXQgcmVvcmRlcmluZyB0aGUgaW1hZ2VzIHRoZW1zZWx2ZXMuCi0KLURl
cGVuZGVuY2llcyBvbiBPcGVuR0wgRVMKLQotICAgIElmIGltcGxlbWVudGVkIGZvciBPcGVuR0wg
RVMsIHRoaXMgZXh0ZW5zaW9uIGJlaGF2ZXMgYXMgc3BlY2lmaWVkLCBleGNlcHQ6Ci0KLSAgICAt
RGVsZXRlIGFsbCByZWZlcmVuY2VzIHRvIGZvcm1hdHMgUkVELCBHUkVFTiwgQkxVRSwgUkcsIGFu
ZCBCR1IuCi0KLSAgICAtVGhlIGxhbmd1YWdlIGFib3V0IGltYWdlIG9yZGVyIGluIFNlY3Rpb24g
Ni4xLjQgZG9lcyBub3QgYXBwbHkgYXMgT3BlbkdMIEVTCi0gICAgIGRvZXMgbm90IGhhdmUgR2V0
VGV4SW1hZ2UuCi0KLURlcGVuZGVuY2llcyBvbiBFWFRfdGV4dHVyZV9yZwotCi0gICAgSWYgRVhU
X3RleHR1cmVfcmcgaXMgcHJlc2VudCByZWluc2VydCBsYW5ndWFnZSBhYm91dCBmb3JtYXRzIFJF
RCBhbmQgUkcKLSAgICBpbnRvIHRoZSBPcGVuR0wgRVMgMi4wIHNwZWNpZmljYXRpb24uCi0KLUVy
cm9ycwotCi0gICAgTm9uZQotCi1OZXcgU3RhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbAotICAgIEdldCBWYWx1ZSAg
ICAgICAgICAgICAgICAgICAgICAgVHlwZSAgR2V0IENvbW1hbmQgICAgICBWYWx1ZSAgICBEZXNj
cmlwdGlvbiAgICAgICAgICAgICAgICAgICAgU2VjLgotICAgIC0tLS0tLS0tLSAgICAgICAgICAg
ICAgICAgICAgICAgLS0tLSAgLS0tLS0tLS0tLS0gICAgICAtLS0tLS0tICAtLS0tLS0tLS0tLSAg
ICAgICAgICAgICAgICAgICAgLS0tLQotICAgIFBBQ0tfUkVWRVJTRV9ST1dfT1JERVJfQU5HTEUg
ICAgQiAgICAgR2V0SW50ZWdlcnYgICAgICBGQUxTRSAgICBQaXhlbCBwYWNrIHJvdyBvcmRlciBy
ZXZlcnNhbCAgNC4zLjEKLQotTmV3IEltcGxlbWVudGF0aW9uIERlcGVuZGVudCBTdGF0ZQotCi0g
ICAgTm9uZQotCi1Jc3N1ZXMKLQotICAgIE5vbmUKLQotU2FtcGxlIENvZGUKLQotICAgIC8qIEFs
bG9jYXRlIHNwYWNlIHRvIGhvbGQgdGhlIHBpeGVsIGRhdGEgKi8KLSAgICBjb25zdCBHTHZvaWQq
IHBpeGVscyA9IG1hbGxvYyh3aWR0aCAqIGhlaWdodCAqIDQpOwotCi0gICAgLyogQmluZCB0aGUg
ZnJhbWVidWZmZXIgb2JqZWN0IHRvIGJlIHJlYWQgKi8KLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihH
TF9SRUFEX0ZSQU1FQlVGRkVSLCBmcmFtZWJ1ZmZlcik7Ci0KLSAgICAvKiBFbmFibGUgcm93IG9y
ZGVyIHJldmVyc2FsICovCi0gICAgZ2xQaXhlbFN0b3JlKEdMX1BBQ0tfUkVWRVJTRV9ST1dfT1JE
RVJfQU5HTEUsIFRSVUUpOwotCi0gICAgLyogVGhlIHBpeGVsIGRhdGEgc3RvcmVkIGluIHBpeGVs
cyB3aWxsIGJlIGluIHRvcC1kb3duIG9yZGVyLCByZWFkeSBmb3IKLSAgICAgKiB1c2Ugd2l0aCBh
IHdpbmRvd2luZyBzeXN0ZW0gQVBJIHRoYXQgZXhwZWN0cyB0aGlzIG9yZGVyLgotICAgICAqLwot
ICAgIGdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBHTF9SR0JBLCBHTF9VTlNJR05F
RF9CWVRFLCBwaXhlbHMpOwotCi1SZXZpc2lvbiBIaXN0b3J5Ci0KLSAgICBSZXZpc2lvbiAxLCAy
MDExLzExLzIyIChCcmlhbiBTYWxvbW9uKQotICAgICAgLSBGaXJzdCB2ZXJzaW9uCi0gICAgUmV2
aXNpb24gMiwgMjAxMi8wMi8yMiAoZGdrb2NoKQotICAgICAgLSBwcmVwYXJlIGZvciBwdWJsaXNo
aW5nCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0FOR0xFX3BsYXRm
b3JtX2FuZ2xlLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRl
bnNpb25zL0FOR0xFX3BsYXRmb3JtX2FuZ2xlLnR4dAkocmV2aXNpb24gMjA3ODA0KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9BTkdMRV9wbGF0Zm9ybV9hbmdsZS50eHQJ
KG5vbmV4aXN0ZW50KQpAQCAtMSwxMjcgKzAsMCBAQAotTmFtZQotCi0gICAgQU5HTEVfcGxhdGZv
cm1fYW5nbGUKLQotTmFtZSBTdHJpbmdzCi0KLSAgICBFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGUK
LQotQ29udHJpYnV0b3JzCi0KLSAgICBTY290dCBHcmFoYW0sIEdvb2dsZQotICAgIFNoYW5ub24g
V29vZHMsIEdvb2dsZQotICAgIEdlb2ZmIExhbmcsIEdvb2dsZQotCi1Db250YWN0cwotCi0gICAg
U2NvdHQgR3JhaGFtLCBHb29nbGUgKHNjb3R0bWcgJ2F0JyBnb29nbGUgJ2RvdCcgY29tKQotCi1T
dGF0dXMKLQotICAgIERyYWZ0Ci0KLVZlcnNpb24KLQotICAgIFZlcnNpb24gMywgMjAxNC0xMC0y
MAotCi1OdW1iZXIKLQotICAgIEVHTCBFeHRlbnNpb24gWFhYCi0KLUV4dGVuc2lvbiBUeXBlCi0K
LSAgICBFR0wgY2xpZW50IGV4dGVuc2lvbgotCi1EZXBlbmRlbmNpZXMKLQotICAgIFJlcXVpcmVz
IEVHTF9FWFRfY2xpZW50X2V4dGVuc2lvbnMgdG8gcXVlcnkgaXRzIGV4aXN0ZW5jZSB3aXRob3V0
Ci0gICAgYSBkaXNwbGF5LgotCi0gICAgUmVxdWlyZXMgRUdMX0VYVF9wbGF0Zm9ybV9iYXNlLgot
Ci0gICAgVGhpcyBleHRlbnNpb24gaXMgd3JpdHRlbiBhZ2FpbnN0IHRoZSB3b3JkaW5nIG9mIHZl
cnNpb24gOSBvZiB0aGUKLSAgICBFR0xfRVhUX3BsYXRmb3JtX2Jhc2Ugc3BlY2lmaWNhdGlvbi4K
LQotICAgIEFOR0xFX3BsYXRmb3JtX2FuZ2xlX2QzZCBhZmZlY3RzIHRoZSBkZWZpbml0aW9uIG9m
IHRoaXMgZXh0ZW5zaW9uLgotICAgIEFOR0xFX3BsYXRmb3JtX2FuZ2xlX29wZW5nbCBhZmZlY3Rz
IHRoZSBkZWZpbml0aW9uIG9mIHRoaXMgZXh0ZW5zaW9uLgotCi1PdmVydmlldwotCi0gICAgVGhp
cyBleHRlbnNpb24gZGVmaW5lcyBob3cgdG8gY3JlYXRlIEVHTCByZXNvdXJjZXMgZnJvbSBuYXRp
dmUgcmVzb3VyY2VzCi0gICAgdXNpbmcgdGhlIGZ1bmN0aW9ucyBkZWZpbmVkIGJ5IEVHTF9FWFRf
cGxhdGZvcm1fYmFzZS4KLQotTmV3IFR5cGVzCi0KLSAgICBOb25lCi0KLU5ldyBQcm9jZWR1cmVz
IGFuZCBGdW5jdGlvbnMKLQotICAgIE5vbmUKLQotTmV3IFRva2VucwotCi0gICAgQWNjZXB0ZWQg
YXMgdGhlIDxwbGF0Zm9ybT4gYXJndW1lbnQgb2YgZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUOgot
Ci0gICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9BTkdMRSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4MzIwMgotCi0gICAgQWNjZXB0ZWQgYXMgYW4gYXR0cmlidXRlIG5hbWUgaW4gdGhlIDxh
dHRyaWJfbGlzdD4gYXJndW1lbnQgb2YKLSAgICBlZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQ6Ci0K
LSAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfQU5HTEUgICAgICAgICAgICAgICAgICAg
ICAgMHgzMjAzCi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9NQVhfVkVSU0lPTl9NQUpPUl9B
TkdMRSAgICAgICAgIDB4MzIwNAotICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfTUFYX1ZFUlNJ
T05fTUlOT1JfQU5HTEUgICAgICAgICAweDMyMDUKLQotICAgIEFjY2VwdGVkIGFzIHZhbHVlcyBm
b3IgdGhlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0FOR0xFIGF0dHJpYnV0ZToKLQotICAgICAg
ICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9ERUZBVUxUX0FOR0xFICAgICAgICAgICAgICAweDMy
MDYKLQotQWRkaXRpb25zIHRvIHRoZSBFR0wgU3BlY2lmaWNhdGlvbgotCi0gICAgTm9uZS4KLQot
TmV3IEJlaGF2aW9yCi0KLSAgICBUbyBkZXRlcm1pbmUgaWYgdGhlIEVHTCBpbXBsZW1lbnRhdGlv
biBzdXBwb3J0cyB0aGlzIGV4dGVuc2lvbiwgY2xpZW50cwotICAgIHNob3VsZCBxdWVyeSB0aGUg
RUdMX0VYVEVOU0lPTlMgc3RyaW5nIG9mIEVHTF9OT19ESVNQTEFZLgotCi0gICAgVG8gb2J0YWlu
IGFuIEVHTERpc3BsYXkgYmFja2VkIGJ5IGEgQU5HTEUgZGlzcGxheSwgY2FsbAotICAgIGVnbEdl
dFBsYXRmb3JtRGlzcGxheUVYVCB3aXRoIDxwbGF0Zm9ybT4gc2V0IHRvIEVHTF9QTEFURk9STV9B
TkdMRV9BTkdMRS4KLQotICAgIFRoZSA8bmF0aXZlX2Rpc3BsYXk+IHBhcmFtZXRlciBpcyBvZiB0
eXBlIEVHTE5hdGl2ZURpc3BsYXlUeXBlLiBJZgotICAgIDxuYXRpdmVfZGlzcGxheT4gaXMgRUdM
X0RFRkFVTFRfRElTUExBWSBhIGRlZmF1bHQgZGlzcGxheSBpcyByZXR1cm5lZC4KLSAgICBNdWx0
aXBsZSBjYWxscyB3aXRoIHRoZSBzYW1lIDxuYXRpdmVfZGlzcGxheT4gd2lsbCByZXR1cm4gdGhl
IHNhbWUKLSAgICBFR0xEaXNwbGF5IGhhbmRsZS4gSWYgPHBsYXRmb3JtPiBpcyBzZXQgdG8gRUdM
X1BMQVRGT1JNX0FOR0xFX0FOR0xFIGFuZAotICAgIHRoZSByZXR1cm5lZCBkaXNwbGF5IGlzIGlu
IGFuIHVuaW5pdGlhbGl6ZWQgc3RhdGUsIGl0cyBhdHRyaWJ1dGVzIGFyZQotICAgIG92ZXJ3cml0
dGVuIGJ5IHRob3NlIHByb3ZpZGVkIGluIHRoZSA8YXR0cmliX2xpc3Q+LCBpZiBhbnkuCi0KLSAg
ICBJZiBubyA8YXR0cmliX2xpc3Q+IGlzIHNwZWNpZmllZCwgdGhlIHZhbHVlIG9mCi0gICAgRUdM
X1BMQVRGT1JNX0FOR0xFX1RZUEVfQU5HTEUgaXMgaW1wbGljaXRseSBzZXQgdG8KLSAgICBFR0xf
UExBVEZPUk1fQU5HTEVfVFlQRV9ERUZBVUxUX0FOR0xFLgotCi0gICAgSWYgbm8gPGF0dHJpYl9s
aXN0PiBpcyBzcGVjaWZpZWQsIHRoZSB2YWx1ZXMgb2YKLSAgICBFR0xfUExBVEZPUk1fQU5HTEVf
TUFYX1ZFUlNJT05fTUFKT1JfQU5HTEUgYW5kCi0gICAgRUdMX1BMQVRGT1JNX0FOR0xFX01BWF9W
RVJTSU9OX01JTk9SX0FOR0xFIGFyZSBpbXBsaWNpdGx5IHNldCB0bwotICAgIEVHTF9ET05UX0NB
UkUuCi0KLSAgICBJZiBFR0xfUExBVEZPUk1fQU5HTEVfTUFYX1ZFUlNJT05fTUFKT1JfQU5HTEUg
aXMgc2V0IHRvIEVHTF9ET05UX0NBUkUgYW5kCi0gICAgRUdMX1BMQVRGT1JNX0FOR0xFX01BWF9W
RVJTSU9OX01JTk9SX0FOR0xFIGlzIG5vdCBzZXQgdG8gRUdMX0RPTlRfQ0FSRSwKLSAgICBhbiBF
R0xfQkFEX0FUVFJJQlVURSBlcnJvciBpcyBnZW5lcmF0ZWQgYW5kIEVHTF9OT19ESVNQTEFZIGlz
IHJldHVybmVkLgotCi0gICAgSWYgbm8gZGlzcGxheSBtYXRjaGluZyB0aGUgcmVxdWVzdGVkIDxu
YXRpdmVfZGlzcGxheT4gb3Igb2YgdGhlIHR5cGUKLSAgICByZXF1ZXN0ZWQgYnkgdGhlIHZhbHVl
IG9mIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0FOR0xFIGlzIGF2YWlsYWJsZSwKLSAgICBFR0xf
Tk9fRElTUExBWSBpcyByZXR1cm5lZC4gTm8gZXJyb3IgY29uZGl0aW9uIGlzIHJhaXNlZCBpbiB0
aGlzIGNhc2UuCi0KLUlzc3VlcwotCi0gICAgTm9uZQotCi1SZXZpc2lvbiBIaXN0b3J5Ci0KLSAg
ICBWZXJzaW9uIDEsIDIwMTQtMDItMDQgKFNjb3R0IEdyYWhhbSkKLSAgICAgIC0gSW5pdGlhbCBk
cmFmdAotICAgIFZlcnNpb24gMiwgMjAxNC0wNi0wNSAoR2VvZmYgTGFuZykKLSAgICAgIC0gUmVu
YW1lIGV4dGVuc2lvbiBmcm9tIEFOR0xFX3BsYXRmb3JtX2FuZ2xlX2QzZCB0byBBTkdMRV9wbGF0
Zm9ybV9hbmdsZS4KLSAgICAgIC0gQWRkIHN1Yi1leHRlbnNpb25zIGZvciBzcGVjaWZpYyBwbGF0
Zm9ybXMuCi0gICAgVmVyc2lvbiAzLCAyMDE0LTEwLTIwIChHZW9mZiBMYW5nKQotICAgICAgLSBB
ZGQgYXR0cmlidXRlcyB0byByZXF1ZXN0IHNwZWNpZmljIGZlYXR1cmUgbGV2ZWwgYW5kIGNvbnRl
eHQgdmVyc2lvbnMuCi0gICAgICAtIE1vdmVkIGRlc2NyaXB0aW9ucyBvZiBwbGF0Zm9ybXMgdG8g
Y2hpbGQgZXh0ZW5zaW9uIHNwZWNzLgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0
ZW5zaW9ucy9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9kM2QudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvQU5HTEVfcGxhdGZvcm1fYW5nbGVfZDNkLnR4
dAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9u
cy9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9kM2QudHh0CShub25leGlzdGVudCkKQEAgLTEsMTQwICsw
LDAgQEAKLU5hbWUKLQotICAgIEFOR0xFX3BsYXRmb3JtX2FuZ2xlX2QzZAotCi1OYW1lIFN0cmlu
Z3MKLQotICAgIEVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9kM2QKLQotQ29udHJpYnV0b3JzCi0K
LSAgICBTaGFubm9uIFdvb2RzLCBHb29nbGUKLSAgICBHZW9mZiBMYW5nLCBHb29nbGUKLQotQ29u
dGFjdHMKLQotICAgIEdlb2ZmIExhbmcsIEdvb2dsZSAoZ2VvZmZsYW5nICdhdCcgY2hyb21pdW0g
J2RvdCcgb3JnKQotCi1TdGF0dXMKLQotICAgIERyYWZ0Ci0KLVZlcnNpb24KLQotICAgIFZlcnNp
b24gMywgMjAxNC0xMS0yNgotCi1OdW1iZXIKLQotICAgIEVHTCBFeHRlbnNpb24gWFhYCi0KLUV4
dGVuc2lvbiBUeXBlCi0KLSAgICBFR0wgY2xpZW50IGV4dGVuc2lvbgotCi1EZXBlbmRlbmNpZXMK
LQotICAgIFJlcXVpcmVzIEFOR0xFX3BsYXRmb3JtX2FuZ2xlLgotCi1PdmVydmlldwotCi0gICAg
VGhpcyBleHRlbnNpb24gZW5hYmxlcyBzZWxlY3Rpb24gb2YgRDNEIGRpc3BsYXkgdHlwZXMuCi0K
LU5ldyBUeXBlcwotCi0gICAgTm9uZQotCi1OZXcgUHJvY2VkdXJlcyBhbmQgRnVuY3Rpb25zCi0K
LSAgICBOb25lCi0KLU5ldyBUb2tlbnMKLQotICAgIEFjY2VwdGVkIGFzIHZhbHVlcyBmb3IgdGhl
IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0FOR0xFIGF0dHJpYnV0ZToKLQotICAgICAgICBFR0xf
UExBVEZPUk1fQU5HTEVfVFlQRV9EM0Q5X0FOR0xFICAgICAgICAgICAgICAgICAweDMyMDcKLSAg
ICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUgICAgICAgICAgICAgICAg
MHgzMjA4Ci0KLSAgICBBY2NlcHRlZCBhcyBhbiBhdHRyaWJ1dGUgbmFtZSBpbiB0aGUgPGF0dHJp
Yl9saXN0PiBhcmd1bWVudCBvZgotICAgIGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVDoKLQotICAg
ICAgICBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfQU5HTEUgICAgICAgICAgICAgICAw
eDMyMDkKLSAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0VOQUJMRV9BVVRPTUFUSUNfVFJJTV9B
TkdMRSAgICAgMHgzMjBGCi0KLSAgICBBY2NlcHRlZCBhcyB2YWx1ZXMgZm9yIHRoZSBFR0xfUExB
VEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfQU5HTEUgYXR0cmlidXRlOgotCi0gICAgICAgIEVHTF9Q
TEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9IQVJEV0FSRV9BTkdMRSAgICAgIDB4MzIwQQotICAg
ICAgICBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfV0FSUF9BTkdMRSAgICAgICAgICAw
eDMyMEIKLSAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX1JFRkVSRU5DRV9B
TkdMRSAgICAgMHgzMjBDCi0KLUFkZGl0aW9ucyB0byB0aGUgRUdMIFNwZWNpZmljYXRpb24KLQot
ICAgIE5vbmUuCi0KLU5ldyBCZWhhdmlvcgotCi0gICAgVG8gcmVxdWVzdCBhIGRpc3BsYXkgdGhh
dCBpcyBiYWNrZWQgYnkgRGlyZWN0M0QgcmVzb3VyY2VzLCB0aGUgdmFsdWUgb2YKLSAgICBFR0xf
UExBVEZPUk1fQU5HTEVfVFlQRV9BTkdMRSBzaG91bGQgYmU6Ci0gICAgICAtIEVHTF9QTEFURk9S
TV9BTkdMRV9UWVBFX0QzRDlfQU5HTEUgZm9yIGEgRDNEOSBkaXNwbGF5LAotICAgICAgLSBFR0xf
UExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSBmb3IgYSBEM0QxMSBkaXNwbGF5LgotCi0g
ICAgVG8gcmVxdWVzdCBhIHNwZWNpZmljIG1heGltdW0gZmVhdHVyZSBsZXZlbCB0byBiZSB1c2Vk
IGJ5IHRoZSBEM0QxMQotICAgIGRpc3BsYXksIEVHTF9QTEFURk9STV9BTkdMRV9NQVhfVkVSU0lP
Tl9NQUpPUl9BTkdMRSBhbmQKLSAgICBFR0xfUExBVEZPUk1fQU5HTEVfTUFYX1ZFUlNJT05fTUlO
T1JfQU5HTEUgY2FuIGJlIHVzZWQuICBPbmx5IGZlYXR1cmUKLSAgICBsZXZlbHMgdGhhdCBhcmUg
Y2FwYWJsZSBvZiBzdXBwb3J0aW5nIGFsbCBhdmFpbGFibGUgY2xpZW50IEFQSXMgd2lsbCBiZQot
ICAgIHVzZWQgdW5sZXNzIGV4cGxpY2l0bHkgcmVxdWVzdGVkLgotICAgIEVHTF9QTEFURk9STV9B
TkdMRV9NQVhfVkVSU0lPTl9NQUpPUl9BTkdMRSBhbmQKLSAgICBFR0xfUExBVEZPUk1fQU5HTEVf
TUFYX1ZFUlNJT05fTUlOT1JfQU5HTEUgaGF2ZSBubyBlZmZlY3Qgd2hlbiByZXF1ZXN0aW5nCi0g
ICAgYSBEM0Q5IGRpc3BsYXkuCi0KLSAgICBJZiBubyA8YXR0cmliX2xpc3Q+IGlzIHNwZWNpZmll
ZCB0byBlZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQsIHRoZSB2YWx1ZSBvZgotICAgIEVHTF9QTEFU
Rk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9BTkdMRSBpcyBpbXBsaWNpdGx5IHNldCB0bwotICAgIEVH
TF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9IQVJEV0FSRV9BTkdMRS4gT3RoZXJ3aXNlLCB0
aGUgdmFsdWUgb2YKLSAgICBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfQU5HTEUgc2hv
dWxkIGJlOgotICAgICAgLSBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfSEFSRFdBUkVf
QU5HTEUgdG8gcmVxdWVzdCBhIGhhcmR3YXJlCi0gICAgICAgIGFjY2VsZXJhdGVkIGRldmljZS4K
LSAgICAgIC0gRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX1dBUlBfQU5HTEUgdG8gcmVx
dWVzdCBhbgotICAgICAgICBvcHRpbWl6ZWQgc29mdHdhcmUgcmFzdGVyaXplci4KLSAgICAgIC0g
RUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX1JFRkVSRU5DRV9BTkdMRSB0byByZXF1ZXN0
IGEKLSAgICAgICAgcmVmZXJlbmNlIHJhc3Rlcml6ZXIuCi0KLSAgICBJZiBFR0xfUExBVEZPUk1f
QU5HTEVfVFlQRV9BTkdMRSBpcyBzZXQgdG8KLSAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9E
M0QxMV9BTkdMRSwgdGhlIGRpc3BsYXkgY2FuIGF1dG9tYXRpY2FsbHkgcmVzcG9uZAotICAgIHRv
IHRyaW0gZXZlbnRzIGZyb20gdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBJZiB0aGUgYXR0cmlidXRl
Ci0gICAgRUdMX1BMQVRGT1JNX0FOR0xFX0VOQUJMRV9BVVRPTUFUSUNfVFJJTV9BTkdMRSBpcyB1
bnNwZWNpZmllZCwgaXQgaXMKLSAgICBpbXBsaWNpdGx5IHNldCB0byBFR0xfRkFMU0UuICBPdGhl
cndpc2UsIHRoZSB2YWx1ZSBvZgotICAgIEVHTF9QTEFURk9STV9BTkdMRV9FTkFCTEVfQVVUT01B
VElDX1RSSU1fQU5HTEUgc2hvdWxkIGJlIEVHTF9UUlVFIG9yCi0gICAgRUdMX0ZBTFNFLgotCi0g
ICAgSWYgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0FOR0xFIGlzIHNldCB0bwotICAg
IEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9XQVJQX0FOR0xFIGFuZCBFR0xfUExBVEZP
Uk1fQU5HTEVfVFlQRV9BTkdMRQotICAgIGlzIG5vdCBzZXQgdG8gRUdMX1BMQVRGT1JNX0FOR0xF
X1RZUEVfRDNEMTFfQU5HTEUsIGFuIEVHTF9CQURfQVRUUklCVVRFCi0gICAgZXJyb3IgaXMgZ2Vu
ZXJhdGVkIGFuZCBFR0xfTk9fRElTUExBWSBpcyByZXR1cm5lZC4KLQotICAgIElmIEVHTF9QTEFU
Rk9STV9BTkdMRV9FTkFCTEVfQVVUT01BVElDX1RSSU1fQU5HTEUgaXMgc3BlY2lmaWVkIHdoZW4K
LSAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9BTkdMRSBpcyBub3QgRUdMX1BMQVRGT1JNX0FO
R0xFX1RZUEVfRDNEMTFfQU5HTEUKLSAgICBvciBhIHZhbHVlIG90aGVyIHRoYW4gRUdMX1RSVUUg
b3IgRUdMX0ZBTFNFIGlzIHVzZWQsIGFuIEVHTF9CQURfQVRUUklCVVRFCi0gICAgZXJyb3IgaXMg
Z2VuZXJhdGVkIGFuZCBFR0xfTk9fRElTUExBWSBpcyByZXR1cm5lZC4KLQotSXNzdWVzCi0KLSAg
ICAxKSBTb21lIG11bHRpdGhyZWFkZWQgYXBwbGljYXRpb25zIGNhbiBjcmFzaCBpZiB0aGUgZGlz
cGxheSBhdXRvbWF0aWNhbGx5Ci0gICAgICAgcmVzcG9uZHMgdG8gdHJpbSBldmVudHMgd2hpbGUg
dGhlIGFwcGxpY2F0aW9uIGlzIHJlbmRlcmluZyBmcm9tIGFub3RoZXIKLSAgICAgICB0aHJlYWQu
Ci0KLSAgICAgICBSRVNPTFZFRDogQWRkZWQgYW4gRUdMX1BMQVRGT1JNX0FOR0xFX0VOQUJMRV9B
VVRPTUFUSUNfVFJJTV9BTkdMRQotICAgICAgIGVudW0gdG8gc3BlY2lmeSBpZiB0aGUgZGlzcGxh
eSBzaG91bGQgcmVzcG9uZCB0byB0cmltIGV2ZW50cy4KLSAgICAgICBBcHBsaWNhdGlvbnMgdGhh
dCBkbyBtdWx0aXRocmVhZGVkIHJlbmRlcmluZyBzaG91bGQgZGlzYWJsZSBhdXRvbWF0aWMKLSAg
ICAgICB0cmltIGFuZCBoYW5kbGUgdGhlIHRyaW0gZXZlbnRzIG9uIHRoZWlyIG93bi4KLQotUmV2
aXNpb24gSGlzdG9yeQotCi0gICAgVmVyc2lvbiAxLCAyMDE0LTA2LTA1IChHZW9mZiBMYW5nKQot
ICAgICAgLSBJbml0aWFsIGRyYWZ0Ci0gICAgVmVyc2lvbiAyLCAyMDE0LTEwLTI3IChHZW9mZiBM
YW5nKQotICAgICAgLSBTZXBhcmF0ZSBXQVJQIGRldmljZXMgaW50byBhIG5ldyBhdHRyaWJ1dGUg
aW5zdGVhZCBvZiBhIHBsYXRmb3JtIHR5cGUuCi0gICAgICAtIE1vdmVkIGRlc2NyaXB0aW9ucyBv
ZiBwbGF0Zm9ybXMgYW5kIG1ham9yL21pbm9yIHZlcnNpb25zIGZyb20KLSAgICAgICAgRUdMX0FO
R0xFX3BsYXRmb3JtX2FuZ2xlIHNwZWMgdG8gRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlX2QzZC4K
LSAgICBWZXJzaW9uIDMsIDIwMTQtMTEtMjYgKEdlb2ZmIExhbmcpCi0gICAgICAtIFJlbW92ZSB0
aGUgVVNFX1dBUlAgYm9vbCBhbmQgcmVwbGFjZSBpdCB3aXRoIGEgREVWSUNFX1RZUEUgZW51bS4K
LSAgICBWZXJzaW9uIDQsIDIwMTUtMDMtMTEgKEdlb2ZmIExhbmcpCi0gICAgICAtIEFkZCB0aGUg
RU5BQkxFX0FVVE9NQVRJQ19UUklNIGVudW0uCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9leHRlbnNpb25zL0FOR0xFX3BsYXRmb3JtX2FuZ2xlX29wZW5nbC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9BTkdMRV9wbGF0Zm9ybV9hbmds
ZV9vcGVuZ2wudHh0CShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9leHRlbnNpb25zL0FOR0xFX3BsYXRmb3JtX2FuZ2xlX29wZW5nbC50eHQJKG5vbmV4aXN0ZW50
KQpAQCAtMSw4NCArMCwwIEBACi1OYW1lCi0KLSAgICBBTkdMRV9wbGF0Zm9ybV9hbmdsZV9vcGVu
Z2wKLQotTmFtZSBTdHJpbmdzCi0KLSAgICBFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfb3Blbmds
Ci0KLUNvbnRyaWJ1dG9ycwotCi0gICAgU2hhbm5vbiBXb29kcywgR29vZ2xlCi0gICAgR2VvZmYg
TGFuZywgR29vZ2xlCi0KLUNvbnRhY3RzCi0KLSAgICBHZW9mZiBMYW5nLCBHb29nbGUgKGdlb2Zm
bGFuZyAnYXQnIGNocm9taXVtICdkb3QnIG9yZykKLQotU3RhdHVzCi0KLSAgICBEcmFmdAotCi1W
ZXJzaW9uCi0KLSAgICBWZXJzaW9uIDMsIDIwMTQtMTEtMjYKLQotTnVtYmVyCi0KLSAgICBFR0wg
RXh0ZW5zaW9uIFhYWAotCi1FeHRlbnNpb24gVHlwZQotCi0gICAgRUdMIGNsaWVudCBleHRlbnNp
b24KLQotRGVwZW5kZW5jaWVzCi0KLSAgICBSZXF1aXJlcyBBTkdMRV9wbGF0Zm9ybV9hbmdsZS4K
LQotT3ZlcnZpZXcKLQotICAgIFRoaXMgZXh0ZW5zaW9uIGVuYWJsZXMgc2VsZWN0aW9uIG9mIE9w
ZW5HTCBkaXNwbGF5IHR5cGVzLgotCi1OZXcgVHlwZXMKLQotICAgIE5vbmUKLQotTmV3IFByb2Nl
ZHVyZXMgYW5kIEZ1bmN0aW9ucwotCi0gICAgTm9uZQotCi1OZXcgVG9rZW5zCi0KLSAgICBBY2Nl
cHRlZCBhcyB2YWx1ZXMgZm9yIHRoZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9BTkdMRSBhdHRy
aWJ1dGU6Ci0KLSAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFICAg
ICAgICAgICAgICAgMHgzMjBECi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5H
TEVTX0FOR0xFICAgICAgICAgICAgIDB4MzIwRQotCi1BZGRpdGlvbnMgdG8gdGhlIEVHTCBTcGVj
aWZpY2F0aW9uCi0KLSAgICBOb25lLgotCi1OZXcgQmVoYXZpb3IKLQotICAgIFRvIHJlcXVlc3Qg
YSBkaXNwbGF5IHRoYXQgdHJhbnNsYXRlcyB0byBPcGVuR0wgb3IgT3BlbkdMIEVTLCB0aGUgdmFs
dWUgb2YKLSAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9BTkdMRSBzaG91bGQgYmU6Ci0gICAg
ICAtIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSBmb3IgYW4gT3BlbkdMIGRp
c3BsYXksCi0gICAgICAtIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTEVTX0FOR0xFIGZv
ciBhIG5hdGl2ZSBPcGVuR0wgRVMgZGlzcGxheS4KLQotICAgIFRvIHJlcXVlc3QgYSBzcGVjaWZp
YyBtYXhpbXVtIGNvbnRleHQgdmVyc2lvbiB0byB1c2UgZm9yIHRoZSB1bmRlcmx5aW5nCi0gICAg
QVBJLCBFR0xfUExBVEZPUk1fQU5HTEVfTUFYX1ZFUlNJT05fTUFKT1JfQU5HTEUgYW5kCi0gICAg
RUdMX1BMQVRGT1JNX0FOR0xFX01BWF9WRVJTSU9OX01JTk9SX0FOR0xFIGNhbiBiZSB1c2VkLgot
Ci1Jc3N1ZXMKLQotICAgIE5vbmUKLQotUmV2aXNpb24gSGlzdG9yeQotCi0gICAgVmVyc2lvbiAx
LCAyMDE0LTA2LTA1IChHZW9mZiBMYW5nKQotICAgICAgLSBJbml0aWFsIGRyYWZ0Ci0gICAgVmVy
c2lvbiAyLCAyMDE0LTEwLTI3IChHZW9mZiBMYW5nKQotICAgICAgLSBNb3ZlZCBkZXNjcmlwdGlv
bnMgb2YgcGxhdGZvcm1zIGFuZCBtYWpvci9taW5vciB2ZXJzaW9ucyBmcm9tCi0gICAgICAgIEVH
TF9BTkdMRV9wbGF0Zm9ybV9hbmdsZSBzcGVjIHRvIEVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9v
cGVuZ2wuCi0gICAgVmVyc2lvbiAzLCAyMDE0LTExLTI2IChHZW9mZiBMYW5nKQotICAgICAgLSBV
cGRhdGVkIGVudW0gdmFsdWVzLgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5z
aW9ucy9BTkdMRV9wcm9ncmFtX2JpbmFyeS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9BTkdMRV9wcm9ncmFtX2JpbmFyeS50eHQJKHJldmlzaW9u
IDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvQU5HTEVfcHJv
Z3JhbV9iaW5hcnkudHh0CShub25leGlzdGVudCkKQEAgLTEsOTQgKzAsMCBAQAotTmFtZQotCi0g
ICAgQU5HTEVfcHJvZ3JhbV9iaW5hcnkKLQotTmFtZSBTdHJpbmdzCi0KLSAgICBHTF9BTkdMRV9w
cm9ncmFtX2JpbmFyeQotCi1Db250cmlidXRvcnMKLQotICAgIEFsYXN0YWlyIFBhdHJpY2ssIEdv
b2dsZSBJbmMuCi0gICAgRGFuaWVsIEtvY2gsIFRyYW5zR2FtaW5nIEluYy4KLQotQ29udGFjdAot
Ci0gICAgQWxhc3RhaXIgUGF0cmljaywgR29vZ2xlIEluYy4gKGFwYXRyaWNrICdhdCcgZ29vZ2xl
ICdkb3QnIGNvbSkKLQotU3RhdHVzCi0KLSAgICBVbmRlciBkZXZlbG9wbWVudC4KLQotVmVyc2lv
bgotCi0gICAgTGFzdCBNb2RpZmVkIERhdGU6IEp1bmUgNiwgMjAxMgotICAgIFJldmlzaW9uOiAj
MQotCi1OdW1iZXIKLQotICAgIFRCRAotCi1EZXBlbmRlbmNpZXMKLQotICAgIE9wZW5HTCBFUyAy
LjAgaXMgcmVxdWlyZWQuCi0gICAgT0VTX2dldF9wcm9ncmFtX2JpbmFyeSBpcyByZXF1aXJlZC4K
LSAgICBUaGlzIGV4dGVuc2lvbiBpcyB3cml0dGVuIGFnYWluc3QgdGhlIE9wZW5HTCBFUyAyLjAu
MjUgc3BlY2lmaWNhdGlvbi4KLQotT3ZlcnZpZXcKLQotICAgIFRoaXMgZXh0ZW5zaW9uIG1ha2Vz
IGF2YWlsYWJsZSBhIHByb2dyYW0gYmluYXJ5IGZvcm1hdCwKLSAgICBQUk9HUkFNX0JJTkFSWV9B
TkdMRS4gSXQgZW5hYmxlcyByZXRyaWV2aW5nIGFuZCBsb2FkaW5nIG9mIHByZS1saW5rZWQKLSAg
ICBBTkdMRSBwcm9ncmFtIG9iamVjdHMuCi0KLU5ldyBQcm9jZWR1cmVzIGFuZCBGdW5jdGlvbnMK
LQotICAgIE5vbmUKLQotTmV3IFRva2VucwotCi0gICAgQWNjZXB0ZWQgYnkgdGhlIDxiaW5hcnlG
b3JtYXQ+IHBhcmFtZXRlciBvZiBQcm9ncmFtQmluYXJ5T0VTOgotCi0gICAgICAgIFBST0dSQU1f
QklOQVJZX0FOR0xFICAgICAgICAweDkzQTYKLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgMiBvZiB0
aGUgT3BlbkdMLUVTIDIuMCBTcGVjaWZpY2F0aW9uIChPcGVuR0wgT3BlcmF0aW9uKQotCi0gICAg
QWRkIHRoZSBmb2xsb3dpbmcgcGFyYWdyYXBoIHRvIHRoZSBlbmQgb2Ygc2VjdGlvbiAyLjE1LjQs
IFByb2dyYW0gQmluYXJpZXM6Ci0gICAgCi0gICAgIlBST0dSQU1fQklOQVJZX0FOR0xFLCByZXR1
cm5lZCBpbiB0aGUgbGlzdCBvZiBQUk9HUkFNX0JJTkFSWV9GT1JNQVRTX09FUywKLSAgICBpcyBh
IGZvcm1hdCB0aGF0IG1heSBiZSBsb2FkZWQgaW50byBhIHByb2dyYW0gb2JqZWN0IHZpYSBQcm9n
cmFtQmluYXJ5T0VTLiIgCi0gICAgCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciAzIG9mIHRoZSBPcGVu
R0wgRVMgMi4wIHNwZWNpZmljYXRpb24gKFJhc3Rlcml6YXRvaW4pCi0KLSAgICBOb25lLgotCi1B
ZGRpdGlvbnMgdG8gQ2hhcHRlciA0IG9mIHRoZSBPcGVuR0wgRVMgMi4wIHNwZWNpZmljYXRpb24g
KFBlci1GcmFnbWVudAotT3BlcmF0aW9ucyBhbmQgdGhlIEZyYW1lYnVmZmVyKQotCi0gICAgTm9u
ZS4KLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgNSBvZiB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZp
Y2F0aW9uIChTcGVjaWFsCi1GdW5jdGlvbnMpCi0KLSAgICBOb25lLgotCi1BZGRpdGlvbnMgdG8g
Q2hhcHRlciA2IG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmljYXRpb24gKFN0YXRlIGFuZCBT
dGF0ZQotUmVxdWVzdHMpCi0KLSAgICBOb25lLgotCi1FcnJvcnMKLQotICAgIE5vbmUKLQotTmV3
IFN0YXRlCi0KLSAgICBOb25lLgotCi1Jc3N1ZXMKLQotICAgIE5vbmUKLQotUmV2aXNpb24gSGlz
dG9yeQotIAotICAgIDA2LzA2LzIwMTIgIGFwYXRyaWNrICBpbnRpYWwgcmV2aXNpb24KLQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9BTkdMRV9yb2J1c3RfcmVzb3Vy
Y2VfaW5pdGlhbGl6YXRpb24udHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL2V4dGVuc2lvbnMvQU5HTEVfcm9idXN0X3Jlc291cmNlX2luaXRpYWxpemF0aW9uLnR4dAko
cmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9B
TkdMRV9yb2J1c3RfcmVzb3VyY2VfaW5pdGlhbGl6YXRpb24udHh0CShub25leGlzdGVudCkKQEAg
LTEsMTQyICswLDAgQEAKLU5hbWUKLQotICAgIEFOR0xFX3JvYnVzdF9yZXNvdXJjZV9pbml0aWFs
aXphdGlvbi50eHQKLQotTmFtZSBTdHJpbmdzCi0KLSAgICBBTkdMRV9yb2J1c3RfcmVzb3VyY2Vf
aW50aWFsaXphdGlvbgotCi1Db250cmlidXRvcnMKLQotICAgIEdlb2ZmIExhbmcsIEdvb2dsZQot
ICAgIEtlbiBSdXNzZWxsLCBHb29nbGUKLQotQ29udGFjdHMKLQotICAgIFNoYW5ub24gV29vZHMs
IEdvb2dsZSAoc2hhbm5vbndvb2RzICdhdCcgZ29vZ2xlLmNvbSkKLQotU3RhdHVzCi0KLSAgICBE
cmFmdAotCi1WZXJzaW9uCi0KLSAgICBWZXJzaW9uIDEsIEphbnVhcnkgNywgMjAxNQotCi1OdW1i
ZXIKLQotICAgIE9wZW5HTCBFUyBFeHRlbnNpb24gVEJECi0KLURlcGVuZGVuY2llcwotCi0gICAg
T3BlbkdMIEVTIDIuMCBpcyByZXF1aXJlZC4KLQotICAgIFRoaXMgZXh0ZW5zaW9uIGlzIHdyaXR0
ZW4gYWdhaW5zdCB0aGUgd29yZGluZyBvZiB0aGUgT3BlbkdMIEVTCi0gICAgMy4xIHNwZWNpZmlj
YXRpb24uCi0KLSAgICBFR0xfRVhUX2NyZWF0ZV9jb250ZXh0X3JvYnVzdF9pbml0aWFsaXphdGlv
biBpcyB1c2VkIHRvIHJlcXVlc3QgYQotICAgIGNvbnRleHQgc3VwcG9ydGluZyB0aGlzIGV4dGVu
c2lvbiB0byBwZXJmb3JtIHJlc291cmNlIGluaXRpYWxpemF0aW9uLgotCi1PdmVydmlldwotCi0g
ICAgVGhpcyBleHRlbnNpb24gc3BlY2lmaWVzIHRoZSBiZWhhdmlvciBmb3IgaW5pdGlhbGl6YXRp
b24gb2YKLSAgICByZXNvdXJjZXMgc3VjaCBhcyB0ZXh0dXJlcyBhbmQgYnVmZmVycyB0byBkZWZh
dWx0IHZhbHVlcy4gVGhpcwotICAgIGluaXRpYWxpemF0aW9uIGVuc3VyZXMgdGhhdCBhY2Nlc3Mg
d2lsbCBub3QgYmUgcHJvdmlkZWQgYnkgdGhlCi0gICAgR0wgdG8gcHJldmlvdXNseSBhbGxvY2F0
ZWQgZGF0YSBub3Qgb3duZWQgYnkgdGhlIGFwcGxpY2F0aW9uLgotCi1OZXcgVHlwZXMKLQotICAg
IE5vbmUKLQotTmV3IFByb2NlZHVyZXMgYW5kIEZ1bmN0aW9ucwotCi0gICAgTm9uZQotCi1OZXcg
VG9rZW5zCi0KLSAgICBBY2NlcHRlZCBieSB0aGUgPHZhbHVlPiBwYXJhbWV0ZXIgb2YgR2V0Qm9v
bGVhbnYsIEdldEludGVnZXJ2LAotICAgIEdldEZsb2F0diwgR2V0RG91YmxldiwgYW5kIEdldElu
dGVnZXI1NHY6Ci0KLSAgICAgICAgQ09OVEVYVF9ST0JVU1RfUkVTT1VSQ0VfSU5JVElBTElaQVRJ
T05fQU5HTEUgICAgMHg5M0E3Ci0KLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgNiBvZiB0aGUgT3Bl
bkdMIEVTIDMuMSBTcGVjaWZpY2F0aW9uIChCdWZmZXIKLU9iamVjdHMpCi0KLSAgICBSZXBsYWNl
IHRoZSBsYXN0IHNlbnRlbmNlIG9mIHRoZSBmaXJzdCBwYXJhZ3JhcGggb2Ygc2VjdGlvbiA2LjIK
LSAgICAiQnVmZmVyRGF0YSI6Ci0KLSAgICBJZiA8ZGF0YT4gaXMgTlVMTCwgYW5kIHJvYnVzdCBy
ZXNvdXJjZSBpbml0aWFsaXphdGlvbiBpcyBlbmFibGVkLAotICAgIHRoZSBjb250ZW50cyBvZiB0
aGUgYnVmZmVyIG9iamVjdCdzIGRhdGEgc3RvcmUgYXJlIHNldCB0byB6ZXJvLgotICAgIE90aGVy
d2lzZSwgdGhlIGNvbnRlbnRzIG9mIHRoZSBidWZmZXIgb2JqZWN0J3MgZGF0YSBzdG9yZSBhcmUK
LSAgICB1bmRlZmluZWQuCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDggb2YgdGhlIE9wZW5HTCBF
UyAzLjEgU3BlY2lmaWNhdGlvbiAoVGV4dHVyZXMgYW5kCi1TYW1wbGVycykKLQotICAgIFJlcGxh
Y2UgdGhlIGZpcnN0IHR3byBzZW50YW5jZXMgb2YgdGhlIGZpbmFsIHBhcmFncmFwaCBpbiBzZWN0
aW9uCi0gICAgOC41LjMgIlRleHR1cmUgSW1hZ2UgU3RydWN0dXJlIjoKLQotICAgIElmIHRoZSA8
ZGF0YT4gYXJndW1lbnQgb2YgVGV4SW1hZ2UyRCBvciBUZXhJbWFnZTNEIGlzIE5VTEwsIGFuZCB0
aGUKLSAgICBwaXhlbCB1bnBhY2sgYnVmZmVyIG9iamVjdCBpcyB6ZXJvLCBhIHR3by0gb3IgdGhy
ZWUtZGltZW5zaW9uYWwKLSAgICB0ZXhlbCBhcnJheSBpcyBjcmVhdGVkIHdpdGggdGhlIHNwZWNp
ZmllZCA8dGFyZ2V0PiwgPGxldmVsPiwKLSAgICA8aW50ZXJuYWxmb3JtYXQ+LCA8Ym9yZGVyPiwg
PHdpZHRoPiwgPGhlaWdodD4sIGFuZCA8ZGVwdGg+LiBJZgotICAgIHJvYnVzdCByZXNvdXJjZSBp
bml0aWFsaXphdGlvbiBpcyBlbmFibGVkLCB0aGUgY29udGVudHMgb2YgdGhlIGltYWdlCi0gICAg
YXJlIGluaXRpYWxpemVkIGFzIHRob3VnaCBhIHplcm8gdmFsdWUgd2VyZSBwcm92aWRlZCBmb3Ig
ZWFjaAotICAgIGNvbXBvbmVudCBvZiBlYWNoIHBpeGVsLCBhbmQgcHJvY2Vzc2VkIGFuZCB0cmFu
c2ZlcnJlZCB0byB0aGUgR0wKLSAgICBhcyBkZXNjcmliZWQgYWJvdmUuIFRoZSBjb21wb25lbnRz
IGNvbXByaXNpbmcgdGhpcyB6ZXJvLWZpbGxlZCBkYXRhCi0gICAgYXJlIGRldGVybWluZWQgYnkg
PGludGVybmFsZm9ybWF0Pi4gSWYgcm9idXN0IHJlc291cmNlCi0gICAgaW5pdGlhbGl6YXRpb24g
aXMgbm90IGVuYWJsZWQsIHRoZSBpbWFnZSBjb250ZW50cyBhcmUgdW5kZWZpbmVkLCBhbmQKLSAg
ICBubyBwaXhlbCBwcm9jZXNzaW5nIGlzIHBlcmZvcm1lZC4gSW4gZWl0aGVyIGNhc2UsIG5vIHBp
eGVsIHZhbHVlcwotICAgIGFyZSBhY2Nlc3NlZCBpbiBjbGllbnQgbWVtb3J5LgotCi0gICAgUmVw
bGFjZSB0aGUgZmlyc3Qgc2VudGVuY2Ugb2YgdGhlIGZpZnRoIHBhcmFncmFwaCBpbiBzZWN0aW9u
IDguOAotICAgICJNdWx0aXNhbXBsZSBUZXh0dXJlcyI6Ci0KLSAgICBVcG9uIHN1Y2Nlc3MsIFRl
eFN0b3JhZ2UyRE11bHRpc2FtcGxlIGRlbGV0ZXMgYW55IGV4aXN0aW5nIGltYWdlCi0gICAgZm9y
IHRhcmdldC4gSWYgcm9idXN0IHJlc291cmNlIGluaXRpYWxpemF0aW9uIGlzIGVuYWJsZWQsIHRo
ZQotICAgIGNvbnRlbnRzIG9mIGVhY2ggdGV4ZWwgYXJlIGluaXRpYWxpemVkIGFzIHRob3VnaCBh
IHplcm8gdmFsdWUgd2VyZQotICAgIHdyaXR0ZW4gdG8gZWFjaCBjaGFubmVsIG9mIGVhY2ggc2Ft
cGxlOyBvdGhlcndpc2UgdGhlIGNvbnRlbnRzIG9mCi0gICAgdGV4ZWxzIGFyZSB1bmRlZmluZWQu
Ci0KLSAgICBBZGQgdG8gdGhlIGZpbmFsIHBhcmFncmFwaCBvZiBzZWN0aW9uIDguMTcgIkltbXV0
YWJsZS1Gb3JtYXQgVGV4dHVyZQotICAgIEltYWdlcyI6Ci0KLSAgICBJZiByb2J1c3QgcmVzb3Vy
Y2UgaW5pdGlhbGl6YXRpb24gaXMgZW5hYmxlZCwgdGhlIGNvbnRlbnRzIG9mIGVhY2gKLSAgICB0
ZXhlbCBpcyBpbml0aWFsaXplZCBhcyB0aG91Z2ggYSB6ZXJvIHZhbHVlIHdlcmUgcHJvdmlkZWQg
Zm9yIGVhY2gKLSAgICBjb21wb25lbnQgb2YgZWFjaCBwaXhlbCwgYW5kIHByb2Nlc3NlZCBhbmQg
dHJhbnNmZXJyZWQgdG8gdGhlIEdMCi0gICAgYXMgZm9yIGEgY2FsbCB0byB0aGUgYXBwcm9wcmlh
dGUgVGV4U3ViSW1hZ2UqIGNhbGwgZm9yIDx0YXJnZXQ+LgotICAgIE90aGVyd2lzZSwgdGhlIGNv
bnRlbnRzIG9mIHRleGVscyBhcmUgdW5kZWZpbmVkLgotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciA5
IG9mIHRoZSBPcGVuR0wgRVMgMy4xIFNwZWNpZmljYXRpb24gKEZyYW1lYnVmZmVycwotYW5kIEZy
YW1lYnVmZmVyIE9iamVjdHMpCi0KLSAgICBSZXBsYWNlIHRoZSBzZW50ZW5jZSBpbiBzZWN0aW9u
IDkuMi40ICJSZW5kZXJidWZmZXIgT2JqZWN0cyIKLSAgICBiZWdpbm5pbmcgIlVwb24gc3VjY2Vz
cywgUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlIjoKLQotICAgIFVwb24gc3VjY2Vzcywg
UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlIGRlbGV0ZXMgYW55IGV4aXN0aW5nCi0gICAg
ZGF0YSBzdG9yZSBmb3IgdGhlIHJlbmRlcmJ1ZmZlciBpbWFnZS4gSWYgcm9idXN0IHJlc291cmNl
Ci0gICAgaW5pdGlhbGl6YXRpb24gaXMgZW5hYmxlZCwgdGhlIGNvbnRlbnRzIG9mIGVhY2ggcGl4
ZWwgaW4gdGhlIGRhdGEKLSAgICBzdG9yZSBhcmUgaW5pdGlhbGl6ZWQgYXMgdGhvdWdoIGEgemVy
byB2YWx1ZSB3YXMgd3JpdHRlbiB0byBlYWNoCi0gICAgY2hhbm5lbCBvZiBlYWNoIHNhbXBsZTsg
b3RoZXJ3aXNlLCB0aGUgY29udGVudHMgb2YgdGhlIGRhdGEgc3RvcmUKLSAgICBhcmUgdW5kZWZp
bmVkLgotCi1JbnRlcmFjdGlvbnMgd2l0aCBFR0xfQU5HTEVfY3JlYXRlX2NvbnRleHRfcm9idXN0
X3Jlc291cmNlCi0KLSAgICBJZiB0aGUgRUdMIHdpbmRvdy1zeXN0ZW0gYmluZGluZyBBUEkgaXMg
dXNlZCB0byBjcmVhdGUgYSBjb250ZXh0LAotICAgIHRoZSBFR0xfQU5HTEVfY3JlYXRlX2NvbnRl
eHRfcm9idXN0X2luaXRpYWxpemF0aW9uIGV4dGVuc2lvbiBpcwotICAgIHN1cHBvcnRlZCwgYW5k
IHRoZSBhdHRyaWJ1dGUKLSAgICBFR0xfQ09OVEVYVF9PUEVOR0xfUk9CVVNUX0lOSVRJQUxJWkFU
SU9OX0FOR0xFIGlzIHNldCB0bwotICAgIEVHTF9UUlVFIHdoZW4gZWdsQ3JlYXRlQ29udGV4dCBp
cyBjYWxsZWQsIHRoZSByZXN1bHRpbmcgY29udGV4dAotICAgIHdpbGwgcGVyZm9ybSByb2J1c3Qg
cmVzb3VyY2UgaW5pdGlhbGl6YXRpb24gYXMgZGVzY3JpYmVkIGFib3ZlIGluCi0gICAgc2VjdGlv
biA8c2VjdGlvbj4sIGFuZCB0aGUKLSAgICBDT05URVhUX1JPQlVTVF9SRVNPVVJDRV9JTklUSUFM
SVpBVElPTl9BTkdMRQotICAgIHF1ZXJ5IHdpbGwgcmV0dXJuIEdMX1RSVUUgYXMgZGVzY3JpYmVk
IGFib3ZlIGluIHNlY3Rpb24gMi42LjEuMS4KLQotSXNzdWVzCi0KLSAgICBOb25lCi0KLVJldmlz
aW9uIEhpc3RvcnkKLQotICAgIFZlcnNpb24gMSwgMjAxNS8wMS8wNyAtIGZpcnN0IGRyYWZ0LgpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9BTkdMRV90ZXh0dXJlX2Nv
bXByZXNzaW9uX2R4dC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
ZXh0ZW5zaW9ucy9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dC50eHQJKHJldmlzaW9uIDIw
NzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvQU5HTEVfdGV4dHVy
ZV9jb21wcmVzc2lvbl9keHQudHh0CShub25leGlzdGVudCkKQEAgLTEsMTYzICswLDAgQEAKLU5h
bWUKLQotICAgIEFOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0Ci0KLU5hbWUgU3RyaW5ncwot
Ci0gICAgR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxCi0gICAgR0xfQU5HTEVfdGV4
dHVyZV9jb21wcmVzc2lvbl9keHQzCi0gICAgR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9k
eHQ1Ci0KLUNvbnRyaWJ1dG9ycwotCi0gICAgR3JlZ2cgVGF2YXJlcywgR29vZ2xlIEluYy4KLSAg
ICBEYW5pZWwgS29jaCwgVHJhbnNHYW1pbmcgSW5jLgotICAgIEFsIFBhdHJpY2ssIEdvb2dsZSBJ
bmMuCi0KLUNvbnRhY3RzCi0KLSAgICBHcmVnZyBUYXZhcmVzLCBHb29nbGUgSW5jLiAoZ21hbiAn
YXQnIGdvb2dsZSAnZG90JyBjb20pCi0KLVN0YXR1cwotCi0gICAgSW1wbGVtZW50ZWQgaW4gQU5H
TEUgRVMyCi0KLVZlcnNpb24KLQotICAgIExhc3QgTW9kaWZpZWQgRGF0ZTogU2VwdCAyMiwgMjAx
MgotICAgIEF1dGhvciBSZXZpc2lvbjogMgotCi1OdW1iZXIKLQotICAgIE9wZW5HTCBFUyBFeHRl
bnNpb24gIzExMQotCi1EZXBlbmRlbmNpZXMKLQotICAgIFJlcXVpcmVzIE9wZW5HTCBFUyAxLjAu
Ci0KLSAgICBUaGUgZXh0ZW5zaW9uIGlzIHdyaXR0ZW4gYWdhaW5zdCB0aGUgT3BlbkdMIEVTIDIu
MCBzcGVjaWZpY2F0aW9uLgotCi1PdmVydmlldwotCi0gICAgVGhlc2UgZXh0ZW5zaW9ucyBhcmUg
ZXhhY3RseSB0aGUgc2FtZSBhcyBFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxCi0gICAgZXhj
ZXB0IHRoZXkgYWRkaXRpb25hbGx5IGV4cG9zZSB0aGUgQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
M19BTkdMRSBhbmQKLSAgICBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFIGZvcm1hdHMg
YW5kIGhhdmUgYSBzaXplIHJlc3RyaWN0aW9ucwotICAgIHN1Y2ggdGhhdCB0aGUgc2l6ZSBtdXN0
IGJlIGEgbXVsdGlwbGUgb2YgZm91ciAoZXhjZXB0IGZvciBtaXAgbGV2ZWxzCi0gICAgd2hlcmUg
dGhlIGRpbWVuc2lvbnMgYXJlIGVpdGhlciAyIG9yIDEpLgotCi0gICAgU2VlIEVYVF90ZXh0dXJl
X2NvbXByZXNzaW9uX2R4dDEgZm9yIHRoZSBmdWxsIGxpc3Qgb2YgY2hhbmdlcy4gQWxzbwotICAg
IHNlZSBFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRo
ZSBmb3JtYXRzLgotCi1JUCBTdGF0dXMKLQotICAgIEEgbGljZW5zZSB0byB0aGUgUzNUQyBJbnRl
bGxlY3R1YWwgUHJvcGVydHkgbWF5IGJlIG5lY2Vzc2FyeSBmb3IgCi0gICAgaW1wbGVtZW50YXRp
b24gb2YgdGhpcyBleHRlbnNpb24uICBZb3Ugc2hvdWxkIGNvbnN1bHQgd2l0aCB5b3VyIAotICAg
IEF0dG9ybmV5IHRvIGRldGVybWluZSB0aGUgbmVlZCBmb3IgYSBsaWNlbnNlLgotCi1OZXcgUHJv
Y2VkdXJlcyBhbmQgRnVuY3Rpb25zCi0KLSAgICBOb25lLgotCi1OZXcgVHlwZXMKLQotICAgIE5v
bmUuCi0KLU5ldyBUb2tlbnMKLQotICAgIEFjY2VwdGVkIGJ5IHRoZSA8aW50ZXJuYWxmb3JtYXQ+
IHBhcmFtZXRlciBvZiBDb21wcmVzc2VkVGV4SW1hZ2UyRAotICAgIGFuZCB0aGUgPGZvcm1hdD4g
cGFyYW1ldGVyIG9mIENvbXByZXNzZWRUZXhTdWJJbWFnZTJEOgotCi0gICAgQ09NUFJFU1NFRF9S
R0JfUzNUQ19EWFQxX0FOR0xFICAgICAgICAgICAgICAgICAgICAweDgzRjAKLSAgICBDT01QUkVT
U0VEX1JHQkFfUzNUQ19EWFQxX0FOR0xFICAgICAgICAgICAgICAgICAgIDB4ODNGMQotICAgIENP
TVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEUgICAgICAgICAgICAgICAgICAgMHg4M0YyCi0g
ICAgQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRSAgICAgICAgICAgICAgICAgICAweDgz
RjMKLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgMyBvZiB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZp
Y2F0aW9uIChSYXN0ZXJpemF0aW9uKQotCi0gICAgQWRkIHRoZSBmb2xsb3dpbmcgdG8gU2VjdGlv
biAzLjcuMyAoQ29tcHJlc3NlZCBUZXh0dXJlIEltYWdlcykKLSAgICAoYXQgdGhlIGVuZCBvZiB0
aGUgZGVzY3JpcHRpb24gb2YgdGhlIENvbXByZXNzZWRUZXhJbWFnZTJEIGNvbW1hbmQpOgotCi0g
ICAgQ29tcHJlc3NlZCBJbnRlcm5hbCBGb3JtYXQgICAgICAgIEJhc2UgSW50ZXJuYWwgRm9ybWF0
Ci0gICAgPT09PT09PT09PT09PT09PT09PT09PT09PT0gICAgICAgID09PT09PT09PT09PT09PT09
PT09Ci0gICAgQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0FOR0xFICAgIFJHQgotICAgIENPTVBS
RVNTRURfUkdCQV9TM1RDX0RYVDFfQU5HTEUgICBSR0JBCi0gICAgQ09NUFJFU1NFRF9SR0JBX1Mz
VENfRFhUM19BTkdMRSAgIFJHQkEKLSAgICBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xF
ICAgUkdCQQotCi0gICAgVGFibGUgMy54OiBTcGVjaWZpYyBDb21wcmVzc2VkIEludGVybmFsIEZv
cm1hdHMKLQotICAgIElmIDxpbnRlcm5hbGZvcm1hdD4gaXMgb25lIG9mIHRoZSBTM1RDIGZvcm1h
dHMgbGlzdGVkIGluIFRhYmxlIDMueCwKLSAgICB0aGUgY29tcHJlc3NlZCB0ZXh0dXJlIGlzIHN0
b3JlZCBpbiB0aGUgYXBwcm9wcmlhdGUgUzNUQyBjb21wcmVzc2VkCi0gICAgdGV4dHVyZSBmb3Jt
YXQgKHNlZSBBcHBlbmRpeCkuIFRoZSBHTCBhbmQgdGhlIFMzVEMgdGV4dHVyZSBjb21wcmVzc2lv
bgotICAgIGFsZ29yaXRobSBzdXBwb3J0IG9ubHkgMkQgaW1hZ2VzIHdpdGhvdXQgYm9yZGVycy4K
LQotICAgIENvbXByZXNzZWRUZXhJbWFnZTJEIHdpbGwgcHJvZHVjZSB0aGUgSU5WQUxJRF9PUEVS
QVRJT04gZXJyb3Igd2hlbgotICAgIDxpbnRlcm5hbGZvcm1hdD4gaXMgb25lIG9mIHRoZSB2YWx1
ZXMgZnJvbSBUYWJsZSAzLnggdW5kZXIgdGhlIGZvbGxvd2luZwotICAgIGNvbmRpdGlvbnM6IAot
Ci0gICAgICAqIDxib3JkZXI+IGlzIG5vbi16ZXJvLgotICAgICAgKiA8d2lkdGg+IGlzIG5vdCBv
bmUsIHR3bywgb3IgYSBtdWx0aXBsZSBvZiBmb3VyLgotICAgICAgKiA8aGVpZ2h0PiBpcyBub3Qg
b25lLCB0d28sIG9yIGEgbXVsdGlwbGUgb2YgZm91ci4KLQotICAgIEFkZCB0aGUgZm9sbG93aW5n
IHRvIFNlY3Rpb24gMy43LjMgKENvbXByZXNzZWQgVGV4dHVyZSBJbWFnZXMpCi0gICAgKGF0IHRo
ZSBlbmQgb2YgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCBj
b21tYW5kKToKLQotICAgIElmIHRoZSBpbnRlcm5hbCBmb3JtYXQgb2YgdGhlIHRleHR1cmUgaW1h
Z2UgYmVpbmcgbW9kaWZpZWQgaXMgbGlzdGVkCi0gICAgaW4gVGFibGUgMy54LCB0aGUgdGV4dHVy
ZSBpcyBzdG9yZWQgaW4gdGhlIGFwcHJvcHJpYXRlIFMzVEMgY29tcHJlc3NlZAotICAgIHRleHR1
cmUgZm9ybWF0IChzZWUgQXBwZW5kaXgpLiBTaW5jZSBEWFQvUzNUQyBpbWFnZXMgYXJlIGVhc2ls
eSBlZGl0ZWQKLSAgICBhbG9uZyA0eDQgdGV4ZWwgYm91bmRhcmllcywgdGhlIGxpbWl0YXRpb25z
IG9mIENvbXByZXNzZWRUZXhTdWJJbWFnZTJECi0gICAgYXJlIHJlbGF4ZWQuIENvbXByZXNzZWRU
ZXhTdWJJbWFnZTJEIHdpbGwgcmVzdWx0IGluIGFuIElOVkFMSURfT1BFUkFUSU9OCi0gICAgZXJy
b3Igb25seSBpZiBvbmUgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIG9jY3VyczoKLQotICAg
ICAgKiA8d2lkdGg+IGlzIG5vdCBhIG11bHRpcGxlIG9mIGZvdXIgb3IgZXF1YWwgdG8gVEVYVFVS
RV9XSURUSC4KLSAgICAgICogPGhlaWdodD4gaXMgbm90IGEgbXVsdGlwbHMgb2YgZm91ciBvciBl
cXVhbCB0byBURVhUVVJFX0hFSUdIVC4KLSAgICAgICogPHhvZmZzZXQ+IG9yIDx5b2Zmc2V0PiBp
cyBub3QgYSBtdWx0aXBsZSBvZiBmb3VyLgotICAgICAgKiA8Zm9ybWF0PiBkb2VzIG5vdCBtYXRj
aCB0aGUgaW50ZXJuYWwgZm9ybWF0IG9mIHRoZSB0ZXh0dXJlIGltYWdlCi0gICAgICAgIGJlaW5n
IG1vZGlmaWVkLgotCi0gICAgVGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnMgYXQgdGhlIGVuZCBv
ZiBzZWN0aW9uIDMuNy4zIGRvIG5vdCBhcHBseQotICAgIHRvIFMzVEMgRFhUIHRleHR1cmUgZm9y
bWF0cywgc2luY2Ugc3ViaW1hZ2UgbW9kaWZpY2F0aW9uIGlzIHN0cmFpZ2h0Zm9yd2FyZAotICAg
IGFzIGxvbmcgYXMgdGhlIHN1YmltYWdlIGlzIHByb3Blcmx5IGFsaWduZWQuCi0KLUVycm9ycwot
Ci0gICAgSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGJ5IENvbXByZXNzZWRUZXhJbWFn
ZTJEIGlmIDxpbnRlcm5hbGZvcm1hdD4KLSAgICBpcyBvbmUgb2YgdGhlIGNvbXByZXNzZWQgaW50
ZXJuYWwgZm9ybWF0cyBmcm9tIFRhYmxlIDMueCBhbmQgYW55IG9mIHRoZSAKLSAgICBmb2xsb3dp
bmcgYXBwbHk6Ci0gICAgICAtIDxib3JkZXI+IGlzIG5vdCBlcXVhbCB0byB6ZXJvLgotICAgICAg
LSA8d2lkdGg+IGlzIG5vdCBvbmUsIHR3bywgb3IgYSBtdWx0aXBsZSBvZiBmb3VyLiAKLSAgICAg
IC0gPGhlaWdodD4gaXMgbm90IG9uZSwgdHdvLCBvciBhIG11bHRpcGxlIG9mIGZvdXIuIAotCi0g
ICAgSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGJ5IFRleEltYWdlMkQgYW5kIENvcHlU
ZXhJbWFnZTJEIGlmCi0gICAgPGludGVybmFsZm9ybWF0PiBpcyBvbmUgb2YgdGhlIGNvbXByZXNz
ZWQgaW50ZXJuYWwgZm9ybWF0cyBmcm9tCi0gICAgVGFibGUgMy54LgotCi0gICAgSU5WQUxJRF9P
UEVSQVRJT04gaXMgZ2VuZXJhdGVkIGJ5IFRleFN1YkltYWdlMkQgYW5kIENvcHlUZXhTdWJJbWFn
ZTJECi0gICAgaWYgdGhlIGludGVybmFsIGZvcm1hdCBvZiB0aGUgdGV4dHVyZSBjdXJyZW50bHkg
Ym91bmQgdG8gPHRhcmdldD4gaXMKLSAgICBvbmUgb2YgdGhlIGNvbXByZXNzZWQgaW50ZXJuYWwg
Zm9ybWF0cyBmcm9tIFRhYmxlIDMueC4KLQotICAgIElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVy
YXRlZCBieSBDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCBpZiA8Zm9ybWF0PgotICAgIGlzIG9uZSBv
ZiB0aGUgY29tcHJlc3NlZCBpbnRlcmFsIGZvcm1hdHMgZnJvbSBUYWJsZSAzLnggYW5kIGFueSBv
ZiB0aGUKLSAgICBmb2xsb3dpbmcgYXBwbHk6Ci0gICAgICAtIDx3aWR0aD4gaXMgbm90IGEgbXVs
dGlwbGUgb2YgZm91ciBvciBlcXVhbCB0byBURVhUVVJFX1dJRFRIOwotICAgICAgLSA8aGVpZ2h0
PiBpcyBub3QgYSBtdWx0aXBsZSBvZiBmb3VyIG9yIGVxdWFsIHRvIFRFWFRVUkVfSEVJR0hUOwot
ICAgICAgLSA8eG9mZnNldD4gb3IgPHlvZmZzZXQ+IGlzIG5vdCBhIG11bHRpcGxlIG9mIGZvdXI7
Ci0gICAgICAtIDxmb3JtYXQ+IGRvZXMgbm90IG1hdGNoIHRoZSBpbnRlcm5hbCBmb3JtYXQgb2Yg
dGhlIHRleHR1cmUgaW1hZ2UKLSAgICAgIGJlaW5nIG1vZGlmaWVkLgotCi1OZXcgU3RhdGUKLQot
ICAgIE5vbmUuCi0KLUFwcGVuZGl4OiAKLQotICAgIFRoZSBmb3JtYXQgZm9yIHRoZSBTM1RDIENv
bXByZXNzZWQgVGV4dHVyZSBJbWFnZXMgRm9ybWF0cyBpcyBkb2N1bWVudGVkCi0gICAgaW4gdGhl
IGFwcGVuZGl4IG9mIEVYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMuCi0KLVJldmlzaW9uIEhp
c3RvcnkKLQotICAgIFJldmlzaW9uIDEsIDIwMTAvMDgvMDYgLSBnbWFuCi0gICAgICAtIEluaXRp
YWwgcmV2aXNpb24KLSAgICBSZXZpc2lvbiAyLCAyMDEyLzA5LzIyIC0gZGdrb2NoCi0gICAgICAt
IEFkZGVkIERYVDEgZm9ybWF0cyBhbmQgZG9jdW1lbnRlZCBtdWx0aXBsZSBvZiA0IHJlc3RyaWN0
aW9uLgotCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0FOR0xFX3Rl
eHR1cmVfdXNhZ2UudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4
dGVuc2lvbnMvQU5HTEVfdGV4dHVyZV91c2FnZS50eHQJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvQU5HTEVfdGV4dHVyZV91c2FnZS50eHQJ
KG5vbmV4aXN0ZW50KQpAQCAtMSwyMDIgKzAsMCBAQAotTmFtZQotCi0gICAgQU5HTEVfdGV4dHVy
ZV91c2FnZQotCi1OYW1lIFN0cmluZ3MKLQotICAgIEdMX0FOR0xFX3RleHR1cmVfdXNhZ2UKLQot
Q29udHJpYnV0b3JzCi0KLSAgICBOaWNvbGFzIENhcGVucywgVHJhbnNHYW1pbmcKLSAgICBEYW5p
ZWwgS29jaCwgVHJhbnNHYW1pbmcKLQotQ29udGFjdAotCi0gICAgRGFuaWVsIEtvY2gsIFRyYW5z
R2FtaW5nIChkYW5pZWwgJ2F0JyB0cmFuc2dhbWluZy5jb20pCi0KLVN0YXR1cwotCi0gICAgQ29t
cGxldGUKLQotVmVyc2lvbgotCi0gICAgTGFzdCBNb2RpZmllZCBEYXRlOiAgTm92ZW1iZXIgMTAs
IDIwMTEKLSAgICBWZXJzaW9uOiAgICAgICAgICAgICAyCi0KLU51bWJlcgotCi0gICAgT3BlbkdM
IEVTIEV4dGVuc2lvbiAjMTEyIAotCi1EZXBlbmRlbmNpZXMKLQotICAgIFRoaXMgZXh0ZW5zaW9u
IGlzIHdyaXR0ZW4gYWdhaW5zdCB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZpY2F0aW9uLgotCi1P
dmVydmlldwotCi0gICAgSW4gc29tZSBpbXBsZW1lbnRhdGlvbnMgaXQgaXMgYWR2YW50YWdlb3Vz
IHRvIGtub3cgdGhlIGV4cGVjdGVkCi0gICAgdXNhZ2Ugb2YgYSB0ZXh0dXJlIGJlZm9yZSB0aGUg
YmFja2luZyBzdG9yYWdlIGZvciBpdCBpcyBhbGxvY2F0ZWQuICAKLSAgICBUaGlzIGNhbiBoZWxw
IHRvIGluZm9ybSB0aGUgaW1wbGVtZW50YXRpb24ncyBjaG9pY2Ugb2YgZm9ybWF0Ci0gICAgYW5k
IHR5cGUgb2YgbWVtb3J5IHVzZWQgZm9yIHRoZSBhbGxvY2F0aW9uLiBJZiB0aGUgdXNhZ2UgaXMg
bm90Ci0gICAga25vd24gaW4gYWR2YW5jZSwgdGhlIGltcGxlbWVudGF0aW9uIGVzc2VudGlhbGx5
IGhhcyB0byBtYWtlIGEgCi0gICAgZ3Vlc3MgYXMgdG8gaG93IGl0IHdpbGwgYmUgdXNlZC4gIElm
IGl0IGlzIGxhdGVyIHByb3ZlbiB3cm9uZywKLSAgICBpdCBtYXkgbmVlZCB0byBwZXJmb3JtIGNv
c3RseSByZS1hbGxvY2F0aW9ucyBhbmQvb3IgcmVmb3JtYXR0aW5nIAotICAgIG9mIHRoZSB0ZXh0
dXJlIGRhdGEsIHJlc3VsdGluZyBpbiByZWR1Y2VkIHBlcmZvcm1hbmNlLgotCi0gICAgVGhpcyBl
eHRlbnNpb24gYWRkcyBhIHRleHR1cmUgdXNhZ2UgZmxhZyB0aGF0IGlzIHNwZWNpZmllZCB2aWEK
LSAgICB0aGUgVEVYVFVSRV9VU0FHRV9BTkdMRSBUZXhQYXJhbWV0ZXIuICBUaGlzIGNhbiBiZSB1
c2VkIHRvIAotICAgIGluZGljYXRlIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGtub3dzIHRoYXQgdGhp
cyB0ZXh0dXJlIHdpbGwgYmUgCi0gICAgdXNlZCBmb3IgcmVuZGVyaW5nLgotCi1JUCBTdGF0dXMK
LQotICAgIE5vIGtub3duIElQIGNsYWltcy4KLQotTmV3IFByb2NlZHVyZXMgYW5kIEZ1bmN0aW9u
cwotCi0gICAgTm9uZQotCi1OZXcgVG9rZW5zCi0KLSAgICBBY2NlcHRlZCBhcyBhIHZhbHVlIGZv
ciA8cG5hbWU+IGZvciB0aGUgVGV4UGFyYW1ldGVye2lmfSBhbmQgCi0gICAgVGV4UGFyYW1ldGVy
e2lmfXYgY29tbWFuZHMgYW5kIGZvciB0aGUgPHZhbHVlPiBwYXJhbWV0ZXIgb2YKLSAgICBHZXRU
ZXhQYXJhbWV0ZXJ7aWZ9djogCi0KLSAgICAgICAgVEVYVFVSRV9VU0FHRV9BTkdMRSAgICAgICAg
ICAgICAgICAgICAgIDB4OTNBMgotCi0gICAgQWNjZXB0ZWQgYXMgYSB2YWx1ZSB0byA8cGFyYW0+
IGZvciB0aGUgVGV4UGFyYW1ldGVye2lmfSBhbmQgCi0gICAgdG8gPHBhcmFtcz4gZm9yIHRoZSBU
ZXhQYXJhbWV0ZXJ7aWZ9diBjb21tYW5kcyB3aXRoIGEgPHBuYW1lPiBvZiAKLSAgICBURVhUVVJF
X1VTQUdFX0FOR0xFOyByZXR1cm5lZCBhcyBwb3NzaWJsZSB2YWx1ZXMgZm9yIDxkYXRhPiB3aGVu
IAotICAgIEdldFRleFBhcmFtZXRlcntpZn12IGlzIHF1ZXJpZWQgd2l0aCBhIDx2YWx1ZT4gb2Yg
VEVYVFVSRV9VU0FHRV9BTkdMRToKLQotICAgICAgICBOT05FICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHgwMDAwCi0gICAgICAgIEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQU5H
TEUgICAgICAgICAgICAweDkzQTMKLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgMiBvZiB0aGUgT3Bl
bkdMIEVTIDIuMCBTcGVjaWZpY2F0aW9uIChPcGVuR0wgRVMgT3BlcmF0aW9uKQotCi0gICAgTm9u
ZQotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciAzIG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmlj
YXRpb24gKFJhc3Rlcml6YXRpb24pCi0KLSAgICBBZGQgYSBuZXcgcm93IHRvIFRhYmxlIDMuMTAg
KFRleHR1cmUgcGFyYW1ldGVycyBhbmQgdGhlaXIgdmFsdWVzKToKLQotICAgIE5hbWUgICAgICAg
ICAgICAgICAgfCBUeXBlIHwgTGVnYWwgVmFsdWVzIAotICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIFRFWFRVUkVfVVNB
R0VfQU5HTEUgfCBlbnVtIHwgTk9ORSwgRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9BTkdMRQotCi0g
ICAgQWRkIGEgbmV3IHNlY3Rpb24gMy43LnggKFRleHR1cmUgVXNhZ2UpIGJlZm9yZSBzZWN0aW9u
IDMuNy4xMiBhbmQgCi0gICAgcmVudW1iZXIgdGhlIHN1YnNlcXVlbnQgc2VjdGlvbnM6IAotCi0g
ICAgIjMuNy54IFRleHR1cmUgVXNhZ2UKLQotICAgIFRleHR1cmUgdXNhZ2UgY2FuIGJlIHNwZWNp
ZmllZCB2aWEgdGhlIFRFWFRVUkVfVVNBR0VfQU5HTEUgdmFsdWUKLSAgICBmb3IgdGhlIDxwbmFt
ZT4gYXJndW1lbnQgdG8gVGV4UGFyYW1ldGVye2lmfVt2XS4gSW4gb3JkZXIgdG8gdGFrZSBlZmZl
Y3QsCi0gICAgdGhlIHRleHR1cmUgdXNhZ2UgbXVzdCBiZSBzcGVjaWZpZWQgYmVmb3JlIHRoZSB0
ZXh0dXJlIGNvbnRlbnRzIGFyZQotICAgIGRlZmluZWQgZWl0aGVyIHZpYSBUZXhJbWFnZTJEIG9y
IFRleFN0b3JhZ2UyREVYVC4KLQotICAgIFRoZSB1c2FnZSB2YWx1ZXMgY2FuIGltcGFjdCB0aGUg
bGF5b3V0IGFuZCB0eXBlIG9mIG1lbW9yeSB1c2VkIGZvciB0aGUgCi0gICAgdGV4dHVyZSBkYXRh
LiBTcGVjaWZ5aW5nIGluY29ycmVjdCB1c2FnZSB2YWx1ZXMgbWF5IHJlc3VsdCBpbiByZWR1Y2Vk
Ci0gICAgZnVuY3Rpb25hbGl0eSBhbmQvb3Igc2lnbmlmaWNhbnRseSBkZWdyYWRlZCBwZXJmb3Jt
YW5jZS4KLQotICAgIFBvc3NpYmxlIHZhbHVlcyBmb3IgPHBhcmFtcz4gd2hlbiA8cG5hbWU+IGlz
IFRFWFRVUkVfVVNBR0VfQU5HTEUgYXJlOgotCi0gICAgTk9ORSAtIHRoZSBkZWZhdWx0LiBObyBw
YXJ0aWN1bGFyIHVzYWdlIGhhcyBiZWVuIHNwZWNpZmllZCBhbmQgaXQgaXMKLSAgICAgICAgdXAg
dG8gdGhlIGltcGxlbWVudGF0aW9uIHRvIGRldGVybWluZSB0aGUgdXNhZ2Ugb2YgdGhlIHRleHR1
cmUuCi0gICAgICAgIExlYXZpbmcgdGhlIHVzYWdlIHVuc3BlY2lmaWVkIG1lYW5zIHRoYXQgdGhl
IGltcGxlbWVudGF0aW9uIG1heSAKLSAgICAgICAgaGF2ZSB0byByZWFsbG9jYXRlIHRoZSB0ZXh0
dXJlIGRhdGEgYXMgdGhlIHRleHR1cmUgaXMgdXNlZCBpbiAKLSAgICAgICAgdmFyaW91cyB3YXlz
LgotCi0gICAgRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9BTkdMRSAtIHRoaXMgdGV4dHVyZSB3aWxs
IGJlIGF0dGFjaGVkIHRvIGEgCi0gICAgICAgIGZyYW1lYnVmZmVyIG9iamVjdCBhbmQgdXNlZCBh
cyBhIGRlc2luYXRpb24gZm9yIHJlbmRlcmluZyBvciBibGl0cy4iCi0KLSAgICBNb2RpZnkgc2Vj
dGlvbiAzLjcuMTIgKFRleHR1cmUgU3RhdGUpIGFuZCBwbGFjZSB0aGUgbGFzdCAzIHNlbnRlbmNl
cwotICAgIHdpdGggdGhlIGZvbGxvd2luZzoKLQotICAgICJOZXh0LCB0aGVyZSBhcmUgdGhlIHRo
cmVlIHNldHMgb2YgdGV4dHVyZSBwcm9wZXJ0aWVzOyBlYWNoIGNvbnNpc3RzIG9mCi0gICAgdGhl
IHNlbGVjdGVkIG1pbmlmaWNhdGlvbiBhbmQgbWFnbmlmaWNhdGlvbiBmaWx0ZXJzLCB0aGUgd3Jh
cCBtb2RlcyBmb3IKLSAgICA8cz4gYW5kIDx0PiwgYW5kIHRoZSB1c2FnZSBmbGFncy4gSW4gdGhl
IGluaXRpYWwgc3RhdGUsIHRoZSB2YWx1ZSBhc3NpZ25lZAotICAgIHRvIFRFWFRVUkVfTUlOX0ZJ
TFRFUiBpcyBORUFSRVNUX01JUE1BUF9MSU5FQVIsIGFuZCB0aGUgdmFsdWUgZm9yIAotICAgIFRF
WFRVUkVfTUFHX0ZJTFRFUiBpcyBMSU5FQVIuIDxzPiBhbmQgPHQ+IHdyYXAgbW9kZXMgYXJlIGJv
dGggc2V0IHRvCi0gICAgUkVQRUFULiBUaGUgaW5pdGlhbCB2YWx1ZSBmb3IgVEVYVFVSRV9VU0FH
RV9BTkdMRSBpcyBOT05FLiIKLQotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciA0IG9mIHRoZSBPcGVu
R0wgRVMgMi4wIFNwZWNpZmljYXRpb24gKFBlci1GcmFnbWVudAotT3BlcmF0aW9ucyBhbmQgdGhl
IEZyYW1lYnVmZmVyKQotCi0gICAgTm9uZQotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciA1IG9mIHRo
ZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmljYXRpb24gKFNwZWNpYWwKLUZ1bmN0aW9ucyk6Ci0KLSAg
ICBOb25lCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDYgb2YgdGhlIE9wZW5HTCBFUyAyLjAgU3Bl
Y2lmaWNhdGlvbiAoU3RhdGUgYW5kCi1TdGF0ZSBSZXF1ZXN0cykKLQotICAgIE5vbmUKLQotRGVw
ZW5kZW5jaWVzIG9uIEVYVF90ZXh0dXJlX3N0b3JhZ2UKLQotICAgIElmIEVYVF90ZXh0dXJlX3N0
b3JhZ2UgaXMgbm90IHN1cHBvcnRlZCwgb21pdCBhbnkgcmVmZXJlbmNlcyB0byAKLSAgICBUZXhT
dG9yYWdlMkRFWFQuCi0KLUVycm9ycwotCi0gICAgSWYgVGV4UGFyYW1ldGVye2lmfSBvciBUZXhQ
YXJhbXRlcntpZn12IGlzIGNhbGxlZCB3aXRoIGEgPHBuYW1lPgotICAgIG9mIFRFWFRVUkVfVVNB
R0VfQU5HTEUgYW5kIHRoZSB2YWx1ZSBvZiA8cGFyYW0+IG9yIDxwYXJhbXM+IGlzIG5vdAotICAg
IE5PTkUgb3IgRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9BTkdMRSB0aGUgZXJyb3IgSU5WQUxJRF9W
QUxVRSBpcwotICAgIGdlbmVyYXRlZC4KLQotVXNhZ2UgRXhhbXBsZQotCi0gICAgLyogY3JlYXRl
IGFuZCBiaW5kIHRleHR1cmUgKi8KLSAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXh0dXJlKTsKLSAg
ICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVY
VFVSRV8yRCwgdGV4dHVyZSk7Ci0KLSAgICAvKiBzcGVjaWZ5IHRleHR1cmUgcGFyYW1ldGVycyAq
LwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF8qLCAuLi4pOyAgLyogYXMg
YmVmb3JlICovCi0gICAgCi0gICAgLyogc3BlY2lmeSB0aGF0IHdlJ2xsIGJlIHJlbmRlcmluZyB0
byB0aGUgdGV4dHVyZSAqLwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX1VTQUdFX0FOR0xFLCBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0FOR0xFKTsKLQot
ICAgIGdsVGV4U3RvcmFnZTJERVhUKEdMX1RFWFRVUkVfMkQsIGxldmVscywgLi4uKTsgLy8gQWxs
b2NhdGlvbgotICAgIGZvcihpbnQgbGV2ZWwgPSAwOyBsZXZlbCA8IGxldmVsczsgKytsZXZlbCkK
LSAgICAgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIGxldmVsLCAuLi4pOyAvLyBJ
bml0aWFsaXNhdGlvbgotCi1Jc3N1ZXMKLQotICAgIDEuIFNob3VsZCB0aGVyZSBiZSBhIGR5bmFt
aWMgdXNhZ2UgdmFsdWU/Ci0gICAKLSAgICAgICBESVNDVVNTSU9OOiBXZSBjb3VsZCBhY2NlcHQg
YSBkeW5hbWljIGZsYWcgdG8gaW5kaWNhdGUgdGhhdCBhIHRleHR1cmUgd2lsbAotICAgICAgIGJl
IHVwZGF0ZWQgZnJlcXVlbnRseS4gV2UgY291bGQgbWFwIHRoaXMgdG8gRDNEOSBkeW5hbWljIHRl
eHR1cmVzLiBUaGlzIHdvdWxkCi0gICAgICAgYWxsb3cgdXMgdG8gYXZvaWQgY3JlYXRpbmcgdGVt
cG9yYXJ5IHN1cmZhY2VzIHdoZW4gdXBkYXRpbmcgdGhlIHRleHR1cmUuCi0gICAgICAgSG93ZXZl
ciByZW5kZXJhYmxlIHRleHR1cmVzIGNhbm5vdCBiZSBkeW5hbWljIGluIEQzRDksIHdoaWNoIGVs
aW1pbmF0ZXMgdGhlIAotICAgICAgIHByaW1hcnkgdXNlIGNhc2UgZm9yIHRoaXMuICBGdXJ0aGVy
bW9yZSwgdGhlIG1lbW9yeSB1c2FnZSBvZiBkeW5hbWljIHRleHR1cmVzCi0gICAgICAgdHlwaWNh
bGx5IGluY3JlYXNlcyB0aHJlZWZvbGQgd2hlbiB5b3UgbG9jayBpdC4KLQotICAgIDIuIFNob3Vs
ZCB0aGUgdGV4dHVyZSB1c2FnZSBiZSBhbiBlbnVtIG9yIGEgYml0ZmllbGQ/Ci0KLSAgICAgICBV
TlJFU09MVkVELiAgVXNpbmcgYSBiaXRmaWVsZCB3b3VsZCBhbGxvdyBjb21iaW5hdGlvbiBvZiB2
YWx1ZXMgdG8gYmUgc3BlY2lmaWVkLgotICAgICAgIE9uIHRoZSBvdGhlciBoYW5kLCBpZiBjb21i
aW5hdGlvbnMgYXJlIHJlYWxseSByZXF1aXJlZCwgYWRkaXRpb25hbCA8cG5hbWVzPgotICAgICAg
IGNvdWxkIGJlIGFkZGVkIGFzIG5lY2Vzc2FyeS4gIFF1ZXJ5aW5nIGEgYml0ZmllbGQgdmlhIHRo
ZSBHZXRUZXhQYXJhbWV0ZXIgY29tbWFuZAotICAgICAgIGZlZWxzIGEgYml0IG9kZC4KLQotICAg
IDMuIFdoYXQgc2hvdWxkIGhhcHBlbiBpZiBURVhUVVJFX1VTQUdFX0FOR0xFIGlzIHNldC9jaGFu
Z2VkIGFmdGVyIHRoZSB0ZXh0dXJlCi0gICAgICAgY29udGVudHMgaGF2ZSBiZWVuIHNwZWNpZmll
ZD8KLQotICAgICAgIFJFU09MVkVEOiBJdCB3aWxsIGhhdmUgbm8gZWZmZWN0LiBIb3dldmVyLCBp
ZiB0aGUgdGV4dHVyZSBpcyByZWRlZmluZWQgKGZvciAKLSAgICAgICBleGFtcGxlIGJ5IFRleElt
YWdlMkQpIHRoZSBuZXcgYWxsb2NhdGlvbiB3aWxsIHVzZSB0aGUgdXBkYXRlZCB1c2FnZS4KLSAg
ICAgICBHZXRUZXhQYXJhbWV0ZXIgaXMgdXNlZCB0byBxdWVyeSB0aGUgdmFsdWUgb2YgdGhlIFRF
WFRVUkVfVVNBR0VfQU5HTEUKLSAgICAgICBzdGF0ZSB0aGF0IHdhcyBsYXN0IHNldCBieSBUZXhQ
YXJhbWV0ZXIgZm9yIHRoZSBjdXJyZW50bHkgYm91bmQgdGV4dHVyZSwgb3IKLSAgICAgICB0aGUg
ZGVmYXVsdCB2YWx1ZSBpZiBpdCBoYXMgbmV2ZXIgYmVlbiBzZXQuIFRoZXJlIGlzIG5vIHdheSB0
byBkZXRlcm1pbmUgdGhlIAotICAgICAgIHVzYWdlIHRoYXQgd2FzIGluIGVmZmVjdCBhdCB0aGUg
dGltZSB0aGUgdGV4dHVyZSB3YXMgZGVmaW5lZC4KLQotUmV2aXNpb24gSGlzdG9yeQotCi0gICAg
UmV2LiAgICBEYXRlICAgICAgQXV0aG9yICAgICBDaGFuZ2VzCi0gICAgLS0tLSAgLS0tLS0tLS0t
LS0gLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0g
ICAgICAxICAgMTAgTm92IDIwMTEgZGdrb2NoICAgICBJbml0aWFsIHJldmlzaW9uCi0gICAgICAy
ICAgMTAgTm92IDIwMTEgZGdrb2NoICAgICBBZGQgb3ZlcnZpZXcKLSAgIAotCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0FOR0xFX3RpbWVyX3F1ZXJ5LnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0FOR0xFX3RpbWVy
X3F1ZXJ5LnR4dAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
ZXh0ZW5zaW9ucy9BTkdMRV90aW1lcl9xdWVyeS50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSw1OTEg
KzAsMCBAQAotTmFtZQotCi0gICAgQU5HTEVfdGltZXJfcXVlcnkKLQotTmFtZSBTdHJpbmdzCi0K
LSAgICBHTF9BTkdMRV90aW1lcl9xdWVyeQotCi1Db250cmlidXRvcnMKLQotICAgIENvbnRyaWJ1
dG9ycyB0byBBUkJfb2NjbHVzaW9uX3F1ZXJ5Ci0gICAgQ29udHJpYnV0b3JzIHRvIEVYVF90aW1l
cl9xdWVyeQotICAgIENvbnRyaWJ1dG9ycyB0byBBUkJfdGltZXJfcXVlcnkKLSAgICBCZW4gVmFu
aWssIEdvb2dsZSBJbmMuCi0gICAgRGFuaWVsIEtvY2gsIFRyYW5zR2FtaW5nIEluYy4KLQotQ29u
dGFjdAotCi0gICAgQmVuIFZhbmlrLCBHb29nbGUgSW5jLiAoYmVudmFuaWsgJ2F0JyBnb29nbGUg
J2RvdCcgY29tKQotCi1TdGF0dXMKLQotICAgIERyYWZ0Ci0KLVZlcnNpb24KLQotICAgIExhc3Qg
TW9kaWZpZWQgRGF0ZTogQXByIDI4LCAyMDExCi0gICAgQXV0aG9yIFJldmlzaW9uOiAxCi0KLU51
bWJlcgotCi0gICAgT3BlbkdMIEVTIEV4dGVuc2lvbiAjPz8KLQotRGVwZW5kZW5jaWVzCi0KLSAg
ICBPcGVuR0wgRVMgMi4wIGlzIHJlcXVpcmVkLgotCi0gICAgVGhlIGV4dGVuc2lvbiBpcyB3cml0
dGVuIGFnYWluc3QgdGhlIE9wZW5HTCBFUyAyLjAgc3BlY2lmaWNhdGlvbi4KLQotT3ZlcnZpZXcK
LQotICAgIEFwcGxpY2F0aW9ucyBjYW4gYmVuZWZpdCBmcm9tIGFjY3VyYXRlIHRpbWluZyBpbmZv
cm1hdGlvbiBpbiBhIG51bWJlciBvZgotICAgIGRpZmZlcmVudCB3YXlzLiAgRHVyaW5nIGFwcGxp
Y2F0aW9uIGRldmVsb3BtZW50LCB0aW1pbmcgaW5mb3JtYXRpb24gY2FuCi0gICAgaGVscCBpZGVu
dGlmeSBhcHBsaWNhdGlvbiBvciBkcml2ZXIgYm90dGxlbmVja3MuICBBdCBydW4gdGltZSwKLSAg
ICBhcHBsaWNhdGlvbnMgY2FuIHVzZSB0aW1pbmcgaW5mb3JtYXRpb24gdG8gZHluYW1pY2FsbHkg
YWRqdXN0IHRoZSBhbW91bnQKLSAgICBvZiBkZXRhaWwgaW4gYSBzY2VuZSB0byBhY2hpZXZlIGNv
bnN0YW50IGZyYW1lIHJhdGVzLiAgT3BlbkdMCi0gICAgaW1wbGVtZW50YXRpb25zIGhhdmUgaGlz
dG9yaWNhbGx5IHByb3ZpZGVkIGxpdHRsZSB0byBubyB1c2VmdWwgdGltaW5nCi0gICAgaW5mb3Jt
YXRpb24uICBBcHBsaWNhdGlvbnMgY2FuIGdldCBzb21lIGlkZWEgb2YgdGltaW5nIGJ5IHJlYWRp
bmcgdGltZXJzCi0gICAgb24gdGhlIENQVSwgYnV0IHRoZXNlIHRpbWVycyBhcmUgbm90IHN5bmNo
cm9uaXplZCB3aXRoIHRoZSBncmFwaGljcwotICAgIHJlbmRlcmluZyBwaXBlbGluZS4gIFJlYWRp
bmcgYSBDUFUgdGltZXIgZG9lcyBub3QgZ3VhcmFudGVlIHRoZSBjb21wbGV0aW9uCi0gICAgb2Yg
YSBwb3RlbnRpYWxseSBsYXJnZSBhbW91bnQgb2YgZ3JhcGhpY3Mgd29yayBhY2N1bXVsYXRlZCBi
ZWZvcmUgdGhlCi0gICAgdGltZXIgaXMgcmVhZCwgYW5kIHdpbGwgdGh1cyBwcm9kdWNlIHdpbGRs
eSBpbmFjY3VyYXRlIHJlc3VsdHMuCi0gICAgZ2xGaW5pc2goKSBjYW4gYmUgdXNlZCB0byBkZXRl
cm1pbmUgd2hlbiBwcmV2aW91cyByZW5kZXJpbmcgY29tbWFuZHMgaGF2ZQotICAgIGJlZW4gY29t
cGxldGVkLCBidXQgd2lsbCBpZGxlIHRoZSBncmFwaGljcyBwaXBlbGluZSBhbmQgYWR2ZXJzZWx5
IGFmZmVjdAotICAgIGFwcGxpY2F0aW9uIHBlcmZvcm1hbmNlLgotCi0gICAgVGhpcyBleHRlbnNp
b24gcHJvdmlkZXMgYSBxdWVyeSBtZWNoYW5pc20gdGhhdCBjYW4gYmUgdXNlZCB0byBkZXRlcm1p
bmUKLSAgICB0aGUgYW1vdW50IG9mIHRpbWUgaXQgdGFrZXMgdG8gZnVsbHkgY29tcGxldGUgYSBz
ZXQgb2YgR0wgY29tbWFuZHMsIGFuZAotICAgIHdpdGhvdXQgc3RhbGxpbmcgdGhlIHJlbmRlcmlu
ZyBwaXBlbGluZS4gIEl0IHVzZXMgdGhlIHF1ZXJ5IG9iamVjdAotICAgIG1lY2hhbmlzbXMgZmly
c3QgaW50cm9kdWNlZCBpbiB0aGUgb2NjbHVzaW9uIHF1ZXJ5IGV4dGVuc2lvbiwgd2hpY2ggYWxs
b3cKLSAgICB0aW1lIGludGVydmFscyB0byBiZSBwb2xsZWQgYXN5bmNocm9ub3VzbHkgYnkgdGhl
IGFwcGxpY2F0aW9uLgotCi1JUCBTdGF0dXMKLQotICAgIE5vIGtub3duIElQIGNsYWltcy4KLQot
TmV3IFByb2NlZHVyZXMgYW5kIEZ1bmN0aW9ucwotCi0gICAgdm9pZCBHZW5RdWVyaWVzQU5HTEUo
c2l6ZWkgbiwgdWludCAqaWRzKTsKLSAgICB2b2lkIERlbGV0ZVF1ZXJpZXNBTkdMRShzaXplaSBu
LCBjb25zdCB1aW50ICppZHMpOwotICAgIGJvb2xlYW4gSXNRdWVyeUFOR0xFKHVpbnQgaWQpOwot
ICAgIHZvaWQgQmVnaW5RdWVyeUFOR0xFKGVudW0gdGFyZ2V0LCB1aW50IGlkKTsKLSAgICB2b2lk
IEVuZFF1ZXJ5QU5HTEUoZW51bSB0YXJnZXQpOwotICAgIHZvaWQgUXVlcnlDb3VudGVyQU5HTEUo
dWludCBpZCwgZW51bSB0YXJnZXQpOwotICAgIHZvaWQgR2V0UXVlcnlpdkFOR0xFKGVudW0gdGFy
Z2V0LCBlbnVtIHBuYW1lLCBpbnQgKnBhcmFtcyk7Ci0gICAgdm9pZCBHZXRRdWVyeU9iamVjdGl2
QU5HTEUodWludCBpZCwgZW51bSBwbmFtZSwgaW50ICpwYXJhbXMpOwotICAgIHZvaWQgR2V0UXVl
cnlPYmplY3R1aXZBTkdMRSh1aW50IGlkLCBlbnVtIHBuYW1lLCB1aW50ICpwYXJhbXMpOwotICAg
IHZvaWQgR2V0UXVlcnlPYmplY3RpNjR2QU5HTEUodWludCBpZCwgZW51bSBwbmFtZSwgaW50NjQg
KnBhcmFtcyk7Ci0gICAgdm9pZCBHZXRRdWVyeU9iamVjdHVpNjR2QU5HTEUodWludCBpZCwgZW51
bSBwbmFtZSwgdWludDY0ICpwYXJhbXMpOwotCi1OZXcgVG9rZW5zCi0KLSAgICBBY2NlcHRlZCBi
eSB0aGUgPHBuYW1lPiBwYXJhbWV0ZXIgb2YgR2V0UXVlcnlpdkFOR0xFOgotCi0gICAgICAgIFFV
RVJZX0NPVU5URVJfQklUU19BTkdMRSAgICAgICAgICAgICAgICAgICAgICAgMHg4ODY0Ci0gICAg
ICAgIENVUlJFTlRfUVVFUllfQU5HTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODY1
Ci0KLSAgICBBY2NlcHRlZCBieSB0aGUgPHBuYW1lPiBwYXJhbWV0ZXIgb2YgR2V0UXVlcnlPYmpl
Y3RpdkFOR0xFLAotICAgIEdldFF1ZXJ5T2JqZWN0dWl2QU5HTEUsIEdldFF1ZXJ5T2JqZWN0aTY0
dkFOR0xFLCBhbmQKLSAgICBHZXRRdWVyeU9iamVjdHVpNjR2QU5HTEU6Ci0KLSAgICAgICAgUVVF
UllfUkVTVUxUX0FOR0xFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4NjYKLSAgICAg
ICAgUVVFUllfUkVTVUxUX0FWQUlMQUJMRV9BTkdMRSAgICAgICAgICAgICAgICAgICAweDg4NjcK
LSAgICAgICAgCi0gICAgQWNjZXB0ZWQgYnkgdGhlIDx0YXJnZXQ+IHBhcmFtZXRlciBvZiBCZWdp
blF1ZXJ5QU5HTEUsIEVuZFF1ZXJ5QU5HTEUsIGFuZAotICAgIEdldFF1ZXJ5aXZBTkdMRToKLQot
ICAgICAgICBUSU1FX0VMQVBTRURfQU5HTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
ODhCRgotCi0gICAgQWNjZXB0ZWQgYnkgdGhlIDx0YXJnZXQ+IHBhcmFtZXRlciBvZiBHZXRRdWVy
eWl2QU5HTEUgYW5kCi0gICAgUXVlcnlDb3VudGVyQU5HTEU6Ci0KLSAgICAgICAgVElNRVNUQU1Q
X0FOR0xFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhFMjgKLQotQWRkaXRpb25z
IHRvIENoYXB0ZXIgMiBvZiB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZpY2F0aW9uIChPcGVuR0wg
RVMgT3BlcmF0aW9uKQotCi0gICAgKE1vZGlmeSB0YWJsZSAyLjEsIENvcnJlc3BvbmRlbmNlIG9m
IGNvbW1hbmQgc3VmZml4IGxldHRlcnMgdG8gR0wgYXJndW1lbnQpCi0gICAgQWRkIHR3byBuZXcg
dHlwZXM6Ci0gICAgCi0gICAgTGV0dGVyIENvcnJlc3BvbmRpbmcgR0wgVHlwZQotICAgIC0tLS0t
LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICBpNjQgICAgaW50NjRBTkdMRQotICAgIHVpNjQg
ICB1aW50NjRBTkdMRQotCi0gICAgKE1vZGlmeSB0YWJsZSAyLjIsIEdMIGRhdGEgdHlwZXMpIEFk
ZCB0d28gbmV3IHR5cGVzOgotICAgIAotICAgIEdMIFR5cGUgICAgICAgTWluaW11bSBCaXQgV2lk
dGggICBEZXNjcmlwdGlvbgotICAgIC0tLS0tLS0gICAgICAgLS0tLS0tLS0tLS0tLS0tLS0gICAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIGludDY0QU5HTEUgICAgNjQgICAgICAg
ICAgICAgICAgICBTaWduZWQgMidzIGNvbXBsZW1lbnQgaW50ZWdlcgotICAgIHVpbnQ2NEFOR0xF
ICAgNjQgICAgICAgICAgICAgICAgICBVbnNpZ25lZCBiaW5hcnkgaW50ZWdlcgotCi1BZGRpdGlv
bnMgdG8gQ2hhcHRlciA1IG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmljYXRpb24gKFNwZWNp
YWwgRnVuY3Rpb25zKQotCi0gICAgQWRkIGEgbmV3IHNlY3Rpb24gNS4zICJUaW1lciBRdWVyaWVz
IjoKLQotICAgICI1LjMgIFRpbWVyIFF1ZXJpZXMKLQotICAgIFRpbWVyIHF1ZXJpZXMgdXNlIHF1
ZXJ5IG9iamVjdHMgdG8gdHJhY2sgdGhlIGFtb3VudCBvZiB0aW1lIG5lZWRlZCB0bwotICAgIGZ1
bGx5IGNvbXBsZXRlIGEgc2V0IG9mIEdMIGNvbW1hbmRzLCBvciB0byBkZXRlcm1pbmUgdGhlIGN1
cnJlbnQgdGltZQotICAgIG9mIHRoZSBHTC4KLSAgICAKLSAgICBUaW1lciBxdWVyaWVzIGFyZSBh
c3NvY2lhdGVkIHdpdGggcXVlcnkgb2JqZWN0cy4gIFRoZSBjb21tYW5kCi0KLSAgICAgIHZvaWQg
R2VuUXVlcmllc0FOR0xFKHNpemVpIG4sIHVpbnQgKmlkcyk7Ci0KLSAgICByZXR1cm5zIDxuPiBw
cmV2aW91c2x5IHVudXNlZCBxdWVyeSBvYmplY3QgbmFtZXMgaW4gPGlkcz4uICBUaGVzZQotICAg
IG5hbWVzIGFyZSBtYXJrZWQgYXMgdXNlZCwgYnV0IG5vIG9iamVjdCBpcyBhc3NvY2lhdGVkIHdp
dGggdGhlbSB1bnRpbAotICAgIHRoZSBmaXJzdCB0aW1lIHRoZXkgYXJlIHVzZWQgYnkgQmVnaW5R
dWVyeUFOR0xFLiAgUXVlcnkgb2JqZWN0cyBjb250YWluCi0gICAgb25lIHBpZWNlIG9mIHN0YXRl
LCBhbiBpbnRlZ2VyIHJlc3VsdCB2YWx1ZS4gIFRoaXMgcmVzdWx0IHZhbHVlIGlzCi0gICAgaW5p
dGlhbGl6ZWQgdG8gemVybyB3aGVuIHRoZSBvYmplY3QgaXMgY3JlYXRlZC4gIEFueSBwb3NpdGl2
ZSBpbnRlZ2VyCi0gICAgZXhjZXB0IGZvciB6ZXJvICh3aGljaCBpcyByZXNlcnZlZCBmb3IgdGhl
IEdMKSBpcyBhIHZhbGlkIHF1ZXJ5Ci0gICAgb2JqZWN0IG5hbWUuCi0KLSAgICBRdWVyeSBvYmpl
Y3RzIGFyZSBkZWxldGVkIGJ5IGNhbGxpbmcKLQotICAgICAgdm9pZCBEZWxldGVRdWVyaWVzQU5H
TEUoc2l6ZWkgbiwgY29uc3QgdWludCAqaWRzKTsKLQotICAgIDxpZHM+IGNvbnRhaW5zIDxuPiBu
YW1lcyBvZiBxdWVyeSBvYmplY3RzIHRvIGJlIGRlbGV0ZWQuICBBZnRlciBhCi0gICAgcXVlcnkg
b2JqZWN0IGlzIGRlbGV0ZWQsIGl0cyBuYW1lIGlzIGFnYWluIHVudXNlZC4gIFVudXNlZCBuYW1l
cyBpbgotICAgIDxpZHM+IGFyZSBzaWxlbnRseSBpZ25vcmVkLgotICAgIElmIGFuIGFjdGl2ZSBx
dWVyeSBvYmplY3QgaXMgZGVsZXRlZCBpdHMgbmFtZSBpbW1lZGlhdGVseSBiZWNvbWVzIHVudXNl
ZCwKLSAgICBidXQgdGhlIHVuZGVybHlpbmcgb2JqZWN0IGlzIG5vdCBkZWxldGVkIHVudGlsIGl0
IGlzIG5vIGxvbmdlciBhY3RpdmUuCi0KLSAgICBBIHRpbWVyIHF1ZXJ5IGNhbiBiZSBzdGFydGVk
IGFuZCBmaW5pc2hlZCBieSBjYWxsaW5nCi0KLSAgICAgIHZvaWQgQmVnaW5RdWVyeUFOR0xFKGVu
dW0gdGFyZ2V0LCB1aW50IGlkKTsKLSAgICAgIHZvaWQgRW5kUXVlcnlBTkdMRShlbnVtIHRhcmdl
dCk7Ci0KLSAgICB3aGVyZSA8dGFyZ2V0PiBpcyBUSU1FX0VMQVBTRURfQU5HTEUuICBJZiBCZWdp
blF1ZXJ5QU5HTEUgaXMgY2FsbGVkCi0gICAgd2l0aCBhbiB1bnVzZWQgPGlkPiwgdGhhdCBuYW1l
IGlzIG1hcmtlZCBhcyB1c2VkIGFuZCBhc3NvY2lhdGVkIHdpdGgKLSAgICBhIG5ldyBxdWVyeSBv
YmplY3QuCi0gICAgCi0gICAgSWYgQmVnaW5RdWVyeUFOR0xFIGlzIGNhbGxlZCB3aXRoIGFuIDxp
ZD4gb2YgemVybywgaWYgdGhlIGFjdGl2ZSBxdWVyeQotICAgIG9iamVjdCBuYW1lIGZvciA8dGFy
Z2V0PiBpcyBub24temVybywgaWYgPGlkPiBpcyB0aGUgbmFtZSBvZiBhbiBleGlzdGluZwotICAg
IHF1ZXJ5IG9iamVjdCB3aG9zZSB0eXBlIGRvZXMgbm90IG1hdGNoIDx0YXJnZXQ+LCBvciBpZiA8
aWQ+IGlzIHRoZSBhY3RpdmUKLSAgICBxdWVyeSBvYmplY3QgbmFtZSBmb3IgYW55IHF1ZXJ5IHR5
cGUsIHRoZSBlcnJvciBJTlZBTElEX09QRVJBVElPTiBpcwotICAgIGdlbmVyYXRlZC4gIElmIEVu
ZFF1ZXJ5QU5HTEUgaXMgY2FsbGVkIHdoaWxlIG5vIHF1ZXJ5IHdpdGggdGhlIHNhbWUgdGFyZ2V0
Ci0gICAgaXMgaW4gcHJvZ3Jlc3MsIGFuIElOVkFMSURfT1BFUkFUSU9OIGVycm9yIGlzIGdlbmVy
YXRlZC4KLQotICAgIFdoZW4gQmVnaW5RdWVyeUFOR0xFIGFuZCBFbmRRdWVyeUFOR0xFIGFyZSBj
YWxsZWQgd2l0aCBhIDx0YXJnZXQ+IG9mCi0gICAgVElNRV9FTEFQU0VEX0FOR0xFLCB0aGUgR0wg
cHJlcGFyZXMgdG8gc3RhcnQgYW5kIHN0b3AgdGhlIHRpbWVyIHVzZWQgZm9yCi0gICAgdGltZXIg
cXVlcmllcy4gIFRoZSB0aW1lciBpcyBzdGFydGVkIG9yIHN0b3BwZWQgd2hlbiB0aGUgZWZmZWN0
cyBmcm9tIGFsbAotICAgIHByZXZpb3VzIGNvbW1hbmRzIG9uIHRoZSBHTCBjbGllbnQgYW5kIHNl
cnZlciBzdGF0ZSBhbmQgdGhlIGZyYW1lYnVmZmVyCi0gICAgaGF2ZSBiZWVuIGZ1bGx5IHJlYWxp
emVkLiAgVGhlIEJlZ2luUXVlcnlBTkdMRSBhbmQgRW5kUXVlcnlBTkdMRSBjb21tYW5kcwotICAg
IG1heSByZXR1cm4gYmVmb3JlIHRoZSB0aW1lciBpcyBhY3R1YWxseSBzdGFydGVkIG9yIHN0b3Bw
ZWQuICBXaGVuIHRoZSB0aW1lcgotICAgIHF1ZXJ5IHRpbWVyIGlzIGZpbmFsbHkgc3RvcHBlZCwg
dGhlIGVsYXBzZWQgdGltZSAoaW4gbmFub3NlY29uZHMpIGlzCi0gICAgd3JpdHRlbiB0byB0aGUg
Y29ycmVzcG9uZGluZyBxdWVyeSBvYmplY3QgYXMgdGhlIHF1ZXJ5IHJlc3VsdCB2YWx1ZSwgYW5k
Ci0gICAgdGhlIHF1ZXJ5IHJlc3VsdCBmb3IgdGhhdCBvYmplY3QgaXMgbWFya2VkIGFzIGF2YWls
YWJsZS4KLQotICAgIElmIHRoZSBlbGFwc2VkIHRpbWUgb3ZlcmZsb3dzIHRoZSBudW1iZXIgb2Yg
Yml0cywgPG4+LCBhdmFpbGFibGUgdG8gaG9sZAotICAgIGVsYXBzZWQgdGltZSwgaXRzIHZhbHVl
IGJlY29tZXMgdW5kZWZpbmVkLiAgSXQgaXMgcmVjb21tZW5kZWQsIGJ1dCBub3QKLSAgICByZXF1
aXJlZCwgdGhhdCBpbXBsZW1lbnRhdGlvbnMgaGFuZGxlIHRoaXMgb3ZlcmZsb3cgY2FzZSBieSBz
YXR1cmF0aW5nIGF0Ci0gICAgMl5uIC0gMS4KLQotICAgIFRoZSBuZWNlc3Nhcnkgc3RhdGUgaXMg
YSBzaW5nbGUgYml0IGluZGljYXRpbmcgd2hldGhlciBhbiB0aW1lcgotICAgIHF1ZXJ5IGlzIGFj
dGl2ZSwgdGhlIGlkZW50aWZpZXIgb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUgdGltZXIKLSAgICBx
dWVyeSwgYW5kIGEgY291bnRlciBrZWVwaW5nIHRyYWNrIG9mIHRoZSB0aW1lIHRoYXQgaGFzIHBh
c3NlZC4KLQotICAgIFdoZW4gdGhlIGNvbW1hbmQKLQotICAgICAgICAgdm9pZCBRdWVyeUNvdW50
ZXJBTkdMRSh1aW50IGlkLCBlbnVtIHRhcmdldCk7Ci0KLSAgICBpcyBjYWxsZWQgd2l0aCA8dGFy
Z2V0PiBUSU1FU1RBTVBfQU5HTEUsIHRoZSBHTCByZWNvcmRzIHRoZSBjdXJyZW50IHRpbWUKLSAg
ICBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIHF1ZXJ5IG9iamVjdC4gVGhlIHRpbWUgaXMgcmVjb3Jk
ZWQgYWZ0ZXIgYWxsCi0gICAgcHJldmlvdXMgY29tbWFuZHMgb24gdGhlIEdMIGNsaWVudCBhbmQg
c2VydmVyIHN0YXRlIGFuZCB0aGUgZnJhbWVidWZmZXIKLSAgICBoYXZlIGJlZW4gZnVsbHkgcmVh
bGl6ZWQuIFdoZW4gdGhlIHRpbWUgaXMgcmVjb3JkZWQsIHRoZSBxdWVyeSByZXN1bHQgZm9yCi0g
ICAgdGhhdCBvYmplY3QgaXMgbWFya2VkIGF2YWlsYWJsZS4gUXVlcnlDb3VudGVyQU5HTEUgdGlt
ZXIgcXVlcmllcyBjYW4gYmUKLSAgICB1c2VkIHdpdGhpbiBhIEJlZ2luUXVlcnlBTkdMRSAvIEVu
ZFF1ZXJ5QU5HTEUgYmxvY2sgd2hlcmUgdGhlIDx0YXJnZXQ+IGlzCi0gICAgVElNRV9FTEFQU0VE
X0FOR0xFIGFuZCBpdCBkb2VzIG5vdCBhZmZlY3QgdGhlIHJlc3VsdCBvZiB0aGF0IHF1ZXJ5IG9i
amVjdC4KLSAgICBUaGUgZXJyb3IgSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIHRo
ZSA8aWQ+IGlzIGFscmVhZHkgaW4gdXNlCi0gICAgd2l0aGluIGEgQmVnaW5RdWVyeUFOR0xFL0Vu
ZFF1ZXJ5QU5HTEUgYmxvY2suIgotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciA2IG9mIHRoZSBPcGVu
R0wgRVMgMi4wIFNwZWNpZmljYXRpb24gKFN0YXRlIGFuZCBTdGF0ZQotUmVxdWVzdHMpCi0KLSAg
ICBBZGQgYSBuZXcgc2VjdGlvbiA2LjEuOSAiVGltZXIgUXVlcmllcyI6Ci0KLSAgICAiVGhlIGNv
bW1hbmQKLQotICAgICAgYm9vbGVhbiBJc1F1ZXJ5QU5HTEUodWludCBpZCk7Ci0KLSAgICByZXR1
cm5zIFRSVUUgaWYgPGlkPiBpcyB0aGUgbmFtZSBvZiBhIHF1ZXJ5IG9iamVjdC4gIElmIDxpZD4g
aXMgemVybywKLSAgICBvciBpZiA8aWQ+IGlzIGEgbm9uLXplcm8gdmFsdWUgdGhhdCBpcyBub3Qg
dGhlIG5hbWUgb2YgYSBxdWVyeQotICAgIG9iamVjdCwgSXNRdWVyeUFOR0xFIHJldHVybnMgRkFM
U0UuCi0KLSAgICBJbmZvcm1hdGlvbiBhYm91dCBhIHF1ZXJ5IHRhcmdldCBjYW4gYmUgcXVlcmll
ZCB3aXRoIHRoZSBjb21tYW5kCi0KLSAgICAgIHZvaWQgR2V0UXVlcnlpdkFOR0xFKGVudW0gdGFy
Z2V0LCBlbnVtIHBuYW1lLCBpbnQgKnBhcmFtcyk7Ci0KLSAgICA8dGFyZ2V0PiBpZGVudGlmaWVz
IHRoZSBxdWVyeSB0YXJnZXQgYW5kIGNhbiBiZSBUSU1FX0VMQVBTRURfQU5HTEUgb3IKLSAgICBU
SU1FU1RBTVBfQU5HTEUgZm9yIHRpbWVyIHF1ZXJpZXMuCi0KLSAgICBJZiA8cG5hbWU+IGlzIENV
UlJFTlRfUVVFUllfQU5HTEUsIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgYWN0aXZlIHF1ZXJ5
Ci0gICAgZm9yIDx0YXJnZXQ+LCBvciB6ZXJvIGlmIG5vIHF1ZXJ5IGlzIGFjdGl2ZSwgd2lsbCBi
ZSBwbGFjZWQgaW4gPHBhcmFtcz4uCi0KLSAgICBJZiA8cG5hbWU+IGlzIFFVRVJZX0NPVU5URVJf
QklUU19BTkdMRSwgdGhlIGltcGxlbWVudGF0aW9uLWRlcGVuZGVudCBudW1iZXIKLSAgICBvZiBi
aXRzIHVzZWQgdG8gaG9sZCB0aGUgcXVlcnkgcmVzdWx0IGZvciA8dGFyZ2V0PiB3aWxsIGJlIHBs
YWNlZCBpbgotICAgIDxwYXJhbXM+LiAgVGhlIG51bWJlciBvZiBxdWVyeSBjb3VudGVyIGJpdHMg
bWF5IGJlIHplcm8sIGluIHdoaWNoIGNhc2UKLSAgICB0aGUgY291bnRlciBjb250YWlucyBubyB1
c2VmdWwgaW5mb3JtYXRpb24uCi0KLSAgICBGb3IgdGltZXIgcXVlcmllcyAoVElNRV9FTEFQU0VE
X0FOR0xFIGFuZCBUSU1FU1RBTVBfQU5HTEUpLCBpZiB0aGUgbnVtYmVyCi0gICAgb2YgYml0cyBp
cyBub24temVybywgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGJpdHMgYWxsb3dlZCBpcyAzMCB3aGlj
aAotICAgIHdpbGwgYWxsb3cgYXQgbGVhc3QgMSBzZWNvbmQgb2YgdGltaW5nLgotCi0gICAgVGhl
IHN0YXRlIG9mIGEgcXVlcnkgb2JqZWN0IGNhbiBiZSBxdWVyaWVkIHdpdGggdGhlIGNvbW1hbmRz
Ci0KLSAgICAgIHZvaWQgR2V0UXVlcnlPYmplY3RpdkFOR0xFKHVpbnQgaWQsIGVudW0gcG5hbWUs
IGludCAqcGFyYW1zKTsKLSAgICAgIHZvaWQgR2V0UXVlcnlPYmplY3R1aXZBTkdMRSh1aW50IGlk
LCBlbnVtIHBuYW1lLCB1aW50ICpwYXJhbXMpOwotICAgICAgdm9pZCBHZXRRdWVyeU9iamVjdGk2
NHZBTkdMRSh1aW50IGlkLCBlbnVtIHBuYW1lLCBpbnQ2NCAqcGFyYW1zKTsKLSAgICAgIHZvaWQg
R2V0UXVlcnlPYmplY3R1aTY0dkFOR0xFKHVpbnQgaWQsIGVudW0gcG5hbWUsIHVpbnQ2NCAqcGFy
YW1zKTsKLQotICAgIElmIDxpZD4gaXMgbm90IHRoZSBuYW1lIG9mIGEgcXVlcnkgb2JqZWN0LCBv
ciBpZiB0aGUgcXVlcnkgb2JqZWN0Ci0gICAgbmFtZWQgYnkgPGlkPiBpcyBjdXJyZW50bHkgYWN0
aXZlLCB0aGVuIGFuIElOVkFMSURfT1BFUkFUSU9OIGVycm9yIGlzCi0gICAgZ2VuZXJhdGVkLgot
Ci0gICAgSWYgPHBuYW1lPiBpcyBRVUVSWV9SRVNVTFRfQU5HTEUsIHRoZW4gdGhlIHF1ZXJ5IG9i
amVjdCdzIHJlc3VsdAotICAgIHZhbHVlIGlzIHJldHVybmVkIGFzIGEgc2luZ2xlIGludGVnZXIg
aW4gPHBhcmFtcz4uIElmIHRoZSB2YWx1ZSBpcyBzbwotICAgIGxhcmdlIGluIG1hZ25pdHVkZSB0
aGF0IGl0IGNhbm5vdCBiZSByZXByZXNlbnRlZCB3aXRoIHRoZSByZXF1ZXN0ZWQgdHlwZSwKLSAg
ICB0aGVuIHRoZSBuZWFyZXN0IHZhbHVlIHJlcHJlc2VudGFibGUgdXNpbmcgdGhlIHJlcXVlc3Rl
ZCB0eXBlIGlzCi0gICAgcmV0dXJuZWQuIElmIHRoZSBudW1iZXIgb2YgcXVlcnkgY291bnRlciBi
aXRzIGZvciB0YXJnZXQgaXMgemVybywgdGhlbgotICAgIHRoZSByZXN1bHQgaXMgcmV0dXJuZWQg
YXMgYSBzaW5nbGUgaW50ZWdlciB3aXRoIHRoZSB2YWx1ZSB6ZXJvLgotICAgIAotICAgIFRoZXJl
IG1heSBiZSBhbiBpbmRldGVybWluYXRlIGRlbGF5IGJlZm9yZSB0aGUgYWJvdmUgcXVlcnkgcmV0
dXJucy4gSWYKLSAgICA8cG5hbWU+IGlzIFFVRVJZX1JFU1VMVF9BVkFJTEFCTEVfQU5HTEUsIEZB
TFNFIGlzIHJldHVybmVkIGlmIHN1Y2ggYSBkZWxheQotICAgIHdvdWxkIGJlIHJlcXVpcmVkOyBv
dGhlcndpc2UgVFJVRSBpcyByZXR1cm5lZC4gSXQgbXVzdCBhbHdheXMgYmUgdHJ1ZQotICAgIHRo
YXQgaWYgYW55IHF1ZXJ5IG9iamVjdCByZXR1cm5zIGEgcmVzdWx0IGF2YWlsYWJsZSBvZiBUUlVF
LCBhbGwgcXVlcmllcwotICAgIG9mIHRoZSBzYW1lIHR5cGUgaXNzdWVkIHByaW9yIHRvIHRoYXQg
cXVlcnkgbXVzdCBhbHNvIHJldHVybiBUUlVFLgotCi0gICAgUXVlcnlpbmcgdGhlIHN0YXRlIGZv
ciBhIGdpdmVuIHRpbWVyIHF1ZXJ5IGZvcmNlcyB0aGF0IHRpbWVyIHF1ZXJ5IHRvCi0gICAgY29t
cGxldGUgd2l0aGluIGEgZmluaXRlIGFtb3VudCBvZiB0aW1lLgotCi0gICAgSWYgbXVsdGlwbGUg
cXVlcmllcyBhcmUgaXNzdWVkIG9uIHRoZSBzYW1lIHRhcmdldCBhbmQgaWQgcHJpb3IgdG8gCi0g
ICAgY2FsbGluZyBHZXRRdWVyeU9iamVjdFt1XWlbNjRddkFOR0xFLCB0aGUgcmVzdWx0IHJldHVy
bmVkIHdpbGwgYWx3YXlzIGJlCi0gICAgZnJvbSB0aGUgbGFzdCBxdWVyeSBpc3N1ZWQuICBUaGUg
cmVzdWx0cyBmcm9tIGFueSBxdWVyaWVzIGJlZm9yZSB0aGUKLSAgICBsYXN0IG9uZSB3aWxsIGJl
IGxvc3QgaWYgdGhlIHJlc3VsdHMgYXJlIG5vdCByZXRyaWV2ZWQgYmVmb3JlIHN0YXJ0aW5nCi0g
ICAgYSBuZXcgcXVlcnkgb24gdGhlIHNhbWUgPHRhcmdldD4gYW5kIDxpZD4uIgotCi1FcnJvcnMK
LQotICAgIFRoZSBlcnJvciBJTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiBHZW5RdWVyaWVz
QU5HTEUgaXMgY2FsbGVkIHdoZXJlCi0gICAgPG4+IGlzIG5lZ2F0aXZlLgotCi0gICAgVGhlIGVy
cm9yIElOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIERlbGV0ZVF1ZXJpZXNBTkdMRSBpcyBj
YWxsZWQKLSAgICB3aGVyZSA8bj4gaXMgbmVnYXRpdmUuCi0KLSAgICBUaGUgZXJyb3IgSU5WQUxJ
RF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIEJlZ2luUXVlcnlBTkdMRSBpcyBjYWxsZWQKLSAg
ICB3aGVuIGEgcXVlcnkgb2YgdGhlIGdpdmVuIDx0YXJnZXQ+IGlzIGFscmVhZHkgYWN0aXZlLgot
Ci0gICAgVGhlIGVycm9yIElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBFbmRRdWVy
eUFOR0xFIGlzIGNhbGxlZAotICAgIHdoZW4gYSBxdWVyeSBvZiB0aGUgZ2l2ZW4gPHRhcmdldD4g
aXMgbm90IGFjdGl2ZS4KLQotICAgIFRoZSBlcnJvciBJTlZBTElEX09QRVJBVElPTiBpcyBnZW5l
cmF0ZWQgaWYgQmVnaW5RdWVyeUFOR0xFIGlzIGNhbGxlZAotICAgIHdoZXJlIDxpZD4gaXMgemVy
by4KLQotICAgIFRoZSBlcnJvciBJTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgQmVn
aW5RdWVyeUFOR0xFIGlzIGNhbGxlZAotICAgIHdoZXJlIDxpZD4gaXMgdGhlIG5hbWUgb2YgYSBx
dWVyeSBjdXJyZW50bHkgaW4gcHJvZ3Jlc3MuCi0gICAgCi0gICAgVGhlIGVycm9yIElOVkFMSURf
T1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBCZWdpblF1ZXJ5QU5HTEUgaXMgY2FsbGVkCi0gICAg
d2hlcmUgPGlkPiBpcyB0aGUgbmFtZSBvZiBhbiBleGlzdGluZyBxdWVyeSBvYmplY3Qgd2hvc2Ug
dHlwZSBkb2VzIG5vdAotICAgIG1hdGNoIDx0YXJnZXQ+LgotCi0gICAgVGhlIGVycm9yIElOVkFM
SURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgQmVnaW5RdWVyeUFOR0xFIG9yIEVuZFF1ZXJ5QU5HTEUK
LSAgICBpcyBjYWxsZWQgd2hlcmUgPHRhcmdldD4gaXMgbm90IFRJTUVfRUxBUFNFRF9BTkdMRS4K
LQotICAgIFRoZSBlcnJvciBJTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIEdldFF1ZXJ5aXZB
TkdMRSBpcyBjYWxsZWQgd2hlcmUKLSAgICA8dGFyZ2V0PiBpcyBub3QgVElNRV9FTEFQU0VEX0FO
R0xFIG9yIFRJTUVTVEFNUF9BTkdMRS4KLQotICAgIFRoZSBlcnJvciBJTlZBTElEX0VOVU0gaXMg
Z2VuZXJhdGVkIGlmIEdldFF1ZXJ5aXZBTkdMRSBpcyBjYWxsZWQgd2hlcmUKLSAgICA8cG5hbWU+
IGlzIG5vdCBRVUVSWV9DT1VOVEVSX0JJVFNfQU5HTEUgb3IgQ1VSUkVOVF9RVUVSWV9BTkdMRS4K
LQotICAgIFRoZSBlcnJvciBJTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIFF1ZXJ5Q291bnRl
ckFOR0xFIGlzIGNhbGxlZCB3aGVyZQotICAgIDx0YXJnZXQ+IGlzIG5vdCBUSU1FU1RBTVBfQU5H
TEUuCi0KLSAgICBUaGUgZXJyb3IgSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIFF1
ZXJ5Q291bnRlckFOR0xFIGlzIGNhbGxlZAotICAgIG9uIGEgcXVlcnkgb2JqZWN0IHRoYXQgaXMg
YWxyZWFkeSBpbiB1c2UgaW5zaWRlIGEKLSAgICBCZWdpblF1ZXJ5QU5HTEUvRW5kUXVlcnlBTkdM
RS4KLQotICAgIFRoZSBlcnJvciBJTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgR2V0
UXVlcnlPYmplY3RpdkFOR0xFLAotICAgIEdldFF1ZXJ5T2JqZWN0dWl2QU5HTEUsIEdldFF1ZXJ5
T2JqZWN0aTY0dkFOR0xFLCBvcgotICAgIEdldFF1ZXJ5T2JqZWN0dWk2NHZBTkdMRSBpcyBjYWxs
ZWQgd2hlcmUgPGlkPiBpcyBub3QgdGhlIG5hbWUgb2YgYSBxdWVyeQotICAgIG9iamVjdC4KLQot
ICAgIFRoZSBlcnJvciBJTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgR2V0UXVlcnlP
YmplY3RpdkFOR0xFLAotICAgIEdldFF1ZXJ5T2JqZWN0dWl2QU5HTEUsIEdldFF1ZXJ5T2JqZWN0
aTY0dkFOR0xFLCBvcgotICAgIEdldFF1ZXJ5T2JqZWN0dWk2NHZBTkdMRSBpcyBjYWxsZWQgd2hl
cmUgPGlkPiBpcyB0aGUgbmFtZSBvZiBhIGN1cnJlbnRseQotICAgIGFjdGl2ZSBxdWVyeSBvYmpl
Y3QuCi0KLSAgICBUaGUgZXJyb3IgSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBpZiBHZXRRdWVy
eU9iamVjdGl2QU5HTEUsCi0gICAgR2V0UXVlcnlPYmplY3R1aXZBTkdMRSwgR2V0UXVlcnlPYmpl
Y3RpNjR2QU5HTEUsIG9yCi0gICAgR2V0UXVlcnlPYmplY3R1aTY0dkFOR0xFIGlzIGNhbGxlZCB3
aGVyZSA8cG5hbWU+IGlzIG5vdAotICAgIFFVRVJZX1JFU1VMVF9BTkdMRSBvciBRVUVSWV9SRVNV
TFRfQVZBSUxBQkxFX0FOR0xFLgotCi1OZXcgU3RhdGUKLQotICAgIChBZGQgYSBuZXcgdGFibGUg
Ni54eCwgIlF1ZXJ5IE9wZXJhdGlvbnMiKQotICAgIAotICAgIEdldCBWYWx1ZSAgICAgICAgICAg
ICAgICAgICAgICBUeXBlICAgIEdldCBDb21tYW5kICAgICAgICAgICAgICBJbml0aWFsIFZhbHVl
ICAgRGVzY3JpcHRpb24gICAgICAgICAgICAgIFNlYwotICAgIC0tLS0tLS0tLSAgICAgICAgICAg
ICAgICAgICAgICAtLS0tICAgIC0tLS0tLS0tLS0tICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0t
ICAgLS0tLS0tLS0tLS0gICAgICAgICAgICAgIC0tLS0tLQotICAgIC0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBCICAgICAgIC0gICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSAgICAg
ICAgICAgcXVlcnkgYWN0aXZlICAgICAgICAgICAgIDUuMwotICAgIENVUlJFTlRfUVVFUllfQU5H
TEUgICAgICAgICAgICBaKyAgICAgIEdldFF1ZXJ5aXZBTkdMRSAgICAgICAgICAwICAgICAgICAg
ICAgICAgYWN0aXZlIHF1ZXJ5IElEICAgICAgICAgIDUuMwotICAgIFFVRVJZX1JFU1VMVF9BTkdM
RSAgICAgICAgICAgICBaKyAgICAgIEdldFF1ZXJ5T2JqZWN0dWl2QU5HTEUsICAwICAgICAgICAg
ICAgICAgc2FtcGxlcy1wYXNzZWQgY291bnQgICAgIDUuMwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdldFF1ZXJ5T2JqZWN0dWk2NHZBTkdMRQotICAgIFFVRVJZ
X1JFU1VMVF9BVkFJTEFCTEVfQU5HTEUgICBCICAgICAgIEdldFF1ZXJ5T2JqZWN0aXZBTkdMRSAg
ICBGQUxTRSAgICAgICAgICAgcXVlcnkgcmVzdWx0IGF2YWlsYWJsZSAgIDUuMwotCi1OZXcgSW1w
bGVtZW50YXRpb24gRGVwZW5kZW50IFN0YXRlCi0KLSAgICAoQWRkIHRoZSBmb2xsb3dpbmcgZW50
cnkgdG8gdGFibGUgNi4xOCk6Ci0KLSAgICBHZXQgVmFsdWUgICAgICAgICAgICAgICAgICAgICAg
VHlwZSAgICBHZXQgQ29tbWFuZCAgICAgIE1pbmltdW0gVmFsdWUgICAgICBEZXNjcmlwdGlvbiAg
ICAgICAgICAgU2VjCi0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgIC0tLS0gICAg
LS0tLS0tLS0tLS0gICAgICAtLS0tLS0tLS0tLS0tICAgICAgLS0tLS0tLS0tLS0tLS0tLSAgICAg
IC0tLS0tLQotICAgIFFVRVJZX0NPVU5URVJfQklUU19BTkdMRSAgICAgICBaKyAgICAgIEdldFF1
ZXJ5aXZBTkdMRSAgc2VlIDYuMS45ICAgICAgICAgIE51bWJlciBvZiBiaXRzIGluICAgICA2LjEu
OQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5IGNvdW50ZXIKLQotRXhhbXBsZXMKLQotICAg
ICgxKSBIZXJlIGlzIHNvbWUgcm91Z2ggc2FtcGxlIGNvZGUgdGhhdCBkZW1vbnN0cmF0ZXMgdGhl
IGludGVuZGVkIHVzYWdlCi0gICAgICAgIG9mIHRoaXMgZXh0ZW5zaW9uLgotCi0gICAgICAgIEdM
aW50IHF1ZXJpZXNbTl07Ci0gICAgICAgIEdMaW50IGF2YWlsYWJsZSA9IDA7Ci0gICAgICAgIC8v
IHRpbWVyIHF1ZXJpZXMgY2FuIGNvbnRhaW4gbW9yZSB0aGFuIDMyIGJpdHMgb2YgZGF0YSwgc28g
YWx3YXlzCi0gICAgICAgIC8vIHF1ZXJ5IHRoZW0gdXNpbmcgdGhlIDY0IGJpdCB0eXBlcyB0byBh
dm9pZCBvdmVyZmxvdwotICAgICAgICBHTHVpbnQ2NEFOR0xFIHRpbWVFbGFwc2VkID0gMDsKLQot
ICAgICAgICAvLyBDcmVhdGUgYSBxdWVyeSBvYmplY3QuCi0gICAgICAgIGdsR2VuUXVlcmllc0FO
R0xFKE4sIHF1ZXJpZXMpOwotCi0gICAgICAgIC8vIFN0YXJ0IHF1ZXJ5IDEKLSAgICAgICAgZ2xC
ZWdpblF1ZXJ5QU5HTEUoR0xfVElNRV9FTEFQU0VEX0FOR0xFLCBxdWVyaWVzWzBdKTsKLQotICAg
ICAgICAvLyBEcmF3IG9iamVjdCAxCi0gICAgICAgIC4uLi4KLQotICAgICAgICAvLyBFbmQgcXVl
cnkgMQotICAgICAgICBnbEVuZFF1ZXJ5QU5HTEUoR0xfVElNRV9FTEFQU0VEX0FOR0xFKTsKLQot
ICAgICAgICAuLi4KLQotICAgICAgICAvLyBTdGFydCBxdWVyeSBOCi0gICAgICAgIGdsQmVnaW5R
dWVyeUFOR0xFKEdMX1RJTUVfRUxBUFNFRF9BTkdMRSwgcXVlcmllc1tOLTFdKTsKLQotICAgICAg
ICAvLyBEcmF3IG9iamVjdCBOCi0gICAgICAgIC4uLi4KLQotICAgICAgICAvLyBFbmQgcXVlcnkg
TgotICAgICAgICBnbEVuZFF1ZXJ5QU5HTEUoR0xfVElNRV9FTEFQU0VEX0FOR0xFKTsKLQotICAg
ICAgICAvLyBXYWl0IGZvciBhbGwgcmVzdWx0cyB0byBiZWNvbWUgYXZhaWxhYmxlCi0gICAgICAg
IHdoaWxlICghYXZhaWxhYmxlKSB7Ci0gICAgICAgICAgICBnbEdldFF1ZXJ5T2JqZWN0aXZBTkdM
RShxdWVyaWVzW04tMV0sIEdMX1FVRVJZX1JFU1VMVF9BVkFJTEFCTEVfQU5HTEUsICZhdmFpbGFi
bGUpOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IE47IGkrKykgewotICAg
ICAgICAgICAgLy8gU2VlIGhvdyBtdWNoIHRpbWUgdGhlIHJlbmRlcmluZyBvZiBvYmplY3QgaSB0
b29rIGluIG5hbm9zZWNvbmRzLgotICAgICAgICAgICAgZ2xHZXRRdWVyeU9iamVjdHVpNjR2QU5H
TEUocXVlcmllc1tpXSwgR0xfUVVFUllfUkVTVUxUX0FOR0xFLCAmdGltZUVsYXBzZWQpOwotCi0g
ICAgICAgICAgICAvLyBEbyBzb21ldGhpbmcgdXNlZnVsIHdpdGggdGhlIHRpbWUuICBOb3RlIHRo
YXQgY2FyZSBzaG91bGQgYmUKLSAgICAgICAgICAgIC8vIHRha2VuIHRvIHVzZSBhbGwgc2lnbmlm
aWNhbnQgYml0cyBvZiB0aGUgcmVzdWx0LCBub3QganVzdCB0aGUKLSAgICAgICAgICAgIC8vIGxl
YXN0IHNpZ25pZmljYW50IDMyIGJpdHMuCi0gICAgICAgICAgICBBZGp1c3RPYmplY3RMT0RCYXNl
ZE9uRHJhd1RpbWUoaSwgdGltZUVsYXBzZWQpOwotICAgICAgICB9Ci0KLSAgICAgICAgVGhpcyBl
eGFtcGxlIGlzIHN1Yi1vcHRpbWFsIGluIHRoYXQgaXQgc3RhbGxzIGF0IHRoZSBlbmQgb2YgZXZl
cnkKLSAgICAgICAgZnJhbWUgdG8gd2FpdCBmb3IgcXVlcnkgcmVzdWx0cy4gIElkZWFsbHksIHRo
ZSBjb2xsZWN0aW9uIG9mIHJlc3VsdHMKLSAgICAgICAgd291bGQgYmUgZGVsYXllZCBvbmUgZnJh
bWUgdG8gbWluaW1pemUgdGhlIGFtb3VudCBvZiB0aW1lIHNwZW50Ci0gICAgICAgIHdhaXRpbmcg
Zm9yIHRoZSBHUFUgdG8gZmluaXNoIHJlbmRlcmluZy4KLSAgICAgICAgCi0gICAgKDIpIFRoaXMg
ZXhhbXBsZSBpcyBiYXNpY2FsbHkgdGhlIHNhbWUgYXMgdGhlIGV4YW1wbGUgYWJvdmUgYnV0IHVz
ZXMKLSAgICAgICAgUXVlcnlDb3VudGVyIGluc3RlYWQuCi0gICAgCi0gICAgICAgIEdMaW50IHF1
ZXJpZXNbTisxXTsKLSAgICAgICAgR0xpbnQgYXZhaWxhYmxlID0gMDsKLSAgICAgICAgLy8gdGlt
ZXIgcXVlcmllcyBjYW4gY29udGFpbiBtb3JlIHRoYW4gMzIgYml0cyBvZiBkYXRhLCBzbyBhbHdh
eXMKLSAgICAgICAgLy8gcXVlcnkgdGhlbSB1c2luZyB0aGUgNjQgYml0IHR5cGVzIHRvIGF2b2lk
IG92ZXJmbG93Ci0gICAgICAgIEdMdWludDY0QU5HTEUgdGltZVN0YXJ0LCB0aW1lRW5kLCB0aW1l
RWxhcHNlZCA9IDA7Ci0KLSAgICAgICAgLy8gQ3JlYXRlIGEgcXVlcnkgb2JqZWN0LgotICAgICAg
ICBnbEdlblF1ZXJpZXNBTkdMRShOKzEsIHF1ZXJpZXMpOwotCi0gICAgICAgIC8vIFF1ZXJ5IGN1
cnJlbnQgdGltZXN0YW1wIDEKLSAgICAgICAgZ2xRdWVyeUNvdW50ZXJBTkdMRShxdWVyaWVzWzBd
LCBHTF9USU1FU1RBTVBfQU5HTEUpOwotCi0gICAgICAgIC8vIERyYXcgb2JqZWN0IDEKLSAgICAg
ICAgLi4uLgotCi0gICAgICAgIC8vIFF1ZXJ5IGN1cnJlbnQgdGltZXN0YW1wIE4KLSAgICAgICAg
Z2xRdWVyeUNvdW50ZXJBTkdMRShxdWVyaWVzW04tMV0sIEdMX1RJTUVTVEFNUF9BTkdMRSk7Ci0K
LSAgICAgICAgLy8gRHJhdyBvYmplY3QgTgotICAgICAgICAuLi4uCi0KLSAgICAgICAgLy8gUXVl
cnkgY3VycmVudCB0aW1lc3RhbXAgTisxCi0gICAgICAgIGdsUXVlcnlDb3VudGVyQU5HTEUocXVl
cmllc1tOXSwgR0xfVElNRVNUQU1QX0FOR0xFKTsKLQotICAgICAgICAvLyBXYWl0IGZvciBhbGwg
cmVzdWx0cyB0byBiZWNvbWUgYXZhaWxhYmxlCi0gICAgICAgIHdoaWxlICghYXZhaWxhYmxlKSB7
Ci0gICAgICAgICAgICBnbEdldFF1ZXJ5T2JqZWN0aXZBTkdMRShxdWVyaWVzW05dLCBHTF9RVUVS
WV9SRVNVTFRfQVZBSUxBQkxFX0FOR0xFLCAmYXZhaWxhYmxlKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGZvciAoaSA9IDA7IGkgPCBOOyBpKyspIHsKLSAgICAgICAgICAgIC8vIFNlZSBob3cgbXVj
aCB0aW1lIHRoZSByZW5kZXJpbmcgb2Ygb2JqZWN0IGkgdG9vayBpbiBuYW5vc2Vjb25kcy4KLSAg
ICAgICAgICAgIGdsR2V0UXVlcnlPYmplY3R1aTY0dkFOR0xFKHF1ZXJpZXNbaV0sIEdMX1FVRVJZ
X1JFU1VMVF9BTkdMRSwgJnRpbWVTdGFydCk7Ci0gICAgICAgICAgICBnbEdldFF1ZXJ5T2JqZWN0
dWk2NHZBTkdMRShxdWVyaWVzW2krMV0sIEdMX1FVRVJZX1JFU1VMVF9BTkdMRSwgJnRpbWVFbmQp
OwotICAgICAgICAgICAgdGltZUVsYXBzZWQgPSB0aW1lRW5kIC0gdGltZVN0YXJ0OwotCi0gICAg
ICAgICAgICAvLyBEbyBzb21ldGhpbmcgdXNlZnVsIHdpdGggdGhlIHRpbWUuICBOb3RlIHRoYXQg
Y2FyZSBzaG91bGQgYmUKLSAgICAgICAgICAgIC8vIHRha2VuIHRvIHVzZSBhbGwgc2lnbmlmaWNh
bnQgYml0cyBvZiB0aGUgcmVzdWx0LCBub3QganVzdCB0aGUKLSAgICAgICAgICAgIC8vIGxlYXN0
IHNpZ25pZmljYW50IDMyIGJpdHMuCi0gICAgICAgICAgICBBZGp1c3RPYmplY3RMT0RCYXNlZE9u
RHJhd1RpbWUoaSwgdGltZUVsYXBzZWQpOwotICAgICAgICB9Ci0KLUlzc3VlcyBmcm9tIEVYVF90
aW1lcl9xdWVyeQotCi0gICAgKDEpIFdoYXQgdGltZSBpbnRlcnZhbCBpcyBiZWluZyBtZWFzdXJl
ZD8KLQotICAgIFJFU09MVkVEOiAgVGhlIHRpbWVyIHN0YXJ0cyB3aGVuIGFsbCBjb21tYW5kcyBw
cmlvciB0byBCZWdpblF1ZXJ5KCkgaGF2ZQotICAgIGJlZW4gZnVsbHkgZXhlY3V0ZWQuICBBdCB0
aGF0IHBvaW50LCBldmVyeXRoaW5nIHRoYXQgc2hvdWxkIGJlIGRyYXduIGJ5Ci0gICAgdGhvc2Ug
Y29tbWFuZHMgaGFzIGJlZW4gd3JpdHRlbiB0byB0aGUgZnJhbWVidWZmZXIuICBUaGUgdGltZXIg
c3RvcHMKLSAgICB3aGVuIGFsbCBjb21tYW5kcyBwcmlvciB0byBFbmRRdWVyeSgpIGhhdmUgYmVl
biBmdWxseSBleGVjdXRlZC4KLQotICAgICgyKSBXaGF0IHVuaXQgb2YgdGltZSB3aWxsIHRpbWUg
aW50ZXJ2YWxzIGJlIHJldHVybmVkIGluPwotCi0gICAgUkVTT0xWRUQ6ICBOYW5vc2Vjb25kcyAo
MTBeLTkgc2Vjb25kcykuICBUaGlzIHVuaXQgb2YgbWVhc3VyZW1lbnQgYWxsb3dzCi0gICAgZm9y
IHJlYXNvbmFibHkgYWNjdXJhdGUgdGltaW5nIG9mIGV2ZW4gc21hbGwgYmxvY2tzIG9mIHJlbmRl
cmluZwotICAgIGNvbW1hbmRzLiAgVGhlIGdyYW51bGFyaXR5IG9mIHRoZSB0aW1lciBpcyBpbXBs
ZW1lbnRhdGlvbi1kZXBlbmRlbnQuICBBCi0gICAgMzItYml0IHF1ZXJ5IGNvdW50ZXIgY2FuIGV4
cHJlc3MgaW50ZXJ2YWxzIG9mIHVwIHRvIGFwcHJveGltYXRlbHkgNAotICAgIHNlY29uZHMuCi0K
LSAgICAoMykgV2hhdCBzaG91bGQgYmUgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGNvdW50ZXIgYml0
cyBmb3IgdGltZXIgcXVlcmllcz8KLQotICAgIFJFU09MVkVEOiAgMzAgYml0cywgd2hpY2ggd2ls
bCBhbGxvdyB0aW1pbmcgc2VjdGlvbnMgdGhhdCB0YWtlIHVwIHRvIDEKLSAgICBzZWNvbmQgdG8g
cmVuZGVyLgotCi0gICAgKDQpIEhvdyBhcmUgY291bnRlciByZXN1bHRzIG9mIG1vcmUgdGhhbiAz
MiBiaXRzIHJldHVybmVkPwotCi0gICAgUkVTT0xWRUQ6ICBWaWEgdHdvIG5ldyBkYXRhdHlwZXMs
IGludDY0QU5HTEUgYW5kIHVpbnQ2NEFOR0xFLCBhbmQgdGhlaXIKLSAgICBjb3JyZXNwb25kaW5n
IEdldFF1ZXJ5T2JqZWN0IGVudHJ5IHBvaW50cy4gIFRoZXNlIHR5cGVzIGhvbGQgaW50ZWdlcgot
ICAgIHZhbHVlcyBhbmQgaGF2ZSBhIG1pbmltdW0gYml0IHdpZHRoIG9mIDY0LgotCi0gICAgKDUp
IFNob3VsZCB0aGUgZXh0ZW5zaW9uIG1lYXN1cmUgdG90YWwgdGltZSBlbGFwc2VkIGJldHdlZW4g
dGhlIGZ1bGwKLSAgICAgICAgY29tcGxldGlvbiBvZiB0aGUgQmVnaW5RdWVyeSBhbmQgRW5kUXVl
cnkgY29tbWFuZHMsIG9yIGp1c3QgdGltZQotICAgICAgICBzcGVudCBpbiB0aGUgZ3JhcGhpY3Mg
bGlicmFyeT8KLQotICAgIFJFU09MVkVEOiAgVGhpcyBleHRlbnNpb24gd2lsbCBtZWFzdXJlIHRo
ZSB0b3RhbCB0aW1lIGVsYXBzZWQgYmV0d2VlbgotICAgIHRoZSBmdWxsIGNvbXBsZXRpb24gb2Yg
dGhlc2UgY29tbWFuZHMuICBGdXR1cmUgZXh0ZW5zaW9ucyBtYXkgaW1wbGVtZW50Ci0gICAgYSBx
dWVyeSB0byBkZXRlcm1pbmUgdGltZSBlbGFwc2VkIGF0IGRpZmZlcmVudCBzdGFnZXMgb2YgdGhl
IGdyYXBoaWNzCi0gICAgcGlwZWxpbmUuCi0KLSAgICAoNikgSWYgbXVsdGlwbGUgcXVlcnkgdHlw
ZXMgYXJlIHN1cHBvcnRlZCwgY2FuIG11bHRpcGxlIHF1ZXJ5IHR5cGVzIGJlCi0gICAgICAgIGFj
dGl2ZSBzaW11bHRhbmVvdXNseT8KLQotICAgIFJFU09MVkVEOiAgWWVzOyBhbiBhcHBsaWNhdGlv
biBtYXkgcGVyZm9ybSBhIHRpbWVyIHF1ZXJ5IGFuZCBhbm90aGVyCi0gICAgdHlwZSBvZiBxdWVy
eSBzaW11bHRhbmVvdXNseS4gIEFuIGFwcGxpY2F0aW9uIGNhbiBub3QgcGVyZm9ybSBtdWx0aXBs
ZQotICAgIHRpbWVyIHF1ZXJpZXMgb3IgbXVsdGlwbGUgcXVlcmllcyBvZiBvdGhlciB0eXBlcyBz
aW11bHRhbmVvdXNseS4gIEFuCi0gICAgYXBwbGljYXRpb24gYWxzbyBjYW4gbm90IHVzZSB0aGUg
c2FtZSBxdWVyeSBvYmplY3QgZm9yIGFub3RoZXIgcXVlcnkKLSAgICBhbmQgYSB0aW1lciBxdWVy
eSBzaW11bHRhbmVvdXNseS4KLQotICAgICg3KSBEbyBxdWVyeSBvYmplY3RzIGhhdmUgYSBxdWVy
eSB0eXBlIHBlcm1hbmVudGx5IGFzc29jaWF0ZWQgd2l0aCB0aGVtPwotCi0gICAgUkVTT0xWRUQ6
ICBOby4gIEEgc2luZ2xlIHF1ZXJ5IG9iamVjdCBjYW4gYmUgdXNlZCB0byBwZXJmb3JtIGRpZmZl
cmVudAotICAgIHR5cGVzIG9mIHF1ZXJpZXMsIGJ1dCBub3QgYXQgdGhlIHNhbWUgdGltZS4KLQot
ICAgIEhhdmluZyBhIGZpeGVkIHR5cGUgZm9yIGVhY2ggcXVlcnkgb2JqZWN0IHNpbXBsaWZpZXMg
c29tZSBhc3BlY3RzIG9mIHRoZQotICAgIGltcGxlbWVudGF0aW9uIC0tIG5vdCBoYXZpbmcgdG8g
ZGVhbCB3aXRoIHF1ZXJpZXMgd2l0aCBkaWZmZXJlbnQgcmVzdWx0Ci0gICAgc2l6ZXMsIGZvciBl
eGFtcGxlLiAgSXQgd291bGQgYWxzbyBtZWFuIHRoYXQgQmVnaW5RdWVyeSgpIHdpdGggYSBxdWVy
eQotICAgIG9iamVjdCBvZiB0aGUgIndyb25nIiB0eXBlIHdvdWxkIHJlc3VsdCBpbiBhbiBJTlZB
TElEX09QRVJBVElPTiBlcnJvci4KLQotICAgIFVQREFURTogVGhpcyByZXNvbHV0aW9uIHdhcyBy
ZWxldmFudCBmb3IgRVhUX3RpbWVyX3F1ZXJ5IGFuZCBPcGVuR0wgMi4wLgotICAgIFNpbmNlIEVY
VF90cmFuc2Zvcm1fZmVlZGJhY2sgaGFzIHNpbmNlIGJlZW4gaW5jb3Jwb3JhdGVkIGludG8gdGhl
IGNvcmUsCi0gICAgdGhlIHJlc29sdXRpb24gaXMgdGhhdCBCZWdpblF1ZXJ5IHdpbGwgZ2VuZXJh
dGUgZXJyb3IgSU5WQUxJRF9PUEVSQVRJT04KLSAgICBpZiA8aWQ+IHJlcHJlc2VudHMgYSBxdWVy
eSBvYmplY3Qgb2YgYSBkaWZmZXJlbnQgdHlwZS4KLQotICAgICg4KSBIb3cgcHJlZGljdGFibGUv
cmVwZWF0YWJsZSBhcmUgdGhlIHJlc3VsdHMgcmV0dXJuZWQgYnkgdGhlIHRpbWVyCi0gICAgICAg
IHF1ZXJ5PwotCi0gICAgUkVTT0xWRUQ6ICBJbiBnZW5lcmFsLCB0aGUgYW1vdW50IG9mIHRpbWUg
bmVlZGVkIHRvIHJlbmRlciB0aGUgc2FtZQotICAgIHByaW1pdGl2ZXMgc2hvdWxkIGJlIGZhaXJs
eSBjb25zdGFudC4gIEJ1dCB0aGVyZSBtYXkgYmUgbWFueSBvdGhlcgotICAgIHN5c3RlbSBpc3N1
ZXMgKGUuZy4sIGNvbnRleHQgc3dpdGNoaW5nIG9uIHRoZSBDUFUgYW5kIEdQVSwgdmlydHVhbAot
ICAgIG1lbW9yeSBwYWdlIGZhdWx0cywgbWVtb3J5IGNhY2hlIGJlaGF2aW9yIG9uIHRoZSBDUFUg
YW5kIEdQVSkgdGhhdCBjYW4KLSAgICBjYXVzZSB0aW1lcyB0byB2YXJ5IHdpbGRseS4KLQotICAg
IE5vdGUgdGhhdCBtb2Rlcm4gR1BVcyBhcmUgZ2VuZXJhbGx5IGhpZ2hseSBwaXBlbGluZWQsIGFu
ZCBtYXkgYmUKLSAgICBwcm9jZXNzaW5nIGRpZmZlcmVudCBwcmltaXRpdmVzIGluIGRpZmZlcmVu
dCBwaXBlbGluZSBzdGFnZXMKLSAgICBzaW11bHRhbmVvdXNseS4gIEluIHRoaXMgZXh0ZW5zaW9u
LCB0aGUgdGltZXJzIHN0YXJ0IGFuZCBzdG9wIHdoZW4gdGhlCi0gICAgQmVnaW5RdWVyeS9FbmRR
dWVyeSBjb21tYW5kcyByZWFjaCB0aGUgYm90dG9tIG9mIHRoZSByZW5kZXJpbmcgcGlwZWxpbmUu
Ci0gICAgV2hhdCB0aGF0IG1lYW5zIGlzIHRoYXQgYnkgdGhlIHRpbWUgdGhlIHRpbWVyIHN0YXJ0
cywgdGhlIEdMIGRyaXZlciBvbgotICAgIHRoZSBDUFUgbWF5IGhhdmUgc3RhcnRlZCB3b3JrIG9u
IEdMIGNvbW1hbmRzIGlzc3VlZCBhZnRlciBCZWdpblF1ZXJ5LAotICAgIGFuZCB0aGUgaGlnaGVy
IHBpcGVsaW5lIHN0YWdlcyAoZS5nLiwgdmVydGV4IHRyYW5zZm9ybWF0aW9uKSBtYXkgaGF2ZQot
ICAgIHN0YXJ0ZWQgYXMgd2VsbC4KLQotICAgKDkpIFdoYXQgc2hvdWxkIHRoZSBuZXcgNjQgYml0
IGludGVnZXIgdHlwZSBiZSBjYWxsZWQ/Ci0KLSAgICBSRVNPTFZFRDogVGhlIG5ldyB0eXBlcyB3
aWxsIGJlIGNhbGxlZCBHTGludDY0QU5HTEUvR0x1aW50NjRBTkdMRS4gIFRoZSBuZXcKLSAgICBj
b21tYW5kIHN1ZmZpeGVzIHdpbGwgYmUgaTY0IGFuZCB1aTY0LiAgVGhlc2UgbmFtZXMgY2xlYXJs
eSBjb252ZXkgdGhlCi0gICAgbWluaW11bSBzaXplIG9mIHRoZSB0eXBlcy4gIFRoZXNlIHR5cGVz
IGFyZSBzaW1pbGFyIHRvIHRoZSBDOTkgc3RhbmRhcmQKLSAgICB0eXBlIGludF9sZWFzdDY0X3Qs
IGJ1dCB3ZSB1c2UgbmFtZXMgc2ltaWxhciB0byB0aGUgQzk5IG9wdGlvbmFsIHR5cGUKLSAgICBp
bnQ2NF90IGZvciBzaW1wbGljaXR5LgotCi1Jc3N1ZXMgZnJvbSBBUkJfdGltZXJfcXVlcnkKLQot
ICAgKDEwKSBXaGF0IGFib3V0IHRpbGUtYmFzZWQgaW1wbGVtZW50YXRpb25zPyBUaGUgZWZmZWN0
cyBvZiBhIGNvbW1hbmQgYXJlCi0gICAgICAgIG5vdCBjb21wbGV0ZSB1bnRpbCB0aGUgZnJhbWUg
aXMgY29tcGxldGVseSByZW5kZXJlZC4gVGltaW5nIHJlY29yZGVkCi0gICAgICAgIGJlZm9yZSB0
aGUgZnJhbWUgaXMgY29tcGxldGUgbWF5IG5vdCBiZSB3aGF0IGRldmVsb3BlcnMgZXhwZWN0LiBB
bHNvCi0gICAgICAgIHRoZSBhbW91bnQgb2YgdGltZSBuZWVkZWQgdG8gcmVuZGVyIHRoZSBzYW1l
IHByaW1pdGl2ZXMgaXMgbm90Ci0gICAgICAgIGNvbnNpc3RlbnQsIHdoaWNoIGNvbmZsaWN0cyB3
aXRoIGlzc3VlICg4KSBhYm92ZS4gVGhlIHRpbWUgZGVwZW5kcyBvbgotICAgICAgICBob3cgZWFy
bHkgb3IgbGF0ZSBpbiB0aGUgc2NlbmUgaXQgaXMgcGxhY2VkLgotCi0gICAgUkVTT0xWRUQ6IFRo
ZSBjdXJyZW50IGxhbmd1YWdlIHN1cHBvcnRzIHRpbGUtYmFzZWQgcmVuZGVyaW5nIG9rYXkgYXMg
aXQKLSAgICBpcyB3cml0dGVuLiBEZXZlbG9wZXJzIGFyZSB3YXJuZWQgdGhhdCB1c2luZyB0aW1l
cnMgb24gdGlsZS1iYXNlZAotICAgIGltcGxlbWVudGF0aW9uIG1heSBub3QgcHJvZHVjZSByZXN1
bHRzIHRoZXkgZXhwZWN0IHNpbmNlIHJlbmRlcmluZyBpcyBub3QKLSAgICBkb25lIGluIGEgbGlu
ZWFyIG9yZGVyLiBUaW1pbmcgcmVzdWx0cyBhcmUgY2FsY3VsYXRlZCB3aGVuIHRoZSBmcmFtZSBp
cwotICAgIGNvbXBsZXRlZCBhbmQgbWF5IGRlcGVuZCBvbiBob3cgZWFybHkgb3IgbGF0ZSBpbiB0
aGUgc2NlbmUgaXQgaXMgcGxhY2VkLgotICAgIAotICAgKDExKSBDYW4gdGhlIEdMIGltcGxlbWVu
dGF0aW9uIHVzZSBkaWZmZXJlbnQgY2xvY2tzIHRvIGltcGxlbWVudCB0aGUKLSAgICAgICAgVElN
RV9FTEFQU0VEIGFuZCBUSU1FU1RBTVAgcXVlcmllcz8KLQotICAgUkVTT0xWRUQ6IFllcywgdGhl
IGltcGxlbWVuYXRpb24gY2FuIHVzZSBkaWZmZXJlbnQgaW50ZXJuYWwgY2xvY2tzIHRvCi0gICBp
bXBsZW1lbnQgVElNRV9FTEFQU0VEIGFuZCBUSU1FU1RBTVAuIElmIGRpZmZlcmVudCBjbG9ja3Mg
YXJlCi0gICB1c2VkIGl0IGlzIHBvc3NpYmxlIHRoZXJlIGlzIGEgc2xpZ2h0IGRpc2NyZXBhbmN5
IHdoZW4gY29tcGFyaW5nIHF1ZXJpZXMKLSAgIG1hZGUgZnJvbSBUSU1FX0VMQVBTRUQgYW5kIFRJ
TUVTVEFNUDsgdGhleSBtYXkgaGF2ZSBzbGlnaHQKLSAgIGRpZmZlcmVuY2VzIHdoZW4gYm90aCBh
cmUgdXNlZCB0byBtZWFzdXJlIHRoZSBzYW1lIHNlcXVlbmNlLiBIb3dldmVyLCB0aGlzCi0gICBp
cyB1bmxpa2VseSB0byBhZmZlY3QgcmVhbCBhcHBsaWNhdGlvbnMgc2luY2UgY29tcGFyaW5nIHRo
ZSB0d28gcXVlcmllcyBpcwotICAgbm90IGV4cGVjdGVkIHRvIGJlIHVzZWZ1bC4KLQotSXNzdWVz
Ci0KLSAgICAoMTIpIFdoYXQgc2hvdWxkIHdlIGNhbGwgdGhpcyBleHRlbnNpb24/Ci0KLSAgICBS
RVNPTFZFRDogQU5HTEVfdGltZXJfcXVlcnkKLQotICAgICgxMykgV2h5IGlzIHRoaXMgZG9uZSBh
cyBhIHNlcGFyYXRlIGV4dGVuc2lvbiBpbnN0ZWFkIG9mIGp1c3Qgc3VwcG9ydGluZwotICAgICAg
ICAgQVJCX3RpbWVyX3F1ZXJ5PwotCi0gICAgQVJCX3RpbWVyX3F1ZXJ5IGlzIHdyaXR0ZW4gYWdh
aW5zdCBPcGVuR0wgMy4yLCB3aGljaCBpbmNsdWRlcyBhIGxvdCBvZgotICAgIHRoZSByZXF1aXJl
ZCBzdXBwb3J0IGZvciBkZWFsaW5nIHdpdGggcXVlcnkgb2JqZWN0cy4gTm9uZSBvZiB0aGVzZQot
ICAgIGZ1bmN0aW9ucyBvciB0b2tlbnMgZXhpc3QgaW4gT3BlbkdMIEVTLCBhbmQgYXMgc3VjaCBo
YXZlIHRvIGJlIGFkZGVkIGluCi0gICAgdGhpcyBzcGVjaWZpY2F0aW9uLgotCi0gICAgKDE0KSBI
b3cgZG9lcyB0aGlzIGV4dGVuc2lvbiBkaWZmZXIgZnJvbSBBUkJfdGltZXJfcXVlcnk/Ci0KLSAg
ICBUaGlzIGV4dGVuc2lvbiBjb250YWlucyBtb3N0IEFSQl90aW1lcl9xdWVyeSBiZWhhdmlvciB1
bmNoYW5nZWQgYXMgd2VsbAotICAgIGFzIGEgc3Vic2V0IG9mIHRoZSBxdWVyeSBzdXBwb3J0IHJl
cXVpcmVkIHRvIHVzZSBpdCBmcm9tIHRoZSBjb3JlCi0gICAgT3BlbkdMIDMuMiBzcGVjLiBJdCBv
bWl0cyB0aGUgZ2xHZXRJbnRlZ2VyKFRJTUVTVEFNUCkgZnVuY3Rpb25hbGl0eSB1c2VkIHRvCi0g
ICAgcXVlcnkgdGhlIGN1cnJlbnQgdGltZSBvbiB0aGUgR1BVLCBidXQgdGhlIGJlaGF2aW9yIGZv
ciBhbGwgcmVtYWluaW5nCi0gICAgZnVuY3Rpb25hbGl0eSB0YWtlbiBmcm9tIEFSQl90aW1lcl9x
dWVyeSBpcyB0aGUgc2FtZS4KLSAgICAKLSAgICAoMTUpIEFyZSBxdWVyeSBvYmplY3RzIHNoYXJl
YWJsZSBiZXR3ZWVuIG11bHRpcGxlIGNvbnRleHRzPwotCi0gICAgUkVTT0xWRUQ6IE5vLiAgUXVl
cnkgb2JqZWN0cyBhcmUgbGlnaHR3ZWlnaHQgYW5kIHdlIG5vcm1hbGx5IHNoYXJlIAotICAgIGxh
cmdlIGRhdGEgYWNyb3NzIGNvbnRleHRzLiAgQWxzbywgYmVpbmcgYWJsZSB0byBzaGFyZSBxdWVy
eSBvYmplY3RzCi0gICAgYWNyb3NzIGNvbnRleHRzIGlzIG5vdCBwYXJ0aWN1bGFybHkgdXNlZnVs
LiAgSW4gb3JkZXIgdG8gZG8gdGhlIGFzeW5jIAotICAgIHF1ZXJ5IGFjcm9zcyBjb250ZXh0cywg
YSBxdWVyeSBvbiBvbmUgY29udGV4dCB3b3VsZCBoYXZlIHRvIGJlIGZpbmlzaGVkIAotICAgIGJl
Zm9yZSB0aGUgb3RoZXIgY29udGV4dCBjb3VsZCBxdWVyeSBpdC4gCi0KLVJldmlzaW9uIEhpc3Rv
cnkKLQotICAgIFJldmlzaW9uIDEsIDIwMTEvMDQvMjgKLSAgICAgIC0gY29waWVkIGZyb20gcmV2
aXNpb24gOSBvZiBBUkJfdGltZXJfcXVlcnkgYW5kIHJldmlzaW9uIDcgb2YKLSAgICAgICAgQVJC
X29jY2x1c2lvbl9xdWVyeQotICAgICAgLSByZW1vdmVkIGxhbmd1YWdlIHRoYXQgd2FzIGNsZWFy
bHkgbm90IHJlbGV2YW50IHRvIEVTMgotICAgICAgLSByZWJhc2VkIGNoYW5nZXMgYWdhaW5zdCB0
aGUgT3BlbkdMIEVTIDIuMCBzcGVjaWZpY2F0aW9uCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9leHRlbnNpb25zL0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZS50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9BTkdMRV90cmFuc2xh
dGVkX3NoYWRlcl9zb3VyY2UudHh0CShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9leHRlbnNpb25zL0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZS50eHQJ
KG5vbmV4aXN0ZW50KQpAQCAtMSwxMTggKzAsMCBAQAotTmFtZQotCi0gICAgQU5HTEVfdHJhbnNs
YXRlZF9zaGFkZXJfc291cmNlCi0KLU5hbWUgU3RyaW5ncwotCi0gICAgR0xfQU5HTEVfdHJhbnNs
YXRlZF9zaGFkZXJfc291cmNlCi0KLUNvbnRyaWJ1dG9ycwotCi0gICAgRGFuaWVsIEtvY2gsIFRy
YW5zR2FtaW5nIEluYy4KLSAgICBHcmVnZyBUYXZhcmVzLCBHb29nbGUgSW5jLgotICAgIEtlbm5l
dGggUnVzc2VsbCwgR29vZ2xlIEluYy4KLSAgICBaaGVueWFvIE1vLCBHb29nbGUgSW5jLgotCi1D
b250YWN0Ci0KLSAgICBaaGVueWFvIE1vLCBHb29nbGUgSW5jLiAoem1vICdhdCcgZ29vZ2xlICdk
b3QnIGNvbSkKLQotU3RhdHVzCi0KLSAgICBJbXBsZW1lbnRlZCBpbiBBTkdMRSBFUzIKLQotVmVy
c2lvbgotCi0gICAgTGFzdCBNb2RpZmllZCBEYXRlOiBPY3RvYmVyIDUsIDIwMTEKLSAgICBBdXRo
b3IgUmV2aXNpb246IDIKLQotTnVtYmVyCi0KLSAgICBPcGVuR0wgRVMgRXh0ZW5zaW9uICMxMTMK
LQotRGVwZW5kZW5jaWVzCi0KLSAgICBPcGVuR0wgRVMgMi4wIGlzIHJlcXVpcmVkLgotCi0gICAg
VGhlIGV4dGVuc2lvbiBpcyB3cml0dGVuIGFnYWluc3QgdGhlIE9wZW5HTCBFUyAyLjAgc3BlY2lm
aWNhdGlvbi4KLQotT3ZlcnZpZXcKLQotICAgIFdlYkdMIHVzZXMgdGhlIEdMU0wgRVMgMi4wIHNw
ZWMgb24gYWxsIHBsYXRmb3JtcywgYW5kIHRyYW5zbGF0ZXMgdGhlc2UKLSAgICBzaGFkZXJzIHRv
IHRoZSBob3N0IHBsYXRmb3JtJ3MgbmF0aXZlIGxhbmd1YWdlIChITFNMLCBHTFNMLCBhbmQgZXZl
biBHTFNMCi0gICAgRVMpLiBGb3IgZGVidWdnaW5nIHB1cnBvc2VzLCBpdCBpcyB1c2VmdWwgdG8g
YmUgYWJsZSB0byBleGFtaW5lIHRoZSBzaGFkZXIKLSAgICBhZnRlciB0cmFuc2xhdGlvbi4KLQot
ICAgIFRoaXMgZXh0ZW5zaW9uIGFkZGVzIGEgbmV3IGZ1bmN0aW9uIHRvIHF1ZXJ5IHRoZSB0cmFu
c2xhdGVkIHNoYWRlciBzb3VyY2UsCi0gICAgYW5kIGFkZHMgYSBuZXcgZW51bSBmb3IgR2V0U2hh
ZGVyaXYncyA8cG5hbWU+IHBhcmFtZXRlciB0byBxdWVyeSB0aGUKLSAgICB0cmFuc2xhdGVkIHNo
YWRlciBzb3VyY2UgbGVuZ3RoLiAKLQotSVAgU3RhdHVzCi0KLSAgICBObyBrbm93biBJUCBjbGFp
bXMuCi0KLU5ldyBUeXBlcwotCi0gICAgTm9uZQotCi1OZXcgUHJvY2VkdXJlcyBhbmQgRnVuY3Rp
b25zCi0KLSAgICB2b2lkIEdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSh1aW50IHNoYWRl
ciwgc2l6ZWkgYnVmc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplaSogbGVuZ3RoLCBjaGFyKiBzb3VyY2UpOwotCi1OZXcgVG9rZW5zCi0KLSAgICBBY2Nl
cHRlZCBieSB0aGUgPHBuYW1lPiBwYXJhbWV0ZXIgb2YgR2V0U2hhZGVyaXY6Ci0KLSAgICBUUkFO
U0xBVEVEX1NIQURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFICAgICAgICAgICAgICAweDkzQTAKLQot
QWRkaXRpb25zIHRvIENoYXB0ZXIgNiBvZiB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZpY2F0aW9u
IChTdGF0ZSBhbmQgU3RhdGUKLVJlcXVlc3RzKQotCi0gICAgQXBwZW5kIGluIHRoZSBlbmQgb2Yg
dGhlIGZvdXJ0aCBwYXJhZ3JhcGggb2Ygc2VjdGlvbiA2LjEuOCAoU2hhZGVyIGFuZAotICAgIFBy
b2dyYW0gUXVlcmllcyk6Ci0KLSAgICAiIElmIDxwbmFtZT4gaXMgVFJBTlNMQVRFRF9TSEFERVJf
TEVOR1RIX0FOR0xFLCB0aGUgbGVuZ3RoIG9mIHRoZSB0cmFuc2xhdGVkCi0gICAgc291cmNlIHN0
cmluZywgaW5jbHVkaW5nIGEgbnVsbCB0ZXJtaW5hdG9yLCBpcyByZXR1cm5lZC4gSWYgbm8gc291
cmNlIGhhcwotICAgIGJlZW4gZGVmaW5lZCwgQ29tcGlsZVNoYWRlciBoYXMgbm90IGJlZW4gY2Fs
bGVkLCBvciB0aGUgdHJhbnNsYXRpb24gaGFzCi0gICAgZmFpbGVkIGZvciA8c2hhZGVyPiwgemVy
byBpcyByZXR1cm5lZC4iCi0KLSAgICBBcHBlbmQgYWZ0ZXIgdGhlIGxhc3QgcGFyYWdyYXBoIG9m
IHNlY3Rpb24gNi4xLjggKFNoYWRlciBhbmQgUHJvZ3JhbQotICAgIFF1ZXJpZXMpOgotCi0gICAg
IlRoZSBjb21tYW5kCi0KLSAgICAgIHZvaWQgR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xF
KCB1aW50IHNoYWRlciwgc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgIHNpemVpICpsZW5ndGgsIGNo
YXIgKnNvdXJjZSApOwotCi0gICAgcmV0dXJucyBpbiA8c291cmNlPiB0aGUgc3RyaW5nIG1ha2lu
ZyB1cCB0aGUgdHJhbnNsYXRlZCBzb3VyY2UgY29kZSBmb3IKLSAgICB0aGUgc2hhZGVyIG9iamVj
dCA8c2hhZGVyPi4gVGhlIHN0cmluZyA8c291cmNlPiB3aWxsIGJlIG51bGwgdGVybWluYXRlZC4K
LSAgICBUaGUgYWN0dWFsIG51bWJlciBvZiBjaGFyYWN0ZXJzIHdyaXR0ZW4gaW50byA8c291cmNl
PiwgZXhjbHVkaW5nIHRoZSBudWxsCi0gICAgdGVybWluYXRvciwgaXMgcmV0dXJuZWQgaW4gPGxl
bmd0aD4uIElmIDxsZW5ndGg+IGlzIE5VTEwsIG5vIGxlbmd0aCBpcwotICAgIHJldHVybmVkLiBU
aGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0IG1heSBiZSB3cml0dGVuIGludG8g
Ci0gICAgPHNvdXJjZT4sIGluY2x1ZGluZyB0aGUgbnVsbCB0ZXJtaW5hdG9yLCBpcyBzcGVjae+s
gWVkIGJ5IDxidWZTaXplPi4gVGhlCi0gICAgc3RyaW5nIDxzb3VyY2U+IGlzIHRoZSB0cmFuc2xh
dGVkIHN0cmluZyBvZiBhIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZ3MKLSAgICBwYXNzZWQg
dG8gdGhlIEdMIHVzaW5nIFNoYWRlclNvdXJjZS4gVGhlIGxlbmd0aCBvZiB0aGlzIHRyYW5zbGF0
ZWQgc3RyaW5nCi0gICAgaXMgZ2l2ZW4gYnkgVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdU
SF9BTkdMRSwgd2hpY2ggY2FuIGJlIHF1ZXJpZWQKLSAgICB3aXRoIEdldFNoYWRlcml2LgotCi0g
ICAgSWYgbm8gc291cmNlIGhhcyBiZWVuIGRlZmluZWQsIENvbXBpbGVTaGFkZXIgaGFzIG5vdCBi
ZWVuIGNhbGxlZCwgb3IgdGhlCi0gICAgdHJhbnNsYXRpb24gaGFzIGZhaWxlZCBmb3IgPHNoYWRl
cj4sIHplcm8gaXMgcmV0dXJuZWQgZm9yIDxsZW5ndGg+LCBhbmQKLSAgICBhbiBlbXB0eSBzdHJp
bmcgaXMgcmV0dXJuZWQgZm9yIDxzb3VyY2U+LgotCi0gICAgSWYgdGhlIHZhbHVlIG9mIFNIQURF
Ul9DT01QSUxFUiBpcyBub3QgVFJVRSwgdGhlbiB0aGUgZXJyb3IgSU5WQUxJRF8tCi0gICAgT1BF
UkFUSU9OIGlzIGdlbmVyYXRlZC4iCi0KLUlzc3VlcwotCi0gICAgMSkgV2hhdCBlbnVtIHZhbHVl
IHNob3VsZCBiZSB1c2VkIGZvciBUUkFOU0xBVEVEX1NIQURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xF
PwotCi0gICAgICBSRVNPTFZFRDogVGhlIGZpcnN0IGRyYWZ0IHVzZWQgYSB0ZW1wb3JhcnkgZW51
bSB2YWx1ZS4gVGhpcyBiZWVuIHJlcGxhY2VkCi0gICAgICB3aXRoIGEgZW51bSBhbGxvY2F0ZWQg
ZnJvbSB0aGUgQU5HTEUgcmFuZ2Ugb2YgR0wgZW51bXMuIAotCi1SZXZpc2lvbiBIaXN0b3J5Ci0K
LSAgICBSZXZpc2lvbiAxLCAyMDExLzA5LzI5LCB6bW8KLSAgICAgIC0gZmlyc3QgZHJhZnQKLSAg
ICBSZXZpc2lvbiAyLCAyMDExLzEwLzA1LCBkZ2tvY2gKLSAgICAgIC0gYXNzaWduZWQgZW51bQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FR0xfQU5HTEVfZDNkX3No
YXJlX2hhbmRsZV9jbGllbnRfYnVmZmVyLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9leHRlbnNpb25zL0VHTF9BTkdMRV9kM2Rfc2hhcmVfaGFuZGxlX2NsaWVudF9i
dWZmZXIudHh0CShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9l
eHRlbnNpb25zL0VHTF9BTkdMRV9kM2Rfc2hhcmVfaGFuZGxlX2NsaWVudF9idWZmZXIudHh0CShu
b25leGlzdGVudCkKQEAgLTEsOTggKzAsMCBAQAotTmFtZQotCi0gICAgQU5HTEVfZDNkX3NoYXJl
X2hhbmRsZV9jbGllbnRfYnVmZmVyCi0KLU5hbWUgU3RyaW5ncwotCi0gICAgRUdMX0FOR0xFX2Qz
ZF9zaGFyZV9oYW5kbGVfY2xpZW50X2J1ZmZlcgotCi1Db250cmlidXRvcnMKLQotICAgIEpvaG4g
QmF1bWFuCi0gICAgQWxhc3RhaXIgUGF0cmljawotICAgIERhbmllbCBLb2NoCi0KLUNvbnRhY3Rz
Ci0KLSAgICBKb2huIEJhdW1hbiwgR29vZ2xlIEluYy4gKGpiYXVtYW4gJ2F0JyBjaHJvbWl1bS5v
cmcpCi0KLVN0YXR1cwotCi0gICAgQ29tcGxldGUKLSAgICBJbXBsZW1lbnRlZCAoQU5HTEUgcjY1
MCkKLQotVmVyc2lvbgotCi0gICAgVmVyc2lvbiAzLCBNYXkgMTIsIDIwMTEKLQotTnVtYmVyCi0K
LSAgICBFR0wgRXh0ZW5zaW9uICM/PwotCi1EZXBlbmRlbmNpZXMKLQotICAgIFJlcXVpcmVzIHRo
ZSBFR0xfQU5HTEVfc3VyZmFjZV9kM2RfdGV4dHVyZV8yZF9zaGFyZV9oYW5kbGUgZXh0ZW5zaW9u
LgotCi0gICAgVGhpcyBleHRlbnNpb24gaXMgd3JpdHRlbiBhZ2FpbnN0IHRoZSB3b3JkaW5nIG9m
IHRoZSBFR0wgMS40Ci0gICAgU3BlY2lmaWNhdGlvbi4KLQotT3ZlcnZpZXcKLQotICAgIFRoaXMg
ZXh0ZW5zaW9uIGFsbG93cyBjcmVhdGluZyBFR0wgc3VyZmFjZXMgZnJvbSBoYW5kbGVzIHRvIHRl
eHR1cmVzCi0gICAgc2hhcmVkIGZyb20gdGhlIERpcmVjdDNEIEFQSSBvciBmcm9tCi0gICAgRUdM
X0FOR0xFX3N1cmZhY2VfdGV4dHVyZV8yZF9zaGFyZV9oYW5kbGUuCi0KLU5ldyBUeXBlcwotCi0g
ICAgTm9uZQotCi1OZXcgUHJvY2VkdXJlcyBhbmQgRnVuY3Rpb25zCi0KLSAgICBOb25lCi0KLU5l
dyBUb2tlbnMKLQotICAgIEFjY2VwdGVkIGluIHRoZSA8YnVmdHlwZT4gcGFyYW1ldGVyIG9mIGVn
bENyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyOgotCi0gICAgICAgIEVHTF9EM0RfVEVYVFVS
RV8yRF9TSEFSRV9IQU5ETEVfQU5HTEUgICAgICAgICAgICAweDMyMDAKLQotQWRkaXRpb25zIHRv
IENoYXB0ZXIgMyBvZiB0aGUgRUdMIDEuNCBTcGVjaWZpY2F0aW9uIChFR0wgRnVuY3Rpb25zIGFu
ZCBFcnJvcnMpCi0KLSAgICBSZXBsYWNlIHRoZSBsYXN0IHNlbnRlbmNlIG9mIHBhcmFncmFwaCAx
IG9mIFNlY3Rpb24gMy41LjMgd2l0aCB0aGUKLSAgICBmb2xsb3dpbmcgdGV4dC4KLSAgICAiQ3Vy
cmVudGx5LCB0aGUgb25seSBjbGllbnQgQVBJIHJlc291cmNlcyB3aGljaCBtYXkgYmUgYm91bmQg
aW4gdGhpcwotICAgIGZhc2hpb24gYXJlIE9wZW5WRyBWR0ltYWdlIG9iamVjdHMgYW5kIERpcmVj
dDNEIHNoYXJlIGhhbmRsZXMuIgotCi0gICAgUmVwbGFjZSB0aGUgbGFzdCBzZW50ZW5jZSBvZiBw
YXJhZ3JhcGggMiAoIlRvIGJpbmQgYSBjbGllbnQgQVBJLi4uIikgb2YKLSAgICBTZWN0aW9uIDMu
NS4zIHdpdGggdGhlIGZvbGxvd2luZyB0ZXh0LgotICAgICJXaGVuIDxidWZ0eXBlPiBpcyBFR0xf
T1BFTlZHX0lNQUdFLCB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgcGJ1ZmZlcgotICAgIGFy
ZSBkZXRlcm1pbmVkIGJ5IHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIDxidWZmZXI+LiBXaGVuIDxi
dWZ0eXBlPiBpcwotICAgIEVHTF9EM0RfVEVYVFVSRV8yRF9TSEFSRV9IQU5ETEVfQU5HTEUsIHRo
ZSB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBzcGVjaWZpZWQKLSAgICB1c2luZyBFR0xfV0lEVEggYW5k
IEVHTF9IRUlHSFQsIG9yIGVsc2UgdGhleSBkZWZhdWx0IHRvIHplcm8uIFRoZSB3aWR0aAotICAg
IGFuZCBoZWlnaHQgbXVzdCBtYXRjaCB0aGUgZGltZW5zaW9ucyBvZiB0aGUgdGV4dHVyZSB3aGlj
aCB0aGUgc2hhcmUgaGFuZGxlIAotICAgIHdhcyBjcmVhdGVkIGZyb20gb3IgZWxzZSBhbiBFR0xf
QkFEX0FMTE9DIGVycm9yIGlzIGdlbmVyYXRlZC4iCi0KLSAgICBSZXBsYWNlIHRoZSB0aGlyZCBw
YXJhZ3JhcGggb2YgU2VjdGlvbiAzLjUuMyB3aXRoIHRoZSBmb2xsb3dpbmcgdGV4dC4KLSAgICAi
PGJ1ZnR5cGU+IHNwZWNpZmllcyB0aGUgdHlwZSBvZiBidWZmZXIgdG8gYmUgYm91bmQuIFRoZSBv
bmx5IGFsbG93ZWQgdmFsdWVzCi0gICAgb2YgPGJ1ZnR5cGU+IGFyZSBFR0xfT1BFTlZHX0lNQUdF
IGFuZAotICAgIEVHTF9EM0RfVEVYVFVSRV8yRF9TSEFSRV9IQU5ETEVfQU5HTEUiLgotCi0gICAg
QXBwZW5kIHRoZSBmb2xsb3dpbmcgdGV4dCB0byB0aGUgZm91cnRoIHBhcmFncmFwaCBvZiBTZWN0
aW9uIDMuNS4zLgotICAgICJXaGVuIDxidWZ0eXBlPiBpcyBFR0xfRDNEX1RFWFRVUkVfMkRfU0hB
UkVfSEFORExFX0FOR0xFLCA8YnVmZmVyPiBtdXN0IGJlCi0gICAgYSB2YWxpZCBEM0Qgc2hhcmUg
aGFuZGxlLCBjYXN0IGludG8gdGhlIHR5cGUgRUdMQ2xpZW50QnVmZmVyLiBUaGUgaGFuZGxlCi0g
ICAgbWF5IGJlIG9idGFpbmVkIGZyb20gdGhlIERpcmVjdDNEOUV4IENyZWF0ZVRleHR1cmUgZnVu
Y3Rpb24sIGZyb20gRFhHSSdzCi0gICAgR2V0U2hhcmVkSGFuZGxlIG1ldGhvZCBvbiBhbiBJRDNE
MTBUZXh0dXJlMkQsIG9yIGZyb20gdGhlCi0gICAgRUdMX0FOR0xFX3N1cmZhY2VfZDNkX3RleHR1
cmVfMmRfc2hhcmVfaGFuZGxlIGV4dGVuc2lvbi4iCi0KLUlzc3VlcwotCi1SZXZpc2lvbiBIaXN0
b3J5Ci0KLSAgICBWZXJzaW9uIDMsIDIwMTEvMDUvMTIKLSAgICAgIC0gcHVibGlzaAotCi0gICAg
VmVyc2lvbiAyLCAyMDExLzA1LzAzCi0gICAgICAtIHNwZWNpZnkgRUdMX0QzRF9URVhUVVJFXzJE
X1NIQVJFX0hBTkRMRQotICAgICAgLSBzcGVjaWZ5IGVycm9yIGlmIGRpbWVuc2lvbnMgZG9uJ3Qg
bWF0Y2gKLQotICAgIFZlcnNpb24gMSwgMjAxMS8wNC8xMiAtIGZpcnN0IGRyYWZ0LgpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FR0xfQU5HTEVfZGV2aWNlX2QzZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FR0xf
QU5HTEVfZGV2aWNlX2QzZC50eHQJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL2V4dGVuc2lvbnMvRUdMX0FOR0xFX2RldmljZV9kM2QudHh0CShub25leGlzdGVu
dCkKQEAgLTEsOTMgKzAsMCBAQAotTmFtZQotCi0gICAgQU5HTEVfZGV2aWNlX2QzZAotCi1OYW1l
IFN0cmluZ3MKLQotICAgIEVHTF9BTkdMRV9kZXZpY2VfZDNkCi0KLUNvbnRyaWJ1dG9ycwotCi0g
ICAgSmFtaWUgTWFkaWxsICAoam1hZGlsbCAnYXQnIGdvb2dsZS5jb20pCi0KLUNvbnRhY3QKLQot
ICAgIEphbWllIE1hZGlsbCAgKGptYWRpbGwgJ2F0JyBnb29nbGUuY29tKQotCi1TdGF0dXMKLQot
ICAgIERyYWZ0Ci0KLVZlcnNpb24KLQotICAgIFZlcnNpb24gMSwgTWFyIDI1LCAyMDE1Ci0KLU51
bWJlcgotCi0gICAgRUdMIEV4dGVuc2lvbiAjWFhYCi0KLUV4dGVuc2lvbiBUeXBlCi0KLSAgICBF
R0wgZGV2aWNlIGV4dGVuc2lvbgotCi1EZXBlbmRlbmNpZXMKLQotICAgIFRoaXMgZXh0ZW5zaW9u
IGlzIHdyaXR0ZW4gYWdhaW5zdCB0aGUgbGFuZ3VhZ2Ugb2YgRUdMIDEuNSBhcwotICAgIG1vZGlm
aWVkIGJ5IEVHTF9FWFRfZGV2aWNlX3F1ZXJ5LgotCi0gICAgRUdMX0VYVF9kZXZpY2VfcXVlcnkg
aXMgcmVxdWlyZWQuCi0KLU92ZXJ2aWV3Ci0KLSAgICBBTkdMRSBoYXMgdGhlIGFiaWxpdHkgdG8g
cnVuIEdQVSBjb21tYW5kcyBvbiBhIG5hdGl2ZSBEM0QgZGV2aWNlLgotICAgIFRoaXMgZXh0ZW5z
aW9uIGRlZmluZXMgYSBtYXBwaW5nIGZyb20gYW4gRUdMIGRldmljZSB0byBhIEQzRAotICAgIGRl
dmljZSwgYWZ0ZXIgaXQncyBxdWVyaWVkIGZyb20gYW4gRUdMIGRpc3BsYXkuCi0KLUlQIFN0YXR1
cwotCi0gICAgTm8ga25vd24gY2xhaW1zLgotCi1OZXcgVHlwZXMKLQotICAgIE5vbmUuCi0KLU5l
dyBQcm9jZWR1cmVzIGFuZCBGdW5jdGlvbnMKLQotICAgIE5vbmUuCi0KLU5ldyBUb2tlbnMKLQot
ICAgIEFjY2VwdGVkIGFzIGEgcXVlcmllZCA8YXR0cmlidXRlPiBpbiBlZ2xRdWVyeURldmljZUF0
dHJpYkVYVDoKLQotICAgICAgICBFR0xfRDNEOV9ERVZJQ0VfQU5HTEUgICAgICAgICAgICAgIDB4
MzNBMAotICAgICAgICBFR0xfRDNEMTFfREVWSUNFX0FOR0xFICAgICAgICAgICAgIDB4MzNBMQot
Ci1BZGQgYSBuZXcgc2VjdGlvbiAyLjEuMyAoRDNEIERldmljZXMpIGFmdGVyIDIuMS4yIChEZXZp
Y2VzKQotCi0gICAgU29tZXdoYXQgYW5hbG9nb3VzIHRvIGFuIEVHTCBkZXZpY2UsIGEgRDNEIGRl
dmljZSBlc3RhYmxpc2hlcyBhCi0gICAgbmFtZXNwYWNlIGZvciBEM0Qgb3BlcmF0aW9ucy4gSW4g
dGhlIEQzRCBBUElzLCBzdWNoIGRldmljZXMgYXJlCi0gICAgcmVwcmVzZW50ZWQgYnkgcG9pbnRl
cnMuIEZvciBtb3JlIGRldGFpbHMsIHNlZSB0aGUgRDNECi0gICAgZG9jdW1lbnRhdGlvbi4KLQot
Q2hhbmdlcyB0byBzZWN0aW9uIDMuMiAoRGV2aWNlcykKLQotICAgIFJlcGxhY2UgdGhlIHBhcmFn
cmFwaCBpbW1lZGlhdGVseSBmb2xsb3dpbmcgdGhlIHByb3RvdHlwZSBmb3IKLSAgICBlZ2xRdWVy
eURldmljZUF0dHJpYkVYVDoKLQotICAgIDxhdHRyaWJ1dGU+IG1heSBiZSBlaXRoZXIgRUdMX0Qz
RDlfREVWSUNFX0FOR0xFIG9yIEVHTF9EM0QxMV9ERVZJQ0VfQU5HTEUuCi0gICAgT24gc3VjY2Vz
cywgRUdMX1RSVUUgaXMgcmV0dXJuZWQsIGFuZCBhIHZhbGlkIEQzRDkgb3IgRDNEMTEgZGV2aWNl
IHBvaW50ZXIKLSAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSBFR0wgZGV2aWNlIGlzIHJldHVybmVk
IGluIDx2YWx1ZT4uIFRoaXMgaGFuZGxlCi0gICAgaXMgY29tcGF0aWJsZSB3aXRoIEQzRCBBUEkg
ZnVuY3Rpb25zLiBJZiB0aGUgRUdMIGRldmljZSBpcyBub3QgY3VycmVudGx5Ci0gICAgYXNzb2Np
YXRlZCB3aXRoIGEgRDNEOSBkZXZpY2UgYW5kIDxhdHRyaWJ1dGU+IGlzIEVHTF9EM0Q5X0RFVklD
RV9BTkdMRSwKLSAgICBvciBpZiB0aGUgRUdMIGRldmljZSBpcyBub3QgY3VycmVudGx5IGFzc29j
aWF0ZWQgd2l0aCBhIEQzRDExIGRldmljZSBhbmQKLSAgICA8YXR0cmlidXRlPiBpcyBFR0xfRDNE
MTFfREVWSUNFX0FOR0xFLCBFR0xfQkFEX0FUVFJJQlVURSBpcyByZXR1cm5lZCwKLSAgICBhbmQg
PHZhbHVlPiBpcyBsZWZ0IHVuY2hhbmdlZC4KLQotSXNzdWVzCi0KLSAgICBOb25lCi0KLVJldmlz
aW9uIEhpc3RvcnkKLQotICAgIFZlcnNpb24gMSwgTWFyIDI1LCAyMDE1IChKYW1pZSBNYWRpbGwp
Ci0gICAgICAgIC0gSW5pdGlhbCBEcmFmdApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
ZXh0ZW5zaW9ucy9FR0xfQU5HTEVfZGlyZWN0M2RfZGlzcGxheS50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FR0xfQU5HTEVfZGlyZWN0M2RfZGlz
cGxheS50eHQJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4
dGVuc2lvbnMvRUdMX0FOR0xFX2RpcmVjdDNkX2Rpc3BsYXkudHh0CShub25leGlzdGVudCkKQEAg
LTEsNjggKzAsMCBAQAotTmFtZQotCi0gICAgQU5HTEVfZGlyZWN0M2RfZGlzcGxheQotCi1OYW1l
IFN0cmluZ3MKLQotICAgIEVHTF9BTkdMRV9kaXJlY3QzZF9kaXNwbGF5Ci0KLUNvbnRyaWJ1dG9y
cwotCi0gICAgTmljb2xhcyBDYXBlbnMKLSAgICBTaGFubm9uIFdvb2RzCi0KLUNvbnRhY3RzCi0K
LSAgICBTaGFubm9uIFdvb2RzLCBHb29nbGUgSW5jLiAoc2hhbm5vbndvb2RzICdhdCcgY2hyb21p
dW0ub3JnKQotCi1TdGF0dXMKLQotICAgIEluIHByb2dyZXNzCi0KLVZlcnNpb24KLQotICAgIFZl
cnNpb24gMSwgTWF5IDE1LCAyMDEzCi0KLU51bWJlcgotCi0gICAgRUdMIEV4dGVuc2lvbiAjPz8K
LQotRGVwZW5kZW5jaWVzCi0KLSAgICBUaGlzIGV4dGVuc2lvbiBpcyB3cml0dGVuIGFnYWluc3Qg
dGhlIHdvcmRpbmcgb2YgdGhlIEVHTCAxLjQKLSAgICBTcGVjaWZpY2F0aW9uLiAKLQotT3ZlcnZp
ZXcKLQotICAgIFRoaXMgZXh0ZW5zaW9uIGFsbG93cyBmb3Igc3BlY2lmeWluZyB0aGUgYmVoYXZp
b3Igb2YgdGhlIHJlbmRlcmVyIGJhY2tpbmcgdGhlIGRpc3BsYXkuCi0KLU5ldyBUeXBlcwotCi0g
ICAgTm9uZQotCi1OZXcgUHJvY2VkdXJlcyBhbmQgRnVuY3Rpb25zCi0KLSAgICBOb25lCi0KLU5l
dyBUb2tlbnMKLQotICAgIEVHTF9EM0QxMV9FTFNFX0QzRDlfRElTUExBWV9BTkdMRSAgICAgICAg
IChFR0xOYXRpdmVEaXNwbGF5VHlwZSktMgotICAgIEVHTF9EM0QxMV9PTkxZX0RJU1BMQVlfQU5H
TEUgICAgICAgICAgICAgIChFR0xOYXRpdmVEaXNwbGF5VHlwZSktMwotCi1BZGRpdGlvbnMgdG8g
Q2hhcHRlciAzIG9mIHRoZSBFR0wgMS40IFNwZWNpZmljYXRpb24gKEVHTCBGdW5jdGlvbnMgYW5k
IEVycm9ycykKLQotICAgIEFkZCBiZWZvcmUgdGhlIGxhc3Qgc2VudGVuY2Ugb2YgdGhlIGZpcnN0
IHBhcmFncmFwaCBvZiBzZWN0aW9uIDMuMiwKLSAgICAiSW5pdGlhbGl6YXRpb24iOgotCi0gICAg
IklmIDxkaXNwbGF5X2lkPiBpcyBFR0xfRDNEMTFfRUxTRV9EM0Q5X0RJU1BMQVlfQU5HTEUsIHRo
ZSBkaXNwbGF5IHJldHVybmVkCi0gICAgd2lsbCBiZSBiYWNrZWQgYnkgYSBEaXJlY3QzRCAxMSBy
ZW5kZXJlciBpZiBvbmUgaXMgYXZhaWxhYmxlLCBvciBieSBhCi0gICAgRGlyZWN0M0QgOSByZW5k
ZXJlciBvdGhlcndpc2UuIElmIDxkaXNwbGF5X2lkPiBpcyBFR0xfRDNEMTFfT05MWV9ESVNQTEFZ
X0FOR0xFLAotICAgIHRoZSBkaXNwbGF5IHJldHVybmVkIHdpbGwgYmUgYmFja2VkIGJ5IGEgRGly
ZWN0M0QgMTEgcmVuZGVyZXIgaWYgb25lIGlzCi0gICAgYXZhaWxhYmxlLCBvciB3aWxsIHJldHVy
biBOVUxMIG90aGVyd2lzZS4iCi0KLUlzc3VlcwotCi1SZXZpc2lvbiBIaXN0b3J5Ci0KLSAgICBW
ZXJzaW9uIDEsIDIwMTMvMDUvMTUgLSBGaXJzdCBkcmFmdC4KLQpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FR0xfQU5HTEVfcXVlcnlfc3VyZmFjZV9wb2ludGVyLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VHTF9B
TkdMRV9xdWVyeV9zdXJmYWNlX3BvaW50ZXIudHh0CShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VHTF9BTkdMRV9xdWVyeV9zdXJmYWNlX3Bv
aW50ZXIudHh0CShub25leGlzdGVudCkKQEAgLTEsODggKzAsMCBAQAotTmFtZQotCi0gICAgQU5H
TEVfcXVlcnlfc3VyZmFjZV9wb2ludGVyCi0KLU5hbWUgU3RyaW5ncwotCi0gICAgRUdMX0FOR0xF
X3F1ZXJ5X3N1cmZhY2VfcG9pbnRlcgotCi1Db250cmlidXRvcnMKLQotICAgIFZsYWRpbWlyIFZ1
a2ljZXZpYwotICAgIERhbmllbCBLb2NoCi0KLUNvbnRhY3RzCi0KLSAgICBWbGFkaW1pciBWdWtp
Y2V2aWMgKHZsYWRpbWlyICdhdCcgcG9ib3guY29tKQotCi1TdGF0dXMKLQotICAgIENvbXBsZXRl
Ci0gICAgSW1wbGVtZW50ZWQgKEFOR0xFIHI1NTgpCi0KLVZlcnNpb24KLQotICAgIFZlcnNpb24g
MywgRmVicnVhcnkgMTEsIDIwMTEKLQotTnVtYmVyCi0KLSAgICBFR0wgRXh0ZW5zaW9uICMyOAot
Ci1EZXBlbmRlbmNpZXMKLQotICAgIFRoaXMgZXh0ZW5zaW9uIGlzIHdyaXR0ZW4gYWdhaW5zdCB0
aGUgd29yZGluZyBvZiB0aGUgRUdMIDEuNAotICAgIFNwZWNpZmljYXRpb24uIAotCi1PdmVydmll
dwotCi0gICAgVGhpcyBleHRlbnNpb24gYWxsb3dzIHF1ZXJ5aW5nIHBvaW50ZXItc2l6ZWQgc3Vy
ZmFjZSBhdHRyaWJ1dGVzLAotICAgIHRodXMgYXZvaWRpbmcgcHJvYmxlbXMgd2l0aCBjb2VyY2lu
ZyA2NC1iaXQgcG9pbnRlcnMgaW50byBhIDMyLWJpdAotICAgIGludGVnZXIuCi0KLU5ldyBUeXBl
cwotCi0gICAgTm9uZQotCi1OZXcgUHJvY2VkdXJlcyBhbmQgRnVuY3Rpb25zCi0KLSAgICBFR0xC
b29sZWFuIGVnbFF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRSgKLSAgICAgICAgICAgICAgICAgICAg
ICAgIEVHTERpc3BsYXkgZHB5LAotICAgICAgICAgICAgICAgICAgICAgICAgRUdMU3VyZmFjZSBz
dXJmYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGF0dHJpYnV0ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHZvaWQgKip2YWx1ZSk7Ci0KLU5ldyBUb2tlbnMKLQotICAgIE5v
bmUKLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgMyBvZiB0aGUgRUdMIDEuNCBTcGVjaWZpY2F0aW9u
IChFR0wgRnVuY3Rpb25zIGFuZCBFcnJvcnMpCi0KLSAgICBBZGQgdG8gdGhlIGVuZCBvZiB0aGUg
cGFyYWdyYXBoIHN0YXJ0aW5nIHdpdGggIlRvIHF1ZXJ5IGFuCi0gICAgYXR0cmlidXRlIGFzc29j
aWF0ZWQgd2l0aCBhbiBFR0xTdXJmYWNlIiBpbiBzZWN0aW9uIDMuNS42LAotICAgICJTdXJmYWNl
IEF0dHJpYnV0ZXMiOgotCi0gICAgIklmIHRoZSBhdHRyaWJ1dGUgdHlwZSBpbiB0YWJsZSAzLjUg
aXMgJ3BvaW50ZXInLCB0aGVuCi0gICAgZWdsUXVlcnlTdXJmYWNlIHJldHVybnMgRUdMX0ZBTFNF
IGFuZCBhbiBFR0xfQkFEX1BBUkFNRVRFUiBlcnJvcgotICAgIGlzIGdlbmVyYXRlZC4gIFRvIHF1
ZXJ5IHBvaW50ZXIgYXR0cmlidXRlcywgY2FsbDoKLQotICAgICAgICAgRUdMQm9vbGVhbiBlZ2xR
dWVyeVN1cmZhY2VQb2ludGVyQU5HTEUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVH
TERpc3BsYXkgZHB5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xTdXJmYWNlIHN1
cmZhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBhdHRyaWJ1dGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKip2YWx1ZSk7Ci0KLSAgICAgZWdsUXVl
cnlTdXJmYWNlUG9pbnRlckFOR0xFIGJlaGF2ZXMgaWRlbnRpY2FsbHkgdG8gZWdsUXVlcnlTdXJm
YWNlLAotICAgICBleGNlcHQgdGhhdCBvbmx5IGF0dHJpYnV0ZXMgb2YgdHlwZSAncG9pbnRlcicg
Y2FuIGJlIHF1ZXJpZWQuCi0gICAgIElmIGFuIGF0dHJpYnV0ZSBxdWVyaWVkIHZpYSBlZ2xRdWVy
eVN1cmZhY2VQb2ludGVyQU5HTEUgaXMgbm90Ci0gICAgIG9mIHR5cGUgJ3BvaW50ZXInLCB0aGVu
IGVnbFF1ZXJ5U3VyZmFjZVBvaW50ZXIgcmV0dXJucyBFR0xfRkFMU0UKLSAgICAgYW5kIGFuIEVH
TF9CQURfUEFSQU1FVEVSIGVycm9yIGlzIGdlbmVyYXRlZC4iCi0KLUlzc3VlcwotCi1SZXZpc2lv
biBIaXN0b3J5Ci0KLSAgICBWZXJzaW9uIDMsIDIwMTEvMDIvMTEgLSBwdWJsaXNoCi0KLSAgICBW
ZXJzaW9uIDIsIDIwMTAvMTIvMjEgLSBmaXggdHlwb3MuCi0KLSAgICBWZXJzaW9uIDEsIDIwMTAv
MTIvMDcgLSBmaXJzdCBkcmFmdC4KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVu
c2lvbnMvRUdMX0FOR0xFX3JvYnVzdF9yZXNvdXJjZV9pbml0aWFsaXphdGlvbi50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FR0xfQU5HTEVfcm9i
dXN0X3Jlc291cmNlX2luaXRpYWxpemF0aW9uLnR4dAkocmV2aXNpb24gMjA3ODA0KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FR0xfQU5HTEVfcm9idXN0X3Jlc291cmNl
X2luaXRpYWxpemF0aW9uLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDgwICswLDAgQEAKLU5hbWUK
LQotICAgIEVHTF9BTkdMRV9yb2J1c3RfcmVzb3VyY2VfaW5pdGlhbGl6YXRpb24udHh0Ci0KLU5h
bWUgU3RyaW5ncwotCi0gICAgRUdMX0FOR0xFX3JvYnVzdF9yZXNvdXJjZV9pbnRpYWxpemF0aW9u
Ci0KLUNvbnRyaWJ1dG9ycwotCi0gICAgR2VvZmYgTGFuZywgR29vZ2xlCi0gICAgS2VuIFJ1c3Nl
bGwsIEdvb2dsZQotCi1Db250YWN0cwotCi0gICAgU2hhbm5vbiBXb29kcywgR29vZ2xlIChzaGFu
bm9ud29vZHMgJ2F0JyBnb29nbGUuY29tKQotCi1TdGF0dXMKLQotICAgIERyYWZ0Ci0KLVZlcnNp
b24KLQotICAgIFZlcnNpb24gMSwgSmFudWFyeSA3LCAyMDE1Ci0KLU51bWJlcgotCi0gICAgRUdM
IEV4dGVuc2lvbiBUQkQKLQotRGVwZW5kZW5jaWVzCi0KLSAgICBUaGlzIGV4dGVuc2lvbiBpcyB3
cml0dGVuIGFnYWluc3QgdGhlIHdvcmRpbmcgb2YgdGhlIEVHTCAxLjUKLSAgICBzcGVjaWZpY2F0
aW9uLgotCi0gICAgQW4gT3BlbkdMIEVTIGltcGxlbWVudGF0aW9uIHN1cHBvcnRpbmcgQU5HTEVf
cm9idXN0X3Jlc291cmNlX2luaXRpYWxpemF0aW9uCi0gICAgb3IgYW4gaW1wbGVtZW50YXRpb24g
c3VwcG9ydGluZyBlcXVpdmFsZW50IGZ1bmN0aW9uYWxpdHkgaXMgcmVxdWlyZWQuCi0KLU92ZXJ2
aWV3Ci0KLSAgICBUaGlzIGV4dGVuc2lvbiBhbGxvd3MgY3JlYXRpbmcgYW4gT3BlbkdMIEVTIGNv
bnRleHQgc3VwcG9ydGluZwotICAgIHJvYnVzdCByZXNvdXJjZSBpbml0aWFsaXphdGlvbi4KLQot
TmV3IFR5cGVzCi0KLSAgICBOb25lCi0KLU5ldyBQcm9jZWR1cmVzIGFuZCBGdW5jdGlvbnMKLQot
ICAgIE5vbmUKLQotTmV3IFRva2VucwotCi0gICAgQWNjZXB0ZWQgYXMgYW4gYXR0cmlidXRlIG5h
bWUgaW4gdGhlIDwqYXR0cmliX2xpc3Q+IGFyZ3VtZW50IHRvCi0gICAgZWdsQ3JlYXRlQ29udGV4
dDoKLQotICAgICAgICBFR0xfQ09OVEVYVF9PUEVOR0xfUk9CVVNUX1JFU09VUkNFX0lOSVRJQUxJ
WkFUSU9OX0FOR0xFICAgIDB4MzIwRgotCi1BZGRpdGlvbnMgdG8gdGhlIEVHTCAxLjUgU3BlY2lm
aWNhdGlvbgotCi0gICAgQWRkIGEgbmV3IHNlY3Rpb24gZW50aXRsZWQgIk9wZW5HTCBFUyBSb2J1
c3QgUmVzb3VyY2UgSW5pdGlhbGl6YXRpb24iCi0gICAgdG8gc2VjdGlvbiAzLjcuMToKLQotICAg
ICJJZiB0aGUgYXR0cmlidXRlIEVHTF9DT05URVhUX09QRU5HTF9ST0JVU1RfUkVTT1VSQ0VfSU5J
VElBTElaQVRJT05fQU5HTEUKLSAgICBpcyBzZXQgdG8gRUdMX1RSVUUsIGEgY29udGV4dCBzdXBw
b3J0aW5nIDxyb2J1c3QgcmVzb3VyY2UgaW5pdGlhbGl6YXRpb24+Ci0gICAgd2lsbCBiZSBjcmVh
dGVkLiBPcGVuR0wgRVMgY29udGV4dHMgbXVzdCBzdXBwb3J0IHRoZQotICAgIEFOR0xFX3JvYnVz
dF9yZXNvdXJjZV9pbml0aWFsaXphdGlvbiBleHRlbnNpb24sIG9yIGVxdWl2YWxlbnQgY29yZSBB
UEkKLSAgICBmdW5jdGlvbmFsaXR5LgotICAgIFRoaXMgYXR0cmlidXRlIGlzIHN1cHBvcnRlZCBv
bmx5IGZvciBPcGVuR0wgRVMgY29udGV4dHMuIElmIHRoZQotICAgIGltcGxlbWVudGF0aW9uIGRv
ZXMgbm90IHN1cHBvcnQgcm9idXN0IHJlc291cmNlIGluaXRpYWxpemF0aW9uLAotICAgIGNvbnRl
eHQgY3JlYXRpb24gd2lsbCBmYWlsLgotICAgIFRoZSBkZWZhdWx0IHZhbHVlIG9mIEVHTF9DT05U
RVhUX09QRU5HTF9ST0JVU1RfUkVTT1VSQ0VfSU5JVElBTElaQVRJT05fQU5HTEUKLSAgICBpcyBF
R0xfRkFMU0UuIgotCi1Jc3N1ZXMKLQotICAgIE5vbmUKLQotUmV2aXNpb24gSGlzdG9yeQotCi0g
ICAgVmVyc2lvbiAxLCAyMDE1LzAxLzA3IC0gZmlyc3QgZHJhZnQuCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VHTF9BTkdMRV9zb2Z0d2FyZV9kaXNwbGF5LnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VHTF9BTkdM
RV9zb2Z0d2FyZV9kaXNwbGF5LnR4dAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FR0xfQU5HTEVfc29mdHdhcmVfZGlzcGxheS50eHQJKG5v
bmV4aXN0ZW50KQpAQCAtMSw2NSArMCwwIEBACi1OYW1lCi0KLSAgICBBTkdMRV9zb2Z0d2FyZV9k
aXNwbGF5Ci0KLU5hbWUgU3RyaW5ncwotCi0gICAgRUdMX0FOR0xFX3NvZnR3YXJlX2Rpc3BsYXkK
LQotQ29udHJpYnV0b3JzCi0KLSAgICBKb2huIEJhdW1hbgotICAgIERhbmllbCBLb2NoCi0KLUNv
bnRhY3RzCi0KLSAgICBKb2huIEJhdW1hbiwgR29vZ2xlIEluYy4gKGpiYXVtYW4gJ2F0JyBjaHJv
bWl1bS5vcmcpCi0KLVN0YXR1cwotCi0gICAgSW4gcHJvZ3Jlc3MKLQotVmVyc2lvbgotCi0gICAg
VmVyc2lvbiAyLCBPY3RvYmVyIDE5LCAyMDExCi0KLU51bWJlcgotCi0gICAgRUdMIEV4dGVuc2lv
biAjPz8KLQotRGVwZW5kZW5jaWVzCi0KLSAgICBUaGlzIGV4dGVuc2lvbiBpcyB3cml0dGVuIGFn
YWluc3QgdGhlIHdvcmRpbmcgb2YgdGhlIEVHTCAxLjQKLSAgICBTcGVjaWZpY2F0aW9uLiAKLQot
T3ZlcnZpZXcKLQotICAgIFRoaXMgZXh0ZW5zaW9uIGFsbG93cyBmb3IgcmVjZWl2aW5nIGEgZGV2
aWNlIHRoYXQgdXNlcyBzb2Z0d2FyZSByZW5kZXJpbmcuCi0KLU5ldyBUeXBlcwotCi0gICAgTm9u
ZQotCi1OZXcgUHJvY2VkdXJlcyBhbmQgRnVuY3Rpb25zCi0KLSAgICBOb25lCi0KLU5ldyBUb2tl
bnMKLQotICAgIEVHTF9TT0ZUV0FSRV9ESVNQTEFZX0FOR0xFICAgICAgICAgKEVHTE5hdGl2ZURp
c3BsYXlUeXBlKS0xCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDMgb2YgdGhlIEVHTCAxLjQgU3Bl
Y2lmaWNhdGlvbiAoRUdMIEZ1bmN0aW9ucyBhbmQgRXJyb3JzKQotCi0gICAgQWRkIGJlZm9yZSB0
aGUgbGFzdCBzZW50ZW5jZSBvZiB0aGUgZmlyc3QgcGFyYWdyYXBoIG9mIHNlY3Rpb24gMy4yLAot
ICAgICJJbml0aWFsaXphdGlvbiI6Ci0KLSAgICAiSWYgPGRpc3BsYXlfaWQ+IGlzIEVHTF9TT0ZU
V0FSRV9ESVNQTEFZX0FOR0xFLCBhIGRpc3BsYXkgdGhhdCB3aWxsIHJlbmRlcgotICAgIGV2ZXJ5
dGhpbmcgaW4gc29mdHdhcmUgd2lsbCBiZSByZXR1cm5lZC4iCi0KLUlzc3VlcwotCi1SZXZpc2lv
biBIaXN0b3J5Ci0KLSAgICBWZXJzaW9uIDEsIDIwMTEvMDcvMTIgLSBmaXJzdCBkcmFmdC4KLSAg
ICBWZXJzaW9uIDIsIDIwMTEvMTAvMTggLSBhZGQgdG9rZW4gZGVmaW5pdGlvbgotCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VHTF9BTkdMRV9zdXJmYWNlX2QzZF90
ZXh0dXJlXzJkX3NoYXJlX2hhbmRsZS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvZXh0ZW5zaW9ucy9FR0xfQU5HTEVfc3VyZmFjZV9kM2RfdGV4dHVyZV8yZF9zaGFy
ZV9oYW5kbGUudHh0CShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9leHRlbnNpb25zL0VHTF9BTkdMRV9zdXJmYWNlX2QzZF90ZXh0dXJlXzJkX3NoYXJlX2hhbmRs
ZS50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSw5NSArMCwwIEBACi1OYW1lCi0KLSAgICBBTkdMRV9z
dXJmYWNlX2QzZF90ZXh0dXJlXzJkX3NoYXJlX2hhbmRsZQotCi1OYW1lIFN0cmluZ3MKLQotICAg
IEVHTF9BTkdMRV9zdXJmYWNlX2QzZF90ZXh0dXJlXzJkX3NoYXJlX2hhbmRsZQotCi1Db250cmli
dXRvcnMKLQotICAgIFZsYWRpbWlyIFZ1a2ljZXZpYwotICAgIERhbmllbCBLb2NoCi0KLUNvbnRh
Y3RzCi0KLSAgICBWbGFkaW1pciBWdWtpY2V2aWMgKHZsYWRpbWlyICdhdCcgcG9ib3guY29tKQot
Ci1TdGF0dXMKLQotICAgIENvbXBsZXRlCi0gICAgSW1wbGVtZW50ZWQgKEFOR0xFIHI1NTgpCi0K
LVZlcnNpb24KLQotICAgIFZlcnNpb24gMiwgRGVjZW1iZXIgMjEsIDIwMTAKLQotTnVtYmVyCi0K
LSAgICBFR0wgRXh0ZW5zaW9uICMyOQotCi1EZXBlbmRlbmNpZXMKLQotICAgIFJlcXVpcmVzIHRo
ZSBFR0xfQU5HTEVfcXVlcnlfc3VyZmFjZV9wb2ludGVyIGV4dGVuc2lvbi4KLQotICAgIFRoaXMg
ZXh0ZW5zaW9uIGlzIHdyaXR0ZW4gYWdhaW5zdCB0aGUgd29yZGluZyBvZiB0aGUgRUdMIDEuNAot
ICAgIFNwZWNpZmljYXRpb24uCi0KLU92ZXJ2aWV3Ci0KLSAgICBTb21lIEVHTCBpbXBsZW1lbnRh
dGlvbnMgZ2VuZXJhdGUgRUdMU3VyZmFjZSBoYW5kbGVzIHRoYXQgYXJlCi0gICAgYmFja2VkIGJ5
IERpcmVjdDNEIDJEIHRleHR1cmVzLiAgRm9yIHN1Y2ggc3VyZmFjZXMsIGEgRDNEIHNoYXJlCi0g
ICAgaGFuZGxlIGNhbiBiZSBnZW5lcmF0ZWQsIGFsbG93aW5nIGFjY2VzcyB0byB0aGUgc2FtZSBz
dXJmYWNlCi0gICAgZnJvbSB0aGUgRGlyZWN0M0QgQVBJLgotCi1OZXcgVHlwZXMKLQotICAgIE5v
bmUKLQotTmV3IFByb2NlZHVyZXMgYW5kIEZ1bmN0aW9ucwotCi0gICAgTm9uZQotCi1OZXcgVG9r
ZW5zCi0KLSAgICBBY2NlcHRlZCBpbiB0aGUgPGF0dHJpYnV0ZT4gcGFyYW1ldGVyIG9mIGVnbFF1
ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRToKLQotICAgICAgICBFR0xfRDNEX1RFWFRVUkVfMkRfU0hB
UkVfSEFORExFX0FOR0xFICAgICAgICAgICAgMHgzMjAwCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVy
IDMgb2YgdGhlIEVHTCAxLjQgU3BlY2lmaWNhdGlvbiAoRUdMIEZ1bmN0aW9ucyBhbmQgRXJyb3Jz
KQotCi0gICAgQWRkIHRvIHRhYmxlIDMuNSwgIlF1ZXJ5YWJsZSBzdXJmYWNlIGF0dHJpYnV0ZXMg
YW5kIHR5cGVzIjoKLQotICAgICAgICBBdHRyaWJ1dGUgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUeXBlICAgICAgRGVzY3JpcHRpb24KLSAgICAgICAgLS0tLS0tLS0tICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLS0tLSAgICAgIC0tLS0tLS0tLS0tCi0gICAgICAgIEVHTF9EM0Rf
VEVYVFVSRV8yRF9TSEFSRV9IQU5ETEVfQU5HTEUgIHBvaW50ZXIgICBEaXJlY3QzRCBzaGFyZSBo
YW5kbGUKLQotICAgIEFkZCBiZWZvcmUgdGhlIGxhc3QgcGFyYWdyYXBoIGluIHNlY3Rpb24gMy41
LCAiU3VyZmFjZSBhdHRyaWJ1dGVzIjoKLQotICAgIlF1ZXJ5aW5nIEVHTF9EM0RfVEVYVFVSRV8y
RF9TSEFSRV9IQU5ETEVfQU5HTEUgcmV0dXJucyBhIERpcmVjdDNECi0gICAgc2hhcmUgaGFuZGxl
LCBvciBOVUxMIGlmIGEgc2hhcmUgaGFuZGxlIGZvciB0aGUgc3VyZmFjZSBpcyBub3QKLSAgICBh
dmFpbGFibGUuICBUaGUgc2hhcmUgaGFuZGxlIG11c3QgYmUgcXVlcmllZCB1c2luZwotICAgIGVn
bFF1ZXJ5U3VyZmFjZUF0dHJpYlBvaW50ZXJBTkdMRS4gIEJlZm9yZSB1c2luZyBhIERpcmVjdDNE
IHN1cmZhY2UKLSAgICBjcmVhdGVkIHdpdGggdGhpcyBzaGFyZSBoYW5kbGUsIGVuc3VyZSB0aGF0
IGFsbCByZW5kZXJpbmcKLSAgICB0byB0aGUgRUdMU3VyZmFjZSB3aXRoIEVHTCBjbGllbnQgQVBJ
cyBoYXMgY29tcGxldGVkLgotCi0gICAgVGhlIERpcmVjdDNEIHNoYXJlIGhhbmRsZSBtYXkgYmUg
cGFzc2VkIGFzIHRoZSBwU2hhcmVkSGFuZGxlCi0gICAgcGFyYW1ldGVyIG9mIHRoZSBEaXJlY3Qz
RDlFeCBDcmVhdGVUZXh0dXJlIGZ1bmN0aW9uLCBvciB2aWEgdGhlCi0gICAgRGlyZWN0M0QxMCBP
cGVuU2hhcmVkUmVzb3VyY2UgZnVuY3Rpb24uICBJZiB1c2VkIHdpdGggRGlyZWN0M0QgOSwKLSAg
ICB0aGUgbGV2ZWwgYXJndW1lbnQgdG8gQ3JlYXRlVGV4dHVyZSBtdXN0IGJlIDEsIGFuZCB0aGUg
ZGltZW5zaW9ucwotICAgIG11c3QgbWF0Y2ggdGhlIGRpbWVuc2lvbnMgb2YgdGhlIEVHTCBzdXJm
YWNlLiAgSWYgdXNlZCB3aXRoCi0gICAgRGlyZWN0M0QgMTAsIE9wZW5TaGFyZWRSZXNvdXJjZSBz
aG91bGQgYmUgY2FsbGVkIHdpdGggdGhlCi0gICAgSUQzRDEwVGV4dHVyZTJEIHV1aWQgdG8gb2J0
YWluIGFuIElEM0QxMFRleHR1cmUyRCBvYmplY3QuCi0KLUlzc3VlcwotCi1SZXZpc2lvbiBIaXN0
b3J5Ci0KLSAgICBWZXJzaW9uIDMsIDIwMTEvMDIvMTEgLSBwdWJsaXNoCi0KLSAgICBWZXJzaW9u
IDIsIDIwMTAvMTIvMjEKLSAgICAgIC0gcmVuYW1lZCB0b2tlbiB0byBFR0xfRDNEX1RFWFRVUkVf
MkRfU0hBUkVfSEFORExFX0FOR0xFIChhZGRpbmcgIjJEIikKLSAgICAgIC0gcmVuYW1lZCBleHRl
bnNpb24gdG8gQU5HTEVfc3VyZmFjZV9kM2RfdGV4dHVyZV8yZF9zaGFyZV9oYW5kbGUKLSAgICAg
IC0gYWRkZWQgbGFuZ3VhZ2UgYWJvdXQgc3VwcG9ydGVkIHVzYWdlIG9mIHRoZSBzaGFyZWQgaGFu
ZGxlIGZyb20gRDNECi0KLSAgICBWZXJzaW9uIDEsIDIwMTAvMTIvMDcgLSBmaXJzdCBkcmFmdC4K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRUdMX0FOR0xFX3dpbmRv
d19maXhlZF9zaXplLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9l
eHRlbnNpb25zL0VHTF9BTkdMRV93aW5kb3dfZml4ZWRfc2l6ZS50eHQJKHJldmlzaW9uIDIwNzgw
NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRUdMX0FOR0xFX3dpbmRv
d19maXhlZF9zaXplLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDEzNiArMCwwIEBACi1OYW1lCi0K
LSAgICBBTkdMRV93aW5kb3dfZml4ZWRfc2l6ZQotCi1OYW1lIFN0cmluZ3MKLQotICAgIEVHTF9B
TkdMRV93aW5kb3dfZml4ZWRfc2l6ZQotCi1Db250cmlidXRvcnMKLQotICAgIEpvaG4gQmF1bWFu
Ci0gICAgU2hhbm5vbiBXb29kcwotCi1Db250YWN0cwotCi0gICAgSm9obiBCYXVtYW4sIEdvb2ds
ZSBJbmMuIChqYmF1bWFuICdhdCcgZ29vZ2xlLmNvbSkKLQotU3RhdHVzCi0KLSAgICBDb21wbGV0
ZQotCi1WZXJzaW9uCi0KLSAgICBWZXJzaW9uIDQsIEZlYnJ1YXJ5IDI0LCAyMDE0Ci0KLU51bWJl
cgotCi0gICAgRUdMIEV4dGVuc2lvbiAjPz8KLQotRGVwZW5kZW5jaWVzCi0KLSAgICBUaGlzIGV4
dGVuc2lvbiBpcyB3cml0dGVuIGFnYWluc3QgdGhlIHdvcmRpbmcgb2YgdGhlIEVHTCAxLjQKLSAg
ICBTcGVjaWZpY2F0aW9uLgotCi1PdmVydmlldwotCi0gICAgVGhpcyBleHRlbnNpb24gYWxsb3dz
IGNyZWF0aW5nIGEgd2luZG93IHN1cmZhY2Ugd2l0aCBhIGZpeGVkIHNpemUgdGhhdCBpcwotICAg
IHNwZWNpZmllZCB3aGVuIGl0IGlzIGNyZWF0ZWQuCi0KLU5ldyBUeXBlcwotCi0gICAgTm9uZQot
Ci1OZXcgUHJvY2VkdXJlcyBhbmQgRnVuY3Rpb25zCi0KLSAgICBOb25lCi0KLU5ldyBUb2tlbnMK
LQotICAgIEFjY2VwdGVkIGJ5IHRoZSA8YXR0cmlidXRlPiBwYXJhbWV0ZXIgb2YgZWdsUXVlcnlT
dXJmYWNlIGFuZCBieSB0aGUKLSAgICA8YXR0cmliX2xpc3Q+IHBhcmFtZXRlciBvZiBlZ2xDcmVh
dGVXaW5kb3dTdXJmYWNlOgotCi0gICAgRUdMX0ZJWEVEX1NJWkVfQU5HTEUgICAgICAgIDB4MzIw
MQotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciAzIG9mIHRoZSBFR0wgMS40IFNwZWNpZmljYXRpb246
Ci0KLSAgICBNb2RpZnkgdGhlIHRoaXJkIHBhcmFncmFwaCBvZiBTZWN0aW9uIDMuNS4xIChDcmVh
dGluZyBPbi1TY3JlZW4gUmVuZGVyaW5nIFN1cmZhY2VzKQotCi0gICAgIjxhdHRyaWJfbGlzdD4g
c3BlY2lmaWVzIGEgbGlzdCBvZiBhdHRyaWJ1dGVzIGZvciB0aGUgd2luZG93LiBUaGUgbGlzdCBo
YXMKLSAgICB0aGUgc2FtZSBzdHJ1Y3R1cmUgYXMgZGVzY3JpYmVkIGZvciBlZ2xDaG9vc2VDb25m
aWcuICBBdHRyaWJ1dGVzIHRoYXQgY2FuCi0gICAgYmUgc3BlY2lmaWVkIGluIDxhdHRyaWJfbGlz
dD4gaW5jbHVkZSBFR0xfUkVOREVSX0JVRkZFUiwKLSAgICBFR0xfVkdfQ09MT1JTUEFDRSwgRUdM
X1ZHX0FMUEhBX0ZPUk1BVCwgRUdMX0ZJWEVEX1NJWkVfQU5HTEUsIEVHTF9XSURUSCwKLSAgICBh
bmQgRUdMX0hFSUdIVC4iCi0KLSAgICBBZGQgYmVmb3JlIHRoZSBsYXN0IHBhcmFncmFwaCBvZiBT
ZWN0aW9uIDMuNS4xCi0KLSAgICAiRUdMX0ZJWEVEX1NJWkVfQU5HTEUgc3BlY2lmaWVzIHdoZXRo
ZXIgdGhlIHN1cmZhY2UgbXVzdCBiZSByZXNpemVkIGJ5IHRoZQotICAgIGltcGxlbWVudGF0aW9u
IHdoZW4gdGhlIG5hdGl2ZSB3aW5kb3cgaXMgcmVzaXplZC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlz
Ci0gICAgRUdMX0ZBTFNFLiAgSXRzIHZhbHVlIGNhbiBiZSBFR0xfVFJVRSwgaW4gd2hpY2ggY2Fz
ZSB0aGUgc2l6ZSBtdXN0IGJlCi0gICAgc3BlY2lmaWVkIHdoZW4gdGhlIHdpbmRvdyBpcyBjcmVh
dGVkLCBvciBFR0xfRkFMU0UsIGluIHdoaWNoIGNhc2UgdGhlIHNpemUKLSAgICBpcyB0YWtlbiBm
cm9tIHRoZSBuYXRpdmUgd2luZG93LiBJdHMgZGVmYXVsdCB2YWx1ZSBpcyBFR0xfRkFMU0UuCi0K
LSAgICBJZiB0aGUgdmFsdWUgb2YgRUdMX0ZJWEVEX1NJWkVfQU5HTEUgaXMgRUdMX1RSVUUsIHRo
ZSB3aW5kb3cgc3VyZmFjZSdzCi0gICAgc2l6ZSBpbiBwaXhlbHMgaXMgc3BlY2lmaWVkIGJ5IHRo
ZSBFR0xfV0lEVEggYW5kIEVHTF9IRUlHSFQgYXR0cmlidXRlcywKLSAgICBhbmQgd2lsbCBub3Qg
Y2hhbmdlIHRocm91Z2hvdXQgdGhlIGxpZmV0aW1lIG9mIHRoZSBzdXJmYWNlLiBJZiBpdHMgdmFs
dWUKLSAgICBpcyBFR0xfRkFMU0UsIHRoZW4gdGhlIHZhbHVlcyBvZiBFR0xfV0lEVEggYW5kIEVH
TF9IRUlHSFQgYXJlIGlnbm9yZWQgYW5kCi0gICAgdGhlIHdpbmRvdyBzdXJmYWNlIG11c3QgYmUg
cmVzaXplZCBieSB0aGUgaW1wbGVtZW50YXRpb24gc3Vic2VxdWVudCB0byB0aGUKLSAgICBuYXRp
dmUgd2luZG93IGJlaW5nIHJlc2l6ZWQsIGFuZCBwcmlvciB0byBjb3B5aW5nIGl0cyBjb250ZW50
cyB0byB0aGUKLSAgICBuYXRpdmUgd2luZG93IChlLmcuIGluIGVnbFN3YXBCdWZmZXJzLCBhcyBk
ZXNjcmliZWQgaW4gc2VjdGlvbiAzLjkuMS4xKS4KLSAgICBUaGUgZGVmYXVsdCB2YWx1ZXMgZm9y
IEVHTF9XSURUSCBhbmQgRUdMX0hFSUdIVCBhcmUgemVyby4gSWYgdGhlIHZhbHVlCi0gICAgc3Bl
Y2lmaWVkIGZvciBlaXRoZXIgb2YgRUdMX1dJRFRIIG9yIEVHTF9IRUlHSFQgaXMgbGVzcyB0aGFu
IHplcm8gdGhlbiBhbgotICAgIEVHTF9CQURfUEFSQU1FVEVSIGVycm9yIGlzIGdlbmVyYXRlZC4i
Ci0KLSAgICBBZGQgdGhlIGZvbGxvd2luZyBlbnRyeSB0byBUYWJsZSAzLjUKLSAgICAoUXVlcnlh
YmxlIHN1cmZhY2UgYXR0cmlidXRlcyBhbmQgdHlwZXMpCi0KLSAgICBBdHRyaWJ1dGUgICAgICAg
ICAgICBUeXBlICAgIERlc2NyaXB0aW9uCi0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0t
LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICBFR0xf
RklYRURfU0laRV9BTkdMRSBib29sZWFuIFN1cmZhY2Ugd2lsbCBub3QgYmUgcmVzaXplZCB3aXRo
IGEgbmF0aXZlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cKLQotICAg
IFJlcGxhY2UgdGhlIGxhc3QgcGFyYWdyYXBoIG9uIHBhZ2UgMzcgaW4gU2VjdGlvbiAzLjUuNiAo
U3VyZmFjZSBBdHRyaWJ1dGVzKQotCi0gICAgIlF1ZXJ5aW5nIEVHTF9XSURUSCBhbmQgRUdMX0hF
SUdIVCByZXR1cm5zIHJlc3BlY3RpdmVseSB0aGUgd2lkdGggYW5kCi0gICAgaGVpZ2h0LCBpbiBw
aXhlbHMsIG9mIHRoZSBzdXJmYWNlLiBGb3IgYSBwaXhtYXAgc3VyZmFjZSBvciB3aW5kb3cgc3Vy
ZmFjZQotICAgIHdpdGggRUdMX0ZJWEVEX1NJWkVfQU5HTEUgc2V0IHRvIEVHTF9GQUxTRSwgdGhl
c2UgdmFsdWVzIGFyZSBpbml0aWFsbHkKLSAgICBlcXVhbCB0byB0aGUgd2lkdGggYW5kIGhlaWdo
dCBvZiB0aGUgbmF0aXZlIHdpbmRvdyBvciBwaXhtYXAgd2l0aCByZXNwZWN0Ci0gICAgdG8gd2hp
Y2ggdGhlIHN1cmZhY2Ugd2FzIGNyZWF0ZWQuIElmIHRoZSBuYXRpdmUgd2luZG93IGlzIHJlc2l6
ZWQgYW5kIHRoZQotICAgIGNvcnJlc3BvbmRpbmcgd2luZG93IHN1cmZhY2UgaXMgbm90IGZpeGVk
IHNpemUsIHRoZSBjb3JyZXNwb25kaW5nIHdpbmRvdwotICAgIHN1cmZhY2Ugd2lsbCBldmVudHVh
bGx5IGJlIHJlc2l6ZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uIHRvIG1hdGNoIChhcwotICAgIGRp
c2N1c3NlZCBpbiBzZWN0aW9uIDMuOS4xKS4gSWYgdGhlcmUgaXMgYSBkaXNjcmVwYW5jeSBiZWNh
dXNlIEVHTCBoYXMgbm90Ci0gICAgeWV0IHJlc2l6ZWQgdGhlIHdpbmRvdyBzdXJmYWNlLCB0aGUg
c2l6ZSByZXR1cm5lZCBieSBlZ2xRdWVyeVN1cmZhY2Ugd2lsbAotICAgIGFsd2F5cyBiZSB0aGF0
IG9mIHRoZSBFR0wgc3VyZmFjZSwgbm90IHRoZSBjb3JyZXNwb25kaW5nIG5hdGl2ZSB3aW5kb3cu
IgotCi0gICAgQWRkIHRoZSBmb2xsb3dpbmcgcGFyYWdyYXBoIHRvIFNlY3Rpb24gMy41LjYgKFN1
cmZhY2UgQXR0cmlidXRlcykKLQotICAgICJRdWVyeWluZyBFR0xfRklYRURfU0laRV9BTkdMRSBy
ZXR1cm5zIEVHTF9GQUxTRSBpZiB0aGUgc3VyZmFjZSB3aWxsIGJlCi0gICAgcmVzaXplZCB0byBt
YXRjaCBhIG5hdGl2ZSB3aW5kb3csIGFuZCBFR0xfVFJVRSBpZiB0aGUgc3VyZmFjZSBjYW5ub3Qg
YmUKLSAgICByZXNpemVkLiIKLQotICAgIEFsdGVyIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpcnN0
IHBhcmFncmFwaCBvZiBTZWN0aW9uIDMuOS4xLjEgKE5hdGl2ZQotICAgIFdpbmRvdyBSZXNpemlu
ZykKLQotICAgICJJZiA8c3VyZmFjZT4gZG9lcyBub3QgaGF2ZSBFR0xfRklYRURfU0laRV9BTkdM
RSBzZXQgYW5kIHRoZSBuYXRpdmUgd2luZG93Ci0gICAgY29ycmVzcG9uZGluZyB0byA8c3VyZmFj
ZT4gaGFzIGJlZW4gcmVzaXplZCBwcmlvciB0byB0aGUgc3dhcCwgPHN1cmZhY2U+Ci0gICAgbXVz
dCBiZSByZXNpemVkIHRvIG1hdGNoLiIKLQotSXNzdWVzCi0KLSAgICAxLiBTaG91bGQgdGhlcmUg
YmUgYSB3YXkgdG8gcmVzaXplIGEgd2luZG93IHN1cmZhY2UgdGhhdCBoYWQgaXRzIHNpemUKLSAg
ICBzcGVjaWZpZWQgaW5pdGlhbGx5LgotCi0gICAgUkVTT0xWRUQ6IE5vLiBTdXJmYWNlcyB0aGF0
IGhhdmUgdGhlaXIgc2l6ZXMgc3BlY2lmaWVkIGluaXRpYWxseSBtdXN0IGhhdmUKLSAgICBFR0xf
RklYRURfU0laRV9BTkdMRSBzZXQgYW5kIGNhbiBuZXZlciBiZSByZXNpemVkLgotCi1SZXZpc2lv
biBIaXN0b3J5Ci0KLSAgICBWZXJzaW9uIDQsIDIwMTQvMDIvMjQgLSBmb3JtYXR0aW5nIGNoYW5n
ZXMuCi0KLSAgICBWZXJzaW9uIDMsIDIwMTQvMDIvMTIgLSBpZ25vcmUgRUdMX1dJRFRIIGFuZCBF
R0xfSEVJR0hUIGlmCi0gICAgRUdMX0ZJWEVEX1NJWkVfQU5HTEUgaXMgRUdMX0ZBTFNFCi0KLSAg
ICBWZXJzaW9uIDIsIDIwMTQvMDIvMDcgLSByZW5hbWUgdG8gRUdMX0FOR0xFX3dpbmRvd19maXhl
ZF9zaXplLCBhbmQgYWRkIGFuCi0gICAgRUdMX0ZJWEVEX1NJWkVfQU5HTEUgdG9rZW4uCi0KLSAg
ICBWZXJzaW9uIDEsIDIwMTQvMDIvMDUgLSBmaXJzdCBkcmFmdC4KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRUdMX0VYVF9jcmVhdGVfY29udGV4dF9yb2J1c3RuZXNz
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VH
TF9FWFRfY3JlYXRlX2NvbnRleHRfcm9idXN0bmVzcy50eHQJKHJldmlzaW9uIDIwNzgwNCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRUdMX0VYVF9jcmVhdGVfY29udGV4
dF9yb2J1c3RuZXNzLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDE2OSArMCwwIEBACi1OYW1lCi0K
LSAgICBFWFRfY3JlYXRlX2NvbnRleHRfcm9idXN0bmVzcwotCi1OYW1lIFN0cmluZ3MKLQotICAg
IEVHTF9FWFRfY3JlYXRlX2NvbnRleHRfcm9idXN0bmVzcwotCi1Db250cmlidXRvcnMKLQotICAg
IERhbmllbCBLb2NoLCBUcmFuc0dhbWluZwotICAgIENvbnRyaWJ1dG9ycyB0byBFR0xfS0hSX2Ny
ZWF0ZV9jb250ZXh0Ci0KLUNvbnRhY3QKLQotICAgIEdyZWcgUm90aCAoZ3JvdGggJ2F0JyBudmlk
aWEuY29tKQotCi1TdGF0dXMKLQotICAgIENvbXBsZXRlLgotCi1WZXJzaW9uCi0KLSAgICBWZXJz
aW9uIDMsIDIwMTEvMTAvMzEKLQotTnVtYmVyCi0KLSAgICBFR0wgRXh0ZW5zaW9uICMzNwotCi1E
ZXBlbmRlbmNpZXMKLQotICAgIFJlcXVpcmVzIEVHTCAxLjQKLQotICAgIFdyaXR0ZW4gYWdhaW5z
dCB0aGUgRUdMIDEuNCBzcGVjaWZpY2F0aW9uLgotCi0gICAgQW4gT3BlbkdMIGltcGxlbWVudGF0
aW9uIHN1cHBvcnRpbmcgR0xfQVJCX3JvYnVzdG5lc3MsIGFuIE9wZW5HTCBFUwotICAgIGltcGxl
bWVudGF0aW9uIHN1cHBvcnRpbmcgR0xfRVhUX3JvYnVzdG5lc3MsIG9yIGFuIGltcGxlbWVudGF0
aW9uCi0gICAgc3VwcG9ydGluZyBlcXVpdmFsZW50IGZ1bmN0aW9uYWxpdHkgaXMgcmVxdWlyZWQu
Ci0KLU92ZXJ2aWV3Ci0KLSAgICBUaGlzIGV4dGVuc2lvbiBhbGxvd3MgY3JlYXRpbmcgYW4gT3Bl
bkdMIG9yIE9wZW5HTCBFUyBjb250ZXh0Ci0gICAgc3VwcG9ydGluZyByb2J1c3QgYnVmZmVyIGFj
Y2VzcyBiZWhhdmlvciBhbmQgYSBzcGVjaWZpZWQgZ3JhcGhpY3MKLSAgICByZXNldCBub3RpZmlj
YXRpb24gYmVoYXZpb3IuCi0KLU5ldyBQcm9jZWR1cmVzIGFuZCBGdW5jdGlvbnMKLQotICAgIE5v
bmUKLQotTmV3IFRva2VucwotCi0gICAgQWNjZXB0ZWQgYXMgYW4gYXR0cmlidXRlIG5hbWUgaW4g
dGhlIDwqYXR0cmliX2xpc3Q+IGFyZ3VtZW50IHRvCi0gICAgZWdsQ3JlYXRlQ29udGV4dDoKLQot
ICAgICAgICBFR0xfQ09OVEVYVF9PUEVOR0xfUk9CVVNUX0FDQ0VTU19FWFQgICAgMHgzMEJGCi0g
ICAgICAgIEVHTF9DT05URVhUX09QRU5HTF9SRVNFVF9OT1RJRklDQVRJT05fU1RSQVRFR1lfRVhU
ICAweDMxMzgKLQotICAgIEFjY2VwdGVkIGFzIGFuIGF0dHJpYnV0ZSB2YWx1ZSBmb3IgRUdMX0NP
TlRFWFRfUkVTRVRfTk9USUZJQ0FUSU9OXy0KLSAgICBTVFJBVEVHWV9FWFQgaW4gdGhlIDwqYXR0
cmliX2xpc3Q+IGFyZ3VtZW50IHRvIGVnbENyZWF0ZUNvbnRleHQ6Ci0KLSAgICAgICAgRUdMX05P
X1JFU0VUX05PVElGSUNBVElPTl9FWFQgICAgICAgICAgIDB4MzFCRQotICAgICAgICBFR0xfTE9T
RV9DT05URVhUX09OX1JFU0VUX0VYVCAgICAgICAgICAgMHgzMUJGCi0KLUFkZGl0aW9ucyB0byB0
aGUgRUdMIDEuNCBTcGVjaWZpY2F0aW9uCi0KLSAgICBSZXBsYWNlIHNlY3Rpb24gMy43LjEgIkNy
ZWF0aW5nIFJlbmRlcmluZyBDb250ZXh0cyIgZnJvbSB0aGUKLSAgICBmaWZ0aCBwYXJhZ3JhcGgg
dGhyb3VnaCB0aGUgc2V2ZW50aCBwYXJhZ3JhcGg6Ci0KLSAgICA8YXR0cmliX2xpc3Q+IHNwZWNp
ZmllcyBhIGxpc3Qgb2YgYXR0cmlidXRlcyBmb3IgdGhlIGNvbnRleHQuIFRoZQotICAgIGxpc3Qg
aGFzIHRoZSBzYW1lIHN0cnVjdHVyZSBhcyBkZXNjcmliZWQgZm9yIGVnbENob29zZUNvbmZpZy4g
SWYgYW4KLSAgICBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCBpbiA8YXR0cmliX2xpc3Q+LCB0
aGVuIHRoZSBkZWZhdWx0IHZhbHVlCi0gICAgc3BlY2lmaWVkIGJlbG93IGlzIHVzZWQgaW5zdGVh
ZC4gPGF0dHJpYl9saXN0PiBtYXkgYmUgTlVMTCBvciBlbXB0eQotICAgIChmaXJzdCBhdHRyaWJ1
dGUgaXMgRUdMX05PTkUpLCBpbiB3aGljaCBjYXNlIGF0dHJpYnV0ZXMgYXNzdW1lIHRoZWlyCi0g
ICAgZGVmYXVsdCB2YWx1ZXMgYXMgZGVzY3JpYmVkIGJlbG93LiBNb3N0IGF0dHJpYnV0ZXMgYXJl
IG9ubHkgbWVhbmluZ2Z1bAotICAgIGZvciBzcGVjaWZpYyBjbGllbnQgQVBJcywgYW5kIHdpbGwg
Z2VuZXJhdGUgYW4gRUdMX0JBRF9BVFRSSUJVVEUKLSAgICBlcnJvciB3aGVuIHNwZWNpZmllZCB0
byBjcmVhdGUgZm9yIGFub3RoZXIgY2xpZW50IEFQSSBjb250ZXh0LgotCi0gICAgQ29udGV4dCBW
ZXJzaW9ucwotICAgIC0tLS0tLS0tLS0tLS0tLS0KLQotICAgIEVHTF9DT05URVhUX0NMSUVOVF9W
RVJTSU9OIGRldGVybWluZXMgd2hpY2ggdmVyc2lvbiBvZiBhbiBPcGVuR0wgRVMKLSAgICBjb250
ZXh0IHRvIGNyZWF0ZS4gVGhpcyBhdHRyaWJ1dGUgbWF5IG9ubHkgYmUgc3BlY2lmaWVkIHdoZW4g
Y3JlYXRpbmcKLSAgICBhbiBPcGVuR0wgRVMgY29udGV4dCAoZS5nLiB3aGVuIHRoZSBjdXJyZW50
IHJlbmRlcmluZyBBUEkgaXMKLSAgICBFR0xfT1BFTkdMX0VTX0FQSSkuIEFuIGF0dHJpYnV0ZSB2
YWx1ZSBvZiAxIHNwZWNpZmllcyBjcmVhdGlvbiBvZiBhbgotICAgIE9wZW5HTCBFUyAxLnggY29u
dGV4dC4gIEFuIGF0dHJpYnV0ZSB2YWx1ZSBvZiAyIHNwZWNpZmllcyBjcmVhdGlvbiBvZiBhbgot
ICAgIE9wZW4gR0wgRVMgMi54IGNvbnRleHQuIFRoZSBkZWZhdWx0IHZhbHVlIGZvciBFR0xfQ09O
VEVYVF9DTElFTlRfVkVSU0lPTgotICAgIGlzIDEuCi0KLSAgICBDb250ZXh0IFJvYnVzdCBBY2Nl
c3MKLSAgICAtLS0tLS0tLS0tLS0tCi0KLSAgICBFR0xfQ09OVEVYVF9PUEVOR0xfUk9CVVNUX0FD
Q0VTU19FWFQgaW5kaWNhdGVzIHdoZXRoZXIgPHJvYnVzdCBidWZmZXIKLSAgICBhY2Nlc3M+IHNo
b3VsZCBiZSBlbmFibGVkIGZvciB0aGUgT3BlbkdMIEVTIGNvbnRleHQuIFJvYnVzdCBidWZmZXIK
LSAgICBhY2Nlc3MgaXMgZGVmaW5lZCBpbiB0aGUgR0xfRVhUX3JvYnVzdG5lc3MgZXh0ZW5zaW9u
IHNwZWNpZmljYXRpb24sCi0gICAgYW5kIHRoZSByZXN1bHRpbmcgY29udGV4dCBtdXN0IHN1cHBv
cnQgR0xfRVhUX3JvYnVzdG5lc3MgYW5kIHJvYnVzdAotICAgIGJ1ZmZlciBhY2Nlc3MgYXMgZGVz
Y3JpYmVkIHRoZXJlaW4uIFRoZSBkZWZhdWx0IHZhbHVlIG9mCi0gICAgRUdMX0NPTlRFWFRfT1BF
TkdMX1JPQlVTVF9BQ0NFU1NfRVhUIGlzIEVHTF9GQUxTRS4KLQotICAgIENvbnRleHQgUmVzZXQg
Tm90aWZpY2F0aW9uCi0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIFRoZSBh
dHRyaWJ1dGUgbmFtZSBFR0xfQ09OVEVYVF9PUEVOR0xfUkVTRVRfTk9USUZJQ0FUSU9OX1NUUkFU
RUdZXy0KLSAgICBFWFQgc3BlY2lmaWVzIHRoZSA8cmVzZXQgbm90aWZpY2F0aW9uIGJlaGF2aW9y
PiBvZiB0aGUgcmVuZGVyaW5nCi0gICAgY29udGV4dC4gVGhpcyBhdHRyaWJ1dGUgaXMgb25seSBt
ZWFuaW5nZnVsIGZvciBPcGVuR0wgRVMgY29udGV4dHMsCi0gICAgYW5kIHNwZWNpZnlpbmcgaXQg
Zm9yIG90aGVyIHR5cGVzIG9mIGNvbnRleHRzIHdpbGwgZ2VuZXJhdGUgYW4KLSAgICBFR0xfQkFE
X0FUVFJJQlVURSBlcnJvci4KLQotICAgIFJlc2V0IG5vdGlmaWNhdGlvbiBiZWhhdmlvciBpcyBk
ZWZpbmVkIGluIHRoZSBHTF9FWFRfcm9idXN0bmVzcwotICAgIGV4dGVuc2lvbiBmb3IgT3BlbkdM
IEVTLCBhbmQgdGhlIHJlc3VsdGluZyBjb250ZXh0IG11c3Qgc3VwcG9ydAotICAgIEdMX0VYVF9y
b2J1c3RuZXNzIGFuZCB0aGUgc3BlY2lmaWVkIHJlc2V0IHN0cmF0ZWd5LiBUaGUgYXR0cmlidXRl
Ci0gICAgdmFsdWUgbWF5IGJlIGVpdGhlciBFR0xfTk9fUkVTRVRfTk9USUZJQ0FUSU9OX0VYVCBv
ciBFR0xfTE9TRV8tCi0gICAgQ09OVEVYVF9PTl9SRVNFVF9FWFQsIHdoaWNoIHJlc3BlY3RpdmVs
eSByZXN1bHQgaW4gZGlzYWJsaW5nCi0gICAgZGVsaXZlcnkgb2YgcmVzZXQgbm90aWZpY2F0aW9u
cyBvciB0aGUgbG9zcyBvZiBhbGwgY29udGV4dCBzdGF0ZQotICAgIHVwb24gcmVzZXQgbm90aWZp
Y2F0aW9uIGFzIGRlc2NyaWJlZCBieSB0aGUgR0xfRVhUX3JvYnVzdG5lc3MuIFRoZQotICAgIGRl
ZmF1bHQgdmFsdWUgZm9yIEVHTF9DT05URVhUX09QRU5HTF9SRVNFVF9OT1RJRklDQVRJT05fU1RS
QVRFR1lfRVhUCi0gICAgaXMgRUdMX05PX1JFU0VUX05PVElGSUNBVElPTl9FWFQuCi0gICAgCi0g
ICAgQWRkIHRvIHRoZSBlZ2xDcmVhdGVDb250ZXh0IGNvbnRleHQgY3JlYXRpb24gZXJyb3JzOgot
Ci0gICAgKiBJZiA8Y29uZmlnPiBkb2VzIG5vdCBzdXBwb3J0IGEgY2xpZW50IEFQSSBjb250ZXh0
IGNvbXBhdGlibGUKLSAgICAgIHdpdGggdGhlIHJlcXVlc3RlZCBjb250ZXh0IGZsYWdzIGFuZCBj
b250ZXh0IHJlc2V0IG5vdGlmaWNhdGlvbgotICAgICAgYmVoYXZpb3IgKGZvciBjbGllbnQgQVBJ
IHR5cGVzIHdoZXJlIHRoZXNlIGF0dHJpYnV0ZXMgYXJlCi0gICAgICBzdXBwb3J0ZWQpLCB0aGVu
IGFuIEVHTF9CQURfQ09ORklHIGVycm9yIGlzIGdlbmVyYXRlZC4KLQotICAgICogSWYgdGhlIHJl
c2V0IG5vdGlmaWNhdGlvbiBiZWhhdmlvciBvZiA8c2hhcmVfY29udGV4dD4gYW5kIHRoZQotICAg
ICAgbmV3bHkgY3JlYXRlZCBjb250ZXh0IGFyZSBkaWZmZXJlbnQgdGhlbiBhbiBFR0xfQkFEX01B
VENIIGVycm9yIGlzCi0gICAgICBnZW5lcmF0ZWQuCi0KLQotRXJyb3JzCi0KLSAgICBFR0xfQkFE
X0NPTkZJRyBpcyBnZW5lcmF0ZWQgaWYgRUdMX0NPTlRFWFRfT1BFTkdMX1JPQlVTVF9BQ0NFU1Nf
LQotICAgIEVYVCBpcyBzZXQgdG8gRUdMX1RSVUUgYW5kIG5vIEdMIGNvbnRleHQgc3VwcG9ydGlu
ZyB0aGUgR0xfRVhUXy0KLSAgICByb2J1c3RuZXNzIGV4dGVuc2lvbiBhbmQgcm9idXN0IGFjY2Vz
cyBhcyBkZXNjcmliZWQgdGhlcmVpbiBjYW4gYmUKLSAgICBjcmVhdGVkLgotCi0gICAgRUdMX0JB
RF9DT05GSUcgaXMgZ2VuZXJhdGVkIGlmIG5vIEdMIGNvbnRleHQgc3VwcG9ydGluZyB0aGUKLSAg
ICBHTF9FWFRfcm9idXN0bmVzcyBleHRlbnNpb24gYW5kIHRoZSBzcGVjaWZpZWQgcmVzZXQgbm90
aWZpY2F0aW9uCi0gICAgYmVoYXZpb3IgKHRoZSB2YWx1ZSBvZiBhdHRyaWJ1dGUgRUdMX0NPTlRF
WFRfUkVTRVRfTk9USUZJQ0FUSU9OXy0KLSAgICBTVFJBVEVHWV9FWFQpIGNhbiBiZSBjcmVhdGVk
LgotCi0gICAgQkFEX01BVENIIGlzIGdlbmVyYXRlZCBpZiB0aGUgcmVzZXQgbm90aWZpY2F0aW9u
IGJlaGF2aW9yIG9mCi0gICAgPHNoYXJlX2NvbnRleHQ+IGRvZXMgbm90IG1hdGNoIHRoZSByZXNl
dCBub3RpZmljYXRpb24gYmVoYXZpb3Igb2YKLSAgICB0aGUgY29udGV4dCBiZWluZyBjcmVhdGVk
LgotCi1OZXcgU3RhdGUKLQotICAgIE5vbmUKLQotQ29uZm9ybWFuY2UgVGVzdHMKLQotICAgIFRC
RAotCi1TYW1wbGUgQ29kZQotCi0gICAgVEJECi0KLUlzc3VlcwotCi0gICAgTm9uZQotCi1SZXZp
c2lvbiBIaXN0b3J5Ci0KLSAgICBSZXYuICAgIERhdGUgICAgICAgQXV0aG9yICAgICBDaGFuZ2Vz
Ci0gICAgLS0tLSAgLS0tLS0tLS0tLS0tIC0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgMyAgIDMxIE9jdCAgMjAxMSBncm90aCAgICAgIFJl
dmVydGVkIHRvIGF0dHJpYnV0ZSBmb3Igcm9idXN0IGFjY2Vzcy4gTm93IGl0J3MgYQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhbmlvbiB0byByYXRoZXIgdGhhbiBzdWJz
ZXQgb2YgS0hSX2NyZWF0ZV9jb250ZXh0Ci0gICAgICAyICAgMTEgT2N0ICAyMDExIGdyb3RoICAg
ICAgTWVyZ2VkIEFOR0xFIGFuZCBOViBleHRlbnNpb25zLgotICAgICAgMSAgIDE1IEp1bHkgMjAx
MSBncm90aCAgICAgIEluaXRpYWwgdmVyc2lvbgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvZXh0ZW5zaW9ucy9FR0xfRVhUX2RldmljZV9xdWVyeS50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FR0xfRVhUX2RldmljZV9xdWVyeS50eHQJ
KHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMv
RUdMX0VYVF9kZXZpY2VfcXVlcnkudHh0CShub25leGlzdGVudCkKQEAgLTEsMTg4ICswLDAgQEAK
LU5hbWUKLQotICAgIEVYVF9kZXZpY2VfcXVlcnkKLQotTmFtZSBTdHJpbmdzCi0KLSAgICBFR0xf
RVhUX2RldmljZV9xdWVyeQotCi1Db250cmlidXRvcnMKLQotICAgIEphbWVzIEpvbmVzLCBOVklE
SUEgIChqYWpvbmVzICdhdCcgbnZpZGlhLmNvbSkKLSAgICBKYW1pZSBNYWRpbGwsIEdvb2dsZSAg
KGptYWRpbGwgJ2F0JyBnb29nbGUuY29tKQotCi1Db250YWN0cwotCi0gICAgSmFtaWUgTWFkaWxs
LCBHb29nbGUgIChqbWFkaWxsICdhdCcgZ29vZ2xlLmNvbSkKLQotU3RhdHVzCi0KLSAgICBEcmFm
dAotCi1WZXJzaW9uCi0KLSAgICBWZXJzaW9uIDEgLSBNYXIgMjVyZCwgMjAxNQotCi1OdW1iZXIK
LQotICAgIEVHTCBFeHRlbnNpb24gI1hYWAotCi1FeHRlbnNpb24gVHlwZQotCi0gICAgRUdMIGNs
aWVudCBleHRlbnNpb24KLQotRGVwZW5kZW5jaWVzCi0KLSAgICBXcml0dGVuIGFnYWluc3QgdGhl
IHdvcmRpbmcgb2YgRUdMIDEuNS4KLQotICAgIFJlcXVpcmVzIEVHTCAxLjUgb3IgYW4gZWFybGll
ciB2ZXJpc29uIG9mIEVHTCB3aXRoIHRoZQotICAgIEVHTF9FWFRfY2xpZW50X2V4dGVuc2lvbnMg
ZXh0ZW5zaW9uLgotCi1PdmVydmlldwotCi0gICAgSW5jcmVhc2luZ2x5LCBFR0wgYW5kIGl0cyBj
bGllbnQgQVBJcyBhcmUgYmVpbmcgdXNlZCBpbiBwbGFjZSBvZgotICAgICJuYXRpdmUiIHJlbmRl
cmluZyBBUElzIHRvIGltcGxlbWVudCB0aGUgYmFzaWMgZ3JhcGhpY3MKLSAgICBmdW5jdGlvbmFs
aXR5IG9mIG5hdGl2ZSB3aW5kb3dpbmcgc3lzdGVtcy4gIFRoaXMgY3JlYXRlcyBkZW1hbmQKLSAg
ICBmb3IgYSBtZXRob2QgdG8gYWNjZXNzIG5hdGl2ZSBHUFUgb3IgZGV2aWNlIG9iamVjdHMgZGly
ZWN0bHkKLSAgICByYXRoZXIgdGhhbiBjYWxsaW5nIEVHTCBvciBHTCBlbnRyeSBwb2ludHMuCi0K
LSAgICBUaGlzIGV4dGVuc2lvbiBkZWZpbmVzIHRoZSBtZXRob2QgZm9yIGFuIGFwcGxpY2F0aW9u
IHRvIHF1ZXJ5Ci0gICAgbmF0aXZlIGRldmljZSBvYmplY3RzIGZyb20gYW4gRUdMIERpc3BsYXku
Ci0KLU5ldyBUeXBlcwotCi0gICAgVGhpcyBpcyB0aGUgdHlwZSBvZiBhIGhhbmRsZSB0aGF0IHJl
cHJlc2VudHMgYW4gRUdMRGV2aWNlRVhUCi0gICAgb2JqZWN0LgotCi0gICAgICAgIHR5cGVkZWYg
dm9pZCogRUdMRGV2aWNlRVhUOwotCi0gICAgSWYgRUdMIDEuNSBpcyBub3Qgc3VwcG9ydGVkLCB0
aGUgZm9sbG93aW5nIHR5cGUgaXMgYWRkZWQsIGFzCi0gICAgZGVmaW5lZCBpbiB0aGUgRUdMIDEu
NSBzcGVjaWZpY2F0aW9uOgotCi0gICAgICAgIHR5cGVkZWYgaW50cHRyX3QgRUdMQXR0cmliOwot
Ci1OZXcgRnVuY3Rpb25zCi0KLSAgICBFR0xCb29sZWFuIGVnbFF1ZXJ5RGV2aWNlQXR0cmliRVhU
KEVHTERldmljZUVYVCBkZXZpY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBFR0xpbnQgYXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRUdMQXR0cmliICp2YWx1ZSk7Ci0KLSAgICBjb25zdCBjaGFyICplZ2xRdWVyeURldmlj
ZVN0cmluZ0VYVChFR0xEZXZpY2VFWFQgZGV2aWNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEVHTGludCBuYW1lKTsKLQotICAgIEVHTEJvb2xlYW4gZWdsUXVlcnlE
aXNwbGF5QXR0cmliRVhUKEVHTERpc3BsYXkgZHB5LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEVHTGludCBhdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRUdMQXR0cmliICp2YWx1ZSk7Ci0KLU5ldyBUb2tlbnMKLQotICAg
IEZ1bmN0aW9ucyB3aXRoIGEgcmV0dXJuIHR5cGUgb2YgRUdMRGV2aWNlRVhUIHdpbGwgcmV0dXJu
IHRoaXMKLSAgICB2YWx1ZSBvbiBmYWlsdXJlOgotCi0gICAgICAgIEVHTF9OT19ERVZJQ0VfRVhU
ICAgICAgICAgICAgICAgICAgICAgICgoRUdMRGV2aWNlRVhUKTApCi0KLSAgICBUaGlzIGVycm9y
IHZhbHVlIHdpbGwgYmUgZ2VuZXJhdGVkIGJ5IGZ1bmN0aW9ucyB0aGF0IHRha2UgYW4KLSAgICBF
R0xEZXZpY2VFWFQgb2JqZWN0IGFzIGEgcGFyYW1ldGVyOgotCi0gICAgICAgIEVHTF9CQURfREVW
SUNFX0VYVCAgICAgICAgICAgICAgICAgICAgIDB4MzIyQgotCi0gICAgQWNjZXB0ZWQgYnkgdGhl
IDxhdHRyaWJ1dGU+IHBhcmFtZXRlciBvZgotICAgIGVnbFF1ZXJ5RGlzcGxheUF0dHJpYkVYVDoK
LQotICAgICAgICBFR0xfREVWSUNFX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAweDMyMkMK
LQotQWRkIGEgbmV3IHNlY3Rpb24gIjIuMS4yIERldmljZXMiIGFmdGVyICIyLjEuMSBTY2FsYXIg
VHlwZXMiCi0KLSAgICBBbGwgRUdMIG9wZXJhdGlvbnMgb2NjdXIgb24gYW4gRUdMRGV2aWNlRVhU
LiAgSG93ZXZlciwgZGV2aWNlcwotICAgIHRoZW1zZWx2ZXMgZXhwb3NlIG5vIGZ1bmN0aW9uYWxp
dHkuICBUaGV5IGFyZSBzaW1wbGUgYWJzdHJhY3QKLSAgICBvYmplY3RzIHRoYXQgZXhpc3Qgb25s
eSBmb3IgdGhlIHNha2Ugb2YgZW51bWVyYXRpb24gYW5kCi0gICAgZGVmaW5pbmcgYSBuYW1lc3Bh
Y2UuCi0KLU1vZGlmeSB0aGUgbGFzdCBzZW50ZW5jZSBvZiBzZWN0aW9uICIyLjEuMyIgRGlzcGxh
eXMiIHRvIHJlYWQ6Ci0KLSAgICBCZXNpZGVzIGRldmljZXMsIG9iamVjdHMgYXJlIGFsd2F5cyBz
cGVjaWZpZWQgYnkgdGhlIGNvbWJpbmF0aW9uCi0gICAgb2YgYW4gRUdMRGlzcGxheSBwYXJhbWV0
ZXIgd2l0aCBhIHBhcmFtZXRlciByZXByZXNlbnRpbmcgdGhlCi0gICAgaGFuZGxlIG9mIHRoZSBv
YmplY3QuCi0KLUFkZCBhIG5ldyBleHRlbnNpb24gdHlwZSB0byB0aGUgbGlzdCBpbiBzZWN0aW9u
ICIyLjggRXh0ZW5zaW9ucyIKLQotICAgIERldmljZSBFeHRlbnNpb25zCi0gICAgICAgIEEgKmRl
dmljZSBleHRlbnNpb24qIGFkZHMgZnVuY3Rpb25hbGl0eSB0byBhbiBpbmRpdmlkdWFsCi0gICAg
ICAgIEVHTERldmljZUVYVC4gIERpZmZlcmVudCBpbnN0YW5jZXMgb2YgRUdMRGV2aWNlRVhUIG1h
eSBzdXBwb3J0Ci0gICAgICAgIGRpZmZlcmVudCBzZXRzIG9mIGRldmljZSBleHRlbnNpb25zCi0K
LUFkZCBhIG5ldyBlcnJvciB0byBzZWN0aW9uICIzLjEgRXJyb3JzIgotCi0gICAgRUdMX0JBRF9E
RVZJQ0VfRVhUCi0gICAgICAgIEFuIEVHTERldmljZUVYVCBhcmd1bWVudCBkb2VzIG5vdCByZWZl
ciB0byBhIHZhbGlkCi0gICAgICAgIEVHTERldmljZUVYVC4gIEFueSBjb21tYW5kIHRha2luZyBh
biBFR0xEZXZpY2VFWFQgcGFyYW1ldGVyCi0gICAgICAgIG1heSBnZW5lcmF0ZSB0aGlzIGVycm9y
LgotCi1BZGQgYSBzZWN0aW9uICIzLjIgRGV2aWNlcyIgYWZ0ZXIgIjMuMSBFcnJvcnMiCi0KLSAg
ICBUbyBxdWVyeSB0aGUgcHJvcGVydGllcyBvZiBhIGRldmljZSwgdXNlOgotCi0gICAgICAgIEVH
TEJvb2xlYW4gZWdsUXVlcnlEZXZpY2VBdHRyaWJFWFQoRUdMRGV2aWNlRVhUIGRldmljZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgYXR0cmlidXRl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTEF0dHJpYiAq
dmFsdWUpOwotCi0gICAgT24gc3VjY2VzcywgRUdMX1RSVUUgaXMgcmV0dXJuZWQgYW5kIHRoZSBy
ZXF1ZXN0ZWQgYXR0cmlidXRlIHZhbHVlCi0gICAgaXMgcmV0dXJuZWQgaW4gPHZhbHVlPi4gIEN1
cnJlbnRseSB0aGVyZSBhcmUgbm8gdmFsaWQgdmFsdWVzIG9mCi0gICAgPGF0dHJpYnV0ZT4gZGVm
aW5lZC4KLQotICAgIE9uIGZhaWx1cmUsIEVHTF9GQUxTRSBpcyByZXR1cm5lZC4gIEFuIEVHTF9C
QURfQVRUUklCVVRFIGVycm9yIGlzCi0gICAgZ2VuZXJhdGVkIGlmIDxhdHRyaWJ1dGU+IGlzIG5v
dCBhIHZhbGlkIGF0dHJpYnV0ZS4gIEFuCi0gICAgRUdMX0JBRF9ERVZJQ0VfRVhUIGVycm9yIGlz
IGdlbmVyYXRlZCBpZiA8ZGV2aWNlPiBpcyBub3QgYSB2YWxpZAotICAgIEVHTERldmljZUVYVC4K
LQotICAgICAgICBjb25zdCBjaGFyICplZ2xRdWVyeURldmljZVN0cmluZ0VYVChFR0xEZXZpY2VF
WFQgZGV2aWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
R0xpbnQgbmFtZSk7Ci0KLSAgICByZXR1cm5zIGEgcG9pbnRlciB0byBhIHN0YXRpYywgemVyby10
ZXJtaW5hdGVkIHN0cmluZyBkZXNjcmliaW5nCi0gICAgc29tZSBhc3BlY3Qgb2YgdGhlIHNwZWNp
ZmllZCBFR0xEZXZpY2VFWFQuICA8bmFtZT4gbXVzdCBiZQotICAgIEVHTF9FWFRFTlNJT05TLgot
Ci0gICAgVGhlIEVHTF9FWFRFTlNJT05TIHN0cmluZyBkZXNjcmliZXMgd2hpY2ggZGV2aWNlIGV4
dGVuc2lvbnMgYXJlCi0gICAgc3VwcG9ydGVkIGJ5IDxkZXZpY2U+LiAgVGhlIHN0cmluZyBpcyBv
ZiB0aGUgc2FtZSBmb3JtYXQgc3BlY2lmaWVkCi0gICAgZm9yIGRpc3BsYXkgYW5kIGNsaWVudCBl
eHRlbnNpb24gc3RyaW5ncyBpbiBzZWN0aW9uIDMuNC4gTm90ZSB0aGF0Ci0gICAgZGV2aWNlIGV4
dGVuc2lvbnMgYXJlIHByb3BlcnRpZXMgb2YgdGhlIGRldmljZSwgYW5kIGFyZSBkaXN0aW5jdAot
ICAgIGZyb20gb3RoZXIgZXh0ZW5zaW9uIHN0cmluZ3MuCi0KLSAgICBPbiBmYWlsdXJlLCBOVUxM
IGlzIHJldHVybmVkLiAgQW4gRUdMX0JBRF9ERVZJQ0VfRVhUIGVycm9yIGlzCi0gICAgZ2VuZXJh
dGVkIGlmIDxkZXZpY2U+IGlzIG5vdCBhIHZhbGlkIEVHTERldmljZUVYVC4gIEFuCi0gICAgRUdM
X0JBRF9QQVJBTUVURVIgZXJyb3IgaXMgZ2VuZXJhdGVkIGlmIDxuYW1lPiBpcyBub3Qgb25lIG9m
IHRoZQotICAgIHZhbHVlcyBkZXNjcmliZWQgYWJvdmUuCi0KLUFkZCBhIHNlY3Rpb24gIjMuNCBE
aXNwbGF5IEF0dHJpYnV0ZXMiIGFmdGVyICIzLjMgRUdMIFZlcnNpb25pbmciCi0KLSAgICBUbyBx
dWVyeSBhdHRyaWJ1dGVzIG9mIGFuIGluaXRpYWxpemVkIGRpc3BsYXksIHVzZToKLQotICAgICAg
ICBFR0xCb29sZWFuIGVnbFF1ZXJ5RGlzcGxheUF0dHJpYkVYVChFR0xEaXNwbGF5IGRweSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IG5hbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTEF0dHJpYiAqdmFs
dWUpOwotCi0gICAgT24gc3VjY2VzcywgRUdMX1RSVUUgaXMgcmV0dXJuZWQuICBJZiA8bmFtZT4g
aXMgRUdMX0RFVklDRV9FWFQsCi0gICAgdGhlIEVHTERldmljZUVYVCBhc3NvY2lhdGVkIHdpdGgg
PGRweT4gaXMgcmV0dXJuZWQgaW4gPHZhbHVlPi4KLSAgICBBbGwgZGlzcGxheXMgaGF2ZSBhbiBh
c3NvY2lhdGVkIEVHTERldmljZUVYVCwgcmVnYXJkbGVzcyBvZiBob3cKLSAgICB0aGV5IHdlcmUg
Y3JlYXRlZC4gIEEgc3VjY2Vzc2Z1bCBxdWVyeSBvZiBFR0xfREVWSUNFX0VYVCB3aWxsCi0gICAg
bmV2ZXIgcmV0dXJuIEVHTF9OT19ERVZJQ0VfRVhULgotCi0gICAgT24gZmFpbHVyZSwgRUdMX0ZB
TFNFIGlzIHJldHVybmVkLiAgQW4gRUdMX05PVF9JTklUSUFMSVpFRCBlcnJvcgotICAgIGlzIGdl
bmVyYXRlZCBpZiBFR0wgaXMgbm90IGluaXRpYWxpemVkIGZvciA8ZHB5Pi4gIEFuCi0gICAgRUdM
X0JBRF9BVFRSSUJVVEUgZXJyb3IgaXMgZ2VuZXJhdGVkIGlmIDxuYW1lPiBpcyBub3QgYSB2YWxp
ZAotICAgIHZhbHVlLgotCi0gICAgQmVjYXVzZSB0aGUgRUdMRGV2aWNlRVhUIGlzIGEgcHJvcGVy
dHkgb2YgPGRweT4sIGFueSB1c2Ugb2YgYW4KLSAgICBhc3NvY2lhdGVkIEVHTERldmljZUVYVCBh
ZnRlciA8ZHB5PiBoYXMgYmVlbiB0ZXJtaW5hdGVkIGdpdmVzCi0gICAgdW5kZWZpbmVkIHJlc3Vs
dHMuIFF1ZXJ5aW5nIGFuIEVHTF9ERVZJQ0VfRVhUIGZyb20gPGRweT4gYWZ0ZXIgYQotICAgIGNh
bGwgdG8gZWdsVGVybWluYXRlKCkgKGFuZCBzdWJzZXF1ZW50IHJlLWluaXRpYWxpemF0aW9uKSBt
YXkKLSAgICByZXR1cm4gYSBkaWZmZXJlbnQgdmFsdWUuCi0KLUlzc3VlcwotCi0gICAgTm9uZS4K
LQotUmV2aXNpb24gSGlzdG9yeToKLQotICAgICMxICAoTWFyIDI1cmQsIDIwMTUpIEphbWllIE1h
ZGlsbAotICAgICAgICAtIEluaXRpYWwgRHJhZnQgYmFzZWQgb24gRUdMX0VYVF9kZXZpY2VfYmFz
ZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FWFRfYmxlbmRfbWlu
bWF4LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25z
L0VYVF9ibGVuZF9taW5tYXgudHh0CShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9leHRlbnNpb25zL0VYVF9ibGVuZF9taW5tYXgudHh0CShub25leGlzdGVudCkK
QEAgLTEsMTY0ICswLDAgQEAKLU5hbWUKLQotICAgIEVYVF9ibGVuZF9taW5tYXgKLQotTmFtZSBT
dHJpbmdzCi0KLSAgICBHTF9FWFRfYmxlbmRfbWlubWF4Ci0KLVZlcnNpb24KLQotICAgIExhc3Qg
TW9kaWZpZWQgRGF0ZTogU2VwdGVtYmVyIDE3LCAyMDA5Ci0gICAgVmVyc2lvbjogICAgICAgICAg
ICAxLjUKLQotTnVtYmVyCi0KLSAgICBPcGVuR0wgRXh0ZW5zaW9uICMzNwotICAgIE9wZW5HTCBF
UyBFeHRlbnNpb24gIzY1Ci0KLURlcGVuZGVuY2llcwotCi0gICAgVGhlcmUgaXMgYW4gaW50ZXJh
Y3Rpb24gd2l0aCBPcGVuR0wgRVMuCi0KLU92ZXJ2aWV3Ci0KLSAgICBCbGVuZGluZyBjYXBhYmls
aXR5IGlzIGV4dGVuZGVkIGJ5IHJlc3BlY2lmeWluZyB0aGUgZW50aXJlIGJsZW5kCi0gICAgZXF1
YXRpb24uICBXaGlsZSB0aGlzIGRvY3VtZW50IGRlZmluZXMgb25seSB0d28gbmV3IGVxdWF0aW9u
cywgdGhlCi0gICAgQmxlbmRFcXVhdGlvbkVYVCBwcm9jZWR1cmUgdGhhdCBpdCBkZWZpbmVzIHdp
bGwgYmUgdXNlZCBieSBzdWJzZXF1ZW50Ci0gICAgZXh0ZW5zaW9ucyB0byBkZWZpbmUgYWRkaXRp
b25hbCBibGVuZGluZyBlcXVhdGlvbnMuCi0KLSAgICBUaGUgdHdvIG5ldyBlcXVhdGlvbnMgZGVm
aW5lZCBieSB0aGlzIGV4dGVuc2lvbiBwcm9kdWNlIHRoZSBtaW5pbXVtCi0gICAgKG9yIG1heGlt
dW0pIGNvbG9yIGNvbXBvbmVudHMgb2YgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gY29sb3Jz
LgotICAgIFRha2luZyB0aGUgbWF4aW11bSBpcyB1c2VmdWwgZm9yIGFwcGxpY2F0aW9ucyBzdWNo
IGFzIG1heGltdW0gcHJvamVjdGlvbgotICAgIGluIG1lZGljYWwgaW1hZ2luZy4KLQotSXNzdWVz
Ci0KLSAgICAqICAgSSd2ZSBwcmVmaXhlZCB0aGUgQUREIHRva2VuIHdpdGggRlVOQywgdG8gaW5k
aWNhdGUgdGhhdCB0aGUgYmxlbmQKLSAgICAgICAgZXF1YXRpb24gaW5jbHVkZXMgdGhlIHBhcmFt
ZXRlcnMgc3BlY2lmaWVkIGJ5IEJsZW5kRnVuYy4gIChUaGUgbWluCi0gICAgICAgIGFuZCBtYXgg
ZXF1YXRpb25zIGRvbid0LikgIElzIHRoaXMgbmVjZXNzYXJ5PyAgSXMgaXQgdG9vIHVnbHk/Ci0g
ICAgICAgIElzIHRoZXJlIGEgYmV0dGVyIHdheSB0byBhY2NvbXBsaXNoIHRoZSBzYW1lIHRoaW5n
PwotICAgIAotTmV3IFByb2NlZHVyZXMgYW5kIEZ1bmN0aW9ucwotCi0gICAgdm9pZCBCbGVuZEVx
dWF0aW9uRVhUKGVudW0gbW9kZSk7Ci0KLU5ldyBUb2tlbnMKLQotICAgIEFjY2VwdGVkIGJ5IHRo
ZSA8bW9kZT4gcGFyYW1ldGVyIG9mIEJsZW5kRXF1YXRpb25FWFQ6Ci0KLSAgICAgICAgRlVOQ19B
RERfRVhUICAgICAgICAgICAgICAgICAgICAgMHg4MDA2Ci0gICAgICAgIE1JTl9FWFQgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4ODAwNwotICAgICAgICBNQVhfRVhUICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDgwMDgKLQotICAgIEFjY2VwdGVkIGJ5IHRoZSA8cG5hbWU+IHBhcmFtZXRl
ciBvZiBHZXRCb29sZWFudiwgR2V0SW50ZWdlcnYsCi0gICAgR2V0RmxvYXR2LCBhbmQgR2V0RG91
YmxldjoKLQotICAgICAgICBCTEVORF9FUVVBVElPTl9FWFQgICAgICAgICAgICAgICAweDgwMDkK
LQotQWRkaXRpb25zIHRvIENoYXB0ZXIgMiBvZiB0aGUgR0wgU3BlY2lmaWNhdGlvbiAoT3BlbkdM
IE9wZXJhdGlvbikKLQotICAgIE5vbmUKLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgMyBvZiB0aGUg
R0wgU3BlY2lmaWNhdGlvbiAoUmFzdGVyaXphdGlvbikKLQotICAgIE5vbmUKLQotQWRkaXRpb25z
IHRvIENoYXB0ZXIgNCBvZiB0aGUgR0wgU3BlY2lmaWNhdGlvbiAoUGVyLUZyYWdtZW50IE9wZXJh
dGlvbnMKLWFuZCB0aGUgRnJhbWVidWZmZXIpCi0KLSAgICBUaGUgR0wgU3BlY2lmaWNhdGlvbiBk
ZWZpbmVzIGEgc2luZ2xlIGJsZW5kaW5nIGVxdWF0aW9uLiAgVGhpcwotICAgIGV4dGVuc2lvbiBp
bnRyb2R1Y2VzIGEgYmxlbmQgZXF1YXRpb24gbW9kZSB0aGF0IGlzIHNwZWNpZmllZCBieSBjYWxs
aW5nCi0gICAgQmxlbmRFcXVhdGlvbkVYVCB3aXRoIG9uZSBvZiB0aHJlZSBlbnVtZXJhdGVkIHZh
bHVlcy4gIFRoZSBkZWZhdWx0Ci0gICAgdmFsdWUgRlVOQ19BRERfRVhUIHNwZWNpZmllcyB0aGF0
IHRoZSBibGVuZGluZyBlcXVhdGlvbiBkZWZpbmVkIGluCi0gICAgdGhlIEdMIFNwZWNpZmljYXRp
b24gYmUgdXNlZC4gIFRoaXMgZXF1YXRpb24gaXMKLQotICAgICAgICBDJyA9IChDcyAqIFMpICsg
KENkICogRCkKLQotICAgICAgICAgICAgIC8gIDEuMCAgICAgQycgPiAxLjAKLSAgICAgICAgQyA9
ICgKLSAgICAgICAgICAgICBcICAgQycgICAgIEMnIDw9IDEuMAotCi0gICAgd2hlcmUgQ3MgYW5k
IENkIGFyZSB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBjb2xvcnMsIGFuZCBTIGFuZCBEIGFy
ZQotICAgIGFzIHNwZWNpZmllZCBieSBCbGVuZEZ1bmMuCi0KLSAgICBJZiBCbGVuZEVxdWF0aW9u
RVhUIGlzIGNhbGxlZCB3aXRoIDxtb2RlPiBzZXQgdG8gTUlOX0VYVCwgdGhlCi0gICAgYmxlbmRp
bmcgZXF1YXRpb24gYmVjb21lcwotCi0gICAgICAgIEMgPSBtaW4gKENzLCBDZCkKLQotICAgIEZp
bmFsbHksIGlmIEJsZW5kRXF1YXRpb25FWFQgaXMgY2FsbGVkIHdpdGggPG1vZGU+IHNldCB0byBN
QVhfRVhULCB0aGUKLSAgICBibGVuZGluZyBlcXVhdGlvbiBiZWNvbWVzCi0KLSAgICAgICAgQyA9
IG1heCAoQ3MsIENkKQotCi0gICAgSW4gYWxsIGNhc2VzIHRoZSBibGVuZGluZyBlcXVhdGlvbiBp
cyBldmFsdWF0ZWQgc2VwYXJhdGVseSBmb3IgZWFjaAotICAgIGNvbG9yIGNvbXBvbmVudC4KLQot
QWRkaXRpb25zIHRvIENoYXB0ZXIgNSBvZiB0aGUgR0wgU3BlY2lmaWNhdGlvbiAoU3BlY2lhbCBG
dW5jdGlvbnMpCi0KLSAgICBOb25lCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDYgb2YgdGhlIEdM
IFNwZWNpZmljYXRpb24gKFN0YXRlIGFuZCBTdGF0ZSBSZXF1ZXN0cykKLQotICAgIE5vbmUKLQot
QWRkaXRpb25zIHRvIHRoZSBHTFggU3BlY2lmaWNhdGlvbgotCi0gICAgTm9uZQotCi1HTFggUHJv
dG9jb2wKLQotICAgIEEgbmV3IEdMIHJlbmRlcmluZyBjb21tYW5kIGlzIGFkZGVkLiBUaGUgZm9s
bG93aW5nIGNvbW1hbmQgaXMgc2VudCB0byB0aGUgCi0gICAgc2VydmVyIGFzIHBhcnQgb2YgYSBn
bFhSZW5kZXIgcmVxdWVzdDoKLQotICAgICAgICBCbGVuZEVxdWF0aW9uRVhUCi0gICAgICAgICAg
ICAyICAgICAgICAgICA4ICAgICAgICAgICAgICAgcmVuZGVyaW5nIGNvbW1hbmQgbGVuZ3RoCi0g
ICAgICAgICAgICAyICAgICAgICAgICA0MDk3ICAgICAgICAgICAgcmVuZGVyaW5nIGNvbW1hbmQg
b3Bjb2RlCi0gICAgICAgICAgICA0ICAgICAgICAgICBFTlVNICAgICAgICAgICAgbW9kZQotCi1E
ZXBlbmRlbmNpZXMgb24gT3BlbkdMIEVTCi0KLSAgICBJZiB0aGUgR0wgaXMgT3BlbkdMIEVTLCBv
bmx5IHRoZSBuZXcgTUlOX0VYVCBhbmQgTUFYX0VYVCBibGVuZCBlcXVhdGlvbnMKLSAgICBhcmUg
aW50cm9kdWNlZCBieSB0aGlzIGV4dGVuc2lvbi4gIEJsZW5kRXF1YXRpb25PRVMsIEZVTkNfQURE
X09FUywgYW5kCi0gICAgQkxFTkRfRVFVQVRJT05fT0VTIGFyZSBpbnRyb2R1Y2VkIGJ5IHRoZSBP
RVNfYmxlbmRfc3VidHJhY3QgZXh0ZW5zaW9uLAotICAgIHdoaWNoIGlzIHJlcXVpcmVkIGZvciB0
aGlzIGV4dGVuc2lvbiB0byBvcGVyYXRlLiAgQWx0ZXJuYXRpdmVseSwKLSAgICBPcGVuR0wgRVMg
Mi4wIGlzIHJlcXVpcmVkLCB3aGljaCBpbnRyb2R1Y2VzIEJsZW5kRXF1YXRpb24sIEZVTkNfQURE
LCBhbmQKLSAgICBCTEVORF9FUVVBVElPTiB3aXRob3V0IHRoZSBzdWZmaXhlcy4KLQotICAgIE1J
Tl9FWFQgYW5kIE1BWF9FWFQgc2hvdWxkIGJlIGFkZGVkIHRvIFRhYmxlIDQuYmxlbmRlcSBkZXNj
cmliZWQgaW4gdGhlCi0gICAgT0VTX2JsZW5kX3N1YnRyYWN0IGV4dGVuc2lvbiBzcGVjaWZpY2F0
aW9uLCBhbmQgVGFibGUgNC4xIG9mIHRoZSBPcGVuR0wKLSAgICBFUyAyLjAgc3BlY2lmaWNhdGlv
bi4KLQotICAgIE1lbnRpb25zIG9mIEdldERvdWJsZXYsIEJlZ2luL0VuZCwgYW5kIEdMWCBpbiB0
aGlzIGV4dGVuc2lvbiBzcGVjaWZpY2F0aW9uCi0gICAgY2FuIGJlIGlnbm9yZWQgZm9yIE9wZW5H
TCBFUy4gIEFsc28sIEJsZW5kRXF1YXRpb25FWFQgYW5kIEZVTkNfQUREX0VYVAotICAgIGluc3Rl
YWQgaGF2ZSB0aGUgT0VTIHN1ZmZpeCBjb3VydGVzeSBvZiBPRVNfYmxlbmRfc3VidHJhY3QsIG9y
IG5vIHN1ZmZpeAotICAgIGNvdXJ0ZXN5IG9mIGNvcmUgT3BlbkdMIEVTIDIuMC4KLQotRXJyb3Jz
Ci0KLSAgICBJTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGJ5IEJsZW5kRXF1YXRpb25FWFQgaWYg
aXRzIHNpbmdsZSBwYXJhbWV0ZXIKLSAgICBpcyBub3QgRlVOQ19BRERfRVhULCBNSU5fRVhULCBv
ciBNQVhfRVhULgotCi0gICAgSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIEJsZW5k
RXF1YXRpb25FWFQgaXMgZXhlY3V0ZWQgYmV0d2VlbgotICAgIHRoZSBleGVjdXRpb24gb2YgQmVn
aW4gYW5kIHRoZSBjb3JyZXNwb25kaW5nIGV4ZWN1dGlvbiB0byBFbmQuCi0KLU5ldyBTdGF0ZQot
Ci0gICAgR2V0IFZhbHVlICAgICAgICAgICBHZXQgQ29tbWFuZCAgICAgVHlwZSAgICBJbml0aWFs
IFZhbHVlICAgQXR0cmlidXRlCi0gICAgLS0tLS0tLS0tICAgICAgICAgICAtLS0tLS0tLS0tLSAg
ICAgLS0tLSAgICAtLS0tLS0tLS0tLS0tICAgLS0tLS0tLS0tCi0gICAgQkxFTkRfRVFVQVRJT05f
RVhUICBHZXRJbnRlZ2VydiAgICAgWjMgICAgICBGVU5DX0FERF9FWFQgICAgY29sb3ItYnVmZmVy
Ci0KLU5ldyBJbXBsZW1lbnRhdGlvbiBEZXBlbmRlbnQgU3RhdGUKLQotICAgIE5vbmUKLQotUmV2
aXNpb24gSGlzdG9yeQotCi0gICAgVmVyc2lvbiAxLjUsIFNlcHRlbWJlciAxNywgMjAwOSAoSm9u
IExlZWNoKSAtCi0gICAgICAgIE1lcmdlIGludG8gT3BlbkdMIFJlZ2lzdHJ5IHZlcnNpb24gb2Yg
dGhlIGV4dGVuc2lvbiBhbmQgYXNzaWduCi0gICAgICAgIE9wZW5HTCBFUyBleHRlbnNpb24gbnVt
YmVyLgotICAgIFZlcnNpb24gMS40LCBNYXkgMTksIDIwMDkgKEJlbmogTGlwY2hhaykgLQotICAg
ICAgICBBZGFwdGVkIGZvciBPcGVuR0wgRVMuCi0gICAgVmVyc2lvbiAxLjMsIE1heSAzMSwgMTk5
NSAtCi0gICAgICAgIExhc3QgU0dJIHJldmlzaW9uLgpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvZXh0ZW5zaW9ucy9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0LnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VYVF9jb2xvcl9idWZmZXJfZmxv
YXQudHh0CShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRl
bnNpb25zL0VYVF9jb2xvcl9idWZmZXJfZmxvYXQudHh0CShub25leGlzdGVudCkKQEAgLTEsMjMw
ICswLDAgQEAKLU5hbWUKLQotICAgIEVYVF9jb2xvcl9idWZmZXJfZmxvYXQKLQotTmFtZSBTdHJp
bmdzCi0KLSAgICBHTF9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0Ci0KLUNvbnRyaWJ1dG9ycwotCi0g
ICAgT3BlbkdMIEVTIFdvcmtpbmcgR3JvdXAgbWVtYmVycwotCi1Db250YWN0Ci0KLSAgICBNYXJr
IENhbGxvdywgSEkgQ29ycC4gKGNhbGxvdy5tYXJrICdhdCcgYXJ0c3BhcmsuY28uanApCi0KLU5v
dGljZQotCi0gICAgwqkyMDEyIFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KLQotU3RhdHVzCi0KLSAg
ICBDb21wbGV0ZQotCi1JUCBTdGF0dXMKLQotICAgIEdyYXBoaWNzIFByb3BlcnRpZXMgSG9sZGlu
Z3MgKEdQSCwgZm9ybWVybHkgU0dJKSBvd25zIFVTIFBhdGVudAotICAgICM2LDY1MCwzMjcsIGlz
c3VlZCBOb3ZlbWJlciAxOCwgMjAwMy4gR1BIIGJlbGlldmVzIHRoaXMgcGF0ZW50Ci0gICAgY29u
dGFpbnMgbmVjZXNzYXJ5IElQIGZvciBncmFwaGljcyBzeXN0ZW1zIGltcGxlbWVudGluZyBmbG9h
dGluZwotICAgIHBvaW50IChGUCkgcmFzdGVyaXphdGlvbiBhbmQgRlAgZnJhbWVidWZmZXIgY2Fw
YWJpbGl0aWVzLgotCi0gICAgR1BIIHdpbGwgbm90IGdyYW50IEtocm9ub3Mgcm95YWx0eS1mcmVl
IHVzZSBvZiB0aGlzIElQIGZvciB1c2UKLSAgICBpbiBPcGVuR0wgRVMsIGJ1dCB3aWxsIGRpc2N1
c3MgbGljZW5zaW5nIG9uIFJBTkQgdGVybXMsIG9uIGFuCi0gICAgaW5kaXZpZHVhbCBiYXNpcyB3
aXRoIGNvbXBhbmllcyB3aXNoaW5nIHRvIHVzZSB0aGlzIElQIGluIHRoZQotICAgIGNvbnRleHQg
b2YgY29uZm9ybWFudCBPcGVuR0wgRVMgaW1wbGVtZW50YXRpb25zLiBHUEggZG9lcyBub3QKLSAg
ICBwbGFuIHRvIG1ha2UgYW55IHNwZWNpYWwgZXhlbXB0aW9uIGZvciBvcGVuIHNvdXJjZQotICAg
IGltcGxlbWVudGF0aW9ucy4KLQotICAgIFNlZQotICAgIGh0dHBzOi8vd3d3Lmtocm9ub3Mub3Jn
L2ZpbGVzL2lwLWRpc2Nsb3N1cmVzL29wZW5nbC9TR0klMjBJUCUyMERpc2Nsb3N1cmUlMjBNYXIw
NV9jbGVhbi5wZGYKLSAgICBmb3IgdGhlIGZ1bGwgZGlzY2xvc3VyZS4KLQotVmVyc2lvbgotCi0g
ICAgRGF0ZTogSmFudWFyeSAxMXRoLCAyMDEzCi0gICAgUmV2aXNpb246IDUKLQotTnVtYmVyCi0K
LSAgICBPcGVuR0wgRVMgRXh0ZW5zaW9uICMxMzcKLQotRGVwZW5kZW5jaWVzCi0KLSAgICBSZXF1
aXJlcyBPcGVuR0wgRVMgMy4wLgotCi0gICAgV3JpdHRlbiBiYXNlZCBvbiB0aGUgd29yZGluZyBv
ZiB0aGUgT3BlbkdMIEVTIDMuMC4xIFNwZWNpZmljYXRpb24KLSAgICAoSmFudWFyeSAxMHRoLCAy
MDEzKS4KLQotT3ZlcnZpZXcKLQotICAgIFRoaXMgZXh0ZW5zaW9uIGFsbG93cyBhIHZhcmlldHkg
b2YgZmxvYXRpbmcgcG9pbnQgZm9ybWF0cyB0byBiZQotICAgIHJlbmRlcmVkIHRvIHZpYSBmcmFt
ZWJ1ZmZlciBvYmplY3RzLgotCi1OZXcgUHJvY2VkdXJlcyBhbmQgRnVuY3Rpb25zCi0KLSAgICBO
b25lCi0KLU5ldyBUb2tlbnMKLQotICAgIE5vbmUKLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgMyBv
ZiB0aGUgT3BlbkdMIEVTIDMuMCBTcGVjaWZpY2F0aW9uCi0oUmFzdGVyaXphdGlvbikKLQotICAg
IDMuOC4zIFRleHR1cmUgSW1hZ2UgU3BlY2lmaWNhdGlvbiwgdW5udW1iZXJlZCBzdWJzZWN0aW9u
ICJSZXF1aXJlZAotICAgIFRleHR1cmUgRm9ybWF0cyIsIHAuIDEyNgotCi0gICAgQ2hhbmdlIHRo
ZSBmaXJzdCB0d28gYnVsbGV0IGl0ZW1zIHRvIHRoZSBmb2xsb3dpbmc6Ci0KLSAgICAtIFRleHR1
cmUgYW5kIHJlbmRlcmJ1ZmZlciBjb2xvciBmb3JtYXRzIChzZWUgc2VjdGlvbiA0LjQuMikuCi0g
ICAgICAtIFJHQkEzMkYsIFJHQkEzMkksIFJHQkEzMlVJLCBSR0JBMTZGLCBSR0JBMTZJLCBSR0JB
MTZVSSwKLSAgICAgICAgUkdCQTgsIFJHQkE4SSwgUkdCQThVSSwgU1JHQjhfQUxQSEE4LCBSR0Ix
MF9BMiwgUkdCMTBfLQotICAgICAgICBBMlVJLCBSR0JBNCwgYW5kIFJHQjVfQTEuCi0gICAgICAt
IFJHQjggYW5kIFJHQjU2NS4KLSAgICAgIC0gUjExRiBHMTFGIEIxMEYuCi0gICAgICAtIFJHMzJG
LCBSRzMySSwgUkczMlVJLCBSRzE2RiwgUkcxNkksIFJHMTZVSSwgUkc4LCBSRzhJLCBhbmQKLSAg
ICAgICAgUkc4VUkuCi0gICAgICAtIFIzMkYsIFIzMkksIFIzMlVJLCBSMTZGLCBSMTZJLCBSMTZV
SSwgUjgsIFI4SSwgYW5kIFI4VUkuCi0KLSAgICAtIFRleHR1cmUtb25seSBjb2xvciBmb3JtYXRz
OgotICAgICAgLSBSR0JBOF9TTk9STS4KLSAgICAgIC0gUkdCMzJGLCBSR0IzMkksIGFuZCBSR0Iz
MlVJLgotICAgICAgLSBSR0IxNkYsIFJHQjE2SSwgYW5kIFJHQjE2VUkuCi0gICAgICAtIFJHQjhf
U05PUk0sIFJHQjhJLCBSR0I4VUksIGFuZCBTUkdCOC4KLSAgICAgIC0gUkdCOV9FNS4KLSAgICAg
IC0gUkc4X1NOT1JNLgotICAgICAgLSBSOF9TTk9STS4KLQotICAgIFRhYmxlIDMuMTIsIHAuIDEy
OCAmIDEyOQotCi0gICAgQ29udmVydCB0aGUgZGFzaCB1bmRlciAnQ29sb3ItcmVuZGVyYWJsZScg
dG8gYSAnY2hlY2snIGZvciB0aGUKLSAgICBmb2xsb3dpbmcgaW50ZXJuYWwgZm9ybWF0czogUjE2
RiwgUkcxNkYsIFJHQkExNkYsIFIzMkYsIFJHMzJGLAotICAgIFJHQkEzMkYgYW5kIFIxMUZfRzEx
Rl9CMTBGLgotICAgIAotQWRkaXRpb25zIHRvIENoYXB0ZXIgNCBvZiB0aGUgT3BlbkdMIEVTIDMu
MCBTcGVjaWZpY2F0aW9uIChQZXItRnJhZ21lbnQKLU9wZXJhdGlvbnMgYW5kIHRoZSBGcmFtZWJ1
ZmZlcikKLQotICAgIChjaGFuZ2VkIGxpbmVzIG1hcmtlZCB3aXRoICo7IGFkZGVkIGxpbmVzIG1h
cmtlZCB3aXRoICspCi0KLSAgICBDaGFwdGVyIDQgSW50cm9kdWN0aW9uLCBwLiAxNjcKLQotICAg
IFBhcmFncmFwaCA1LCBzZW50ZW5jZSAzLCBwIDE2OCwgaW5zZXJ0ICJmbG9hdGluZyBwb2ludCIg
YXMgc2hvd246Ci0gICAgICAgICJSLCBHLCBCLCBhbmQgQSBjb21wb25lbnRzIG1heSBiZSByZXBy
ZXNlbnRlZCBhcyB1bnNpZ25lZAotICogICAgICBub3JtYWxpemVkIGZpeGVkLXBvaW50LCBmbG9h
dGluZyBwb2ludCBvciBzaWduZWQgb3IgdW5zaWduZWQKLSAgICAgICAgaW50ZWdlciB2YWx1ZXM7
IC4uLiIgICAgXl5eXl5eXl5eXl5eXl4KLQotICAgIDQuMS43IEJsZW5kaW5nLCBwLiAxNzQKLQot
ICAgIE1vZGlmeSBwYXJhZ3JhcGhzIDMgJiA0OgotICAgIAotICogICAgICAiSWYgdGhlIGNvbG9y
IGJ1ZmZlciBpcyBmaXhlZC1wb2ludCwgdGhlIGNvbXBvbmVudHMgb2YgdGhlCi0gICAgc291cmNl
IGFuZCBkZXN0aW5hdGlvbiB2YWx1ZXMgYW5kIGJsZW5kIGZhY3RvcnMgYXJlIGNsYW1wZWQKLSAq
ICB0byBbMDsgMV0gcHJpb3IgdG8gZXZhbHVhdGluZyB0aGUgYmxlbmQgZXF1YXRpb24uIElmIHRo
ZSBjb2xvcgotICsgIGJ1ZmZlciBpcyBmbG9hdGluZy1wb2ludCwgbm8gY2xhbXBpbmcgb2NjdXJz
LiBUaGUgcmVzdWx0aW5nIGZvdXIKLSArICB2YWx1ZXMgYXJlIHNlbnQgdG8gdGhlIG5leHQgb3Bl
cmF0aW9uLgotICAgIAotICAgICAgICBCbGVuZGluZyBhcHBsaWVzIG9ubHkgaWYgdGhlIGNvbG9y
IGJ1ZmZlciBoYXMgYSBmaXhlZC1wb2ludCBvcgotICogIG9yIGZsb2F0aW5nLXBvaW50IGZvcm1h
dC4gSWYgdGhlIGNvbG9yIGJ1ZmZlciBoYXMgYW4gaW50ZWdlcgotICogIGZvcm1hdCwgcHJvY2Vl
ZCB0byB0aGUgbmV4dCBvcGVyYXRpb24uICBGdXJ0aGVybW9yZSwgYW4KLSArICBJTlZBTElEX09Q
RVJBVElPTiBlcnJvciBpcyBnZW5lcmF0ZWQgYnkgRHJhd0FycmF5cyBhbmQgdGhlIG90aGVyCi0g
KyAgZHJhd2luZyBjb21tYW5kcyBkZWZpbmVkIGluIHNlY3Rpb24gMi44LjMgaWYgYmxlbmRpbmcg
aXMgZW5hYmxlZAotICsgIChzZWUgYmVsb3cpIGFuZCBhbnkgZHJhdyBidWZmZXIgaGFzIGEgMzIt
Yml0IGZsb2F0aW5nLXBvaW50Ci0gKyAgZm9ybWF0LiIKLQotICAgIDQuMi4zIENsZWFyaW5nIHRo
ZSBCdWZmZXJzLCBwLiAxODMKLQotICAgIE1vZGlmeSBzZWNvbmQgcGFyYWdyYXBoLCBpbnNlcnRp
bmcgImZsb2F0aW5nIHBvaW50IjoKLQotICAgICIgICB2b2lkIENsZWFyQ29sb3IoZmxvYXQgciwg
ZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSk7Ci0KLSAqICBzZXRzIHRoZSBjbGVhciB2YWx1ZSBm
b3IgZml4ZWQtIGFuZCBmbG9hdGluZy1wb2ludCBjb2xvciBidWZmZXJzLgotICAgIC4uLiIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eCi0KLSAgICA0LjMuMSBS
ZWFkaW5nIFBpeGVscywgcC4gMTg2Ci0KLSAgICBJbiBwYXJhZ3JhcGggNCwgYmVnaW5uaW5nICJP
bmx5IHR3byBjb21iaW5hdGlvbnMgb2YgZm9ybWF0Ci0gICAgYW5kIHR5cGUgYXJlIGFjY2VwdGVk
IC4uLiIsIGFmdGVyIHRoZSBzZW50ZW5jZSBlbmRpbmcgIi4uLiB0eXBlCi0gICAgVU5TSUdORURf
QllURSBpcyBhY2NlcHRlZC4iIGluc2VydCB0aGUgZm9sbG93aW5nIHNlbnRlbmNlOgotICAgICAg
ICAiRm9yIGZsb2F0aW5nLXBvaW50IHJlbmRlcmluZyBzdXJmYWNlcywgdGhlIGNvbWJpbmF0aW9u
Ci0gICAgICAgIGZvcm1hdCBSR0JBIGFuZCB0eXBlIEZMT0FUIGlzIGFjY2VwdGVkLiIKLQotICAg
IDQuMy4xIHVubnVtYmVyZWQgc3Vic2VjdGlvbiAiT2J0YWluaW5nIFBpeGVscyBmcm9tIHRoZSBG
cmFtZWJ1ZmZlciIsCi0gICAgcC4gMTg4Ci0KLSAgICBNb2RpZnkgcGVudWx0aW1hdGUgcGFyYWdy
YXBoLCBwMTg5LCAiSWYgZm9ybWF0IGlzIGFuIGludGVnZXIgLi4uIgotCi0gICAgIklmIGZvcm1h
dCBpcyBhbiBpbnRlZ2VyIGZvcm1hdCBhbmQgdGhlIGNvbG9yIGJ1ZmZlciBpcyBub3QgYW4KLSAg
ICBpbnRlZ2VyIGZvcm1hdDsgaWYgdGhlIGNvbG9yIGJ1ZmZlciBpcyBhbiBpbnRlZ2VyIGZvcm1h
dCBhbmQKLSAqICBmb3JtYXQgaXMgbm90IGFuIGludGVnZXIgZm9ybWF0OyBpZiBmb3JtYXQgaXMg
YW4gaW50ZWdlciBmb3JtYXQKLSAqICBhbmQgdHlwZSBpcyBGTE9BVCwgSEFMRl9GTE9BVCwgb3Ig
VU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFVjsKLSArICBvciBpZiB0aGUgY29sb3IgYnVmZmVy
IGlzIGEgZmxvYXRpbmctcG9pbnQgZm9ybWF0IGFuZCB0eXBlIGlzCi0gKyAgbm90IEZMT0FULCBI
QUxGIEZMT0FULCBvciBVTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWLCB0aGUgZXJyb3IKLSAg
ICBJTlZBTElEX09QRVJBVElPTiBvY2N1cnMuIgotCi0gICAgNC4zLjEgdW5udW1iZXJlZCBzdWJz
ZWN0aW9uICJDb252ZXJzaW9uIG9mIFJHQkEgdmFsdWVzIiwgcC4xOTAKLQotICAgIFNvbGUgcGFy
YWdyYXBoLCBzZW50ZW5jZSAzLCBpbnNlcnQgIm9yIGZsb2F0aW5nIHBvaW50IiBhcyBzaG93bjoK
LSAqICAgICAgIkZvciBhbiBpbnRlZ2VyIG9yIGZsb2F0aW5nIHBvaW50IGNvbG9yIGJ1ZmZlciwg
dGhlIGVsZW1lbnRzCi0gICAgICAgIGFyZSB1bm1vZGlmaWVkLiJeXl5eXl5eXl5eXl5eXl5eXgot
Ci0gICAgNC4zLjIgQ29weWluZyBQaXhlbHMsIHAxOTIKLQotICAgIE1vZGlmeSBmaXJzdCBlcnJv
ciBjb25kaXRpb24sIGF0IGJvdHRvbSBvZiBwMTkzLCAiVGhlIHJlYWQgYnVmZmVyCi0gICAgY29u
dGFpbnMgLi4uIiB0byBlbmNvbXBhc3MgZmxvYXRpbmctcG9pbnQgYnVmZmVycy4KLQotICogICIt
IFRoZSByZWFkIGJ1ZmZlciBjb250YWlucyBmaXhlZC1wb2ludCBvciBmbG9hdGluZy1wb2ludCB2
YWx1ZXMKLSAqICAgICBhbmQgYW55IGRyYXcgYnVmZmVyIGNvbnRhaW5zIG5laXRoZXIgZml4ZWQt
cG9pbnQgbm9yCi0gKiAgICAgZmxvYXRpbmctcG9pbnQgdmFsdWVzLiIKLQotICAgIDQuNC4yIEF0
dGFjaGluZyBJbWFnZXMgdG8gRnJhbWVidWZmZXIgT2JqZWN0cywgcC4gMTk3LCB1bm51bWJlcmVk
Ci0gICAgc3Vic2VjdGlvbiAiUmVxdWlyZWQgUmVuZGVyYnVmZmVyIEZvcm1hdHMiLCBwLiAyMDAK
LQotICAgIEluIHRoZSBsYXN0IHBhcmFncmFwaCBiZWdpbm5pbmcgIkltcGxlbWVudGF0aW9ucyBt
dXN0IHN1cHBvcnQKLSAgICBjcmVhdGlvbiAuLi4iLCBtb2RpZnkgdGhlIGZpbmFsIHBocmFzZSB0
bwotCi0gKiAgICJ3aXRoIHRoZSBleGNlcHRpb24gb2Ygc2lnbmVkIGFuZCB1bnNpZ25lZCBpbnRl
Z2VyLCBSR0JBMTZGLAotICsgICBSMzJGLCBSRzMyRiBhbmQgUkdCQTMyRiBmb3JtYXRzLgotCi1B
ZGRpdGlvbnMgdG8gQ2hhcHRlciA1IG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmljYXRpb24g
KFNwZWNpYWwgRnVuY3Rpb25zKQotCi0gICAgTm9uZQotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciA2
IG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmljYXRpb24gKFN0YXRlIGFuZCBTdGF0ZQotUmVx
dWVzdHMpCi0KLSAgICA2LjEuMTUgSW50ZXJuYWwgRm9ybWF0IFF1ZXJpZXMsIHAuIDIzNwotCi0g
ICAgUC4gMjM4LCBwYXJhZ3JhcGggOCBhZnRlciAiU2luY2UgbXVsdGlzYW1wbGluZyBpcyBub3Qg
c3VwcG9ydGVkCi0gICAgZm9yIHNpZ25lZCBhbmQgdW5zaWduZWQgaW50ZWdlciBpbnRlcm5hbCBm
b3JtYXRzLCB0aGUgdmFsdWUgb2YKLSAgICBOVU1fU0FNUExFX0NPVU5UUyB3aWxsIGJlIHplcm8g
Zm9yIHN1Y2ggZm9ybWF0cy4iLCBpbnNlcnQgbmV3Ci0gICAgb25lLXNlbnRlbmNlIHBhcmFncmFw
aDoKLQotICAgICAgICAiSWYgPGludGVybmFsZm9ybWF0PiBpcyBSR0JBMTZGLCBSMzJGLCBSRzMy
Riwgb3IgUkdCQTMyRiwgdGhlCi0gICAgICAgIHZhbHVlIG9mIE5VTV9TQU1QTEVfQ09VTlRTIG1h
eSBiZSB6ZXJvLCBvciBlbHNlIHRoZSBtYXhpbXVtCi0gICAgICAgIHZhbHVlIGluIFNBTVBMRVMg
bWF5IGJlIGxlc3MgdGhhbiB0aGUgdmFsdWUgb2YgTUFYX1NBTVBMRVMuIgotCi1OZXcgSW1wbGVt
ZW50YXRpb24gRGVwZW5kZW50IFN0YXRlCi0KLSAgICBOb25lCi0KLUlzc3VlcwotCi1SZXZpc2lv
biBIaXN0b3J5Ci0KLSAgICBSZXYuICBEYXRlICAgICBBdXRob3IgICAgIENoYW5nZXMKLSAgICAt
LS0tICAtLS0tLS0tLSAtLS0tLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0gICAgICAxICAgMTAvMTYvMTIgbWFya2MgICAgICBJbml0aWFsIHZlcnNpb24K
LSAgICAgIDIgICAxMC8xOC8xMiBtYXJrYyAgICAgIFJlZmVyZW5jZWQgcHJlbGltaW5hcnkgdmVy
c2lvbiBvZiBPcGVuR0wKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVTIDMuMC4xIHNw
ZWNpZmljYXRpb24gYW5kIHVwZGF0ZWQgcGFnZQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVtYmVycy4KLSAgICAgIDMgICAxMS8yMS8xMiBtYXJrYyAgICAgIENvcnJlY3RlZCBJUCBz
dGF0dXMuCi0gICAgICA0ICAgMDEvMDkvMTMgbWFya2MgICAgICBDaGFuZ2VkIGRhdGUgb2YgcmVm
ZXJlbmNlZCBPcGVuR0wgRVMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMC4xIHNw
ZWNpZmljYXRpb24uIE1hZGUgbWlub3IgbGFuZ3VhZ2UKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpbXBsaWZpY2F0aW9uLgotICAgICAgNSAgIDAxLzExLzEzIG1hcmtjICAgICAgQ2hh
bmdlZCBkYXRlIHRvIHJlbGVhc2UgdmVyc2lvbiBvZgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgT3BlbkdMIEVTIDMuMC4xIHNwZWNpZmljYXRpb24uCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDbGFyaWZpZWQgY2hhbmdlIHRvICJSZXF1aXJlZAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVuZGVyYnVmZmVyIGZvcm1hdHMiIHNlY3Rpb24uCi0KLSMgdmltOmFp
OnRzPTQ6c3RzPTQ6c3c9NDpleHBhbmR0YWI6dGV4dHdpZHRoPTcwCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VYVF9kcmF3X2J1ZmZlcnMudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRVhUX2RyYXdfYnVmZmVycy50
eHQJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lv
bnMvRVhUX2RyYXdfYnVmZmVycy50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSw1NDIgKzAsMCBAQAot
TmFtZQotCi0gICAgRVhUX2RyYXdfYnVmZmVycwotCi1OYW1lIFN0cmluZ3MKLQotICAgIEdMX0VY
VF9kcmF3X2J1ZmZlcnMKLQotQ29udHJpYnV0b3JzCi0KLSAgICBDb250cmlidXRvcnMgdG8gR0xf
TlZfZHJhd19idWZmZXJzCi0gICAgQ29udHJpYnV0b3JzIHRvIEdMX05WX2Zib19jb2xvcl9hdHRh
Y2htZW50cwotICAgIENvbnRyaWJ1dG9ycyB0byB0aGUgT3BlbkdMIEVTIDIuMCBzcGVjaWZpY2F0
aW9uCi0gICAgQ29udHJpYnV0b3JzIHRvIHRoZSBPcGVuR0xTTCBFUyAxLjAuMTcgc3BlY2lmaWNh
dGlvbgotICAgIENvbnRyaWJ1dG9ycyB0byB0aGUgT3BlbkdMIEVTIDMuMCBzcGVjaWZpY2F0aW9u
Ci0gICAgTmljb2xhcyBDYXBlbnMsIFRyYW5zR2FtaW5nIEluYy4KLSAgICBEYW5pZWwgS29jaCwg
VHJhbnNHYW1pbmcgSW5jLgotICAgIEFsYXN0YWlyIFBhdHJpY2ssIEdvb2dsZSBJbmMuCi0gICAg
S2VubmV0aCBSdXNzZWxsLCBHb29nbGUgSW5jLgotICAgIEdyZWcgUm90aCwgTlZJRElBIENvcnBv
cmF0aW9uCi0gICAgQmVuIEJvd21hbiwgSW1hZ2luYXRpb24gVGVjaG5vbG9naWVzCi0gICAgTWVt
YmVycyBvZiB0aGUgV2ViR0wgYW5kIE9wZW5HTCBFUyB3b3JraW5nIGdyb3VwcwotCi1Db250YWN0
Ci0KLSAgICBEYW5pZWwgS29jaCAoZGFuaWVsICdhdCcgdHJhbnNnYW1pbmcuY29tKQotCi1TdGF0
dXMKLQotICAgIERyYWZ0IENvbXBsZXRlIAotCi1WZXJzaW9uCi0KLSAgICBMYXN0IE1vZGlmaWVk
IERhdGU6IEphbnVhcnkgMzAsIDIwMTMKLSAgICBSZXZpc2lvbjogIzcKLQotTnVtYmVyCi0KLSAg
ICBUQkQKLQotRGVwZW5kZW5jaWVzCi0KLSAgICBPcGVuR0wgRVMgMi4wIGlzIHJlcXVpcmVkLgot
Ci0gICAgVGhlIGV4dGVuc2lvbiBpcyB3cml0dGVuIGFnYWluc3QgdGhlIE9wZW5HTCBFUyAyLjAg
c3BlY2lmaWNhdGlvbi4KLQotICAgIEFOR0xFX2ZyYW1lYnVmZmVyX2JsaXQgYWZmZWN0cyB0aGUg
ZGVmaW5pdGlvbiBvZiB0aGlzIGV4dGVuc2lvbi4KLSAgICBBUFBMRV9mcmFtZWJ1ZmZlcl9tdWx0
aXNhbXBsZSBhZmZlY3RzIHRoZSBkZWZpbml0aW4gb2YgdGhpcyBleHRlbnNpb24uCi0KLU92ZXJ2
aWV3Ci0KLSAgICBUaGlzIGV4dGVuc2lvbiBpbmNyZWFzZXMgdGhlIG51bWJlciBvZiBhdmFpbGFi
bGUgZnJhbWVidWZmZXIgb2JqZWN0Ci0gICAgY29sb3IgYXR0YWNobWVudCBwb2ludHMsIGV4dGVu
ZHMgT3BlbkdMIEVTIDIuMCB0byBhbGxvdyBtdWx0aXBsZSBvdXRwdXQKLSAgICBjb2xvcnMsIGFu
ZCBwcm92aWRlcyBhIG1lY2hhbmlzbSBmb3IgZGlyZWN0aW5nIHRob3NlIG91dHB1dHMgdG8KLSAg
ICBtdWx0aXBsZSBjb2xvciBidWZmZXJzLgotCi0gICAgVGhpcyBleHRlbnNpb24gaXMgc2ltaWxh
ciB0byB0aGUgY29tYmluYXRpb24gb2YgdGhlIEdMX05WX2RyYXdfYnVmZmVycwotICAgIGFuZCBH
TF9OVl9mYm9fY29sb3JfYXR0YWNobWVudHMgZXh0ZW5zaW9ucywgYnV0IGltcG9zZXMgY2VydGFp
bgotICAgIHJlc3RyaWN0aW9ucyBpbmZvcm1lZCBieSB0aGUgT3BlbkdMIEVTIDMuMCBBUEkuCi0K
LU5ldyBQcm9jZWR1cmVzIGFuZCBGdW5jdGlvbnMKLQotICAgICAgdm9pZCBEcmF3QnVmZmVyc0VY
VChzaXplaSBuLCBjb25zdCBlbnVtICpidWZzKTsKLQotTmV3IFRva2VucwotCi0gICAgQWNjZXB0
ZWQgYnkgdGhlIDxwbmFtZT4gcGFyYW1ldGVyIG9mIEdldEludGVnZXJ2OgotCi0gICAgICAgIE1B
WF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQgICAgICAgICAgICAgMHg4Q0RGCi0KLSAgICBBY2NlcHRl
ZCBieSB0aGUgPHBuYW1lPiBwYXJhbWV0ZXJzIG9mIEdldEludGVnZXJ2IGFuZCBHZXRGbG9hdHY6
Ci0KLSAgICAgICAgTUFYX0RSQVdfQlVGRkVSU19FWFQgICAgICAgICAgICAgICAgICAweDg4MjQK
LSAgICAgICAgRFJBV19CVUZGRVIwX0VYVCAgICAgICAgICAgICAgICAgICAgICAweDg4MjUKLSAg
ICAgICAgRFJBV19CVUZGRVIxX0VYVCAgICAgICAgICAgICAgICAgICAgICAweDg4MjYKLSAgICAg
ICAgRFJBV19CVUZGRVIyX0VYVCAgICAgICAgICAgICAgICAgICAgICAweDg4MjcKLSAgICAgICAg
RFJBV19CVUZGRVIzX0VYVCAgICAgICAgICAgICAgICAgICAgICAweDg4MjgKLSAgICAgICAgRFJB
V19CVUZGRVI0X0VYVCAgICAgICAgICAgICAgICAgICAgICAweDg4MjkKLSAgICAgICAgRFJBV19C
VUZGRVI1X0VYVCAgICAgICAgICAgICAgICAgICAgICAweDg4MkEKLSAgICAgICAgRFJBV19CVUZG
RVI2X0VYVCAgICAgICAgICAgICAgICAgICAgICAweDg4MkIKLSAgICAgICAgRFJBV19CVUZGRVI3
X0VYVCAgICAgICAgICAgICAgICAgICAgICAweDg4MkMKLSAgICAgICAgRFJBV19CVUZGRVI4X0VY
VCAgICAgICAgICAgICAgICAgICAgICAweDg4MkQKLSAgICAgICAgRFJBV19CVUZGRVI5X0VYVCAg
ICAgICAgICAgICAgICAgICAgICAweDg4MkUKLSAgICAgICAgRFJBV19CVUZGRVIxMF9FWFQgICAg
ICAgICAgICAgICAgICAgICAweDg4MkYKLSAgICAgICAgRFJBV19CVUZGRVIxMV9FWFQgICAgICAg
ICAgICAgICAgICAgICAweDg4MzAKLSAgICAgICAgRFJBV19CVUZGRVIxMl9FWFQgICAgICAgICAg
ICAgICAgICAgICAweDg4MzEKLSAgICAgICAgRFJBV19CVUZGRVIxM19FWFQgICAgICAgICAgICAg
ICAgICAgICAweDg4MzIKLSAgICAgICAgRFJBV19CVUZGRVIxNF9FWFQgICAgICAgICAgICAgICAg
ICAgICAweDg4MzMKLSAgICAgICAgRFJBV19CVUZGRVIxNV9FWFQgICAgICAgICAgICAgICAgICAg
ICAweDg4MzQKLQotICAgIEFjY2VwdGVkIGJ5IHRoZSA8YXR0YWNobWVudD4gcGFyYW1ldGVyIG9m
IEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyLAotICAgIEZyYW1lYnVmZmVyVGV4dHVyZTJEIGFuZCBH
ZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdiwgYW5kIGJ5Ci0gICAgdGhlIDxidWZz
PiBwYXJhbWV0ZXIgb2YgRHJhd0J1ZmZlcnNFWFQ6Ci0KLSAgICAgICAgQ09MT1JfQVRUQUNITUVO
VDBfRVhUICAgICAgICAgICAgICAgICAgICAgIDB4OENFMAotICAgICAgICBDT0xPUl9BVFRBQ0hN
RU5UMV9FWFQgICAgICAgICAgICAgICAgICAgICAgMHg4Q0UxCi0gICAgICAgIENPTE9SX0FUVEFD
SE1FTlQyX0VYVCAgICAgICAgICAgICAgICAgICAgICAweDhDRTIKLSAgICAgICAgQ09MT1JfQVRU
QUNITUVOVDNfRVhUICAgICAgICAgICAgICAgICAgICAgIDB4OENFMwotICAgICAgICBDT0xPUl9B
VFRBQ0hNRU5UNF9FWFQgICAgICAgICAgICAgICAgICAgICAgMHg4Q0U0Ci0gICAgICAgIENPTE9S
X0FUVEFDSE1FTlQ1X0VYVCAgICAgICAgICAgICAgICAgICAgICAweDhDRTUKLSAgICAgICAgQ09M
T1JfQVRUQUNITUVOVDZfRVhUICAgICAgICAgICAgICAgICAgICAgIDB4OENFNgotICAgICAgICBD
T0xPUl9BVFRBQ0hNRU5UN19FWFQgICAgICAgICAgICAgICAgICAgICAgMHg4Q0U3Ci0gICAgICAg
IENPTE9SX0FUVEFDSE1FTlQ4X0VYVCAgICAgICAgICAgICAgICAgICAgICAweDhDRTgKLSAgICAg
ICAgQ09MT1JfQVRUQUNITUVOVDlfRVhUICAgICAgICAgICAgICAgICAgICAgIDB4OENFOQotICAg
ICAgICBDT0xPUl9BVFRBQ0hNRU5UMTBfRVhUICAgICAgICAgICAgICAgICAgICAgMHg4Q0VBCi0g
ICAgICAgIENPTE9SX0FUVEFDSE1FTlQxMV9FWFQgICAgICAgICAgICAgICAgICAgICAweDhDRUIK
LSAgICAgICAgQ09MT1JfQVRUQUNITUVOVDEyX0VYVCAgICAgICAgICAgICAgICAgICAgIDB4OENF
QwotICAgICAgICBDT0xPUl9BVFRBQ0hNRU5UMTNfRVhUICAgICAgICAgICAgICAgICAgICAgMHg4
Q0VECi0gICAgICAgIENPTE9SX0FUVEFDSE1FTlQxNF9FWFQgICAgICAgICAgICAgICAgICAgICAw
eDhDRUUKLSAgICAgICAgQ09MT1JfQVRUQUNITUVOVDE1X0VYVCAgICAgICAgICAgICAgICAgICAg
IDB4OENFRgotCi0gICAgVGhlIENPTE9SX0FUVEFDSE1FTlQwX0VYVCBjb25zdGFudCBpcyBlcXVh
bCB0byB0aGUKLSAgICBDT0xPUl9BVFRBQ0hNRU5UMCBjb25zdGFudC4KLQotICAgIEVhY2ggQ09M
T1JfQVRUQUNITUVOVDxpPl9FWFQgYWRoZXJlcyB0byBDT0xPUl9BVFRBQ0hNRU5UPGk+X0VYVAot
ICAgID0gQ09MT1JfQVRUQUNITUVOVDBfRVhUICsgPGk+LgotCi1DaGFuZ2VzIHRvIENoYXB0ZXIg
MyBvZiB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZpY2F0aW9uIChSYXN0ZXJpemF0aW9uKQotCi0g
ICAgU2VjdGlvbiAzLjIsIChNdWx0aXNhbXBsaW5nKS4gUmVwbGFjZSB0aGUgc2Vjb25kIHBhcmFn
cmFwaDoKLQotICAgIEFuIGFkZGl0aW9uYWwgYnVmZmVyLCBjYWxsZWQgdGhlIG11bHRpc2FtcGxl
IGJ1ZmZlciwgaXMgYWRkZWQgdG8gdGhlCi0gICAgd2luZG93IHN5c3RlbS1wcm92aWRlZCBmcmFt
ZWJ1ZmZlci4gUGl4ZWwgc2FtcGxlIHZhbHVlcywgaW5jbHVkaW5nCi0gICAgY29sb3IsIGRlcHRo
LCBhbmQgc3RlbmNpbCB2YWx1ZXMsIGFyZSBzdG9yZWQgaW4gdGhpcyBidWZmZXIuIFNhbXBsZXMK
LSAgICBjb250YWluIHNlcGFyYXRlIGNvbG9yIHZhbHVlcyBmb3IgZWFjaCBmcmFnbWVudCBjb2xv
ci4gV2hlbiB0aGUKLSAgICB3aW5kb3cgc3lzdGVtLXByb3ZpZGVkIGZyYW1lYnVmZmVyIGluY2x1
ZGVzIGEgbXVsdGlzYW1wbGUgYnVmZmVyLCBpdAotICAgIGRvZXMgbm90IGluY2x1ZGUgZGVwdGgg
b3Igc3RlbmNpbCBidWZmZXJzLCBldmVuIGlmIHRoZSBtdWx0aXNhbXBsZQotICAgIGJ1ZmZlciBk
b2VzIG5vdCBzdG9yZSBkZXB0aCBvciBzdGVuY2lsIHZhbHVlcy4gQ29sb3IgYnVmZmVycyBkbwot
ICAgIGNvZXhpc3Qgd2l0aCB0aGUgbXVsdGlzYW1wbGUgYnVmZmVyLCBob3dldmVyLgotCi0gICAg
U2VjdGlvbiAzLjguMiwgKFNoYWRlciBFeGVjdXRpb24pIFJlcGxhY2Ugc3Vic2VjdGlvbiAiU2hh
ZGVyCi0gICAgT3V0cHV0cyI6Ci0KLSAgICBUaGUgT3BlbkdMIEVTIFNoYWRpbmcgTGFuZ3VhZ2Ug
c3BlY2lmaWNhdGlvbiBkZXNjcmliZXMgdGhlIHZhbHVlcwotICAgIHRoYXQgbWF5IGJlIG91dHB1
dCBieSBhIGZyYWdtZW50IHNoYWRlci4gVGhlc2UgYXJlIGdsX0ZyYWdDb2xvciBhbmQKLSAgICBn
bF9GcmFnRGF0YVtuXS4gIFRoZSBmaW5hbCBmcmFnbWVudCBjb2xvciB2YWx1ZXMgb3IgdGhlIGZp
bmFsCi0gICAgZnJhZ21lbnQgZGF0YSB2YWx1ZXMgd3JpdHRlbiBieSBhIGZyYWdtZW50IHNoYWRl
ciBhcmUgY2xhbXBlZCB0byB0aGUKLSAgICByYW5nZSBbMCwgMV0gYW5kIHRoZW4gY29udmVydGVk
IHRvIGZpeGVkLXBvaW50IGFzIGRlc2NyaWJlZCBpbgotICAgIHNlY3Rpb24gMi4xLjIgZm9yIGZy
YW1lYnVmZmVyIGNvbG9yIGNvbXBvbmVudHMuCi0KLSAgICBXcml0aW5nIHRvIGdsX0ZyYWdDb2xv
ciBzcGVjaWZpZXMgdGhlIGZyYWdtZW50IGNvbG9yIChjb2xvciBudW1iZXIKLSAgICB6ZXJvKSB0
aGF0IHdpbGwgYmUgdXNlZCBieSBzdWJzZXF1ZW50IHN0YWdlcyBvZiB0aGUgcGlwZWxpbmUuCi0g
ICAgV3JpdGluZyB0byBnbF9GcmFnRGF0YVtuXSBzcGVjaWZpZXMgdGhlIHZhbHVlIG9mIGZyYWdt
ZW50IGNvbG9yCi0gICAgbnVtYmVyIG4uIEFueSBjb2xvcnMsIG9yIGNvbG9yIGNvbXBvbmVudHMs
IGFzc29jaWF0ZWQgd2l0aCBhCi0gICAgZnJhZ21lbnQgdGhhdCBhcmUgbm90IHdyaXR0ZW4gYnkg
dGhlIGZyYWdtZW50IHNoYWRlciBhcmUgdW5kZWZpbmVkLgotICAgIEEgZnJhZ21lbnQgc2hhZGVy
IG1heSBub3Qgc3RhdGljYWxseSBhc3NpZ24gdmFsdWVzIHRvIGJvdGgKLSAgICBnbF9GcmFnQ29s
b3IgYW5kIGdsX0ZyYWdEYXRhLiBJbiB0aGlzIGNhc2UsIGEgY29tcGlsZSBvciBsaW5rIGVycm9y
Ci0gICAgd2lsbCByZXN1bHQuIEEgc2hhZGVyIHN0YXRpY2FsbHkgYXNzaWducyBhIHZhbHVlIHRv
IGEgdmFyaWFibGUgaWYsCi0gICAgYWZ0ZXIgcHJlcHJvY2Vzc2luZywgaXQgY29udGFpbnMgYSBz
dGF0ZW1lbnQgdGhhdCB3b3VsZCB3cml0ZSB0byB0aGUKLSAgICB2YXJpYWJsZSwgd2hldGhlciBv
ciBub3QgcnVuLXRpbWUgZmxvdyBvZiBjb250cm9sIHdpbGwgY2F1c2UgdGhhdAotICAgIHN0YXRl
bWVudCB0byBiZSBleGVjdXRlZC4KLQotQ2hhbmdlcyB0byBDaGFwdGVyIDQgb2YgdGhlIE9wZW5H
TCBFUyAyLjAgU3BlY2lmaWNhdGlvbiAoUGVyLUZyYWdtZW50Ci1PcGVyYXRpb25zIGFuZCB0aGUg
RnJhbWUgQnVmZmVyKQotCi0gICAgTW9kaWZ5IHRoZSBvdmVydmlldyBvZiBDaGFwdGVyIDQgYW5k
IHJlcGxhY2UgdGhlIHNlbnRlbmNlcwotICAgIG9mIHRoZSBmaWZ0aCBwYXJhZ3JhcGggd2hpY2gg
cmVhZDogCi0KLSAgICAiVGhlIG5hbWUgb2YgdGhlIGNvbG9yIGJ1ZmZlciBvZiBhbiBhcHBsaWNh
dGlvbi1jcmVhdGVkIGZyYW1lYnVmZmVyCi0gICAgb2JqZWN0IGlzIENPTE9SX0FUVEFDSE1FTlQw
LiBUaGUgbmFtZXMgb2YgdGhlIGRlcHRoIGFuZCBzdGVuY2lsIGJ1ZmZlcnMKLSAgICBhcmUgREVQ
VEhfQVRUQUNITUVOVCBhbmQgU1RFTkNJTF9BVFRBQ0hNRU5ULiIgCi0KLSAgICBXaXRoIHRoZSBm
b2xsb3dpbmc6Ci0KLSAgICAiQSBmcmFtZWJ1ZmZlciBvYmplY3QgaGFzIGFuIGFycmF5IG9mIGNv
bG9yIGJ1ZmZlciBhdHRhY2htZW50IHBvaW50cywKLSAgICBudW1iZXJlZCB6ZXJvIHRocm91Z2gg
PG4+LCBhIGRlcHRoIGJ1ZmZlciBhdHRhY2htZW50IHBvaW50LCBhbmQgYQotICAgIHN0ZW5jaWwg
YnVmZmVyIGF0dGFjaG1lbnQgcG9pbnQuIiAKLQotICAgIEluc2VydCBUYWJsZSA0LjMgdG8gU2Vj
dGlvbiA0LjIuMSAoYW5kIHJlbnVtYmVyIHN1YnNlcXVlbnQgdGFibGVzKToKLQotICAgIFN5bWJv
bGljIENvbnN0YW50ICAgICAgICAgICAgICAgICAgICAgICBNZWFuaW5nCi0gICAgLS0tLS0tLS0t
LS0tLS0tLS0gICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAg
IE5PTkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBObyBidWZmZXIKLQotICAg
IENPTE9SX0FUVEFDSE1FTlQ8aT5fRVhUIChzZWUgY2FwdGlvbikgICBPdXRwdXQgZnJhZ21lbnQg
Y29sb3IgdG8gaW1hZ2UgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGF0dGFjaGVkIGF0IGNvbG9yIGF0dGFjaG1lbnQKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcG9pbnQgaQotCi0gICAgVGFibGUgNC4zOiBBcmd1bWVudHMg
dG8gRHJhd0J1ZmZlcnNFWFQgd2hlbiB0aGUgY29udGV4dCBpcyBib3VuZCB0byBhCi0gICAgZnJh
bWVidWZmZXIgb2JqZWN0LCBhbmQgdGhlIGJ1ZmZlcnMgdGhleSBpbmRpY2F0ZS4gPGk+IGluCi0g
ICAgQ09MT1JfQVRUQUNITUVOVDxpPl9FWFQgbWF5IHJhbmdlIGZyb20gemVybyB0byB0aGUgdmFs
dWUgb2YKLSAgICBNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUIG1pbnVzIG9uZS4KLQotICAgIFJl
cGxhY2UgU2VjdGlvbiA0LjIuMSwgIlNlbGVjdGluZyBhIEJ1ZmZlciBmb3IgV3JpdGluZyIgd2l0
aCB0aGUgZm9sbG93aW5nOgotCi0gICAgIkJ5IGRlZmF1bHQsIGNvbG9yIHZhbHVlcyBhcmUgd3Jp
dHRlbiBpbnRvIHRoZSBmcm9udCBidWZmZXIgZm9yCi0gICAgc2luZ2xlIGJ1ZmZlcmVkIHN1cmZh
Y2VzIG9yIGludG8gdGhlIGJhY2sgYnVmZmVyIGZvciBiYWNrIGJ1ZmZlcmVkCi0gICAgc3VyZmFj
ZXMgYXMgZGV0ZXJtaW5lZCB3aGVuIG1ha2luZyB0aGUgY29udGV4dCBjdXJyZW50LiBUbyBjb250
cm9sCi0gICAgdGhlIGNvbG9yIGJ1ZmZlciBpbnRvIHdoaWNoIGVhY2ggb2YgdGhlIGZyYWdtZW50
IGNvbG9yIHZhbHVlcyBpcwotICAgIHdyaXR0ZW4sIERyYXdCdWZmZXJzRVhUIGlzIHVzZWQuCi0K
LSAgICBUaGUgY29tbWFuZAotCi0gICAgICB2b2lkIERyYXdCdWZmZXJzRVhUKHNpemVpIG4sIGNv
bnN0IGVudW0gKmJ1ZnMpOwotCi0gICAgZGVmaW5lcyB0aGUgZHJhdyBidWZmZXJzIHRvIHdoaWNo
IGFsbCBmcmFnbWVudCBjb2xvcnMgYXJlIHdyaXR0ZW4uCi0gICAgPG4+IHNwZWNpZmllcyB0aGUg
bnVtYmVyIG9mIGJ1ZmZlcnMgaW4gPGJ1ZnM+LiA8YnVmcz4gaXMgYSBwb2ludGVyCi0gICAgdG8g
YW4gYXJyYXkgb2Ygc3ltYm9saWMgY29uc3RhbnRzIHNwZWNpZnlpbmcgdGhlIGJ1ZmZlciB0byB3
aGljaAotICAgIGVhY2ggZnJhZ21lbnQgY29sb3IgaXMgd3JpdHRlbi4KLQotICAgIEVhY2ggYnVm
ZmVyIGxpc3RlZCBpbiA8YnVmcz4gbXVzdCBiZSBCQUNLLCBOT05FLCBvciBvbmUgb2YgdGhlCi0g
ICAgdmFsdWVzIGZyb20gdGFibGUgNC4zLiBGdXJ0aGVyLCBhY2NlcHRhYmxlIHZhbHVlcyBmb3Ig
dGhlIGNvbnN0YW50cwotICAgIGluIDxidWZzPiBkZXBlbmQgb24gd2hldGhlciB0aGUgR0wgaXMg
dXNpbmcgdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIKLSAgICAoaS5lLiwgRFJBV19GUkFNRUJVRkZF
Ul9CSU5ESU5HIGlzIHplcm8pLCBvciBhIGZyYW1lYnVmZmVyIG9iamVjdAotICAgIChpLmUuLCBE
UkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkcgaXMgbm9uLXplcm8pLiBGb3IgbW9yZSBpbmZvcm1hdGlv
bgotICAgIGFib3V0IGZyYW1lYnVmZmVyIG9iamVjdHMsIHNlZSBzZWN0aW9uIDQuNC4KLQotICAg
IElmIHRoZSBHTCBpcyBib3VuZCB0byB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciwgdGhlbiA8bj4g
bXVzdCBiZSAxCi0gICAgYW5kIHRoZSBjb25zdGFudCBtdXN0IGJlIEJBQ0sgb3IgTk9ORS4gV2hl
biBkcmF3IGJ1ZmZlciB6ZXJvIGlzCi0gICAgQkFDSywgY29sb3IgdmFsdWVzIGFyZSB3cml0dGVu
IGludG8gdGhlIHNvbGUgYnVmZmVyIGZvciBzaW5nbGUtCi0gICAgYnVmZmVyZWQgY29udGV4dHMs
IG9yIGludG8gdGhlIGJhY2sgYnVmZmVyIGZvciBkb3VibGUtYnVmZmVyZWQKLSAgICBjb250ZXh0
cy4gSWYgRHJhd0J1ZmZlcnNFWFQgaXMgc3VwcGxpZWQgd2l0aCBhIGNvbnN0YW50IG90aGVyIHRo
YW4KLSAgICBCQUNLIGFuZCBOT05FLCB0aGUgZXJyb3IgSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2Vu
ZXJhdGVkLgotCi0gICAgSWYgdGhlIEdMIGlzIGJvdW5kIHRvIGEgZHJhdyBmcmFtZWJ1ZmZlciBv
YmplY3QsIHRoZW4gZWFjaCBvZiB0aGUKLSAgICBjb25zdGFudHMgbXVzdCBiZSBvbmUgb2YgdGhl
IHZhbHVlcyBsaXN0ZWQgaW4gdGFibGUgNC4zLgotCi0gICAgSW4gYm90aCBjYXNlcywgdGhlIGRy
YXcgYnVmZmVycyBiZWluZyBkZWZpbmVkIGNvcnJlc3BvbmQgaW4gb3JkZXIgdG8KLSAgICB0aGUg
cmVzcGVjdGl2ZSBmcmFnbWVudCBjb2xvcnMuIFRoZSBkcmF3IGJ1ZmZlciBmb3IgZnJhZ21lbnQK
LSAgICBjb2xvcnMgYmV5b25kIDxuPiBpcyBzZXQgdG8gTk9ORS4KLQotICAgIFRoZSBtYXhpbXVt
IG51bWJlciBvZiBkcmF3IGJ1ZmZlcnMgaXMgaW1wbGVtZW50YXRpb24tZGVwZW5kZW50LiBUaGUK
LSAgICBudW1iZXIgb2YgZHJhdyBidWZmZXJzIHN1cHBvcnRlZCBjYW4gYmUgcXVlcmllZCBieSBj
YWxsaW5nCi0gICAgR2V0SW50ZWdlcnYgd2l0aCB0aGUgc3ltYm9saWMgY29uc3RhbnQgTUFYX0RS
QVdfQlVGRkVSU19FWFQuIEFuCi0gICAgSU5WQUxJRF9WQUxVRSBlcnJvciBpcyBnZW5lcmF0ZWQg
aWYgPG4+IGlzIGdyZWF0ZXIgdGhhbgotICAgIE1BWF9EUkFXX0JVRkZFUlNfRVhULgotCi0gICAg
SWYgdGhlIEdMIGlzIGJvdW5kIHRvIGEgZHJhdyBmcmFtZWJ1ZmZlciBvYmplY3QsIHRoZSA8aT50
aCBidWZmZXIgbGlzdGVkCi0gICAgaW4gPGJ1ZnM+IG11c3QgYmUgQ09MT1JfQVRUQUNITUVOVDxp
Pl9FWFQgb3IgTk9ORS4gU3BlY2lmeWluZyBhCi0gICAgYnVmZmVyIG91dCBvZiBvcmRlciwgQkFD
Sywgb3IgQ09MT1JfQVRUQUNITUVOVDxtPl9FWFQgd2hlcmUgPG0+IGlzCi0gICAgZ3JlYXRlciB0
aGFuIG9yIGVxdWFsIHRvIHRoZSB2YWx1ZSBvZiBNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhULAot
ICAgIHdpbGwgZ2VuZXJhdGUgdGhlIGVycm9yIElOVkFMSURfT1BFUkFUSU9OLgotCi0gICAgSWYg
YSBmcmFnbWVudCBzaGFkZXIgd3JpdGVzIHRvICJnbF9GcmFnQ29sb3IiLCBEcmF3QnVmZmVyc0VY
VCAKLSAgICBzcGVjaWZpZXMgdGhlIHNldCBvZiBkcmF3IGJ1ZmZlcnMgaW50byB3aGljaCB0aGUg
Y29sb3IgCi0gICAgd3JpdHRlbiB0byAiZ2xfRnJhZ0NvbG9yIiBpcyB3cml0dGVuLiBJZiBhIGZy
YWdtZW50IHNoYWRlciB3cml0ZXMgdG8KLSAgICAiZ2xfRnJhZ0RhdGEiLCBEcmF3QnVmZmVyc0VY
VCBzcGVjaWZpZXMgYSBzZXQgb2YgZHJhdyBidWZmZXJzCi0gICAgaW50byB3aGljaCBlYWNoIG9m
IHRoZSBtdWx0aXBsZSBvdXRwdXQgY29sb3JzIGRlZmluZWQgYnkgdGhlc2UKLSAgICB2YXJpYWJs
ZXMgYXJlIHNlcGFyYXRlbHkgd3JpdHRlbi4gSWYgYSBmcmFnbWVudCBzaGFkZXIgd3JpdGVzIHRv
Ci0gICAgbmVpdGhlciAiZ2xfRnJhZ0NvbG9yIiBub3IgImdsX0ZyYWdEYXRhIiB0aGUgdmFsdWVz
IG9mIHRoZQotICAgIGZyYWdtZW50IGNvbG9ycyBmb2xsb3dpbmcgc2hhZGVyIGV4ZWN1dGlvbiBh
cmUgdW5kZWZpbmVkLCBhbmQgbWF5Ci0gICAgZGlmZmVyIGZvciBlYWNoIGZyYWdtZW50IGNvbG9y
LgotCi0gICAgSW5kaWNhdGluZyBhIGJ1ZmZlciBvciBidWZmZXJzIHVzaW5nIERyYXdCdWZmZXJz
RVhUIGNhdXNlcwotICAgIHN1YnNlcXVlbnQgcGl4ZWwgY29sb3IgdmFsdWUgd3JpdGVzIHRvIGFm
ZmVjdCB0aGUgaW5kaWNhdGVkCi0gICAgYnVmZmVycy4gSWYgdGhlIEdMIGlzIGJvdW5kIHRvIGEg
ZHJhdyBmcmFtZWJ1ZmZlciBvYmplY3QgYW5kIGEgZHJhdwotICAgIGJ1ZmZlciBzZWxlY3RzIGFu
IGF0dGFjaG1lbnQgdGhhdCBoYXMgbm8gaW1hZ2UgYXR0YWNoZWQsIHRoZW4gdGhhdAotICAgIGZy
YWdtZW50IGNvbG9yIGlzIG5vdCB3cml0dGVuLgotCi0gICAgU3BlY2lmeWluZyBOT05FIGFzIHRo
ZSBkcmF3IGJ1ZmZlciBmb3IgYSBmcmFnbWVudCBjb2xvciB3aWxsIGluaGliaXQKLSAgICB0aGF0
IGZyYWdtZW50IGNvbG9yIGZyb20gYmVpbmcgd3JpdHRlbi4KLQotICAgIFRoZSBzdGF0ZSByZXF1
aXJlZCB0byBoYW5kbGUgY29sb3IgYnVmZmVyIHNlbGVjdGlvbiBmb3IgZWFjaAotICAgIGZyYW1l
YnVmZmVyIGlzIGFuIGludGVnZXIgZm9yIGVhY2ggc3VwcG9ydGVkIGZyYWdtZW50IGNvbG9yLiBG
b3IgdGhlCi0gICAgZGVmYXVsdCBmcmFtZWJ1ZmZlciwgaW4gdGhlIGluaXRpYWwgc3RhdGUgdGhl
IGRyYXcgYnVmZmVyIGZvcgotICAgIGZyYWdtZW50IGNvbG9yIHplcm8gaXMgQkFDSyBpZiB0aGVy
ZSBpcyBhIGRlZmF1bHQgZnJhbWVidWZmZXIKLSAgICBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbnRl
eHQsIG90aGVyd2lzZSBOT05FLiBGb3IgZnJhbWVidWZmZXIKLSAgICBvYmplY3RzLCBpbiB0aGUg
aW5pdGlhbCBzdGF0ZSB0aGUgZHJhdyBidWZmZXIgZm9yIGZyYWdtZW50IGNvbG9yCi0gICAgemVy
byBpcyBDT0xPUl9BVFRBQ0hNRU5UMF9FWFQuCi0KLSAgICBGb3IgYm90aCB0aGUgZGVmYXVsdCBm
cmFtZWJ1ZmZlciBhbmQgZnJhbWVidWZmZXIgb2JqZWN0cywgdGhlCi0gICAgaW5pdGlhbCBzdGF0
ZSBvZiBkcmF3IGJ1ZmZlcnMgZm9yIGZyYWdtZW50IGNvbG9ycyBvdGhlciB0aGFuIHplcm8gaXMK
LSAgICBOT05FLgotCi0gICAgVGhlIHZhbHVlIG9mIHRoZSBkcmF3IGJ1ZmZlciBzZWxlY3RlZCBm
b3IgZnJhZ21lbnQgY29sb3IgPGk+IGNhbiBiZQotICAgIHF1ZXJpZWQgYnkgY2FsbGluZyBHZXRJ
bnRlZ2VydiB3aXRoIHRoZSBzeW1ib2xpYyBjb25zdGFudAotICAgIERSQVdfQlVGRkVSPGk+X0VY
VC4iCi0KLSAgICBNb2RpZnkgU2VjdGlvbiA0LjIuMyAoQ2xlYXJpbmcgdGhlIEJ1ZmZlcnMpIGFu
ZCByZXBsYWNlIHRoZSBmaXJzdAotICAgIHR3byBwYXJhZ3JhcGhzIHdpdGggdGhlIGZvbGxvd2lu
ZzoKLQotICAgICJUaGUgR0wgcHJvdmlkZXMgYSBtZWFucyBmb3Igc2V0dGluZyBwb3J0aW9ucyBv
ZiBldmVyeSBwaXhlbCBpbiBhCi0gICAgcGFydGljdWxhciBidWZmZXIgdG8gdGhlIHNhbWUgdmFs
dWUuICBUaGUgYXJndW1lbnQgdG8KLSAgICAKLSAgICAgICAgdm9pZCBDbGVhcihiaXRmaWVsZCBi
dWYpOwotCi0gICAgaXMgdGhlIGJpdHdpc2UgT1Igb2YgYSBudW1iZXIgb2YgdmFsdWVzIGluZGlj
YXRpbmcgd2hpY2ggYnVmZmVycyBhcmUKLSAgICB0byBiZSBjbGVhcmVkLiBUaGUgdmFsdWVzIGFy
ZSBDT0xPUl9CVUZGRVJfQklULCBERVBUSF9CVUZGRVJfQklULCBhbmQKLSAgICBTVEVOQ0lMX0JV
RkZFUl9CSVQsIGluZGljYXRpbmcgdGhlIGJ1ZmZlcnMgY3VycmVudGx5IGVuYWJsZWQgZm9yIGNv
bG9yCi0gICAgd3JpdGluZywgdGhlIGRlcHRoIGJ1ZmZlciwgYW5kIHRoZSBzdGVuY2lsIGJ1ZmZl
ciAoc2VlIGJlbG93KSwgCi0gICAgcmVzcGVjdGl2ZWx5LiBUaGUgdmFsdWUgdG8gd2hpY2ggZWFj
aCBidWZmZXIgaXMgY2xlYXJlZCBkZXBlbmRzIG9uCi0gICAgdGhlIHNldHRpbmcgb2YgdGhlIGNs
ZWFyIHZhbHVlIGZvciB0aGF0IGJ1ZmZlci4gIElmIHRoZSBtYXNrIGlzIG5vdCBhCi0gICAgYml0
d2lzZSBPUiBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlcywgdGhlbiB0aGUgZXJyb3IgSU5WQUxJRF9W
QUxVRSBpcwotICAgIGdlbmVyYXRlZC4KLQotICAgICAgICB2b2lkIENsZWFyQ29sb3IoY2xhbXBm
IHIsIGNsYW1wZiwgZywgY2xhbXBmIGIsIGNsYW1wZiBhKTsKLSAgIAotICAgIHNldHMgdGhlIGNs
ZWFyIHZhbHVlIGZvciBmaXhlZC1wb2ludCBjb2xvciBidWZmZXJzLiAgRWFjaCBvZiB0aGUKLSAg
ICBzcGVjaWZpZWQgY29tcG9uZW50cyBpcyBjbGFtcGVkIHRvIFswLCAxXSBhbmQgY29udmVydGVk
IHRvIGZpeGVkLXBvaW50Ci0gICAgYXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gMi4xLjIgZm9yIGZy
YW1lYnVmZmVyIGNvbG9yIGNvbXBvbmVudHMuIgotCi0gICAgUmVwbGFjZSB0aGUgc2Vjb25kIHBh
cmFncmFwaCBvZiBTZWN0aW9uIDQuNC4xIChCaW5kaW5nIGFuZCBNYW5hZ2luZwotICAgIEZyYW1l
YnVmZmVyIE9iamVjdHMpIHdpdGggdGhlIGZvbGxvd2luZzoKLQotICAgICJUaGUgbmFtZXNwYWNl
IGZvciBmcmFtZWJ1ZmZlciBvYmplY3RzIGlzIHRoZSB1bnNpZ25lZCBpbnRlZ2Vycywgd2l0aAot
ICAgIHplcm8gcmVzZXJ2ZWQgYnkgT3BlbkdMIEVTIHRvIHJlZmVyIHRvIHRoZSBkZWZhdWx0IGZy
YW1lYnVmZmVyLiBBCi0gICAgZnJhbWVidWZmZXIgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgYmluZGlu
ZyBhbiB1bnVzZWQgbmFtZSB0byB0aGUKLSAgICB0YXJnZXQgRlJBTUVCVUZGRVIsIERSQVdfRlJB
TUVCVUZGRVIsIG9yIFJFQURfRlJBTUVCVUZGRVIuIFRoZSBiaW5kaW5nCi0gICAgaXMgZWZmZWN0
ZWQgYnkgY2FsbGluZwotCi0gICAgICAgIHZvaWQgQmluZEZyYW1lYnVmZmVyKGVudW0gdGFyZ2V0
LCB1aW50IGZyYW1lYnVmZmVyKTsKLQotICAgIHdpdGggPHRhcmdldD4gc2V0IHRoZSBkZXNpcmVk
IGZyYW1lYnVmZmVyIHRhcmdldCBhbmQgPGZyYW1lYnVmZmVyPiBzZXQgCi0gICAgdG8gdGhlIHVu
dXNlZCBuYW1lLiBUaGUgcmVzdWx0aW5nIGZyYW1lYnVmZmVyIG9iamVjdCBpcyBhIG5ldyBzdGF0
ZSAKLSAgICB2ZWN0b3IuIFRoZXJlIGlzIGEgbnVtYmVyIG9mIGNvbG9yIGF0dGFjaG1lbnQgcG9p
bnRzLCBwbHVzIG9uZSBlYWNoCi0gICAgZm9yIHRoZSBkZXB0aCBhbmQgc3RlbmNpbCBhdHRhY2ht
ZW50IHBvaW50cy4gVGhlIG51bWJlciBvZiBjb2xvciBhdHRhY2htZW50Ci0gICAgcG9pbnRzIGlz
IGVxdWFsIHRvIHRoZSB2YWx1ZSBvZiBNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhULiIKLQotICAg
IFJlcGxhY2UgdGhlIHRoaXJkIGl0ZW0gaW4gdGhlIGJ1bGxldGVkIGxpc3QgaW4gU2VjdGlvbiA0
LjQuMSAoQmluZGluZwotICAgIGFuZCBNYW5hZ2luZyBGcmFtZWJ1ZmZlciBPYmplY3RzKSB3aXRo
IHRoZSBmb2xsb3dpbmc6Ci0KLSAgICAiICogVGhlIG9ubHkgY29sb3IgYnVmZmVyIGJpdHBsYW5l
cyBhcmUgdGhlIG9uZXMgZGVmaW5lZCBieSB0aGUKLSAgICBmcmFtZWJ1ZmZlciBhdHRhY2htZW50
cyBwb2ludHMgbmFtZWQgQ09MT1JfQVRUQUNITUVOVDBfRVhUIHRocm91Z2gKLSAgICBDT0xPUl9B
VFRBQ0hNRU5UPG4+X0VYVC4iCi0KLSAgICBNb2RpZnkgU2VjdGlvbiA0LjQuMyAoUmVuZGVyYnVm
ZmVyIE9iamVjdHMpIGluIHRoZSAKLSAgICAiQXR0YWNoaW5nIFJlbmRlcmJ1ZmZlciBJbWFnZXMg
dG8gYSBGcmFtZWJ1ZmZlciIgc3Vic2VjdGlvbiBhcyBmb2xsb3dzOgotCi0gICAgSW5zZXJ0IHRo
ZSBmb2xsb3dpbmcgdGFibGU6Ci0KLSAgICBOYW1lIG9mIGF0dGFjaG1lbnQKLSAgICAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICBDT0xPUl9BVFRBQ0hNRU5UPGk+
X0VYVCAoc2VlIGNhcHRpb24pCi0gICAgREVQVEhfQVRUQUNITUVOVAotICAgIFNURU5DSUxfQVRU
QUNITUVOVAotCi0gICAgVGFibGUgNC54OiBGcmFtZWJ1ZmZlciBhdHRhY2htZW50IHBvaW50cy4g
PGk+IGluIENPTE9SX0FUVEFDSE1FTlQ8aT5fRVhUCi0gICAgbWF5IHJhbmdlIGZyb20gemVybyB0
byB0aGUgdmFsdWUgb2YgTUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCBtaW51cyAxLgotCi0gICAg
TW9kaWZ5IHRoZSB0aGlyZCBzZW50ZW5jZSBvZiB0aGUgcGFyYWdyYXBoIGZvbGxvd2luZyB0aGUg
ZGVmaW5pdGlvbiBvZgotICAgIEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyIHRvIGJlIGFzIGZvbGxv
d3M6Ci0KLSAgICAiPGF0dGFjaG1lbnQ+IHNob3VsZCBiZSBzZXQgdG8gb25lIG9mIHRoZSBhdHRh
Y2htZW50IHBvaW50cyBvZiB0aGUgCi0gICAgZnJhbWVidWZmZXIgbGlzdGVkIGluIFRhYmxlIDQu
eC4iIAotCi0gICAgTW9kaWZ5IFNlY3Rpb24gNC40LjMgKFJlbmRlcmJ1ZmZlciBPYmplY3RzKSBp
biB0aGUgIkF0dGFjaGluZyBUZXh0dXJlCi0gICAgSW1hZ2VzIHRvIGEgRnJhbWVidWZmZXIiIHN1
YnNlY3Rpb24gYXMgZm9sbG93czoKLQotICAgIE1vZGlmeSB0aGUgbGFzdCBzZW50ZW5jZSBvZiB0
aGUgcGFyYWdyYXBoIGZvbGxvd2luZyB0aGUgZGVmaW5pdGlvbiBvZgotICAgIEZyYW1lYnVmZmVy
VGV4dHVyZTJEIHRvIGJlIGFzIGZvbGxvd3M6Ci0KLSAgICAiPGF0dGFjaG1lbnQ+IG11c3QgYmUg
b25lIG9mIHRoZSBhdHRhY2htZW50IHBvaW50cyBvZiB0aGUgZnJhbWVidWZmZXIKLSAgICBsaXN0
ZWQgaW4gVGFibGUgNC54LiIKLQotICAgIE1vZGlmeSBTZWN0aW9uIDQuNC41IChGcmFtZWJ1ZmZl
ciBDb21wbGV0ZW5lc3MpIGFuZCByZXBsYWNlIHRoZSAzcmQKLSAgICBpdGVtIGluIHRoZSBidWxs
ZXRlZCBsaXN0IGluIHRoZSAiRnJhbWVidWZmZXIgQXR0YWNobWVudCBDb21wbGV0ZW5lc3MiCi0g
ICAgc3Vic2VjdGlvbiB3aXRoIHRoZSBmb2xsb3dpbmc6Ci0KLSAgICAiICogSWYgPGF0dGFjaG1l
bnQ+IGlzIENPTE9SX0FUVEFDSE1FTlQ8aT5fRVhULCB0aGVuIDxpbWFnZT4gbXVzdAotICAgIGhh
dmUgYSBjb2xvci1yZW5kZXJhYmxlIGludGVybmFsIGZvcm1hdC4iCi0KLUNoYW5nZXMgdG8gQ2hh
cHRlciA2IG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmljYXRpb24gKFN0YXRlIGFuZAotU3Rh
dGUgUmVxdWVzdHMpCi0KLSAgICBJbiBzZWN0aW9uIDYuMS4zIChFbnVtZXJhdGVkIFF1ZXJpZXMp
IG1vZGlmeSB0aGUgdGhpcmQgc2VudGVuY2UgaW4KLSAgICB0aGUgZGVmaW5pdGlvbiBvZiBHZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdiB0byBiZSBhcyBmb2xsb3dzOgotCi0gICAg
IjxhdHRhY2htZW50PiBtdXN0IGJlIG9uZSBvZiB0aGUgYXR0YWNobWVudCBwb2ludHMgb2YgdGhl
IGZyYW1lYnVmZmVyCi0gICAgbGlzdGVkIGluIFRhYmxlIDQueC4iCi0KLUNoYW5nZXMgdG8gQ2hh
cHRlciAzIG9mIHRoZSBPcGVuR0wgRVMgU2hhZGluZyBMYW5ndWFnZSAxLjAuMTcgU3BlY2lmaWNh
dGlvbiAoQmFzaWNzKQotCi0gICAgQWRkIGEgbmV3IHNlY3Rpb246Ci0KLSAgICAzLjQuMSBHTF9F
WFRfZHJhd19idWZmZXJzIEV4dGVuc2lvbgotCi0gICAgVG8gdXNlIHRoZSBHTF9FWFRfZHJhd19i
dWZmZXJzIGV4dGVuc2lvbiBpbiBhIHNoYWRlciBpdAotICAgIG11c3QgYmUgZW5hYmxlZCB1c2lu
ZyB0aGUgI2V4dGVuc2lvbiBkaXJlY3RpdmUuCi0KLSAgICBUaGUgc2hhZGluZyBsYW5ndWFnZSBw
cmVwcm9jZXNzb3IgI2RlZmluZQotICAgIEdMX0VYVF9kcmF3X2J1ZmZlcnMgd2lsbCBiZSBkZWZp
bmVkIHRvIDEsIGlmIHRoZQotICAgIEdMX0VYVF9kcmF3X2J1ZmZlcnMgZXh0ZW5zaW9uIGlzIHN1
cHBvcnRlZC4KLQotRGVwZW5kZW5jaWVzIG9uIEFOR0xFX2ZyYW1lYnVmZmVyX2JsaXQgYW5kIEFQ
UExFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlOgotCi0gICAgSWYgbmVpdGhlciBBTkdMRV9mcmFt
ZWJ1ZmZlcl9ibGl0IG5vciBBUFBMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSBhcmUKLSAgICBz
dXBwb3J0ZWQsIHRoZW4gYWxsIHJlZmVyZW5jZXMgdG8gImRyYXcgZnJhbWVidWZmZXJzIiBzaG91
bGQgYmUgcmVwbGFjZWQKLSAgICB3aXRoIHJlZmVyZW5jZXMgdG8gImZyYW1lYnVmZmVycyIuIFJl
ZmVyZW5jZXMgdG8gRFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HCi0gICAgc2hvdWxkIGJlIHJlcGxh
Y2VkIHdpdGggcmVmZXJlbmNlcyB0byBGUkFNRUJVRkZFUl9CSU5ESU5HLiBSZWZlcmVuY2VzIHRv
Ci0gICAgRFJBV19GUkFNRUJVRkZFUiBhbmQgUkVBRF9GUkFNRUJVRkZFUiBzaG91bGQgYmUgcmVt
b3ZlZC4KLQotICAgIElmIEFOR0xFX2ZyYW1lYnVmZmVyX2JsaXQgaXMgc3VwcG9ydGVkLCBEUkFX
X0ZSQU1FQlVGRkVSX0JJTkRJTkcsIERSQVdfRlJBTUVCVUZGRVIKLSAgICBhbmQgUkVBRF9GUkFN
RUJVRkZFUiBhbGwgcmVmZXIgdG8gY29ycmVzcG9uZGluZyBfQU5HTEUgc3VmZml4ZWQgbmFtZXMK
LSAgICAodGhleSBoYXZlIHRoZSBzYW1lIHRva2VuIHZhbHVlcykuCi0KLSAgICBJZiBBUFBMRV9m
cmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSBpcyBzdXBwb3J0ZWQsIERSQVdfRlJBTUVCVUZGRVJfQklO
RElORywKLSAgICBEUkFXX0ZSQU1FQlVGRkVSIGFuZCBSRUFEX0ZSQU1FQlVGRkVSIGFsbCByZWZl
ciB0byB0aGUgY29ycmVzcG9uZGluZyBfQVBQTEUKLSAgICBzdWZmaXhlZCBuYW1lcyAodGhleSBo
YXZlIHRoZSBzYW1lIHRva2VuIHZhbHVlcykuCi0KLUVycm9ycwotCi0gICAgVGhlIElOVkFMSURf
T1BFUkFUSU9OIGVycm9yIGlzIGdlbmVyYXRlZCBpZiBEcmF3QnVmZmVyc0VYVCBpcyBjYWxsZWQK
LSAgICB3aGVuIHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyIGlzIGJvdW5kIGFuZCBhbnkgb2YgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gICAgaG9sZDogCi0gICAgIC0gPG4+IGlzIGdyZWF0ZXIg
dGhhbiAxIGFuZCBsZXNzIHRoYW4gTUFYX0RSQVdfQlVGRkVSU19FWFQsCi0gICAgIC0gPGJ1ZnM+
IGNvbnRhaW5zIGEgdmFsdWUgb3RoZXIgdGhhbiBCQUNLIG9yIE5PTkUuCi0KLSAgICBUaGUgSU5W
QUxJRF9PUEVSQVRJT04gZXJyb3IgaXMgZ2VuZXJhdGVkIGlmIERyYXdCdWZmZXJzRVhUIGlzIGNh
bGxlZAotICAgIHdoZW4gYm91bmQgdG8gYSBkcmF3IGZyYW1lYnVmZmVyIG9iamVjdCBhbmQgYW55
IG9mIHRoZSBmb2xsb3dpbmcKLSAgICBjb25kaXRpb25zIGhvbGQ6Ci0gICAgIC0gdGhlIDxpPnRo
IHZhbHVlIGluIDxidWZzPiBpcyBub3QgQ09MT1JfQVRUQUNITUVOVDxpPl9FWFQgb3IgTk9ORS4K
LQotICAgIFRoZSBJTlZBTElEX1ZBTFVFIGVycm9yIGlzIGdlbmVyYXRlZCBpZiBEcmF3QnVmZmVy
c0VYVCBpcyBjYWxsZWQKLSAgICB3aXRoIGEgdmFsdWUgb2YgPG4+IHdoaWNoIGlzIGdyZWF0ZXIg
dGhhbiBNQVhfRFJBV19CVUZGRVJTX0VYVC4KLQotICAgIFRoZSBJTlZBTElEX0VOVU0gZXJyb3Ig
aXMgZ2VuZXJhdGVkIGJ5IEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyIGlmCi0gICAgdGhlIDxhdHRh
Y2htZW50PiBwYXJhbWV0ZXIgaXMgbm90IG9uZSBvZiB0aGUgdmFsdWVzIGxpc3RlZCBpbiBUYWJs
ZSA0LnguCi0KLSAgICBUaGUgSU5WQUxJRF9FTlVNIGVycm9yIGlzIGdlbmVyYXRlZCBieSBGcmFt
ZWJ1ZmZlclRleHR1cmUyRCBpZgotICAgIHRoZSA8YXR0YWNobWVudD4gcGFyYW1ldGVyIGlzIG5v
dCBvbmUgb2YgdGhlIHZhbHVlcyBsaXN0ZWQgaW4gVGFibGUgNC54LgotCi0gICAgVGhlIElOVkFM
SURfRU5VTSBlcnJvciBpcyBnZW5lcmF0ZWQgYnkgR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaXYKLSAgICBpZiB0aGUgPGF0dGFjaG1lbnQ+IHBhcmFtZXRlciBpcyBub3Qgb25lIG9m
IHRoZSB2YWx1ZXMgbGlzdGVkIGluIFRhYmxlIDQueC4KLQotTmV3IFN0YXRlCi0KLSAgICBBZGQg
VGFibGUgNi5YIEZyYW1lYnVmZmVyIChTdGF0ZSBwZXIgZnJhbWVidWZmZXIgb2JqZWN0KToKLQot
ICAgIFN0YXRlICAgICAgICAgICAgICAgVHlwZSBHZXQgQ29tbWFuZCAgSW5pdGlhbCBWYWx1ZSBE
ZXNjcmlwdGlvbiAKLSAgICAtLS0tLS0tLS0tLS0tLS0tLS0gIC0tLS0gLS0tLS0tLS0tLS0tIC0t
LS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0KLSAgICBEUkFXX0JVRkZFUjxpPl9FWFQgIFoxMCogR2V0
SW50ZWdlcnYgIHNlZSA0LjIuMSAgICAgRHJhdyBidWZmZXIgc2VsZWN0ZWQgCi0JCQkJCQkJICBm
b3IgZnJhZ21lbnQgY29sb3IgaQotCi0gICAgQWRkIHRvIFRhYmxlIDYuMTggKEltcGxlbWVudGF0
aW9uIERlcGVuZGVudCBWYWx1ZXMpCi0KLSAgICBHZXQgdmFsdWUgICAgICAgICAgICAgICAgIFR5
cGUgR2V0IENtbmQgICAgTWluaW11bSBWYWx1ZSBEZXNjcmlwdGlvbiAgICAgICAgICAgICBTZWMu
Ci0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgICAtLS0tIC0tLS0tLS0tLS0tIC0tLS0tLS0t
LS0tLS0gLS0tLS0tLS0tLS0gICAgICAgICAgICAgLS0tLS0KLSAgICBNQVhfRFJBV19CVUZGRVJT
X0VYVCAgICAgIForICAgR2V0SW50ZWdlcnYgMSAgICAgICAgICAgICBNYXhpbXVtIG51bWJlciBv
ZiAgICAgICA0LjIuMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFjdGl2ZSBkcmF3IGJ1ZmZlcnMKLSAgICBNQVhfQ09MT1JfQVRU
QUNITUVOVFNfRVhUIForICAgR2V0SW50ZWdlcnYgMSAgICAgICAgICAgICBOdW1iZXIgb2YgZnJh
bWVidWZmZXIgICA0LjQuMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbG9yIGF0dGFjaG1lbnQgcG9pbnRzCi1Jc3N1ZXMKLQot
ICAgIFNlZSBBUkJfZHJhd19idWZmZXJzIGZvciByZWxldmFudCBpc3N1ZXMuCi0KLSAgMSkgV2hh
dCBhcmUgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhpcyBleHRlbnNpb24gYW5kIE5WX2RyYXdf
YnVmZmVycwotICAgICsgTlZfZmJvX2NvbG9yX2F0dGFjaG1lbnRzPwotCi0gICAgUkVTT0xWRUQu
IFRoaXMgZXh0ZW5zaW9uOgotICAgICAtIGFkZHMgaW50ZXJhY3Rpb25zIHdpdGggYmxpdF9mcmFt
ZWJ1ZmZlciBhbmQgdGhlIHNlcGFyYXRlIAotICAgICAgIGRyYXcvcmVhZCBiaW5kaW5nIHBvaW50
cwotICAgICAtIFRoZSBkcmF3IGJ1ZmZlciBhbmQgY29sb3IgYXR0YWNobWVudCBsaW1pdHMgYXJl
IGdsb2JhbCBpbnN0ZWFkCi0gICAgICAgb2YgcGVyLWZibyAoc2VlIElzc3VlIDIpCi0gICAgIC0g
Y2FuIGJlIHVzZWQgdG8gd2l0aCBkZWZhdWx0IGZyYW1lYnVmZmVyIHRvIHNldCBOT05FL0JBQ0sg
KHNlZSBJc3N1ZSA0KQotICAgICAtIHJldGFpbnMgdGhlIG9yZGVyaW5nIHJlc3RyaWN0aW9ucyBv
biBjb2xvciBhdHRhY2htZW50cyB0aGF0IGFyZSAKLSAgICAgICBpbXBvc2VkIGJ5IEVTIDMuMC4K
LQotICAgMikgU2hvdWxkIHRoZSBNQVhfRFJBV19CVUZGRVJTX0VYVCBhbmQgTUFYX0NPTE9SX0FU
VEFDSE1FTlRTX0VYVCBsaW1pdHMKLSAgICBiZSBwZXItZnJhbWVidWZmZXIgdmFsdWVzIG9yIGlt
cGxlbWVudGF0aW9uIGRlcGVuZGVudCBjb25zdGFudHM/Ci0KLSAgICBESVNDVVNTSU9OOiBJbiBB
UkJfZHJhd19idWZmZXJzIHRoaXMgd2FzIHBlci1jb250ZXh0IChzZWUgSXNzdWUgMikuCi0gICAg
RVhUX2ZyYW1lYnVmZmVyX29iamVjdCAoYW5kIHN1YnNlcXVlbnRseSBBUkJfZnJhbWVidWZmZXJf
b2JqZWN0LCBhbmQgR0wgMy4wCi0gICAgdGhyb3VnaCBHTCA0LjIpIG1hZGUgdGhlc2UgcXVlcmll
cyBmcmFtZWJ1ZmZlci1kZXBlbmRlbnQuIAotICAgIEhvd2V2ZXIgaW4gR0wgNC4zIGFuZCBHTEVT
IDMuMCwgdGhlc2UgbGltaXRzIHdlcmUgY2hhbmdlZCBmcm9tIAotICAgIGZyYW1lYnVmZmVyLWRl
cGVuZGVudCBzdGF0ZSB0byBpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQgc3RhdGUgYWZ0ZXIKLSAg
ICBtdWNoIGRpc2N1c3Npb24gKEJ1ZyA3OTkwKS4KLQotICAgIE5WX2RyYXdfYnVmZmVycyBoYXMg
TUFYX0RSQVdfQlVGRkVSUyBsaXN0ZWQgYXMgcGVyLWZyYW1lYnVmZmVyIHN0YXRlLAotICAgIGJ1
dCBOVl9mYm9fY29sb3JfYXR0YWNobWVudHMgaGFzIE1BWF9DT0xPUl9BVFRBQ0hNRU5UUyBhcyBh
biAKLSAgICBpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQgY29uc3RhbnQuCi0KLSAgICBUaGlzIGlz
IHJlbGV2YW50IGJlY2F1c2Ugc29tZSBpbXBsZW1lbnRhdGlvbnMgYXJlIG5vdCBhYmxlIHRvIHN1
cHBvcnQgCi0gICAgbXVsdGlzYW1wbGluZyBpbiBjb25qdWN0aW9uIHdpdGggbXVsdGlwbGUgY29s
b3IgYXR0YWNobWVudHMuICBJZiB0aGUKLSAgICBxdWVyeSBpcyBwZXItZnJhbWVidWZmZXIsIHRo
ZXkgY2FuIHJlcG9ydCBhIG1heGltdW0gb2Ygb25lIGF0dGFjaG1lbnQKLSAgICB3aGVuIHRoZXJl
IGFyZSBtdWx0aXNhbXBsZWQgYXR0YWNobWVudHMsIGJ1dCBhIGhpZ2hlciBsaW1pdCB3aGVuIG9u
bHkKLSAgICBzaW5nbGUtc2FtcGxlZCBhdHRhY2htZW50cyBhcmUgcHJlc2VudC4KLQotICAgIFJF
U09MVkVELiBNYWtlIHRoaXMgZ2xvYmFsIGNvbnRleHQgc3RhdGUgYXMgdGhpcyBpcyBtb3N0IGNv
bnNpc3RlbnQgCi0gICAgd2l0aCBHTEVTIDMuMCBhbmQgdXBkYXRlZCBHTCBkcml2ZXJzLiBJbiBh
biBpbXBsZW1lbnRhdGlvbiBjYW5ub3QKLSAgICBzdXBwb3J0IG11bHRpc2FtcGxpbmcgaW4gY29u
anVuY3Rpb24gd2l0aCBtdWx0aXBsZSBjb2xvciBhdHRhY2htZW50cywKLSAgICBwZXJoYXBzIHN1
Y2ggYW4gaW1wbGVtZW50YXRpb24gY291bGQgcmVwb3J0IEZCTyBpbmNvbXBsZXRlIGluIHRoaXMg
Ci0gICAgc2l0dWF0aW9uLCBidXQgdGhpcyBpcyBsZXNzIHRoYW4gZGVzaXJhYmxlLgotCi0gICAz
KSBTaG91bGQgd2Ugc3VwcG9ydCBicm9hZGNhc3QgZnJvbSBnbF9GcmFnQ29sb3IgdG8gYWxsIGds
X0ZyYWdEYXRhW3hdCi0gICAgb3Igc2hvdWxkIGl0IGJlIHN5bm9ueW1vdXMgd2l0aCBnbF9GcmFn
RGF0YVswXT8KLQotICAgIERJU0NVU1NJT046IFdpdGggTlZfZHJhd19idWZmZXJzLCB3cml0aW5n
IHRvIGdsX0ZyYWdDb2xvciB3cml0ZXMgdG8gYWxsCi0gICAgdGhlIGVuYWJsZWQgZHJhdyBidWZm
ZXJzIChpZSBicm9hZGNhc3QpLiBJbiBPcGVuR0wgRVMgMy4wIHdoZW4gdXNpbmcgCi0gICAgRVNT
TCAxLjAsIGdsX0ZyYWdDb2xvciBpcyBlcXVpdmFsZW50IHRvIHdyaXRpbmcgYSBzaW5nbGUgb3V0
cHV0IHRvIAotICAgIGdsX0ZyYWdEYXRhWzBdIGFuZCBtdWx0aXBsZSBvdXRwdXRzIGFyZSBub3Qg
cG9zc2libGUuIFdoZW4gdXNpbmcgRVNTTCAzLjAsCi0gICAgb25seSB1c2VyLWRlZmluZWQgb3V0
IHZhcmlhYmxlcyBtYXkgYmUgdXNlZC4KLQotICAgIElmIGJyb2FkY2FzdCBpcyBzdXBwb3J0ZWQs
IHNvbWUgaW1wbGVtZW50YXRpb25zIG1heSBoYXZlIHRvIHJlcGxhY2UKLSAgICB3cml0ZXMgdG8g
Z2xfRnJhZ0NvbG9yIHdpdGggcmVwbGljYXRlZCB3cml0ZXMgdG8gYWxsIHBvc3NpYmxlIGdsX0Zy
YWdEYXRhCi0gICAgbG9jYXRpb25zIHdoZW4gdGhpcyBleHRlbnNpb24gaXMgZW5hYmxlZC4KLQot
ICAgIFJFU09MVkVEOiBXcml0ZXMgdG8gZ2xfRnJhZ0NvbG9yIGFyZSBicm9hZGNhc3QgdG8gYWxs
IGVuYWJsZWQgY29sb3IKLSAgICBidWZmZXJzLiBFUyAzLjAgdXNpbmcgRVNTTCAxLjAgZG9lc24n
dCBzdXBwb3J0IGJyb2FkY2FzdCBiZWNhdXNlCi0gICAgRVNTTCAxLjAgd2FzIG5vdCBleHRlbmRl
ZCB0byBoYXZlIG11bHRpcGxlIGNvbG9yIG91dHB1dHMgKGJ1dCB0aGF0IGlzCi0gICAgd2hhdCB0
aGlzIGV4dGVuc2lvbiBhZGRzKS4gRVNTTCAzLjAgZG9lc24ndCBzdXBwb3J0IHRoZSBicm9hZGNh
c3QgYmVjYXVzZQotICAgIGl0IGRvZXNuJ3QgaGF2ZSB0aGUgZ2xfRnJhZ0NvbG9yIHZhcmlhYmxl
IGF0IGFsbCwgYW5kIG9ubHkgaGFzIHVzZXItCi0gICAgZGVmaW5lZCBvdXQgdmFyaWFibGVzLiBU
aGlzIGV4dGVuc2lvbiBleHRlbmRzIEVTU0wgMS4wIHRvIGhhdmUgbXVsdGlwbGUKLSAgICBjb2xv
ciBvdXRwdXRzLiBCcm9hZGNhc3RpbmcgZnJvbSBnbF9GcmFnQ29sb3IgdG8gYWxsIGVuYWJsZWQg
Y29sb3IgCi0gICAgYnVmZmVycyBpcyB0aGUgbW9zdCBjb25zaXN0ZW50IHdpdGggZXhpc3Rpbmcg
ZHJhdyBidWZmZXIgZXh0ZW5zaW9ucyB0bwotICAgIGRhdGUgKGJvdGggTlZfZHJhd19idWZmZXJz
IGFuZCBkZXNrdG9wIEdMKS4KLSAgICAKLSAgIDQpIFNob3VsZCB3ZSBhbGxvdyBEcmF3QnVmZmVy
c0VYVCB0byBiZSBjYWxsZWQgd2hlbiB0aGUgZGVmYXVsdCBGQk8gaXMKLSAgICBib3VuZD8KLQot
ICAgIERJU0NVU1NJT046IE5WX2RyYXdfYnVmZmVycyBzcGVjaWZpZXMgdGhhdCBEcmF3QnVmZmVy
c05WIGVycm9ycyB3aXRoIAotICAgIElOVkFMSURfT1BFUkFUSU9OIHdoZW4gdGhlIGRlZmF1bHQg
RkJPIGlzIGJvdW5kLiBPcGVuR0wgRVMgMy4wIGFsbG93cwotICAgIERyYXdCdWZmZXJzIHRvIHRv
Z2dsZSBiZXR3ZWVuIEJBQ0sgYW5kIE5PTkUgb24gdGhlIGRlZmF1bHQgRkJPLgotCi0gICAgQW4g
aW1wbGVtZW50YXRpb24gdGhhdCBkb2VzIG5vdCBuYXRpdmVseSBzdXBwb3J0IGRpc2FibGluZyB0
aGUgZHJhd2J1ZmZlcgotICAgIG9uIHRoZSBkZWZhdWx0IEZCTyBjb3VsZCBlbXVsYXRlIHRoaXMg
YnkgZGlzYWJsaW5nIGNvbG9yIHdyaXRlcy4KLQotICAgIFJFU09MVkVEOiBBbGxvdyBEcmF3QnVm
ZmVyc0VYVCB0byBiZSBjYWxsZWQgZm9yIHRoZSBkZWZhdWx0IEZCTy4gVGhpcwotICAgIGlzIG1v
cmUgZm9yd2FyZCBsb29raW5nIGFuZCBpcyBjb21wYXRpYmxlIHdpdGggRVMgMy4wLgotCi0gICA1
KSBXaGF0IGFyZSB0aGUgcmVxdWlyZW1lbnRzIG9uIHRoZSBjb2xvciBhdHRhY2htZW50IHNpemVz
IGFuZCBmb3JtYXRzPwotICAgIAotICAgIFJFU09MVkVEOiBFUyAyLjAgcmVxdWlyZXMgdGhhdCBh
bGwgY29sb3IgYnVmZmVycyBhdHRhY2hlZCB0byBhcHBsaWNhdGlvbi0KLSAgICBjcmVhdGVkIGZy
YW1lYnVmZmVyIG9iamVjdHMgbXVzdCBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiBiaXRwbGFuZXMK
LSAgICAoQ2hhcHRlciA0IG92ZXJ2aWV3IHA5MSkuIEVTIDIuMCBhbHNvIHJlcXVpcmVzIHRoYXQg
YWxsIGF0dGFjaGVkIGltYWdlcwotICAgIGhhdmUgdGhlIHNhbWUgd2lkdGggYW5kIGhlaWdodCAo
U2VjdGlvbiA0LjQuNSBGcmFtZWJ1ZmZlciBDb21wbGV0ZW5lc3MpLgotICAgIFRoaXMgZXh0ZW5z
aW9uIGRvZXMgbm90IGxpZnQgdGhvc2UgcmVxdWlyZW1lbnRzLCBhbmQgZmFpbGluZyB0byBtZWV0
Ci0gICAgdGhlbSB3aWxsIHJlc3VsdCBpbiBhbiBpbmNvbXBsZXRlIEZCTy4KLQotICAgNikgRG9l
cyB0aGlzIGhhdmUgYW55IGludGVyYWN0aW9ucyB3aXRoIGdsQ2xlYXI/Ci0KLSAgICBSRVNPTFZF
RDogWWVzLiBXaGVuIG11bHRpcGxlIGNvbG9yIGJ1ZmZlcnMgYXJlIGVuYWJsZWQgZm9yIHdyaXRp
bmcsCi0gICAgZ2xDbGVhciBjbGVhcnMgYWxsIG9mIHRoZSBjb2xvciBidWZmZXJzLiAgQWRkZWQg
bGFuZ3VhZ2UgY2xhcmlmeWluZwotICAgIHRoYXQgZ2xDbGVhciBhbmQgZ2xDbGVhckNvbG9yIG1h
eSBhZmZlY3QgbXVsdGlwbGUgY29sb3IgYnVmZmVycy4KLQotUmV2aXNpb24gSGlzdG9yeQotCi0g
ICAgMDEvMzAvMjAxMyAgZGdrb2NoICBhZGQgaXNzdWUgNiBhbmQgY2xlYXIgaW50ZXJhY3Rpb25z
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZW5hbWVkIHRvIEVYVF9kcmF3X2J1ZmZlcnMgYmFz
ZWQgb24gZmVlZGJhY2sKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgcmVzb2x1dGlv
biBvZiBpc3N1ZSAzLgotICAgIDAxLzIzLzIwMTMgIGRna29jaCAgYWRkIHJlc29sdXRpb25zIHRv
IGlzc3VlcyAyLTQuCi0gICAgICAgICAgICAgICAgICAgICAgICBhZGQgaXNzdWUgNS4KLSAgICAg
ICAgICAgICAgICAgICAgICAgIEFkZCBUYWJsZSA0LnggYW5kIHVwZGF0ZSB2YXJpb3VzIGV4cGxp
Y2l0Ci0gICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VzIHRvIENPTE9SX0FUVEFDSE1F
TlQwLgotICAgICAgICAgICAgICAgICAgICAgICAgQWRkIGVycm9ycy4KLSAgICAxMS8xMy8yMDEy
ICBkZ2tvY2ggIGFkZCByZXZpc2lvbiBoaXN0b3J5Ci0gICAgICAgICAgICAgICAgICAgICAgICBh
ZGQgdGV4dCBmcm9tIHVwZGF0ZWQgRVMgMy4wIHNwZWMKLSAgICAgICAgICAgICAgICAgICAgICAg
IGFkZCBpc3N1ZXMgZm9yIGRpc2N1c3Npb24KLSAgICAxMC8xNi8yMDEyICBrYnIgICAgIHVwZGF0
ZSBuYW1lIHN0cmluZwotICAgIDEwLzE2LzIwMTIgIGticiAgICAgcmVtb3ZlIHJlc3RyaXRpb24g
cmVxdWlyaW5nIGRyYXcgYnVmZmVyIDAgdG8gYmUgbm9uLU5VTEwKLSAgICAxMC8xMi8yMDEyICBr
YnIgICAgIHJlbW92ZSByZWZlcmVuY2VzIHRvIEdldERvdWJsZXYgYW5kIFJlYWRCdWZmZXIKLSAg
ICAxMC8xMS8yMDEyICBrYnIgICAgIGluaXRpYWwgZHJhZnQgZXh0ZW5zaW9uCi0KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRVhUX3JvYnVzdG5lc3MudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRVhUX3JvYnVzdG5l
c3MudHh0CShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRl
bnNpb25zL0VYVF9yb2J1c3RuZXNzLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDM2NSArMCwwIEBA
Ci1OYW1lCi0KLSAgICBFWFRfcm9idXN0bmVzcwotCi1OYW1lIFN0cmluZ3MKLQotICAgIEdMX0VY
VF9yb2J1c3RuZXNzCi0KLUNvbnRyaWJ1dG9ycwotCi0gICAgRGFuaWVsIEtvY2gsIFRyYW5zR2Ft
aW5nCi0gICAgTmljb2xhcyBDYXBlbnMsIFRyYW5zR2FtaW5nCi0gICAgQ29udHJpYnV0b3JzIHRv
IEFSQl9yb2J1c3RuZXNzCi0KLUNvbnRhY3QKLQotICAgIEdyZWcgUm90aCwgTlZJRElBIChncm90
aCAnYXQnIG52aWRpYS5jb20pCi0KLVN0YXR1cwotCi0gICAgQ29tcGxldGUuCi0KLVZlcnNpb24K
LQotICAgIFZlcnNpb24gMywgMjAxMS8xMC8zMQotCi1OdW1iZXIKLQotICAgIE9wZW5HTCBFUyBF
eHRlbnNpb24gIzEwNwotCi1EZXBlbmRlbmNpZXMKLQotICAgIFRoaXMgZXh0ZW5zaW9uIGlzIHdy
aXR0ZW4gYWdhaW5zdCB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZpY2F0aW9uCi0gICAgYnV0IGNh
biBhcHBseSB0byBPcGVuR0wgRVMgMS4xIGFuZCB1cC4KLQotICAgIEVHTF9FWFRfY3JlYXRlX2Nv
bnRleHRfcm9idXN0bmVzcyBpcyB1c2VkIHRvIGRldGVybWluZSBpZiBhIGNvbnRleHQKLSAgICBp
bXBsZW1lbnRpbmcgdGhpcyBleHRlbnNpb24gc3VwcG9ydHMgcm9idXN0IGJ1ZmZlciBhY2Nlc3Ms
IGFuZCBpZiBpdAotICAgIHN1cHBvcnRzIHJlc2V0IG5vdGlmaWNhdGlvbi4gCi0KLU92ZXJ2aWV3
Ci0KLSAgICBTZXZlcmFsIHJlY2VudCB0cmVuZHMgaW4gaG93IE9wZW5HTCBpbnRlZ3JhdGVzIGlu
dG8gbW9kZXJuIGNvbXB1dGVyCi0gICAgc3lzdGVtcyBoYXZlIGNyZWF0ZWQgbmV3IHJlcXVpcmVt
ZW50cyBmb3Igcm9idXN0bmVzcyBhbmQgc2VjdXJpdHkKLSAgICBmb3IgT3BlbkdMIHJlbmRlcmlu
ZyBjb250ZXh0cy4KLSAgICAKLSAgICBBZGRpdGlvbmFsbHkgR1BVIGFyY2hpdGVjdHVyZXMgbm93
IHN1cHBvcnQgaGFyZHdhcmUgZmF1bHQgZGV0ZWN0aW9uOwotICAgIGZvciBleGFtcGxlLCB2aWRl
byBtZW1vcnkgc3VwcG9ydGluZyBFQ0MgKGVycm9yIGNvcnJlY3RpbmcgY29kZXMpCi0gICAgYW5k
IGVycm9yIGRldGVjdGlvbi4gIE9wZW5HTCBjb250ZXh0cyBzaG91bGQgYmUgY2FwYWJsZSBvZiBy
ZWNvdmVyaW5nCi0gICAgZnJvbSBoYXJkd2FyZSBmYXVsdHMgc3VjaCBhcyB1bmNvcnJlY3RhYmxl
IG1lbW9yeSBlcnJvcnMuICBBbG9uZyB3aXRoCi0gICAgcmVjb3ZlcnkgZnJvbSBzdWNoIGhhcmR3
YXJlIGZhdWx0cywgdGhlIHJlY292ZXJ5IG1lY2hhbmlzbSBjYW4KLSAgICBhbHNvIGFsbG93IHJl
Y292ZXJ5IGZyb20gdmlkZW8gbWVtb3J5IGFjY2VzcyBleGNlcHRpb25zIGFuZCBzeXN0ZW0KLSAg
ICBzb2Z0d2FyZSBmYWlsdXJlcy4gIFN5c3RlbSBzb2Z0d2FyZSBmYWlsdXJlcyBjYW4gYmUgZHVl
IHRvIGRldmljZQotICAgIGNoYW5nZXMgb3IgZHJpdmVyIGZhaWx1cmVzLgotCi0gICAgT3BlbkdM
IHF1ZXJpZXMgdGhhdCB0aGF0IHJldHVybiAod3JpdGUpIHNvbWUgbnVtYmVyIG9mIGJ5dGVzIHRv
IGEKLSAgICBidWZmZXIgaW5kaWNhdGVkIGJ5IGEgcG9pbnRlciBwYXJhbWV0ZXIgaW50cm9kdWNl
IHJpc2sgb2YgYnVmZmVyCi0gICAgb3ZlcmZsb3dzIHRoYXQgbWlnaHQgYmUgZXhwbG9pdGFibGUg
YnkgbWFsd2FyZS4gVG8gYWRkcmVzcyB0aGlzLAotICAgIHF1ZXJpZXMgd2l0aCByZXR1cm4gdmFs
dWUgc2l6ZXMgdGhhdCBhcmUgbm90IGV4cHJlc3NlZCBkaXJlY3RseSBieQotICAgIHRoZSBwYXJh
bWV0ZXJzIHRvIHRoZSBxdWVyeSBpdHNlbGYgYXJlIGdpdmVuIGFkZGl0aW9uYWwgQVBJCi0gICAg
ZnVuY3Rpb25zIHdpdGggYW4gYWRkaXRpb25hbCBwYXJhbWV0ZXIgdGhhdCBzcGVjaWZpZXMgdGhl
IG51bWJlciBvZgotICAgIGJ5dGVzIGluIHRoZSBidWZmZXIgYW5kIG5ldmVyIHdyaXRpbmcgYnl0
ZXMgYmV5b25kIHRoYXQgbGltaXQuIFRoaXMKLSAgICBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZv
ciBtdWx0aS10aHJlYWRlZCB1c2FnZSBvZiBPcGVuR0wgY29udGV4dHMKLSAgICBpbiBhICJzaGFy
ZSBncm91cCIgd2hlcmUgb25lIGNvbnRleHQgY2FuIGNoYW5nZSBvYmplY3RzIGluIHdheXMgdGhh
dAotICAgIGNhbiBjYXVzZSBidWZmZXIgb3ZlcmZsb3dzIGZvciBhbm90aGVyIGNvbnRleHQncyBP
cGVuR0wgcXVlcmllcy4KLQotICAgIFRoZSBvcmlnaW5hbCBBUkJfdmVydGV4X2J1ZmZlcl9vYmpl
Y3QgZXh0ZW5zaW9uIGluY2x1ZGVzIGFuIGlzc3VlCi0gICAgdGhhdCBleHBsaWNpdGx5IHN0YXRl
cyBwcm9ncmFtIHRlcm1pbmF0aW9uIGlzIGFsbG93ZWQgd2hlbgotICAgIG91dC1vZi1ib3VuZHMg
dmVydGV4IGJ1ZmZlciBvYmplY3QgZmV0Y2hlcyBvY2N1ci4gTW9kZXJuIGdyYXBoaWNzCi0gICAg
aGFyZHdhcmUgaXMgY2FwYWJsZSB3ZWxsLWRlZmluZWQgYmVoYXZpb3IgaW4gdGhlIGNhc2Ugb2Yg
b3V0LW9mLQotICAgIGJvdW5kcyB2ZXJ0ZXggYnVmZmVyIG9iamVjdCBmZXRjaGVzLiBPbGRlciBo
YXJkd2FyZSBtYXkgcmVxdWlyZQotICAgIGV4dHJhIGNoZWNrcyB0byBlbmZvcmNlIHdlbGwtZGVm
aW5lZCAoYW5kIHRlcm1pbmF0aW9uIGZyZWUpCi0gICAgYmVoYXZpb3IsIGJ1dCB0aGlzIGV4cGVu
c2UgaXMgd2FycmFudGVkIHdoZW4gcHJvY2Vzc2luZyBwb3RlbnRpYWxseQotICAgIHVudHJ1c3Rl
ZCBjb250ZW50LgotCi0gICAgVGhlIGludGVudCBvZiB0aGlzIGV4dGVuc2lvbiBpcyB0byBhZGRy
ZXNzIHNvbWUgc3BlY2lmaWMgcm9idXN0bmVzcwotICAgIGdvYWxzOgotCi0gICAgKiAgIEZvciBh
bGwgZXhpc3RpbmcgT3BlbkdMIHF1ZXJpZXMsIHByb3ZpZGUgYWRkaXRpb25hbCAic2FmZSIgQVBJ
cyAKLSAgICAgICAgdGhhdCBsaW1pdCBkYXRhIHdyaXR0ZW4gdG8gdXNlciBwb2ludGVycyB0byBh
IGJ1ZmZlciBzaXplIGluIAotICAgICAgICBieXRlcyB0aGF0IGlzIGFuIGV4cGxpY2l0IGFkZGl0
aW9uYWwgcGFyYW1ldGVyIG9mIHRoZSBxdWVyeS4KLQotICAgICogICBQcm92aWRlIGEgbWVjaGFu
aXNtIGZvciBhbiBPcGVuR0wgYXBwbGljYXRpb24gdG8gbGVhcm4gYWJvdXQKLSAgICAgICAgZ3Jh
cGhpY3MgcmVzZXRzIHRoYXQgYWZmZWN0IHRoZSBjb250ZXh0LiAgV2hlbiBhIGdyYXBoaWNzIHJl
c2V0Ci0gICAgICAgIG9jY3VycywgdGhlIE9wZW5HTCBjb250ZXh0IGJlY29tZXMgdW51c2FibGUg
YW5kIHRoZSBhcHBsaWNhdGlvbgotICAgICAgICBtdXN0IGNyZWF0ZSBhIG5ldyBjb250ZXh0IHRv
IGNvbnRpbnVlIG9wZXJhdGlvbi4gRGV0ZWN0aW5nIGEKLSAgICAgICAgZ3JhcGhpY3MgcmVzZXQg
aGFwcGVucyB0aHJvdWdoIGFuIGluZXhwZW5zaXZlIHF1ZXJ5LgotCi0gICAgKiAgIFByb3ZpZGUg
YW4gZW5hYmxlIHRvIGd1YXJhbnRlZSB0aGF0IG91dC1vZi1ib3VuZHMgYnVmZmVyIG9iamVjdAot
ICAgICAgICBhY2Nlc3NlcyBieSB0aGUgR1BVIHdpbGwgaGF2ZSBkZXRlcm1pbmlzdGljIGJlaGF2
aW9yIGFuZCBwcmVjbHVkZQotICAgICAgICBhcHBsaWNhdGlvbiBpbnN0YWJpbGl0eSBvciB0ZXJt
aW5hdGlvbiBkdWUgdG8gYW4gaW5jb3JyZWN0IGJ1ZmZlcgotICAgICAgICBhY2Nlc3MuICBTdWNo
IGFjY2Vzc2VzIGluY2x1ZGUgdmVydGV4IGJ1ZmZlciBmZXRjaGVzIG9mCi0gICAgICAgIGF0dHJp
YnV0ZXMgYW5kIGluZGljZXMsIGFuZCBpbmRleGVkIHJlYWRzIG9mIHVuaWZvcm1zIG9yCi0gICAg
ICAgIHBhcmFtZXRlcnMgZnJvbSBidWZmZXJzLgotCi1OZXcgUHJvY2VkdXJlcyBhbmQgRnVuY3Rp
b25zCi0KLSAgICAgICAgZW51bSBHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhUKCk7Ci0KLSAgICAg
ICAgdm9pZCBSZWFkblBpeGVsc0VYVChpbnQgeCwgaW50IHksIHNpemVpIHdpZHRoLCBzaXplaSBo
ZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBmb3JtYXQsIGVudW0gdHlw
ZSwgc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRh
KTsKLQotICAgICAgICB2b2lkIEdldG5Vbmlmb3JtZnZFWFQodWludCBwcm9ncmFtLCBpbnQgbG9j
YXRpb24sIHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9h
dCAqcGFyYW1zKTsKLSAgICAgICAgdm9pZCBHZXRuVW5pZm9ybWl2RVhUKHVpbnQgcHJvZ3JhbSwg
aW50IGxvY2F0aW9uLCBzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50ICpwYXJhbXMpOwotCi1OZXcgVG9rZW5zCi0KLSAgICBSZXR1cm5lZCBieSBHZXRHcmFw
aGljc1Jlc2V0U3RhdHVzRVhUOgotCi0gICAgICAgIE5PX0VSUk9SICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMAotICAgICAgICBHVUlMVFlfQ09OVEVYVF9SRVNF
VF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAweDgyNTMKLSAgICAgICAgSU5OT0NFTlRfQ09O
VEVYVF9SRVNFVF9FWFQgICAgICAgICAgICAgICAgICAgICAgMHg4MjU0Ci0gICAgICAgIFVOS05P
V05fQ09OVEVYVF9SRVNFVF9FWFQgICAgICAgICAgICAgICAgICAgICAgIDB4ODI1NQotCi0gICAg
QWNjZXB0ZWQgYnkgdGhlIDx2YWx1ZT4gcGFyYW1ldGVyIG9mIEdldEJvb2xlYW52LCBHZXRJbnRl
Z2VydiwKLSAgICBhbmQgR2V0RmxvYXR2OgotCi0gICAgICAgIENPTlRFWFRfUk9CVVNUX0FDQ0VT
U19FWFQgICAgICAgICAgICAgICAgICAgICAgIDB4OTBGMwotICAgICAgICBSRVNFVF9OT1RJRklD
QVRJT05fU1RSQVRFR1lfRVhUICAgICAgICAgICAgICAgICAweDgyNTYKLQotICAgIFJldHVybmVk
IGJ5IEdldEludGVnZXJ2IGFuZCByZWxhdGVkIHNpbXBsZSBxdWVyaWVzIHdoZW4gPHZhbHVlPiBp
cwotICAgIFJFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWV9FWFQgOgotCi0gICAgICAgIExPU0Vf
Q09OVEVYVF9PTl9SRVNFVF9FWFQgICAgICAgICAgICAgICAgICAgICAgIDB4ODI1MgotICAgICAg
ICBOT19SRVNFVF9OT1RJRklDQVRJT05fRVhUICAgICAgICAgICAgICAgICAgICAgICAweDgyNjEK
LQotQWRkaXRpb25zIHRvIENoYXB0ZXIgMiBvZiB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZpY2F0
aW9uIChPcGVuR0wgRVMgT3BlcmF0aW9uKQotCi1BZGQgYSBuZXcgc3Vic2VjdGlvbiBhZnRlciAy
LjUgIkdMIEVycm9ycyIgYW5kIHJlbnVtYmVyIHN1YnNlcXVlbnQKLXNlY3Rpb25zIGFjY29yZGlu
Z2x5LgotCi0gICAgMi42ICJHcmFwaGljcyBSZXNldCBSZWNvdmVyeSIKLQotICAgIENlcnRhaW4g
ZXZlbnRzIGNhbiByZXN1bHQgaW4gYSByZXNldCBvZiB0aGUgR0wgY29udGV4dC4gU3VjaCBhIHJl
c2V0Ci0gICAgY2F1c2VzIGFsbCBjb250ZXh0IHN0YXRlIHRvIGJlIGxvc3QuIFJlY292ZXJ5IGZy
b20gc3VjaCBldmVudHMKLSAgICByZXF1aXJlcyByZWNyZWF0aW9uIG9mIGFsbCBvYmplY3RzIGlu
IHRoZSBhZmZlY3RlZCBjb250ZXh0LiBUaGUKLSAgICBjdXJyZW50IHN0YXR1cyBvZiB0aGUgZ3Jh
cGhpY3MgcmVzZXQgc3RhdGUgaXMgcmV0dXJuZWQgYnkKLQotICAgICAgICBlbnVtIEdldEdyYXBo
aWNzUmVzZXRTdGF0dXNFWFQoKTsKLQotICAgIFRoZSBzeW1ib2xpYyBjb25zdGFudCByZXR1cm5l
ZCBpbmRpY2F0ZXMgaWYgdGhlIEdMIGNvbnRleHQgaGFzIGJlZW4KLSAgICBpbiBhIHJlc2V0IHN0
YXRlIGF0IGFueSBwb2ludCBzaW5jZSB0aGUgbGFzdCBjYWxsIHRvCi0gICAgR2V0R3JhcGhpY3NS
ZXNldFN0YXR1c0VYVC4gTk9fRVJST1IgaW5kaWNhdGVzIHRoYXQgdGhlIEdMIGNvbnRleHQKLSAg
ICBoYXMgbm90IGJlZW4gaW4gYSByZXNldCBzdGF0ZSBzaW5jZSB0aGUgbGFzdCBjYWxsLgotICAg
IEdVSUxUWV9DT05URVhUX1JFU0VUX0VYVCBpbmRpY2F0ZXMgdGhhdCBhIHJlc2V0IGhhcyBiZWVu
IGRldGVjdGVkCi0gICAgdGhhdCBpcyBhdHRyaWJ1dGFibGUgdG8gdGhlIGN1cnJlbnQgR0wgY29u
dGV4dC4KLSAgICBJTk5PQ0VOVF9DT05URVhUX1JFU0VUX0VYVCBpbmRpY2F0ZXMgYSByZXNldCBo
YXMgYmVlbiBkZXRlY3RlZCB0aGF0Ci0gICAgaXMgbm90IGF0dHJpYnV0YWJsZSB0byB0aGUgY3Vy
cmVudCBHTCBjb250ZXh0LgotICAgIFVOS05PV05fQ09OVEVYVF9SRVNFVF9FWFQgaW5kaWNhdGVz
IGEgZGV0ZWN0ZWQgZ3JhcGhpY3MgcmVzZXQgd2hvc2UKLSAgICBjYXVzZSBpcyB1bmtub3duLgot
Ci0gICAgSWYgYSByZXNldCBzdGF0dXMgb3RoZXIgdGhhbiBOT19FUlJPUiBpcyByZXR1cm5lZCBh
bmQgc3Vic2VxdWVudAotICAgIGNhbGxzIHJldHVybiBOT19FUlJPUiwgdGhlIGNvbnRleHQgcmVz
ZXQgd2FzIGVuY291bnRlcmVkIGFuZAotICAgIGNvbXBsZXRlZC4gSWYgYSByZXNldCBzdGF0dXMg
aXMgcmVwZWF0ZWRseSByZXR1cm5lZCwgdGhlIGNvbnRleHQgbWF5Ci0gICAgYmUgaW4gdGhlIHBy
b2Nlc3Mgb2YgcmVzZXR0aW5nLgotCi0gICAgUmVzZXQgbm90aWZpY2F0aW9uIGJlaGF2aW9yIGlz
IGRldGVybWluZWQgYXQgY29udGV4dCBjcmVhdGlvbiB0aW1lLAotICAgIGFuZCBtYXkgYmUgcXVl
cmllZCBieSBjYWxsaW5nIEdldEludGVnZXJ2IHdpdGggdGhlIHN5bWJvbGljIGNvbnN0YW50Ci0g
ICAgUkVTRVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZX0VYVC4KLQotICAgIElmIHRoZSByZXNldCBu
b3RpZmljYXRpb24gYmVoYXZpb3IgaXMgTk9fUkVTRVRfTk9USUZJQ0FUSU9OX0VYVCwKLSAgICB0
aGVuIHRoZSBpbXBsZW1lbnRhdGlvbiB3aWxsIG5ldmVyIGRlbGl2ZXIgbm90aWZpY2F0aW9uIG9m
IHJlc2V0Ci0gICAgZXZlbnRzLCBhbmQgR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCB3aWxsIGFs
d2F5cyByZXR1cm4KLSAgICBOT19FUlJPUltmbjFdLgotICAgICAgIFtmbjE6IEluIHRoaXMgY2Fz
ZSBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IGltcGxlbWVudGF0aW9ucyBzaG91bGQKLSAgICAgICAg
bm90IGFsbG93IGxvc3Mgb2YgY29udGV4dCBzdGF0ZSBubyBtYXR0ZXIgd2hhdCBldmVudHMgb2Nj
dXIuCi0gICAgICAgIEhvd2V2ZXIsIHRoaXMgaXMgb25seSBhIHJlY29tbWVuZGF0aW9uLCBhbmQg
Y2Fubm90IGJlIHJlbGllZAotICAgICAgICB1cG9uIGJ5IGFwcGxpY2F0aW9ucy5dCi0KLSAgICBJ
ZiB0aGUgYmVoYXZpb3IgaXMgTE9TRV9DT05URVhUX09OX1JFU0VUX0VYVCwgYSBncmFwaGljcyBy
ZXNldCB3aWxsCi0gICAgcmVzdWx0IGluIHRoZSBsb3NzIG9mIGFsbCBjb250ZXh0IHN0YXRlLCBy
ZXF1aXJpbmcgdGhlIHJlY3JlYXRpb24gb2YKLSAgICBhbGwgYXNzb2NpYXRlZCBvYmplY3RzLiBJ
biB0aGlzIGNhc2UgR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCBtYXkKLSAgICByZXR1cm4gYW55
IG9mIHRoZSB2YWx1ZXMgZGVzY3JpYmVkIGFib3ZlLgotCi0gICAgSWYgYSBncmFwaGljcyByZXNl
dCBub3RpZmljYXRpb24gb2NjdXJzIGluIGEgY29udGV4dCwgYSBub3RpZmljYXRpb24KLSAgICBt
dXN0IGFsc28gb2NjdXIgaW4gYWxsIG90aGVyIGNvbnRleHRzIHdoaWNoIHNoYXJlIG9iamVjdHMg
d2l0aCB0aGF0Ci0gICAgY29udGV4dFtmbjJdLgotICAgICAgIFtmbjI6IFRoZSB2YWx1ZXMgcmV0
dXJuZWQgYnkgR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCBpbiB0aGUKLSAgICAgICAgZGlmZmVy
ZW50IGNvbnRleHRzIG1heSBkaWZmZXIuXQotCi0gICAgQWRkIHRvIFNlY3Rpb24gMi44ICJWZXJ0
ZXggQXJyYXlzIiBiZWZvcmUgc3Vic2VjdGlvbiAiVHJhbnNmZXJyaW5nCi0gICAgQXJyYXkgRWxl
bWVudHMiCi0KLSAgICBSb2J1c3QgYnVmZmVyIGFjY2VzcyBpcyBlbmFibGVkIGJ5IGNyZWF0aW5n
IGEgY29udGV4dCB3aXRoIHJvYnVzdAotICAgIGFjY2VzcyBlbmFibGVkIHRocm91Z2ggdGhlIHdp
bmRvdyBzeXN0ZW0gYmluZGluZyBBUElzLiBXaGVuIGVuYWJsZWQsCi0gICAgaW5kaWNlcyB3aXRo
aW4gdGhlIHZlcnRleCBhcnJheSB0aGF0IGxpZSBvdXRzaWRlIHRoZSBhcnJheXMgZGVmaW5lZAot
ICAgIGZvciBlbmFibGVkIGF0dHJpYnV0ZXMgcmVzdWx0IGluIHVuZGVmaW5lZCB2YWx1ZXMgZm9y
IHRoZQotICAgIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlcywgYnV0IGNhbm5vdCByZXN1bHQgaW4g
YXBwbGljYXRpb24gZmFpbHVyZS4KLSAgICBSb2J1c3QgYnVmZmVyIGFjY2VzcyBiZWhhdmlvciBt
YXkgYmUgcXVlcmllZCBieSBjYWxsaW5nIEdldEludGVnZXJ2Ci0gICAgd2l0aCB0aGUgc3ltYm9s
aWMgY29uc3RhbnQgQ09OVEVYVF9ST0JVU1RfQUNDRVNTX0VYVC4KLQotQWRkaXRpb25zIHRvIENo
YXB0ZXIgNCBvZiB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZpY2F0aW9uIChQZXItRnJhZ21lbnQK
LU9wZXJhdGlvbnMgYW5kIHRoZSBGcmFtZSBCdWZmZXIpCi0KLSAgICBNb2RpZnkgc2VjdGlvbiA0
LjMuMSAiUmVhZGluZyBQaXhlbHMiCi0KLSAgICBQaXhlbHMgYXJlIHJlYWQgdXNpbmcKLQotICAg
ICAgICB2b2lkIFJlYWRQaXhlbHMoaW50IHgsIGludCB5LCBzaXplaSB3aWR0aCwgc2l6ZWkgaGVp
Z2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBmb3JtYXQsIGVudW0gdHlwZSwgdm9p
ZCAqZGF0YSk7Ci0gICAgICAgIHZvaWQgUmVhZG5QaXhlbHNFWFQoaW50IHgsIGludCB5LCBzaXpl
aSB3aWR0aCwgc2l6ZWkgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBm
b3JtYXQsIGVudW0gdHlwZSwgc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQgKmRhdGEpOwotCi0gICAgQWRkIHRvIHRoZSBkZXNjcmlwdGlvbiBvZiBSZWFkUGl4
ZWxzOgotCi0gICAgUmVhZG5QaXhlbHNFWFQgYmVoYXZlcyBpZGVudGljYWxseSB0byBSZWFkUGl4
ZWxzIGV4Y2VwdCB0aGF0IGl0IGRvZXMKLSAgICBub3Qgd3JpdGUgbW9yZSB0aGFuIDxidWZTaXpl
PiBieXRlcyBpbnRvIDxkYXRhPi4gSWYgdGhlIGJ1ZmZlciBzaXplCi0gICAgcmVxdWlyZWQgdG8g
ZmlsbCBhbGwgdGhlIHJlcXVlc3RlZCBkYXRhIGlzIGdyZWF0ZXIgdGhhbiA8YnVmU2l6ZT4gYW4K
LSAgICBJTlZBTElEX09QRVJBVElPTiBlcnJvciBpcyBnZW5lcmF0ZWQgYW5kIDxkYXRhPiBpcyBu
b3QgYWx0ZXJlZC4KLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgNSBvZiB0aGUgT3BlbkdMIEVTIDIu
MCBTcGVjaWZpY2F0aW9uIChTcGVjaWFsCi1GdW5jdGlvbnMpOgotCi0gICAgTm9uZQotCi1BZGRp
dGlvbnMgdG8gQ2hhcHRlciA2IG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmljYXRpb24gKFN0
YXRlIGFuZAotU3RhdGUgUmVxdWVzdHMpCi0KLSAgICBNb2RpZnkgU2VjdGlvbiA2LjEuOCAiU2hh
ZGVyIGFuZCBQcm9ncmFtIFF1ZXJpZXMiCi0KLSAgICBUaGUgY29tbWFuZHMKLQotICAgICAgICB2
b2lkIEdldFVuaWZvcm1mdih1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgZmxvYXQgKnBhcmFt
cyk7Ci0gICAgICAgIHZvaWQgR2V0blVuaWZvcm1mdkVYVCh1aW50IHByb2dyYW0sIGludCBsb2Nh
dGlvbiwgc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0
ICpwYXJhbXMpOwotICAgICAgICB2b2lkIEdldFVuaWZvcm1pdih1aW50IHByb2dyYW0sIGludCBs
b2NhdGlvbiwgaW50ICpwYXJhbXMpOwotICAgICAgICB2b2lkIEdldG5Vbmlmb3JtaXZFWFQodWlu
dCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgKnBhcmFtcyk7Ci0KLSAgICByZXR1cm4gdGhlIHZhbHVlIG9yIHZh
bHVlcyBvZiB0aGUgdW5pZm9ybSBhdCBsb2NhdGlvbiA8bG9jYXRpb24+Ci0gICAgZm9yIHByb2dy
YW0gb2JqZWN0IDxwcm9ncmFtPiBpbiB0aGUgYXJyYXkgPHBhcmFtcz4uIENhbGxpbmcKLSAgICBH
ZXRuVW5pZm9ybWZ2RVhUIG9yIEdldG5Vbmlmb3JtaXZFWFQgZW5zdXJlcyB0aGF0IG5vIG1vcmUg
dGhhbgotICAgIDxidWZTaXplPiBieXRlcyBhcmUgd3JpdHRlbiBpbnRvIDxwYXJhbXM+LiBJZiB0
aGUgYnVmZmVyIHNpemUKLSAgICByZXF1aXJlZCB0byBmaWxsIGFsbCB0aGUgcmVxdWVzdGVkIGRh
dGEgaXMgZ3JlYXRlciB0aGFuIDxidWZTaXplPiBhbgotICAgIElOVkFMSURfT1BFUkFUSU9OIGVy
cm9yIGlzIGdlbmVyYXRlZCBhbmQgPHBhcmFtcz4gaXMgbm90IGFsdGVyZWQuCi0gICAgLi4uCi0K
LUFkZGl0aW9ucyB0byBUaGUgT3BlbkdMIEVTIFNoYWRpbmcgTGFuZ3VhZ2UgU3BlY2lmaWNhdGlv
biwgVmVyc2lvbiAxLgotCi0gICAgQXBwZW5kIHRvIHRoZSB0aGlyZCBwYXJhZ3JhcGggb2Ygc2Vj
dGlvbiA0LjEuOSAiQXJyYXlzIgotCi0gICAgSWYgcm9idXN0IGJ1ZmZlciBhY2Nlc3MgaXMgZW5h
YmxlZCB2aWEgdGhlIE9wZW5HTCBFUyBBUEksIHN1Y2gKLSAgICBpbmRleGluZyBtdXN0IG5vdCBy
ZXN1bHQgaW4gYWJub3JtYWwgcHJvZ3JhbSB0ZXJtaW5hdGlvbi4gVGhlCi0gICAgcmVzdWx0cyBh
cmUgc3RpbGwgdW5kZWZpbmVkLCBidXQgaW1wbGVtZW50YXRpb25zIGFyZSBlbmNvdXJhZ2VkIHRv
Ci0gICAgcHJvZHVjZSB6ZXJvIHZhbHVlcyBmb3Igc3VjaCBhY2Nlc3Nlcy4KLQotSW50ZXJhY3Rp
b25zIHdpdGggRUdMX0VYVF9jcmVhdGVfY29udGV4dF9yb2J1c3RuZXNzCi0KLSAgICBJZiB0aGUg
RUdMIHdpbmRvdy1zeXN0ZW0gYmluZGluZyBBUEkgaXMgdXNlZCB0byBjcmVhdGUgYSBjb250ZXh0
LAotICAgIHRoZSBFR0xfRVhUX2NyZWF0ZV9jb250ZXh0X3JvYnVzdG5lc3MgZXh0ZW5zaW9uIGlz
IHN1cHBvcnRlZCwgYW5kCi0gICAgdGhlIGF0dHJpYnV0ZSBFR0xfQ09OVEVYVF9PUEVOR0xfUk9C
VVNUX0FDQ0VTU19FWFQgaXMgc2V0IHRvCi0gICAgRUdMX1RSVUUgd2hlbiBlZ2xDcmVhdGVDb250
ZXh0IGlzIGNhbGxlZCwgdGhlIHJlc3VsdGluZyBjb250ZXh0IHdpbGwKLSAgICBwZXJmb3JtIHJv
YnVzdCBidWZmZXIgYWNjZXNzIGFzIGRlc2NyaWJlZCBhYm92ZSBpbiBzZWN0aW9uIDIuOCwgYW5k
Ci0gICAgdGhlIENPTlRFWFRfUk9CVVNUX0FDQ0VTU19FWFQgcXVlcnkgd2lsbCByZXR1cm4gR0xf
VFJVRSBhcyBkZXNjcmliZWQKLSAgICBhYm92ZSBpbiBzZWN0aW9uIDYuMS41LgotCi0gICAgSWYg
dGhlIEVHTCB3aW5kb3ctc3lzdGVtIGJpbmRpbmcgQVBJIGlzIHVzZWQgdG8gY3JlYXRlIGEgY29u
dGV4dCBhbmQKLSAgICB0aGUgRUdMX0VYVF9jcmVhdGVfY29udGV4dF9yb2J1c3RuZXNzIGV4dGVu
c2lvbiBpcyBzdXBwb3J0ZWQsIHRoZW4KLSAgICB0aGUgdmFsdWUgb2YgYXR0cmlidXRlIEVHTF9D
T05URVhUX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWV9FWFQKLSAgICBkZXRlcm1pbmVzIHRo
ZSByZXNldCBub3RpZmljYXRpb24gYmVoYXZpb3IgYW5kIHRoZSB2YWx1ZSBvZgotICAgIFJFU0VU
X05PVElGSUNBVElPTl9TVFJBVEVHWV9FWFQsIGFzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDIuNi4K
LQotRXJyb3JzCi0KLSAgICBSZWFkblBpeGVsc0VYVCwgR2V0blVuaWZvcm1mdkVYVCwgYW5kIEdl
dG5Vbmlmb3JtaXZFWFQgc2hhcmUgYWxsIHRoZQotICAgIGVycm9ycyBvZiB0aGVpciB1bnNpemVk
IGJ1ZmZlciBxdWVyeSBjb3VudGVycGFydHMgd2l0aCB0aGUgYWRkaXRpb24KLSAgICB0aGF0IElO
VkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiB0aGUgYnVmZmVyIHNpemUgcmVxdWlyZWQg
dG8KLSAgICBmaWxsIGFsbCB0aGUgcmVxdWVzdGVkIGRhdGEgaXMgZ3JlYXRlciB0aGFuIDxidWZT
aXplPi4KLQotTmV3IEltcGxlbWVudGF0aW9uIERlcGVuZGVudCBTdGF0ZQotCi0gICAgR2V0IFZh
bHVlICAgICAgICAgICAgICAgICAgICAgICBUeXBlICBHZXQgQ29tbWFuZCAgICAgTWluaW11bSBW
YWx1ZSAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgIFNlYy4gIEF0dHJpYnV0ZQotICAg
IC0tLS0tLS0tLSAgICAgICAgICAgICAgICAgICAgICAgLS0tLSAgLS0tLS0tLS0tLS0gICAgIC0t
LS0tLS0tLS0tLS0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAtLS0tLSAtLS0tLS0t
LS0KLSAgICBDT05URVhUX1JPQlVTVF9BQ0NFU1NfRVhUICAgICAgIEIgICAgIEdldEludGVnZXJ2
ICAgICAtICAgICAgICAgICAgICAgIFJvYnVzdCBhY2Nlc3MgZW5hYmxlZCAgICAgICAgNi4xLjUg
LQotICAgIFJFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWV9FWFQgWl8yICAgR2V0SW50ZWdlcnYg
ICAgIFNlZSBzZWMuIDIuNiAgICAgUmVzZXQgbm90aWZpY2F0aW9uIGJlaGF2aW9yICAyLjYgICAt
Ci0KLUlzc3VlcwotCi0KLSAgICAxLiAgV2hhdCBzaG91bGQgdGhpcyBleHRlbnNpb24gYmUgY2Fs
bGVkPwotCi0gICAgICAgIFJFU09MVkVEOiBFWFRfcm9idXN0bmVzcwotCi0gICAgICAgIFNpbmNl
IHRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgYSB2ZXJzaW9uIG9mIEFSQl9yb2J1c3RuZXNzIGZvcgot
ICAgICAgICBPcGVuR0wgRVMsIGl0IHNob3VsZCBiZSBuYW1lZCBhY2NvcmRpbmdseS4KLQotICAg
IDIuICBIb3cgZG9lcyB0aGlzIGV4dGVuc2lvbiBkaWZmZXIgZnJvbSBEZXNrdG9wIEdMJ3MgQVJC
X3JvYnVzdG5lc3M/Ci0KLSAgICAgICAgUkVTT0xWRUQ6IEJlY2F1c2UgRUdMX0VYVF9jcmVhdGVf
Y29udGV4dF9yb2J1c3RuZXNzIHVzZXMgYQotCXNlcGFyYXRlIGF0dHJpYnV0ZSB0byBlbmFibGUg
cm9idXN0IGJ1ZmZlciBhY2Nlc3MsIGEKLQljb3JyZXNwb25kaW5nIHF1ZXJ5IGlzIGFkZGVkIGhl
cmUuCi0KLSAgICAzLiAgU2hvdWxkIHdlIHByb3ZpZGUgYSBjb250ZXh0IGNyZWF0aW9uIG1lY2hh
bmlzbSB0byBlbmFibGUgdGhpcyBleHRlbnNpb24/Ci0KLSAgICAgICAgUkVTT0xWRUQuIFllcy4K
LQotICAgICAgICBDdXJyZW50bHksIEVHTF9FWFRfY3JlYXRlX2NvbnRleHRfcm9idXN0bmVzcyBw
cm92aWRlcyB0aGlzCi0gICAgICAgIG1lY2hhbmlzbSB2aWEgdHdvIHVuaXF1ZSBhdHRyaWJ1dGVz
LiBUaGVzZSBhdHRyaWJ1dGVzIGRpZmZlcgotCWZyb20gdGhvc2Ugc3BlY2lmaWVkIGJ5IEtIUl9j
cmVhdGVfY29udGV4dCB0byBhbGxvdyBmb3IKLQlkaWZmZXJlbmNlcyBpbiB3aGF0IGZ1bmN0aW9u
YWxpdHkgdGhvc2UgYXR0cmlidXRlcyBkZWZpbmUuCi0gICAgICAgIAotICAgIDQuIFdoYXQgY2Fu
IGNhdXNlIGEgZ3JhcGhpY3MgcmVzZXQ/Ci0KLSAgICAgICBFaXRoZXIgdXNlciBvciBpbXBsZW1l
bnRvciBlcnJvcnMgbWF5IHJlc3VsdCBpbiBhIGdyYXBoaWNzIHJlc2V0LgotICAgICAgIElmIHRo
ZSBhcHBsaWNhdGlvbiBhdHRlbXB0cyB0byBwZXJmb3JtIGEgcmVuZGVyaW5nIHRoYXQgdGFrZXMg
dG9vIGxvbmcKLSAgICAgICB3aGV0aGVyIGR1ZSB0byBhbiBpbmZpbml0ZSBsb29wIGluIGEgc2hh
ZGVyIG9yIGV2ZW4ganVzdCBhIHJlbmRlcmluZwotICAgICAgIG9wZXJhdGlvbiB0aGF0IHRha2Vz
IHRvbyBsb25nIG9uIHRoZSBnaXZlbiBoYXJkd2FyZS4gSW1wbGVtZW50YXRpb24KLSAgICAgICBl
cnJvcnMgbWF5IHByb2R1Y2UgYmFkbHkgZm9ybWVkIGhhcmR3YXJlIGNvbW1hbmRzLiBNZW1vcnkg
YWNjZXNzIGVycm9ycwotICAgICAgIG1heSByZXN1bHQgZnJvbSB1c2VyIG9yIGltcGxlbWVudG9y
IG1pc3Rha2VzLiBPbiBzb21lIHN5c3RlbXMsIHBvd2VyCi0gICAgICAgbWFuYWdlbWVudCBldmVu
dHMgc3VjaCBhcyBzeXN0ZW0gc2xlZXAsIHNjcmVlbiBzYXZlciBhY3RpdmF0aW9uLCBvcgotICAg
ICAgIHByZS1lbXB0aW9uIG1heSBhbHNvIGNvbnRleHQgcmVzZXRzIHRvIG9jY3VyLiBBbnkgb2Yg
dGhlc2UgZXZlbnRzIG1heQotICAgICAgIHJlc3VsdCBpbiBhIGdyYXBoaWNzIHJlc2V0IGV2ZW50
IHRoYXQgd2lsbCBiZSBkZXRlY3RhYmxlIGJ5IHRoZQotICAgICAgIG1lY2hhbmlzbSBkZXNjcmli
ZWQgaW4gdGhpcyBleHRlbnNpb24uCi0KLSAgICA1LiBIb3cgc2hvdWxkIHRoZSBhcHBsaWNhdGlv
biByZWFjdCB0byBhIHJlc2V0IGNvbnRleHQgZXZlbnQ/Ci0KLSAgICAgICBSRVNPTFZFRDogRm9y
IHRoaXMgZXh0ZW5zaW9uLCB0aGUgYXBwbGljYXRpb24gaXMgZXhwZWN0ZWQgdG8gcXVlcnkKLSAg
ICAgICB0aGUgcmVzZXQgc3RhdHVzIHVudGlsIE5PX0VSUk9SIGlzIHJldHVybmVkLiBJZiBhIHJl
c2V0IGlzIGVuY291bnRlcmVkLAotICAgICAgIGF0IGxlYXN0IG9uZSAqUkVTRVQqIHN0YXR1cyB3
aWxsIGJlIHJldHVybmVkLiBPbmNlIE5PX0VSUk9SIGlzIGFnYWluCi0gICAgICAgZW5jb3VudGVy
ZWQsIHRoZSBhcHBsaWNhdGlvbiBjYW4gc2FmZWx5IGRlc3Ryb3kgdGhlIG9sZCBjb250ZXh0IGFu
ZAotICAgICAgIGNyZWF0ZSBhIG5ldyBvbmUuCi0KLSAgICAgICBBZnRlciBhIHJlc2V0IGV2ZW50
LCBhcHBzIHNob3VsZCBub3QgdXNlIGEgY29udGV4dCBmb3IgYW55IHB1cnBvc2UKLSAgICAgICBv
dGhlciB0aGFuIGRldGVybWluaW5nIGl0cyByZXNldCBzdGF0dXMsIGFuZCB0aGVuIGRlc3Ryb3lp
bmcgaXQuIElmIGEKLSAgICAgICBjb250ZXh0IHJlY2VpdmVzIGEgcmVzZXQgZXZlbnQsIGFsbCBv
dGhlciBjb250ZXh0cyBpbiBpdHMgc2hhcmUgZ3JvdXAKLSAgICAgICB3aWxsIGFsc28gcmVjZWl2
ZSByZXNldCBldmVudHMsIGFuZCBzaG91bGQgYmUgZGVzdHJveWVkIGFuZAotICAgICAgIHJlY3Jl
YXRlZC4KLQotICAgICAgIEFwcHMgc2hvdWxkIGJlIGNhdXRpb3VzIGluIGludGVycHJldGluZyB0
aGUgR1VJTFRZIGFuZCBJTk5PQ0VOVCByZXNldAotICAgICAgIHN0YXR1c2VzLiBUaGVzZSBhcmUg
Z3VpZGVsaW5lcyB0byB0aGUgaW1tZWRpYXRlIGNhdXNlIG9mIGEgcmVzZXQsIGJ1dAotICAgICAg
IG5vdCBndWFyYW50ZWVzIG9mIHRoZSB1bHRpbWF0ZSBjYXVzZS4KLQotICAgIDYuIElmIGEgZ3Jh
cGhpY3MgcmVzZXQgb2NjdXJzIGluIGEgc2hhcmVkIGNvbnRleHQsIHdoYXQgaGFwcGVucyBpbgot
ICAgICAgIHNoYXJlZCBjb250ZXh0cz8KLQotICAgICAgIFJFU09MVkVEOiBBIHJlc2V0IGluIG9u
ZSBjb250ZXh0IHdpbGwgcmVzdWx0IGluIGEgcmVzZXQgaW4gYWxsIG90aGVyCi0gICAgICAgY29u
dGV4dHMgaW4gaXRzIHNoYXJlIGdyb3VwLiAKLQotICAgIDcuIEhvdyBjYW4gYW4gYXBwbGljYXRp
b24gcXVlcnkgZm9yIHJvYnVzdCBidWZmZXIgYWNjZXNzIHN1cHBvcnQsCi0gICAgICAgc2luY2Ug
dGhpcyBpcyBub3cgZGV0ZXJtaW5lZCBhdCBjb250ZXh0IGNyZWF0aW9uIHRpbWU/Ci0KLSAgICAg
ICBSRVNPTFZFRC4gVGhlIGFwcGxpY2F0aW9uIGNhbiBxdWVyeSB0aGUgdmFsdWUgb2YgUk9CVVNU
X0FDQ0VTU19FWFQKLSAgICAgICB1c2luZyBHZXRJbnRlZ2Vydi4gSWYgdHJ1ZSwgdGhpcyBmdW5j
dGlvbmFsaXR5IGlzIGVuYWJsZWQuCi0KLSAgICA4LiBIb3cgaXMgdGhlIHJlc2V0IG5vdGlmaWNh
dGlvbiBiZWhhdmlvciBjb250cm9sbGVkPwotCi0gICAgICAgUkVTT0xWRUQ6IFJlc2V0IG5vdGlm
aWNhdGlvbiBiZWhhdmlvciBpcyBkZXRlcm1pbmVkIGF0IGNvbnRleHQKLSAgICAgICBjcmVhdGlv
biB0aW1lIHVzaW5nIEVHTC9HTFgvV0dML2V0Yy4gbWVjaGFuaXNtcy4gSW4gb3JkZXIgdGhhdCBz
aGFyZWQKLSAgICAgICBvYmplY3RzIGJlIGhhbmRsZWQgcHJlZGljdGFibHksIGEgY29udGV4dCBj
YW5ub3Qgc2hhcmUgd2l0aAotICAgICAgIGFub3RoZXIgY29udGV4dCB1bmxlc3MgYm90aCBoYXZl
IHRoZSBzYW1lIHJlc2V0IG5vdGlmaWNhdGlvbgotICAgICAgIGJlaGF2aW9yLgotCi0KLVJldmlz
aW9uIEhpc3RvcnkKLQotICAgIFJldi4gICAgRGF0ZSAgICAgICBBdXRob3IgICAgIENoYW5nZXMK
LSAgICAtLS0tICAtLS0tLS0tLS0tLS0gLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAzICAgMzEgT2N0ICAyMDExIGdyb3RoICAgICAgUmV2
ZXJ0ZWQgdG8gYXR0cmlidXRlIGZvciByb2J1c3QgYWNjZXNzLiBOb3cgaXQncyBhCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGFuaW9uIHRvIHJhdGhlciB0aGFuIHN1YnNl
dCBvZiBLSFJfY3JlYXRlX2NvbnRleHQKLSAgICAgIDIgICAxMSBPY3QgIDIwMTEgZ3JvdGggICAg
ICBNZXJnZWQgQU5HTEUgYW5kIE5WIGV4dGVuc2lvbnMuCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ29udmVydCB0byB1c2luZyBmbGFnIHRvIGluZGljYXRlIHJvYnVzdCBhY2Nl
c3MuCi0gICAgICAxICAgMTUgSnVseSAyMDExIGdyb3RoICAgICAgSW5pdGlhbCB2ZXJzaW9uCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VYVF9zaGFkZXJfZnJhbWVi
dWZmZXJfZmV0Y2gudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4
dGVuc2lvbnMvRVhUX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaC50eHQJKHJldmlzaW9uIDIwNzgw
NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRVhUX3NoYWRlcl9mcmFt
ZWJ1ZmZlcl9mZXRjaC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwyNjMgKzAsMCBAQAotTmFtZQot
Ci0gICAgRVhUX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaAotCi1OYW1lIFN0cmluZ3MKLQotICAg
IEdMX0VYVF9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2gKLQotQ29udGFjdAotCi0gICAgQmVuaiBM
aXBjaGFrLCBBcHBsZSAobGlwY2hhayAnYXQnIGFwcGxlLmNvbSkKLQotU3RhdHVzCi0KLSAgICBD
b21wbGV0ZQotCi1WZXJzaW9uCi0KLSAgICBMYXN0IE1vZGlmaWVkIERhdGU6IE1heSAyOCwgMjAx
MwotICAgIEF1dGhvciBSZXZpc2lvbjogNAotCi1OdW1iZXIKLQotICAgIE9wZW5HTCBFUyBFeHRl
bnNpb24gIzEyMgotCi1EZXBlbmRlbmNpZXMKLQotICAgIE9wZW5HTCBFUyAyLjAgaXMgcmVxdWly
ZWQuCi0gICAgCi0gICAgVGhpcyBzcGVjaWZpY2F0aW9uIGlzIHdyaXR0ZW4gYWdhaW5zdCB0aGUg
T3BlbkdMIEVTIDIuMC4yNCBzcGVjaWZpY2F0aW9uLgotICAgIFRoaXMgZXh0ZW5zaW9uIGlzIHdy
aXR0ZW4gYWdhaW5zdCB0aGUgT3BlbkdMIEVTIFNoYWRpbmcgTGFuZ3VhZ2UgMS4wLjE3Ci0gICAg
c3BlY2lmaWNhdGlvbi4KLSAgICAKLSAgICBPcGVuR0wgRVMgMy4wIGFmZmVjdHMgdGhlIGRlZmlu
aXRpb24gb2YgdGhpcyBleHRlbnNpb24uCi0KLU92ZXJ2aWV3Ci0KLSAgICBDb252ZW50aW9uYWwg
T3BlbkdMIGJsZW5kaW5nIHByb3ZpZGVzIGEgY29uZmlndXJhYmxlIHNlcmllcyBvZiBvcGVyYXRp
b25zCi0gICAgdGhhdCBjYW4gYmUgdXNlZCB0byBjb21iaW5lIHRoZSBvdXRwdXQgdmFsdWVzIGZy
b20gYSBmcmFnbWVudCBzaGFkZXIgd2l0aAotICAgIHRoZSB2YWx1ZXMgYWxyZWFkeSBpbiB0aGUg
ZnJhbWVidWZmZXIuIFdoaWxlIHRoZXNlIG9wZXJhdGlvbnMgYXJlCi0gICAgc3VpdGFibGUgZm9y
IGJhc2ljIGltYWdlIGNvbXBvc2l0aW5nLCBvdGhlciBjb21wb3NpdGluZyBvcGVyYXRpb25zIG9y
Ci0gICAgb3BlcmF0aW9ucyB0aGF0IHRyZWF0IGZyYWdtZW50IG91dHB1dCBhcyBzb21ldGhpbmcg
b3RoZXIgdGhhbiBhIGNvbG9yCi0gICAgKG5vcm1hbHMsIGZvciBpbnN0YW5jZSkgbWF5IG5vdCBi
ZSBleHByZXNzaWJsZSB3aXRob3V0IG11bHRpcGxlIHBhc3NlcyBvcgotICAgIHJlbmRlci10by10
ZXh0dXJlIG9wZXJhdGlvbnMuCi0KLSAgICBUaGlzIGV4dGVuc2lvbiBwcm92aWRlcyBhIG1lY2hh
bmlzbSB3aGVyZWJ5IGEgZnJhZ21lbnQgc2hhZGVyIG1heSByZWFkCi0gICAgZXhpc3RpbmcgZnJh
bWVidWZmZXIgZGF0YSBhcyBpbnB1dC4gVGhpcyBjYW4gYmUgdXNlZCB0byBpbXBsZW1lbnQKLSAg
ICBjb21wb3NpdGluZyBvcGVyYXRpb25zIHRoYXQgd291bGQgaGF2ZSBiZWVuIGluY29udmVuaWVu
dCBvciBpbXBvc3NpYmxlIHdpdGgKLSAgICBmaXhlZC1mdW5jdGlvbiBibGVuZGluZy4gSXQgY2Fu
IGFsc28gYmUgdXNlZCB0byBhcHBseSBhIGZ1bmN0aW9uIHRvIHRoZQotICAgIGZyYW1lYnVmZmVy
IGNvbG9yLCBieSB3cml0aW5nIGEgc2hhZGVyIHdoaWNoIHVzZXMgdGhlIGV4aXN0aW5nIGZyYW1l
YnVmZmVyCi0gICAgY29sb3IgYXMgaXRzIG9ubHkgaW5wdXQuCi0KLUlzc3VlcwotCi0gICAgMS4g
SG93IGlzIGZyYW1lYnVmZmVyIGRhdGEgdHJlYXRlZCBkdXJpbmcgbXVsdGlzYW1wbGUgcmVuZGVy
aW5nPwotICAgIAotICAgIFJFU09MVkVEOiBSZWFkaW5nIHRoZSB2YWx1ZSBvZiBnbF9MYXN0RnJh
Z0RhdGEgcHJvZHVjZXMgYSBkaWZmZXJlbnQKLSAgICByZXN1bHQgZm9yIGVhY2ggc2FtcGxlLiBU
aGlzIGltcGxpZXMgdGhhdCBhbGwgb3IgcGFydCBvZiB0aGUgc2hhZGVyIGJlIHJ1bgotICAgIG9u
Y2UgZm9yIGVhY2ggc2FtcGxlLiBJbnB1dCB2YWx1ZXMgdG8gdGhlIHNoYWRlciBmcm9tIGV4aXN0
aW5nIHZhcmlhYmxlcwotICAgIGluIEdMU0wgRVMgcmVtYWluIGlkZW50aWNhbCBhY3Jvc3Mgc2Ft
cGxlcy4KLSAgICAKLSAgICAyLiBIb3cgZG9lcyB0aGUgdXNlIG9mIGdsX0xhc3RGcmFnRGF0YSBp
bnRlcmFjdCB3aXRoIGZyYWdtZW50IGRpc2NhcmQ/Ci0gICAgCi0gICAgUkVTT0xWRUQ6IEhhcmR3
YXJlIG1heSBub3QgbmVjZXNzYXJpbHkgc3VwcG9ydCBkaXNjYXJkaW5nIG9uIHNhbXBsZQotICAg
IGdyYW51bGFyaXR5LiBUaGVyZWZvcmUsIHRocmVlIG9wdGlvbnMgd2VyZSBjb25zaWRlcmVkIGZv
ciB0aGlzCi0gICAgZnVuY3Rpb25hbGl0eToKLSAgICAKLSAgICAgICAgQSkgQWxsb3cgZGlzY2Fy
ZCBiYXNlZCBvbiB2YXJpYWJsZXMgY2FsY3VsYXRlZCB1c2luZyB0aGUgZnJhbWVidWZmZXIKLSAg
ICAgICAgICAgY29sb3Igd2hlbiBtdWx0aXNhbXBsZSByYXN0ZXJpemF0aW9uIGlzIGRpc2FibGVk
LCBidXQgZGlzYWxsb3cKLSAgICAgICAgICAgZGlzY2FyZCBpbiB0aGlzIG1hbm5lciB3aGVuIG11
bHRpc2FtcGxlIHJhc3Rlcml6YXRpb24gaXMgZW5hYmxlZC4KLSAgICAgICAgCi0gICAgICAgIEIp
IFJlc3RyaWN0IHVzYWdlIG9mIHRoZSBmcmFtZWJ1ZmZlciBjb2xvciB1bnRpbCBpdCBpcyBrbm93
biB3aGV0aGVyCi0gICAgICAgICAgIG9yIG5vdCB0aGUgcGl4ZWwgd2lsbCBiZSBkaXNjYXJkZWQu
Ci0gICAgICAgICAgICAKLSAgICAgICAgQykgQWxsb3cgdW5kZWZpbmVkIHJlc3VsdHMgZm9yIGZy
YWdtZW50IHNoYWRlcnMgdGhhdCBkaXNjYXJkIG9uIGEKLSAgICAgICAgICAgcGVyLXNhbXBsZSBi
YXNpcyBvbiBoYXJkd2FyZSB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCBpdC4KLSAgICAKLSAgICBUaGlz
IGV4dGVuc2lvbiBoYXMgY2hvc2VuIG9wdGlvbiBDLiBSZXN0cmljdGluZyBvcnRob2dvbmFsaXR5
IG9mIGZyYWdtZW50Ci0gICAgc2hhZGVycyBiZXR3ZWVuIHNpbmdsZS1zYW1wbGUgYW5kIG11bHRp
c2FtcGxlIHJlbmRlcmluZyBpcyB1bmRlc2lyYWJsZSwgYXMKLSAgICBpcyByZXN0cmljdGluZyB1
c2FnZSBvZiB0aGUgZnJhbWVidWZmZXIgY29sb3IsIHdoaWNoIGNhbiBnZW5lcmFsbHkgb25seSBi
ZQotICAgIGRvbmUgd2l0aCBkZXRhaWxlZCBmbG93LWNvbnRyb2wgYW5hbHlzaXMuCi0gICAgCi0g
ICAgMy4gV2hhdCBpcyB0aGUgcHJlY2lzaW9uIG9mIGdsX0xhc3RGcmFnRGF0YSBpbiBwcmFjdGlj
ZT8KLSAgICAKLSAgICBSRVNPTFZFRDogVGhyZWUgb3B0aW9ucyB3ZXJlIGNvbnNpZGVyZWQgZm9y
IHRoaXMgZnVuY3Rpb25hbGl0eToKLSAgICAKLSAgICAgICAgQSkgZ2xfTGFzdEZyYWdEYXRhIGlz
IGFsd2F5cyBtZWRpdW1wLgotICAgICAgICAKLSAgICAgICAgQikgZ2xfTGFzdEZyYWdEYXRhIHRh
a2VzIHRoZSBwcmVjaXNpb24gbW9zdCBjbG9zZWx5IG1hdGNoaW5nIHRoZQotICAgICAgICAgICBh
Y3R1YWwgc3RvcmFnZSBmb3JtYXQgb2YgdGhlIGZyYW1lYnVmZmVyLgotICAgICAgICAKLSAgICAg
ICAgQykgQWxsb3cgcmVkZWNsYXJhdGlvbiBvZiBnbF9MYXN0RnJhZ0RhdGEgaW4gb3JkZXIgdG8g
Y2hhbmdlIGl0cwotICAgICAgICAgICBwcmVjaXNpb24uCi0gICAgCi0gICAgVGhpcyBleHRlbnNp
b24gaGFzIGNob3NlbiBvcHRpb24gQy4gQSBmaXhlZCBwcmVjaXNpb24gcGVyIG9wdGlvbiBBCi0g
ICAgaW5jcmVhc2VzIHRoZSBsaWtlbGlob29kIG9mIHJlZHVuZGFudCBjb252ZXJzaW9uIG9wZXJh
dGlvbnMgaW4gdGhlIHNoYWRlciwKLSAgICBhbmQgb3B0aW9uIEIgZG9lcyBub3QgcHJvdmlkZSBm
b3IgY2xlYXIgYmVoYXZpb3Igd2l0aCByZWdhcmQgdG8gdGhlCi0gICAgcHJlY2lzaW9uIG9mIGlu
dGVybWVkaWF0ZSByZXN1bHRzIGZyb20gY2FsY3VsYXRpb25zIHVzaW5nIHRoZQotICAgIGZyYW1l
YnVmZmVyIGNvbG9yLgotCi0gICAgNC4gSG93IGRvZXMgdGhpcyBleHRlbnNpb24gaXRlcmFjdCB3
aXRoIGNvbnZlbnRpb25hbCBibGVuZGluZz8KLSAgICAKLSAgICBSRVNPTFZFRDogVGhlcmUgaXMg
bm8gaW50ZXJhY3Rpb24uICBUaGUgdHdvIHJlbWFpbiBvcnRob2dvbmFsLiAgVGhlIHJlc3QKLSAg
ICBvZiB0aGUgcGlwZWxpbmUgY29udGludWVzIGFzIHVzdWFsIGFmdGVyIHRoZSBmcmFnbWVudCBz
aGFkZXIgc3RhZ2UuCi0gICAgCi0KLSAgICA1LiBIb3cgZG9lcyB0aGlzIGV4dGVuc2lvbiB3b3Jr
IGluIEVTIDMuMD8KLQotICAgIFJFU09MVkVEOiBEaWZmZXJlbnRseSB0aGFuIGluIEVTIDIuMC4K
LQotICAgIFRoZSBidWlsdC1pbiBmcmFnbWVudCBvdXRwdXRzIG9mIEVTIDIuMCBhcmUgcmVwbGFj
ZWQgaW4gI3ZlcnNpb24gMzAwIGVzCi0gICAgc2hhZGVycyBieSB1c2VyLWRlY2xhcmVkIG91dHB1
dHMsIHRvIGFjY29tb2RhdGUgaW50ZWdlciBhbmQgTVJUIAotICAgIGZyYW1lYnVmZmVycy4gIFRo
cmVlIG9wdGlvbnMgd2VyZSBjb25zaWRlcmVkOgotCi0gICAgICAgIEEpIEFkZCBidWlsdC1pbnMg
c2ltaWxhciB0byBnbF9MYXN0RnJhZ0RhdGEuCi0gICAgICAgIAotICAgICAgICBCKSBBZGQgYSBs
YXlvdXQgdG8gbWFyayB1c2VyLWRlY2xhcmVkIGZyYWdtZW50IG91dHB1dHMgYXMgaGF2aW5nCi0g
ICAgICAgIGRlZmluZWQgY29udGVudCBvbiBlbnRyeSB0byBmcmFnbWVudCBzaGFkZXIuCi0gICAg
ICAgICAgICAKLSAgICAgICAgQykgQWxsb3cgbWFya2luZyB1c2VyLWRlY2xhcmVkIGZyYWdtZW50
IG91dHB1dHMgYXMgImlub3V0Ii4KLQotICAgIFRoaXMgZXh0ZW5zaW9uIGhhcyBjaG9zZW4gb3B0
aW9uIEMuICBBZGRpbmcgYnVpbHQtaW5zIHBlciBvcHRpb24gQSBpcwotICAgIHVud2llbGR5IGZv
ciBNUlQgZnJhbWVidWZmZXJzIHdpdGggbWl4ZWQgYXR0YWNobWVudCB0eXBlcyBhbmQgcHJlY2lz
aW9ucy4gIAotICAgIE9wdGlvbnMgQiBhbmQgQyBhcmUgc2VtYW50aWNhbGx5IGlkZW50aWNhbCwg
YnV0IEMgcmVxdWlyZXMgZmV3ZXIgCi0gICAgbW9kaWZpY2F0aW9ucyB0byB0aGUgc3BlY2lmaWNh
dGlvbiBhbmQgdG8gdXNlciBzaGFkZXJzLiAgTm90ZSB0aGF0IHRoZSAKLSAgICBpbm91dCBxdWFs
aWZpZXIgaXMgbm90IGFsbG93ZWQgZm9yIHJlLWRlY2xhcmluZyBleGlzdGluZyBmcmFnbWVudCBv
dXRwdXRzIAotICAgIHN1Y2ggYXMgZ2xfRnJhZ0RlcHRoLgotCi1OZXcgUHJvY2VkdXJlcyBhbmQg
RnVuY3Rpb25zCi0KLSAgICBOb25lCi0gICAgCi1OZXcgVG9rZW5zCi0KLSAgICBBY2NlcHRlZCBi
eSB0aGUgPHBuYW1lPiBwYXJhbWV0ZXIgb2YgR2V0Qm9vbGVhbnYsIEdldEludGVnZXJ2LCBHZXRG
bG9hdHYsCi0gICAgYW5kIEdldERvdWJsZXY6Ci0gICAgCi0gICAgICAgIEZSQUdNRU5UX1NIQURF
Ul9ESVNDQVJEU19TQU1QTEVTX0VYVCAgICAgICAgICAgIDB4OEE1MgotCi1OZXcgQnVpbHRpbiBW
YXJpYWJsZXMKLQotICAgIG1lZGl1bXAgdmVjNCBnbF9MYXN0RnJhZ0RhdGFbZ2xfTWF4RHJhd0J1
ZmZlcnNdCi0gICAgCi1DaGFuZ2VzIHRvIHRoZSBPcGVuR0wgRVMgMi4wLjI0IFNwZWNpZmljYXRp
b24sIENoYXB0ZXIgMwotCi0gICAgUmVtb3ZlIHRoZSBsYXN0IHNlbnRlbmNlIG9mIFBhcmFncmFw
aCAyIG9mIFNlY3Rpb24gMy44LjEsIHBhZ2UgODQgKCJUaGVzZQotICAgIGJ1aWx0LWluIHZhcnlp
bmcgdmFyaWFibGVzIGluY2x1ZGUgWy4uLl0iIGFuZCBhZGQ6Ci0gICAgCi0gICAgVGhlc2UgYnVp
bHQtaW4gdmFyeWluZyB2YXJpYWJsZXMgaW5jbHVkZSB0aGUgZnJhZ21lbnQncyBwb3NpdGlvbiwg
ZXllIHoKLSAgICBjb29yZGluYXRlLCBhbmQgZnJvbnQtZmFjaW5nIGZsYWcsIGFzIHdlbGwgYXMg
dGhlIGxhc3QgZGF0YSBvciBjb2xvciB2YWx1ZQotICAgIHdyaXR0ZW4gdG8gdGhlIGZyYW1lYnVm
ZmVyLiBXaGVuIHRoZSB2YWx1ZSBvZiBTQU1QTEVfQlVGRkVSUyBpcyAxIGFuZCB0aGUgCi0gICAg
Y3VycmVudCBmcmFtZWJ1ZmZlciBjb2xvciBpcyBhY2Nlc3NlZCBpbiB0aGUgZnJhZ21lbnQgc2hh
ZGVyLCB0aGUgZnJhZ21lbnQKLSAgICBzaGFkZXIgd2lsbCBiZSBpbnZva2VkIHNlcGFyYXRlbHkg
Zm9yIGVhY2ggY292ZXJlZCBzYW1wbGUgYW5kIGEgc2VwYXJhdGUgCi0gICAgdmFsdWUgZm9yIHRo
ZSBwcmV2aW91cyBmcmFtZWJ1ZmZlciBjb2xvciB3aWxsIGJlIHByb3ZpZGVkIGZvciBlYWNoIHNh
bXBsZS4iCi0gICAgCi0gICAgQWRkIGEgbmV3IHN1YnNlY3Rpb24gdG8gc2VjdGlvbiAzLjguMiwg
cGFnZSA4NyAoIlNoYWRlciBFeGVjdXRpb24iKToKLSAgICAKLSAgICAiRGlzY2FyZAotICAgIAot
ICAgIEZyYWdtZW50IHNoYWRlcnMgbWF5IGNvbmRpdGlvbmFsbHkgYWJhbmRvbiBvcGVyYXRpb25z
IHVzaW5nIHRoZSBkaXNjYXJkCi0gICAga2V5d29yZC4gSG93ZXZlciwgdGhlIGFiaWxpdHkgb2Yg
aGFyZHdhcmUgdG8gc3VwcG9ydCBhYmFuZG9uaW5nIG9wZXJhdGlvbnMKLSAgICBvbiBhIHNpbmds
ZSBzYW1wbGUgd2hlbiB0aGUgc2hhZGVyIGlzIGludm9rZWQgb25jZSBmb3IgZWFjaCBjb3ZlcmVk
IHNhbXBsZQotICAgIGlzIGltcGxlbWVudGF0aW9uLWRlcGVuZGVudC4gVGhpcyBjYXBhYmlsaXR5
IGNhbiBiZSBkZXRlcm1pbmVkIGJ5IGNhbGxpbmcKLSAgICBHZXRCb29sZWFudiB3aXRoIHRoZSBz
eW1ib2xpYyBjb25zdGFudCAKLSAgICBGUkFHTUVOVF9TSEFERVJfRElTQ0FSRFNfU0FNUExFU19F
WFQuIElmIEZBTFNFIGlzIHJldHVybmVkLCByZXN1bHRzIGZyb20KLSAgICBzaGFkZXJzIHdoaWNo
IGRpc2NhcmQgYmFzZWQgb24gcGVyLXNhbXBsZSBsb2dpYyBhcmUgdW5kZWZpbmVkLiIKLQotQ2hh
bmdlcyB0byB0aGUgT3BlbkdMIEVTIDIuMC4yNCBTcGVjaWZpY2F0aW9uLCBDaGFwdGVyIDQKLQot
ICAgIFJlcGxhY2UgZmlyc3QgZWxlbWVudCBvZiBGaWd1cmUgNC4xLCBwYWdlIDkwICgiRnJhZ21l
bnQgKyBBc3NvY2lhdGVkIERhdGEiKToKLSAgICAKLSAgICAiRnJhZ21lbnQgKG9yIHNhbXBsZSkg
KyBBc3NvY2lhdGVkIERhdGEiCi0KLU5ldyBJbXBsZW1lbnRhdGlvbiBEZXBlbmRlbnQgU3RhdGUK
LQotICAgIEFkZCB0byB0YWJsZSA2LjE5IChJbXBsZW1lbnRhdGlvbiBEZXBlbmRlbnQgVmFsdWVz
IChjb250LikpOgotCi0gICAgR2V0IFZhbHVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
eXBlICBHZXQgQ29tbWFuZCAgTWluaW11bSBWYWx1ZSAgRGVzY3JpcHRpb24gICAgICAgIFNlY3Rp
b24KLSAgICAtLS0tLS0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0gIC0tLS0t
LS0tLS0tICAtLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tLSAgICAgLS0tLS0tLQotICAgIEZS
QUdNRU5UX1NIQURFUl9ESVNDQVJEU19TQU1QTEVTX0VYVCAgQiAgICAgR2V0Qm9vbGVhbnYgIC0g
ICAgICAgICAgICAgIFNhbXBsZXMgbWF5IGJlICAgICAzLjguMgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRpc2NhcmRlZCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpdmlkdWFsbHkgCi0KLUNoYW5nZXMg
dG8gdGhlIE9wZW5HTCBFUyBTaGFkaW5nIExhbmd1YWdlIDEuMC4xNyBTcGVjaWZpY2F0aW9uLCBD
aGFwdGVyIDMKLQotICAgIFJlbW92ZSBQYXJhZ3JhcGggMiBvZiBzZWN0aW9uIDMuOCwgcGFnZSAx
NywgSWRlbnRpZmllcnMgKCJJZGVudGlmaWVycwotICAgIHN0YXJ0aW5nIHdpdGggImdsXyIgYXJl
IHJlc2VydmVkIFsuLi5dIikgYW5kIGFkZDoKLQotICAgICJJZGVudGlmaWVycyBzdGFydGluZyB3
aXRoICJnbF8iIGFyZSByZXNlcnZlZCBmb3IgdXNlIGJ5IE9wZW5HTCBFUywgYW5kCi0gICAgbWF5
IG5vdCBiZSBkZWNsYXJlZCBpbiBhIHNoYWRlciBhcyBlaXRoZXIgYSB2YXJpYWJsZSBvciBhIGZ1
bmN0aW9uLgotICAgIEhvd2V2ZXIsIGFzIG5vdGVkIGluIHRoZSBzcGVjaWZpY2F0aW9uLCBjZXJ0
YWluIHByZWRlY2xhcmVkICJnbF8iIG5hbWVzCi0gICAgYXJlIGFsbG93ZWQgdG8gYmUgcmVkZWNs
YXJlZCBpbiBhIHNoYWRlciBmb3IgdGhlIHNwZWNpZmljIHB1cnBvc2Ugb2YKLSAgICBjaGFuZ2lu
ZyB0aGVpciBwcmVjaXNpb24gcXVhbGlmaWVyLiIKLSAgICAKLUNoYW5nZXMgdG8gdGhlIE9wZW5H
TCBFUyBTaGFkaW5nIExhbmd1YWdlIDEuMC4xNyBTcGVjaWZpY2F0aW9uLCBDaGFwdGVyIDcKLQot
ICAgIEFkZCBhZnRlciB0aGUgbGFzdCBzZW50ZW5jZSBvZiBQYXJhZ3JhcGggMiBvZiBTZWN0aW9u
IDcuMiwgcGFnZSA2MCwKLSAgICBGcmFnbWVudCBTaGFkZXIgU3BlY2lhbCBWYXJpYWJsZXMgKCJU
aGVzZSB2YXJpYWJsZXMgbWF5IGJlIHdyaXR0ZW4gdG8KLSAgICBtb3JlIFsuLi5dIik6Ci0gICAg
Ci0gICAgIi4uLiBUbyBhY2Nlc3MgdGhlIGV4aXN0aW5nIGZyYW1lYnVmZmVyIHZhbHVlcyAoZS5n
LiwgdG8gaW1wbGVtZW50IGEKLSAgICBjb21wbGV4IGJsZW5kIG9wZXJhdGlvbiBpbnNpZGUgdGhl
IHNoYWRlciksIGZyYWdtZW50IHNoYWRlcnMgc2hvdWxkIHVzZQotICAgIHRoZSByZWFkLW9ubHkg
aW5wdXQgYXJyYXkgZ2xfTGFzdEZyYWdEYXRhLiAgZ2xfTGFzdEZyYWdEYXRhIHJldHVybnMgdGhl
Ci0gICAgdmFsdWUgd3JpdHRlbiBieSB0aGUgbW9zdCByZWNlbnQgZnJhZ21lbnQgYXQgdGhlIHNh
bWUgcG9zaXRpb24uCi0gICAgCi0gICAgQWNjZXNzIHRvIGdsX0xhc3RGcmFnRGF0YSBpcyBvcHRp
b25hbCwgYW5kIG11c3QgYmUgZW5hYmxlZCBieSAKLSAgICAKLSAgICAjZXh0ZW5zaW9uIEdMX0VY
VF9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2ggOiA8YmVoYXZpb3I+Ci0gICAgCi0gICAgV2hlcmUg
PGJlaGF2aW9yPiBpcyBhcyBzcGVjaWZpZWQgaW4gc2VjdGlvbiAzLjMuCi0gICAgCi0gICAgQnkg
ZGVmYXVsdCwgZ2xfTGFzdEZyYWdEYXRhIGlzIGRlY2xhcmVkIHdpdGggdGhlIG1lZGl1bXAgcHJl
Y2lzaW9uCi0gICAgcXVhbGlmaWVyLiBUaGlzIGNhbiBiZSBjaGFuZ2VkIGJ5IHJlZGVjbGFyaW5n
IHRoZSBjb3JyZXNwb25kaW5nIHZhcmlhYmxlcwotICAgIHdpdGggdGhlIGRlc2lyZWQgcHJlY2lz
aW9uIHF1YWxpZmllci4KLSAgICAKLSAgICBSZWRlY2xhcmF0aW9ucyBhcmUgZG9uZSBhcyBmb2xs
b3dzCi0gICAgCi0gICAgLy8gUmVkZWNsYXJhdGlvbiB0aGF0IGNoYW5nZXMgbm90aGluZyBpcyBh
bGxvd2VkCi0gICAgbWVkaXVtcCB2ZWM0IGdsX0xhc3RGcmFnRGF0YVtnbF9NYXhEcmF3QnVmZmVy
c107IAotICAgIAotICAgIC8vIEFsbCB0aGUgZm9sbG93aW5nIGFyZSBhbGxvd2VkIHJlZGVjbGFy
YXRpb24gdGhhdCBjaGFuZ2UgYmVoYXZpb3IKLSAgICBsb3dwIHZlYzQgZ2xfTGFzdEZyYWdEYXRh
W2dsX01heERyYXdCdWZmZXJzXTsKLSAgICBoaWdocCB2ZWM0IGdsX0xhc3RGcmFnRGF0YVtnbF9N
YXhEcmF3QnVmZmVyc107Ci0gICAgCi0gICAgUmVkZWNsYXJhdGlvbnMgbXVzdCBub3Qgb3RoZXJ3
aXNlIGFsdGVyIHRoZSBkZWNsYXJlZCB0eXBlIG9yIGFycmF5IHNpemUgb2YKLSAgICBnbF9MYXN0
RnJhZ0RhdGEuIgotICAgIAotQ2hhbmdlcyB0byB0aGUgT3BlbkdMIEVTIFNoYWRpbmcgTGFuZ3Vh
Z2UgMy4wMC4zIFNwZWNpZmljYXRpb24sIENoYXB0ZXIgNAotCi0gICAgTW9kaWZ5IFBhcmFncmFw
aCAyIG9mIHNlY3Rpb24gNC4zLjY6Ci0gICAgIkV4Y2VwdCBpbiB0aGUgZnJhZ21lbnQgc3RhZ2Us
IHRoZXJlIGlzIG5vdCBhbiBpbm91dCBzdG9yYWdlIHF1YWxpZmllciBhdAotICAgIGdsb2JhbCBz
Y29wZSBmb3IgZGVjbGFyaW5nIGEgc2luZ2xlIHZhcmlhYmxlIG5hbWUgYXMgYm90aCBpbnB1dCBh
bmQgb3V0cHV0Ci0gICAgWy4uLl0iCi0KLSAgICBNb2RpZnkgUGFyYWdyYXBoIDUgb2Ygc2VjdGlv
biA0LjMuNjoKLSAgICAiRnJhZ21lbnQgb3V0cHV0cyBvdXRwdXQgcGVyLWZyYWdtZW50IGRhdGEg
YW5kIGFyZSBkZWNsYXJlZCB1c2luZyB0aGUgb3V0Ci0gICAgb3IgaW5vdXQgc3RvcmFnZSBxdWFs
aWZpZXIuIEl0IGlzIGFuIGVycm9yIHRvIHVzZSBjZW50cm9pZCBvdXQgb3IgY2VudHJvaWQKLSAg
ICBpbm91dCBpbiBhIGZyYWdtZW50IHNoYWRlciBbLi4uXSIgYW5kIGFwcGVuZCBuZXcgcGFyYWdy
YXBoOgotCi0gICAgIlVwb24gZW50cnkgdG8gdGhlIGZyYWdtZW50IHNoYWRlciwgZnJhZ21lbnQg
b3V0cHV0cyBkZWNsYXJlZCBhcyBpbm91dCB3aWxsCi0gICAgY29udGFpbiB0aGUgdmFsdWUgd3Jp
dHRlbiBieSB0aGUgbW9zdCByZWNlbnQgZnJhZ21lbnQgYXQgdGhlIHNhbWUgcG9zaXRpb24uCi0g
ICAgVGhpcyBiZWhhdmlvciwgYW5kIHRoZSBhYmlsaXR5IHRvIHVzZSB0aGUgaW5vdXQgcXVhbGlm
aWVyIGF0IGdsb2JhbCBzY29wZSAKLSAgICBpbiBhIGZyYWdtZW50IHNoYWRlciwgaXMgb3B0aW9u
YWwgYW5kIG11c3QgYmUgZW5hYmxlZCBieQotCi0gICAgI2V4dGVuc2lvbiBHTF9FWFRfc2hhZGVy
X2ZyYW1lYnVmZmVyX2ZldGNoIDogPGJlaGF2aW9yPgotICAgIAotICAgIFdoZXJlIDxiZWhhdmlv
cj4gaXMgYXMgc3BlY2lmaWVkIGluIHNlY3Rpb24gMy40LiIKLQotSW50ZXJhY3Rpb25zIHdpdGgg
T0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzCi0KLSAgICBSZXN1bHRzIGZyb20gc2hhZGVycyB3aGlj
aCB1c2UgdGhlIGJ1aWx0LWluIGRlcml2YXRpdmUgZnVuY3Rpb25zIGRGZHgsCi0gICAgZEZkeSwg
YW5kIGZ3aWR0aCBvbiB2YXJpYWJsZXMgY2FsY3VsYXRlZCB1c2luZyB0aGUgY3VycmVudCBmcmFt
ZWJ1ZmZlciAKLSAgICBjb2xvciBhcmUgdW5kZWZpbmVkLgotCi1SZXZpc2lvbiBIaXN0b3J5Ci0K
LSAgICBWZXJzaW9uIDQsIDIwMTMvMDUvMjggLSBBZGRlZCBFUzMgaW50ZXJhY3Rpb24gYXMgcmVx
dWVzdGVkIGluIEJ1ZyAxMDIzNgotICAgIFZlcnNpb24gMywgMjAxMi8wOS8yNCAtIFJlbW92ZSBv
YnNvbGV0ZSBpc3N1ZSAzIGFib3V0IGRlcml2YXRpdmVzCi0gICAgVmVyc2lvbiAyLCAyMDEyLzA2
LzIxIC0gRml4IE1VTFRJU0FNUExFIGVuYWJsZWQgLT4gU0FNUExFX0JVRkZFUlMgPSAxLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2FzdCBmcm9tIEFQUExFIHRvIG11bHRpdmVuZG9y
IEVYVCwgY2xhcmlmeSB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfTGFzdEZy
YWdEYXRhIHJlZmxlY3RzIHZhbHVlIHdyaXR0ZW4gYnkgcHJldmlvdXMKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwaXhlbCBhdCBzYW1lIGNvb3JkaW5hdGVzLgotICAgIFZlcnNpb24gMSwg
MjAxMi8wNi8wMSAtIENvbnZlcnNpb24gZnJvbSBBUkJfc3luYyB0byBBUFBMRV9zeW5jIGZvciBF
Uy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9leHRlbnNpb25zL0VYVF90ZXh0dXJlX3JnLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VYVF90ZXh0dXJlX3JnLnR4dAkocmV2aXNpb24g
MjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FWFRfdGV4dHVy
ZV9yZy50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwxOTUgKzAsMCBAQAotTmFtZQotCi0gICAgRVhU
X3RleHR1cmVfcmcKLQotTmFtZSBTdHJpbmdzCi0gICAgCi0gICAgR0xfRVhUX3RleHR1cmVfcmcK
LQotQ29udHJpYnV0b3JzCi0KLSAgICBDb250cmlidXRvcnMgdG8gQVJCX3RleHR1cmVfcmcsIG9u
IHdoaWNoIHRoaXMgZXh0ZW5zaW9uIGlzIGJhc2VkCi0gICAgS3lsZSBIYXVnaGV5Ci0gICAgUmlj
aGFyZCBTY2hyZXllcgotCi1Db250YWN0Ci0KLSAgICBCZW5qIExpcGNoYWssIEFwcGxlIChsaXBj
aGFrICdhdCcgYXBwbGUuY29tKQotCi1TdGF0dXMgCi0gICAgCi0gICAgQ29tcGxldGUKLQotVmVy
c2lvbgotICAgIAotICAgIERhdGU6IEp1bHkgMjIsIDIwMTEKLSAgICBSZXZpc2lvbjogMwotCi1O
dW1iZXIKLQotICAgIE9wZW5HTCBFUyBFeHRlbnNpb24gIzEwMwotCi1EZXBlbmRlbmNpZXMKLQot
ICAgIFJlcXVpcmVzIE9wZW5HTCBFUyAyLjAuCi0KLSAgICBXcml0dGVuIGJhc2VkIG9uIHRoZSB3
b3JkaW5nIG9mIHRoZSBPcGVuR0wgRVMgMi4wLjI1IEZ1bGwgU3BlY2lmaWNhdGlvbgotICAgIChO
b3ZlbWJlciAyLCAyMDEwKS4KLQotICAgIE9FU190ZXh0dXJlX2Zsb2F0IGFmZmVjdHMgdGhlIGRl
ZmluaXRpb24gb2YgdGhpcyBleHRlbnNpb24uCi0KLSAgICBPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0
IGFmZmVjdHMgdGhlIGRlZmluaXRpb24gb2YgdGhpcyBleHRlbnNpb24uCi0KLSAgICBBUFBMRV9m
cmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSBhZmZlY3RzIHRoZSBkZWZpbml0aW9uIG9mIHRoaXMgZXh0
ZW5zaW9uLgotCi1PdmVydmlldwotCi0gICAgSGlzdG9yaWNhbGx5IG9uZS0gYW5kIHR3by1jb21w
b25lbnQgdGV4dHVyZXMgaGF2ZSBiZWVuIHNwZWNpZmllZCBpbiBPcGVuR0wKLSAgICBFUyB1c2lu
ZyB0aGUgbHVtaW5hbmNlIG9yIGx1bWluYW5jZS1hbHBoYSAoTC9MQSkgZm9ybWF0cy4gV2l0aCB0
aGUgYWR2ZW50Ci0gICAgb2YgcHJvZ3JhbW1hYmxlIHNoYWRlcnMgYW5kIHJlbmRlci10by10ZXh0
dXJlIGNhcGFiaWxpdGllcyB0aGVzZSBsZWdhY3kKLSAgICBmb3JtYXRzIGNhcnJ5IHNvbWUgaGlz
dG9yaWNhbCBhcnRpZmFjdHMgd2hpY2ggYXJlIG5vIGxvbmdlciB1c2VmdWwuCi0KLSAgICBGb3Ig
ZXhhbXBsZSwgd2hlbiBzYW1wbGluZyBmcm9tIHN1Y2ggdGV4dHVyZXMsIHRoZSBsdW1pbmFuY2Ug
dmFsdWVzIGFyZQotICAgIHJlcGxpY2F0ZWQgYWNyb3NzIHRoZSBjb2xvciBjb21wb25lbnRzLiBU
aGlzIGlzIG5vIGxvbmdlciBuZWNlc3Nhcnkgd2l0aAotICAgIHByb2dyYW1tYWJsZSBzaGFkZXJz
LgotICAgIAotICAgIEl0IGlzIGFsc28gZGVzaXJhYmxlIHRvIGJlIGFibGUgdG8gcmVuZGVyIHRv
IG9uZS0gYW5kIHR3by1jb21wb25lbnQgZm9ybWF0Ci0gICAgdGV4dHVyZXMgdXNpbmcgY2FwYWJp
bGl0aWVzIHN1Y2ggYXMgZnJhbWVidWZmZXIgb2JqZWN0cyAoRkJPKSwgYnV0Ci0gICAgcmVuZGVy
aW5nIHRvIEwvTEEgZm9ybWF0cyBpcyB1bmRlci1zcGVjaWZpZWQgKHNwZWNpZmljYWxseSBob3cg
dG8gbWFwCi0gICAgUi9HL0IvQSB2YWx1ZXMgdG8gTC9BIHRleHR1cmUgY2hhbm5lbHMpLgotCi0g
ICAgVGhpcyBleHRlbnNpb24gYWRkcyBuZXcgYmFzZSBpbnRlcm5hbCBmb3JtYXRzIGZvciBvbmUt
Y29tcG9uZW50IFJFRCBhbmQKLSAgICB0d28tY29tcG9uZW50IFJHIChyZWQgZ3JlZW4pIHRleHR1
cmVzIGFzIHdlbGwgYXMgc2l6ZWQgUkVEIGFuZCBSRyBpbnRlcm5hbAotICAgIGZvcm1hdHMgZm9y
IHJlbmRlcmJ1ZmZlcnMuIFRoZSBSRUQgYW5kIFJHIHRleHR1cmUgZm9ybWF0cyBjYW4gYmUgdXNl
ZCBmb3IKLSAgICBib3RoIHRleHR1cmluZyBhbmQgcmVuZGVyaW5nIGludG8gd2l0aCBmcmFtZWJ1
ZmZlciBvYmplY3RzLgotCi1OZXcgUHJvY2VkdXJlcyBhbmQgRnVuY3Rpb25zCi0gICAgCi0gICAg
Tm9uZQotCi1OZXcgVG9rZW5zCi0KLSAgICBBY2NlcHRlZCBieSB0aGUgPGludGVybmFsZm9ybWF0
PiBwYXJhbWV0ZXIgb2YgVGV4SW1hZ2UyRCBhbmQgQ29weVRleEltYWdlMkQsCi0gICAgYW5kIHRo
ZSA8Zm9ybWF0PiBwYXJhbWV0ZXIgb2YgVGV4SW1hZ2UyRCwgVGV4U3ViSW1hZ2UyRCwgYW5kIFJl
YWRQaXhlbHM6Ci0KLSAgICAgICAgUkVEX0VYVCAgICAgICAgICAgICAgICAgMHgxOTAzCi0gICAg
ICAgIFJHX0VYVCAgICAgICAgICAgICAgICAgIDB4ODIyNwotCi0gICAgQWNjZXB0ZWQgYnkgdGhl
IDxpbnRlcm5hbGZvcm1hdD4gcGFyYW1ldGVyIG9mIFJlbmRlcmJ1ZmZlclN0b3JhZ2UgYW5kCi0g
ICAgUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQVBQTEU6Ci0KLSAgICAgICAgUjhfRVhU
ICAgICAgICAgICAgICAgICAgMHg4MjI5Ci0gICAgICAgIFJHOF9FWFQgICAgICAgICAgICAgICAg
IDB4ODIyQgotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciAyIG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNw
ZWNpZmljYXRpb24gKE9wZW5HTCBFUyBPcGVyYXRpb24pCi0KLSAgICBOb25lCi0KLUFkZGl0aW9u
cyB0byBDaGFwdGVyIDMgb2YgdGhlIE9wZW5HTCBFUyAyLjAgU3BlY2lmaWNhdGlvbiAoUmFzdGVy
aXphdGlvbikKLQotICAgIChBZGQgdGhlIGZvbGxvd2luZyB0byBUYWJsZSAzLjM6ICJUZXhJbWFn
ZTJEIGFuZCBSZWFkUGl4ZWxzIGZvcm1hdHMiKQotCi0gICAgRm9ybWF0IE5hbWUgICAgIEVsZW1l
bnQgTWVhbmluZyBhbmQgT3JkZXIgICAgICBUYXJnZXQgQnVmZmVyCi0gICAgLS0tLS0tLS0tLS0g
ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgICAtLS0tLS0tLS0tLS0tCi0gICAgUkVE
X0VYVCAgICAgICAgIFIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvcgotICAgIFJH
X0VYVCAgICAgICAgICBSLCBHICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3IKLQotICAg
IChBZGQgdGhlIGZvbGxvd2luZyB0byBUYWJsZSAzLjQ6ICJWYWxpZCBwaXhlbCBmb3JtYXQgYW5k
IHR5cGUgY29tYmluYXRpb25zIikKLSAgICAoYXMgbW9kaWZpZWQgYnkgT0VTX3RleHR1cmVfZmxv
YXQgYW5kIE9FU190ZXh0dXJlX2hhbGZfZmxvYXQpCi0KLSAgICBGb3JtYXQgICAgICAgICAgVHlw
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ5dGVzIHBlciBQaXhlbAotICAgIC0tLS0tLS0t
LS0tICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgICAgLS0tLS0tLS0tLS0tLS0tCi0g
ICAgUkVEX0VYVCAgICAgICAgIEZMT0FUICAgICAgICAgICAgICAgICAgICAgICAgICA0Ci0gICAg
UkVEX0VYVCAgICAgICAgIEhBTEZfRkxPQVRfT0VTICAgICAgICAgICAgICAgICAyCi0gICAgUkVE
X0VYVCAgICAgICAgIFVOU0lHTkVEX0JZVEUgICAgICAgICAgICAgICAgICAxCi0gICAgUkdfRVhU
ICAgICAgICAgIEZMT0FUICAgICAgICAgICAgICAgICAgICAgICAgICA4Ci0gICAgUkdfRVhUICAg
ICAgICAgIEhBTEZfRkxPQVRfT0VTICAgICAgICAgICAgICAgICA0Ci0gICAgUkdfRVhUICAgICAg
ICAgIFVOU0lHTkVEX0JZVEUgICAgICAgICAgICAgICAgICAyCi0KLSAgICAoQWRkIHRoZSBmb2xs
b3dpbmcgdG8gVGFibGUgMy44OiAiQ29udmVyc2lvbiBmcm9tIFJHQkEgYW5kIGRlcHRoIHBpeGVs
Ci0gICAgY29tcG9uZW50cyB0byBpbnRlcm5hbCB0ZXh0dXJlIikKLQotICAgIEJhc2UgSW50ZXJu
YWwgRm9ybWF0ICAgICBSR0JBICAgICAgIEludGVybmFsIENvbXBvbmVudHMKLSAgICAtLS0tLS0t
LS0tLS0tLS0tLS0tLSAgICAgLS0tLS0tICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgUkVE
X0VYVCAgICAgICAgICAgICAgICAgIFIgICAgICAgICAgUgotICAgIFJHX0VYVCAgICAgICAgICAg
ICAgICAgICBSLEcgICAgICAgIFIsRwotCi0gICAgKE1vZGlmeSBUYWJsZSAzLjk6ICJDb3B5VGV4
SW1hZ2UgaW50ZXJuYWwgZm9ybWF0L2NvbG9yIGJ1ZmZlciBjb21iaW5hdGlvbnMiKQotCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZSBGb3JtYXQKLSAgICBDb2xvciBCdWZmZXIg
ICAgICBBICBMICBMQSAgUiAgUkcgIFJHQiAgUkdCQQotICAgIC0tLS0tLS0tLS0tLSAgICAgIC0g
IC0gIC0tICAtICAtLSAgLS0tICAtLS0tCi0gICAgQSAgICAgICAgICAgICAgICAgWAotICAgIFIg
ICAgICAgICAgICAgICAgICAgIFggICAgICBYCi0gICAgUkcgICAgICAgICAgICAgICAgICAgWCAg
ICAgIFggIFgKLSAgICBSR0IgICAgICAgICAgICAgICAgICBYICAgICAgWCAgWCAgIFgKLSAgICBS
R0JBICAgICAgICAgICAgICBYICBYICBYICAgWCAgWCAgIFggICAgWAotCi0gICAgKEFkZCB0aGUg
Zm9sbG93aW5nIHRvIFRhYmxlIDMuMTI6ICJDb3JyZXNwb25kZW5jZSBvZiBmaWx0ZXJlZCB0ZXh0
dXJlCi0gICAgY29tcG9uZW50cyB0byB0ZXh0dXJlIHNvdXJjZSBjb2xvciBjb21wb25lbnRzIikK
LQotICAgIFRleHR1cmUgQmFzZSAgICAgICAgVGV4dHVyZSBzb3VyY2UgY29sb3IKLSAgICBJbnRl
cm5hbCBGb3JtYXQgICAgIENfcyAgICAgICAgICAgICBBX3MKLSAgICAtLS0tLS0tLS0tLS0tLS0g
ICAgIC0tLS0tLS0tLS0tLS0gICAtLS0tLS0KLSAgICBSRURfRVhUICAgICAgICAgICAgIChSX3Qs
IDAsIDApICAgICAxCi0gICAgUkdfRVhUICAgICAgICAgICAgICAoUl90LCBHX3QsIDApICAgMQot
Ci1BZGRpdGlvbnMgdG8gQ2hhcHRlciA0IG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmljYXRp
b24gKFBlci1GcmFnbWVudAotT3BlcmF0aW9ucyBhbmQgdGhlIEZyYW1lYnVmZmVyKQotCi0gICAg
SW4gc2VjdGlvbiA0LjMuMSAiUmVhZGluZyBQaXhlbHMiLCBzdWJzZWN0aW9uICJPYnRhaW5pbmcg
UGl4ZWxzIGZyb20gdGhlCi0gICAgRnJhbWVidWZmZXIiLCBtb2RpZnkgdGhlIGxhc3Qgc2VudGVu
Y2UgdG8gcmVhZDoKLQotICAgICJJZiB0aGUgZnJhbWVidWZmZXIgZG9lcyBub3Qgc3VwcG9ydCBH
LCBCLCBvciBBIHZhbHVlcyB0aGVuIHRoZSBHLCBCLCBhbmQgQQotICAgIHZhbHVlcyB0aGF0IGFy
ZSBvYnRhaW5lZCBhcmUgMC4wLCAwLjAsIGFuZCAxLjAgcmVzcGVjdGl2ZWx5LiIKLQotICAgIElu
IHNlY3Rpb24gNC40LjUgIkZyYW1lYnVmZmVyIENvbXBsZXRlbmVzcyIsIG1vZGlmeSB0aGUgbGFz
dCBzZW50ZW5jZSBvZgotICAgIHRoZSBzZWNvbmQgcGFyYWdyYXBoIHRvIHJlYWQ6Ci0KLSAgICAi
Q29sb3ItcmVuZGVyYWJsZSBmb3JtYXRzIGNvbnRhaW4gcmVkLCBhbmQgcG9zc2libHkgZ3JlZW4s
IGJsdWUsIGFuZCBhbHBoYQotICAgIGNvbXBvbmVudHM7IGRlcHRoLXJlbmRlcmFibGUgZm9ybWF0
cyBjb250YWluIGRlcHRoIGNvbXBvbmVudHM7IGFuZAotICAgIHN0ZW5jaWwtcmVuZGVyYWJsZSBm
b3JtYXRzIGNvbnRhaW4gc3RlbmNpbCBjb21wb25lbnRzLiIKLQotICAgIChBZGQgdGhlIGZvbGxv
d2luZyB0byBUYWJsZSA0LjU6ICJSZW5kZXJidWZmZXIgaW1hZ2UgZm9ybWF0cywgc2hvd2luZyB0
aGVpcgotICAgIHJlbmRlcmFibGUgdHlwZSAoY29sb3ItLCBkZXB0aC0sIG9yIHN0ZW5jaWwtcmVu
ZGVyYWJsZSkgYW5kIHRoZSBudW1iZXIgb2YKLSAgICBiaXRzIGVhY2ggZm9ybWF0IGNvbnRhaW5z
IGZvciBjb2xvciAoUiwgRywgQiwgQSksIGRlcHRoIChEKSwgYW5kIHN0ZW5jaWwKLSAgICAoUykg
Y29tcG9uZW50cyIpCi0KLSAgICBTaXplZCBJbnRlcm5hbCAgUmVuZGVyYWJsZSBUeXBlICAgUiBi
aXRzIEcgYml0cyBCIGJpdHMgQSBiaXRzIEQgYml0cyBTIGJpdHMKLSAgICBGb3JtYXQKLSAgICAt
LS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLSAgLS0tLS0tIC0tLS0tLSAtLS0tLS0gLS0t
LS0tIC0tLS0tLSAtLS0tLS0KLSAgICBSOF9FWFQgICAgICAgIGNvbG9yLXJlbmRlcmFibGUgIDgK
LSAgICBSRzhfRVhUICAgICAgIGNvbG9yLXJlbmRlcmFibGUgIDggICAgICA4Ci0KLUFkZGl0aW9u
cyB0byBDaGFwdGVyIDUgb2YgdGhlIE9wZW5HTCBFUyAyLjAgU3BlY2lmaWNhdGlvbiAoU3BlY2lh
bCBGdW5jdGlvbnMpCi0KLSAgICBOb25lCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDYgb2YgdGhl
IE9wZW5HTCBFUyAyLjAgU3BlY2lmaWNhdGlvbiAoU3RhdGUgYW5kIFN0YXRlCi1SZXF1ZXN0cykK
LQotICAgIE5vbmUKLQotRGVwZW5kZW5jaWVzIG9uIE9FU190ZXh0dXJlX2Zsb2F0Ci0KLSAgICBJ
ZiBPRVNfdGV4dHVyZV9mbG9hdCBpcyBub3Qgc3VwcG9ydGVkLCB0aGVuIG9taXQgdGhlIHJvd3Mg
b2YKLSAgICBUYWJsZSAzLjQgdGhhdCBoYXZlIFR5cGUgRkxPQVQuCi0KLURlcGVuZGVuY2llcyBv
biBPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Ci0KLSAgICBJZiBPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0
IGlzIG5vdCBzdXBwb3J0ZWQsIHRoZW4gb21pdCB0aGUgcm93cyBvZiAKLSAgICBUYWJsZSAzLjQg
dGhhdCBoYXZlIFR5cGUgSEFMRl9GTE9BVF9PRVMuCi0KLURlcGVuZGVuY2llcyBvbiBBUFBMRV9m
cmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQotCi0gICAgSWYgQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlz
YW1wbGUgaXMgbm90IHN1cHBvcnRlZCwgdGhlbiBhbGwgcmVmZXJlbmNlcyB0bwotICAgIFJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFQUExFIHNob3VsZCBiZSBpZ25vcmVkLgotCi1SZXZp
c2lvbiBIaXN0b3J5Ci0gICAgCi0gICAgIzEgRmVicnVhcnkgMjIsIDIwMTEsIGtoYXVnaGV5Ci0g
ICAgICAgIC0gaW5pdGlhbCB2ZXJzaW9uIGFkYXB0ZWQgZnJvbSBBUkJfdGV4dHVyZV9yZy4KLSAg
ICAjMiBKdW5lIDE2LCAyMDExLCBiZW5qCi0gICAgICAgIC0gYWRkIGludGVyYWN0aW9uIHdpdGgg
QVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUKLSAgICAjMyBKdWx5IDIyLCAyMDExLCBiZW5q
Ci0gICAgICAgIC0gcmVuYW1lIGZyb20gQVBQTEUgdG8gRVhUCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9leHRlbnNpb25zL0VYVF90ZXh0dXJlX3N0b3JhZ2UudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRVhUX3RleHR1cmVfc3RvcmFn
ZS50eHQJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVu
c2lvbnMvRVhUX3RleHR1cmVfc3RvcmFnZS50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMDkwICsw
LDAgQEAKLU5hbWUKLQotICAgIEVYVF90ZXh0dXJlX3N0b3JhZ2UKLQotTmFtZSBTdHJpbmdzCi0K
LSAgICBHTF9FWFRfdGV4dHVyZV9zdG9yYWdlCi0KLUNvbnRhY3QKLQotICAgIEJydWNlIE1lcnJ5
IChibWVycnkgJ2F0JyBnbWFpbC5jb20pCi0gICAgSWFuIFJvbWFuaWNrLCBJbnRlbCAoaWFuLmQu
cm9tYW5pY2sgJ2F0JyBpbnRlbC5jb20pCi0KLUNvbnRyaWJ1dG9ycwotCi0gICAgSmVyZW15IFNh
bmRtZWwsIEFwcGxlCi0gICAgQnJ1Y2UgTWVycnksIEFSTQotICAgIFRvbSBPbHNvbiwgQVJNCi0g
ICAgQmVuamkgQm93bWFuLCBJbWFnaW5hdGlvbiBUZWNobm9sb2dpZXMKLSAgICBJYW4gUm9tYW5p
Y2ssIEludGVsCi0gICAgSmVmZiBCb2x6LCBOVklESUEKLSAgICBQYXQgQnJvd24sIE5WSURJQQot
ICAgIE1hdXJpY2UgUmliYmxlLCBRdWFsY29tbQotICAgIExpbmdqdW4gQ2hlbiwgUXVhbGNvbW0K
LSAgICBEYW5pZWwgS29jaCwgVHJhbnNnYW1pbmcgSW5jCi0KLVN0YXR1cwotCi0gICAgQ29tcGxl
dGUuIAotCi1WZXJzaW9uCi0KLSAgICBMYXN0IE1vZGlmaWVkIERhdGU6IE5vdmVtYmVyIDExLCAy
MDExCi0gICAgQXV0aG9yIFJldmlzaW9uOiAyNAotCi1OdW1iZXIKLQotICAgIE9wZW5HTCBFUyBF
eHRlbnNpb24gIzEwOAotCi1EZXBlbmRlbmNpZXMKLQotICAgIE9wZW5HTCBFUyAxLjAsIE9wZW5H
TCBFUyAyLjAgb3IgT3BlbkdMIDEuMiBpcyByZXF1aXJlZC4KLQotICAgIE9FU190ZXh0dXJlX25w
b3QsIE9FU190ZXh0dXJlX2N1YmVfbWFwLCBPRVNfdGV4dHVyZV8zRCwKLSAgICBPRVNfZGVwdGhf
dGV4dHVyZSwgT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsLAotICAgIE9FU19jb21wcmVzc2VkX3Bh
bGV0dGVkX3RleHR1cmUsIE9FU190ZXh0dXJlX2Zsb2F0LCBPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0
Ci0gICAgRVhUX3RleHR1cmVfdHlwZV8yXzEwXzEwXzEwX1JFViwgRVhUX3RleHR1cmVfZm9ybWF0
X0JHUkE4ODg4LAotICAgIEVYVF90ZXh0dXJlM0QsIE9FU190ZXh0dXJlX25wb3QsIEFQUExFX3Rl
eHR1cmVfMkRfbGltaXRlZF9ucG90LAotICAgIEFSQl90ZXh0dXJlX2N1YmVfbWFwLCBBUkJfdGV4
dHVyZV9jdWJlX21hcF9hcnJheSwKLSAgICBBUkJfdGV4dHVyZV9yZWN0YW5nbGUsIFNHSVNfZ2Vu
ZXJhdGVfbWlwbWFwLAotICAgIEVYVF9kaXJlY3Rfc3RhdGVfYWNjZXNzLCBPRVNfRUdMX2ltYWdl
LCBXR0xfQVJCX3JlbmRlcl90ZXh0dXJlLAotICAgIEdMWF9FWFRfdGV4dHVyZV9mcm9tX3BpeG1h
cCwgYW5kIGNvcmUgc3BlY2lmaWNhdGlvbnMgdGhhdAotICAgIGluY29ycG9yYXRlIHRoZXNlIGV4
dGVuc2lvbnMgYWZmZWN0IHRoZSBkZWZpbml0aW9uIG9mIHRoaXMKLSAgICBleHRlbnNpb24uCi0K
LSAgICBUaGlzIGV4dGVuc2lvbiBpcyB3cml0dGVuIGFnYWluc3QgdGhlIE9wZW5HTCAzLjIgQ29y
ZSBQcm9maWxlCi0gICAgc3BlY2lmaWNhdGlvbi4KLQotT3ZlcnZpZXcKLQotICAgIFRoZSB0ZXh0
dXJlIGltYWdlIHNwZWNpZmljYXRpb24gY29tbWFuZHMgaW4gT3BlbkdMIGFsbG93IGVhY2ggbGV2
ZWwKLSAgICB0byBiZSBzZXBhcmF0ZWx5IHNwZWNpZmllZCB3aXRoIGRpZmZlcmVudCBzaXplcywg
Zm9ybWF0cywgdHlwZXMgYW5kCi0gICAgc28gb24sIGFuZCBvbmx5IGltcG9zZXMgY29uc2lzdGVu
Y3kgY2hlY2tzIGF0IGRyYXcgdGltZS4gVGhpcyBhZGRzCi0gICAgb3ZlcmhlYWQgZm9yIGltcGxl
bWVudGF0aW9ucy4KLQotICAgIFRoaXMgZXh0ZW5zaW9uIHByb3ZpZGVzIGEgbWVjaGFuaXNtIGZv
ciBzcGVjaWZ5aW5nIHRoZSBlbnRpcmUKLSAgICBzdHJ1Y3R1cmUgb2YgYSB0ZXh0dXJlIGluIGEg
c2luZ2xlIGNhbGwsIGFsbG93aW5nIGNlcnRhaW4KLSAgICBjb25zaXN0ZW5jeSBjaGVja3MgYW5k
IG1lbW9yeSBhbGxvY2F0aW9ucyB0byBiZSBkb25lIHVwIGZyb250LiBPbmNlCi0gICAgc3BlY2lm
aWVkLCB0aGUgZm9ybWF0IGFuZCBkaW1lbnNpb25zIG9mIHRoZSBpbWFnZSBhcnJheSBiZWNvbWUK
LSAgICBpbW11dGFibGUsIHRvIHNpbXBsaWZ5IGNvbXBsZXRlbmVzcyBjaGVja3MgaW4gdGhlIGlt
cGxlbWVudGF0aW9uLgotCi0gICAgV2hlbiB1c2luZyB0aGlzIGV4dGVuc2lvbiwgaXQgaXMgbm8g
bG9uZ2VyIHBvc3NpYmxlIHRvIHN1cHBseSB0ZXh0dXJlCi0gICAgZGF0YSB1c2luZyBUZXhJbWFn
ZSouIEluc3RlYWQsIGRhdGEgY2FuIGJlIHVwbG9hZGVkIHVzaW5nIFRleFN1YkltYWdlKiwKLSAg
ICBvciBwcm9kdWNlZCBieSBvdGhlciBtZWFucyAoc3VjaCBhcyByZW5kZXItdG8tdGV4dHVyZSwg
bWlwbWFwIGdlbmVyYXRpb24sCi0gICAgb3IgcmVuZGVyaW5nIHRvIGEgc2libGluZyBFR0xJbWFn
ZSkuCi0KLSAgICBUaGlzIGV4dGVuc2lvbiBoYXMgY29tcGxpY2F0ZWQgaW50ZXJhY3Rpb25zIHdp
dGggb3RoZXIgZXh0ZW5zaW9ucy4KLSAgICBUaGUgZ29hbCBvZiBtb3N0IG9mIHRoZXNlIGludGVy
YWN0aW9ucyBpcyB0byBlbnN1cmUgdGhhdCBhIHRleHR1cmUKLSAgICBpcyBhbHdheXMgbWlwbWFw
IGNvbXBsZXRlIChhbmQgY3ViZSBjb21wbGV0ZSBmb3IgY3ViZW1hcCB0ZXh0dXJlcykuCi0KLUlQ
IFN0YXR1cwotCi0gICAgTm8ga25vd24gSVAgY2xhaW1zCi0KLU5ldyBQcm9jZWR1cmVzIGFuZCBG
dW5jdGlvbnMKLQotICAgIHZvaWQgVGV4U3RvcmFnZTFERVhUKGVudW0gdGFyZ2V0LCBzaXplaSBs
ZXZlbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBpbnRlcm5hbGZvcm1hdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplaSB3aWR0aCk7Ci0KLSAgICB2b2lkIFRleFN0b3Jh
Z2UyREVYVChlbnVtIHRhcmdldCwgc2l6ZWkgbGV2ZWxzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgIGVudW0gaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZWkg
d2lkdGgsIHNpemVpIGhlaWdodCk7Ci0KLSAgICB2b2lkIFRleFN0b3JhZ2UzREVYVChlbnVtIHRh
cmdldCwgc2l6ZWkgbGV2ZWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gaW50ZXJu
YWxmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZWkgd2lkdGgsIHNpemVpIGhl
aWdodCwgc2l6ZWkgZGVwdGgpOwotCi0gICAgdm9pZCBUZXh0dXJlU3RvcmFnZTFERVhUKHVpbnQg
dGV4dHVyZSwgZW51bSB0YXJnZXQsIHNpemVpIGxldmVscywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICBlbnVtIGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVp
IHdpZHRoKTsKLQotICAgIHZvaWQgVGV4dHVyZVN0b3JhZ2UyREVYVCh1aW50IHRleHR1cmUsIGVu
dW0gdGFyZ2V0LCBzaXplaSBsZXZlbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBp
bnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzaXplaSB3aWR0aCwgc2l6
ZWkgaGVpZ2h0KTsKLQotICAgIHZvaWQgVGV4dHVyZVN0b3JhZ2UzREVYVCh1aW50IHRleHR1cmUs
IGVudW0gdGFyZ2V0LCBzaXplaSBsZXZlbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgZW51
bSBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzaXplaSB3aWR0aCwg
c2l6ZWkgaGVpZ2h0LCBzaXplaSBkZXB0aCk7Ci0KLU5ldyBUeXBlcwotCi0gICAgTm9uZQotCi1O
ZXcgVG9rZW5zCi0KLSAgICBBY2NlcHRlZCBieSB0aGUgPHZhbHVlPiBwYXJhbWV0ZXIgb2YgR2V0
VGV4UGFyYW1ldGVye2lmfXY6Ci0KLSAgICAgICAgVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUX0VY
VCAgIDB4OTEyRgotCi0gICAgQWNjZXB0ZWQgYnkgdGhlIDxpbnRlcm5hbGZvcm1hdD4gcGFyYW1l
dGVyIG9mIFRleFN0b3JhZ2UqIHdoZW4KLSAgICBpbXBsZW1lbnRlZCBvbiBPcGVuR0wgRVM6Ci0K
LSAgICAgICAgQUxQSEE4X0VYVCAgICAgICAgICAgICAgICAgICAgIDB4ODAzQyAgLyogcmV1c2Ug
dG9rZW5zIGZyb20gRVhUX3RleHR1cmUgKi8KLSAgICAgICAgTFVNSU5BTkNFOF9FWFQgICAgICAg
ICAgICAgICAgIDB4ODA0MAotICAgICAgICBMVU1JTkFOQ0U4X0FMUEhBOF9FWFQgICAgICAgICAg
MHg4MDQ1Ci0KLSAgICAgIChpZiBPRVNfdGV4dHVyZV9mbG9hdCBpcyBzdXBwb3J0ZWQpCi0gICAg
ICAgIFJHQkEzMkZfRVhUICAgICAgICAgICAgICAgICAgICAweDg4MTQgIC8qIHJldXNlIHRva2Vu
cyBmcm9tIEFSQl90ZXh0dXJlX2Zsb2F0ICovCi0gICAgICAgIFJHQjMyRl9FWFQgICAgICAgICAg
ICAgICAgICAgICAweDg4MTUKLSAgICAgICAgQUxQSEEzMkZfRVhUICAgICAgICAgICAgICAgICAg
IDB4ODgxNgotICAgICAgICBMVU1JTkFOQ0UzMkZfRVhUICAgICAgICAgICAgICAgMHg4ODE4Ci0g
ICAgICAgIExVTUlOQU5DRV9BTFBIQTMyRl9FWFQgICAgICAgICAweDg4MTkKLQotICAgICAgKGlm
IE9FU190ZXh0dXJlX2hhbGZfZmxvYXQgaXMgc3VwcG9ydGVkKQotICAgICAgICBSR0JBMTZGX0VY
VCAgICAgICAgICAgICAgICAgICAgMHg4ODFBICAvKiByZXVzZSB0b2tlbnMgZnJvbSBBUkJfdGV4
dHVyZV9mbG9hdCAqLwotICAgICAgICBSR0IxNkZfRVhUICAgICAgICAgICAgICAgICAgICAgMHg4
ODFCCi0gICAgICAgIEFMUEhBMTZGX0VYVCAgICAgICAgICAgICAgICAgICAweDg4MUMKLSAgICAg
ICAgTFVNSU5BTkNFMTZGX0VYVCAgICAgICAgICAgICAgIDB4ODgxRQotICAgICAgICBMVU1JTkFO
Q0VfQUxQSEExNkZfRVhUICAgICAgICAgMHg4ODFGCi0KLSAgICAgIChpZiBFWFRfdGV4dHVyZV90
eXBlXzJfMTBfMTBfMTBfUkVWIGlzIHN1cHBvcnRlZCkKLSAgICAgICAgUkdCMTBfQTJfRVhUICAg
ICAgICAgICAgICAgICAgIDB4ODA1OSAgLyogcmV1c2UgdG9rZW5zIGZyb20gRVhUX3RleHR1cmUg
Ki8KLSAgICAgICAgUkdCMTBfRVhUICAgICAgICAgICAgICAgICAgICAgIDB4ODA1MgotCi0gICAg
ICAoaWYgRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4IGlzIHN1cHBvcnRlZCkKLSAgICAgICAg
QkdSQThfRVhUICAgICAgICAgICAgICAgICAgICAgIDB4OTNBMQotCi0KLUFkZGl0aW9ucyB0byBD
aGFwdGVyIDIgb2YgdGhlIE9wZW5HTCAzLjIgQ29yZSBQcm9maWxlIFNwZWNpZmljYXRpb24KLShP
cGVuR0wgT3BlcmF0aW9uKQotCi0gICAgTm9uZQotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciAzIG9m
IHRoZSBPcGVuR0wgMy4yIENvcmUgUHJvZmlsZSBTcGVjaWZpY2F0aW9uCi0oUmFzdGVyaXphdGlv
bikKLQotICAgIEFmdGVyIHNlY3Rpb24gMy44LjEgKFRleHR1cmUgSW1hZ2UgU3BlY2lmaWNhdGlv
bikgYWRkIGEgbmV3Ci0gICAgc3Vic2VjdGlvbiBjYWxsZWQgIkltbXV0YWJsZS1mb3JtYXQgdGV4
dHVyZSBpbWFnZXMiOgotCi0gICAgIkFuIGFsdGVyYXRpdmUgc2V0IG9mIGNvbW1hbmRzIGlzIHBy
b3ZpZGVkIGZvciBzcGVjaWZ5aW5nIHRoZQotICAgIHByb3BlcnRpZXMgb2YgYWxsIGxldmVscyBv
ZiBhIHRleHR1cmUgYXQgb25jZS4gT25jZSBhIHRleHR1cmUgaXMKLSAgICBzcGVjaWZpZWQgd2l0
aCBzdWNoIGEgY29tbWFuZCwgdGhlIGZvcm1hdCBhbmQgZGltZW5zaW9ucyBvZiBhbGwKLSAgICBs
ZXZlbHMgYmVjb21lcyBpbW11dGFibGUsIHVubGVzcyBpdCBpcyBhIHByb3h5IHRleHR1cmUgKHNp
bmNlCi0gICAgb3RoZXJ3aXNlIGl0IHdvdWxkIG5vIGxvbmdlciBiZSBwb3NzaWJsZSB0byB1c2Ug
dGhlIHByb3h5KS4gVGhlCi0gICAgY29udGVudHMgb2YgdGhlIGltYWdlcyBhbmQgdGhlIHBhcmFt
ZXRlcnMgY2FuIHN0aWxsIGJlIG1vZGlmaWVkLgotICAgIFN1Y2ggYSB0ZXh0dXJlIGlzIHJlZmVy
cmVkIHRvIGFzIGFuICJpbW11dGFibGUtZm9ybWF0IiB0ZXh0dXJlLiBUaGUKLSAgICBpbW11dGFi
aWxpdHkgc3RhdHVzIG9mIGEgdGV4dHVyZSBjYW4gYmUgZGV0ZXJtaW5lZCBieSBjYWxsaW5nCi0g
ICAgR2V0VGV4UGFyYW1ldGVyIHdpdGggPHBuYW1lPiBURVhUVVJFX0lNTVVUQUJMRV9GT1JNQVRf
RVhULgotCi0gICAgRWFjaCBvZiB0aGUgY29tbWFuZHMgYmVsb3cgaXMgZGVzY3JpYmVkIGJ5IHBz
ZXVkby1jb2RlIHdoaWNoCi0gICAgaW5kaWNhdGVzIHRoZSBlZmZlY3Qgb24gdGhlIGRpbWVuc2lv
bnMgYW5kIGZvcm1hdCBvZiB0aGUgdGV4dHVyZS4KLSAgICBGb3IgYWxsIG9mIHRoZSBjb21tYW5k
cywgdGhlIGZvbGxvd2luZyBhcHBseSBpbiBhZGRpdGlvbiB0byB0aGUKLSAgICBwc2V1ZG8tY29k
ZToKLQotICAgIC0gSWYgdGhlIGRlZmF1bHQgdGV4dHVyZSBvYmplY3QgaXMgYm91bmQgdG8gPHRh
cmdldD4sIGFuCi0gICAgICBJTlZBTElEX09QRVJBVElPTiBlcnJvciBpcyBnZW5lcmF0ZWQuCi0g
ICAgLSBJZiBleGVjdXRpbmcgdGhlIHBzZXVkby1jb2RlIHdvdWxkIGxlYWQgdG8gYW4gZXJyb3Is
IHRoZSBlcnJvciBpcwotICAgICAgZ2VuZXJhdGVkIGFuZCB0aGUgY29tbWFuZCB3aWxsIGhhdmUg
bm8gZWZmZWN0LgotICAgIC0gQW55IGV4aXN0aW5nIGxldmVscyB0aGF0IGFyZSBub3QgcmVwbGFj
ZWQgYXJlIHJlc2V0IHRvIHRoZWlyCi0gICAgICBpbml0aWFsIHN0YXRlLgotICAgIC0gSWYgPHdp
ZHRoPiwgPGhlaWdodD4sIDxkZXB0aD4gb3IgPGxldmVscz4gaXMgbGVzcyB0aGFuIDEsIHRoZQot
ICAgICAgZXJyb3IgSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQuCi0gICAgLSBTaW5jZSBubyBw
aXhlbCBkYXRhIGFyZSBwcm92aWRlZCwgdGhlIDxmb3JtYXQ+IGFuZCA8dHlwZT4gdmFsdWVzCi0g
ICAgICB1c2VkIGluIHRoZSBwc2V1ZG8tY29kZSBhcmUgaXJyZWxldmFudDsgdGhleSBjYW4gYmUg
Y29uc2lkZXJlZCB0bwotICAgICAgYmUgYW55IHZhbHVlcyB0aGF0IGFyZSBsZWdhbCB0byB1c2Ug
d2l0aCA8aW50ZXJuYWxmb3JtYXQ+LgotICAgIC0gSWYgdGhlIGNvbW1hbmQgaXMgc3VjY2Vzc2Z1
bCwgVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUX0VYVCBiZWNvbWVzCi0gICAgICBUUlVFLgotICAg
IC0gSWYgPGludGVybmFsZm9ybWF0PiBpcyBhIHNwZWNpZmljIGNvbXByZXNzZWQgdGV4dHVyZSBm
b3JtYXQsIHRoZW4KLSAgICAgIHJlZmVyZW5jZXMgdG8gVGV4SW1hZ2UqIHNob3VsZCBiZSByZXBs
YWNlZCBieSBDb21wcmVzc2VkVGV4SW1hZ2UqLAotICAgICAgd2l0aCA8Zm9ybWF0PiwgPHR5cGU+
IGFuZCA8ZGF0YT4gcmVwbGFjZWQgYnkgYW55IHZhbGlkIDxpbWFnZVNpemU+IGFuZAotICAgICAg
PGRhdGE+LiBJZiB0aGVyZSBpcyBubyA8aW1hZ2VTaXplPiBmb3Igd2hpY2ggdGhpcyBjb21tYW5k
IHdvdWxkIGhhdmUKLSAgICAgIGJlZW4gdmFsaWQsIGFuIElOVkFMSURfT1BFUkFUSU9OIGVycm9y
IGlzIGdlbmVyYXRlZCBbZm46IFRoaXMKLSAgICAgIGNvbmRpdGlvbiBpcyBub3QgcmVxdWlyZWQg
Zm9yIE9wZW5HTCwgYnV0IGlzIG5lY2Vzc2FyeSBmb3IgT3BlbkdMCi0gICAgICBFUyB3aGljaCBk
b2VzIG5vdCBzdXBwb3J0IG9uLXRoZS1mbHkgY29tcHJlc3Npb24uXQotICAgIC0gSWYgPGludGVy
bmFsZm9ybWF0PiBpcyBvbmUgb2YgdGhlIGludGVybmFsIGZvcm1hdHMgbGlzdGVkIGluIHRhYmxl
Ci0gICAgICAzLjExLCBhbiBJTlZBTElEX0VOVU0gZXJyb3IgaXMgZ2VuZXJhdGVkLiBbZm46IFRo
ZSBjb3JyZXNwb25kaW5nIHRhYmxlCi0gICAgICBpbiBPcGVuR0wgRVMgMi4wIGlzIHRhYmxlIDMu
OC5dCi0KLSAgICBUaGUgY29tbWFuZAotCi0gICAgICAgIHZvaWQgVGV4U3RvcmFnZTFERVhUKGVu
dW0gdGFyZ2V0LCBzaXplaSBsZXZlbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVu
dW0gaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVpIHdp
ZHRoKTsKLQotICAgIHNwZWNpZmllcyBhbGwgdGhlIGxldmVscyBvZiBhIG9uZS1kaW1lbnNpb25h
bCB0ZXh0dXJlIChvciBwcm94eSkgYXQKLSAgICB0aGUgc2FtZSB0aW1lLiBJdCBpcyBkZXNjcmli
ZWQgYnkgdGhlIHBzZXVkby1jb2RlIGJlbG93OgotCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBs
ZXZlbHM7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgVGV4SW1hZ2UxRCh0YXJnZXQsIGks
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0
LCB0eXBlLCBOVUxMKTsKLSAgICAgICAgICAgIHdpZHRoID0gbWF4KDEsIGZsb29yKHdpZHRoIC8g
MikpOwotICAgICAgICB9Ci0KLSAgICBJZiA8dGFyZ2V0PiBpcyBub3QgVEVYVFVSRV8xRCBvciBQ
Uk9YWV9URVhUVVJFXzFEIHRoZW4gSU5WQUxJRF9FTlVNCi0gICAgaXMgZ2VuZXJhdGVkLiBJZiA8
bGV2ZWxzPiBpcyBncmVhdGVyIHRoYW4gZmxvb3IobG9nXzIod2lkdGgpKSArIDEKLSAgICB0aGVu
IElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZC4KLQotICAgIFRoZSBjb21tYW5kCi0KLSAg
ICAgICAgdm9pZCBUZXhTdG9yYWdlMkRFWFQoZW51bSB0YXJnZXQsIHNpemVpIGxldmVscywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZWkgd2lkdGgsIHNpemVpIGhlaWdodCk7Ci0KLSAgICBz
cGVjaWZpZXMgYWxsIHRoZSBsZXZlbHMgb2YgYSB0d28tZGltZW5zaW9uYWwsIGN1YmUtbWFwLAot
ICAgIG9uZS1kaW1lbnNpb24gYXJyYXkgb3IgcmVjdGFuZ2xlIHRleHR1cmUgKG9yIHByb3h5KSBh
dCB0aGUgc2FtZQotICAgIHRpbWUuIFRoZSBwc2V1ZG8tY29kZSBkZXBlbmRzIG9uIHRoZSA8dGFy
Z2V0PjoKLQotICAgIFtQUk9YWV9dVEVYVFVSRV8yRCwgW1BST1hZX11URVhUVVJFX1JFQ1RBTkdM
RSBvcgotICAgIFBST1hZX1RFWFRVUkVfQ1VCRV9NQVA6Ci0KLSAgICAgICAgZm9yIChpID0gMDsg
aSA8IGxldmVsczsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBUZXhJbWFnZTJEKHRhcmdl
dCwgaSwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsCi0gICAgICAgICAgICAgICAg
ICAgICAgIGZvcm1hdCwgdHlwZSwgTlVMTCk7Ci0gICAgICAgICAgICB3aWR0aCA9IG1heCgxLCBm
bG9vcih3aWR0aCAvIDIpKTsKLSAgICAgICAgICAgIGhlaWdodCA9IG1heCgxLCBmbG9vcihoZWln
aHQgLyAyKSk7Ci0gICAgICAgIH0KLQotICAgIFRFWFRVUkVfQ1VCRV9NQVA6Ci0KLSAgICAgICAg
Zm9yIChpID0gMDsgaSA8IGxldmVsczsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3Ig
ZmFjZSBpbiAoK1gsIC1YLCArWSwgLVksICtaLCAtWikKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBUZXhJbWFnZTJEKGZhY2UsIGksIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBOVUxMKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHdpZHRoID0gbWF4KDEsIGZsb29yKHdpZHRoIC8gMikp
OwotICAgICAgICAgICAgaGVpZ2h0ID0gbWF4KDEsIGZsb29yKGhlaWdodCAvIDIpKTsKLSAgICAg
ICAgfQotCi0gICAgW1BST1hZX11URVhUVVJFXzFEX0FSUkFZOgotCi0gICAgICAgIGZvciAoaSA9
IDA7IGkgPCBsZXZlbHM7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgVGV4SW1hZ2UyRCh0
YXJnZXQsIGksIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLAotICAgICAgICAgICAg
ICAgICAgICAgICBmb3JtYXQsIHR5cGUsIE5VTEwpOwotICAgICAgICAgICAgd2lkdGggPSBtYXgo
MSwgZmxvb3Iod2lkdGggLyAyKSk7Ci0gICAgICAgIH0KLQotICAgIElmIDx0YXJnZXQ+IGlzIG5v
dCBvbmUgb2YgdGhvc2UgbGlzdGVkIGFib3ZlLCB0aGUgZXJyb3IgSU5WQUxJRF9FTlVNCi0gICAg
aXMgZ2VuZXJhdGVkLgotCi0gICAgVGhlIGVycm9yIElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVy
YXRlZCBpZiBhbnkgb2YgdGhlIGZvbGxvd2luZwotICAgIGNvbmRpdGlvbnMgaG9sZDoKLSAgICAt
IDx0YXJnZXQ+IGlzIFtQUk9YWV9dVEVYVFVSRV8xRF9BUlJBWSBhbmQgPGxldmVscz4gaXMgZ3Jl
YXRlciB0aGFuCi0gICAgICBmbG9vcihsb2dfMih3aWR0aCkpICsgMQotICAgIC0gPHRhcmdldD4g
aXMgbm90IFtQUk9YWV9dVEVYVFVSRV8xRF9BUlJBWSBhbmQgPGxldmVscz4gaXMgZ3JlYXRlcgot
ICAgIHRoYW4gZmxvb3IobG9nXzIobWF4KHdpZHRoLCBoZWlnaHQpKSkgKyAxCi0KLSAgICBUaGUg
Y29tbWFuZAotCi0gICAgICAgIHZvaWQgVGV4U3RvcmFnZTNERVhUKGVudW0gdGFyZ2V0LCBzaXpl
aSBsZXZlbHMsIGVudW0gaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVpIHdpZHRoLCBzaXplaSBoZWlnaHQsIHNpemVpIGRlcHRoKTsKLQotICAgIHNwZWNp
ZmllcyBhbGwgdGhlIGxldmVscyBvZiBhIHRocmVlLWRpbWVuc2lvbmFsLCB0d28tZGltZW5zaW9u
YWwKLSAgICBhcnJheSB0ZXh0dXJlLCBvciBjdWJlLW1hcCBhcnJheSB0ZXh0dXJlIChvciBwcm94
eSkuIFRoZSBwc2V1ZG8tY29kZQotICAgIGRlcGVuZHMgb24gPHRhcmdldD46Ci0KLSAgICBbUFJP
WFlfXVRFWFRVUkVfM0Q6Ci0KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGxldmVsczsgaSsrKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBUZXhJbWFnZTNEKHRhcmdldCwgaSwgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCAwLAotICAgICAgICAgICAgICAgICAgICAgICBmb3Jt
YXQsIHR5cGUsIE5VTEwpOwotICAgICAgICAgICAgd2lkdGggPSBtYXgoMSwgZmxvb3Iod2lkdGgg
LyAyKSk7Ci0gICAgICAgICAgICBoZWlnaHQgPSBtYXgoMSwgZmxvb3IoaGVpZ2h0IC8gMikpOwot
ICAgICAgICAgICAgZGVwdGggPSBtYXgoMSwgZmxvb3IoZGVwdGggLyAyKSk7Ci0gICAgICAgIH0K
LQotICAgIFtQUk9YWV9dVEVYVFVSRV8yRF9BUlJBWSwgW1BST1hZX11URVhUVVJFX0NVQkVfTUFQ
X0FSUkFZX0FSQjoKLQotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGV2ZWxzOyBpKyspCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIFRleEltYWdlM0QodGFyZ2V0LCBpLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgZGVwdGgsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwg
dHlwZSwgTlVMTCk7Ci0gICAgICAgICAgICB3aWR0aCA9IG1heCgxLCBmbG9vcih3aWR0aCAvIDIp
KTsKLSAgICAgICAgICAgIGhlaWdodCA9IG1heCgxLCBmbG9vcihoZWlnaHQgLyAyKSk7Ci0gICAg
ICAgIH0KLQotICAgIElmIDx0YXJnZXQ+IGlzIG5vdCBvbmUgb2YgdGhvc2UgbGlzdGVkIGFib3Zl
LCB0aGUgZXJyb3IgSU5WQUxJRF9FTlVNCi0gICAgaXMgZ2VuZXJhdGVkLgotCi0gICAgVGhlIGVy
cm9yIElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBhbnkgb2YgdGhlIGZvbGxvd2lu
ZwotICAgIGNvbmRpdGlvbnMgaG9sZDoKLSAgICAtIDx0YXJnZXQ+IGlzIFtQUk9YWV9dVEVYVFVS
RV8zRCBhbmQgPGxldmVscz4gaXMgZ3JlYXRlciB0aGFuCi0gICAgICBmbG9vcihsb2dfMihtYXgo
d2lkdGgsIGhlaWdodCwgZGVwdGgpKSkgKyAxCi0gICAgLSA8dGFyZ2V0PiBpcyBbUFJPWFlfXVRF
WFRVUkVfMkRfQVJSQVkgb3IKLSAgICAgIFtQUk9YWV9dVEVYVFVSRV9DVUJFX01BUF9BUlJBWV9F
WFQgYW5kIDxsZXZlbHM+IGlzIGdyZWF0ZXIgdGhhbgotICAgICAgZmxvb3IobG9nXzIobWF4KHdp
ZHRoLCBoZWlnaHQpKSkgKyAxCi0KLSAgICBBZnRlciBhIHN1Y2Nlc3NmdWwgY2FsbCB0byBhbnkg
VGV4U3RvcmFnZSogY29tbWFuZCB3aXRoIGEgbm9uLXByb3h5Ci0gICAgdGFyZ2V0LCB0aGUgdmFs
dWUgb2YgVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUX0VYVCBmb3IgdGhpcyB0ZXh0dXJlCi0gICAg
b2JqZWN0IGlzIHNldCB0byBUUlVFLCBhbmQgbm8gZnVydGhlciBjaGFuZ2VzIHRvIHRoZSBkaW1l
bnNpb25zIG9yCi0gICAgZm9ybWF0IG9mIHRoZSB0ZXh0dXJlIG9iamVjdCBtYXkgYmUgbWFkZS4g
T3RoZXIgY29tbWFuZHMgbWF5IG9ubHkKLSAgICBhbHRlciB0aGUgdGV4ZWwgdmFsdWVzIGFuZCB0
ZXh0dXJlIHBhcmFtZXRlcnMuIFVzaW5nIGFueSBvZiB0aGUKLSAgICBmb2xsb3dpbmcgY29tbWFu
ZHMgd2l0aCB0aGUgc2FtZSB0ZXh0dXJlIHdpbGwgcmVzdWx0IGluIHRoZSBlcnJvcgotICAgIElO
VkFMSURfT1BFUkFUSU9OIGJlaW5nIGdlbmVyYXRlZCwgZXZlbiBpZiBpdCBkb2VzIG5vdCBhZmZl
Y3QgdGhlCi0gICAgZGltZW5zaW9ucyBvciBmb3JtYXQ6Ci0KLSAgICAgICAgLSBUZXhJbWFnZSoK
LSAgICAgICAgLSBDb21wcmVzc2VkVGV4SW1hZ2UqCi0gICAgICAgIC0gQ29weVRleEltYWdlKgot
ICAgICAgICAtIFRleFN0b3JhZ2UqCi0KLSAgICBUaGUgVGV4dHVyZVN0b3JhZ2UqIGNvbW1hbmRz
IG9wZXJhdGUgaWRlbnRpY2FsbHkgdG8gdGhlCi0gICAgY29ycmVzcG9uZGluZyBjb21tYW5kIHdo
ZXJlICJUZXh0dXJlIiBpcyBzdWJzdGl0dXRlZCBmb3IgIlRleCIKLSAgICBleGNlcHQsIHJhdGhl
ciB0aGFuIHVwZGF0aW5nIHRoZSBjdXJyZW50IGJvdW5kIHRleHR1cmUgZm9yIHRoZQotICAgIHRl
eHR1cmUgdW5pdCBpbmRpY2F0ZWQgYnkgdGhlIGN1cnJlbnQgYWN0aXZlIHRleHR1cmUgc3RhdGUg
YW5kIHRoZQotICAgIHRhcmdldCBwYXJhbWV0ZXIsIHRoZXNlICJUZXh0dXJlIiBjb21tYW5kcyB1
cGRhdGUgdGhlIHRleHR1cmUgb2JqZWN0Ci0gICAgbmFtZWQgYnkgdGhlIGluaXRpYWwgdGV4dHVy
ZSBwYXJhbWV0ZXIuIFRoZSBlcnJvciBJTlZBTElEX1ZBTFVFCi0gICAgaXMgZ2VuZXJhdGVkIGlm
IDx0ZXh0dXJlPiBpcyB6ZXJvLgotICAgICIKLQotICAgIEluIHNlY3Rpb24gMy44LjYgKFRleHR1
cmUgUGFyYW1ldGVycyksIGFmdGVyIHRoZSBzZW50ZW5jZQotCi0gICAgIkluIHRoZSByZW1haW5k
ZXIgb2Ygc2VjdGlvbiAzLjgsIGRlbm90ZSBieSBsb2RfbWluLCBsb2RfbWF4LAotICAgIGxldmVs
X2Jhc2UsIGFuZCBsZXZlbF9tYXggdGhlIHZhbHVlcyBvZiB0aGUgdGV4dHVyZSBwYXJhbWV0ZXJz
Ci0gICAgVEVYVFVSRV9NSU5fTE9ELCBURVhUVVJFX01BWF9MT0QsIFRFWFRVUkVfQkFTRV9MRVZF
TCwgYW5kCi0gICAgVEVYVFVSRV9NQVhfTEVWRUwgcmVzcGVjdGl2ZWx5LiIKLQotICAgIGFkZAot
Ci0gICAgIkhvd2V2ZXIsIGlmIFRFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVF9FWFQgaXMKLSAgICBU
UlVFLCB0aGVuIGxldmVsX2Jhc2UgaXMgY2xhbXBlZCB0byB0aGUgcmFuZ2UgWzAsIDxsZXZlbHM+
IC0gMV0gYW5kCi0gICAgbGV2ZWxfbWF4IGlzIHRoZW4gY2xhbXBlZCB0byB0aGUgcmFuZ2UgW2xl
dmVsX2Jhc2UsIDxsZXZlbHM+IC0gMV0sCi0gICAgd2hlcmUgPGxldmVscz4gaXMgdGhlIHBhcmFt
ZXRlciBwYXNzZWQgdGhlIGNhbGwgdG8gVGV4U3RvcmFnZSogZm9yCi0gICAgdGhlIHRleHR1cmUg
b2JqZWN0LgotCi0gICAgSW4gc2VjdGlvbiAzLjguOSAoUmVuZGVyaW5nIGZlZWRiYWNrIGxvb3Bz
KSByZXBsYWNlIGFsbCByZWZlcmVuY2VzCi0gICAgdG8gVEVYVFVSRV9CQVNFX0xFVkVMIGJ5IGxl
dmVsX2Jhc2UuCi0KLSAgICBJbiBzZWN0aW9uIDMuOC45IChNaXBtYXBwaW5nKSwgcmVwbGFjZSB0
aGUgcGFyYWdyYXBoIHN0YXJ0aW5nICJFYWNoCi0gICAgYXJyYXkgaW4gYSBtaXBtYXAgaXMgZGVm
aW5lZC4uLiIgYnkKLQotICAgICJFYWNoIGFycmF5IGluIGEgbWlwbWFwIGlzIGRlZmluZWQgdXNp
bmcgVGV4SW1hZ2UzRCwgVGV4SW1hZ2UyRCwKLSAgICBDb3B5VGV4SW1hZ2UyRCwgVGV4SW1hZ2Ux
RCwgQ29weVRleEltYWdlMUQsIG9yIGJ5IGZ1bmN0aW9ucyB0aGF0IGFyZQotICAgIGRlZmluZWQg
aW4gdGVybXMgb2YgdGhlc2UgZnVuY3Rpb25zLiBMZXZlbC1vZi1kZXRhaWwgbnVtYmVycyBwcm9j
ZWVkCi0gICAgZnJvbSBsZXZlbF9iYXNlIGZvciB0aGUgb3JpZ2luYWwgdGV4ZWwgYXJyYXkgdGhy
b3VnaCB0aGUgbWF4aW11bQotICAgIGxldmVsIHAsIHdpdGggZWFjaCB1bml0IGluY3JlYXNlIGlu
ZGljYXRpbmcgYW4gYXJyYXkgb2YgaGFsZiB0aGUKLSAgICBkaW1lbnNpb25zIG9mIHRoZSBwcmV2
aW91cyBvbmUgKHJvdW5kZWQgZG93biB0byB0aGUgbmV4dCBpbnRlZ2VyIGlmCi0gICAgZnJhY3Rp
b25hbCkgYXMgYWxyZWFkeSBkZXNjcmliZWQuIEZvciBpbW11dGFibGUtZm9ybWF0IHRleHR1cmVz
LAotICAgIHAgaXMgb25lIGxlc3MgdGhhbiB0aGUgPGxldmVscz4gcGFyYW1ldGVyIHBhc3NlZCB0
byBUZXhTdG9yYWdlKjsKLSAgICBvdGhlcndpc2UgcCA9IGZsb29yKGxvZ18yKG1heHNpemUpKSAr
IGxldmVsX2Jhc2UuICBBbGwgYXJyYXlzIGZyb20KLSAgICBsZXZlbF9iYXNlIHRocm91Z2ggcSA9
IG1pbihwLCBsZXZlbF9tYXgpIG11c3QgYmUgZGVmaW5lZCwgYXMKLSAgICBkaXNjdXNzZWQgaW4g
c2VjdGlvbiAzLjguMTIuIgotCi0gICAgSW4gc2VjdGlvbiAzLjguMTIgKFRleHR1cmUgQ29tcGxl
dGVuZXNzKSwgbW9kaWZ5IHRoZSBsYXN0IHNlbnRlbmNlCi0gICAgdG8gYXZvaWQgcmVmZXJpbmcg
dG8gbGV2ZWxfYmFzZSBhbmQgbGV2ZWxfbWF4OgotCi0gICAgIkFuIGltcGxlbWVudGF0aW9uIG1h
eSBhbGxvdyBhIHRleHR1cmUgaW1hZ2UgYXJyYXkgb2YgbGV2ZWwgMSBvcgotICAgIGdyZWF0ZXIg
dG8gYmUgY3JlYXRlZCBvbmx5IGlmIGEgbWlwbWFwIGNvbXBsZXRlIHNldCBvZiBpbWFnZSBhcnJh
eXMKLSAgICBjb25zaXN0ZW50IHdpdGggdGhlIHJlcXVlc3RlZCBhcnJheSBjYW4gYmUgc3VwcG9y
dGVkIHdoZXJlIHRoZQotICAgIHZhbHVlcyBvZiBURVhUVVJFX0JBU0VfTEVWRUwgYW5kIFRFWFRV
UkVfTUFYX0xFVkVMIGFyZSAwIGFuZCAxMDAwCi0gICAgcmVzcGVjdGl2ZWx5LiIKLQotICAgIE1v
ZGlmeSBzZWN0aW9uIDMuOC4xMyAoVGV4dHVyZSBTdGF0ZSBhbmQgUHJveHkgU3RhdGUpIHRvIGFk
ZCB0aGUgbmV3Ci0gICAgc3RhdGU6Ci0KLSAgICAiRWFjaCBzZXQgY29uc2lzdHMgb2YgLi4uLCBh
bmQgYSBib29sZWFuIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoZQotICAgIGZvcm1hdCBhbmQg
ZGltZW5zaW9ucyBvZiB0aGUgdGV4dHVyZSBhcmUgaW1tdXRhYmxlLiIKLQotICAgIEFkZAotICAg
ICJUaGUgaW5pdGlhbCB2YWx1ZSBvZiBURVhUVVJFX0lNTVVUQUJMRV9GT1JNQVRfRVhUIGlzIEZB
TFNFLiIKLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgNCBvZiB0aGUgT3BlbkdMIDMuMiBDb3JlIFBy
b2ZpbGUgU3BlY2lmaWNhdGlvbgotKFBlci1GcmFnbWVudCBPcGVyYXRpb25zIGFuZCB0aGUgRnJh
bWUgQnVmZmVyKQotCi0gICAgTm9uZQotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciA1IG9mIHRoZSBP
cGVuR0wgMy4yIENvbXBhdGliaWxpdHkgUHJvZmlsZSBTcGVjaWZpY2F0aW9uCi0oU3BlY2lhbCBG
dW5jdGlvbnMpCi0KLSAgICBJbiBzZWN0aW9uIDUuNC4xIChDb21tYW5kcyBOb3QgVXNhYmxlIGlu
IERpc3BsYXkgTGlzdHMpLCBhZGQKLSAgICBUZXhTdG9yYWdlKiB0byB0aGUgbGlzdCBvZiBjb21t
YW5kcyB0aGF0IGNhbm5vdCBiZSB1c2VkLgotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciA2IG9mIHRo
ZSBPcGVuR0wgMy4yIENvcmUgUHJvZmlsZSBTcGVjaWZpY2F0aW9uCi0oU3RhdGUgYW5kIFN0YXRl
IFJlcXVlc3RzKQotCi0gICAgUmVwbGFjZSB0aGUgZm9sbG93aW5nIHN0YXRlbWVudCBpbiA2LjEu
MyAoRW51bWVyYXRlZCBRdWVyaWVzKToKLQotICAgICI8dmFsdWU+IG11c3QgYmUgb25lIG9mIHRo
ZSBzeW1ib2xpYyB2YWx1ZXMgaW4gdGFibGUgMy4xMC4iCi0KLSAgICB3aXRoCi0KLSAgICAiPHZh
bHVlPiBtdXN0IGJlIFRFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVF9FWFQgb3Igb25lIG9mIHRoZSBz
eW1ib2xpYwotICAgIHZhbHVlcyBpbiB0YWJsZSAzLjIyLiIKLQotQWRkaXRpb25zIHRvIHRoZSBB
R0wvRUdML0dMWC9XR0wgU3BlY2lmaWNhdGlvbnMKLQotICAgIE5vbmUKLQotQWRkaXRpb25zIHRv
IE9FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlCi0KLSAgICBBZGQgdGhlIGZvbGxvd2lu
ZyB0byB0aGUgYWRkaXRpb25zIHRvIENoYXB0ZXIgMzoKLQotICAgICJTaW5jZSBFVEMxIGltYWdl
cyBhcmUgZWFzaWx5IGVkaXRlZCBhbG9uZyA0eDQgdGV4ZWwgYm91bmRhcmllcywgdGhlCi0gICAg
bGltaXRhdGlvbnMgb24gQ29tcHJlc3NlZFRleFN1YkltYWdlMkQgYXJlIHJlbGF4ZWQuCi0gICAg
Q29tcHJlc3NlZFRleFN1YkltYWdlMkQgd2lsbCByZXN1bHQgaW4gYW4gSU5WQUxJRF9PUEVSQVRJ
T04gZXJyb3IKLSAgICBvbmx5IGlmIG9uZSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgb2Nj
dXJzOgotCi0gICAgICAgICogPHdpZHRoPiBpcyBub3QgYSBtdWx0aXBsZSBvZiBmb3VyLCBhbmQg
PHdpZHRoPiBwbHVzIDx4b2Zmc2V0PiBpcyBub3QKLSAgICAgICAgICBlcXVhbCB0byB0aGUgdGV4
dHVyZSB3aWR0aDsKLQotICAgICAgICAqIDxoZWlnaHQ+IGlzIG5vdCBhIG11bHRpcGxlIG9mIGZv
dXIsIGFuZCA8aGVpZ2h0PiBwbHVzIDx5b2Zmc2V0PiBpcwotICAgICAgICAgIG5vdCBlcXVhbCB0
byB0aGUgdGV4dHVyZSBoZWlnaHQ7IG9yCi0KLSAgICAgICAgKiA8eG9mZnNldD4gb3IgPHlvZmZz
ZXQ+IGlzIG5vdCBhIG11bHRpcGxlIG9mIGZvdXIuCi0KLSAgICBSZW1vdmUgQ29tcHJlc3NlZFRl
eFN1YkltYWdlMkQgZnJvbSB0aGlzIGVycm9yOgotCi0gICAgIklOVkFMSURfT1BFUkFUSU9OIGlz
IGdlbmVyYXRlZCBieSBDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCwKLSAgICBUZXhTdWJJbWFnZTJE
LCBvciBDb3B5VGV4U3ViSW1hZ2UyRCBpZiB0aGUgdGV4dHVyZSBpbWFnZSA8bGV2ZWw+Ci0gICAg
Ym91bmQgdG8gPHRhcmdldD4gaGFzIGludGVybmFsIGZvcm1hdCBFVEMxX1JHQjhfT0VTLiIKLQot
ICAgIEFkZCB0aGUgZm9sbG93aW5nIGVycm9yOgotCi0gICAgIklOVkFMSURfT1BFUkFUSU9OIGlz
IGdlbmVyYXRlZCBieSBDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRAotICAgIGlmIHRoZSByZWdpb24g
dG8gYmUgbW9kaWZpZWQgaXMgbm90IGFsaWduZWQgdG8gYmxvY2sgYm91bmRhcmllcwotICAgIChy
ZWZlciB0byB0aGUgZXh0ZW5zaW9uIHRleHQgZm9yIGRldGFpbHMpLiIKLQotQWRkaXRpb25zIHRv
IEFNRF9jb21wcmVzc2VkX0FUQ190ZXh0dXJlIGFuZCBBTURfY29tcHJlc3NlZF8zRENfdGV4dHVy
ZToKLQotICAgIEFwcGx5IHRoZSBzYW1lIGNoYW5nZXMgYXMgZm9yIE9FU19jb21wcmVzc2VkX0VU
QzFfUkdCOF90ZXh0dXJlCi0gICAgYWJvdmUsIHN1YnN0aXR1dGluZyB0aGUgYXBwcm9wcmlhdGUg
aW50ZXJuYWwgZm9ybWF0IHRva2VucyBmcm9tCi0gICAgdGhlc2UgZXh0ZW5zaW9ucy4KLQotRGVw
ZW5kZW5jaWVzIG9uIEVYVF9kaXJlY3Rfc3RhdGVfYWNjZXNzCi0KLSAgICBJZiBFWFRfZGlyZWN0
X3N0YXRlX2FjY2VzcyBpcyBub3QgcHJlc2VudCwgcmVmZXJlbmNlcyB0bwotICAgIFRleHR1cmVT
dG9yYWdlKiBzaG91bGQgYmUgaWdub3JlZC4KLQotRGVwZW5kZW5jaWVzIG9uIE9wZW5HTCBFUwot
Ci0gICAgT24gT3BlbkdMIEVTIHdpdGhvdXQgZXh0ZW5zaW9ucyBpbnRyb2R1Y2luZyBURVhUVVJF
X01BWF9MRVZFTCwKLSAgICBtaXBtYXBwZWQgdGV4dHVyZXMgc3BlY2lmaWVkIHdpdGggVGV4U3Rv
cmFnZSBhcmUgcmVxdWlyZWQgdG8gaGF2ZSBhCi0gICAgZnVsbCBzZXQgb2YgbWlwbWFwcy4gSWYg
VEVYVFVSRV9NQVhfTEVWRUwgaXMgbm90IHN1cHBvcnRlZCwgdGhpcwotICAgIGV4dGVuc2lvbiBp
cyBtb2RpZmllZCBhcyBmb2xsb3dzOgotCi0gICAgLSBXaGVyZSBhbiB1cHBlciBib3VuZCBpcyBw
bGFjZWQgb24gPGxldmVscz4gaW4gdGhpcyBleHRlbnNpb24gKGkuZS4KLSAgICAgIHRoZSBtYXhp
bXVtIG51bWJlciBvZiBtaXBtYXAgbGV2ZWxzIGZvciBhIHRleHR1cmUgb2YgdGhlIGdpdmVuCi0g
ICAgICB0YXJnZXQgYW5kIGRpbWVuc2lvbnMpLCBhbiBJTlZBTElEX09QRVJBVElPTiBlcnJvciBp
cyBnZW5lcmF0ZWQgaWYKLSAgICAgIDxsZXZlbHM+IGlzIG5laXRoZXIgMSBub3IgdGhpcyB1cHBl
ciBib3VuZC4KLSAgICAtIHEgKHRoZSBlZmZlY3RpdmUgbWF4aW11bSBudW1iZXIgb2YgbGV2ZWxz
KSBpcyByZWRlZmluZWQgdG8gY2xhbXAKLSAgICAgIHRvIHRoZSBudW1iZXIgb2YgbGV2ZWxzIHBy
ZXNlbnQgaW4gaW1tdXRhYmxlLWZvcm1hdCB0ZXh0dXJlcy4KLQotICAgIE9wZW5HTCBFUyBkb2Vz
IG5vdCBhY2NlcHQgc2l6ZWQgaW50ZXJuYWwgZm9ybWF0cyAoZS5nLiwgUkdCQTgpIGFuZAotICAg
IGluc3RlYWQgZGVyaXZlcyBhbiBpbnRlcm5hbCBmb3JtYXQgZnJvbSB0aGUgPGZvcm1hdD4gYW5k
IDx0eXBlPgotICAgIHBhcmFtZXRlcnMgb2YgVGV4SW1hZ2UyRC4gU2luY2UgVGV4U3RvcmFnZSog
ZG9lcyBub3Qgc3BlY2lmeSB0ZXhlbAotICAgIGRhdGEsIHRoZSBBUEkgZG9lc24ndCBpbmNsdWRl
IDxmb3JtYXQ+IGFuZCA8dHlwZT4gcGFyYW1ldGVycy4KLSAgICBPbiBhbiBPcGVuR0wgRVMgaW1w
bGVtZW50YXRpb24sIHRoZSB2YWx1ZXMgaW4gdGhlIDxpbnRlcm5hbGZvcm1hdD4KLSAgICBjb2x1
bW4gaW4gdGhlIHRhYmxlcyBiZWxvdyBhcmUgYWNjZXB0ZWQgYXMgPGludGVybmFsZm9ybWF0Pgot
ICAgIHBhcmFtZXRlcnMsIGFuZCBiYXNlIGludGVybmFsIGZvcm1hdHMgYXJlIG5vdCBhY2NlcHRl
ZC4gVGhlCi0gICAgVGV4SW1hZ2UqIGNhbGxzIGluIHRoZSBUZXhTdG9yYWdlKiBwc2V1ZG9jb2Rl
IGFyZSBtb2RpZmllZCBzbyB0aGF0Ci0gICAgdGhlIDxpbnRlcm5hbGZvcm1hdD4sIDxmb3JtYXQ+
IGFuZCA8dHlwZT4gcGFyYW1ldGVycyBhcmUKLSAgICB0YWtlbiBmcm9tIHRoZSA8Zm9ybWF0Piwg
PGZvcm1hdD4gYW5kIDx0eXBlPiBjb2x1bW5zIChyZXNwZWN0aXZlbHkpCi0gICAgaW4gdGhlIHRh
YmxlcyBiZWxvdywgYWNjb3JkaW5nIHRvIHRoZSA8aW50ZXJuYWxmb3JtYXQ+Ci0gICAgc3BlY2lm
aWVkIGluIHRoZSBUZXhTdG9yYWdlKiBjb21tYW5kLgotCi0gICAgICAgIDxpbnRlcm5hbGZvcm1h
dD4gICAgICAgPGZvcm1hdD4gICAgICAgICAgIDx0eXBlPgotICAgICAgICAtLS0tLS0tLS0tLS0t
LS0tICAgICAgIC0tLS0tLS0tICAgICAgICAgICAtLS0tLS0KLSAgICAgICAgUkdCNTY1ICAgICAg
ICAgICAgICAgICBSR0IgICAgICAgICAgICAgICAgVU5TSUdORURfU0hPUlRfNV82XzUKLSAgICAg
ICAgUkdCQTQgICAgICAgICAgICAgICAgICBSR0JBICAgICAgICAgICAgICAgVU5TSUdORURfU0hP
UlRfNF80XzRfNAotICAgICAgICBSR0I1X0ExICAgICAgICAgICAgICAgIFJHQkEgICAgICAgICAg
ICAgICBVTlNJR05FRF9TSE9SVF81XzVfNV8xCi0gICAgICAgIFJHQjhfT0VTICAgICAgICAgICAg
ICAgUkdCICAgICAgICAgICAgICAgIFVOU0lHTkVEX0JZVEUKLSAgICAgICAgUkdCQThfT0VTICAg
ICAgICAgICAgICBSR0JBICAgICAgICAgICAgICAgVU5TSUdORURfQllURQotICAgICAgICBMVU1J
TkFOQ0U4X0FMUEhBOF9FWFQgIExVTUlOQU5DRV9BTFBIQSAgICBVTlNJR05FRF9CWVRFCi0gICAg
ICAgIExVTUlOQU5DRThfRVhUICAgICAgICAgTFVNSU5BTkNFICAgICAgICAgIFVOU0lHTkVEX0JZ
VEUKLSAgICAgICAgQUxQSEE4X0VYVCAgICAgICAgICAgICBBTFBIQSAgICAgICAgICAgICAgVU5T
SUdORURfQllURQotCi0gICAgSWYgT0VTX2RlcHRoX3RleHR1cmUgaXMgc3VwcG9ydGVkOgotCi0g
ICAgICAgIDxpbnRlcm5hbGZvcm1hdD4gICAgICAgPGZvcm1hdD4gICAgICAgICAgIDx0eXBlPgot
ICAgICAgICAtLS0tLS0tLS0tLS0tLS0tICAgICAgIC0tLS0tLS0tICAgICAgICAgICAtLS0tLS0K
LSAgICAgICAgREVQVEhfQ09NUE9ORU5UMTZfT0VTICBERVBUSF9DT01QT05FTlQgICAgVU5TSUdO
RURfU0hPUlQKLSAgICAgICAgREVQVEhfQ09NUE9ORU5UMzJfT0VTICBERVBUSF9DT01QT05FTlQg
ICAgVU5TSUdORURfSU5UCi0KLSAgICBJZiBPRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwgaXMgc3Vw
cG9ydGVkOgotCi0gICAgICAgIDxpbnRlcm5hbGZvcm1hdD4gICAgICAgPGZvcm1hdD4gICAgICAg
ICAgIDx0eXBlPgotICAgICAgICAtLS0tLS0tLS0tLS0tLS0tICAgICAgIC0tLS0tLS0tICAgICAg
ICAgICAtLS0tLS0KLSAgICAgICAgREVQVEgyNF9TVEVOQ0lMOF9PRVMgICBERVBUSF9TVEVOQ0lM
X09FUyAgVU5TSUdORURfSU5UCi0KLSAgICBJZiBPRVNfdGV4dHVyZV9mbG9hdCBpcyBzdXBwb3J0
ZWQ6Ci0KLSAgICAgICAgPGludGVybmFsZm9ybWF0PiAgICAgICA8Zm9ybWF0PiAgICAgICAgICAg
PHR5cGU+Ci0gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0gICAgICAgLS0tLS0tLS0gICAgICAgICAg
IC0tLS0tLQotICAgICAgICBSR0JBMzJGX0VYVCAgICAgICAgICAgIFJHQkEgICAgICAgICAgICAg
ICBGTE9BVAotICAgICAgICBSR0IzMkZfRVhUICAgICAgICAgICAgIFJHQiAgICAgICAgICAgICAg
ICBGTE9BVAotICAgICAgICBMVU1JTkFOQ0VfQUxQSEEzMkZfRVhUIExVTUlOQU5DRV9BTFBIQSAg
ICBGTE9BVAotICAgICAgICBMVU1JTkFOQ0UzMkZfRVhUICAgICAgIExVTUlOQU5DRSAgICAgICAg
ICBGTE9BVCAKLSAgICAgICAgQUxQSEEzMkZfRVhUICAgICAgICAgICBBTFBIQSAgICAgICAgICAg
ICAgRkxPQVQKLQotICAgIElmIE9FU190ZXh0dXJlX2hhbGZfZmxvYXQgaXMgc3VwcG9ydGVkOgot
Ci0gICAgICAgIDxpbnRlcm5hbGZvcm1hdD4gICAgICAgPGZvcm1hdD4gICAgICAgICAgIDx0eXBl
PgotICAgICAgICAtLS0tLS0tLS0tLS0tLS0tICAgICAgIC0tLS0tLS0tICAgICAgICAgICAtLS0t
LS0KLSAgICAgICAgUkdCQTE2Rl9FWFQgICAgICAgICAgICBSR0JBICAgICAgICAgICAgICAgSEFM
Rl9GTE9BVF9PRVMKLSAgICAgICAgUkdCMTZGX0VYVCAgICAgICAgICAgICBSR0IgICAgICAgICAg
ICAgICAgSEFMRl9GTE9BVF9PRVMKLSAgICAgICAgTFVNSU5BTkNFX0FMUEhBMTZGX0VYVCBMVU1J
TkFOQ0VfQUxQSEEgICAgSEFMRl9GTE9BVF9PRVMKLSAgICAgICAgTFVNSU5BTkNFMTZGX0VYVCAg
ICAgICBMVU1JTkFOQ0UgICAgICAgICAgSEFMRl9GTE9BVF9PRVMgCi0gICAgICAgIEFMUEhBMTZG
X0VYVCAgICAgICAgICAgQUxQSEEgICAgICAgICAgICAgIEhBTEZfRkxPQVRfT0VTCi0KLSAgICBJ
ZiBFWFRfdGV4dHVyZV90eXBlXzJfMTBfMTBfMTBfUkVWIGlzIHN1cHBvcnRlZDoKLQotICAgICAg
ICA8aW50ZXJuYWxmb3JtYXQ+ICAgIDxmb3JtYXQ+ICAgPHR5cGU+Ci0gICAgICAgIC0tLS0tLS0t
LS0tLS0tLS0gICAgLS0tLS0tLS0gICAtLS0tLS0KLSAgICAgICAgUkdCMTBfQTJfRVhUICAgICAg
ICBSR0JBICAgICAgIFVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVl9FWFQKLSAgICAgICAgUkdC
MTBfRVhUICAgICAgICAgICBSR0IgICAgICAgIFVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVl9F
WFQKLQotICAgIElmIEVYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCBpcyBzdXBwb3J0ZWQ6Ci0K
LSAgICAgICAgPGludGVybmFsZm9ybWF0PiAgICA8Zm9ybWF0PiAgIDx0eXBlPgotICAgICAgICAt
LS0tLS0tLS0tLS0tLS0tICAgIC0tLS0tLS0tICAgLS0tLS0tCi0gICAgICAgIEJHUkE4X0VYVCAg
ICAgICAgICAgQkdSQV9FWFQgICBVTlNJR05FRF9CWVRFCi0KLQotRGVwZW5kZW5jaWVzIG9uIHRl
eHR1cmUgdGFyZ2V0cwotCi0gICAgSWYgYSBwYXJ0aWN1bGFyIHRleHR1cmUgdGFyZ2V0IGlzIG5v
dCBzdXBwb3J0ZWQgYnkgdGhlCi0gICAgaW1wbGVtZW50YXRpb24sIHBhc3NpbmcgaXQgYXMgYSA8
dGFyZ2V0PiB0byBUZXhTdG9yYWdlKiB3aWxsCi0gICAgZ2VuZXJhdGUgYW4gSU5WQUxJRF9FTlVN
IGVycm9yLiBJZiBhcyBhIHJlc3VsdCwgYW55IG9mIHRoZSBjb21tYW5kcwotICAgIGRlZmluZWQg
aW4gdGhpcyBleHRlbnNpb24gd291bGQgbm8gbG9uZ2VyIGhhdmUgYW55IHZhbGlkIDx0YXJnZXQ+
LAotICAgIGFsbCByZWZlcmVuY2VzIHRvIHRoZSBjb21tYW5kIHNob3VsZCBiZSBpZ25vcmVkLgot
Ci0gICAgSW4gcGFydGljdWxhciwgbm90ZSB0aGF0IE9wZW5HTCBFUyAxLngvMi4wIGRvIG5vdCBo
YXZlIHByb3h5IHRleHR1cmVzLAotICAgIDFEIHRleHR1cmVzLCBvciAzRCB0ZXh0dXJlcywgYW5k
IHRodXMgb25seSB0aGUgVGV4U3RvcmFnZTJERVhUCi0gICAgZW50cnkgcG9pbnQgaXMgcmVxdWly
ZWQuIElmIE9FU190ZXh0dXJlXzNEIGlzIHN1cHBvcnRlZCwgdGhlCi0gICAgVGV4U3RvcmFnZTNE
RVhUIGVudHJ5IHBvaW50IGlzIGFsc28gcmVxdWlyZWQuCi0KLURlcGVuZGVuY2llcyBvbiBPRVNf
dGV4dHVyZV9ucG90Ci0KLSAgICBJZiBPcGVuR0wgRVMgMi4wIG9yIEFQUExFX3RleHR1cmVfMkRf
bGltaXRlZF9ucG90IGlzIHByZXNlbnQgYnV0Ci0gICAgT0VTX3RleHR1cmVfbnBvdCBpcyBub3Qg
cHJlc2VudCwgdGhlbiBJTlZBTElEX09QRVJBVElPTiBpcwotICAgIGdlbmVyYXRlZCBieSBUZXhT
dG9yYWdlKiBhbmQgVGV4U3RvcmFnZTNERVhUIGlmIDxsZXZlbHM+IGlzCi0gICAgbm90IG9uZSBh
bmQgPHdpZHRoPiwgPGhlaWdodD4gb3IgPGRlcHRoPiBpcyBub3QgYSBwb3dlciBvZgotICAgIHR3
by4KLQotRGVwZW5kZW5jaWVzIG9uIFdHTF9BUkJfcmVuZGVyX3RleHR1cmUsIEdMWF9FWFRfdGV4
dHVyZV9mcm9tX3BpeG1hcCwgRUdMCi0xLjQgYW5kIEdMX09FU19FR0xfaW1hZ2UKLQotICAgIFRo
ZSBjb21tYW5kcyBlZ2xCaW5kVGV4SW1hZ2UsIHdnbEJpbmRUZXhJbWFnZUFSQiwgZ2xYQmluZFRl
eEltYWdlRVhUIG9yCi0gICAgRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMgYXJlIG5vdCBwZXJt
aXR0ZWQgb24gYW4gaW1tdXRhYmxlLWZvcm1hdAotICAgIHRleHR1cmUuCi0gICAgVGhleSB3aWxs
IGdlbmVyYXRlIHRoZSBmb2xsb3dpbmcgZXJyb3JzOgotICAgICAgLSBFR0xJbWFnZVRhcmdldFRl
eHR1cmUyRE9FUzogSU5WQUxJRF9PUEVSQVRJT04KLSAgICAgIC0gZWdsQmluZFRleEltYWdlOiBF
R0xfQkFEX01BVENICi0gICAgICAtIHdnbEJpbmRUZXhJbWFnZTogRVJST1JfSU5WQUxJRF9PUEVS
QVRJT04KLSAgICAgIC0gZ2xYQmluZFRleEltYWdlRVhUOiBCYWRNYXRjaAotCi1EZXBlbmRlbmNp
ZXMgb24gT0VTX2NvbXByZXNzZWRfcGFsZXR0ZWRfdGV4dHVyZQotCi0gICAgVGhlIGNvbXByZXNz
ZWQgdGV4dHVyZSBmb3JtYXRzIGV4cG9zZWQgYnkKLSAgICBPRVNfY29tcHJlc3NlZF9wYWxldHRl
ZF90ZXh0dXJlIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IFRleFN0b3JhZ2UqLgotICAgIFBhc3Npbmcg
b25lIG9mIHRoZXNlIHRva2VucyB0byBUZXhTdG9yYWdlKiB3aWxsIGdlbmVyYXRlIGFuCi0gICAg
SU5WQUxJRF9FTlVNIGVycm9yLgotCi1FcnJvcnMKLQotICAgIE5vdGUgdGhhdCBkZXBlbmRlbmNp
ZXMgYWJvdmUgbW9kaWZ5IHRoZSBlcnJvcnMuCi0KLSAgICBJZiBUZXhTdG9yYWdlKiBpcyBjYWxs
ZWQgd2l0aCBhIDx3aWR0aD4sIDxoZWlnaHQ+LCA8ZGVwdGg+IG9yCi0gICAgPGxldmVscz4gcGFy
YW1ldGVyIHRoYXQgaXMgbGVzcyB0aGFuIG9uZSwgdGhlbiB0aGUgZXJyb3IKLSAgICBJTlZBTElE
X1ZBTFVFIGlzIGdlbmVyYXRlZC4KLQotICAgIElmIHRoZSA8dGFyZ2V0PiBwYXJhbWV0ZXIgdG8g
VGV4U3RvcmFnZTFERVhUIGlzIG5vdAotICAgIFtQUk9YWV9dVEVYVFVSRV8xRCwgdGhlbiB0aGUg
ZXJyb3IgSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZC4KLQotICAgIElmIHRoZSA8dGFyZ2V0PiBw
YXJhbWV0ZXIgdG8gVGV4U3RvcmFnZTJERVhUIGlzIG5vdAotICAgIFtQUk9YWV9dVEVYVFVSRV8y
RCwgW1BST1hZX11URVhUVVJFX0NVQkVfTUFQLAotICAgIFtQUk9YWV9dVEVYVFVSRV9SRUNUQU5H
TEUgb3IgW1BST1hZX11URVhUVVJFXzFEX0FSUkFZLCB0aGVuIHRoZQotICAgIGVycm9yIElOVkFM
SURfRU5VTSBpcyBnZW5lcmF0ZWQuCi0KLSAgICBJZiB0aGUgPHRhcmdldD4gcGFyYW1ldGVyIHRv
IFRleFN0b3JhZ2UzREVYVCBpcyBub3QKLSAgICBbUFJPWFlfXVRFWFRVUkVfM0QsIFtQUk9YWV9d
VEVYVFVSRV8yRF9BUlJBWSBvcgotICAgIFtQUk9YWV9dVEVYVFVSRV9DVUJFX01BUF9BUlJBWSB0
aGVuIHRoZSBlcnJvciBJTlZBTElEX0VOVU0gaXMKLSAgICBnZW5lcmF0ZWQuCi0KLSAgICBJZiB0
aGUgPGxldmVscz4gcGFyYW1ldGVyIHRvIFRleFN0b3JhZ2UqIGlzIGdyZWF0ZXIgdGhhbiB0aGUK
LSAgICA8dGFyZ2V0Pi1zcGVjaWZpYyB2YWx1ZSBsaXN0ZWQgYmVsb3cgdGhlbiB0aGUgZXJyb3IK
LSAgICBJTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQ6Ci0gICAgICAgIFtQUk9YWV9dVEVY
VFVSRV97MUQsMURfQVJSQVl9OgotICAgICAgICAgICAgZmxvb3IobG9nXzIod2lkdGgpKSArIDEK
LSAgICAgICAgW1BST1hZX11URVhUVVJFX3syRCwyRF9BUlJBWSxDVUJFX01BUCxDVUJFX01BUF9B
UlJBWX06Ci0gICAgICAgICAgICBmbG9vcihsb2dfMihtYXgod2lkdGgsIGhlaWdodCkpKSArIDEK
LSAgICAgICAgW1BST1hZX11URVhUVVJFXzNEOgotICAgICAgICAgICAgZmxvb3IobG9nXzIobWF4
KHdpZHRoLCBoZWlnaHQsIGRlcHRoKSkpICsgMQotICAgICAgICBbUFJPWFlfXVRFWFRVUkVfUkVD
VEFOR0xFOgotICAgICAgICAgICAgMQotCi0gICAgSWYgdGhlIGRlZmF1bHQgdGV4dHVyZSBvYmpl
Y3QgaXMgYm91bmQgdG8gdGhlIDx0YXJnZXQ+IHBhc3NlZCB0bwotICAgIFRleFN0b3JhZ2UqLCB0
aGVuIHRoZSBlcnJvciBJTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQuCi0KLSAgICBJZiB0
aGUgPHRhcmdldD4gcGFyYW1ldGVyIHRvIFRleHR1cmVTdG9yYWdlKiBkb2VzIG5vdCBtYXRjaCB0
aGUKLSAgICBkaW1lbnNpb25hbGl0eSBvZiA8dGV4dHVyZT4sIHRoZW4gdGhlIGVycm9yIElOVkFM
SURfT1BFUkFUSU9OIGlzCi0gICAgZ2VuZXJhdGVkLgotCi0gICAgSWYgdGhlIDx0ZXh0dXJlPiBw
YXJhbWV0ZXIgdG8gVGV4dHVyZVN0b3JhZ2UqIGlzIHplcm8sIHRoZW4gdGhlCi0gICAgSU5WQUxJ
RF9WQUxVRSBpcyBnZW5lcmF0ZWQuCi0KLSAgICBJZiBhbnkgcHNldWRvLWNvZGUgbGlzdGVkIGlu
IHRoaXMgZXh0ZW5zaW9uIHdvdWxkIGdlbmVyYXRlIGFuIGVycm9yLAotICAgIHRoZW4gdGhhdCBl
cnJvciBpcyBnZW5lcmF0ZWQuCi0KLSAgICBDYWxsaW5nIGFueSBvZiB0aGUgZm9sbG93aW5nIGZ1
bmN0aW9ucyBvbiBhIHRleHR1cmUgZm9yIHdoaWNoCi0gICAgVEVYVFVSRV9JTU1VVEFCTEVfRk9S
TUFUX0VYVCBpcyBUUlVFIHdpbGwgZ2VuZXJhdGUgYW4KLSAgICBJTlZBTElEX09QRVJBVElPTiBl
cnJvcjoKLSAgICAgICAgLSBUZXhJbWFnZSoKLSAgICAgICAgLSBDb21wcmVzc2VkVGV4SW1hZ2Uq
Ci0gICAgICAgIC0gQ29weVRleEltYWdlKgotCi1OZXcgU3RhdGUKLQotICAgIEFkZGl0aW9ucyB0
byBUYWJsZSA2LjggVGV4dHVyZXMgKHN0YXRlIHBlciB0ZXh0dXJlIG9iamVjdCkKLQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SW5pdGlhbAotICAgICAgICBHZXQgVmFsdWUgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgIEdl
dCBDb21tYW5kICAgICAgVmFsdWUgICAgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgU2VjLgot
ICAgICAgICAtLS0tLS0tLS0gICAgICAgICAgICAgICAgICAgICAgLS0tLSAgIC0tLS0tLS0tLS0t
ICAgICAgLS0tLS0tLSAgLS0tLS0tLS0tLS0gICAgICAgICAgICAgICAgLS0tLQotICAgICAgICBU
RVhUVVJFX0lNTVVUQUJMRV9GT1JNQVRfRVhUICAgQiAgICAgIEdldFRleFBhcmFtZXRlciAgRkFM
U0UgICAgU2l6ZSBhbmQgZm9ybWF0IGltbXV0YWJsZSAgMi42Ci0KLU5ldyBJbXBsZW1lbnRhdGlv
biBEZXBlbmRlbnQgU3RhdGUKLQotICAgIE5vbmUKLQotSXNzdWVzCi0KLSAgICAxLiBXaGF0IHNo
b3VsZCB0aGlzIGV4dGVuc2lvbiBiZSBjYWxsZWQ/Ci0KLSAgICBSRVNPTFZFRDogRVhUX3RleHR1
cmVfc3RvcmFnZSBpcyBjaG9zZW4gZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlCi0gICAgZ2xSZW5k
ZXJidWZmZXJTdG9yYWdlIGVudHJ5IHBvaW50LgotCi0gICAgMi4gU2hvdWxkIFRleFN0b3JhZ2Uq
IGFjY2VwdCBhIGJvcmRlciBwYXJhbWV0ZXI/Ci0KLSAgICBSRVNPTFZFRDogbm8uCi0KLSAgICBE
SVNDVVNTSU9OOiBDdXJyZW50bHkgaXQgZG9lcyBub3QsIHNpbmNlIGJvcmRlcnMgYXJlIGEgZGVw
cmVjYXRlZAotICAgIGZlYXR1cmUgd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBieSBhbGwgaGFyZHdh
cmUuIFVzZXJzIG9mIHRoZQotICAgIGNvbXBhdGliaWxpdHkgcHJvZmlsZSBjYW4gY29udGludWUg
dG8gdXNlIHRoZSBleGlzdGluZyB0ZXh0dXJlCi0gICAgc3BlY2lmaWNhdGlvbiBmdW5jdGlvbnMs
IGJ1dCB0aGVyZSBpcyBhbiBhcmd1bWVudCB0aGF0IHVzZXJzIG9mCi0gICAgY29tcGF0aWJpbGl0
eSBwcm9maWxlIG1heSBhbHNvIHdhbnQgdG8gdXNlIHRoaXMgZXh0ZW5zaW9uLgotCi0gICAgMy4g
V2hhdCBpcyB0aGUgY29ycmVjdCBlcnJvciB3aGVuIDxsZXZlbHM+IHNwZWNpZmllcyBhIHBhcnRp
YWwKLSAgICBtaXBtYXAgcHlyYW1pZCBmb3IgT3BlbkdMIEVTPwotCi0gICAgUkVTT0xWRUQ6IElO
VkFMSURfT1BFUkFUSU9OLCBzaW5jZSBpdCBpcyBhbiBpbnRlcmFjdGlvbiBiZXR3ZWVuCi0gICAg
cGFyYW1ldGVycyByYXRoZXIgdGhhbiBhIHNpbmdsZSB2YWx1ZSBiZWluZyBpbnZhbGlkLiBJdCBh
bHNvIG1ha2VzCi0gICAgc2Vuc2UgdG8gcmVsYXggdGhpcyBjb25kaXRpb24gZm9yIGRlc2t0b3Ag
R0wgd2hlcmUgaXQgbWFrZXMgc2Vuc2UgdG8KLSAgICB1c2UgYSB0cnVuY2F0ZWQgcHlyYW1pZCB3
aXRoIFRFWFRVUkVfTUFYX0xFVkVMLgotCi0gICAgNC4gU2hvdWxkIHVzZSBvZiB0aGVzZSBlbnRy
eS1wb2ludHMgbWFrZSB0aGUgbWV0YWRhdGEgKGZvcm1hdCBhbmQKLSAgICBkaW1lbnNpb25zKSBp
bW11dGFibGU/Ci0KLSAgICBSRVNPTFZFRDogWWVzLgotCi0gICAgRElTQ1VTU0lPTjogVGhlIGJl
bmVmaXRzIG9mIGtub3dpbmcgbWV0YWRhdGEgY2FuJ3QgY2hhbmdlIHdpbGwKLSAgICBwcm9iYWJs
eSBvdXR3ZWlnaCB0aGUgZXh0cmEgY29zdCBvZiBjaGVja2luZyB0aGUKLSAgICBURVhUVVJFX0lN
TVVUQUJMRV9GT1JNQVRfRVhUIGZsYWcgb24gZWFjaCB0ZXh0dXJlIHNwZWNpZmljYXRpb24KLSAg
ICBjYWxsLgotCi0gICAgNS4gU2hvdWxkIGl0IGJlIGxlZ2FsIHRvIGNvbXBsZXRlbHkgcmVwbGFj
ZSB0aGUgdGV4dHVyZSB1c2luZyBhIG5ldyBjYWxsCi0gICAgdG8gVGV4U3RvcmFnZSo/Ci0KLSAg
ICBSRVNPTFZFRC4gSXQgd2lsbCBub3QgYmUgYWxsb3dlZC4KLQotICAgIERJU0NVU1NJT046IFRo
aXMgaXMgdXNlZnVsIHRvIGludmFsaWRhdGUgYWxsIGxldmVscyBvZiBhIHRleHR1cmUuCi0gICAg
QWxsb3dpbmcgdGhlIG1ldGFkYXRhIHRvIGJlIGNoYW5nZWQgaGVyZSBzZWVtcyBlYXNpZXIgdGhh
biB0cnlpbmcgdG8KLSAgICBkZWZpbmUgYSBwb3J0YWJsZSBkZWZpbml0aW9uIG9mIHdoYXQgaXQg
bWVhbnMgdG8gY2hhbmdlIHRoZSBtZXRhZGF0YQotICAgIChlLmcuIHdoYXQgaWYgeW91IHVzZWQg
YW4gdW5zaXplZCBpbnRlcm5hbCBmb3JtYXQgdGhlIGZpcnN0IHRpbWUgYW5kCi0gICAgdGhlIGNv
cnJlc3BvbmRpbmcgc2l6ZWQgaW50ZXJuYWwgZm9ybWF0IHRoZSBzZWNvbmQgdGltZSwgb3Igdmlj
ZQotICAgIHZlcnNhKT8KLQotICAgIEhvd2V2ZXIsIHdoaWxlIHRoaXMgaXMgbGFyZ2VseSBzaW1p
bGFyIHRvIGRlbGV0aW5nIHRoZSBvbGQgdGV4dHVyZQotICAgIG9iamVjdCBhbmQgcmVwbGFjaW5n
IGl0IHdpdGggYSBuZXcgb25lLCBpdCBkb2VzIGxvc2Ugc29tZSBvZiB0aGUKLSAgICBhZHZhbnRh
Z2VzIG9mIGltbXV0YWJpbGl0eS4gU3BlY2lmaWNhbGx5LCBiZWNhdXNlIGRvaW5nIHNvIGRvZXMg
bm90Ci0gICAgcmVzZXQgYmluZGluZ3MsIGl0IGRvZXNuJ3QgYWxsb3cgYSBtaWdyYXRpb24gcGF0
aCB0byBhbiBBUEkgdGhhdAotICAgIHZhbGlkYXRlcyB0aGUgdGV4dHVyZSBmb3JtYXQgYXQgYmlu
ZCB0aW1lLgotCi0gICAgNi4gU2hvdWxkIGl0IGJlIGxlZ2FsIHRvIHVzZSBUZXhJbWFnZSogYWZ0
ZXIgVGV4U3RvcmFnZSogaWYgaXQgZG9lc24ndAotICAgIGFmZmVjdCB0aGUgbWV0YWRhdGE/Ci0K
LSAgICBSRVNPTFZFRDogTm8uCi0KLSAgICBESVNDVVNTSU9OOiBBIHBvdGVudGlhbCB1c2UgY2Fz
ZSBpcyB0byBhbGxvdyBhIHNpbmdsZSBsZXZlbCBvZiBhCi0gICAgdGV4dHVyZSB0byBiZSBpbnZh
bGlkYXRlZCB1c2luZyBhIE5VTEwgcG9pbnRlci4gSG93ZXZlciwgYXMgbm90ZWQKLSAgICBhYm92
ZSBpdCBpcyBub24tdHJpdmlhbCB0byBkZXRlcm1pbmUgd2hhdCBjb25zdGl0dXRlcyBhIGNoYW5n
ZS4KLQotICAgIDcuIEhvdyBkb2VzIHRoaXMgZXh0ZW5zaW9uIGludGVyYWN0IHdpdGggQVBQTEVf
dGV4dHVyZV8yRF9saW1pdGVkX25wb3Q/Ci0KLSAgICBSRVNPTFZFRC4gQVBQTEVfdGV4dHVyZV8y
RF9saW1pdGVkX25wb3QgaXMgZXF1aXZhbGVudCB0byB0aGUgTlBPVAotICAgIHN1cHBvcnQgaW4g
T3BlbkdMIEVTIDIuMC4KLQotICAgIDguIFNob3VsZCB0aGlzIGV4dGVuc2lvbiBiZSB3cml0dGVu
IHRvIHdvcmsgd2l0aCBkZXNrdG9wIE9wZW5HTD8KLQotICAgIFJFU09MVkVEOiBZZXMuCi0KLSAg
ICBESVNDVVNTSU9OOiBUaGVyZSBoYXMgYmVlbiBiZWVuIGludGVyZXN0IGFuZCBpdCB3aWxsIGZ1
dHVyZS1wcm9vZiBpdAotICAgIGFnYWluc3QgZnVydGhlciBhZGRpdGlvbnMgdG8gT3BlbkdMIEVT
LgotCi0gICAgOS4gV2hpY2ggdGV4dHVyZSB0YXJnZXRzIHNob3VsZCBiZSBzdXBwb3J0ZWQ/Ci0K
LSAgICBSRVNPTFZFRC4gQWxsIHRhcmdldHMgZXhjZXB0IG11bHRpc2FtcGxlIGFuZCBidWZmZXIg
dGV4dHVyZXMgYXJlCi0gICAgc3VwcG9ydGVkLgotCi0gICAgSW5pdGlhbGx5IGFsbCB0YXJnZXRz
IGV4Y2VwdCBURVhUVVJFX0JVRkZFUiB3ZXJlIHN1cHBvcnRlZC4gSXQgd2FzCi0gICAgbm90ZWQg
dGhhdCB0aGUgZW50cnlwb2ludHMgZm9yIG11bHRpc2FtcGxlIHRhcmdldHMgYWRkZWQgbm8gdXNl
ZnVsCi0gICAgZnVuY3Rpb25hbGl0eSwgc2luY2UgbXVsdGlzYW1wbGUgdGV4dHVyZXMgaGF2ZSBu
byBjb21wbGV0ZW5lc3MKLSAgICBjaGVja3MgYmV5b25kIGJlaW5nIG5vbi1lbXB0eS4KLQotICAg
IFJlY3RhbmdsZSB0ZXh0dXJlcyBoYXZlIGNvbXBsZXRlbmVzcyBjaGVja3MgdG8gcHJldmVudCBm
aWx0ZXJpbmcgb2YKLSAgICBpbnRlZ2VyIHRleHR1cmVzLiBIb3dldmVyLCBzaW5jZSB3ZSBkZWNp
ZGVkIHRvIG9ubHkgZm9yY2UgbWlwbWFwCi0gICAgY29tcGxldGVuZXNzLCB0aGlzIGJlY29tZXMg
bGVzcyB1c2VmdWwuCi0KLSAgICAxMC4gU2hvdWxkIHRoaXMgZXh0ZW5zaW9uIHN1cHBvcnQgcHJv
eHkgdGV4dHVyZXM/Ci0KLSAgICBSRVNPTFZFRDogWWVzLgotCi0gICAgRElTQ1VTU0lPTjogSXQg
c2hvdWxkIGJlIG9ydGhvZ29uYWwuCi0KLSAgICAxMS4gQXJlIHRoZSA8Zm9ybWF0PiBhbmQgPHR5
cGU+IHBhcmFtZXRlcnMgbmVjZXNzYXJ5PwotCi0gICAgUkVTT0xWRUQuIE5vLCB0aGV5IHdpbGwg
YmUgcmVtb3ZlZC4KLQotICAgIERJU0NVU1NJT046IEZvciBPcGVuR0wgRVMgdGhlIHR5cGUgcGFy
YW1ldGVyIHdhcyBuZWNlc3NhcnkgdG8KLSAgICBkZXRlcm1pbmUgdGhlIHByZWNpc2lvbiBvZiB0
aGUgdGV4dHVyZSwgYnV0IHRoaXMgY2FuIGJlIHNvbHZlZCBieQotICAgIGhhdmluZyB0aGVzZSBm
dW5jdGlvbnMgYWNjZXB0IHNpemVkIGludGVybmFsIGZvcm1hdHMgKHdoaWNoIGFyZQotICAgIGFs
cmVhZHkgYWNjZXB0ZWQgYnkgcmVuZGVyYnVmZmVycykuCi0KLSAgICAxMi4gU2hvdWxkIGl0IGJl
IGxlZ2FsIHRvIG1ha2UgdGhlIGRlZmF1bHQgdGV4dHVyZSAoaWQgMCkKLSAgICBpbW11dGFibGUt
Zm9ybWF0PwotCi0gICAgUkVTT0xWRUQ6IE5vLgotCi0gICAgRElTQ1VTU0lPTjogVGhpcyB3b3Vs
ZCBtYWtlIGl0IGltcG9zc2libGUgdG8gcmVzdG9yZSB0aGUgY29udGV4dCB0bwotICAgIGl0J3Mg
ZGVmYXVsdCBzdGF0ZSwgd2hpY2ggaXMgZGVlbWVkIHVuZGVzaXJhYmxlLiBUaGVyZSBpcyBubyBn
b29kCi0gICAgcmVhc29uIG5vdCB0byB1c2UgbmFtZWQgdGV4dHVyZSBvYmplY3RzLgotCi0gICAg
MTMuIFNob3VsZCB3ZSB0cnkgdG8gZ3VhcmFudGVlIHRoYXQgdGV4dHVyZXMgbWFkZSB0aHJvdWdo
IHRoaXMgcGF0aAotICAgIHdpbGwgYWx3YXlzIGJlIGNvbXBsZXRlPwotCi0gICAgUkVTT0xWRUQ6
IEl0IHNob3VsZCBiZSBndWFyYW50ZWVkIHRoYXQgdGhlIHRleHR1cmUgd2lsbCBiZSBtaXBtYXAK
LSAgICBjb21wbGV0ZS4KLQotICAgIERJU0NVU1NJT046IEZ1dHVyZSBzZXBhcmF0aW9uIGJldHdl
ZW4gaW1hZ2VzIGFuZCBzYW1wbGVycyB3aWxsIHN0aWxsCi0gICAgYWxsb3cgdXNlcnMgdG8gY3Jl
YXRlIGNvbWJpbmF0aW9ucyB0aGF0IGFyZSBpbnZhbGlkLCBidXQKLSAgICBjb25zdHJhaW5pbmcg
dGhlIHNpbXBsZSBjYXNlcyB3aWxsIG1ha2UgdGhlc2UgQVBJcyBlYXNpZXIgdG8gdXNlIGZvcgot
ICAgIGJlZ2lubmVycy4KLQotICAgIDE0LiBTaG91bGQgdGhlc2UgZnVuY3Rpb25zIHVzZSBhIEVY
VF9kaXJlY3Rfc3RhdGVfYWNjZXNzIGFwcHJvYWNoIHRvCi0gICAgc3BlY2lmeWluZyB0aGUgdGV4
dHVyZSBvYmplY3RzPwotCi0gICAgVU5SRVNPTFZFRC4KLQotICAgIERJU0NVU1NJT046IGFzIGEg
c3RhbmRhbG9uZSBleHRlbnNpb24sIG5vIERTQS1saWtlIGZ1bmN0aW9ucyB3aWxsIGJlCi0gICAg
YWRkZWQuIEhvd2V2ZXIsIGludGVyYWN0aW9ucyB3aXRoIEVYVF9kaXJlY3Rfc3RhdGVfYWNjZXNz
IGFuZAotICAgIEFSQl9kaXJlY3Rfc3RhdGVfYWNjZXNzIG5lZWQgdG8gYmUgcmVzb2x2ZWQuCi0K
LSAgICAxNS4gU2hvdWxkIHRoZXNlIGZ1bmN0aW9ucyBhY2NlcHQgZ2VuZXJpYyBjb21wcmVzc2Vk
IGZvcm1hdHM/Ci0KLSAgICBSRVNPTFZFRDogWWVzLiBOb3RlIHRoYXQgdGhlIHNwZWMgbGFuZ3Vh
Z2Ugd2lsbCBuZWVkIHRvIGJlIG1vZGlmaWVkCi0gICAgdG8gYWxsb3cgdGhpcyBmb3IgRVMsIHNp
bmNlIHRoZSBwc2V1ZG9jb2RlIGlzIHdyaXR0ZW4gaW4gdGVybXMgb2YKLSAgICBUZXhJbWFnZTJE
LCB3aGljaCBkb2VzIG5vdCBhbGxvdyBjb21wcmVzc2VkIHRleHR1cmUgZm9ybWF0cyBpbiBFUy4K
LSAgICBTZWUgYWxzbyBpc3N1ZXMgMjMgYW5kIDI3LgotCi0gICAgMTYuIEhvdyBzaG91bGQgY29t
cGxldGVuZXNzIGJlIGZvcmNlZCB3aGVuIFRFWFRVUkVfTUFYX0xFVkVMIGlzIG5vdAotICAgIHBy
ZXNlbnQ/Ci0KLSAgICBSRVNPTFZFRC4gVGhlIG1heGltdW0gbGV2ZWwgcSB3aWxsIGJlIHJlZGVm
aW5lZCB0byBjbGFtcCB0byB0aGUKLSAgICBoaWdoZXN0IGxldmVsIGF2YWlsYWJsZS4KLQotICAg
IERJU0NVU1NJT046IEEgc2luZ2xlLWxldmVsIHRleHR1cmUgY2FuIGJlIG1hZGUgY29tcGxldGUg
ZWl0aGVyIGJ5Ci0gICAgbWFraW5nIGl0IG1pcG1hcCBjb21wbGV0ZSAoYnkgc2V0dGluZyBURVhU
VVJFX01BWF9MRVZFTCB0byAwKSBvciBieQotICAgIHR1cm5pbmcgb2ZmIG1pcG1hcHBpbmcgKGJ5
IGNob29zZSBhbiBhcHByb3ByaWF0ZSBtaW5pZmljYXRpb24KLSAgICBmaWx0ZXIpLgotCi0gICAg
U29tZSBvcHRpb25zOgotCi0gICAgQTogU3BlY2lmeSB0aGF0IFRleFN0b3JhZ2UqIGNoYW5nZXMg
dGhlIGRlZmF1bHQgbWluaWZpY2F0aW9uIGZpbHRlcgotICAgIGZvciBPcGVuR0wgRVMuIFRoaXMg
bWFrZXMgaXQgYXdrd2FyZCB0byBhZGQgVEVYVFVSRV9NQVhfTEVWRUwKLSAgICBzdXBwb3J0IHRv
IE9wZW5HTCBFUyBsYXRlciwgc2luY2Ugc3dpdGNoaW5nIHRvIG1hdGNoIEdMIHdvdWxkIGJyZWFr
Ci0gICAgY29tcGF0aWJpbGl0eS4gVGhlIHR3byBtZWNoYW5pc21zIGFsc28gZG8gbm90IGdpdmUg
aWRlbnRpY2FsCi0gICAgcmVzdWx0cywgc2luY2UgdGhlIG1hZ25pZmljYXRpb24gdGhyZXNob2xk
IGRlcGVuZHMgb24gdGhlCi0gICAgbWluaWZpY2F0aW9uIGZpbHRlci4KLQotICAgIEI6IFNwZWNp
ZnkgdGhhdCB0aGUgdGV4dHVyZSBiZWhhdmVzIGFzIHRob3VnaCBURVhUVVJFX01BWF9MRVZFTCB3
ZXJlCi0gICAgemVyby4gVG8gc3BlY2lmeSB0aGlzIHByb3Blcmx5IHByb2JhYmx5IHJlcXVpcmVz
IGZhaXJseSBpbnRydXNpdmUKLSAgICBjaGFuZ2VzIHRvIHRoZSBPcGVuR0wgRVMgZnVsbCBzcGVj
aWZpY2F0aW9uIHRvIGFkZCBiYWNrIGFsbCB0aGUKLSAgICBsYW5ndWFnZSByZWxhdGluZyB0byB0
aGUgbWF4IGxldmVsLiBJdCBhbHNvIGRvZXMgbm90IHNvbHZlIHRoZQotICAgIHNpbWlsYXIgcHJv
YmxlbSBvZiB3aGF0IHRvIGRvIHdpdGggTlBPVCB0ZXh0dXJlczsgYW5kIGl0IG1heSBoYXZlCi0g
ICAgaGFyZHdhcmUgaW1wYWN0cyBkdWUgdG8gdGhlIGNoYW5nZSBpbiB0aGUgbWluL21hZyBjcm9z
c292ZXIuCi0KLSAgICBDOiBTcGVjaWZ5IHRoYXQgVGV4U3RvcmFnZSogY2hhbmdlcyB0aGUgZGVm
YXVsdCBtaW5pZmljYXRpb24gZmlsdGVyCi0gICAgZm9yIGFsbCBpbXBsZW1lbnRhdGlvbnMgd2hl
biBhIHNpbmdsZS1sZXZlbCB0ZXh0dXJlIGlzIHNwZWNpZmllZC4KLSAgICBUaGlzIG1heSBiZSBz
bGlnaHRseSBjb3VudGVyLWludHVpdGl2ZSB0byBkZXNrdG9wIEdMIHVzZXJzLCBidXQgd2lsbAot
ICAgIGdpdmUgY29uc2lzdGVudCBiZWhhdmlvdXIgYWNyb3NzIHZhcmlhbnRzIG9mIEdMIGFuZCBh
dm9pZHMgY2hhbmdpbmcKLSAgICB0aGUgZnVuY3Rpb25hbCBiZWhhdmlvdXIgb2YgdGhpcyBleHRl
bnNpb24gYmFzZWQgb24gdGhlIHByZXNlbmNlIG9yCi0gICAgYWJzZW5jZSBvZiBzb21lIG90aGVy
IGZlYXR1cmUuCi0KLSAgICBDdXJyZW50bHkgQiBpcyBzcGVjaWZpZWQuIFRoaXMgaGFzIHBvdGVu
dGlhbCBoYXJkd2FyZSBpbXBsaWNhdGlvbnMKLSAgICBmb3IgT3BlbkdMIEVTIGJlY2F1c2Ugb2Yg
dGhlIGVmZmVjdCBvZiB0aGUgbWluaWZpY2F0aW9uIGZpbHRlciBvbgotICAgIHRoZSBtaW4vbWFn
IGNyb3Nzb3Zlci4gSG93ZXZlciwgQyBoYXMgcG90ZW50aWFsIGhhcmR3YXJlIGltcGxpY2F0aW9u
cwotICAgIGZvciBPcGVuR0wgZHVlIHRvIHRoZSBzZXBhcmF0aW9uIG9mIHRleHR1cmUgYW5kIHNh
bXBsZXIgc3RhdGUuCi0KLSAgICAxNy4gSG93IHNob3VsZCBjb21wbGV0ZW5lc3MgYmUgZm9yY2Vk
IHdoZW4gb25seSBFUzItc3R5bGUgTlBPVCBpcwotICAgIGF2YWlsYWJsZT8KLQotICAgIFJFU09M
VkVELiBJdCBpcyBub3Qgd29ydGggdHJ5aW5nIHRvIGRvIHRoaXMsIGluIGxpZ2h0IG9mIGlzc3Vl
IDEzLgotCi0gICAgUHJldmlvdXMgcmV2aXNpb25zIG9mIHRoaXMgZXh0ZW5zaW9uIG92ZXJyb2Rl
IHRoZSBtaW5pZmljYXRpb24KLSAgICBmaWx0ZXIgYW5kIHdyYXAgbW9kZXMsIGJ1dCB0aGF0IGlz
IG5vIGxvbmdlciB0aGUgY2FzZS4gU2luY2UKLSAgICBPRVNfdGV4dHVyZV9ucG90IHJlbW92ZXMg
dGhlIGNhdmVhdHMgb24gTlBPVCB0ZXh0dXJlcyBhbnl3YXksIGl0Ci0gICAgbWlnaHQgbm90IGJl
IHdvcnRoIHRyeWluZyB0byAiZml4IiB0aGlzLgotCi0gICAgMTguIEZvciBPcGVuR0wgRVMsIGhv
dyBkbyB0aGUgbmV3IHNpemVkIGludGVybmFsIGZvcm1hdHMgaW50ZXJhY3QKLSAgICB3aXRoIE9F
U19yZXF1aXJlZF9pbnRlcm5hbF9mb3JtYXQ/Ci0KLSAgICBSRVNPTFZFRC4KLQotICAgIElmIE9F
U19yZXF1aXJlZF9pbnRlcm5hbF9mb3JtYXQgaXMgbm90IHByZXNlbnQsIHRoZW4gdGhlCi0gICAg
PGludGVybmFsZm9ybWF0PiBwYXJhbWV0ZXIgaXMgaW50ZW5kZWQgbWVyZWx5IHRvIGluZGljYXRl
IHdoYXQgdGhlCi0gICAgY29ycmVzcG9uZGluZyA8Zm9ybWF0PiBhbmQgPHR5cGU+IHdvdWxkIGhh
dmUgYmVlbiwgaGFkIFRleEltYWdlKgotICAgIGJlZW4gdXNlZCBpbnN0ZWFkLiBJZiBPRVNfcmVx
dWlyZWRfaW50ZXJuYWxfZm9ybWF0IGlzIHByZXNlbnQsIHRoZW4KLSAgICBpdCBpcyBpbnRlbmRl
ZCB0aGF0IHRoZSA8aW50ZXJuYWxmb3JtYXQ+IHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgaWYKLSAg
ICBpdCBoYWQgYmVlbiBwYXNzZWQgZGlyZWN0bHkgdG8gVGV4SW1hZ2UqLgotCi0gICAgMTkuIFNo
b3VsZCB0aGVyZSBiZSBzb21lIGhpbnRpbmcgbWVjaGFuaXNtIHRvIGluZGljYXRlIHdoZXRoZXIg
ZGF0YQotICAgIGlzIGNvbWluZyBpbW1lZGlhdGVseSBvciBsYXRlcj8KLQotICAgIFJFU09MVkVE
LiBObyBwYXJhbWV0ZXIgaXMgbmVlZGVkLiBBbiBleHRlbnNpb24gY2FuIGJlIGFkZGVkIHRvIHBy
b3ZpZGUKLSAgICBhIFRleFBhcmFtZXRlciB2YWx1ZSB3aGljaCBpcyBsYXRjaGVkIGF0IFRleFN0
b3JhZ2UgdGltZS4KLQotICAgIERJU0NVU1NJT046IFNvbWUgbWVtYmVycyBmZWx0IHRoYXQgdGhp
cyB3b3VsZCBiZSB1c2VmdWwgc28gdGhhdCB0aGV5Ci0gICAgY291bGQgZGVmZXIgYWxsb2NhdGlv
biB3aGVuIHN1aXRhYmxlLCBwYXJ0aWN1bGFybHkgaWYgaGlnaGVyLQotICAgIHJlc29sdXRpb24g
aW1hZ2VzIHdpbGwgYmUgc3RyZWFtZWQgaW4gbGF0ZXI7IG9yIHRvIGNob29zZSBhIG1lbW9yeQot
ICAgIHR5cGUgb3IgbGF5b3V0IGFwcHJvcHJpYXRlIHRvIHRoZSB1c2FnZS4gSG93ZXZlciwgaW1w
bGVtZW50YXRpb24KLSAgICBleHBlcmllbmNlIHdpdGggQnVmZmVyRGF0YSBpcyB0aGF0IGRldmVs
b3BlcnMgZnJlcXVlbnRseSBwcm92aWRlCi0gICAgd3JvbmcgdmFsdWVzIGFuZCBpbXBsZW1lbnRh
dGlvbnMgaGF2ZSB0byBndWVzcyBhbnl3YXkuCi0KLSAgICBPbmUgb3B0aW9uIHN1Z2dlc3RlZCB3
YXMgdGhlIDx1c2FnZT4gcGFyYW1ldGVyIGN1cnJlbnRseSBwYXNzZWQgdG8KLSAgICBCdWZmZXJE
YXRhLiBBbm90aGVyIG9wdGlvbiB3YXMgdG8gc2V0IGl0IHdpdGggVGV4UGFyYW1ldGVyLgotCi0g
ICAgMjAuIEhvdyBzaG91bGQgdGhpcyBleHRlbnNpb24gaW50ZXJhY3Qgd2l0aAotICAgIEVHTElt
YWdlVGFyZ2V0VGV4dHVyZTJET0VTLCBlZ2xCaW5kVGV4SW1hZ2UsIGdsWEJpbmRUZXhJbWFnZSBh
bmQKLSAgICB3Z2xCaW5kVGV4SW1hZ2U/Ci0KLSAgICBSRVNPTFZFRC4gVGhlc2UgZnVuY3Rpb25z
IHdpbGwgbm90IGJlIHBlcm1pdHRlZCBhZnRlciBnbFRleFN0b3JhZ2UqLgotCi0gICAgU2V2ZXJh
bCBvcHRpb25zIGFyZSBwb3NzaWJsZToKLQotICAgIEEpIERpc2FsbG93IHRoZXNlIGZ1bmN0aW9u
cy4KLSAgICBCKSBBbGxvdyB0aGVtLCBidXQgaGF2ZSB0aGVtIHJlc2V0IHRoZSBURVhUVVJFX0lN
TVVUQUJMRV9GT1JNQVRfRVhUCi0gICAgICAgZmxhZy4KLSAgICBDKSBBbGxvdyB0aGVtIHVuY29u
ZGl0aW9uYWxseS4KLQotICAgIEMgd291bGQgdmlvbGF0ZSB0aGUgZGVzaWduIHByaW5jaXBsZSB0
aGF0IHRoZSBkaW1lbnNpb25zIGFuZCBmb3JtYXQKLSAgICBvZiB0aGUgbWlwbWFwIGFycmF5IGFy
ZSBpbW11dGFibGUuIEIgZG9lcyBub3Qgc28gbXVjaCBtb2RpZnkgdGhlCi0gICAgZGltZW5zaW9u
IGFuZCBmb3JtYXRzIGFzIHJlcGxhY2UgdGhlbSB3aXRoIGFuIGVudGlyZWx5IGRpZmZlcmVudAot
ICAgIHNldC4KLQotICAgIDIxLiBTaG91bGQgdGhlcmUgYmUgYSBzaW5nbGUgZnVuY3Rpb24gZm9y
IHNwZWNpZnlpbmcgMUQsIDJEIGFuZCAzRAotICAgIHRhcmdldHM/Ci0KLSAgICBSRVNPTFZFRC4g
Tm8sIHdlIHdpbGwgc3RpY2sgd2l0aCBleGlzdGluZyBwcmVjZWRlbnQuCi0KLSAgICAyMi4gSXMg
aXQgcG9zc2libGUgdG8gdXNlIEdlbmVyYXRlTWlwbWFwIHdpdGggYW4gaW5jb21wbGV0ZSBtaXBt
YXAKLSAgICBweXJhbWlkPwotCi0gICAgUkVTT0xWRUQuIFllcywgYmVjYXVzZSB0aGUgZWZmZWN0
aXZlIG1heCBsZXZlbCBpcyBsaW1pdGVkIHRvIHRoZQotICAgIGxldmVscyB0aGF0IHdlcmUgc3Bl
Y2lmaWVkLCBhbmQgc28gR2VuZXJhdGVNaXBtYXAgZG9lcyBub3QgZ2VuZXJhdGUKLSAgICBhbnkg
bmV3IGxldmVscy4KLQotICAgIEhvd2V2ZXIsIHRvIG1ha2UgYXV0b21hdGljIG1pcG1hcCBnZW5l
cmF0aW9uIHdvcmssIGl0IGlzIG5lY2Vzc2FyeQotICAgIHRvIHJlZGVmaW5lIHAgcmF0aGVyIHRo
YW4gcSwgc2luY2UgYXV0b21hdGljIG1pcG1hcCBnZW5lcmF0aW9uCi0gICAgaWdub3JlcyB0aGUg
bWF4IGxldmVsLgotCi0gICAgMjMuIEhvdyBzaG91bGQgdGhpcyBleHRlbnNpb24gaW50ZXJhY3Qg
d2l0aAotICAgIE9FU19jb21wcmVzc2VkX3BhbGV0dGVkX3RleHR1cmU/Ci0KLSAgICBSRVNPTFZF
RC4gUGFsZXR0ZWQgdGV4dHVyZXMgd2lsbCBub3QgYmUgcGVybWl0dGVkLCBhbmQgd2lsbAotICAg
IGdlbmVyYXRlIElOVkFMSURfRU5VTS4KLQotICAgIERJU0NVU1NJT046IE9FU19jb21wcmVzc2Vk
X3BhbGV0dGVkX3RleHR1cmUgc3VwcGxpZXMgYWxsIHRoZSBtaXBtYXBzCi0gICAgaW4gYSBzaW5n
bGUgZnVuY3Rpb24gY2FsbCwgd2l0aCB0aGUgcGFsZXR0ZSBzcGVjaWZpZWQgb25jZS4gVGhhdCdz
Ci0gICAgaW5jb21wYXRpYmxlIHdpdGggdGhlIHVwbG9hZCBtb2RlbCBpbiB0aGlzIGV4dGVuc2lv
bi4KLQotICAgIDI0LiBIb3cgY2FuIEVUQzEgdGV4dHVyZXMgYmUgdXNlZCB3aXRoIHRoaXMgZXh0
ZW5zaW9uPwotCi0gICAgUkVTT0xWRUQuIEFkZCBsYW5ndWFnZSBpbiB0aGlzIGV4dGVuc2lvbiB0
byBhbGxvdyBzdWJyZWdpb24gdXBsb2FkcwotICAgIGZvciBFVEMxLgotCi0gICAgRElTQ1VTU0lP
TjogR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUgZG9lc24ndCBhbGxvdwotICAg
IENvbXByZXNzZWRUZXhTdWJJbWFnZSosIHNvIGl0IHdvdWxkIGJlIGltcG9zc2libGUgdG8gdXNl
IHRoaXMKLSAgICBleHRlbnNpb24gd2l0aCBFVEMxLiBUaGlzIGlzIHNlZW4gYXMgYW4gb3ZlcnNp
Z2h0IGluIHRoZSBFVEMxCi0gICAgZXh0ZW5zaW9uLiBXaGlsZSBpdCBjYW5ub3QgYmUgZml4ZWQg
aW4gdGhhdCBleHRlbnNpb24gKHNpbmNlIGl0IGlzCi0gICAgYWxyZWFkeSBzaGlwcGluZyksIHRo
aXMgZXh0ZW5zaW9uIGNhbiBhZGQgdGhhdCBjYXBhYmlsaXR5LgotCi0gICAgMjUuIFNob3VsZCBh
bnkgb3RoZXIgY29tcHJlc3NlZCBmb3JtYXRzIGJlIHNpbWlsYXJseSBtb2RpZmllZD8KLQotICAg
IFJFU09MVkVELiBZZXMsIEFNRF9jb21wcmVzc2VkX0FUQ190ZXh0dXJlIGFuZAotICAgIEFNRF9j
b21wcmVzc2VkXzNEQ190ZXh0dXJlIGNhbiBiZSBtb2RpZmllZCBzaW1pbGFybHkgdG8gRVRDMQot
ICAgIChNYXVyaWNlIFJpYmJsZSBpbmRpY2F0ZWQgdGhhdCBib3RoIGZvcm1hdHMgdXNlIDR4NCBi
bG9ja3MpLiBEZXNrdG9wCi0gICAgT3BlbkdMIHJlcXVpcmVzIHRoYXQgd2hvbGUtaW1hZ2UgcmVw
bGFjZW1lbnQgaXMgc3VwcG9ydGVkIGZvciBhbnkKLSAgICBjb21wcmVzc2VkIHRleHR1cmUgZm9y
bWF0LCBhbmQgdGhlIE9wZW5HTCBFUyBleHRlbnNpb25zCi0gICAgRVhUX3RleHR1cmVfY29tcHJl
c3Npb25fZHh0MSBhbmQgSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMKLSAgICBhbHJlYWR5
IGFsbG93IHdob2xlLWltYWdlIHJlcGxhY2VtZW50LCBzbyBpdCBpcyBub3QgbmVjZXNzYXJ5IHRv
Ci0gICAgbW9kaWZ5IHRoZW0gdG8gYmUgdXNlZCB3aXRoIHRoaXMgZXh0ZW5zaW9uLgotCi0gICAg
MjYuIFNob3VsZCB0aGVzZSBjb21tYW5kcyBiZSBwZXJtaXR0ZWQgaW4gZGlzcGxheSBsaXN0cz8K
LQotICAgIFJFU09MVkVELiBOby4KLQotICAgIERJU0NVU1NJT046IERpc3BsYXkgbGlzdHMgYXJl
IG1vc3QgdXNlZnVsIGZvciByZXBlYXRpbmcgY29tbWFuZHMsCi0gICAgYW5kIFRleFN0b3JhZ2Uq
IGNvbW1hbmRzIGNhbm5vdCBiZSByZXBlYXRlZCBiZWNhdXNlIHRoZSBmaXJzdCBjYWxsCi0gICAg
bWFrZXMgdGhlIGZvcm1hdCBpbW11dGFibGUuCi0KLSAgICAyNy4gU2hvdWxkIHRoZXNlIGNvbW1h
bmRzIGFjY2VwdCB1bnNpemVkIGludGVybmFsIGZvcm1hdHM/Ci0KLSAgICBSRVNPTFZFRDogTm8s
IGZvciBib3RoIE9wZW5HTCBhbmQgT3BlbkdMIEVTLgotCi0gICAgRElTQ1VTU0lPTjogbm9ybWFs
bHkgdGhlIDx0eXBlPiBwYXJhbWV0ZXIgdG8gVGV4SW1hZ2UqIGNhbiBzZXJ2ZSBhcwotICAgIGEg
aGludCB0byBzZWxlY3QgYSBzaXplZCBmb3JtYXQgKGFuZCBpbiBPcGVuR0wgRVMsIHRoaXMgaXMg
dGhlIG9ubHkKLSAgICBtZWNoYW5pc20gYXZhaWxhYmxlKTsgc2luY2UgVGV4U3RvcmFnZSogZG9l
cyBub3QgaGF2ZSBhIDx0eXBlPgotICAgIHBhcmFtZXRlciwgdGhlIGltcGxlbWVudGF0aW9uIGhh
cyBubyBpbmZvcm1hdGlvbiBvbiB3aGljaCB0byBiYXNlIGEKLSAgICBkZWNpc2lvbi4KLQotUmV2
aXNpb24gSGlzdG9yeQotCi0gICAgUmV2aXNpb24gMjQsIDIwMTEvMTEvMTEgKGRna29jaCkKLSAg
ICAgIC0gTWFyayBjb21wbGV0ZS4gQ2xhcmlmeSBFUyBjbGFyaWZpY2F0aW9ucy4KLQotICAgIFJl
dmlzaW9uIDIzLCAyMDExLzExLzEwIChkZ2tvY2gpCi0gICAgICAtIEFkZCBHTEVTIGNsYXJpZmNh
dGlvbnMgYW5kIGludGVyYWN0aW9ucyB3aXRoIG1vcmUgR0xFUyBleHRlbnNpb25zCi0KLSAgICBS
ZXZpc2lvbiAyMiwgMjAxMS8xMS8xMCAoYm1lcnJ5KQotICAgICAgLSBVcGRhdGUgbXkgY29udGFj
dCBkZXRhaWxzCi0KLSAgICBSZXZpc2lvbiAyMSwgMjAxMS8wNy8yNSAoYm1lcnJ5KQotICAgICAg
LSBSZW1vdmUgZGFuZ2xpbmcgcmVmZXJlbmNlcyB0byBNdWx0aVRleFN0b3JhZ2UgaW4gRXJyb3Jz
IHNlY3Rpb24KLQotICAgIFJldmlzaW9uIDIwLCAyMDExLzA3LzIxIChibWVycnkpCi0gICAgICAt
IFJlbW92ZSBkYW5nbGluZyByZWZlcmVuY2UgdG8gPHNhbXBsZXM+IGluIEVycm9ycyBzZWN0aW9u
Ci0KLSAgICBSZXZpc2lvbiAxOSwgMjAxMS8wNS8wMiAoSm9uIExlZWNoKQotICAgICAgLSBBc3Np
Z24gZW51bSB2YWx1ZQotCi0gICAgUmV2aXNpb24gMTgsIDIwMTEvMDEvMjQgKGJtZXJyeSkKLSAg
ICAgIC0gRGlzYWxsb3cgdW5zaXplZCBpbnRlcm5hbCBmb3JtYXRzIChvdmVyc2lnaHQgaW4gcmV2
aXNpb24gMTcpLgotCi0gICAgUmV2aXNpb24gMTcsIDIwMTEvMDEvMjQgKGJtZXJyeSkKLSAgICAg
IC0gQWRkZWQgYW5kIHJlc29sdmVkIGlzc3VlIDI2LgotICAgICAgLSBTcGxpdCBpc3N1ZSAyNyBv
dXQgZnJvbSBpc3N1ZSAxNS4KLSAgICAgIC0gRGlzYWxsb3cgVGV4U3RvcmFnZSogaW4gZGlzcGxh
eSBsaXN0cy4KLSAgICAgIC0gVXNlIHRoZSB0ZXJtICJpbW11dGFibGUtZm9ybWF0IiBjb25zaXN0
ZW50bHkgKGJ1ZyA3MjgxKS4KLQotICAgIFJldmlzaW9uIDE2LCAyMDEwLzExLzIzIChibWVycnkp
Ci0gICAgICAtIERpc2FsbG93ZWQgVGV4U3RvcmFnZSBvbiBhbiBpbW11dGFibGUtZm9ybWF0IHRl
eHR1cmUKLSAgICAgICAgKHJlc29sdmVzIGlzc3VlIDUpLgotICAgICAgLSBEZWxldGVkIE11bHRp
VGV4U3RvcmFnZSogY29tbWFuZHMgKG90aGVyIERTQSBmdW5jdGlvbnMgc3RpbGwKLSAgICAgICAg
dW5yZXNvbHZlZCkuCi0gICAgICAtIFNvbWUgbWlub3Igd29yZGluZyBjaGFuZ2VzIHN1Z2dlc3Rl
ZCBieSBQYXQgQnJvd24gKGJ1ZyA3MDAyKS4KLQotICAgIFJldmlzaW9uIDE1LCAyMDEwLzExLzA5
IChibWVycnkpCi0gICAgICAtIFJlb3BlbmVkIGlzc3VlIDUuCi0gICAgICAtIFJlb3BlbmVkIGlz
c3VlIDE0LCBwZW5kaW5nIHN0YWJpbGlzYXRpb24gb2YKLSAgICAgICAgQVJCX2RpcmVjdF9zdGF0
ZV9hY2Nlc3MuCi0gICAgICAtIE1hcmtlZCBpc3N1ZSA5IHJlc29sdmVkLCBwZW5kaW5nIGFueSBv
YmplY3Rpb25zLgotICAgICAgLSBGaXggcmVmZXJlbmNlcyB0byBubyBvYmplY3QgYmVpbmcgYm91
bmQgKHdhcyBtZWFudCB0byByZWZlciB0bwotICAgICAgICB0aGUgZGVmYXVsdCBvYmplY3QpLgot
ICAgICAgLSBBZGRpbmcgbWlzc2luZyBwc2V1ZG9jb2RlIGZvciBURVhUVVJFXzFEX0FSUkFZLgot
ICAgICAgLSBDb3JyZWN0ZWQgVEVYVFVSRV8yRF9BUlJBWSAtPiBURVhUVVJFXzFEX0FSUkFZIGlu
IGVycm9yIGNoZWNrcy4KLSAgICAgIC0gQ2hhbmdlZCAibGV2ZWxzLi4uIGFyZSByZW1vdmVkIiB0
byAibGV2ZWxzLi4uIGFyZSByZXNldCB0byB0aGVpcgotICAgICAgICBpbml0IHN0YXRlIiwgc2lu
Y2UgZGVza3RvcCBHTCBoYXMgcGVyLWxldmVsIHN0YXRlIGFwYXJ0IGZyb20gdGhlCi0gICAgICAg
IHRleGVscy4KLSAgICAgIC0gTWlzY2VsbGFuZW91cyB3b3JkaW5nIGZpeGVzLgotCi0gICAgUmV2
aXNpb24gMTQsIDIwMTAvMDkvMjUgKGJtZXJyeSkKLSAgICAgIC0gQWRkIGlzc3VlcyAyNC0yNSBh
bmQgYWx0ZXJhdGlvbnMgdG8KLSAgICAgICAgT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1
cmUsIEFNRF9jb21wcmVzc2VkX0FUQ190ZXh0dXJlIGFuZAotICAgICAgICBBTURfY29tcHJlc3Nl
ZF8zRENfdGV4dHVyZS4KLQotICAgIFJldmlzaW9uIDEzLCAyMDEwLzA5LzE5IChibWVycnkpCi0g
ICAgICAtIFR3byB0eXBvIGZpeGVzIGZyb20gRGFuaWVsIEtvY2gKLQotICAgIFJldmlzaW9uIDEy
LCAyMDEwLzA5LzE4IChibWVycnkpCi0gICAgICAtIENoYW5nZWQgcmVzb2x1dGlvbiB0byBpc3N1
ZSAyMAotICAgICAgLSBBZGRlZCBhbmQgcmVzb2x2ZWQgaXNzdWUgMjMKLSAgICAgIC0gQWRkZWQg
ZXhwbGFuYXRpb24gb2YgaG93IHRvIHVwbG9hZCBkYXRhIChpbiBvdmVydmlldykKLSAgICAgIC0g
QWRkZWQgc3BlYyBsYW5ndWFnZSB0byBpbXBsZW1lbnQgcmVzb2x1dGlvbiB0byBpc3N1ZSAxNQot
Ci0gICAgUmV2aXNpb24gMTEsIDIwMTAvMDcvMjEgKGJtZXJyeSkKLSAgICAgIC0gUmVzb2x2ZWQg
aXNzdWUgMTYKLSAgICAgIC0gUmVvcGVuIGlzc3VlIDIwCi0gICAgICAtIEZpeCBzb21lIHR5cG9z
Ci0KLSAgICBSZXZpc2lvbiAxMCwgMjAxMC8wNy8xNSAoYm1lcnJ5KQotICAgICAgLSBVcGRhdGUg
c29tZSBpc3N1ZXMgdG8gbWF0Y2ggY29yZSB0ZXh0Ci0gICAgICAtIFJlc29sdmVkIGlzc3VlIDE3
Ci0KLSAgICBSZXZpc2lvbiA5LCAyMDEwLzA1LzI0IChibWVycnkpCi0gICAgICAtIE1hcmtlZCBp
c3N1ZSAyIGFzIHJlc29sdmVkCi0gICAgICAtIFJlc29sdmVkIGlzc3VlIDE5IChhcyBubyBjaGFu
Z2UpCi0gICAgICAtIFJlc29sdmVkIGlzc3VlIDIwCi0gICAgICAtIEFkZCBpc3N1ZXMgMjEtMjIK
LSAgICAgIC0gQWRkIGluIHNwZWMgbGFuZ3VhZ2UgdG8gZm9yYmlkIHVzZSBvbiBkZWZhdWx0IHRl
eHR1cmVzCi0gICAgICAtIFJlZGVmaW5lIGxldmVsX2Jhc2UsIGxldmVsX21heCB0byBiZSBjbGFt
cGVkIGZvcm1zIG9mCi0gICAgICAgIFRFWFRVUkVfQkFTRV9MRVZFTC9URVhUVVJFX01BWF9MRVZF
TCB3aGVuIHVzaW5nIGltbXV0YWJsZQotICAgICAgICB0ZXh0dXJlcwotICAgICAgLSBSZWRlZmlu
ZSBwIHRvIGFsc28gYmUgY2xhbXBlZCB0byB0aGUgcHJvdmlkZWQgbGV2ZWxzIGZvcgotICAgICAg
ICBpbW11dGFibGUgdGV4dHVyZXMsIHRvIHN1cHBvcnQgYXV0b21hdGljIG1pcG1hcCBnZW5lcmF0
aW9uCi0gICAgICAtIFJlbW92ZWQgbXVsdGlzYW1wbGUgZnVuY3Rpb25zCi0gICAgICAtIFJlbW92
ZWQgbGFuZ3VhZ2Ugc3RhdGluZyB0aGF0IHRleHR1cmUgcGFyYW1ldGVycyB3ZXJlIHJlc2V0IHRv
Ci0gICAgICAgIGRlZmF1bHRzCi0KLSAgICBSZXZpc2lvbiA4LCAyMDEwLzA1LzE4IChibWVycnkp
Ci0gICAgICAtIEFkZGVkIGlzc3VlIGFib3V0IEVHTGltYWdlCi0gICAgICAtIE1hcmtlZCBpc3N1
ZSAxNCBhcyByZXNvbHZlZAotCi0gICAgUmV2aXNpb24gNywgMjAxMC8wNS8wNCAoYm1lcnJ5KQot
ICAgICAgLSBSZW1vdmVkIHNvbWUgbGluZ2VyaW5nIDxmb3JtYXQ+LCA8dHlwZT4gcGFyYW1ldGVy
cyB0byB0aGUgbmV3Ci0gICAgICAgIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBoYXZlIGJlZW4gcmVt
b3ZlZCBpbiByZXZpc2lvbiA0Ci0gICAgICAtIFRyaXZpYWwgdHlwbyBmaXhlcwotCi0gICAgUmV2
aXNpb24gNiwgMjAxMC8wMi8xOCAoYm1lcnJ5KQotICAgICAgLSBSZXNvbHZlZCBpc3N1ZXMgNSwg
NiBhbmQgMTgKLSAgICAgIC0gQWRkZWQgTXVsdGlUZXhTdG9yYWdlKiBmdW5jdGlvbnMgZm9yIERT
QSBpbnRlcmFjdGlvbgotICAgICAgLSBBZGRlZCBlcnJvciBmb3IgdGV4dHVyZS10YXJnZXQgbWlz
bWF0Y2ggaW4gRFNBCi0gICAgICAtIEFsbG93ZWQgVGV4U3RvcmFnZSogdG8gYmUgY2FsbGVkIGFn
YWluCi0KLSAgICBSZXZpc2lvbiA1LCAyMDEwLzAxLzI1IChibWVycnkpCi0gICAgICAtIEFkZGVk
IHRvIGNvbnRyaWJ1dG9ycyBsaXN0Ci0gICAgICAtIFJlcXVpcmUgT3BlbkdMIDEuMiwgdG8gc2lt
cGxpZnkgaW50ZXJhY3Rpb25zIHdpdGgKLSAgICAgICAgVEVYVFVSRV9CQVNFX0xFVkVML1RFWFRV
UkVfTUFYX0xFVkVMIGFuZCBDTEFNUF9UT19FREdFCi0gICAgICAtIENoYW5nZSBkZWZhdWx0IHdy
YXAgbW9kZXMgdG8gYWx3YXlzIGJlIENMQU1QX1RPX0VER0UKLSAgICAgIC0gQ2hhbmdlIGRlZmF1
bHQgZmlsdGVycyB0byBhbHdheXMgYmUgTkVBUkVTVAotICAgICAgLSBNb3ZlZCBsYW5ndWFnZSBh
Ym91dCBnZW5lcmF0aW5nIG5ldyBsZXZlbHMgaW50byBhbiBpbnRlcmFjdGlvbiwKLSAgICAgICAg
c2luY2UgaXQgY2FuIG9ubHkgaGFwcGVuIG9uIE9wZW5HTCBFUwotICAgICAgLSBBZGRlZCBpbnRl
cmFjdGlvbiB3aXRoIEVYVF9kaXJlY3Rfc3RhdGVfYWNjZXNzCi0gICAgICAtIEFkZGVkIGV4dHJh
IDxpbnRlcm5hbGZvcm1hdHM+IGZvciBHTCBFUyB3aGVuIE9FU19kZXB0aF90ZXh0dXJlLAotICAg
ICAgICBPRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwgYW5kIEVYVF90ZXh0dXJlX3R5cGVfMl8xMF8x
MF8xMF9SRVYgYXJlCi0gICAgICAgIHByZXNlbnQuCi0gICAgICAtIE1pbm9yIG5vbi1mdW5jdGlv
bmFsIHdvcmRpbmcgZml4ZXMgYW5kIHR5cG9zCi0gICAgICAtIFJlc29sdmVkIGlzc3VlIDE2Ci0g
ICAgICAtIEFkZGVkIGlzc3VlcyAxNy0xOQotCi0gICAgUmV2aXNpb24gNCwgMjAxMC8wMS8xMyAo
Ym1lcnJ5KQotICAgICAgLSBDaGFuZ2VkIHN1ZmZpeCBmcm9tIEFSTSB0byBFWFQKLSAgICAgIC0g
QWRkZWQgbGlzdCBvZiBjb250cmlidXRvcnMKLSAgICAgIC0gQWRkZWQgbGFuZ3VhZ2UgdG8gZm9y
Y2UgdGhlIHRleHR1cmUgdG8gYWx3YXlzIGJlIGNvbXBsZXRlCi0gICAgICAtIFJlbW92ZWQgPGZv
cm1hdD4gYW5kIDx0eXBlPiBhcmd1bWVudHMKLSAgICAgIC0gQWRkZWQgaXNzdWVzIDE0LTE2Ci0g
ICAgICAtIFJlb3BlbmVkIGlzc3VlIDIKLSAgICAgIC0gUmVmb3JtYXR0ZWQgaXNzdWVzIHRvIHNl
cGFyYXRlIHJlc29sdXRpb24gYW5kIGRpc2N1c3Npb24KLSAgICAgIC0gUmVzb2x2ZWQgaXNzdWVz
IDEsIDkgYW5kIDExLTEzCi0gICAgICAtIEZpeGVkIHRoZSBtYXggbnVtYmVyIG9mIGxldmVscyBp
biBhIGN1YmUgbWFwIGFycmF5Ci0KLSAgICBSZXZpc2lvbiAzLCAyMDA5LzEyLzE3IChibWVycnkp
Ci0gICAgICAtIEFkZGVkIG1pc3NpbmcgdmVuZG9yIHN1ZmZpeCB0byBURVhUVVJFX0lNTVVUQUJM
RV9GT1JNQVRfQVJNCi0gICAgICAtIFJld3JpdHRlbiB0byBhZ2FpbnN0IGRlc2t0b3AgT3BlbkdM
Ci0gICAgICAtIEFkZGVkIHByb3RvdHlwZXMgZm9yIDFEIGFuZCBtdWx0aXNhbXBsZSBzdG9yYWdl
IGZ1bmN0aW9ucwotICAgICAgLSBBZGRlZCBpc3N1ZXMgOC0xMwotCi0gICAgUmV2aXNpb24gMiwg
MjAwOS8wOC8yMCAoYm1lcnJ5KQotICAgICAgLSBSZXNvbHZlZCBpc3N1ZSAyIChubyBib3JkZXIg
cGFyYW1ldGVyKQotICAgICAgLSBSZXNvbHZlZCBpc3N1ZSA0IChtZXRhZGF0YSBiZWNvbWVzIGlt
bXV0YWJsZSkKLSAgICAgIC0gQWRkZWQgaW50ZXJhY3Rpb24gd2l0aCBPRVNfdGV4dHVyZV9jdWJl
X21hcAotICAgICAgLSBBZGRlZCBlcnJvciBpZiB3aWR0aCAhPSBoZWlnaHQgaW4gYSBjdWJlIG1h
cAotICAgICAgLSBBZGRlZCBpc3N1ZXMgNS03Ci0KLSAgICBSZXZpc2lvbiAxLCAyMDA5LzA1LzA2
IChibWVycnkpCi0gICAgICAtIEZpcnN0IGRyYWZ0CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9pbmNsdWRlL2V4cG9ydC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL2luY2x1ZGUvZXhwb3J0LmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL2luY2x1ZGUvZXhwb3J0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwLDEzICsxMCwx
NSBAQAogI2RlZmluZSBMSUJHTEVTVjJfRVhQT1JUX0hfCiAKICNpZiBkZWZpbmVkKF9XSU4zMikK
LSMgICBpZiBkZWZpbmVkKExJQkdMRVNWMl9JTVBMRU1FTlRBVElPTikgfHwgZGVmaW5lZChMSUJB
TkdMRV9JTVBMRU1FTlRBVElPTikKKyNpZiBkZWZpbmVkKExJQkdMRVNWMl9JTVBMRU1FTlRBVElP
TikgfHwgZGVmaW5lZChMSUJBTkdMRV9JTVBMRU1FTlRBVElPTikgfHwgXAorICAgIGRlZmluZWQo
TElCQU5HTEVfVVRJTF9JTVBMRU1FTlRBVElPTikKICMgICAgICAgZGVmaW5lIEFOR0xFX0VYUE9S
VCBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKICMgICBlbHNlCiAjICAgICAgIGRlZmluZSBBTkdMRV9F
WFBPUlQgX19kZWNsc3BlYyhkbGxpbXBvcnQpCiAjICAgZW5kaWYKICNlbGlmIGRlZmluZWQoX19H
TlVDX18pCi0jICAgaWYgZGVmaW5lZChMSUJHTEVTVjJfSU1QTEVNRU5UQVRJT04pIHx8IGRlZmlu
ZWQoTElCQU5HTEVfSU1QTEVNRU5UQVRJT04pCisjaWYgZGVmaW5lZChMSUJHTEVTVjJfSU1QTEVN
RU5UQVRJT04pIHx8IGRlZmluZWQoTElCQU5HTEVfSU1QTEVNRU5UQVRJT04pIHx8IFwKKyAgICBk
ZWZpbmVkKExJQkFOR0xFX1VUSUxfSU1QTEVNRU5UQVRJT04pCiAjICAgICAgIGRlZmluZSBBTkdM
RV9FWFBPUlQgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiAjICAgZWxz
ZQogIyAgICAgICBkZWZpbmUgQU5HTEVfRVhQT1JUCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9pbmNsdWRlL0VHTC9lZ2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9pbmNsdWRlL0VHTC9lZ2wuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvaW5jbHVkZS9FR0wvZWdsLmgJKHdvcmtpbmcgY29weSkKQEAgLTYsNyArNiw3
IEBAIGV4dGVybiAiQyIgewogI2VuZGlmCiAKIC8qCi0qKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAx
NCBUaGUgS2hyb25vcyBHcm91cCBJbmMuCisqKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAxNSBUaGUg
S2hyb25vcyBHcm91cCBJbmMuCiAqKgogKiogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwg
ZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKICoqIGNvcHkgb2YgdGhp
cyBzb2Z0d2FyZSBhbmQvb3IgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKQEAg
LTMzLDcgKzMzLDcgQEAgZXh0ZXJuICJDIiB7CiAqKiB1c2VkIHRvIG1ha2UgdGhlIGhlYWRlciwg
YW5kIHRoZSBoZWFkZXIgY2FuIGJlIGZvdW5kIGF0CiAqKiAgIGh0dHA6Ly93d3cub3BlbmdsLm9y
Zy9yZWdpc3RyeS8KICoqCi0qKiBLaHJvbm9zICRSZXZpc2lvbjogMjkzMTggJCBvbiAkRGF0ZTog
MjAxNS0wMS0wMiAwMzoxNjoxMCAtMDgwMCAoRnJpLCAwMiBKYW4gMjAxNSkgJAorKiogS2hyb25v
cyAkUmV2aXNpb246IDMxNTY2ICQgb24gJERhdGU6IDIwMTUtMDYtMjMgMDg6NDg6NDggLTA3MDAg
KFR1ZSwgMjMgSnVuIDIwMTUpICQKICovCiAKICNpbmNsdWRlIDxFR0wvZWdscGxhdGZvcm0uaD4K
QEAgLTQ0LDcgKzQ0LDcgQEAgZXh0ZXJuICJDIiB7CiAjZGVmaW5lIEVHTF9TT0ZUX0xJTktJTkcg
MAogI2VuZGlmCiAKLS8qIEdlbmVyYXRlZCBvbiBkYXRlIDIwMTUwMTAyICovCisvKiBHZW5lcmF0
ZWQgb24gZGF0ZSAyMDE1MDYyMyAqLwogCiAvKiBHZW5lcmF0ZWQgQyBoZWFkZXIgZm9yOgogICog
QVBJOiBlZ2wKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvRUdML2VnbGV4
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvRUdML2Vn
bGV4dC5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNs
dWRlL0VHTC9lZ2xleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNTI2LDYgKzUyNiwxMSBAQCBFR0xB
UEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xRdWVyeVN1CiAjZGVmaW5lIEVHTF9QTEFURk9S
TV9BTkdMRV9UWVBFX09QRU5HTEVTX0FOR0xFIDB4MzIwRQogI2VuZGlmIC8qIEVHTF9BTkdMRV9w
bGF0Zm9ybV9hbmdsZV9vcGVuZ2wgKi8KIAorI2lmbmRlZiBFR0xfQU5HTEVfcGxhdGZvcm1fYW5n
bGVfbnVsbAorI2RlZmluZSBFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfbnVsbCAxCisjZGVmaW5l
IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX05VTExfQU5HTEUgMHgzM0FFCisjZW5kaWYgLyogRUdM
X0FOR0xFX3BsYXRmb3JtX2FuZ2xlX251bGwgKi8KKwogI2lmbmRlZiBFR0xfQU5HTEVfd2luZG93
X2ZpeGVkX3NpemUKICNkZWZpbmUgRUdMX0FOR0xFX3dpbmRvd19maXhlZF9zaXplIDEKICNkZWZp
bmUgRUdMX0ZJWEVEX1NJWkVfQU5HTEUgICAgICAgICAgICAgIDB4MzIwMQpAQCAtNTYxLDEyICs1
NjYsMjIgQEAgRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsUXVlcnlTdQogI2RlZmlu
ZSBFR0xfRDNEX1RFWFRVUkVfU1VCUkVTT1VSQ0VfSURfQU5HTEUgMHgzQUFCCiB0eXBlZGVmIEVH
TEJvb2xlYW4oRUdMQVBJRU5UUllQIFBGTkVHTENSRUFURVNUUkVBTVBST0RVQ0VSRDNEVEVYVFVS
RU5WMTJBTkdMRVBST0MpKEVHTERpc3BsYXkgZHB5LCBFR0xTdHJlYW1LSFIgc3RyZWFtLCBjb25z
dCBFR0xBdHRyaWIgKmF0dHJpYl9saXN0KTsKIHR5cGVkZWYgRUdMQm9vbGVhbihFR0xBUElFTlRS
WVAgUEZORUdMU1RSRUFNUE9TVEQzRFRFWFRVUkVOVjEyQU5HTEVQUk9DKShFR0xEaXNwbGF5IGRw
eSwgRUdMU3RyZWFtS0hSIHN0cmVhbSwgdm9pZCAqdGV4dHVyZSwgY29uc3QgRUdMQXR0cmliICph
dHRyaWJfbGlzdCk7Ci0jaWZkZWYgRUdMX0VYVF9QUk9UT1RZUEVTCisjaWZkZWYgRUdMX0VHTEVY
VF9QUk9UT1RZUEVTCiBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xDcmVhdGVTdHJl
YW1Qcm9kdWNlckQzRFRleHR1cmVOVjEyQU5HTEUoRUdMRGlzcGxheSBkcHksIEVHTFN0cmVhbUtI
UiBzdHJlYW0sIGNvbnN0IEVHTEF0dHJpYiAqYXR0cmliX2xpc3QpOwogRUdMQVBJIEVHTEJvb2xl
YW4gRUdMQVBJRU5UUlkgZWdsU3RyZWFtUG9zdEQzRFRleHR1cmVOVjEyQU5HTEUoRUdMRGlzcGxh
eSBkcHksIEVHTFN0cmVhbUtIUiBzdHJlYW0sIHZvaWQgKnRleHR1cmUsIGNvbnN0IEVHTEF0dHJp
YiAqYXR0cmliX2xpc3QpOwogI2VuZGlmCiAjZW5kaWYgLyogRUdMX0FOR0xFX3N0cmVhbV9wcm9k
dWNlcl9kM2RfdGV4dHVyZV9udjEyICovCiAKKyNpZm5kZWYgRUdMX0FOR0xFX2NyZWF0ZV9jb250
ZXh0X3dlYmdsX2NvbXBhdGliaWxpdHkKKyNkZWZpbmUgRUdMX0FOR0xFX2NyZWF0ZV9jb250ZXh0
X3dlYmdsX2NvbXBhdGliaWxpdHkgMQorI2RlZmluZSBFR0xfQ09OVEVYVF9XRUJHTF9DT01QQVRJ
QklMSVRZX0FOR0xFIDB4M0FBQworI2VuZGlmIC8qIEVHTF9BTkdMRV9jcmVhdGVfY29udGV4dF93
ZWJnbF9jb21wYXRpYmlsaXR5ICovCisKKyNpZm5kZWYgRUdMX0NIUk9NSVVNX2NyZWF0ZV9jb250
ZXh0X2JpbmRfZ2VuZXJhdGVzX3Jlc291cmNlCisjZGVmaW5lIEVHTF9DSFJPTUlVTV9jcmVhdGVf
Y29udGV4dF9iaW5kX2dlbmVyYXRlc19yZXNvdXJjZSAxCisjZGVmaW5lIEVHTF9DT05URVhUX0JJ
TkRfR0VORVJBVEVTX1JFU09VUkNFX0NIUk9NSVVNIDB4M0FBRAorI2VuZGlmIC8qIEVHTF9DSFJP
TUlVTV9jcmVhdGVfY29udGV4dF9iaW5kX2dlbmVyYXRlc19yZXNvdXJjZSAqLworCiAjaWZuZGVm
IEVHTF9BUk1fcGl4bWFwX211bHRpc2FtcGxlX2Rpc2NhcmQKICNkZWZpbmUgRUdMX0FSTV9waXht
YXBfbXVsdGlzYW1wbGVfZGlzY2FyZCAxCiAjZGVmaW5lIEVHTF9ESVNDQVJEX1NBTVBMRVNfQVJN
ICAgICAgICAgICAweDMyODYKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUv
R0xFUzIvZ2wyZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5j
bHVkZS9HTEVTMi9nbDJleHQuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvaW5jbHVkZS9HTEVTMi9nbDJleHQuaAkod29ya2luZyBjb3B5KQpAQCAtODIxLDYg
KzgyMSwyNzEgQEAgR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQmxpdEZyYW1lYgogI2Vu
ZGlmCiAjZW5kaWYgLyogR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCAqLwogCisjaWZuZGVmIEdM
X0FOR0xFX3dlYmdsX2NvbXBhdGliaWxpdHkKKyNkZWZpbmUgR0xfQU5HTEVfd2ViZ2xfY29tcGF0
aWJpbGl0eSAxCit0eXBlZGVmIEdMYm9vbGVhbihHTF9BUElFTlRSWVAgUEZOR0xFTkFCTEVFWFRF
TlNJT05BTkdMRVBST0MpIChjb25zdCBHTGNoYXIgKm5hbWUpOworI2lmZGVmIEdMX0dMRVhUX1BS
T1RPVFlQRVMKK0dMX0FQSUNBTEwgR0xib29sZWFuIEdMX0FQSUVOVFJZIGdsRW5hYmxlRXh0ZW5z
aW9uQU5HTEUgKGNvbnN0IEdMY2hhciAqbmFtZSk7CisjZW5kaWYKKyNlbmRpZiAvKiBHTF9BTkdM
RV93ZWJnbF9jb21wYXRpYmlsaXR5ICovCisKKyNpZm5kZWYgR0xfQ0hST01JVU1fZnJhbWVidWZm
ZXJfbWl4ZWRfc2FtcGxlcworI2RlZmluZSBHTF9DSFJPTUlVTV9mcmFtYnVmZmVyX21peGVkX3Nh
bXBsZXMgMQorI2RlZmluZSBHTF9DT1ZFUkFHRV9NT0RVTEFUSU9OX0NIUk9NSVVNIDB4OTMzMgor
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDT1ZFUkFHRU1PRFVMQVRJT05DSFJPTUlV
TVBST0MpIChHTGVudW0gY29tcG9uZW50cyk7CisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUwor
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU0o
R0xlbnVtIGNvbXBvbmVudHMpOworI2VuZGlmCisjZW5kaWYgLyogR0xfQ0hST01JVU1fZnJhbWVi
dWZmZXJfbWl4ZWRfc2FtcGxlcyAqLworCisjaWZuZGVmIEdMX0NIUk9NSVVNX2JpbmRfZ2VuZXJh
dGVzX3Jlc291cmNlCisjZGVmaW5lIEdMX0NIUk9NSVVNX2JpbmRfZ2VuZXJhdGVzX3Jlc291cmNl
IDEKKyNkZWZpbmUgR0xfQklORF9HRU5FUkFURVNfUkVTT1VSQ0VfQ0hST01JVU0gMHg5MjQ0Cisj
ZW5kaWYgLyogR0xfQ0hST01JVU1fYmluZF9nZW5lcmF0ZXNfcmVzb3VyY2UgKi8KKworLy8gbmVl
ZGVkIGJ5IE5WX3BhdGhfcmVuZGVyaW5nIChhbmQgdGh1cyBDSFJPTUlVTV9wYXRoX3JlbmRlcmlu
ZykKKy8vIGJ1dCBDSFJPTUlVTV9wYXRoX3JlbmRlcmluZyBvbmx5IG5lZWRzIE1hdHJpeExvYWRm
RVhULCBNYXRyaXhMb2FkSWRlbnRpdHlFWFQKKyNpZm5kZWYgR0xfRVhUX2RpcmVjdF9zdGF0ZV9h
Y2Nlc3MKKyNkZWZpbmUgR0xfRVhUX2RpcmVjdF9zdGF0ZV9hY2Nlc3MgMQordHlwZWRlZiB2b2lk
KEdMX0FQSUVOVFJZUCBQRk5HTE1BVFJJWExPQURGRVhUUFJPQykoR0xlbnVtIG1hdHJpeE1vZGUs
IGNvbnN0IEdMZmxvYXQgKm0pOwordHlwZWRlZiB2b2lkKEdMX0FQSUVOVFJZUCBQRk5HTE1BVFJJ
WExPQURJREVOVElUWUVYVFBST0MpKEdMZW51bSBtYXRyaXhNb2RlKTsKKyNpZmRlZiBHTF9HTEVY
VF9QUk9UT1RZUEVTCitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xNYXRyaXhMb2FkZkVY
VChHTGVudW0gbWF0cml4TW9kZSwgY29uc3QgR0xmbG9hdCAqbSk7CitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xNYXRyaXhMb2FkSWRlbnRpdHlFWFQoR0xlbnVtIG1hdHJpeE1vZGUpOwor
I2VuZGlmCisjZW5kaWYgLyogR0xfRVhUX2RpcmVjdF9zdGF0ZV9hY2Nlc3MgKi8KKworI2lmbmRl
ZiBHTF9DSFJPTUlVTV9wYXRoX3JlbmRlcmluZworI2RlZmluZSBHTF9DSFJPTUlVTV9wYXRoX3Jl
bmRlcmluZyAxCisjZGVmaW5lIEdMX1BBVEhfTU9ERUxWSUVXX0NIUk9NSVVNIDB4MTcwMAorI2Rl
ZmluZSBHTF9QQVRIX1BST0pFQ1RJT05fQ0hST01JVU0gMHgxNzAxCisjZGVmaW5lIEdMX0NMT1NF
X1BBVEhfQ0hST01JVU0gMHgwMAorI2RlZmluZSBHTF9NT1ZFX1RPX0NIUk9NSVVNIDB4MDIKKyNk
ZWZpbmUgR0xfTElORV9UT19DSFJPTUlVTSAweDA0CisjZGVmaW5lIEdMX1FVQURSQVRJQ19DVVJW
RV9UT19DSFJPTUlVTSAweDBBCisjZGVmaW5lIEdMX0NVQklDX0NVUlZFX1RPX0NIUk9NSVVNIDB4
MEMKKyNkZWZpbmUgR0xfQ09OSUNfQ1VSVkVfVE9fQ0hST01JVU0gMHgxQQorI2RlZmluZSBHTF9Q
QVRIX01PREVMVklFV19NQVRSSVhfQ0hST01JVU0gMHgwQkE2CisjZGVmaW5lIEdMX1BBVEhfUFJP
SkVDVElPTl9NQVRSSVhfQ0hST01JVU0gMHgwQkE3CisjZGVmaW5lIEdMX1BBVEhfU1RST0tFX1dJ
RFRIX0NIUk9NSVVNIDB4OTA3NQorI2RlZmluZSBHTF9QQVRIX0VORF9DQVBTX0NIUk9NSVVNIDB4
OTA3NgorI2RlZmluZSBHTF9QQVRIX0pPSU5fU1RZTEVfQ0hST01JVU0gMHg5MDc5CisjZGVmaW5l
IEdMX1BBVEhfTUlURVJfTElNSVRfQ0hST01JVU0gMHg5MDdhCisjZGVmaW5lIEdMX1BBVEhfU1RS
T0tFX0JPVU5EX0NIUk9NSVVNIDB4OTA4NgorI2RlZmluZSBHTF9GTEFUX0NIUk9NSVVNIDB4MUQw
MAorI2RlZmluZSBHTF9TUVVBUkVfQ0hST01JVU0gMHg5MGEzCisjZGVmaW5lIEdMX1JPVU5EX0NI
Uk9NSVVNIDB4OTBhNAorI2RlZmluZSBHTF9CRVZFTF9DSFJPTUlVTSAweDkwQTYKKyNkZWZpbmUg
R0xfTUlURVJfUkVWRVJUX0NIUk9NSVVNIDB4OTBBNworI2RlZmluZSBHTF9DT1VOVF9VUF9DSFJP
TUlVTSAweDkwODgKKyNkZWZpbmUgR0xfQ09VTlRfRE9XTl9DSFJPTUlVTSAweDkwODkKKyNkZWZp
bmUgR0xfQ09OVkVYX0hVTExfQ0hST01JVU0gMHg5MDhCCisjZGVmaW5lIEdMX0JPVU5ESU5HX0JP
WF9DSFJPTUlVTSAweDkwOEQKKyNkZWZpbmUgR0xfQk9VTkRJTkdfQk9YX09GX0JPVU5ESU5HX0JP
WEVTX0NIUk9NSVVNIDB4OTA5QworI2RlZmluZSBHTF9FWUVfTElORUFSX0NIUk9NSVVNIDB4MjQw
MAorI2RlZmluZSBHTF9PQkpFQ1RfTElORUFSX0NIUk9NSVVNIDB4MjQwMQorI2RlZmluZSBHTF9D
T05TVEFOVF9DSFJPTUlVTSAweDg1NzYKKyNkZWZpbmUgR0xfVFJBTlNMQVRFX1hfQ0hST01JVU0g
MHg5MDhFCisjZGVmaW5lIEdMX1RSQU5TTEFURV9ZX0NIUk9NSVVNIDB4OTA4RgorI2RlZmluZSBH
TF9UUkFOU0xBVEVfMkRfQ0hST01JVU0gMHg5MDkwCisjZGVmaW5lIEdMX1RSQU5TTEFURV8zRF9D
SFJPTUlVTSAweDkwOTEKKyNkZWZpbmUgR0xfQUZGSU5FXzJEX0NIUk9NSVVNIDB4OTA5MgorI2Rl
ZmluZSBHTF9BRkZJTkVfM0RfQ0hST01JVU0gMHg5MDk0CisjZGVmaW5lIEdMX1RSQU5TUE9TRV9B
RkZJTkVfMkRfQ0hST01JVU0gMHg5MDk2CisjZGVmaW5lIEdMX1RSQU5TUE9TRV9BRkZJTkVfM0Rf
Q0hST01JVU0gMHg5MDk4Cit0eXBlZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBGTkdMTUFUUklYTE9B
REZDSFJPTUlVTVBST0MpKEdMZW51bSBtYXRyaXhNb2RlLCBjb25zdCBHTGZsb2F0ICptKTsKK3R5
cGVkZWYgdm9pZChHTF9BUElFTlRSWVAgUEZOR0xNQVRSSVhMT0FESURFTlRJVFlDSFJPTUlVTVBS
T0MpKEdMZW51bSBtYXRyaXhNb2RlKTsKK3R5cGVkZWYgR0x1aW50KEdMX0FQSUVOVFJZUCBQRk5H
TEdFTlBBVEhTQ0hST01JVU1QUk9DKShHTHNpemVpIHJhbmdlKTsKK3R5cGVkZWYgdm9pZChHTF9B
UElFTlRSWVAgUEZOR0xERUxFVEVQQVRIU0NIUk9NSVVNUFJPQykoR0x1aW50IHBhdGgsIEdMc2l6
ZWkgcmFuZ2UpOwordHlwZWRlZiBHTGJvb2xlYW4oR0xfQVBJRU5UUllQIFBGTkdMSVNQQVRIQ0hS
T01JVU1QUk9DKShHTHVpbnQgcGF0aCk7Cit0eXBlZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBGTkdM
UEFUSENPTU1BTkRTQ0hST01JVU1QUk9DKShHTHVpbnQgcGF0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29tbWFu
ZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTHVieXRlICpjb21tYW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29vcmRzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGNvb3JkVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmNvb3Jkcyk7Cit0eXBlZGVmIHZvaWQoR0xfQVBJRU5U
UllQIFBGTkdMUEFUSFBBUkFNRVRFUklDSFJPTUlVTVBST0MpKEdMdWludCBwYXRoLCBHTGVudW0g
cG5hbWUsIEdMaW50IHZhbHVlKTsKK3R5cGVkZWYgdm9pZChHTF9BUElFTlRSWVAgUEZOR0xQQVRI
UEFSQU1FVEVSRkNIUk9NSVVNUFJPQykoR0x1aW50IHBhdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xmbG9hdCB2YWx1ZSk7Cit0eXBlZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBGTkdMR0VUUEFUSFBB
UkFNRVRFUklWQ0hST01JVU1QUk9DKShHTHVpbnQgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBGTkdMR0VU
UEFUSFBBUkFNRVRFUkZWQ0hST01JVU1QUk9DKShHTHVpbnQgcGF0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZmxvYXQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZChHTF9BUElFTlRSWVAg
UEZOR0xQQVRIU1RFTkNJTEZVTkNDSFJPTUlVTVBST0MpKEdMZW51bSBmdW5jLCBHTGludCByZWYs
IEdMdWludCBtYXNrKTsKK3R5cGVkZWYgdm9pZChHTF9BUElFTlRSWVAgUEZOR0xTVEVOQ0lMRklM
TFBBVEhDSFJPTUlVTVBST0MpKEdMdWludCBwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IG1hc2spOwordHlwZWRlZiB2b2lkKEdMX0FQSUVOVFJZUCBQRk5HTFNURU5DSUxTVFJP
S0VQQVRIQ0hST01JVU1QUk9DKShHTHVpbnQgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgbWFzayk7Cit0eXBlZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBGTkdMQ09WRVJG
SUxMUEFUSENIUk9NSVVNUFJPQykoR0x1aW50IHBhdGgsIEdMZW51bSBjb3Zlck1vZGUpOwordHlw
ZWRlZiB2b2lkKEdMX0FQSUVOVFJZUCBQRk5HTENPVkVSU1RST0tFUEFUSENIUk9NSVVNUFJPQyko
R0x1aW50IHBhdGgsIEdMZW51bSBjb3Zlck1vZGUpOwordHlwZWRlZiB2b2lkKEdMX0FQSUVOVFJZ
UCBQRk5HTFNURU5DSUxUSEVOQ09WRVJGSUxMUEFUSENIUk9NSVVNUFJPQykoR0x1aW50IHBhdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpOwordHlwZWRlZiB2b2lkKEdMX0FQSUVOVFJZ
UCBQRk5HTFNURU5DSUxUSEVOQ09WRVJTVFJPS0VQQVRIQ0hST01JVU1QUk9DKShHTHVpbnQgcGF0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
bWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSk7Cit0eXBlZGVmIHZvaWQoR0xf
QVBJRU5UUllQIFBGTkdMQ09WRVJGSUxMUEFUSElOU1RBTkNFRENIUk9NSVVNUFJPQykoR0xzaXpl
aSBudW1QYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHZvaWQgKnBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gY292ZXJNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7Cit0eXBlZGVmIHZvaWQoR0xfQVBJ
RU5UUllQIFBGTkdMQ09WRVJTVFJPS0VQQVRISU5TVEFOQ0VEQ0hST01JVU1QUk9DKSgKKyAgICBH
THNpemVpIG51bVBhdGhzLAorICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCisgICAgY29uc3Qgdm9p
ZCAqcGF0aHMsCisgICAgR0x1aW50IHBhdGhCYXNlLAorICAgIEdMZW51bSBjb3Zlck1vZGUsCisg
ICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFs
dWVzKTsKK3R5cGVkZWYgdm9pZChHTF9BUElFTlRSWVAgUEZOR0xTVEVOQ0lMRklMTFBBVEhJTlNU
QU5DRURDSFJPTUlVTVBST0MpKAorICAgIEdMc2l6ZWkgbnVtUGF0aHMsCisgICAgR0xlbnVtIHBh
dGhOYW1lVHlwZSwKKyAgICBjb25zdCB2b2lkICpwYXRocywKKyAgICBHTHVpbnQgcGF0aEJhc2Us
CisgICAgR0xlbnVtIGZpbGxNb2RlLAorICAgIEdMdWludCBtYXNrLAorICAgIEdMZW51bSB0cmFu
c2Zvcm1UeXBlLAorICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7Cit0eXBlZGVm
IHZvaWQoR0xfQVBJRU5UUllQIFBGTkdMU1RFTkNJTFNUUk9LRVBBVEhJTlNUQU5DRURDSFJPTUlV
TVBST0MpKAorICAgIEdMc2l6ZWkgbnVtUGF0aHMsCisgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwK
KyAgICBjb25zdCB2b2lkICpwYXRocywKKyAgICBHTHVpbnQgcGF0aEJhc2UsCisgICAgR0xpbnQg
cmVmZXJlbmNlLAorICAgIEdMdWludCBtYXNrLAorICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAor
ICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7Cit0eXBlZGVmIHZvaWQoR0xfQVBJ
RU5UUllQIFBGTkdMU1RFTkNJTFRIRU5DT1ZFUkZJTExQQVRISU5TVEFOQ0VEQ0hST01JVU1QUk9D
KSgKKyAgICBHTHNpemVpIG51bVBhdGhzLAorICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCisgICAg
Y29uc3Qgdm9pZCAqcGF0aHMsCisgICAgR0x1aW50IHBhdGhCYXNlLAorICAgIEdMZW51bSBmaWxs
TW9kZSwKKyAgICBHTHVpbnQgbWFzaywKKyAgICBHTGVudW0gY292ZXJNb2RlLAorICAgIEdMZW51
bSB0cmFuc2Zvcm1UeXBlLAorICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7Cit0
eXBlZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBGTkdMU1RFTkNJTFRIRU5DT1ZFUlNUUk9LRVBBVEhJ
TlNUQU5DRURDSFJPTUlVTVBST0MpKAorICAgIEdMc2l6ZWkgbnVtUGF0aHMsCisgICAgR0xlbnVt
IHBhdGhOYW1lVHlwZSwKKyAgICBjb25zdCB2b2lkICpwYXRocywKKyAgICBHTHVpbnQgcGF0aEJh
c2UsCisgICAgR0xpbnQgcmVmZXJlbmNlLAorICAgIEdMdWludCBtYXNrLAorICAgIEdMZW51bSBj
b3Zlck1vZGUsCisgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgY29uc3QgR0xmbG9hdCAq
dHJhbnNmb3JtVmFsdWVzKTsKKwordHlwZWRlZiB2b2lkKEdMX0FQSUVOVFJZIFBGTkdMQklOREZS
QUdNRU5USU5QVVRMT0NBVElPTkNIUk9NSVVNUFJPQykoR0x1aW50IHByb2dyYW0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSk7Cit0
eXBlZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVBBVEhGUkFHTUVOVElOUFVUR0VO
Q0hST01JVU1QUk9DKShHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGdlbk1vZGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBjb21wb25lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqY29lZmZzKTsKKyNp
ZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xN
YXRyaXhMb2FkZkNIUk9NSVVNKEdMZW51bSBtYXRyaXhNb2RlLCBjb25zdCBHTGZsb2F0ICptKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbE1hdHJpeExvYWRJZGVudGl0eUNIUk9NSVVN
KEdMZW51bSBtYXRyaXhNb2RlKTsKK0dMX0FQSUNBTEwgR0x1aW50IEdMX0FQSUVOVFJZIGdsR2Vu
UGF0aHNDSFJPTUlVTShHTHNpemVpIHJhbmdlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbERlbGV0ZVBhdGhzQ0hST01JVU0oR0x1aW50IHBhdGgsIEdMc2l6ZWkgcmFuZ2UpOworR0xf
QVBJQ0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJc1BhdGhDSFJPTUlVTShHTHVpbnQgcGF0
aCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQYXRoQ29tbWFuZHNDSFJPTUlVTShH
THVpbnQgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgbnVtQ29tbWFuZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVieXRlICpjb21tYW5kcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29v
cmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGNvb3JkVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmNvb3Jkcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xQYXRoUGFyYW1ldGVyaUNIUk9NSVVNKEdMdWludCBwYXRoLCBHTGVudW0gcG5hbWUs
IEdMaW50IHZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFBhdGhQYXJhbWV0
ZXJmQ0hST01JVU0oR0x1aW50IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCB2YWx1ZSk7CitH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRQYXRoUGFyYW1ldGVyaXZDSFJPTUlVTShH
THVpbnQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGludCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsR2V0UGF0aFBhcmFtZXRlcmZ2Q0hST01JVU0oR0x1aW50IHBhdGgsIEdM
ZW51bSBwbmFtZSwgR0xmbG9hdCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsUGF0aFN0ZW5jaWxGdW5jQ0hST01JVU0oR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50
IG1hc2spOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU3RlbmNpbEZpbGxQYXRoQ0hS
T01JVU0oR0x1aW50IHBhdGgsIEdMZW51bSBmaWxsTW9kZSwgR0x1aW50IG1hc2spOworR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU3RlbmNpbFN0cm9rZVBhdGhDSFJPTUlVTShHTHVpbnQg
cGF0aCwgR0xpbnQgcmVmZXJlbmNlLCBHTHVpbnQgbWFzayk7CitHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xDb3ZlckZpbGxQYXRoQ0hST01JVU0oR0x1aW50IHBhdGgsIEdMZW51bSBjb3Zl
ck1vZGUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ292ZXJTdHJva2VQYXRoQ0hS
T01JVU0oR0x1aW50IHBhdGgsIEdMZW51bSBjb3Zlck1vZGUpOworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoQ0hST01JVU0oR0x1aW50IHBhdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZmlsbE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBjb3Zlck1vZGUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU3RlbmNpbFRoZW5D
b3ZlclN0cm9rZVBhdGhDSFJPTUlVTShHTHVpbnQgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJl
bmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSk7CitH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01J
VU0oR0xzaXplaSBudW1QYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHZvaWQgKnBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2Rl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9y
bVZhbHVlcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xDb3ZlclN0cm9rZVBhdGhJ
bnN0YW5jZWRDSFJPTUlVTShHTHNpemVpIG51bVBhdGhzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1l
VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKEdMc2l6ZWkgbnVtUGF0
aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xm
bG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFN0
ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oR0xzaXplaSBudW1QYXRocywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBwYXRoQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkK
K2dsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oR0xzaXplaSBudW1Q
YXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBhdGhOYW1lVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgdm9pZCAqcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5z
Zm9ybVZhbHVlcyk7CisKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWQorZ2xTdGVuY2lsVGhl
bkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKEdMc2l6ZWkgbnVtUGF0aHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1l
VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB2b2lkICpwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgcGF0aEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
dHJhbnNmb3JtVmFsdWVzKTsKKworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQmluZEZy
YWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNKEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSk7CitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShHTHVpbnQg
cHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGdlbk1v
ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBjb21wb25lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
Y29lZmZzKTsKKworI2VuZGlmCisjZW5kaWYgLyogR0xfQ0hST01JVU1fcGF0aF9yZW5kZXJpbmcg
Ki8KKwogI2lmbmRlZiBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQogI2RlZmluZSBH
TF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSAxCiAjZGVmaW5lIEdMX1JFTkRFUkJVRkZF
Ul9TQU1QTEVTX0FOR0xFICAgICAweDhDQUIKQEAgLTEwMDksNiArMTI3NCw2MSBAQCBHTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRTeW5jaXZBCiAjZGVmaW5lIEdMX0FSTV9zaGFkZXJf
ZnJhbWVidWZmZXJfZmV0Y2hfZGVwdGhfc3RlbmNpbCAxCiAjZW5kaWYgLyogR0xfQVJNX3NoYWRl
cl9mcmFtZWJ1ZmZlcl9mZXRjaF9kZXB0aF9zdGVuY2lsICovCiAKKyNpZm5kZWYgR0xfQ0hST01J
VU1fY29weV90ZXh0dXJlCisjZGVmaW5lIEdMX0NIUk9NSVVNX2NvcHlfdGV4dHVyZSAxCit0eXBl
ZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBGTkdMQ09QWVRFWFRVUkVDSFJPTUlVTVBST0MpKEdMdWlu
dCBzb3VyY2VJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IGRlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxGb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBk
ZXN0VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xib29sZWFuIHVucGFja0ZsaXBZLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNrUHJlbXVsdGlw
bHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xib29sZWFuIHVucGFja1VubXVsdGlwbHlBbHBoYSk7Cit0eXBlZGVmIHZvaWQo
R0xfQVBJRU5UUllQIFBGTkdMQ09QWVNVQlRFWFRVUkVDSFJPTUlVTVBST0MpKEdMdWludCBzb3Vy
Y2VJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IGRlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeW9mZnNl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBo
ZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMYm9vbGVhbiB1bnBhY2tGbGlwWSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFja1ByZW11
bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBhY2tVbm11bHRpcGx5QWxwaGEpOworI2lmZGVm
IEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENvcHlU
ZXh0dXJlQ0hST01JVU0oR0x1aW50IHNvdXJjZUlkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZGVzdElkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbEZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGRlc3RUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGJvb2xlYW4gdW5wYWNrRmxpcFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xl
YW4gdW5wYWNrVW5tdWx0aXBseUFscGhhKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bENvcHlTdWJUZXh0dXJlQ0hST01JVU0oR0x1aW50IHNvdXJjZUlkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZGVzdElkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4
b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi
b29sZWFuIHVucGFja0ZsaXBZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFu
IHVucGFja1VubXVsdGlwbHlBbHBoYSk7CisjZW5kaWYKKyNlbmRpZiAvKiBHTF9DSFJPTUlVTV9j
b3B5X3RleHR1cmUgKi8KKworI2lmbmRlZiBHTF9DSFJPTUlVTV9jb21wcmVzc2VkX2NvcHlfdGV4
dHVyZQorI2RlZmluZSBHTF9DSFJPTUlVTV9jb21wcmVzc2VkX2NvcHlfdGV4dHVyZSAxCit0eXBl
ZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBGTkdMQ09NUFJFU1NFRENPUFlURVhUVVJFQ0hST01JVU1Q
Uk9DKShHTHVpbnQgc291cmNlSWQsIEdMdWludCBkZXN0SWQpOworI2lmZGVmIEdMX0dMRVhUX1BS
T1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENvbXByZXNzZWRDb3B5VGV4
dHVyZUNIUk9NSVVNKEdMdWludCBzb3VyY2VJZCwgR0x1aW50IGRlc3RJZCk7CisjZW5kaWYKKyNl
bmRpZiAvKiBHTF9DSFJPTUlVTV9jb21wcmVzc2VkX2NvcHlfdGV4dHVyZSAqLworCisjaWZuZGVm
IEdMX0NIUk9NSVVNX3N5bmNfcXVlcnkKKyNkZWZpbmUgR0xfQ0hST01JVU1fc3luY19xdWVyeSAx
CisjZGVmaW5lIEdMX0NPTU1BTkRTX0NPTVBMRVRFRF9DSFJPTUlVTSAgICAweDg0RjcKKyNlbmRp
ZiAgLyogR0xfQ0hST01JVU1fc3luY19xdWVyeSAqLworCiAjaWZuZGVmIEdMX0RNUF9wcm9ncmFt
X2JpbmFyeQogI2RlZmluZSBHTF9ETVBfcHJvZ3JhbV9iaW5hcnkgMQogI2RlZmluZSBHTF9TTUFQ
SFMzMF9QUk9HUkFNX0JJTkFSWV9ETVAgICAgMHg5MjUxCkBAIC0yOTM1LDYgKzMyNTUsMTMyIEBA
IEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEVuZFRpbGluZ1EKICNkZWZpbmUgR0xfQ09N
UFJFU1NFRF9TUkdCOF9BTFBIQThfTE9TU1lfREVDT0RFX0VUQzJfRUFDX0FOR0xFICAgICAgICAg
ICAweDk2OUEKICNlbmRpZiAvKiBHTF9BTkdMRV9sb3NzeV9ldGNfZGVjb2RlICovCiAKKyNpZm5k
ZWYgR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKKyNkZWZpbmUgR0xfQU5HTEVfcm9idXN0
X2NsaWVudF9tZW1vcnkgMQordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRCT09M
RUFOVlJPQlVTVEFOR0xFKSAoR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkg
Kmxlbmd0aCwgR0xib29sZWFuICpkYXRhKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMR0VUQlVGRkVSUEFSQU1FVEVSSVZST0JVU1RBTkdMRSkgKEdMZW51bSB0YXJnZXQsIEdMZW51
bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpwYXJhbXMp
OwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRGTE9BVFZST0JVU1RBTkdMRSkg
KEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMZmxvYXQg
KmRhdGEpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRGUkFNRUJVRkZFUkFU
VEFDSE1FTlRQQVJBTUVURVJJVlJPQlVTVEFOR0xFKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0
dGFjaG1lbnQsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgs
IEdMaW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRJTlRF
R0VSVlJPQlVTVEFOR0xFKSAoR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkg
Kmxlbmd0aCwgR0xpbnQgKmRhdGEpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xH
RVRQUk9HUkFNSVZST0JVU1RBTkdMRSkgKEdMdWludCBwcm9ncmFtLCBHTGVudW0gcG5hbWUsIEdM
c2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqcGFyYW1zKTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUUkVOREVSQlVGRkVSUEFSQU1FVEVSSVZST0JVU1RB
TkdMRSkgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNp
emVpICpsZW5ndGgsIEdMaW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xHRVRTSEFERVJJVlJPQlVTVEFOR0xFKSAoR0x1aW50IHNoYWRlciwgR0xlbnVtIHBuYW1l
LCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnBhcmFtcyk7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFRFWFBBUkFNRVRFUkZWUk9CVVNUQU5HTEUp
IChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAq
bGVuZ3RoLCBHTGZsb2F0ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xHRVRURVhQQVJBTUVURVJJVlJPQlVTVEFOR0xFKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBu
YW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnBhcmFtcyk7Cit0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFVOSUZPUk1GVlJPQlVTVEFOR0xFKSAo
R0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkg
Kmxlbmd0aCwgR0xmbG9hdCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMR0VUVU5JRk9STUlWUk9CVVNUQU5HTEUpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqcGFyYW1zKTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUVkVSVEVYQVRUUklCRlZST0JVU1RBTkdM
RSkgKEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkg
Kmxlbmd0aCwgR0xmbG9hdCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMR0VUVkVSVEVYQVRUUklCSVZST0JVU1RBTkdMRSkgKEdMdWludCBpbmRleCwgR0xlbnVtIHBu
YW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnBhcmFtcyk7Cit0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFZFUlRFWEFUVFJJQlBPSU5URVJWUk9C
VVNUQU5HTEUpIChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBH
THNpemVpICpsZW5ndGgsIHZvaWQgKipwb2ludGVyKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMUkVBRFBJWEVMU1JPQlVTVEFOR0xFKSAoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHNp
emVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqcGl4ZWxzKTsKK3R5cGVkZWYgdm9p
ZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVYSU1BR0UyRFJPQlVTVEFOR0xFKSAoR0xlbnVtIHRhcmdl
dCwgR0xpbnQgbGV2ZWwsIEdMaW50IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xz
aXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpOwordHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xURVhQQVJBTUVURVJGVlJPQlVTVEFOR0xFKSAoR0xlbnVtIHRhcmdldCwgR0xl
bnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFRFWFBBUkFNRVRFUklWUk9CVVNUQU5HTEUpIChH
TGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0xpbnQg
KnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFRFWFNVQklNQUdFMkRS
T0JVU1RBTkdMRSkgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBH
TGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1h
dCwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVYSU1BR0UzRFJPQlVTVEFOR0xFKSAoR0xl
bnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xpbnQgYm9yZGVyLCBHTGVudW0g
Zm9ybWF0LCBHTGVudW0gdHlwZSwgR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMp
OwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xURVhTVUJJTUFHRTNEUk9CVVNUQU5H
TEUpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9m
ZnNldCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6
ZWkgZGVwdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IHZvaWQgKnBpeGVscyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFFV
RVJZSVZST0JVU1RBTkdMRSkgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBi
dWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xHRVRRVUVSWU9CSkVDVFVJVlJPQlVTVEFOR0xFKSAoR0x1aW50IGlk
LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTHVpbnQg
KnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVEJVRkZFUlBPSU5U
RVJWUk9CVVNUQU5HTEUpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVm
U2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMR0VUSU5URUdFUklfVlJPQlVTVEFOR0xFKSAoR0xlbnVtIHRhcmdldCwg
R0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKmRh
dGEpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0VUSU5URVJOQUxGT1JNQVRJVlJP
QlVTVEFOR0xFKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGVudW0g
cG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqcGFyYW1zKTsK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUVkVSVEVYQVRUUklCSUlWUk9CVVNU
QU5HTEUpIChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNp
emVpICpsZW5ndGgsIEdMaW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xHRVRWRVJURVhBVFRSSUJJVUlWUk9CVVNUQU5HTEUpIChHTHVpbnQgaW5kZXgsIEdMZW51
bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMdWludCAqcGFyYW1z
KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUVU5JRk9STVVJVlJPQlVTVEFO
R0xFKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdM
c2l6ZWkgKmxlbmd0aCwgR0x1aW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xHRVRBQ1RJVkVVTklGT1JNQkxPQ0tJVlJPQlVTVEFOR0xFKSAoR0x1aW50IHByb2dy
YW0sIEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNp
emUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTEdFVElOVEVHRVI2NFZST0JVU1RBTkdMRSkgKEdMZW51bSBwbmFtZSwgR0xz
aXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50NjQgKmRhdGEpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRJTlRFR0VSNjRJX1ZST0JVU1RBTkdMRSkgKEdMZW51
bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgs
IEdMaW50NjQgKmRhdGEpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRCVUZG
RVJQQVJBTUVURVJJNjRWUk9CVVNUQU5HTEUpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUs
IEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludDY0ICpwYXJhbXMpOwordHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xTQU1QTEVSUEFSQU1FVEVSSVZST0JVU1RBTkdM
RSkgKEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0xpbnQgKnBhcmFtKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMU0FNUExFUlBB
UkFNRVRFUkZWUk9CVVNUQU5HTEUpIChHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMR0VUU0FNUExFUlBBUkFNRVRFUklWUk9CVVNUQU5HTEUpIChHTHVpbnQgc2Ft
cGxlciwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xp
bnQgKnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFNBTVBMRVJQ
QVJBTUVURVJGVlJPQlVTVEFOR0xFKSAoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xz
aXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMZmxvYXQgKnBhcmFtcyk7Cit0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVEZSQU1FQlVGRkVSUEFSQU1FVEVSSVZST0JVU1RB
TkdMRSkgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNp
emVpICpsZW5ndGgsIEdMaW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xHRVRQUk9HUkFNSU5URVJGQUNFSVZST0JVU1RBTkdMRSkgKEdMdWludCBwcm9ncmFtLCBH
TGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdM
c2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZ
UCBQRk5HTEdFVEJPT0xFQU5JX1ZST0JVU1RBTkdMRSkgKEdMZW51bSB0YXJnZXQsIEdMdWludCBp
bmRleCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMYm9vbGVhbiAqZGF0YSk7
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVE1VTFRJU0FNUExFRlZST0JVU1RB
TkdMRSkgKEdMZW51bSBwbmFtZSwgR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6
ZWkgKmxlbmd0aCwgR0xmbG9hdCAqdmFsKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMR0VUVEVYTEVWRUxQQVJBTUVURVJJVlJPQlVTVEFOR0xFKSAoR0xlbnVtIHRhcmdldCwgR0xp
bnQgbGV2ZWwsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgs
IEdMaW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRURVhM
RVZFTFBBUkFNRVRFUkZWUk9CVVNUQU5HTEUpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwg
R0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xmbG9hdCAq
cGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUUE9JTlRFUlZST0JV
U1RBTkdMRVJPQlVTVEFOR0xFKSAoR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6
ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQ
Rk5HTFJFQUROUElYRUxTUk9CVVNUQU5HTEUpIChHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkg
YnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCB2b2lkICpkYXRhKTsKK3R5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMR0VUTlVOSUZPUk1GVlJPQlVTVEFOR0xFKSAoR0x1aW50IHByb2dyYW0s
IEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xmbG9h
dCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUTlVOSUZPUk1J
VlJPQlVTVEFOR0xFKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1
ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTEdFVE5VTklGT1JNVUlWUk9CVVNUQU5HTEUpIChHTHVpbnQgcHJvZ3Jh
bSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTHVp
bnQgKnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFRFWFBBUkFNRVRF
UklJVlJPQlVTVEFOR0xFKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xURVhQQVJBTUVURVJJVUlWUk9CVVNUQU5HTEUpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0g
cG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0x1aW50ICpwYXJhbXMpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRURVhQQVJBTUVURVJJSVZST0JVU1RBTkdMRSkgKEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5n
dGgsIEdMaW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRU
RVhQQVJBTUVURVJJVUlWUk9CVVNUQU5HTEUpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUs
IEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTHVpbnQgKnBhcmFtcyk7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNBTVBMRVJQQVJBTUVURVJJSVZST0JVU1RBTkdM
RSkgKEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0xpbnQgKnBhcmFtKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMU0FNUExFUlBB
UkFNRVRFUklVSVZST0JVU1RBTkdMRSkgKEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0x1aW50ICpwYXJhbSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTEdFVFNBTVBMRVJQQVJBTUVURVJJSVZST0JVU1RBTkdMRSkgKEdMdWludCBz
YW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBH
TGludCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUU0FNUExF
UlBBUkFNRVRFUklVSVZST0JVU1RBTkdMRSkgKEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUs
IEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTHVpbnQgKnBhcmFtcyk7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFFVRVJZT0JKRUNUSVZST0JVU1RBTkdMRSko
R0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3Ro
LCBHTGludCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUUVVF
UllPQkpFQ1RJNjRWUk9CVVNUQU5HTEUpKEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTHNpemVp
IGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQ2NCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9p
ZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUUVVFUllPQkpFQ1RVSTY0VlJPQlVTVEFOR0xFKShHTHVp
bnQgaWQsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdM
dWludDY0ICpwYXJhbXMpOworI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwg
dm9pZCBHTF9BUElFTlRSWSBnbEdldEJvb2xlYW52Um9idXN0QU5HTEUgKEdMZW51bSBwbmFtZSwg
R0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMYm9vbGVhbiAqZGF0YSk7CitHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
IChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAq
bGVuZ3RoLCBHTGludCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdl
dEZsb2F0dlJvYnVzdEFOR0xFIChHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXpl
aSAqbGVuZ3RoLCBHTGZsb2F0ICpkYXRhKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUgKEdMZW51bSB0
YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwg
R0xzaXplaSAqbGVuZ3RoLCBHTGludCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbEdldEludGVnZXJ2Um9idXN0QU5HTEUgKEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZT
aXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpkYXRhKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbEdldFByb2dyYW1pdlJvYnVzdEFOR0xFIChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVt
IHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnBhcmFtcyk7
CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6
ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbEdldFNoYWRlcml2Um9idXN0QU5HTEUgKEdMdWludCBzaGFkZXIsIEdMZW51bSBw
bmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpwYXJhbXMpOwor
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdM
RSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkg
Kmxlbmd0aCwgR0xmbG9hdCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bEdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt
ZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpwYXJhbXMpOworR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUgKEdMdWlu
dCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5n
dGgsIEdMZmxvYXQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRV
bmlmb3JtaXZSb2J1c3RBTkdMRSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnBhcmFtcyk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFIChHTHVpbnQg
aW5kZXgsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdM
ZmxvYXQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRWZXJ0ZXhB
dHRyaWJpdlJvYnVzdEFOR0xFIChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBi
dWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRSAoR0x1aW50
IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCB2
b2lkICoqcG9pbnRlcik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xSZWFkUGl4ZWxz
Um9idXN0QU5HTEUgKEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVp
ICpsZW5ndGgsIHZvaWQgKnBpeGVscyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xU
ZXhJbWFnZTJEUm9idXN0QU5HTEUgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCBp
bnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50IGJvcmRl
ciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9p
ZCAqcGl4ZWxzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFRleFBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGds
VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFIChHTGVudW0gdGFyZ2V0LCBHTGlu
dCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IHZvaWQgKnBpeGVscyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xUZXhJ
bWFnZTNEUm9idXN0QU5HTEUgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCBpbnRl
cm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgs
IEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgYnVmU2l6
ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFRl
eFN1YkltYWdlM0RSb2J1c3RBTkdMRSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50
IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwg
R0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpOworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsR2V0UXVlcnlpdlJvYnVzdEFOR0xFIChHTGVudW0gdGFyZ2V0LCBHTGVudW0g
cG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqcGFyYW1zKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5H
TEUgKEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxl
bmd0aCwgR0x1aW50ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0
QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBH
THNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcyk7CitHTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUgKEdMZW51bSB0
YXJnZXQsIEdMdWludCBpbmRleCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdM
aW50ICpkYXRhKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldEludGVybmFsZm9y
bWF0aXZSb2J1c3RBTkdMRSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
TGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqcGFy
YW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFZlcnRleEF0dHJpYklpdlJv
YnVzdEFOR0xFIChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBH
THNpemVpICpsZW5ndGgsIEdMaW50ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVO
VFJZIGdsR2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFIChHTHVpbnQgaW5kZXgsIEdMZW51
bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMdWludCAqcGFyYW1z
KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFVuaWZvcm11aXZSb2J1c3RBTkdM
RSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6
ZWkgKmxlbmd0aCwgR0x1aW50ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsR2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRSAoR0x1aW50IHByb2dyYW0sIEdM
dWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdM
c2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xHZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUgKEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZT
aXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50NjQgKmRhdGEpOworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsR2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUgKEdMZW51bSB0YXJnZXQsIEdM
dWludCBpbmRleCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50NjQgKmRh
dGEpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0QnVmZmVyUGFyYW1ldGVyaTY0
dlJvYnVzdEFOR0xFIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6
ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludDY0ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsU2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUgKEdMdWludCBzYW1wbGVy
LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0xpbnQgKnBhcmFtKTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xF
IChHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdM
ZmxvYXQgKnBhcmFtKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFNhbXBsZXJQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFIChHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTHNp
emVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnBhcmFtcyk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSAoR0x1
aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5n
dGgsIEdMZmxvYXQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRG
cmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBw
bmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpwYXJhbXMpOwor
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0
QU5HTEUgKEdMdWludCBwcm9ncmFtLCBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0xlbnVtIHBu
YW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnBhcmFtcyk7CitH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRCb29sZWFuaV92Um9idXN0QU5HTEUgKEdM
ZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5n
dGgsIEdMYm9vbGVhbiAqZGF0YSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRN
dWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUgKEdMZW51bSBwbmFtZSwgR0x1aW50IGluZGV4LCBHTHNp
emVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xmbG9hdCAqdmFsKTsKK0dMX0FQSUNBTEwg
dm9pZCBHTF9BUElFTlRSWSBnbEdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSAoR0xl
bnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBH
THNpemVpICpsZW5ndGgsIEdMaW50ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVO
VFJZIGdsR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFIChHTGVudW0gdGFyZ2V0LCBH
TGludCBsZXZlbCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0
aCwgR0xmbG9hdCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFBv
aW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRSAoR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNp
emUsIEdMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xSZWFkblBpeGVsc1JvYnVzdEFOR0xFIChHTGludCB4LCBHTGludCB5LCBHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdM
c2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCB2b2lkICpkYXRhKTsKK0dMX0FQSUNBTEwg
dm9pZCBHTF9BUElFTlRSWSBnbEdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSAoR0x1aW50IHByb2dy
YW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xm
bG9hdCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldG5Vbmlmb3Jt
aXZSb2J1c3RBTkdMRSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1
ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xHZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFIChHTHVpbnQgcHJvZ3JhbSwg
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTHVpbnQg
KnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xUZXhQYXJhbWV0ZXJJaXZS
b2J1c3RBTkdMRSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdMaW50ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4
UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0x1aW50ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsR2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUgKEdMZW51bSB0YXJnZXQs
IEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpw
YXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0VGV4UGFyYW1ldGVySXVp
dlJvYnVzdEFOR0xFIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6
ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTHVpbnQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUgKEdMdWludCBzYW1wbGVy
LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0xpbnQgKnBhcmFtKTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5H
TEUgKEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0x1aW50ICpwYXJhbSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRTYW1wbGVy
UGFyYW1ldGVySWl2Um9idXN0QU5HTEUgKEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdM
c2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqcGFyYW1zKTsKK0dMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUg
KEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAq
bGVuZ3RoLCBHTHVpbnQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xH
ZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMc2l6
ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwg
dm9pZCBHTF9BUElFTlRSWSBnbEdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdMdWludCBp
ZCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQ2
NCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFF1ZXJ5T2JqZWN0
dWk2NHZSb2J1c3RBTkdMRShHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXpl
LCBHTHNpemVpICpsZW5ndGgsIEdMdWludDY0ICpwYXJhbXMpOworI2VuZGlmCisjZW5kaWYgLyog
R0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkgKi8KKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xFUzMvZ2wz
ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVT
My9nbDNleHQuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
aW5jbHVkZS9HTEVTMy9nbDNleHQuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDI0ICswLDAgQEAKLSNp
Zm5kZWYgX19nbDNleHRfaF8KLSNkZWZpbmUgX19nbDNleHRfaF8KLQotLyogJFJldmlzaW9uOiAx
NzgwOSAkIG9uICREYXRlOjogMjAxMi0wNS0xNCAwODowMzozNiAtMDcwMCAjJCAqLwotCi0vKgot
ICogVGhpcyBkb2N1bWVudCBpcyBsaWNlbnNlZCB1bmRlciB0aGUgU0dJIEZyZWUgU29mdHdhcmUg
QiBMaWNlbnNlIFZlcnNpb24KLSAqIDIuMC4gRm9yIGRldGFpbHMsIHNlZSBodHRwOi8vb3NzLnNn
aS5jb20vcHJvamVjdHMvRnJlZUIvIC4KLSAqLwotCi0vKiBPcGVuR0wgRVMgMyBFeHRlbnNpb25z
Ci0gKgotICogQWZ0ZXIgYW4gT0VTIGV4dGVuc2lvbidzIGludGVyYWN0aW9ucyB3aXRoIE9wZW5H
bCBFUyAzLjAgaGF2ZSBiZWVuIGRvY3VtZW50ZWQsCi0gKiBpdHMgdG9rZW5zIGFuZCBmdW5jdGlv
biBkZWZpbml0aW9ucyBzaG91bGQgYmUgYWRkZWQgdG8gdGhpcyBmaWxlIGluIGEgbWFubmVyCi0g
KiB0aGF0IGRvZXMgbm90IGNvbmZsaWN0IHdpdGggZ2wyZXh0Lmggb3IgZ2wzLmguCi0gKgotICog
VG9rZW5zIGFuZCBmdW5jdGlvbiBkZWZpbml0aW9ucyBmb3IgZXh0ZW5zaW9ucyB0aGF0IGhhdmUg
YmVjb21lIHN0YW5kYXJkCi0gKiBmZWF0dXJlcyBpbiBPcGVuR0wgRVMgMy4wIHdpbGwgbm90IGJl
IGFkZGVkIHRvIHRoaXMgZmlsZS4KLSAqCi0gKiBBcHBsaWNhdGlvbnMgdXNpbmcgT3BlbkdMLUVT
LTItb25seSBleHRlbnNpb25zIHNob3VsZCBpbmNsdWRlIGdsMmV4dC5oCi0gKi8KLQotI2VuZGlm
IC8qIF9fZ2wzZXh0X2hfICovCi0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1
ZGUvR0xTTEFORy9TaGFkZXJMYW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaAkocmV2aXNpb24gMjA3ODA0KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAia2hycGxhdGZvcm0uaCIK
IAorI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPG1hcD4KICNpbmNsdWRlIDxzdHJpbmc+CiAj
aW5jbHVkZSA8dmVjdG9yPgpAQCAtNDgsMzYgKzQ5LDE4IEBAIHR5cGVkZWYgdW5zaWduZWQgaW50
IEdMZW51bTsKIAogLy8gVmVyc2lvbiBudW1iZXIgZm9yIHNoYWRlciB0cmFuc2xhdGlvbiBBUEku
CiAvLyBJdCBpcyBpbmNyZW1lbnRlZCBldmVyeSB0aW1lIHRoZSBBUEkgY2hhbmdlcy4KLSNkZWZp
bmUgQU5HTEVfU0hfVkVSU0lPTiAxNDUKKyNkZWZpbmUgQU5HTEVfU0hfVkVSU0lPTiAxNjMKIAog
dHlwZWRlZiBlbnVtIHsKLSAgU0hfR0xFUzJfU1BFQyA9IDB4OEI0MCwKLSAgU0hfV0VCR0xfU1BF
QyA9IDB4OEI0MSwKKyAgICBTSF9HTEVTMl9TUEVDLAorICAgIFNIX1dFQkdMX1NQRUMsCiAKLSAg
U0hfR0xFUzNfU1BFQyA9IDB4OEI4NiwKLSAgU0hfV0VCR0wyX1NQRUMgPSAweDhCODcsCisgICAg
U0hfR0xFUzNfU1BFQywKKyAgICBTSF9XRUJHTDJfU1BFQywKKworICAgIFNIX0dMRVMzXzFfU1BF
QywKKyAgICBTSF9XRUJHTDNfU1BFQywKIAotICAvLyBUaGUgQ1NTIFNoYWRlcnMgc3BlYyBpcyBh
IHN1YnNldCBvZiB0aGUgV2ViR0wgc3BlYy4KLSAgLy8KLSAgLy8gSW4gYm90aCBDU1MgdmVydGV4
IGFuZCBmcmFnbWVudCBzaGFkZXJzLCBBTkdMRToKLSAgLy8gKDEpIFJlc2VydmVzIHRoZSAiY3Nz
XyIgcHJlZml4LgotICAvLyAoMikgUmVuYW1lcyB0aGUgbWFpbiBmdW5jdGlvbiB0byBjc3NfbWFp
bi4KLSAgLy8gKDMpIERpc2FibGVzIHRoZSBnbF9NYXhEcmF3QnVmZmVycyBidWlsdC1pbi4KLSAg
Ly8KLSAgLy8gSW4gQ1NTIGZyYWdtZW50IHNoYWRlcnMsIEFOR0xFOgotICAvLyAoMSkgRGlzYWJs
ZXMgdGhlIGdsX0ZyYWdDb2xvciBidWlsdC1pbi4KLSAgLy8gKDIpIERpc2FibGVzIHRoZSBnbF9G
cmFnRGF0YSBidWlsdC1pbi4KLSAgLy8gKDMpIEVuYWJsZXMgdGhlIGNzc19NaXhDb2xvciBidWls
dC1pbi4KLSAgLy8gKDQpIEVuYWJsZXMgdGhlIGNzc19Db2xvck1hdHJpeCBidWlsdC1pbi4KLSAg
Ly8KLSAgLy8gQWZ0ZXIgcGFzc2luZyBhIENTUyBzaGFkZXIgdGhyb3VnaCBBTkdMRSwgdGhlIGJy
b3dzZXIgaXMgZXhwZWN0ZWQgdG8gYXBwZW5kCi0gIC8vIGEgbmV3IG1haW4gZnVuY3Rpb24gdG8g
aXQuCi0gIC8vIFRoaXMgbmV3IG1haW4gZnVuY3Rpb24gd2lsbCBjYWxsIHRoZSBjc3NfbWFpbiBm
dW5jdGlvbi4KLSAgLy8gSXQgbWF5IGFsc28gcGVyZm9ybSBhZGRpdGlvbmFsIG9wZXJhdGlvbnMg
bGlrZSB2YXJ5aW5nIGFzc2lnbm1lbnQsIHRleHR1cmUKLSAgLy8gYWNjZXNzLCBhbmQgZ2xfRnJh
Z0NvbG9yIGFzc2lnbm1lbnQgaW4gb3JkZXIgdG8gaW1wbGVtZW50IHRoZSBDU1MgU2hhZGVycwot
ICAvLyBibGVuZCBtb2Rlcy4KLSAgLy8KLSAgU0hfQ1NTX1NIQURFUlNfU1BFQyA9IDB4OEI0Mgog
fSBTaFNoYWRlclNwZWM7CiAKIHR5cGVkZWYgZW51bQpAQCAtMTEyLDEwMyArOTUsMTI2IEBAIHR5
cGVkZWYgZW51bQogfSBTaFNoYWRlck91dHB1dDsKIAogLy8gQ29tcGlsZSBvcHRpb25zLgotdHlw
ZWRlZiBlbnVtIHsKLSAgU0hfVkFMSURBVEUgICAgICAgICAgICAgICAgPSAwLAotICBTSF9WQUxJ
REFURV9MT09QX0lOREVYSU5HICA9IDB4MDAwMSwKLSAgU0hfSU5URVJNRURJQVRFX1RSRUUgICAg
ICAgPSAweDAwMDIsCi0gIFNIX09CSkVDVF9DT0RFICAgICAgICAgICAgID0gMHgwMDA0LAotICBT
SF9WQVJJQUJMRVMgICAgICAgICAgICAgICA9IDB4MDAwOCwKLSAgU0hfTElORV9ESVJFQ1RJVkVT
ICAgICAgICAgPSAweDAwMTAsCi0gIFNIX1NPVVJDRV9QQVRIICAgICAgICAgICAgID0gMHgwMDIw
LAotICBTSF9VTlJPTExfRk9SX0xPT1BfV0lUSF9JTlRFR0VSX0lOREVYID0gMHgwMDQwLAotICAv
LyBJZiBhIHNhbXBsZXIgYXJyYXkgaW5kZXggaGFwcGVucyB0byBiZSBhIGxvb3AgaW5kZXgsCi0g
IC8vICAgMSkgaWYgaXRzIHR5cGUgaXMgaW50ZWdlciwgdW5yb2xsIHRoZSBsb29wLgotICAvLyAg
IDIpIGlmIGl0cyB0eXBlIGlzIGZsb2F0LCBmYWlsIHRoZSBzaGFkZXIgY29tcGlsZS4KLSAgLy8g
VGhpcyBpcyB0byB3b3JrIGFyb3VuZCBhIG1hYyBkcml2ZXIgYnVnLgotICBTSF9VTlJPTExfRk9S
X0xPT1BfV0lUSF9TQU1QTEVSX0FSUkFZX0lOREVYID0gMHgwMDgwLAotCi0gIC8vIFRoaXMgaXMg
bmVlZGVkIG9ubHkgYXMgYSB3b3JrYXJvdW5kIGZvciBjZXJ0YWluIE9wZW5HTCBkcml2ZXIgYnVn
cy4KLSAgU0hfRU1VTEFURV9CVUlMVF9JTl9GVU5DVElPTlMgPSAweDAxMDAsCi0KLSAgLy8gVGhp
cyBpcyBhbiBleHBlcmltZW50YWwgZmxhZyB0byBlbmZvcmNlIHJlc3RyaWN0aW9ucyB0aGF0IGFp
bSB0byBwcmV2ZW50Ci0gIC8vIHRpbWluZyBhdHRhY2tzLgotICAvLyBJdCBnZW5lcmF0ZXMgY29t
cGlsYXRpb24gZXJyb3JzIGZvciBzaGFkZXJzIHRoYXQgY291bGQgZXhwb3NlIHNlbnNpdGl2ZQot
ICAvLyB0ZXh0dXJlIGluZm9ybWF0aW9uIHZpYSB0aGUgdGltaW5nIGNoYW5uZWwuCi0gIC8vIFRv
IHVzZSB0aGlzIGZsYWcsIHlvdSBtdXN0IGNvbXBpbGUgdGhlIHNoYWRlciB1bmRlciB0aGUgV2Vi
R0wgc3BlYwotICAvLyAodXNpbmcgdGhlIFNIX1dFQkdMX1NQRUMgZmxhZykuCi0gIFNIX1RJTUlO
R19SRVNUUklDVElPTlMgPSAweDAyMDAsCi0KLSAgLy8gVGhpcyBmbGFnIHByaW50cyB0aGUgZGVw
ZW5kZW5jeSBncmFwaCB0aGF0IGlzIHVzZWQgdG8gZW5mb3JjZSB0aW1pbmcKLSAgLy8gcmVzdHJp
Y3Rpb25zIG9uIGZyYWdtZW50IHNoYWRlcnMuCi0gIC8vIFRoaXMgZmxhZyBvbmx5IGhhcyBhbiBl
ZmZlY3QgaWYgYWxsIG9mIHRoZSBmb2xsb3dpbmcgYXJlIHRydWU6Ci0gIC8vIC0gVGhlIHNoYWRl
ciBzcGVjIGlzIFNIX1dFQkdMX1NQRUMuCi0gIC8vIC0gVGhlIGNvbXBpbGUgb3B0aW9ucyBjb250
YWluIHRoZSBTSF9USU1JTkdfUkVTVFJJQ1RJT05TIGZsYWcuCi0gIC8vIC0gVGhlIHNoYWRlciB0
eXBlIGlzIEdMX0ZSQUdNRU5UX1NIQURFUi4KLSAgU0hfREVQRU5ERU5DWV9HUkFQSCA9IDB4MDQw
MCwKLQotICAvLyBFbmZvcmNlIHRoZSBHTFNMIDEuMDE3IEFwcGVuZGl4IEEgc2VjdGlvbiA3IHBh
Y2tpbmcgcmVzdHJpY3Rpb25zLgotICAvLyBUaGlzIGZsYWcgb25seSBlbmZvcmNlcyAoYW5kIGNh
biBvbmx5IGVuZm9yY2UpIHRoZSBwYWNraW5nCi0gIC8vIHJlc3RyaWN0aW9ucyBmb3IgdW5pZm9y
bSB2YXJpYWJsZXMgaW4gYm90aCB2ZXJ0ZXggYW5kIGZyYWdtZW50Ci0gIC8vIHNoYWRlcnMuIFNo
Q2hlY2tWYXJpYWJsZXNXaXRoaW5QYWNraW5nTGltaXRzKCkgbGV0cyBlbWJlZGRlcnMKLSAgLy8g
ZW5mb3JjZSB0aGUgcGFja2luZyByZXN0cmljdGlvbnMgZm9yIHZhcnlpbmcgdmFyaWFibGVzIGR1
cmluZwotICAvLyBwcm9ncmFtIGxpbmsgdGltZS4KLSAgU0hfRU5GT1JDRV9QQUNLSU5HX1JFU1RS
SUNUSU9OUyA9IDB4MDgwMCwKLQotICAvLyBUaGlzIGZsYWcgZW5zdXJlcyBhbGwgaW5kaXJlY3Qg
KGV4cHJlc3Npb24tYmFzZWQpIGFycmF5IGluZGV4aW5nCi0gIC8vIGlzIGNsYW1wZWQgdG8gdGhl
IGJvdW5kcyBvZiB0aGUgYXJyYXkuIFRoaXMgZW5zdXJlcywgZm9yIGV4YW1wbGUsCi0gIC8vIHRo
YXQgeW91IGNhbm5vdCByZWFkIG9mZiB0aGUgZW5kIG9mIGEgdW5pZm9ybSwgd2hldGhlciBhbiBh
cnJheQotICAvLyB2ZWMyMzQsIG9yIG1hdDIzNCB0eXBlLiBUaGUgU2hBcnJheUluZGV4Q2xhbXBp
bmdTdHJhdGVneSBlbnVtLAotICAvLyBzcGVjaWZpZWQgaW4gdGhlIFNoQnVpbHRJblJlc291cmNl
cyB3aGVuIGNvbnN0cnVjdGluZyB0aGUKLSAgLy8gY29tcGlsZXIsIHNlbGVjdHMgdGhlIHN0cmF0
ZWd5IGZvciB0aGUgY2xhbXBpbmcgaW1wbGVtZW50YXRpb24uCi0gIFNIX0NMQU1QX0lORElSRUNU
X0FSUkFZX0JPVU5EUyA9IDB4MTAwMCwKLQotICAvLyBUaGlzIGZsYWcgbGltaXRzIHRoZSBjb21w
bGV4aXR5IG9mIGFuIGV4cHJlc3Npb24uCi0gIFNIX0xJTUlUX0VYUFJFU1NJT05fQ09NUExFWElU
WSA9IDB4MjAwMCwKLQotICAvLyBUaGlzIGZsYWcgbGltaXRzIHRoZSBkZXB0aCBvZiB0aGUgY2Fs
bCBzdGFjay4KLSAgU0hfTElNSVRfQ0FMTF9TVEFDS19ERVBUSCA9IDB4NDAwMCwKLQotICAvLyBU
aGlzIGZsYWcgaW5pdGlhbGl6ZXMgZ2xfUG9zaXRpb24gdG8gdmVjNCgwLDAsMCwwKSBhdCB0aGUK
LSAgLy8gYmVnaW5uaW5nIG9mIHRoZSB2ZXJ0ZXggc2hhZGVyJ3MgbWFpbigpLCBhbmQgaGFzIG5v
IGVmZmVjdCBpbiB0aGUKLSAgLy8gZnJhZ21lbnQgc2hhZGVyLiBJdCBpcyBpbnRlbmRlZCBhcyBh
IHdvcmthcm91bmQgZm9yIGRyaXZlcnMgd2hpY2gKLSAgLy8gaW5jb3JyZWN0bHkgZmFpbCB0byBs
aW5rIHByb2dyYW1zIGlmIGdsX1Bvc2l0aW9uIGlzIG5vdCB3cml0dGVuLgotICBTSF9JTklUX0dM
X1BPU0lUSU9OID0gMHg4MDAwLAotCi0gIC8vIFRoaXMgZmxhZyByZXBsYWNlcwotICAvLyAgICJh
ICYmIGIiIHdpdGggImEgPyBiIDogZmFsc2UiLAotICAvLyAgICJhIHx8IGIiIHdpdGggImEgPyB0
cnVlIDogYiIuCi0gIC8vIFRoaXMgaXMgdG8gd29yayBhcm91bmQgYSBNYWNPU1ggZHJpdmVyIGJ1
ZyB0aGF0IHxifCBpcyBleGVjdXRlZAotICAvLyBpbmRlcGVuZGVudCBvZiB8YXwncyB2YWx1ZS4K
LSAgU0hfVU5GT0xEX1NIT1JUX0NJUkNVSVQgPSAweDEwMDAwLAotCi0gIC8vIFRoaXMgZmxhZyBp
bml0aWFsaXplcyB2YXJ5aW5ncyB3aXRob3V0IHN0YXRpYyB1c2UgaW4gdmVydGV4IHNoYWRlcgot
ICAvLyBhdCB0aGUgYmVnaW5uaW5nIG9mIG1haW4oKSwgYW5kIGhhcyBubyBlZmZlY3RzIGluIHRo
ZSBmcmFnbWVudCBzaGFkZXIuCi0gIC8vIEl0IGlzIGludGVuZGVkIGFzIGEgd29ya2Fyb3VuZCBm
b3IgZHJpdmVycyB3aGljaCBpbmNvcnJlY3RseSBvcHRpbWl6ZQotICAvLyBvdXQgc3VjaCB2YXJ5
aW5ncyBhbmQgY2F1c2UgYSBsaW5rIGZhaWx1cmUuCi0gIFNIX0lOSVRfVkFSWUlOR1NfV0lUSE9V
VF9TVEFUSUNfVVNFID0gMHgyMDAwMCwKLQotICAvLyBUaGlzIGZsYWcgc2NhbGFyaXplcyB2ZWMv
aXZlYy9idmVjL21hdCBjb25zdHJ1Y3RvciBhcmdzLgotICAvLyBJdCBpcyBpbnRlbmRlZCBhcyBh
IHdvcmthcm91bmQgZm9yIExpbnV4L01hYyBkcml2ZXIgYnVncy4KLSAgU0hfU0NBTEFSSVpFX1ZF
Q19BTkRfTUFUX0NPTlNUUlVDVE9SX0FSR1MgPSAweDQwMDAwLAotCi0gIC8vIFRoaXMgZmxhZyBv
dmVyd3JpdGVzIGEgc3RydWN0IG5hbWUgd2l0aCBhIHVuaXF1ZSBwcmVmaXguCi0gIC8vIEl0IGlz
IGludGVuZGVkIGFzIGEgd29ya2Fyb3VuZCBmb3IgZHJpdmVycyB0aGF0IGRvIG5vdCBoYW5kbGUK
LSAgLy8gc3RydWN0IHNjb3BlcyBjb3JyZWN0bHksIGluY2x1ZGluZyBhbGwgTWFjIGRyaXZlcnMg
YW5kIExpbnV4IEFNRC4KLSAgU0hfUkVHRU5FUkFURV9TVFJVQ1RfTkFNRVMgPSAweDgwMDAwLAot
Ci0gIC8vIFRoaXMgZmxhZyBtYWtlcyB0aGUgY29tcGlsZXIgbm90IHBydW5lIHVudXNlZCBmdW5j
dGlvbiBlYXJseSBpbiB0aGUKLSAgLy8gY29tcGlsYXRpb24gcHJvY2Vzcy4gUHJ1bmluZyBjb3Vw
bGVkIHdpdGggU0hfTElNSVRfQ0FMTF9TVEFDS19ERVBUSAotICAvLyBoZWxwcyBhdm9pZCBiYWQg
c2hhZGVycyBjYXVzaW5nIHN0YWNrIG92ZXJmbG93cy4KLSAgU0hfRE9OVF9QUlVORV9VTlVTRURf
RlVOQ1RJT05TID0gMHgxMDAwMDAsCi0KLSAgLy8gVGhpcyBmbGFnIHdvcmtzIGFyb3VuZCBhIGJ1
ZyBpbiBOVklESUEgMzMxIHNlcmllcyBkcml2ZXJzIHJlbGF0ZWQKLSAgLy8gdG8gcG93KHgsIHkp
IHdoZXJlIHkgaXMgYSBjb25zdGFudCB2ZWN0b3IuCi0gIFNIX1JFTU9WRV9QT1dfV0lUSF9DT05T
VEFOVF9FWFBPTkVOVCA9IDB4MjAwMDAwLAotCi0gIC8vIFRoaXMgZmxhZyB3b3JrcyBhcm91bmQg
YnVncyBpbiBNYWMgZHJpdmVycyByZWxhdGVkIHRvIGRvLXdoaWxlIGJ5Ci0gIC8vIHRyYW5zZm9y
bWluZyB0aGVtIGludG8gYW4gb3RoZXIgY29uc3RydWN0LgotICBTSF9SRVdSSVRFX0RPX1dISUxF
X0xPT1BTID0gMHg0MDAwMDAsCi19IFNoQ29tcGlsZU9wdGlvbnM7CisKK3R5cGVkZWYgdWludDY0
X3QgU2hDb21waWxlT3B0aW9uczsKKworY29uc3QgU2hDb21waWxlT3B0aW9ucyBTSF9WQUxJREFU
RSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMDsKK2NvbnN0IFNoQ29tcGlsZU9wdGlvbnMg
U0hfVkFMSURBVEVfTE9PUF9JTkRFWElORyAgICAgICAgICAgICA9IFVJTlQ2NF9DKDEpIDw8IDA7
Citjb25zdCBTaENvbXBpbGVPcHRpb25zIFNIX0lOVEVSTUVESUFURV9UUkVFICAgICAgICAgICAg
ICAgICAgPSBVSU5UNjRfQygxKSA8PCAxOworY29uc3QgU2hDb21waWxlT3B0aW9ucyBTSF9PQkpF
Q1RfQ09ERSAgICAgICAgICAgICAgICAgICAgICAgID0gVUlOVDY0X0MoMSkgPDwgMjsKK2NvbnN0
IFNoQ29tcGlsZU9wdGlvbnMgU0hfVkFSSUFCTEVTICAgICAgICAgICAgICAgICAgICAgICAgICA9
IFVJTlQ2NF9DKDEpIDw8IDM7Citjb25zdCBTaENvbXBpbGVPcHRpb25zIFNIX0xJTkVfRElSRUNU
SVZFUyAgICAgICAgICAgICAgICAgICAgPSBVSU5UNjRfQygxKSA8PCA0OworY29uc3QgU2hDb21w
aWxlT3B0aW9ucyBTSF9TT1VSQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAgICAgID0gVUlOVDY0
X0MoMSkgPDwgNTsKK2NvbnN0IFNoQ29tcGlsZU9wdGlvbnMgU0hfVU5ST0xMX0ZPUl9MT09QX1dJ
VEhfSU5URUdFUl9JTkRFWCA9IFVJTlQ2NF9DKDEpIDw8IDY7CisvLyBJZiBhIHNhbXBsZXIgYXJy
YXkgaW5kZXggaGFwcGVucyB0byBiZSBhIGxvb3AgaW5kZXgsCisvLyAgIDEpIGlmIGl0cyB0eXBl
IGlzIGludGVnZXIsIHVucm9sbCB0aGUgbG9vcC4KKy8vICAgMikgaWYgaXRzIHR5cGUgaXMgZmxv
YXQsIGZhaWwgdGhlIHNoYWRlciBjb21waWxlLgorLy8gVGhpcyBpcyB0byB3b3JrIGFyb3VuZCBh
IG1hYyBkcml2ZXIgYnVnLgorY29uc3QgU2hDb21waWxlT3B0aW9ucyBTSF9VTlJPTExfRk9SX0xP
T1BfV0lUSF9TQU1QTEVSX0FSUkFZX0lOREVYID0gVUlOVDY0X0MoMSkgPDwgNzsKKworLy8gVGhp
cyBmbGFnIHdvcmtzIGFyb3VuZCBidWcgaW4gSW50ZWwgTWFjIGRyaXZlcnMgcmVsYXRlZCB0byBh
YnMoaSkgd2hlcmUKKy8vIGkgaXMgYW4gaW50ZWdlci4KK2NvbnN0IFNoQ29tcGlsZU9wdGlvbnMg
U0hfRU1VTEFURV9BQlNfSU5UX0ZVTkNUSU9OID0gVUlOVDY0X0MoMSkgPDwgODsKKworLy8gRW5m
b3JjZSB0aGUgR0xTTCAxLjAxNyBBcHBlbmRpeCBBIHNlY3Rpb24gNyBwYWNraW5nIHJlc3RyaWN0
aW9ucy4KKy8vIFRoaXMgZmxhZyBvbmx5IGVuZm9yY2VzIChhbmQgY2FuIG9ubHkgZW5mb3JjZSkg
dGhlIHBhY2tpbmcKKy8vIHJlc3RyaWN0aW9ucyBmb3IgdW5pZm9ybSB2YXJpYWJsZXMgaW4gYm90
aCB2ZXJ0ZXggYW5kIGZyYWdtZW50CisvLyBzaGFkZXJzLiBTaENoZWNrVmFyaWFibGVzV2l0aGlu
UGFja2luZ0xpbWl0cygpIGxldHMgZW1iZWRkZXJzCisvLyBlbmZvcmNlIHRoZSBwYWNraW5nIHJl
c3RyaWN0aW9ucyBmb3IgdmFyeWluZyB2YXJpYWJsZXMgZHVyaW5nCisvLyBwcm9ncmFtIGxpbmsg
dGltZS4KK2NvbnN0IFNoQ29tcGlsZU9wdGlvbnMgU0hfRU5GT1JDRV9QQUNLSU5HX1JFU1RSSUNU
SU9OUyA9IFVJTlQ2NF9DKDEpIDw8IDk7CisKKy8vIFRoaXMgZmxhZyBlbnN1cmVzIGFsbCBpbmRp
cmVjdCAoZXhwcmVzc2lvbi1iYXNlZCkgYXJyYXkgaW5kZXhpbmcKKy8vIGlzIGNsYW1wZWQgdG8g
dGhlIGJvdW5kcyBvZiB0aGUgYXJyYXkuIFRoaXMgZW5zdXJlcywgZm9yIGV4YW1wbGUsCisvLyB0
aGF0IHlvdSBjYW5ub3QgcmVhZCBvZmYgdGhlIGVuZCBvZiBhIHVuaWZvcm0sIHdoZXRoZXIgYW4g
YXJyYXkKKy8vIHZlYzIzNCwgb3IgbWF0MjM0IHR5cGUuIFRoZSBTaEFycmF5SW5kZXhDbGFtcGlu
Z1N0cmF0ZWd5IGVudW0sCisvLyBzcGVjaWZpZWQgaW4gdGhlIFNoQnVpbHRJblJlc291cmNlcyB3
aGVuIGNvbnN0cnVjdGluZyB0aGUKKy8vIGNvbXBpbGVyLCBzZWxlY3RzIHRoZSBzdHJhdGVneSBm
b3IgdGhlIGNsYW1waW5nIGltcGxlbWVudGF0aW9uLgorY29uc3QgU2hDb21waWxlT3B0aW9ucyBT
SF9DTEFNUF9JTkRJUkVDVF9BUlJBWV9CT1VORFMgPSBVSU5UNjRfQygxKSA8PCAxMDsKKworLy8g
VGhpcyBmbGFnIGxpbWl0cyB0aGUgY29tcGxleGl0eSBvZiBhbiBleHByZXNzaW9uLgorY29uc3Qg
U2hDb21waWxlT3B0aW9ucyBTSF9MSU1JVF9FWFBSRVNTSU9OX0NPTVBMRVhJVFkgPSBVSU5UNjRf
QygxKSA8PCAxMTsKKworLy8gVGhpcyBmbGFnIGxpbWl0cyB0aGUgZGVwdGggb2YgdGhlIGNhbGwg
c3RhY2suCitjb25zdCBTaENvbXBpbGVPcHRpb25zIFNIX0xJTUlUX0NBTExfU1RBQ0tfREVQVEgg
PSBVSU5UNjRfQygxKSA8PCAxMjsKKworLy8gVGhpcyBmbGFnIGluaXRpYWxpemVzIGdsX1Bvc2l0
aW9uIHRvIHZlYzQoMCwwLDAsMCkgYXQgdGhlCisvLyBiZWdpbm5pbmcgb2YgdGhlIHZlcnRleCBz
aGFkZXIncyBtYWluKCksIGFuZCBoYXMgbm8gZWZmZWN0IGluIHRoZQorLy8gZnJhZ21lbnQgc2hh
ZGVyLiBJdCBpcyBpbnRlbmRlZCBhcyBhIHdvcmthcm91bmQgZm9yIGRyaXZlcnMgd2hpY2gKKy8v
IGluY29ycmVjdGx5IGZhaWwgdG8gbGluayBwcm9ncmFtcyBpZiBnbF9Qb3NpdGlvbiBpcyBub3Qg
d3JpdHRlbi4KK2NvbnN0IFNoQ29tcGlsZU9wdGlvbnMgU0hfSU5JVF9HTF9QT1NJVElPTiA9IFVJ
TlQ2NF9DKDEpIDw8IDEzOworCisvLyBUaGlzIGZsYWcgcmVwbGFjZXMKKy8vICAgImEgJiYgYiIg
d2l0aCAiYSA/IGIgOiBmYWxzZSIsCisvLyAgICJhIHx8IGIiIHdpdGggImEgPyB0cnVlIDogYiIu
CisvLyBUaGlzIGlzIHRvIHdvcmsgYXJvdW5kIGEgTWFjT1NYIGRyaXZlciBidWcgdGhhdCB8Ynwg
aXMgZXhlY3V0ZWQKKy8vIGluZGVwZW5kZW50IG9mIHxhfCdzIHZhbHVlLgorY29uc3QgU2hDb21w
aWxlT3B0aW9ucyBTSF9VTkZPTERfU0hPUlRfQ0lSQ1VJVCA9IFVJTlQ2NF9DKDEpIDw8IDE0Owor
CisvLyBUaGlzIGZsYWcgaW5pdGlhbGl6ZXMgb3V0cHV0IHZhcmlhYmxlcyB0byAwIGF0IHRoZSBi
ZWdpbm5pbmcgb2YgbWFpbigpLgorLy8gSXQgaXMgdG8gYXZvaWQgdW5kZWZpbmVkIGJlaGF2aW9y
cy4KK2NvbnN0IFNoQ29tcGlsZU9wdGlvbnMgU0hfSU5JVF9PVVRQVVRfVkFSSUFCTEVTID0gVUlO
VDY0X0MoMSkgPDwgMTU7CisKKy8vIFRoaXMgZmxhZyBzY2FsYXJpemVzIHZlYy9pdmVjL2J2ZWMv
bWF0IGNvbnN0cnVjdG9yIGFyZ3MuCisvLyBJdCBpcyBpbnRlbmRlZCBhcyBhIHdvcmthcm91bmQg
Zm9yIExpbnV4L01hYyBkcml2ZXIgYnVncy4KK2NvbnN0IFNoQ29tcGlsZU9wdGlvbnMgU0hfU0NB
TEFSSVpFX1ZFQ19BTkRfTUFUX0NPTlNUUlVDVE9SX0FSR1MgPSBVSU5UNjRfQygxKSA8PCAxNjsK
KworLy8gVGhpcyBmbGFnIG92ZXJ3cml0ZXMgYSBzdHJ1Y3QgbmFtZSB3aXRoIGEgdW5pcXVlIHBy
ZWZpeC4KKy8vIEl0IGlzIGludGVuZGVkIGFzIGEgd29ya2Fyb3VuZCBmb3IgZHJpdmVycyB0aGF0
IGRvIG5vdCBoYW5kbGUKKy8vIHN0cnVjdCBzY29wZXMgY29ycmVjdGx5LCBpbmNsdWRpbmcgYWxs
IE1hYyBkcml2ZXJzIGFuZCBMaW51eCBBTUQuCitjb25zdCBTaENvbXBpbGVPcHRpb25zIFNIX1JF
R0VORVJBVEVfU1RSVUNUX05BTUVTID0gVUlOVDY0X0MoMSkgPDwgMTc7CisKKy8vIFRoaXMgZmxh
ZyBtYWtlcyB0aGUgY29tcGlsZXIgbm90IHBydW5lIHVudXNlZCBmdW5jdGlvbiBlYXJseSBpbiB0
aGUKKy8vIGNvbXBpbGF0aW9uIHByb2Nlc3MuIFBydW5pbmcgY291cGxlZCB3aXRoIFNIX0xJTUlU
X0NBTExfU1RBQ0tfREVQVEgKKy8vIGhlbHBzIGF2b2lkIGJhZCBzaGFkZXJzIGNhdXNpbmcgc3Rh
Y2sgb3ZlcmZsb3dzLgorY29uc3QgU2hDb21waWxlT3B0aW9ucyBTSF9ET05UX1BSVU5FX1VOVVNF
RF9GVU5DVElPTlMgPSBVSU5UNjRfQygxKSA8PCAxODsKKworLy8gVGhpcyBmbGFnIHdvcmtzIGFy
b3VuZCBhIGJ1ZyBpbiBOVklESUEgMzMxIHNlcmllcyBkcml2ZXJzIHJlbGF0ZWQKKy8vIHRvIHBv
dyh4LCB5KSB3aGVyZSB5IGlzIGEgY29uc3RhbnQgdmVjdG9yLgorY29uc3QgU2hDb21waWxlT3B0
aW9ucyBTSF9SRU1PVkVfUE9XX1dJVEhfQ09OU1RBTlRfRVhQT05FTlQgPSBVSU5UNjRfQygxKSA8
PCAxOTsKKworLy8gVGhpcyBmbGFnIHdvcmtzIGFyb3VuZCBidWdzIGluIE1hYyBkcml2ZXJzIHJl
bGF0ZWQgdG8gZG8td2hpbGUgYnkKKy8vIHRyYW5zZm9ybWluZyB0aGVtIGludG8gYW4gb3RoZXIg
Y29uc3RydWN0LgorY29uc3QgU2hDb21waWxlT3B0aW9ucyBTSF9SRVdSSVRFX0RPX1dISUxFX0xP
T1BTID0gVUlOVDY0X0MoMSkgPDwgMjA7CisKKy8vIFRoaXMgZmxhZyB3b3JrcyBhcm91bmQgYSBi
dWcgaW4gdGhlIEhMU0wgY29tcGlsZXIgb3B0aW1pemVyIHRoYXQgZm9sZHMgY2VydGFpbgorLy8g
Y29uc3RhbnQgcG93IGV4cHJlc3Npb25zIGluY29ycmVjdGx5LiBPbmx5IGFwcGxpZXMgdG8gdGhl
IEhMU0wgYmFjay1lbmQuIEl0IHdvcmtzCisvLyBieSBleHBhbmRpbmcgdGhlIGludGVnZXIgcG93
IGV4cHJlc3Npb25zIGludG8gYSBzZXJpZXMgb2YgbXVsdGlwbGllcy4KK2NvbnN0IFNoQ29tcGls
ZU9wdGlvbnMgU0hfRVhQQU5EX1NFTEVDVF9ITFNMX0lOVEVHRVJfUE9XX0VYUFJFU1NJT05TID0g
VUlOVDY0X0MoMSkgPDwgMjE7CisKKy8vIEZsYXR0ZW4gIiNwcmFnbWEgU1RER0wgaW52YXJpYW50
KGFsbCkiIGludG8gdGhlIGRlY2xhcmF0aW9ucyBvZgorLy8gdmFyeWluZyB2YXJpYWJsZXMgYW5k
IGJ1aWx0LWluIEdMU0wgdmFyaWFibGVzLiBUaGlzIGNvbXBpbGVyCisvLyBvcHRpb24gaXMgZW5h
YmxlZCBhdXRvbWF0aWNhbGx5IHdoZW4gbmVlZGVkLgorY29uc3QgU2hDb21waWxlT3B0aW9ucyBT
SF9GTEFUVEVOX1BSQUdNQV9TVERHTF9JTlZBUklBTlRfQUxMID0gVUlOVDY0X0MoMSkgPDwgMjI7
CisKKy8vIFNvbWUgZHJpdmVycyBkbyBub3QgdGFrZSBpbnRvIGFjY291bnQgdGhlIGJhc2UgbGV2
ZWwgb2YgdGhlIHRleHR1cmUgaW4gdGhlIHJlc3VsdHMgb2YgdGhlCisvLyBITFNMIEdldERpbWVu
c2lvbnMgYnVpbHRpbi4gIFRoaXMgZmxhZyBpbnN0cnVjdHMgdGhlIGNvbXBpbGVyIHRvIG1hbnVh
bGx5IGFkZCB0aGUgYmFzZSBsZXZlbAorLy8gb2Zmc2V0dGluZy4KK2NvbnN0IFNoQ29tcGlsZU9w
dGlvbnMgU0hfSExTTF9HRVRfRElNRU5TSU9OU19JR05PUkVTX0JBU0VfTEVWRUwgPSBVSU5UNjRf
QygxKSA8PCAyMzsKKworLy8gVGhpcyBmbGFnIHdvcmtzIGFyb3VuZCBhbiBpc3N1ZSBpbiB0cmFu
c2xhdGluZyBHTFNMIGZ1bmN0aW9uIHRleGVsRmV0Y2hPZmZzZXQgb24KKy8vIElOVEVMIGRyaXZl
cnMuIEl0IHdvcmtzIGJ5IHRyYW5zbGF0aW5nIHRleGVsRmV0Y2hPZmZzZXQgaW50byB0ZXhlbEZl
dGNoLgorY29uc3QgU2hDb21waWxlT3B0aW9ucyBTSF9SRVdSSVRFX1RFWEVMRkVUQ0hPRkZTRVRf
VE9fVEVYRUxGRVRDSCA9IFVJTlQ2NF9DKDEpIDw8IDI0OworCisvLyBUaGlzIGZsYWcgd29ya3Mg
YXJvdW5kIGNvbmRpdGlvbiBidWcgb2YgZm9yIGFuZCB3aGlsZSBsb29wcyBpbiBJbnRlbCBNYWMg
T1NYIGRyaXZlcnMuCisvLyBDb25kaXRpb24gY2FsY3VsYXRpb24gaXMgbm90IGNvcnJlY3QuIFJl
d3JpdGUgaXQgZnJvbSAiQ09ORElUSU9OIiB0byAiQ09ORElUSU9OICYmIHRydWUiLgorY29uc3Qg
U2hDb21waWxlT3B0aW9ucyBTSF9BRERfQU5EX1RSVUVfVE9fTE9PUF9DT05ESVRJT04gPSBVSU5U
NjRfQygxKSA8PCAyNTsKKworLy8gVGhpcyBmbGFnIHdvcmtzIGFyb3VuZCBhIGJ1ZyBpbiBldmFs
dWF0aW5nIHVuYXJ5IG1pbnVzIG9wZXJhdG9yIG9uIGludGVnZXIgb24gc29tZSBJTlRFTAorLy8g
ZHJpdmVycy4gSXQgd29ya3MgYnkgdHJhbnNsYXRpbmcgLShpbnQpIGludG8gfihpbnQpICsgMS4K
K2NvbnN0IFNoQ29tcGlsZU9wdGlvbnMgU0hfUkVXUklURV9JTlRFR0VSX1VOQVJZX01JTlVTX09Q
RVJBVE9SID0gVUlOVDY0X0MoMSkgPDwgMjY7CisKKy8vIFRoaXMgZmxhZyB3b3JrcyBhcm91bmQg
YSBidWcgaW4gZXZhbHVhdGluZyBpc25hbigpIG9uIHNvbWUgSU5URUwgRDNEIGFuZCBNYWMgT1NY
IGRyaXZlcnMuCisvLyBJdCB3b3JrcyBieSB1c2luZyBhbiBleHByZXNzaW9uIHRvIGVtdWxhdGUg
dGhpcyBmdW5jdGlvbi4KK2NvbnN0IFNoQ29tcGlsZU9wdGlvbnMgU0hfRU1VTEFURV9JU05BTl9G
TE9BVF9GVU5DVElPTiA9IFVJTlQ2NF9DKDEpIDw8IDI3OworCisvLyBUaGlzIGZsYWcgd2lsbCB1
c2UgYWxsIHVuaWZvcm1zIG9mIHVudXNlZCBzdGQxNDAgYW5kIHNoYXJlZCB1bmlmb3JtIGJsb2Nr
cyBhdCB0aGUKKy8vIGJlZ2lubmluZyBvZiB0aGUgdmVydGV4L2ZyYWdtZW50IHNoYWRlcidzIG1h
aW4oKS4gSXQgaXMgaW50ZW5kZWQgYXMgYSB3b3JrYXJvdW5kIGZvciBNYWMKKy8vIGRyaXZlcnMg
d2l0aCBzaGFkZXIgdmVyc2lvbiA0LjEwLiBJbiB0aG9zZSBkcml2ZXJzLCB0aGV5IHdpbGwgdHJl
YXQgdW51c2VkCisvLyBzdGQxNDAgYW5kIHNoYXJlZCB1bmlmb3JtIGJsb2NrcycgbWVtYmVycyBh
cyBpbmFjdGl2ZS4gSG93ZXZlciwgV2ViR0wyLjAgYmFzZWQgb24KKy8vIE9wZW5HTCBFUzMuMC40
IHJlcXVpcmVzIGFsbCBtZW1iZXJzIG9mIGEgbmFtZWQgdW5pZm9ybSBibG9jayBkZWNsYXJlZCB3
aXRoIGEgc2hhcmVkIG9yIHN0ZDE0MAorLy8gbGF5b3V0IHF1YWxpZmllciB0byBiZSBjb25zaWRl
cmVkIGFjdGl2ZS4gVGhlIHVuaWZvcm0gYmxvY2sgaXRzZWxmIGlzIGFsc28gY29uc2lkZXJlZCBh
Y3RpdmUuCitjb25zdCBTaENvbXBpbGVPcHRpb25zIFNIX1VTRV9VTlVTRURfU1RBTkRBUkRfU0hB
UkVEX0JMT0NLUyA9IFVJTlQ2NF9DKDEpIDw8IDI4OwogCiAvLyBEZWZpbmVzIGFsdGVybmF0ZSBz
dHJhdGVnaWVzIGZvciBpbXBsZW1lbnRpbmcgYXJyYXkgaW5kZXggY2xhbXBpbmcuCiB0eXBlZGVm
IGVudW0gewpAQCAtMjU1LDYgKzI2MSw4IEBAIHR5cGVkZWYgc3RydWN0CiAgICAgLy8gU2V0IHRv
IDEgdG8gZW5hYmxlIHRoZSBleHRlbnNpb24sIGVsc2UgMC4KICAgICBpbnQgT0VTX3N0YW5kYXJk
X2Rlcml2YXRpdmVzOwogICAgIGludCBPRVNfRUdMX2ltYWdlX2V4dGVybmFsOworICAgIGludCBP
RVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vzc2wzOworICAgIGludCBOVl9FR0xfc3RyZWFtX2NvbnN1
bWVyX2V4dGVybmFsOwogICAgIGludCBBUkJfdGV4dHVyZV9yZWN0YW5nbGU7CiAgICAgaW50IEVY
VF9ibGVuZF9mdW5jX2V4dGVuZGVkOwogICAgIGludCBFWFRfZHJhd19idWZmZXJzOwpAQCAtMzA4
LDYgKzMxNiw2OCBAQCB0eXBlZGVmIHN0cnVjdAogICAgIC8vIFRoZSBtYXhpbXVtIG51bWJlciBv
ZiBwYXJhbWV0ZXJzIGEgZnVuY3Rpb24gY2FuIGhhdmUgd2hlbiBTSF9MSU1JVF9FWFBSRVNTSU9O
X0NPTVBMRVhJVFkgaXMKICAgICAvLyB0dXJuZWQgb24uCiAgICAgaW50IE1heEZ1bmN0aW9uUGFy
YW1ldGVyczsKKworICAgIC8vIEdMRVMgMy4xIGNvbnN0YW50cworCisgICAgLy8gbWF4aW11bSBu
dW1iZXIgb2YgYXZhaWxhYmxlIGltYWdlIHVuaXRzCisgICAgaW50IE1heEltYWdlVW5pdHM7CisK
KyAgICAvLyBtYXhpbXVtIG51bWJlciBvZiBpbWFnZSB1bmlmb3JtcyBpbiBhIHZlcnRleCBzaGFk
ZXIKKyAgICBpbnQgTWF4VmVydGV4SW1hZ2VVbmlmb3JtczsKKworICAgIC8vIG1heGltdW0gbnVt
YmVyIG9mIGltYWdlIHVuaWZvcm1zIGluIGEgZnJhZ21lbnQgc2hhZGVyCisgICAgaW50IE1heEZy
YWdtZW50SW1hZ2VVbmlmb3JtczsKKworICAgIC8vIG1heGltdW0gbnVtYmVyIG9mIGltYWdlIHVu
aWZvcm1zIGluIGEgY29tcHV0ZSBzaGFkZXIKKyAgICBpbnQgTWF4Q29tcHV0ZUltYWdlVW5pZm9y
bXM7CisKKyAgICAvLyBtYXhpbXVtIHRvdGFsIG51bWJlciBvZiBpbWFnZSB1bmlmb3JtcyBpbiBh
IHByb2dyYW0KKyAgICBpbnQgTWF4Q29tYmluZWRJbWFnZVVuaWZvcm1zOworCisgICAgLy8gbWF4
aW11bSBudW1iZXIgb2Ygc3Nib3MgYW5kIGltYWdlcyBpbiBhIHNoYWRlcgorICAgIGludCBNYXhD
b21iaW5lZFNoYWRlck91dHB1dFJlc291cmNlczsKKworICAgIC8vIG1heGltdW0gbnVtYmVyIG9m
IGdyb3VwcyBpbiBlYWNoIGRpbWVuc2lvbgorICAgIHN0ZDo6YXJyYXk8aW50LCAzPiBNYXhDb21w
dXRlV29ya0dyb3VwQ291bnQ7CisgICAgLy8gbWF4aW11bSBudW1iZXIgb2YgdGhyZWFkcyBwZXIg
d29yayBncm91cCBpbiBlYWNoIGRpbWVuc2lvbgorICAgIHN0ZDo6YXJyYXk8aW50LCAzPiBNYXhD
b21wdXRlV29ya0dyb3VwU2l6ZTsKKworICAgIC8vIG1heGltdW0gbnVtYmVyIG9mIHRvdGFsIHVu
aWZvcm0gY29tcG9uZW50cworICAgIGludCBNYXhDb21wdXRlVW5pZm9ybUNvbXBvbmVudHM7CisK
KyAgICAvLyBtYXhpbXVtIG51bWJlciBvZiB0ZXh0dXJlIGltYWdlIHVuaXRzIGluIGEgY29tcHV0
ZSBzaGFkZXIKKyAgICBpbnQgTWF4Q29tcHV0ZVRleHR1cmVJbWFnZVVuaXRzOworCisgICAgLy8g
bWF4aW11bSBudW1iZXIgb2YgYXRvbWljIGNvdW50ZXJzIGluIGEgY29tcHV0ZSBzaGFkZXIKKyAg
ICBpbnQgTWF4Q29tcHV0ZUF0b21pY0NvdW50ZXJzOworCisgICAgLy8gbWF4aW11bSBudW1iZXIg
b2YgYXRvbWljIGNvdW50ZXIgYnVmZmVycyBpbiBhIGNvbXB1dGUgc2hhZGVyCisgICAgaW50IE1h
eENvbXB1dGVBdG9taWNDb3VudGVyQnVmZmVyczsKKworICAgIC8vIG1heGltdW0gbnVtYmVyIG9m
IGF0b21pYyBjb3VudGVycyBpbiBhIHZlcnRleCBzaGFkZXIKKyAgICBpbnQgTWF4VmVydGV4QXRv
bWljQ291bnRlcnM7CisKKyAgICAvLyBtYXhpbXVtIG51bWJlciBvZiBhdG9taWMgY291bnRlcnMg
aW4gYSBmcmFnbWVudCBzaGFkZXIKKyAgICBpbnQgTWF4RnJhZ21lbnRBdG9taWNDb3VudGVyczsK
KworICAgIC8vIG1heGltdW0gbnVtYmVyIG9mIGF0b21pYyBjb3VudGVycyBpbiBhIHByb2dyYW0K
KyAgICBpbnQgTWF4Q29tYmluZWRBdG9taWNDb3VudGVyczsKKworICAgIC8vIG1heGltdW0gYmlu
ZGluZyBmb3IgYW4gYXRvbWljIGNvdW50ZXIKKyAgICBpbnQgTWF4QXRvbWljQ291bnRlckJpbmRp
bmdzOworCisgICAgLy8gbWF4aW11bSBudW1iZXIgb2YgYXRvbWljIGNvdW50ZXIgYnVmZmVycyBp
biBhIHZlcnRleCBzaGFkZXIKKyAgICBpbnQgTWF4VmVydGV4QXRvbWljQ291bnRlckJ1ZmZlcnM7
CisKKyAgICAvLyBtYXhpbXVtIG51bWJlciBvZiBhdG9taWMgY291bnRlciBidWZmZXJzIGluIGEg
ZnJhZ21lbnQgc2hhZGVyCisgICAgaW50IE1heEZyYWdtZW50QXRvbWljQ291bnRlckJ1ZmZlcnM7
CisKKyAgICAvLyBtYXhpbXVtIG51bWJlciBvZiBhdG9taWMgY291bnRlciBidWZmZXJzIGluIGEg
cHJvZ3JhbQorICAgIGludCBNYXhDb21iaW5lZEF0b21pY0NvdW50ZXJCdWZmZXJzOworCisgICAg
Ly8gbWF4aW11bSBudW1iZXIgb2YgYnVmZmVyIG9iamVjdCBzdG9yYWdlIGluIG1hY2hpbmUgdW5p
dHMKKyAgICBpbnQgTWF4QXRvbWljQ291bnRlckJ1ZmZlclNpemU7CisKIH0gU2hCdWlsdEluUmVz
b3VyY2VzOwogCiAvLwpAQCAtMzQzLDcgKzQxMyw3IEBAIENPTVBJTEVSX0VYUE9SVCBjb25zdCBz
dGQ6OnN0cmluZyAmU2hHZXQKIC8vIHR5cGU6IFNwZWNpZmllcyB0aGUgdHlwZSBvZiBzaGFkZXIg
LSBHTF9GUkFHTUVOVF9TSEFERVIgb3IgR0xfVkVSVEVYX1NIQURFUi4KIC8vIHNwZWM6IFNwZWNp
ZmllcyB0aGUgbGFuZ3VhZ2Ugc3BlYyB0aGUgY29tcGlsZXIgbXVzdCBjb25mb3JtIHRvIC0KIC8v
ICAgICAgIFNIX0dMRVMyX1NQRUMgb3IgU0hfV0VCR0xfU1BFQy4KLS8vIG91dHB1dDogU3BlY2lm
aWVzIHRoZSBvdXRwdXQgY29kZSB0eXBlIC0gZm9yIGV4YW1wbGUgU0hfRVNTTF9PVVRQVVQsIFNI
X0dMU0xfQ09NUEFUSUJJTElUWV9PVVRQVVQsCisvLyBvdXRwdXQ6IFNwZWNpZmllcyB0aGUgb3V0
cHV0IGNvZGUgdHlwZSAtIGZvciBleGFtcGxlIFNIX0VTU0xfT1VUUFVULCBTSF9HTFNMX09VVFBV
VCwKIC8vICAgICAgICAgU0hfSExTTF8zXzBfT1VUUFVUIG9yIFNIX0hMU0xfNF8xX09VVFBVVC4g
Tm90ZTogRWFjaCBvdXRwdXQgdHlwZSBtYXkgb25seQogLy8gICAgICAgICBiZSBzdXBwb3J0ZWQg
aW4gc29tZSBjb25maWd1cmF0aW9ucy4KIC8vIHJlc291cmNlczogU3BlY2lmaWVzIHRoZSBidWls
dC1pbiByZXNvdXJjZXMuCkBAIC0zNzgsMTEgKzQ0OCwxMCBAQCBDT01QSUxFUl9FWFBPUlQgdm9p
ZCBTaERlc3RydWN0KFNoSGFuZGxlCiAvLyBTSF9WQVJJQUJMRVM6IEV4dHJhY3RzIGF0dHJpYnV0
ZXMsIHVuaWZvcm1zLCBhbmQgdmFyeWluZ3MuCiAvLyAgICAgICAgICAgICAgIENhbiBiZSBxdWVy
aWVkIGJ5IGNhbGxpbmcgU2hHZXRWYXJpYWJsZUluZm8oKS4KIC8vCi1DT01QSUxFUl9FWFBPUlQg
Ym9vbCBTaENvbXBpbGUoCi0gICAgY29uc3QgU2hIYW5kbGUgaGFuZGxlLAotICAgIGNvbnN0IGNo
YXIgKiBjb25zdCBzaGFkZXJTdHJpbmdzW10sCi0gICAgc2l6ZV90IG51bVN0cmluZ3MsCi0gICAg
aW50IGNvbXBpbGVPcHRpb25zKTsKK0NPTVBJTEVSX0VYUE9SVCBib29sIFNoQ29tcGlsZShjb25z
dCBTaEhhbmRsZSBoYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciAqY29uc3Qgc2hhZGVyU3RyaW5nc1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBudW1TdHJpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNo
Q29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpOwogCiAvLyBDbGVhcnMgdGhlIHJlc3VsdHMg
ZnJvbSB0aGUgcHJldmlvdXMgY29tcGlsYXRpb24uCiBDT01QSUxFUl9FWFBPUlQgdm9pZCBTaENs
ZWFyUmVzdWx0cyhjb25zdCBTaEhhbmRsZSBoYW5kbGUpOwpAQCAtNDIzLDYgKzQ5Miw3IEBAIENP
TVBJTEVSX0VYUE9SVCBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6VmEKIENPTVBJTEVSX0VYUE9SVCBj
b25zdCBzdGQ6OnZlY3RvcjxzaDo6QXR0cmlidXRlPiAqU2hHZXRBdHRyaWJ1dGVzKGNvbnN0IFNo
SGFuZGxlIGhhbmRsZSk7CiBDT01QSUxFUl9FWFBPUlQgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6Ok91
dHB1dFZhcmlhYmxlPiAqU2hHZXRPdXRwdXRWYXJpYWJsZXMoY29uc3QgU2hIYW5kbGUgaGFuZGxl
KTsKIENPTVBJTEVSX0VYUE9SVCBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6SW50ZXJmYWNlQmxvY2s+
ICpTaEdldEludGVyZmFjZUJsb2Nrcyhjb25zdCBTaEhhbmRsZSBoYW5kbGUpOworQ09NUElMRVJf
RVhQT1JUIHNoOjpXb3JrR3JvdXBTaXplIFNoR2V0Q29tcHV0ZVNoYWRlckxvY2FsR3JvdXBTaXpl
KGNvbnN0IFNoSGFuZGxlIGhhbmRsZSk7CiAKIHR5cGVkZWYgc3RydWN0CiB7CkBAIC00MzYsMTIg
KzUwNiwxMCBAQCB0eXBlZGVmIHN0cnVjdAogLy8gZmxhZyBhYm92ZS4KIC8vIFBhcmFtZXRlcnM6
CiAvLyBtYXhWZWN0b3JzOiB0aGUgYXZhaWxhYmxlIHJvd3Mgb2YgcmVnaXN0ZXJzLgotLy8gdmFy
SW5mb0FycmF5OiBhbiBhcnJheSBvZiB2YXJpYWJsZSBpbmZvICh0eXBlcyBhbmQgc2l6ZXMpLgot
Ly8gdmFySW5mb0FycmF5U2l6ZTogdGhlIHNpemUgb2YgdGhlIHZhcmlhYmxlIGFycmF5LgorLy8g
dmFyaWFibGVzOiBhbiBhcnJheSBvZiB2YXJpYWJsZXMuCiBDT01QSUxFUl9FWFBPUlQgYm9vbCBT
aENoZWNrVmFyaWFibGVzV2l0aGluUGFja2luZ0xpbWl0cygKICAgICBpbnQgbWF4VmVjdG9ycywK
LSAgICBTaFZhcmlhYmxlSW5mbyAqdmFySW5mb0FycmF5LAotICAgIHNpemVfdCB2YXJJbmZvQXJy
YXlTaXplKTsKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6U2hhZGVyVmFyaWFibGU+ICZ2YXJp
YWJsZXMpOwogCiAvLyBHaXZlcyB0aGUgY29tcGlsZXItYXNzaWduZWQgcmVnaXN0ZXIgZm9yIGFu
IGludGVyZmFjZSBibG9jay4KIC8vIFRoZSBtZXRob2Qgd3JpdGVzIHRoZSB2YWx1ZSB0byB0aGUg
b3V0cHV0IHZhcmlhYmxlICJpbmRleE91dCIuCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyVmFycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xTTEFORy9TaGFkZXJWYXJzLmgJKHJldmlzaW9uIDIwNzgw
NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xTTEFORy9TaGFkZXJWYXJz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwLDkgKzEwLDkgQEAKICNpZm5kZWYgR0xTTEFOR19TSEFE
RVJWQVJTX0hfCiAjZGVmaW5lIEdMU0xBTkdfU0hBREVSVkFSU19IXwogCisjaW5jbHVkZSA8YWxn
b3JpdGhtPgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+Ci0jaW5jbHVkZSA8
YWxnb3JpdGhtPgogCiAvLyBBc3N1bWUgU2hhZGVyTGFuZy5oIGlzIGluY2x1ZGVkIGJlZm9yZSBT
aGFkZXJWYXJzLmgsIGZvciBzaDo6R0xlbnVtCiAvLyBOb3RlOiBtYWtlIHN1cmUgdG8gaW5jcmVt
ZW50IEFOR0xFX1NIX1ZFUlNJT04gd2hlbiBjaGFuZ2luZyBTaGFkZXJWYXJzLmgKQEAgLTIwMyw2
ICsyMDMsOSBAQCBzdHJ1Y3QgQ09NUElMRVJfRVhQT1JUIEludGVyZmFjZUJsb2NrCiAgICAgLy8g
RmllbGRzIGZyb20gYmxvY2tzIHdpdGggbm9uLWVtcHR5IGluc3RhbmNlIG5hbWVzIGFyZSBwcmVm
aXhlZCB3aXRoIHRoZSBibG9jayBuYW1lLgogICAgIHN0ZDo6c3RyaW5nIGZpZWxkUHJlZml4KCkg
Y29uc3Q7CiAKKyAgICAvLyBEZWNpZGUgd2hldGhlciB0d28gaW50ZXJmYWNlIGJsb2NrcyBhcmUg
dGhlIHNhbWUgYXQgc2hhZGVyIGxpbmsgdGltZS4KKyAgICBib29sIGlzU2FtZUludGVyZmFjZUJs
b2NrQXRMaW5rVGltZShjb25zdCBJbnRlcmZhY2VCbG9jayAmb3RoZXIpIGNvbnN0OworCiAgICAg
c3RkOjpzdHJpbmcgbmFtZTsKICAgICBzdGQ6OnN0cmluZyBtYXBwZWROYW1lOwogICAgIHN0ZDo6
c3RyaW5nIGluc3RhbmNlTmFtZTsKQEAgLTIxMyw2ICsyMTYsMzIgQEAgc3RydWN0IENPTVBJTEVS
X0VYUE9SVCBJbnRlcmZhY2VCbG9jawogICAgIHN0ZDo6dmVjdG9yPEludGVyZmFjZUJsb2NrRmll
bGQ+IGZpZWxkczsKIH07CiAKK3N0cnVjdCBDT01QSUxFUl9FWFBPUlQgV29ya0dyb3VwU2l6ZQor
eworICAgIHZvaWQgZmlsbChpbnQgZmlsbFZhbHVlKTsKKyAgICB2b2lkIHNldExvY2FsU2l6ZShp
bnQgbG9jYWxTaXplWCwgaW50IGxvY2FsU2l6ZVksIGludCBsb2NhbFNpemVaKTsKKworICAgIGlu
dCAmb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpOworICAgIGludCBvcGVyYXRvcltdKHNpemVfdCBp
bmRleCkgY29uc3Q7CisgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKKworICAgIC8vIENoZWNrcyB3
aGV0aGVyIHR3byB3b3JrIGdyb3VwIHNpemUgZGVjbGFyYXRpb25zIG1hdGNoLgorICAgIC8vIFR3
byB3b3JrIGdyb3VwIHNpemUgZGVjbGFyYXRpb25zIGFyZSB0aGUgc2FtZSBpZiB0aGUgZXhwbGlj
aXRseSBzcGVjaWZpZWQgZWxlbWVudHMgYXJlIHRoZQorICAgIC8vIHNhbWUgb3IgaWYgb25lIG9m
IHRoZW0gaXMgc3BlY2lmaWVkIGFzIG9uZSBhbmQgdGhlIG90aGVyIG9uZSBpcyBub3Qgc3BlY2lm
aWVkCisgICAgYm9vbCBpc1dvcmtHcm91cFNpemVNYXRjaGluZyhjb25zdCBXb3JrR3JvdXBTaXpl
ICZyaWdodCkgY29uc3Q7CisKKyAgICAvLyBDaGVja3Mgd2hldGhlciBhbnkgb2YgdGhlIHZhbHVl
cyBhcmUgc2V0LgorICAgIGJvb2wgaXNBbnlWYWx1ZVNldCgpIGNvbnN0OworCisgICAgLy8gQ2hl
Y2tzIHdoZXRoZXIgYWxsIG9mIHRoZSB2YWx1ZXMgYXJlIHNldC4KKyAgICBib29sIGlzRGVjbGFy
ZWQoKSBjb25zdDsKKworICAgIC8vIENoZWNrcyB3aGV0aGVyIGVpdGhlciBhbGwgb2YgdGhlIHZh
bHVlcyBhcmUgc2V0LCBvciBub25lIG9mIHRoZW0gYXJlLgorICAgIGJvb2wgaXNMb2NhbFNpemVW
YWxpZCgpIGNvbnN0OworCisgICAgaW50IGxvY2FsU2l6ZVF1YWxpZmllcnNbM107Cit9OworCiB9
ICAvLyBuYW1lc3BhY2Ugc2gKIAogI2VuZGlmIC8vIEdMU0xBTkdfU0hBREVSVkFSU19IXwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZ2xlLmd5cAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5nbGUuZ3lwCShyZXZpc2lvbiAyMDc4MDQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5nbGUuZ3lwCSh3b3JraW5nIGNvcHkpCkBA
IC02LDcgKzYsNiBAQAogICAgICd2YXJpYWJsZXMnOgogICAgIHsKICAgICAgICAgJ2FuZ2xlX2Nv
ZGUnOiAxLAotICAgICAgICAnYW5nbGVfcG9zdF9idWlsZF9zY3JpcHQlJzogMCwKICAgICAgICAg
J2FuZ2xlX2dlbl9wYXRoJzogJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL2FuZ2xlJywKICAg
ICAgICAgJ2FuZ2xlX2lkX3NjcmlwdF9iYXNlJzogJ2NvbW1pdF9pZC5weScsCiAgICAgICAgICdh
bmdsZV9pZF9zY3JpcHQnOiAnPChhbmdsZV9nZW5fcGF0aCkvPChhbmdsZV9pZF9zY3JpcHRfYmFz
ZSknLApAQCAtMTYsMTEgKzE1LDEzIEBACiAgICAgICAgICdhbmdsZV9lbmFibGVfZDNkOSUnOiAw
LAogICAgICAgICAnYW5nbGVfZW5hYmxlX2QzZDExJSc6IDAsCiAgICAgICAgICdhbmdsZV9lbmFi
bGVfZ2wlJzogMCwKKyAgICAgICAgJ2FuZ2xlX2VuYWJsZV92dWxrYW4lJzogMCwKICAgICAgICAg
J2FuZ2xlX2VuYWJsZV9lc3NsJSc6IDEsICMgRW5hYmxlIHRoaXMgZm9yIGFsbCBjb25maWdzIGJ5
IGRlZmF1bHQKICAgICAgICAgJ2FuZ2xlX2VuYWJsZV9nbHNsJSc6IDEsICMgRW5hYmxlIHRoaXMg
Zm9yIGFsbCBjb25maWdzIGJ5IGRlZmF1bHQKICAgICAgICAgJ2FuZ2xlX2VuYWJsZV9obHNsJSc6
IDAsCiAgICAgICAgICdhbmdsZV9saW5rX2dseCUnOiAwLAogICAgICAgICAnYW5nbGVfZ2xfbGli
cmFyeV90eXBlJSc6ICdzaGFyZWRfbGlicmFyeScsCisgICAgICAgICdkY2hlY2tfYWx3YXlzX29u
JSc6IDAsCiAgICAgICAgICdjb25kaXRpb25zJzoKICAgICAgICAgWwogICAgICAgICAgICAgWydP
Uz09IndpbiInLApAQCAtMjksNiArMzAsNyBAQAogICAgICAgICAgICAgICAgICdhbmdsZV9lbmFi
bGVfZDNkOSUnOiAxLAogICAgICAgICAgICAgICAgICdhbmdsZV9lbmFibGVfZDNkMTElJzogMSwK
ICAgICAgICAgICAgICAgICAnYW5nbGVfZW5hYmxlX2hsc2wlJzogMSwKKyAgICAgICAgICAgICAg
ICAnYW5nbGVfZW5hYmxlX3Z1bGthbiUnOiAxLAogICAgICAgICAgICAgfV0sCiAgICAgICAgICAg
ICBbJ09TPT0ibGludXgiIGFuZCB1c2VfeDExPT0xIGFuZCBjaHJvbWVvcz09MCcsCiAgICAgICAg
ICAgICB7CkBAIC00Myw2ICs0NSw3IEBACiAgICAgICAgICAgICAgICAgJ2FuZ2xlX2VuYWJsZV9n
bCUnOiAxLAogICAgICAgICAgICAgfV0sCiAgICAgICAgIF0sCisgICAgICAgICdhbmdsZV9lbmFi
bGVfbnVsbCUnOiAxLCAjIEF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zCiAgICAgfSwKICAgICAn
aW5jbHVkZXMnOgogICAgIFsKQEAgLTY1LDYgKzY4LDcgQEAKICAgICAgICAgICAgIFsKICAgICAg
ICAgICAgICAgICAnLicsCiAgICAgICAgICAgICAgICAgJy4uL2luY2x1ZGUnLAorICAgICAgICAg
ICAgICAgICdjb21tb24vdGhpcmRfcGFydHkvbnVtZXJpY3MnLAogICAgICAgICAgICAgXSwKICAg
ICAgICAgICAgICdkZXBlbmRlbmNpZXMnOgogICAgICAgICAgICAgWwpAQCAtNzQsMTEgKzc4LDI1
IEBACiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6CiAgICAg
ICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMnLAog
ICAgICAgICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9pbmNsdWRlJywKKyAgICAgICAgICAg
ICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjJywKKyAgICAgICAgICAgICAgICAgICAgJzwoYW5n
bGVfcGF0aCkvc3JjL2NvbW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcycsCiAgICAgICAgICAgICAg
ICAgXSwKICAgICAgICAgICAgICAgICAnY29uZGl0aW9ucyc6CiAgICAgICAgICAgICAgICAgWwor
ICAgICAgICAgICAgICAgICAgICBbJ2RjaGVja19hbHdheXNfb249PTEnLAorICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAnY29uZmlndXJhdGlvbnMnOgorICAg
ICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdSZWxl
YXNlX0Jhc2UnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQU5HTEVfRU5BQkxF
X1JFTEVBU0VfQVNTRVJUUycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgICAgICBbJ09TPT0id2lu
IicsCiAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICdjb25m
aWd1cmF0aW9ucyc6CkBAIC05Niw2ICsxMTQsMTkgQEAKICAgICAgICAgICAgIH0sCiAgICAgICAg
ICAgICAnY29uZGl0aW9ucyc6CiAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgWydkY2hl
Y2tfYWx3YXlzX29uPT0xJywKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICdjb25maWd1cmF0aW9ucyc6CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICdSZWxlYXNlX0Jhc2UnOgorICAgICAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdkZWZpbmVzJzoKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBTkdMRV9FTkFCTEVf
UkVMRUFTRV9BU1NFUlRTJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICB9XSwKICAgICAgICAgICAgICAgICBbJ09TPT0id2luIicsCiAgICAgICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICAgICAnY29uZmlndXJhdGlvbnMnOgpAQCAtMTEzLDYgKzE0NCwz
MyBAQAogICAgICAgICB9LAogCiAgICAgICAgIHsKKyAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6
ICdhbmdsZV9pbWFnZV91dGlsJywKKyAgICAgICAgICAgICd0eXBlJzogJ3N0YXRpY19saWJyYXJ5
JywKKyAgICAgICAgICAgICdpbmNsdWRlcyc6IFsgJy4uL2J1aWxkL2NvbW1vbl9kZWZpbmVzLmd5
cGknLCBdLAorICAgICAgICAgICAgJ3NvdXJjZXMnOgorICAgICAgICAgICAgWworICAgICAgICAg
ICAgICAgICc8QChsaWJhbmdsZV9pbWFnZV91dGlsX3NvdXJjZXMpJywKKyAgICAgICAgICAgIF0s
CisgICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzoKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAg
ICAgICAnLicsCisgICAgICAgICAgICAgICAgJy4uL2luY2x1ZGUnLAorICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOgorICAgICAgICAgICAgWworICAgICAgICAgICAg
ICAgICdhbmdsZV9jb21tb24nLAorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICdkaXJlY3Rf
ZGVwZW5kZW50X3NldHRpbmdzJzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAnaW5j
bHVkZV9kaXJzJzoKKyAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICc8KGFu
Z2xlX3BhdGgpL2luY2x1ZGUnLAorICAgICAgICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9z
cmMnLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICB9LAorICAgICAgICB9LAorCisg
ICAgICAgIHsKICAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdjb3B5X3NjcmlwdHMnLAogICAg
ICAgICAgICAgJ3R5cGUnOiAnbm9uZScsCiAgICAgICAgICAgICAnaW5jbHVkZXMnOiBbICcuLi9i
dWlsZC9jb21tb25fZGVmaW5lcy5neXBpJywgXSwKQEAgLTI0OCwyOCArMzA2LDUgQEAKICAgICAg
ICAgICAgICAgICB9LAogICAgICAgICAgICAgXSwgIyB0YXJnZXRzCiAgICAgICAgIH1dLAotICAg
ICAgICBbJ2FuZ2xlX3Bvc3RfYnVpbGRfc2NyaXB0IT0wIGFuZCBPUz09IndpbiInLAotICAgICAg
ICB7Ci0gICAgICAgICAgICAndGFyZ2V0cyc6Ci0gICAgICAgICAgICBbCi0gICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAncG9zdF9idWlsZCcsCi0g
ICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ25vbmUnLAotICAgICAgICAgICAgICAgICAgICAn
aW5jbHVkZXMnOiBbICcuLi9idWlsZC9jb21tb25fZGVmaW5lcy5neXBpJywgXSwKLSAgICAgICAg
ICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6IFsgJ2xpYkdMRVN2MicsICdsaWJFR0wnIF0sCi0g
ICAgICAgICAgICAgICAgICAgICdhY3Rpb25zJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAg
ICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rp
b25fbmFtZSc6ICdBTkdMRSBQb3N0LUJ1aWxkIFNjcmlwdCcsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ21lc3NhZ2UnOiAnUnVubmluZyA8KGFuZ2xlX3Bvc3RfYnVpbGRfc2NyaXB0KS4u
LicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21zdnNfY3lnd2luX3NoZWxsJzogMCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5wdXRzJzogWyAnPChhbmdsZV9wb3N0X2J1
aWxkX3NjcmlwdCknLCAnPCFAKFsicHl0aG9uIiwgIjwoYW5nbGVfcG9zdF9idWlsZF9zY3JpcHQp
IiwgImlucHV0cyIsICI8KGFuZ2xlX3BhdGgpIiwgIjwoQ09ORklHVVJBVElPTl9OQU1FKSIsICIk
KFBsYXRmb3JtTmFtZSkiLCAiPChQUk9EVUNUX0RJUikiXSknIF0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ291dHB1dHMnOiBbICc8IUAocHl0aG9uIDwoYW5nbGVfcG9zdF9idWlsZF9z
Y3JpcHQpIG91dHB1dHMgIjwoYW5nbGVfcGF0aCkiICI8KENPTkZJR1VSQVRJT05fTkFNRSkiICIk
KFBsYXRmb3JtTmFtZSkiICI8KFBST0RVQ1RfRElSKSIpJyBdLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdhY3Rpb24nOiBbJ3B5dGhvbicsICc8KGFuZ2xlX3Bvc3RfYnVpbGRfc2NyaXB0
KScsICdydW4nLCAnPChhbmdsZV9wYXRoKScsICc8KENPTkZJR1VSQVRJT05fTkFNRSknLCAnJChQ
bGF0Zm9ybU5hbWUpJywgJzwoUFJPRFVDVF9ESVIpJ10sCi0gICAgICAgICAgICAgICAgICAgICAg
ICB9LAotICAgICAgICAgICAgICAgICAgICBdLCAjYWN0aW9ucwotICAgICAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICBdLCAjIHRhcmdldHMKLSAgICAgICAgfV0sCiAgICAgXSAjIGNvbmRpdGlv
bnMKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21taXRfaWQucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1pdF9pZC5weQkocmV2
aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1pdF9pZC5w
eQkod29ya2luZyBjb3B5KQpAQCAtMiwxMiArMiwxNiBAQCBpbXBvcnQgc3VicHJvY2VzcyBhcyBz
cAogaW1wb3J0IHN5cwogaW1wb3J0IG9zCiAKLSMgVXNhZ2U6IGNvbW1pdF9pZC5weSBjaGVjayA8
YW5nbGVfZGlyPiAoY2hlY2tzIGlmIGdpdCBpcyBwcmVzZW50KQotIyBVc2FnZTogY29tbWl0X2lk
LnB5IGdlbiA8YW5nbGVfZGlyPiA8ZmlsZV90b193cml0ZT4gKGdlbmVyYXRlcyBjb21taXQgaWQp
Cit1c2FnZSA9ICIiIlwKK1VzYWdlOiBjb21taXRfaWQucHkgY2hlY2sgPGFuZ2xlX2Rpcj4gICAg
ICAgICAgICAgICAgLSBjaGVjayBpZiBnaXQgaXMgcHJlc2VudAorICAgICAgIGNvbW1pdF9pZC5w
eSBnZW4gPGFuZ2xlX2Rpcj4gPGZpbGVfdG9fd3JpdGU+ICAtIGdlbmVyYXRlIGNvbW1pdC5oIiIi
CiAKIGRlZiBncmFiX291dHB1dChjb21tYW5kLCBjd2QpOgogICAgIHJldHVybiBzcC5Qb3Blbihj
b21tYW5kLCBzdGRvdXQ9c3AuUElQRSwgc2hlbGw9VHJ1ZSwgY3dkPWN3ZCkuY29tbXVuaWNhdGUo
KVswXS5zdHJpcCgpCiAKK2lmIGxlbihzeXMuYXJndikgPCAzOgorICAgIHN5cy5leGl0KHVzYWdl
KQorCiBvcGVyYXRpb24gPSBzeXMuYXJndlsxXQogY3dkID0gc3lzLmFyZ3ZbMl0KIApJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyLmd5cGkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyLmd5cGkJKHJldmlzaW9uIDIwNzgw
NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci5neXBpCSh3b3JraW5n
IGNvcHkpCkBAIC0yMiw5ICsyMiwxMyBAQAogICAgICAgICAgICAgJy4uL2luY2x1ZGUvR0xTTEFO
Ry9TaGFkZXJWYXJzLmgnLAogICAgICAgICAgICAgJy4uL2luY2x1ZGUvS0hSL2tocnBsYXRmb3Jt
LmgnLAogICAgICAgICAgICAgJy4uL2luY2x1ZGUvYW5nbGVfZ2wuaCcsCisgICAgICAgICAgICAn
Y29tcGlsZXIvdHJhbnNsYXRvci9BZGRBbmRUcnVlVG9Mb29wQ29uZGl0aW9uLmNwcCcsCisgICAg
ICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9BZGRBbmRUcnVlVG9Mb29wQ29uZGl0aW9uLmgn
LAogICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvQmFzZVR5cGVzLmgnLAogICAgICAg
ICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwJywK
ICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9y
LmgnLAorICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvQnJlYWtWYXJpYWJsZUFsaWFz
aW5nSW5Jbm5lckxvb3BzLmNwcCcsCisgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9C
cmVha1ZhcmlhYmxlQWxpYXNpbmdJbklubmVyTG9vcHMuaCcsCiAgICAgICAgICAgICAnY29tcGls
ZXIvdHJhbnNsYXRvci9DYWNoZS5jcHAnLAogICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0
b3IvQ2FjaGUuaCcsCiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9DYWxsREFHLmNw
cCcsCkBAIC0zMyw2ICszNyw3IEBACiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9D
b21tb24uaCcsCiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9Db21waWxlci5jcHAn
LAogICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29tcGlsZXIuaCcsCisgICAgICAg
ICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9Db25zdGFudFVuaW9uLmNwcCcsCiAgICAgICAgICAg
ICAnY29tcGlsZXIvdHJhbnNsYXRvci9Db25zdGFudFVuaW9uLmgnLAogICAgICAgICAgICAgJ2Nv
bXBpbGVyL3RyYW5zbGF0b3IvRGVmZXJHbG9iYWxJbml0aWFsaXplcnMuY3BwJywKICAgICAgICAg
ICAgICdjb21waWxlci90cmFuc2xhdG9yL0RlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzLmgnLApAQCAt
NDAsOCArNDUsMTIgQEAKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0RpYWdub3N0
aWNzLmgnLAogICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvRGlyZWN0aXZlSGFuZGxl
ci5jcHAnLAogICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvRGlyZWN0aXZlSGFuZGxl
ci5oJywKKyAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0VtdWxhdGVHTEZyYWdDb2xv
ckJyb2FkY2FzdC5jcHAnLAorICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvRW11bGF0
ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0LmgnLAogICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0
b3IvRW11bGF0ZVByZWNpc2lvbi5jcHAnLAogICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0
b3IvRW11bGF0ZVByZWNpc2lvbi5oJywKKyAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9y
L0V4cGFuZEludGVnZXJQb3dFeHByZXNzaW9ucy5jcHAnLAorICAgICAgICAgICAgJ2NvbXBpbGVy
L3RyYW5zbGF0b3IvRXhwYW5kSW50ZWdlclBvd0V4cHJlc3Npb25zLmgnLAogICAgICAgICAgICAg
J2NvbXBpbGVyL3RyYW5zbGF0b3IvRXh0ZW5zaW9uQmVoYXZpb3IuaCcsCiAgICAgICAgICAgICAn
Y29tcGlsZXIvdHJhbnNsYXRvci9GbGFnU3RkMTQwU3RydWN0cy5jcHAnLAogICAgICAgICAgICAg
J2NvbXBpbGVyL3RyYW5zbGF0b3IvRmxhZ1N0ZDE0MFN0cnVjdHMuaCcsCkBAIC03Nyw2ICs4Niw4
IEBACiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9QcmFnbWEuaCcsCiAgICAgICAg
ICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9QcnVuZUVtcHR5RGVjbGFyYXRpb25zLmNwcCcsCiAg
ICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9QcnVuZUVtcHR5RGVjbGFyYXRpb25zLmgn
LAorICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvUXVhbGlmaWVyVHlwZXMuaCcsCisg
ICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9RdWFsaWZpZXJUeXBlcy5jcHAnLAogICAg
ICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVjb3JkQ29uc3RhbnRQcmVjaXNpb24uY3Bw
JywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1JlY29yZENvbnN0YW50UHJlY2lz
aW9uLmgnLAogICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVnZW5lcmF0ZVN0cnVj
dE5hbWVzLmNwcCcsCkBAIC04NSw3ICs5NiwxMCBAQAogICAgICAgICAgICAgJ2NvbXBpbGVyL3Ry
YW5zbGF0b3IvUmVtb3ZlUG93LmgnLAogICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3Iv
UmV3cml0ZURvV2hpbGUuY3BwJywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1Jl
d3JpdGVEb1doaWxlLmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVuYW1l
RnVuY3Rpb24uaCcsCisgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlVGV4
ZWxGZXRjaE9mZnNldC5jcHAnLAorICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3
cml0ZVRleGVsRmV0Y2hPZmZzZXQuaCcsCisgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRv
ci9SZXdyaXRlVW5hcnlNaW51c09wZXJhdG9ySW50LmNwcCcsCisgICAgICAgICAgICAnY29tcGls
ZXIvdHJhbnNsYXRvci9SZXdyaXRlVW5hcnlNaW51c09wZXJhdG9ySW50LmgnLAogICAgICAgICAg
ICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvU2NhbGFyaXplVmVjQW5kTWF0Q29uc3RydWN0b3JBcmdz
LmNwcCcsCiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9TY2FsYXJpemVWZWNBbmRN
YXRDb25zdHJ1Y3RvckFyZ3MuaCcsCiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9T
ZWFyY2hTeW1ib2wuY3BwJywKQEAgLTk2LDYgKzExMCw4IEBACiAgICAgICAgICAgICAnY29tcGls
ZXIvdHJhbnNsYXRvci9UeXBlcy5oJywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9y
L1VuZm9sZFNob3J0Q2lyY3VpdEFTVC5jcHAnLAogICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5z
bGF0b3IvVW5mb2xkU2hvcnRDaXJjdWl0QVNULmgnLAorICAgICAgICAgICAgJ2NvbXBpbGVyL3Ry
YW5zbGF0b3IvVXNlSW50ZXJmYWNlQmxvY2tGaWVsZHMuY3BwJywKKyAgICAgICAgICAgICdjb21w
aWxlci90cmFuc2xhdG9yL1VzZUludGVyZmFjZUJsb2NrRmllbGRzLmgnLAogICAgICAgICAgICAg
J2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVHbG9iYWxJbml0aWFsaXplci5jcHAnLAogICAg
ICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVHbG9iYWxJbml0aWFsaXplci5o
JywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlTGltaXRhdGlvbnMu
Y3BwJywKQEAgLTExMiwxMyArMTI4LDYgQEAKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xh
dG9yL1ZhcmlhYmxlUGFja2VyLmgnLAogICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3Iv
YmxvY2tsYXlvdXQuY3BwJywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL2Jsb2Nr
bGF5b3V0LmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVw
ZW5kZW5jeUdyYXBoLmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9kZXBn
cmFwaC9EZXBlbmRlbmN5R3JhcGguaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRv
ci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcCcsCi0gICAgICAgICAgICAnY29t
cGlsZXIvdHJhbnNsYXRvci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmgnLAotICAg
ICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoT3V0
cHV0LmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9kZXBncmFwaC9EZXBl
bmRlbmN5R3JhcGhPdXRwdXQuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9k
ZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAnLAogICAgICAgICAgICAgJ2NvbXBp
bGVyL3RyYW5zbGF0b3IvZ2xzbGFuZy5oJywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xh
dG9yL2dsc2xhbmcubCcsCiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5n
LnknLApAQCAtMTI3LDEwICsxMzYsNiBAQAogICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0
b3IvZ2xzbGFuZ190YWIuaCcsCiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9pbnRl
cm1PdXQuY3BwJywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL2xlbmd0aF9saW1p
dHMuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci90aW1pbmcvUmVzdHJpY3RG
cmFnbWVudFNoYWRlclRpbWluZy5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0
b3IvdGltaW5nL1Jlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmcuaCcsCi0gICAgICAgICAgICAn
Y29tcGlsZXIvdHJhbnNsYXRvci90aW1pbmcvUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuY3Bw
JywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL3RpbWluZy9SZXN0cmljdFZlcnRl
eFNoYWRlclRpbWluZy5oJywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL3V0aWwu
Y3BwJywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL3V0aWwuaCcsCiAgICAgICAg
ICAgICAndGhpcmRfcGFydHkvY29tcGlsZXIvQXJyYXlCb3VuZHNDbGFtcGVyLmNwcCcsCkBAIC0x
NjAsNiArMTY1LDggQEAKICAgICAgICAgXSwKICAgICAgICAgJ2FuZ2xlX3RyYW5zbGF0b3JfbGli
X2hsc2xfc291cmNlcyc6CiAgICAgICAgIFsKKyAgICAgICAgICAgICdjb21waWxlci90cmFuc2xh
dG9yL0FkZERlZmF1bHRSZXR1cm5TdGF0ZW1lbnRzLmNwcCcsCisgICAgICAgICAgICAnY29tcGls
ZXIvdHJhbnNsYXRvci9BZGREZWZhdWx0UmV0dXJuU3RhdGVtZW50cy5oJywKICAgICAgICAgICAg
ICdjb21waWxlci90cmFuc2xhdG9yL0FycmF5UmV0dXJuVmFsdWVUb091dFBhcmFtZXRlci5jcHAn
LAogICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvQXJyYXlSZXR1cm5WYWx1ZVRvT3V0
UGFyYW1ldGVyLmgnLAogICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvQVNUTWV0YWRh
dGFITFNMLmNwcCcsCkBAIC0xNjgsNiArMTc1LDggQEAKICAgICAgICAgICAgICdjb21waWxlci90
cmFuc2xhdG9yL2Jsb2NrbGF5b3V0SExTTC5oJywKICAgICAgICAgICAgICdjb21waWxlci90cmFu
c2xhdG9yL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9ySExTTC5jcHAnLAogICAgICAgICAgICAgJ2Nv
bXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JITFNMLmgnLAorICAgICAg
ICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVyLmNwcCcs
CisgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlUGF0dGVybk1hdGNo
ZXIuaCcsCiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRITFNMLmNwcCcs
CiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRITFNMLmgnLAogICAgICAg
ICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlRHluYW1pY0luZGV4aW5nLmNwcCcsCkBA
IC0xODIsOCArMTkxLDE0IEBACiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9TZXBh
cmF0ZURlY2xhcmF0aW9ucy5oJywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1Nl
cGFyYXRlRXhwcmVzc2lvbnNSZXR1cm5pbmdBcnJheXMuY3BwJywKICAgICAgICAgICAgICdjb21w
aWxlci90cmFuc2xhdG9yL1NlcGFyYXRlRXhwcmVzc2lvbnNSZXR1cm5pbmdBcnJheXMuaCcsCisg
ICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9TaW1wbGlmeUxvb3BDb25kaXRpb25zLmNw
cCcsCisgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9TaW1wbGlmeUxvb3BDb25kaXRp
b25zLmgnLAorICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvU3BsaXRTZXF1ZW5jZU9w
ZXJhdG9yLmNwcCcsCisgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9TcGxpdFNlcXVl
bmNlT3BlcmF0b3IuaCcsCiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9TdHJ1Y3R1
cmVITFNMLmNwcCcsCiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9TdHJ1Y3R1cmVI
TFNMLmgnLAorICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvVGV4dHVyZUZ1bmN0aW9u
SExTTC5jcHAnLAorICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvVGV4dHVyZUZ1bmN0
aW9uSExTTC5oJywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JI
TFNMLmNwcCcsCiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9ySExT
TC5oJywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1VuZm9sZFNob3J0Q2lyY3Vp
dFRvSWYuY3BwJywKQEAgLTIyMSw3ICsyMzYsNiBAQAogICAgICAgICAgICAgJ2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci9Ub2tlbml6ZXIuaCcsCiAgICAgICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vz
c29yL1Rva2VuaXplci5sJywKICAgICAgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvbnVt
ZXJpY19sZXguaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL3BwX3V0aWxz
LmgnLAogICAgICAgICBdLAogICAgIH0sCiAgICAgIyBFdmVyeXRoaW5nIGJlbG93IHRoaXMgaXMg
ZHVwbGljYXRlZCBpbiB0aGUgR04gYnVpbGQuIElmIHlvdSBjaGFuZ2UKQEAgLTIzMSw2ICsyNDUs
NyBAQAogICAgICAgICB7CiAgICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAncHJlcHJvY2Vzc29y
JywKICAgICAgICAgICAgICd0eXBlJzogJ3N0YXRpY19saWJyYXJ5JywKKyAgICAgICAgICAgICdk
ZXBlbmRlbmNpZXMnOiBbICdhbmdsZV9jb21tb24nIF0sCiAgICAgICAgICAgICAnaW5jbHVkZXMn
OiBbICcuLi9idWlsZC9jb21tb25fZGVmaW5lcy5neXBpJywgXSwKICAgICAgICAgICAgICdzb3Vy
Y2VzJzogWyAnPEAoYW5nbGVfcHJlcHJvY2Vzc29yX3NvdXJjZXMpJywgXSwKICAgICAgICAgfSwK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wuZ3lwaQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdMLmd5cGkJKHJldmlzaW9uIDIw
NzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wuZ3lwaQkod29ya2lu
ZyBjb3B5KQpAQCAtNSwxMCArNSw2IEBACiB7CiAgICAgIyBFdmVyeXRoaW5nIGJlbG93IHRoaXMg
aXMgZHVwbGljYXRlZCBpbiB0aGUgR04gYnVpbGQuIElmIHlvdSBjaGFuZ2UKICAgICAjIGFueXRo
aW5nIGFsc28gY2hhbmdlIGFuZ2xlL0JVSUxELmduCi0gICAgJ3ZhcmlhYmxlcyc6Ci0gICAgewot
ICAgICAgICAnYW5nbGVfc3RhbmRhbG9uZSUnOiAwLAotICAgIH0sCiAgICAgJ3RhcmdldHMnOgog
ICAgIFsKICAgICAgICAgewpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIuZ3lwaQkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC01LDEyICs1LDEyIEBACiB7CiAg
ICAgJ3ZhcmlhYmxlcyc6CiAgICAgewotICAgICAgICAnYW5nbGVfc3RhbmRhbG9uZSUnOiAwLAot
CiAgICAgICAgICMgVGhlc2UgZmlsZSBsaXN0cyBhcmUgc2hhcmVkIHdpdGggdGhlIEdOIGJ1aWxk
LgogICAgICAgICAnbGliYW5nbGVfY29tbW9uX3NvdXJjZXMnOgogICAgICAgICBbCiAgICAgICAg
ICAgICAnY29tbW9uL0JpdFNldEl0ZXJhdG9yLmgnLAorICAgICAgICAgICAgJ2NvbW1vbi9Db2xv
ci5oJywKKyAgICAgICAgICAgICdjb21tb24vQ29sb3IuaW5sJywKICAgICAgICAgICAgICdjb21t
b24vRmxvYXQxNlRvRmxvYXQzMi5jcHAnLAogICAgICAgICAgICAgJ2NvbW1vbi9NZW1vcnlCdWZm
ZXIuY3BwJywKICAgICAgICAgICAgICdjb21tb24vTWVtb3J5QnVmZmVyLmgnLApAQCAtMjUsMTIg
KzI1LDMxIEBACiAgICAgICAgICAgICAnY29tbW9uL3BsYXRmb3JtLmgnLAogICAgICAgICAgICAg
J2NvbW1vbi9zdHJpbmdfdXRpbHMuY3BwJywKICAgICAgICAgICAgICdjb21tb24vc3RyaW5nX3V0
aWxzLmgnLAorICAgICAgICAgICAgJ2NvbW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcy9iYXNlL2xv
Z2dpbmcuaCcsCisgICAgICAgICAgICAnY29tbW9uL3RoaXJkX3BhcnR5L251bWVyaWNzL2Jhc2Uv
bnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oJywKKyAgICAgICAgICAgICdjb21tb24vdGhpcmRf
cGFydHkvbnVtZXJpY3MvYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zX2ltcGwuaCcsCisg
ICAgICAgICAgICAnY29tbW9uL3RoaXJkX3BhcnR5L251bWVyaWNzL2Jhc2UvbnVtZXJpY3Mvc2Fm
ZV9tYXRoLmgnLAorICAgICAgICAgICAgJ2NvbW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcy9iYXNl
L251bWVyaWNzL3NhZmVfbWF0aF9pbXBsLmgnLAogICAgICAgICAgICAgJ2NvbW1vbi90bHMuY3Bw
JywKICAgICAgICAgICAgICdjb21tb24vdGxzLmgnLAogICAgICAgICAgICAgJ2NvbW1vbi91dGls
aXRpZXMuY3BwJywKICAgICAgICAgICAgICdjb21tb24vdXRpbGl0aWVzLmgnLAogICAgICAgICAg
ICAgJ2NvbW1vbi92ZXJzaW9uLmgnLAogICAgICAgICBdLAorICAgICAgICAnbGliYW5nbGVfaW1h
Z2VfdXRpbF9zb3VyY2VzJzoKKyAgICAgICAgWworICAgICAgICAgICAgJ2ltYWdlX3V0aWwvY29w
eWltYWdlLmNwcCcsCisgICAgICAgICAgICAnaW1hZ2VfdXRpbC9jb3B5aW1hZ2UuaCcsCisgICAg
ICAgICAgICAnaW1hZ2VfdXRpbC9jb3B5aW1hZ2UuaW5sJywKKyAgICAgICAgICAgICdpbWFnZV91
dGlsL2dlbmVyYXRlbWlwLmgnLAorICAgICAgICAgICAgJ2ltYWdlX3V0aWwvZ2VuZXJhdGVtaXAu
aW5sJywKKyAgICAgICAgICAgICdpbWFnZV91dGlsL2ltYWdlZm9ybWF0cy5jcHAnLAorICAgICAg
ICAgICAgJ2ltYWdlX3V0aWwvaW1hZ2Vmb3JtYXRzLmgnLAorICAgICAgICAgICAgJ2ltYWdlX3V0
aWwvbG9hZGltYWdlLmNwcCcsCisgICAgICAgICAgICAnaW1hZ2VfdXRpbC9sb2FkaW1hZ2UuaCcs
CisgICAgICAgICAgICAnaW1hZ2VfdXRpbC9sb2FkaW1hZ2UuaW5sJywKKyAgICAgICAgICAgICdp
bWFnZV91dGlsL2xvYWRpbWFnZV9ldGMuY3BwJywKKyAgICAgICAgXSwKICAgICAgICAgJ2xpYmFu
Z2xlX2luY2x1ZGVzJzoKICAgICAgICAgWwogICAgICAgICAgICAgJy4uL2luY2x1ZGUvYW5nbGVf
Z2wuaCcsCkBAIC02OCw4ICs4Nyw4IEBACiAgICAgICAgICAgICAnbGliQU5HTEUvQ29uc3RhbnRz
LmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL0NvbnRleHQuY3BwJywKICAgICAgICAgICAgICds
aWJBTkdMRS9Db250ZXh0LmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL0RhdGEuY3BwJywKLSAg
ICAgICAgICAgICdsaWJBTkdMRS9EYXRhLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL0NvbnRl
eHRTdGF0ZS5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL0NvbnRleHRTdGF0ZS5oJywKICAg
ICAgICAgICAgICdsaWJBTkdMRS9EZWJ1Zy5jcHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL0Rl
YnVnLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL0RldmljZS5jcHAnLApAQCAtODcsMTIgKzEw
NiwxNiBAQAogICAgICAgICAgICAgJ2xpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5oJywK
ICAgICAgICAgICAgICdsaWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuY3BwJywKICAgICAgICAgICAg
ICdsaWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvSGFu
ZGxlUmFuZ2VBbGxvY2F0b3IuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvSGFuZGxlUmFuZ2VB
bGxvY2F0b3IuY3BwJywKICAgICAgICAgICAgICdsaWJBTkdMRS9JbWFnZS5oJywKICAgICAgICAg
ICAgICdsaWJBTkdMRS9JbWFnZS5jcHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL0ltYWdlSW5k
ZXguaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvSW1hZ2VJbmRleC5jcHAnLAogICAgICAgICAg
ICAgJ2xpYkFOR0xFL0luZGV4UmFuZ2VDYWNoZS5jcHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xF
L0luZGV4UmFuZ2VDYWNoZS5oJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9QYXRoLmgnLAorICAg
ICAgICAgICAgJ2xpYkFOR0xFL1BhdGguY3BwJywKICAgICAgICAgICAgICdsaWJBTkdMRS9QbGF0
Zm9ybS5jcHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL1Byb2dyYW0uY3BwJywKICAgICAgICAg
ICAgICdsaWJBTkdMRS9Qcm9ncmFtLmgnLApAQCAtMTMwLDM1ICsxNTMsNTEgQEAKICAgICAgICAg
ICAgICdsaWJBTkdMRS9hbmdsZXR5cGVzLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL2FuZ2xl
dHlwZXMuaW5sJywKICAgICAgICAgICAgICdsaWJBTkdMRS9mZWF0dXJlcy5oJywKKyAgICAgICAg
ICAgICdsaWJBTkdMRS9mb3JtYXRfbWFwX2F1dG9nZW4uY3BwJywKICAgICAgICAgICAgICdsaWJB
TkdMRS9mb3JtYXR1dGlscy5jcHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL2Zvcm1hdHV0aWxz
LmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL2hpc3RvZ3JhbV9tYWNyb3MuaCcsCiAgICAgICAg
ICAgICAnbGliQU5HTEUvcXVlcnljb252ZXJzaW9ucy5jcHAnLAogICAgICAgICAgICAgJ2xpYkFO
R0xFL3F1ZXJ5Y29udmVyc2lvbnMuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcXVlcnl1dGls
cy5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3F1ZXJ5dXRpbHMuaCcsCiAgICAgICAgICAg
ICAnbGliQU5HTEUvcmVuZGVyZXIvQnVmZmVySW1wbC5oJywKICAgICAgICAgICAgICdsaWJBTkdM
RS9yZW5kZXJlci9Db21waWxlckltcGwuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvQ29udGV4dEltcGwuY3BwJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9Db250
ZXh0SW1wbC5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9EZXZpY2VJbXBsLmNw
cCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvRGV2aWNlSW1wbC5oJywKICAgICAg
ICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9EaXNwbGF5SW1wbC5jcHAnLAogICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL0Rpc3BsYXlJbXBsLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xF
L3JlbmRlcmVyL0VHTEltcGxGYWN0b3J5LmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRl
cmVyL0ZlbmNlTlZJbXBsLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL0ZlbmNl
U3luY0ltcGwuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvRm9ybWF0X0lEX2F1
dG9nZW4uaW5sJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9Gb3JtYXRfYXV0b2dl
bi5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdC5jcHAnLAorICAg
ICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdC5oJywKKyAgICAgICAgICAgICdsaWJB
TkdMRS9yZW5kZXJlci9GcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3RJbXBsLmgnLAogICAgICAg
ICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL0ZyYW1lYnVmZmVySW1wbC5oJywKKyAgICAgICAgICAg
ICdsaWJBTkdMRS9yZW5kZXJlci9HTEltcGxGYWN0b3J5LmgnLAogICAgICAgICAgICAgJ2xpYkFO
R0xFL3JlbmRlcmVyL0ltYWdlSW1wbC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJl
ci9JbXBsRmFjdG9yeS5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9Qcm9ncmFt
SW1wbC5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9RdWVyeUltcGwuaCcsCiAg
ICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvUmVuZGVyYnVmZmVySW1wbC5oJywKLSAgICAg
ICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9SZW5kZXJlci5jcHAnLAotICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL1JlbmRlcmVyLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRl
cmVyL1NhbXBsZXJJbXBsLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL1NoYWRl
ckltcGwuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvU3RyZWFtSW1wbC5oJywK
KyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9TdHJlYW1Qcm9kdWNlckltcGwuaCcsCiAg
ICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvU3VyZmFjZUltcGwuY3BwJywKICAgICAgICAg
ICAgICdsaWJBTkdMRS9yZW5kZXJlci9TdXJmYWNlSW1wbC5oJywKKyAgICAgICAgICAgICdsaWJB
TkdMRS9yZW5kZXJlci9UZXh0dXJlSW1wbC5jcHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL1RleHR1cmVJbXBsLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL1Ry
YW5zZm9ybUZlZWRiYWNrSW1wbC5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9W
ZXJ0ZXhBcnJheUltcGwuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbG9hZF9m
dW5jdGlvbnNfdGFibGUuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbG9hZF9m
dW5jdGlvbnNfdGFibGVfYXV0b2dlbi5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRl
cmVyL3JlbmRlcmVyX3V0aWxzLmNwcCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
cmVuZGVyZXJfdXRpbHMuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvc2lnbmFsX3V0aWxzLmNw
cCcsCisgICAgICAgICAgICAnbGliQU5HTEUvc2lnbmFsX3V0aWxzLmgnLAogICAgICAgICAgICAg
J2xpYkFOR0xFL3ZhbGlkYXRpb25FR0wuY3BwJywKICAgICAgICAgICAgICdsaWJBTkdMRS92YWxp
ZGF0aW9uRUdMLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3ZhbGlkYXRpb25FUy5jcHAnLApA
QCAtMTY3LDYgKzIwNiw4IEBACiAgICAgICAgICAgICAnbGliQU5HTEUvdmFsaWRhdGlvbkVTMi5o
JywKICAgICAgICAgICAgICdsaWJBTkdMRS92YWxpZGF0aW9uRVMzLmNwcCcsCiAgICAgICAgICAg
ICAnbGliQU5HTEUvdmFsaWRhdGlvbkVTMy5oJywKKyAgICAgICAgICAgICdsaWJBTkdMRS92YWxp
ZGF0aW9uRVMzMS5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMxLmgn
LAogICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L211cm11cmhhc2gvTXVybXVySGFzaDMuY3BwJywK
ICAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9tdXJtdXJoYXNoL011cm11ckhhc2gzLmgnLAogICAg
ICAgICBdLApAQCAtMTc2LDkgKzIxNyw2IEBACiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL0J1ZmZlckQzRC5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
Q29tcGlsZXJEM0QuY3BwJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvQ29t
cGlsZXJEM0QuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2NvcHlpbWFn
ZS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9jb3B5aW1hZ2UuaCcs
Ci0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2NvcHlpbWFnZS5pbmwnLAogICAg
ICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9EZXZpY2VEM0QuY3BwJywKICAgICAgICAg
ICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvRGV2aWNlRDNELmgnLAogICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9EaXNwbGF5RDNELmNwcCcsCkBAIC0xODcsMjcgKzIyNSwxOSBA
QAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9EeW5hbWljSExTTC5oJywKICAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvRUdMSW1hZ2VEM0QuY3BwJywKICAgICAg
ICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvRUdMSW1hZ2VEM0QuaCcsCi0gICAgICAgICAg
ICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Zvcm1hdHV0aWxzRDNELmNwcCcsCiAgICAgICAgICAg
ICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Zvcm1hdHV0aWxzRDNELmgnLAogICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9GcmFtZWJ1ZmZlckQzRC5jcHAnLAogICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9GcmFtZWJ1ZmZlckQzRC5oJywKLSAgICAgICAgICAgICds
aWJBTkdMRS9yZW5kZXJlci9kM2QvZ2VuZXJhdGVtaXAuaCcsCi0gICAgICAgICAgICAnbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2dlbmVyYXRlbWlwLmlubCcsCiAgICAgICAgICAgICAnbGliQU5HTEUv
cmVuZGVyZXIvZDNkL0hMU0xDb21waWxlci5jcHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9ITFNMQ29tcGlsZXIuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL0ltYWdlRDNELmNwcCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNk
L0ltYWdlRDNELmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9pbWFnZWZv
cm1hdHMuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL0luZGV4QnVmZmVy
LmNwcCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL0luZGV4QnVmZmVyLmgn
LAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9JbmRleERhdGFNYW5hZ2VyLmNw
cCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL0luZGV4RGF0YU1hbmFnZXIu
aCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2xvYWRpbWFnZS5jcHAnLAot
ICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9sb2FkaW1hZ2UuaCcsCi0gICAgICAg
ICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2xvYWRpbWFnZS5pbmwnLAotICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9sb2FkaW1hZ2VTU0UyLmNwcCcsCi0gICAgICAgICAgICAn
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2xvYWRpbWFnZV9ldGMuY3BwJywKLSAgICAgICAgICAgICds
aWJBTkdMRS9yZW5kZXJlci9kM2QvbG9hZGltYWdlX2V0Yy5oJywKKyAgICAgICAgICAgICdsaWJB
TkdMRS9yZW5kZXJlci9kM2QvTmF0aXZlV2luZG93RDNELmNwcCcsCisgICAgICAgICAgICAnbGli
QU5HTEUvcmVuZGVyZXIvZDNkL05hdGl2ZVdpbmRvd0QzRC5oJywKICAgICAgICAgICAgICdsaWJB
TkdMRS9yZW5kZXJlci9kM2QvUHJvZ3JhbUQzRC5jcHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9Qcm9ncmFtRDNELmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9SZW5kZXJidWZmZXJEM0QuY3BwJywKQEAgLTIyNyw4ICsyNTcsNiBAQAogICAgICAg
ICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9UZXh0dXJlRDNELmNwcCcsCiAgICAgICAgICAg
ICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL1RleHR1cmVEM0QuaCcsCiAgICAgICAgICAgICAnbGli
QU5HTEUvcmVuZGVyZXIvZDNkL1RleHR1cmVTdG9yYWdlLmgnLAotICAgICAgICAgICAgJ2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9UcmFuc2Zvcm1GZWVkYmFja0QzRC5jcHAnLAotICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9UcmFuc2Zvcm1GZWVkYmFja0QzRC5oJywKICAgICAgICAg
ICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvVmFyeWluZ1BhY2tpbmcuY3BwJywKICAgICAgICAg
ICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvVmFyeWluZ1BhY2tpbmcuaCcsCiAgICAgICAgICAg
ICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL1ZlcnRleEJ1ZmZlci5jcHAnLApAQCAtMjQzLDYgKzI3
MSw4IEBACiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQmxpdDkuaCcs
CiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQnVmZmVyOS5jcHAnLAog
ICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0J1ZmZlcjkuaCcsCisgICAg
ICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQ29udGV4dDkuY3BwJywKKyAgICAg
ICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9Db250ZXh0OS5oJywKICAgICAgICAg
ICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9EZWJ1Z0Fubm90YXRvcjkuY3BwJywKICAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9EZWJ1Z0Fubm90YXRvcjkuaCcs
CiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvRmVuY2U5LmNwcCcsCkBA
IC0yNTUsNiArMjg1LDggQEAKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
OS9JbWFnZTkuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvSW5k
ZXhCdWZmZXI5LmNwcCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkv
SW5kZXhCdWZmZXI5LmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5
L05hdGl2ZVdpbmRvdzkuY3BwJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkOS9OYXRpdmVXaW5kb3c5LmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2Q5L1F1ZXJ5OS5jcHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2Q5L1F1ZXJ5OS5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9S
ZW5kZXJlcjkuY3BwJywKQEAgLTI5MiwxMCArMzI0LDEzIEBACiAgICAgICAgICAgICAnbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL0J1ZmZlcjExLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9DbGVhcjExLmNwcCcsCiAgICAgICAgICAgICAnbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL0NsZWFyMTEuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL0NvbnRleHQxMS5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9Db250ZXh0MTEuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL2NvcHl2ZXJ0ZXguaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL2NvcHl2ZXJ0ZXguaW5sJywKICAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvRGVidWdBbm5vdGF0b3IxMS5jcHAnLAogICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9EZWJ1Z0Fubm90YXRvcjExLmgnLAorICAgICAgICAg
ICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX2Zvcm1hdF9tYXBfYXV0b2dlbi5j
cHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX3N1cHBv
cnRfdGFibGUuY3BwJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
ZHhnaV9zdXBwb3J0X3RhYmxlLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9GZW5jZTExLmNwcCcsCkBAIC0zMTAsOSArMzQ1LDcgQEAKICAgICAgICAgICAgICds
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvSW5kZXhCdWZmZXIxMS5oJywKICAgICAgICAgICAg
ICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvSW5wdXRMYXlvdXRDYWNoZS5jcHAnLAogICAg
ICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9JbnB1dExheW91dENhY2hlLmgn
LAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9sb2FkX2Z1bmN0aW9u
c190YWJsZS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvbG9h
ZF9mdW5jdGlvbnNfdGFibGVfYXV0b2dlbi5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9OYXRpdmVXaW5kb3cuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL05hdGl2ZVdpbmRvdzExLmgnLAogICAgICAgICAgICAgJ2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9QaXhlbFRyYW5zZmVyMTEuY3BwJywKICAgICAgICAgICAg
ICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUGl4ZWxUcmFuc2ZlcjExLmgnLAogICAgICAg
ICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9RdWVyeTExLmNwcCcsCkBAIC0zNTks
MTIgKzM5MiwxNiBAQAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9z
aGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmczZGkxMXBzLmgnLAogICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmcz
ZHVpMTFwcy5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hh
ZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYjJkMTFwcy5oJywKKyAgICAgICAgICAgICdsaWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYnBy
ZW11bHRpcGx5MmQxMXBzLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdidW5tdWx0aXBseTJkMTFwcy5oJywK
ICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxl
ZC9wYXNzdGhyb3VnaHJnYjJkaTExcHMuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2IyZHVpMTFwcy5oJywK
ICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxl
ZC9wYXNzdGhyb3VnaHJnYjNkMTFwcy5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYjNkaTExcHMuaCcsCiAg
ICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQv
cGFzc3Rocm91Z2hyZ2IzZHVpMTFwcy5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYmEyZDExcHMuaCcsCisg
ICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQv
cGFzc3Rocm91Z2hyZ2JhcHJlbXVsdGlwbHkyZDExcHMuaCcsCisgICAgICAgICAgICAnbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2JhdW5t
dWx0aXBseTJkMTFwcy5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYmEyZGkxMXBzLmgnLAogICAgICAgICAg
ICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJv
dWdocmdiYTJkdWkxMXBzLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiYTNkMTFwcy5oJywKQEAgLTM4MSwx
NiArNDE4LDE5IEBACiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3No
YWRlcnMvY29tcGlsZWQvc3dpenpsZXVpM2Rwcy5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvU3RhdGVNYW5hZ2VyMTEuY3BwJywKICAgICAgICAgICAgICdsaWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RhdGVNYW5hZ2VyMTEuaCcsCi0gICAgICAgICAgICAn
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0cmVhbTExLmNwcCcsCi0gICAgICAgICAgICAn
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0cmVhbTExLmgnLAorICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdHJlYW1Qcm9kdWNlck5WMTIuY3BwJywKKyAgICAg
ICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RyZWFtUHJvZHVjZXJOVjEyLmgn
LAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Td2FwQ2hhaW4xMS5j
cHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Td2FwQ2hhaW4x
MS5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVGV4dHVyZVN0
b3JhZ2UxMS5jcHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9U
ZXh0dXJlU3RvcmFnZTExLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9UcmFuc2Zvcm1GZWVkYmFjazExLmNwcCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL1RyYW5zZm9ybUZlZWRiYWNrMTEuaCcsCiAgICAgICAgICAgICAnbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1RyaW0xMS5jcHAnLAogICAgICAgICAgICAgJ2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9UcmltMTEuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlX2F1dG9nZW4uY3BwJywKLSAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfdGFi
bGVfYXV0b2dlbi5oJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
dGV4dHVyZV9mb3JtYXRfdGFibGVfdXRpbHMuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlLmNwcCcsCiAgICAgICAgICAgICAn
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlLmgnLAogICAg
ICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9WZXJ0ZXhBcnJheTExLmNwcCcs
CiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEFycmF5MTEu
aCcsCkBAIC0zOTksMTggKzQzOSwyMSBAQAogICAgICAgICBdLAogICAgICAgICAnbGliYW5nbGVf
ZDNkMTFfd2luMzJfc291cmNlcyc6CiAgICAgICAgIFsKLSAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvd2luMzIvTmF0aXZlV2luZG93LmNwcCcsCisgICAgICAgICAgICAn
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbjMyL05hdGl2ZVdpbmRvdzExV2luMzIuY3Bw
JywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2luMzIvTmF0aXZl
V2luZG93MTFXaW4zMi5oJywKICAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9zeXN0ZW1pbmZvL1N5
c3RlbUluZm8uY3BwJywKICAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9zeXN0ZW1pbmZvL1N5c3Rl
bUluZm8uaCcsCiAgICAgICAgIF0sCiAgICAgICAgICdsaWJhbmdsZV9kM2QxMV93aW5ydF9zb3Vy
Y2VzJzoKICAgICAgICAgWwotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS93aW5ydC9Td2FwQ2hhaW5QYW5lbE5hdGl2ZVdpbmRvdy5jcHAnLAotICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW5ydC9Td2FwQ2hhaW5QYW5lbE5hdGl2ZVdpbmRv
dy5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQvQ29y
ZVdpbmRvd05hdGl2ZVdpbmRvdy5jcHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS93aW5ydC9Db3JlV2luZG93TmF0aXZlV2luZG93LmgnLAogICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW5ydC9JbnNwZWN0YWJsZU5hdGl2ZVdpbmRv
dy5jcHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW5ydC9J
bnNwZWN0YWJsZU5hdGl2ZVdpbmRvdy5oJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvd2lucnQvTmF0aXZlV2luZG93MTFXaW5SVC5jcHAnLAorICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW5ydC9OYXRpdmVXaW5kb3cxMVdpblJULmgn
LAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW5ydC9Td2FwQ2hh
aW5QYW5lbE5hdGl2ZVdpbmRvdy5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS93aW5ydC9Td2FwQ2hhaW5QYW5lbE5hdGl2ZVdpbmRvdy5oJywKICAgICAgICAg
XSwKICAgICAgICAgJ2xpYmFuZ2xlX2dsX3NvdXJjZXMnOgogICAgICAgICBbCkBAIC00MjAsNiAr
NDYzLDggQEAKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9CdWZmZXJHTC5oJywK
ICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9Db21waWxlckdMLmNwcCcsCiAgICAg
ICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvQ29tcGlsZXJHTC5oJywKKyAgICAgICAgICAg
ICdsaWJBTkdMRS9yZW5kZXJlci9nbC9Db250ZXh0R0wuY3BwJywKKyAgICAgICAgICAgICdsaWJB
TkdMRS9yZW5kZXJlci9nbC9Db250ZXh0R0wuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvRGlzcGxheUdMLmNwcCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
Z2wvRGlzcGxheUdMLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL0ZlbmNl
TlZHTC5jcHAnLApAQCAtNDMwLDYgKzQ3NSw4IEBACiAgICAgICAgICAgICAnbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvRnJhbWVidWZmZXJHTC5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJl
ci9nbC9GdW5jdGlvbnNHTC5jcHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2ds
L0Z1bmN0aW9uc0dMLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL1BhdGhH
TC5oJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9QYXRoR0wuY3BwJywKICAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9Qcm9ncmFtR0wuY3BwJywKICAgICAgICAg
ICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9Qcm9ncmFtR0wuaCcsCiAgICAgICAgICAgICAnbGli
QU5HTEUvcmVuZGVyZXIvZ2wvUXVlcnlHTC5jcHAnLApAQCAtNDkxLDYgKzUzOCwzNyBAQAogICAg
ICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9mdW5jdGlvbnNnbHhfdHlwZWRlZnMu
aCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L3BsYXRmb3JtX2dseC5o
JywKICAgICAgICAgXSwKKyAgICAgICAgJ2xpYmFuZ2xlX2dsX2VnbF9zb3VyY2VzJzoKKyAgICAg
ICAgWworICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9EaXNwbGF5RUdMLmNw
cCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Rpc3BsYXlFR0wuaCcs
CisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Z1bmN0aW9uc0VHTC5jcHAn
LAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9GdW5jdGlvbnNFR0wuaCcs
CisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL2Z1bmN0aW9uc2VnbF90eXBl
ZGVmcy5oJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvUGJ1ZmZlclN1
cmZhY2VFR0wuY3BwJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvUGJ1
ZmZlclN1cmZhY2VFR0wuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWds
L1N1cmZhY2VFR0wuY3BwJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wv
U3VyZmFjZUVHTC5oJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvV2lu
ZG93U3VyZmFjZUVHTC5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Vn
bC9XaW5kb3dTdXJmYWNlRUdMLmgnLAorICAgICAgICBdLAorICAgICAgICAnbGliYW5nbGVfZ2xf
ZWdsX2RsX3NvdXJjZXMnOgorICAgICAgICBbCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvZWdsL0Z1bmN0aW9uc0VHTERMLmNwcCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvZWdsL0Z1bmN0aW9uc0VHTERMLmgnLAorICAgICAgICBdLAorICAgICAgICAnbGli
YW5nbGVfZ2xfb3pvbmVfc291cmNlcyc6CisgICAgICAgIFsKKyAgICAgICAgICAgICdsaWJBTkdM
RS9yZW5kZXJlci9nbC9lZ2wvb3pvbmUvRGlzcGxheU96b25lLmNwcCcsCisgICAgICAgICAgICAn
bGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL296b25lL0Rpc3BsYXlPem9uZS5oJywKKyAgICAgICAg
ICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvb3pvbmUvU3VyZmFjZU96b25lLmNwcCcsCisg
ICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL296b25lL1N1cmZhY2VPem9uZS5o
JywKKyAgICAgICAgXSwKKyAgICAgICAgJ2xpYmFuZ2xlX2dsX2VnbF9hbmRyb2lkX3NvdXJjZXMn
OgorICAgICAgICBbCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL2FuZHJv
aWQvRGlzcGxheUFuZHJvaWQuY3BwJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9n
bC9lZ2wvYW5kcm9pZC9EaXNwbGF5QW5kcm9pZC5oJywKKyAgICAgICAgXSwKICAgICAgICAgJ2xp
YmFuZ2xlX2dsX2NnbF9zb3VyY2VzJzoKICAgICAgICAgWwogICAgICAgICAgICAgJ2xpYkFOR0xF
L3JlbmRlcmVyL2dsL2NnbC9EaXNwbGF5Q0dMLm1tJywKQEAgLTUwMCw2ICs1NzgsODggQEAKICAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvV2luZG93U3VyZmFjZUNHTC5tbScs
CiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1dpbmRvd1N1cmZhY2VDR0wu
aCcsCiAgICAgICAgIF0sCisgICAgICAgICdsaWJhbmdsZV92dWxrYW5fc291cmNlcyc6CisgICAg
ICAgIFsKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQnVmZmVyVmsuY3Bw
JywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQnVmZmVyVmsuaCcsCisg
ICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbXBpbGVyVmsuY3BwJywKKyAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQ29tcGlsZXJWay5oJywKKyAgICAg
ICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQ29udGV4dFZrLmNwcCcsCisgICAgICAg
ICAgICAnbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbnRleHRWay5oJywKKyAgICAgICAgICAg
ICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRGV2aWNlVmsuY3BwJywKKyAgICAgICAgICAgICds
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRGV2aWNlVmsuaCcsCisgICAgICAgICAgICAnbGliQU5H
TEUvcmVuZGVyZXIvdnVsa2FuL0Rpc3BsYXlWay5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xF
L3JlbmRlcmVyL3Z1bGthbi9EaXNwbGF5VmsuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVu
ZGVyZXIvdnVsa2FuL0ZlbmNlTlZWay5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRl
cmVyL3Z1bGthbi9GZW5jZU5WVmsuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
dnVsa2FuL0ZlbmNlU3luY1ZrLmNwcCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
dnVsa2FuL0ZlbmNlU3luY1ZrLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL3Z1
bGthbi9GcmFtZWJ1ZmZlclZrLmNwcCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
dnVsa2FuL0ZyYW1lYnVmZmVyVmsuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
dnVsa2FuL0ltYWdlVmsuY3BwJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vSW1hZ2VWay5oJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUHJv
Z3JhbVZrLmNwcCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Byb2dy
YW1Way5oJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUXVlcnlWay5j
cHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9RdWVyeVZrLmgnLAor
ICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJidWZmZXJWay5jcHAn
LAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJidWZmZXJWay5o
JywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyZXJWay5jcHAn
LAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJlclZrLmgnLAor
ICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TYW1wbGVyVmsuY3BwJywKKyAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU2FtcGxlclZrLmgnLAorICAgICAg
ICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TaGFkZXJWay5jcHAnLAorICAgICAgICAg
ICAgJ2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TaGFkZXJWay5oJywKKyAgICAgICAgICAgICds
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU3VyZmFjZVZrLmNwcCcsCisgICAgICAgICAgICAnbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL1N1cmZhY2VWay5oJywKKyAgICAgICAgICAgICdsaWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vVGV4dHVyZVZrLmNwcCcsCisgICAgICAgICAgICAnbGliQU5HTEUv
cmVuZGVyZXIvdnVsa2FuL1RleHR1cmVWay5oJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4vVHJhbnNmb3JtRmVlZGJhY2tWay5jcHAnLAorICAgICAgICAgICAgJ2xpYkFO
R0xFL3JlbmRlcmVyL3Z1bGthbi9UcmFuc2Zvcm1GZWVkYmFja1ZrLmgnLAorICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9WZXJ0ZXhBcnJheVZrLmNwcCcsCisgICAgICAgICAg
ICAnbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1ZlcnRleEFycmF5VmsuaCcsCisgICAgICAgIF0s
CisgICAgICAgICdsaWJhbmdsZV9udWxsX3NvdXJjZXMnOgorICAgICAgICBbCisgICAgICAgICAg
ICAnbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9CdWZmZXJOVUxMLmNwcCcsCisgICAgICAgICAgICAn
bGliQU5HTEUvcmVuZGVyZXIvbnVsbC9CdWZmZXJOVUxMLmgnLAorICAgICAgICAgICAgJ2xpYkFO
R0xFL3JlbmRlcmVyL251bGwvQ29tcGlsZXJOVUxMLmNwcCcsCisgICAgICAgICAgICAnbGliQU5H
TEUvcmVuZGVyZXIvbnVsbC9Db21waWxlck5VTEwuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUv
cmVuZGVyZXIvbnVsbC9Db250ZXh0TlVMTC5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL251bGwvQ29udGV4dE5VTEwuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvbnVsbC9EZXZpY2VOVUxMLmNwcCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
bnVsbC9EZXZpY2VOVUxMLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwv
RGlzcGxheU5VTEwuY3BwJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxsL0Rp
c3BsYXlOVUxMLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRmVuY2VO
Vk5VTEwuY3BwJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxsL0ZlbmNlTlZO
VUxMLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRmVuY2VTeW5jTlVM
TC5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRmVuY2VTeW5jTlVM
TC5oJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxsL0ZyYW1lYnVmZmVyTlVM
TC5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRnJhbWVidWZmZXJO
VUxMLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvSW1hZ2VOVUxMLmNw
cCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9JbWFnZU5VTEwuaCcsCisg
ICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9QYXRoTlVMTC5jcHAnLAorICAgICAg
ICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUGF0aE5VTEwuaCcsCisgICAgICAgICAgICAn
bGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Qcm9ncmFtTlVMTC5jcHAnLAorICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL251bGwvUHJvZ3JhbU5VTEwuaCcsCisgICAgICAgICAgICAnbGliQU5H
TEUvcmVuZGVyZXIvbnVsbC9RdWVyeU5VTEwuY3BwJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci9udWxsL1F1ZXJ5TlVMTC5oJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJl
ci9udWxsL1JlbmRlcmJ1ZmZlck5VTEwuY3BwJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5k
ZXJlci9udWxsL1JlbmRlcmJ1ZmZlck5VTEwuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVu
ZGVyZXIvbnVsbC9TYW1wbGVyTlVMTC5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRl
cmVyL251bGwvU2FtcGxlck5VTEwuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
bnVsbC9TaGFkZXJOVUxMLmNwcCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbnVs
bC9TaGFkZXJOVUxMLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvU3Vy
ZmFjZU5VTEwuY3BwJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxsL1N1cmZh
Y2VOVUxMLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvVGV4dHVyZU5V
TEwuY3BwJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxsL1RleHR1cmVOVUxM
LmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvVHJhbnNmb3JtRmVlZGJh
Y2tOVUxMLmNwcCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9UcmFuc2Zv
cm1GZWVkYmFja05VTEwuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9W
ZXJ0ZXhBcnJheU5VTEwuY3BwJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxs
L1ZlcnRleEFycmF5TlVMTC5oJywKKyAgICAgICAgXSwKICAgICAgICAgJ2xpYmdsZXN2Ml9zb3Vy
Y2VzJzoKICAgICAgICAgWwogICAgICAgICAgICAgJ2NvbW1vbi9hbmdsZXV0aWxzLmgnLApAQCAt
NTE0LDYgKzY3NCw4IEBACiAgICAgICAgICAgICAnbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVz
XzJfMF9leHQuaCcsCiAgICAgICAgICAgICAnbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNf
MC5jcHAnLAogICAgICAgICAgICAgJ2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzAuaCcs
CisgICAgICAgICAgICAnbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMS5jcHAnLAorICAg
ICAgICAgICAgJ2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzEuaCcsCiAgICAgICAgICAg
ICAnbGliR0xFU3YyL2dsb2JhbF9zdGF0ZS5jcHAnLAogICAgICAgICAgICAgJ2xpYkdMRVN2Mi9n
bG9iYWxfc3RhdGUuaCcsCiAgICAgICAgICAgICAnbGliR0xFU3YyL2xpYkdMRVN2Mi5jcHAnLApA
QCAtNTQxLDYgKzcwMyw3IEBACiAgICAgICAgICAgICAgICAgJ3RyYW5zbGF0b3Jfc3RhdGljJywK
ICAgICAgICAgICAgICAgICAnY29tbWl0X2lkJywKICAgICAgICAgICAgICAgICAnYW5nbGVfY29t
bW9uJywKKyAgICAgICAgICAgICAgICAnYW5nbGVfaW1hZ2VfdXRpbCcsCiAgICAgICAgICAgICBd
LAogICAgICAgICAgICAgJ2luY2x1ZGVzJzogWyAnLi4vYnVpbGQvY29tbW9uX2RlZmluZXMuZ3lw
aScsIF0sCiAgICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzoKQEAgLTU1OCw2ICs3MjEsMTAgQEAK
ICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAnTElCQU5HTEVfSU1QTEVNRU5UQVRJT04n
LAogICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICdleHBvcnRfZGVwZW5kZW50X3NldHRpbmdz
JzoKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAnYW5nbGVfY29tbW9uJywKKyAgICAg
ICAgICAgIF0sCiAgICAgICAgICAgICAnZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5ncyc6CiAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6CkBAIC02MjMsNiArNzkw
LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0sCiAgICAgICAgICAgICAgICAg
ICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICB9XSwKKyAgICAgICAgICAgICAgICAgICAg
WydhbmdsZV9lbmFibGVfdnVsa2FuPT0xJywKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOgorICAgICAgICAgICAgICAgICAgICAgICAgWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBTkdMRV9FTkFCTEVfVlVMS0FOJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAg
ICAgICAgIF0sCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOgpAQCAt
NzU1LDYgKzkyOSwzMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICB9XSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIFsndXNlX296b25lPT0xJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnQU5HTEVfVVNFX09aT05FJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdzb3VyY2VzJzoKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8QChsaWJhbmdsZV9n
bF9lZ2xfc291cmNlcyknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPEAobGli
YW5nbGVfZ2xfZWdsX2RsX3NvdXJjZXMpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJzxAKGxpYmFuZ2xlX2dsX296b25lX3NvdXJjZXMpJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjZmxhZ3MnOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JzwhQCg8KHBrZy1jb25maWcpIC0tY2ZsYWdzIGxpYmRybSBnYm0pJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaW5rX3NldHRp
bmdzJzogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGRmbGFncyc6IFsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8IUAoPChwa2ctY29uZmlnKSAtLWxp
YnMtb25seS1MIC0tbGlicy1vbmx5LW90aGVyIGxpYmRybSBnYm0pJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xp
YnJhcmllcyc6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8IUAoPChw
a2ctY29uZmlnKSAtLWxpYnMtb25seS1sIGxpYmRybSBnYm0pIC1sZGwnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgICAgICAgICAgIFsnYW5n
bGVfbGlua19nbHg9PTEnLAogICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdsaW5rX3NldHRpbmdzJzoKQEAgLTc3OSw5ICs5NzgsOSBAQAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2xpYnJhcmllcyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICckKFNES1JPT1QpL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1ld29yaycsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnJChTREtST09UKS9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPU3VyZmFj
ZS5mcmFtZXdvcmsnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyQoU0RL
Uk9PVCkvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db2NvYS5mcmFtZXdvcmsnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyQoU0RLUk9PVCkvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9JT1N1cmZhY2UuZnJhbWV3b3JrJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICckKFNES1JPT1QpL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdM
LmZyYW1ld29yaycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJChTREtS
T09UKS9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrJywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9LApAQCAtNzk0LDYgKzk5MywyOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgfV0s
CiAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgfV0sCisgICAgICAgICAg
ICAgICAgWydhbmdsZV9lbmFibGVfdnVsa2FuPT0xJywKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICdzb3VyY2VzJzoKKyAgICAgICAgICAgICAgICAgICAgWworICAgICAg
ICAgICAgICAgICAgICAgICAgJzxAKGxpYmFuZ2xlX3Z1bGthbl9zb3VyY2VzKScsCisgICAgICAg
ICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICdkZWZpbmVzJzoKKyAgICAgICAg
ICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgJ0FOR0xFX0VOQUJMRV9WVUxL
QU4nLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIH1dLAorICAgICAg
ICAgICAgICAgIFsnYW5nbGVfZW5hYmxlX251bGw9PTEnLAorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgorICAgICAgICAgICAgICAgICAgICBbCisgICAg
ICAgICAgICAgICAgICAgICAgICAnPEAobGliYW5nbGVfbnVsbF9zb3VyY2VzKScsCisgICAgICAg
ICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICdkZWZpbmVzJzoKKyAgICAgICAg
ICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgJ0FOR0xFX0VOQUJMRV9OVUxM
JywKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICB9XSwKICAgICAgICAg
ICAgICAgICBbJ2FuZ2xlX2J1aWxkX3dpbnJ0PT0wIGFuZCBPUz09IndpbiInLAogICAgICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6CkBAIC04MjYsMTAg
KzEwNDcsNiBAQAogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgJ21zdnNf
cmVxdWlyZXNfaW1wb3J0bGlicmFyeScgOiAndHJ1ZScsCiAgICAgICAgICAgICAgICAgfV0sCi0g
ICAgICAgICAgICAgICAgWydhbmdsZV9idWlsZF93aW5waG9uZT09MScsCi0gICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICAnbXN2c19lbmFibGVfd2lucGhvbmUnIDogJzEnLAot
ICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgXSwKICAgICAgICAgfSwKICAgICBdLApJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9Db2xvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vQ29sb3IuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL0NvbG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIENvbG9yLmgg
OiBEZWZpbmVzIHRoZSBDb2xvciB0eXBlIHVzZWQgdGhyb3VnaG91dCB0aGUgQU5HTEUgbGlicmFy
aWVzCisKKyNpZm5kZWYgQ09NTU9OX0NPTE9SX0hfCisjZGVmaW5lIENPTU1PTl9DT0xPUl9IXwor
CituYW1lc3BhY2UgYW5nbGUKK3sKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQ29s
b3IKK3sKKyAgICBUIHJlZDsKKyAgICBUIGdyZWVuOworICAgIFQgYmx1ZTsKKyAgICBUIGFscGhh
OworCisgICAgQ29sb3IoKTsKKyAgICBDb2xvcihUIHIsIFQgZywgVCBiLCBUIGEpOworfTsKKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citib29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3I8VD4gJmEs
IGNvbnN0IENvbG9yPFQ+ICZiKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citib29sIG9wZXJh
dG9yIT0oY29uc3QgQ29sb3I8VD4gJmEsIGNvbnN0IENvbG9yPFQ+ICZiKTsKKwordHlwZWRlZiBD
b2xvcjxmbG9hdD4gQ29sb3JGOwordHlwZWRlZiBDb2xvcjxpbnQ+IENvbG9ySTsKK3R5cGVkZWYg
Q29sb3I8dW5zaWduZWQgaW50PiBDb2xvclVJOworCit9ICAvLyBuYW1lc3BhY2UgYW5nbGUKKwor
Ly8gVE9ETzogTW92ZSB0aGlzIGZ1bGx5IGludG8gdGhlIGFuZ2xlIG5hbWVzcGFjZQorbmFtZXNw
YWNlIGdsCit7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordXNpbmcgQ29sb3IgICA9IGFuZ2xl
OjpDb2xvcjxUPjsKK3VzaW5nIENvbG9yRiAgPSBhbmdsZTo6Q29sb3JGOwordXNpbmcgQ29sb3JJ
ICA9IGFuZ2xlOjpDb2xvckk7Cit1c2luZyBDb2xvclVJID0gYW5nbGU6OkNvbG9yVUk7CisKK30g
IC8vIG5hbWVzcGFjZSBnbAorCisjaW5jbHVkZSAiQ29sb3IuaW5sIgorCisjZW5kaWYgIC8vIENP
TU1PTl9DT0xPUl9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9D
b2xvci5pbmwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1v
bi9Db2xvci5pbmwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbW1vbi9Db2xvci5pbmwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNyBAQAorLy8KKy8v
IENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisKKy8vIENvbG9yLmlubCA6IElubGluZSBkZWZpbml0aW9ucyBvZiBzb21lIGZ1bmN0
aW9ucyBmcm9tIENvbG9yLmgKKworbmFtZXNwYWNlIGFuZ2xlCit7CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgorQ29sb3I8VD46OkNvbG9yKCkgOiBDb2xvcigwLCAwLCAwLCAwKQoreworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK0NvbG9yPFQ+OjpDb2xvcihUIHIsIFQgZywgVCBiLCBUIGEp
IDogcmVkKHIpLCBncmVlbihnKSwgYmx1ZShiKSwgYWxwaGEoYSkKK3sKK30KKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Citib29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3I8VD4gJmEsIGNvbnN0IENv
bG9yPFQ+ICZiKQoreworICAgIHJldHVybiBhLnJlZCA9PSBiLnJlZCAmJgorICAgICAgICAgICBh
LmdyZWVuID09IGIuZ3JlZW4gJiYKKyAgICAgICAgICAgYS5ibHVlID09IGIuYmx1ZSAmJgorICAg
ICAgICAgICBhLmFscGhhID09IGIuYWxwaGE7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IENvbG9yPFQ+ICZhLCBjb25zdCBDb2xvcjxUPiAmYikKK3sK
KyAgICByZXR1cm4gIShhID09IGIpOworfQorCit9ICAvLyBuYW1lc3BhY2UgYW5nbGUKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vT3B0aW9uYWwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL09wdGlvbmFsLmgJKHJldmlz
aW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vT3B0aW9u
YWwuaAkod29ya2luZyBjb3B5KQpAQCAtMTgsMTAgKzE4LDcgQEAgc3RydWN0IE9wdGlvbmFsCiAg
ICAgICAgICAgbVZhbHVlKFQoKSkKICAgICB7fQogCi0gICAgZXhwbGljaXQgT3B0aW9uYWwoY29u
c3QgVCAmdmFsdWVJbikKLSAgICAgICAgOiBtVmFsaWQodHJ1ZSksCi0gICAgICAgICAgbVZhbHVl
KHZhbHVlSW4pCi0gICAge30KKyAgICBPcHRpb25hbChjb25zdCBUICZ2YWx1ZUluKSA6IG1WYWxp
ZCh0cnVlKSwgbVZhbHVlKHZhbHVlSW4pIHt9CiAKICAgICBPcHRpb25hbChjb25zdCBPcHRpb25h
bCAmb3RoZXIpCiAgICAgICAgIDogbVZhbGlkKG90aGVyLm1WYWxpZCksCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2FuZ2xldXRpbHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vYW5nbGV1dGlscy5jcHAJKHJldmlz
aW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vYW5nbGV1
dGlscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDEwIEBAIHNpemVfdCBGb3JtYXRT
dHJpbmdJbnRvVmVjdG9yKGNvbnN0IGNoYXIKIAogc3RkOjpzdHJpbmcgRm9ybWF0U3RyaW5nKGNv
bnN0IGNoYXIgKmZtdCwgdmFfbGlzdCB2YXJhcmcpCiB7Ci0gICAgc3RhdGljIGF1dG8mIGJ1ZmZl
ciA9ICpuZXcgc3RkOjp2ZWN0b3I8Y2hhcj4oNTEyKTsKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMg
cHVzaAorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2V4aXQtdGltZS1kZXN0cnVj
dG9ycyIKKyAgICBzdGF0aWMgc3RkOjp2ZWN0b3I8Y2hhcj4gYnVmZmVyKDUxMik7CisjcHJhZ21h
IEdDQyBkaWFnbm9zdGljIHBvcAogCiAgICAgc2l6ZV90IGxlbiA9IEZvcm1hdFN0cmluZ0ludG9W
ZWN0b3IoZm10LCB2YXJhcmcsIGJ1ZmZlcik7CiAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCZidWZm
ZXJbMF0sIGxlbik7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2Fu
Z2xldXRpbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
bW9uL2FuZ2xldXRpbHMuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbW1vbi9hbmdsZXV0aWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEwICsz
NCwxMCBAQCBjbGFzcyBOb25Db3B5YWJsZQogfTsKIAogZXh0ZXJuIGNvbnN0IHVpbnRwdHJfdCBE
aXJ0eVBvaW50ZXI7Ci19Cit9ICAvLyBuYW1lc3BhY2UgYW5nbGUKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHNpemVfdCBOPgotaW5saW5lIHNpemVfdCBBcnJheVNpemUoVCgmKVtOXSkKK2NvbnN0
ZXhwciBpbmxpbmUgc2l6ZV90IEFycmF5U2l6ZShUICgmKVtOXSkKIHsKICAgICByZXR1cm4gTjsK
IH0KQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBTYWZlUmVsZWFzZShUJiByZXNvdXJjZSkKIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIFNhZmVEZWxldGUoVComIHJlc291cmNlKQordm9p
ZCBTYWZlRGVsZXRlKFQgKiZyZXNvdXJjZSkKIHsKICAgICBkZWxldGUgcmVzb3VyY2U7CiAgICAg
cmVzb3VyY2UgPSBOVUxMOwpAQCAtMTE2LDcgKzExNiwxMCBAQCBpbmxpbmUgYm9vbCBJc01hc2tG
bGFnU2V0KFQgbWFzaywgVCBmbGFnCiAKIGlubGluZSBjb25zdCBjaGFyKiBNYWtlU3RhdGljU3Ry
aW5nKGNvbnN0IHN0ZDo6c3RyaW5nICZzdHIpCiB7Ci0gICAgc3RhdGljIGF1dG8mIHN0cmluZ3Mg
PSAqbmV3IHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPjsKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVz
aAorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2V4aXQtdGltZS1kZXN0cnVjdG9y
cyIKKyAgICBzdGF0aWMgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IHN0cmluZ3M7CisjcHJhZ21hIEdD
QyBkaWFnbm9zdGljIHBvcAogICAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPjo6aXRlcmF0b3IgaXQg
PSBzdHJpbmdzLmZpbmQoc3RyKTsKICAgICBpZiAoaXQgIT0gc3RyaW5ncy5lbmQoKSkKICAgICB7
CkBAIC0xNTYsMTEgKzE1OSwyMCBAQCBzaXplX3QgRm9ybWF0U3RyaW5nSW50b1ZlY3Rvcihjb25z
dCBjaGFyCiBzdGQ6OnN0cmluZyBGb3JtYXRTdHJpbmcoY29uc3QgY2hhciAqZm10LCB2YV9saXN0
IHZhcmFyZyk7CiBzdGQ6OnN0cmluZyBGb3JtYXRTdHJpbmcoY29uc3QgY2hhciAqZm10LCAuLi4p
OwogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0ZDo6c3RyaW5nIFRvU3RyaW5nKGNvbnN0IFQg
JnZhbHVlKQoreworICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBvOworICAgIG8gPDwgdmFsdWU7Cisg
ICAgcmV0dXJuIG8uc3RyKCk7Cit9CisKIC8vIHNucHJpbnRmIGlzIG5vdCBkZWZpbmVkIHdpdGgg
TVNWQyBwcmlvciB0byB0byBtc3ZjMTQKICNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZF
UiA8IDE5MDAKICNkZWZpbmUgc25wcmludGYgX3NucHJpbnRmCiAjZW5kaWYKIAorI2RlZmluZSBH
TF9CR1I1NjVfQU5HTEVYIDB4NkFCQgogI2RlZmluZSBHTF9CR1JBNF9BTkdMRVggMHg2QUJDCiAj
ZGVmaW5lIEdMX0JHUjVfQTFfQU5HTEVYIDB4NkFCRAogI2RlZmluZSBHTF9JTlRfNjRfQU5HTEVY
IDB4NkFCRQpAQCAtMTY5LDQgKzE4MSwxMCBAQCBzdGQ6OnN0cmluZyBGb3JtYXRTdHJpbmcoY29u
c3QgY2hhciAqZm10CiAvLyBIaWRkZW4gZW51bSBmb3IgdGhlIE5VTEwgRDNEIGRldmljZSB0eXBl
LgogI2RlZmluZSBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfTlVMTF9BTkdMRSAweDZB
QzAKIAorI2RlZmluZSBBTkdMRV9UUllfQ0hFQ0tFRF9NQVRIKHJlc3VsdCkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghcmVzdWx0LklzVmFsaWQoKSkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiSW50ZWdlciBvdmVyZmxv
dy4iKTsgXAorICAgIH0KKwogI2VuZGlmIC8vIENPTU1PTl9BTkdMRVVUSUxTX0hfCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmNwcAkocmV2aXNpb24g
MjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9kZWJ1Zy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTcsMTkgKzcsNTQgQEAKIC8vIGRlYnVnLmNwcDogRGVidWdnaW5n
IHV0aWxpdGllcy4KIAogI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgotI2luY2x1ZGUgImNvbW1v
bi9wbGF0Zm9ybS5oIgotI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCiAKICNpbmNsdWRl
IDxzdGRhcmcuaD4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0jaW5jbHVkZSA8ZnN0cmVhbT4KKwogI2lu
Y2x1ZGUgPGNzdGRpbz4KKyNpbmNsdWRlIDxmc3RyZWFtPgorI2luY2x1ZGUgPGlvc3RyZWFtPgor
I2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisjaW5j
bHVkZSAiY29tbW9uL3BsYXRmb3JtLmgiCisjaW5jbHVkZSAiY29tbW9uL09wdGlvbmFsLmgiCiAK
IG5hbWVzcGFjZSBnbAogewogCiBuYW1lc3BhY2UKIHsKKworY2xhc3MgRm9ybWF0dGVkU3RyaW5n
IGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCit7CisgIHB1YmxpYzoKKyAgICBGb3JtYXR0ZWRT
dHJpbmcoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IHZhcmFyZykgOiBtRm9ybWF0KGZvcm1h
dCkKKyAgICB7CisgICAgICAgIHZhX2NvcHkobVZhckFyZywgdmFyYXJnKTsKKyAgICB9CisKKyAg
ICBjb25zdCBjaGFyICpjX3N0cigpIHsgcmV0dXJuIHN0cigpLmNfc3RyKCk7IH0KKworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZzdHIoKQorICAgIHsKKyAgICAgICAgaWYgKCFtTWVzc2FnZS52YWxp
ZCgpKQorICAgICAgICB7CisgICAgICAgICAgICBtTWVzc2FnZSA9IEZvcm1hdFN0cmluZyhtRm9y
bWF0LCBtVmFyQXJnKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbU1lc3NhZ2UudmFsdWUo
KTsKKyAgICB9CisKKyAgICBzaXplX3QgbGVuZ3RoKCkKKyAgICB7CisgICAgICAgIGNfc3RyKCk7
CisgICAgICAgIHJldHVybiBtTWVzc2FnZS52YWx1ZSgpLmxlbmd0aCgpOworICAgIH0KKworICBw
cml2YXRlOgorICAgIGNvbnN0IGNoYXIgKm1Gb3JtYXQ7CisgICAgdmFfbGlzdCBtVmFyQXJnOwor
ICAgIE9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBtTWVzc2FnZTsKK307CiBlbnVtIERlYnVnVHJhY2VP
dXRwdXRUeXBlCiB7CiAgICBEZWJ1Z1RyYWNlT3V0cHV0VHlwZU5vbmUsCkBAIC0zNCw3ICs2OSwx
MCBAQCB2b2lkIG91dHB1dChib29sIHRyYWNlSW5EZWJ1Z09ubHksIE1lc3NhCiB7CiAgICAgaWYg
KERlYnVnQW5ub3RhdGlvbnNBY3RpdmUoKSkKICAgICB7Ci0gICAgICAgIHN0YXRpYyBhdXRvJiBi
dWZmZXIgPSAqbmV3IHN0ZDo6dmVjdG9yPGNoYXI+KDUxMik7CisjcHJhZ21hIEdDQyBkaWFnbm9z
dGljIHB1c2gKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdleGl0LXRpbWUtZGVz
dHJ1Y3RvcnMiCisgICAgICAgIHN0YXRpYyBzdGQ6OnZlY3RvcjxjaGFyPiBidWZmZXIoNTEyKTsK
KyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCiAgICAgICAgIHNpemVfdCBsZW4gPSBGb3JtYXRT
dHJpbmdJbnRvVmVjdG9yKGZvcm1hdCwgdmFyYXJnLCBidWZmZXIpOwogICAgICAgICBzdGQ6Ondz
dHJpbmcgZm9ybWF0dGVkV2lkZU1lc3NhZ2UoYnVmZmVyLmJlZ2luKCksIGJ1ZmZlci5iZWdpbigp
ICsgbGVuKTsKIApAQCAtNTIsMTkgKzkwLDE1IEBAIHZvaWQgb3V0cHV0KGJvb2wgdHJhY2VJbkRl
YnVnT25seSwgTWVzc2EKICAgICAgICAgfQogICAgIH0KIAotICAgIHN0ZDo6c3RyaW5nIGZvcm1h
dHRlZE1lc3NhZ2U7Ci0gICAgVU5VU0VEX1ZBUklBQkxFKGZvcm1hdHRlZE1lc3NhZ2UpOworICAg
IEZvcm1hdHRlZFN0cmluZyBmb3JtYXR0ZWRNZXNzYWdlKGZvcm1hdCwgdmFyYXJnKTsKIAotI2lm
ICFkZWZpbmVkKE5ERUJVRykgJiYgZGVmaW5lZChfTVNDX1ZFUikKICAgICBpZiAobWVzc2FnZVR5
cGUgPT0gTUVTU0FHRV9FUlIpCiAgICAgewotICAgICAgICBpZiAoZm9ybWF0dGVkTWVzc2FnZS5l
bXB0eSgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3JtYXR0ZWRNZXNzYWdlID0gRm9ybWF0
U3RyaW5nKGZvcm1hdCwgdmFyYXJnKTsKLSAgICAgICAgfQorICAgICAgICBzdGQ6OmNlcnIgPDwg
Zm9ybWF0dGVkTWVzc2FnZS5jX3N0cigpOworI2lmICFkZWZpbmVkKE5ERUJVRykgJiYgZGVmaW5l
ZChfTVNDX1ZFUikKICAgICAgICAgT3V0cHV0RGVidWdTdHJpbmdBKGZvcm1hdHRlZE1lc3NhZ2Uu
Y19zdHIoKSk7CisjZW5kaWYgIC8vICFkZWZpbmVkKE5ERUJVRykgJiYgZGVmaW5lZChfTVNDX1ZF
UikKICAgICB9Ci0jZW5kaWYKIAogI2lmIGRlZmluZWQoQU5HTEVfRU5BQkxFX0RFQlVHX1RSQUNF
KQogI2lmIGRlZmluZWQoTkRFQlVHKQpAQCAtNzIsMTIgKzEwNiw3IEBAIHZvaWQgb3V0cHV0KGJv
b2wgdHJhY2VJbkRlYnVnT25seSwgTWVzc2EKICAgICB7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0jZW5kaWYgLy8gTkRFQlVHCi0gICAgaWYgKGZvcm1hdHRlZE1lc3NhZ2UuZW1wdHkoKSkKLSAg
ICB7Ci0gICAgICAgIGZvcm1hdHRlZE1lc3NhZ2UgPSBGb3JtYXRTdHJpbmcoZm9ybWF0LCB2YXJh
cmcpOwotICAgIH0KLQorI2VuZGlmICAvLyBOREVCVUcKICAgICBzdGF0aWMgc3RkOjpvZnN0cmVh
bSBmaWxlKFRSQUNFX09VVFBVVF9GSUxFLCBzdGQ6Om9mc3RyZWFtOjphcHApOwogICAgIGlmIChm
aWxlKQogICAgIHsKQEAgLTg3LDkgKzExNiw5IEBAIHZvaWQgb3V0cHV0KGJvb2wgdHJhY2VJbkRl
YnVnT25seSwgTWVzc2EKIAogI2lmIGRlZmluZWQoQU5HTEVfRU5BQkxFX0RFQlVHX1RSQUNFX1RP
X0RFQlVHR0VSKQogICAgIE91dHB1dERlYnVnU3RyaW5nQShmb3JtYXR0ZWRNZXNzYWdlLmNfc3Ry
KCkpOwotI2VuZGlmIC8vIEFOR0xFX0VOQUJMRV9ERUJVR19UUkFDRV9UT19ERUJVR0dFUgorI2Vu
ZGlmICAvLyBBTkdMRV9FTkFCTEVfREVCVUdfVFJBQ0VfVE9fREVCVUdHRVIKIAotI2VuZGlmIC8v
IEFOR0xFX0VOQUJMRV9ERUJVR19UUkFDRQorI2VuZGlmICAvLyBBTkdMRV9FTkFCTEVfREVCVUdf
VFJBQ0UKIH0KIAogfSAvLyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21tb24vZGVidWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tbW9uL2RlYnVnLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21tb24vZGVidWcuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTMgKzU3
LDE2IEBAIHZvaWQgSW5pdGlhbGl6ZURlYnVnQW5ub3RhdGlvbnMoRGVidWdBbm4KIHZvaWQgVW5p
bml0aWFsaXplRGVidWdBbm5vdGF0aW9ucygpOwogYm9vbCBEZWJ1Z0Fubm90YXRpb25zQWN0aXZl
KCk7CiAKLX0KK30gIC8vIG5hbWVzcGFjZSBnbAogCiAjaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVf
REVCVUdfVFJBQ0UpIHx8IGRlZmluZWQoQU5HTEVfRU5BQkxFX0RFQlVHX0FOTk9UQVRJT05TKQog
I2RlZmluZSBBTkdMRV9UUkFDRV9FTkFCTEVECiAjZW5kaWYKIAogI2RlZmluZSBBTkdMRV9FTVBU
WV9TVEFURU1FTlQgZm9yICg7OykgYnJlYWsKKyNpZiAhZGVmaW5lZChOREVCVUcpIHx8IGRlZmlu
ZWQoQU5HTEVfRU5BQkxFX1JFTEVBU0VfQVNTRVJUUykKKyNkZWZpbmUgQU5HTEVfRU5BQkxFX0FT
U0VSVFMKKyNlbmRpZgogCiAvLyBBIG1hY3JvIHRvIG91dHB1dCBhIHRyYWNlIG9mIGEgZnVuY3Rp
b24gY2FsbCBhbmQgaXRzIGFyZ3VtZW50cyB0byB0aGUgZGVidWdnaW5nIGxvZwogI2lmIGRlZmlu
ZWQoQU5HTEVfVFJBQ0VfRU5BQkxFRCkKQEAgLTgwLDcgKzgzLDcgQEAgYm9vbCBEZWJ1Z0Fubm90
YXRpb25zQWN0aXZlKCk7CiAjZW5kaWYKIAogLy8gQSBtYWNybyB0byBvdXRwdXQgYSBmdW5jdGlv
biBjYWxsIGFuZCBpdHMgYXJndW1lbnRzIHRvIHRoZSBkZWJ1Z2dpbmcgbG9nLCBpbiBjYXNlIG9m
IGVycm9yLgotI2lmIGRlZmluZWQoQU5HTEVfVFJBQ0VfRU5BQkxFRCkKKyNpZiBkZWZpbmVkKEFO
R0xFX1RSQUNFX0VOQUJMRUQpIHx8IGRlZmluZWQoQU5HTEVfRU5BQkxFX0FTU0VSVFMpCiAjZGVm
aW5lIEVSUihtZXNzYWdlLCAuLi4pIGdsOjp0cmFjZShmYWxzZSwgZ2w6Ok1FU1NBR0VfRVJSLCAi
ZXJyOiAlcyglZCk6ICIgbWVzc2FnZSAiXG4iLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fLCAjI19f
VkFfQVJHU19fKQogI2Vsc2UKICNkZWZpbmUgRVJSKG1lc3NhZ2UsIC4uLikgKHZvaWQoMCkpCkBA
IC0xMDEsMTMgKzEwNCwyNSBAQCBib29sIERlYnVnQW5ub3RhdGlvbnNBY3RpdmUoKTsKICN1bmRl
ZiBBTkdMRV9UUkFDRV9FTkFCTEVECiAjZW5kaWYKIAotLy8gQSBtYWNybyBhc3NlcnRpbmcgYSBj
b25kaXRpb24gYW5kIG91dHB1dHRpbmcgZmFpbHVyZXMgdG8gdGhlIGRlYnVnIGxvZworI2lmIGRl
ZmluZWQoQ09NUElMRVJfR0NDKSB8fCBkZWZpbmVkKF9fY2xhbmdfXykKKyNkZWZpbmUgQU5HTEVf
Q1JBU0goKSBfX2J1aWx0aW5fdHJhcCgpCisjZWxzZQorI2RlZmluZSBBTkdMRV9DUkFTSCgpICgo
dm9pZCkoKih2b2xhdGlsZSBjaGFyICopMCA9IDApKQorI2VuZGlmCisKICNpZiAhZGVmaW5lZChO
REVCVUcpCi0jZGVmaW5lIEFTU0VSVChleHByZXNzaW9uKSB7IFwKLSAgICBpZighKGV4cHJlc3Np
b24pKSBcCi0gICAgICAgIEVSUigiXHQhIEFzc2VydCBmYWlsZWQgaW4gJXMoJWQpOiAlc1xuIiwg
X19GVU5DVElPTl9fLCBfX0xJTkVfXywgI2V4cHJlc3Npb24pOyBcCi0gICAgICAgIGFzc2VydChl
eHByZXNzaW9uKTsgXAotICAgIH0gQU5HTEVfRU1QVFlfU1RBVEVNRU5UCisjZGVmaW5lIEFOR0xF
X0FTU0VSVF9JTVBMKGV4cHJlc3Npb24pIGFzc2VydChleHByZXNzaW9uKQorI2Vsc2UKKy8vIFRP
RE8oam1hZGlsbCk6IERldGVjdCBpZiBkZWJ1Z2dlciBpcyBhdHRhY2hlZCBhbmQgYnJlYWsuCisj
ZGVmaW5lIEFOR0xFX0FTU0VSVF9JTVBMKGV4cHJlc3Npb24pIEFOR0xFX0NSQVNIKCkKKyNlbmRp
ZiAgLy8gIWRlZmluZWQoTkRFQlVHKQorCisvLyBBIG1hY3JvIGFzc2VydGluZyBhIGNvbmRpdGlv
biBhbmQgb3V0cHV0dGluZyBmYWlsdXJlcyB0byB0aGUgZGVidWcgbG9nCisjaWYgZGVmaW5lZChB
TkdMRV9FTkFCTEVfQVNTRVJUUykKKyNkZWZpbmUgQVNTRVJUKGV4cHJlc3Npb24pICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIChleHByZXNzaW9uID8gc3RhdGljX2Nhc3Q8dm9pZD4oMCkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgICAgICAgICAgOiAoRVJSKCJcdCEgQXNzZXJ0IGZhaWxlZCBpbiAlcyglZCk6ICVzXG4iLCBf
X0ZVTkNUSU9OX18sIF9fTElORV9fLCAjZXhwcmVzc2lvbiksIFwKKyAgICAgICAgICAgICAgICAg
ICBBTkdMRV9BU1NFUlRfSU1QTChleHByZXNzaW9uKSkpCiAjZGVmaW5lIFVOVVNFRF9BU1NFUlRJ
T05fVkFSSUFCTEUodmFyaWFibGUpCiAjZWxzZQogI2RlZmluZSBBU1NFUlQoZXhwcmVzc2lvbikg
KHZvaWQoMCkpCkBAIC0xMjIsMjkgKzEzNywyMCBAQCBib29sIERlYnVnQW5ub3RhdGlvbnNBY3Rp
dmUoKTsKICNkZWZpbmUgTk9BU1NFUlRfVU5JTVBMRU1FTlRFRCAxCiAjZW5kaWYKIAotLy8gRGVm
aW5lIE5PQVNTRVJUX1VOSU1QTEVNRU5URUQgdG8gbm9uIHplcm8gdG8gc2tpcCB0aGUgYXNzZXJ0
IGZhaWwgaW4gdGhlIHVuaW1wbGVtZW50ZWQgY2hlY2tzCiAvLyBUaGlzIHdpbGwgYWxsb3cgdXMg
dG8gdGVzdCB3aXRoIHNvbWUgYXV0b21hdGVkIHRlc3Qgc3VpdGVzIChlZyBkRVFQKSB3aXRob3V0
IGNyYXNoaW5nCiAjaWZuZGVmIE5PQVNTRVJUX1VOSU1QTEVNRU5URUQKICNkZWZpbmUgTk9BU1NF
UlRfVU5JTVBMRU1FTlRFRCAwCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKE5ERUJVRykKLSNkZWZp
bmUgVU5JTVBMRU1FTlRFRCgpIHsgXAotICAgIEZJWE1FKCJcdCEgVW5pbXBsZW1lbnRlZDogJXMo
JWQpXG4iLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fKTsgXAotICAgIGFzc2VydChOT0FTU0VSVF9V
TklNUExFTUVOVEVEKTsgXAotICAgIH0gQU5HTEVfRU1QVFlfU1RBVEVNRU5UCi0jZWxzZQotICAg
ICNkZWZpbmUgVU5JTVBMRU1FTlRFRCgpIEZJWE1FKCJcdCEgVW5pbXBsZW1lbnRlZDogJXMoJWQp
XG4iLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fKQotI2VuZGlmCisjZGVmaW5lIFVOSU1QTEVNRU5U
RUQoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgRklYTUUoIlx0ISBVbmltcGxlbWVudGVkOiAlcyglZClcbiIs
IF9fRlVOQ1RJT05fXywgX19MSU5FX18pOyBcCisgICAgICAgIEFTU0VSVChOT0FTU0VSVF9VTklN
UExFTUVOVEVEKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICBBTkdMRV9FTVBUWV9TVEFURU1FTlQKIAogLy8gQSBtYWNybyBmb3IgY29kZSB3aGlj
aCBpcyBub3QgZXhwZWN0ZWQgdG8gYmUgcmVhY2hlZCB1bmRlciB2YWxpZCBhc3N1bXB0aW9ucwot
I2lmICFkZWZpbmVkKE5ERUJVRykKLSNkZWZpbmUgVU5SRUFDSEFCTEUoKSB7IFwKLSAgICBFUlIo
Ilx0ISBVbnJlYWNoYWJsZSByZWFjaGVkOiAlcyglZClcbiIsIF9fRlVOQ1RJT05fXywgX19MSU5F
X18pOyBcCi0gICAgYXNzZXJ0KGZhbHNlKTsgXAotICAgIH0gQU5HTEVfRU1QVFlfU1RBVEVNRU5U
Ci0jZWxzZQotICAgICNkZWZpbmUgVU5SRUFDSEFCTEUoKSBFUlIoIlx0ISBVbnJlYWNoYWJsZSBy
ZWFjaGVkOiAlcyglZClcbiIsIF9fRlVOQ1RJT05fXywgX19MSU5FX18pCi0jZW5kaWYKKyNkZWZp
bmUgVU5SRUFDSEFCTEUoKSBcCisgICAgKEVSUigiXHQhIFVucmVhY2hhYmxlIHJlYWNoZWQ6ICVz
KCVkKVxuIiwgX19GVU5DVElPTl9fLCBfX0xJTkVfXyksIEFTU0VSVChmYWxzZSkpCiAKICNlbmRp
ZiAgIC8vIENPTU1PTl9ERUJVR19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbW1vbi9tYXRodXRpbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbW1vbi9tYXRodXRpbC5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vbWF0aHV0aWwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSwxOSArMzEsMTggQEAgc3RhdGljIGNvbnN0IGludCBnX3NoYXJlZGV4cF9tYW50aXNzYWJp
dAogLy8gRW1heCBpcyB0aGUgbWF4aW11bSBhbGxvd2VkIGJpYXNlZCBleHBvbmVudCB2YWx1ZSAo
MzEpCiBzdGF0aWMgY29uc3QgaW50IGdfc2hhcmVkZXhwX21heGV4cG9uZW50ID0gMzE7CiAKLXN0
YXRpYyBmbG9hdCBnX3NoYXJlZGV4cF9tYXgoKQotewotICAgIHN0YXRpYyBmbG9hdCBzaGFyZWRl
eHBfbWF4ID0gKChwb3dmKDIuMGYsIGdfc2hhcmVkZXhwX21hbnRpc3NhYml0cykgLSAxKSAvCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvd2YoMi4wZiwgZ19zaGFyZWRleHBf
bWFudGlzc2FiaXRzKSkgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG93Zigy
LjBmLCBnX3NoYXJlZGV4cF9tYXhleHBvbmVudCAtIGdfc2hhcmVkZXhwX2JpYXMpOwotICAgIHJl
dHVybiBzaGFyZWRleHBfbWF4OwotfQorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisjcHJh
Z21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZ2xvYmFsLWNvbnN0cnVjdG9ycyIKK3N0YXRp
YyBjb25zdCBmbG9hdCBnX3NoYXJlZGV4cF9tYXggPSAoKHBvdygyLjBmLCBnX3NoYXJlZGV4cF9t
YW50aXNzYWJpdHMpIC0gMSkgLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcG93KDIuMGYsIGdfc2hhcmVkZXhwX21hbnRpc3NhYml0cykpICoKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwb3coMi4wZiwgZ19zaGFyZWRleHBfbWF4ZXhwb25lbnQg
LSBnX3NoYXJlZGV4cF9iaWFzKTsKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCiAKIHVuc2ln
bmVkIGludCBjb252ZXJ0UkdCRmxvYXRzVG85OTlFNShmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBm
bG9hdCBibHVlKQogewotICAgIGNvbnN0IGZsb2F0IHJlZF9jID0gc3RkOjptYXg8ZmxvYXQ+KDAs
IHN0ZDo6bWluKGdfc2hhcmVkZXhwX21heCgpLCByZWQpKTsKLSAgICBjb25zdCBmbG9hdCBncmVl
bl9jID0gc3RkOjptYXg8ZmxvYXQ+KDAsIHN0ZDo6bWluKGdfc2hhcmVkZXhwX21heCgpLCBncmVl
bikpOwotICAgIGNvbnN0IGZsb2F0IGJsdWVfYyA9IHN0ZDo6bWF4PGZsb2F0PigwLCBzdGQ6Om1p
bihnX3NoYXJlZGV4cF9tYXgoKSwgYmx1ZSkpOworICAgIGNvbnN0IGZsb2F0IHJlZF9jID0gc3Rk
OjptYXg8ZmxvYXQ+KDAsIHN0ZDo6bWluKGdfc2hhcmVkZXhwX21heCwgcmVkKSk7CisgICAgY29u
c3QgZmxvYXQgZ3JlZW5fYyA9IHN0ZDo6bWF4PGZsb2F0PigwLCBzdGQ6Om1pbihnX3NoYXJlZGV4
cF9tYXgsIGdyZWVuKSk7CisgICAgY29uc3QgZmxvYXQgYmx1ZV9jID0gc3RkOjptYXg8ZmxvYXQ+
KDAsIHN0ZDo6bWluKGdfc2hhcmVkZXhwX21heCwgYmx1ZSkpOwogCiAgICAgY29uc3QgZmxvYXQg
bWF4X2MgPSBzdGQ6Om1heDxmbG9hdD4oc3RkOjptYXg8ZmxvYXQ+KHJlZF9jLCBncmVlbl9jKSwg
Ymx1ZV9jKTsKICAgICBjb25zdCBmbG9hdCBleHBfcCA9IHN0ZDo6bWF4PGZsb2F0PigtZ19zaGFy
ZWRleHBfYmlhcyAtIDEsIGZsb29yKGxvZyhtYXhfYykpKSArIDEgKyBnX3NoYXJlZGV4cF9iaWFz
OwpAQCAtNjgsNCArNjcsNCBAQCB2b2lkIGNvbnZlcnQ5OTlFNXRvUkdCRmxvYXRzKHVuc2lnbmVk
IGluCiAgICAgKmJsdWUgPSBpbnB1dERhdGEtPkIgKiBwb3coMi4wZiwgKGludClpbnB1dERhdGEt
PkUgLSBnX3NoYXJlZGV4cF9iaWFzIC0gZ19zaGFyZWRleHBfbWFudGlzc2FiaXRzKTsKIH0KIAot
fQorfSAgLy8gbmFtZXNwYWNlIGdsCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tbW9uL21hdGh1dGlsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbW1vbi9tYXRodXRpbC5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tbW9uL21hdGh1dGlsLmgJKHdvcmtpbmcgY29weSkKQEAgLTksOSAr
OSw2IEBACiAjaWZuZGVmIENPTU1PTl9NQVRIVVRJTF9IXwogI2RlZmluZSBDT01NT05fTUFUSFVU
SUxfSF8KIAotI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgotI2luY2x1ZGUgImNvbW1vbi9wbGF0
Zm9ybS5oIgotCiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNs
dWRlIDxtYXRoLmg+CkBAIC0xOSw2ICsxNiwxNyBAQAogI2luY2x1ZGUgPHN0ZGludC5oPgogI2lu
Y2x1ZGUgPHN0ZGxpYi5oPgogCisjaW5jbHVkZSA8YmFzZS9udW1lcmljcy9zYWZlX21hdGguaD4K
KworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorI2luY2x1ZGUgImNvbW1vbi9wbGF0Zm9ybS5o
IgorCituYW1lc3BhY2UgYW5nbGUKK3sKK3VzaW5nIGJhc2U6OkNoZWNrZWROdW1lcmljOwordXNp
bmcgYmFzZTo6SXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlwZTsKK30KKwogbmFtZXNwYWNlIGds
CiB7CiAKQEAgLTM2LDYgKzQ0LDE1IEBAIHN0cnVjdCBWZWN0b3I0CiAgICAgZmxvYXQgdzsKIH07
CiAKK3N0cnVjdCBWZWN0b3IyCit7CisgICAgVmVjdG9yMigpIHt9CisgICAgVmVjdG9yMihmbG9h
dCB4LCBmbG9hdCB5KSA6IHgoeCksIHkoeSkge30KKworICAgIGZsb2F0IHg7CisgICAgZmxvYXQg
eTsKK307CisKIGlubGluZSBib29sIGlzUG93MihpbnQgeCkKIHsKICAgICByZXR1cm4gKHggJiAo
eCAtIDEpKSA9PSAwICYmICh4ICE9IDApOwpAQCAtMTI3LDcgKzE0NCw3IEBAIGlubGluZSB1bnNp
Z25lZCBpbnQgdW5vcm0oZmxvYXQgeCkKIAogaW5saW5lIGJvb2wgc3VwcG9ydHNTU0UyKCkKIHsK
LSNpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX1dJTkRPV1MpICYmICFkZWZpbmVkKF9NX0FSTSkK
KyNpZiBkZWZpbmVkKEFOR0xFX1VTRV9TU0UpCiAgICAgc3RhdGljIGJvb2wgY2hlY2tlZCA9IGZh
bHNlOwogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzID0gZmFsc2U7CiAKQEAgLTEzNiwyMSArMTUz
LDIyIEBAIGlubGluZSBib29sIHN1cHBvcnRzU1NFMigpCiAgICAgICAgIHJldHVybiBzdXBwb3J0
czsKICAgICB9CiAKLSAgICBpbnQgaW5mb1s0XTsKLSAgICBfX2NwdWlkKGluZm8sIDApOwotCi0g
ICAgaWYgKGluZm9bMF0gPj0gMSkKKyNpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX1dJTkRPV1Mp
ICYmICFkZWZpbmVkKF9NX0FSTSkKICAgICB7Ci0gICAgICAgIF9fY3B1aWQoaW5mbywgMSk7Cisg
ICAgICAgIGludCBpbmZvWzRdOworICAgICAgICBfX2NwdWlkKGluZm8sIDApOwogCi0gICAgICAg
IHN1cHBvcnRzID0gKGluZm9bM10gPj4gMjYpICYgMTsKLSAgICB9CisgICAgICAgIGlmIChpbmZv
WzBdID49IDEpCisgICAgICAgIHsKKyAgICAgICAgICAgIF9fY3B1aWQoaW5mbywgMSk7CiAKKyAg
ICAgICAgICAgIHN1cHBvcnRzID0gKGluZm9bM10gPj4gMjYpICYgMTsKKyAgICAgICAgfQorICAg
IH0KKyNlbmRpZiAgLy8gZGVmaW5lZChBTkdMRV9QTEFURk9STV9XSU5ET1dTKSAmJiAhZGVmaW5l
ZChfTV9BUk0pCiAgICAgY2hlY2tlZCA9IHRydWU7Ci0KICAgICByZXR1cm4gc3VwcG9ydHM7Ci0j
ZWxzZQotICAgIFVOSU1QTEVNRU5URUQoKTsKKyNlbHNlICAvLyBkZWZpbmVkKEFOR0xFX1VTRV9T
U0UpCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiB9CkBAIC00NjcsNiArNDg1LDQzIEBAIGlu
bGluZSBUIHNoaWZ0RGF0YShUIGlucHV0KQogICAgIHJldHVybiAoaW5wdXQgJiBtYXNrKSA8PCBp
bnB1dEJpdFN0YXJ0OwogfQogCitpbmxpbmUgdW5zaWduZWQgaW50IENvdW50TGVhZGluZ1plcm9z
KHVpbnQzMl90IHgpCit7CisgICAgLy8gVXNlIGJpbmFyeSBzZWFyY2ggdG8gZmluZCB0aGUgYW1v
dW50IG9mIGxlYWRpbmcgemVyb3MuCisgICAgdW5zaWduZWQgaW50IHplcm9zID0gMzJ1OworICAg
IHVpbnQzMl90IHk7CisKKyAgICB5ID0geCA+PiAxNnU7CisgICAgaWYgKHkgIT0gMCkKKyAgICB7
CisgICAgICAgIHplcm9zID0gemVyb3MgLSAxNnU7CisgICAgICAgIHggICAgID0geTsKKyAgICB9
CisgICAgeSA9IHggPj4gOHU7CisgICAgaWYgKHkgIT0gMCkKKyAgICB7CisgICAgICAgIHplcm9z
ID0gemVyb3MgLSA4dTsKKyAgICAgICAgeCAgICAgPSB5OworICAgIH0KKyAgICB5ID0geCA+PiA0
dTsKKyAgICBpZiAoeSAhPSAwKQorICAgIHsKKyAgICAgICAgemVyb3MgPSB6ZXJvcyAtIDR1Owor
ICAgICAgICB4ICAgICA9IHk7CisgICAgfQorICAgIHkgPSB4ID4+IDJ1OworICAgIGlmICh5ICE9
IDApCisgICAgeworICAgICAgICB6ZXJvcyA9IHplcm9zIC0gMnU7CisgICAgICAgIHggICAgID0g
eTsKKyAgICB9CisgICAgeSA9IHggPj4gMXU7CisgICAgaWYgKHkgIT0gMCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB6ZXJvcyAtIDJ1OworICAgIH0KKyAgICByZXR1cm4gemVyb3MgLSB4OworfQog
CiBpbmxpbmUgdW5zaWduZWQgY2hhciBhdmVyYWdlKHVuc2lnbmVkIGNoYXIgYSwgdW5zaWduZWQg
Y2hhciBiKQogewpAQCAtNjc2LDQxICs3MzEsOTggQEAgaW5saW5lIGJvb2wgaXNJbmYoZmxvYXQg
ZikKICAgICByZXR1cm4gKChiaXRDYXN0PHVpbnQzMl90PihmKSAmIDB4N2Y4MDAwMDB1KSA9PSAw
eDdmODAwMDAwdSkgJiYgIShiaXRDYXN0PHVpbnQzMl90PihmKSAmIDB4N2ZmZmZmdSk7CiB9CiAK
K25hbWVzcGFjZSBwcml2Cit7Cit0ZW1wbGF0ZSA8dW5zaWduZWQgaW50IE4sIHVuc2lnbmVkIGlu
dCBSPgorc3RydWN0IGlTcXVhcmVSb290Cit7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBpbnQgc29sdmUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIChSICogUiA+IE4pCisgICAgICAg
ICAgICAgICAgICAgPyAwCisgICAgICAgICAgICAgICAgICAgOiAoKFIgKiBSID09IE4pID8gUiA6
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oaVNxdWFyZVJvb3Q8TiwgUiArIDE+Ojp2YWx1ZSkp
OworICAgIH0KKyAgICBlbnVtIFJlc3VsdAorICAgIHsKKyAgICAgICAgdmFsdWUgPSBpU3F1YXJl
Um9vdDo6c29sdmUoKQorICAgIH07Cit9OworCit0ZW1wbGF0ZSA8dW5zaWduZWQgaW50IE4+Citz
dHJ1Y3QgaVNxdWFyZVJvb3Q8TiwgTj4KK3sKKyAgICBlbnVtIHJlc3VsdAorICAgIHsKKyAgICAg
ICAgdmFsdWUgPSBOCisgICAgfTsKK307CisKK30gIC8vIG5hbWVzcGFjZSBwcml2CisKK3RlbXBs
YXRlIDx1bnNpZ25lZCBpbnQgTj4KK2NvbnN0ZXhwciB1bnNpZ25lZCBpbnQgaVNxdWFyZVJvb3Qo
KQoreworICAgIHJldHVybiBwcml2OjppU3F1YXJlUm9vdDxOLCAxPjo6dmFsdWU7CiB9CiAKLW5h
bWVzcGFjZSByeAorLy8gU3VtLCBkaWZmZXJlbmNlIGFuZCBtdWx0aXBsaWNhdGlvbiBvcGVyYXRp
b25zIGZvciBzaWduZWQgaW50cyB0aGF0IHdyYXAgb24gMzItYml0IG92ZXJmbG93LgorLy8KKy8v
IFVuc2lnbmVkIHR5cGVzIGFyZSBkZWZpbmVkIHRvIGRvIGFyaXRobWV0aWMgbW9kdWxvIDJebiBp
biBDKysuIEZvciBzaWduZWQgdHlwZXMsIG92ZXJmbG93CisvLyBiZWhhdmlvciBpcyB1bmRlZmlu
ZWQuCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIFQgV3JhcHBpbmdTdW0oVCBsaHMs
IFQgcmhzKQogeworICAgIHVpbnQzMl90IGxoc1Vuc2lnbmVkID0gc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGxocyk7CisgICAgdWludDMyX3QgcmhzVW5zaWduZWQgPSBzdGF0aWNfY2FzdDx1aW50MzJf
dD4ocmhzKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4obGhzVW5zaWduZWQgKyByaHNVbnNp
Z25lZCk7Cit9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotVCByb3VuZFVwKGNvbnN0IFQgdmFs
dWUsIGNvbnN0IFQgYWxpZ25tZW50KQoraW5saW5lIFQgV3JhcHBpbmdEaWZmKFQgbGhzLCBUIHJo
cykKIHsKLSAgICByZXR1cm4gdmFsdWUgKyBhbGlnbm1lbnQgLSAxIC0gKHZhbHVlIC0gMSkgJSBh
bGlnbm1lbnQ7CisgICAgdWludDMyX3QgbGhzVW5zaWduZWQgPSBzdGF0aWNfY2FzdDx1aW50MzJf
dD4obGhzKTsKKyAgICB1aW50MzJfdCByaHNVbnNpZ25lZCA9IHN0YXRpY19jYXN0PHVpbnQzMl90
PihyaHMpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPihsaHNVbnNpZ25lZCAtIHJoc1Vuc2ln
bmVkKTsKIH0KIAotaW5saW5lIHVuc2lnbmVkIGludCBVbnNpZ25lZENlaWxEaXZpZGUodW5zaWdu
ZWQgaW50IHZhbHVlLCB1bnNpZ25lZCBpbnQgZGl2aXNvcikKK2lubGluZSBpbnQzMl90IFdyYXBw
aW5nTXVsKGludDMyX3QgbGhzLCBpbnQzMl90IHJocykKIHsKLSAgICB1bnNpZ25lZCBpbnQgZGl2
aWRlZCA9IHZhbHVlIC8gZGl2aXNvcjsKLSAgICByZXR1cm4gKGRpdmlkZWQgKyAoKHZhbHVlICUg
ZGl2aXNvciA9PSAwKSA/IDAgOiAxKSk7CisgICAgaW50NjRfdCBsaHNXaWRlID0gc3RhdGljX2Nh
c3Q8aW50NjRfdD4obGhzKTsKKyAgICBpbnQ2NF90IHJoc1dpZGUgPSBzdGF0aWNfY2FzdDxpbnQ2
NF90PihyaHMpOworICAgIC8vIFRoZSBtdWx0aXBsaWNhdGlvbiBpcyBndWFyYW50ZWVkIG5vdCB0
byBvdmVyZmxvdy4KKyAgICBpbnQ2NF90IHJlc3VsdFdpZGUgPSBsaHNXaWRlICogcmhzV2lkZTsK
KyAgICAvLyBJbXBsZW1lbnQgdGhlIGRlc2lyZWQgd3JhcHBpbmcgYmVoYXZpb3IgYnkgbWFza2lu
ZyBvdXQgdGhlIGhpZ2gtb3JkZXIgMzIgYml0cy4KKyAgICByZXN1bHRXaWRlID0gcmVzdWx0V2lk
ZSAmIDB4ZmZmZmZmZmZsbDsKKyAgICAvLyBDYXN0aW5nIHRvIGEgbmFycm93ZXIgc2lnbmVkIHR5
cGUgaXMgZmluZSBzaW5jZSB0aGUgY2FzdGVkIHZhbHVlIGlzIHJlcHJlc2VudGFibGUgaW4gdGhl
CisgICAgLy8gbmFycm93ZXIgdHlwZS4KKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4o
cmVzdWx0V2lkZSk7CiB9CiAKLXRlbXBsYXRlIDxjbGFzcyBUPgotaW5saW5lIGJvb2wgSXNVbnNp
Z25lZEFkZGl0aW9uU2FmZShUIGxocywgVCByaHMpCit9ICAvLyBuYW1lc3BhY2UgZ2wKKworbmFt
ZXNwYWNlIHJ4CiB7Ci0gICAgc3RhdGljX2Fzc2VydCghc3RkOjpudW1lcmljX2xpbWl0czxUPjo6
aXNfc2lnbmVkLCAiVCBtdXN0IGJlIHVuc2lnbmVkLiIpOwotICAgIHJldHVybiAocmhzIDw9IHN0
ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCgpIC0gbGhzKTsKKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CitUIHJvdW5kVXAoY29uc3QgVCB2YWx1ZSwgY29uc3QgVCBhbGlnbm1lbnQpCit7CisgICAg
YXV0byB0ZW1wID0gdmFsdWUgKyBhbGlnbm1lbnQgLSBzdGF0aWNfY2FzdDxUPigxKTsKKyAgICBy
ZXR1cm4gdGVtcCAtIHRlbXAgJSBhbGlnbm1lbnQ7CiB9CiAKLXRlbXBsYXRlIDxjbGFzcyBUPgot
aW5saW5lIGJvb2wgSXNVbnNpZ25lZE11bHRpcGxpY2F0aW9uU2FmZShUIGxocywgVCByaHMpCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2FuZ2xlOjpDaGVja2VkTnVtZXJpYzxUPiBDaGVja2VkUm91
bmRVcChjb25zdCBUIHZhbHVlLCBjb25zdCBUIGFsaWdubWVudCkKIHsKLSAgICBzdGF0aWNfYXNz
ZXJ0KCFzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zaWduZWQsICJUIG11c3QgYmUgdW5zaWdu
ZWQuIik7Ci0gICAgcmV0dXJuIChsaHMgPT0gVCgwKSB8fCByaHMgPT0gVCgwKSB8fCAocmhzIDw9
IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCgpIC8gbGhzKSk7CisgICAgYW5nbGU6OkNoZWNr
ZWROdW1lcmljPFQ+IGNoZWNrZWRWYWx1ZSh2YWx1ZSk7CisgICAgYW5nbGU6OkNoZWNrZWROdW1l
cmljPFQ+IGNoZWNrZWRBbGlnbm1lbnQoYWxpZ25tZW50KTsKKyAgICByZXR1cm4gcm91bmRVcChj
aGVja2VkVmFsdWUsIGNoZWNrZWRBbGlnbm1lbnQpOwogfQogCi10ZW1wbGF0ZSA8Y2xhc3MgU21h
bGxJbnRULCBjbGFzcyBCaWdJbnRUPgotaW5saW5lIGJvb2wgSXNJbnRlZ2VyQ2FzdFNhZmUoQmln
SW50VCBiaWdWYWx1ZSkKK2lubGluZSB1bnNpZ25lZCBpbnQgVW5zaWduZWRDZWlsRGl2aWRlKHVu
c2lnbmVkIGludCB2YWx1ZSwgdW5zaWduZWQgaW50IGRpdmlzb3IpCiB7Ci0gICAgcmV0dXJuIChz
dGF0aWNfY2FzdDxCaWdJbnRUPihzdGF0aWNfY2FzdDxTbWFsbEludFQ+KGJpZ1ZhbHVlKSkgPT0g
YmlnVmFsdWUpOworICAgIHVuc2lnbmVkIGludCBkaXZpZGVkID0gdmFsdWUgLyBkaXZpc29yOwor
ICAgIHJldHVybiAoZGl2aWRlZCArICgodmFsdWUgJSBkaXZpc29yID09IDApID8gMCA6IDEpKTsK
IH0KIAogI2lmIGRlZmluZWQoX01TQ19WRVIpCkBAIC03MzAsOCArODQyLDggQEAgaW5saW5lIHVp
bnQxNl90IFJvdFIxNih1aW50MTZfdCB4LCBpbnQ4XwogICAgIHJldHVybiAoeCA+PiByKSB8ICh4
IDw8ICgxNiAtIHIpKTsKIH0KIAotI2RlZmluZSBBTkdMRV9ST1RMKHgseSkgUm90TCh4LHkpCi0j
ZGVmaW5lIEFOR0xFX1JPVFIxNih4LHkpIFJvdFIxNih4LHkpCisjZGVmaW5lIEFOR0xFX1JPVEwo
eCwgeSkgOjpyeDo6Um90TCh4LCB5KQorI2RlZmluZSBBTkdMRV9ST1RSMTYoeCwgeSkgOjpyeDo6
Um90UjE2KHgsIHkpCiAKICNlbmRpZiAvLyBuYW1lc3BhY2UgcngKIApJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9tYXRodXRpbF91bml0dGVzdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9tYXRodXRpbF91bml0dGVz
dC5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21tb24vbWF0aHV0aWxfdW5pdHRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNSArMTY4
LDQzIEBAIFRFU1QoTWF0aFV0aWxUZXN0LCBpc0luZikKICAgICBFWFBFQ1RfRkFMU0UoaXNJbmYo
Yml0Q2FzdDxmbG9hdD4oMXUgPDwgMzEgfCAweGZldSA8PCAyMyB8IDB4N2ZmZmZmdSkpKTsKIH0K
IAorVEVTVChNYXRoVXRpbFRlc3QsIENvdW50TGVhZGluZ1plcm9zKQoreworICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgMzJ1OyArK2kpCisgICAgeworICAgICAgICB1aW50MzJfdCBp
TGVhZGluZ1plcm9zID0gMXUgPDwgKDMxdSAtIGkpOworICAgICAgICBFWFBFQ1RfRVEoaSwgQ291
bnRMZWFkaW5nWmVyb3MoaUxlYWRpbmdaZXJvcykpOworICAgIH0KKyAgICBFWFBFQ1RfRVEoMzJ1
LCBDb3VudExlYWRpbmdaZXJvcygwKSk7CiB9CiAKKy8vIFNvbWUgYmFzaWMgdGVzdHMuIFRlc3Rz
IHRoYXQgcm91bmRpbmcgdXAgemVybyBwcm9kdWNlcyB6ZXJvLgorVEVTVChNYXRoVXRpbFRlc3Qs
IEJhc2ljUm91bmRVcCkKK3sKKyAgICBFWFBFQ1RfRVEoMHUsIHJ4Ojpyb3VuZFVwKDB1LCA0dSkp
OworICAgIEVYUEVDVF9FUSg0dSwgcng6OnJvdW5kVXAoMXUsIDR1KSk7CisgICAgRVhQRUNUX0VR
KDR1LCByeDo6cm91bmRVcCg0dSwgNHUpKTsKK30KKworLy8gVGVzdCB0aGF0IHJvdW5kaW5nIHVw
IHplcm8gcHJvZHVjZXMgemVybyBmb3IgY2hlY2tlZCBpbnRzLgorVEVTVChNYXRoVXRpbFRlc3Qs
IENoZWNrZWRSb3VuZFVwWmVybykKK3sKKyAgICBhdXRvIGNoZWNrZWRWYWx1ZSA9IHJ4OjpDaGVj
a2VkUm91bmRVcCgwdSwgNHUpOworICAgIEFTU0VSVF9UUlVFKGNoZWNrZWRWYWx1ZS5Jc1ZhbGlk
KCkpOworICAgIEFTU0VSVF9FUSgwdSwgY2hlY2tlZFZhbHVlLlZhbHVlT3JEaWUoKSk7Cit9CisK
Ky8vIFRlc3Qgb3V0LW9mLWJvdW5kcyB3aXRoIENoZWNrZWRSb3VuZFVwCitURVNUKE1hdGhVdGls
VGVzdCwgQ2hlY2tlZFJvdW5kVXBJbnZhbGlkKQoreworICAgIC8vIFRoZSBhbnN3ZXIgdG8gdGhp
cyBxdWVyeSBpcyBvdXQgb2YgYm91bmRzLgorICAgIGF1dG8gbGltaXQgICAgICAgID0gc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZCBpbnQ+OjptYXgoKTsKKyAgICBhdXRvIGNoZWNrZWRWYWx1
ZSA9IHJ4OjpDaGVja2VkUm91bmRVcChsaW1pdCwgbGltaXQgLSAxKTsKKyAgICBBU1NFUlRfRkFM
U0UoY2hlY2tlZFZhbHVlLklzVmFsaWQoKSk7CisKKyAgICAvLyBPdXIgaW1wbGVtZW50YXRpb24g
Y2FuJ3QgaGFuZGxlIHRoaXMgcXVlcnksIGRlc3BpdGUgdGhlIHBhcmFtZXRlcnMgYmVpbmcgaW4g
cmFuZ2UuCisgICAgYXV0byBjaGVja2VkTGltaXQgPSByeDo6Q2hlY2tlZFJvdW5kVXAobGltaXQg
LSAxLCBsaW1pdCk7CisgICAgQVNTRVJUX0ZBTFNFKGNoZWNrZWRMaW1pdC5Jc1ZhbGlkKCkpOwor
fQorCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tbW9uL21hdHJpeF91dGlscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vbWF0cml4X3V0aWxzLmgJKHJldmlzaW9uIDIwNzgwNCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vbWF0cml4X3V0aWxzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE2LDYgKzE2LDcgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNs
dWRlICJjb21tb24vZGVidWcuaCIKKyNpbmNsdWRlICJjb21tb24vbWF0aHV0aWwuaCIKIAogbmFt
ZXNwYWNlIGFuZ2xlCiB7CkBAIC0zMzcsNiArMzM4LDQyIEBAIGNsYXNzIE1hdHJpeAogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIHZvaWQgc2V0VG9JZGVudGl0eSgpCisgICAg
eworICAgICAgICBBU1NFUlQocm93cygpID09IGNvbHVtbnMoKSk7CisKKyAgICAgICAgY29uc3Qg
YXV0byBvbmUgID0gVCgxKTsKKyAgICAgICAgY29uc3QgYXV0byB6ZXJvID0gVCgwKTsKKworICAg
ICAgICBmb3IgKGF1dG8gJmUgOiBtRWxlbWVudHMpCisgICAgICAgICAgICBlID0gemVybzsKKwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHJvd3MoKTsgKytpKQorICAgICAg
ICB7CisgICAgICAgICAgICBjb25zdCBhdXRvIHBvcyA9IGkgKiBjb2x1bW5zKCkgKyAoaSAlIGNv
bHVtbnMoKSk7CisgICAgICAgICAgICBtRWxlbWVudHNbcG9zXSA9IG9uZTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHRlbXBsYXRlIDx1bnNpZ25lZCBpbnQgU2l6ZT4KKyAgICBzdGF0aWMgdm9p
ZCBzZXRUb0lkZW50aXR5KFQoJm1hdHJpeClbU2l6ZV0pCisgICAgeworICAgICAgICBzdGF0aWNf
YXNzZXJ0KGdsOjppU3F1YXJlUm9vdDxTaXplPigpICE9IDAsICJNYXRyaXggaXMgbm90IHNxdWFy
ZS4iKTsKKworICAgICAgICBjb25zdCBhdXRvIGNvbHMgPSBnbDo6aVNxdWFyZVJvb3Q8U2l6ZT4o
KTsKKyAgICAgICAgY29uc3QgYXV0byBvbmUgID0gVCgxKTsKKyAgICAgICAgY29uc3QgYXV0byB6
ZXJvID0gVCgwKTsKKworICAgICAgICBmb3IgKGF1dG8gJmUgOiBtYXRyaXgpCisgICAgICAgICAg
ICBlID0gemVybzsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGNvbHM7
ICsraSkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgYXV0byBwb3MgPSBpICogY29scyAr
IChpICUgY29scyk7CisgICAgICAgICAgICBtYXRyaXhbcG9zXSAgICA9IG9uZTsKKyAgICAgICAg
fQorICAgIH0KKwogICBwcml2YXRlOgogICAgIHN0ZDo6dmVjdG9yPFQ+IG1FbGVtZW50czsKICAg
ICB1bnNpZ25lZCBpbnQgbVJvd3M7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tbW9uL3BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbW1vbi9wbGF0Zm9ybS5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tbW9uL3BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDgg
Kzc3LDE2IEBACiAjICAgdW5kZWYgZmFyCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKF9NX0FSTSkg
JiYgIWRlZmluZWQoQU5HTEVfUExBVEZPUk1fQU5EUk9JRCkKLSMgICBkZWZpbmUgQU5HTEVfVVNF
X1NTRQorI2lmIGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKF9NX0FSTSkKKyNpbmNsdWRl
IDxpbnRyaW4uaD4KKyNkZWZpbmUgQU5HTEVfVVNFX1NTRQorI2VsaWYgZGVmaW5lZChfX0dOVUNf
XykgJiYgKGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2kzODZfXykpCisjaW5jbHVk
ZSA8eDg2aW50cmluLmg+CisjZGVmaW5lIEFOR0xFX1VTRV9TU0UKICNlbmRpZgogCisvLyBUaGUg
TWVtb3J5QmFycmllciBmdW5jdGlvbiBuYW1lIGNvbGxpZGVzIHdpdGggYSBtYWNybyB1bmRlciBX
aW5kb3dzCisvLyBXZSB3aWxsIHVuZGVmIHRoZSBtYWNybyBzbyB0aGF0IHRoZSBmdW5jdGlvbiBu
YW1lIGRvZXMgbm90IGdldCByZXBsYWNlZAorI3VuZGVmIE1lbW9yeUJhcnJpZXIKKwogI2VuZGlm
IC8vIENPTU1PTl9QTEFURk9STV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbW1vbi9zdHJpbmdfdXRpbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21tb24vc3RyaW5nX3V0aWxzLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9zdHJpbmdfdXRpbHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05LDkgKzksMTQgQEAKIAogI2luY2x1ZGUgInN0cmluZ191dGlscy5oIgog
CisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0
cmluZy5oPgogI2luY2x1ZGUgPGZzdHJlYW0+CiAjaW5jbHVkZSA8c3N0cmVhbT4KIAorI2luY2x1
ZGUgImNvbW1vbi9wbGF0Zm9ybS5oIgorCiBuYW1lc3BhY2UgYW5nbGUKIHsKIApAQCAtMTMzLDQg
KzEzOCw0NSBAQCBib29sIFJlYWRGaWxlVG9TdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcgCiAgICAg
cmV0dXJuICFpbkZpbGUuZmFpbCgpOwogfQogCitPcHRpb25hbDxzdGQ6OnZlY3Rvcjx3Y2hhcl90
Pj4gV2lkZW5TdHJpbmcoc2l6ZV90IGxlbmd0aCwgY29uc3QgY2hhciAqY1N0cmluZykKK3sKKyAg
ICBzdGQ6OnZlY3Rvcjx3Y2hhcl90PiB3Y3N0cmluZyhsZW5ndGggKyAxKTsKKyNpZiAhZGVmaW5l
ZChBTkdMRV9QTEFURk9STV9XSU5ET1dTKQorICAgIHNpemVfdCB3cml0dGVuID0gbWJzdG93Y3Mo
d2NzdHJpbmcuZGF0YSgpLCBjU3RyaW5nLCBsZW5ndGggKyAxKTsKKyAgICBpZiAod3JpdHRlbiA9
PSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsPHN0ZDo6dmVjdG9yPHdjaGFyX3Q+
Pjo6SW52YWxpZCgpOworICAgIH0KKyNlbHNlCisgICAgc2l6ZV90IGNvbnZlcnRlZENoYXJzID0g
MDsKKyAgICBlcnJub190IGVyciA9IG1ic3Rvd2NzX3MoJmNvbnZlcnRlZENoYXJzLCB3Y3N0cmlu
Zy5kYXRhKCksIGxlbmd0aCArIDEsIGNTdHJpbmcsIF9UUlVOQ0FURSk7CisgICAgaWYgKGVyciAh
PSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsPHN0ZDo6dmVjdG9yPHdjaGFyX3Q+
Pjo6SW52YWxpZCgpOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBPcHRpb25hbDxzdGQ6OnZl
Y3Rvcjx3Y2hhcl90Pj4od2NzdHJpbmcpOworfQorCitib29sIEJlZ2luc1dpdGgoY29uc3Qgc3Rk
OjpzdHJpbmcgJnN0ciwgY29uc3QgY2hhciAqcHJlZml4KQoreworICAgIHJldHVybiBzdHJuY21w
KHN0ci5jX3N0cigpLCBwcmVmaXgsIHN0cmxlbihwcmVmaXgpKSA9PSAwOwogfQorCitib29sIEJl
Z2luc1dpdGgoY29uc3QgY2hhciAqc3RyLCBjb25zdCBjaGFyICpwcmVmaXgpCit7CisgICAgcmV0
dXJuIHN0cm5jbXAoc3RyLCBwcmVmaXgsIHN0cmxlbihwcmVmaXgpKSA9PSAwOworfQorCitib29s
IEVuZHNXaXRoKGNvbnN0IHN0ZDo6c3RyaW5nICZzdHIsIGNvbnN0IGNoYXIgKnN1ZmZpeCkKK3sK
KyAgICBjb25zdCBhdXRvIGxlbiA9IHN0cmxlbihzdWZmaXgpOworICAgIGlmIChsZW4gPiBzdHIu
c2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjb25zdCBjaGFyICplbmQgPSBz
dHIuY19zdHIoKSArIHN0ci5zaXplKCkgLSBsZW47CisKKyAgICByZXR1cm4gbWVtY21wKGVuZCwg
c3VmZml4LCBsZW4pID09IDA7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmdsZQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9zdHJpbmdfdXRpbHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3N0cmluZ191dGlscy5oCShy
ZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3N0
cmluZ191dGlscy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw2ICsxMyw4IEBACiAjaW5jbHVkZSA8
c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImNvbW1vbi9PcHRpb25hbC5o
IgorCiBuYW1lc3BhY2UgYW5nbGUKIHsKIApAQCAtNDQsNiArNDYsMjIgQEAgYm9vbCBIZXhTdHJp
bmdUb1VJbnQoY29uc3Qgc3RkOjpzdHJpbmcgJgogCiBib29sIFJlYWRGaWxlVG9TdHJpbmcoY29u
c3Qgc3RkOjpzdHJpbmcgJnBhdGgsIHN0ZDo6c3RyaW5nICpzdHJpbmdPdXQpOwogCitPcHRpb25h
bDxzdGQ6OnZlY3Rvcjx3Y2hhcl90Pj4gV2lkZW5TdHJpbmcoc2l6ZV90IGxlbmd0aCwgY29uc3Qg
Y2hhciAqY1N0cmluZyk7CisKKy8vIENoZWNrIGlmIHRoZSBzdHJpbmcgc3RyIGJlZ2lucyB3aXRo
IHRoZSBnaXZlbiBwcmVmaXguCisvLyBQcmVmaXggbWF5IG5vdCBiZSBOVUxMIGFuZCBuZWVkcyB0
byBiZSBOVUxMIHRlcm1pbmF0ZWQuCisvLyBUaGUgY29tcGFyaXNvbiBpcyBjYXNlIHNlbnNpdGl2
ZS4KK2Jvb2wgQmVnaW5zV2l0aChjb25zdCBzdGQ6OnN0cmluZyAmc3RyLCBjb25zdCBjaGFyICpw
cmVmaXgpOworCisvLyBDaGVjayBpZiB0aGUgc3RyaW5nIHN0ciBiZWdpbnMgd2l0aCB0aGUgZ2l2
ZW4gcHJlZml4LgorLy8gc3RyIGFuZCBwcmVmaXggbWF5IG5vdCBiZSBOVUxMIGFuZCBuZWVkIHRv
IGJlIE5VTEwgdGVybWluYXRlZC4KKy8vIFRoZSBjb21wYXJpc29uIGlzIGNhc2Ugc2Vuc2l0aXZl
LgorYm9vbCBCZWdpbnNXaXRoKGNvbnN0IGNoYXIgKnN0ciwgY29uc3QgY2hhciAqcHJlZml4KTsK
KworLy8gQ2hlY2sgaWYgdGhlIHN0cmluZyBzdHIgZW5kcyB3aXRoIHRoZSBnaXZlbiBzdWZmaXgu
CisvLyBTdWZmaXggbWF5IG5vdCBiZSBOVUwgYW5kIG5lZWRzIHRvIGJlIE5VTEwgdGVybWluYXRl
ZC4KKy8vIFRoZSBjb21wYXJpc29uIGlzIGNhc2Ugc2Vuc2l0aXZlLgorYm9vbCBFbmRzV2l0aChj
b25zdCBzdGQ6OnN0cmluZyYgc3RyLCBjb25zdCBjaGFyKiBzdWZmaXgpOwogfQogCiAjZW5kaWYg
Ly8gTElCQU5HTEVfU1RSSU5HX1VUSUxTX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tbW9uL3N0cmluZ191dGlsc191bml0dGVzdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9zdHJpbmdfdXRpbHNfdW5pdHRlc3QuY3Bw
CShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9u
L3N0cmluZ191dGlsc191bml0dGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw0ICsxMzgs
MjYgQEAgVEVTVChTdHJpbmdVdGlsc1Rlc3QsIEhleFN0cmluZ1RvVUludEJhcwogCiAvLyBOb3Rl
OiBSZWFkRmlsZVRvU3RyaW5nIGlzIGhhcmRlciB0byB0ZXN0CiAKKworVEVTVChTdHJpbmdVdGls
c1Rlc3QsIEJlZ2luc0VuZHNXaXRoKQoreworICAgIEFTU0VSVF9GQUxTRShCZWdpbnNXaXRoKCJm
b28iLCAiYmFyIikpOworICAgIEFTU0VSVF9GQUxTRShCZWdpbnNXaXRoKCIiLCAiZm9vIikpOwor
ICAgIEFTU0VSVF9GQUxTRShCZWdpbnNXaXRoKCJmb28iLCAiZm9vYmFyIikpOworCisgICAgQVNT
RVJUX1RSVUUoQmVnaW5zV2l0aCgiZm9vYmFyIiwgImZvbyIpKTsKKyAgICBBU1NFUlRfVFJVRShC
ZWdpbnNXaXRoKCJmb29iYXIiLCAiIikpOworICAgIEFTU0VSVF9UUlVFKEJlZ2luc1dpdGgoImZv
byIsICJmb28iKSk7CisgICAgQVNTRVJUX1RSVUUoQmVnaW5zV2l0aCgiIiwgIiIpKTsKKworICAg
IEFTU0VSVF9GQUxTRShFbmRzV2l0aCgiZm9vIiwgImJhciIpKTsKKyAgICBBU1NFUlRfRkFMU0Uo
RW5kc1dpdGgoIiIsICJiYXIiKSk7CisgICAgQVNTRVJUX0ZBTFNFKEVuZHNXaXRoKCJmb28iLCAi
Zm9vYmFyIikpOworCisgICAgQVNTRVJUX1RSVUUoRW5kc1dpdGgoImZvb2JhciIsICJiYXIiKSk7
CisgICAgQVNTRVJUX1RSVUUoRW5kc1dpdGgoImZvb2JhciIsICIiKSk7CisgICAgQVNTRVJUX1RS
VUUoRW5kc1dpdGgoImJhciIsICJiYXIiKSk7CisgICAgQVNTRVJUX1RSVUUoRW5kc1dpdGgoIiIs
ICIiKSk7CiB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3V0aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi91dGlsaXRpZXMuY3BwCShyZXZpc2lv
biAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3V0aWxpdGll
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw2ICsxMjcsNyBAQCBHTGVudW0gVmFyaWFibGVD
b21wb25lbnRUeXBlKEdMZW51bSB0eXBlCiAgICAgICBjYXNlIEdMX1NBTVBMRVJfM0Q6CiAgICAg
ICBjYXNlIEdMX1NBTVBMRVJfQ1VCRToKICAgICAgIGNhc2UgR0xfU0FNUExFUl8yRF9BUlJBWToK
KyAgICAgIGNhc2UgR0xfU0FNUExFUl9FWFRFUk5BTF9PRVM6CiAgICAgICBjYXNlIEdMX0lOVF9T
QU1QTEVSXzJEOgogICAgICAgY2FzZSBHTF9JTlRfU0FNUExFUl8zRDoKICAgICAgIGNhc2UgR0xf
SU5UX1NBTVBMRVJfQ1VCRToKQEAgLTMzNCw2ICszMzUsNyBAQCBib29sIElzU2FtcGxlclR5cGUo
R0xlbnVtIHR5cGUpCiAgICAgICBjYXNlIEdMX1NBTVBMRVJfM0Q6CiAgICAgICBjYXNlIEdMX1NB
TVBMRVJfQ1VCRToKICAgICAgIGNhc2UgR0xfU0FNUExFUl8yRF9BUlJBWToKKyAgICAgIGNhc2Ug
R0xfU0FNUExFUl9FWFRFUk5BTF9PRVM6CiAgICAgICBjYXNlIEdMX0lOVF9TQU1QTEVSXzJEOgog
ICAgICAgY2FzZSBHTF9JTlRfU0FNUExFUl8zRDoKICAgICAgIGNhc2UgR0xfSU5UX1NBTVBMRVJf
Q1VCRToKQEAgLTM2MSw2ICszNjMsOSBAQCBHTGVudW0gU2FtcGxlclR5cGVUb1RleHR1cmVUeXBl
KEdMZW51bSBzCiAgICAgICBjYXNlIEdMX1NBTVBMRVJfMkRfU0hBRE9XOgogICAgICAgICByZXR1
cm4gR0xfVEVYVFVSRV8yRDsKIAorICAgICAgY2FzZSBHTF9TQU1QTEVSX0VYVEVSTkFMX09FUzoK
KyAgICAgICAgICByZXR1cm4gR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVM7CisKICAgICAgIGNhc2Ug
R0xfU0FNUExFUl9DVUJFOgogICAgICAgY2FzZSBHTF9JTlRfU0FNUExFUl9DVUJFOgogICAgICAg
Y2FzZSBHTF9VTlNJR05FRF9JTlRfU0FNUExFUl9DVUJFOgpAQCAtNjM5LDYgKzY0NCwyOSBAQCBz
dGQ6OnN0cmluZyBQYXJzZVVuaWZvcm1OYW1lKGNvbnN0IHN0ZDo6CiAgICAgcmV0dXJuIG5hbWUu
c3Vic3RyKDAsIG9wZW4pOwogfQogCit0ZW1wbGF0ZSA8PgorR0x1aW50IENvbnZlcnRUb0dMdWlu
dChHTGZsb2F0IHBhcmFtKQoreworICAgIHJldHVybiB1aXJvdW5kPEdMdWludD4ocGFyYW0pOwor
fQorCit0ZW1wbGF0ZSA8PgorR0xpbnQgQ29udmVydFRvR0xpbnQoR0xmbG9hdCBwYXJhbSkKK3sK
KyAgICByZXR1cm4gaXJvdW5kPEdMaW50PihwYXJhbSk7Cit9CisKK3RlbXBsYXRlIDw+CitHTGlu
dCBDb252ZXJ0RnJvbUdMZmxvYXQoR0xmbG9hdCBwYXJhbSkKK3sKKyAgICByZXR1cm4gaXJvdW5k
PEdMaW50PihwYXJhbSk7Cit9Cit0ZW1wbGF0ZSA8PgorR0x1aW50IENvbnZlcnRGcm9tR0xmbG9h
dChHTGZsb2F0IHBhcmFtKQoreworICAgIHJldHVybiB1aXJvdW5kPEdMdWludD4ocGFyYW0pOwor
fQorCiB1bnNpZ25lZCBpbnQgUGFyc2VBbmRTdHJpcEFycmF5SW5kZXgoc3RkOjpzdHJpbmcgKm5h
bWUpCiB7CiAgICAgdW5zaWduZWQgaW50IHN1YnNjcmlwdCA9IEdMX0lOVkFMSURfSU5ERVg7CkBA
IC03MTAsNyArNzM4LDcgQEAgYm9vbCBJc1JlbmRlcmJ1ZmZlclRhcmdldChFR0xlbnVtIHRhcmdl
dAogewogICAgIHJldHVybiB0YXJnZXQgPT0gRUdMX0dMX1JFTkRFUkJVRkZFUl9LSFI7CiB9Ci19
Cit9ICAvLyBuYW1lc3BhY2UgZWdsCiAKIG5hbWVzcGFjZSBlZ2xfZ2wKIHsKQEAgLTc0OCw3ICs3
NzYsNyBAQCBHTHVpbnQgRUdMQ2xpZW50QnVmZmVyVG9HTE9iamVjdEhhbmRsZShFCiB7CiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEdMdWludD4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGJ1
ZmZlcikpOwogfQotfQorfSAgLy8gbmFtZXNwYWNlIGVnbF9nbAogCiAjaWYgIWRlZmluZWQoQU5H
TEVfRU5BQkxFX1dJTkRPV1NfU1RPUkUpCiBzdGQ6OnN0cmluZyBnZXRUZW1wUGF0aCgpCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3V0aWxpdGllcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vdXRpbGl0aWVzLmgJKHJl
dmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vdXRp
bGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDc2IEBAIGJvb2wgSXNUcmlhbmds
ZU1vZGUoR0xlbnVtIGRyYXdNb2RlKTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBvdXRUPiBvdXRUIGly
b3VuZChHTGZsb2F0IHZhbHVlKSB7IHJldHVybiBzdGF0aWNfY2FzdDxvdXRUPih2YWx1ZSA+IDAu
MGYgPyBmbG9vcih2YWx1ZSArIDAuNWYpIDogY2VpbCh2YWx1ZSAtIDAuNWYpKTsgfQogdGVtcGxh
dGUgPHR5cGVuYW1lIG91dFQ+IG91dFQgdWlyb3VuZChHTGZsb2F0IHZhbHVlKSB7IHJldHVybiBz
dGF0aWNfY2FzdDxvdXRUPih2YWx1ZSArIDAuNWYpOyB9CiAKKy8vIEhlbHBlciBmb3IgY29udmVy
dGluZyBhcmJpdHJhcnkgR0wgdHlwZXMgdG8gb3RoZXIgR0wgdHlwZXMgdXNlZCBpbiBxdWVyaWVz
IGFuZCBzdGF0ZSBzZXR0aW5nCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUGFyYW1UeXBlPgorR0x1aW50
IENvbnZlcnRUb0dMdWludChQYXJhbVR5cGUgcGFyYW0pCit7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEdMdWludD4ocGFyYW0pOworfQordGVtcGxhdGUgPD4KK0dMdWludCBDb252ZXJ0VG9HTHVp
bnQoR0xmbG9hdCBwYXJhbSk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQYXJhbVR5cGU+CitHTGlu
dCBDb252ZXJ0VG9HTGludChQYXJhbVR5cGUgcGFyYW0pCit7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEdMaW50PihwYXJhbSk7Cit9Cit0ZW1wbGF0ZSA8PgorR0xpbnQgQ29udmVydFRvR0xpbnQo
R0xmbG9hdCBwYXJhbSk7CisKKy8vIFNhbWUgY29udmVyc2lvbiBhcyB1aW50Cit0ZW1wbGF0ZSA8
dHlwZW5hbWUgUGFyYW1UeXBlPgorR0xlbnVtIENvbnZlcnRUb0dMZW51bShQYXJhbVR5cGUgcGFy
YW0pCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMZW51bT4oQ29udmVydFRvR0x1aW50KHBh
cmFtKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQYXJhbVR5cGU+CitHTGZsb2F0IENvbnZl
cnRUb0dMZmxvYXQoUGFyYW1UeXBlIHBhcmFtKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxH
TGZsb2F0PihwYXJhbSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQYXJhbVR5cGU+CitQYXJh
bVR5cGUgQ29udmVydEZyb21HTGZsb2F0KEdMZmxvYXQgcGFyYW0pCit7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFBhcmFtVHlwZT4ocGFyYW0pOworfQordGVtcGxhdGUgPD4KK0dMaW50IENvbnZl
cnRGcm9tR0xmbG9hdChHTGZsb2F0IHBhcmFtKTsKK3RlbXBsYXRlIDw+CitHTHVpbnQgQ29udmVy
dEZyb21HTGZsb2F0KEdMZmxvYXQgcGFyYW0pOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUGFyYW1U
eXBlPgorUGFyYW1UeXBlIENvbnZlcnRGcm9tR0xlbnVtKEdMZW51bSBwYXJhbSkKK3sKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8UGFyYW1UeXBlPihwYXJhbSk7Cit9CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBQYXJhbVR5cGU+CitQYXJhbVR5cGUgQ29udmVydEZyb21HTHVpbnQoR0x1aW50IHBhcmFt
KQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxQYXJhbVR5cGU+KHBhcmFtKTsKK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIFBhcmFtVHlwZT4KK1BhcmFtVHlwZSBDb252ZXJ0RnJvbUdMaW50KEdM
aW50IHBhcmFtKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxQYXJhbVR5cGU+KHBhcmFtKTsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFBhcmFtVHlwZT4KK1BhcmFtVHlwZSBDb252ZXJ0RnJv
bUdMYm9vbGVhbihHTGJvb2xlYW4gcGFyYW0pCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFBh
cmFtVHlwZT4ocGFyYW0gPyBHTF9UUlVFIDogR0xfRkFMU0UpOworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgUGFyYW1UeXBlPgorUGFyYW1UeXBlIENvbnZlcnRGcm9tR0xpbnQ2NChHTGludDY0IHBh
cmFtKQoreworICAgIHJldHVybiBjbGFtcENhc3Q8UGFyYW1UeXBlPihwYXJhbSk7Cit9CisKIHVu
c2lnbmVkIGludCBQYXJzZUFuZFN0cmlwQXJyYXlJbmRleChzdGQ6OnN0cmluZyAqbmFtZSk7CiAK
IH0gIC8vIG5hbWVzcGFjZSBnbApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcy9SRUFETUUuYW5nbGUKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcy9SRUFE
TUUuYW5nbGUJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcy9SRUFETUUuYW5nbGUJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxNiBAQAorTmFtZTogQ2hyb21pdW06IGJhc2UvbnVtZXJpY3MKK1Nob3J0IE5hbWU6
IGJhc2U6Om51bWVyaWNzCitWZXJzaW9uOgorVVJMOiBodHRwczovL2Nocm9taXVtLmdvb2dsZXNv
dXJjZS5jb20vY2hyb21pdW0vc3JjLmdpdC8rL2xrY3IvYmFzZS9udW1lcmljcy8KK1NPVVJDRSBD
T0RFOiBDb3B5IHRoZSBDaHJvbWl1bSBmb2xkZXIgbWFudWFsbHkgaW50byB0aGlzIGZvbGRlciBh
bmQgcnVuIGdpdCBjbCBmb3JtYXQuCitEYXRlOiAzMC8wNS8yMDE2CitSZXZpc2lvbjogMjhiNWJi
YjIyN2QzMzFjMDFlNmZmOWIyZjg3Mjk3MzIxMzVhYWRjNyAoQ2hyb21pdW0pCitTZWN1cml0eSBD
cml0aWNhbDogbm8KK0xpY2Vuc2U6IENocm9taXVtCitMaWNlbnNlIEZpbGU6IExJQ0VOU0UgaW4g
Q2hyb21pdW0vc3JjCisKK0Rlc2NyaXB0aW9uOgorYmFzZTo6bnVtZXJpY3MgaXMgYSBsaWJyYXJ5
IGZvciBkb2luZyBzb21lIHNpbXBsZSBzYWZlIG1hdGggYW5kIGNvbnZlcnNpb25zLiBUbyB1cGRh
dGUgdGhlIGNoZWNrb3V0LCBzaW1wbHkKK292ZXJ3cml0ZSB0aGUgYmFzZS9udW1lcmljcyBmb2xk
ZXIgd2l0aCBDaHJvbWl1bSdzIGxhdGVzdC4gVGhlIG9ubHkgbW9kaWZpY2F0aW9ucyBhcmUgdG8g
dGhlIGJhc2UvbG9nZ2luZy5oCitmaWxlIHdoaWNoIGRlZmluZXMgQ0hFQ0sgdG8gYmUgQVNTRVJU
IHRvIGJlIGNvbXBhdGlibGUgd2l0aCBBTkdMRS4KKwpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcy9iYXNlL2xvZ2dpbmcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3RoaXJkX3BhcnR5
L251bWVyaWNzL2Jhc2UvbG9nZ2luZy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21tb24vdGhpcmRfcGFydHkvbnVtZXJpY3MvYmFzZS9sb2dnaW5nLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMiBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIGxvZ2dpbmcuaDog
Q29tcGF0aWJsaXR5IGhhY2tzIGZvciBpbXBvcnRpbmcgQ2hyb21pdW0ncyBiYXNlL251bWVyaWNz
LgorCisjaWZuZGVmIEJBU0VfTE9HR0lOR19IXworI2RlZmluZSBCQVNFX0xPR0dJTkdfSF8KKwor
I2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCisjaWZuZGVmIENIRUNLCisjZGVmaW5lIENIRUNL
KFgpIEFTU0VSVChYKQorI2VuZGlmCisKKy8vIFVuZm9ydHVuYXRlbHkgQU5HTEUgcmVsaWVzIG9u
IEFTU0VSVCBiZWluZyBhbiBlbXB0eSBzdGF0ZW1lbnQsIHdoaWNoIHRoZXNlIGxpYnMgZG9uJ3Qg
cmVzcGVjdC4KKyNpZm5kZWYgTk9UUkVBQ0hFRAorI2RlZmluZSBOT1RSRUFDSEVEKCkgVU5SRUFD
SEFCTEUoKQorI2VuZGlmCisKKyNlbmRpZiAgLy8gQkFTRV9MT0dHSU5HX0hfCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3RoaXJkX3BhcnR5L251bWVyaWNzL2Jhc2Uv
bnVtZXJpY3MvT1dORVJTCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21tb24vdGhpcmRfcGFydHkvbnVtZXJpY3MvYmFzZS9udW1lcmljcy9PV05FUlMJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi90aGlyZF9wYXJ0
eS9udW1lcmljcy9iYXNlL251bWVyaWNzL09XTkVSUwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDMgQEAKK2pzY2h1aEBjaHJvbWl1bS5vcmcKK3RzZXBlekBjaHJvbWl1bS5vcmcKKwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcy9i
YXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3RoaXJkX3BhcnR5L251bWVyaWNzL2Jhc2UvbnVtZXJp
Y3Mvc2FmZV9jb252ZXJzaW9ucy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21tb24vdGhpcmRfcGFydHkvbnVtZXJpY3MvYmFzZS9udW1lcmljcy9zYWZl
X2NvbnZlcnNpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNzQgQEAKKy8vIENvcHly
aWdodCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworI2lmbmRlZiBC
QVNFX05VTUVSSUNTX1NBRkVfQ09OVkVSU0lPTlNfSF8KKyNkZWZpbmUgQkFTRV9OVU1FUklDU19T
QUZFX0NPTlZFUlNJT05TX0hfCisKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKworI2luY2x1ZGUgPGxp
bWl0cz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworI2luY2x1ZGUgImJhc2UvbG9nZ2luZy5o
IgorI2luY2x1ZGUgImJhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9uc19pbXBsLmgiCisKK25h
bWVzcGFjZSBiYXNlCit7CisKKy8vIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0
cnVlIGlmIHRoZSBzdXBwbGllZCB2YWx1ZSBpcyBpbiByYW5nZQorLy8gZm9yIHRoZSBkZXN0aW5h
dGlvbiB0eXBlLgordGVtcGxhdGUgPHR5cGVuYW1lIERzdCwgdHlwZW5hbWUgU3JjPgorY29uc3Rl
eHByIGJvb2wgSXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlwZShTcmMgdmFsdWUpCit7CisgICAg
cmV0dXJuIGludGVybmFsOjpEc3RSYW5nZVJlbGF0aW9uVG9TcmNSYW5nZTxEc3Q+KHZhbHVlKSA9
PSBpbnRlcm5hbDo6UkFOR0VfVkFMSUQ7Cit9CisKKy8vIENvbnZlbmllbmNlIGZ1bmN0aW9uIGZv
ciBkZXRlcm1pbmluZyBpZiBhIG51bWVyaWMgdmFsdWUgaXMgbmVnYXRpdmUgd2l0aG91dAorLy8g
dGhyb3dpbmcgY29tcGlsZXIgd2FybmluZ3Mgb246IHVuc2lnbmVkKHZhbHVlKSA8IDAuCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK2NvbnN0ZXhwciB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6
Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zaWduZWQsIGJvb2w+Ojp0eXBlIElzVmFsdWVOZWdhdGl2
ZSgKKyAgICBUIHZhbHVlKQoreworICAgIHN0YXRpY19hc3NlcnQoc3RkOjpudW1lcmljX2xpbWl0
czxUPjo6aXNfc3BlY2lhbGl6ZWQsICJBcmd1bWVudCBtdXN0IGJlIG51bWVyaWMuIik7CisgICAg
cmV0dXJuIHZhbHVlIDwgMDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citjb25zdGV4cHIg
dHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX3NpZ25l
ZCwgYm9vbD46OnR5cGUgSXNWYWx1ZU5lZ2F0aXZlKFQpCit7CisgICAgc3RhdGljX2Fzc2VydChz
dGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zcGVjaWFsaXplZCwgIkFyZ3VtZW50IG11c3QgYmUg
bnVtZXJpYy4iKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8vIGNoZWNrZWRfY2FzdDw+IGlz
IGFuYWxvZ291cyB0byBzdGF0aWNfY2FzdDw+IGZvciBudW1lcmljIHR5cGVzLAorLy8gZXhjZXB0
IHRoYXQgaXQgQ0hFQ0tzIHRoYXQgdGhlIHNwZWNpZmllZCBudW1lcmljIGNvbnZlcnNpb24gd2ls
bCBub3QKKy8vIG92ZXJmbG93IG9yIHVuZGVyZmxvdy4gTmFOIHNvdXJjZSB3aWxsIGFsd2F5cyB0
cmlnZ2VyIGEgQ0hFQ0suCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRHN0LCB0eXBlbmFtZSBTcmM+Citp
bmxpbmUgRHN0IGNoZWNrZWRfY2FzdChTcmMgdmFsdWUpCit7CisgICAgQ0hFQ0soSXNWYWx1ZUlu
UmFuZ2VGb3JOdW1lcmljVHlwZTxEc3Q+KHZhbHVlKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PERzdD4odmFsdWUpOworfQorCisvLyBIYW5kbGVOYU4gd2lsbCBjYXVzZSB0aGlzIGNsYXNzIHRv
IENIRUNLKGZhbHNlKS4KK3N0cnVjdCBTYXR1cmF0ZWRDYXN0TmFOQmVoYXZpb3JDaGVjaworewor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHN0YXRpYyBUIEhhbmRsZU5hTigpCisgICAg
eworICAgICAgICBDSEVDSyhmYWxzZSk7CisgICAgICAgIHJldHVybiBUKCk7CisgICAgfQorfTsK
KworLy8gSGFuZGxlTmFOIHdpbGwgcmV0dXJuIDAgaW4gdGhpcyBjYXNlLgorc3RydWN0IFNhdHVy
YXRlZENhc3ROYU5CZWhhdmlvclJldHVyblplcm8KK3sKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KKyAgICBzdGF0aWMgY29uc3RleHByIFQgSGFuZGxlTmFOKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBUKCk7CisgICAgfQorfTsKKworbmFtZXNwYWNlIGludGVybmFsCit7CisvLyBUaGlzIHdy
YXBwZXIgaXMgdXNlZCBmb3IgQysrMTEgY29uc3RleHByIHN1cHBvcnQgYnkgYXZvaWRpbmcgdGhl
IGRlY2xhcmF0aW9uCisvLyBvZiBsb2NhbCB2YXJpYWJsZXMgaW4gdGhlIHNhdHVyYXRlZF9jYXN0
IHRlbXBsYXRlIGZ1bmN0aW9uLgordGVtcGxhdGUgPHR5cGVuYW1lIERzdCwgY2xhc3MgTmFOSGFu
ZGxlciwgdHlwZW5hbWUgU3JjPgorY29uc3RleHByIERzdCBzYXR1cmF0ZWRfY2FzdF9pbXBsKGNv
bnN0IFNyYyB2YWx1ZSwgY29uc3QgUmFuZ2VDb25zdHJhaW50IGNvbnN0cmFpbnQpCit7CisgICAg
cmV0dXJuIGNvbnN0cmFpbnQgPT0gUkFOR0VfVkFMSUQKKyAgICAgICAgICAgICAgID8gc3RhdGlj
X2Nhc3Q8RHN0Pih2YWx1ZSkKKyAgICAgICAgICAgICAgIDogKGNvbnN0cmFpbnQgPT0gUkFOR0Vf
VU5ERVJGTE9XCisgICAgICAgICAgICAgICAgICAgICAgPyBzdGQ6Om51bWVyaWNfbGltaXRzPERz
dD46Om1pbigpCisgICAgICAgICAgICAgICAgICAgICAgOiAoY29uc3RyYWludCA9PSBSQU5HRV9P
VkVSRkxPVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHN0ZDo6bnVtZXJpY19saW1p
dHM8RHN0Pjo6bWF4KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoY29uc3RyYWlu
dCA9PSBSQU5HRV9JTlZBTElECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/
IE5hTkhhbmRsZXI6OnRlbXBsYXRlIEhhbmRsZU5hTjxEc3Q+KCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDogKE5PVFJFQUNIRUQoKSwgc3RhdGljX2Nhc3Q8RHN0Pih2YWx1
ZSkpKSkpOworfQorfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCisKKy8vIHNhdHVyYXRlZF9jYXN0
PD4gaXMgYW5hbG9nb3VzIHRvIHN0YXRpY19jYXN0PD4gZm9yIG51bWVyaWMgdHlwZXMsIGV4Y2Vw
dAorLy8gdGhhdCB0aGUgc3BlY2lmaWVkIG51bWVyaWMgY29udmVyc2lvbiB3aWxsIHNhdHVyYXRl
IHJhdGhlciB0aGFuIG92ZXJmbG93IG9yCisvLyB1bmRlcmZsb3cuIE5hTiBhc3NpZ25tZW50IHRv
IGFuIGludGVncmFsIHdpbGwgZGVmZXIgdGhlIGJlaGF2aW9yIHRvIGEKKy8vIHNwZWNpZmllZCBj
bGFzcy4gQnkgZGVmYXVsdCwgaXQgd2lsbCByZXR1cm4gMC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBE
c3QsIGNsYXNzIE5hTkhhbmRsZXIgPSBTYXR1cmF0ZWRDYXN0TmFOQmVoYXZpb3JSZXR1cm5aZXJv
LCB0eXBlbmFtZSBTcmM+Citjb25zdGV4cHIgRHN0IHNhdHVyYXRlZF9jYXN0KFNyYyB2YWx1ZSkK
K3sKKyAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxEc3Q+Ojppc19pZWM1NTkKKyAgICAg
ICAgICAgICAgID8gc3RhdGljX2Nhc3Q8RHN0Pih2YWx1ZSkgIC8vIEZsb2F0aW5nIHBvaW50IG9w
dGltaXphdGlvbi4KKyAgICAgICAgICAgICAgIDogaW50ZXJuYWw6OnNhdHVyYXRlZF9jYXN0X2lt
cGw8RHN0LCBOYU5IYW5kbGVyPigKKyAgICAgICAgICAgICAgICAgICAgIHZhbHVlLCBpbnRlcm5h
bDo6RHN0UmFuZ2VSZWxhdGlvblRvU3JjUmFuZ2U8RHN0Pih2YWx1ZSkpOworfQorCisvLyBzdHJp
Y3RfY2FzdDw+IGlzIGFuYWxvZ291cyB0byBzdGF0aWNfY2FzdDw+IGZvciBudW1lcmljIHR5cGVz
LCBleGNlcHQgdGhhdAorLy8gaXQgd2lsbCBjYXVzZSBhIGNvbXBpbGUgZmFpbHVyZSBpZiB0aGUg
ZGVzdGluYXRpb24gdHlwZSBpcyBub3QgbGFyZ2UgZW5vdWdoCisvLyB0byBjb250YWluIGFueSB2
YWx1ZSBpbiB0aGUgc291cmNlIHR5cGUuIEl0IHBlcmZvcm1zIG5vIHJ1bnRpbWUgY2hlY2tpbmcu
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRHN0LCB0eXBlbmFtZSBTcmM+Citjb25zdGV4cHIgRHN0IHN0
cmljdF9jYXN0KFNyYyB2YWx1ZSkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6bnVtZXJpY19s
aW1pdHM8U3JjPjo6aXNfc3BlY2lhbGl6ZWQsICJBcmd1bWVudCBtdXN0IGJlIG51bWVyaWMuIik7
CisgICAgc3RhdGljX2Fzc2VydChzdGQ6Om51bWVyaWNfbGltaXRzPERzdD46OmlzX3NwZWNpYWxp
emVkLCAiUmVzdWx0IG11c3QgYmUgbnVtZXJpYy4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChpbnRl
cm5hbDo6U3RhdGljRHN0UmFuZ2VSZWxhdGlvblRvU3JjUmFuZ2U8RHN0LCBTcmM+Ojp2YWx1ZSA9
PQorICAgICAgICAgICAgICAgICAgIGludGVybmFsOjpOVU1FUklDX1JBTkdFX0NPTlRBSU5FRCks
CisgICAgICAgICAgICAgICAgICAiVGhlIG51bWVyaWMgY29udmVyc2lvbiBpcyBvdXQgb2YgcmFu
Z2UgZm9yIHRoaXMgdHlwZS4gWW91ICIKKyAgICAgICAgICAgICAgICAgICJzaG91bGQgcHJvYmFi
bHkgdXNlIG9uZSBvZiB0aGUgZm9sbG93aW5nIGNvbnZlcnNpb24gIgorICAgICAgICAgICAgICAg
ICAgIm1lY2hhbmlzbXMgb24gdGhlIHZhbHVlIHlvdSB3YW50IHRvIHBhc3M6XG4iCisgICAgICAg
ICAgICAgICAgICAiLSBiYXNlOjpjaGVja2VkX2Nhc3RcbiIKKyAgICAgICAgICAgICAgICAgICIt
IGJhc2U6OnNhdHVyYXRlZF9jYXN0XG4iCisgICAgICAgICAgICAgICAgICAiLSBiYXNlOjpDaGVj
a2VkTnVtZXJpYyIpOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERzdD4odmFsdWUpOworfQor
CisvLyBTdHJpY3ROdW1lcmljIGltcGxlbWVudHMgY29tcGlsZSB0aW1lIHJhbmdlIGNoZWNraW5n
IGJldHdlZW4gbnVtZXJpYyB0eXBlcyBieQorLy8gd3JhcHBpbmcgYXNzaWdubWVudCBvcGVyYXRp
b25zIGluIGEgc3RyaWN0X2Nhc3QuIFRoaXMgY2xhc3MgaXMgaW50ZW5kZWQgdG8gYmUKKy8vIHVz
ZWQgZm9yIGZ1bmN0aW9uIGFyZ3VtZW50cyBhbmQgcmV0dXJuIHR5cGVzLCB0byBlbnN1cmUgdGhl
IGRlc3RpbmF0aW9uIHR5cGUKKy8vIGNhbiBhbHdheXMgY29udGFpbiB0aGUgc291cmNlIHR5cGUu
IFRoaXMgaXMgZXNzZW50aWFsbHkgdGhlIHNhbWUgYXMgZW5mb3JjaW5nCisvLyAtV2NvbnZlcnNp
b24gaW4gZ2NjIGFuZCBDNDMwMiB3YXJuaW5ncyBvbiBNU1ZDLCBidXQgaXQgY2FuIGJlIGFwcGxp
ZWQKKy8vIGluY3JlbWVudGFsbHkgYXQgQVBJIGJvdW5kYXJpZXMsIG1ha2luZyBpdCBlYXNpZXIg
dG8gY29udmVydCBjb2RlIHNvIHRoYXQgaXQKKy8vIGNvbXBpbGVzIGNsZWFubHkgd2l0aCB0cnVu
Y2F0aW9uIHdhcm5pbmdzIGVuYWJsZWQuCisvLyBUaGlzIHRlbXBsYXRlIHNob3VsZCBpbnRyb2R1
Y2Ugbm8gcnVudGltZSBvdmVyaGVhZCwgYnV0IGl0IGFsc28gcHJvdmlkZXMgbm8KKy8vIHJ1bnRp
bWUgY2hlY2tpbmcgb2YgYW55IG9mIHRoZSBhc3NvY2lhdGVkIG1hdGhlbWF0aWNhbCBvcGVyYXRp
b25zLiBVc2UKKy8vIENoZWNrZWROdW1lcmljIGZvciBydW50aW1lIHJhbmdlIGNoZWNrcyBvZiB0
aGUgYWN0dWFsIHZhbHVlIGJlaW5nIGFzc2lnbmVkLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citj
bGFzcyBTdHJpY3ROdW1lcmljCit7CisgIHB1YmxpYzoKKyAgICB0eXBlZGVmIFQgdHlwZTsKKwor
ICAgIGNvbnN0ZXhwciBTdHJpY3ROdW1lcmljKCkgOiB2YWx1ZV8oMCkge30KKworICAgIC8vIENv
cHkgY29uc3RydWN0b3IuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFNyYz4KKyAgICBjb25zdGV4
cHIgU3RyaWN0TnVtZXJpYyhjb25zdCBTdHJpY3ROdW1lcmljPFNyYz4gJnJocykgOiB2YWx1ZV8o
c3RyaWN0X2Nhc3Q8VD4ocmhzLnZhbHVlXykpCisgICAgeworICAgIH0KKworICAgIC8vIFRoaXMg
aXMgbm90IGFuIGV4cGxpY2l0IGNvbnN0cnVjdG9yIGJlY2F1c2Ugd2UgaW1wbGljaXRseSB1cGdy
YWRlIHJlZ3VsYXIKKyAgICAvLyBudW1lcmljcyB0byBTdHJpY3ROdW1lcmljcyB0byBtYWtlIHRo
ZW0gZWFzaWVyIHRvIHVzZS4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU3JjPgorICAgIGNvbnN0
ZXhwciBTdHJpY3ROdW1lcmljKFNyYyB2YWx1ZSkgOiB2YWx1ZV8oc3RyaWN0X2Nhc3Q8VD4odmFs
dWUpKQorICAgIHsKKyAgICB9CisKKyAgICAvLyBUaGUgbnVtZXJpYyBjYXN0IG9wZXJhdG9yIGJh
c2ljYWxseSBoYW5kbGVzIGFsbCB0aGUgbWFnaWMuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIERz
dD4KKyAgICBjb25zdGV4cHIgb3BlcmF0b3IgRHN0KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBzdHJpY3RfY2FzdDxEc3Q+KHZhbHVlXyk7CisgICAgfQorCisgIHByaXZhdGU6CisgICAg
Y29uc3QgVCB2YWx1ZV87Cit9OworCisvLyBFeHBsaWNpdGx5IG1ha2UgYSBzaG9ydGVyIHNpemVf
dCB0eXBlZGVmIGZvciBjb252ZW5pZW5jZS4KK3R5cGVkZWYgU3RyaWN0TnVtZXJpYzxzaXplX3Q+
IFNpemVUOworCit9ICAvLyBuYW1lc3BhY2UgYmFzZQorCisjZW5kaWYgIC8vIEJBU0VfTlVNRVJJ
Q1NfU0FGRV9DT05WRVJTSU9OU19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcy9iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lv
bnNfaW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21t
b24vdGhpcmRfcGFydHkvbnVtZXJpY3MvYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zX2lt
cGwuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9u
L3RoaXJkX3BhcnR5L251bWVyaWNzL2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9uc19pbXBs
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNjkgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRo
ZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworI2lmbmRlZiBCQVNFX05VTUVSSUNT
X1NBRkVfQ09OVkVSU0lPTlNfSU1QTF9IXworI2RlZmluZSBCQVNFX05VTUVSSUNTX1NBRkVfQ09O
VkVSU0lPTlNfSU1QTF9IXworCisjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8c3RkaW50
Lmg+CisKKyNpbmNsdWRlIDxjbGltaXRzPgorI2luY2x1ZGUgPGxpbWl0cz4KKworbmFtZXNwYWNl
IGJhc2UKK3sKK25hbWVzcGFjZSBpbnRlcm5hbAoreworCisvLyBUaGUgc3RkIGxpYnJhcnkgZG9l
c24ndCBwcm92aWRlIGEgYmluYXJ5IG1heF9leHBvbmVudCBmb3IgaW50ZWdlcnMsIGhvd2V2ZXIK
Ky8vIHdlIGNhbiBjb21wdXRlIG9uZSBieSBhZGRpbmcgb25lIHRvIHRoZSBudW1iZXIgb2Ygbm9u
LXNpZ24gYml0cy4gVGhpcyBhbGxvd3MKKy8vIGZvciBhY2N1cmF0ZSByYW5nZSBjb21wYXJpc29u
cyBiZXR3ZWVuIGZsb2F0aW5nIHBvaW50IGFuZCBpbnRlZ2VyIHR5cGVzLgordGVtcGxhdGUgPHR5
cGVuYW1lIE51bWVyaWNUeXBlPgorc3RydWN0IE1heEV4cG9uZW50Cit7CisgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2FyaXRobWV0aWM8TnVtZXJpY1R5cGU+Ojp2YWx1ZSwgIkFyZ3VtZW50IG11
c3QgYmUgbnVtZXJpYy4iKTsKKyAgICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0KKyAgICAgICAg
c3RkOjpudW1lcmljX2xpbWl0czxOdW1lcmljVHlwZT46OmlzX2llYzU1OQorICAgICAgICAgICAg
PyBzdGQ6Om51bWVyaWNfbGltaXRzPE51bWVyaWNUeXBlPjo6bWF4X2V4cG9uZW50CisgICAgICAg
ICAgICA6IChzaXplb2YoTnVtZXJpY1R5cGUpICogQ0hBUl9CSVQgKyAxIC0gc3RkOjpudW1lcmlj
X2xpbWl0czxOdW1lcmljVHlwZT46OmlzX3NpZ25lZCk7Cit9OworCitlbnVtIEludGVnZXJSZXBy
ZXNlbnRhdGlvbgoreworICAgIElOVEVHRVJfUkVQUkVTRU5UQVRJT05fVU5TSUdORUQsCisgICAg
SU5URUdFUl9SRVBSRVNFTlRBVElPTl9TSUdORUQKK307CisKKy8vIEEgcmFuZ2UgZm9yIGEgZ2l2
ZW4gbnVubWVyaWMgU3JjIHR5cGUgaXMgY29udGFpbmVkIGZvciBhIGdpdmVuIG51bWVyaWMgRHN0
CisvLyB0eXBlIGlmIGJvdGggbnVtZXJpY19saW1pdHM8U3JjPjo6bWF4KCkgPD0gbnVtZXJpY19s
aW1pdHM8RHN0Pjo6bWF4KCkgYW5kCisvLyBudW1lcmljX2xpbWl0czxTcmM+OjptaW4oKSA+PSBu
dW1lcmljX2xpbWl0czxEc3Q+OjptaW4oKSBhcmUgdHJ1ZS4KKy8vIFdlIGltcGxlbWVudCB0aGlz
IGFzIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9ucyByYXRoZXIgdGhhbiBzaW1wbGUgc3RhdGljCisv
LyBjb21wYXJpc29ucyB0byBlbnN1cmUgdHlwZSBjb3JyZWN0bmVzcyBpbiBvdXIgY29tcGFyaXNv
bnMuCitlbnVtIE51bWVyaWNSYW5nZVJlcHJlc2VudGF0aW9uCit7CisgICAgTlVNRVJJQ19SQU5H
RV9OT1RfQ09OVEFJTkVELAorICAgIE5VTUVSSUNfUkFOR0VfQ09OVEFJTkVECit9OworCisvLyBI
ZWxwZXIgdGVtcGxhdGVzIHRvIHN0YXRpY2FsbHkgZGV0ZXJtaW5lIGlmIG91ciBkZXN0aW5hdGlv
biB0eXBlIGNhbiBjb250YWluCisvLyBtYXhpbXVtIGFuZCBtaW5pbXVtIHZhbHVlcyByZXByZXNl
bnRlZCBieSB0aGUgc291cmNlIHR5cGUuCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBEc3QsCisgICAg
ICAgICAgdHlwZW5hbWUgU3JjLAorICAgICAgICAgIEludGVnZXJSZXByZXNlbnRhdGlvbiBEc3RT
aWduID0gc3RkOjpudW1lcmljX2xpbWl0czxEc3Q+Ojppc19zaWduZWQKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IElOVEVHRVJfUkVQUkVTRU5UQVRJT05f
U0lHTkVECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBJ
TlRFR0VSX1JFUFJFU0VOVEFUSU9OX1VOU0lHTkVELAorICAgICAgICAgIEludGVnZXJSZXByZXNl
bnRhdGlvbiBTcmNTaWduID0gc3RkOjpudW1lcmljX2xpbWl0czxTcmM+Ojppc19zaWduZWQKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IElOVEVHRVJfUkVQ
UkVTRU5UQVRJT05fU0lHTkVECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiBJTlRFR0VSX1JFUFJFU0VOVEFUSU9OX1VOU0lHTkVEPgorc3RydWN0IFN0YXRp
Y0RzdFJhbmdlUmVsYXRpb25Ub1NyY1JhbmdlOworCisvLyBTYW1lIHNpZ246IERzdCBpcyBndWFy
YW50ZWVkIHRvIGNvbnRhaW4gU3JjIG9ubHkgaWYgaXRzIHJhbmdlIGlzIGVxdWFsIG9yCisvLyBs
YXJnZXIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRHN0LCB0eXBlbmFtZSBTcmMsIEludGVnZXJSZXBy
ZXNlbnRhdGlvbiBTaWduPgorc3RydWN0IFN0YXRpY0RzdFJhbmdlUmVsYXRpb25Ub1NyY1Jhbmdl
PERzdCwgU3JjLCBTaWduLCBTaWduPgoreworICAgIHN0YXRpYyBjb25zdCBOdW1lcmljUmFuZ2VS
ZXByZXNlbnRhdGlvbiB2YWx1ZSA9CisgICAgICAgIE1heEV4cG9uZW50PERzdD46OnZhbHVlID49
IE1heEV4cG9uZW50PFNyYz46OnZhbHVlID8gTlVNRVJJQ19SQU5HRV9DT05UQUlORUQKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBO
VU1FUklDX1JBTkdFX05PVF9DT05UQUlORUQ7Cit9OworCisvLyBVbnNpZ25lZCB0byBzaWduZWQ6
IERzdCBpcyBndWFyYW50ZWVkIHRvIGNvbnRhaW4gc291cmNlIG9ubHkgaWYgaXRzIHJhbmdlIGlz
CisvLyBsYXJnZXIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRHN0LCB0eXBlbmFtZSBTcmM+CitzdHJ1
Y3QgU3RhdGljRHN0UmFuZ2VSZWxhdGlvblRvU3JjUmFuZ2U8RHN0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJTlRFR0VSX1JFUFJFU0VOVEFUSU9OX1NJR05FRCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlRFR0VSX1JFUFJFU0VOVEFUSU9OX1VOU0lH
TkVEPgoreworICAgIHN0YXRpYyBjb25zdCBOdW1lcmljUmFuZ2VSZXByZXNlbnRhdGlvbiB2YWx1
ZSA9CisgICAgICAgIE1heEV4cG9uZW50PERzdD46OnZhbHVlID4gTWF4RXhwb25lbnQ8U3JjPjo6
dmFsdWUgPyBOVU1FUklDX1JBTkdFX0NPTlRBSU5FRAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogTlVNRVJJQ19SQU5HRV9OT1RfQ09O
VEFJTkVEOworfTsKKworLy8gU2lnbmVkIHRvIHVuc2lnbmVkOiBEc3QgY2Fubm90IGJlIHN0YXRp
Y2FsbHkgZGV0ZXJtaW5lZCB0byBjb250YWluIFNyYy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBEc3Qs
IHR5cGVuYW1lIFNyYz4KK3N0cnVjdCBTdGF0aWNEc3RSYW5nZVJlbGF0aW9uVG9TcmNSYW5nZTxE
c3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3JjLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOVEVHRVJfUkVQUkVTRU5UQVRJT05f
VU5TSUdORUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5URUdF
Ul9SRVBSRVNFTlRBVElPTl9TSUdORUQ+Cit7CisgICAgc3RhdGljIGNvbnN0IE51bWVyaWNSYW5n
ZVJlcHJlc2VudGF0aW9uIHZhbHVlID0gTlVNRVJJQ19SQU5HRV9OT1RfQ09OVEFJTkVEOworfTsK
KworZW51bSBSYW5nZUNvbnN0cmFpbnQgOiB1bnNpZ25lZCBjaGFyCit7CisgICAgUkFOR0VfVkFM
SUQgICAgID0gMHgwLCAgLy8gVmFsdWUgY2FuIGJlIHJlcHJlc2VudGVkIGJ5IHRoZSBkZXN0aW5h
dGlvbiB0eXBlLgorICAgIFJBTkdFX1VOREVSRkxPVyA9IDB4MSwgIC8vIFZhbHVlIHdvdWxkIG92
ZXJmbG93LgorICAgIFJBTkdFX09WRVJGTE9XICA9IDB4MiwgIC8vIFZhbHVlIHdvdWxkIHVuZGVy
Zmxvdy4KKyAgICBSQU5HRV9JTlZBTElEICAgPSBSQU5HRV9VTkRFUkZMT1cgfCBSQU5HRV9PVkVS
RkxPVyAgLy8gSW52YWxpZCAoaS5lLiBOYU4pLgorfTsKKworLy8gSGVscGVyIGZ1bmN0aW9uIGZv
ciBjb2VyY2luZyBhbiBpbnQgYmFjayB0byBhIFJhbmdlQ29udHJhaW50LgorY29uc3RleHByIFJh
bmdlQ29uc3RyYWludCBHZXRSYW5nZUNvbnN0cmFpbnQoaW50IGludGVnZXJfcmFuZ2VfY29uc3Ry
YWludCkKK3sKKyAgICAvLyBUT0RPKGpzY2h1aCk6IE9uY2Ugd2UgZ2V0IGZ1bGwgQysrMTQgc3Vw
cG9ydCB3ZSB3YW50IHRoaXMKKyAgICAvLyBhc3NlcnQoaW50ZWdlcl9yYW5nZV9jb25zdHJhaW50
ID49IFJBTkdFX1ZBTElEICYmCisgICAgLy8gICAgICAgIGludGVnZXJfcmFuZ2VfY29uc3RyYWlu
dCA8PSBSQU5HRV9JTlZBTElEKQorICAgIHJldHVybiBzdGF0aWNfY2FzdDxSYW5nZUNvbnN0cmFp
bnQ+KGludGVnZXJfcmFuZ2VfY29uc3RyYWludCk7Cit9CisKKy8vIFRoaXMgZnVuY3Rpb24gY3Jl
YXRlcyBhIFJhbmdlQ29uc3RyYWludCBmcm9tIGFuIHVwcGVyIGFuZCBsb3dlciBib3VuZAorLy8g
Y2hlY2sgYnkgdGFraW5nIGFkdmFudGFnZSBvZiB0aGUgZmFjdCB0aGF0IG9ubHkgTmFOIGNhbiBi
ZSBvdXQgb2YgcmFuZ2UgaW4KKy8vIGJvdGggZGlyZWN0aW9ucyBhdCBvbmNlLgorY29uc3RleHBy
IGlubGluZSBSYW5nZUNvbnN0cmFpbnQgR2V0UmFuZ2VDb25zdHJhaW50KGJvb2wgaXNfaW5fdXBw
ZXJfYm91bmQsIGJvb2wgaXNfaW5fbG93ZXJfYm91bmQpCit7CisgICAgcmV0dXJuIEdldFJhbmdl
Q29uc3RyYWludCgoaXNfaW5fdXBwZXJfYm91bmQgPyAwIDogUkFOR0VfT1ZFUkZMT1cpIHwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpc19pbl9sb3dlcl9ib3VuZCA/IDAgOiBSQU5H
RV9VTkRFUkZMT1cpKTsKK30KKworLy8gVGhlIGZvbGxvd2luZyBoZWxwZXIgdGVtcGxhdGUgYWRk
cmVzc2VzIGEgY29ybmVyIGNhc2UgaW4gcmFuZ2UgY2hlY2tzIGZvcgorLy8gY29udmVyc2lvbiBm
cm9tIGEgZmxvYXRpbmctcG9pbnQgdHlwZSB0byBhbiBpbnRlZ3JhbCB0eXBlIG9mIHNtYWxsZXIg
cmFuZ2UKKy8vIGJ1dCBsYXJnZXIgcHJlY2lzaW9uIChlLmcuIGZsb2F0IC0+IHVuc2lnbmVkKS4g
VGhlIHByb2JsZW0gaXMgYXMgZm9sbG93czoKKy8vICAgMS4gSW50ZWdyYWwgbWF4aW11bSBpcyBh
bHdheXMgb25lIGxlc3MgdGhhbiBhIHBvd2VyIG9mIHR3bywgc28gaXQgbXVzdCBiZQorLy8gICAg
ICB0cnVuY2F0ZWQgdG8gZml0IHRoZSBtYW50aXNzYSBvZiB0aGUgZmxvYXRpbmcgcG9pbnQuIFRo
ZSBkaXJlY3Rpb24gb2YKKy8vICAgICAgcm91bmRpbmcgaXMgaW1wbGVtZW50YXRpb24gZGVmaW5l
ZCwgYnV0IGJ5IGRlZmF1bHQgaXQncyBhbHdheXMgSUVFRQorLy8gICAgICBmbG9hdHMsIHdoaWNo
IHJvdW5kIHRvIG5lYXJlc3QgYW5kIHRodXMgcmVzdWx0IGluIGEgdmFsdWUgb2YgbGFyZ2VyCisv
LyAgICAgIG1hZ25pdHVkZSB0aGFuIHRoZSBpbnRlZ3JhbCB2YWx1ZS4KKy8vICAgICAgRXhhbXBs
ZTogZmxvYXQgZiA9IFVJTlRfTUFYOyAvLyBmIGlzIDQyOTQ5NjcyOTZmIGJ1dCBVSU5UX01BWAor
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIDQyOTQ5NjcyOTV1Lgor
Ly8gICAyLiBJZiB0aGUgZmxvYXRpbmcgcG9pbnQgdmFsdWUgaXMgZXF1YWwgdG8gdGhlIHByb21v
dGVkIGludGVncmFsIG1heGltdW0KKy8vICAgICAgdmFsdWUsIGEgcmFuZ2UgY2hlY2sgd2lsbCBl
cnJvbmVvdXNseSBwYXNzLgorLy8gICAgICBFeGFtcGxlOiAoNDI5NDk2NzI5NmYgPD0gNDI5NDk2
NzI5NXUpIC8vIFRoaXMgaXMgdHJ1ZSBkdWUgdG8gYSBwcmVjaXNpb24KKy8vICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb3NzIGluIHJvdW5kaW5nIHVwIHRv
IGZsb2F0LgorLy8gICAzLiBXaGVuIHRoZSBmbG9hdGluZyBwb2ludCB2YWx1ZSBpcyB0aGVuIGNv
bnZlcnRlZCB0byBhbiBpbnRlZ3JhbCwgdGhlCisvLyAgICAgIHJlc3VsdGluZyB2YWx1ZSBpcyBv
dXQgb2YgcmFuZ2UgZm9yIHRoZSB0YXJnZXQgaW50ZWdyYWwgdHlwZSBhbmQKKy8vICAgICAgdGh1
cyBpcyBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkLgorLy8gICAgICBFeGFtcGxlOiB1bnNpZ25lZCB1
ID0gKGZsb2F0KUlOVF9NQVg7IC8vIHUgd2lsbCB0eXBpY2FsbHkgb3ZlcmZsb3cgdG8gMC4KKy8v
IFRvIGZpeCB0aGlzIGJ1ZyB3ZSBtYW51YWxseSB0cnVuY2F0ZSB0aGUgbWF4aW11bSB2YWx1ZSB3
aGVuIHRoZSBkZXN0aW5hdGlvbgorLy8gdHlwZSBpcyBhbiBpbnRlZ3JhbCBvZiBsYXJnZXIgcHJl
Y2lzaW9uIHRoYW4gdGhlIHNvdXJjZSBmbG9hdGluZy1wb2ludCB0eXBlLAorLy8gc3VjaCB0aGF0
IHRoZSByZXN1bHRpbmcgbWF4aW11bSBpcyByZXByZXNlbnRlZCBleGFjdGx5IGFzIGEgZmxvYXRp
bmcgcG9pbnQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRHN0LCB0eXBlbmFtZSBTcmM+CitzdHJ1Y3Qg
TmFycm93aW5nUmFuZ2UKK3sKKyAgICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6bnVtZXJpY19saW1p
dHM8U3JjPiBTcmNMaW1pdHM7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Om51bWVyaWNfbGlt
aXRzPERzdD4gRHN0TGltaXRzOworICAgIC8vIFRoZSBmb2xsb3dpbmcgbG9naWMgYXZvaWRzIHdh
cm5pbmdzIHdoZXJlIHRoZSBtYXggZnVuY3Rpb24gaXMKKyAgICAvLyBpbnN0YW50aWF0ZWQgd2l0
aCBpbnZhbGlkIHZhbHVlcyBmb3IgYSBiaXQgc2hpZnQgKGV2ZW4gdGhvdWdoCisgICAgLy8gc3Vj
aCBhIGZ1bmN0aW9uIGNhbiBuZXZlciBiZSBjYWxsZWQpLgorICAgIHN0YXRpYyBjb25zdCBpbnQg
c2hpZnQgPSAoTWF4RXhwb25lbnQ8U3JjPjo6dmFsdWUgPiBNYXhFeHBvbmVudDxEc3Q+Ojp2YWx1
ZSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3JjTGltaXRzOjpkaWdpdHMgPCBE
c3RMaW1pdHM6OmRpZ2l0cyAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3JjTGlt
aXRzOjppc19pZWM1NTkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERzdExpbWl0
czo6aXNfaW50ZWdlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKERzdExp
bWl0czo6ZGlnaXRzIC0gU3JjTGltaXRzOjpkaWdpdHMpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6IDA7CisKKyAgICBzdGF0aWMgY29uc3RleHByIERzdCBtYXgoKQorICAgIHsK
KyAgICAgICAgLy8gV2UgdXNlIFVJTlRNQVhfQyBiZWxvdyB0byBhdm9pZCBjb21waWxlciB3YXJu
aW5ncyBhYm91dCBzaGlmdGluZyBmbG9hdGluZworICAgICAgICAvLyBwb2ludHMuIFNpbmNlIGl0
J3MgYSBjb21waWxlIHRpbWUgY2FsY3VsYXRpb24sIGl0IHNob3VsZG4ndCBoYXZlIGFueQorICAg
ICAgICAvLyBwZXJmb3JtYW5jZSBpbXBhY3QuCisgICAgICAgIHJldHVybiBEc3RMaW1pdHM6Om1h
eCgpIC0gc3RhdGljX2Nhc3Q8RHN0PigoVUlOVE1BWF9DKDEpIDw8IHNoaWZ0KSAtIDEpOworICAg
IH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIgRHN0IG1pbigpCisgICAgeworICAgICAgICByZXR1
cm4gc3RkOjpudW1lcmljX2xpbWl0czxEc3Q+Ojppc19pZWM1NTkgPyAtRHN0TGltaXRzOjptYXgo
KSA6IERzdExpbWl0czo6bWluKCk7CisgICAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIERz
dCwKKyAgICAgICAgICB0eXBlbmFtZSBTcmMsCisgICAgICAgICAgSW50ZWdlclJlcHJlc2VudGF0
aW9uIERzdFNpZ24gPSBzdGQ6Om51bWVyaWNfbGltaXRzPERzdD46OmlzX3NpZ25lZAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gSU5URUdFUl9SRVBSRVNF
TlRBVElPTl9TSUdORUQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6IElOVEVHRVJfUkVQUkVTRU5UQVRJT05fVU5TSUdORUQsCisgICAgICAgICAgSW50ZWdl
clJlcHJlc2VudGF0aW9uIFNyY1NpZ24gPSBzdGQ6Om51bWVyaWNfbGltaXRzPFNyYz46OmlzX3Np
Z25lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gSU5U
RUdFUl9SRVBSRVNFTlRBVElPTl9TSUdORUQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6IElOVEVHRVJfUkVQUkVTRU5UQVRJT05fVU5TSUdORUQsCisgICAg
ICAgICAgTnVtZXJpY1JhbmdlUmVwcmVzZW50YXRpb24gRHN0UmFuZ2UgPSBTdGF0aWNEc3RSYW5n
ZVJlbGF0aW9uVG9TcmNSYW5nZTxEc3QsIFNyYz46OnZhbHVlPgorc3RydWN0IERzdFJhbmdlUmVs
YXRpb25Ub1NyY1JhbmdlSW1wbDsKKworLy8gVGhlIGZvbGxvd2luZyB0ZW1wbGF0ZXMgYXJlIGZv
ciByYW5nZXMgdGhhdCBtdXN0IGJlIHZlcmlmaWVkIGF0IHJ1bnRpbWUuIFdlCisvLyBzcGxpdCBp
dCBpbnRvIGNoZWNrcyBiYXNlZCBvbiBzaWduZWRuZXNzIHRvIGF2b2lkIGNvbmZ1c2luZyBjYXN0
cyBhbmQKKy8vIGNvbXBpbGVyIHdhcm5pbmdzIG9uIHNpZ25lZCBhbiB1bnNpZ25lZCBjb21wYXJp
c29ucy4KKworLy8gRHN0IHJhbmdlIGlzIHN0YXRpY2FsbHkgZGV0ZXJtaW5lZCB0byBjb250YWlu
IFNyYzogTm90aGluZyB0byBjaGVjay4KK3RlbXBsYXRlIDx0eXBlbmFtZSBEc3QsIHR5cGVuYW1l
IFNyYywgSW50ZWdlclJlcHJlc2VudGF0aW9uIERzdFNpZ24sIEludGVnZXJSZXByZXNlbnRhdGlv
biBTcmNTaWduPgorc3RydWN0IERzdFJhbmdlUmVsYXRpb25Ub1NyY1JhbmdlSW1wbDxEc3QsIFNy
YywgRHN0U2lnbiwgU3JjU2lnbiwgTlVNRVJJQ19SQU5HRV9DT05UQUlORUQ+Cit7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBSYW5nZUNvbnN0cmFpbnQgQ2hlY2soU3JjIHZhbHVlKSB7IHJldHVybiBS
QU5HRV9WQUxJRDsgfQorfTsKKworLy8gU2lnbmVkIHRvIHNpZ25lZCBuYXJyb3dpbmc6IEJvdGgg
dGhlIHVwcGVyIGFuZCBsb3dlciBib3VuZGFyaWVzIG1heSBiZQorLy8gZXhjZWVkZWQuCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgRHN0LCB0eXBlbmFtZSBTcmM+CitzdHJ1Y3QgRHN0UmFuZ2VSZWxhdGlv
blRvU3JjUmFuZ2VJbXBsPERzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU3JjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlRFR0VSX1JF
UFJFU0VOVEFUSU9OX1NJR05FRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSU5URUdFUl9SRVBSRVNFTlRBVElPTl9TSUdORUQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5VTUVSSUNfUkFOR0VfTk9UX0NPTlRBSU5FRD4KK3sKKyAgICBzdGF0
aWMgY29uc3RleHByIFJhbmdlQ29uc3RyYWludCBDaGVjayhTcmMgdmFsdWUpCisgICAgeworICAg
ICAgICByZXR1cm4gR2V0UmFuZ2VDb25zdHJhaW50KCh2YWx1ZSA8PSBOYXJyb3dpbmdSYW5nZTxE
c3QsIFNyYz46Om1heCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmFs
dWUgPj0gTmFycm93aW5nUmFuZ2U8RHN0LCBTcmM+OjptaW4oKSkpOworICAgIH0KK307CisKKy8v
IFVuc2lnbmVkIHRvIHVuc2lnbmVkIG5hcnJvd2luZzogT25seSB0aGUgdXBwZXIgYm91bmRhcnkg
Y2FuIGJlIGV4Y2VlZGVkLgordGVtcGxhdGUgPHR5cGVuYW1lIERzdCwgdHlwZW5hbWUgU3JjPgor
c3RydWN0IERzdFJhbmdlUmVsYXRpb25Ub1NyY1JhbmdlSW1wbDxEc3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSU5URUdFUl9SRVBSRVNFTlRBVElPTl9VTlNJR05FRCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5URUdFUl9SRVBSRVNFTlRBVElPTl9VTlNJR05F
RCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVNRVJJQ19SQU5HRV9O
T1RfQ09OVEFJTkVEPgoreworICAgIHN0YXRpYyBjb25zdGV4cHIgUmFuZ2VDb25zdHJhaW50IENo
ZWNrKFNyYyB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBHZXRSYW5nZUNvbnN0cmFpbnQo
dmFsdWUgPD0gTmFycm93aW5nUmFuZ2U8RHN0LCBTcmM+OjptYXgoKSwgdHJ1ZSk7CisgICAgfQor
fTsKKworLy8gVW5zaWduZWQgdG8gc2lnbmVkOiBUaGUgdXBwZXIgYm91bmRhcnkgbWF5IGJlIGV4
Y2VlZGVkLgordGVtcGxhdGUgPHR5cGVuYW1lIERzdCwgdHlwZW5hbWUgU3JjPgorc3RydWN0IERz
dFJhbmdlUmVsYXRpb25Ub1NyY1JhbmdlSW1wbDxEc3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSU5URUdFUl9SRVBSRVNFTlRBVElPTl9TSUdORUQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIElOVEVHRVJfUkVQUkVTRU5UQVRJT05fVU5TSUdORUQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTUVSSUNfUkFOR0VfTk9UX0NPTlRBSU5F
RD4KK3sKKyAgICBzdGF0aWMgY29uc3RleHByIFJhbmdlQ29uc3RyYWludCBDaGVjayhTcmMgdmFs
dWUpCisgICAgeworICAgICAgICByZXR1cm4gc2l6ZW9mKERzdCkgPiBzaXplb2YoU3JjKQorICAg
ICAgICAgICAgICAgICAgID8gUkFOR0VfVkFMSUQKKyAgICAgICAgICAgICAgICAgICA6IEdldFJh
bmdlQ29uc3RyYWludCh2YWx1ZSA8PSBzdGF0aWNfY2FzdDxTcmM+KE5hcnJvd2luZ1JhbmdlPERz
dCwgU3JjPjo6bWF4KCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRydWUpOworICAgIH0KK307CisKKy8vIFNpZ25lZCB0byB1bnNpZ25lZDogVGhlIHVwcGVyIGJv
dW5kYXJ5IG1heSBiZSBleGNlZWRlZCBmb3IgYSBuYXJyb3dlciBEc3QsCisvLyBhbmQgYW55IG5l
Z2F0aXZlIHZhbHVlIGV4Y2VlZHMgdGhlIGxvd2VyIGJvdW5kYXJ5LgordGVtcGxhdGUgPHR5cGVu
YW1lIERzdCwgdHlwZW5hbWUgU3JjPgorc3RydWN0IERzdFJhbmdlUmVsYXRpb25Ub1NyY1Jhbmdl
SW1wbDxEc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNyYywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5URUdFUl9SRVBSRVNFTlRBVElP
Tl9VTlNJR05FRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5URUdF
Ul9SRVBSRVNFTlRBVElPTl9TSUdORUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5VTUVSSUNfUkFOR0VfTk9UX0NPTlRBSU5FRD4KK3sKKyAgICBzdGF0aWMgY29uc3Rl
eHByIFJhbmdlQ29uc3RyYWludCBDaGVjayhTcmMgdmFsdWUpCisgICAgeworICAgICAgICByZXR1
cm4gKE1heEV4cG9uZW50PERzdD46OnZhbHVlID49IE1heEV4cG9uZW50PFNyYz46OnZhbHVlKQor
ICAgICAgICAgICAgICAgICAgID8gR2V0UmFuZ2VDb25zdHJhaW50KHRydWUsIHZhbHVlID49IHN0
YXRpY19jYXN0PFNyYz4oMCkpCisgICAgICAgICAgICAgICAgICAgOiBHZXRSYW5nZUNvbnN0cmFp
bnQodmFsdWUgPD0gc3RhdGljX2Nhc3Q8U3JjPihOYXJyb3dpbmdSYW5nZTxEc3QsIFNyYz46Om1h
eCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA+PSBz
dGF0aWNfY2FzdDxTcmM+KDApKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRHN0
LCB0eXBlbmFtZSBTcmM+Citjb25zdGV4cHIgUmFuZ2VDb25zdHJhaW50IERzdFJhbmdlUmVsYXRp
b25Ub1NyY1JhbmdlKFNyYyB2YWx1ZSkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6bnVtZXJp
Y19saW1pdHM8U3JjPjo6aXNfc3BlY2lhbGl6ZWQsICJBcmd1bWVudCBtdXN0IGJlIG51bWVyaWMu
Iik7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6Om51bWVyaWNfbGltaXRzPERzdD46OmlzX3NwZWNp
YWxpemVkLCAiUmVzdWx0IG11c3QgYmUgbnVtZXJpYy4iKTsKKyAgICByZXR1cm4gRHN0UmFuZ2VS
ZWxhdGlvblRvU3JjUmFuZ2VJbXBsPERzdCwgU3JjPjo6Q2hlY2sodmFsdWUpOworfQorCit9ICAv
LyBuYW1lc3BhY2UgaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBiYXNlCisKKyNlbmRpZiAgLy8g
QkFTRV9OVU1FUklDU19TQUZFX0NPTlZFUlNJT05TX0lNUExfSF8KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vdGhpcmRfcGFydHkvbnVtZXJpY3MvYmFzZS9udW1lcmlj
cy9zYWZlX21hdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tbW9uL3RoaXJkX3BhcnR5L251bWVyaWNzL2Jhc2UvbnVtZXJpY3Mvc2FmZV9tYXRoLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi90aGlyZF9w
YXJ0eS9udW1lcmljcy9iYXNlL251bWVyaWNzL3NhZmVfbWF0aC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMzI0IEBACisvLyBDb3B5cmlnaHQgMjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisKKyNpZm5kZWYgQkFTRV9OVU1FUklDU19TQUZFX01BVEhfSF8KKyNkZWZp
bmUgQkFTRV9OVU1FUklDU19TQUZFX01BVEhfSF8KKworI2luY2x1ZGUgPHN0ZGRlZi5oPgorCisj
aW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorCisjaW5jbHVkZSAiYmFz
ZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAiYmFzZS9udW1lcmljcy9zYWZlX21hdGhfaW1wbC5oIgor
CituYW1lc3BhY2UgYmFzZQoreworCituYW1lc3BhY2UgaW50ZXJuYWwKK3sKKworLy8gQ2hlY2tl
ZE51bWVyaWMgaW1wbGVtZW50cyBhbGwgdGhlIGxvZ2ljIGFuZCBvcGVyYXRvcnMgZm9yIGRldGVj
dGluZyBpbnRlZ2VyCisvLyBib3VuZGFyeSBjb25kaXRpb25zIHN1Y2ggYXMgb3ZlcmZsb3csIHVu
ZGVyZmxvdywgYW5kIGludmFsaWQgY29udmVyc2lvbnMuCisvLyBUaGUgQ2hlY2tlZE51bWVyaWMg
dHlwZSBpbXBsaWNpdGx5IGNvbnZlcnRzIGZyb20gZmxvYXRpbmcgcG9pbnQgYW5kIGludGVnZXIK
Ky8vIGRhdGEgdHlwZXMsIGFuZCBjb250YWlucyBvdmVybG9hZHMgZm9yIGJhc2ljIGFyaXRobWV0
aWMgb3BlcmF0aW9ucyAoaS5lLjogKywKKy8vIC0sICosIC8sICUpLgorLy8KKy8vIFRoZSBmb2xs
b3dpbmcgbWV0aG9kcyBjb252ZXJ0IGZyb20gQ2hlY2tlZE51bWVyaWMgdG8gc3RhbmRhcmQgbnVt
ZXJpYyB2YWx1ZXM6CisvLyBJc1ZhbGlkKCkgLSBSZXR1cm5zIHRydWUgaWYgdGhlIHVuZGVybHlp
bmcgbnVtZXJpYyB2YWx1ZSBpcyB2YWxpZCAoaS5lLiBoYXMKKy8vICAgICAgICAgICAgIGhhcyBu
b3Qgd3JhcHBlZCBhbmQgaXMgbm90IHRoZSByZXN1bHQgb2YgYW4gaW52YWxpZCBjb252ZXJzaW9u
KS4KKy8vIFZhbHVlT3JEaWUoKSAtIFJldHVybnMgdGhlIHVuZGVybHlpbmcgdmFsdWUuIElmIHRo
ZSBzdGF0ZSBpcyBub3QgdmFsaWQgdGhpcworLy8gICAgICAgICAgICAgICAgY2FsbCB3aWxsIGNy
YXNoIG9uIGEgQ0hFQ0suCisvLyBWYWx1ZU9yRGVmYXVsdCgpIC0gUmV0dXJucyB0aGUgY3VycmVu
dCB2YWx1ZSwgb3IgdGhlIHN1cHBsaWVkIGRlZmF1bHQgaWYgdGhlCisvLyAgICAgICAgICAgICAg
ICAgICAgc3RhdGUgaXMgbm90IHZhbGlkLgorLy8gVmFsdWVGbG9hdGluZygpIC0gUmV0dXJucyB0
aGUgdW5kZXJseWluZyBmbG9hdGluZyBwb2ludCB2YWx1ZSAodmFsaWQgb25seQorLy8gICAgICAg
ICAgICAgICAgICAgb25seSBmb3IgZmxvYXRpbmcgcG9pbnQgQ2hlY2tlZE51bWVyaWMgdHlwZXMp
LgorLy8KKy8vIEJpdHdpc2Ugb3BlcmF0aW9ucyBhcmUgZXhwbGljaXRseSBub3Qgc3VwcG9ydGVk
LCBiZWNhdXNlIGNvcnJlY3QKKy8vIGhhbmRsaW5nIG9mIHNvbWUgY2FzZXMgKGUuZy4gc2lnbiBt
YW5pcHVsYXRpb24pIGlzIGFtYmlndW91cy4gQ29tcGFyaXNvbgorLy8gb3BlcmF0aW9ucyBhcmUg
ZXhwbGljaXRseSBub3Qgc3VwcG9ydGVkIGJlY2F1c2UgdGhleSBjb3VsZCByZXN1bHQgaW4gYSBj
cmFzaAorLy8gb24gYSBDSEVDSyBjb25kaXRpb24uIFlvdSBzaG91bGQgdXNlIHBhdHRlcm5zIGxp
a2UgdGhlIGZvbGxvd2luZyBmb3IgdGhlc2UKKy8vIG9wZXJhdGlvbnM6CisvLyBCaXR3aXNlIG9w
ZXJhdGlvbjoKKy8vICAgICBDaGVja2VkTnVtZXJpYzxpbnQ+IGNoZWNrZWRfaW50ID0gdW50cnVz
dGVkX2lucHV0X3ZhbHVlOworLy8gICAgIGludCB4ID0gY2hlY2tlZF9pbnQuVmFsdWVPckRlZmF1
bHQoMCkgfCBrRmxhZ1ZhbHVlczsKKy8vIENvbXBhcmlzb246CisvLyAgIENoZWNrZWROdW1lcmlj
PHNpemVfdD4gY2hlY2tlZF9zaXplID0gdW50cnVzdGVkX2lucHV0X3ZhbHVlOworLy8gICBjaGVj
a2VkX3NpemUgKz0gSEVBREVSIExFTkdUSDsKKy8vICAgaWYgKGNoZWNrZWRfc2l6ZS5Jc1ZhbGlk
KCkgJiYgY2hlY2tlZF9zaXplLlZhbHVlT3JEaWUoKSA8IGJ1ZmZlcl9zaXplKQorLy8gICAgIERv
IHN0dWZmLi4uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIENoZWNrZWROdW1lcmljCit7
CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlLCAiQ2hlY2tl
ZE51bWVyaWM8VD46IFQgbXVzdCBiZSBhIG51bWVyaWMgdHlwZS4iKTsKKworICBwdWJsaWM6Cisg
ICAgdHlwZWRlZiBUIHR5cGU7CisKKyAgICBDaGVja2VkTnVtZXJpYygpIHt9CisKKyAgICAvLyBD
b3B5IGNvbnN0cnVjdG9yLgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTcmM+CisgICAgQ2hlY2tl
ZE51bWVyaWMoY29uc3QgQ2hlY2tlZE51bWVyaWM8U3JjPiAmcmhzKSA6IHN0YXRlXyhyaHMuVmFs
dWVVbnNhZmUoKSwgcmhzLnZhbGlkaXR5KCkpCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBTcmM+CisgICAgQ2hlY2tlZE51bWVyaWMoU3JjIHZhbHVlLCBSYW5nZUNvbnN0
cmFpbnQgdmFsaWRpdHkpIDogc3RhdGVfKHZhbHVlLCB2YWxpZGl0eSkKKyAgICB7CisgICAgfQor
CisgICAgLy8gVGhpcyBpcyBub3QgYW4gZXhwbGljaXQgY29uc3RydWN0b3IgYmVjYXVzZSB3ZSBp
bXBsaWNpdGx5IHVwZ3JhZGUgcmVndWxhcgorICAgIC8vIG51bWVyaWNzIHRvIENoZWNrZWROdW1l
cmljcyB0byBtYWtlIHRoZW0gZWFzaWVyIHRvIHVzZS4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
U3JjPgorICAgIENoZWNrZWROdW1lcmljKFNyYyB2YWx1ZSkgIC8vIE5PTElOVChydW50aW1lL2V4
cGxpY2l0KQorICAgICAgICA6IHN0YXRlXyh2YWx1ZSkKKyAgICB7CisgICAgICAgIHN0YXRpY19h
c3NlcnQoc3RkOjpudW1lcmljX2xpbWl0czxTcmM+Ojppc19zcGVjaWFsaXplZCwgIkFyZ3VtZW50
IG11c3QgYmUgbnVtZXJpYy4iKTsKKyAgICB9CisKKyAgICAvLyBUaGlzIGlzIG5vdCBhbiBleHBs
aWNpdCBjb25zdHJ1Y3RvciBiZWNhdXNlIHdlIHdhbnQgYSBzZWFtbGVzcyBjb252ZXJzaW9uCisg
ICAgLy8gZnJvbSBTdHJpY3ROdW1lcmljIHR5cGVzLgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBT
cmM+CisgICAgQ2hlY2tlZE51bWVyaWMoU3RyaWN0TnVtZXJpYzxTcmM+IHZhbHVlKSAgLy8gTk9M
SU5UKHJ1bnRpbWUvZXhwbGljaXQpCisgICAgICAgIDogc3RhdGVfKHN0YXRpY19jYXN0PFNyYz4o
dmFsdWUpKQorICAgIHsKKyAgICB9CisKKyAgICAvLyBJc1ZhbGlkKCkgaXMgdGhlIHB1YmxpYyBB
UEkgdG8gdGVzdCBpZiBhIENoZWNrZWROdW1lcmljIGlzIGN1cnJlbnRseSB2YWxpZC4KKyAgICBi
b29sIElzVmFsaWQoKSBjb25zdCB7IHJldHVybiB2YWxpZGl0eSgpID09IFJBTkdFX1ZBTElEOyB9
CisKKyAgICAvLyBWYWx1ZU9yRGllKCkgVGhlIHByaW1hcnkgYWNjZXNzb3IgZm9yIHRoZSB1bmRl
cmx5aW5nIHZhbHVlLiBJZiB0aGUgY3VycmVudAorICAgIC8vIHN0YXRlIGlzIG5vdCB2YWxpZCBp
dCB3aWxsIENIRUNLIGFuZCBjcmFzaC4KKyAgICBUIFZhbHVlT3JEaWUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgQ0hFQ0soSXNWYWxpZCgpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRlXy52YWx1ZSgp
OworICAgIH0KKworICAgIC8vIFZhbHVlT3JEZWZhdWx0KFQgZGVmYXVsdF92YWx1ZSkgQSBjb252
ZW5pZW5jZSBtZXRob2QgdGhhdCByZXR1cm5zIHRoZQorICAgIC8vIGN1cnJlbnQgdmFsdWUgaWYg
dGhlIHN0YXRlIGlzIHZhbGlkLCBhbmQgdGhlIHN1cHBsaWVkIGRlZmF1bHRfdmFsdWUgZm9yCisg
ICAgLy8gYW55IG90aGVyIHN0YXRlLgorICAgIFQgVmFsdWVPckRlZmF1bHQoVCBkZWZhdWx0X3Zh
bHVlKSBjb25zdCB7IHJldHVybiBJc1ZhbGlkKCkgPyBzdGF0ZV8udmFsdWUoKSA6IGRlZmF1bHRf
dmFsdWU7IH0KKworICAgIC8vIFZhbHVlRmxvYXRpbmcoKSAtIFNpbmNlIGZsb2F0aW5nIHBvaW50
IHZhbHVlcyBpbmNsdWRlIHRoZWlyIHZhbGlkaXR5IHN0YXRlLAorICAgIC8vIHdlIHByb3ZpZGUg
YW4gZWFzeSBtZXRob2QgZm9yIGV4dHJhY3RpbmcgdGhlbSBkaXJlY3RseSwgd2l0aG91dCBhIHJp
c2sgb2YKKyAgICAvLyBjcmFzaGluZyBvbiBhIENIRUNLLgorICAgIFQgVmFsdWVGbG9hdGluZygp
IGNvbnN0CisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6bnVtZXJpY19saW1pdHM8
VD46OmlzX2llYzU1OSwgIkFyZ3VtZW50IG11c3QgYmUgZmxvYXQuIik7CisgICAgICAgIHJldHVy
biBDaGVja2VkTnVtZXJpYzxUPjo6Y2FzdCgqdGhpcykuVmFsdWVVbnNhZmUoKTsKKyAgICB9CisK
KyAgICAvLyB2YWxpZGl0eSgpIC0gRE8gTk9UIFVTRSBUSElTIElOIEVYVEVSTkFMIENPREUgLSBJ
dCBpcyBwdWJsaWMgcmlnaHQgbm93IGZvcgorICAgIC8vIHRlc3RzIGFuZCB0byBhdm9pZCBhIGJp
ZyBtYXRyaXggb2YgZnJpZW5kIG9wZXJhdG9yIG92ZXJsb2Fkcy4gQnV0IHRoZQorICAgIC8vIHZh
bHVlcyBpdCByZXR1cm5zIGFyZSBsaWtlbHkgdG8gY2hhbmdlIGluIHRoZSBmdXR1cmUuCisgICAg
Ly8gUmV0dXJuczogY3VycmVudCB2YWxpZGl0eSBzdGF0ZSAoaS5lLiB2YWxpZCwgb3ZlcmZsb3cs
IHVuZGVyZmxvdywgbmFuKS4KKyAgICAvLyBUT0RPKGpzY2h1aCk6IGNyYnVnLmNvbS8zMzI2MTEg
RmlndXJlIG91dCBhbmQgaW1wbGVtZW50IHNlbWFudGljcyBmb3IKKyAgICAvLyBzYXR1cmF0aW9u
L3dyYXBwaW5nIHNvIHdlIGNhbiBleHBvc2UgdGhpcyBzdGF0ZSBjb25zaXN0ZW50bHkgYW5kIGlt
cGxlbWVudAorICAgIC8vIHNhdHVyYXRlZCBhcml0aG1ldGljLgorICAgIFJhbmdlQ29uc3RyYWlu
dCB2YWxpZGl0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRlXy52YWxpZGl0eSgpOyB9CisKKyAgICAv
LyBWYWx1ZVVuc2FmZSgpIC0gRE8gTk9UIFVTRSBUSElTIElOIEVYVEVSTkFMIENPREUgLSBJdCBp
cyBwdWJsaWMgcmlnaHQgbm93CisgICAgLy8gZm9yIHRlc3RzIGFuZCB0byBhdm9pZCBhIGJpZyBt
YXRyaXggb2YgZnJpZW5kIG9wZXJhdG9yIG92ZXJsb2Fkcy4gQnV0IHRoZQorICAgIC8vIHZhbHVl
cyBpdCByZXR1cm5zIGFyZSBsaWtlbHkgdG8gY2hhbmdlIGluIHRoZSBmdXR1cmUuCisgICAgLy8g
UmV0dXJuczogdGhlIHJhdyBudW1lcmljIHZhbHVlLCByZWdhcmRsZXNzIG9mIHRoZSBjdXJyZW50
IHN0YXRlLgorICAgIC8vIFRPRE8oanNjaHVoKTogY3JidWcuY29tLzMzMjYxMSBGaWd1cmUgb3V0
IGFuZCBpbXBsZW1lbnQgc2VtYW50aWNzIGZvcgorICAgIC8vIHNhdHVyYXRpb24vd3JhcHBpbmcg
c28gd2UgY2FuIGV4cG9zZSB0aGlzIHN0YXRlIGNvbnNpc3RlbnRseSBhbmQgaW1wbGVtZW50Cisg
ICAgLy8gc2F0dXJhdGVkIGFyaXRobWV0aWMuCisgICAgVCBWYWx1ZVVuc2FmZSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRlXy52YWx1ZSgpOyB9CisKKyAgICAvLyBQcm90b3R5cGVzIGZvciB0aGUgc3Vw
cG9ydGVkIGFyaXRobWV0aWMgb3BlcmF0b3Igb3ZlcmxvYWRzLgorICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBTcmM+CisgICAgQ2hlY2tlZE51bWVyaWMgJm9wZXJhdG9yKz0oU3JjIHJocyk7CisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFNyYz4KKyAgICBDaGVja2VkTnVtZXJpYyAmb3BlcmF0b3ItPShT
cmMgcmhzKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU3JjPgorICAgIENoZWNrZWROdW1lcmlj
ICZvcGVyYXRvcio9KFNyYyByaHMpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTcmM+CisgICAg
Q2hlY2tlZE51bWVyaWMgJm9wZXJhdG9yLz0oU3JjIHJocyk7CisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFNyYz4KKyAgICBDaGVja2VkTnVtZXJpYyAmb3BlcmF0b3IlPShTcmMgcmhzKTsKKworICAg
IENoZWNrZWROdW1lcmljIG9wZXJhdG9yLSgpIGNvbnN0CisgICAgeworICAgICAgICBSYW5nZUNv
bnN0cmFpbnQgdmFsaWRpdHk7CisgICAgICAgIFQgdmFsdWUgPSBDaGVja2VkTmVnKHN0YXRlXy52
YWx1ZSgpLCAmdmFsaWRpdHkpOworICAgICAgICAvLyBOZWdhdGlvbiBpcyBhbHdheXMgdmFsaWQg
Zm9yIGZsb2F0aW5nIHBvaW50LgorICAgICAgICBpZiAoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6
aXNfaWVjNTU5KQorICAgICAgICAgICAgcmV0dXJuIENoZWNrZWROdW1lcmljPFQ+KHZhbHVlKTsK
KworICAgICAgICB2YWxpZGl0eSA9IEdldFJhbmdlQ29uc3RyYWludChzdGF0ZV8udmFsaWRpdHko
KSB8IHZhbGlkaXR5KTsKKyAgICAgICAgcmV0dXJuIENoZWNrZWROdW1lcmljPFQ+KHZhbHVlLCB2
YWxpZGl0eSk7CisgICAgfQorCisgICAgQ2hlY2tlZE51bWVyaWMgQWJzKCkgY29uc3QKKyAgICB7
CisgICAgICAgIFJhbmdlQ29uc3RyYWludCB2YWxpZGl0eTsKKyAgICAgICAgVCB2YWx1ZSA9IENo
ZWNrZWRBYnMoc3RhdGVfLnZhbHVlKCksICZ2YWxpZGl0eSk7CisgICAgICAgIC8vIEFic29sdXRl
IHZhbHVlIGlzIGFsd2F5cyB2YWxpZCBmb3IgZmxvYXRpbmcgcG9pbnQuCisgICAgICAgIGlmIChz
dGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19pZWM1NTkpCisgICAgICAgICAgICByZXR1cm4gQ2hl
Y2tlZE51bWVyaWM8VD4odmFsdWUpOworCisgICAgICAgIHZhbGlkaXR5ID0gR2V0UmFuZ2VDb25z
dHJhaW50KHN0YXRlXy52YWxpZGl0eSgpIHwgdmFsaWRpdHkpOworICAgICAgICByZXR1cm4gQ2hl
Y2tlZE51bWVyaWM8VD4odmFsdWUsIHZhbGlkaXR5KTsKKyAgICB9CisKKyAgICAvLyBUaGlzIGZ1
bmN0aW9uIGlzIGF2YWlsYWJsZSBvbmx5IGZvciBpbnRlZ3JhbCB0eXBlcy4gSXQgcmV0dXJucyBh
biB1bnNpZ25lZAorICAgIC8vIGludGVnZXIgb2YgdGhlIHNhbWUgd2lkdGggYXMgdGhlIHNvdXJj
ZSB0eXBlLCBjb250YWluaW5nIHRoZSBhYnNvbHV0ZSB2YWx1ZQorICAgIC8vIG9mIHRoZSBzb3Vy
Y2UsIGFuZCBwcm9wZXJseSBoYW5kbGluZyBzaWduZWQgbWluLgorICAgIENoZWNrZWROdW1lcmlj
PHR5cGVuYW1lIFVuc2lnbmVkT3JGbG9hdEZvclNpemU8VD46OnR5cGU+IFVuc2lnbmVkQWJzKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBDaGVja2VkTnVtZXJpYzx0eXBlbmFtZSBVbnNp
Z25lZE9yRmxvYXRGb3JTaXplPFQ+Ojp0eXBlPigKKyAgICAgICAgICAgIENoZWNrZWRVbnNpZ25l
ZEFicyhzdGF0ZV8udmFsdWUoKSksIHN0YXRlXy52YWxpZGl0eSgpKTsKKyAgICB9CisKKyAgICBD
aGVja2VkTnVtZXJpYyAmb3BlcmF0b3IrKygpCisgICAgeworICAgICAgICAqdGhpcyArPSAxOwor
ICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgQ2hlY2tlZE51bWVyaWMgb3BlcmF0
b3IrKyhpbnQpCisgICAgeworICAgICAgICBDaGVja2VkTnVtZXJpYyB2YWx1ZSA9ICp0aGlzOwor
ICAgICAgICAqdGhpcyArPSAxOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorCisgICAg
Q2hlY2tlZE51bWVyaWMgJm9wZXJhdG9yLS0oKQorICAgIHsKKyAgICAgICAgKnRoaXMgLT0gMTsK
KyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIENoZWNrZWROdW1lcmljIG9wZXJh
dG9yLS0oaW50KQorICAgIHsKKyAgICAgICAgQ2hlY2tlZE51bWVyaWMgdmFsdWUgPSAqdGhpczsK
KyAgICAgICAgKnRoaXMgLT0gMTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKworICAg
IC8vIFRoZXNlIHN0YXRpYyBtZXRob2RzIGJlaGF2ZSBsaWtlIGEgY29udmVuaWVuY2UgY2FzdCBv
cGVyYXRvciB0YXJnZXRpbmcKKyAgICAvLyB0aGUgZGVzaXJlZCBDaGVja2VkTnVtZXJpYyB0eXBl
LiBBcyBhbiBvcHRpbWl6YXRpb24sIGEgcmVmZXJlbmNlIGlzCisgICAgLy8gcmV0dXJuZWQgd2hl
biBTcmMgaXMgdGhlIHNhbWUgdHlwZSBhcyBULgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTcmM+
CisgICAgc3RhdGljIENoZWNrZWROdW1lcmljPFQ+IGNhc3QoCisgICAgICAgIFNyYyB1LAorICAg
ICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Om51bWVyaWNfbGltaXRzPFNyYz46Omlz
X3NwZWNpYWxpemVkLCBpbnQ+Ojp0eXBlID0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiB1Owor
ICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTcmM+CisgICAgc3RhdGljIENoZWNrZWRO
dW1lcmljPFQ+IGNhc3QoCisgICAgICAgIGNvbnN0IENoZWNrZWROdW1lcmljPFNyYz4gJnUsCisg
ICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX3NhbWU8U3JjLCBUPjo6dmFs
dWUsIGludD46OnR5cGUgPSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHU7CisgICAgfQorCisg
ICAgc3RhdGljIGNvbnN0IENoZWNrZWROdW1lcmljPFQ+ICZjYXN0KGNvbnN0IENoZWNrZWROdW1l
cmljPFQ+ICZ1KSB7IHJldHVybiB1OyB9CisKKyAgcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTnVtZXJpY1R5cGU+CisgICAgc3RydWN0IFVuZGVybHlpbmdUeXBlCisgICAgeworICAg
ICAgICB1c2luZyB0eXBlID0gTnVtZXJpY1R5cGU7CisgICAgfTsKKworICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBOdW1lcmljVHlwZT4KKyAgICBzdHJ1Y3QgVW5kZXJseWluZ1R5cGU8Q2hlY2tlZE51
bWVyaWM8TnVtZXJpY1R5cGU+PgorICAgIHsKKyAgICAgICAgdXNpbmcgdHlwZSA9IE51bWVyaWNU
eXBlOworICAgIH07CisKKyAgICBDaGVja2VkTnVtZXJpY1N0YXRlPFQ+IHN0YXRlXzsKK307CisK
Ky8vIFRoaXMgaXMgdGhlIGJvaWxlcnBsYXRlIGZvciB0aGUgc3RhbmRhcmQgYXJpdGhtZXRpYyBv
cGVyYXRvciBvdmVybG9hZHMuIEEKKy8vIG1hY3JvIGlzbid0IHRoZSBwcmV0dGllc3Qgc29sdXRp
b24sIGJ1dCBpdCBiZWF0cyByZXdyaXRpbmcgdGhlc2UgZml2ZSB0aW1lcy4KKy8vIFNvbWUgZGV0
YWlscyB3b3J0aCBub3RpbmcgYXJlOgorLy8gICogV2UgYXBwbHkgdGhlIHN0YW5kYXJkIGFyaXRo
bWV0aWMgcHJvbW90aW9ucy4KKy8vICAqIFdlIHNraXAgcmFuZ2UgY2hlY2tzIGZvciBmbG9hdGlu
ZyBwb2ludHMuCisvLyAgKiBXZSBza2lwIHJhbmdlIGNoZWNrcyBmb3IgZGVzdGluYXRpb24gaW50
ZWdlcnMgd2l0aCBzdWZmaWNpZW50IHJhbmdlLgorLy8gVE9ETyhqc2NodWgpOiBleHRyYWN0IHRo
ZXNlIG91dCBpbnRvIHRlbXBsYXRlcy4KKyNkZWZpbmUgQkFTRV9OVU1FUklDX0FSSVRITUVUSUNf
T1BFUkFUT1JTKE5BTUUsIE9QLCBDT01QT1VORF9PUCkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAvKiBCaW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRvciBmb3IgQ2hlY2tl
ZE51bWVyaWNzIG9mIHRoZSBzYW1lIHR5cGUuICovICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDaGVja2Vk
TnVtZXJpYzx0eXBlbmFtZSBBcml0aG1ldGljUHJvbW90aW9uPFQ+Ojp0eXBlPiBvcGVyYXRvciBP
UCggICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY29uc3QgQ2hlY2tlZE51
bWVyaWM8VD4gJmxocywgY29uc3QgQ2hlY2tlZE51bWVyaWM8VD4gJnJocykgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBcml0aG1ldGljUHJvbW90aW9uPFQ+
Ojp0eXBlIFByb21vdGlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgLyogRmxvYXRpbmcgcG9pbnQgYWx3YXlzIHRha2VzIHRoZSBmYXN0IHBhdGggKi8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHN0
ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX2llYzU1OSkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJldHVybiBDaGVja2Vk
TnVtZXJpYzxUPihsaHMuVmFsdWVVbnNhZmUoKSBPUCByaHMuVmFsdWVVbnNhZmUoKSk7ICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKElzSW50ZWdlckFyaXRobWV0aWNTYWZlPFBy
b21vdGlvbiwgVCwgVD46OnZhbHVlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgICAgIHJldHVybiBDaGVja2VkTnVtZXJpYzxQcm9tb3Rpb24+KGxocy5W
YWx1ZVVuc2FmZSgpIE9QIHJocy5WYWx1ZVVuc2FmZSgpLCAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldFJhbmdlQ29uc3RyYWlu
dChyaHMudmFsaWRpdHkoKSB8IGxocy52YWxpZGl0eSgpKSk7IFwKKyAgICAgICAgUmFuZ2VDb25z
dHJhaW50IHZhbGlkaXR5ID0gUkFOR0VfVkFMSUQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgVCByZXN1bHQgPSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFQ+KENoZWNrZWQjI05BTUUo
c3RhdGljX2Nhc3Q8UHJvbW90aW9uPihsaHMuVmFsdWVVbnNhZmUoKSksICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
UHJvbW90aW9uPihyaHMuVmFsdWVVbnNhZmUoKSksICZ2YWxpZGl0eSkpOyAgIFwKKyAgICAgICAg
cmV0dXJuIENoZWNrZWROdW1lcmljPFByb21vdGlvbj4oICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJlc3VsdCwg
R2V0UmFuZ2VDb25zdHJhaW50KHZhbGlkaXR5IHwgbGhzLnZhbGlkaXR5KCkgfCByaHMudmFsaWRp
dHkoKSkpOyAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAvKiBBc3NpZ25tZW50IGFyaXRobWV0aWMgb3BlcmF0b3IgaW1wbGVt
ZW50YXRpb24gZnJvbSBDaGVja2VkTnVtZXJpYy4gKi8gICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgU3JjPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDaGVja2VkTnVtZXJpYzxUPiAm
Q2hlY2tlZE51bWVyaWM8VD46Om9wZXJhdG9yIENPTVBPVU5EX09QKFNyYyByaHMpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgKnRoaXMgPSBDaGVja2VkTnVtZXJpYzxUPjo6Y2FzdCgqdGhpcykg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgIE9QIENoZWNrZWROdW1lcmljPHR5cGVuYW1lIFVuZGVybHlpbmdUeXBlPFNyYz46
OnR5cGU+OjpjYXN0KHJocyk7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJu
ICp0aGlzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAvKiBCaW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRvciBmb3Ig
Q2hlY2tlZE51bWVyaWMgb2YgZGlmZmVyZW50IHR5cGUuICovICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU3JjPiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBD
aGVja2VkTnVtZXJpYzx0eXBlbmFtZSBBcml0aG1ldGljUHJvbW90aW9uPFQsIFNyYz46OnR5cGU+
IG9wZXJhdG9yIE9QKCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY29uc3QgQ2hl
Y2tlZE51bWVyaWM8U3JjPiAmbGhzLCBjb25zdCBDaGVja2VkTnVtZXJpYzxUPiAmcmhzKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBcml0aG1ldGljUHJvbW90
aW9uPFQsIFNyYz46OnR5cGUgUHJvbW90aW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgaWYgKElzSW50ZWdlckFyaXRobWV0aWNTYWZlPFByb21vdGlvbiwgVCwgU3Jj
Pjo6dmFsdWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAgIHJldHVybiBDaGVja2VkTnVtZXJpYzxQcm9tb3Rpb24+KGxocy5WYWx1ZVVuc2FmZSgpIE9Q
IHJocy5WYWx1ZVVuc2FmZSgpLCAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdldFJhbmdlQ29uc3RyYWludChyaHMudmFsaWRpdHko
KSB8IGxocy52YWxpZGl0eSgpKSk7IFwKKyAgICAgICAgcmV0dXJuIENoZWNrZWROdW1lcmljPFBy
b21vdGlvbj46OmNhc3QobGhzKSBPUCBDaGVja2VkTnVtZXJpYzxQcm9tb3Rpb24+OjpjYXN0KHJo
cyk7ICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAvKiBCaW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRvciBmb3IgbGVmdCBDaGVja2VkTnVtZXJp
YyBhbmQgcmlnaHQgbnVtZXJpYy4gKi8gICAgICAgICAgICAgICAgICAgIFwKKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU3JjLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8c3RkOjppc19hcml0aG1ldGljPFNyYz46OnZhbHVlPjo6dHlwZSAqID0g
bnVsbHB0cj4gICAgICAgICAgIFwKKyAgICBDaGVja2VkTnVtZXJpYzx0eXBlbmFtZSBBcml0aG1l
dGljUHJvbW90aW9uPFQsIFNyYz46OnR5cGU+IG9wZXJhdG9yIE9QKCAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgY29uc3QgQ2hlY2tlZE51bWVyaWM8VD4gJmxocywgU3JjIHJocykg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBBcml0aG1ldGljUHJvbW90aW9uPFQsIFNyYz46OnR5cGUgUHJvbW90aW9uOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKElzSW50ZWdlckFyaXRo
bWV0aWNTYWZlPFByb21vdGlvbiwgVCwgU3JjPjo6dmFsdWUpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJldHVybiBDaGVja2VkTnVtZXJpYzxQcm9t
b3Rpb24+KGxocy5WYWx1ZVVuc2FmZSgpIE9QIHJocywgbGhzLnZhbGlkaXR5KCkpOyAgICAgICAg
ICAgIFwKKyAgICAgICAgcmV0dXJuIENoZWNrZWROdW1lcmljPFByb21vdGlvbj46OmNhc3QobGhz
KSBPUCBDaGVja2VkTnVtZXJpYzxQcm9tb3Rpb24+OjpjYXN0KHJocyk7ICAgICAgIFwKKyAgICB9
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAvKiBCaW5hcnkgYXJp
dGhtZXRpYyBvcGVyYXRvciBmb3IgbGVmdCBudW1lcmljIGFuZCByaWdodCBDaGVja2VkTnVtZXJp
Yy4gKi8gICAgICAgICAgICAgICAgICAgIFwKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgU3JjLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3Rk
Ojppc19hcml0aG1ldGljPFNyYz46OnZhbHVlPjo6dHlwZSAqID0gbnVsbHB0cj4gICAgICAgICAg
IFwKKyAgICBDaGVja2VkTnVtZXJpYzx0eXBlbmFtZSBBcml0aG1ldGljUHJvbW90aW9uPFQsIFNy
Yz46OnR5cGU+IG9wZXJhdG9yIE9QKCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
U3JjIGxocywgY29uc3QgQ2hlY2tlZE51bWVyaWM8VD4gJnJocykgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBcml0aG1l
dGljUHJvbW90aW9uPFQsIFNyYz46OnR5cGUgUHJvbW90aW9uOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgaWYgKElzSW50ZWdlckFyaXRobWV0aWNTYWZlPFByb21vdGlv
biwgVCwgU3JjPjo6dmFsdWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgICAgIHJldHVybiBDaGVja2VkTnVtZXJpYzxQcm9tb3Rpb24+KGxocyBPUCByaHMu
VmFsdWVVbnNhZmUoKSwgcmhzLnZhbGlkaXR5KCkpOyAgICAgICAgICAgIFwKKyAgICAgICAgcmV0
dXJuIENoZWNrZWROdW1lcmljPFByb21vdGlvbj46OmNhc3QobGhzKSBPUCBDaGVja2VkTnVtZXJp
YzxQcm9tb3Rpb24+OjpjYXN0KHJocyk7ICAgICAgIFwKKyAgICB9CisKK0JBU0VfTlVNRVJJQ19B
UklUSE1FVElDX09QRVJBVE9SUyhBZGQsICssICs9KQorQkFTRV9OVU1FUklDX0FSSVRITUVUSUNf
T1BFUkFUT1JTKFN1YiwgLSwgLT0pCitCQVNFX05VTUVSSUNfQVJJVEhNRVRJQ19PUEVSQVRPUlMo
TXVsLCAqLCAqPSkKK0JBU0VfTlVNRVJJQ19BUklUSE1FVElDX09QRVJBVE9SUyhEaXYsIC8sIC89
KQorQkFTRV9OVU1FUklDX0FSSVRITUVUSUNfT1BFUkFUT1JTKE1vZCwgJSwgJT0pCisKKyN1bmRl
ZiBCQVNFX05VTUVSSUNfQVJJVEhNRVRJQ19PUEVSQVRPUlMKKworfSAgLy8gbmFtZXNwYWNlIGlu
dGVybmFsCisKK3VzaW5nIGludGVybmFsOjpDaGVja2VkTnVtZXJpYzsKKworfSAgLy8gbmFtZXNw
YWNlIGJhc2UKKworI2VuZGlmICAvLyBCQVNFX05VTUVSSUNTX1NBRkVfTUFUSF9IXwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcy9i
YXNlL251bWVyaWNzL3NhZmVfbWF0aF9pbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcy9iYXNlL251bWVyaWNz
L3NhZmVfbWF0aF9pbXBsLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcy9iYXNlL251bWVyaWNzL3NhZmVfbWF0
aF9pbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NzAgQEAKKy8vIENvcHlyaWdodCAy
MDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworI2lmbmRlZiBCQVNFX05V
TUVSSUNTX1NBRkVfTUFUSF9JTVBMX0hfCisjZGVmaW5lIEJBU0VfTlVNRVJJQ1NfU0FGRV9NQVRI
X0lNUExfSF8KKworI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorCisj
aW5jbHVkZSA8Y2xpbWl0cz4KKyNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxjc3RkbGliPgor
I2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworI2luY2x1ZGUgImJh
c2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgorCituYW1lc3BhY2UgYmFzZQoreworbmFt
ZXNwYWNlIGludGVybmFsCit7CisKKy8vIEV2ZXJ5dGhpbmcgZnJvbSBoZXJlIHVwIHRvIHRoZSBm
bG9hdGluZyBwb2ludCBvcGVyYXRpb25zIGlzIHBvcnRhYmxlIEMrKywKKy8vIGJ1dCBpdCBtYXkg
bm90IGJlIGZhc3QuIFRoaXMgY29kZSBjb3VsZCBiZSBzcGxpdCBiYXNlZCBvbgorLy8gcGxhdGZv
cm0vYXJjaGl0ZWN0dXJlIGFuZCByZXBsYWNlZCB3aXRoIHBvdGVudGlhbGx5IGZhc3RlciBpbXBs
ZW1lbnRhdGlvbnMuCisKKy8vIEludGVnZXIgcHJvbW90aW9uIHRlbXBsYXRlcyB1c2VkIGJ5IHRo
ZSBwb3J0YWJsZSBjaGVja2VkIGludGVnZXIgYXJpdGhtZXRpYy4KK3RlbXBsYXRlIDxzaXplX3Qg
U2l6ZSwgYm9vbCBJc1NpZ25lZD4KK3N0cnVjdCBJbnRlZ2VyRm9yU2l6ZUFuZFNpZ247Cit0ZW1w
bGF0ZSA8Pgorc3RydWN0IEludGVnZXJGb3JTaXplQW5kU2lnbjwxLCB0cnVlPgoreworICAgIHR5
cGVkZWYgaW50OF90IHR5cGU7Cit9OwordGVtcGxhdGUgPD4KK3N0cnVjdCBJbnRlZ2VyRm9yU2l6
ZUFuZFNpZ248MSwgZmFsc2U+Cit7CisgICAgdHlwZWRlZiB1aW50OF90IHR5cGU7Cit9OwordGVt
cGxhdGUgPD4KK3N0cnVjdCBJbnRlZ2VyRm9yU2l6ZUFuZFNpZ248MiwgdHJ1ZT4KK3sKKyAgICB0
eXBlZGVmIGludDE2X3QgdHlwZTsKK307Cit0ZW1wbGF0ZSA8Pgorc3RydWN0IEludGVnZXJGb3JT
aXplQW5kU2lnbjwyLCBmYWxzZT4KK3sKKyAgICB0eXBlZGVmIHVpbnQxNl90IHR5cGU7Cit9Owor
dGVtcGxhdGUgPD4KK3N0cnVjdCBJbnRlZ2VyRm9yU2l6ZUFuZFNpZ248NCwgdHJ1ZT4KK3sKKyAg
ICB0eXBlZGVmIGludDMyX3QgdHlwZTsKK307Cit0ZW1wbGF0ZSA8Pgorc3RydWN0IEludGVnZXJG
b3JTaXplQW5kU2lnbjw0LCBmYWxzZT4KK3sKKyAgICB0eXBlZGVmIHVpbnQzMl90IHR5cGU7Cit9
OwordGVtcGxhdGUgPD4KK3N0cnVjdCBJbnRlZ2VyRm9yU2l6ZUFuZFNpZ248OCwgdHJ1ZT4KK3sK
KyAgICB0eXBlZGVmIGludDY0X3QgdHlwZTsKK307Cit0ZW1wbGF0ZSA8Pgorc3RydWN0IEludGVn
ZXJGb3JTaXplQW5kU2lnbjw4LCBmYWxzZT4KK3sKKyAgICB0eXBlZGVmIHVpbnQ2NF90IHR5cGU7
Cit9OworCisvLyBXQVJOSU5HOiBXZSBoYXZlIG5vIEludGVnZXJGb3JTaXplQW5kU2lnbjwxNiwg
Kj4uIElmIHdlIGV2ZXIgYWRkIG9uZSB0bworLy8gc3VwcG9ydCAxMjgtYml0IG1hdGgsIHRoZW4g
dGhlIEFyaXRobWV0aWNQcm9tb3Rpb24gdGVtcGxhdGUgYmVsb3cgd2lsbCBuZWVkCisvLyB0byBi
ZSB1cGRhdGVkIChvciBtb3JlIGxpa2VseSByZXBsYWNlZCB3aXRoIGEgZGVjbHR5cGUgZXhwcmVz
c2lvbikuCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBJbnRlZ2VyPgorc3RydWN0IFVuc2lnbmVkSW50
ZWdlckZvclNpemUKK3sKKyAgICB0eXBlZGVmCisgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPHN0ZDo6bnVtZXJpY19saW1pdHM8SW50ZWdlcj46OmlzX2ludGVnZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIEludGVnZXJGb3JTaXplQW5kU2lnbjxzaXpl
b2YoSW50ZWdlciksIGZhbHNlPjo6dHlwZT46OnR5cGUKKyAgICAgICAgICAgIHR5cGU7Cit9Owor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW50ZWdlcj4KK3N0cnVjdCBTaWduZWRJbnRlZ2VyRm9yU2l6
ZQoreworICAgIHR5cGVkZWYKKyAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpu
dW1lcmljX2xpbWl0czxJbnRlZ2VyPjo6aXNfaW50ZWdlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHlwZW5hbWUgSW50ZWdlckZvclNpemVBbmRTaWduPHNpemVvZihJbnRlZ2Vy
KSwgdHJ1ZT46OnR5cGU+Ojp0eXBlCisgICAgICAgICAgICB0eXBlOworfTsKKwordGVtcGxhdGUg
PHR5cGVuYW1lIEludGVnZXI+CitzdHJ1Y3QgVHdpY2VXaWRlckludGVnZXIKK3sKKyAgICB0eXBl
ZGVmIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRz
PEludGVnZXI+Ojppc19pbnRlZ2VyLAorICAgICAgICB0eXBlbmFtZSBJbnRlZ2VyRm9yU2l6ZUFu
ZFNpZ248c2l6ZW9mKEludGVnZXIpICogMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8SW50ZWdlcj46OmlzX3NpZ25lZD46OnR5cGU+
Ojp0eXBlIHR5cGU7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW50ZWdlcj4KK3N0cnVjdCBQ
b3NpdGlvbk9mU2lnbkJpdAoreworICAgIHN0YXRpYyBjb25zdCB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxzdGQ6Om51bWVyaWNfbGltaXRzPEludGVnZXI+Ojppc19pbnRlZ2VyLCBzaXplX3Q+Ojp0
eXBlCisgICAgICAgIHZhbHVlID0gQ0hBUl9CSVQgKiBzaXplb2YoSW50ZWdlcikgLSAxOworfTsK
KworLy8gVGhpcyBpcyB1c2VkIGZvciBVbnNpZ25lZEFicywgd2hlcmUgd2UgbmVlZCB0byBzdXBw
b3J0IGZsb2F0aW5nLXBvaW50CisvLyB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9ucyBldmVuIHRob3Vn
aCB3ZSBkb24ndCBhY3R1YWxseSBzdXBwb3J0IHRoZSBvcGVyYXRpb25zLgorLy8gSG93ZXZlciwg
dGhlcmUgaXMgbm8gY29ycmVzcG9uZGluZyBpbXBsZW1lbnRhdGlvbiBvZiBlLmcuIENoZWNrZWRV
bnNpZ25lZEFicywKKy8vIHNvIHRoZSBmbG9hdCB2ZXJzaW9ucyB3aWxsIG5vdCBjb21waWxlLgor
dGVtcGxhdGUgPHR5cGVuYW1lIE51bWVyaWMsCisgICAgICAgICAgYm9vbCBJc0ludGVnZXIgPSBz
dGQ6Om51bWVyaWNfbGltaXRzPE51bWVyaWM+Ojppc19pbnRlZ2VyLAorICAgICAgICAgIGJvb2wg
SXNGbG9hdCAgID0gc3RkOjpudW1lcmljX2xpbWl0czxOdW1lcmljPjo6aXNfaWVjNTU5Pgorc3Ry
dWN0IFVuc2lnbmVkT3JGbG9hdEZvclNpemU7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBOdW1lcmlj
Pgorc3RydWN0IFVuc2lnbmVkT3JGbG9hdEZvclNpemU8TnVtZXJpYywgdHJ1ZSwgZmFsc2U+Cit7
CisgICAgdHlwZWRlZiB0eXBlbmFtZSBVbnNpZ25lZEludGVnZXJGb3JTaXplPE51bWVyaWM+Ojp0
eXBlIHR5cGU7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTnVtZXJpYz4KK3N0cnVjdCBVbnNp
Z25lZE9yRmxvYXRGb3JTaXplPE51bWVyaWMsIGZhbHNlLCB0cnVlPgoreworICAgIHR5cGVkZWYg
TnVtZXJpYyB0eXBlOworfTsKKworLy8gSGVscGVyIHRlbXBsYXRlcyBmb3IgaW50ZWdlciBtYW5p
cHVsYXRpb25zLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NvbnN0ZXhwciBib29sIEhhc1Np
Z25CaXQoVCB4KQoreworICAgIC8vIENhc3QgdG8gdW5zaWduZWQgc2luY2UgcmlnaHQgc2hpZnQg
b24gc2lnbmVkIGlzIHVuZGVmaW5lZC4KKyAgICByZXR1cm4gISEoc3RhdGljX2Nhc3Q8dHlwZW5h
bWUgVW5zaWduZWRJbnRlZ2VyRm9yU2l6ZTxUPjo6dHlwZT4oeCkgPj4KKyAgICAgICAgICAgICAg
UG9zaXRpb25PZlNpZ25CaXQ8VD46OnZhbHVlKTsKK30KKworLy8gVGhpcyB3cmFwcGVyIHVuZG9l
cyB0aGUgc3RhbmRhcmQgaW50ZWdlciBwcm9tb3Rpb25zLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Citjb25zdGV4cHIgVCBCaW5hcnlDb21wbGVtZW50KFQgeCkKK3sKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8VD4ofngpOworfQorCisvLyBIZXJlIGFyZSB0aGUgYWN0dWFsIHBvcnRhYmxlIGNoZWNr
ZWQgaW50ZWdlciBtYXRoIGltcGxlbWVudGF0aW9ucy4KKy8vIFRPRE8oanNjaHVoKTogQnJlYWsg
dGhpcyBjb2RlIG91dCBmcm9tIHRoZSBlbmFibGVfaWYgcGF0dGVybiBhbmQgZmluZCBhIGNsZWFu
CisvLyB3YXkgdG8gY29hbGVzY2UgdGhpbmdzIGludG8gdGhlIENoZWNrZWROdW1lcmljU3RhdGUg
c3BlY2lhbGl6YXRpb25zIGJlbG93LgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3R5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX2ludGVnZXIsIFQ+Ojp0
eXBlCitDaGVja2VkQWRkKFQgeCwgVCB5LCBSYW5nZUNvbnN0cmFpbnQgKnZhbGlkaXR5KQorewor
ICAgIC8vIFNpbmNlIHRoZSB2YWx1ZSBvZiB4K3kgaXMgdW5kZWZpbmVkIGlmIHdlIGhhdmUgYSBz
aWduZWQgdHlwZSwgd2UgY29tcHV0ZQorICAgIC8vIGl0IHVzaW5nIHRoZSB1bnNpZ25lZCB0eXBl
IG9mIHRoZSBzYW1lIHNpemUuCisgICAgdHlwZWRlZiB0eXBlbmFtZSBVbnNpZ25lZEludGVnZXJG
b3JTaXplPFQ+Ojp0eXBlIFVuc2lnbmVkRHN0OworICAgIFVuc2lnbmVkRHN0IHV4ICAgICAgPSBz
dGF0aWNfY2FzdDxVbnNpZ25lZERzdD4oeCk7CisgICAgVW5zaWduZWREc3QgdXkgICAgICA9IHN0
YXRpY19jYXN0PFVuc2lnbmVkRHN0Pih5KTsKKyAgICBVbnNpZ25lZERzdCB1cmVzdWx0ID0gc3Rh
dGljX2Nhc3Q8VW5zaWduZWREc3Q+KHV4ICsgdXkpOworICAgIC8vIEFkZGl0aW9uIGlzIHZhbGlk
IGlmIHRoZSBzaWduIG9mICh4ICsgeSkgaXMgZXF1YWwgdG8gZWl0aGVyIHRoYXQgb2YgeCBvcgor
ICAgIC8vIHRoYXQgb2YgeS4KKyAgICBpZiAoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc2ln
bmVkKQorICAgIHsKKyAgICAgICAgaWYgKEhhc1NpZ25CaXQoQmluYXJ5Q29tcGxlbWVudChzdGF0
aWNfY2FzdDxVbnNpZ25lZERzdD4oKHVyZXN1bHQgXiB1eCkgJiAodXJlc3VsdCBeIHV5KSkpKSkK
KyAgICAgICAgeworICAgICAgICAgICAgKnZhbGlkaXR5ID0gUkFOR0VfVkFMSUQ7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZQorICAgICAgICB7ICAvLyBEaXJlY3Rpb24gb2Ygd3JhcCBpcyBpbnZl
cnNlIG9mIHJlc3VsdCBzaWduLgorICAgICAgICAgICAgKnZhbGlkaXR5ID0gSGFzU2lnbkJpdCh1
cmVzdWx0KSA/IFJBTkdFX09WRVJGTE9XIDogUkFOR0VfVU5ERVJGTE9XOworICAgICAgICB9Cisg
ICAgfQorICAgIGVsc2UKKyAgICB7ICAvLyBVbnNpZ25lZCBpcyBlaXRoZXIgdmFsaWQgb3Igb3Zl
cmZsb3cuCisgICAgICAgICp2YWxpZGl0eSA9IEJpbmFyeUNvbXBsZW1lbnQoeCkgPj0geSA/IFJB
TkdFX1ZBTElEIDogUkFOR0VfT1ZFUkZMT1c7CisgICAgfQorICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxUPih1cmVzdWx0KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19pbnRlZ2VyLCBUPjo6dHlwZQor
Q2hlY2tlZFN1YihUIHgsIFQgeSwgUmFuZ2VDb25zdHJhaW50ICp2YWxpZGl0eSkKK3sKKyAgICAv
LyBTaW5jZSB0aGUgdmFsdWUgb2YgeCt5IGlzIHVuZGVmaW5lZCBpZiB3ZSBoYXZlIGEgc2lnbmVk
IHR5cGUsIHdlIGNvbXB1dGUKKyAgICAvLyBpdCB1c2luZyB0aGUgdW5zaWduZWQgdHlwZSBvZiB0
aGUgc2FtZSBzaXplLgorICAgIHR5cGVkZWYgdHlwZW5hbWUgVW5zaWduZWRJbnRlZ2VyRm9yU2l6
ZTxUPjo6dHlwZSBVbnNpZ25lZERzdDsKKyAgICBVbnNpZ25lZERzdCB1eCAgICAgID0gc3RhdGlj
X2Nhc3Q8VW5zaWduZWREc3Q+KHgpOworICAgIFVuc2lnbmVkRHN0IHV5ICAgICAgPSBzdGF0aWNf
Y2FzdDxVbnNpZ25lZERzdD4oeSk7CisgICAgVW5zaWduZWREc3QgdXJlc3VsdCA9IHN0YXRpY19j
YXN0PFVuc2lnbmVkRHN0Pih1eCAtIHV5KTsKKyAgICAvLyBTdWJ0cmFjdGlvbiBpcyB2YWxpZCBp
ZiBlaXRoZXIgeCBhbmQgeSBoYXZlIHNhbWUgc2lnbiwgb3IgKHgteSkgYW5kIHggaGF2ZQorICAg
IC8vIHRoZSBzYW1lIHNpZ24uCisgICAgaWYgKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX3Np
Z25lZCkKKyAgICB7CisgICAgICAgIGlmIChIYXNTaWduQml0KEJpbmFyeUNvbXBsZW1lbnQoc3Rh
dGljX2Nhc3Q8VW5zaWduZWREc3Q+KCh1cmVzdWx0IF4gdXgpICYgKHV4IF4gdXkpKSkpKQorICAg
ICAgICB7CisgICAgICAgICAgICAqdmFsaWRpdHkgPSBSQU5HRV9WQUxJRDsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlCisgICAgICAgIHsgIC8vIERpcmVjdGlvbiBvZiB3cmFwIGlzIGludmVyc2Ug
b2YgcmVzdWx0IHNpZ24uCisgICAgICAgICAgICAqdmFsaWRpdHkgPSBIYXNTaWduQml0KHVyZXN1
bHQpID8gUkFOR0VfT1ZFUkZMT1cgOiBSQU5HRV9VTkRFUkZMT1c7CisgICAgICAgIH0KKyAgICB9
CisgICAgZWxzZQorICAgIHsgIC8vIFVuc2lnbmVkIGlzIGVpdGhlciB2YWxpZCBvciB1bmRlcmZs
b3cuCisgICAgICAgICp2YWxpZGl0eSA9IHggPj0geSA/IFJBTkdFX1ZBTElEIDogUkFOR0VfVU5E
RVJGTE9XOworICAgIH0KKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4odXJlc3VsdCk7Cit9CisK
Ky8vIEludGVnZXIgbXVsdGlwbGljYXRpb24gaXMgYSBiaXQgY29tcGxpY2F0ZWQuIEluIHRoZSBm
YXN0IGNhc2Ugd2UganVzdAorLy8gd2UganVzdCBwcm9tb3RlIHRvIGEgdHdpY2Ugd2lkZXIgdHlw
ZSwgYW5kIHJhbmdlIGNoZWNrIHRoZSByZXN1bHQuIEluIHRoZQorLy8gc2xvdyBjYXNlIHdlIG5l
ZWQgdG8gbWFudWFsbHkgY2hlY2sgdGhhdCB0aGUgcmVzdWx0IHdvbid0IGJlIHRydW5jYXRlZCBi
eQorLy8gY2hlY2tpbmcgd2l0aCBkaXZpc2lvbiBhZ2FpbnN0IHRoZSBhcHByb3ByaWF0ZSBib3Vu
ZC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpu
dW1lcmljX2xpbWl0czxUPjo6aXNfaW50ZWdlciAmJiBzaXplb2YoVCkgKiAyIDw9IHNpemVvZih1
aW50bWF4X3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgVD46OnR5cGUKK0NoZWNrZWRNdWwo
VCB4LCBUIHksIFJhbmdlQ29uc3RyYWludCAqdmFsaWRpdHkpCit7CisgICAgdHlwZWRlZiB0eXBl
bmFtZSBUd2ljZVdpZGVySW50ZWdlcjxUPjo6dHlwZSBJbnRlcm1lZGlhdGVUeXBlOworICAgIElu
dGVybWVkaWF0ZVR5cGUgdG1wID0gc3RhdGljX2Nhc3Q8SW50ZXJtZWRpYXRlVHlwZT4oeCkgKiBz
dGF0aWNfY2FzdDxJbnRlcm1lZGlhdGVUeXBlPih5KTsKKyAgICAqdmFsaWRpdHkgICAgICAgICAg
ICA9IERzdFJhbmdlUmVsYXRpb25Ub1NyY1JhbmdlPFQ+KHRtcCk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFQ+KHRtcCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfaW50ZWdlciAmJiBzdGQ6Om51
bWVyaWNfbGltaXRzPFQ+Ojppc19zaWduZWQgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoc2l6ZW9mKFQpICogMiA+IHNpemVvZih1aW50bWF4X3QpKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFQ+Ojp0eXBlCitDaGVja2VkTXVsKFQgeCwgVCB5LCBSYW5nZUNvbnN0cmFpbnQgKnZh
bGlkaXR5KQoreworICAgIC8vIElmIGVpdGhlciBzaWRlIGlzIHplcm8gdGhlbiB0aGUgcmVzdWx0
IHdpbGwgYmUgemVyby4KKyAgICBpZiAoIXggfHwgIXkpCisgICAgeworICAgICAgICAqdmFsaWRp
dHkgPSBSQU5HRV9WQUxJRDsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KDApOworICAg
IH0KKyAgICBlbHNlIGlmICh4ID4gMCkKKyAgICB7CisgICAgICAgIGlmICh5ID4gMCkKKyAgICAg
ICAgICAgICp2YWxpZGl0eSA9IHggPD0gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4KCkgLyB5
ID8gUkFOR0VfVkFMSUQgOiBSQU5HRV9PVkVSRkxPVzsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgKnZhbGlkaXR5ID0geSA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptaW4oKSAvIHggPyBS
QU5HRV9WQUxJRCA6IFJBTkdFX1VOREVSRkxPVzsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAg
ICAgICAgaWYgKHkgPiAwKQorICAgICAgICAgICAgKnZhbGlkaXR5ID0geCA+PSBzdGQ6Om51bWVy
aWNfbGltaXRzPFQ+OjptaW4oKSAvIHkgPyBSQU5HRV9WQUxJRCA6IFJBTkdFX1VOREVSRkxPVzsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgKnZhbGlkaXR5ID0geSA+PSBzdGQ6Om51bWVyaWNf
bGltaXRzPFQ+OjptYXgoKSAvIHggPyBSQU5HRV9WQUxJRCA6IFJBTkdFX09WRVJGTE9XOworICAg
IH0KKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPih4ICogeSk7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpudW1lcmljX2xpbWl0czxU
Pjo6aXNfaW50ZWdlciAmJiAhc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc2lnbmVkICYmCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNpemVvZihUKSAqIDIgPiBzaXplb2YodWludG1h
eF90KSksCisgICAgICAgICAgICAgICAgICAgICAgICBUPjo6dHlwZQorQ2hlY2tlZE11bChUIHgs
IFQgeSwgUmFuZ2VDb25zdHJhaW50ICp2YWxpZGl0eSkKK3sKKyAgICAqdmFsaWRpdHkgPSAoeSA9
PSAwIHx8IHggPD0gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4KCkgLyB5KSA/IFJBTkdFX1ZB
TElEIDogUkFOR0VfT1ZFUkZMT1c7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KHggKiB5KTsK
K30KKworLy8gRGl2aXNpb24ganVzdCByZXF1aXJlcyBhIGNoZWNrIGZvciBhbiBpbnZhbGlkIG5l
Z2F0aW9uIG9uIHNpZ25lZCBtaW4vLTEuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK1QgQ2hlY2tl
ZERpdihUIHgsCisgICAgICAgICAgICAgVCB5LAorICAgICAgICAgICAgIFJhbmdlQ29uc3RyYWlu
dCAqdmFsaWRpdHksCisgICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpu
dW1lcmljX2xpbWl0czxUPjo6aXNfaW50ZWdlciwgaW50Pjo6dHlwZSA9IDApCit7CisgICAgaWYg
KHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX3NpZ25lZCAmJiB4ID09IHN0ZDo6bnVtZXJpY19s
aW1pdHM8VD46Om1pbigpICYmCisgICAgICAgIHkgPT0gc3RhdGljX2Nhc3Q8VD4oLTEpKQorICAg
IHsKKyAgICAgICAgKnZhbGlkaXR5ID0gUkFOR0VfT1ZFUkZMT1c7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptaW4oKTsKKyAgICB9CisKKyAgICAqdmFsaWRpdHkgPSBS
QU5HRV9WQUxJRDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oeCAvIHkpOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK3R5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6bnVtZXJpY19s
aW1pdHM8VD46OmlzX2ludGVnZXIgJiYgc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc2lnbmVk
LAorICAgICAgICAgICAgICAgICAgICAgICAgVD46OnR5cGUKK0NoZWNrZWRNb2QoVCB4LCBUIHks
IFJhbmdlQ29uc3RyYWludCAqdmFsaWRpdHkpCit7CisgICAgKnZhbGlkaXR5ID0geSA+IDAgPyBS
QU5HRV9WQUxJRCA6IFJBTkdFX0lOVkFMSUQ7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KHgg
JSB5KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19pbnRlZ2VyICYmICFzdGQ6Om51bWVyaWNfbGlt
aXRzPFQ+Ojppc19zaWduZWQsCisgICAgICAgICAgICAgICAgICAgICAgICBUPjo6dHlwZQorQ2hl
Y2tlZE1vZChUIHgsIFQgeSwgUmFuZ2VDb25zdHJhaW50ICp2YWxpZGl0eSkKK3sKKyAgICAqdmFs
aWRpdHkgPSBSQU5HRV9WQUxJRDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oeCAlIHkpOwor
fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3R5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6
bnVtZXJpY19saW1pdHM8VD46OmlzX2ludGVnZXIgJiYgc3RkOjpudW1lcmljX2xpbWl0czxUPjo6
aXNfc2lnbmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgVD46OnR5cGUKK0NoZWNrZWROZWco
VCB2YWx1ZSwgUmFuZ2VDb25zdHJhaW50ICp2YWxpZGl0eSkKK3sKKyAgICAqdmFsaWRpdHkgPSB2
YWx1ZSAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptaW4oKSA/IFJBTkdFX1ZBTElEIDogUkFO
R0VfT1ZFUkZMT1c7CisgICAgLy8gVGhlIG5lZ2F0aW9uIG9mIHNpZ25lZCBtaW4gaXMgbWluLCBz
byBjYXRjaCB0aGF0IG9uZS4KKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oLXZhbHVlKTsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Om51
bWVyaWNfbGltaXRzPFQ+Ojppc19pbnRlZ2VyICYmICFzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojpp
c19zaWduZWQsCisgICAgICAgICAgICAgICAgICAgICAgICBUPjo6dHlwZQorQ2hlY2tlZE5lZyhU
IHZhbHVlLCBSYW5nZUNvbnN0cmFpbnQgKnZhbGlkaXR5KQoreworICAgIC8vIFRoZSBvbmx5IGxl
Z2FsIHVuc2lnbmVkIG5lZ2F0aW9uIGlzIHplcm8uCisgICAgKnZhbGlkaXR5ID0gdmFsdWUgPyBS
QU5HRV9VTkRFUkZMT1cgOiBSQU5HRV9WQUxJRDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4o
LXN0YXRpY19jYXN0PHR5cGVuYW1lIFNpZ25lZEludGVnZXJGb3JTaXplPFQ+Ojp0eXBlPih2YWx1
ZSkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3R5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX2ludGVnZXIgJiYgc3RkOjpudW1lcmljX2xpbWl0
czxUPjo6aXNfc2lnbmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgVD46OnR5cGUKK0NoZWNr
ZWRBYnMoVCB2YWx1ZSwgUmFuZ2VDb25zdHJhaW50ICp2YWxpZGl0eSkKK3sKKyAgICAqdmFsaWRp
dHkgPSB2YWx1ZSAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptaW4oKSA/IFJBTkdFX1ZBTElE
IDogUkFOR0VfT1ZFUkZMT1c7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KHN0ZDo6YWJzKHZh
bHVlKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8c3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfaW50ZWdlciAmJiAhc3RkOjpudW1lcmljX2xp
bWl0czxUPjo6aXNfc2lnbmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgVD46OnR5cGUKK0No
ZWNrZWRBYnMoVCB2YWx1ZSwgUmFuZ2VDb25zdHJhaW50ICp2YWxpZGl0eSkKK3sKKyAgICAvLyBU
IGlzIHVuc2lnbmVkLCBzbyB8dmFsdWV8IG11c3QgYWxyZWFkeSBiZSBwb3NpdGl2ZS4KKyAgICAq
dmFsaWRpdHkgPSBSQU5HRV9WQUxJRDsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpudW1lcmljX2xpbWl0
czxUPjo6aXNfaW50ZWdlciAmJiBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zaWduZWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBVbnNpZ25lZEludGVnZXJGb3JTaXplPFQ+
Ojp0eXBlPjo6dHlwZQorQ2hlY2tlZFVuc2lnbmVkQWJzKFQgdmFsdWUpCit7CisgICAgdHlwZWRl
ZiB0eXBlbmFtZSBVbnNpZ25lZEludGVnZXJGb3JTaXplPFQ+Ojp0eXBlIFVuc2lnbmVkVDsKKyAg
ICByZXR1cm4gdmFsdWUgPT0gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWluKCkKKyAgICAgICAg
ICAgICAgID8gc3RhdGljX2Nhc3Q8VW5zaWduZWRUPihzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojpt
YXgoKSkgKyAxCisgICAgICAgICAgICAgICA6IHN0YXRpY19jYXN0PFVuc2lnbmVkVD4oc3RkOjph
YnModmFsdWUpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19pbnRlZ2VyICYmICFzdGQ6Om51bWVy
aWNfbGltaXRzPFQ+Ojppc19zaWduZWQsCisgICAgICAgICAgICAgICAgICAgICAgICBUPjo6dHlw
ZQorQ2hlY2tlZFVuc2lnbmVkQWJzKFQgdmFsdWUpCit7CisgICAgLy8gVCBpcyB1bnNpZ25lZCwg
c28gfHZhbHVlfCBtdXN0IGFscmVhZHkgYmUgcG9zaXRpdmUuCisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFQ+KHZhbHVlKTsKK30KKworLy8gVGhlc2UgYXJlIHRoZSBmbG9hdGluZyBwb2ludCBzdHVi
cyB0aGF0IHRoZSBjb21waWxlciBuZWVkcyB0byBzZWUuIE9ubHkgdGhlCisvLyBuZWdhdGlvbiBv
cGVyYXRpb24gaXMgZXZlciBjYWxsZWQuCisjZGVmaW5lIEJBU0VfRkxPQVRfQVJJVEhNRVRJQ19T
VFVCUyhOQU1FKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8c3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfaWVjNTU5LCBUPjo6dHlwZSBDaGVja2Vk
IyNOQU1FKCBcCisgICAgICAgIFQsIFQsIFJhbmdlQ29uc3RyYWludCAqKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIE5PVFJFQUNIRUQoKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPigwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCitCQVNFX0ZMT0FUX0FSSVRITUVU
SUNfU1RVQlMoQWRkKQorQkFTRV9GTE9BVF9BUklUSE1FVElDX1NUVUJTKFN1YikKK0JBU0VfRkxP
QVRfQVJJVEhNRVRJQ19TVFVCUyhNdWwpCitCQVNFX0ZMT0FUX0FSSVRITUVUSUNfU1RVQlMoRGl2
KQorQkFTRV9GTE9BVF9BUklUSE1FVElDX1NUVUJTKE1vZCkKKworI3VuZGVmIEJBU0VfRkxPQVRf
QVJJVEhNRVRJQ19TVFVCUworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3R5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX2llYzU1OSwgVD46OnR5cGUgQ2hl
Y2tlZE5lZyhUIHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhbmdlQ29uc3RyYWludCAq
KQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPigtdmFsdWUpOworfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK3R5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6bnVtZXJpY19saW1pdHM8
VD46OmlzX2llYzU1OSwgVD46OnR5cGUgQ2hlY2tlZEFicyhUIHZhbHVlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFJhbmdlQ29uc3RyYWludCAqKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxU
PihzdGQ6OmFicyh2YWx1ZSkpOworfQorCisvLyBGbG9hdHMgY2FycnkgYXJvdW5kIHRoZWlyIHZh
bGlkaXR5IHN0YXRlIHdpdGggdGhlbSwgYnV0IGludGVnZXJzIGRvIG5vdC4gU28sCisvLyB3ZSB3
cmFwIHRoZSB1bmRlcmx5aW5nIHZhbHVlIGluIGEgc3BlY2lhbGl6YXRpb24gaW4gb3JkZXIgdG8g
aGlkZSB0aGF0IGRldGFpbAorLy8gYW5kIGV4cG9zZSBhbiBpbnRlcmZhY2UgdmlhIGFjY2Vzc29y
cy4KK2VudW0gTnVtZXJpY1JlcHJlc2VudGF0aW9uCit7CisgICAgTlVNRVJJQ19JTlRFR0VSLAor
ICAgIE5VTUVSSUNfRkxPQVRJTkcsCisgICAgTlVNRVJJQ19VTktOT1dOCit9OworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgTnVtZXJpY1R5cGU+CitzdHJ1Y3QgR2V0TnVtZXJpY1JlcHJlc2VudGF0aW9u
Cit7CisgICAgc3RhdGljIGNvbnN0IE51bWVyaWNSZXByZXNlbnRhdGlvbiB2YWx1ZSA9CisgICAg
ICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8TnVtZXJpY1R5cGU+Ojppc19pbnRlZ2VyCisgICAgICAg
ICAgICA/IE5VTUVSSUNfSU5URUdFUgorICAgICAgICAgICAgOiAoc3RkOjpudW1lcmljX2xpbWl0
czxOdW1lcmljVHlwZT46OmlzX2llYzU1OSA/IE5VTUVSSUNfRkxPQVRJTkcgOiBOVU1FUklDX1VO
S05PV04pOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIE51bWVyaWNSZXByZXNlbnRhdGlv
biB0eXBlID0gR2V0TnVtZXJpY1JlcHJlc2VudGF0aW9uPFQ+Ojp2YWx1ZT4KK2NsYXNzIENoZWNr
ZWROdW1lcmljU3RhdGUKK3sKK307CisKKy8vIEludGVncmFscyByZXF1aXJlIHF1aXRlIGEgYml0
IG9mIGFkZGl0aW9uYWwgaG91c2VrZWVwaW5nIHRvIG1hbmFnZSBzdGF0ZS4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorY2xhc3MgQ2hlY2tlZE51bWVyaWNTdGF0ZTxULCBOVU1FUklDX0lOVEVHRVI+
Cit7CisgIHByaXZhdGU6CisgICAgVCB2YWx1ZV87CisgICAgUmFuZ2VDb25zdHJhaW50IHZhbGlk
aXR5XyA6IENIQVJfQklUOyAgLy8gQWN0dWFsbHkgcmVxdWlyZXMgb25seSB0d28gYml0cy4KKwor
ICBwdWJsaWM6CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFNyYywgTnVtZXJpY1JlcHJlc2VudGF0
aW9uIHR5cGU+CisgICAgZnJpZW5kIGNsYXNzIENoZWNrZWROdW1lcmljU3RhdGU7CisKKyAgICBD
aGVja2VkTnVtZXJpY1N0YXRlKCkgOiB2YWx1ZV8oMCksIHZhbGlkaXR5XyhSQU5HRV9WQUxJRCkg
e30KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTcmM+CisgICAgQ2hlY2tlZE51bWVyaWNTdGF0
ZShTcmMgdmFsdWUsIFJhbmdlQ29uc3RyYWludCB2YWxpZGl0eSkKKyAgICAgICAgOiB2YWx1ZV8o
c3RhdGljX2Nhc3Q8VD4odmFsdWUpKSwKKyAgICAgICAgICB2YWxpZGl0eV8oR2V0UmFuZ2VDb25z
dHJhaW50KHZhbGlkaXR5IHwgRHN0UmFuZ2VSZWxhdGlvblRvU3JjUmFuZ2U8VD4odmFsdWUpKSkK
KyAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjpudW1lcmljX2xpbWl0czxTcmM+Ojpp
c19zcGVjaWFsaXplZCwgIkFyZ3VtZW50IG11c3QgYmUgbnVtZXJpYy4iKTsKKyAgICB9CisKKyAg
ICAvLyBDb3B5IGNvbnN0cnVjdG9yLgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTcmM+CisgICAg
Q2hlY2tlZE51bWVyaWNTdGF0ZShjb25zdCBDaGVja2VkTnVtZXJpY1N0YXRlPFNyYz4gJnJocykK
KyAgICAgICAgOiB2YWx1ZV8oc3RhdGljX2Nhc3Q8VD4ocmhzLnZhbHVlKCkpKSwKKyAgICAgICAg
ICB2YWxpZGl0eV8oR2V0UmFuZ2VDb25zdHJhaW50KHJocy52YWxpZGl0eSgpIHwgRHN0UmFuZ2VS
ZWxhdGlvblRvU3JjUmFuZ2U8VD4ocmhzLnZhbHVlKCkpKSkKKyAgICB7CisgICAgfQorCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFNyYz4KKyAgICBleHBsaWNpdCBDaGVja2VkTnVtZXJpY1N0YXRl
KAorICAgICAgICBTcmMgdmFsdWUsCisgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0
ZDo6bnVtZXJpY19saW1pdHM8U3JjPjo6aXNfc3BlY2lhbGl6ZWQsIGludD46OnR5cGUgPSAwKQor
ICAgICAgICA6IHZhbHVlXyhzdGF0aWNfY2FzdDxUPih2YWx1ZSkpLCB2YWxpZGl0eV8oRHN0UmFu
Z2VSZWxhdGlvblRvU3JjUmFuZ2U8VD4odmFsdWUpKQorICAgIHsKKyAgICB9CisKKyAgICBSYW5n
ZUNvbnN0cmFpbnQgdmFsaWRpdHkoKSBjb25zdCB7IHJldHVybiB2YWxpZGl0eV87IH0KKyAgICBU
IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9Cit9OworCisvLyBGbG9hdGluZyBwb2lu
dHMgbWFpbnRhaW4gdGhlaXIgb3duIHZhbGlkaXR5LCBidXQgbmVlZCB0cmFuc2xhdGlvbiB3cmFw
cGVycy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQ2hlY2tlZE51bWVyaWNTdGF0ZTxU
LCBOVU1FUklDX0ZMT0FUSU5HPgoreworICBwcml2YXRlOgorICAgIFQgdmFsdWVfOworCisgIHB1
YmxpYzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU3JjLCBOdW1lcmljUmVwcmVzZW50YXRpb24g
dHlwZT4KKyAgICBmcmllbmQgY2xhc3MgQ2hlY2tlZE51bWVyaWNTdGF0ZTsKKworICAgIENoZWNr
ZWROdW1lcmljU3RhdGUoKSA6IHZhbHVlXygwLjApIHt9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgU3JjPgorICAgIENoZWNrZWROdW1lcmljU3RhdGUoCisgICAgICAgIFNyYyB2YWx1ZSwKKyAg
ICAgICAgUmFuZ2VDb25zdHJhaW50IHZhbGlkaXR5LAorICAgICAgICB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6Om51bWVyaWNfbGltaXRzPFNyYz46OmlzX2ludGVnZXIsIGludD46OnR5cGUg
PSAwKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChEc3RSYW5nZVJlbGF0aW9uVG9TcmNSYW5nZTxU
Pih2YWx1ZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgUkFOR0VfVkFMSUQ6CisgICAg
ICAgICAgICAgICAgdmFsdWVfID0gc3RhdGljX2Nhc3Q8VD4odmFsdWUpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIFJBTkdFX1VOREVSRkxPVzoKKyAgICAgICAg
ICAgICAgICB2YWx1ZV8gPSAtc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aW5maW5pdHkoKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBSQU5HRV9PVkVSRkxPVzoK
KyAgICAgICAgICAgICAgICB2YWx1ZV8gPSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjppbmZpbml0
eSgpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIFJBTkdFX0lO
VkFMSUQ6CisgICAgICAgICAgICAgICAgdmFsdWVfID0gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6
cXVpZXRfTmFOKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgTk9UUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorCisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFNyYz4KKyAgICBleHBsaWNpdCBDaGVja2VkTnVtZXJpY1N0
YXRlKAorICAgICAgICBTcmMgdmFsdWUsCisgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHN0ZDo6bnVtZXJpY19saW1pdHM8U3JjPjo6aXNfc3BlY2lhbGl6ZWQsIGludD46OnR5cGUgPSAw
KQorICAgICAgICA6IHZhbHVlXyhzdGF0aWNfY2FzdDxUPih2YWx1ZSkpCisgICAgeworICAgIH0K
KworICAgIC8vIENvcHkgY29uc3RydWN0b3IuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFNyYz4K
KyAgICBDaGVja2VkTnVtZXJpY1N0YXRlKGNvbnN0IENoZWNrZWROdW1lcmljU3RhdGU8U3JjPiAm
cmhzKSA6IHZhbHVlXyhzdGF0aWNfY2FzdDxUPihyaHMudmFsdWUoKSkpCisgICAgeworICAgIH0K
KworICAgIFJhbmdlQ29uc3RyYWludCB2YWxpZGl0eSgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gR2V0UmFuZ2VDb25zdHJhaW50KHZhbHVlXyA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+
OjptYXgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV8gPj0gLXN0
ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCgpKTsKKyAgICB9CisgICAgVCB2YWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIHZhbHVlXzsgfQorfTsKKworLy8gRm9yIGludGVnZXJzIGxlc3MgdGhhbiAxMjgt
Yml0IGFuZCBmbG9hdHMgMzItYml0IG9yIGxhcmdlciwgd2UgaGF2ZSB0aGUgdHlwZQorLy8gd2l0
aCB0aGUgbGFyZ2VyIG1heGltdW0gZXhwb25lbnQgdGFrZSBwcmVjZWRlbmNlLgorZW51bSBBcml0
aG1ldGljUHJvbW90aW9uQ2F0ZWdvcnkKK3sKKyAgICBMRUZUX1BST01PVElPTiwKKyAgICBSSUdI
VF9QUk9NT1RJT04KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBMaHMsCisgICAgICAgICAgdHlw
ZW5hbWUgUmhzID0gTGhzLAorICAgICAgICAgIEFyaXRobWV0aWNQcm9tb3Rpb25DYXRlZ29yeSBQ
cm9tb3Rpb24gPQorICAgICAgICAgICAgICAoTWF4RXhwb25lbnQ8TGhzPjo6dmFsdWUgPiBNYXhF
eHBvbmVudDxSaHM+Ojp2YWx1ZSkgPyBMRUZUX1BST01PVElPTgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBSSUdIVF9Q
Uk9NT1RJT04+CitzdHJ1Y3QgQXJpdGhtZXRpY1Byb21vdGlvbjsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIExocywgdHlwZW5hbWUgUmhzPgorc3RydWN0IEFyaXRobWV0aWNQcm9tb3Rpb248TGhzLCBS
aHMsIExFRlRfUFJPTU9USU9OPgoreworICAgIHR5cGVkZWYgTGhzIHR5cGU7Cit9OworCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSaHM+CitzdHJ1Y3QgQXJpdGhtZXRpY1Byb21v
dGlvbjxMaHMsIFJocywgUklHSFRfUFJPTU9USU9OPgoreworICAgIHR5cGVkZWYgUmhzIHR5cGU7
Cit9OworCisvLyBXZSBjYW4gc3RhdGljYWxseSBjaGVjayBpZiBvcGVyYXRpb25zIG9uIHRoZSBw
cm92aWRlZCB0eXBlcyBjYW4gd3JhcCwgc28gd2UKKy8vIGNhbiBza2lwIHRoZSBjaGVja2VkIG9w
ZXJhdGlvbnMgaWYgdGhleSdyZSBub3QgbmVlZGVkLiBTbywgZm9yIGFuIGludGVnZXIgd2UKKy8v
IGNhcmUgaWYgdGhlIGRlc3RpbmF0aW9uIHR5cGUgcHJlc2VydmVzIHRoZSBzaWduIGFuZCBpcyB0
d2ljZSB0aGUgd2lkdGggb2YKKy8vIHRoZSBzb3VyY2UuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSaHM+CitzdHJ1Y3QgSXNJbnRlZ2VyQXJpdGhtZXRpY1Nh
ZmUKK3sKKyAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9CisgICAgICAgICFzdGQ6Om51bWVy
aWNfbGltaXRzPFQ+Ojppc19pZWM1NTkgJiYKKyAgICAgICAgU3RhdGljRHN0UmFuZ2VSZWxhdGlv
blRvU3JjUmFuZ2U8VCwgTGhzPjo6dmFsdWUgPT0gTlVNRVJJQ19SQU5HRV9DT05UQUlORUQgJiYK
KyAgICAgICAgc2l6ZW9mKFQpID49ICgyICogc2l6ZW9mKExocykpICYmCisgICAgICAgIFN0YXRp
Y0RzdFJhbmdlUmVsYXRpb25Ub1NyY1JhbmdlPFQsIFJocz46OnZhbHVlICE9IE5VTUVSSUNfUkFO
R0VfQ09OVEFJTkVEICYmCisgICAgICAgIHNpemVvZihUKSA+PSAoMiAqIHNpemVvZihSaHMpKTsK
K307CisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGJhc2UKKwor
I2VuZGlmICAvLyBCQVNFX05VTUVSSUNTX1NBRkVfTUFUSF9JTVBMX0hfCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3RoaXJkX3BhcnR5L251bWVyaWNzL2Jhc2UvbnVt
ZXJpY3Mvc2FmZV9udW1lcmljc191bml0dGVzdC5jYwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3RoaXJkX3BhcnR5L251bWVyaWNzL2Jhc2UvbnVtZXJp
Y3Mvc2FmZV9udW1lcmljc191bml0dGVzdC5jYwkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3RoaXJkX3BhcnR5L251bWVyaWNzL2Jhc2UvbnVtZXJp
Y3Mvc2FmZV9udW1lcmljc191bml0dGVzdC5jYwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc3
MSBAQAorLy8gQ29weXJpZ2h0IDIwMTMgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNpbmNsdWRl
IDxsaW1pdHM+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisKKyNpbmNsdWRlICJiYXNlL2NvbXBp
bGVyX3NwZWNpZmljLmgiCisjaW5jbHVkZSAiYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25z
LmgiCisjaW5jbHVkZSAiYmFzZS9udW1lcmljcy9zYWZlX21hdGguaCIKKyNpbmNsdWRlICJidWls
ZC9idWlsZF9jb25maWcuaCIKKyNpbmNsdWRlICJ0ZXN0aW5nL2d0ZXN0L2luY2x1ZGUvZ3Rlc3Qv
Z3Rlc3QuaCIKKworI2lmIGRlZmluZWQoQ09NUElMRVJfTVNWQykgJiYgZGVmaW5lZChBUkNIX0NQ
VV8zMl9CSVRTKQorI2luY2x1ZGUgPG1taW50cmluLmg+CisjZW5kaWYKKwordXNpbmcgc3RkOjpu
dW1lcmljX2xpbWl0czsKK3VzaW5nIGJhc2U6OkNoZWNrZWROdW1lcmljOwordXNpbmcgYmFzZTo6
Y2hlY2tlZF9jYXN0OwordXNpbmcgYmFzZTo6SXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlwZTsK
K3VzaW5nIGJhc2U6OklzVmFsdWVOZWdhdGl2ZTsKK3VzaW5nIGJhc2U6OlNpemVUOwordXNpbmcg
YmFzZTo6U3RyaWN0TnVtZXJpYzsKK3VzaW5nIGJhc2U6OnNhdHVyYXRlZF9jYXN0OwordXNpbmcg
YmFzZTo6c3RyaWN0X2Nhc3Q7Cit1c2luZyBiYXNlOjppbnRlcm5hbDo6TWF4RXhwb25lbnQ7Cit1
c2luZyBiYXNlOjppbnRlcm5hbDo6UkFOR0VfVkFMSUQ7Cit1c2luZyBiYXNlOjppbnRlcm5hbDo6
UkFOR0VfSU5WQUxJRDsKK3VzaW5nIGJhc2U6OmludGVybmFsOjpSQU5HRV9PVkVSRkxPVzsKK3Vz
aW5nIGJhc2U6OmludGVybmFsOjpSQU5HRV9VTkRFUkZMT1c7Cit1c2luZyBiYXNlOjppbnRlcm5h
bDo6U2lnbmVkSW50ZWdlckZvclNpemU7CisKKy8vIFRoZXNlIHRlc3RzIGRlbGliZXJhdGVseSBj
YXVzZSBhcml0aG1ldGljIG92ZXJmbG93cy4gSWYgdGhlIGNvbXBpbGVyIGlzCisvLyBhZ2dyZXNz
aXZlIGVub3VnaCwgaXQgY2FuIGNvbnN0IGZvbGQgdGhlc2Ugb3ZlcmZsb3dzLiBEaXNhYmxlIHdh
cm5pbmdzIGFib3V0CisvLyBvdmVyZmxvd3MgZm9yIGNvbnN0IGV4cHJlc3Npb25zLgorI2lmIGRl
ZmluZWQoT1NfV0lOKQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0NzU2KQorI2VuZGlmCisK
Ky8vIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGZpbmRpbmcgdGhlIG1heGltdW0gdmFs
dWUgaW4gU3JjIHRoYXQgY2FuIGJlCisvLyB3aG9seSByZXByZXNlbnRlZCBhcyB0aGUgZGVzdGlu
YXRpb24gZmxvYXRpbmctcG9pbnQgdHlwZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBEc3QsIHR5cGVu
YW1lIFNyYz4KK0RzdCBHZXRNYXhDb252ZXJ0aWJsZVRvRmxvYXQoKQoreworICAgIHR5cGVkZWYg
bnVtZXJpY19saW1pdHM8RHN0PiBEc3RMaW1pdHM7CisgICAgdHlwZWRlZiBudW1lcmljX2xpbWl0
czxTcmM+IFNyY0xpbWl0czsKKyAgICBzdGF0aWNfYXNzZXJ0KFNyY0xpbWl0czo6aXNfc3BlY2lh
bGl6ZWQsICJTb3VyY2UgbXVzdCBiZSBudW1lcmljLiIpOworICAgIHN0YXRpY19hc3NlcnQoRHN0
TGltaXRzOjppc19zcGVjaWFsaXplZCwgIkRlc3RpbmF0aW9uIG11c3QgYmUgbnVtZXJpYy4iKTsK
KyAgICBDSEVDSyhEc3RMaW1pdHM6OmlzX2llYzU1OSk7CisKKyAgICBpZiAoU3JjTGltaXRzOjpk
aWdpdHMgPD0gRHN0TGltaXRzOjpkaWdpdHMgJiYKKyAgICAgICAgTWF4RXhwb25lbnQ8U3JjPjo6
dmFsdWUgPD0gTWF4RXhwb25lbnQ8RHN0Pjo6dmFsdWUpCisgICAgICAgIHJldHVybiBTcmNMaW1p
dHM6Om1heCgpOworICAgIFNyYyBtYXggPSBTcmNMaW1pdHM6Om1heCgpIC8gMiArIChTcmNMaW1p
dHM6OmlzX2ludGVnZXIgPyAxIDogMCk7CisgICAgd2hpbGUgKG1heCAhPSBzdGF0aWNfY2FzdDxT
cmM+KHN0YXRpY19jYXN0PERzdD4obWF4KSkpCisgICAgeworICAgICAgICBtYXggLz0gMjsKKyAg
ICB9CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERzdD4obWF4KTsKK30KKworLy8gSGVscGVyIG1h
Y3JvcyB0byB3cmFwIGRpc3BsYXlpbmcgdGhlIGNvbnZlcnNpb24gdHlwZXMgYW5kIGxpbmUgbnVt
YmVycy4KKyNkZWZpbmUgVEVTVF9FWFBFQ1RFRF9WQUxJRElUWShleHBlY3RlZCwgYWN0dWFsKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVYUEVDVF9F
UShleHBlY3RlZCwgQ2hlY2tlZE51bWVyaWM8RHN0PihhY3R1YWwpLklzVmFsaWQoKSkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIDw8ICJSZXN1bHQgdGVzdDogVmFsdWUg
IiA8PCArKGFjdHVhbCkuVmFsdWVVbnNhZmUoKSA8PCAiIGFzICIgPDwgZHN0IDw8ICIgb24gbGlu
ZSAiIFwKKyAgICAgICAgPDwgbGluZTsKKworI2RlZmluZSBURVNUX0VYUEVDVEVEX1NVQ0NFU1Mo
YWN0dWFsKSBURVNUX0VYUEVDVEVEX1ZBTElESVRZKHRydWUsIGFjdHVhbCkKKyNkZWZpbmUgVEVT
VF9FWFBFQ1RFRF9GQUlMVVJFKGFjdHVhbCkgVEVTVF9FWFBFQ1RFRF9WQUxJRElUWShmYWxzZSwg
YWN0dWFsKQorCisjZGVmaW5lIFRFU1RfRVhQRUNURURfVkFMVUUoZXhwZWN0ZWQsIGFjdHVhbCkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVY
UEVDVF9FUShzdGF0aWNfY2FzdDxEc3Q+KGV4cGVjdGVkKSwgQ2hlY2tlZE51bWVyaWM8RHN0Pihh
Y3R1YWwpLlZhbHVlVW5zYWZlKCkpICAgICAgICAgIFwKKyAgICAgICAgPDwgIlJlc3VsdCB0ZXN0
OiBWYWx1ZSAiIDw8ICsoKGFjdHVhbCkuVmFsdWVVbnNhZmUoKSkgPDwgIiBhcyAiIDw8IGRzdCA8
PCAiIG9uIGxpbmUgIiBcCisgICAgICAgIDw8IGxpbmU7CisKKy8vIFNpZ25lZCBpbnRlZ2VyIGFy
aXRobWV0aWMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRHN0Pgorc3RhdGljIHZvaWQgVGVzdFNwZWNp
YWxpemVkQXJpdGhtZXRpYygKKyAgICBjb25zdCBjaGFyICpkc3QsCisgICAgaW50IGxpbmUsCisg
ICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8bnVtZXJpY19saW1pdHM8RHN0Pjo6aXNfaW50ZWdl
ciAmJiBudW1lcmljX2xpbWl0czxEc3Q+Ojppc19zaWduZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50Pjo6dHlwZSA9IDApCit7CisgICAgdHlwZWRlZiBudW1lcmljX2xpbWl0czxE
c3Q+IERzdExpbWl0czsKKyAgICBURVNUX0VYUEVDVEVEX0ZBSUxVUkUoLUNoZWNrZWROdW1lcmlj
PERzdD4oRHN0TGltaXRzOjptaW4oKSkpOworICAgIFRFU1RfRVhQRUNURURfRkFJTFVSRShDaGVj
a2VkTnVtZXJpYzxEc3Q+KERzdExpbWl0czo6bWluKCkpLkFicygpKTsKKyAgICBURVNUX0VYUEVD
VEVEX1ZBTFVFKDEsIENoZWNrZWROdW1lcmljPERzdD4oLTEpLkFicygpKTsKKworICAgIFRFU1Rf
RVhQRUNURURfU1VDQ0VTUyhDaGVja2VkTnVtZXJpYzxEc3Q+KERzdExpbWl0czo6bWF4KCkpICsg
LTEpOworICAgIFRFU1RfRVhQRUNURURfRkFJTFVSRShDaGVja2VkTnVtZXJpYzxEc3Q+KERzdExp
bWl0czo6bWluKCkpICsgLTEpOworICAgIFRFU1RfRVhQRUNURURfRkFJTFVSRShDaGVja2VkTnVt
ZXJpYzxEc3Q+KC1Ec3RMaW1pdHM6Om1heCgpKSArIC1Ec3RMaW1pdHM6Om1heCgpKTsKKworICAg
IFRFU1RfRVhQRUNURURfRkFJTFVSRShDaGVja2VkTnVtZXJpYzxEc3Q+KERzdExpbWl0czo6bWlu
KCkpIC0gMSk7CisgICAgVEVTVF9FWFBFQ1RFRF9TVUNDRVNTKENoZWNrZWROdW1lcmljPERzdD4o
RHN0TGltaXRzOjptaW4oKSkgLSAtMSk7CisgICAgVEVTVF9FWFBFQ1RFRF9GQUlMVVJFKENoZWNr
ZWROdW1lcmljPERzdD4oRHN0TGltaXRzOjptYXgoKSkgLSAtRHN0TGltaXRzOjptYXgoKSk7Cisg
ICAgVEVTVF9FWFBFQ1RFRF9GQUlMVVJFKENoZWNrZWROdW1lcmljPERzdD4oLURzdExpbWl0czo6
bWF4KCkpIC0gRHN0TGltaXRzOjptYXgoKSk7CisKKyAgICBURVNUX0VYUEVDVEVEX0ZBSUxVUkUo
Q2hlY2tlZE51bWVyaWM8RHN0PihEc3RMaW1pdHM6Om1pbigpKSAqIDIpOworCisgICAgVEVTVF9F
WFBFQ1RFRF9GQUlMVVJFKENoZWNrZWROdW1lcmljPERzdD4oRHN0TGltaXRzOjptaW4oKSkgLyAt
MSk7CisgICAgVEVTVF9FWFBFQ1RFRF9WQUxVRSgwLCBDaGVja2VkTnVtZXJpYzxEc3Q+KC0xKSAv
IDIpOworCisgICAgLy8gTW9kdWx1cyBpcyBsZWdhbCBvbmx5IGZvciBpbnRlZ2Vycy4KKyAgICBU
RVNUX0VYUEVDVEVEX1ZBTFVFKDAsIENoZWNrZWROdW1lcmljPERzdD4oKSAlIDEpOworICAgIFRF
U1RfRVhQRUNURURfVkFMVUUoMCwgQ2hlY2tlZE51bWVyaWM8RHN0PigxKSAlIDEpOworICAgIFRF
U1RfRVhQRUNURURfVkFMVUUoLTEsIENoZWNrZWROdW1lcmljPERzdD4oLTEpICUgMik7CisgICAg
VEVTVF9FWFBFQ1RFRF9GQUlMVVJFKENoZWNrZWROdW1lcmljPERzdD4oLTEpICUgLTIpOworICAg
IFRFU1RfRVhQRUNURURfVkFMVUUoMCwgQ2hlY2tlZE51bWVyaWM8RHN0PihEc3RMaW1pdHM6Om1p
bigpKSAlIDIpOworICAgIFRFU1RfRVhQRUNURURfVkFMVUUoMSwgQ2hlY2tlZE51bWVyaWM8RHN0
PihEc3RMaW1pdHM6Om1heCgpKSAlIDIpOworICAgIC8vIFRlc3QgYWxsIHRoZSBkaWZmZXJlbnQg
bW9kdWx1cyBjb21iaW5hdGlvbnMuCisgICAgVEVTVF9FWFBFQ1RFRF9WQUxVRSgwLCBDaGVja2Vk
TnVtZXJpYzxEc3Q+KDEpICUgQ2hlY2tlZE51bWVyaWM8RHN0PigxKSk7CisgICAgVEVTVF9FWFBF
Q1RFRF9WQUxVRSgwLCAxICUgQ2hlY2tlZE51bWVyaWM8RHN0PigxKSk7CisgICAgVEVTVF9FWFBF
Q1RFRF9WQUxVRSgwLCBDaGVja2VkTnVtZXJpYzxEc3Q+KDEpICUgMSk7CisgICAgQ2hlY2tlZE51
bWVyaWM8RHN0PiBjaGVja2VkX2RzdCA9IDE7CisgICAgVEVTVF9FWFBFQ1RFRF9WQUxVRSgwLCBj
aGVja2VkX2RzdCAlPSAxKTsKK30KKworLy8gVW5zaWduZWQgaW50ZWdlciBhcml0aG1ldGljLgor
dGVtcGxhdGUgPHR5cGVuYW1lIERzdD4KK3N0YXRpYyB2b2lkIFRlc3RTcGVjaWFsaXplZEFyaXRo
bWV0aWMoCisgICAgY29uc3QgY2hhciAqZHN0LAorICAgIGludCBsaW5lLAorICAgIHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPG51bWVyaWNfbGltaXRzPERzdD46OmlzX2ludGVnZXIgJiYgIW51bWVy
aWNfbGltaXRzPERzdD46OmlzX3NpZ25lZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQ+Ojp0eXBlID0gMCkKK3sKKyAgICB0eXBlZGVmIG51bWVyaWNfbGltaXRzPERzdD4gRHN0TGlt
aXRzOworICAgIFRFU1RfRVhQRUNURURfU1VDQ0VTUygtQ2hlY2tlZE51bWVyaWM8RHN0PihEc3RM
aW1pdHM6Om1pbigpKSk7CisgICAgVEVTVF9FWFBFQ1RFRF9TVUNDRVNTKENoZWNrZWROdW1lcmlj
PERzdD4oRHN0TGltaXRzOjptaW4oKSkuQWJzKCkpOworICAgIFRFU1RfRVhQRUNURURfRkFJTFVS
RShDaGVja2VkTnVtZXJpYzxEc3Q+KERzdExpbWl0czo6bWluKCkpICsgLTEpOworICAgIFRFU1Rf
RVhQRUNURURfRkFJTFVSRShDaGVja2VkTnVtZXJpYzxEc3Q+KERzdExpbWl0czo6bWluKCkpIC0g
MSk7CisgICAgVEVTVF9FWFBFQ1RFRF9WQUxVRSgwLCBDaGVja2VkTnVtZXJpYzxEc3Q+KERzdExp
bWl0czo6bWluKCkpICogMik7CisgICAgVEVTVF9FWFBFQ1RFRF9WQUxVRSgwLCBDaGVja2VkTnVt
ZXJpYzxEc3Q+KDEpIC8gMik7CisgICAgVEVTVF9FWFBFQ1RFRF9TVUNDRVNTKENoZWNrZWROdW1l
cmljPERzdD4oRHN0TGltaXRzOjptaW4oKSkuVW5zaWduZWRBYnMoKSk7CisgICAgVEVTVF9FWFBF
Q1RFRF9TVUNDRVNTKENoZWNrZWROdW1lcmljPHR5cGVuYW1lIFNpZ25lZEludGVnZXJGb3JTaXpl
PERzdD46OnR5cGU+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpudW1lcmlj
X2xpbWl0czx0eXBlbmFtZSBTaWduZWRJbnRlZ2VyRm9yU2l6ZTxEc3Q+Ojp0eXBlPjo6bWluKCkp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuVW5zaWduZWRBYnMoKSk7CisKKyAgICAv
LyBNb2R1bHVzIGlzIGxlZ2FsIG9ubHkgZm9yIGludGVnZXJzLgorICAgIFRFU1RfRVhQRUNURURf
VkFMVUUoMCwgQ2hlY2tlZE51bWVyaWM8RHN0PigpICUgMSk7CisgICAgVEVTVF9FWFBFQ1RFRF9W
QUxVRSgwLCBDaGVja2VkTnVtZXJpYzxEc3Q+KDEpICUgMSk7CisgICAgVEVTVF9FWFBFQ1RFRF9W
QUxVRSgxLCBDaGVja2VkTnVtZXJpYzxEc3Q+KDEpICUgMik7CisgICAgVEVTVF9FWFBFQ1RFRF9W
QUxVRSgwLCBDaGVja2VkTnVtZXJpYzxEc3Q+KERzdExpbWl0czo6bWluKCkpICUgMik7CisgICAg
VEVTVF9FWFBFQ1RFRF9WQUxVRSgxLCBDaGVja2VkTnVtZXJpYzxEc3Q+KERzdExpbWl0czo6bWF4
KCkpICUgMik7CisgICAgLy8gVGVzdCBhbGwgdGhlIGRpZmZlcmVudCBtb2R1bHVzIGNvbWJpbmF0
aW9ucy4KKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDAsIENoZWNrZWROdW1lcmljPERzdD4oMSkg
JSBDaGVja2VkTnVtZXJpYzxEc3Q+KDEpKTsKKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDAsIDEg
JSBDaGVja2VkTnVtZXJpYzxEc3Q+KDEpKTsKKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDAsIENo
ZWNrZWROdW1lcmljPERzdD4oMSkgJSAxKTsKKyAgICBDaGVja2VkTnVtZXJpYzxEc3Q+IGNoZWNr
ZWRfZHN0ID0gMTsKKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDAsIGNoZWNrZWRfZHN0ICU9IDEp
OworfQorCisvLyBGbG9hdGluZyBwb2ludCBhcml0aG1ldGljLgordGVtcGxhdGUgPHR5cGVuYW1l
IERzdD4KK3ZvaWQgVGVzdFNwZWNpYWxpemVkQXJpdGhtZXRpYygKKyAgICBjb25zdCBjaGFyICpk
c3QsCisgICAgaW50IGxpbmUsCisgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8bnVtZXJpY19s
aW1pdHM8RHN0Pjo6aXNfaWVjNTU5LCBpbnQ+Ojp0eXBlID0gMCkKK3sKKyAgICB0eXBlZGVmIG51
bWVyaWNfbGltaXRzPERzdD4gRHN0TGltaXRzOworICAgIFRFU1RfRVhQRUNURURfU1VDQ0VTUygt
Q2hlY2tlZE51bWVyaWM8RHN0PihEc3RMaW1pdHM6Om1pbigpKSk7CisKKyAgICBURVNUX0VYUEVD
VEVEX1NVQ0NFU1MoQ2hlY2tlZE51bWVyaWM8RHN0PihEc3RMaW1pdHM6Om1pbigpKS5BYnMoKSk7
CisgICAgVEVTVF9FWFBFQ1RFRF9WQUxVRSgxLCBDaGVja2VkTnVtZXJpYzxEc3Q+KC0xKS5BYnMo
KSk7CisKKyAgICBURVNUX0VYUEVDVEVEX1NVQ0NFU1MoQ2hlY2tlZE51bWVyaWM8RHN0PihEc3RM
aW1pdHM6Om1pbigpKSArIC0xKTsKKyAgICBURVNUX0VYUEVDVEVEX1NVQ0NFU1MoQ2hlY2tlZE51
bWVyaWM8RHN0PihEc3RMaW1pdHM6Om1heCgpKSArIDEpOworICAgIFRFU1RfRVhQRUNURURfRkFJ
TFVSRShDaGVja2VkTnVtZXJpYzxEc3Q+KC1Ec3RMaW1pdHM6Om1heCgpKSArIC1Ec3RMaW1pdHM6
Om1heCgpKTsKKworICAgIFRFU1RfRVhQRUNURURfRkFJTFVSRShDaGVja2VkTnVtZXJpYzxEc3Q+
KERzdExpbWl0czo6bWF4KCkpIC0gLURzdExpbWl0czo6bWF4KCkpOworICAgIFRFU1RfRVhQRUNU
RURfRkFJTFVSRShDaGVja2VkTnVtZXJpYzxEc3Q+KC1Ec3RMaW1pdHM6Om1heCgpKSAtIERzdExp
bWl0czo6bWF4KCkpOworCisgICAgVEVTVF9FWFBFQ1RFRF9TVUNDRVNTKENoZWNrZWROdW1lcmlj
PERzdD4oRHN0TGltaXRzOjptaW4oKSkgKiAyKTsKKworICAgIFRFU1RfRVhQRUNURURfVkFMVUUo
LTAuNSwgQ2hlY2tlZE51bWVyaWM8RHN0PigtMS4wKSAvIDIpOworICAgIEVYUEVDVF9FUShzdGF0
aWNfY2FzdDxEc3Q+KDEuMCksIENoZWNrZWROdW1lcmljPERzdD4oMS4wKS5WYWx1ZUZsb2F0aW5n
KCkpOworfQorCisvLyBHZW5lcmljIGFyaXRobWV0aWMgdGVzdHMuCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgRHN0Pgorc3RhdGljIHZvaWQgVGVzdEFyaXRobWV0aWMoY29uc3QgY2hhciAqZHN0LCBpbnQg
bGluZSkKK3sKKyAgICB0eXBlZGVmIG51bWVyaWNfbGltaXRzPERzdD4gRHN0TGltaXRzOworCisg
ICAgRVhQRUNUX0VRKHRydWUsIENoZWNrZWROdW1lcmljPERzdD4oKS5Jc1ZhbGlkKCkpOworICAg
IEVYUEVDVF9FUSgKKyAgICAgICAgZmFsc2UsCisgICAgICAgIENoZWNrZWROdW1lcmljPERzdD4o
Q2hlY2tlZE51bWVyaWM8RHN0PihEc3RMaW1pdHM6Om1heCgpKSAqIERzdExpbWl0czo6bWF4KCkp
LklzVmFsaWQoKSk7CisgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PERzdD4oMCksIENoZWNrZWRO
dW1lcmljPERzdD4oKS5WYWx1ZU9yRGllKCkpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxE
c3Q+KDApLCBDaGVja2VkTnVtZXJpYzxEc3Q+KCkuVmFsdWVPckRlZmF1bHQoMSkpOworICAgIEVY
UEVDVF9FUShzdGF0aWNfY2FzdDxEc3Q+KDEpLAorICAgICAgICAgICAgICBDaGVja2VkTnVtZXJp
YzxEc3Q+KENoZWNrZWROdW1lcmljPERzdD4oRHN0TGltaXRzOjptYXgoKSkgKiBEc3RMaW1pdHM6
Om1heCgpKQorICAgICAgICAgICAgICAgICAgLlZhbHVlT3JEZWZhdWx0KDEpKTsKKworICAgIC8v
IFRlc3QgdGhlIG9wZXJhdG9yIGNvbWJpbmF0aW9ucy4KKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVF
KDIsIENoZWNrZWROdW1lcmljPERzdD4oMSkgKyBDaGVja2VkTnVtZXJpYzxEc3Q+KDEpKTsKKyAg
ICBURVNUX0VYUEVDVEVEX1ZBTFVFKDAsIENoZWNrZWROdW1lcmljPERzdD4oMSkgLSBDaGVja2Vk
TnVtZXJpYzxEc3Q+KDEpKTsKKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDEsIENoZWNrZWROdW1l
cmljPERzdD4oMSkgKiBDaGVja2VkTnVtZXJpYzxEc3Q+KDEpKTsKKyAgICBURVNUX0VYUEVDVEVE
X1ZBTFVFKDEsIENoZWNrZWROdW1lcmljPERzdD4oMSkgLyBDaGVja2VkTnVtZXJpYzxEc3Q+KDEp
KTsKKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDIsIDEgKyBDaGVja2VkTnVtZXJpYzxEc3Q+KDEp
KTsKKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDAsIDEgLSBDaGVja2VkTnVtZXJpYzxEc3Q+KDEp
KTsKKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDEsIDEgKiBDaGVja2VkTnVtZXJpYzxEc3Q+KDEp
KTsKKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDEsIDEgLyBDaGVja2VkTnVtZXJpYzxEc3Q+KDEp
KTsKKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDIsIENoZWNrZWROdW1lcmljPERzdD4oMSkgKyAx
KTsKKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDAsIENoZWNrZWROdW1lcmljPERzdD4oMSkgLSAx
KTsKKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDEsIENoZWNrZWROdW1lcmljPERzdD4oMSkgKiAx
KTsKKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDEsIENoZWNrZWROdW1lcmljPERzdD4oMSkgLyAx
KTsKKyAgICBDaGVja2VkTnVtZXJpYzxEc3Q+IGNoZWNrZWRfZHN0ID0gMTsKKyAgICBURVNUX0VY
UEVDVEVEX1ZBTFVFKDIsIGNoZWNrZWRfZHN0ICs9IDEpOworICAgIGNoZWNrZWRfZHN0ID0gMTsK
KyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDAsIGNoZWNrZWRfZHN0IC09IDEpOworICAgIGNoZWNr
ZWRfZHN0ID0gMTsKKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDEsIGNoZWNrZWRfZHN0ICo9IDEp
OworICAgIGNoZWNrZWRfZHN0ID0gMTsKKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDEsIGNoZWNr
ZWRfZHN0IC89IDEpOworCisgICAgLy8gR2VuZXJpYyBuZWdhdGlvbi4KKyAgICBURVNUX0VYUEVD
VEVEX1ZBTFVFKDAsIC1DaGVja2VkTnVtZXJpYzxEc3Q+KCkpOworICAgIFRFU1RfRVhQRUNURURf
VkFMVUUoLTEsIC1DaGVja2VkTnVtZXJpYzxEc3Q+KDEpKTsKKyAgICBURVNUX0VYUEVDVEVEX1ZB
TFVFKDEsIC1DaGVja2VkTnVtZXJpYzxEc3Q+KC0xKSk7CisgICAgVEVTVF9FWFBFQ1RFRF9WQUxV
RShzdGF0aWNfY2FzdDxEc3Q+KERzdExpbWl0czo6bWF4KCkgKiAtMSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAtQ2hlY2tlZE51bWVyaWM8RHN0PihEc3RMaW1pdHM6Om1heCgpKSk7CisKKyAg
ICAvLyBHZW5lcmljIGFic29sdXRlIHZhbHVlLgorICAgIFRFU1RfRVhQRUNURURfVkFMVUUoMCwg
Q2hlY2tlZE51bWVyaWM8RHN0PigpLkFicygpKTsKKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDEs
IENoZWNrZWROdW1lcmljPERzdD4oMSkuQWJzKCkpOworICAgIFRFU1RfRVhQRUNURURfVkFMVUUo
RHN0TGltaXRzOjptYXgoKSwgQ2hlY2tlZE51bWVyaWM8RHN0PihEc3RMaW1pdHM6Om1heCgpKS5B
YnMoKSk7CisKKyAgICAvLyBHZW5lcmljIGFkZGl0aW9uLgorICAgIFRFU1RfRVhQRUNURURfVkFM
VUUoMSwgKENoZWNrZWROdW1lcmljPERzdD4oKSArIDEpKTsKKyAgICBURVNUX0VYUEVDVEVEX1ZB
TFVFKDIsIChDaGVja2VkTnVtZXJpYzxEc3Q+KDEpICsgMSkpOworICAgIFRFU1RfRVhQRUNURURf
VkFMVUUoMCwgKENoZWNrZWROdW1lcmljPERzdD4oLTEpICsgMSkpOworICAgIFRFU1RfRVhQRUNU
RURfU1VDQ0VTUyhDaGVja2VkTnVtZXJpYzxEc3Q+KERzdExpbWl0czo6bWluKCkpICsgMSk7Cisg
ICAgVEVTVF9FWFBFQ1RFRF9GQUlMVVJFKENoZWNrZWROdW1lcmljPERzdD4oRHN0TGltaXRzOjpt
YXgoKSkgKyBEc3RMaW1pdHM6Om1heCgpKTsKKworICAgIC8vIEdlbmVyaWMgc3VidHJhY3Rpb24u
CisgICAgVEVTVF9FWFBFQ1RFRF9WQUxVRSgtMSwgKENoZWNrZWROdW1lcmljPERzdD4oKSAtIDEp
KTsKKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDAsIChDaGVja2VkTnVtZXJpYzxEc3Q+KDEpIC0g
MSkpOworICAgIFRFU1RfRVhQRUNURURfVkFMVUUoLTIsIChDaGVja2VkTnVtZXJpYzxEc3Q+KC0x
KSAtIDEpKTsKKyAgICBURVNUX0VYUEVDVEVEX1NVQ0NFU1MoQ2hlY2tlZE51bWVyaWM8RHN0PihE
c3RMaW1pdHM6Om1heCgpKSAtIDEpOworCisgICAgLy8gR2VuZXJpYyBtdWx0aXBsaWNhdGlvbi4K
KyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDAsIChDaGVja2VkTnVtZXJpYzxEc3Q+KCkgKiAxKSk7
CisgICAgVEVTVF9FWFBFQ1RFRF9WQUxVRSgxLCAoQ2hlY2tlZE51bWVyaWM8RHN0PigxKSAqIDEp
KTsKKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKC0yLCAoQ2hlY2tlZE51bWVyaWM8RHN0PigtMSkg
KiAyKSk7CisgICAgVEVTVF9FWFBFQ1RFRF9WQUxVRSgwLCAoQ2hlY2tlZE51bWVyaWM8RHN0Pigw
KSAqIDApKTsKKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDAsIChDaGVja2VkTnVtZXJpYzxEc3Q+
KC0xKSAqIDApKTsKKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDAsIChDaGVja2VkTnVtZXJpYzxE
c3Q+KDApICogLTEpKTsKKyAgICBURVNUX0VYUEVDVEVEX0ZBSUxVUkUoQ2hlY2tlZE51bWVyaWM8
RHN0PihEc3RMaW1pdHM6Om1heCgpKSAqIERzdExpbWl0czo6bWF4KCkpOworCisgICAgLy8gR2Vu
ZXJpYyBkaXZpc2lvbi4KKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDAsIENoZWNrZWROdW1lcmlj
PERzdD4oKSAvIDEpOworICAgIFRFU1RfRVhQRUNURURfVkFMVUUoMSwgQ2hlY2tlZE51bWVyaWM8
RHN0PigxKSAvIDEpOworICAgIFRFU1RfRVhQRUNURURfVkFMVUUoRHN0TGltaXRzOjptaW4oKSAv
IDIsIENoZWNrZWROdW1lcmljPERzdD4oRHN0TGltaXRzOjptaW4oKSkgLyAyKTsKKyAgICBURVNU
X0VYUEVDVEVEX1ZBTFVFKERzdExpbWl0czo6bWF4KCkgLyAyLCBDaGVja2VkTnVtZXJpYzxEc3Q+
KERzdExpbWl0czo6bWF4KCkpIC8gMik7CisKKyAgICBUZXN0U3BlY2lhbGl6ZWRBcml0aG1ldGlj
PERzdD4oZHN0LCBsaW5lKTsKK30KKworLy8gSGVscGVyIG1hY3JvIHRvIHdyYXAgZGlzcGxheWlu
ZyB0aGUgY29udmVyc2lvbiB0eXBlcyBhbmQgbGluZSBudW1iZXJzLgorI2RlZmluZSBURVNUX0FS
SVRITUVUSUMoRHN0KSBUZXN0QXJpdGhtZXRpYzxEc3Q+KCNEc3QsIF9fTElORV9fKQorCitURVNU
KFNhZmVOdW1lcmljcywgU2lnbmVkSW50ZWdlck1hdGgpCit7CisgICAgVEVTVF9BUklUSE1FVElD
KGludDhfdCk7CisgICAgVEVTVF9BUklUSE1FVElDKGludCk7CisgICAgVEVTVF9BUklUSE1FVElD
KGludHB0cl90KTsKKyAgICBURVNUX0FSSVRITUVUSUMoaW50bWF4X3QpOworfQorCitURVNUKFNh
ZmVOdW1lcmljcywgVW5zaWduZWRJbnRlZ2VyTWF0aCkKK3sKKyAgICBURVNUX0FSSVRITUVUSUMo
dWludDhfdCk7CisgICAgVEVTVF9BUklUSE1FVElDKHVuc2lnbmVkIGludCk7CisgICAgVEVTVF9B
UklUSE1FVElDKHVpbnRwdHJfdCk7CisgICAgVEVTVF9BUklUSE1FVElDKHVpbnRtYXhfdCk7Cit9
CisKK1RFU1QoU2FmZU51bWVyaWNzLCBGbG9hdGluZ1BvaW50TWF0aCkKK3sKKyAgICBURVNUX0FS
SVRITUVUSUMoZmxvYXQpOworICAgIFRFU1RfQVJJVEhNRVRJQyhkb3VibGUpOworfQorCisvLyBF
bnVtZXJhdGVzIHRoZSBmaXZlIGRpZmZlcmVudCBjb252ZXJzaW9ucyB0eXBlcyB3ZSBuZWVkIHRv
IHRlc3QuCitlbnVtIE51bWVyaWNDb252ZXJzaW9uVHlwZQoreworICAgIFNJR05fUFJFU0VSVklO
R19WQUxVRV9QUkVTRVJWSU5HLAorICAgIFNJR05fUFJFU0VSVklOR19OQVJST1csCisgICAgU0lH
Tl9UT19VTlNJR05fV0lERU5fT1JfRVFVQUwsCisgICAgU0lHTl9UT19VTlNJR05fTkFSUk9XLAor
ICAgIFVOU0lHTl9UT19TSUdOX05BUlJPV19PUl9FUVVBTCwKK307CisKKy8vIFRlbXBsYXRlIGNv
dmVyaW5nIHRoZSBkaWZmZXJlbnQgY29udmVyc2lvbiB0ZXN0cy4KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBEc3QsIHR5cGVuYW1lIFNyYywgTnVtZXJpY0NvbnZlcnNpb25UeXBlIGNvbnZlcnNpb24+Citz
dHJ1Y3QgVGVzdE51bWVyaWNDb252ZXJzaW9uCit7Cit9OworCisvLyBFWFBFQ1RfRVEgd3JhcHBl
cnMgcHJvdmlkaW5nIHNwZWNpZmljIGRldGFpbCBvbiB0ZXN0IGZhaWx1cmVzLgorI2RlZmluZSBU
RVNUX0VYUEVDVEVEX1JBTkdFKGV4cGVjdGVkLCBhY3R1YWwpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVYUEVDVF9FUShleHBlY3RlZCwgYmFz
ZTo6aW50ZXJuYWw6OkRzdFJhbmdlUmVsYXRpb25Ub1NyY1JhbmdlPERzdD4oYWN0dWFsKSkgICAg
ICAgICAgICAgXAorICAgICAgICA8PCAiQ29udmVyc2lvbiB0ZXN0OiAiIDw8IHNyYyA8PCAiIHZh
bHVlICIgPDwgYWN0dWFsIDw8ICIgdG8gIiA8PCBkc3QgPDwgIiBvbiBsaW5lICIgXAorICAgICAg
ICA8PCBsaW5lOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRHN0LCB0eXBlbmFtZSBTcmM+CitzdHJ1
Y3QgVGVzdE51bWVyaWNDb252ZXJzaW9uPERzdCwgU3JjLCBTSUdOX1BSRVNFUlZJTkdfVkFMVUVf
UFJFU0VSVklORz4KK3sKKyAgICBzdGF0aWMgdm9pZCBUZXN0KGNvbnN0IGNoYXIgKmRzdCwgY29u
c3QgY2hhciAqc3JjLCBpbnQgbGluZSkKKyAgICB7CisgICAgICAgIHR5cGVkZWYgbnVtZXJpY19s
aW1pdHM8U3JjPiBTcmNMaW1pdHM7CisgICAgICAgIHR5cGVkZWYgbnVtZXJpY19saW1pdHM8RHN0
PiBEc3RMaW1pdHM7CisgICAgICAgIC8vIEludGVncmFsIHRvIGZsb2F0aW5nLgorICAgICAgICBz
dGF0aWNfYXNzZXJ0KAorICAgICAgICAgICAgKERzdExpbWl0czo6aXNfaWVjNTU5ICYmIFNyY0xp
bWl0czo6aXNfaW50ZWdlcikgfHwKKyAgICAgICAgICAgICAgICAvLyBOb3QgZmxvYXRpbmcgdG8g
aW50ZWdyYWwgYW5kLi4uCisgICAgICAgICAgICAgICAgKCEoRHN0TGltaXRzOjppc19pbnRlZ2Vy
ICYmIFNyY0xpbWl0czo6aXNfaWVjNTU5KSAmJgorICAgICAgICAgICAgICAgICAvLyBTYW1lIHNp
Z24sIHNhbWUgbnVtZXJpYywgc291cmNlIGlzIG5hcnJvd2VyIG9yIHNhbWUuCisgICAgICAgICAg
ICAgICAgICgoU3JjTGltaXRzOjppc19zaWduZWQgPT0gRHN0TGltaXRzOjppc19zaWduZWQgJiYg
c2l6ZW9mKERzdCkgPj0gc2l6ZW9mKFNyYykpIHx8CisgICAgICAgICAgICAgICAgICAvLyBPciBz
aWduZWQgZGVzdGluYXRpb24gYW5kIHNvdXJjZSBpcyBzbWFsbGVyCisgICAgICAgICAgICAgICAg
ICAoRHN0TGltaXRzOjppc19zaWduZWQgJiYgc2l6ZW9mKERzdCkgPiBzaXplb2YoU3JjKSkpKSwK
KyAgICAgICAgICAgICJDb21wYXJpc29uIG11c3QgYmUgc2lnbiBwcmVzZXJ2aW5nIGFuZCB2YWx1
ZSBwcmVzZXJ2aW5nIik7CisKKyAgICAgICAgY29uc3QgQ2hlY2tlZE51bWVyaWM8RHN0PiBjaGVj
a2VkX2RzdCA9IFNyY0xpbWl0czo6bWF4KCk7CisgICAgICAgIFRFU1RfRVhQRUNURURfU1VDQ0VT
UyhjaGVja2VkX2RzdCk7CisgICAgICAgIGlmIChNYXhFeHBvbmVudDxEc3Q+Ojp2YWx1ZSA+IE1h
eEV4cG9uZW50PFNyYz46OnZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoTWF4RXhw
b25lbnQ8RHN0Pjo6dmFsdWUgPj0gTWF4RXhwb25lbnQ8U3JjPjo6dmFsdWUgKiAyIC0gMSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBBdCBsZWFzdCB0d2ljZSBsYXJnZXIgdHlw
ZS4KKyAgICAgICAgICAgICAgICBURVNUX0VYUEVDVEVEX1NVQ0NFU1MoU3JjTGltaXRzOjptYXgo
KSAqIGNoZWNrZWRfZHN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHsgIC8vIExhcmdlciwgYnV0IG5vdCBhdCBsZWFzdCB0d2ljZSBhcyBsYXJnZS4KKyAg
ICAgICAgICAgICAgICBURVNUX0VYUEVDVEVEX0ZBSUxVUkUoU3JjTGltaXRzOjptYXgoKSAqIGNo
ZWNrZWRfZHN0KTsKKyAgICAgICAgICAgICAgICBURVNUX0VYUEVDVEVEX1NVQ0NFU1MoY2hlY2tl
ZF9kc3QgKyAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAg
ICAgIHsgIC8vIFNhbWUgd2lkdGggdHlwZS4KKyAgICAgICAgICAgIFRFU1RfRVhQRUNURURfRkFJ
TFVSRShjaGVja2VkX2RzdCArIDEpOworICAgICAgICB9CisKKyAgICAgICAgVEVTVF9FWFBFQ1RF
RF9SQU5HRShSQU5HRV9WQUxJRCwgU3JjTGltaXRzOjptYXgoKSk7CisgICAgICAgIFRFU1RfRVhQ
RUNURURfUkFOR0UoUkFOR0VfVkFMSUQsIHN0YXRpY19jYXN0PFNyYz4oMSkpOworICAgICAgICBp
ZiAoU3JjTGltaXRzOjppc19pZWM1NTkpCisgICAgICAgIHsKKyAgICAgICAgICAgIFRFU1RfRVhQ
RUNURURfUkFOR0UoUkFOR0VfVkFMSUQsIFNyY0xpbWl0czo6bWF4KCkgKiBzdGF0aWNfY2FzdDxT
cmM+KC0xKSk7CisgICAgICAgICAgICBURVNUX0VYUEVDVEVEX1JBTkdFKFJBTkdFX09WRVJGTE9X
LCBTcmNMaW1pdHM6OmluZmluaXR5KCkpOworICAgICAgICAgICAgVEVTVF9FWFBFQ1RFRF9SQU5H
RShSQU5HRV9VTkRFUkZMT1csIFNyY0xpbWl0czo6aW5maW5pdHkoKSAqIC0xKTsKKyAgICAgICAg
ICAgIFRFU1RfRVhQRUNURURfUkFOR0UoUkFOR0VfSU5WQUxJRCwgU3JjTGltaXRzOjpxdWlldF9O
YU4oKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobnVtZXJpY19saW1pdHM8U3JjPjo6
aXNfc2lnbmVkKQorICAgICAgICB7CisgICAgICAgICAgICBURVNUX0VYUEVDVEVEX1JBTkdFKFJB
TkdFX1ZBTElELCBzdGF0aWNfY2FzdDxTcmM+KC0xKSk7CisgICAgICAgICAgICBURVNUX0VYUEVD
VEVEX1JBTkdFKFJBTkdFX1ZBTElELCBTcmNMaW1pdHM6Om1pbigpKTsKKyAgICAgICAgfQorICAg
IH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBEc3QsIHR5cGVuYW1lIFNyYz4KK3N0cnVjdCBU
ZXN0TnVtZXJpY0NvbnZlcnNpb248RHN0LCBTcmMsIFNJR05fUFJFU0VSVklOR19OQVJST1c+Cit7
CisgICAgc3RhdGljIHZvaWQgVGVzdChjb25zdCBjaGFyICpkc3QsIGNvbnN0IGNoYXIgKnNyYywg
aW50IGxpbmUpCisgICAgeworICAgICAgICB0eXBlZGVmIG51bWVyaWNfbGltaXRzPFNyYz4gU3Jj
TGltaXRzOworICAgICAgICB0eXBlZGVmIG51bWVyaWNfbGltaXRzPERzdD4gRHN0TGltaXRzOwor
ICAgICAgICBzdGF0aWNfYXNzZXJ0KFNyY0xpbWl0czo6aXNfc2lnbmVkID09IERzdExpbWl0czo6
aXNfc2lnbmVkLAorICAgICAgICAgICAgICAgICAgICAgICJEZXN0aW5hdGlvbiBhbmQgc291cmNl
IHNpZ24gbXVzdCBiZSB0aGUgc2FtZSIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihE
c3QpIDwgc2l6ZW9mKFNyYykgfHwgKERzdExpbWl0czo6aXNfaW50ZWdlciAmJiBTcmNMaW1pdHM6
OmlzX2llYzU1OSksCisgICAgICAgICAgICAgICAgICAgICAgIkRlc3RpbmF0aW9uIG11c3QgYmUg
bmFycm93ZXIgdGhhbiBzb3VyY2UiKTsKKworICAgICAgICBjb25zdCBDaGVja2VkTnVtZXJpYzxE
c3Q+IGNoZWNrZWRfZHN0OworICAgICAgICBURVNUX0VYUEVDVEVEX0ZBSUxVUkUoY2hlY2tlZF9k
c3QgKyBTcmNMaW1pdHM6Om1heCgpKTsKKyAgICAgICAgVEVTVF9FWFBFQ1RFRF9WQUxVRSgxLCBj
aGVja2VkX2RzdCArIHN0YXRpY19jYXN0PFNyYz4oMSkpOworICAgICAgICBURVNUX0VYUEVDVEVE
X0ZBSUxVUkUoY2hlY2tlZF9kc3QgLSBTcmNMaW1pdHM6Om1heCgpKTsKKworICAgICAgICBURVNU
X0VYUEVDVEVEX1JBTkdFKFJBTkdFX09WRVJGTE9XLCBTcmNMaW1pdHM6Om1heCgpKTsKKyAgICAg
ICAgVEVTVF9FWFBFQ1RFRF9SQU5HRShSQU5HRV9WQUxJRCwgc3RhdGljX2Nhc3Q8U3JjPigxKSk7
CisgICAgICAgIGlmIChTcmNMaW1pdHM6OmlzX2llYzU1OSkKKyAgICAgICAgeworICAgICAgICAg
ICAgVEVTVF9FWFBFQ1RFRF9SQU5HRShSQU5HRV9VTkRFUkZMT1csIFNyY0xpbWl0czo6bWF4KCkg
KiAtMSk7CisgICAgICAgICAgICBURVNUX0VYUEVDVEVEX1JBTkdFKFJBTkdFX1ZBTElELCBzdGF0
aWNfY2FzdDxTcmM+KC0xKSk7CisgICAgICAgICAgICBURVNUX0VYUEVDVEVEX1JBTkdFKFJBTkdF
X09WRVJGTE9XLCBTcmNMaW1pdHM6OmluZmluaXR5KCkpOworICAgICAgICAgICAgVEVTVF9FWFBF
Q1RFRF9SQU5HRShSQU5HRV9VTkRFUkZMT1csIFNyY0xpbWl0czo6aW5maW5pdHkoKSAqIC0xKTsK
KyAgICAgICAgICAgIFRFU1RfRVhQRUNURURfUkFOR0UoUkFOR0VfSU5WQUxJRCwgU3JjTGltaXRz
OjpxdWlldF9OYU4oKSk7CisgICAgICAgICAgICBpZiAoRHN0TGltaXRzOjppc19pbnRlZ2VyKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChTcmNMaW1pdHM6OmRpZ2l0cyA8IERz
dExpbWl0czo6ZGlnaXRzKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
VEVTVF9FWFBFQ1RFRF9SQU5HRShSQU5HRV9PVkVSRkxPVywgc3RhdGljX2Nhc3Q8U3JjPihEc3RM
aW1pdHM6Om1heCgpKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFRFU1RfRVhQRUNURURfUkFO
R0UoUkFOR0VfVkFMSUQsIHN0YXRpY19jYXN0PFNyYz4oRHN0TGltaXRzOjptYXgoKSkpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBURVNUX0VYUEVDVEVEX1JBTkdFKFJBTkdF
X1ZBTElELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
U3JjPihHZXRNYXhDb252ZXJ0aWJsZVRvRmxvYXQ8U3JjLCBEc3Q+KCkpKTsKKyAgICAgICAgICAg
ICAgICBURVNUX0VYUEVDVEVEX1JBTkdFKFJBTkdFX1ZBTElELCBzdGF0aWNfY2FzdDxTcmM+KERz
dExpbWl0czo6bWluKCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNl
IGlmIChTcmNMaW1pdHM6OmlzX3NpZ25lZCkKKyAgICAgICAgeworICAgICAgICAgICAgVEVTVF9F
WFBFQ1RFRF9WQUxVRSgtMSwgY2hlY2tlZF9kc3QgLSBzdGF0aWNfY2FzdDxTcmM+KDEpKTsKKyAg
ICAgICAgICAgIFRFU1RfRVhQRUNURURfUkFOR0UoUkFOR0VfVU5ERVJGTE9XLCBTcmNMaW1pdHM6
Om1pbigpKTsKKyAgICAgICAgICAgIFRFU1RfRVhQRUNURURfUkFOR0UoUkFOR0VfVkFMSUQsIHN0
YXRpY19jYXN0PFNyYz4oLTEpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsK
KyAgICAgICAgICAgIFRFU1RfRVhQRUNURURfRkFJTFVSRShjaGVja2VkX2RzdCAtIHN0YXRpY19j
YXN0PFNyYz4oMSkpOworICAgICAgICAgICAgVEVTVF9FWFBFQ1RFRF9SQU5HRShSQU5HRV9WQUxJ
RCwgU3JjTGltaXRzOjptaW4oKSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgRHN0LCB0eXBlbmFtZSBTcmM+CitzdHJ1Y3QgVGVzdE51bWVyaWNDb252ZXJzaW9u
PERzdCwgU3JjLCBTSUdOX1RPX1VOU0lHTl9XSURFTl9PUl9FUVVBTD4KK3sKKyAgICBzdGF0aWMg
dm9pZCBUZXN0KGNvbnN0IGNoYXIgKmRzdCwgY29uc3QgY2hhciAqc3JjLCBpbnQgbGluZSkKKyAg
ICB7CisgICAgICAgIHR5cGVkZWYgbnVtZXJpY19saW1pdHM8U3JjPiBTcmNMaW1pdHM7CisgICAg
ICAgIHR5cGVkZWYgbnVtZXJpY19saW1pdHM8RHN0PiBEc3RMaW1pdHM7CisgICAgICAgIHN0YXRp
Y19hc3NlcnQoc2l6ZW9mKERzdCkgPj0gc2l6ZW9mKFNyYyksCisgICAgICAgICAgICAgICAgICAg
ICAgIkRlc3RpbmF0aW9uIG11c3QgYmUgZXF1YWwgb3Igd2lkZXIgdGhhbiBzb3VyY2UuIik7Cisg
ICAgICAgIHN0YXRpY19hc3NlcnQoU3JjTGltaXRzOjppc19zaWduZWQsICJTb3VyY2UgbXVzdCBi
ZSBzaWduZWQiKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydCghRHN0TGltaXRzOjppc19zaWduZWQs
ICJEZXN0aW5hdGlvbiBtdXN0IGJlIHVuc2lnbmVkIik7CisKKyAgICAgICAgY29uc3QgQ2hlY2tl
ZE51bWVyaWM8RHN0PiBjaGVja2VkX2RzdDsKKyAgICAgICAgVEVTVF9FWFBFQ1RFRF9WQUxVRShT
cmNMaW1pdHM6Om1heCgpLCBjaGVja2VkX2RzdCArIFNyY0xpbWl0czo6bWF4KCkpOworICAgICAg
ICBURVNUX0VYUEVDVEVEX0ZBSUxVUkUoY2hlY2tlZF9kc3QgKyBzdGF0aWNfY2FzdDxTcmM+KC0x
KSk7CisgICAgICAgIFRFU1RfRVhQRUNURURfRkFJTFVSRShjaGVja2VkX2RzdCArIC1TcmNMaW1p
dHM6Om1heCgpKTsKKworICAgICAgICBURVNUX0VYUEVDVEVEX1JBTkdFKFJBTkdFX1VOREVSRkxP
VywgU3JjTGltaXRzOjptaW4oKSk7CisgICAgICAgIFRFU1RfRVhQRUNURURfUkFOR0UoUkFOR0Vf
VkFMSUQsIFNyY0xpbWl0czo6bWF4KCkpOworICAgICAgICBURVNUX0VYUEVDVEVEX1JBTkdFKFJB
TkdFX1ZBTElELCBzdGF0aWNfY2FzdDxTcmM+KDEpKTsKKyAgICAgICAgVEVTVF9FWFBFQ1RFRF9S
QU5HRShSQU5HRV9VTkRFUkZMT1csIHN0YXRpY19jYXN0PFNyYz4oLTEpKTsKKyAgICB9Cit9Owor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRHN0LCB0eXBlbmFtZSBTcmM+CitzdHJ1Y3QgVGVzdE51bWVy
aWNDb252ZXJzaW9uPERzdCwgU3JjLCBTSUdOX1RPX1VOU0lHTl9OQVJST1c+Cit7CisgICAgc3Rh
dGljIHZvaWQgVGVzdChjb25zdCBjaGFyICpkc3QsIGNvbnN0IGNoYXIgKnNyYywgaW50IGxpbmUp
CisgICAgeworICAgICAgICB0eXBlZGVmIG51bWVyaWNfbGltaXRzPFNyYz4gU3JjTGltaXRzOwor
ICAgICAgICB0eXBlZGVmIG51bWVyaWNfbGltaXRzPERzdD4gRHN0TGltaXRzOworICAgICAgICBz
dGF0aWNfYXNzZXJ0KAorICAgICAgICAgICAgKERzdExpbWl0czo6aXNfaW50ZWdlciAmJiBTcmNM
aW1pdHM6OmlzX2llYzU1OSkgfHwgKHNpemVvZihEc3QpIDwgc2l6ZW9mKFNyYykpLAorICAgICAg
ICAgICAgIkRlc3RpbmF0aW9uIG11c3QgYmUgbmFycm93ZXIgdGhhbiBzb3VyY2UuIik7CisgICAg
ICAgIHN0YXRpY19hc3NlcnQoU3JjTGltaXRzOjppc19zaWduZWQsICJTb3VyY2UgbXVzdCBiZSBz
aWduZWQuIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoIURzdExpbWl0czo6aXNfc2lnbmVkLCAi
RGVzdGluYXRpb24gbXVzdCBiZSB1bnNpZ25lZC4iKTsKKworICAgICAgICBjb25zdCBDaGVja2Vk
TnVtZXJpYzxEc3Q+IGNoZWNrZWRfZHN0OworICAgICAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDEs
IGNoZWNrZWRfZHN0ICsgc3RhdGljX2Nhc3Q8U3JjPigxKSk7CisgICAgICAgIFRFU1RfRVhQRUNU
RURfRkFJTFVSRShjaGVja2VkX2RzdCArIFNyY0xpbWl0czo6bWF4KCkpOworICAgICAgICBURVNU
X0VYUEVDVEVEX0ZBSUxVUkUoY2hlY2tlZF9kc3QgKyBzdGF0aWNfY2FzdDxTcmM+KC0xKSk7Cisg
ICAgICAgIFRFU1RfRVhQRUNURURfRkFJTFVSRShjaGVja2VkX2RzdCArIC1TcmNMaW1pdHM6Om1h
eCgpKTsKKworICAgICAgICBURVNUX0VYUEVDVEVEX1JBTkdFKFJBTkdFX09WRVJGTE9XLCBTcmNM
aW1pdHM6Om1heCgpKTsKKyAgICAgICAgVEVTVF9FWFBFQ1RFRF9SQU5HRShSQU5HRV9WQUxJRCwg
c3RhdGljX2Nhc3Q8U3JjPigxKSk7CisgICAgICAgIFRFU1RfRVhQRUNURURfUkFOR0UoUkFOR0Vf
VU5ERVJGTE9XLCBzdGF0aWNfY2FzdDxTcmM+KC0xKSk7CisgICAgICAgIGlmIChTcmNMaW1pdHM6
OmlzX2llYzU1OSkKKyAgICAgICAgeworICAgICAgICAgICAgVEVTVF9FWFBFQ1RFRF9SQU5HRShS
QU5HRV9VTkRFUkZMT1csIFNyY0xpbWl0czo6bWF4KCkgKiAtMSk7CisgICAgICAgICAgICBURVNU
X0VYUEVDVEVEX1JBTkdFKFJBTkdFX09WRVJGTE9XLCBTcmNMaW1pdHM6OmluZmluaXR5KCkpOwor
ICAgICAgICAgICAgVEVTVF9FWFBFQ1RFRF9SQU5HRShSQU5HRV9VTkRFUkZMT1csIFNyY0xpbWl0
czo6aW5maW5pdHkoKSAqIC0xKTsKKyAgICAgICAgICAgIFRFU1RfRVhQRUNURURfUkFOR0UoUkFO
R0VfSU5WQUxJRCwgU3JjTGltaXRzOjpxdWlldF9OYU4oKSk7CisgICAgICAgICAgICBpZiAoRHN0
TGltaXRzOjppc19pbnRlZ2VyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChT
cmNMaW1pdHM6OmRpZ2l0cyA8IERzdExpbWl0czo6ZGlnaXRzKQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgVEVTVF9FWFBFQ1RFRF9SQU5HRShSQU5HRV9PVkVSRkxPVywg
c3RhdGljX2Nhc3Q8U3JjPihEc3RMaW1pdHM6Om1heCgpKSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIFRFU1RfRVhQRUNURURfUkFOR0UoUkFOR0VfVkFMSUQsIHN0YXRpY19jYXN0PFNyYz4oRHN0
TGltaXRzOjptYXgoKSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBURVNU
X0VYUEVDVEVEX1JBTkdFKFJBTkdFX1ZBTElELAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8U3JjPihHZXRNYXhDb252ZXJ0aWJsZVRvRmxvYXQ8U3JjLCBE
c3Q+KCkpKTsKKyAgICAgICAgICAgICAgICBURVNUX0VYUEVDVEVEX1JBTkdFKFJBTkdFX1ZBTElE
LCBzdGF0aWNfY2FzdDxTcmM+KERzdExpbWl0czo6bWluKCkpKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIFRFU1RfRVhQRUNU
RURfUkFOR0UoUkFOR0VfVU5ERVJGTE9XLCBTcmNMaW1pdHM6Om1pbigpKTsKKyAgICAgICAgfQor
ICAgIH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBEc3QsIHR5cGVuYW1lIFNyYz4KK3N0cnVj
dCBUZXN0TnVtZXJpY0NvbnZlcnNpb248RHN0LCBTcmMsIFVOU0lHTl9UT19TSUdOX05BUlJPV19P
Ul9FUVVBTD4KK3sKKyAgICBzdGF0aWMgdm9pZCBUZXN0KGNvbnN0IGNoYXIgKmRzdCwgY29uc3Qg
Y2hhciAqc3JjLCBpbnQgbGluZSkKKyAgICB7CisgICAgICAgIHR5cGVkZWYgbnVtZXJpY19saW1p
dHM8U3JjPiBTcmNMaW1pdHM7CisgICAgICAgIHR5cGVkZWYgbnVtZXJpY19saW1pdHM8RHN0PiBE
c3RMaW1pdHM7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKERzdCkgPD0gc2l6ZW9mKFNy
YyksCisgICAgICAgICAgICAgICAgICAgICAgIkRlc3RpbmF0aW9uIG11c3QgYmUgbmFycm93ZXIg
b3IgZXF1YWwgdG8gc291cmNlLiIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KCFTcmNMaW1pdHM6
OmlzX3NpZ25lZCwgIlNvdXJjZSBtdXN0IGJlIHVuc2lnbmVkLiIpOworICAgICAgICBzdGF0aWNf
YXNzZXJ0KERzdExpbWl0czo6aXNfc2lnbmVkLCAiRGVzdGluYXRpb24gbXVzdCBiZSBzaWduZWQu
Iik7CisKKyAgICAgICAgY29uc3QgQ2hlY2tlZE51bWVyaWM8RHN0PiBjaGVja2VkX2RzdDsKKyAg
ICAgICAgVEVTVF9FWFBFQ1RFRF9WQUxVRSgxLCBjaGVja2VkX2RzdCArIHN0YXRpY19jYXN0PFNy
Yz4oMSkpOworICAgICAgICBURVNUX0VYUEVDVEVEX0ZBSUxVUkUoY2hlY2tlZF9kc3QgKyBTcmNM
aW1pdHM6Om1heCgpKTsKKyAgICAgICAgVEVTVF9FWFBFQ1RFRF9WQUxVRShTcmNMaW1pdHM6Om1p
bigpLCBjaGVja2VkX2RzdCArIFNyY0xpbWl0czo6bWluKCkpOworCisgICAgICAgIFRFU1RfRVhQ
RUNURURfUkFOR0UoUkFOR0VfVkFMSUQsIFNyY0xpbWl0czo6bWluKCkpOworICAgICAgICBURVNU
X0VYUEVDVEVEX1JBTkdFKFJBTkdFX09WRVJGTE9XLCBTcmNMaW1pdHM6Om1heCgpKTsKKyAgICAg
ICAgVEVTVF9FWFBFQ1RFRF9SQU5HRShSQU5HRV9WQUxJRCwgc3RhdGljX2Nhc3Q8U3JjPigxKSk7
CisgICAgfQorfTsKKworLy8gSGVscGVyIG1hY3JvIHRvIHdyYXAgZGlzcGxheWluZyB0aGUgY29u
dmVyc2lvbiB0eXBlcyBhbmQgbGluZSBudW1iZXJzCisjZGVmaW5lIFRFU1RfTlVNRVJJQ19DT05W
RVJTSU9OKGQsIHMsIHQpIFRlc3ROdW1lcmljQ29udmVyc2lvbjxkLCBzLCB0Pjo6VGVzdCgjZCwg
I3MsIF9fTElORV9fKQorCitURVNUKFNhZmVOdW1lcmljcywgSW50TWluT3BlcmF0aW9ucykKK3sK
KyAgICBURVNUX05VTUVSSUNfQ09OVkVSU0lPTihpbnQ4X3QsIGludDhfdCwgU0lHTl9QUkVTRVJW
SU5HX1ZBTFVFX1BSRVNFUlZJTkcpOworICAgIFRFU1RfTlVNRVJJQ19DT05WRVJTSU9OKHVpbnQ4
X3QsIHVpbnQ4X3QsIFNJR05fUFJFU0VSVklOR19WQUxVRV9QUkVTRVJWSU5HKTsKKworICAgIFRF
U1RfTlVNRVJJQ19DT05WRVJTSU9OKGludDhfdCwgaW50LCBTSUdOX1BSRVNFUlZJTkdfTkFSUk9X
KTsKKyAgICBURVNUX05VTUVSSUNfQ09OVkVSU0lPTih1aW50OF90LCB1bnNpZ25lZCBpbnQsIFNJ
R05fUFJFU0VSVklOR19OQVJST1cpOworICAgIFRFU1RfTlVNRVJJQ19DT05WRVJTSU9OKGludDhf
dCwgZmxvYXQsIFNJR05fUFJFU0VSVklOR19OQVJST1cpOworCisgICAgVEVTVF9OVU1FUklDX0NP
TlZFUlNJT04odWludDhfdCwgaW50OF90LCBTSUdOX1RPX1VOU0lHTl9XSURFTl9PUl9FUVVBTCk7
CisKKyAgICBURVNUX05VTUVSSUNfQ09OVkVSU0lPTih1aW50OF90LCBpbnQsIFNJR05fVE9fVU5T
SUdOX05BUlJPVyk7CisgICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJT04odWludDhfdCwgaW50bWF4
X3QsIFNJR05fVE9fVU5TSUdOX05BUlJPVyk7CisgICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJT04o
dWludDhfdCwgZmxvYXQsIFNJR05fVE9fVU5TSUdOX05BUlJPVyk7CisKKyAgICBURVNUX05VTUVS
SUNfQ09OVkVSU0lPTihpbnQ4X3QsIHVuc2lnbmVkIGludCwgVU5TSUdOX1RPX1NJR05fTkFSUk9X
X09SX0VRVUFMKTsKKyAgICBURVNUX05VTUVSSUNfQ09OVkVSU0lPTihpbnQ4X3QsIHVpbnRtYXhf
dCwgVU5TSUdOX1RPX1NJR05fTkFSUk9XX09SX0VRVUFMKTsKK30KKworVEVTVChTYWZlTnVtZXJp
Y3MsIEludE9wZXJhdGlvbnMpCit7CisgICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJT04oaW50LCBp
bnQsIFNJR05fUFJFU0VSVklOR19WQUxVRV9QUkVTRVJWSU5HKTsKKyAgICBURVNUX05VTUVSSUNf
Q09OVkVSU0lPTih1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCwgU0lHTl9QUkVTRVJWSU5HX1ZB
TFVFX1BSRVNFUlZJTkcpOworICAgIFRFU1RfTlVNRVJJQ19DT05WRVJTSU9OKGludCwgaW50OF90
LCBTSUdOX1BSRVNFUlZJTkdfVkFMVUVfUFJFU0VSVklORyk7CisgICAgVEVTVF9OVU1FUklDX0NP
TlZFUlNJT04odW5zaWduZWQgaW50LCB1aW50OF90LCBTSUdOX1BSRVNFUlZJTkdfVkFMVUVfUFJF
U0VSVklORyk7CisgICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJT04oaW50LCB1aW50OF90LCBTSUdO
X1BSRVNFUlZJTkdfVkFMVUVfUFJFU0VSVklORyk7CisKKyAgICBURVNUX05VTUVSSUNfQ09OVkVS
U0lPTihpbnQsIGludG1heF90LCBTSUdOX1BSRVNFUlZJTkdfTkFSUk9XKTsKKyAgICBURVNUX05V
TUVSSUNfQ09OVkVSU0lPTih1bnNpZ25lZCBpbnQsIHVpbnRtYXhfdCwgU0lHTl9QUkVTRVJWSU5H
X05BUlJPVyk7CisgICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJT04oaW50LCBmbG9hdCwgU0lHTl9Q
UkVTRVJWSU5HX05BUlJPVyk7CisgICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJT04oaW50LCBkb3Vi
bGUsIFNJR05fUFJFU0VSVklOR19OQVJST1cpOworCisgICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJ
T04odW5zaWduZWQgaW50LCBpbnQsIFNJR05fVE9fVU5TSUdOX1dJREVOX09SX0VRVUFMKTsKKyAg
ICBURVNUX05VTUVSSUNfQ09OVkVSU0lPTih1bnNpZ25lZCBpbnQsIGludDhfdCwgU0lHTl9UT19V
TlNJR05fV0lERU5fT1JfRVFVQUwpOworCisgICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJT04odW5z
aWduZWQgaW50LCBpbnRtYXhfdCwgU0lHTl9UT19VTlNJR05fTkFSUk9XKTsKKyAgICBURVNUX05V
TUVSSUNfQ09OVkVSU0lPTih1bnNpZ25lZCBpbnQsIGZsb2F0LCBTSUdOX1RPX1VOU0lHTl9OQVJS
T1cpOworICAgIFRFU1RfTlVNRVJJQ19DT05WRVJTSU9OKHVuc2lnbmVkIGludCwgZG91YmxlLCBT
SUdOX1RPX1VOU0lHTl9OQVJST1cpOworCisgICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJT04oaW50
LCB1bnNpZ25lZCBpbnQsIFVOU0lHTl9UT19TSUdOX05BUlJPV19PUl9FUVVBTCk7CisgICAgVEVT
VF9OVU1FUklDX0NPTlZFUlNJT04oaW50LCB1aW50bWF4X3QsIFVOU0lHTl9UT19TSUdOX05BUlJP
V19PUl9FUVVBTCk7Cit9CisKK1RFU1QoU2FmZU51bWVyaWNzLCBJbnRNYXhPcGVyYXRpb25zKQor
eworICAgIFRFU1RfTlVNRVJJQ19DT05WRVJTSU9OKGludG1heF90LCBpbnRtYXhfdCwgU0lHTl9Q
UkVTRVJWSU5HX1ZBTFVFX1BSRVNFUlZJTkcpOworICAgIFRFU1RfTlVNRVJJQ19DT05WRVJTSU9O
KHVpbnRtYXhfdCwgdWludG1heF90LCBTSUdOX1BSRVNFUlZJTkdfVkFMVUVfUFJFU0VSVklORyk7
CisgICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJT04oaW50bWF4X3QsIGludCwgU0lHTl9QUkVTRVJW
SU5HX1ZBTFVFX1BSRVNFUlZJTkcpOworICAgIFRFU1RfTlVNRVJJQ19DT05WRVJTSU9OKHVpbnRt
YXhfdCwgdW5zaWduZWQgaW50LCBTSUdOX1BSRVNFUlZJTkdfVkFMVUVfUFJFU0VSVklORyk7Cisg
ICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJT04oaW50bWF4X3QsIHVuc2lnbmVkIGludCwgU0lHTl9Q
UkVTRVJWSU5HX1ZBTFVFX1BSRVNFUlZJTkcpOworICAgIFRFU1RfTlVNRVJJQ19DT05WRVJTSU9O
KGludG1heF90LCB1aW50OF90LCBTSUdOX1BSRVNFUlZJTkdfVkFMVUVfUFJFU0VSVklORyk7CisK
KyAgICBURVNUX05VTUVSSUNfQ09OVkVSU0lPTihpbnRtYXhfdCwgZmxvYXQsIFNJR05fUFJFU0VS
VklOR19OQVJST1cpOworICAgIFRFU1RfTlVNRVJJQ19DT05WRVJTSU9OKGludG1heF90LCBkb3Vi
bGUsIFNJR05fUFJFU0VSVklOR19OQVJST1cpOworCisgICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJ
T04odWludG1heF90LCBpbnQsIFNJR05fVE9fVU5TSUdOX1dJREVOX09SX0VRVUFMKTsKKyAgICBU
RVNUX05VTUVSSUNfQ09OVkVSU0lPTih1aW50bWF4X3QsIGludDhfdCwgU0lHTl9UT19VTlNJR05f
V0lERU5fT1JfRVFVQUwpOworCisgICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJT04odWludG1heF90
LCBmbG9hdCwgU0lHTl9UT19VTlNJR05fTkFSUk9XKTsKKyAgICBURVNUX05VTUVSSUNfQ09OVkVS
U0lPTih1aW50bWF4X3QsIGRvdWJsZSwgU0lHTl9UT19VTlNJR05fTkFSUk9XKTsKKworICAgIFRF
U1RfTlVNRVJJQ19DT05WRVJTSU9OKGludG1heF90LCB1aW50bWF4X3QsIFVOU0lHTl9UT19TSUdO
X05BUlJPV19PUl9FUVVBTCk7Cit9CisKK1RFU1QoU2FmZU51bWVyaWNzLCBGbG9hdE9wZXJhdGlv
bnMpCit7CisgICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJT04oZmxvYXQsIGludG1heF90LCBTSUdO
X1BSRVNFUlZJTkdfVkFMVUVfUFJFU0VSVklORyk7CisgICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJ
T04oZmxvYXQsIHVpbnRtYXhfdCwgU0lHTl9QUkVTRVJWSU5HX1ZBTFVFX1BSRVNFUlZJTkcpOwor
ICAgIFRFU1RfTlVNRVJJQ19DT05WRVJTSU9OKGZsb2F0LCBpbnQsIFNJR05fUFJFU0VSVklOR19W
QUxVRV9QUkVTRVJWSU5HKTsKKyAgICBURVNUX05VTUVSSUNfQ09OVkVSU0lPTihmbG9hdCwgdW5z
aWduZWQgaW50LCBTSUdOX1BSRVNFUlZJTkdfVkFMVUVfUFJFU0VSVklORyk7CisKKyAgICBURVNU
X05VTUVSSUNfQ09OVkVSU0lPTihmbG9hdCwgZG91YmxlLCBTSUdOX1BSRVNFUlZJTkdfTkFSUk9X
KTsKK30KKworVEVTVChTYWZlTnVtZXJpY3MsIERvdWJsZU9wZXJhdGlvbnMpCit7CisgICAgVEVT
VF9OVU1FUklDX0NPTlZFUlNJT04oZG91YmxlLCBpbnRtYXhfdCwgU0lHTl9QUkVTRVJWSU5HX1ZB
TFVFX1BSRVNFUlZJTkcpOworICAgIFRFU1RfTlVNRVJJQ19DT05WRVJTSU9OKGRvdWJsZSwgdWlu
dG1heF90LCBTSUdOX1BSRVNFUlZJTkdfVkFMVUVfUFJFU0VSVklORyk7CisgICAgVEVTVF9OVU1F
UklDX0NPTlZFUlNJT04oZG91YmxlLCBpbnQsIFNJR05fUFJFU0VSVklOR19WQUxVRV9QUkVTRVJW
SU5HKTsKKyAgICBURVNUX05VTUVSSUNfQ09OVkVSU0lPTihkb3VibGUsIHVuc2lnbmVkIGludCwg
U0lHTl9QUkVTRVJWSU5HX1ZBTFVFX1BSRVNFUlZJTkcpOworfQorCitURVNUKFNhZmVOdW1lcmlj
cywgU2l6ZVRPcGVyYXRpb25zKQoreworICAgIFRFU1RfTlVNRVJJQ19DT05WRVJTSU9OKHNpemVf
dCwgaW50LCBTSUdOX1RPX1VOU0lHTl9XSURFTl9PUl9FUVVBTCk7CisgICAgVEVTVF9OVU1FUklD
X0NPTlZFUlNJT04oaW50LCBzaXplX3QsIFVOU0lHTl9UT19TSUdOX05BUlJPV19PUl9FUVVBTCk7
Cit9CisKK1RFU1QoU2FmZU51bWVyaWNzLCBDYXN0VGVzdHMpCit7CisvLyBNU1ZDIGNhdGNoZXMg
YW5kIHdhcm5zIHRoYXQgd2UncmUgZm9yY2luZyBzYXR1cmF0aW9uIGluIHRoZXNlIHRlc3RzLgor
Ly8gU2luY2UgdGhhdCdzIGludGVudGlvbmFsLCB3ZSBuZWVkIHRvIHNodXQgdGhpcyB3YXJuaW5n
IG9mZi4KKyNpZiBkZWZpbmVkKENPTVBJTEVSX01TVkMpCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJs
ZSA6IDQ3NTYpCisjZW5kaWYKKworICAgIGludCBzbWFsbF9wb3NpdGl2ZSAgICAgID0gMTsKKyAg
ICBpbnQgc21hbGxfbmVnYXRpdmUgICAgICA9IC0xOworICAgIGRvdWJsZSBkb3VibGVfc21hbGwg
ICAgID0gMS4wOworICAgIGRvdWJsZSBkb3VibGVfbGFyZ2UgICAgID0gbnVtZXJpY19saW1pdHM8
ZG91YmxlPjo6bWF4KCk7CisgICAgZG91YmxlIGRvdWJsZV9pbmZpbml0eSAgPSBudW1lcmljX2xp
bWl0czxmbG9hdD46OmluZmluaXR5KCk7CisgICAgZG91YmxlIGRvdWJsZV9sYXJnZV9pbnQgPSBu
dW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKTsKKyAgICBkb3VibGUgZG91YmxlX3NtYWxsX2ludCA9
IG51bWVyaWNfbGltaXRzPGludD46Om1pbigpOworCisgICAgLy8gSnVzdCB0ZXN0IHRoYXQgdGhl
IGNhc3RzIGNvbXBpbGUsIHNpbmNlIHRoZSBvdGhlciB0ZXN0cyBjb3ZlciBsb2dpYy4KKyAgICBF
WFBFQ1RfRVEoMCwgY2hlY2tlZF9jYXN0PGludD4oc3RhdGljX2Nhc3Q8c2l6ZV90PigwKSkpOwor
ICAgIEVYUEVDVF9FUSgwLCBzdHJpY3RfY2FzdDxpbnQ+KHN0YXRpY19jYXN0PGNoYXI+KDApKSk7
CisgICAgRVhQRUNUX0VRKDAsIHN0cmljdF9jYXN0PGludD4oc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcj4oMCkpKTsKKyAgICBFWFBFQ1RfRVEoMFUsIHN0cmljdF9jYXN0PHVuc2lnbmVkPihzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigwKSkpOworICAgIEVYUEVDVF9FUSgxVUxMLCBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4oU3RyaWN0TnVtZXJpYzxzaXplX3Q+KDFVKSkpOworICAgIEVYUEVDVF9F
USgxVUxMLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oU2l6ZVQoMVUpKSk7CisgICAgRVhQRUNUX0VR
KDFVLCBzdGF0aWNfY2FzdDxzaXplX3Q+KFN0cmljdE51bWVyaWM8dW5zaWduZWQ+KDFVKSkpOwor
CisgICAgRVhQRUNUX1RSVUUoQ2hlY2tlZE51bWVyaWM8dWludDY0X3Q+KFN0cmljdE51bWVyaWM8
dW5zaWduZWQ+KDFVKSkuSXNWYWxpZCgpKTsKKyAgICBFWFBFQ1RfVFJVRShDaGVja2VkTnVtZXJp
YzxpbnQ+KFN0cmljdE51bWVyaWM8dW5zaWduZWQ+KDFVKSkuSXNWYWxpZCgpKTsKKyAgICBFWFBF
Q1RfRkFMU0UoQ2hlY2tlZE51bWVyaWM8dW5zaWduZWQ+KFN0cmljdE51bWVyaWM8aW50PigtMSkp
LklzVmFsaWQoKSk7CisKKyAgICBFWFBFQ1RfVFJVRShJc1ZhbHVlTmVnYXRpdmUoLTEpKTsKKyAg
ICBFWFBFQ1RfVFJVRShJc1ZhbHVlTmVnYXRpdmUobnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCkp
KTsKKyAgICBFWFBFQ1RfRkFMU0UoSXNWYWx1ZU5lZ2F0aXZlKG51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWluKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShJc1ZhbHVlTmVnYXRpdmUoLW51bWVyaWNf
bGltaXRzPGRvdWJsZT46Om1heCgpKSk7CisgICAgRVhQRUNUX0ZBTFNFKElzVmFsdWVOZWdhdGl2
ZSgwKSk7CisgICAgRVhQRUNUX0ZBTFNFKElzVmFsdWVOZWdhdGl2ZSgxKSk7CisgICAgRVhQRUNU
X0ZBTFNFKElzVmFsdWVOZWdhdGl2ZSgwdSkpOworICAgIEVYUEVDVF9GQUxTRShJc1ZhbHVlTmVn
YXRpdmUoMXUpKTsKKyAgICBFWFBFQ1RfRkFMU0UoSXNWYWx1ZU5lZ2F0aXZlKG51bWVyaWNfbGlt
aXRzPGludD46Om1heCgpKSk7CisgICAgRVhQRUNUX0ZBTFNFKElzVmFsdWVOZWdhdGl2ZShudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSk7CisgICAgRVhQRUNUX0ZBTFNFKElzVmFsdWVO
ZWdhdGl2ZShudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSkpOworCisgICAgLy8gVGhlc2Ug
Y2FzdHMgYW5kIGNvZXJjaW9ucyB3aWxsIGZhaWwgdG8gY29tcGlsZToKKyAgICAvLyBFWFBFQ1Rf
RVEoMCwgc3RyaWN0X2Nhc3Q8aW50PihzdGF0aWNfY2FzdDxzaXplX3Q+KDApKSk7CisgICAgLy8g
RVhQRUNUX0VRKDAsIHN0cmljdF9jYXN0PHNpemVfdD4oc3RhdGljX2Nhc3Q8aW50PigwKSkpOwor
ICAgIC8vIEVYUEVDVF9FUSgxVUxMLCBTdHJpY3ROdW1lcmljPHNpemVfdD4oMSkpOworICAgIC8v
IEVYUEVDVF9FUSgxLCBTdHJpY3ROdW1lcmljPHNpemVfdD4oMVUpKTsKKworICAgIC8vIFRlc3Qg
dmFyaW91cyBzYXR1cmF0aW9uIGNvcm5lciBjYXNlcy4KKyAgICBFWFBFQ1RfRVEoc2F0dXJhdGVk
X2Nhc3Q8aW50PihzbWFsbF9uZWdhdGl2ZSksIHN0YXRpY19jYXN0PGludD4oc21hbGxfbmVnYXRp
dmUpKTsKKyAgICBFWFBFQ1RfRVEoc2F0dXJhdGVkX2Nhc3Q8aW50PihzbWFsbF9wb3NpdGl2ZSks
IHN0YXRpY19jYXN0PGludD4oc21hbGxfcG9zaXRpdmUpKTsKKyAgICBFWFBFQ1RfRVEoc2F0dXJh
dGVkX2Nhc3Q8dW5zaWduZWQ+KHNtYWxsX25lZ2F0aXZlKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KDApKTsKKyAgICBFWFBFQ1RfRVEoc2F0dXJhdGVkX2Nhc3Q8aW50Pihkb3VibGVfc21hbGwpLCBz
dGF0aWNfY2FzdDxpbnQ+KGRvdWJsZV9zbWFsbCkpOworICAgIEVYUEVDVF9FUShzYXR1cmF0ZWRf
Y2FzdDxpbnQ+KGRvdWJsZV9sYXJnZSksIG51bWVyaWNfbGltaXRzPGludD46Om1heCgpKTsKKyAg
ICBFWFBFQ1RfRVEoc2F0dXJhdGVkX2Nhc3Q8ZmxvYXQ+KGRvdWJsZV9sYXJnZSksIGRvdWJsZV9p
bmZpbml0eSk7CisgICAgRVhQRUNUX0VRKHNhdHVyYXRlZF9jYXN0PGZsb2F0PigtZG91YmxlX2xh
cmdlKSwgLWRvdWJsZV9pbmZpbml0eSk7CisgICAgRVhQRUNUX0VRKG51bWVyaWNfbGltaXRzPGlu
dD46Om1pbigpLCBzYXR1cmF0ZWRfY2FzdDxpbnQ+KGRvdWJsZV9zbWFsbF9pbnQpKTsKKyAgICBF
WFBFQ1RfRVEobnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCksIHNhdHVyYXRlZF9jYXN0PGludD4o
ZG91YmxlX2xhcmdlX2ludCkpOworCisgICAgZmxvYXQgbm90X2FfbnVtYmVyID0KKyAgICAgICAg
c3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgLSBzdGQ6Om51bWVyaWNfbGlt
aXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsKKyAgICBFWFBFQ1RfVFJVRShzdGQ6OmlzbmFuKG5vdF9h
X251bWJlcikpOworICAgIEVYUEVDVF9FUSgwLCBzYXR1cmF0ZWRfY2FzdDxpbnQ+KG5vdF9hX251
bWJlcikpOworfQorCisjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKworVEVTVChTYWZlTnVtZXJp
Y3MsIFNhdHVyYXRlZENhc3RDaGVja3MpCit7CisgICAgZmxvYXQgbm90X2FfbnVtYmVyID0KKyAg
ICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgLSBzdGQ6Om51bWVy
aWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsKKyAgICBFWFBFQ1RfVFJVRShzdGQ6OmlzbmFu
KG5vdF9hX251bWJlcikpOworICAgIEVYUEVDVF9ERUFUSCgoc2F0dXJhdGVkX2Nhc3Q8aW50LCBi
YXNlOjpTYXR1cmF0ZWRDYXN0TmFOQmVoYXZpb3JDaGVjaz4obm90X2FfbnVtYmVyKSksICIiKTsK
K30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAorCitURVNUKFNhZmVOdW1lcmlj
cywgSXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlwZSkKK3sKKyAgICBFWFBFQ1RfVFJVRShJc1Zh
bHVlSW5SYW5nZUZvck51bWVyaWNUeXBlPHVpbnQzMl90PigwKSk7CisgICAgRVhQRUNUX1RSVUUo
SXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlwZTx1aW50MzJfdD4oMSkpOworICAgIEVYUEVDVF9U
UlVFKElzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8dWludDMyX3Q+KDIpKTsKKyAgICBFWFBF
Q1RfRkFMU0UoSXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlwZTx1aW50MzJfdD4oLTEpKTsKKyAg
ICBFWFBFQ1RfVFJVRShJc1ZhbHVlSW5SYW5nZUZvck51bWVyaWNUeXBlPHVpbnQzMl90PigweGZm
ZmZmZmZmdSkpOworICAgIEVYUEVDVF9UUlVFKElzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8
dWludDMyX3Q+KFVJTlQ2NF9DKDB4ZmZmZmZmZmYpKSk7CisgICAgRVhQRUNUX0ZBTFNFKElzVmFs
dWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8dWludDMyX3Q+KFVJTlQ2NF9DKDB4MTAwMDAwMDAwKSkp
OworICAgIEVYUEVDVF9GQUxTRShJc1ZhbHVlSW5SYW5nZUZvck51bWVyaWNUeXBlPHVpbnQzMl90
PihVSU5UNjRfQygweDEwMDAwMDAwMSkpKTsKKyAgICBFWFBFQ1RfRkFMU0UoSXNWYWx1ZUluUmFu
Z2VGb3JOdW1lcmljVHlwZTx1aW50MzJfdD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6
bWluKCkpKTsKKyAgICBFWFBFQ1RfRkFMU0UoSXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlwZTx1
aW50MzJfdD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkpKTsKKworICAgIEVY
UEVDVF9UUlVFKElzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8aW50MzJfdD4oMCkpOworICAg
IEVYUEVDVF9UUlVFKElzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8aW50MzJfdD4oMSkpOwor
ICAgIEVYUEVDVF9UUlVFKElzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8aW50MzJfdD4oMikp
OworICAgIEVYUEVDVF9UUlVFKElzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8aW50MzJfdD4o
LTEpKTsKKyAgICBFWFBFQ1RfVFJVRShJc1ZhbHVlSW5SYW5nZUZvck51bWVyaWNUeXBlPGludDMy
X3Q+KDB4N2ZmZmZmZmYpKTsKKyAgICBFWFBFQ1RfVFJVRShJc1ZhbHVlSW5SYW5nZUZvck51bWVy
aWNUeXBlPGludDMyX3Q+KDB4N2ZmZmZmZmZ1KSk7CisgICAgRVhQRUNUX0ZBTFNFKElzVmFsdWVJ
blJhbmdlRm9yTnVtZXJpY1R5cGU8aW50MzJfdD4oMHg4MDAwMDAwMHUpKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoSXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlwZTxpbnQzMl90PigweGZmZmZmZmZmdSkp
OworICAgIEVYUEVDVF9GQUxTRShJc1ZhbHVlSW5SYW5nZUZvck51bWVyaWNUeXBlPGludDMyX3Q+
KElOVDY0X0MoMHg4MDAwMDAwMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0UoSXNWYWx1ZUluUmFuZ2VG
b3JOdW1lcmljVHlwZTxpbnQzMl90PihJTlQ2NF9DKDB4ZmZmZmZmZmYpKSk7CisgICAgRVhQRUNU
X0ZBTFNFKElzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8aW50MzJfdD4oSU5UNjRfQygweDEw
MDAwMDAwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShJc1ZhbHVlSW5SYW5nZUZvck51bWVyaWNUeXBl
PGludDMyX3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKSk7CisgICAgRVhQ
RUNUX1RSVUUoSXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlwZTxpbnQzMl90PigKKyAgICAgICAg
c3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkp
KSk7CisgICAgRVhQRUNUX0ZBTFNFKElzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8aW50MzJf
dD4oCisgICAgICAgIHN0YXRpY19jYXN0PGludDY0X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
MzJfdD46Om1pbigpKSAtIDEpKTsKKyAgICBFWFBFQ1RfRkFMU0UoSXNWYWx1ZUluUmFuZ2VGb3JO
dW1lcmljVHlwZTxpbnQzMl90PihzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkp
OworCisgICAgRVhQRUNUX1RSVUUoSXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlwZTx1aW50NjRf
dD4oMCkpOworICAgIEVYUEVDVF9UUlVFKElzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8dWlu
dDY0X3Q+KDEpKTsKKyAgICBFWFBFQ1RfVFJVRShJc1ZhbHVlSW5SYW5nZUZvck51bWVyaWNUeXBl
PHVpbnQ2NF90PigyKSk7CisgICAgRVhQRUNUX0ZBTFNFKElzVmFsdWVJblJhbmdlRm9yTnVtZXJp
Y1R5cGU8dWludDY0X3Q+KC0xKSk7CisgICAgRVhQRUNUX1RSVUUoSXNWYWx1ZUluUmFuZ2VGb3JO
dW1lcmljVHlwZTx1aW50NjRfdD4oMHhmZmZmZmZmZnUpKTsKKyAgICBFWFBFQ1RfVFJVRShJc1Zh
bHVlSW5SYW5nZUZvck51bWVyaWNUeXBlPHVpbnQ2NF90PihVSU5UNjRfQygweGZmZmZmZmZmKSkp
OworICAgIEVYUEVDVF9UUlVFKElzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8dWludDY0X3Q+
KFVJTlQ2NF9DKDB4MTAwMDAwMDAwKSkpOworICAgIEVYUEVDVF9UUlVFKElzVmFsdWVJblJhbmdl
Rm9yTnVtZXJpY1R5cGU8dWludDY0X3Q+KFVJTlQ2NF9DKDB4MTAwMDAwMDAxKSkpOworICAgIEVY
UEVDVF9GQUxTRShJc1ZhbHVlSW5SYW5nZUZvck51bWVyaWNUeXBlPHVpbnQ2NF90PihzdGQ6Om51
bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSkpOworICAgIEVYUEVDVF9GQUxTRShJc1ZhbHVl
SW5SYW5nZUZvck51bWVyaWNUeXBlPHVpbnQ2NF90PihJTlQ2NF9DKC0xKSkpOworICAgIEVYUEVD
VF9GQUxTRShJc1ZhbHVlSW5SYW5nZUZvck51bWVyaWNUeXBlPHVpbnQ2NF90PihzdGQ6Om51bWVy
aWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkpOworCisgICAgRVhQRUNUX1RSVUUoSXNWYWx1ZUlu
UmFuZ2VGb3JOdW1lcmljVHlwZTxpbnQ2NF90PigwKSk7CisgICAgRVhQRUNUX1RSVUUoSXNWYWx1
ZUluUmFuZ2VGb3JOdW1lcmljVHlwZTxpbnQ2NF90PigxKSk7CisgICAgRVhQRUNUX1RSVUUoSXNW
YWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlwZTxpbnQ2NF90PigyKSk7CisgICAgRVhQRUNUX1RSVUUo
SXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlwZTxpbnQ2NF90PigtMSkpOworICAgIEVYUEVDVF9U
UlVFKElzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8aW50NjRfdD4oMHg3ZmZmZmZmZikpOwor
ICAgIEVYUEVDVF9UUlVFKElzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8aW50NjRfdD4oMHg3
ZmZmZmZmZnUpKTsKKyAgICBFWFBFQ1RfVFJVRShJc1ZhbHVlSW5SYW5nZUZvck51bWVyaWNUeXBl
PGludDY0X3Q+KDB4ODAwMDAwMDB1KSk7CisgICAgRVhQRUNUX1RSVUUoSXNWYWx1ZUluUmFuZ2VG
b3JOdW1lcmljVHlwZTxpbnQ2NF90PigweGZmZmZmZmZmdSkpOworICAgIEVYUEVDVF9UUlVFKElz
VmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8aW50NjRfdD4oSU5UNjRfQygweDgwMDAwMDAwKSkp
OworICAgIEVYUEVDVF9UUlVFKElzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8aW50NjRfdD4o
SU5UNjRfQygweGZmZmZmZmZmKSkpOworICAgIEVYUEVDVF9UUlVFKElzVmFsdWVJblJhbmdlRm9y
TnVtZXJpY1R5cGU8aW50NjRfdD4oSU5UNjRfQygweDEwMDAwMDAwMCkpKTsKKyAgICBFWFBFQ1Rf
VFJVRShJc1ZhbHVlSW5SYW5nZUZvck51bWVyaWNUeXBlPGludDY0X3Q+KElOVDY0X0MoMHg3ZmZm
ZmZmZmZmZmZmZmZmKSkpOworICAgIEVYUEVDVF9UUlVFKElzVmFsdWVJblJhbmdlRm9yTnVtZXJp
Y1R5cGU8aW50NjRfdD4oVUlOVDY0X0MoMHg3ZmZmZmZmZmZmZmZmZmZmKSkpOworICAgIEVYUEVD
VF9GQUxTRShJc1ZhbHVlSW5SYW5nZUZvck51bWVyaWNUeXBlPGludDY0X3Q+KFVJTlQ2NF9DKDB4
ODAwMDAwMDAwMDAwMDAwMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0UoSXNWYWx1ZUluUmFuZ2VGb3JO
dW1lcmljVHlwZTxpbnQ2NF90PihVSU5UNjRfQygweGZmZmZmZmZmZmZmZmZmZmYpKSk7CisgICAg
RVhQRUNUX1RSVUUoSXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlwZTxpbnQ2NF90PihzdGQ6Om51
bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSkpOworICAgIEVYUEVDVF9UUlVFKElzVmFsdWVJ
blJhbmdlRm9yTnVtZXJpY1R5cGU8aW50NjRfdD4oCisgICAgICAgIHN0YXRpY19jYXN0PGludDY0
X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKSkpOworICAgIEVYUEVDVF9U
UlVFKElzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8aW50NjRfdD4oc3RkOjpudW1lcmljX2xp
bWl0czxpbnQ2NF90Pjo6bWluKCkpKTsKK30KKworVEVTVChTYWZlTnVtZXJpY3MsIENvbXBvdW5k
TnVtZXJpY09wZXJhdGlvbnMpCit7CisgICAgQ2hlY2tlZE51bWVyaWM8aW50PiBhID0gMTsKKyAg
ICBDaGVja2VkTnVtZXJpYzxpbnQ+IGIgPSAyOworICAgIENoZWNrZWROdW1lcmljPGludD4gYyA9
IDM7CisgICAgQ2hlY2tlZE51bWVyaWM8aW50PiBkID0gNDsKKyAgICBhICs9IGI7CisgICAgRVhQ
RUNUX0VRKDMsIGEuVmFsdWVPckRpZSgpKTsKKyAgICBhIC09IGM7CisgICAgRVhQRUNUX0VRKDAs
IGEuVmFsdWVPckRpZSgpKTsKKyAgICBkIC89IGI7CisgICAgRVhQRUNUX0VRKDIsIGQuVmFsdWVP
ckRpZSgpKTsKKyAgICBkICo9IGQ7CisgICAgRVhQRUNUX0VRKDQsIGQuVmFsdWVPckRpZSgpKTsK
KworICAgIENoZWNrZWROdW1lcmljPGludD4gdG9vX2xhcmdlID0gc3RkOjpudW1lcmljX2xpbWl0
czxpbnQ+OjptYXgoKTsKKyAgICBFWFBFQ1RfVFJVRSh0b29fbGFyZ2UuSXNWYWxpZCgpKTsKKyAg
ICB0b29fbGFyZ2UgKz0gZDsKKyAgICBFWFBFQ1RfRkFMU0UodG9vX2xhcmdlLklzVmFsaWQoKSk7
CisgICAgdG9vX2xhcmdlIC09IGQ7CisgICAgRVhQRUNUX0ZBTFNFKHRvb19sYXJnZS5Jc1ZhbGlk
KCkpOworICAgIHRvb19sYXJnZSAvPSBkOworICAgIEVYUEVDVF9GQUxTRSh0b29fbGFyZ2UuSXNW
YWxpZCgpKTsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9m
dXp6L3RyYW5zbGF0b3JfZnV6emVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvZnV6ei90cmFuc2xhdG9yX2Z1enplci5jcHAJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2Z1enovdHJhbnNs
YXRvcl9mdXp6ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYyIEBACisvLworLy8g
Q29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKworLy8gdHJhbnNsYXRvcl9mdXp6ZXIuY3BwOiBBIGxpYmZ1enplciBmdXp6ZXIgZm9y
IHRoZSBzaGFkZXIgdHJhbnNsYXRvci4KKworI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUg
PHN0ZGludC5oPgorI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+CisjaW5jbHVkZSA8aW9zdHJlYW0+
CisKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0NvbXBpbGVyLmgiCisjaW5jbHVkZSAi
YW5nbGVfZ2wuaCIKKworc3RydWN0IFRyYW5zbGF0b3JDYWNoZUtleQoreworICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBUcmFuc2xhdG9yQ2FjaGVLZXkgJm90aGVyKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHR5cGUgPT0gb3RoZXIudHlwZSAmJiBzcGVjID09IG90aGVyLnNwZWMgJiYg
b3V0cHV0ID09IG90aGVyLm91dHB1dDsKKyAgICB9CisKKyAgICB1aW50MzJfdCB0eXBlICAgPSAw
OworICAgIHVpbnQzMl90IHNwZWMgICA9IDA7CisgICAgdWludDMyX3Qgb3V0cHV0ID0gMDsKK307
CisKK25hbWVzcGFjZSBzdGQKK3sKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBoYXNoPFRyYW5zbGF0
b3JDYWNoZUtleT4KK3sKKyAgICBzdGQ6OnNpemVfdCBvcGVyYXRvcigpKGNvbnN0IFRyYW5zbGF0
b3JDYWNoZUtleSAmaykgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAoaGFzaDx1aW50MzJf
dD4oKShrLnR5cGUpIDw8IDEpIF4gKGhhc2g8dWludDMyX3Q+KCkoay5zcGVjKSA+PiAxKSBeCisg
ICAgICAgICAgICAgICBoYXNoPHVpbnQzMl90PigpKGsub3V0cHV0KTsKKyAgICB9Cit9OworfSAg
Ly8gbmFtZXNwYWNlIHN0ZAorCitzdGF0aWMgc3RkOjp1bm9yZGVyZWRfbWFwPFRyYW5zbGF0b3JD
YWNoZUtleSwgVENvbXBpbGVyICo+IHRyYW5zbGF0b3JzOworCitleHRlcm4gIkMiIGludCBMTFZN
RnV6emVyVGVzdE9uZUlucHV0KGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBzaXplKQorewor
ICAgIC8vIFJlc2VydmUgc29tZSBzaXplIGZvciBmdXR1cmUgY29tcGlsZSBvcHRpb25zCisgICAg
Y29uc3Qgc2l6ZV90IGtIZWFkZXJTaXplID0gMTI4OworCisgICAgaWYgKHNpemUgPD0ga0hlYWRl
clNpemUpCisgICAgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvLyBNYWtlIHN1
cmUgdGhlIHJlc3Qgb2YgZGF0YSB3aWxsIGJlIGEgdmFsaWQgQyBzdHJpbmcgc28gdGhhdCB3ZSBk
b24ndCBoYXZlIHRvIGNvcHkgaXQuCisgICAgaWYgKGRhdGFbc2l6ZSAtIDFdICE9IDApCisgICAg
eworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB1aW50MzJfdCB0eXBlICAgID0gKnJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QgKj4oZGF0YSk7CisgICAgdWludDMyX3Qgc3Bl
YyAgICA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90ICo+KGRhdGEgKyA0KTsKKyAg
ICB1aW50MzJfdCBvdXRwdXQgID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QgKj4o
ZGF0YSArIDgpOworICAgIHVpbnQ2NF90IG9wdGlvbnMgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50NjRfdCAqPihkYXRhICsgMTIpOworCisgICAgaWYgKHR5cGUgIT0gR0xfRlJBR01FTlRf
U0hBREVSICYmIHR5cGUgIT0gR0xfVkVSVEVYX1NIQURFUikKKyAgICB7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKworICAgIGlmIChzcGVjICE9IFNIX0dMRVMyX1NQRUMgJiYgdHlwZSAhPSBT
SF9XRUJHTF9TUEVDICYmIHNwZWMgIT0gU0hfR0xFUzNfU1BFQyAmJgorICAgICAgICBzcGVjICE9
IFNIX1dFQkdMMl9TUEVDKQorICAgIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAg
c3RkOjp2ZWN0b3I8dWludDMyX3Q+IHZhbGlkT3V0cHV0czsKKyAgICB2YWxpZE91dHB1dHMucHVz
aF9iYWNrKFNIX0VTU0xfT1VUUFVUKTsKKyAgICB2YWxpZE91dHB1dHMucHVzaF9iYWNrKFNIX0dM
U0xfQ09NUEFUSUJJTElUWV9PVVRQVVQpOworICAgIHZhbGlkT3V0cHV0cy5wdXNoX2JhY2soU0hf
R0xTTF8xMzBfT1VUUFVUKTsKKyAgICB2YWxpZE91dHB1dHMucHVzaF9iYWNrKFNIX0dMU0xfMTQw
X09VVFBVVCk7CisgICAgdmFsaWRPdXRwdXRzLnB1c2hfYmFjayhTSF9HTFNMXzE1MF9DT1JFX09V
VFBVVCk7CisgICAgdmFsaWRPdXRwdXRzLnB1c2hfYmFjayhTSF9HTFNMXzMzMF9DT1JFX09VVFBV
VCk7CisgICAgdmFsaWRPdXRwdXRzLnB1c2hfYmFjayhTSF9HTFNMXzQwMF9DT1JFX09VVFBVVCk7
CisgICAgdmFsaWRPdXRwdXRzLnB1c2hfYmFjayhTSF9HTFNMXzQxMF9DT1JFX09VVFBVVCk7Cisg
ICAgdmFsaWRPdXRwdXRzLnB1c2hfYmFjayhTSF9HTFNMXzQyMF9DT1JFX09VVFBVVCk7CisgICAg
dmFsaWRPdXRwdXRzLnB1c2hfYmFjayhTSF9HTFNMXzQzMF9DT1JFX09VVFBVVCk7CisgICAgdmFs
aWRPdXRwdXRzLnB1c2hfYmFjayhTSF9HTFNMXzQ0MF9DT1JFX09VVFBVVCk7CisgICAgdmFsaWRP
dXRwdXRzLnB1c2hfYmFjayhTSF9HTFNMXzQ1MF9DT1JFX09VVFBVVCk7CisgICAgdmFsaWRPdXRw
dXRzLnB1c2hfYmFjayhTSF9ITFNMX09VVFBVVCk7CisgICAgdmFsaWRPdXRwdXRzLnB1c2hfYmFj
ayhTSF9ITFNMOV9PVVRQVVQpOworICAgIHZhbGlkT3V0cHV0cy5wdXNoX2JhY2soU0hfSExTTDEx
X09VVFBVVCk7CisgICAgdmFsaWRPdXRwdXRzLnB1c2hfYmFjayhTSF9ITFNMXzNfMF9PVVRQVVQp
OworICAgIHZhbGlkT3V0cHV0cy5wdXNoX2JhY2soU0hfSExTTF80XzFfT1VUUFVUKTsKKyAgICB2
YWxpZE91dHB1dHMucHVzaF9iYWNrKFNIX0hMU0xfNF8wX0ZMOV8zX09VVFBVVCk7CisgICAgYm9v
bCBmb3VuZCA9IGZhbHNlOworICAgIGZvciAoYXV0byB2YWxpZCA6IHZhbGlkT3V0cHV0cykKKyAg
ICB7CisgICAgICAgIGZvdW5kID0gZm91bmQgfHwgKHZhbGlkID09IG91dHB1dCk7CisgICAgfQor
ICAgIGlmICghZm91bmQpCisgICAgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBz
aXplIC09IGtIZWFkZXJTaXplOworICAgIGRhdGEgKz0ga0hlYWRlclNpemU7CisKKyAgICBpZiAo
IVNoSW5pdGlhbGl6ZSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAg
VHJhbnNsYXRvckNhY2hlS2V5IGtleTsKKyAgICBrZXkudHlwZSAgID0gdHlwZTsKKyAgICBrZXku
c3BlYyAgID0gc3BlYzsKKyAgICBrZXkub3V0cHV0ID0gb3V0cHV0OworCisgICAgaWYgKHRyYW5z
bGF0b3JzLmZpbmQoa2V5KSA9PSB0cmFuc2xhdG9ycy5lbmQoKSkKKyAgICB7CisgICAgICAgIFRD
b21waWxlciAqdHJhbnNsYXRvciA9IENvbnN0cnVjdENvbXBpbGVyKHR5cGUsIHN0YXRpY19jYXN0
PFNoU2hhZGVyU3BlYz4oc3BlYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PFNoU2hhZGVyT3V0cHV0PihvdXRwdXQpKTsKKwor
ICAgICAgICBpZiAoIXRyYW5zbGF0b3IpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAw
OworICAgICAgICB9CisKKyAgICAgICAgU2hCdWlsdEluUmVzb3VyY2VzIHJlc291cmNlczsKKyAg
ICAgICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmcmVzb3VyY2VzKTsKKworICAgICAgICAvLyBF
bmFibGUgYWxsIHRoZSBleHRlbnNpb25zIHRvIGhhdmUgbW9yZSBjb3ZlcmFnZQorICAgICAgICBy
ZXNvdXJjZXMuT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzICAgICAgICA9IDE7CisgICAgICAgIHJl
c291cmNlcy5PRVNfRUdMX2ltYWdlX2V4dGVybmFsICAgICAgICAgID0gMTsKKyAgICAgICAgcmVz
b3VyY2VzLk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWxfZXNzbDMgICAgPSAxOworICAgICAgICByZXNv
dXJjZXMuTlZfRUdMX3N0cmVhbV9jb25zdW1lcl9leHRlcm5hbCA9IDE7CisgICAgICAgIHJlc291
cmNlcy5BUkJfdGV4dHVyZV9yZWN0YW5nbGUgICAgICAgICAgID0gMTsKKyAgICAgICAgcmVzb3Vy
Y2VzLkVYVF9ibGVuZF9mdW5jX2V4dGVuZGVkICAgICAgICAgPSAxOworICAgICAgICByZXNvdXJj
ZXMuRVhUX2RyYXdfYnVmZmVycyAgICAgICAgICAgICAgICA9IDE7CisgICAgICAgIHJlc291cmNl
cy5FWFRfZnJhZ19kZXB0aCAgICAgICAgICAgICAgICAgID0gMTsKKyAgICAgICAgcmVzb3VyY2Vz
LkVYVF9zaGFkZXJfdGV4dHVyZV9sb2QgICAgICAgICAgPSAxOworICAgICAgICByZXNvdXJjZXMu
V0VCR0xfZGVidWdfc2hhZGVyX3ByZWNpc2lvbiAgICA9IDE7CisgICAgICAgIHJlc291cmNlcy5F
WFRfc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoICAgID0gMTsKKyAgICAgICAgcmVzb3VyY2VzLk5W
X3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCAgICAgPSAxOworICAgICAgICByZXNvdXJjZXMuQVJN
X3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCAgICA9IDE7CisKKyAgICAgICAgaWYgKCF0cmFuc2xh
dG9yLT5Jbml0KHJlc291cmNlcykpCisgICAgICAgIHsKKyAgICAgICAgICAgIERlbGV0ZUNvbXBp
bGVyKHRyYW5zbGF0b3IpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAg
ICAgICB0cmFuc2xhdG9yc1trZXldID0gdHJhbnNsYXRvcjsKKyAgICB9CisKKyAgICBUQ29tcGls
ZXIgKnRyYW5zbGF0b3IgPSB0cmFuc2xhdG9yc1trZXldOworCisgICAgY29uc3QgY2hhciAqc2hh
ZGVyU3RyaW5nc1tdID0ge3JlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihkYXRhKX07Cisg
ICAgdHJhbnNsYXRvci0+Y29tcGlsZShzaGFkZXJTdHJpbmdzLCAxLCBvcHRpb25zKTsKKworICAg
IHJldHVybiAwOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3ByZXByb2Nlc3Nvci82NGJpdC10b2tlbml6ZXItc2FmZXR5LnBhdGNoCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvNjRiaXQt
dG9rZW5pemVyLXNhZmV0eS5wYXRjaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci82NGJpdC10b2tlbml6ZXItc2Fm
ZXR5LnBhdGNoCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMxICsxLDc5IEBACitkaWZmIC0tZ2l0IGEv
c3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6ZXIuY3BwIGIvc3JjL2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci9Ub2tlbml6ZXIuY3BwCitpbmRleCAwZDdhZDU4Li41ZWYwZTVlIDEwMDY0NAog
LS0tIGEvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6ZXIuY3BwCiArKysgYi9zcmMv
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5jcHAKLUBAIC01Niw2ICs1Niw3IEBAIHR5
cGVkZWYgaW50MTZfdCBmbGV4X2ludDE2X3Q7Ci0gdHlwZWRlZiB1aW50MTZfdCBmbGV4X3VpbnQx
Nl90OwotIHR5cGVkZWYgaW50MzJfdCBmbGV4X2ludDMyX3Q7Ci0gdHlwZWRlZiB1aW50MzJfdCBm
bGV4X3VpbnQzMl90OwotK3R5cGVkZWYgdWludDY0X3QgZmxleF91aW50NjRfdDsKLSAjZWxzZQot
IHR5cGVkZWYgc2lnbmVkIGNoYXIgZmxleF9pbnQ4X3Q7Ci0gdHlwZWRlZiBzaG9ydCBpbnQgZmxl
eF9pbnQxNl90OwotQEAgLTE3OSw2ICsxODAsMTEgQEAgdHlwZWRlZiB2b2lkKiB5eXNjYW5fdDsK
LSB0eXBlZGVmIHN0cnVjdCB5eV9idWZmZXJfc3RhdGUgKllZX0JVRkZFUl9TVEFURTsKLSAjZW5k
aWYKLQotKyNpZm5kZWYgWVlfVFlQRURFRl9ZWV9TSVpFX1QKLSsjZGVmaW5lIFlZX1RZUEVERUZf
WVlfU0laRV9UCi0rdHlwZWRlZiBzaXplX3QgeXlfc2l6ZV90OwotKyNlbmRpZgotKwotICNkZWZp
bmUgRU9CX0FDVF9DT05USU5VRV9TQ0FOIDAKLSAjZGVmaW5lIEVPQl9BQ1RfRU5EX09GX0ZJTEUg
MQotICNkZWZpbmUgRU9CX0FDVF9MQVNUX01BVENIIDIKLUBAIC0zNTMsNyArMzU0LDcgQEAgc3Rh
dGljIHZvaWQgeXlfZmF0YWxfZXJyb3IgKHl5Y29uc3QgY2hhciBtc2dbXSAseXlzY2FuX3QgeXlz
Y2FubmVyICk7CitAQCAtMTcwMyw3ICsxNzAzLDcgQEAgc3RhdGljIGludCB5eV9nZXRfbmV4dF9i
dWZmZXIgKHl5c2Nhbl90IHl5c2Nhbm5lcikKKyAJZWxzZQorIAkJeworIAkJCWludCBudW1fdG9f
cmVhZCA9CistCQkJWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9idWZfc2l6ZSAtIG51bWJl
cl90b19tb3ZlIC0gMTsKKysJCQlzdGF0aWNfY2FzdDxpbnQ+KFlZX0NVUlJFTlRfQlVGRkVSX0xW
QUxVRS0+eXlfYnVmX3NpemUgLSBudW1iZXJfdG9fbW92ZSAtIDEpOworIAorIAkJd2hpbGUgKCBu
dW1fdG9fcmVhZCA8PSAwICkKKyAJCQl7IC8qIE5vdCBlbm91Z2ggcm9vbSBpbiB0aGUgYnVmZmVy
IC0gZ3JvdyBpdC4gKi8KK0BAIC0xNzM3LDggKzE3MzcsOCBAQCBzdGF0aWMgaW50IHl5X2dldF9u
ZXh0X2J1ZmZlciAoeXlzY2FuX3QgeXlzY2FubmVyKQorIAorIAkJCXl5Zy0+eXlfY19idWZfcCA9
ICZiLT55eV9jaF9idWZbeXlfY19idWZfcF9vZmZzZXRdOworIAorLQkJCW51bV90b19yZWFkID0g
WVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9idWZfc2l6ZSAtCistCQkJCQkJbnVtYmVyX3Rv
X21vdmUgLSAxOworKwkJCW51bV90b19yZWFkID0gc3RhdGljX2Nhc3Q8aW50PihZWV9DVVJSRU5U
X0JVRkZFUl9MVkFMVUUtPnl5X2J1Zl9zaXplIC0KKysJCQkJCQludW1iZXJfdG9fbW92ZSAtIDEp
OworIAorIAkJCX0KKyAKK0BAIC0xNzQ2LDggKzE3NDYsMTAgQEAgc3RhdGljIGludCB5eV9nZXRf
bmV4dF9idWZmZXIgKHl5c2Nhbl90IHl5c2Nhbm5lcikKKyAJCQludW1fdG9fcmVhZCA9IFlZX1JF
QURfQlVGX1NJWkU7CisgCisgCQkvKiBSZWFkIGluIG1vcmUgZGF0YS4gKi8KKysJCXl5X3NpemVf
dCByZXQgPSAwOworIAkJWVlfSU5QVVQoICgmWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9j
aF9idWZbbnVtYmVyX3RvX21vdmVdKSwKKy0JCQl5eWctPnl5X25fY2hhcnMsIG51bV90b19yZWFk
ICk7CisrCQkJcmV0LCBudW1fdG9fcmVhZCApOworKwkJeXlnLT55eV9uX2NoYXJzID0gc3RhdGlj
X2Nhc3Q8aW50PihyZXQpOworIAorIAkJWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9uX2No
YXJzID0geXlnLT55eV9uX2NoYXJzOworIAkJfQorQEAgLTE3NzMsMTMgKzE3NzUsMTMgQEAgc3Rh
dGljIGludCB5eV9nZXRfbmV4dF9idWZmZXIgKHl5c2Nhbl90IHl5c2Nhbm5lcikKKyAKKyAJaWYg
KChpbnQpICh5eWctPnl5X25fY2hhcnMgKyBudW1iZXJfdG9fbW92ZSkgPiBZWV9DVVJSRU5UX0JV
RkZFUl9MVkFMVUUtPnl5X2J1Zl9zaXplKSB7CisgCQkvKiBFeHRlbmQgdGhlIGFycmF5IGJ5IDUw
JSwgcGx1cyB0aGUgbnVtYmVyIHdlIHJlYWxseSBuZWVkLiAqLworLQkJaW50IG5ld19zaXplID0g
eXlnLT55eV9uX2NoYXJzICsgbnVtYmVyX3RvX21vdmUgKyAoeXlnLT55eV9uX2NoYXJzID4+IDEp
OworKwkJeXlfc2l6ZV90IG5ld19zaXplID0geXlnLT55eV9uX2NoYXJzICsgbnVtYmVyX3RvX21v
dmUgKyAoeXlnLT55eV9uX2NoYXJzID4+IDEpOworIAkJWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVF
LT55eV9jaF9idWYgPSAoY2hhciAqKSBwcHJlYWxsb2MoKHZvaWQgKikgWVlfQ1VSUkVOVF9CVUZG
RVJfTFZBTFVFLT55eV9jaF9idWYsbmV3X3NpemUgLHl5c2Nhbm5lciApOworIAkJaWYgKCAhIFlZ
X0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfY2hfYnVmICkKKyAJCQlZWV9GQVRBTF9FUlJPUigg
Im91dCBvZiBkeW5hbWljIG1lbW9yeSBpbiB5eV9nZXRfbmV4dF9idWZmZXIoKSIgKTsKKyAJfQor
IAorLQl5eWctPnl5X25fY2hhcnMgKz0gbnVtYmVyX3RvX21vdmU7CisrCXl5Zy0+eXlfbl9jaGFy
cyArPSBzdGF0aWNfY2FzdDxpbnQ+KG51bWJlcl90b19tb3ZlKTsKKyAJWVlfQ1VSUkVOVF9CVUZG
RVJfTFZBTFVFLT55eV9jaF9idWZbeXlnLT55eV9uX2NoYXJzXSA9IFlZX0VORF9PRl9CVUZGRVJf
Q0hBUjsKKyAJWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9jaF9idWZbeXlnLT55eV9uX2No
YXJzICsgMV0gPSBZWV9FTkRfT0ZfQlVGRkVSX0NIQVI7CisgCitAQCAtMjE3MSw3ICsyMTczLDcg
QEAgdm9pZCBwcHBvcF9idWZmZXJfc3RhdGUgKHl5c2Nhbl90IHl5c2Nhbm5lcikKICAgKi8KLSAj
ZGVmaW5lIFlZX0RPX0JFRk9SRV9BQ1RJT04gXAotIAl5eWctPnl5dGV4dF9wdHIgPSB5eV9icDsg
XAotLQl5eWxlbmcgPSAoc2l6ZV90KSAoeXlfY3AgLSB5eV9icCk7IFwKLSsJeXlsZW5nID0gKHl5
X3NpemVfdCkgKHl5X2NwIC0geXlfYnApOyBcCi0gCXl5Zy0+eXlfaG9sZF9jaGFyID0gKnl5X2Nw
OyBcCi0gCSp5eV9jcCA9ICdcMCc7IFwKLSAJeXlnLT55eV9jX2J1Zl9wID0geXlfY3A7Cisgc3Rh
dGljIHZvaWQgcHBlbnN1cmVfYnVmZmVyX3N0YWNrICh5eXNjYW5fdCB5eXNjYW5uZXIpCisgewor
LQlpbnQgbnVtX3RvX2FsbG9jOworKwl5eV9zaXplX3QgbnVtX3RvX2FsbG9jOworICAgICBzdHJ1
Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7CisgCisgCWlm
ICgheXlnLT55eV9idWZmZXJfc3RhY2spIHsKK0BAIC0yMjM4LDcgKzIyNDAsNyBAQCBZWV9CVUZG
RVJfU1RBVEUgcHBfc2Nhbl9idWZmZXIgIChjaGFyICogYmFzZSwgeXlfc2l6ZV90ICBzaXplICwg
eXlzY2FuX3QgeXlzY2FubgorIAlpZiAoICEgYiApCisgCQlZWV9GQVRBTF9FUlJPUiggIm91dCBv
ZiBkeW5hbWljIG1lbW9yeSBpbiBwcF9zY2FuX2J1ZmZlcigpIiApOworIAorLQliLT55eV9idWZf
c2l6ZSA9IHNpemUgLSAyOwkvKiAiLSAyIiB0byB0YWtlIGNhcmUgb2YgRU9CJ3MgKi8KKysJYi0+
eXlfYnVmX3NpemUgPSBzdGF0aWNfY2FzdDxpbnQ+KHNpemUgLSAyKTsJLyogIi0gMiIgdG8gdGFr
ZSBjYXJlIG9mIEVPQidzICovCisgCWItPnl5X2J1Zl9wb3MgPSBiLT55eV9jaF9idWYgPSBiYXNl
OworIAliLT55eV9pc19vdXJfYnVmZmVyID0gMDsKKyAJYi0+eXlfaW5wdXRfZmlsZSA9IE5VTEw7
CitAQCAtMjI5Myw3ICsyMjk1LDcgQEAgWVlfQlVGRkVSX1NUQVRFIHBwX3NjYW5fYnl0ZXMgICh5
eWNvbnN0IGNoYXIgKiB5eWJ5dGVzLCBpbnQgIF95eWJ5dGVzX2xlbiAsIHl5c2MKKyAJaWYgKCAh
IGJ1ZiApCisgCQlZWV9GQVRBTF9FUlJPUiggIm91dCBvZiBkeW5hbWljIG1lbW9yeSBpbiBwcF9z
Y2FuX2J5dGVzKCkiICk7CisgCistCWZvciAoIGkgPSAwOyBpIDwgX3l5Ynl0ZXNfbGVuOyArK2kg
KQorKwlmb3IgKCBpID0gMDsgaSA8IHN0YXRpY19jYXN0PHl5X3NpemVfdD4oX3l5Ynl0ZXNfbGVu
KTsgKytpICkKKyAJCWJ1ZltpXSA9IHl5Ynl0ZXNbaV07CisgCisgCWJ1ZltfeXlieXRlc19sZW5d
ID0gYnVmW195eWJ5dGVzX2xlbisxXSA9IFlZX0VORF9PRl9CVUZGRVJfQ0hBUjsKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRGlhZ25vc3Rp
Y3NCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvcHJlcHJvY2Vzc29yL0RpYWdub3N0aWNzQmFzZS5jcHAJKHJldmlzaW9uIDIwNzgwNCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRGlh
Z25vc3RpY3NCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNCw5ICs0LDkgQEAKIC8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwogCi0jaW5jbHVkZSAiRGlhZ25vc3RpY3NCYXNlLmgi
CisjaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpYWdub3N0aWNzQmFzZS5oIgogCi0j
aW5jbHVkZSA8Y2Fzc2VydD4KKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKIAogbmFtZXNwYWNl
IHBwCiB7CkBAIC0zMSw3ICszMSw3IEBAIERpYWdub3N0aWNzOjpTZXZlcml0eSBEaWFnbm9zdGlj
czo6c2V2ZXIKICAgICBpZiAoKGlkID4gUFBfV0FSTklOR19CRUdJTikgJiYgKGlkIDwgUFBfV0FS
TklOR19FTkQpKQogICAgICAgICByZXR1cm4gUFBfV0FSTklORzsKIAotICAgIGFzc2VydChmYWxz
ZSk7CisgICAgVU5SRUFDSEFCTEUoKTsKICAgICByZXR1cm4gUFBfRVJST1I7CiB9CiAKQEAgLTc0
LDYgKzc0LDggQEAgc3RkOjpzdHJpbmcgRGlhZ25vc3RpY3M6Om1lc3NhZ2UoSUQgaWQpCiAgICAg
ICAgIHJldHVybiAicHJlZGVmaW5lZCBtYWNybyB1bmRlZmluZWQiOwogICAgICAgY2FzZSBQUF9N
QUNST19VTlRFUk1JTkFURURfSU5WT0NBVElPTjoKICAgICAgICAgcmV0dXJuICJ1bnRlcm1pbmF0
ZWQgbWFjcm8gaW52b2NhdGlvbiI7CisgICAgICBjYXNlIFBQX01BQ1JPX1VOREVGSU5FRF9XSElM
RV9JTlZPS0VEOgorICAgICAgICAgIHJldHVybiAibWFjcm8gdW5kZWZpbmVkIHdoaWxlIGJlaW5n
IGludm9rZWQiOwogICAgICAgY2FzZSBQUF9NQUNST19UT09fRkVXX0FSR1M6CiAgICAgICAgIHJl
dHVybiAiTm90IGVub3VnaCBhcmd1bWVudHMgZm9yIG1hY3JvIjsKICAgICAgIGNhc2UgUFBfTUFD
Uk9fVE9PX01BTllfQVJHUzoKQEAgLTExNSw2ICsxMTcsOCBAQCBzdGQ6OnN0cmluZyBEaWFnbm9z
dGljczo6bWVzc2FnZShJRCBpZCkKICAgICAgICAgcmV0dXJuICJpbnZhbGlkIGxpbmUgZGlyZWN0
aXZlIjsKICAgICAgIGNhc2UgUFBfTk9OX1BQX1RPS0VOX0JFRk9SRV9FWFRFTlNJT05fRVNTTDM6
CiAgICAgICAgIHJldHVybiAiZXh0ZW5zaW9uIGRpcmVjdGl2ZSBtdXN0IG9jY3VyIGJlZm9yZSBh
bnkgbm9uLXByZXByb2Nlc3NvciB0b2tlbnMgaW4gRVNTTDMiOworICAgICAgY2FzZSBQUF9VTkRF
RklORURfU0hJRlQ6CisgICAgICAgICAgcmV0dXJuICJzaGlmdCBleHBvbmVudCBpcyBuZWdhdGl2
ZSBvciB1bmRlZmluZWQiOwogICAgICAgLy8gRXJyb3JzIGVuZC4KICAgICAgIC8vIFdhcm5pbmdz
IGJlZ2luLgogICAgICAgY2FzZSBQUF9FT0ZfSU5fRElSRUNUSVZFOgpAQCAtMTI5LDggKzEzMyw4
IEBAIHN0ZDo6c3RyaW5nIERpYWdub3N0aWNzOjptZXNzYWdlKElEIGlkKQogICAgICAgICByZXR1
cm4gIm1hY3JvIG5hbWUgd2l0aCBhIGRvdWJsZSB1bmRlcnNjb3JlIGlzIHJlc2VydmVkIC0gdW5p
bnRlbnRlZCBiZWhhdmlvciBpcyBwb3NzaWJsZSI7CiAgICAgICAvLyBXYXJuaW5ncyBlbmQuCiAg
ICAgICBkZWZhdWx0OgotICAgICAgICBhc3NlcnQoZmFsc2UpOwotICAgICAgICByZXR1cm4gIiI7
CisgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICByZXR1cm4gIiI7CiAgICAgfQog
fQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vz
c29yL0RpYWdub3N0aWNzQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRGlhZ25vc3RpY3NCYXNlLmgJKHJldmlzaW9u
IDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9j
ZXNzb3IvRGlhZ25vc3RpY3NCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAg
Y2xhc3MgRGlhZ25vc3RpY3MKICAgICAgICAgUFBfTUFDUk9fUFJFREVGSU5FRF9SRURFRklORUQs
CiAgICAgICAgIFBQX01BQ1JPX1BSRURFRklORURfVU5ERUZJTkVELAogICAgICAgICBQUF9NQUNS
T19VTlRFUk1JTkFURURfSU5WT0NBVElPTiwKKyAgICAgICAgUFBfTUFDUk9fVU5ERUZJTkVEX1dI
SUxFX0lOVk9LRUQsCiAgICAgICAgIFBQX01BQ1JPX1RPT19GRVdfQVJHUywKICAgICAgICAgUFBf
TUFDUk9fVE9PX01BTllfQVJHUywKICAgICAgICAgUFBfTUFDUk9fRFVQTElDQVRFX1BBUkFNRVRF
Ul9OQU1FUywKQEAgLTY1LDYgKzY2LDcgQEAgY2xhc3MgRGlhZ25vc3RpY3MKICAgICAgICAgUFBf
SU5WQUxJRF9GSUxFX05VTUJFUiwKICAgICAgICAgUFBfSU5WQUxJRF9MSU5FX0RJUkVDVElWRSwK
ICAgICAgICAgUFBfTk9OX1BQX1RPS0VOX0JFRk9SRV9FWFRFTlNJT05fRVNTTDMsCisgICAgICAg
IFBQX1VOREVGSU5FRF9TSElGVCwKICAgICAgICAgUFBfRVJST1JfRU5ELAogCiAgICAgICAgIFBQ
X1dBUk5JTkdfQkVHSU4sCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvcHJlcHJvY2Vzc29yL0RpcmVjdGl2ZUhhbmRsZXJCYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpcmVjdGl2
ZUhhbmRsZXJCYXNlLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9EaXJlY3RpdmVIYW5kbGVyQmFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBACiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgogLy8KIAotI2luY2x1ZGUgIkRpcmVjdGl2ZUhhbmRsZXJCYXNlLmgiCisjaW5jbHVkZSAi
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpcmVjdGl2ZUhhbmRsZXJCYXNlLmgiCiAKIG5hbWVzcGFj
ZSBwcAogewpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXBy
b2Nlc3Nvci9EaXJlY3RpdmVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRGlyZWN0aXZlUGFyc2VyLmNwcAko
cmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3ByZXByb2Nlc3Nvci9EaXJlY3RpdmVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00LDE5
ICs0LDE5IEBACiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KIAotI2luY2x1ZGUg
IkRpcmVjdGl2ZVBhcnNlci5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9EaXJl
Y3RpdmVQYXJzZXIuaCIKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxjYXNzZXJ0
PgogI2luY2x1ZGUgPGNzdGRsaWI+CiAjaW5jbHVkZSA8c3N0cmVhbT4KIAotI2luY2x1ZGUgIkRp
YWdub3N0aWNzQmFzZS5oIgotI2luY2x1ZGUgIkRpcmVjdGl2ZUhhbmRsZXJCYXNlLmgiCi0jaW5j
bHVkZSAiRXhwcmVzc2lvblBhcnNlci5oIgotI2luY2x1ZGUgIk1hY3JvRXhwYW5kZXIuaCIKLSNp
bmNsdWRlICJUb2tlbi5oIgotI2luY2x1ZGUgIlRva2VuaXplci5oIgorI2luY2x1ZGUgImNvbW1v
bi9kZWJ1Zy5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9EaWFnbm9zdGljc0Jh
c2UuaCIKKyNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvRGlyZWN0aXZlSGFuZGxlckJh
c2UuaCIKKyNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lvblBhcnNlci5o
IgorI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9NYWNyb0V4cGFuZGVyLmgiCisjaW5j
bHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmgiCisjaW5jbHVkZSAiY29tcGlsZXIv
cHJlcHJvY2Vzc29yL1Rva2VuaXplci5oIgogCiBuYW1lc3BhY2UgewogZW51bSBEaXJlY3RpdmVU
eXBlCkBAIC0xMTgsOCArMTE4LDggQEAgdm9pZCBza2lwVW50aWxFT0QocHA6OkxleGVyICpsZXhl
ciwgcHA6OgogCiBib29sIGlzTWFjcm9OYW1lUmVzZXJ2ZWQoY29uc3Qgc3RkOjpzdHJpbmcgJm5h
bWUpCiB7Ci0gICAgLy8gTmFtZXMgcHJlZml4ZWQgd2l0aCAiR0xfIiBhcmUgcmVzZXJ2ZWQuCi0g
ICAgcmV0dXJuIChuYW1lLnN1YnN0cigwLCAzKSA9PSAiR0xfIik7CisgICAgLy8gTmFtZXMgcHJl
Zml4ZWQgd2l0aCAiR0xfIiBhbmQgdGhlIG5hbWUgImRlZmluZWQiIGFyZSByZXNlcnZlZC4KKyAg
ICByZXR1cm4gbmFtZSA9PSAiZGVmaW5lZCIgfHwgKG5hbWUuc3Vic3RyKDAsIDMpID09ICJHTF8i
KTsKIH0KIAogYm9vbCBoYXNEb3VibGVVbmRlcnNjb3Jlcyhjb25zdCBzdGQ6OnN0cmluZyAmbmFt
ZSkKQEAgLTEzOSw2ICsxMzksNjYgQEAgYm9vbCBpc01hY3JvUHJlZGVmaW5lZChjb25zdCBzdGQ6
OnN0cmluZwogbmFtZXNwYWNlIHBwCiB7CiAKK2NsYXNzIERlZmluZWRQYXJzZXIgOiBwdWJsaWMg
TGV4ZXIKK3sKKyAgcHVibGljOgorICAgIERlZmluZWRQYXJzZXIoTGV4ZXIgKmxleGVyLCBjb25z
dCBNYWNyb1NldCAqbWFjcm9TZXQsIERpYWdub3N0aWNzICpkaWFnbm9zdGljcykKKyAgICAgICAg
OiBtTGV4ZXIobGV4ZXIpLCBtTWFjcm9TZXQobWFjcm9TZXQpLCBtRGlhZ25vc3RpY3MoZGlhZ25v
c3RpY3MpCisgICAgeworICAgIH0KKworICBwcm90ZWN0ZWQ6CisgICAgdm9pZCBsZXgoVG9rZW4g
KnRva2VuKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgY29uc3QgY2hhciBrRGVmaW5lZFtdID0g
ImRlZmluZWQiOworCisgICAgICAgIG1MZXhlci0+bGV4KHRva2VuKTsKKyAgICAgICAgaWYgKHRv
a2VuLT50eXBlICE9IFRva2VuOjpJREVOVElGSUVSKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBpZiAodG9rZW4tPnRleHQgIT0ga0RlZmluZWQpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgYm9vbCBwYXJlbiA9IGZhbHNlOworICAgICAgICBtTGV4ZXItPmxleCh0b2tlbik7
CisgICAgICAgIGlmICh0b2tlbi0+dHlwZSA9PSAnKCcpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHBhcmVuID0gdHJ1ZTsKKyAgICAgICAgICAgIG1MZXhlci0+bGV4KHRva2VuKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmICh0b2tlbi0+dHlwZSAhPSBUb2tlbjo6SURFTlRJRklFUikKKyAgICAg
ICAgeworICAgICAgICAgICAgbURpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX1VO
RVhQRUNURURfVE9LRU4sIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOworICAgICAgICAg
ICAgc2tpcFVudGlsRU9EKG1MZXhlciwgdG9rZW4pOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIE1hY3JvU2V0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbU1hY3JvU2V0
LT5maW5kKHRva2VuLT50ZXh0KTsKKyAgICAgICAgc3RkOjpzdHJpbmcgZXhwcmVzc2lvbiAgICAg
ICAgPSBpdGVyICE9IG1NYWNyb1NldC0+ZW5kKCkgPyAiMSIgOiAiMCI7CisKKyAgICAgICAgaWYg
KHBhcmVuKQorICAgICAgICB7CisgICAgICAgICAgICBtTGV4ZXItPmxleCh0b2tlbik7CisgICAg
ICAgICAgICBpZiAodG9rZW4tPnR5cGUgIT0gJyknKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9VTkVYUEVDVEVEX1RP
S0VOLCB0b2tlbi0+bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdG9rZW4tPnRleHQpOworICAgICAgICAgICAgICAgIHNraXBVbnRpbEVPRChtTGV4ZXIsIHRv
a2VuKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICAvLyBXZSBoYXZlIGEgdmFsaWQgZGVmaW5lZCBvcGVyYXRvci4KKyAgICAgICAg
Ly8gQ29udmVydCB0aGUgY3VycmVudCB0b2tlbiBpbnRvIGEgQ09OU1RfSU5UIHRva2VuLgorICAg
ICAgICB0b2tlbi0+dHlwZSA9IFRva2VuOjpDT05TVF9JTlQ7CisgICAgICAgIHRva2VuLT50ZXh0
ID0gZXhwcmVzc2lvbjsKKyAgICB9CisKKyAgcHJpdmF0ZToKKyAgICBMZXhlciAqbUxleGVyOwor
ICAgIGNvbnN0IE1hY3JvU2V0ICptTWFjcm9TZXQ7CisgICAgRGlhZ25vc3RpY3MgKm1EaWFnbm9z
dGljczsKK307CisKIERpcmVjdGl2ZVBhcnNlcjo6RGlyZWN0aXZlUGFyc2VyKFRva2VuaXplciAq
dG9rZW5pemVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9TZXQgKm1h
Y3JvU2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlhZ25vc3RpY3MgKmRp
YWdub3N0aWNzLApAQCAtMTg4LDcgKzI0OCw3IEBAIHZvaWQgRGlyZWN0aXZlUGFyc2VyOjpsZXgo
VG9rZW4gKnRva2VuKQogCiB2b2lkIERpcmVjdGl2ZVBhcnNlcjo6cGFyc2VEaXJlY3RpdmUoVG9r
ZW4gKnRva2VuKQogewotICAgIGFzc2VydCh0b2tlbi0+dHlwZSA9PSBUb2tlbjo6UFBfSEFTSCk7
CisgICAgQVNTRVJUKHRva2VuLT50eXBlID09IFRva2VuOjpQUF9IQVNIKTsKIAogICAgIG1Ub2tl
bml6ZXItPmxleCh0b2tlbik7CiAgICAgaWYgKGlzRU9EKHRva2VuKSkKQEAgLTI1NCw4ICszMTQs
OCBAQCB2b2lkIERpcmVjdGl2ZVBhcnNlcjo6cGFyc2VEaXJlY3RpdmUoVG9rCiAgICAgICAgIHBh
cnNlTGluZSh0b2tlbik7CiAgICAgICAgIGJyZWFrOwogICAgICAgZGVmYXVsdDoKLSAgICAgICAg
YXNzZXJ0KGZhbHNlKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgICAgVU5SRUFDSEFCTEUoKTsK
KyAgICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBza2lwVW50aWxFT0QobVRva2VuaXplciwg
dG9rZW4pOwpAQCAtMjY4LDcgKzMyOCw3IEBAIHZvaWQgRGlyZWN0aXZlUGFyc2VyOjpwYXJzZURp
cmVjdGl2ZShUb2sKIAogdm9pZCBEaXJlY3RpdmVQYXJzZXI6OnBhcnNlRGVmaW5lKFRva2VuICp0
b2tlbikKIHsKLSAgICBhc3NlcnQoZ2V0RGlyZWN0aXZlKHRva2VuKSA9PSBESVJFQ1RJVkVfREVG
SU5FKTsKKyAgICBBU1NFUlQoZ2V0RGlyZWN0aXZlKHRva2VuKSA9PSBESVJFQ1RJVkVfREVGSU5F
KTsKIAogICAgIG1Ub2tlbml6ZXItPmxleCh0b2tlbik7CiAgICAgaWYgKHRva2VuLT50eXBlICE9
IFRva2VuOjpJREVOVElGSUVSKQpAQCAtMzY4LDcgKzQyOCw3IEBAIHZvaWQgRGlyZWN0aXZlUGFy
c2VyOjpwYXJzZURlZmluZShUb2tlbiAKIAogdm9pZCBEaXJlY3RpdmVQYXJzZXI6OnBhcnNlVW5k
ZWYoVG9rZW4gKnRva2VuKQogewotICAgIGFzc2VydChnZXREaXJlY3RpdmUodG9rZW4pID09IERJ
UkVDVElWRV9VTkRFRik7CisgICAgQVNTRVJUKGdldERpcmVjdGl2ZSh0b2tlbikgPT0gRElSRUNU
SVZFX1VOREVGKTsKIAogICAgIG1Ub2tlbml6ZXItPmxleCh0b2tlbik7CiAgICAgaWYgKHRva2Vu
LT50eXBlICE9IFRva2VuOjpJREVOVElGSUVSKQpAQCAtMzg1LDYgKzQ0NSwxMyBAQCB2b2lkIERp
cmVjdGl2ZVBhcnNlcjo6cGFyc2VVbmRlZihUb2tlbiAqCiAgICAgICAgIHsKICAgICAgICAgICAg
IG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9NQUNST19QUkVERUZJTkVEX1VO
REVGSU5FRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlv
biwgdG9rZW4tPnRleHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IGVsc2UgaWYgKGl0ZXItPnNlY29uZC5leHBhbnNpb25Db3VudCA+IDApCisgICAgICAgIHsKKyAg
ICAgICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9NQUNST19VTkRF
RklORURfV0hJTEVfSU5WT0tFRCwgdG9rZW4tPmxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdG9rZW4tPnRleHQpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewpAQCAtNDAzLDI1ICs0NzAsMjUgQEAgdm9pZCBE
aXJlY3RpdmVQYXJzZXI6OnBhcnNlVW5kZWYoVG9rZW4gKgogCiB2b2lkIERpcmVjdGl2ZVBhcnNl
cjo6cGFyc2VJZihUb2tlbiAqdG9rZW4pCiB7Ci0gICAgYXNzZXJ0KGdldERpcmVjdGl2ZSh0b2tl
bikgPT0gRElSRUNUSVZFX0lGKTsKKyAgICBBU1NFUlQoZ2V0RGlyZWN0aXZlKHRva2VuKSA9PSBE
SVJFQ1RJVkVfSUYpOwogICAgIHBhcnNlQ29uZGl0aW9uYWxJZih0b2tlbik7CiB9CiAKIHZvaWQg
RGlyZWN0aXZlUGFyc2VyOjpwYXJzZUlmZGVmKFRva2VuICp0b2tlbikKIHsKLSAgICBhc3NlcnQo
Z2V0RGlyZWN0aXZlKHRva2VuKSA9PSBESVJFQ1RJVkVfSUZERUYpOworICAgIEFTU0VSVChnZXRE
aXJlY3RpdmUodG9rZW4pID09IERJUkVDVElWRV9JRkRFRik7CiAgICAgcGFyc2VDb25kaXRpb25h
bElmKHRva2VuKTsKIH0KIAogdm9pZCBEaXJlY3RpdmVQYXJzZXI6OnBhcnNlSWZuZGVmKFRva2Vu
ICp0b2tlbikKIHsKLSAgICBhc3NlcnQoZ2V0RGlyZWN0aXZlKHRva2VuKSA9PSBESVJFQ1RJVkVf
SUZOREVGKTsKKyAgICBBU1NFUlQoZ2V0RGlyZWN0aXZlKHRva2VuKSA9PSBESVJFQ1RJVkVfSUZO
REVGKTsKICAgICBwYXJzZUNvbmRpdGlvbmFsSWYodG9rZW4pOwogfQogCiB2b2lkIERpcmVjdGl2
ZVBhcnNlcjo6cGFyc2VFbHNlKFRva2VuICp0b2tlbikKIHsKLSAgICBhc3NlcnQoZ2V0RGlyZWN0
aXZlKHRva2VuKSA9PSBESVJFQ1RJVkVfRUxTRSk7CisgICAgQVNTRVJUKGdldERpcmVjdGl2ZSh0
b2tlbikgPT0gRElSRUNUSVZFX0VMU0UpOwogCiAgICAgaWYgKG1Db25kaXRpb25hbFN0YWNrLmVt
cHR5KCkpCiAgICAgewpAQCAtNDYyLDcgKzUyOSw3IEBAIHZvaWQgRGlyZWN0aXZlUGFyc2VyOjpw
YXJzZUVsc2UoVG9rZW4gKnQKIAogdm9pZCBEaXJlY3RpdmVQYXJzZXI6OnBhcnNlRWxpZihUb2tl
biAqdG9rZW4pCiB7Ci0gICAgYXNzZXJ0KGdldERpcmVjdGl2ZSh0b2tlbikgPT0gRElSRUNUSVZF
X0VMSUYpOworICAgIEFTU0VSVChnZXREaXJlY3RpdmUodG9rZW4pID09IERJUkVDVElWRV9FTElG
KTsKIAogICAgIGlmIChtQ29uZGl0aW9uYWxTdGFjay5lbXB0eSgpKQogICAgIHsKQEAgLTUwMiw3
ICs1NjksNyBAQCB2b2lkIERpcmVjdGl2ZVBhcnNlcjo6cGFyc2VFbGlmKFRva2VuICp0CiAKIHZv
aWQgRGlyZWN0aXZlUGFyc2VyOjpwYXJzZUVuZGlmKFRva2VuICp0b2tlbikKIHsKLSAgICBhc3Nl
cnQoZ2V0RGlyZWN0aXZlKHRva2VuKSA9PSBESVJFQ1RJVkVfRU5ESUYpOworICAgIEFTU0VSVChn
ZXREaXJlY3RpdmUodG9rZW4pID09IERJUkVDVElWRV9FTkRJRik7CiAKICAgICBpZiAobUNvbmRp
dGlvbmFsU3RhY2suZW1wdHkoKSkKICAgICB7CkBAIC01MjYsNyArNTkzLDcgQEAgdm9pZCBEaXJl
Y3RpdmVQYXJzZXI6OnBhcnNlRW5kaWYoVG9rZW4gKgogCiB2b2lkIERpcmVjdGl2ZVBhcnNlcjo6
cGFyc2VFcnJvcihUb2tlbiAqdG9rZW4pCiB7Ci0gICAgYXNzZXJ0KGdldERpcmVjdGl2ZSh0b2tl
bikgPT0gRElSRUNUSVZFX0VSUk9SKTsKKyAgICBBU1NFUlQoZ2V0RGlyZWN0aXZlKHRva2VuKSA9
PSBESVJFQ1RJVkVfRVJST1IpOwogCiAgICAgc3RkOjpvc3RyaW5nc3RyZWFtIHN0cmVhbTsKICAg
ICBtVG9rZW5pemVyLT5sZXgodG9rZW4pOwpAQCAtNTQxLDcgKzYwOCw3IEBAIHZvaWQgRGlyZWN0
aXZlUGFyc2VyOjpwYXJzZUVycm9yKFRva2VuICoKIC8vIFBhcnNlcyBwcmFnbWEgb2YgZm9ybTog
I3ByYWdtYSBuYW1lWyh2YWx1ZSldLgogdm9pZCBEaXJlY3RpdmVQYXJzZXI6OnBhcnNlUHJhZ21h
KFRva2VuICp0b2tlbikKIHsKLSAgICBhc3NlcnQoZ2V0RGlyZWN0aXZlKHRva2VuKSA9PSBESVJF
Q1RJVkVfUFJBR01BKTsKKyAgICBBU1NFUlQoZ2V0RGlyZWN0aXZlKHRva2VuKSA9PSBESVJFQ1RJ
VkVfUFJBR01BKTsKIAogICAgIGVudW0gU3RhdGUKICAgICB7CkBAIC02MDIsNyArNjY5LDcgQEAg
dm9pZCBEaXJlY3RpdmVQYXJzZXI6OnBhcnNlUHJhZ21hKFRva2VuIAogCiB2b2lkIERpcmVjdGl2
ZVBhcnNlcjo6cGFyc2VFeHRlbnNpb24oVG9rZW4gKnRva2VuKQogewotICAgIGFzc2VydChnZXRE
aXJlY3RpdmUodG9rZW4pID09IERJUkVDVElWRV9FWFRFTlNJT04pOworICAgIEFTU0VSVChnZXRE
aXJlY3RpdmUodG9rZW4pID09IERJUkVDVElWRV9FWFRFTlNJT04pOwogCiAgICAgZW51bSBTdGF0
ZQogICAgIHsKQEAgLTY4Myw3ICs3NTAsNyBAQCB2b2lkIERpcmVjdGl2ZVBhcnNlcjo6cGFyc2VF
eHRlbnNpb24oVG9rCiAKIHZvaWQgRGlyZWN0aXZlUGFyc2VyOjpwYXJzZVZlcnNpb24oVG9rZW4g
KnRva2VuKQogewotICAgIGFzc2VydChnZXREaXJlY3RpdmUodG9rZW4pID09IERJUkVDVElWRV9W
RVJTSU9OKTsKKyAgICBBU1NFUlQoZ2V0RGlyZWN0aXZlKHRva2VuKSA9PSBESVJFQ1RJVkVfVkVS
U0lPTik7CiAKICAgICBpZiAobVBhc3RGaXJzdFN0YXRlbWVudCkKICAgICB7CkBAIC03NzAsMTMg
KzgzNywxMyBAQCB2b2lkIERpcmVjdGl2ZVBhcnNlcjo6cGFyc2VWZXJzaW9uKFRva2VuCiAKIHZv
aWQgRGlyZWN0aXZlUGFyc2VyOjpwYXJzZUxpbmUoVG9rZW4gKnRva2VuKQogewotICAgIGFzc2Vy
dChnZXREaXJlY3RpdmUodG9rZW4pID09IERJUkVDVElWRV9MSU5FKTsKKyAgICBBU1NFUlQoZ2V0
RGlyZWN0aXZlKHRva2VuKSA9PSBESVJFQ1RJVkVfTElORSk7CiAKICAgICBib29sIHZhbGlkID0g
dHJ1ZTsKICAgICBib29sIHBhcnNlZEZpbGVOdW1iZXIgPSBmYWxzZTsKICAgICBpbnQgbGluZSA9
IDAsIGZpbGUgPSAwOwogCi0gICAgTWFjcm9FeHBhbmRlciBtYWNyb0V4cGFuZGVyKG1Ub2tlbml6
ZXIsIG1NYWNyb1NldCwgbURpYWdub3N0aWNzLCBmYWxzZSk7CisgICAgTWFjcm9FeHBhbmRlciBt
YWNyb0V4cGFuZGVyKG1Ub2tlbml6ZXIsIG1NYWNyb1NldCwgbURpYWdub3N0aWNzKTsKIAogICAg
IC8vIExleCB0aGUgZmlyc3QgdG9rZW4gYWZ0ZXIgIiNsaW5lIiBzbyB3ZSBjYW4gY2hlY2sgaXQg
Zm9yIEVPRC4KICAgICBtYWNyb0V4cGFuZGVyLmxleCh0b2tlbik7CkBAIC04NzEsOCArOTM4LDgg
QEAgdm9pZCBEaXJlY3RpdmVQYXJzZXI6OnBhcnNlQ29uZGl0aW9uYWxJZgogICAgICAgICAgICAg
ZXhwcmVzc2lvbiA9IHBhcnNlRXhwcmVzc2lvbklmZGVmKHRva2VuKSA9PSAwID8gMSA6IDA7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYXNzZXJ0
KGZhbHNlKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OworICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBibG9jay5za2lwR3Jv
dXAgPSBleHByZXNzaW9uID09IDA7CiAgICAgICAgIGJsb2NrLmZvdW5kVmFsaWRHcm91cCA9IGV4
cHJlc3Npb24gIT0gMDsKQEAgLTg4MiwxMCArOTQ5LDEwIEBAIHZvaWQgRGlyZWN0aXZlUGFyc2Vy
OjpwYXJzZUNvbmRpdGlvbmFsSWYKIAogaW50IERpcmVjdGl2ZVBhcnNlcjo6cGFyc2VFeHByZXNz
aW9uSWYoVG9rZW4gKnRva2VuKQogewotICAgIGFzc2VydCgoZ2V0RGlyZWN0aXZlKHRva2VuKSA9
PSBESVJFQ1RJVkVfSUYpIHx8Ci0gICAgICAgICAgIChnZXREaXJlY3RpdmUodG9rZW4pID09IERJ
UkVDVElWRV9FTElGKSk7CisgICAgQVNTRVJUKChnZXREaXJlY3RpdmUodG9rZW4pID09IERJUkVD
VElWRV9JRikgfHwgKGdldERpcmVjdGl2ZSh0b2tlbikgPT0gRElSRUNUSVZFX0VMSUYpKTsKIAot
ICAgIE1hY3JvRXhwYW5kZXIgbWFjcm9FeHBhbmRlcihtVG9rZW5pemVyLCBtTWFjcm9TZXQsIG1E
aWFnbm9zdGljcywgdHJ1ZSk7CisgICAgRGVmaW5lZFBhcnNlciBkZWZpbmVkUGFyc2VyKG1Ub2tl
bml6ZXIsIG1NYWNyb1NldCwgbURpYWdub3N0aWNzKTsKKyAgICBNYWNyb0V4cGFuZGVyIG1hY3Jv
RXhwYW5kZXIoJmRlZmluZWRQYXJzZXIsIG1NYWNyb1NldCwgbURpYWdub3N0aWNzKTsKICAgICBF
eHByZXNzaW9uUGFyc2VyIGV4cHJlc3Npb25QYXJzZXIoJm1hY3JvRXhwYW5kZXIsIG1EaWFnbm9z
dGljcyk7CiAKICAgICBpbnQgZXhwcmVzc2lvbiA9IDA7CkBAIC05MDksOCArOTc2LDcgQEAgaW50
IERpcmVjdGl2ZVBhcnNlcjo6cGFyc2VFeHByZXNzaW9uSWYoVAogCiBpbnQgRGlyZWN0aXZlUGFy
c2VyOjpwYXJzZUV4cHJlc3Npb25JZmRlZihUb2tlbiAqdG9rZW4pCiB7Ci0gICAgYXNzZXJ0KChn
ZXREaXJlY3RpdmUodG9rZW4pID09IERJUkVDVElWRV9JRkRFRikgfHwKLSAgICAgICAgICAgKGdl
dERpcmVjdGl2ZSh0b2tlbikgPT0gRElSRUNUSVZFX0lGTkRFRikpOworICAgIEFTU0VSVCgoZ2V0
RGlyZWN0aXZlKHRva2VuKSA9PSBESVJFQ1RJVkVfSUZERUYpIHx8IChnZXREaXJlY3RpdmUodG9r
ZW4pID09IERJUkVDVElWRV9JRk5ERUYpKTsKIAogICAgIG1Ub2tlbml6ZXItPmxleCh0b2tlbik7
CiAgICAgaWYgKHRva2VuLT50eXBlICE9IFRva2VuOjpJREVOVElGSUVSKQpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9EaXJlY3RpdmVQYXJz
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
cHJlcHJvY2Vzc29yL0RpcmVjdGl2ZVBhcnNlci5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpcmVjdGl2ZVBh
cnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03LDEwICs3LDkgQEAKICNpZm5kZWYgQ09NUElMRVJf
UFJFUFJPQ0VTU09SX0RJUkVDVElWRVBBUlNFUl9IXwogI2RlZmluZSBDT01QSUxFUl9QUkVQUk9D
RVNTT1JfRElSRUNUSVZFUEFSU0VSX0hfCiAKLSNpbmNsdWRlICJMZXhlci5oIgotI2luY2x1ZGUg
Ik1hY3JvLmgiCi0jaW5jbHVkZSAicHBfdXRpbHMuaCIKLSNpbmNsdWRlICJTb3VyY2VMb2NhdGlv
bi5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9MZXhlci5oIgorI2luY2x1ZGUg
ImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9NYWNyby5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3ByZXBy
b2Nlc3Nvci9Tb3VyY2VMb2NhdGlvbi5oIgogCiBuYW1lc3BhY2UgcHAKIHsKQEAgLTMwLDcgKzI5
LDYgQEAgY2xhc3MgRGlyZWN0aXZlUGFyc2VyIDogcHVibGljIExleGVyCiAgICAgdm9pZCBsZXgo
VG9rZW4gKnRva2VuKSBvdmVycmlkZTsKIAogICBwcml2YXRlOgotICAgIFBQX0RJU0FMTE9XX0NP
UFlfQU5EX0FTU0lHTihEaXJlY3RpdmVQYXJzZXIpOwogCiAgICAgdm9pZCBwYXJzZURpcmVjdGl2
ZShUb2tlbiAqdG9rZW4pOwogICAgIHZvaWQgcGFyc2VEZWZpbmUoVG9rZW4gKnRva2VuKTsKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhw
cmVzc2lvblBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLmNwcAkocmV2aXNpb24g
MjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nl
c3Nvci9FeHByZXNzaW9uUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDE3ICsxMDEs
MTUgQEAKIAogI2luY2x1ZGUgPGNhc3NlcnQ+CiAjaW5jbHVkZSA8c3N0cmVhbT4KKyNpbmNsdWRl
IDxzdGRpbnQuaD4KIAogI2luY2x1ZGUgIkRpYWdub3N0aWNzQmFzZS5oIgogI2luY2x1ZGUgIkxl
eGVyLmgiCiAjaW5jbHVkZSAiVG9rZW4uaCIKKyNpbmNsdWRlICJjb21tb24vbWF0aHV0aWwuaCIK
IAotI2lmIGRlZmluZWQoX01TQ19WRVIpCi10eXBlZGVmIF9faW50NjQgWVlTVFlQRTsKLSNlbHNl
Ci0jaW5jbHVkZSA8c3RkaW50Lmg+Ci10eXBlZGVmIGludG1heF90IFlZU1RZUEU7Ci0jZW5kaWYg
IC8vIF9NU0NfVkVSCit0eXBlZGVmIGludDMyX3QgWVlTVFlQRTsKK3R5cGVkZWYgdWludDMyX3Qg
VU5TSUdORURfVFlQRTsKIAogI2RlZmluZSBZWUVOQUJMRV9OTFMgMAogI2RlZmluZSBZWUxUWVBF
X0lTX1RSSVZJQUwgMQpAQCAtNTAyLDkgKzUwMCw5IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfdWlu
dDggeXl0cmFuc2xhdGVbXSAKICAgLyogWVlSTElORVtZWU5dIC0tIFNvdXJjZSBsaW5lIHdoZXJl
IHJ1bGUgbnVtYmVyIFlZTiB3YXMgZGVmaW5lZC4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3Vp
bnQxNiB5eXJsaW5lW10gPQogewotICAgICAgIDAsICAgMTEwLCAgIDExMCwgICAxMTcsICAgMTE4
LCAgIDEyOSwgICAxMjksICAgMTUwLCAgIDE1MCwgICAxNzEsCi0gICAgIDE3NCwgICAxNzcsICAg
MTgwLCAgIDE4MywgICAxODYsICAgMTg5LCAgIDE5MiwgICAxOTUsICAgMTk4LCAgIDIwMSwKLSAg
ICAgMjA0LCAgIDIwNywgICAyMTAsICAgMjMwLCAgIDI1MCwgICAyNTMsICAgMjU2LCAgIDI1OSwg
ICAyNjIsICAgMjY1CisgICAgICAgMCwgICAxMDgsICAgMTA4LCAgIDExNSwgICAxMTYsICAgMTI3
LCAgIDEyNywgICAxNDgsICAgMTQ4LCAgIDE2OSwKKyAgICAgMTcyLCAgIDE3NSwgICAxNzgsICAg
MTgxLCAgIDE4NCwgICAxODcsICAgMTkwLCAgIDE5MywgICAxOTYsICAgMjIxLAorICAgICAyNDYs
ICAgMjQ5LCAgIDI1MiwgICAyNzIsICAgMjk5LCAgIDMwMiwgICAzMDUsICAgMzA4LCAgIDMyMCwg
ICAzMjMKIH07CiAjZW5kaWYKIApAQCAtMTQ5Nyw3ICsxNDk1LDI5IEBAIHl5cmVkdWNlOgogICBj
YXNlIDE4OgogCiAgICAgewotICAgICAgICAoeXl2YWwpID0gKHl5dnNwWy0yXSkgPj4gKHl5dnNw
WzBdKTsKKyAgICAgICAgaWYgKCh5eXZzcFswXSkgPCAwIHx8ICh5eXZzcFswXSkgPiAzMSkKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5pc0lnbm9yaW5nRXJyb3JzKCkpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3RkOjpvc3RyaW5nc3RyZWFtIHN0cmVhbTsK
KyAgICAgICAgICAgICAgICBzdHJlYW0gPDwgKHl5dnNwWy0yXSkgPDwgIiA+PiAiIDw8ICh5eXZz
cFswXSk7CisgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgdGV4dCA9IHN0cmVhbS5zdHIoKTsK
KyAgICAgICAgICAgICAgICBjb250ZXh0LT5kaWFnbm9zdGljcy0+cmVwb3J0KHBwOjpEaWFnbm9z
dGljczo6UFBfVU5ERUZJTkVEX1NISUZULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+dG9rZW4tPmxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC5jX3N0cigpKTsKKyAgICAgICAgICAg
ICAgICAqKGNvbnRleHQtPnZhbGlkKSA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgKHl5dmFsKSA9IHN0YXRpY19jYXN0PFlZU1RZUEU+KDApOworICAgICAgICB9CisgICAgICAg
IGVsc2UgaWYgKCh5eXZzcFstMl0pIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gTG9n
aWNhbCBzaGlmdCByaWdodC4KKyAgICAgICAgICAgICh5eXZhbCkgPSBzdGF0aWNfY2FzdDxZWVNU
WVBFPihzdGF0aWNfY2FzdDxVTlNJR05FRF9UWVBFPigoeXl2c3BbLTJdKSkgPj4gKHl5dnNwWzBd
KSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICAoeXl2
YWwpID0gKHl5dnNwWy0yXSkgPj4gKHl5dnNwWzBdKTsKKyAgICAgICAgfQogICAgIH0KIAogICAg
IGJyZWFrOwpAQCAtMTUwNSw3ICsxNTI1LDI5IEBAIHl5cmVkdWNlOgogICBjYXNlIDE5OgogCiAg
ICAgewotICAgICAgICAoeXl2YWwpID0gKHl5dnNwWy0yXSkgPDwgKHl5dnNwWzBdKTsKKyAgICAg
ICAgaWYgKCh5eXZzcFswXSkgPCAwIHx8ICh5eXZzcFswXSkgPiAzMSkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKCFjb250ZXh0LT5pc0lnbm9yaW5nRXJyb3JzKCkpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgc3RkOjpvc3RyaW5nc3RyZWFtIHN0cmVhbTsKKyAgICAgICAgICAg
ICAgICBzdHJlYW0gPDwgKHl5dnNwWy0yXSkgPDwgIiA8PCAiIDw8ICh5eXZzcFswXSk7CisgICAg
ICAgICAgICAgICAgc3RkOjpzdHJpbmcgdGV4dCA9IHN0cmVhbS5zdHIoKTsKKyAgICAgICAgICAg
ICAgICBjb250ZXh0LT5kaWFnbm9zdGljcy0+cmVwb3J0KHBwOjpEaWFnbm9zdGljczo6UFBfVU5E
RUZJTkVEX1NISUZULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC0+dG9rZW4tPmxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGV4dC5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICAqKGNvbnRl
eHQtPnZhbGlkKSA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKHl5dmFsKSA9
IHN0YXRpY19jYXN0PFlZU1RZUEU+KDApOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCh5
eXZzcFstMl0pIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gTG9naWNhbCBzaGlmdCBs
ZWZ0LgorICAgICAgICAgICAgKHl5dmFsKSA9IHN0YXRpY19jYXN0PFlZU1RZUEU+KHN0YXRpY19j
YXN0PFVOU0lHTkVEX1RZUEU+KCh5eXZzcFstMl0pKSA8PCAoeXl2c3BbMF0pKTsKKyAgICAgICAg
fQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgICh5eXZhbCkgPSAoeXl2c3Bb
LTJdKSA8PCAoeXl2c3BbMF0pOworICAgICAgICB9CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0x
NTEzLDcgKzE1NTUsNyBAQCB5eXJlZHVjZToKICAgY2FzZSAyMDoKIAogICAgIHsKLSAgICAgICAg
KHl5dmFsKSA9ICh5eXZzcFstMl0pIC0gKHl5dnNwWzBdKTsKKyAgICAgICAgKHl5dmFsKSA9IGds
OjpXcmFwcGluZ0RpZmY8WVlTVFlQRT4oKHl5dnNwWy0yXSksICh5eXZzcFswXSkpOwogICAgIH0K
IAogICAgIGJyZWFrOwpAQCAtMTUyMSw3ICsxNTYzLDcgQEAgeXlyZWR1Y2U6CiAgIGNhc2UgMjE6
CiAKICAgICB7Ci0gICAgICAgICh5eXZhbCkgPSAoeXl2c3BbLTJdKSArICh5eXZzcFswXSk7Cisg
ICAgICAgICh5eXZhbCkgPSBnbDo6V3JhcHBpbmdTdW08WVlTVFlQRT4oKHl5dnNwWy0yXSksICh5
eXZzcFswXSkpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMTU2OCw2ICsxNjEwLDEzIEBAIHl5
cmVkdWNlOgogICAgICAgICAgICAgfQogICAgICAgICAgICAgKHl5dmFsKSA9IHN0YXRpY19jYXN0
PFlZU1RZUEU+KDApOwogICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCh5eXZzcFstMl0pID09
IHN0ZDo6bnVtZXJpY19saW1pdHM8WVlTVFlQRT46Om1pbigpICYmICh5eXZzcFswXSkgPT0gLTEp
CisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIENoZWNrIGZvciB0aGUgc3BlY2lhbCBjYXNlIHdo
ZXJlIHRoZSBtaW5pbXVtIHJlcHJlc2VudGFibGUgbnVtYmVyIGlzCisgICAgICAgICAgICAvLyBk
aXZpZGVkIGJ5IC0xLiBJZiBsZWZ0IGFsb25lIHRoaXMgbGVhZHMgdG8gaW50ZWdlciBvdmVyZmxv
dyBpbiBDKyssIHdoaWNoCisgICAgICAgICAgICAvLyBoYXMgdW5kZWZpbmVkIHJlc3VsdHMuCisg
ICAgICAgICAgICAoeXl2YWwpID0gc3RkOjpudW1lcmljX2xpbWl0czxZWVNUWVBFPjo6bWF4KCk7
CisgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CiAgICAgICAgICAgICAoeXl2YWwp
ID0gKHl5dnNwWy0yXSkgLyAoeXl2c3BbMF0pOwpAQCAtMTU3OSw3ICsxNjI4LDcgQEAgeXlyZWR1
Y2U6CiAgIGNhc2UgMjQ6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbCkgPSAoeXl2c3BbLTJdKSAq
ICh5eXZzcFswXSk7CisgICAgICAgICh5eXZhbCkgPSBnbDo6V3JhcHBpbmdNdWwoKHl5dnNwWy0y
XSksICh5eXZzcFswXSkpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMTYwMyw3ICsxNjUyLDE2
IEBAIHl5cmVkdWNlOgogICBjYXNlIDI3OgogCiAgICAgewotICAgICAgICAoeXl2YWwpID0gLSAo
eXl2c3BbMF0pOworICAgICAgICAvLyBDaGVjayBmb3IgbmVnYXRpb24gb2YgbWluaW11bSByZXBy
ZXNlbnRhYmxlIGludGVnZXIgdG8gcHJldmVudCB1bmRlZmluZWQgc2lnbmVkIGludAorICAgICAg
ICAvLyBvdmVyZmxvdy4KKyAgICAgICAgaWYgKCh5eXZzcFswXSkgPT0gc3RkOjpudW1lcmljX2xp
bWl0czxZWVNUWVBFPjo6bWluKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgICh5eXZhbCkgPSBz
dGQ6Om51bWVyaWNfbGltaXRzPFlZU1RZUEU+OjptaW4oKTsKKyAgICAgICAgfQorICAgICAgICBl
bHNlCisgICAgICAgIHsKKyAgICAgICAgICAgICh5eXZhbCkgPSAtKHl5dnNwWzBdKTsKKyAgICAg
ICAgfQogICAgIH0KIAogICAgIGJyZWFrOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHBy
ZXNzaW9uUGFyc2VyLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lvblBhcnNlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC03LDggKzcsOCBAQAogI2lmbmRlZiBDT01QSUxFUl9QUkVQUk9DRVNTT1JfRVhQ
UkVTU0lPTlBBUlNFUl9IXwogI2RlZmluZSBDT01QSUxFUl9QUkVQUk9DRVNTT1JfRVhQUkVTU0lP
TlBBUlNFUl9IXwogCi0jaW5jbHVkZSAiRGlhZ25vc3RpY3NCYXNlLmgiCi0jaW5jbHVkZSAicHBf
dXRpbHMuaCIKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorI2luY2x1ZGUgImNvbXBp
bGVyL3ByZXByb2Nlc3Nvci9EaWFnbm9zdGljc0Jhc2UuaCIKIAogbmFtZXNwYWNlIHBwCiB7CkBA
IC0xNiw3ICsxNiw3IEBAIG5hbWVzcGFjZSBwcAogY2xhc3MgTGV4ZXI7CiBzdHJ1Y3QgVG9rZW47
CiAKLWNsYXNzIEV4cHJlc3Npb25QYXJzZXIKK2NsYXNzIEV4cHJlc3Npb25QYXJzZXIgOiBhbmds
ZTo6Tm9uQ29weWFibGUKIHsKICAgcHVibGljOgogICAgIHN0cnVjdCBFcnJvclNldHRpbmdzCkBA
IC0zNCw4ICszNCw2IEBAIGNsYXNzIEV4cHJlc3Npb25QYXJzZXIKICAgICAgICAgICAgICAgIGJv
b2wgKnZhbGlkKTsKIAogICBwcml2YXRlOgotICAgIFBQX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
TihFeHByZXNzaW9uUGFyc2VyKTsKLQogICAgIExleGVyICptTGV4ZXI7CiAgICAgRGlhZ25vc3Rp
Y3MgKm1EaWFnbm9zdGljczsKIH07CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25QYXJzZXIueQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Np
b25QYXJzZXIueQkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLnkJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDE3ICs0MSwxNSBAQCBXSElDSCBHRU5FUkFURVMgVEhFIEdMU0wgRVMgcHJlcHJv
Y2Vzc29yCiAKICNpbmNsdWRlIDxjYXNzZXJ0PgogI2luY2x1ZGUgPHNzdHJlYW0+CisjaW5jbHVk
ZSA8c3RkaW50Lmg+CiAKICNpbmNsdWRlICJEaWFnbm9zdGljc0Jhc2UuaCIKICNpbmNsdWRlICJM
ZXhlci5oIgogI2luY2x1ZGUgIlRva2VuLmgiCisjaW5jbHVkZSAiY29tbW9uL21hdGh1dGlsLmgi
CiAKLSNpZiBkZWZpbmVkKF9NU0NfVkVSKQotdHlwZWRlZiBfX2ludDY0IFlZU1RZUEU7Ci0jZWxz
ZQotI2luY2x1ZGUgPHN0ZGludC5oPgotdHlwZWRlZiBpbnRtYXhfdCBZWVNUWVBFOwotI2VuZGlm
ICAvLyBfTVNDX1ZFUgordHlwZWRlZiBpbnQzMl90IFlZU1RZUEU7Cit0eXBlZGVmIHVpbnQzMl90
IFVOU0lHTkVEX1RZUEU7CiAKICNkZWZpbmUgWVlFTkFCTEVfTkxTIDAKICNkZWZpbmUgWVlMVFlQ
RV9JU19UUklWSUFMIDEKQEAgLTE5NiwxNiArMTk0LDYwIEBAIGV4cHJlc3Npb24KICAgICAgICAg
JCQgPSAkMSA8ICQzOwogICAgIH0KICAgICB8IGV4cHJlc3Npb24gVE9LX09QX1JJR0hUIGV4cHJl
c3Npb24gewotICAgICAgICAkJCA9ICQxID4+ICQzOworICAgICAgICBpZiAoJDMgPCAwIHx8ICQz
ID4gMzEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghY29udGV4dC0+aXNJZ25vcmluZ0Vy
cm9ycygpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN0ZDo6b3N0cmluZ3N0cmVh
bSBzdHJlYW07CisgICAgICAgICAgICAgICAgc3RyZWFtIDw8ICQxIDw8ICIgPj4gIiA8PCAkMzsK
KyAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyB0ZXh0ID0gc3RyZWFtLnN0cigpOworICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmRpYWdub3N0aWNzLT5yZXBvcnQocHA6OkRpYWdub3N0aWNzOjpQ
UF9VTkRFRklORURfU0hJRlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT50b2tlbi0+bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LmNfc3RyKCkpOworICAgICAgICAgICAgICAgICoo
Y29udGV4dC0+dmFsaWQpID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAkJCA9
IHN0YXRpY19jYXN0PFlZU1RZUEU+KDApOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCQx
IDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gTG9naWNhbCBzaGlmdCByaWdodC4KKyAg
ICAgICAgICAgICQkID0gc3RhdGljX2Nhc3Q8WVlTVFlQRT4oc3RhdGljX2Nhc3Q8VU5TSUdORURf
VFlQRT4oJDEpID4+ICQzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAg
ICAgICAgICAgICQkID0gJDEgPj4gJDM7CisgICAgICAgIH0KICAgICB9CiAgICAgfCBleHByZXNz
aW9uIFRPS19PUF9MRUZUIGV4cHJlc3Npb24gewotICAgICAgICAkJCA9ICQxIDw8ICQzOworICAg
ICAgICBpZiAoJDMgPCAwIHx8ICQzID4gMzEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgh
Y29udGV4dC0+aXNJZ25vcmluZ0Vycm9ycygpKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBzdHJlYW07CisgICAgICAgICAgICAgICAgc3RyZWFtIDw8
ICQxIDw8ICIgPDwgIiA8PCAkMzsKKyAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyB0ZXh0ID0g
c3RyZWFtLnN0cigpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmRpYWdub3N0aWNzLT5yZXBv
cnQocHA6OkRpYWdub3N0aWNzOjpQUF9VTkRFRklORURfU0hJRlQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT50b2tlbi0+bG9jYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LmNfc3RyKCkp
OworICAgICAgICAgICAgICAgICooY29udGV4dC0+dmFsaWQpID0gZmFsc2U7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAkJCA9IHN0YXRpY19jYXN0PFlZU1RZUEU+KDApOworICAgICAgICB9
CisgICAgICAgIGVsc2UgaWYgKCQxIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gTG9n
aWNhbCBzaGlmdCBsZWZ0LgorICAgICAgICAgICAgJCQgPSBzdGF0aWNfY2FzdDxZWVNUWVBFPihz
dGF0aWNfY2FzdDxVTlNJR05FRF9UWVBFPigkMSkgPDwgJDMpOworICAgICAgICB9CisgICAgICAg
IGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgJCQgPSAkMSA8PCAkMzsKKyAgICAgICAgfQog
ICAgIH0KICAgICB8IGV4cHJlc3Npb24gJy0nIGV4cHJlc3Npb24gewotICAgICAgICAkJCA9ICQx
IC0gJDM7CisgICAgICAgICQkID0gZ2w6OldyYXBwaW5nRGlmZjxZWVNUWVBFPigkMSwgJDMpOwog
ICAgIH0KICAgICB8IGV4cHJlc3Npb24gJysnIGV4cHJlc3Npb24gewotICAgICAgICAkJCA9ICQx
ICsgJDM7CisgICAgICAgICQkID0gZ2w6OldyYXBwaW5nU3VtPFlZU1RZUEU+KCQxLCAkMyk7CiAg
ICAgfQogICAgIHwgZXhwcmVzc2lvbiAnJScgZXhwcmVzc2lvbiB7CiAgICAgICAgIGlmICgkMyA9
PSAwKQpAQCAtMjQyLDEzICsyODQsMjAgQEAgZXhwcmVzc2lvbgogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgJCQgPSBzdGF0aWNfY2FzdDxZWVNUWVBFPigwKTsKICAgICAgICAgfQorICAgICAg
ICBlbHNlIGlmICgkMSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPFlZU1RZUEU+OjptaW4oKSAmJiAk
MyA9PSAtMSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIHRoZSBzcGVjaWFs
IGNhc2Ugd2hlcmUgdGhlIG1pbmltdW0gcmVwcmVzZW50YWJsZSBudW1iZXIgaXMKKyAgICAgICAg
ICAgIC8vIGRpdmlkZWQgYnkgLTEuIElmIGxlZnQgYWxvbmUgdGhpcyBsZWFkcyB0byBpbnRlZ2Vy
IG92ZXJmbG93IGluIEMrKywgd2hpY2gKKyAgICAgICAgICAgIC8vIGhhcyB1bmRlZmluZWQgcmVz
dWx0cy4KKyAgICAgICAgICAgICQkID0gc3RkOjpudW1lcmljX2xpbWl0czxZWVNUWVBFPjo6bWF4
KCk7CisgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CiAgICAgICAgICAgICAkJCA9
ICQxIC8gJDM7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBleHByZXNzaW9uICcqJyBleHByZXNz
aW9uIHsKLSAgICAgICAgJCQgPSAkMSAqICQzOworICAgICAgICAkJCA9IGdsOjpXcmFwcGluZ011
bCgkMSwgJDMpOwogICAgIH0KICAgICB8ICchJyBleHByZXNzaW9uICVwcmVjIFRPS19VTkFSWSB7
CiAgICAgICAgICQkID0gISAkMjsKQEAgLTI1Nyw3ICszMDYsMTYgQEAgZXhwcmVzc2lvbgogICAg
ICAgICAkJCA9IH4gJDI7CiAgICAgfQogICAgIHwgJy0nIGV4cHJlc3Npb24gJXByZWMgVE9LX1VO
QVJZIHsKLSAgICAgICAgJCQgPSAtICQyOworICAgICAgICAvLyBDaGVjayBmb3IgbmVnYXRpb24g
b2YgbWluaW11bSByZXByZXNlbnRhYmxlIGludGVnZXIgdG8gcHJldmVudCB1bmRlZmluZWQgc2ln
bmVkIGludAorICAgICAgICAvLyBvdmVyZmxvdy4KKyAgICAgICAgaWYgKCQyID09IHN0ZDo6bnVt
ZXJpY19saW1pdHM8WVlTVFlQRT46Om1pbigpKQorICAgICAgICB7CisgICAgICAgICAgICAkJCA9
IHN0ZDo6bnVtZXJpY19saW1pdHM8WVlTVFlQRT46Om1pbigpOworICAgICAgICB9CisgICAgICAg
IGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgJCQgPSAtJDI7CisgICAgICAgIH0KICAgICB9
CiAgICAgfCAnKycgZXhwcmVzc2lvbiAlcHJlYyBUT0tfVU5BUlkgewogICAgICAgICAkJCA9ICsg
JDI7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vz
c29yL0lucHV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL0lucHV0LmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9JbnB1dC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQsMTIgKzQsMTMgQEAKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCiAvLwogCi0jaW5jbHVkZSAiSW5wdXQuaCIKKyNpbmNsdWRlICJjb21waWxlci9wcmVw
cm9jZXNzb3IvSW5wdXQuaCIKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxjYXNz
ZXJ0PgogI2luY2x1ZGUgPGNzdHJpbmc+CiAKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKwog
bmFtZXNwYWNlIHBwCiB7CiAKQEAgLTMyLDcgKzMzLDcgQEAgSW5wdXQ6OklucHV0KHNpemVfdCBj
b3VudCwgY29uc3QgY2hhciAqYwogY29uc3QgY2hhciAqSW5wdXQ6OnNraXBDaGFyKCkKIHsKICAg
ICAvLyBUaGlzIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZXJlIGlzIGEg
Y2hhcmFjdGVyIHRvIHNraXAuCi0gICAgYXNzZXJ0KG1SZWFkTG9jLmNJbmRleCA8IG1MZW5ndGhb
bVJlYWRMb2Muc0luZGV4XSk7CisgICAgQVNTRVJUKG1SZWFkTG9jLmNJbmRleCA8IG1MZW5ndGhb
bVJlYWRMb2Muc0luZGV4XSk7CiAgICAgKyttUmVhZExvYy5jSW5kZXg7CiAgICAgaWYgKG1SZWFk
TG9jLmNJbmRleCA9PSBtTGVuZ3RoW21SZWFkTG9jLnNJbmRleF0pCiAgICAgewpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9JbnB1dC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9j
ZXNzb3IvSW5wdXQuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9JbnB1dC5oCSh3b3JraW5nIGNvcHkpCkBAIC03
LDcgKzcsNyBAQAogI2lmbmRlZiBDT01QSUxFUl9QUkVQUk9DRVNTT1JfSU5QVVRfSF8KICNkZWZp
bmUgQ09NUElMRVJfUFJFUFJPQ0VTU09SX0lOUFVUX0hfCiAKLSNpbmNsdWRlIDxzdGRkZWYuaD4K
KyNpbmNsdWRlIDxjc3RkZGVmPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogbmFtZXNwYWNlIHBwCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0xl
eGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvcHJlcHJvY2Vzc29yL0xleGVyLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9MZXhlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQsNyArNCw3IEBACiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgog
Ly8KIAotI2luY2x1ZGUgIkxleGVyLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29y
L0xleGVyLmgiCiAKIG5hbWVzcGFjZSBwcAogewpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9MZXhlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvTGV4ZXIuaAkocmV2
aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci9MZXhlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03LDEyICs3LDE0IEBACiAjaWZu
ZGVmIENPTVBJTEVSX1BSRVBST0NFU1NPUl9MRVhFUl9IXwogI2RlZmluZSBDT01QSUxFUl9QUkVQ
Uk9DRVNTT1JfTEVYRVJfSF8KIAorI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisKIG5h
bWVzcGFjZSBwcAogewogCiBzdHJ1Y3QgVG9rZW47CiAKLWNsYXNzIExleGVyCitjbGFzcyBMZXhl
ciA6IGFuZ2xlOjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6CiAgICAgdmlydHVhbCB+TGV4ZXIo
KTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNz
b3IvTWFjcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9wcmVwcm9jZXNzb3IvTWFjcm8uY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3JvLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNCwxMSArNCwxMCBAQAogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KIC8vCiAKLSNpbmNsdWRlICJNYWNyby5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3ByZXBy
b2Nlc3Nvci9NYWNyby5oIgogCi0jaW5jbHVkZSA8c3N0cmVhbT4KLQotI2luY2x1ZGUgIlRva2Vu
LmgiCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJjb21waWxlci9w
cmVwcm9jZXNzb3IvVG9rZW4uaCIKIAogbmFtZXNwYWNlIHBwCiB7CkBAIC0yMywxMiArMjIsOSBA
QCBib29sIE1hY3JvOjplcXVhbHMoY29uc3QgTWFjcm8gJm90aGVyKSBjCiAKIHZvaWQgUHJlZGVm
aW5lTWFjcm8oTWFjcm9TZXQgKm1hY3JvU2V0LCBjb25zdCBjaGFyICpuYW1lLCBpbnQgdmFsdWUp
CiB7Ci0gICAgc3RkOjpvc3RyaW5nc3RyZWFtIHN0cmVhbTsKLSAgICBzdHJlYW0gPDwgdmFsdWU7
Ci0KICAgICBUb2tlbiB0b2tlbjsKICAgICB0b2tlbi50eXBlID0gVG9rZW46OkNPTlNUX0lOVDsK
LSAgICB0b2tlbi50ZXh0ID0gc3RyZWFtLnN0cigpOworICAgIHRva2VuLnRleHQgPSBUb1N0cmlu
Zyh2YWx1ZSk7CiAKICAgICBNYWNybyBtYWNybzsKICAgICBtYWNyby5wcmVkZWZpbmVkID0gdHJ1
ZTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNz
b3IvTWFjcm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvcHJlcHJvY2Vzc29yL01hY3JvLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvTWFjcm8uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsMTYgKzI2LDEyIEBAIHN0cnVjdCBNYWNybwogICAgIHR5cGVkZWYgc3Rk
Ojp2ZWN0b3I8c3RkOjpzdHJpbmc+IFBhcmFtZXRlcnM7CiAgICAgdHlwZWRlZiBzdGQ6OnZlY3Rv
cjxUb2tlbj4gUmVwbGFjZW1lbnRzOwogCi0gICAgTWFjcm8oKQotICAgICAgICA6IHByZWRlZmlu
ZWQoZmFsc2UpLAotICAgICAgICAgIGRpc2FibGVkKGZhbHNlKSwKLSAgICAgICAgICB0eXBlKGtU
eXBlT2JqKQotICAgIHsKLSAgICB9CisgICAgTWFjcm8oKSA6IHByZWRlZmluZWQoZmFsc2UpLCBk
aXNhYmxlZChmYWxzZSksIGV4cGFuc2lvbkNvdW50KDApLCB0eXBlKGtUeXBlT2JqKSB7fQogICAg
IGJvb2wgZXF1YWxzKGNvbnN0IE1hY3JvICZvdGhlcikgY29uc3Q7CiAKICAgICBib29sIHByZWRl
ZmluZWQ7CiAgICAgbXV0YWJsZSBib29sIGRpc2FibGVkOworICAgIG11dGFibGUgaW50IGV4cGFu
c2lvbkNvdW50OwogCiAgICAgVHlwZSB0eXBlOwogICAgIHN0ZDo6c3RyaW5nIG5hbWU7CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3Jv
RXhwYW5kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9wcmVwcm9jZXNzb3IvTWFjcm9FeHBhbmRlci5jcHAJKHJldmlzaW9uIDIwNzgwNCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvTWFj
cm9FeHBhbmRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQsMTcgKzQsMjIgQEAKIC8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwogCi0jaW5jbHVkZSAiTWFjcm9FeHBhbmRlci5oIgor
I2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9NYWNyb0V4cGFuZGVyLmgiCiAKICNpbmNs
dWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8c3N0cmVhbT4KIAotI2luY2x1ZGUgIkRpYWdub3N0
aWNzQmFzZS5oIgotI2luY2x1ZGUgIlRva2VuLmgiCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgi
CisjaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpYWdub3N0aWNzQmFzZS5oIgorI2lu
Y2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5oIgogCiBuYW1lc3BhY2UgcHAKIHsK
IAorbmFtZXNwYWNlCit7CisKK2NvbnN0IHNpemVfdCBrTWF4Q29udGV4dFRva2VucyA9IDEwMDAw
OworCiBjbGFzcyBUb2tlbkxleGVyIDogcHVibGljIExleGVyCiB7CiAgcHVibGljOgpAQCAtNDAs
MjUgKzQ1LDIyIEBAIGNsYXNzIFRva2VuTGV4ZXIgOiBwdWJsaWMgTGV4ZXIKICAgICB9CiAKICBw
cml2YXRlOgotICAgIFBQX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihUb2tlbkxleGVyKTsKLQog
ICAgIFRva2VuVmVjdG9yIG1Ub2tlbnM7CiAgICAgVG9rZW5WZWN0b3I6OmNvbnN0X2l0ZXJhdG9y
IG1JdGVyOwogfTsKIAotTWFjcm9FeHBhbmRlcjo6TWFjcm9FeHBhbmRlcihMZXhlciAqbGV4ZXIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvU2V0ICptYWNyb1NldCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRGlhZ25vc3RpY3MgKmRpYWdub3N0aWNzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIHBhcnNlRGVmaW5lZCkKLSAgICA6IG1MZXhlcihs
ZXhlciksIG1NYWNyb1NldChtYWNyb1NldCksIG1EaWFnbm9zdGljcyhkaWFnbm9zdGljcyksIG1Q
YXJzZURlZmluZWQocGFyc2VEZWZpbmVkKQorfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCitN
YWNyb0V4cGFuZGVyOjpNYWNyb0V4cGFuZGVyKExleGVyICpsZXhlciwgTWFjcm9TZXQgKm1hY3Jv
U2V0LCBEaWFnbm9zdGljcyAqZGlhZ25vc3RpY3MpCisgICAgOiBtTGV4ZXIobGV4ZXIpLCBtTWFj
cm9TZXQobWFjcm9TZXQpLCBtRGlhZ25vc3RpY3MoZGlhZ25vc3RpY3MpLCBtVG90YWxUb2tlbnNJ
bkNvbnRleHRzKDApCiB7CiB9CiAKIE1hY3JvRXhwYW5kZXI6On5NYWNyb0V4cGFuZGVyKCkKIHsK
LSAgICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgbUNvbnRleHRTdGFjay5zaXplKCk7ICsr
aSkKKyAgICBmb3IgKE1hY3JvQ29udGV4dCAqY29udGV4dCA6IG1Db250ZXh0U3RhY2spCiAgICAg
ewotICAgICAgICBkZWxldGUgbUNvbnRleHRTdGFja1tpXTsKKyAgICAgICAgZGVsZXRlIGNvbnRl
eHQ7CiAgICAgfQogfQogCkBAIC02Niw1NCArNjgsMTEgQEAgdm9pZCBNYWNyb0V4cGFuZGVyOjps
ZXgoVG9rZW4gKnRva2VuKQogewogICAgIHdoaWxlICh0cnVlKQogICAgIHsKLSAgICAgICAgY29u
c3QgY2hhciBrRGVmaW5lZFtdID0gImRlZmluZWQiOwotCiAgICAgICAgIGdldFRva2VuKHRva2Vu
KTsKIAogICAgICAgICBpZiAodG9rZW4tPnR5cGUgIT0gVG9rZW46OklERU5USUZJRVIpCiAgICAg
ICAgICAgICBicmVhazsKIAotICAgICAgICAvLyBEZWZpbmVkIG9wZXJhdG9yIGlzIHBhcnNlZCBo
ZXJlIHNpbmNlIGl0IG1heSBiZSBnZW5lcmF0ZWQgYnkgbWFjcm8gZXhwYW5zaW9uLgotICAgICAg
ICAvLyBEZWZpbmVkIG9wZXJhdG9yIHByb2R1Y2VkIGJ5IG1hY3JvIGV4cGFuc2lvbiBoYXMgdW5k
ZWZpbmVkIGJlaGF2aW9yIGFjY29yZGluZyB0byBDKysKLSAgICAgICAgLy8gc3BlYywgd2hpY2gg
dGhlIEdMU0wgc3BlYyByZWZlcmVuY2VzIChzZWUgQysrMTQgZHJhZnQgc3BlYyBzZWN0aW9uIDE2
LjEuNCksIGJ1dCB0aGlzCi0gICAgICAgIC8vIGJlaGF2aW9yIGlzIG5lZWRlZCBmb3IgcGFzc2lu
ZyBkRVFQIHRlc3RzLCB3aGljaCBlbmZvcmNlIHN0cmljdGVyIGNvbXBhdGliaWxpdHkgYmV0d2Vl
bgotICAgICAgICAvLyBpbXBsZW1lbnRhdGlvbnMuCi0gICAgICAgIGlmIChtUGFyc2VEZWZpbmVk
ICYmIHRva2VuLT50ZXh0ID09IGtEZWZpbmVkKQotICAgICAgICB7Ci0gICAgICAgICAgICBib29s
IHBhcmVuID0gZmFsc2U7Ci0gICAgICAgICAgICBnZXRUb2tlbih0b2tlbik7Ci0gICAgICAgICAg
ICBpZiAodG9rZW4tPnR5cGUgPT0gJygnKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IHBhcmVuID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBnZXRUb2tlbih0b2tlbik7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBpZiAodG9rZW4tPnR5cGUgIT0gVG9rZW46OklERU5USUZJRVIp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbURpYWdub3N0aWNzLT5yZXBvcnQoRGlh
Z25vc3RpY3M6OlBQX1VORVhQRUNURURfVE9LRU4sIHRva2VuLT5sb2NhdGlvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi0+dGV4dCk7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBhdXRvIGl0ZXIgICAgICAgICAg
ICAgID0gbU1hY3JvU2V0LT5maW5kKHRva2VuLT50ZXh0KTsKLSAgICAgICAgICAgIHN0ZDo6c3Ry
aW5nIGV4cHJlc3Npb24gPSBpdGVyICE9IG1NYWNyb1NldC0+ZW5kKCkgPyAiMSIgOiAiMCI7Ci0K
LSAgICAgICAgICAgIGlmIChwYXJlbikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBn
ZXRUb2tlbih0b2tlbik7Ci0gICAgICAgICAgICAgICAgaWYgKHRva2VuLT50eXBlICE9ICcpJykK
LSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIG1EaWFnbm9zdGljcy0+cmVw
b3J0KERpYWdub3N0aWNzOjpQUF9VTkVYUEVDVEVEX1RPS0VOLCB0b2tlbi0+bG9jYXRpb24sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT50ZXh0KTsKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAvLyBXZSBoYXZlIGEgdmFsaWQgZGVmaW5lZCBvcGVyYXRvci4KLSAg
ICAgICAgICAgIC8vIENvbnZlcnQgdGhlIGN1cnJlbnQgdG9rZW4gaW50byBhIENPTlNUX0lOVCB0
b2tlbi4KLSAgICAgICAgICAgIHRva2VuLT50eXBlID0gVG9rZW46OkNPTlNUX0lOVDsKLSAgICAg
ICAgICAgIHRva2VuLT50ZXh0ID0gZXhwcmVzc2lvbjsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0KICAgICAgICAgaWYgKHRva2VuLT5leHBhbnNpb25EaXNhYmxlZCgpKQogICAgICAg
ICAgICAgYnJlYWs7CiAKQEAgLTE2MCw2ICsxMTksNyBAQCB2b2lkIE1hY3JvRXhwYW5kZXI6Omdl
dFRva2VuKFRva2VuICp0b2tlCiAgICAgfQogICAgIGVsc2UKICAgICB7CisgICAgICAgIEFTU0VS
VChtVG90YWxUb2tlbnNJbkNvbnRleHRzID09IDApOwogICAgICAgICBtTGV4ZXItPmxleCh0b2tl
bik7CiAgICAgfQogfQpAQCAtMTcwLDExICsxMzAsMTEgQEAgdm9pZCBNYWNyb0V4cGFuZGVyOjp1
bmdldFRva2VuKGNvbnN0IFRvawogICAgIHsKICAgICAgICAgTWFjcm9Db250ZXh0ICpjb250ZXh0
ID0gbUNvbnRleHRTdGFjay5iYWNrKCk7CiAgICAgICAgIGNvbnRleHQtPnVuZ2V0KCk7Ci0gICAg
ICAgIGFzc2VydChjb250ZXh0LT5yZXBsYWNlbWVudHNbY29udGV4dC0+aW5kZXhdID09IHRva2Vu
KTsKKyAgICAgICAgQVNTRVJUKGNvbnRleHQtPnJlcGxhY2VtZW50c1tjb250ZXh0LT5pbmRleF0g
PT0gdG9rZW4pOwogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBhc3NlcnQoIW1SZXNl
cnZlVG9rZW4uZ2V0KCkpOworICAgICAgICBBU1NFUlQoIW1SZXNlcnZlVG9rZW4uZ2V0KCkpOwog
ICAgICAgICBtUmVzZXJ2ZVRva2VuLnJlc2V0KG5ldyBUb2tlbih0b2tlbikpOwogICAgIH0KIH0K
QEAgLTE5MiwxMCArMTUyLDEyIEBAIGJvb2wgTWFjcm9FeHBhbmRlcjo6aXNOZXh0VG9rZW5MZWZ0
UGFyZW4KIAogYm9vbCBNYWNyb0V4cGFuZGVyOjpwdXNoTWFjcm8oY29uc3QgTWFjcm8gJm1hY3Jv
LCBjb25zdCBUb2tlbiAmaWRlbnRpZmllcikKIHsKLSAgICBhc3NlcnQoIW1hY3JvLmRpc2FibGVk
KTsKLSAgICBhc3NlcnQoIWlkZW50aWZpZXIuZXhwYW5zaW9uRGlzYWJsZWQoKSk7Ci0gICAgYXNz
ZXJ0KGlkZW50aWZpZXIudHlwZSA9PSBUb2tlbjo6SURFTlRJRklFUik7Ci0gICAgYXNzZXJ0KGlk
ZW50aWZpZXIudGV4dCA9PSBtYWNyby5uYW1lKTsKKyAgICBBU1NFUlQoIW1hY3JvLmRpc2FibGVk
KTsKKyAgICBBU1NFUlQoIWlkZW50aWZpZXIuZXhwYW5zaW9uRGlzYWJsZWQoKSk7CisgICAgQVNT
RVJUKGlkZW50aWZpZXIudHlwZSA9PSBUb2tlbjo6SURFTlRJRklFUik7CisgICAgQVNTRVJUKGlk
ZW50aWZpZXIudGV4dCA9PSBtYWNyby5uYW1lKTsKKworICAgIG1hY3JvLmV4cGFuc2lvbkNvdW50
Kys7CiAKICAgICBzdGQ6OnZlY3RvcjxUb2tlbj4gcmVwbGFjZW1lbnRzOwogICAgIGlmICghZXhw
YW5kTWFjcm8obWFjcm8sIGlkZW50aWZpZXIsICZyZXBsYWNlbWVudHMpKQpAQCAtMjA4LDE5ICsx
NzAsMjMgQEAgYm9vbCBNYWNyb0V4cGFuZGVyOjpwdXNoTWFjcm8oY29uc3QgTWFjcgogICAgIGNv
bnRleHQtPm1hY3JvID0gJm1hY3JvOwogICAgIGNvbnRleHQtPnJlcGxhY2VtZW50cy5zd2FwKHJl
cGxhY2VtZW50cyk7CiAgICAgbUNvbnRleHRTdGFjay5wdXNoX2JhY2soY29udGV4dCk7CisgICAg
bVRvdGFsVG9rZW5zSW5Db250ZXh0cyArPSBjb250ZXh0LT5yZXBsYWNlbWVudHMuc2l6ZSgpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIE1hY3JvRXhwYW5kZXI6OnBvcE1hY3JvKCkKIHsK
LSAgICBhc3NlcnQoIW1Db250ZXh0U3RhY2suZW1wdHkoKSk7CisgICAgQVNTRVJUKCFtQ29udGV4
dFN0YWNrLmVtcHR5KCkpOwogCiAgICAgTWFjcm9Db250ZXh0ICpjb250ZXh0ID0gbUNvbnRleHRT
dGFjay5iYWNrKCk7CiAgICAgbUNvbnRleHRTdGFjay5wb3BfYmFjaygpOwogCi0gICAgYXNzZXJ0
KGNvbnRleHQtPmVtcHR5KCkpOwotICAgIGFzc2VydChjb250ZXh0LT5tYWNyby0+ZGlzYWJsZWQp
OworICAgIEFTU0VSVChjb250ZXh0LT5lbXB0eSgpKTsKKyAgICBBU1NFUlQoY29udGV4dC0+bWFj
cm8tPmRpc2FibGVkKTsKKyAgICBBU1NFUlQoY29udGV4dC0+bWFjcm8tPmV4cGFuc2lvbkNvdW50
ID4gMCk7CiAgICAgY29udGV4dC0+bWFjcm8tPmRpc2FibGVkID0gZmFsc2U7CisgICAgY29udGV4
dC0+bWFjcm8tPmV4cGFuc2lvbkNvdW50LS07CisgICAgbVRvdGFsVG9rZW5zSW5Db250ZXh0cyAt
PSBjb250ZXh0LT5yZXBsYWNlbWVudHMuc2l6ZSgpOwogICAgIGRlbGV0ZSBjb250ZXh0OwogfQog
CkBAIC0yNDUsMjUgKzIxMSwyMSBAQCBib29sIE1hY3JvRXhwYW5kZXI6OmV4cGFuZE1hY3JvKGNv
bnN0IE1hCiAgICAgICAgICAgICBjb25zdCBjaGFyIGtMaW5lW10gPSAiX19MSU5FX18iOwogICAg
ICAgICAgICAgY29uc3QgY2hhciBrRmlsZVtdID0gIl9fRklMRV9fIjsKIAotICAgICAgICAgICAg
YXNzZXJ0KHJlcGxhY2VtZW50cy0+c2l6ZSgpID09IDEpOworICAgICAgICAgICAgQVNTRVJUKHJl
cGxhY2VtZW50cy0+c2l6ZSgpID09IDEpOwogICAgICAgICAgICAgVG9rZW4mIHJlcGwgPSByZXBs
YWNlbWVudHMtPmZyb250KCk7CiAgICAgICAgICAgICBpZiAobWFjcm8ubmFtZSA9PSBrTGluZSkK
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gc3RyZWFt
OwotICAgICAgICAgICAgICAgIHN0cmVhbSA8PCBpZGVudGlmaWVyLmxvY2F0aW9uLmxpbmU7Ci0g
ICAgICAgICAgICAgICAgcmVwbC50ZXh0ID0gc3RyZWFtLnN0cigpOworICAgICAgICAgICAgICAg
IHJlcGwudGV4dCA9IFRvU3RyaW5nKGlkZW50aWZpZXIubG9jYXRpb24ubGluZSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChtYWNyby5uYW1lID09IGtGaWxlKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBzdHJlYW07Ci0gICAg
ICAgICAgICAgICAgc3RyZWFtIDw8IGlkZW50aWZpZXIubG9jYXRpb24uZmlsZTsKLSAgICAgICAg
ICAgICAgICByZXBsLnRleHQgPSBzdHJlYW0uc3RyKCk7CisgICAgICAgICAgICAgICAgcmVwbC50
ZXh0ID0gVG9TdHJpbmcoaWRlbnRpZmllci5sb2NhdGlvbi5maWxlKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBhc3NlcnQobWFjcm8u
dHlwZSA9PSBNYWNybzo6a1R5cGVGdW5jKTsKKyAgICAgICAgQVNTRVJUKG1hY3JvLnR5cGUgPT0g
TWFjcm86OmtUeXBlRnVuYyk7CiAgICAgICAgIHN0ZDo6dmVjdG9yPE1hY3JvQXJnPiBhcmdzOwog
ICAgICAgICBhcmdzLnJlc2VydmUobWFjcm8ucGFyYW1ldGVycy5zaXplKCkpOwogICAgICAgICBp
ZiAoIWNvbGxlY3RNYWNyb0FyZ3MobWFjcm8sIGlkZW50aWZpZXIsICZhcmdzLCAmcmVwbGFjZW1l
bnRMb2NhdGlvbikpCkBAIC0yOTQsMTAgKzI1NiwxMiBAQCBib29sIE1hY3JvRXhwYW5kZXI6OmNv
bGxlY3RNYWNyb0FyZ3MoY29uCiB7CiAgICAgVG9rZW4gdG9rZW47CiAgICAgZ2V0VG9rZW4oJnRv
a2VuKTsKLSAgICBhc3NlcnQodG9rZW4udHlwZSA9PSAnKCcpOworICAgIEFTU0VSVCh0b2tlbi50
eXBlID09ICcoJyk7CiAKICAgICBhcmdzLT5wdXNoX2JhY2soTWFjcm9BcmcoKSk7Ci0gICAgZm9y
IChpbnQgb3BlblBhcmVucyA9IDE7IG9wZW5QYXJlbnMgIT0gMDsgKQorCisgICAgaW50IG9wZW5Q
YXJlbnMgPSAxOworICAgIHdoaWxlIChvcGVuUGFyZW5zICE9IDApCiAgICAgewogICAgICAgICBn
ZXRUb2tlbigmdG9rZW4pOwogCkBAIC0zNjMsMTEgKzMyNywxMSBAQCBib29sIE1hY3JvRXhwYW5k
ZXI6OmNvbGxlY3RNYWNyb0FyZ3MoY29uCiAgICAgLy8gUHJlLWV4cGFuZCBlYWNoIGFyZ3VtZW50
IGJlZm9yZSBzdWJzdGl0dXRpb24uCiAgICAgLy8gVGhpcyBzdGVwIGV4cGFuZHMgZWFjaCBhcmd1
bWVudCBpbmRpdmlkdWFsbHkgYmVmb3JlIHRoZXkgYXJlCiAgICAgLy8gaW5zZXJ0ZWQgaW50byB0
aGUgbWFjcm8gYm9keS4KLSAgICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgYXJncy0+c2l6
ZSgpOyArK2kpCisgICAgc2l6ZV90IG51bVRva2VucyA9IDA7CisgICAgZm9yIChhdXRvICZhcmcg
OiAqYXJncykKICAgICB7Ci0gICAgICAgIE1hY3JvQXJnICZhcmcgPSBhcmdzLT5hdChpKTsKICAg
ICAgICAgVG9rZW5MZXhlciBsZXhlcigmYXJnKTsKLSAgICAgICAgTWFjcm9FeHBhbmRlciBleHBh
bmRlcigmbGV4ZXIsIG1NYWNyb1NldCwgbURpYWdub3N0aWNzLCBtUGFyc2VEZWZpbmVkKTsKKyAg
ICAgICAgTWFjcm9FeHBhbmRlciBleHBhbmRlcigmbGV4ZXIsIG1NYWNyb1NldCwgbURpYWdub3N0
aWNzKTsKIAogICAgICAgICBhcmcuY2xlYXIoKTsKICAgICAgICAgZXhwYW5kZXIubGV4KCZ0b2tl
bik7CkBAIC0zNzUsNiArMzM5LDEyIEBAIGJvb2wgTWFjcm9FeHBhbmRlcjo6Y29sbGVjdE1hY3Jv
QXJncyhjb24KICAgICAgICAgewogICAgICAgICAgICAgYXJnLnB1c2hfYmFjayh0b2tlbik7CiAg
ICAgICAgICAgICBleHBhbmRlci5sZXgoJnRva2VuKTsKKyAgICAgICAgICAgIG51bVRva2Vucysr
OworICAgICAgICAgICAgaWYgKG51bVRva2VucyArIG1Ub3RhbFRva2Vuc0luQ29udGV4dHMgPiBr
TWF4Q29udGV4dFRva2VucykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtRGlhZ25v
c3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBfT1VUX09GX01FTU9SWSwgdG9rZW4ubG9jYXRp
b24sIHRva2VuLnRleHQpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM4Niw2ICszNTYs
MTQgQEAgdm9pZCBNYWNyb0V4cGFuZGVyOjpyZXBsYWNlTWFjcm9QYXJhbXMoYwogewogICAgIGZv
ciAoc3RkOjpzaXplX3QgaSA9IDA7IGkgPCBtYWNyby5yZXBsYWNlbWVudHMuc2l6ZSgpOyArK2kp
CiAgICAgeworICAgICAgICBpZiAoIXJlcGxhY2VtZW50cy0+ZW1wdHkoKSAmJgorICAgICAgICAg
ICAgcmVwbGFjZW1lbnRzLT5zaXplKCkgKyBtVG90YWxUb2tlbnNJbkNvbnRleHRzID4ga01heENv
bnRleHRUb2tlbnMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IFRva2VuICZ0b2tlbiA9
IHJlcGxhY2VtZW50cy0+YmFjaygpOworICAgICAgICAgICAgbURpYWdub3N0aWNzLT5yZXBvcnQo
RGlhZ25vc3RpY3M6OlBQX09VVF9PRl9NRU1PUlksIHRva2VuLmxvY2F0aW9uLCB0b2tlbi50ZXh0
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIGNvbnN0IFRva2Vu
ICZyZXBsID0gbWFjcm8ucmVwbGFjZW1lbnRzW2ldOwogICAgICAgICBpZiAocmVwbC50eXBlICE9
IFRva2VuOjpJREVOVElGSUVSKQogICAgICAgICB7CkBAIC00MTgsNSArMzk2LDI1IEBAIHZvaWQg
TWFjcm9FeHBhbmRlcjo6cmVwbGFjZU1hY3JvUGFyYW1zKGMKICAgICB9CiB9CiAKK01hY3JvRXhw
YW5kZXI6Ok1hY3JvQ29udGV4dDo6TWFjcm9Db250ZXh0KCkgOiBtYWNybygwKSwgaW5kZXgoMCkK
K3sKK30KKworYm9vbCBNYWNyb0V4cGFuZGVyOjpNYWNyb0NvbnRleHQ6OmVtcHR5KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gaW5kZXggPT0gcmVwbGFjZW1lbnRzLnNpemUoKTsKK30KKworY29uc3Qg
VG9rZW4gJk1hY3JvRXhwYW5kZXI6Ok1hY3JvQ29udGV4dDo6Z2V0KCkKK3sKKyAgICByZXR1cm4g
cmVwbGFjZW1lbnRzW2luZGV4KytdOworfQorCit2b2lkIE1hY3JvRXhwYW5kZXI6Ok1hY3JvQ29u
dGV4dDo6dW5nZXQoKQoreworICAgIEFTU0VSVChpbmRleCA+IDApOworICAgIC0taW5kZXg7Cit9
CisKIH0gIC8vIG5hbWVzcGFjZSBwcAogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3JvRXhwYW5kZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3JvRXhw
YW5kZXIuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9NYWNyb0V4cGFuZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTcsMTMgKzcsMTEgQEAKICNpZm5kZWYgQ09NUElMRVJfUFJFUFJPQ0VTU09SX01BQ1JPRVhQQU5E
RVJfSF8KICNkZWZpbmUgQ09NUElMRVJfUFJFUFJPQ0VTU09SX01BQ1JPRVhQQU5ERVJfSF8KIAot
I2luY2x1ZGUgPGNhc3NlcnQ+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHZlY3Rvcj4K
IAotI2luY2x1ZGUgIkxleGVyLmgiCi0jaW5jbHVkZSAiTWFjcm8uaCIKLSNpbmNsdWRlICJwcF91
dGlscy5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9MZXhlci5oIgorI2luY2x1
ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9NYWNyby5oIgogCiBuYW1lc3BhY2UgcHAKIHsKQEAg
LTI0LDE0ICsyMiwxMiBAQCBzdHJ1Y3QgU291cmNlTG9jYXRpb247CiBjbGFzcyBNYWNyb0V4cGFu
ZGVyIDogcHVibGljIExleGVyCiB7CiAgIHB1YmxpYzoKLSAgICBNYWNyb0V4cGFuZGVyKExleGVy
ICpsZXhlciwgTWFjcm9TZXQgKm1hY3JvU2V0LCBEaWFnbm9zdGljcyAqZGlhZ25vc3RpY3MsIGJv
b2wgcGFyc2VEZWZpbmVkKTsKKyAgICBNYWNyb0V4cGFuZGVyKExleGVyICpsZXhlciwgTWFjcm9T
ZXQgKm1hY3JvU2V0LCBEaWFnbm9zdGljcyAqZGlhZ25vc3RpY3MpOwogICAgIH5NYWNyb0V4cGFu
ZGVyKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGxleChUb2tlbiAqdG9rZW4pIG92ZXJyaWRlOwog
CiAgIHByaXZhdGU6Ci0gICAgUFBfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKE1hY3JvRXhwYW5k
ZXIpOwotCiAgICAgdm9pZCBnZXRUb2tlbihUb2tlbiAqdG9rZW4pOwogICAgIHZvaWQgdW5nZXRU
b2tlbihjb25zdCBUb2tlbiAmdG9rZW4pOwogICAgIGJvb2wgaXNOZXh0VG9rZW5MZWZ0UGFyZW4o
KTsKQEAgLTU0LDM3ICs1MCwyMyBAQCBjbGFzcyBNYWNyb0V4cGFuZGVyIDogcHVibGljIExleGVy
CiAKICAgICBzdHJ1Y3QgTWFjcm9Db250ZXh0CiAgICAgeworICAgICAgICBNYWNyb0NvbnRleHQo
KTsKKyAgICAgICAgYm9vbCBlbXB0eSgpIGNvbnN0OworICAgICAgICBjb25zdCBUb2tlbiAmZ2V0
KCk7CisgICAgICAgIHZvaWQgdW5nZXQoKTsKKwogICAgICAgICBjb25zdCBNYWNybyAqbWFjcm87
CiAgICAgICAgIHN0ZDo6c2l6ZV90IGluZGV4OwogICAgICAgICBzdGQ6OnZlY3RvcjxUb2tlbj4g
cmVwbGFjZW1lbnRzOwotCi0gICAgICAgIE1hY3JvQ29udGV4dCgpCi0gICAgICAgICAgICA6IG1h
Y3JvKDApLAotICAgICAgICAgICAgICBpbmRleCgwKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAg
ICAgICAgYm9vbCBlbXB0eSgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBp
bmRleCA9PSByZXBsYWNlbWVudHMuc2l6ZSgpOwotICAgICAgICB9Ci0gICAgICAgIGNvbnN0IFRv
a2VuICZnZXQoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcmVwbGFjZW1lbnRzW2lu
ZGV4KytdOwotICAgICAgICB9Ci0gICAgICAgIHZvaWQgdW5nZXQoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBhc3NlcnQoaW5kZXggPiAwKTsKLSAgICAgICAgICAgIC0taW5kZXg7Ci0gICAgICAg
IH0KICAgICB9OwogCiAgICAgTGV4ZXIgKm1MZXhlcjsKICAgICBNYWNyb1NldCAqbU1hY3JvU2V0
OwogICAgIERpYWdub3N0aWNzICptRGlhZ25vc3RpY3M7Ci0gICAgYm9vbCBtUGFyc2VEZWZpbmVk
OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFRva2VuPiBtUmVzZXJ2ZVRva2VuOwogICAgIHN0ZDo6
dmVjdG9yPE1hY3JvQ29udGV4dCAqPiBtQ29udGV4dFN0YWNrOworICAgIHNpemVfdCBtVG90YWxU
b2tlbnNJbkNvbnRleHRzOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHBwCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1ByZXByb2Nlc3Nvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3IuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1ByZXByb2Nlc3Nvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQsMTYgKzQsMTUgQEAKIC8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCiAvLwogCi0jaW5jbHVkZSAiUHJlcHJvY2Vzc29yLmgiCisjaW5jbHVkZSAiY29t
cGlsZXIvcHJlcHJvY2Vzc29yL1ByZXByb2Nlc3Nvci5oIgogCi0jaW5jbHVkZSA8Y2Fzc2VydD4K
LQotI2luY2x1ZGUgIkRpYWdub3N0aWNzQmFzZS5oIgotI2luY2x1ZGUgIkRpcmVjdGl2ZVBhcnNl
ci5oIgotI2luY2x1ZGUgIk1hY3JvLmgiCi0jaW5jbHVkZSAiTWFjcm9FeHBhbmRlci5oIgotI2lu
Y2x1ZGUgIlRva2VuLmgiCi0jaW5jbHVkZSAiVG9rZW5pemVyLmgiCisjaW5jbHVkZSAiY29tbW9u
L2RlYnVnLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpYWdub3N0aWNzQmFz
ZS5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9EaXJlY3RpdmVQYXJzZXIuaCIK
KyNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvTWFjcm8uaCIKKyNpbmNsdWRlICJjb21w
aWxlci9wcmVwcm9jZXNzb3IvTWFjcm9FeHBhbmRlci5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3By
ZXByb2Nlc3Nvci9Ub2tlbi5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tl
bml6ZXIuaCIKIAogbmFtZXNwYWNlIHBwCiB7CkBAIC0zMCw3ICsyOSw3IEBAIHN0cnVjdCBQcmVw
cm9jZXNzb3JJbXBsCiAgICAgICAgIDogZGlhZ25vc3RpY3MoZGlhZyksCiAgICAgICAgICAgdG9r
ZW5pemVyKGRpYWcpLAogICAgICAgICAgIGRpcmVjdGl2ZVBhcnNlcigmdG9rZW5pemVyLCAmbWFj
cm9TZXQsIGRpYWcsIGRpcmVjdGl2ZUhhbmRsZXIpLAotICAgICAgICAgIG1hY3JvRXhwYW5kZXIo
JmRpcmVjdGl2ZVBhcnNlciwgJm1hY3JvU2V0LCBkaWFnLCBmYWxzZSkKKyAgICAgICAgICBtYWNy
b0V4cGFuZGVyKCZkaXJlY3RpdmVQYXJzZXIsICZtYWNyb1NldCwgZGlhZykKICAgICB7CiAgICAg
fQogfTsKQEAgLTc4LDggKzc3LDggQEAgdm9pZCBQcmVwcm9jZXNzb3I6OmxleChUb2tlbiAqdG9r
ZW4pCiAgICAgICAgICAgLy8gQ29udmVydCBwcmVwcm9jZXNzaW5nIHRva2VucyB0byBjb21waWxl
ciB0b2tlbnMgb3IgcmVwb3J0CiAgICAgICAgICAgLy8gZGlhZ25vc3RpY3MuCiAgICAgICAgICAg
Y2FzZSBUb2tlbjo6UFBfSEFTSDoKLSAgICAgICAgICAgIGFzc2VydChmYWxzZSk7Ci0gICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgY2FzZSBUb2tlbjo6UFBfTlVNQkVSOgogICAgICAgICAgICAgbUlt
cGwtPmRpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX0lOVkFMSURfTlVNQkVSLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4tPmxvY2F0aW9uLCB0
b2tlbi0+dGV4dCk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
cHJlcHJvY2Vzc29yL1ByZXByb2Nlc3Nvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvUHJlcHJvY2Vzc29yLmgJKHJldmlz
aW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVw
cm9jZXNzb3IvUHJlcHJvY2Vzc29yLmgJKHdvcmtpbmcgY29weSkKQEAgLTcsOSArNyw5IEBACiAj
aWZuZGVmIENPTVBJTEVSX1BSRVBST0NFU1NPUl9QUkVQUk9DRVNTT1JfSF8KICNkZWZpbmUgQ09N
UElMRVJfUFJFUFJPQ0VTU09SX1BSRVBST0NFU1NPUl9IXwogCi0jaW5jbHVkZSA8c3RkZGVmLmg+
CisjaW5jbHVkZSA8Y3N0ZGRlZj4KIAotI2luY2x1ZGUgInBwX3V0aWxzLmgiCisjaW5jbHVkZSAi
Y29tbW9uL2FuZ2xldXRpbHMuaCIKIAogbmFtZXNwYWNlIHBwCiB7CkBAIC0xOSw3ICsxOSw3IEBA
IGNsYXNzIERpcmVjdGl2ZUhhbmRsZXI7CiBzdHJ1Y3QgUHJlcHJvY2Vzc29ySW1wbDsKIHN0cnVj
dCBUb2tlbjsKIAotY2xhc3MgUHJlcHJvY2Vzc29yCitjbGFzcyBQcmVwcm9jZXNzb3IgOiBhbmds
ZTo6Tm9uQ29weWFibGUKIHsKICAgcHVibGljOgogICAgIFByZXByb2Nlc3NvcihEaWFnbm9zdGlj
cyAqZGlhZ25vc3RpY3MsIERpcmVjdGl2ZUhhbmRsZXIgKmRpcmVjdGl2ZUhhbmRsZXIpOwpAQCAt
NDQsOCArNDQsNiBAQCBjbGFzcyBQcmVwcm9jZXNzb3IKICAgICB2b2lkIHNldE1heFRva2VuU2l6
ZShzaXplX3QgbWF4VG9rZW5TaXplKTsKIAogICBwcml2YXRlOgotICAgIFBQX0RJU0FMTE9XX0NP
UFlfQU5EX0FTU0lHTihQcmVwcm9jZXNzb3IpOwotCiAgICAgUHJlcHJvY2Vzc29ySW1wbCAqbUlt
cGw7CiB9OwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJl
cHJvY2Vzc29yL1Rva2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmNwcAkocmV2aXNpb24gMjA3ODA0KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tl
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQsMTEgKzQsMTAgQEAKIC8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCiAvLwogCi0jaW5jbHVkZSAiVG9rZW4uaCIKKyNpbmNsdWRlICJjb21waWxl
ci9wcmVwcm9jZXNzb3IvVG9rZW4uaCIKIAotI2luY2x1ZGUgPGNhc3NlcnQ+Ci0KLSNpbmNsdWRl
ICJudW1lcmljX2xleC5oIgorI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorI2luY2x1ZGUgImNv
bXBpbGVyL3ByZXByb2Nlc3Nvci9udW1lcmljX2xleC5oIgogCiBuYW1lc3BhY2UgcHAKIHsKQEAg
LTU1LDE5ICs1NCwxOSBAQCB2b2lkIFRva2VuOjpzZXRFeHBhbnNpb25EaXNhYmxlZChib29sIGRp
CiAKIGJvb2wgVG9rZW46OmlWYWx1ZShpbnQgKnZhbHVlKSBjb25zdAogewotICAgIGFzc2VydCh0
eXBlID09IENPTlNUX0lOVCk7CisgICAgQVNTRVJUKHR5cGUgPT0gQ09OU1RfSU5UKTsKICAgICBy
ZXR1cm4gbnVtZXJpY19sZXhfaW50KHRleHQsIHZhbHVlKTsKIH0KIAogYm9vbCBUb2tlbjo6dVZh
bHVlKHVuc2lnbmVkIGludCAqdmFsdWUpIGNvbnN0CiB7Ci0gICAgYXNzZXJ0KHR5cGUgPT0gQ09O
U1RfSU5UKTsKKyAgICBBU1NFUlQodHlwZSA9PSBDT05TVF9JTlQpOwogICAgIHJldHVybiBudW1l
cmljX2xleF9pbnQodGV4dCwgdmFsdWUpOwogfQogCiBib29sIFRva2VuOjpmVmFsdWUoZmxvYXQg
KnZhbHVlKSBjb25zdAogewotICAgIGFzc2VydCh0eXBlID09IENPTlNUX0ZMT0FUKTsKKyAgICBB
U1NFUlQodHlwZSA9PSBDT05TVF9GTE9BVCk7CiAgICAgcmV0dXJuIG51bWVyaWNfbGV4X2Zsb2F0
KHRleHQsIHZhbHVlKTsKIH0KIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uaAkocmV2aXNpb24gMjA3
ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nv
ci9Ub2tlbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw3ICsxMCw3IEBACiAjaW5jbHVkZSA8b3N0
cmVhbT4KICNpbmNsdWRlIDxzdHJpbmc+CiAKLSNpbmNsdWRlICJTb3VyY2VMb2NhdGlvbi5oIgor
I2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Tb3VyY2VMb2NhdGlvbi5oIgogCiBuYW1l
c3BhY2UgcHAKIHsKQEAgLTExMyw3ICsxMTMsNyBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFRva2VuICZsaHMsCiAgICAgcmV0dXJuICFsaHMuZXF1YWxzKHJocyk7CiB9CiAKLWV4dGVy
biBzdGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZvdXQsIGNvbnN0IFRva2Vu
ICZ0b2tlbik7CitzdGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZvdXQsIGNv
bnN0IFRva2VuICZ0b2tlbik7CiAKIH0gIC8vIG5hbWVwc2FjZSBwcAogCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXBy
b2Nlc3Nvci9Ub2tlbml6ZXIuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTksMjAgKzksOTYgQEAKIAogCiAKLSNsaW5lIDEzICIuL1Rva2VuaXplci5j
cHAiCi0KICNkZWZpbmUgIFlZX0lOVF9BTElHTkVEIHNob3J0IGludAogCiAvKiBBIGxleGljYWwg
c2Nhbm5lciBnZW5lcmF0ZWQgYnkgZmxleCAqLwogCisKKworCisKKworCisKKworCisKICNkZWZp
bmUgRkxFWF9TQ0FOTkVSCiAjZGVmaW5lIFlZX0ZMRVhfTUFKT1JfVkVSU0lPTiAyCi0jZGVmaW5l
IFlZX0ZMRVhfTUlOT1JfVkVSU0lPTiA1Ci0jZGVmaW5lIFlZX0ZMRVhfU1VCTUlOT1JfVkVSU0lP
TiAzOQorI2RlZmluZSBZWV9GTEVYX01JTk9SX1ZFUlNJT04gNgorI2RlZmluZSBZWV9GTEVYX1NV
Qk1JTk9SX1ZFUlNJT04gMQogI2lmIFlZX0ZMRVhfU1VCTUlOT1JfVkVSU0lPTiA+IDAKICNkZWZp
bmUgRkxFWF9CRVRBCiAjZW5kaWYKIAorCisKKworCisKKworCisKKworCisKKworCisgICAgCisg
ICAgCisgICAgCisgICAgCisgICAgCisgICAgCisgICAgCisgICAgCisgICAgCisgICAgCisgICAg
CisgICAgCisgICAgCisgICAgCisgICAgCisgICAgCisgICAgCisgICAgCisgICAgCisgICAgCisg
ICAgCisgICAgCisgICAgCisgICAgCisgICAgCisgICAgCisgICAgCisgICAgCisgICAgCisgICAg
CisgICAgICAgIAorICAgICAgICAKKyAgICAKKyAgICAKKworCisgICAgCisgICAgCisKKworCisg
ICAgCisgICAgCisKKworCisgICAgCisgICAgCisgICAgCisKKworCisKKworCiAvKiBGaXJzdCwg
d2UgZGVhbCB3aXRoICBwbGF0Zm9ybS1zcGVjaWZpYyBvciBjb21waWxlci1zcGVjaWZpYyBpc3N1
ZXMuICovCiAKIC8qIGJlZ2luIHN0YW5kYXJkIEMgaGVhZGVycy4gKi8KQEAgLTU2LDcgKzEzMiw2
IEBAIHR5cGVkZWYgaW50MTZfdCBmbGV4X2ludDE2X3Q7CiB0eXBlZGVmIHVpbnQxNl90IGZsZXhf
dWludDE2X3Q7CiB0eXBlZGVmIGludDMyX3QgZmxleF9pbnQzMl90OwogdHlwZWRlZiB1aW50MzJf
dCBmbGV4X3VpbnQzMl90OwotdHlwZWRlZiB1aW50NjRfdCBmbGV4X3VpbnQ2NF90OwogI2Vsc2UK
IHR5cGVkZWYgc2lnbmVkIGNoYXIgZmxleF9pbnQ4X3Q7CiB0eXBlZGVmIHNob3J0IGludCBmbGV4
X2ludDE2X3Q7CkBAIC05OCwzMCArMTczLDI3IEBAIHR5cGVkZWYgdW5zaWduZWQgaW50IGZsZXhf
dWludDMyX3Q7CiAKICNlbmRpZiAvKiAhIEZMRVhJTlRfSCAqLwogCi0jaWZkZWYgX19jcGx1c3Bs
dXMKIAotLyogVGhlICJjb25zdCIgc3RvcmFnZS1jbGFzcy1tb2RpZmllciBpcyB2YWxpZC4gKi8K
LSNkZWZpbmUgWVlfVVNFX0NPTlNUCiAKLSNlbHNlCS8qICEgX19jcGx1c3BsdXMgKi8KKy8qIFRP
RE86IHRoaXMgaXMgYWx3YXlzIGRlZmluZWQsIHNvIGlubGluZSBpdCAqLworI2RlZmluZSB5eWNv
bnN0IGNvbnN0CisKKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA+PSAzCisjZGVm
aW5lIHl5bm9yZXR1cm4gX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSkKKyNlbHNlCisjZGVm
aW5lIHl5bm9yZXR1cm4KKyNlbmRpZgogCi0vKiBDOTkgcmVxdWlyZXMgX19TVERDX18gdG8gYmUg
ZGVmaW5lZCBhcyAxLiAqLwotI2lmIGRlZmluZWQgKF9fU1REQ19fKQogCi0jZGVmaW5lIFlZX1VT
RV9DT05TVAorICAgIAogCi0jZW5kaWYJLyogZGVmaW5lZCAoX19TVERDX18pICovCi0jZW5kaWYJ
LyogISBfX2NwbHVzcGx1cyAqLwogCi0jaWZkZWYgWVlfVVNFX0NPTlNUCi0jZGVmaW5lIHl5Y29u
c3QgY29uc3QKLSNlbHNlCi0jZGVmaW5lIHl5Y29uc3QKLSNlbmRpZgogCiAvKiBSZXR1cm5lZCB1
cG9uIGVuZC1vZi1maWxlLiAqLwogI2RlZmluZSBZWV9OVUxMIDAKIAorCisKIC8qIFByb21vdGVz
IGEgcG9zc2libHkgbmVnYXRpdmUsIHBvc3NpYmx5IHNpZ25lZCBjaGFyIHRvIGFuIHVuc2lnbmVk
CiAgKiBpbnRlZ2VyIGZvciB1c2UgYXMgYW4gYXJyYXkgaW5kZXguICBJZiB0aGUgc2lnbmVkIGNo
YXIgaXMgbmVnYXRpdmUsCiAgKiB3ZSB3YW50IHRvIGluc3RlYWQgdHJlYXQgaXQgYXMgYW4gOC1i
aXQgdW5zaWduZWQgY2hhciwgaGVuY2UgdGhlCkBAIC0xMjksMTIgKzIwMSwzNCBAQCB0eXBlZGVm
IHVuc2lnbmVkIGludCBmbGV4X3VpbnQzMl90OwogICovCiAjZGVmaW5lIFlZX1NDX1RPX1VJKGMp
ICgodW5zaWduZWQgaW50KSAodW5zaWduZWQgY2hhcikgYykKIAorCisKKworCiAvKiBBbiBvcGFx
dWUgcG9pbnRlci4gKi8KICNpZm5kZWYgWVlfVFlQRURFRl9ZWV9TQ0FOTkVSX1QKICNkZWZpbmUg
WVlfVFlQRURFRl9ZWV9TQ0FOTkVSX1QKIHR5cGVkZWYgdm9pZCogeXlzY2FuX3Q7CiAjZW5kaWYK
IAorCisKKworCisKKworCisKKyAgICAKKyAgICAKKworCisKKworCisKKworCiAvKiBGb3IgY29u
dmVuaWVuY2UsIHRoZXNlIHZhcnMgKHBsdXMgdGhlIGJpc29uIHZhcnMgZmFyIGJlbG93KQogICAg
YXJlIG1hY3JvcyBpbiB0aGUgcmVlbnRyYW50IHNjYW5uZXIuICovCiAjZGVmaW5lIHl5aW4geXln
LT55eWluX3IKQEAgLTE0NiwxMiArMjQwLDI5IEBAIHR5cGVkZWYgdm9pZCogeXlzY2FuX3Q7CiAj
ZGVmaW5lIHl5Y29sdW1uIChZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2JzX2NvbHVtbikK
ICNkZWZpbmUgeXlfZmxleF9kZWJ1ZyB5eWctPnl5X2ZsZXhfZGVidWdfcgogCisKKworCisKKwor
CisKKworICAgIAorICAgIAorICAgIAorICAgIAorCisKKwogLyogRW50ZXIgYSBzdGFydCBjb25k
aXRpb24uICBUaGlzIG1hY3JvIHJlYWxseSBvdWdodCB0byB0YWtlIGEgcGFyYW1ldGVyLAogICog
YnV0IHdlIGRvIGl0IHRoZSBkaXNndXN0aW5nIGNydWZ0eSB3YXkgZm9yY2VkIG9uIHVzIGJ5IHRo
ZSAoKS1sZXNzCiAgKiBkZWZpbml0aW9uIG9mIEJFR0lOLgogICovCiAjZGVmaW5lIEJFR0lOIHl5
Zy0+eXlfc3RhcnQgPSAxICsgMiAqCiAKKworCiAvKiBUcmFuc2xhdGUgdGhlIGN1cnJlbnQgc3Rh
cnQgc3RhdGUgaW50byBhIHZhbHVlIHRoYXQgY2FuIGJlIGxhdGVyIGhhbmRlZAogICogdG8gQkVH
SU4gdG8gcmV0dXJuIHRvIHRoZSBzdGF0ZS4gIFRoZSBZWVNUQVRFIGFsaWFzIGlzIGZvciBsZXgK
ICAqIGNvbXBhdGliaWxpdHkuCkBAIC0xNTksMjMgKzI3MCw0MSBAQCB0eXBlZGVmIHZvaWQqIHl5
c2Nhbl90OwogI2RlZmluZSBZWV9TVEFSVCAoKHl5Zy0+eXlfc3RhcnQgLSAxKSAvIDIpCiAjZGVm
aW5lIFlZU1RBVEUgWVlfU1RBUlQKIAorCisKIC8qIEFjdGlvbiBudW1iZXIgZm9yIEVPRiBydWxl
IG9mIGEgZ2l2ZW4gc3RhcnQgc3RhdGUuICovCiAjZGVmaW5lIFlZX1NUQVRFX0VPRihzdGF0ZSkg
KFlZX0VORF9PRl9CVUZGRVIgKyBzdGF0ZSArIDEpCiAKKworCiAvKiBTcGVjaWFsIGFjdGlvbiBt
ZWFuaW5nICJzdGFydCBwcm9jZXNzaW5nIGEgbmV3IGZpbGUiLiAqLwogI2RlZmluZSBZWV9ORVdf
RklMRSBwcHJlc3RhcnQoeXlpbiAseXlzY2FubmVyICkKIAorCisKICNkZWZpbmUgWVlfRU5EX09G
X0JVRkZFUl9DSEFSIDAKIAorCiAvKiBTaXplIG9mIGRlZmF1bHQgaW5wdXQgYnVmZmVyLiAqLwog
I2lmbmRlZiBZWV9CVUZfU0laRQorI2lmZGVmIF9faWE2NF9fCisvKiBPbiBJQS02NCwgdGhlIGJ1
ZmZlciBzaXplIGlzIDE2aywgbm90IDhrLgorICogTW9yZW92ZXIsIFlZX0JVRl9TSVpFIGlzIDIq
WVlfUkVBRF9CVUZfU0laRSBpbiB0aGUgZ2VuZXJhbCBjYXNlLgorICogRGl0dG8gZm9yIHRoZSBf
X2lhNjRfXyBjYXNlIGFjY29yZGluZ2x5LgorICovCisjZGVmaW5lIFlZX0JVRl9TSVpFIDMyNzY4
CisjZWxzZQogI2RlZmluZSBZWV9CVUZfU0laRSAxNjM4NAorI2VuZGlmIC8qIF9faWE2NF9fICov
CiAjZW5kaWYKIAorCiAvKiBUaGUgc3RhdGUgYnVmIG11c3QgYmUgbGFyZ2UgZW5vdWdoIHRvIGhv
bGQgb25lIHN0YXRlIHBlciBjaGFyYWN0ZXIgaW4gdGhlIG1haW4gYnVmZmVyLgogICovCiAjZGVm
aW5lIFlZX1NUQVRFX0JVRl9TSVpFICAgKChZWV9CVUZfU0laRSArIDIpICogc2l6ZW9mKHl5X3N0
YXRlX3R5cGUpKQogCisKKwogI2lmbmRlZiBZWV9UWVBFREVGX1lZX0JVRkZFUl9TVEFURQogI2Rl
ZmluZSBZWV9UWVBFREVGX1lZX0JVRkZFUl9TVEFURQogdHlwZWRlZiBzdHJ1Y3QgeXlfYnVmZmVy
X3N0YXRlICpZWV9CVUZGRVJfU1RBVEU7CkBAIC0xODYsMTggKzMxNSwyMiBAQCB0eXBlZGVmIHN0
cnVjdCB5eV9idWZmZXJfc3RhdGUgKllZX0JVRkZFCiB0eXBlZGVmIHNpemVfdCB5eV9zaXplX3Q7
CiAjZW5kaWYKIAotI2lmbmRlZiBZWV9UWVBFREVGX1lZX1NJWkVfVAotI2RlZmluZSBZWV9UWVBF
REVGX1lZX1NJWkVfVAotdHlwZWRlZiBzaXplX3QgeXlfc2l6ZV90OwotI2VuZGlmCisKKwogCiAj
ZGVmaW5lIEVPQl9BQ1RfQ09OVElOVUVfU0NBTiAwCiAjZGVmaW5lIEVPQl9BQ1RfRU5EX09GX0ZJ
TEUgMQogI2RlZmluZSBFT0JfQUNUX0xBU1RfTUFUQ0ggMgogCisKKworICAgIAogICAgICNkZWZp
bmUgWVlfTEVTU19MSU5FTk8obikKICAgICAjZGVmaW5lIFlZX0xJTkVOT19SRVdJTkRfVE8ocHRy
KQogICAgIAorCisKKwogLyogUmV0dXJuIGFsbCBidXQgdGhlIGZpcnN0ICJuIiBtYXRjaGVkIGNo
YXJhY3RlcnMgYmFjayB0byB0aGUgaW5wdXQgc3RyZWFtLiAqLwogI2RlZmluZSB5eWxlc3Mobikg
XAogCWRvIFwKQEAgLTIxMiwyNiArMzQ1LDMxIEBAIHR5cGVkZWYgc2l6ZV90IHl5X3NpemVfdDsK
IAkJfSBcCiAJd2hpbGUgKCAwICkKIAorCisKICNkZWZpbmUgdW5wdXQoYykgeXl1bnB1dCggYywg
eXlnLT55eXRleHRfcHRyICwgeXlzY2FubmVyICkKIAorCiAjaWZuZGVmIFlZX1NUUlVDVF9ZWV9C
VUZGRVJfU1RBVEUKICNkZWZpbmUgWVlfU1RSVUNUX1lZX0JVRkZFUl9TVEFURQogc3RydWN0IHl5
X2J1ZmZlcl9zdGF0ZQogCXsKIAlGSUxFICp5eV9pbnB1dF9maWxlOwogCisKKwogCWNoYXIgKnl5
X2NoX2J1ZjsJCS8qIGlucHV0IGJ1ZmZlciAqLwogCWNoYXIgKnl5X2J1Zl9wb3M7CQkvKiBjdXJy
ZW50IHBvc2l0aW9uIGluIGlucHV0IGJ1ZmZlciAqLwogCiAJLyogU2l6ZSBvZiBpbnB1dCBidWZm
ZXIgaW4gYnl0ZXMsIG5vdCBpbmNsdWRpbmcgcm9vbSBmb3IgRU9CCiAJICogY2hhcmFjdGVycy4K
IAkgKi8KLQl5eV9zaXplX3QgeXlfYnVmX3NpemU7CisJaW50IHl5X2J1Zl9zaXplOwogCiAJLyog
TnVtYmVyIG9mIGNoYXJhY3RlcnMgcmVhZCBpbnRvIHl5X2NoX2J1Ziwgbm90IGluY2x1ZGluZyBF
T0IKIAkgKiBjaGFyYWN0ZXJzLgogCSAqLwotCXl5X3NpemVfdCB5eV9uX2NoYXJzOworCWludCB5
eV9uX2NoYXJzOwogCiAJLyogV2hldGhlciB3ZSAib3duIiB0aGUgYnVmZmVyIC0gaS5lLiwgd2Ug
a25vdyB3ZSBjcmVhdGVkIGl0LAogCSAqIGFuZCBjYW4gcmVhbGxvYygpIGl0IHRvIGdyb3cgaXQs
IGFuZCBzaG91bGQgZnJlZSgpIGl0IHRvCkBAIC0yNTUsNiArMzkzLDcgQEAgc3RydWN0IHl5X2J1
ZmZlcl9zdGF0ZQogICAgIGludCB5eV9ic19saW5lbm87IC8qKjwgVGhlIGxpbmUgY291bnQuICov
CiAgICAgaW50IHl5X2JzX2NvbHVtbjsgLyoqPCBUaGUgY29sdW1uIGNvdW50LiAqLwogICAgIAor
CiAJLyogV2hldGhlciB0byB0cnkgdG8gZmlsbCB0aGUgaW5wdXQgYnVmZmVyIHdoZW4gd2UgcmVh
Y2ggdGhlCiAJICogZW5kIG9mIGl0LgogCSAqLwpAQCAtMjc5LDYgKzQxOCwxMCBAQCBzdHJ1Y3Qg
eXlfYnVmZmVyX3N0YXRlCiAJfTsKICNlbmRpZiAvKiAhWVlfU1RSVUNUX1lZX0JVRkZFUl9TVEFU
RSAqLwogCisKKworCisKIC8qIFdlIHByb3ZpZGUgbWFjcm9zIGZvciBhY2Nlc3NpbmcgYnVmZmVy
IHN0YXRlcyBpbiBjYXNlIGluIHRoZQogICogZnV0dXJlIHdlIHdhbnQgdG8gcHV0IHRoZSBidWZm
ZXIgc3RhdGVzIGluIGEgbW9yZSBnZW5lcmFsCiAgKiAic2Nhbm5lciBzdGF0ZSIuCkBAIC0yODks
MTEgKzQzMiwxOCBAQCBzdHJ1Y3QgeXlfYnVmZmVyX3N0YXRlCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgID8geXlnLT55eV9idWZmZXJfc3RhY2tbeXlnLT55eV9idWZmZXJfc3RhY2tfdG9wXSBc
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDogTlVMTCkKIAorCisKIC8qIFNhbWUgYXMgcHJl
dmlvdXMgbWFjcm8sIGJ1dCB1c2VmdWwgd2hlbiB3ZSBrbm93IHRoYXQgdGhlIGJ1ZmZlciBzdGFj
ayBpcyBub3QKICAqIE5VTEwgb3Igd2hlbiB3ZSBuZWVkIGFuIGx2YWx1ZS4gRm9yIGludGVybmFs
IHVzZSBvbmx5LgogICovCiAjZGVmaW5lIFlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRSB5eWctPnl5
X2J1ZmZlcl9zdGFja1t5eWctPnl5X2J1ZmZlcl9zdGFja190b3BdCiAKKworCisKKworCiB2b2lk
IHBwcmVzdGFydCAoRklMRSAqaW5wdXRfZmlsZSAseXlzY2FuX3QgeXlzY2FubmVyICk7CiB2b2lk
IHBwX3N3aXRjaF90b19idWZmZXIgKFlZX0JVRkZFUl9TVEFURSBuZXdfYnVmZmVyICx5eXNjYW5f
dCB5eXNjYW5uZXIgKTsKIFlZX0JVRkZFUl9TVEFURSBwcF9jcmVhdGVfYnVmZmVyIChGSUxFICpm
aWxlLGludCBzaXplICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKQEAgLTMwMiwyMiArNDUyLDMwIEBA
IHZvaWQgcHBfZmx1c2hfYnVmZmVyIChZWV9CVUZGRVJfU1RBVEUgYiAKIHZvaWQgcHBwdXNoX2J1
ZmZlcl9zdGF0ZSAoWVlfQlVGRkVSX1NUQVRFIG5ld19idWZmZXIgLHl5c2Nhbl90IHl5c2Nhbm5l
ciApOwogdm9pZCBwcHBvcF9idWZmZXJfc3RhdGUgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCisK
IHN0YXRpYyB2b2lkIHBwZW5zdXJlX2J1ZmZlcl9zdGFjayAoeXlzY2FuX3QgeXlzY2FubmVyICk7
CiBzdGF0aWMgdm9pZCBwcF9sb2FkX2J1ZmZlcl9zdGF0ZSAoeXlzY2FuX3QgeXlzY2FubmVyICk7
CiBzdGF0aWMgdm9pZCBwcF9pbml0X2J1ZmZlciAoWVlfQlVGRkVSX1NUQVRFIGIsRklMRSAqZmls
ZSAseXlzY2FuX3QgeXlzY2FubmVyICk7CiAKKworCiAjZGVmaW5lIFlZX0ZMVVNIX0JVRkZFUiBw
cF9mbHVzaF9idWZmZXIoWVlfQ1VSUkVOVF9CVUZGRVIgLHl5c2Nhbm5lcikKIAorCiBZWV9CVUZG
RVJfU1RBVEUgcHBfc2Nhbl9idWZmZXIgKGNoYXIgKmJhc2UseXlfc2l6ZV90IHNpemUgLHl5c2Nh
bl90IHl5c2Nhbm5lciApOwogWVlfQlVGRkVSX1NUQVRFIHBwX3NjYW5fc3RyaW5nICh5eWNvbnN0
IGNoYXIgKnl5X3N0ciAseXlzY2FuX3QgeXlzY2FubmVyICk7Ci1ZWV9CVUZGRVJfU1RBVEUgcHBf
c2Nhbl9ieXRlcyAoeXljb25zdCBjaGFyICpieXRlcyx5eV9zaXplX3QgbGVuICx5eXNjYW5fdCB5
eXNjYW5uZXIgKTsKK1lZX0JVRkZFUl9TVEFURSBwcF9zY2FuX2J5dGVzICh5eWNvbnN0IGNoYXIg
KmJ5dGVzLGludCBsZW4gLHl5c2Nhbl90IHl5c2Nhbm5lciApOworCiAKIHZvaWQgKnBwYWxsb2Mg
KHl5X3NpemVfdCAseXlzY2FuX3QgeXlzY2FubmVyICk7CiB2b2lkICpwcHJlYWxsb2MgKHZvaWQg
Kix5eV9zaXplX3QgLHl5c2Nhbl90IHl5c2Nhbm5lciApOwogdm9pZCBwcGZyZWUgKHZvaWQgKiAs
eXlzY2FuX3QgeXlzY2FubmVyICk7CiAKKwogI2RlZmluZSB5eV9uZXdfYnVmZmVyIHBwX2NyZWF0
ZV9idWZmZXIKIAorCisKICNkZWZpbmUgeXlfc2V0X2ludGVyYWN0aXZlKGlzX2ludGVyYWN0aXZl
KSBcCiAJeyBcCiAJaWYgKCAhIFlZX0NVUlJFTlRfQlVGRkVSICl7IFwKQEAgLTMyOCw2ICs0ODYs
OCBAQCB2b2lkIHBwZnJlZSAodm9pZCAqICx5eXNjYW5fdCB5eXNjYW5uZXIgCiAJWVlfQ1VSUkVO
VF9CVUZGRVJfTFZBTFVFLT55eV9pc19pbnRlcmFjdGl2ZSA9IGlzX2ludGVyYWN0aXZlOyBcCiAJ
fQogCisKKwogI2RlZmluZSB5eV9zZXRfYm9sKGF0X2JvbCkgXAogCXsgXAogCWlmICggISBZWV9D
VVJSRU5UX0JVRkZFUiApe1wKQEAgLTMzOCwzNCArNDk4LDUwIEBAIHZvaWQgcHBmcmVlICh2b2lk
ICogLHl5c2Nhbl90IHl5c2Nhbm5lciAKIAlZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2F0
X2JvbCA9IGF0X2JvbDsgXAogCX0KIAorCisKICNkZWZpbmUgWVlfQVRfQk9MKCkgKFlZX0NVUlJF
TlRfQlVGRkVSX0xWQUxVRS0+eXlfYXRfYm9sKQogCisKIC8qIEJlZ2luIHVzZXIgc2VjdDMgKi8K
IAotI2RlZmluZSBwcHdyYXAoeXlzY2FubmVyKSAxCisjZGVmaW5lIHBwd3JhcCh5eXNjYW5uZXIp
ICgvKkNPTlNUQ09ORCovMSkKICNkZWZpbmUgWVlfU0tJUF9ZWVdSQVAKIAogdHlwZWRlZiB1bnNp
Z25lZCBjaGFyIFlZX0NIQVI7CiAKKworCisKIHR5cGVkZWYgaW50IHl5X3N0YXRlX3R5cGU7CiAK
ICNkZWZpbmUgeXl0ZXh0X3B0ciB5eXRleHRfcgogCisKKworCisKKwogc3RhdGljIHl5X3N0YXRl
X3R5cGUgeXlfZ2V0X3ByZXZpb3VzX3N0YXRlICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKIHN0YXRp
YyB5eV9zdGF0ZV90eXBlIHl5X3RyeV9OVUxfdHJhbnMgKHl5X3N0YXRlX3R5cGUgY3VycmVudF9z
dGF0ZSAgLHl5c2Nhbl90IHl5c2Nhbm5lcik7CiBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZl
ciAoeXlzY2FuX3QgeXlzY2FubmVyICk7Ci1zdGF0aWMgdm9pZCB5eV9mYXRhbF9lcnJvciAoeXlj
b25zdCBjaGFyIG1zZ1tdICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKK3N0YXRpYyB2b2lkIHl5bm9y
ZXR1cm4geXlfZmF0YWxfZXJyb3IgKHl5Y29uc3QgY2hhciogbXNnICx5eXNjYW5fdCB5eXNjYW5u
ZXIgKTsKKworCisKIAogLyogRG9uZSBhZnRlciB0aGUgY3VycmVudCBwYXR0ZXJuIGhhcyBiZWVu
IG1hdGNoZWQgYW5kIGJlZm9yZSB0aGUKICAqIGNvcnJlc3BvbmRpbmcgYWN0aW9uIC0gc2V0cyB1
cCB5eXRleHQuCiAgKi8KICNkZWZpbmUgWVlfRE9fQkVGT1JFX0FDVElPTiBcCiAJeXlnLT55eXRl
eHRfcHRyID0geXlfYnA7IFwKLQl5eWxlbmcgPSAoeXlfc2l6ZV90KSAoeXlfY3AgLSB5eV9icCk7
IFwKKwl5eWxlbmcgPSAoaW50KSAoeXlfY3AgLSB5eV9icCk7IFwKIAl5eWctPnl5X2hvbGRfY2hh
ciA9ICp5eV9jcDsgXAogCSp5eV9jcCA9ICdcMCc7IFwKIAl5eWctPnl5X2NfYnVmX3AgPSB5eV9j
cDsKIAorCisKICNkZWZpbmUgWVlfTlVNX1JVTEVTIDM4CiAjZGVmaW5lIFlZX0VORF9PRl9CVUZG
RVIgMzkKIC8qIFRoaXMgc3RydWN0IGlzIG5vdCB1c2VkIGluIHRoaXMgc2Nhbm5lciwKQEAgLTM5
MCw3ICs1NjYsNyBAQCBzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfYWNjZXB0Wzk4CiAK
ICAgICB9IDsKIAotc3RhdGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X2VjWzI1Nl0gPQorc3Rh
dGljIHl5Y29uc3QgWVlfQ0hBUiB5eV9lY1syNTZdID0KICAgICB7ICAgMCwKICAgICAgICAgMSwg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMiwgICAgMywKICAg
ICAgICAgMiwgICAgMiwgICAgNCwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwKQEAgLTQyMiwxNCArNTk4LDE0IEBAIHN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MzJfdCB5
eV9lY1syNTZdID0KICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMQogICAgIH0gOwog
Ci1zdGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3QgeXlfbWV0YVszMF0gPQorc3RhdGljIHl5Y29u
c3QgWVlfQ0hBUiB5eV9tZXRhWzMwXSA9CiAgICAgeyAgIDAsCiAgICAgICAgIDEsICAgIDEsICAg
IDIsICAgIDIsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDMsCiAgICAgICAgIDEs
ICAgIDEsICAgIDQsICAgIDEsICAgIDUsICAgIDUsICAgIDUsICAgIDEsICAgIDEsICAgIDEsCiAg
ICAgICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDEsICAgIDEsICAgIDEK
ICAgICB9IDsKIAotc3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2Jhc2VbMTAzXSA9Citz
dGF0aWMgeXljb25zdCBmbGV4X3VpbnQxNl90IHl5X2Jhc2VbMTAzXSA9CiAgICAgeyAgIDAsCiAg
ICAgICAgIDAsICAgIDAsICAgMjcsICAgMjksICAxMzcsICAxOTQsICAxMzMsICAxOTQsICAxMTcs
ICAxMDAsCiAgICAgICAxOTQsICAgOTgsICAgMjYsICAxOTQsICAgOTQsICAgMjQsICAgMjgsICAg
MzMsICAgMzIsICAgMzksCkBAIC00NjEsNyArNjM3LDcgQEAgc3RhdGljIHl5Y29uc3QgZmxleF9p
bnQxNl90IHl5X2RlZlsxMDNdIAogICAgICAgIDk3LCAgIDk3CiAgICAgfSA7CiAKLXN0YXRpYyB5
eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9ueHRbMjI0XSA9CitzdGF0aWMgeXljb25zdCBmbGV4X3Vp
bnQxNl90IHl5X254dFsyMjRdID0KICAgICB7ICAgMCwKICAgICAgICAgNiwgICAgNywgICAgOCwg
ICAgOSwgICAxMCwgICAxMSwgICAxMiwgICAxMywgICAxNCwgICAxNSwKICAgICAgICAxNiwgICAx
NywgICAxOCwgICAxOSwgICAyMCwgICAyMSwgICAyMSwgICAyMiwgICAyMywgICAyNCwKQEAgLTU0
NCwxMCArNzIwLDEwIEBAIElGIFlPVSBNT0RJRlkgVEhJUyBGSUxFIFlPVSBBTFNPIE5FRUQgVE8K
ICNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MDA1KQogI2VuZGlmCiAKLSNpbmNsdWRlICJUb2tl
bml6ZXIuaCIKKyNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmgiCiAK
LSNpbmNsdWRlICJEaWFnbm9zdGljc0Jhc2UuaCIKLSNpbmNsdWRlICJUb2tlbi5oIgorI2luY2x1
ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9EaWFnbm9zdGljc0Jhc2UuaCIKKyNpbmNsdWRlICJj
b21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uaCIKIAogI2lmIGRlZmluZWQoX19HTlVDX18pCiAv
LyBUcmlnZ2VyZWQgYnkgdGhlIGF1dG8tZ2VuZXJhdGVkIHl5X2ZhdGFsX2Vycm9yIGZ1bmN0aW9u
LgpAQCAtNTk2LDExICs3NzIsMjMgQEAgdHlwZWRlZiBwcDo6U291cmNlTG9jYXRpb24gWVlMVFlQ
RTsKICNkZWZpbmUgWVlfSU5QVVQoYnVmLCByZXN1bHQsIG1heFNpemUpIFwKICAgICByZXN1bHQg
PSB5eWV4dHJhLT5pbnB1dC5yZWFkKGJ1ZiwgbWF4U2l6ZSwgJnl5bGluZW5vKTsKIAorCisKKwor
CiAjZGVmaW5lIElOSVRJQUwgMAogI2RlZmluZSBDT01NRU5UIDEKIAorCisKKworCisKICNkZWZp
bmUgWVlfRVhUUkFfVFlQRSBwcDo6VG9rZW5pemVyOjpDb250ZXh0KgogCisKKworCiAvKiBIb2xk
cyB0aGUgZW50aXJlIHN0YXRlIG9mIHRoZSByZWVudHJhbnQgc2Nhbm5lci4gKi8KIHN0cnVjdCB5
eWd1dHNfdAogICAgIHsKQEAgLTYxNCw4ICs4MDIsOCBAQCBzdHJ1Y3QgeXlndXRzX3QKICAgICBz
aXplX3QgeXlfYnVmZmVyX3N0YWNrX21heDsgLyoqPCBjYXBhY2l0eSBvZiBzdGFjay4gKi8KICAg
ICBZWV9CVUZGRVJfU1RBVEUgKiB5eV9idWZmZXJfc3RhY2s7IC8qKjwgU3RhY2sgYXMgYW4gYXJy
YXkuICovCiAgICAgY2hhciB5eV9ob2xkX2NoYXI7Ci0gICAgeXlfc2l6ZV90IHl5X25fY2hhcnM7
Ci0gICAgeXlfc2l6ZV90IHl5bGVuZ19yOworICAgIGludCB5eV9uX2NoYXJzOworICAgIGludCB5
eWxlbmdfcjsKICAgICBjaGFyICp5eV9jX2J1Zl9wOwogICAgIGludCB5eV9pbml0OwogICAgIGlu
dCB5eV9zdGFydDsKQEAgLTYyOSw2OSArODE3LDEzMiBAQCBzdHJ1Y3QgeXlndXRzX3QKICAgICBp
bnQgeXlsaW5lbm9fcjsKICAgICBpbnQgeXlfZmxleF9kZWJ1Z19yOwogCisKKworCiAgICAgY2hh
ciAqeXl0ZXh0X3I7CiAgICAgaW50IHl5X21vcmVfZmxhZzsKICAgICBpbnQgeXlfbW9yZV9sZW47
CiAKKworCiAgICAgWVlTVFlQRSAqIHl5bHZhbF9yOwogCisKKwogICAgIFlZTFRZUEUgKiB5eWxs
b2NfcjsKIAorCiAgICAgfTsgLyogZW5kIHN0cnVjdCB5eWd1dHNfdCAqLwogCisKKworCiBzdGF0
aWMgaW50IHl5X2luaXRfZ2xvYmFscyAoeXlzY2FuX3QgeXlzY2FubmVyICk7CiAKKworCisKKyAg
ICAKICAgICAvKiBUaGlzIG11c3QgZ28gaGVyZSBiZWNhdXNlIFlZU1RZUEUgYW5kIFlZTFRZUEUg
YXJlIGluY2x1ZGVkCiAgICAgICogZnJvbSBiaXNvbiBvdXRwdXQgaW4gc2VjdGlvbiAxLiovCiAg
ICAgIyAgICBkZWZpbmUgeXlsdmFsIHl5Zy0+eXlsdmFsX3IKICAgICAKKworICAgIAogICAgICMg
ICAgZGVmaW5lIHl5bGxvYyB5eWctPnl5bGxvY19yCiAgICAgCisKKwogaW50IHBwbGV4X2luaXQg
KHl5c2Nhbl90KiBzY2FubmVyKTsKIAogaW50IHBwbGV4X2luaXRfZXh0cmEgKFlZX0VYVFJBX1RZ
UEUgdXNlcl9kZWZpbmVkLHl5c2Nhbl90KiBzY2FubmVyKTsKIAorCisKIC8qIEFjY2Vzc29yIG1l
dGhvZHMgdG8gZ2xvYmFscy4KICAgIFRoZXNlIGFyZSBtYWRlIHZpc2libGUgdG8gbm9uLXJlZW50
cmFudCBzY2FubmVycyBmb3IgY29udmVuaWVuY2UuICovCiAKKwogaW50IHBwbGV4X2Rlc3Ryb3kg
KHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCisKKwogaW50IHBwZ2V0X2RlYnVnICh5eXNjYW5fdCB5
eXNjYW5uZXIgKTsKIAorCisKIHZvaWQgcHBzZXRfZGVidWcgKGludCBkZWJ1Z19mbGFnICx5eXNj
YW5fdCB5eXNjYW5uZXIgKTsKIAorCisKIFlZX0VYVFJBX1RZUEUgcHBnZXRfZXh0cmEgKHl5c2Nh
bl90IHl5c2Nhbm5lciApOwogCisKKwogdm9pZCBwcHNldF9leHRyYSAoWVlfRVhUUkFfVFlQRSB1
c2VyX2RlZmluZWQgLHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCisKKwogRklMRSAqcHBnZXRfaW4g
KHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCi12b2lkIHBwc2V0X2luICAoRklMRSAqIGluX3N0ciAs
eXlzY2FuX3QgeXlzY2FubmVyICk7CisKKwordm9pZCBwcHNldF9pbiAgKEZJTEUgKiBfaW5fc3Ry
ICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKKworCiAKIEZJTEUgKnBwZ2V0X291dCAoeXlzY2FuX3Qg
eXlzY2FubmVyICk7CiAKLXZvaWQgcHBzZXRfb3V0ICAoRklMRSAqIG91dF9zdHIgLHl5c2Nhbl90
IHl5c2Nhbm5lciApOwogCi15eV9zaXplX3QgcHBnZXRfbGVuZyAoeXlzY2FuX3QgeXlzY2FubmVy
ICk7CisKK3ZvaWQgcHBzZXRfb3V0ICAoRklMRSAqIF9vdXRfc3RyICx5eXNjYW5fdCB5eXNjYW5u
ZXIgKTsKKworCisKKwkJCWludCBwcGdldF9sZW5nICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKKwor
CiAKIGNoYXIgKnBwZ2V0X3RleHQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCisKKwogaW50IHBw
Z2V0X2xpbmVubyAoeXlzY2FuX3QgeXlzY2FubmVyICk7CiAKLXZvaWQgcHBzZXRfbGluZW5vIChp
bnQgbGluZV9udW1iZXIgLHl5c2Nhbl90IHl5c2Nhbm5lciApOworCisKK3ZvaWQgcHBzZXRfbGlu
ZW5vIChpbnQgX2xpbmVfbnVtYmVyICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKKworCisKIAogaW50
IHBwZ2V0X2NvbHVtbiAgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCi12b2lkIHBwc2V0X2NvbHVt
biAoaW50IGNvbHVtbl9ubyAseXlzY2FuX3QgeXlzY2FubmVyICk7CisKKworCisKK3ZvaWQgcHBz
ZXRfY29sdW1uIChpbnQgX2NvbHVtbl9ubyAseXlzY2FuX3QgeXlzY2FubmVyICk7CisKKworCiAK
IFlZU1RZUEUgKiBwcGdldF9sdmFsICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKIAorCiB2b2lkIHBw
c2V0X2x2YWwgKFlZU1RZUEUgKiB5eWx2YWxfcGFyYW0gLHl5c2Nhbl90IHl5c2Nhbm5lciApOwog
CisKKyAgICAKICAgICAgICBZWUxUWVBFICpwcGdldF9sbG9jICh5eXNjYW5fdCB5eXNjYW5uZXIg
KTsKICAgICAKKworICAgIAogICAgICAgICB2b2lkIHBwc2V0X2xsb2MgKFlZTFRZUEUgKiB5eWxs
b2NfcGFyYW0gLHl5c2Nhbl90IHl5c2Nhbm5lciApOwogICAgIAorCisKIC8qIE1hY3JvcyBhZnRl
ciB0aGlzIHBvaW50IGNhbiBhbGwgYmUgb3ZlcnJpZGRlbiBieSB1c2VyIGRlZmluaXRpb25zIGlu
CiAgKiBzZWN0aW9uIDEuCiAgKi8KQEAgLTcwNCw2ICs5NTUsMTIgQEAgZXh0ZXJuIGludCBwcHdy
YXAgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwogI2VuZGlmCiAjZW5kaWYKIAorCisjaWZuZGVmIFlZ
X05PX1VOUFVUCisgICAgCisjZW5kaWYKKworCiAjaWZuZGVmIHl5dGV4dF9wdHIKIHN0YXRpYyB2
b2lkIHl5X2ZsZXhfc3RybmNweSAoY2hhciAqLHl5Y29uc3QgY2hhciAqLGludCAseXlzY2FuX3Qg
eXlzY2FubmVyKTsKICNlbmRpZgpAQCAtNzEyLDcgKzk2OSw3IEBAIHN0YXRpYyB2b2lkIHl5X2Zs
ZXhfc3RybmNweSAoY2hhciAqLHl5Y28KIHN0YXRpYyBpbnQgeXlfZmxleF9zdHJsZW4gKHl5Y29u
c3QgY2hhciAqICx5eXNjYW5fdCB5eXNjYW5uZXIpOwogI2VuZGlmCiAKLSNpZiAwIC8vI2lmbmRl
ZiBZWV9OT19JTlBVVAorI2lmIDAKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBzdGF0aWMgaW50IHl5
aW5wdXQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwpAQCAtNzIyLDE5ICs5NzksMzQgQEAgc3RhdGlj
IGludCBpbnB1dCAoeXlzY2FuX3QgeXlzY2FubmVyICk7CiAKICNlbmRpZgogCisKKworCisKKwor
CisKIC8qIEFtb3VudCBvZiBzdHVmZiB0byBzbHVycCB1cCB3aXRoIGVhY2ggcmVhZC4gKi8KICNp
Zm5kZWYgWVlfUkVBRF9CVUZfU0laRQorI2lmZGVmIF9faWE2NF9fCisvKiBPbiBJQS02NCwgdGhl
IGJ1ZmZlciBzaXplIGlzIDE2aywgbm90IDhrICovCisjZGVmaW5lIFlZX1JFQURfQlVGX1NJWkUg
MTYzODQKKyNlbHNlCiAjZGVmaW5lIFlZX1JFQURfQlVGX1NJWkUgODE5MgorI2VuZGlmIC8qIF9f
aWE2NF9fICovCiAjZW5kaWYKIAorCiAvKiBDb3B5IHdoYXRldmVyIHRoZSBsYXN0IHJ1bGUgbWF0
Y2hlZCB0byB0aGUgc3RhbmRhcmQgb3V0cHV0LiAqLwogI2lmbmRlZiBFQ0hPCiAvKiBUaGlzIHVz
ZWQgdG8gYmUgYW4gZnB1dHMoKSwgYnV0IHNpbmNlIHRoZSBzdHJpbmcgbWlnaHQgY29udGFpbiBO
VUwncywKICAqIHdlIG5vdyB1c2UgZndyaXRlKCkuCiAgKi8KLSNkZWZpbmUgRUNITyBkbyB7IGlm
IChmd3JpdGUoIHl5dGV4dCwgeXlsZW5nLCAxLCB5eW91dCApKSB7fSB9IHdoaWxlICgwKQorI2Rl
ZmluZSBFQ0hPIGRvIHsgaWYgKGZ3cml0ZSggeXl0ZXh0LCAoc2l6ZV90KSB5eWxlbmcsIDEsIHl5
b3V0ICkpIHt9IH0gd2hpbGUgKDApCiAjZW5kaWYKIAorCisKIC8qIEdldHMgaW5wdXQgYW5kIHN0
dWZmcyBpdCBpbnRvICJidWYiLiAgbnVtYmVyIG9mIGNoYXJhY3RlcnMgcmVhZCwgb3IgWVlfTlVM
TCwKICAqIGlzIHJldHVybmVkIGluICJyZXN1bHQiLgogICovCkBAIC03NTYsNyArMTAyOCw3IEBA
IHN0YXRpYyBpbnQgaW5wdXQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCWVsc2UgXAogCQl7IFwK
IAkJZXJybm89MDsgXAotCQl3aGlsZSAoIChyZXN1bHQgPSBmcmVhZChidWYsIDEsIG1heF9zaXpl
LCB5eWluKSk9PTAgJiYgZmVycm9yKHl5aW4pKSBcCisJCXdoaWxlICggKHJlc3VsdCA9IChpbnQp
IGZyZWFkKGJ1ZiwgMSwgbWF4X3NpemUsIHl5aW4pKT09MCAmJiBmZXJyb3IoeXlpbikpIFwKIAkJ
CXsgXAogCQkJaWYoIGVycm5vICE9IEVJTlRSKSBcCiAJCQkJeyBcCkBAIC03NzEsNiArMTA0Myw4
IEBAIHN0YXRpYyBpbnQgaW5wdXQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCiAjZW5kaWYKIAor
CisKIC8qIE5vIHNlbWktY29sb24gYWZ0ZXIgcmV0dXJuOyBjb3JyZWN0IHVzYWdlIGlzIHRvIHdy
aXRlICJ5eXRlcm1pbmF0ZSgpOyIgLQogICogd2UgZG9uJ3Qgd2FudCBhbiBleHRyYSAnOycgYWZ0
ZXIgdGhlICJyZXR1cm4iIGJlY2F1c2UgdGhhdCB3aWxsIGNhdXNlCiAgKiBzb21lIGNvbXBpbGVy
cyB0byBjb21wbGFpbiBhYm91dCB1bnJlYWNoYWJsZSBzdGF0ZW1lbnRzLgpAQCAtNzc5LDI0ICsx
MDUzLDQ4IEBAIHN0YXRpYyBpbnQgaW5wdXQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwogI2RlZmlu
ZSB5eXRlcm1pbmF0ZSgpIHJldHVybiBZWV9OVUxMCiAjZW5kaWYKIAorCiAvKiBOdW1iZXIgb2Yg
ZW50cmllcyBieSB3aGljaCBzdGFydC1jb25kaXRpb24gc3RhY2sgZ3Jvd3MuICovCiAjaWZuZGVm
IFlZX1NUQVJUX1NUQUNLX0lOQ1IKICNkZWZpbmUgWVlfU1RBUlRfU1RBQ0tfSU5DUiAyNQogI2Vu
ZGlmCiAKKwogLyogUmVwb3J0IGEgZmF0YWwgZXJyb3IuICovCiAjaWZuZGVmIFlZX0ZBVEFMX0VS
Uk9SCiAjZGVmaW5lIFlZX0ZBVEFMX0VSUk9SKG1zZykgeXlfZmF0YWxfZXJyb3IoIG1zZyAsIHl5
c2Nhbm5lcikKICNlbmRpZgogCisKKworCisKIC8qIGVuZCB0YWJsZXMgc2VyaWFsaXphdGlvbiBz
dHJ1Y3R1cmVzIGFuZCBwcm90b3R5cGVzICovCiAKKworCiAvKiBEZWZhdWx0IGRlY2xhcmF0aW9u
IG9mIGdlbmVyYXRlZCBzY2FubmVyIC0gYSBkZWZpbmUgc28gdGhlIHVzZXIgY2FuCiAgKiBlYXNp
bHkgYWRkIHBhcmFtZXRlcnMuCiAgKi8KICNpZm5kZWYgWVlfREVDTAogI2RlZmluZSBZWV9ERUNM
X0lTX09VUlMgMQogCisKKworCisKKworICAgICAgICAKKyAgICAKKyAgICAKKworCisKKyAgICAK
KyAgICAKKyAgICAKKworCiBleHRlcm4gaW50IHBwbGV4IFwKICAgICAgICAgICAgICAgIChZWVNU
WVBFICogeXlsdmFsX3BhcmFtLFlZTFRZUEUgKiB5eWxsb2NfcGFyYW0gLHl5c2Nhbl90IHl5c2Nh
bm5lcik7CiAKQEAgLTgwNCw2ICsxMTAyLDcgQEAgZXh0ZXJuIGludCBwcGxleCBcCiAgICAgICAg
ICAgICAgICAoWVlTVFlQRSAqIHl5bHZhbF9wYXJhbSwgWVlMVFlQRSAqIHl5bGxvY19wYXJhbSAs
IHl5c2Nhbl90IHl5c2Nhbm5lcikKICNlbmRpZiAvKiAhWVlfREVDTCAqLwogCisKIC8qIENvZGUg
ZXhlY3V0ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIHJ1bGUsIGFmdGVyIHl5dGV4dCBhbmQg
eXlsZW5nCiAgKiBoYXZlIGJlZW4gc2V0IHVwLgogICovCkBAIC04MTEsMjcgKzExMTAsMzkgQEAg
ZXh0ZXJuIGludCBwcGxleCBcCiAjZGVmaW5lIFlZX1VTRVJfQUNUSU9OCiAjZW5kaWYKIAorCisK
IC8qIENvZGUgZXhlY3V0ZWQgYXQgdGhlIGVuZCBvZiBlYWNoIHJ1bGUuICovCiAjaWZuZGVmIFlZ
X0JSRUFLCi0jZGVmaW5lIFlZX0JSRUFLIGJyZWFrOworI2RlZmluZSBZWV9CUkVBSyAvKkxJTlRF
RCovYnJlYWs7CiAjZW5kaWYKIAorCisKICNkZWZpbmUgWVlfUlVMRV9TRVRVUCBcCiAJWVlfVVNF
Ul9BQ1RJT04KIAorCisKIC8qKiBUaGUgbWFpbiBzY2FubmVyIGZ1bmN0aW9uIHdoaWNoIGRvZXMg
YWxsIHRoZSB3b3JrLgogICovCiBZWV9ERUNMCiB7Ci0JcmVnaXN0ZXIgeXlfc3RhdGVfdHlwZSB5
eV9jdXJyZW50X3N0YXRlOwotCXJlZ2lzdGVyIGNoYXIgKnl5X2NwLCAqeXlfYnA7Ci0JcmVnaXN0
ZXIgaW50IHl5X2FjdDsKKwl5eV9zdGF0ZV90eXBlIHl5X2N1cnJlbnRfc3RhdGU7CisJY2hhciAq
eXlfY3AsICp5eV9icDsKKwlpbnQgeXlfYWN0OwogICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9
IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKIAorCisKKwogICAgIHl5bHZhbCA9IHl5bHZh
bF9wYXJhbTsKIAorCisKICAgICB5eWxsb2MgPSB5eWxsb2NfcGFyYW07CiAKKwogCWlmICggIXl5
Zy0+eXlfaW5pdCApCiAJCXsKIAkJeXlnLT55eV9pbml0ID0gMTsKQEAgLTg0MCw2ICsxMTUxLDgg
QEAgWVlfREVDTAogCQlZWV9VU0VSX0lOSVQ7CiAjZW5kaWYKIAorCisKIAkJaWYgKCAhIHl5Zy0+
eXlfc3RhcnQgKQogCQkJeXlnLT55eV9zdGFydCA9IDE7CS8qIGZpcnN0IHN0YXJ0IHN0YXRlICov
CiAKQEAgLTg2MCw5ICsxMTczLDEwIEBAIFlZX0RFQ0wKIAogCXsKIAorCiAgICAgLyogTGluZSBj
b21tZW50ICovCiAKLQl3aGlsZSAoIDEgKQkJLyogbG9vcHMgdW50aWwgZW5kLW9mLWZpbGUgaXMg
cmVhY2hlZCAqLworCXdoaWxlICggLypDT05TVENPTkQqLzEgKQkJLyogbG9vcHMgdW50aWwgZW5k
LW9mLWZpbGUgaXMgcmVhY2hlZCAqLwogCQl7CiAJCXl5X2NwID0geXlnLT55eV9jX2J1Zl9wOwog
CkBAIC04NzgsNyArMTE5Miw3IEBAIFlZX0RFQ0wKIHl5X21hdGNoOgogCQlkbwogCQkJewotCQkJ
cmVnaXN0ZXIgWVlfQ0hBUiB5eV9jID0geXlfZWNbWVlfU0NfVE9fVUkoKnl5X2NwKV0gOworCQkJ
WVlfQ0hBUiB5eV9jID0geXlfZWNbWVlfU0NfVE9fVUkoKnl5X2NwKV0gOwogCQkJaWYgKCB5eV9h
Y2NlcHRbeXlfY3VycmVudF9zdGF0ZV0gKQogCQkJCXsKIAkJCQl5eWctPnl5X2xhc3RfYWNjZXB0
aW5nX3N0YXRlID0geXlfY3VycmVudF9zdGF0ZTsKQEAgLTg5MCw3ICsxMjA0LDcgQEAgeXlfbWF0
Y2g6CiAJCQkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDk4ICkKIAkJCQkJeXlfYyA9IHl5X21l
dGFbKHVuc2lnbmVkIGludCkgeXlfY107CiAJCQkJfQotCQkJeXlfY3VycmVudF9zdGF0ZSA9IHl5
X254dFt5eV9iYXNlW3l5X2N1cnJlbnRfc3RhdGVdICsgKHVuc2lnbmVkIGludCkgeXlfY107CisJ
CQl5eV9jdXJyZW50X3N0YXRlID0geXlfbnh0W3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyAo
ZmxleF9pbnQxNl90KSB5eV9jXTsKIAkJCSsreXlfY3A7CiAJCQl9CiAJCXdoaWxlICggeXlfY3Vy
cmVudF9zdGF0ZSAhPSA5NyApOwpAQCAtOTAyLDggKzEyMTYsMTEgQEAgeXlfZmluZF9hY3Rpb246
CiAKIAkJWVlfRE9fQkVGT1JFX0FDVElPTjsKIAorCisKIGRvX2FjdGlvbjoJLyogVGhpcyBsYWJl
bCBpcyB1c2VkIG9ubHkgdG8gYWNjZXNzIEVPRiBhY3Rpb25zLiAqLwogCisKIAkJc3dpdGNoICgg
eXlfYWN0ICkKIAl7IC8qIGJlZ2lubmluZyBvZiBhY3Rpb24gc3dpdGNoICovCiAJCQljYXNlIDA6
IC8qIG11c3QgYmFjayB1cCAqLwpAQCAtMTMyNiw2ICsxNjQzLDExIEBAIEVDSE87CiAJfSAvKiBl
bmQgb2YgdXNlcidzIGRlY2xhcmF0aW9ucyAqLwogfSAvKiBlbmQgb2YgcHBsZXggKi8KIAorCisK
KworCisKIC8qIHl5X2dldF9uZXh0X2J1ZmZlciAtIHRyeSB0byByZWFkIGluIGEgbmV3IGJ1ZmZl
cgogICoKICAqIFJldHVybnMgYSBjb2RlIHJlcHJlc2VudGluZyBhbiBhY3Rpb246CkBAIC0xMzM2
LDkgKzE2NTgsOSBAQCBFQ0hPOwogc3RhdGljIGludCB5eV9nZXRfbmV4dF9idWZmZXIgKHl5c2Nh
bl90IHl5c2Nhbm5lcikKIHsKICAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5
Z3V0c190Kil5eXNjYW5uZXI7Ci0JcmVnaXN0ZXIgY2hhciAqZGVzdCA9IFlZX0NVUlJFTlRfQlVG
RkVSX0xWQUxVRS0+eXlfY2hfYnVmOwotCXJlZ2lzdGVyIGNoYXIgKnNvdXJjZSA9IHl5Zy0+eXl0
ZXh0X3B0cjsKLQlyZWdpc3RlciBpbnQgbnVtYmVyX3RvX21vdmUsIGk7CisJY2hhciAqZGVzdCA9
IFlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfY2hfYnVmOworCWNoYXIgKnNvdXJjZSA9IHl5
Zy0+eXl0ZXh0X3B0cjsKKwl5eV9zaXplX3QgbnVtYmVyX3RvX21vdmUsIGk7CiAJaW50IHJldF92
YWw7CiAKIAlpZiAoIHl5Zy0+eXlfY19idWZfcCA+ICZZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUt
Pnl5X2NoX2J1Zlt5eWctPnl5X25fY2hhcnMgKyAxXSApCkBAIC0xMzY3LDcgKzE2ODksNyBAQCBz
dGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAoeXlzY2FuX3QgCiAJLyogVHJ5IHRvIHJlYWQg
bW9yZSBkYXRhLiAqLwogCiAJLyogRmlyc3QgbW92ZSBsYXN0IGNoYXJzIHRvIHN0YXJ0IG9mIGJ1
ZmZlci4gKi8KLQludW1iZXJfdG9fbW92ZSA9IChpbnQpICh5eWctPnl5X2NfYnVmX3AgLSB5eWct
Pnl5dGV4dF9wdHIpIC0gMTsKKwludW1iZXJfdG9fbW92ZSA9ICh5eV9zaXplX3QpICh5eWctPnl5
X2NfYnVmX3AgLSB5eWctPnl5dGV4dF9wdHIpIC0gMTsKIAogCWZvciAoIGkgPSAwOyBpIDwgbnVt
YmVyX3RvX21vdmU7ICsraSApCiAJCSooZGVzdCsrKSA9ICooc291cmNlKyspOwpAQCAtMTM4MCw4
ICsxNzAyLDggQEAgc3RhdGljIGludCB5eV9nZXRfbmV4dF9idWZmZXIgKHl5c2Nhbl90IAogCiAJ
ZWxzZQogCQl7Ci0JCQl5eV9zaXplX3QgbnVtX3RvX3JlYWQgPQotCQkJWVlfQ1VSUkVOVF9CVUZG
RVJfTFZBTFVFLT55eV9idWZfc2l6ZSAtIG51bWJlcl90b19tb3ZlIC0gMTsKKwkJCWludCBudW1f
dG9fcmVhZCA9CisJCQlzdGF0aWNfY2FzdDxpbnQ+KFlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+
eXlfYnVmX3NpemUgLSBudW1iZXJfdG9fbW92ZSAtIDEpOwogCiAJCXdoaWxlICggbnVtX3RvX3Jl
YWQgPD0gMCApCiAJCQl7IC8qIE5vdCBlbm91Z2ggcm9vbSBpbiB0aGUgYnVmZmVyIC0gZ3JvdyBp
dC4gKi8KQEAgLTEzOTQsNyArMTcxNiw3IEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVmZmVy
ICh5eXNjYW5fdCAKIAogCQkJaWYgKCBiLT55eV9pc19vdXJfYnVmZmVyICkKIAkJCQl7Ci0JCQkJ
eXlfc2l6ZV90IG5ld19zaXplID0gYi0+eXlfYnVmX3NpemUgKiAyOworCQkJCWludCBuZXdfc2l6
ZSA9IGItPnl5X2J1Zl9zaXplICogMjsKIAogCQkJCWlmICggbmV3X3NpemUgPD0gMCApCiAJCQkJ
CWItPnl5X2J1Zl9zaXplICs9IGItPnl5X2J1Zl9zaXplIC8gODsKQEAgLTE0MDcsNyArMTcyOSw3
IEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCAKIAkJCQl9CiAJCQll
bHNlCiAJCQkJLyogQ2FuJ3QgZ3JvdyBpdCwgd2UgZG9uJ3Qgb3duIGl0LiAqLwotCQkJCWItPnl5
X2NoX2J1ZiA9IDA7CisJCQkJYi0+eXlfY2hfYnVmID0gTlVMTDsKIAogCQkJaWYgKCAhIGItPnl5
X2NoX2J1ZiApCiAJCQkJWVlfRkFUQUxfRVJST1IoCkBAIC0xNDE1LDggKzE3MzcsOCBAQCBzdGF0
aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAoeXlzY2FuX3QgCiAKIAkJCXl5Zy0+eXlfY19idWZf
cCA9ICZiLT55eV9jaF9idWZbeXlfY19idWZfcF9vZmZzZXRdOwogCi0JCQludW1fdG9fcmVhZCA9
IFlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfYnVmX3NpemUgLQotCQkJCQkJbnVtYmVyX3Rv
X21vdmUgLSAxOworCQkJbnVtX3RvX3JlYWQgPSBzdGF0aWNfY2FzdDxpbnQ+KFlZX0NVUlJFTlRf
QlVGRkVSX0xWQUxVRS0+eXlfYnVmX3NpemUgLQorCQkJCQkJbnVtYmVyX3RvX21vdmUgLSAxKTsK
IAogCQkJfQogCkBAIC0xNDI0LDggKzE3NDYsMTAgQEAgc3RhdGljIGludCB5eV9nZXRfbmV4dF9i
dWZmZXIgKHl5c2Nhbl90IAogCQkJbnVtX3RvX3JlYWQgPSBZWV9SRUFEX0JVRl9TSVpFOwogCiAJ
CS8qIFJlYWQgaW4gbW9yZSBkYXRhLiAqLworCQl5eV9zaXplX3QgcmV0ID0gMDsKIAkJWVlfSU5Q
VVQoICgmWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9jaF9idWZbbnVtYmVyX3RvX21vdmVd
KSwKLQkJCXl5Zy0+eXlfbl9jaGFycywgbnVtX3RvX3JlYWQgKTsKKwkJCXJldCwgbnVtX3RvX3Jl
YWQgKTsKKwkJeXlnLT55eV9uX2NoYXJzID0gc3RhdGljX2Nhc3Q8aW50PihyZXQpOwogCiAJCVlZ
X0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfbl9jaGFycyA9IHl5Zy0+eXlfbl9jaGFyczsKIAkJ
fQpAQCAtMTQ0OSw3ICsxNzczLDcgQEAgc3RhdGljIGludCB5eV9nZXRfbmV4dF9idWZmZXIgKHl5
c2Nhbl90IAogCWVsc2UKIAkJcmV0X3ZhbCA9IEVPQl9BQ1RfQ09OVElOVUVfU0NBTjsKIAotCWlm
ICgoeXlfc2l6ZV90KSAoeXlnLT55eV9uX2NoYXJzICsgbnVtYmVyX3RvX21vdmUpID4gWVlfQ1VS
UkVOVF9CVUZGRVJfTFZBTFVFLT55eV9idWZfc2l6ZSkgeworCWlmICgoaW50KSAoeXlnLT55eV9u
X2NoYXJzICsgbnVtYmVyX3RvX21vdmUpID4gWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9i
dWZfc2l6ZSkgewogCQkvKiBFeHRlbmQgdGhlIGFycmF5IGJ5IDUwJSwgcGx1cyB0aGUgbnVtYmVy
IHdlIHJlYWxseSBuZWVkLiAqLwogCQl5eV9zaXplX3QgbmV3X3NpemUgPSB5eWctPnl5X25fY2hh
cnMgKyBudW1iZXJfdG9fbW92ZSArICh5eWctPnl5X25fY2hhcnMgPj4gMSk7CiAJCVlZX0NVUlJF
TlRfQlVGRkVSX0xWQUxVRS0+eXlfY2hfYnVmID0gKGNoYXIgKikgcHByZWFsbG9jKCh2b2lkICop
IFlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfY2hfYnVmLG5ld19zaXplICx5eXNjYW5uZXIg
KTsKQEAgLTE0NTcsNyArMTc4MSw3IEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVmZmVyICh5
eXNjYW5fdCAKIAkJCVlZX0ZBVEFMX0VSUk9SKCAib3V0IG9mIGR5bmFtaWMgbWVtb3J5IGluIHl5
X2dldF9uZXh0X2J1ZmZlcigpIiApOwogCX0KIAotCXl5Zy0+eXlfbl9jaGFycyArPSBudW1iZXJf
dG9fbW92ZTsKKwl5eWctPnl5X25fY2hhcnMgKz0gc3RhdGljX2Nhc3Q8aW50PihudW1iZXJfdG9f
bW92ZSk7CiAJWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9jaF9idWZbeXlnLT55eV9uX2No
YXJzXSA9IFlZX0VORF9PRl9CVUZGRVJfQ0hBUjsKIAlZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUt
Pnl5X2NoX2J1Zlt5eWctPnl5X25fY2hhcnMgKyAxXSA9IFlZX0VORF9PRl9CVUZGRVJfQ0hBUjsK
IApAQCAtMTQ2NiwxOSArMTc5MCwyMSBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAo
eXlzY2FuX3QgCiAJcmV0dXJuIHJldF92YWw7CiB9CiAKKwogLyogeXlfZ2V0X3ByZXZpb3VzX3N0
YXRlIC0gZ2V0IHRoZSBzdGF0ZSBqdXN0IGJlZm9yZSB0aGUgRU9CIGNoYXIgd2FzIHJlYWNoZWQg
Ki8KIAorCiAgICAgc3RhdGljIHl5X3N0YXRlX3R5cGUgeXlfZ2V0X3ByZXZpb3VzX3N0YXRlICh5
eXNjYW5fdCB5eXNjYW5uZXIpCiB7Ci0JcmVnaXN0ZXIgeXlfc3RhdGVfdHlwZSB5eV9jdXJyZW50
X3N0YXRlOwotCXJlZ2lzdGVyIGNoYXIgKnl5X2NwOworCXl5X3N0YXRlX3R5cGUgeXlfY3VycmVu
dF9zdGF0ZTsKKwljaGFyICp5eV9jcDsKICAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3Ry
dWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7CiAKIAl5eV9jdXJyZW50X3N0YXRlID0geXlnLT55eV9z
dGFydDsKIAogCWZvciAoIHl5X2NwID0geXlnLT55eXRleHRfcHRyICsgWVlfTU9SRV9BREo7IHl5
X2NwIDwgeXlnLT55eV9jX2J1Zl9wOyArK3l5X2NwICkKIAkJewotCQlyZWdpc3RlciBZWV9DSEFS
IHl5X2MgPSAoKnl5X2NwID8geXlfZWNbWVlfU0NfVE9fVUkoKnl5X2NwKV0gOiAxKTsKKwkJWVlf
Q0hBUiB5eV9jID0gKCp5eV9jcCA/IHl5X2VjW1lZX1NDX1RPX1VJKCp5eV9jcCldIDogMSk7CiAJ
CWlmICggeXlfYWNjZXB0W3l5X2N1cnJlbnRfc3RhdGVdICkKIAkJCXsKIAkJCXl5Zy0+eXlfbGFz
dF9hY2NlcHRpbmdfc3RhdGUgPSB5eV9jdXJyZW50X3N0YXRlOwpAQCAtMTQ5MCwxMiArMTgxNiwx
MyBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAoeXlzY2FuX3QgCiAJCQlpZiAoIHl5
X2N1cnJlbnRfc3RhdGUgPj0gOTggKQogCQkJCXl5X2MgPSB5eV9tZXRhWyh1bnNpZ25lZCBpbnQp
IHl5X2NdOwogCQkJfQotCQl5eV9jdXJyZW50X3N0YXRlID0geXlfbnh0W3l5X2Jhc2VbeXlfY3Vy
cmVudF9zdGF0ZV0gKyAodW5zaWduZWQgaW50KSB5eV9jXTsKKwkJeXlfY3VycmVudF9zdGF0ZSA9
IHl5X254dFt5eV9iYXNlW3l5X2N1cnJlbnRfc3RhdGVdICsgKGZsZXhfaW50MTZfdCkgeXlfY107
CiAJCX0KIAogCXJldHVybiB5eV9jdXJyZW50X3N0YXRlOwogfQogCisKIC8qIHl5X3RyeV9OVUxf
dHJhbnMgLSB0cnkgdG8gbWFrZSBhIHRyYW5zaXRpb24gb24gdGhlIE5VTCBjaGFyYWN0ZXIKICAq
CiAgKiBzeW5vcHNpcwpAQCAtMTUwMywxMSArMTgzMCwxMSBAQCBzdGF0aWMgaW50IHl5X2dldF9u
ZXh0X2J1ZmZlciAoeXlzY2FuX3QgCiAgKi8KICAgICBzdGF0aWMgeXlfc3RhdGVfdHlwZSB5eV90
cnlfTlVMX3RyYW5zICAoeXlfc3RhdGVfdHlwZSB5eV9jdXJyZW50X3N0YXRlICwgeXlzY2FuX3Qg
eXlzY2FubmVyKQogewotCXJlZ2lzdGVyIGludCB5eV9pc19qYW07CisJaW50IHl5X2lzX2phbTsK
ICAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7
IC8qIFRoaXMgdmFyIG1heSBiZSB1bnVzZWQgZGVwZW5kaW5nIHVwb24gb3B0aW9ucy4gKi8KLQly
ZWdpc3RlciBjaGFyICp5eV9jcCA9IHl5Zy0+eXlfY19idWZfcDsKKwljaGFyICp5eV9jcCA9IHl5
Zy0+eXlfY19idWZfcDsKIAotCXJlZ2lzdGVyIFlZX0NIQVIgeXlfYyA9IDE7CisJWVlfQ0hBUiB5
eV9jID0gMTsKIAlpZiAoIHl5X2FjY2VwdFt5eV9jdXJyZW50X3N0YXRlXSApCiAJCXsKIAkJeXln
LT55eV9sYXN0X2FjY2VwdGluZ19zdGF0ZSA9IHl5X2N1cnJlbnRfc3RhdGU7CkBAIC0xNTE5LDE0
ICsxODQ2LDE5IEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCAKIAkJ
aWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDk4ICkKIAkJCXl5X2MgPSB5eV9tZXRhWyh1bnNpZ25l
ZCBpbnQpIHl5X2NdOwogCQl9Ci0JeXlfY3VycmVudF9zdGF0ZSA9IHl5X254dFt5eV9iYXNlW3l5
X2N1cnJlbnRfc3RhdGVdICsgKHVuc2lnbmVkIGludCkgeXlfY107CisJeXlfY3VycmVudF9zdGF0
ZSA9IHl5X254dFt5eV9iYXNlW3l5X2N1cnJlbnRfc3RhdGVdICsgKGZsZXhfaW50MTZfdCkgeXlf
Y107CiAJeXlfaXNfamFtID0gKHl5X2N1cnJlbnRfc3RhdGUgPT0gOTcpOwogCiAJKHZvaWQpeXln
OwogCXJldHVybiB5eV9pc19qYW0gPyAwIDogeXlfY3VycmVudF9zdGF0ZTsKIH0KIAotI2lmIDAg
Ly8jaWZuZGVmIFlZX05PX0lOUFVUCisKKyNpZm5kZWYgWVlfTk9fVU5QVVQKKworI2VuZGlmCisK
KyNpZiAwCiAjaWZkZWYgX19jcGx1c3BsdXMKICAgICBzdGF0aWMgaW50IHl5aW5wdXQgKHl5c2Nh
bl90IHl5c2Nhbm5lcikKICNlbHNlCkBAIC0xNTUxLDcgKzE4ODMsNyBAQCBzdGF0aWMgaW50IHl5
X2dldF9uZXh0X2J1ZmZlciAoeXlzY2FuX3QgCiAKIAkJZWxzZQogCQkJeyAvKiBuZWVkIG1vcmUg
aW5wdXQgKi8KLQkJCXl5X3NpemVfdCBvZmZzZXQgPSB5eWctPnl5X2NfYnVmX3AgLSB5eWctPnl5
dGV4dF9wdHI7CisJCQlhdXRvIG9mZnNldCA9IHl5Zy0+eXlfY19idWZfcCAtIHl5Zy0+eXl0ZXh0
X3B0cjsKIAkJCSsreXlnLT55eV9jX2J1Zl9wOwogCiAJCQlzd2l0Y2ggKCB5eV9nZXRfbmV4dF9i
dWZmZXIoIHl5c2Nhbm5lciApICkKQEAgLTE1NzUsNyArMTkwNyw3IEBAIHN0YXRpYyBpbnQgeXlf
Z2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCAKIAkJCQljYXNlIEVPQl9BQ1RfRU5EX09GX0ZJTEU6
CiAJCQkJCXsKIAkJCQkJaWYgKCBwcHdyYXAoeXlzY2FubmVyICkgKQotCQkJCQkJcmV0dXJuIEVP
RjsKKwkJCQkJCXJldHVybiAwOwogCiAJCQkJCWlmICggISB5eWctPnl5X2RpZF9idWZmZXJfc3dp
dGNoX29uX2VvZiApCiAJCQkJCQlZWV9ORVdfRklMRTsKQEAgLTE1OTcsNiArMTkyOSw3IEBAIHN0
YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCAKIAkqeXlnLT55eV9jX2J1Zl9w
ID0gJ1wwJzsJLyogcHJlc2VydmUgeXl0ZXh0ICovCiAJeXlnLT55eV9ob2xkX2NoYXIgPSAqKyt5
eWctPnl5X2NfYnVmX3A7CiAKKwogCXJldHVybiBjOwogfQogI2VuZGlmCS8qIGlmbmRlZiBZWV9O
T19JTlBVVCAqLwpAQCAtMTYyMCw2ICsxOTUzLDcgQEAgc3RhdGljIGludCB5eV9nZXRfbmV4dF9i
dWZmZXIgKHl5c2Nhbl90IAogCXBwX2xvYWRfYnVmZmVyX3N0YXRlKHl5c2Nhbm5lciApOwogfQog
CisKIC8qKiBTd2l0Y2ggdG8gYSBkaWZmZXJlbnQgaW5wdXQgYnVmZmVyLgogICogQHBhcmFtIG5l
d19idWZmZXIgVGhlIG5ldyBpbnB1dCBidWZmZXIuCiAgKiBAcGFyYW0geXlzY2FubmVyIFRoZSBz
Y2FubmVyIG9iamVjdC4KQEAgLTE2NTYsNiArMTk5MCw3IEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25l
eHRfYnVmZmVyICh5eXNjYW5fdCAKIAl5eWctPnl5X2RpZF9idWZmZXJfc3dpdGNoX29uX2VvZiA9
IDE7CiB9CiAKKwogc3RhdGljIHZvaWQgcHBfbG9hZF9idWZmZXJfc3RhdGUgICh5eXNjYW5fdCB5
eXNjYW5uZXIpCiB7CiAgICAgc3RydWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNf
dCopeXlzY2FubmVyOwpAQCAtMTY5NSw2ICsyMDMwLDcgQEAgc3RhdGljIHZvaWQgcHBfbG9hZF9i
dWZmZXJfc3RhdGUgICh5eXNjYQogCXJldHVybiBiOwogfQogCisKIC8qKiBEZXN0cm95IHRoZSBi
dWZmZXIuCiAgKiBAcGFyYW0gYiBhIGJ1ZmZlciBjcmVhdGVkIHdpdGggcHBfY3JlYXRlX2J1ZmZl
cigpCiAgKiBAcGFyYW0geXlzY2FubmVyIFRoZSBzY2FubmVyIG9iamVjdC4KQEAgLTE3MTUsNiAr
MjA1MSw3IEBAIHN0YXRpYyB2b2lkIHBwX2xvYWRfYnVmZmVyX3N0YXRlICAoeXlzY2EKIAlwcGZy
ZWUoKHZvaWQgKikgYiAseXlzY2FubmVyICk7CiB9CiAKKwogLyogSW5pdGlhbGl6ZXMgb3IgcmVp
bml0aWFsaXplcyBhIGJ1ZmZlci4KICAqIFRoaXMgZnVuY3Rpb24gaXMgc29tZXRpbWVzIGNhbGxl
ZCBtb3JlIHRoYW4gb25jZSBvbiB0aGUgc2FtZSBidWZmZXIsCiAgKiBzdWNoIGFzIGR1cmluZyBh
IHBwcmVzdGFydCgpIG9yIGF0IEVPRi4KQEAgLTE3MzksOCArMjA3NiwxMSBAQCBzdGF0aWMgdm9p
ZCBwcF9sb2FkX2J1ZmZlcl9zdGF0ZSAgKHl5c2NhCiAgICAgICAgIGItPnl5X2JzX2NvbHVtbiA9
IDA7CiAgICAgfQogCisKKyAgICAKICAgICAgICAgYi0+eXlfaXNfaW50ZXJhY3RpdmUgPSAwOwog
ICAgIAorCiAJZXJybm8gPSBvZXJybm87CiB9CiAKQEAgLTE4MDUsNiArMjE0NSw3IEBAIHZvaWQg
cHBwdXNoX2J1ZmZlcl9zdGF0ZSAoWVlfQlVGRkVSX1NUQVQKIAl5eWctPnl5X2RpZF9idWZmZXJf
c3dpdGNoX29uX2VvZiA9IDE7CiB9CiAKKwogLyoqIFJlbW92ZXMgYW5kIGRlbGV0ZXMgdGhlIHRv
cCBvZiB0aGUgc3RhY2ssIGlmIHByZXNlbnQuCiAgKiAgVGhlIG5leHQgZWxlbWVudCBiZWNvbWVz
IHRoZSBuZXcgdG9wLgogICogIEBwYXJhbSB5eXNjYW5uZXIgVGhlIHNjYW5uZXIgb2JqZWN0LgpA
QCAtMTgyNiw2ICsyMTY3LDcgQEAgdm9pZCBwcHBvcF9idWZmZXJfc3RhdGUgKHl5c2Nhbl90IHl5
c2NhbgogCX0KIH0KIAorCiAvKiBBbGxvY2F0ZXMgdGhlIHN0YWNrIGlmIGl0IGRvZXMgbm90IGV4
aXN0LgogICogIEd1YXJhbnRlZXMgc3BhY2UgZm9yIGF0IGxlYXN0IG9uZSBwdXNoLgogICovCkBA
IC0xODQwLDEzICsyMTgyLDE0IEBAIHN0YXRpYyB2b2lkIHBwZW5zdXJlX2J1ZmZlcl9zdGFjayAo
eXlzY2EKIAkJICogc2Nhbm5lciB3aWxsIGV2ZW4gbmVlZCBhIHN0YWNrLiBXZSB1c2UgMiBpbnN0
ZWFkIG9mIDEgdG8gYXZvaWQgYW4KIAkJICogaW1tZWRpYXRlIHJlYWxsb2Mgb24gdGhlIG5leHQg
Y2FsbC4KICAgICAgICAgICovCi0JCW51bV90b19hbGxvYyA9IDE7CisgICAgICBudW1fdG9fYWxs
b2MgPSAxOyAvKiBBZnRlciBhbGwgdGhhdCB0YWxrLCB0aGlzIHdhcyBzZXQgdG8gMSBhbnl3YXlz
Li4uICovCiAJCXl5Zy0+eXlfYnVmZmVyX3N0YWNrID0gKHN0cnVjdCB5eV9idWZmZXJfc3RhdGUq
KilwcGFsbG9jCiAJCQkJCQkJCShudW1fdG9fYWxsb2MgKiBzaXplb2Yoc3RydWN0IHl5X2J1ZmZl
cl9zdGF0ZSopCiAJCQkJCQkJCSwgeXlzY2FubmVyKTsKIAkJaWYgKCAhIHl5Zy0+eXlfYnVmZmVy
X3N0YWNrICkKIAkJCVlZX0ZBVEFMX0VSUk9SKCAib3V0IG9mIGR5bmFtaWMgbWVtb3J5IGluIHBw
ZW5zdXJlX2J1ZmZlcl9zdGFjaygpIiApOwogCQkJCQkJCQkgIAorCQkKIAkJbWVtc2V0KHl5Zy0+
eXlfYnVmZmVyX3N0YWNrLCAwLCBudW1fdG9fYWxsb2MgKiBzaXplb2Yoc3RydWN0IHl5X2J1ZmZl
cl9zdGF0ZSopKTsKIAkJCQkKIAkJeXlnLT55eV9idWZmZXJfc3RhY2tfbWF4ID0gbnVtX3RvX2Fs
bG9jOwpAQCAtMTg1Nyw3ICsyMjAwLDcgQEAgc3RhdGljIHZvaWQgcHBlbnN1cmVfYnVmZmVyX3N0
YWNrICh5eXNjYQogCWlmICh5eWctPnl5X2J1ZmZlcl9zdGFja190b3AgPj0gKHl5Zy0+eXlfYnVm
ZmVyX3N0YWNrX21heCkgLSAxKXsKIAogCQkvKiBJbmNyZWFzZSB0aGUgYnVmZmVyIHRvIHByZXBh
cmUgZm9yIGEgcG9zc2libGUgcHVzaC4gKi8KLQkJaW50IGdyb3dfc2l6ZSA9IDggLyogYXJiaXRy
YXJ5IGdyb3cgc2l6ZSAqLzsKKwkJeXlfc2l6ZV90IGdyb3dfc2l6ZSA9IDggLyogYXJiaXRyYXJ5
IGdyb3cgc2l6ZSAqLzsKIAogCQludW1fdG9fYWxsb2MgPSB5eWctPnl5X2J1ZmZlcl9zdGFja19t
YXggKyBncm93X3NpemU7CiAJCXl5Zy0+eXlfYnVmZmVyX3N0YWNrID0gKHN0cnVjdCB5eV9idWZm
ZXJfc3RhdGUqKilwcHJlYWxsb2MKQEAgLTE4NzMsNiArMjIxNiwxMCBAQCBzdGF0aWMgdm9pZCBw
cGVuc3VyZV9idWZmZXJfc3RhY2sgKHl5c2NhCiAJfQogfQogCisKKworCisKIC8qKiBTZXR1cCB0
aGUgaW5wdXQgYnVmZmVyIHN0YXRlIHRvIHNjYW4gZGlyZWN0bHkgZnJvbSBhIHVzZXItc3BlY2lm
aWVkIGNoYXJhY3RlciBidWZmZXIuCiAgKiBAcGFyYW0gYmFzZSB0aGUgY2hhcmFjdGVyIGJ1ZmZl
cgogICogQHBhcmFtIHNpemUgdGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlIGNoYXJhY3RlciBidWZm
ZXIKQEAgLTE4ODcsMTYgKzIyMzQsMTYgQEAgWVlfQlVGRkVSX1NUQVRFIHBwX3NjYW5fYnVmZmVy
ICAoY2hhciAqIAogCSAgICAgYmFzZVtzaXplLTJdICE9IFlZX0VORF9PRl9CVUZGRVJfQ0hBUiB8
fAogCSAgICAgYmFzZVtzaXplLTFdICE9IFlZX0VORF9PRl9CVUZGRVJfQ0hBUiApCiAJCS8qIFRo
ZXkgZm9yZ290IHRvIGxlYXZlIHJvb20gZm9yIHRoZSBFT0Incy4gKi8KLQkJcmV0dXJuIDA7CisJ
CXJldHVybiBOVUxMOwogCiAJYiA9IChZWV9CVUZGRVJfU1RBVEUpIHBwYWxsb2Moc2l6ZW9mKCBz
dHJ1Y3QgeXlfYnVmZmVyX3N0YXRlICkgLHl5c2Nhbm5lciApOwogCWlmICggISBiICkKIAkJWVlf
RkFUQUxfRVJST1IoICJvdXQgb2YgZHluYW1pYyBtZW1vcnkgaW4gcHBfc2Nhbl9idWZmZXIoKSIg
KTsKIAotCWItPnl5X2J1Zl9zaXplID0gc2l6ZSAtIDI7CS8qICItIDIiIHRvIHRha2UgY2FyZSBv
ZiBFT0IncyAqLworCWItPnl5X2J1Zl9zaXplID0gc3RhdGljX2Nhc3Q8aW50PihzaXplIC0gMik7
CS8qICItIDIiIHRvIHRha2UgY2FyZSBvZiBFT0IncyAqLwogCWItPnl5X2J1Zl9wb3MgPSBiLT55
eV9jaF9idWYgPSBiYXNlOwogCWItPnl5X2lzX291cl9idWZmZXIgPSAwOwotCWItPnl5X2lucHV0
X2ZpbGUgPSAwOworCWItPnl5X2lucHV0X2ZpbGUgPSBOVUxMOwogCWItPnl5X25fY2hhcnMgPSBi
LT55eV9idWZfc2l6ZTsKIAliLT55eV9pc19pbnRlcmFjdGl2ZSA9IDA7CiAJYi0+eXlfYXRfYm9s
ID0gMTsKQEAgLTE5MDgsNiArMjI1NSw5IEBAIFlZX0JVRkZFUl9TVEFURSBwcF9zY2FuX2J1ZmZl
ciAgKGNoYXIgKiAKIAlyZXR1cm4gYjsKIH0KIAorCisKKwogLyoqIFNldHVwIHRoZSBpbnB1dCBi
dWZmZXIgc3RhdGUgdG8gc2NhbiBhIHN0cmluZy4gVGhlIG5leHQgY2FsbCB0byBwcGxleCgpIHdp
bGwKICAqIHNjYW4gZnJvbSBhIEBlIGNvcHkgb2YgQGEgc3RyLgogICogQHBhcmFtIHl5c3RyIGEg
TlVMLXRlcm1pbmF0ZWQgc3RyaW5nIHRvIHNjYW4KQEAgLTE5MTksOSArMjI2OSwxMiBAQCBZWV9C
VUZGRVJfU1RBVEUgcHBfc2Nhbl9idWZmZXIgIChjaGFyICogCiBZWV9CVUZGRVJfU1RBVEUgcHBf
c2Nhbl9zdHJpbmcgKHl5Y29uc3QgY2hhciAqIHl5c3RyICwgeXlzY2FuX3QgeXlzY2FubmVyKQog
ewogICAgIAotCXJldHVybiBwcF9zY2FuX2J5dGVzKHl5c3RyLHN0cmxlbih5eXN0cikgLHl5c2Nh
bm5lcik7CisJcmV0dXJuIHBwX3NjYW5fYnl0ZXMoeXlzdHIsKGludCkgc3RybGVuKHl5c3RyKSAs
eXlzY2FubmVyKTsKIH0KIAorCisKKwogLyoqIFNldHVwIHRoZSBpbnB1dCBidWZmZXIgc3RhdGUg
dG8gc2NhbiB0aGUgZ2l2ZW4gYnl0ZXMuIFRoZSBuZXh0IGNhbGwgdG8gcHBsZXgoKSB3aWxsCiAg
KiBzY2FuIGZyb20gYSBAZSBjb3B5IG9mIEBhIGJ5dGVzLgogICogQHBhcmFtIHl5Ynl0ZXMgdGhl
IGJ5dGUgYnVmZmVyIHRvIHNjYW4KQEAgLTE5MjksNyArMjI4Miw3IEBAIFlZX0JVRkZFUl9TVEFU
RSBwcF9zY2FuX3N0cmluZyAoeXljb25zdCAKICAqIEBwYXJhbSB5eXNjYW5uZXIgVGhlIHNjYW5u
ZXIgb2JqZWN0LgogICogQHJldHVybiB0aGUgbmV3bHkgYWxsb2NhdGVkIGJ1ZmZlciBzdGF0ZSBv
YmplY3QuCiAgKi8KLVlZX0JVRkZFUl9TVEFURSBwcF9zY2FuX2J5dGVzICAoeXljb25zdCBjaGFy
ICogeXlieXRlcywgeXlfc2l6ZV90ICBfeXlieXRlc19sZW4gLCB5eXNjYW5fdCB5eXNjYW5uZXIp
CitZWV9CVUZGRVJfU1RBVEUgcHBfc2Nhbl9ieXRlcyAgKHl5Y29uc3QgY2hhciAqIHl5Ynl0ZXMs
IGludCAgX3l5Ynl0ZXNfbGVuICwgeXlzY2FuX3QgeXlzY2FubmVyKQogewogCVlZX0JVRkZFUl9T
VEFURSBiOwogCWNoYXIgKmJ1ZjsKQEAgLTE5MzcsMTIgKzIyOTAsMTIgQEAgWVlfQlVGRkVSX1NU
QVRFIHBwX3NjYW5fYnl0ZXMgICh5eWNvbnN0IAogCXl5X3NpemVfdCBpOwogICAgIAogCS8qIEdl
dCBtZW1vcnkgZm9yIGZ1bGwgYnVmZmVyLCBpbmNsdWRpbmcgc3BhY2UgZm9yIHRyYWlsaW5nIEVP
QidzLiAqLwotCW4gPSBfeXlieXRlc19sZW4gKyAyOworCW4gPSAoeXlfc2l6ZV90KSBfeXlieXRl
c19sZW4gKyAyOwogCWJ1ZiA9IChjaGFyICopIHBwYWxsb2MobiAseXlzY2FubmVyICk7CiAJaWYg
KCAhIGJ1ZiApCiAJCVlZX0ZBVEFMX0VSUk9SKCAib3V0IG9mIGR5bmFtaWMgbWVtb3J5IGluIHBw
X3NjYW5fYnl0ZXMoKSIgKTsKIAotCWZvciAoIGkgPSAwOyBpIDwgX3l5Ynl0ZXNfbGVuOyArK2kg
KQorCWZvciAoIGkgPSAwOyBpIDwgc3RhdGljX2Nhc3Q8eXlfc2l6ZV90PihfeXlieXRlc19sZW4p
OyArK2kgKQogCQlidWZbaV0gPSB5eWJ5dGVzW2ldOwogCiAJYnVmW195eWJ5dGVzX2xlbl0gPSBi
dWZbX3l5Ynl0ZXNfbGVuKzFdID0gWVlfRU5EX09GX0JVRkZFUl9DSEFSOwpAQCAtMTk1OSwxMyAr
MjMxMiwyNSBAQCBZWV9CVUZGRVJfU1RBVEUgcHBfc2Nhbl9ieXRlcyAgKHl5Y29uc3QgCiAJcmV0
dXJuIGI7CiB9CiAKKworCisKKworCisKKworCisKKwogI2lmbmRlZiBZWV9FWElUX0ZBSUxVUkUK
ICNkZWZpbmUgWVlfRVhJVF9GQUlMVVJFIDIKICNlbmRpZgogCi1zdGF0aWMgdm9pZCB5eV9mYXRh
bF9lcnJvciAoeXljb25zdCBjaGFyKiBtc2cgLCB5eXNjYW5fdCB5eXNjYW5uZXIpCitzdGF0aWMg
dm9pZCB5eW5vcmV0dXJuIHl5X2ZhdGFsX2Vycm9yICh5eWNvbnN0IGNoYXIqIG1zZyAsIHl5c2Nh
bl90IHl5c2Nhbm5lcikKIHsKLSAgICAJKHZvaWQpIGZwcmludGYoIHN0ZGVyciwgIiVzXG4iLCBt
c2cgKTsKKwlzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5u
ZXI7CisJKHZvaWQpeXlnOworCSh2b2lkKSBmcHJpbnRmKCBzdGRlcnIsICIlc1xuIiwgbXNnICk7
CiAJZXhpdCggWVlfRVhJVF9GQUlMVVJFICk7CiB9CiAKQEAgLTE5ODYsOCArMjM1MSwxMSBAQCBz
dGF0aWMgdm9pZCB5eV9mYXRhbF9lcnJvciAoeXljb25zdCBjaGFyCiAJCX0gXAogCXdoaWxlICgg
MCApCiAKKworCiAvKiBBY2Nlc3NvciAgbWV0aG9kcyAoZ2V0L3NldCBmdW5jdGlvbnMpIHRvIHN0
cnVjdCBtZW1iZXJzLiAqLwogCisKIC8qKiBHZXQgdGhlIHVzZXItZGVmaW5lZCBkYXRhIGZvciB0
aGlzIHNjYW5uZXIuCiAgKiBAcGFyYW0geXlzY2FubmVyIFRoZSBzY2FubmVyIG9iamVjdC4KICAq
LwpAQCAtMTk5Nyw2ICsyMzY1LDggQEAgWVlfRVhUUkFfVFlQRSBwcGdldF9leHRyYSAgKHl5c2Nh
bl90IHl5cwogICAgIHJldHVybiB5eWV4dHJhOwogfQogCisKKwogLyoqIEdldCB0aGUgY3VycmVu
dCBsaW5lIG51bWJlci4KICAqIEBwYXJhbSB5eXNjYW5uZXIgVGhlIHNjYW5uZXIgb2JqZWN0Lgog
ICovCkBAIC0yMDA0LDEyICsyMzc0LDE2IEBAIGludCBwcGdldF9saW5lbm8gICh5eXNjYW5fdCB5
eXNjYW5uZXIpCiB7CiAgICAgc3RydWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNf
dCopeXlzY2FubmVyOwogICAgIAorICAgIAogICAgICAgICBpZiAoISBZWV9DVVJSRU5UX0JVRkZF
UikKICAgICAgICAgICAgIHJldHVybiAwOwogICAgIAogICAgIHJldHVybiB5eWxpbmVubzsKIH0K
IAorCisKKwogLyoqIEdldCB0aGUgY3VycmVudCBjb2x1bW4gbnVtYmVyLgogICogQHBhcmFtIHl5
c2Nhbm5lciBUaGUgc2Nhbm5lciBvYmplY3QuCiAgKi8KQEAgLTIwMTcsMTIgKzIzOTEsMTYgQEAg
aW50IHBwZ2V0X2NvbHVtbiAgKHl5c2Nhbl90IHl5c2Nhbm5lcikKIHsKICAgICBzdHJ1Y3QgeXln
dXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7CiAgICAgCisgICAgCiAg
ICAgICAgIGlmICghIFlZX0NVUlJFTlRfQlVGRkVSKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgCiAgICAgcmV0dXJuIHl5Y29sdW1uOwogfQogCisKKworCiAvKiogR2V0IHRoZSBpbnB1dCBz
dHJlYW0uCiAgKiBAcGFyYW0geXlzY2FubmVyIFRoZSBzY2FubmVyIG9iamVjdC4KICAqLwpAQCAt
MjAzMiw2ICsyNDEwLDggQEAgRklMRSAqcHBnZXRfaW4gICh5eXNjYW5fdCB5eXNjYW5uZXIpCiAg
ICAgcmV0dXJuIHl5aW47CiB9CiAKKworCiAvKiogR2V0IHRoZSBvdXRwdXQgc3RyZWFtLgogICog
QHBhcmFtIHl5c2Nhbm5lciBUaGUgc2Nhbm5lciBvYmplY3QuCiAgKi8KQEAgLTIwNDEsMTUgKzI0
MjEsMTggQEAgRklMRSAqcHBnZXRfb3V0ICAoeXlzY2FuX3QgeXlzY2FubmVyKQogICAgIHJldHVy
biB5eW91dDsKIH0KIAorCisKIC8qKiBHZXQgdGhlIGxlbmd0aCBvZiB0aGUgY3VycmVudCB0b2tl
bi4KICAqIEBwYXJhbSB5eXNjYW5uZXIgVGhlIHNjYW5uZXIgb2JqZWN0LgogICovCi15eV9zaXpl
X3QgcHBnZXRfbGVuZyAgKHl5c2Nhbl90IHl5c2Nhbm5lcikKK2ludCBwcGdldF9sZW5nICAoeXlz
Y2FuX3QgeXlzY2FubmVyKQogewogICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChzdHJ1Y3Qg
eXlndXRzX3QqKXl5c2Nhbm5lcjsKICAgICByZXR1cm4geXlsZW5nOwogfQogCisKIC8qKiBHZXQg
dGhlIGN1cnJlbnQgdG9rZW4uCiAgKiBAcGFyYW0geXlzY2FubmVyIFRoZSBzY2FubmVyIG9iamVj
dC4KICAqLwpAQCAtMjA2MCw2ICsyNDQzLDggQEAgY2hhciAqcHBnZXRfdGV4dCAgKHl5c2Nhbl90
IHl5c2Nhbm5lcikKICAgICByZXR1cm4geXl0ZXh0OwogfQogCisKKwogLyoqIFNldCB0aGUgdXNl
ci1kZWZpbmVkIGRhdGEuIFRoaXMgZGF0YSBpcyBuZXZlciB0b3VjaGVkIGJ5IHRoZSBzY2FubmVy
LgogICogQHBhcmFtIHVzZXJfZGVmaW5lZCBUaGUgZGF0YSB0byBiZSBhc3NvY2lhdGVkIHdpdGgg
dGhpcyBzY2FubmVyLgogICogQHBhcmFtIHl5c2Nhbm5lciBUaGUgc2Nhbm5lciBvYmplY3QuCkBA
IC0yMDcwLDkyICsyNDU1LDEyMyBAQCB2b2lkIHBwc2V0X2V4dHJhIChZWV9FWFRSQV9UWVBFICB1
c2VyX2RlCiAgICAgeXlleHRyYSA9IHVzZXJfZGVmaW5lZCA7CiB9CiAKKworCiAvKiogU2V0IHRo
ZSBjdXJyZW50IGxpbmUgbnVtYmVyLgotICogQHBhcmFtIGxpbmVfbnVtYmVyCisgKiBAcGFyYW0g
X2xpbmVfbnVtYmVyIGxpbmUgbnVtYmVyCiAgKiBAcGFyYW0geXlzY2FubmVyIFRoZSBzY2FubmVy
IG9iamVjdC4KICAqLwotdm9pZCBwcHNldF9saW5lbm8gKGludCAgbGluZV9udW1iZXIgLCB5eXNj
YW5fdCB5eXNjYW5uZXIpCit2b2lkIHBwc2V0X2xpbmVubyAoaW50ICBfbGluZV9udW1iZXIgLCB5
eXNjYW5fdCB5eXNjYW5uZXIpCiB7CiAgICAgc3RydWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVj
dCB5eWd1dHNfdCopeXlzY2FubmVyOwogCisgICAgCiAgICAgICAgIC8qIGxpbmVubyBpcyBvbmx5
IHZhbGlkIGlmIGFuIGlucHV0IGJ1ZmZlciBleGlzdHMuICovCiAgICAgICAgIGlmICghIFlZX0NV
UlJFTlRfQlVGRkVSICkKICAgICAgICAgICAgWVlfRkFUQUxfRVJST1IoICJwcHNldF9saW5lbm8g
Y2FsbGVkIHdpdGggbm8gYnVmZmVyIiApOwogICAgIAotICAgIHl5bGluZW5vID0gbGluZV9udW1i
ZXI7CisgICAgeXlsaW5lbm8gPSBfbGluZV9udW1iZXI7CiB9CiAKKworCisKIC8qKiBTZXQgdGhl
IGN1cnJlbnQgY29sdW1uLgotICogQHBhcmFtIGxpbmVfbnVtYmVyCisgKiBAcGFyYW0gX2NvbHVt
bl9ubyBjb2x1bW4gbnVtYmVyCiAgKiBAcGFyYW0geXlzY2FubmVyIFRoZSBzY2FubmVyIG9iamVj
dC4KICAqLwotdm9pZCBwcHNldF9jb2x1bW4gKGludCAgY29sdW1uX25vICwgeXlzY2FuX3QgeXlz
Y2FubmVyKQordm9pZCBwcHNldF9jb2x1bW4gKGludCAgX2NvbHVtbl9ubyAsIHl5c2Nhbl90IHl5
c2Nhbm5lcikKIHsKICAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190
Kil5eXNjYW5uZXI7CiAKKyAgICAKICAgICAgICAgLyogY29sdW1uIGlzIG9ubHkgdmFsaWQgaWYg
YW4gaW5wdXQgYnVmZmVyIGV4aXN0cy4gKi8KICAgICAgICAgaWYgKCEgWVlfQ1VSUkVOVF9CVUZG
RVIgKQogICAgICAgICAgICBZWV9GQVRBTF9FUlJPUiggInBwc2V0X2NvbHVtbiBjYWxsZWQgd2l0
aCBubyBidWZmZXIiICk7CiAgICAgCi0gICAgeXljb2x1bW4gPSBjb2x1bW5fbm87CisgICAgeXlj
b2x1bW4gPSBfY29sdW1uX25vOwogfQogCisKKworCisKIC8qKiBTZXQgdGhlIGlucHV0IHN0cmVh
bS4gVGhpcyBkb2VzIG5vdCBkaXNjYXJkIHRoZSBjdXJyZW50CiAgKiBpbnB1dCBidWZmZXIuCi0g
KiBAcGFyYW0gaW5fc3RyIEEgcmVhZGFibGUgc3RyZWFtLgorICogQHBhcmFtIF9pbl9zdHIgQSBy
ZWFkYWJsZSBzdHJlYW0uCiAgKiBAcGFyYW0geXlzY2FubmVyIFRoZSBzY2FubmVyIG9iamVjdC4K
ICAqIEBzZWUgcHBfc3dpdGNoX3RvX2J1ZmZlcgogICovCi12b2lkIHBwc2V0X2luIChGSUxFICog
IGluX3N0ciAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKK3ZvaWQgcHBzZXRfaW4gKEZJTEUgKiAgX2lu
X3N0ciAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKIHsKICAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcg
PSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7Ci0gICAgeXlpbiA9IGluX3N0ciA7CisgICAg
eXlpbiA9IF9pbl9zdHIgOwogfQogCi12b2lkIHBwc2V0X291dCAoRklMRSAqICBvdXRfc3RyICwg
eXlzY2FuX3QgeXlzY2FubmVyKQorCisKK3ZvaWQgcHBzZXRfb3V0IChGSUxFICogIF9vdXRfc3Ry
ICwgeXlzY2FuX3QgeXlzY2FubmVyKQogewogICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChz
dHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKLSAgICB5eW91dCA9IG91dF9zdHIgOworICAgIHl5
b3V0ID0gX291dF9zdHIgOwogfQogCisKKworCiBpbnQgcHBnZXRfZGVidWcgICh5eXNjYW5fdCB5
eXNjYW5uZXIpCiB7CiAgICAgc3RydWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNf
dCopeXlzY2FubmVyOwogICAgIHJldHVybiB5eV9mbGV4X2RlYnVnOwogfQogCi12b2lkIHBwc2V0
X2RlYnVnIChpbnQgIGJkZWJ1ZyAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKKworCit2b2lkIHBwc2V0
X2RlYnVnIChpbnQgIF9iZGVidWcgLCB5eXNjYW5fdCB5eXNjYW5uZXIpCiB7CiAgICAgc3RydWN0
IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOwotICAgIHl5X2Zs
ZXhfZGVidWcgPSBiZGVidWcgOworICAgIHl5X2ZsZXhfZGVidWcgPSBfYmRlYnVnIDsKIH0KIAor
CiAvKiBBY2Nlc3NvciBtZXRob2RzIGZvciB5eWx2YWwgYW5kIHl5bGxvYyAqLwogCisKIFlZU1RZ
UEUgKiBwcGdldF9sdmFsICAoeXlzY2FuX3QgeXlzY2FubmVyKQogewogICAgIHN0cnVjdCB5eWd1
dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKICAgICByZXR1cm4geXls
dmFsOwogfQogCisKKwogdm9pZCBwcHNldF9sdmFsIChZWVNUWVBFICogIHl5bHZhbF9wYXJhbSAs
IHl5c2Nhbl90IHl5c2Nhbm5lcikKIHsKICAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3Ry
dWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7CiAgICAgeXlsdmFsID0geXlsdmFsX3BhcmFtOwogfQog
CisKKworICAgIAogWVlMVFlQRSAqcHBnZXRfbGxvYyAgKHl5c2Nhbl90IHl5c2Nhbm5lcikKIHsK
ICAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7
CiAgICAgcmV0dXJuIHl5bGxvYzsKIH0KICAgICAKKworICAgIAogdm9pZCBwcHNldF9sbG9jIChZ
WUxUWVBFICogIHl5bGxvY19wYXJhbSAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKIHsKICAgICBzdHJ1
Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7CiAgICAgeXls
bG9jID0geXlsbG9jX3BhcmFtOwogfQogICAgIAorCisKKworCiAvKiBVc2VyLXZpc2libGUgQVBJ
ICovCiAKIC8qIHBwbGV4X2luaXQgaXMgc3BlY2lhbCBiZWNhdXNlIGl0IGNyZWF0ZXMgdGhlIHNj
YW5uZXIgaXRzZWxmLCBzbyBpdCBpcwpAQCAtMjE4NCw2ICsyNjAwLDcgQEAgaW50IHBwbGV4X2lu
aXQoeXlzY2FuX3QqIHB0cl95eV9nbG9iYWxzKQogICAgIHJldHVybiB5eV9pbml0X2dsb2JhbHMg
KCAqcHRyX3l5X2dsb2JhbHMgKTsKIH0KIAorCiAvKiBwcGxleF9pbml0X2V4dHJhIGhhcyB0aGUg
c2FtZSBmdW5jdGlvbmFsaXR5IGFzIHBwbGV4X2luaXQsIGJ1dCBmb2xsb3dzIHRoZQogICogY29u
dmVudGlvbiBvZiB0YWtpbmcgdGhlIHNjYW5uZXIgYXMgdGhlIGxhc3QgYXJndW1lbnQuIE5vdGUg
aG93ZXZlciwgdGhhdAogICogdGhpcyBpcyBhICpwb2ludGVyKiB0byBhIHNjYW5uZXIsIGFzIGl0
IHdpbGwgYmUgYWxsb2NhdGVkIGJ5IHRoaXMgY2FsbCAoYW5kCkBAIC0yMjIwLDYgKzI2MzcsNyBA
QCBpbnQgcHBsZXhfaW5pdF9leHRyYShZWV9FWFRSQV9UWVBFIHl5X3VzCiAgICAgcmV0dXJuIHl5
X2luaXRfZ2xvYmFscyAoICpwdHJfeXlfZ2xvYmFscyApOwogfQogCisKIHN0YXRpYyBpbnQgeXlf
aW5pdF9nbG9iYWxzICh5eXNjYW5fdCB5eXNjYW5uZXIpCiB7CiAgICAgc3RydWN0IHl5Z3V0c190
ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOwpAQCAtMjIyNywyNCArMjY0NSwz
MSBAQCBzdGF0aWMgaW50IHl5X2luaXRfZ2xvYmFscyAoeXlzY2FuX3QgeXlzCiAgICAgICogVGhp
cyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBwcGxleF9kZXN0cm95KCksIHNvIGRvbid0IGFsbG9j
YXRlIGhlcmUuCiAgICAgICovCiAKLSAgICB5eWctPnl5X2J1ZmZlcl9zdGFjayA9IDA7CisKKyAg
ICB5eWctPnl5X2J1ZmZlcl9zdGFjayA9IE5VTEw7CiAgICAgeXlnLT55eV9idWZmZXJfc3RhY2tf
dG9wID0gMDsKICAgICB5eWctPnl5X2J1ZmZlcl9zdGFja19tYXggPSAwOwotICAgIHl5Zy0+eXlf
Y19idWZfcCA9IChjaGFyICopIDA7CisgICAgeXlnLT55eV9jX2J1Zl9wID0gTlVMTDsKICAgICB5
eWctPnl5X2luaXQgPSAwOwogICAgIHl5Zy0+eXlfc3RhcnQgPSAwOwogCisKICAgICB5eWctPnl5
X3N0YXJ0X3N0YWNrX3B0ciA9IDA7CiAgICAgeXlnLT55eV9zdGFydF9zdGFja19kZXB0aCA9IDA7
CiAgICAgeXlnLT55eV9zdGFydF9zdGFjayA9ICBOVUxMOwogCisKKworCisKKwogLyogRGVmaW5l
ZCBpbiBtYWluLmMgKi8KICNpZmRlZiBZWV9TVERJTklUCiAgICAgeXlpbiA9IHN0ZGluOwogICAg
IHl5b3V0ID0gc3Rkb3V0OwogI2Vsc2UKLSAgICB5eWluID0gKEZJTEUgKikgMDsKLSAgICB5eW91
dCA9IChGSUxFICopIDA7CisgICAgeXlpbiA9IE5VTEw7CisgICAgeXlvdXQgPSBOVUxMOwogI2Vu
ZGlmCiAKICAgICAvKiBGb3IgZnV0dXJlIHJlZmVyZW5jZTogU2V0IGVycm5vIG9uIGVycm9yLCBz
aW5jZSB3ZSBhcmUgY2FsbGVkIGJ5CkBAIC0yMjUzLDYgKzI2NzgsNyBAQCBzdGF0aWMgaW50IHl5
X2luaXRfZ2xvYmFscyAoeXlzY2FuX3QgeXlzCiAgICAgcmV0dXJuIDA7CiB9CiAKKwogLyogcHBs
ZXhfZGVzdHJveSBpcyBmb3IgYm90aCByZWVudHJhbnQgYW5kIG5vbi1yZWVudHJhbnQgc2Nhbm5l
cnMuICovCiBpbnQgcHBsZXhfZGVzdHJveSAgKHl5c2Nhbl90IHl5c2Nhbm5lcikKIHsKQEAgLTIy
NjksMTAgKzI2OTUsMTQgQEAgaW50IHBwbGV4X2Rlc3Ryb3kgICh5eXNjYW5fdCB5eXNjYW5uZXIp
CiAJcHBmcmVlKHl5Zy0+eXlfYnVmZmVyX3N0YWNrICx5eXNjYW5uZXIpOwogCXl5Zy0+eXlfYnVm
ZmVyX3N0YWNrID0gTlVMTDsKIAorCiAgICAgLyogRGVzdHJveSB0aGUgc3RhcnQgY29uZGl0aW9u
IHN0YWNrLiAqLwogICAgICAgICBwcGZyZWUoeXlnLT55eV9zdGFydF9zdGFjayAseXlzY2FubmVy
ICk7CiAgICAgICAgIHl5Zy0+eXlfc3RhcnRfc3RhY2sgPSBOVUxMOwogCisKKworCiAgICAgLyog
UmVzZXQgdGhlIGdsb2JhbHMuIFRoaXMgaXMgaW1wb3J0YW50IGluIGEgbm9uLXJlZW50cmFudCBz
Y2FubmVyIHNvIHRoZSBuZXh0IHRpbWUKICAgICAgKiBwcGxleCgpIGlzIGNhbGxlZCwgaW5pdGlh
bGl6YXRpb24gd2lsbCBvY2N1ci4gKi8KICAgICB5eV9pbml0X2dsb2JhbHMoIHl5c2Nhbm5lcik7
CkBAIC0yMjgzLDIzICsyNzEzLDMyIEBAIGludCBwcGxleF9kZXN0cm95ICAoeXlzY2FuX3QgeXlz
Y2FubmVyKQogICAgIHJldHVybiAwOwogfQogCisKKwogLyoKICAqIEludGVybmFsIHV0aWxpdHkg
cm91dGluZXMuCiAgKi8KIAorCisKICNpZm5kZWYgeXl0ZXh0X3B0cgogc3RhdGljIHZvaWQgeXlf
ZmxleF9zdHJuY3B5IChjaGFyKiBzMSwgeXljb25zdCBjaGFyICogczIsIGludCBuICwgeXlzY2Fu
X3QgeXlzY2FubmVyKQogewotCXJlZ2lzdGVyIGludCBpOworCXN0cnVjdCB5eWd1dHNfdCAqIHl5
ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKKwkodm9pZCl5eWc7CisKKwlpbnQgaTsK
IAlmb3IgKCBpID0gMDsgaSA8IG47ICsraSApCiAJCXMxW2ldID0gczJbaV07CiB9CiAjZW5kaWYK
IAorCisKICNpZmRlZiBZWV9ORUVEX1NUUkxFTgogc3RhdGljIGludCB5eV9mbGV4X3N0cmxlbiAo
eXljb25zdCBjaGFyICogcyAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKIHsKLQlyZWdpc3RlciBpbnQg
bjsKKwlpbnQgbjsKIAlmb3IgKCBuID0gMDsgc1tuXTsgKytuICkKIAkJOwogCkBAIC0yMzA3LDEz
ICsyNzQ2LDIyIEBAIHN0YXRpYyBpbnQgeXlfZmxleF9zdHJsZW4gKHl5Y29uc3QgY2hhciAKIH0K
ICNlbmRpZgogCisKKwogdm9pZCAqcHBhbGxvYyAoeXlfc2l6ZV90ICBzaXplICwgeXlzY2FuX3Qg
eXlzY2FubmVyKQogewotCXJldHVybiAodm9pZCAqKSBtYWxsb2MoIHNpemUgKTsKKwlzdHJ1Y3Qg
eXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7CisJKHZvaWQpeXln
OworCXJldHVybiBtYWxsb2Moc2l6ZSk7CiB9CiAKKworCiB2b2lkICpwcHJlYWxsb2MgICh2b2lk
ICogcHRyLCB5eV9zaXplX3QgIHNpemUgLCB5eXNjYW5fdCB5eXNjYW5uZXIpCiB7CisJc3RydWN0
IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOworCSh2b2lkKXl5
ZzsKKwogCS8qIFRoZSBjYXN0IHRvIChjaGFyICopIGluIHRoZSBmb2xsb3dpbmcgYWNjb21tb2Rh
dGVzIGJvdGgKIAkgKiBpbXBsZW1lbnRhdGlvbnMgdGhhdCB1c2UgY2hhciogZ2VuZXJpYyBwb2lu
dGVycywgYW5kIHRob3NlCiAJICogdGhhdCB1c2Ugdm9pZCogZ2VuZXJpYyBwb2ludGVycy4gIEl0
IHdvcmtzIHdpdGggdGhlIGxhdHRlcgpAQCAtMjMyMSwyMSArMjc2OSwzMiBAQCB2b2lkICpwcHJl
YWxsb2MgICh2b2lkICogcHRyLCB5eV9zaXplX3QgCiAJICogYW55IHBvaW50ZXIgdHlwZSB0byB2
b2lkKiwgYW5kIGRlYWwgd2l0aCBhcmd1bWVudCBjb252ZXJzaW9ucwogCSAqIGFzIHRob3VnaCBk
b2luZyBhbiBhc3NpZ25tZW50LgogCSAqLwotCXJldHVybiAodm9pZCAqKSByZWFsbG9jKCAoY2hh
ciAqKSBwdHIsIHNpemUgKTsKKwlyZXR1cm4gcmVhbGxvYyhwdHIsIHNpemUpOwogfQogCisKKwog
dm9pZCBwcGZyZWUgKHZvaWQgKiBwdHIgLCB5eXNjYW5fdCB5eXNjYW5uZXIpCiB7CisJc3RydWN0
IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOworCSh2b2lkKXl5
ZzsKIAlmcmVlKCAoY2hhciAqKSBwdHIgKTsJLyogc2VlIHBwcmVhbGxvYygpIGZvciAoY2hhciAq
KSBjYXN0ICovCiB9CiAKKwogI2RlZmluZSBZWVRBQkxFU19OQU1FICJ5eXRhYmxlcyIKIAorCisK
KworCisKKworCisKIG5hbWVzcGFjZSBwcCB7CiAKLVRva2VuaXplcjo6VG9rZW5pemVyKERpYWdu
b3N0aWNzICpkaWFnbm9zdGljcykKLSAgICA6IG1IYW5kbGUoMCksCi0gICAgICBtTWF4VG9rZW5T
aXplKDI1NikKK1Rva2VuaXplcjo6VG9rZW5pemVyKERpYWdub3N0aWNzICpkaWFnbm9zdGljcykg
OiBtSGFuZGxlKG51bGxwdHIpLCBtTWF4VG9rZW5TaXplKDI1NikKIHsKICAgICBtQ29udGV4dC5k
aWFnbm9zdGljcyA9IGRpYWdub3N0aWNzOwogfQpAQCAtMjM5Miw3ICsyODUxLDcgQEAgdm9pZCBU
b2tlbml6ZXI6OmxleChUb2tlbiAqdG9rZW4pCiAKIGJvb2wgVG9rZW5pemVyOjppbml0U2Nhbm5l
cigpCiB7Ci0gICAgaWYgKChtSGFuZGxlID09IE5VTEwpICYmIHBwbGV4X2luaXRfZXh0cmEoJm1D
b250ZXh0LCZtSGFuZGxlKSkKKyAgICBpZiAoKG1IYW5kbGUgPT0gbnVsbHB0cikgJiYgcHBsZXhf
aW5pdF9leHRyYSgmbUNvbnRleHQsICZtSGFuZGxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgcHByZXN0YXJ0KDAsbUhhbmRsZSk7CkBAIC0yNDAxLDEyICsyODYwLDEzIEBAIGJvb2wg
VG9rZW5pemVyOjppbml0U2Nhbm5lcigpCiAKIHZvaWQgVG9rZW5pemVyOjpkZXN0cm95U2Nhbm5l
cigpCiB7Ci0gICAgaWYgKG1IYW5kbGUgPT0gTlVMTCkKKyAgICBpZiAobUhhbmRsZSA9PSBudWxs
cHRyKQogICAgICAgICByZXR1cm47CiAKICAgICBwcGxleF9kZXN0cm95KG1IYW5kbGUpOwotICAg
IG1IYW5kbGUgPSBOVUxMOworICAgIG1IYW5kbGUgPSBudWxscHRyOwogfQogCiB9ICAvLyBuYW1l
c3BhY2UgcHAKIAorCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
cHJlcHJvY2Vzc29yL1Rva2VuaXplci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmgJKHJldmlzaW9uIDIw
NzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNz
b3IvVG9rZW5pemVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTcsOSArNyw5IEBACiAjaWZuZGVmIENP
TVBJTEVSX1BSRVBST0NFU1NPUl9UT0tFTklaRVJfSF8KICNkZWZpbmUgQ09NUElMRVJfUFJFUFJP
Q0VTU09SX1RPS0VOSVpFUl9IXwogCi0jaW5jbHVkZSAiSW5wdXQuaCIKLSNpbmNsdWRlICJMZXhl
ci5oIgotI2luY2x1ZGUgInBwX3V0aWxzLmgiCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMu
aCIKKyNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvSW5wdXQuaCIKKyNpbmNsdWRlICJj
b21waWxlci9wcmVwcm9jZXNzb3IvTGV4ZXIuaCIKIAogbmFtZXNwYWNlIHBwCiB7CkBAIC00NSw3
ICs0NSw2IEBAIGNsYXNzIFRva2VuaXplciA6IHB1YmxpYyBMZXhlcgogICAgIHZvaWQgbGV4KFRv
a2VuICp0b2tlbikgb3ZlcnJpZGU7CiAKICAgcHJpdmF0ZToKLSAgICBQUF9ESVNBTExPV19DT1BZ
X0FORF9BU1NJR04oVG9rZW5pemVyKTsKICAgICBib29sIGluaXRTY2FubmVyKCk7CiAgICAgdm9p
ZCBkZXN0cm95U2Nhbm5lcigpOwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmwJKHJl
dmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9w
cmVwcm9jZXNzb3IvVG9rZW5pemVyLmwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEwICsyNywxMCBA
QCBJRiBZT1UgTU9ESUZZIFRISVMgRklMRSBZT1UgQUxTTyBORUVEIFRPCiAjcHJhZ21hIHdhcm5p
bmcoZGlzYWJsZTogNDAwNSkKICNlbmRpZgogCi0jaW5jbHVkZSAiVG9rZW5pemVyLmgiCisjaW5j
bHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5oIgogCi0jaW5jbHVkZSAiRGlh
Z25vc3RpY3NCYXNlLmgiCi0jaW5jbHVkZSAiVG9rZW4uaCIKKyNpbmNsdWRlICJjb21waWxlci9w
cmVwcm9jZXNzb3IvRGlhZ25vc3RpY3NCYXNlLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJv
Y2Vzc29yL1Rva2VuLmgiCiAKICNpZiBkZWZpbmVkKF9fR05VQ19fKQogLy8gVHJpZ2dlcmVkIGJ5
IHRoZSBhdXRvLWdlbmVyYXRlZCB5eV9mYXRhbF9lcnJvciBmdW5jdGlvbi4KQEAgLTI4MCw5ICsy
ODAsNyBAQCBGUkFDVElPTkFMX0NPTlNUQU5UICAoe0RJR0lUfSoiLiJ7RElHSVR9CiAKIG5hbWVz
cGFjZSBwcCB7CiAKLVRva2VuaXplcjo6VG9rZW5pemVyKERpYWdub3N0aWNzICpkaWFnbm9zdGlj
cykKLSAgICA6IG1IYW5kbGUoMCksCi0gICAgICBtTWF4VG9rZW5TaXplKDI1NikKK1Rva2VuaXpl
cjo6VG9rZW5pemVyKERpYWdub3N0aWNzICpkaWFnbm9zdGljcykgOiBtSGFuZGxlKG51bGxwdHIp
LCBtTWF4VG9rZW5TaXplKDI1NikKIHsKICAgICBtQ29udGV4dC5kaWFnbm9zdGljcyA9IGRpYWdu
b3N0aWNzOwogfQpAQCAtMzM5LDcgKzMzNyw3IEBAIHZvaWQgVG9rZW5pemVyOjpsZXgoVG9rZW4g
KnRva2VuKQogCiBib29sIFRva2VuaXplcjo6aW5pdFNjYW5uZXIoKQogewotICAgIGlmICgobUhh
bmRsZSA9PSBOVUxMKSAmJiB5eWxleF9pbml0X2V4dHJhKCZtQ29udGV4dCwgJm1IYW5kbGUpKQor
ICAgIGlmICgobUhhbmRsZSA9PSBudWxscHRyKSAmJiB5eWxleF9pbml0X2V4dHJhKCZtQ29udGV4
dCwgJm1IYW5kbGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICB5eXJlc3RhcnQoMCwg
bUhhbmRsZSk7CkBAIC0zNDgsMTEgKzM0NiwxMSBAQCBib29sIFRva2VuaXplcjo6aW5pdFNjYW5u
ZXIoKQogCiB2b2lkIFRva2VuaXplcjo6ZGVzdHJveVNjYW5uZXIoKQogewotICAgIGlmIChtSGFu
ZGxlID09IE5VTEwpCisgICAgaWYgKG1IYW5kbGUgPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJu
OwogCiAgICAgeXlsZXhfZGVzdHJveShtSGFuZGxlKTsKLSAgICBtSGFuZGxlID0gTlVMTDsKKyAg
ICBtSGFuZGxlID0gbnVsbHB0cjsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHBwCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL3BwX3V0aWxzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXBy
b2Nlc3Nvci9wcF91dGlscy5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL3BwX3V0aWxzLmgJKG5vbmV4aXN0ZW50
KQpAQCAtMSwxOCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0v
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gcHBfdXRpbHMuaDogQ29tbW9u
IHByZXByb2Nlc3NvciB1dGlsaXRpZXMKLQotI2lmbmRlZiBDT01QSUxFUl9QUkVQUk9DRVNTT1Jf
UFBVVElMU19IXwotI2RlZmluZSBDT01QSUxFUl9QUkVQUk9DRVNTT1JfUFBVVElMU19IXwotCi0v
LyBBIG1hY3JvIHRvIGRpc2FsbG93IHRoZSBjb3B5IGNvbnN0cnVjdG9yIGFuZCBvcGVyYXRvcj0g
ZnVuY3Rpb25zCi0vLyBUaGlzIG11c3QgYmUgdXNlZCBpbiB0aGUgcHJpdmF0ZTogZGVjbGFyYXRp
b25zIGZvciBhIGNsYXNzLgotI2RlZmluZSBQUF9ESVNBTExPV19DT1BZX0FORF9BU1NJR04oVHlw
ZU5hbWUpIFwKLSAgVHlwZU5hbWUoY29uc3QgVHlwZU5hbWUgJik7ICAgICAgICAgICAgICAgXAot
ICB2b2lkIG9wZXJhdG9yPShjb25zdCBUeXBlTmFtZSAmKQotCi0jZW5kaWYgLy8gQ09NUElMRVJf
UFJFUFJPQ0VTU09SX1BQVVRJTFNfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL0FTVE1ldGFkYXRhSExTTC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQVNUTWV0YWRh
dGFITFNMLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQVNUTWV0YWRhdGFITFNMLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNyArMzEsNyBAQCBjbGFzcyBQdWxsR3JhZGllbnQgOiBwdWJsaWMgVEludGVybVRy
YXZlCiAgICAgICAgIEFTU0VSVChpbmRleCA8IG1ldGFkYXRhTGlzdC0+c2l6ZSgpKTsKICAgICB9
CiAKLSAgICB2b2lkIHRyYXZlcnNlKFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpCisgICAgdm9pZCB0
cmF2ZXJzZShUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICpub2RlKQogICAgIHsKICAgICAgICAg
bm9kZS0+dHJhdmVyc2UodGhpcyk7CiAgICAgICAgIEFTU0VSVChtUGFyZW50cy5lbXB0eSgpKTsK
QEAgLTcyLDkgKzcyLDkgQEAgY2xhc3MgUHVsbEdyYWRpZW50IDogcHVibGljIFRJbnRlcm1UcmF2
ZQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBib29sIHZpc2l0U2VsZWN0aW9u
KFZpc2l0IHZpc2l0LCBUSW50ZXJtU2VsZWN0aW9uICpzZWxlY3Rpb24pIG92ZXJyaWRlCisgICAg
Ym9vbCB2aXNpdElmRWxzZShWaXNpdCB2aXNpdCwgVEludGVybUlmRWxzZSAqaWZFbHNlKSBvdmVy
cmlkZQogICAgIHsKLSAgICAgICAgdmlzaXRDb250cm9sRmxvdyh2aXNpdCwgc2VsZWN0aW9uKTsK
KyAgICAgICAgdmlzaXRDb250cm9sRmxvdyh2aXNpdCwgaWZFbHNlKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCkBAIC0xMDMsNyArMTAzLDcgQEAgY2xhc3MgUHVsbEdyYWRpZW50IDog
cHVibGljIFRJbnRlcm1UcmF2ZQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGlmIChu
b2RlLT5pc1VzZXJEZWZpbmVkKCkpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgY2FsbGVlSW5kZXggPSBtRGFnLmZpbmRJbmRleChub2RlKTsKKyAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGNhbGxlZUluZGV4ID0gbURhZy5maW5kSW5kZXgobm9kZS0+Z2V0
RnVuY3Rpb25TeW1ib2xJbmZvKCkpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY2FsbGVl
SW5kZXggIT0gQ2FsbERBRzo6SW52YWxpZEluZGV4ICYmIGNhbGxlZUluZGV4IDwgbUluZGV4KTsK
ICAgICAgICAgICAgICAgICAgICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRShtSW5kZXgpOwog
CkBAIC0xMTMsNyArMTEzLDggQEAgY2xhc3MgUHVsbEdyYWRpZW50IDogcHVibGljIFRJbnRlcm1U
cmF2ZQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICBUU3RyaW5nIG5hbWUgPSBURnVuY3Rpb246OnVu
bWFuZ2xlTmFtZShub2RlLT5nZXROYW1lKCkpOworICAgICAgICAgICAgICAgICAgICBUU3RyaW5n
IG5hbWUgPQorICAgICAgICAgICAgICAgICAgICAgICAgVEZ1bmN0aW9uOjp1bm1hbmdsZU5hbWUo
bm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5hbWUoKSk7CiAKICAgICAgICAgICAg
ICAgICAgICAgaWYgKG5hbWUgPT0gInRleHR1cmUyRCIgfHwKICAgICAgICAgICAgICAgICAgICAg
ICAgIG5hbWUgPT0gInRleHR1cmUyRFByb2oiIHx8CkBAIC0xNTcsNyArMTU4LDcgQEAgY2xhc3Mg
UHVsbENvbXB1dGVEaXNjb250aW51b3VzQW5kR3JhZGllbgogICAgIHsKICAgICB9CiAKLSAgICB2
b2lkIHRyYXZlcnNlKFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpCisgICAgdm9pZCB0cmF2ZXJzZShU
SW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICpub2RlKQogICAgIHsKICAgICAgICAgbm9kZS0+dHJh
dmVyc2UodGhpcyk7CiAgICAgICAgIEFTU0VSVChtTG9vcHNBbmRTd2l0Y2hlcy5lbXB0eSgpKTsK
QEAgLTE5Niw3ICsxOTcsNyBAQCBjbGFzcyBQdWxsQ29tcHV0ZURpc2NvbnRpbnVvdXNBbmRHcmFk
aWVuCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGJvb2wgdmlzaXRTZWxlY3Rp
b24oVmlzaXQgdmlzaXQsIFRJbnRlcm1TZWxlY3Rpb24gKm5vZGUpIG92ZXJyaWRlCisgICAgYm9v
bCB2aXNpdElmRWxzZShWaXNpdCB2aXNpdCwgVEludGVybUlmRWxzZSAqbm9kZSkgb3ZlcnJpZGUK
ICAgICB7CiAgICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkKICAgICAgICAgewpAQCAtMjc1
LDcgKzI3Niw3IEBAIGNsYXNzIFB1bGxDb21wdXRlRGlzY29udGludW91c0FuZEdyYWRpZW4KICAg
ICAgICAgewogICAgICAgICAgICAgaWYgKG5vZGUtPmlzVXNlckRlZmluZWQoKSkKICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBzaXplX3QgY2FsbGVlSW5kZXggPSBtRGFnLmZpbmRJbmRl
eChub2RlKTsKKyAgICAgICAgICAgICAgICBzaXplX3QgY2FsbGVlSW5kZXggPSBtRGFnLmZpbmRJ
bmRleChub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKSk7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKGNhbGxlZUluZGV4ICE9IENhbGxEQUc6OkludmFsaWRJbmRleCAmJiBjYWxsZWVJbmRleCA8
IG1JbmRleCk7CiAgICAgICAgICAgICAgICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRShtSW5k
ZXgpOwogCkBAIC0zMTAsNyArMzExLDcgQEAgY2xhc3MgUHVsbENvbXB1dGVEaXNjb250aW51b3Vz
QW5kR3JhZGllbgogICAgIGNvbnN0IENhbGxEQUcgJm1EYWc7CiAKICAgICBzdGQ6OnZlY3RvcjxU
SW50ZXJtTm9kZSo+IG1Mb29wc0FuZFN3aXRjaGVzOwotICAgIHN0ZDo6dmVjdG9yPFRJbnRlcm1T
ZWxlY3Rpb24qPiBtSWZzOworICAgIHN0ZDo6dmVjdG9yPFRJbnRlcm1JZkVsc2UgKj4gbUlmczsK
IH07CiAKIC8vIFRhZ3MgYWxsIHRoZSBmdW5jdGlvbnMgY2FsbGVkIGluIGEgZGlzY29udGludW91
cyBsb29wCkBAIC0zMjcsNyArMzI4LDcgQEAgY2xhc3MgUHVzaERpc2NvbnRpbnVvdXNMb29wcyA6
IHB1YmxpYyBUSQogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIHRyYXZlcnNlKFRJbnRlcm1BZ2dy
ZWdhdGUgKm5vZGUpCisgICAgdm9pZCB0cmF2ZXJzZShUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9u
ICpub2RlKQogICAgIHsKICAgICAgICAgbm9kZS0+dHJhdmVyc2UodGhpcyk7CiAgICAgICAgIEFT
U0VSVChtTmVzdGVkRGlzY29udCA9PSAobU1ldGFkYXRhLT5tQ2FsbGVkSW5EaXNjb250aW51b3Vz
TG9vcCA/IDEgOiAwKSk7CkBAIC0zNTYsNyArMzU3LDcgQEAgY2xhc3MgUHVzaERpc2NvbnRpbnVv
dXNMb29wcyA6IHB1YmxpYyBUSQogICAgICAgICAgIGNhc2UgRU9wRnVuY3Rpb25DYWxsOgogICAg
ICAgICAgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0ICYmIG5vZGUtPmlzVXNlckRlZmluZWQoKSAm
JiBtTmVzdGVkRGlzY29udCA+IDApCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc2l6
ZV90IGNhbGxlZUluZGV4ID0gbURhZy5maW5kSW5kZXgobm9kZSk7CisgICAgICAgICAgICAgICAg
c2l6ZV90IGNhbGxlZUluZGV4ID0gbURhZy5maW5kSW5kZXgobm9kZS0+Z2V0RnVuY3Rpb25TeW1i
b2xJbmZvKCkpOwogICAgICAgICAgICAgICAgIEFTU0VSVChjYWxsZWVJbmRleCAhPSBDYWxsREFH
OjpJbnZhbGlkSW5kZXggJiYgY2FsbGVlSW5kZXggPCBtSW5kZXgpOwogICAgICAgICAgICAgICAg
IFVOVVNFRF9BU1NFUlRJT05fVkFSSUFCTEUobUluZGV4KTsKIApAQCAtMzg1LDcgKzM4Niw3IEBA
IGJvb2wgQVNUTWV0YWRhdGFITFNMOjpoYXNHcmFkaWVudEluQ2FsbEcKICAgICByZXR1cm4gbUNv
bnRyb2xGbG93c0NvbnRhaW5pbmdHcmFkaWVudC5jb3VudChub2RlKSA+IDA7CiB9CiAKLWJvb2wg
QVNUTWV0YWRhdGFITFNMOjpoYXNHcmFkaWVudExvb3AoVEludGVybVNlbGVjdGlvbiAqbm9kZSkK
K2Jvb2wgQVNUTWV0YWRhdGFITFNMOjpoYXNHcmFkaWVudExvb3AoVEludGVybUlmRWxzZSAqbm9k
ZSkKIHsKICAgICByZXR1cm4gbUlmc0NvbnRhaW5pbmdHcmFkaWVudExvb3AuY291bnQobm9kZSkg
PiAwOwogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvQVNUTWV0YWRhdGFITFNMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQVNUTWV0YWRhdGFITFNMLmgJKHJldmlzaW9u
IDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL0FTVE1ldGFkYXRhSExTTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw3ICsxNCw3IEBACiAK
IGNsYXNzIENhbGxEQUc7CiBjbGFzcyBUSW50ZXJtTm9kZTsKLWNsYXNzIFRJbnRlcm1TZWxlY3Rp
b247CitjbGFzcyBUSW50ZXJtSWZFbHNlOwogY2xhc3MgVEludGVybUxvb3A7CiAKIHN0cnVjdCBB
U1RNZXRhZGF0YUhMU0wKQEAgLTMwLDcgKzMwLDcgQEAgc3RydWN0IEFTVE1ldGFkYXRhSExTTAog
ICAgIC8vIEhlcmUgInNvbWV0aGluZyB1c2VzIGEgZ3JhZGllbnQiIG1lYW5zIGhlcmUgdGhhdCBp
dCBlaXRoZXIgY29udGFpbnMgYQogICAgIC8vIGdyYWRpZW50IG9wZXJhdGlvbiwgb3IgYSBjYWxs
IHRvIGEgZnVuY3Rpb24gdGhhdCB1c2VzIGEgZ3JhZGllbnQuCiAgICAgYm9vbCBoYXNHcmFkaWVu
dEluQ2FsbEdyYXBoKFRJbnRlcm1Mb29wICpub2RlKTsKLSAgICBib29sIGhhc0dyYWRpZW50TG9v
cChUSW50ZXJtU2VsZWN0aW9uICpub2RlKTsKKyAgICBib29sIGhhc0dyYWRpZW50TG9vcChUSW50
ZXJtSWZFbHNlICpub2RlKTsKIAogICAgIC8vIERvZXMgdGhlIGZ1bmN0aW9uIHVzZSBhIGdyYWRp
ZW50LgogICAgIGJvb2wgbVVzZXNHcmFkaWVudDsKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RydWN0IEFT
VE1ldGFkYXRhSExTTAogICAgIGJvb2wgbUNhbGxlZEluRGlzY29udGludW91c0xvb3A7CiAgICAg
Ym9vbCBtSGFzR3JhZGllbnRMb29wSW5DYWxsR3JhcGg7CiAgICAgc3RkOjpzZXQ8VEludGVybUxv
b3AqPiBtRGlzY29udGludW91c0xvb3BzOwotICAgIHN0ZDo6c2V0PFRJbnRlcm1TZWxlY3Rpb24g
Kj4gbUlmc0NvbnRhaW5pbmdHcmFkaWVudExvb3A7CisgICAgc3RkOjpzZXQ8VEludGVybUlmRWxz
ZSAqPiBtSWZzQ29udGFpbmluZ0dyYWRpZW50TG9vcDsKIAogICAgIC8vIFdpbGwgd2UgbmVlZCB0
byBnZW5lcmF0ZSBhIExvZDAgdmVyc2lvbiBvZiB0aGUgZnVuY3Rpb24uCiAgICAgYm9vbCBtTmVl
ZHNMb2QwOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvQWRkQW5kVHJ1ZVRvTG9vcENvbmRpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQWRkQW5kVHJ1ZVRvTG9v
cENvbmRpdGlvbi5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQWRkQW5kVHJ1ZVRvTG9vcENvbmRpdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw1OSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpbmNsdWRlICJj
b21waWxlci90cmFuc2xhdG9yL0FkZEFuZFRydWVUb0xvb3BDb25kaXRpb24uaCIKKworI2luY2x1
ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgorCituYW1lc3BhY2Ugc2gKK3sK
KworbmFtZXNwYWNlCit7CisKKy8vIEFuIEFTVCB0cmF2ZXJzZXIgdGhhdCByZXdyaXRlcyBmb3Ig
YW5kIHdoaWxlIGxvb3BzIGJ5IHJlcGxhY2luZyAiY29uZGl0aW9uIiB3aXRoCisvLyAiY29uZGl0
aW9uICYmIHRydWUiIHRvIHdvcmsgYXJvdW5kIGNvbmRpdGlvbiBidWcgb24gSW50ZWwgTWFjLgor
Y2xhc3MgQWRkQW5kVHJ1ZVRvTG9vcENvbmRpdGlvblRyYXZlcnNlciA6IHB1YmxpYyBUSW50ZXJt
VHJhdmVyc2VyCit7CisgIHB1YmxpYzoKKyAgICBBZGRBbmRUcnVlVG9Mb29wQ29uZGl0aW9uVHJh
dmVyc2VyKCkgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSkge30KKworICAg
IGJvb2wgdmlzaXRMb29wKFZpc2l0LCBUSW50ZXJtTG9vcCAqbG9vcCkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIC8vIGRvLXdoaWxlIGxvb3AgZG9lc24ndCBoYXZlIHRoaXMgYnVnLgorICAgICAg
ICBpZiAobG9vcC0+Z2V0VHlwZSgpICE9IEVMb29wRm9yICYmIGxvb3AtPmdldFR5cGUoKSAhPSBF
TG9vcFdoaWxlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIEZvciBsb29wIG1heSBub3QgaGF2ZSBhIGNvbmRpdGlvbi4KKyAgICAg
ICAgaWYgKGxvb3AtPmdldENvbmRpdGlvbigpID09IG51bGxwdHIpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ29uc3RhbnQgdHJ1
ZS4KKyAgICAgICAgVENvbnN0YW50VW5pb24gKnRydWVDb25zdGFudCA9IG5ldyBUQ29uc3RhbnRV
bmlvbigpOworICAgICAgICB0cnVlQ29uc3RhbnQtPnNldEJDb25zdCh0cnVlKTsKKyAgICAgICAg
VEludGVybVR5cGVkICp0cnVlVmFsdWUgPSBuZXcgVEludGVybUNvbnN0YW50VW5pb24odHJ1ZUNv
bnN0YW50LCBUVHlwZShFYnRCb29sKSk7CisKKyAgICAgICAgLy8gQ09ORElUSU9OICYmIHRydWUu
CisgICAgICAgIFRJbnRlcm1CaW5hcnkgKmFuZE9wID0gbmV3IFRJbnRlcm1CaW5hcnkoRU9wTG9n
aWNhbEFuZCwgbG9vcC0+Z2V0Q29uZGl0aW9uKCksIHRydWVWYWx1ZSk7CisgICAgICAgIGxvb3At
PnNldENvbmRpdGlvbihhbmRPcCk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfTsK
KworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCit2b2lkIEFkZEFuZFRydWVUb0xvb3BDb25k
aXRpb24oVEludGVybU5vZGUgKnJvb3QpCit7CisgICAgQWRkQW5kVHJ1ZVRvTG9vcENvbmRpdGlv
blRyYXZlcnNlciB0cmF2ZXJzZXI7CisgICAgcm9vdC0+dHJhdmVyc2UoJnRyYXZlcnNlcik7Cit9
CisKK30gIC8vIG5hbWVzcGFjZSBzaApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvQWRkQW5kVHJ1ZVRvTG9vcENvbmRpdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0Fk
ZEFuZFRydWVUb0xvb3BDb25kaXRpb24uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9BZGRBbmRUcnVlVG9Mb29wQ29uZGl0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMCBAQAorLy8KKy8vIENvcHlyaWdodCAo
YykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8v
IFJld3JpdGUgY29uZGl0aW9uIGluIGZvciBhbmQgd2hpbGUgbG9vcHMgdG8gd29yayBhcm91bmQg
ZHJpdmVyIGJ1ZyBvbiBJbnRlbCBNYWMuCisKKyNpZm5kZWYgQ09NUElMRVJfVFJBTlNMQVRPUl9B
RERBTkRUUlVFVE9MT09QQ09ORElUSU9OX0hfCisjZGVmaW5lIENPTVBJTEVSX1RSQU5TTEFUT1Jf
QUREQU5EVFJVRVRPTE9PUENPTkRJVElPTl9IXworCitjbGFzcyBUSW50ZXJtTm9kZTsKK25hbWVz
cGFjZSBzaAoreworCit2b2lkIEFkZEFuZFRydWVUb0xvb3BDb25kaXRpb24oVEludGVybU5vZGUg
KnJvb3QpOworCit9ICAvLyBuYW1lc3BhY2Ugc2gKKworI2VuZGlmICAvLyBDT01QSUxFUl9UUkFO
U0xBVE9SX0FEREFORFRSVUVUT0xPT1BDT05ESVRJT05fSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0FkZERlZmF1bHRSZXR1cm5TdGF0ZW1l
bnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9BZGREZWZhdWx0UmV0dXJuU3RhdGVtZW50cy5jcHAJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQWRk
RGVmYXVsdFJldHVyblN0YXRlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzYg
QEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisvLworLy8gQWRkRGVmYXVsdFJldHVyblN0YXRlbWVudHMuY3BwOiBBZGQg
ZGVmYXVsdCByZXR1cm4gc3RhdGVtZW50cyB0byBmdW5jdGlvbnMgdGhhdCBkbyBub3QgZW5kIGlu
IGEKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuLgorLy8KKworI2lu
Y2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvQWRkRGVmYXVsdFJldHVyblN0YXRlbWVudHMuaCIK
KworI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgorI2luY2x1ZGUg
ImNvbXBpbGVyL3RyYW5zbGF0b3IvdXRpbC5oIgorCituYW1lc3BhY2Ugc2gKK3sKKworbmFtZXNw
YWNlCit7CisKK2NsYXNzIEFkZERlZmF1bHRSZXR1cm5TdGF0ZW1lbnRzVHJhdmVyc2VyIDogcHJp
dmF0ZSBUSW50ZXJtVHJhdmVyc2VyCit7CisgIHB1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBBcHBs
eShUSW50ZXJtTm9kZSAqcm9vdCkKKyAgICB7CisgICAgICAgIEFkZERlZmF1bHRSZXR1cm5TdGF0
ZW1lbnRzVHJhdmVyc2VyIHNlcGFyYXRlSW5pdDsKKyAgICAgICAgcm9vdC0+dHJhdmVyc2UoJnNl
cGFyYXRlSW5pdCk7CisgICAgICAgIHNlcGFyYXRlSW5pdC51cGRhdGVUcmVlKCk7CisgICAgfQor
CisgIHByaXZhdGU6CisgICAgQWRkRGVmYXVsdFJldHVyblN0YXRlbWVudHNUcmF2ZXJzZXIoKSA6
IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKSB7fQorCisgICAgc3RhdGljIGJv
b2wgSXNGdW5jdGlvbldpdGhvdXRSZXR1cm5TdGF0ZW1lbnQoVEludGVybUZ1bmN0aW9uRGVmaW5p
dGlvbiAqbm9kZSwgVFR5cGUgKnJldHVyblR5cGUpCisgICAgeworICAgICAgICAqcmV0dXJuVHlw
ZSA9IG5vZGUtPmdldFR5cGUoKTsKKyAgICAgICAgaWYgKG5vZGUtPmdldFR5cGUoKS5nZXRCYXNp
Y1R5cGUoKSA9PSBFYnRWb2lkKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKworICAgICAgICBUSW50ZXJtQmxvY2sgKmJvZHlOb2RlICAgID0gbm9kZS0+
Z2V0Qm9keSgpOworICAgICAgICBUSW50ZXJtQnJhbmNoICpyZXR1cm5Ob2RlID0gYm9keU5vZGUt
PmdldFNlcXVlbmNlKCktPmJhY2soKS0+Z2V0QXNCcmFuY2hOb2RlKCk7CisgICAgICAgIGlmIChy
ZXR1cm5Ob2RlICE9IG51bGxwdHIgJiYgcmV0dXJuTm9kZS0+Z2V0Rmxvd09wKCkgPT0gRU9wUmV0
dXJuKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBib29sIHZpc2l0RnVuY3Rpb25EZWZp
bml0aW9uKFZpc2l0LCBUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICpub2RlKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgVFR5cGUgcmV0dXJuVHlwZTsKKyAgICAgICAgaWYgKElzRnVuY3Rpb25X
aXRob3V0UmV0dXJuU3RhdGVtZW50KG5vZGUsICZyZXR1cm5UeXBlKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgVEludGVybUJyYW5jaCAqYnJhbmNoID0KKyAgICAgICAgICAgICAgICBuZXcgVElu
dGVybUJyYW5jaChFT3BSZXR1cm4sIFRJbnRlcm1UeXBlZDo6Q3JlYXRlWmVybyhyZXR1cm5UeXBl
KSk7CisKKyAgICAgICAgICAgIFRJbnRlcm1CbG9jayAqYm9keU5vZGUgPSBub2RlLT5nZXRCb2R5
KCk7CisgICAgICAgICAgICBib2R5Tm9kZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKGJyYW5j
aCk7CisKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KK307Cit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK3ZvaWQg
QWRkRGVmYXVsdFJldHVyblN0YXRlbWVudHMoVEludGVybU5vZGUgKm5vZGUpCit7CisgICAgQWRk
RGVmYXVsdFJldHVyblN0YXRlbWVudHNUcmF2ZXJzZXI6OkFwcGx5KG5vZGUpOworfQorCit9ICAv
LyBuYW1lc3BhY2Ugc2gKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL0FkZERlZmF1bHRSZXR1cm5TdGF0ZW1lbnRzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQWRkRGVmYXVs
dFJldHVyblN0YXRlbWVudHMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9BZGREZWZhdWx0UmV0dXJuU3RhdGVtZW50cy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjIgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIw
MTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gQWRkRGVm
YXVsdFJldHVyblN0YXRlbWVudHMuaDogQWRkIGRlZmF1bHQgcmV0dXJuIHN0YXRlbWVudHMgdG8g
ZnVuY3Rpb25zIHRoYXQgZG8gbm90IGVuZCBpbiBhCisvLyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4uCisvLworCisjaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFUT1JfQUREREVG
QVVMVFJFVFVSTlNUQVRFTUVOVFNfSF8KKyNkZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9BRERE
RUZBVUxUUkVUVVJOU1RBVEVNRU5UU19IXworCitjbGFzcyBUSW50ZXJtTm9kZTsKKworbmFtZXNw
YWNlIHNoCit7CisKK3ZvaWQgQWRkRGVmYXVsdFJldHVyblN0YXRlbWVudHMoVEludGVybU5vZGUg
Km5vZGUpOworCit9ICAvLyBuYW1lc3BhY2Ugc2gKKworI2VuZGlmICAvLyBDT01QSUxFUl9UUkFO
U0xBVE9SX0FERERFRkFVTFRSRVRVUk5TVEFURU1FTlRTX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9BcnJheVJldHVyblZhbHVlVG9PdXRQ
YXJhbWV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL0FycmF5UmV0dXJuVmFsdWVUb091dFBhcmFtZXRlci5jcHAJKHJl
dmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL0FycmF5UmV0dXJuVmFsdWVUb091dFBhcmFtZXRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDggKzQxLDcgQEAgVEludGVybUFnZ3JlZ2F0ZSAqQ3JlYXRlUmVwbGFjZW1lbnRD
YWxsKAogICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnJlcGxhY2VtZW50Q2FsbCA9IG5ldyBUSW50ZXJt
QWdncmVnYXRlKEVPcEZ1bmN0aW9uQ2FsbCk7CiAgICAgcmVwbGFjZW1lbnRDYWxsLT5zZXRUeXBl
KFRUeXBlKEVidFZvaWQpKTsKICAgICByZXBsYWNlbWVudENhbGwtPnNldFVzZXJEZWZpbmVkKCk7
Ci0gICAgcmVwbGFjZW1lbnRDYWxsLT5zZXROYW1lT2JqKG9yaWdpbmFsQ2FsbC0+Z2V0TmFtZU9i
aigpKTsKLSAgICByZXBsYWNlbWVudENhbGwtPnNldEZ1bmN0aW9uSWQob3JpZ2luYWxDYWxsLT5n
ZXRGdW5jdGlvbklkKCkpOworICAgICpyZXBsYWNlbWVudENhbGwtPmdldEZ1bmN0aW9uU3ltYm9s
SW5mbygpID0gKm9yaWdpbmFsQ2FsbC0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCk7CiAgICAgcmVw
bGFjZW1lbnRDYWxsLT5zZXRMaW5lKG9yaWdpbmFsQ2FsbC0+Z2V0TGluZSgpKTsKICAgICBUSW50
ZXJtU2VxdWVuY2UgKnJlcGxhY2VtZW50UGFyYW1ldGVycyA9IHJlcGxhY2VtZW50Q2FsbC0+Z2V0
U2VxdWVuY2UoKTsKICAgICBUSW50ZXJtU2VxdWVuY2UgKm9yaWdpbmFsUGFyYW1ldGVycyA9IG9y
aWdpbmFsQ2FsbC0+Z2V0U2VxdWVuY2UoKTsKQEAgLTYxLDYgKzYwLDcgQEAgY2xhc3MgQXJyYXlS
ZXR1cm5WYWx1ZVRvT3V0UGFyYW1ldGVyVHJhdgogICBwcml2YXRlOgogICAgIEFycmF5UmV0dXJu
VmFsdWVUb091dFBhcmFtZXRlclRyYXZlcnNlcigpOwogCisgICAgYm9vbCB2aXNpdEZ1bmN0aW9u
RGVmaW5pdGlvbihWaXNpdCB2aXNpdCwgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAqbm9kZSkg
b3ZlcnJpZGU7CiAgICAgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFn
Z3JlZ2F0ZSAqbm9kZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCB2aXNpdEJyYW5jaChWaXNpdCB2aXNp
dCwgVEludGVybUJyYW5jaCAqbm9kZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCB2aXNpdEJpbmFyeShW
aXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkgb3ZlcnJpZGU7CkBAIC04MiwzNCArODIs
NDcgQEAgQXJyYXlSZXR1cm5WYWx1ZVRvT3V0UGFyYW1ldGVyVHJhdmVyc2VyOgogewogfQogCi1i
b29sIEFycmF5UmV0dXJuVmFsdWVUb091dFBhcmFtZXRlclRyYXZlcnNlcjo6dmlzaXRBZ2dyZWdh
dGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpCitib29sIEFycmF5UmV0dXJu
VmFsdWVUb091dFBhcmFtZXRlclRyYXZlcnNlcjo6dmlzaXRGdW5jdGlvbkRlZmluaXRpb24oCisg
ICAgVmlzaXQgdmlzaXQsCisgICAgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAqbm9kZSkKIHsK
LSAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCisgICAgaWYgKG5vZGUtPmlzQXJyYXkoKSAmJiB2
aXNpdCA9PSBQcmVWaXNpdCkKICAgICB7Ci0gICAgICAgIGlmIChub2RlLT5pc0FycmF5KCkpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmIChub2RlLT5nZXRPcCgpID09IEVPcEZ1bmN0aW9uKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIFJlcGxhY2UgdGhlIHBhcmFtZXRlcnMg
Y2hpbGQgbm9kZSBvZiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiB3aXRoIGFub3RoZXIgbm9kZQot
ICAgICAgICAgICAgICAgIC8vIHRoYXQgaGFzIHRoZSBvdXQgcGFyYW1ldGVyIGFkZGVkLgotICAg
ICAgICAgICAgICAgIC8vIEFsc28gc2V0IHRoZSBmdW5jdGlvbiB0byByZXR1cm4gdm9pZC4KKyAg
ICAgICAgLy8gUmVwbGFjZSB0aGUgcGFyYW1ldGVycyBjaGlsZCBub2RlIG9mIHRoZSBmdW5jdGlv
biBkZWZpbml0aW9uIHdpdGggYW5vdGhlciBub2RlCisgICAgICAgIC8vIHRoYXQgaGFzIHRoZSBv
dXQgcGFyYW1ldGVyIGFkZGVkLgorICAgICAgICAvLyBBbHNvIHNldCB0aGUgZnVuY3Rpb24gdG8g
cmV0dXJuIHZvaWQuCiAKLSAgICAgICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICpwYXJhbXMg
PSBub2RlLT5nZXRTZXF1ZW5jZSgpLT5mcm9udCgpLT5nZXRBc0FnZ3JlZ2F0ZSgpOwotICAgICAg
ICAgICAgICAgIEFTU0VSVChwYXJhbXMgIT0gbnVsbHB0ciAmJiBwYXJhbXMtPmdldE9wKCkgPT0g
RU9wUGFyYW1ldGVycyk7CisgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnBhcmFtcyA9IG5vZGUt
PmdldEZ1bmN0aW9uUGFyYW1ldGVycygpOworICAgICAgICBBU1NFUlQocGFyYW1zICE9IG51bGxw
dHIgJiYgcGFyYW1zLT5nZXRPcCgpID09IEVPcFBhcmFtZXRlcnMpOwogCi0gICAgICAgICAgICAg
ICAgVEludGVybUFnZ3JlZ2F0ZSAqcmVwbGFjZW1lbnRQYXJhbXMgPSBuZXcgVEludGVybUFnZ3Jl
Z2F0ZTsKLSAgICAgICAgICAgICAgICByZXBsYWNlbWVudFBhcmFtcy0+c2V0T3AoRU9wUGFyYW1l
dGVycyk7Ci0gICAgICAgICAgICAgICAgQ29weUFnZ3JlZ2F0ZUNoaWxkcmVuKHBhcmFtcywgcmVw
bGFjZW1lbnRQYXJhbXMpOwotICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50UGFyYW1zLT5nZXRT
ZXF1ZW5jZSgpLT5wdXNoX2JhY2soQ3JlYXRlUmV0dXJuVmFsdWVPdXRTeW1ib2wobm9kZS0+Z2V0
VHlwZSgpKSk7Ci0gICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRQYXJhbXMtPnNldExpbmUocGFy
YW1zLT5nZXRMaW5lKCkpOworICAgICAgICBUSW50ZXJtQWdncmVnYXRlICpyZXBsYWNlbWVudFBh
cmFtcyA9IG5ldyBUSW50ZXJtQWdncmVnYXRlOworICAgICAgICByZXBsYWNlbWVudFBhcmFtcy0+
c2V0T3AoRU9wUGFyYW1ldGVycyk7CisgICAgICAgIENvcHlBZ2dyZWdhdGVDaGlsZHJlbihwYXJh
bXMsIHJlcGxhY2VtZW50UGFyYW1zKTsKKyAgICAgICAgcmVwbGFjZW1lbnRQYXJhbXMtPmdldFNl
cXVlbmNlKCktPnB1c2hfYmFjayhDcmVhdGVSZXR1cm5WYWx1ZU91dFN5bWJvbChub2RlLT5nZXRU
eXBlKCkpKTsKKyAgICAgICAgcmVwbGFjZW1lbnRQYXJhbXMtPnNldExpbmUocGFyYW1zLT5nZXRM
aW5lKCkpOwogCi0gICAgICAgICAgICAgICAgbVJlcGxhY2VtZW50cy5wdXNoX2JhY2soTm9kZVVw
ZGF0ZUVudHJ5KG5vZGUsIHBhcmFtcywgcmVwbGFjZW1lbnRQYXJhbXMsIGZhbHNlKSk7CisgICAg
ICAgIHF1ZXVlUmVwbGFjZW1lbnRXaXRoUGFyZW50KG5vZGUsIHBhcmFtcywgcmVwbGFjZW1lbnRQ
YXJhbXMsIE9yaWdpbmFsTm9kZTo6SVNfRFJPUFBFRCk7CiAKLSAgICAgICAgICAgICAgICBub2Rl
LT5zZXRUeXBlKFRUeXBlKEVidFZvaWQpKTsKKyAgICAgICAgbm9kZS0+c2V0VHlwZShUVHlwZShF
YnRWb2lkKSk7CiAKLSAgICAgICAgICAgICAgICBtSW5GdW5jdGlvbldpdGhBcnJheVJldHVyblZh
bHVlID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmdl
dE9wKCkgPT0gRU9wUHJvdG90eXBlKQorICAgICAgICBtSW5GdW5jdGlvbldpdGhBcnJheVJldHVy
blZhbHVlID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKHZpc2l0ID09IFBvc3RWaXNpdCkKKyAgICB7
CisgICAgICAgIC8vIFRoaXMgaXNuJ3QgY29uZGl0aW9uYWwgb24gbm9kZS0+aXNBcnJheSgpIHNp
bmNlIHRoZSB0eXBlIGhhcyBhbHJlYWR5IGJlZW4gY2hhbmdlZCBvbgorICAgICAgICAvLyBQcmVW
aXNpdC4KKyAgICAgICAgbUluRnVuY3Rpb25XaXRoQXJyYXlSZXR1cm5WYWx1ZSA9IGZhbHNlOwor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBBcnJheVJldHVyblZhbHVlVG9PdXRQ
YXJhbWV0ZXJUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdn
cmVnYXRlICpub2RlKQoreworICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkKKyAgICB7CisgICAg
ICAgIGlmIChub2RlLT5pc0FycmF5KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChub2Rl
LT5nZXRPcCgpID09IEVPcFByb3RvdHlwZSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAvLyBSZXBsYWNlIHRoZSB3aG9sZSBwcm90b3R5cGUgbm9kZSB3aXRoIGFub3RoZXIgbm9kZSB0
aGF0IGhhcyB0aGUgb3V0IHBhcmFtZXRlciBhZGRlZC4KICAgICAgICAgICAgICAgICBUSW50ZXJt
QWdncmVnYXRlICpyZXBsYWNlbWVudCA9IG5ldyBUSW50ZXJtQWdncmVnYXRlOwpAQCAtMTE3LDEy
ICsxMzAsMTEgQEAgYm9vbCBBcnJheVJldHVyblZhbHVlVG9PdXRQYXJhbWV0ZXJUcmF2ZQogICAg
ICAgICAgICAgICAgIENvcHlBZ2dyZWdhdGVDaGlsZHJlbihub2RlLCByZXBsYWNlbWVudCk7CiAg
ICAgICAgICAgICAgICAgcmVwbGFjZW1lbnQtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhDcmVh
dGVSZXR1cm5WYWx1ZU91dFN5bWJvbChub2RlLT5nZXRUeXBlKCkpKTsKICAgICAgICAgICAgICAg
ICByZXBsYWNlbWVudC0+c2V0VXNlckRlZmluZWQoKTsKLSAgICAgICAgICAgICAgICByZXBsYWNl
bWVudC0+c2V0TmFtZU9iaihub2RlLT5nZXROYW1lT2JqKCkpOwotICAgICAgICAgICAgICAgIHJl
cGxhY2VtZW50LT5zZXRGdW5jdGlvbklkKG5vZGUtPmdldEZ1bmN0aW9uSWQoKSk7CisgICAgICAg
ICAgICAgICAgKnJlcGxhY2VtZW50LT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKSA9ICpub2RlLT5n
ZXRGdW5jdGlvblN5bWJvbEluZm8oKTsKICAgICAgICAgICAgICAgICByZXBsYWNlbWVudC0+c2V0
TGluZShub2RlLT5nZXRMaW5lKCkpOwogICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50LT5zZXRU
eXBlKFRUeXBlKEVidFZvaWQpKTsKIAotICAgICAgICAgICAgICAgIG1SZXBsYWNlbWVudHMucHVz
aF9iYWNrKE5vZGVVcGRhdGVFbnRyeShnZXRQYXJlbnROb2RlKCksIG5vZGUsIHJlcGxhY2VtZW50
LCBmYWxzZSkpOworICAgICAgICAgICAgICAgIHF1ZXVlUmVwbGFjZW1lbnQobm9kZSwgcmVwbGFj
ZW1lbnQsIE9yaWdpbmFsTm9kZTo6SVNfRFJPUFBFRCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBlbHNlIGlmIChub2RlLT5nZXRPcCgpID09IEVPcEZ1bmN0aW9uQ2FsbCkKICAgICAgICAg
ICAgIHsKQEAgLTEzNSwyNyArMTQ3LDIxIEBAIGJvb2wgQXJyYXlSZXR1cm5WYWx1ZVRvT3V0UGFy
YW1ldGVyVHJhdmUKICAgICAgICAgICAgICAgICAvLyBDYXNlcyAyIHRvIDQgYXJlIGFscmVhZHkg
Y29udmVydGVkIHRvIHNpbXBsZXIgY2FzZXMgYnkgU2VwYXJhdGVFeHByZXNzaW9uc1JldHVybmlu
Z0FycmF5cywgc28gd2UKICAgICAgICAgICAgICAgICAvLyBvbmx5IG5lZWQgdG8gd29ycnkgYWJv
dXQgdGhlIGNhc2Ugd2hlcmUgYSBmdW5jdGlvbiBjYWxsIHJldHVybmluZyBhbiBhcnJheSBmb3Jt
cyBhbiBleHByZXNzaW9uIGJ5CiAgICAgICAgICAgICAgICAgLy8gaXRzZWxmLgotICAgICAgICAg
ICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnBhcmVudEFnZyA9IGdldFBhcmVudE5vZGUoKS0+Z2V0
QXNBZ2dyZWdhdGUoKTsKLSAgICAgICAgICAgICAgICBpZiAocGFyZW50QWdnICE9IG51bGxwdHIg
JiYgcGFyZW50QWdnLT5nZXRPcCgpID09IEVPcFNlcXVlbmNlKQorICAgICAgICAgICAgICAgIFRJ
bnRlcm1CbG9jayAqcGFyZW50QmxvY2sgPSBnZXRQYXJlbnROb2RlKCktPmdldEFzQmxvY2soKTsK
KyAgICAgICAgICAgICAgICBpZiAocGFyZW50QmxvY2spCiAgICAgICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgICAgICBuZXh0VGVtcG9yYXJ5SW5kZXgoKTsKICAgICAgICAgICAgICAgICAg
ICAgVEludGVybVNlcXVlbmNlIHJlcGxhY2VtZW50czsKICAgICAgICAgICAgICAgICAgICAgcmVw
bGFjZW1lbnRzLnB1c2hfYmFjayhjcmVhdGVUZW1wRGVjbGFyYXRpb24obm9kZS0+Z2V0VHlwZSgp
KSk7CiAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnJldHVyblN5bWJvbCA9IGNy
ZWF0ZVRlbXBTeW1ib2wobm9kZS0+Z2V0VHlwZSgpKTsKICAgICAgICAgICAgICAgICAgICAgcmVw
bGFjZW1lbnRzLnB1c2hfYmFjayhDcmVhdGVSZXBsYWNlbWVudENhbGwobm9kZSwgcmV0dXJuU3lt
Ym9sKSk7Ci0gICAgICAgICAgICAgICAgICAgIG1NdWx0aVJlcGxhY2VtZW50cy5wdXNoX2JhY2so
Tm9kZVJlcGxhY2VXaXRoTXVsdGlwbGVFbnRyeShwYXJlbnRBZ2csIG5vZGUsIHJlcGxhY2VtZW50
cykpOworICAgICAgICAgICAgICAgICAgICBtTXVsdGlSZXBsYWNlbWVudHMucHVzaF9iYWNrKAor
ICAgICAgICAgICAgICAgICAgICAgICAgTm9kZVJlcGxhY2VXaXRoTXVsdGlwbGVFbnRyeShwYXJl
bnRCbG9jaywgbm9kZSwgcmVwbGFjZW1lbnRzKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
LSAgICBlbHNlIGlmICh2aXNpdCA9PSBQb3N0VmlzaXQpCi0gICAgewotICAgICAgICBpZiAobm9k
ZS0+Z2V0T3AoKSA9PSBFT3BGdW5jdGlvbikKLSAgICAgICAgewotICAgICAgICAgICAgbUluRnVu
Y3Rpb25XaXRoQXJyYXlSZXR1cm5WYWx1ZSA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC0xNjYsMTIgKzE3MiwxMSBAQCBib29sIEFycmF5UmV0dXJu
VmFsdWVUb091dFBhcmFtZXRlclRyYXZlCiAgICAgICAgIC8vIEluc3RlYWQgb2YgcmV0dXJuaW5n
IGEgdmFsdWUsIGFzc2lnbiB0byB0aGUgb3V0IHBhcmFtZXRlciBhbmQgdGhlbiByZXR1cm4uCiAg
ICAgICAgIFRJbnRlcm1TZXF1ZW5jZSByZXBsYWNlbWVudHM7CiAKLSAgICAgICAgVEludGVybUJp
bmFyeSAqcmVwbGFjZW1lbnRBc3NpZ25tZW50ID0gbmV3IFRJbnRlcm1CaW5hcnkoRU9wQXNzaWdu
KTsKICAgICAgICAgVEludGVybVR5cGVkICpleHByZXNzaW9uID0gbm9kZS0+Z2V0RXhwcmVzc2lv
bigpOwogICAgICAgICBBU1NFUlQoZXhwcmVzc2lvbiAhPSBudWxscHRyKTsKLSAgICAgICAgcmVw
bGFjZW1lbnRBc3NpZ25tZW50LT5zZXRMZWZ0KENyZWF0ZVJldHVyblZhbHVlU3ltYm9sKGV4cHJl
c3Npb24tPmdldFR5cGUoKSkpOwotICAgICAgICByZXBsYWNlbWVudEFzc2lnbm1lbnQtPnNldFJp
Z2h0KG5vZGUtPmdldEV4cHJlc3Npb24oKSk7Ci0gICAgICAgIHJlcGxhY2VtZW50QXNzaWdubWVu
dC0+c2V0VHlwZShleHByZXNzaW9uLT5nZXRUeXBlKCkpOworICAgICAgICBUSW50ZXJtU3ltYm9s
ICpyZXR1cm5WYWx1ZVN5bWJvbCA9IENyZWF0ZVJldHVyblZhbHVlU3ltYm9sKGV4cHJlc3Npb24t
PmdldFR5cGUoKSk7CisgICAgICAgIFRJbnRlcm1CaW5hcnkgKnJlcGxhY2VtZW50QXNzaWdubWVu
dCA9CisgICAgICAgICAgICBuZXcgVEludGVybUJpbmFyeShFT3BBc3NpZ24sIHJldHVyblZhbHVl
U3ltYm9sLCBleHByZXNzaW9uKTsKICAgICAgICAgcmVwbGFjZW1lbnRBc3NpZ25tZW50LT5zZXRM
aW5lKGV4cHJlc3Npb24tPmdldExpbmUoKSk7CiAgICAgICAgIHJlcGxhY2VtZW50cy5wdXNoX2Jh
Y2socmVwbGFjZW1lbnRBc3NpZ25tZW50KTsKIApAQCAtMTc5LDcgKzE4NCw4IEBAIGJvb2wgQXJy
YXlSZXR1cm5WYWx1ZVRvT3V0UGFyYW1ldGVyVHJhdmUKICAgICAgICAgcmVwbGFjZW1lbnRCcmFu
Y2gtPnNldExpbmUobm9kZS0+Z2V0TGluZSgpKTsKICAgICAgICAgcmVwbGFjZW1lbnRzLnB1c2hf
YmFjayhyZXBsYWNlbWVudEJyYW5jaCk7CiAKLSAgICAgICAgbU11bHRpUmVwbGFjZW1lbnRzLnB1
c2hfYmFjayhOb2RlUmVwbGFjZVdpdGhNdWx0aXBsZUVudHJ5KGdldFBhcmVudE5vZGUoKS0+Z2V0
QXNBZ2dyZWdhdGUoKSwgbm9kZSwgcmVwbGFjZW1lbnRzKSk7CisgICAgICAgIG1NdWx0aVJlcGxh
Y2VtZW50cy5wdXNoX2JhY2soCisgICAgICAgICAgICBOb2RlUmVwbGFjZVdpdGhNdWx0aXBsZUVu
dHJ5KGdldFBhcmVudE5vZGUoKS0+Z2V0QXNCbG9jaygpLCBub2RlLCByZXBsYWNlbWVudHMpKTsK
ICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMTkyLDcgKzE5OCw3IEBAIGJvb2wgQXJy
YXlSZXR1cm5WYWx1ZVRvT3V0UGFyYW1ldGVyVHJhdmUKICAgICAgICAgaWYgKHJpZ2h0QWdnICE9
IG51bGxwdHIgJiYgcmlnaHRBZ2ctPmdldE9wKCkgPT0gRU9wRnVuY3Rpb25DYWxsICYmIHJpZ2h0
QWdnLT5pc1VzZXJEZWZpbmVkKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIFRJbnRlcm1BZ2dy
ZWdhdGUgKnJlcGxhY2VtZW50Q2FsbCA9IENyZWF0ZVJlcGxhY2VtZW50Q2FsbChyaWdodEFnZywg
bm9kZS0+Z2V0TGVmdCgpKTsKLSAgICAgICAgICAgIG1SZXBsYWNlbWVudHMucHVzaF9iYWNrKE5v
ZGVVcGRhdGVFbnRyeShnZXRQYXJlbnROb2RlKCksIG5vZGUsIHJlcGxhY2VtZW50Q2FsbCwgZmFs
c2UpKTsKKyAgICAgICAgICAgIHF1ZXVlUmVwbGFjZW1lbnQobm9kZSwgcmVwbGFjZW1lbnRDYWxs
LCBPcmlnaW5hbE5vZGU6OklTX0RST1BQRUQpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVy
biBmYWxzZTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL0Jhc2VUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL0Jhc2VUeXBlcy5oCShyZXZpc2lvbiAyMDc4MDQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9CYXNlVHlw
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNyw3ICs3LDExIEBACiAjaWZuZGVmIENPTVBJTEVSX1RS
QU5TTEFUT1JfQkFTRVRZUEVTX0hfCiAjZGVmaW5lIENPTVBJTEVSX1RSQU5TTEFUT1JfQkFTRVRZ
UEVTX0hfCiAKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8YXJyYXk+CisKICNpbmNs
dWRlICJjb21tb24vZGVidWcuaCIKKyNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKIAog
Ly8KIC8vIFByZWNpc2lvbiBxdWFsaWZpZXJzCkBAIC0yOCwxMCArMzIsMTAgQEAgaW5saW5lIGNv
bnN0IGNoYXIqIGdldFByZWNpc2lvblN0cmluZyhUUAogewogICAgIHN3aXRjaChwKQogICAgIHsK
LSAgICBjYXNlIEVicEhpZ2g6CQlyZXR1cm4gImhpZ2hwIjsJCWJyZWFrOwotICAgIGNhc2UgRWJw
TWVkaXVtOgkJcmV0dXJuICJtZWRpdW1wIjsJYnJlYWs7Ci0gICAgY2FzZSBFYnBMb3c6CQlyZXR1
cm4gImxvd3AiOwkJYnJlYWs7Ci0gICAgZGVmYXVsdDoJCQlyZXR1cm4gIm1lZGl1bXAiOyAgIGJy
ZWFrOyAgIC8vIFNhZmVzdCBmYWxsYmFjaworICAgICAgICBjYXNlIEVicEhpZ2g6ICAgcmV0dXJu
ICJoaWdocCI7CisgICAgICAgIGNhc2UgRWJwTWVkaXVtOiByZXR1cm4gIm1lZGl1bXAiOworICAg
ICAgICBjYXNlIEVicExvdzogICAgcmV0dXJuICJsb3dwIjsKKyAgICAgICAgZGVmYXVsdDogICAg
ICAgIHJldHVybiAibWVkaXVtcCI7ICAvLyBTYWZlc3QgZmFsbGJhY2sKICAgICB9CiB9CiAKQEAg
LTMzNywxOSArMzQxLDM0IEBAIGVudW0gVFF1YWxpZmllcgogICAgIEV2cUxhc3RGcmFnRGF0YSwK
IAogICAgIC8vIEdMU0wgRVMgMy4wIHZlcnRleCBvdXRwdXQgYW5kIGZyYWdtZW50IGlucHV0Ci0g
ICAgRXZxU21vb3RoLCAgLy8gSW5jb21wbGV0ZSBxdWFsaWZpZXIsIHNtb290aCBpcyB0aGUgZGVm
YXVsdAotICAgIEV2cUZsYXQsICAgIC8vIEluY29tcGxldGUgcXVhbGlmaWVyCi0gICAgRXZxU21v
b3RoT3V0ID0gRXZxU21vb3RoLAotICAgIEV2cUZsYXRPdXQgICA9IEV2cUZsYXQsCisgICAgRXZx
U21vb3RoLCAgICAvLyBJbmNvbXBsZXRlIHF1YWxpZmllciwgc21vb3RoIGlzIHRoZSBkZWZhdWx0
CisgICAgRXZxRmxhdCwgICAgICAvLyBJbmNvbXBsZXRlIHF1YWxpZmllcgorICAgIEV2cUNlbnRy
b2lkLCAgLy8gSW5jb21wbGV0ZSBxdWFsaWZpZXIKKyAgICBFdnFTbW9vdGhPdXQsCisgICAgRXZx
RmxhdE91dCwKICAgICBFdnFDZW50cm9pZE91dCwgIC8vIEltcGxpZXMgc21vb3RoCiAgICAgRXZx
U21vb3RoSW4sCiAgICAgRXZxRmxhdEluLAogICAgIEV2cUNlbnRyb2lkSW4sICAvLyBJbXBsaWVz
IHNtb290aAogCisgICAgLy8gR0xTTCBFUyAzLjEgY29tcHV0ZSBzaGFkZXIgc3BlY2lhbCB2YXJp
YWJsZXMKKyAgICBFdnFDb21wdXRlSW4sCisgICAgRXZxTnVtV29ya0dyb3VwcywKKyAgICBFdnFX
b3JrR3JvdXBTaXplLAorICAgIEV2cVdvcmtHcm91cElELAorICAgIEV2cUxvY2FsSW52b2NhdGlv
bklELAorICAgIEV2cUdsb2JhbEludm9jYXRpb25JRCwKKyAgICBFdnFMb2NhbEludm9jYXRpb25J
bmRleCwKKwogICAgIC8vIGVuZCBvZiBsaXN0CiAgICAgRXZxTGFzdAogfTsKIAoraW5saW5lIGJv
b2wgSXNRdWFsaWZpZXJVbnNwZWNpZmllZChUUXVhbGlmaWVyIHF1YWxpZmllcikKK3sKKyAgICBy
ZXR1cm4gKHF1YWxpZmllciA9PSBFdnFUZW1wb3JhcnkgfHwgcXVhbGlmaWVyID09IEV2cUdsb2Jh
bCk7Cit9CisKIGVudW0gVExheW91dE1hdHJpeFBhY2tpbmcKIHsKICAgICBFbXBVbnNwZWNpZmll
ZCwKQEAgLTM2OCwyNiArMzg3LDY1IEBAIGVudW0gVExheW91dEJsb2NrU3RvcmFnZQogc3RydWN0
IFRMYXlvdXRRdWFsaWZpZXIKIHsKICAgICBpbnQgbG9jYXRpb247CisgICAgdW5zaWduZWQgaW50
IGxvY2F0aW9uc1NwZWNpZmllZDsKICAgICBUTGF5b3V0TWF0cml4UGFja2luZyBtYXRyaXhQYWNr
aW5nOwogICAgIFRMYXlvdXRCbG9ja1N0b3JhZ2UgYmxvY2tTdG9yYWdlOwogCisgICAgLy8gQ29t
cHV0ZSBzaGFkZXIgbGF5b3V0IHF1YWxpZmllcnMuCisgICAgc2g6OldvcmtHcm91cFNpemUgbG9j
YWxTaXplOworCiAgICAgc3RhdGljIFRMYXlvdXRRdWFsaWZpZXIgY3JlYXRlKCkKICAgICB7CiAg
ICAgICAgIFRMYXlvdXRRdWFsaWZpZXIgbGF5b3V0UXVhbGlmaWVyOwogCiAgICAgICAgIGxheW91
dFF1YWxpZmllci5sb2NhdGlvbiA9IC0xOworICAgICAgICBsYXlvdXRRdWFsaWZpZXIubG9jYXRp
b25zU3BlY2lmaWVkID0gMDsKICAgICAgICAgbGF5b3V0UXVhbGlmaWVyLm1hdHJpeFBhY2tpbmcg
PSBFbXBVbnNwZWNpZmllZDsKICAgICAgICAgbGF5b3V0UXVhbGlmaWVyLmJsb2NrU3RvcmFnZSA9
IEVic1Vuc3BlY2lmaWVkOwogCisgICAgICAgIGxheW91dFF1YWxpZmllci5sb2NhbFNpemUuZmls
bCgtMSk7CisKICAgICAgICAgcmV0dXJuIGxheW91dFF1YWxpZmllcjsKICAgICB9CiAKICAgICBi
b29sIGlzRW1wdHkoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGxvY2F0aW9uID09IC0x
ICYmIG1hdHJpeFBhY2tpbmcgPT0gRW1wVW5zcGVjaWZpZWQgJiYgYmxvY2tTdG9yYWdlID09IEVi
c1Vuc3BlY2lmaWVkOworICAgICAgICByZXR1cm4gbG9jYXRpb24gPT0gLTEgJiYgbWF0cml4UGFj
a2luZyA9PSBFbXBVbnNwZWNpZmllZCAmJgorICAgICAgICAgICAgICAgYmxvY2tTdG9yYWdlID09
IEVic1Vuc3BlY2lmaWVkICYmICFsb2NhbFNpemUuaXNBbnlWYWx1ZVNldCgpOworICAgIH0KKwor
ICAgIGJvb2wgaXNDb21iaW5hdGlvblZhbGlkKCkgY29uc3QKKyAgICB7CisgICAgICAgIGJvb2wg
d29ya1NpemVTcGVjaWZpZWQgPSBsb2NhbFNpemUuaXNBbnlWYWx1ZVNldCgpOworICAgICAgICBi
b29sIG90aGVyTGF5b3V0UXVhbGlmaWVyc1NwZWNpZmllZCA9CisgICAgICAgICAgICAobG9jYXRp
b24gIT0gLTEgfHwgbWF0cml4UGFja2luZyAhPSBFbXBVbnNwZWNpZmllZCB8fCBibG9ja1N0b3Jh
Z2UgIT0gRWJzVW5zcGVjaWZpZWQpOworCisgICAgICAgIC8vIHdlIGNhbiBoYXZlIGVpdGhlciB0
aGUgd29yayBncm91cCBzaXplIHNwZWNpZmllZCwgb3IgdGhlIG90aGVyIGxheW91dCBxdWFsaWZp
ZXJzCisgICAgICAgIHJldHVybiAhKHdvcmtTaXplU3BlY2lmaWVkICYmIG90aGVyTGF5b3V0UXVh
bGlmaWVyc1NwZWNpZmllZCk7CisgICAgfQorCisgICAgYm9vbCBpc0xvY2FsU2l6ZUVxdWFsKGNv
bnN0IHNoOjpXb3JrR3JvdXBTaXplICZsb2NhbFNpemVJbikgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBsb2NhbFNpemUuaXNXb3JrR3JvdXBTaXplTWF0Y2hpbmcobG9jYWxTaXplSW4pOwog
ICAgIH0KIH07CiAKK2lubGluZSBjb25zdCBjaGFyICpnZXRXb3JrR3JvdXBTaXplU3RyaW5nKHNp
emVfdCBkaW1lbnNpb24pCit7CisgICAgc3dpdGNoIChkaW1lbnNpb24pCisgICAgeworICAgICAg
ICBjYXNlIDB1OgorICAgICAgICAgICAgcmV0dXJuICJsb2NhbF9zaXplX3giOworICAgICAgICBj
YXNlIDF1OgorICAgICAgICAgICAgcmV0dXJuICJsb2NhbF9zaXplX3kiOworICAgICAgICBjYXNl
IDJ1OgorICAgICAgICAgICAgcmV0dXJuICJsb2NhbF9zaXplX3oiOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiAiZGltZW5z
aW9uIG91dCBvZiBib3VuZHMiOworICAgIH0KK30KKwogLy8KIC8vIFRoaXMgaXMganVzdCBmb3Ig
ZGVidWcgcHJpbnQgb3V0LCBjYXJyaWVkIGFsb25nIHdpdGggdGhlIGRlZmluaXRpb25zIGFib3Zl
LgogLy8KQEAgLTQyNywxMSArNDg1LDIxIEBAIGlubGluZSBjb25zdCBjaGFyKiBnZXRRdWFsaWZp
ZXJTdHJpbmcoVFEKICAgICBjYXNlIEV2cUxhc3RGcmFnQ29sb3I6ICAgICAgICAgIHJldHVybiAi
TGFzdEZyYWdDb2xvciI7CiAgICAgY2FzZSBFdnFMYXN0RnJhZ0RhdGE6ICAgICAgICAgICByZXR1
cm4gIkxhc3RGcmFnRGF0YSI7CiAgICAgY2FzZSBFdnFTbW9vdGhPdXQ6ICAgICAgICAgICAgICBy
ZXR1cm4gInNtb290aCBvdXQiOwotICAgIGNhc2UgRXZxQ2VudHJvaWRPdXQ6ICAgICAgICAgICAg
cmV0dXJuICJjZW50cm9pZCBvdXQiOworICAgIGNhc2UgRXZxQ2VudHJvaWRPdXQ6ICAgICAgICAg
ICAgcmV0dXJuICJzbW9vdGggY2VudHJvaWQgb3V0IjsKICAgICBjYXNlIEV2cUZsYXRPdXQ6ICAg
ICAgICAgICAgICAgIHJldHVybiAiZmxhdCBvdXQiOwogICAgIGNhc2UgRXZxU21vb3RoSW46ICAg
ICAgICAgICAgICAgcmV0dXJuICJzbW9vdGggaW4iOwogICAgIGNhc2UgRXZxRmxhdEluOiAgICAg
ICAgICAgICAgICAgcmV0dXJuICJmbGF0IGluIjsKLSAgICBjYXNlIEV2cUNlbnRyb2lkSW46ICAg
ICAgICAgICAgIHJldHVybiAiY2VudHJvaWQgaW4iOworICAgIGNhc2UgRXZxQ2VudHJvaWRJbjog
ICAgICAgICAgICAgcmV0dXJuICJzbW9vdGggY2VudHJvaWQgaW4iOworICAgIGNhc2UgRXZxQ2Vu
dHJvaWQ6ICAgICAgICAgICAgICAgcmV0dXJuICJjZW50cm9pZCI7CisgICAgY2FzZSBFdnFGbGF0
OiAgICAgICAgICAgICAgICAgICByZXR1cm4gImZsYXQiOworICAgIGNhc2UgRXZxU21vb3RoOiAg
ICAgICAgICAgICAgICAgcmV0dXJuICJzbW9vdGgiOworICAgIGNhc2UgRXZxQ29tcHV0ZUluOiAg
ICAgICAgICAgICAgcmV0dXJuICJpbiI7CisgICAgY2FzZSBFdnFOdW1Xb3JrR3JvdXBzOiAgICAg
ICAgICByZXR1cm4gIk51bVdvcmtHcm91cHMiOworICAgIGNhc2UgRXZxV29ya0dyb3VwU2l6ZTog
ICAgICAgICAgcmV0dXJuICJXb3JrR3JvdXBTaXplIjsKKyAgICBjYXNlIEV2cVdvcmtHcm91cElE
OiAgICAgICAgICAgIHJldHVybiAiV29ya0dyb3VwSUQiOworICAgIGNhc2UgRXZxTG9jYWxJbnZv
Y2F0aW9uSUQ6ICAgICAgcmV0dXJuICJMb2NhbEludm9jYXRpb25JRCI7CisgICAgY2FzZSBFdnFH
bG9iYWxJbnZvY2F0aW9uSUQ6ICAgICByZXR1cm4gIkdsb2JhbEludm9jYXRpb25JRCI7CisgICAg
Y2FzZSBFdnFMb2NhbEludm9jYXRpb25JbmRleDogICByZXR1cm4gIkxvY2FsSW52b2NhdGlvbklu
ZGV4IjsKICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyAgICAgICAgIHJldHVybiAidW5rbm93
biBxdWFsaWZpZXIiOwogICAgIH0KICAgICAvLyBjbGFuZy1mb3JtYXQgb24KQEAgLTQ2MCwxOCAr
NTI4LDQgQEAgaW5saW5lIGNvbnN0IGNoYXIqIGdldEJsb2NrU3RvcmFnZVN0cmluZwogICAgIH0K
IH0KIAotaW5saW5lIGNvbnN0IGNoYXIqIGdldEludGVycG9sYXRpb25TdHJpbmcoVFF1YWxpZmll
ciBxKQotewotICAgIHN3aXRjaChxKQotICAgIHsKLSAgICBjYXNlIEV2cVNtb290aE91dDogICAg
ICByZXR1cm4gInNtb290aCI7ICAgYnJlYWs7Ci0gICAgY2FzZSBFdnFDZW50cm9pZE91dDogICAg
cmV0dXJuICJjZW50cm9pZCI7IGJyZWFrOwotICAgIGNhc2UgRXZxRmxhdE91dDogICAgICAgIHJl
dHVybiAiZmxhdCI7ICAgICBicmVhazsKLSAgICBjYXNlIEV2cVNtb290aEluOiAgICAgICByZXR1
cm4gInNtb290aCI7ICAgYnJlYWs7Ci0gICAgY2FzZSBFdnFDZW50cm9pZEluOiAgICAgcmV0dXJu
ICJjZW50cm9pZCI7IGJyZWFrOwotICAgIGNhc2UgRXZxRmxhdEluOiAgICAgICAgIHJldHVybiAi
ZmxhdCI7ICAgICBicmVhazsKLSAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyByZXR1cm4gInVu
a25vd24gaW50ZXJwb2xhdGlvbiI7Ci0gICAgfQotfQotCiAjZW5kaWYgLy8gQ09NUElMRVJfVFJB
TlNMQVRPUl9CQVNFVFlQRVNfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL0JyZWFrVmFyaWFibGVBbGlhc2luZ0luSW5uZXJMb29wcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvQnJlYWtWYXJpYWJsZUFsaWFzaW5nSW5Jbm5lckxvb3BzLmNwcAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9CcmVh
a1ZhcmlhYmxlQWxpYXNpbmdJbklubmVyTG9vcHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTA2IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gQnJlYWtWYXJpYWJsZUFsaWFzaW5nSW5Jbm5l
ckxvb3BzLmg6IFRvIG9wdGltaXplIHNpbXBsZSBhc3NpZ25tZW50cywgdGhlIEhMU0wgY29tcGls
ZXIgZnJvbnRlbmQKKy8vICAgICAgbWF5IHJlY29yZCBhIHZhcmlhYmxlIGFzIGFsaWFzaW5nIGFu
b3RoZXIuIFNvbWV0aW1lcyB0aGUgYWxpYXMgaW5mb3JtYXRpb24gZ2V0cyBnYXJibGVkCisvLyAg
ICAgIHNvIHdlIHdvcmsgYXJvdW5kIHRoaXMgaXNzdWUgYnkgYnJlYWtpbmcgdGhlIGFsaWFzaW5n
IGNoYWluIGluIGlubmVyIGxvb3BzLgorCisjaW5jbHVkZSAiQnJlYWtWYXJpYWJsZUFsaWFzaW5n
SW5Jbm5lckxvb3BzLmgiCisKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0ludGVybU5v
ZGUuaCIKKworLy8gQSBITFNMIGNvbXBpbGVyIGRldmVsb3BlciBnYXZlIHVzIG1vcmUgZGV0YWls
cyBvbiB0aGUgcm9vdCBjYXVzZSBhbmQgdGhlIHdvcmthcm91bmQgbmVlZGVkOgorLy8gICAgIFRo
ZSByb290IHByb2JsZW0gaXMgdGhhdCBpZiB0aGUgSExTTCBjb21waWxlciBpcyBhcHBseWluZyBh
bGlhc2luZyBpbmZvcm1hdGlvbiBldmVuIG9uCisvLyAgICAgaW5jb21wbGV0ZSBzaW11bGF0aW9u
cyAoaW4gdGhpcyBjYXNlLCBhIHNpbmdsZSBwYXNzKS4gVGhlIGJ1ZyBpcyB0cmlnZ2VyZWQgYnkg
YW4gYXNzaWdubWVudAorLy8gICAgIHRoYXQgY29tZXMgZnJvbSBhIHNlcmllcyBvZiBhc3NpZ25t
ZW50cywgcG9zc2libHkgd2l0aCBzd2l6emxlZCBvciB0ZXJuYXJ5IG9wZXJhdG9ycyB3aXRoCisv
LyAgICAga25vd24gY29uZGl0aW9uYWxzLCB3aGVyZSB0aGUgc291cmNlIGlzIGJlZm9yZSB0aGUg
bG9vcC4KKy8vICAgICBTbywgYSB3b3JrYXJvdW5kIGlzIHRvIGFkZCBhICswIHRlcm0gdG8gdmFy
aWFibGVzIHRoZSBmaXJzdCB0aW1lIHRoZXkgYXJlIGFzc2lnbmVkIHRvIGluCisvLyAgICAgYW4g
aW5uZXIgbG9vcCAoaWYgdGhleSBhcmUgZGVjbGFyZWQgaW4gYW4gb3V0c2lkZSBzY29wZSwgb3Ro
ZXJ3aXNlIHRoZXJlIGlzIG5vIG5lZWQpLgorLy8gICAgIFRoaXMgd2lsbCBicmVhayB0aGUgYWxp
YXNpbmcgY2hhaW4uCisKKy8vIEZvciBzaW1wbGljaXR5IGhlcmUgd2UgYWRkIGEgKzAgdG8gYW55
IGFzc2lnbm1lbnQgdGhhdCBpcyBpbiBhdCBsZWFzdCB0d28gbmVzdGVkIGxvb3BzLiBCZWNhdXNl
CisvLyB0aGUgYnVnIG9ubHkgc2hvd3MgdXAgd2l0aCBzd2l6emxlcywgYW5kIHRlcm5hcnkgYXNz
aWdubWVudCwgd2hvbGUgYXJyYXkgb3Igd2hvbGUgc3RydWN0dXJlCisvLyBhc3NpZ25tZW50IGRv
bid0IG5lZWQgYSB3b3JrYXJvdW5kLgorCituYW1lc3BhY2UKK3sKKworY2xhc3MgQWxpYXNpbmdC
cmVha2VyIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKK3sKKyAgcHVibGljOgorICAgIEFsaWFz
aW5nQnJlYWtlcigpIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgdHJ1ZSkge30KKwor
ICBwcm90ZWN0ZWQ6CisgICAgYm9vbCB2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJp
bmFyeSAqYmluYXJ5KQorICAgIHsKKyAgICAgICAgaWYgKHZpc2l0ICE9IFByZVZpc2l0KQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAobUxvb3BMZXZlbCA8IDIgfHwgIWJpbmFyeS0+aXNBc3NpZ25tZW50KCkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgVEludGVybVR5
cGVkICpCID0gYmluYXJ5LT5nZXRSaWdodCgpOworICAgICAgICBUVHlwZSB0eXBlICAgICAgPSBC
LT5nZXRUeXBlKCk7CisKKyAgICAgICAgaWYgKCF0eXBlLmlzU2NhbGFyKCkgJiYgIXR5cGUuaXNW
ZWN0b3IoKSAmJiAhdHlwZS5pc01hdHJpeCgpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0eXBlLmlzQXJyYXkoKSB8fCBJc1Nh
bXBsZXIodHlwZS5nZXRCYXNpY1R5cGUoKSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gV2UgaGF2ZSBhIHNjYWxhciAvIHZlY3Rv
ciAvIG1hdHJpeCBhc3NpZ25tZW50IHdpdGggbG9vcCBkZXB0aCAyLgorICAgICAgICAvLyBUcmFu
c2Zvcm0gaXQgZnJvbQorICAgICAgICAvLyAgICBBID0gQgorICAgICAgICAvLyB0bworICAgICAg
ICAvLyAgICBBID0gKEIgKyB0eXBlb2Y8Qj4oMCkpOworCisgICAgICAgIFRJbnRlcm1CaW5hcnkg
KmJQbHVzWmVybyA9IG5ldyBUSW50ZXJtQmluYXJ5KEVPcEFkZCwgQiwgVEludGVybVR5cGVkOjpD
cmVhdGVaZXJvKHR5cGUpKTsKKyAgICAgICAgYlBsdXNaZXJvLT5zZXRMaW5lKEItPmdldExpbmUo
KSk7CisKKyAgICAgICAgYmluYXJ5LT5yZXBsYWNlQ2hpbGROb2RlKEIsIGJQbHVzWmVybyk7CisK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgYm9vbCB2aXNpdExvb3AoVmlzaXQg
dmlzaXQsIFRJbnRlcm1Mb29wICpsb29wKQorICAgIHsKKyAgICAgICAgaWYgKHZpc2l0ID09IFBy
ZVZpc2l0KQorICAgICAgICB7CisgICAgICAgICAgICBtTG9vcExldmVsKys7CisgICAgICAgIH0K
KyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQobUxvb3BMZXZlbCA+
IDApOworICAgICAgICAgICAgbUxvb3BMZXZlbC0tOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgIHByaXZhdGU6CisgICAgaW50IG1Mb29wTGV2ZWwgPSAwOwor
fTsKKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCituYW1lc3BhY2Ugc2gKK3sKKwordm9p
ZCBCcmVha1ZhcmlhYmxlQWxpYXNpbmdJbklubmVyTG9vcHMoVEludGVybU5vZGUgKnJvb3QpCit7
CisgICAgQWxpYXNpbmdCcmVha2VyIGJyZWFrZXI7CisgICAgcm9vdC0+dHJhdmVyc2UoJmJyZWFr
ZXIpOworfQorCit9ICAvLyBuYW1lc3BhY2Ugc2gKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0JyZWFrVmFyaWFibGVBbGlhc2luZ0luSW5uZXJM
b29wcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL0JyZWFrVmFyaWFibGVBbGlhc2luZ0luSW5uZXJMb29wcy5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L0JyZWFrVmFyaWFibGVBbGlhc2luZ0luSW5uZXJMb29wcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMjMgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBCcmVha1ZhcmlhYmxlQWxpYXNpbmdJbklu
bmVyTG9vcHMuaDogVG8gb3B0aW1pemUgc2ltcGxlIGFzc2lnbm1lbnRzLCB0aGUgSExTTCBjb21w
aWxlciBmcm9udGVuZAorLy8gICAgICBtYXkgcmVjb3JkIGEgdmFyaWFibGUgYXMgYWxpYXNpbmcg
YW5vdGhlci4gU29tZXRpbWVzIHRoZSBhbGlhcyBpbmZvcm1hdGlvbiBnZXRzIGdhcmJsZWQKKy8v
ICAgICAgc28gd2Ugd29yayBhcm91bmQgdGhpcyBpc3N1ZSBieSBicmVha2luZyB0aGUgYWxpYXNp
bmcgY2hhaW4gaW4gaW5uZXIgbG9vcHMuCisKKyNpZm5kZWYgQ09NUElMRVJfVFJBTlNMQVRPUl9C
UkVBS1ZBUklBQkxFQUxJQVNJTkdJTklOTkVSTE9PUFNfSF8KKyNkZWZpbmUgQ09NUElMRVJfVFJB
TlNMQVRPUl9CUkVBS1ZBUklBQkxFQUxJQVNJTkdJTklOTkVSTE9PUFNfSF8KKworY2xhc3MgVElu
dGVybU5vZGU7CisKK25hbWVzcGFjZSBzaAoreworCit2b2lkIEJyZWFrVmFyaWFibGVBbGlhc2lu
Z0luSW5uZXJMb29wcyhUSW50ZXJtTm9kZSAqcm9vdCk7CisKK30gIC8vIG5hbWVzcGFjZSBzaAor
CisjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfQlJFQUtWQVJJQUJMRUFMSUFTSU5HSU5J
Tk5FUkxPT1BTX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0
aW9uRW11bGF0b3IuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTcsNiArNyw3IEBACiAjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKICNp
bmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmgiCiAj
aW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5oIgorI2luY2x1ZGUgImNv
bXBpbGVyL3RyYW5zbGF0b3IvQ2FjaGUuaCIKIAogY2xhc3MgQnVpbHRJbkZ1bmN0aW9uRW11bGF0
b3I6OkJ1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbk1hcmtlciA6IHB1YmxpYyBUSW50ZXJtVHJhdmVy
c2VyCiB7CkBAIC0xOTQsOCArMTk1LDggQEAgVFN0cmluZyBCdWlsdEluRnVuY3Rpb25FbXVsYXRv
cjo6R2V0RW11bAogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OkZ1bmN0aW9uSWQ6OkZ1bmN0aW9u
SWQoVE9wZXJhdG9yIG9wLCBjb25zdCBUVHlwZSAqcGFyYW0pCiAgICAgOiBtT3Aob3ApLAogICAg
ICAgbVBhcmFtMShwYXJhbSksCi0gICAgICBtUGFyYW0yKG5ldyBUVHlwZShFYnRWb2lkKSksCi0g
ICAgICBtUGFyYW0zKG5ldyBUVHlwZShFYnRWb2lkKSkKKyAgICAgIG1QYXJhbTIoVENhY2hlOjpn
ZXRUeXBlKEVidFZvaWQpKSwKKyAgICAgIG1QYXJhbTMoVENhY2hlOjpnZXRUeXBlKEVidFZvaWQp
KQogewogfQogCkBAIC0yMDMsNyArMjA0LDcgQEAgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OkZ1
bmN0aW9uSWQ6OkZ1bgogICAgIDogbU9wKG9wKSwKICAgICAgIG1QYXJhbTEocGFyYW0xKSwKICAg
ICAgIG1QYXJhbTIocGFyYW0yKSwKLSAgICAgIG1QYXJhbTMobmV3IFRUeXBlKEVidFZvaWQpKQor
ICAgICAgbVBhcmFtMyhUQ2FjaGU6OmdldFR5cGUoRWJ0Vm9pZCkpCiB7CiB9CiAKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0J1aWx0SW5GdW5j
dGlvbkVtdWxhdG9yR0xTTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JHTFNMLmNw
cAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JHTFNMLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTEsMzcgKzExLDk2IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9T
eW1ib2xUYWJsZS5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVmVyc2lvbkdMU0wu
aCIKIAotdm9pZCBJbml0QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JGb3JHTFNMV29ya2Fyb3VuZHMo
QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IgKmVtdSwgc2g6OkdMZW51bSBzaGFkZXJUeXBlKQordm9p
ZCBJbml0QnVpbHRJbkFic0Z1bmN0aW9uRW11bGF0b3JGb3JHTFNMV29ya2Fyb3VuZHMoQnVpbHRJ
bkZ1bmN0aW9uRW11bGF0b3IgKmVtdSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNoOjpHTGVudW0gc2hhZGVyVHlwZSkKIHsKLSAgICAvLyB3
ZSB1c2UgbWFjcm9zIGhlcmUgaW5zdGVhZCBvZiBmdW5jdGlvbiBkZWZpbml0aW9ucyB0byB3b3Jr
IGFyb3VuZCBtb3JlIEdMU0wKLSAgICAvLyBjb21waWxlciBidWdzLCBpbiBwYXJ0aWN1bGFyIG9u
IE5WSURJQSBoYXJkd2FyZSBvbiBNYWMgT1NYLiBNYWNyb3MgYXJlCi0gICAgLy8gcHJvYmxlbWF0
aWMgYmVjYXVzZSBpZiB0aGUgYXJndW1lbnQgaGFzIHNpZGUtZWZmZWN0cyB0aGV5IHdpbGwgYmUg
cmVwZWF0ZWRseQotICAgIC8vIGV2YWx1YXRlZC4gVGhpcyBpcyB1bmxpa2VseSB0byBzaG93IHVw
IGluIHJlYWwgc2hhZGVycywgYnV0IGlzIHNvbWV0aGluZyB0bwotICAgIC8vIGNvbnNpZGVyLgor
ICAgIGlmIChzaGFkZXJUeXBlID09IEdMX1ZFUlRFWF9TSEFERVIpCisgICAgeworICAgICAgICBj
b25zdCBUVHlwZSAqaW50MSA9IFRDYWNoZTo6Z2V0VHlwZShFYnRJbnQpOworICAgICAgICBlbXUt
PmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wQWJzLCBpbnQxLCAiaW50IHdlYmdsX2Fic19lbXUoaW50
IHgpIHsgcmV0dXJuIHggKiBzaWduKHgpOyB9Iik7CisgICAgfQorfQorCit2b2lkIEluaXRCdWls
dEluSXNuYW5GdW5jdGlvbkVtdWxhdG9yRm9yR0xTTFdvcmthcm91bmRzKEJ1aWx0SW5GdW5jdGlv
bkVtdWxhdG9yICplbXUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCB0YXJnZXRHTFNMVmVyc2lvbikKK3sKKyAgICAvLyBpc25hbigp
IGlzIHN1cHBvcnRlZCBzaW5jZSBHTFNMIDEuMy4KKyAgICBpZiAodGFyZ2V0R0xTTFZlcnNpb24g
PCBHTFNMX1ZFUlNJT05fMTMwKQorICAgICAgICByZXR1cm47CiAKICAgICBjb25zdCBUVHlwZSAq
ZmxvYXQxID0gVENhY2hlOjpnZXRUeXBlKEVidEZsb2F0KTsKICAgICBjb25zdCBUVHlwZSAqZmxv
YXQyID0gVENhY2hlOjpnZXRUeXBlKEVidEZsb2F0LCAyKTsKICAgICBjb25zdCBUVHlwZSAqZmxv
YXQzID0gVENhY2hlOjpnZXRUeXBlKEVidEZsb2F0LCAzKTsKICAgICBjb25zdCBUVHlwZSAqZmxv
YXQ0ID0gVENhY2hlOjpnZXRUeXBlKEVidEZsb2F0LCA0KTsKIAotICAgIGlmIChzaGFkZXJUeXBl
ID09IEdMX0ZSQUdNRU5UX1NIQURFUikKLSAgICB7Ci0gICAgICAgIGVtdS0+YWRkRW11bGF0ZWRG
dW5jdGlvbihFT3BDb3MsIGZsb2F0MSwgIndlYmdsX2VtdV9wcmVjaXNpb24gZmxvYXQgd2ViZ2xf
Y29zX2VtdSh3ZWJnbF9lbXVfcHJlY2lzaW9uIGZsb2F0IGEpIHsgcmV0dXJuIGNvcyhhKTsgfSIp
OwotICAgICAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wQ29zLCBmbG9hdDIsICJ3ZWJn
bF9lbXVfcHJlY2lzaW9uIHZlYzIgd2ViZ2xfY29zX2VtdSh3ZWJnbF9lbXVfcHJlY2lzaW9uIHZl
YzIgYSkgeyByZXR1cm4gY29zKGEpOyB9Iik7Ci0gICAgICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5j
dGlvbihFT3BDb3MsIGZsb2F0MywgIndlYmdsX2VtdV9wcmVjaXNpb24gdmVjMyB3ZWJnbF9jb3Nf
ZW11KHdlYmdsX2VtdV9wcmVjaXNpb24gdmVjMyBhKSB7IHJldHVybiBjb3MoYSk7IH0iKTsKLSAg
ICAgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcENvcywgZmxvYXQ0LCAid2ViZ2xfZW11
X3ByZWNpc2lvbiB2ZWM0IHdlYmdsX2Nvc19lbXUod2ViZ2xfZW11X3ByZWNpc2lvbiB2ZWM0IGEp
IHsgcmV0dXJuIGNvcyhhKTsgfSIpOwotICAgIH0KLSAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rp
b24oRU9wRGlzdGFuY2UsIGZsb2F0MSwgZmxvYXQxLCAiI2RlZmluZSB3ZWJnbF9kaXN0YW5jZV9l
bXUoeCwgeSkgKCh4KSA+PSAoeSkgPyAoeCkgLSAoeSkgOiAoeSkgLSAoeCkpIik7Ci0gICAgZW11
LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcERvdCwgZmxvYXQxLCBmbG9hdDEsICIjZGVmaW5lIHdl
YmdsX2RvdF9lbXUoeCwgeSkgKCh4KSAqICh5KSkiKTsKLSAgICBlbXUtPmFkZEVtdWxhdGVkRnVu
Y3Rpb24oRU9wTGVuZ3RoLCBmbG9hdDEsICIjZGVmaW5lIHdlYmdsX2xlbmd0aF9lbXUoeCkgKCh4
KSA+PSAwLjAgPyAoeCkgOiAtKHgpKSIpOwotICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihF
T3BOb3JtYWxpemUsIGZsb2F0MSwgIiNkZWZpbmUgd2ViZ2xfbm9ybWFsaXplX2VtdSh4KSAoKHgp
ID09IDAuMCA/IDAuMCA6ICgoeCkgPiAwLjAgPyAxLjAgOiAtMS4wKSkiKTsKLSAgICBlbXUtPmFk
ZEVtdWxhdGVkRnVuY3Rpb24oRU9wUmVmbGVjdCwgZmxvYXQxLCBmbG9hdDEsICIjZGVmaW5lIHdl
YmdsX3JlZmxlY3RfZW11KEksIE4pICgoSSkgLSAyLjAgKiAoTikgKiAoSSkgKiAoTikpIik7Cisg
ICAgLy8gISh4ID4gMC4wIHx8IHggPCAwLjAgfHwgeCA9PSAwLjApIHdpbGwgYmUgb3B0aW1pemVk
IGFuZCBhbHdheXMgZXF1YWwgdG8gZmFsc2UuCisgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9u
KAorICAgICAgICBFT3BJc05hbiwgZmxvYXQxLAorICAgICAgICAiYm9vbCB3ZWJnbF9pc25hbl9l
bXUoZmxvYXQgeCkgeyByZXR1cm4gKHggPiAwLjAgfHwgeCA8IDAuMCkgPyBmYWxzZSA6IHggIT0g
MC4wOyB9Iik7CisgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKAorICAgICAgICBFT3BJc05h
biwgZmxvYXQyLAorICAgICAgICAiYnZlYzIgd2ViZ2xfaXNuYW5fZW11KHZlYzIgeClcbiIKKyAg
ICAgICAgIntcbiIKKyAgICAgICAgIiAgICBidmVjMiBpc25hbjtcbiIKKyAgICAgICAgIiAgICBm
b3IgKGludCBpID0gMDsgaSA8IDI7IGkrKylcbiIKKyAgICAgICAgIiAgICB7XG4iCisgICAgICAg
ICIgICAgICAgIGlzbmFuW2ldID0gKHhbaV0gPiAwLjAgfHwgeFtpXSA8IDAuMCkgPyBmYWxzZSA6
IHhbaV0gIT0gMC4wO1xuIgorICAgICAgICAiICAgIH1cbiIKKyAgICAgICAgIiAgICByZXR1cm4g
aXNuYW47XG4iCisgICAgICAgICJ9XG4iKTsKKyAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24o
CisgICAgICAgIEVPcElzTmFuLCBmbG9hdDMsCisgICAgICAgICJidmVjMyB3ZWJnbF9pc25hbl9l
bXUodmVjMyB4KVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGJ2ZWMzIGlzbmFuO1xu
IgorICAgICAgICAiICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgaSsrKVxuIgorICAgICAgICAi
ICAgIHtcbiIKKyAgICAgICAgIiAgICAgICAgaXNuYW5baV0gPSAoeFtpXSA+IDAuMCB8fCB4W2ld
IDwgMC4wKSA/IGZhbHNlIDogeFtpXSAhPSAwLjA7XG4iCisgICAgICAgICIgICAgfVxuIgorICAg
ICAgICAiICAgIHJldHVybiBpc25hbjtcbiIKKyAgICAgICAgIn1cbiIpOworICAgIGVtdS0+YWRk
RW11bGF0ZWRGdW5jdGlvbigKKyAgICAgICAgRU9wSXNOYW4sIGZsb2F0NCwKKyAgICAgICAgImJ2
ZWM0IHdlYmdsX2lzbmFuX2VtdSh2ZWM0IHgpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIg
ICAgYnZlYzQgaXNuYW47XG4iCisgICAgICAgICIgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBp
KyspXG4iCisgICAgICAgICIgICAge1xuIgorICAgICAgICAiICAgICAgICBpc25hbltpXSA9ICh4
W2ldID4gMC4wIHx8IHhbaV0gPCAwLjApID8gZmFsc2UgOiB4W2ldICE9IDAuMDtcbiIKKyAgICAg
ICAgIiAgICB9XG4iCisgICAgICAgICIgICAgcmV0dXJuIGlzbmFuO1xuIgorICAgICAgICAifVxu
Iik7CiB9CiAKIC8vIEVtdWxhdGUgYnVpbHQtaW4gZnVuY3Rpb25zIG1pc3NpbmcgZnJvbSBHTFNM
IDEuMzAgYW5kIGhpZ2hlcgogdm9pZCBJbml0QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JGb3JHTFNM
TWlzc2luZ0Z1bmN0aW9ucyhCdWlsdEluRnVuY3Rpb25FbXVsYXRvciAqZW11LCBzaDo6R0xlbnVt
IHNoYWRlclR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCB0YXJnZXRHTFNMVmVyc2lvbikKIHsKKyAgICAvLyBFbXVsYXRlIHBh
Y2tVbm9ybTJ4MTYgYW5kIHVucGFja1Vub3JtMngxNiAoR0xTTCA0LjEwKQorICAgIGlmICh0YXJn
ZXRHTFNMVmVyc2lvbiA8IEdMU0xfVkVSU0lPTl80MTApCisgICAgeworICAgICAgICBjb25zdCBU
VHlwZSAqZmxvYXQyID0gVENhY2hlOjpnZXRUeXBlKEVidEZsb2F0LCAyKTsKKyAgICAgICAgY29u
c3QgVFR5cGUgKnVpbnQxICA9IFRDYWNoZTo6Z2V0VHlwZShFYnRVSW50KTsKKworICAgICAgICAv
LyBjbGFuZy1mb3JtYXQgb2ZmCisgICAgICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BQ
YWNrVW5vcm0yeDE2LCBmbG9hdDIsCisgICAgICAgICAgICAidWludCB3ZWJnbF9wYWNrVW5vcm0y
eDE2X2VtdSh2ZWMyIHYpXG4iCisgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgIiAgICBp
bnQgeCA9IGludChyb3VuZChjbGFtcCh2LngsIDAuMCwgMS4wKSAqIDY1NTM1LjApKTtcbiIKKyAg
ICAgICAgICAgICIgICAgaW50IHkgPSBpbnQocm91bmQoY2xhbXAodi55LCAwLjAsIDEuMCkgKiA2
NTUzNS4wKSk7XG4iCisgICAgICAgICAgICAiICAgIHJldHVybiB1aW50KCh5IDw8IDE2KSB8ICh4
ICYgMHhGRkZGKSk7XG4iCisgICAgICAgICAgICAifVxuIik7CisKKyAgICAgICAgZW11LT5hZGRF
bXVsYXRlZEZ1bmN0aW9uKEVPcFVucGFja1Vub3JtMngxNiwgdWludDEsCisgICAgICAgICAgICAi
dmVjMiB3ZWJnbF91bnBhY2tVbm9ybTJ4MTZfZW11KHVpbnQgdSlcbiIKKyAgICAgICAgICAgICJ7
XG4iCisgICAgICAgICAgICAiICAgIGZsb2F0IHggPSBmbG9hdCh1ICYgMHhGRkZGdSkgLyA2NTUz
NS4wO1xuIgorICAgICAgICAgICAgIiAgICBmbG9hdCB5ID0gZmxvYXQodSA+PiAxNikgLyA2NTUz
NS4wO1xuIgorICAgICAgICAgICAgIiAgICByZXR1cm4gdmVjMih4LCB5KTtcbiIKKyAgICAgICAg
ICAgICJ9XG4iKTsKKyAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9uCisgICAgfQorCiAgICAgLy8g
RW11bGF0ZSBwYWNrU25vcm0yeDE2LCBwYWNrSGFsZjJ4MTYsIHVucGFja1Nub3JtMngxNiwgYW5k
IHVucGFja0hhbGYyeDE2IChHTFNMIDQuMjApCiAgICAgLy8gYnkgdXNpbmcgZmxvYXRCaXRzVG9J
bnQsIGZsb2F0Qml0c1RvVWludCwgaW50Qml0c1RvRmxvYXQsIGFuZCB1aW50Qml0c1RvRmxvYXQg
KEdMU0wgMy4zMCkuCiAgICAgaWYgKHRhcmdldEdMU0xWZXJzaW9uID49IEdMU0xfVkVSU0lPTl8z
MzAgJiYgdGFyZ2V0R0xTTFZlcnNpb24gPCBHTFNMX1ZFUlNJT05fNDIwKQpAQCAtMTU1LDcgKzIx
NCw5IEBAIHZvaWQgSW5pdEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yRm9yR0xTTE0KICAgICAgICAg
ICAgICIgICAgICAgICAgICBmbG9hdCBzY2FsZTtcbiIKICAgICAgICAgICAgICIgICAgICAgICAg
ICBpZihleHBvbmVudCA8IDApXG4iCiAgICAgICAgICAgICAiICAgICAgICAgICAge1xuIgotICAg
ICAgICAgICAgIiAgICAgICAgICAgICAgICBzY2FsZSA9IDEuMCAvICgxIDw8IC1leHBvbmVudCk7
XG4iCisgICAgICAgICAgICAiICAgICAgICAgICAgICAgIC8vIFRoZSBuZWdhdGl2ZSB1bmFyeSBv
cGVyYXRvciBpcyBidWdneSBvbiBPU1guXG4iCisgICAgICAgICAgICAiICAgICAgICAgICAgICAg
IC8vIFdvcmsgYXJvdW5kIHRoaXMgYnkgdXNpbmcgYWJzIGluc3RlYWQuXG4iCisgICAgICAgICAg
ICAiICAgICAgICAgICAgICAgIHNjYWxlID0gMS4wIC8gKDEgPDwgYWJzKGV4cG9uZW50KSk7XG4i
CiAgICAgICAgICAgICAiICAgICAgICAgICAgfVxuIgogICAgICAgICAgICAgIiAgICAgICAgICAg
IGVsc2VcbiIKICAgICAgICAgICAgICIgICAgICAgICAgICB7XG4iCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9CdWlsdEluRnVuY3Rpb25FbXVs
YXRvckdMU0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvckdMU0wuaAkocmV2aXNpb24g
MjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JHTFNMLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyLDkg
KzEyLDE2IEBACiBjbGFzcyBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjsKIAogLy8KLS8vIFRoaXMg
aXMgb25seSBhIHdvcmthcm91bmQgZm9yIE9wZW5HTCBkcml2ZXIgYnVncywgYW5kIGlzbid0IG5l
ZWRlZCBpbiBnZW5lcmFsLgorLy8gVGhpcyB3b3JrcyBhcm91bmQgYnVnIGluIEludGVsIE1hYyBk
cml2ZXJzLgogLy8KLXZvaWQgSW5pdEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yRm9yR0xTTFdvcmth
cm91bmRzKEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yICplbXUsIHNoOjpHTGVudW0gc2hhZGVyVHlw
ZSk7Cit2b2lkIEluaXRCdWlsdEluQWJzRnVuY3Rpb25FbXVsYXRvckZvckdMU0xXb3JrYXJvdW5k
cyhCdWlsdEluRnVuY3Rpb25FbXVsYXRvciAqZW11LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2g6OkdMZW51bSBzaGFkZXJUeXBlKTsKKwor
Ly8KKy8vIFRoaXMgd29ya3MgYXJvdW5kIGlzbmFuKCkgYnVnIGluIEludGVsIE1hYyBkcml2ZXJz
CisvLwordm9pZCBJbml0QnVpbHRJbklzbmFuRnVuY3Rpb25FbXVsYXRvckZvckdMU0xXb3JrYXJv
dW5kcyhCdWlsdEluRnVuY3Rpb25FbXVsYXRvciAqZW11LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0R0xTTFZlcnNpb24p
OwogCiAvLwogLy8gVGhpcyBmdW5jdGlvbiBpcyBlbXVsYXRpbmcgYnVpbHQtaW4gZnVuY3Rpb25z
IG1pc3NpbmcgZnJvbSBHTFNMIDEuMzAgYW5kIGhpZ2hlci4KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9y
SExTTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JITFNMLmNwcAkocmV2aXNpb24g
MjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JITFNMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOCw2
ICs4LDU5IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9CdWlsdEluRnVuY3Rpb25F
bXVsYXRvci5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9u
RW11bGF0b3JITFNMLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJs
ZS5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVmVyc2lvbkdMU0wuaCIKKwordm9p
ZCBJbml0QnVpbHRJbklzbmFuRnVuY3Rpb25FbXVsYXRvckZvckhMU0xXb3JrYXJvdW5kcyhCdWls
dEluRnVuY3Rpb25FbXVsYXRvciAqZW11LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0R0xTTFZlcnNpb24pCit7CisgICAg
aWYgKHRhcmdldEdMU0xWZXJzaW9uIDwgR0xTTF9WRVJTSU9OXzEzMCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgVFR5cGUgKmZsb2F0MSA9IG5ldyBUVHlwZShFYnRGbG9hdCk7CisgICAgVFR5cGUg
KmZsb2F0MiA9IG5ldyBUVHlwZShFYnRGbG9hdCwgMik7CisgICAgVFR5cGUgKmZsb2F0MyA9IG5l
dyBUVHlwZShFYnRGbG9hdCwgMyk7CisgICAgVFR5cGUgKmZsb2F0NCA9IG5ldyBUVHlwZShFYnRG
bG9hdCwgNCk7CisKKyAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wSXNOYW4sIGZsb2F0
MSwKKyAgICAgICAgImJvb2wgd2ViZ2xfaXNuYW5fZW11KGZsb2F0IHgpXG4iCisgICAgICAgICJ7
XG4iCisgICAgICAgICIgICAgcmV0dXJuICh4ID4gMC4wIHx8IHggPCAwLjApID8gZmFsc2UgOiB4
ICE9IDAuMDtcbiIKKyAgICAgICAgIn1cbiIKKyAgICAgICAgIlxuIik7CisKKyAgICBlbXUtPmFk
ZEVtdWxhdGVkRnVuY3Rpb24oRU9wSXNOYW4sIGZsb2F0MiwKKyAgICAgICAgImJvb2wyIHdlYmds
X2lzbmFuX2VtdShmbG9hdDIgeClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBib29s
MiBpc25hbjtcbiIKKyAgICAgICAgIiAgICBmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKylcbiIK
KyAgICAgICAgIiAgICB7XG4iCisgICAgICAgICIgICAgICAgIGlzbmFuW2ldID0gKHhbaV0gPiAw
LjAgfHwgeFtpXSA8IDAuMCkgPyBmYWxzZSA6IHhbaV0gIT0gMC4wO1xuIgorICAgICAgICAiICAg
IH1cbiIKKyAgICAgICAgIiAgICByZXR1cm4gaXNuYW47XG4iCisgICAgICAgICJ9XG4iKTsKKwor
ICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BJc05hbiwgZmxvYXQzLAorICAgICAgICAi
Ym9vbDMgd2ViZ2xfaXNuYW5fZW11KGZsb2F0MyB4KVxuIgorICAgICAgICAie1xuIgorICAgICAg
ICAiICAgIGJvb2wzIGlzbmFuO1xuIgorICAgICAgICAiICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
MzsgaSsrKVxuIgorICAgICAgICAiICAgIHtcbiIKKyAgICAgICAgIiAgICAgICAgaXNuYW5baV0g
PSAoeFtpXSA+IDAuMCB8fCB4W2ldIDwgMC4wKSA/IGZhbHNlIDogeFtpXSAhPSAwLjA7XG4iCisg
ICAgICAgICIgICAgfVxuIgorICAgICAgICAiICAgIHJldHVybiBpc25hbjtcbiIKKyAgICAgICAg
In1cbiIpOworCisgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcElzTmFuLCBmbG9hdDQs
CisgICAgICAgICJib29sNCB3ZWJnbF9pc25hbl9lbXUoZmxvYXQ0IHgpXG4iCisgICAgICAgICJ7
XG4iCisgICAgICAgICIgICAgYm9vbDQgaXNuYW47XG4iCisgICAgICAgICIgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCA0OyBpKyspXG4iCisgICAgICAgICIgICAge1xuIgorICAgICAgICAiICAgICAg
ICBpc25hbltpXSA9ICh4W2ldID4gMC4wIHx8IHhbaV0gPCAwLjApID8gZmFsc2UgOiB4W2ldICE9
IDAuMDtcbiIKKyAgICAgICAgIiAgICB9XG4iCisgICAgICAgICIgICAgcmV0dXJuIGlzbmFuO1xu
IgorICAgICAgICAifVxuIik7Cit9CiAKIHZvaWQgSW5pdEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9y
Rm9ySExTTChCdWlsdEluRnVuY3Rpb25FbXVsYXRvciAqZW11KQogewpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11
bGF0b3JITFNMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JITFNMLmgJKHJldmlzaW9u
IDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9ySExTTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw0
ICsxMywxMCBAQCBjbGFzcyBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjsKIAogdm9pZCBJbml0QnVp
bHRJbkZ1bmN0aW9uRW11bGF0b3JGb3JITFNMKEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yICplbXUp
OwogCisvLworLy8gVGhpcyB3b3JrcyBhcm91bmQgaXNuYW4oKSBidWcgb24gc29tZSBJbnRlbCBk
cml2ZXJzLgorLy8KK3ZvaWQgSW5pdEJ1aWx0SW5Jc25hbkZ1bmN0aW9uRW11bGF0b3JGb3JITFNM
V29ya2Fyb3VuZHMoQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IgKmVtdSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRhcmdldEdMU0xW
ZXJzaW9uKTsKKwogI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX0JVSUxUSU5GVU5DVElP
TkVNVUxBVE9SSExTTF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvQ2FsbERBRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ2FsbERBRy5jcHAJKHJldmlzaW9uIDIw
NzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L0NhbGxEQUcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIENhbGxE
QUc6OkNhbGxEQUdDcmVhdG9yIDogcHVibGljIFQKICAgICAgICAgICAgICAgICBza2lwcGVkKys7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKwogICAgICAgICBBU1NFUlQobUZ1bmN0aW9ucy5z
aXplKCkgPT0gbUN1cnJlbnRJbmRleCArIHNraXBwZWQpOwogICAgICAgICByZXR1cm4gSU5JVERB
R19TVUNDRVNTOwogICAgIH0KQEAgLTc1LDcgKzc2LDggQEAgY2xhc3MgQ2FsbERBRzo6Q2FsbERB
R0NyZWF0b3IgOiBwdWJsaWMgVAogICAgICAgICAgICAgICAgIHJlY29yZC5jYWxsZWVzLnB1c2hf
YmFjayhzdGF0aWNfY2FzdDxpbnQ+KGNhbGxlZS0+aW5kZXgpKTsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgKCppZFRvSW5kZXgpW2RhdGEubm9kZS0+Z2V0RnVuY3Rpb25JZCgpXSA9IHN0
YXRpY19jYXN0PGludD4oZGF0YS5pbmRleCk7CisgICAgICAgICAgICAoKmlkVG9JbmRleClbZGF0
YS5ub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0SWQoKV0gPQorICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PGludD4oZGF0YS5pbmRleCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTkyLDEzICs5NCwzOSBAQCBjbGFzcyBDYWxsREFHOjpDYWxsREFHQ3JlYXRvciA6IHB1YmxpYyBU
CiAgICAgICAgIH0KIAogICAgICAgICBzdGQ6OnNldDxDcmVhdG9yRnVuY3Rpb25EYXRhKj4gY2Fs
bGVlczsKLSAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZTsKKyAgICAgICAgVEludGVybUZ1
bmN0aW9uRGVmaW5pdGlvbiAqbm9kZTsKICAgICAgICAgVFN0cmluZyBuYW1lOwogICAgICAgICBz
aXplX3QgaW5kZXg7CiAgICAgICAgIGJvb2wgaW5kZXhBc3NpZ25lZDsKICAgICAgICAgYm9vbCB2
aXNpdGluZzsKICAgICB9OwogCisgICAgYm9vbCB2aXNpdEZ1bmN0aW9uRGVmaW5pdGlvbihWaXNp
dCB2aXNpdCwgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAqbm9kZSkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIC8vIENyZWF0ZSB0aGUgcmVjb3JkIGlmIG5lZWQgYmUgYW5kIHJlbWVtYmVyIHRo
ZSBub2RlLgorICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGF1dG8gaXQgPSBtRnVuY3Rpb25zLmZpbmQobm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJ
bmZvKCktPmdldE5hbWUoKSk7CisKKyAgICAgICAgICAgIGlmIChpdCA9PSBtRnVuY3Rpb25zLmVu
ZCgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1DdXJyZW50RnVuY3Rpb24gPSAm
bUZ1bmN0aW9uc1tub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0TmFtZSgpXTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBtQ3VycmVudEZ1bmN0aW9uID0gJml0LT5zZWNvbmQ7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIG1DdXJyZW50RnVuY3Rpb24tPm5vZGUgPSBub2RlOworICAgICAgICAgICAgbUN1
cnJlbnRGdW5jdGlvbi0+bmFtZSA9IG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5nZXRO
YW1lKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAodmlzaXQgPT0gUG9zdFZpc2l0KQor
ICAgICAgICB7CisgICAgICAgICAgICBtQ3VycmVudEZ1bmN0aW9uID0gbnVsbHB0cjsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICAvLyBBZ2dyZWdhdGVzIHRo
ZSBBU1Qgbm9kZSBmb3IgZWFjaCBmdW5jdGlvbiBhcyB3ZWxsIGFzIHRoZSBuYW1lIG9mIHRoZSBm
dW5jdGlvbnMgY2FsbGVkIGJ5IGl0CiAgICAgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNp
dCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkgb3ZlcnJpZGUKICAgICB7CkBAIC0xMDgsMzYgKzEz
NiwxMCBAQCBjbGFzcyBDYWxsREFHOjpDYWxsREFHQ3JlYXRvciA6IHB1YmxpYyBUCiAgICAgICAg
ICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgLy8gRnVuY3Rpb24gZGVjbGFyYXRpb24sIGNyZWF0ZSBhbiBlbXB0eSByZWNvcmQuCi0gICAg
ICAgICAgICAgICAgYXV0byYgcmVjb3JkID0gbUZ1bmN0aW9uc1tub2RlLT5nZXROYW1lKCldOwot
ICAgICAgICAgICAgICAgIHJlY29yZC5uYW1lID0gbm9kZS0+Z2V0TmFtZSgpOworICAgICAgICAg
ICAgICAgIGF1dG8gJnJlY29yZCA9IG1GdW5jdGlvbnNbbm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJ
bmZvKCktPmdldE5hbWUoKV07CisgICAgICAgICAgICAgICAgcmVjb3JkLm5hbWUgID0gbm9kZS0+
Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5hbWUoKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgRU9wRnVuY3Rpb246Ci0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgLy8gRnVuY3Rpb24gZGVmaW5pdGlvbiwgY3JlYXRlIHRoZSByZWNv
cmQgaWYgbmVlZCBiZSBhbmQgcmVtZW1iZXIgdGhlIG5vZGUuCi0gICAgICAgICAgICAgICAgaWYg
KHZpc2l0ID09IFByZVZpc2l0KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgYXV0byBpdCA9IG1GdW5jdGlvbnMuZmluZChub2RlLT5nZXROYW1lKCkpOwotCi0gICAgICAg
ICAgICAgICAgICAgIGlmIChpdCA9PSBtRnVuY3Rpb25zLmVuZCgpKQotICAgICAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtQ3VycmVudEZ1bmN0aW9uID0gJm1GdW5j
dGlvbnNbbm9kZS0+Z2V0TmFtZSgpXTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG1DdXJyZW50RnVuY3Rpb24gPSAmaXQtPnNlY29uZDsKLSAgICAgICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgICAgIG1DdXJyZW50RnVuY3Rpb24tPm5vZGUgPSBub2Rl
OwotICAgICAgICAgICAgICAgICAgICBtQ3VycmVudEZ1bmN0aW9uLT5uYW1lID0gbm9kZS0+Z2V0
TmFtZSgpOwotCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZp
c2l0ID09IFBvc3RWaXNpdCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IG1DdXJyZW50RnVuY3Rpb24gPSBudWxscHRyOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KICAgICAgICAgICBjYXNlIEVPcEZ1bmN0aW9u
Q2FsbDoKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAvLyBGdW5jdGlvbiBjYWxsLCBh
ZGQgdGhlIGNhbGxlZXMKQEAgLTE0Niw3ICsxNDgsNyBAQCBjbGFzcyBDYWxsREFHOjpDYWxsREFH
Q3JlYXRvciA6IHB1YmxpYyBUCiAgICAgICAgICAgICAgICAgICAgIC8vIERvIG5vdCBoYW5kbGUg
Y2FsbHMgdG8gYnVpbHRpbiBmdW5jdGlvbnMKICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmlzVXNlckRlZmluZWQoKSkKICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICAgICAgYXV0byBpdCA9IG1GdW5jdGlvbnMuZmluZChub2RlLT5nZXROYW1lKCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgYXV0byBpdCA9IG1GdW5jdGlvbnMuZmluZChub2RlLT5nZXRG
dW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0TmFtZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChpdCAhPSBtRnVuY3Rpb25zLmVuZCgpKTsKIAogICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gV2UgbWlnaHQgYmUgaW4gYSB0b3AtbGV2ZWwgZnVuY3Rpb24gY2FsbCB0byBzZXQgYSBn
bG9iYWwgdmFyaWFibGUKQEAgLTE2NSw1MiArMTY3LDEwMiBAQCBjbGFzcyBDYWxsREFHOjpDYWxs
REFHQ3JlYXRvciA6IHB1YmxpYyBUCiAgICAgfQogCiAgICAgLy8gUmVjdXJzaXZlbHkgYXNzaWdu
cyBpbmRpY2VzIHRvIGEgc3ViIERBRwotICAgIEluaXRSZXN1bHQgYXNzaWduSW5kaWNlc0ludGVy
bmFsKENyZWF0b3JGdW5jdGlvbkRhdGEgKmZ1bmN0aW9uKQorICAgIEluaXRSZXN1bHQgYXNzaWdu
SW5kaWNlc0ludGVybmFsKENyZWF0b3JGdW5jdGlvbkRhdGEgKnJvb3QpCiAgICAgewotICAgICAg
ICBBU1NFUlQoZnVuY3Rpb24pOworICAgICAgICAvLyBJdGVyYXRpdmUgaW1wbGVtZW50YXRpb24g
b2YgdGhlIGluZGV4IGFzc2lnbm1lbnQgYWxnb3JpdGhtLiBBIHJlY3Vyc2l2ZSB2ZXJzaW9uCisg
ICAgICAgIC8vIHdvdWxkIGJlIHByZXR0aWVyIGJ1dCBzaW5jZSB0aGUgQ2FsbERBRyBjcmVhdGlv
biBydW5zIGJlZm9yZSB0aGUgbGltaXRpbmcgb2YgdGhlCisgICAgICAgIC8vIGNhbGwgZGVwdGgs
IHdlIG1pZ2h0IGdldCBzdGFjayBvdmVyZmxvd3MgKGNvbXB1dGF0aW9uIG9mIHRoZSBjYWxsIGRl
cHRoIHVzZXMgdGhlCisgICAgICAgIC8vIENhbGxEQUcpLgogCi0gICAgICAgIGlmICghZnVuY3Rp
b24tPm5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgICptQ3JlYXRpb25JbmZvIDw8ICJVbmRl
ZmluZWQgZnVuY3Rpb24gJyIgPDwgZnVuY3Rpb24tPm5hbWUKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDw8ICIpJyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgY2FsbCBjaGFpbjoiOwotICAgICAg
ICAgICAgcmV0dXJuIElOSVREQUdfVU5ERUZJTkVEOwotICAgICAgICB9CisgICAgICAgIEFTU0VS
VChyb290KTsKIAotICAgICAgICBpZiAoZnVuY3Rpb24tPmluZGV4QXNzaWduZWQpCisgICAgICAg
IGlmIChyb290LT5pbmRleEFzc2lnbmVkKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4g
SU5JVERBR19TVUNDRVNTOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGZ1bmN0aW9uLT52aXNp
dGluZykKKyAgICAgICAgLy8gSWYgd2UgZGlkbid0IGhhdmUgdG8gZGV0ZWN0IHJlY3Vyc2lvbiwg
ZnVuY3Rpb25zVG9Qcm9jZXNzIGNvdWxkIGJlIGEgc2ltcGxlIHF1ZXVlCisgICAgICAgIC8vIGlu
IHdoaWNoIHdlIGFkZCB0aGUgZnVuY3Rpb24gYmVpbmcgcHJvY2Vzc2VkJ3MgY2FsbGVlcy4gSG93
ZXZlciBpbiBvcmRlciB0byBkZXRlY3QKKyAgICAgICAgLy8gcmVjdXJzaW9uIHdlIG5lZWQgdG8g
a25vdyB3aGljaCBmdW5jdGlvbnMgd2UgYXJlIGN1cnJlbnRseSB2aXNpdGluZy4gRm9yIHRoYXQg
cmVhc29uCisgICAgICAgIC8vIGZ1bmN0aW9uc1RvUHJvY2VzcyB3aWxsIGxvb2sgbGlrZSBhIGNv
bmNhdGVuYXRpb24gb2Ygc2VnbWVudHMgb2YgdGhlIGZvcm0KKyAgICAgICAgLy8gW0YgdmlzaXRp
bmcgPSB0cnVlLCBzdWJzZXQgb2YgRiBjYWxsZWVzIHdpdGggdmlzaXRpbmcgPSBmYWxzZV0gYW5k
IHRoZSBmb2xsb3dpbmcKKyAgICAgICAgLy8gc2VnbWVudCAoaWYgYW55KSB3aWxsIGJlIHN0YXJ0
IHdpdGggYSBjYWxsZWUgb2YgRi4KKyAgICAgICAgLy8gVGhpcyB3YXkgd2UgY2FuIHJlbWVtYmVy
IHdoZW4gd2Ugc3RhcnRlZCB2aXNpdGluZyBhIGZ1bmN0aW9uLCB0byBwdXQgdmlzaXRpbmcgYmFj
aworICAgICAgICAvLyB0byBmYWxzZS4KKyAgICAgICAgVFZlY3RvcjxDcmVhdG9yRnVuY3Rpb25E
YXRhICo+IGZ1bmN0aW9uc1RvUHJvY2VzczsKKyAgICAgICAgZnVuY3Rpb25zVG9Qcm9jZXNzLnB1
c2hfYmFjayhyb290KTsKKworICAgICAgICBJbml0UmVzdWx0IHJlc3VsdCA9IElOSVREQUdfU1VD
Q0VTUzsKKworICAgICAgICB3aGlsZSAoIWZ1bmN0aW9uc1RvUHJvY2Vzcy5lbXB0eSgpKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAobUNyZWF0aW9uSW5mbykKKyAgICAgICAgICAgIENyZWF0
b3JGdW5jdGlvbkRhdGEgKmZ1bmN0aW9uID0gZnVuY3Rpb25zVG9Qcm9jZXNzLmJhY2soKTsKKwor
ICAgICAgICAgICAgaWYgKGZ1bmN0aW9uLT52aXNpdGluZykKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBmdW5jdGlvbi0+dmlzaXRpbmcgICAgICA9IGZhbHNlOworICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uLT5pbmRleCAgICAgICAgID0gbUN1cnJlbnRJbmRleCsrOworICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uLT5pbmRleEFzc2lnbmVkID0gdHJ1ZTsKKworICAgICAgICAgICAgICAg
IGZ1bmN0aW9uc1RvUHJvY2Vzcy5wb3BfYmFjaygpOworICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWZ1bmN0aW9uLT5ub2RlKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICptQ3JlYXRpb25JbmZvIDw8ICJVbmRlZmluZWQg
ZnVuY3Rpb24gJyIgPDwgZnVuY3Rpb24tPm5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8PCAiKScgdXNlZCBpbiB0aGUgZm9sbG93aW5nIGNhbGwgY2hhaW46IjsKKyAgICAgICAg
ICAgICAgICByZXN1bHQgPSBJTklUREFHX1VOREVGSU5FRDsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGZ1bmN0aW9uLT5pbmRleEFzc2ln
bmVkKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZ1bmN0aW9uc1RvUHJvY2Vzcy5w
b3BfYmFjaygpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBmdW5jdGlvbi0+dmlzaXRpbmcgPSB0cnVlOworCisgICAgICAgICAgICBmb3Ig
KGF1dG8gY2FsbGVlIDogZnVuY3Rpb24tPmNhbGxlZXMpCiAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgKm1DcmVhdGlvbkluZm8gPDwgIlJlY3Vyc2l2ZSBmdW5jdGlvbiBjYWxsIGluIHRo
ZSBmb2xsb3dpbmcgY2FsbCBjaGFpbjoiIDw8IGZ1bmN0aW9uLT5uYW1lOworICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uc1RvUHJvY2Vzcy5wdXNoX2JhY2soY2FsbGVlKTsKKworICAgICAgICAgICAg
ICAgIC8vIENoZWNrIGlmIHRoZSBjYWxsZWUgaXMgYWxyZWFkeSBiZWluZyB2aXNpdGVkIGFmdGVy
IHB1c2hpbmcgaXQgc28gdGhhdCBpdCBhcHBlYXJzCisgICAgICAgICAgICAgICAgLy8gaW4gdGhl
IGNoYWluIHByaW50ZWQgaW4gdGhlIGluZm8gbG9nLgorICAgICAgICAgICAgICAgIGlmIChjYWxs
ZWUtPnZpc2l0aW5nKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgKm1D
cmVhdGlvbkluZm8gPDwgIlJlY3Vyc2l2ZSBmdW5jdGlvbiBjYWxsIGluIHRoZSBmb2xsb3dpbmcg
Y2FsbCBjaGFpbjoiOworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBJTklUREFHX1JFQ1VS
U0lPTjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocmVzdWx0ICE9IElOSVREQUdfU1VDQ0VTUykK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHJldHVybiBJTklUREFHX1JFQ1VSU0lPTjsKICAgICAgICAgfQotICAgICAgICBm
dW5jdGlvbi0+dmlzaXRpbmcgPSB0cnVlOwogCi0gICAgICAgIGZvciAoYXV0byAmY2FsbGVlIDog
ZnVuY3Rpb24tPmNhbGxlZXMpCisgICAgICAgIC8vIFRoZSBjYWxsIGNoYWluIGlzIG1hZGUgb2Yg
dGhlIGZ1bmN0aW9uIHdlIHdlcmUgdmlzaXRpbmcgd2hlbiB0aGUgZXJyb3Igd2FzIGRldGVjdGVk
LgorICAgICAgICBpZiAocmVzdWx0ICE9IElOSVREQUdfU1VDQ0VTUykKICAgICAgICAgewotICAg
ICAgICAgICAgSW5pdFJlc3VsdCByZXN1bHQgPSBhc3NpZ25JbmRpY2VzSW50ZXJuYWwoY2FsbGVl
KTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gSU5JVERBR19TVUNDRVNTKQorICAgICAgICAg
ICAgYm9vbCBmaXJzdCA9IHRydWU7CisgICAgICAgICAgICBmb3IgKGF1dG8gZnVuY3Rpb24gOiBm
dW5jdGlvbnNUb1Byb2Nlc3MpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gV2Ug
a25vdyB0aGF0IHRoZXJlIGlzIGFuIGlzc3VlIHdpdGggdGhlIGNhbGwgY2hhaW4gaW4gdGhlIEFT
VCwKLSAgICAgICAgICAgICAgICAvLyBwcmludCB0aGUgbGluayBvZiB0aGUgY2hhaW4gd2Ugd2Vy
ZSBwcm9jZXNzaW5nLgotICAgICAgICAgICAgICAgIGlmIChtQ3JlYXRpb25JbmZvKQorICAgICAg
ICAgICAgICAgIGlmIChmdW5jdGlvbi0+dmlzaXRpbmcpCiAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAqbUNyZWF0aW9uSW5mbyA8PCAiIDwtICIgPDwgZnVuY3Rpb24tPm5h
bWUgPDwgIikiOworICAgICAgICAgICAgICAgICAgICBpZiAoIWZpcnN0KQorICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAqbUNyZWF0aW9uSW5mbyA8PCAiIC0+
ICI7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgKm1DcmVhdGlv
bkluZm8gPDwgZnVuY3Rpb24tPm5hbWUgPDwgIikiOworICAgICAgICAgICAgICAgICAgICBmaXJz
dCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgZnVuY3Rpb24tPmluZGV4
ID0gbUN1cnJlbnRJbmRleCsrOwotICAgICAgICBmdW5jdGlvbi0+aW5kZXhBc3NpZ25lZCA9IHRy
dWU7Ci0KLSAgICAgICAgZnVuY3Rpb24tPnZpc2l0aW5nID0gZmFsc2U7Ci0gICAgICAgIHJldHVy
biBJTklUREFHX1NVQ0NFU1M7CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAgICAg
VEluZm9TaW5rQmFzZSAqbUNyZWF0aW9uSW5mbzsKQEAgLTIzMiwxMyArMjg0LDkgQEAgQ2FsbERB
Rzo6fkNhbGxEQUcoKQogCiBjb25zdCBzaXplX3QgQ2FsbERBRzo6SW52YWxpZEluZGV4ID0gc3Rk
OjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsKIAotc2l6ZV90IENhbGxEQUc6OmZpbmRJ
bmRleChjb25zdCBUSW50ZXJtQWdncmVnYXRlICpmdW5jdGlvbikgY29uc3QKK3NpemVfdCBDYWxs
REFHOjpmaW5kSW5kZXgoY29uc3QgVEZ1bmN0aW9uU3ltYm9sSW5mbyAqZnVuY3Rpb25JbmZvKSBj
b25zdAogewotICAgIFRPcGVyYXRvciBvcCA9IGZ1bmN0aW9uLT5nZXRPcCgpOwotICAgIEFTU0VS
VChvcCA9PSBFT3BQcm90b3R5cGUgfHwgb3AgPT0gRU9wRnVuY3Rpb24gfHwgb3AgPT0gRU9wRnVu
Y3Rpb25DYWxsKTsKLSAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKG9wKTsKLQotICAgIGF1
dG8gaXQgPSBtRnVuY3Rpb25JZFRvSW5kZXguZmluZChmdW5jdGlvbi0+Z2V0RnVuY3Rpb25JZCgp
KTsKKyAgICBhdXRvIGl0ID0gbUZ1bmN0aW9uSWRUb0luZGV4LmZpbmQoZnVuY3Rpb25JbmZvLT5n
ZXRJZCgpKTsKIAogICAgIGlmIChpdCA9PSBtRnVuY3Rpb25JZFRvSW5kZXguZW5kKCkpCiAgICAg
ewpAQCAtMjU4LDcgKzMwNiw3IEBAIGNvbnN0IENhbGxEQUc6OlJlY29yZCAmQ2FsbERBRzo6Z2V0
UmVjb3IKIAogY29uc3QgQ2FsbERBRzo6UmVjb3JkICZDYWxsREFHOjpnZXRSZWNvcmQoY29uc3Qg
VEludGVybUFnZ3JlZ2F0ZSAqZnVuY3Rpb24pIGNvbnN0CiB7Ci0gICAgc2l6ZV90IGluZGV4ID0g
ZmluZEluZGV4KGZ1bmN0aW9uKTsKKyAgICBzaXplX3QgaW5kZXggPSBmaW5kSW5kZXgoZnVuY3Rp
b24tPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpKTsKICAgICBBU1NFUlQoaW5kZXggIT0gSW52YWxp
ZEluZGV4ICYmIGluZGV4IDwgbVJlY29yZHMuc2l6ZSgpKTsKICAgICByZXR1cm4gbVJlY29yZHNb
aW5kZXhdOwogfQpAQCAtMjc2LDYgKzMyNCw4IEBAIHZvaWQgQ2FsbERBRzo6Y2xlYXIoKQogCiBD
YWxsREFHOjpJbml0UmVzdWx0IENhbGxEQUc6OmluaXQoVEludGVybU5vZGUgKnJvb3QsIFRJbmZv
U2lua0Jhc2UgKmluZm8pCiB7CisgICAgQVNTRVJUKGluZm8pOworCiAgICAgQ2FsbERBR0NyZWF0
b3IgY3JlYXRvcihpbmZvKTsKIAogICAgIC8vIENyZWF0ZXMgdGhlIG1hcHBpbmcgb2YgZnVuY3Rp
b25zIHRvIGNhbGxlZXMKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL0NhbGxEQUcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9DYWxsREFHLmgJKHJldmlzaW9uIDIwNzgwNCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0NhbGxE
QUcuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBDYWxsREFHIDogYW5n
bGU6Ok5vbkNvcHlhYmxlCiAgICAgc3RydWN0IFJlY29yZAogICAgIHsKICAgICAgICAgc3RkOjpz
dHJpbmcgbmFtZTsKLSAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZTsKKyAgICAgICAgVElu
dGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAqbm9kZTsKICAgICAgICAgc3RkOjp2ZWN0b3I8aW50PiBj
YWxsZWVzOwogICAgIH07CiAKQEAgLTU3LDcgKzU3LDcgQEAgY2xhc3MgQ2FsbERBRyA6IGFuZ2xl
OjpOb25Db3B5YWJsZQogICAgIEluaXRSZXN1bHQgaW5pdChUSW50ZXJtTm9kZSAqcm9vdCwgVElu
Zm9TaW5rQmFzZSAqaW5mbyk7CiAKICAgICAvLyBSZXR1cm5zIEludmFsaWRJbmRleCBpZiB0aGUg
ZnVuY3Rpb24gd2Fzbid0IGZvdW5kCi0gICAgc2l6ZV90IGZpbmRJbmRleChjb25zdCBUSW50ZXJt
QWdncmVnYXRlICpmdW5jdGlvbikgY29uc3Q7CisgICAgc2l6ZV90IGZpbmRJbmRleChjb25zdCBU
RnVuY3Rpb25TeW1ib2xJbmZvICpmdW5jdGlvbkluZm8pIGNvbnN0OwogCiAgICAgY29uc3QgUmVj
b3JkICZnZXRSZWNvcmRGcm9tSW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdDsKICAgICBjb25zdCBS
ZWNvcmQgJmdldFJlY29yZChjb25zdCBUSW50ZXJtQWdncmVnYXRlICpmdW5jdGlvbikgY29uc3Q7
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9D
b2RlR2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9Db2RlR2VuLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29kZUdlbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQsOCArNCw2IEBACiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgogLy8KIAotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvQ29tcGlsZXIuaCIKLQogI2lm
ZGVmIEFOR0xFX0VOQUJMRV9FU1NMCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9UcmFu
c2xhdG9yRVNTTC5oIgogI2VuZGlmCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9Db21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29tcGlsZXIuY3BwCShyZXZp
c2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9Db21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQsMTAgKzQsMTggQEAKIC8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwogCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJh
bnNsYXRvci9DYWNoZS5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvQ29tcGlsZXIu
aCIKKworI2luY2x1ZGUgPHNzdHJlYW0+CisKKyNpbmNsdWRlICJhbmdsZV9nbC5oIgorI2luY2x1
ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0Fk
ZEFuZFRydWVUb0xvb3BDb25kaXRpb24uaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9y
L0NhY2hlLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9DYWxsREFHLmgiCiAjaW5j
bHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9EZWZlckdsb2JhbEluaXRpYWxpemVycy5oIgorI2lu
Y2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0Lmgi
CisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9FbXVsYXRlUHJlY2lzaW9uLmgiCiAjaW5j
bHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9Gb3JMb29wVW5yb2xsLmgiCiAjaW5jbHVkZSAiY29t
cGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNs
YXRvci9Jbml0aWFsaXplUGFyc2VDb250ZXh0LmgiCkBAIC0xNiwyNyArMjQsNTcgQEAKICNpbmNs
dWRlICJjb21waWxlci90cmFuc2xhdG9yL1BydW5lRW1wdHlEZWNsYXJhdGlvbnMuaCIKICNpbmNs
dWRlICJjb21waWxlci90cmFuc2xhdG9yL1JlZ2VuZXJhdGVTdHJ1Y3ROYW1lcy5oIgogI2luY2x1
ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlUG93LmgiCi0jaW5jbHVkZSAiY29tcGlsZXIv
dHJhbnNsYXRvci9SZW5hbWVGdW5jdGlvbi5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0
b3IvUmV3cml0ZURvV2hpbGUuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1NjYWxh
cml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJncy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5z
bGF0b3IvVW5mb2xkU2hvcnRDaXJjdWl0QVNULmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNs
YXRvci9Vc2VJbnRlcmZhY2VCbG9ja0ZpZWxkcy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5z
bGF0b3IvVmFsaWRhdGVMaW1pdGF0aW9ucy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0
b3IvVmFsaWRhdGVNYXhQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRv
ci9WYWxpZGF0ZU91dHB1dHMuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1Zhcmlh
YmxlUGFja2VyLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9kZXBncmFwaC9EZXBl
bmRlbmN5R3JhcGguaCIKLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0Rl
cGVuZGVuY3lHcmFwaE91dHB1dC5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvdGlt
aW5nL1Jlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmcuaCIKLSNpbmNsdWRlICJjb21waWxlci90
cmFuc2xhdG9yL3RpbWluZy9SZXN0cmljdFZlcnRleFNoYWRlclRpbWluZy5oIgogI2luY2x1ZGUg
InRoaXJkX3BhcnR5L2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5oIgotI2luY2x1ZGUgImFu
Z2xlX2dsLmgiCi0jaW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5oIgorCituYW1lc3BhY2UKK3sK
KworI2lmIGRlZmluZWQoQU5HTEVfRU5BQkxFX0ZVWlpFUl9DT1JQVVNfT1VUUFVUKQordm9pZCBE
dW1wRnV6emVyQ2FzZShjaGFyIGNvbnN0ICpjb25zdCAqc2hhZGVyU3RyaW5ncywKKyAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IG51bVN0cmluZ3MsCisgICAgICAgICAgICAgICAgICAgIHVpbnQz
Ml90IHR5cGUsCisgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNwZWMsCisgICAgICAgICAg
ICAgICAgICAgIHVpbnQzMl90IG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgdWludDY0X3Qg
b3B0aW9ucykKK3sKKyAgICBzdGF0aWMgaW50IGZpbGVJbmRleCA9IDA7CisKKyAgICBzdGQ6Om9z
dHJpbmdzdHJlYW0gbzsKKyAgICBvIDw8ICJjb3JwdXMvIiA8PCBmaWxlSW5kZXgrKyA8PCAiLnNh
bXBsZSI7CisgICAgc3RkOjpzdHJpbmcgcyA9IG8uc3RyKCk7CisKKyAgICAvLyBNdXN0IG1hdGNo
IHRoZSBpbnB1dCBmb3JtYXQgb2YgdGhlIGZ1enplcgorICAgIEZJTEUgKmYgPSBmb3BlbihzLmNf
c3RyKCksICJ3Iik7CisgICAgZndyaXRlKCZ0eXBlLCBzaXplb2YodHlwZSksIDEsIGYpOworICAg
IGZ3cml0ZSgmc3BlYywgc2l6ZW9mKHNwZWMpLCAxLCBmKTsKKyAgICBmd3JpdGUoJm91dHB1dCwg
c2l6ZW9mKG91dHB1dCksIDEsIGYpOworICAgIGZ3cml0ZSgmb3B0aW9ucywgc2l6ZW9mKG9wdGlv
bnMpLCAxLCBmKTsKKworICAgIGNoYXIgemVyb1sxMjggLSAyMF0gPSB7MH07CisgICAgZndyaXRl
KCZ6ZXJvLCAxMjggLSAyMCwgMSwgZik7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51
bVN0cmluZ3M7IGkrKykKKyAgICB7CisgICAgICAgIGZ3cml0ZShzaGFkZXJTdHJpbmdzW2ldLCBz
aXplb2YoY2hhciksIHN0cmxlbihzaGFkZXJTdHJpbmdzW2ldKSwgZik7CisgICAgfQorICAgIGZ3
cml0ZSgmemVybywgMSwgMSwgZik7CisKKyAgICBmY2xvc2UoZik7Cit9CisjZW5kaWYgIC8vIGRl
ZmluZWQoQU5HTEVfRU5BQkxFX0ZVWlpFUl9DT1JQVVNfT1VUUFVUKQorfSAgLy8gYW5vbnltb3Vz
IG5hbWVzcGFjZQogCiBib29sIElzV2ViR0xCYXNlZFNwZWMoU2hTaGFkZXJTcGVjIHNwZWMpCiB7
Ci0gICAgcmV0dXJuIChzcGVjID09IFNIX1dFQkdMX1NQRUMgfHwKLSAgICAgICAgICAgIHNwZWMg
PT0gU0hfQ1NTX1NIQURFUlNfU1BFQyB8fAotICAgICAgICAgICAgc3BlYyA9PSBTSF9XRUJHTDJf
U1BFQyk7CisgICAgcmV0dXJuIChzcGVjID09IFNIX1dFQkdMX1NQRUMgfHwgc3BlYyA9PSBTSF9X
RUJHTDJfU1BFQyB8fCBzcGVjID09IFNIX1dFQkdMM19TUEVDKTsKIH0KIAogYm9vbCBJc0dMU0wx
MzBPck5ld2VyKFNoU2hhZGVyT3V0cHV0IG91dHB1dCkKQEAgLTYwLDcgKzk4LDYgQEAgc2l6ZV90
IEdldEdsb2JhbE1heFRva2VuU2l6ZShTaFNoYWRlclNwZQogICAgIHN3aXRjaCAoc3BlYykKICAg
ICB7CiAgICAgICBjYXNlIFNIX1dFQkdMX1NQRUM6Ci0gICAgICBjYXNlIFNIX0NTU19TSEFERVJT
X1NQRUM6CiAgICAgICAgIHJldHVybiAyNTY7CiAgICAgICBkZWZhdWx0OgogICAgICAgICByZXR1
cm4gMTAyNDsKQEAgLTExMSwxMSArMTQ4LDEzIEBAIGludCBNYXBTcGVjVG9TaGFkZXJWZXJzaW9u
KFNoU2hhZGVyU3BlYyAKICAgICB7CiAgICAgICBjYXNlIFNIX0dMRVMyX1NQRUM6CiAgICAgICBj
YXNlIFNIX1dFQkdMX1NQRUM6Ci0gICAgICBjYXNlIFNIX0NTU19TSEFERVJTX1NQRUM6CiAgICAg
ICAgIHJldHVybiAxMDA7CiAgICAgICBjYXNlIFNIX0dMRVMzX1NQRUM6CiAgICAgICBjYXNlIFNI
X1dFQkdMMl9TUEVDOgogICAgICAgICByZXR1cm4gMzAwOworICAgICAgY2FzZSBTSF9HTEVTM18x
X1NQRUM6CisgICAgICBjYXNlIFNIX1dFQkdMM19TUEVDOgorICAgICAgICAgIHJldHVybiAzMTA7
CiAgICAgICBkZWZhdWx0OgogICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAgICByZXR1cm4g
MDsKQEAgLTEzNyw3ICsxNzYsOCBAQCBUU2hIYW5kbGVCYXNlOjp+VFNoSGFuZGxlQmFzZSgpCiB9
CiAKIFRDb21waWxlcjo6VENvbXBpbGVyKHNoOjpHTGVudW0gdHlwZSwgU2hTaGFkZXJTcGVjIHNw
ZWMsIFNoU2hhZGVyT3V0cHV0IG91dHB1dCkKLSAgICA6IHNoYWRlclR5cGUodHlwZSksCisgICAg
OiB2YXJpYWJsZXNDb2xsZWN0ZWQoZmFsc2UpLAorICAgICAgc2hhZGVyVHlwZSh0eXBlKSwKICAg
ICAgIHNoYWRlclNwZWMoc3BlYyksCiAgICAgICBvdXRwdXRUeXBlKG91dHB1dCksCiAgICAgICBt
YXhVbmlmb3JtVmVjdG9ycygwKSwKQEAgLTE0OCwxNSArMTg4LDE3IEBAIFRDb21waWxlcjo6VENv
bXBpbGVyKHNoOjpHTGVudW0gdHlwZSwgU2gKICAgICAgIGNsYW1waW5nU3RyYXRlZ3koU0hfQ0xB
TVBfV0lUSF9DTEFNUF9JTlRSSU5TSUMpLAogICAgICAgYnVpbHRJbkZ1bmN0aW9uRW11bGF0b3Io
KSwKICAgICAgIG1Tb3VyY2VQYXRoKE5VTEwpLAorICAgICAgbUNvbXB1dGVTaGFkZXJMb2NhbFNp
emVEZWNsYXJlZChmYWxzZSksCiAgICAgICBtVGVtcG9yYXJ5SW5kZXgoMCkKIHsKKyAgICBtQ29t
cHV0ZVNoYWRlckxvY2FsU2l6ZS5maWxsKDEpOwogfQogCiBUQ29tcGlsZXI6On5UQ29tcGlsZXIo
KQogewogfQogCi1ib29sIFRDb21waWxlcjo6c2hvdWxkUnVuTG9vcEFuZEluZGV4aW5nVmFsaWRh
dGlvbihpbnQgY29tcGlsZU9wdGlvbnMpIGNvbnN0Citib29sIFRDb21waWxlcjo6c2hvdWxkUnVu
TG9vcEFuZEluZGV4aW5nVmFsaWRhdGlvbihTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25z
KSBjb25zdAogewogICAgIC8vIElmIGNvbXBpbGluZyBhbiBFU1NMIDEuMDAgc2hhZGVyIGZvciBX
ZWJHTCwgb3IgaWYgaXRzIGJlZW4gcmVxdWVzdGVkIHRocm91Z2ggdGhlIEFQSSwKICAgICAvLyB2
YWxpZGF0ZSBsb29wIGFuZCBpbmRleGluZyBhcyB3ZWxsICh0byB2ZXJpZnkgdGhhdCB0aGUgc2hh
ZGVyIG9ubHkgdXNlcyBtaW5pbWFsIGZ1bmN0aW9uYWxpdHkKQEAgLTE5MSwxNSArMjMzLDE2IEBA
IGJvb2wgVENvbXBpbGVyOjpJbml0KGNvbnN0IFNoQnVpbHRJblJlc28KICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotVEludGVybU5vZGUgKlRDb21waWxlcjo6Y29tcGlsZVRyZWVGb3JUZXN0aW5nKGNv
bnN0IGNoYXIqIGNvbnN0IHNoYWRlclN0cmluZ3NbXSwKLSAgICBzaXplX3QgbnVtU3RyaW5ncywg
aW50IGNvbXBpbGVPcHRpb25zKQorVEludGVybUJsb2NrICpUQ29tcGlsZXI6OmNvbXBpbGVUcmVl
Rm9yVGVzdGluZyhjb25zdCBjaGFyICpjb25zdCBzaGFkZXJTdHJpbmdzW10sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBudW1TdHJpbmdzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaENvbXBpbGVP
cHRpb25zIGNvbXBpbGVPcHRpb25zKQogewogICAgIHJldHVybiBjb21waWxlVHJlZUltcGwoc2hh
ZGVyU3RyaW5ncywgbnVtU3RyaW5ncywgY29tcGlsZU9wdGlvbnMpOwogfQogCi1USW50ZXJtTm9k
ZSAqVENvbXBpbGVyOjpjb21waWxlVHJlZUltcGwoY29uc3QgY2hhciAqY29uc3Qgc2hhZGVyU3Ry
aW5nc1tdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBu
dW1TdHJpbmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGludCBjb21waWxlT3B0aW9ucykKK1RJbnRlcm1CbG9jayAqVENvbXBpbGVyOjpjb21waWxlVHJl
ZUltcGwoY29uc3QgY2hhciAqY29uc3Qgc2hhZGVyU3RyaW5nc1tdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtU3RyaW5ncywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hDb21waWxlT3B0aW9ucyBjb21w
aWxlT3B0aW9ucykKIHsKICAgICBjbGVhclJlc3VsdHMoKTsKIApAQCAtMjE3LDggKzI2MCw3IEBA
IFRJbnRlcm1Ob2RlICpUQ29tcGlsZXI6OmNvbXBpbGVUcmVlSW1wbCgKICAgICAgICAgKytmaXJz
dFNvdXJjZTsKICAgICB9CiAKLSAgICBUSW50ZXJtZWRpYXRlIGludGVybWVkaWF0ZShpbmZvU2lu
ayk7Ci0gICAgVFBhcnNlQ29udGV4dCBwYXJzZUNvbnRleHQoc3ltYm9sVGFibGUsIGV4dGVuc2lv
bkJlaGF2aW9yLCBpbnRlcm1lZGlhdGUsIHNoYWRlclR5cGUsIHNoYWRlclNwZWMsCisgICAgVFBh
cnNlQ29udGV4dCBwYXJzZUNvbnRleHQoc3ltYm9sVGFibGUsIGV4dGVuc2lvbkJlaGF2aW9yLCBz
aGFkZXJUeXBlLCBzaGFkZXJTcGVjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bXBpbGVPcHRpb25zLCB0cnVlLCBpbmZvU2luaywgZ2V0UmVzb3VyY2VzKCkpOwogCiAgICAgcGFy
c2VDb250ZXh0LnNldEZyYWdtZW50UHJlY2lzaW9uSGlnaE9uRVNTTDEoZnJhZ21lbnRQcmVjaXNp
b25IaWdoKTsKQEAgLTI0MSwxOCArMjgzLDE3IEBAIFRJbnRlcm1Ob2RlICpUQ29tcGlsZXI6OmNv
bXBpbGVUcmVlSW1wbCgKICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwogICAgIH0KIAotICAgIFRJ
bnRlcm1Ob2RlICpyb290ID0gbnVsbHB0cjsKKyAgICBUSW50ZXJtQmxvY2sgKnJvb3QgPSBudWxs
cHRyOwogCiAgICAgaWYgKHN1Y2Nlc3MpCiAgICAgewogICAgICAgICBtUHJhZ21hID0gcGFyc2VD
b250ZXh0LnByYWdtYSgpOwotICAgICAgICBpZiAobVByYWdtYS5zdGRnbC5pbnZhcmlhbnRBbGwp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN5bWJvbFRhYmxlLnNldEdsb2JhbEludmFyaWFudCgp
OwotICAgICAgICB9CisgICAgICAgIHN5bWJvbFRhYmxlLnNldEdsb2JhbEludmFyaWFudChtUHJh
Z21hLnN0ZGdsLmludmFyaWFudEFsbCk7CisKKyAgICAgICAgbUNvbXB1dGVTaGFkZXJMb2NhbFNp
emVEZWNsYXJlZCA9IHBhcnNlQ29udGV4dC5pc0NvbXB1dGVTaGFkZXJMb2NhbFNpemVEZWNsYXJl
ZCgpOworICAgICAgICBtQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZSAgICAgICAgID0gcGFyc2VDb250
ZXh0LmdldENvbXB1dGVTaGFkZXJMb2NhbFNpemUoKTsKIAogICAgICAgICByb290ID0gcGFyc2VD
b250ZXh0LmdldFRyZWVSb290KCk7Ci0gICAgICAgIHJvb3QgPSBpbnRlcm1lZGlhdGUucG9zdFBy
b2Nlc3Mocm9vdCk7CiAKICAgICAgICAgLy8gSGlnaHAgbWlnaHQgaGF2ZSBiZWVuIGF1dG8tZW5h
YmxlZCBiYXNlZCBvbiBzaGFkZXIgdmVyc2lvbgogICAgICAgICBmcmFnbWVudFByZWNpc2lvbkhp
Z2ggPSBwYXJzZUNvbnRleHQuZ2V0RnJhZ21lbnRQcmVjaXNpb25IaWdoKCk7CkBAIC0yODksMTEg
KzMzMCwxNyBAQCBUSW50ZXJtTm9kZSAqVENvbXBpbGVyOjpjb21waWxlVHJlZUltcGwoCiAgICAg
ICAgIGlmIChzdWNjZXNzICYmIHNob3VsZFJ1bkxvb3BBbmRJbmRleGluZ1ZhbGlkYXRpb24oY29t
cGlsZU9wdGlvbnMpKQogICAgICAgICAgICAgc3VjY2VzcyA9IHZhbGlkYXRlTGltaXRhdGlvbnMo
cm9vdCk7CiAKLSAgICAgICAgaWYgKHN1Y2Nlc3MgJiYgKGNvbXBpbGVPcHRpb25zICYgU0hfVElN
SU5HX1JFU1RSSUNUSU9OUykpCi0gICAgICAgICAgICBzdWNjZXNzID0gZW5mb3JjZVRpbWluZ1Jl
c3RyaWN0aW9ucyhyb290LCAoY29tcGlsZU9wdGlvbnMgJiBTSF9ERVBFTkRFTkNZX0dSQVBIKSAh
PSAwKTsKLQotICAgICAgICBpZiAoc3VjY2VzcyAmJiBzaGFkZXJTcGVjID09IFNIX0NTU19TSEFE
RVJTX1NQRUMpCi0gICAgICAgICAgICByZXdyaXRlQ1NTU2hhZGVyKHJvb3QpOworICAgICAgICAv
LyBGYWlsIGNvbXBpbGF0aW9uIGlmIHByZWNpc2lvbiBlbXVsYXRpb24gbm90IHN1cHBvcnRlZC4K
KyAgICAgICAgaWYgKHN1Y2Nlc3MgJiYgZ2V0UmVzb3VyY2VzKCkuV0VCR0xfZGVidWdfc2hhZGVy
X3ByZWNpc2lvbiAmJgorICAgICAgICAgICAgZ2V0UHJhZ21hKCkuZGVidWdTaGFkZXJQcmVjaXNp
b24pCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghRW11bGF0ZVByZWNpc2lvbjo6U3VwcG9y
dGVkSW5MYW5ndWFnZShvdXRwdXRUeXBlKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBpbmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4RXJyb3IpOworICAgICAgICAgICAgICAgIGlu
Zm9TaW5rLmluZm8gPDwgIlByZWNpc2lvbiBlbXVsYXRpb24gbm90IHN1cHBvcnRlZCBmb3IgdGhp
cyBvdXRwdXQgdHlwZS4iOworICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQogCiAgICAgICAgIC8vIFVucm9sbCBmb3ItbG9vcCBtYXJrdXAg
bmVlZHMgdG8gaGFwcGVuIGFmdGVyIHZhbGlkYXRlTGltaXRhdGlvbnMgcGFzcy4KICAgICAgICAg
aWYgKHN1Y2Nlc3MgJiYgKGNvbXBpbGVPcHRpb25zICYgU0hfVU5ST0xMX0ZPUl9MT09QX1dJVEhf
SU5URUdFUl9JTkRFWCkpCkBAIC0zMTgsNyArMzY1LDEwIEBAIFRJbnRlcm1Ob2RlICpUQ29tcGls
ZXI6OmNvbXBpbGVUcmVlSW1wbCgKICAgICAgICAgLy8gQnVpbHQtaW4gZnVuY3Rpb24gZW11bGF0
aW9uIG5lZWRzIHRvIGhhcHBlbiBhZnRlciB2YWxpZGF0ZUxpbWl0YXRpb25zIHBhc3MuCiAgICAg
ICAgIGlmIChzdWNjZXNzKQogICAgICAgICB7CisgICAgICAgICAgICAvLyBUT0RPKGptYWRpbGwp
OiBSZW1vdmUgZ2xvYmFsIHBvb2wgYWxsb2NhdG9yLgorICAgICAgICAgICAgR2V0R2xvYmFsUG9v
bEFsbG9jYXRvcigpLT5sb2NrKCk7CiAgICAgICAgICAgICBpbml0QnVpbHRJbkZ1bmN0aW9uRW11
bGF0b3IoJmJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLCBjb21waWxlT3B0aW9ucyk7CisgICAgICAg
ICAgICBHZXRHbG9iYWxQb29sQWxsb2NhdG9yKCktPnVubG9jaygpOwogICAgICAgICAgICAgYnVp
bHRJbkZ1bmN0aW9uRW11bGF0b3IuTWFya0J1aWx0SW5GdW5jdGlvbnNGb3JFbXVsYXRpb24ocm9v
dCk7CiAgICAgICAgIH0KIApAQCAtMzM2LDYgKzM4Niw5IEBAIFRJbnRlcm1Ob2RlICpUQ29tcGls
ZXI6OmNvbXBpbGVUcmVlSW1wbCgKICAgICAgICAgaWYgKHN1Y2Nlc3MgJiYgKGNvbXBpbGVPcHRp
b25zICYgU0hfUkVXUklURV9ET19XSElMRV9MT09QUykpCiAgICAgICAgICAgICBSZXdyaXRlRG9X
aGlsZShyb290LCBnZXRUZW1wb3JhcnlJbmRleCgpKTsKIAorICAgICAgICBpZiAoc3VjY2VzcyAm
JiAoY29tcGlsZU9wdGlvbnMgJiBTSF9BRERfQU5EX1RSVUVfVE9fTE9PUF9DT05ESVRJT04pKQor
ICAgICAgICAgICAgc2g6OkFkZEFuZFRydWVUb0xvb3BDb25kaXRpb24ocm9vdCk7CisKICAgICAg
ICAgaWYgKHN1Y2Nlc3MgJiYgKGNvbXBpbGVPcHRpb25zICYgU0hfVU5GT0xEX1NIT1JUX0NJUkNV
SVQpKQogICAgICAgICB7CiAgICAgICAgICAgICBVbmZvbGRTaG9ydENpcmN1aXRBU1QgdW5mb2xk
U2hvcnRDaXJjdWl0OwpAQCAtMzUxLDYgKzQwNCwxMCBAQCBUSW50ZXJtTm9kZSAqVENvbXBpbGVy
Ojpjb21waWxlVHJlZUltcGwoCiAgICAgICAgIGlmIChzdWNjZXNzICYmIHNob3VsZENvbGxlY3RW
YXJpYWJsZXMoY29tcGlsZU9wdGlvbnMpKQogICAgICAgICB7CiAgICAgICAgICAgICBjb2xsZWN0
VmFyaWFibGVzKHJvb3QpOworICAgICAgICAgICAgaWYgKGNvbXBpbGVPcHRpb25zICYgU0hfVVNF
X1VOVVNFRF9TVEFOREFSRF9TSEFSRURfQkxPQ0tTKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHVzZUFsbE1lbWJlcnNJblVudXNlZFN0YW5kYXJkQW5kU2hhcmVkQmxvY2tzKHJvb3Qp
OworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGNvbXBpbGVPcHRpb25zICYgU0hfRU5G
T1JDRV9QQUNLSU5HX1JFU1RSSUNUSU9OUykKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICBzdWNjZXNzID0gZW5mb3JjZVBhY2tpbmdSZXN0cmljdGlvbnMoKTsKQEAgLTM2MCw5ICs0MTcs
MTAgQEAgVEludGVybU5vZGUgKlRDb21waWxlcjo6Y29tcGlsZVRyZWVJbXBsKAogICAgICAgICAg
ICAgICAgICAgICBpbmZvU2luay5pbmZvIDw8ICJ0b28gbWFueSB1bmlmb3JtcyI7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHN1Y2Nlc3MgJiYgc2hh
ZGVyVHlwZSA9PSBHTF9WRVJURVhfU0hBREVSICYmCi0gICAgICAgICAgICAgICAgKGNvbXBpbGVP
cHRpb25zICYgU0hfSU5JVF9WQVJZSU5HU19XSVRIT1VUX1NUQVRJQ19VU0UpKQotICAgICAgICAg
ICAgICAgIGluaXRpYWxpemVWYXJ5aW5nc1dpdGhvdXRTdGF0aWNVc2Uocm9vdCk7CisgICAgICAg
ICAgICBpZiAoc3VjY2VzcyAmJiAoY29tcGlsZU9wdGlvbnMgJiBTSF9JTklUX09VVFBVVF9WQVJJ
QUJMRVMpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGluaXRpYWxpemVPdXRwdXRW
YXJpYWJsZXMocm9vdCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
c3VjY2VzcyAmJiAoY29tcGlsZU9wdGlvbnMgJiBTSF9TQ0FMQVJJWkVfVkVDX0FORF9NQVRfQ09O
U1RSVUNUT1JfQVJHUykpCkBAIC0zNzgsNiArNDM2LDEzIEBAIFRJbnRlcm1Ob2RlICpUQ29tcGls
ZXI6OmNvbXBpbGVUcmVlSW1wbCgKICAgICAgICAgICAgIHJvb3QtPnRyYXZlcnNlKCZnZW4pOwog
ICAgICAgICB9CiAKKyAgICAgICAgaWYgKHN1Y2Nlc3MgJiYgc2hhZGVyVHlwZSA9PSBHTF9GUkFH
TUVOVF9TSEFERVIgJiYgc2hhZGVyVmVyc2lvbiA9PSAxMDAgJiYKKyAgICAgICAgICAgIGNvbXBp
bGVSZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycyAmJiBjb21waWxlUmVzb3VyY2VzLk1heERyYXdC
dWZmZXJzID4gMSAmJgorICAgICAgICAgICAgSXNFeHRlbnNpb25FbmFibGVkKGV4dGVuc2lvbkJl
aGF2aW9yLCAiR0xfRVhUX2RyYXdfYnVmZmVycyIpKQorICAgICAgICB7CisgICAgICAgICAgICBF
bXVsYXRlR0xGcmFnQ29sb3JCcm9hZGNhc3Qocm9vdCwgY29tcGlsZVJlc291cmNlcy5NYXhEcmF3
QnVmZmVycywgJm91dHB1dFZhcmlhYmxlcyk7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoc3Vj
Y2VzcykKICAgICAgICAgewogICAgICAgICAgICAgRGVmZXJHbG9iYWxJbml0aWFsaXplcnMocm9v
dCk7CkBAIC0zOTEsMTQgKzQ1NiwzOSBAQCBUSW50ZXJtTm9kZSAqVENvbXBpbGVyOjpjb21waWxl
VHJlZUltcGwoCiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLWJvb2wgVENvbXBpbGVyOjpjb21waWxl
KGNvbnN0IGNoYXIqIGNvbnN0IHNoYWRlclN0cmluZ3NbXSwKLSAgICBzaXplX3QgbnVtU3RyaW5n
cywgaW50IGNvbXBpbGVPcHRpb25zKQoteworYm9vbCBUQ29tcGlsZXI6OmNvbXBpbGUoY29uc3Qg
Y2hhciAqY29uc3Qgc2hhZGVyU3RyaW5nc1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IG51bVN0cmluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICBTaENvbXBpbGVPcHRpb25z
IGNvbXBpbGVPcHRpb25zSW4pCit7CisjaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfRlVaWkVSX0NP
UlBVU19PVVRQVVQpCisgICAgRHVtcEZ1enplckNhc2Uoc2hhZGVyU3RyaW5ncywgbnVtU3RyaW5n
cywgc2hhZGVyVHlwZSwgc2hhZGVyU3BlYywgb3V0cHV0VHlwZSwgY29tcGlsZU9wdGlvbnNJbik7
CisjZW5kaWYgIC8vIGRlZmluZWQoQU5HTEVfRU5BQkxFX0ZVWlpFUl9DT1JQVVNfT1VUUFVUKQor
CiAgICAgaWYgKG51bVN0cmluZ3MgPT0gMCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICBT
aENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25zID0gY29tcGlsZU9wdGlvbnNJbjsKKworICAg
IC8vIEFwcGx5IGtleSB3b3JrYXJvdW5kcy4KKyAgICBpZiAoc2hvdWxkRmxhdHRlblByYWdtYVN0
ZGdsSW52YXJpYW50QWxsKCkpCisgICAgeworICAgICAgICAvLyBUaGlzIHNob3VsZCBiZSBoYXJt
bGVzcyB0byBkbyBpbiBhbGwgY2FzZXMsIGJ1dCBmb3IgdGhlIG1vbWVudCwgZG8gaXQgb25seSBj
b25kaXRpb25hbGx5LgorICAgICAgICBjb21waWxlT3B0aW9ucyB8PSBTSF9GTEFUVEVOX1BSQUdN
QV9TVERHTF9JTlZBUklBTlRfQUxMOworICAgIH0KKworICAgIFNoQ29tcGlsZU9wdGlvbnMgdW5y
b2xsRmxhZ3MgPQorICAgICAgICBTSF9VTlJPTExfRk9SX0xPT1BfV0lUSF9JTlRFR0VSX0lOREVY
IHwgU0hfVU5ST0xMX0ZPUl9MT09QX1dJVEhfU0FNUExFUl9BUlJBWV9JTkRFWDsKKyAgICBpZiAo
KGNvbXBpbGVPcHRpb25zICYgU0hfQUREX0FORF9UUlVFX1RPX0xPT1BfQ09ORElUSU9OKSAhPSAw
ICYmCisgICAgICAgIChjb21waWxlT3B0aW9ucyAmIHVucm9sbEZsYWdzKSAhPSAwKQorICAgIHsK
KyAgICAgICAgaW5mb1NpbmsuaW5mby5wcmVmaXgoRVByZWZpeEVycm9yKTsKKyAgICAgICAgaW5m
b1NpbmsuaW5mbworICAgICAgICAgICAgPDwgIlVuc3VwcG9ydGVkIGNvbXBpbGUgZmxhZyBjb21i
aW5hdGlvbjogdW5yb2xsICYgQUREX1RSVUVfVE9fTE9PUF9DT05ESVRJT04iOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgVFNjb3BlZFBvb2xBbGxvY2F0b3Igc2NvcGVkQWxs
b2MoJmFsbG9jYXRvcik7Ci0gICAgVEludGVybU5vZGUgKnJvb3QgPSBjb21waWxlVHJlZUltcGwo
c2hhZGVyU3RyaW5ncywgbnVtU3RyaW5ncywgY29tcGlsZU9wdGlvbnMpOworICAgIFRJbnRlcm1C
bG9jayAqcm9vdCA9IGNvbXBpbGVUcmVlSW1wbChzaGFkZXJTdHJpbmdzLCBudW1TdHJpbmdzLCBj
b21waWxlT3B0aW9ucyk7CiAKICAgICBpZiAocm9vdCkKICAgICB7CkBAIC00MjQsMTcgKzUxNCwx
NiBAQCBib29sIFRDb21waWxlcjo6SW5pdEJ1aWx0SW5TeW1ib2xUYWJsZShjCiAgICAgc3ltYm9s
VGFibGUucHVzaCgpOyAgIC8vIENPTU1PTl9CVUlMVElOUwogICAgIHN5bWJvbFRhYmxlLnB1c2go
KTsgICAvLyBFU1NMMV9CVUlMVElOUwogICAgIHN5bWJvbFRhYmxlLnB1c2goKTsgICAvLyBFU1NM
M19CVUlMVElOUworICAgIHN5bWJvbFRhYmxlLnB1c2goKTsgICAvLyBFU1NMM18xX0JVSUxUSU5T
CiAKICAgICBUUHVibGljVHlwZSBpbnRlZ2VyOwotICAgIGludGVnZXIudHlwZSA9IEVidEludDsK
LSAgICBpbnRlZ2VyLnByaW1hcnlTaXplID0gMTsKLSAgICBpbnRlZ2VyLnNlY29uZGFyeVNpemUg
PSAxOworICAgIGludGVnZXIuc2V0QmFzaWNUeXBlKEVidEludCk7CisgICAgaW50ZWdlci5pbml0
aWFsaXplU2l6ZUZvclNjYWxhclR5cGVzKCk7CiAgICAgaW50ZWdlci5hcnJheSA9IGZhbHNlOwog
CiAgICAgVFB1YmxpY1R5cGUgZmxvYXRpbmdQb2ludDsKLSAgICBmbG9hdGluZ1BvaW50LnR5cGUg
PSBFYnRGbG9hdDsKLSAgICBmbG9hdGluZ1BvaW50LnByaW1hcnlTaXplID0gMTsKLSAgICBmbG9h
dGluZ1BvaW50LnNlY29uZGFyeVNpemUgPSAxOworICAgIGZsb2F0aW5nUG9pbnQuc2V0QmFzaWNU
eXBlKEVidEZsb2F0KTsKKyAgICBmbG9hdGluZ1BvaW50LmluaXRpYWxpemVTaXplRm9yU2NhbGFy
VHlwZXMoKTsKICAgICBmbG9hdGluZ1BvaW50LmFycmF5ID0gZmFsc2U7CiAKICAgICBzd2l0Y2go
c2hhZGVyVHlwZSkKQEAgLTQ0Niw2ICs1MzUsMTAgQEAgYm9vbCBUQ29tcGlsZXI6OkluaXRCdWls
dEluU3ltYm9sVGFibGUoYwogICAgICAgICBzeW1ib2xUYWJsZS5zZXREZWZhdWx0UHJlY2lzaW9u
KGludGVnZXIsIEVicEhpZ2gpOwogICAgICAgICBzeW1ib2xUYWJsZS5zZXREZWZhdWx0UHJlY2lz
aW9uKGZsb2F0aW5nUG9pbnQsIEVicEhpZ2gpOwogICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
R0xfQ09NUFVURV9TSEFERVI6CisgICAgICAgICAgc3ltYm9sVGFibGUuc2V0RGVmYXVsdFByZWNp
c2lvbihpbnRlZ2VyLCBFYnBIaWdoKTsKKyAgICAgICAgICBzeW1ib2xUYWJsZS5zZXREZWZhdWx0
UHJlY2lzaW9uKGZsb2F0aW5nUG9pbnQsIEVicEhpZ2gpOworICAgICAgICAgIGJyZWFrOwogICAg
ICAgZGVmYXVsdDoKICAgICAgICAgYXNzZXJ0KGZhbHNlICYmICJMYW5ndWFnZSBub3Qgc3VwcG9y
dGVkIik7CiAgICAgfQpAQCAtNDcwLDE2ICs1NjMsMTcgQEAgdm9pZCBUQ29tcGlsZXI6OmluaXRT
YW1wbGVyRGVmYXVsdFByZWNpcwogewogICAgIEFTU0VSVChzYW1wbGVyVHlwZSA+IEVidEd1YXJk
U2FtcGxlckJlZ2luICYmIHNhbXBsZXJUeXBlIDwgRWJ0R3VhcmRTYW1wbGVyRW5kKTsKICAgICBU
UHVibGljVHlwZSBzYW1wbGVyOwotICAgIHNhbXBsZXIucHJpbWFyeVNpemUgICA9IDE7Ci0gICAg
c2FtcGxlci5zZWNvbmRhcnlTaXplID0gMTsKKyAgICBzYW1wbGVyLmluaXRpYWxpemVTaXplRm9y
U2NhbGFyVHlwZXMoKTsKKyAgICBzYW1wbGVyLnNldEJhc2ljVHlwZShzYW1wbGVyVHlwZSk7CiAg
ICAgc2FtcGxlci5hcnJheSAgICAgICAgID0gZmFsc2U7Ci0gICAgc2FtcGxlci50eXBlICAgICAg
ICAgID0gc2FtcGxlclR5cGU7CiAgICAgc3ltYm9sVGFibGUuc2V0RGVmYXVsdFByZWNpc2lvbihz
YW1wbGVyLCBFYnBMb3cpOwogfQogCiB2b2lkIFRDb21waWxlcjo6c2V0UmVzb3VyY2VTdHJpbmco
KQogewogICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBzdHJzdHJlYW07CisKKyAgICAvLyBjbGFuZy1m
b3JtYXQgb2ZmCiAgICAgc3Ryc3RyZWFtIDw8ICI6TWF4VmVydGV4QXR0cmliczoiIDw8IGNvbXBp
bGVSZXNvdXJjZXMuTWF4VmVydGV4QXR0cmlicwogICAgICAgICAgICAgICA8PCAiOk1heFZlcnRl
eFVuaWZvcm1WZWN0b3JzOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhWZXJ0ZXhVbmlmb3JtVmVj
dG9ycwogICAgICAgICAgICAgICA8PCAiOk1heFZhcnlpbmdWZWN0b3JzOiIgPDwgY29tcGlsZVJl
c291cmNlcy5NYXhWYXJ5aW5nVmVjdG9ycwpAQCAtNDkwLDYgKzU4NCw4IEBAIHZvaWQgVENvbXBp
bGVyOjpzZXRSZXNvdXJjZVN0cmluZygpCiAgICAgICAgICAgICAgIDw8ICI6TWF4RHJhd0J1ZmZl
cnM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heERyYXdCdWZmZXJzCiAgICAgICAgICAgICAgIDw8
ICI6T0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzOiIgPDwgY29tcGlsZVJlc291cmNlcy5PRVNfc3Rh
bmRhcmRfZGVyaXZhdGl2ZXMKICAgICAgICAgICAgICAgPDwgIjpPRVNfRUdMX2ltYWdlX2V4dGVy
bmFsOiIgPDwgY29tcGlsZVJlc291cmNlcy5PRVNfRUdMX2ltYWdlX2V4dGVybmFsCisgICAgICAg
ICAgICAgIDw8ICI6T0VTX0VHTF9pbWFnZV9leHRlcm5hbF9lc3NsMzoiIDw8IGNvbXBpbGVSZXNv
dXJjZXMuT0VTX0VHTF9pbWFnZV9leHRlcm5hbF9lc3NsMworICAgICAgICAgICAgICA8PCAiOk5W
X0VHTF9zdHJlYW1fY29uc3VtZXJfZXh0ZXJuYWw6IiA8PCBjb21waWxlUmVzb3VyY2VzLk5WX0VH
TF9zdHJlYW1fY29uc3VtZXJfZXh0ZXJuYWwKICAgICAgICAgICAgICAgPDwgIjpBUkJfdGV4dHVy
ZV9yZWN0YW5nbGU6IiA8PCBjb21waWxlUmVzb3VyY2VzLkFSQl90ZXh0dXJlX3JlY3RhbmdsZQog
ICAgICAgICAgICAgICA8PCAiOkVYVF9kcmF3X2J1ZmZlcnM6IiA8PCBjb21waWxlUmVzb3VyY2Vz
LkVYVF9kcmF3X2J1ZmZlcnMKICAgICAgICAgICAgICAgPDwgIjpGcmFnbWVudFByZWNpc2lvbkhp
Z2g6IiA8PCBjb21waWxlUmVzb3VyY2VzLkZyYWdtZW50UHJlY2lzaW9uSGlnaApAQCAtNTA4LDcg
KzYwNCwzMiBAQCB2b2lkIFRDb21waWxlcjo6c2V0UmVzb3VyY2VTdHJpbmcoKQogICAgICAgICAg
ICAgICA8PCAiOk1heFByb2dyYW1UZXhlbE9mZnNldDoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4
UHJvZ3JhbVRleGVsT2Zmc2V0CiAgICAgICAgICAgICAgIDw8ICI6TWF4RHVhbFNvdXJjZURyYXdC
dWZmZXJzOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhEdWFsU291cmNlRHJhd0J1ZmZlcnMKICAg
ICAgICAgICAgICAgPDwgIjpOVl9kcmF3X2J1ZmZlcnM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk5W
X2RyYXdfYnVmZmVycwotICAgICAgICAgICAgICA8PCAiOldFQkdMX2RlYnVnX3NoYWRlcl9wcmVj
aXNpb246IiA8PCBjb21waWxlUmVzb3VyY2VzLldFQkdMX2RlYnVnX3NoYWRlcl9wcmVjaXNpb247
CisgICAgICAgICAgICAgIDw8ICI6V0VCR0xfZGVidWdfc2hhZGVyX3ByZWNpc2lvbjoiIDw8IGNv
bXBpbGVSZXNvdXJjZXMuV0VCR0xfZGVidWdfc2hhZGVyX3ByZWNpc2lvbgorICAgICAgICAgICAg
ICA8PCAiOk1heEltYWdlVW5pdHM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heEltYWdlVW5pdHMK
KyAgICAgICAgICAgICAgPDwgIjpNYXhWZXJ0ZXhJbWFnZVVuaWZvcm1zOiIgPDwgY29tcGlsZVJl
c291cmNlcy5NYXhWZXJ0ZXhJbWFnZVVuaWZvcm1zCisgICAgICAgICAgICAgIDw8ICI6TWF4RnJh
Z21lbnRJbWFnZVVuaWZvcm1zOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhGcmFnbWVudEltYWdl
VW5pZm9ybXMKKyAgICAgICAgICAgICAgPDwgIjpNYXhDb21wdXRlSW1hZ2VVbmlmb3JtczoiIDw8
IGNvbXBpbGVSZXNvdXJjZXMuTWF4Q29tcHV0ZUltYWdlVW5pZm9ybXMKKyAgICAgICAgICAgICAg
PDwgIjpNYXhDb21iaW5lZEltYWdlVW5pZm9ybXM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heENv
bWJpbmVkSW1hZ2VVbmlmb3JtcworICAgICAgICAgICAgICA8PCAiOk1heENvbWJpbmVkU2hhZGVy
T3V0cHV0UmVzb3VyY2VzOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhDb21iaW5lZFNoYWRlck91
dHB1dFJlc291cmNlcworICAgICAgICAgICAgICA8PCAiOk1heENvbXB1dGVXb3JrR3JvdXBDb3Vu
dFg6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heENvbXB1dGVXb3JrR3JvdXBDb3VudFswXQorICAg
ICAgICAgICAgICA8PCAiOk1heENvbXB1dGVXb3JrR3JvdXBDb3VudFk6IiA8PCBjb21waWxlUmVz
b3VyY2VzLk1heENvbXB1dGVXb3JrR3JvdXBDb3VudFsxXQorICAgICAgICAgICAgICA8PCAiOk1h
eENvbXB1dGVXb3JrR3JvdXBDb3VudFo6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heENvbXB1dGVX
b3JrR3JvdXBDb3VudFsyXQorICAgICAgICAgICAgICA8PCAiOk1heENvbXB1dGVXb3JrR3JvdXBT
aXplWDoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4Q29tcHV0ZVdvcmtHcm91cFNpemVbMF0KKyAg
ICAgICAgICAgICAgPDwgIjpNYXhDb21wdXRlV29ya0dyb3VwU2l6ZVk6IiA8PCBjb21waWxlUmVz
b3VyY2VzLk1heENvbXB1dGVXb3JrR3JvdXBTaXplWzFdCisgICAgICAgICAgICAgIDw8ICI6TWF4
Q29tcHV0ZVdvcmtHcm91cFNpemVaOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhDb21wdXRlV29y
a0dyb3VwU2l6ZVsyXQorICAgICAgICAgICAgICA8PCAiOk1heENvbXB1dGVVbmlmb3JtQ29tcG9u
ZW50czoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4Q29tcHV0ZVVuaWZvcm1Db21wb25lbnRzCisg
ICAgICAgICAgICAgIDw8ICI6TWF4Q29tcHV0ZVRleHR1cmVJbWFnZVVuaXRzOiIgPDwgY29tcGls
ZVJlc291cmNlcy5NYXhDb21wdXRlVGV4dHVyZUltYWdlVW5pdHMKKyAgICAgICAgICAgICAgPDwg
IjpNYXhDb21wdXRlQXRvbWljQ291bnRlcnM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heENvbXB1
dGVBdG9taWNDb3VudGVycworICAgICAgICAgICAgICA8PCAiOk1heENvbXB1dGVBdG9taWNDb3Vu
dGVyQnVmZmVyczoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4Q29tcHV0ZUF0b21pY0NvdW50ZXJC
dWZmZXJzCisgICAgICAgICAgICAgIDw8ICI6TWF4VmVydGV4QXRvbWljQ291bnRlcnM6IiA8PCBj
b21waWxlUmVzb3VyY2VzLk1heFZlcnRleEF0b21pY0NvdW50ZXJzCisgICAgICAgICAgICAgIDw8
ICI6TWF4RnJhZ21lbnRBdG9taWNDb3VudGVyczoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4RnJh
Z21lbnRBdG9taWNDb3VudGVycworICAgICAgICAgICAgICA8PCAiOk1heENvbWJpbmVkQXRvbWlj
Q291bnRlcnM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heENvbWJpbmVkQXRvbWljQ291bnRlcnMK
KyAgICAgICAgICAgICAgPDwgIjpNYXhBdG9taWNDb3VudGVyQmluZGluZ3M6IiA8PCBjb21waWxl
UmVzb3VyY2VzLk1heEF0b21pY0NvdW50ZXJCaW5kaW5ncworICAgICAgICAgICAgICA8PCAiOk1h
eFZlcnRleEF0b21pY0NvdW50ZXJCdWZmZXJzOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhWZXJ0
ZXhBdG9taWNDb3VudGVyQnVmZmVycworICAgICAgICAgICAgICA8PCAiOk1heEZyYWdtZW50QXRv
bWljQ291bnRlckJ1ZmZlcnM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heEZyYWdtZW50QXRvbWlj
Q291bnRlckJ1ZmZlcnMKKyAgICAgICAgICAgICAgPDwgIjpNYXhDb21iaW5lZEF0b21pY0NvdW50
ZXJCdWZmZXJzOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhDb21iaW5lZEF0b21pY0NvdW50ZXJC
dWZmZXJzCisgICAgICAgICAgICAgIDw8ICI6TWF4QXRvbWljQ291bnRlckJ1ZmZlclNpemU6IiA8
PCBjb21waWxlUmVzb3VyY2VzLk1heEF0b21pY0NvdW50ZXJCdWZmZXJTaXplOworICAgIC8vIGNs
YW5nLWZvcm1hdCBvbgogCiAgICAgYnVpbHRJblJlc291cmNlc1N0cmluZyA9IHN0cnN0cmVhbS5z
dHIoKTsKIH0KQEAgLTUyNiw2ICs2NDcsNyBAQCB2b2lkIFRDb21waWxlcjo6Y2xlYXJSZXN1bHRz
KCkKICAgICBleHBhbmRlZFVuaWZvcm1zLmNsZWFyKCk7CiAgICAgdmFyeWluZ3MuY2xlYXIoKTsK
ICAgICBpbnRlcmZhY2VCbG9ja3MuY2xlYXIoKTsKKyAgICB2YXJpYWJsZXNDb2xsZWN0ZWQgPSBm
YWxzZTsKIAogICAgIGJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLkNsZWFudXAoKTsKIApAQCAtNjUy
LDIyICs3NzQsMzEgQEAgY2xhc3MgVENvbXBpbGVyOjpVbnVzZWRQcmVkaWNhdGUKICAgICBib29s
IG9wZXJhdG9yICgpKFRJbnRlcm1Ob2RlICpub2RlKQogICAgIHsKICAgICAgICAgY29uc3QgVElu
dGVybUFnZ3JlZ2F0ZSAqYXNBZ2dyZWdhdGUgPSBub2RlLT5nZXRBc0FnZ3JlZ2F0ZSgpOworICAg
ICAgICBjb25zdCBUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICphc0Z1bmN0aW9uID0gbm9kZS0+
Z2V0QXNGdW5jdGlvbkRlZmluaXRpb24oKTsKKworICAgICAgICBjb25zdCBURnVuY3Rpb25TeW1i
b2xJbmZvICpmdW5jdGlvbkluZm8gPSBudWxscHRyOwogCi0gICAgICAgIGlmIChhc0FnZ3JlZ2F0
ZSA9PSBudWxscHRyKQorICAgICAgICBpZiAoYXNGdW5jdGlvbikKICAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZnVuY3Rpb25JbmZvID0gYXNGdW5jdGlv
bi0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCk7CiAgICAgICAgIH0KLQotICAgICAgICBpZiAoIShh
c0FnZ3JlZ2F0ZS0+Z2V0T3AoKSA9PSBFT3BGdW5jdGlvbiB8fCBhc0FnZ3JlZ2F0ZS0+Z2V0T3Ao
KSA9PSBFT3BQcm90b3R5cGUpKQorICAgICAgICBlbHNlIGlmIChhc0FnZ3JlZ2F0ZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKGFzQWdncmVnYXRlLT5nZXRPcCgpID09IEVPcFByb3RvdHlw
ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbkluZm8gPSBhc0FnZ3Jl
Z2F0ZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGZ1bmN0aW9uSW5mbyA9PSBudWxscHRyKQogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBzaXplX3QgY2FsbERhZ0lu
ZGV4ID0gbUNhbGxEYWctPmZpbmRJbmRleChhc0FnZ3JlZ2F0ZSk7CisgICAgICAgIHNpemVfdCBj
YWxsRGFnSW5kZXggPSBtQ2FsbERhZy0+ZmluZEluZGV4KGZ1bmN0aW9uSW5mbyk7CiAgICAgICAg
IGlmIChjYWxsRGFnSW5kZXggPT0gQ2FsbERBRzo6SW52YWxpZEluZGV4KQogICAgICAgICB7CiAg
ICAgICAgICAgICAvLyBUaGlzIGhhcHBlbnMgb25seSBmb3IgdW5pbXBsZW1lbnRlZCBwcm90b3R5
cGVzIHdoaWNoIGFyZSB0aHVzIHVudXNlZAotICAgICAgICAgICAgQVNTRVJUKGFzQWdncmVnYXRl
LT5nZXRPcCgpID09IEVPcFByb3RvdHlwZSk7CisgICAgICAgICAgICBBU1NFUlQoYXNBZ2dyZWdh
dGUgJiYgYXNBZ2dyZWdhdGUtPmdldE9wKCkgPT0gRU9wUHJvdG90eXBlKTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CiAKQEAgLTY4MCwxMyArODExLDEwIEBAIGNsYXNzIFRD
b21waWxlcjo6VW51c2VkUHJlZGljYXRlCiAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8RnVuY3Rpb25N
ZXRhZGF0YT4gKm1NZXRhZGF0YXM7CiB9OwogCi1ib29sIFRDb21waWxlcjo6cHJ1bmVVbnVzZWRG
dW5jdGlvbnMoVEludGVybU5vZGUgKnJvb3QpCitib29sIFRDb21waWxlcjo6cHJ1bmVVbnVzZWRG
dW5jdGlvbnMoVEludGVybUJsb2NrICpyb290KQogewotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnJv
b3ROb2RlID0gcm9vdC0+Z2V0QXNBZ2dyZWdhdGUoKTsKLSAgICBBU1NFUlQocm9vdE5vZGUgIT0g
bnVsbHB0cik7Ci0KICAgICBVbnVzZWRQcmVkaWNhdGUgaXNVbnVzZWQoJm1DYWxsRGFnLCAmZnVu
Y3Rpb25NZXRhZGF0YSk7Ci0gICAgVEludGVybVNlcXVlbmNlICpzZXF1ZW5jZSA9IHJvb3ROb2Rl
LT5nZXRTZXF1ZW5jZSgpOworICAgIFRJbnRlcm1TZXF1ZW5jZSAqc2VxdWVuY2UgPSByb290LT5n
ZXRTZXF1ZW5jZSgpOwogCiAgICAgaWYgKCFzZXF1ZW5jZS0+ZW1wdHkoKSkKICAgICB7CkBAIC03
MDMsMTIgKzgzMSw2IEBAIGJvb2wgVENvbXBpbGVyOjp2YWxpZGF0ZU91dHB1dHMoVEludGVybU4K
ICAgICByZXR1cm4gKHZhbGlkYXRlT3V0cHV0cy52YWxpZGF0ZUFuZENvdW50RXJyb3JzKGluZm9T
aW5rLmluZm8pID09IDApOwogfQogCi12b2lkIFRDb21waWxlcjo6cmV3cml0ZUNTU1NoYWRlcihU
SW50ZXJtTm9kZSogcm9vdCkKLXsKLSAgICBSZW5hbWVGdW5jdGlvbiByZW5hbWVyKCJtYWluKCIs
ICJjc3NfbWFpbigiKTsKLSAgICByb290LT50cmF2ZXJzZSgmcmVuYW1lcik7Ci19Ci0KIGJvb2wg
VENvbXBpbGVyOjp2YWxpZGF0ZUxpbWl0YXRpb25zKFRJbnRlcm1Ob2RlKiByb290KQogewogICAg
IFZhbGlkYXRlTGltaXRhdGlvbnMgdmFsaWRhdGUoc2hhZGVyVHlwZSwgJmluZm9TaW5rLmluZm8p
OwpAQCAtNzE2LDM2ICs4MzgsNiBAQCBib29sIFRDb21waWxlcjo6dmFsaWRhdGVMaW1pdGF0aW9u
cyhUSW50CiAgICAgcmV0dXJuIHZhbGlkYXRlLm51bUVycm9ycygpID09IDA7CiB9CiAKLWJvb2wg
VENvbXBpbGVyOjplbmZvcmNlVGltaW5nUmVzdHJpY3Rpb25zKFRJbnRlcm1Ob2RlKiByb290LCBi
b29sIG91dHB1dEdyYXBoKQotewotICAgIGlmIChzaGFkZXJTcGVjICE9IFNIX1dFQkdMX1NQRUMp
Ci0gICAgewotICAgICAgICBpbmZvU2luay5pbmZvIDw8ICJUaW1pbmcgcmVzdHJpY3Rpb25zIG11
c3QgYmUgZW5mb3JjZWQgdW5kZXIgdGhlIFdlYkdMIHNwZWMuIjsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLQotICAgIGlmIChzaGFkZXJUeXBlID09IEdMX0ZSQUdNRU5UX1NIQURFUikK
LSAgICB7Ci0gICAgICAgIFREZXBlbmRlbmN5R3JhcGggZ3JhcGgocm9vdCk7Ci0KLSAgICAgICAg
Ly8gT3V0cHV0IGFueSBlcnJvcnMgZmlyc3QuCi0gICAgICAgIGJvb2wgc3VjY2VzcyA9IGVuZm9y
Y2VGcmFnbWVudFNoYWRlclRpbWluZ1Jlc3RyaWN0aW9ucyhncmFwaCk7Ci0KLSAgICAgICAgLy8g
VGhlbiwgb3V0cHV0IHRoZSBkZXBlbmRlbmN5IGdyYXBoLgotICAgICAgICBpZiAob3V0cHV0R3Jh
cGgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFREZXBlbmRlbmN5R3JhcGhPdXRwdXQgb3V0cHV0
KGluZm9TaW5rLmluZm8pOwotICAgICAgICAgICAgb3V0cHV0Lm91dHB1dEFsbFNwYW5uaW5nVHJl
ZXMoZ3JhcGgpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7Ci0gICAgfQot
ICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVybiBlbmZvcmNlVmVydGV4U2hhZGVyVGltaW5n
UmVzdHJpY3Rpb25zKHJvb3QpOwotICAgIH0KLX0KLQogYm9vbCBUQ29tcGlsZXI6OmxpbWl0RXhw
cmVzc2lvbkNvbXBsZXhpdHkoVEludGVybU5vZGUqIHJvb3QpCiB7CiAgICAgVE1heERlcHRoVHJh
dmVyc2VyIHRyYXZlcnNlcihtYXhFeHByZXNzaW9uQ29tcGxleGl0eSsxKTsKQEAgLTc2NiwzMyAr
ODU4LDE4IEBAIGJvb2wgVENvbXBpbGVyOjpsaW1pdEV4cHJlc3Npb25Db21wbGV4aXQKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBUQ29tcGlsZXI6OmVuZm9yY2VGcmFnbWVudFNoYWRlclRp
bWluZ1Jlc3RyaWN0aW9ucyhjb25zdCBURGVwZW5kZW5jeUdyYXBoJiBncmFwaCkKLXsKLSAgICBS
ZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nIHJlc3RyaWN0b3IoaW5mb1NpbmsuaW5mbyk7Ci0g
ICAgcmVzdHJpY3Rvci5lbmZvcmNlUmVzdHJpY3Rpb25zKGdyYXBoKTsKLSAgICByZXR1cm4gcmVz
dHJpY3Rvci5udW1FcnJvcnMoKSA9PSAwOwotfQotCi1ib29sIFRDb21waWxlcjo6ZW5mb3JjZVZl
cnRleFNoYWRlclRpbWluZ1Jlc3RyaWN0aW9ucyhUSW50ZXJtTm9kZSogcm9vdCkKLXsKLSAgICBS
ZXN0cmljdFZlcnRleFNoYWRlclRpbWluZyByZXN0cmljdG9yKGluZm9TaW5rLmluZm8pOwotICAg
IHJlc3RyaWN0b3IuZW5mb3JjZVJlc3RyaWN0aW9ucyhyb290KTsKLSAgICByZXR1cm4gcmVzdHJp
Y3Rvci5udW1FcnJvcnMoKSA9PSAwOwotfQotCiB2b2lkIFRDb21waWxlcjo6Y29sbGVjdFZhcmlh
YmxlcyhUSW50ZXJtTm9kZSogcm9vdCkKIHsKLSAgICBzaDo6Q29sbGVjdFZhcmlhYmxlcyBjb2xs
ZWN0KCZhdHRyaWJ1dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dHB1
dFZhcmlhYmxlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1bmlmb3JtcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2YXJ5aW5ncywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZpbnRlcmZhY2VCbG9ja3MsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBoYXNoRnVuY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzeW1ib2xUYWJsZSk7Ci0gICAgcm9vdC0+dHJhdmVyc2UoJmNvbGxlY3QpOwotCi0g
ICAgLy8gVGhpcyBpcyBmb3IgZW5mb3JjZVBhY2tpbmdSZXN0cmljdGlvbigpLgotICAgIHNoOjpF
eHBhbmRVbmlmb3Jtcyh1bmlmb3JtcywgJmV4cGFuZGVkVW5pZm9ybXMpOworICAgIGlmICghdmFy
aWFibGVzQ29sbGVjdGVkKQorICAgIHsKKyAgICAgICAgc2g6OkNvbGxlY3RWYXJpYWJsZXMgY29s
bGVjdCgmYXR0cmlidXRlcywgJm91dHB1dFZhcmlhYmxlcywgJnVuaWZvcm1zLCAmdmFyeWluZ3Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmludGVyZmFjZUJsb2Nrcywg
aGFzaEZ1bmN0aW9uLCBzeW1ib2xUYWJsZSwgZXh0ZW5zaW9uQmVoYXZpb3IpOworICAgICAgICBy
b290LT50cmF2ZXJzZSgmY29sbGVjdCk7CisKKyAgICAgICAgLy8gVGhpcyBpcyBmb3IgZW5mb3Jj
ZVBhY2tpbmdSZXN0cmljdGlvbigpLgorICAgICAgICBzaDo6RXhwYW5kVW5pZm9ybXModW5pZm9y
bXMsICZleHBhbmRlZFVuaWZvcm1zKTsKKyAgICAgICAgdmFyaWFibGVzQ29sbGVjdGVkID0gdHJ1
ZTsKKyAgICB9CiB9CiAKIGJvb2wgVENvbXBpbGVyOjplbmZvcmNlUGFja2luZ1Jlc3RyaWN0aW9u
cygpCkBAIC04MDMsMzcgKzg4MCw0OCBAQCBib29sIFRDb21waWxlcjo6ZW5mb3JjZVBhY2tpbmdS
ZXN0cmljdGlvCiAKIHZvaWQgVENvbXBpbGVyOjppbml0aWFsaXplR0xQb3NpdGlvbihUSW50ZXJt
Tm9kZSogcm9vdCkKIHsKLSAgICBJbml0aWFsaXplVmFyaWFibGVzOjpJbml0VmFyaWFibGVJbmZv
TGlzdCB2YXJpYWJsZXM7Ci0gICAgSW5pdGlhbGl6ZVZhcmlhYmxlczo6SW5pdFZhcmlhYmxlSW5m
byB2YXIoCi0gICAgICAgICJnbF9Qb3NpdGlvbiIsIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cVBvc2l0aW9uLCA0KSk7Ci0gICAgdmFyaWFibGVzLnB1c2hfYmFjayh2YXIpOwotICAg
IEluaXRpYWxpemVWYXJpYWJsZXMgaW5pdGlhbGl6ZXIodmFyaWFibGVzKTsKLSAgICByb290LT50
cmF2ZXJzZSgmaW5pdGlhbGl6ZXIpOworICAgIEluaXRWYXJpYWJsZUxpc3QgbGlzdDsKKyAgICBz
aDo6U2hhZGVyVmFyaWFibGUgdmFyKEdMX0ZMT0FUX1ZFQzQsIDApOworICAgIHZhci5uYW1lID0g
ImdsX1Bvc2l0aW9uIjsKKyAgICBsaXN0LnB1c2hfYmFjayh2YXIpOworICAgIEluaXRpYWxpemVW
YXJpYWJsZXMocm9vdCwgbGlzdCk7CiB9CiAKLXZvaWQgVENvbXBpbGVyOjppbml0aWFsaXplVmFy
eWluZ3NXaXRob3V0U3RhdGljVXNlKFRJbnRlcm1Ob2RlKiByb290KQordm9pZCBUQ29tcGlsZXI6
OnVzZUFsbE1lbWJlcnNJblVudXNlZFN0YW5kYXJkQW5kU2hhcmVkQmxvY2tzKFRJbnRlcm1Ob2Rl
ICpyb290KQogewotICAgIEluaXRpYWxpemVWYXJpYWJsZXM6OkluaXRWYXJpYWJsZUluZm9MaXN0
IHZhcmlhYmxlczsKLSAgICBmb3IgKHNpemVfdCBpaSA9IDA7IGlpIDwgdmFyeWluZ3Muc2l6ZSgp
OyArK2lpKQorICAgIHNoOjpJbnRlcmZhY2VCbG9ja0xpc3QgbGlzdDsKKworICAgIGZvciAoYXV0
byBibG9jayA6IGludGVyZmFjZUJsb2NrcykKICAgICB7Ci0gICAgICAgIGNvbnN0IHNoOjpWYXJ5
aW5nJiB2YXJ5aW5nID0gdmFyeWluZ3NbaWldOwotICAgICAgICBpZiAodmFyeWluZy5zdGF0aWNV
c2UpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgdW5zaWduZWQgY2hhciBwcmltYXJ5
U2l6ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGdsOjpWYXJpYWJsZUNvbHVtbkNvdW50
KHZhcnlpbmcudHlwZSkpOwotICAgICAgICB1bnNpZ25lZCBjaGFyIHNlY29uZGFyeVNpemUgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihnbDo6VmFyaWFibGVSb3dDb3VudCh2YXJ5aW5nLnR5
cGUpKTsKLSAgICAgICAgVFR5cGUgdHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFWYXJ5
aW5nT3V0LCBwcmltYXJ5U2l6ZSwgc2Vjb25kYXJ5U2l6ZSwgdmFyeWluZy5pc0FycmF5KCkpOwot
ICAgICAgICBUU3RyaW5nIG5hbWUgPSB2YXJ5aW5nLm5hbWUuY19zdHIoKTsKLSAgICAgICAgaWYg
KHZhcnlpbmcuaXNBcnJheSgpKQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlLnNldEFycmF5
U2l6ZSh2YXJ5aW5nLmFycmF5U2l6ZSk7Ci0gICAgICAgICAgICBuYW1lID0gbmFtZS5zdWJzdHIo
MCwgbmFtZS5maW5kX2ZpcnN0X29mKCdbJykpOworICAgICAgICBpZiAoIWJsb2NrLnN0YXRpY1Vz
ZSAmJgorICAgICAgICAgICAgKGJsb2NrLmxheW91dCA9PSBzaDo6QkxPQ0tMQVlPVVRfU1RBTkRB
UkQgfHwgYmxvY2subGF5b3V0ID09IHNoOjpCTE9DS0xBWU9VVF9TSEFSRUQpKQorICAgICAgICB7
CisgICAgICAgICAgICBsaXN0LnB1c2hfYmFjayhibG9jayk7CiAgICAgICAgIH0KKyAgICB9CiAK
LSAgICAgICAgSW5pdGlhbGl6ZVZhcmlhYmxlczo6SW5pdFZhcmlhYmxlSW5mbyB2YXIobmFtZSwg
dHlwZSk7Ci0gICAgICAgIHZhcmlhYmxlcy5wdXNoX2JhY2sodmFyKTsKKyAgICBzaDo6VXNlSW50
ZXJmYWNlQmxvY2tGaWVsZHMocm9vdCwgbGlzdCk7Cit9CisKK3ZvaWQgVENvbXBpbGVyOjppbml0
aWFsaXplT3V0cHV0VmFyaWFibGVzKFRJbnRlcm1Ob2RlICpyb290KQoreworICAgIEluaXRWYXJp
YWJsZUxpc3QgbGlzdDsKKyAgICBpZiAoc2hhZGVyVHlwZSA9PSBHTF9WRVJURVhfU0hBREVSKQor
ICAgIHsKKyAgICAgICAgZm9yIChhdXRvIHZhciA6IHZhcnlpbmdzKQorICAgICAgICB7CisgICAg
ICAgICAgICBsaXN0LnB1c2hfYmFjayh2YXIpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UK
KyAgICB7CisgICAgICAgIEFTU0VSVChzaGFkZXJUeXBlID09IEdMX0ZSQUdNRU5UX1NIQURFUik7
CisgICAgICAgIGZvciAoYXV0byB2YXIgOiBvdXRwdXRWYXJpYWJsZXMpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGxpc3QucHVzaF9iYWNrKHZhcik7CisgICAgICAgIH0KICAgICB9Ci0gICAgSW5p
dGlhbGl6ZVZhcmlhYmxlcyBpbml0aWFsaXplcih2YXJpYWJsZXMpOwotICAgIHJvb3QtPnRyYXZl
cnNlKCZpbml0aWFsaXplcik7CisgICAgSW5pdGlhbGl6ZVZhcmlhYmxlcyhyb290LCBsaXN0KTsK
IH0KIAogY29uc3QgVEV4dGVuc2lvbkJlaGF2aW9yJiBUQ29tcGlsZXI6OmdldEV4dGVuc2lvbkJl
aGF2aW9yKCkgY29uc3QKQEAgLTg2Niw5ICs5NTQsMjYgQEAgY29uc3QgQnVpbHRJbkZ1bmN0aW9u
RW11bGF0b3ImIFRDb21waWxlcgogICAgIHJldHVybiBidWlsdEluRnVuY3Rpb25FbXVsYXRvcjsK
IH0KIAotdm9pZCBUQ29tcGlsZXI6OndyaXRlUHJhZ21hKCkKK3ZvaWQgVENvbXBpbGVyOjp3cml0
ZVByYWdtYShTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25zKQogewotICAgIFRJbmZvU2lu
a0Jhc2UgJnNpbmsgPSBpbmZvU2luay5vYmo7Ci0gICAgaWYgKG1QcmFnbWEuc3RkZ2wuaW52YXJp
YW50QWxsKQotICAgICAgICBzaW5rIDw8ICIjcHJhZ21hIFNUREdMIGludmFyaWFudChhbGwpXG4i
OworICAgIGlmICghKGNvbXBpbGVPcHRpb25zICYgU0hfRkxBVFRFTl9QUkFHTUFfU1RER0xfSU5W
QVJJQU5UX0FMTCkpCisgICAgeworICAgICAgICBUSW5mb1NpbmtCYXNlICZzaW5rID0gaW5mb1Np
bmsub2JqOworICAgICAgICBpZiAobVByYWdtYS5zdGRnbC5pbnZhcmlhbnRBbGwpCisgICAgICAg
ICAgICBzaW5rIDw8ICIjcHJhZ21hIFNUREdMIGludmFyaWFudChhbGwpXG4iOworICAgIH0KK30K
KworYm9vbCBUQ29tcGlsZXI6OmlzVmFyeWluZ0RlZmluZWQoY29uc3QgY2hhciAqdmFyeWluZ05h
bWUpCit7CisgICAgQVNTRVJUKHZhcmlhYmxlc0NvbGxlY3RlZCk7CisgICAgZm9yIChzaXplX3Qg
aWkgPSAwOyBpaSA8IHZhcnlpbmdzLnNpemUoKTsgKytpaSkKKyAgICB7CisgICAgICAgIGlmICh2
YXJ5aW5nc1tpaV0ubmFtZSA9PSB2YXJ5aW5nTmFtZSkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7CiB9Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db21w
aWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL0NvbXBpbGVyLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0NvbXBpbGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDE0ICsyNSwxMiBAQAogI2luY2x1ZGUgInRoaXJkX3BhcnR5L2NvbXBpbGVy
L0FycmF5Qm91bmRzQ2xhbXBlci5oIgogCiBjbGFzcyBUQ29tcGlsZXI7Ci1jbGFzcyBURGVwZW5k
ZW5jeUdyYXBoOwogI2lmZGVmIEFOR0xFX0VOQUJMRV9ITFNMCiBjbGFzcyBUcmFuc2xhdG9ySExT
TDsKICNlbmRpZiAvLyBBTkdMRV9FTkFCTEVfSExTTAogCiAvLwotLy8gSGVscGVyIGZ1bmN0aW9u
IHRvIGlkZW50aWZ5IHNwZWNzIHRoYXQgYXJlIGJhc2VkIG9uIHRoZSBXZWJHTCBzcGVjLAotLy8g
bGlrZSB0aGUgQ1NTIFNoYWRlcnMgc3BlYy4KKy8vIEhlbHBlciBmdW5jdGlvbiB0byBpZGVudGlm
eSBzcGVjcyB0aGF0IGFyZSBiYXNlZCBvbiB0aGUgV2ViR0wgc3BlYy4KIC8vCiBib29sIElzV2Vi
R0xCYXNlZFNwZWMoU2hTaGFkZXJTcGVjIHNwZWMpOwogCkBAIC03NCwxNyArNzIsMjIgQEAgY2xh
c3MgVENvbXBpbGVyIDogcHVibGljIFRTaEhhbmRsZUJhc2UKIAogICAgIC8vIGNvbXBpbGVUcmVl
Rm9yVGVzdGluZyBzaG91bGQgYmUgdXNlZCBvbmx5IHdoZW4gdGVzdHMgcmVxdWlyZSBhY2Nlc3Mg
dG8KICAgICAvLyB0aGUgQVNULiBVc2VycyBvZiB0aGlzIGZ1bmN0aW9uIG5lZWQgdG8gbWFudWFs
bHkgbWFuYWdlIHRoZSBnbG9iYWwgcG9vbAotICAgIC8vIGFsbG9jYXRvci4gUmV0dXJucyBOVUxM
IHdoZW5ldmVyIHRoZXJlIGFyZSBjb21waWxhdGlvbiBlcnJvcnMuCi0gICAgVEludGVybU5vZGUg
KmNvbXBpbGVUcmVlRm9yVGVzdGluZyhjb25zdCBjaGFyKiBjb25zdCBzaGFkZXJTdHJpbmdzW10s
Ci0gICAgICAgIHNpemVfdCBudW1TdHJpbmdzLCBpbnQgY29tcGlsZU9wdGlvbnMpOwotCi0gICAg
Ym9vbCBjb21waWxlKGNvbnN0IGNoYXIqIGNvbnN0IHNoYWRlclN0cmluZ3NbXSwKLSAgICAgICAg
c2l6ZV90IG51bVN0cmluZ3MsIGludCBjb21waWxlT3B0aW9ucyk7CisgICAgLy8gYWxsb2NhdG9y
LiBSZXR1cm5zIG51bGxwdHIgd2hlbmV2ZXIgdGhlcmUgYXJlIGNvbXBpbGF0aW9uIGVycm9ycy4K
KyAgICBUSW50ZXJtQmxvY2sgKmNvbXBpbGVUcmVlRm9yVGVzdGluZyhjb25zdCBjaGFyICpjb25z
dCBzaGFkZXJTdHJpbmdzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IG51bVN0cmluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucyk7CisKKyAgICBib29sIGNvbXBp
bGUoY29uc3QgY2hhciAqY29uc3Qgc2hhZGVyU3RyaW5nc1tdLAorICAgICAgICAgICAgICAgICBz
aXplX3QgbnVtU3RyaW5ncywKKyAgICAgICAgICAgICAgICAgU2hDb21waWxlT3B0aW9ucyBjb21w
aWxlT3B0aW9ucyk7CiAKICAgICAvLyBHZXQgcmVzdWx0cyBvZiB0aGUgbGFzdCBjb21waWxhdGlv
bi4KICAgICBpbnQgZ2V0U2hhZGVyVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIHNoYWRlclZlcnNp
b247IH0KICAgICBUSW5mb1NpbmsmIGdldEluZm9TaW5rKCkgeyByZXR1cm4gaW5mb1Npbms7IH0K
IAorICAgIGJvb2wgaXNDb21wdXRlU2hhZGVyTG9jYWxTaXplRGVjbGFyZWQoKSBjb25zdCB7IHJl
dHVybiBtQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZURlY2xhcmVkOyB9CisgICAgY29uc3Qgc2g6Oldv
cmtHcm91cFNpemUgJmdldENvbXB1dGVTaGFkZXJMb2NhbFNpemUoKSB7IHJldHVybiBtQ29tcHV0
ZVNoYWRlckxvY2FsU2l6ZTsgfQorCiAgICAgLy8gQ2xlYXJzIHRoZSByZXN1bHRzIGZyb20gdGhl
IHByZXZpb3VzIGNvbXBpbGF0aW9uLgogICAgIHZvaWQgY2xlYXJSZXN1bHRzKCk7CiAKQEAgLTEw
MSw3ICsxMDQsNyBAQCBjbGFzcyBUQ29tcGlsZXIgOiBwdWJsaWMgVFNoSGFuZGxlQmFzZQogICAg
IFNoU2hhZGVyT3V0cHV0IGdldE91dHB1dFR5cGUoKSBjb25zdCB7IHJldHVybiBvdXRwdXRUeXBl
OyB9CiAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmdldEJ1aWx0SW5SZXNvdXJjZXNTdHJpbmcoKSBj
b25zdCB7IHJldHVybiBidWlsdEluUmVzb3VyY2VzU3RyaW5nOyB9CiAKLSAgICBib29sIHNob3Vs
ZFJ1bkxvb3BBbmRJbmRleGluZ1ZhbGlkYXRpb24oaW50IGNvbXBpbGVPcHRpb25zKSBjb25zdDsK
KyAgICBib29sIHNob3VsZFJ1bkxvb3BBbmRJbmRleGluZ1ZhbGlkYXRpb24oU2hDb21waWxlT3B0
aW9ucyBjb21waWxlT3B0aW9ucykgY29uc3Q7CiAKICAgICAvLyBHZXQgdGhlIHJlc291cmNlcyBz
ZXQgYnkgSW5pdEJ1aWx0SW5TeW1ib2xUYWJsZQogICAgIGNvbnN0IFNoQnVpbHRJblJlc291cmNl
cyYgZ2V0UmVzb3VyY2VzKCkgY29uc3Q7CkBAIC0xMTYsNjEgKzExOSw2MCBAQCBjbGFzcyBUQ29t
cGlsZXIgOiBwdWJsaWMgVFNoSGFuZGxlQmFzZQogICAgIGJvb2wgY2hlY2tDYWxsRGVwdGgoKTsK
ICAgICAvLyBSZXR1cm5zIHRydWUgaWYgYSBwcm9ncmFtIGhhcyBubyBjb25mbGljdGluZyBvciBt
aXNzaW5nIGZyYWdtZW50IG91dHB1dHMKICAgICBib29sIHZhbGlkYXRlT3V0cHV0cyhUSW50ZXJt
Tm9kZSogcm9vdCk7Ci0gICAgLy8gUmV3cml0ZXMgYSBzaGFkZXIncyBpbnRlcm1lZGlhdGUgdHJl
ZSBhY2NvcmRpbmcgdG8gdGhlIENTUyBTaGFkZXJzIHNwZWMuCi0gICAgdm9pZCByZXdyaXRlQ1NT
U2hhZGVyKFRJbnRlcm1Ob2RlKiByb290KTsKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGdp
dmVuIHNoYWRlciBkb2VzIG5vdCBleGNlZWQgdGhlIG1pbmltdW0KICAgICAvLyBmdW5jdGlvbmFs
aXR5IG1hbmRhdGVkIGluIEdMU0wgMS4wIHNwZWMgQXBwZW5kaXggQS4KICAgICBib29sIHZhbGlk
YXRlTGltaXRhdGlvbnMoVEludGVybU5vZGUqIHJvb3QpOwogICAgIC8vIENvbGxlY3QgaW5mbyBm
b3IgYWxsIGF0dHJpYnMsIHVuaWZvcm1zLCB2YXJ5aW5ncy4KICAgICB2b2lkIGNvbGxlY3RWYXJp
YWJsZXMoVEludGVybU5vZGUqIHJvb3QpOwogICAgIC8vIEFkZCBlbXVsYXRlZCBmdW5jdGlvbnMg
dG8gdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGVtdWxhdG9yLgotICAgIHZpcnR1YWwgdm9pZCBpbml0
QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IoQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IgKmVtdSwgaW50
IGNvbXBpbGVPcHRpb25zKSB7fTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdEJ1aWx0SW5GdW5jdGlv
bkVtdWxhdG9yKEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yICplbXUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRp
b25zKXt9OwogICAgIC8vIFRyYW5zbGF0ZSB0byBvYmplY3QgY29kZS4KLSAgICB2aXJ0dWFsIHZv
aWQgdHJhbnNsYXRlKFRJbnRlcm1Ob2RlICpyb290LCBpbnQgY29tcGlsZU9wdGlvbnMpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNsYXRlKFRJbnRlcm1Ob2RlICpyb290LCBTaENvbXBpbGVP
cHRpb25zIGNvbXBpbGVPcHRpb25zKSA9IDA7CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmLCBhZnRl
ciBhcHBseWluZyB0aGUgcGFja2luZyBydWxlcyBpbiB0aGUgR0xTTCAxLjAxNyBzcGVjCiAgICAg
Ly8gQXBwZW5kaXggQSwgc2VjdGlvbiA3LCB0aGUgc2hhZGVyIGRvZXMgbm90IHVzZSB0b28gbWFu
eSB1bmlmb3Jtcy4KICAgICBib29sIGVuZm9yY2VQYWNraW5nUmVzdHJpY3Rpb25zKCk7Ci0gICAg
Ly8gSW5zZXJ0IHN0YXRlbWVudHMgdG8gaW5pdGlhbGl6ZSB2YXJ5aW5ncyB3aXRob3V0IHN0YXRp
YyB1c2UgaW4gdGhlIGJlZ2lubmluZwotICAgIC8vIG9mIG1haW4oKS4gSXQgaXMgdG8gd29yayBh
cm91bmQgYSBNYWMgZHJpdmVyIHdoZXJlIHN1Y2ggdmFyeWluZ3MgaW4gYSB2ZXJ0ZXgKLSAgICAv
LyBzaGFkZXIgbWF5IGJlIG9wdGltaXplZCBvdXQgaW5jb3JyZWN0bHkgYXQgY29tcGlsZSB0aW1l
LCBjYXVzaW5nIGEgbGluayBmYWlsdXJlLgotICAgIC8vIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG9u
bHkgYmUgYXBwbGllZCB0byB2ZXJ0ZXggc2hhZGVycy4KLSAgICB2b2lkIGluaXRpYWxpemVWYXJ5
aW5nc1dpdGhvdXRTdGF0aWNVc2UoVEludGVybU5vZGUqIHJvb3QpOworICAgIC8vIEluc2VydCBz
dGF0ZW1lbnRzIHRvIHJlZmVyZW5jZSBhbGwgbWVtYmVycyBpbiB1bnVzZWQgdW5pZm9ybSBibG9j
a3Mgd2l0aCBzdGFuZGFyZCBhbmQgc2hhcmVkCisgICAgLy8gbGF5b3V0LiBUaGlzIGlzIHRvIHdv
cmsgYXJvdW5kIGEgTWFjIGRyaXZlciB0aGF0IHRyZWF0cyB1bnVzZWQgc3RhbmRhcmQvc2hhcmVk
CisgICAgLy8gdW5pZm9ybSBibG9ja3MgYXMgaW5hY3RpdmUuCisgICAgdm9pZCB1c2VBbGxNZW1i
ZXJzSW5VbnVzZWRTdGFuZGFyZEFuZFNoYXJlZEJsb2NrcyhUSW50ZXJtTm9kZSAqcm9vdCk7Cisg
ICAgLy8gSW5zZXJ0IHN0YXRlbWVudHMgdG8gaW5pdGlhbGl6ZSBvdXRwdXQgdmFyaWFibGVzIGlu
IHRoZSBiZWdpbm5pbmcgb2YgbWFpbigpLgorICAgIC8vIFRoaXMgaXMgdG8gYXZvaWQgdW5kZWZp
bmVkIGJlaGF2aW9ycy4KKyAgICB2b2lkIGluaXRpYWxpemVPdXRwdXRWYXJpYWJsZXMoVEludGVy
bU5vZGUgKnJvb3QpOwogICAgIC8vIEluc2VydCBnbF9Qb3NpdGlvbiA9IHZlYzQoMCwwLDAsMCkg
dG8gdGhlIGJlZ2lubmluZyBvZiBtYWluKCkuCiAgICAgLy8gSXQgaXMgdG8gd29yayBhcm91bmQg
YSBMaW51eCBkcml2ZXIgYnVnIHdoZXJlIG1pc3NpbmcgdGhpcyBjYXVzZXMgY29tcGlsZSBmYWls
dXJlCiAgICAgLy8gd2hpbGUgc3BlYyBzYXlzIGl0IGlzIGFsbG93ZWQuCiAgICAgLy8gVGhpcyBm
dW5jdGlvbiBzaG91bGQgb25seSBiZSBhcHBsaWVkIHRvIHZlcnRleCBzaGFkZXJzLgogICAgIHZv
aWQgaW5pdGlhbGl6ZUdMUG9zaXRpb24oVEludGVybU5vZGUqIHJvb3QpOwotICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGUgc2hhZGVyIHBhc3NlcyB0aGUgcmVzdHJpY3Rpb25zIHRoYXQgYWltIHRv
IHByZXZlbnQgdGltaW5nIGF0dGFja3MuCi0gICAgYm9vbCBlbmZvcmNlVGltaW5nUmVzdHJpY3Rp
b25zKFRJbnRlcm1Ob2RlKiByb290LCBib29sIG91dHB1dEdyYXBoKTsKLSAgICAvLyBSZXR1cm5z
IHRydWUgaWYgdGhlIHNoYWRlciBkb2VzIG5vdCB1c2Ugc2FtcGxlcnMuCi0gICAgYm9vbCBlbmZv
cmNlVmVydGV4U2hhZGVyVGltaW5nUmVzdHJpY3Rpb25zKFRJbnRlcm1Ob2RlKiByb290KTsKLSAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHNoYWRlciBkb2VzIG5vdCB1c2Ugc2FtcGxlciBkZXBl
bmRlbnQgdmFsdWVzIHRvIGFmZmVjdCBjb250cm9sCi0gICAgLy8gZmxvdyBvciBpbiBvcGVyYXRp
b25zIHdob3NlIHRpbWUgY2FuIGRlcGVuZCBvbiB0aGUgaW5wdXQgdmFsdWVzLgotICAgIGJvb2wg
ZW5mb3JjZUZyYWdtZW50U2hhZGVyVGltaW5nUmVzdHJpY3Rpb25zKGNvbnN0IFREZXBlbmRlbmN5
R3JhcGgmIGdyYXBoKTsKICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgbWF4aW11bSBleHByZXNz
aW9uIGNvbXBsZXhpdHkgaXMgYmVsb3cgdGhlIGxpbWl0LgogICAgIGJvb2wgbGltaXRFeHByZXNz
aW9uQ29tcGxleGl0eShUSW50ZXJtTm9kZSogcm9vdCk7CiAgICAgLy8gR2V0IGJ1aWx0LWluIGV4
dGVuc2lvbnMgd2l0aCBkZWZhdWx0IGJlaGF2aW9yLgogICAgIGNvbnN0IFRFeHRlbnNpb25CZWhh
dmlvciYgZ2V0RXh0ZW5zaW9uQmVoYXZpb3IoKSBjb25zdDsKICAgICBjb25zdCBjaGFyICpnZXRT
b3VyY2VQYXRoKCkgY29uc3Q7CiAgICAgY29uc3QgVFByYWdtYSYgZ2V0UHJhZ21hKCkgY29uc3Qg
eyByZXR1cm4gbVByYWdtYTsgfQotICAgIHZvaWQgd3JpdGVQcmFnbWEoKTsKKyAgICB2b2lkIHdy
aXRlUHJhZ21hKFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpOwogICAgIHVuc2lnbmVk
IGludCAqZ2V0VGVtcG9yYXJ5SW5kZXgoKSB7IHJldHVybiAmbVRlbXBvcmFyeUluZGV4OyB9Cisg
ICAgLy8gUmVsaWVzIG9uIGNvbGxlY3RWYXJpYWJsZXMgaGF2aW5nIGJlZW4gY2FsbGVkLgorICAg
IGJvb2wgaXNWYXJ5aW5nRGVmaW5lZChjb25zdCBjaGFyICp2YXJ5aW5nTmFtZSk7CiAKICAgICBj
b25zdCBBcnJheUJvdW5kc0NsYW1wZXImIGdldEFycmF5Qm91bmRzQ2xhbXBlcigpIGNvbnN0Owog
ICAgIFNoQXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3kgZ2V0QXJyYXlJbmRleENsYW1waW5nU3Ry
YXRlZ3koKSBjb25zdDsKICAgICBjb25zdCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvciYgZ2V0QnVp
bHRJbkZ1bmN0aW9uRW11bGF0b3IoKSBjb25zdDsKIAorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRD
b2xsZWN0VmFyaWFibGVzKFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpCisgICAgewor
ICAgICAgICByZXR1cm4gKGNvbXBpbGVPcHRpb25zICYgU0hfVkFSSUFCTEVTKSAhPSAwOworICAg
IH0KKworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRGbGF0dGVuUHJhZ21hU3RkZ2xJbnZhcmlhbnRB
bGwoKSA9IDA7CisKICAgICBzdGQ6OnZlY3RvcjxzaDo6QXR0cmlidXRlPiBhdHRyaWJ1dGVzOwog
ICAgIHN0ZDo6dmVjdG9yPHNoOjpPdXRwdXRWYXJpYWJsZT4gb3V0cHV0VmFyaWFibGVzOwogICAg
IHN0ZDo6dmVjdG9yPHNoOjpVbmlmb3JtPiB1bmlmb3JtczsKICAgICBzdGQ6OnZlY3RvcjxzaDo6
U2hhZGVyVmFyaWFibGU+IGV4cGFuZGVkVW5pZm9ybXM7CiAgICAgc3RkOjp2ZWN0b3I8c2g6OlZh
cnlpbmc+IHZhcnlpbmdzOwogICAgIHN0ZDo6dmVjdG9yPHNoOjpJbnRlcmZhY2VCbG9jaz4gaW50
ZXJmYWNlQmxvY2tzOwotCi0gICAgdmlydHVhbCBib29sIHNob3VsZENvbGxlY3RWYXJpYWJsZXMo
aW50IGNvbXBpbGVPcHRpb25zKQotICAgIHsKLSAgICAgICAgcmV0dXJuIChjb21waWxlT3B0aW9u
cyAmIFNIX1ZBUklBQkxFUykgIT0gMDsKLSAgICB9CisgICAgYm9vbCB2YXJpYWJsZXNDb2xsZWN0
ZWQ7CiAKICAgcHJpdmF0ZToKICAgICAvLyBDcmVhdGVzIHRoZSBmdW5jdGlvbiBjYWxsIERBRyBm
b3IgZnVydGhlciBhbmFseXNpcywgcmV0dXJuaW5nIGZhbHNlIGlmIHRoZXJlIGlzIGEgcmVjdXJz
aW9uCkBAIC0xODMsMTEgKzE4NSwxMSBAQCBjbGFzcyBUQ29tcGlsZXIgOiBwdWJsaWMgVFNoSGFu
ZGxlQmFzZQogCiAgICAgLy8gUmVtb3ZlcyB1bnVzZWQgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGFu
ZCBwcm90b3R5cGVzIGZyb20gdGhlIEFTVAogICAgIGNsYXNzIFVudXNlZFByZWRpY2F0ZTsKLSAg
ICBib29sIHBydW5lVW51c2VkRnVuY3Rpb25zKFRJbnRlcm1Ob2RlICpyb290KTsKKyAgICBib29s
IHBydW5lVW51c2VkRnVuY3Rpb25zKFRJbnRlcm1CbG9jayAqcm9vdCk7CiAKLSAgICBUSW50ZXJt
Tm9kZSAqY29tcGlsZVRyZWVJbXBsKGNvbnN0IGNoYXIgKmNvbnN0IHNoYWRlclN0cmluZ3NbXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBudW1TdHJpbmdzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IGNvbXBpbGVPcHRpb25zKTsK
KyAgICBUSW50ZXJtQmxvY2sgKmNvbXBpbGVUcmVlSW1wbChjb25zdCBjaGFyICpjb25zdCBzaGFk
ZXJTdHJpbmdzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51
bVN0cmluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hDb21w
aWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucyk7CiAKICAgICBzaDo6R0xlbnVtIHNoYWRlclR5cGU7
CiAgICAgU2hTaGFkZXJTcGVjIHNoYWRlclNwZWM7CkBAIC0yMjksNiArMjMxLDEwIEBAIGNsYXNz
IFRDb21waWxlciA6IHB1YmxpYyBUU2hIYW5kbGVCYXNlCiAgICAgVEluZm9TaW5rIGluZm9TaW5r
OyAgLy8gT3V0cHV0IHNpbmsuCiAgICAgY29uc3QgY2hhciAqbVNvdXJjZVBhdGg7IC8vIFBhdGgg
b2Ygc291cmNlIGZpbGUgb3IgTlVMTAogCisgICAgLy8gY29tcHV0ZSBzaGFkZXIgbG9jYWwgZ3Jv
dXAgc2l6ZQorICAgIGJvb2wgbUNvbXB1dGVTaGFkZXJMb2NhbFNpemVEZWNsYXJlZDsKKyAgICBz
aDo6V29ya0dyb3VwU2l6ZSBtQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZTsKKwogICAgIC8vIG5hbWUg
aGFzaGluZy4KICAgICBTaEhhc2hGdW5jdGlvbjY0IGhhc2hGdW5jdGlvbjsKICAgICBOYW1lTWFw
IG5hbWVNYXA7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9Db25zdGFudFVuaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db25zdGFudFVuaW9uLmNwcAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9Db25zdGFudFVuaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYyMiBAQAorLy8K
Ky8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKy8vIENvbnN0YW50VW5pb246IENvbnN0YW50IGZvbGRpbmcgaGVscGVyIGNsYXNzLgor
CisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9Db25zdGFudFVuaW9uLmgiCisKKyNpbmNs
dWRlICJiYXNlL251bWVyaWNzL3NhZmVfbWF0aC5oIgorI2luY2x1ZGUgImNvbW1vbi9tYXRodXRp
bC5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvRGlhZ25vc3RpY3MuaCIKKworbmFt
ZXNwYWNlCit7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorVCBDaGVja2VkU3VtKGJhc2U6OkNo
ZWNrZWROdW1lcmljPFQ+IGxocywKKyAgICAgICAgICAgICBiYXNlOjpDaGVja2VkTnVtZXJpYzxU
PiByaHMsCisgICAgICAgICAgICAgVERpYWdub3N0aWNzICpkaWFnLAorICAgICAgICAgICAgIGNv
bnN0IFRTb3VyY2VMb2MgJmxpbmUpCit7CisgICAgQVNTRVJUKGxocy5Jc1ZhbGlkKCkgJiYgcmhz
LklzVmFsaWQoKSk7CisgICAgYXV0byByZXN1bHQgPSBsaHMgKyByaHM7CisgICAgaWYgKCFyZXN1
bHQuSXNWYWxpZCgpKQorICAgIHsKKyAgICAgICAgZGlhZy0+ZXJyb3IobGluZSwgIkFkZGl0aW9u
IG91dCBvZiByYW5nZSIsICIqIiwgIiIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAg
cmV0dXJuIHJlc3VsdC5WYWx1ZU9yRGVmYXVsdCgwKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CitUIENoZWNrZWREaWZmKGJhc2U6OkNoZWNrZWROdW1lcmljPFQ+IGxocywKKyAgICAgICAg
ICAgICAgYmFzZTo6Q2hlY2tlZE51bWVyaWM8VD4gcmhzLAorICAgICAgICAgICAgICBURGlhZ25v
c3RpY3MgKmRpYWcsCisgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpCit7Cisg
ICAgQVNTRVJUKGxocy5Jc1ZhbGlkKCkgJiYgcmhzLklzVmFsaWQoKSk7CisgICAgYXV0byByZXN1
bHQgPSBsaHMgLSByaHM7CisgICAgaWYgKCFyZXN1bHQuSXNWYWxpZCgpKQorICAgIHsKKyAgICAg
ICAgZGlhZy0+ZXJyb3IobGluZSwgIkRpZmZlcmVuY2Ugb3V0IG9mIHJhbmdlIiwgIioiLCAiIik7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0LlZhbHVlT3JEZWZh
dWx0KDApOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK1QgQ2hlY2tlZE11bChiYXNlOjpD
aGVja2VkTnVtZXJpYzxUPiBsaHMsCisgICAgICAgICAgICAgYmFzZTo6Q2hlY2tlZE51bWVyaWM8
VD4gcmhzLAorICAgICAgICAgICAgIFREaWFnbm9zdGljcyAqZGlhZywKKyAgICAgICAgICAgICBj
b25zdCBUU291cmNlTG9jICZsaW5lKQoreworICAgIEFTU0VSVChsaHMuSXNWYWxpZCgpICYmIHJo
cy5Jc1ZhbGlkKCkpOworICAgIGF1dG8gcmVzdWx0ID0gbGhzICogcmhzOworICAgIGlmICghcmVz
dWx0LklzVmFsaWQoKSkKKyAgICB7CisgICAgICAgIGRpYWctPmVycm9yKGxpbmUsICJNdWx0aXBs
aWNhdGlvbiBvdXQgb2YgcmFuZ2UiLCAiKiIsICIiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorICAgIHJldHVybiByZXN1bHQuVmFsdWVPckRlZmF1bHQoMCk7Cit9CisKK30gIC8vIGFub255
bW91cyBuYW1lc3BhY2UKKworVENvbnN0YW50VW5pb246OlRDb25zdGFudFVuaW9uKCkKK3sKKyAg
ICBpQ29uc3QgPSAwOworICAgIHR5cGUgICA9IEVidFZvaWQ7Cit9CisKK2Jvb2wgVENvbnN0YW50
VW5pb246OmNhc3QoVEJhc2ljVHlwZSBuZXdUeXBlLCBjb25zdCBUQ29uc3RhbnRVbmlvbiAmY29u
c3RhbnQpCit7CisgICAgc3dpdGNoIChuZXdUeXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBFYnRG
bG9hdDoKKyAgICAgICAgICAgIHN3aXRjaCAoY29uc3RhbnQudHlwZSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBjYXNlIEVidEludDoKKyAgICAgICAgICAgICAgICAgICAgc2V0RkNv
bnN0KHN0YXRpY19jYXN0PGZsb2F0Pihjb25zdGFudC5nZXRJQ29uc3QoKSkpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEVidFVJbnQ6CisgICAgICAg
ICAgICAgICAgICAgIHNldEZDb25zdChzdGF0aWNfY2FzdDxmbG9hdD4oY29uc3RhbnQuZ2V0VUNv
bnN0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSBFYnRCb29sOgorICAgICAgICAgICAgICAgICAgICBzZXRGQ29uc3Qoc3RhdGljX2Nhc3Q8Zmxv
YXQ+KGNvbnN0YW50LmdldEJDb25zdCgpKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CisgICAgICAgICAgICAgICAgICAgIHNldEZD
b25zdChzdGF0aWNfY2FzdDxmbG9hdD4oY29uc3RhbnQuZ2V0RkNvbnN0KCkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAgICAgICAgc3dpdGNoIChjb25zdGFudC50eXBl
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAgICAg
ICAgICAgICAgICBzZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50Pihjb25zdGFudC5nZXRJQ29uc3Qo
KSkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEVi
dFVJbnQ6CisgICAgICAgICAgICAgICAgICAgIHNldElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KGNv
bnN0YW50LmdldFVDb25zdCgpKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKKyAgICAgICAgICAgICAgICAgICAgc2V0SUNvbnN0KHN0
YXRpY19jYXN0PGludD4oY29uc3RhbnQuZ2V0QkNvbnN0KCkpKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKKyAgICAgICAgICAgICAg
ICAgICAgc2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4oY29uc3RhbnQuZ2V0RkNvbnN0KCkpKTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgRWJ0VUludDoKKyAgICAgICAgICAgIHN3aXRjaCAoY29u
c3RhbnQudHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEVidEludDoK
KyAgICAgICAgICAgICAgICAgICAgc2V0VUNvbnN0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4o
Y29uc3RhbnQuZ2V0SUNvbnN0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSBFYnRVSW50OgorICAgICAgICAgICAgICAgICAgICBzZXRVQ29uc3Qo
c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihjb25zdGFudC5nZXRVQ29uc3QoKSkpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6CisgICAg
ICAgICAgICAgICAgICAgIHNldFVDb25zdChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGNvbnN0
YW50LmdldEJDb25zdCgpKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgRWJ0RmxvYXQ6CisgICAgICAgICAgICAgICAgICAgIHNldFVDb25zdChzdGF0
aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGNvbnN0YW50LmdldEZDb25zdCgpKSk7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEVidEJvb2w6CisgICAgICAgICAgICBzd2l0Y2ggKGNvbnN0YW50LnR5cGUp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CisgICAgICAgICAg
ICAgICAgICAgIHNldEJDb25zdChjb25zdGFudC5nZXRJQ29uc3QoKSAhPSAwKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBFYnRVSW50OgorICAgICAg
ICAgICAgICAgICAgICBzZXRCQ29uc3QoY29uc3RhbnQuZ2V0VUNvbnN0KCkgIT0gMCk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKKyAg
ICAgICAgICAgICAgICAgICAgc2V0QkNvbnN0KGNvbnN0YW50LmdldEJDb25zdCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKKyAg
ICAgICAgICAgICAgICAgICAgc2V0QkNvbnN0KGNvbnN0YW50LmdldEZDb25zdCgpICE9IDAuMGYp
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFYnRTdHJ1Y3Q6ICAvLyBTdHJ1Y3QgZmllbGRzIGRv
bid0IGdldCBjYXN0CisgICAgICAgICAgICBzd2l0Y2ggKGNvbnN0YW50LnR5cGUpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CisgICAgICAgICAgICAgICAgICAg
IHNldElDb25zdChjb25zdGFudC5nZXRJQ29uc3QoKSk7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRWJ0VUludDoKKyAgICAgICAgICAgICAgICAgICAg
c2V0VUNvbnN0KGNvbnN0YW50LmdldFVDb25zdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgY2FzZSBFYnRCb29sOgorICAgICAgICAgICAgICAgICAgICBz
ZXRCQ29uc3QoY29uc3RhbnQuZ2V0QkNvbnN0KCkpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OgorICAgICAgICAgICAgICAgICAgICBz
ZXRGQ29uc3QoY29uc3RhbnQuZ2V0RkNvbnN0KCkpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBUQ29uc3RhbnRVbmlvbjo6b3BlcmF0b3I9PShjb25zdCBpbnQgaSkgY29uc3QK
K3sKKyAgICByZXR1cm4gaSA9PSBpQ29uc3Q7Cit9CisKK2Jvb2wgVENvbnN0YW50VW5pb246Om9w
ZXJhdG9yPT0oY29uc3QgdW5zaWduZWQgaW50IHUpIGNvbnN0Cit7CisgICAgcmV0dXJuIHUgPT0g
dUNvbnN0OworfQorCitib29sIFRDb25zdGFudFVuaW9uOjpvcGVyYXRvcj09KGNvbnN0IGZsb2F0
IGYpIGNvbnN0Cit7CisgICAgcmV0dXJuIGYgPT0gZkNvbnN0OworfQorCitib29sIFRDb25zdGFu
dFVuaW9uOjpvcGVyYXRvcj09KGNvbnN0IGJvb2wgYikgY29uc3QKK3sKKyAgICByZXR1cm4gYiA9
PSBiQ29uc3Q7Cit9CisKK2Jvb2wgVENvbnN0YW50VW5pb246Om9wZXJhdG9yPT0oY29uc3QgVENv
bnN0YW50VW5pb24gJmNvbnN0YW50KSBjb25zdAoreworICAgIGlmIChjb25zdGFudC50eXBlICE9
IHR5cGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7
CisgICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAgICAgICAgcmV0dXJuIGNvbnN0YW50LmlDb25z
dCA9PSBpQ29uc3Q7CisgICAgICAgIGNhc2UgRWJ0VUludDoKKyAgICAgICAgICAgIHJldHVybiBj
b25zdGFudC51Q29uc3QgPT0gdUNvbnN0OworICAgICAgICBjYXNlIEVidEZsb2F0OgorICAgICAg
ICAgICAgcmV0dXJuIGNvbnN0YW50LmZDb25zdCA9PSBmQ29uc3Q7CisgICAgICAgIGNhc2UgRWJ0
Qm9vbDoKKyAgICAgICAgICAgIHJldHVybiBjb25zdGFudC5iQ29uc3QgPT0gYkNvbnN0OworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworYm9v
bCBUQ29uc3RhbnRVbmlvbjo6b3BlcmF0b3IhPShjb25zdCBpbnQgaSkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gIW9wZXJhdG9yPT0oaSk7Cit9CisKK2Jvb2wgVENvbnN0YW50VW5pb246Om9wZXJhdG9y
IT0oY29uc3QgdW5zaWduZWQgaW50IHUpIGNvbnN0Cit7CisgICAgcmV0dXJuICFvcGVyYXRvcj09
KHUpOworfQorCitib29sIFRDb25zdGFudFVuaW9uOjpvcGVyYXRvciE9KGNvbnN0IGZsb2F0IGYp
IGNvbnN0Cit7CisgICAgcmV0dXJuICFvcGVyYXRvcj09KGYpOworfQorCitib29sIFRDb25zdGFu
dFVuaW9uOjpvcGVyYXRvciE9KGNvbnN0IGJvb2wgYikgY29uc3QKK3sKKyAgICByZXR1cm4gIW9w
ZXJhdG9yPT0oYik7Cit9CisKK2Jvb2wgVENvbnN0YW50VW5pb246Om9wZXJhdG9yIT0oY29uc3Qg
VENvbnN0YW50VW5pb24gJmNvbnN0YW50KSBjb25zdAoreworICAgIHJldHVybiAhb3BlcmF0b3I9
PShjb25zdGFudCk7Cit9CisKK2Jvb2wgVENvbnN0YW50VW5pb246Om9wZXJhdG9yPihjb25zdCBU
Q29uc3RhbnRVbmlvbiAmY29uc3RhbnQpIGNvbnN0Cit7CisgICAgQVNTRVJUKHR5cGUgPT0gY29u
c3RhbnQudHlwZSk7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBFYnRJ
bnQ6CisgICAgICAgICAgICByZXR1cm4gaUNvbnN0ID4gY29uc3RhbnQuaUNvbnN0OworICAgICAg
ICBjYXNlIEVidFVJbnQ6CisgICAgICAgICAgICByZXR1cm4gdUNvbnN0ID4gY29uc3RhbnQudUNv
bnN0OworICAgICAgICBjYXNlIEVidEZsb2F0OgorICAgICAgICAgICAgcmV0dXJuIGZDb25zdCA+
IGNvbnN0YW50LmZDb25zdDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsgIC8vIEludmFsaWQgb3BlcmF0aW9uLCBoYW5kbGVkIGF0IHNlbWFudGljIGFuYWx5c2lz
CisgICAgfQorfQorCitib29sIFRDb25zdGFudFVuaW9uOjpvcGVyYXRvcjwoY29uc3QgVENvbnN0
YW50VW5pb24gJmNvbnN0YW50KSBjb25zdAoreworICAgIEFTU0VSVCh0eXBlID09IGNvbnN0YW50
LnR5cGUpOworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgRWJ0SW50Ogor
ICAgICAgICAgICAgcmV0dXJuIGlDb25zdCA8IGNvbnN0YW50LmlDb25zdDsKKyAgICAgICAgY2Fz
ZSBFYnRVSW50OgorICAgICAgICAgICAgcmV0dXJuIHVDb25zdCA8IGNvbnN0YW50LnVDb25zdDsK
KyAgICAgICAgY2FzZSBFYnRGbG9hdDoKKyAgICAgICAgICAgIHJldHVybiBmQ29uc3QgPCBjb25z
dGFudC5mQ29uc3Q7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
ICAvLyBJbnZhbGlkIG9wZXJhdGlvbiwgaGFuZGxlZCBhdCBzZW1hbnRpYyBhbmFseXNpcworICAg
IH0KK30KKworLy8gc3RhdGljCitUQ29uc3RhbnRVbmlvbiBUQ29uc3RhbnRVbmlvbjo6YWRkKGNv
bnN0IFRDb25zdGFudFVuaW9uICZsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRDb25zdGFudFVuaW9uICZyaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFREaWFnbm9zdGljcyAqZGlhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbGluZSkKK3sKKyAgICBUQ29uc3RhbnRVbmlvbiBy
ZXR1cm5WYWx1ZTsKKyAgICBBU1NFUlQobGhzLnR5cGUgPT0gcmhzLnR5cGUpOworICAgIHN3aXRj
aCAobGhzLnR5cGUpCisgICAgeworICAgICAgICBjYXNlIEVidEludDoKKyAgICAgICAgICAgIHJl
dHVyblZhbHVlLnNldElDb25zdChnbDo6V3JhcHBpbmdTdW08aW50PihsaHMuaUNvbnN0LCByaHMu
aUNvbnN0KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFYnRVSW50OgorICAg
ICAgICAgICAgcmV0dXJuVmFsdWUuc2V0VUNvbnN0KGdsOjpXcmFwcGluZ1N1bTx1bnNpZ25lZCBp
bnQ+KGxocy51Q29uc3QsIHJocy51Q29uc3QpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEVidEZsb2F0OgorICAgICAgICAgICAgcmV0dXJuVmFsdWUuc2V0RkNvbnN0KENoZWNr
ZWRTdW08ZmxvYXQ+KGxocy5mQ29uc3QsIHJocy5mQ29uc3QsIGRpYWcsIGxpbmUpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUo
KTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKKy8vIHN0YXRpYworVENv
bnN0YW50VW5pb24gVENvbnN0YW50VW5pb246OnN1Yihjb25zdCBUQ29uc3RhbnRVbmlvbiAmbGhz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUQ29uc3RhbnRVbmlv
biAmcmhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURGlhZ25vc3RpY3Mg
KmRpYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VM
b2MgJmxpbmUpCit7CisgICAgVENvbnN0YW50VW5pb24gcmV0dXJuVmFsdWU7CisgICAgQVNTRVJU
KGxocy50eXBlID09IHJocy50eXBlKTsKKyAgICBzd2l0Y2ggKGxocy50eXBlKQorICAgIHsKKyAg
ICAgICAgY2FzZSBFYnRJbnQ6CisgICAgICAgICAgICByZXR1cm5WYWx1ZS5zZXRJQ29uc3QoZ2w6
OldyYXBwaW5nRGlmZjxpbnQ+KGxocy5pQ29uc3QsIHJocy5pQ29uc3QpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEVidFVJbnQ6CisgICAgICAgICAgICByZXR1cm5WYWx1ZS5z
ZXRVQ29uc3QoZ2w6OldyYXBwaW5nRGlmZjx1bnNpZ25lZCBpbnQ+KGxocy51Q29uc3QsIHJocy51
Q29uc3QpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVidEZsb2F0OgorICAg
ICAgICAgICAgcmV0dXJuVmFsdWUuc2V0RkNvbnN0KENoZWNrZWREaWZmPGZsb2F0PihsaHMuZkNv
bnN0LCByaHMuZkNvbnN0LCBkaWFnLCBsaW5lKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0
dXJuIHJldHVyblZhbHVlOworfQorCisvLyBzdGF0aWMKK1RDb25zdGFudFVuaW9uIFRDb25zdGFu
dFVuaW9uOjptdWwoY29uc3QgVENvbnN0YW50VW5pb24gJmxocywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVENvbnN0YW50VW5pb24gJnJocywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVERpYWdub3N0aWNzICpkaWFnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsaW5lKQoreworICAgIFRD
b25zdGFudFVuaW9uIHJldHVyblZhbHVlOworICAgIEFTU0VSVChsaHMudHlwZSA9PSByaHMudHlw
ZSk7CisgICAgc3dpdGNoIChsaHMudHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgRWJ0SW50Ogor
ICAgICAgICAgICAgcmV0dXJuVmFsdWUuc2V0SUNvbnN0KGdsOjpXcmFwcGluZ011bChsaHMuaUNv
bnN0LCByaHMuaUNvbnN0KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFYnRV
SW50OgorICAgICAgICAgICAgLy8gVW5zaWduZWQgaW50ZWdlciBtYXRoIGluIEMrKyBpcyBkZWZp
bmVkIHRvIGJlIGRvbmUgaW4gbW9kdWxvIDJebiwgc28gd2UgcmVseSBvbiB0aGF0CisgICAgICAg
ICAgICAvLyB0byBpbXBsZW1lbnQgd3JhcHBpbmcgbXVsdGlwbGljYXRpb24uCisgICAgICAgICAg
ICByZXR1cm5WYWx1ZS5zZXRVQ29uc3QobGhzLnVDb25zdCAqIHJocy51Q29uc3QpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CisgICAgICAgICAgICByZXR1cm5W
YWx1ZS5zZXRGQ29uc3QoQ2hlY2tlZE11bDxmbG9hdD4obGhzLmZDb25zdCwgcmhzLmZDb25zdCwg
ZGlhZywgbGluZSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgIH0KKworICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
K30KKworVENvbnN0YW50VW5pb24gVENvbnN0YW50VW5pb246Om9wZXJhdG9yJShjb25zdCBUQ29u
c3RhbnRVbmlvbiAmY29uc3RhbnQpIGNvbnN0Cit7CisgICAgVENvbnN0YW50VW5pb24gcmV0dXJu
VmFsdWU7CisgICAgQVNTRVJUKHR5cGUgPT0gY29uc3RhbnQudHlwZSk7CisgICAgc3dpdGNoICh0
eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBFYnRJbnQ6CisgICAgICAgICAgICByZXR1cm5WYWx1
ZS5zZXRJQ29uc3QoaUNvbnN0ICUgY29uc3RhbnQuaUNvbnN0KTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEVidFVJbnQ6CisgICAgICAgICAgICByZXR1cm5WYWx1ZS5zZXRVQ29u
c3QodUNvbnN0ICUgY29uc3RhbnQudUNvbnN0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1
cm4gcmV0dXJuVmFsdWU7Cit9CisKKy8vIHN0YXRpYworVENvbnN0YW50VW5pb24gVENvbnN0YW50
VW5pb246OnJzaGlmdChjb25zdCBUQ29uc3RhbnRVbmlvbiAmbGhzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUQ29uc3RhbnRVbmlvbiAmcmhzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURGlhZ25vc3RpY3MgKmRpYWcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUp
Cit7CisgICAgVENvbnN0YW50VW5pb24gcmV0dXJuVmFsdWU7CisgICAgQVNTRVJUKGxocy50eXBl
ID09IEVidEludCB8fCBsaHMudHlwZSA9PSBFYnRVSW50KTsKKyAgICBBU1NFUlQocmhzLnR5cGUg
PT0gRWJ0SW50IHx8IHJocy50eXBlID09IEVidFVJbnQpOworICAgIGlmICgocmhzLnR5cGUgPT0g
RWJ0SW50ICYmIChyaHMuaUNvbnN0IDwgMCB8fCByaHMuaUNvbnN0ID4gMzEpKSB8fAorICAgICAg
ICAocmhzLnR5cGUgPT0gRWJ0VUludCAmJiByaHMudUNvbnN0ID4gMzF1KSkKKyAgICB7CisgICAg
ICAgIGRpYWctPmVycm9yKGxpbmUsICJVbmRlZmluZWQgc2hpZnQgKG9wZXJhbmQgb3V0IG9mIHJh
bmdlKSIsICI+PiIsICIiKTsKKyAgICAgICAgc3dpdGNoIChsaHMudHlwZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CisgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUuc2V0
SUNvbnN0KDApOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFYnRV
SW50OgorICAgICAgICAgICAgICAgIHJldHVyblZhbHVlLnNldFVDb25zdCgwdSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOworICAg
IH0KKworICAgIHN3aXRjaCAobGhzLnR5cGUpCisgICAgeworICAgICAgICBjYXNlIEVidEludDoK
KyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgaW50IHNoaWZ0T2Zmc2V0ID0gMDsKKyAg
ICAgICAgICAgIHN3aXRjaCAocmhzLnR5cGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgY2FzZSBFYnRJbnQ6CisgICAgICAgICAgICAgICAgICAgIHNoaWZ0T2Zmc2V0ID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgaW50PihyaHMuaUNvbnN0KTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgY2FzZSBFYnRVSW50OgorICAgICAgICAgICAgICAgICAgICBz
aGlmdE9mZnNldCA9IHJocy51Q29uc3Q7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc2hpZnRPZmZzZXQgPiAwKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIC8vIEVTU0wgMy4wMC42IHNlY3Rpb24gNS45OiAiSWYg
RTEgaXMgYSBzaWduZWQgaW50ZWdlciwgdGhlIHJpZ2h0LXNoaWZ0IHdpbGwgZXh0ZW5kCisgICAg
ICAgICAgICAgICAgLy8gdGhlIHNpZ24gYml0LiIgSW4gQysrIHNoaWZ0aW5nIG5lZ2F0aXZlIGlu
dGVnZXJzIGlzIHVuZGVmaW5lZCwgc28gd2UgaW1wbGVtZW50CisgICAgICAgICAgICAgICAgLy8g
ZXh0ZW5kaW5nIHRoZSBzaWduIGJpdCBtYW51YWxseS4KKyAgICAgICAgICAgICAgICBib29sIGV4
dGVuZFNpZ25CaXQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpbnQgbGhzU2FmZSAgICAgICAg
PSBsaHMuaUNvbnN0OworICAgICAgICAgICAgICAgIGlmIChsaHNTYWZlIDwgMCkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGV4dGVuZFNpZ25CaXQgPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICAvLyBDbGVhciB0aGUgc2lnbiBiaXQgc28gdGhhdCBiaXRzaGlmdCBy
aWdodCBpcyBkZWZpbmVkIGluIEMrKy4KKyAgICAgICAgICAgICAgICAgICAgbGhzU2FmZSAmPSAw
eDdmZmZmZmZmOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQobGhzU2FmZSA+IDApOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZS5zZXRJQ29uc3QobGhz
U2FmZSA+PiBzaGlmdE9mZnNldCk7CisKKyAgICAgICAgICAgICAgICAvLyBNYW51YWxseSBmaWxs
IGluIHRoZSBleHRlbmRlZCBzaWduIGJpdCBpZiBuZWNlc3NhcnkuCisgICAgICAgICAgICAgICAg
aWYgKGV4dGVuZFNpZ25CaXQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBpbnQgZXh0ZW5kZWRTaWduQml0ID0gc3RhdGljX2Nhc3Q8aW50PigweGZmZmZmZmZmdSA8PCAo
MzEgLSBzaGlmdE9mZnNldCkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZS5zZXRJ
Q29uc3QocmV0dXJuVmFsdWUuZ2V0SUNvbnN0KCkgfCBleHRlbmRlZFNpZ25CaXQpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZS5zZXRJQ29uc3QocmhzLmlDb25zdCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IEVidFVJbnQ6CisgICAgICAgICAgICBzd2l0Y2ggKHJocy50eXBlKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAgICAgICAgICAgICAgICByZXR1cm5W
YWx1ZS5zZXRVQ29uc3QobGhzLnVDb25zdCA+PiByaHMuaUNvbnN0KTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBFYnRVSW50OgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm5WYWx1ZS5zZXRVQ29uc3QobGhzLnVDb25zdCA+PiByaHMudUNvbnN0KTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OworICAgIH0KKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKKy8vIHN0YXRpYworVENvbnN0
YW50VW5pb24gVENvbnN0YW50VW5pb246OmxzaGlmdChjb25zdCBUQ29uc3RhbnRVbmlvbiAmbGhz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUQ29uc3RhbnRV
bmlvbiAmcmhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURGlhZ25v
c3RpY3MgKmRpYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRTb3VyY2VMb2MgJmxpbmUpCit7CisgICAgVENvbnN0YW50VW5pb24gcmV0dXJuVmFsdWU7Cisg
ICAgQVNTRVJUKGxocy50eXBlID09IEVidEludCB8fCBsaHMudHlwZSA9PSBFYnRVSW50KTsKKyAg
ICBBU1NFUlQocmhzLnR5cGUgPT0gRWJ0SW50IHx8IHJocy50eXBlID09IEVidFVJbnQpOworICAg
IGlmICgocmhzLnR5cGUgPT0gRWJ0SW50ICYmIChyaHMuaUNvbnN0IDwgMCB8fCByaHMuaUNvbnN0
ID4gMzEpKSB8fAorICAgICAgICAocmhzLnR5cGUgPT0gRWJ0VUludCAmJiByaHMudUNvbnN0ID4g
MzF1KSkKKyAgICB7CisgICAgICAgIGRpYWctPmVycm9yKGxpbmUsICJVbmRlZmluZWQgc2hpZnQg
KG9wZXJhbmQgb3V0IG9mIHJhbmdlKSIsICI8PCIsICIiKTsKKyAgICAgICAgc3dpdGNoIChsaHMu
dHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CisgICAgICAgICAgICAg
ICAgcmV0dXJuVmFsdWUuc2V0SUNvbnN0KDApOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBFYnRVSW50OgorICAgICAgICAgICAgICAgIHJldHVyblZhbHVlLnNldFVD
b25zdCgwdSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IHJldHVyblZhbHVlOworICAgIH0KKworICAgIHN3aXRjaCAobGhzLnR5cGUpCisgICAgeworICAg
ICAgICBjYXNlIEVidEludDoKKyAgICAgICAgICAgIHN3aXRjaCAocmhzLnR5cGUpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgLy8gQ2FzdCB0byB1bnNpZ25lZCBpbnRlZ2VyIGJlZm9y
ZSBzaGlmdGluZywgc2luY2UgRVNTTCAzLjAwLjYgc2VjdGlvbiA1Ljkgc2F5cyB0aGF0CisgICAg
ICAgICAgICAgICAgLy8gbGhzIGlzICJpbnRlcnByZXRlZCBhcyBhIGJpdCBwYXR0ZXJuIi4gVGhp
cyBhbHNvIGF2b2lkcyB0aGUgcG9zc2liaWxpdHkgb2Ygc2lnbmVkCisgICAgICAgICAgICAgICAg
Ly8gaW50ZWdlciBvdmVyZmxvdyBvciB1bmRlZmluZWQgc2hpZnQgb2YgYSBuZWdhdGl2ZSBpbnRl
Z2VyLgorICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm5WYWx1ZS5zZXRJQ29uc3QoCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxpbnQ+KHN0YXRpY19jYXN0PHVpbnQzMl90PihsaHMuaUNvbnN0KSA8PCByaHMuaUNvbnN0KSk7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRWJ0VUlu
dDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUuc2V0SUNvbnN0KAorICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihzdGF0aWNfY2FzdDx1aW50MzJfdD4obGhz
LmlDb25zdCkgPDwgcmhzLnVDb25zdCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBFYnRV
SW50OgorICAgICAgICAgICAgc3dpdGNoIChyaHMudHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBjYXNlIEVidEludDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUu
c2V0VUNvbnN0KGxocy51Q29uc3QgPDwgcmhzLmlDb25zdCk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRWJ0VUludDoKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuVmFsdWUuc2V0VUNvbnN0KGxocy51Q29uc3QgPDwgcmhzLnVDb25zdCk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICB9CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitUQ29uc3RhbnRVbmlvbiBUQ29uc3Rh
bnRVbmlvbjo6b3BlcmF0b3ImKGNvbnN0IFRDb25zdGFudFVuaW9uICZjb25zdGFudCkgY29uc3QK
K3sKKyAgICBUQ29uc3RhbnRVbmlvbiByZXR1cm5WYWx1ZTsKKyAgICBBU1NFUlQoY29uc3RhbnQu
dHlwZSA9PSBFYnRJbnQgfHwgY29uc3RhbnQudHlwZSA9PSBFYnRVSW50KTsKKyAgICBzd2l0Y2gg
KHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEVidEludDoKKyAgICAgICAgICAgIHJldHVyblZh
bHVlLnNldElDb25zdChpQ29uc3QgJiBjb25zdGFudC5pQ29uc3QpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgRWJ0VUludDoKKyAgICAgICAgICAgIHJldHVyblZhbHVlLnNldFVD
b25zdCh1Q29uc3QgJiBjb25zdGFudC51Q29uc3QpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgIH0KKworICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKK30KKworVENvbnN0YW50VW5pb24gVENvbnN0YW50VW5pb246Om9w
ZXJhdG9yfChjb25zdCBUQ29uc3RhbnRVbmlvbiAmY29uc3RhbnQpIGNvbnN0Cit7CisgICAgVENv
bnN0YW50VW5pb24gcmV0dXJuVmFsdWU7CisgICAgQVNTRVJUKHR5cGUgPT0gY29uc3RhbnQudHlw
ZSk7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBFYnRJbnQ6CisgICAg
ICAgICAgICByZXR1cm5WYWx1ZS5zZXRJQ29uc3QoaUNvbnN0IHwgY29uc3RhbnQuaUNvbnN0KTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVidFVJbnQ6CisgICAgICAgICAgICBy
ZXR1cm5WYWx1ZS5zZXRVQ29uc3QodUNvbnN0IHwgY29uc3RhbnQudUNvbnN0KTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsK
KyAgICB9CisKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1RDb25zdGFudFVuaW9uIFRD
b25zdGFudFVuaW9uOjpvcGVyYXRvcl4oY29uc3QgVENvbnN0YW50VW5pb24gJmNvbnN0YW50KSBj
b25zdAoreworICAgIFRDb25zdGFudFVuaW9uIHJldHVyblZhbHVlOworICAgIEFTU0VSVCh0eXBl
ID09IGNvbnN0YW50LnR5cGUpOworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNh
c2UgRWJ0SW50OgorICAgICAgICAgICAgcmV0dXJuVmFsdWUuc2V0SUNvbnN0KGlDb25zdCBeIGNv
bnN0YW50LmlDb25zdCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFYnRVSW50
OgorICAgICAgICAgICAgcmV0dXJuVmFsdWUuc2V0VUNvbnN0KHVDb25zdCBeIGNvbnN0YW50LnVD
b25zdCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitU
Q29uc3RhbnRVbmlvbiBUQ29uc3RhbnRVbmlvbjo6b3BlcmF0b3ImJihjb25zdCBUQ29uc3RhbnRV
bmlvbiAmY29uc3RhbnQpIGNvbnN0Cit7CisgICAgVENvbnN0YW50VW5pb24gcmV0dXJuVmFsdWU7
CisgICAgQVNTRVJUKHR5cGUgPT0gY29uc3RhbnQudHlwZSk7CisgICAgc3dpdGNoICh0eXBlKQor
ICAgIHsKKyAgICAgICAgY2FzZSBFYnRCb29sOgorICAgICAgICAgICAgcmV0dXJuVmFsdWUuc2V0
QkNvbnN0KGJDb25zdCAmJiBjb25zdGFudC5iQ29uc3QpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgIH0KKworICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworVENvbnN0YW50VW5pb24gVENvbnN0YW50VW5pb246
Om9wZXJhdG9yfHwoY29uc3QgVENvbnN0YW50VW5pb24gJmNvbnN0YW50KSBjb25zdAoreworICAg
IFRDb25zdGFudFVuaW9uIHJldHVyblZhbHVlOworICAgIEFTU0VSVCh0eXBlID09IGNvbnN0YW50
LnR5cGUpOworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgRWJ0Qm9vbDoK
KyAgICAgICAgICAgIHJldHVyblZhbHVlLnNldEJDb25zdChiQ29uc3QgfHwgY29uc3RhbnQuYkNv
bnN0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
VU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db25zdGFu
dFVuaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvQ29uc3RhbnRVbmlvbi5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db25zdGFudFVuaW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTksNzcgKzksMTggQEAKIAogI2luY2x1ZGUgPGFzc2VydC5o
PgogCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9Db21tb24uaCIKICNpbmNsdWRlICJj
b21waWxlci90cmFuc2xhdG9yL0Jhc2VUeXBlcy5oIgogCi1jbGFzcyBUQ29uc3RhbnRVbmlvbiB7
Ci1wdWJsaWM6CitjbGFzcyBURGlhZ25vc3RpY3M7CisKK2NsYXNzIFRDb25zdGFudFVuaW9uCit7
CisgIHB1YmxpYzoKICAgICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKCk7Ci0gICAgVENvbnN0
YW50VW5pb24oKQotICAgIHsKLSAgICAgICAgaUNvbnN0ID0gMDsKLSAgICAgICAgdHlwZSA9IEVi
dFZvaWQ7Ci0gICAgfQotCi0gICAgYm9vbCBjYXN0KFRCYXNpY1R5cGUgbmV3VHlwZSwgY29uc3Qg
VENvbnN0YW50VW5pb24gJmNvbnN0YW50KQotICAgIHsKLSAgICAgICAgc3dpdGNoIChuZXdUeXBl
KQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAgIHN3aXRj
aCAoY29uc3RhbnQudHlwZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBFYnRJ
bnQ6ICAgc2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0Pihjb25zdGFudC5nZXRJQ29uc3QoKSkp
OyBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRVSW50OiAgc2V0RkNvbnN0KHN0YXRpY19j
YXN0PGZsb2F0Pihjb25zdGFudC5nZXRVQ29uc3QoKSkpOyBicmVhazsKLSAgICAgICAgICAgICAg
Y2FzZSBFYnRCb29sOiAgc2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0Pihjb25zdGFudC5nZXRC
Q29uc3QoKSkpOyBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDogc2V0RkNvbnN0
KHN0YXRpY19jYXN0PGZsb2F0Pihjb25zdGFudC5nZXRGQ29uc3QoKSkpOyBicmVhazsKLSAgICAg
ICAgICAgICAgZGVmYXVsdDogICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBFYnRJbnQ6Ci0gICAgICAgICAgICBzd2l0
Y2ggKGNvbnN0YW50LnR5cGUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0
SW50OiAgIHNldElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KGNvbnN0YW50LmdldElDb25zdCgpKSk7
IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidFVJbnQ6ICBzZXRJQ29uc3Qoc3RhdGljX2Nh
c3Q8aW50Pihjb25zdGFudC5nZXRVQ29uc3QoKSkpOyBicmVhazsKLSAgICAgICAgICAgICAgY2Fz
ZSBFYnRCb29sOiAgc2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4oY29uc3RhbnQuZ2V0QkNvbnN0
KCkpKTsgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6IHNldElDb25zdChzdGF0
aWNfY2FzdDxpbnQ+KGNvbnN0YW50LmdldEZDb25zdCgpKSk7IGJyZWFrOwotICAgICAgICAgICAg
ICBkZWZhdWx0OiAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICBjYXNlIEVidFVJbnQ6Ci0gICAgICAgICAgICBzd2l0Y2ggKGNv
bnN0YW50LnR5cGUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0SW50OiAg
IHNldFVDb25zdChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGNvbnN0YW50LmdldElDb25zdCgp
KSk7IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidFVJbnQ6ICBzZXRVQ29uc3Qoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgaW50Pihjb25zdGFudC5nZXRVQ29uc3QoKSkpOyBicmVhazsKLSAgICAg
ICAgICAgICAgY2FzZSBFYnRCb29sOiAgc2V0VUNvbnN0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGlu
dD4oY29uc3RhbnQuZ2V0QkNvbnN0KCkpKTsgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0
RmxvYXQ6IHNldFVDb25zdChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGNvbnN0YW50LmdldEZD
b25zdCgpKSk7IGJyZWFrOwotICAgICAgICAgICAgICBkZWZhdWx0OiAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEVi
dEJvb2w6Ci0gICAgICAgICAgICBzd2l0Y2ggKGNvbnN0YW50LnR5cGUpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0SW50OiAgIHNldEJDb25zdChjb25zdGFudC5nZXRJQ29u
c3QoKSAhPSAwKTsgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0VUludDogIHNldEJD
b25zdChjb25zdGFudC5nZXRVQ29uc3QoKSAhPSAwKTsgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
IGNhc2UgRWJ0Qm9vbDogIHNldEJDb25zdChjb25zdGFudC5nZXRCQ29uc3QoKSk7ICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6IHNldEJDb25zdChjb25zdGFudC5n
ZXRGQ29uc3QoKSAhPSAwLjBmKTsgYnJlYWs7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6ICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgIGNhc2UgRWJ0U3RydWN0OiAgICAvLyBTdHJ1Y3QgZmllbGRzIGRvbid0IGdldCBjYXN0Ci0g
ICAgICAgICAgICBzd2l0Y2ggKGNvbnN0YW50LnR5cGUpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgIGNhc2UgRWJ0SW50OiAgIHNldElDb25zdChjb25zdGFudC5nZXRJQ29uc3QoKSk7IGJy
ZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidFVJbnQ6ICBzZXRVQ29uc3QoY29uc3RhbnQuZ2V0
VUNvbnN0KCkpOyBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRCb29sOiAgc2V0QkNvbnN0
KGNvbnN0YW50LmdldEJDb25zdCgpKTsgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0Rmxv
YXQ6IHNldEZDb25zdChjb25zdGFudC5nZXRGQ29uc3QoKSk7IGJyZWFrOwotICAgICAgICAgICAg
ICBkZWZhdWx0OiAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICB9CisgICAgVENvbnN0YW50VW5pb24oKTsKIAotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9CisgICAgYm9vbCBjYXN0KFRCYXNpY1R5cGUgbmV3VHlwZSwgY29uc3QgVENvbnN0YW50
VW5pb24gJmNvbnN0YW50KTsKIAogICAgIHZvaWQgc2V0SUNvbnN0KGludCBpKSB7aUNvbnN0ID0g
aTsgdHlwZSA9IEVidEludDsgfQogICAgIHZvaWQgc2V0VUNvbnN0KHVuc2lnbmVkIGludCB1KSB7
IHVDb25zdCA9IHU7IHR5cGUgPSBFYnRVSW50OyB9CkBAIC05MSwyNTYgKzMyLDUzIEBAIHB1Ymxp
YzoKICAgICBmbG9hdCBnZXRGQ29uc3QoKSBjb25zdCB7IHJldHVybiBmQ29uc3Q7IH0KICAgICBi
b29sIGdldEJDb25zdCgpIGNvbnN0IHsgcmV0dXJuIGJDb25zdDsgfQogCi0gICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IGludCBpKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGkgPT0gaUNv
bnN0OwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCB1bnNpZ25lZCBpbnQgdSkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB1ID09IHVDb25zdDsKLSAgICB9Ci0KLSAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgZmxvYXQgZikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBmID09IGZDb25zdDsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgYm9vbCBi
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGIgPT0gYkNvbnN0OwotICAgIH0KLQotICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBUQ29uc3RhbnRVbmlvbiYgY29uc3RhbnQpIGNvbnN0Ci0g
ICAgewotICAgICAgICBpZiAoY29uc3RhbnQudHlwZSAhPSB0eXBlKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIEVidElu
dDoKLSAgICAgICAgICAgIHJldHVybiBjb25zdGFudC5pQ29uc3QgPT0gaUNvbnN0OwotICAgICAg
ICBjYXNlIEVidFVJbnQ6Ci0gICAgICAgICAgICByZXR1cm4gY29uc3RhbnQudUNvbnN0ID09IHVD
b25zdDsKLSAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAgIHJldHVybiBjb25zdGFu
dC5mQ29uc3QgPT0gZkNvbnN0OwotICAgICAgICBjYXNlIEVidEJvb2w6Ci0gICAgICAgICAgICBy
ZXR1cm4gY29uc3RhbnQuYkNvbnN0ID09IGJDb25zdDsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBpbnQgaSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhb3BlcmF0b3I9
PShpKTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgdW5zaWduZWQgaW50IHUp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gIW9wZXJhdG9yPT0odSk7Ci0gICAgfQotCi0g
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGZsb2F0IGYpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gIW9wZXJhdG9yPT0oZik7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IGJvb2wgYikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhb3BlcmF0b3I9PShiKTsKLSAg
ICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVENvbnN0YW50VW5pb24mIGNvbnN0YW50
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICFvcGVyYXRvcj09KGNvbnN0YW50KTsKLSAg
ICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPihjb25zdCBUQ29uc3RhbnRVbmlvbiYgY29uc3RhbnQp
IGNvbnN0Ci0gICAgeyAKLSAgICAgICAgYXNzZXJ0KHR5cGUgPT0gY29uc3RhbnQudHlwZSk7Ci0g
ICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIEVidEludDoKLSAgICAgICAgICAg
IHJldHVybiBpQ29uc3QgPiBjb25zdGFudC5pQ29uc3Q7Ci0gICAgICAgIGNhc2UgRWJ0VUludDoK
LSAgICAgICAgICAgIHJldHVybiB1Q29uc3QgPiBjb25zdGFudC51Q29uc3Q7Ci0gICAgICAgIGNh
c2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICByZXR1cm4gZkNvbnN0ID4gY29uc3RhbnQuZkNvbnN0
OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgIC8vIEludmFs
aWQgb3BlcmF0aW9uLCBoYW5kbGVkIGF0IHNlbWFudGljIGFuYWx5c2lzCi0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPChjb25zdCBUQ29uc3RhbnRVbmlvbiYgY29uc3RhbnQp
IGNvbnN0Ci0gICAgeyAKLSAgICAgICAgYXNzZXJ0KHR5cGUgPT0gY29uc3RhbnQudHlwZSk7Ci0g
ICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIEVidEludDoKLSAgICAgICAgICAg
IHJldHVybiBpQ29uc3QgPCBjb25zdGFudC5pQ29uc3Q7Ci0gICAgICAgIGNhc2UgRWJ0VUludDoK
LSAgICAgICAgICAgIHJldHVybiB1Q29uc3QgPCBjb25zdGFudC51Q29uc3Q7Ci0gICAgICAgIGNh
c2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICByZXR1cm4gZkNvbnN0IDwgY29uc3RhbnQuZkNvbnN0
OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgIC8vIEludmFs
aWQgb3BlcmF0aW9uLCBoYW5kbGVkIGF0IHNlbWFudGljIGFuYWx5c2lzCi0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBUQ29uc3RhbnRVbmlvbiBvcGVyYXRvcisoY29uc3QgVENvbnN0YW50VW5pb24m
IGNvbnN0YW50KSBjb25zdAotICAgIHsgCi0gICAgICAgIFRDb25zdGFudFVuaW9uIHJldHVyblZh
bHVlOwotICAgICAgICBhc3NlcnQodHlwZSA9PSBjb25zdGFudC50eXBlKTsKLSAgICAgICAgc3dp
dGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgRWJ0SW50OiByZXR1cm5WYWx1ZS5zZXRJQ29uc3Qo
aUNvbnN0ICsgY29uc3RhbnQuaUNvbnN0KTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRWJ0VUludDog
cmV0dXJuVmFsdWUuc2V0VUNvbnN0KHVDb25zdCArIGNvbnN0YW50LnVDb25zdCk7IGJyZWFrOwot
ICAgICAgICBjYXNlIEVidEZsb2F0OiByZXR1cm5WYWx1ZS5zZXRGQ29uc3QoZkNvbnN0ICsgY29u
c3RhbnQuZkNvbnN0KTsgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6IGFzc2VydChmYWxzZSAmJiAi
RGVmYXVsdCBtaXNzaW5nIik7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gcmV0dXJuVmFs
dWU7Ci0gICAgfQotCi0gICAgVENvbnN0YW50VW5pb24gb3BlcmF0b3ItKGNvbnN0IFRDb25zdGFu
dFVuaW9uJiBjb25zdGFudCkgY29uc3QKLSAgICB7IAotICAgICAgICBUQ29uc3RhbnRVbmlvbiBy
ZXR1cm5WYWx1ZTsKLSAgICAgICAgYXNzZXJ0KHR5cGUgPT0gY29uc3RhbnQudHlwZSk7Ci0gICAg
ICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIEVidEludDogcmV0dXJuVmFsdWUuc2V0
SUNvbnN0KGlDb25zdCAtIGNvbnN0YW50LmlDb25zdCk7IGJyZWFrOwotICAgICAgICBjYXNlIEVi
dFVJbnQ6IHJldHVyblZhbHVlLnNldFVDb25zdCh1Q29uc3QgLSBjb25zdGFudC51Q29uc3QpOyBi
cmVhazsKLSAgICAgICAgY2FzZSBFYnRGbG9hdDogcmV0dXJuVmFsdWUuc2V0RkNvbnN0KGZDb25z
dCAtIGNvbnN0YW50LmZDb25zdCk7IGJyZWFrOwotICAgICAgICBkZWZhdWx0OiBhc3NlcnQoZmFs
c2UgJiYgIkRlZmF1bHQgbWlzc2luZyIpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHJl
dHVyblZhbHVlOwotICAgIH0KLQotICAgIFRDb25zdGFudFVuaW9uIG9wZXJhdG9yKihjb25zdCBU
Q29uc3RhbnRVbmlvbiYgY29uc3RhbnQpIGNvbnN0Ci0gICAgeyAKLSAgICAgICAgVENvbnN0YW50
VW5pb24gcmV0dXJuVmFsdWU7Ci0gICAgICAgIGFzc2VydCh0eXBlID09IGNvbnN0YW50LnR5cGUp
OwotICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBFYnRJbnQ6IHJldHVyblZh
bHVlLnNldElDb25zdChpQ29uc3QgKiBjb25zdGFudC5pQ29uc3QpOyBicmVhazsKLSAgICAgICAg
Y2FzZSBFYnRVSW50OiByZXR1cm5WYWx1ZS5zZXRVQ29uc3QodUNvbnN0ICogY29uc3RhbnQudUNv
bnN0KTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRWJ0RmxvYXQ6IHJldHVyblZhbHVlLnNldEZDb25z
dChmQ29uc3QgKiBjb25zdGFudC5mQ29uc3QpOyBicmVhazsgCi0gICAgICAgIGRlZmF1bHQ6IGFz
c2VydChmYWxzZSAmJiAiRGVmYXVsdCBtaXNzaW5nIik7Ci0gICAgICAgIH0KLQotICAgICAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7Ci0gICAgfQotCi0gICAgVENvbnN0YW50VW5pb24gb3BlcmF0b3Il
KGNvbnN0IFRDb25zdGFudFVuaW9uJiBjb25zdGFudCkgY29uc3QKLSAgICB7IAotICAgICAgICBU
Q29uc3RhbnRVbmlvbiByZXR1cm5WYWx1ZTsKLSAgICAgICAgYXNzZXJ0KHR5cGUgPT0gY29uc3Rh
bnQudHlwZSk7Ci0gICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIEVidEludDog
cmV0dXJuVmFsdWUuc2V0SUNvbnN0KGlDb25zdCAlIGNvbnN0YW50LmlDb25zdCk7IGJyZWFrOwot
ICAgICAgICBjYXNlIEVidFVJbnQ6IHJldHVyblZhbHVlLnNldFVDb25zdCh1Q29uc3QgJSBjb25z
dGFudC51Q29uc3QpOyBicmVhazsKLSAgICAgICAgZGVmYXVsdDogICAgIGFzc2VydChmYWxzZSAm
JiAiRGVmYXVsdCBtaXNzaW5nIik7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gcmV0dXJu
VmFsdWU7Ci0gICAgfQotCi0gICAgVENvbnN0YW50VW5pb24gb3BlcmF0b3I+Pihjb25zdCBUQ29u
c3RhbnRVbmlvbiYgY29uc3RhbnQpIGNvbnN0Ci0gICAgeyAKLSAgICAgICAgVENvbnN0YW50VW5p
b24gcmV0dXJuVmFsdWU7Ci0gICAgICAgIGFzc2VydCh0eXBlID09IGNvbnN0YW50LnR5cGUpOwot
ICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBFYnRJbnQ6IHJldHVyblZhbHVl
LnNldElDb25zdChpQ29uc3QgPj4gY29uc3RhbnQuaUNvbnN0KTsgYnJlYWs7Ci0gICAgICAgIGNh
c2UgRWJ0VUludDogcmV0dXJuVmFsdWUuc2V0VUNvbnN0KHVDb25zdCA+PiBjb25zdGFudC51Q29u
c3QpOyBicmVhazsKLSAgICAgICAgZGVmYXVsdDogICAgIGFzc2VydChmYWxzZSAmJiAiRGVmYXVs
dCBtaXNzaW5nIik7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7Ci0g
ICAgfQotCi0gICAgVENvbnN0YW50VW5pb24gb3BlcmF0b3I8PChjb25zdCBUQ29uc3RhbnRVbmlv
biYgY29uc3RhbnQpIGNvbnN0Ci0gICAgeyAKLSAgICAgICAgVENvbnN0YW50VW5pb24gcmV0dXJu
VmFsdWU7Ci0gICAgICAgIC8vIFRoZSBzaWduZWRuZXNzIG9mIHRoZSBzZWNvbmQgcGFyYW1ldGVy
IG1pZ2h0IGJlIGRpZmZlcmVudCwgYnV0IHdlCi0gICAgICAgIC8vIGRvbid0IGNhcmUsIHNpbmNl
IHRoZSByZXN1bHQgaXMgdW5kZWZpbmVkIGlmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzCi0gICAg
ICAgIC8vIG5lZ2F0aXZlLCBhbmQgYWxpYXNpbmcgc2hvdWxkIG5vdCBiZSBhIHByb2JsZW0gd2l0
aCB1bmlvbnMuCi0gICAgICAgIGFzc2VydChjb25zdGFudC50eXBlID09IEVidEludCB8fCBjb25z
dGFudC50eXBlID09IEVidFVJbnQpOwotICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAg
Y2FzZSBFYnRJbnQ6IHJldHVyblZhbHVlLnNldElDb25zdChpQ29uc3QgPDwgY29uc3RhbnQuaUNv
bnN0KTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRWJ0VUludDogcmV0dXJuVmFsdWUuc2V0VUNvbnN0
KHVDb25zdCA8PCBjb25zdGFudC51Q29uc3QpOyBicmVhazsKLSAgICAgICAgZGVmYXVsdDogICAg
IGFzc2VydChmYWxzZSAmJiAiRGVmYXVsdCBtaXNzaW5nIik7Ci0gICAgICAgIH0KLQotICAgICAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7Ci0gICAgfQotCi0gICAgVENvbnN0YW50VW5pb24gb3BlcmF0
b3ImKGNvbnN0IFRDb25zdGFudFVuaW9uJiBjb25zdGFudCkgY29uc3QKLSAgICB7IAotICAgICAg
ICBUQ29uc3RhbnRVbmlvbiByZXR1cm5WYWx1ZTsKLSAgICAgICAgYXNzZXJ0KGNvbnN0YW50LnR5
cGUgPT0gRWJ0SW50IHx8IGNvbnN0YW50LnR5cGUgPT0gRWJ0VUludCk7Ci0gICAgICAgIHN3aXRj
aCAodHlwZSkgewotICAgICAgICBjYXNlIEVidEludDogIHJldHVyblZhbHVlLnNldElDb25zdChp
Q29uc3QgJiBjb25zdGFudC5pQ29uc3QpOyBicmVhazsKLSAgICAgICAgY2FzZSBFYnRVSW50OiAg
cmV0dXJuVmFsdWUuc2V0VUNvbnN0KHVDb25zdCAmIGNvbnN0YW50LnVDb25zdCk7IGJyZWFrOwot
ICAgICAgICBkZWZhdWx0OiAgICAgYXNzZXJ0KGZhbHNlICYmICJEZWZhdWx0IG1pc3NpbmciKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKLSAgICB9Ci0KLSAgICBU
Q29uc3RhbnRVbmlvbiBvcGVyYXRvcnwoY29uc3QgVENvbnN0YW50VW5pb24mIGNvbnN0YW50KSBj
b25zdAotICAgIHsgCi0gICAgICAgIFRDb25zdGFudFVuaW9uIHJldHVyblZhbHVlOwotICAgICAg
ICBhc3NlcnQodHlwZSA9PSBjb25zdGFudC50eXBlKTsKLSAgICAgICAgc3dpdGNoICh0eXBlKSB7
Ci0gICAgICAgIGNhc2UgRWJ0SW50OiAgcmV0dXJuVmFsdWUuc2V0SUNvbnN0KGlDb25zdCB8IGNv
bnN0YW50LmlDb25zdCk7IGJyZWFrOwotICAgICAgICBjYXNlIEVidFVJbnQ6ICByZXR1cm5WYWx1
ZS5zZXRVQ29uc3QodUNvbnN0IHwgY29uc3RhbnQudUNvbnN0KTsgYnJlYWs7Ci0gICAgICAgIGRl
ZmF1bHQ6ICAgICBhc3NlcnQoZmFsc2UgJiYgIkRlZmF1bHQgbWlzc2luZyIpOwotICAgICAgICB9
Ci0KLSAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOwotICAgIH0KLQotICAgIFRDb25zdGFudFVu
aW9uIG9wZXJhdG9yXihjb25zdCBUQ29uc3RhbnRVbmlvbiYgY29uc3RhbnQpIGNvbnN0Ci0gICAg
eyAKLSAgICAgICAgVENvbnN0YW50VW5pb24gcmV0dXJuVmFsdWU7Ci0gICAgICAgIGFzc2VydCh0
eXBlID09IGNvbnN0YW50LnR5cGUpOwotICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAg
Y2FzZSBFYnRJbnQ6ICByZXR1cm5WYWx1ZS5zZXRJQ29uc3QoaUNvbnN0IF4gY29uc3RhbnQuaUNv
bnN0KTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRWJ0VUludDogIHJldHVyblZhbHVlLnNldFVDb25z
dCh1Q29uc3QgXiBjb25zdGFudC51Q29uc3QpOyBicmVhazsKLSAgICAgICAgZGVmYXVsdDogICAg
IGFzc2VydChmYWxzZSAmJiAiRGVmYXVsdCBtaXNzaW5nIik7Ci0gICAgICAgIH0KLQotICAgICAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7Ci0gICAgfQotCi0gICAgVENvbnN0YW50VW5pb24gb3BlcmF0
b3ImJihjb25zdCBUQ29uc3RhbnRVbmlvbiYgY29uc3RhbnQpIGNvbnN0Ci0gICAgeyAKLSAgICAg
ICAgVENvbnN0YW50VW5pb24gcmV0dXJuVmFsdWU7Ci0gICAgICAgIGFzc2VydCh0eXBlID09IGNv
bnN0YW50LnR5cGUpOwotICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBFYnRC
b29sOiByZXR1cm5WYWx1ZS5zZXRCQ29uc3QoYkNvbnN0ICYmIGNvbnN0YW50LmJDb25zdCk7IGJy
ZWFrOwotICAgICAgICBkZWZhdWx0OiAgICAgYXNzZXJ0KGZhbHNlICYmICJEZWZhdWx0IG1pc3Np
bmciKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKLSAgICB9Ci0K
LSAgICBUQ29uc3RhbnRVbmlvbiBvcGVyYXRvcnx8KGNvbnN0IFRDb25zdGFudFVuaW9uJiBjb25z
dGFudCkgY29uc3QKLSAgICB7IAotICAgICAgICBUQ29uc3RhbnRVbmlvbiByZXR1cm5WYWx1ZTsK
LSAgICAgICAgYXNzZXJ0KHR5cGUgPT0gY29uc3RhbnQudHlwZSk7Ci0gICAgICAgIHN3aXRjaCAo
dHlwZSkgewotICAgICAgICBjYXNlIEVidEJvb2w6IHJldHVyblZhbHVlLnNldEJDb25zdChiQ29u
c3QgfHwgY29uc3RhbnQuYkNvbnN0KTsgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6ICAgICBhc3Nl
cnQoZmFsc2UgJiYgIkRlZmF1bHQgbWlzc2luZyIpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0
dXJuIHJldHVyblZhbHVlOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaW50IGkp
IGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCB1bnNpZ25lZCBpbnQgdSkgY29uc3Q7
CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGZsb2F0IGYpIGNvbnN0OworICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBib29sIGIpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBU
Q29uc3RhbnRVbmlvbiAmY29uc3RhbnQpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBpbnQgaSkgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHVuc2lnbmVkIGludCB1
KSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgZmxvYXQgZikgY29uc3Q7CisgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IGJvb2wgYikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFRDb25zdGFudFVuaW9uICZjb25zdGFudCkgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRv
cj4oY29uc3QgVENvbnN0YW50VW5pb24gJmNvbnN0YW50KSBjb25zdDsKKyAgICBib29sIG9wZXJh
dG9yPChjb25zdCBUQ29uc3RhbnRVbmlvbiAmY29uc3RhbnQpIGNvbnN0OworICAgIHN0YXRpYyBU
Q29uc3RhbnRVbmlvbiBhZGQoY29uc3QgVENvbnN0YW50VW5pb24gJmxocywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRDb25zdGFudFVuaW9uICZyaHMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBURGlhZ25vc3RpY3MgKmRpYWcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsaW5lKTsKKyAgICBzdGF0aWMgVENvbnN0
YW50VW5pb24gc3ViKGNvbnN0IFRDb25zdGFudFVuaW9uICZsaHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUQ29uc3RhbnRVbmlvbiAmcmhzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVERpYWdub3N0aWNzICpkaWFnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbGluZSk7CisgICAgc3RhdGljIFRDb25zdGFudFVu
aW9uIG11bChjb25zdCBUQ29uc3RhbnRVbmlvbiAmbGhzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVENvbnN0YW50VW5pb24gJnJocywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFREaWFnbm9zdGljcyAqZGlhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpOworICAgIFRDb25zdGFudFVuaW9uIG9wZXJhdG9y
JShjb25zdCBUQ29uc3RhbnRVbmlvbiAmY29uc3RhbnQpIGNvbnN0OworICAgIHN0YXRpYyBUQ29u
c3RhbnRVbmlvbiByc2hpZnQoY29uc3QgVENvbnN0YW50VW5pb24gJmxocywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRDb25zdGFudFVuaW9uICZyaHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBURGlhZ25vc3RpY3MgKmRpYWcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsaW5lKTsKKyAgICBzdGF0
aWMgVENvbnN0YW50VW5pb24gbHNoaWZ0KGNvbnN0IFRDb25zdGFudFVuaW9uICZsaHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUQ29uc3RhbnRVbmlvbiAmcmhzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVERpYWdub3N0aWNzICpkaWFnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbGluZSk7Cisg
ICAgVENvbnN0YW50VW5pb24gb3BlcmF0b3ImKGNvbnN0IFRDb25zdGFudFVuaW9uICZjb25zdGFu
dCkgY29uc3Q7CisgICAgVENvbnN0YW50VW5pb24gb3BlcmF0b3J8KGNvbnN0IFRDb25zdGFudFVu
aW9uICZjb25zdGFudCkgY29uc3Q7CisgICAgVENvbnN0YW50VW5pb24gb3BlcmF0b3JeKGNvbnN0
IFRDb25zdGFudFVuaW9uICZjb25zdGFudCkgY29uc3Q7CisgICAgVENvbnN0YW50VW5pb24gb3Bl
cmF0b3ImJihjb25zdCBUQ29uc3RhbnRVbmlvbiAmY29uc3RhbnQpIGNvbnN0OworICAgIFRDb25z
dGFudFVuaW9uIG9wZXJhdG9yfHwoY29uc3QgVENvbnN0YW50VW5pb24gJmNvbnN0YW50KSBjb25z
dDsKIAogICAgIFRCYXNpY1R5cGUgZ2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGU7IH0KLXBy
aXZhdGU6Ci0KLSAgICB1bmlvbiAgewotICAgICAgICBpbnQgaUNvbnN0OyAgLy8gdXNlZCBmb3Ig
aXZlYywgc2NhbGFyIGludHMKLSAgICAgICAgdW5zaWduZWQgaW50IHVDb25zdDsgLy8gdXNlZCBm
b3IgdXZlYywgc2NhbGFyIHVpbnRzCi0gICAgICAgIGJvb2wgYkNvbnN0OyAvLyB1c2VkIGZvciBi
dmVjLCBzY2FsYXIgYm9vbHMKLSAgICAgICAgZmxvYXQgZkNvbnN0OyAgIC8vIHVzZWQgZm9yIHZl
YywgbWF0LCBzY2FsYXIgZmxvYXRzCi0gICAgfSA7CisgIHByaXZhdGU6CisgICAgdW5pb24gewor
ICAgICAgICBpbnQgaUNvbnN0OyAgICAgICAgICAgLy8gdXNlZCBmb3IgaXZlYywgc2NhbGFyIGlu
dHMKKyAgICAgICAgdW5zaWduZWQgaW50IHVDb25zdDsgIC8vIHVzZWQgZm9yIHV2ZWMsIHNjYWxh
ciB1aW50cworICAgICAgICBib29sIGJDb25zdDsgICAgICAgICAgLy8gdXNlZCBmb3IgYnZlYywg
c2NhbGFyIGJvb2xzCisgICAgICAgIGZsb2F0IGZDb25zdDsgICAgICAgICAvLyB1c2VkIGZvciB2
ZWMsIG1hdCwgc2NhbGFyIGZsb2F0cworICAgIH07CiAKICAgICBUQmFzaWNUeXBlIHR5cGU7CiB9
OwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
RGVmZXJHbG9iYWxJbml0aWFsaXplcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0RlZmVyR2xvYmFsSW5pdGlhbGl6ZXJz
LmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvRGVmZXJHbG9iYWxJbml0aWFsaXplcnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xOCw0NSArMTgsNDkgQEAKIG5hbWVzcGFjZQogewogCi12b2lkIFNldEludGVybmFs
RnVuY3Rpb25OYW1lKFRJbnRlcm1BZ2dyZWdhdGUgKmZ1bmN0aW9uTm9kZSwgY29uc3QgY2hhciAq
bmFtZSkKK3ZvaWQgU2V0SW50ZXJuYWxGdW5jdGlvbk5hbWUoVEZ1bmN0aW9uU3ltYm9sSW5mbyAq
ZnVuY3Rpb25JbmZvLCBjb25zdCBjaGFyICpuYW1lKQogewogICAgIFRTdHJpbmcgbmFtZVN0cihu
YW1lKTsKICAgICBuYW1lU3RyID0gVEZ1bmN0aW9uOjptYW5nbGVOYW1lKG5hbWVTdHIpOwogICAg
IFROYW1lIG5hbWVPYmoobmFtZVN0cik7CiAgICAgbmFtZU9iai5zZXRJbnRlcm5hbCh0cnVlKTsK
LSAgICBmdW5jdGlvbk5vZGUtPnNldE5hbWVPYmoobmFtZU9iaik7CisgICAgZnVuY3Rpb25JbmZv
LT5zZXROYW1lT2JqKG5hbWVPYmopOwogfQogCi1USW50ZXJtQWdncmVnYXRlICpDcmVhdGVGdW5j
dGlvblByb3RvdHlwZU5vZGUoY29uc3QgY2hhciAqbmFtZSkKK1RJbnRlcm1BZ2dyZWdhdGUgKkNy
ZWF0ZUZ1bmN0aW9uUHJvdG90eXBlTm9kZShjb25zdCBjaGFyICpuYW1lLCBjb25zdCBpbnQgZnVu
Y3Rpb25JZCkKIHsKICAgICBUSW50ZXJtQWdncmVnYXRlICpmdW5jdGlvbk5vZGUgPSBuZXcgVElu
dGVybUFnZ3JlZ2F0ZShFT3BQcm90b3R5cGUpOwogCi0gICAgU2V0SW50ZXJuYWxGdW5jdGlvbk5h
bWUoZnVuY3Rpb25Ob2RlLCBuYW1lKTsKKyAgICBTZXRJbnRlcm5hbEZ1bmN0aW9uTmFtZShmdW5j
dGlvbk5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLCBuYW1lKTsKICAgICBUVHlwZSByZXR1
cm5UeXBlKEVidFZvaWQpOwogICAgIGZ1bmN0aW9uTm9kZS0+c2V0VHlwZShyZXR1cm5UeXBlKTsK
KyAgICBmdW5jdGlvbk5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5zZXRJZChmdW5jdGlv
bklkKTsKICAgICByZXR1cm4gZnVuY3Rpb25Ob2RlOwogfQogCi1USW50ZXJtQWdncmVnYXRlICpD
cmVhdGVGdW5jdGlvbkRlZmluaXRpb25Ob2RlKGNvbnN0IGNoYXIgKm5hbWUsIFRJbnRlcm1BZ2dy
ZWdhdGUgKmZ1bmN0aW9uQm9keSkKK1RJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKkNyZWF0ZUZ1
bmN0aW9uRGVmaW5pdGlvbk5vZGUoY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybUJsb2NrICpmdW5j
dGlvbkJvZHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGludCBmdW5jdGlvbklkKQogewotICAgIFRJbnRlcm1BZ2dyZWdhdGUg
KmZ1bmN0aW9uTm9kZSA9IG5ldyBUSW50ZXJtQWdncmVnYXRlKEVPcEZ1bmN0aW9uKTsKKyAgICBU
VHlwZSByZXR1cm5UeXBlKEVidFZvaWQpOwogICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnBhcmFtc05v
ZGUgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZShFT3BQYXJhbWV0ZXJzKTsKLSAgICBmdW5jdGlvbk5v
ZGUtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhwYXJhbXNOb2RlKTsKLSAgICBmdW5jdGlvbk5v
ZGUtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhmdW5jdGlvbkJvZHkpOworICAgIFRJbnRlcm1G
dW5jdGlvbkRlZmluaXRpb24gKmZ1bmN0aW9uTm9kZSA9CisgICAgICAgIG5ldyBUSW50ZXJtRnVu
Y3Rpb25EZWZpbml0aW9uKHJldHVyblR5cGUsIHBhcmFtc05vZGUsIGZ1bmN0aW9uQm9keSk7CiAK
LSAgICBTZXRJbnRlcm5hbEZ1bmN0aW9uTmFtZShmdW5jdGlvbk5vZGUsIG5hbWUpOwotICAgIFRU
eXBlIHJldHVyblR5cGUoRWJ0Vm9pZCk7Ci0gICAgZnVuY3Rpb25Ob2RlLT5zZXRUeXBlKHJldHVy
blR5cGUpOworICAgIFNldEludGVybmFsRnVuY3Rpb25OYW1lKGZ1bmN0aW9uTm9kZS0+Z2V0RnVu
Y3Rpb25TeW1ib2xJbmZvKCksIG5hbWUpOworICAgIGZ1bmN0aW9uTm9kZS0+Z2V0RnVuY3Rpb25T
eW1ib2xJbmZvKCktPnNldElkKGZ1bmN0aW9uSWQpOwogICAgIHJldHVybiBmdW5jdGlvbk5vZGU7
CiB9CiAKLVRJbnRlcm1BZ2dyZWdhdGUgKkNyZWF0ZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgY2hh
ciAqbmFtZSkKK1RJbnRlcm1BZ2dyZWdhdGUgKkNyZWF0ZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3Qg
Y2hhciAqbmFtZSwgY29uc3QgaW50IGZ1bmN0aW9uSWQpCiB7CiAgICAgVEludGVybUFnZ3JlZ2F0
ZSAqZnVuY3Rpb25Ob2RlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoRU9wRnVuY3Rpb25DYWxsKTsK
IAotICAgIFNldEludGVybmFsRnVuY3Rpb25OYW1lKGZ1bmN0aW9uTm9kZSwgbmFtZSk7CisgICAg
ZnVuY3Rpb25Ob2RlLT5zZXRVc2VyRGVmaW5lZCgpOworICAgIFNldEludGVybmFsRnVuY3Rpb25O
YW1lKGZ1bmN0aW9uTm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCksIG5hbWUpOwogICAgIFRU
eXBlIHJldHVyblR5cGUoRWJ0Vm9pZCk7CiAgICAgZnVuY3Rpb25Ob2RlLT5zZXRUeXBlKHJldHVy
blR5cGUpOworICAgIGZ1bmN0aW9uTm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPnNldElk
KGZ1bmN0aW9uSWQpOwogICAgIHJldHVybiBmdW5jdGlvbk5vZGU7CiB9CiAKQEAgLTY3LDcgKzcx
LDcgQEAgY2xhc3MgRGVmZXJHbG9iYWxJbml0aWFsaXplcnNUcmF2ZXJzZXIgOgogCiAgICAgYm9v
bCB2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkgb3ZlcnJpZGU7
CiAKLSAgICB2b2lkIGluc2VydEluaXRGdW5jdGlvbihUSW50ZXJtTm9kZSAqcm9vdCk7CisgICAg
dm9pZCBpbnNlcnRJbml0RnVuY3Rpb24oVEludGVybUJsb2NrICpyb290KTsKIAogICBwcml2YXRl
OgogICAgIFRJbnRlcm1TZXF1ZW5jZSBtRGVmZXJyZWRJbml0aWFsaXplcnM7CkBAIC04Niw3NCAr
OTAsOTMgQEAgYm9vbCBEZWZlckdsb2JhbEluaXRpYWxpemVyc1RyYXZlcnNlcjo6dgogICAgICAg
ICBBU1NFUlQoc3ltYm9sTm9kZSk7CiAgICAgICAgIFRJbnRlcm1UeXBlZCAqZXhwcmVzc2lvbiA9
IG5vZGUtPmdldFJpZ2h0KCk7CiAKLSAgICAgICAgaWYgKHN5bWJvbE5vZGUtPmdldFF1YWxpZmll
cigpID09IEV2cUdsb2JhbCAmJgotICAgICAgICAgICAgKGV4cHJlc3Npb24tPmdldFF1YWxpZmll
cigpICE9IEV2cUNvbnN0IHx8IGV4cHJlc3Npb24tPmdldEFzQ29uc3RhbnRVbmlvbigpID09IG51
bGxwdHIpKQorICAgICAgICBpZiAobUluR2xvYmFsU2NvcGUgJiYgKGV4cHJlc3Npb24tPmdldFF1
YWxpZmllcigpICE9IEV2cUNvbnN0IHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGV4cHJlc3Npb24tPmdldEFzQ29uc3RhbnRVbmlvbigpID09IG51bGxwdHIgJiYKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIWV4cHJlc3Npb24tPmlzQ29uc3RydWN0b3JXaXRoT25s
eUNvbnN0YW50VW5pb25QYXJhbWV0ZXJzKCkpKSkKICAgICAgICAgewogICAgICAgICAgICAgLy8g
Rm9yIHZhcmlhYmxlcyB3aGljaCBhcmUgbm90IGNvbnN0YW50LCBkZWZlciB0aGVpciByZWFsIGlu
aXRpYWxpemF0aW9uIHVudGlsCiAgICAgICAgICAgICAvLyBhZnRlciB3ZSBpbml0aWFsaXplIHVu
aWZvcm1zLgogICAgICAgICAgICAgLy8gRGVmZXJyYWwgaXMgZG9uZSBhbHNvIGluIGFueSBjYXNl
cyB3aGVyZSB0aGUgdmFyaWFibGUgaGFzIG5vdCBiZWVuIGNvbnN0YW50IGZvbGRlZCwKICAgICAg
ICAgICAgIC8vIHNpbmNlIG90aGVyd2lzZSB0aGVyZSdzIGEgY2hhbmNlIHRoYXQgSExTTCBvdXRw
dXQgd2lsbCBnZW5lcmF0ZSBleHRyYSBzdGF0ZW1lbnRzCiAgICAgICAgICAgICAvLyBmcm9tIHRo
ZSBpbml0aWFsaXplciBleHByZXNzaW9uLgotICAgICAgICAgICAgVEludGVybUJpbmFyeSAqZGVm
ZXJyZWRJbml0ID0gbmV3IFRJbnRlcm1CaW5hcnkoRU9wQXNzaWduKTsKLSAgICAgICAgICAgIGRl
ZmVycmVkSW5pdC0+c2V0TGVmdChub2RlLT5nZXRMZWZ0KCktPmRlZXBDb3B5KCkpOwotICAgICAg
ICAgICAgZGVmZXJyZWRJbml0LT5zZXRSaWdodChub2RlLT5nZXRSaWdodCgpKTsKLSAgICAgICAg
ICAgIGRlZmVycmVkSW5pdC0+c2V0VHlwZShub2RlLT5nZXRUeXBlKCkpOworICAgICAgICAgICAg
VEludGVybUJpbmFyeSAqZGVmZXJyZWRJbml0ID0KKyAgICAgICAgICAgICAgICBuZXcgVEludGVy
bUJpbmFyeShFT3BBc3NpZ24sIHN5bWJvbE5vZGUtPmRlZXBDb3B5KCksIG5vZGUtPmdldFJpZ2h0
KCkpOwogICAgICAgICAgICAgbURlZmVycmVkSW5pdGlhbGl6ZXJzLnB1c2hfYmFjayhkZWZlcnJl
ZEluaXQpOwogCisgICAgICAgICAgICAvLyBDaGFuZ2UgY29uc3QgZ2xvYmFsIHRvIGEgcmVndWxh
ciBnbG9iYWwgaWYgaXRzIGluaXRpYWxpemF0aW9uIGlzIGRlZmVycmVkLgorICAgICAgICAgICAg
Ly8gVGhpcyBjYW4gaGFwcGVuIGlmIEFOR0xFIGhhcyBub3QgYmVlbiBhYmxlIHRvIGZvbGQgdGhl
IGNvbnN0YW50IGV4cHJlc3Npb24gdXNlZAorICAgICAgICAgICAgLy8gYXMgYW4gaW5pdGlhbGl6
ZXIuCisgICAgICAgICAgICBBU1NFUlQoc3ltYm9sTm9kZS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZx
Q29uc3QgfHwKKyAgICAgICAgICAgICAgICAgICBzeW1ib2xOb2RlLT5nZXRRdWFsaWZpZXIoKSA9
PSBFdnFHbG9iYWwpOworICAgICAgICAgICAgaWYgKHN5bWJvbE5vZGUtPmdldFF1YWxpZmllcigp
ID09IEV2cUNvbnN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIEFsbCBvZiB0
aGUgc2libGluZ3MgaW4gdGhlIHNhbWUgZGVjbGFyYXRpb24gbmVlZCB0byBoYXZlIGNvbnNpc3Rl
bnQgcXVhbGlmaWVycy4KKyAgICAgICAgICAgICAgICBhdXRvICpzaWJsaW5ncyA9IGdldFBhcmVu
dE5vZGUoKS0+Z2V0QXNBZ2dyZWdhdGUoKS0+Z2V0U2VxdWVuY2UoKTsKKyAgICAgICAgICAgICAg
ICBmb3IgKFRJbnRlcm1Ob2RlICpzaWJsaW5nTm9kZSA6ICpzaWJsaW5ncykKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1CaW5hcnkgKnNpYmxpbmdCaW5hcnkg
PSBzaWJsaW5nTm9kZS0+Z2V0QXNCaW5hcnlOb2RlKCk7CisgICAgICAgICAgICAgICAgICAgIGlm
IChzaWJsaW5nQmluYXJ5KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoc2libGluZ0JpbmFyeS0+Z2V0T3AoKSA9PSBFT3BJbml0aWFsaXplKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNpYmxpbmdCaW5hcnktPmdldExlZnQoKS0+Z2V0VHlw
ZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVyKEV2cUdsb2JhbCk7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgc2libGluZ05vZGUtPmdldEFzVHlwZWQoKS0+Z2V0VHlw
ZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVyKEV2cUdsb2JhbCk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIC8vIFRoaXMgbm9kZSBpcyBvbmUgb2YgdGhlIHNpYmxpbmdzLgorICAg
ICAgICAgICAgICAgIEFTU0VSVChzeW1ib2xOb2RlLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFHbG9i
YWwpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBpbml0aWFsaXpl
ciBmcm9tIHRoZSBnbG9iYWwgc2NvcGUgYW5kIGp1c3QgZGVjbGFyZSB0aGUgZ2xvYmFsIGluc3Rl
YWQuCi0gICAgICAgICAgICBtUmVwbGFjZW1lbnRzLnB1c2hfYmFjayhOb2RlVXBkYXRlRW50cnko
Z2V0UGFyZW50Tm9kZSgpLCBub2RlLCBub2RlLT5nZXRMZWZ0KCksIGZhbHNlKSk7CisgICAgICAg
ICAgICBxdWV1ZVJlcGxhY2VtZW50KG5vZGUsIHN5bWJvbE5vZGUsIE9yaWdpbmFsTm9kZTo6SVNf
RFJPUFBFRCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lk
IERlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzVHJhdmVyc2VyOjppbnNlcnRJbml0RnVuY3Rpb24oVElu
dGVybU5vZGUgKnJvb3QpCit2b2lkIERlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzVHJhdmVyc2VyOjpp
bnNlcnRJbml0RnVuY3Rpb24oVEludGVybUJsb2NrICpyb290KQogewogICAgIGlmIChtRGVmZXJy
ZWRJbml0aWFsaXplcnMuZW1wdHkoKSkKICAgICB7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgVEludGVybUFnZ3JlZ2F0ZSAqcm9vdEFnZyA9IHJvb3QtPmdldEFzQWdncmVnYXRlKCk7Ci0g
ICAgQVNTRVJUKHJvb3RBZ2cgIT0gbnVsbHB0ciAmJiByb290QWdnLT5nZXRPcCgpID09IEVPcFNl
cXVlbmNlKTsKKyAgICBjb25zdCBpbnQgaW5pdEZ1bmN0aW9uSWQgID0gVFN5bWJvbFRhYmxlOjpu
ZXh0VW5pcXVlSWQoKTsKIAogICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uTmFtZSA9ICJpbml0aWFs
aXplRGVmZXJyZWRHbG9iYWxzIjsKIAogICAgIC8vIEFkZCBmdW5jdGlvbiBwcm90b3R5cGUgdG8g
dGhlIGJlZ2lubmluZyBvZiB0aGUgc2hhZGVyCi0gICAgVEludGVybUFnZ3JlZ2F0ZSAqZnVuY3Rp
b25Qcm90b3R5cGVOb2RlID0gQ3JlYXRlRnVuY3Rpb25Qcm90b3R5cGVOb2RlKGZ1bmN0aW9uTmFt
ZSk7Ci0gICAgcm9vdEFnZy0+Z2V0U2VxdWVuY2UoKS0+aW5zZXJ0KHJvb3RBZ2ctPmdldFNlcXVl
bmNlKCktPmJlZ2luKCksIGZ1bmN0aW9uUHJvdG90eXBlTm9kZSk7CisgICAgVEludGVybUFnZ3Jl
Z2F0ZSAqZnVuY3Rpb25Qcm90b3R5cGVOb2RlID0KKyAgICAgICAgQ3JlYXRlRnVuY3Rpb25Qcm90
b3R5cGVOb2RlKGZ1bmN0aW9uTmFtZSwgaW5pdEZ1bmN0aW9uSWQpOworICAgIHJvb3QtPmdldFNl
cXVlbmNlKCktPmluc2VydChyb290LT5nZXRTZXF1ZW5jZSgpLT5iZWdpbigpLCBmdW5jdGlvblBy
b3RvdHlwZU5vZGUpOwogCiAgICAgLy8gQWRkIGZ1bmN0aW9uIGRlZmluaXRpb24gdG8gdGhlIGVu
ZCBvZiB0aGUgc2hhZGVyCi0gICAgVEludGVybUFnZ3JlZ2F0ZSAqZnVuY3Rpb25Cb2R5Tm9kZSA9
IG5ldyBUSW50ZXJtQWdncmVnYXRlKEVPcFNlcXVlbmNlKTsKKyAgICBUSW50ZXJtQmxvY2sgKmZ1
bmN0aW9uQm9keU5vZGUgPSBuZXcgVEludGVybUJsb2NrKCk7CiAgICAgVEludGVybVNlcXVlbmNl
ICpmdW5jdGlvbkJvZHkgPSBmdW5jdGlvbkJvZHlOb2RlLT5nZXRTZXF1ZW5jZSgpOwogICAgIGZv
ciAoY29uc3QgYXV0byAmZGVmZXJyZWRJbml0IDogbURlZmVycmVkSW5pdGlhbGl6ZXJzKQogICAg
IHsKICAgICAgICAgZnVuY3Rpb25Cb2R5LT5wdXNoX2JhY2soZGVmZXJyZWRJbml0KTsKICAgICB9
Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSAqZnVuY3Rpb25EZWZpbml0aW9uID0KLSAgICAgICAgQ3Jl
YXRlRnVuY3Rpb25EZWZpbml0aW9uTm9kZShmdW5jdGlvbk5hbWUsIGZ1bmN0aW9uQm9keU5vZGUp
OwotICAgIHJvb3RBZ2ctPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhmdW5jdGlvbkRlZmluaXRp
b24pOworICAgIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKmZ1bmN0aW9uRGVmaW5pdGlvbiA9
CisgICAgICAgIENyZWF0ZUZ1bmN0aW9uRGVmaW5pdGlvbk5vZGUoZnVuY3Rpb25OYW1lLCBmdW5j
dGlvbkJvZHlOb2RlLCBpbml0RnVuY3Rpb25JZCk7CisgICAgcm9vdC0+Z2V0U2VxdWVuY2UoKS0+
cHVzaF9iYWNrKGZ1bmN0aW9uRGVmaW5pdGlvbik7CiAKICAgICAvLyBJbnNlcnQgY2FsbCBpbnRv
IG1haW4gZnVuY3Rpb24KLSAgICBmb3IgKFRJbnRlcm1Ob2RlICpub2RlIDogKnJvb3RBZ2ctPmdl
dFNlcXVlbmNlKCkpCisgICAgZm9yIChUSW50ZXJtTm9kZSAqbm9kZSA6ICpyb290LT5nZXRTZXF1
ZW5jZSgpKQogICAgIHsKLSAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZUFnZyA9IG5vZGUt
PmdldEFzQWdncmVnYXRlKCk7Ci0gICAgICAgIGlmIChub2RlQWdnICE9IG51bGxwdHIgJiYgbm9k
ZUFnZy0+Z2V0T3AoKSA9PSBFT3BGdW5jdGlvbiAmJgotICAgICAgICAgICAgVEZ1bmN0aW9uOjp1
bm1hbmdsZU5hbWUobm9kZUFnZy0+Z2V0TmFtZSgpKSA9PSAibWFpbiIpCisgICAgICAgIFRJbnRl
cm1GdW5jdGlvbkRlZmluaXRpb24gKm5vZGVGdW5jdGlvbiA9IG5vZGUtPmdldEFzRnVuY3Rpb25E
ZWZpbml0aW9uKCk7CisgICAgICAgIGlmIChub2RlRnVuY3Rpb24gIT0gbnVsbHB0ciAmJiBub2Rl
RnVuY3Rpb24tPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5pc01haW4oKSkKICAgICAgICAgewot
ICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqZnVuY3Rpb25DYWxsTm9kZSA9IENyZWF0ZUZ1
bmN0aW9uQ2FsbE5vZGUoZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdh
dGUgKmZ1bmN0aW9uQ2FsbE5vZGUgPQorICAgICAgICAgICAgICAgIENyZWF0ZUZ1bmN0aW9uQ2Fs
bE5vZGUoZnVuY3Rpb25OYW1lLCBpbml0RnVuY3Rpb25JZCk7CiAKLSAgICAgICAgICAgIFRJbnRl
cm1Ob2RlICptYWluQm9keSAgICAgICAgID0gbm9kZUFnZy0+Z2V0U2VxdWVuY2UoKS0+YmFjaygp
OwotICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqbWFpbkJvZHlBZ2cgPSBtYWluQm9keS0+
Z2V0QXNBZ2dyZWdhdGUoKTsKLSAgICAgICAgICAgIEFTU0VSVChtYWluQm9keUFnZyAhPSBudWxs
cHRyICYmIG1haW5Cb2R5QWdnLT5nZXRPcCgpID09IEVPcFNlcXVlbmNlKTsKLSAgICAgICAgICAg
IG1haW5Cb2R5QWdnLT5nZXRTZXF1ZW5jZSgpLT5pbnNlcnQobWFpbkJvZHlBZ2ctPmdldFNlcXVl
bmNlKCktPmJlZ2luKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uQ2FsbE5vZGUpOworICAgICAgICAgICAgVEludGVybUJsb2NrICptYWlu
Qm9keSA9IG5vZGVGdW5jdGlvbi0+Z2V0Qm9keSgpOworICAgICAgICAgICAgQVNTRVJUKG1haW5C
b2R5ICE9IG51bGxwdHIpOworICAgICAgICAgICAgbWFpbkJvZHktPmdldFNlcXVlbmNlKCktPmlu
c2VydChtYWluQm9keS0+Z2V0U2VxdWVuY2UoKS0+YmVnaW4oKSwgZnVuY3Rpb25DYWxsTm9kZSk7
CiAgICAgICAgIH0KICAgICB9CiB9CiAKIH0gIC8vIG5hbWVzcGFjZQogCi12b2lkIERlZmVyR2xv
YmFsSW5pdGlhbGl6ZXJzKFRJbnRlcm1Ob2RlICpyb290KQordm9pZCBEZWZlckdsb2JhbEluaXRp
YWxpemVycyhUSW50ZXJtQmxvY2sgKnJvb3QpCiB7CiAgICAgRGVmZXJHbG9iYWxJbml0aWFsaXpl
cnNUcmF2ZXJzZXIgdHJhdmVyc2VyOwogICAgIHJvb3QtPnRyYXZlcnNlKCZ0cmF2ZXJzZXIpOwpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRGVm
ZXJHbG9iYWxJbml0aWFsaXplcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9EZWZlckdsb2JhbEluaXRpYWxpemVycy5oCShy
ZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9EZWZlckdsb2JhbEluaXRpYWxpemVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
Myw4ICsxMyw4IEBACiAjaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFUT1JfREVGRVJHTE9CQUxJTklU
SUFMSVpFUlNfSF8KICNkZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9ERUZFUkdMT0JBTElOSVRJ
QUxJWkVSU19IXwogCi1jbGFzcyBUSW50ZXJtTm9kZTsKK2NsYXNzIFRJbnRlcm1CbG9jazsKIAot
dm9pZCBEZWZlckdsb2JhbEluaXRpYWxpemVycyhUSW50ZXJtTm9kZSAqcm9vdCk7Cit2b2lkIERl
ZmVyR2xvYmFsSW5pdGlhbGl6ZXJzKFRJbnRlcm1CbG9jayAqcm9vdCk7CiAKICNlbmRpZiAgLy8g
Q09NUElMRVJfVFJBTlNMQVRPUl9ERUZFUkdMT0JBTElOSVRJQUxJWkVSU19IXwpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRGlhZ25vc3RpY3Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL0RpYWdub3N0aWNzLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRGlhZ25vc3RpY3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03LDggKzcsOSBAQAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0
b3IvRGlhZ25vc3RpY3MuaCIKIAogI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgotI2luY2x1ZGUg
ImNvbXBpbGVyL3RyYW5zbGF0b3IvSW5mb1NpbmsuaCIKICNpbmNsdWRlICJjb21waWxlci9wcmVw
cm9jZXNzb3IvU291cmNlTG9jYXRpb24uaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9y
L0NvbW1vbi5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW5mb1NpbmsuaCIKIAog
VERpYWdub3N0aWNzOjpURGlhZ25vc3RpY3MoVEluZm9TaW5rJiBpbmZvU2luaykgOgogICAgIG1J
bmZvU2luayhpbmZvU2luayksCkBAIC01MCw2ICs1MSwyOCBAQCB2b2lkIFREaWFnbm9zdGljczo6
d3JpdGVJbmZvKFNldmVyaXR5IHNlCiAgICAgc2luayA8PCAiJyIgPDwgdG9rZW4gPDwgICInIDog
IiA8PCByZWFzb24gPDwgIiAiIDw8IGV4dHJhIDw8ICJcbiI7CiB9CiAKK3ZvaWQgVERpYWdub3N0
aWNzOjplcnJvcihjb25zdCBUU291cmNlTG9jICZsb2MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciAqcmVhc29uLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIgKnRva2VuLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmV4dHJhSW5m
bykKK3sKKyAgICBwcDo6U291cmNlTG9jYXRpb24gc3JjTG9jOworICAgIHNyY0xvYy5maWxlID0g
bG9jLmZpcnN0X2ZpbGU7CisgICAgc3JjTG9jLmxpbmUgPSBsb2MuZmlyc3RfbGluZTsKKyAgICB3
cml0ZUluZm8ocHA6OkRpYWdub3N0aWNzOjpQUF9FUlJPUiwgc3JjTG9jLCByZWFzb24sIHRva2Vu
LCBleHRyYUluZm8pOworfQorCit2b2lkIFREaWFnbm9zdGljczo6d2FybmluZyhjb25zdCBUU291
cmNlTG9jICZsb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFz
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b2tlbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmV4dHJhSW5mbykKK3sKKyAgICBwcDo6
U291cmNlTG9jYXRpb24gc3JjTG9jOworICAgIHNyY0xvYy5maWxlID0gbG9jLmZpcnN0X2ZpbGU7
CisgICAgc3JjTG9jLmxpbmUgPSBsb2MuZmlyc3RfbGluZTsKKyAgICB3cml0ZUluZm8ocHA6OkRp
YWdub3N0aWNzOjpQUF9XQVJOSU5HLCBzcmNMb2MsIHJlYXNvbiwgdG9rZW4sIGV4dHJhSW5mbyk7
Cit9CisKIHZvaWQgVERpYWdub3N0aWNzOjpwcmludChJRCBpZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBwcDo6U291cmNlTG9jYXRpb24mIGxvYywKICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdGV4dCkKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0RpYWdub3N0aWNzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRGlhZ25v
c3RpY3MuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvRGlhZ25vc3RpY3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTEs
NiArMTEsNyBAQAogI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9EaWFnbm9zdGljc0Jh
c2UuaCIKIAogY2xhc3MgVEluZm9TaW5rOworc3RydWN0IFRTb3VyY2VMb2M7CiAKIGNsYXNzIFRE
aWFnbm9zdGljcyA6IHB1YmxpYyBwcDo6RGlhZ25vc3RpY3MsIGFuZ2xlOjpOb25Db3B5YWJsZQog
ewpAQCAtMjksNiArMzAsMTIgQEAgY2xhc3MgVERpYWdub3N0aWNzIDogcHVibGljIHBwOjpEaWFn
bm9zdAogICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0b2tlbiwKICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZXh0cmEpOwogCisgICAgdm9pZCBlcnJv
cihjb25zdCBUU291cmNlTG9jICZsb2MsIGNvbnN0IGNoYXIgKnJlYXNvbiwgY29uc3QgY2hhciAq
dG9rZW4sIGNvbnN0IGNoYXIgKmV4dHJhSW5mbyk7CisgICAgdm9pZCB3YXJuaW5nKGNvbnN0IFRT
b3VyY2VMb2MgJmxvYywKKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uLAorICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b2tlbiwKKyAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciAqZXh0cmFJbmZvKTsKKwogICBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBwcmludChJRCBpZCwg
Y29uc3QgcHA6OlNvdXJjZUxvY2F0aW9uICZsb2MsIGNvbnN0IHN0ZDo6c3RyaW5nICZ0ZXh0KSBv
dmVycmlkZTsKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvRGlyZWN0aXZlSGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRGlyZWN0aXZlSGFuZGxlci5jcHAJ
KHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL0RpcmVjdGl2ZUhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIs
OCArMTgyLDcgQEAgdm9pZCBURGlyZWN0aXZlSGFuZGxlcjo6aGFuZGxlRXh0ZW5zaW9uKAogdm9p
ZCBURGlyZWN0aXZlSGFuZGxlcjo6aGFuZGxlVmVyc2lvbihjb25zdCBwcDo6U291cmNlTG9jYXRp
b24mIGxvYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZlcnNp
b24pCiB7Ci0gICAgaWYgKHZlcnNpb24gPT0gMTAwIHx8Ci0gICAgICAgIHZlcnNpb24gPT0gMzAw
KQorICAgIGlmICh2ZXJzaW9uID09IDEwMCB8fCB2ZXJzaW9uID09IDMwMCB8fCB2ZXJzaW9uID09
IDMxMCkKICAgICB7CiAgICAgICAgIG1TaGFkZXJWZXJzaW9uID0gdmVyc2lvbjsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9FbXVs
YXRlR0xGcmFnQ29sb3JCcm9hZGNhc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0VtdWxhdGVHTEZyYWdDb2xvckJyb2Fk
Y2FzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDEzMiBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDE2
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIGdsX0ZyYWdD
b2xvciBuZWVkcyB0byBicm9hZGNhc3QgdG8gYWxsIGNvbG9yIGJ1ZmZlcnMgaW4gRVMyIGlmCisv
LyBHTF9FWFRfZHJhd19idWZmZXJzIGlzIGV4cGxpY2l0bHkgZW5hYmxlZCBpbiBhIGZyYWdtZW50
IHNoYWRlci4KKy8vCisvLyBXZSBlbXVsYXRlIHRoaXMgYnkgcmVwbGFjaW5nIGFsbCBnbF9GcmFn
Q29sb3Igd2l0aCBnbF9GcmFnRGF0YVswXSwgYW5kIGluIHRoZSBlbmQKKy8vIG9mIG1haW4oKSBm
dW5jdGlvbiwgYXNzaWduaW5nIGdsX0ZyYWdEYXRhWzFdLCAuLi4sIGdsX0ZyYWdEYXRhW21heERy
YXdCdWZmZXJzLTFdCisvLyB3aXRoIGdsX0ZyYWdEYXRhWzBdLgorLy8KKworI2luY2x1ZGUgImNv
bXBpbGVyL3RyYW5zbGF0b3IvRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0LmgiCisjaW5jbHVk
ZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCisKK25hbWVzcGFjZQoreworCitj
bGFzcyBHTEZyYWdDb2xvckJyb2FkY2FzdFRyYXZlcnNlciA6IHB1YmxpYyBUSW50ZXJtVHJhdmVy
c2VyCit7CisgIHB1YmxpYzoKKyAgICBHTEZyYWdDb2xvckJyb2FkY2FzdFRyYXZlcnNlcihpbnQg
bWF4RHJhd0J1ZmZlcnMpCisgICAgICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwg
ZmFsc2UpLAorICAgICAgICAgIG1NYWluU2VxdWVuY2UobnVsbHB0ciksCisgICAgICAgICAgbUdM
RnJhZ0NvbG9yVXNlZChmYWxzZSksCisgICAgICAgICAgbU1heERyYXdCdWZmZXJzKG1heERyYXdC
dWZmZXJzKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGJyb2FkY2FzdEdMRnJhZ0NvbG9yKCk7
CisKKyAgICBib29sIGlzR0xGcmFnQ29sb3JVc2VkKCkgY29uc3QgeyByZXR1cm4gbUdMRnJhZ0Nv
bG9yVXNlZDsgfQorCisgIHByb3RlY3RlZDoKKyAgICB2b2lkIHZpc2l0U3ltYm9sKFRJbnRlcm1T
eW1ib2wgKm5vZGUpIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRGdW5jdGlvbkRlZmluaXRpb24o
VmlzaXQgdmlzaXQsIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKm5vZGUpIG92ZXJyaWRlOwor
CisgICAgVEludGVybUJpbmFyeSAqY29uc3RydWN0R0xGcmFnRGF0YU5vZGUoaW50IGluZGV4KSBj
b25zdDsKKyAgICBUSW50ZXJtQmluYXJ5ICpjb25zdHJ1Y3RHTEZyYWdEYXRhQXNzaWduTm9kZShp
bnQgaW5kZXgpIGNvbnN0OworCisgIHByaXZhdGU6CisgICAgVEludGVybVNlcXVlbmNlICptTWFp
blNlcXVlbmNlOworICAgIGJvb2wgbUdMRnJhZ0NvbG9yVXNlZDsKKyAgICBpbnQgbU1heERyYXdC
dWZmZXJzOworfTsKKworVEludGVybUJpbmFyeSAqR0xGcmFnQ29sb3JCcm9hZGNhc3RUcmF2ZXJz
ZXI6OmNvbnN0cnVjdEdMRnJhZ0RhdGFOb2RlKGludCBpbmRleCkgY29uc3QKK3sKKyAgICBUVHlw
ZSBnbF9GcmFnRGF0YVR5cGUgPSBUVHlwZShFYnRGbG9hdCwgRWJwTWVkaXVtLCBFdnFGcmFnRGF0
YSwgNCk7CisgICAgZ2xfRnJhZ0RhdGFUeXBlLnNldEFycmF5U2l6ZShtTWF4RHJhd0J1ZmZlcnMp
OworCisgICAgVEludGVybVN5bWJvbCAqc3ltYm9sICAgPSBuZXcgVEludGVybVN5bWJvbCgwLCAi
Z2xfRnJhZ0RhdGEiLCBnbF9GcmFnRGF0YVR5cGUpOworICAgIFRJbnRlcm1UeXBlZCAqaW5kZXhO
b2RlID0gVEludGVybVR5cGVkOjpDcmVhdGVJbmRleE5vZGUoaW5kZXgpOworCisgICAgVEludGVy
bUJpbmFyeSAqYmluYXJ5ID0gbmV3IFRJbnRlcm1CaW5hcnkoRU9wSW5kZXhEaXJlY3QsIHN5bWJv
bCwgaW5kZXhOb2RlKTsKKyAgICByZXR1cm4gYmluYXJ5OworfQorCitUSW50ZXJtQmluYXJ5ICpH
TEZyYWdDb2xvckJyb2FkY2FzdFRyYXZlcnNlcjo6Y29uc3RydWN0R0xGcmFnRGF0YUFzc2lnbk5v
ZGUoaW50IGluZGV4KSBjb25zdAoreworICAgIFRJbnRlcm1UeXBlZCAqZnJhZ0RhdGFJbmRleCA9
IGNvbnN0cnVjdEdMRnJhZ0RhdGFOb2RlKGluZGV4KTsKKyAgICBUSW50ZXJtVHlwZWQgKmZyYWdE
YXRhWmVybyAgPSBjb25zdHJ1Y3RHTEZyYWdEYXRhTm9kZSgwKTsKKworICAgIHJldHVybiBuZXcg
VEludGVybUJpbmFyeShFT3BBc3NpZ24sIGZyYWdEYXRhSW5kZXgsIGZyYWdEYXRhWmVybyk7Cit9
CisKK3ZvaWQgR0xGcmFnQ29sb3JCcm9hZGNhc3RUcmF2ZXJzZXI6OnZpc2l0U3ltYm9sKFRJbnRl
cm1TeW1ib2wgKm5vZGUpCit7CisgICAgaWYgKG5vZGUtPmdldFN5bWJvbCgpID09ICJnbF9GcmFn
Q29sb3IiKQorICAgIHsKKyAgICAgICAgcXVldWVSZXBsYWNlbWVudChub2RlLCBjb25zdHJ1Y3RH
TEZyYWdEYXRhTm9kZSgwKSwgT3JpZ2luYWxOb2RlOjpJU19EUk9QUEVEKTsKKyAgICAgICAgbUdM
RnJhZ0NvbG9yVXNlZCA9IHRydWU7CisgICAgfQorfQorCitib29sIEdMRnJhZ0NvbG9yQnJvYWRj
YXN0VHJhdmVyc2VyOjp2aXNpdEZ1bmN0aW9uRGVmaW5pdGlvbihWaXNpdCB2aXNpdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJ
bnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKm5vZGUpCit7CisgICAgQVNTRVJUKHZpc2l0ID09IFBy
ZVZpc2l0KTsKKyAgICBpZiAobm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmlzTWFpbigp
KQorICAgIHsKKyAgICAgICAgVEludGVybUJsb2NrICpib2R5ID0gbm9kZS0+Z2V0Qm9keSgpOwor
ICAgICAgICBBU1NFUlQoYm9keSk7CisgICAgICAgIG1NYWluU2VxdWVuY2UgPSBib2R5LT5nZXRT
ZXF1ZW5jZSgpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBHTEZyYWdDb2xv
ckJyb2FkY2FzdFRyYXZlcnNlcjo6YnJvYWRjYXN0R0xGcmFnQ29sb3IoKQoreworICAgIEFTU0VS
VChtTWF4RHJhd0J1ZmZlcnMgPiAxKTsKKyAgICBpZiAoIW1HTEZyYWdDb2xvclVzZWQpCisgICAg
eworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVChtTWFpblNlcXVlbmNlKTsKKyAg
ICAvLyBOb3cgaW5zZXJ0IHN0YXRlbWVudHMKKyAgICAvLyAgIGdsX0ZyYWdEYXRhWzFdID0gZ2xf
RnJhZ0RhdGFbMF07CisgICAgLy8gICAuLi4KKyAgICAvLyAgIGdsX0ZyYWdEYXRhW21heERyYXdC
dWZmZXJzIC0gMV0gPSBnbF9GcmFnRGF0YVswXTsKKyAgICBmb3IgKGludCBjb2xvckluZGV4ID0g
MTsgY29sb3JJbmRleCA8IG1NYXhEcmF3QnVmZmVyczsgKytjb2xvckluZGV4KQorICAgIHsKKyAg
ICAgICAgbU1haW5TZXF1ZW5jZS0+aW5zZXJ0KG1NYWluU2VxdWVuY2UtPmVuZCgpLCBjb25zdHJ1
Y3RHTEZyYWdEYXRhQXNzaWduTm9kZShjb2xvckluZGV4KSk7CisgICAgfQorfQorCit9ICAvLyBu
YW1lc3BhY2UgYW5vbnltb3VzCisKK3ZvaWQgRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0KFRJ
bnRlcm1Ob2RlICpyb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1h
eERyYXdCdWZmZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0
b3I8c2g6Ok91dHB1dFZhcmlhYmxlPiAqb3V0cHV0VmFyaWFibGVzKQoreworICAgIEFTU0VSVCht
YXhEcmF3QnVmZmVycyA+IDEpOworICAgIEdMRnJhZ0NvbG9yQnJvYWRjYXN0VHJhdmVyc2VyIHRy
YXZlcnNlcihtYXhEcmF3QnVmZmVycyk7CisgICAgcm9vdC0+dHJhdmVyc2UoJnRyYXZlcnNlcik7
CisgICAgaWYgKHRyYXZlcnNlci5pc0dMRnJhZ0NvbG9yVXNlZCgpKQorICAgIHsKKyAgICAgICAg
dHJhdmVyc2VyLnVwZGF0ZVRyZWUoKTsKKyAgICAgICAgdHJhdmVyc2VyLmJyb2FkY2FzdEdMRnJh
Z0NvbG9yKCk7CisgICAgICAgIGZvciAoYXV0byAmdmFyIDogKm91dHB1dFZhcmlhYmxlcykKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKHZhci5uYW1lID09ICJnbF9GcmFnQ29sb3IiKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIFRPRE8oem1vKTogRmluZCBhIHdheSB0byBr
ZWVwIHRoZSBvcmlnaW5hbCB2YXJpYWJsZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICB2
YXIubmFtZSAgICAgICA9ICJnbF9GcmFnRGF0YSI7CisgICAgICAgICAgICAgICAgdmFyLm1hcHBl
ZE5hbWUgPSAiZ2xfRnJhZ0RhdGEiOworICAgICAgICAgICAgICAgIHZhci5hcnJheVNpemUgID0g
bWF4RHJhd0J1ZmZlcnM7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9FbXVsYXRl
R0xGcmFnQ29sb3JCcm9hZGNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9FbXVsYXRlR0xGcmFnQ29sb3JCcm9hZGNhc3Qu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9FbXVsYXRlR0xGcmFnQ29sb3JCcm9hZGNhc3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDI5IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gRW11bGF0ZSBnbF9GcmFnQ29s
b3IgYnJvYWRjYXN0IGJlaGF2aW9ycyBpbiBFUzIgd2hlcmUKKy8vIEdMX0VYVF9kcmF3X2J1ZmZl
cnMgaXMgZXhwbGljaXRseSBlbmFibGVkIGluIGEgZnJhZ21lbnQgc2hhZGVyLgorLy8KKworI2lm
bmRlZiBDT01QSUxFUl9UUkFOU0xBVE9SX0VNVUxBVEVHTEZSQUdDT0xPUkJST0FEQ0FTVF9IXwor
I2RlZmluZSBDT01QSUxFUl9UUkFOU0xBVE9SX0VNVUxBVEVHTEZSQUdDT0xPUkJST0FEQ0FTVF9I
XworCisjaW5jbHVkZSA8dmVjdG9yPgorCituYW1lc3BhY2Ugc2gKK3sKK3N0cnVjdCBPdXRwdXRW
YXJpYWJsZTsKK30KKworY2xhc3MgVEludGVybU5vZGU7CisKKy8vIFJlcGxhY2UgYWxsIGdsX0Zy
YWdDb2xvciB3aXRoIGdsX0ZyYWdEYXRhWzBdLCBhbmQgaW4gdGhlIGVuZCBvZiBtYWluKCkgZnVu
Y3Rpb24sCisvLyBhc3NpZ24gZ2xfRnJhZ0RhdGFbMV0gLi4uIGdsX0ZyYWdEYXRhW21heERyYXdC
dWZmZXJzIC0gMV0gd2l0aCBnbF9GcmFnRGF0YVswXS4KKy8vIElmIGdsX0ZyYWdDb2xvciBpcyBp
biBvdXRwdXRWYXJpYWJsZXMsIGl0IGlzIHJlcGxhY2VkIGJ5IGdsX0ZyYWdEYXRhLgordm9pZCBF
bXVsYXRlR0xGcmFnQ29sb3JCcm9hZGNhc3QoVEludGVybU5vZGUgKnJvb3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWF4RHJhd0J1ZmZlcnMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxzaDo6T3V0cHV0VmFyaWFibGU+ICpvdXRw
dXRWYXJpYWJsZXMpOworCisjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfRU1VTEFURUdM
RlJBR0NPTE9SQlJPQURDQVNUX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9FbXVsYXRlUHJlY2lzaW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9FbXVsYXRlUHJl
Y2lzaW9uLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRW11bGF0ZVByZWNpc2lvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYsODggKzYsMjAzIEBACiAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0Vt
dWxhdGVQcmVjaXNpb24uaCIKIAorI2luY2x1ZGUgPG1lbW9yeT4KKwogbmFtZXNwYWNlCiB7CiAK
LXN0YXRpYyB2b2lkIHdyaXRlVmVjdG9yUHJlY2lzaW9uRW11bGF0aW9uSGVscGVycygKLSAgICBU
SW5mb1NpbmtCYXNlJiBzaW5rLCBTaFNoYWRlck91dHB1dCBvdXRwdXRMYW5ndWFnZSwgdW5zaWdu
ZWQgaW50IHNpemUpCitjbGFzcyBSb3VuZGluZ0hlbHBlcldyaXRlciA6IGFuZ2xlOjpOb25Db3B5
YWJsZQogewotICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHZlY1R5cGVTdHJTdHI7Ci0gICAgaWYgKG91
dHB1dExhbmd1YWdlID09IFNIX0VTU0xfT1VUUFVUKQotICAgICAgICB2ZWNUeXBlU3RyU3RyIDw8
ICJoaWdocCAiOwotICAgIHZlY1R5cGVTdHJTdHIgPDwgInZlYyIgPDwgc2l6ZTsKLSAgICBzdGQ6
OnN0cmluZyB2ZWNUeXBlID0gdmVjVHlwZVN0clN0ci5zdHIoKTsKKyAgcHVibGljOgorICAgIHN0
YXRpYyBSb3VuZGluZ0hlbHBlcldyaXRlciAqY3JlYXRlSGVscGVyV3JpdGVyKGNvbnN0IFNoU2hh
ZGVyT3V0cHV0IG91dHB1dExhbmd1YWdlKTsKIAotICAgIHNpbmsgPDwKLSAgICB2ZWNUeXBlIDw8
ICIgYW5nbGVfZnJtKGluICIgPDwgdmVjVHlwZSA8PCAiIHYpIHtcbiIKLSAgICAiICAgIHYgPSBj
bGFtcCh2LCAtNjU1MDQuMCwgNjU1MDQuMCk7XG4iCi0gICAgIiAgICAiIDw8IHZlY1R5cGUgPDwg
IiBleHBvbmVudCA9IGZsb29yKGxvZzIoYWJzKHYpICsgMWUtMzApKSAtIDEwLjA7XG4iCi0gICAg
IiAgICBidmVjIiA8PCBzaXplIDw8ICIgaXNOb25aZXJvID0gZ3JlYXRlclRoYW5FcXVhbChleHBv
bmVudCwgdmVjIiA8PCBzaXplIDw8ICIoLTI1LjApKTtcbiIKLSAgICAiICAgIHYgPSB2ICogZXhw
MigtZXhwb25lbnQpO1xuIgotICAgICIgICAgdiA9IHNpZ24odikgKiBmbG9vcihhYnModikpO1xu
IgotICAgICIgICAgcmV0dXJuIHYgKiBleHAyKGV4cG9uZW50KSAqIHZlYyIgPDwgc2l6ZSA8PCAi
KGlzTm9uWmVybyk7XG4iCi0gICAgIn1cbiI7CisgICAgdm9pZCB3cml0ZUNvbW1vblJvdW5kaW5n
SGVscGVycyhUSW5mb1NpbmtCYXNlICZzaW5rLCBjb25zdCBpbnQgc2hhZGVyVmVyc2lvbik7Cisg
ICAgdm9pZCB3cml0ZUNvbXBvdW5kQXNzaWdubWVudEhlbHBlcihUSW5mb1NpbmtCYXNlICZzaW5r
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbFR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpy
VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg
Km9wU3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciAqb3BOYW1lU3RyKTsKKworICAgIHZpcnR1YWwgflJvdW5kaW5nSGVscGVyV3JpdGVyKCkge30K
KworICBwcm90ZWN0ZWQ6CisgICAgUm91bmRpbmdIZWxwZXJXcml0ZXIoY29uc3QgU2hTaGFkZXJP
dXRwdXQgb3V0cHV0TGFuZ3VhZ2UpIDogbU91dHB1dExhbmd1YWdlKG91dHB1dExhbmd1YWdlKSB7
fQorICAgIFJvdW5kaW5nSGVscGVyV3JpdGVyKCkgPSBkZWxldGU7CisKKyAgICBjb25zdCBTaFNo
YWRlck91dHB1dCBtT3V0cHV0TGFuZ3VhZ2U7CisKKyAgcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHN0
ZDo6c3RyaW5nIGdldFR5cGVTdHJpbmcoY29uc3QgY2hhciAqZ2xzbFR5cGUpICAgICA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHdyaXRlRmxvYXRSb3VuZGluZ0hlbHBlcnMoVEluZm9TaW5rQmFzZSAm
c2luaykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3cml0ZVZlY3RvclJvdW5kaW5nSGVscGVycyhU
SW5mb1NpbmtCYXNlICZzaW5rLCBjb25zdCB1bnNpZ25lZCBpbnQgc2l6ZSkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCB3cml0ZU1hdHJpeFJvdW5kaW5nSGVscGVyKFRJbmZvU2lua0Jhc2UgJnNpbmss
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWdu
ZWQgaW50IGNvbHVtbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgdW5zaWduZWQgaW50IHJvd3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnVuY3Rpb25OYW1lKSA9IDA7Cit9OworCitjbGFz
cyBSb3VuZGluZ0hlbHBlcldyaXRlckdMU0wgOiBwdWJsaWMgUm91bmRpbmdIZWxwZXJXcml0ZXIK
K3sKKyAgcHVibGljOgorICAgIFJvdW5kaW5nSGVscGVyV3JpdGVyR0xTTChjb25zdCBTaFNoYWRl
ck91dHB1dCBvdXRwdXRMYW5ndWFnZSkKKyAgICAgICAgOiBSb3VuZGluZ0hlbHBlcldyaXRlcihv
dXRwdXRMYW5ndWFnZSkKKyAgICB7CisgICAgfQogCi0gICAgc2luayA8PAotICAgIHZlY1R5cGUg
PDwgIiBhbmdsZV9mcmwoaW4gIiA8PCB2ZWNUeXBlIDw8ICIgdikge1xuIgotICAgICIgICAgdiA9
IGNsYW1wKHYsIC0yLjAsIDIuMCk7XG4iCi0gICAgIiAgICB2ID0gdiAqIDI1Ni4wO1xuIgotICAg
ICIgICAgdiA9IHNpZ24odikgKiBmbG9vcihhYnModikpO1xuIgotICAgICIgICAgcmV0dXJuIHYg
KiAwLjAwMzkwNjI1O1xuIgotICAgICJ9XG4iOwotfQorICBwcml2YXRlOgorICAgIHN0ZDo6c3Ry
aW5nIGdldFR5cGVTdHJpbmcoY29uc3QgY2hhciAqZ2xzbFR5cGUpIG92ZXJyaWRlOworICAgIHZv
aWQgd3JpdGVGbG9hdFJvdW5kaW5nSGVscGVycyhUSW5mb1NpbmtCYXNlICZzaW5rKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHdyaXRlVmVjdG9yUm91bmRpbmdIZWxwZXJzKFRJbmZvU2lua0Jhc2UgJnNp
bmssIGNvbnN0IHVuc2lnbmVkIGludCBzaXplKSBvdmVycmlkZTsKKyAgICB2b2lkIHdyaXRlTWF0
cml4Um91bmRpbmdIZWxwZXIoVEluZm9TaW5rQmFzZSAmc2luaywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IGNvbHVtbnMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCByb3dzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmdW5jdGlvbk5hbWUpIG92
ZXJyaWRlOworfTsKKworY2xhc3MgUm91bmRpbmdIZWxwZXJXcml0ZXJFU1NMIDogcHVibGljIFJv
dW5kaW5nSGVscGVyV3JpdGVyR0xTTAoreworICBwdWJsaWM6CisgICAgUm91bmRpbmdIZWxwZXJX
cml0ZXJFU1NMKGNvbnN0IFNoU2hhZGVyT3V0cHV0IG91dHB1dExhbmd1YWdlKQorICAgICAgICA6
IFJvdW5kaW5nSGVscGVyV3JpdGVyR0xTTChvdXRwdXRMYW5ndWFnZSkKKyAgICB7CisgICAgfQog
Ci1zdGF0aWMgdm9pZCB3cml0ZU1hdHJpeFByZWNpc2lvbkVtdWxhdGlvbkhlbHBlcigKLSAgICBU
SW5mb1NpbmtCYXNlJiBzaW5rLCBTaFNoYWRlck91dHB1dCBvdXRwdXRMYW5ndWFnZSwgdW5zaWdu
ZWQgaW50IHNpemUsIGNvbnN0IGNoYXIgKmZ1bmN0aW9uTmFtZSkKLXsKLSAgICBzdGQ6OnN0cmlu
Z3N0cmVhbSBtYXRUeXBlU3RyU3RyOwotICAgIGlmIChvdXRwdXRMYW5ndWFnZSA9PSBTSF9FU1NM
X09VVFBVVCkKLSAgICAgICAgbWF0VHlwZVN0clN0ciA8PCAiaGlnaHAgIjsKLSAgICBtYXRUeXBl
U3RyU3RyIDw8ICJtYXQiIDw8IHNpemU7Ci0gICAgc3RkOjpzdHJpbmcgbWF0VHlwZSA9IG1hdFR5
cGVTdHJTdHIuc3RyKCk7CisgIHByaXZhdGU6CisgICAgc3RkOjpzdHJpbmcgZ2V0VHlwZVN0cmlu
Zyhjb25zdCBjaGFyICpnbHNsVHlwZSkgb3ZlcnJpZGU7Cit9OworCitjbGFzcyBSb3VuZGluZ0hl
bHBlcldyaXRlckhMU0wgOiBwdWJsaWMgUm91bmRpbmdIZWxwZXJXcml0ZXIKK3sKKyAgcHVibGlj
OgorICAgIFJvdW5kaW5nSGVscGVyV3JpdGVySExTTChjb25zdCBTaFNoYWRlck91dHB1dCBvdXRw
dXRMYW5ndWFnZSkKKyAgICAgICAgOiBSb3VuZGluZ0hlbHBlcldyaXRlcihvdXRwdXRMYW5ndWFn
ZSkKKyAgICB7CisgICAgfQogCi0gICAgc2luayA8PCBtYXRUeXBlIDw8ICIgIiA8PCBmdW5jdGlv
bk5hbWUgPDwgIihpbiAiIDw8IG1hdFR5cGUgPDwgIiBtKSB7XG4iCi0gICAgICAgICAgICAiICAg
ICIgPDwgbWF0VHlwZSA8PCAiIHJvdW5kZWQ7XG4iOworICBwcml2YXRlOgorICAgIHN0ZDo6c3Ry
aW5nIGdldFR5cGVTdHJpbmcoY29uc3QgY2hhciAqZ2xzbFR5cGUpIG92ZXJyaWRlOworICAgIHZv
aWQgd3JpdGVGbG9hdFJvdW5kaW5nSGVscGVycyhUSW5mb1NpbmtCYXNlICZzaW5rKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHdyaXRlVmVjdG9yUm91bmRpbmdIZWxwZXJzKFRJbmZvU2lua0Jhc2UgJnNp
bmssIGNvbnN0IHVuc2lnbmVkIGludCBzaXplKSBvdmVycmlkZTsKKyAgICB2b2lkIHdyaXRlTWF0
cml4Um91bmRpbmdIZWxwZXIoVEluZm9TaW5rQmFzZSAmc2luaywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IGNvbHVtbnMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCByb3dzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmdW5jdGlvbk5hbWUpIG92
ZXJyaWRlOworfTsKIAotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytp
KQorUm91bmRpbmdIZWxwZXJXcml0ZXIgKlJvdW5kaW5nSGVscGVyV3JpdGVyOjpjcmVhdGVIZWxw
ZXJXcml0ZXIoY29uc3QgU2hTaGFkZXJPdXRwdXQgb3V0cHV0TGFuZ3VhZ2UpCit7CisgICAgQVNT
RVJUKEVtdWxhdGVQcmVjaXNpb246OlN1cHBvcnRlZEluTGFuZ3VhZ2Uob3V0cHV0TGFuZ3VhZ2Up
KTsKKyAgICBzd2l0Y2ggKG91dHB1dExhbmd1YWdlKQogICAgIHsKLSAgICAgICAgc2luayA8PCAi
ICAgIHJvdW5kZWRbIiA8PCBpIDw8ICJdID0gIiA8PCBmdW5jdGlvbk5hbWUgPDwgIihtWyIgPDwg
aSA8PCAiXSk7XG4iOworICAgICAgICBjYXNlIFNIX0hMU0xfNF8xX09VVFBVVDoKKyAgICAgICAg
ICAgIHJldHVybiBuZXcgUm91bmRpbmdIZWxwZXJXcml0ZXJITFNMKG91dHB1dExhbmd1YWdlKTsK
KyAgICAgICAgY2FzZSBTSF9FU1NMX09VVFBVVDoKKyAgICAgICAgICAgIHJldHVybiBuZXcgUm91
bmRpbmdIZWxwZXJXcml0ZXJFU1NMKG91dHB1dExhbmd1YWdlKTsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIHJldHVybiBuZXcgUm91bmRpbmdIZWxwZXJXcml0ZXJHTFNMKG91dHB1dExh
bmd1YWdlKTsKICAgICB9Ci0KLSAgICBzaW5rIDw8ICIgICAgcmV0dXJuIHJvdW5kZWQ7XG4iCi0g
ICAgICAgICAgICAifVxuIjsKIH0KIAotc3RhdGljIHZvaWQgd3JpdGVDb21tb25QcmVjaXNpb25F
bXVsYXRpb25IZWxwZXJzKFRJbmZvU2lua0Jhc2UmIHNpbmssIFNoU2hhZGVyT3V0cHV0IG91dHB1
dExhbmd1YWdlKQordm9pZCBSb3VuZGluZ0hlbHBlcldyaXRlcjo6d3JpdGVDb21tb25Sb3VuZGlu
Z0hlbHBlcnMoVEluZm9TaW5rQmFzZSAmc2luaywgY29uc3QgaW50IHNoYWRlclZlcnNpb24pCiB7
CiAgICAgLy8gV3JpdGUgdGhlIGFuZ2xlX2ZybSBmdW5jdGlvbnMgdGhhdCByb3VuZCBmbG9hdGlu
ZyBwb2ludCBudW1iZXJzIHRvCiAgICAgLy8gaGFsZiBwcmVjaXNpb24sIGFuZCBhbmdsZV9mcmwg
ZnVuY3Rpb25zIHRoYXQgcm91bmQgdGhlbSB0byBtaW5pbXVtIGxvd3AKICAgICAvLyBwcmVjaXNp
b24uCiAKKyAgICB3cml0ZUZsb2F0Um91bmRpbmdIZWxwZXJzKHNpbmspOworICAgIHdyaXRlVmVj
dG9yUm91bmRpbmdIZWxwZXJzKHNpbmssIDIpOworICAgIHdyaXRlVmVjdG9yUm91bmRpbmdIZWxw
ZXJzKHNpbmssIDMpOworICAgIHdyaXRlVmVjdG9yUm91bmRpbmdIZWxwZXJzKHNpbmssIDQpOwor
ICAgIGlmIChzaGFkZXJWZXJzaW9uID4gMTAwKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgY29sdW1ucyA9IDI7IGNvbHVtbnMgPD0gNDsgKytjb2x1bW5zKQorICAgICAgICB7Cisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCByb3dzID0gMjsgcm93cyA8PSA0OyArK3Jvd3Mp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgd3JpdGVNYXRyaXhSb3VuZGluZ0hlbHBl
cihzaW5rLCBjb2x1bW5zLCByb3dzLCAiYW5nbGVfZnJtIik7CisgICAgICAgICAgICAgICAgd3Jp
dGVNYXRyaXhSb3VuZGluZ0hlbHBlcihzaW5rLCBjb2x1bW5zLCByb3dzLCAiYW5nbGVfZnJsIik7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpbnQgc2l6ZSA9IDI7IHNpemUgPD0gNDsgKytzaXplKQorICAgICAg
ICB7CisgICAgICAgICAgICB3cml0ZU1hdHJpeFJvdW5kaW5nSGVscGVyKHNpbmssIHNpemUsIHNp
emUsICJhbmdsZV9mcm0iKTsKKyAgICAgICAgICAgIHdyaXRlTWF0cml4Um91bmRpbmdIZWxwZXIo
c2luaywgc2l6ZSwgc2l6ZSwgImFuZ2xlX2ZybCIpOworICAgICAgICB9CisgICAgfQorfQorCit2
b2lkIFJvdW5kaW5nSGVscGVyV3JpdGVyOjp3cml0ZUNvbXBvdW5kQXNzaWdubWVudEhlbHBlcihU
SW5mb1NpbmtCYXNlICZzaW5rLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbFR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyVHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIgKm9wU3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqb3BOYW1lU3RyKQoreworICAgIHN0
ZDo6c3RyaW5nIGxUeXBlU3RyID0gZ2V0VHlwZVN0cmluZyhsVHlwZSk7CisgICAgc3RkOjpzdHJp
bmcgclR5cGVTdHIgPSBnZXRUeXBlU3RyaW5nKHJUeXBlKTsKKworICAgIC8vIE5vdGUgdGhhdCB5
IHNob3VsZCBiZSBwYXNzZWQgdGhyb3VnaCBhbmdsZV9mcm0gYXQgdGhlIGZ1bmN0aW9uIGNhbGwg
c2l0ZSwKKyAgICAvLyBidXQgeCBjYW4ndCBiZSBwYXNzZWQgdGhyb3VnaCBhbmdsZV9mcm0gdGhl
cmUgc2luY2UgaXQgaXMgYW4gaW5vdXQgcGFyYW1ldGVyLgorICAgIC8vIFNvIG9ubHkgcGFzcyB4
IGFuZCB0aGUgcmVzdWx0IHRocm91Z2ggYW5nbGVfZnJtIGhlcmUuCisgICAgLy8gY2xhbmctZm9y
bWF0IG9mZgorICAgIHNpbmsgPDwKKyAgICAgICAgbFR5cGVTdHIgPDwgIiBhbmdsZV9jb21wb3Vu
ZF8iIDw8IG9wTmFtZVN0ciA8PCAiX2ZybShpbm91dCAiIDw8IGxUeXBlU3RyIDw8ICIgeCwgaW4g
IiA8PCByVHlwZVN0ciA8PCAiIHkpIHtcbiIKKyAgICAgICAgIiAgICB4ID0gYW5nbGVfZnJtKGFu
Z2xlX2ZybSh4KSAiIDw8IG9wU3RyIDw8ICIgeSk7XG4iCisgICAgICAgICIgICAgcmV0dXJuIHg7
XG4iCisgICAgICAgICJ9XG4iOworICAgIHNpbmsgPDwKKyAgICAgICAgbFR5cGVTdHIgPDwgIiBh
bmdsZV9jb21wb3VuZF8iIDw8IG9wTmFtZVN0ciA8PCAiX2ZybChpbm91dCAiIDw8IGxUeXBlU3Ry
IDw8ICIgeCwgaW4gIiA8PCByVHlwZVN0ciA8PCAiIHkpIHtcbiIKKyAgICAgICAgIiAgICB4ID0g
YW5nbGVfZnJsKGFuZ2xlX2ZybSh4KSAiIDw8IG9wU3RyIDw8ICIgeSk7XG4iCisgICAgICAgICIg
ICAgcmV0dXJuIHg7XG4iCisgICAgICAgICJ9XG4iOworICAgIC8vIGNsYW5nLWZvcm1hdCBvbgor
fQorCitzdGQ6OnN0cmluZyBSb3VuZGluZ0hlbHBlcldyaXRlckdMU0w6OmdldFR5cGVTdHJpbmco
Y29uc3QgY2hhciAqZ2xzbFR5cGUpCit7CisgICAgcmV0dXJuIGdsc2xUeXBlOworfQorCitzdGQ6
OnN0cmluZyBSb3VuZGluZ0hlbHBlcldyaXRlckVTU0w6OmdldFR5cGVTdHJpbmcoY29uc3QgY2hh
ciAqZ2xzbFR5cGUpCit7CisgICAgc3RkOjpzdHJpbmdzdHJlYW0gdHlwZVN0clN0cjsKKyAgICB0
eXBlU3RyU3RyIDw8ICJoaWdocCAiIDw8IGdsc2xUeXBlOworICAgIHJldHVybiB0eXBlU3RyU3Ry
LnN0cigpOworfQorCit2b2lkIFJvdW5kaW5nSGVscGVyV3JpdGVyR0xTTDo6d3JpdGVGbG9hdFJv
dW5kaW5nSGVscGVycyhUSW5mb1NpbmtCYXNlICZzaW5rKQorewogICAgIC8vIFVub3B0aW1pemVk
IHZlcnNpb24gb2YgYW5nbGVfZnJtIGZvciBzaW5nbGUgZmxvYXRzOgogICAgIC8vCi0gICAgLy8g
aW50IHdlYmdsX21heE5vcm1hbEV4cG9uZW50KGluIGludCBleHBvbmVudEJpdHMpIHsKKyAgICAv
LyBpbnQgd2ViZ2xfbWF4Tm9ybWFsRXhwb25lbnQoaW4gaW50IGV4cG9uZW50Qml0cykKKyAgICAv
LyB7CiAgICAgLy8gICAgIGludCBwb3NzaWJsZUV4cG9uZW50cyA9IGludChleHAyKGZsb2F0KGV4
cG9uZW50Qml0cykpKTsKICAgICAvLyAgICAgaW50IGV4cG9uZW50QmlhcyA9IHBvc3NpYmxlRXhw
b25lbnRzIC8gMiAtIDE7CiAgICAgLy8gICAgIGludCBhbGxFeHBvbmVudEJpdHNPbmUgPSBwb3Nz
aWJsZUV4cG9uZW50cyAtIDE7CiAgICAgLy8gICAgIHJldHVybiAoYWxsRXhwb25lbnRCaXRzT25l
IC0gMSkgLSBleHBvbmVudEJpYXM7CiAgICAgLy8gfQogICAgIC8vCi0gICAgLy8gZmxvYXQgYW5n
bGVfZnJtKGluIGZsb2F0IHgpIHsKKyAgICAvLyBmbG9hdCBhbmdsZV9mcm0oaW4gZmxvYXQgeCkK
KyAgICAvLyB7CiAgICAgLy8gICAgIGludCBtYW50aXNzYUJpdHMgPSAxMDsKICAgICAvLyAgICAg
aW50IGV4cG9uZW50Qml0cyA9IDU7CiAgICAgLy8gICAgIGZsb2F0IHBvc3NpYmxlTWFudGlzc2Fz
ID0gZXhwMihmbG9hdChtYW50aXNzYUJpdHMpKTsKICAgICAvLyAgICAgZmxvYXQgbWFudGlzc2FN
YXggPSAyLjAgLSAxLjAgLyBwb3NzaWJsZU1hbnRpc3NhczsKICAgICAvLyAgICAgaW50IG1heE5F
ID0gd2ViZ2xfbWF4Tm9ybWFsRXhwb25lbnQoZXhwb25lbnRCaXRzKTsKICAgICAvLyAgICAgZmxv
YXQgbWF4ID0gZXhwMihmbG9hdChtYXhORSkpICogbWFudGlzc2FNYXg7Ci0gICAgLy8gICAgIGlm
ICh4ID4gbWF4KSB7CisgICAgLy8gICAgIGlmICh4ID4gbWF4KQorICAgIC8vICAgICB7CiAgICAg
Ly8gICAgICAgICByZXR1cm4gbWF4OwogICAgIC8vICAgICB9Ci0gICAgLy8gICAgIGlmICh4IDwg
LW1heCkgeworICAgIC8vICAgICBpZiAoeCA8IC1tYXgpCisgICAgLy8gICAgIHsKICAgICAvLyAg
ICAgICAgIHJldHVybiAtbWF4OwogICAgIC8vICAgICB9CiAgICAgLy8gICAgIGZsb2F0IGV4cG9u
ZW50ID0gZmxvb3IobG9nMihhYnMoeCkpKTsKLSAgICAvLyAgICAgaWYgKGFicyh4KSA9PSAwLjAg
fHwgZXhwb25lbnQgPCAtZmxvYXQobWF4TkUpKSB7CisgICAgLy8gICAgIGlmIChhYnMoeCkgPT0g
MC4wIHx8IGV4cG9uZW50IDwgLWZsb2F0KG1heE5FKSkKKyAgICAvLyAgICAgewogICAgIC8vICAg
ICAgICAgcmV0dXJuIDAuMCAqIHNpZ24oeCkKICAgICAvLyAgICAgfQogICAgIC8vICAgICB4ID0g
eCAqIGV4cDIoLShleHBvbmVudCAtIGZsb2F0KG1hbnRpc3NhQml0cykpKTsKQEAgLTEwOSwxMzAg
KzIyNCwyMDQgQEAgc3RhdGljIHZvaWQgd3JpdGVDb21tb25QcmVjaXNpb25FbXVsYXRpbwogICAg
IC8vICAgIG51bWJlcnMgd2lsbCBiZSBmbHVzaGVkIHRvIHplcm8gZWl0aGVyIHdheSAoMl4tMTUg
aXMgdGhlIHNtYWxsZXN0CiAgICAgLy8gICAgbm9ybWFsIHBvc2l0aXZlIG51bWJlciksIHRoaXMg
ZG9lcyBub3QgaW50cm9kdWNlIGFueSBlcnJvci4KIAotICAgIHN0ZDo6c3RyaW5nIGZsb2F0VHlw
ZSA9ICJmbG9hdCI7Ci0gICAgaWYgKG91dHB1dExhbmd1YWdlID09IFNIX0VTU0xfT1VUUFVUKQot
ICAgICAgICBmbG9hdFR5cGUgPSAiaGlnaHAgZmxvYXQiOworICAgIHN0ZDo6c3RyaW5nIGZsb2F0
VHlwZSA9IGdldFR5cGVTdHJpbmcoImZsb2F0Iik7CisKKyAgICAvLyBjbGFuZy1mb3JtYXQgb2Zm
CisgICAgc2luayA8PAorICAgICAgICBmbG9hdFR5cGUgPDwgIiBhbmdsZV9mcm0oaW4gIiA8PCBm
bG9hdFR5cGUgPDwgIiB4KSB7XG4iCisgICAgICAgICIgICAgeCA9IGNsYW1wKHgsIC02NTUwNC4w
LCA2NTUwNC4wKTtcbiIKKyAgICAgICAgIiAgICAiIDw8IGZsb2F0VHlwZSA8PCAiIGV4cG9uZW50
ID0gZmxvb3IobG9nMihhYnMoeCkgKyAxZS0zMCkpIC0gMTAuMDtcbiIKKyAgICAgICAgIiAgICBi
b29sIGlzTm9uWmVybyA9IChleHBvbmVudCA+PSAtMjUuMCk7XG4iCisgICAgICAgICIgICAgeCA9
IHggKiBleHAyKC1leHBvbmVudCk7XG4iCisgICAgICAgICIgICAgeCA9IHNpZ24oeCkgKiBmbG9v
cihhYnMoeCkpO1xuIgorICAgICAgICAiICAgIHJldHVybiB4ICogZXhwMihleHBvbmVudCkgKiBm
bG9hdChpc05vblplcm8pO1xuIgorICAgICAgICAifVxuIjsKKworICAgIHNpbmsgPDwKKyAgICAg
ICAgZmxvYXRUeXBlIDw8ICIgYW5nbGVfZnJsKGluICIgPDwgZmxvYXRUeXBlIDw8ICIgeCkge1xu
IgorICAgICAgICAiICAgIHggPSBjbGFtcCh4LCAtMi4wLCAyLjApO1xuIgorICAgICAgICAiICAg
IHggPSB4ICogMjU2LjA7XG4iCisgICAgICAgICIgICAgeCA9IHNpZ24oeCkgKiBmbG9vcihhYnMo
eCkpO1xuIgorICAgICAgICAiICAgIHJldHVybiB4ICogMC4wMDM5MDYyNTtcbiIKKyAgICAgICAg
In1cbiI7CisgICAgLy8gY2xhbmctZm9ybWF0IG9uCit9CisKK3ZvaWQgUm91bmRpbmdIZWxwZXJX
cml0ZXJHTFNMOjp3cml0ZVZlY3RvclJvdW5kaW5nSGVscGVycyhUSW5mb1NpbmtCYXNlICZzaW5r
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVuc2lnbmVkIGludCBzaXplKQoreworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHZl
Y1R5cGVTdHJTdHI7CisgICAgdmVjVHlwZVN0clN0ciA8PCAidmVjIiA8PCBzaXplOworICAgIHN0
ZDo6c3RyaW5nIHZlY1R5cGUgPSBnZXRUeXBlU3RyaW5nKHZlY1R5cGVTdHJTdHIuc3RyKCkuY19z
dHIoKSk7CiAKKyAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCiAgICAgc2luayA8PAotICAgIGZsb2F0
VHlwZSA8PCAiIGFuZ2xlX2ZybShpbiAiIDw8IGZsb2F0VHlwZSA8PCAiIHgpIHtcbiIKLSAgICAi
ICAgIHggPSBjbGFtcCh4LCAtNjU1MDQuMCwgNjU1MDQuMCk7XG4iCi0gICAgIiAgICAiIDw8IGZs
b2F0VHlwZSA8PCAiIGV4cG9uZW50ID0gZmxvb3IobG9nMihhYnMoeCkgKyAxZS0zMCkpIC0gMTAu
MDtcbiIKLSAgICAiICAgIGJvb2wgaXNOb25aZXJvID0gKGV4cG9uZW50ID49IC0yNS4wKTtcbiIK
LSAgICAiICAgIHggPSB4ICogZXhwMigtZXhwb25lbnQpO1xuIgotICAgICIgICAgeCA9IHNpZ24o
eCkgKiBmbG9vcihhYnMoeCkpO1xuIgotICAgICIgICAgcmV0dXJuIHggKiBleHAyKGV4cG9uZW50
KSAqIGZsb2F0KGlzTm9uWmVybyk7XG4iCi0gICAgIn1cbiI7CisgICAgICAgIHZlY1R5cGUgPDwg
IiBhbmdsZV9mcm0oaW4gIiA8PCB2ZWNUeXBlIDw8ICIgdikge1xuIgorICAgICAgICAiICAgIHYg
PSBjbGFtcCh2LCAtNjU1MDQuMCwgNjU1MDQuMCk7XG4iCisgICAgICAgICIgICAgIiA8PCB2ZWNU
eXBlIDw8ICIgZXhwb25lbnQgPSBmbG9vcihsb2cyKGFicyh2KSArIDFlLTMwKSkgLSAxMC4wO1xu
IgorICAgICAgICAiICAgIGJ2ZWMiIDw8IHNpemUgPDwgIiBpc05vblplcm8gPSBncmVhdGVyVGhh
bkVxdWFsKGV4cG9uZW50LCB2ZWMiIDw8IHNpemUgPDwgIigtMjUuMCkpO1xuIgorICAgICAgICAi
ICAgIHYgPSB2ICogZXhwMigtZXhwb25lbnQpO1xuIgorICAgICAgICAiICAgIHYgPSBzaWduKHYp
ICogZmxvb3IoYWJzKHYpKTtcbiIKKyAgICAgICAgIiAgICByZXR1cm4gdiAqIGV4cDIoZXhwb25l
bnQpICogdmVjIiA8PCBzaXplIDw8ICIoaXNOb25aZXJvKTtcbiIKKyAgICAgICAgIn1cbiI7CiAK
ICAgICBzaW5rIDw8Ci0gICAgZmxvYXRUeXBlIDw8ICIgYW5nbGVfZnJsKGluICIgPDwgZmxvYXRU
eXBlIDw8ICIgeCkge1xuIgotICAgICIgICAgeCA9IGNsYW1wKHgsIC0yLjAsIDIuMCk7XG4iCi0g
ICAgIiAgICB4ID0geCAqIDI1Ni4wO1xuIgotICAgICIgICAgeCA9IHNpZ24oeCkgKiBmbG9vcihh
YnMoeCkpO1xuIgotICAgICIgICAgcmV0dXJuIHggKiAwLjAwMzkwNjI1O1xuIgotICAgICJ9XG4i
OwotCi0gICAgd3JpdGVWZWN0b3JQcmVjaXNpb25FbXVsYXRpb25IZWxwZXJzKHNpbmssIG91dHB1
dExhbmd1YWdlLCAyKTsKLSAgICB3cml0ZVZlY3RvclByZWNpc2lvbkVtdWxhdGlvbkhlbHBlcnMo
c2luaywgb3V0cHV0TGFuZ3VhZ2UsIDMpOwotICAgIHdyaXRlVmVjdG9yUHJlY2lzaW9uRW11bGF0
aW9uSGVscGVycyhzaW5rLCBvdXRwdXRMYW5ndWFnZSwgNCk7Ci0gICAgZm9yICh1bnNpZ25lZCBp
bnQgc2l6ZSA9IDI7IHNpemUgPD0gNDsgKytzaXplKQotICAgIHsKLSAgICAgICAgd3JpdGVNYXRy
aXhQcmVjaXNpb25FbXVsYXRpb25IZWxwZXIoc2luaywgb3V0cHV0TGFuZ3VhZ2UsIHNpemUsICJh
bmdsZV9mcm0iKTsKLSAgICAgICAgd3JpdGVNYXRyaXhQcmVjaXNpb25FbXVsYXRpb25IZWxwZXIo
c2luaywgb3V0cHV0TGFuZ3VhZ2UsIHNpemUsICJhbmdsZV9mcmwiKTsKKyAgICAgICAgdmVjVHlw
ZSA8PCAiIGFuZ2xlX2ZybChpbiAiIDw8IHZlY1R5cGUgPDwgIiB2KSB7XG4iCisgICAgICAgICIg
ICAgdiA9IGNsYW1wKHYsIC0yLjAsIDIuMCk7XG4iCisgICAgICAgICIgICAgdiA9IHYgKiAyNTYu
MDtcbiIKKyAgICAgICAgIiAgICB2ID0gc2lnbih2KSAqIGZsb29yKGFicyh2KSk7XG4iCisgICAg
ICAgICIgICAgcmV0dXJuIHYgKiAwLjAwMzkwNjI1O1xuIgorICAgICAgICAifVxuIjsKKyAgICAv
LyBjbGFuZy1mb3JtYXQgb24KK30KKwordm9pZCBSb3VuZGluZ0hlbHBlcldyaXRlckdMU0w6Ondy
aXRlTWF0cml4Um91bmRpbmdIZWxwZXIoVEluZm9TaW5rQmFzZSAmc2luaywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2ln
bmVkIGludCBjb2x1bW5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IHJvd3MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpm
dW5jdGlvbk5hbWUpCit7CisgICAgc3RkOjpzdHJpbmdzdHJlYW0gbWF0VHlwZVN0clN0cjsKKyAg
ICBtYXRUeXBlU3RyU3RyIDw8ICJtYXQiIDw8IGNvbHVtbnM7CisgICAgaWYgKHJvd3MgIT0gY29s
dW1ucykKKyAgICB7CisgICAgICAgIG1hdFR5cGVTdHJTdHIgPDwgIngiIDw8IHJvd3M7CiAgICAg
fQorICAgIHN0ZDo6c3RyaW5nIG1hdFR5cGUgPSBnZXRUeXBlU3RyaW5nKG1hdFR5cGVTdHJTdHIu
c3RyKCkuY19zdHIoKSk7CisKKyAgICBzaW5rIDw8IG1hdFR5cGUgPDwgIiAiIDw8IGZ1bmN0aW9u
TmFtZSA8PCAiKGluICIgPDwgbWF0VHlwZSA8PCAiIG0pIHtcbiIKKyAgICAgICAgIDw8ICIgICAg
IiA8PCBtYXRUeXBlIDw8ICIgcm91bmRlZDtcbiI7CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8IGNvbHVtbnM7ICsraSkKKyAgICB7CisgICAgICAgIHNpbmsgPDwgIiAgICByb3Vu
ZGVkWyIgPDwgaSA8PCAiXSA9ICIgPDwgZnVuY3Rpb25OYW1lIDw8ICIobVsiIDw8IGkgPDwgIl0p
O1xuIjsKKyAgICB9CisKKyAgICBzaW5rIDw8ICIgICAgcmV0dXJuIHJvdW5kZWQ7XG4iCisgICAg
ICAgICAgICAifVxuIjsKIH0KIAotc3RhdGljIHZvaWQgd3JpdGVDb21wb3VuZEFzc2lnbm1lbnRQ
cmVjaXNpb25FbXVsYXRpb24oCi0gICAgVEluZm9TaW5rQmFzZSYgc2luaywgU2hTaGFkZXJPdXRw
dXQgb3V0cHV0TGFuZ3VhZ2UsCi0gICAgY29uc3QgY2hhciAqbFR5cGUsIGNvbnN0IGNoYXIgKnJU
eXBlLCBjb25zdCBjaGFyICpvcFN0ciwgY29uc3QgY2hhciAqb3BOYW1lU3RyKQotewotICAgIHN0
ZDo6c3RyaW5nIGxUeXBlU3RyID0gbFR5cGU7Ci0gICAgc3RkOjpzdHJpbmcgclR5cGVTdHIgPSBy
VHlwZTsKLSAgICBpZiAob3V0cHV0TGFuZ3VhZ2UgPT0gU0hfRVNTTF9PVVRQVVQpCi0gICAgewot
ICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBsVHlwZVN0clN0cjsKLSAgICAgICAgbFR5cGVTdHJT
dHIgPDwgImhpZ2hwICIgPDwgbFR5cGU7Ci0gICAgICAgIGxUeXBlU3RyID0gbFR5cGVTdHJTdHIu
c3RyKCk7Ci0gICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHJUeXBlU3RyU3RyOwotICAgICAgICBy
VHlwZVN0clN0ciA8PCAiaGlnaHAgIiA8PCByVHlwZTsKLSAgICAgICAgclR5cGVTdHIgPSByVHlw
ZVN0clN0ci5zdHIoKTsKK3N0YXRpYyBjb25zdCBjaGFyICpHZXRITFNMVHlwZVN0cihjb25zdCBj
aGFyICpmbG9hdFR5cGVTdHIpCit7CisgICAgaWYgKHN0cmNtcChmbG9hdFR5cGVTdHIsICJmbG9h
dCIpID09IDApCisgICAgeworICAgICAgICByZXR1cm4gImZsb2F0IjsKKyAgICB9CisgICAgaWYg
KHN0cmNtcChmbG9hdFR5cGVTdHIsICJ2ZWMyIikgPT0gMCkKKyAgICB7CisgICAgICAgIHJldHVy
biAiZmxvYXQyIjsKKyAgICB9CisgICAgaWYgKHN0cmNtcChmbG9hdFR5cGVTdHIsICJ2ZWMzIikg
PT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiAiZmxvYXQzIjsKKyAgICB9CisgICAgaWYgKHN0
cmNtcChmbG9hdFR5cGVTdHIsICJ2ZWM0IikgPT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiAi
ZmxvYXQ0IjsKKyAgICB9CisgICAgaWYgKHN0cmNtcChmbG9hdFR5cGVTdHIsICJtYXQyIikgPT0g
MCkKKyAgICB7CisgICAgICAgIHJldHVybiAiZmxvYXQyeDIiOworICAgIH0KKyAgICBpZiAoc3Ry
Y21wKGZsb2F0VHlwZVN0ciwgIm1hdDMiKSA9PSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuICJm
bG9hdDN4MyI7CisgICAgfQorICAgIGlmIChzdHJjbXAoZmxvYXRUeXBlU3RyLCAibWF0NCIpID09
IDApCisgICAgeworICAgICAgICByZXR1cm4gImZsb2F0NHg0IjsKKyAgICB9CisgICAgaWYgKHN0
cmNtcChmbG9hdFR5cGVTdHIsICJtYXQyeDMiKSA9PSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJu
ICJmbG9hdDJ4MyI7CisgICAgfQorICAgIGlmIChzdHJjbXAoZmxvYXRUeXBlU3RyLCAibWF0Mng0
IikgPT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiAiZmxvYXQyeDQiOworICAgIH0KKyAgICBp
ZiAoc3RyY21wKGZsb2F0VHlwZVN0ciwgIm1hdDN4MiIpID09IDApCisgICAgeworICAgICAgICBy
ZXR1cm4gImZsb2F0M3gyIjsKICAgICB9CisgICAgaWYgKHN0cmNtcChmbG9hdFR5cGVTdHIsICJt
YXQzeDQiKSA9PSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuICJmbG9hdDN4NCI7CisgICAgfQor
ICAgIGlmIChzdHJjbXAoZmxvYXRUeXBlU3RyLCAibWF0NHgyIikgPT0gMCkKKyAgICB7CisgICAg
ICAgIHJldHVybiAiZmxvYXQ0eDIiOworICAgIH0KKyAgICBpZiAoc3RyY21wKGZsb2F0VHlwZVN0
ciwgIm1hdDR4MyIpID09IDApCisgICAgeworICAgICAgICByZXR1cm4gImZsb2F0NHgzIjsKKyAg
ICB9CisgICAgVU5SRUFDSEFCTEUoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KIAotICAgIC8v
IE5vdGUgdGhhdCB5IHNob3VsZCBiZSBwYXNzZWQgdGhyb3VnaCBhbmdsZV9mcm0gYXQgdGhlIGZ1
bmN0aW9uIGNhbGwgc2l0ZSwKLSAgICAvLyBidXQgeCBjYW4ndCBiZSBwYXNzZWQgdGhyb3VnaCBh
bmdsZV9mcm0gdGhlcmUgc2luY2UgaXQgaXMgYW4gaW5vdXQgcGFyYW1ldGVyLgotICAgIC8vIFNv
IG9ubHkgcGFzcyB4IGFuZCB0aGUgcmVzdWx0IHRocm91Z2ggYW5nbGVfZnJtIGhlcmUuCitzdGQ6
OnN0cmluZyBSb3VuZGluZ0hlbHBlcldyaXRlckhMU0w6OmdldFR5cGVTdHJpbmcoY29uc3QgY2hh
ciAqZ2xzbFR5cGUpCit7CisgICAgcmV0dXJuIEdldEhMU0xUeXBlU3RyKGdsc2xUeXBlKTsKK30K
Kwordm9pZCBSb3VuZGluZ0hlbHBlcldyaXRlckhMU0w6OndyaXRlRmxvYXRSb3VuZGluZ0hlbHBl
cnMoVEluZm9TaW5rQmFzZSAmc2luaykKK3sKKyAgICAvLyBJbiBITFNMIHNjYWxhcnMgYXJlIHRo
ZSBzYW1lIGFzIDEtdmVjdG9ycy4KKyAgICB3cml0ZVZlY3RvclJvdW5kaW5nSGVscGVycyhzaW5r
LCAxKTsKK30KKwordm9pZCBSb3VuZGluZ0hlbHBlcldyaXRlckhMU0w6OndyaXRlVmVjdG9yUm91
bmRpbmdIZWxwZXJzKFRJbmZvU2lua0Jhc2UgJnNpbmssCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IHNp
emUpCit7CisgICAgc3RkOjpzdHJpbmdzdHJlYW0gdmVjVHlwZVN0clN0cjsKKyAgICB2ZWNUeXBl
U3RyU3RyIDw8ICJmbG9hdCIgPDwgc2l6ZTsKKyAgICBzdGQ6OnN0cmluZyB2ZWNUeXBlID0gdmVj
VHlwZVN0clN0ci5zdHIoKTsKKworICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKICAgICBzaW5rIDw8
Ci0gICAgbFR5cGVTdHIgPDwgIiBhbmdsZV9jb21wb3VuZF8iIDw8IG9wTmFtZVN0ciA8PCAiX2Zy
bShpbm91dCAiIDw8IGxUeXBlU3RyIDw8ICIgeCwgaW4gIiA8PCByVHlwZVN0ciA8PCAiIHkpIHtc
biIKLSAgICAiICAgIHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICIgPDwgb3BTdHIgPDwgIiB5
KTtcbiIKLSAgICAiICAgIHJldHVybiB4O1xuIgotICAgICJ9XG4iOworICAgICAgICB2ZWNUeXBl
IDw8ICIgYW5nbGVfZnJtKCIgPDwgdmVjVHlwZSA8PCAiIHYpIHtcbiIKKyAgICAgICAgIiAgICB2
ID0gY2xhbXAodiwgLTY1NTA0LjAsIDY1NTA0LjApO1xuIgorICAgICAgICAiICAgICIgPDwgdmVj
VHlwZSA8PCAiIGV4cG9uZW50ID0gZmxvb3IobG9nMihhYnModikgKyAxZS0zMCkpIC0gMTAuMDtc
biIKKyAgICAgICAgIiAgICBib29sIiA8PCBzaXplIDw8ICIgaXNOb25aZXJvID0gZXhwb25lbnQg
PCAtMjUuMDtcbiIKKyAgICAgICAgIiAgICB2ID0gdiAqIGV4cDIoLWV4cG9uZW50KTtcbiIKKyAg
ICAgICAgIiAgICB2ID0gc2lnbih2KSAqIGZsb29yKGFicyh2KSk7XG4iCisgICAgICAgICIgICAg
cmV0dXJuIHYgKiBleHAyKGV4cG9uZW50KSAqIChmbG9hdCIgPDwgc2l6ZSA8PCAiKShpc05vblpl
cm8pO1xuIgorICAgICAgICAifVxuIjsKKwogICAgIHNpbmsgPDwKLSAgICBsVHlwZVN0ciA8PCAi
IGFuZ2xlX2NvbXBvdW5kXyIgPDwgb3BOYW1lU3RyIDw8ICJfZnJsKGlub3V0ICIgPDwgbFR5cGVT
dHIgPDwgIiB4LCBpbiAiIDw8IHJUeXBlU3RyIDw8ICIgeSkge1xuIgotICAgICIgICAgeCA9IGFu
Z2xlX2ZybChhbmdsZV9mcm0oeCkgIiA8PCBvcFN0ciA8PCAiIHkpO1xuIgotICAgICIgICAgcmV0
dXJuIHg7XG4iCi0gICAgIn1cbiI7CisgICAgICAgIHZlY1R5cGUgPDwgIiBhbmdsZV9mcmwoIiA8
PCB2ZWNUeXBlIDw8ICIgdikge1xuIgorICAgICAgICAiICAgIHYgPSBjbGFtcCh2LCAtMi4wLCAy
LjApO1xuIgorICAgICAgICAiICAgIHYgPSB2ICogMjU2LjA7XG4iCisgICAgICAgICIgICAgdiA9
IHNpZ24odikgKiBmbG9vcihhYnModikpO1xuIgorICAgICAgICAiICAgIHJldHVybiB2ICogMC4w
MDM5MDYyNTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgLy8gY2xhbmctZm9ybWF0IG9uCiB9CiAK
LWNvbnN0IGNoYXIgKmdldEZsb2F0VHlwZVN0cihjb25zdCBUVHlwZSYgdHlwZSkKK3ZvaWQgUm91
bmRpbmdIZWxwZXJXcml0ZXJITFNMOjp3cml0ZU1hdHJpeFJvdW5kaW5nSGVscGVyKFRJbmZvU2lu
a0Jhc2UgJnNpbmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgY29sdW1ucywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVk
IGludCByb3dzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciAqZnVuY3Rpb25OYW1lKQogewotICAgIHN3aXRjaCAodHlw
ZS5nZXROb21pbmFsU2l6ZSgpKQorICAgIHN0ZDo6c3RyaW5nc3RyZWFtIG1hdFR5cGVTdHJTdHI7
CisgICAgbWF0VHlwZVN0clN0ciA8PCAiZmxvYXQiIDw8IGNvbHVtbnMgPDwgIngiIDw8IHJvd3M7
CisgICAgc3RkOjpzdHJpbmcgbWF0VHlwZSA9IG1hdFR5cGVTdHJTdHIuc3RyKCk7CisKKyAgICBz
aW5rIDw8IG1hdFR5cGUgPDwgIiAiIDw8IGZ1bmN0aW9uTmFtZSA8PCAiKCIgPDwgbWF0VHlwZSA8
PCAiIG0pIHtcbiIKKyAgICAgICAgIDw8ICIgICAgIiA8PCBtYXRUeXBlIDw8ICIgcm91bmRlZDtc
biI7CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGNvbHVtbnM7ICsraSkKICAg
ICB7Ci0gICAgICBjYXNlIDE6Ci0gICAgICAgIHJldHVybiAiZmxvYXQiOwotICAgICAgY2FzZSAy
OgotICAgICAgICBzd2l0Y2godHlwZS5nZXRTZWNvbmRhcnlTaXplKCkpCi0gICAgICAgIHsKLSAg
ICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICByZXR1cm4gInZlYzIiOwotICAgICAgICAgIGNh
c2UgMjoKLSAgICAgICAgICAgIHJldHVybiAibWF0MiI7Ci0gICAgICAgICAgY2FzZSAzOgotICAg
ICAgICAgICAgcmV0dXJuICJtYXQyeDMiOwotICAgICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAg
IHJldHVybiAibWF0Mng0IjsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICBjYXNl
IDM6Ci0gICAgICAgIHN3aXRjaCh0eXBlLmdldFNlY29uZGFyeVNpemUoKSkKLSAgICAgICAgewot
ICAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIHJldHVybiAidmVjMyI7Ci0gICAgICAgICAg
Y2FzZSAyOgotICAgICAgICAgICAgcmV0dXJuICJtYXQzeDIiOwotICAgICAgICAgIGNhc2UgMzoK
LSAgICAgICAgICAgIHJldHVybiAibWF0MyI7Ci0gICAgICAgICAgY2FzZSA0OgotICAgICAgICAg
ICAgcmV0dXJuICJtYXQzeDQiOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBVTlJF
QUNIQUJMRSgpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgIGNh
c2UgNDoKLSAgICAgICAgc3dpdGNoKHR5cGUuZ2V0U2Vjb25kYXJ5U2l6ZSgpKQotICAgICAgICB7
Ci0gICAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgcmV0dXJuICJ2ZWM0IjsKLSAgICAgICAg
ICBjYXNlIDI6Ci0gICAgICAgICAgICByZXR1cm4gIm1hdDR4MiI7Ci0gICAgICAgICAgY2FzZSAz
OgotICAgICAgICAgICAgcmV0dXJuICJtYXQ0eDMiOwotICAgICAgICAgIGNhc2UgNDoKLSAgICAg
ICAgICAgIHJldHVybiAibWF0NCI7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Cisg
ICAgICAgIHNpbmsgPDwgIiAgICByb3VuZGVkWyIgPDwgaSA8PCAiXSA9ICIgPDwgZnVuY3Rpb25O
YW1lIDw8ICIobVsiIDw8IGkgPDwgIl0pO1xuIjsKICAgICB9CisKKyAgICBzaW5rIDw8ICIgICAg
cmV0dXJuIHJvdW5kZWQ7XG4iCisgICAgICAgICAgICAifVxuIjsKIH0KIAogYm9vbCBjYW5Sb3Vu
ZEZsb2F0KGNvbnN0IFRUeXBlICZ0eXBlKQogewotICAgIHJldHVybiB0eXBlLmdldEJhc2ljVHlw
ZSgpID09IEVidEZsb2F0ICYmICF0eXBlLmlzTm9uU3F1YXJlTWF0cml4KCkgJiYgIXR5cGUuaXNB
cnJheSgpICYmCi0gICAgICAgICh0eXBlLmdldFByZWNpc2lvbigpID09IEVicExvdyB8fCB0eXBl
LmdldFByZWNpc2lvbigpID09IEVicE1lZGl1bSk7CisgICAgcmV0dXJuIHR5cGUuZ2V0QmFzaWNU
eXBlKCkgPT0gRWJ0RmxvYXQgJiYgIXR5cGUuaXNBcnJheSgpICYmCisgICAgICAgICAgICh0eXBl
LmdldFByZWNpc2lvbigpID09IEVicExvdyB8fCB0eXBlLmdldFByZWNpc2lvbigpID09IEVicE1l
ZGl1bSk7CiB9CiAKIFRJbnRlcm1BZ2dyZWdhdGUgKmNyZWF0ZUludGVybmFsRnVuY3Rpb25DYWxs
Tm9kZShUU3RyaW5nIG5hbWUsIFRJbnRlcm1Ob2RlICpjaGlsZCkKQEAgLTI0MSw3ICs0MzAsNyBA
QCBUSW50ZXJtQWdncmVnYXRlICpjcmVhdGVJbnRlcm5hbEZ1bmN0aW9uCiAgICAgY2FsbE5vZGUt
PnNldE9wKEVPcEZ1bmN0aW9uQ2FsbCk7CiAgICAgVE5hbWUgbmFtZU9iaihURnVuY3Rpb246Om1h
bmdsZU5hbWUobmFtZSkpOwogICAgIG5hbWVPYmouc2V0SW50ZXJuYWwodHJ1ZSk7Ci0gICAgY2Fs
bE5vZGUtPnNldE5hbWVPYmoobmFtZU9iaik7CisgICAgY2FsbE5vZGUtPmdldEZ1bmN0aW9uU3lt
Ym9sSW5mbygpLT5zZXROYW1lT2JqKG5hbWVPYmopOwogICAgIGNhbGxOb2RlLT5nZXRTZXF1ZW5j
ZSgpLT5wdXNoX2JhY2soY2hpbGQpOwogICAgIHJldHVybiBjYWxsTm9kZTsKIH0KQEAgLTI1Myw3
ICs0NDIsOSBAQCBUSW50ZXJtQWdncmVnYXRlICpjcmVhdGVSb3VuZGluZ0Z1bmN0aW9uCiAgICAg
ICAgIHJvdW5kRnVuY3Rpb25OYW1lID0gImFuZ2xlX2ZybSI7CiAgICAgZWxzZQogICAgICAgICBy
b3VuZEZ1bmN0aW9uTmFtZSA9ICJhbmdsZV9mcmwiOwotICAgIHJldHVybiBjcmVhdGVJbnRlcm5h
bEZ1bmN0aW9uQ2FsbE5vZGUocm91bmRGdW5jdGlvbk5hbWUsIHJvdW5kZWRDaGlsZCk7CisgICAg
VEludGVybUFnZ3JlZ2F0ZSAqY2FsbE5vZGUgPSBjcmVhdGVJbnRlcm5hbEZ1bmN0aW9uQ2FsbE5v
ZGUocm91bmRGdW5jdGlvbk5hbWUsIHJvdW5kZWRDaGlsZCk7CisgICAgY2FsbE5vZGUtPnNldFR5
cGUocm91bmRlZENoaWxkLT5nZXRUeXBlKCkpOworICAgIHJldHVybiBjYWxsTm9kZTsKIH0KIAog
VEludGVybUFnZ3JlZ2F0ZSAqY3JlYXRlQ29tcG91bmRBc3NpZ25tZW50RnVuY3Rpb25DYWxsTm9k
ZShUSW50ZXJtVHlwZWQgKmxlZnQsIFRJbnRlcm1UeXBlZCAqcmlnaHQsIGNvbnN0IGNoYXIgKm9w
TmFtZVN0cikKQEAgLTI3NiwxNSArNDY3LDE2IEBAIGJvb2wgcGFyZW50VXNlc1Jlc3VsdChUSW50
ZXJtTm9kZSogcGFyZW4KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFRJbnRl
cm1BZ2dyZWdhdGUgKmFnZ1BhcmVudCA9IHBhcmVudC0+Z2V0QXNBZ2dyZWdhdGUoKTsKLSAgICAv
LyBJZiB0aGUgcGFyZW50J3Mgb3AgaXMgRU9wU2VxdWVuY2UsIHRoZSByZXN1bHQgaXMgbm90IGFz
c2lnbmVkIGFueXdoZXJlLAorICAgIFRJbnRlcm1CbG9jayAqYmxvY2tQYXJlbnQgPSBwYXJlbnQt
PmdldEFzQmxvY2soKTsKKyAgICAvLyBJZiB0aGUgcGFyZW50IGlzIGEgYmxvY2ssIHRoZSByZXN1
bHQgaXMgbm90IGFzc2lnbmVkIGFueXdoZXJlLAogICAgIC8vIHNvIHJvdW5kaW5nIGl0IGlzIG5v
dCBuZWVkZWQuIEluIHBhcnRpY3VsYXIsIHRoaXMgY2FuIGF2b2lkIGEgbG90IG9mCiAgICAgLy8g
dW5uZWNlc3Nhcnkgcm91bmRpbmcgb2YgdW51c2VkIHJldHVybiB2YWx1ZXMgb2YgYXNzaWdubWVu
dC4KLSAgICBpZiAoYWdnUGFyZW50ICYmIGFnZ1BhcmVudC0+Z2V0T3AoKSA9PSBFT3BTZXF1ZW5j
ZSkKKyAgICBpZiAoYmxvY2tQYXJlbnQpCiAgICAgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQotICAgIGlmIChhZ2dQYXJlbnQgJiYgYWdnUGFyZW50LT5nZXRPcCgpID09IEVPcENvbW1h
ICYmIChhZ2dQYXJlbnQtPmdldFNlcXVlbmNlKCktPmJhY2soKSAhPSBub2RlKSkKKyAgICBUSW50
ZXJtQmluYXJ5ICpiaW5hcnlQYXJlbnQgPSBwYXJlbnQtPmdldEFzQmluYXJ5Tm9kZSgpOworICAg
IGlmIChiaW5hcnlQYXJlbnQgJiYgYmluYXJ5UGFyZW50LT5nZXRPcCgpID09IEVPcENvbW1hICYm
IChiaW5hcnlQYXJlbnQtPmdldFJpZ2h0KCkgIT0gbm9kZSkpCiAgICAgewogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQpAQCAtMzAyLDkgKzQ5NCw4IEBAIHZvaWQgRW11bGF0ZVByZWNpc2lv
bjo6dmlzaXRTeW1ib2woVEludGUKIHsKICAgICBpZiAoY2FuUm91bmRGbG9hdChub2RlLT5nZXRU
eXBlKCkpICYmICFtRGVjbGFyaW5nVmFyaWFibGVzICYmICFpc0xWYWx1ZVJlcXVpcmVkSGVyZSgp
KQogICAgIHsKLSAgICAgICAgVEludGVybU5vZGUgKnBhcmVudCA9IGdldFBhcmVudE5vZGUoKTsK
ICAgICAgICAgVEludGVybU5vZGUgKnJlcGxhY2VtZW50ID0gY3JlYXRlUm91bmRpbmdGdW5jdGlv
bkNhbGxOb2RlKG5vZGUpOwotICAgICAgICBtUmVwbGFjZW1lbnRzLnB1c2hfYmFjayhOb2RlVXBk
YXRlRW50cnkocGFyZW50LCBub2RlLCByZXBsYWNlbWVudCwgdHJ1ZSkpOworICAgICAgICBxdWV1
ZVJlcGxhY2VtZW50KG5vZGUsIHJlcGxhY2VtZW50LCBPcmlnaW5hbE5vZGU6OkJFQ09NRVNfQ0hJ
TEQpOwogICAgIH0KIH0KIApAQCAtMzE5LDcgKzUxMCw3IEBAIGJvb2wgRW11bGF0ZVByZWNpc2lv
bjo6dmlzaXRCaW5hcnkoVmlzaXQKICAgICBpZiAob3AgPT0gRU9wSW5pdGlhbGl6ZSAmJiB2aXNp
dCA9PSBJblZpc2l0KQogICAgICAgICBtRGVjbGFyaW5nVmFyaWFibGVzID0gZmFsc2U7CiAKLSAg
ICBpZiAoKG9wID09IEVPcEluZGV4RGlyZWN0U3RydWN0IHx8IG9wID09IEVPcFZlY3RvclN3aXp6
bGUpICYmIHZpc2l0ID09IEluVmlzaXQpCisgICAgaWYgKChvcCA9PSBFT3BJbmRleERpcmVjdFN0
cnVjdCkgJiYgdmlzaXQgPT0gSW5WaXNpdCkKICAgICAgICAgdmlzaXRDaGlsZHJlbiA9IGZhbHNl
OwogCiAgICAgaWYgKHZpc2l0ICE9IFByZVZpc2l0KQpAQCAtMzUwLDI2ICs1NDEsMzAgQEAgYm9v
bCBFbXVsYXRlUHJlY2lzaW9uOjp2aXNpdEJpbmFyeShWaXNpdAogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgVEludGVybU5vZGUgKnJlcGxhY2VtZW50
ID0gY3JlYXRlUm91bmRpbmdGdW5jdGlvbkNhbGxOb2RlKG5vZGUpOwotICAgICAgICAgICAgbVJl
cGxhY2VtZW50cy5wdXNoX2JhY2soTm9kZVVwZGF0ZUVudHJ5KHBhcmVudCwgbm9kZSwgcmVwbGFj
ZW1lbnQsIHRydWUpKTsKKyAgICAgICAgICAgIHF1ZXVlUmVwbGFjZW1lbnQobm9kZSwgcmVwbGFj
ZW1lbnQsIE9yaWdpbmFsTm9kZTo6QkVDT01FU19DSElMRCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICB9CiAKICAgICAgICAgICAvLyBDb21wb3VuZCBhc3NpZ25tZW50IGNhc2VzIG5l
ZWQgdG8gcmVwbGFjZSB0aGUgb3BlcmF0b3Igd2l0aCBhIGZ1bmN0aW9uIGNhbGwuCiAgICAgICAg
ICAgY2FzZSBFT3BBZGRBc3NpZ246CiAgICAgICAgICAgewotICAgICAgICAgICAgbUVtdWxhdGVD
b21wb3VuZEFkZC5pbnNlcnQoVHlwZVBhaXIoZ2V0RmxvYXRUeXBlU3RyKHR5cGUpLCBnZXRGbG9h
dFR5cGVTdHIobm9kZS0+Z2V0UmlnaHQoKS0+Z2V0VHlwZSgpKSkpOwotICAgICAgICAgICAgVElu
dGVybU5vZGUgKnBhcmVudCA9IGdldFBhcmVudE5vZGUoKTsKLSAgICAgICAgICAgIFRJbnRlcm1O
b2RlICpyZXBsYWNlbWVudCA9IGNyZWF0ZUNvbXBvdW5kQXNzaWdubWVudEZ1bmN0aW9uQ2FsbE5v
ZGUobm9kZS0+Z2V0TGVmdCgpLCBub2RlLT5nZXRSaWdodCgpLCAiYWRkIik7Ci0gICAgICAgICAg
ICBtUmVwbGFjZW1lbnRzLnB1c2hfYmFjayhOb2RlVXBkYXRlRW50cnkocGFyZW50LCBub2RlLCBy
ZXBsYWNlbWVudCwgZmFsc2UpKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBt
RW11bGF0ZUNvbXBvdW5kQWRkLmluc2VydCgKKyAgICAgICAgICAgICAgICAgIFR5cGVQYWlyKHR5
cGUuZ2V0QnVpbHRJblR5cGVOYW1lU3RyaW5nKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlLT5nZXRSaWdodCgpLT5nZXRUeXBlKCkuZ2V0QnVpbHRJblR5cGVOYW1lU3RyaW5nKCkp
KTsKKyAgICAgICAgICAgICAgVEludGVybU5vZGUgKnJlcGxhY2VtZW50ID0gY3JlYXRlQ29tcG91
bmRBc3NpZ25tZW50RnVuY3Rpb25DYWxsTm9kZSgKKyAgICAgICAgICAgICAgICAgIG5vZGUtPmdl
dExlZnQoKSwgbm9kZS0+Z2V0UmlnaHQoKSwgImFkZCIpOworICAgICAgICAgICAgICBxdWV1ZVJl
cGxhY2VtZW50KG5vZGUsIHJlcGxhY2VtZW50LCBPcmlnaW5hbE5vZGU6OklTX0RST1BQRUQpOwor
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICB9CiAgICAgICAgICAgY2FzZSBFT3BTdWJB
c3NpZ246CiAgICAgICAgICAgewotICAgICAgICAgICAgbUVtdWxhdGVDb21wb3VuZFN1Yi5pbnNl
cnQoVHlwZVBhaXIoZ2V0RmxvYXRUeXBlU3RyKHR5cGUpLCBnZXRGbG9hdFR5cGVTdHIobm9kZS0+
Z2V0UmlnaHQoKS0+Z2V0VHlwZSgpKSkpOwotICAgICAgICAgICAgVEludGVybU5vZGUgKnBhcmVu
dCA9IGdldFBhcmVudE5vZGUoKTsKLSAgICAgICAgICAgIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVu
dCA9IGNyZWF0ZUNvbXBvdW5kQXNzaWdubWVudEZ1bmN0aW9uQ2FsbE5vZGUobm9kZS0+Z2V0TGVm
dCgpLCBub2RlLT5nZXRSaWdodCgpLCAic3ViIik7Ci0gICAgICAgICAgICBtUmVwbGFjZW1lbnRz
LnB1c2hfYmFjayhOb2RlVXBkYXRlRW50cnkocGFyZW50LCBub2RlLCByZXBsYWNlbWVudCwgZmFs
c2UpKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBtRW11bGF0ZUNvbXBvdW5k
U3ViLmluc2VydCgKKyAgICAgICAgICAgICAgICAgIFR5cGVQYWlyKHR5cGUuZ2V0QnVpbHRJblR5
cGVOYW1lU3RyaW5nKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5nZXRSaWdo
dCgpLT5nZXRUeXBlKCkuZ2V0QnVpbHRJblR5cGVOYW1lU3RyaW5nKCkpKTsKKyAgICAgICAgICAg
ICAgVEludGVybU5vZGUgKnJlcGxhY2VtZW50ID0gY3JlYXRlQ29tcG91bmRBc3NpZ25tZW50RnVu
Y3Rpb25DYWxsTm9kZSgKKyAgICAgICAgICAgICAgICAgIG5vZGUtPmdldExlZnQoKSwgbm9kZS0+
Z2V0UmlnaHQoKSwgInN1YiIpOworICAgICAgICAgICAgICBxdWV1ZVJlcGxhY2VtZW50KG5vZGUs
IHJlcGxhY2VtZW50LCBPcmlnaW5hbE5vZGU6OklTX0RST1BQRUQpOworICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICB9CiAgICAgICAgICAgY2FzZSBFT3BNdWxBc3NpZ246CiAgICAgICAg
ICAgY2FzZSBFT3BWZWN0b3JUaW1lc01hdHJpeEFzc2lnbjoKQEAgLTM3NywxOSArNTcyLDIzIEBA
IGJvb2wgRW11bGF0ZVByZWNpc2lvbjo6dmlzaXRCaW5hcnkoVmlzaXQKICAgICAgICAgICBjYXNl
IEVPcE1hdHJpeFRpbWVzU2NhbGFyQXNzaWduOgogICAgICAgICAgIGNhc2UgRU9wTWF0cml4VGlt
ZXNNYXRyaXhBc3NpZ246CiAgICAgICAgICAgewotICAgICAgICAgICAgbUVtdWxhdGVDb21wb3Vu
ZE11bC5pbnNlcnQoVHlwZVBhaXIoZ2V0RmxvYXRUeXBlU3RyKHR5cGUpLCBnZXRGbG9hdFR5cGVT
dHIobm9kZS0+Z2V0UmlnaHQoKS0+Z2V0VHlwZSgpKSkpOwotICAgICAgICAgICAgVEludGVybU5v
ZGUgKnBhcmVudCA9IGdldFBhcmVudE5vZGUoKTsKLSAgICAgICAgICAgIFRJbnRlcm1Ob2RlICpy
ZXBsYWNlbWVudCA9IGNyZWF0ZUNvbXBvdW5kQXNzaWdubWVudEZ1bmN0aW9uQ2FsbE5vZGUobm9k
ZS0+Z2V0TGVmdCgpLCBub2RlLT5nZXRSaWdodCgpLCAibXVsIik7Ci0gICAgICAgICAgICBtUmVw
bGFjZW1lbnRzLnB1c2hfYmFjayhOb2RlVXBkYXRlRW50cnkocGFyZW50LCBub2RlLCByZXBsYWNl
bWVudCwgZmFsc2UpKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBtRW11bGF0
ZUNvbXBvdW5kTXVsLmluc2VydCgKKyAgICAgICAgICAgICAgICAgIFR5cGVQYWlyKHR5cGUuZ2V0
QnVpbHRJblR5cGVOYW1lU3RyaW5nKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBub2Rl
LT5nZXRSaWdodCgpLT5nZXRUeXBlKCkuZ2V0QnVpbHRJblR5cGVOYW1lU3RyaW5nKCkpKTsKKyAg
ICAgICAgICAgICAgVEludGVybU5vZGUgKnJlcGxhY2VtZW50ID0gY3JlYXRlQ29tcG91bmRBc3Np
Z25tZW50RnVuY3Rpb25DYWxsTm9kZSgKKyAgICAgICAgICAgICAgICAgIG5vZGUtPmdldExlZnQo
KSwgbm9kZS0+Z2V0UmlnaHQoKSwgIm11bCIpOworICAgICAgICAgICAgICBxdWV1ZVJlcGxhY2Vt
ZW50KG5vZGUsIHJlcGxhY2VtZW50LCBPcmlnaW5hbE5vZGU6OklTX0RST1BQRUQpOworICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICB9CiAgICAgICAgICAgY2FzZSBFT3BEaXZBc3NpZ246
CiAgICAgICAgICAgewotICAgICAgICAgICAgbUVtdWxhdGVDb21wb3VuZERpdi5pbnNlcnQoVHlw
ZVBhaXIoZ2V0RmxvYXRUeXBlU3RyKHR5cGUpLCBnZXRGbG9hdFR5cGVTdHIobm9kZS0+Z2V0Umln
aHQoKS0+Z2V0VHlwZSgpKSkpOwotICAgICAgICAgICAgVEludGVybU5vZGUgKnBhcmVudCA9IGdl
dFBhcmVudE5vZGUoKTsKLSAgICAgICAgICAgIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCA9IGNy
ZWF0ZUNvbXBvdW5kQXNzaWdubWVudEZ1bmN0aW9uQ2FsbE5vZGUobm9kZS0+Z2V0TGVmdCgpLCBu
b2RlLT5nZXRSaWdodCgpLCAiZGl2Iik7Ci0gICAgICAgICAgICBtUmVwbGFjZW1lbnRzLnB1c2hf
YmFjayhOb2RlVXBkYXRlRW50cnkocGFyZW50LCBub2RlLCByZXBsYWNlbWVudCwgZmFsc2UpKTsK
LSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBtRW11bGF0ZUNvbXBvdW5kRGl2Lmlu
c2VydCgKKyAgICAgICAgICAgICAgICAgIFR5cGVQYWlyKHR5cGUuZ2V0QnVpbHRJblR5cGVOYW1l
U3RyaW5nKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5nZXRSaWdodCgpLT5n
ZXRUeXBlKCkuZ2V0QnVpbHRJblR5cGVOYW1lU3RyaW5nKCkpKTsKKyAgICAgICAgICAgICAgVElu
dGVybU5vZGUgKnJlcGxhY2VtZW50ID0gY3JlYXRlQ29tcG91bmRBc3NpZ25tZW50RnVuY3Rpb25D
YWxsTm9kZSgKKyAgICAgICAgICAgICAgICAgIG5vZGUtPmdldExlZnQoKSwgbm9kZS0+Z2V0Umln
aHQoKSwgImRpdiIpOworICAgICAgICAgICAgICBxdWV1ZVJlcGxhY2VtZW50KG5vZGUsIHJlcGxh
Y2VtZW50LCBPcmlnaW5hbE5vZGU6OklTX0RST1BQRUQpOworICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICB9CiAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIC8vIFRoZSByZXN0
IG9mIHRoZSBiaW5hcnkgb3BlcmF0aW9ucyBzaG91bGQgbm90IG5lZWQgcHJlY2lzaW9uIGVtdWxh
dGlvbi4KQEAgLTQwNCw5ICs2MDMsNyBAQCBib29sIEVtdWxhdGVQcmVjaXNpb246OnZpc2l0QWdn
cmVnYXRlKFZpCiAgICAgYm9vbCB2aXNpdENoaWxkcmVuID0gdHJ1ZTsKICAgICBzd2l0Y2ggKG5v
ZGUtPmdldE9wKCkpCiAgICAgewotICAgICAgY2FzZSBFT3BTZXF1ZW5jZToKICAgICAgIGNhc2Ug
RU9wQ29uc3RydWN0U3RydWN0OgotICAgICAgY2FzZSBFT3BGdW5jdGlvbjoKICAgICAgICAgYnJl
YWs7CiAgICAgICBjYXNlIEVPcFByb3RvdHlwZToKICAgICAgICAgdmlzaXRDaGlsZHJlbiA9IGZh
bHNlOwpAQCAtNDQ0LDcgKzY0MSw3IEBAIGJvb2wgRW11bGF0ZVByZWNpc2lvbjo6dmlzaXRBZ2dy
ZWdhdGUoVmkKICAgICAgICAgICAgICAgICBwYXJlbnRVc2VzUmVzdWx0KHBhcmVudCwgbm9kZSkp
CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgVEludGVybU5vZGUgKnJlcGxhY2VtZW50
ID0gY3JlYXRlUm91bmRpbmdGdW5jdGlvbkNhbGxOb2RlKG5vZGUpOwotICAgICAgICAgICAgICAg
IG1SZXBsYWNlbWVudHMucHVzaF9iYWNrKE5vZGVVcGRhdGVFbnRyeShwYXJlbnQsIG5vZGUsIHJl
cGxhY2VtZW50LCB0cnVlKSk7CisgICAgICAgICAgICAgICAgcXVldWVSZXBsYWNlbWVudChub2Rl
LCByZXBsYWNlbWVudCwgT3JpZ2luYWxOb2RlOjpCRUNPTUVTX0NISUxEKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTQ1NCw3ICs2NTEsNyBAQCBib29sIEVt
dWxhdGVQcmVjaXNpb246OnZpc2l0QWdncmVnYXRlKFZpCiAgICAgICAgIGlmIChjYW5Sb3VuZEZs
b2F0KG5vZGUtPmdldFR5cGUoKSkgJiYgdmlzaXQgPT0gUHJlVmlzaXQgJiYgcGFyZW50VXNlc1Jl
c3VsdChwYXJlbnQsIG5vZGUpKQogICAgICAgICB7CiAgICAgICAgICAgICBUSW50ZXJtTm9kZSAq
cmVwbGFjZW1lbnQgPSBjcmVhdGVSb3VuZGluZ0Z1bmN0aW9uQ2FsbE5vZGUobm9kZSk7Ci0gICAg
ICAgICAgICBtUmVwbGFjZW1lbnRzLnB1c2hfYmFjayhOb2RlVXBkYXRlRW50cnkocGFyZW50LCBu
b2RlLCByZXBsYWNlbWVudCwgdHJ1ZSkpOworICAgICAgICAgICAgcXVldWVSZXBsYWNlbWVudChu
b2RlLCByZXBsYWNlbWVudCwgT3JpZ2luYWxOb2RlOjpCRUNPTUVTX0NISUxEKTsKICAgICAgICAg
fQogICAgICAgICBicmVhazsKICAgICB9CkBAIC00NzYsOSArNjczLDggQEAgYm9vbCBFbXVsYXRl
UHJlY2lzaW9uOjp2aXNpdFVuYXJ5KFZpc2l0IAogICAgICAgZGVmYXVsdDoKICAgICAgICAgaWYg
KGNhblJvdW5kRmxvYXQobm9kZS0+Z2V0VHlwZSgpKSAmJiB2aXNpdCA9PSBQcmVWaXNpdCkKICAg
ICAgICAgewotICAgICAgICAgICAgVEludGVybU5vZGUgKnBhcmVudCA9IGdldFBhcmVudE5vZGUo
KTsKICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCA9IGNyZWF0ZVJvdW5kaW5n
RnVuY3Rpb25DYWxsTm9kZShub2RlKTsKLSAgICAgICAgICAgIG1SZXBsYWNlbWVudHMucHVzaF9i
YWNrKE5vZGVVcGRhdGVFbnRyeShwYXJlbnQsIG5vZGUsIHJlcGxhY2VtZW50LCB0cnVlKSk7Cisg
ICAgICAgICAgICBxdWV1ZVJlcGxhY2VtZW50KG5vZGUsIHJlcGxhY2VtZW50LCBPcmlnaW5hbE5v
ZGU6OkJFQ09NRVNfQ0hJTEQpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAg
LTQ4NiwyMiArNjgyLDM3IEBAIGJvb2wgRW11bGF0ZVByZWNpc2lvbjo6dmlzaXRVbmFyeShWaXNp
dCAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBFbXVsYXRlUHJlY2lzaW9uOjp3cml0ZUVt
dWxhdGlvbkhlbHBlcnMoVEluZm9TaW5rQmFzZSYgc2luaywgU2hTaGFkZXJPdXRwdXQgb3V0cHV0
TGFuZ3VhZ2UpCit2b2lkIEVtdWxhdGVQcmVjaXNpb246OndyaXRlRW11bGF0aW9uSGVscGVycyhU
SW5mb1NpbmtCYXNlICZzaW5rLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgaW50IHNoYWRlclZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTaFNoYWRlck91dHB1dCBvdXRwdXRMYW5ndWFn
ZSkKIHsKLSAgICAvLyBPdGhlciBsYW5ndWFnZXMgbm90IHlldCBzdXBwb3J0ZWQKLSAgICBBU1NF
UlQob3V0cHV0TGFuZ3VhZ2UgPT0gU0hfR0xTTF9DT01QQVRJQklMSVRZX09VVFBVVCB8fAotICAg
ICAgICAgICBJc0dMU0wxMzBPck5ld2VyKG91dHB1dExhbmd1YWdlKSB8fAotICAgICAgICAgICBv
dXRwdXRMYW5ndWFnZSA9PSBTSF9FU1NMX09VVFBVVCk7Ci0gICAgd3JpdGVDb21tb25QcmVjaXNp
b25FbXVsYXRpb25IZWxwZXJzKHNpbmssIG91dHB1dExhbmd1YWdlKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8Um91bmRpbmdIZWxwZXJXcml0ZXI+IHJvdW5kaW5nSGVscGVyV3JpdGVyKAorICAgICAg
ICBSb3VuZGluZ0hlbHBlcldyaXRlcjo6Y3JlYXRlSGVscGVyV3JpdGVyKG91dHB1dExhbmd1YWdl
KSk7CisKKyAgICByb3VuZGluZ0hlbHBlcldyaXRlci0+d3JpdGVDb21tb25Sb3VuZGluZ0hlbHBl
cnMoc2luaywgc2hhZGVyVmVyc2lvbik7CiAKICAgICBFbXVsYXRpb25TZXQ6OmNvbnN0X2l0ZXJh
dG9yIGl0OwogICAgIGZvciAoaXQgPSBtRW11bGF0ZUNvbXBvdW5kQWRkLmJlZ2luKCk7IGl0ICE9
IG1FbXVsYXRlQ29tcG91bmRBZGQuZW5kKCk7IGl0KyspCi0gICAgICAgIHdyaXRlQ29tcG91bmRB
c3NpZ25tZW50UHJlY2lzaW9uRW11bGF0aW9uKHNpbmssIG91dHB1dExhbmd1YWdlLCBpdC0+bFR5
cGUsIGl0LT5yVHlwZSwgIisiLCAiYWRkIik7CisgICAgICAgIHJvdW5kaW5nSGVscGVyV3JpdGVy
LT53cml0ZUNvbXBvdW5kQXNzaWdubWVudEhlbHBlcihzaW5rLCBpdC0+bFR5cGUsIGl0LT5yVHlw
ZSwgIisiLCAiYWRkIik7CiAgICAgZm9yIChpdCA9IG1FbXVsYXRlQ29tcG91bmRTdWIuYmVnaW4o
KTsgaXQgIT0gbUVtdWxhdGVDb21wb3VuZFN1Yi5lbmQoKTsgaXQrKykKLSAgICAgICAgd3JpdGVD
b21wb3VuZEFzc2lnbm1lbnRQcmVjaXNpb25FbXVsYXRpb24oc2luaywgb3V0cHV0TGFuZ3VhZ2Us
IGl0LT5sVHlwZSwgaXQtPnJUeXBlLCAiLSIsICJzdWIiKTsKKyAgICAgICAgcm91bmRpbmdIZWxw
ZXJXcml0ZXItPndyaXRlQ29tcG91bmRBc3NpZ25tZW50SGVscGVyKHNpbmssIGl0LT5sVHlwZSwg
aXQtPnJUeXBlLCAiLSIsICJzdWIiKTsKICAgICBmb3IgKGl0ID0gbUVtdWxhdGVDb21wb3VuZERp
di5iZWdpbigpOyBpdCAhPSBtRW11bGF0ZUNvbXBvdW5kRGl2LmVuZCgpOyBpdCsrKQotICAgICAg
ICB3cml0ZUNvbXBvdW5kQXNzaWdubWVudFByZWNpc2lvbkVtdWxhdGlvbihzaW5rLCBvdXRwdXRM
YW5ndWFnZSwgaXQtPmxUeXBlLCBpdC0+clR5cGUsICIvIiwgImRpdiIpOworICAgICAgICByb3Vu
ZGluZ0hlbHBlcldyaXRlci0+d3JpdGVDb21wb3VuZEFzc2lnbm1lbnRIZWxwZXIoc2luaywgaXQt
PmxUeXBlLCBpdC0+clR5cGUsICIvIiwgImRpdiIpOwogICAgIGZvciAoaXQgPSBtRW11bGF0ZUNv
bXBvdW5kTXVsLmJlZ2luKCk7IGl0ICE9IG1FbXVsYXRlQ29tcG91bmRNdWwuZW5kKCk7IGl0Kysp
Ci0gICAgICAgIHdyaXRlQ29tcG91bmRBc3NpZ25tZW50UHJlY2lzaW9uRW11bGF0aW9uKHNpbmss
IG91dHB1dExhbmd1YWdlLCBpdC0+bFR5cGUsIGl0LT5yVHlwZSwgIioiLCAibXVsIik7CisgICAg
ICAgIHJvdW5kaW5nSGVscGVyV3JpdGVyLT53cml0ZUNvbXBvdW5kQXNzaWdubWVudEhlbHBlcihz
aW5rLCBpdC0+bFR5cGUsIGl0LT5yVHlwZSwgIioiLCAibXVsIik7CiB9CiAKKy8vIHN0YXRpYwor
Ym9vbCBFbXVsYXRlUHJlY2lzaW9uOjpTdXBwb3J0ZWRJbkxhbmd1YWdlKGNvbnN0IFNoU2hhZGVy
T3V0cHV0IG91dHB1dExhbmd1YWdlKQoreworICAgIHN3aXRjaCAob3V0cHV0TGFuZ3VhZ2UpCisg
ICAgeworICAgICAgICBjYXNlIFNIX0hMU0xfNF8xX09VVFBVVDoKKyAgICAgICAgY2FzZSBTSF9F
U1NMX09VVFBVVDoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgLy8gT3RoZXIgbGFuZ3VhZ2VzIG5vdCB5ZXQgc3VwcG9ydGVkCisgICAgICAg
ICAgICByZXR1cm4gKG91dHB1dExhbmd1YWdlID09IFNIX0dMU0xfQ09NUEFUSUJJTElUWV9PVVRQ
VVQgfHwKKyAgICAgICAgICAgICAgICAgICAgSXNHTFNMMTMwT3JOZXdlcihvdXRwdXRMYW5ndWFn
ZSkpOworICAgIH0KK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL0VtdWxhdGVQcmVjaXNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9FbXVsYXRlUHJlY2lzaW9uLmgJ
KHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL0VtdWxhdGVQcmVjaXNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyAr
MjgsMTEgQEAgY2xhc3MgRW11bGF0ZVByZWNpc2lvbiA6IHB1YmxpYyBUTFZhbHVlVAogICAgIGJv
b2wgdmlzaXRVbmFyeShWaXNpdCB2aXNpdCwgVEludGVybVVuYXJ5ICpub2RlKSBvdmVycmlkZTsK
ICAgICBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpu
b2RlKSBvdmVycmlkZTsKIAotICAgIHZvaWQgd3JpdGVFbXVsYXRpb25IZWxwZXJzKFRJbmZvU2lu
a0Jhc2UmIHNpbmssIFNoU2hhZGVyT3V0cHV0IG91dHB1dExhbmd1YWdlKTsKKyAgICB2b2lkIHdy
aXRlRW11bGF0aW9uSGVscGVycyhUSW5mb1NpbmtCYXNlICZzaW5rLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGludCBzaGFkZXJWZXJzaW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFNoU2hhZGVyT3V0cHV0IG91dHB1dExhbmd1YWdlKTsKKwor
ICAgIHN0YXRpYyBib29sIFN1cHBvcnRlZEluTGFuZ3VhZ2UoY29uc3QgU2hTaGFkZXJPdXRwdXQg
b3V0cHV0TGFuZ3VhZ2UpOwogCiAgIHByaXZhdGU6CiAgICAgc3RydWN0IFR5cGVQYWlyCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9FeHBhbmRJ
bnRlZ2VyUG93RXhwcmVzc2lvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0V4cGFuZEludGVnZXJQb3dFeHByZXNzaW9u
cy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvRXhwYW5kSW50ZWdlclBvd0V4cHJlc3Npb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDE1NCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBJbXBsZW1lbnRhdGlvbiBv
ZiB0aGUgaW50ZWdlciBwb3cgZXhwcmVzc2lvbnMgSExTTCBidWcgd29ya2Fyb3VuZC4KKy8vIFNl
ZSBoZWFkZXIgZm9yIG1vcmUgaW5mby4KKworI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3Iv
RXhwYW5kSW50ZWdlclBvd0V4cHJlc3Npb25zLmgiCisKKyNpbmNsdWRlIDxjbWF0aD4KKyNpbmNs
dWRlIDxjc3RkbGliPgorCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2Rl
LmgiCisKK25hbWVzcGFjZSBzaAoreworCituYW1lc3BhY2UKK3sKKworY2xhc3MgVHJhdmVyc2Vy
IDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKK3sKKyAgcHVibGljOgorICAgIHN0YXRpYyB2b2lk
IEFwcGx5KFRJbnRlcm1Ob2RlICpyb290LCB1bnNpZ25lZCBpbnQgKnRlbXBJbmRleCk7CisKKyAg
cHJpdmF0ZToKKyAgICBUcmF2ZXJzZXIoKTsKKyAgICBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0
IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKSBvdmVycmlkZTsKKyAgICB2b2lkIG5leHRJ
dGVyYXRpb24oKTsKKworICAgIGJvb2wgbUZvdW5kID0gZmFsc2U7Cit9OworCisvLyBzdGF0aWMK
K3ZvaWQgVHJhdmVyc2VyOjpBcHBseShUSW50ZXJtTm9kZSAqcm9vdCwgdW5zaWduZWQgaW50ICp0
ZW1wSW5kZXgpCit7CisgICAgVHJhdmVyc2VyIHRyYXZlcnNlcjsKKyAgICB0cmF2ZXJzZXIudXNl
VGVtcG9yYXJ5SW5kZXgodGVtcEluZGV4KTsKKyAgICBkbworICAgIHsKKyAgICAgICAgdHJhdmVy
c2VyLm5leHRJdGVyYXRpb24oKTsKKyAgICAgICAgcm9vdC0+dHJhdmVyc2UoJnRyYXZlcnNlcik7
CisgICAgICAgIGlmICh0cmF2ZXJzZXIubUZvdW5kKQorICAgICAgICB7CisgICAgICAgICAgICB0
cmF2ZXJzZXIudXBkYXRlVHJlZSgpOworICAgICAgICB9CisgICAgfSB3aGlsZSAodHJhdmVyc2Vy
Lm1Gb3VuZCk7Cit9CisKK1RyYXZlcnNlcjo6VHJhdmVyc2VyKCkgOiBUSW50ZXJtVHJhdmVyc2Vy
KHRydWUsIGZhbHNlLCBmYWxzZSkKK3sKK30KKwordm9pZCBUcmF2ZXJzZXI6Om5leHRJdGVyYXRp
b24oKQoreworICAgIG1Gb3VuZCA9IGZhbHNlOworICAgIG5leHRUZW1wb3JhcnlJbmRleCgpOwor
fQorCitib29sIFRyYXZlcnNlcjo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1B
Z2dyZWdhdGUgKm5vZGUpCit7CisgICAgaWYgKG1Gb3VuZCkKKyAgICB7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBUZXN0IDA6IHNraXAgbm9uLXBvdyBvcGVyYXRvcnMu
CisgICAgaWYgKG5vZGUtPmdldE9wKCkgIT0gRU9wUG93KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgY29uc3QgVEludGVybVNlcXVlbmNlICpzZXF1ZW5jZSA9IG5v
ZGUtPmdldFNlcXVlbmNlKCk7CisgICAgQVNTRVJUKHNlcXVlbmNlLT5zaXplKCkgPT0gMnUpOwor
ICAgIGNvbnN0IFRJbnRlcm1Db25zdGFudFVuaW9uICpjb25zdGFudE5vZGUgPSBzZXF1ZW5jZS0+
YXQoMSktPmdldEFzQ29uc3RhbnRVbmlvbigpOworCisgICAgLy8gVGVzdCAxOiBjaGVjayBmb3Ig
YSBzaW5nbGUgY29uc3RhbnQuCisgICAgaWYgKCFjb25zdGFudE5vZGUgfHwgY29uc3RhbnROb2Rl
LT5nZXROb21pbmFsU2l6ZSgpICE9IDEpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICBjb25zdCBUQ29uc3RhbnRVbmlvbiAqY29uc3RhbnQgPSBjb25zdGFudE5vZGUt
PmdldFVuaW9uQXJyYXlQb2ludGVyKCk7CisKKyAgICBUQ29uc3RhbnRVbmlvbiBhc0Zsb2F0Owor
ICAgIGFzRmxvYXQuY2FzdChFYnRGbG9hdCwgKmNvbnN0YW50KTsKKworICAgIGZsb2F0IHZhbHVl
ID0gYXNGbG9hdC5nZXRGQ29uc3QoKTsKKworICAgIC8vIFRlc3QgMjogdmFsdWUgaXMgaW4gdGhl
IHByb2JsZW1hdGljIHJhbmdlLgorICAgIGlmICh2YWx1ZSA8IC01LjBmIHx8IHZhbHVlID4gOS4w
ZikKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIFRlc3QgMzog
dmFsdWUgaXMgaW50ZWdlciBvciBwcmV0dHkgY2xvc2UgdG8gYW4gaW50ZWdlci4KKyAgICBmbG9h
dCBhYnN2YWwgPSBzdGQ6OmFicyh2YWx1ZSk7CisgICAgZmxvYXQgZnJhYyAgID0gYWJzdmFsIC0g
c3RkOjpyb3VuZChhYnN2YWwpOworICAgIGlmIChmcmFjID4gMC4wMDAxZikKKyAgICB7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIFRlc3QgNDogc2tpcCAtMSwgMCwgYW5k
IDEKKyAgICBpbnQgZXhwb25lbnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKTsKKyAgICBpbnQg
biAgICAgICAgPSBzdGQ6OmFicyhleHBvbmVudCk7CisgICAgaWYgKG4gPCAyKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gUG90ZW50aWFsIHByb2JsZW0gY2Fz
ZSBkZXRlY3RlZCwgYXBwbHkgd29ya2Fyb3VuZC4KKyAgICBuZXh0VGVtcG9yYXJ5SW5kZXgoKTsK
KworICAgIFRJbnRlcm1UeXBlZCAqbGhzID0gc2VxdWVuY2UtPmF0KDApLT5nZXRBc1R5cGVkKCk7
CisgICAgQVNTRVJUKGxocyk7CisKKyAgICBUSW50ZXJtQWdncmVnYXRlICppbml0ID0gY3JlYXRl
VGVtcEluaXREZWNsYXJhdGlvbihsaHMpOworICAgIFRJbnRlcm1UeXBlZCAqY3VycmVudCAgPSBj
cmVhdGVUZW1wU3ltYm9sKGxocy0+Z2V0VHlwZSgpKTsKKworICAgIGluc2VydFN0YXRlbWVudElu
UGFyZW50QmxvY2soaW5pdCk7CisKKyAgICAvLyBDcmVhdGUgYSBjaGFpbiBvZiBuLTEgbXVsdGlw
bGVzLgorICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbjsgKytpKQorICAgIHsKKyAgICAgICAgVElu
dGVybUJpbmFyeSAqbXVsID0gbmV3IFRJbnRlcm1CaW5hcnkoRU9wTXVsLCBjdXJyZW50LCBjcmVh
dGVUZW1wU3ltYm9sKGxocy0+Z2V0VHlwZSgpKSk7CisgICAgICAgIG11bC0+c2V0TGluZShub2Rl
LT5nZXRMaW5lKCkpOworICAgICAgICBjdXJyZW50ID0gbXVsOworICAgIH0KKworICAgIC8vIEZv
ciBuZWdhdGl2ZSBwb3csIGNvbXB1dGUgdGhlIHJlY2lwcm9jYWwgb2YgdGhlIHBvc2l0aXZlIHBv
dy4KKyAgICBpZiAoZXhwb25lbnQgPCAwKQorICAgIHsKKyAgICAgICAgVENvbnN0YW50VW5pb24g
Km9uZVZhbCA9IG5ldyBUQ29uc3RhbnRVbmlvbigpOworICAgICAgICBvbmVWYWwtPnNldEZDb25z
dCgxLjBmKTsKKyAgICAgICAgVEludGVybUNvbnN0YW50VW5pb24gKm9uZU5vZGUgPSBuZXcgVElu
dGVybUNvbnN0YW50VW5pb24ob25lVmFsLCBub2RlLT5nZXRUeXBlKCkpOworICAgICAgICBUSW50
ZXJtQmluYXJ5ICpkaXYgICAgICAgICAgICA9IG5ldyBUSW50ZXJtQmluYXJ5KEVPcERpdiwgb25l
Tm9kZSwgY3VycmVudCk7CisgICAgICAgIGN1cnJlbnQgPSBkaXY7CisgICAgfQorCisgICAgcXVl
dWVSZXBsYWNlbWVudChub2RlLCBjdXJyZW50LCBPcmlnaW5hbE5vZGU6OklTX0RST1BQRUQpOwor
ICAgIG1Gb3VuZCA9IHRydWU7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9ICAvLyBhbm9ueW1v
dXMgbmFtZXNwYWNlCisKK3ZvaWQgRXhwYW5kSW50ZWdlclBvd0V4cHJlc3Npb25zKFRJbnRlcm1O
b2RlICpyb290LCB1bnNpZ25lZCBpbnQgKnRlbXBJbmRleCkKK3sKKyAgICBUcmF2ZXJzZXI6OkFw
cGx5KHJvb3QsIHRlbXBJbmRleCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBzaApJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRXhwYW5kSW50ZWdl
clBvd0V4cHJlc3Npb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRXhwYW5kSW50ZWdlclBvd0V4cHJlc3Npb25zLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvRXhwYW5kSW50ZWdlclBvd0V4cHJlc3Npb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyOCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBUaGlzIG11dGF0aW5nIHRyZWUgdHJhdmVyc2Fs
IHdvcmtzIGFyb3VuZCBhIGJ1ZyBpbiB0aGUgSExTTCBjb21waWxlciBvcHRpbWl6ZXIgd2l0aCAi
cG93IiB0aGF0CisvLyBtYW5pZmVzdHMgdW5kZXIgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgor
Ly8KKy8vIC0gSWYgcG93KCkgaGFzIGEgbGl0ZXJhbCBleHBvbmVudCB2YWx1ZQorLy8gLSAuLi4g
YW5kIHRoaXMgdmFsdWUgaXMgaW50ZWdlciBvciB3aXRoaW4gMTBlLTYgb2YgYW4gaW50ZWdlcgor
Ly8gLSAuLi4gYW5kIGl0IGlzIGluIHstNCwgLTMsIC0yLCAyLCAzLCA0LCA1LCA2LCA3LCA4fQor
Ly8KKy8vIFRoZSB3b3JrYXJvdW5kIGlzIHRvIHJlcGxhY2UgdGhlIHBvdyB3aXRoIGEgc2VyaWVz
IG9mIG11bHRpcGxpZXMuCisvLyBTZWUgaHR0cDovL2FuZ2xlYnVnLmNvbS84NTEKKworI2lmbmRl
ZiBDT01QSUxFUl9UUkFOU0xBVE9SX0VYUEFORElOVEVHRVJQT1dFWFBSRVNTSU9OU19IXworI2Rl
ZmluZSBDT01QSUxFUl9UUkFOU0xBVE9SX0VYUEFORElOVEVHRVJQT1dFWFBSRVNTSU9OU19IXwor
CitjbGFzcyBUSW50ZXJtTm9kZTsKKworbmFtZXNwYWNlIHNoCit7CisKK3ZvaWQgRXhwYW5kSW50
ZWdlclBvd0V4cHJlc3Npb25zKFRJbnRlcm1Ob2RlICpyb290LCB1bnNpZ25lZCBpbnQgKnRlbXBJ
bmRleCk7CisKK30gIC8vIG5hbWVzcGFjZSBzaAorCisjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5T
TEFUT1JfRVhQQU5ESU5URUdFUlBPV0VYUFJFU1NJT05TX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9J
bml0aWFsaXplLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIEluc2VydEJ1aWx0SW5GdW5jdGlvbnMoc2g6OkdMZW51
bSB0CiAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMMV9CVUlMVElOUywgZmxvYXQ0
LCAidGV4dHVyZTJEUHJvaiIsIHNhbXBsZXIyRCwgZmxvYXQ0KTsKICAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluKEVTU0wxX0JVSUxUSU5TLCBmbG9hdDQsICJ0ZXh0dXJlQ3ViZSIsIHNhbXBs
ZXJDdWJlLCBmbG9hdDMpOwogCi0gICAgaWYgKHJlc291cmNlcy5PRVNfRUdMX2ltYWdlX2V4dGVy
bmFsKQorICAgIGlmIChyZXNvdXJjZXMuT0VTX0VHTF9pbWFnZV9leHRlcm5hbCB8fCByZXNvdXJj
ZXMuTlZfRUdMX3N0cmVhbV9jb25zdW1lcl9leHRlcm5hbCkKICAgICB7CiAgICAgICAgIGNvbnN0
IFRUeXBlICpzYW1wbGVyRXh0ZXJuYWxPRVMgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0U2FtcGxlckV4
dGVybmFsT0VTKTsKIApAQCAtMzE1LDYgKzMxNSwxNyBAQCB2b2lkIEluc2VydEJ1aWx0SW5GdW5j
dGlvbnMoc2g6OkdMZW51bSB0CiAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19C
VUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlTG9kIiwgZ3NhbXBsZXJDdWJlLCBmbG9hdDMsIGZsb2F0
MSk7CiAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQs
ICJ0ZXh0dXJlTG9kIiwgZ3NhbXBsZXIyREFycmF5LCBmbG9hdDMsIGZsb2F0MSk7CiAKKyAgICBp
ZiAocmVzb3VyY2VzLk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWxfZXNzbDMpCisgICAgeworICAgICAg
ICBjb25zdCBUVHlwZSAqc2FtcGxlckV4dGVybmFsT0VTID0gVENhY2hlOjpnZXRUeXBlKEVidFNh
bXBsZXJFeHRlcm5hbE9FUyk7CisKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihF
U1NMM19CVUlMVElOUywgZmxvYXQ0LCAidGV4dHVyZSIsIHNhbXBsZXJFeHRlcm5hbE9FUywgZmxv
YXQyKTsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywg
ZmxvYXQ0LCAidGV4dHVyZVByb2oiLCBzYW1wbGVyRXh0ZXJuYWxPRVMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxvYXQzKTsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihFU1NMM19CVUlMVElOUywgZmxvYXQ0LCAidGV4dHVyZVByb2oiLCBzYW1wbGVyRXh0
ZXJuYWxPRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQ0KTsKKyAg
ICB9CisKICAgICBpZiAodHlwZSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpCiAgICAgewogICAgICAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRleHR1
cmUiLCBnc2FtcGxlcjJELCBmbG9hdDIsIGZsb2F0MSk7CkBAIC0zMjQsNiArMzM1LDE4IEBAIHZv
aWQgSW5zZXJ0QnVpbHRJbkZ1bmN0aW9ucyhzaDo6R0xlbnVtIHQKICAgICAgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlUHJvaiIsIGdz
YW1wbGVyMkQsIGZsb2F0MywgZmxvYXQxKTsKICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlUHJvaiIsIGdzYW1wbGVyMkQsIGZs
b2F0NCwgZmxvYXQxKTsKICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19C
VUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlUHJvaiIsIGdzYW1wbGVyM0QsIGZsb2F0NCwgZmxvYXQx
KTsKKworICAgICAgICBpZiAocmVzb3VyY2VzLk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWxfZXNzbDMp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IFRUeXBlICpzYW1wbGVyRXh0ZXJuYWxPRVMg
PSBUQ2FjaGU6OmdldFR5cGUoRWJ0U2FtcGxlckV4dGVybmFsT0VTKTsKKworICAgICAgICAgICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZmxvYXQ0LCAidGV4dHVy
ZSIsIHNhbXBsZXJFeHRlcm5hbE9FUywgZmxvYXQyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbG9hdDEpOworICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihFU1NMM19CVUlMVElOUywgZmxvYXQ0LCAidGV4dHVyZVByb2oiLCBzYW1wbGVyRXh0ZXJu
YWxPRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0MywgZmxv
YXQxKTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJ
TlMsIGZsb2F0NCwgInRleHR1cmVQcm9qIiwgc2FtcGxlckV4dGVybmFsT0VTLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDQsIGZsb2F0MSk7CisgICAgICAgIH0K
ICAgICB9CiAKICAgICBjb25zdCBUVHlwZSAqc2FtcGxlcjJEU2hhZG93ID0gVENhY2hlOjpnZXRU
eXBlKEVidFNhbXBsZXIyRFNoYWRvdyk7CkBAIC0zNTEsNiArMzc0LDEzIEBAIHZvaWQgSW5zZXJ0
QnVpbHRJbkZ1bmN0aW9ucyhzaDo6R0xlbnVtIHQKICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKEVTU0wzX0JVSUxUSU5TLCBpbnQyLCAidGV4dHVyZVNpemUiLCBzYW1wbGVyQ3ViZVNoYWRv
dywgaW50MSk7CiAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywg
aW50MywgInRleHR1cmVTaXplIiwgc2FtcGxlcjJEQXJyYXlTaGFkb3csIGludDEpOwogCisgICAg
aWYgKHJlc291cmNlcy5PRVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vzc2wzKQorICAgIHsKKyAgICAg
ICAgY29uc3QgVFR5cGUgKnNhbXBsZXJFeHRlcm5hbE9FUyA9IFRDYWNoZTo6Z2V0VHlwZShFYnRT
YW1wbGVyRXh0ZXJuYWxPRVMpOworCisgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
RVNTTDNfQlVJTFRJTlMsIGludDIsICJ0ZXh0dXJlU2l6ZSIsIHNhbXBsZXJFeHRlcm5hbE9FUywg
aW50MSk7CisgICAgfQorCiAgICAgaWYgKHR5cGUgPT0gR0xfRlJBR01FTlRfU0hBREVSKQogICAg
IHsKICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9w
REZkeCwgZ2VuVHlwZSwgImRGZHgiLCBnZW5UeXBlKTsKQEAgLTQwMyw2ICs0MzMsMTQgQEAgdm9p
ZCBJbnNlcnRCdWlsdEluRnVuY3Rpb25zKHNoOjpHTGVudW0gdAogICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4ZWxGZXRjaCIsIGdzYW1wbGVy
M0QsIGludDMsIGludDEpOwogICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJ
TFRJTlMsIGd2ZWM0LCAidGV4ZWxGZXRjaCIsIGdzYW1wbGVyMkRBcnJheSwgaW50MywgaW50MSk7
CiAKKyAgICBpZiAocmVzb3VyY2VzLk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWxfZXNzbDMpCisgICAg
eworICAgICAgICBjb25zdCBUVHlwZSAqc2FtcGxlckV4dGVybmFsT0VTID0gVENhY2hlOjpnZXRU
eXBlKEVidFNhbXBsZXJFeHRlcm5hbE9FUyk7CisKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihFU1NMM19CVUlMVElOUywgZmxvYXQ0LCAidGV4ZWxGZXRjaCIsIHNhbXBsZXJFeHRl
cm5hbE9FUywgaW50MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxKTsK
KyAgICB9CisKICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBn
dmVjNCwgInRleGVsRmV0Y2hPZmZzZXQiLCBnc2FtcGxlcjJELCBpbnQyLCBpbnQxLCBpbnQyKTsK
ICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRl
eGVsRmV0Y2hPZmZzZXQiLCBnc2FtcGxlcjNELCBpbnQzLCBpbnQxLCBpbnQzKTsKICAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRleGVsRmV0Y2hP
ZmZzZXQiLCBnc2FtcGxlcjJEQXJyYXksIGludDMsIGludDEsIGludDIpOwpAQCAtNDM2LDQ2ICs0
NzQsMTA2IEBAIHZvaWQgSW5zZXJ0QnVpbHRJbkZ1bmN0aW9ucyhzaDo6R0xlbnVtIHQKICAgICAv
LwogICAgIFRGaWVsZExpc3QgKmZpZWxkcyA9IE5ld1Bvb2xURmllbGRMaXN0KCk7CiAgICAgVFNv
dXJjZUxvYyB6ZXJvU291cmNlTG9jID0gezAsIDAsIDAsIDB9OwotICAgIFRGaWVsZCAqbmVhciA9
IG5ldyBURmllbGQobmV3IFRUeXBlKEVidEZsb2F0LCBFYnBIaWdoLCBFdnFHbG9iYWwsIDEpLCBO
ZXdQb29sVFN0cmluZygibmVhciIpLCB6ZXJvU291cmNlTG9jKTsKLSAgICBURmllbGQgKmZhciA9
IG5ldyBURmllbGQobmV3IFRUeXBlKEVidEZsb2F0LCBFYnBIaWdoLCBFdnFHbG9iYWwsIDEpLCBO
ZXdQb29sVFN0cmluZygiZmFyIiksIHplcm9Tb3VyY2VMb2MpOwotICAgIFRGaWVsZCAqZGlmZiA9
IG5ldyBURmllbGQobmV3IFRUeXBlKEVidEZsb2F0LCBFYnBIaWdoLCBFdnFHbG9iYWwsIDEpLCBO
ZXdQb29sVFN0cmluZygiZGlmZiIpLCB6ZXJvU291cmNlTG9jKTsKKyAgICBhdXRvIGhpZ2hwRmxv
YXQxICAgICAgICAgPSBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gsIEV2cUdsb2JhbCwgMSk7
CisgICAgVEZpZWxkICpuZWFyICAgICAgICAgICAgID0gbmV3IFRGaWVsZChoaWdocEZsb2F0MSwg
TmV3UG9vbFRTdHJpbmcoIm5lYXIiKSwgemVyb1NvdXJjZUxvYyk7CisgICAgVEZpZWxkICpmYXIg
ICAgICAgICAgICAgID0gbmV3IFRGaWVsZChoaWdocEZsb2F0MSwgTmV3UG9vbFRTdHJpbmcoImZh
ciIpLCB6ZXJvU291cmNlTG9jKTsKKyAgICBURmllbGQgKmRpZmYgICAgICAgICAgICAgPSBuZXcg
VEZpZWxkKGhpZ2hwRmxvYXQxLCBOZXdQb29sVFN0cmluZygiZGlmZiIpLCB6ZXJvU291cmNlTG9j
KTsKICAgICBmaWVsZHMtPnB1c2hfYmFjayhuZWFyKTsKICAgICBmaWVsZHMtPnB1c2hfYmFjayhm
YXIpOwogICAgIGZpZWxkcy0+cHVzaF9iYWNrKGRpZmYpOwogICAgIFRTdHJ1Y3R1cmUgKmRlcHRo
UmFuZ2VTdHJ1Y3QgPSBuZXcgVFN0cnVjdHVyZShOZXdQb29sVFN0cmluZygiZ2xfRGVwdGhSYW5n
ZVBhcmFtZXRlcnMiKSwgZmllbGRzKTsKLSAgICBUVmFyaWFibGUgKmRlcHRoUmFuZ2VQYXJhbWV0
ZXJzID0gbmV3IFRWYXJpYWJsZSgmZGVwdGhSYW5nZVN0cnVjdC0+bmFtZSgpLCBkZXB0aFJhbmdl
U3RydWN0LCB0cnVlKTsKKyAgICBUVmFyaWFibGUgKmRlcHRoUmFuZ2VQYXJhbWV0ZXJzID0KKyAg
ICAgICAgbmV3IFRWYXJpYWJsZSgmZGVwdGhSYW5nZVN0cnVjdC0+bmFtZSgpLCBUVHlwZShkZXB0
aFJhbmdlU3RydWN0KSwgdHJ1ZSk7CiAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KENPTU1PTl9CVUlM
VElOUywgZGVwdGhSYW5nZVBhcmFtZXRlcnMpOwogICAgIFRWYXJpYWJsZSAqZGVwdGhSYW5nZSA9
IG5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0RlcHRoUmFuZ2UiKSwgVFR5cGUoZGVw
dGhSYW5nZVN0cnVjdCkpOwogICAgIGRlcHRoUmFuZ2UtPnNldFF1YWxpZmllcihFdnFVbmlmb3Jt
KTsKKyAgICAvLyBFbnN1cmUgd2UgZXZhbHVhdGUgdGhlIG1hbmdsZWQgbmFtZSBmb3IgZGVwdGgg
cmFuZ2UsIHNvIHdlIGFsbG9jYXRlIHRvIHRoZSBjdXJyZW50IHNjb3BlLgorICAgIGRlcHRoUmFu
Z2VQYXJhbWV0ZXJzLT5nZXRUeXBlKCkuZ2V0TWFuZ2xlZE5hbWUoKTsKKyAgICBkZXB0aFJhbmdl
LT5nZXRUeXBlKCkuZ2V0TWFuZ2xlZE5hbWUoKTsKICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoQ09N
TU9OX0JVSUxUSU5TLCBkZXB0aFJhbmdlKTsKIAogICAgIC8vCiAgICAgLy8gSW1wbGVtZW50YXRp
b24gZGVwZW5kZW50IGJ1aWx0LWluIGNvbnN0YW50cy4KICAgICAvLwotICAgIHN5bWJvbFRhYmxl
Lmluc2VydENvbnN0SW50KENPTU1PTl9CVUlMVElOUywgImdsX01heFZlcnRleEF0dHJpYnMiLCBy
ZXNvdXJjZXMuTWF4VmVydGV4QXR0cmlicyk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJ
bnQoQ09NTU9OX0JVSUxUSU5TLCAiZ2xfTWF4VmVydGV4VW5pZm9ybVZlY3RvcnMiLCByZXNvdXJj
ZXMuTWF4VmVydGV4VW5pZm9ybVZlY3RvcnMpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydENvbnN0
SW50KENPTU1PTl9CVUlMVElOUywgImdsX01heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzIiwgcmVz
b3VyY2VzLk1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNl
cnRDb25zdEludChDT01NT05fQlVJTFRJTlMsICJnbF9NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVu
aXRzIiwgcmVzb3VyY2VzLk1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpOwotICAgIHN5bWJv
bFRhYmxlLmluc2VydENvbnN0SW50KENPTU1PTl9CVUlMVElOUywgImdsX01heFRleHR1cmVJbWFn
ZVVuaXRzIiwgcmVzb3VyY2VzLk1heFRleHR1cmVJbWFnZVVuaXRzKTsKLSAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRDb25zdEludChDT01NT05fQlVJTFRJTlMsICJnbF9NYXhGcmFnbWVudFVuaWZvcm1W
ZWN0b3JzIiwgcmVzb3VyY2VzLk1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMpOworICAgIHN5bWJv
bFRhYmxlLmluc2VydENvbnN0SW50KENPTU1PTl9CVUlMVElOUywgImdsX01heFZlcnRleEF0dHJp
YnMiLCByZXNvdXJjZXMuTWF4VmVydGV4QXR0cmlicywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFYnBNZWRpdW0pOworICAgIHN5bWJvbFRhYmxlLmluc2VydENvbnN0SW50KENPTU1P
Tl9CVUlMVElOUywgImdsX01heFZlcnRleFVuaWZvcm1WZWN0b3JzIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXNvdXJjZXMuTWF4VmVydGV4VW5pZm9ybVZlY3RvcnMsIEVicE1l
ZGl1bSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJbnQoQ09NTU9OX0JVSUxUSU5TLCAi
Z2xfTWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc291cmNlcy5NYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cywgRWJwTWVkaXVtKTsK
KyAgICBzeW1ib2xUYWJsZS5pbnNlcnRDb25zdEludChDT01NT05fQlVJTFRJTlMsICJnbF9NYXhD
b21iaW5lZFRleHR1cmVJbWFnZVVuaXRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXNvdXJjZXMuTWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cywgRWJwTWVkaXVtKTsKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRDb25zdEludChDT01NT05fQlVJTFRJTlMsICJnbF9NYXhUZXh0
dXJlSW1hZ2VVbml0cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2Vz
Lk1heFRleHR1cmVJbWFnZVVuaXRzLCBFYnBNZWRpdW0pOworICAgIHN5bWJvbFRhYmxlLmluc2Vy
dENvbnN0SW50KENPTU1PTl9CVUlMVElOUywgImdsX01heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlcy5NYXhGcmFnbWVudFVu
aWZvcm1WZWN0b3JzLCBFYnBNZWRpdW0pOwogCi0gICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJ
bnQoRVNTTDFfQlVJTFRJTlMsICJnbF9NYXhWYXJ5aW5nVmVjdG9ycyIsIHJlc291cmNlcy5NYXhW
YXJ5aW5nVmVjdG9ycyk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJbnQoRVNTTDFfQlVJ
TFRJTlMsICJnbF9NYXhWYXJ5aW5nVmVjdG9ycyIsIHJlc291cmNlcy5NYXhWYXJ5aW5nVmVjdG9y
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFYnBNZWRpdW0pOwogCi0gICAgaWYg
KHNwZWMgIT0gU0hfQ1NTX1NIQURFUlNfU1BFQykKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRDb25z
dEludChDT01NT05fQlVJTFRJTlMsICJnbF9NYXhEcmF3QnVmZmVycyIsIHJlc291cmNlcy5NYXhE
cmF3QnVmZmVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFYnBNZWRpdW0pOwor
ICAgIGlmIChyZXNvdXJjZXMuRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWQpCiAgICAgewotICAgICAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRDb25zdEludChDT01NT05fQlVJTFRJTlMsICJnbF9NYXhEcmF3
QnVmZmVycyIsIHJlc291cmNlcy5NYXhEcmF3QnVmZmVycyk7Ci0gICAgICAgIGlmIChyZXNvdXJj
ZXMuRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN5bWJv
bFRhYmxlLmluc2VydENvbnN0SW50RXh0KENPTU1PTl9CVUlMVElOUywgIkdMX0VYVF9ibGVuZF9m
dW5jX2V4dGVuZGVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJnbF9NYXhEdWFsU291cmNlRHJhd0J1ZmZlcnNFWFQiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzLk1heER1YWxTb3VyY2VEcmF3QnVmZmVycyk7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRDb25zdEludChFU1NM
M19CVUlMVElOUywgImdsX01heFZlcnRleE91dHB1dFZlY3RvcnMiLCByZXNvdXJjZXMuTWF4VmVy
dGV4T3V0cHV0VmVjdG9ycyk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJbnQoRVNTTDNf
QlVJTFRJTlMsICJnbF9NYXhGcmFnbWVudElucHV0VmVjdG9ycyIsIHJlc291cmNlcy5NYXhGcmFn
bWVudElucHV0VmVjdG9ycyk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJbnQoRVNTTDNf
QlVJTFRJTlMsICJnbF9NaW5Qcm9ncmFtVGV4ZWxPZmZzZXQiLCByZXNvdXJjZXMuTWluUHJvZ3Jh
bVRleGVsT2Zmc2V0KTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRDb25zdEludChFU1NMM19CVUlM
VElOUywgImdsX01heFByb2dyYW1UZXhlbE9mZnNldCIsIHJlc291cmNlcy5NYXhQcm9ncmFtVGV4
ZWxPZmZzZXQpOworICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRDb25zdEludEV4dChDT01NT05f
QlVJTFRJTlMsICJHTF9FWFRfYmxlbmRfZnVuY19leHRlbmRlZCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJnbF9NYXhEdWFsU291cmNlRHJhd0J1ZmZlcnNFWFQiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXMuTWF4RHVhbFNv
dXJjZURyYXdCdWZmZXJzKTsKKyAgICB9CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRDb25zdElu
dChFU1NMM19CVUlMVElOUywgImdsX01heFZlcnRleE91dHB1dFZlY3RvcnMiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlcy5NYXhWZXJ0ZXhPdXRwdXRWZWN0b3JzLCBF
YnBNZWRpdW0pOworICAgIHN5bWJvbFRhYmxlLmluc2VydENvbnN0SW50KEVTU0wzX0JVSUxUSU5T
LCAiZ2xfTWF4RnJhZ21lbnRJbnB1dFZlY3RvcnMiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc291cmNlcy5NYXhGcmFnbWVudElucHV0VmVjdG9ycywgRWJwTWVkaXVtKTsKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRDb25zdEludChFU1NMM19CVUlMVElOUywgImdsX01pblByb2dy
YW1UZXhlbE9mZnNldCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2Vz
Lk1pblByb2dyYW1UZXhlbE9mZnNldCwgRWJwTWVkaXVtKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNl
cnRDb25zdEludChFU1NMM19CVUlMVElOUywgImdsX01heFByb2dyYW1UZXhlbE9mZnNldCIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzLk1heFByb2dyYW1UZXhlbE9m
ZnNldCwgRWJwTWVkaXVtKTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydENvbnN0SW50KEVTU0wz
XzFfQlVJTFRJTlMsICJnbF9NYXhJbWFnZVVuaXRzIiwgcmVzb3VyY2VzLk1heEltYWdlVW5pdHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWJwTWVkaXVtKTsKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRDb25zdEludChFU1NMM18xX0JVSUxUSU5TLCAiZ2xfTWF4VmVydGV4SW1hZ2VV
bmlmb3JtcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzLk1heFZl
cnRleEltYWdlVW5pZm9ybXMsIEVicE1lZGl1bSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29u
c3RJbnQoRVNTTDNfMV9CVUlMVElOUywgImdsX01heEZyYWdtZW50SW1hZ2VVbmlmb3JtcyIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzLk1heEZyYWdtZW50SW1hZ2VV
bmlmb3JtcywgRWJwTWVkaXVtKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRDb25zdEludChFU1NM
M18xX0JVSUxUSU5TLCAiZ2xfTWF4Q29tcHV0ZUltYWdlVW5pZm9ybXMiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc291cmNlcy5NYXhDb21wdXRlSW1hZ2VVbmlmb3JtcywgRWJw
TWVkaXVtKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRDb25zdEludChFU1NMM18xX0JVSUxUSU5T
LCAiZ2xfTWF4Q29tYmluZWRJbWFnZVVuaWZvcm1zIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXNvdXJjZXMuTWF4Q29tYmluZWRJbWFnZVVuaWZvcm1zLCBFYnBNZWRpdW0pOwor
CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJbnQoRVNTTDNfMV9CVUlMVElOUywgImdsX01h
eENvbWJpbmVkU2hhZGVyT3V0cHV0UmVzb3VyY2VzIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXNvdXJjZXMuTWF4Q29tYmluZWRTaGFkZXJPdXRwdXRSZXNvdXJjZXMsIEVicE1l
ZGl1bSk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRDb25zdEl2ZWMzKEVTU0wzXzFfQlVJTFRJ
TlMsICJnbF9NYXhDb21wdXRlV29ya0dyb3VwQ291bnQiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzb3VyY2VzLk1heENvbXB1dGVXb3JrR3JvdXBDb3VudCwgRWJwSGlnaCk7
CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJdmVjMyhFU1NMM18xX0JVSUxUSU5TLCAiZ2xf
TWF4Q29tcHV0ZVdvcmtHcm91cFNpemUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzb3VyY2VzLk1heENvbXB1dGVXb3JrR3JvdXBTaXplLCBFYnBIaWdoKTsKKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnRDb25zdEludChFU1NMM18xX0JVSUxUSU5TLCAiZ2xfTWF4Q29tcHV0ZVVu
aWZvcm1Db21wb25lbnRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJj
ZXMuTWF4Q29tcHV0ZVVuaWZvcm1Db21wb25lbnRzLCBFYnBNZWRpdW0pOworICAgIHN5bWJvbFRh
YmxlLmluc2VydENvbnN0SW50KEVTU0wzXzFfQlVJTFRJTlMsICJnbF9NYXhDb21wdXRlVGV4dHVy
ZUltYWdlVW5pdHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlcy5N
YXhDb21wdXRlVGV4dHVyZUltYWdlVW5pdHMsIEVicE1lZGl1bSk7CisKKyAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRDb25zdEludChFU1NMM18xX0JVSUxUSU5TLCAiZ2xfTWF4Q29tcHV0ZUF0b21pY0Nv
dW50ZXJzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXMuTWF4Q29t
cHV0ZUF0b21pY0NvdW50ZXJzLCBFYnBNZWRpdW0pOworICAgIHN5bWJvbFRhYmxlLmluc2VydENv
bnN0SW50KEVTU0wzXzFfQlVJTFRJTlMsICJnbF9NYXhDb21wdXRlQXRvbWljQ291bnRlckJ1ZmZl
cnMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlcy5NYXhDb21wdXRl
QXRvbWljQ291bnRlckJ1ZmZlcnMsIEVicE1lZGl1bSk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNl
cnRDb25zdEludChFU1NMM18xX0JVSUxUSU5TLCAiZ2xfTWF4VmVydGV4QXRvbWljQ291bnRlcnMi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlcy5NYXhWZXJ0ZXhBdG9t
aWNDb3VudGVycywgRWJwTWVkaXVtKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRDb25zdEludChF
U1NMM18xX0JVSUxUSU5TLCAiZ2xfTWF4RnJhZ21lbnRBdG9taWNDb3VudGVycyIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzLk1heEZyYWdtZW50QXRvbWljQ291bnRl
cnMsIEVicE1lZGl1bSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJbnQoRVNTTDNfMV9C
VUlMVElOUywgImdsX01heENvbWJpbmVkQXRvbWljQ291bnRlcnMiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc291cmNlcy5NYXhDb21iaW5lZEF0b21pY0NvdW50ZXJzLCBFYnBN
ZWRpdW0pOworICAgIHN5bWJvbFRhYmxlLmluc2VydENvbnN0SW50KEVTU0wzXzFfQlVJTFRJTlMs
ICJnbF9NYXhBdG9taWNDb3VudGVyQmluZGluZ3MiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc291cmNlcy5NYXhBdG9taWNDb3VudGVyQmluZGluZ3MsIEVicE1lZGl1bSk7CisK
KyAgICBzeW1ib2xUYWJsZS5pbnNlcnRDb25zdEludChFU1NMM18xX0JVSUxUSU5TLCAiZ2xfTWF4
VmVydGV4QXRvbWljQ291bnRlckJ1ZmZlcnMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc291cmNlcy5NYXhWZXJ0ZXhBdG9taWNDb3VudGVyQnVmZmVycywgRWJwTWVkaXVtKTsK
KyAgICBzeW1ib2xUYWJsZS5pbnNlcnRDb25zdEludChFU1NMM18xX0JVSUxUSU5TLCAiZ2xfTWF4
RnJhZ21lbnRBdG9taWNDb3VudGVyQnVmZmVycyIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzb3VyY2VzLk1heEZyYWdtZW50QXRvbWljQ291bnRlckJ1ZmZlcnMsIEVicE1lZGl1
bSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJbnQoRVNTTDNfMV9CVUlMVElOUywgImds
X01heENvbWJpbmVkQXRvbWljQ291bnRlckJ1ZmZlcnMiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc291cmNlcy5NYXhDb21iaW5lZEF0b21pY0NvdW50ZXJCdWZmZXJzLCBFYnBN
ZWRpdW0pOworICAgIHN5bWJvbFRhYmxlLmluc2VydENvbnN0SW50KEVTU0wzXzFfQlVJTFRJTlMs
ICJnbF9NYXhBdG9taWNDb3VudGVyQnVmZmVyU2l6ZSIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzb3VyY2VzLk1heEF0b21pY0NvdW50ZXJCdWZmZXJTaXplLCBFYnBNZWRpdW0p
OwogfQogCiB2b2lkIElkZW50aWZ5QnVpbHRJbnMoc2g6OkdMZW51bSB0eXBlLCBTaFNoYWRlclNw
ZWMgc3BlYywKQEAgLTQ4OSw4NSArNTg3LDczIEBAIHZvaWQgSWRlbnRpZnlCdWlsdElucyhzaDo6
R0xlbnVtIHR5cGUsIFMKICAgICBzd2l0Y2ggKHR5cGUpCiAgICAgewogICAgICAgY2FzZSBHTF9G
UkFHTUVOVF9TSEFERVI6Ci0gICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChDT01NT05fQlVJTFRJ
TlMsIG5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0ZyYWdDb29yZCIpLAotICAgICAg
ICAgICAgVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxRnJhZ0Nvb3JkLCA0KSkpOwotICAg
ICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoQ09NTU9OX0JVSUxUSU5TLCBuZXcgVFZhcmlhYmxlKE5l
d1Bvb2xUU3RyaW5nKCJnbF9Gcm9udEZhY2luZyIpLAotICAgICAgICAgICAgVFR5cGUoRWJ0Qm9v
bCwgIEVicFVuZGVmaW5lZCwgRXZxRnJvbnRGYWNpbmcsIDEpKSk7Ci0gICAgICAgIHN5bWJvbFRh
YmxlLmluc2VydChDT01NT05fQlVJTFRJTlMsIG5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmco
ImdsX1BvaW50Q29vcmQiKSwKLSAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCBFYnBNZWRpdW0s
IEV2cVBvaW50Q29vcmQsIDIpKSk7Ci0KLSAgICAgICAgLy8KLSAgICAgICAgLy8gSW4gQ1NTIFNo
YWRlcnMsIGdsX0ZyYWdDb2xvciwgZ2xfRnJhZ0RhdGEsIGFuZCBnbF9NYXhEcmF3QnVmZmVycyBh
cmUgbm90IGF2YWlsYWJsZS4KLSAgICAgICAgLy8gSW5zdGVhZCwgY3NzX01peENvbG9yIGFuZCBj
c3NfQ29sb3JNYXRyaXggYXJlIGF2YWlsYWJsZS4KLSAgICAgICAgLy8KLSAgICAgICAgaWYgKHNw
ZWMgIT0gU0hfQ1NTX1NIQURFUlNfU1BFQykKLSAgICAgICAgewotICAgICAgICAgICAgc3ltYm9s
VGFibGUuaW5zZXJ0KEVTU0wxX0JVSUxUSU5TLCBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5n
KCJnbF9GcmFnQ29sb3IiKSwKLSAgICAgICAgICAgICAgICBUVHlwZShFYnRGbG9hdCwgRWJwTWVk
aXVtLCBFdnFGcmFnQ29sb3IsIDQpKSk7Ci0gICAgICAgICAgICBUVHlwZSBmcmFnRGF0YShFYnRG
bG9hdCwgRWJwTWVkaXVtLCBFdnFGcmFnRGF0YSwgNCwgMSwgdHJ1ZSk7Ci0gICAgICAgICAgICBm
cmFnRGF0YS5zZXRBcnJheVNpemUocmVzb3VyY2VzLk1heERyYXdCdWZmZXJzKTsKLSAgICAgICAg
ICAgIHN5bWJvbFRhYmxlLmluc2VydChFU1NMMV9CVUlMVElOUywgbmV3IFRWYXJpYWJsZShOZXdQ
b29sVFN0cmluZygiZ2xfRnJhZ0RhdGEiKSwgZnJhZ0RhdGEpKTsKLQotICAgICAgICAgICAgaWYg
KHJlc291cmNlcy5FWFRfYmxlbmRfZnVuY19leHRlbmRlZCkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoCi0gICAgICAgICAgICAgICAgICAgIEVTU0wx
X0JVSUxUSU5TLCAiR0xfRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWQiLAotICAgICAgICAgICAgICAg
ICAgICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9TZWNvbmRhcnlGcmFnQ29sb3JF
WFQiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUVHlwZShFYnRGbG9hdCwg
RWJwTWVkaXVtLCBFdnFTZWNvbmRhcnlGcmFnQ29sb3JFWFQsIDQpKSk7Ci0gICAgICAgICAgICAg
ICAgVFR5cGUgc2Vjb25kYXJ5RnJhZ0RhdGEoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxU2Vjb25k
YXJ5RnJhZ0RhdGFFWFQsIDQsIDEsIHRydWUpOwotICAgICAgICAgICAgICAgIHNlY29uZGFyeUZy
YWdEYXRhLnNldEFycmF5U2l6ZShyZXNvdXJjZXMuTWF4RHVhbFNvdXJjZURyYXdCdWZmZXJzKTsK
LSAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoCi0gICAgICAgICAgICAgICAgICAg
IEVTU0wxX0JVSUxUSU5TLCAiR0xfRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWQiLAotICAgICAgICAg
ICAgICAgICAgICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9TZWNvbmRhcnlGcmFn
RGF0YUVYVCIpLCBzZWNvbmRhcnlGcmFnRGF0YSkpOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBpZiAocmVzb3VyY2VzLkVYVF9mcmFnX2RlcHRoKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydCgKLSAgICAgICAgICAgICAgICAgICAgRVNTTDFf
QlVJTFRJTlMsICJHTF9FWFRfZnJhZ19kZXB0aCIsCi0gICAgICAgICAgICAgICAgICAgIG5ldyBU
VmFyaWFibGUoCi0gICAgICAgICAgICAgICAgICAgICAgICBOZXdQb29sVFN0cmluZygiZ2xfRnJh
Z0RlcHRoRVhUIiksCi0gICAgICAgICAgICAgICAgICAgICAgICBUVHlwZShFYnRGbG9hdCwgcmVz
b3VyY2VzLkZyYWdtZW50UHJlY2lzaW9uSGlnaCA/IEVicEhpZ2ggOiBFYnBNZWRpdW0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFdnFGcmFnRGVwdGhFWFQsIDEpKSk7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChFU1NMM19CVUlMVElOUywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3Ry
aW5nKCJnbF9GcmFnRGVwdGgiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCBFYnBIaWdoLCBFdnFGcmFnRGVwdGgsIDEpKSk7Ci0K
LSAgICAgICAgICAgIGlmIChyZXNvdXJjZXMuRVhUX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCB8
fCByZXNvdXJjZXMuTlZfc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIFRUeXBlIGxhc3RGcmFnRGF0YShFYnRGbG9hdCwgRWJwTWVkaXVtLCBF
dnFMYXN0RnJhZ0RhdGEsIDQsIDEsIHRydWUpOwotICAgICAgICAgICAgICAgIGxhc3RGcmFnRGF0
YS5zZXRBcnJheVNpemUocmVzb3VyY2VzLk1heERyYXdCdWZmZXJzKTsKLQotICAgICAgICAgICAg
ICAgIGlmIChyZXNvdXJjZXMuRVhUX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCkKLSAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChFU1NMMV9C
VUlMVElOUywgIkdMX0VYVF9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2giLAotICAgICAgICAgICAg
ICAgICAgICAgICAgbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfTGFzdEZyYWdEYXRh
IiksIGxhc3RGcmFnRGF0YSkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBl
bHNlIGlmIChyZXNvdXJjZXMuTlZfc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoKQotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KEVTU0wxX0JV
SUxUSU5TLCAiR0xfTlZfc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0xhc3RGcmFnQ29sb3Ii
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2
cUxhc3RGcmFnQ29sb3IsIDQpKSk7Ci0gICAgICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmlu
c2VydChFU1NMMV9CVUlMVElOUywgIkdMX05WX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9M
YXN0RnJhZ0RhdGEiKSwgbGFzdEZyYWdEYXRhKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAocmVzb3VyY2VzLkFSTV9zaGFkZXJfZnJhbWVi
dWZmZXJfZmV0Y2gpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3ltYm9sVGFibGUu
aW5zZXJ0KEVTU0wxX0JVSUxUSU5TLCAiR0xfQVJNX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCIs
Ci0gICAgICAgICAgICAgICAgICAgIG5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0xh
c3RGcmFnQ29sb3JBUk0iKSwKLSAgICAgICAgICAgICAgICAgICAgVFR5cGUoRWJ0RmxvYXQsIEVi
cE1lZGl1bSwgRXZxTGFzdEZyYWdDb2xvciwgNCkpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2Vy
dChFU1NMMV9CVUlMVElOUywgbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiY3NzX01peENv
bG9yIiksCi0gICAgICAgICAgICAgICAgVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxR2xv
YmFsLCA0KSkpOwotICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KEVTU0wxX0JVSUxUSU5T
LCBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJjc3NfQ29sb3JNYXRyaXgiKSwKLSAgICAg
ICAgICAgICAgICBUVHlwZShFYnRGbG9hdCwgRWJwTWVkaXVtLCBFdnFHbG9iYWwsIDQsIDQpKSk7
Ci0gICAgICAgIH0KKyAgICAgIHsKKyAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoQ09NTU9O
X0JVSUxUSU5TLCBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9GcmFnQ29vcmQiKSwK
KyAgICAgICAgICAgICAgVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxRnJhZ0Nvb3JkLCA0
KSkpOworICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChDT01NT05fQlVJTFRJTlMsIG5ldyBU
VmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0Zyb250RmFjaW5nIiksCisgICAgICAgICAgICAg
IFRUeXBlKEVidEJvb2wsICBFYnBVbmRlZmluZWQsIEV2cUZyb250RmFjaW5nLCAxKSkpOworICAg
ICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChDT01NT05fQlVJTFRJTlMsIG5ldyBUVmFyaWFibGUo
TmV3UG9vbFRTdHJpbmcoImdsX1BvaW50Q29vcmQiKSwKKyAgICAgICAgICAgICAgVFR5cGUoRWJ0
RmxvYXQsIEVicE1lZGl1bSwgRXZxUG9pbnRDb29yZCwgMikpKTsKKworICAgICAgICAgIHN5bWJv
bFRhYmxlLmluc2VydChFU1NMMV9CVUlMVElOUywgbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmlu
ZygiZ2xfRnJhZ0NvbG9yIiksCisgICAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCBFYnBNZWRp
dW0sIEV2cUZyYWdDb2xvciwgNCkpKTsKKyAgICAgICAgICBUVHlwZSBmcmFnRGF0YShFYnRGbG9h
dCwgRWJwTWVkaXVtLCBFdnFGcmFnRGF0YSwgNCwgMSwgdHJ1ZSk7CisgICAgICAgICAgZnJhZ0Rh
dGEuc2V0QXJyYXlTaXplKHJlc291cmNlcy5NYXhEcmF3QnVmZmVycyk7CisgICAgICAgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0KEVTU0wxX0JVSUxUSU5TLCBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3Ry
aW5nKCJnbF9GcmFnRGF0YSIpLCBmcmFnRGF0YSkpOworCisgICAgICAgICAgaWYgKHJlc291cmNl
cy5FWFRfYmxlbmRfZnVuY19leHRlbmRlZCkKKyAgICAgICAgICB7CisgICAgICAgICAgICAgIHN5
bWJvbFRhYmxlLmluc2VydCgKKyAgICAgICAgICAgICAgICAgIEVTU0wxX0JVSUxUSU5TLCAiR0xf
RVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWQiLAorICAgICAgICAgICAgICAgICAgbmV3IFRWYXJpYWJs
ZShOZXdQb29sVFN0cmluZygiZ2xfU2Vjb25kYXJ5RnJhZ0NvbG9yRVhUIiksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2cVNlY29u
ZGFyeUZyYWdDb2xvckVYVCwgNCkpKTsKKyAgICAgICAgICAgICAgVFR5cGUgc2Vjb25kYXJ5RnJh
Z0RhdGEoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxU2Vjb25kYXJ5RnJhZ0RhdGFFWFQsIDQsIDEs
IHRydWUpOworICAgICAgICAgICAgICBzZWNvbmRhcnlGcmFnRGF0YS5zZXRBcnJheVNpemUocmVz
b3VyY2VzLk1heER1YWxTb3VyY2VEcmF3QnVmZmVycyk7CisgICAgICAgICAgICAgIHN5bWJvbFRh
YmxlLmluc2VydCgKKyAgICAgICAgICAgICAgICAgIEVTU0wxX0JVSUxUSU5TLCAiR0xfRVhUX2Js
ZW5kX2Z1bmNfZXh0ZW5kZWQiLAorICAgICAgICAgICAgICAgICAgbmV3IFRWYXJpYWJsZShOZXdQ
b29sVFN0cmluZygiZ2xfU2Vjb25kYXJ5RnJhZ0RhdGFFWFQiKSwgc2Vjb25kYXJ5RnJhZ0RhdGEp
KTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBpZiAocmVzb3VyY2VzLkVYVF9mcmFnX2RlcHRo
KQorICAgICAgICAgIHsKKyAgICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KAorICAgICAg
ICAgICAgICAgICAgRVNTTDFfQlVJTFRJTlMsICJHTF9FWFRfZnJhZ19kZXB0aCIsCisgICAgICAg
ICAgICAgICAgICBuZXcgVFZhcmlhYmxlKAorICAgICAgICAgICAgICAgICAgICAgIE5ld1Bvb2xU
U3RyaW5nKCJnbF9GcmFnRGVwdGhFWFQiKSwKKyAgICAgICAgICAgICAgICAgICAgICBUVHlwZShF
YnRGbG9hdCwgcmVzb3VyY2VzLkZyYWdtZW50UHJlY2lzaW9uSGlnaCA/IEVicEhpZ2ggOiBFYnBN
ZWRpdW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZxRnJhZ0RlcHRoRVhULCAxKSkp
OworICAgICAgICAgIH0KKworICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChFU1NMM19CVUlM
VElOUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFRWYXJpYWJsZShOZXdQb29s
VFN0cmluZygiZ2xfRnJhZ0RlcHRoIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVFR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gsIEV2cUZyYWdEZXB0aCwgMSkpKTsK
KworICAgICAgICAgIGlmIChyZXNvdXJjZXMuRVhUX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCB8
fCByZXNvdXJjZXMuTlZfc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoKQorICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgVFR5cGUgbGFzdEZyYWdEYXRhKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2cUxh
c3RGcmFnRGF0YSwgNCwgMSwgdHJ1ZSk7CisgICAgICAgICAgICAgIGxhc3RGcmFnRGF0YS5zZXRB
cnJheVNpemUocmVzb3VyY2VzLk1heERyYXdCdWZmZXJzKTsKKworICAgICAgICAgICAgICBpZiAo
cmVzb3VyY2VzLkVYVF9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2gpCisgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChFU1NMMV9CVUlMVElOUywgIkdM
X0VYVF9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2giLAorICAgICAgICAgICAgICAgICAgICAgIG5l
dyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0xhc3RGcmFnRGF0YSIpLCBsYXN0RnJhZ0Rh
dGEpKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlIGlmIChyZXNvdXJjZXMu
TlZfc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoKQorICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoRVNTTDFfQlVJTFRJTlMsICJHTF9OVl9zaGFkZXJf
ZnJhbWVidWZmZXJfZmV0Y2giLAorICAgICAgICAgICAgICAgICAgICAgIG5ldyBUVmFyaWFibGUo
TmV3UG9vbFRTdHJpbmcoImdsX0xhc3RGcmFnQ29sb3IiKSwKKyAgICAgICAgICAgICAgICAgICAg
ICBUVHlwZShFYnRGbG9hdCwgRWJwTWVkaXVtLCBFdnFMYXN0RnJhZ0NvbG9yLCA0KSkpOworICAg
ICAgICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KEVTU0wxX0JVSUxUSU5TLCAiR0xfTlZf
c2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoIiwKKyAgICAgICAgICAgICAgICAgICAgICBuZXcgVFZh
cmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9MYXN0RnJhZ0RhdGEiKSwgbGFzdEZyYWdEYXRhKSk7
CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAocmVzb3Vy
Y2VzLkFSTV9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2gpCisgICAgICAgICAgeworICAgICAgICAg
ICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoRVNTTDFfQlVJTFRJTlMsICJHTF9BUk1fc2hhZGVyX2Zy
YW1lYnVmZmVyX2ZldGNoIiwKKyAgICAgICAgICAgICAgICAgIG5ldyBUVmFyaWFibGUoTmV3UG9v
bFRTdHJpbmcoImdsX0xhc3RGcmFnQ29sb3JBUk0iKSwKKyAgICAgICAgICAgICAgICAgIFRUeXBl
KEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2cUxhc3RGcmFnQ29sb3IsIDQpKSk7CisgICAgICAgICAg
fQorICAgICAgfQogCiAgICAgICAgIGJyZWFrOwogCkBAIC01ODEsNiArNjY3LDI5IEBAIHZvaWQg
SWRlbnRpZnlCdWlsdElucyhzaDo6R0xlbnVtIHR5cGUsIFMKICAgICAgICAgc3ltYm9sVGFibGUu
aW5zZXJ0KEVTU0wzX0JVSUxUSU5TLCBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9W
ZXJ0ZXhJRCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVFR5cGUoRWJ0SW50LCBFYnBIaWdoLCBFdnFWZXJ0ZXhJRCwgMSkpKTsKICAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0NPTVBVVEVfU0hBREVSOgorICAgICAgeworICAg
ICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChFU1NMM18xX0JVSUxUSU5TLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9OdW1Xb3Jr
R3JvdXBzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFR5
cGUoRWJ0VUludCwgRWJwVW5kZWZpbmVkLCBFdnFOdW1Xb3JrR3JvdXBzLCAzKSkpOworICAgICAg
ICAgIHN5bWJvbFRhYmxlLmluc2VydChFU1NMM18xX0JVSUxUSU5TLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9Xb3JrR3JvdXBT
aXplIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFR5cGUo
RWJ0VUludCwgRWJwVW5kZWZpbmVkLCBFdnFXb3JrR3JvdXBTaXplLCAzKSkpOworICAgICAgICAg
IHN5bWJvbFRhYmxlLmluc2VydChFU1NMM18xX0JVSUxUSU5TLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9Xb3JrR3JvdXBJRCIp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidFVJ
bnQsIEVicFVuZGVmaW5lZCwgRXZxV29ya0dyb3VwSUQsIDMpKSk7CisgICAgICAgICAgc3ltYm9s
VGFibGUuaW5zZXJ0KEVTU0wzXzFfQlVJTFRJTlMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0xvY2FsSW52b2NhdGlvbklEIiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFR5cGUoRWJ0VUlu
dCwgRWJwVW5kZWZpbmVkLCBFdnFMb2NhbEludm9jYXRpb25JRCwgMykpKTsKKyAgICAgICAgICBz
eW1ib2xUYWJsZS5pbnNlcnQoRVNTTDNfMV9CVUlMVElOUywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfR2xvYmFsSW52b2NhdGlv
bklEIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFR5cGUo
RWJ0VUludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWxJbnZvY2F0aW9uSUQsIDMpKSk7CisgICAg
ICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KAorICAgICAgICAgICAgICBFU1NMM18xX0JVSUxUSU5T
LAorICAgICAgICAgICAgICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9Mb2NhbElu
dm9jYXRpb25JbmRleCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidFVJ
bnQsIEVicFVuZGVmaW5lZCwgRXZxTG9jYWxJbnZvY2F0aW9uSW5kZXgsIDEpKSk7CisgICAgICB9
CisgICAgICBicmVhazsKIAogICAgICAgZGVmYXVsdDoKICAgICAgICAgYXNzZXJ0KGZhbHNlICYm
ICJMYW5ndWFnZSBub3Qgc3VwcG9ydGVkIik7CkBAIC01OTQsNiArNzAzLDEwIEBAIHZvaWQgSW5p
dEV4dGVuc2lvbkJlaGF2aW9yKGNvbnN0IFNoQnVpbHQKICAgICAgICAgZXh0QmVoYXZpb3JbIkdM
X09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyJdID0gRUJoVW5kZWZpbmVkOwogICAgIGlmIChyZXNv
dXJjZXMuT0VTX0VHTF9pbWFnZV9leHRlcm5hbCkKICAgICAgICAgZXh0QmVoYXZpb3JbIkdMX09F
U19FR0xfaW1hZ2VfZXh0ZXJuYWwiXSA9IEVCaFVuZGVmaW5lZDsKKyAgICBpZiAocmVzb3VyY2Vz
Lk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWxfZXNzbDMpCisgICAgICAgIGV4dEJlaGF2aW9yWyJHTF9P
RVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vzc2wzIl0gPSBFQmhVbmRlZmluZWQ7CisgICAgaWYgKHJl
c291cmNlcy5OVl9FR0xfc3RyZWFtX2NvbnN1bWVyX2V4dGVybmFsKQorICAgICAgICBleHRCZWhh
dmlvclsiR0xfTlZfRUdMX3N0cmVhbV9jb25zdW1lcl9leHRlcm5hbCJdID0gRUJoVW5kZWZpbmVk
OwogICAgIGlmIChyZXNvdXJjZXMuQVJCX3RleHR1cmVfcmVjdGFuZ2xlKQogICAgICAgICBleHRC
ZWhhdmlvclsiR0xfQVJCX3RleHR1cmVfcmVjdGFuZ2xlIl0gPSBFQmhVbmRlZmluZWQ7CiAgICAg
aWYgKHJlc291cmNlcy5FWFRfYmxlbmRfZnVuY19leHRlbmRlZCkKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemVWYXJpYWJsZXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL0luaXRpYWxpemVWYXJpYWJsZXMuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXpl
VmFyaWFibGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNiwxMTIgKzYsMTAwIEBACiAKICNpbmNs
dWRlICJjb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemVWYXJpYWJsZXMuaCIKIAorI2luY2x1
ZGUgImFuZ2xlX2dsLmgiCiAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisjaW5jbHVkZSAiY29t
cGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNs
YXRvci91dGlsLmgiCiAKIG5hbWVzcGFjZQogewogCi1USW50ZXJtQ29uc3RhbnRVbmlvbiAqY29u
c3RydWN0RmxvYXRDb25zdFVuaW9uTm9kZShjb25zdCBUVHlwZSAmdHlwZSkKK2NsYXNzIFZhcmlh
YmxlSW5pdGlhbGl6ZXIgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogewotICAgIFRUeXBlIG15
VHlwZSA9IHR5cGU7Ci0gICAgdW5zaWduZWQgY2hhciBzaXplID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcj4obXlUeXBlLmdldE5vbWluYWxTaXplKCkpOwotICAgIGlmIChteVR5cGUuaXNNYXRy
aXgoKSkKLSAgICAgICAgc2l6ZSAqPSBzaXplOwotICAgIFRDb25zdGFudFVuaW9uICp1ID0gbmV3
IFRDb25zdGFudFVuaW9uW3NpemVdOwotICAgIGZvciAoaW50IGlpID0gMDsgaWkgPCBzaXplOyAr
K2lpKQotICAgICAgICB1W2lpXS5zZXRGQ29uc3QoMC4wZik7Ci0KLSAgICBteVR5cGUuY2xlYXJB
cnJheW5lc3MoKTsKLSAgICBteVR5cGUuc2V0UXVhbGlmaWVyKEV2cUNvbnN0KTsKLSAgICBUSW50
ZXJtQ29uc3RhbnRVbmlvbiAqbm9kZSA9IG5ldyBUSW50ZXJtQ29uc3RhbnRVbmlvbih1LCBteVR5
cGUpOwotICAgIHJldHVybiBub2RlOwotfQorICBwdWJsaWM6CisgICAgVmFyaWFibGVJbml0aWFs
aXplcihjb25zdCBJbml0VmFyaWFibGVMaXN0ICZ2YXJzKQorICAgICAgICA6IFRJbnRlcm1UcmF2
ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKSwgbVZhcmlhYmxlcyh2YXJzKSwgbUNvZGVJbnNlcnRl
ZChmYWxzZSkKKyAgICB7CisgICAgfQogCi1USW50ZXJtQ29uc3RhbnRVbmlvbiAqY29uc3RydWN0
SW5kZXhOb2RlKGludCBpbmRleCkKLXsKLSAgICBUQ29uc3RhbnRVbmlvbiAqdSA9IG5ldyBUQ29u
c3RhbnRVbmlvblsxXTsKLSAgICB1WzBdLnNldElDb25zdChpbmRleCk7CisgIHByb3RlY3RlZDoK
KyAgICBib29sIHZpc2l0QmluYXJ5KFZpc2l0LCBUSW50ZXJtQmluYXJ5ICpub2RlKSBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgdmlzaXRVbmFyeShWaXNpdCwgVEludGVybVVu
YXJ5ICpub2RlKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgdmlzaXRJZkVs
c2UoVmlzaXQsIFRJbnRlcm1JZkVsc2UgKm5vZGUpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgYm9vbCB2aXNpdExvb3AoVmlzaXQsIFRJbnRlcm1Mb29wICpub2RlKSBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgdmlzaXRCcmFuY2goVmlzaXQsIFRJbnRlcm1CcmFu
Y2ggKm5vZGUpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCB2aXNpdEFnZ3Jl
Z2F0ZShWaXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KKworICAgIGJvb2wgdmlzaXRGdW5jdGlvbkRlZmluaXRpb24oVmlzaXQgdmlzaXQsIFRJ
bnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKm5vZGUpIG92ZXJyaWRlOworCisgIHByaXZhdGU6Cisg
ICAgdm9pZCBpbnNlcnRJbml0Q29kZShUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlKTsKKworICAg
IGNvbnN0IEluaXRWYXJpYWJsZUxpc3QgJm1WYXJpYWJsZXM7CisgICAgYm9vbCBtQ29kZUluc2Vy
dGVkOworfTsKIAotICAgIFRUeXBlIHR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0
LCAxKTsKLSAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqbm9kZSA9IG5ldyBUSW50ZXJtQ29uc3Rh
bnRVbmlvbih1LCB0eXBlKTsKLSAgICByZXR1cm4gbm9kZTsKLX0KKy8vIFZhcmlhYmxlSW5pdGlh
bGl6ZXIgaW1wbGVtZW50YXRpb24uCiAKLX0gIC8vIG5hbWVzcGFjZSBhbm9ueW1vdXMKLQotYm9v
bCBJbml0aWFsaXplVmFyaWFibGVzOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVy
bUFnZ3JlZ2F0ZSAqbm9kZSkKK2Jvb2wgVmFyaWFibGVJbml0aWFsaXplcjo6dmlzaXRGdW5jdGlv
bkRlZmluaXRpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKm5vZGUp
CiB7Ci0gICAgYm9vbCB2aXNpdENoaWxkcmVuID0gIW1Db2RlSW5zZXJ0ZWQ7Ci0gICAgc3dpdGNo
IChub2RlLT5nZXRPcCgpKQorICAgIC8vIEZ1bmN0aW9uIGRlZmluaXRpb24uCisgICAgQVNTRVJU
KHZpc2l0ID09IFByZVZpc2l0KTsKKyAgICBpZiAobm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZv
KCktPmlzTWFpbigpKQogICAgIHsKLSAgICAgIGNhc2UgRU9wU2VxdWVuY2U6Ci0gICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBFT3BGdW5jdGlvbjoKLSAgICAgIHsKLSAgICAgICAgLy8gRnVuY3Rp
b24gZGVmaW5pdGlvbi4KLSAgICAgICAgQVNTRVJUKHZpc2l0ID09IFByZVZpc2l0KTsKLSAgICAg
ICAgaWYgKG5vZGUtPmdldE5hbWUoKSA9PSAibWFpbigiKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlID0gbm9kZS0+Z2V0U2VxdWVuY2UoKTsKLSAgICAg
ICAgICAgIEFTU0VSVCgoc2VxdWVuY2UtPnNpemUoKSA9PSAxKSB8fCAoc2VxdWVuY2UtPnNpemUo
KSA9PSAyKSk7Ci0gICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICpib2R5ID0gTlVMTDsKLSAg
ICAgICAgICAgIGlmIChzZXF1ZW5jZS0+c2l6ZSgpID09IDEpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgYm9keSA9IG5ldyBUSW50ZXJtQWdncmVnYXRlKEVPcFNlcXVlbmNlKTsKLSAg
ICAgICAgICAgICAgICBzZXF1ZW5jZS0+cHVzaF9iYWNrKGJvZHkpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGJvZHkgPSAo
KnNlcXVlbmNlKVsxXS0+Z2V0QXNBZ2dyZWdhdGUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIEFTU0VSVChib2R5KTsKLSAgICAgICAgICAgIGluc2VydEluaXRDb2RlKGJvZHktPmdldFNl
cXVlbmNlKCkpOwotICAgICAgICAgICAgbUNvZGVJbnNlcnRlZCA9IHRydWU7Ci0gICAgICAgIH0K
LSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBkZWZhdWx0OgotICAgICAgICB2aXNpdENo
aWxkcmVuID0gZmFsc2U7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBUSW50ZXJtQmxvY2sgKmJv
ZHkgPSBub2RlLT5nZXRCb2R5KCk7CisgICAgICAgIGluc2VydEluaXRDb2RlKGJvZHktPmdldFNl
cXVlbmNlKCkpOworICAgICAgICBtQ29kZUluc2VydGVkID0gdHJ1ZTsKICAgICB9Ci0gICAgcmV0
dXJuIHZpc2l0Q2hpbGRyZW47CisgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEluaXRpYWxp
emVWYXJpYWJsZXM6Omluc2VydEluaXRDb2RlKFRJbnRlcm1TZXF1ZW5jZSAqc2VxdWVuY2UpCit2
b2lkIFZhcmlhYmxlSW5pdGlhbGl6ZXI6Omluc2VydEluaXRDb2RlKFRJbnRlcm1TZXF1ZW5jZSAq
c2VxdWVuY2UpCiB7Ci0gICAgZm9yIChzaXplX3QgaWkgPSAwOyBpaSA8IG1WYXJpYWJsZXMuc2l6
ZSgpOyArK2lpKQorICAgIGZvciAoY29uc3QgYXV0byAmdmFyIDogbVZhcmlhYmxlcykKICAgICB7
Ci0gICAgICAgIGNvbnN0IEluaXRWYXJpYWJsZUluZm8gJnZhckluZm8gPSBtVmFyaWFibGVzW2lp
XTsKKyAgICAgICAgVFN0cmluZyBuYW1lID0gVFN0cmluZyh2YXIubmFtZS5jX3N0cigpKTsKKyAg
ICAgICAgVFR5cGUgdHlwZSAgID0gc2g6OkdldFNoYWRlclZhcmlhYmxlVHlwZSh2YXIpOwogCi0g
ICAgICAgIGlmICh2YXJJbmZvLnR5cGUuaXNBcnJheSgpKQorICAgICAgICAvLyBBc3NpZ24gdGhl
IGFycmF5IGVsZW1lbnRzIG9uZSBieSBvbmUgdG8ga2VlcCB0aGUgQVNUIGNvbXBhdGlibGUgd2l0
aCBFU1NMIDEuMDAgd2hpY2gKKyAgICAgICAgLy8gZG9lc24ndCBoYXZlIGFycmF5IGFzc2lnbm1l
bnQuCisgICAgICAgIGlmICh2YXIuaXNBcnJheSgpKQogICAgICAgICB7Ci0gICAgICAgICAgICBm
b3IgKGludCBpbmRleCA9IHZhckluZm8udHlwZS5nZXRBcnJheVNpemUoKSAtIDE7IGluZGV4ID49
IDA7IC0taW5kZXgpCisgICAgICAgICAgICBzaXplX3QgcG9zID0gbmFtZS5maW5kX2xhc3Rfb2Yo
J1snKTsKKyAgICAgICAgICAgIGlmIChwb3MgIT0gVFN0cmluZzo6bnBvcykKICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBUSW50ZXJtQmluYXJ5ICphc3NpZ24gPSBuZXcgVEludGVybUJp
bmFyeShFT3BBc3NpZ24pOwotICAgICAgICAgICAgICAgIHNlcXVlbmNlLT5pbnNlcnQoc2VxdWVu
Y2UtPmJlZ2luKCksIGFzc2lnbik7CisgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWUuc3Vic3Ry
KDAsIHBvcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBUVHlwZSBlbGVtZW50VHlwZSA9
IHR5cGU7CisgICAgICAgICAgICBlbGVtZW50VHlwZS5jbGVhckFycmF5bmVzcygpOwogCi0gICAg
ICAgICAgICAgICAgVEludGVybUJpbmFyeSAqaW5kZXhEaXJlY3QgPSBuZXcgVEludGVybUJpbmFy
eShFT3BJbmRleERpcmVjdCk7Ci0gICAgICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9s
ID0gbmV3IFRJbnRlcm1TeW1ib2woMCwgdmFySW5mby5uYW1lLCB2YXJJbmZvLnR5cGUpOwotICAg
ICAgICAgICAgICAgIGluZGV4RGlyZWN0LT5zZXRMZWZ0KHN5bWJvbCk7Ci0gICAgICAgICAgICAg
ICAgVEludGVybUNvbnN0YW50VW5pb24gKmluZGV4Tm9kZSA9IGNvbnN0cnVjdEluZGV4Tm9kZShp
bmRleCk7Ci0gICAgICAgICAgICAgICAgaW5kZXhEaXJlY3QtPnNldFJpZ2h0KGluZGV4Tm9kZSk7
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHZhci5hcnJheVNpemU7
ICsraSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBUSW50ZXJtU3ltYm9sICphcnJh
eVN5bWJvbCA9IG5ldyBUSW50ZXJtU3ltYm9sKDAsIG5hbWUsIHR5cGUpOworICAgICAgICAgICAg
ICAgIFRJbnRlcm1CaW5hcnkgKmVsZW1lbnQgICAgID0gbmV3IFRJbnRlcm1CaW5hcnkoRU9wSW5k
ZXhEaXJlY3QsIGFycmF5U3ltYm9sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQ6OkNyZWF0ZUluZGV4Tm9kZShp
KSk7CiAKLSAgICAgICAgICAgICAgICBhc3NpZ24tPnNldExlZnQoaW5kZXhEaXJlY3QpOworICAg
ICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqemVybyAgICAgICAgPSBUSW50ZXJtVHlwZWQ6OkNy
ZWF0ZVplcm8oZWxlbWVudFR5cGUpOworICAgICAgICAgICAgICAgIFRJbnRlcm1CaW5hcnkgKmFz
c2lnbm1lbnQgPSBuZXcgVEludGVybUJpbmFyeShFT3BBc3NpZ24sIGVsZW1lbnQsIHplcm8pOwog
Ci0gICAgICAgICAgICAgICAgVEludGVybUNvbnN0YW50VW5pb24gKnplcm9Db25zdCA9IGNvbnN0
cnVjdEZsb2F0Q29uc3RVbmlvbk5vZGUodmFySW5mby50eXBlKTsKLSAgICAgICAgICAgICAgICBh
c3NpZ24tPnNldFJpZ2h0KHplcm9Db25zdCk7CisgICAgICAgICAgICAgICAgc2VxdWVuY2UtPmlu
c2VydChzZXF1ZW5jZS0+YmVnaW4oKSwgYXNzaWdubWVudCk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBUSW50ZXJtQmluYXJ5
ICphc3NpZ24gPSBuZXcgVEludGVybUJpbmFyeShFT3BBc3NpZ24pOworICAgICAgICAgICAgVElu
dGVybVN5bWJvbCAqc3ltYm9sID0gbmV3IFRJbnRlcm1TeW1ib2woMCwgbmFtZSwgdHlwZSk7Cisg
ICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnplcm8gICAgPSBUSW50ZXJtVHlwZWQ6OkNyZWF0ZVpl
cm8odHlwZSk7CisKKyAgICAgICAgICAgIFRJbnRlcm1CaW5hcnkgKmFzc2lnbiA9IG5ldyBUSW50
ZXJtQmluYXJ5KEVPcEFzc2lnbiwgc3ltYm9sLCB6ZXJvKTsKICAgICAgICAgICAgIHNlcXVlbmNl
LT5pbnNlcnQoc2VxdWVuY2UtPmJlZ2luKCksIGFzc2lnbik7Ci0gICAgICAgICAgICBUSW50ZXJt
U3ltYm9sICpzeW1ib2wgPSBuZXcgVEludGVybVN5bWJvbCgwLCB2YXJJbmZvLm5hbWUsIHZhcklu
Zm8udHlwZSk7Ci0gICAgICAgICAgICBhc3NpZ24tPnNldExlZnQoc3ltYm9sKTsKLSAgICAgICAg
ICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICp6ZXJvQ29uc3QgPSBjb25zdHJ1Y3RGbG9hdENvbnN0
VW5pb25Ob2RlKHZhckluZm8udHlwZSk7Ci0gICAgICAgICAgICBhc3NpZ24tPnNldFJpZ2h0KHpl
cm9Db25zdCk7CiAgICAgICAgIH0KLQogICAgIH0KIH0KIAorfSAgLy8gbmFtZXNwYWNlIGFub255
bW91cworCit2b2lkIEluaXRpYWxpemVWYXJpYWJsZXMoVEludGVybU5vZGUgKnJvb3QsIGNvbnN0
IEluaXRWYXJpYWJsZUxpc3QgJnZhcnMpCit7CisgICAgVmFyaWFibGVJbml0aWFsaXplciBpbml0
aWFsaXplcih2YXJzKTsKKyAgICByb290LT50cmF2ZXJzZSgmaW5pdGlhbGl6ZXIpOworfQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlh
bGl6ZVZhcmlhYmxlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemVWYXJpYWJsZXMuaAkocmV2aXNpb24gMjA3
ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
SW5pdGlhbGl6ZVZhcmlhYmxlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03LDQ1ICs3LDEzIEBACiAj
aWZuZGVmIENPTVBJTEVSX1RSQU5TTEFUT1JfSU5JVElBTElaRVZBUklBQkxFU19IXwogI2RlZmlu
ZSBDT01QSUxFUl9UUkFOU0xBVE9SX0lOSVRJQUxJWkVWQVJJQUJMRVNfSF8KIAotI2luY2x1ZGUg
ImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgorI2luY2x1ZGUgPEdMU0xBTkcvU2hh
ZGVyTGFuZy5oPgogCi1jbGFzcyBJbml0aWFsaXplVmFyaWFibGVzIDogcHVibGljIFRJbnRlcm1U
cmF2ZXJzZXIKLXsKLSAgcHVibGljOgotICAgIHN0cnVjdCBJbml0VmFyaWFibGVJbmZvCi0gICAg
ewotICAgICAgICBUU3RyaW5nIG5hbWU7Ci0gICAgICAgIFRUeXBlIHR5cGU7CitjbGFzcyBUSW50
ZXJtTm9kZTsKIAotICAgICAgICBJbml0VmFyaWFibGVJbmZvKGNvbnN0IFRTdHJpbmcgJl9uYW1l
LCBjb25zdCBUVHlwZSAmX3R5cGUpCi0gICAgICAgICAgICA6IG5hbWUoX25hbWUpLAotICAgICAg
ICAgICAgICB0eXBlKF90eXBlKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICB9OwotICAgIHR5
cGVkZWYgVFZlY3RvcjxJbml0VmFyaWFibGVJbmZvPiBJbml0VmFyaWFibGVJbmZvTGlzdDsKK3R5
cGVkZWYgc3RkOjp2ZWN0b3I8c2g6OlNoYWRlclZhcmlhYmxlPiBJbml0VmFyaWFibGVMaXN0Owog
Ci0gICAgSW5pdGlhbGl6ZVZhcmlhYmxlcyhjb25zdCBJbml0VmFyaWFibGVJbmZvTGlzdCAmdmFy
cykKLSAgICAgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSksCi0gICAg
ICAgICAgbVZhcmlhYmxlcyh2YXJzKSwKLSAgICAgICAgICBtQ29kZUluc2VydGVkKGZhbHNlKQot
ICAgIHsKLSAgICB9Ci0KLSAgcHJvdGVjdGVkOgotICAgIGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQs
IFRJbnRlcm1CaW5hcnkgKm5vZGUpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9v
bCB2aXNpdFVuYXJ5KFZpc2l0LCBUSW50ZXJtVW5hcnkgKm5vZGUpIG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgYm9vbCB2aXNpdFNlbGVjdGlvbihWaXNpdCwgVEludGVybVNlbGVjdGlv
biAqbm9kZSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIHZpc2l0TG9vcChW
aXNpdCwgVEludGVybUxvb3AgKm5vZGUpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
Ym9vbCB2aXNpdEJyYW5jaChWaXNpdCwgVEludGVybUJyYW5jaCAqbm9kZSkgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KLQotICAgIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJ
bnRlcm1BZ2dyZWdhdGUgKm5vZGUpIG92ZXJyaWRlOwotCi0gIHByaXZhdGU6Ci0gICAgdm9pZCBp
bnNlcnRJbml0Q29kZShUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlKTsKLQotICAgIEluaXRWYXJp
YWJsZUluZm9MaXN0IG1WYXJpYWJsZXM7Ci0gICAgYm9vbCBtQ29kZUluc2VydGVkOwotfTsKKy8v
IFRoaXMgZnVuY3Rpb24gY2Fubm90IGN1cnJlbnRseSBpbml0aWFsaXplIHN0cnVjdHVyZXMgY29u
dGFpbmluZyBhcnJheXMgZm9yIGFuIEVTU0wgMS4wMCBiYWNrZW5kLgordm9pZCBJbml0aWFsaXpl
VmFyaWFibGVzKFRJbnRlcm1Ob2RlICpyb290LCBjb25zdCBJbml0VmFyaWFibGVMaXN0ICZ2YXJz
KTsKIAogI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX0lOSVRJQUxJWkVWQVJJQUJMRVNf
SF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L0ludGVybU5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1O
b2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcsOSArMTcsMTEgQEAKIAogI2luY2x1ZGUgImNv
bW1vbi9tYXRodXRpbC5oIgogI2luY2x1ZGUgImNvbW1vbi9tYXRyaXhfdXRpbHMuaCIKKyNpbmNs
dWRlICJjb21waWxlci90cmFuc2xhdG9yL0RpYWdub3N0aWNzLmgiCiAjaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci9IYXNoTmFtZXMuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9y
L0ludGVybU5vZGUuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1N5bWJvbFRhYmxl
LmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci91dGlsLmgiCiAKIG5hbWVzcGFjZQog
ewpAQCAtMzMsMzkgKzM1LDYgQEAgVFByZWNpc2lvbiBHZXRIaWdoZXJQcmVjaXNpb24oVFByZWNp
c2lvbgogICAgIHJldHVybiBsZWZ0ID4gcmlnaHQgPyBsZWZ0IDogcmlnaHQ7CiB9CiAKLWJvb2wg
VmFsaWRhdGVNdWx0aXBsaWNhdGlvbihUT3BlcmF0b3Igb3AsIGNvbnN0IFRUeXBlICZsZWZ0LCBj
b25zdCBUVHlwZSAmcmlnaHQpCi17Ci0gICAgc3dpdGNoIChvcCkKLSAgICB7Ci0gICAgICBjYXNl
IEVPcE11bDoKLSAgICAgIGNhc2UgRU9wTXVsQXNzaWduOgotICAgICAgICByZXR1cm4gbGVmdC5n
ZXROb21pbmFsU2l6ZSgpID09IHJpZ2h0LmdldE5vbWluYWxTaXplKCkgJiYKLSAgICAgICAgICAg
ICAgIGxlZnQuZ2V0U2Vjb25kYXJ5U2l6ZSgpID09IHJpZ2h0LmdldFNlY29uZGFyeVNpemUoKTsK
LSAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNTY2FsYXI6Ci0gICAgICBjYXNlIEVPcFZlY3RvclRp
bWVzU2NhbGFyQXNzaWduOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGNhc2UgRU9wVmVj
dG9yVGltZXNNYXRyaXg6Ci0gICAgICAgIHJldHVybiBsZWZ0LmdldE5vbWluYWxTaXplKCkgPT0g
cmlnaHQuZ2V0Um93cygpOwotICAgICAgY2FzZSBFT3BWZWN0b3JUaW1lc01hdHJpeEFzc2lnbjoK
LSAgICAgICAgcmV0dXJuIGxlZnQuZ2V0Tm9taW5hbFNpemUoKSA9PSByaWdodC5nZXRSb3dzKCkg
JiYKLSAgICAgICAgICAgICAgIGxlZnQuZ2V0Tm9taW5hbFNpemUoKSA9PSByaWdodC5nZXRDb2xz
KCk7Ci0gICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzVmVjdG9yOgotICAgICAgICByZXR1cm4gbGVm
dC5nZXRDb2xzKCkgPT0gcmlnaHQuZ2V0Tm9taW5hbFNpemUoKTsKLSAgICAgIGNhc2UgRU9wTWF0
cml4VGltZXNTY2FsYXI6Ci0gICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzU2NhbGFyQXNzaWduOgot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNNYXRyaXg6Ci0g
ICAgICAgIHJldHVybiBsZWZ0LmdldENvbHMoKSA9PSByaWdodC5nZXRSb3dzKCk7Ci0gICAgICBj
YXNlIEVPcE1hdHJpeFRpbWVzTWF0cml4QXNzaWduOgotICAgICAgICByZXR1cm4gbGVmdC5nZXRD
b2xzKCkgPT0gcmlnaHQuZ2V0Q29scygpICYmCi0gICAgICAgICAgICAgICBsZWZ0LmdldFJvd3Mo
KSA9PSByaWdodC5nZXRSb3dzKCk7Ci0KLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIFVOUkVBQ0hB
QkxFKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KIFRDb25zdGFudFVuaW9u
ICpWZWN0b3JpemUoY29uc3QgVENvbnN0YW50VW5pb24gJmNvbnN0YW50LCBzaXplX3Qgc2l6ZSkK
IHsKICAgICBUQ29uc3RhbnRVbmlvbiAqY29uc3RVbmlvbiA9IG5ldyBUQ29uc3RhbnRVbmlvbltz
aXplXTsKQEAgLTc1LDEzICs0NCwxNCBAQCBUQ29uc3RhbnRVbmlvbiAqVmVjdG9yaXplKGNvbnN0
IFRDb25zdGFuCiAgICAgcmV0dXJuIGNvbnN0VW5pb247CiB9CiAKLXZvaWQgVW5kZWZpbmVkQ29u
c3RhbnRGb2xkaW5nRXJyb3IoY29uc3QgVFNvdXJjZUxvYyAmbG9jLCBUT3BlcmF0b3Igb3AsIFRC
YXNpY1R5cGUgYmFzaWNUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
SW5mb1NpbmsgJmluZm9TaW5rLCBUQ29uc3RhbnRVbmlvbiAqcmVzdWx0KQordm9pZCBVbmRlZmlu
ZWRDb25zdGFudEZvbGRpbmdFcnJvcihjb25zdCBUU291cmNlTG9jICZsb2MsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRPcGVyYXRvciBvcCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVEJhc2ljVHlwZSBiYXNpY1R5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFREaWFnbm9zdGljcyAqZGlhZ25vc3RpY3MsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRDb25zdGFudFVuaW9uICpyZXN1bHQpCiB7Ci0gICAg
c3RkOjpzdHJpbmdzdHJlYW0gY29uc3RhbnRGb2xkaW5nRXJyb3JTdHJlYW07Ci0gICAgY29uc3Rh
bnRGb2xkaW5nRXJyb3JTdHJlYW0gPDwgIiciIDw8IEdldE9wZXJhdG9yU3RyaW5nKG9wKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICInIG9wZXJhdGlvbiByZXN1bHQgaXMgdW5k
ZWZpbmVkIGZvciB0aGUgdmFsdWVzIHBhc3NlZCBpbiI7Ci0gICAgaW5mb1NpbmsuaW5mby5tZXNz
YWdlKEVQcmVmaXhXYXJuaW5nLCBsb2MsIGNvbnN0YW50Rm9sZGluZ0Vycm9yU3RyZWFtLnN0cigp
LmNfc3RyKCkpOworICAgIGRpYWdub3N0aWNzLT53YXJuaW5nKGxvYywgIm9wZXJhdGlvbiByZXN1
bHQgaXMgdW5kZWZpbmVkIGZvciB0aGUgdmFsdWVzIHBhc3NlZCBpbiIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgR2V0T3BlcmF0b3JTdHJpbmcob3ApLCAiIik7CiAKICAgICBzd2l0Y2ggKGJh
c2ljVHlwZSkKICAgICB7CkBAIC0xMjMsNyArOTMsNyBAQCBmbG9hdCBWZWN0b3JEb3RQcm9kdWN0
KGNvbnN0IFRDb25zdGFudFVuCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotVEludGVybVR5cGVk
ICpDcmVhdGVGb2xkZWROb2RlKFRDb25zdGFudFVuaW9uICpjb25zdEFycmF5LAorVEludGVybVR5
cGVkICpDcmVhdGVGb2xkZWROb2RlKGNvbnN0IFRDb25zdGFudFVuaW9uICpjb25zdEFycmF5LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRJbnRlcm1UeXBlZCAqb3JpZ2lu
YWxOb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlm
aWVyKQogewpAQCAtMTQ1LDggKzExNSw5IEBAIGFuZ2xlOjpNYXRyaXg8ZmxvYXQ+IEdldE1hdHJp
eChjb25zdCBUQ28KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJvd3MgKiBjb2xzOyBpKysp
CiAgICAgICAgIGVsZW1lbnRzLnB1c2hfYmFjayhwYXJhbUFycmF5W2ldLmdldEZDb25zdCgpKTsK
ICAgICAvLyBUcmFuc3Bvc2UgaXMgdXNlZCBzaW5jZSB0aGUgTWF0cml4IGNvbnN0cnVjdG9yIGV4
cGVjdHMgYXJndW1lbnRzIGluIHJvdy1tYWpvciBvcmRlciwKLSAgICAvLyB3aGVyZWFzIHRoZSBw
YXJhbUFycmF5IGlzIGluIGNvbHVtbi1tYWpvciBvcmRlci4KLSAgICByZXR1cm4gYW5nbGU6Ok1h
dHJpeDxmbG9hdD4oZWxlbWVudHMsIHJvd3MsIGNvbHMpLnRyYW5zcG9zZSgpOworICAgIC8vIHdo
ZXJlYXMgdGhlIHBhcmFtQXJyYXkgaXMgaW4gY29sdW1uLW1ham9yIG9yZGVyLiBSb3dzL2NvbHMg
cGFyYW1ldGVycyBhcmUgYWxzbyBmbGlwcGVkIGJlbG93CisgICAgLy8gc28gdGhhdCB0aGUgY3Jl
YXRlZCBtYXRyaXggd2lsbCBoYXZlIHRoZSBleHBlY3RlZCBkaW1lbnNpb25zIGFmdGVyIHRoZSB0
cmFuc3Bvc2UuCisgICAgcmV0dXJuIGFuZ2xlOjpNYXRyaXg8ZmxvYXQ+KGVsZW1lbnRzLCBjb2xz
LCByb3dzKS50cmFuc3Bvc2UoKTsKIH0KIAogYW5nbGU6Ok1hdHJpeDxmbG9hdD4gR2V0TWF0cml4
KGNvbnN0IFRDb25zdGFudFVuaW9uICpwYXJhbUFycmF5LCBjb25zdCB1bnNpZ25lZCBpbnQgJnNp
emUpCkBAIC0xOTUsMTAgKzE2NiwxMSBAQCB2b2lkIFRJbnRlcm1UeXBlZDo6c2V0VHlwZVByZXNl
cnZlUHJlY2lzCiBib29sIFRJbnRlcm1Mb29wOjpyZXBsYWNlQ2hpbGROb2RlKAogICAgIFRJbnRl
cm1Ob2RlICpvcmlnaW5hbCwgVEludGVybU5vZGUgKnJlcGxhY2VtZW50KQogeworICAgIEFTU0VS
VChvcmlnaW5hbCAhPSBudWxscHRyKTsgIC8vIFRoaXMgcmlza3MgcmVwbGFjaW5nIG11bHRpcGxl
IGNoaWxkcmVuLgogICAgIFJFUExBQ0VfSUZfSVMobUluaXQsIFRJbnRlcm1Ob2RlLCBvcmlnaW5h
bCwgcmVwbGFjZW1lbnQpOwogICAgIFJFUExBQ0VfSUZfSVMobUNvbmQsIFRJbnRlcm1UeXBlZCwg
b3JpZ2luYWwsIHJlcGxhY2VtZW50KTsKICAgICBSRVBMQUNFX0lGX0lTKG1FeHByLCBUSW50ZXJt
VHlwZWQsIG9yaWdpbmFsLCByZXBsYWNlbWVudCk7Ci0gICAgUkVQTEFDRV9JRl9JUyhtQm9keSwg
VEludGVybUFnZ3JlZ2F0ZSwgb3JpZ2luYWwsIHJlcGxhY2VtZW50KTsKKyAgICBSRVBMQUNFX0lG
X0lTKG1Cb2R5LCBUSW50ZXJtQmxvY2ssIG9yaWdpbmFsLCByZXBsYWNlbWVudCk7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCkBAIC0yMDksNiArMTgxLDEzIEBAIGJvb2wgVEludGVybUJyYW5jaDo6
cmVwbGFjZUNoaWxkTm9kZSgKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgVEludGVybVN3
aXp6bGU6OnJlcGxhY2VDaGlsZE5vZGUoVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9k
ZSAqcmVwbGFjZW1lbnQpCit7CisgICAgQVNTRVJUKG9yaWdpbmFsLT5nZXRBc1R5cGVkKCktPmdl
dFR5cGUoKSA9PSByZXBsYWNlbWVudC0+Z2V0QXNUeXBlZCgpLT5nZXRUeXBlKCkpOworICAgIFJF
UExBQ0VfSUZfSVMobU9wZXJhbmQsIFRJbnRlcm1UeXBlZCwgb3JpZ2luYWwsIHJlcGxhY2VtZW50
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgVEludGVybUJpbmFyeTo6cmVwbGFjZUNo
aWxkTm9kZSgKICAgICBUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNl
bWVudCkKIHsKQEAgLTIyMCw0MiArMTk5LDYyIEBAIGJvb2wgVEludGVybUJpbmFyeTo6cmVwbGFj
ZUNoaWxkTm9kZSgKIGJvb2wgVEludGVybVVuYXJ5OjpyZXBsYWNlQ2hpbGROb2RlKAogICAgIFRJ
bnRlcm1Ob2RlICpvcmlnaW5hbCwgVEludGVybU5vZGUgKnJlcGxhY2VtZW50KQogeworICAgIEFT
U0VSVChvcmlnaW5hbC0+Z2V0QXNUeXBlZCgpLT5nZXRUeXBlKCkgPT0gcmVwbGFjZW1lbnQtPmdl
dEFzVHlwZWQoKS0+Z2V0VHlwZSgpKTsKICAgICBSRVBMQUNFX0lGX0lTKG1PcGVyYW5kLCBUSW50
ZXJtVHlwZWQsIG9yaWdpbmFsLCByZXBsYWNlbWVudCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Citib29sIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb246OnJlcGxhY2VDaGlsZE5vZGUoVEludGVy
bU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpCit7CisgICAgUkVQTEFD
RV9JRl9JUyhtUGFyYW1ldGVycywgVEludGVybUFnZ3JlZ2F0ZSwgb3JpZ2luYWwsIHJlcGxhY2Vt
ZW50KTsKKyAgICBSRVBMQUNFX0lGX0lTKG1Cb2R5LCBUSW50ZXJtQmxvY2ssIG9yaWdpbmFsLCBy
ZXBsYWNlbWVudCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIFRJbnRlcm1BZ2dyZWdh
dGU6OnJlcGxhY2VDaGlsZE5vZGUoCiAgICAgVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJt
Tm9kZSAqcmVwbGFjZW1lbnQpCiB7Ci0gICAgZm9yIChzaXplX3QgaWkgPSAwOyBpaSA8IG1TZXF1
ZW5jZS5zaXplKCk7ICsraWkpCisgICAgcmV0dXJuIHJlcGxhY2VDaGlsZE5vZGVJbnRlcm5hbChv
cmlnaW5hbCwgcmVwbGFjZW1lbnQpOworfQorCitib29sIFRJbnRlcm1CbG9jazo6cmVwbGFjZUNo
aWxkTm9kZShUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCkK
K3sKKyAgICByZXR1cm4gcmVwbGFjZUNoaWxkTm9kZUludGVybmFsKG9yaWdpbmFsLCByZXBsYWNl
bWVudCk7Cit9CisKK2Jvb2wgVEludGVybUFnZ3JlZ2F0ZUJhc2U6OnJlcGxhY2VDaGlsZE5vZGVJ
bnRlcm5hbChUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCkK
K3sKKyAgICBmb3IgKHNpemVfdCBpaSA9IDA7IGlpIDwgZ2V0U2VxdWVuY2UoKS0+c2l6ZSgpOyAr
K2lpKQogICAgIHsKLSAgICAgICAgUkVQTEFDRV9JRl9JUyhtU2VxdWVuY2VbaWldLCBUSW50ZXJt
Tm9kZSwgb3JpZ2luYWwsIHJlcGxhY2VtZW50KTsKKyAgICAgICAgUkVQTEFDRV9JRl9JUygoKmdl
dFNlcXVlbmNlKCkpW2lpXSwgVEludGVybU5vZGUsIG9yaWdpbmFsLCByZXBsYWNlbWVudCk7CiAg
ICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBUSW50ZXJtQWdncmVnYXRlOjpyZXBs
YWNlQ2hpbGROb2RlV2l0aE11bHRpcGxlKFRJbnRlcm1Ob2RlICpvcmlnaW5hbCwgVEludGVybVNl
cXVlbmNlIHJlcGxhY2VtZW50cykKK2Jvb2wgVEludGVybUFnZ3JlZ2F0ZUJhc2U6OnJlcGxhY2VD
aGlsZE5vZGVXaXRoTXVsdGlwbGUoVEludGVybU5vZGUgKm9yaWdpbmFsLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUSW50ZXJt
U2VxdWVuY2UgJnJlcGxhY2VtZW50cykKIHsKLSAgICBmb3IgKGF1dG8gaXQgPSBtU2VxdWVuY2Uu
YmVnaW4oKTsgaXQgPCBtU2VxdWVuY2UuZW5kKCk7ICsraXQpCisgICAgZm9yIChhdXRvIGl0ID0g
Z2V0U2VxdWVuY2UoKS0+YmVnaW4oKTsgaXQgPCBnZXRTZXF1ZW5jZSgpLT5lbmQoKTsgKytpdCkK
ICAgICB7CiAgICAgICAgIGlmICgqaXQgPT0gb3JpZ2luYWwpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGl0ID0gbVNlcXVlbmNlLmVyYXNlKGl0KTsKLSAgICAgICAgICAgIG1TZXF1ZW5jZS5pbnNl
cnQoaXQsIHJlcGxhY2VtZW50cy5iZWdpbigpLCByZXBsYWNlbWVudHMuZW5kKCkpOworICAgICAg
ICAgICAgaXQgPSBnZXRTZXF1ZW5jZSgpLT5lcmFzZShpdCk7CisgICAgICAgICAgICBnZXRTZXF1
ZW5jZSgpLT5pbnNlcnQoaXQsIHJlcGxhY2VtZW50cy5iZWdpbigpLCByZXBsYWNlbWVudHMuZW5k
KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1ib29sIFRJbnRlcm1BZ2dyZWdhdGU6Omluc2VydENoaWxkTm9kZXMo
VEludGVybVNlcXVlbmNlOjpzaXplX3R5cGUgcG9zaXRpb24sIFRJbnRlcm1TZXF1ZW5jZSBpbnNl
cnRpb25zKQorYm9vbCBUSW50ZXJtQWdncmVnYXRlQmFzZTo6aW5zZXJ0Q2hpbGROb2RlcyhUSW50
ZXJtU2VxdWVuY2U6OnNpemVfdHlwZSBwb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVEludGVybVNlcXVlbmNlICZpbnNlcnRpb25zKQog
ewotICAgIGlmIChwb3NpdGlvbiA+IG1TZXF1ZW5jZS5zaXplKCkpCisgICAgaWYgKHBvc2l0aW9u
ID4gZ2V0U2VxdWVuY2UoKS0+c2l6ZSgpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KLSAgICBhdXRvIGl0ID0gbVNlcXVlbmNlLmJlZ2luKCkgKyBwb3NpdGlvbjsKLSAgICBt
U2VxdWVuY2UuaW5zZXJ0KGl0LCBpbnNlcnRpb25zLmJlZ2luKCksIGluc2VydGlvbnMuZW5kKCkp
OworICAgIGF1dG8gaXQgPSBnZXRTZXF1ZW5jZSgpLT5iZWdpbigpICsgcG9zaXRpb247CisgICAg
Z2V0U2VxdWVuY2UoKS0+aW5zZXJ0KGl0LCBpbnNlcnRpb25zLmJlZ2luKCksIGluc2VydGlvbnMu
ZW5kKCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMTMsMTggKzMxMiwzMyBAQCB2b2lk
IFRJbnRlcm1BZ2dyZWdhdGU6OnNldEJ1aWx0SW5GdW5jdGlvCiAgICAgfQogICAgIC8vIEVTU0wg
My4wIHNwZWMgc2VjdGlvbiA4OiB0ZXh0dXJlU2l6ZSBhbHdheXMgZ2V0cyBoaWdocCBwcmVjaXNp
b24uCiAgICAgLy8gQWxsIG90aGVyIGZ1bmN0aW9ucyB0aGF0IHRha2UgYSBzYW1wbGVyIGFyZSBh
c3N1bWVkIHRvIGJlIHRleHR1cmUgZnVuY3Rpb25zLgotICAgIGlmIChtTmFtZS5nZXRTdHJpbmco
KS5maW5kKCJ0ZXh0dXJlU2l6ZSIpID09IDApCisgICAgaWYgKG1GdW5jdGlvbkluZm8uZ2V0TmFt
ZSgpLmZpbmQoInRleHR1cmVTaXplIikgPT0gMCkKICAgICAgICAgbVR5cGUuc2V0UHJlY2lzaW9u
KEVicEhpZ2gpOwogICAgIGVsc2UKICAgICAgICAgbVR5cGUuc2V0UHJlY2lzaW9uKHByZWNpc2lv
bik7CiB9CiAKLWJvb2wgVEludGVybVNlbGVjdGlvbjo6cmVwbGFjZUNoaWxkTm9kZSgKLSAgICBU
SW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCkKK3ZvaWQgVElu
dGVybUJsb2NrOjphcHBlbmRTdGF0ZW1lbnQoVEludGVybU5vZGUgKnN0YXRlbWVudCkKK3sKKyAg
ICBpZiAoc3RhdGVtZW50ICE9IG51bGxwdHIpCisgICAgeworICAgICAgICBtU3RhdGVtZW50cy5w
dXNoX2JhY2soc3RhdGVtZW50KTsKKyAgICB9Cit9CisKK2Jvb2wgVEludGVybVRlcm5hcnk6OnJl
cGxhY2VDaGlsZE5vZGUoVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFj
ZW1lbnQpCiB7CiAgICAgUkVQTEFDRV9JRl9JUyhtQ29uZGl0aW9uLCBUSW50ZXJtVHlwZWQsIG9y
aWdpbmFsLCByZXBsYWNlbWVudCk7Ci0gICAgUkVQTEFDRV9JRl9JUyhtVHJ1ZUJsb2NrLCBUSW50
ZXJtTm9kZSwgb3JpZ2luYWwsIHJlcGxhY2VtZW50KTsKLSAgICBSRVBMQUNFX0lGX0lTKG1GYWxz
ZUJsb2NrLCBUSW50ZXJtTm9kZSwgb3JpZ2luYWwsIHJlcGxhY2VtZW50KTsKKyAgICBSRVBMQUNF
X0lGX0lTKG1UcnVlRXhwcmVzc2lvbiwgVEludGVybVR5cGVkLCBvcmlnaW5hbCwgcmVwbGFjZW1l
bnQpOworICAgIFJFUExBQ0VfSUZfSVMobUZhbHNlRXhwcmVzc2lvbiwgVEludGVybVR5cGVkLCBv
cmlnaW5hbCwgcmVwbGFjZW1lbnQpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBUSW50
ZXJtSWZFbHNlOjpyZXBsYWNlQ2hpbGROb2RlKFRJbnRlcm1Ob2RlICpvcmlnaW5hbCwgVEludGVy
bU5vZGUgKnJlcGxhY2VtZW50KQoreworICAgIFJFUExBQ0VfSUZfSVMobUNvbmRpdGlvbiwgVElu
dGVybVR5cGVkLCBvcmlnaW5hbCwgcmVwbGFjZW1lbnQpOworICAgIFJFUExBQ0VfSUZfSVMobVRy
dWVCbG9jaywgVEludGVybUJsb2NrLCBvcmlnaW5hbCwgcmVwbGFjZW1lbnQpOworICAgIFJFUExB
Q0VfSUZfSVMobUZhbHNlQmxvY2ssIFRJbnRlcm1CbG9jaywgb3JpZ2luYWwsIHJlcGxhY2VtZW50
KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTMzMiw3ICszNDYsNyBAQCBib29sIFRJbnRl
cm1Td2l0Y2g6OnJlcGxhY2VDaGlsZE5vZGUoCiAgICAgVEludGVybU5vZGUgKm9yaWdpbmFsLCBU
SW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpCiB7CiAgICAgUkVQTEFDRV9JRl9JUyhtSW5pdCwgVElu
dGVybVR5cGVkLCBvcmlnaW5hbCwgcmVwbGFjZW1lbnQpOwotICAgIFJFUExBQ0VfSUZfSVMobVN0
YXRlbWVudExpc3QsIFRJbnRlcm1BZ2dyZWdhdGUsIG9yaWdpbmFsLCByZXBsYWNlbWVudCk7Cisg
ICAgUkVQTEFDRV9JRl9JUyhtU3RhdGVtZW50TGlzdCwgVEludGVybUJsb2NrLCBvcmlnaW5hbCwg
cmVwbGFjZW1lbnQpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMzUxLDE4ICszNjUsMTE1
IEBAIFRJbnRlcm1UeXBlZDo6VEludGVybVR5cGVkKGNvbnN0IFRJbnRlcm0KICAgICBtTGluZSA9
IG5vZGUubUxpbmU7CiB9CiAKK2Jvb2wgVEludGVybVR5cGVkOjppc0NvbnN0cnVjdG9yV2l0aE9u
bHlDb25zdGFudFVuaW9uUGFyYW1ldGVycygpCit7CisgICAgVEludGVybUFnZ3JlZ2F0ZSAqY29u
c3RydWN0b3IgPSBnZXRBc0FnZ3JlZ2F0ZSgpOworICAgIGlmICghY29uc3RydWN0b3IgfHwgIWNv
bnN0cnVjdG9yLT5pc0NvbnN0cnVjdG9yKCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIGZvciAoVEludGVybU5vZGUgKiZub2RlIDogKmNvbnN0cnVjdG9yLT5nZXRT
ZXF1ZW5jZSgpKQorICAgIHsKKyAgICAgICAgaWYgKCFub2RlLT5nZXRBc0NvbnN0YW50VW5pb24o
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9
CisKKy8vIHN0YXRpYworVEludGVybVR5cGVkICpUSW50ZXJtVHlwZWQ6OkNyZWF0ZUluZGV4Tm9k
ZShpbnQgaW5kZXgpCit7CisgICAgVENvbnN0YW50VW5pb24gKnUgPSBuZXcgVENvbnN0YW50VW5p
b25bMV07CisgICAgdVswXS5zZXRJQ29uc3QoaW5kZXgpOworCisgICAgVFR5cGUgdHlwZShFYnRJ
bnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QsIDEpOworICAgIFRJbnRlcm1Db25zdGFudFVuaW9u
ICpub2RlID0gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9uKHUsIHR5cGUpOworICAgIHJldHVybiBu
b2RlOworfQorCisvLyBzdGF0aWMKK1RJbnRlcm1UeXBlZCAqVEludGVybVR5cGVkOjpDcmVhdGVa
ZXJvKGNvbnN0IFRUeXBlICZ0eXBlKQoreworICAgIFRUeXBlIGNvbnN0VHlwZSh0eXBlKTsKKyAg
ICBjb25zdFR5cGUuc2V0UXVhbGlmaWVyKEV2cUNvbnN0KTsKKworICAgIGlmICghdHlwZS5pc0Fy
cmF5KCkgJiYgdHlwZS5nZXRCYXNpY1R5cGUoKSAhPSBFYnRTdHJ1Y3QpCisgICAgeworICAgICAg
ICBBU1NFUlQodHlwZS5pc1NjYWxhcigpIHx8IHR5cGUuaXNWZWN0b3IoKSB8fCB0eXBlLmlzTWF0
cml4KCkpOworCisgICAgICAgIHNpemVfdCBzaXplICAgICAgID0gY29uc3RUeXBlLmdldE9iamVj
dFNpemUoKTsKKyAgICAgICAgVENvbnN0YW50VW5pb24gKnUgPSBuZXcgVENvbnN0YW50VW5pb25b
c2l6ZV07CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAg
ICB7CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUuZ2V0QmFzaWNUeXBlKCkpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKKyAgICAgICAgICAgICAgICAgICAg
dVtpXS5zZXRGQ29uc3QoMC4wZik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAgICAgICAgICAgICAgICB1W2ldLnNldElDb25z
dCgwKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBF
YnRVSW50OgorICAgICAgICAgICAgICAgICAgICB1W2ldLnNldFVDb25zdCgwdSk7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKKyAgICAg
ICAgICAgICAgICAgICAgdVtpXS5zZXRCQ29uc3QoZmFsc2UpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpub2Rl
ID0gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9uKHUsIGNvbnN0VHlwZSk7CisgICAgICAgIHJldHVy
biBub2RlOworICAgIH0KKworICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmNvbnN0cnVjdG9yID0gbmV3
IFRJbnRlcm1BZ2dyZWdhdGUoc2g6OlR5cGVUb0NvbnN0cnVjdG9yT3BlcmF0b3IodHlwZSkpOwor
ICAgIGNvbnN0cnVjdG9yLT5zZXRUeXBlKGNvbnN0VHlwZSk7CisKKyAgICBpZiAodHlwZS5pc0Fy
cmF5KCkpCisgICAgeworICAgICAgICBUVHlwZSBlbGVtZW50VHlwZSh0eXBlKTsKKyAgICAgICAg
ZWxlbWVudFR5cGUuY2xlYXJBcnJheW5lc3MoKTsKKworICAgICAgICBzaXplX3QgYXJyYXlTaXpl
ID0gdHlwZS5nZXRBcnJheVNpemUoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBh
cnJheVNpemU7ICsraSkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3RydWN0b3ItPmdldFNl
cXVlbmNlKCktPnB1c2hfYmFjayhDcmVhdGVaZXJvKGVsZW1lbnRUeXBlKSk7CisgICAgICAgIH0K
KyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgQVNTRVJUKHR5cGUuZ2V0QmFzaWNUeXBl
KCkgPT0gRWJ0U3RydWN0KTsKKworICAgICAgICBUU3RydWN0dXJlICpzdHJ1Y3R1cmUgPSB0eXBl
LmdldFN0cnVjdCgpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8gJmZpZWxkIDogc3RydWN0dXJl
LT5maWVsZHMoKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3RydWN0b3ItPmdldFNlcXVl
bmNlKCktPnB1c2hfYmFjayhDcmVhdGVaZXJvKCpmaWVsZC0+dHlwZSgpKSk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKIFRJbnRlcm1Db25zdGFudFVu
aW9uOjpUSW50ZXJtQ29uc3RhbnRVbmlvbihjb25zdCBUSW50ZXJtQ29uc3RhbnRVbmlvbiAmbm9k
ZSkgOiBUSW50ZXJtVHlwZWQobm9kZSkKIHsKICAgICBtVW5pb25BcnJheVBvaW50ZXIgPSBub2Rl
Lm1VbmlvbkFycmF5UG9pbnRlcjsKIH0KIAordm9pZCBURnVuY3Rpb25TeW1ib2xJbmZvOjpzZXRG
cm9tRnVuY3Rpb24oY29uc3QgVEZ1bmN0aW9uICZmdW5jdGlvbikKK3sKKyAgICBzZXROYW1lKGZ1
bmN0aW9uLmdldE1hbmdsZWROYW1lKCkpOworICAgIHNldElkKGZ1bmN0aW9uLmdldFVuaXF1ZUlk
KCkpOworfQorCiBUSW50ZXJtQWdncmVnYXRlOjpUSW50ZXJtQWdncmVnYXRlKGNvbnN0IFRJbnRl
cm1BZ2dyZWdhdGUgJm5vZGUpCiAgICAgOiBUSW50ZXJtT3BlcmF0b3Iobm9kZSksCi0gICAgICBt
TmFtZShub2RlLm1OYW1lKSwKICAgICAgIG1Vc2VyRGVmaW5lZChub2RlLm1Vc2VyRGVmaW5lZCks
Ci0gICAgICBtRnVuY3Rpb25JZChub2RlLm1GdW5jdGlvbklkKSwKICAgICAgIG1Vc2VFbXVsYXRl
ZEZ1bmN0aW9uKG5vZGUubVVzZUVtdWxhdGVkRnVuY3Rpb24pLAotICAgICAgbUdvdFByZWNpc2lv
bkZyb21DaGlsZHJlbihub2RlLm1Hb3RQcmVjaXNpb25Gcm9tQ2hpbGRyZW4pCisgICAgICBtR290
UHJlY2lzaW9uRnJvbUNoaWxkcmVuKG5vZGUubUdvdFByZWNpc2lvbkZyb21DaGlsZHJlbiksCisg
ICAgICBtRnVuY3Rpb25JbmZvKG5vZGUubUZ1bmN0aW9uSW5mbykKIHsKICAgICBmb3IgKFRJbnRl
cm1Ob2RlICpjaGlsZCA6IG5vZGUubVNlcXVlbmNlKQogICAgIHsKQEAgLTM3Myw2ICs0ODQsMTMg
QEAgVEludGVybUFnZ3JlZ2F0ZTo6VEludGVybUFnZ3JlZ2F0ZShjb25zdAogICAgIH0KIH0KIAor
VEludGVybVN3aXp6bGU6OlRJbnRlcm1Td2l6emxlKGNvbnN0IFRJbnRlcm1Td2l6emxlICZub2Rl
KSA6IFRJbnRlcm1UeXBlZChub2RlKQoreworICAgIFRJbnRlcm1UeXBlZCAqb3BlcmFuZENvcHkg
PSBub2RlLm1PcGVyYW5kLT5kZWVwQ29weSgpOworICAgIEFTU0VSVChvcGVyYW5kQ29weSAhPSBu
dWxscHRyKTsKKyAgICBtT3BlcmFuZCA9IG9wZXJhbmRDb3B5OworfQorCiBUSW50ZXJtQmluYXJ5
OjpUSW50ZXJtQmluYXJ5KGNvbnN0IFRJbnRlcm1CaW5hcnkgJm5vZGUpCiAgICAgOiBUSW50ZXJt
T3BlcmF0b3Iobm9kZSksIG1BZGRJbmRleENsYW1wKG5vZGUubUFkZEluZGV4Q2xhbXApCiB7CkBA
IC0zOTEsNTIgKzUwOSwyMCBAQCBUSW50ZXJtVW5hcnk6OlRJbnRlcm1VbmFyeShjb25zdCBUSW50
ZXJtCiAgICAgbU9wZXJhbmQgPSBvcGVyYW5kQ29weTsKIH0KIAotVEludGVybVNlbGVjdGlvbjo6
VEludGVybVNlbGVjdGlvbihjb25zdCBUSW50ZXJtU2VsZWN0aW9uICZub2RlKSA6IFRJbnRlcm1U
eXBlZChub2RlKQorVEludGVybVRlcm5hcnk6OlRJbnRlcm1UZXJuYXJ5KGNvbnN0IFRJbnRlcm1U
ZXJuYXJ5ICZub2RlKSA6IFRJbnRlcm1UeXBlZChub2RlKQogewotICAgIC8vIE9ubHkgc3VwcG9y
dGVkIGZvciB0ZXJuYXJ5IG5vZGVzLCBub3QgaWYgc3RhdGVtZW50cy4KLSAgICBUSW50ZXJtVHlw
ZWQgKnRydWVUeXBlZCAgPSBub2RlLm1UcnVlQmxvY2stPmdldEFzVHlwZWQoKTsKLSAgICBUSW50
ZXJtVHlwZWQgKmZhbHNlVHlwZWQgPSBub2RlLm1GYWxzZUJsb2NrLT5nZXRBc1R5cGVkKCk7Ci0g
ICAgQVNTRVJUKHRydWVUeXBlZCAhPSBudWxscHRyKTsKLSAgICBBU1NFUlQoZmFsc2VUeXBlZCAh
PSBudWxscHRyKTsKICAgICBUSW50ZXJtVHlwZWQgKmNvbmRpdGlvbkNvcHkgPSBub2RlLm1Db25k
aXRpb24tPmRlZXBDb3B5KCk7Ci0gICAgVEludGVybVR5cGVkICp0cnVlQ29weSAgICAgID0gdHJ1
ZVR5cGVkLT5kZWVwQ29weSgpOwotICAgIFRJbnRlcm1UeXBlZCAqZmFsc2VDb3B5ID0gZmFsc2VU
eXBlZC0+ZGVlcENvcHkoKTsKKyAgICBUSW50ZXJtVHlwZWQgKnRydWVDb3B5ICAgICAgPSBub2Rl
Lm1UcnVlRXhwcmVzc2lvbi0+ZGVlcENvcHkoKTsKKyAgICBUSW50ZXJtVHlwZWQgKmZhbHNlQ29w
eSAgICAgPSBub2RlLm1GYWxzZUV4cHJlc3Npb24tPmRlZXBDb3B5KCk7CiAgICAgQVNTRVJUKGNv
bmRpdGlvbkNvcHkgIT0gbnVsbHB0ciAmJiB0cnVlQ29weSAhPSBudWxscHRyICYmIGZhbHNlQ29w
eSAhPSBudWxscHRyKTsKLSAgICBtQ29uZGl0aW9uICA9IGNvbmRpdGlvbkNvcHk7Ci0gICAgbVRy
dWVCbG9jayAgPSB0cnVlQ29weTsKLSAgICBtRmFsc2VCbG9jayA9IGZhbHNlQ29weTsKKyAgICBt
Q29uZGl0aW9uICAgICAgID0gY29uZGl0aW9uQ29weTsKKyAgICBtVHJ1ZUV4cHJlc3Npb24gID0g
dHJ1ZUNvcHk7CisgICAgbUZhbHNlRXhwcmVzc2lvbiA9IGZhbHNlQ29weTsKIH0KIAotLy8KLS8v
IFNheSB3aGV0aGVyIG9yIG5vdCBhbiBvcGVyYXRpb24gbm9kZSBjaGFuZ2VzIHRoZSB2YWx1ZSBv
ZiBhIHZhcmlhYmxlLgotLy8KIGJvb2wgVEludGVybU9wZXJhdG9yOjppc0Fzc2lnbm1lbnQoKSBj
b25zdAogewotICAgIHN3aXRjaCAobU9wKQotICAgIHsKLSAgICAgIGNhc2UgRU9wUG9zdEluY3Jl
bWVudDoKLSAgICAgIGNhc2UgRU9wUG9zdERlY3JlbWVudDoKLSAgICAgIGNhc2UgRU9wUHJlSW5j
cmVtZW50OgotICAgICAgY2FzZSBFT3BQcmVEZWNyZW1lbnQ6Ci0gICAgICBjYXNlIEVPcEFzc2ln
bjoKLSAgICAgIGNhc2UgRU9wQWRkQXNzaWduOgotICAgICAgY2FzZSBFT3BTdWJBc3NpZ246Ci0g
ICAgICBjYXNlIEVPcE11bEFzc2lnbjoKLSAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNNYXRyaXhB
c3NpZ246Ci0gICAgICBjYXNlIEVPcFZlY3RvclRpbWVzU2NhbGFyQXNzaWduOgotICAgICAgY2Fz
ZSBFT3BNYXRyaXhUaW1lc1NjYWxhckFzc2lnbjoKLSAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNN
YXRyaXhBc3NpZ246Ci0gICAgICBjYXNlIEVPcERpdkFzc2lnbjoKLSAgICAgIGNhc2UgRU9wSU1v
ZEFzc2lnbjoKLSAgICAgIGNhc2UgRU9wQml0U2hpZnRMZWZ0QXNzaWduOgotICAgICAgY2FzZSBF
T3BCaXRTaGlmdFJpZ2h0QXNzaWduOgotICAgICAgY2FzZSBFT3BCaXR3aXNlQW5kQXNzaWduOgot
ICAgICAgY2FzZSBFT3BCaXR3aXNlWG9yQXNzaWduOgotICAgICAgY2FzZSBFT3BCaXR3aXNlT3JB
c3NpZ246Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KKyAgICByZXR1cm4gSXNBc3NpZ25tZW50KG1PcCk7CiB9CiAKIGJv
b2wgVEludGVybU9wZXJhdG9yOjppc011bHRpcGxpY2F0aW9uKCkgY29uc3QKQEAgLTQ5NCw3NCAr
NTgwLDI3OSBAQCBib29sIFRJbnRlcm1PcGVyYXRvcjo6aXNDb25zdHJ1Y3RvcigpIGNvCiAgICAg
fQogfQogCitUT3BlcmF0b3IgVEludGVybUJpbmFyeTo6R2V0TXVsT3BCYXNlZE9uT3BlcmFuZHMo
Y29uc3QgVFR5cGUgJmxlZnQsIGNvbnN0IFRUeXBlICZyaWdodCkKK3sKKyAgICBpZiAobGVmdC5p
c01hdHJpeCgpKQorICAgIHsKKyAgICAgICAgaWYgKHJpZ2h0LmlzTWF0cml4KCkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBFT3BNYXRyaXhUaW1lc01hdHJpeDsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChyaWdodC5pc1ZlY3Rvcigp
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBFT3BNYXRyaXhUaW1lc1Zl
Y3RvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gRU9wTWF0cml4VGltZXNTY2FsYXI7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgaWYgKHJpZ2h0Lmlz
TWF0cml4KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChsZWZ0LmlzVmVjdG9yKCkpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVPcFZlY3RvclRpbWVzTWF0cml4
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHJldHVybiBFT3BNYXRyaXhUaW1lc1NjYWxhcjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIE5laXRoZXIg
b3BlcmFuZCBpcyBhIG1hdHJpeC4KKyAgICAgICAgICAgIGlmIChsZWZ0LmlzVmVjdG9yKCkgPT0g
cmlnaHQuaXNWZWN0b3IoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBMZWF2
ZSBhcyBjb21wb25lbnQgcHJvZHVjdC4KKyAgICAgICAgICAgICAgICByZXR1cm4gRU9wTXVsOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBFT3BWZWN0b3JUaW1lc1NjYWxhcjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KK30KKworVE9wZXJhdG9yIFRJbnRlcm1CaW5hcnk6OkdldE11bEFzc2lnbk9w
QmFzZWRPbk9wZXJhbmRzKGNvbnN0IFRUeXBlICZsZWZ0LCBjb25zdCBUVHlwZSAmcmlnaHQpCit7
CisgICAgaWYgKGxlZnQuaXNNYXRyaXgoKSkKKyAgICB7CisgICAgICAgIGlmIChyaWdodC5pc01h
dHJpeCgpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gRU9wTWF0cml4VGltZXNNYXRy
aXhBc3NpZ247CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAg
ICAvLyByaWdodCBzaG91bGQgYmUgc2NhbGFyLCBidXQgdGhpcyBtYXkgbm90IGJlIHZhbGlkYXRl
ZCB5ZXQuCisgICAgICAgICAgICByZXR1cm4gRU9wTWF0cml4VGltZXNTY2FsYXJBc3NpZ247Cisg
ICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgaWYgKHJpZ2h0LmlzTWF0
cml4KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIExlZnQgc2hvdWxkIGJlIGEgdmVjdG9y
LCBidXQgdGhpcyBtYXkgbm90IGJlIHZhbGlkYXRlZCB5ZXQuCisgICAgICAgICAgICByZXR1cm4g
RU9wVmVjdG9yVGltZXNNYXRyaXhBc3NpZ247CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAg
ICAgICB7CisgICAgICAgICAgICAvLyBOZWl0aGVyIG9wZXJhbmQgaXMgYSBtYXRyaXguCisgICAg
ICAgICAgICBpZiAobGVmdC5pc1ZlY3RvcigpID09IHJpZ2h0LmlzVmVjdG9yKCkpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgLy8gTGVhdmUgYXMgY29tcG9uZW50IHByb2R1Y3QuCisg
ICAgICAgICAgICAgICAgcmV0dXJuIEVPcE11bEFzc2lnbjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBsZWZ0IHNob3Vs
ZCBiZSB2ZWN0b3IgYW5kIHJpZ2h0IHNob3VsZCBiZSBzY2FsYXIsIGJ1dCB0aGlzIG1heSBub3Qg
YmUgdmFsaWRhdGVkCisgICAgICAgICAgICAgICAgLy8geWV0LgorICAgICAgICAgICAgICAgIHJl
dHVybiBFT3BWZWN0b3JUaW1lc1NjYWxhckFzc2lnbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KK30KKwogLy8KIC8vIE1ha2Ugc3VyZSB0aGUgdHlwZSBvZiBhIHVuYXJ5IG9wZXJh
dG9yIGlzIGFwcHJvcHJpYXRlIGZvciBpdHMKIC8vIGNvbWJpbmF0aW9uIG9mIG9wZXJhdGlvbiBh
bmQgb3BlcmFuZCB0eXBlLgogLy8KLXZvaWQgVEludGVybVVuYXJ5Ojpwcm9tb3RlKGNvbnN0IFRU
eXBlICpmdW5jUmV0dXJuVHlwZSkKK3ZvaWQgVEludGVybVVuYXJ5Ojpwcm9tb3RlKCkKIHsKKyAg
ICBUUXVhbGlmaWVyIHJlc3VsdFF1YWxpZmllciA9IEV2cVRlbXBvcmFyeTsKKyAgICBpZiAobU9w
ZXJhbmQtPmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KQorICAgICAgICByZXN1bHRRdWFsaWZp
ZXIgPSBFdnFDb25zdDsKKworICAgIHVuc2lnbmVkIGNoYXIgb3BlcmFuZFByaW1hcnlTaXplID0K
KyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obU9wZXJhbmQtPmdldFR5cGUoKS5n
ZXROb21pbmFsU2l6ZSgpKTsKICAgICBzd2l0Y2ggKG1PcCkKICAgICB7Ci0gICAgICBjYXNlIEVP
cEZsb2F0Qml0c1RvSW50OgotICAgICAgY2FzZSBFT3BGbG9hdEJpdHNUb1VpbnQ6Ci0gICAgICBj
YXNlIEVPcEludEJpdHNUb0Zsb2F0OgotICAgICAgY2FzZSBFT3BVaW50Qml0c1RvRmxvYXQ6Ci0g
ICAgICBjYXNlIEVPcFBhY2tTbm9ybTJ4MTY6Ci0gICAgICBjYXNlIEVPcFBhY2tVbm9ybTJ4MTY6
Ci0gICAgICBjYXNlIEVPcFBhY2tIYWxmMngxNjoKLSAgICAgIGNhc2UgRU9wVW5wYWNrU25vcm0y
eDE2OgotICAgICAgY2FzZSBFT3BVbnBhY2tVbm9ybTJ4MTY6Ci0gICAgICAgIG1UeXBlLnNldFBy
ZWNpc2lvbihFYnBIaWdoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFVucGFja0hh
bGYyeDE2OgotICAgICAgICBtVHlwZS5zZXRQcmVjaXNpb24oRWJwTWVkaXVtKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICBzZXRUeXBlKG1PcGVyYW5kLT5nZXRUeXBl
KCkpOworICAgICAgICBjYXNlIEVPcEZsb2F0Qml0c1RvSW50OgorICAgICAgICAgICAgc2V0VHlw
ZShUVHlwZShFYnRJbnQsIEVicEhpZ2gsIHJlc3VsdFF1YWxpZmllciwgb3BlcmFuZFByaW1hcnlT
aXplKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BGbG9hdEJpdHNUb1Vp
bnQ6CisgICAgICAgICAgICBzZXRUeXBlKFRUeXBlKEVidFVJbnQsIEVicEhpZ2gsIHJlc3VsdFF1
YWxpZmllciwgb3BlcmFuZFByaW1hcnlTaXplKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBFT3BJbnRCaXRzVG9GbG9hdDoKKyAgICAgICAgY2FzZSBFT3BVaW50Qml0c1RvRmxv
YXQ6CisgICAgICAgICAgICBzZXRUeXBlKFRUeXBlKEVidEZsb2F0LCBFYnBIaWdoLCByZXN1bHRR
dWFsaWZpZXIsIG9wZXJhbmRQcmltYXJ5U2l6ZSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgRU9wUGFja1Nub3JtMngxNjoKKyAgICAgICAgY2FzZSBFT3BQYWNrVW5vcm0yeDE2
OgorICAgICAgICBjYXNlIEVPcFBhY2tIYWxmMngxNjoKKyAgICAgICAgICAgIHNldFR5cGUoVFR5
cGUoRWJ0VUludCwgRWJwSGlnaCwgcmVzdWx0UXVhbGlmaWVyKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBFT3BVbnBhY2tTbm9ybTJ4MTY6CisgICAgICAgIGNhc2UgRU9wVW5w
YWNrVW5vcm0yeDE2OgorICAgICAgICAgICAgc2V0VHlwZShUVHlwZShFYnRGbG9hdCwgRWJwSGln
aCwgcmVzdWx0UXVhbGlmaWVyLCAyKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBFT3BVbnBhY2tIYWxmMngxNjoKKyAgICAgICAgICAgIHNldFR5cGUoVFR5cGUoRWJ0RmxvYXQs
IEVicE1lZGl1bSwgcmVzdWx0UXVhbGlmaWVyLCAyKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBFT3BBbnk6CisgICAgICAgIGNhc2UgRU9wQWxsOgorICAgICAgICAgICAgc2V0
VHlwZShUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIHJlc3VsdFF1YWxpZmllcikpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wTGVuZ3RoOgorICAgICAgICBjYXNlIEVP
cERldGVybWluYW50OgorICAgICAgICAgICAgc2V0VHlwZShUVHlwZShFYnRGbG9hdCwgbU9wZXJh
bmQtPmdldFR5cGUoKS5nZXRQcmVjaXNpb24oKSwgcmVzdWx0UXVhbGlmaWVyKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BUcmFuc3Bvc2U6CisgICAgICAgICAgICBzZXRU
eXBlKFRUeXBlKEVidEZsb2F0LCBtT3BlcmFuZC0+Z2V0VHlwZSgpLmdldFByZWNpc2lvbigpLCBy
ZXN1bHRRdWFsaWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXI+KG1PcGVyYW5kLT5nZXRUeXBlKCkuZ2V0Um93cygpKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obU9wZXJhbmQtPmdldFR5
cGUoKS5nZXRDb2xzKCkpKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BJ
c0luZjoKKyAgICAgICAgY2FzZSBFT3BJc05hbjoKKyAgICAgICAgICAgIHNldFR5cGUoVFR5cGUo
RWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCByZXN1bHRRdWFsaWZpZXIsIG9wZXJhbmRQcmltYXJ5U2l6
ZSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBz
ZXRUeXBlKG1PcGVyYW5kLT5nZXRUeXBlKCkpOworICAgICAgICAgICAgbVR5cGUuc2V0UXVhbGlm
aWVyKHJlc3VsdFF1YWxpZmllcik7CisgICAgICAgICAgICBicmVhazsKICAgICB9Cit9CisKK1RJ
bnRlcm1Td2l6emxlOjpUSW50ZXJtU3dpenpsZShUSW50ZXJtVHlwZWQgKm9wZXJhbmQsIGNvbnN0
IFRWZWN0b3I8aW50PiAmc3dpenpsZU9mZnNldHMpCisgICAgOiBUSW50ZXJtVHlwZWQoVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCkpLAorICAgICAgbU9wZXJhbmQob3BlcmFuZCksCisgICAg
ICBtU3dpenpsZU9mZnNldHMoc3dpenpsZU9mZnNldHMpCit7CisgICAgQVNTRVJUKG1Td2l6emxl
T2Zmc2V0cy5zaXplKCkgPD0gNCk7CisgICAgcHJvbW90ZSgpOworfQorCitUSW50ZXJtVW5hcnk6
OlRJbnRlcm1VbmFyeShUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCAqb3BlcmFuZCkKKyAgICA6
IFRJbnRlcm1PcGVyYXRvcihvcCksIG1PcGVyYW5kKG9wZXJhbmQpLCBtVXNlRW11bGF0ZWRGdW5j
dGlvbihmYWxzZSkKK3sKKyAgICBwcm9tb3RlKCk7Cit9CisKK1RJbnRlcm1CaW5hcnk6OlRJbnRl
cm1CaW5hcnkoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQgKmxlZnQsIFRJbnRlcm1UeXBlZCAq
cmlnaHQpCisgICAgOiBUSW50ZXJtT3BlcmF0b3Iob3ApLCBtTGVmdChsZWZ0KSwgbVJpZ2h0KHJp
Z2h0KSwgbUFkZEluZGV4Q2xhbXAoZmFsc2UpCit7CisgICAgcHJvbW90ZSgpOworfQorCitUSW50
ZXJtVGVybmFyeTo6VEludGVybVRlcm5hcnkoVEludGVybVR5cGVkICpjb25kLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqdHJ1ZUV4cHJlc3Npb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpmYWxzZUV4cHJlc3Npb24p
CisgICAgOiBUSW50ZXJtVHlwZWQodHJ1ZUV4cHJlc3Npb24tPmdldFR5cGUoKSksCisgICAgICBt
Q29uZGl0aW9uKGNvbmQpLAorICAgICAgbVRydWVFeHByZXNzaW9uKHRydWVFeHByZXNzaW9uKSwK
KyAgICAgIG1GYWxzZUV4cHJlc3Npb24oZmFsc2VFeHByZXNzaW9uKQoreworICAgIGdldFR5cGVQ
b2ludGVyKCktPnNldFF1YWxpZmllcigKKyAgICAgICAgVEludGVybVRlcm5hcnk6OkRldGVybWlu
ZVF1YWxpZmllcihjb25kLCB0cnVlRXhwcmVzc2lvbiwgZmFsc2VFeHByZXNzaW9uKSk7Cit9CiAK
LSAgICBpZiAoZnVuY1JldHVyblR5cGUgIT0gbnVsbHB0cikKKy8vIHN0YXRpYworVFF1YWxpZmll
ciBUSW50ZXJtVGVybmFyeTo6RGV0ZXJtaW5lUXVhbGlmaWVyKFRJbnRlcm1UeXBlZCAqY29uZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlw
ZWQgKnRydWVFeHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRJbnRlcm1UeXBlZCAqZmFsc2VFeHByZXNzaW9uKQoreworICAgIGlmIChjb25k
LT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCAmJiB0cnVlRXhwcmVzc2lvbi0+Z2V0UXVhbGlm
aWVyKCkgPT0gRXZxQ29uc3QgJiYKKyAgICAgICAgZmFsc2VFeHByZXNzaW9uLT5nZXRRdWFsaWZp
ZXIoKSA9PSBFdnFDb25zdCkKICAgICB7Ci0gICAgICAgIGlmIChmdW5jUmV0dXJuVHlwZS0+Z2V0
QmFzaWNUeXBlKCkgPT0gRWJ0Qm9vbCkKKyAgICAgICAgcmV0dXJuIEV2cUNvbnN0OworICAgIH0K
KyAgICByZXR1cm4gRXZxVGVtcG9yYXJ5OworfQorCit2b2lkIFRJbnRlcm1Td2l6emxlOjpwcm9t
b3RlKCkKK3sKKyAgICBUUXVhbGlmaWVyIHJlc3VsdFF1YWxpZmllciA9IEV2cVRlbXBvcmFyeTsK
KyAgICBpZiAobU9wZXJhbmQtPmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KQorICAgICAgICBy
ZXN1bHRRdWFsaWZpZXIgPSBFdnFDb25zdDsKKworICAgIGF1dG8gbnVtRmllbGRzID0gbVN3aXp6
bGVPZmZzZXRzLnNpemUoKTsKKyAgICBzZXRUeXBlKFRUeXBlKG1PcGVyYW5kLT5nZXRCYXNpY1R5
cGUoKSwgbU9wZXJhbmQtPmdldFByZWNpc2lvbigpLCByZXN1bHRRdWFsaWZpZXIsCisgICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihudW1GaWVsZHMpKSk7Cit9CisK
K2Jvb2wgVEludGVybVN3aXp6bGU6Omhhc0R1cGxpY2F0ZU9mZnNldHMoKSBjb25zdAoreworICAg
IGludCBvZmZzZXRDb3VudFs0XSA9IHswdSwgMHUsIDB1LCAwdX07CisgICAgZm9yIChjb25zdCBh
dXRvIG9mZnNldCA6IG1Td2l6emxlT2Zmc2V0cykKKyAgICB7CisgICAgICAgIG9mZnNldENvdW50
W29mZnNldF0rKzsKKyAgICAgICAgaWYgKG9mZnNldENvdW50W29mZnNldF0gPiAxKQogICAgICAg
ICB7Ci0gICAgICAgICAgICAvLyBCb29sIHR5cGVzIHNob3VsZCBub3QgaGF2ZSBwcmVjaXNpb24u
Ci0gICAgICAgICAgICBzZXRUeXBlKCpmdW5jUmV0dXJuVHlwZSk7CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICBlbHNlCisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKwordm9pZCBUSW50ZXJtU3dpenpsZTo6d3JpdGVPZmZzZXRzQXNYWVpXKFRJbmZvU2lu
a0Jhc2UgKm91dCkgY29uc3QKK3sKKyAgICBmb3IgKGNvbnN0IGludCBvZmZzZXQgOiBtU3dpenps
ZU9mZnNldHMpCisgICAgeworICAgICAgICBzd2l0Y2ggKG9mZnNldCkKICAgICAgICAgewotICAg
ICAgICAgICAgLy8gUHJlY2lzaW9uIG9mIHRoZSBub2RlIGhhcyBiZWVuIHNldCBiYXNlZCBvbiB0
aGUgb3BlcmFuZC4KLSAgICAgICAgICAgIHNldFR5cGVQcmVzZXJ2ZVByZWNpc2lvbigqZnVuY1Jl
dHVyblR5cGUpOworICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAqb3V0IDw8ICJ4IjsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAqb3V0IDw8ICJ5
IjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAqb3V0
IDw8ICJ6IjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAg
ICAqb3V0IDw8ICJ3IjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgfQogICAgIH0KK30KIAotICAgIGlmICht
T3BlcmFuZC0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCi0gICAgICAgIG1UeXBlLnNldFF1
YWxpZmllcihFdnFDb25zdCk7Ci0gICAgZWxzZQotICAgICAgICBtVHlwZS5zZXRRdWFsaWZpZXIo
RXZxVGVtcG9yYXJ5KTsKK1RRdWFsaWZpZXIgVEludGVybUJpbmFyeTo6R2V0Q29tbWFRdWFsaWZp
ZXIoaW50IHNoYWRlclZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFRJbnRlcm1UeXBlZCAqbGVmdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVEludGVybVR5cGVkICpyaWdodCkKK3sKKyAg
ICAvLyBFU1NMMy4wMCBzZWN0aW9uIDEyLjQzOiBUaGUgcmVzdWx0IG9mIGEgc2VxdWVuY2Ugb3Bl
cmF0b3IgaXMgbm90IGEgY29uc3RhbnQtZXhwcmVzc2lvbi4KKyAgICBpZiAoc2hhZGVyVmVyc2lv
biA+PSAzMDAgfHwgbGVmdC0+Z2V0UXVhbGlmaWVyKCkgIT0gRXZxQ29uc3QgfHwKKyAgICAgICAg
cmlnaHQtPmdldFF1YWxpZmllcigpICE9IEV2cUNvbnN0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IEV2cVRlbXBvcmFyeTsKKyAgICB9CisgICAgcmV0dXJuIEV2cUNvbnN0OwogfQogCi0vLwotLy8g
RXN0YWJsaXNoZXMgdGhlIHR5cGUgb2YgdGhlIHJlc3VsdGFudCBvcGVyYXRpb24sIGFzIHdlbGwg
YXMKLS8vIG1ha2VzIHRoZSBvcGVyYXRvciB0aGUgY29ycmVjdCBvbmUgZm9yIHRoZSBvcGVyYW5k
cy4KLS8vCi0vLyBGb3IgbG90cyBvZiBvcGVyYXRpb25zIGl0IHNob3VsZCBhbHJlYWR5IGJlIGVz
dGFibGlzaGVkIHRoYXQgdGhlIG9wZXJhbmQKLS8vIGNvbWJpbmF0aW9uIGlzIHZhbGlkLCBidXQg
cmV0dXJucyBmYWxzZSBpZiBvcGVyYXRvciBjYW4ndCB3b3JrIG9uIG9wZXJhbmRzLgotLy8KLWJv
b2wgVEludGVybUJpbmFyeTo6cHJvbW90ZShUSW5mb1NpbmsgJmluZm9TaW5rKQorLy8gRXN0YWJs
aXNoZXMgdGhlIHR5cGUgb2YgdGhlIHJlc3VsdCBvZiB0aGUgYmluYXJ5IG9wZXJhdGlvbi4KK3Zv
aWQgVEludGVybUJpbmFyeTo6cHJvbW90ZSgpCiB7Ci0gICAgQVNTRVJUKG1MZWZ0LT5pc0FycmF5
KCkgPT0gbVJpZ2h0LT5pc0FycmF5KCkpOworICAgIEFTU0VSVCghaXNNdWx0aXBsaWNhdGlvbigp
IHx8CisgICAgICAgICAgIG1PcCA9PSBHZXRNdWxPcEJhc2VkT25PcGVyYW5kcyhtTGVmdC0+Z2V0
VHlwZSgpLCBtUmlnaHQtPmdldFR5cGUoKSkpOworCisgICAgLy8gQ29tbWEgaXMgaGFuZGxlZCBh
cyBhIHNwZWNpYWwgY2FzZS4KKyAgICBpZiAobU9wID09IEVPcENvbW1hKQorICAgIHsKKyAgICAg
ICAgc2V0VHlwZShtUmlnaHQtPmdldFR5cGUoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAK
LSAgICAvLwogICAgIC8vIEJhc2UgYXNzdW1wdGlvbjogIGp1c3QgbWFrZSB0aGUgdHlwZSB0aGUg
c2FtZSBhcyB0aGUgbGVmdAogICAgIC8vIG9wZXJhbmQuICBUaGVuIG9ubHkgZGV2aWF0aW9ucyBm
cm9tIHRoaXMgbmVlZCBiZSBjb2RlZC4KLSAgICAvLwogICAgIHNldFR5cGUobUxlZnQtPmdldFR5
cGUoKSk7CiAKLSAgICAvLyBUaGUgcmVzdWx0IGdldHMgcHJvbW90ZWQgdG8gdGhlIGhpZ2hlc3Qg
cHJlY2lzaW9uLgotICAgIFRQcmVjaXNpb24gaGlnaGVyUHJlY2lzaW9uID0gR2V0SGlnaGVyUHJl
Y2lzaW9uKAotICAgICAgICBtTGVmdC0+Z2V0UHJlY2lzaW9uKCksIG1SaWdodC0+Z2V0UHJlY2lz
aW9uKCkpOwotICAgIGdldFR5cGVQb2ludGVyKCktPnNldFByZWNpc2lvbihoaWdoZXJQcmVjaXNp
b24pOwotCiAgICAgVFF1YWxpZmllciByZXN1bHRRdWFsaWZpZXIgPSBFdnFDb25zdDsKICAgICAv
LyBCaW5hcnkgb3BlcmF0aW9ucyByZXN1bHRzIGluIHRlbXBvcmFyeSB2YXJpYWJsZXMgdW5sZXNz
IGJvdGgKICAgICAvLyBvcGVyYW5kcyBhcmUgY29uc3QuCkBAIC01NzEsNiArODYyLDU1IEBAIGJv
b2wgVEludGVybUJpbmFyeTo6cHJvbW90ZShUSW5mb1NpbmsgJmkKICAgICAgICAgZ2V0VHlwZVBv
aW50ZXIoKS0+c2V0UXVhbGlmaWVyKEV2cVRlbXBvcmFyeSk7CiAgICAgfQogCisgICAgLy8gSGFu
ZGxlIGluZGV4aW5nIG9wcy4KKyAgICBzd2l0Y2ggKG1PcCkKKyAgICB7CisgICAgICAgIGNhc2Ug
RU9wSW5kZXhEaXJlY3Q6CisgICAgICAgIGNhc2UgRU9wSW5kZXhJbmRpcmVjdDoKKyAgICAgICAg
ICAgIGlmIChtTGVmdC0+aXNBcnJheSgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IG1UeXBlLmNsZWFyQXJyYXluZXNzKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
IGlmIChtTGVmdC0+aXNNYXRyaXgoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBz
ZXRUeXBlKFRUeXBlKG1MZWZ0LT5nZXRCYXNpY1R5cGUoKSwgbUxlZnQtPmdldFByZWNpc2lvbigp
LCByZXN1bHRRdWFsaWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyPihtTGVmdC0+Z2V0Um93cygpKSkpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZWxzZSBpZiAobUxlZnQtPmlzVmVjdG9yKCkpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgc2V0VHlwZShUVHlwZShtTGVmdC0+Z2V0QmFzaWNUeXBlKCksIG1MZWZ0
LT5nZXRQcmVjaXNpb24oKSwgcmVzdWx0UXVhbGlmaWVyKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBFT3BJ
bmRleERpcmVjdFN0cnVjdDoKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgVEZpZWxkTGlz
dCAmZmllbGRzID0gbUxlZnQtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CisgICAg
ICAgICAgICBjb25zdCBpbnQgaSAgICAgICAgICAgICAgPSBtUmlnaHQtPmdldEFzQ29uc3RhbnRV
bmlvbigpLT5nZXRJQ29uc3QoMCk7CisgICAgICAgICAgICBzZXRUeXBlKCpmaWVsZHNbaV0tPnR5
cGUoKSk7CisgICAgICAgICAgICBnZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIocmVzdWx0
UXVhbGlmaWVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IEVPcEluZGV4RGlyZWN0SW50ZXJmYWNlQmxvY2s6CisgICAgICAgIHsKKyAgICAgICAgICAgIGNv
bnN0IFRGaWVsZExpc3QgJmZpZWxkcyA9IG1MZWZ0LT5nZXRUeXBlKCkuZ2V0SW50ZXJmYWNlQmxv
Y2soKS0+ZmllbGRzKCk7CisgICAgICAgICAgICBjb25zdCBpbnQgaSAgICAgICAgICAgICAgPSBt
UmlnaHQtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRJQ29uc3QoMCk7CisgICAgICAgICAgICBz
ZXRUeXBlKCpmaWVsZHNbaV0tPnR5cGUoKSk7CisgICAgICAgICAgICBnZXRUeXBlUG9pbnRlcigp
LT5zZXRRdWFsaWZpZXIocmVzdWx0UXVhbGlmaWVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgQVNTRVJUKG1MZWZ0LT5pc0FycmF5KCkgPT0gbVJpZ2h0LT5pc0FycmF5KCkpOworCisgICAg
Ly8gVGhlIHJlc3VsdCBnZXRzIHByb21vdGVkIHRvIHRoZSBoaWdoZXN0IHByZWNpc2lvbi4KKyAg
ICBUUHJlY2lzaW9uIGhpZ2hlclByZWNpc2lvbiA9IEdldEhpZ2hlclByZWNpc2lvbihtTGVmdC0+
Z2V0UHJlY2lzaW9uKCksIG1SaWdodC0+Z2V0UHJlY2lzaW9uKCkpOworICAgIGdldFR5cGVQb2lu
dGVyKCktPnNldFByZWNpc2lvbihoaWdoZXJQcmVjaXNpb24pOworCiAgICAgY29uc3QgaW50IG5v
bWluYWxTaXplID0KICAgICAgICAgc3RkOjptYXgobUxlZnQtPmdldE5vbWluYWxTaXplKCksIG1S
aWdodC0+Z2V0Tm9taW5hbFNpemUoKSk7CiAKQEAgLTU5MCw4ICs5MzAsOCBAQCBib29sIFRJbnRl
cm1CaW5hcnk6OnByb21vdGUoVEluZm9TaW5rICZpCiAgICAgICAgICAgY2FzZSBFT3BHcmVhdGVy
VGhhbjoKICAgICAgICAgICBjYXNlIEVPcExlc3NUaGFuRXF1YWw6CiAgICAgICAgICAgY2FzZSBF
T3BHcmVhdGVyVGhhbkVxdWFsOgotICAgICAgICAgICAgc2V0VHlwZShUVHlwZShFYnRCb29sLCBF
YnBVbmRlZmluZWQpKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBzZXRUeXBl
KFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgcmVzdWx0UXVhbGlmaWVyKSk7CisgICAgICAg
ICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgLy8KICAgICAgICAgICAvLyBBbmQgYW5kIE9yIG9w
ZXJhdGUgb24gY29uZGl0aW9uYWxzCkBAIC02MDAsMjQ0ICs5NDAsMjEwIEBAIGJvb2wgVEludGVy
bUJpbmFyeTo6cHJvbW90ZShUSW5mb1NpbmsgJmkKICAgICAgICAgICBjYXNlIEVPcExvZ2ljYWxY
b3I6CiAgICAgICAgICAgY2FzZSBFT3BMb2dpY2FsT3I6CiAgICAgICAgICAgICBBU1NFUlQobUxl
ZnQtPmdldEJhc2ljVHlwZSgpID09IEVidEJvb2wgJiYgbVJpZ2h0LT5nZXRCYXNpY1R5cGUoKSA9
PSBFYnRCb29sKTsKLSAgICAgICAgICAgIHNldFR5cGUoVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZp
bmVkKSk7CisgICAgICAgICAgICBzZXRUeXBlKFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwg
cmVzdWx0UXVhbGlmaWVyKSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIElmIHdlIHJlYWNoIGhlcmUsIGF0IGxl
YXN0IG9uZSBvZiB0aGUgb3BlcmFuZHMgaXMgdmVjdG9yIG9yIG1hdHJpeC4KICAgICAvLyBUaGUg
b3RoZXIgb3BlcmFuZCBjb3VsZCBiZSBhIHNjYWxhciwgdmVjdG9yLCBvciBtYXRyaXguCi0gICAg
Ly8gQ2FuIHRoZXNlIHR3byBvcGVyYW5kcyBiZSBjb21iaW5lZD8KLSAgICAvLwogICAgIFRCYXNp
Y1R5cGUgYmFzaWNUeXBlID0gbUxlZnQtPmdldEJhc2ljVHlwZSgpOworCiAgICAgc3dpdGNoICht
T3ApCiAgICAgewotICAgICAgY2FzZSBFT3BNdWw6Ci0gICAgICAgIGlmICghbUxlZnQtPmlzTWF0
cml4KCkgJiYgbVJpZ2h0LT5pc01hdHJpeCgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
bUxlZnQtPmlzVmVjdG9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbU9wID0g
RU9wVmVjdG9yVGltZXNNYXRyaXg7Ci0gICAgICAgICAgICAgICAgc2V0VHlwZShUVHlwZShiYXNp
Y1R5cGUsIGhpZ2hlclByZWNpc2lvbiwgcmVzdWx0UXVhbGlmaWVyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obVJpZ2h0LT5nZXRDb2xz
KCkpLCAxKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgIGNhc2Ug
RU9wTXVsOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNT
Y2FsYXI6CisgICAgICAgICAgICBpZiAobVJpZ2h0LT5pc01hdHJpeCgpKQogICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIG1PcCA9IEVPcE1hdHJpeFRpbWVzU2NhbGFyOwogICAgICAgICAg
ICAgICAgIHNldFR5cGUoVFR5cGUoYmFzaWNUeXBlLCBoaWdoZXJQcmVjaXNpb24sIHJlc3VsdFF1
YWxpZmllciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXI+KG1SaWdodC0+Z2V0Q29scygpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KG1SaWdodC0+Z2V0Um93cygpKSkpOwogICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG1MZWZ0LT5pc01hdHJpeCgp
ICYmICFtUmlnaHQtPmlzTWF0cml4KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtUmln
aHQtPmlzVmVjdG9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbU9wID0gRU9w
TWF0cml4VGltZXNWZWN0b3I7Ci0gICAgICAgICAgICAgICAgc2V0VHlwZShUVHlwZShiYXNpY1R5
cGUsIGhpZ2hlclByZWNpc2lvbiwgcmVzdWx0UXVhbGlmaWVyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obUxlZnQtPmdldFJvd3MoKSks
IDEpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBtT3AgPSBFT3BNYXRyaXhUaW1lc1NjYWxhcjsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChtTGVmdC0+aXNNYXRyaXgoKSAmJiBtUmlnaHQt
PmlzTWF0cml4KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1PcCA9IEVPcE1hdHJpeFRpbWVz
TWF0cml4OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNW
ZWN0b3I6CisgICAgICAgICAgICBzZXRUeXBlKFRUeXBlKGJhc2ljVHlwZSwgaGlnaGVyUHJlY2lz
aW9uLCByZXN1bHRRdWFsaWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXI+KG1MZWZ0LT5nZXRSb3dzKCkpLCAxKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc01hdHJpeDoKICAgICAgICAgICAgIHNl
dFR5cGUoVFR5cGUoYmFzaWNUeXBlLCBoaWdoZXJQcmVjaXNpb24sIHJlc3VsdFF1YWxpZmllciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obVJp
Z2h0LT5nZXRDb2xzKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyPihtTGVmdC0+Z2V0Um93cygpKSkpOwotICAgICAgICB9Ci0gICAgICAgIGVs
c2UgaWYgKCFtTGVmdC0+aXNNYXRyaXgoKSAmJiAhbVJpZ2h0LT5pc01hdHJpeCgpKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAobUxlZnQtPmlzVmVjdG9yKCkgJiYgbVJpZ2h0LT5pc1ZlY3Rv
cigpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIGxlYXZlIGFzIGNvbXBvbmVu
dCBwcm9kdWN0Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChtTGVmdC0+aXNW
ZWN0b3IoKSB8fCBtUmlnaHQtPmlzVmVjdG9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgbU9wID0gRU9wVmVjdG9yVGltZXNTY2FsYXI7Ci0gICAgICAgICAgICAgICAgc2V0VHlw
ZShUVHlwZShiYXNpY1R5cGUsIGhpZ2hlclByZWNpc2lvbiwgcmVzdWx0UXVhbGlmaWVyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obm9t
aW5hbFNpemUpLCAxKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNTY2FsYXI6Cisg
ICAgICAgICAgICBzZXRUeXBlKFRUeXBlKGJhc2ljVHlwZSwgaGlnaGVyUHJlY2lzaW9uLCByZXN1
bHRRdWFsaWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXI+KG5vbWluYWxTaXplKSwgMSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRU9wVmVjdG9yVGltZXNNYXRyaXg6CisgICAgICAgICAgICBzZXRUeXBlKFRUeXBlKGJh
c2ljVHlwZSwgaGlnaGVyUHJlY2lzaW9uLCByZXN1bHRRdWFsaWZpZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KG1SaWdodC0+Z2V0Q29scygp
KSwgMSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wTXVsQXNzaWduOgor
ICAgICAgICBjYXNlIEVPcFZlY3RvclRpbWVzU2NhbGFyQXNzaWduOgorICAgICAgICBjYXNlIEVP
cFZlY3RvclRpbWVzTWF0cml4QXNzaWduOgorICAgICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzU2Nh
bGFyQXNzaWduOgorICAgICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzTWF0cml4QXNzaWduOgorICAg
ICAgICAgICAgQVNTRVJUKG1PcCA9PSBHZXRNdWxBc3NpZ25PcEJhc2VkT25PcGVyYW5kcyhtTGVm
dC0+Z2V0VHlwZSgpLCBtUmlnaHQtPmdldFR5cGUoKSkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgRU9wQXNzaWduOgorICAgICAgICBjYXNlIEVPcEluaXRpYWxpemU6CisgICAg
ICAgICAgICBBU1NFUlQoKG1MZWZ0LT5nZXROb21pbmFsU2l6ZSgpID09IG1SaWdodC0+Z2V0Tm9t
aW5hbFNpemUoKSkgJiYKKyAgICAgICAgICAgICAgICAgICAobUxlZnQtPmdldFNlY29uZGFyeVNp
emUoKSA9PSBtUmlnaHQtPmdldFNlY29uZGFyeVNpemUoKSkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgRU9wQWRkOgorICAgICAgICBjYXNlIEVPcFN1YjoKKyAgICAgICAgY2Fz
ZSBFT3BEaXY6CisgICAgICAgIGNhc2UgRU9wSU1vZDoKKyAgICAgICAgY2FzZSBFT3BCaXRTaGlm
dExlZnQ6CisgICAgICAgIGNhc2UgRU9wQml0U2hpZnRSaWdodDoKKyAgICAgICAgY2FzZSBFT3BC
aXR3aXNlQW5kOgorICAgICAgICBjYXNlIEVPcEJpdHdpc2VYb3I6CisgICAgICAgIGNhc2UgRU9w
Qml0d2lzZU9yOgorICAgICAgICBjYXNlIEVPcEFkZEFzc2lnbjoKKyAgICAgICAgY2FzZSBFT3BT
dWJBc3NpZ246CisgICAgICAgIGNhc2UgRU9wRGl2QXNzaWduOgorICAgICAgICBjYXNlIEVPcElN
b2RBc3NpZ246CisgICAgICAgIGNhc2UgRU9wQml0U2hpZnRMZWZ0QXNzaWduOgorICAgICAgICBj
YXNlIEVPcEJpdFNoaWZ0UmlnaHRBc3NpZ246CisgICAgICAgIGNhc2UgRU9wQml0d2lzZUFuZEFz
c2lnbjoKKyAgICAgICAgY2FzZSBFT3BCaXR3aXNlWG9yQXNzaWduOgorICAgICAgICBjYXNlIEVP
cEJpdHdpc2VPckFzc2lnbjoKICAgICAgICAgewotICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5t
ZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIk1pc3NpbmcgZWxzZXMiKTsKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIGNvbnN0IGludCBzZWNvbmRhcnlTaXplID0KKyAgICAgICAgICAg
ICAgICBzdGQ6Om1heChtTGVmdC0+Z2V0U2Vjb25kYXJ5U2l6ZSgpLCBtUmlnaHQtPmdldFNlY29u
ZGFyeVNpemUoKSk7CisgICAgICAgICAgICBzZXRUeXBlKFRUeXBlKGJhc2ljVHlwZSwgaGlnaGVy
UHJlY2lzaW9uLCByZXN1bHRRdWFsaWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KG5vbWluYWxTaXplKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oc2Vjb25kYXJ5U2l6ZSkpKTsKKyAg
ICAgICAgICAgIEFTU0VSVCghbUxlZnQtPmlzQXJyYXkoKSAmJiAhbVJpZ2h0LT5pc0FycmF5KCkp
OworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBFT3BFcXVhbDoK
KyAgICAgICAgY2FzZSBFT3BOb3RFcXVhbDoKKyAgICAgICAgY2FzZSBFT3BMZXNzVGhhbjoKKyAg
ICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbjoKKyAgICAgICAgY2FzZSBFT3BMZXNzVGhhbkVxdWFs
OgorICAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuRXF1YWw6CisgICAgICAgICAgICBBU1NFUlQo
KG1MZWZ0LT5nZXROb21pbmFsU2l6ZSgpID09IG1SaWdodC0+Z2V0Tm9taW5hbFNpemUoKSkgJiYK
KyAgICAgICAgICAgICAgICAgICAobUxlZnQtPmdldFNlY29uZGFyeVNpemUoKSA9PSBtUmlnaHQt
PmdldFNlY29uZGFyeVNpemUoKSkpOworICAgICAgICAgICAgc2V0VHlwZShUVHlwZShFYnRCb29s
LCBFYnBVbmRlZmluZWQsIHJlc3VsdFF1YWxpZmllcikpOworICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgY2FzZSBFT3BJbmRleERpcmVjdDoKKyAgICAgICAgY2FzZSBFT3BJbmRleEluZGly
ZWN0OgorICAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0SW50ZXJmYWNlQmxvY2s6CisgICAgICAg
IGNhc2UgRU9wSW5kZXhEaXJlY3RTdHJ1Y3Q6CisgICAgICAgICAgICAvLyBUaGVzZSBvcHMgc2hv
dWxkIGJlIGFscmVhZHkgZnVsbHkgaGFuZGxlZC4KKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CiAKLSAgICAgICAgaWYgKCFW
YWxpZGF0ZU11bHRpcGxpY2F0aW9uKG1PcCwgbUxlZnQtPmdldFR5cGUoKSwgbVJpZ2h0LT5nZXRU
eXBlKCkpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
LSAgICAgICAgYnJlYWs7Citjb25zdCBUQ29uc3RhbnRVbmlvbiAqVEludGVybUNvbnN0YW50VW5p
b246OmZvbGRJbmRleGluZyhpbnQgaW5kZXgpCit7CisgICAgaWYgKGlzQXJyYXkoKSkKKyAgICB7
CisgICAgICAgIEFTU0VSVChpbmRleCA8IHN0YXRpY19jYXN0PGludD4oZ2V0VHlwZSgpLmdldEFy
cmF5U2l6ZSgpKSk7CisgICAgICAgIFRUeXBlIGFycmF5RWxlbWVudFR5cGUgPSBnZXRUeXBlKCk7
CisgICAgICAgIGFycmF5RWxlbWVudFR5cGUuY2xlYXJBcnJheW5lc3MoKTsKKyAgICAgICAgc2l6
ZV90IGFycmF5RWxlbWVudFNpemUgPSBhcnJheUVsZW1lbnRUeXBlLmdldE9iamVjdFNpemUoKTsK
KyAgICAgICAgcmV0dXJuICZtVW5pb25BcnJheVBvaW50ZXJbYXJyYXlFbGVtZW50U2l6ZSAqIGlu
ZGV4XTsKKyAgICB9CisgICAgZWxzZSBpZiAoaXNNYXRyaXgoKSkKKyAgICB7CisgICAgICAgIEFT
U0VSVChpbmRleCA8IGdldFR5cGUoKS5nZXRDb2xzKCkpOworICAgICAgICBpbnQgc2l6ZSA9IGdl
dFR5cGUoKS5nZXRSb3dzKCk7CisgICAgICAgIHJldHVybiAmbVVuaW9uQXJyYXlQb2ludGVyW3Np
emUgKiBpbmRleF07CisgICAgfQorICAgIGVsc2UgaWYgKGlzVmVjdG9yKCkpCisgICAgeworICAg
ICAgICBBU1NFUlQoaW5kZXggPCBnZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSk7CisgICAgICAg
IHJldHVybiAmbVVuaW9uQXJyYXlQb2ludGVyW2luZGV4XTsKKyAgICB9CisgICAgZWxzZQorICAg
IHsKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorfQogCi0gICAgICBjYXNlIEVPcE11bEFzc2lnbjoKLSAgICAgICAgaWYgKCFtTGVmdC0+aXNN
YXRyaXgoKSAmJiBtUmlnaHQtPmlzTWF0cml4KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
IChtTGVmdC0+aXNWZWN0b3IoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtT3Ag
PSBFT3BWZWN0b3JUaW1lc01hdHJpeEFzc2lnbjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobUxlZnQtPmlzTWF0cml4KCkg
JiYgIW1SaWdodC0+aXNNYXRyaXgoKSkKK1RJbnRlcm1UeXBlZCAqVEludGVybVN3aXp6bGU6OmZv
bGQoKQoreworICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpvcGVyYW5kQ29uc3RhbnQgPSBtT3Bl
cmFuZC0+Z2V0QXNDb25zdGFudFVuaW9uKCk7CisgICAgaWYgKG9wZXJhbmRDb25zdGFudCA9PSBu
dWxscHRyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgVENv
bnN0YW50VW5pb24gKmNvbnN0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbVN3aXp6bGVPZmZz
ZXRzLnNpemUoKV07CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtU3dpenpsZU9mZnNldHMu
c2l6ZSgpOyArK2kpCisgICAgeworICAgICAgICBjb25zdEFycmF5W2ldID0gKm9wZXJhbmRDb25z
dGFudC0+Zm9sZEluZGV4aW5nKG1Td2l6emxlT2Zmc2V0cy5hdChpKSk7CisgICAgfQorICAgIHJl
dHVybiBDcmVhdGVGb2xkZWROb2RlKGNvbnN0QXJyYXksIHRoaXMsIG1UeXBlLmdldFF1YWxpZmll
cigpKTsKK30KKworVEludGVybVR5cGVkICpUSW50ZXJtQmluYXJ5Ojpmb2xkKFREaWFnbm9zdGlj
cyAqZGlhZ25vc3RpY3MpCit7CisgICAgVEludGVybUNvbnN0YW50VW5pb24gKmxlZnRDb25zdGFu
dCAgPSBtTGVmdC0+Z2V0QXNDb25zdGFudFVuaW9uKCk7CisgICAgVEludGVybUNvbnN0YW50VW5p
b24gKnJpZ2h0Q29uc3RhbnQgPSBtUmlnaHQtPmdldEFzQ29uc3RhbnRVbmlvbigpOworICAgIHN3
aXRjaCAobU9wKQorICAgIHsKKyAgICAgICAgY2FzZSBFT3BJbmRleERpcmVjdDoKICAgICAgICAg
ewotICAgICAgICAgICAgaWYgKG1SaWdodC0+aXNWZWN0b3IoKSkKKyAgICAgICAgICAgIGlmIChs
ZWZ0Q29uc3RhbnQgPT0gbnVsbHB0ciB8fCByaWdodENvbnN0YW50ID09IG51bGxwdHIpCiAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1PcCA9IEVP
cE1hdHJpeFRpbWVzU2NhbGFyQXNzaWduOworICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50IGluZGV4ID0gcmlnaHRDb25zdGFudC0+
Z2V0SUNvbnN0KDApOworCisgICAgICAgICAgICBjb25zdCBUQ29uc3RhbnRVbmlvbiAqY29uc3RB
cnJheSA9IGxlZnRDb25zdGFudC0+Zm9sZEluZGV4aW5nKGluZGV4KTsKKyAgICAgICAgICAgIHJl
dHVybiBDcmVhdGVGb2xkZWROb2RlKGNvbnN0QXJyYXksIHRoaXMsIG1UeXBlLmdldFF1YWxpZmll
cigpKTsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChtTGVmdC0+aXNNYXRyaXgoKSAmJiBt
UmlnaHQtPmlzTWF0cml4KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1PcCA9IEVPcE1hdHJp
eFRpbWVzTWF0cml4QXNzaWduOwotICAgICAgICAgICAgc2V0VHlwZShUVHlwZShiYXNpY1R5cGUs
IGhpZ2hlclByZWNpc2lvbiwgcmVzdWx0UXVhbGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihtUmlnaHQtPmdldENvbHMoKSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KG1MZWZ0LT5n
ZXRSb3dzKCkpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoIW1MZWZ0LT5pc01hdHJp
eCgpICYmICFtUmlnaHQtPmlzTWF0cml4KCkpCisgICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3RT
dHJ1Y3Q6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtTGVmdC0+aXNWZWN0b3IoKSAmJiBt
UmlnaHQtPmlzVmVjdG9yKCkpCisgICAgICAgICAgICBpZiAobGVmdENvbnN0YW50ID09IG51bGxw
dHIgfHwgcmlnaHRDb25zdGFudCA9PSBudWxscHRyKQogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIC8vIGxlYXZlIGFzIGNvbXBvbmVudCBwcm9kdWN0CisgICAgICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChtTGVmdC0+
aXNWZWN0b3IoKSB8fCBtUmlnaHQtPmlzVmVjdG9yKCkpCisgICAgICAgICAgICBjb25zdCBURmll
bGRMaXN0ICZmaWVsZHMgPSBtTGVmdC0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLT5maWVsZHMoKTsK
KyAgICAgICAgICAgIHNpemVfdCBpbmRleCAgICAgICAgICAgICA9IHN0YXRpY19jYXN0PHNpemVf
dD4ocmlnaHRDb25zdGFudC0+Z2V0SUNvbnN0KDApKTsKKworICAgICAgICAgICAgc2l6ZV90IHBy
ZXZpb3VzRmllbGRzU2l6ZSA9IDA7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGluZGV4OyArK2kpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKCFtTGVmdC0+
aXNWZWN0b3IoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgICAgIG1PcCA9IEVPcFZlY3RvclRpbWVzU2NhbGFyQXNzaWduOwotICAgICAgICAgICAgICAg
IHNldFR5cGUoVFR5cGUoYmFzaWNUeXBlLCBoaWdoZXJQcmVjaXNpb24sIHJlc3VsdFF1YWxpZmll
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXI+KG1MZWZ0LT5nZXROb21pbmFsU2l6ZSgpKSwgMSkpOworICAgICAgICAgICAgICAgIHByZXZp
b3VzRmllbGRzU2l6ZSArPSBmaWVsZHNbaV0tPnR5cGUoKS0+Z2V0T2JqZWN0U2l6ZSgpOwogICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAg
ICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1pc3NpbmcgZWxzZXMiKTsKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQogCi0gICAgICAgIGlmICghVmFsaWRh
dGVNdWx0aXBsaWNhdGlvbihtT3AsIG1MZWZ0LT5nZXRUeXBlKCksIG1SaWdodC0+Z2V0VHlwZSgp
KSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgY29u
c3QgVENvbnN0YW50VW5pb24gKmNvbnN0QXJyYXkgPSBsZWZ0Q29uc3RhbnQtPmdldFVuaW9uQXJy
YXlQb2ludGVyKCk7CisgICAgICAgICAgICByZXR1cm4gQ3JlYXRlRm9sZGVkTm9kZShjb25zdEFy
cmF5ICsgcHJldmlvdXNGaWVsZHNTaXplLCB0aGlzLCBtVHlwZS5nZXRRdWFsaWZpZXIoKSk7CiAg
ICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGNhc2UgRU9wQXNzaWduOgotICAgICAg
Y2FzZSBFT3BJbml0aWFsaXplOgotICAgICAgICAvLyBObyBtb3JlIGFkZGl0aW9uYWwgY2hlY2tz
IGFyZSBuZWVkZWQuCi0gICAgICAgIEFTU0VSVCgobUxlZnQtPmdldE5vbWluYWxTaXplKCkgPT0g
bVJpZ2h0LT5nZXROb21pbmFsU2l6ZSgpKSAmJgotICAgICAgICAgICAgKG1MZWZ0LT5nZXRTZWNv
bmRhcnlTaXplKCkgPT0gbVJpZ2h0LT5nZXRTZWNvbmRhcnlTaXplKCkpKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEVPcEFkZDoKLSAgICAgIGNhc2UgRU9wU3ViOgotICAgICAgY2FzZSBF
T3BEaXY6Ci0gICAgICBjYXNlIEVPcElNb2Q6Ci0gICAgICBjYXNlIEVPcEJpdFNoaWZ0TGVmdDoK
LSAgICAgIGNhc2UgRU9wQml0U2hpZnRSaWdodDoKLSAgICAgIGNhc2UgRU9wQml0d2lzZUFuZDoK
LSAgICAgIGNhc2UgRU9wQml0d2lzZVhvcjoKLSAgICAgIGNhc2UgRU9wQml0d2lzZU9yOgotICAg
ICAgY2FzZSBFT3BBZGRBc3NpZ246Ci0gICAgICBjYXNlIEVPcFN1YkFzc2lnbjoKLSAgICAgIGNh
c2UgRU9wRGl2QXNzaWduOgotICAgICAgY2FzZSBFT3BJTW9kQXNzaWduOgotICAgICAgY2FzZSBF
T3BCaXRTaGlmdExlZnRBc3NpZ246Ci0gICAgICBjYXNlIEVPcEJpdFNoaWZ0UmlnaHRBc3NpZ246
Ci0gICAgICBjYXNlIEVPcEJpdHdpc2VBbmRBc3NpZ246Ci0gICAgICBjYXNlIEVPcEJpdHdpc2VY
b3JBc3NpZ246Ci0gICAgICBjYXNlIEVPcEJpdHdpc2VPckFzc2lnbjoKLSAgICAgICAgaWYgKCht
TGVmdC0+aXNNYXRyaXgoKSAmJiBtUmlnaHQtPmlzVmVjdG9yKCkpIHx8Ci0gICAgICAgICAgICAo
bUxlZnQtPmlzVmVjdG9yKCkgJiYgbVJpZ2h0LT5pc01hdHJpeCgpKSkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQXJlIHRoZSBz
aXplcyBjb21wYXRpYmxlPwotICAgICAgICBpZiAobUxlZnQtPmdldE5vbWluYWxTaXplKCkgIT0g
bVJpZ2h0LT5nZXROb21pbmFsU2l6ZSgpIHx8Ci0gICAgICAgICAgICBtTGVmdC0+Z2V0U2Vjb25k
YXJ5U2l6ZSgpICE9IG1SaWdodC0+Z2V0U2Vjb25kYXJ5U2l6ZSgpKQotICAgICAgICB7Ci0gICAg
ICAgICAgICAvLyBJZiB0aGUgbm9taW5hbCBzaXplcyBvZiBvcGVyYW5kcyBkbyBub3QgbWF0Y2g6
Ci0gICAgICAgICAgICAvLyBPbmUgb2YgdGhlbSBtdXN0IGJlIGEgc2NhbGFyLgotICAgICAgICAg
ICAgaWYgKCFtTGVmdC0+aXNTY2FsYXIoKSAmJiAhbVJpZ2h0LT5pc1NjYWxhcigpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgLy8gSW4gdGhlIGNhc2Ugb2Yg
Y29tcG91bmQgYXNzaWdubWVudCBvdGhlciB0aGFuIG11bHRpcGx5LWFzc2lnbiwKLSAgICAgICAg
ICAgIC8vIHRoZSByaWdodCBzaWRlIG5lZWRzIHRvIGJlIGEgc2NhbGFyLiBPdGhlcndpc2UgYSB2
ZWN0b3IvbWF0cml4Ci0gICAgICAgICAgICAvLyB3b3VsZCBiZSBhc3NpZ25lZCB0byBhIHNjYWxh
ci4gQSBzY2FsYXIgY2FuJ3QgYmUgc2hpZnRlZCBieSBhCi0gICAgICAgICAgICAvLyB2ZWN0b3Ig
ZWl0aGVyLgotICAgICAgICAgICAgaWYgKCFtUmlnaHQtPmlzU2NhbGFyKCkgJiYKLSAgICAgICAg
ICAgICAgICAoaXNBc3NpZ25tZW50KCkgfHwKLSAgICAgICAgICAgICAgICBtT3AgPT0gRU9wQml0
U2hpZnRMZWZ0IHx8Ci0gICAgICAgICAgICAgICAgbU9wID09IEVPcEJpdFNoaWZ0UmlnaHQpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCisgICAgICAgIGNhc2Ug
RU9wSW5kZXhJbmRpcmVjdDoKKyAgICAgICAgY2FzZSBFT3BJbmRleERpcmVjdEludGVyZmFjZUJs
b2NrOgorICAgICAgICAgICAgLy8gQ2FuIG5ldmVyIGJlIGNvbnN0YW50IGZvbGRlZC4KKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBkZWZhdWx0OgogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb25zdCBpbnQgc2Vjb25kYXJ5U2l6ZSA9IHN0ZDo6bWF4KAotICAgICAgICAgICAg
ICAgIG1MZWZ0LT5nZXRTZWNvbmRhcnlTaXplKCksIG1SaWdodC0+Z2V0U2Vjb25kYXJ5U2l6ZSgp
KTsKLSAgICAgICAgICAgIHNldFR5cGUoVFR5cGUoYmFzaWNUeXBlLCBoaWdoZXJQcmVjaXNpb24s
IHJlc3VsdFF1YWxpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcj4obm9taW5hbFNpemUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzZWNvbmRhcnlTaXplKSkpOwotICAgICAgICAgICAg
aWYgKG1MZWZ0LT5pc0FycmF5KCkpCisgICAgICAgICAgICBpZiAobGVmdENvbnN0YW50ID09IG51
bGxwdHIgfHwgcmlnaHRDb25zdGFudCA9PSBudWxscHRyKQogICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIEFTU0VSVChtTGVmdC0+Z2V0QXJyYXlTaXplKCkgPT0gbVJpZ2h0LT5nZXRBcnJh
eVNpemUoKSk7Ci0gICAgICAgICAgICAgICAgbVR5cGUuc2V0QXJyYXlTaXplKG1MZWZ0LT5nZXRB
cnJheVNpemUoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGNhc2UgRU9wRXF1YWw6Ci0g
ICAgICBjYXNlIEVPcE5vdEVxdWFsOgotICAgICAgY2FzZSBFT3BMZXNzVGhhbjoKLSAgICAgIGNh
c2UgRU9wR3JlYXRlclRoYW46Ci0gICAgICBjYXNlIEVPcExlc3NUaGFuRXF1YWw6Ci0gICAgICBj
YXNlIEVPcEdyZWF0ZXJUaGFuRXF1YWw6Ci0gICAgICAgIEFTU0VSVCgobUxlZnQtPmdldE5vbWlu
YWxTaXplKCkgPT0gbVJpZ2h0LT5nZXROb21pbmFsU2l6ZSgpKSAmJgotICAgICAgICAgICAgKG1M
ZWZ0LT5nZXRTZWNvbmRhcnlTaXplKCkgPT0gbVJpZ2h0LT5nZXRTZWNvbmRhcnlTaXplKCkpKTsK
LSAgICAgICAgc2V0VHlwZShUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQpKTsKLSAgICAgICAg
YnJlYWs7Ci0KLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0g
ICAgcmV0dXJuIHRydWU7Ci19CisgICAgICAgICAgICBUQ29uc3RhbnRVbmlvbiAqY29uc3RBcnJh
eSA9CisgICAgICAgICAgICAgICAgbGVmdENvbnN0YW50LT5mb2xkQmluYXJ5KG1PcCwgcmlnaHRD
b25zdGFudCwgZGlhZ25vc3RpY3MsIG1MZWZ0LT5nZXRMaW5lKCkpOwogCi1USW50ZXJtVHlwZWQg
KlRJbnRlcm1CaW5hcnk6OmZvbGQoVEluZm9TaW5rICZpbmZvU2luaykKLXsKLSAgICBUSW50ZXJt
Q29uc3RhbnRVbmlvbiAqbGVmdENvbnN0YW50ID0gbUxlZnQtPmdldEFzQ29uc3RhbnRVbmlvbigp
OwotICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpyaWdodENvbnN0YW50ID0gbVJpZ2h0LT5nZXRB
c0NvbnN0YW50VW5pb24oKTsKLSAgICBpZiAobGVmdENvbnN0YW50ID09IG51bGxwdHIgfHwgcmln
aHRDb25zdGFudCA9PSBudWxscHRyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgfQotICAgIFRDb25zdGFudFVuaW9uICpjb25zdEFycmF5ID0gbGVmdENvbnN0YW50LT5mb2xk
QmluYXJ5KG1PcCwgcmlnaHRDb25zdGFudCwgaW5mb1NpbmspOwotCi0gICAgLy8gTm9kZXMgbWF5
IGJlIGNvbnN0YW50IGZvbGRlZCB3aXRob3V0IGJlaW5nIHF1YWxpZmllZCBhcyBjb25zdGFudC4K
LSAgICBUUXVhbGlmaWVyIHJlc3VsdFF1YWxpZmllciA9IEV2cUNvbnN0OwotICAgIGlmIChtTGVm
dC0+Z2V0UXVhbGlmaWVyKCkgIT0gRXZxQ29uc3QgfHwgbVJpZ2h0LT5nZXRRdWFsaWZpZXIoKSAh
PSBFdnFDb25zdCkKLSAgICB7Ci0gICAgICAgIHJlc3VsdFF1YWxpZmllciA9IEV2cVRlbXBvcmFy
eTsKKyAgICAgICAgICAgIC8vIE5vZGVzIG1heSBiZSBjb25zdGFudCBmb2xkZWQgd2l0aG91dCBi
ZWluZyBxdWFsaWZpZWQgYXMgY29uc3RhbnQuCisgICAgICAgICAgICByZXR1cm4gQ3JlYXRlRm9s
ZGVkTm9kZShjb25zdEFycmF5LCB0aGlzLCBtVHlwZS5nZXRRdWFsaWZpZXIoKSk7CisgICAgICAg
IH0KICAgICB9Ci0gICAgcmV0dXJuIENyZWF0ZUZvbGRlZE5vZGUoY29uc3RBcnJheSwgdGhpcywg
cmVzdWx0UXVhbGlmaWVyKTsKIH0KIAotVEludGVybVR5cGVkICpUSW50ZXJtVW5hcnk6OmZvbGQo
VEluZm9TaW5rICZpbmZvU2luaykKK1RJbnRlcm1UeXBlZCAqVEludGVybVVuYXJ5Ojpmb2xkKFRE
aWFnbm9zdGljcyAqZGlhZ25vc3RpY3MpCiB7CiAgICAgVEludGVybUNvbnN0YW50VW5pb24gKm9w
ZXJhbmRDb25zdGFudCA9IG1PcGVyYW5kLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKICAgICBpZiAo
b3BlcmFuZENvbnN0YW50ID09IG51bGxwdHIpCkBAIC04NjAsMTkgKzExNjYsMTggQEAgVEludGVy
bVR5cGVkICpUSW50ZXJtVW5hcnk6OmZvbGQoVEluZm9TaQogICAgICAgY2FzZSBFT3BVbnBhY2tV
bm9ybTJ4MTY6CiAgICAgICBjYXNlIEVPcFBhY2tIYWxmMngxNjoKICAgICAgIGNhc2UgRU9wVW5w
YWNrSGFsZjJ4MTY6Ci0gICAgICAgIGNvbnN0QXJyYXkgPSBvcGVyYW5kQ29uc3RhbnQtPmZvbGRV
bmFyeVdpdGhEaWZmZXJlbnRSZXR1cm5UeXBlKG1PcCwgaW5mb1NpbmspOwotICAgICAgICBicmVh
azsKKyAgICAgICAgICBjb25zdEFycmF5ID0gb3BlcmFuZENvbnN0YW50LT5mb2xkVW5hcnlOb25D
b21wb25lbnRXaXNlKG1PcCk7CisgICAgICAgICAgYnJlYWs7CiAgICAgICBkZWZhdWx0OgotICAg
ICAgICBjb25zdEFycmF5ID0gb3BlcmFuZENvbnN0YW50LT5mb2xkVW5hcnlXaXRoU2FtZVJldHVy
blR5cGUobU9wLCBpbmZvU2luayk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICAgIGNvbnN0QXJy
YXkgPSBvcGVyYW5kQ29uc3RhbnQtPmZvbGRVbmFyeUNvbXBvbmVudFdpc2UobU9wLCBkaWFnbm9z
dGljcyk7CisgICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgLy8gTm9kZXMgbWF5IGJlIGNv
bnN0YW50IGZvbGRlZCB3aXRob3V0IGJlaW5nIHF1YWxpZmllZCBhcyBjb25zdGFudC4KLSAgICBU
UXVhbGlmaWVyIHJlc3VsdFF1YWxpZmllciA9IG1PcGVyYW5kLT5nZXRRdWFsaWZpZXIoKSA9PSBF
dnFDb25zdCA/IEV2cUNvbnN0IDogRXZxVGVtcG9yYXJ5OwotICAgIHJldHVybiBDcmVhdGVGb2xk
ZWROb2RlKGNvbnN0QXJyYXksIHRoaXMsIHJlc3VsdFF1YWxpZmllcik7CisgICAgcmV0dXJuIENy
ZWF0ZUZvbGRlZE5vZGUoY29uc3RBcnJheSwgdGhpcywgbVR5cGUuZ2V0UXVhbGlmaWVyKCkpOwog
fQogCi1USW50ZXJtVHlwZWQgKlRJbnRlcm1BZ2dyZWdhdGU6OmZvbGQoVEluZm9TaW5rICZpbmZv
U2luaykKK1RJbnRlcm1UeXBlZCAqVEludGVybUFnZ3JlZ2F0ZTo6Zm9sZChURGlhZ25vc3RpY3Mg
KmRpYWdub3N0aWNzKQogewogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGFsbCBwYXJhbXMgYXJlIGNv
bnN0YW50IGJlZm9yZSBhY3R1YWwgY29uc3RhbnQgZm9sZGluZy4KICAgICBmb3IgKGF1dG8gKnBh
cmFtIDogKmdldFNlcXVlbmNlKCkpCkBAIC04ODQsOSArMTE4OSw5IEBAIFRJbnRlcm1UeXBlZCAq
VEludGVybUFnZ3JlZ2F0ZTo6Zm9sZChUSW4KICAgICB9CiAgICAgVENvbnN0YW50VW5pb24gKmNv
bnN0QXJyYXkgPSBudWxscHRyOwogICAgIGlmIChpc0NvbnN0cnVjdG9yKCkpCi0gICAgICAgIGNv
bnN0QXJyYXkgPSBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Rm9sZEFnZ3JlZ2F0ZUNvbnN0cnVjdG9y
KHRoaXMsIGluZm9TaW5rKTsKKyAgICAgICAgY29uc3RBcnJheSA9IFRJbnRlcm1Db25zdGFudFVu
aW9uOjpGb2xkQWdncmVnYXRlQ29uc3RydWN0b3IodGhpcyk7CiAgICAgZWxzZQotICAgICAgICBj
b25zdEFycmF5ID0gVEludGVybUNvbnN0YW50VW5pb246OkZvbGRBZ2dyZWdhdGVCdWlsdEluKHRo
aXMsIGluZm9TaW5rKTsKKyAgICAgICAgY29uc3RBcnJheSA9IFRJbnRlcm1Db25zdGFudFVuaW9u
OjpGb2xkQWdncmVnYXRlQnVpbHRJbih0aGlzLCBkaWFnbm9zdGljcyk7CiAKICAgICAvLyBOb2Rl
cyBtYXkgYmUgY29uc3RhbnQgZm9sZGVkIHdpdGhvdXQgYmVpbmcgcXVhbGlmaWVkIGFzIGNvbnN0
YW50LgogICAgIFRRdWFsaWZpZXIgcmVzdWx0UXVhbGlmaWVyID0gYXJlQ2hpbGRyZW5Db25zdFF1
YWxpZmllZCgpID8gRXZxQ29uc3QgOiBFdnFUZW1wb3Jhcnk7CkBAIC04OTksMTUgKzEyMDQsMTUg
QEAgVEludGVybVR5cGVkICpUSW50ZXJtQWdncmVnYXRlOjpmb2xkKFRJbgogLy8KIC8vIFJldHVy
bnMgdGhlIGNvbnN0YW50IHZhbHVlIHRvIGtlZXAgdXNpbmcgb3IgbnVsbHB0ci4KIC8vCi1UQ29u
c3RhbnRVbmlvbiAqVEludGVybUNvbnN0YW50VW5pb246OmZvbGRCaW5hcnkoVE9wZXJhdG9yIG9w
LCBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqcmlnaHROb2RlLCBUSW5mb1NpbmsgJmluZm9TaW5rKQor
VENvbnN0YW50VW5pb24gKlRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkQmluYXJ5KFRPcGVyYXRv
ciBvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
SW50ZXJtQ29uc3RhbnRVbmlvbiAqcmlnaHROb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFREaWFnbm9zdGljcyAqZGlhZ25vc3RpY3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJj
ZUxvYyAmbGluZSkKIHsKICAgICBjb25zdCBUQ29uc3RhbnRVbmlvbiAqbGVmdEFycmF5ICA9IGdl
dFVuaW9uQXJyYXlQb2ludGVyKCk7CiAgICAgY29uc3QgVENvbnN0YW50VW5pb24gKnJpZ2h0QXJy
YXkgPSByaWdodE5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCk7CiAKLSAgICBpZiAoIWxlZnRB
cnJheSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFyaWdodEFycmF5KQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBBU1NFUlQobGVmdEFycmF5ICYmIHJpZ2h0QXJyYXkp
OwogCiAgICAgc2l6ZV90IG9iamVjdFNpemUgPSBnZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOwog
CkBAIC05MzAsMTIgKzEyMzUsMTIgQEAgVENvbnN0YW50VW5pb24gKlRJbnRlcm1Db25zdGFudFVu
aW9uOjpmbwogICAgICAgY2FzZSBFT3BBZGQ6CiAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRD
b25zdGFudFVuaW9uW29iamVjdFNpemVdOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG9iamVjdFNpemU7IGkrKykKLSAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldID0gbGVmdEFycmF5
W2ldICsgcmlnaHRBcnJheVtpXTsKKyAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldID0gVENvbnN0
YW50VW5pb246OmFkZChsZWZ0QXJyYXlbaV0sIHJpZ2h0QXJyYXlbaV0sIGRpYWdub3N0aWNzLCBs
aW5lKTsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcFN1YjoKICAgICAgICAgcmVzdWx0
QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQotICAgICAgICAgICAgcmVzdWx0QXJyYXlb
aV0gPSBsZWZ0QXJyYXlbaV0gLSByaWdodEFycmF5W2ldOworICAgICAgICAgICAgcmVzdWx0QXJy
YXlbaV0gPSBUQ29uc3RhbnRVbmlvbjo6c3ViKGxlZnRBcnJheVtpXSwgcmlnaHRBcnJheVtpXSwg
ZGlhZ25vc3RpY3MsIGxpbmUpOwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBFT3BNdWw6
CkBAIC05NDMsMTkgKzEyNDgsMTMgQEAgVENvbnN0YW50VW5pb24gKlRJbnRlcm1Db25zdGFudFVu
aW9uOjpmbwogICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1NjYWxhcjoKICAgICAgICAgcmVzdWx0
QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQotICAgICAgICAgICAgcmVzdWx0QXJyYXlb
aV0gPSBsZWZ0QXJyYXlbaV0gKiByaWdodEFycmF5W2ldOworICAgICAgICAgICAgcmVzdWx0QXJy
YXlbaV0gPSBUQ29uc3RhbnRVbmlvbjo6bXVsKGxlZnRBcnJheVtpXSwgcmlnaHRBcnJheVtpXSwg
ZGlhZ25vc3RpY3MsIGxpbmUpOwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBFT3BNYXRy
aXhUaW1lc01hdHJpeDoKICAgICAgICAgewotICAgICAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRC
YXNpY1R5cGUoKSAhPSBFYnRGbG9hdCB8fAotICAgICAgICAgICAgICAgIHJpZ2h0Tm9kZS0+Z2V0
QmFzaWNUeXBlKCkgIT0gRWJ0RmxvYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
aW5mb1NpbmsuaW5mby5tZXNzYWdlKAotICAgICAgICAgICAgICAgICAgICBFUHJlZml4SW50ZXJu
YWxFcnJvciwgZ2V0TGluZSgpLAotICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQgRm9sZGlu
ZyBjYW5ub3QgYmUgZG9uZSBmb3IgbWF0cml4IG11bHRpcGx5Iik7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBUT0RPKGptYWRs
bCk6IFRoaXMgY29kZSBzaG91bGQgY2hlY2sgZm9yIG92ZXJmbG93cy4KKyAgICAgICAgICAgIEFT
U0VSVChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQgJiYgcmlnaHROb2RlLT5n
ZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCk7CiAKICAgICAgICAgICAgIGNvbnN0IGludCBsZWZ0
Q29scyA9IGdldENvbHMoKTsKICAgICAgICAgICAgIGNvbnN0IGludCBsZWZ0Um93cyA9IGdldFJv
d3MoKTsKQEAgLTk5Myw4ICsxMjkyLDggQEAgVENvbnN0YW50VW5pb24gKlRJbnRlcm1Db25zdGFu
dFVuaW9uOjpmbwogICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKICAgICAgICAgICAg
ICAgICAgICAgaWYgKHJpZ2h0QXJyYXlbaV0gPT0gMC4wZikKICAgICAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhX
YXJuaW5nLCBnZXRMaW5lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkRpdmlkZSBieSB6ZXJvIGVycm9yIGR1cmluZyBjb25zdGFudCBmb2xkaW5nIik7
CisgICAgICAgICAgICAgICAgICAgICAgICBkaWFnbm9zdGljcy0+d2FybmluZygKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnZXRMaW5lKCksICJEaXZpZGUgYnkgemVybyBlcnJvciBkdXJp
bmcgY29uc3RhbnQgZm9sZGluZyIsICIvIiwgIiIpOwogICAgICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KGxlZnRBcnJheVtpXS5nZXRGQ29uc3QoKSA8IDAgPyAt
RkxUX01BWCA6IEZMVF9NQVgpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIGVsc2UKQEAgLTEwMDcsMjAgKzEzMDYsNDggQEAgVENvbnN0YW50VW5pb24gKlRJbnRl
cm1Db25zdGFudFVuaW9uOjpmbwogICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CiAgICAg
ICAgICAgICAgICAgICAgIGlmIChyaWdodEFycmF5W2ldID09IDApCiAgICAgICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJl
Zml4V2FybmluZywgZ2V0TGluZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJEaXZpZGUgYnkgemVybyBlcnJvciBkdXJpbmcgY29uc3RhbnQgZm9sZGlu
ZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgZGlhZ25vc3RpY3MtPndhcm5pbmcoCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TGluZSgpLCAiRGl2aWRlIGJ5IHplcm8gZXJyb3Ig
ZHVyaW5nIGNvbnN0YW50IGZvbGRpbmciLCAiLyIsICIiKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdEFycmF5W2ldLnNldElDb25zdChJTlRfTUFYKTsKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBsaHMgICAgID0gbGVmdEFycmF5W2ldLmdldElDb25z
dCgpOworICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRpdmlzb3IgPSByaWdodEFycmF5W2ld
LmdldElDb25zdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wID09IEVPcERpdikK
ICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHRBcnJheVtpXS5zZXRJQ29uc3QobGVmdEFycmF5W2ldLmdldElDb25zdCgpIC8gcmlnaHRB
cnJheVtpXS5nZXRJQ29uc3QoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hl
Y2sgZm9yIHRoZSBzcGVjaWFsIGNhc2Ugd2hlcmUgdGhlIG1pbmltdW0gcmVwcmVzZW50YWJsZSBu
dW1iZXIgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkaXZpZGVkIGJ5IC0xLiBJ
ZiBsZWZ0IGFsb25lIHRoaXMgbGVhZHMgdG8gaW50ZWdlciBvdmVyZmxvdyBpbiBDKysuCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gRVNTTCAzLjAwLjYgc2VjdGlvbiA0LjEuMyBJbnRl
Z2VyczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiSG93ZXZlciwgZm9yIHRoZSBj
YXNlIHdoZXJlIHRoZSBtaW5pbXVtIHJlcHJlc2VudGFibGUgdmFsdWUgaXMKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBkaXZpZGVkIGJ5IC0xLCBpdCBpcyBhbGxvd2VkIHRvIHJldHVy
biBlaXRoZXIgdGhlIG1pbmltdW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXBy
ZXNlbnRhYmxlIHZhbHVlIG9yIHRoZSBtYXhpbXVtIHJlcHJlc2VudGFibGUgdmFsdWUuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaHMgPT0gLTB4N2ZmZmZmZmYgLSAxICYmIGRp
dmlzb3IgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRJQ29uc3QoMHg3ZmZmZmZmZik7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldElDb25zdChsaHMgLyBkaXZpc29yKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG9wID09IEVPcElNb2QpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldElDb25zdChsZWZ0QXJy
YXlbaV0uZ2V0SUNvbnN0KCkgJSByaWdodEFycmF5W2ldLmdldElDb25zdCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAobGhzIDwgMCB8fCBkaXZpc29yIDwgMCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IEVTU0wgMy4wMC42IHNlY3Rpb24gNS45OiBSZXN1bHRzIG9mIG1vZHVsdXMgYXJlIHVuZGVmaW5l
ZCB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVpdGhlciBvbmUgb2Yg
dGhlIG9wZXJhbmRzIGlzIG5lZ2F0aXZlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkaWFnbm9zdGljcy0+d2FybmluZyhnZXRMaW5lKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOZWdhdGl2ZSBtb2R1bHVzIG9wZXJhdG9y
IG9wZXJhbmQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiZW5jb3VudGVyZWQgZHVyaW5nIGNvbnN0YW50IGZvbGRpbmciLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJSIsICIiKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0SUNvbnN0KDAp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRJQ29uc3QobGhzICUgZGl2aXNvcik7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MTAyOCw4ICsxMzU1LDggQEAgVENvbnN0YW50VW5pb24gKlRJbnRlcm1Db25zdGFudFVuaW9uOjpm
bwogICAgICAgICAgICAgICAgICAgY2FzZSBFYnRVSW50OgogICAgICAgICAgICAgICAgICAgICBp
ZiAocmlnaHRBcnJheVtpXSA9PSAwKQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeFdhcm5pbmcsIGdldExp
bmUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGl2
aWRlIGJ5IHplcm8gZXJyb3IgZHVyaW5nIGNvbnN0YW50IGZvbGRpbmciKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRpYWdub3N0aWNzLT53YXJuaW5nKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdldExpbmUoKSwgIkRpdmlkZSBieSB6ZXJvIGVycm9yIGR1cmluZyBjb25zdGFudCBm
b2xkaW5nIiwgIi8iLCAiIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtp
XS5zZXRVQ29uc3QoVUlOVF9NQVgpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgIGVsc2UKQEAgLTEwNDcsOSArMTM3NCw4IEBAIFRDb25zdGFudFVuaW9uICpUSW50
ZXJtQ29uc3RhbnRVbmlvbjo6Zm8KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8u
bWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IGZvbGRpbmcgY2Fubm90IGJlIGRv
bmUgZm9yIFwiL1wiIik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC0xMDU3LDEyICsxMzgzLDggQEAgVENvbnN0YW50VW5pb24gKlRJbnRlcm1Db25zdGFu
dFVuaW9uOjpmbwogCiAgICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzVmVjdG9yOgogICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAocmlnaHROb2RlLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRGbG9hdCkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVBy
ZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkNvbnN0YW50IEZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIG1hdHJpeCB0
aW1lcyB2ZWN0b3IiKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC8vIFRPRE8oam1hZGxsKTogVGhpcyBjb2RlIHNob3VsZCBjaGVj
ayBmb3Igb3ZlcmZsb3dzLgorICAgICAgICAgICAgQVNTRVJUKHJpZ2h0Tm9kZS0+Z2V0QmFzaWNU
eXBlKCkgPT0gRWJ0RmxvYXQpOwogCiAgICAgICAgICAgICBjb25zdCBpbnQgbWF0cml4Q29scyA9
IGdldENvbHMoKTsKICAgICAgICAgICAgIGNvbnN0IGludCBtYXRyaXhSb3dzID0gZ2V0Um93cygp
OwpAQCAtMTA4NCwxMiArMTQwNiw4IEBAIFRDb25zdGFudFVuaW9uICpUSW50ZXJtQ29uc3RhbnRV
bmlvbjo6Zm8KIAogICAgICAgY2FzZSBFT3BWZWN0b3JUaW1lc01hdHJpeDoKICAgICAgICAgewot
ICAgICAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSAhPSBFYnRGbG9hdCkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZp
eEludGVybmFsRXJyb3IsIGdldExpbmUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkNvbnN0YW50IEZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIHZlY3RvciB0aW1l
cyBtYXRyaXgiKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIC8vIFRPRE8oam1hZGxsKTogVGhpcyBjb2RlIHNob3VsZCBjaGVjayBm
b3Igb3ZlcmZsb3dzLgorICAgICAgICAgICAgQVNTRVJUKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUo
KSA9PSBFYnRGbG9hdCk7CiAKICAgICAgICAgICAgIGNvbnN0IGludCBtYXRyaXhDb2xzID0gcmln
aHROb2RlLT5nZXRUeXBlKCkuZ2V0Q29scygpOwogICAgICAgICAgICAgY29uc3QgaW50IG1hdHJp
eFJvd3MgPSByaWdodE5vZGUtPmdldFR5cGUoKS5nZXRSb3dzKCk7CkBAIC0xMTMxLDE4ICsxNDQ5
LDExIEBAIFRDb25zdGFudFVuaW9uICpUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm8KIAogICAgICAg
Y2FzZSBFT3BMb2dpY2FsWG9yOgogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoZ2V0VHlw
ZSgpLmdldEJhc2ljVHlwZSgpID09IEVidEJvb2wpOwogICAgICAgICAgICAgcmVzdWx0QXJyYXkg
PSBuZXcgVENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CiAgICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBzd2l0Y2ggKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkKLSAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6Ci0gICAgICAgICAgICAgICAgICAgIHJl
c3VsdEFycmF5W2ldLnNldEJDb25zdChsZWZ0QXJyYXlbaV0gIT0gcmlnaHRBcnJheVtpXSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNl
dEJDb25zdChsZWZ0QXJyYXlbaV0gIT0gcmlnaHRBcnJheVtpXSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC0xMTY1LDEyICsxNDc2LDEyIEBAIFRDb25zdGFu
dFVuaW9uICpUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm8KICAgICAgIGNhc2UgRU9wQml0U2hpZnRM
ZWZ0OgogICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvbltvYmplY3RTaXpl
XTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCi0gICAg
ICAgICAgICByZXN1bHRBcnJheVtpXSA9IGxlZnRBcnJheVtpXSA8PCByaWdodEFycmF5W2ldOwor
ICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0gPSBUQ29uc3RhbnRVbmlvbjo6bHNoaWZ0KGxlZnRB
cnJheVtpXSwgcmlnaHRBcnJheVtpXSwgZGlhZ25vc3RpY3MsIGxpbmUpOwogICAgICAgICBicmVh
azsKICAgICAgIGNhc2UgRU9wQml0U2hpZnRSaWdodDoKICAgICAgICAgcmVzdWx0QXJyYXkgPSBu
ZXcgVENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQotICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0gPSBsZWZ0
QXJyYXlbaV0gPj4gcmlnaHRBcnJheVtpXTsKKyAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldID0g
VENvbnN0YW50VW5pb246OnJzaGlmdChsZWZ0QXJyYXlbaV0sIHJpZ2h0QXJyYXlbaV0sIGRpYWdu
b3N0aWNzLCBsaW5lKTsKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgRU9wTGVzc1RoYW46
CkBAIC0xMjIyLDM3ICsxNTMzLDI4IEBAIFRDb25zdGFudFVuaW9uICpUSW50ZXJtQ29uc3RhbnRV
bmlvbjo6Zm8KICAgICAgICAgYnJlYWs7CiAKICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIGluZm9T
aW5rLmluZm8ubWVzc2FnZSgKLSAgICAgICAgICAgIEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRM
aW5lKCksCi0gICAgICAgICAgICAiSW52YWxpZCBvcGVyYXRvciBmb3IgY29uc3RhbnQgZm9sZGlu
ZyIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0QXJyYXk7
CiB9CiAKLS8vCi0vLyBUaGUgZm9sZCBmdW5jdGlvbnMgc2VlIGlmIGFuIG9wZXJhdGlvbiBvbiBh
IGNvbnN0YW50IGNhbiBiZSBkb25lIGluIHBsYWNlLAotLy8gd2l0aG91dCBnZW5lcmF0aW5nIHJ1
bi10aW1lIGNvZGUuCi0vLwotLy8gUmV0dXJucyB0aGUgY29uc3RhbnQgdmFsdWUgdG8ga2VlcCB1
c2luZyBvciBudWxscHRyLgotLy8KLVRDb25zdGFudFVuaW9uICpUSW50ZXJtQ29uc3RhbnRVbmlv
bjo6Zm9sZFVuYXJ5V2l0aERpZmZlcmVudFJldHVyblR5cGUoVE9wZXJhdG9yIG9wLCBUSW5mb1Np
bmsgJmluZm9TaW5rKQorLy8gVGhlIGZvbGQgZnVuY3Rpb25zIGRvIG9wZXJhdGlvbnMgb24gYSBj
b25zdGFudCBhdCBHTFNMIGNvbXBpbGUgdGltZSwgd2l0aG91dCBnZW5lcmF0aW5nIHJ1bi10aW1l
CisvLyBjb2RlLiBSZXR1cm5zIHRoZSBjb25zdGFudCB2YWx1ZSB0byBrZWVwIHVzaW5nLiBOdWxs
cHRyIHNob3VsZCBub3QgYmUgcmV0dXJuZWQuCitUQ29uc3RhbnRVbmlvbiAqVEludGVybUNvbnN0
YW50VW5pb246OmZvbGRVbmFyeU5vbkNvbXBvbmVudFdpc2UoVE9wZXJhdG9yIG9wKQogewotICAg
IC8vCi0gICAgLy8gRG8gb3BlcmF0aW9ucyB3aGVyZSB0aGUgcmV0dXJuIHR5cGUgaGFzIGEgZGlm
ZmVyZW50IG51bWJlciBvZiBjb21wb25lbnRzIGNvbXBhcmVkIHRvIHRoZSBvcGVyYW5kIHR5cGUu
Ci0gICAgLy8KKyAgICAvLyBEbyBvcGVyYXRpb25zIHdoZXJlIHRoZSByZXR1cm4gdHlwZSBtYXkg
aGF2ZSBhIGRpZmZlcmVudCBudW1iZXIgb2YgY29tcG9uZW50cyBjb21wYXJlZCB0byB0aGUKKyAg
ICAvLyBvcGVyYW5kIHR5cGUuCiAKICAgICBjb25zdCBUQ29uc3RhbnRVbmlvbiAqb3BlcmFuZEFy
cmF5ID0gZ2V0VW5pb25BcnJheVBvaW50ZXIoKTsKLSAgICBpZiAoIW9wZXJhbmRBcnJheSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQVNTRVJUKG9wZXJhbmRBcnJheSk7CiAKICAgICBz
aXplX3Qgb2JqZWN0U2l6ZSA9IGdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7CiAgICAgVENvbnN0
YW50VW5pb24gKnJlc3VsdEFycmF5ID0gbnVsbHB0cjsKICAgICBzd2l0Y2ggKG9wKQogICAgIHsK
LSAgICAgIGNhc2UgRU9wQW55OgotICAgICAgICBpZiAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgp
ID09IEVidEJvb2wpCi0gICAgICAgIHsKKyAgICAgICAgY2FzZSBFT3BBbnk6CisgICAgICAgICAg
ICBBU1NFUlQoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpID09IEVidEJvb2wpOwogICAgICAgICAg
ICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb24oKTsKICAgICAgICAgICAgIHJlc3Vs
dEFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBvYmplY3RTaXplOyBpKyspCkBAIC0xMjY0LDE2ICsxNTY2LDkgQEAgVENvbnN0YW50VW5p
b24gKlRJbnRlcm1Db25zdGFudFVuaW9uOjpmbwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgewotICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVy
cm9yLCBnZXRMaW5lKCksICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRlZCBpbnRvIGNvbnN0YW50
Iik7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQogCi0gICAgICBjYXNl
IEVPcEFsbDoKLSAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRCb29s
KQotICAgICAgICB7CisgICAgICAgIGNhc2UgRU9wQWxsOgorICAgICAgICAgICAgQVNTRVJUKGdl
dFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRCb29sKTsKICAgICAgICAgICAgIHJlc3VsdEFy
cmF5ID0gbmV3IFRDb25zdGFudFVuaW9uKCk7CiAgICAgICAgICAgICByZXN1bHRBcnJheS0+c2V0
QkNvbnN0KHRydWUpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RT
aXplOyBpKyspCkBAIC0xMjg1LDg5ICsxNTgwLDU1IEBAIFRDb25zdGFudFVuaW9uICpUSW50ZXJt
Q29uc3RhbnRVbmlvbjo6Zm8KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGlu
ZSgpLCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIpOwotICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KIAotICAgICAgY2FzZSBFT3BMZW5ndGg6
Ci0gICAgICAgIGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQpCi0gICAg
ICAgIHsKKyAgICAgICAgY2FzZSBFT3BMZW5ndGg6CisgICAgICAgICAgICBBU1NFUlQoZ2V0VHlw
ZSgpLmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0KTsKICAgICAgICAgICAgIHJlc3VsdEFycmF5
ID0gbmV3IFRDb25zdGFudFVuaW9uKCk7CiAgICAgICAgICAgICByZXN1bHRBcnJheS0+c2V0RkNv
bnN0KFZlY3Rvckxlbmd0aChvcGVyYW5kQXJyYXksIG9iamVjdFNpemUpKTsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAg
aW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJV
bmFyeSBvcGVyYXRpb24gbm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7Ci0gICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQogCi0gICAgICBjYXNlIEVPcFRyYW5zcG9zZToKLSAg
ICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCkKKyAgICAgICAg
Y2FzZSBFT3BUcmFuc3Bvc2U6CiAgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChnZXRUeXBl
KCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQpOwogICAgICAgICAgICAgcmVzdWx0QXJyYXkg
PSBuZXcgVENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CiAgICAgICAgICAgICBhbmdsZTo6TWF0
cml4PGZsb2F0PiByZXN1bHQgPQotICAgICAgICAgICAgICAgIEdldE1hdHJpeChvcGVyYW5kQXJy
YXksIGdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpLCBnZXRUeXBlKCkuZ2V0U2Vjb25kYXJ5U2l6
ZSgpKS50cmFuc3Bvc2UoKTsKKyAgICAgICAgICAgICAgICBHZXRNYXRyaXgob3BlcmFuZEFycmF5
LCBnZXRUeXBlKCkuZ2V0Um93cygpLCBnZXRUeXBlKCkuZ2V0Q29scygpKS50cmFuc3Bvc2UoKTsK
ICAgICAgICAgICAgIFNldFVuaW9uQXJyYXlGcm9tTWF0cml4KHJlc3VsdCwgcmVzdWx0QXJyYXkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7
Ci0gICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3Is
IGdldExpbmUoKSwgIlVuYXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVkIGludG8gY29uc3RhbnQiKTsK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9CiAKLSAgICAgIGNhc2UgRU9w
RGV0ZXJtaW5hbnQ6Ci0gICAgICAgIGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0
RmxvYXQpCisgICAgICAgIGNhc2UgRU9wRGV0ZXJtaW5hbnQ6CiAgICAgICAgIHsKKyAgICAgICAg
ICAgIEFTU0VSVChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQpOwogICAgICAg
ICAgICAgdW5zaWduZWQgaW50IHNpemUgPSBnZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKTsKICAg
ICAgICAgICAgIEFTU0VSVChzaXplID49IDIgJiYgc2l6ZSA8PSA0KTsKICAgICAgICAgICAgIHJl
c3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uKCk7CiAgICAgICAgICAgICByZXN1bHRBcnJh
eS0+c2V0RkNvbnN0KEdldE1hdHJpeChvcGVyYW5kQXJyYXksIHNpemUpLmRldGVybWluYW50KCkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7
Ci0gICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3Is
IGdldExpbmUoKSwgIlVuYXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVkIGludG8gY29uc3RhbnQiKTsK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9CiAKLSAgICAgIGNhc2UgRU9w
SW52ZXJzZToKLSAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9h
dCkKKyAgICAgICAgY2FzZSBFT3BJbnZlcnNlOgogICAgICAgICB7CisgICAgICAgICAgICBBU1NF
UlQoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0KTsKICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBzaXplID0gZ2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCk7CiAgICAgICAgICAg
ICBBU1NFUlQoc2l6ZSA+PSAyICYmIHNpemUgPD0gNCk7Ci0gICAgICAgICAgICByZXN1bHRBcnJh
eSA9IG5ldyBUQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKKyAgICAgICAgICAgIHJlc3VsdEFy
cmF5ICAgICAgICAgICAgICAgICA9IG5ldyBUQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAg
ICAgICAgICAgIGFuZ2xlOjpNYXRyaXg8ZmxvYXQ+IHJlc3VsdCA9IEdldE1hdHJpeChvcGVyYW5k
QXJyYXksIHNpemUpLmludmVyc2UoKTsKICAgICAgICAgICAgIFNldFVuaW9uQXJyYXlGcm9tTWF0
cml4KHJlc3VsdCwgcmVzdWx0QXJyYXkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
LSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3Nh
Z2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIlVuYXJ5IG9wZXJhdGlvbiBub3Qg
Zm9sZGVkIGludG8gY29uc3RhbnQiKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
ICAgICB9CiAKLSAgICAgIGNhc2UgRU9wUGFja1Nub3JtMngxNjoKLSAgICAgICAgaWYgKGdldFR5
cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCkKLSAgICAgICAgeworICAgICAgICBjYXNl
IEVPcFBhY2tTbm9ybTJ4MTY6CisgICAgICAgICAgICBBU1NFUlQoZ2V0VHlwZSgpLmdldEJhc2lj
VHlwZSgpID09IEVidEZsb2F0KTsKICAgICAgICAgICAgIEFTU0VSVChnZXRUeXBlKCkuZ2V0Tm9t
aW5hbFNpemUoKSA9PSAyKTsKICAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFu
dFVuaW9uKCk7Ci0gICAgICAgICAgICByZXN1bHRBcnJheS0+c2V0VUNvbnN0KGdsOjpwYWNrU25v
cm0yeDE2KG9wZXJhbmRBcnJheVswXS5nZXRGQ29uc3QoKSwgb3BlcmFuZEFycmF5WzFdLmdldEZD
b25zdCgpKSk7CisgICAgICAgICAgICByZXN1bHRBcnJheS0+c2V0VUNvbnN0KAorICAgICAgICAg
ICAgICAgIGdsOjpwYWNrU25vcm0yeDE2KG9wZXJhbmRBcnJheVswXS5nZXRGQ29uc3QoKSwgb3Bl
cmFuZEFycmF5WzFdLmdldEZDb25zdCgpKSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVz
c2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiVW5hcnkgb3BlcmF0aW9uIG5v
dCBmb2xkZWQgaW50byBjb25zdGFudCIpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgICAgIH0KIAotICAgICAgY2FzZSBFT3BVbnBhY2tTbm9ybTJ4MTY6Ci0gICAgICAgIGlmIChn
ZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0VUludCkKKyAgICAgICAgY2FzZSBFT3BVbnBh
Y2tTbm9ybTJ4MTY6CiAgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChnZXRUeXBlKCkuZ2V0
QmFzaWNUeXBlKCkgPT0gRWJ0VUludCk7CiAgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBU
Q29uc3RhbnRVbmlvblsyXTsKICAgICAgICAgICAgIGZsb2F0IGYxLCBmMjsKICAgICAgICAgICAg
IGdsOjp1bnBhY2tTbm9ybTJ4MTYob3BlcmFuZEFycmF5WzBdLmdldFVDb25zdCgpLCAmZjEsICZm
Mik7CkBAIC0xMzc1LDI5ICsxNjM2LDE4IEBAIFRDb25zdGFudFVuaW9uICpUSW50ZXJtQ29uc3Rh
bnRVbmlvbjo6Zm8KICAgICAgICAgICAgIHJlc3VsdEFycmF5WzFdLnNldEZDb25zdChmMik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0
TGluZSgpLCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIpOwotICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KIAotICAgICAgY2FzZSBFT3BQYWNr
VW5vcm0yeDE2OgotICAgICAgICBpZiAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpID09IEVidEZs
b2F0KQotICAgICAgICB7CisgICAgICAgIGNhc2UgRU9wUGFja1Vub3JtMngxNjoKKyAgICAgICAg
ICAgIEFTU0VSVChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQpOwogICAgICAg
ICAgICAgQVNTRVJUKGdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpID09IDIpOwogICAgICAgICAg
ICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb24oKTsKLSAgICAgICAgICAgIHJlc3Vs
dEFycmF5LT5zZXRVQ29uc3QoZ2w6OnBhY2tVbm9ybTJ4MTYob3BlcmFuZEFycmF5WzBdLmdldEZD
b25zdCgpLCBvcGVyYW5kQXJyYXlbMV0uZ2V0RkNvbnN0KCkpKTsKKyAgICAgICAgICAgIHJlc3Vs
dEFycmF5LT5zZXRVQ29uc3QoCisgICAgICAgICAgICAgICAgZ2w6OnBhY2tVbm9ybTJ4MTYob3Bl
cmFuZEFycmF5WzBdLmdldEZDb25zdCgpLCBvcGVyYW5kQXJyYXlbMV0uZ2V0RkNvbnN0KCkpKTsK
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewot
ICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBn
ZXRMaW5lKCksICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7Ci0g
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQogCi0gICAgICBjYXNlIEVPcFVu
cGFja1Vub3JtMngxNjoKLSAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBF
YnRVSW50KQorICAgICAgICBjYXNlIEVPcFVucGFja1Vub3JtMngxNjoKICAgICAgICAgeworICAg
ICAgICAgICAgQVNTRVJUKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRVSW50KTsKICAg
ICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uWzJdOwogICAgICAgICAg
ICAgZmxvYXQgZjEsIGYyOwogICAgICAgICAgICAgZ2w6OnVucGFja1Vub3JtMngxNihvcGVyYW5k
QXJyYXlbMF0uZ2V0VUNvbnN0KCksICZmMSwgJmYyKTsKQEAgLTE0MDUsMjkgKzE2NTUsMTggQEAg
VENvbnN0YW50VW5pb24gKlRJbnRlcm1Db25zdGFudFVuaW9uOjpmbwogICAgICAgICAgICAgcmVz
dWx0QXJyYXlbMV0uc2V0RkNvbnN0KGYyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNz
YWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJVbmFyeSBvcGVyYXRpb24gbm90
IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICAgICAgfQogCi0gICAgICBjYXNlIEVPcFBhY2tIYWxmMngxNjoKLSAgICAgICAgaWYgKGdldFR5
cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCkKLSAgICAgICAgeworICAgICAgICBjYXNl
IEVPcFBhY2tIYWxmMngxNjoKKyAgICAgICAgICAgIEFTU0VSVChnZXRUeXBlKCkuZ2V0QmFzaWNU
eXBlKCkgPT0gRWJ0RmxvYXQpOwogICAgICAgICAgICAgQVNTRVJUKGdldFR5cGUoKS5nZXROb21p
bmFsU2l6ZSgpID09IDIpOwogICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50
VW5pb24oKTsKLSAgICAgICAgICAgIHJlc3VsdEFycmF5LT5zZXRVQ29uc3QoZ2w6OnBhY2tIYWxm
MngxNihvcGVyYW5kQXJyYXlbMF0uZ2V0RkNvbnN0KCksIG9wZXJhbmRBcnJheVsxXS5nZXRGQ29u
c3QoKSkpOworICAgICAgICAgICAgcmVzdWx0QXJyYXktPnNldFVDb25zdCgKKyAgICAgICAgICAg
ICAgICBnbDo6cGFja0hhbGYyeDE2KG9wZXJhbmRBcnJheVswXS5nZXRGQ29uc3QoKSwgb3BlcmFu
ZEFycmF5WzFdLmdldEZDb25zdCgpKSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2Fn
ZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBm
b2xkZWQgaW50byBjb25zdGFudCIpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
ICAgIH0KIAotICAgICAgY2FzZSBFT3BVbnBhY2tIYWxmMngxNjoKLSAgICAgICAgaWYgKGdldFR5
cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRVSW50KQorICAgICAgICBjYXNlIEVPcFVucGFja0hh
bGYyeDE2OgogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoZ2V0VHlwZSgpLmdldEJhc2lj
VHlwZSgpID09IEVidFVJbnQpOwogICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0
YW50VW5pb25bMl07CiAgICAgICAgICAgICBmbG9hdCBmMSwgZjI7CiAgICAgICAgICAgICBnbDo6
dW5wYWNrSGFsZjJ4MTYob3BlcmFuZEFycmF5WzBdLmdldFVDb25zdCgpLCAmZjEsICZmMik7CkBA
IC0xNDM1LDI5ICsxNjc0LDI0IEBAIFRDb25zdGFudFVuaW9uICpUSW50ZXJtQ29uc3RhbnRVbmlv
bjo6Zm8KICAgICAgICAgICAgIHJlc3VsdEFycmF5WzFdLnNldEZDb25zdChmMik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgp
LCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIpOwotICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7CiAKLSAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5S
RUFDSEFCTEUoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIHJldHVybiByZXN1
bHRBcnJheTsKIH0KIAotVENvbnN0YW50VW5pb24gKlRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xk
VW5hcnlXaXRoU2FtZVJldHVyblR5cGUoVE9wZXJhdG9yIG9wLCBUSW5mb1NpbmsgJmluZm9TaW5r
KQorVENvbnN0YW50VW5pb24gKlRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkVW5hcnlDb21wb25l
bnRXaXNlKFRPcGVyYXRvciBvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBURGlhZ25vc3RpY3MgKmRpYWdub3N0aWNzKQogewot
ICAgIC8vCi0gICAgLy8gRG8gdW5hcnkgb3BlcmF0aW9ucyB3aGVyZSB0aGUgcmV0dXJuIHR5cGUg
aXMgdGhlIHNhbWUgYXMgb3BlcmFuZCB0eXBlLgotICAgIC8vCisgICAgLy8gRG8gdW5hcnkgb3Bl
cmF0aW9ucyB3aGVyZSBlYWNoIGNvbXBvbmVudCBvZiB0aGUgcmVzdWx0IGlzIGNvbXB1dGVkIGJh
c2VkIG9uIHRoZSBjb3JyZXNwb25kaW5nCisgICAgLy8gY29tcG9uZW50IG9mIHRoZSBvcGVyYW5k
LiBBbHNvIGZvbGRzIG5vcm1hbGl6ZSwgdGhvdWdoIHRoZSBkaXZpc29yIGluIHRoYXQgY2FzZSB0
YWtlcyBhbGwKKyAgICAvLyBjb21wb25lbnRzIGludG8gYWNjb3VudC4KIAogICAgIGNvbnN0IFRD
b25zdGFudFVuaW9uICpvcGVyYW5kQXJyYXkgPSBnZXRVbmlvbkFycmF5UG9pbnRlcigpOwotICAg
IGlmICghb3BlcmFuZEFycmF5KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBBU1NFUlQo
b3BlcmFuZEFycmF5KTsKIAogICAgIHNpemVfdCBvYmplY3RTaXplID0gZ2V0VHlwZSgpLmdldE9i
amVjdFNpemUoKTsKIApAQCAtMTQ2NiwyNDMgKzE3MDAsMjMyIEBAIFRDb25zdGFudFVuaW9uICpU
SW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm8KICAgICB7CiAgICAgICAgIHN3aXRjaChvcCkKICAgICAg
ICAgewotICAgICAgICAgIGNhc2UgRU9wTmVnYXRpdmU6Ci0gICAgICAgICAgICBzd2l0Y2ggKGdl
dFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2Fz
ZSBFYnRGbG9hdDoKLSAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QoLW9w
ZXJhbmRBcnJheVtpXS5nZXRGQ29uc3QoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgIGNhc2UgRWJ0SW50OgotICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNl
dElDb25zdCgtb3BlcmFuZEFycmF5W2ldLmdldElDb25zdCgpKTsKKyAgICAgICAgICAgIGNhc2Ug
RU9wTmVnYXRpdmU6CisgICAgICAgICAgICAgICAgc3dpdGNoIChnZXRUeXBlKCkuZ2V0QmFzaWNU
eXBlKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEZs
b2F0OgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KC1v
cGVyYW5kQXJyYXlbaV0uZ2V0RkNvbnN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKG9wZXJhbmRBcnJheVtpXSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1p
bigpKQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIFRoZSBtaW5pbXVtIHJlcHJlc2VudGFibGUgaW50ZWdlciBkb2Vzbid0IGhhdmUgYSBw
b3NpdGl2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvdW50ZXJwYXJ0LCByYXRo
ZXIgdGhlIG5lZ2F0aW9uIG92ZXJmbG93cyBhbmQgaW4gRVNTTCBpcyBzdXBwb3NlZCB0bworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyYXAgYmFjayB0byB0aGUgbWluaW11bSByZXBy
ZXNlbnRhYmxlIGludGVnZXIuIE1ha2Ugc3VyZSB0aGF0IHdlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gZG9uJ3QgYWN0dWFsbHkgbGV0IHRoZSBuZWdhdGlvbiBvdmVyZmxvdywgd2hp
Y2ggaGFzIHVuZGVmaW5lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlaGF2aW9y
IGluIEMrKy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRJ
Q29uc3Qoc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0
SUNvbnN0KC1vcGVyYW5kQXJyYXlbaV0uZ2V0SUNvbnN0KCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgRWJ0VUludDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kQXJy
YXlbaV0gPT0gMHg4MDAwMDAwMHUpCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0VUNvbnN0KDB4ODAwMDAwMDB1
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHRBcnJheVtpXS5zZXRVQ29uc3Qoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PigKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXN0YXRpY19jYXN0PGludD4ob3BlcmFuZEFy
cmF5W2ldLmdldFVDb25zdCgpKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidFVJbnQ6Ci0gICAgICAgICAgICAgICAgcmVz
dWx0QXJyYXlbaV0uc2V0VUNvbnN0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oCi0gICAgICAg
ICAgICAgICAgICAgIC1zdGF0aWNfY2FzdDxpbnQ+KG9wZXJhbmRBcnJheVtpXS5nZXRVQ29uc3Qo
KSkpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoCi0gICAgICAgICAgICAgICAgICAg
IEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksCi0gICAgICAgICAgICAgICAgICAgICJV
bmFyeSBvcGVyYXRpb24gbm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKIAot
ICAgICAgICAgIGNhc2UgRU9wUG9zaXRpdmU6Ci0gICAgICAgICAgICBzd2l0Y2ggKGdldFR5cGUo
KS5nZXRCYXNpY1R5cGUoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBFYnRG
bG9hdDoKLSAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3Qob3BlcmFuZEFy
cmF5W2ldLmdldEZDb25zdCgpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgY2FzZSBFYnRJbnQ6Ci0gICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0SUNvbnN0
KG9wZXJhbmRBcnJheVtpXS5nZXRJQ29uc3QoKSk7CisgICAgICAgICAgICBjYXNlIEVPcFBvc2l0
aXZlOgorICAgICAgICAgICAgICAgIHN3aXRjaCAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpKQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25zdChvcGVyYW5kQXJy
YXlbaV0uZ2V0RkNvbnN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0QXJyYXlbaV0uc2V0SUNvbnN0KG9wZXJhbmRBcnJheVtpXS5nZXRJQ29uc3QoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRV
SW50OgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0VUNvbnN0KHN0
YXRpY19jYXN0PHVuc2lnbmVkIGludD4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8aW50PihvcGVyYW5kQXJyYXlbaV0uZ2V0VUNvbnN0KCkpKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0VUludDoKLSAgICAgICAgICAgICAgICByZXN1bHRB
cnJheVtpXS5zZXRVQ29uc3Qoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PigKLSAgICAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihvcGVyYW5kQXJyYXlbaV0uZ2V0VUNvbnN0KCkpKSk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKAotICAgICAgICAgICAgICAgICAgICBFUHJl
Zml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLAotICAgICAgICAgICAgICAgICAgICAiVW5hcnkg
b3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIpOwotICAgICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAg
ICAgICBjYXNlIEVPcExvZ2ljYWxOb3Q6Ci0gICAgICAgICAgICAvLyB0aGlzIGNvZGUgaXMgd3Jp
dHRlbiBmb3IgcG9zc2libGUgZnV0dXJlIHVzZSwKLSAgICAgICAgICAgIC8vIHdpbGwgbm90IGdl
dCBleGVjdXRlZCBjdXJyZW50bHkKLSAgICAgICAgICAgIHN3aXRjaCAoZ2V0VHlwZSgpLmdldEJh
c2ljVHlwZSgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6Ci0g
ICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KCFvcGVyYW5kQXJyYXlbaV0u
Z2V0QkNvbnN0KCkpOworICAgICAgICAgICAgY2FzZSBFT3BMb2dpY2FsTm90OgorICAgICAgICAg
ICAgICAgIHN3aXRjaCAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRCb29sOgorICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KCFvcGVyYW5kQXJyYXlbaV0uZ2V0QkNvbnN0
KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
ICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZSgKLSAgICAgICAgICAgICAgICAgICAgRVByZWZpeElu
dGVybmFsRXJyb3IsIGdldExpbmUoKSwKLSAgICAgICAgICAgICAgICAgICAgIlVuYXJ5IG9wZXJh
dGlvbiBub3QgZm9sZGVkIGludG8gY29uc3RhbnQiKTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAg
Y2FzZSBFT3BCaXR3aXNlTm90OgotICAgICAgICAgICAgc3dpdGNoIChnZXRUeXBlKCkuZ2V0QmFz
aWNUeXBlKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgotICAg
ICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldElDb25zdCh+b3BlcmFuZEFycmF5W2ldLmdl
dElDb25zdCgpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBF
YnRVSW50OgotICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldFVDb25zdCh+b3BlcmFu
ZEFycmF5W2ldLmdldFVDb25zdCgpKTsKKyAgICAgICAgICAgIGNhc2UgRU9wQml0d2lzZU5vdDoK
KyAgICAgICAgICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0SUNvbnN0KH5vcGVyYW5kQXJyYXlbaV0u
Z2V0SUNvbnN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgRWJ0VUludDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFy
cmF5W2ldLnNldFVDb25zdCh+b3BlcmFuZEFycmF5W2ldLmdldFVDb25zdCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBpbmZvU2luay5p
bmZvLm1lc3NhZ2UoCi0gICAgICAgICAgICAgICAgICAgIEVQcmVmaXhJbnRlcm5hbEVycm9yLCBn
ZXRMaW5lKCksCi0gICAgICAgICAgICAgICAgICAgICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRl
ZCBpbnRvIGNvbnN0YW50Iik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgIGNhc2UgRU9wUmFkaWFu
czoKLSAgICAgICAgICAgIGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQp
Ci0gICAgICAgICAgICB7CisgICAgICAgICAgICBjYXNlIEVPcFJhZGlhbnM6CisgICAgICAgICAg
ICAgICAgQVNTRVJUKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCk7CiAgICAg
ICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KGtEZWdyZWVzVG9SYWRpYW5zTXVs
dGlwbGllciAqIG9wZXJhbmRBcnJheVtpXS5nZXRGQ29uc3QoKSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2Uo
Ci0gICAgICAgICAgICAgICAgRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwKLSAgICAg
ICAgICAgICAgICAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIpOwot
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgICBjYXNlIEVPcERlZ3JlZXM6
Ci0gICAgICAgICAgICBpZiAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0KQot
ICAgICAgICAgICAgeworICAgICAgICAgICAgY2FzZSBFT3BEZWdyZWVzOgorICAgICAgICAgICAg
ICAgIEFTU0VSVChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQpOwogICAgICAg
ICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25zdChrUmFkaWFuc1RvRGVncmVlc011bHRp
cGxpZXIgKiBvcGVyYW5kQXJyYXlbaV0uZ2V0RkNvbnN0KCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKAot
ICAgICAgICAgICAgICAgIEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksCi0gICAgICAg
ICAgICAgICAgIlVuYXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVkIGludG8gY29uc3RhbnQiKTsKLSAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgICAgY2FzZSBFT3BTaW46Ci0gICAg
ICAgICAgICBpZiAoIWZvbGRGbG9hdFR5cGVVbmFyeShvcGVyYW5kQXJyYXlbaV0sICZzaW5mLCBp
bmZvU2luaywgJnJlc3VsdEFycmF5W2ldKSkKLSAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBjYXNlIEVPcENvczoKLSAgICAgICAg
ICAgIGlmICghZm9sZEZsb2F0VHlwZVVuYXJ5KG9wZXJhbmRBcnJheVtpXSwgJmNvc2YsIGluZm9T
aW5rLCAmcmVzdWx0QXJyYXlbaV0pKQotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEVPcFNpbjoKKyAgICAgICAgICAg
ICAgICBmb2xkRmxvYXRUeXBlVW5hcnkob3BlcmFuZEFycmF5W2ldLCAmc2luZiwgJnJlc3VsdEFy
cmF5W2ldKTsKKyAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgIGNhc2UgRU9wVGFu
OgotICAgICAgICAgICAgaWYgKCFmb2xkRmxvYXRUeXBlVW5hcnkob3BlcmFuZEFycmF5W2ldLCAm
dGFuZiwgaW5mb1NpbmssICZyZXN1bHRBcnJheVtpXSkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRU9wQ29zOgor
ICAgICAgICAgICAgICAgIGZvbGRGbG9hdFR5cGVVbmFyeShvcGVyYW5kQXJyYXlbaV0sICZjb3Nm
LCAmcmVzdWx0QXJyYXlbaV0pOworICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAg
Y2FzZSBFT3BBc2luOgotICAgICAgICAgICAgLy8gRm9yIGFzaW4oeCksIHJlc3VsdHMgYXJlIHVu
ZGVmaW5lZCBpZiB8eHwgPiAxLCB3ZSBhcmUgY2hvb3NpbmcgdG8gc2V0IHJlc3VsdCB0byAwLgot
ICAgICAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCAmJiBm
YWJzZihvcGVyYW5kQXJyYXlbaV0uZ2V0RkNvbnN0KCkpID4gMS4wZikKLSAgICAgICAgICAgICAg
ICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJvcihnZXRMaW5lKCksIG9wLCBnZXRUeXBlKCku
Z2V0QmFzaWNUeXBlKCksIGluZm9TaW5rLCAmcmVzdWx0QXJyYXlbaV0pOwotICAgICAgICAgICAg
ZWxzZSBpZiAoIWZvbGRGbG9hdFR5cGVVbmFyeShvcGVyYW5kQXJyYXlbaV0sICZhc2luZiwgaW5m
b1NpbmssICZyZXN1bHRBcnJheVtpXSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRU9wVGFuOgorICAgICAgICAg
ICAgICAgIGZvbGRGbG9hdFR5cGVVbmFyeShvcGVyYW5kQXJyYXlbaV0sICZ0YW5mLCAmcmVzdWx0
QXJyYXlbaV0pOworICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgY2FzZSBFT3BB
Y29zOgotICAgICAgICAgICAgLy8gRm9yIGFjb3MoeCksIHJlc3VsdHMgYXJlIHVuZGVmaW5lZCBp
ZiB8eHwgPiAxLCB3ZSBhcmUgY2hvb3NpbmcgdG8gc2V0IHJlc3VsdCB0byAwLgotICAgICAgICAg
ICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCAmJiBmYWJzZihvcGVy
YW5kQXJyYXlbaV0uZ2V0RkNvbnN0KCkpID4gMS4wZikKLSAgICAgICAgICAgICAgICBVbmRlZmlu
ZWRDb25zdGFudEZvbGRpbmdFcnJvcihnZXRMaW5lKCksIG9wLCBnZXRUeXBlKCkuZ2V0QmFzaWNU
eXBlKCksIGluZm9TaW5rLCAmcmVzdWx0QXJyYXlbaV0pOwotICAgICAgICAgICAgZWxzZSBpZiAo
IWZvbGRGbG9hdFR5cGVVbmFyeShvcGVyYW5kQXJyYXlbaV0sICZhY29zZiwgaW5mb1NpbmssICZy
ZXN1bHRBcnJheVtpXSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRU9wQXNpbjoKKyAgICAgICAgICAgICAgICAv
LyBGb3IgYXNpbih4KSwgcmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmIHx4fCA+IDEsIHdlIGFyZSBj
aG9vc2luZyB0byBzZXQgcmVzdWx0IHRvCisgICAgICAgICAgICAgICAgLy8gMC4KKyAgICAgICAg
ICAgICAgICBpZiAoZmFic2Yob3BlcmFuZEFycmF5W2ldLmdldEZDb25zdCgpKSA+IDEuMGYpCisg
ICAgICAgICAgICAgICAgICAgIFVuZGVmaW5lZENvbnN0YW50Rm9sZGluZ0Vycm9yKGdldExpbmUo
KSwgb3AsIGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhZ25vc3RpY3MsICZyZXN1bHRBcnJheVtpXSk7
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBmb2xkRmxvYXRUeXBl
VW5hcnkob3BlcmFuZEFycmF5W2ldLCAmYXNpbmYsICZyZXN1bHRBcnJheVtpXSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBjYXNlIEVPcEF0YW46Ci0gICAgICAgICAgICBp
ZiAoIWZvbGRGbG9hdFR5cGVVbmFyeShvcGVyYW5kQXJyYXlbaV0sICZhdGFuZiwgaW5mb1Npbmss
ICZyZXN1bHRBcnJheVtpXSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRU9wQWNvczoKKyAgICAgICAgICAgICAg
ICAvLyBGb3IgYWNvcyh4KSwgcmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmIHx4fCA+IDEsIHdlIGFy
ZSBjaG9vc2luZyB0byBzZXQgcmVzdWx0IHRvCisgICAgICAgICAgICAgICAgLy8gMC4KKyAgICAg
ICAgICAgICAgICBpZiAoZmFic2Yob3BlcmFuZEFycmF5W2ldLmdldEZDb25zdCgpKSA+IDEuMGYp
CisgICAgICAgICAgICAgICAgICAgIFVuZGVmaW5lZENvbnN0YW50Rm9sZGluZ0Vycm9yKGdldExp
bmUoKSwgb3AsIGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhZ25vc3RpY3MsICZyZXN1bHRBcnJheVtp
XSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBmb2xkRmxvYXRU
eXBlVW5hcnkob3BlcmFuZEFycmF5W2ldLCAmYWNvc2YsICZyZXN1bHRBcnJheVtpXSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBjYXNlIEVPcFNpbmg6Ci0gICAgICAgICAg
ICBpZiAoIWZvbGRGbG9hdFR5cGVVbmFyeShvcGVyYW5kQXJyYXlbaV0sICZzaW5oZiwgaW5mb1Np
bmssICZyZXN1bHRBcnJheVtpXSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRU9wQXRhbjoKKyAgICAgICAgICAg
ICAgICBmb2xkRmxvYXRUeXBlVW5hcnkob3BlcmFuZEFycmF5W2ldLCAmYXRhbmYsICZyZXN1bHRB
cnJheVtpXSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBjYXNlIEVPcENv
c2g6Ci0gICAgICAgICAgICBpZiAoIWZvbGRGbG9hdFR5cGVVbmFyeShvcGVyYW5kQXJyYXlbaV0s
ICZjb3NoZiwgaW5mb1NpbmssICZyZXN1bHRBcnJheVtpXSkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRU9wU2lu
aDoKKyAgICAgICAgICAgICAgICBmb2xkRmxvYXRUeXBlVW5hcnkob3BlcmFuZEFycmF5W2ldLCAm
c2luaGYsICZyZXN1bHRBcnJheVtpXSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAg
ICAgICBjYXNlIEVPcFRhbmg6Ci0gICAgICAgICAgICBpZiAoIWZvbGRGbG9hdFR5cGVVbmFyeShv
cGVyYW5kQXJyYXlbaV0sICZ0YW5oZiwgaW5mb1NpbmssICZyZXN1bHRBcnJheVtpXSkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgRU9wQ29zaDoKKyAgICAgICAgICAgICAgICBmb2xkRmxvYXRUeXBlVW5hcnkob3Bl
cmFuZEFycmF5W2ldLCAmY29zaGYsICZyZXN1bHRBcnJheVtpXSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CiAKLSAgICAgICAgICBjYXNlIEVPcEFzaW5oOgotICAgICAgICAgICAgaWYgKCFmb2xk
RmxvYXRUeXBlVW5hcnkob3BlcmFuZEFycmF5W2ldLCAmYXNpbmhmLCBpbmZvU2luaywgJnJlc3Vs
dEFycmF5W2ldKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBFT3BUYW5oOgorICAgICAgICAgICAgICAgIGZvbGRG
bG9hdFR5cGVVbmFyeShvcGVyYW5kQXJyYXlbaV0sICZ0YW5oZiwgJnJlc3VsdEFycmF5W2ldKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgIGNhc2UgRU9wQWNvc2g6Ci0gICAg
ICAgICAgICAvLyBGb3IgYWNvc2goeCksIHJlc3VsdHMgYXJlIHVuZGVmaW5lZCBpZiB4IDwgMSwg
d2UgYXJlIGNob29zaW5nIHRvIHNldCByZXN1bHQgdG8gMC4KLSAgICAgICAgICAgIGlmIChnZXRU
eXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQgJiYgb3BlcmFuZEFycmF5W2ldLmdldEZD
b25zdCgpIDwgMS4wZikKLSAgICAgICAgICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdF
cnJvcihnZXRMaW5lKCksIG9wLCBnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCksIGluZm9TaW5rLCAm
cmVzdWx0QXJyYXlbaV0pOwotICAgICAgICAgICAgZWxzZSBpZiAoIWZvbGRGbG9hdFR5cGVVbmFy
eShvcGVyYW5kQXJyYXlbaV0sICZhY29zaGYsIGluZm9TaW5rLCAmcmVzdWx0QXJyYXlbaV0pKQot
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIEVPcEFzaW5oOgorICAgICAgICAgICAgICAgIGZvbGRGbG9hdFR5cGVVbmFy
eShvcGVyYW5kQXJyYXlbaV0sICZhc2luaGYsICZyZXN1bHRBcnJheVtpXSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBjYXNlIEVPcEF0YW5oOgotICAgICAgICAgICAgLy8g
Rm9yIGF0YW5oKHgpLCByZXN1bHRzIGFyZSB1bmRlZmluZWQgaWYgfHh8ID49IDEsIHdlIGFyZSBj
aG9vc2luZyB0byBzZXQgcmVzdWx0IHRvIDAuCi0gICAgICAgICAgICBpZiAoZ2V0VHlwZSgpLmdl
dEJhc2ljVHlwZSgpID09IEVidEZsb2F0ICYmIGZhYnNmKG9wZXJhbmRBcnJheVtpXS5nZXRGQ29u
c3QoKSkgPj0gMS4wZikKLSAgICAgICAgICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdF
cnJvcihnZXRMaW5lKCksIG9wLCBnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCksIGluZm9TaW5rLCAm
cmVzdWx0QXJyYXlbaV0pOwotICAgICAgICAgICAgZWxzZSBpZiAoIWZvbGRGbG9hdFR5cGVVbmFy
eShvcGVyYW5kQXJyYXlbaV0sICZhdGFuaGYsIGluZm9TaW5rLCAmcmVzdWx0QXJyYXlbaV0pKQot
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIEVPcEFjb3NoOgorICAgICAgICAgICAgICAgIC8vIEZvciBhY29zaCh4KSwg
cmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmIHggPCAxLCB3ZSBhcmUgY2hvb3NpbmcgdG8gc2V0IHJl
c3VsdCB0byAwLgorICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kQXJyYXlbaV0uZ2V0RkNvbnN0
KCkgPCAxLjBmKQorICAgICAgICAgICAgICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdF
cnJvcihnZXRMaW5lKCksIG9wLCBnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpYWdub3N0aWNzLCAmcmVz
dWx0QXJyYXlbaV0pOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
Zm9sZEZsb2F0VHlwZVVuYXJ5KG9wZXJhbmRBcnJheVtpXSwgJmFjb3NoZiwgJnJlc3VsdEFycmF5
W2ldKTsKKyAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgIGNhc2UgRU9wQWJzOgot
ICAgICAgICAgICAgc3dpdGNoIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICAgICAgcmVzdWx0
QXJyYXlbaV0uc2V0RkNvbnN0KGZhYnNmKG9wZXJhbmRBcnJheVtpXS5nZXRGQ29uc3QoKSkpOwor
ICAgICAgICAgICAgY2FzZSBFT3BBdGFuaDoKKyAgICAgICAgICAgICAgICAvLyBGb3IgYXRhbmgo
eCksIHJlc3VsdHMgYXJlIHVuZGVmaW5lZCBpZiB8eHwgPj0gMSwgd2UgYXJlIGNob29zaW5nIHRv
IHNldCByZXN1bHQgdG8KKyAgICAgICAgICAgICAgICAvLyAwLgorICAgICAgICAgICAgICAgIGlm
IChmYWJzZihvcGVyYW5kQXJyYXlbaV0uZ2V0RkNvbnN0KCkpID49IDEuMGYpCisgICAgICAgICAg
ICAgICAgICAgIFVuZGVmaW5lZENvbnN0YW50Rm9sZGluZ0Vycm9yKGdldExpbmUoKSwgb3AsIGdl
dFR5cGUoKS5nZXRCYXNpY1R5cGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGlhZ25vc3RpY3MsICZyZXN1bHRBcnJheVtpXSk7CisgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBmb2xkRmxvYXRUeXBlVW5hcnkob3Bl
cmFuZEFycmF5W2ldLCAmYXRhbmhmLCAmcmVzdWx0QXJyYXlbaV0pOwogICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidEludDoKLSAgICAgICAgICAgICAgICByZXN1
bHRBcnJheVtpXS5zZXRJQ29uc3QoYWJzKG9wZXJhbmRBcnJheVtpXS5nZXRJQ29uc3QoKSkpOwor
CisgICAgICAgICAgICBjYXNlIEVPcEFiczoKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGdldFR5
cGUoKS5nZXRCYXNpY1R5cGUoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgRWJ0RmxvYXQ6CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtp
XS5zZXRGQ29uc3QoZmFic2Yob3BlcmFuZEFycmF5W2ldLmdldEZDb25zdCgpKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6
CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRJQ29uc3QoYWJzKG9w
ZXJhbmRBcnJheVtpXS5nZXRJQ29uc3QoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZSgKLSAgICAg
ICAgICAgICAgICAgICAgRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwKLSAgICAgICAg
ICAgICAgICAgICAgIlVuYXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVkIGludG8gY29uc3RhbnQiKTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGJyZWFrOwogCi0gICAgICAgICAgY2FzZSBFT3BTaWduOgotICAgICAgICAgICAgc3dpdGNo
IChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
IGNhc2UgRWJ0RmxvYXQ6CisgICAgICAgICAgICBjYXNlIEVPcFNpZ246CisgICAgICAgICAgICAg
ICAgc3dpdGNoIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpCiAgICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICBmbG9hdCBmQ29uc3QgPSBvcGVyYW5kQXJyYXlbaV0uZ2V0RkNv
bnN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0IGZSZXN1bHQgPSAwLjBmOwotICAgICAg
ICAgICAgICAgICAgICBpZiAoZkNvbnN0ID4gMC4wZikKLSAgICAgICAgICAgICAgICAgICAgICAg
IGZSZXN1bHQgPSAxLjBmOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChmQ29uc3QgPCAw
LjBmKQotICAgICAgICAgICAgICAgICAgICAgICAgZlJlc3VsdCA9IC0xLjBmOwotICAgICAgICAg
ICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QoZlJlc3VsdCk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidElu
dDoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGludCBpQ29uc3QgPSBv
cGVyYW5kQXJyYXlbaV0uZ2V0SUNvbnN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGludCBpUmVz
dWx0ID0gMDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlDb25zdCA+IDApCi0gICAgICAgICAg
ICAgICAgICAgICAgICBpUmVzdWx0ID0gMTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
aUNvbnN0IDwgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlSZXN1bHQgPSAtMTsKLSAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0SUNvbnN0KGlSZXN1bHQpOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoCi0gICAgICAgICAgICAg
ICAgICAgIEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksCi0gICAgICAgICAgICAgICAg
ICAgICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKKyAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZkNvbnN0ICA9IG9wZXJhbmRBcnJh
eVtpXS5nZXRGQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGZSZXN1bHQg
PSAwLjBmOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZDb25zdCA+IDAuMGYpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZlJlc3VsdCA9IDEuMGY7CisgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlIGlmIChmQ29uc3QgPCAwLjBmKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZSZXN1bHQgPSAtMS4wZjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5
W2ldLnNldEZDb25zdChmUmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50Ogor
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaUNvbnN0
ICA9IG9wZXJhbmRBcnJheVtpXS5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGludCBpUmVzdWx0ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpQ29uc3QgPiAw
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlSZXN1bHQgPSAxOworICAgICAgICAgICAg
ICAgICAgICAgICAgZWxzZSBpZiAoaUNvbnN0IDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpUmVzdWx0ID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtp
XS5zZXRJQ29uc3QoaVJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVh
azsKIAotICAgICAgICAgIGNhc2UgRU9wRmxvb3I6Ci0gICAgICAgICAgICBpZiAoIWZvbGRGbG9h
dFR5cGVVbmFyeShvcGVyYW5kQXJyYXlbaV0sICZmbG9vcmYsIGluZm9TaW5rLCAmcmVzdWx0QXJy
YXlbaV0pKQotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIEVPcEZsb29yOgorICAgICAgICAgICAgICAgIGZvbGRGbG9h
dFR5cGVVbmFyeShvcGVyYW5kQXJyYXlbaV0sICZmbG9vcmYsICZyZXN1bHRBcnJheVtpXSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBjYXNlIEVPcFRydW5jOgotICAgICAg
ICAgICAgaWYgKCFmb2xkRmxvYXRUeXBlVW5hcnkob3BlcmFuZEFycmF5W2ldLCAmdHJ1bmNmLCBp
bmZvU2luaywgJnJlc3VsdEFycmF5W2ldKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFT3BUcnVuYzoKKyAgICAg
ICAgICAgICAgICBmb2xkRmxvYXRUeXBlVW5hcnkob3BlcmFuZEFycmF5W2ldLCAmdHJ1bmNmLCAm
cmVzdWx0QXJyYXlbaV0pOworICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgY2Fz
ZSBFT3BSb3VuZDoKLSAgICAgICAgICAgIGlmICghZm9sZEZsb2F0VHlwZVVuYXJ5KG9wZXJhbmRB
cnJheVtpXSwgJnJvdW5kZiwgaW5mb1NpbmssICZyZXN1bHRBcnJheVtpXSkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgRU9wUm91bmQ6CisgICAgICAgICAgICAgICAgZm9sZEZsb2F0VHlwZVVuYXJ5KG9wZXJhbmRB
cnJheVtpXSwgJnJvdW5kZiwgJnJlc3VsdEFycmF5W2ldKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKIAotICAgICAgICAgIGNhc2UgRU9wUm91bmRFdmVuOgotICAgICAgICAgICAgaWYgKGdldFR5
cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCkKKyAgICAgICAgICAgIGNhc2UgRU9wUm91
bmRFdmVuOgogICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEFTU0VSVChnZXRUeXBlKCku
Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQpOwogICAgICAgICAgICAgICAgIGZsb2F0IHggPSBv
cGVyYW5kQXJyYXlbaV0uZ2V0RkNvbnN0KCk7CiAgICAgICAgICAgICAgICAgZmxvYXQgcmVzdWx0
OwogICAgICAgICAgICAgICAgIGZsb2F0IGZyYWN0UGFydCA9IG1vZGZmKHgsICZyZXN1bHQpOwpA
QCAtMTcxMywxOTcgKzE5MzYsMTUxIEBAIFRDb25zdGFudFVuaW9uICpUSW50ZXJtQ29uc3RhbnRV
bmlvbjo6Zm8KICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QocmVzdWx0
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlu
Zm9TaW5rLmluZm8ubWVzc2FnZSgKLSAgICAgICAgICAgICAgICBFUHJlZml4SW50ZXJuYWxFcnJv
ciwgZ2V0TGluZSgpLAotICAgICAgICAgICAgICAgICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRl
ZCBpbnRvIGNvbnN0YW50Iik7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAg
ICAgIGNhc2UgRU9wQ2VpbDoKLSAgICAgICAgICAgIGlmICghZm9sZEZsb2F0VHlwZVVuYXJ5KG9w
ZXJhbmRBcnJheVtpXSwgJmNlaWxmLCBpbmZvU2luaywgJnJlc3VsdEFycmF5W2ldKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBFT3BDZWlsOgorICAgICAgICAgICAgICAgIGZvbGRGbG9hdFR5cGVVbmFyeShvcGVy
YW5kQXJyYXlbaV0sICZjZWlsZiwgJnJlc3VsdEFycmF5W2ldKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKIAotICAgICAgICAgIGNhc2UgRU9wRnJhY3Q6Ci0gICAgICAgICAgICBpZiAoZ2V0VHlw
ZSgpLmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0KQorICAgICAgICAgICAgY2FzZSBFT3BGcmFj
dDoKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZ2V0VHlwZSgpLmdldEJh
c2ljVHlwZSgpID09IEVidEZsb2F0KTsKICAgICAgICAgICAgICAgICBmbG9hdCB4ID0gb3BlcmFu
ZEFycmF5W2ldLmdldEZDb25zdCgpOwogICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNl
dEZDb25zdCh4IC0gZmxvb3JmKHgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZSgKLSAgICAgICAgICAgICAg
ICBFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLAotICAgICAgICAgICAgICAgICJVbmFy
eSBvcGVyYXRpb24gbm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7Ci0gICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgICAgICAgIGNhc2UgRU9wSXNOYW46Ci0gICAgICAgICAgICBpZiAo
Z2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0KQotICAgICAgICAgICAgeworICAg
ICAgICAgICAgY2FzZSBFT3BJc05hbjoKKyAgICAgICAgICAgICAgICBBU1NFUlQoZ2V0VHlwZSgp
LmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0KTsKICAgICAgICAgICAgICAgICByZXN1bHRBcnJh
eVtpXS5zZXRCQ29uc3QoZ2w6OmlzTmFOKG9wZXJhbmRBcnJheVswXS5nZXRGQ29uc3QoKSkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaW5mb1Np
bmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJVbmFyeSBv
cGVyYXRpb24gbm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7Ci0gICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgICAgICAgIGNhc2UgRU9wSXNJbmY6Ci0gICAgICAgICAgICBpZiAoZ2V0
VHlwZSgpLmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0KQotICAgICAgICAgICAgeworICAgICAg
ICAgICAgY2FzZSBFT3BJc0luZjoKKyAgICAgICAgICAgICAgICBBU1NFUlQoZ2V0VHlwZSgpLmdl
dEJhc2ljVHlwZSgpID09IEVidEZsb2F0KTsKICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtp
XS5zZXRCQ29uc3QoZ2w6OmlzSW5mKG9wZXJhbmRBcnJheVswXS5nZXRGQ29uc3QoKSkpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaW5mb1Npbmsu
aW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJVbmFyeSBvcGVy
YXRpb24gbm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7Ci0gICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgICAgICAgIGNhc2UgRU9wRmxvYXRCaXRzVG9JbnQ6Ci0gICAgICAgICAgICBp
ZiAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0KQotICAgICAgICAgICAgewor
ICAgICAgICAgICAgY2FzZSBFT3BGbG9hdEJpdHNUb0ludDoKKyAgICAgICAgICAgICAgICBBU1NF
UlQoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0KTsKICAgICAgICAgICAgICAg
ICByZXN1bHRBcnJheVtpXS5zZXRJQ29uc3QoZ2w6OmJpdENhc3Q8aW50MzJfdD4ob3BlcmFuZEFy
cmF5WzBdLmdldEZDb25zdCgpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJy
b3IsIGdldExpbmUoKSwgIlVuYXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVkIGludG8gY29uc3RhbnQi
KTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgICAgY2FzZSBFT3BGbG9h
dEJpdHNUb1VpbnQ6Ci0gICAgICAgICAgICBpZiAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpID09
IEVidEZsb2F0KQotICAgICAgICAgICAgeworICAgICAgICAgICAgY2FzZSBFT3BGbG9hdEJpdHNU
b1VpbnQ6CisgICAgICAgICAgICAgICAgQVNTRVJUKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9
PSBFYnRGbG9hdCk7CiAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0VUNvbnN0KGds
OjpiaXRDYXN0PHVpbnQzMl90PihvcGVyYW5kQXJyYXlbMF0uZ2V0RkNvbnN0KCkpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGluZm9TaW5rLmlu
Zm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiVW5hcnkgb3BlcmF0
aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICAgICAgICBjYXNlIEVPcEludEJpdHNUb0Zsb2F0OgotICAgICAgICAgICAgaWYg
KGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRJbnQpCi0gICAgICAgICAgICB7CisgICAg
ICAgICAgICBjYXNlIEVPcEludEJpdHNUb0Zsb2F0OgorICAgICAgICAgICAgICAgIEFTU0VSVChn
ZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0SW50KTsKICAgICAgICAgICAgICAgICByZXN1
bHRBcnJheVtpXS5zZXRGQ29uc3QoZ2w6OmJpdENhc3Q8ZmxvYXQ+KG9wZXJhbmRBcnJheVswXS5n
ZXRJQ29uc3QoKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRM
aW5lKCksICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7Ci0gICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICAgIGNhc2UgRU9wVWludEJpdHNUb0Zs
b2F0OgotICAgICAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRVSW50
KQotICAgICAgICAgICAgeworICAgICAgICAgICAgY2FzZSBFT3BVaW50Qml0c1RvRmxvYXQ6Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRVSW50
KTsKICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QoZ2w6OmJpdENhc3Q8
ZmxvYXQ+KG9wZXJhbmRBcnJheVswXS5nZXRVQ29uc3QoKSkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQ
cmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRl
ZCBpbnRvIGNvbnN0YW50Iik7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAg
ICAgIGNhc2UgRU9wRXhwOgotICAgICAgICAgICAgaWYgKCFmb2xkRmxvYXRUeXBlVW5hcnkob3Bl
cmFuZEFycmF5W2ldLCAmZXhwZiwgaW5mb1NpbmssICZyZXN1bHRBcnJheVtpXSkpCi0gICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIEVPcEV4cDoKKyAgICAgICAgICAgICAgICBmb2xkRmxvYXRUeXBlVW5hcnkob3BlcmFuZEFy
cmF5W2ldLCAmZXhwZiwgJnJlc3VsdEFycmF5W2ldKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
IAotICAgICAgICAgIGNhc2UgRU9wTG9nOgotICAgICAgICAgICAgLy8gRm9yIGxvZyh4KSwgcmVz
dWx0cyBhcmUgdW5kZWZpbmVkIGlmIHggPD0gMCwgd2UgYXJlIGNob29zaW5nIHRvIHNldCByZXN1
bHQgdG8gMC4KLSAgICAgICAgICAgIGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0
RmxvYXQgJiYgb3BlcmFuZEFycmF5W2ldLmdldEZDb25zdCgpIDw9IDAuMGYpCi0gICAgICAgICAg
ICAgICAgVW5kZWZpbmVkQ29uc3RhbnRGb2xkaW5nRXJyb3IoZ2V0TGluZSgpLCBvcCwgZ2V0VHlw
ZSgpLmdldEJhc2ljVHlwZSgpLCBpbmZvU2luaywgJnJlc3VsdEFycmF5W2ldKTsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKCFmb2xkRmxvYXRUeXBlVW5hcnkob3BlcmFuZEFycmF5W2ldLCAmbG9nZiwg
aW5mb1NpbmssICZyZXN1bHRBcnJheVtpXSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRU9wTG9nOgorICAgICAg
ICAgICAgICAgIC8vIEZvciBsb2coeCksIHJlc3VsdHMgYXJlIHVuZGVmaW5lZCBpZiB4IDw9IDAs
IHdlIGFyZSBjaG9vc2luZyB0byBzZXQgcmVzdWx0IHRvIDAuCisgICAgICAgICAgICAgICAgaWYg
KG9wZXJhbmRBcnJheVtpXS5nZXRGQ29uc3QoKSA8PSAwLjBmKQorICAgICAgICAgICAgICAgICAg
ICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJvcihnZXRMaW5lKCksIG9wLCBnZXRUeXBlKCku
Z2V0QmFzaWNUeXBlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRpYWdub3N0aWNzLCAmcmVzdWx0QXJyYXlbaV0pOworICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZm9sZEZsb2F0VHlwZVVuYXJ5KG9wZXJhbmRBcnJh
eVtpXSwgJmxvZ2YsICZyZXN1bHRBcnJheVtpXSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAK
LSAgICAgICAgICBjYXNlIEVPcEV4cDI6Ci0gICAgICAgICAgICBpZiAoIWZvbGRGbG9hdFR5cGVV
bmFyeShvcGVyYW5kQXJyYXlbaV0sICZleHAyZiwgaW5mb1NpbmssICZyZXN1bHRBcnJheVtpXSkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgRU9wRXhwMjoKKyAgICAgICAgICAgICAgICBmb2xkRmxvYXRUeXBlVW5h
cnkob3BlcmFuZEFycmF5W2ldLCAmZXhwMmYsICZyZXN1bHRBcnJheVtpXSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBjYXNlIEVPcExvZzI6Ci0gICAgICAgICAgICAvLyBG
b3IgbG9nMih4KSwgcmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmIHggPD0gMCwgd2UgYXJlIGNob29z
aW5nIHRvIHNldCByZXN1bHQgdG8gMC4KLSAgICAgICAgICAgIC8vIEFuZCBsb2cyZiBpcyBub3Qg
YXZhaWxhYmxlIG9uIHNvbWUgcGxhcmZvcm1zIGxpa2Ugb2xkIGFuZHJvaWQsIHNvIGp1c3QgdXNp
bmcgbG9nKHgpL2xvZygyKSBoZXJlLgotICAgICAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNp
Y1R5cGUoKSA9PSBFYnRGbG9hdCAmJiBvcGVyYW5kQXJyYXlbaV0uZ2V0RkNvbnN0KCkgPD0gMC4w
ZikKLSAgICAgICAgICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJvcihnZXRMaW5l
KCksIG9wLCBnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCksIGluZm9TaW5rLCAmcmVzdWx0QXJyYXlb
aV0pOwotICAgICAgICAgICAgZWxzZSBpZiAoIWZvbGRGbG9hdFR5cGVVbmFyeShvcGVyYW5kQXJy
YXlbaV0sICZsb2dmLCBpbmZvU2luaywgJnJlc3VsdEFycmF5W2ldKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXN1
bHRBcnJheVtpXS5zZXRGQ29uc3QocmVzdWx0QXJyYXlbaV0uZ2V0RkNvbnN0KCkgLyBsb2dmKDIu
MGYpKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFT3BMb2cyOgorICAg
ICAgICAgICAgICAgIC8vIEZvciBsb2cyKHgpLCByZXN1bHRzIGFyZSB1bmRlZmluZWQgaWYgeCA8
PSAwLCB3ZSBhcmUgY2hvb3NpbmcgdG8gc2V0IHJlc3VsdCB0byAwLgorICAgICAgICAgICAgICAg
IC8vIEFuZCBsb2cyZiBpcyBub3QgYXZhaWxhYmxlIG9uIHNvbWUgcGxhcmZvcm1zIGxpa2Ugb2xk
IGFuZHJvaWQsIHNvIGp1c3QgdXNpbmcKKyAgICAgICAgICAgICAgICAvLyBsb2coeCkvbG9nKDIp
IGhlcmUuCisgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmRBcnJheVtpXS5nZXRGQ29uc3QoKSA8
PSAwLjBmKQorICAgICAgICAgICAgICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJv
cihnZXRMaW5lKCksIG9wLCBnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpYWdub3N0aWNzLCAmcmVzdWx0
QXJyYXlbaV0pOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIGZvbGRGbG9hdFR5cGVVbmFyeShvcGVyYW5kQXJyYXlbaV0sICZsb2dm
LCAmcmVzdWx0QXJyYXlbaV0pOworICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5z
ZXRGQ29uc3QocmVzdWx0QXJyYXlbaV0uZ2V0RkNvbnN0KCkgLyBsb2dmKDIuMGYpKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBjYXNlIEVP
cFNxcnQ6Ci0gICAgICAgICAgICAvLyBGb3Igc3FydCh4KSwgcmVzdWx0cyBhcmUgdW5kZWZpbmVk
IGlmIHggPCAwLCB3ZSBhcmUgY2hvb3NpbmcgdG8gc2V0IHJlc3VsdCB0byAwLgotICAgICAgICAg
ICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCAmJiBvcGVyYW5kQXJy
YXlbaV0uZ2V0RkNvbnN0KCkgPCAwLjBmKQotICAgICAgICAgICAgICAgIFVuZGVmaW5lZENvbnN0
YW50Rm9sZGluZ0Vycm9yKGdldExpbmUoKSwgb3AsIGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSwg
aW5mb1NpbmssICZyZXN1bHRBcnJheVtpXSk7Ci0gICAgICAgICAgICBlbHNlIGlmICghZm9sZEZs
b2F0VHlwZVVuYXJ5KG9wZXJhbmRBcnJheVtpXSwgJnNxcnRmLCBpbmZvU2luaywgJnJlc3VsdEFy
cmF5W2ldKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBFT3BTcXJ0OgorICAgICAgICAgICAgICAgIC8vIEZvciBz
cXJ0KHgpLCByZXN1bHRzIGFyZSB1bmRlZmluZWQgaWYgeCA8IDAsIHdlIGFyZSBjaG9vc2luZyB0
byBzZXQgcmVzdWx0IHRvIDAuCisgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmRBcnJheVtpXS5n
ZXRGQ29uc3QoKSA8IDAuMGYpCisgICAgICAgICAgICAgICAgICAgIFVuZGVmaW5lZENvbnN0YW50
Rm9sZGluZ0Vycm9yKGdldExpbmUoKSwgb3AsIGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhZ25vc3Rp
Y3MsICZyZXN1bHRBcnJheVtpXSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBmb2xkRmxvYXRUeXBlVW5hcnkob3BlcmFuZEFycmF5W2ldLCAmc3FydGYsICZyZXN1
bHRBcnJheVtpXSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBjYXNlIEVP
cEludmVyc2VTcXJ0OgotICAgICAgICAgICAgLy8gVGhlcmUgaXMgbm8gc3RkbGliIGJ1aWx0LWlu
IGZ1bmN0aW9uIGVxdWF2YWxlbnQgZm9yIEdMRVMgYnVpbHQtaW4gaW52ZXJzZXNxcnQoKSwKLSAg
ICAgICAgICAgIC8vIHNvIGdldHRpbmcgdGhlIHNxdWFyZSByb290IGZpcnN0IHVzaW5nIGJ1aWx0
aW4gZnVuY3Rpb24gc3FydCgpIGFuZCB0aGVuIHRha2luZyBpdHMgaW52ZXJzZS4KLSAgICAgICAg
ICAgIC8vIEFsc28sIGZvciBpbnZlcnNlc3FydCh4KSwgcmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlm
IHggPD0gMCwgd2UgYXJlIGNob29zaW5nIHRvIHNldCByZXN1bHQgdG8gMC4KLSAgICAgICAgICAg
IGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQgJiYgb3BlcmFuZEFycmF5
W2ldLmdldEZDb25zdCgpIDw9IDAuMGYpCi0gICAgICAgICAgICAgICAgVW5kZWZpbmVkQ29uc3Rh
bnRGb2xkaW5nRXJyb3IoZ2V0TGluZSgpLCBvcCwgZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpLCBp
bmZvU2luaywgJnJlc3VsdEFycmF5W2ldKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFmb2xkRmxv
YXRUeXBlVW5hcnkob3BlcmFuZEFycmF5W2ldLCAmc3FydGYsIGluZm9TaW5rLCAmcmVzdWx0QXJy
YXlbaV0pKQotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25zdCgxLjBmIC8gcmVzdWx0
QXJyYXlbaV0uZ2V0RkNvbnN0KCkpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIEVPcEludmVyc2VTcXJ0OgorICAgICAgICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIHN0ZGxp
YiBidWlsdC1pbiBmdW5jdGlvbiBlcXVhdmFsZW50IGZvciBHTEVTIGJ1aWx0LWluIGludmVyc2Vz
cXJ0KCksCisgICAgICAgICAgICAgICAgLy8gc28gZ2V0dGluZyB0aGUgc3F1YXJlIHJvb3QgZmly
c3QgdXNpbmcgYnVpbHRpbiBmdW5jdGlvbiBzcXJ0KCkgYW5kIHRoZW4gdGFraW5nCisgICAgICAg
ICAgICAgICAgLy8gaXRzIGludmVyc2UuCisgICAgICAgICAgICAgICAgLy8gQWxzbywgZm9yIGlu
dmVyc2VzcXJ0KHgpLCByZXN1bHRzIGFyZSB1bmRlZmluZWQgaWYgeCA8PSAwLCB3ZSBhcmUgY2hv
b3NpbmcgdG8gc2V0CisgICAgICAgICAgICAgICAgLy8gcmVzdWx0IHRvIDAuCisgICAgICAgICAg
ICAgICAgaWYgKG9wZXJhbmRBcnJheVtpXS5nZXRGQ29uc3QoKSA8PSAwLjBmKQorICAgICAgICAg
ICAgICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJvcihnZXRMaW5lKCksIG9wLCBn
ZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRpYWdub3N0aWNzLCAmcmVzdWx0QXJyYXlbaV0pOworICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGZv
bGRGbG9hdFR5cGVVbmFyeShvcGVyYW5kQXJyYXlbaV0sICZzcXJ0ZiwgJnJlc3VsdEFycmF5W2ld
KTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KDEuMGYgLyBy
ZXN1bHRBcnJheVtpXS5nZXRGQ29uc3QoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgY2FzZSBFT3BWZWN0b3JMb2dpY2FsTm90OgotICAg
ICAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRCb29sKQotICAgICAg
ICAgICAgeworICAgICAgICAgICAgY2FzZSBFT3BWZWN0b3JMb2dpY2FsTm90OgorICAgICAgICAg
ICAgICAgIEFTU0VSVChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0Qm9vbCk7CiAgICAg
ICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KCFvcGVyYW5kQXJyYXlbaV0uZ2V0
QkNvbnN0KCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKAotICAgICAgICAgICAgICAgIEVQcmVmaXhJbnRl
cm5hbEVycm9yLCBnZXRMaW5lKCksCi0gICAgICAgICAgICAgICAgIlVuYXJ5IG9wZXJhdGlvbiBu
b3QgZm9sZGVkIGludG8gY29uc3RhbnQiKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgICAgICAgY2FzZSBFT3BOb3JtYWxpemU6Ci0gICAgICAgICAgICBpZiAoZ2V0VHlwZSgp
LmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0KQorICAgICAgICAgICAgY2FzZSBFT3BOb3JtYWxp
emU6CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgeCA9IG9wZXJhbmRBcnJh
eVtpXS5nZXRGQ29uc3QoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZ2V0VHlwZSgpLmdldEJh
c2ljVHlwZSgpID09IEVidEZsb2F0KTsKKyAgICAgICAgICAgICAgICBmbG9hdCB4ICAgICAgPSBv
cGVyYW5kQXJyYXlbaV0uZ2V0RkNvbnN0KCk7CiAgICAgICAgICAgICAgICAgZmxvYXQgbGVuZ3Ro
ID0gVmVjdG9yTGVuZ3RoKG9wZXJhbmRBcnJheSwgb2JqZWN0U2l6ZSk7CiAgICAgICAgICAgICAg
ICAgaWYgKGxlbmd0aCkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNv
bnN0KHggLyBsZW5ndGgpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgVW5kZWZpbmVkQ29uc3RhbnRGb2xkaW5nRXJyb3IoZ2V0TGluZSgpLCBvcCwgZ2V0VHlwZSgp
LmdldEJhc2ljVHlwZSgpLCBpbmZvU2luaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJnJlc3VsdEFycmF5W2ldKTsKKyAgICAgICAgICAgICAgICAg
ICAgVW5kZWZpbmVkQ29uc3RhbnRGb2xkaW5nRXJyb3IoZ2V0TGluZSgpLCBvcCwgZ2V0VHlwZSgp
LmdldEJhc2ljVHlwZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkaWFnbm9zdGljcywgJnJlc3VsdEFycmF5W2ldKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2Fn
ZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBm
b2xkZWQgaW50byBjb25zdGFudCIpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICAgICAgICBjYXNlIEVPcERGZHg6Ci0gICAgICAgICAgY2FzZSBFT3BERmR5OgotICAgICAgICAg
IGNhc2UgRU9wRndpZHRoOgotICAgICAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUo
KSA9PSBFYnRGbG9hdCkKLSAgICAgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgRU9wREZkeDoK
KyAgICAgICAgICAgIGNhc2UgRU9wREZkeToKKyAgICAgICAgICAgIGNhc2UgRU9wRndpZHRoOgor
ICAgICAgICAgICAgICAgIEFTU0VSVChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0Rmxv
YXQpOwogICAgICAgICAgICAgICAgIC8vIERlcml2YXRpdmVzIG9mIGNvbnN0YW50IGFyZ3VtZW50
cyBzaG91bGQgYmUgMC4KICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3Qo
MC4wZik7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwg
IlVuYXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVkIGludG8gY29uc3RhbnQiKTsKLSAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiByZXN1bHRBcnJheTsKIH0K
IAotYm9vbCBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZEZsb2F0VHlwZVVuYXJ5KGNvbnN0IFRD
b25zdGFudFVuaW9uICZwYXJhbWV0ZXIsIEZsb2F0VHlwZVVuYXJ5RnVuYyBidWlsdGluRnVuYywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW5mb1Npbmsg
JmluZm9TaW5rLCBUQ29uc3RhbnRVbmlvbiAqcmVzdWx0KSBjb25zdAordm9pZCBUSW50ZXJtQ29u
c3RhbnRVbmlvbjo6Zm9sZEZsb2F0VHlwZVVuYXJ5KGNvbnN0IFRDb25zdGFudFVuaW9uICZwYXJh
bWV0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxv
YXRUeXBlVW5hcnlGdW5jIGJ1aWx0aW5GdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRDb25zdGFudFVuaW9uICpyZXN1bHQpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKGJ1aWx0aW5GdW5jKTsKIAotICAgIGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkg
PT0gRWJ0RmxvYXQpCi0gICAgewotICAgICAgICByZXN1bHQtPnNldEZDb25zdChidWlsdGluRnVu
YyhwYXJhbWV0ZXIuZ2V0RkNvbnN0KCkpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
Ci0gICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKAotICAgICAgICBFUHJlZml4SW50ZXJuYWxFcnJv
ciwgZ2V0TGluZSgpLAotICAgICAgICAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBj
b25zdGFudCIpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQoZ2V0VHlwZSgpLmdldEJh
c2ljVHlwZSgpID09IEVidEZsb2F0KTsKKyAgICByZXN1bHQtPnNldEZDb25zdChidWlsdGluRnVu
YyhwYXJhbWV0ZXIuZ2V0RkNvbnN0KCkpKTsKIH0KIAogLy8gc3RhdGljCi1UQ29uc3RhbnRVbmlv
biAqVEludGVybUNvbnN0YW50VW5pb246OkZvbGRBZ2dyZWdhdGVDb25zdHJ1Y3RvcihUSW50ZXJt
QWdncmVnYXRlICphZ2dyZWdhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW5mb1NpbmsgJmluZm9TaW5rKQorVENvbnN0
YW50VW5pb24gKlRJbnRlcm1Db25zdGFudFVuaW9uOjpGb2xkQWdncmVnYXRlQ29uc3RydWN0b3Io
VEludGVybUFnZ3JlZ2F0ZSAqYWdncmVnYXRlKQogewogICAgIEFTU0VSVChhZ2dyZWdhdGUtPmdl
dFNlcXVlbmNlKCktPnNpemUoKSA+IDB1KTsKICAgICBzaXplX3QgcmVzdWx0U2l6ZSAgICAgICAg
ICAgPSBhZ2dyZWdhdGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7CkBAIC0yMDAyLDcgKzIx
NzksOCBAQCBUQ29uc3RhbnRVbmlvbiAqVEludGVybUNvbnN0YW50VW5pb246OkZvCiB9CiAKIC8v
IHN0YXRpYwotVENvbnN0YW50VW5pb24gKlRJbnRlcm1Db25zdGFudFVuaW9uOjpGb2xkQWdncmVn
YXRlQnVpbHRJbihUSW50ZXJtQWdncmVnYXRlICphZ2dyZWdhdGUsIFRJbmZvU2luayAmaW5mb1Np
bmspCitUQ29uc3RhbnRVbmlvbiAqVEludGVybUNvbnN0YW50VW5pb246OkZvbGRBZ2dyZWdhdGVC
dWlsdEluKFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3JlZ2F0ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVERpYWdub3N0aWNzICpkaWFn
bm9zdGljcykKIHsKICAgICBUT3BlcmF0b3Igb3AgPSBhZ2dyZWdhdGUtPmdldE9wKCk7CiAgICAg
VEludGVybVNlcXVlbmNlICpzZXF1ZW5jZSA9IGFnZ3JlZ2F0ZS0+Z2V0U2VxdWVuY2UoKTsKQEAg
LTIwMjgsNyArMjIwNiw3IEBAIFRDb25zdGFudFVuaW9uICpUSW50ZXJtQ29uc3RhbnRVbmlvbjo6
Rm8KICAgICAgICAgICAgIG1heE9iamVjdFNpemUgPSBvYmplY3RTaXplc1tpXTsKICAgICB9CiAK
LSAgICBpZiAoISgqc2VxdWVuY2UpWzBdLT5nZXRBc1R5cGVkKCktPmlzTWF0cml4KCkpCisgICAg
aWYgKCEoKnNlcXVlbmNlKVswXS0+Z2V0QXNUeXBlZCgpLT5pc01hdHJpeCgpICYmIGFnZ3JlZ2F0
ZS0+Z2V0T3AoKSAhPSBFT3BPdXRlclByb2R1Y3QpCiAgICAgewogICAgICAgICBmb3IgKHVuc2ln
bmVkIGludCBpID0gMDsgaSA8IHBhcmFtc0NvdW50OyBpKyspCiAgICAgICAgICAgICBpZiAob2Jq
ZWN0U2l6ZXNbaV0gIT0gbWF4T2JqZWN0U2l6ZSkKQEAgLTIwNDMsMjg0ICsyMjIxLDI5OCBAQCBU
Q29uc3RhbnRVbmlvbiAqVEludGVybUNvbnN0YW50VW5pb246OkZvCiAgICAgICAgIC8vCiAgICAg
ICAgIHN3aXRjaCAob3ApCiAgICAgICAgIHsKLSAgICAgICAgICBjYXNlIEVPcEF0YW46CisgICAg
ICAgICAgICBjYXNlIEVPcEF0YW46CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYg
KGJhc2ljVHlwZSA9PSBFYnRGbG9hdCkKKyAgICAgICAgICAgICAgICBBU1NFUlQoYmFzaWNUeXBl
ID09IEVidEZsb2F0KTsKKyAgICAgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3Rh
bnRVbmlvblttYXhPYmplY3RTaXplXTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1heE9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNpemVd
OwotICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9iamVjdFNp
emU7IGkrKykKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAg
ZmxvYXQgeSA9IHVuaW9uQXJyYXlzWzBdW2ldLmdldEZDb25zdCgpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgZmxvYXQgeCA9IHVuaW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gUmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmIHggYW5kIHkgYXJl
IGJvdGggMC4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4ID09IDAuMGYgJiYgeSA9PSAw
LjBmKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuZGVmaW5lZENvbnN0YW50Rm9sZGlu
Z0Vycm9yKGxvYywgb3AsIGJhc2ljVHlwZSwgaW5mb1NpbmssICZyZXN1bHRBcnJheVtpXSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KGF0YW4yZih5LCB4KSk7Ci0gICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZmxvYXQgeSA9IHVuaW9uQXJyYXlzWzBdW2ldLmdl
dEZDb25zdCgpOworICAgICAgICAgICAgICAgICAgICBmbG9hdCB4ID0gdW5pb25BcnJheXNbMV1b
aV0uZ2V0RkNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgIC8vIFJlc3VsdHMgYXJlIHVuZGVm
aW5lZCBpZiB4IGFuZCB5IGFyZSBib3RoIDAuCisgICAgICAgICAgICAgICAgICAgIGlmICh4ID09
IDAuMGYgJiYgeSA9PSAwLjBmKQorICAgICAgICAgICAgICAgICAgICAgICAgVW5kZWZpbmVkQ29u
c3RhbnRGb2xkaW5nRXJyb3IobG9jLCBvcCwgYmFzaWNUeXBlLCBkaWFnbm9zdGljcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXN1bHRB
cnJheVtpXSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25zdChhdGFuMmYoeSwgeCkpOwogICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hB
QkxFKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBicmVhazsKIAotICAgICAgICAgIGNhc2UgRU9wUG93OgorICAgICAgICAgICAgY2FzZSBFT3BQ
b3c6CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKGJhc2ljVHlwZSA9PSBFYnRG
bG9hdCkKKyAgICAgICAgICAgICAgICBBU1NFUlQoYmFzaWNUeXBlID09IEVidEZsb2F0KTsKKyAg
ICAgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblttYXhPYmplY3RT
aXplXTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9iamVjdFNp
emU7IGkrKykKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdEFy
cmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNpemVdOwotICAgICAgICAgICAgICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9iamVjdFNpemU7IGkrKykKLSAgICAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgeCA9IHVuaW9uQXJy
YXlzWzBdW2ldLmdldEZDb25zdCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgeSA9
IHVuaW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgpOwotICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gUmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmIHggPCAwLgotICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gUmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmIHggPSAwIGFuZCB5IDw9IDAuCi0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoeCA8IDAuMGYpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVW5kZWZpbmVkQ29uc3RhbnRGb2xkaW5nRXJyb3IobG9jLCBvcCwgYmFzaWNUeXBlLCBpbmZv
U2luaywgJnJlc3VsdEFycmF5W2ldKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYg
KHggPT0gMC4wZiAmJiB5IDw9IDAuMGYpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5k
ZWZpbmVkQ29uc3RhbnRGb2xkaW5nRXJyb3IobG9jLCBvcCwgYmFzaWNUeXBlLCBpbmZvU2luaywg
JnJlc3VsdEFycmF5W2ldKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QocG93Zih4LCB5KSk7
Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZmxvYXQgeCA9IHVu
aW9uQXJyYXlzWzBdW2ldLmdldEZDb25zdCgpOworICAgICAgICAgICAgICAgICAgICBmbG9hdCB5
ID0gdW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgIC8v
IFJlc3VsdHMgYXJlIHVuZGVmaW5lZCBpZiB4IDwgMC4KKyAgICAgICAgICAgICAgICAgICAgLy8g
UmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmIHggPSAwIGFuZCB5IDw9IDAuCisgICAgICAgICAgICAg
ICAgICAgIGlmICh4IDwgMC4wZikKKyAgICAgICAgICAgICAgICAgICAgICAgIFVuZGVmaW5lZENv
bnN0YW50Rm9sZGluZ0Vycm9yKGxvYywgb3AsIGJhc2ljVHlwZSwgZGlhZ25vc3RpY3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzdWx0
QXJyYXlbaV0pOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh4ID09IDAuMGYgJiYgeSA8
PSAwLjBmKQorICAgICAgICAgICAgICAgICAgICAgICAgVW5kZWZpbmVkQ29uc3RhbnRGb2xkaW5n
RXJyb3IobG9jLCBvcCwgYmFzaWNUeXBlLCBkaWFnbm9zdGljcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXN1bHRBcnJheVtpXSk7Cisg
ICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFy
cmF5W2ldLnNldEZDb25zdChwb3dmKHgsIHkpKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7CiAKLSAg
ICAgICAgICBjYXNlIEVPcE1vZDoKKyAgICAgICAgICAgIGNhc2UgRU9wTW9kOgogICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGlmIChiYXNpY1R5cGUgPT0gRWJ0RmxvYXQpCisgICAgICAg
ICAgICAgICAgQVNTRVJUKGJhc2ljVHlwZSA9PSBFYnRGbG9hdCk7CisgICAgICAgICAgICAgICAg
cmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07CisgICAgICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhPYmplY3RTaXplOyBpKyspCiAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29u
c3RhbnRVbmlvblttYXhPYmplY3RTaXplXTsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtYXhPYmplY3RTaXplOyBpKyspCi0gICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHggPSB1bmlvbkFycmF5c1swXVtpXS5nZXRG
Q29uc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHkgPSB1bmlvbkFycmF5c1sx
XVtpXS5nZXRGQ29uc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ld
LnNldEZDb25zdCh4IC0geSAqIGZsb29yZih4IC8geSkpOwotICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IHggPSB1bmlvbkFycmF5c1swXVtpXS5nZXRGQ29u
c3QoKTsKKyAgICAgICAgICAgICAgICAgICAgZmxvYXQgeSA9IHVuaW9uQXJyYXlzWzFdW2ldLmdl
dEZDb25zdCgpOworICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3Qo
eCAtIHkgKiBmbG9vcmYoeCAvIHkpKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAg
ICBjYXNlIEVPcE1pbjoKKyAgICAgICAgICAgIGNhc2UgRU9wTWluOgogICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVj
dFNpemVdOwogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0
U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNo
IChiYXNpY1R5cGUpCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIEVidEZsb2F0OgotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0u
c2V0RkNvbnN0KHN0ZDo6bWluKHVuaW9uQXJyYXlzWzBdW2ldLmdldEZDb25zdCgpLCB1bmlvbkFy
cmF5c1sxXVtpXS5nZXRGQ29uc3QoKSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICByZXN1bHRBcnJheVtpXS5zZXRJQ29uc3Qoc3RkOjptaW4odW5pb25BcnJheXNbMF1baV0u
Z2V0SUNvbnN0KCksIHVuaW9uQXJyYXlzWzFdW2ldLmdldElDb25zdCgpKSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidFVJbnQ6
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRVQ29uc3Qoc3RkOjpt
aW4odW5pb25BcnJheXNbMF1baV0uZ2V0VUNvbnN0KCksIHVuaW9uQXJyYXlzWzFdW2ldLmdldFVD
b25zdCgpKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBFYnRGbG9hdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtp
XS5zZXRGQ29uc3Qoc3RkOjptaW4odW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuaW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgpKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRJQ29uc3Qoc3RkOjptaW4o
dW5pb25BcnJheXNbMF1baV0uZ2V0SUNvbnN0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdl
dElDb25zdCgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgICAgICBjYXNlIEVidFVJbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0QXJyYXlbaV0uc2V0VUNvbnN0KHN0ZDo6bWluKHVuaW9uQXJyYXlzWzBdW2ldLmdl
dFVDb25zdCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bmlvbkFycmF5c1sxXVtpXS5nZXRVQ29uc3QoKSkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBjYXNlIEVPcE1heDoKKyAgICAgICAgICAgIGNh
c2UgRU9wTWF4OgogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5ID0g
bmV3IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNpemVdOwogICAgICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChiYXNpY1R5cGUpCiAgICAgICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OgotICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KHN0ZDo6bWF4KHVuaW9uQXJyYXlz
WzBdW2ldLmdldEZDb25zdCgpLCB1bmlvbkFycmF5c1sxXVtpXS5nZXRGQ29uc3QoKSkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgY2FzZSBF
YnRJbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRJQ29uc3Qo
c3RkOjptYXgodW5pb25BcnJheXNbMF1baV0uZ2V0SUNvbnN0KCksIHVuaW9uQXJyYXlzWzFdW2ld
LmdldElDb25zdCgpKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgICBjYXNlIEVidFVJbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1
bHRBcnJheVtpXS5zZXRVQ29uc3Qoc3RkOjptYXgodW5pb25BcnJheXNbMF1baV0uZ2V0VUNvbnN0
KCksIHVuaW9uQXJyYXlzWzFdW2ldLmdldFVDb25zdCgpKSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
ICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3Qoc3RkOjptYXgodW5pb25BcnJh
eXNbMF1baV0uZ2V0RkNvbnN0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgp
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjYXNlIEVidEludDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRB
cnJheVtpXS5zZXRJQ29uc3Qoc3RkOjptYXgodW5pb25BcnJheXNbMF1baV0uZ2V0SUNvbnN0KCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldElDb25zdCgpKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidFVJbnQ6
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0VUNvbnN0KHN0
ZDo6bWF4KHVuaW9uQXJyYXlzWzBdW2ldLmdldFVDb25zdCgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5c1sx
XVtpXS5nZXRVQ29uc3QoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBj
YXNlIEVPcFN0ZXA6CisgICAgICAgICAgICBjYXNlIEVPcFN0ZXA6CiAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgaWYgKGJhc2ljVHlwZSA9PSBFYnRGbG9hdCkKLSAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9u
W21heE9iamVjdFNpemVdOwotICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1heE9iamVjdFNpemU7IGkrKykKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFy
cmF5W2ldLnNldEZDb25zdCh1bmlvbkFycmF5c1sxXVtpXS5nZXRGQ29uc3QoKSA8IHVuaW9uQXJy
YXlzWzBdW2ldLmdldEZDb25zdCgpID8gMC4wZiA6IDEuMGYpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgICAgICAgICAgICAgQVNTRVJUKGJhc2ljVHlwZSA9PSBFYnRGbG9hdCk7CisgICAgICAg
ICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07
CisgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhPYmplY3RTaXplOyBp
KyspCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25zdCgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgpIDwgdW5pb25B
cnJheXNbMF1baV0uZ2V0RkNvbnN0KCkgPyAwLjBmCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDogMS4wZik7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBicmVhazsKIAotICAgICAgICAgIGNhc2UgRU9wTGVzc1RoYW46CisgICAgICAgICAg
ICBjYXNlIEVPcExlc3NUaGFuOgogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHJlc3Vs
dEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNpemVdOwogICAgICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChiYXNpY1R5cGUpCiAgICAgICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OgotICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlz
WzBdW2ldLmdldEZDb25zdCgpIDwgdW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0KCkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgY2FzZSBF
YnRJbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3Qo
dW5pb25BcnJheXNbMF1baV0uZ2V0SUNvbnN0KCkgPCB1bmlvbkFycmF5c1sxXVtpXS5nZXRJQ29u
c3QoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIEVidFVJbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtp
XS5zZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0VUNvbnN0KCkgPCB1bmlvbkFycmF5c1sx
XVtpXS5nZXRVQ29uc3QoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBFYnRGbG9hdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1
bHRBcnJheVtpXS5zZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCkgPAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlvbkFy
cmF5c1sxXVtpXS5nZXRGQ29uc3QoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0u
Z2V0SUNvbnN0KCkgPAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bmlvbkFycmF5c1sxXVtpXS5nZXRJQ29uc3QoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidFVJ
bnQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0
KHVuaW9uQXJyYXlzWzBdW2ldLmdldFVDb25zdCgpIDwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheXNbMV1baV0uZ2V0VUNvbnN0
KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJM
RSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBjYXNlIEVPcExlc3NUaGFu
RXF1YWw6CisgICAgICAgICAgICBjYXNlIEVPcExlc3NUaGFuRXF1YWw6CiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2Jq
ZWN0U2l6ZV07CiAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhPYmpl
Y3RTaXplOyBpKyspCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBzd2l0
Y2ggKGJhc2ljVHlwZSkKICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtp
XS5zZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCkgPD0gdW5pb25BcnJheXNb
MV1baV0uZ2V0RkNvbnN0KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0SUNvbnN0KCkgPD0g
dW5pb25BcnJheXNbMV1baV0uZ2V0SUNvbnN0KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRVSW50OgotICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdl
dFVDb25zdCgpIDw9IHVuaW9uQXJyYXlzWzFdW2ldLmdldFVDb25zdCgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5
c1swXVtpXS5nZXRGQ29uc3QoKSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5c1sxXVtpXS5nZXRGQ29uc3QoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBj
YXNlIEVidEludDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5z
ZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0SUNvbnN0KCkgPD0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheXNbMV1baV0u
Z2V0SUNvbnN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBFYnRVSW50OgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRVQ29uc3Qo
KSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bmlvbkFycmF5c1sxXVtpXS5nZXRVQ29uc3QoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsK
IAotICAgICAgICAgIGNhc2UgRU9wR3JlYXRlclRoYW46CisgICAgICAgICAgICBjYXNlIEVPcEdy
ZWF0ZXJUaGFuOgogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5ID0g
bmV3IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNpemVdOwogICAgICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChiYXNpY1R5cGUpCiAgICAgICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OgotICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdl
dEZDb25zdCgpID4gdW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0KCkpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5pb25BcnJh
eXNbMF1baV0uZ2V0SUNvbnN0KCkgPiB1bmlvbkFycmF5c1sxXVtpXS5nZXRJQ29uc3QoKSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICBjYXNl
IEVidFVJbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29u
c3QodW5pb25BcnJheXNbMF1baV0uZ2V0VUNvbnN0KCkgPiB1bmlvbkFycmF5c1sxXVtpXS5nZXRV
Q29uc3QoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBFYnRGbG9hdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtp
XS5zZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCkgPgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5c1sxXVtp
XS5nZXRGQ29uc3QoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDoKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0SUNvbnN0
KCkgPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bmlvbkFycmF5c1sxXVtpXS5nZXRJQ29uc3QoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidFVJbnQ6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJy
YXlzWzBdW2ldLmdldFVDb25zdCgpID4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheXNbMV1baV0uZ2V0VUNvbnN0KCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuRXF1YWw6
CisgICAgICAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuRXF1YWw6CiAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0
U2l6ZV07CiAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhPYmplY3RT
aXplOyBpKyspCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBzd2l0Y2gg
KGJhc2ljVHlwZSkKICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5z
ZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCkgPj0gdW5pb25BcnJheXNbMV1b
aV0uZ2V0RkNvbnN0KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1
bHRBcnJheVtpXS5zZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0SUNvbnN0KCkgPj0gdW5p
b25BcnJheXNbMV1baV0uZ2V0SUNvbnN0KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRVSW50OgotICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdldFVD
b25zdCgpID49IHVuaW9uQXJyYXlzWzFdW2ldLmdldFVDb25zdCgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1sw
XVtpXS5nZXRGQ29uc3QoKSA+PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bmlvbkFycmF5c1sxXVtpXS5nZXRGQ29uc3QoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNl
IEVidEludDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRC
Q29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0SUNvbnN0KCkgPj0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheXNbMV1baV0uZ2V0
SUNvbnN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBFYnRVSW50OgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRVQ29uc3QoKSA+
PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bmlvbkFycmF5c1sxXVtpXS5nZXRVQ29uc3QoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgIGNhc2UgRU9wVmVjdG9y
RXF1YWw6CisgICAgICAgICAgICBjYXNlIEVPcFZlY3RvckVxdWFsOgogICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVj
dFNpemVdOwogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0
U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNo
IChiYXNpY1R5cGUpCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIEVidEZsb2F0OgotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0u
c2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdldEZDb25zdCgpID09IHVuaW9uQXJyYXlzWzFd
W2ldLmdldEZDb25zdCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgotICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdldElDb25zdCgpID09IHVu
aW9uQXJyYXlzWzFdW2ldLmdldElDb25zdCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0VUludDoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRV
Q29uc3QoKSA9PSB1bmlvbkFycmF5c1sxXVtpXS5nZXRVQ29uc3QoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5pb25BcnJh
eXNbMF1baV0uZ2V0QkNvbnN0KCkgPT0gdW5pb25BcnJheXNbMV1baV0uZ2V0QkNvbnN0KCkpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0Rmxv
YXQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0
KHVuaW9uQXJyYXlzWzBdW2ldLmdldEZDb25zdCgpID09CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldEZDb25z
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRJQ29uc3QoKSA9PQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlvbkFy
cmF5c1sxXVtpXS5nZXRJQ29uc3QoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidFVJbnQ6CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ld
LmdldFVDb25zdCgpID09CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldFVDb25zdCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0
Qm9vbDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29u
c3QodW5pb25BcnJheXNbMF1baV0uZ2V0QkNvbnN0KCkgPT0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheXNbMV1baV0uZ2V0QkNv
bnN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBjYXNlIEVPcFZlY3Rv
ck5vdEVxdWFsOgorICAgICAgICAgICAgY2FzZSBFT3BWZWN0b3JOb3RFcXVhbDoKICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvbltt
YXhPYmplY3RTaXplXTsKICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1h
eE9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg
IHN3aXRjaCAoYmFzaWNUeXBlKQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFy
cmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRGQ29uc3QoKSAhPSB1bmlvbkFy
cmF5c1sxXVtpXS5nZXRGQ29uc3QoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRJQ29uc3Qo
KSAhPSB1bmlvbkFycmF5c1sxXVtpXS5nZXRJQ29uc3QoKSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidFVJbnQ6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5pb25BcnJheXNbMF1b
aV0uZ2V0VUNvbnN0KCkgIT0gdW5pb25BcnJheXNbMV1baV0uZ2V0VUNvbnN0KCkpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRC
b29sOgotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVu
aW9uQXJyYXlzWzBdW2ldLmdldEJDb25zdCgpICE9IHVuaW9uQXJyYXlzWzFdW2ldLmdldEJDb25z
dCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNl
IEVidEZsb2F0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNl
dEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRGQ29uc3QoKSAhPQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5c1sxXVtpXS5n
ZXRGQ29uc3QoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgICAgICBjYXNlIEVidEludDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0SUNvbnN0KCkg
IT0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5pb25BcnJheXNbMV1baV0uZ2V0SUNvbnN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRVSW50OgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5
c1swXVtpXS5nZXRVQ29uc3QoKSAhPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5c1sxXVtpXS5nZXRVQ29uc3QoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBj
YXNlIEVidEJvb2w6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0u
c2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdldEJDb25zdCgpICE9CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ld
LmdldEJDb25zdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgY2FzZSBF
T3BEaXN0YW5jZToKLSAgICAgICAgICAgIGlmIChiYXNpY1R5cGUgPT0gRWJ0RmxvYXQpCisgICAg
ICAgICAgICBjYXNlIEVPcERpc3RhbmNlOgogICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IEFTU0VSVChiYXNpY1R5cGUgPT0gRWJ0RmxvYXQpOwogICAgICAgICAgICAgICAgIFRDb25zdGFu
dFVuaW9uICpkaXN0YW5jZUFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNpemVd
OwotICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uKCk7Cisg
ICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkgICAgICAgICAgICAgICAgICAgPSBuZXcgVENvbnN0
YW50VW5pb24oKTsKICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9i
amVjdFNpemU7IGkrKykKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGZs
b2F0IHggPSB1bmlvbkFycmF5c1swXVtpXS5nZXRGQ29uc3QoKTsKQEAgLTIzMjgsNDcgKzI1MjAs
NDAgQEAgVENvbnN0YW50VW5pb24gKlRJbnRlcm1Db25zdGFudFVuaW9uOjpGbwogICAgICAgICAg
ICAgICAgICAgICBkaXN0YW5jZUFycmF5W2ldLnNldEZDb25zdCh4IC0geSk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5LT5zZXRGQ29uc3QoVmVjdG9yTGVu
Z3RoKGRpc3RhbmNlQXJyYXksIG1heE9iamVjdFNpemUpKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBVTlJF
QUNIQUJMRSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICBjYXNlIEVPcERvdDoK
IAotICAgICAgICAgICAgaWYgKGJhc2ljVHlwZSA9PSBFYnRGbG9hdCkKLSAgICAgICAgICAgIHsK
KyAgICAgICAgICAgIGNhc2UgRU9wRG90OgorICAgICAgICAgICAgICAgIEFTU0VSVChiYXNpY1R5
cGUgPT0gRWJ0RmxvYXQpOwogICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25z
dGFudFVuaW9uKCk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0QXJyYXktPnNldEZDb25zdChWZWN0
b3JEb3RQcm9kdWN0KHVuaW9uQXJyYXlzWzBdLCB1bmlvbkFycmF5c1sxXSwgbWF4T2JqZWN0U2l6
ZSkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICByZXN1bHRB
cnJheS0+c2V0RkNvbnN0KAorICAgICAgICAgICAgICAgICAgICBWZWN0b3JEb3RQcm9kdWN0KHVu
aW9uQXJyYXlzWzBdLCB1bmlvbkFycmF5c1sxXSwgbWF4T2JqZWN0U2l6ZSkpOworICAgICAgICAg
ICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgY2FzZSBFT3BDcm9zczoKLSAgICAgICAgICAgIGlm
IChiYXNpY1R5cGUgPT0gRWJ0RmxvYXQgJiYgbWF4T2JqZWN0U2l6ZSA9PSAzKQorICAgICAgICAg
ICAgY2FzZSBFT3BDcm9zczoKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
YmFzaWNUeXBlID09IEVidEZsb2F0ICYmIG1heE9iamVjdFNpemUgPT0gMyk7CiAgICAgICAgICAg
ICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07Ci0g
ICAgICAgICAgICAgICAgZmxvYXQgeDAgPSB1bmlvbkFycmF5c1swXVswXS5nZXRGQ29uc3QoKTsK
LSAgICAgICAgICAgICAgICBmbG9hdCB4MSA9IHVuaW9uQXJyYXlzWzBdWzFdLmdldEZDb25zdCgp
OwotICAgICAgICAgICAgICAgIGZsb2F0IHgyID0gdW5pb25BcnJheXNbMF1bMl0uZ2V0RkNvbnN0
KCk7Ci0gICAgICAgICAgICAgICAgZmxvYXQgeTAgPSB1bmlvbkFycmF5c1sxXVswXS5nZXRGQ29u
c3QoKTsKLSAgICAgICAgICAgICAgICBmbG9hdCB5MSA9IHVuaW9uQXJyYXlzWzFdWzFdLmdldEZD
b25zdCgpOwotICAgICAgICAgICAgICAgIGZsb2F0IHkyID0gdW5pb25BcnJheXNbMV1bMl0uZ2V0
RkNvbnN0KCk7CisgICAgICAgICAgICAgICAgZmxvYXQgeDAgICAgPSB1bmlvbkFycmF5c1swXVsw
XS5nZXRGQ29uc3QoKTsKKyAgICAgICAgICAgICAgICBmbG9hdCB4MSAgICA9IHVuaW9uQXJyYXlz
WzBdWzFdLmdldEZDb25zdCgpOworICAgICAgICAgICAgICAgIGZsb2F0IHgyICAgID0gdW5pb25B
cnJheXNbMF1bMl0uZ2V0RkNvbnN0KCk7CisgICAgICAgICAgICAgICAgZmxvYXQgeTAgICAgPSB1
bmlvbkFycmF5c1sxXVswXS5nZXRGQ29uc3QoKTsKKyAgICAgICAgICAgICAgICBmbG9hdCB5MSAg
ICA9IHVuaW9uQXJyYXlzWzFdWzFdLmdldEZDb25zdCgpOworICAgICAgICAgICAgICAgIGZsb2F0
IHkyICAgID0gdW5pb25BcnJheXNbMV1bMl0uZ2V0RkNvbnN0KCk7CiAgICAgICAgICAgICAgICAg
cmVzdWx0QXJyYXlbMF0uc2V0RkNvbnN0KHgxICogeTIgLSB5MSAqIHgyKTsKICAgICAgICAgICAg
ICAgICByZXN1bHRBcnJheVsxXS5zZXRGQ29uc3QoeDIgKiB5MCAtIHkyICogeDApOwogICAgICAg
ICAgICAgICAgIHJlc3VsdEFycmF5WzJdLnNldEZDb25zdCh4MCAqIHkxIC0geTAgKiB4MSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgIGJyZWFrOwogCi0gICAg
ICAgICAgY2FzZSBFT3BSZWZsZWN0OgotICAgICAgICAgICAgaWYgKGJhc2ljVHlwZSA9PSBFYnRG
bG9hdCkKKyAgICAgICAgICAgIGNhc2UgRU9wUmVmbGVjdDoKICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQoYmFzaWNUeXBlID09IEVidEZsb2F0KTsKICAgICAgICAgICAgICAg
ICAvLyBnZW5UeXBlIHJlZmxlY3QgKGdlblR5cGUgSSwgZ2VuVHlwZSBOKSA6Ci0gICAgICAgICAg
ICAgICAgLy8gICAgIEZvciB0aGUgaW5jaWRlbnQgdmVjdG9yIEkgYW5kIHN1cmZhY2Ugb3JpZW50
YXRpb24gTiwgcmV0dXJucyB0aGUgcmVmbGVjdGlvbiBkaXJlY3Rpb246CisgICAgICAgICAgICAg
ICAgLy8gICAgIEZvciB0aGUgaW5jaWRlbnQgdmVjdG9yIEkgYW5kIHN1cmZhY2Ugb3JpZW50YXRp
b24gTiwgcmV0dXJucyB0aGUgcmVmbGVjdGlvbgorICAgICAgICAgICAgICAgIC8vICAgICBkaXJl
Y3Rpb246CiAgICAgICAgICAgICAgICAgLy8gICAgIEkgLSAyICogZG90KE4sIEkpICogTi4KLSAg
ICAgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblttYXhPYmplY3RT
aXplXTsKKyAgICAgICAgICAgICAgICByZXN1bHRBcnJheSAgICAgID0gbmV3IFRDb25zdGFudFVu
aW9uW21heE9iamVjdFNpemVdOwogICAgICAgICAgICAgICAgIGZsb2F0IGRvdFByb2R1Y3QgPSBW
ZWN0b3JEb3RQcm9kdWN0KHVuaW9uQXJyYXlzWzFdLCB1bmlvbkFycmF5c1swXSwgbWF4T2JqZWN0
U2l6ZSk7CiAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhPYmplY3RT
aXplOyBpKyspCiAgICAgICAgICAgICAgICAgewpAQCAtMjM3Niw0NSArMjU2MSw0MCBAQCBUQ29u
c3RhbnRVbmlvbiAqVEludGVybUNvbnN0YW50VW5pb246OkZvCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIuMGYgKiBkb3RQcm9kdWN0ICogdW5pb25BcnJheXNbMV1baV0uZ2V0
RkNvbnN0KCk7CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25zdChy
ZXN1bHQpOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OwotICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBjYXNlIEVPcE11bDoKLSAgICAgICAg
ICAgIGlmIChiYXNpY1R5cGUgPT0gRWJ0RmxvYXQgJiYgKCpzZXF1ZW5jZSlbMF0tPmdldEFzVHlw
ZWQoKS0+aXNNYXRyaXgoKSAmJgotICAgICAgICAgICAgICAgICgqc2VxdWVuY2UpWzFdLT5nZXRB
c1R5cGVkKCktPmlzTWF0cml4KCkpCisgICAgICAgICAgICBjYXNlIEVPcE11bDoKICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYmFzaWNUeXBlID09IEVidEZsb2F0ICYmICgq
c2VxdWVuY2UpWzBdLT5nZXRBc1R5cGVkKCktPmlzTWF0cml4KCkgJiYKKyAgICAgICAgICAgICAg
ICAgICAgICAgKCpzZXF1ZW5jZSlbMV0tPmdldEFzVHlwZWQoKS0+aXNNYXRyaXgoKSk7CiAgICAg
ICAgICAgICAgICAgLy8gUGVyZm9ybSBjb21wb25lbnQtd2lzZSBtYXRyaXggbXVsdGlwbGljYXRp
b24uCiAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4
T2JqZWN0U2l6ZV07Ci0gICAgICAgICAgICAgICAgaW50IHNpemUgPSAoKnNlcXVlbmNlKVswXS0+
Z2V0QXNUeXBlZCgpLT5nZXROb21pbmFsU2l6ZSgpOworICAgICAgICAgICAgICAgIGludCBzaXpl
ICAgID0gKCpzZXF1ZW5jZSlbMF0tPmdldEFzVHlwZWQoKS0+Z2V0Tm9taW5hbFNpemUoKTsKICAg
ICAgICAgICAgICAgICBhbmdsZTo6TWF0cml4PGZsb2F0PiByZXN1bHQgPQogICAgICAgICAgICAg
ICAgICAgICBHZXRNYXRyaXgodW5pb25BcnJheXNbMF0sIHNpemUpLmNvbXBNdWx0KEdldE1hdHJp
eCh1bmlvbkFycmF5c1sxXSwgc2l6ZSkpOwogICAgICAgICAgICAgICAgIFNldFVuaW9uQXJyYXlG
cm9tTWF0cml4KHJlc3VsdCwgcmVzdWx0QXJyYXkpOworICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFVOUkVBQ0hB
QkxFKCk7Ci0gICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgIGNhc2UgRU9wT3V0ZXJQcm9k
dWN0OgotICAgICAgICAgICAgaWYgKGJhc2ljVHlwZSA9PSBFYnRGbG9hdCkKKyAgICAgICAgICAg
IGNhc2UgRU9wT3V0ZXJQcm9kdWN0OgogICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEFT
U0VSVChiYXNpY1R5cGUgPT0gRWJ0RmxvYXQpOwogICAgICAgICAgICAgICAgIHNpemVfdCBudW1S
b3dzID0gKCpzZXF1ZW5jZSlbMF0tPmdldEFzVHlwZWQoKS0+Z2V0VHlwZSgpLmdldE9iamVjdFNp
emUoKTsKICAgICAgICAgICAgICAgICBzaXplX3QgbnVtQ29scyA9ICgqc2VxdWVuY2UpWzFdLT5n
ZXRBc1R5cGVkKCktPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7Ci0gICAgICAgICAgICAgICAg
cmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbnVtUm93cyAqIG51bUNvbHNdOworICAg
ICAgICAgICAgICAgIHJlc3VsdEFycmF5ICAgID0gbmV3IFRDb25zdGFudFVuaW9uW251bVJvd3Mg
KiBudW1Db2xzXTsKICAgICAgICAgICAgICAgICBhbmdsZTo6TWF0cml4PGZsb2F0PiByZXN1bHQg
PQotICAgICAgICAgICAgICAgICAgICBHZXRNYXRyaXgodW5pb25BcnJheXNbMF0sIDEsIHN0YXRp
Y19jYXN0PGludD4obnVtQ29scykpCi0gICAgICAgICAgICAgICAgICAgICAgICAub3V0ZXJQcm9k
dWN0KEdldE1hdHJpeCh1bmlvbkFycmF5c1sxXSwgc3RhdGljX2Nhc3Q8aW50PihudW1Sb3dzKSwg
MSkpOworICAgICAgICAgICAgICAgICAgICBHZXRNYXRyaXgodW5pb25BcnJheXNbMF0sIHN0YXRp
Y19jYXN0PGludD4obnVtUm93cyksIDEpCisgICAgICAgICAgICAgICAgICAgICAgICAub3V0ZXJQ
cm9kdWN0KEdldE1hdHJpeCh1bmlvbkFycmF5c1sxXSwgMSwgc3RhdGljX2Nhc3Q8aW50PihudW1D
b2xzKSkpOwogICAgICAgICAgICAgICAgIFNldFVuaW9uQXJyYXlGcm9tTWF0cml4KHJlc3VsdCwg
cmVzdWx0QXJyYXkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAg
ICBicmVhazsKIAotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OwotICAgICAgICAgICAgLy8gVE9ETzogQWRkIGNvbnN0YW50IGZvbGRpbmcgc3VwcG9ydCBmb3Ig
b3RoZXIgYnVpbHQtaW4gb3BlcmF0aW9ucyB0aGF0IHRha2UgMiBwYXJhbWV0ZXJzIGFuZCBub3Qg
aGFuZGxlZCBhYm92ZS4KLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAg
IC8vIFRPRE86IEFkZCBjb25zdGFudCBmb2xkaW5nIHN1cHBvcnQgZm9yIG90aGVyIGJ1aWx0LWlu
IG9wZXJhdGlvbnMgdGhhdCB0YWtlIDIKKyAgICAgICAgICAgICAgICAvLyBwYXJhbWV0ZXJzIGFu
ZCBub3QgaGFuZGxlZCBhYm92ZS4KKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgfQogICAgIH0KICAgICBlbHNlIGlmIChwYXJhbXNDb3VudCA9PSAzKQpAQCAtMjQyNCwx
MjQgKzI2MDQsMTIzIEBAIFRDb25zdGFudFVuaW9uICpUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Rm8K
ICAgICAgICAgLy8KICAgICAgICAgc3dpdGNoIChvcCkKICAgICAgICAgewotICAgICAgICAgIGNh
c2UgRU9wQ2xhbXA6CisgICAgICAgICAgICBjYXNlIEVPcENsYW1wOgogICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVj
dFNpemVdOwogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0
U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNo
IChiYXNpY1R5cGUpCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIEVidEZsb2F0OgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoK
ICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
bG9hdCB4ID0gdW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxvYXQgeCAgID0gdW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgbWluID0gdW5pb25BcnJheXNbMV1baV0u
Z2V0RkNvbnN0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgbWF4ID0gdW5p
b25BcnJheXNbMl1baV0uZ2V0RkNvbnN0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gUmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmIG1pbiA+IG1heC4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAobWluID4gbWF4KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJvcihsb2MsIG9wLCBiYXNpY1R5cGUsIGluZm9T
aW5rLCAmcmVzdWx0QXJyYXlbaV0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
bmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJvcihsb2MsIG9wLCBiYXNpY1R5cGUsIGRpYWdub3N0
aWNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmcmVzdWx0QXJyYXlbaV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0
RkNvbnN0KGdsOjpjbGFtcCh4LCBtaW4sIG1heCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgogICAgICAgICAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4ID0gdW5pb25BcnJheXNbMF1baV0u
Z2V0SUNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHggICA9IHVuaW9u
QXJyYXlzWzBdW2ldLmdldElDb25zdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBtaW4gPSB1bmlvbkFycmF5c1sxXVtpXS5nZXRJQ29uc3QoKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgbWF4ID0gdW5pb25BcnJheXNbMl1baV0uZ2V0SUNvbnN0KCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmIG1pbiA+
IG1heC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWluID4gbWF4KQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJvcihs
b2MsIG9wLCBiYXNpY1R5cGUsIGluZm9TaW5rLCAmcmVzdWx0QXJyYXlbaV0pOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJvcihsb2Ms
IG9wLCBiYXNpY1R5cGUsIGRpYWdub3N0aWNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzdWx0QXJyYXlbaV0pOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0SUNvbnN0KGdsOjpjbGFtcCh4LCBtaW4sIG1heCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBFYnRVSW50OgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRVSW50Ogog
ICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCB4ID0gdW5pb25BcnJheXNbMF1baV0uZ2V0VUNvbnN0KCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHggICA9IHVuaW9uQXJyYXlzWzBdW2ldLmdl
dFVDb25zdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBtaW4g
PSB1bmlvbkFycmF5c1sxXVtpXS5nZXRVQ29uc3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgbWF4ID0gdW5pb25BcnJheXNbMl1baV0uZ2V0VUNvbnN0KCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmIG1p
biA+IG1heC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWluID4gbWF4KQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJv
cihsb2MsIG9wLCBiYXNpY1R5cGUsIGluZm9TaW5rLCAmcmVzdWx0QXJyYXlbaV0pOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJvcihs
b2MsIG9wLCBiYXNpY1R5cGUsIGRpYWdub3N0aWNzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzdWx0QXJyYXlbaV0pOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0VUNvbnN0KGdsOjpjbGFtcCh4LCBtaW4sIG1heCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgY2FzZSBFT3BNaXg6CisgICAgICAgICAgICBj
YXNlIEVPcE1peDoKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoYmFzaWNUeXBl
ID09IEVidEZsb2F0KQorICAgICAgICAgICAgICAgIEFTU0VSVChiYXNpY1R5cGUgPT0gRWJ0Rmxv
YXQpOworICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21h
eE9iamVjdFNpemVdOworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4
T2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
cmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07Ci0gICAgICAg
ICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQor
ICAgICAgICAgICAgICAgICAgICBmbG9hdCB4ICAgICAgICAgPSB1bmlvbkFycmF5c1swXVtpXS5n
ZXRGQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgZmxvYXQgeSAgICAgICAgID0gdW5pb25B
cnJheXNbMV1baV0uZ2V0RkNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgIFRCYXNpY1R5cGUg
dHlwZSA9ICgqc2VxdWVuY2UpWzJdLT5nZXRBc1R5cGVkKCktPmdldFR5cGUoKS5nZXRCYXNpY1R5
cGUoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gRWJ0RmxvYXQpCiAgICAgICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHggPSB1bmlvbkFy
cmF5c1swXVtpXS5nZXRGQ29uc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHkg
PSB1bmlvbkFycmF5c1sxXVtpXS5nZXRGQ29uc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IFRCYXNpY1R5cGUgdHlwZSA9ICgqc2VxdWVuY2UpWzJdLT5nZXRBc1R5cGVkKCktPmdldFR5cGUo
KS5nZXRCYXNpY1R5cGUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09IEVi
dEZsb2F0KQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFJldHVybnMgdGhlIGxpbmVhciBibGVuZCBvZiB4IGFuZCB5LCBpLmUuLCB4ICog
KDEgLSBhKSArIHkgKiBhLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGEgPSB1
bmlvbkFycmF5c1syXVtpXS5nZXRGQ29uc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QoeCAqICgxLjBmIC0gYSkgKyB5ICogYSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIC8vIDNy
ZCBwYXJhbWV0ZXIgaXMgRWJ0Qm9vbAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IEVidEJvb2wpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIFNlbGVjdHMgd2hpY2ggdmVjdG9yIGVhY2ggcmV0dXJuZWQg
Y29tcG9uZW50IGNvbWVzIGZyb20uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9y
IGEgY29tcG9uZW50IG9mIGEgdGhhdCBpcyBmYWxzZSwgdGhlIGNvcnJlc3BvbmRpbmcgY29tcG9u
ZW50IG9mIHggaXMgcmV0dXJuZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9y
IGEgY29tcG9uZW50IG9mIGEgdGhhdCBpcyB0cnVlLCB0aGUgY29ycmVzcG9uZGluZyBjb21wb25l
bnQgb2YgeSBpcyByZXR1cm5lZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGEg
PSB1bmlvbkFycmF5c1syXVtpXS5nZXRCQ29uc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QoYSA/IHkgOiB4KTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJldHVybnMgdGhlIGxpbmVh
ciBibGVuZCBvZiB4IGFuZCB5LCBpLmUuLCB4ICogKDEgLSBhKSArIHkgKiBhLgorICAgICAgICAg
ICAgICAgICAgICAgICAgZmxvYXQgYSA9IHVuaW9uQXJyYXlzWzJdW2ldLmdldEZDb25zdCgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KHggKiAoMS4w
ZiAtIGEpICsgeSAqIGEpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIGVsc2UgIC8vIDNyZCBwYXJhbWV0ZXIgaXMgRWJ0Qm9vbAorICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBFYnRCb29sKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIFNlbGVjdHMgd2hpY2ggdmVjdG9yIGVhY2ggcmV0dXJu
ZWQgY29tcG9uZW50IGNvbWVzIGZyb20uCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3Ig
YSBjb21wb25lbnQgb2YgYSB0aGF0IGlzIGZhbHNlLCB0aGUgY29ycmVzcG9uZGluZyBjb21wb25l
bnQgb2YgeCBpcworICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuZWQuCisgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBGb3IgYSBjb21wb25lbnQgb2YgYSB0aGF0IGlzIHRydWUsIHRo
ZSBjb3JyZXNwb25kaW5nIGNvbXBvbmVudCBvZiB5IGlzCisgICAgICAgICAgICAgICAgICAgICAg
ICAvLyByZXR1cm5lZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYSA9IHVuaW9uQXJy
YXlzWzJdW2ldLmdldEJDb25zdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJy
YXlbaV0uc2V0RkNvbnN0KGEgPyB5IDogeCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBjYXNlIEVPcFNtb290aFN0ZXA6CisgICAgICAg
ICAgICBjYXNlIEVPcFNtb290aFN0ZXA6CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
aWYgKGJhc2ljVHlwZSA9PSBFYnRGbG9hdCkKKyAgICAgICAgICAgICAgICBBU1NFUlQoYmFzaWNU
eXBlID09IEVidEZsb2F0KTsKKyAgICAgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29u
c3RhbnRVbmlvblttYXhPYmplY3RTaXplXTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1heE9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNp
emVdOwotICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9iamVj
dFNpemU7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgZmxvYXQgZWRnZTAgPSB1bmlvbkFycmF5
c1swXVtpXS5nZXRGQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgZmxvYXQgZWRnZTEgPSB1
bmlvbkFycmF5c1sxXVtpXS5nZXRGQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgZmxvYXQg
eCAgICAgPSB1bmlvbkFycmF5c1syXVtpXS5nZXRGQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAg
ICAgLy8gUmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmIGVkZ2UwID49IGVkZ2UxLgorICAgICAgICAg
ICAgICAgICAgICBpZiAoZWRnZTAgPj0gZWRnZTEpCiAgICAgICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGVkZ2UwID0gdW5pb25BcnJheXNbMF1baV0uZ2V0
RkNvbnN0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBlZGdlMSA9IHVuaW9uQXJy
YXlzWzFdW2ldLmdldEZDb25zdCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgeCA9
IHVuaW9uQXJyYXlzWzJdW2ldLmdldEZDb25zdCgpOwotICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gUmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmIGVkZ2UwID49IGVkZ2UxLgotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGVkZ2UwID49IGVkZ2UxKQotICAgICAgICAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuZGVmaW5lZENvbnN0YW50Rm9sZGluZ0Vy
cm9yKGxvYywgb3AsIGJhc2ljVHlwZSwgaW5mb1NpbmssICZyZXN1bHRBcnJheVtpXSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmV0
dXJucyAwLjAgaWYgeCA8PSBlZGdlMCBhbmQgMS4wIGlmIHggPj0gZWRnZTEgYW5kIHBlcmZvcm1z
IHNtb290aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhlcm1pdGUgaW50ZXJwb2xh
dGlvbiBiZXR3ZWVuIDAgYW5kIDEgd2hlbiBlZGdlMCA8IHggPCBlZGdlMS4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbG9hdCB0ID0gZ2w6OmNsYW1wKCh4IC0gZWRnZTApIC8gKGVkZ2Ux
IC0gZWRnZTApLCAwLjBmLCAxLjBmKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1
bHRBcnJheVtpXS5zZXRGQ29uc3QodCAqIHQgKiAoMy4wZiAtIDIuMGYgKiB0KSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBVbmRlZmluZWRDb25z
dGFudEZvbGRpbmdFcnJvcihsb2MsIG9wLCBiYXNpY1R5cGUsIGRpYWdub3N0aWNzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3VsdEFy
cmF5W2ldKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJldHVy
bnMgMC4wIGlmIHggPD0gZWRnZTAgYW5kIDEuMCBpZiB4ID49IGVkZ2UxIGFuZCBwZXJmb3JtcyBz
bW9vdGgKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhlcm1pdGUgaW50ZXJwb2xhdGlvbiBi
ZXR3ZWVuIDAgYW5kIDEgd2hlbiBlZGdlMCA8IHggPCBlZGdlMS4KKyAgICAgICAgICAgICAgICAg
ICAgICAgIGZsb2F0IHQgPSBnbDo6Y2xhbXAoKHggLSBlZGdlMCkgLyAoZWRnZTEgLSBlZGdlMCks
IDAuMGYsIDEuMGYpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0
RkNvbnN0KHQgKiB0ICogKDMuMGYgLSAyLjBmICogdCkpOwogICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgY2FzZSBFT3BGYWNlRm9yd2FyZDoK
LSAgICAgICAgICAgIGlmIChiYXNpY1R5cGUgPT0gRWJ0RmxvYXQpCisgICAgICAgICAgICBjYXNl
IEVPcEZhY2VGb3J3YXJkOgogICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEFTU0VSVChi
YXNpY1R5cGUgPT0gRWJ0RmxvYXQpOwogICAgICAgICAgICAgICAgIC8vIGdlblR5cGUgZmFjZWZv
cndhcmQoZ2VuVHlwZSBOLCBnZW5UeXBlIEksIGdlblR5cGUgTnJlZikgOgogICAgICAgICAgICAg
ICAgIC8vICAgICBJZiBkb3QoTnJlZiwgSSkgPCAwIHJldHVybiBOLCBvdGhlcndpc2UgcmV0dXJu
IC1OLgotICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21h
eE9iamVjdFNpemVdOworICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5ICAgICAgPSBuZXcgVENv
bnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07CiAgICAgICAgICAgICAgICAgZmxvYXQgZG90UHJv
ZHVjdCA9IFZlY3RvckRvdFByb2R1Y3QodW5pb25BcnJheXNbMl0sIHVuaW9uQXJyYXlzWzFdLCBt
YXhPYmplY3RTaXplKTsKICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1h
eE9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAgICAgICB7CkBAIC0yNTUwLDQzICsyNzI5LDQy
IEBAIFRDb25zdGFudFVuaW9uICpUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Rm8KICAgICAgICAgICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0
RkNvbnN0KC11bmlvbkFycmF5c1swXVtpXS5nZXRGQ29uc3QoKSk7CiAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICBicmVhazsKIAot
ICAgICAgICAgIGNhc2UgRU9wUmVmcmFjdDoKLSAgICAgICAgICAgIGlmIChiYXNpY1R5cGUgPT0g
RWJ0RmxvYXQpCisgICAgICAgICAgICBjYXNlIEVPcFJlZnJhY3Q6CiAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKGJhc2ljVHlwZSA9PSBFYnRGbG9hdCk7CiAgICAgICAgICAg
ICAgICAgLy8gZ2VuVHlwZSByZWZyYWN0KGdlblR5cGUgSSwgZ2VuVHlwZSBOLCBmbG9hdCBldGEp
IDoKLSAgICAgICAgICAgICAgICAvLyAgICAgRm9yIHRoZSBpbmNpZGVudCB2ZWN0b3IgSSBhbmQg
c3VyZmFjZSBub3JtYWwgTiwgYW5kIHRoZSByYXRpbyBvZiBpbmRpY2VzIG9mIHJlZnJhY3Rpb24g
ZXRhLAorICAgICAgICAgICAgICAgIC8vICAgICBGb3IgdGhlIGluY2lkZW50IHZlY3RvciBJIGFu
ZCBzdXJmYWNlIG5vcm1hbCBOLCBhbmQgdGhlIHJhdGlvIG9mIGluZGljZXMgb2YKKyAgICAgICAg
ICAgICAgICAvLyAgICAgcmVmcmFjdGlvbiBldGEsCiAgICAgICAgICAgICAgICAgLy8gICAgIHJl
dHVybiB0aGUgcmVmcmFjdGlvbiB2ZWN0b3IuIFRoZSByZXN1bHQgaXMgY29tcHV0ZWQgYnkKICAg
ICAgICAgICAgICAgICAvLyAgICAgICAgIGsgPSAxLjAgLSBldGEgKiBldGEgKiAoMS4wIC0gZG90
KE4sIEkpICogZG90KE4sIEkpKQogICAgICAgICAgICAgICAgIC8vICAgICAgICAgaWYgKGsgPCAw
LjApCiAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgcmV0dXJuIGdlblR5cGUoMC4wKQog
ICAgICAgICAgICAgICAgIC8vICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIC8vICAgICAg
ICAgICAgIHJldHVybiBldGEgKiBJIC0gKGV0YSAqIGRvdChOLCBJKSArIHNxcnQoaykpICogTgot
ICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVj
dFNpemVdOworICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5ICAgICAgPSBuZXcgVENvbnN0YW50
VW5pb25bbWF4T2JqZWN0U2l6ZV07CiAgICAgICAgICAgICAgICAgZmxvYXQgZG90UHJvZHVjdCA9
IFZlY3RvckRvdFByb2R1Y3QodW5pb25BcnJheXNbMV0sIHVuaW9uQXJyYXlzWzBdLCBtYXhPYmpl
Y3RTaXplKTsKICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9iamVj
dFNpemU7IGkrKykKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGZsb2F0
IGV0YSA9IHVuaW9uQXJyYXlzWzJdW2ldLmdldEZDb25zdCgpOwotICAgICAgICAgICAgICAgICAg
ICBmbG9hdCBrID0gMS4wZiAtIGV0YSAqIGV0YSAqICgxLjBmIC0gZG90UHJvZHVjdCAqIGRvdFBy
b2R1Y3QpOworICAgICAgICAgICAgICAgICAgICBmbG9hdCBrICAgPSAxLjBmIC0gZXRhICogZXRh
ICogKDEuMGYgLSBkb3RQcm9kdWN0ICogZG90UHJvZHVjdCk7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChrIDwgMC4wZikKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNl
dEZDb25zdCgwLjBmKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KGV0YSAqIHVuaW9uQXJyYXlzWzBdW2ld
LmdldEZDb25zdCgpIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoZXRhICogZG90UHJvZHVjdCArIHNxcnRmKGspKSAqIHVuaW9uQXJyYXlzWzFd
W2ldLmdldEZDb25zdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoZXRhICogZG90UHJvZHVjdCArIHNxcnRmKGspKSAqCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ld
LmdldEZDb25zdCgpKTsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKLSAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICAvLyBUT0RPOiBBZGQgY29uc3RhbnQg
Zm9sZGluZyBzdXBwb3J0IGZvciBvdGhlciBidWlsdC1pbiBvcGVyYXRpb25zIHRoYXQgdGFrZSAz
IHBhcmFtZXRlcnMgYW5kIG5vdCBoYW5kbGVkIGFib3ZlLgotICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CisgICAgICAgICAgICAgICAgLy8gVE9ETzogQWRkIGNvbnN0YW50IGZvbGRpbmcgc3VwcG9y
dCBmb3Igb3RoZXIgYnVpbHQtaW4gb3BlcmF0aW9ucyB0aGF0IHRha2UgMworICAgICAgICAgICAg
ICAgIC8vIHBhcmFtZXRlcnMgYW5kIG5vdCBoYW5kbGVkIGFib3ZlLgorICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiByZXN1bHRBcnJh
eTsKQEAgLTI2NTgsNyArMjgzNiwyOCBAQCB2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnVwZGF0ZVRy
ZWUoKQogICAgICAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKHJlcGxhY2VkKTsKICAgICB9
CiAKLSAgICBtSW5zZXJ0aW9ucy5jbGVhcigpOworICAgIGNsZWFyUmVwbGFjZW1lbnRRdWV1ZSgp
OworfQorCit2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OmNsZWFyUmVwbGFjZW1lbnRRdWV1ZSgpCit7
CiAgICAgbVJlcGxhY2VtZW50cy5jbGVhcigpOwogICAgIG1NdWx0aVJlcGxhY2VtZW50cy5jbGVh
cigpOworICAgIG1JbnNlcnRpb25zLmNsZWFyKCk7Cit9CisKK3ZvaWQgVEludGVybVRyYXZlcnNl
cjo6cXVldWVSZXBsYWNlbWVudChUSW50ZXJtTm9kZSAqb3JpZ2luYWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybU5vZGUgKnJlcGxhY2VtZW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yaWdpbmFsTm9kZSBvcmlnaW5h
bFN0YXR1cykKK3sKKyAgICBxdWV1ZVJlcGxhY2VtZW50V2l0aFBhcmVudChnZXRQYXJlbnROb2Rl
KCksIG9yaWdpbmFsLCByZXBsYWNlbWVudCwgb3JpZ2luYWxTdGF0dXMpOworfQorCit2b2lkIFRJ
bnRlcm1UcmF2ZXJzZXI6OnF1ZXVlUmVwbGFjZW1lbnRXaXRoUGFyZW50KFRJbnRlcm1Ob2RlICpw
YXJlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRJbnRlcm1Ob2RlICpvcmlnaW5hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVEludGVybU5vZGUgKnJlcGxhY2VtZW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmlnaW5hbE5vZGUgb3JpZ2lu
YWxTdGF0dXMpCit7CisgICAgYm9vbCBvcmlnaW5hbEJlY29tZXNDaGlsZCA9IChvcmlnaW5hbFN0
YXR1cyA9PSBPcmlnaW5hbE5vZGU6OkJFQ09NRVNfQ0hJTEQpOworICAgIG1SZXBsYWNlbWVudHMu
cHVzaF9iYWNrKE5vZGVVcGRhdGVFbnRyeShwYXJlbnQsIG9yaWdpbmFsLCByZXBsYWNlbWVudCwg
b3JpZ2luYWxCZWNvbWVzQ2hpbGQpKTsKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgJ
KHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL0ludGVybU5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTIgKzI3LDE4
IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9PcGVyYXRvci5oIgogI2luY2x1ZGUg
ImNvbXBpbGVyL3RyYW5zbGF0b3IvVHlwZXMuaCIKIAorY2xhc3MgVERpYWdub3N0aWNzOworCiBj
bGFzcyBUSW50ZXJtVHJhdmVyc2VyOwogY2xhc3MgVEludGVybUFnZ3JlZ2F0ZTsKK2NsYXNzIFRJ
bnRlcm1CbG9jazsKK2NsYXNzIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb247CitjbGFzcyBUSW50
ZXJtU3dpenpsZTsKIGNsYXNzIFRJbnRlcm1CaW5hcnk7CiBjbGFzcyBUSW50ZXJtVW5hcnk7CiBj
bGFzcyBUSW50ZXJtQ29uc3RhbnRVbmlvbjsKLWNsYXNzIFRJbnRlcm1TZWxlY3Rpb247CitjbGFz
cyBUSW50ZXJtVGVybmFyeTsKK2NsYXNzIFRJbnRlcm1JZkVsc2U7CiBjbGFzcyBUSW50ZXJtU3dp
dGNoOwogY2xhc3MgVEludGVybUNhc2U7CiBjbGFzcyBUSW50ZXJtVHlwZWQ7CkBAIC00NCw2ICs1
MCw3IEBAIGNsYXNzIFRJbnRlcm1SYXc7CiBjbGFzcyBUSW50ZXJtQnJhbmNoOwogCiBjbGFzcyBU
U3ltYm9sVGFibGU7CitjbGFzcyBURnVuY3Rpb247CiAKIC8vIEVuY2Fwc3VsYXRlIGFuIGlkZW50
aWZpZXIgc3RyaW5nIGFuZCB0cmFjayB3aGV0aGVyIGl0IGlzIGNvbWluZyBmcm9tIHRoZSBvcmln
aW5hbCBzaGFkZXIgY29kZQogLy8gKG5vdCBpbnRlcm5hbCkgb3IgZnJvbSBBTkdMRSAoaW50ZXJu
YWwpLiBVc3VhbGx5IGludGVybmFsIG5hbWVzIHNob3VsZG4ndCBiZSBkZWNvcmF0ZWQgb3IgaGFz
aGVkLgpAQCAtODgsMTAgKzk1LDE0IEBAIGNsYXNzIFRJbnRlcm1Ob2RlIDogYW5nbGU6Ok5vbkNv
cHlhYmxlCiAgICAgdmlydHVhbCB2b2lkIHRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIgKikgPSAw
OwogICAgIHZpcnR1YWwgVEludGVybVR5cGVkICpnZXRBc1R5cGVkKCkgeyByZXR1cm4gMDsgfQog
ICAgIHZpcnR1YWwgVEludGVybUNvbnN0YW50VW5pb24gKmdldEFzQ29uc3RhbnRVbmlvbigpIHsg
cmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKmdldEFz
RnVuY3Rpb25EZWZpbml0aW9uKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgVElu
dGVybUFnZ3JlZ2F0ZSAqZ2V0QXNBZ2dyZWdhdGUoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVh
bCBUSW50ZXJtQmxvY2sgKmdldEFzQmxvY2soKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmly
dHVhbCBUSW50ZXJtU3dpenpsZSAqZ2V0QXNTd2l6emxlTm9kZSgpIHsgcmV0dXJuIG51bGxwdHI7
IH0KICAgICB2aXJ0dWFsIFRJbnRlcm1CaW5hcnkgKmdldEFzQmluYXJ5Tm9kZSgpIHsgcmV0dXJu
IDA7IH0KICAgICB2aXJ0dWFsIFRJbnRlcm1VbmFyeSAqZ2V0QXNVbmFyeU5vZGUoKSB7IHJldHVy
biAwOyB9Ci0gICAgdmlydHVhbCBUSW50ZXJtU2VsZWN0aW9uICpnZXRBc1NlbGVjdGlvbk5vZGUo
KSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBUSW50ZXJtVGVybmFyeSAqZ2V0QXNUZXJuYXJ5
Tm9kZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFRJbnRlcm1JZkVsc2UgKmdl
dEFzSWZFbHNlTm9kZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIFRJbnRlcm1T
d2l0Y2ggKmdldEFzU3dpdGNoTm9kZSgpIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIFRJbnRl
cm1DYXNlICpnZXRBc0Nhc2VOb2RlKCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgVEludGVy
bVN5bWJvbCAqZ2V0QXNTeW1ib2xOb2RlKCkgeyByZXR1cm4gMDsgfQpAQCAtMTUzLDcgKzE2NCwx
MiBAQCBjbGFzcyBUSW50ZXJtVHlwZWQgOiBwdWJsaWMgVEludGVybU5vZGUKICAgICBjb25zdCBj
aGFyICpnZXRCYXNpY1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1UeXBlLmdldEJhc2ljU3RyaW5n
KCk7IH0KICAgICBUU3RyaW5nIGdldENvbXBsZXRlU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbVR5
cGUuZ2V0Q29tcGxldGVTdHJpbmcoKTsgfQogCi0gICAgaW50IGdldEFycmF5U2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1UeXBlLmdldEFycmF5U2l6ZSgpOyB9CisgICAgdW5zaWduZWQgaW50IGdldEFy
cmF5U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1UeXBlLmdldEFycmF5U2l6ZSgpOyB9CisKKyAgICBi
b29sIGlzQ29uc3RydWN0b3JXaXRoT25seUNvbnN0YW50VW5pb25QYXJhbWV0ZXJzKCk7CisKKyAg
ICBzdGF0aWMgVEludGVybVR5cGVkICpDcmVhdGVJbmRleE5vZGUoaW50IGluZGV4KTsKKyAgICBz
dGF0aWMgVEludGVybVR5cGVkICpDcmVhdGVaZXJvKGNvbnN0IFRUeXBlICZ0eXBlKTsKIAogICBw
cm90ZWN0ZWQ6CiAgICAgVFR5cGUgbVR5cGU7CkBAIC0xNzgsNyArMTk0LDcgQEAgY2xhc3MgVElu
dGVybUxvb3AgOiBwdWJsaWMgVEludGVybU5vZGUKICAgICAgICAgICAgICAgICBUSW50ZXJtTm9k
ZSAqaW5pdCwKICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmNvbmQsCiAgICAgICAgICAg
ICAgICAgVEludGVybVR5cGVkICpleHByLAotICAgICAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdh
dGUgKmJvZHkpCisgICAgICAgICAgICAgICAgVEludGVybUJsb2NrICpib2R5KQogICAgICAgICA6
IG1UeXBlKHR5cGUpLCBtSW5pdChpbml0KSwgbUNvbmQoY29uZCksIG1FeHByKGV4cHIpLCBtQm9k
eShib2R5KSwgbVVucm9sbEZsYWcoZmFsc2UpCiAgICAgewogICAgIH0KQEAgLTE5MSw3ICsyMDcs
MTEgQEAgY2xhc3MgVEludGVybUxvb3AgOiBwdWJsaWMgVEludGVybU5vZGUKICAgICBUSW50ZXJt
Tm9kZSAqZ2V0SW5pdCgpIHsgcmV0dXJuIG1Jbml0OyB9CiAgICAgVEludGVybVR5cGVkICpnZXRD
b25kaXRpb24oKSB7IHJldHVybiBtQ29uZDsgfQogICAgIFRJbnRlcm1UeXBlZCAqZ2V0RXhwcmVz
c2lvbigpIHsgcmV0dXJuIG1FeHByOyB9Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSAqZ2V0Qm9keSgp
IHsgcmV0dXJuIG1Cb2R5OyB9CisgICAgVEludGVybUJsb2NrICpnZXRCb2R5KCkgeyByZXR1cm4g
bUJvZHk7IH0KKworICAgIHZvaWQgc2V0Q29uZGl0aW9uKFRJbnRlcm1UeXBlZCAqY29uZGl0aW9u
KSB7IG1Db25kID0gY29uZGl0aW9uOyB9CisgICAgdm9pZCBzZXRFeHByZXNzaW9uKFRJbnRlcm1U
eXBlZCAqZXhwcmVzc2lvbikgeyBtRXhwciA9IGV4cHJlc3Npb247IH0KKyAgICB2b2lkIHNldEJv
ZHkoVEludGVybUJsb2NrICpib2R5KSB7IG1Cb2R5ID0gYm9keTsgfQogCiAgICAgdm9pZCBzZXRV
bnJvbGxGbGFnKGJvb2wgZmxhZykgeyBtVW5yb2xsRmxhZyA9IGZsYWc7IH0KICAgICBib29sIGdl
dFVucm9sbEZsYWcoKSBjb25zdCB7IHJldHVybiBtVW5yb2xsRmxhZzsgfQpAQCAtMjAxLDcgKzIy
MSw3IEBAIGNsYXNzIFRJbnRlcm1Mb29wIDogcHVibGljIFRJbnRlcm1Ob2RlCiAgICAgVEludGVy
bU5vZGUgKm1Jbml0OyAgLy8gZm9yLWxvb3AgaW5pdGlhbGl6YXRpb24KICAgICBUSW50ZXJtVHlw
ZWQgKm1Db25kOyAvLyBsb29wIGV4aXQgY29uZGl0aW9uCiAgICAgVEludGVybVR5cGVkICptRXhw
cjsgLy8gZm9yLWxvb3AgZXhwcmVzc2lvbgotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKm1Cb2R5OyAg
Ly8gbG9vcCBib2R5CisgICAgVEludGVybUJsb2NrICptQm9keTsgIC8vIGxvb3AgYm9keQogCiAg
ICAgYm9vbCBtVW5yb2xsRmxhZzsgLy8gV2hldGhlciB0aGUgbG9vcCBzaG91bGQgYmUgdW5yb2xs
ZWQgb3Igbm90LgogfTsKQEAgLTMwOCw2ICszMjgsNyBAQCBjbGFzcyBUSW50ZXJtQ29uc3RhbnRV
bmlvbiA6IHB1YmxpYyBUSW50CiAgICAgVEludGVybUNvbnN0YW50VW5pb24oY29uc3QgVENvbnN0
YW50VW5pb24gKnVuaW9uUG9pbnRlciwgY29uc3QgVFR5cGUgJnR5cGUpCiAgICAgICAgIDogVElu
dGVybVR5cGVkKHR5cGUpLCBtVW5pb25BcnJheVBvaW50ZXIodW5pb25Qb2ludGVyKQogICAgIHsK
KyAgICAgICAgQVNTRVJUKHVuaW9uUG9pbnRlcik7CiAgICAgfQogCiAgICAgVEludGVybVR5cGVk
ICpkZWVwQ29weSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG5ldyBUSW50ZXJtQ29uc3RhbnRV
bmlvbigqdGhpcyk7IH0KQEAgLTMzNSw2ICszNTYsNyBAQCBjbGFzcyBUSW50ZXJtQ29uc3RhbnRV
bmlvbiA6IHB1YmxpYyBUSW50CiAKICAgICB2b2lkIHJlcGxhY2VDb25zdGFudFVuaW9uKGNvbnN0
IFRDb25zdGFudFVuaW9uICpzYWZlQ29uc3RhbnRVbmlvbikKICAgICB7CisgICAgICAgIEFTU0VS
VChzYWZlQ29uc3RhbnRVbmlvbik7CiAgICAgICAgIC8vIFByZXZpb3VzIHVuaW9uIHBvaW50ZXIg
ZnJlZWQgb24gcG9vbCBkZWFsbG9jYXRpb24uCiAgICAgICAgIG1VbmlvbkFycmF5UG9pbnRlciA9
IHNhZmVDb25zdGFudFVuaW9uOwogICAgIH0KQEAgLTM0MywxMyArMzY1LDE3IEBAIGNsYXNzIFRJ
bnRlcm1Db25zdGFudFVuaW9uIDogcHVibGljIFRJbnQKICAgICB2b2lkIHRyYXZlcnNlKFRJbnRl
cm1UcmF2ZXJzZXIgKml0KSBvdmVycmlkZTsKICAgICBib29sIHJlcGxhY2VDaGlsZE5vZGUoVElu
dGVybU5vZGUgKiwgVEludGVybU5vZGUgKikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAot
ICAgIFRDb25zdGFudFVuaW9uICpmb2xkQmluYXJ5KFRPcGVyYXRvciBvcCwgVEludGVybUNvbnN0
YW50VW5pb24gKnJpZ2h0Tm9kZSwgVEluZm9TaW5rICZpbmZvU2luayk7Ci0gICAgVENvbnN0YW50
VW5pb24gKmZvbGRVbmFyeVdpdGhEaWZmZXJlbnRSZXR1cm5UeXBlKFRPcGVyYXRvciBvcCwgVElu
Zm9TaW5rICZpbmZvU2luayk7Ci0gICAgVENvbnN0YW50VW5pb24gKmZvbGRVbmFyeVdpdGhTYW1l
UmV0dXJuVHlwZShUT3BlcmF0b3Igb3AsIFRJbmZvU2luayAmaW5mb1NpbmspOwotCi0gICAgc3Rh
dGljIFRDb25zdGFudFVuaW9uICpGb2xkQWdncmVnYXRlQ29uc3RydWN0b3IoVEludGVybUFnZ3Jl
Z2F0ZSAqYWdncmVnYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRJbmZvU2luayAmaW5mb1NpbmspOwotICAgIHN0YXRpYyBUQ29uc3RhbnRV
bmlvbiAqRm9sZEFnZ3JlZ2F0ZUJ1aWx0SW4oVEludGVybUFnZ3JlZ2F0ZSAqYWdncmVnYXRlLCBU
SW5mb1NpbmsgJmluZm9TaW5rKTsKKyAgICBUQ29uc3RhbnRVbmlvbiAqZm9sZEJpbmFyeShUT3Bl
cmF0b3Igb3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybUNvbnN0YW50
VW5pb24gKnJpZ2h0Tm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURGlhZ25v
c3RpY3MgKmRpYWdub3N0aWNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRTb3VyY2VMb2MgJmxpbmUpOworICAgIGNvbnN0IFRDb25zdGFudFVuaW9uICpmb2xkSW5kZXhp
bmcoaW50IGluZGV4KTsKKyAgICBUQ29uc3RhbnRVbmlvbiAqZm9sZFVuYXJ5Tm9uQ29tcG9uZW50
V2lzZShUT3BlcmF0b3Igb3ApOworICAgIFRDb25zdGFudFVuaW9uICpmb2xkVW5hcnlDb21wb25l
bnRXaXNlKFRPcGVyYXRvciBvcCwgVERpYWdub3N0aWNzICpkaWFnbm9zdGljcyk7CisKKyAgICBz
dGF0aWMgVENvbnN0YW50VW5pb24gKkZvbGRBZ2dyZWdhdGVDb25zdHJ1Y3RvcihUSW50ZXJtQWdn
cmVnYXRlICphZ2dyZWdhdGUpOworICAgIHN0YXRpYyBUQ29uc3RhbnRVbmlvbiAqRm9sZEFnZ3Jl
Z2F0ZUJ1aWx0SW4oVEludGVybUFnZ3JlZ2F0ZSAqYWdncmVnYXRlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVERpYWdub3N0aWNzICpkaWFnbm9zdGlj
cyk7CiAKICAgcHJvdGVjdGVkOgogICAgIC8vIFNhbWUgZGF0YSBtYXkgYmUgc2hhcmVkIGJldHdl
ZW4gbXVsdGlwbGUgY29uc3RhbnQgdW5pb25zLCBzbyBpdCBjYW4ndCBiZSBtb2RpZmllZC4KQEAg
LTM1Nyw3ICszODMsOSBAQCBjbGFzcyBUSW50ZXJtQ29uc3RhbnRVbmlvbiA6IHB1YmxpYyBUSW50
CiAKICAgcHJpdmF0ZToKICAgICB0eXBlZGVmIGZsb2F0KCpGbG9hdFR5cGVVbmFyeUZ1bmMpIChm
bG9hdCk7Ci0gICAgYm9vbCBmb2xkRmxvYXRUeXBlVW5hcnkoY29uc3QgVENvbnN0YW50VW5pb24g
JnBhcmFtZXRlciwgRmxvYXRUeXBlVW5hcnlGdW5jIGJ1aWx0aW5GdW5jLCBUSW5mb1NpbmsgJmlu
Zm9TaW5rLCBUQ29uc3RhbnRVbmlvbiAqcmVzdWx0KSBjb25zdDsKKyAgICB2b2lkIGZvbGRGbG9h
dFR5cGVVbmFyeShjb25zdCBUQ29uc3RhbnRVbmlvbiAmcGFyYW1ldGVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZsb2F0VHlwZVVuYXJ5RnVuYyBidWlsdGluRnVuYywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUQ29uc3RhbnRVbmlvbiAqcmVzdWx0KSBjb25zdDsKIAogICAg
IFRJbnRlcm1Db25zdGFudFVuaW9uKGNvbnN0IFRJbnRlcm1Db25zdGFudFVuaW9uICZub2RlKTsg
IC8vIE5vdGU6IG5vdCBkZWxldGVkLCBqdXN0IHByaXZhdGUhCiB9OwpAQCAtMzY5LDcgKzM5Nyw2
IEBAIGNsYXNzIFRJbnRlcm1PcGVyYXRvciA6IHB1YmxpYyBUSW50ZXJtVHkKIHsKICAgcHVibGlj
OgogICAgIFRPcGVyYXRvciBnZXRPcCgpIGNvbnN0IHsgcmV0dXJuIG1PcDsgfQotICAgIHZvaWQg
c2V0T3AoVE9wZXJhdG9yIG9wKSB7IG1PcCA9IG9wOyB9CiAKICAgICBib29sIGlzQXNzaWdubWVu
dCgpIGNvbnN0OwogICAgIGJvb2wgaXNNdWx0aXBsaWNhdGlvbigpIGNvbnN0OwpAQCAtMzkwLDE4
ICs0MTcsNTUgQEAgY2xhc3MgVEludGVybU9wZXJhdG9yIDogcHVibGljIFRJbnRlcm1UeQogICAg
IFRPcGVyYXRvciBtT3A7CiB9OwogCisvLyBOb2RlIGZvciB2ZWN0b3Igc3dpenpsZXMuCitjbGFz
cyBUSW50ZXJtU3dpenpsZSA6IHB1YmxpYyBUSW50ZXJtVHlwZWQKK3sKKyAgcHVibGljOgorICAg
IC8vIFRoaXMgY29uc3RydWN0b3IgZGV0ZXJtaW5lcyB0aGUgdHlwZSBvZiB0aGUgbm9kZSBiYXNl
ZCBvbiB0aGUgb3BlcmFuZC4KKyAgICBUSW50ZXJtU3dpenpsZShUSW50ZXJtVHlwZWQgKm9wZXJh
bmQsIGNvbnN0IFRWZWN0b3I8aW50PiAmc3dpenpsZU9mZnNldHMpOworCisgICAgVEludGVybVR5
cGVkICpkZWVwQ29weSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG5ldyBUSW50ZXJtU3dpenps
ZSgqdGhpcyk7IH0KKworICAgIFRJbnRlcm1Td2l6emxlICpnZXRBc1N3aXp6bGVOb2RlKCkgb3Zl
cnJpZGUgeyByZXR1cm4gdGhpczsgfTsKKyAgICB2b2lkIHRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJz
ZXIgKml0KSBvdmVycmlkZTsKKyAgICBib29sIHJlcGxhY2VDaGlsZE5vZGUoVEludGVybU5vZGUg
Km9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpIG92ZXJyaWRlOworCisgICAgYm9v
bCBoYXNTaWRlRWZmZWN0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1PcGVyYW5kLT5oYXNT
aWRlRWZmZWN0cygpOyB9CisKKyAgICBUSW50ZXJtVHlwZWQgKmdldE9wZXJhbmQoKSB7IHJldHVy
biBtT3BlcmFuZDsgfQorICAgIHZvaWQgd3JpdGVPZmZzZXRzQXNYWVpXKFRJbmZvU2lua0Jhc2Ug
Km91dCkgY29uc3Q7CisKKyAgICBib29sIGhhc0R1cGxpY2F0ZU9mZnNldHMoKSBjb25zdDsKKwor
ICAgIFRJbnRlcm1UeXBlZCAqZm9sZCgpOworCisgIHByb3RlY3RlZDoKKyAgICBUSW50ZXJtVHlw
ZWQgKm1PcGVyYW5kOworICAgIFRWZWN0b3I8aW50PiBtU3dpenpsZU9mZnNldHM7CisKKyAgcHJp
dmF0ZToKKyAgICB2b2lkIHByb21vdGUoKTsKKworICAgIFRJbnRlcm1Td2l6emxlKGNvbnN0IFRJ
bnRlcm1Td2l6emxlICZub2RlKTsgIC8vIE5vdGU6IG5vdCBkZWxldGVkLCBqdXN0IHByaXZhdGUh
Cit9OworCiAvLwogLy8gTm9kZXMgZm9yIGFsbCB0aGUgYmFzaWMgYmluYXJ5IG1hdGggb3BlcmF0
b3JzLgogLy8KIGNsYXNzIFRJbnRlcm1CaW5hcnkgOiBwdWJsaWMgVEludGVybU9wZXJhdG9yCiB7
CiAgIHB1YmxpYzoKLSAgICBUSW50ZXJtQmluYXJ5KFRPcGVyYXRvciBvcCkKLSAgICAgICAgOiBU
SW50ZXJtT3BlcmF0b3Iob3ApLAotICAgICAgICAgIG1BZGRJbmRleENsYW1wKGZhbHNlKSB7fQor
ICAgIC8vIFRoaXMgY29uc3RydWN0b3IgZGV0ZXJtaW5lcyB0aGUgdHlwZSBvZiB0aGUgYmluYXJ5
IG5vZGUgYmFzZWQgb24gdGhlIG9wZXJhbmRzIGFuZCBvcC4KKyAgICBUSW50ZXJtQmluYXJ5KFRP
cGVyYXRvciBvcCwgVEludGVybVR5cGVkICpsZWZ0LCBUSW50ZXJtVHlwZWQgKnJpZ2h0KTsKIAog
ICAgIFRJbnRlcm1UeXBlZCAqZGVlcENvcHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBuZXcg
VEludGVybUJpbmFyeSgqdGhpcyk7IH0KIAorICAgIHN0YXRpYyBUT3BlcmF0b3IgR2V0TXVsT3BC
YXNlZE9uT3BlcmFuZHMoY29uc3QgVFR5cGUgJmxlZnQsIGNvbnN0IFRUeXBlICZyaWdodCk7Cisg
ICAgc3RhdGljIFRPcGVyYXRvciBHZXRNdWxBc3NpZ25PcEJhc2VkT25PcGVyYW5kcyhjb25zdCBU
VHlwZSAmbGVmdCwgY29uc3QgVFR5cGUgJnJpZ2h0KTsKKyAgICBzdGF0aWMgVFF1YWxpZmllciBH
ZXRDb21tYVF1YWxpZmllcihpbnQgc2hhZGVyVmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUSW50ZXJtVHlwZWQgKmxlZnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVEludGVybVR5cGVkICpyaWdodCk7
CisKICAgICBUSW50ZXJtQmluYXJ5ICpnZXRBc0JpbmFyeU5vZGUoKSBvdmVycmlkZSB7IHJldHVy
biB0aGlzOyB9OwogICAgIHZvaWQgdHJhdmVyc2UoVEludGVybVRyYXZlcnNlciAqaXQpIG92ZXJy
aWRlOwogICAgIGJvb2wgcmVwbGFjZUNoaWxkTm9kZShUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJ
bnRlcm1Ob2RlICpyZXBsYWNlbWVudCkgb3ZlcnJpZGU7CkBAIC00MTEsMTIgKzQ3NSw5IEBAIGNs
YXNzIFRJbnRlcm1CaW5hcnkgOiBwdWJsaWMgVEludGVybU9wZXIKICAgICAgICAgcmV0dXJuIGlz
QXNzaWdubWVudCgpIHx8IG1MZWZ0LT5oYXNTaWRlRWZmZWN0cygpIHx8IG1SaWdodC0+aGFzU2lk
ZUVmZmVjdHMoKTsKICAgICB9CiAKLSAgICB2b2lkIHNldExlZnQoVEludGVybVR5cGVkICpub2Rl
KSB7IG1MZWZ0ID0gbm9kZTsgfQotICAgIHZvaWQgc2V0UmlnaHQoVEludGVybVR5cGVkICpub2Rl
KSB7IG1SaWdodCA9IG5vZGU7IH0KICAgICBUSW50ZXJtVHlwZWQgKmdldExlZnQoKSBjb25zdCB7
IHJldHVybiBtTGVmdDsgfQogICAgIFRJbnRlcm1UeXBlZCAqZ2V0UmlnaHQoKSBjb25zdCB7IHJl
dHVybiBtUmlnaHQ7IH0KLSAgICBib29sIHByb21vdGUoVEluZm9TaW5rICYpOwotICAgIFRJbnRl
cm1UeXBlZCAqZm9sZChUSW5mb1NpbmsgJmluZm9TaW5rKTsKKyAgICBUSW50ZXJtVHlwZWQgKmZv
bGQoVERpYWdub3N0aWNzICpkaWFnbm9zdGljcyk7CiAKICAgICB2b2lkIHNldEFkZEluZGV4Q2xh
bXAoKSB7IG1BZGRJbmRleENsYW1wID0gdHJ1ZTsgfQogICAgIGJvb2wgZ2V0QWRkSW5kZXhDbGFt
cCgpIHsgcmV0dXJuIG1BZGRJbmRleENsYW1wOyB9CkBAIC00MjksNiArNDkwLDggQEAgY2xhc3Mg
VEludGVybUJpbmFyeSA6IHB1YmxpYyBUSW50ZXJtT3BlcgogICAgIGJvb2wgbUFkZEluZGV4Q2xh
bXA7CiAKICAgcHJpdmF0ZToKKyAgICB2b2lkIHByb21vdGUoKTsKKwogICAgIFRJbnRlcm1CaW5h
cnkoY29uc3QgVEludGVybUJpbmFyeSAmbm9kZSk7ICAvLyBOb3RlOiBub3QgZGVsZXRlZCwganVz
dCBwcml2YXRlIQogfTsKIApAQCAtNDM4LDE0ICs1MDEsNyBAQCBjbGFzcyBUSW50ZXJtQmluYXJ5
IDogcHVibGljIFRJbnRlcm1PcGVyCiBjbGFzcyBUSW50ZXJtVW5hcnkgOiBwdWJsaWMgVEludGVy
bU9wZXJhdG9yCiB7CiAgIHB1YmxpYzoKLSAgICBUSW50ZXJtVW5hcnkoVE9wZXJhdG9yIG9wLCBj
b25zdCBUVHlwZSAmdHlwZSkKLSAgICAgICAgOiBUSW50ZXJtT3BlcmF0b3Iob3AsIHR5cGUpLAot
ICAgICAgICAgIG1PcGVyYW5kKE5VTEwpLAotICAgICAgICAgIG1Vc2VFbXVsYXRlZEZ1bmN0aW9u
KGZhbHNlKSB7fQotICAgIFRJbnRlcm1VbmFyeShUT3BlcmF0b3Igb3ApCi0gICAgICAgIDogVElu
dGVybU9wZXJhdG9yKG9wKSwKLSAgICAgICAgICBtT3BlcmFuZChOVUxMKSwKLSAgICAgICAgICBt
VXNlRW11bGF0ZWRGdW5jdGlvbihmYWxzZSkge30KKyAgICBUSW50ZXJtVW5hcnkoVE9wZXJhdG9y
IG9wLCBUSW50ZXJtVHlwZWQgKm9wZXJhbmQpOwogCiAgICAgVEludGVybVR5cGVkICpkZWVwQ29w
eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG5ldyBUSW50ZXJtVW5hcnkoKnRoaXMpOyB9CiAK
QEAgLTQ1NSwxMCArNTExLDggQEAgY2xhc3MgVEludGVybVVuYXJ5IDogcHVibGljIFRJbnRlcm1P
cGVyYQogCiAgICAgYm9vbCBoYXNTaWRlRWZmZWN0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGlzQXNzaWdubWVudCgpIHx8IG1PcGVyYW5kLT5oYXNTaWRlRWZmZWN0cygpOyB9CiAKLSAgICB2
b2lkIHNldE9wZXJhbmQoVEludGVybVR5cGVkICpvcGVyYW5kKSB7IG1PcGVyYW5kID0gb3BlcmFu
ZDsgfQogICAgIFRJbnRlcm1UeXBlZCAqZ2V0T3BlcmFuZCgpIHsgcmV0dXJuIG1PcGVyYW5kOyB9
Ci0gICAgdm9pZCBwcm9tb3RlKGNvbnN0IFRUeXBlICpmdW5jUmV0dXJuVHlwZSk7Ci0gICAgVElu
dGVybVR5cGVkICpmb2xkKFRJbmZvU2luayAmaW5mb1NpbmspOworICAgIFRJbnRlcm1UeXBlZCAq
Zm9sZChURGlhZ25vc3RpY3MgKmRpYWdub3N0aWNzKTsKIAogICAgIHZvaWQgc2V0VXNlRW11bGF0
ZWRGdW5jdGlvbigpIHsgbVVzZUVtdWxhdGVkRnVuY3Rpb24gPSB0cnVlOyB9CiAgICAgYm9vbCBn
ZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkgeyByZXR1cm4gbVVzZUVtdWxhdGVkRnVuY3Rpb247IH0K
QEAgLTQ3MSwxNiArNTI1LDEwMiBAQCBjbGFzcyBUSW50ZXJtVW5hcnkgOiBwdWJsaWMgVEludGVy
bU9wZXJhCiAgICAgYm9vbCBtVXNlRW11bGF0ZWRGdW5jdGlvbjsKIAogICBwcml2YXRlOgorICAg
IHZvaWQgcHJvbW90ZSgpOworCiAgICAgVEludGVybVVuYXJ5KGNvbnN0IFRJbnRlcm1VbmFyeSAm
bm9kZSk7ICAvLyBub3RlOiBub3QgZGVsZXRlZCwganVzdCBwcml2YXRlIQogfTsKIAorY2xhc3Mg
VEZ1bmN0aW9uU3ltYm9sSW5mbworeworICBwdWJsaWM6CisgICAgUE9PTF9BTExPQ0FUT1JfTkVX
X0RFTEVURSgpOworICAgIFRGdW5jdGlvblN5bWJvbEluZm8oKSA6IG1JZCgwKSB7fQorCisgICAg
VEZ1bmN0aW9uU3ltYm9sSW5mbyhjb25zdCBURnVuY3Rpb25TeW1ib2xJbmZvICYpID0gZGVmYXVs
dDsKKyAgICBURnVuY3Rpb25TeW1ib2xJbmZvICZvcGVyYXRvcj0oY29uc3QgVEZ1bmN0aW9uU3lt
Ym9sSW5mbyAmKSA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIHNldEZyb21GdW5jdGlvbihjb25zdCBU
RnVuY3Rpb24gJmZ1bmN0aW9uKTsKKworICAgIHZvaWQgc2V0TmFtZU9iaihjb25zdCBUTmFtZSAm
bmFtZSkgeyBtTmFtZSA9IG5hbWU7IH0KKyAgICBjb25zdCBUTmFtZSAmZ2V0TmFtZU9iaigpIGNv
bnN0IHsgcmV0dXJuIG1OYW1lOyB9CisKKyAgICBjb25zdCBUU3RyaW5nICZnZXROYW1lKCkgY29u
c3QgeyByZXR1cm4gbU5hbWUuZ2V0U3RyaW5nKCk7IH0KKyAgICB2b2lkIHNldE5hbWUoY29uc3Qg
VFN0cmluZyAmbmFtZSkgeyBtTmFtZS5zZXRTdHJpbmcobmFtZSk7IH0KKyAgICBib29sIGlzTWFp
bigpIGNvbnN0IHsgcmV0dXJuIG1OYW1lLmdldFN0cmluZygpID09ICJtYWluKCI7IH0KKworICAg
IHZvaWQgc2V0SWQoaW50IGZ1bmN0aW9uSWQpIHsgbUlkID0gZnVuY3Rpb25JZDsgfQorICAgIGlu
dCBnZXRJZCgpIGNvbnN0IHsgcmV0dXJuIG1JZDsgfQorICBwcml2YXRlOgorICAgIFROYW1lIG1O
YW1lOworICAgIGludCBtSWQ7Cit9OworCisvLyBOb2RlIGZvciBmdW5jdGlvbiBkZWZpbml0aW9u
cy4KK2NsYXNzIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gOiBwdWJsaWMgVEludGVybVR5cGVk
Cit7CisgIHB1YmxpYzoKKyAgICAvLyBUT0RPKG9ldHVhaG9AbnZpZGlhLmNvbSk6IFNlZSBpZiBU
RnVuY3Rpb25TeW1ib2xJbmZvIGNvdWxkIGJlIGFkZGVkIHRvIGNvbnN0cnVjdG9yCisgICAgLy8g
cGFyYW1ldGVycy4KKyAgICBUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uKGNvbnN0IFRUeXBlICZ0
eXBlLCBUSW50ZXJtQWdncmVnYXRlICpwYXJhbWV0ZXJzLCBUSW50ZXJtQmxvY2sgKmJvZHkpCisg
ICAgICAgIDogVEludGVybVR5cGVkKHR5cGUpLCBtUGFyYW1ldGVycyhwYXJhbWV0ZXJzKSwgbUJv
ZHkoYm9keSkKKyAgICB7CisgICAgICAgIEFTU0VSVChwYXJhbWV0ZXJzICE9IG51bGxwdHIpOwor
ICAgICAgICBBU1NFUlQoYm9keSAhPSBudWxscHRyKTsKKyAgICB9CisKKyAgICBUSW50ZXJtRnVu
Y3Rpb25EZWZpbml0aW9uICpnZXRBc0Z1bmN0aW9uRGVmaW5pdGlvbigpIG92ZXJyaWRlIHsgcmV0
dXJuIHRoaXM7IH0KKyAgICB2b2lkIHRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIgKml0KSBvdmVy
cmlkZTsKKyAgICBib29sIHJlcGxhY2VDaGlsZE5vZGUoVEludGVybU5vZGUgKm9yaWdpbmFsLCBU
SW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpIG92ZXJyaWRlOworCisgICAgVEludGVybVR5cGVkICpk
ZWVwQ29weSgpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgYm9vbCBoYXNTaWRlRWZmZWN0cygp
IGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBUSW50ZXJtQWdncmVnYXRlICpnZXRGdW5jdGlvblBh
cmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtUGFyYW1ldGVyczsgfQorICAgIFRJbnRlcm1CbG9j
ayAqZ2V0Qm9keSgpIGNvbnN0IHsgcmV0dXJuIG1Cb2R5OyB9CisKKyAgICBURnVuY3Rpb25TeW1i
b2xJbmZvICpnZXRGdW5jdGlvblN5bWJvbEluZm8oKSB7IHJldHVybiAmbUZ1bmN0aW9uSW5mbzsg
fQorICAgIGNvbnN0IFRGdW5jdGlvblN5bWJvbEluZm8gKmdldEZ1bmN0aW9uU3ltYm9sSW5mbygp
IGNvbnN0IHsgcmV0dXJuICZtRnVuY3Rpb25JbmZvOyB9CisKKyAgcHJpdmF0ZToKKyAgICBUSW50
ZXJtQWdncmVnYXRlICptUGFyYW1ldGVyczsKKyAgICBUSW50ZXJtQmxvY2sgKm1Cb2R5OworCisg
ICAgVEZ1bmN0aW9uU3ltYm9sSW5mbyBtRnVuY3Rpb25JbmZvOworfTsKKwogdHlwZWRlZiBUVmVj
dG9yPFRJbnRlcm1Ob2RlICo+IFRJbnRlcm1TZXF1ZW5jZTsKIHR5cGVkZWYgVFZlY3RvcjxpbnQ+
IFRRdWFsaWZpZXJMaXN0OwogCisvLyBJbnRlcmZhY2UgZm9yIG5vZGUgY2xhc3NlcyB0aGF0IGhh
dmUgYW4gYXJiaXRyYXJpbHkgc2l6ZWQgc2V0IG9mIGNoaWxkcmVuLgorY2xhc3MgVEludGVybUFn
Z3JlZ2F0ZUJhc2UKK3sKKyAgcHVibGljOgorICAgIHZpcnR1YWwgflRJbnRlcm1BZ2dyZWdhdGVC
YXNlKCkge30KKworICAgIHZpcnR1YWwgVEludGVybVNlcXVlbmNlICpnZXRTZXF1ZW5jZSgpICAg
ICAgICAgICAgID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IFRJbnRlcm1TZXF1ZW5jZSAqZ2V0U2Vx
dWVuY2UoKSBjb25zdCA9IDA7CisKKyAgICBib29sIHJlcGxhY2VDaGlsZE5vZGVXaXRoTXVsdGlw
bGUoVEludGVybU5vZGUgKm9yaWdpbmFsLCBjb25zdCBUSW50ZXJtU2VxdWVuY2UgJnJlcGxhY2Vt
ZW50cyk7CisgICAgYm9vbCBpbnNlcnRDaGlsZE5vZGVzKFRJbnRlcm1TZXF1ZW5jZTo6c2l6ZV90
eXBlIHBvc2l0aW9uLCBjb25zdCBUSW50ZXJtU2VxdWVuY2UgJmluc2VydGlvbnMpOworCisgIHBy
b3RlY3RlZDoKKyAgICBUSW50ZXJtQWdncmVnYXRlQmFzZSgpIHt9CisKKyAgICBib29sIHJlcGxh
Y2VDaGlsZE5vZGVJbnRlcm5hbChUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpy
ZXBsYWNlbWVudCk7Cit9OworCiAvLwogLy8gTm9kZXMgdGhhdCBvcGVyYXRlIG9uIGFuIGFyYml0
cmFyeSBzaXplZCBzZXQgb2YgY2hpbGRyZW4uCiAvLwotY2xhc3MgVEludGVybUFnZ3JlZ2F0ZSA6
IHB1YmxpYyBUSW50ZXJtT3BlcmF0b3IKK2NsYXNzIFRJbnRlcm1BZ2dyZWdhdGUgOiBwdWJsaWMg
VEludGVybU9wZXJhdG9yLCBwdWJsaWMgVEludGVybUFnZ3JlZ2F0ZUJhc2UKIHsKICAgcHVibGlj
OgogICAgIFRJbnRlcm1BZ2dyZWdhdGUoKQpAQCAtNDkyLDYgKzYzMiw3IEBAIGNsYXNzIFRJbnRl
cm1BZ2dyZWdhdGUgOiBwdWJsaWMgVEludGVybU8KICAgICB9CiAgICAgVEludGVybUFnZ3JlZ2F0
ZShUT3BlcmF0b3Igb3ApCiAgICAgICAgIDogVEludGVybU9wZXJhdG9yKG9wKSwKKyAgICAgICAg
ICBtVXNlckRlZmluZWQoZmFsc2UpLAogICAgICAgICAgIG1Vc2VFbXVsYXRlZEZ1bmN0aW9uKGZh
bHNlKSwKICAgICAgICAgICBtR290UHJlY2lzaW9uRnJvbUNoaWxkcmVuKGZhbHNlKQogICAgIHsK
QEAgLTUwMSwyOSArNjQyLDIyIEBAIGNsYXNzIFRJbnRlcm1BZ2dyZWdhdGUgOiBwdWJsaWMgVElu
dGVybU8KICAgICAvLyBOb3RlOiBvbmx5IHN1cHBvcnRlZCBmb3Igbm9kZXMgdGhhdCBjYW4gYmUg
YSBwYXJ0IG9mIGFuIGV4cHJlc3Npb24uCiAgICAgVEludGVybVR5cGVkICpkZWVwQ29weSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG5ldyBUSW50ZXJtQWdncmVnYXRlKCp0aGlzKTsgfQogCisg
ICAgdm9pZCBzZXRPcChUT3BlcmF0b3Igb3ApIHsgbU9wID0gb3A7IH0KKwogICAgIFRJbnRlcm1B
Z2dyZWdhdGUgKmdldEFzQWdncmVnYXRlKCkgb3ZlcnJpZGUgeyByZXR1cm4gdGhpczsgfQogICAg
IHZvaWQgdHJhdmVyc2UoVEludGVybVRyYXZlcnNlciAqaXQpIG92ZXJyaWRlOwogICAgIGJvb2wg
cmVwbGFjZUNoaWxkTm9kZShUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBs
YWNlbWVudCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZXBsYWNlQ2hpbGROb2RlV2l0aE11bHRpcGxl
KFRJbnRlcm1Ob2RlICpvcmlnaW5hbCwgVEludGVybVNlcXVlbmNlIHJlcGxhY2VtZW50cyk7Ci0g
ICAgYm9vbCBpbnNlcnRDaGlsZE5vZGVzKFRJbnRlcm1TZXF1ZW5jZTo6c2l6ZV90eXBlIHBvc2l0
aW9uLCBUSW50ZXJtU2VxdWVuY2UgaW5zZXJ0aW9ucyk7CisKICAgICAvLyBDb25zZXJ2YXRpdmVs
eSBhc3N1bWUgZnVuY3Rpb24gY2FsbHMgYW5kIG90aGVyIGFnZ3JlZ2F0ZSBvcGVyYXRvcnMgaGF2
ZSBzaWRlLWVmZmVjdHMKICAgICBib29sIGhhc1NpZGVFZmZlY3RzKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQotICAgIFRJbnRlcm1UeXBlZCAqZm9sZChUSW5mb1NpbmsgJmluZm9T
aW5rKTsKLQotICAgIFRJbnRlcm1TZXF1ZW5jZSAqZ2V0U2VxdWVuY2UoKSB7IHJldHVybiAmbVNl
cXVlbmNlOyB9Ci0KLSAgICB2b2lkIHNldE5hbWVPYmooY29uc3QgVE5hbWUgJm5hbWUpIHsgbU5h
bWUgPSBuYW1lOyB9Ci0gICAgY29uc3QgVE5hbWUgJmdldE5hbWVPYmooKSBjb25zdCB7IHJldHVy
biBtTmFtZTsgfQorICAgIFRJbnRlcm1UeXBlZCAqZm9sZChURGlhZ25vc3RpY3MgKmRpYWdub3N0
aWNzKTsKIAotICAgIHZvaWQgc2V0TmFtZShjb25zdCBUU3RyaW5nICZuYW1lKSB7IG1OYW1lLnNl
dFN0cmluZyhuYW1lKTsgfQotICAgIGNvbnN0IFRTdHJpbmcgJmdldE5hbWUoKSBjb25zdCB7IHJl
dHVybiBtTmFtZS5nZXRTdHJpbmcoKTsgfQorICAgIFRJbnRlcm1TZXF1ZW5jZSAqZ2V0U2VxdWVu
Y2UoKSBvdmVycmlkZSB7IHJldHVybiAmbVNlcXVlbmNlOyB9CisgICAgY29uc3QgVEludGVybVNl
cXVlbmNlICpnZXRTZXF1ZW5jZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICZtU2VxdWVuY2U7
IH0KIAogICAgIHZvaWQgc2V0VXNlckRlZmluZWQoKSB7IG1Vc2VyRGVmaW5lZCA9IHRydWU7IH0K
ICAgICBib29sIGlzVXNlckRlZmluZWQoKSBjb25zdCB7IHJldHVybiBtVXNlckRlZmluZWQ7IH0K
IAotICAgIHZvaWQgc2V0RnVuY3Rpb25JZChpbnQgZnVuY3Rpb25JZCkgeyBtRnVuY3Rpb25JZCA9
IGZ1bmN0aW9uSWQ7IH0KLSAgICBpbnQgZ2V0RnVuY3Rpb25JZCgpIGNvbnN0IHsgcmV0dXJuIG1G
dW5jdGlvbklkOyB9Ci0KICAgICB2b2lkIHNldFVzZUVtdWxhdGVkRnVuY3Rpb24oKSB7IG1Vc2VF
bXVsYXRlZEZ1bmN0aW9uID0gdHJ1ZTsgfQogICAgIGJvb2wgZ2V0VXNlRW11bGF0ZWRGdW5jdGlv
bigpIHsgcmV0dXJuIG1Vc2VFbXVsYXRlZEZ1bmN0aW9uOyB9CiAKQEAgLTUzNCwxMSArNjY4LDEy
IEBAIGNsYXNzIFRJbnRlcm1BZ2dyZWdhdGUgOiBwdWJsaWMgVEludGVybU8KICAgICAvLyBSZXR1
cm5zIHRydWUgaWYgY2hhbmdpbmcgcGFyYW1ldGVyIHByZWNpc2lvbiBtYXkgYWZmZWN0IHRoZSBy
ZXR1cm4gdmFsdWUuCiAgICAgYm9vbCBnb3RQcmVjaXNpb25Gcm9tQ2hpbGRyZW4oKSBjb25zdCB7
IHJldHVybiBtR290UHJlY2lzaW9uRnJvbUNoaWxkcmVuOyB9CiAKKyAgICBURnVuY3Rpb25TeW1i
b2xJbmZvICpnZXRGdW5jdGlvblN5bWJvbEluZm8oKSB7IHJldHVybiAmbUZ1bmN0aW9uSW5mbzsg
fQorICAgIGNvbnN0IFRGdW5jdGlvblN5bWJvbEluZm8gKmdldEZ1bmN0aW9uU3ltYm9sSW5mbygp
IGNvbnN0IHsgcmV0dXJuICZtRnVuY3Rpb25JbmZvOyB9CisKICAgcHJvdGVjdGVkOgogICAgIFRJ
bnRlcm1TZXF1ZW5jZSBtU2VxdWVuY2U7Ci0gICAgVE5hbWUgbU5hbWU7CiAgICAgYm9vbCBtVXNl
ckRlZmluZWQ7IC8vIHVzZWQgZm9yIHVzZXIgZGVmaW5lZCBmdW5jdGlvbiBuYW1lcwotICAgIGlu
dCBtRnVuY3Rpb25JZDsKIAogICAgIC8vIElmIHNldCB0byB0cnVlLCByZXBsYWNlIHRoZSBidWls
dC1pbiBmdW5jdGlvbiBjYWxsIHdpdGggYW4gZW11bGF0ZWQgb25lCiAgICAgLy8gdG8gd29yayBh
cm91bmQgZHJpdmVyIGJ1Z3MuCkBAIC01NDYsNTAgKzY4MSw4OCBAQCBjbGFzcyBUSW50ZXJtQWdn
cmVnYXRlIDogcHVibGljIFRJbnRlcm1PCiAKICAgICBib29sIG1Hb3RQcmVjaXNpb25Gcm9tQ2hp
bGRyZW47CiAKKyAgICBURnVuY3Rpb25TeW1ib2xJbmZvIG1GdW5jdGlvbkluZm87CisKICAgcHJp
dmF0ZToKICAgICBUSW50ZXJtQWdncmVnYXRlKGNvbnN0IFRJbnRlcm1BZ2dyZWdhdGUgJm5vZGUp
OyAgLy8gbm90ZTogbm90IGRlbGV0ZWQsIGp1c3QgcHJpdmF0ZSEKIH07CiAKLS8vCi0vLyBGb3Ig
aWYgdGVzdHMuCi0vLwotY2xhc3MgVEludGVybVNlbGVjdGlvbiA6IHB1YmxpYyBUSW50ZXJtVHlw
ZWQKKy8vIEEgbGlzdCBvZiBzdGF0ZW1lbnRzLiBFaXRoZXIgdGhlIHJvb3Qgbm9kZSB3aGljaCBj
b250YWlucyBkZWNsYXJhdGlvbnMgYW5kIGZ1bmN0aW9uIGRlZmluaXRpb25zLAorLy8gb3IgYSBi
bG9jayB0aGF0IGNhbiBiZSBtYXJrZWQgd2l0aCBjdXJseSBicmFjZXMge30uCitjbGFzcyBUSW50
ZXJtQmxvY2sgOiBwdWJsaWMgVEludGVybU5vZGUsIHB1YmxpYyBUSW50ZXJtQWdncmVnYXRlQmFz
ZQogewogICBwdWJsaWM6Ci0gICAgVEludGVybVNlbGVjdGlvbihUSW50ZXJtVHlwZWQgKmNvbmQs
IFRJbnRlcm1Ob2RlICp0cnVlQiwgVEludGVybU5vZGUgKmZhbHNlQikKLSAgICAgICAgOiBUSW50
ZXJtVHlwZWQoVFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKSksCi0gICAgICAgICAgbUNvbmRp
dGlvbihjb25kKSwKLSAgICAgICAgICBtVHJ1ZUJsb2NrKHRydWVCKSwKLSAgICAgICAgICBtRmFs
c2VCbG9jayhmYWxzZUIpIHt9Ci0gICAgVEludGVybVNlbGVjdGlvbihUSW50ZXJtVHlwZWQgKmNv
bmQsIFRJbnRlcm1Ob2RlICp0cnVlQiwgVEludGVybU5vZGUgKmZhbHNlQiwKLSAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlKQotICAgICAgICA6IFRJbnRlcm1UeXBlZCh0eXBl
KSwKLSAgICAgICAgICBtQ29uZGl0aW9uKGNvbmQpLAotICAgICAgICAgIG1UcnVlQmxvY2sodHJ1
ZUIpLAotICAgICAgICAgIG1GYWxzZUJsb2NrKGZhbHNlQikge30KLQotICAgIC8vIE5vdGU6IG9u
bHkgc3VwcG9ydGVkIGZvciB0ZXJuYXJ5IG9wZXJhdG9yIG5vZGVzLgotICAgIFRJbnRlcm1UeXBl
ZCAqZGVlcENvcHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBuZXcgVEludGVybVNlbGVjdGlv
bigqdGhpcyk7IH0KKyAgICBUSW50ZXJtQmxvY2soKSA6IFRJbnRlcm1Ob2RlKCkge30KKyAgICB+
VEludGVybUJsb2NrKCkge30KIAorICAgIFRJbnRlcm1CbG9jayAqZ2V0QXNCbG9jaygpIG92ZXJy
aWRlIHsgcmV0dXJuIHRoaXM7IH0KICAgICB2b2lkIHRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIg
Kml0KSBvdmVycmlkZTsKICAgICBib29sIHJlcGxhY2VDaGlsZE5vZGUoVEludGVybU5vZGUgKm9y
aWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpIG92ZXJyaWRlOwogCi0gICAgLy8gQ29u
c2VydmF0aXZlbHkgYXNzdW1lIHNlbGVjdGlvbnMgaGF2ZSBzaWRlLWVmZmVjdHMKLSAgICBib29s
IGhhc1NpZGVFZmZlY3RzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIC8v
IE9ubHkgaW50ZW5kZWQgZm9yIGluaXRpYWxseSBidWlsZGluZyB0aGUgYmxvY2suCisgICAgdm9p
ZCBhcHBlbmRTdGF0ZW1lbnQoVEludGVybU5vZGUgKnN0YXRlbWVudCk7CiAKLSAgICBib29sIHVz
ZXNUZXJuYXJ5T3BlcmF0b3IoKSBjb25zdCB7IHJldHVybiBnZXRCYXNpY1R5cGUoKSAhPSBFYnRW
b2lkOyB9Ci0gICAgVEludGVybU5vZGUgKmdldENvbmRpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1D
b25kaXRpb247IH0KLSAgICBUSW50ZXJtTm9kZSAqZ2V0VHJ1ZUJsb2NrKCkgY29uc3QgeyByZXR1
cm4gbVRydWVCbG9jazsgfQotICAgIFRJbnRlcm1Ob2RlICpnZXRGYWxzZUJsb2NrKCkgY29uc3Qg
eyByZXR1cm4gbUZhbHNlQmxvY2s7IH0KLSAgICBUSW50ZXJtU2VsZWN0aW9uICpnZXRBc1NlbGVj
dGlvbk5vZGUoKSBvdmVycmlkZSB7IHJldHVybiB0aGlzOyB9CisgICAgVEludGVybVNlcXVlbmNl
ICpnZXRTZXF1ZW5jZSgpIG92ZXJyaWRlIHsgcmV0dXJuICZtU3RhdGVtZW50czsgfQorICAgIGNv
bnN0IFRJbnRlcm1TZXF1ZW5jZSAqZ2V0U2VxdWVuY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAmbVN0YXRlbWVudHM7IH0KIAogICBwcm90ZWN0ZWQ6Ci0gICAgVEludGVybVR5cGVkICptQ29u
ZGl0aW9uOwotICAgIFRJbnRlcm1Ob2RlICptVHJ1ZUJsb2NrOwotICAgIFRJbnRlcm1Ob2RlICpt
RmFsc2VCbG9jazsKKyAgICBUSW50ZXJtU2VxdWVuY2UgbVN0YXRlbWVudHM7Cit9OworCisvLyBG
b3IgdGVybmFyeSBvcGVyYXRvcnMgbGlrZSBhID8gYiA6IGMuCitjbGFzcyBUSW50ZXJtVGVybmFy
eSA6IHB1YmxpYyBUSW50ZXJtVHlwZWQKK3sKKyAgcHVibGljOgorICAgIFRJbnRlcm1UZXJuYXJ5
KFRJbnRlcm1UeXBlZCAqY29uZCwgVEludGVybVR5cGVkICp0cnVlRXhwcmVzc2lvbiwgVEludGVy
bVR5cGVkICpmYWxzZUV4cHJlc3Npb24pOworCisgICAgdm9pZCB0cmF2ZXJzZShUSW50ZXJtVHJh
dmVyc2VyICppdCkgb3ZlcnJpZGU7CisgICAgYm9vbCByZXBsYWNlQ2hpbGROb2RlKFRJbnRlcm1O
b2RlICpvcmlnaW5hbCwgVEludGVybU5vZGUgKnJlcGxhY2VtZW50KSBvdmVycmlkZTsKKworICAg
IFRJbnRlcm1UeXBlZCAqZ2V0Q29uZGl0aW9uKCkgY29uc3QgeyByZXR1cm4gbUNvbmRpdGlvbjsg
fQorICAgIFRJbnRlcm1UeXBlZCAqZ2V0VHJ1ZUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBt
VHJ1ZUV4cHJlc3Npb247IH0KKyAgICBUSW50ZXJtVHlwZWQgKmdldEZhbHNlRXhwcmVzc2lvbigp
IGNvbnN0IHsgcmV0dXJuIG1GYWxzZUV4cHJlc3Npb247IH0KKyAgICBUSW50ZXJtVGVybmFyeSAq
Z2V0QXNUZXJuYXJ5Tm9kZSgpIG92ZXJyaWRlIHsgcmV0dXJuIHRoaXM7IH0KKworICAgIFRJbnRl
cm1UeXBlZCAqZGVlcENvcHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBuZXcgVEludGVybVRl
cm5hcnkoKnRoaXMpOyB9CisKKyAgICBib29sIGhhc1NpZGVFZmZlY3RzKCkgY29uc3Qgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIHJldHVybiBtQ29uZGl0aW9uLT5oYXNTaWRlRWZmZWN0cygpIHx8
IG1UcnVlRXhwcmVzc2lvbi0+aGFzU2lkZUVmZmVjdHMoKSB8fAorICAgICAgICAgICAgICAgbUZh
bHNlRXhwcmVzc2lvbi0+aGFzU2lkZUVmZmVjdHMoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgVFF1
YWxpZmllciBEZXRlcm1pbmVRdWFsaWZpZXIoVEludGVybVR5cGVkICpjb25kLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnRydWVFeHByZXNz
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlw
ZWQgKmZhbHNlRXhwcmVzc2lvbik7CiAKICAgcHJpdmF0ZToKLSAgICBUSW50ZXJtU2VsZWN0aW9u
KGNvbnN0IFRJbnRlcm1TZWxlY3Rpb24gJm5vZGUpOyAgLy8gTm90ZTogbm90IGRlbGV0ZWQsIGp1
c3QgcHJpdmF0ZSEKKyAgICBUSW50ZXJtVGVybmFyeShjb25zdCBUSW50ZXJtVGVybmFyeSAmbm9k
ZSk7ICAvLyBOb3RlOiBub3QgZGVsZXRlZCwganVzdCBwcml2YXRlIQorCisgICAgVEludGVybVR5
cGVkICptQ29uZGl0aW9uOworICAgIFRJbnRlcm1UeXBlZCAqbVRydWVFeHByZXNzaW9uOworICAg
IFRJbnRlcm1UeXBlZCAqbUZhbHNlRXhwcmVzc2lvbjsKK307CisKK2NsYXNzIFRJbnRlcm1JZkVs
c2UgOiBwdWJsaWMgVEludGVybU5vZGUKK3sKKyAgcHVibGljOgorICAgIFRJbnRlcm1JZkVsc2Uo
VEludGVybVR5cGVkICpjb25kLCBUSW50ZXJtQmxvY2sgKnRydWVCLCBUSW50ZXJtQmxvY2sgKmZh
bHNlQikKKyAgICAgICAgOiBUSW50ZXJtTm9kZSgpLCBtQ29uZGl0aW9uKGNvbmQpLCBtVHJ1ZUJs
b2NrKHRydWVCKSwgbUZhbHNlQmxvY2soZmFsc2VCKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lk
IHRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIgKml0KSBvdmVycmlkZTsKKyAgICBib29sIHJlcGxh
Y2VDaGlsZE5vZGUoVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1l
bnQpIG92ZXJyaWRlOworCisgICAgVEludGVybVR5cGVkICpnZXRDb25kaXRpb24oKSBjb25zdCB7
IHJldHVybiBtQ29uZGl0aW9uOyB9CisgICAgVEludGVybUJsb2NrICpnZXRUcnVlQmxvY2soKSBj
b25zdCB7IHJldHVybiBtVHJ1ZUJsb2NrOyB9CisgICAgVEludGVybUJsb2NrICpnZXRGYWxzZUJs
b2NrKCkgY29uc3QgeyByZXR1cm4gbUZhbHNlQmxvY2s7IH0KKyAgICBUSW50ZXJtSWZFbHNlICpn
ZXRBc0lmRWxzZU5vZGUoKSBvdmVycmlkZSB7IHJldHVybiB0aGlzOyB9CisKKyAgcHJvdGVjdGVk
OgorICAgIFRJbnRlcm1UeXBlZCAqbUNvbmRpdGlvbjsKKyAgICBUSW50ZXJtQmxvY2sgKm1UcnVl
QmxvY2s7CisgICAgVEludGVybUJsb2NrICptRmFsc2VCbG9jazsKIH07CiAKIC8vCkBAIC01OTgs
MTAgKzc3MSw4IEBAIGNsYXNzIFRJbnRlcm1TZWxlY3Rpb24gOiBwdWJsaWMgVEludGVybVQKIGNs
YXNzIFRJbnRlcm1Td2l0Y2ggOiBwdWJsaWMgVEludGVybU5vZGUKIHsKICAgcHVibGljOgotICAg
IFRJbnRlcm1Td2l0Y2goVEludGVybVR5cGVkICppbml0LCBUSW50ZXJtQWdncmVnYXRlICpzdGF0
ZW1lbnRMaXN0KQotICAgICAgICA6IFRJbnRlcm1Ob2RlKCksCi0gICAgICAgICAgbUluaXQoaW5p
dCksCi0gICAgICAgICAgbVN0YXRlbWVudExpc3Qoc3RhdGVtZW50TGlzdCkKKyAgICBUSW50ZXJt
U3dpdGNoKFRJbnRlcm1UeXBlZCAqaW5pdCwgVEludGVybUJsb2NrICpzdGF0ZW1lbnRMaXN0KQor
ICAgICAgICA6IFRJbnRlcm1Ob2RlKCksIG1Jbml0KGluaXQpLCBtU3RhdGVtZW50TGlzdChzdGF0
ZW1lbnRMaXN0KQogICAgIHsKICAgICB9CiAKQEAgLTYxMiwxMiArNzgzLDEyIEBAIGNsYXNzIFRJ
bnRlcm1Td2l0Y2ggOiBwdWJsaWMgVEludGVybU5vZGUKICAgICBUSW50ZXJtU3dpdGNoICpnZXRB
c1N3aXRjaE5vZGUoKSBvdmVycmlkZSB7IHJldHVybiB0aGlzOyB9CiAKICAgICBUSW50ZXJtVHlw
ZWQgKmdldEluaXQoKSB7IHJldHVybiBtSW5pdDsgfQotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmdl
dFN0YXRlbWVudExpc3QoKSB7IHJldHVybiBtU3RhdGVtZW50TGlzdDsgfQotICAgIHZvaWQgc2V0
U3RhdGVtZW50TGlzdChUSW50ZXJtQWdncmVnYXRlICpzdGF0ZW1lbnRMaXN0KSB7IG1TdGF0ZW1l
bnRMaXN0ID0gc3RhdGVtZW50TGlzdDsgfQorICAgIFRJbnRlcm1CbG9jayAqZ2V0U3RhdGVtZW50
TGlzdCgpIHsgcmV0dXJuIG1TdGF0ZW1lbnRMaXN0OyB9CisgICAgdm9pZCBzZXRTdGF0ZW1lbnRM
aXN0KFRJbnRlcm1CbG9jayAqc3RhdGVtZW50TGlzdCkgeyBtU3RhdGVtZW50TGlzdCA9IHN0YXRl
bWVudExpc3Q7IH0KIAogICBwcm90ZWN0ZWQ6CiAgICAgVEludGVybVR5cGVkICptSW5pdDsKLSAg
ICBUSW50ZXJtQWdncmVnYXRlICptU3RhdGVtZW50TGlzdDsKKyAgICBUSW50ZXJtQmxvY2sgKm1T
dGF0ZW1lbnRMaXN0OwogfTsKIAogLy8KQEAgLTY2NywyNiArODM4LDI1IEBAIGNsYXNzIFRJbnRl
cm1UcmF2ZXJzZXIgOiBhbmdsZTo6Tm9uQ29weWEKIHsKICAgcHVibGljOgogICAgIFBPT0xfQUxM
T0NBVE9SX05FV19ERUxFVEUoKTsKLSAgICBUSW50ZXJtVHJhdmVyc2VyKGJvb2wgcHJlVmlzaXQs
IGJvb2wgaW5WaXNpdCwgYm9vbCBwb3N0VmlzaXQpCi0gICAgICAgIDogcHJlVmlzaXQocHJlVmlz
aXQpLAotICAgICAgICAgIGluVmlzaXQoaW5WaXNpdCksCi0gICAgICAgICAgcG9zdFZpc2l0KHBv
c3RWaXNpdCksCi0gICAgICAgICAgbURlcHRoKDApLAotICAgICAgICAgIG1NYXhEZXB0aCgwKSwK
LSAgICAgICAgICBtVGVtcG9yYXJ5SW5kZXgobnVsbHB0cikKLSAgICB7Ci0gICAgfQotICAgIHZp
cnR1YWwgflRJbnRlcm1UcmF2ZXJzZXIoKSB7fQorICAgIFRJbnRlcm1UcmF2ZXJzZXIoYm9vbCBw
cmVWaXNpdCwgYm9vbCBpblZpc2l0LCBib29sIHBvc3RWaXNpdCk7CisgICAgdmlydHVhbCB+VElu
dGVybVRyYXZlcnNlcigpOwogCiAgICAgdmlydHVhbCB2b2lkIHZpc2l0U3ltYm9sKFRJbnRlcm1T
eW1ib2wgKm5vZGUpIHt9CiAgICAgdmlydHVhbCB2b2lkIHZpc2l0UmF3KFRJbnRlcm1SYXcgKm5v
ZGUpIHt9CiAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q29uc3RhbnRVbmlvbihUSW50ZXJtQ29uc3Rh
bnRVbmlvbiAqbm9kZSkge30KKyAgICB2aXJ0dWFsIGJvb2wgdmlzaXRTd2l6emxlKFZpc2l0IHZp
c2l0LCBUSW50ZXJtU3dpenpsZSAqbm9kZSkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwg
Ym9vbCB2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCB2aXNpdFVuYXJ5KFZpc2l0IHZpc2l0LCBUSW50
ZXJtVW5hcnkgKm5vZGUpIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRT
ZWxlY3Rpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1TZWxlY3Rpb24gKm5vZGUpIHsgcmV0dXJuIHRy
dWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgdmlzaXRUZXJuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJt
VGVybmFyeSAqbm9kZSkgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCB2aXNpdElm
RWxzZShWaXNpdCB2aXNpdCwgVEludGVybUlmRWxzZSAqbm9kZSkgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCB2aXNpdFN3aXRjaChWaXNpdCB2aXNpdCwgVEludGVybVN3aXRjaCAq
bm9kZSkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCB2aXNpdENhc2UoVmlzaXQg
dmlzaXQsIFRJbnRlcm1DYXNlICpub2RlKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBi
b29sIHZpc2l0RnVuY3Rpb25EZWZpbml0aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtRnVuY3Rpb25E
ZWZpbml0aW9uICpub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogICAg
IHZpcnR1YWwgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0
ZSAqbm9kZSkgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCB2aXNpdEJsb2NrKFZp
c2l0IHZpc2l0LCBUSW50ZXJtQmxvY2sgKm5vZGUpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0
dWFsIGJvb2wgdmlzaXRMb29wKFZpc2l0IHZpc2l0LCBUSW50ZXJtTG9vcCAqbm9kZSkgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCB2aXNpdEJyYW5jaChWaXNpdCB2aXNpdCwgVElu
dGVybUJyYW5jaCAqbm9kZSkgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC02OTYsMTIgKzg2NiwxNiBA
QCBjbGFzcyBUSW50ZXJtVHJhdmVyc2VyIDogYW5nbGU6Ok5vbkNvcHlhCiAgICAgdmlydHVhbCB2
b2lkIHRyYXZlcnNlU3ltYm9sKFRJbnRlcm1TeW1ib2wgKm5vZGUpOwogICAgIHZpcnR1YWwgdm9p
ZCB0cmF2ZXJzZVJhdyhUSW50ZXJtUmF3ICpub2RlKTsKICAgICB2aXJ0dWFsIHZvaWQgdHJhdmVy
c2VDb25zdGFudFVuaW9uKFRJbnRlcm1Db25zdGFudFVuaW9uICpub2RlKTsKKyAgICB2aXJ0dWFs
IHZvaWQgdHJhdmVyc2VTd2l6emxlKFRJbnRlcm1Td2l6emxlICpub2RlKTsKICAgICB2aXJ0dWFs
IHZvaWQgdHJhdmVyc2VCaW5hcnkoVEludGVybUJpbmFyeSAqbm9kZSk7CiAgICAgdmlydHVhbCB2
b2lkIHRyYXZlcnNlVW5hcnkoVEludGVybVVuYXJ5ICpub2RlKTsKLSAgICB2aXJ0dWFsIHZvaWQg
dHJhdmVyc2VTZWxlY3Rpb24oVEludGVybVNlbGVjdGlvbiAqbm9kZSk7CisgICAgdmlydHVhbCB2
b2lkIHRyYXZlcnNlVGVybmFyeShUSW50ZXJtVGVybmFyeSAqbm9kZSk7CisgICAgdmlydHVhbCB2
b2lkIHRyYXZlcnNlSWZFbHNlKFRJbnRlcm1JZkVsc2UgKm5vZGUpOwogICAgIHZpcnR1YWwgdm9p
ZCB0cmF2ZXJzZVN3aXRjaChUSW50ZXJtU3dpdGNoICpub2RlKTsKICAgICB2aXJ0dWFsIHZvaWQg
dHJhdmVyc2VDYXNlKFRJbnRlcm1DYXNlICpub2RlKTsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhdmVy
c2VGdW5jdGlvbkRlZmluaXRpb24oVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAqbm9kZSk7CiAg
ICAgdmlydHVhbCB2b2lkIHRyYXZlcnNlQWdncmVnYXRlKFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUp
OworICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZUJsb2NrKFRJbnRlcm1CbG9jayAqbm9kZSk7CiAg
ICAgdmlydHVhbCB2b2lkIHRyYXZlcnNlTG9vcChUSW50ZXJtTG9vcCAqbm9kZSk7CiAgICAgdmly
dHVhbCB2b2lkIHRyYXZlcnNlQnJhbmNoKFRJbnRlcm1CcmFuY2ggKm5vZGUpOwogCkBAIC03NDgs
NyArOTIyLDcgQEAgY2xhc3MgVEludGVybVRyYXZlcnNlciA6IGFuZ2xlOjpOb25Db3B5YQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICB2b2lkIHB1c2hQYXJlbnRCbG9jayhU
SW50ZXJtQWdncmVnYXRlICpub2RlKTsKKyAgICB2b2lkIHB1c2hQYXJlbnRCbG9jayhUSW50ZXJt
QmxvY2sgKm5vZGUpOwogICAgIHZvaWQgaW5jcmVtZW50UGFyZW50QmxvY2tQb3MoKTsKICAgICB2
b2lkIHBvcFBhcmVudEJsb2NrKCk7CiAKQEAgLTc1Nyw0NSArOTMxLDE3IEBAIGNsYXNzIFRJbnRl
cm1UcmF2ZXJzZXIgOiBhbmdsZTo6Tm9uQ29weWEKICAgICAgICAgcmV0dXJuICFtUGFyZW50Qmxv
Y2tTdGFjay5lbXB0eSgpICYmIGdldFBhcmVudE5vZGUoKSA9PSBtUGFyZW50QmxvY2tTdGFjay5i
YWNrKCkubm9kZTsKICAgICB9CiAKLSAgICBjb25zdCBib29sIHByZVZpc2l0OwotICAgIGNvbnN0
IGJvb2wgaW5WaXNpdDsKLSAgICBjb25zdCBib29sIHBvc3RWaXNpdDsKLQotICAgIGludCBtRGVw
dGg7Ci0gICAgaW50IG1NYXhEZXB0aDsKLQotICAgIC8vIEFsbCB0aGUgbm9kZXMgZnJvbSByb290
IHRvIHRoZSBjdXJyZW50IG5vZGUncyBwYXJlbnQgZHVyaW5nIHRyYXZlcnNpbmcuCi0gICAgVFZl
Y3RvcjxUSW50ZXJtTm9kZSAqPiBtUGF0aDsKLQotICAgIC8vIFRvIHJlcGxhY2UgYSBzaW5nbGUg
bm9kZSB3aXRoIGFub3RoZXIgb24gdGhlIHBhcmVudCBub2RlCi0gICAgc3RydWN0IE5vZGVVcGRh
dGVFbnRyeQotICAgIHsKLSAgICAgICAgTm9kZVVwZGF0ZUVudHJ5KFRJbnRlcm1Ob2RlICpfcGFy
ZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybU5vZGUgKl9vcmlnaW5hbCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICpfcmVwbGFjZW1lbnQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBib29sIF9vcmlnaW5hbEJlY29tZXNDaGlsZE9mUmVwbGFjZW1lbnQp
Ci0gICAgICAgICAgICA6IHBhcmVudChfcGFyZW50KSwKLSAgICAgICAgICAgICAgb3JpZ2luYWwo
X29yaWdpbmFsKSwKLSAgICAgICAgICAgICAgcmVwbGFjZW1lbnQoX3JlcGxhY2VtZW50KSwKLSAg
ICAgICAgICAgICAgb3JpZ2luYWxCZWNvbWVzQ2hpbGRPZlJlcGxhY2VtZW50KF9vcmlnaW5hbEJl
Y29tZXNDaGlsZE9mUmVwbGFjZW1lbnQpIHt9Ci0KLSAgICAgICAgVEludGVybU5vZGUgKnBhcmVu
dDsKLSAgICAgICAgVEludGVybU5vZGUgKm9yaWdpbmFsOwotICAgICAgICBUSW50ZXJtTm9kZSAq
cmVwbGFjZW1lbnQ7Ci0gICAgICAgIGJvb2wgb3JpZ2luYWxCZWNvbWVzQ2hpbGRPZlJlcGxhY2Vt
ZW50OwotICAgIH07Ci0KICAgICAvLyBUbyByZXBsYWNlIGEgc2luZ2xlIG5vZGUgd2l0aCBtdWx0
aXBsZSBub2RlcyBvbiB0aGUgcGFyZW50IGFnZ3JlZ2F0ZSBub2RlCiAgICAgc3RydWN0IE5vZGVS
ZXBsYWNlV2l0aE11bHRpcGxlRW50cnkKICAgICB7Ci0gICAgICAgIE5vZGVSZXBsYWNlV2l0aE11
bHRpcGxlRW50cnkoVEludGVybUFnZ3JlZ2F0ZSAqX3BhcmVudCwgVEludGVybU5vZGUgKl9vcmln
aW5hbCwgVEludGVybVNlcXVlbmNlIF9yZXBsYWNlbWVudHMpCi0gICAgICAgICAgICA6IHBhcmVu
dChfcGFyZW50KSwKLSAgICAgICAgICAgICAgb3JpZ2luYWwoX29yaWdpbmFsKSwKLSAgICAgICAg
ICAgICAgcmVwbGFjZW1lbnRzKF9yZXBsYWNlbWVudHMpCisgICAgICAgIE5vZGVSZXBsYWNlV2l0
aE11bHRpcGxlRW50cnkoVEludGVybUFnZ3JlZ2F0ZUJhc2UgKl9wYXJlbnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybU5vZGUgKl9vcmlnaW5hbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgX3JlcGxhY2Vt
ZW50cykKKyAgICAgICAgICAgIDogcGFyZW50KF9wYXJlbnQpLCBvcmlnaW5hbChfb3JpZ2luYWwp
LCByZXBsYWNlbWVudHMoX3JlcGxhY2VtZW50cykKICAgICAgICAgewogICAgICAgICB9CiAKLSAg
ICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqcGFyZW50OworICAgICAgICBUSW50ZXJtQWdncmVnYXRl
QmFzZSAqcGFyZW50OwogICAgICAgICBUSW50ZXJtTm9kZSAqb3JpZ2luYWw7CiAgICAgICAgIFRJ
bnRlcm1TZXF1ZW5jZSByZXBsYWNlbWVudHM7CiAgICAgfTsKQEAgLTgwMyw3ICs5NDksNyBAQCBj
bGFzcyBUSW50ZXJtVHJhdmVyc2VyIDogYW5nbGU6Ok5vbkNvcHlhCiAgICAgLy8gVG8gaW5zZXJ0
IG11bHRpcGxlIG5vZGVzIG9uIHRoZSBwYXJlbnQgYWdncmVnYXRlIG5vZGUKICAgICBzdHJ1Y3Qg
Tm9kZUluc2VydE11bHRpcGxlRW50cnkKICAgICB7Ci0gICAgICAgIE5vZGVJbnNlcnRNdWx0aXBs
ZUVudHJ5KFRJbnRlcm1BZ2dyZWdhdGUgKl9wYXJlbnQsCisgICAgICAgIE5vZGVJbnNlcnRNdWx0
aXBsZUVudHJ5KFRJbnRlcm1CbG9jayAqX3BhcmVudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVEludGVybVNlcXVlbmNlOjpzaXplX3R5cGUgX3Bvc2l0aW9uLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgX2luc2VydGlvbnNCZWZvcmUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSBfaW5zZXJ0
aW9uc0FmdGVyKQpAQCAtODE0LDE5ICs5NjAsMTIgQEAgY2xhc3MgVEludGVybVRyYXZlcnNlciA6
IGFuZ2xlOjpOb25Db3B5YQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBUSW50ZXJt
QWdncmVnYXRlICpwYXJlbnQ7CisgICAgICAgIFRJbnRlcm1CbG9jayAqcGFyZW50OwogICAgICAg
ICBUSW50ZXJtU2VxdWVuY2U6OnNpemVfdHlwZSBwb3NpdGlvbjsKICAgICAgICAgVEludGVybVNl
cXVlbmNlIGluc2VydGlvbnNCZWZvcmU7CiAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSBpbnNlcnRp
b25zQWZ0ZXI7CiAgICAgfTsKIAotICAgIC8vIER1cmluZyB0cmF2ZXJzaW5nLCBzYXZlIGFsbCB0
aGUgY2hhbmdlcyB0aGF0IG5lZWQgdG8gaGFwcGVuIGludG8KLSAgICAvLyBtUmVwbGFjZW1lbnRz
L21NdWx0aVJlcGxhY2VtZW50cywgdGhlbiBkbyB0aGVtIGJ5IGNhbGxpbmcgdXBkYXRlVHJlZSgp
LgotICAgIC8vIE11bHRpIHJlcGxhY2VtZW50cyBhcmUgcHJvY2Vzc2VkIGFmdGVyIHNpbmdsZSBy
ZXBsYWNlbWVudHMuCi0gICAgc3RkOjp2ZWN0b3I8Tm9kZVVwZGF0ZUVudHJ5PiBtUmVwbGFjZW1l
bnRzOwotICAgIHN0ZDo6dmVjdG9yPE5vZGVSZXBsYWNlV2l0aE11bHRpcGxlRW50cnk+IG1NdWx0
aVJlcGxhY2VtZW50czsKLSAgICBzdGQ6OnZlY3RvcjxOb2RlSW5zZXJ0TXVsdGlwbGVFbnRyeT4g
bUluc2VydGlvbnM7Ci0KICAgICAvLyBIZWxwZXIgdG8gaW5zZXJ0IHN0YXRlbWVudHMgaW4gdGhl
IHBhcmVudCBibG9jayAoc2VxdWVuY2UpIG9mIHRoZSBub2RlIGN1cnJlbnRseSBiZWluZyB0cmF2
ZXJzZWQuCiAgICAgLy8gVGhlIHN0YXRlbWVudHMgd2lsbCBiZSBpbnNlcnRlZCBiZWZvcmUgdGhl
IG5vZGUgYmVpbmcgdHJhdmVyc2VkIG9uY2UgdXBkYXRlVHJlZSBpcyBjYWxsZWQuCiAgICAgLy8g
U2hvdWxkIG9ubHkgYmUgY2FsbGVkIGR1cmluZyBQcmVWaXNpdCBvciBQb3N0VmlzaXQgZnJvbSBz
ZXF1ZW5jZSBub2Rlcy4KQEAgLTgzOSw2ICs5NzgsOSBAQCBjbGFzcyBUSW50ZXJtVHJhdmVyc2Vy
IDogYW5nbGU6Ok5vbkNvcHlhCiAgICAgdm9pZCBpbnNlcnRTdGF0ZW1lbnRzSW5QYXJlbnRCbG9j
ayhjb25zdCBUSW50ZXJtU2VxdWVuY2UgJmluc2VydGlvbnNCZWZvcmUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUSW50ZXJtU2VxdWVuY2UgJmluc2VydGlv
bnNBZnRlcik7CiAKKyAgICAvLyBIZWxwZXIgdG8gaW5zZXJ0IGEgc2luZ2xlIHN0YXRlbWVudC4K
KyAgICB2b2lkIGluc2VydFN0YXRlbWVudEluUGFyZW50QmxvY2soVEludGVybU5vZGUgKnN0YXRl
bWVudCk7CisKICAgICAvLyBIZWxwZXIgdG8gY3JlYXRlIGEgdGVtcG9yYXJ5IHN5bWJvbCBub2Rl
IHdpdGggdGhlIGdpdmVuIHF1YWxpZmllci4KICAgICBUSW50ZXJtU3ltYm9sICpjcmVhdGVUZW1w
U3ltYm9sKGNvbnN0IFRUeXBlICZ0eXBlLCBUUXVhbGlmaWVyIHF1YWxpZmllcik7CiAgICAgLy8g
SGVscGVyIHRvIGNyZWF0ZSBhIHRlbXBvcmFyeSBzeW1ib2wgbm9kZS4KQEAgLTg1NCwxOCArOTk2
LDczIEBAIGNsYXNzIFRJbnRlcm1UcmF2ZXJzZXIgOiBhbmdsZTo6Tm9uQ29weWEKICAgICAvLyBJ
bmNyZW1lbnQgdGVtcG9yYXJ5IHN5bWJvbCBpbmRleC4KICAgICB2b2lkIG5leHRUZW1wb3JhcnlJ
bmRleCgpOwogCisgICAgZW51bSBjbGFzcyBPcmlnaW5hbE5vZGUKKyAgICB7CisgICAgICAgIEJF
Q09NRVNfQ0hJTEQsCisgICAgICAgIElTX0RST1BQRUQKKyAgICB9OworCisgICAgdm9pZCBjbGVh
clJlcGxhY2VtZW50UXVldWUoKTsKKyAgICB2b2lkIHF1ZXVlUmVwbGFjZW1lbnQoVEludGVybU5v
ZGUgKm9yaWdpbmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtTm9kZSAqcmVw
bGFjZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIE9yaWdpbmFsTm9kZSBvcmlnaW5h
bFN0YXR1cyk7CisgICAgdm9pZCBxdWV1ZVJlcGxhY2VtZW50V2l0aFBhcmVudChUSW50ZXJtTm9k
ZSAqcGFyZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybU5v
ZGUgKm9yaWdpbmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVy
bU5vZGUgKnJlcGxhY2VtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
T3JpZ2luYWxOb2RlIG9yaWdpbmFsU3RhdHVzKTsKKworICAgIGNvbnN0IGJvb2wgcHJlVmlzaXQ7
CisgICAgY29uc3QgYm9vbCBpblZpc2l0OworICAgIGNvbnN0IGJvb2wgcG9zdFZpc2l0OworCisg
ICAgaW50IG1EZXB0aDsKKyAgICBpbnQgbU1heERlcHRoOworCisgICAgLy8gQWxsIHRoZSBub2Rl
cyBmcm9tIHJvb3QgdG8gdGhlIGN1cnJlbnQgbm9kZSdzIHBhcmVudCBkdXJpbmcgdHJhdmVyc2lu
Zy4KKyAgICBUVmVjdG9yPFRJbnRlcm1Ob2RlICo+IG1QYXRoOworCisgICAgYm9vbCBtSW5HbG9i
YWxTY29wZTsKKworICAgIC8vIER1cmluZyB0cmF2ZXJzaW5nLCBzYXZlIGFsbCB0aGUgY2hhbmdl
cyB0aGF0IG5lZWQgdG8gaGFwcGVuIGludG8KKyAgICAvLyBtUmVwbGFjZW1lbnRzL21NdWx0aVJl
cGxhY2VtZW50cywgdGhlbiBkbyB0aGVtIGJ5IGNhbGxpbmcgdXBkYXRlVHJlZSgpLgorICAgIC8v
IE11bHRpIHJlcGxhY2VtZW50cyBhcmUgcHJvY2Vzc2VkIGFmdGVyIHNpbmdsZSByZXBsYWNlbWVu
dHMuCisgICAgc3RkOjp2ZWN0b3I8Tm9kZVJlcGxhY2VXaXRoTXVsdGlwbGVFbnRyeT4gbU11bHRp
UmVwbGFjZW1lbnRzOworICAgIHN0ZDo6dmVjdG9yPE5vZGVJbnNlcnRNdWx0aXBsZUVudHJ5PiBt
SW5zZXJ0aW9uczsKKwogICBwcml2YXRlOgorICAgIC8vIFRvIHJlcGxhY2UgYSBzaW5nbGUgbm9k
ZSB3aXRoIGFub3RoZXIgb24gdGhlIHBhcmVudCBub2RlCisgICAgc3RydWN0IE5vZGVVcGRhdGVF
bnRyeQorICAgIHsKKyAgICAgICAgTm9kZVVwZGF0ZUVudHJ5KFRJbnRlcm1Ob2RlICpfcGFyZW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybU5vZGUgKl9vcmlnaW5hbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICpfcmVwbGFjZW1lbnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIF9vcmlnaW5hbEJlY29tZXNDaGlsZE9mUmVwbGFjZW1lbnQpCisg
ICAgICAgICAgICA6IHBhcmVudChfcGFyZW50KSwKKyAgICAgICAgICAgICAgb3JpZ2luYWwoX29y
aWdpbmFsKSwKKyAgICAgICAgICAgICAgcmVwbGFjZW1lbnQoX3JlcGxhY2VtZW50KSwKKyAgICAg
ICAgICAgICAgb3JpZ2luYWxCZWNvbWVzQ2hpbGRPZlJlcGxhY2VtZW50KF9vcmlnaW5hbEJlY29t
ZXNDaGlsZE9mUmVwbGFjZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIFRJ
bnRlcm1Ob2RlICpwYXJlbnQ7CisgICAgICAgIFRJbnRlcm1Ob2RlICpvcmlnaW5hbDsKKyAgICAg
ICAgVEludGVybU5vZGUgKnJlcGxhY2VtZW50OworICAgICAgICBib29sIG9yaWdpbmFsQmVjb21l
c0NoaWxkT2ZSZXBsYWNlbWVudDsKKyAgICB9OworCiAgICAgc3RydWN0IFBhcmVudEJsb2NrCiAg
ICAgewotICAgICAgICBQYXJlbnRCbG9jayhUSW50ZXJtQWdncmVnYXRlICpub2RlSW4sIFRJbnRl
cm1TZXF1ZW5jZTo6c2l6ZV90eXBlIHBvc0luKQotICAgICAgICAgICAgOiBub2RlKG5vZGVJbiks
Ci0gICAgICAgICAgICAgIHBvcyhwb3NJbikKKyAgICAgICAgUGFyZW50QmxvY2soVEludGVybUJs
b2NrICpub2RlSW4sIFRJbnRlcm1TZXF1ZW5jZTo6c2l6ZV90eXBlIHBvc0luKQorICAgICAgICAg
ICAgOiBub2RlKG5vZGVJbiksIHBvcyhwb3NJbikKICAgICAgICAgewogICAgICAgICB9CiAKLSAg
ICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZTsKKyAgICAgICAgVEludGVybUJsb2NrICpub2Rl
OwogICAgICAgICBUSW50ZXJtU2VxdWVuY2U6OnNpemVfdHlwZSBwb3M7CiAgICAgfTsKKworICAg
IHN0ZDo6dmVjdG9yPE5vZGVVcGRhdGVFbnRyeT4gbVJlcGxhY2VtZW50czsKKwogICAgIC8vIEFs
bCB0aGUgY29kZSBibG9ja3MgZnJvbSB0aGUgcm9vdCB0byB0aGUgY3VycmVudCBub2RlJ3MgcGFy
ZW50IGR1cmluZyB0cmF2ZXJzYWwuCiAgICAgc3RkOjp2ZWN0b3I8UGFyZW50QmxvY2s+IG1QYXJl
bnRCbG9ja1N0YWNrOwogCkBAIC04OTEsOSArMTA4OCwxMCBAQCBjbGFzcyBUTFZhbHVlVHJhY2tp
bmdUcmF2ZXJzZXIgOiBwdWJsaWMgCiAgICAgfQogICAgIHZpcnR1YWwgflRMVmFsdWVUcmFja2lu
Z1RyYXZlcnNlcigpIHt9CiAKLSAgICB2b2lkIHRyYXZlcnNlQmluYXJ5KFRJbnRlcm1CaW5hcnkg
Km5vZGUpIG92ZXJyaWRlOwotICAgIHZvaWQgdHJhdmVyc2VVbmFyeShUSW50ZXJtVW5hcnkgKm5v
ZGUpIG92ZXJyaWRlOwotICAgIHZvaWQgdHJhdmVyc2VBZ2dyZWdhdGUoVEludGVybUFnZ3JlZ2F0
ZSAqbm9kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB0cmF2ZXJzZUJpbmFyeShUSW50ZXJtQmluYXJ5
ICpub2RlKSBmaW5hbDsKKyAgICB2b2lkIHRyYXZlcnNlVW5hcnkoVEludGVybVVuYXJ5ICpub2Rl
KSBmaW5hbDsKKyAgICB2b2lkIHRyYXZlcnNlRnVuY3Rpb25EZWZpbml0aW9uKFRJbnRlcm1GdW5j
dGlvbkRlZmluaXRpb24gKm5vZGUpIGZpbmFsOworICAgIHZvaWQgdHJhdmVyc2VBZ2dyZWdhdGUo
VEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkgZmluYWw7CiAKICAgcHJvdGVjdGVkOgogICAgIGJvb2wg
aXNMVmFsdWVSZXF1aXJlZEhlcmUoKSBjb25zdApAQCAtOTYxLDggKzExNTksMTAgQEAgY2xhc3Mg
VE1heERlcHRoVHJhdmVyc2VyIDogcHVibGljIFRJbnRlcgogCiAgICAgYm9vbCB2aXNpdEJpbmFy
eShWaXNpdCwgVEludGVybUJpbmFyeSAqKSBvdmVycmlkZSB7IHJldHVybiBkZXB0aENoZWNrKCk7
IH0KICAgICBib29sIHZpc2l0VW5hcnkoVmlzaXQsIFRJbnRlcm1VbmFyeSAqKSBvdmVycmlkZSB7
IHJldHVybiBkZXB0aENoZWNrKCk7IH0KLSAgICBib29sIHZpc2l0U2VsZWN0aW9uKFZpc2l0LCBU
SW50ZXJtU2VsZWN0aW9uICopIG92ZXJyaWRlIHsgcmV0dXJuIGRlcHRoQ2hlY2soKTsgfQorICAg
IGJvb2wgdmlzaXRUZXJuYXJ5KFZpc2l0LCBUSW50ZXJtVGVybmFyeSAqKSBvdmVycmlkZSB7IHJl
dHVybiBkZXB0aENoZWNrKCk7IH0KKyAgICBib29sIHZpc2l0SWZFbHNlKFZpc2l0LCBUSW50ZXJt
SWZFbHNlICopIG92ZXJyaWRlIHsgcmV0dXJuIGRlcHRoQ2hlY2soKTsgfQogICAgIGJvb2wgdmlz
aXRBZ2dyZWdhdGUoVmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKikgb3ZlcnJpZGUgeyByZXR1cm4g
ZGVwdGhDaGVjaygpOyB9CisgICAgYm9vbCB2aXNpdEJsb2NrKFZpc2l0LCBUSW50ZXJtQmxvY2sg
Kikgb3ZlcnJpZGUgeyByZXR1cm4gZGVwdGhDaGVjaygpOyB9CiAgICAgYm9vbCB2aXNpdExvb3Ao
VmlzaXQsIFRJbnRlcm1Mb29wICopIG92ZXJyaWRlIHsgcmV0dXJuIGRlcHRoQ2hlY2soKTsgfQog
ICAgIGJvb2wgdmlzaXRCcmFuY2goVmlzaXQsIFRJbnRlcm1CcmFuY2ggKikgb3ZlcnJpZGUgeyBy
ZXR1cm4gZGVwdGhDaGVjaygpOyB9CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGVQYXR0ZXJuTWF0Y2hlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
SW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlUGF0dGVybk1h
dGNoZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA0IEBACisvLworLy8gQ29weXJp
Z2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
Ky8vIEludGVybU5vZGVQYXR0ZXJuTWF0Y2hlciBpcyBhIGhlbHBlciBjbGFzcyBmb3IgbWF0Y2hp
bmcgbm9kZSB0cmVlcyB0byBnaXZlbiBwYXR0ZXJucy4KKy8vIEl0IGNhbiBiZSB1c2VkIHdoZW5l
dmVyIHRoZSBzYW1lIGNoZWNrcyBmb3IgY2VydGFpbiBub2RlIHN0cnVjdHVyZXMgYXJlIGNvbW1v
biB0byBtdWx0aXBsZSBBU1QKKy8vIHRyYXZlcnNlcnMuCisvLworCisjaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXIuaCIKKworI2luY2x1ZGUgImNv
bXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgorCitJbnRlcm1Ob2RlUGF0dGVybk1hdGNo
ZXI6OkludGVybU5vZGVQYXR0ZXJuTWF0Y2hlcihjb25zdCB1bnNpZ25lZCBpbnQgbWFzaykgOiBt
TWFzayhtYXNrKQoreworfQorCisvLyBzdGF0aWMKK2Jvb2wgSW50ZXJtTm9kZVBhdHRlcm5NYXRj
aGVyOjpJc0R5bmFtaWNJbmRleGluZ09mVmVjdG9yT3JNYXRyaXgoVEludGVybUJpbmFyeSAqbm9k
ZSkKK3sKKyAgICByZXR1cm4gbm9kZS0+Z2V0T3AoKSA9PSBFT3BJbmRleEluZGlyZWN0ICYmICFu
b2RlLT5nZXRMZWZ0KCktPmlzQXJyYXkoKSAmJgorICAgICAgICAgICBub2RlLT5nZXRMZWZ0KCkt
PmdldEJhc2ljVHlwZSgpICE9IEVidFN0cnVjdDsKK30KKworYm9vbCBJbnRlcm1Ob2RlUGF0dGVy
bk1hdGNoZXI6Om1hdGNoSW50ZXJuYWwoVEludGVybUJpbmFyeSAqbm9kZSwgVEludGVybU5vZGUg
KnBhcmVudE5vZGUpCit7CisgICAgaWYgKChtTWFzayAmIGtFeHByZXNzaW9uUmV0dXJuaW5nQXJy
YXkpICE9IDApCisgICAgeworICAgICAgICBpZiAobm9kZS0+aXNBcnJheSgpICYmIG5vZGUtPmdl
dE9wKCkgPT0gRU9wQXNzaWduICYmIHBhcmVudE5vZGUgIT0gbnVsbHB0ciAmJgorICAgICAgICAg
ICAgIXBhcmVudE5vZGUtPmdldEFzQmxvY2soKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoKG1NYXNrICYga1VuZm9sZGVk
U2hvcnRDaXJjdWl0RXhwcmVzc2lvbikgIT0gMCkKKyAgICB7CisgICAgICAgIGlmIChub2RlLT5n
ZXRSaWdodCgpLT5oYXNTaWRlRWZmZWN0cygpICYmCisgICAgICAgICAgICAobm9kZS0+Z2V0T3Ao
KSA9PSBFT3BMb2dpY2FsT3IgfHwgbm9kZS0+Z2V0T3AoKSA9PSBFT3BMb2dpY2FsQW5kKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIEludGVybU5vZGVQYXR0ZXJuTWF0Y2hlcjo6bWF0Y2go
VEludGVybUJpbmFyeSAqbm9kZSwgVEludGVybU5vZGUgKnBhcmVudE5vZGUpCit7CisgICAgLy8g
TC12YWx1ZSB0cmFja2luZyBpbmZvcm1hdGlvbiBpcyBuZWVkZWQgdG8gY2hlY2sgZm9yIGR5bmFt
aWMgaW5kZXhpbmcgaW4gTC12YWx1ZS4KKyAgICAvLyBUcmF2ZXJzZXJzIHRoYXQgZG9uJ3QgdHJh
Y2sgbC12YWx1ZXMgY2FuIHN0aWxsIHVzZSB0aGlzIGNsYXNzIGFuZCBtYXRjaCBiaW5hcnkgbm9k
ZXMgd2l0aAorICAgIC8vIHRoaXMgdmFyaWF0aW9uIG9mIHRoaXMgbWV0aG9kIGlmIHRoZXkgZG9u
J3QgbmVlZCB0byBjaGVjayBmb3IgZHluYW1pYyBpbmRleGluZyBpbiBsLXZhbHVlcy4KKyAgICBB
U1NFUlQoKG1NYXNrICYga0R5bmFtaWNJbmRleGluZ09mVmVjdG9yT3JNYXRyaXhJbkxWYWx1ZSkg
PT0gMCk7CisgICAgcmV0dXJuIG1hdGNoSW50ZXJuYWwobm9kZSwgcGFyZW50Tm9kZSk7Cit9CisK
K2Jvb2wgSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVyOjptYXRjaChUSW50ZXJtQmluYXJ5ICpub2Rl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICpwYXJl
bnROb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNMVmFs
dWVSZXF1aXJlZEhlcmUpCit7CisgICAgaWYgKG1hdGNoSW50ZXJuYWwobm9kZSwgcGFyZW50Tm9k
ZSkpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKChtTWFzayAm
IGtEeW5hbWljSW5kZXhpbmdPZlZlY3Rvck9yTWF0cml4SW5MVmFsdWUpICE9IDApCisgICAgewor
ICAgICAgICBpZiAoaXNMVmFsdWVSZXF1aXJlZEhlcmUgJiYgSXNEeW5hbWljSW5kZXhpbmdPZlZl
Y3Rvck9yTWF0cml4KG5vZGUpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgSW50ZXJtTm9k
ZVBhdHRlcm5NYXRjaGVyOjptYXRjaChUSW50ZXJtQWdncmVnYXRlICpub2RlLCBUSW50ZXJtTm9k
ZSAqcGFyZW50Tm9kZSkKK3sKKyAgICBpZiAoKG1NYXNrICYga0V4cHJlc3Npb25SZXR1cm5pbmdB
cnJheSkgIT0gMCkKKyAgICB7CisgICAgICAgIGlmIChwYXJlbnROb2RlICE9IG51bGxwdHIpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIFRJbnRlcm1CaW5hcnkgKnBhcmVudEJpbmFyeSA9IHBhcmVu
dE5vZGUtPmdldEFzQmluYXJ5Tm9kZSgpOworICAgICAgICAgICAgYm9vbCBwYXJlbnRJc0Fzc2ln
bm1lbnQgPQorICAgICAgICAgICAgICAgIChwYXJlbnRCaW5hcnkgIT0gbnVsbHB0ciAmJgorICAg
ICAgICAgICAgICAgICAocGFyZW50QmluYXJ5LT5nZXRPcCgpID09IEVPcEFzc2lnbiB8fCBwYXJl
bnRCaW5hcnktPmdldE9wKCkgPT0gRU9wSW5pdGlhbGl6ZSkpOworCisgICAgICAgICAgICBpZiAo
bm9kZS0+Z2V0VHlwZSgpLmlzQXJyYXkoKSAmJiAhcGFyZW50SXNBc3NpZ25tZW50ICYmCisgICAg
ICAgICAgICAgICAgKG5vZGUtPmlzQ29uc3RydWN0b3IoKSB8fCBub2RlLT5nZXRPcCgpID09IEVP
cEZ1bmN0aW9uQ2FsbCkgJiYKKyAgICAgICAgICAgICAgICAhcGFyZW50Tm9kZS0+Z2V0QXNCbG9j
aygpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBJ
bnRlcm1Ob2RlUGF0dGVybk1hdGNoZXI6Om1hdGNoKFRJbnRlcm1UZXJuYXJ5ICpub2RlKQorewor
ICAgIGlmICgobU1hc2sgJiBrVW5mb2xkZWRTaG9ydENpcmN1aXRFeHByZXNzaW9uKSAhPSAwKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0lu
dGVybU5vZGVQYXR0ZXJuTWF0Y2hlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGVQYXR0ZXJuTWF0Y2hlci5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL0ludGVybU5vZGVQYXR0ZXJuTWF0Y2hlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNTMgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVyIGlz
IGEgaGVscGVyIGNsYXNzIGZvciBtYXRjaGluZyBub2RlIHRyZWVzIHRvIGdpdmVuIHBhdHRlcm5z
LgorLy8gSXQgY2FuIGJlIHVzZWQgd2hlbmV2ZXIgdGhlIHNhbWUgY2hlY2tzIGZvciBjZXJ0YWlu
IG5vZGUgc3RydWN0dXJlcyBhcmUgY29tbW9uIHRvIG11bHRpcGxlIEFTVAorLy8gdHJhdmVyc2Vy
cy4KKy8vCisKKyNpZm5kZWYgQ09NUElMRVJfVFJBTlNMQVRPUl9JTlRFUk1OT0RFUEFUVEVSTk1B
VENIRVJfSF8KKyNkZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9JTlRFUk1OT0RFUEFUVEVSTk1B
VENIRVJfSF8KKworY2xhc3MgVEludGVybUFnZ3JlZ2F0ZTsKK2NsYXNzIFRJbnRlcm1CaW5hcnk7
CitjbGFzcyBUSW50ZXJtTm9kZTsKK2NsYXNzIFRJbnRlcm1UZXJuYXJ5OworCitjbGFzcyBJbnRl
cm1Ob2RlUGF0dGVybk1hdGNoZXIKK3sKKyAgcHVibGljOgorICAgIHN0YXRpYyBib29sIElzRHlu
YW1pY0luZGV4aW5nT2ZWZWN0b3JPck1hdHJpeChUSW50ZXJtQmluYXJ5ICpub2RlKTsKKworICAg
IGVudW0gUGF0dGVyblR5cGUKKyAgICB7CisgICAgICAgIC8vIE1hdGNoZXMgZXhwcmVzc2lvbnMg
dGhhdCBhcmUgdW5mb2xkZWQgdG8gaWYgc3RhdGVtZW50cyBieSBVbmZvbGRTaG9ydENpcmN1aXRU
b0lmCisgICAgICAgIGtVbmZvbGRlZFNob3J0Q2lyY3VpdEV4cHJlc3Npb24gPSAweDAwMDEsCisK
KyAgICAgICAgLy8gTWF0Y2hlcyBleHByZXNzaW9ucyB0aGF0IHJldHVybiBhcnJheXMgd2l0aCB0
aGUgZXhjZXB0aW9uIG9mIHNpbXBsZSBzdGF0ZW1lbnRzIHdoZXJlIGEKKyAgICAgICAgLy8gY29u
c3RydWN0b3Igb3IgZnVuY3Rpb24gY2FsbCByZXN1bHQgaXMgYXNzaWduZWQuCisgICAgICAgIGtF
eHByZXNzaW9uUmV0dXJuaW5nQXJyYXkgPSAweDAwMDIsCisKKyAgICAgICAgLy8gTWF0Y2hlcyBk
eW5hbWljIGluZGV4aW5nIG9mIHZlY3RvcnMgb3IgbWF0cmljZXMgaW4gbC12YWx1ZXMuCisgICAg
ICAgIGtEeW5hbWljSW5kZXhpbmdPZlZlY3Rvck9yTWF0cml4SW5MVmFsdWUgPSAweDAwMDQKKyAg
ICB9OworICAgIEludGVybU5vZGVQYXR0ZXJuTWF0Y2hlcihjb25zdCB1bnNpZ25lZCBpbnQgbWFz
ayk7CisKKyAgICBib29sIG1hdGNoKFRJbnRlcm1CaW5hcnkgKm5vZGUsIFRJbnRlcm1Ob2RlICpw
YXJlbnROb2RlKTsKKworICAgIC8vIFVzZSB0aGlzIHZlcnNpb24gZm9yIGNoZWNraW5nIGJpbmFy
eSBub2RlIG1hdGNoZXMgaW4gY2FzZSB5b3UncmUgdXNpbmcgZmxhZworICAgIC8vIGtEeW5hbWlj
SW5kZXhpbmdPZlZlY3Rvck9yTWF0cml4SW5MVmFsdWUuCisgICAgYm9vbCBtYXRjaChUSW50ZXJt
QmluYXJ5ICpub2RlLCBUSW50ZXJtTm9kZSAqcGFyZW50Tm9kZSwgYm9vbCBpc0xWYWx1ZVJlcXVp
cmVkSGVyZSk7CisKKyAgICBib29sIG1hdGNoKFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUsIFRJbnRl
cm1Ob2RlICpwYXJlbnROb2RlKTsKKyAgICBib29sIG1hdGNoKFRJbnRlcm1UZXJuYXJ5ICpub2Rl
KTsKKworICBwcml2YXRlOgorICAgIGNvbnN0IHVuc2lnbmVkIGludCBtTWFzazsKKworICAgIGJv
b2wgbWF0Y2hJbnRlcm5hbChUSW50ZXJtQmluYXJ5ICpub2RlLCBUSW50ZXJtTm9kZSAqcGFyZW50
Tm9kZSk7Cit9OworCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL0ludGVybVRyYXZlcnNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1UcmF2ZXJz
ZS5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL0ludGVybVRyYXZlcnNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjMsNiArMjMsMTEgQEAgdm9pZCBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6dHJhdmVyc2UoVEludAog
ICAgIGl0LT50cmF2ZXJzZUNvbnN0YW50VW5pb24odGhpcyk7CiB9CiAKK3ZvaWQgVEludGVybVN3
aXp6bGU6OnRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIgKml0KQoreworICAgIGl0LT50cmF2ZXJz
ZVN3aXp6bGUodGhpcyk7Cit9CisKIHZvaWQgVEludGVybUJpbmFyeTo6dHJhdmVyc2UoVEludGVy
bVRyYXZlcnNlciAqaXQpCiB7CiAgICAgaXQtPnRyYXZlcnNlQmluYXJ5KHRoaXMpOwpAQCAtMzMs
OSArMzgsMTQgQEAgdm9pZCBUSW50ZXJtVW5hcnk6OnRyYXZlcnNlKFRJbnRlcm1UcmF2ZQogICAg
IGl0LT50cmF2ZXJzZVVuYXJ5KHRoaXMpOwogfQogCi12b2lkIFRJbnRlcm1TZWxlY3Rpb246OnRy
YXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIgKml0KQordm9pZCBUSW50ZXJtVGVybmFyeTo6dHJhdmVy
c2UoVEludGVybVRyYXZlcnNlciAqaXQpCit7CisgICAgaXQtPnRyYXZlcnNlVGVybmFyeSh0aGlz
KTsKK30KKwordm9pZCBUSW50ZXJtSWZFbHNlOjp0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyICpp
dCkKIHsKLSAgICBpdC0+dHJhdmVyc2VTZWxlY3Rpb24odGhpcyk7CisgICAgaXQtPnRyYXZlcnNl
SWZFbHNlKHRoaXMpOwogfQogCiB2b2lkIFRJbnRlcm1Td2l0Y2g6OnRyYXZlcnNlKFRJbnRlcm1U
cmF2ZXJzZXIgKml0KQpAQCAtNDgsNiArNTgsMTYgQEAgdm9pZCBUSW50ZXJtQ2FzZTo6dHJhdmVy
c2UoVEludGVybVRyYXZlcgogICAgIGl0LT50cmF2ZXJzZUNhc2UodGhpcyk7CiB9CiAKK3ZvaWQg
VEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbjo6dHJhdmVyc2UoVEludGVybVRyYXZlcnNlciAqaXQp
Cit7CisgICAgaXQtPnRyYXZlcnNlRnVuY3Rpb25EZWZpbml0aW9uKHRoaXMpOworfQorCit2b2lk
IFRJbnRlcm1CbG9jazo6dHJhdmVyc2UoVEludGVybVRyYXZlcnNlciAqaXQpCit7CisgICAgaXQt
PnRyYXZlcnNlQmxvY2sodGhpcyk7Cit9CisKIHZvaWQgVEludGVybUFnZ3JlZ2F0ZTo6dHJhdmVy
c2UoVEludGVybVRyYXZlcnNlciAqaXQpCiB7CiAgICAgaXQtPnRyYXZlcnNlQWdncmVnYXRlKHRo
aXMpOwpAQCAtNjMsNyArODMsMjIgQEAgdm9pZCBUSW50ZXJtQnJhbmNoOjp0cmF2ZXJzZShUSW50
ZXJtVHJhdgogICAgIGl0LT50cmF2ZXJzZUJyYW5jaCh0aGlzKTsKIH0KIAotdm9pZCBUSW50ZXJt
VHJhdmVyc2VyOjpwdXNoUGFyZW50QmxvY2soVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkKK1RJbnRl
cm1UcmF2ZXJzZXI6OlRJbnRlcm1UcmF2ZXJzZXIoYm9vbCBwcmVWaXNpdCwgYm9vbCBpblZpc2l0
LCBib29sIHBvc3RWaXNpdCkKKyAgICA6IHByZVZpc2l0KHByZVZpc2l0KSwKKyAgICAgIGluVmlz
aXQoaW5WaXNpdCksCisgICAgICBwb3N0VmlzaXQocG9zdFZpc2l0KSwKKyAgICAgIG1EZXB0aCgw
KSwKKyAgICAgIG1NYXhEZXB0aCgwKSwKKyAgICAgIG1Jbkdsb2JhbFNjb3BlKHRydWUpLAorICAg
ICAgbVRlbXBvcmFyeUluZGV4KG51bGxwdHIpCit7Cit9CisKK1RJbnRlcm1UcmF2ZXJzZXI6On5U
SW50ZXJtVHJhdmVyc2VyKCkKK3sKK30KKwordm9pZCBUSW50ZXJtVHJhdmVyc2VyOjpwdXNoUGFy
ZW50QmxvY2soVEludGVybUJsb2NrICpub2RlKQogewogICAgIG1QYXJlbnRCbG9ja1N0YWNrLnB1
c2hfYmFjayhQYXJlbnRCbG9jayhub2RlLCAwKSk7CiB9CkBAIC05NCw2ICsxMjksMTMgQEAgdm9p
ZCBUSW50ZXJtVHJhdmVyc2VyOjppbnNlcnRTdGF0ZW1lbnRzSQogICAgIG1JbnNlcnRpb25zLnB1
c2hfYmFjayhpbnNlcnQpOwogfQogCit2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6Omluc2VydFN0YXRl
bWVudEluUGFyZW50QmxvY2soVEludGVybU5vZGUgKnN0YXRlbWVudCkKK3sKKyAgICBUSW50ZXJt
U2VxdWVuY2UgaW5zZXJ0aW9uczsKKyAgICBpbnNlcnRpb25zLnB1c2hfYmFjayhzdGF0ZW1lbnQp
OworICAgIGluc2VydFN0YXRlbWVudHNJblBhcmVudEJsb2NrKGluc2VydGlvbnMpOworfQorCiBU
SW50ZXJtU3ltYm9sICpUSW50ZXJtVHJhdmVyc2VyOjpjcmVhdGVUZW1wU3ltYm9sKGNvbnN0IFRU
eXBlICZ0eXBlLCBUUXVhbGlmaWVyIHF1YWxpZmllcikKIHsKICAgICAvLyBFYWNoIHRyYXZlcnNh
bCB1c2VzIGF0IG1vc3Qgb25lIHRlbXBvcmFyeSB2YXJpYWJsZSwgc28gdGhlIGluZGV4IHN0YXlz
IHRoZSBzYW1lIHdpdGhpbiBhIHNpbmdsZSB0cmF2ZXJzYWwuCkBAIC0xMjUsMTAgKzE2Nyw3IEBA
IFRJbnRlcm1BZ2dyZWdhdGUgKlRJbnRlcm1UcmF2ZXJzZXI6OmNyZWEKICAgICBBU1NFUlQoaW5p
dGlhbGl6ZXIgIT0gbnVsbHB0cik7CiAgICAgVEludGVybVN5bWJvbCAqdGVtcFN5bWJvbCA9IGNy
ZWF0ZVRlbXBTeW1ib2woaW5pdGlhbGl6ZXItPmdldFR5cGUoKSwgcXVhbGlmaWVyKTsKICAgICBU
SW50ZXJtQWdncmVnYXRlICp0ZW1wRGVjbGFyYXRpb24gPSBuZXcgVEludGVybUFnZ3JlZ2F0ZShF
T3BEZWNsYXJhdGlvbik7Ci0gICAgVEludGVybUJpbmFyeSAqdGVtcEluaXQgPSBuZXcgVEludGVy
bUJpbmFyeShFT3BJbml0aWFsaXplKTsKLSAgICB0ZW1wSW5pdC0+c2V0TGVmdCh0ZW1wU3ltYm9s
KTsKLSAgICB0ZW1wSW5pdC0+c2V0UmlnaHQoaW5pdGlhbGl6ZXIpOwotICAgIHRlbXBJbml0LT5z
ZXRUeXBlKHRlbXBTeW1ib2wtPmdldFR5cGUoKSk7CisgICAgVEludGVybUJpbmFyeSAqdGVtcElu
aXQgICAgICAgICAgID0gbmV3IFRJbnRlcm1CaW5hcnkoRU9wSW5pdGlhbGl6ZSwgdGVtcFN5bWJv
bCwgaW5pdGlhbGl6ZXIpOwogICAgIHRlbXBEZWNsYXJhdGlvbi0+Z2V0U2VxdWVuY2UoKS0+cHVz
aF9iYWNrKHRlbXBJbml0KTsKICAgICByZXR1cm4gdGVtcERlY2xhcmF0aW9uOwogfQpAQCAtMTQy
LDEwICsxODEsNyBAQCBUSW50ZXJtQmluYXJ5ICpUSW50ZXJtVHJhdmVyc2VyOjpjcmVhdGVUCiB7
CiAgICAgQVNTRVJUKHJpZ2h0Tm9kZSAhPSBudWxscHRyKTsKICAgICBUSW50ZXJtU3ltYm9sICp0
ZW1wU3ltYm9sID0gY3JlYXRlVGVtcFN5bWJvbChyaWdodE5vZGUtPmdldFR5cGUoKSk7Ci0gICAg
VEludGVybUJpbmFyeSAqYXNzaWdubWVudCA9IG5ldyBUSW50ZXJtQmluYXJ5KEVPcEFzc2lnbik7
Ci0gICAgYXNzaWdubWVudC0+c2V0TGVmdCh0ZW1wU3ltYm9sKTsKLSAgICBhc3NpZ25tZW50LT5z
ZXRSaWdodChyaWdodE5vZGUpOwotICAgIGFzc2lnbm1lbnQtPnNldFR5cGUodGVtcFN5bWJvbC0+
Z2V0VHlwZSgpKTsKKyAgICBUSW50ZXJtQmluYXJ5ICphc3NpZ25tZW50ID0gbmV3IFRJbnRlcm1C
aW5hcnkoRU9wQXNzaWduLCB0ZW1wU3ltYm9sLCByaWdodE5vZGUpOwogICAgIHJldHVybiBhc3Np
Z25tZW50OwogfQogCkBAIC0xNjgsMTMgKzIwNCwxNCBAQCB2b2lkIFRMVmFsdWVUcmFja2luZ1Ry
YXZlcnNlcjo6YWRkVG9GdW5jCiBib29sIFRMVmFsdWVUcmFja2luZ1RyYXZlcnNlcjo6aXNJbkZ1
bmN0aW9uTWFwKGNvbnN0IFRJbnRlcm1BZ2dyZWdhdGUgKmNhbGxOb2RlKSBjb25zdAogewogICAg
IEFTU0VSVChjYWxsTm9kZS0+Z2V0T3AoKSA9PSBFT3BGdW5jdGlvbkNhbGwpOwotICAgIHJldHVy
biAobUZ1bmN0aW9uTWFwLmZpbmQoY2FsbE5vZGUtPmdldE5hbWVPYmooKSkgIT0gbUZ1bmN0aW9u
TWFwLmVuZCgpKTsKKyAgICByZXR1cm4gKG1GdW5jdGlvbk1hcC5maW5kKGNhbGxOb2RlLT5nZXRG
dW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0TmFtZU9iaigpKSAhPQorICAgICAgICAgICAgbUZ1bmN0
aW9uTWFwLmVuZCgpKTsKIH0KIAogVEludGVybVNlcXVlbmNlICpUTFZhbHVlVHJhY2tpbmdUcmF2
ZXJzZXI6OmdldEZ1bmN0aW9uUGFyYW1ldGVycyhjb25zdCBUSW50ZXJtQWdncmVnYXRlICpjYWxs
Tm9kZSkKIHsKICAgICBBU1NFUlQoaXNJbkZ1bmN0aW9uTWFwKGNhbGxOb2RlKSk7Ci0gICAgcmV0
dXJuIG1GdW5jdGlvbk1hcFtjYWxsTm9kZS0+Z2V0TmFtZU9iaigpXTsKKyAgICByZXR1cm4gbUZ1
bmN0aW9uTWFwW2NhbGxOb2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0TmFtZU9iaigp
XTsKIH0KIAogdm9pZCBUTFZhbHVlVHJhY2tpbmdUcmF2ZXJzZXI6OnNldEluRnVuY3Rpb25DYWxs
T3V0UGFyYW1ldGVyKGJvb2wgaW5PdXRQYXJhbWV0ZXIpCkBAIC0yMTEsNiArMjQ4LDI2IEBAIHZv
aWQgVEludGVybVRyYXZlcnNlcjo6dHJhdmVyc2VDb25zdGFudFUKICAgICB2aXNpdENvbnN0YW50
VW5pb24obm9kZSk7CiB9CiAKK3ZvaWQgVEludGVybVRyYXZlcnNlcjo6dHJhdmVyc2VTd2l6emxl
KFRJbnRlcm1Td2l6emxlICpub2RlKQoreworICAgIGJvb2wgdmlzaXQgPSB0cnVlOworCisgICAg
aWYgKHByZVZpc2l0KQorICAgICAgICB2aXNpdCA9IHZpc2l0U3dpenpsZShQcmVWaXNpdCwgbm9k
ZSk7CisKKyAgICBpZiAodmlzaXQpCisgICAgeworICAgICAgICBpbmNyZW1lbnREZXB0aChub2Rl
KTsKKworICAgICAgICBub2RlLT5nZXRPcGVyYW5kKCktPnRyYXZlcnNlKHRoaXMpOworCisgICAg
ICAgIGRlY3JlbWVudERlcHRoKCk7CisgICAgfQorCisgICAgaWYgKHZpc2l0ICYmIHBvc3RWaXNp
dCkKKyAgICAgICAgdmlzaXRTd2l6emxlKFBvc3RWaXNpdCwgbm9kZSk7Cit9CisKIC8vCiAvLyBU
cmF2ZXJzZSBhIGJpbmFyeSBub2RlLgogLy8KQEAgLTM3Miw5ICs0MjksNjggQEAgdm9pZCBUTFZh
bHVlVHJhY2tpbmdUcmF2ZXJzZXI6OnRyYXZlcnNlVQogICAgICAgICB2aXNpdFVuYXJ5KFBvc3RW
aXNpdCwgbm9kZSk7CiB9CiAKLS8vCisvLyBUcmF2ZXJzZSBhIGZ1bmN0aW9uIGRlZmluaXRpb24g
bm9kZS4KK3ZvaWQgVEludGVybVRyYXZlcnNlcjo6dHJhdmVyc2VGdW5jdGlvbkRlZmluaXRpb24o
VEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAqbm9kZSkKK3sKKyAgICBib29sIHZpc2l0ID0gdHJ1
ZTsKKworICAgIGlmIChwcmVWaXNpdCkKKyAgICAgICAgdmlzaXQgPSB2aXNpdEZ1bmN0aW9uRGVm
aW5pdGlvbihQcmVWaXNpdCwgbm9kZSk7CisKKyAgICBpZiAodmlzaXQpCisgICAgeworICAgICAg
ICBpbmNyZW1lbnREZXB0aChub2RlKTsKKyAgICAgICAgbUluR2xvYmFsU2NvcGUgPSBmYWxzZTsK
KworICAgICAgICBub2RlLT5nZXRGdW5jdGlvblBhcmFtZXRlcnMoKS0+dHJhdmVyc2UodGhpcyk7
CisgICAgICAgIGlmIChpblZpc2l0KQorICAgICAgICAgICAgdmlzaXQgPSB2aXNpdEZ1bmN0aW9u
RGVmaW5pdGlvbihJblZpc2l0LCBub2RlKTsKKyAgICAgICAgbm9kZS0+Z2V0Qm9keSgpLT50cmF2
ZXJzZSh0aGlzKTsKKworICAgICAgICBtSW5HbG9iYWxTY29wZSA9IHRydWU7CisgICAgICAgIGRl
Y3JlbWVudERlcHRoKCk7CisgICAgfQorCisgICAgaWYgKHZpc2l0ICYmIHBvc3RWaXNpdCkKKyAg
ICAgICAgdmlzaXRGdW5jdGlvbkRlZmluaXRpb24oUG9zdFZpc2l0LCBub2RlKTsKK30KKworLy8g
VHJhdmVyc2UgYSBibG9jayBub2RlLgordm9pZCBUSW50ZXJtVHJhdmVyc2VyOjp0cmF2ZXJzZUJs
b2NrKFRJbnRlcm1CbG9jayAqbm9kZSkKK3sKKyAgICBib29sIHZpc2l0ID0gdHJ1ZTsKKworICAg
IFRJbnRlcm1TZXF1ZW5jZSAqc2VxdWVuY2UgPSBub2RlLT5nZXRTZXF1ZW5jZSgpOworCisgICAg
aWYgKHByZVZpc2l0KQorICAgICAgICB2aXNpdCA9IHZpc2l0QmxvY2soUHJlVmlzaXQsIG5vZGUp
OworCisgICAgaWYgKHZpc2l0KQorICAgIHsKKyAgICAgICAgaW5jcmVtZW50RGVwdGgobm9kZSk7
CisgICAgICAgIHB1c2hQYXJlbnRCbG9jayhub2RlKTsKKworICAgICAgICBmb3IgKGF1dG8gKmNo
aWxkIDogKnNlcXVlbmNlKQorICAgICAgICB7CisgICAgICAgICAgICBjaGlsZC0+dHJhdmVyc2Uo
dGhpcyk7CisgICAgICAgICAgICBpZiAodmlzaXQgJiYgaW5WaXNpdCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBpZiAoY2hpbGQgIT0gc2VxdWVuY2UtPmJhY2soKSkKKyAgICAgICAg
ICAgICAgICAgICAgdmlzaXQgPSB2aXNpdEJsb2NrKEluVmlzaXQsIG5vZGUpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpbmNyZW1lbnRQYXJlbnRCbG9ja1BvcygpOworICAgICAgICB9
CisKKyAgICAgICAgcG9wUGFyZW50QmxvY2soKTsKKyAgICAgICAgZGVjcmVtZW50RGVwdGgoKTsK
KyAgICB9CisKKyAgICBpZiAodmlzaXQgJiYgcG9zdFZpc2l0KQorICAgICAgICB2aXNpdEJsb2Nr
KFBvc3RWaXNpdCwgbm9kZSk7Cit9CisKIC8vIFRyYXZlcnNlIGFuIGFnZ3JlZ2F0ZSBub2RlLiAg
U2FtZSBjb21tZW50cyBpbiBiaW5hcnkgbm9kZSBhcHBseSBoZXJlLgotLy8KIHZvaWQgVEludGVy
bVRyYXZlcnNlcjo6dHJhdmVyc2VBZ2dyZWdhdGUoVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkKIHsK
ICAgICBib29sIHZpc2l0ID0gdHJ1ZTsKQEAgLTM4OCw5ICs1MDQsNiBAQCB2b2lkIFRJbnRlcm1U
cmF2ZXJzZXI6OnRyYXZlcnNlQWdncmVnYXRlCiAgICAgewogICAgICAgICBpbmNyZW1lbnREZXB0
aChub2RlKTsKIAotICAgICAgICBpZiAobm9kZS0+Z2V0T3AoKSA9PSBFT3BTZXF1ZW5jZSkKLSAg
ICAgICAgICAgIHB1c2hQYXJlbnRCbG9jayhub2RlKTsKLQogICAgICAgICBmb3IgKGF1dG8gKmNo
aWxkIDogKnNlcXVlbmNlKQogICAgICAgICB7CiAgICAgICAgICAgICBjaGlsZC0+dHJhdmVyc2Uo
dGhpcyk7CkBAIC0zOTksMTQgKzUxMiw4IEBAIHZvaWQgVEludGVybVRyYXZlcnNlcjo6dHJhdmVy
c2VBZ2dyZWdhdGUKICAgICAgICAgICAgICAgICBpZiAoY2hpbGQgIT0gc2VxdWVuY2UtPmJhY2so
KSkKICAgICAgICAgICAgICAgICAgICAgdmlzaXQgPSB2aXNpdEFnZ3JlZ2F0ZShJblZpc2l0LCBu
b2RlKTsKICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKG5vZGUtPmdldE9wKCkgPT0g
RU9wU2VxdWVuY2UpCi0gICAgICAgICAgICAgICAgaW5jcmVtZW50UGFyZW50QmxvY2tQb3MoKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGlmIChub2RlLT5nZXRPcCgpID09IEVPcFNlcXVlbmNlKQot
ICAgICAgICAgICAgcG9wUGFyZW50QmxvY2soKTsKLQogICAgICAgICBkZWNyZW1lbnREZXB0aCgp
OwogICAgIH0KIApAQCAtNDE0LDI2ICs1MjEsMjQgQEAgdm9pZCBUSW50ZXJtVHJhdmVyc2VyOjp0
cmF2ZXJzZUFnZ3JlZ2F0ZQogICAgICAgICB2aXNpdEFnZ3JlZ2F0ZShQb3N0VmlzaXQsIG5vZGUp
OwogfQogCit2b2lkIFRMVmFsdWVUcmFja2luZ1RyYXZlcnNlcjo6dHJhdmVyc2VGdW5jdGlvbkRl
ZmluaXRpb24oVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAqbm9kZSkKK3sKKyAgICBUSW50ZXJt
QWdncmVnYXRlICpwYXJhbXMgPSBub2RlLT5nZXRGdW5jdGlvblBhcmFtZXRlcnMoKTsKKyAgICBB
U1NFUlQocGFyYW1zICE9IG51bGxwdHIpOworICAgIEFTU0VSVChwYXJhbXMtPmdldE9wKCkgPT0g
RU9wUGFyYW1ldGVycyk7CisgICAgYWRkVG9GdW5jdGlvbk1hcChub2RlLT5nZXRGdW5jdGlvblN5
bWJvbEluZm8oKS0+Z2V0TmFtZU9iaigpLCBwYXJhbXMtPmdldFNlcXVlbmNlKCkpOworCisgICAg
VEludGVybVRyYXZlcnNlcjo6dHJhdmVyc2VGdW5jdGlvbkRlZmluaXRpb24obm9kZSk7Cit9CisK
IHZvaWQgVExWYWx1ZVRyYWNraW5nVHJhdmVyc2VyOjp0cmF2ZXJzZUFnZ3JlZ2F0ZShUSW50ZXJt
QWdncmVnYXRlICpub2RlKQogewogICAgIGJvb2wgdmlzaXQgPSB0cnVlOwogCiAgICAgVEludGVy
bVNlcXVlbmNlICpzZXF1ZW5jZSA9IG5vZGUtPmdldFNlcXVlbmNlKCk7Ci0gICAgc3dpdGNoIChu
b2RlLT5nZXRPcCgpKQorICAgIGlmIChub2RlLT5nZXRPcCgpID09IEVPcFByb3RvdHlwZSkKICAg
ICB7Ci0gICAgICAgIGNhc2UgRU9wRnVuY3Rpb246Ci0gICAgICAgIHsKLSAgICAgICAgICAgIFRJ
bnRlcm1BZ2dyZWdhdGUgKnBhcmFtcyA9IHNlcXVlbmNlLT5mcm9udCgpLT5nZXRBc0FnZ3JlZ2F0
ZSgpOwotICAgICAgICAgICAgQVNTRVJUKHBhcmFtcyAhPSBudWxscHRyKTsKLSAgICAgICAgICAg
IEFTU0VSVChwYXJhbXMtPmdldE9wKCkgPT0gRU9wUGFyYW1ldGVycyk7Ci0gICAgICAgICAgICBh
ZGRUb0Z1bmN0aW9uTWFwKG5vZGUtPmdldE5hbWVPYmooKSwgcGFyYW1zLT5nZXRTZXF1ZW5jZSgp
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgRU9wUHJvdG90
eXBlOgotICAgICAgICAgICAgYWRkVG9GdW5jdGlvbk1hcChub2RlLT5nZXROYW1lT2JqKCksIHNl
cXVlbmNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGFkZFRvRnVuY3Rpb25NYXAobm9kZS0+Z2V0RnVuY3Rpb25TeW1i
b2xJbmZvKCktPmdldE5hbWVPYmooKSwgc2VxdWVuY2UpOwogICAgIH0KIAogICAgIGlmIChwcmVW
aXNpdCkKQEAgLTQ3OSw5ICs1ODQsNiBAQCB2b2lkIFRMVmFsdWVUcmFja2luZ1RyYXZlcnNlcjo6
dHJhdmVyc2VBCiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAobm9kZS0+Z2V0T3AoKSA9PSBFT3BTZXF1ZW5jZSkKLSAgICAgICAgICAgICAgICBwdXNo
UGFyZW50QmxvY2sobm9kZSk7Ci0KICAgICAgICAgICAgIC8vIEZpbmQgdGhlIGJ1aWx0LWluIGZ1
bmN0aW9uIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBvcCBzbyB0aGF0IHdlIGNhbiBkZXRlcm1pbmUg
dGhlCiAgICAgICAgICAgICAvLyBpbi9vdXQgcXVhbGlmaWVycyBvZiBpdHMgcGFyYW1ldGVycy4K
ICAgICAgICAgICAgIFRGdW5jdGlvbiAqYnVpbHRJbkZ1bmMgPSBudWxscHRyOwpAQCAtNTIzLDE2
ICs2MjUsMTAgQEAgdm9pZCBUTFZhbHVlVHJhY2tpbmdUcmF2ZXJzZXI6OnRyYXZlcnNlQQogICAg
ICAgICAgICAgICAgICAgICAgICAgdmlzaXQgPSB2aXNpdEFnZ3JlZ2F0ZShJblZpc2l0LCBub2Rl
KTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Z2V0T3Ao
KSA9PSBFT3BTZXF1ZW5jZSkKLSAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50UGFyZW50Qmxv
Y2tQb3MoKTsKLQogICAgICAgICAgICAgICAgICsrcGFyYW1JbmRleDsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgc2V0SW5GdW5jdGlvbkNhbGxPdXRQYXJhbWV0ZXIoZmFsc2UpOwotCi0g
ICAgICAgICAgICBpZiAobm9kZS0+Z2V0T3AoKSA9PSBFT3BTZXF1ZW5jZSkKLSAgICAgICAgICAg
ICAgICBwb3BQYXJlbnRCbG9jaygpOwogICAgICAgICB9CiAKICAgICAgICAgZGVjcmVtZW50RGVw
dGgoKTsKQEAgLTU0MywxNCArNjM5LDM3IEBAIHZvaWQgVExWYWx1ZVRyYWNraW5nVHJhdmVyc2Vy
Ojp0cmF2ZXJzZUEKIH0KIAogLy8KLS8vIFRyYXZlcnNlIGEgc2VsZWN0aW9uIG5vZGUuICBTYW1l
IGNvbW1lbnRzIGluIGJpbmFyeSBub2RlIGFwcGx5IGhlcmUuCisvLyBUcmF2ZXJzZSBhIHRlcm5h
cnkgbm9kZS4gIFNhbWUgY29tbWVudHMgaW4gYmluYXJ5IG5vZGUgYXBwbHkgaGVyZS4KIC8vCi12
b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNlU2VsZWN0aW9uKFRJbnRlcm1TZWxlY3Rpb24g
Km5vZGUpCit2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNlVGVybmFyeShUSW50ZXJtVGVy
bmFyeSAqbm9kZSkKK3sKKyAgICBib29sIHZpc2l0ID0gdHJ1ZTsKKworICAgIGlmIChwcmVWaXNp
dCkKKyAgICAgICAgdmlzaXQgPSB2aXNpdFRlcm5hcnkoUHJlVmlzaXQsIG5vZGUpOworCisgICAg
aWYgKHZpc2l0KQorICAgIHsKKyAgICAgICAgaW5jcmVtZW50RGVwdGgobm9kZSk7CisgICAgICAg
IG5vZGUtPmdldENvbmRpdGlvbigpLT50cmF2ZXJzZSh0aGlzKTsKKyAgICAgICAgaWYgKG5vZGUt
PmdldFRydWVFeHByZXNzaW9uKCkpCisgICAgICAgICAgICBub2RlLT5nZXRUcnVlRXhwcmVzc2lv
bigpLT50cmF2ZXJzZSh0aGlzKTsKKyAgICAgICAgaWYgKG5vZGUtPmdldEZhbHNlRXhwcmVzc2lv
bigpKQorICAgICAgICAgICAgbm9kZS0+Z2V0RmFsc2VFeHByZXNzaW9uKCktPnRyYXZlcnNlKHRo
aXMpOworICAgICAgICBkZWNyZW1lbnREZXB0aCgpOworICAgIH0KKworICAgIGlmICh2aXNpdCAm
JiBwb3N0VmlzaXQpCisgICAgICAgIHZpc2l0VGVybmFyeShQb3N0VmlzaXQsIG5vZGUpOworfQor
CisvLyBUcmF2ZXJzZSBhbiBpZi1lbHNlIG5vZGUuICBTYW1lIGNvbW1lbnRzIGluIGJpbmFyeSBu
b2RlIGFwcGx5IGhlcmUuCit2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNlSWZFbHNlKFRJ
bnRlcm1JZkVsc2UgKm5vZGUpCiB7CiAgICAgYm9vbCB2aXNpdCA9IHRydWU7CiAKICAgICBpZiAo
cHJlVmlzaXQpCi0gICAgICAgIHZpc2l0ID0gdmlzaXRTZWxlY3Rpb24oUHJlVmlzaXQsIG5vZGUp
OworICAgICAgICB2aXNpdCA9IHZpc2l0SWZFbHNlKFByZVZpc2l0LCBub2RlKTsKIAogICAgIGlm
ICh2aXNpdCkKICAgICB7CkBAIC01NjQsNyArNjgzLDcgQEAgdm9pZCBUSW50ZXJtVHJhdmVyc2Vy
Ojp0cmF2ZXJzZVNlbGVjdGlvbgogICAgIH0KIAogICAgIGlmICh2aXNpdCAmJiBwb3N0VmlzaXQp
Ci0gICAgICAgIHZpc2l0U2VsZWN0aW9uKFBvc3RWaXNpdCwgbm9kZSk7CisgICAgICAgIHZpc2l0
SWZFbHNlKFBvc3RWaXNpdCwgbm9kZSk7CiB9CiAKIC8vCkBAIC02MDMsNyArNzIyLDExIEBAIHZv
aWQgVEludGVybVRyYXZlcnNlcjo6dHJhdmVyc2VDYXNlKFRJbnQKICAgICAgICAgdmlzaXQgPSB2
aXNpdENhc2UoUHJlVmlzaXQsIG5vZGUpOwogCiAgICAgaWYgKHZpc2l0ICYmIG5vZGUtPmdldENv
bmRpdGlvbigpKQorICAgIHsKKyAgICAgICAgaW5jcmVtZW50RGVwdGgobm9kZSk7CiAgICAgICAg
IG5vZGUtPmdldENvbmRpdGlvbigpLT50cmF2ZXJzZSh0aGlzKTsKKyAgICAgICAgZGVjcmVtZW50
RGVwdGgoKTsKKyAgICB9CiAKICAgICBpZiAodmlzaXQgJiYgcG9zdFZpc2l0KQogICAgICAgICB2
aXNpdENhc2UoUG9zdFZpc2l0LCBub2RlKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL0ludGVybWVkaWF0ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtZWRp
YXRlLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtZWRpYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgsMTEzICszOCwzNiBAQCBUSW50ZXJtU3ltYm9sICpUSW50ZXJtZWRpYXRlOjphZGRTeW1ib2wo
CiB9CiAKIC8vCi0vLyBDb25uZWN0IHR3byBub2RlcyB3aXRoIGEgbmV3IHBhcmVudCB0aGF0IGRv
ZXMgYSBiaW5hcnkgb3BlcmF0aW9uIG9uIHRoZSBub2Rlcy4KLS8vCi0vLyBSZXR1cm5zIHRoZSBh
ZGRlZCBub2RlLgotLy8KLVRJbnRlcm1UeXBlZCAqVEludGVybWVkaWF0ZTo6YWRkQmluYXJ5TWF0
aCgKLSAgICBUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCAqbGVmdCwgVEludGVybVR5cGVkICpy
aWdodCwgY29uc3QgVFNvdXJjZUxvYyAmbGluZSkKLXsKLSAgICAvLwotICAgIC8vIE5lZWQgYSBu
ZXcgbm9kZSBob2xkaW5nIHRoaW5ncyB0b2dldGhlciB0aGVuLiAgTWFrZQotICAgIC8vIG9uZSBh
bmQgcHJvbW90ZSBpdCB0byB0aGUgcmlnaHQgdHlwZS4KLSAgICAvLwotICAgIFRJbnRlcm1CaW5h
cnkgKm5vZGUgPSBuZXcgVEludGVybUJpbmFyeShvcCk7Ci0gICAgbm9kZS0+c2V0TGluZShsaW5l
KTsKLQotICAgIG5vZGUtPnNldExlZnQobGVmdCk7Ci0gICAgbm9kZS0+c2V0UmlnaHQocmlnaHQp
OwotICAgIGlmICghbm9kZS0+cHJvbW90ZShtSW5mb1NpbmspKQotICAgICAgICByZXR1cm4gTlVM
TDsKLQotICAgIC8vIFNlZSBpZiB3ZSBjYW4gZm9sZCBjb25zdGFudHMuCi0gICAgVEludGVybVR5
cGVkICpmb2xkZWROb2RlID0gbm9kZS0+Zm9sZChtSW5mb1NpbmspOwotICAgIGlmIChmb2xkZWRO
b2RlKQotICAgICAgICByZXR1cm4gZm9sZGVkTm9kZTsKLQotICAgIHJldHVybiBub2RlOwotfQot
Ci0vLwotLy8gQ29ubmVjdCB0d28gbm9kZXMgdGhyb3VnaCBhbiBhc3NpZ25tZW50LgotLy8KLS8v
IFJldHVybnMgdGhlIGFkZGVkIG5vZGUuCi0vLwotVEludGVybVR5cGVkICpUSW50ZXJtZWRpYXRl
OjphZGRBc3NpZ24oCi0gICAgVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQgKmxlZnQsIFRJbnRl
cm1UeXBlZCAqcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpCi17Ci0gICAgaWYgKGxlZnQt
PmdldFR5cGUoKS5nZXRTdHJ1Y3QoKSB8fCByaWdodC0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpKQot
ICAgIHsKLSAgICAgICAgaWYgKGxlZnQtPmdldFR5cGUoKSAhPSByaWdodC0+Z2V0VHlwZSgpKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIFRJbnRlcm1CaW5hcnkgKm5vZGUgPSBuZXcgVEludGVybUJpbmFyeShvcCk7Ci0gICAgbm9k
ZS0+c2V0TGluZShsaW5lKTsKLQotICAgIG5vZGUtPnNldExlZnQobGVmdCk7Ci0gICAgbm9kZS0+
c2V0UmlnaHQocmlnaHQpOwotICAgIGlmICghbm9kZS0+cHJvbW90ZShtSW5mb1NpbmspKQotICAg
ICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHVybiBub2RlOwotfQotCi0vLwogLy8gQ29ubmVj
dCB0d28gbm9kZXMgdGhyb3VnaCBhbiBpbmRleCBvcGVyYXRvciwgd2hlcmUgdGhlIGxlZnQgbm9k
ZSBpcyB0aGUgYmFzZQogLy8gb2YgYW4gYXJyYXkgb3Igc3RydWN0LCBhbmQgdGhlIHJpZ2h0IG5v
ZGUgaXMgYSBkaXJlY3Qgb3IgaW5kaXJlY3Qgb2Zmc2V0LgogLy8KIC8vIFJldHVybnMgdGhlIGFk
ZGVkIG5vZGUuCiAvLyBUaGUgY2FsbGVyIHNob3VsZCBzZXQgdGhlIHR5cGUgb2YgdGhlIHJldHVy
bmVkIG5vZGUuCiAvLwotVEludGVybVR5cGVkICpUSW50ZXJtZWRpYXRlOjphZGRJbmRleCgKLSAg
ICBUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCAqYmFzZSwgVEludGVybVR5cGVkICppbmRleCwg
Y29uc3QgVFNvdXJjZUxvYyAmbGluZSkKLXsKLSAgICBUSW50ZXJtQmluYXJ5ICpub2RlID0gbmV3
IFRJbnRlcm1CaW5hcnkob3ApOwotICAgIG5vZGUtPnNldExpbmUobGluZSk7Ci0gICAgbm9kZS0+
c2V0TGVmdChiYXNlKTsKLSAgICBub2RlLT5zZXRSaWdodChpbmRleCk7Ci0KLSAgICAvLyBjYWxs
ZXIgc2hvdWxkIHNldCB0aGUgdHlwZQotCi0gICAgcmV0dXJuIG5vZGU7Ci19Ci0KLS8vCi0vLyBB
ZGQgb25lIG5vZGUgYXMgdGhlIHBhcmVudCBvZiBhbm90aGVyIHRoYXQgaXQgb3BlcmF0ZXMgb24u
Ci0vLwotLy8gUmV0dXJucyB0aGUgYWRkZWQgbm9kZS4KLS8vCi1USW50ZXJtVHlwZWQgKlRJbnRl
cm1lZGlhdGU6OmFkZFVuYXJ5TWF0aCgKLSAgICBUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCAq
Y2hpbGQsIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0IFRUeXBlICpmdW5jUmV0dXJuVHlw
ZSkKK1RJbnRlcm1UeXBlZCAqVEludGVybWVkaWF0ZTo6YWRkSW5kZXgoVE9wZXJhdG9yIG9wLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmJhc2Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5k
ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VM
b2MgJmxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFREaWFnbm9z
dGljcyAqZGlhZ25vc3RpY3MpCiB7Ci0gICAgLy8KLSAgICAvLyBNYWtlIGEgbmV3IG5vZGUgZm9y
IHRoZSBvcGVyYXRvci4KLSAgICAvLwotICAgIFRJbnRlcm1VbmFyeSAqbm9kZSA9IG5ldyBUSW50
ZXJtVW5hcnkob3ApOworICAgIFRJbnRlcm1CaW5hcnkgKm5vZGUgPSBuZXcgVEludGVybUJpbmFy
eShvcCwgYmFzZSwgaW5kZXgpOwogICAgIG5vZGUtPnNldExpbmUobGluZSk7Ci0gICAgbm9kZS0+
c2V0T3BlcmFuZChjaGlsZCk7Ci0gICAgbm9kZS0+cHJvbW90ZShmdW5jUmV0dXJuVHlwZSk7CiAK
LSAgICBUSW50ZXJtVHlwZWQgKmZvbGRlZE5vZGUgPSBub2RlLT5mb2xkKG1JbmZvU2luayk7Ci0g
ICAgaWYgKGZvbGRlZE5vZGUpCi0gICAgICAgIHJldHVybiBmb2xkZWROb2RlOworICAgIFRJbnRl
cm1UeXBlZCAqZm9sZGVkID0gbm9kZS0+Zm9sZChkaWFnbm9zdGljcyk7CisgICAgaWYgKGZvbGRl
ZCkKKyAgICB7CisgICAgICAgIHJldHVybiBmb2xkZWQ7CisgICAgfQogCiAgICAgcmV0dXJuIG5v
ZGU7CiB9CiAKLS8vCiAvLyBUaGlzIGlzIHRoZSBzYWZlIHdheSB0byBjaGFuZ2UgdGhlIG9wZXJh
dG9yIG9uIGFuIGFnZ3JlZ2F0ZSwgYXMgaXQKIC8vIGRvZXMgbG90cyBvZiBlcnJvciBjaGVja2lu
ZyBhbmQgZml4aW5nLiAgRXNwZWNpYWxseSBmb3IgZXN0YWJsaXNoaW5nCi0vLyBhIGZ1bmN0aW9u
IGNhbGwncyBvcGVyYXRpb24gb24gaXQncyBzZXQgb2YgcGFyYW1ldGVycy4gIFNlcXVlbmNlcwot
Ly8gb2YgaW5zdHJ1Y3Rpb25zIGFyZSBhbHNvIGFnZ3JlZ2F0ZXMsIGJ1dCB0aGV5IGp1c3QgZGly
ZW5jdGx5IHNldAotLy8gdGhlaXIgb3BlcmF0b3IgdG8gRU9wU2VxdWVuY2UuCisvLyBhIGZ1bmN0
aW9uIGNhbGwncyBvcGVyYXRpb24gb24gaXQncyBzZXQgb2YgcGFyYW1ldGVycy4KIC8vCiAvLyBS
ZXR1cm5zIGFuIGFnZ3JlZ2F0ZSBub2RlLCB3aGljaCBjb3VsZCBiZSB0aGUgb25lIHBhc3NlZCBp
biBpZgogLy8gaXQgd2FzIGFscmVhZHkgYW4gYWdncmVnYXRlIGJ1dCBubyBvcGVyYXRvciB3YXMg
c2V0LgotLy8KIFRJbnRlcm1BZ2dyZWdhdGUgKlRJbnRlcm1lZGlhdGU6OnNldEFnZ3JlZ2F0ZU9w
ZXJhdG9yKAogICAgIFRJbnRlcm1Ob2RlICpub2RlLCBUT3BlcmF0b3Igb3AsIGNvbnN0IFRTb3Vy
Y2VMb2MgJmxpbmUpCiB7CkBAIC0yMTUsMTEgKzEzOCwxMCBAQCBUSW50ZXJtQWdncmVnYXRlICpU
SW50ZXJtZWRpYXRlOjpncm93QWdnCiAvLwogLy8gUmV0dXJucyBhbiBhZ2dyZWdhdGUsIHVubGVz
cyBOVUxMIHdhcyBwYXNzZWQgaW4gZm9yIHRoZSBleGlzdGluZyBub2RlLgogLy8KLVRJbnRlcm1B
Z2dyZWdhdGUgKlRJbnRlcm1lZGlhdGU6Om1ha2VBZ2dyZWdhdGUoCi0gICAgVEludGVybU5vZGUg
Km5vZGUsIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpCitUSW50ZXJtQWdncmVnYXRlICpUSW50ZXJt
ZWRpYXRlOjpNYWtlQWdncmVnYXRlKFRJbnRlcm1Ob2RlICpub2RlLCBjb25zdCBUU291cmNlTG9j
ICZsaW5lKQogewotICAgIGlmIChub2RlID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwor
ICAgIGlmIChub2RlID09IG51bGxwdHIpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
VEludGVybUFnZ3JlZ2F0ZSAqYWdnTm9kZSA9IG5ldyBUSW50ZXJtQWdncmVnYXRlOwogICAgIGFn
Z05vZGUtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhub2RlKTsKQEAgLTIzMCw3MCArMTUyLDU3
IEBAIFRJbnRlcm1BZ2dyZWdhdGUgKlRJbnRlcm1lZGlhdGU6Om1ha2VBZ2cKIH0KIAogLy8gSWYg
dGhlIGlucHV0IG5vZGUgaXMgbnVsbHB0ciwgcmV0dXJuIG51bGxwdHIuCi0vLyBJZiB0aGUgaW5w
dXQgbm9kZSBpcyBhIHNlcXVlbmNlIChibG9jaykgbm9kZSwgcmV0dXJuIGl0LgotLy8gSWYgdGhl
IGlucHV0IG5vZGUgaXMgbm90IGEgc2VxdWVuY2Ugbm9kZSwgcHV0IGl0IGluc2lkZSBhIHNlcXVl
bmNlIG5vZGUgYW5kIHJldHVybiB0aGF0LgotVEludGVybUFnZ3JlZ2F0ZSAqVEludGVybWVkaWF0
ZTo6ZW5zdXJlU2VxdWVuY2UoVEludGVybU5vZGUgKm5vZGUpCisvLyBJZiB0aGUgaW5wdXQgbm9k
ZSBpcyBhIGJsb2NrIG5vZGUsIHJldHVybiBpdC4KKy8vIElmIHRoZSBpbnB1dCBub2RlIGlzIG5v
dCBhIGJsb2NrIG5vZGUsIHB1dCBpdCBpbnNpZGUgYSBibG9jayBub2RlIGFuZCByZXR1cm4gdGhh
dC4KK1RJbnRlcm1CbG9jayAqVEludGVybWVkaWF0ZTo6RW5zdXJlQmxvY2soVEludGVybU5vZGUg
Km5vZGUpCiB7CiAgICAgaWYgKG5vZGUgPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSAqYWdnTm9kZSA9IG5vZGUtPmdldEFzQWdncmVnYXRl
KCk7Ci0gICAgaWYgKGFnZ05vZGUgIT0gbnVsbHB0ciAmJiBhZ2dOb2RlLT5nZXRPcCgpID09IEVP
cFNlcXVlbmNlKQotICAgICAgICByZXR1cm4gYWdnTm9kZTsKLQotICAgIGFnZ05vZGUgPSBtYWtl
QWdncmVnYXRlKG5vZGUsIG5vZGUtPmdldExpbmUoKSk7Ci0gICAgYWdnTm9kZS0+c2V0T3AoRU9w
U2VxdWVuY2UpOwotICAgIHJldHVybiBhZ2dOb2RlOworICAgIFRJbnRlcm1CbG9jayAqYmxvY2tO
b2RlID0gbm9kZS0+Z2V0QXNCbG9jaygpOworICAgIGlmIChibG9ja05vZGUgIT0gbnVsbHB0cikK
KyAgICAgICAgcmV0dXJuIGJsb2NrTm9kZTsKKworICAgIGJsb2NrTm9kZSA9IG5ldyBUSW50ZXJt
QmxvY2soKTsKKyAgICBibG9ja05vZGUtPnNldExpbmUobm9kZS0+Z2V0TGluZSgpKTsKKyAgICBi
bG9ja05vZGUtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhub2RlKTsKKyAgICByZXR1cm4gYmxv
Y2tOb2RlOwogfQogCi0vLwogLy8gRm9yICJpZiIgdGVzdCBub2Rlcy4gIFRoZXJlIGFyZSB0aHJl
ZSBjaGlsZHJlbjsgYSBjb25kaXRpb24sCiAvLyBhIHRydWUgcGF0aCwgYW5kIGEgZmFsc2UgcGF0
aC4gIFRoZSB0d28gcGF0aHMgYXJlIGluIHRoZQogLy8gbm9kZVBhaXIuCiAvLwotLy8gUmV0dXJu
cyB0aGUgc2VsZWN0aW9uIG5vZGUgY3JlYXRlZC4KLS8vCi1USW50ZXJtTm9kZSAqVEludGVybWVk
aWF0ZTo6YWRkU2VsZWN0aW9uKAotICAgIFRJbnRlcm1UeXBlZCAqY29uZCwgVEludGVybU5vZGVQ
YWlyIG5vZGVQYWlyLCBjb25zdCBUU291cmNlTG9jICZsaW5lKQorLy8gUmV0dXJucyB0aGUgbm9k
ZSBjcmVhdGVkLgorVEludGVybU5vZGUgKlRJbnRlcm1lZGlhdGU6OmFkZElmRWxzZShUSW50ZXJt
VHlwZWQgKmNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRl
cm1Ob2RlUGFpciBub2RlUGFpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVFNvdXJjZUxvYyAmbGluZSkKIHsKLSAgICAvLwotICAgIC8vIEZvciBjb21waWxl
IHRpbWUgY29uc3RhbnQgc2VsZWN0aW9ucywgcHJ1bmUgdGhlIGNvZGUgYW5kCi0gICAgLy8gdGVz
dCBub3cuCi0gICAgLy8KKyAgICAvLyBGb3IgY29tcGlsZSB0aW1lIGNvbnN0YW50IGNvbmRpdGlv
bnMsIHBydW5lIHRoZSBjb2RlIG5vdy4KIAogICAgIGlmIChjb25kLT5nZXRBc0NvbnN0YW50VW5p
b24oKSkKICAgICB7CiAgICAgICAgIGlmIChjb25kLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0
QkNvbnN0KDApID09IHRydWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBub2RlUGFp
ci5ub2RlMSA/IHNldEFnZ3JlZ2F0ZU9wZXJhdG9yKAotICAgICAgICAgICAgICAgIG5vZGVQYWly
Lm5vZGUxLCBFT3BTZXF1ZW5jZSwgbm9kZVBhaXIubm9kZTEtPmdldExpbmUoKSkgOiBOVUxMOwor
ICAgICAgICAgICAgcmV0dXJuIEVuc3VyZUJsb2NrKG5vZGVQYWlyLm5vZGUxKTsKICAgICAgICAg
fQogICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBub2RlUGFpci5u
b2RlMiA/IHNldEFnZ3JlZ2F0ZU9wZXJhdG9yKAotICAgICAgICAgICAgICAgIG5vZGVQYWlyLm5v
ZGUyLCBFT3BTZXF1ZW5jZSwgbm9kZVBhaXIubm9kZTItPmdldExpbmUoKSkgOiBOVUxMOworICAg
ICAgICAgICAgcmV0dXJuIEVuc3VyZUJsb2NrKG5vZGVQYWlyLm5vZGUyKTsKICAgICAgICAgfQog
ICAgIH0KIAotICAgIFRJbnRlcm1TZWxlY3Rpb24gKm5vZGUgPSBuZXcgVEludGVybVNlbGVjdGlv
bigKLSAgICAgICAgY29uZCwgZW5zdXJlU2VxdWVuY2Uobm9kZVBhaXIubm9kZTEpLCBlbnN1cmVT
ZXF1ZW5jZShub2RlUGFpci5ub2RlMikpOworICAgIFRJbnRlcm1JZkVsc2UgKm5vZGUgPQorICAg
ICAgICBuZXcgVEludGVybUlmRWxzZShjb25kLCBFbnN1cmVCbG9jayhub2RlUGFpci5ub2RlMSks
IEVuc3VyZUJsb2NrKG5vZGVQYWlyLm5vZGUyKSk7CiAgICAgbm9kZS0+c2V0TGluZShsaW5lKTsK
IAogICAgIHJldHVybiBub2RlOwogfQogCi1USW50ZXJtVHlwZWQgKlRJbnRlcm1lZGlhdGU6OmFk
ZENvbW1hKFRJbnRlcm1UeXBlZCAqbGVmdCwKK1RJbnRlcm1UeXBlZCAqVEludGVybWVkaWF0ZTo6
QWRkQ29tbWEoVEludGVybVR5cGVkICpsZWZ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnJpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsaW5lLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgc2hhZGVyVmVyc2lvbikKIHsKLSAgICBUUXVhbGlmaWVy
IHJlc3VsdFF1YWxpZmllciA9IEV2cUNvbnN0OwotICAgIC8vIEVTU0wzLjAwIHNlY3Rpb24gMTIu
NDM6IFRoZSByZXN1bHQgb2YgYSBzZXF1ZW5jZSBvcGVyYXRvciBpcyBub3QgYSBjb25zdGFudC1l
eHByZXNzaW9uLgotICAgIGlmIChzaGFkZXJWZXJzaW9uID49IDMwMCB8fCBsZWZ0LT5nZXRRdWFs
aWZpZXIoKSAhPSBFdnFDb25zdCB8fAotICAgICAgICByaWdodC0+Z2V0UXVhbGlmaWVyKCkgIT0g
RXZxQ29uc3QpCi0gICAgewotICAgICAgICByZXN1bHRRdWFsaWZpZXIgPSBFdnFUZW1wb3Jhcnk7
Ci0gICAgfQotCiAgICAgVEludGVybVR5cGVkICpjb21tYU5vZGUgPSBudWxscHRyOwogICAgIGlm
ICghbGVmdC0+aGFzU2lkZUVmZmVjdHMoKSkKICAgICB7CkBAIC0zMDEsNTggKzIxMCw1MyBAQCBU
SW50ZXJtVHlwZWQgKlRJbnRlcm1lZGlhdGU6OmFkZENvbW1hKFRJCiAgICAgfQogICAgIGVsc2UK
ICAgICB7Ci0gICAgICAgIGNvbW1hTm9kZSA9IGdyb3dBZ2dyZWdhdGUobGVmdCwgcmlnaHQsIGxp
bmUpOwotICAgICAgICBjb21tYU5vZGUtPmdldEFzQWdncmVnYXRlKCktPnNldE9wKEVPcENvbW1h
KTsKLSAgICAgICAgY29tbWFOb2RlLT5zZXRUeXBlKHJpZ2h0LT5nZXRUeXBlKCkpOworICAgICAg
ICBjb21tYU5vZGUgPSBuZXcgVEludGVybUJpbmFyeShFT3BDb21tYSwgbGVmdCwgcmlnaHQpOwor
ICAgICAgICBjb21tYU5vZGUtPnNldExpbmUobGluZSk7CiAgICAgfQorICAgIFRRdWFsaWZpZXIg
cmVzdWx0UXVhbGlmaWVyID0gVEludGVybUJpbmFyeTo6R2V0Q29tbWFRdWFsaWZpZXIoc2hhZGVy
VmVyc2lvbiwgbGVmdCwgcmlnaHQpOwogICAgIGNvbW1hTm9kZS0+Z2V0VHlwZVBvaW50ZXIoKS0+
c2V0UXVhbGlmaWVyKHJlc3VsdFF1YWxpZmllcik7CiAgICAgcmV0dXJuIGNvbW1hTm9kZTsKIH0K
IAotLy8KIC8vIEZvciAiPzoiIHRlc3Qgbm9kZXMuICBUaGVyZSBhcmUgdGhyZWUgY2hpbGRyZW47
IGEgY29uZGl0aW9uLAogLy8gYSB0cnVlIHBhdGgsIGFuZCBhIGZhbHNlIHBhdGguICBUaGUgdHdv
IHBhdGhzIGFyZSBzcGVjaWZpZWQKIC8vIGFzIHNlcGFyYXRlIHBhcmFtZXRlcnMuCiAvLwotLy8g
UmV0dXJucyB0aGUgc2VsZWN0aW9uIG5vZGUgY3JlYXRlZCwgb3Igb25lIG9mIHRydWVCbG9jayBh
bmQgZmFsc2VCbG9jayBpZiB0aGUgZXhwcmVzc2lvbiBjb3VsZCBiZSBmb2xkZWQuCi0vLwotVElu
dGVybVR5cGVkICpUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3Rpb24oVEludGVybVR5cGVkICpjb25k
LCBUSW50ZXJtVHlwZWQgKnRydWVCbG9jaywgVEludGVybVR5cGVkICpmYWxzZUJsb2NrLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAm
bGluZSkKKy8vIFJldHVybnMgdGhlIHRlcm5hcnkgbm9kZSBjcmVhdGVkLCBvciBvbmUgb2YgdHJ1
ZUV4cHJlc3Npb24gYW5kIGZhbHNlRXhwcmVzc2lvbiBpZiB0aGUgZXhwcmVzc2lvbgorLy8gY291
bGQgYmUgZm9sZGVkLgorVEludGVybVR5cGVkICpUSW50ZXJtZWRpYXRlOjpBZGRUZXJuYXJ5U2Vs
ZWN0aW9uKFRJbnRlcm1UeXBlZCAqY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnRydWVFeHByZXNzaW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAq
ZmFsc2VFeHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpCiB7Ci0gICAgVFF1YWxpZmllciByZXN1
bHRRdWFsaWZpZXIgPSBFdnFUZW1wb3Jhcnk7Ci0gICAgaWYgKGNvbmQtPmdldFF1YWxpZmllcigp
ID09IEV2cUNvbnN0ICYmIHRydWVCbG9jay0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QgJiYK
LSAgICAgICAgZmFsc2VCbG9jay0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCi0gICAgewot
ICAgICAgICByZXN1bHRRdWFsaWZpZXIgPSBFdnFDb25zdDsKLSAgICB9CiAgICAgLy8gTm90ZSB0
aGF0IHRoZSBub2RlIHJlc3VsdGluZyBmcm9tIGhlcmUgY2FuIGJlIGEgY29uc3RhbnQgdW5pb24g
d2l0aG91dCBiZWluZyBxdWFsaWZpZWQgYXMKICAgICAvLyBjb25zdGFudC4KICAgICBpZiAoY29u
ZC0+Z2V0QXNDb25zdGFudFVuaW9uKCkpCiAgICAgeworICAgICAgICBUUXVhbGlmaWVyIHJlc3Vs
dFF1YWxpZmllciA9CisgICAgICAgICAgICBUSW50ZXJtVGVybmFyeTo6RGV0ZXJtaW5lUXVhbGlm
aWVyKGNvbmQsIHRydWVFeHByZXNzaW9uLCBmYWxzZUV4cHJlc3Npb24pOwogICAgICAgICBpZiAo
Y29uZC0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldEJDb25zdCgwKSkKICAgICAgICAgewotICAg
ICAgICAgICAgdHJ1ZUJsb2NrLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIocmVzdWx0
UXVhbGlmaWVyKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlQmxvY2s7CisgICAgICAgICAgICB0
cnVlRXhwcmVzc2lvbi0+Z2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVyKHJlc3VsdFF1YWxp
Zmllcik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZUV4cHJlc3Npb247CiAgICAgICAgIH0KICAg
ICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBmYWxzZUJsb2NrLT5nZXRUeXBlUG9p
bnRlcigpLT5zZXRRdWFsaWZpZXIocmVzdWx0UXVhbGlmaWVyKTsKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZUJsb2NrOworICAgICAgICAgICAgZmFsc2VFeHByZXNzaW9uLT5nZXRUeXBlUG9pbnRl
cigpLT5zZXRRdWFsaWZpZXIocmVzdWx0UXVhbGlmaWVyKTsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZUV4cHJlc3Npb247CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLwotICAgIC8vIE1ha2Ug
YSBzZWxlY3Rpb24gbm9kZS4KLSAgICAvLwotICAgIFRJbnRlcm1TZWxlY3Rpb24gKm5vZGUgPSBu
ZXcgVEludGVybVNlbGVjdGlvbihjb25kLCB0cnVlQmxvY2ssIGZhbHNlQmxvY2ssIHRydWVCbG9j
ay0+Z2V0VHlwZSgpKTsKLSAgICBub2RlLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIo
cmVzdWx0UXVhbGlmaWVyKTsKKyAgICAvLyBNYWtlIGEgdGVybmFyeSBub2RlLgorICAgIFRJbnRl
cm1UZXJuYXJ5ICpub2RlID0gbmV3IFRJbnRlcm1UZXJuYXJ5KGNvbmQsIHRydWVFeHByZXNzaW9u
LCBmYWxzZUV4cHJlc3Npb24pOwogICAgIG5vZGUtPnNldExpbmUobGluZSk7CiAKICAgICByZXR1
cm4gbm9kZTsKIH0KIAotVEludGVybVN3aXRjaCAqVEludGVybWVkaWF0ZTo6YWRkU3dpdGNoKAot
ICAgIFRJbnRlcm1UeXBlZCAqaW5pdCwgVEludGVybUFnZ3JlZ2F0ZSAqc3RhdGVtZW50TGlzdCwg
Y29uc3QgVFNvdXJjZUxvYyAmbGluZSkKK1RJbnRlcm1Td2l0Y2ggKlRJbnRlcm1lZGlhdGU6OmFk
ZFN3aXRjaChUSW50ZXJtVHlwZWQgKmluaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVEludGVybUJsb2NrICpzdGF0ZW1lbnRMaXN0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpCiB7CiAgICAg
VEludGVybVN3aXRjaCAqbm9kZSA9IG5ldyBUSW50ZXJtU3dpdGNoKGluaXQsIHN0YXRlbWVudExp
c3QpOwogICAgIG5vZGUtPnNldExpbmUobGluZSk7CkBAIC0zODUsMjQgKzI4OSwyMiBAQCBUSW50
ZXJtQ29uc3RhbnRVbmlvbiAqVEludGVybWVkaWF0ZTo6YWRkCiAgICAgcmV0dXJuIG5vZGU7CiB9
CiAKLVRJbnRlcm1UeXBlZCAqVEludGVybWVkaWF0ZTo6YWRkU3dpenpsZSgKLSAgICBUVmVjdG9y
RmllbGRzICZmaWVsZHMsIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpCitUSW50ZXJtVHlwZWQgKlRJ
bnRlcm1lZGlhdGU6OkFkZFN3aXp6bGUoVEludGVybVR5cGVkICpiYXNlRXhwcmVzc2lvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVmVjdG9yRmllbGRz
ICZmaWVsZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFNvdXJjZUxvYyAmZG90TG9jYXRpb24pCiB7CisgICAgVFZlY3RvcjxpbnQ+IGZpZWxkc1ZlY3Rv
cjsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGZpZWxkcy5udW07ICsraSkKKyAgICB7CisgICAg
ICAgIGZpZWxkc1ZlY3Rvci5wdXNoX2JhY2soZmllbGRzLm9mZnNldHNbaV0pOworICAgIH0KKyAg
ICBUSW50ZXJtU3dpenpsZSAqbm9kZSA9IG5ldyBUSW50ZXJtU3dpenpsZShiYXNlRXhwcmVzc2lv
biwgZmllbGRzVmVjdG9yKTsKKyAgICBub2RlLT5zZXRMaW5lKGRvdExvY2F0aW9uKTsKIAotICAg
IFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZShFT3BTZXF1ZW5j
ZSk7Ci0KLSAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwotICAgIFRJbnRlcm1Db25zdGFudFVuaW9u
ICpjb25zdEludE5vZGU7Ci0gICAgVEludGVybVNlcXVlbmNlICpzZXF1ZW5jZVZlY3RvciA9IG5v
ZGUtPmdldFNlcXVlbmNlKCk7Ci0gICAgVENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXk7Ci0KLSAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGZpZWxkcy5udW07IGkrKykKLSAgICB7Ci0gICAgICAgIHVu
aW9uQXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bMV07Ci0gICAgICAgIHVuaW9uQXJyYXktPnNl
dElDb25zdChmaWVsZHMub2Zmc2V0c1tpXSk7Ci0gICAgICAgIGNvbnN0SW50Tm9kZSA9IGFkZENv
bnN0YW50VW5pb24oCi0gICAgICAgICAgICB1bmlvbkFycmF5LCBUVHlwZShFYnRJbnQsIEVicFVu
ZGVmaW5lZCwgRXZxQ29uc3QpLCBsaW5lKTsKLSAgICAgICAgc2VxdWVuY2VWZWN0b3ItPnB1c2hf
YmFjayhjb25zdEludE5vZGUpOworICAgIFRJbnRlcm1UeXBlZCAqZm9sZGVkID0gbm9kZS0+Zm9s
ZCgpOworICAgIGlmIChmb2xkZWQpCisgICAgeworICAgICAgICByZXR1cm4gZm9sZGVkOwogICAg
IH0KIAogICAgIHJldHVybiBub2RlOwpAQCAtNDE1LDcgKzMxNyw3IEBAIFRJbnRlcm1Ob2RlICpU
SW50ZXJtZWRpYXRlOjphZGRMb29wKAogICAgIFRMb29wVHlwZSB0eXBlLCBUSW50ZXJtTm9kZSAq
aW5pdCwgVEludGVybVR5cGVkICpjb25kLCBUSW50ZXJtVHlwZWQgKmV4cHIsCiAgICAgVEludGVy
bU5vZGUgKmJvZHksIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpCiB7Ci0gICAgVEludGVybU5vZGUg
Km5vZGUgPSBuZXcgVEludGVybUxvb3AodHlwZSwgaW5pdCwgY29uZCwgZXhwciwgZW5zdXJlU2Vx
dWVuY2UoYm9keSkpOworICAgIFRJbnRlcm1Ob2RlICpub2RlID0gbmV3IFRJbnRlcm1Mb29wKHR5
cGUsIGluaXQsIGNvbmQsIGV4cHIsIEVuc3VyZUJsb2NrKGJvZHkpKTsKICAgICBub2RlLT5zZXRM
aW5lKGxpbmUpOwogCiAgICAgcmV0dXJuIG5vZGU7CkBAIC00MzksMzQgKzM0MSw4IEBAIFRJbnRl
cm1CcmFuY2gqIFRJbnRlcm1lZGlhdGU6OmFkZEJyYW5jaCgKICAgICByZXR1cm4gbm9kZTsKIH0K
IAotLy8KLS8vIFRoaXMgaXMgdG8gYmUgZXhlY3V0ZWQgb25jZSB0aGUgZmluYWwgcm9vdCBpcyBw
dXQgb24gdG9wIGJ5IHRoZSBwYXJzaW5nCi0vLyBwcm9jZXNzLgotLy8KLVRJbnRlcm1BZ2dyZWdh
dGUgKlRJbnRlcm1lZGlhdGU6OnBvc3RQcm9jZXNzKFRJbnRlcm1Ob2RlICpyb290KQotewotICAg
IGlmIChyb290ID09IG51bGxwdHIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgLy8K
LSAgICAvLyBGaW5pc2ggb2ZmIHRoZSB0b3AgbGV2ZWwgc2VxdWVuY2UsIGlmIGFueQotICAgIC8v
Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSAqYWdnUm9vdCA9IHJvb3QtPmdldEFzQWdncmVnYXRlKCk7
Ci0gICAgaWYgKGFnZ1Jvb3QgIT0gbnVsbHB0ciAmJiBhZ2dSb290LT5nZXRPcCgpID09IEVPcE51
bGwpCi0gICAgewotICAgICAgICBhZ2dSb290LT5zZXRPcChFT3BTZXF1ZW5jZSk7Ci0gICAgfQot
ICAgIGVsc2UgaWYgKGFnZ1Jvb3QgPT0gbnVsbHB0ciB8fCBhZ2dSb290LT5nZXRPcCgpICE9IEVP
cFNlcXVlbmNlKQotICAgIHsKLSAgICAgICAgYWdnUm9vdCA9IG5ldyBUSW50ZXJtQWdncmVnYXRl
KEVPcFNlcXVlbmNlKTsKLSAgICAgICAgYWdnUm9vdC0+c2V0TGluZShyb290LT5nZXRMaW5lKCkp
OwotICAgICAgICBhZ2dSb290LT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2socm9vdCk7Ci0gICAg
fQotCi0gICAgcmV0dXJuIGFnZ1Jvb3Q7Ci19Ci0KLVRJbnRlcm1UeXBlZCAqVEludGVybWVkaWF0
ZTo6Zm9sZEFnZ3JlZ2F0ZUJ1aWx0SW4oVEludGVybUFnZ3JlZ2F0ZSAqYWdncmVnYXRlKQorVElu
dGVybVR5cGVkICpUSW50ZXJtZWRpYXRlOjpmb2xkQWdncmVnYXRlQnVpbHRJbihUSW50ZXJtQWdn
cmVnYXRlICphZ2dyZWdhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFREaWFnbm9zdGljcyAqZGlhZ25vc3RpY3MpCiB7CiAgICAgc3dpdGNoIChh
Z2dyZWdhdGUtPmdldE9wKCkpCiAgICAgewpAQCAtNDkzLDE2ICszNjksMTQgQEAgVEludGVybVR5
cGVkICpUSW50ZXJtZWRpYXRlOjpmb2xkQWdncmVnYQogICAgICAgICBjYXNlIEVPcEZhY2VGb3J3
YXJkOgogICAgICAgICBjYXNlIEVPcFJlZmxlY3Q6CiAgICAgICAgIGNhc2UgRU9wUmVmcmFjdDoK
LSAgICAgICAgICAgIHJldHVybiBhZ2dyZWdhdGUtPmZvbGQobUluZm9TaW5rKTsKKyAgICAgICAg
ICAgIHJldHVybiBhZ2dyZWdhdGUtPmZvbGQoZGlhZ25vc3RpY3MpOwogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgLy8gVE9ETzogQWRkIHN1cHBvcnQgZm9yIGZvbGRpbmcgYXJyYXkgY29u
c3RydWN0b3JzCiAgICAgICAgICAgICBpZiAoYWdncmVnYXRlLT5pc0NvbnN0cnVjdG9yKCkgJiYg
IWFnZ3JlZ2F0ZS0+aXNBcnJheSgpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJl
dHVybiBhZ2dyZWdhdGUtPmZvbGQobUluZm9TaW5rKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
YWdncmVnYXRlLT5mb2xkKGRpYWdub3N0aWNzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IC8vIENvbnN0YW50IGZvbGRpbmcgbm90IHN1cHBvcnRlZCBmb3IgdGhlIGJ1aWx0LWluLgogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotCi0gICAgcmV0dXJuIG51bGxwdHI7CiB9
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9J
bnRlcm1lZGlhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1lZGlhdGUuaAkocmV2aXNpb24gMjA3ODA0KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtZWRp
YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2LDQyICsxNiw0MiBAQCBzdHJ1Y3QgVFZlY3RvckZp
ZWxkcwogfTsKIAogLy8KLS8vIFNldCBvZiBoZWxwZXIgZnVuY3Rpb25zIHRvIGhlbHAgcGFyc2Ug
YW5kIGJ1aWxkIHRoZSB0cmVlLgorLy8gU2V0IG9mIGhlbHBlciBmdW5jdGlvbnMgdG8gaGVscCBi
dWlsZCB0aGUgdHJlZS4KIC8vCi1jbGFzcyBUSW5mb1Npbms7CiBjbGFzcyBUSW50ZXJtZWRpYXRl
CiB7CiAgIHB1YmxpYzoKICAgICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKCk7Ci0gICAgVElu
dGVybWVkaWF0ZShUSW5mb1NpbmsgJmkpCi0gICAgICAgIDogbUluZm9TaW5rKGkpIHsgfQorICAg
IFRJbnRlcm1lZGlhdGUoKSB7fQogCiAgICAgVEludGVybVN5bWJvbCAqYWRkU3ltYm9sKAogICAg
ICAgICBpbnQgaWQsIGNvbnN0IFRTdHJpbmcgJiwgY29uc3QgVFR5cGUgJiwgY29uc3QgVFNvdXJj
ZUxvYyAmKTsKLSAgICBUSW50ZXJtVHlwZWQgKmFkZEJpbmFyeU1hdGgoCi0gICAgICAgIFRPcGVy
YXRvciBvcCwgVEludGVybVR5cGVkICpsZWZ0LCBUSW50ZXJtVHlwZWQgKnJpZ2h0LCBjb25zdCBU
U291cmNlTG9jICYpOwotICAgIFRJbnRlcm1UeXBlZCAqYWRkQXNzaWduKAotICAgICAgICBUT3Bl
cmF0b3Igb3AsIFRJbnRlcm1UeXBlZCAqbGVmdCwgVEludGVybVR5cGVkICpyaWdodCwgY29uc3Qg
VFNvdXJjZUxvYyAmKTsKLSAgICBUSW50ZXJtVHlwZWQgKmFkZEluZGV4KAotICAgICAgICBUT3Bl
cmF0b3Igb3AsIFRJbnRlcm1UeXBlZCAqYmFzZSwgVEludGVybVR5cGVkICppbmRleCwgY29uc3Qg
VFNvdXJjZUxvYyAmKTsKKyAgICBUSW50ZXJtVHlwZWQgKmFkZEluZGV4KFRPcGVyYXRvciBvcCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqYmFzZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5kZXgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsaW5lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVERpYWdub3N0aWNzICpkaWFnbm9zdGljcyk7CiAgICAgVEludGVybVR5cGVkICphZGRV
bmFyeU1hdGgoCiAgICAgICAgIFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkICpjaGlsZCwgY29u
c3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3QgVFR5cGUgKmZ1bmNSZXR1cm5UeXBlKTsKICAgICBU
SW50ZXJtQWdncmVnYXRlICpncm93QWdncmVnYXRlKAogICAgICAgICBUSW50ZXJtTm9kZSAqbGVm
dCwgVEludGVybU5vZGUgKnJpZ2h0LCBjb25zdCBUU291cmNlTG9jICYpOwotICAgIFRJbnRlcm1B
Z2dyZWdhdGUgKm1ha2VBZ2dyZWdhdGUoVEludGVybU5vZGUgKm5vZGUsIGNvbnN0IFRTb3VyY2VM
b2MgJik7Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSAqZW5zdXJlU2VxdWVuY2UoVEludGVybU5vZGUg
Km5vZGUpOworICAgIHN0YXRpYyBUSW50ZXJtQWdncmVnYXRlICpNYWtlQWdncmVnYXRlKFRJbnRl
cm1Ob2RlICpub2RlLCBjb25zdCBUU291cmNlTG9jICZsaW5lKTsKKyAgICBzdGF0aWMgVEludGVy
bUJsb2NrICpFbnN1cmVCbG9jayhUSW50ZXJtTm9kZSAqbm9kZSk7CiAgICAgVEludGVybUFnZ3Jl
Z2F0ZSAqc2V0QWdncmVnYXRlT3BlcmF0b3IoVEludGVybU5vZGUgKiwgVE9wZXJhdG9yLCBjb25z
dCBUU291cmNlTG9jICYpOwotICAgIFRJbnRlcm1Ob2RlICphZGRTZWxlY3Rpb24oVEludGVybVR5
cGVkICpjb25kLCBUSW50ZXJtTm9kZVBhaXIgY29kZSwgY29uc3QgVFNvdXJjZUxvYyAmKTsKLSAg
ICBUSW50ZXJtVHlwZWQgKmFkZFNlbGVjdGlvbihUSW50ZXJtVHlwZWQgKmNvbmQsIFRJbnRlcm1U
eXBlZCAqdHJ1ZUJsb2NrLCBUSW50ZXJtVHlwZWQgKmZhbHNlQmxvY2ssCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbGluZSk7Ci0gICAgVEludGVybVN3
aXRjaCAqYWRkU3dpdGNoKAotICAgICAgICBUSW50ZXJtVHlwZWQgKmluaXQsIFRJbnRlcm1BZ2dy
ZWdhdGUgKnN0YXRlbWVudExpc3QsIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpOworICAgIFRJbnRl
cm1Ob2RlICphZGRJZkVsc2UoVEludGVybVR5cGVkICpjb25kLCBUSW50ZXJtTm9kZVBhaXIgY29k
ZSwgY29uc3QgVFNvdXJjZUxvYyAmbGluZSk7CisgICAgc3RhdGljIFRJbnRlcm1UeXBlZCAqQWRk
VGVybmFyeVNlbGVjdGlvbihUSW50ZXJtVHlwZWQgKmNvbmQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnRydWVFeHByZXNzaW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVk
ICpmYWxzZUV4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUU291cmNlTG9jICZsaW5lKTsKKyAgICBUSW50ZXJtU3dpdGNoICphZGRT
d2l0Y2goVEludGVybVR5cGVkICppbml0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
SW50ZXJtQmxvY2sgKnN0YXRlbWVudExpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpOwogICAgIFRJbnRlcm1DYXNlICphZGRDYXNlKAogICAg
ICAgICBUSW50ZXJtVHlwZWQgKmNvbmRpdGlvbiwgY29uc3QgVFNvdXJjZUxvYyAmbGluZSk7Ci0g
ICAgVEludGVybVR5cGVkICphZGRDb21tYShUSW50ZXJtVHlwZWQgKmxlZnQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnJpZ2h0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBzaGFkZXJWZXJzaW9uKTsKKyAgICBzdGF0aWMgVEludGVybVR5cGVkICpBZGRDb21t
YShUSW50ZXJtVHlwZWQgKmxlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VEludGVybVR5cGVkICpyaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUU291cmNlTG9jICZsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBzaGFkZXJWZXJzaW9uKTsKICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqYWRkQ29uc3Rh
bnRVbmlvbihjb25zdCBUQ29uc3RhbnRVbmlvbiAqY29uc3RhbnRVbmlvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAmdHlwZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZs
aW5lKTsKQEAgLTU5LDE3ICs1OSwxNiBAQCBjbGFzcyBUSW50ZXJtZWRpYXRlCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgVEludGVybU5vZGUgKiwgY29uc3QgVFNvdXJjZUxvYyAmKTsKICAgICBU
SW50ZXJtQnJhbmNoICphZGRCcmFuY2goVE9wZXJhdG9yLCBjb25zdCBUU291cmNlTG9jICYpOwog
ICAgIFRJbnRlcm1CcmFuY2ggKmFkZEJyYW5jaChUT3BlcmF0b3IsIFRJbnRlcm1UeXBlZCAqLCBj
b25zdCBUU291cmNlTG9jICYpOwotICAgIFRJbnRlcm1UeXBlZCAqYWRkU3dpenpsZShUVmVjdG9y
RmllbGRzICYsIGNvbnN0IFRTb3VyY2VMb2MgJik7Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSAqcG9z
dFByb2Nlc3MoVEludGVybU5vZGUgKnJvb3QpOworICAgIHN0YXRpYyBUSW50ZXJtVHlwZWQgKkFk
ZFN3aXp6bGUoVEludGVybVR5cGVkICpiYXNlRXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRWZWN0b3JGaWVsZHMgJmZpZWxkcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmRvdExvY2F0aW9u
KTsKIAogICAgIHN0YXRpYyB2b2lkIG91dHB1dFRyZWUoVEludGVybU5vZGUgKiwgVEluZm9TaW5r
QmFzZSAmKTsKIAotICAgIFRJbnRlcm1UeXBlZCAqZm9sZEFnZ3JlZ2F0ZUJ1aWx0SW4oVEludGVy
bUFnZ3JlZ2F0ZSAqYWdncmVnYXRlKTsKKyAgICBUSW50ZXJtVHlwZWQgKmZvbGRBZ2dyZWdhdGVC
dWlsdEluKFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3JlZ2F0ZSwgVERpYWdub3N0aWNzICpkaWFnbm9z
dGljcyk7CiAKICAgcHJpdmF0ZToKICAgICB2b2lkIG9wZXJhdG9yPShUSW50ZXJtZWRpYXRlICYp
OyAvLyBwcmV2ZW50IGFzc2lnbm1lbnRzCi0KLSAgICBUSW5mb1NpbmsgJiBtSW5mb1Npbms7CiB9
OwogCiAjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfSU5URVJNRURJQVRFX0hfCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PcGVyYXRv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvT3BlcmF0b3IuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PcGVyYXRvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYyLDggKzYyLDYgQEAgY29uc3QgY2hhciAqR2V0T3BlcmF0b3JTdHJpbmco
VE9wZXJhdG9yIAogICAgICAgY2FzZSBFT3BJbmRleERpcmVjdFN0cnVjdDoKICAgICAgIGNhc2Ug
RU9wSW5kZXhEaXJlY3RJbnRlcmZhY2VCbG9jazogcmV0dXJuICIuIjsKIAotICAgICAgY2FzZSBF
T3BWZWN0b3JTd2l6emxlOiByZXR1cm4gIi4iOwotCiAgICAgICBjYXNlIEVPcFJhZGlhbnM6IHJl
dHVybiAicmFkaWFucyI7CiAgICAgICBjYXNlIEVPcERlZ3JlZXM6IHJldHVybiAiZGVncmVlcyI7
CiAgICAgICBjYXNlIEVPcFNpbjogcmV0dXJuICJzaW4iOwpAQCAtMTk5LDMgKzE5NywzMSBAQCBj
b25zdCBjaGFyICpHZXRPcGVyYXRvclN0cmluZyhUT3BlcmF0b3IgCiAgICAgcmV0dXJuICIiOwog
fQogCitib29sIElzQXNzaWdubWVudChUT3BlcmF0b3Igb3ApCit7CisgICAgc3dpdGNoIChvcCkK
KyAgICB7CisgICAgICAgIGNhc2UgRU9wUG9zdEluY3JlbWVudDoKKyAgICAgICAgY2FzZSBFT3BQ
b3N0RGVjcmVtZW50OgorICAgICAgICBjYXNlIEVPcFByZUluY3JlbWVudDoKKyAgICAgICAgY2Fz
ZSBFT3BQcmVEZWNyZW1lbnQ6CisgICAgICAgIGNhc2UgRU9wQXNzaWduOgorICAgICAgICBjYXNl
IEVPcEFkZEFzc2lnbjoKKyAgICAgICAgY2FzZSBFT3BTdWJBc3NpZ246CisgICAgICAgIGNhc2Ug
RU9wTXVsQXNzaWduOgorICAgICAgICBjYXNlIEVPcFZlY3RvclRpbWVzTWF0cml4QXNzaWduOgor
ICAgICAgICBjYXNlIEVPcFZlY3RvclRpbWVzU2NhbGFyQXNzaWduOgorICAgICAgICBjYXNlIEVP
cE1hdHJpeFRpbWVzU2NhbGFyQXNzaWduOgorICAgICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzTWF0
cml4QXNzaWduOgorICAgICAgICBjYXNlIEVPcERpdkFzc2lnbjoKKyAgICAgICAgY2FzZSBFT3BJ
TW9kQXNzaWduOgorICAgICAgICBjYXNlIEVPcEJpdFNoaWZ0TGVmdEFzc2lnbjoKKyAgICAgICAg
Y2FzZSBFT3BCaXRTaGlmdFJpZ2h0QXNzaWduOgorICAgICAgICBjYXNlIEVPcEJpdHdpc2VBbmRB
c3NpZ246CisgICAgICAgIGNhc2UgRU9wQml0d2lzZVhvckFzc2lnbjoKKyAgICAgICAgY2FzZSBF
T3BCaXR3aXNlT3JBc3NpZ246CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PcGVyYXRvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L09wZXJhdG9yLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL09wZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEz
LDkgKzEzLDcgQEAKIGVudW0gVE9wZXJhdG9yCiB7CiAgICAgRU9wTnVsbCwgICAgICAgICAgICAv
LyBpZiBpbiBhIG5vZGUsIHNob3VsZCBvbmx5IG1lYW4gYSBub2RlIGlzIHN0aWxsIGJlaW5nIGJ1
aWx0Ci0gICAgRU9wU2VxdWVuY2UsICAgICAgICAvLyBkZW5vdGVzIGEgbGlzdCBvZiBzdGF0ZW1l
bnRzLCBvciBwYXJhbWV0ZXJzLCBldGMuCiAgICAgRU9wRnVuY3Rpb25DYWxsLAotICAgIEVPcEZ1
bmN0aW9uLCAgICAgICAgLy8gRm9yIGZ1bmN0aW9uIGRlZmluaXRpb24KICAgICBFT3BQYXJhbWV0
ZXJzLCAgICAgIC8vIGFuIGFnZ3JlZ2F0ZSBsaXN0aW5nIHRoZSBwYXJhbWV0ZXJzIHRvIGEgZnVu
Y3Rpb24KIAogICAgIEVPcERlY2xhcmF0aW9uLApAQCAtNzcsOCArNzUsNiBAQCBlbnVtIFRPcGVy
YXRvcgogICAgIEVPcEluZGV4RGlyZWN0U3RydWN0LAogICAgIEVPcEluZGV4RGlyZWN0SW50ZXJm
YWNlQmxvY2ssCiAKLSAgICBFT3BWZWN0b3JTd2l6emxlLAotCiAgICAgLy8KICAgICAvLyBCdWls
dC1pbiBmdW5jdGlvbnMgcG90ZW50aWFsbHkgbWFwcGVkIHRvIG9wZXJhdG9ycwogICAgIC8vCkBA
IC0yMjgsNCArMjI0LDcgQEAgZW51bSBUT3BlcmF0b3IKIC8vIFJldHVybnMgdGhlIHN0cmluZyBj
b3JyZXNwb25kaW5nIHRvIHRoZSBvcGVyYXRvciBpbiBHTFNMCiBjb25zdCBjaGFyKiBHZXRPcGVy
YXRvclN0cmluZyhUT3BlcmF0b3Igb3ApOwogCisvLyBTYXkgd2hldGhlciBvciBub3QgYSBiaW5h
cnkgb3IgdW5hcnkgb3BlcmF0aW9uIGNoYW5nZXMgdGhlIHZhbHVlIG9mIGEgdmFyaWFibGUuCiti
b29sIElzQXNzaWdubWVudChUT3BlcmF0b3Igb3ApOworCiAjZW5kaWYgIC8vIENPTVBJTEVSX1RS
QU5TTEFUT1JfT1BFUkFUT1JfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL091dHB1dEdMU0xCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRHTFNMQmFz
ZS5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL091dHB1dEdMU0xCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjIsMTYgKzIyLDE3IEBAIFRTdHJpbmcgYXJyYXlCcmFja2V0cyhjb25zdCBUVHlwZSAmdHlwZSkK
IAogYm9vbCBpc1NpbmdsZVN0YXRlbWVudChUSW50ZXJtTm9kZSAqbm9kZSkKIHsKLSAgICBpZiAo
Y29uc3QgVEludGVybUFnZ3JlZ2F0ZSAqYWdncmVnYXRlID0gbm9kZS0+Z2V0QXNBZ2dyZWdhdGUo
KSkKKyAgICBpZiAobm9kZS0+Z2V0QXNGdW5jdGlvbkRlZmluaXRpb24oKSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiAoYWdncmVnYXRlLT5nZXRPcCgpICE9IEVPcEZ1bmN0aW9uKSAmJgotICAgICAg
ICAgICAgICAgKGFnZ3JlZ2F0ZS0+Z2V0T3AoKSAhPSBFT3BTZXF1ZW5jZSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgZWxzZSBpZiAobm9kZS0+Z2V0QXNCbG9jaygpKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBlbHNlIGlmIChjb25zdCBUSW50
ZXJtU2VsZWN0aW9uICpzZWxlY3Rpb24gPSBub2RlLT5nZXRBc1NlbGVjdGlvbk5vZGUoKSkKKyAg
ICBlbHNlIGlmIChub2RlLT5nZXRBc0lmRWxzZU5vZGUoKSkKICAgICB7Ci0gICAgICAgIC8vIFRl
cm5hcnkgb3BlcmF0b3JzIGFyZSB1c3VhbGx5IHBhcnQgb2YgYW4gYXNzaWdubWVudCBvcGVyYXRv
ci4KLSAgICAgICAgLy8gVGhpcyBoYW5kbGVzIHRob3NlIHJhcmUgY2FzZXMgaW4gd2hpY2ggdGhl
eSBhcmUgYWxsIGJ5IHRoZW1zZWx2ZXMuCi0gICAgICAgIHJldHVybiBzZWxlY3Rpb24tPnVzZXNU
ZXJuYXJ5T3BlcmF0b3IoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBlbHNl
IGlmIChub2RlLT5nZXRBc0xvb3BOb2RlKCkpCiAgICAgewpAQCAtMjQzLDIwICsyNDQsMjAgQEAg
Y29uc3QgVENvbnN0YW50VW5pb24gKlRPdXRwdXRHTFNMQmFzZTo6dwogICAgIHJldHVybiBwQ29u
c3RVbmlvbjsKIH0KIAotdm9pZCBUT3V0cHV0R0xTTEJhc2U6OndyaXRlQ29uc3RydWN0b3JUcmlw
bGV0KFZpc2l0IHZpc2l0LCBjb25zdCBUVHlwZSAmdHlwZSwgY29uc3QgY2hhciAqY29uc3RydWN0
b3JCYXNlVHlwZSkKK3ZvaWQgVE91dHB1dEdMU0xCYXNlOjp3cml0ZUNvbnN0cnVjdG9yVHJpcGxl
dChWaXNpdCB2aXNpdCwgY29uc3QgVFR5cGUgJnR5cGUpCiB7CiAgICAgVEluZm9TaW5rQmFzZSAm
b3V0ID0gb2JqU2luaygpOwogICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkKICAgICB7CiAgICAg
ICAgIGlmICh0eXBlLmlzQXJyYXkoKSkKICAgICAgICAgewotICAgICAgICAgICAgb3V0IDw8IGNv
bnN0cnVjdG9yQmFzZVR5cGU7CisgICAgICAgICAgICBvdXQgPDwgZ2V0VHlwZU5hbWUodHlwZSk7
CiAgICAgICAgICAgICBvdXQgPDwgYXJyYXlCcmFja2V0cyh0eXBlKTsKICAgICAgICAgICAgIG91
dCA8PCAiKCI7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAg
ICBvdXQgPDwgY29uc3RydWN0b3JCYXNlVHlwZSA8PCAiKCI7CisgICAgICAgICAgICBvdXQgPDwg
Z2V0VHlwZU5hbWUodHlwZSkgPDwgIigiOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UKQEAg
LTI4MiwyNDEgKzI4MywyMjIgQEAgdm9pZCBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0Q29uc3RhbnRV
bmlvbgogICAgIHdyaXRlQ29uc3RhbnRVbmlvbihub2RlLT5nZXRUeXBlKCksIG5vZGUtPmdldFVu
aW9uQXJyYXlQb2ludGVyKCkpOwogfQogCitib29sIFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRTd2l6
emxlKFZpc2l0IHZpc2l0LCBUSW50ZXJtU3dpenpsZSAqbm9kZSkKK3sKKyAgICBUSW5mb1NpbmtC
YXNlICZvdXQgPSBvYmpTaW5rKCk7CisgICAgaWYgKHZpc2l0ID09IFBvc3RWaXNpdCkKKyAgICB7
CisgICAgICAgIG91dCA8PCAiLiI7CisgICAgICAgIG5vZGUtPndyaXRlT2Zmc2V0c0FzWFlaVygm
b3V0KTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgVE91dHB1dEdMU0xCYXNl
Ojp2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkKIHsKICAgICBi
b29sIHZpc2l0Q2hpbGRyZW4gPSB0cnVlOwogICAgIFRJbmZvU2lua0Jhc2UgJm91dCA9IG9ialNp
bmsoKTsKICAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpCiAgICAgewotICAgICAgY2FzZSBFT3BJ
bml0aWFsaXplOgotICAgICAgICBpZiAodmlzaXQgPT0gSW5WaXNpdCkKLSAgICAgICAgewotICAg
ICAgICAgICAgb3V0IDw8ICIgPSAiOwotICAgICAgICAgICAgLy8gUkhTIG9mIGluaXRpYWxpemUg
aXMgbm90IGJlaW5nIGRlY2xhcmVkLgotICAgICAgICAgICAgbURlY2xhcmluZ1ZhcmlhYmxlcyA9
IGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BBc3NpZ246
Ci0gICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiID0gIiwgIikiKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgICBjYXNlIEVPcEFkZEFzc2lnbjoKLSAgICAgICAgd3JpdGVUcmlwbGV0KHZp
c2l0LCAiKCIsICIgKz0gIiwgIikiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFN1
YkFzc2lnbjoKLSAgICAgICAgd3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIsICIgLT0gIiwgIikiKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcERpdkFzc2lnbjoKLSAgICAgICAgd3JpdGVU
cmlwbGV0KHZpc2l0LCAiKCIsICIgLz0gIiwgIikiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBj
YXNlIEVPcElNb2RBc3NpZ246Ci0gICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiICU9
ICIsICIpIik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgLy8gTm90aWNlIHRoZSBmYWxsLXRocm91
Z2guCi0gICAgICBjYXNlIEVPcE11bEFzc2lnbjoKLSAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNN
YXRyaXhBc3NpZ246Ci0gICAgICBjYXNlIEVPcFZlY3RvclRpbWVzU2NhbGFyQXNzaWduOgotICAg
ICAgY2FzZSBFT3BNYXRyaXhUaW1lc1NjYWxhckFzc2lnbjoKLSAgICAgIGNhc2UgRU9wTWF0cml4
VGltZXNNYXRyaXhBc3NpZ246Ci0gICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiICo9
ICIsICIpIik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BCaXRTaGlmdExlZnRBc3Np
Z246Ci0gICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiIDw8PSAiLCAiKSIpOwotICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQml0U2hpZnRSaWdodEFzc2lnbjoKLSAgICAgICAg
d3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIsICIgPj49ICIsICIpIik7Ci0gICAgICAgIGJyZWFrOwot
ICAgICAgY2FzZSBFT3BCaXR3aXNlQW5kQXNzaWduOgotICAgICAgICB3cml0ZVRyaXBsZXQodmlz
aXQsICIoIiwgIiAmPSAiLCAiKSIpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQml0
d2lzZVhvckFzc2lnbjoKLSAgICAgICAgd3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIsICIgXj0gIiwg
IikiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEJpdHdpc2VPckFzc2lnbjoKLSAg
ICAgICAgd3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIsICIgfD0gIiwgIikiKTsKLSAgICAgICAgYnJl
YWs7Ci0KLSAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3Q6Ci0gICAgICAgIHdyaXRlVHJpcGxldCh2
aXNpdCwgTlVMTCwgIlsiLCAiXSIpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wSW5k
ZXhJbmRpcmVjdDoKLSAgICAgICAgaWYgKG5vZGUtPmdldEFkZEluZGV4Q2xhbXAoKSkKLSAgICAg
ICAgeworICAgICAgICBjYXNlIEVPcENvbW1hOgorICAgICAgICAgICAgd3JpdGVUcmlwbGV0KHZp
c2l0LCAiKCIsICIsICIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBF
T3BJbml0aWFsaXplOgogICAgICAgICAgICAgaWYgKHZpc2l0ID09IEluVmlzaXQpCiAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKG1DbGFtcGluZ1N0cmF0ZWd5ID09IFNIX0NMQU1Q
X1dJVEhfQ0xBTVBfSU5UUklOU0lDKQotICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIltpbnQo
Y2xhbXAoZmxvYXQoIjsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IG91dCA8PCAiW3dlYmdsX2ludF9jbGFtcCgiOworICAgICAgICAgICAgICAgIG91dCA8PCAiID0g
IjsKKyAgICAgICAgICAgICAgICAvLyBSSFMgb2YgaW5pdGlhbGl6ZSBpcyBub3QgYmVpbmcgZGVj
bGFyZWQuCisgICAgICAgICAgICAgICAgbURlY2xhcmluZ1ZhcmlhYmxlcyA9IGZhbHNlOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAodmlzaXQgPT0gUG9zdFZpc2l0KQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGludCBtYXhTaXplOwotICAgICAgICAgICAgICAg
IFRJbnRlcm1UeXBlZCAqbGVmdCA9IG5vZGUtPmdldExlZnQoKTsKLSAgICAgICAgICAgICAgICBU
VHlwZSBsZWZ0VHlwZSA9IGxlZnQtPmdldFR5cGUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEVPcEFzc2lnbjoKKyAgICAgICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigi
LCAiID0gIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEFkZEFz
c2lnbjoKKyAgICAgICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiICs9ICIsICIpIik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BTdWJBc3NpZ246CisgICAgICAg
ICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgIiAtPSAiLCAiKSIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRU9wRGl2QXNzaWduOgorICAgICAgICAgICAgd3JpdGVUcmlw
bGV0KHZpc2l0LCAiKCIsICIgLz0gIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEVPcElNb2RBc3NpZ246CisgICAgICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICIo
IiwgIiAlPSAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIE5vdGljZSB0
aGUgZmFsbC10aHJvdWdoLgorICAgICAgICBjYXNlIEVPcE11bEFzc2lnbjoKKyAgICAgICAgY2Fz
ZSBFT3BWZWN0b3JUaW1lc01hdHJpeEFzc2lnbjoKKyAgICAgICAgY2FzZSBFT3BWZWN0b3JUaW1l
c1NjYWxhckFzc2lnbjoKKyAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1NjYWxhckFzc2lnbjoK
KyAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc01hdHJpeEFzc2lnbjoKKyAgICAgICAgICAgIHdy
aXRlVHJpcGxldCh2aXNpdCwgIigiLCAiICo9ICIsICIpIik7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBFT3BCaXRTaGlmdExlZnRBc3NpZ246CisgICAgICAgICAgICB3cml0ZVRy
aXBsZXQodmlzaXQsICIoIiwgIiA8PD0gIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEVPcEJpdFNoaWZ0UmlnaHRBc3NpZ246CisgICAgICAgICAgICB3cml0ZVRyaXBs
ZXQodmlzaXQsICIoIiwgIiA+Pj0gIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEVPcEJpdHdpc2VBbmRBc3NpZ246CisgICAgICAgICAgICB3cml0ZVRyaXBsZXQodmlz
aXQsICIoIiwgIiAmPSAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
RU9wQml0d2lzZVhvckFzc2lnbjoKKyAgICAgICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigi
LCAiIF49ICIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BCaXR3
aXNlT3JBc3NpZ246CisgICAgICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgIiB8PSAi
LCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAgICBpZiAobGVmdC0+
aXNBcnJheSgpKQorICAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0OgorICAgICAgICAgICAgd3Jp
dGVUcmlwbGV0KHZpc2l0LCBOVUxMLCAiWyIsICJdIik7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBFT3BJbmRleEluZGlyZWN0OgorICAgICAgICAgICAgaWYgKG5vZGUtPmdldEFk
ZEluZGV4Q2xhbXAoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAodmlzaXQg
PT0gSW5WaXNpdCkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFRo
ZSBzaGFkZXIgd2lsbCBmYWlsIHZhbGlkYXRpb24gaWYgdGhlIGFycmF5IGxlbmd0aCBpcyBub3Qg
PiAwLgotICAgICAgICAgICAgICAgICAgICBtYXhTaXplID0gbGVmdFR5cGUuZ2V0QXJyYXlTaXpl
KCkgLSAxOworICAgICAgICAgICAgICAgICAgICBpZiAobUNsYW1waW5nU3RyYXRlZ3kgPT0gU0hf
Q0xBTVBfV0lUSF9DTEFNUF9JTlRSSU5TSUMpCisgICAgICAgICAgICAgICAgICAgICAgICBvdXQg
PDwgIltpbnQoY2xhbXAoZmxvYXQoIjsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICAgICAgb3V0IDw8ICJbd2ViZ2xfaW50X2NsYW1wKCI7CiAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBlbHNlIGlmICh2
aXNpdCA9PSBQb3N0VmlzaXQpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICBtYXhTaXplID0gbGVmdFR5cGUuZ2V0Tm9taW5hbFNpemUoKSAtIDE7CisgICAgICAgICAgICAg
ICAgICAgIGludCBtYXhTaXplOworICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmxl
ZnQgPSBub2RlLT5nZXRMZWZ0KCk7CisgICAgICAgICAgICAgICAgICAgIFRUeXBlIGxlZnRUeXBl
ICAgICA9IGxlZnQtPmdldFR5cGUoKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAobGVmdC0+
aXNBcnJheSgpKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBUaGUgc2hhZGVyIHdpbGwgZmFpbCB2YWxpZGF0aW9uIGlmIHRoZSBhcnJheSBsZW5ndGgg
aXMgbm90ID4gMC4KKyAgICAgICAgICAgICAgICAgICAgICAgIG1heFNpemUgPSBzdGF0aWNfY2Fz
dDxpbnQ+KGxlZnRUeXBlLmdldEFycmF5U2l6ZSgpKSAtIDE7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBtYXhTaXplID0gbGVmdFR5cGUuZ2V0Tm9taW5hbFNpemUoKSAt
IDE7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBpZiAobUNs
YW1waW5nU3RyYXRlZ3kgPT0gU0hfQ0xBTVBfV0lUSF9DTEFNUF9JTlRSSU5TSUMpCisgICAgICAg
ICAgICAgICAgICAgICAgICBvdXQgPDwgIiksIDAuMCwgZmxvYXQoIiA8PCBtYXhTaXplIDw8ICIp
KSldIjsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAg
b3V0IDw8ICIsIDAsICIgPDwgbWF4U2l6ZSA8PCAiKV0iOwogICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICB3cml0ZVRyaXBsZXQodmlzaXQsIE5VTEwsICJbIiwgIl0iKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0U3RydWN0Ogor
ICAgICAgICAgICAgaWYgKHZpc2l0ID09IEluVmlzaXQpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgLy8gSGVyZSB3ZSBhcmUgd3JpdGluZyBvdXQgImZvby5iYXIiLCB3aGVyZSAiZm9v
IiBpcyBzdHJ1Y3QKKyAgICAgICAgICAgICAgICAvLyBhbmQgImJhciIgaXMgZmllbGQuIEluIEFT
VCwgaXQgaXMgcmVwcmVzZW50ZWQgYXMgYSBiaW5hcnkKKyAgICAgICAgICAgICAgICAvLyBub2Rl
LCB3aGVyZSBsZWZ0IGNoaWxkIHJlcHJlc2VudHMgImZvbyIgYW5kIHJpZ2h0IGNoaWxkICJiYXIi
LgorICAgICAgICAgICAgICAgIC8vIFRoZSBub2RlIGl0c2VsZiByZXByZXNlbnRzICIuIi4gVGhl
IHN0cnVjdCBmaWVsZCAiYmFyIiBpcworICAgICAgICAgICAgICAgIC8vIGFjdHVhbGx5IHN0b3Jl
ZCBhcyBhbiBpbmRleCBpbnRvIFRTdHJ1Y3R1cmU6OmZpZWxkcy4KKyAgICAgICAgICAgICAgICBv
dXQgPDwgIi4iOworICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJ1Y3R1cmUgKnN0cnVjdHVyZSAg
ICAgICA9IG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpOworICAgICAgICAg
ICAgICAgIGNvbnN0IFRJbnRlcm1Db25zdGFudFVuaW9uICppbmRleCA9IG5vZGUtPmdldFJpZ2h0
KCktPmdldEFzQ29uc3RhbnRVbmlvbigpOworICAgICAgICAgICAgICAgIGNvbnN0IFRGaWVsZCAq
ZmllbGQgICAgICAgICAgICAgICA9IHN0cnVjdHVyZS0+ZmllbGRzKClbaW5kZXgtPmdldElDb25z
dCgwKV07CisKKyAgICAgICAgICAgICAgICBUU3RyaW5nIGZpZWxkTmFtZSA9IGZpZWxkLT5uYW1l
KCk7CisgICAgICAgICAgICAgICAgaWYgKCFtU3ltYm9sVGFibGUuZmluZEJ1aWx0SW4oc3RydWN0
dXJlLT5uYW1lKCksIG1TaGFkZXJWZXJzaW9uKSkKKyAgICAgICAgICAgICAgICAgICAgZmllbGRO
YW1lID0gaGFzaE5hbWUoZmllbGROYW1lKTsKIAotICAgICAgICAgICAgICAgIGlmIChtQ2xhbXBp
bmdTdHJhdGVneSA9PSBTSF9DTEFNUF9XSVRIX0NMQU1QX0lOVFJJTlNJQykKLSAgICAgICAgICAg
ICAgICAgICAgb3V0IDw8ICIpLCAwLjAsIGZsb2F0KCIgPDwgbWF4U2l6ZSA8PCAiKSkpXSI7Ci0g
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiwgMCwgIiA8
PCBtYXhTaXplIDw8ICIpXSI7CisgICAgICAgICAgICAgICAgb3V0IDw8IGZpZWxkTmFtZTsKKyAg
ICAgICAgICAgICAgICB2aXNpdENoaWxkcmVuID0gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICB3cml0ZVRyaXBsZXQo
dmlzaXQsIE5VTEwsICJbIiwgIl0iKTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICAg
IGNhc2UgRU9wSW5kZXhEaXJlY3RTdHJ1Y3Q6Ci0gICAgICAgIGlmICh2aXNpdCA9PSBJblZpc2l0
KQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBIZXJlIHdlIGFyZSB3cml0aW5nIG91dCAiZm9v
LmJhciIsIHdoZXJlICJmb28iIGlzIHN0cnVjdAotICAgICAgICAgICAgLy8gYW5kICJiYXIiIGlz
IGZpZWxkLiBJbiBBU1QsIGl0IGlzIHJlcHJlc2VudGVkIGFzIGEgYmluYXJ5Ci0gICAgICAgICAg
ICAvLyBub2RlLCB3aGVyZSBsZWZ0IGNoaWxkIHJlcHJlc2VudHMgImZvbyIgYW5kIHJpZ2h0IGNo
aWxkICJiYXIiLgotICAgICAgICAgICAgLy8gVGhlIG5vZGUgaXRzZWxmIHJlcHJlc2VudHMgIi4i
LiBUaGUgc3RydWN0IGZpZWxkICJiYXIiIGlzCi0gICAgICAgICAgICAvLyBhY3R1YWxseSBzdG9y
ZWQgYXMgYW4gaW5kZXggaW50byBUU3RydWN0dXJlOjpmaWVsZHMuCi0gICAgICAgICAgICBvdXQg
PDwgIi4iOwotICAgICAgICAgICAgY29uc3QgVFN0cnVjdHVyZSAqc3RydWN0dXJlID0gbm9kZS0+
Z2V0TGVmdCgpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7Ci0gICAgICAgICAgICBjb25zdCBUSW50
ZXJtQ29uc3RhbnRVbmlvbiAqaW5kZXggPSBub2RlLT5nZXRSaWdodCgpLT5nZXRBc0NvbnN0YW50
VW5pb24oKTsKLSAgICAgICAgICAgIGNvbnN0IFRGaWVsZCAqZmllbGQgPSBzdHJ1Y3R1cmUtPmZp
ZWxkcygpW2luZGV4LT5nZXRJQ29uc3QoMCldOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRU9wSW5kZXhEaXJlY3RJbnRlcmZhY2VCbG9jazoKKyAgICAgICAgICAgIGlmICh2aXNp
dCA9PSBJblZpc2l0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiLiI7
CisgICAgICAgICAgICAgICAgY29uc3QgVEludGVyZmFjZUJsb2NrICppbnRlcmZhY2VCbG9jayA9
CisgICAgICAgICAgICAgICAgICAgIG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpLmdldEludGVy
ZmFjZUJsb2NrKCk7CisgICAgICAgICAgICAgICAgY29uc3QgVEludGVybUNvbnN0YW50VW5pb24g
KmluZGV4ID0gbm9kZS0+Z2V0UmlnaHQoKS0+Z2V0QXNDb25zdGFudFVuaW9uKCk7CisgICAgICAg
ICAgICAgICAgY29uc3QgVEZpZWxkICpmaWVsZCAgICAgICAgICAgICAgID0gaW50ZXJmYWNlQmxv
Y2stPmZpZWxkcygpW2luZGV4LT5nZXRJQ29uc3QoMCldOwogCi0gICAgICAgICAgICBUU3RyaW5n
IGZpZWxkTmFtZSA9IGZpZWxkLT5uYW1lKCk7Ci0gICAgICAgICAgICBpZiAoIW1TeW1ib2xUYWJs
ZS5maW5kQnVpbHRJbihzdHJ1Y3R1cmUtPm5hbWUoKSwgbVNoYWRlclZlcnNpb24pKQorICAgICAg
ICAgICAgICAgIFRTdHJpbmcgZmllbGROYW1lID0gZmllbGQtPm5hbWUoKTsKKyAgICAgICAgICAg
ICAgICBBU1NFUlQoIW1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbihpbnRlcmZhY2VCbG9jay0+bmFt
ZSgpLCBtU2hhZGVyVmVyc2lvbikpOwogICAgICAgICAgICAgICAgIGZpZWxkTmFtZSA9IGhhc2hO
YW1lKGZpZWxkTmFtZSk7CiAKLSAgICAgICAgICAgIG91dCA8PCBmaWVsZE5hbWU7Ci0gICAgICAg
ICAgICB2aXNpdENoaWxkcmVuID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0g
ICAgICBjYXNlIEVPcEluZGV4RGlyZWN0SW50ZXJmYWNlQmxvY2s6Ci0gICAgICAgICAgaWYgKHZp
c2l0ID09IEluVmlzaXQpCi0gICAgICAgICAgewotICAgICAgICAgICAgICBvdXQgPDwgIi4iOwot
ICAgICAgICAgICAgICBjb25zdCBUSW50ZXJmYWNlQmxvY2sgKmludGVyZmFjZUJsb2NrID0gbm9k
ZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkuZ2V0SW50ZXJmYWNlQmxvY2soKTsKLSAgICAgICAgICAg
ICAgY29uc3QgVEludGVybUNvbnN0YW50VW5pb24gKmluZGV4ID0gbm9kZS0+Z2V0UmlnaHQoKS0+
Z2V0QXNDb25zdGFudFVuaW9uKCk7Ci0gICAgICAgICAgICAgIGNvbnN0IFRGaWVsZCAqZmllbGQg
PSBpbnRlcmZhY2VCbG9jay0+ZmllbGRzKClbaW5kZXgtPmdldElDb25zdCgwKV07Ci0KLSAgICAg
ICAgICAgICAgVFN0cmluZyBmaWVsZE5hbWUgPSBmaWVsZC0+bmFtZSgpOwotICAgICAgICAgICAg
ICBBU1NFUlQoIW1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbihpbnRlcmZhY2VCbG9jay0+bmFtZSgp
LCBtU2hhZGVyVmVyc2lvbikpOwotICAgICAgICAgICAgICBmaWVsZE5hbWUgPSBoYXNoTmFtZShm
aWVsZE5hbWUpOwotCi0gICAgICAgICAgICAgIG91dCA8PCBmaWVsZE5hbWU7Ci0gICAgICAgICAg
ICAgIHZpc2l0Q2hpbGRyZW4gPSBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgYnJlYWs7
Ci0gICAgICBjYXNlIEVPcFZlY3RvclN3aXp6bGU6Ci0gICAgICAgIGlmICh2aXNpdCA9PSBJblZp
c2l0KQotICAgICAgICB7Ci0gICAgICAgICAgICBvdXQgPDwgIi4iOwotICAgICAgICAgICAgVElu
dGVybUFnZ3JlZ2F0ZSAqcmlnaHRDaGlsZCA9IG5vZGUtPmdldFJpZ2h0KCktPmdldEFzQWdncmVn
YXRlKCk7Ci0gICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlID0gcmlnaHRDaGls
ZC0+Z2V0U2VxdWVuY2UoKTsKLSAgICAgICAgICAgIGZvciAoVEludGVybVNlcXVlbmNlOjppdGVy
YXRvciBzaXQgPSBzZXF1ZW5jZS0+YmVnaW4oKTsgc2l0ICE9IHNlcXVlbmNlLT5lbmQoKTsgKytz
aXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgVEludGVybUNvbnN0YW50VW5pb24g
KmVsZW1lbnQgPSAoKnNpdCktPmdldEFzQ29uc3RhbnRVbmlvbigpOwotICAgICAgICAgICAgICAg
IEFTU0VSVChlbGVtZW50LT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRJbnQpOwotICAgICAgICAgICAg
ICAgIEFTU0VSVChlbGVtZW50LT5nZXROb21pbmFsU2l6ZSgpID09IDEpOwotICAgICAgICAgICAg
ICAgIGNvbnN0IFRDb25zdGFudFVuaW9uJiBkYXRhID0gZWxlbWVudC0+Z2V0VW5pb25BcnJheVBv
aW50ZXIoKVswXTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoZGF0YS5nZXRUeXBlKCkgPT0gRWJ0
SW50KTsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKGRhdGEuZ2V0SUNvbnN0KCkpCi0gICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgY2FzZSAwOgotICAgICAgICAgICAgICAgICAg
ICBvdXQgPDwgIngiOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgIGNhc2UgMToKLSAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICJ5IjsKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICAg
ICAgICAgIG91dCA8PCAieiI7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgICAgICAgICBvdXQgPDwgInciOwotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIG91dCA8PCBmaWVsZE5hbWU7CisgICAgICAgICAgICAgICAgdmlzaXRDaGlsZHJlbiA9
IGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdmlzaXRDaGlsZHJlbiA9IGZhbHNl
OwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOworICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAg
IGNhc2UgRU9wQWRkOgotICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgIiArICIsICIp
Iik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BTdWI6Ci0gICAgICAgIHdyaXRlVHJp
cGxldCh2aXNpdCwgIigiLCAiIC0gIiwgIikiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNl
IEVPcE11bDoKLSAgICAgICAgd3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIsICIgKiAiLCAiKSIpOwot
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wRGl2OgotICAgICAgICB3cml0ZVRyaXBsZXQo
dmlzaXQsICIoIiwgIiAvICIsICIpIik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BJ
TW9kOgotICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgIiAlICIsICIpIik7Ci0gICAg
ICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BCaXRTaGlmdExlZnQ6Ci0gICAgICAgIHdyaXRlVHJp
cGxldCh2aXNpdCwgIigiLCAiIDw8ICIsICIpIik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBFT3BCaXRTaGlmdFJpZ2h0OgotICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgIiA+
PiAiLCAiKSIpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQml0d2lzZUFuZDoKLSAg
ICAgICAgd3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIsICIgJiAiLCAiKSIpOwotICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgRU9wQml0d2lzZVhvcjoKLSAgICAgICAgd3JpdGVUcmlwbGV0KHZpc2l0
LCAiKCIsICIgXiAiLCAiKSIpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQml0d2lz
ZU9yOgotICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgIiB8ICIsICIpIik7Ci0gICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEFkZDoKKyAgICAgICAgICAgIHdyaXRlVHJpcGxl
dCh2aXNpdCwgIigiLCAiICsgIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEVPcFN1YjoKKyAgICAgICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiIC0gIiwg
IikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcE11bDoKKyAgICAgICAg
ICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiICogIiwgIikiKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEVPcERpdjoKKyAgICAgICAgICAgIHdyaXRlVHJpcGxldCh2aXNp
dCwgIigiLCAiIC8gIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVP
cElNb2Q6CisgICAgICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgIiAlICIsICIpIik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BCaXRTaGlmdExlZnQ6CisgICAg
ICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgIiA8PCAiLCAiKSIpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQml0U2hpZnRSaWdodDoKKyAgICAgICAgICAgIHdy
aXRlVHJpcGxldCh2aXNpdCwgIigiLCAiID4+ICIsICIpIik7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBFT3BCaXR3aXNlQW5kOgorICAgICAgICAgICAgd3JpdGVUcmlwbGV0KHZp
c2l0LCAiKCIsICIgJiAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
RU9wQml0d2lzZVhvcjoKKyAgICAgICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiIF4g
IiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEJpdHdpc2VPcjoK
KyAgICAgICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiIHwgIiwgIikiKTsKKyAgICAg
ICAgICAgIGJyZWFrOwogCi0gICAgICBjYXNlIEVPcEVxdWFsOgotICAgICAgICB3cml0ZVRyaXBs
ZXQodmlzaXQsICIoIiwgIiA9PSAiLCAiKSIpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ug
RU9wTm90RXF1YWw6Ci0gICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiICE9ICIsICIp
Iik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BMZXNzVGhhbjoKLSAgICAgICAgd3Jp
dGVUcmlwbGV0KHZpc2l0LCAiKCIsICIgPCAiLCAiKSIpOwotICAgICAgICBicmVhazsKLSAgICAg
IGNhc2UgRU9wR3JlYXRlclRoYW46Ci0gICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAi
ID4gIiwgIikiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcExlc3NUaGFuRXF1YWw6
Ci0gICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiIDw9ICIsICIpIik7Ci0gICAgICAg
IGJyZWFrOwotICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbkVxdWFsOgotICAgICAgICB3cml0ZVRy
aXBsZXQodmlzaXQsICIoIiwgIiA+PSAiLCAiKSIpOwotICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBFT3BFcXVhbDoKKyAgICAgICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiID09
ICIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BOb3RFcXVhbDoK
KyAgICAgICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiICE9ICIsICIpIik7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BMZXNzVGhhbjoKKyAgICAgICAgICAgIHdy
aXRlVHJpcGxldCh2aXNpdCwgIigiLCAiIDwgIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuOgorICAgICAgICAgICAgd3JpdGVUcmlwbGV0KHZp
c2l0LCAiKCIsICIgPiAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
RU9wTGVzc1RoYW5FcXVhbDoKKyAgICAgICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAi
IDw9ICIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BHcmVhdGVy
VGhhbkVxdWFsOgorICAgICAgICAgICAgd3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIsICIgPj0gIiwg
IikiKTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAvLyBOb3RpY2UgdGhlIGZhbGwtdGhy
b3VnaC4KLSAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNTY2FsYXI6Ci0gICAgICBjYXNlIEVPcFZl
Y3RvclRpbWVzTWF0cml4OgotICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1ZlY3RvcjoKLSAgICAg
IGNhc2UgRU9wTWF0cml4VGltZXNTY2FsYXI6Ci0gICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzTWF0
cml4OgotICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgIiAqICIsICIpIik7Ci0gICAg
ICAgIGJyZWFrOworICAgICAgICAvLyBOb3RpY2UgdGhlIGZhbGwtdGhyb3VnaC4KKyAgICAgICAg
Y2FzZSBFT3BWZWN0b3JUaW1lc1NjYWxhcjoKKyAgICAgICAgY2FzZSBFT3BWZWN0b3JUaW1lc01h
dHJpeDoKKyAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1ZlY3RvcjoKKyAgICAgICAgY2FzZSBF
T3BNYXRyaXhUaW1lc1NjYWxhcjoKKyAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc01hdHJpeDoK
KyAgICAgICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiICogIiwgIikiKTsKKyAgICAg
ICAgICAgIGJyZWFrOwogCi0gICAgICBjYXNlIEVPcExvZ2ljYWxPcjoKLSAgICAgICAgd3JpdGVU
cmlwbGV0KHZpc2l0LCAiKCIsICIgfHwgIiwgIikiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBj
YXNlIEVPcExvZ2ljYWxYb3I6Ci0gICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiIF5e
ICIsICIpIik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BMb2dpY2FsQW5kOgotICAg
ICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgIiAmJiAiLCAiKSIpOwotICAgICAgICBicmVh
azsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIGNhc2Ug
RU9wTG9naWNhbE9yOgorICAgICAgICAgICAgd3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIsICIgfHwg
IiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcExvZ2ljYWxYb3I6
CisgICAgICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgIiBeXiAiLCAiKSIpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wTG9naWNhbEFuZDoKKyAgICAgICAgICAg
IHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiICYmICIsICIpIik7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgfQog
CiAgICAgcmV0dXJuIHZpc2l0Q2hpbGRyZW47CkBAIC03MTEsNDAgKzY5Myw0MCBAQCBib29sIFRP
dXRwdXRHTFNMQmFzZTo6dmlzaXRVbmFyeShWaXNpdCB2CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVE91dHB1dEdMU0xCYXNlOjp2aXNpdFNlbGVjdGlvbihWaXNpdCB2aXNpdCwgVEludGVy
bVNlbGVjdGlvbiAqbm9kZSkKK2Jvb2wgVE91dHB1dEdMU0xCYXNlOjp2aXNpdFRlcm5hcnkoVmlz
aXQgdmlzaXQsIFRJbnRlcm1UZXJuYXJ5ICpub2RlKQoreworICAgIFRJbmZvU2lua0Jhc2UgJm91
dCA9IG9ialNpbmsoKTsKKyAgICAvLyBOb3RpY2UgdHdvIGJyYWNrZXRzIGF0IHRoZSBiZWdpbm5p
bmcgYW5kIGVuZC4gVGhlIG91dGVyIG9uZXMKKyAgICAvLyBlbmNhcHN1bGF0ZSB0aGUgd2hvbGUg
dGVybmFyeSBleHByZXNzaW9uLiBUaGlzIHByZXNlcnZlcyB0aGUKKyAgICAvLyBvcmRlciBvZiBw
cmVjZWRlbmNlIHdoZW4gdGVybmFyeSBleHByZXNzaW9ucyBhcmUgdXNlZCBpbiBhCisgICAgLy8g
Y29tcG91bmQgZXhwcmVzc2lvbiwgaS5lLiwgYyA9IDIgKiAoYSA8IGIgPyAxIDogMikuCisgICAg
b3V0IDw8ICIoKCI7CisgICAgbm9kZS0+Z2V0Q29uZGl0aW9uKCktPnRyYXZlcnNlKHRoaXMpOwor
ICAgIG91dCA8PCAiKSA/ICgiOworICAgIG5vZGUtPmdldFRydWVFeHByZXNzaW9uKCktPnRyYXZl
cnNlKHRoaXMpOworICAgIG91dCA8PCAiKSA6ICgiOworICAgIG5vZGUtPmdldEZhbHNlRXhwcmVz
c2lvbigpLT50cmF2ZXJzZSh0aGlzKTsKKyAgICBvdXQgPDwgIikpIjsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgVE91dHB1dEdMU0xCYXNlOjp2aXNpdElmRWxzZShWaXNpdCB2aXNpdCwg
VEludGVybUlmRWxzZSAqbm9kZSkKIHsKICAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBvYmpTaW5r
KCk7CiAKLSAgICBpZiAobm9kZS0+dXNlc1Rlcm5hcnlPcGVyYXRvcigpKQotICAgIHsKLSAgICAg
ICAgLy8gTm90aWNlIHR3byBicmFja2V0cyBhdCB0aGUgYmVnaW5uaW5nIGFuZCBlbmQuIFRoZSBv
dXRlciBvbmVzCi0gICAgICAgIC8vIGVuY2Fwc3VsYXRlIHRoZSB3aG9sZSB0ZXJuYXJ5IGV4cHJl
c3Npb24uIFRoaXMgcHJlc2VydmVzIHRoZQotICAgICAgICAvLyBvcmRlciBvZiBwcmVjZWRlbmNl
IHdoZW4gdGVybmFyeSBleHByZXNzaW9ucyBhcmUgdXNlZCBpbiBhCi0gICAgICAgIC8vIGNvbXBv
dW5kIGV4cHJlc3Npb24sIGkuZS4sIGMgPSAyICogKGEgPCBiID8gMSA6IDIpLgotICAgICAgICBv
dXQgPDwgIigoIjsKLSAgICAgICAgbm9kZS0+Z2V0Q29uZGl0aW9uKCktPnRyYXZlcnNlKHRoaXMp
OwotICAgICAgICBvdXQgPDwgIikgPyAoIjsKLSAgICAgICAgbm9kZS0+Z2V0VHJ1ZUJsb2NrKCkt
PnRyYXZlcnNlKHRoaXMpOwotICAgICAgICBvdXQgPDwgIikgOiAoIjsKLSAgICAgICAgbm9kZS0+
Z2V0RmFsc2VCbG9jaygpLT50cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAgb3V0IDw8ICIpKSI7Ci0g
ICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIG91dCA8PCAiaWYgKCI7Ci0gICAgICAgIG5v
ZGUtPmdldENvbmRpdGlvbigpLT50cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAgb3V0IDw8ICIpXG4i
OworICAgIG91dCA8PCAiaWYgKCI7CisgICAgbm9kZS0+Z2V0Q29uZGl0aW9uKCktPnRyYXZlcnNl
KHRoaXMpOworICAgIG91dCA8PCAiKVxuIjsKIAotICAgICAgICBpbmNyZW1lbnREZXB0aChub2Rl
KTsKLSAgICAgICAgdmlzaXRDb2RlQmxvY2sobm9kZS0+Z2V0VHJ1ZUJsb2NrKCkpOworICAgIGlu
Y3JlbWVudERlcHRoKG5vZGUpOworICAgIHZpc2l0Q29kZUJsb2NrKG5vZGUtPmdldFRydWVCbG9j
aygpKTsKIAotICAgICAgICBpZiAobm9kZS0+Z2V0RmFsc2VCbG9jaygpKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBvdXQgPDwgImVsc2VcbiI7Ci0gICAgICAgICAgICB2aXNpdENvZGVCbG9jayhu
b2RlLT5nZXRGYWxzZUJsb2NrKCkpOwotICAgICAgICB9Ci0gICAgICAgIGRlY3JlbWVudERlcHRo
KCk7CisgICAgaWYgKG5vZGUtPmdldEZhbHNlQmxvY2soKSkKKyAgICB7CisgICAgICAgIG91dCA8
PCAiZWxzZVxuIjsKKyAgICAgICAgdmlzaXRDb2RlQmxvY2sobm9kZS0+Z2V0RmFsc2VCbG9jaygp
KTsKICAgICB9CisgICAgZGVjcmVtZW50RGVwdGgoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
QEAgLTc3OCw2ICs3NjAsNjUgQEAgYm9vbCBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0Q2FzZShWaXNp
dCB2aQogICAgIH0KIH0KIAorYm9vbCBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0QmxvY2soVmlzaXQg
dmlzaXQsIFRJbnRlcm1CbG9jayAqbm9kZSkKK3sKKyAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBv
YmpTaW5rKCk7CisgICAgLy8gU2NvcGUgdGhlIGJsb2NrcyBleGNlcHQgd2hlbiBhdCB0aGUgZ2xv
YmFsIHNjb3BlLgorICAgIGlmIChtRGVwdGggPiAwKQorICAgIHsKKyAgICAgICAgb3V0IDw8ICJ7
XG4iOworICAgIH0KKworICAgIGluY3JlbWVudERlcHRoKG5vZGUpOworICAgIGZvciAoVEludGVy
bVNlcXVlbmNlOjpjb25zdF9pdGVyYXRvciBpdGVyID0gbm9kZS0+Z2V0U2VxdWVuY2UoKS0+YmVn
aW4oKTsKKyAgICAgICAgIGl0ZXIgIT0gbm9kZS0+Z2V0U2VxdWVuY2UoKS0+ZW5kKCk7ICsraXRl
cikKKyAgICB7CisgICAgICAgIFRJbnRlcm1Ob2RlICpjdXJOb2RlID0gKml0ZXI7CisgICAgICAg
IEFTU0VSVChjdXJOb2RlICE9IG51bGxwdHIpOworICAgICAgICBjdXJOb2RlLT50cmF2ZXJzZSh0
aGlzKTsKKworICAgICAgICBpZiAoaXNTaW5nbGVTdGF0ZW1lbnQoY3VyTm9kZSkpCisgICAgICAg
ICAgICBvdXQgPDwgIjtcbiI7CisgICAgfQorICAgIGRlY3JlbWVudERlcHRoKCk7CisKKyAgICAv
LyBTY29wZSB0aGUgYmxvY2tzIGV4Y2VwdCB3aGVuIGF0IHRoZSBnbG9iYWwgc2NvcGUuCisgICAg
aWYgKG1EZXB0aCA+IDApCisgICAgeworICAgICAgICBvdXQgPDwgIn1cbiI7CisgICAgfQorICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0RnVuY3Rpb25E
ZWZpbml0aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICpub2RlKQor
eworICAgIFRJbmZvU2lua0Jhc2UgJm91dCA9IG9ialNpbmsoKTsKKworICAgIEFTU0VSVCh2aXNp
dCA9PSBQcmVWaXNpdCk7CisgICAgeworICAgICAgICBjb25zdCBUVHlwZSAmdHlwZSA9IG5vZGUt
PmdldFR5cGUoKTsKKyAgICAgICAgd3JpdGVWYXJpYWJsZVR5cGUodHlwZSk7CisgICAgICAgIGlm
ICh0eXBlLmlzQXJyYXkoKSkKKyAgICAgICAgICAgIG91dCA8PCBhcnJheUJyYWNrZXRzKHR5cGUp
OworICAgIH0KKworICAgIG91dCA8PCAiICIgPDwgaGFzaEZ1bmN0aW9uTmFtZUlmTmVlZGVkKG5v
ZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5nZXROYW1lT2JqKCkpOworCisgICAgaW5jcmVt
ZW50RGVwdGgobm9kZSk7CisKKyAgICAvLyBUcmF2ZXJzZSBmdW5jdGlvbiBwYXJhbWV0ZXJzLgor
ICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnBhcmFtcyA9IG5vZGUtPmdldEZ1bmN0aW9uUGFyYW1ldGVy
cygpLT5nZXRBc0FnZ3JlZ2F0ZSgpOworICAgIEFTU0VSVChwYXJhbXMtPmdldE9wKCkgPT0gRU9w
UGFyYW1ldGVycyk7CisgICAgcGFyYW1zLT50cmF2ZXJzZSh0aGlzKTsKKworICAgIC8vIFRyYXZl
cnNlIGZ1bmN0aW9uIGJvZHkuCisgICAgdmlzaXRDb2RlQmxvY2sobm9kZS0+Z2V0Qm9keSgpKTsK
KyAgICBkZWNyZW1lbnREZXB0aCgpOworCisgICAgLy8gRnVsbHkgcHJvY2Vzc2VkOyBubyBuZWVk
IHRvIHZpc2l0IGNoaWxkcmVuLgorICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBUT3V0cHV0
R0xTTEJhc2U6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpu
b2RlKQogewogICAgIGJvb2wgdmlzaXRDaGlsZHJlbiA9IHRydWU7CkBAIC03ODUsMzMgKzgyNiw2
IEBAIGJvb2wgVE91dHB1dEdMU0xCYXNlOjp2aXNpdEFnZ3JlZ2F0ZShWaXMKICAgICBib29sIHVz
ZUVtdWxhdGVkRnVuY3Rpb24gPSAodmlzaXQgPT0gUHJlVmlzaXQgJiYgbm9kZS0+Z2V0VXNlRW11
bGF0ZWRGdW5jdGlvbigpKTsKICAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpCiAgICAgewotICAg
ICAgY2FzZSBFT3BTZXF1ZW5jZToKLSAgICAgICAgLy8gU2NvcGUgdGhlIHNlcXVlbmNlcyBleGNl
cHQgd2hlbiBhdCB0aGUgZ2xvYmFsIHNjb3BlLgotICAgICAgICBpZiAobURlcHRoID4gMCkKLSAg
ICAgICAgewotICAgICAgICAgICAgb3V0IDw8ICJ7XG4iOwotICAgICAgICB9Ci0KLSAgICAgICAg
aW5jcmVtZW50RGVwdGgobm9kZSk7Ci0gICAgICAgIGZvciAoVEludGVybVNlcXVlbmNlOjpjb25z
dF9pdGVyYXRvciBpdGVyID0gbm9kZS0+Z2V0U2VxdWVuY2UoKS0+YmVnaW4oKTsKLSAgICAgICAg
ICAgICBpdGVyICE9IG5vZGUtPmdldFNlcXVlbmNlKCktPmVuZCgpOyArK2l0ZXIpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIFRJbnRlcm1Ob2RlICpjdXJOb2RlID0gKml0ZXI7Ci0gICAgICAgICAg
ICBBU1NFUlQoY3VyTm9kZSAhPSBOVUxMKTsKLSAgICAgICAgICAgIGN1ck5vZGUtPnRyYXZlcnNl
KHRoaXMpOwotCi0gICAgICAgICAgICBpZiAoaXNTaW5nbGVTdGF0ZW1lbnQoY3VyTm9kZSkpCi0g
ICAgICAgICAgICAgICAgb3V0IDw8ICI7XG4iOwotICAgICAgICB9Ci0gICAgICAgIGRlY3JlbWVu
dERlcHRoKCk7Ci0KLSAgICAgICAgLy8gU2NvcGUgdGhlIHNlcXVlbmNlcyBleGNlcHQgd2hlbiBh
dCB0aGUgZ2xvYmFsIHNjb3BlLgotICAgICAgICBpZiAobURlcHRoID4gMCkKLSAgICAgICAgewot
ICAgICAgICAgICAgb3V0IDw8ICJ9XG4iOwotICAgICAgICB9Ci0gICAgICAgIHZpc2l0Q2hpbGRy
ZW4gPSBmYWxzZTsKLSAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcFByb3RvdHlwZToKICAg
ICAgICAgLy8gRnVuY3Rpb24gZGVjbGFyYXRpb24uCiAgICAgICAgIEFTU0VSVCh2aXNpdCA9PSBQ
cmVWaXNpdCk7CkBAIC04MjIsNyArODM2LDcgQEAgYm9vbCBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0
QWdncmVnYXRlKFZpcwogICAgICAgICAgICAgICAgIG91dCA8PCBhcnJheUJyYWNrZXRzKHR5cGUp
OwogICAgICAgICB9CiAKLSAgICAgICAgb3V0IDw8ICIgIiA8PCBoYXNoRnVuY3Rpb25OYW1lSWZO
ZWVkZWQobm9kZS0+Z2V0TmFtZU9iaigpKTsKKyAgICAgICAgb3V0IDw8ICIgIiA8PCBoYXNoRnVu
Y3Rpb25OYW1lSWZOZWVkZWQobm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5hbWVP
YmooKSk7CiAKICAgICAgICAgb3V0IDw8ICIoIjsKICAgICAgICAgd3JpdGVGdW5jdGlvblBhcmFt
ZXRlcnMoKihub2RlLT5nZXRTZXF1ZW5jZSgpKSk7CkBAIC04MzAsNDYgKzg0NCwxMCBAQCBib29s
IFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRBZ2dyZWdhdGUoVmlzCiAKICAgICAgICAgdmlzaXRDaGls
ZHJlbiA9IGZhbHNlOwogICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wRnVuY3Rpb246IHsK
LSAgICAgICAgLy8gRnVuY3Rpb24gZGVmaW5pdGlvbi4KLSAgICAgICAgQVNTRVJUKHZpc2l0ID09
IFByZVZpc2l0KTsKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgVFR5cGUgJnR5cGUgPSBu
b2RlLT5nZXRUeXBlKCk7Ci0gICAgICAgICAgICB3cml0ZVZhcmlhYmxlVHlwZSh0eXBlKTsKLSAg
ICAgICAgICAgIGlmICh0eXBlLmlzQXJyYXkoKSkKLSAgICAgICAgICAgICAgICBvdXQgPDwgYXJy
YXlCcmFja2V0cyh0eXBlKTsKLSAgICAgICAgfQotCi0gICAgICAgIG91dCA8PCAiICIgPDwgaGFz
aEZ1bmN0aW9uTmFtZUlmTmVlZGVkKG5vZGUtPmdldE5hbWVPYmooKSk7Ci0KLSAgICAgICAgaW5j
cmVtZW50RGVwdGgobm9kZSk7Ci0gICAgICAgIC8vIEZ1bmN0aW9uIGRlZmluaXRpb24gbm9kZSBj
b250YWlucyBvbmUgb3IgdHdvIGNoaWxkcmVuIG5vZGVzCi0gICAgICAgIC8vIHJlcHJlc2VudGlu
ZyBmdW5jdGlvbiBwYXJhbWV0ZXJzIGFuZCBmdW5jdGlvbiBib2R5LiBUaGUgbGF0dGVyCi0gICAg
ICAgIC8vIGlzIG5vdCBwcmVzZW50IGluIGNhc2Ugb2YgZW1wdHkgZnVuY3Rpb24gYm9kaWVzLgot
ICAgICAgICBjb25zdCBUSW50ZXJtU2VxdWVuY2UgJnNlcXVlbmNlID0gKihub2RlLT5nZXRTZXF1
ZW5jZSgpKTsKLSAgICAgICAgQVNTRVJUKChzZXF1ZW5jZS5zaXplKCkgPT0gMSkgfHwgKHNlcXVl
bmNlLnNpemUoKSA9PSAyKSk7Ci0gICAgICAgIFRJbnRlcm1TZXF1ZW5jZTo6Y29uc3RfaXRlcmF0
b3Igc2VxSXRlciA9IHNlcXVlbmNlLmJlZ2luKCk7Ci0KLSAgICAgICAgLy8gVHJhdmVyc2UgZnVu
Y3Rpb24gcGFyYW1ldGVycy4KLSAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqcGFyYW1zID0gKCpz
ZXFJdGVyKS0+Z2V0QXNBZ2dyZWdhdGUoKTsKLSAgICAgICAgQVNTRVJUKHBhcmFtcyAhPSBOVUxM
KTsKLSAgICAgICAgQVNTRVJUKHBhcmFtcy0+Z2V0T3AoKSA9PSBFT3BQYXJhbWV0ZXJzKTsKLSAg
ICAgICAgcGFyYW1zLT50cmF2ZXJzZSh0aGlzKTsKLQotICAgICAgICAvLyBUcmF2ZXJzZSBmdW5j
dGlvbiBib2R5LgotICAgICAgICBUSW50ZXJtQWdncmVnYXRlICpib2R5ID0gKytzZXFJdGVyICE9
IHNlcXVlbmNlLmVuZCgpID8KLSAgICAgICAgICAgICgqc2VxSXRlciktPmdldEFzQWdncmVnYXRl
KCkgOiBOVUxMOwotICAgICAgICB2aXNpdENvZGVCbG9jayhib2R5KTsKLSAgICAgICAgZGVjcmVt
ZW50RGVwdGgoKTsKLQotICAgICAgICAvLyBGdWxseSBwcm9jZXNzZWQ7IG5vIG5lZWQgdG8gdmlz
aXQgY2hpbGRyZW4uCi0gICAgICAgIHZpc2l0Q2hpbGRyZW4gPSBmYWxzZTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgICB9CiAgICAgICBjYXNlIEVPcEZ1bmN0aW9uQ2FsbDoKICAgICAgICAgLy8gRnVu
Y3Rpb24gY2FsbC4KICAgICAgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0KQotICAgICAgICAgICAg
b3V0IDw8IGhhc2hGdW5jdGlvbk5hbWVJZk5lZWRlZChub2RlLT5nZXROYW1lT2JqKCkpIDw8ICIo
IjsKKyAgICAgICAgICAgIG91dCA8PCBoYXNoRnVuY3Rpb25OYW1lSWZOZWVkZWQobm9kZS0+Z2V0
RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5hbWVPYmooKSkgPDwgIigiOwogICAgICAgICBlbHNl
IGlmICh2aXNpdCA9PSBJblZpc2l0KQogICAgICAgICAgICAgb3V0IDw8ICIsICI7CiAgICAgICAg
IGVsc2UKQEAgLTkxNyw4OCArODk1LDMzIEBAIGJvb2wgVE91dHB1dEdMU0xCYXNlOjp2aXNpdEFn
Z3JlZ2F0ZShWaXMKICAgICAgICAgdmlzaXRDaGlsZHJlbiA9IGZhbHNlOwogICAgICAgICBicmVh
azsKICAgICAgIGNhc2UgRU9wQ29uc3RydWN0RmxvYXQ6Ci0gICAgICAgIHdyaXRlQ29uc3RydWN0
b3JUcmlwbGV0KHZpc2l0LCBub2RlLT5nZXRUeXBlKCksICJmbG9hdCIpOwotICAgICAgICBicmVh
azsKICAgICAgIGNhc2UgRU9wQ29uc3RydWN0VmVjMjoKLSAgICAgICAgd3JpdGVDb25zdHJ1Y3Rv
clRyaXBsZXQodmlzaXQsIG5vZGUtPmdldFR5cGUoKSwgInZlYzIiKTsKLSAgICAgICAgYnJlYWs7
CiAgICAgICBjYXNlIEVPcENvbnN0cnVjdFZlYzM6Ci0gICAgICAgIHdyaXRlQ29uc3RydWN0b3JU
cmlwbGV0KHZpc2l0LCBub2RlLT5nZXRUeXBlKCksICJ2ZWMzIik7Ci0gICAgICAgIGJyZWFrOwog
ICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RWZWM0OgotICAgICAgICB3cml0ZUNvbnN0cnVjdG9yVHJp
cGxldCh2aXNpdCwgbm9kZS0+Z2V0VHlwZSgpLCAidmVjNCIpOwotICAgICAgICBicmVhazsKICAg
ICAgIGNhc2UgRU9wQ29uc3RydWN0Qm9vbDoKLSAgICAgICAgd3JpdGVDb25zdHJ1Y3RvclRyaXBs
ZXQodmlzaXQsIG5vZGUtPmdldFR5cGUoKSwgImJvb2wiKTsKLSAgICAgICAgYnJlYWs7CiAgICAg
ICBjYXNlIEVPcENvbnN0cnVjdEJWZWMyOgotICAgICAgICB3cml0ZUNvbnN0cnVjdG9yVHJpcGxl
dCh2aXNpdCwgbm9kZS0+Z2V0VHlwZSgpLCAiYnZlYzIiKTsKLSAgICAgICAgYnJlYWs7CiAgICAg
ICBjYXNlIEVPcENvbnN0cnVjdEJWZWMzOgotICAgICAgICB3cml0ZUNvbnN0cnVjdG9yVHJpcGxl
dCh2aXNpdCwgbm9kZS0+Z2V0VHlwZSgpLCAiYnZlYzMiKTsKLSAgICAgICAgYnJlYWs7CiAgICAg
ICBjYXNlIEVPcENvbnN0cnVjdEJWZWM0OgotICAgICAgICB3cml0ZUNvbnN0cnVjdG9yVHJpcGxl
dCh2aXNpdCwgbm9kZS0+Z2V0VHlwZSgpLCAiYnZlYzQiKTsKLSAgICAgICAgYnJlYWs7CiAgICAg
ICBjYXNlIEVPcENvbnN0cnVjdEludDoKLSAgICAgICAgd3JpdGVDb25zdHJ1Y3RvclRyaXBsZXQo
dmlzaXQsIG5vZGUtPmdldFR5cGUoKSwgImludCIpOwotICAgICAgICBicmVhazsKICAgICAgIGNh
c2UgRU9wQ29uc3RydWN0SVZlYzI6Ci0gICAgICAgIHdyaXRlQ29uc3RydWN0b3JUcmlwbGV0KHZp
c2l0LCBub2RlLT5nZXRUeXBlKCksICJpdmVjMiIpOwotICAgICAgICBicmVhazsKICAgICAgIGNh
c2UgRU9wQ29uc3RydWN0SVZlYzM6Ci0gICAgICAgIHdyaXRlQ29uc3RydWN0b3JUcmlwbGV0KHZp
c2l0LCBub2RlLT5nZXRUeXBlKCksICJpdmVjMyIpOwotICAgICAgICBicmVhazsKICAgICAgIGNh
c2UgRU9wQ29uc3RydWN0SVZlYzQ6Ci0gICAgICAgIHdyaXRlQ29uc3RydWN0b3JUcmlwbGV0KHZp
c2l0LCBub2RlLT5nZXRUeXBlKCksICJpdmVjNCIpOwotICAgICAgICBicmVhazsKICAgICAgIGNh
c2UgRU9wQ29uc3RydWN0VUludDoKLSAgICAgICAgd3JpdGVDb25zdHJ1Y3RvclRyaXBsZXQodmlz
aXQsIG5vZGUtPmdldFR5cGUoKSwgInVpbnQiKTsKLSAgICAgICAgYnJlYWs7CiAgICAgICBjYXNl
IEVPcENvbnN0cnVjdFVWZWMyOgotICAgICAgICB3cml0ZUNvbnN0cnVjdG9yVHJpcGxldCh2aXNp
dCwgbm9kZS0+Z2V0VHlwZSgpLCAidXZlYzIiKTsKLSAgICAgICAgYnJlYWs7CiAgICAgICBjYXNl
IEVPcENvbnN0cnVjdFVWZWMzOgotICAgICAgICB3cml0ZUNvbnN0cnVjdG9yVHJpcGxldCh2aXNp
dCwgbm9kZS0+Z2V0VHlwZSgpLCAidXZlYzMiKTsKLSAgICAgICAgYnJlYWs7CiAgICAgICBjYXNl
IEVPcENvbnN0cnVjdFVWZWM0OgotICAgICAgICB3cml0ZUNvbnN0cnVjdG9yVHJpcGxldCh2aXNp
dCwgbm9kZS0+Z2V0VHlwZSgpLCAidXZlYzQiKTsKLSAgICAgICAgYnJlYWs7CiAgICAgICBjYXNl
IEVPcENvbnN0cnVjdE1hdDI6Ci0gICAgICAgIHdyaXRlQ29uc3RydWN0b3JUcmlwbGV0KHZpc2l0
LCBub2RlLT5nZXRUeXBlKCksICJtYXQyIik7Ci0gICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBF
T3BDb25zdHJ1Y3RNYXQyeDM6Ci0gICAgICAgIHdyaXRlQ29uc3RydWN0b3JUcmlwbGV0KHZpc2l0
LCBub2RlLT5nZXRUeXBlKCksICJtYXQyeDMiKTsKLSAgICAgICAgYnJlYWs7CiAgICAgICBjYXNl
IEVPcENvbnN0cnVjdE1hdDJ4NDoKLSAgICAgICAgd3JpdGVDb25zdHJ1Y3RvclRyaXBsZXQodmlz
aXQsIG5vZGUtPmdldFR5cGUoKSwgIm1hdDJ4NCIpOwotICAgICAgICBicmVhazsKICAgICAgIGNh
c2UgRU9wQ29uc3RydWN0TWF0M3gyOgotICAgICAgICB3cml0ZUNvbnN0cnVjdG9yVHJpcGxldCh2
aXNpdCwgbm9kZS0+Z2V0VHlwZSgpLCAibWF0M3gyIik7Ci0gICAgICAgIGJyZWFrOwogICAgICAg
Y2FzZSBFT3BDb25zdHJ1Y3RNYXQzOgotICAgICAgICB3cml0ZUNvbnN0cnVjdG9yVHJpcGxldCh2
aXNpdCwgbm9kZS0+Z2V0VHlwZSgpLCAibWF0MyIpOwotICAgICAgICBicmVhazsKICAgICAgIGNh
c2UgRU9wQ29uc3RydWN0TWF0M3g0OgotICAgICAgICB3cml0ZUNvbnN0cnVjdG9yVHJpcGxldCh2
aXNpdCwgbm9kZS0+Z2V0VHlwZSgpLCAibWF0M3g0Iik7Ci0gICAgICAgIGJyZWFrOwogICAgICAg
Y2FzZSBFT3BDb25zdHJ1Y3RNYXQ0eDI6Ci0gICAgICAgIHdyaXRlQ29uc3RydWN0b3JUcmlwbGV0
KHZpc2l0LCBub2RlLT5nZXRUeXBlKCksICJtYXQ0eDIiKTsKLSAgICAgICAgYnJlYWs7CiAgICAg
ICBjYXNlIEVPcENvbnN0cnVjdE1hdDR4MzoKLSAgICAgICAgd3JpdGVDb25zdHJ1Y3RvclRyaXBs
ZXQodmlzaXQsIG5vZGUtPmdldFR5cGUoKSwgIm1hdDR4MyIpOwotICAgICAgICBicmVhazsKICAg
ICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0NDoKLSAgICAgICAgd3JpdGVDb25zdHJ1Y3RvclRyaXBs
ZXQodmlzaXQsIG5vZGUtPmdldFR5cGUoKSwgIm1hdDQiKTsKLSAgICAgICAgYnJlYWs7CiAgICAg
ICBjYXNlIEVPcENvbnN0cnVjdFN0cnVjdDoKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3Qg
VFR5cGUgJnR5cGUgPSBub2RlLT5nZXRUeXBlKCk7Ci0gICAgICAgICAgICBBU1NFUlQodHlwZS5n
ZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpOwotICAgICAgICAgICAgVFN0cmluZyBjb25zdHJ1
Y3Rvck5hbWUgPSBoYXNoTmFtZSh0eXBlLmdldFN0cnVjdCgpLT5uYW1lKCkpOwotICAgICAgICAg
ICAgd3JpdGVDb25zdHJ1Y3RvclRyaXBsZXQodmlzaXQsIG5vZGUtPmdldFR5cGUoKSwgY29uc3Ry
dWN0b3JOYW1lLmNfc3RyKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICAg
ICAgICB3cml0ZUNvbnN0cnVjdG9yVHJpcGxldCh2aXNpdCwgbm9kZS0+Z2V0VHlwZSgpKTsKKyAg
ICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBFT3BPdXRlclByb2R1Y3Q6CiAgICAgICAgIHdy
aXRlQnVpbHRJbkZ1bmN0aW9uVHJpcGxldCh2aXNpdCwgIm91dGVyUHJvZHVjdCgiLCB1c2VFbXVs
YXRlZEZ1bmN0aW9uKTsKQEAgLTEwMjIsOSArOTQ1LDYgQEAgYm9vbCBUT3V0cHV0R0xTTEJhc2U6
OnZpc2l0QWdncmVnYXRlKFZpcwogICAgICAgY2FzZSBFT3BWZWN0b3JOb3RFcXVhbDoKICAgICAg
ICAgd3JpdGVCdWlsdEluRnVuY3Rpb25UcmlwbGV0KHZpc2l0LCAibm90RXF1YWwoIiwgdXNlRW11
bGF0ZWRGdW5jdGlvbik7CiAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BDb21tYToKLSAg
ICAgICAgd3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIsICIsICIsICIpIik7Ci0gICAgICAgIGJyZWFr
OwogCiAgICAgICBjYXNlIEVPcE1vZDoKICAgICAgICAgd3JpdGVCdWlsdEluRnVuY3Rpb25Ucmlw
bGV0KHZpc2l0LCAibW9kKCIsIHVzZUVtdWxhdGVkRnVuY3Rpb24pOwpAQCAtMTE4OSw3ICsxMTA5
LDcgQEAgYm9vbCBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0QnJhbmNoKFZpc2l0IAogICAgIHJldHVy
biB0cnVlOwogfQogCi12b2lkIFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRDb2RlQmxvY2soVEludGVy
bU5vZGUgKm5vZGUpCit2b2lkIFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRDb2RlQmxvY2soVEludGVy
bUJsb2NrICpub2RlKQogewogICAgIFRJbmZvU2lua0Jhc2UgJm91dCA9IG9ialNpbmsoKTsKICAg
ICBpZiAobm9kZSAhPSBOVUxMKQpAQCAtMTIwOCw0NSArMTEyOCwxMCBAQCB2b2lkIFRPdXRwdXRH
TFNMQmFzZTo6dmlzaXRDb2RlQmxvY2soVEluCiAKIFRTdHJpbmcgVE91dHB1dEdMU0xCYXNlOjpn
ZXRUeXBlTmFtZShjb25zdCBUVHlwZSAmdHlwZSkKIHsKLSAgICBUSW5mb1NpbmtCYXNlIG91dDsK
LSAgICBpZiAodHlwZS5pc01hdHJpeCgpKQotICAgIHsKLSAgICAgICAgb3V0IDw8ICJtYXQiOwot
ICAgICAgICBvdXQgPDwgdHlwZS5nZXROb21pbmFsU2l6ZSgpOwotICAgICAgICBpZiAodHlwZS5n
ZXRTZWNvbmRhcnlTaXplKCkgIT0gdHlwZS5nZXROb21pbmFsU2l6ZSgpKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBvdXQgPDwgIngiIDw8IHR5cGUuZ2V0U2Vjb25kYXJ5U2l6ZSgpOwotICAgICAg
ICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKHR5cGUuaXNWZWN0b3IoKSkKLSAgICB7Ci0gICAgICAg
IHN3aXRjaCAodHlwZS5nZXRCYXNpY1R5cGUoKSkKLSAgICAgICAgewotICAgICAgICAgIGNhc2Ug
RWJ0RmxvYXQ6Ci0gICAgICAgICAgICBvdXQgPDwgInZlYyI7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICBjYXNlIEVidEludDoKLSAgICAgICAgICAgIG91dCA8PCAiaXZlYyI7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEVidEJvb2w6Ci0gICAgICAgICAgICBvdXQg
PDwgImJ2ZWMiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBFYnRVSW50Ogot
ICAgICAgICAgICAgb3V0IDw8ICJ1dmVjIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICB9Ci0gICAgICAg
IG91dCA8PCB0eXBlLmdldE5vbWluYWxTaXplKCk7Ci0gICAgfQorICAgIGlmICh0eXBlLmdldEJh
c2ljVHlwZSgpID09IEVidFN0cnVjdCkKKyAgICAgICAgcmV0dXJuIGhhc2hOYW1lKHR5cGUuZ2V0
U3RydWN0KCktPm5hbWUoKSk7CiAgICAgZWxzZQotICAgIHsKLSAgICAgICAgaWYgKHR5cGUuZ2V0
QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KQotICAgICAgICAgICAgb3V0IDw8IGhhc2hOYW1lKHR5
cGUuZ2V0U3RydWN0KCktPm5hbWUoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG91dCA8
PCB0eXBlLmdldEJhc2ljU3RyaW5nKCk7Ci0gICAgfQotICAgIHJldHVybiBUU3RyaW5nKG91dC5j
X3N0cigpKTsKKyAgICAgICAgcmV0dXJuIHR5cGUuZ2V0QnVpbHRJblR5cGVOYW1lU3RyaW5nKCk7
CiB9CiAKIFRTdHJpbmcgVE91dHB1dEdMU0xCYXNlOjpoYXNoTmFtZShjb25zdCBUU3RyaW5nICZu
YW1lKQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvT3V0cHV0R0xTTEJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRHTFNMQmFzZS5oCShyZXZpc2lvbiAyMDc4
MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9P
dXRwdXRHTFNMQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywyMSArMzcsMjUgQEAgY2xhc3Mg
VE91dHB1dEdMU0xCYXNlIDogcHVibGljIFRJbnRlcm1UcgogICAgIHZpcnR1YWwgYm9vbCB3cml0
ZVZhcmlhYmxlUHJlY2lzaW9uKFRQcmVjaXNpb24gcHJlY2lzaW9uKSA9IDA7CiAgICAgdm9pZCB3
cml0ZUZ1bmN0aW9uUGFyYW1ldGVycyhjb25zdCBUSW50ZXJtU2VxdWVuY2UgJmFyZ3MpOwogICAg
IGNvbnN0IFRDb25zdGFudFVuaW9uICp3cml0ZUNvbnN0YW50VW5pb24oY29uc3QgVFR5cGUgJnR5
cGUsIGNvbnN0IFRDb25zdGFudFVuaW9uICpwQ29uc3RVbmlvbik7Ci0gICAgdm9pZCB3cml0ZUNv
bnN0cnVjdG9yVHJpcGxldChWaXNpdCB2aXNpdCwgY29uc3QgVFR5cGUgJnR5cGUsIGNvbnN0IGNo
YXIgKmNvbnN0cnVjdG9yQmFzZVR5cGUpOworICAgIHZvaWQgd3JpdGVDb25zdHJ1Y3RvclRyaXBs
ZXQoVmlzaXQgdmlzaXQsIGNvbnN0IFRUeXBlICZ0eXBlKTsKICAgICBUU3RyaW5nIGdldFR5cGVO
YW1lKGNvbnN0IFRUeXBlICZ0eXBlKTsKIAogICAgIHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5
bWJvbCAqbm9kZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB2aXNpdENvbnN0YW50VW5pb24oVEludGVy
bUNvbnN0YW50VW5pb24gKm5vZGUpIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRTd2l6emxlKFZp
c2l0IHZpc2l0LCBUSW50ZXJtU3dpenpsZSAqbm9kZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCB2aXNp
dEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkgb3ZlcnJpZGU7CiAgICAg
Ym9vbCB2aXNpdFVuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtVW5hcnkgKm5vZGUpIG92ZXJyaWRl
OwotICAgIGJvb2wgdmlzaXRTZWxlY3Rpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1TZWxlY3Rpb24g
Km5vZGUpIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRUZXJuYXJ5KFZpc2l0IHZpc2l0LCBUSW50
ZXJtVGVybmFyeSAqbm9kZSkgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdElmRWxzZShWaXNpdCB2
aXNpdCwgVEludGVybUlmRWxzZSAqbm9kZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCB2aXNpdFN3aXRj
aChWaXNpdCB2aXNpdCwgVEludGVybVN3aXRjaCAqbm9kZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCB2
aXNpdENhc2UoVmlzaXQgdmlzaXQsIFRJbnRlcm1DYXNlICpub2RlKSBvdmVycmlkZTsKKyAgICBi
b29sIHZpc2l0RnVuY3Rpb25EZWZpbml0aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtRnVuY3Rpb25E
ZWZpbml0aW9uICpub2RlKSBvdmVycmlkZTsKICAgICBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0
IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0
QmxvY2soVmlzaXQgdmlzaXQsIFRJbnRlcm1CbG9jayAqbm9kZSkgb3ZlcnJpZGU7CiAgICAgYm9v
bCB2aXNpdExvb3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29wICpub2RlKSBvdmVycmlkZTsKICAg
ICBib29sIHZpc2l0QnJhbmNoKFZpc2l0IHZpc2l0LCBUSW50ZXJtQnJhbmNoICpub2RlKSBvdmVy
cmlkZTsKIAotICAgIHZvaWQgdmlzaXRDb2RlQmxvY2soVEludGVybU5vZGUgKm5vZGUpOworICAg
IHZvaWQgdmlzaXRDb2RlQmxvY2soVEludGVybUJsb2NrICpub2RlKTsKIAogICAgIC8vIFJldHVy
biB0aGUgb3JpZ2luYWwgbmFtZSBpZiBoYXNoIGZ1bmN0aW9uIHBvaW50ZXIgaXMgTlVMTDsKICAg
ICAvLyBvdGhlcndpc2UgcmV0dXJuIHRoZSBoYXNoZWQgbmFtZS4KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dEhMU0wuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L091dHB1dEhMU0wuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRITFNMLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3Zl
U3dpdGNoRmFsbFRocm91Z2guaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1NlYXJj
aFN5bWJvbC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvU3RydWN0dXJlSExTTC5o
IgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVGV4dHVyZUZ1bmN0aW9uSExTTC5oIgog
I2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckhMU0wuaCIKICNpbmNsdWRl
ICJjb21waWxlci90cmFuc2xhdG9yL1VuaWZvcm1ITFNMLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIv
dHJhbnNsYXRvci9VdGlsc0hMU0wuaCIKQEAgLTMwLDExICszMSw2IEBACiBuYW1lc3BhY2UKIHsK
IAotYm9vbCBJc1NlcXVlbmNlKFRJbnRlcm1Ob2RlICpub2RlKQotewotICAgIHJldHVybiBub2Rl
LT5nZXRBc0FnZ3JlZ2F0ZSgpICE9IG51bGxwdHIgJiYgbm9kZS0+Z2V0QXNBZ2dyZWdhdGUoKS0+
Z2V0T3AoKSA9PSBFT3BTZXF1ZW5jZTsKLX0KLQogdm9pZCBXcml0ZVNpbmdsZUNvbnN0YW50KFRJ
bmZvU2lua0Jhc2UgJm91dCwgY29uc3QgVENvbnN0YW50VW5pb24gKmNvbnN0IGNvbnN0VW5pb24p
CiB7CiAgICAgQVNTRVJUKGNvbnN0VW5pb24gIT0gbnVsbHB0cik7CkBAIC03NCwxMDYgKzcwLDE5
IEBAIGNvbnN0IFRDb25zdGFudFVuaW9uICpXcml0ZUNvbnN0YW50VW5pb24KICAgICByZXR1cm4g
Y29uc3RVbmlvbkl0ZXJhdGVkOwogfQogCi12b2lkIE91dHB1dEludFRleENvb3JkV3JhcChUSW5m
b1NpbmtCYXNlICZvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp3
cmFwTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNpemUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZ0ZXhDb29yZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJnRleENvb3JkT2Zmc2V0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdGV4Q29vcmRPdXROYW1lKQotewot
ICAgIC8vIEdMRVMgMy4wLjQgdGFibGUgMy4yMiBzcGVjaWZpZXMgaG93IHRoZSB3cmFwIG1vZGVz
IHdvcmsuIFdlIGRvbid0IHVzZSB0aGUgZm9ybXVsYXMgdmVyYmF0aW0KLSAgICAvLyBidXQgcmF0
aGVyIHVzZSBlcXVpdmFsZW50IGZvcm11bGFzIHRoYXQgbWFwIGJldHRlciB0byBITFNMLgotICAg
IG91dCA8PCAiaW50ICIgPDwgdGV4Q29vcmRPdXROYW1lIDw8ICI7XG4iOwotICAgIG91dCA8PCAi
ZmxvYXQgIiA8PCB0ZXhDb29yZE91dE5hbWUgPDwgIk9mZnNldCA9ICIgPDwgdGV4Q29vcmQgPDwg
IiArIGZsb2F0KCIgPDwgdGV4Q29vcmRPZmZzZXQKLSAgICAgICAgPDwgIikgLyAiIDw8IHNpemUg
PDwgIjtcbiI7Ci0KLSAgICAvLyBDTEFNUF9UT19FREdFCi0gICAgb3V0IDw8ICJpZiAoIiA8PCB3
cmFwTW9kZSA8PCAiID09IDEpXG4iOwotICAgIG91dCA8PCAie1xuIjsKLSAgICBvdXQgPDwgIiAg
ICAiIDw8IHRleENvb3JkT3V0TmFtZSA8PCAiID0gY2xhbXAoaW50KGZsb29yKCIgPDwgc2l6ZSA8
PCAiICogIiA8PCB0ZXhDb29yZE91dE5hbWUKLSAgICAgICAgPDwgIk9mZnNldCkpLCAwLCBpbnQo
IiA8PCBzaXplIDw8ICIpIC0gMSk7XG4iOwotICAgIG91dCA8PCAifVxuIjsKLQotICAgIC8vIE1J
UlJPUkVEX1JFUEVBVAotICAgIG91dCA8PCAiZWxzZSBpZiAoIiA8PCB3cmFwTW9kZSA8PCAiID09
IDMpXG4iOwotICAgIG91dCA8PCAie1xuIjsKLSAgICBvdXQgPDwgIiAgICBmbG9hdCBjb29yZFdy
YXBwZWQgPSAxLjAgLSBhYnMoZnJhYyhhYnMoIiA8PCB0ZXhDb29yZE91dE5hbWUKLSAgICAgICAg
PDwgIk9mZnNldCkgKiAwLjUpICogMi4wIC0gMS4wKTtcbiI7Ci0gICAgb3V0IDw8ICIgICAgIiA8
PCB0ZXhDb29yZE91dE5hbWUgPDwgIiA9IGludChmbG9vcigiIDw8IHNpemUgPDwgIiAqIGNvb3Jk
V3JhcHBlZCkpO1xuIjsKLSAgICBvdXQgPDwgIn1cbiI7Ci0KLSAgICAvLyBSRVBFQVQKLSAgICBv
dXQgPDwgImVsc2VcbiI7Ci0gICAgb3V0IDw8ICJ7XG4iOwotICAgIG91dCA8PCAiICAgICIgPDwg
dGV4Q29vcmRPdXROYW1lIDw8ICIgPSBpbnQoZmxvb3IoIiA8PCBzaXplIDw8ICIgKiBmcmFjKCIg
PDwgdGV4Q29vcmRPdXROYW1lCi0gICAgICAgIDw8ICJPZmZzZXQpKSk7XG4iOwotICAgIG91dCA8
PCAifVxuIjsKLX0KLQogfSAvLyBuYW1lc3BhY2UKIAogbmFtZXNwYWNlIHNoCiB7CiAKLVRTdHJp
bmcgT3V0cHV0SExTTDo6VGV4dHVyZUZ1bmN0aW9uOjpuYW1lKCkgY29uc3QKLXsKLSAgICBUU3Ry
aW5nIG5hbWUgPSAiZ2xfdGV4dHVyZSI7Ci0KLSAgICAvLyBXZSBuZWVkIHRvIGluY2x1ZGUgZnVs
bCB0aGUgc2FtcGxlciB0eXBlIGluIHRoZSBmdW5jdGlvbiBuYW1lIHRvIG1ha2UgdGhlIHNpZ25h
dHVyZSB1bmlxdWUKLSAgICAvLyBvbiBEM0QxMSwgd2hlcmUgc2FtcGxlcnMgYXJlIHBhc3NlZCB0
byB0ZXh0dXJlIGZ1bmN0aW9ucyBhcyBpbmRpY2VzLgotICAgIG5hbWUgKz0gVGV4dHVyZVR5cGVT
dWZmaXgodGhpcy0+c2FtcGxlcik7Ci0KLSAgICBpZiAocHJvaikKLSAgICB7Ci0gICAgICAgIG5h
bWUgKz0gIlByb2oiOwotICAgIH0KLQotICAgIGlmIChvZmZzZXQpCi0gICAgewotICAgICAgICBu
YW1lICs9ICJPZmZzZXQiOwotICAgIH0KLQotICAgIHN3aXRjaChtZXRob2QpCi0gICAgewotICAg
ICAgY2FzZSBJTVBMSUNJVDogICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgQklB
UzogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7ICAgLy8gRXh0cmEgcGFyYW1ldGVyIG1ha2Vz
IHRoZSBzaWduYXR1cmUgdW5pcXVlCi0gICAgICBjYXNlIExPRDogICAgICBuYW1lICs9ICJMb2Qi
OyAgIGJyZWFrOwotICAgICAgY2FzZSBMT0QwOiAgICAgbmFtZSArPSAiTG9kMCI7ICBicmVhazsK
LSAgICAgIGNhc2UgTE9EMEJJQVM6IG5hbWUgKz0gIkxvZDAiOyAgYnJlYWs7ICAgLy8gRXh0cmEg
cGFyYW1ldGVyIG1ha2VzIHRoZSBzaWduYXR1cmUgdW5pcXVlCi0gICAgICBjYXNlIFNJWkU6ICAg
ICBuYW1lICs9ICJTaXplIjsgIGJyZWFrOwotICAgICAgY2FzZSBGRVRDSDogICAgbmFtZSArPSAi
RmV0Y2giOyBicmVhazsKLSAgICAgIGNhc2UgR1JBRDogICAgIG5hbWUgKz0gIkdyYWQiOyAgYnJl
YWs7Ci0gICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgIH0KLQotICAgIHJldHVybiBu
YW1lICsgIigiOwotfQotCi1ib29sIE91dHB1dEhMU0w6OlRleHR1cmVGdW5jdGlvbjo6b3BlcmF0
b3I8KGNvbnN0IFRleHR1cmVGdW5jdGlvbiAmcmhzKSBjb25zdAotewotICAgIGlmIChzYW1wbGVy
IDwgcmhzLnNhbXBsZXIpIHJldHVybiB0cnVlOwotICAgIGlmIChzYW1wbGVyID4gcmhzLnNhbXBs
ZXIpIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChjb29yZHMgPCByaHMuY29vcmRzKSAgIHJldHVy
biB0cnVlOwotICAgIGlmIChjb29yZHMgPiByaHMuY29vcmRzKSAgIHJldHVybiBmYWxzZTsKLQot
ICAgIGlmICghcHJvaiAmJiByaHMucHJvaikgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChwcm9q
ICYmICFyaHMucHJvaikgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghb2Zmc2V0ICYmIHJo
cy5vZmZzZXQpIHJldHVybiB0cnVlOwotICAgIGlmIChvZmZzZXQgJiYgIXJocy5vZmZzZXQpIHJl
dHVybiBmYWxzZTsKLQotICAgIGlmIChtZXRob2QgPCByaHMubWV0aG9kKSAgIHJldHVybiB0cnVl
OwotICAgIGlmIChtZXRob2QgPiByaHMubWV0aG9kKSAgIHJldHVybiBmYWxzZTsKLQotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotT3V0cHV0SExTTDo6T3V0cHV0SExTTChzaDo6R0xlbnVtIHNoYWRl
clR5cGUsIGludCBzaGFkZXJWZXJzaW9uLAotICAgIGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciAm
ZXh0ZW5zaW9uQmVoYXZpb3IsCi0gICAgY29uc3QgY2hhciAqc291cmNlUGF0aCwgU2hTaGFkZXJP
dXRwdXQgb3V0cHV0VHlwZSwKLSAgICBpbnQgbnVtUmVuZGVyVGFyZ2V0cywgY29uc3Qgc3RkOjp2
ZWN0b3I8VW5pZm9ybT4gJnVuaWZvcm1zLAotICAgIGludCBjb21waWxlT3B0aW9ucykKK091dHB1
dEhMU0w6Ok91dHB1dEhMU0woc2g6OkdMZW51bSBzaGFkZXJUeXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgc2hhZGVyVmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VEV4dGVuc2lvbkJlaGF2aW9yICZleHRlbnNpb25CZWhhdmlvciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciAqc291cmNlUGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgU2hT
aGFkZXJPdXRwdXQgb3V0cHV0VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bVJl
bmRlclRhcmdldHMsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFVu
aWZvcm0+ICZ1bmlmb3JtcywKKyAgICAgICAgICAgICAgICAgICAgICAgU2hDb21waWxlT3B0aW9u
cyBjb21waWxlT3B0aW9ucykKICAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgdHJ1ZSwgdHJ1
ZSksCiAgICAgICBtU2hhZGVyVHlwZShzaGFkZXJUeXBlKSwKICAgICAgIG1TaGFkZXJWZXJzaW9u
KHNoYWRlclZlcnNpb24pLApAQCAtMjExLDYgKzEyMCw3IEBAIE91dHB1dEhMU0w6Ok91dHB1dEhM
U0woc2g6OkdMZW51bSBzaGFkZXIKIAogICAgIG1TdHJ1Y3R1cmVITFNMID0gbmV3IFN0cnVjdHVy
ZUhMU0w7CiAgICAgbVVuaWZvcm1ITFNMID0gbmV3IFVuaWZvcm1ITFNMKG1TdHJ1Y3R1cmVITFNM
LCBvdXRwdXRUeXBlLCB1bmlmb3Jtcyk7CisgICAgbVRleHR1cmVGdW5jdGlvbkhMU0wgPSBuZXcg
VGV4dHVyZUZ1bmN0aW9uSExTTDsKIAogICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMXzNf
MF9PVVRQVVQpCiAgICAgewpAQCAtMjI4LDYgKzEzOCw3IEBAIE91dHB1dEhMU0w6On5PdXRwdXRI
TFNMKCkKIHsKICAgICBTYWZlRGVsZXRlKG1TdHJ1Y3R1cmVITFNMKTsKICAgICBTYWZlRGVsZXRl
KG1Vbmlmb3JtSExTTCk7CisgICAgU2FmZURlbGV0ZShtVGV4dHVyZUZ1bmN0aW9uSExTTCk7CiAg
ICAgZm9yIChhdXRvICZlcUZ1bmN0aW9uIDogbVN0cnVjdEVxdWFsaXR5RnVuY3Rpb25zKQogICAg
IHsKICAgICAgICAgU2FmZURlbGV0ZShlcUZ1bmN0aW9uKTsKQEAgLTI0NSw2ICsxNTYsMTIgQEAg
dm9pZCBPdXRwdXRITFNMOjpvdXRwdXQoVEludGVybU5vZGUgKnRyZQogCiAgICAgQnVpbHRJbkZ1
bmN0aW9uRW11bGF0b3IgYnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I7CiAgICAgSW5pdEJ1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yRm9ySExTTCgmYnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IpOworICAgIGlm
ICgobUNvbXBpbGVPcHRpb25zICYgU0hfRU1VTEFURV9JU05BTl9GTE9BVF9GVU5DVElPTikgIT0g
MCkKKyAgICB7CisgICAgICAgIEluaXRCdWlsdEluSXNuYW5GdW5jdGlvbkVtdWxhdG9yRm9ySExT
TFdvcmthcm91bmRzKCZidWlsdEluRnVuY3Rpb25FbXVsYXRvciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVNoYWRlclZlcnNpb24p
OworICAgIH0KKwogICAgIGJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLk1hcmtCdWlsdEluRnVuY3Rp
b25zRm9yRW11bGF0aW9uKHRyZWVSb290KTsKIAogICAgIC8vIE5vdyB0aGF0IHdlIGFyZSBkb25l
IGNoYW5naW5nIHRoZSBBU1QsIGRvIHRoZSBhbmFseXNlcyBuZWVkIGZvciBITFNMIGdlbmVyYXRp
b24KQEAgLTMxMSw3ICsyMjgsNyBAQCBjb25zdCBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgdW5zaWdu
ZWQgaW50CiBpbnQgT3V0cHV0SExTTDo6dmVjdG9yU2l6ZShjb25zdCBUVHlwZSAmdHlwZSkgY29u
c3QKIHsKICAgICBpbnQgZWxlbWVudFNpemUgPSB0eXBlLmlzTWF0cml4KCkgPyB0eXBlLmdldENv
bHMoKSA6IDE7Ci0gICAgaW50IGFycmF5U2l6ZSA9IHR5cGUuaXNBcnJheSgpID8gdHlwZS5nZXRB
cnJheVNpemUoKSA6IDE7CisgICAgdW5zaWduZWQgaW50IGFycmF5U2l6ZSA9IHR5cGUuaXNBcnJh
eSgpID8gdHlwZS5nZXRBcnJheVNpemUoKSA6IDF1OwogCiAgICAgcmV0dXJuIGVsZW1lbnRTaXpl
ICogYXJyYXlTaXplOwogfQpAQCAtNjkyLDgwOSArNjA5LDkgQEAgdm9pZCBPdXRwdXRITFNMOjpo
ZWFkZXIoVEluZm9TaW5rQmFzZSAmbwogICAgICAgICB9CiAgICAgfQogCi0gICAgZm9yIChUZXh0
dXJlRnVuY3Rpb25TZXQ6OmNvbnN0X2l0ZXJhdG9yIHRleHR1cmVGdW5jdGlvbiA9IG1Vc2VzVGV4
dHVyZS5iZWdpbigpOyB0ZXh0dXJlRnVuY3Rpb24gIT0gbVVzZXNUZXh0dXJlLmVuZCgpOyB0ZXh0
dXJlRnVuY3Rpb24rKykKLSAgICB7Ci0gICAgICAgIC8vIFJldHVybiB0eXBlCi0gICAgICAgIGlm
ICh0ZXh0dXJlRnVuY3Rpb24tPm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb246OlNJWkUpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCh0ZXh0dXJlRnVuY3Rpb24tPnNhbXBsZXIpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEOiAgICAgICAgICAgIG91
dCA8PCAiaW50MiAiOyBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyM0Q6ICAg
ICAgICAgICAgb3V0IDw8ICJpbnQzICI7IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidFNh
bXBsZXJDdWJlOiAgICAgICAgICBvdXQgPDwgImludDIgIjsgYnJlYWs7Ci0gICAgICAgICAgICAg
IGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXk6ICAgICAgIG91dCA8PCAiaW50MyAiOyBicmVhazsKLSAg
ICAgICAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEOiAgICAgICAgICAgb3V0IDw8ICJpbnQyICI7
IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidElTYW1wbGVyM0Q6ICAgICAgICAgICBvdXQg
PDwgImludDMgIjsgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXJDdWJlOiAg
ICAgICAgIG91dCA8PCAiaW50MiAiOyBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRJU2Ft
cGxlcjJEQXJyYXk6ICAgICAgb3V0IDw8ICJpbnQzICI7IGJyZWFrOwotICAgICAgICAgICAgICBj
YXNlIEVidFVTYW1wbGVyMkQ6ICAgICAgICAgICBvdXQgPDwgImludDIgIjsgYnJlYWs7Ci0gICAg
ICAgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXIzRDogICAgICAgICAgIG91dCA8PCAiaW50MyAiOyBi
cmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRVU2FtcGxlckN1YmU6ICAgICAgICAgb3V0IDw8
ICJpbnQyICI7IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidFVTYW1wbGVyMkRBcnJheTog
ICAgICBvdXQgPDwgImludDMgIjsgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxl
cjJEU2hhZG93OiAgICAgIG91dCA8PCAiaW50MiAiOyBicmVhazsKLSAgICAgICAgICAgICAgY2Fz
ZSBFYnRTYW1wbGVyQ3ViZVNoYWRvdzogICAgb3V0IDw8ICJpbnQyICI7IGJyZWFrOwotICAgICAg
ICAgICAgICBjYXNlIEVidFNhbXBsZXIyREFycmF5U2hhZG93OiBvdXQgPDwgImludDMgIjsgYnJl
YWs7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSAgIC8vIFNhbXBsaW5nIGZ1bmN0aW9uCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHN3aXRjaCh0ZXh0dXJlRnVuY3Rpb24tPnNhbXBsZXIpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEOiAgICAgICAgICAgIG91dCA8
PCAiZmxvYXQ0ICI7IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXIzRDogICAg
ICAgICAgICBvdXQgPDwgImZsb2F0NCAiOyBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRT
YW1wbGVyQ3ViZTogICAgICAgICAgb3V0IDw8ICJmbG9hdDQgIjsgYnJlYWs7Ci0gICAgICAgICAg
ICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXk6ICAgICAgIG91dCA8PCAiZmxvYXQ0ICI7IGJyZWFr
OwotICAgICAgICAgICAgICBjYXNlIEVidElTYW1wbGVyMkQ6ICAgICAgICAgICBvdXQgPDwgImlu
dDQgIjsgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjNEOiAgICAgICAg
ICAgb3V0IDw8ICJpbnQ0ICI7ICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0SVNhbXBs
ZXJDdWJlOiAgICAgICAgIG91dCA8PCAiaW50NCAiOyAgIGJyZWFrOwotICAgICAgICAgICAgICBj
YXNlIEVidElTYW1wbGVyMkRBcnJheTogICAgICBvdXQgPDwgImludDQgIjsgICBicmVhazsKLSAg
ICAgICAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjJEOiAgICAgICAgICAgb3V0IDw8ICJ1aW50NCAi
OyAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXIzRDogICAgICAgICAgIG91
dCA8PCAidWludDQgIjsgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidFVTYW1wbGVyQ3Vi
ZTogICAgICAgICBvdXQgPDwgInVpbnQ0ICI7ICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBF
YnRVU2FtcGxlcjJEQXJyYXk6ICAgICAgb3V0IDw8ICJ1aW50NCAiOyAgYnJlYWs7Ci0gICAgICAg
ICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEU2hhZG93OiAgICAgIG91dCA8PCAiZmxvYXQgIjsgIGJy
ZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXJDdWJlU2hhZG93OiAgICBvdXQgPDwg
ImZsb2F0ICI7ICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkRBcnJheVNo
YWRvdzogb3V0IDw8ICJmbG9hdCAiOyAgYnJlYWs7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6IFVO
UkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBGdW5j
dGlvbiBuYW1lCi0gICAgICAgIG91dCA8PCB0ZXh0dXJlRnVuY3Rpb24tPm5hbWUoKTsKLQotICAg
ICAgICAvLyBBcmd1bWVudCBsaXN0Ci0gICAgICAgIGludCBobHNsQ29vcmRzID0gNDsKLQotICAg
ICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTF8zXzBfT1VUUFVUKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBzd2l0Y2godGV4dHVyZUZ1bmN0aW9uLT5zYW1wbGVyKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXIyRDogICBvdXQgPDwgInNhbXBsZXIyRCBz
IjsgICBobHNsQ29vcmRzID0gMjsgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxl
ckN1YmU6IG91dCA8PCAic2FtcGxlckNVQkUgcyI7IGhsc2xDb29yZHMgPSAzOyBicmVhazsKLSAg
ICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgc3dpdGNoKHRleHR1cmVGdW5jdGlvbi0+bWV0aG9kKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbjo6SU1QTElDSVQ6ICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb246OkJJQVM6ICAg
ICBobHNsQ29vcmRzID0gNDsgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0
aW9uOjpMT0Q6ICAgICAgaGxzbENvb3JkcyA9IDQ7IGJyZWFrOwotICAgICAgICAgICAgICBjYXNl
IFRleHR1cmVGdW5jdGlvbjo6TE9EMDogICAgIGhsc2xDb29yZHMgPSA0OyBicmVhazsKLSAgICAg
ICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb246OkxPRDBCSUFTOiBobHNsQ29vcmRzID0gNDsg
YnJlYWs7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBobHNs
Q29vcmRzID0gSExTTFRleHR1cmVDb29yZHNDb3VudCh0ZXh0dXJlRnVuY3Rpb24tPnNhbXBsZXIp
OwotICAgICAgICAgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0xfNF8wX0ZMOV8zX09VVFBV
VCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXQgPDwgVGV4dHVyZVN0cmluZyh0
ZXh0dXJlRnVuY3Rpb24tPnNhbXBsZXIpIDw8ICIgeCwgIgotICAgICAgICAgICAgICAgICAgICA8
PCBTYW1wbGVyU3RyaW5nKHRleHR1cmVGdW5jdGlvbi0+c2FtcGxlcikgPDwgIiBzIjsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBBU1NFUlQobU91dHB1dFR5cGUgPT0gU0hfSExTTF80XzFfT1VUUFVUKTsKLSAgICAgICAgICAg
ICAgICBvdXQgPDwgImNvbnN0IHVpbnQgc2FtcGxlckluZGV4IjsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotCi0gICAgICAgIGlmICh0ZXh0dXJlRnVuY3Rpb24tPm1ldGhvZCA9PSBUZXh0dXJl
RnVuY3Rpb246OkZFVENIKSAgIC8vIEludGVnZXIgY29vcmRpbmF0ZXMKLSAgICAgICAgewotICAg
ICAgICAgICAgc3dpdGNoKHRleHR1cmVGdW5jdGlvbi0+Y29vcmRzKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICBjYXNlIDI6IG91dCA8PCAiLCBpbnQyIHQiOyBicmVhazsKLSAgICAgICAg
ICAgICAgY2FzZSAzOiBvdXQgPDwgIiwgaW50MyB0IjsgYnJlYWs7Ci0gICAgICAgICAgICAgIGRl
ZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
ZWxzZSAgIC8vIEZsb2F0aW5nLXBvaW50IGNvb3JkaW5hdGVzIChleGNlcHQgdGV4dHVyZVNpemUp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCh0ZXh0dXJlRnVuY3Rpb24tPmNvb3JkcykK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSAxOiBvdXQgPDwgIiwgaW50IGxvZCI7
ICBicmVhazsgICAvLyB0ZXh0dXJlU2l6ZSgpCi0gICAgICAgICAgICAgIGNhc2UgMjogb3V0IDw8
ICIsIGZsb2F0MiB0IjsgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgMzogb3V0IDw8ICIsIGZs
b2F0MyB0IjsgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgNDogb3V0IDw8ICIsIGZsb2F0NCB0
IjsgYnJlYWs7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodGV4dHVyZUZ1bmN0aW9uLT5tZXRob2Qg
PT0gVGV4dHVyZUZ1bmN0aW9uOjpHUkFEKQotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2go
dGV4dHVyZUZ1bmN0aW9uLT5zYW1wbGVyKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBj
YXNlIEVidFNhbXBsZXIyRDoKLSAgICAgICAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEOgotICAg
ICAgICAgICAgICBjYXNlIEVidFVTYW1wbGVyMkQ6Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0U2Ft
cGxlcjJEQXJyYXk6Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIyREFycmF5OgotICAg
ICAgICAgICAgICBjYXNlIEVidFVTYW1wbGVyMkRBcnJheToKLSAgICAgICAgICAgICAgY2FzZSBF
YnRTYW1wbGVyMkRTaGFkb3c6Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXlT
aGFkb3c6Ci0gICAgICAgICAgICAgICAgb3V0IDw8ICIsIGZsb2F0MiBkZHgsIGZsb2F0MiBkZHki
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXIz
RDoKLSAgICAgICAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjNEOgotICAgICAgICAgICAgICBjYXNl
IEVidFVTYW1wbGVyM0Q6Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlckN1YmU6Ci0gICAg
ICAgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXJDdWJlOgotICAgICAgICAgICAgICBjYXNlIEVidFVT
YW1wbGVyQ3ViZToKLSAgICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZVNoYWRvdzoKLSAg
ICAgICAgICAgICAgICBvdXQgPDwgIiwgZmxvYXQzIGRkeCwgZmxvYXQzIGRkeSI7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBzd2l0Y2godGV4dHVyZUZ1bmN0aW9u
LT5tZXRob2QpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbjo6SU1Q
TElDSVQ6ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBUZXh0
dXJlRnVuY3Rpb246OkJJQVM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgIC8v
IENvbWVzIGFmdGVyIHRoZSBvZmZzZXQgcGFyYW1ldGVyCi0gICAgICAgICAgY2FzZSBUZXh0dXJl
RnVuY3Rpb246OkxPRDogICAgICBvdXQgPDwgIiwgZmxvYXQgbG9kIjsgIGJyZWFrOwotICAgICAg
ICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uOjpMT0QwOiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbjo6TE9EMEJJQVM6ICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7ICAgLy8gQ29tZXMgYWZ0ZXIgdGhlIG9mZnNldCBwYXJh
bWV0ZXIKLSAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbjo6U0laRTogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb246OkZF
VENIOiAgICBvdXQgPDwgIiwgaW50IG1pcCI7ICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgVGV4
dHVyZUZ1bmN0aW9uOjpHUkFEOiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KHRleHR1cmVGdW5jdGlvbi0+b2Zmc2V0KQotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2go
dGV4dHVyZUZ1bmN0aW9uLT5zYW1wbGVyKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBj
YXNlIEVidFNhbXBsZXIyRDogICAgICAgICAgICBvdXQgPDwgIiwgaW50MiBvZmZzZXQiOyBicmVh
azsKLSAgICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyM0Q6ICAgICAgICAgICAgb3V0IDw8ICIs
IGludDMgb2Zmc2V0IjsgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJy
YXk6ICAgICAgIG91dCA8PCAiLCBpbnQyIG9mZnNldCI7IGJyZWFrOwotICAgICAgICAgICAgICBj
YXNlIEVidElTYW1wbGVyMkQ6ICAgICAgICAgICBvdXQgPDwgIiwgaW50MiBvZmZzZXQiOyBicmVh
azsKLSAgICAgICAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjNEOiAgICAgICAgICAgb3V0IDw8ICIs
IGludDMgb2Zmc2V0IjsgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIyREFy
cmF5OiAgICAgIG91dCA8PCAiLCBpbnQyIG9mZnNldCI7IGJyZWFrOwotICAgICAgICAgICAgICBj
YXNlIEVidFVTYW1wbGVyMkQ6ICAgICAgICAgICBvdXQgPDwgIiwgaW50MiBvZmZzZXQiOyBicmVh
azsKLSAgICAgICAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjNEOiAgICAgICAgICAgb3V0IDw8ICIs
IGludDMgb2Zmc2V0IjsgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXIyREFy
cmF5OiAgICAgIG91dCA8PCAiLCBpbnQyIG9mZnNldCI7IGJyZWFrOwotICAgICAgICAgICAgICBj
YXNlIEVidFNhbXBsZXIyRFNoYWRvdzogICAgICBvdXQgPDwgIiwgaW50MiBvZmZzZXQiOyBicmVh
azsKLSAgICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkRBcnJheVNoYWRvdzogb3V0IDw8ICIs
IGludDIgb2Zmc2V0IjsgYnJlYWs7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxF
KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodGV4dHVyZUZ1bmN0
aW9uLT5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9uOjpCSUFTIHx8Ci0gICAgICAgICAgICB0ZXh0
dXJlRnVuY3Rpb24tPm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb246OkxPRDBCSUFTKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBvdXQgPDwgIiwgZmxvYXQgYmlhcyI7Ci0gICAgICAgIH0KLQotICAg
ICAgICBvdXQgPDwgIilcbiIKLSAgICAgICAgICAgICAgICJ7XG4iOwotCi0gICAgICAgIC8vIElu
IHNvbWUgY2FzZXMgd2UgdXNlIGEgdmFyaWFibGUgdG8gc3RvcmUgdGhlIHRleHR1cmUvc2FtcGxl
ciBvYmplY3RzLCBidXQgdG8gd29yayBhcm91bmQKLSAgICAgICAgLy8gYSBEM0QxMSBjb21waWxl
ciBidWcgcmVsYXRlZCB0byBkaXNjYXJkIGluc2lkZSBhIGxvb3AgdGhhdCBpcyBjb25kaXRpb25h
bCBvbiB0ZXh0dXJlCi0gICAgICAgIC8vIHNhbXBsaW5nIHdlIG5lZWQgdG8gY2FsbCB0aGUgZnVu
Y3Rpb24gZGlyZWN0bHkgb24gYSByZWZlcmVuY2UgdG8gdGhlIGFycmF5LiBUaGUgYnVnIHdhcwot
ICAgICAgICAvLyBmb3VuZCB1c2luZyBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5kaXNj
YXJkKmxvb3BfdGV4dHVyZSogdGVzdHMuCi0gICAgICAgIFRTdHJpbmcgdGV4dHVyZVJlZmVyZW5j
ZSgieCIpOwotICAgICAgICBUU3RyaW5nIHNhbXBsZXJSZWZlcmVuY2UoInMiKTsKLSAgICAgICAg
aWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0xfNF8xX09VVFBVVCkKLSAgICAgICAgewotICAgICAg
ICAgICAgVFN0cmluZyBzdWZmaXggPSBUZXh0dXJlR3JvdXBTdWZmaXgodGV4dHVyZUZ1bmN0aW9u
LT5zYW1wbGVyKTsKLSAgICAgICAgICAgIGlmIChUZXh0dXJlR3JvdXAodGV4dHVyZUZ1bmN0aW9u
LT5zYW1wbGVyKSA9PSBITFNMX1RFWFRVUkVfMkQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgdGV4dHVyZVJlZmVyZW5jZSA9IFRTdHJpbmcoInRleHR1cmVzIikgKyBzdWZmaXggKyAi
W3NhbXBsZXJJbmRleF0iOwotICAgICAgICAgICAgICAgIHNhbXBsZXJSZWZlcmVuY2UgPSBUU3Ry
aW5nKCJzYW1wbGVycyIpICsgc3VmZml4ICsgIltzYW1wbGVySW5kZXhdIjsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXQg
PDwgIiAgICBjb25zdCB1aW50IHRleHR1cmVJbmRleCA9IHNhbXBsZXJJbmRleCAtIHRleHR1cmVJ
bmRleE9mZnNldCIgPDwgc3VmZml4Ci0gICAgICAgICAgICAgICAgICAgIDw8ICI7XG4iOwotICAg
ICAgICAgICAgICAgIHRleHR1cmVSZWZlcmVuY2UgPSBUU3RyaW5nKCJ0ZXh0dXJlcyIpICsgc3Vm
Zml4ICsgIlt0ZXh0dXJlSW5kZXhdIjsKLSAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICBjb25z
dCB1aW50IHNhbXBsZXJBcnJheUluZGV4ID0gc2FtcGxlckluZGV4IC0gc2FtcGxlckluZGV4T2Zm
c2V0IgotICAgICAgICAgICAgICAgICAgICA8PCBzdWZmaXggPDwgIjtcbiI7Ci0gICAgICAgICAg
ICAgICAgc2FtcGxlclJlZmVyZW5jZSA9IFRTdHJpbmcoInNhbXBsZXJzIikgKyBzdWZmaXggKyAi
W3NhbXBsZXJBcnJheUluZGV4XSI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAodGV4dHVyZUZ1bmN0aW9uLT5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9uOjpTSVpFKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBvdXQgPDwgImludCBiYXNlTGV2ZWwgPSBzYW1wbGVyTWV0
YWRhdGFbc2FtcGxlckluZGV4XS5iYXNlTGV2ZWw7XG4iOwotICAgICAgICAgICAgaWYgKElzU2Ft
cGxlcjJEKHRleHR1cmVGdW5jdGlvbi0+c2FtcGxlcikgfHwgSXNTYW1wbGVyQ3ViZSh0ZXh0dXJl
RnVuY3Rpb24tPnNhbXBsZXIpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChJ
c1NhbXBsZXJBcnJheSh0ZXh0dXJlRnVuY3Rpb24tPnNhbXBsZXIpIHx8Ci0gICAgICAgICAgICAg
ICAgICAgIChJc0ludGVnZXJTYW1wbGVyKHRleHR1cmVGdW5jdGlvbi0+c2FtcGxlcikgJiYKLSAg
ICAgICAgICAgICAgICAgICAgIElzU2FtcGxlckN1YmUodGV4dHVyZUZ1bmN0aW9uLT5zYW1wbGVy
KSkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICB1
aW50IHdpZHRoOyB1aW50IGhlaWdodDsgdWludCBsYXllcnM7IHVpbnQgbnVtYmVyT2ZMZXZlbHM7
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICA8PCAiICAgICIgPDwgdGV4dHVyZVJlZmVyZW5j
ZSA8PCAiLkdldERpbWVuc2lvbnMoYmFzZUxldmVsICsgbG9kLCB3aWR0aCwgIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCwg
bGF5ZXJzLCBudW1iZXJPZkxldmVscyk7XG4iOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBvdXQg
PDwgIiAgICB1aW50IHdpZHRoOyB1aW50IGhlaWdodDsgdWludCBudW1iZXJPZkxldmVscztcbiIK
LSAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgICAgIiA8PCB0ZXh0dXJlUmVmZXJlbmNlCi0g
ICAgICAgICAgICAgICAgICAgICAgICA8PCAiLkdldERpbWVuc2lvbnMoYmFzZUxldmVsICsgbG9k
LCB3aWR0aCwgaGVpZ2h0LCBudW1iZXJPZkxldmVscyk7XG4iOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKElzU2FtcGxlcjNEKHRleHR1cmVG
dW5jdGlvbi0+c2FtcGxlcikpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgb3V0IDw8
ICIgICAgdWludCB3aWR0aDsgdWludCBoZWlnaHQ7IHVpbnQgZGVwdGg7IHVpbnQgbnVtYmVyT2ZM
ZXZlbHM7XG4iCi0gICAgICAgICAgICAgICAgICAgIDw8ICIgICAgIiA8PCB0ZXh0dXJlUmVmZXJl
bmNlCi0gICAgICAgICAgICAgICAgICAgIDw8ICIuR2V0RGltZW5zaW9ucyhiYXNlTGV2ZWwgKyBs
b2QsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBudW1iZXJPZkxldmVscyk7XG4iOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwotCi0gICAgICAgICAgICBzd2l0
Y2godGV4dHVyZUZ1bmN0aW9uLT5zYW1wbGVyKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICBjYXNlIEVidFNhbXBsZXIyRDogICAgICAgICAgICBvdXQgPDwgIiAgICByZXR1cm4gaW50Mih3
aWR0aCwgaGVpZ2h0KTsiOyAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidFNh
bXBsZXIzRDogICAgICAgICAgICBvdXQgPDwgIiAgICByZXR1cm4gaW50Myh3aWR0aCwgaGVpZ2h0
LCBkZXB0aCk7IjsgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXJDdWJlOiAg
ICAgICAgICBvdXQgPDwgIiAgICByZXR1cm4gaW50Mih3aWR0aCwgaGVpZ2h0KTsiOyAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXIyREFycmF5OiAgICAgICBvdXQg
PDwgIiAgICByZXR1cm4gaW50Myh3aWR0aCwgaGVpZ2h0LCBsYXllcnMpOyI7IGJyZWFrOwotICAg
ICAgICAgICAgICBjYXNlIEVidElTYW1wbGVyMkQ6ICAgICAgICAgICBvdXQgPDwgIiAgICByZXR1
cm4gaW50Mih3aWR0aCwgaGVpZ2h0KTsiOyAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBj
YXNlIEVidElTYW1wbGVyM0Q6ICAgICAgICAgICBvdXQgPDwgIiAgICByZXR1cm4gaW50Myh3aWR0
aCwgaGVpZ2h0LCBkZXB0aCk7IjsgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidElTYW1w
bGVyQ3ViZTogICAgICAgICBvdXQgPDwgIiAgICByZXR1cm4gaW50Mih3aWR0aCwgaGVpZ2h0KTsi
OyAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidElTYW1wbGVyMkRBcnJheTog
ICAgICBvdXQgPDwgIiAgICByZXR1cm4gaW50Myh3aWR0aCwgaGVpZ2h0LCBsYXllcnMpOyI7IGJy
ZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidFVTYW1wbGVyMkQ6ICAgICAgICAgICBvdXQgPDwg
IiAgICByZXR1cm4gaW50Mih3aWR0aCwgaGVpZ2h0KTsiOyAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICBjYXNlIEVidFVTYW1wbGVyM0Q6ICAgICAgICAgICBvdXQgPDwgIiAgICByZXR1cm4g
aW50Myh3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7IjsgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNl
IEVidFVTYW1wbGVyQ3ViZTogICAgICAgICBvdXQgPDwgIiAgICByZXR1cm4gaW50Mih3aWR0aCwg
aGVpZ2h0KTsiOyAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidFVTYW1wbGVy
MkRBcnJheTogICAgICBvdXQgPDwgIiAgICByZXR1cm4gaW50Myh3aWR0aCwgaGVpZ2h0LCBsYXll
cnMpOyI7IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXIyRFNoYWRvdzogICAg
ICBvdXQgPDwgIiAgICByZXR1cm4gaW50Mih3aWR0aCwgaGVpZ2h0KTsiOyAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXJDdWJlU2hhZG93OiAgICBvdXQgPDwgIiAg
ICByZXR1cm4gaW50Mih3aWR0aCwgaGVpZ2h0KTsiOyAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICBjYXNlIEVidFNhbXBsZXIyREFycmF5U2hhZG93OiBvdXQgPDwgIiAgICByZXR1cm4gaW50
Myh3aWR0aCwgaGVpZ2h0LCBsYXllcnMpOyI7IGJyZWFrOwotICAgICAgICAgICAgICBkZWZhdWx0
OiBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgewotICAgICAgICAgICAgVFN0cmluZyB0ZXhDb29yZFgoInQueCIpOwotICAgICAg
ICAgICAgVFN0cmluZyB0ZXhDb29yZFkoInQueSIpOwotICAgICAgICAgICAgVFN0cmluZyB0ZXhD
b29yZFooInQueiIpOwotICAgICAgICAgICAgVFN0cmluZyBwcm9qID0gIiI7Ci0KLSAgICAgICAg
ICAgIGlmICh0ZXh0dXJlRnVuY3Rpb24tPnByb2opCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgc3dpdGNoICh0ZXh0dXJlRnVuY3Rpb24tPmNvb3JkcykKLSAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHBy
b2ogPSAiIC8gdC56IjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcm9qID0gIiAvIHQu
dyI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChwcm9qICE9ICIiKQotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdGV4Q29vcmRYID0gIigiICsgdGV4Q29vcmRYICsg
cHJvaiArICIpIjsKLSAgICAgICAgICAgICAgICAgICAgdGV4Q29vcmRZID0gIigiICsgdGV4Q29v
cmRZICsgcHJvaiArICIpIjsKLSAgICAgICAgICAgICAgICAgICAgdGV4Q29vcmRaID0gIigiICsg
dGV4Q29vcmRaICsgcHJvaiArICIpIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIGlmIChJc0ludGVnZXJTYW1wbGVyKHRleHR1cmVGdW5jdGlvbi0+c2Ft
cGxlcikgJiYgSXNTYW1wbGVyQ3ViZSh0ZXh0dXJlRnVuY3Rpb24tPnNhbXBsZXIpKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIGZsb2F0IHdpZHRoOyBmbG9hdCBo
ZWlnaHQ7IGZsb2F0IGxheWVyczsgZmxvYXQgbGV2ZWxzO1xuIjsKLQotICAgICAgICAgICAgICAg
IG91dCA8PCAiICAgIHVpbnQgbWlwID0gMDtcbiI7Ci0KLSAgICAgICAgICAgICAgICBvdXQgPDwg
IiAgICAiIDw8IHRleHR1cmVSZWZlcmVuY2UKLSAgICAgICAgICAgICAgICAgICAgPDwgIi5HZXRE
aW1lbnNpb25zKG1pcCwgd2lkdGgsIGhlaWdodCwgbGF5ZXJzLCBsZXZlbHMpO1xuIjsKLQotICAg
ICAgICAgICAgICAgIG91dCA8PCAiICAgIGJvb2wgeE1ham9yID0gYWJzKHQueCkgPiBhYnModC55
KSAmJiBhYnModC54KSA+IGFicyh0LnopO1xuIjsKLSAgICAgICAgICAgICAgICBvdXQgPDwgIiAg
ICBib29sIHlNYWpvciA9IGFicyh0LnkpID4gYWJzKHQueikgJiYgYWJzKHQueSkgPiBhYnModC54
KTtcbiI7Ci0gICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgYm9vbCB6TWFqb3IgPSBhYnModC56
KSA+IGFicyh0LngpICYmIGFicyh0LnopID4gYWJzKHQueSk7XG4iOwotICAgICAgICAgICAgICAg
IG91dCA8PCAiICAgIGJvb2wgbmVnYXRpdmUgPSAoeE1ham9yICYmIHQueCA8IDAuMGYpIHx8ICh5
TWFqb3IgJiYgdC55IDwgMC4wZikgfHwgKHpNYWpvciAmJiB0LnogPCAwLjBmKTtcbiI7Ci0KLSAg
ICAgICAgICAgICAgICAvLyBGQUNFX1BPU0lUSVZFX1ggPSAwMDBiCi0gICAgICAgICAgICAgICAg
Ly8gRkFDRV9ORUdBVElWRV9YID0gMDAxYgotICAgICAgICAgICAgICAgIC8vIEZBQ0VfUE9TSVRJ
VkVfWSA9IDAxMGIKLSAgICAgICAgICAgICAgICAvLyBGQUNFX05FR0FUSVZFX1kgPSAwMTFiCi0g
ICAgICAgICAgICAgICAgLy8gRkFDRV9QT1NJVElWRV9aID0gMTAwYgotICAgICAgICAgICAgICAg
IC8vIEZBQ0VfTkVHQVRJVkVfWiA9IDEwMWIKLSAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICBp
bnQgZmFjZSA9IChpbnQpbmVnYXRpdmUgKyAoaW50KXlNYWpvciAqIDIgKyAoaW50KXpNYWpvciAq
IDQ7XG4iOwotCi0gICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgZmxvYXQgdSA9IHhNYWpvciA/
IC10LnogOiAoeU1ham9yICYmIHQueSA8IDAuMGYgPyAtdC54IDogdC54KTtcbiI7Ci0gICAgICAg
ICAgICAgICAgb3V0IDw8ICIgICAgZmxvYXQgdiA9IHlNYWpvciA/IHQueiA6IChuZWdhdGl2ZSA/
IHQueSA6IC10LnkpO1xuIjsKLSAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICBmbG9hdCBtID0g
eE1ham9yID8gdC54IDogKHlNYWpvciA/IHQueSA6IHQueik7XG4iOwotCi0gICAgICAgICAgICAg
ICAgb3V0IDw8ICIgICAgdC54ID0gKHUgKiAwLjVmIC8gbSkgKyAwLjVmO1xuIjsKLSAgICAgICAg
ICAgICAgICBvdXQgPDwgIiAgICB0LnkgPSAodiAqIDAuNWYgLyBtKSArIDAuNWY7XG4iOwotCi0g
ICAgICAgICAgICAgICAgLy8gTWlwIGxldmVsIGNvbXB1dGF0aW9uLgotICAgICAgICAgICAgICAg
IGlmICh0ZXh0dXJlRnVuY3Rpb24tPm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb246OklNUExJQ0lU
IHx8Ci0gICAgICAgICAgICAgICAgICAgIHRleHR1cmVGdW5jdGlvbi0+bWV0aG9kID09IFRleHR1
cmVGdW5jdGlvbjo6TE9EIHx8Ci0gICAgICAgICAgICAgICAgICAgIHRleHR1cmVGdW5jdGlvbi0+
bWV0aG9kID09IFRleHR1cmVGdW5jdGlvbjo6R1JBRCkKLSAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICh0ZXh0dXJlRnVuY3Rpb24tPm1ldGhvZCA9PSBUZXh0dXJlRnVu
Y3Rpb246OklNUExJQ0lUKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBvdXQgPDwgIiAgICBmbG9hdDIgdFNpemVkID0gZmxvYXQyKHQueCAqIHdpZHRoLCB0
LnkgKiBoZWlnaHQpO1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxv
YXQyIGR4ID0gZGR4KHRTaXplZCk7XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IiAgICBmbG9hdDIgZHkgPSBkZHkodFNpemVkKTtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiICAgIGZsb2F0IGxvZCA9IDAuNWYgKiBsb2cyKG1heChkb3QoZHgsIGR4KSwgZG90
KGR5LCBkeSkpKTtcbiI7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgZWxzZSBpZiAodGV4dHVyZUZ1bmN0aW9uLT5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9uOjpH
UkFEKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBF
U1NMIDMuMDAuNiBzcGVjIHNlY3Rpb24gOC44OiAiRm9yIHRoZSBjdWJlIHZlcnNpb24sIHRoZSBw
YXJ0aWFsCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBkZXJpdmF0aXZlcyBvZiBQIGFyZSBh
c3N1bWVkIHRvIGJlIGluIHRoZSBjb29yZGluYXRlIHN5c3RlbSB1c2VkIGJlZm9yZQotICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gdGV4dHVyZSBjb29yZGluYXRlcyBhcmUgcHJvamVjdGVkIG9u
dG8gdGhlIGFwcHJvcHJpYXRlIGN1YmUgZmFjZS4iCi0gICAgICAgICAgICAgICAgICAgICAgICAv
LyBkZHhbMF0gYW5kIGRkeVswXSBhcmUgdGhlIGRlcml2YXRpdmVzIG9mIHQueCBwYXNzZWQgaW50
byB0aGUgZnVuY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRkeFsxXSBhbmQgZGR5
WzFdIGFyZSB0aGUgZGVyaXZhdGl2ZXMgb2YgdC55IHBhc3NlZCBpbnRvIHRoZSBmdW5jdGlvbgot
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGR4WzJdIGFuZCBkZHlbMl0gYXJlIHRoZSBkZXJp
dmF0aXZlcyBvZiB0LnogcGFzc2VkIGludG8gdGhlIGZ1bmN0aW9uCi0gICAgICAgICAgICAgICAg
ICAgICAgICAvLyBEZXRlcm1pbmUgdGhlIGRlcml2YXRpdmVzIG9mIHUsIHYgYW5kIG0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIGZsb2F0IGR1ZHggPSB4TWFqb3IgPyBkZHhb
Ml0gOiAoeU1ham9yICYmIHQueSA8IDAuMGYgPyAtZGR4WzBdICIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiOiBkZHhbMF0pO1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIgICAgZmxvYXQgZHVkeSA9IHhNYWpvciA/IGRkeVsyXSA6ICh5TWFqb3IgJiYgdC55IDwg
MC4wZiA/IC1kZHlbMF0gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6IGRkeVsw
XSk7XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdCBkdmR4ID0g
eU1ham9yID8gZGR4WzJdIDogKG5lZ2F0aXZlID8gZGR4WzFdIDogLWRkeFsxXSk7XG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdCBkdmR5ID0geU1ham9yID8gZGR5
WzJdIDogKG5lZ2F0aXZlID8gZGR5WzFdIDogLWRkeVsxXSk7XG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIiAgICBmbG9hdCBkbWR4ID0geE1ham9yID8gZGR4WzBdIDogKHlNYWpv
ciA/IGRkeFsxXSA6IGRkeFsyXSk7XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IiAgICBmbG9hdCBkbWR5ID0geE1ham9yID8gZGR5WzBdIDogKHlNYWpvciA/IGRkeVsxXSA6IGRk
eVsyXSk7XG4iOwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm93IGRldGVybWluZSB0aGUg
ZGVyaXZhdGl2ZXMgb2YgdGhlIGZhY2UgY29vcmRpbmF0ZXMsIHVzaW5nIHRoZQotICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gZGVyaXZhdGl2ZXMgY2FsY3VsYXRlZCBhYm92ZS4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGQgLyBkeCAodSh4KSAqIDAuNSAvIG0oeCkgKyAwLjUpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAvLyA9IDAuNSAqIChtKHgpICogdScoeCkgLSB1KHgpICogbSco
eCkpIC8gbSh4KV4yCi0gICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICBmbG9hdCBk
ZmFjZXhkeCA9IDAuNWYgKiAobSAqIGR1ZHggLSB1ICogZG1keCkgLyAobSAqIG0pO1xuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQgZGZhY2V5ZHggPSAwLjVmICog
KG0gKiBkdmR4IC0gdiAqIGRtZHgpIC8gKG0gKiBtKTtcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiICAgIGZsb2F0IGRmYWNleGR5ID0gMC41ZiAqIChtICogZHVkeSAtIHUgKiBk
bWR5KSAvIChtICogbSk7XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBm
bG9hdCBkZmFjZXlkeSA9IDAuNWYgKiAobSAqIGR2ZHkgLSB2ICogZG1keSkgLyAobSAqIG0pO1xu
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQyIHNpemVWZWMgPSBm
bG9hdDIod2lkdGgsIGhlaWdodCk7XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IiAgICBmbG9hdDIgZmFjZWRkeCA9IGZsb2F0MihkZmFjZXhkeCwgZGZhY2V5ZHgpICogc2l6ZVZl
YztcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0MiBmYWNlZGR5
ID0gZmxvYXQyKGRmYWNleGR5LCBkZmFjZXlkeSkgKiBzaXplVmVjO1xuIjsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIE9wdGltaXphdGlvbjogaW5zdGVhZCBvZjogbG9nMihtYXgobGVuZ3Ro
KGZhY2VkZHgpLCBsZW5ndGgoZmFjZWRkeSkpKQotICAgICAgICAgICAgICAgICAgICAgICAgLy8g
d2UgY29tcHV0ZTogbG9nMihtYXgobGVuZ3RoKGZhY2VkZHgpXjIsIGxlbmd0aChmYWNlZGR5KV4y
KSkgLyAyCi0gICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICBmbG9hdCBsZW5ndGhm
YWNlZGR4MiA9IGRvdChmYWNlZGR4LCBmYWNlZGR4KTtcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiICAgIGZsb2F0IGxlbmd0aGZhY2VkZHkyID0gZG90KGZhY2VkZHksIGZhY2Vk
ZHkpO1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQgbG9kID0g
bG9nMihtYXgobGVuZ3RoZmFjZWRkeDIsIGxlbmd0aGZhY2VkZHkyKSkgKiAiCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIjAuNWY7XG4iOwotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIG1pcCA9IHVpbnQobWluKG1heChyb3VuZChs
b2QpLCAwKSwgbGV2ZWxzIC0gMSkpO1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiAg
ICAiIDw8IHRleHR1cmVSZWZlcmVuY2UKLSAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIuR2V0
RGltZW5zaW9ucyhtaXAsIHdpZHRoLCBoZWlnaHQsIGxheWVycywgbGV2ZWxzKTtcbiI7Ci0gICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gQ29udmVydCBmcm9tIG5vcm1hbGl6
ZWQgZmxvYXRpbmctcG9pbnQgdG8gaW50ZWdlcgotICAgICAgICAgICAgICAgIHRleENvb3JkWCA9
ICJpbnQoZmxvb3Iod2lkdGggKiBmcmFjKCIgKyB0ZXhDb29yZFggKyAiKSkpIjsKLSAgICAgICAg
ICAgICAgICB0ZXhDb29yZFkgPSAiaW50KGZsb29yKGhlaWdodCAqIGZyYWMoIiArIHRleENvb3Jk
WSArICIpKSkiOwotICAgICAgICAgICAgICAgIHRleENvb3JkWiA9ICJmYWNlIjsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKElzSW50ZWdlclNhbXBsZXIodGV4dHVyZUZ1bmN0
aW9uLT5zYW1wbGVyKSAmJgotICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLT5t
ZXRob2QgIT0gVGV4dHVyZUZ1bmN0aW9uOjpGRVRDSCkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBpZiAoSXNTYW1wbGVyMkQodGV4dHVyZUZ1bmN0aW9uLT5zYW1wbGVyKSkKLSAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChJc1NhbXBsZXJBcnJheSh0ZXh0
dXJlRnVuY3Rpb24tPnNhbXBsZXIpKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBvdXQgPDwgIiAgICBmbG9hdCB3aWR0aDsgZmxvYXQgaGVpZ2h0OyBmbG9h
dCBsYXllcnM7IGZsb2F0IGxldmVscztcbiI7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICh0ZXh0dXJlRnVuY3Rpb24tPm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb246OkxPRDApCi0gICAg
ICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8
ICIgICAgdWludCBtaXAgPSAwO1xuIjsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRleHR1cmVGdW5jdGlvbi0+bWV0aG9kID09IFRl
eHR1cmVGdW5jdGlvbjo6TE9EMEJJQVMpCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgdWludCBtaXAgPSBiaWFzO1xuIjsK
LSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgICAgIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG91dCA8PCAiICAgICIgPDwgdGV4dHVyZVJlZmVyZW5jZQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCAiLkdldERpbWVuc2lvbnMoMCwgd2lkdGgsIGhlaWdodCwgbGF5ZXJzLCBs
ZXZlbHMpO1xuIjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGV4dHVyZUZ1bmN0
aW9uLT5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9uOjpJTVBMSUNJVCB8fAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlRnVuY3Rpb24tPm1ldGhvZCA9PSBUZXh0dXJlRnVu
Y3Rpb246OkJJQVMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICBmbG9hdDIgdFNpemVkID0gZmxvYXQyKHQu
eCAqIHdpZHRoLCB0LnkgKiBoZWlnaHQpO1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIiAgICBmbG9hdCBkeCA9IGxlbmd0aChkZHgodFNpemVkKSk7XG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0IGR5ID0gbGVuZ3Ro
KGRkeSh0U2l6ZWQpKTtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICIgICAgZmxvYXQgbG9kID0gbG9nMihtYXgoZHgsIGR5KSk7XG4iOwotCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICh0ZXh0dXJlRnVuY3Rpb24tPm1ldGhvZCA9PSBUZXh0dXJl
RnVuY3Rpb246OkJJQVMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIGxvZCArPSBiaWFzO1xu
IjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0ZXh0dXJl
RnVuY3Rpb24tPm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb246OkdSQUQpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwg
IiAgICBmbG9hdDIgc2l6ZVZlYyA9IGZsb2F0Mih3aWR0aCwgaGVpZ2h0KTtcbiIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQyIHNpemVEZHggPSBkZHgg
KiBzaXplVmVjO1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAg
ICBmbG9hdDIgc2l6ZURkeSA9IGRkeSAqIHNpemVWZWM7XG4iCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0IGxvZCA9IGxvZzIobWF4KGRvdChzaXplRGR4
LCBzaXplRGR4KSwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRv
dChzaXplRGR5LCBzaXplRGR5KSkpICogMC41ZjtcbiI7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgdWludCBt
aXAgPSB1aW50KG1pbihtYXgocm91bmQobG9kKSwgMCksIGxldmVscyAtIDEpKTtcbiI7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAi
ICAgICIgPDwgdGV4dHVyZVJlZmVyZW5jZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8
ICIuR2V0RGltZW5zaW9ucyhtaXAsIHdpZHRoLCBoZWlnaHQsIGxheWVycywgbGV2ZWxzKTtcbiI7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICBmbG9h
dCB3aWR0aDsgZmxvYXQgaGVpZ2h0OyBmbG9hdCBsZXZlbHM7XG4iOwotCi0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAodGV4dHVyZUZ1bmN0aW9uLT5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9u
OjpMT0QwKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG91dCA8PCAiICAgIHVpbnQgbWlwID0gMDtcbiI7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0ZXh0dXJlRnVuY3Rpb24t
Pm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb246OkxPRDBCSUFTKQotICAgICAgICAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIHVpbnQgbWlw
ID0gYmlhcztcbiI7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3V0IDw8ICIgICAgIiA8PCB0ZXh0dXJlUmVmZXJlbmNlCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDw8ICIuR2V0RGltZW5zaW9ucygwLCB3aWR0aCwgaGVpZ2h0
LCBsZXZlbHMpO1xuIjsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXh0dXJl
RnVuY3Rpb24tPm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb246OklNUExJQ0lUIHx8Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmVGdW5jdGlvbi0+bWV0aG9kID09IFRleHR1
cmVGdW5jdGlvbjo6QklBUykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIGZsb2F0MiB0U2l6ZWQgPSBmbG9h
dDIodC54ICogd2lkdGgsIHQueSAqIGhlaWdodCk7XG4iCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiICAgIGZsb2F0IGR4ID0gbGVuZ3RoKGRkeCh0U2l6ZWQpKTtcbiIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQgZHkgPSBs
ZW5ndGgoZGR5KHRTaXplZCkpO1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiAgICBmbG9hdCBsb2QgPSBsb2cyKG1heChkeCwgZHkpKTtcbiI7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRleHR1cmVGdW5jdGlvbi0+bWV0aG9kID09IFRl
eHR1cmVGdW5jdGlvbjo6QklBUykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgbG9kICs9IGJp
YXM7XG4iOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRl
eHR1cmVGdW5jdGlvbi0+bWV0aG9kID09IFRleHR1cmVGdW5jdGlvbjo6R1JBRCkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91
dCA8PCAiICAgIGZsb2F0MiBzaXplVmVjID0gZmxvYXQyKHdpZHRoLCBoZWlnaHQpO1xuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdDIgc2l6ZURkeCA9
IGRkeCAqIHNpemVWZWM7XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiICAgIGZsb2F0MiBzaXplRGR5ID0gZGR5ICogc2l6ZVZlYztcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQgbG9kID0gbG9nMihtYXgoZG90KHNp
emVEZHgsIHNpemVEZHgpLCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiZG90KHNpemVEZHksIHNpemVEZHkpKSkgKiAwLjVmO1xuIjsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICB1
aW50IG1pcCA9IHVpbnQobWluKG1heChyb3VuZChsb2QpLCAwKSwgbGV2ZWxzIC0gMSkpO1xuIjsK
LSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgb3V0
IDw8ICIgICAgIiA8PCB0ZXh0dXJlUmVmZXJlbmNlCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgIi5HZXREaW1lbnNpb25zKG1pcCwgd2lkdGgsIGhlaWdodCwgbGV2ZWxzKTtcbiI7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ZWxzZSBpZiAoSXNTYW1wbGVyM0QodGV4dHVyZUZ1bmN0aW9uLT5zYW1wbGVyKSkKLSAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIGZsb2F0IHdpZHRoOyBm
bG9hdCBoZWlnaHQ7IGZsb2F0IGRlcHRoOyBmbG9hdCBsZXZlbHM7XG4iOwotCi0gICAgICAgICAg
ICAgICAgICAgIGlmICh0ZXh0dXJlRnVuY3Rpb24tPm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb246
OkxPRDApCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG91
dCA8PCAiICAgIHVpbnQgbWlwID0gMDtcbiI7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAodGV4dHVyZUZ1bmN0aW9uLT5tZXRob2QgPT0gVGV4dHVy
ZUZ1bmN0aW9uOjpMT0QwQklBUykKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAgICAgb3V0IDw8ICIgICAgdWludCBtaXAgPSBiaWFzO1xuIjsKLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiICAgICIgPDwgdGV4dHVyZVJlZmVy
ZW5jZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIuR2V0RGltZW5zaW9ucygwLCB3
aWR0aCwgaGVpZ2h0LCBkZXB0aCwgbGV2ZWxzKTtcbiI7Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICh0ZXh0dXJlRnVuY3Rpb24tPm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb246OklNUExJ
Q0lUIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLT5tZXRo
b2QgPT0gVGV4dHVyZUZ1bmN0aW9uOjpCSUFTKQotICAgICAgICAgICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIGZsb2F0MyB0U2l6ZWQgPSBm
bG9hdDModC54ICogd2lkdGgsIHQueSAqIGhlaWdodCwgdC56ICogIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZGVwdGgpO1xuIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiICAgIGZsb2F0IGR4ID0gbGVuZ3RoKGRkeCh0U2l6ZWQpKTtcbiIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdCBkeSA9IGxlbmd0aChkZHko
dFNpemVkKSk7XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxv
YXQgbG9kID0gbG9nMihtYXgoZHgsIGR5KSk7XG4iOwotCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHRleHR1cmVGdW5jdGlvbi0+bWV0aG9kID09IFRleHR1cmVGdW5jdGlvbjo6QklB
UykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG91dCA8PCAiICAgIGxvZCArPSBiaWFzO1xuIjsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlIGlmICh0ZXh0dXJlRnVuY3Rpb24tPm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rp
b246OkdSQUQpCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3V0IDw8ICIgICAgZmxvYXQzIHNpemVWZWMgPSBmbG9hdDMod2lkdGgsIGhlaWdo
dCwgZGVwdGgpO1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZs
b2F0MyBzaXplRGR4ID0gZGR4ICogc2l6ZVZlYztcbiIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIiAgICBmbG9hdDMgc2l6ZURkeSA9IGRkeSAqIHNpemVWZWM7XG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQgbG9kID0gbG9nMihtYXgo
ZG90KHNpemVEZHgsIHNpemVEZHgpLCBkb3Qoc2l6ZURkeSwgIgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAic2l6ZURkeSkpKSAqIDAuNWY7XG4iOwotICAgICAgICAgICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICB1aW50IG1p
cCA9IHVpbnQobWluKG1heChyb3VuZChsb2QpLCAwKSwgbGV2ZWxzIC0gMSkpO1xuIjsKLSAgICAg
ICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIG91dCA8PCAiICAgICIgPDwg
dGV4dHVyZVJlZmVyZW5jZQotICAgICAgICAgICAgICAgICAgICAgICAgPDwgIi5HZXREaW1lbnNp
b25zKG1pcCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGxldmVscyk7XG4iOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7Ci0KLSAgICAgICAgICAg
ICAgICAvLyBDb252ZXJ0IGZyb20gbm9ybWFsaXplZCBmbG9hdGluZy1wb2ludCB0byBpbnRlZ2Vy
Ci0gICAgICAgICAgICAgICAgb3V0IDw8ICJpbnQgd3JhcFMgPSBzYW1wbGVyTWV0YWRhdGFbc2Ft
cGxlckluZGV4XS53cmFwTW9kZXMgJiAweDM7XG4iOwotICAgICAgICAgICAgICAgIGlmICh0ZXh0
dXJlRnVuY3Rpb24tPm9mZnNldCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgIE91dHB1dEludFRleENvb3JkV3JhcChvdXQsICJ3cmFwUyIsICJ3aWR0aCIsIHRleENvb3Jk
WCwgIm9mZnNldC54IiwgInRpeCIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBPdXRwdXRJbnRU
ZXhDb29yZFdyYXAob3V0LCAid3JhcFMiLCAid2lkdGgiLCB0ZXhDb29yZFgsICIwIiwgInRpeCIp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB0ZXhDb29yZFggPSAidGl4IjsK
LSAgICAgICAgICAgICAgICBvdXQgPDwgImludCB3cmFwVCA9IChzYW1wbGVyTWV0YWRhdGFbc2Ft
cGxlckluZGV4XS53cmFwTW9kZXMgPj4gMikgJiAweDM7XG4iOwotICAgICAgICAgICAgICAgIGlm
ICh0ZXh0dXJlRnVuY3Rpb24tPm9mZnNldCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgIE91dHB1dEludFRleENvb3JkV3JhcChvdXQsICJ3cmFwVCIsICJoZWlnaHQiLCB0
ZXhDb29yZFksICJvZmZzZXQueSIsICJ0aXkiKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgT3V0
cHV0SW50VGV4Q29vcmRXcmFwKG91dCwgIndyYXBUIiwgImhlaWdodCIsIHRleENvb3JkWSwgIjAi
LCAidGl5Iik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHRleENvb3JkWSA9
ICJ0aXkiOwotCi0gICAgICAgICAgICAgICAgaWYgKElzU2FtcGxlckFycmF5KHRleHR1cmVGdW5j
dGlvbi0+c2FtcGxlcikpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB0
ZXhDb29yZFogPSAiaW50KG1heCgwLCBtaW4obGF5ZXJzIC0gMSwgZmxvb3IoMC41ICsgdC56KSkp
KSI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFJc1NhbXBs
ZXJDdWJlKHRleHR1cmVGdW5jdGlvbi0+c2FtcGxlcikgJiYKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAhSXNTYW1wbGVyMkQodGV4dHVyZUZ1bmN0aW9uLT5zYW1wbGVyKSkKLSAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIG91dCA8PCAiaW50IHdyYXBSID0gKHNhbXBsZXJN
ZXRhZGF0YVtzYW1wbGVySW5kZXhdLndyYXBNb2RlcyA+PiA0KSAmIDB4MztcbiI7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICh0ZXh0dXJlRnVuY3Rpb24tPm9mZnNldCkKLSAgICAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0SW50VGV4Q29vcmRXcmFwKG91
dCwgIndyYXBSIiwgImRlcHRoIiwgdGV4Q29vcmRaLCAib2Zmc2V0LnoiLCAidGl6Iik7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXRJbnRUZXhDb29yZFdyYXAo
b3V0LCAid3JhcFIiLCAiZGVwdGgiLCB0ZXhDb29yZFosICIwIiwgInRpeiIpOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHRleENvb3JkWiA9ICJ0aXoiOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgb3V0IDw8ICIgICAg
cmV0dXJuICI7Ci0KLSAgICAgICAgICAgIC8vIEhMU0wgaW50cmluc2ljCi0gICAgICAgICAgICBp
ZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTF8zXzBfT1VUUFVUKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIHN3aXRjaCh0ZXh0dXJlRnVuY3Rpb24tPnNhbXBsZXIpCi0gICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkQ6ICAgb3V0IDw8ICJ0
ZXgyRCI7ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXJDdWJlOiBv
dXQgPDwgInRleENVQkUiOyBicmVhazsKLSAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVB
Q0hBQkxFKCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgc3dpdGNoKHRl
eHR1cmVGdW5jdGlvbi0+bWV0aG9kKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb246OklNUExJQ0lUOgotICAgICAgICAgICAgICAgICAg
ICAgICAgb3V0IDw8ICIoIiA8PCBzYW1wbGVyUmVmZXJlbmNlIDw8ICIsICI7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBUZXh0dXJlRnVu
Y3Rpb246OkJJQVM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgImJpYXMoIiA8PCBz
YW1wbGVyUmVmZXJlbmNlIDw8ICIsICI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb246OkxPRDoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG91dCA8PCAibG9kKCIgPDwgc2FtcGxlclJlZmVyZW5jZSA8PCAiLCAi
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNh
c2UgVGV4dHVyZUZ1bmN0aW9uOjpMT0QwOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8
ICJsb2QoIiA8PCBzYW1wbGVyUmVmZXJlbmNlIDw8ICIsICI7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb246OkxP
RDBCSUFTOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICJsb2QoIiA8PCBzYW1wbGVy
UmVmZXJlbmNlIDw8ICIsICI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExT
TF80XzFfT1VUUFVUIHx8IG1PdXRwdXRUeXBlID09IFNIX0hMU0xfNF8wX0ZMOV8zX09VVFBVVCkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAodGV4dHVyZUZ1bmN0aW9uLT5tZXRo
b2QgPT0gVGV4dHVyZUZ1bmN0aW9uOjpHUkFEKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKElzSW50ZWdlclNhbXBsZXIodGV4dHVyZUZ1bmN0aW9uLT5zYW1wbGVy
KSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8
ICIiIDw8IHRleHR1cmVSZWZlcmVuY2UgPDwgIi5Mb2FkKCI7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoSXNTaGFkb3dTYW1wbGVyKHRleHR1cmVG
dW5jdGlvbi0+c2FtcGxlcikpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG91dCA8PCAiIiA8PCB0ZXh0dXJlUmVmZXJlbmNlIDw8ICIuU2FtcGxlQ21wTGV2
ZWxaZXJvKCIgPDwgc2FtcGxlclJlZmVyZW5jZQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDw8ICIsICI7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwg
IiIgPDwgdGV4dHVyZVJlZmVyZW5jZSA8PCAiLlNhbXBsZUdyYWQoIiA8PCBzYW1wbGVyUmVmZXJl
bmNlIDw8ICIsICI7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgZWxzZSBpZiAoSXNJbnRlZ2VyU2FtcGxlcih0ZXh0dXJlRnVuY3Rpb24t
PnNhbXBsZXIpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLT5t
ZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9uOjpGRVRDSCkKLSAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgIG91dCA8PCAiIiA8PCB0ZXh0dXJlUmVmZXJlbmNlIDw8ICIuTG9hZCgi
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChJc1NoYWRvd1Nh
bXBsZXIodGV4dHVyZUZ1bmN0aW9uLT5zYW1wbGVyKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgIHN3aXRjaCh0ZXh0dXJlRnVuY3Rpb24tPm1ldGhvZCkKLSAgICAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rp
b246OklNUExJQ0lUOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiIiA8PCB0
ZXh0dXJlUmVmZXJlbmNlIDw8ICIuU2FtcGxlQ21wKCIgPDwgc2FtcGxlclJlZmVyZW5jZQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiLCAiOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBUZXh0dXJlRnVu
Y3Rpb246OkJJQVM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIiIDw8IHRl
eHR1cmVSZWZlcmVuY2UgPDwgIi5TYW1wbGVDbXAoIiA8PCBzYW1wbGVyUmVmZXJlbmNlCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIsICI7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5j
dGlvbjo6TE9EOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiIiA8PCB0ZXh0
dXJlUmVmZXJlbmNlIDw8ICIuU2FtcGxlQ21wKCIgPDwgc2FtcGxlclJlZmVyZW5jZQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiLCAiOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rp
b246OkxPRDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIiIDw8IHRleHR1
cmVSZWZlcmVuY2UgPDwgIi5TYW1wbGVDbXBMZXZlbFplcm8oIgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8PCBzYW1wbGVyUmVmZXJlbmNlIDw8ICIsICI7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFRleHR1
cmVGdW5jdGlvbjo6TE9EMEJJQVM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8
ICIiIDw8IHRleHR1cmVSZWZlcmVuY2UgPDwgIi5TYW1wbGVDbXBMZXZlbFplcm8oIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBzYW1wbGVyUmVmZXJlbmNlIDw8ICIsICI7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICBzd2l0Y2godGV4dHVyZUZ1bmN0aW9uLT5tZXRob2QpCi0gICAgICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9u
OjpJTVBMSUNJVDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiIgPDwgdGV4
dHVyZVJlZmVyZW5jZSA8PCAiLlNhbXBsZSgiIDw8IHNhbXBsZXJSZWZlcmVuY2UgPDwgIiwgIjsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uOjpCSUFTOgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG91dCA8PCAiIiA8PCB0ZXh0dXJlUmVmZXJlbmNlIDw8ICIuU2FtcGxlQmlhcygiIDw8IHNh
bXBsZXJSZWZlcmVuY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiwgIjsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uOjpMT0Q6Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0IDw8ICIiIDw8IHRleHR1cmVSZWZlcmVuY2UgPDwgIi5TYW1wbGVMZXZlbCgiIDw8IHNh
bXBsZXJSZWZlcmVuY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiwgIjsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uOjpMT0QwOgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG91dCA8PCAiIiA8PCB0ZXh0dXJlUmVmZXJlbmNlIDw8ICIuU2FtcGxlTGV2ZWwoIiA8PCBz
YW1wbGVyUmVmZXJlbmNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIsICI7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbjo6TE9EMEJJQVM6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3V0IDw8ICIiIDw8IHRleHR1cmVSZWZlcmVuY2UgPDwgIi5TYW1wbGVMZXZlbCgi
IDw8IHNhbXBsZXJSZWZlcmVuY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg
IiwgIjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBVTlJFQUNI
QUJMRSgpOwotCi0gICAgICAgICAgICBpZiAoSXNJbnRlZ2VyU2FtcGxlcih0ZXh0dXJlRnVuY3Rp
b24tPnNhbXBsZXIpIHx8Ci0gICAgICAgICAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLT5tZXRob2Qg
PT0gVGV4dHVyZUZ1bmN0aW9uOjpGRVRDSCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBzd2l0Y2goaGxzbENvb3JkcykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICBjYXNlIDI6IG91dCA8PCAiaW50MygiOyBicmVhazsKLSAgICAgICAgICAgICAgICAgIGNhc2Ug
Mzogb3V0IDw8ICJpbnQ0KCI7IGJyZWFrOwotICAgICAgICAgICAgICAgICAgZGVmYXVsdDogVU5S
RUFDSEFCTEUoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3dpdGNoKGhsc2xDb29yZHMp
Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgY2FzZSAyOiBvdXQgPDwgImZs
b2F0MigiOyBicmVhazsKLSAgICAgICAgICAgICAgICAgIGNhc2UgMzogb3V0IDw8ICJmbG9hdDMo
IjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICBjYXNlIDQ6IG91dCA8PCAiZmxvYXQ0KCI7IGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG91dCA8PCB0ZXhDb29yZFgg
PDwgIiwgIiA8PCB0ZXhDb29yZFk7Ci0KLSAgICAgICAgICAgIGlmIChtT3V0cHV0VHlwZSA9PSBT
SF9ITFNMXzNfMF9PVVRQVVQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKGhs
c2xDb29yZHMgPj0gMykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICh0ZXh0dXJlRnVuY3Rpb24tPmNvb3JkcyA8IDMpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiLCAwIjsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG91dCA8PCAiLCB0LnoiIDw8IHByb2o7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoaGxzbENv
b3JkcyA9PSA0KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNo
KHRleHR1cmVGdW5jdGlvbi0+bWV0aG9kKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb246OkJJQVM6ICAgICBvdXQgPDwgIiwg
YmlhcyI7IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9u
OjpMT0Q6ICAgICAgb3V0IDw8ICIsIGxvZCI7ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIFRleHR1cmVGdW5jdGlvbjo6TE9EMDogICAgIG91dCA8PCAiLCAwIjsgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb246OkxPRDBCSUFTOiBv
dXQgPDwgIiwgYmlhcyI7IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IFVO
UkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICAgICBvdXQgPDwgIikpO1xuIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGVsc2UgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0xfNF8xX09VVFBVVCB8fCBtT3V0cHV0
VHlwZSA9PSBTSF9ITFNMXzRfMF9GTDlfM19PVVRQVVQpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGhsc2xDb29yZHMgPj0gMykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgIEFTU0VSVCghSXNJbnRlZ2VyU2FtcGxlcih0ZXh0dXJlRnVuY3Rpb24tPnNh
bXBsZXIpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAhSXNTYW1wbGVyQ3ViZSh0ZXh0
dXJlRnVuY3Rpb24tPnNhbXBsZXIpIHx8IHRleENvb3JkWiA9PSAiZmFjZSIpOwotICAgICAgICAg
ICAgICAgICAgICBvdXQgPDwgIiwgIiA8PCB0ZXhDb29yZFo7Ci0gICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgaWYgKHRleHR1cmVGdW5jdGlvbi0+bWV0aG9kID09IFRleHR1cmVG
dW5jdGlvbjo6R1JBRCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChJc0ludGVnZXJTYW1wbGVyKHRleHR1cmVGdW5jdGlvbi0+c2FtcGxlcikpCi0gICAgICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiLCBtaXApIjsKLSAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChJc1NoYWRv
d1NhbXBsZXIodGV4dHVyZUZ1bmN0aW9uLT5zYW1wbGVyKSkKLSAgICAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29tcGFyZSB2YWx1ZQotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHRleHR1cmVGdW5jdGlvbi0+cHJvaikKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBY2NvcmRpbmcgdG8gRVNT
TCAzLjAwLjQgc2VjIDguOCBwOTUgb24gdGV4dHVyZVByb2o6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gVGhlIHJlc3VsdGluZyB0aGlyZCBjb21wb25lbnQgb2YgUCcgaW4gdGhlIHNo
YWRvdyBmb3JtcyBpcyB1c2VkIGFzIERyZWYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
dXQgPDwgIiksIHQueiIgPDwgcHJvajsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2godGV4dHVyZUZ1bmN0aW9uLT5jb29yZHMpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSAzOiBvdXQgPDwgIiksIHQueiI7IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSA0OiBvdXQgPDwgIiksIHQudyI7IGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiksIGRkeCwgZGR5IjsKLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChJ
c0ludGVnZXJTYW1wbGVyKHRleHR1cmVGdW5jdGlvbi0+c2FtcGxlcikgfHwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXh0dXJlRnVuY3Rpb24tPm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb246
OkZFVENIKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIs
IG1pcCkiOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChJc1No
YWRvd1NhbXBsZXIodGV4dHVyZUZ1bmN0aW9uLT5zYW1wbGVyKSkKLSAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgIC8vIENvbXBhcmUgdmFsdWUKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKHRleHR1cmVGdW5jdGlvbi0+cHJvaikKLSAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIEVTU0wgMy4wMC40IHNlYyA4Ljgg
cDk1IG9uIHRleHR1cmVQcm9qOgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHJlc3Vs
dGluZyB0aGlyZCBjb21wb25lbnQgb2YgUCcgaW4gdGhlIHNoYWRvdyBmb3JtcyBpcyB1c2VkIGFz
IERyZWYKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiKSwgdC56IiA8PCBwcm9qOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHRleHR1cmVGdW5j
dGlvbi0+Y29vcmRzKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlIDM6IG91dCA8PCAiKSwgdC56IjsgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgNDogb3V0IDw8ICIpLCB0LnciOyBicmVhazsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBz
d2l0Y2godGV4dHVyZUZ1bmN0aW9uLT5tZXRob2QpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbjo6SU1QTElDSVQ6IG91dCA8
PCAiKSI7ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVGV4dHVyZUZ1
bmN0aW9uOjpCSUFTOiAgICAgb3V0IDw8ICIpLCBiaWFzIjsgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb246OkxPRDogICAgICBvdXQgPDwgIiksIGxvZCI7
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbjo6TE9E
MDogICAgIG91dCA8PCAiKSwgMCI7ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgVGV4dHVyZUZ1bmN0aW9uOjpMT0QwQklBUzogb3V0IDw8ICIpLCBiaWFzIjsgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICh0ZXh0
dXJlRnVuY3Rpb24tPm9mZnNldCAmJiAoIUlzSW50ZWdlclNhbXBsZXIodGV4dHVyZUZ1bmN0aW9u
LT5zYW1wbGVyKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGV4dHVyZUZ1bmN0aW9uLT5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9uOjpGRVRDSCkp
Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiwgb2Zmc2V0
IjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBvdXQgPDwgIik7IjsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIG91dCA8PCAiXG4iCi0gICAgICAgICAgICAgICAifVxuIgotICAgICAgICAgICAg
ICAgIlxuIjsKLSAgICB9CisgICAgYm9vbCBnZXREaW1lbnNpb25zSWdub3Jlc0Jhc2VMZXZlbCA9
CisgICAgICAgIChtQ29tcGlsZU9wdGlvbnMgJiBTSF9ITFNMX0dFVF9ESU1FTlNJT05TX0lHTk9S
RVNfQkFTRV9MRVZFTCkgIT0gMDsKKyAgICBtVGV4dHVyZUZ1bmN0aW9uSExTTC0+dGV4dHVyZUZ1
bmN0aW9uSGVhZGVyKG91dCwgbU91dHB1dFR5cGUsIGdldERpbWVuc2lvbnNJZ25vcmVzQmFzZUxl
dmVsKTsKIAogICAgIGlmIChtVXNlc0ZyYWdDb29yZCkKICAgICB7CkBAIC0xNzI2LDYgKzg0Mywx
NyBAQCBib29sIE91dHB1dEhMU0w6OmFuY2VzdG9yRXZhbHVhdGVzVG9TYW1wCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCitib29sIE91dHB1dEhMU0w6OnZpc2l0U3dpenpsZShWaXNpdCB2aXNpdCwg
VEludGVybVN3aXp6bGUgKm5vZGUpCit7CisgICAgVEluZm9TaW5rQmFzZSAmb3V0ID0gZ2V0SW5m
b1NpbmsoKTsKKyAgICBpZiAodmlzaXQgPT0gUG9zdFZpc2l0KQorICAgIHsKKyAgICAgICAgb3V0
IDw8ICIuIjsKKyAgICAgICAgbm9kZS0+d3JpdGVPZmZzZXRzQXNYWVpXKCZvdXQpOworICAgIH0K
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBPdXRwdXRITFNMOjp2aXNpdEJpbmFyeShWaXNp
dCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkKIHsKICAgICBUSW5mb1NpbmtCYXNlICZvdXQg
PSBnZXRJbmZvU2luaygpOwpAQCAtMTczOSwxMzUgKzg2NywxMzkgQEAgYm9vbCBPdXRwdXRITFNM
Ojp2aXNpdEJpbmFyeShWaXNpdCB2aXNpdAogCiAgICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQog
ICAgIHsKLSAgICAgIGNhc2UgRU9wQXNzaWduOgotICAgICAgICBpZiAobm9kZS0+Z2V0TGVmdCgp
LT5pc0FycmF5KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnJp
Z2h0QWdnID0gbm9kZS0+Z2V0UmlnaHQoKS0+Z2V0QXNBZ2dyZWdhdGUoKTsKLSAgICAgICAgICAg
IGlmIChyaWdodEFnZyAhPSBudWxscHRyICYmIHJpZ2h0QWdnLT5pc0NvbnN0cnVjdG9yKCkpCisg
ICAgICAgIGNhc2UgRU9wQ29tbWE6CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlz
aXQsICIoIiwgIiwgIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVP
cEFzc2lnbjoKKyAgICAgICAgICAgIGlmIChub2RlLT5nZXRMZWZ0KCktPmlzQXJyYXkoKSkKICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZmdW5jdGlvbk5hbWUg
PSBhZGRBcnJheUNvbnN0cnVjdEludG9GdW5jdGlvbihub2RlLT5nZXRUeXBlKCkpOwotICAgICAg
ICAgICAgICAgIG91dCA8PCBmdW5jdGlvbk5hbWUgPDwgIigiOwotICAgICAgICAgICAgICAgIG5v
ZGUtPmdldExlZnQoKS0+dHJhdmVyc2UodGhpcyk7Ci0gICAgICAgICAgICAgICAgVEludGVybVNl
cXVlbmNlICpzZXEgPSByaWdodEFnZy0+Z2V0U2VxdWVuY2UoKTsKLSAgICAgICAgICAgICAgICBm
b3IgKGF1dG8gJmFycmF5RWxlbWVudCA6ICpzZXEpCisgICAgICAgICAgICAgICAgVEludGVybUFn
Z3JlZ2F0ZSAqcmlnaHRBZ2cgPSBub2RlLT5nZXRSaWdodCgpLT5nZXRBc0FnZ3JlZ2F0ZSgpOwor
ICAgICAgICAgICAgICAgIGlmIChyaWdodEFnZyAhPSBudWxscHRyICYmIHJpZ2h0QWdnLT5pc0Nv
bnN0cnVjdG9yKCkpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBvdXQg
PDwgIiwgIjsKLSAgICAgICAgICAgICAgICAgICAgYXJyYXlFbGVtZW50LT50cmF2ZXJzZSh0aGlz
KTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmZnVuY3Rpb25OYW1lID0gYWRk
QXJyYXlDb25zdHJ1Y3RJbnRvRnVuY3Rpb24obm9kZS0+Z2V0VHlwZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgb3V0IDw8IGZ1bmN0aW9uTmFtZSA8PCAiKCI7CisgICAgICAgICAgICAgICAgICAg
IG5vZGUtPmdldExlZnQoKS0+dHJhdmVyc2UodGhpcyk7CisgICAgICAgICAgICAgICAgICAgIFRJ
bnRlcm1TZXF1ZW5jZSAqc2VxID0gcmlnaHRBZ2ctPmdldFNlcXVlbmNlKCk7CisgICAgICAgICAg
ICAgICAgICAgIGZvciAoYXV0byAmYXJyYXlFbGVtZW50IDogKnNlcSkKKyAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIsICI7CisgICAgICAgICAg
ICAgICAgICAgICAgICBhcnJheUVsZW1lbnQtPnRyYXZlcnNlKHRoaXMpOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiKSI7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
b3V0IDw8ICIpIjsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAg
ICAgLy8gQXJyYXlSZXR1cm5WYWx1ZVRvT3V0UGFyYW1ldGVyIHNob3VsZCBoYXZlIGVsaW1pbmF0
ZWQgZXhwcmVzc2lvbnMgd2hlcmUgYQorICAgICAgICAgICAgICAgIC8vIGZ1bmN0aW9uIGNhbGwg
aXMgYXNzaWduZWQuCisgICAgICAgICAgICAgICAgQVNTRVJUKHJpZ2h0QWdnID09IG51bGxwdHIg
fHwgcmlnaHRBZ2ctPmdldE9wKCkgIT0gRU9wRnVuY3Rpb25DYWxsKTsKKworICAgICAgICAgICAg
ICAgIGNvbnN0IFRTdHJpbmcgJmZ1bmN0aW9uTmFtZSA9IGFkZEFycmF5QXNzaWdubWVudEZ1bmN0
aW9uKG5vZGUtPmdldFR5cGUoKSk7CisgICAgICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQs
IHZpc2l0LCAoZnVuY3Rpb25OYW1lICsgIigiKS5jX3N0cigpLCAiLCAiLCAiKSIpOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgLy8gQXJyYXlSZXR1cm5WYWx1ZVRvT3V0UGFyYW1ldGVyIHNo
b3VsZCBoYXZlIGVsaW1pbmF0ZWQgZXhwcmVzc2lvbnMgd2hlcmUgYSBmdW5jdGlvbiBjYWxsIGlz
IGFzc2lnbmVkLgotICAgICAgICAgICAgQVNTRVJUKHJpZ2h0QWdnID09IG51bGxwdHIgfHwgcmln
aHRBZ2ctPmdldE9wKCkgIT0gRU9wRnVuY3Rpb25DYWxsKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIo
IiwgIiA9ICIsICIpIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBFT3BJbml0aWFsaXplOgorICAgICAgICAgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbE5v
ZGUgPSBub2RlLT5nZXRMZWZ0KCktPmdldEFzU3ltYm9sTm9kZSgpOworICAgICAgICAgICAgICAg
IEFTU0VSVChzeW1ib2xOb2RlKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmV4cHJl
c3Npb24gPSBub2RlLT5nZXRSaWdodCgpOwogCi0gICAgICAgICAgICBjb25zdCBUU3RyaW5nICZm
dW5jdGlvbk5hbWUgPSBhZGRBcnJheUFzc2lnbm1lbnRGdW5jdGlvbihub2RlLT5nZXRUeXBlKCkp
OwotICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAoZnVuY3Rpb25OYW1lICsg
IigiKS5jX3N0cigpLCAiLCAiLCAiKSIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgewotICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIgPSAiLCAi
KSIpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BJbml0aWFsaXpl
OgotICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IC8vIEdMU0wgYWxsb3dzIHRvIHdyaXRlIHRoaW5ncyBsaWtlICJmbG9hdCB4ID0geDsiIHdoZXJl
IGEgbmV3IHZhcmlhYmxlIHggaXMgZGVmaW5lZAotICAgICAgICAgICAgLy8gYW5kIHRoZSB2YWx1
ZSBvZiBhbiBleGlzdGluZyB2YXJpYWJsZSB4IGlzIGFzc2lnbmVkLiBITFNMIHVzZXMgQyBzZW1h
bnRpY3MgKHRoZQotICAgICAgICAgICAgLy8gbmV3IHZhcmlhYmxlIGlzIGNyZWF0ZWQgYmVmb3Jl
IHRoZSBhc3NpZ25tZW50IGlzIGV2YWx1YXRlZCksIHNvIHdlIG5lZWQgdG8gY29udmVydAotICAg
ICAgICAgICAgLy8gdGhpcyB0byAiZmxvYXQgdCA9IHgsIHggPSB0OyIuCi0KLSAgICAgICAgICAg
IFRJbnRlcm1TeW1ib2wgKnN5bWJvbE5vZGUgPSBub2RlLT5nZXRMZWZ0KCktPmdldEFzU3ltYm9s
Tm9kZSgpOwotICAgICAgICAgICAgQVNTRVJUKHN5bWJvbE5vZGUpOwotICAgICAgICAgICAgVElu
dGVybVR5cGVkICpleHByZXNzaW9uID0gbm9kZS0+Z2V0UmlnaHQoKTsKLQotICAgICAgICAgICAg
Ly8gR2xvYmFsIGluaXRpYWxpemVycyBtdXN0IGJlIGNvbnN0YW50IGF0IHRoaXMgcG9pbnQuCi0g
ICAgICAgICAgICBBU1NFUlQoc3ltYm9sTm9kZS0+Z2V0UXVhbGlmaWVyKCkgIT0gRXZxR2xvYmFs
IHx8Ci0gICAgICAgICAgICAgICAgICAgKGV4cHJlc3Npb24tPmdldFF1YWxpZmllcigpID09IEV2
cUNvbnN0ICYmCi0gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb24tPmdldEFzQ29uc3RhbnRV
bmlvbigpICE9IG51bGxwdHIpKTsKLSAgICAgICAgICAgIGlmICh3cml0ZVNhbWVTeW1ib2xJbml0
aWFsaXplcihvdXQsIHN5bWJvbE5vZGUsIGV4cHJlc3Npb24pKQorICAgICAgICAgICAgICAgIC8v
IEdsb2JhbCBpbml0aWFsaXplcnMgbXVzdCBiZSBjb25zdGFudCBhdCB0aGlzIHBvaW50LgorICAg
ICAgICAgICAgICAgIEFTU0VSVChzeW1ib2xOb2RlLT5nZXRRdWFsaWZpZXIoKSAhPSBFdnFHbG9i
YWwgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgY2FuV3JpdGVBc0hMU0xMaXRlcmFsKGV4cHJl
c3Npb24pKTsKKworICAgICAgICAgICAgICAgIC8vIEdMU0wgYWxsb3dzIHRvIHdyaXRlIHRoaW5n
cyBsaWtlICJmbG9hdCB4ID0geDsiIHdoZXJlIGEgbmV3IHZhcmlhYmxlIHggaXMgZGVmaW5lZAor
ICAgICAgICAgICAgICAgIC8vIGFuZCB0aGUgdmFsdWUgb2YgYW4gZXhpc3RpbmcgdmFyaWFibGUg
eCBpcyBhc3NpZ25lZC4gSExTTCB1c2VzIEMgc2VtYW50aWNzICh0aGUKKyAgICAgICAgICAgICAg
ICAvLyBuZXcgdmFyaWFibGUgaXMgY3JlYXRlZCBiZWZvcmUgdGhlIGFzc2lnbm1lbnQgaXMgZXZh
bHVhdGVkKSwgc28gd2UgbmVlZCB0bworICAgICAgICAgICAgICAgIC8vIGNvbnZlcnQKKyAgICAg
ICAgICAgICAgICAvLyB0aGlzIHRvICJmbG9hdCB0ID0geCwgeCA9IHQ7Ii4KKyAgICAgICAgICAg
ICAgICBpZiAod3JpdGVTYW1lU3ltYm9sSW5pdGlhbGl6ZXIob3V0LCBzeW1ib2xOb2RlLCBleHBy
ZXNzaW9uKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIFNraXAg
aW5pdGlhbGl6aW5nIHRoZSByZXN0IG9mIHRoZSBleHByZXNzaW9uCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxz
ZSBpZiAod3JpdGVDb25zdGFudEluaXRpYWxpemF0aW9uKG91dCwgc3ltYm9sTm9kZSwgZXhwcmVz
c2lvbikpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBp
ZiAodmlzaXQgPT0gSW5WaXNpdCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBT
a2lwIGluaXRpYWxpemluZyB0aGUgcmVzdCBvZiB0aGUgZXhwcmVzc2lvbgotICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIiA9ICI7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICh3cml0ZUNvbnN0YW50SW5pdGlhbGl6YXRpb24o
b3V0LCBzeW1ib2xOb2RlLCBleHByZXNzaW9uKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEVPcEFkZEFzc2lnbjoKKyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNp
dCwgIigiLCAiICs9ICIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBF
T3BTdWJBc3NpZ246CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwg
IiAtPSAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wTXVsQXNz
aWduOgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIgKj0gIiwg
IikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcFZlY3RvclRpbWVzU2Nh
bGFyQXNzaWduOgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIg
Kj0gIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcE1hdHJpeFRp
bWVzU2NhbGFyQXNzaWduOgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAi
KCIsICIgKj0gIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcFZl
Y3RvclRpbWVzTWF0cml4QXNzaWduOgorICAgICAgICAgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0
KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgICAgICBvdXQgPDwgIigiOwogICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVs
c2UgaWYgKHZpc2l0ID09IEluVmlzaXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAi
ID0gIjsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQWRkQXNzaWdu
OgotICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiICs9ICIsICIpIik7
Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFN1YkFzc2lnbjoKLSAgICAgICAgICBv
dXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiAtPSAiLCAiKSIpOwotICAgICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBFT3BNdWxBc3NpZ246Ci0gICAgICAgICAgb3V0cHV0VHJpcGxldChv
dXQsIHZpc2l0LCAiKCIsICIgKj0gIiwgIikiKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNh
c2UgRU9wVmVjdG9yVGltZXNTY2FsYXJBc3NpZ246Ci0gICAgICAgICAgb3V0cHV0VHJpcGxldChv
dXQsIHZpc2l0LCAiKCIsICIgKj0gIiwgIikiKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNh
c2UgRU9wTWF0cml4VGltZXNTY2FsYXJBc3NpZ246Ci0gICAgICAgICAgb3V0cHV0VHJpcGxldChv
dXQsIHZpc2l0LCAiKCIsICIgKj0gIiwgIikiKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNh
c2UgRU9wVmVjdG9yVGltZXNNYXRyaXhBc3NpZ246Ci0gICAgICAgIGlmICh2aXNpdCA9PSBQcmVW
aXNpdCkKLSAgICAgICAgewotICAgICAgICAgICAgb3V0IDw8ICIoIjsKLSAgICAgICAgfQotICAg
ICAgICBlbHNlIGlmICh2aXNpdCA9PSBJblZpc2l0KQotICAgICAgICB7Ci0gICAgICAgICAgICBv
dXQgPDwgIiA9IG11bCgiOwotICAgICAgICAgICAgbm9kZS0+Z2V0TGVmdCgpLT50cmF2ZXJzZSh0
aGlzKTsKLSAgICAgICAgICAgIG91dCA8PCAiLCB0cmFuc3Bvc2UoIjsKLSAgICAgICAgfQotICAg
ICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAiKSkpIjsKLSAgICAgICAg
fQotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNNYXRyaXhBc3NpZ246
Ci0gICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkKLSAgICAgICAgewotICAgICAgICAgICAg
b3V0IDw8ICIoIjsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmICh2aXNpdCA9PSBJblZpc2l0
KQotICAgICAgICB7Ci0gICAgICAgICAgICBvdXQgPDwgIiA9IHRyYW5zcG9zZShtdWwodHJhbnNw
b3NlKCI7Ci0gICAgICAgICAgICBub2RlLT5nZXRMZWZ0KCktPnRyYXZlcnNlKHRoaXMpOwotICAg
ICAgICAgICAgb3V0IDw8ICIpLCB0cmFuc3Bvc2UoIjsKLSAgICAgICAgfQotICAgICAgICBlbHNl
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAiKSkpKSI7Ci0gICAgICAgIH0KLSAgICAg
ICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcERpdkFzc2lnbjoKLSAgICAgICAgICBvdXRwdXRUcmlw
bGV0KG91dCwgdmlzaXQsICIoIiwgIiAvPSAiLCAiKSIpOwotICAgICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSBFT3BJTW9kQXNzaWduOgotICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNp
dCwgIigiLCAiICU9ICIsICIpIik7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEJp
dFNoaWZ0TGVmdEFzc2lnbjoKLSAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIo
IiwgIiA8PD0gIiwgIikiKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQml0U2hp
ZnRSaWdodEFzc2lnbjoKLSAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwg
IiA+Pj0gIiwgIikiKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQml0d2lzZUFu
ZEFzc2lnbjoKLSAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiAmPSAi
LCAiKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BCaXR3aXNlWG9yQXNzaWdu
OgotICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiIF49ICIsICIpIik7
Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEJpdHdpc2VPckFzc2lnbjoKLSAgICAg
ICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiB8PSAiLCAiKSIpOwotICAgICAg
ICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BJbmRleERpcmVjdDoKKyAgICAgICAgICAgIGVsc2Ug
aWYgKHZpc2l0ID09IEluVmlzaXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0
IDw8ICIgPSBtdWwoIjsKKyAgICAgICAgICAgICAgICBub2RlLT5nZXRMZWZ0KCktPnRyYXZlcnNl
KHRoaXMpOworICAgICAgICAgICAgICAgIG91dCA8PCAiLCB0cmFuc3Bvc2UoIjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBv
dXQgPDwgIikpKSI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBFT3BNYXRyaXhUaW1lc01hdHJpeEFzc2lnbjoKKyAgICAgICAgICAgIGlmICh2aXNpdCA9
PSBQcmVWaXNpdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIigiOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAodmlzaXQgPT0gSW5WaXNpdCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIiA9IHRyYW5zcG9zZShtdWwodHJh
bnNwb3NlKCI7CisgICAgICAgICAgICAgICAgbm9kZS0+Z2V0TGVmdCgpLT50cmF2ZXJzZSh0aGlz
KTsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIiksIHRyYW5zcG9zZSgiOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8
PCAiKSkpKSI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBFT3BEaXZBc3NpZ246CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIo
IiwgIiAvPSAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wSU1v
ZEFzc2lnbjoKKyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiICU9
ICIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BCaXRTaGlmdExl
ZnRBc3NpZ246CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiA8
PD0gIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEJpdFNoaWZ0
UmlnaHRBc3NpZ246CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwg
IiA+Pj0gIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEJpdHdp
c2VBbmRBc3NpZ246CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwg
IiAmPSAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQml0d2lz
ZVhvckFzc2lnbjoKKyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAi
IF49ICIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BCaXR3aXNl
T3JBc3NpZ246CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiB8
PSAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wSW5kZXhEaXJl
Y3Q6CiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IFRUeXBlJiBsZWZ0VHlwZSA9IG5vZGUt
PmdldExlZnQoKS0+Z2V0VHlwZSgpOwogICAgICAgICAgICAgaWYgKGxlZnRUeXBlLmlzSW50ZXJm
YWNlQmxvY2soKSkKQEAgLTE5NDYsNDIgKzEwNzgsNiBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0
QmluYXJ5KFZpc2l0IHZpc2l0CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
ICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFZlY3RvclN3aXp6bGU6Ci0gICAgICAgIGlm
ICh2aXNpdCA9PSBJblZpc2l0KQotICAgICAgICB7Ci0gICAgICAgICAgICBvdXQgPDwgIi4iOwot
Ci0gICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICpzd2l6emxlID0gbm9kZS0+Z2V0UmlnaHQo
KS0+Z2V0QXNBZ2dyZWdhdGUoKTsKLQotICAgICAgICAgICAgaWYgKHN3aXp6bGUpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgVEludGVybVNlcXVlbmNlICpzZXF1ZW5jZSA9IHN3aXp6
bGUtPmdldFNlcXVlbmNlKCk7Ci0KLSAgICAgICAgICAgICAgICBmb3IgKFRJbnRlcm1TZXF1ZW5j
ZTo6aXRlcmF0b3Igc2l0ID0gc2VxdWVuY2UtPmJlZ2luKCk7IHNpdCAhPSBzZXF1ZW5jZS0+ZW5k
KCk7IHNpdCsrKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgVEludGVy
bUNvbnN0YW50VW5pb24gKmVsZW1lbnQgPSAoKnNpdCktPmdldEFzQ29uc3RhbnRVbmlvbigpOwot
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50KQotICAgICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgaSA9IGVsZW1lbnQtPmdldElDb25zdCgwKTsK
LQotICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiBvdXQgPDwgIngiOyBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTogb3V0IDw8ICJ5IjsgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IG91dCA8PCAieiI7IGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICAgICAgY2FzZSAzOiBvdXQgPDwgInciOyBicmVhazsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSBV
TlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKLQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgIC8v
IEZ1bGx5IHByb2Nlc3NlZAotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBF
T3BBZGQ6CiAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIgKyAiLCAi
KSIpOwogICAgICAgICAgIGJyZWFrOwpAQCAtMjE4NSw5ICsxMjgxLDEyIEBAIGJvb2wgT3V0cHV0
SExTTDo6dmlzaXRVbmFyeShWaXNpdCB2aXNpdCwKICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91
dCwgdmlzaXQsICJmcmFjKCIsICIiLCAiKSIpOwogICAgICAgICAgIGJyZWFrOwogICAgICAgY2Fz
ZSBFT3BJc05hbjoKLSAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJpc25hbigi
LCAiIiwgIikiKTsKLSAgICAgICAgbVJlcXVpcmVzSUVFRVN0cmljdENvbXBpbGluZyA9IHRydWU7
Ci0gICAgICAgIGJyZWFrOworICAgICAgICAgIGlmIChub2RlLT5nZXRVc2VFbXVsYXRlZEZ1bmN0
aW9uKCkpCisgICAgICAgICAgICAgIHdyaXRlRW11bGF0ZWRGdW5jdGlvblRyaXBsZXQob3V0LCB2
aXNpdCwgImlzbmFuKCIpOworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgb3V0cHV0VHJp
cGxldChvdXQsIHZpc2l0LCAiaXNuYW4oIiwgIiIsICIpIik7CisgICAgICAgICAgbVJlcXVpcmVz
SUVFRVN0cmljdENvbXBpbGluZyA9IHRydWU7CisgICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNl
IEVPcElzSW5mOgogICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgImlzaW5mKCIs
ICIiLCAiKSIpOwogICAgICAgICAgIGJyZWFrOwpAQCAtMjMyMCwyMzYgKzE0MTksMjM2IEBAIFRT
dHJpbmcgT3V0cHV0SExTTDo6c2FtcGxlck5hbWVQcmVmaXhGcm8KICAgICB9CiB9CiAKLWJvb2wg
T3V0cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUg
Km5vZGUpCitib29sIE91dHB1dEhMU0w6OnZpc2l0QmxvY2soVmlzaXQgdmlzaXQsIFRJbnRlcm1C
bG9jayAqbm9kZSkKK3sKKyAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBnZXRJbmZvU2luaygpOwor
CisgICAgaWYgKG1JbnNpZGVGdW5jdGlvbikKKyAgICB7CisgICAgICAgIG91dHB1dExpbmVEaXJl
Y3RpdmUob3V0LCBub2RlLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CisgICAgICAgIG91dCA8PCAi
e1xuIjsKKyAgICB9CisKKyAgICBmb3IgKFRJbnRlcm1TZXF1ZW5jZTo6aXRlcmF0b3Igc2l0ID0g
bm9kZS0+Z2V0U2VxdWVuY2UoKS0+YmVnaW4oKTsKKyAgICAgICAgIHNpdCAhPSBub2RlLT5nZXRT
ZXF1ZW5jZSgpLT5lbmQoKTsgc2l0KyspCisgICAgeworICAgICAgICBvdXRwdXRMaW5lRGlyZWN0
aXZlKG91dCwgKCpzaXQpLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CisKKyAgICAgICAgKCpzaXQp
LT50cmF2ZXJzZSh0aGlzKTsKKworICAgICAgICAvLyBEb24ndCBvdXRwdXQgOyBhZnRlciBjYXNl
IGxhYmVscywgdGhleSdyZSB0ZXJtaW5hdGVkIGJ5IDoKKyAgICAgICAgLy8gVGhpcyBpcyBuZWVk
ZWQgZXNwZWNpYWxseSBzaW5jZSBvdXRwdXR0aW5nIGEgOyBhZnRlciBhIGNhc2Ugc3RhdGVtZW50
IHdvdWxkIHR1cm4gZW1wdHkKKyAgICAgICAgLy8gY2FzZSBzdGF0ZW1lbnRzIGludG8gbm9uLWVt
cHR5IGNhc2Ugc3RhdGVtZW50cywgZGlzYWxsb3dpbmcgZmFsbC10aHJvdWdoIGZyb20gdGhlbS4K
KyAgICAgICAgLy8gQWxzbyBubyBuZWVkIHRvIG91dHB1dCA7IGFmdGVyIGlmIHN0YXRlbWVudHMg
b3Igc2VxdWVuY2VzLiBUaGlzIGlzIGRvbmUganVzdCBmb3IKKyAgICAgICAgLy8gY29kZSBjbGFy
aXR5LgorICAgICAgICBpZiAoKCpzaXQpLT5nZXRBc0Nhc2VOb2RlKCkgPT0gbnVsbHB0ciAmJiAo
KnNpdCktPmdldEFzSWZFbHNlTm9kZSgpID09IG51bGxwdHIgJiYKKyAgICAgICAgICAgICgqc2l0
KS0+Z2V0QXNCbG9jaygpID09IG51bGxwdHIpCisgICAgICAgICAgICBvdXQgPDwgIjtcbiI7Cisg
ICAgfQorCisgICAgaWYgKG1JbnNpZGVGdW5jdGlvbikKKyAgICB7CisgICAgICAgIG91dHB1dExp
bmVEaXJlY3RpdmUob3V0LCBub2RlLT5nZXRMaW5lKCkubGFzdF9saW5lKTsKKyAgICAgICAgb3V0
IDw8ICJ9XG4iOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBPdXRwdXRI
TFNMOjp2aXNpdEZ1bmN0aW9uRGVmaW5pdGlvbihWaXNpdCB2aXNpdCwgVEludGVybUZ1bmN0aW9u
RGVmaW5pdGlvbiAqbm9kZSkKIHsKICAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBnZXRJbmZvU2lu
aygpOwogCi0gICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQorICAgIEFTU0VSVChtQ3VycmVudEZ1
bmN0aW9uTWV0YWRhdGEgPT0gbnVsbHB0cik7CisKKyAgICBzaXplX3QgaW5kZXggPSBtQ2FsbERh
Zy5maW5kSW5kZXgobm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCkpOworICAgIEFTU0VSVChp
bmRleCAhPSBDYWxsREFHOjpJbnZhbGlkSW5kZXgpOworICAgIG1DdXJyZW50RnVuY3Rpb25NZXRh
ZGF0YSA9ICZtQVNUTWV0YWRhdGFMaXN0W2luZGV4XTsKKworICAgIG91dCA8PCBUeXBlU3RyaW5n
KG5vZGUtPmdldFR5cGUoKSkgPDwgIiAiOworCisgICAgVEludGVybVNlcXVlbmNlICpwYXJhbWV0
ZXJzID0gbm9kZS0+Z2V0RnVuY3Rpb25QYXJhbWV0ZXJzKCktPmdldFNlcXVlbmNlKCk7CisKKyAg
ICBpZiAobm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmlzTWFpbigpKQorICAgIHsKKyAg
ICAgICAgb3V0IDw8ICJnbF9tYWluKCI7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAg
IG91dCA8PCBEZWNvcmF0ZUZ1bmN0aW9uSWZOZWVkZWQobm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJ
bmZvKCktPmdldE5hbWVPYmooKSkKKyAgICAgICAgICAgIDw8IERpc2FtYmlndWF0ZUZ1bmN0aW9u
TmFtZShwYXJhbWV0ZXJzKSA8PCAobU91dHB1dExvZDBGdW5jdGlvbiA/ICJMb2QwKCIgOiAiKCIp
OworICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGFyYW1ldGVycy0+
c2l6ZSgpOyBpKyspCiAgICAgewotICAgICAgY2FzZSBFT3BTZXF1ZW5jZToKKyAgICAgICAgVElu
dGVybVN5bWJvbCAqc3ltYm9sID0gKCpwYXJhbWV0ZXJzKVtpXS0+Z2V0QXNTeW1ib2xOb2RlKCk7
CisKKyAgICAgICAgaWYgKHN5bWJvbCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKG1JbnNp
ZGVGdW5jdGlvbikKKyAgICAgICAgICAgIGVuc3VyZVN0cnVjdERlZmluZWQoc3ltYm9sLT5nZXRU
eXBlKCkpOworCisgICAgICAgICAgICBvdXQgPDwgYXJndW1lbnRTdHJpbmcoc3ltYm9sKTsKKwor
ICAgICAgICAgICAgaWYgKGkgPCBwYXJhbWV0ZXJzLT5zaXplKCkgLSAxKQogICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUob3V0LCBub2RlLT5nZXRMaW5l
KCkuZmlyc3RfbGluZSk7Ci0gICAgICAgICAgICAgICAgb3V0IDw8ICJ7XG4iOworICAgICAgICAg
ICAgICAgIG91dCA8PCAiLCAiOwogICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgfQogCi0gICAgICAgICAgICBmb3Ig
KFRJbnRlcm1TZXF1ZW5jZTo6aXRlcmF0b3Igc2l0ID0gbm9kZS0+Z2V0U2VxdWVuY2UoKS0+YmVn
aW4oKTsgc2l0ICE9IG5vZGUtPmdldFNlcXVlbmNlKCktPmVuZCgpOyBzaXQrKykKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG91dCwgKCpzaXQpLT5n
ZXRMaW5lKCkuZmlyc3RfbGluZSk7CisgICAgb3V0IDw8ICIpXG4iOwogCi0gICAgICAgICAgICAg
ICAgKCpzaXQpLT50cmF2ZXJzZSh0aGlzKTsKKyAgICBtSW5zaWRlRnVuY3Rpb24gPSB0cnVlOwor
ICAgIC8vIFRoZSBmdW5jdGlvbiBib2R5IG5vZGUgd2lsbCBvdXRwdXQgYnJhY2VzLgorICAgIG5v
ZGUtPmdldEJvZHkoKS0+dHJhdmVyc2UodGhpcyk7CisgICAgbUluc2lkZUZ1bmN0aW9uID0gZmFs
c2U7CiAKLSAgICAgICAgICAgICAgICAvLyBEb24ndCBvdXRwdXQgOyBhZnRlciBjYXNlIGxhYmVs
cywgdGhleSdyZSB0ZXJtaW5hdGVkIGJ5IDoKLSAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIG5l
ZWRlZCBlc3BlY2lhbGx5IHNpbmNlIG91dHB1dHRpbmcgYSA7IGFmdGVyIGEgY2FzZSBzdGF0ZW1l
bnQgd291bGQgdHVybiBlbXB0eQotICAgICAgICAgICAgICAgIC8vIGNhc2Ugc3RhdGVtZW50cyBp
bnRvIG5vbi1lbXB0eSBjYXNlIHN0YXRlbWVudHMsIGRpc2FsbG93aW5nIGZhbGwtdGhyb3VnaCBm
cm9tIHRoZW0uCi0gICAgICAgICAgICAgICAgLy8gQWxzbyBubyBuZWVkIHRvIG91dHB1dCA7IGFm
dGVyIHNlbGVjdGlvbiAoaWYpIHN0YXRlbWVudHMgb3Igc2VxdWVuY2VzLiBUaGlzIGlzIGRvbmUg
anVzdAotICAgICAgICAgICAgICAgIC8vIGZvciBjb2RlIGNsYXJpdHkuCi0gICAgICAgICAgICAg
ICAgVEludGVybVNlbGVjdGlvbiAqYXNTZWxlY3Rpb24gPSAoKnNpdCktPmdldEFzU2VsZWN0aW9u
Tm9kZSgpOwotICAgICAgICAgICAgICAgIEFTU0VSVChhc1NlbGVjdGlvbiA9PSBudWxscHRyIHx8
ICFhc1NlbGVjdGlvbi0+dXNlc1Rlcm5hcnlPcGVyYXRvcigpKTsKLSAgICAgICAgICAgICAgICBp
ZiAoKCpzaXQpLT5nZXRBc0Nhc2VOb2RlKCkgPT0gbnVsbHB0ciAmJiBhc1NlbGVjdGlvbiA9PSBu
dWxscHRyICYmICFJc1NlcXVlbmNlKCpzaXQpKQotICAgICAgICAgICAgICAgICAgICBvdXQgPDwg
IjtcbiI7Ci0gICAgICAgICAgICB9CisgICAgbUN1cnJlbnRGdW5jdGlvbk1ldGFkYXRhID0gbnVs
bHB0cjsKIAotICAgICAgICAgICAgaWYgKG1JbnNpZGVGdW5jdGlvbikKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG91dCwgbm9kZS0+Z2V0TGluZSgp
Lmxhc3RfbGluZSk7Ci0gICAgICAgICAgICAgICAgb3V0IDw8ICJ9XG4iOwotICAgICAgICAgICAg
fQorICAgIGJvb2wgbmVlZHNMb2QwID0gbUFTVE1ldGFkYXRhTGlzdFtpbmRleF0ubU5lZWRzTG9k
MDsKKyAgICBpZiAobmVlZHNMb2QwICYmICFtT3V0cHV0TG9kMEZ1bmN0aW9uICYmIG1TaGFkZXJU
eXBlID09IEdMX0ZSQUdNRU5UX1NIQURFUikKKyAgICB7CisgICAgICAgIEFTU0VSVCghbm9kZS0+
Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmlzTWFpbigpKTsKKyAgICAgICAgbU91dHB1dExvZDBG
dW5jdGlvbiA9IHRydWU7CisgICAgICAgIG5vZGUtPnRyYXZlcnNlKHRoaXMpOworICAgICAgICBt
T3V0cHV0TG9kMEZ1bmN0aW9uID0gZmFsc2U7CisgICAgfQogCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgIGNhc2UgRU9wRGVjbGFyYXRpb246Ci0gICAgICAgIGlm
ICh2aXNpdCA9PSBQcmVWaXNpdCkKLSAgICAgICAgewotICAgICAgICAgICAgVEludGVybVNlcXVl
bmNlICpzZXF1ZW5jZSA9IG5vZGUtPmdldFNlcXVlbmNlKCk7Ci0gICAgICAgICAgICBUSW50ZXJt
VHlwZWQgKnZhcmlhYmxlID0gKCpzZXF1ZW5jZSlbMF0tPmdldEFzVHlwZWQoKTsKLSAgICAgICAg
ICAgIEFTU0VSVChzZXF1ZW5jZS0+c2l6ZSgpID09IDEpOworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFn
Z3JlZ2F0ZSAqbm9kZSkKK3sKKyAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBnZXRJbmZvU2luaygp
OwogCi0gICAgICAgICAgICBpZiAodmFyaWFibGUgJiYKLSAgICAgICAgICAgICAgICAodmFyaWFi
bGUtPmdldFF1YWxpZmllcigpID09IEV2cVRlbXBvcmFyeSB8fAotICAgICAgICAgICAgICAgICB2
YXJpYWJsZS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxR2xvYmFsIHx8IHZhcmlhYmxlLT5nZXRRdWFs
aWZpZXIoKSA9PSBFdnFDb25zdCkpCisgICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQorICAgIHsK
KyAgICAgICAgY2FzZSBFT3BEZWNsYXJhdGlvbjoKKyAgICAgICAgICAgIGlmICh2aXNpdCA9PSBQ
cmVWaXNpdCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBlbnN1cmVTdHJ1Y3REZWZp
bmVkKHZhcmlhYmxlLT5nZXRUeXBlKCkpOworICAgICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5j
ZSAqc2VxdWVuY2UgPSBub2RlLT5nZXRTZXF1ZW5jZSgpOworICAgICAgICAgICAgICAgIFRJbnRl
cm1UeXBlZCAqdmFyaWFibGUgICAgPSAoKnNlcXVlbmNlKVswXS0+Z2V0QXNUeXBlZCgpOworICAg
ICAgICAgICAgICAgIEFTU0VSVChzZXF1ZW5jZS0+c2l6ZSgpID09IDEpOwogCi0gICAgICAgICAg
ICAgICAgaWYgKCF2YXJpYWJsZS0+Z2V0QXNTeW1ib2xOb2RlKCkgfHwgdmFyaWFibGUtPmdldEFz
U3ltYm9sTm9kZSgpLT5nZXRTeW1ib2woKSAhPSAiIikgICAvLyBWYXJpYWJsZSBkZWNsYXJhdGlv
bgorICAgICAgICAgICAgICAgIGlmICh2YXJpYWJsZSAmJgorICAgICAgICAgICAgICAgICAgICAo
dmFyaWFibGUtPmdldFF1YWxpZmllcigpID09IEV2cVRlbXBvcmFyeSB8fAorICAgICAgICAgICAg
ICAgICAgICAgdmFyaWFibGUtPmdldFF1YWxpZmllcigpID09IEV2cUdsb2JhbCB8fCB2YXJpYWJs
ZS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpKQogICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCFtSW5zaWRlRnVuY3Rpb24pCisgICAgICAgICAgICAgICAgICAg
IGVuc3VyZVN0cnVjdERlZmluZWQodmFyaWFibGUtPmdldFR5cGUoKSk7CisKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCF2YXJpYWJsZS0+Z2V0QXNTeW1ib2xOb2RlKCkgfHwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRBc1N5bWJvbE5vZGUoKS0+Z2V0U3ltYm9sKCkgIT0g
IiIpICAvLyBWYXJpYWJsZSBkZWNsYXJhdGlvbgogICAgICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBvdXQgPDwgInN0YXRpYyAiOwotICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1JbnNpZGVGdW5jdGlvbikKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwg
InN0YXRpYyAiOworICAgICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAg
ICAgIG91dCA8PCBUeXBlU3RyaW5nKHZhcmlhYmxlLT5nZXRUeXBlKCkpICsgIiAiOworICAgICAg
ICAgICAgICAgICAgICAgICAgb3V0IDw8IFR5cGVTdHJpbmcodmFyaWFibGUtPmdldFR5cGUoKSkg
KyAiICI7CiAKLSAgICAgICAgICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gdmFy
aWFibGUtPmdldEFzU3ltYm9sTm9kZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgVEludGVy
bVN5bWJvbCAqc3ltYm9sID0gdmFyaWFibGUtPmdldEFzU3ltYm9sTm9kZSgpOwogCi0gICAgICAg
ICAgICAgICAgICAgIGlmIChzeW1ib2wpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHN5bWJvbC0+dHJhdmVyc2UodGhpcyk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBvdXQgPDwgQXJyYXlTdHJpbmcoc3ltYm9sLT5nZXRUeXBlKCkpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgb3V0IDw8ICIgPSAiICsgaW5pdGlhbGl6ZXIoc3ltYm9sLT5nZXRUeXBl
KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2wtPnRyYXZlcnNl
KHRoaXMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCBBcnJheVN0cmluZyhz
eW1ib2wtPmdldFR5cGUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIg
PSAiICsgaW5pdGlhbGl6ZXIoc3ltYm9sLT5nZXRUeXBlKCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT50cmF2ZXJzZSh0
aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZh
cmlhYmxlLT5nZXRBc1N5bWJvbE5vZGUoKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YXJpYWJsZS0+Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJvbCgpID09CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiIikgIC8vIFR5cGUgKHN0cnVjdCkgZGVjbGFyYXRpb24K
ICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUt
PnRyYXZlcnNlKHRoaXMpOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWxyZWFkeSBhZGRl
ZCB0byBjb25zdHJ1Y3RvciBtYXAKICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmICh2YXJpYWJsZS0+Z2V0QXNT
eW1ib2xOb2RlKCkgJiYgdmFyaWFibGUtPmdldEFzU3ltYm9sTm9kZSgpLT5nZXRTeW1ib2woKSA9
PSAiIikgICAvLyBUeXBlIChzdHJ1Y3QpIGRlY2xhcmF0aW9uCi0gICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICAvLyBBbHJlYWR5IGFkZGVkIHRvIGNvbnN0cnVjdG9yIG1hcAot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICh2YXJpYWJsZSAmJiBJc1ZhcnlpbmdP
dXQodmFyaWFibGUtPmdldFF1YWxpZmllcigpKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBmb3IgKFRJbnRlcm1TZXF1ZW5jZTo6aXRlcmF0b3Igc2l0ID0gc2VxdWVuY2UtPmJlZ2lu
KCk7IHNpdCAhPSBzZXF1ZW5jZS0+ZW5kKCk7IHNpdCsrKQorICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKHZhcmlhYmxlICYmIElzVmFyeWluZ091dCh2YXJpYWJsZS0+Z2V0UXVhbGlmaWVyKCkpKQog
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3lt
Ym9sID0gKCpzaXQpLT5nZXRBc1N5bWJvbE5vZGUoKTsKLQotICAgICAgICAgICAgICAgICAgICBp
ZiAoc3ltYm9sKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAvLyBWZXJ0ZXggKG91dHB1dCkgdmFyeWluZ3Mgd2hpY2ggYXJlIGRlY2xhcmVkIGJ1dCBub3Qg
d3JpdHRlbiB0byBzaG91bGQgc3RpbGwgYmUgZGVjbGFyZWQgdG8gYWxsb3cgc3VjY2Vzc2Z1bCBs
aW5raW5nCi0gICAgICAgICAgICAgICAgICAgICAgICBtUmVmZXJlbmNlZFZhcnlpbmdzW3N5bWJv
bC0+Z2V0U3ltYm9sKCldID0gc3ltYm9sOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZm9yIChUSW50ZXJtU2VxdWVu
Y2U6Oml0ZXJhdG9yIHNpdCA9IHNlcXVlbmNlLT5iZWdpbigpOyBzaXQgIT0gc2VxdWVuY2UtPmVu
ZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgIHNpdCsrKQogICAgICAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAoKnNpdCktPnRyYXZlcnNlKHRoaXMpOworICAg
ICAgICAgICAgICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gKCpzaXQpLT5nZXRB
c1N5bWJvbE5vZGUoKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBW
ZXJ0ZXggKG91dHB1dCkgdmFyeWluZ3Mgd2hpY2ggYXJlIGRlY2xhcmVkIGJ1dCBub3Qgd3JpdHRl
biB0byBzaG91bGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGlsbCBiZSBkZWNs
YXJlZCB0byBhbGxvdyBzdWNjZXNzZnVsIGxpbmtpbmcKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtUmVmZXJlbmNlZFZhcnlpbmdzW3N5bWJvbC0+Z2V0U3ltYm9sKCldID0gc3ltYm9sOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICgq
c2l0KS0+dHJhdmVyc2UodGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmICh2aXNpdCA9
PSBJblZpc2l0KQotICAgICAgICB7Ci0gICAgICAgICAgICBvdXQgPDwgIiwgIjsKLSAgICAgICAg
fQotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wSW52YXJpYW50RGVjbGFyYXRpb246Ci0g
ICAgICAgIC8vIERvIG5vdCBkbyBhbnkgdHJhbnNsYXRpb24KLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgY2FzZSBFT3BQcm90b3R5cGU6Ci0gICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNp
dCkKLSAgICAgICAgewotICAgICAgICAgICAgc2l6ZV90IGluZGV4ID0gbUNhbGxEYWcuZmluZElu
ZGV4KG5vZGUpOwotICAgICAgICAgICAgLy8gU2tpcCB0aGUgcHJvdG90eXBlIGlmIGl0IGlzIG5v
dCBpbXBsZW1lbnRlZCAoYW5kIHRodXMgbm90IHVzZWQpCi0gICAgICAgICAgICBpZiAoaW5kZXgg
PT0gQ2FsbERBRzo6SW52YWxpZEluZGV4KQotICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgVEludGVybVNlcXVl
bmNlICphcmd1bWVudHMgPSBub2RlLT5nZXRTZXF1ZW5jZSgpOwotCi0gICAgICAgICAgICBUU3Ry
aW5nIG5hbWUgPSBEZWNvcmF0ZUZ1bmN0aW9uSWZOZWVkZWQobm9kZS0+Z2V0TmFtZU9iaigpKTsK
LSAgICAgICAgICAgIG91dCA8PCBUeXBlU3RyaW5nKG5vZGUtPmdldFR5cGUoKSkgPDwgIiAiIDw8
IG5hbWUgPDwgRGlzYW1iaWd1YXRlRnVuY3Rpb25OYW1lKGFyZ3VtZW50cykKLSAgICAgICAgICAg
ICAgICA8PCAobU91dHB1dExvZDBGdW5jdGlvbiA/ICJMb2QwKCIgOiAiKCIpOwotCi0gICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGFyZ3VtZW50cy0+c2l6ZSgpOyBpKysp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0g
KCphcmd1bWVudHMpW2ldLT5nZXRBc1N5bWJvbE5vZGUoKTsKLQotICAgICAgICAgICAgICAgIGlm
IChzeW1ib2wpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBvdXQgPDwg
YXJndW1lbnRTdHJpbmcoc3ltYm9sKTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAoaSA8IGFy
Z3VtZW50cy0+c2l6ZSgpIC0gMSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAgICAgb3V0IDw8ICIsICI7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBvdXQgPDwgIik7XG4iOwotCi0gICAgICAgICAgICAvLyBBbHNv
IHByb3RvdHlwZSB0aGUgTG9kMCB2YXJpYW50IGlmIG5lZWRlZAotICAgICAgICAgICAgYm9vbCBu
ZWVkc0xvZDAgPSBtQVNUTWV0YWRhdGFMaXN0W2luZGV4XS5tTmVlZHNMb2QwOwotICAgICAgICAg
ICAgaWYgKG5lZWRzTG9kMCAmJiAhbU91dHB1dExvZDBGdW5jdGlvbiAmJiBtU2hhZGVyVHlwZSA9
PSBHTF9GUkFHTUVOVF9TSEFERVIpCisgICAgICAgICAgICBlbHNlIGlmICh2aXNpdCA9PSBJblZp
c2l0KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1PdXRwdXRMb2QwRnVuY3Rpb24g
PSB0cnVlOwotICAgICAgICAgICAgICAgIG5vZGUtPnRyYXZlcnNlKHRoaXMpOwotICAgICAgICAg
ICAgICAgIG1PdXRwdXRMb2QwRnVuY3Rpb24gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBvdXQg
PDwgIiwgIjsKICAgICAgICAgICAgIH0KLQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgRU9wSW52YXJpYW50RGVjbGFyYXRpb246CisgICAgICAgICAgICAvLyBEbyBub3QgZG8gYW55
IHRyYW5zbGF0aW9uCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAg
ICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcENvbW1hOgotICAgICAgICAgIG91dHB1dFRyaXBsZXQo
b3V0LCB2aXNpdCwgIigiLCAiLCAiLCAiKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBFT3BGdW5jdGlvbjoKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKG1DdXJyZW50RnVu
Y3Rpb25NZXRhZGF0YSA9PSBudWxscHRyKTsKLSAgICAgICAgICAgIFRTdHJpbmcgbmFtZSA9IFRG
dW5jdGlvbjo6dW5tYW5nbGVOYW1lKG5vZGUtPmdldE5hbWVPYmooKS5nZXRTdHJpbmcoKSk7Ci0K
LSAgICAgICAgICAgIHNpemVfdCBpbmRleCA9IG1DYWxsRGFnLmZpbmRJbmRleChub2RlKTsKLSAg
ICAgICAgICAgIEFTU0VSVChpbmRleCAhPSBDYWxsREFHOjpJbnZhbGlkSW5kZXgpOwotICAgICAg
ICAgICAgbUN1cnJlbnRGdW5jdGlvbk1ldGFkYXRhID0gJm1BU1RNZXRhZGF0YUxpc3RbaW5kZXhd
OwotCi0gICAgICAgICAgICBvdXQgPDwgVHlwZVN0cmluZyhub2RlLT5nZXRUeXBlKCkpIDw8ICIg
IjsKKyAgICAgICAgY2FzZSBFT3BQcm90b3R5cGU6CisgICAgICAgICAgICBpZiAodmlzaXQgPT0g
UHJlVmlzaXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc2l6ZV90IGluZGV4ID0g
bUNhbGxEYWcuZmluZEluZGV4KG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpKTsKKyAgICAg
ICAgICAgICAgICAvLyBTa2lwIHRoZSBwcm90b3R5cGUgaWYgaXQgaXMgbm90IGltcGxlbWVudGVk
IChhbmQgdGh1cyBub3QgdXNlZCkKKyAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT0gQ2FsbERB
Rzo6SW52YWxpZEluZGV4KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgVEludGVybVNl
cXVlbmNlICpzZXF1ZW5jZSAgPSBub2RlLT5nZXRTZXF1ZW5jZSgpOwotICAgICAgICAgICAgVElu
dGVybVNlcXVlbmNlICphcmd1bWVudHMgPSAoKnNlcXVlbmNlKVswXS0+Z2V0QXNBZ2dyZWdhdGUo
KS0+Z2V0U2VxdWVuY2UoKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgKmFyZ3Vt
ZW50cyA9IG5vZGUtPmdldFNlcXVlbmNlKCk7CiAKLSAgICAgICAgICAgIGlmIChuYW1lID09ICJt
YWluIikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXQgPDwgImdsX21haW4oIjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBvdXQgPDwgRGVjb3JhdGVGdW5jdGlvbklmTmVlZGVkKG5vZGUtPmdldE5hbWVPYmoo
KSkKKyAgICAgICAgICAgICAgICBUU3RyaW5nIG5hbWUgPQorICAgICAgICAgICAgICAgICAgICBE
ZWNvcmF0ZUZ1bmN0aW9uSWZOZWVkZWQobm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdl
dE5hbWVPYmooKSk7CisgICAgICAgICAgICAgICAgb3V0IDw8IFR5cGVTdHJpbmcobm9kZS0+Z2V0
VHlwZSgpKSA8PCAiICIgPDwgbmFtZQogICAgICAgICAgICAgICAgICAgICA8PCBEaXNhbWJpZ3Vh
dGVGdW5jdGlvbk5hbWUoYXJndW1lbnRzKSA8PCAobU91dHB1dExvZDBGdW5jdGlvbiA/ICJMb2Qw
KCIgOiAiKCIpOwotICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGlu
dCBpID0gMDsgaSA8IGFyZ3VtZW50cy0+c2l6ZSgpOyBpKyspCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gKCphcmd1bWVudHMpW2ldLT5nZXRB
c1N5bWJvbE5vZGUoKTsKLQotICAgICAgICAgICAgICAgIGlmIChzeW1ib2wpCisgICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBhcmd1bWVudHMtPnNpemUoKTsgaSsr
KQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgZW5zdXJlU3RydWN0RGVm
aW5lZChzeW1ib2wtPmdldFR5cGUoKSk7CisgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1TeW1i
b2wgKnN5bWJvbCA9ICgqYXJndW1lbnRzKVtpXS0+Z2V0QXNTeW1ib2xOb2RlKCk7CiAKLSAgICAg
ICAgICAgICAgICAgICAgb3V0IDw8IGFyZ3VtZW50U3RyaW5nKHN5bWJvbCk7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgaWYgKGkgPCBhcmd1bWVudHMtPnNpemUoKSAtIDEpCisgICAgICAgICAgICAg
ICAgICAgIGlmIChzeW1ib2wpCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG91dCA8PCAiLCAiOworICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8IGFy
Z3VtZW50U3RyaW5nKHN5bWJvbCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpIDwg
YXJndW1lbnRzLT5zaXplKCkgLSAxKQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiLCAiOworICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgb3V0IDw8ICIpXG4iOwogCi0gICAgICAgICAgICBpZiAoc2VxdWVuY2UtPnNpemUo
KSA+IDEpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbUluc2lkZUZ1bmN0aW9uID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICBUSW50ZXJtTm9kZSAqYm9keSA9ICgqc2VxdWVuY2UpWzFd
OwotICAgICAgICAgICAgICAgIC8vIFRoZSBmdW5jdGlvbiBib2R5IG5vZGUgd2lsbCBvdXRwdXQg
YnJhY2VzLgotICAgICAgICAgICAgICAgIEFTU0VSVChJc1NlcXVlbmNlKGJvZHkpKTsKLSAgICAg
ICAgICAgICAgICBib2R5LT50cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAgICAgICAgICBtSW5zaWRl
RnVuY3Rpb24gPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXQgPDwgInt9XG4iOwotICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIG91dCA8PCAiKTtcbiI7CiAKLSAgICAgICAgICAgIG1DdXJyZW50RnVu
Y3Rpb25NZXRhZGF0YSA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgLy8gQWxzbyBwcm90b3R5
cGUgdGhlIExvZDAgdmFyaWFudCBpZiBuZWVkZWQKKyAgICAgICAgICAgICAgICBib29sIG5lZWRz
TG9kMCA9IG1BU1RNZXRhZGF0YUxpc3RbaW5kZXhdLm1OZWVkc0xvZDA7CisgICAgICAgICAgICAg
ICAgaWYgKG5lZWRzTG9kMCAmJiAhbU91dHB1dExvZDBGdW5jdGlvbiAmJiBtU2hhZGVyVHlwZSA9
PSBHTF9GUkFHTUVOVF9TSEFERVIpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBtT3V0cHV0TG9kMEZ1bmN0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+dHJhdmVyc2UodGhpcyk7CisgICAgICAgICAgICAgICAgICAgIG1PdXRwdXRMb2QwRnVuY3Rp
b24gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGJvb2wgbmVlZHNM
b2QwID0gbUFTVE1ldGFkYXRhTGlzdFtpbmRleF0ubU5lZWRzTG9kMDsKLSAgICAgICAgICAgIGlm
IChuZWVkc0xvZDAgJiYgIW1PdXRwdXRMb2QwRnVuY3Rpb24gJiYgbVNoYWRlclR5cGUgPT0gR0xf
RlJBR01FTlRfU0hBREVSKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEFTU0VSVChu
YW1lICE9ICJtYWluIik7Ci0gICAgICAgICAgICAgICAgbU91dHB1dExvZDBGdW5jdGlvbiA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgbm9kZS0+dHJhdmVyc2UodGhpcyk7Ci0gICAgICAgICAgICAg
ICAgbU91dHB1dExvZDBGdW5jdGlvbiA9IGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BGdW5jdGlvbkNhbGw6CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BGdW5jdGlvbkNhbGw6CiAgICAgICAgIHsKICAg
ICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAqYXJndW1lbnRzID0gbm9kZS0+Z2V0U2VxdWVuY2Uo
KTsKIApAQCAtMjU2MCwxMzMgKzE2NTksMjggQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3Jl
Z2F0ZShWaXNpdCB2aQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgVU5J
TVBMRU1FTlRFRCgpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzaXplX3Qg
aW5kZXggPSBtQ2FsbERhZy5maW5kSW5kZXgobm9kZSk7CisgICAgICAgICAgICAgICAgc2l6ZV90
IGluZGV4ID0gbUNhbGxEYWcuZmluZEluZGV4KG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygp
KTsKICAgICAgICAgICAgICAgICBBU1NFUlQoaW5kZXggIT0gQ2FsbERBRzo6SW52YWxpZEluZGV4
KTsKICAgICAgICAgICAgICAgICBsb2QwICY9IG1BU1RNZXRhZGF0YUxpc3RbaW5kZXhdLm1OZWVk
c0xvZDA7CiAKLSAgICAgICAgICAgICAgICBvdXQgPDwgRGVjb3JhdGVGdW5jdGlvbklmTmVlZGVk
KG5vZGUtPmdldE5hbWVPYmooKSk7CisgICAgICAgICAgICAgICAgb3V0IDw8IERlY29yYXRlRnVu
Y3Rpb25JZk5lZWRlZChub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0TmFtZU9iaigp
KTsKICAgICAgICAgICAgICAgICBvdXQgPDwgRGlzYW1iaWd1YXRlRnVuY3Rpb25OYW1lKG5vZGUt
PmdldFNlcXVlbmNlKCkpOwogICAgICAgICAgICAgICAgIG91dCA8PCAobG9kMCA/ICJMb2QwKCIg
OiAiKCIpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Z2V0RnVu
Y3Rpb25TeW1ib2xJbmZvKCktPmdldE5hbWVPYmooKS5pc0ludGVybmFsKCkpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBwYXRoIGlzIHVzZWQgZm9yIGludGVybmFsIGZ1
bmN0aW9ucyB0aGF0IGRvbid0IGhhdmUgdGhlaXIgZGVmaW5pdGlvbnMgaW4gdGhlCisgICAgICAg
ICAgICAgICAgLy8gQVNULCBzdWNoIGFzIHByZWNpc2lvbiBlbXVsYXRpb24gZnVuY3Rpb25zLgor
ICAgICAgICAgICAgICAgIG91dCA8PCBEZWNvcmF0ZUZ1bmN0aW9uSWZOZWVkZWQobm9kZS0+Z2V0
RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5hbWVPYmooKSkgPDwgIigiOworICAgICAgICAgICAg
fQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFRTdHJp
bmcgbmFtZSAgICAgICAgICAgPSBURnVuY3Rpb246OnVubWFuZ2xlTmFtZShub2RlLT5nZXROYW1l
T2JqKCkuZ2V0U3RyaW5nKCkpOworICAgICAgICAgICAgICAgIFRTdHJpbmcgbmFtZSA9IFRGdW5j
dGlvbjo6dW5tYW5nbGVOYW1lKG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5nZXROYW1l
KCkpOwogICAgICAgICAgICAgICAgIFRCYXNpY1R5cGUgc2FtcGxlclR5cGUgPSAoKmFyZ3VtZW50
cylbMF0tPmdldEFzVHlwZWQoKS0+Z2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpOwotCi0gICAgICAg
ICAgICAgICAgVGV4dHVyZUZ1bmN0aW9uIHRleHR1cmVGdW5jdGlvbjsKLSAgICAgICAgICAgICAg
ICB0ZXh0dXJlRnVuY3Rpb24uc2FtcGxlciA9IHNhbXBsZXJUeXBlOwotICAgICAgICAgICAgICAg
IHRleHR1cmVGdW5jdGlvbi5jb29yZHMgPSAoKmFyZ3VtZW50cylbMV0tPmdldEFzVHlwZWQoKS0+
Z2V0Tm9taW5hbFNpemUoKTsKLSAgICAgICAgICAgICAgICB0ZXh0dXJlRnVuY3Rpb24ubWV0aG9k
ID0gVGV4dHVyZUZ1bmN0aW9uOjpJTVBMSUNJVDsKLSAgICAgICAgICAgICAgICB0ZXh0dXJlRnVu
Y3Rpb24ucHJvaiA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHRleHR1cmVGdW5jdGlvbi5vZmZz
ZXQgPSBmYWxzZTsKLQotICAgICAgICAgICAgICAgIGlmIChuYW1lID09ICJ0ZXh0dXJlMkQiIHx8
IG5hbWUgPT0gInRleHR1cmVDdWJlIiB8fCBuYW1lID09ICJ0ZXh0dXJlIikKLSAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHRleHR1cmVGdW5jdGlvbi5tZXRob2QgPSBUZXh0
dXJlRnVuY3Rpb246OklNUExJQ0lUOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBlbHNlIGlmIChuYW1lID09ICJ0ZXh0dXJlMkRQcm9qIiB8fCBuYW1lID09ICJ0ZXh0dXJlUHJv
aiIpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlRnVuY3Rp
b24ubWV0aG9kID0gVGV4dHVyZUZ1bmN0aW9uOjpJTVBMSUNJVDsKLSAgICAgICAgICAgICAgICAg
ICAgdGV4dHVyZUZ1bmN0aW9uLnByb2ogPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBlbHNlIGlmIChuYW1lID09ICJ0ZXh0dXJlMkRMb2QiIHx8IG5hbWUgPT0gInRl
eHR1cmVDdWJlTG9kIiB8fCBuYW1lID09ICJ0ZXh0dXJlTG9kIiB8fAotICAgICAgICAgICAgICAg
ICAgICAgICAgIG5hbWUgPT0gInRleHR1cmUyRExvZEVYVCIgfHwgbmFtZSA9PSAidGV4dHVyZUN1
YmVMb2RFWFQiKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdGV4dHVy
ZUZ1bmN0aW9uLm1ldGhvZCA9IFRleHR1cmVGdW5jdGlvbjo6TE9EOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChuYW1lID09ICJ0ZXh0dXJlMkRQcm9qTG9kIiB8
fCBuYW1lID09ICJ0ZXh0dXJlUHJvakxvZCIgfHwgbmFtZSA9PSAidGV4dHVyZTJEUHJvakxvZEVY
VCIpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlRnVuY3Rp
b24ubWV0aG9kID0gVGV4dHVyZUZ1bmN0aW9uOjpMT0Q7Ci0gICAgICAgICAgICAgICAgICAgIHRl
eHR1cmVGdW5jdGlvbi5wcm9qID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgZWxzZSBpZiAobmFtZSA9PSAidGV4dHVyZVNpemUiKQotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9IFRleHR1cmVGdW5j
dGlvbjo6U0laRTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAo
bmFtZSA9PSAidGV4dHVyZU9mZnNldCIpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICB0ZXh0dXJlRnVuY3Rpb24ubWV0aG9kID0gVGV4dHVyZUZ1bmN0aW9uOjpJTVBMSUNJ
VDsKLSAgICAgICAgICAgICAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLm9mZnNldCA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT0gInRleHR1
cmVQcm9qT2Zmc2V0IikKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHRl
eHR1cmVGdW5jdGlvbi5tZXRob2QgPSBUZXh0dXJlRnVuY3Rpb246OklNUExJQ0lUOwotICAgICAg
ICAgICAgICAgICAgICB0ZXh0dXJlRnVuY3Rpb24ub2Zmc2V0ID0gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLnByb2ogPSB0cnVlOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBlbHNlIGlmIChuYW1lID09ICJ0ZXh0dXJlTG9kT2Zmc2V0IikKLSAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHRleHR1cmVGdW5jdGlvbi5tZXRo
b2QgPSBUZXh0dXJlRnVuY3Rpb246OkxPRDsKLSAgICAgICAgICAgICAgICAgICAgdGV4dHVyZUZ1
bmN0aW9uLm9mZnNldCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGVsc2UgaWYgKG5hbWUgPT0gInRleHR1cmVQcm9qTG9kT2Zmc2V0IikKLSAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIHRleHR1cmVGdW5jdGlvbi5tZXRob2QgPSBUZXh0dXJl
RnVuY3Rpb246OkxPRDsKLSAgICAgICAgICAgICAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLnByb2og
PSB0cnVlOwotICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlRnVuY3Rpb24ub2Zmc2V0ID0gdHJ1
ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAobmFtZSA9PSAi
dGV4ZWxGZXRjaCIpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB0ZXh0
dXJlRnVuY3Rpb24ubWV0aG9kID0gVGV4dHVyZUZ1bmN0aW9uOjpGRVRDSDsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAobmFtZSA9PSAidGV4ZWxGZXRjaE9mZnNl
dCIpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlRnVuY3Rp
b24ubWV0aG9kID0gVGV4dHVyZUZ1bmN0aW9uOjpGRVRDSDsKLSAgICAgICAgICAgICAgICAgICAg
dGV4dHVyZUZ1bmN0aW9uLm9mZnNldCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT0gInRleHR1cmVHcmFkIiB8fCBuYW1lID09ICJ0ZXh0
dXJlMkRHcmFkRVhUIikKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHRl
eHR1cmVGdW5jdGlvbi5tZXRob2QgPSBUZXh0dXJlRnVuY3Rpb246OkdSQUQ7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT0gInRleHR1cmVHcmFkT2Zm
c2V0IikKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHRleHR1cmVGdW5j
dGlvbi5tZXRob2QgPSBUZXh0dXJlRnVuY3Rpb246OkdSQUQ7Ci0gICAgICAgICAgICAgICAgICAg
IHRleHR1cmVGdW5jdGlvbi5vZmZzZXQgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBlbHNlIGlmIChuYW1lID09ICJ0ZXh0dXJlUHJvakdyYWQiIHx8IG5hbWUgPT0g
InRleHR1cmUyRFByb2pHcmFkRVhUIiB8fCBuYW1lID09ICJ0ZXh0dXJlQ3ViZUdyYWRFWFQiKQot
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLm1l
dGhvZCA9IFRleHR1cmVGdW5jdGlvbjo6R1JBRDsKLSAgICAgICAgICAgICAgICAgICAgdGV4dHVy
ZUZ1bmN0aW9uLnByb2ogPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBlbHNlIGlmIChuYW1lID09ICJ0ZXh0dXJlUHJvakdyYWRPZmZzZXQiKQotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9IFRleHR1
cmVGdW5jdGlvbjo6R1JBRDsKLSAgICAgICAgICAgICAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLnBy
b2ogPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlRnVuY3Rpb24ub2Zmc2V0ID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJM
RSgpOwotCi0gICAgICAgICAgICAgICAgaWYgKHRleHR1cmVGdW5jdGlvbi5tZXRob2QgPT0gVGV4
dHVyZUZ1bmN0aW9uOjpJTVBMSUNJVCkgICAvLyBDb3VsZCByZXF1aXJlIGxvZCAwIG9yIGhhdmUg
YSBiaWFzIGFyZ3VtZW50Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgbWFuZGF0b3J5QXJndW1lbnRDb3VudCA9IDI7ICAgLy8gQWxsIGZ1bmN0aW9u
cyBoYXZlIHNhbXBsZXIgYW5kIGNvb3JkaW5hdGUgYXJndW1lbnRzCi0KLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHRleHR1cmVGdW5jdGlvbi5vZmZzZXQpCi0gICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG1hbmRhdG9yeUFyZ3VtZW50Q291bnQrKzsKLSAgICAg
ICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGJvb2wgYmlhcyA9IChhcmd1
bWVudHMtPnNpemUoKSA+IG1hbmRhdG9yeUFyZ3VtZW50Q291bnQpOyAgIC8vIEJpYXMgYXJndW1l
bnQgaXMgb3B0aW9uYWwKLQotICAgICAgICAgICAgICAgICAgICBpZiAobG9kMCB8fCBtU2hhZGVy
VHlwZSA9PSBHTF9WRVJURVhfU0hBREVSKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoYmlhcykKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlRnVuY3Rpb24ubWV0aG9kID0gVGV4dHVy
ZUZ1bmN0aW9uOjpMT0QwQklBUzsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlRnVuY3Rpb24ubWV0aG9kID0gVGV4dHVyZUZ1bmN0
aW9uOjpMT0QwOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJpYXMpCi0gICAgICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmVGdW5jdGlvbi5tZXRob2QgPSBU
ZXh0dXJlRnVuY3Rpb246OkJJQVM7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICAgICBtVXNlc1RleHR1cmUuaW5zZXJ0KHRleHR1cmVGdW5j
dGlvbik7Ci0KLSAgICAgICAgICAgICAgICBvdXQgPDwgdGV4dHVyZUZ1bmN0aW9uLm5hbWUoKTsK
KyAgICAgICAgICAgICAgICBpbnQgY29vcmRzICAgICAgICAgICAgICAgICAgPSAoKmFyZ3VtZW50
cylbMV0tPmdldEFzVHlwZWQoKS0+Z2V0Tm9taW5hbFNpemUoKTsKKyAgICAgICAgICAgICAgICBU
U3RyaW5nIHRleHR1cmVGdW5jdGlvbk5hbWUgPSBtVGV4dHVyZUZ1bmN0aW9uSExTTC0+dXNlVGV4
dHVyZUZ1bmN0aW9uKAorICAgICAgICAgICAgICAgICAgICBuYW1lLCBzYW1wbGVyVHlwZSwgY29v
cmRzLCBhcmd1bWVudHMtPnNpemUoKSwgbG9kMCwgbVNoYWRlclR5cGUpOworICAgICAgICAgICAg
ICAgIG91dCA8PCB0ZXh0dXJlRnVuY3Rpb25OYW1lIDw8ICIoIjsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgZm9yIChUSW50ZXJtU2VxdWVuY2U6Oml0ZXJhdG9yIGFyZyA9IGFyZ3VtZW50
cy0+YmVnaW4oKTsgYXJnICE9IGFyZ3VtZW50cy0+ZW5kKCk7IGFyZysrKQpAQCAtMjcwNyw3ICsx
NzAxLDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aQogICAgICAg
ICAgICAgICAgICAgICBUVmVjdG9yPFRJbnRlcm1TeW1ib2wgKj4gc2FtcGxlclN5bWJvbHM7CiAg
ICAgICAgICAgICAgICAgICAgIFRTdHJpbmcgc3RydWN0TmFtZSA9IHNhbXBsZXJOYW1lUHJlZml4
RnJvbVN0cnVjdCh0eXBlZEFyZyk7CiAgICAgICAgICAgICAgICAgICAgIGFyZ1R5cGUuY3JlYXRl
U2FtcGxlclN5bWJvbHMoImFuZ2xlXyIgKyBzdHJ1Y3ROYW1lLCAiIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdUeXBlLmlzQXJyYXkoKSA/IGFy
Z1R5cGUuZ2V0QXJyYXlTaXplKCkgOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFyZ1R5cGUuaXNBcnJheSgpID8gYXJnVHlwZS5nZXRBcnJheVNp
emUoKSA6IDB1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZzYW1wbGVyU3ltYm9scywgbnVsbHB0cik7CiAgICAgICAgICAgICAgICAgICAgIGZvciAo
Y29uc3QgVEludGVybVN5bWJvbCAqc2FtcGxlciA6IHNhbXBsZXJTeW1ib2xzKQogICAgICAgICAg
ICAgICAgICAgICB7CkBAIC0yNzM1LDcgKzE3MjksNiBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0
QWdncmVnYXRlKFZpc2l0IHZpCiAKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQotICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBFT3BQYXJhbWV0ZXJzOgogICAgICAgICAg
ICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIsICIsICIpXG57XG4iKTsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMjgxNCw3ICsxODA3LDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNp
dEFnZ3JlZ2F0ZShWaXNpdCB2aQogICAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDQ6CiAgICAg
ICAgICAgICBvdXRwdXRDb25zdHJ1Y3RvcihvdXQsIHZpc2l0LCBub2RlLT5nZXRUeXBlKCksICJt
YXQ0Iiwgbm9kZS0+Z2V0U2VxdWVuY2UoKSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgIGNh
c2UgRU9wQ29uc3RydWN0U3RydWN0OgorICAgICAgICBjYXNlIEVPcENvbnN0cnVjdFN0cnVjdDoK
ICAgICAgICAgewogICAgICAgICAgICAgaWYgKG5vZGUtPmdldFR5cGUoKS5pc0FycmF5KCkpCiAg
ICAgICAgICAgICB7CkBAIC0yODQzLDMxICsxODM2LDMxIEBAIGJvb2wgT3V0cHV0SExTTDo6dmlz
aXRBZ2dyZWdhdGUoVmlzaXQgdmkKICAgICAgICAgY2FzZSBFT3BWZWN0b3JOb3RFcXVhbDoKICAg
ICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiICE9ICIsICIpIik7CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wTW9kOgotICAgICAgICBBU1NFUlQobm9k
ZS0+Z2V0VXNlRW11bGF0ZWRGdW5jdGlvbigpKTsKLSAgICAgICAgd3JpdGVFbXVsYXRlZEZ1bmN0
aW9uVHJpcGxldChvdXQsIHZpc2l0LCAibW9kKCIpOwotICAgICAgICBicmVhazsKLSAgICAgIGNh
c2UgRU9wTW9kZjoKLSAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJtb2RmKCIs
ICIsICIsICIpIik7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFBvdzoKLSAgICAg
ICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJwb3coIiwgIiwgIiwgIikiKTsKLSAgICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQXRhbjoKLSAgICAgICAgQVNTRVJUKG5vZGUtPmdl
dFNlcXVlbmNlKCktPnNpemUoKSA9PSAyKTsgICAvLyBhdGFuKHgpIGlzIGEgdW5hcnkgb3BlcmF0
b3IKLSAgICAgICAgQVNTRVJUKG5vZGUtPmdldFVzZUVtdWxhdGVkRnVuY3Rpb24oKSk7Ci0gICAg
ICAgIHdyaXRlRW11bGF0ZWRGdW5jdGlvblRyaXBsZXQob3V0LCB2aXNpdCwgImF0YW4oIik7Ci0g
ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BNaW46Ci0gICAgICAgICAgb3V0cHV0VHJpcGxl
dChvdXQsIHZpc2l0LCAibWluKCIsICIsICIsICIpIik7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEVPcE1heDoKLSAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJtYXgo
IiwgIiwgIiwgIikiKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQ2xhbXA6Ci0g
ICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiY2xhbXAoIiwgIiwgIiwgIikiKTsK
LSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wTWl4OgorICAgICAgICBjYXNlIEVPcE1v
ZDoKKyAgICAgICAgICAgIEFTU0VSVChub2RlLT5nZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkpOwor
ICAgICAgICAgICAgd3JpdGVFbXVsYXRlZEZ1bmN0aW9uVHJpcGxldChvdXQsIHZpc2l0LCAibW9k
KCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wTW9kZjoKKyAgICAgICAg
ICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIm1vZGYoIiwgIiwgIiwgIikiKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcFBvdzoKKyAgICAgICAgICAgIG91dHB1dFRy
aXBsZXQob3V0LCB2aXNpdCwgInBvdygiLCAiLCAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgRU9wQXRhbjoKKyAgICAgICAgICAgIEFTU0VSVChub2RlLT5nZXRTZXF1
ZW5jZSgpLT5zaXplKCkgPT0gMik7ICAvLyBhdGFuKHgpIGlzIGEgdW5hcnkgb3BlcmF0b3IKKyAg
ICAgICAgICAgIEFTU0VSVChub2RlLT5nZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkpOworICAgICAg
ICAgICAgd3JpdGVFbXVsYXRlZEZ1bmN0aW9uVHJpcGxldChvdXQsIHZpc2l0LCAiYXRhbigiKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcE1pbjoKKyAgICAgICAgICAgIG91
dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIm1pbigiLCAiLCAiLCAiKSIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRU9wTWF4OgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChv
dXQsIHZpc2l0LCAibWF4KCIsICIsICIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBFT3BDbGFtcDoKKyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwg
ImNsYW1wKCIsICIsICIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBF
T3BNaXg6CiAgICAgICAgIHsKICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqbGFzdFBhcmFtTm9k
ZSA9ICgqKG5vZGUtPmdldFNlcXVlbmNlKCkpKVsyXS0+Z2V0QXNUeXBlZCgpOwogICAgICAgICAg
ICAgaWYgKGxhc3RQYXJhbU5vZGUtPmdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRCb29s
KQpAQCAtMjg4MSw4ICsxODc0LDggQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShW
aXNpdCB2aQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0
LCB2aXNpdCwgImxlcnAoIiwgIiwgIiwgIikiKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEVPcFN0ZXA6
CiAgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJzdGVwKCIsICIsICIsICIp
Iik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI4OTgsMzAgKzE4OTEsMzEgQEAgYm9vbCBPdXRw
dXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aQogICAgICAgICBjYXNlIEVPcENyb3NzOgog
ICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiY3Jvc3MoIiwgIiwgIiwgIiki
KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BGYWNlRm9yd2FyZDoKLSAgICAg
ICAgQVNTRVJUKG5vZGUtPmdldFVzZUVtdWxhdGVkRnVuY3Rpb24oKSk7Ci0gICAgICAgIHdyaXRl
RW11bGF0ZWRGdW5jdGlvblRyaXBsZXQob3V0LCB2aXNpdCwgImZhY2Vmb3J3YXJkKCIpOwotICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wUmVmbGVjdDoKLSAgICAgICAgICBvdXRwdXRUcmlw
bGV0KG91dCwgdmlzaXQsICJyZWZsZWN0KCIsICIsICIsICIpIik7Ci0gICAgICAgICAgYnJlYWs7
Ci0gICAgICBjYXNlIEVPcFJlZnJhY3Q6Ci0gICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZp
c2l0LCAicmVmcmFjdCgiLCAiLCAiLCAiKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBFT3BPdXRlclByb2R1Y3Q6Ci0gICAgICAgIEFTU0VSVChub2RlLT5nZXRVc2VFbXVsYXRlZEZ1
bmN0aW9uKCkpOwotICAgICAgICB3cml0ZUVtdWxhdGVkRnVuY3Rpb25UcmlwbGV0KG91dCwgdmlz
aXQsICJvdXRlclByb2R1Y3QoIik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BNdWw6
Ci0gICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIgKiAiLCAiKSIpOwot
ICAgICAgICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
Y2FzZSBFT3BGYWNlRm9yd2FyZDoKKyAgICAgICAgICAgIEFTU0VSVChub2RlLT5nZXRVc2VFbXVs
YXRlZEZ1bmN0aW9uKCkpOworICAgICAgICAgICAgd3JpdGVFbXVsYXRlZEZ1bmN0aW9uVHJpcGxl
dChvdXQsIHZpc2l0LCAiZmFjZWZvcndhcmQoIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBFT3BSZWZsZWN0OgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0
LCAicmVmbGVjdCgiLCAiLCAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgRU9wUmVmcmFjdDoKKyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgInJl
ZnJhY3QoIiwgIiwgIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVP
cE91dGVyUHJvZHVjdDoKKyAgICAgICAgICAgIEFTU0VSVChub2RlLT5nZXRVc2VFbXVsYXRlZEZ1
bmN0aW9uKCkpOworICAgICAgICAgICAgd3JpdGVFbXVsYXRlZEZ1bmN0aW9uVHJpcGxldChvdXQs
IHZpc2l0LCAib3V0ZXJQcm9kdWN0KCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgRU9wTXVsOgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIg
KiAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBVTlJFQUNIQUJMRSgpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lk
IE91dHB1dEhMU0w6OndyaXRlU2VsZWN0aW9uKFRJbmZvU2lua0Jhc2UgJm91dCwgVEludGVybVNl
bGVjdGlvbiAqbm9kZSkKK3ZvaWQgT3V0cHV0SExTTDo6d3JpdGVJZkVsc2UoVEluZm9TaW5rQmFz
ZSAmb3V0LCBUSW50ZXJtSWZFbHNlICpub2RlKQogewogICAgIG91dCA8PCAiaWYgKCI7CiAKQEAg
LTI5MzYsOCArMTkzMCw2IEBAIHZvaWQgT3V0cHV0SExTTDo6d3JpdGVTZWxlY3Rpb24oVEluZm9T
aW4KICAgICBpZiAobm9kZS0+Z2V0VHJ1ZUJsb2NrKCkpCiAgICAgewogICAgICAgICAvLyBUaGUg
dHJ1ZUJsb2NrIGNoaWxkIG5vZGUgd2lsbCBvdXRwdXQgYnJhY2VzLgotICAgICAgICBBU1NFUlQo
SXNTZXF1ZW5jZShub2RlLT5nZXRUcnVlQmxvY2soKSkpOwotCiAgICAgICAgIG5vZGUtPmdldFRy
dWVCbG9jaygpLT50cmF2ZXJzZSh0aGlzKTsKIAogICAgICAgICAvLyBEZXRlY3QgdHJ1ZSBkaXNj
YXJkCkBAIC0yOTU4LDkgKzE5NTAsNyBAQCB2b2lkIE91dHB1dEhMU0w6OndyaXRlU2VsZWN0aW9u
KFRJbmZvU2luCiAKICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShvdXQsIG5vZGUtPmdldEZh
bHNlQmxvY2soKS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogCi0gICAgICAgIC8vIEVpdGhlciB0
aGlzIGlzICJlbHNlIGlmIiBvciB0aGUgZmFsc2VCbG9jayBjaGlsZCBub2RlIHdpbGwgb3V0cHV0
IGJyYWNlcy4KLSAgICAgICAgQVNTRVJUKElzU2VxdWVuY2Uobm9kZS0+Z2V0RmFsc2VCbG9jaygp
KSB8fCBub2RlLT5nZXRGYWxzZUJsb2NrKCktPmdldEFzU2VsZWN0aW9uTm9kZSgpICE9IG51bGxw
dHIpOwotCisgICAgICAgIC8vIFRoZSBmYWxzZUJsb2NrIGNoaWxkIG5vZGUgd2lsbCBvdXRwdXQg
YnJhY2VzLgogICAgICAgICBub2RlLT5nZXRGYWxzZUJsb2NrKCktPnRyYXZlcnNlKHRoaXMpOwog
CiAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUob3V0LCBub2RlLT5nZXRGYWxzZUJsb2NrKCkt
PmdldExpbmUoKS5maXJzdF9saW5lKTsKQEAgLTI5NzYsMTEgKzE5NjYsMTggQEAgdm9pZCBPdXRw
dXRITFNMOjp3cml0ZVNlbGVjdGlvbihUSW5mb1NpbgogICAgIH0KIH0KIAotYm9vbCBPdXRwdXRI
TFNMOjp2aXNpdFNlbGVjdGlvbihWaXNpdCB2aXNpdCwgVEludGVybVNlbGVjdGlvbiAqbm9kZSkK
K2Jvb2wgT3V0cHV0SExTTDo6dmlzaXRUZXJuYXJ5KFZpc2l0LCBUSW50ZXJtVGVybmFyeSAqKQor
eworICAgIC8vIFRlcm5hcnkgb3BzIHNob3VsZCBoYXZlIGJlZW4gYWxyZWFkeSBjb252ZXJ0ZWQg
dG8gc29tZXRoaW5nIGVsc2UgaW4gdGhlIEFTVC4gSExTTCB0ZXJuYXJ5CisgICAgLy8gb3BlcmF0
b3IgZG9lc24ndCBzaG9ydC1jaXJjdWl0LCBzbyBpdCdzIG5vdCB0aGUgc2FtZSBhcyB0aGUgR0xT
TCB0ZXJuYXJ5IG9wZXJhdG9yLgorICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIE91dHB1dEhMU0w6OnZpc2l0SWZFbHNlKFZpc2l0IHZpc2l0LCBUSW50ZXJt
SWZFbHNlICpub2RlKQogewogICAgIFRJbmZvU2lua0Jhc2UgJm91dCA9IGdldEluZm9TaW5rKCk7
CiAKLSAgICBBU1NFUlQoIW5vZGUtPnVzZXNUZXJuYXJ5T3BlcmF0b3IoKSk7CiAgICAgQVNTRVJU
KG1JbnNpZGVGdW5jdGlvbik7CiAKICAgICAvLyBEM0QgZXJyb3JzIHdoZW4gdGhlcmUgaXMgYSBn
cmFkaWVudCBvcGVyYXRpb24gaW4gYSBsb29wIGluIGFuIHVuZmxhdHRlbmVkIGlmLgpAQCAtMjk4
OSw3ICsxOTg2LDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdFNlbGVjdGlvbihWaXNpdCB2aQog
ICAgICAgICBvdXQgPDwgIkZMQVRURU4gIjsKICAgICB9CiAKLSAgICB3cml0ZVNlbGVjdGlvbihv
dXQsIG5vZGUpOworICAgIHdyaXRlSWZFbHNlKG91dCwgbm9kZSk7CiAKICAgICByZXR1cm4gZmFs
c2U7CiB9CkBAIC0zMDkzLDcgKzIwOTAsNiBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0TG9vcChW
aXNpdCB2aXNpdCwgCiAgICAgaWYgKG5vZGUtPmdldEJvZHkoKSkKICAgICB7CiAgICAgICAgIC8v
IFRoZSBsb29wIGJvZHkgbm9kZSB3aWxsIG91dHB1dCBicmFjZXMuCi0gICAgICAgIEFTU0VSVChJ
c1NlcXVlbmNlKG5vZGUtPmdldEJvZHkoKSkpOwogICAgICAgICBub2RlLT5nZXRCb2R5KCktPnRy
YXZlcnNlKHRoaXMpOwogICAgIH0KICAgICBlbHNlCkBAIC0zMTgzLDE1ICsyMTc5LDE1IEBAIGJv
b2wgT3V0cHV0SExTTDo6dmlzaXRCcmFuY2goVmlzaXQgdmlzaXQKIAogYm9vbCBPdXRwdXRITFNM
Ojppc1NpbmdsZVN0YXRlbWVudChUSW50ZXJtTm9kZSAqbm9kZSkKIHsKLSAgICBUSW50ZXJtQWdn
cmVnYXRlICphZ2dyZWdhdGUgPSBub2RlLT5nZXRBc0FnZ3JlZ2F0ZSgpOworICAgIGlmIChub2Rl
LT5nZXRBc0Jsb2NrKCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCisg
ICAgVEludGVybUFnZ3JlZ2F0ZSAqYWdncmVnYXRlID0gbm9kZS0+Z2V0QXNBZ2dyZWdhdGUoKTsK
ICAgICBpZiAoYWdncmVnYXRlKQogICAgIHsKLSAgICAgICAgaWYgKGFnZ3JlZ2F0ZS0+Z2V0T3Ao
KSA9PSBFT3BTZXF1ZW5jZSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGFnZ3JlZ2F0ZS0+Z2V0T3AoKSA9PSBFT3BEZWNs
YXJhdGlvbikKKyAgICAgICAgaWYgKGFnZ3JlZ2F0ZS0+Z2V0T3AoKSA9PSBFT3BEZWNsYXJhdGlv
bikKICAgICAgICAgewogICAgICAgICAgICAgLy8gRGVjbGFyaW5nIG11bHRpcGxlIGNvbW1hLXNl
cGFyYXRlZCB2YXJpYWJsZXMgbXVzdCBiZSBjb25zaWRlcmVkIG11bHRpcGxlIHN0YXRlbWVudHMK
ICAgICAgICAgICAgIC8vIGJlY2F1c2UgZWFjaCBpbmRpdmlkdWFsIGRlY2xhcmF0aW9uIGhhcyBz
aWRlIGVmZmVjdHMgd2hpY2ggYXJlIHZpc2libGUgaW4gdGhlIG5leHQuCkBAIC0zNDk4LDcgKzI0
OTQsNyBAQCBUU3RyaW5nIE91dHB1dEhMU0w6OmFyZ3VtZW50U3RyaW5nKGNvbnN0CiAgICAgewog
ICAgICAgICBBU1NFUlQocXVhbGlmaWVyICE9IEV2cU91dCAmJiBxdWFsaWZpZXIgIT0gRXZxSW5P
dXQpOwogICAgICAgICBUVmVjdG9yPFRJbnRlcm1TeW1ib2wgKj4gc2FtcGxlclN5bWJvbHM7Ci0g
ICAgICAgIHR5cGUuY3JlYXRlU2FtcGxlclN5bWJvbHMoImFuZ2xlIiArIG5hbWVTdHIsICIiLCAw
LCAmc2FtcGxlclN5bWJvbHMsIG51bGxwdHIpOworICAgICAgICB0eXBlLmNyZWF0ZVNhbXBsZXJT
eW1ib2xzKCJhbmdsZSIgKyBuYW1lU3RyLCAiIiwgMHUsICZzYW1wbGVyU3ltYm9scywgbnVsbHB0
cik7CiAgICAgICAgIGZvciAoY29uc3QgVEludGVybVN5bWJvbCAqc2FtcGxlciA6IHNhbXBsZXJT
eW1ib2xzKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExT
TF80XzFfT1VUUFVUKQpAQCAtMzY1NCwyMiArMjY1MCw4IEBAIGJvb2wgT3V0cHV0SExTTDo6Y2Fu
V3JpdGVBc0hMU0xMaXRlcmFsKFQKIHsKICAgICAvLyBXZSBzdXBwb3J0IHdyaXRpbmcgY29uc3Rh
bnQgdW5pb25zIGFuZCBjb25zdHJ1Y3RvcnMgdGhhdCBvbmx5IHRha2UgY29uc3RhbnQgdW5pb25z
IGFzCiAgICAgLy8gcGFyYW1ldGVycyBhcyBITFNMIGxpdGVyYWxzLgotICAgIGlmIChleHByZXNz
aW9uLT5nZXRBc0NvbnN0YW50VW5pb24oKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KLSAgICBpZiAoZXhwcmVzc2lvbi0+Z2V0UXVhbGlmaWVyKCkgIT0gRXZxQ29uc3QgfHwg
IWV4cHJlc3Npb24tPmdldEFzQWdncmVnYXRlKCkgfHwKLSAgICAgICAgIWV4cHJlc3Npb24tPmdl
dEFzQWdncmVnYXRlKCktPmlzQ29uc3RydWN0b3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSAqY29uc3RydWN0b3IgPSBleHByZXNz
aW9uLT5nZXRBc0FnZ3JlZ2F0ZSgpOwotICAgIGZvciAoVEludGVybU5vZGUgKiZub2RlIDogKmNv
bnN0cnVjdG9yLT5nZXRTZXF1ZW5jZSgpKQotICAgIHsKLSAgICAgICAgaWYgKCFub2RlLT5nZXRB
c0NvbnN0YW50VW5pb24oKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAg
cmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGV4cHJlc3Npb24tPmdldEFzQ29uc3RhbnRVbmlvbigp
IHx8CisgICAgICAgICAgIGV4cHJlc3Npb24tPmlzQ29uc3RydWN0b3JXaXRoT25seUNvbnN0YW50
VW5pb25QYXJhbWV0ZXJzKCk7CiB9CiAKIGJvb2wgT3V0cHV0SExTTDo6d3JpdGVDb25zdGFudElu
aXRpYWxpemF0aW9uKFRJbmZvU2lua0Jhc2UgJm91dCwKQEAgLTM4ODAsMTQgKzI4NjIsMTQgQEAg
VFN0cmluZyBPdXRwdXRITFNMOjphZGRBcnJheUNvbnN0cnVjdEludAogCiAgICAgZm5PdXQgPDwg
InZvaWQgIiA8PCBmdW5jdGlvbi5mdW5jdGlvbk5hbWUgPDwgIihvdXQgIgogICAgICAgICAgIDw8
IHR5cGVOYW1lIDw8ICIgYVsiIDw8IHR5cGUuZ2V0QXJyYXlTaXplKCkgPDwgIl0iOwotICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgdHlwZS5nZXRBcnJheVNpemUoKTsgKytpKQorICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwdTsgaSA8IHR5cGUuZ2V0QXJyYXlTaXplKCk7ICsraSkKICAgICB7CiAg
ICAgICAgIGZuT3V0IDw8ICIsICIgPDwgdHlwZU5hbWUgPDwgIiBiIiA8PCBpOwogICAgIH0KICAg
ICBmbk91dCA8PCAiKVxuIgogICAgICAgICAgICAgICJ7XG4iOwogCi0gICAgZm9yIChpbnQgaSA9
IDA7IGkgPCB0eXBlLmdldEFycmF5U2l6ZSgpOyArK2kpCisgICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDB1OyBpIDwgdHlwZS5nZXRBcnJheVNpemUoKTsgKytpKQogICAgIHsKICAgICAgICAgZm5P
dXQgPDwgIiAgICBhWyIgPDwgaSA8PCAiXSA9IGIiIDw8IGkgPDwgIjtcbiI7CiAgICAgfQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0
SExTTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL091dHB1dEhMU0wuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0SExTTC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04LDcgKzgsNiBAQAogI2RlZmluZSBDT01QSUxFUl9UUkFOU0xBVE9SX09V
VFBVVEhMU0xfSF8KIAogI2luY2x1ZGUgPGxpc3Q+Ci0jaW5jbHVkZSA8c2V0PgogI2luY2x1ZGUg
PG1hcD4KICNpbmNsdWRlIDxzdGFjaz4KIApAQCAtMjEsOCArMjAsOSBAQCBjbGFzcyBCdWlsdElu
RnVuY3Rpb25FbXVsYXRvcjsKIAogbmFtZXNwYWNlIHNoCiB7Ci1jbGFzcyBVbmZvbGRTaG9ydENp
cmN1aXQ7CiBjbGFzcyBTdHJ1Y3R1cmVITFNMOworY2xhc3MgVGV4dHVyZUZ1bmN0aW9uSExTTDsK
K2NsYXNzIFVuZm9sZFNob3J0Q2lyY3VpdDsKIGNsYXNzIFVuaWZvcm1ITFNMOwogCiB0eXBlZGVm
IHN0ZDo6bWFwPFRTdHJpbmcsIFRJbnRlcm1TeW1ib2wqPiBSZWZlcmVuY2VkU3ltYm9sczsKQEAg
LTMwLDExICszMCwxNCBAQCB0eXBlZGVmIHN0ZDo6bWFwPFRTdHJpbmcsIFRJbnRlcm1TeW1ib2wq
CiBjbGFzcyBPdXRwdXRITFNMIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKIHsKICAgcHVibGlj
OgotICAgIE91dHB1dEhMU0woc2g6OkdMZW51bSBzaGFkZXJUeXBlLCBpbnQgc2hhZGVyVmVyc2lv
biwKLSAgICAgICAgY29uc3QgVEV4dGVuc2lvbkJlaGF2aW9yICZleHRlbnNpb25CZWhhdmlvciwK
LSAgICAgICAgY29uc3QgY2hhciAqc291cmNlUGF0aCwgU2hTaGFkZXJPdXRwdXQgb3V0cHV0VHlw
ZSwKLSAgICAgICAgaW50IG51bVJlbmRlclRhcmdldHMsIGNvbnN0IHN0ZDo6dmVjdG9yPFVuaWZv
cm0+ICZ1bmlmb3JtcywKLSAgICAgICAgaW50IGNvbXBpbGVPcHRpb25zKTsKKyAgICBPdXRwdXRI
TFNMKHNoOjpHTGVudW0gc2hhZGVyVHlwZSwKKyAgICAgICAgICAgICAgIGludCBzaGFkZXJWZXJz
aW9uLAorICAgICAgICAgICAgICAgY29uc3QgVEV4dGVuc2lvbkJlaGF2aW9yICZleHRlbnNpb25C
ZWhhdmlvciwKKyAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNvdXJjZVBhdGgsCisgICAgICAg
ICAgICAgICBTaFNoYWRlck91dHB1dCBvdXRwdXRUeXBlLAorICAgICAgICAgICAgICAgaW50IG51
bVJlbmRlclRhcmdldHMsCisgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxVbmlmb3Jt
PiAmdW5pZm9ybXMsCisgICAgICAgICAgICAgICBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRp
b25zKTsKIAogICAgIH5PdXRwdXRITFNMKCk7CiAKQEAgLTUzLDE3ICs1NiwyMSBAQCBjbGFzcyBP
dXRwdXRITFNMIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzCiAgICAgdm9pZCBoZWFkZXIoVEluZm9T
aW5rQmFzZSAmb3V0LCBjb25zdCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvciAqYnVpbHRJbkZ1bmN0
aW9uRW11bGF0b3IpOwogCiAgICAgLy8gVmlzaXQgQVNUIG5vZGVzIGFuZCBvdXRwdXQgdGhlaXIg
Y29kZSB0byB0aGUgYm9keSBzdHJlYW0KLSAgICB2b2lkIHZpc2l0U3ltYm9sKFRJbnRlcm1TeW1i
b2wqKTsKLSAgICB2b2lkIHZpc2l0UmF3KFRJbnRlcm1SYXcqKTsKLSAgICB2b2lkIHZpc2l0Q29u
c3RhbnRVbmlvbihUSW50ZXJtQ29uc3RhbnRVbmlvbiopOwotICAgIGJvb2wgdmlzaXRCaW5hcnko
VmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkqKTsKLSAgICBib29sIHZpc2l0VW5hcnkoVmlzaXQg
dmlzaXQsIFRJbnRlcm1VbmFyeSopOwotICAgIGJvb2wgdmlzaXRTZWxlY3Rpb24oVmlzaXQgdmlz
aXQsIFRJbnRlcm1TZWxlY3Rpb24qKTsKLSAgICBib29sIHZpc2l0U3dpdGNoKFZpc2l0IHZpc2l0
LCBUSW50ZXJtU3dpdGNoICopOwotICAgIGJvb2wgdmlzaXRDYXNlKFZpc2l0IHZpc2l0LCBUSW50
ZXJtQ2FzZSAqKTsKLSAgICBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJt
QWdncmVnYXRlKik7Ci0gICAgYm9vbCB2aXNpdExvb3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29w
Kik7Ci0gICAgYm9vbCB2aXNpdEJyYW5jaChWaXNpdCB2aXNpdCwgVEludGVybUJyYW5jaCopOwor
ICAgIHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCopIG92ZXJyaWRlOworICAgIHZvaWQg
dmlzaXRSYXcoVEludGVybVJhdyopIG92ZXJyaWRlOworICAgIHZvaWQgdmlzaXRDb25zdGFudFVu
aW9uKFRJbnRlcm1Db25zdGFudFVuaW9uKikgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdFN3aXp6
bGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1Td2l6emxlICpub2RlKSBvdmVycmlkZTsKKyAgICBib29s
IHZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5Kikgb3ZlcnJpZGU7CisgICAg
Ym9vbCB2aXNpdFVuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtVW5hcnkqKSBvdmVycmlkZTsKKyAg
ICBib29sIHZpc2l0VGVybmFyeShWaXNpdCB2aXNpdCwgVEludGVybVRlcm5hcnkgKikgb3ZlcnJp
ZGU7CisgICAgYm9vbCB2aXNpdElmRWxzZShWaXNpdCB2aXNpdCwgVEludGVybUlmRWxzZSAqKSBv
dmVycmlkZTsKKyAgICBib29sIHZpc2l0U3dpdGNoKFZpc2l0IHZpc2l0LCBUSW50ZXJtU3dpdGNo
ICopIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRDYXNlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQ2Fz
ZSAqKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0RnVuY3Rpb25EZWZpbml0aW9uKFZpc2l0IHZp
c2l0LCBUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICpub2RlKSBvdmVycmlkZTsKKyAgICBib29s
IHZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlKikgb3ZlcnJpZGU7
CisgICAgYm9vbCB2aXNpdEJsb2NrKFZpc2l0IHZpc2l0LCBUSW50ZXJtQmxvY2sgKm5vZGUpIG92
ZXJyaWRlOworICAgIGJvb2wgdmlzaXRMb29wKFZpc2l0IHZpc2l0LCBUSW50ZXJtTG9vcCopIG92
ZXJyaWRlOworICAgIGJvb2wgdmlzaXRCcmFuY2goVmlzaXQgdmlzaXQsIFRJbnRlcm1CcmFuY2gq
KSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNTaW5nbGVTdGF0ZW1lbnQoVEludGVybU5vZGUgKm5v
ZGUpOwogICAgIGJvb2wgaGFuZGxlRXhjZXNzaXZlTG9vcChUSW5mb1NpbmtCYXNlICZvdXQsIFRJ
bnRlcm1Mb29wICpub2RlKTsKQEAgLTEwMSw3ICsxMDgsNyBAQCBjbGFzcyBPdXRwdXRITFNMIDog
cHVibGljIFRJbnRlcm1UcmF2ZXJzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVEludGVybVR5cGVkICpleHByZXNzaW9uKTsKIAogICAgIHZvaWQgd3JpdGVEZWZlcnJlZEds
b2JhbEluaXRpYWxpemVycyhUSW5mb1NpbmtCYXNlICZvdXQpOwotICAgIHZvaWQgd3JpdGVTZWxl
Y3Rpb24oVEluZm9TaW5rQmFzZSAmb3V0LCBUSW50ZXJtU2VsZWN0aW9uICpub2RlKTsKKyAgICB2
b2lkIHdyaXRlSWZFbHNlKFRJbmZvU2lua0Jhc2UgJm91dCwgVEludGVybUlmRWxzZSAqbm9kZSk7
CiAKICAgICAvLyBSZXR1cm5zIHRoZSBmdW5jdGlvbiBuYW1lCiAgICAgVFN0cmluZyBhZGRTdHJ1
Y3RFcXVhbGl0eUZ1bmN0aW9uKGNvbnN0IFRTdHJ1Y3R1cmUgJnN0cnVjdHVyZSk7CkBAIC0xMTcs
NyArMTI0LDcgQEAgY2xhc3MgT3V0cHV0SExTTCA6IHB1YmxpYyBUSW50ZXJtVHJhdmVycwogICAg
IGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciAmbUV4dGVuc2lvbkJlaGF2aW9yOwogICAgIGNvbnN0
IGNoYXIgKm1Tb3VyY2VQYXRoOwogICAgIGNvbnN0IFNoU2hhZGVyT3V0cHV0IG1PdXRwdXRUeXBl
OwotICAgIGludCBtQ29tcGlsZU9wdGlvbnM7CisgICAgU2hDb21waWxlT3B0aW9ucyBtQ29tcGls
ZU9wdGlvbnM7CiAKICAgICBib29sIG1JbnNpZGVGdW5jdGlvbjsKIApAQCAtMTM5LDM2ICsxNDYs
OSBAQCBjbGFzcyBPdXRwdXRITFNMIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzCiAKICAgICBTdHJ1
Y3R1cmVITFNMICptU3RydWN0dXJlSExTTDsKICAgICBVbmlmb3JtSExTTCAqbVVuaWZvcm1ITFNM
OwotCi0gICAgc3RydWN0IFRleHR1cmVGdW5jdGlvbgotICAgIHsKLSAgICAgICAgZW51bSBNZXRo
b2QKLSAgICAgICAgewotICAgICAgICAgICAgSU1QTElDSVQsICAgLy8gTWlwbWFwIExPRCBkZXRl
cm1pbmVkIGltcGxpY2l0bHkgKHN0YW5kYXJkIGxvb2t1cCkKLSAgICAgICAgICAgIEJJQVMsCi0g
ICAgICAgICAgICBMT0QsCi0gICAgICAgICAgICBMT0QwLAotICAgICAgICAgICAgTE9EMEJJQVMs
Ci0gICAgICAgICAgICBTSVpFLCAgIC8vIHRleHR1cmVTaXplKCkKLSAgICAgICAgICAgIEZFVENI
LAotICAgICAgICAgICAgR1JBRAotICAgICAgICB9OwotCi0gICAgICAgIFRCYXNpY1R5cGUgc2Ft
cGxlcjsKLSAgICAgICAgaW50IGNvb3JkczsKLSAgICAgICAgYm9vbCBwcm9qOwotICAgICAgICBi
b29sIG9mZnNldDsKLSAgICAgICAgTWV0aG9kIG1ldGhvZDsKLQotICAgICAgICBUU3RyaW5nIG5h
bWUoKSBjb25zdDsKLQotICAgICAgICBib29sIG9wZXJhdG9yPChjb25zdCBUZXh0dXJlRnVuY3Rp
b24gJnJocykgY29uc3Q7Ci0gICAgfTsKLQotICAgIHR5cGVkZWYgc3RkOjpzZXQ8VGV4dHVyZUZ1
bmN0aW9uPiBUZXh0dXJlRnVuY3Rpb25TZXQ7CisgICAgVGV4dHVyZUZ1bmN0aW9uSExTTCAqbVRl
eHR1cmVGdW5jdGlvbkhMU0w7CiAKICAgICAvLyBQYXJhbWV0ZXJzIGRldGVybWluaW5nIHdoYXQg
Z29lcyBpbiB0aGUgaGVhZGVyIG91dHB1dAotICAgIFRleHR1cmVGdW5jdGlvblNldCBtVXNlc1Rl
eHR1cmU7CiAgICAgYm9vbCBtVXNlc0ZyYWdDb2xvcjsKICAgICBib29sIG1Vc2VzRnJhZ0RhdGE7
CiAgICAgYm9vbCBtVXNlc0RlcHRoUmFuZ2U7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9QYXJzZUNvbnRleHQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1BhcnNlQ29u
dGV4dC5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1BhcnNlQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEzMiwxMiArMTMyLDYgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpwYXJzZVZlY3RvckZpZWxkcyhj
bwogLy8KIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCi0vLwotLy8gVHJhY2sgd2hldGhlciBlcnJvcnMgaGF2
ZSBvY2N1cnJlZC4KLS8vCi12b2lkIFRQYXJzZUNvbnRleHQ6OnJlY292ZXIoKQotewotfQogCiAv
LwogLy8gVXNlZCBieSBmbGV4L2Jpc29uIHRvIG91dHB1dCBhbGwgc3ludGF4IGFuZCBwYXJzaW5n
IGVycm9ycy4KQEAgLTE0NywxMCArMTQxLDcgQEAgdm9pZCBUUGFyc2VDb250ZXh0OjplcnJvcihj
b25zdCBUU291cmNlTAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b2tl
biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXh0cmFJbmZvKQogewot
ICAgIHBwOjpTb3VyY2VMb2NhdGlvbiBzcmNMb2M7Ci0gICAgc3JjTG9jLmZpbGUgPSBsb2MuZmly
c3RfZmlsZTsKLSAgICBzcmNMb2MubGluZSA9IGxvYy5maXJzdF9saW5lOwotICAgIG1EaWFnbm9z
dGljcy53cml0ZUluZm8ocHA6OkRpYWdub3N0aWNzOjpQUF9FUlJPUiwgc3JjTG9jLCByZWFzb24s
IHRva2VuLCBleHRyYUluZm8pOworICAgIG1EaWFnbm9zdGljcy5lcnJvcihsb2MsIHJlYXNvbiwg
dG9rZW4sIGV4dHJhSW5mbyk7CiB9CiAKIHZvaWQgVFBhcnNlQ29udGV4dDo6d2FybmluZyhjb25z
dCBUU291cmNlTG9jICZsb2MsCkBAIC0xNTgsMTAgKzE0OSw3IEBAIHZvaWQgVFBhcnNlQ29udGV4
dDo6d2FybmluZyhjb25zdCBUU291cmMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyICp0b2tlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpl
eHRyYUluZm8pCiB7Ci0gICAgcHA6OlNvdXJjZUxvY2F0aW9uIHNyY0xvYzsKLSAgICBzcmNMb2Mu
ZmlsZSA9IGxvYy5maXJzdF9maWxlOwotICAgIHNyY0xvYy5saW5lID0gbG9jLmZpcnN0X2xpbmU7
Ci0gICAgbURpYWdub3N0aWNzLndyaXRlSW5mbyhwcDo6RGlhZ25vc3RpY3M6OlBQX1dBUk5JTkcs
IHNyY0xvYywgcmVhc29uLCB0b2tlbiwgZXh0cmFJbmZvKTsKKyAgICBtRGlhZ25vc3RpY3Mud2Fy
bmluZyhsb2MsIHJlYXNvbiwgdG9rZW4sIGV4dHJhSW5mbyk7CiB9CiAKIHZvaWQgVFBhcnNlQ29u
dGV4dDo6b3V0T2ZSYW5nZUVycm9yKGJvb2wgaXNFcnJvciwKQEAgLTE3Myw3ICsxNjEsNiBAQCB2
b2lkIFRQYXJzZUNvbnRleHQ6Om91dE9mUmFuZ2VFcnJvcihib29sCiAgICAgaWYgKGlzRXJyb3Ip
CiAgICAgewogICAgICAgICBlcnJvcihsb2MsIHJlYXNvbiwgdG9rZW4sIGV4dHJhSW5mbyk7Ci0g
ICAgICAgIHJlY292ZXIoKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKQEAgLTIyMCw4NyArMjA3
LDczIEBAIHZvaWQgVFBhcnNlQ29udGV4dDo6YmluYXJ5T3BFcnJvcihjb25zdCAKICAgICBlcnJv
cihsaW5lLCAiIHdyb25nIG9wZXJhbmQgdHlwZXMgIiwgb3AsIGV4dHJhSW5mby5jX3N0cigpKTsK
IH0KIAotYm9vbCBUUGFyc2VDb250ZXh0OjpwcmVjaXNpb25FcnJvckNoZWNrKGNvbnN0IFRTb3Vy
Y2VMb2MgJmxpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBy
ZWNpc2lvbiBwcmVjaXNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVEJhc2ljVHlwZSB0eXBlKQordm9pZCBUUGFyc2VDb250ZXh0OjpjaGVja1ByZWNpc2lvblNw
ZWNpZmllZChjb25zdCBUU291cmNlTG9jICZsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUUHJlY2lzaW9uIHByZWNpc2lvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEJhc2ljVHlwZSB0eXBlKQogewogICAgIGlm
ICghbUNoZWNrc1ByZWNpc2lvbkVycm9ycykKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAocHJlY2lzaW9uICE9IEVicFVuZGVmaW5lZCAmJiAhU3VwcG9y
dHNQcmVjaXNpb24odHlwZSkpCisgICAgeworICAgICAgICBlcnJvcihsaW5lLCAiaWxsZWdhbCB0
eXBlIGZvciBwcmVjaXNpb24gcXVhbGlmaWVyIiwgZ2V0QmFzaWNTdHJpbmcodHlwZSkpOworICAg
IH0KKwogICAgIGlmIChwcmVjaXNpb24gPT0gRWJwVW5kZWZpbmVkKQogICAgIHsKICAgICAgICAg
c3dpdGNoICh0eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OgogICAg
ICAgICAgICAgICAgIGVycm9yKGxpbmUsICJObyBwcmVjaXNpb24gc3BlY2lmaWVkIGZvciAoZmxv
YXQpIiwgIiIpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgogICAgICAgICAgICAgY2FzZSBFYnRV
SW50OgogICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7ICAvLyB0aGVyZSdzIGFsd2F5cyBh
IHByZWRlY2xhcmVkIHF1YWxpZmllcgogICAgICAgICAgICAgICAgIGVycm9yKGxpbmUsICJObyBw
cmVjaXNpb24gc3BlY2lmaWVkIChpbnQpIiwgIiIpOwotICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICAgICAgaWYgKElzU2FtcGxlcih0eXBlKSkKICAgICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgICAgIGVycm9yKGxpbmUsICJObyBwcmVjaXNpb24gc3BlY2lmaWVkIChzYW1w
bGVyKSIsICIiKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgcmV0dXJuIGZhbHNlOwogfQogCi0vLwogLy8gQm90aCB0ZXN0IGFuZCBpZiBuZWNlc3Nhcnks
IHNwaXQgb3V0IGFuIGVycm9yLCB0byBzZWUgaWYgdGhlIG5vZGUgaXMgcmVhbGx5CiAvLyBhbiBs
LXZhbHVlIHRoYXQgY2FuIGJlIG9wZXJhdGVkIG9uIHRoaXMgd2F5LgotLy8KLS8vIFJldHVybnMg
dHJ1ZSBpZiB0aGUgd2FzIGFuIGVycm9yLgotLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6bFZhbHVl
RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jICZsaW5lLCBjb25zdCBjaGFyICpvcCwgVEludGVy
bVR5cGVkICpub2RlKQorYm9vbCBUUGFyc2VDb250ZXh0OjpjaGVja0NhbkJlTFZhbHVlKGNvbnN0
IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0IGNoYXIgKm9wLCBUSW50ZXJtVHlwZWQgKm5vZGUpCiB7
CiAgICAgVEludGVybVN5bWJvbCAqc3ltTm9kZSAgICA9IG5vZGUtPmdldEFzU3ltYm9sTm9kZSgp
OwogICAgIFRJbnRlcm1CaW5hcnkgKmJpbmFyeU5vZGUgPSBub2RlLT5nZXRBc0JpbmFyeU5vZGUo
KTsKKyAgICBUSW50ZXJtU3dpenpsZSAqc3dpenpsZU5vZGUgPSBub2RlLT5nZXRBc1N3aXp6bGVO
b2RlKCk7CiAKLSAgICBpZiAoYmluYXJ5Tm9kZSkKKyAgICBpZiAoc3dpenpsZU5vZGUpCiAgICAg
ewotICAgICAgICBib29sIGVycm9yUmV0dXJuOworICAgICAgICBib29sIG9rID0gY2hlY2tDYW5C
ZUxWYWx1ZShsaW5lLCBvcCwgc3dpenpsZU5vZGUtPmdldE9wZXJhbmQoKSk7CisgICAgICAgIGlm
IChvayAmJiBzd2l6emxlTm9kZS0+aGFzRHVwbGljYXRlT2Zmc2V0cygpKQorICAgICAgICB7Cisg
ICAgICAgICAgICBlcnJvcihsaW5lLCAiIGwtdmFsdWUgb2Ygc3dpenpsZSBjYW5ub3QgaGF2ZSBk
dXBsaWNhdGUgY29tcG9uZW50cyIsIG9wKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gb2s7CisgICAgfQogCisgICAgaWYgKGJpbmFyeU5vZGUp
CisgICAgewogICAgICAgICBzd2l0Y2ggKGJpbmFyeU5vZGUtPmdldE9wKCkpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3Q6CiAgICAgICAgICAgICBjYXNlIEVPcElu
ZGV4SW5kaXJlY3Q6CiAgICAgICAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0U3RydWN0OgogICAg
ICAgICAgICAgY2FzZSBFT3BJbmRleERpcmVjdEludGVyZmFjZUJsb2NrOgotICAgICAgICAgICAg
ICAgIHJldHVybiBsVmFsdWVFcnJvckNoZWNrKGxpbmUsIG9wLCBiaW5hcnlOb2RlLT5nZXRMZWZ0
KCkpOwotICAgICAgICAgICAgY2FzZSBFT3BWZWN0b3JTd2l6emxlOgotICAgICAgICAgICAgICAg
IGVycm9yUmV0dXJuID0gbFZhbHVlRXJyb3JDaGVjayhsaW5lLCBvcCwgYmluYXJ5Tm9kZS0+Z2V0
TGVmdCgpKTsKLSAgICAgICAgICAgICAgICBpZiAoIWVycm9yUmV0dXJuKQotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IG9mZnNldFs0XSA9IHswLCAwLCAwLCAwfTsK
LQotICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnJpZ2h0Tm9kZSAgICA9IGJpbmFy
eU5vZGUtPmdldFJpZ2h0KCk7Ci0gICAgICAgICAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUg
KmFnZ3JOb2RlID0gcmlnaHROb2RlLT5nZXRBc0FnZ3JlZ2F0ZSgpOwotCi0gICAgICAgICAgICAg
ICAgICAgIGZvciAoVEludGVybVNlcXVlbmNlOjppdGVyYXRvciBwID0gYWdnck5vZGUtPmdldFNl
cXVlbmNlKCktPmJlZ2luKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgcCAhPSBhZ2dyTm9k
ZS0+Z2V0U2VxdWVuY2UoKS0+ZW5kKCk7IHArKykKLSAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IHZhbHVlID0gKCpwKS0+Z2V0QXNUeXBlZCgpLT5nZXRB
c0NvbnN0YW50VW5pb24oKS0+Z2V0SUNvbnN0KDApOwotICAgICAgICAgICAgICAgICAgICAgICAg
b2Zmc2V0W3ZhbHVlXSsrOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9mZnNldFt2YWx1
ZV0gPiAxKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVycm9yKGxpbmUsICIgbC12YWx1ZSBvZiBzd2l6emxlIGNhbm5vdCBoYXZlIGR1cGxp
Y2F0ZSBjb21wb25lbnRzIiwgb3ApOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3JSZXR1
cm47CisgICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrQ2FuQmVMVmFsdWUobGluZSwgb3AsIGJp
bmFyeU5vZGUtPmdldExlZnQoKSk7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGVycm9yKGxpbmUsICIgbC12YWx1ZSByZXF1
aXJlZCIsIG9wKTsKLQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAogICAgIGNvbnN0IGNoYXIgKnN5bWJvbCA9IDA7CkBAIC0zNDAsNiArMzEzLDI3
IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6bFZhbHVlRXJyb3JDaGVjayhjb24KICAgICAgICAgY2Fz
ZSBFdnFQb2ludENvb3JkOgogICAgICAgICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgZ2xf
UG9pbnRDb29yZCI7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFdnFOdW1Xb3Jr
R3JvdXBzOgorICAgICAgICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgZ2xfTnVtV29ya0dy
b3VwcyI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFdnFXb3JrR3JvdXBTaXpl
OgorICAgICAgICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgZ2xfV29ya0dyb3VwU2l6ZSI7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFdnFXb3JrR3JvdXBJRDoKKyAgICAg
ICAgICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGdsX1dvcmtHcm91cElEIjsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEV2cUxvY2FsSW52b2NhdGlvbklEOgorICAgICAgICAg
ICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgZ2xfTG9jYWxJbnZvY2F0aW9uSUQiOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRXZxR2xvYmFsSW52b2NhdGlvbklEOgorICAgICAg
ICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgZ2xfR2xvYmFsSW52b2NhdGlvbklEIjsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEV2cUxvY2FsSW52b2NhdGlvbkluZGV4Ogor
ICAgICAgICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgZ2xfTG9jYWxJbnZvY2F0aW9uSW5k
ZXgiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRXZxQ29tcHV0ZUluOgorICAg
ICAgICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgd29yayBncm91cCBzaXplIHZhcmlhYmxl
IjsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgLy8K
ICAgICAgICAgICAgIC8vIFR5cGUgdGhhdCBjYW4ndCBiZSB3cml0dGVuIHRvPwpAQCAtMzU4LDE0
ICszNTIsMTQgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpsVmFsdWVFcnJvckNoZWNrKGNvbgogICAg
IHsKICAgICAgICAgZXJyb3IobGluZSwgIiBsLXZhbHVlIHJlcXVpcmVkIiwgb3ApOwogCi0gICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgLy8K
ICAgICAvLyBFdmVyeXRoaW5nIGVsc2UgaXMgb2theSwgbm8gZXJyb3IuCiAgICAgLy8KICAgICBp
ZiAobWVzc2FnZSA9PSAwKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgLy8KICAgICAvLyBJZiB3ZSBnZXQgaGVyZSwgd2UgaGF2ZSBhbiBlcnJvciBh
bmQgYSBtZXNzYWdlLgpAQCAtMzg1LDY3ICszNzksNDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojps
VmFsdWVFcnJvckNoZWNrKGNvbgogICAgICAgICBlcnJvcihsaW5lLCAiIGwtdmFsdWUgcmVxdWly
ZWQiLCBvcCwgZXh0cmFJbmZvLmNfc3RyKCkpOwogICAgIH0KIAotICAgIHJldHVybiB0cnVlOwor
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotLy8KIC8vIEJvdGggdGVzdCwgYW5kIGlmIG5lY2Vzc2Fy
eSBzcGl0IG91dCBhbiBlcnJvciwgdG8gc2VlIGlmIHRoZSBub2RlIGlzIHJlYWxseQogLy8gYSBj
b25zdGFudC4KLS8vCi0vLyBSZXR1cm5zIHRydWUgaWYgdGhlIHdhcyBhbiBlcnJvci4KLS8vCi1i
b29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0RXJyb3JDaGVjayhUSW50ZXJtVHlwZWQgKm5vZGUpCit2
b2lkIFRQYXJzZUNvbnRleHQ6OmNoZWNrSXNDb25zdChUSW50ZXJtVHlwZWQgKm5vZGUpCiB7Ci0g
ICAgaWYgKG5vZGUtPmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBlcnJvcihub2RlLT5nZXRMaW5lKCksICJjb25zdGFudCBleHByZXNzaW9u
IHJlcXVpcmVkIiwgIiIpOwotCi0gICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG5vZGUtPmdldFF1
YWxpZmllcigpICE9IEV2cUNvbnN0KQorICAgIHsKKyAgICAgICAgZXJyb3Iobm9kZS0+Z2V0TGlu
ZSgpLCAiY29uc3RhbnQgZXhwcmVzc2lvbiByZXF1aXJlZCIsICIiKTsKKyAgICB9CiB9CiAKLS8v
CiAvLyBCb3RoIHRlc3QsIGFuZCBpZiBuZWNlc3Nhcnkgc3BpdCBvdXQgYW4gZXJyb3IsIHRvIHNl
ZSBpZiB0aGUgbm9kZSBpcyByZWFsbHkKIC8vIGFuIGludGVnZXIuCi0vLwotLy8gUmV0dXJucyB0
cnVlIGlmIHRoZSB3YXMgYW4gZXJyb3IuCi0vLwotYm9vbCBUUGFyc2VDb250ZXh0OjppbnRlZ2Vy
RXJyb3JDaGVjayhUSW50ZXJtVHlwZWQgKm5vZGUsIGNvbnN0IGNoYXIgKnRva2VuKQordm9pZCBU
UGFyc2VDb250ZXh0OjpjaGVja0lzU2NhbGFySW50ZWdlcihUSW50ZXJtVHlwZWQgKm5vZGUsIGNv
bnN0IGNoYXIgKnRva2VuKQogewotICAgIGlmIChub2RlLT5pc1NjYWxhckludCgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBlcnJvcihub2RlLT5nZXRMaW5lKCksICJpbnRlZ2VyIGV4
cHJlc3Npb24gcmVxdWlyZWQiLCB0b2tlbik7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAo
IW5vZGUtPmlzU2NhbGFySW50KCkpCisgICAgeworICAgICAgICBlcnJvcihub2RlLT5nZXRMaW5l
KCksICJpbnRlZ2VyIGV4cHJlc3Npb24gcmVxdWlyZWQiLCB0b2tlbik7CisgICAgfQogfQogCi0v
LwogLy8gQm90aCB0ZXN0LCBhbmQgaWYgbmVjZXNzYXJ5IHNwaXQgb3V0IGFuIGVycm9yLCB0byBz
ZWUgaWYgd2UgYXJlIGN1cnJlbnRseQogLy8gZ2xvYmFsbHkgc2NvcGVkLgotLy8KLS8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGUgd2FzIGFuIGVycm9yLgotLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6Z2xv
YmFsRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jICZsaW5lLCBib29sIGdsb2JhbCwgY29uc3Qg
Y2hhciAqdG9rZW4pCitib29sIFRQYXJzZUNvbnRleHQ6OmNoZWNrSXNBdEdsb2JhbExldmVsKGNv
bnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0IGNoYXIgKnRva2VuKQogewotICAgIGlmIChnbG9i
YWwpCisgICAgaWYgKCFzeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkpCisgICAgeworICAgICAg
ICBlcnJvcihsaW5lLCAib25seSBhbGxvd2VkIGF0IGdsb2JhbCBzY29wZSIsIHRva2VuKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZXJyb3IobGluZSwgIm9ubHkgYWxsb3dlZCBhdCBn
bG9iYWwgc2NvcGUiLCB0b2tlbik7Ci0KKyAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLS8v
CiAvLyBGb3Igbm93LCBrZWVwIGl0IHNpbXBsZTogIGlmIGl0IHN0YXJ0cyAiZ2xfIiwgaXQncyBy
ZXNlcnZlZCwgaW5kZXBlbmRlbnQKIC8vIG9mIHNjb3BlLiAgRXhjZXB0LCBpZiB0aGUgc3ltYm9s
IHRhYmxlIGlzIGF0IHRoZSBidWlsdC1pbiBwdXNoLWxldmVsLAogLy8gd2hpY2ggaXMgd2hlbiB3
ZSBhcmUgcGFyc2luZyBidWlsdC1pbnMuCiAvLyBBbHNvIGNoZWNrcyBmb3IgIndlYmdsXyIgYW5k
ICJfd2ViZ2xfIiByZXNlcnZlZCBpZGVudGlmaWVycyBpZiBwYXJzaW5nIGEKIC8vIHdlYmdsIHNo
YWRlci4KLS8vCi0vLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yLgotLy8KLWJv
b2wgVFBhcnNlQ29udGV4dDo6cmVzZXJ2ZWRFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MgJmxp
bmUsIGNvbnN0IFRTdHJpbmcgJmlkZW50aWZpZXIpCitib29sIFRQYXJzZUNvbnRleHQ6OmNoZWNr
SXNOb3RSZXNlcnZlZChjb25zdCBUU291cmNlTG9jICZsaW5lLCBjb25zdCBUU3RyaW5nICZpZGVu
dGlmaWVyKQogewogICAgIHN0YXRpYyBjb25zdCBjaGFyICpyZXNlcnZlZEVyck1zZyA9ICJyZXNl
cnZlZCBidWlsdC1pbiBuYW1lIjsKICAgICBpZiAoIXN5bWJvbFRhYmxlLmF0QnVpbHRJbkxldmVs
KCkpCkBAIC00NTMsMjQgKzQyNywxOSBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnJlc2VydmVkRXJy
b3JDaGVjayhjCiAgICAgICAgIGlmIChpZGVudGlmaWVyLmNvbXBhcmUoMCwgMywgImdsXyIpID09
IDApCiAgICAgICAgIHsKICAgICAgICAgICAgIGVycm9yKGxpbmUsIHJlc2VydmVkRXJyTXNnLCAi
Z2xfIik7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoSXNXZWJHTEJhc2VkU3BlYyhtU2hhZGVyU3BlYykp
CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChpZGVudGlmaWVyLmNvbXBhcmUoMCwgNiwgIndl
YmdsXyIpID09IDApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgZXJyb3IobGluZSwg
cmVzZXJ2ZWRFcnJNc2csICJ3ZWJnbF8iKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBpZiAoaWRlbnRpZmllci5jb21wYXJlKDAsIDcsICJfd2ViZ2xfIikgPT0gMCkKICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICBlcnJvcihsaW5lLCByZXNlcnZlZEVyck1zZywgIl93ZWJn
bF8iKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGlmIChtU2hhZGVyU3BlYyA9PSBTSF9DU1NfU0hBREVSU19TUEVDICYmIGlkZW50aWZp
ZXIuY29tcGFyZSgwLCA0LCAiY3NzXyIpID09IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgZXJyb3IobGluZSwgcmVzZXJ2ZWRFcnJNc2csICJjc3NfIik7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChpZGVudGlmaWVyLmZpbmQoIl9fIikgIT0gVFN0
cmluZzo6bnBvcykKQEAgLTQ3OSwyOCArNDQ4LDIyIEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6cmVz
ZXJ2ZWRFcnJvckNoZWNrKGMKICAgICAgICAgICAgICAgICAgICJpZGVudGlmaWVycyBjb250YWlu
aW5nIHR3byBjb25zZWN1dGl2ZSB1bmRlcnNjb3JlcyAoX18pIGFyZSByZXNlcnZlZCBhcyAiCiAg
ICAgICAgICAgICAgICAgICAicG9zc2libGUgZnV0dXJlIGtleXdvcmRzIiwKICAgICAgICAgICAg
ICAgICAgIGlkZW50aWZpZXIuY19zdHIoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotLy8KIC8vIE1ha2Ugc3VyZSB0aGVyZSBpcyBl
bm91Z2ggZGF0YSBwcm92aWRlZCB0byB0aGUgY29uc3RydWN0b3IgdG8gYnVpbGQKIC8vIHNvbWV0
aGluZyBvZiB0aGUgdHlwZSBvZiB0aGUgY29uc3RydWN0b3IuICBBbHNvIHJldHVybnMgdGhlIHR5
cGUgb2YKIC8vIHRoZSBjb25zdHJ1Y3Rvci4KLS8vCi0vLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUg
d2FzIGFuIGVycm9yIGluIGNvbnN0cnVjdGlvbi4KLS8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmNv
bnN0cnVjdG9yRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jICZsaW5lLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybU5vZGUgKmFyZ3VtZW50c05vZGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURnVuY3Rpb24gJmZ1
bmN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVE9wZXJh
dG9yIG9wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFR5cGUg
KnR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmNoZWNrQ29uc3RydWN0b3JBcmd1bWVudHMoY29u
c3QgVFNvdXJjZUxvYyAmbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUSW50ZXJtTm9kZSAqYXJndW1lbnRzTm9kZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBURnVuY3Rpb24gJmZ1bmN0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRPcGVyYXRvciBv
cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
VHlwZSAmdHlwZSkKIHsKLSAgICAqdHlwZSA9IGZ1bmN0aW9uLmdldFJldHVyblR5cGUoKTsKLQog
ICAgIGJvb2wgY29uc3RydWN0aW5nTWF0cml4ID0gZmFsc2U7CiAgICAgc3dpdGNoIChvcCkKICAg
ICB7CkBAIC01MjYsNyArNDg5LDYgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RvckVy
cm9yQ2hlYwogICAgIC8vCiAKICAgICBzaXplX3Qgc2l6ZSAgICAgICAgID0gMDsKLSAgICBib29s
IGNvbnN0VHlwZSAgICAgID0gdHJ1ZTsKICAgICBib29sIGZ1bGwgICAgICAgICAgID0gZmFsc2U7
CiAgICAgYm9vbCBvdmVyRnVsbCAgICAgICA9IGZhbHNlOwogICAgIGJvb2wgbWF0cml4SW5NYXRy
aXggPSBmYWxzZTsKQEAgLTU0MCw3NSArNTAyLDY4IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Y29u
c3RydWN0b3JFcnJvckNoZWMKICAgICAgICAgICAgIG1hdHJpeEluTWF0cml4ID0gdHJ1ZTsKICAg
ICAgICAgaWYgKGZ1bGwpCiAgICAgICAgICAgICBvdmVyRnVsbCA9IHRydWU7Ci0gICAgICAgIGlm
IChvcCAhPSBFT3BDb25zdHJ1Y3RTdHJ1Y3QgJiYgIXR5cGUtPmlzQXJyYXkoKSAmJiBzaXplID49
IHR5cGUtPmdldE9iamVjdFNpemUoKSkKKyAgICAgICAgaWYgKG9wICE9IEVPcENvbnN0cnVjdFN0
cnVjdCAmJiAhdHlwZS5pc0FycmF5KCkgJiYgc2l6ZSA+PSB0eXBlLmdldE9iamVjdFNpemUoKSkK
ICAgICAgICAgICAgIGZ1bGwgPSB0cnVlOwotICAgICAgICBpZiAocGFyYW0udHlwZS0+Z2V0UXVh
bGlmaWVyKCkgIT0gRXZxQ29uc3QpCi0gICAgICAgICAgICBjb25zdFR5cGUgPSBmYWxzZTsKICAg
ICAgICAgaWYgKHBhcmFtLnR5cGUtPmlzQXJyYXkoKSkKICAgICAgICAgICAgIGFycmF5QXJnID0g
dHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoY29uc3RUeXBlKQotICAgICAgICB0eXBlLT5zZXRRdWFs
aWZpZXIoRXZxQ29uc3QpOwotCi0gICAgaWYgKHR5cGUtPmlzQXJyYXkoKSkKKyAgICBpZiAodHlw
ZS5pc0FycmF5KCkpCiAgICAgewotICAgICAgICBpZiAodHlwZS0+aXNVbnNpemVkQXJyYXkoKSkK
LSAgICAgICAgewotICAgICAgICAgICAgdHlwZS0+c2V0QXJyYXlTaXplKHN0YXRpY19jYXN0PGlu
dD4oZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBp
ZiAoc3RhdGljX2Nhc3Q8c2l6ZV90Pih0eXBlLT5nZXRBcnJheVNpemUoKSkgIT0gZnVuY3Rpb24u
Z2V0UGFyYW1Db3VudCgpKQorICAgICAgICAvLyBUaGUgc2l6ZSBvZiBhbiB1bnNpemVkIGNvbnN0
cnVjdG9yIHNob3VsZCBhbHJlYWR5IGhhdmUgYmVlbiBkZXRlcm1pbmVkLgorICAgICAgICBBU1NF
UlQoIXR5cGUuaXNVbnNpemVkQXJyYXkoKSk7CisgICAgICAgIGlmIChzdGF0aWNfY2FzdDxzaXpl
X3Q+KHR5cGUuZ2V0QXJyYXlTaXplKCkpICE9IGZ1bmN0aW9uLmdldFBhcmFtQ291bnQoKSkKICAg
ICAgICAgewogICAgICAgICAgICAgZXJyb3IobGluZSwgImFycmF5IGNvbnN0cnVjdG9yIG5lZWRz
IG9uZSBhcmd1bWVudCBwZXIgYXJyYXkgZWxlbWVudCIsICJjb25zdHJ1Y3RvciIpOwotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBpZiAoYXJyYXlBcmcgJiYgb3AgIT0gRU9wQ29uc3RydWN0U3RydWN0KQog
ICAgIHsKICAgICAgICAgZXJyb3IobGluZSwgImNvbnN0cnVjdGluZyBmcm9tIGEgbm9uLWRlcmVm
ZXJlbmNlZCBhcnJheSIsICJjb25zdHJ1Y3RvciIpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChtYXRyaXhJbk1hdHJpeCAmJiAh
dHlwZS0+aXNBcnJheSgpKQorICAgIGlmIChtYXRyaXhJbk1hdHJpeCAmJiAhdHlwZS5pc0FycmF5
KCkpCiAgICAgewogICAgICAgICBpZiAoZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgpICE9IDEpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGVycm9yKGxpbmUsICJjb25zdHJ1Y3RpbmcgbWF0cml4IGZy
b20gbWF0cml4IGNhbiBvbmx5IHRha2Ugb25lIGFyZ3VtZW50IiwKICAgICAgICAgICAgICAgICAg
ICJjb25zdHJ1Y3RvciIpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAob3ZlckZ1bGwpCiAgICAg
ewogICAgICAgICBlcnJvcihsaW5lLCAidG9vIG1hbnkgYXJndW1lbnRzIiwgImNvbnN0cnVjdG9y
Iik7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgaWYgKG9wID09IEVPcENvbnN0cnVjdFN0cnVjdCAmJiAhdHlwZS0+aXNBcnJheSgpICYm
Ci0gICAgICAgIHR5cGUtPmdldFN0cnVjdCgpLT5maWVsZHMoKS5zaXplKCkgIT0gZnVuY3Rpb24u
Z2V0UGFyYW1Db3VudCgpKQorICAgIGlmIChvcCA9PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QgJiYgIXR5
cGUuaXNBcnJheSgpICYmCisgICAgICAgIHR5cGUuZ2V0U3RydWN0KCktPmZpZWxkcygpLnNpemUo
KSAhPSBmdW5jdGlvbi5nZXRQYXJhbUNvdW50KCkpCiAgICAgewogICAgICAgICBlcnJvcihsaW5l
LAogICAgICAgICAgICAgICAiTnVtYmVyIG9mIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMgZG9lcyBu
b3QgbWF0Y2ggdGhlIG51bWJlciBvZiBzdHJ1Y3R1cmUgZmllbGRzIiwKICAgICAgICAgICAgICAg
ImNvbnN0cnVjdG9yIik7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgaWYgKCF0eXBlLT5pc01hdHJpeCgpIHx8ICFtYXRyaXhJbk1hdHJp
eCkKKyAgICBpZiAoIXR5cGUuaXNNYXRyaXgoKSB8fCAhbWF0cml4SW5NYXRyaXgpCiAgICAgewot
ICAgICAgICBpZiAoKG9wICE9IEVPcENvbnN0cnVjdFN0cnVjdCAmJiBzaXplICE9IDEgJiYgc2l6
ZSA8IHR5cGUtPmdldE9iamVjdFNpemUoKSkgfHwKLSAgICAgICAgICAgIChvcCA9PSBFT3BDb25z
dHJ1Y3RTdHJ1Y3QgJiYgc2l6ZSA8IHR5cGUtPmdldE9iamVjdFNpemUoKSkpCisgICAgICAgIGlm
ICgob3AgIT0gRU9wQ29uc3RydWN0U3RydWN0ICYmIHNpemUgIT0gMSAmJiBzaXplIDwgdHlwZS5n
ZXRPYmplY3RTaXplKCkpIHx8CisgICAgICAgICAgICAob3AgPT0gRU9wQ29uc3RydWN0U3RydWN0
ICYmIHNpemUgPCB0eXBlLmdldE9iamVjdFNpemUoKSkpCiAgICAgICAgIHsKICAgICAgICAgICAg
IGVycm9yKGxpbmUsICJub3QgZW5vdWdoIGRhdGEgcHJvdmlkZWQgZm9yIGNvbnN0cnVjdGlvbiIs
ICJjb25zdHJ1Y3RvciIpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoYXJndW1lbnRzTm9kZSA9
PSBudWxscHRyKQogICAgIHsKICAgICAgICAgZXJyb3IobGluZSwgImNvbnN0cnVjdG9yIGRvZXMg
bm90IGhhdmUgYW55IGFyZ3VtZW50cyIsICJjb25zdHJ1Y3RvciIpOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIFRJbnRlcm1BZ2dyZWdh
dGUgKmFyZ3VtZW50c0FnZyA9IGFyZ3VtZW50c05vZGUtPmdldEFzQWdncmVnYXRlKCk7CkBAIC02
MTksMTYgKzU3NCw0OCBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JDaGVj
CiAgICAgICAgIGlmIChvcCAhPSBFT3BDb25zdHJ1Y3RTdHJ1Y3QgJiYgSXNTYW1wbGVyKGFyZ1R5
cGVkLT5nZXRCYXNpY1R5cGUoKSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVycm9yKGxpbmUs
ICJjYW5ub3QgY29udmVydCBhIHNhbXBsZXIiLCAiY29uc3RydWN0b3IiKTsKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAg
ICAgIGlmIChhcmdUeXBlZC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0Vm9pZCkKICAgICAgICAgewog
ICAgICAgICAgICAgZXJyb3IobGluZSwgImNhbm5vdCBjb252ZXJ0IGEgdm9pZCIsICJjb25zdHJ1
Y3RvciIpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHR5cGUu
aXNBcnJheSgpKQorICAgIHsKKyAgICAgICAgLy8gR0xTTCBFUyAzLjAwIHNlY3Rpb24gNS40LjQ6
IEVhY2ggYXJndW1lbnQgbXVzdCBiZSB0aGUgc2FtZSB0eXBlIGFzIHRoZSBlbGVtZW50IHR5cGUg
b2YKKyAgICAgICAgLy8gdGhlIGFycmF5LgorICAgICAgICBmb3IgKFRJbnRlcm1Ob2RlIComYXJn
Tm9kZSA6ICphcmd1bWVudHNBZ2ctPmdldFNlcXVlbmNlKCkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGNvbnN0IFRUeXBlICZhcmdUeXBlID0gYXJnTm9kZS0+Z2V0QXNUeXBlZCgpLT5nZXRUeXBl
KCk7CisgICAgICAgICAgICAvLyBJdCBoYXMgYWxyZWFkeSBiZWVuIGNoZWNrZWQgdGhhdCB0aGUg
YXJndW1lbnQgaXMgbm90IGFuIGFycmF5LgorICAgICAgICAgICAgQVNTRVJUKCFhcmdUeXBlLmlz
QXJyYXkoKSk7CisgICAgICAgICAgICBpZiAoIWFyZ1R5cGUuc2FtZUVsZW1lbnRUeXBlKHR5cGUp
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVycm9yKGxpbmUsICJBcnJheSBjb25z
dHJ1Y3RvciBhcmd1bWVudCBoYXMgYW4gaW5jb3JyZWN0IHR5cGUiLCAiRXJyb3IiKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisgICAgZWxzZSBpZiAob3AgPT0gRU9wQ29uc3RydWN0U3RydWN0KQorICAgIHsKKyAgICAgICAg
Y29uc3QgVEZpZWxkTGlzdCAmZmllbGRzID0gdHlwZS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7Cisg
ICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAqYXJncyAgICA9IGFyZ3VtZW50c0FnZy0+Z2V0U2VxdWVu
Y2UoKTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkr
KykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGkgPj0gYXJncy0+c2l6ZSgpIHx8ICgqYXJn
cylbaV0tPmdldEFzVHlwZWQoKS0+Z2V0VHlwZSgpICE9ICpmaWVsZHNbaV0tPnR5cGUoKSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBlcnJvcihsaW5lLCAiU3RydWN0dXJlIGNvbnN0
cnVjdG9yIGFyZ3VtZW50cyBkbyBub3QgbWF0Y2ggc3RydWN0dXJlIGZpZWxkcyIsCisgICAgICAg
ICAgICAgICAgICAgICAgIkVycm9yIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7CiB9CiAK
IC8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIHRvIHNlZSBpZiBhIHZvaWQgdmFyaWFibGUgaGFzIGJl
ZW4gZGVjbGFyZWQgYW5kIHJhaXNlIGFuIGVycm9yIG1lc3NhZ2UgZm9yCkBAIC02MzYsNTMgKzYy
Myw0MSBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JDaGVjCiAvLwogLy8g
cmV0dXJucyB0cnVlIGluIGNhc2Ugb2YgYW4gZXJyb3IKIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6
OnZvaWRFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCitib29sIFRQYXJzZUNvbnRl
eHQ6OmNoZWNrSXNOb25Wb2lkKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJmlkZW50aWZpZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRCYXNpY1R5cGUgJnR5cGUpCiB7CiAg
ICAgaWYgKHR5cGUgPT0gRWJ0Vm9pZCkKICAgICB7CiAgICAgICAgIGVycm9yKGxpbmUsICJpbGxl
Z2FsIHVzZSBvZiB0eXBlICd2b2lkJyIsIGlkZW50aWZpZXIuY19zdHIoKSk7Ci0gICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiB0cnVlOwogfQogCiAvLyBUaGlzIGZ1bmN0aW9uIGNoZWNrcyB0byBz
ZWUgaWYgdGhlIG5vZGUgKGZvciB0aGUgZXhwcmVzc2lvbikgY29udGFpbnMgYSBzY2FsYXIgYm9v
bGVhbiBleHByZXNzaW9uCi0vLyBvciBub3QKLS8vCi0vLyByZXR1cm5zIHRydWUgaW4gY2FzZSBv
ZiBhbiBlcnJvcgotLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6Ym9vbEVycm9yQ2hlY2soY29uc3Qg
VFNvdXJjZUxvYyAmbGluZSwgY29uc3QgVEludGVybVR5cGVkICp0eXBlKQorLy8gb3Igbm90Lgor
dm9pZCBUUGFyc2VDb250ZXh0OjpjaGVja0lzU2NhbGFyQm9vbChjb25zdCBUU291cmNlTG9jICZs
aW5lLCBjb25zdCBUSW50ZXJtVHlwZWQgKnR5cGUpCiB7CiAgICAgaWYgKHR5cGUtPmdldEJhc2lj
VHlwZSgpICE9IEVidEJvb2wgfHwgdHlwZS0+aXNBcnJheSgpIHx8IHR5cGUtPmlzTWF0cml4KCkg
fHwgdHlwZS0+aXNWZWN0b3IoKSkKICAgICB7CiAgICAgICAgIGVycm9yKGxpbmUsICJib29sZWFu
IGV4cHJlc3Npb24gZXhwZWN0ZWQiLCAiIik7Ci0gICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
LQotICAgIHJldHVybiBmYWxzZTsKIH0KIAogLy8gVGhpcyBmdW5jdGlvbiBjaGVja3MgdG8gc2Vl
IGlmIHRoZSBub2RlIChmb3IgdGhlIGV4cHJlc3Npb24pIGNvbnRhaW5zIGEgc2NhbGFyIGJvb2xl
YW4gZXhwcmVzc2lvbgotLy8gb3Igbm90Ci0vLwotLy8gcmV0dXJucyB0cnVlIGluIGNhc2Ugb2Yg
YW4gZXJyb3IKLS8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNrKGNvbnN0IFRT
b3VyY2VMb2MgJmxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlICZwVHlwZSkKKy8vIG9yIG5vdC4KK3Zv
aWQgVFBhcnNlQ29udGV4dDo6Y2hlY2tJc1NjYWxhckJvb2woY29uc3QgVFNvdXJjZUxvYyAmbGlu
ZSwgY29uc3QgVFB1YmxpY1R5cGUgJnBUeXBlKQogewotICAgIGlmIChwVHlwZS50eXBlICE9IEVi
dEJvb2wgfHwgcFR5cGUuaXNBZ2dyZWdhdGUoKSkKKyAgICBpZiAocFR5cGUuZ2V0QmFzaWNUeXBl
KCkgIT0gRWJ0Qm9vbCB8fCBwVHlwZS5pc0FnZ3JlZ2F0ZSgpKQogICAgIHsKICAgICAgICAgZXJy
b3IobGluZSwgImJvb2xlYW4gZXhwcmVzc2lvbiBleHBlY3RlZCIsICIiKTsKLSAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRQYXJzZUNv
bnRleHQ6OnNhbXBsZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRQdWJsaWNUeXBlICZwVHlwZSwK
K2Jvb2wgVFBhcnNlQ29udGV4dDo6Y2hlY2tJc05vdFNhbXBsZXIoY29uc3QgVFNvdXJjZUxvYyAm
bGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGVT
cGVjaWZpZXJOb25BcnJheSAmcFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbikKIHsKICAgICBpZiAocFR5cGUudHlwZSA9PSBFYnRT
dHJ1Y3QpCkBAIC02OTAsNDYgKzY2NSw0OSBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnNhbXBsZXJF
cnJvckNoZWNrKGNvCiAgICAgICAgIGlmIChjb250YWluc1NhbXBsZXIoKnBUeXBlLnVzZXJEZWYp
KQogICAgICAgICB7CiAgICAgICAgICAgICBlcnJvcihsaW5lLCByZWFzb24sIGdldEJhc2ljU3Ry
aW5nKHBUeXBlLnR5cGUpLCAiKHN0cnVjdHVyZSBjb250YWlucyBhIHNhbXBsZXIpIik7Ci0KLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAgICAgZWxzZSBpZiAoSXNTYW1wbGVyKHBUeXBlLnR5cGUpKQogICAgIHsKICAgICAgICAgZXJy
b3IobGluZSwgcmVhc29uLCBnZXRCYXNpY1N0cmluZyhwVHlwZS50eXBlKSk7Ci0KLSAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6bG9jYXRp
b25EZWNsYXJhdG9yTGlzdENoZWNrKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0IFRQdWJs
aWNUeXBlICZwVHlwZSkKK3ZvaWQgVFBhcnNlQ29udGV4dDo6Y2hlY2tEZWNsYXJhdG9yTG9jYXRp
b25Jc05vdFNwZWNpZmllZChjb25zdCBUU291cmNlTG9jICZsaW5lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRQdWJsaWNU
eXBlICZwVHlwZSkKIHsKICAgICBpZiAocFR5cGUubGF5b3V0UXVhbGlmaWVyLmxvY2F0aW9uICE9
IC0xKQogICAgIHsKICAgICAgICAgZXJyb3IobGluZSwgImxvY2F0aW9uIG11c3Qgb25seSBiZSBz
cGVjaWZpZWQgZm9yIGEgc2luZ2xlIGlucHV0IG9yIG91dHB1dCB2YXJpYWJsZSIsCiAgICAgICAg
ICAgICAgICJsb2NhdGlvbiIpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Cit9CiAKLSAg
ICByZXR1cm4gZmFsc2U7Cit2b2lkIFRQYXJzZUNvbnRleHQ6OmNoZWNrTG9jYXRpb25Jc05vdFNw
ZWNpZmllZChjb25zdCBUU291cmNlTG9jICZsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRMYXlvdXRRdWFsaWZpZXIgJmxheW91
dFF1YWxpZmllcikKK3sKKyAgICBpZiAobGF5b3V0UXVhbGlmaWVyLmxvY2F0aW9uICE9IC0xKQor
ICAgIHsKKyAgICAgICAgZXJyb3IobG9jYXRpb24sICJpbnZhbGlkIGxheW91dCBxdWFsaWZpZXI6
IiwgImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgIm9ubHkgdmFsaWQgb24gcHJvZ3JhbSBpbnB1
dHMgYW5kIG91dHB1dHMiKTsKKyAgICB9CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6cGFyYW1l
dGVyU2FtcGxlckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRU
eXBlICZ0eXBlKQordm9pZCBUUGFyc2VDb250ZXh0OjpjaGVja091dFBhcmFtZXRlcklzTm90U2Ft
cGxlcihjb25zdCBUU291cmNlTG9jICZsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgJnR5cGUp
CiB7CiAgICAgaWYgKChxdWFsaWZpZXIgPT0gRXZxT3V0IHx8IHF1YWxpZmllciA9PSBFdnFJbk91
dCkgJiYgdHlwZS5nZXRCYXNpY1R5cGUoKSAhPSBFYnRTdHJ1Y3QgJiYKICAgICAgICAgSXNTYW1w
bGVyKHR5cGUuZ2V0QmFzaWNUeXBlKCkpKQogICAgIHsKICAgICAgICAgZXJyb3IobGluZSwgInNh
bXBsZXJzIGNhbm5vdCBiZSBvdXRwdXQgcGFyYW1ldGVycyIsIHR5cGUuZ2V0QmFzaWNTdHJpbmco
KSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKIH0K
IAogYm9vbCBUUGFyc2VDb250ZXh0Ojpjb250YWluc1NhbXBsZXIoY29uc3QgVFR5cGUgJnR5cGUp
CkBAIC03NTAsMTIgKzcyOCw4IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Y29udGFpbnNTYW1wbGVy
KGNvbnMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLS8vCiAvLyBEbyBzaXplIGNoZWNraW5nIGZv
ciBhbiBhcnJheSB0eXBlJ3Mgc2l6ZS4KLS8vCi0vLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2Fz
IGFuIGVycm9yLgotLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlTaXplRXJyb3JDaGVjayhj
b25zdCBUU291cmNlTG9jICZsaW5lLCBUSW50ZXJtVHlwZWQgKmV4cHIsIGludCAmc2l6ZSkKK3Vu
c2lnbmVkIGludCBUUGFyc2VDb250ZXh0OjpjaGVja0lzVmFsaWRBcnJheVNpemUoY29uc3QgVFNv
dXJjZUxvYyAmbGluZSwgVEludGVybVR5cGVkICpleHByKQogewogICAgIFRJbnRlcm1Db25zdGFu
dFVuaW9uICpjb25zdGFudCA9IGV4cHItPmdldEFzQ29uc3RhbnRVbmlvbigpOwogCkBAIC03NjUs
MzYgKzczOSwzMiBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5U2l6ZUVycm9yQ2hlY2soCiAg
ICAgaWYgKGV4cHItPmdldFF1YWxpZmllcigpICE9IEV2cUNvbnN0IHx8IGNvbnN0YW50ID09IG51
bGxwdHIgfHwgIWNvbnN0YW50LT5pc1NjYWxhckludCgpKQogICAgIHsKICAgICAgICAgZXJyb3Io
bGluZSwgImFycmF5IHNpemUgbXVzdCBiZSBhIGNvbnN0YW50IGludGVnZXIgZXhwcmVzc2lvbiIs
ICIiKTsKLSAgICAgICAgc2l6ZSA9IDE7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBy
ZXR1cm4gMXU7CiAgICAgfQogCi0gICAgdW5zaWduZWQgaW50IHVuc2lnbmVkU2l6ZSA9IDA7Cisg
ICAgdW5zaWduZWQgaW50IHNpemUgPSAwdTsKIAogICAgIGlmIChjb25zdGFudC0+Z2V0QmFzaWNU
eXBlKCkgPT0gRWJ0VUludCkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkU2l6ZSA9IGNvbnN0YW50
LT5nZXRVQ29uc3QoMCk7Ci0gICAgICAgIHNpemUgICAgICAgICA9IHN0YXRpY19jYXN0PGludD4o
dW5zaWduZWRTaXplKTsKKyAgICAgICAgc2l6ZSA9IGNvbnN0YW50LT5nZXRVQ29uc3QoMCk7CiAg
ICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIHNpemUgPSBjb25zdGFudC0+Z2V0SUNvbnN0
KDApOworICAgICAgICBpbnQgc2lnbmVkU2l6ZSA9IGNvbnN0YW50LT5nZXRJQ29uc3QoMCk7CiAK
LSAgICAgICAgaWYgKHNpemUgPCAwKQorICAgICAgICBpZiAoc2lnbmVkU2l6ZSA8IDApCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGVycm9yKGxpbmUsICJhcnJheSBzaXplIG11c3QgYmUgbm9uLW5l
Z2F0aXZlIiwgIiIpOwotICAgICAgICAgICAgc2l6ZSA9IDE7Ci0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiAxdTsKICAgICAgICAgfQogCi0gICAgICAgIHVuc2ln
bmVkU2l6ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc2l6ZSk7CisgICAgICAgIHNpemUg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHNpZ25lZFNpemUpOwogICAgIH0KIAotICAgIGlm
IChzaXplID09IDApCisgICAgaWYgKHNpemUgPT0gMHUpCiAgICAgewogICAgICAgICBlcnJvcihs
aW5lLCAiYXJyYXkgc2l6ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvIiwgIiIpOwotICAgICAg
ICBzaXplID0gMTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiAxdTsKICAg
ICB9CiAKICAgICAvLyBUaGUgc2l6ZSBvZiBhcnJheXMgaXMgcmVzdHJpY3RlZCBoZXJlIHRvIHBy
ZXZlbnQgaXNzdWVzIGZ1cnRoZXIgZG93biB0aGUKQEAgLTgwMiw3MCArNzcyLDcyIEBAIGJvb2wg
VFBhcnNlQ29udGV4dDo6YXJyYXlTaXplRXJyb3JDaGVjaygKICAgICAvLyA0MDk2IHJlZ2lzdGVy
cyBzbyB0aGlzIHNob3VsZCBiZSByZWFzb25hYmxlIGV2ZW4gZm9yIGFnZ3Jlc3NpdmVseSBvcHRp
bWl6YWJsZSBjb2RlLgogICAgIGNvbnN0IHVuc2lnbmVkIGludCBzaXplTGltaXQgPSA2NTUzNjsK
IAotICAgIGlmICh1bnNpZ25lZFNpemUgPiBzaXplTGltaXQpCisgICAgaWYgKHNpemUgPiBzaXpl
TGltaXQpCiAgICAgewogICAgICAgICBlcnJvcihsaW5lLCAiYXJyYXkgc2l6ZSB0b28gbGFyZ2Ui
LCAiIik7Ci0gICAgICAgIHNpemUgPSAxOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
cmV0dXJuIDF1OwogICAgIH0KIAotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gc2l6ZTsK
IH0KIAotLy8KIC8vIFNlZSBpZiB0aGlzIHF1YWxpZmllciBjYW4gYmUgYW4gYXJyYXkuCi0vLwot
Ly8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIGlzIGFuIGVycm9yLgotLy8KLWJvb2wgVFBhcnNlQ29u
dGV4dDo6YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNv
bnN0IFRQdWJsaWNUeXBlICZ0eXBlKQorYm9vbCBUUGFyc2VDb250ZXh0OjpjaGVja0lzVmFsaWRR
dWFsaWZpZXJGb3JBcnJheShjb25zdCBUU291cmNlTG9jICZsaW5lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUUHVibGljVHlwZSAmZWxl
bWVudFF1YWxpZmllcikKIHsKLSAgICBpZiAoKHR5cGUucXVhbGlmaWVyID09IEV2cUF0dHJpYnV0
ZSkgfHwgKHR5cGUucXVhbGlmaWVyID09IEV2cVZlcnRleEluKSB8fAotICAgICAgICAodHlwZS5x
dWFsaWZpZXIgPT0gRXZxQ29uc3QgJiYgbVNoYWRlclZlcnNpb24gPCAzMDApKQorICAgIGlmICgo
ZWxlbWVudFF1YWxpZmllci5xdWFsaWZpZXIgPT0gRXZxQXR0cmlidXRlKSB8fAorICAgICAgICAo
ZWxlbWVudFF1YWxpZmllci5xdWFsaWZpZXIgPT0gRXZxVmVydGV4SW4pIHx8CisgICAgICAgIChl
bGVtZW50UXVhbGlmaWVyLnF1YWxpZmllciA9PSBFdnFDb25zdCAmJiBtU2hhZGVyVmVyc2lvbiA8
IDMwMCkpCiAgICAgewogICAgICAgICBlcnJvcihsaW5lLCAiY2Fubm90IGRlY2xhcmUgYXJyYXlz
IG9mIHRoaXMgcXVhbGlmaWVyIiwKLSAgICAgICAgICAgICAgVFR5cGUodHlwZSkuZ2V0Q29tcGxl
dGVTdHJpbmcoKS5jX3N0cigpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAg
IFRUeXBlKGVsZW1lbnRRdWFsaWZpZXIpLmdldFF1YWxpZmllclN0cmluZygpKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotLy8KLS8vIFNlZSBpZiB0aGlzIHR5cGUgY2FuIGJlIGFuIGFycmF5LgotLy8KLS8v
IFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBhbiBlcnJvci4KLS8vCi1ib29sIFRQYXJzZUNvbnRl
eHQ6OmFycmF5VHlwZUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3QgVFB1
YmxpY1R5cGUgJnR5cGUpCisvLyBTZWUgaWYgdGhpcyBlbGVtZW50IHR5cGUgY2FuIGJlIGZvcm1l
ZCBpbnRvIGFuIGFycmF5LgorYm9vbCBUUGFyc2VDb250ZXh0OjpjaGVja0lzVmFsaWRUeXBlRm9y
QXJyYXkoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3QgVFB1YmxpY1R5cGUgJmVsZW1lbnRU
eXBlKQogewogICAgIC8vCiAgICAgLy8gQ2FuIHRoZSB0eXBlIGJlIGFuIGFycmF5PwogICAgIC8v
Ci0gICAgaWYgKHR5cGUuYXJyYXkpCisgICAgaWYgKGVsZW1lbnRUeXBlLmFycmF5KQogICAgIHsK
LSAgICAgICAgZXJyb3IobGluZSwgImNhbm5vdCBkZWNsYXJlIGFycmF5cyBvZiBhcnJheXMiLCBU
VHlwZSh0eXBlKS5nZXRDb21wbGV0ZVN0cmluZygpLmNfc3RyKCkpOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgZXJyb3IobGluZSwgImNhbm5vdCBkZWNsYXJlIGFycmF5cyBvZiBhcnJh
eXMiLAorICAgICAgICAgICAgICBUVHlwZShlbGVtZW50VHlwZSkuZ2V0Q29tcGxldGVTdHJpbmco
KS5jX3N0cigpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBJbiBFU1NM
MS4wMCBzaGFkZXJzLCBzdHJ1Y3RzIGNhbm5vdCBiZSB2YXJ5aW5nIChzZWN0aW9uIDQuMy41KS4g
VGhpcyBpcyBjaGVja2VkIGVsc2V3aGVyZS4KICAgICAvLyBJbiBFU1NMMy4wMCBzaGFkZXJzLCBz
dHJ1Y3QgaW5wdXRzL291dHB1dHMgYXJlIGFsbG93ZWQgYnV0IG5vdCBhcnJheXMgb2Ygc3RydWN0
cyAoc2VjdGlvbgogICAgIC8vIDQuMy40KS4KLSAgICBpZiAobVNoYWRlclZlcnNpb24gPj0gMzAw
ICYmIHR5cGUudHlwZSA9PSBFYnRTdHJ1Y3QgJiYgc2g6OklzVmFyeWluZyh0eXBlLnF1YWxpZmll
cikpCisgICAgaWYgKG1TaGFkZXJWZXJzaW9uID49IDMwMCAmJiBlbGVtZW50VHlwZS5nZXRCYXNp
Y1R5cGUoKSA9PSBFYnRTdHJ1Y3QgJiYKKyAgICAgICAgc2g6OklzVmFyeWluZyhlbGVtZW50VHlw
ZS5xdWFsaWZpZXIpKQogICAgIHsKICAgICAgICAgZXJyb3IobGluZSwgImNhbm5vdCBkZWNsYXJl
IGFycmF5cyBvZiBzdHJ1Y3RzIG9mIHRoaXMgcXVhbGlmaWVyIiwKLSAgICAgICAgICAgICAgVFR5
cGUodHlwZSkuZ2V0Q29tcGxldGVTdHJpbmcoKS5jX3N0cigpKTsKLSAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICAgIFRUeXBlKGVsZW1lbnRUeXBlKS5nZXRDb21wbGV0ZVN0cmluZygp
LmNfc3RyKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKKy8vIENoZWNrIGlmIHRoaXMgcXVhbGlmaWVkIGVsZW1lbnQgdHlwZSBjYW4gYmUg
Zm9ybWVkIGludG8gYW4gYXJyYXkuCitib29sIFRQYXJzZUNvbnRleHQ6OmNoZWNrSXNWYWxpZFR5
cGVBbmRRdWFsaWZpZXJGb3JBcnJheShjb25zdCBUU291cmNlTG9jICZpbmRleExvY2F0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVFB1YmxpY1R5cGUgJmVsZW1lbnRUeXBlKQoreworICAgIGlmIChjaGVja0lzVmFsaWRU
eXBlRm9yQXJyYXkoaW5kZXhMb2NhdGlvbiwgZWxlbWVudFR5cGUpKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGNoZWNrSXNWYWxpZFF1YWxpZmllckZvckFycmF5KGluZGV4TG9jYXRpb24sIGVsZW1l
bnRUeXBlKTsKKyAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi0vLwogLy8gRW5mb3JjZSBu
b24taW5pdGlhbGl6ZXIgdHlwZS9xdWFsaWZpZXIgcnVsZXMuCi0vLwotLy8gUmV0dXJucyB0cnVl
IGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KLS8vCi1ib29sIFRQYXJzZUNvbnRleHQ6Om5vbkluaXRF
cnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJmlkZW50aWZpZXIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRQdWJsaWNUeXBlICp0eXBlKQordm9pZCBUUGFyc2VD
b250ZXh0OjpjaGVja0NhbkJlRGVjbGFyZWRXaXRob3V0SW5pdGlhbGl6ZXIoY29uc3QgVFNvdXJj
ZUxvYyAmbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJmlkZW50aWZpZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUHVibGljVHlwZSAqdHlw
ZSkKIHsKICAgICBBU1NFUlQodHlwZSAhPSBudWxscHRyKTsKICAgICBpZiAodHlwZS0+cXVhbGlm
aWVyID09IEV2cUNvbnN0KQpAQCAtODg2LDE1ICs4NTgsMTIgQEAgYm9vbCBUUGFyc2VDb250ZXh0
Ojpub25Jbml0RXJyb3JDaGVjayhjbwogICAgICAgICB7CiAgICAgICAgICAgICBlcnJvcihsaW5l
LCAidmFyaWFibGVzIHdpdGggcXVhbGlmaWVyICdjb25zdCcgbXVzdCBiZSBpbml0aWFsaXplZCIs
IGlkZW50aWZpZXIuY19zdHIoKSk7CiAgICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodHlwZS0+aXNVbnNpemVkQXJyYXkoKSkK
ICAgICB7CiAgICAgICAgIGVycm9yKGxpbmUsICJpbXBsaWNpdGx5IHNpemVkIGFycmF5cyBuZWVk
IHRvIGJlIGluaXRpYWxpemVkIiwgaWRlbnRpZmllci5jX3N0cigpKTsKLSAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQotICAgIHJldHVybiBmYWxzZTsKIH0KIAogLy8gRG8gc29tZSBzaW1wbGUg
Y2hlY2tzIHRoYXQgYXJlIHNoYXJlZCBiZXR3ZWVuIGFsbCB2YXJpYWJsZSBkZWNsYXJhdGlvbnMs
CkBAIC05MDksMTggKzg3OCwxOCBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmRlY2xhcmVWYXJpYWJs
ZShjb25zCiB7CiAgICAgQVNTRVJUKCgqdmFyaWFibGUpID09IG51bGxwdHIpOwogCi0gICAgYm9v
bCBuZWVkc1Jlc2VydmVkRXJyb3JDaGVjayA9IHRydWU7CisgICAgYm9vbCBuZWVkc1Jlc2VydmVk
Q2hlY2sgPSB0cnVlOwogCiAgICAgLy8gZ2xfTGFzdEZyYWdEYXRhIG1heSBiZSByZWRlY2xhcmVk
IHdpdGggYSBuZXcgcHJlY2lzaW9uIHF1YWxpZmllcgogICAgIGlmICh0eXBlLmlzQXJyYXkoKSAm
JiBpZGVudGlmaWVyLmNvbXBhcmUoMCwgMTUsICJnbF9MYXN0RnJhZ0RhdGEiKSA9PSAwKQogICAg
IHsKICAgICAgICAgY29uc3QgVFZhcmlhYmxlICptYXhEcmF3QnVmZmVycyA9IHN0YXRpY19jYXN0
PGNvbnN0IFRWYXJpYWJsZSAqPigKICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmZpbmRCdWlsdElu
KCJnbF9NYXhEcmF3QnVmZmVycyIsIG1TaGFkZXJWZXJzaW9uKSk7Ci0gICAgICAgIGlmICh0eXBl
LmdldEFycmF5U2l6ZSgpID09IG1heERyYXdCdWZmZXJzLT5nZXRDb25zdFBvaW50ZXIoKS0+Z2V0
SUNvbnN0KCkpCisgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KHR5cGUuZ2V0QXJyYXlTaXpl
KCkpID09IG1heERyYXdCdWZmZXJzLT5nZXRDb25zdFBvaW50ZXIoKS0+Z2V0SUNvbnN0KCkpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmIChUU3ltYm9sICpidWlsdEluU3ltYm9sID0gc3ltYm9s
VGFibGUuZmluZEJ1aWx0SW4oaWRlbnRpZmllciwgbVNoYWRlclZlcnNpb24pKQogICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIG5lZWRzUmVzZXJ2ZWRFcnJvckNoZWNrID0gZXh0ZW5zaW9u
RXJyb3JDaGVjayhsaW5lLCBidWlsdEluU3ltYm9sLT5nZXRFeHRlbnNpb24oKSk7CisgICAgICAg
ICAgICAgICAgbmVlZHNSZXNlcnZlZENoZWNrID0gIWNoZWNrQ2FuVXNlRXh0ZW5zaW9uKGxpbmUs
IGJ1aWx0SW5TeW1ib2wtPmdldEV4dGVuc2lvbigpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgICAgICBlbHNlCkBAIC05MzEsNyArOTAwLDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpk
ZWNsYXJlVmFyaWFibGUoY29ucwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKG5lZWRzUmVz
ZXJ2ZWRFcnJvckNoZWNrICYmIHJlc2VydmVkRXJyb3JDaGVjayhsaW5lLCBpZGVudGlmaWVyKSkK
KyAgICBpZiAobmVlZHNSZXNlcnZlZENoZWNrICYmICFjaGVja0lzTm90UmVzZXJ2ZWQobGluZSwg
aWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICgqdmFyaWFibGUpID0g
bmV3IFRWYXJpYWJsZSgmaWRlbnRpZmllciwgdHlwZSk7CkBAIC05NDIsNjUgKzkxMSw1OSBAQCBi
b29sIFRQYXJzZUNvbnRleHQ6OmRlY2xhcmVWYXJpYWJsZShjb25zCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKLSAgICBpZiAodm9pZEVycm9yQ2hlY2sobGluZSwgaWRlbnRpZmllciwg
dHlwZS5nZXRCYXNpY1R5cGUoKSkpCisgICAgaWYgKCFjaGVja0lzTm9uVm9pZChsaW5lLCBpZGVu
dGlmaWVyLCB0eXBlLmdldEJhc2ljVHlwZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6cGFyYW1FcnJvckNoZWNr
KGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRRdWFsaWZpZXIgcGFyYW1RdWFsaWZpZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUVHlwZSAqdHlwZSkKK3ZvaWQgVFBhcnNlQ29udGV4dDo6Y2hlY2tJc1Bh
cmFtZXRlclF1YWxpZmllclZhbGlkKAorICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCisgICAg
Y29uc3QgVFR5cGVRdWFsaWZpZXJCdWlsZGVyICZ0eXBlUXVhbGlmaWVyQnVpbGRlciwKKyAgICBU
VHlwZSAqdHlwZSkKIHsKLSAgICBpZiAocXVhbGlmaWVyICE9IEV2cUNvbnN0ICYmIHF1YWxpZmll
ciAhPSBFdnFUZW1wb3JhcnkpCi0gICAgewotICAgICAgICBlcnJvcihsaW5lLCAicXVhbGlmaWVy
IG5vdCBhbGxvd2VkIG9uIGZ1bmN0aW9uIHBhcmFtZXRlciIsIGdldFF1YWxpZmllclN0cmluZyhx
dWFsaWZpZXIpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmIChxdWFsaWZp
ZXIgPT0gRXZxQ29uc3QgJiYgcGFyYW1RdWFsaWZpZXIgIT0gRXZxSW4pCisgICAgVFR5cGVRdWFs
aWZpZXIgdHlwZVF1YWxpZmllciA9IHR5cGVRdWFsaWZpZXJCdWlsZGVyLmdldFBhcmFtZXRlclR5
cGVRdWFsaWZpZXIoJm1EaWFnbm9zdGljcyk7CisKKyAgICBpZiAodHlwZVF1YWxpZmllci5xdWFs
aWZpZXIgPT0gRXZxT3V0IHx8IHR5cGVRdWFsaWZpZXIucXVhbGlmaWVyID09IEV2cUluT3V0KQog
ICAgIHsKLSAgICAgICAgZXJyb3IobGluZSwgInF1YWxpZmllciBub3QgYWxsb3dlZCB3aXRoICIs
IGdldFF1YWxpZmllclN0cmluZyhxdWFsaWZpZXIpLAotICAgICAgICAgICAgICBnZXRRdWFsaWZp
ZXJTdHJpbmcocGFyYW1RdWFsaWZpZXIpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IGNoZWNrT3V0UGFyYW1ldGVySXNOb3RTYW1wbGVyKGxpbmUsIHR5cGVRdWFsaWZpZXIucXVhbGlm
aWVyLCAqdHlwZSk7CiAgICAgfQogCi0gICAgaWYgKHF1YWxpZmllciA9PSBFdnFDb25zdCkKLSAg
ICAgICAgdHlwZS0+c2V0UXVhbGlmaWVyKEV2cUNvbnN0UmVhZE9ubHkpOwotICAgIGVsc2UKLSAg
ICAgICAgdHlwZS0+c2V0UXVhbGlmaWVyKHBhcmFtUXVhbGlmaWVyKTsKKyAgICB0eXBlLT5zZXRR
dWFsaWZpZXIodHlwZVF1YWxpZmllci5xdWFsaWZpZXIpOwogCi0gICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmICh0eXBlUXVhbGlmaWVyLnByZWNpc2lvbiAhPSBFYnBVbmRlZmluZWQpCisgICAgewor
ICAgICAgICB0eXBlLT5zZXRQcmVjaXNpb24odHlwZVF1YWxpZmllci5wcmVjaXNpb24pOworICAg
IH0KIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0OjpleHRlbnNpb25FcnJvckNoZWNrKGNvbnN0IFRT
b3VyY2VMb2MgJmxpbmUsIGNvbnN0IFRTdHJpbmcgJmV4dGVuc2lvbikKK2Jvb2wgVFBhcnNlQ29u
dGV4dDo6Y2hlY2tDYW5Vc2VFeHRlbnNpb24oY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3Qg
VFN0cmluZyAmZXh0ZW5zaW9uKQogewogICAgIGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciAmZXh0
QmVoYXZpb3IgICA9IGV4dGVuc2lvbkJlaGF2aW9yKCk7CiAgICAgVEV4dGVuc2lvbkJlaGF2aW9y
Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gZXh0QmVoYXZpb3IuZmluZChleHRlbnNpb24uY19zdHIo
KSk7CiAgICAgaWYgKGl0ZXIgPT0gZXh0QmVoYXZpb3IuZW5kKCkpCiAgICAgewogICAgICAgICBl
cnJvcihsaW5lLCAiZXh0ZW5zaW9uIiwgZXh0ZW5zaW9uLmNfc3RyKCksICJpcyBub3Qgc3VwcG9y
dGVkIik7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIC8vIEluIEdMU0wgRVMsIGFuIGV4dGVuc2lvbidzIGRlZmF1bHQgYmVoYXZpb3IgaXMg
ImRpc2FibGUiLgogICAgIGlmIChpdGVyLT5zZWNvbmQgPT0gRUJoRGlzYWJsZSB8fCBpdGVyLT5z
ZWNvbmQgPT0gRUJoVW5kZWZpbmVkKQogICAgIHsKICAgICAgICAgZXJyb3IobGluZSwgImV4dGVu
c2lvbiIsIGV4dGVuc2lvbi5jX3N0cigpLCAiaXMgZGlzYWJsZWQiKTsKLSAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaWYgKGl0ZXItPnNlY29u
ZCA9PSBFQmhXYXJuKQogICAgIHsKICAgICAgICAgd2FybmluZyhsaW5lLCAiZXh0ZW5zaW9uIiwg
ZXh0ZW5zaW9uLmNfc3RyKCksICJpcyBiZWluZyB1c2VkIik7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiB0cnVlOwogfQogCiAvLyBUaGVzZSBjaGVja3MgYXJlIGNvbW1vbiBmb3IgYWxsIGRl
Y2xhcmF0aW9ucyBzdGFydGluZyBhIGRlY2xhcmF0b3IgbGlzdCwgYW5kIGRlY2xhcmF0b3JzIHRo
YXQKIC8vIGZvbGxvdyBhbiBlbXB0eSBkZWNsYXJhdGlvbi4KLS8vCi1ib29sIFRQYXJzZUNvbnRl
eHQ6OnNpbmdsZURlY2xhcmF0aW9uRXJyb3JDaGVjayhjb25zdCBUUHVibGljVHlwZSAmcHVibGlj
VHlwZSwKK3ZvaWQgVFBhcnNlQ29udGV4dDo6c2luZ2xlRGVjbGFyYXRpb25FcnJvckNoZWNrKGNv
bnN0IFRQdWJsaWNUeXBlICZwdWJsaWNUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaWRlbnRpZmllckxvY2F0aW9u
KQogewogICAgIHN3aXRjaCAocHVibGljVHlwZS5xdWFsaWZpZXIpCkBAIC0xMDEwLDExICs5NzMs
MTIgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpzaW5nbGVEZWNsYXJhdGlvbkVycgogICAgICAgICBj
YXNlIEV2cUF0dHJpYnV0ZToKICAgICAgICAgY2FzZSBFdnFWZXJ0ZXhJbjoKICAgICAgICAgY2Fz
ZSBFdnFGcmFnbWVudE91dDoKLSAgICAgICAgICAgIGlmIChwdWJsaWNUeXBlLnR5cGUgPT0gRWJ0
U3RydWN0KQorICAgICAgICBjYXNlIEV2cUNvbXB1dGVJbjoKKyAgICAgICAgICAgIGlmIChwdWJs
aWNUeXBlLmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkKICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICBlcnJvcihpZGVudGlmaWVyTG9jYXRpb24sICJjYW5ub3QgYmUgdXNlZCB3aXRo
IGEgc3RydWN0dXJlIiwKICAgICAgICAgICAgICAgICAgICAgICBnZXRRdWFsaWZpZXJTdHJpbmco
cHVibGljVHlwZS5xdWFsaWZpZXIpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoK
QEAgLTEwMjIsOSArOTg2LDEwIEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6c2luZ2xlRGVjbGFyYXRp
b25FcnIKICAgICB9CiAKICAgICBpZiAocHVibGljVHlwZS5xdWFsaWZpZXIgIT0gRXZxVW5pZm9y
bSAmJgotICAgICAgICBzYW1wbGVyRXJyb3JDaGVjayhpZGVudGlmaWVyTG9jYXRpb24sIHB1Ymxp
Y1R5cGUsICJzYW1wbGVycyBtdXN0IGJlIHVuaWZvcm0iKSkKKyAgICAgICAgIWNoZWNrSXNOb3RT
YW1wbGVyKGlkZW50aWZpZXJMb2NhdGlvbiwgcHVibGljVHlwZS50eXBlU3BlY2lmaWVyTm9uQXJy
YXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAic2FtcGxlcnMgbXVzdCBiZSB1bmlmb3Jt
IikpCiAgICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIC8vIGNoZWNrIGZvciBsYXlvdXQgcXVhbGlmaWVyIGlzc3VlcwpAQCAtMTAzNSw3ICsx
MDAwLDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpzaW5nbGVEZWNsYXJhdGlvbkVycgogICAgICAg
ICBlcnJvcihpZGVudGlmaWVyTG9jYXRpb24sICJsYXlvdXQgcXVhbGlmaWVyIiwKICAgICAgICAg
ICAgICAgZ2V0TWF0cml4UGFja2luZ1N0cmluZyhsYXlvdXRRdWFsaWZpZXIubWF0cml4UGFja2lu
ZyksCiAgICAgICAgICAgICAgICJvbmx5IHZhbGlkIGZvciBpbnRlcmZhY2UgYmxvY2tzIik7Ci0g
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGxh
eW91dFF1YWxpZmllci5ibG9ja1N0b3JhZ2UgIT0gRWJzVW5zcGVjaWZpZWQpCkBAIC0xMDQzLDU5
ICsxMDA4LDgzIEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6c2luZ2xlRGVjbGFyYXRpb25FcnIKICAg
ICAgICAgZXJyb3IoaWRlbnRpZmllckxvY2F0aW9uLCAibGF5b3V0IHF1YWxpZmllciIsCiAgICAg
ICAgICAgICAgIGdldEJsb2NrU3RvcmFnZVN0cmluZyhsYXlvdXRRdWFsaWZpZXIuYmxvY2tTdG9y
YWdlKSwKICAgICAgICAgICAgICAgIm9ubHkgdmFsaWQgZm9yIGludGVyZmFjZSBibG9ja3MiKTsK
LSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAo
cHVibGljVHlwZS5xdWFsaWZpZXIgIT0gRXZxVmVydGV4SW4gJiYgcHVibGljVHlwZS5xdWFsaWZp
ZXIgIT0gRXZxRnJhZ21lbnRPdXQgJiYKLSAgICAgICAgbGF5b3V0TG9jYXRpb25FcnJvckNoZWNr
KGlkZW50aWZpZXJMb2NhdGlvbiwgcHVibGljVHlwZS5sYXlvdXRRdWFsaWZpZXIpKQorICAgIGlm
IChwdWJsaWNUeXBlLnF1YWxpZmllciAhPSBFdnFWZXJ0ZXhJbiAmJiBwdWJsaWNUeXBlLnF1YWxp
ZmllciAhPSBFdnFGcmFnbWVudE91dCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICBjaGVja0xvY2F0aW9uSXNOb3RTcGVjaWZpZWQoaWRlbnRpZmllckxvY2F0aW9uLCBwdWJs
aWNUeXBlLmxheW91dFF1YWxpZmllcik7CiAgICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIFRQYXJzZUNvbnRleHQ6OmxheW91dExvY2F0aW9uRXJyb3JDaGVjayhjb25zdCBUU291
cmNlTG9jICZsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRMYXlvdXRRdWFsaWZpZXIgJmxheW91dFF1YWxpZmllcikKK3ZvaWQgVFBh
cnNlQ29udGV4dDo6Y2hlY2tMYXlvdXRRdWFsaWZpZXJTdXBwb3J0ZWQoY29uc3QgVFNvdXJjZUxv
YyAmbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRTdHJpbmcgJmxheW91dFF1YWxpZmllck5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2ZXJzaW9uUmVxdWlyZWQp
CiB7Ci0gICAgaWYgKGxheW91dFF1YWxpZmllci5sb2NhdGlvbiAhPSAtMSkKKworICAgIGlmICht
U2hhZGVyVmVyc2lvbiA8IHZlcnNpb25SZXF1aXJlZCkKICAgICB7Ci0gICAgICAgIGVycm9yKGxv
Y2F0aW9uLCAiaW52YWxpZCBsYXlvdXQgcXVhbGlmaWVyOiIsICJsb2NhdGlvbiIsCi0gICAgICAg
ICAgICAgICJvbmx5IHZhbGlkIG9uIHByb2dyYW0gaW5wdXRzIGFuZCBvdXRwdXRzIik7Ci0gICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICBlcnJvcihsb2NhdGlvbiwgImludmFsaWQgbGF5b3V0
IHF1YWxpZmllcjoiLCBsYXlvdXRRdWFsaWZpZXJOYW1lLmNfc3RyKCksICJub3Qgc3VwcG9ydGVk
Iik7CiAgICAgfQorfQogCi0gICAgcmV0dXJuIGZhbHNlOworYm9vbCBUUGFyc2VDb250ZXh0Ojpj
aGVja1dvcmtHcm91cFNpemVJc05vdFNwZWNpZmllZChjb25zdCBUU291cmNlTG9jICZsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVExheW91dFF1YWxpZmllciAmbGF5b3V0UXVhbGlmaWVyKQoreworICAgIGNvbnN0IHNo
OjpXb3JrR3JvdXBTaXplICZsb2NhbFNpemUgPSBsYXlvdXRRdWFsaWZpZXIubG9jYWxTaXplOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwdTsgaSA8IGxvY2FsU2l6ZS5zaXplKCk7ICsraSkKKyAgICB7
CisgICAgICAgIGlmIChsb2NhbFNpemVbaV0gIT0gLTEpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGVycm9yKGxvY2F0aW9uLCAiaW52YWxpZCBsYXlvdXQgcXVhbGlmaWVyOiIsIGdldFdvcmtHcm91
cFNpemVTdHJpbmcoaSksCisgICAgICAgICAgICAgICAgICAib25seSB2YWxpZCB3aGVuIHVzZWQg
d2l0aCAnaW4nIGluIGEgY29tcHV0ZSBzaGFkZXIgZ2xvYmFsIGxheW91dCBkZWNsYXJhdGlvbiIp
OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6ZnVuY3Rpb25DYWxsTFZhbHVlRXJy
b3JDaGVjayhjb25zdCBURnVuY3Rpb24gKmZuQ2FuZGlkYXRlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3JlZ2F0
ZSkKK3ZvaWQgVFBhcnNlQ29udGV4dDo6ZnVuY3Rpb25DYWxsTFZhbHVlRXJyb3JDaGVjayhjb25z
dCBURnVuY3Rpb24gKmZuQ2FuZGlkYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmZuQ2FsbCkKIHsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGZuQ2FuZGlkYXRlLT5nZXRQYXJhbUNvdW50KCk7ICsraSkKICAg
ICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGZuQ2FuZGlkYXRlLT5nZXRQYXJhbShpKS50
eXBlLT5nZXRRdWFsaWZpZXIoKTsKICAgICAgICAgaWYgKHF1YWwgPT0gRXZxT3V0IHx8IHF1YWwg
PT0gRXZxSW5PdXQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqbm9kZSA9
ICgqKGFnZ3JlZ2F0ZS0+Z2V0U2VxdWVuY2UoKSkpW2ldLT5nZXRBc1R5cGVkKCk7Ci0gICAgICAg
ICAgICBpZiAobFZhbHVlRXJyb3JDaGVjayhub2RlLT5nZXRMaW5lKCksICJhc3NpZ24iLCBub2Rl
KSkKKyAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqYXJndW1lbnQgPSAoKihmbkNhbGwtPmdldFNl
cXVlbmNlKCkpKVtpXS0+Z2V0QXNUeXBlZCgpOworICAgICAgICAgICAgaWYgKCFjaGVja0NhbkJl
TFZhbHVlKGFyZ3VtZW50LT5nZXRMaW5lKCksICJhc3NpZ24iLCBhcmd1bWVudCkpCiAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgZXJyb3Iobm9kZS0+Z2V0TGluZSgpLAorICAgICAgICAg
ICAgICAgIGVycm9yKGFyZ3VtZW50LT5nZXRMaW5lKCksCiAgICAgICAgICAgICAgICAgICAgICAg
IkNvbnN0YW50IHZhbHVlIGNhbm5vdCBiZSBwYXNzZWQgZm9yICdvdXQnIG9yICdpbm91dCcgcGFy
YW1ldGVycy4iLCAiRXJyb3IiKTsKLSAgICAgICAgICAgICAgICByZWNvdmVyKCk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBUUGFy
c2VDb250ZXh0OjplczNJbnZhcmlhbnRFcnJvckNoZWNrKGNvbnN0IFRRdWFsaWZpZXIgcXVhbGlm
aWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRT
b3VyY2VMb2MgJmludmFyaWFudExvY2F0aW9uKQordm9pZCBUUGFyc2VDb250ZXh0OjpjaGVja0lu
dmFyaWFudFZhcmlhYmxlUXVhbGlmaWVyKGJvb2wgaW52YXJpYW50LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRRdWFsaWZpZXIgcXVh
bGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRTb3VyY2VMb2MgJmludmFyaWFudExvY2F0aW9uKQogewotICAgIGlmICghc2g6
OklzVmFyeWluZ091dChxdWFsaWZpZXIpICYmIHF1YWxpZmllciAhPSBFdnFGcmFnbWVudE91dCkK
KyAgICBpZiAoIWludmFyaWFudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1TaGFkZXJW
ZXJzaW9uIDwgMzAwKQogICAgIHsKLSAgICAgICAgZXJyb3IoaW52YXJpYW50TG9jYXRpb24sICJP
bmx5IG91dCB2YXJpYWJsZXMgY2FuIGJlIGludmFyaWFudC4iLCAiaW52YXJpYW50Iik7Ci0gICAg
ICAgIHJlY292ZXIoKTsKKyAgICAgICAgLy8gaW5wdXQgdmFyaWFibGVzIGluIHRoZSBmcmFnbWVu
dCBzaGFkZXIgY2FuIGJlIGFsc28gcXVhbGlmaWVkIGFzIGludmFyaWFudAorICAgICAgICBpZiAo
IXNoOjpDYW5CZUludmFyaWFudEVTU0wxKHF1YWxpZmllcikpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGVycm9yKGludmFyaWFudExvY2F0aW9uLCAiQ2Fubm90IGJlIHF1YWxpZmllZCBhcyBpbnZh
cmlhbnQuIiwgImludmFyaWFudCIpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7
CisgICAgICAgIGlmICghc2g6OkNhbkJlSW52YXJpYW50RVNTTDNPckdyZWF0ZXIocXVhbGlmaWVy
KSkKKyAgICAgICAgeworICAgICAgICAgICAgZXJyb3IoaW52YXJpYW50TG9jYXRpb24sICJDYW5u
b3QgYmUgcXVhbGlmaWVkIGFzIGludmFyaWFudC4iLCAiaW52YXJpYW50Iik7CisgICAgICAgIH0K
ICAgICB9CiB9CiAKQEAgLTExMzIsNiArMTEyMSwyMyBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6Omhh
bmRsZVByYWdtYURpcmVjdGl2CiAgICAgbURpcmVjdGl2ZUhhbmRsZXIuaGFuZGxlUHJhZ21hKHNy
Y0xvYywgbmFtZSwgdmFsdWUsIHN0ZGdsKTsKIH0KIAorc2g6OldvcmtHcm91cFNpemUgVFBhcnNl
Q29udGV4dDo6Z2V0Q29tcHV0ZVNoYWRlckxvY2FsU2l6ZSgpIGNvbnN0Cit7CisgICAgc2g6Oldv
cmtHcm91cFNpemUgcmVzdWx0OworICAgIGZvciAoc2l6ZV90IGkgPSAwdTsgaSA8IHJlc3VsdC5z
aXplKCk7ICsraSkKKyAgICB7CisgICAgICAgIGlmIChtQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZURl
Y2xhcmVkICYmIG1Db21wdXRlU2hhZGVyTG9jYWxTaXplW2ldID09IC0xKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXN1bHRbaV0gPSAxOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAg
ICAgeworICAgICAgICAgICAgcmVzdWx0W2ldID0gbUNvbXB1dGVTaGFkZXJMb2NhbFNpemVbaV07
CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCiAvLwogLy8gTm9uLUVycm9ycy4KQEAgLTExNDcsMjIgKzExNTMsMTkgQEAg
Y29uc3QgVFZhcmlhYmxlICpUUGFyc2VDb250ZXh0OjpnZXROYW1lZAogICAgIGlmICghc3ltYm9s
KQogICAgIHsKICAgICAgICAgZXJyb3IobG9jYXRpb24sICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIi
LCBuYW1lLT5jX3N0cigpKTsKLSAgICAgICAgcmVjb3ZlcigpOwogICAgIH0KICAgICBlbHNlIGlm
ICghc3ltYm9sLT5pc1ZhcmlhYmxlKCkpCiAgICAgewogICAgICAgICBlcnJvcihsb2NhdGlvbiwg
InZhcmlhYmxlIGV4cGVjdGVkIiwgbmFtZS0+Y19zdHIoKSk7Ci0gICAgICAgIHJlY292ZXIoKTsK
ICAgICB9CiAgICAgZWxzZQogICAgIHsKICAgICAgICAgdmFyaWFibGUgPSBzdGF0aWNfY2FzdDxj
b25zdCBUVmFyaWFibGUgKj4oc3ltYm9sKTsKIAogICAgICAgICBpZiAoc3ltYm9sVGFibGUuZmlu
ZEJ1aWx0SW4odmFyaWFibGUtPmdldE5hbWUoKSwgbVNoYWRlclZlcnNpb24pICYmCi0gICAgICAg
ICAgICAhdmFyaWFibGUtPmdldEV4dGVuc2lvbigpLmVtcHR5KCkgJiYKLSAgICAgICAgICAgIGV4
dGVuc2lvbkVycm9yQ2hlY2sobG9jYXRpb24sIHZhcmlhYmxlLT5nZXRFeHRlbnNpb24oKSkpCisg
ICAgICAgICAgICAhdmFyaWFibGUtPmdldEV4dGVuc2lvbigpLmVtcHR5KCkpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJlY292ZXIoKTsKKyAgICAgICAgICAgIGNoZWNrQ2FuVXNlRXh0ZW5zaW9u
KGxvY2F0aW9uLCB2YXJpYWJsZS0+Z2V0RXh0ZW5zaW9uKCkpOwogICAgICAgICB9CiAKICAgICAg
ICAgLy8gUmVqZWN0IHNoYWRlcnMgdXNpbmcgYm90aCBnbF9GcmFnRGF0YSBhbmQgZ2xfRnJhZ0Nv
bG9yCkBAIC0xMTk0LDcgKzExOTcsMTUgQEAgY29uc3QgVFZhcmlhYmxlICpUUGFyc2VDb250ZXh0
OjpnZXROYW1lZAogICAgICAgICAgICAgICAgICAgICAiIGFuZCAoZ2xfRnJhZ0NvbG9yLCBnbF9T
ZWNvbmRhcnlGcmFnQ29sb3JFWFQpIjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVycm9y
KGxvY2F0aW9uLCBlcnJvck1lc3NhZ2UsIG5hbWUtPmNfc3RyKCkpOwotICAgICAgICAgICAgcmVj
b3ZlcigpOworICAgICAgICB9CisKKyAgICAgICAgLy8gR0xTTCBFUyAzLjEgUmV2aXNpb24gNCwg
Ny4xLjMgQ29tcHV0ZSBTaGFkZXIgU3BlY2lhbCBWYXJpYWJsZXMKKyAgICAgICAgaWYgKGdldFNo
YWRlclR5cGUoKSA9PSBHTF9DT01QVVRFX1NIQURFUiAmJiAhbUNvbXB1dGVTaGFkZXJMb2NhbFNp
emVEZWNsYXJlZCAmJgorICAgICAgICAgICAgcXVhbGlmaWVyID09IEV2cVdvcmtHcm91cFNpemUp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGVycm9yKGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgIkl0IGlzIGFuIGVycm9yIHRvIHVzZSBnbF9Xb3JrR3JvdXBTaXplIGJlZm9yZSBkZWNsYXJp
bmcgdGhlIGxvY2FsIGdyb3VwIHNpemUiLAorICAgICAgICAgICAgICAgICAgImdsX1dvcmtHcm91
cFNpemUiKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTM3Niw2NiArMTM4Nyw4MiBAQCBib29s
IFRQYXJzZUNvbnRleHQ6OmV4ZWN1dGVJbml0aWFsaXplcihjCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1UUHVibGljVHlwZSBUUGFyc2VDb250ZXh0OjphZGRGdWxseVNwZWNpZmllZFR5cGUoVFF1
YWxpZmllciBxdWFsaWZpZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBpbnZhcmlhbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVExheW91dFF1YWxpZmllciBsYXlvdXRRdWFsaWZpZXIsCitU
UHVibGljVHlwZSBUUGFyc2VDb250ZXh0OjphZGRGdWxseVNwZWNpZmllZFR5cGUoY29uc3QgVFR5
cGVRdWFsaWZpZXJCdWlsZGVyICZ0eXBlUXVhbGlmaWVyQnVpbGRlciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUUHVibGljVHlwZSAmdHlw
ZVNwZWNpZmllcikKIHsKKyAgICBUVHlwZVF1YWxpZmllciB0eXBlUXVhbGlmaWVyID0gdHlwZVF1
YWxpZmllckJ1aWxkZXIuZ2V0VmFyaWFibGVUeXBlUXVhbGlmaWVyKCZtRGlhZ25vc3RpY3MpOwor
CiAgICAgVFB1YmxpY1R5cGUgcmV0dXJuVHlwZSAgICAgPSB0eXBlU3BlY2lmaWVyOwotICAgIHJl
dHVyblR5cGUucXVhbGlmaWVyICAgICAgID0gcXVhbGlmaWVyOwotICAgIHJldHVyblR5cGUuaW52
YXJpYW50ICAgICAgID0gaW52YXJpYW50OwotICAgIHJldHVyblR5cGUubGF5b3V0UXVhbGlmaWVy
ID0gbGF5b3V0UXVhbGlmaWVyOworICAgIHJldHVyblR5cGUucXVhbGlmaWVyICAgICAgID0gdHlw
ZVF1YWxpZmllci5xdWFsaWZpZXI7CisgICAgcmV0dXJuVHlwZS5pbnZhcmlhbnQgICAgICAgPSB0
eXBlUXVhbGlmaWVyLmludmFyaWFudDsKKyAgICByZXR1cm5UeXBlLmxheW91dFF1YWxpZmllciA9
IHR5cGVRdWFsaWZpZXIubGF5b3V0UXVhbGlmaWVyOworICAgIHJldHVyblR5cGUucHJlY2lzaW9u
ICAgICAgID0gdHlwZVNwZWNpZmllci5wcmVjaXNpb247CisKKyAgICBpZiAodHlwZVF1YWxpZmll
ci5wcmVjaXNpb24gIT0gRWJwVW5kZWZpbmVkKQorICAgIHsKKyAgICAgICAgcmV0dXJuVHlwZS5w
cmVjaXNpb24gPSB0eXBlUXVhbGlmaWVyLnByZWNpc2lvbjsKKyAgICB9CisKKyAgICBjaGVja1By
ZWNpc2lvblNwZWNpZmllZCh0eXBlU3BlY2lmaWVyLmdldExpbmUoKSwgcmV0dXJuVHlwZS5wcmVj
aXNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZVNwZWNpZmllci5nZXRCYXNp
Y1R5cGUoKSk7CisKKyAgICBjaGVja0ludmFyaWFudFZhcmlhYmxlUXVhbGlmaWVyKHJldHVyblR5
cGUuaW52YXJpYW50LCByZXR1cm5UeXBlLnF1YWxpZmllciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHR5cGVTcGVjaWZpZXIuZ2V0TGluZSgpKTsKKworICAgIGNoZWNrV29y
a0dyb3VwU2l6ZUlzTm90U3BlY2lmaWVkKHR5cGVTcGVjaWZpZXIuZ2V0TGluZSgpLCByZXR1cm5U
eXBlLmxheW91dFF1YWxpZmllcik7CiAKICAgICBpZiAobVNoYWRlclZlcnNpb24gPCAzMDApCiAg
ICAgewogICAgICAgICBpZiAodHlwZVNwZWNpZmllci5hcnJheSkKICAgICAgICAgewotICAgICAg
ICAgICAgZXJyb3IodHlwZVNwZWNpZmllci5saW5lLCAibm90IHN1cHBvcnRlZCIsICJmaXJzdC1j
bGFzcyBhcnJheSIpOwotICAgICAgICAgICAgcmVjb3ZlcigpOworICAgICAgICAgICAgZXJyb3Io
dHlwZVNwZWNpZmllci5nZXRMaW5lKCksICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFy
cmF5Iik7CiAgICAgICAgICAgICByZXR1cm5UeXBlLmNsZWFyQXJyYXluZXNzKCk7CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAocXVhbGlmaWVyID09IEV2cUF0dHJpYnV0ZSAmJgotICAgICAgICAg
ICAgKHR5cGVTcGVjaWZpZXIudHlwZSA9PSBFYnRCb29sIHx8IHR5cGVTcGVjaWZpZXIudHlwZSA9
PSBFYnRJbnQpKQorICAgICAgICBpZiAocmV0dXJuVHlwZS5xdWFsaWZpZXIgPT0gRXZxQXR0cmli
dXRlICYmCisgICAgICAgICAgICAodHlwZVNwZWNpZmllci5nZXRCYXNpY1R5cGUoKSA9PSBFYnRC
b29sIHx8IHR5cGVTcGVjaWZpZXIuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0SW50KSkKICAgICAgICAg
ewotICAgICAgICAgICAgZXJyb3IodHlwZVNwZWNpZmllci5saW5lLCAiY2Fubm90IGJlIGJvb2wg
b3IgaW50IiwgZ2V0UXVhbGlmaWVyU3RyaW5nKHF1YWxpZmllcikpOwotICAgICAgICAgICAgcmVj
b3ZlcigpOworICAgICAgICAgICAgZXJyb3IodHlwZVNwZWNpZmllci5nZXRMaW5lKCksICJjYW5u
b3QgYmUgYm9vbCBvciBpbnQiLAorICAgICAgICAgICAgICAgICAgZ2V0UXVhbGlmaWVyU3RyaW5n
KHJldHVyblR5cGUucXVhbGlmaWVyKSk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoKHF1YWxp
ZmllciA9PSBFdnFWYXJ5aW5nSW4gfHwgcXVhbGlmaWVyID09IEV2cVZhcnlpbmdPdXQpICYmCi0g
ICAgICAgICAgICAodHlwZVNwZWNpZmllci50eXBlID09IEVidEJvb2wgfHwgdHlwZVNwZWNpZmll
ci50eXBlID09IEVidEludCkpCisgICAgICAgIGlmICgocmV0dXJuVHlwZS5xdWFsaWZpZXIgPT0g
RXZxVmFyeWluZ0luIHx8IHJldHVyblR5cGUucXVhbGlmaWVyID09IEV2cVZhcnlpbmdPdXQpICYm
CisgICAgICAgICAgICAodHlwZVNwZWNpZmllci5nZXRCYXNpY1R5cGUoKSA9PSBFYnRCb29sIHx8
IHR5cGVTcGVjaWZpZXIuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0SW50KSkKICAgICAgICAgewotICAg
ICAgICAgICAgZXJyb3IodHlwZVNwZWNpZmllci5saW5lLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50
IiwgZ2V0UXVhbGlmaWVyU3RyaW5nKHF1YWxpZmllcikpOwotICAgICAgICAgICAgcmVjb3Zlcigp
OworICAgICAgICAgICAgZXJyb3IodHlwZVNwZWNpZmllci5nZXRMaW5lKCksICJjYW5ub3QgYmUg
Ym9vbCBvciBpbnQiLAorICAgICAgICAgICAgICAgICAgZ2V0UXVhbGlmaWVyU3RyaW5nKHJldHVy
blR5cGUucXVhbGlmaWVyKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAg
ICAgICAgaWYgKCFsYXlvdXRRdWFsaWZpZXIuaXNFbXB0eSgpKQorICAgICAgICBpZiAoIXJldHVy
blR5cGUubGF5b3V0UXVhbGlmaWVyLmlzRW1wdHkoKSkKICAgICAgICAgewotICAgICAgICAgICAg
aWYgKGdsb2JhbEVycm9yQ2hlY2sodHlwZVNwZWNpZmllci5saW5lLCBzeW1ib2xUYWJsZS5hdEds
b2JhbExldmVsKCksICJsYXlvdXQiKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBy
ZWNvdmVyKCk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBjaGVja0lzQXRHbG9iYWxMZXZl
bCh0eXBlU3BlY2lmaWVyLmdldExpbmUoKSwgImxheW91dCIpOworICAgICAgICB9CisgICAgICAg
IGlmIChzaDo6SXNWYXJ5aW5nKHJldHVyblR5cGUucXVhbGlmaWVyKSB8fCByZXR1cm5UeXBlLnF1
YWxpZmllciA9PSBFdnFWZXJ0ZXhJbiB8fAorICAgICAgICAgICAgcmV0dXJuVHlwZS5xdWFsaWZp
ZXIgPT0gRXZxRnJhZ21lbnRPdXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNoZWNrSW5wdXRP
dXRwdXRUeXBlSXNWYWxpZEVTMyhyZXR1cm5UeXBlLnF1YWxpZmllciwgdHlwZVNwZWNpZmllciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlU3BlY2lmaWVy
LmdldExpbmUoKSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHNoOjpJc1ZhcnlpbmcocXVhbGlm
aWVyKSB8fCBxdWFsaWZpZXIgPT0gRXZxVmVydGV4SW4gfHwgcXVhbGlmaWVyID09IEV2cUZyYWdt
ZW50T3V0KQorICAgICAgICBpZiAocmV0dXJuVHlwZS5xdWFsaWZpZXIgPT0gRXZxQ29tcHV0ZUlu
KQogICAgICAgICB7Ci0gICAgICAgICAgICBlczNJbnB1dE91dHB1dFR5cGVDaGVjayhxdWFsaWZp
ZXIsIHR5cGVTcGVjaWZpZXIsIHR5cGVTcGVjaWZpZXIubGluZSk7CisgICAgICAgICAgICBlcnJv
cih0eXBlU3BlY2lmaWVyLmdldExpbmUoKSwgIidpbicgY2FuIGJlIG9ubHkgdXNlZCB0byBzcGVj
aWZ5IHRoZSBsb2NhbCBncm91cCBzaXplIiwKKyAgICAgICAgICAgICAgICAgICJpbiIpOwogICAg
ICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIHJldHVyblR5cGU7CiB9CiAKLXZvaWQgVFBhcnNl
Q29udGV4dDo6ZXMzSW5wdXRPdXRwdXRUeXBlQ2hlY2soY29uc3QgVFF1YWxpZmllciBxdWFsaWZp
ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRQ
dWJsaWNUeXBlICZ0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUU291cmNlTG9jICZxdWFsaWZpZXJMb2NhdGlvbikKK3ZvaWQgVFBhcnNlQ29u
dGV4dDo6Y2hlY2tJbnB1dE91dHB1dFR5cGVJc1ZhbGlkRVMzKGNvbnN0IFRRdWFsaWZpZXIgcXVh
bGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVFB1YmxpY1R5cGUgJnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZxdWFsaWZpZXJMb2NhdGlv
bikKIHsKICAgICAvLyBBbiBpbnB1dC9vdXRwdXQgdmFyaWFibGUgY2FuIG5ldmVyIGJlIGJvb2wg
b3IgYSBzYW1wbGVyLiBTYW1wbGVycyBhcmUgY2hlY2tlZCBlbHNld2hlcmUuCi0gICAgaWYgKHR5
cGUudHlwZSA9PSBFYnRCb29sKQorICAgIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidEJv
b2wpCiAgICAgewogICAgICAgICBlcnJvcihxdWFsaWZpZXJMb2NhdGlvbiwgImNhbm5vdCBiZSBi
b29sIiwgZ2V0UXVhbGlmaWVyU3RyaW5nKHF1YWxpZmllcikpOwotICAgICAgICByZWNvdmVyKCk7
CiAgICAgfQogCiAgICAgLy8gU3BlY2lmaWMgcmVzdHJpY3Rpb25zIGFwcGx5IGZvciB2ZXJ0ZXgg
c2hhZGVyIGlucHV0cyBhbmQgZnJhZ21lbnQgc2hhZGVyIG91dHB1dHMuCkBAIC0xNDQ2LDE2ICsx
NDczLDE0IEBAIHZvaWQgVFBhcnNlQ29udGV4dDo6ZXMzSW5wdXRPdXRwdXRUeXBlQ2gKICAgICAg
ICAgICAgIGlmICh0eXBlLmFycmF5KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGVy
cm9yKHF1YWxpZmllckxvY2F0aW9uLCAiY2Fubm90IGJlIGFycmF5IiwgZ2V0UXVhbGlmaWVyU3Ry
aW5nKHF1YWxpZmllcikpOwotICAgICAgICAgICAgICAgIHJlY292ZXIoKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIC8vIFZlcnRleCBpbnB1dHMgd2l0aCBhIHN0cnVjdCB0eXBlIGFyZSBk
aXNhbGxvd2VkIGluIHNpbmdsZURlY2xhcmF0aW9uRXJyb3JDaGVjawogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBjYXNlIEV2cUZyYWdtZW50T3V0OgogICAgICAgICAgICAgLy8gRVNTTCAz
LjAwIHNlY3Rpb24gNC4zLjYKLSAgICAgICAgICAgIGlmICh0eXBlLmlzTWF0cml4KCkpCisgICAg
ICAgICAgICBpZiAodHlwZS50eXBlU3BlY2lmaWVyTm9uQXJyYXkuaXNNYXRyaXgoKSkKICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICBlcnJvcihxdWFsaWZpZXJMb2NhdGlvbiwgImNhbm5v
dCBiZSBtYXRyaXgiLCBnZXRRdWFsaWZpZXJTdHJpbmcocXVhbGlmaWVyKSk7Ci0gICAgICAgICAg
ICAgICAgcmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gRnJhZ21lbnQg
b3V0cHV0cyB3aXRoIGEgc3RydWN0IHR5cGUgYXJlIGRpc2FsbG93ZWQgaW4gc2luZ2xlRGVjbGFy
YXRpb25FcnJvckNoZWNrCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNDY2LDE2ICsxNDkxLDE1
IEBAIHZvaWQgVFBhcnNlQ29udGV4dDo6ZXMzSW5wdXRPdXRwdXRUeXBlQ2gKICAgICAvLyBWZXJ0
ZXggc2hhZGVyIG91dHB1dHMgLyBmcmFnbWVudCBzaGFkZXIgaW5wdXRzIGhhdmUgYSBkaWZmZXJl
bnQsIHNsaWdodGx5IG1vcmUgbGVuaWVudCBzZXQgb2YKICAgICAvLyByZXN0cmljdGlvbnMuCiAg
ICAgYm9vbCB0eXBlQ29udGFpbnNJbnRlZ2VycyA9Ci0gICAgICAgICh0eXBlLnR5cGUgPT0gRWJ0
SW50IHx8IHR5cGUudHlwZSA9PSBFYnRVSW50IHx8IHR5cGUuaXNTdHJ1Y3R1cmVDb250YWluaW5n
VHlwZShFYnRJbnQpIHx8Ci0gICAgICAgICB0eXBlLmlzU3RydWN0dXJlQ29udGFpbmluZ1R5cGUo
RWJ0VUludCkpOworICAgICAgICAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRJbnQgfHwgdHlw
ZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRVSW50IHx8CisgICAgICAgICB0eXBlLmlzU3RydWN0dXJl
Q29udGFpbmluZ1R5cGUoRWJ0SW50KSB8fCB0eXBlLmlzU3RydWN0dXJlQ29udGFpbmluZ1R5cGUo
RWJ0VUludCkpOwogICAgIGlmICh0eXBlQ29udGFpbnNJbnRlZ2VycyAmJiBxdWFsaWZpZXIgIT0g
RXZxRmxhdEluICYmIHF1YWxpZmllciAhPSBFdnFGbGF0T3V0KQogICAgIHsKICAgICAgICAgZXJy
b3IocXVhbGlmaWVyTG9jYXRpb24sICJtdXN0IHVzZSAnZmxhdCcgaW50ZXJwb2xhdGlvbiBoZXJl
IiwKICAgICAgICAgICAgICAgZ2V0UXVhbGlmaWVyU3RyaW5nKHF1YWxpZmllcikpOwotICAgICAg
ICByZWNvdmVyKCk7CiAgICAgfQogCi0gICAgaWYgKHR5cGUudHlwZSA9PSBFYnRTdHJ1Y3QpCisg
ICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KQogICAgIHsKICAgICAgICAg
Ly8gRVNTTCAzLjAwIHNlY3Rpb25zIDQuMy40IGFuZCA0LjMuNi4KICAgICAgICAgLy8gVGhlc2Ug
cmVzdHJpY3Rpb25zIGFyZSBvbmx5IGltcGxpZWQgYnkgdGhlIEVTU0wgMy4wMCBzcGVjLCBidXQK
QEAgLTE0ODQsMjUgKzE1MDgsMjEgQEAgdm9pZCBUUGFyc2VDb250ZXh0OjplczNJbnB1dE91dHB1
dFR5cGVDaAogICAgICAgICB7CiAgICAgICAgICAgICBlcnJvcihxdWFsaWZpZXJMb2NhdGlvbiwg
ImNhbm5vdCBiZSBhbiBhcnJheSBvZiBzdHJ1Y3R1cmVzIiwKICAgICAgICAgICAgICAgICAgIGdl
dFF1YWxpZmllclN0cmluZyhxdWFsaWZpZXIpKTsKLSAgICAgICAgICAgIHJlY292ZXIoKTsKICAg
ICAgICAgfQogICAgICAgICBpZiAodHlwZS5pc1N0cnVjdHVyZUNvbnRhaW5pbmdBcnJheXMoKSkK
ICAgICAgICAgewogICAgICAgICAgICAgZXJyb3IocXVhbGlmaWVyTG9jYXRpb24sICJjYW5ub3Qg
YmUgYSBzdHJ1Y3R1cmUgY29udGFpbmluZyBhbiBhcnJheSIsCiAgICAgICAgICAgICAgICAgICBn
ZXRRdWFsaWZpZXJTdHJpbmcocXVhbGlmaWVyKSk7Ci0gICAgICAgICAgICByZWNvdmVyKCk7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKHR5cGUuaXNTdHJ1Y3R1cmVDb250YWluaW5nVHlwZShFYnRT
dHJ1Y3QpKQogICAgICAgICB7CiAgICAgICAgICAgICBlcnJvcihxdWFsaWZpZXJMb2NhdGlvbiwg
ImNhbm5vdCBiZSBhIHN0cnVjdHVyZSBjb250YWluaW5nIGEgc3RydWN0dXJlIiwKICAgICAgICAg
ICAgICAgICAgIGdldFF1YWxpZmllclN0cmluZyhxdWFsaWZpZXIpKTsKLSAgICAgICAgICAgIHJl
Y292ZXIoKTsKICAgICAgICAgfQogICAgICAgICBpZiAodHlwZS5pc1N0cnVjdHVyZUNvbnRhaW5p
bmdUeXBlKEVidEJvb2wpKQogICAgICAgICB7CiAgICAgICAgICAgICBlcnJvcihxdWFsaWZpZXJM
b2NhdGlvbiwgImNhbm5vdCBiZSBhIHN0cnVjdHVyZSBjb250YWluaW5nIGEgYm9vbCIsCiAgICAg
ICAgICAgICAgICAgICBnZXRRdWFsaWZpZXJTdHJpbmcocXVhbGlmaWVyKSk7Ci0gICAgICAgICAg
ICByZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xNTExLDggKzE1MzEsMzUgQEAg
VEludGVybUFnZ3JlZ2F0ZSAqVFBhcnNlQ29udGV4dDo6cGFyc2VTaQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9j
ICZpZGVudGlmaWVyT3JUeXBlTG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJmlkZW50aWZpZXIpCiB7
Ci0gICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0KLSAgICAgICAgaW50ZXJtZWRpYXRlLmFkZFN5
bWJvbCgwLCBpZGVudGlmaWVyLCBUVHlwZShwdWJsaWNUeXBlKSwgaWRlbnRpZmllck9yVHlwZUxv
Y2F0aW9uKTsKKyAgICBUVHlwZSB0eXBlKHB1YmxpY1R5cGUpOworICAgIGlmICgobUNvbXBpbGVP
cHRpb25zICYgU0hfRkxBVFRFTl9QUkFHTUFfU1RER0xfSU5WQVJJQU5UX0FMTCkgJiYKKyAgICAg
ICAgbURpcmVjdGl2ZUhhbmRsZXIucHJhZ21hKCkuc3RkZ2wuaW52YXJpYW50QWxsKQorICAgIHsK
KyAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSB0eXBlLmdldFF1YWxpZmllcigpOworCisg
ICAgICAgIC8vIFRoZSBkaXJlY3RpdmUgaGFuZGxlciBoYXMgYWxyZWFkeSB0YWtlbiBjYXJlIG9m
IHJlamVjdGluZyBpbnZhbGlkIHVzZXMgb2YgdGhpcyBwcmFnbWEKKyAgICAgICAgLy8gKGZvciBl
eGFtcGxlLCBpbiBFU1NMIDMuMDAgZnJhZ21lbnQgc2hhZGVycyksIHNvIGF0IHRoaXMgcG9pbnQs
IGZsYXR0ZW4gaXQgaW50byBhbGwKKyAgICAgICAgLy8gYWZmZWN0ZWQgdmFyaWFibGUgZGVjbGFy
YXRpb25zOgorICAgICAgICAvLworICAgICAgICAvLyAxLiBCdWlsdC1pbiBzcGVjaWFsIHZhcmlh
YmxlcyB3aGljaCBhcmUgaW5wdXRzIHRvIHRoZSBmcmFnbWVudCBzaGFkZXIuIChUaGVzZSBhcmUg
aGFuZGxlZAorICAgICAgICAvLyBlbHNld2hlcmUsIGluIFRyYW5zbGF0b3JHTFNMLikKKyAgICAg
ICAgLy8KKyAgICAgICAgLy8gMi4gT3V0cHV0cyBmcm9tIHZlcnRleCBzaGFkZXJzIGluIEVTU0wg
MS4wMCBhbmQgMy4wMCAoRXZxVmFyeWluZ091dCBhbmQgRXZxVmVydGV4T3V0KS4gSXQKKyAgICAg
ICAgLy8gaXMgYWN0dWFsbHkgbGVzcyBsaWtlbHkgdGhhdCB0aGVyZSB3aWxsIGJlIGJ1Z3MgaW4g
dGhlIGhhbmRsaW5nIG9mIEVTU0wgMy4wMCBzaGFkZXJzLCBidXQKKyAgICAgICAgLy8gdGhlIHdh
eSB0aGlzIGlzIGN1cnJlbnRseSBpbXBsZW1lbnRlZCB3ZSBoYXZlIHRvIGVuYWJsZSB0aGlzIGNv
bXBpbGVyIG9wdGlvbiBiZWZvcmUKKyAgICAgICAgLy8gcGFyc2luZyB0aGUgc2hhZGVyIGFuZCBk
ZXRlcm1pbmluZyB0aGUgc2hhZGluZyBsYW5ndWFnZSB2ZXJzaW9uIGl0IHVzZXMuIElmIHRoaXMg
d2VyZQorICAgICAgICAvLyBpbXBsZW1lbnRlZCBhcyBhIHBvc3QtcGFzcywgdGhlIHdvcmthcm91
bmQgY291bGQgYmUgbW9yZSB0YXJnZXRlZC4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gMy4gSW5w
dXRzIGluIEVTU0wgMS4wMCBmcmFnbWVudCBzaGFkZXJzIChFdnFWYXJ5aW5nSW4pLiBUaGlzIGlz
IHNvbWV3aGF0IGluIHZpb2xhdGlvbiBvZgorICAgICAgICAvLyB0aGUgc3BlY2lmaWNhdGlvbiwg
YnV0IHRoZXJlIGFyZSBkZXNrdG9wIE9wZW5HTCBkcml2ZXJzIHRoYXQgZXhwZWN0IHRoYXQgdGhp
cyBpcyB0aGUKKyAgICAgICAgLy8gYmVoYXZpb3Igb2YgdGhlICNwcmFnbWEgd2hlbiBzcGVjaWZp
ZWQgaW4gRVNTTCAxLjAwIGZyYWdtZW50IHNoYWRlcnMuCisgICAgICAgIGlmIChxdWFsaWZpZXIg
PT0gRXZxVmFyeWluZ091dCB8fCBxdWFsaWZpZXIgPT0gRXZxVmVydGV4T3V0IHx8IHF1YWxpZmll
ciA9PSBFdnFWYXJ5aW5nSW4pCisgICAgICAgIHsKKyAgICAgICAgICAgIHR5cGUuc2V0SW52YXJp
YW50KHRydWUpOworICAgICAgICB9CisgICAgfQorCisgICAgVEludGVybVN5bWJvbCAqc3ltYm9s
ID0gaW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCBpZGVudGlmaWVyLCB0eXBlLCBpZGVudGlmaWVy
T3JUeXBlTG9jYXRpb24pOwogCiAgICAgYm9vbCBlbXB0eURlY2xhcmF0aW9uID0gKGlkZW50aWZp
ZXIgPT0gIiIpOwogCkBAIC0xNTMwLDIxICsxNTc3LDE4IEBAIFRJbnRlcm1BZ2dyZWdhdGUgKlRQ
YXJzZUNvbnRleHQ6OnBhcnNlU2kKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgaWYg
KHNpbmdsZURlY2xhcmF0aW9uRXJyb3JDaGVjayhwdWJsaWNUeXBlLCBpZGVudGlmaWVyT3JUeXBl
TG9jYXRpb24pKQotICAgICAgICAgICAgcmVjb3ZlcigpOworICAgICAgICBzaW5nbGVEZWNsYXJh
dGlvbkVycm9yQ2hlY2socHVibGljVHlwZSwgaWRlbnRpZmllck9yVHlwZUxvY2F0aW9uKTsKIAot
ICAgICAgICBpZiAobm9uSW5pdEVycm9yQ2hlY2soaWRlbnRpZmllck9yVHlwZUxvY2F0aW9uLCBp
ZGVudGlmaWVyLCAmcHVibGljVHlwZSkpCi0gICAgICAgICAgICByZWNvdmVyKCk7CisgICAgICAg
IGNoZWNrQ2FuQmVEZWNsYXJlZFdpdGhvdXRJbml0aWFsaXplcihpZGVudGlmaWVyT3JUeXBlTG9j
YXRpb24sIGlkZW50aWZpZXIsICZwdWJsaWNUeXBlKTsKIAogICAgICAgICBUVmFyaWFibGUgKnZh
cmlhYmxlID0gbnVsbHB0cjsKLSAgICAgICAgaWYgKCFkZWNsYXJlVmFyaWFibGUoaWRlbnRpZmll
ck9yVHlwZUxvY2F0aW9uLCBpZGVudGlmaWVyLCBUVHlwZShwdWJsaWNUeXBlKSwgJnZhcmlhYmxl
KSkKLSAgICAgICAgICAgIHJlY292ZXIoKTsKKyAgICAgICAgZGVjbGFyZVZhcmlhYmxlKGlkZW50
aWZpZXJPclR5cGVMb2NhdGlvbiwgaWRlbnRpZmllciwgdHlwZSwgJnZhcmlhYmxlKTsKIAogICAg
ICAgICBpZiAodmFyaWFibGUgJiYgc3ltYm9sKQogICAgICAgICAgICAgc3ltYm9sLT5zZXRJZCh2
YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGludGVybWVkaWF0
ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgaWRlbnRpZmllck9yVHlwZUxvY2F0aW9uKTsKKyAgICBy
ZXR1cm4gVEludGVybWVkaWF0ZTo6TWFrZUFnZ3JlZ2F0ZShzeW1ib2wsIGlkZW50aWZpZXJPclR5
cGVMb2NhdGlvbik7CiB9CiAKIFRJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OnBhcnNl
U2luZ2xlQXJyYXlEZWNsYXJhdGlvbihUUHVibGljVHlwZSAmcHVibGljVHlwZSwKQEAgLTE1NTUs
MzggKzE1OTksMjcgQEAgVEludGVybUFnZ3JlZ2F0ZSAqVFBhcnNlQ29udGV4dDo6cGFyc2VTaQog
ewogICAgIG1EZWZlcnJlZFNpbmdsZURlY2xhcmF0aW9uRXJyb3JDaGVjayA9IGZhbHNlOwogCi0g
ICAgaWYgKHNpbmdsZURlY2xhcmF0aW9uRXJyb3JDaGVjayhwdWJsaWNUeXBlLCBpZGVudGlmaWVy
TG9jYXRpb24pKQotICAgICAgICByZWNvdmVyKCk7CisgICAgc2luZ2xlRGVjbGFyYXRpb25FcnJv
ckNoZWNrKHB1YmxpY1R5cGUsIGlkZW50aWZpZXJMb2NhdGlvbik7CiAKLSAgICBpZiAobm9uSW5p
dEVycm9yQ2hlY2soaWRlbnRpZmllckxvY2F0aW9uLCBpZGVudGlmaWVyLCAmcHVibGljVHlwZSkp
Ci0gICAgICAgIHJlY292ZXIoKTsKKyAgICBjaGVja0NhbkJlRGVjbGFyZWRXaXRob3V0SW5pdGlh
bGl6ZXIoaWRlbnRpZmllckxvY2F0aW9uLCBpZGVudGlmaWVyLCAmcHVibGljVHlwZSk7CiAKLSAg
ICBpZiAoYXJyYXlUeXBlRXJyb3JDaGVjayhpbmRleExvY2F0aW9uLCBwdWJsaWNUeXBlKSB8fAot
ICAgICAgICBhcnJheVF1YWxpZmllckVycm9yQ2hlY2soaW5kZXhMb2NhdGlvbiwgcHVibGljVHlw
ZSkpCi0gICAgewotICAgICAgICByZWNvdmVyKCk7Ci0gICAgfQorICAgIGNoZWNrSXNWYWxpZFR5
cGVBbmRRdWFsaWZpZXJGb3JBcnJheShpbmRleExvY2F0aW9uLCBwdWJsaWNUeXBlKTsKIAogICAg
IFRUeXBlIGFycmF5VHlwZShwdWJsaWNUeXBlKTsKIAotICAgIGludCBzaXplOwotICAgIGlmIChh
cnJheVNpemVFcnJvckNoZWNrKGlkZW50aWZpZXJMb2NhdGlvbiwgaW5kZXhFeHByZXNzaW9uLCBz
aXplKSkKLSAgICB7Ci0gICAgICAgIHJlY292ZXIoKTsKLSAgICB9CisgICAgdW5zaWduZWQgaW50
IHNpemUgPSBjaGVja0lzVmFsaWRBcnJheVNpemUoaWRlbnRpZmllckxvY2F0aW9uLCBpbmRleEV4
cHJlc3Npb24pOwogICAgIC8vIE1ha2UgdGhlIHR5cGUgYW4gYXJyYXkgZXZlbiBpZiBzaXplIGNo
ZWNrIGZhaWxlZC4KICAgICAvLyBUaGlzIGVuc3VyZXMgdXNlbGVzcyBlcnJvciBtZXNzYWdlcyBy
ZWdhcmRpbmcgdGhlIHZhcmlhYmxlJ3Mgbm9uLWFycmF5bmVzcyB3b24ndCBmb2xsb3cuCiAgICAg
YXJyYXlUeXBlLnNldEFycmF5U2l6ZShzaXplKTsKIAogICAgIFRWYXJpYWJsZSAqdmFyaWFibGUg
PSBudWxscHRyOwotICAgIGlmICghZGVjbGFyZVZhcmlhYmxlKGlkZW50aWZpZXJMb2NhdGlvbiwg
aWRlbnRpZmllciwgYXJyYXlUeXBlLCAmdmFyaWFibGUpKQotICAgICAgICByZWNvdmVyKCk7Cisg
ICAgZGVjbGFyZVZhcmlhYmxlKGlkZW50aWZpZXJMb2NhdGlvbiwgaWRlbnRpZmllciwgYXJyYXlU
eXBlLCAmdmFyaWFibGUpOwogCiAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gaW50ZXJtZWRp
YXRlLmFkZFN5bWJvbCgwLCBpZGVudGlmaWVyLCBhcnJheVR5cGUsIGlkZW50aWZpZXJMb2NhdGlv
bik7CiAgICAgaWYgKHZhcmlhYmxlICYmIHN5bWJvbCkKICAgICAgICAgc3ltYm9sLT5zZXRJZCh2
YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSk7CiAKLSAgICByZXR1cm4gaW50ZXJtZWRpYXRlLm1ha2VB
Z2dyZWdhdGUoc3ltYm9sLCBpZGVudGlmaWVyTG9jYXRpb24pOworICAgIHJldHVybiBUSW50ZXJt
ZWRpYXRlOjpNYWtlQWdncmVnYXRlKHN5bWJvbCwgaWRlbnRpZmllckxvY2F0aW9uKTsKIH0KIAog
VEludGVybUFnZ3JlZ2F0ZSAqVFBhcnNlQ29udGV4dDo6cGFyc2VTaW5nbGVJbml0RGVjbGFyYXRp
b24oY29uc3QgVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUsCkBAIC0xNTk3LDggKzE2MzAsNyBAQCBU
SW50ZXJtQWdncmVnYXRlICpUUGFyc2VDb250ZXh0OjpwYXJzZVNpCiB7CiAgICAgbURlZmVycmVk
U2luZ2xlRGVjbGFyYXRpb25FcnJvckNoZWNrID0gZmFsc2U7CiAKLSAgICBpZiAoc2luZ2xlRGVj
bGFyYXRpb25FcnJvckNoZWNrKHB1YmxpY1R5cGUsIGlkZW50aWZpZXJMb2NhdGlvbikpCi0gICAg
ICAgIHJlY292ZXIoKTsKKyAgICBzaW5nbGVEZWNsYXJhdGlvbkVycm9yQ2hlY2socHVibGljVHlw
ZSwgaWRlbnRpZmllckxvY2F0aW9uKTsKIAogICAgIFRJbnRlcm1Ob2RlICppbnRlcm1Ob2RlID0g
bnVsbHB0cjsKICAgICBpZiAoIWV4ZWN1dGVJbml0aWFsaXplcihpZGVudGlmaWVyTG9jYXRpb24s
IGlkZW50aWZpZXIsIHB1YmxpY1R5cGUsIGluaXRpYWxpemVyLCAmaW50ZXJtTm9kZSkpCkBAIC0x
NjA2LDExICsxNjM4LDEwIEBAIFRJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OnBhcnNl
U2kKICAgICAgICAgLy8KICAgICAgICAgLy8gQnVpbGQgaW50ZXJtZWRpYXRlIHJlcHJlc2VudGF0
aW9uCiAgICAgICAgIC8vCi0gICAgICAgIHJldHVybiBpbnRlcm1Ob2RlID8gaW50ZXJtZWRpYXRl
Lm1ha2VBZ2dyZWdhdGUoaW50ZXJtTm9kZSwgaW5pdExvY2F0aW9uKSA6IG51bGxwdHI7CisgICAg
ICAgIHJldHVybiBpbnRlcm1Ob2RlID8gVEludGVybWVkaWF0ZTo6TWFrZUFnZ3JlZ2F0ZShpbnRl
cm1Ob2RlLCBpbml0TG9jYXRpb24pIDogbnVsbHB0cjsKICAgICB9CiAgICAgZWxzZQogICAgIHsK
LSAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiB9CkBA
IC0xNjI2LDI0ICsxNjU3LDE4IEBAIFRJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OnBh
cnNlU2kKIHsKICAgICBtRGVmZXJyZWRTaW5nbGVEZWNsYXJhdGlvbkVycm9yQ2hlY2sgPSBmYWxz
ZTsKIAotICAgIGlmIChzaW5nbGVEZWNsYXJhdGlvbkVycm9yQ2hlY2socHVibGljVHlwZSwgaWRl
bnRpZmllckxvY2F0aW9uKSkKLSAgICAgICAgcmVjb3ZlcigpOworICAgIHNpbmdsZURlY2xhcmF0
aW9uRXJyb3JDaGVjayhwdWJsaWNUeXBlLCBpZGVudGlmaWVyTG9jYXRpb24pOwogCi0gICAgaWYg
KGFycmF5VHlwZUVycm9yQ2hlY2soaW5kZXhMb2NhdGlvbiwgcHVibGljVHlwZSkgfHwKLSAgICAg
ICAgYXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKGluZGV4TG9jYXRpb24sIHB1YmxpY1R5cGUpKQot
ICAgIHsKLSAgICAgICAgcmVjb3ZlcigpOwotICAgIH0KKyAgICBjaGVja0lzVmFsaWRUeXBlQW5k
UXVhbGlmaWVyRm9yQXJyYXkoaW5kZXhMb2NhdGlvbiwgcHVibGljVHlwZSk7CiAKICAgICBUUHVi
bGljVHlwZSBhcnJheVR5cGUocHVibGljVHlwZSk7CiAKLSAgICBpbnQgc2l6ZSA9IDA7CisgICAg
dW5zaWduZWQgaW50IHNpemUgPSAwdTsKICAgICAvLyBJZiBpbmRleEV4cHJlc3Npb24gaXMgbnVs
bHB0ciwgdGhlbiB0aGUgYXJyYXkgd2lsbCBldmVudHVhbGx5IGdldCBpdHMgc2l6ZSBpbXBsaWNp
dGx5IGZyb20KICAgICAvLyB0aGUgaW5pdGlhbGl6ZXIuCi0gICAgaWYgKGluZGV4RXhwcmVzc2lv
biAhPSBudWxscHRyICYmCi0gICAgICAgIGFycmF5U2l6ZUVycm9yQ2hlY2soaWRlbnRpZmllckxv
Y2F0aW9uLCBpbmRleEV4cHJlc3Npb24sIHNpemUpKQorICAgIGlmIChpbmRleEV4cHJlc3Npb24g
IT0gbnVsbHB0cikKICAgICB7Ci0gICAgICAgIHJlY292ZXIoKTsKKyAgICAgICAgc2l6ZSA9IGNo
ZWNrSXNWYWxpZEFycmF5U2l6ZShpZGVudGlmaWVyTG9jYXRpb24sIGluZGV4RXhwcmVzc2lvbik7
CiAgICAgfQogICAgIC8vIE1ha2UgdGhlIHR5cGUgYW4gYXJyYXkgZXZlbiBpZiBzaXplIGNoZWNr
IGZhaWxlZC4KICAgICAvLyBUaGlzIGVuc3VyZXMgdXNlbGVzcyBlcnJvciBtZXNzYWdlcyByZWdh
cmRpbmcgdGhlIHZhcmlhYmxlJ3Mgbm9uLWFycmF5bmVzcyB3b24ndCBmb2xsb3cuCkBAIC0xNjUz
LDUzICsxNjc4LDY2IEBAIFRJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OnBhcnNlU2kK
ICAgICBUSW50ZXJtTm9kZSAqaW5pdE5vZGUgPSBudWxscHRyOwogICAgIGlmICghZXhlY3V0ZUlu
aXRpYWxpemVyKGlkZW50aWZpZXJMb2NhdGlvbiwgaWRlbnRpZmllciwgYXJyYXlUeXBlLCBpbml0
aWFsaXplciwgJmluaXROb2RlKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBpbml0Tm9kZSA/IGlu
dGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKGluaXROb2RlLCBpbml0TG9jYXRpb24pIDogbnVsbHB0
cjsKKyAgICAgICAgcmV0dXJuIGluaXROb2RlID8gVEludGVybWVkaWF0ZTo6TWFrZUFnZ3JlZ2F0
ZShpbml0Tm9kZSwgaW5pdExvY2F0aW9uKSA6IG51bGxwdHI7CiAgICAgfQogICAgIGVsc2UKICAg
ICB7Ci0gICAgICAgIHJlY292ZXIoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
fQogCi1USW50ZXJtQWdncmVnYXRlICpUUGFyc2VDb250ZXh0OjpwYXJzZUludmFyaWFudERlY2xh
cmF0aW9uKGNvbnN0IFRTb3VyY2VMb2MgJmludmFyaWFudExvYywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxv
YyAmaWRlbnRpZmllckxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAqaWRlbnRpZmllciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFN5bWJvbCAqc3ltYm9sKQorVEludGVybUFnZ3JlZ2F0ZSAqVFBhcnNlQ29udGV4dDo6cGFyc2VJ
bnZhcmlhbnREZWNsYXJhdGlvbigKKyAgICBjb25zdCBUVHlwZVF1YWxpZmllckJ1aWxkZXIgJnR5
cGVRdWFsaWZpZXJCdWlsZGVyLAorICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlkZW50aWZpZXJMb2Ms
CisgICAgY29uc3QgVFN0cmluZyAqaWRlbnRpZmllciwKKyAgICBjb25zdCBUU3ltYm9sICpzeW1i
b2wpCiB7Ci0gICAgLy8gaW52YXJpYW50IGRlY2xhcmF0aW9uCi0gICAgaWYgKGdsb2JhbEVycm9y
Q2hlY2soaW52YXJpYW50TG9jLCBzeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZhcmlh
bnQgdmFyeWluZyIpKQorICAgIFRUeXBlUXVhbGlmaWVyIHR5cGVRdWFsaWZpZXIgPSB0eXBlUXVh
bGlmaWVyQnVpbGRlci5nZXRWYXJpYWJsZVR5cGVRdWFsaWZpZXIoJm1EaWFnbm9zdGljcyk7CisK
KyAgICBpZiAoIXR5cGVRdWFsaWZpZXIuaW52YXJpYW50KQogICAgIHsKLSAgICAgICAgcmVjb3Zl
cigpOworICAgICAgICBlcnJvcihpZGVudGlmaWVyTG9jLCAiRXhwZWN0ZWQgaW52YXJpYW50Iiwg
aWRlbnRpZmllci0+Y19zdHIoKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAg
ICBpZiAoIWNoZWNrSXNBdEdsb2JhbExldmVsKGlkZW50aWZpZXJMb2MsICJpbnZhcmlhbnQgdmFy
eWluZyIpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotCiAgICAgaWYg
KCFzeW1ib2wpCiAgICAgewogICAgICAgICBlcnJvcihpZGVudGlmaWVyTG9jLCAidW5kZWNsYXJl
ZCBpZGVudGlmaWVyIGRlY2xhcmVkIGFzIGludmFyaWFudCIsIGlkZW50aWZpZXItPmNfc3RyKCkp
OwotICAgICAgICByZWNvdmVyKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAg
ICBlbHNlCisgICAgaWYgKCFJc1F1YWxpZmllclVuc3BlY2lmaWVkKHR5cGVRdWFsaWZpZXIucXVh
bGlmaWVyKSkKICAgICB7Ci0gICAgICAgIGNvbnN0IFRTdHJpbmcga0dsRnJvbnRGYWNpbmcoImds
X0Zyb250RmFjaW5nIik7Ci0gICAgICAgIGlmICgqaWRlbnRpZmllciA9PSBrR2xGcm9udEZhY2lu
ZykKLSAgICAgICAgewotICAgICAgICAgICAgZXJyb3IoaWRlbnRpZmllckxvYywgImlkZW50aWZp
ZXIgc2hvdWxkIG5vdCBiZSBkZWNsYXJlZCBhcyBpbnZhcmlhbnQiLAotICAgICAgICAgICAgICAg
ICAgaWRlbnRpZmllci0+Y19zdHIoKSk7Ci0gICAgICAgICAgICByZWNvdmVyKCk7Ci0gICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICBzeW1ib2xUYWJsZS5hZGRJ
bnZhcmlhbnRWYXJ5aW5nKHN0ZDo6c3RyaW5nKGlkZW50aWZpZXItPmNfc3RyKCkpKTsKLSAgICAg
ICAgY29uc3QgVFZhcmlhYmxlICp2YXJpYWJsZSA9IGdldE5hbWVkVmFyaWFibGUoaWRlbnRpZmll
ckxvYywgaWRlbnRpZmllciwgc3ltYm9sKTsKLSAgICAgICAgQVNTRVJUKHZhcmlhYmxlKTsKLSAg
ICAgICAgY29uc3QgVFR5cGUgJnR5cGUgPSB2YXJpYWJsZS0+Z2V0VHlwZSgpOwotICAgICAgICBU
SW50ZXJtU3ltYm9sICppbnRlcm1TeW1ib2wgPQotICAgICAgICAgICAgaW50ZXJtZWRpYXRlLmFk
ZFN5bWJvbCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSwgKmlkZW50aWZpZXIsIHR5cGUsIGlkZW50
aWZpZXJMb2MpOwotCi0gICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3JlZ2F0ZSA9IGludGVy
bWVkaWF0ZS5tYWtlQWdncmVnYXRlKGludGVybVN5bWJvbCwgaWRlbnRpZmllckxvYyk7Ci0gICAg
ICAgIGFnZ3JlZ2F0ZS0+c2V0T3AoRU9wSW52YXJpYW50RGVjbGFyYXRpb24pOwotICAgICAgICBy
ZXR1cm4gYWdncmVnYXRlOworICAgICAgICBlcnJvcihpZGVudGlmaWVyTG9jLCAiaW52YXJpYW50
IGRlY2xhcmF0aW9uIHNwZWNpZmllcyBxdWFsaWZpZXIiLAorICAgICAgICAgICAgICBnZXRRdWFs
aWZpZXJTdHJpbmcodHlwZVF1YWxpZmllci5xdWFsaWZpZXIpKTsKKyAgICB9CisgICAgaWYgKHR5
cGVRdWFsaWZpZXIucHJlY2lzaW9uICE9IEVicFVuZGVmaW5lZCkKKyAgICB7CisgICAgICAgIGVy
cm9yKGlkZW50aWZpZXJMb2MsICJpbnZhcmlhbnQgZGVjbGFyYXRpb24gc3BlY2lmaWVzIHByZWNp
c2lvbiIsCisgICAgICAgICAgICAgIGdldFByZWNpc2lvblN0cmluZyh0eXBlUXVhbGlmaWVyLnBy
ZWNpc2lvbikpOworICAgIH0KKyAgICBpZiAoIXR5cGVRdWFsaWZpZXIubGF5b3V0UXVhbGlmaWVy
LmlzRW1wdHkoKSkKKyAgICB7CisgICAgICAgIGVycm9yKGlkZW50aWZpZXJMb2MsICJpbnZhcmlh
bnQgZGVjbGFyYXRpb24gc3BlY2lmaWVzIGxheW91dCIsICInbGF5b3V0JyIpOwogICAgIH0KKwor
ICAgIGNvbnN0IFRWYXJpYWJsZSAqdmFyaWFibGUgPSBnZXROYW1lZFZhcmlhYmxlKGlkZW50aWZp
ZXJMb2MsIGlkZW50aWZpZXIsIHN5bWJvbCk7CisgICAgQVNTRVJUKHZhcmlhYmxlKTsKKyAgICBj
b25zdCBUVHlwZSAmdHlwZSA9IHZhcmlhYmxlLT5nZXRUeXBlKCk7CisKKyAgICBjaGVja0ludmFy
aWFudFZhcmlhYmxlUXVhbGlmaWVyKHR5cGVRdWFsaWZpZXIuaW52YXJpYW50LCB0eXBlLmdldFF1
YWxpZmllcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZVF1YWxp
Zmllci5saW5lKTsKKworICAgIHN5bWJvbFRhYmxlLmFkZEludmFyaWFudFZhcnlpbmcoc3RkOjpz
dHJpbmcoaWRlbnRpZmllci0+Y19zdHIoKSkpOworCisgICAgVEludGVybVN5bWJvbCAqaW50ZXJt
U3ltYm9sID0KKyAgICAgICAgaW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZS0+Z2V0VW5p
cXVlSWQoKSwgKmlkZW50aWZpZXIsIHR5cGUsIGlkZW50aWZpZXJMb2MpOworCisgICAgVEludGVy
bUFnZ3JlZ2F0ZSAqYWdncmVnYXRlID0gVEludGVybWVkaWF0ZTo6TWFrZUFnZ3JlZ2F0ZShpbnRl
cm1TeW1ib2wsIGlkZW50aWZpZXJMb2MpOworICAgIGFnZ3JlZ2F0ZS0+c2V0T3AoRU9wSW52YXJp
YW50RGVjbGFyYXRpb24pOworICAgIHJldHVybiBhZ2dyZWdhdGU7CiB9CiAKIFRJbnRlcm1BZ2dy
ZWdhdGUgKlRQYXJzZUNvbnRleHQ6OnBhcnNlRGVjbGFyYXRvcihUUHVibGljVHlwZSAmcHVibGlj
VHlwZSwKQEAgLTE3MTEsMjAgKzE3NDksMTYgQEAgVEludGVybUFnZ3JlZ2F0ZSAqVFBhcnNlQ29u
dGV4dDo6cGFyc2VEZQogICAgIC8vIG5vdCBwZXJmb3JtZWQuCiAgICAgaWYgKG1EZWZlcnJlZFNp
bmdsZURlY2xhcmF0aW9uRXJyb3JDaGVjaykKICAgICB7Ci0gICAgICAgIGlmIChzaW5nbGVEZWNs
YXJhdGlvbkVycm9yQ2hlY2socHVibGljVHlwZSwgaWRlbnRpZmllckxvY2F0aW9uKSkKLSAgICAg
ICAgICAgIHJlY292ZXIoKTsKKyAgICAgICAgc2luZ2xlRGVjbGFyYXRpb25FcnJvckNoZWNrKHB1
YmxpY1R5cGUsIGlkZW50aWZpZXJMb2NhdGlvbik7CiAgICAgICAgIG1EZWZlcnJlZFNpbmdsZURl
Y2xhcmF0aW9uRXJyb3JDaGVjayA9IGZhbHNlOwogICAgIH0KIAotICAgIGlmIChsb2NhdGlvbkRl
Y2xhcmF0b3JMaXN0Q2hlY2soaWRlbnRpZmllckxvY2F0aW9uLCBwdWJsaWNUeXBlKSkKLSAgICAg
ICAgcmVjb3ZlcigpOworICAgIGNoZWNrRGVjbGFyYXRvckxvY2F0aW9uSXNOb3RTcGVjaWZpZWQo
aWRlbnRpZmllckxvY2F0aW9uLCBwdWJsaWNUeXBlKTsKIAotICAgIGlmIChub25Jbml0RXJyb3JD
aGVjayhpZGVudGlmaWVyTG9jYXRpb24sIGlkZW50aWZpZXIsICZwdWJsaWNUeXBlKSkKLSAgICAg
ICAgcmVjb3ZlcigpOworICAgIGNoZWNrQ2FuQmVEZWNsYXJlZFdpdGhvdXRJbml0aWFsaXplcihp
ZGVudGlmaWVyTG9jYXRpb24sIGlkZW50aWZpZXIsICZwdWJsaWNUeXBlKTsKIAogICAgIFRWYXJp
YWJsZSAqdmFyaWFibGUgPSBudWxscHRyOwotICAgIGlmICghZGVjbGFyZVZhcmlhYmxlKGlkZW50
aWZpZXJMb2NhdGlvbiwgaWRlbnRpZmllciwgVFR5cGUocHVibGljVHlwZSksICZ2YXJpYWJsZSkp
Ci0gICAgICAgIHJlY292ZXIoKTsKKyAgICBkZWNsYXJlVmFyaWFibGUoaWRlbnRpZmllckxvY2F0
aW9uLCBpZGVudGlmaWVyLCBUVHlwZShwdWJsaWNUeXBlKSwgJnZhcmlhYmxlKTsKIAogICAgIFRJ
bnRlcm1TeW1ib2wgKnN5bWJvbCA9CiAgICAgICAgIGludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwg
aWRlbnRpZmllciwgVFR5cGUocHVibGljVHlwZSksIGlkZW50aWZpZXJMb2NhdGlvbik7CkBAIC0x
NzQ1LDM1ICsxNzc5LDIyIEBAIFRJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OnBhcnNl
QXIKICAgICAvLyBub3QgcGVyZm9ybWVkLgogICAgIGlmIChtRGVmZXJyZWRTaW5nbGVEZWNsYXJh
dGlvbkVycm9yQ2hlY2spCiAgICAgewotICAgICAgICBpZiAoc2luZ2xlRGVjbGFyYXRpb25FcnJv
ckNoZWNrKHB1YmxpY1R5cGUsIGlkZW50aWZpZXJMb2NhdGlvbikpCi0gICAgICAgICAgICByZWNv
dmVyKCk7CisgICAgICAgIHNpbmdsZURlY2xhcmF0aW9uRXJyb3JDaGVjayhwdWJsaWNUeXBlLCBp
ZGVudGlmaWVyTG9jYXRpb24pOwogICAgICAgICBtRGVmZXJyZWRTaW5nbGVEZWNsYXJhdGlvbkVy
cm9yQ2hlY2sgPSBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAobG9jYXRpb25EZWNsYXJhdG9yTGlz
dENoZWNrKGlkZW50aWZpZXJMb2NhdGlvbiwgcHVibGljVHlwZSkpCi0gICAgICAgIHJlY292ZXIo
KTsKKyAgICBjaGVja0RlY2xhcmF0b3JMb2NhdGlvbklzTm90U3BlY2lmaWVkKGlkZW50aWZpZXJM
b2NhdGlvbiwgcHVibGljVHlwZSk7CiAKLSAgICBpZiAobm9uSW5pdEVycm9yQ2hlY2soaWRlbnRp
ZmllckxvY2F0aW9uLCBpZGVudGlmaWVyLCAmcHVibGljVHlwZSkpCi0gICAgICAgIHJlY292ZXIo
KTsKKyAgICBjaGVja0NhbkJlRGVjbGFyZWRXaXRob3V0SW5pdGlhbGl6ZXIoaWRlbnRpZmllckxv
Y2F0aW9uLCBpZGVudGlmaWVyLCAmcHVibGljVHlwZSk7CiAKLSAgICBpZiAoYXJyYXlUeXBlRXJy
b3JDaGVjayhhcnJheUxvY2F0aW9uLCBwdWJsaWNUeXBlKSB8fAotICAgICAgICBhcnJheVF1YWxp
ZmllckVycm9yQ2hlY2soYXJyYXlMb2NhdGlvbiwgcHVibGljVHlwZSkpCi0gICAgewotICAgICAg
ICByZWNvdmVyKCk7Ci0gICAgfQotICAgIGVsc2UKKyAgICBpZiAoY2hlY2tJc1ZhbGlkVHlwZUFu
ZFF1YWxpZmllckZvckFycmF5KGFycmF5TG9jYXRpb24sIHB1YmxpY1R5cGUpKQogICAgIHsKICAg
ICAgICAgVFR5cGUgYXJyYXlUeXBlID0gVFR5cGUocHVibGljVHlwZSk7Ci0gICAgICAgIGludCBz
aXplOwotICAgICAgICBpZiAoYXJyYXlTaXplRXJyb3JDaGVjayhhcnJheUxvY2F0aW9uLCBpbmRl
eEV4cHJlc3Npb24sIHNpemUpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZWNvdmVyKCk7Ci0g
ICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgaW50IHNpemUgPSBjaGVja0lzVmFsaWRBcnJheVNp
emUoYXJyYXlMb2NhdGlvbiwgaW5kZXhFeHByZXNzaW9uKTsKICAgICAgICAgYXJyYXlUeXBlLnNl
dEFycmF5U2l6ZShzaXplKTsKIAogICAgICAgICBUVmFyaWFibGUgKnZhcmlhYmxlID0gbnVsbHB0
cjsKLSAgICAgICAgaWYgKCFkZWNsYXJlVmFyaWFibGUoaWRlbnRpZmllckxvY2F0aW9uLCBpZGVu
dGlmaWVyLCBhcnJheVR5cGUsICZ2YXJpYWJsZSkpCi0gICAgICAgICAgICByZWNvdmVyKCk7Cisg
ICAgICAgIGRlY2xhcmVWYXJpYWJsZShpZGVudGlmaWVyTG9jYXRpb24sIGlkZW50aWZpZXIsIGFy
cmF5VHlwZSwgJnZhcmlhYmxlKTsKIAogICAgICAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2wgPQog
ICAgICAgICAgICAgaW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCBpZGVudGlmaWVyLCBhcnJheVR5
cGUsIGlkZW50aWZpZXJMb2NhdGlvbik7CkBAIC0xNzk3LDEzICsxODE4LDExIEBAIFRJbnRlcm1B
Z2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OnBhcnNlSW4KICAgICAvLyBub3QgcGVyZm9ybWVkLgog
ICAgIGlmIChtRGVmZXJyZWRTaW5nbGVEZWNsYXJhdGlvbkVycm9yQ2hlY2spCiAgICAgewotICAg
ICAgICBpZiAoc2luZ2xlRGVjbGFyYXRpb25FcnJvckNoZWNrKHB1YmxpY1R5cGUsIGlkZW50aWZp
ZXJMb2NhdGlvbikpCi0gICAgICAgICAgICByZWNvdmVyKCk7CisgICAgICAgIHNpbmdsZURlY2xh
cmF0aW9uRXJyb3JDaGVjayhwdWJsaWNUeXBlLCBpZGVudGlmaWVyTG9jYXRpb24pOwogICAgICAg
ICBtRGVmZXJyZWRTaW5nbGVEZWNsYXJhdGlvbkVycm9yQ2hlY2sgPSBmYWxzZTsKICAgICB9CiAK
LSAgICBpZiAobG9jYXRpb25EZWNsYXJhdG9yTGlzdENoZWNrKGlkZW50aWZpZXJMb2NhdGlvbiwg
cHVibGljVHlwZSkpCi0gICAgICAgIHJlY292ZXIoKTsKKyAgICBjaGVja0RlY2xhcmF0b3JMb2Nh
dGlvbklzTm90U3BlY2lmaWVkKGlkZW50aWZpZXJMb2NhdGlvbiwgcHVibGljVHlwZSk7CiAKICAg
ICBUSW50ZXJtTm9kZSAqaW50ZXJtTm9kZSA9IG51bGxwdHI7CiAgICAgaWYgKCFleGVjdXRlSW5p
dGlhbGl6ZXIoaWRlbnRpZmllckxvY2F0aW9uLCBpZGVudGlmaWVyLCBwdWJsaWNUeXBlLCBpbml0
aWFsaXplciwgJmludGVybU5vZGUpKQpAQCAtMTgyMiw3ICsxODQxLDYgQEAgVEludGVybUFnZ3Jl
Z2F0ZSAqVFBhcnNlQ29udGV4dDo6cGFyc2VJbgogICAgIH0KICAgICBlbHNlCiAgICAgewotICAg
ICAgICByZWNvdmVyKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIH0KQEAgLTE4
NDAsMjkgKzE4NTgsMjIgQEAgVEludGVybUFnZ3JlZ2F0ZSAqVFBhcnNlQ29udGV4dDo6cGFyc2VB
cgogICAgIC8vIG5vdCBwZXJmb3JtZWQuCiAgICAgaWYgKG1EZWZlcnJlZFNpbmdsZURlY2xhcmF0
aW9uRXJyb3JDaGVjaykKICAgICB7Ci0gICAgICAgIGlmIChzaW5nbGVEZWNsYXJhdGlvbkVycm9y
Q2hlY2socHVibGljVHlwZSwgaWRlbnRpZmllckxvY2F0aW9uKSkKLSAgICAgICAgICAgIHJlY292
ZXIoKTsKKyAgICAgICAgc2luZ2xlRGVjbGFyYXRpb25FcnJvckNoZWNrKHB1YmxpY1R5cGUsIGlk
ZW50aWZpZXJMb2NhdGlvbik7CiAgICAgICAgIG1EZWZlcnJlZFNpbmdsZURlY2xhcmF0aW9uRXJy
b3JDaGVjayA9IGZhbHNlOwogICAgIH0KIAotICAgIGlmIChsb2NhdGlvbkRlY2xhcmF0b3JMaXN0
Q2hlY2soaWRlbnRpZmllckxvY2F0aW9uLCBwdWJsaWNUeXBlKSkKLSAgICAgICAgcmVjb3Zlcigp
OworICAgIGNoZWNrRGVjbGFyYXRvckxvY2F0aW9uSXNOb3RTcGVjaWZpZWQoaWRlbnRpZmllckxv
Y2F0aW9uLCBwdWJsaWNUeXBlKTsKIAotICAgIGlmIChhcnJheVR5cGVFcnJvckNoZWNrKGluZGV4
TG9jYXRpb24sIHB1YmxpY1R5cGUpIHx8Ci0gICAgICAgIGFycmF5UXVhbGlmaWVyRXJyb3JDaGVj
ayhpbmRleExvY2F0aW9uLCBwdWJsaWNUeXBlKSkKLSAgICB7Ci0gICAgICAgIHJlY292ZXIoKTsK
LSAgICB9CisgICAgY2hlY2tJc1ZhbGlkVHlwZUFuZFF1YWxpZmllckZvckFycmF5KGluZGV4TG9j
YXRpb24sIHB1YmxpY1R5cGUpOwogCiAgICAgVFB1YmxpY1R5cGUgYXJyYXlUeXBlKHB1YmxpY1R5
cGUpOwogCi0gICAgaW50IHNpemUgPSAwOworICAgIHVuc2lnbmVkIGludCBzaXplID0gMHU7CiAg
ICAgLy8gSWYgaW5kZXhFeHByZXNzaW9uIGlzIG51bGxwdHIsIHRoZW4gdGhlIGFycmF5IHdpbGwg
ZXZlbnR1YWxseSBnZXQgaXRzIHNpemUgaW1wbGljaXRseSBmcm9tCiAgICAgLy8gdGhlIGluaXRp
YWxpemVyLgotICAgIGlmIChpbmRleEV4cHJlc3Npb24gIT0gbnVsbHB0ciAmJgotICAgICAgICBh
cnJheVNpemVFcnJvckNoZWNrKGlkZW50aWZpZXJMb2NhdGlvbiwgaW5kZXhFeHByZXNzaW9uLCBz
aXplKSkKKyAgICBpZiAoaW5kZXhFeHByZXNzaW9uICE9IG51bGxwdHIpCiAgICAgewotICAgICAg
ICByZWNvdmVyKCk7CisgICAgICAgIHNpemUgPSBjaGVja0lzVmFsaWRBcnJheVNpemUoaWRlbnRp
ZmllckxvY2F0aW9uLCBpbmRleEV4cHJlc3Npb24pOwogICAgIH0KICAgICAvLyBNYWtlIHRoZSB0
eXBlIGFuIGFycmF5IGV2ZW4gaWYgc2l6ZSBjaGVjayBmYWlsZWQuCiAgICAgLy8gVGhpcyBlbnN1
cmVzIHVzZWxlc3MgZXJyb3IgbWVzc2FnZXMgcmVnYXJkaW5nIHRoZSB2YXJpYWJsZSdzIG5vbi1h
cnJheW5lc3Mgd29uJ3QgZm9sbG93LgpAQCAtMTg4Myw3MyArMTg5NCwxNDMgQEAgVEludGVybUFn
Z3JlZ2F0ZSAqVFBhcnNlQ29udGV4dDo6cGFyc2VBcgogICAgIH0KICAgICBlbHNlCiAgICAgewot
ICAgICAgICByZWNvdmVyKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIH0KIAot
dm9pZCBUUGFyc2VDb250ZXh0OjpwYXJzZUdsb2JhbExheW91dFF1YWxpZmllcihjb25zdCBUUHVi
bGljVHlwZSAmdHlwZVF1YWxpZmllcikKK3ZvaWQgVFBhcnNlQ29udGV4dDo6cGFyc2VHbG9iYWxM
YXlvdXRRdWFsaWZpZXIoY29uc3QgVFR5cGVRdWFsaWZpZXJCdWlsZGVyICZ0eXBlUXVhbGlmaWVy
QnVpbGRlcikKIHsKLSAgICBpZiAodHlwZVF1YWxpZmllci5xdWFsaWZpZXIgIT0gRXZxVW5pZm9y
bSkKLSAgICB7Ci0gICAgICAgIGVycm9yKHR5cGVRdWFsaWZpZXIubGluZSwgImludmFsaWQgcXVh
bGlmaWVyOiIsIGdldFF1YWxpZmllclN0cmluZyh0eXBlUXVhbGlmaWVyLnF1YWxpZmllciksCi0g
ICAgICAgICAgICAgICJnbG9iYWwgbGF5b3V0IG11c3QgYmUgdW5pZm9ybSIpOwotICAgICAgICBy
ZWNvdmVyKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KKyAgICBUVHlwZVF1YWxpZmllciB0
eXBlUXVhbGlmaWVyID0gdHlwZVF1YWxpZmllckJ1aWxkZXIuZ2V0VmFyaWFibGVUeXBlUXVhbGlm
aWVyKCZtRGlhZ25vc3RpY3MpOwogICAgIGNvbnN0IFRMYXlvdXRRdWFsaWZpZXIgbGF5b3V0UXVh
bGlmaWVyID0gdHlwZVF1YWxpZmllci5sYXlvdXRRdWFsaWZpZXI7Ci0gICAgQVNTRVJUKCFsYXlv
dXRRdWFsaWZpZXIuaXNFbXB0eSgpKTsKIAotICAgIGlmIChtU2hhZGVyVmVyc2lvbiA8IDMwMCkK
KyAgICBjaGVja0ludmFyaWFudFZhcmlhYmxlUXVhbGlmaWVyKHR5cGVRdWFsaWZpZXIuaW52YXJp
YW50LCB0eXBlUXVhbGlmaWVyLnF1YWxpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGVRdWFsaWZpZXIubGluZSk7CisKKyAgICAvLyBJdCBzaG91bGQgbmV2ZXIg
YmUgdGhlIGNhc2UsIGJ1dCBzb21lIHN0cmFuZ2UgcGFyc2VyIGVycm9ycyBjYW4gc2VuZCB1cyBo
ZXJlLgorICAgIGlmIChsYXlvdXRRdWFsaWZpZXIuaXNFbXB0eSgpKQogICAgIHsKLSAgICAgICAg
ZXJyb3IodHlwZVF1YWxpZmllci5saW5lLCAibGF5b3V0IHF1YWxpZmllcnMgc3VwcG9ydGVkIGlu
IEdMU0wgRVMgMy4wMCBvbmx5IiwgImxheW91dCIpOwotICAgICAgICByZWNvdmVyKCk7CisgICAg
ICAgIGVycm9yKHR5cGVRdWFsaWZpZXIubGluZSwgIkVycm9yIGR1cmluZyBsYXlvdXQgcXVhbGlm
aWVyIHBhcnNpbmcuIiwgIj8iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChs
YXlvdXRMb2NhdGlvbkVycm9yQ2hlY2sodHlwZVF1YWxpZmllci5saW5lLCB0eXBlUXVhbGlmaWVy
LmxheW91dFF1YWxpZmllcikpCisgICAgaWYgKCFsYXlvdXRRdWFsaWZpZXIuaXNDb21iaW5hdGlv
blZhbGlkKCkpCiAgICAgewotICAgICAgICByZWNvdmVyKCk7CisgICAgICAgIGVycm9yKHR5cGVR
dWFsaWZpZXIubGluZSwgImludmFsaWQgY29tYmluYXRpb246IiwgImxheW91dCIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGxheW91dFF1YWxpZmllci5tYXRyaXhQYWNraW5n
ICE9IEVtcFVuc3BlY2lmaWVkKQorICAgIGlmICh0eXBlUXVhbGlmaWVyLnF1YWxpZmllciA9PSBF
dnFDb21wdXRlSW4pCiAgICAgewotICAgICAgICBtRGVmYXVsdE1hdHJpeFBhY2tpbmcgPSBsYXlv
dXRRdWFsaWZpZXIubWF0cml4UGFja2luZzsKLSAgICB9CisgICAgICAgIGlmIChtQ29tcHV0ZVNo
YWRlckxvY2FsU2l6ZURlY2xhcmVkICYmCisgICAgICAgICAgICAhbGF5b3V0UXVhbGlmaWVyLmlz
TG9jYWxTaXplRXF1YWwobUNvbXB1dGVTaGFkZXJMb2NhbFNpemUpKQorICAgICAgICB7CisgICAg
ICAgICAgICBlcnJvcih0eXBlUXVhbGlmaWVyLmxpbmUsICJXb3JrIGdyb3VwIHNpemUgZG9lcyBu
b3QgbWF0Y2ggdGhlIHByZXZpb3VzIGRlY2xhcmF0aW9uIiwKKyAgICAgICAgICAgICAgICAgICJs
YXlvdXQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi0gICAgaWYgKGxheW91
dFF1YWxpZmllci5ibG9ja1N0b3JhZ2UgIT0gRWJzVW5zcGVjaWZpZWQpCisgICAgICAgIGlmICht
U2hhZGVyVmVyc2lvbiA8IDMxMCkKKyAgICAgICAgeworICAgICAgICAgICAgZXJyb3IodHlwZVF1
YWxpZmllci5saW5lLCAiaW4gdHlwZSBxdWFsaWZpZXIgc3VwcG9ydGVkIGluIEdMU0wgRVMgMy4x
MCBvbmx5IiwgImxheW91dCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKCFsYXlvdXRRdWFsaWZpZXIubG9jYWxTaXplLmlzQW55VmFsdWVTZXQoKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgZXJyb3IodHlwZVF1YWxpZmllci5saW5lLCAiTm8gbG9jYWwg
d29yayBncm91cCBzaXplIHNwZWNpZmllZCIsICJsYXlvdXQiKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IFRWYXJpYWJsZSAqbWF4Q29tcHV0ZVdvcmtH
cm91cFNpemUgPSBzdGF0aWNfY2FzdDxjb25zdCBUVmFyaWFibGUgKj4oCisgICAgICAgICAgICBz
eW1ib2xUYWJsZS5maW5kQnVpbHRJbigiZ2xfTWF4Q29tcHV0ZVdvcmtHcm91cFNpemUiLCBtU2hh
ZGVyVmVyc2lvbikpOworCisgICAgICAgIGNvbnN0IFRDb25zdGFudFVuaW9uICptYXhDb21wdXRl
V29ya0dyb3VwU2l6ZURhdGEgPQorICAgICAgICAgICAgbWF4Q29tcHV0ZVdvcmtHcm91cFNpemUt
PmdldENvbnN0UG9pbnRlcigpOworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwdTsgaSA8IGxh
eW91dFF1YWxpZmllci5sb2NhbFNpemUuc2l6ZSgpOyArK2kpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmIChsYXlvdXRRdWFsaWZpZXIubG9jYWxTaXplW2ldICE9IC0xKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIG1Db21wdXRlU2hhZGVyTG9jYWxTaXplW2ldICAgICAgICAgICAg
ID0gbGF5b3V0UXVhbGlmaWVyLmxvY2FsU2l6ZVtpXTsKKyAgICAgICAgICAgICAgICBjb25zdCBp
bnQgbWF4Q29tcHV0ZVdvcmtHcm91cFNpemVWYWx1ZSA9IG1heENvbXB1dGVXb3JrR3JvdXBTaXpl
RGF0YVtpXS5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICBpZiAobUNvbXB1dGVTaGFkZXJM
b2NhbFNpemVbaV0gPCAxIHx8CisgICAgICAgICAgICAgICAgICAgIG1Db21wdXRlU2hhZGVyTG9j
YWxTaXplW2ldID4gbWF4Q29tcHV0ZVdvcmtHcm91cFNpemVWYWx1ZSkKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGVycm9yTWVzc2FnZVN0
cmVhbTsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlU3RyZWFtIDw8ICJWYWx1ZSBt
dXN0IGJlIGF0IGxlYXN0IDEgYW5kIG5vIGdyZWF0ZXIgdGhhbiAiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCBtYXhDb21wdXRlV29ya0dyb3VwU2l6ZVZhbHVlOwor
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmZXJyb3JNZXNzYWdlID0gZXJy
b3JNZXNzYWdlU3RyZWFtLnN0cigpOworCisgICAgICAgICAgICAgICAgICAgIGVycm9yKHR5cGVR
dWFsaWZpZXIubGluZSwgImludmFsaWQgdmFsdWU6IiwgZ2V0V29ya0dyb3VwU2l6ZVN0cmluZyhp
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlLmNfc3RyKCkpOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgbUNvbXB1dGVTaGFkZXJMb2NhbFNpemVEZWNsYXJlZCA9
IHRydWU7CisgICAgfQorICAgIGVsc2UKICAgICB7Ci0gICAgICAgIG1EZWZhdWx0QmxvY2tTdG9y
YWdlID0gbGF5b3V0UXVhbGlmaWVyLmJsb2NrU3RvcmFnZTsKKworICAgICAgICBpZiAoIWNoZWNr
V29ya0dyb3VwU2l6ZUlzTm90U3BlY2lmaWVkKHR5cGVRdWFsaWZpZXIubGluZSwgdHlwZVF1YWxp
Zmllci5sYXlvdXRRdWFsaWZpZXIpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAodHlwZVF1YWxpZmllci5xdWFsaWZpZXIgIT0gRXZxVW5p
Zm9ybSkKKyAgICAgICAgeworICAgICAgICAgICAgZXJyb3IodHlwZVF1YWxpZmllci5saW5lLCAi
aW52YWxpZCBxdWFsaWZpZXI6IiwKKyAgICAgICAgICAgICAgICAgIGdldFF1YWxpZmllclN0cmlu
Zyh0eXBlUXVhbGlmaWVyLnF1YWxpZmllciksICJnbG9iYWwgbGF5b3V0IG11c3QgYmUgdW5pZm9y
bSIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1TaGFk
ZXJWZXJzaW9uIDwgMzAwKQorICAgICAgICB7CisgICAgICAgICAgICBlcnJvcih0eXBlUXVhbGlm
aWVyLmxpbmUsICJsYXlvdXQgcXVhbGlmaWVycyBzdXBwb3J0ZWQgaW4gR0xTTCBFUyAzLjAwIGFu
ZCBhYm92ZSIsCisgICAgICAgICAgICAgICAgICAibGF5b3V0Iik7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBjaGVja0xvY2F0aW9uSXNOb3RTcGVjaWZpZWQodHlw
ZVF1YWxpZmllci5saW5lLCB0eXBlUXVhbGlmaWVyLmxheW91dFF1YWxpZmllcik7CisKKyAgICAg
ICAgaWYgKGxheW91dFF1YWxpZmllci5tYXRyaXhQYWNraW5nICE9IEVtcFVuc3BlY2lmaWVkKQor
ICAgICAgICB7CisgICAgICAgICAgICBtRGVmYXVsdE1hdHJpeFBhY2tpbmcgPSBsYXlvdXRRdWFs
aWZpZXIubWF0cml4UGFja2luZzsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChsYXlvdXRRdWFs
aWZpZXIuYmxvY2tTdG9yYWdlICE9IEVic1Vuc3BlY2lmaWVkKQorICAgICAgICB7CisgICAgICAg
ICAgICBtRGVmYXVsdEJsb2NrU3RvcmFnZSA9IGxheW91dFF1YWxpZmllci5ibG9ja1N0b3JhZ2U7
CisgICAgICAgIH0KICAgICB9CiB9CiAKLVRJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6
OmFkZEZ1bmN0aW9uUHJvdG90eXBlRGVjbGFyYXRpb24oY29uc3QgVEZ1bmN0aW9uICZmdW5jdGlv
biwKK1RJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OmFkZEZ1bmN0aW9uUHJvdG90eXBl
RGVjbGFyYXRpb24oY29uc3QgVEZ1bmN0aW9uICZwYXJzZWRGdW5jdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVFNvdXJjZUxvYyAmbG9jYXRpb24pCiB7Ci0gICAgLy8gTm90ZTogc3ltYm9sVGFibGVGdW5j
dGlvbiBjb3VsZCBiZSB0aGUgc2FtZSBhcyBmdW5jdGlvbiBpZiB0aGlzIGlzIHRoZSBmaXJzdCBk
ZWNsYXJhdGlvbi4KLSAgICAvLyBFaXRoZXIgd2F5IHRoZSBpbnN0YW5jZSBpbiB0aGUgc3ltYm9s
IHRhYmxlIGlzIHVzZWQgdG8gdHJhY2sgd2hldGhlciB0aGUgZnVuY3Rpb24gaXMgZGVjbGFyZWQK
LSAgICAvLyBtdWx0aXBsZSB0aW1lcy4KLSAgICBURnVuY3Rpb24gKnN5bWJvbFRhYmxlRnVuY3Rp
b24gPQotICAgICAgICBzdGF0aWNfY2FzdDxURnVuY3Rpb24gKj4oc3ltYm9sVGFibGUuZmluZChm
dW5jdGlvbi5nZXRNYW5nbGVkTmFtZSgpLCBnZXRTaGFkZXJWZXJzaW9uKCkpKTsKLSAgICBpZiAo
c3ltYm9sVGFibGVGdW5jdGlvbi0+aGFzUHJvdG90eXBlRGVjbGFyYXRpb24oKSAmJiBtU2hhZGVy
VmVyc2lvbiA9PSAxMDApCisgICAgLy8gTm90ZTogZnVuY3Rpb24gZm91bmQgZnJvbSB0aGUgc3lt
Ym9sIHRhYmxlIGNvdWxkIGJlIHRoZSBzYW1lIGFzIHBhcnNlZEZ1bmN0aW9uIGlmIHRoaXMgaXMg
dGhlCisgICAgLy8gZmlyc3QgZGVjbGFyYXRpb24uIEVpdGhlciB3YXkgdGhlIGluc3RhbmNlIGlu
IHRoZSBzeW1ib2wgdGFibGUgaXMgdXNlZCB0byB0cmFjayB3aGV0aGVyIHRoZQorICAgIC8vIGZ1
bmN0aW9uIGlzIGRlY2xhcmVkIG11bHRpcGxlIHRpbWVzLgorICAgIFRGdW5jdGlvbiAqZnVuY3Rp
b24gPSBzdGF0aWNfY2FzdDxURnVuY3Rpb24gKj4oCisgICAgICAgIHN5bWJvbFRhYmxlLmZpbmQo
cGFyc2VkRnVuY3Rpb24uZ2V0TWFuZ2xlZE5hbWUoKSwgZ2V0U2hhZGVyVmVyc2lvbigpKSk7Cisg
ICAgaWYgKGZ1bmN0aW9uLT5oYXNQcm90b3R5cGVEZWNsYXJhdGlvbigpICYmIG1TaGFkZXJWZXJz
aW9uID09IDEwMCkKICAgICB7CiAgICAgICAgIC8vIEVTU0wgMS4wMC4xNyBzZWN0aW9uIDQuMi43
LgogICAgICAgICAvLyBEb2Vzbid0IGFwcGx5IHRvIEVTU0wgMy4wMC40OiBzZWUgc2VjdGlvbiA0
LjIuMy4KICAgICAgICAgZXJyb3IobG9jYXRpb24sICJkdXBsaWNhdGUgZnVuY3Rpb24gcHJvdG90
eXBlIGRlY2xhcmF0aW9ucyBhcmUgbm90IGFsbG93ZWQiLCAiZnVuY3Rpb24iKTsKLSAgICAgICAg
cmVjb3ZlcigpOwogICAgIH0KLSAgICBzeW1ib2xUYWJsZUZ1bmN0aW9uLT5zZXRIYXNQcm90b3R5
cGVEZWNsYXJhdGlvbigpOworICAgIGZ1bmN0aW9uLT5zZXRIYXNQcm90b3R5cGVEZWNsYXJhdGlv
bigpOwogCiAgICAgVEludGVybUFnZ3JlZ2F0ZSAqcHJvdG90eXBlID0gbmV3IFRJbnRlcm1BZ2dy
ZWdhdGU7Ci0gICAgcHJvdG90eXBlLT5zZXRUeXBlKGZ1bmN0aW9uLmdldFJldHVyblR5cGUoKSk7
Ci0gICAgcHJvdG90eXBlLT5zZXROYW1lKGZ1bmN0aW9uLmdldE1hbmdsZWROYW1lKCkpOwotICAg
IHByb3RvdHlwZS0+c2V0RnVuY3Rpb25JZChmdW5jdGlvbi5nZXRVbmlxdWVJZCgpKTsKKyAgICAv
LyBUT0RPKG9ldHVhaG9AbnZpZGlhLmNvbSk6IEluc3RlYWQgb2YgY29udmVydGluZyB0aGUgZnVu
Y3Rpb24gaW5mb3JtYXRpb24gaGVyZSwgdGhlIG5vZGUgY291bGQKKyAgICAvLyBwb2ludCB0byB0
aGUgZGF0YSB0aGF0IGFscmVhZHkgZXhpc3RzIGluIHRoZSBzeW1ib2wgdGFibGUuCisgICAgcHJv
dG90eXBlLT5zZXRUeXBlKGZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkpOworICAgIHByb3RvdHlw
ZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPnNldEZyb21GdW5jdGlvbigqZnVuY3Rpb24pOwog
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbi5nZXRQYXJhbUNvdW50KCk7IGkr
KykKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9uLT5nZXRQYXJhbUNvdW50KCk7
IGkrKykKICAgICB7Ci0gICAgICAgIGNvbnN0IFRDb25zdFBhcmFtZXRlciAmcGFyYW0gPSBmdW5j
dGlvbi5nZXRQYXJhbShpKTsKKyAgICAgICAgY29uc3QgVENvbnN0UGFyYW1ldGVyICZwYXJhbSA9
IGZ1bmN0aW9uLT5nZXRQYXJhbShpKTsKICAgICAgICAgaWYgKHBhcmFtLm5hbWUgIT0gMCkKICAg
ICAgICAgewogICAgICAgICAgICAgVFZhcmlhYmxlIHZhcmlhYmxlKHBhcmFtLm5hbWUsICpwYXJh
bS50eXBlKTsKQEAgLTE5NzMsOTAgKzIwNTQsOTYgQEAgVEludGVybUFnZ3JlZ2F0ZSAqVFBhcnNl
Q29udGV4dDo6YWRkRnVuYwogICAgIHsKICAgICAgICAgLy8gRVNTTCAzLjAwLjQgc2VjdGlvbiA0
LjIuNC4KICAgICAgICAgZXJyb3IobG9jYXRpb24sICJsb2NhbCBmdW5jdGlvbiBwcm90b3R5cGUg
ZGVjbGFyYXRpb25zIGFyZSBub3QgYWxsb3dlZCIsICJmdW5jdGlvbiIpOwotICAgICAgICByZWNv
dmVyKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHByb3RvdHlwZTsKIH0KIAotVEludGVybUFnZ3Jl
Z2F0ZSAqVFBhcnNlQ29udGV4dDo6YWRkRnVuY3Rpb25EZWZpbml0aW9uKGNvbnN0IFRGdW5jdGlv
biAmZnVuY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqZnVuY3Rpb25Qcm90b3R5cGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybUFn
Z3JlZ2F0ZSAqZnVuY3Rpb25Cb2R5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uKQorVEludGVy
bUZ1bmN0aW9uRGVmaW5pdGlvbiAqVFBhcnNlQ29udGV4dDo6YWRkRnVuY3Rpb25EZWZpbml0aW9u
KAorICAgIGNvbnN0IFRGdW5jdGlvbiAmZnVuY3Rpb24sCisgICAgVEludGVybUFnZ3JlZ2F0ZSAq
ZnVuY3Rpb25QYXJhbWV0ZXJzLAorICAgIFRJbnRlcm1CbG9jayAqZnVuY3Rpb25Cb2R5LAorICAg
IGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uKQogewotICAgIC8vPz8gQ2hlY2sgdGhhdCBhbGwg
cGF0aHMgcmV0dXJuIGEgdmFsdWUgaWYgcmV0dXJuIHR5cGUgIT0gdm9pZCA/Ci0gICAgLy8gICBN
YXkgYmUgYmVzdCBkb25lIGFzIHBvc3QgcHJvY2VzcyBwaGFzZSBvbiBpbnRlcm1lZGlhdGUgY29k
ZQorICAgIC8vIENoZWNrIHRoYXQgbm9uLXZvaWQgZnVuY3Rpb25zIGhhdmUgYXQgbGVhc3Qgb25l
IHJldHVybiBzdGF0ZW1lbnQuCiAgICAgaWYgKG1DdXJyZW50RnVuY3Rpb25UeXBlLT5nZXRCYXNp
Y1R5cGUoKSAhPSBFYnRWb2lkICYmICFtRnVuY3Rpb25SZXR1cm5zVmFsdWUpCiAgICAgewogICAg
ICAgICBlcnJvcihsb2NhdGlvbiwgImZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlOiIs
ICIiLCBmdW5jdGlvbi5nZXROYW1lKCkuY19zdHIoKSk7Ci0gICAgICAgIHJlY292ZXIoKTsKICAg
ICB9CiAKLSAgICBUSW50ZXJtQWdncmVnYXRlICphZ2dyZWdhdGUgPQotICAgICAgICBpbnRlcm1l
ZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShmdW5jdGlvblByb3RvdHlwZSwgZnVuY3Rpb25Cb2R5LCBsb2Nh
dGlvbik7Ci0gICAgaW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKGFnZ3JlZ2F0ZSwg
RU9wRnVuY3Rpb24sIGxvY2F0aW9uKTsKLSAgICBhZ2dyZWdhdGUtPnNldE5hbWUoZnVuY3Rpb24u
Z2V0TWFuZ2xlZE5hbWUoKS5jX3N0cigpKTsKLSAgICBhZ2dyZWdhdGUtPnNldFR5cGUoZnVuY3Rp
b24uZ2V0UmV0dXJuVHlwZSgpKTsKLSAgICBhZ2dyZWdhdGUtPnNldEZ1bmN0aW9uSWQoZnVuY3Rp
b24uZ2V0VW5pcXVlSWQoKSk7CisgICAgaWYgKGZ1bmN0aW9uQm9keSA9PSBudWxscHRyKQorICAg
IHsKKyAgICAgICAgZnVuY3Rpb25Cb2R5ID0gbmV3IFRJbnRlcm1CbG9jaygpOworICAgICAgICBm
dW5jdGlvbkJvZHktPnNldExpbmUobG9jYXRpb24pOworICAgIH0KKyAgICBUSW50ZXJtRnVuY3Rp
b25EZWZpbml0aW9uICpmdW5jdGlvbk5vZGUgPQorICAgICAgICBuZXcgVEludGVybUZ1bmN0aW9u
RGVmaW5pdGlvbihmdW5jdGlvbi5nZXRSZXR1cm5UeXBlKCksIGZ1bmN0aW9uUGFyYW1ldGVycywg
ZnVuY3Rpb25Cb2R5KTsKKyAgICBmdW5jdGlvbk5vZGUtPnNldExpbmUobG9jYXRpb24pOworCisg
ICAgZnVuY3Rpb25Ob2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+c2V0RnJvbUZ1bmN0aW9u
KGZ1bmN0aW9uKTsKIAogICAgIHN5bWJvbFRhYmxlLnBvcCgpOwotICAgIHJldHVybiBhZ2dyZWdh
dGU7CisgICAgcmV0dXJuIGZ1bmN0aW9uTm9kZTsKIH0KIAotdm9pZCBUUGFyc2VDb250ZXh0Ojpw
YXJzZUZ1bmN0aW9uUHJvdG90eXBlKGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybUFnZ3Jl
Z2F0ZSAqKmFnZ3JlZ2F0ZU91dCkKK3ZvaWQgVFBhcnNlQ29udGV4dDo6cGFyc2VGdW5jdGlvbkRl
ZmluaXRpb25IZWFkZXIoY29uc3QgVFNvdXJjZUxvYyAmbG9jYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRGdW5jdGlvbiAqKmZ1bmN0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50
ZXJtQWdncmVnYXRlICoqYWdncmVnYXRlT3V0KQogeworICAgIEFTU0VSVChmdW5jdGlvbik7Cisg
ICAgQVNTRVJUKCpmdW5jdGlvbik7CiAgICAgY29uc3QgVFN5bWJvbCAqYnVpbHRJbiA9Ci0gICAg
ICAgIHN5bWJvbFRhYmxlLmZpbmRCdWlsdEluKGZ1bmN0aW9uLT5nZXRNYW5nbGVkTmFtZSgpLCBn
ZXRTaGFkZXJWZXJzaW9uKCkpOworICAgICAgICBzeW1ib2xUYWJsZS5maW5kQnVpbHRJbigoKmZ1
bmN0aW9uKS0+Z2V0TWFuZ2xlZE5hbWUoKSwgZ2V0U2hhZGVyVmVyc2lvbigpKTsKIAogICAgIGlm
IChidWlsdEluKQogICAgIHsKLSAgICAgICAgZXJyb3IobG9jYXRpb24sICJidWlsdC1pbiBmdW5j
dGlvbnMgY2Fubm90IGJlIHJlZGVmaW5lZCIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7
Ci0gICAgICAgIHJlY292ZXIoKTsKKyAgICAgICAgZXJyb3IobG9jYXRpb24sICJidWlsdC1pbiBm
dW5jdGlvbnMgY2Fubm90IGJlIHJlZGVmaW5lZCIsICgqZnVuY3Rpb24pLT5nZXROYW1lKCkuY19z
dHIoKSk7CiAgICAgfQotCi0gICAgVEZ1bmN0aW9uICpwcmV2RGVjID0KLSAgICAgICAgc3RhdGlj
X2Nhc3Q8VEZ1bmN0aW9uICo+KHN5bWJvbFRhYmxlLmZpbmQoZnVuY3Rpb24tPmdldE1hbmdsZWRO
YW1lKCksIGdldFNoYWRlclZlcnNpb24oKSkpOwotICAgIC8vCi0gICAgLy8gTm90ZTogICdwcmV2
RGVjJyBjb3VsZCBiZSAnZnVuY3Rpb24nIGlmIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgd2UndmUg
c2VlbiBmdW5jdGlvbgotICAgIC8vIGFzIGl0IHdvdWxkIGhhdmUganVzdCBiZWVuIHB1dCBpbiB0
aGUgc3ltYm9sIHRhYmxlLiAgT3RoZXJ3aXNlLCB3ZSdyZSBsb29raW5nIHVwCi0gICAgLy8gYW4g
ZWFybGllciBvY2N1cmFuY2UuCi0gICAgLy8KLSAgICBpZiAocHJldkRlYy0+aXNEZWZpbmVkKCkp
CisgICAgZWxzZQogICAgIHsKLSAgICAgICAgLy8gVGhlbiB0aGlzIGZ1bmN0aW9uIGFscmVhZHkg
aGFzIGEgYm9keS4KLSAgICAgICAgZXJyb3IobG9jYXRpb24sICJmdW5jdGlvbiBhbHJlYWR5IGhh
cyBhIGJvZHkiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwotICAgICAgICByZWNvdmVy
KCk7CisgICAgICAgIFRGdW5jdGlvbiAqcHJldkRlYyA9IHN0YXRpY19jYXN0PFRGdW5jdGlvbiAq
PigKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLmZpbmQoKCpmdW5jdGlvbiktPmdldE1hbmdsZWRO
YW1lKCksIGdldFNoYWRlclZlcnNpb24oKSkpOworCisgICAgICAgIC8vIE5vdGU6ICdwcmV2RGVj
JyBjb3VsZCBiZSAnZnVuY3Rpb24nIGlmIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgd2UndmUgc2Vl
biBmdW5jdGlvbiBhcyBpdAorICAgICAgICAvLyB3b3VsZCBoYXZlIGp1c3QgYmVlbiBwdXQgaW4g
dGhlIHN5bWJvbCB0YWJsZS4gT3RoZXJ3aXNlLCB3ZSdyZSBsb29raW5nIHVwIGFuIGVhcmxpZXIK
KyAgICAgICAgLy8gb2NjdXJhbmNlLgorICAgICAgICBpZiAoKmZ1bmN0aW9uICE9IHByZXZEZWMp
CisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFN3YXAgdGhlIHBhcmFtZXRlcnMgb2YgdGhlIHBy
ZXZpb3VzIGRlY2xhcmF0aW9uIHRvIHRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBmdW5jdGlvbgorICAg
ICAgICAgICAgLy8gZGVmaW5pdGlvbiAocGFyYW1ldGVyIG5hbWVzIG1heSBkaWZmZXIpLgorICAg
ICAgICAgICAgcHJldkRlYy0+c3dhcFBhcmFtZXRlcnMoKipmdW5jdGlvbik7CisKKyAgICAgICAg
ICAgIC8vIFRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIHdpbGwgc2hhcmUgdGhlIHNhbWUgc3ltYm9s
IGFzIGFueSBwcmV2aW91cyBkZWNsYXJhdGlvbi4KKyAgICAgICAgICAgICpmdW5jdGlvbiA9IHBy
ZXZEZWM7CisgICAgICAgIH0KKworICAgICAgICBpZiAoKCpmdW5jdGlvbiktPmlzRGVmaW5lZCgp
KQorICAgICAgICB7CisgICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwgImZ1bmN0aW9uIGFscmVh
ZHkgaGFzIGEgYm9keSIsICgqZnVuY3Rpb24pLT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAgICAg
IH0KKworICAgICAgICAoKmZ1bmN0aW9uKS0+c2V0RGVmaW5lZCgpOwogICAgIH0KLSAgICBwcmV2
RGVjLT5zZXREZWZpbmVkKCk7Ci0gICAgLy8KLSAgICAvLyBPdmVybG9hZCB0aGUgdW5pcXVlIElE
IG9mIHRoZSBkZWZpbml0aW9uIHRvIGJlIHRoZSBzYW1lIHVuaXF1ZSBJRCBhcyB0aGUgZGVjbGFy
YXRpb24uCi0gICAgLy8gRXZlbnR1YWxseSB3ZSB3aWxsIHByb2JhYmx5IHdhbnQgdG8gaGF2ZSBv
bmx5IGEgc2luZ2xlIGRlZmluaXRpb24gYW5kIGp1c3Qgc3dhcCB0aGUKLSAgICAvLyBhcmd1bWVu
dHMgdG8gYmUgdGhlIGRlZmluaXRpb24ncyBhcmd1bWVudHMuCi0gICAgLy8KLSAgICBmdW5jdGlv
bi0+c2V0VW5pcXVlSWQocHJldkRlYy0+Z2V0VW5pcXVlSWQoKSk7CiAKICAgICAvLyBSYWlzZSBl
cnJvciBtZXNzYWdlIGlmIG1haW4gZnVuY3Rpb24gdGFrZXMgYW55IHBhcmFtZXRlcnMgb3IgcmV0
dXJuIGFueXRoaW5nIG90aGVyIHRoYW4gdm9pZAotICAgIGlmIChmdW5jdGlvbi0+Z2V0TmFtZSgp
ID09ICJtYWluIikKKyAgICBpZiAoKCpmdW5jdGlvbiktPmdldE5hbWUoKSA9PSAibWFpbiIpCiAg
ICAgewotICAgICAgICBpZiAoZnVuY3Rpb24tPmdldFBhcmFtQ291bnQoKSA+IDApCisgICAgICAg
IGlmICgoKmZ1bmN0aW9uKS0+Z2V0UGFyYW1Db3VudCgpID4gMCkKICAgICAgICAgewotICAgICAg
ICAgICAgZXJyb3IobG9jYXRpb24sICJmdW5jdGlvbiBjYW5ub3QgdGFrZSBhbnkgcGFyYW1ldGVy
KHMpIiwgZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKLSAgICAgICAgICAgIHJlY292ZXIo
KTsKKyAgICAgICAgICAgIGVycm9yKGxvY2F0aW9uLCAiZnVuY3Rpb24gY2Fubm90IHRha2UgYW55
IHBhcmFtZXRlcihzKSIsCisgICAgICAgICAgICAgICAgICAoKmZ1bmN0aW9uKS0+Z2V0TmFtZSgp
LmNfc3RyKCkpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0UmV0dXJuVHlw
ZSgpLmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQpCisgICAgICAgIGlmICgoKmZ1bmN0aW9uKS0+
Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGVycm9yKGxvY2F0aW9uLCAiIiwgZnVuY3Rpb24tPmdldFJldHVyblR5cGUoKS5n
ZXRCYXNpY1N0cmluZygpLAorICAgICAgICAgICAgZXJyb3IobG9jYXRpb24sICIiLCAoKmZ1bmN0
aW9uKS0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljU3RyaW5nKCksCiAgICAgICAgICAgICAgICAg
ICAibWFpbiBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiKTsKLSAgICAgICAgICAgIHJl
Y292ZXIoKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8vCiAgICAgLy8gUmVtZW1iZXIgdGhl
IHJldHVybiB0eXBlIGZvciBsYXRlciBjaGVja2luZyBmb3IgUkVUVVJOIHN0YXRlbWVudHMuCiAg
ICAgLy8KLSAgICBtQ3VycmVudEZ1bmN0aW9uVHlwZSAgPSAmKHByZXZEZWMtPmdldFJldHVyblR5
cGUoKSk7CisgICAgbUN1cnJlbnRGdW5jdGlvblR5cGUgID0gJigoKmZ1bmN0aW9uKS0+Z2V0UmV0
dXJuVHlwZSgpKTsKICAgICBtRnVuY3Rpb25SZXR1cm5zVmFsdWUgPSBmYWxzZTsKIAogICAgIC8v
CkBAIC0yMDY4LDkgKzIxNTUsOSBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6OnBhcnNlRnVuY3Rpb25Q
cm90b3R5CiAgICAgLy8ga25vd3Mgd2hlcmUgdG8gZmluZCBwYXJhbWV0ZXJzLgogICAgIC8vCiAg
ICAgVEludGVybUFnZ3JlZ2F0ZSAqcGFyYW1Ob2RlcyA9IG5ldyBUSW50ZXJtQWdncmVnYXRlOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb24tPmdldFBhcmFtQ291bnQoKTsgaSsr
KQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgKCpmdW5jdGlvbiktPmdldFBhcmFtQ291bnQo
KTsgaSsrKQogICAgIHsKLSAgICAgICAgY29uc3QgVENvbnN0UGFyYW1ldGVyICZwYXJhbSA9IGZ1
bmN0aW9uLT5nZXRQYXJhbShpKTsKKyAgICAgICAgY29uc3QgVENvbnN0UGFyYW1ldGVyICZwYXJh
bSA9ICgqZnVuY3Rpb24pLT5nZXRQYXJhbShpKTsKICAgICAgICAgaWYgKHBhcmFtLm5hbWUgIT0g
MCkKICAgICAgICAgewogICAgICAgICAgICAgVFZhcmlhYmxlICp2YXJpYWJsZSA9IG5ldyBUVmFy
aWFibGUocGFyYW0ubmFtZSwgKnBhcmFtLnR5cGUpOwpAQCAtMjA4MCw3ICsyMTY3LDYgQEAgdm9p
ZCBUUGFyc2VDb250ZXh0OjpwYXJzZUZ1bmN0aW9uUHJvdG90eQogICAgICAgICAgICAgaWYgKCFz
eW1ib2xUYWJsZS5kZWNsYXJlKHZhcmlhYmxlKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICBlcnJvcihsb2NhdGlvbiwgInJlZGVmaW5pdGlvbiIsIHZhcmlhYmxlLT5nZXROYW1lKCku
Y19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICAgICAgICAgIHBh
cmFtTm9kZXMgPSBpbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgKICAgICAgICAgICAgICAgICAg
ICAgcGFyYW1Ob2RlcywgaW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgKnBhcmFtLnR5cGUs
IGxvY2F0aW9uKSwgbG9jYXRpb24pOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjEy
NCwyNCArMjIxMCwyMiBAQCBURnVuY3Rpb24gKlRQYXJzZUNvbnRleHQ6OnBhcnNlRnVuY3Rpb25E
CiAgICAgICAgIC8vIFRoZXJlZm9yZSBvdmVybG9hZGluZyBvciByZWRlZmluaW5nIGJ1aWx0aW4g
ZnVuY3Rpb25zIGlzIGFuIGVycm9yLgogICAgICAgICBlcnJvcihsb2NhdGlvbiwgIk5hbWUgb2Yg
YSBidWlsdC1pbiBmdW5jdGlvbiBjYW5ub3QgYmUgcmVkZWNsYXJlZCBhcyBmdW5jdGlvbiIsCiAg
ICAgICAgICAgICAgIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7Ci0gICAgICAgIHJlY292
ZXIoKTsKICAgICB9CiAgICAgZWxzZSBpZiAocHJldkRlYykKICAgICB7CiAgICAgICAgIGlmIChw
cmV2RGVjLT5nZXRSZXR1cm5UeXBlKCkgIT0gZnVuY3Rpb24tPmdldFJldHVyblR5cGUoKSkKICAg
ICAgICAgewotICAgICAgICAgICAgZXJyb3IobG9jYXRpb24sICJvdmVybG9hZGVkIGZ1bmN0aW9u
cyBtdXN0IGhhdmUgdGhlIHNhbWUgcmV0dXJuIHR5cGUiLAorICAgICAgICAgICAgZXJyb3IobG9j
YXRpb24sICJmdW5jdGlvbiBtdXN0IGhhdmUgdGhlIHNhbWUgcmV0dXJuIHR5cGUgaW4gYWxsIG9m
IGl0cyBkZWNsYXJhdGlvbnMiLAogICAgICAgICAgICAgICAgICAgZnVuY3Rpb24tPmdldFJldHVy
blR5cGUoKS5nZXRCYXNpY1N0cmluZygpKTsKLSAgICAgICAgICAgIHJlY292ZXIoKTsKICAgICAg
ICAgfQogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByZXZEZWMtPmdldFBhcmFtQ291
bnQoKTsgKytpKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAocHJldkRlYy0+Z2V0UGFyYW0o
aSkudHlwZS0+Z2V0UXVhbGlmaWVyKCkgIT0KICAgICAgICAgICAgICAgICBmdW5jdGlvbi0+Z2V0
UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyKCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgZXJyb3IobG9jYXRpb24sICJvdmVybG9hZGVkIGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhl
IHNhbWUgcGFyYW1ldGVyIHF1YWxpZmllcnMiLAorICAgICAgICAgICAgICAgIGVycm9yKGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiBtdXN0IGhhdmUgdGhlIHNhbWUg
cGFyYW1ldGVyIHF1YWxpZmllcnMgaW4gYWxsIG9mIGl0cyBkZWNsYXJhdGlvbnMiLAogICAgICAg
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uLT5nZXRQYXJhbShpKS50eXBlLT5nZXRRdWFsaWZpZXJT
dHJpbmcoKSk7Ci0gICAgICAgICAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQpAQCAtMjE1NSwxNSArMjIzOSwxMiBAQCBURnVuY3Rpb24gKlRQYXJzZUNv
bnRleHQ6OnBhcnNlRnVuY3Rpb25ECiAgICAgICAgIGlmICghcHJldlN5bS0+aXNGdW5jdGlvbigp
KQogICAgICAgICB7CiAgICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwgInJlZGVmaW5pdGlvbiIs
IGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSwgImZ1bmN0aW9uIik7Ci0gICAgICAgICAgICBy
ZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZQogICAgIHsKICAgICAgICAgLy8g
SW5zZXJ0IHRoZSB1bm1hbmdsZWQgbmFtZSB0byBkZXRlY3QgcG90ZW50aWFsIGZ1dHVyZSByZWRl
ZmluaXRpb24gYXMgYSB2YXJpYWJsZS4KLSAgICAgICAgVEZ1bmN0aW9uICpuZXdGdW5jdGlvbiA9
Ci0gICAgICAgICAgICBuZXcgVEZ1bmN0aW9uKE5ld1Bvb2xUU3RyaW5nKGZ1bmN0aW9uLT5nZXRO
YW1lKCkuY19zdHIoKSksICZmdW5jdGlvbi0+Z2V0UmV0dXJuVHlwZSgpKTsKLSAgICAgICAgc3lt
Ym9sVGFibGUuZ2V0T3V0ZXJMZXZlbCgpLT5pbnNlcnRVbm1hbmdsZWQobmV3RnVuY3Rpb24pOwor
ICAgICAgICBzeW1ib2xUYWJsZS5nZXRPdXRlckxldmVsKCktPmluc2VydFVubWFuZ2xlZChmdW5j
dGlvbik7CiAgICAgfQogCiAgICAgLy8gV2UncmUgYXQgdGhlIGlubmVyIHNjb3BlIGxldmVsIG9m
IHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50cyBhbmQgYm9keSBzdGF0ZW1lbnQuCkBAIC0yMTc4LDE1
NyArMjI1OSw2MiBAQCBURnVuY3Rpb24gKlRQYXJzZUNvbnRleHQ6OnBhcnNlRnVuY3Rpb25ECiAg
ICAgcmV0dXJuIGZ1bmN0aW9uOwogfQogCitURnVuY3Rpb24gKlRQYXJzZUNvbnRleHQ6OnBhcnNl
RnVuY3Rpb25IZWFkZXIoY29uc3QgVFB1YmxpY1R5cGUgJnR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAqbmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9j
ICZsb2NhdGlvbikKK3sKKyAgICBpZiAodHlwZS5xdWFsaWZpZXIgIT0gRXZxR2xvYmFsICYmIHR5
cGUucXVhbGlmaWVyICE9IEV2cVRlbXBvcmFyeSkKKyAgICB7CisgICAgICAgIGVycm9yKGxvY2F0
aW9uLCAibm8gcXVhbGlmaWVycyBhbGxvd2VkIGZvciBmdW5jdGlvbiByZXR1cm4iLAorICAgICAg
ICAgICAgICBnZXRRdWFsaWZpZXJTdHJpbmcodHlwZS5xdWFsaWZpZXIpKTsKKyAgICB9CisgICAg
aWYgKCF0eXBlLmxheW91dFF1YWxpZmllci5pc0VtcHR5KCkpCisgICAgeworICAgICAgICBlcnJv
cihsb2NhdGlvbiwgIm5vIHF1YWxpZmllcnMgYWxsb3dlZCBmb3IgZnVuY3Rpb24gcmV0dXJuIiwg
ImxheW91dCIpOworICAgIH0KKyAgICAvLyBtYWtlIHN1cmUgYSBzYW1wbGVyIGlzIG5vdCBpbnZv
bHZlZCBhcyB3ZWxsLi4uCisgICAgY2hlY2tJc05vdFNhbXBsZXIobG9jYXRpb24sIHR5cGUudHlw
ZVNwZWNpZmllck5vbkFycmF5LAorICAgICAgICAgICAgICAgICAgICAgICJzYW1wbGVycyBjYW4n
dCBiZSBmdW5jdGlvbiByZXR1cm4gdmFsdWVzIik7CisgICAgaWYgKG1TaGFkZXJWZXJzaW9uIDwg
MzAwKQorICAgIHsKKyAgICAgICAgLy8gQXJyYXkgcmV0dXJuIHZhbHVlcyBhcmUgZm9yYmlkZGVu
LCBidXQgdGhlcmUncyBhbHNvIG5vIHZhbGlkIHN5bnRheCBmb3IgZGVjbGFyaW5nIGFycmF5Cisg
ICAgICAgIC8vIHJldHVybiB2YWx1ZXMgaW4gRVNTTCAxLjAwLgorICAgICAgICBBU1NFUlQodHlw
ZS5hcnJheVNpemUgPT0gMCB8fCBtRGlhZ25vc3RpY3MubnVtRXJyb3JzKCkgPiAwKTsKKworICAg
ICAgICBpZiAodHlwZS5pc1N0cnVjdHVyZUNvbnRhaW5pbmdBcnJheXMoKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgLy8gRVNTTCAxLjAwLjE3IHNlY3Rpb24gNi4xIEZ1bmN0aW9uIERlZmluaXRp
b25zCisgICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwgInN0cnVjdHVyZXMgY29udGFpbmluZyBh
cnJheXMgY2FuJ3QgYmUgZnVuY3Rpb24gcmV0dXJuIHZhbHVlcyIsCisgICAgICAgICAgICAgICAg
ICBUVHlwZSh0eXBlKS5nZXRDb21wbGV0ZVN0cmluZygpLmNfc3RyKCkpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgLy8gQWRkIHRoZSBmdW5jdGlvbiBhcyBhIHByb3RvdHlwZSBhZnRlciBwYXJz
aW5nIGl0ICh3ZSBkbyBub3Qgc3VwcG9ydCByZWN1cnNpb24pCisgICAgcmV0dXJuIG5ldyBURnVu
Y3Rpb24obmFtZSwgbmV3IFRUeXBlKHR5cGUpKTsKK30KKwogVEZ1bmN0aW9uICpUUGFyc2VDb250
ZXh0OjphZGRDb25zdHJ1Y3RvckZ1bmMoY29uc3QgVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGVJbikK
IHsKICAgICBUUHVibGljVHlwZSBwdWJsaWNUeXBlID0gcHVibGljVHlwZUluOwotICAgIGlmIChw
dWJsaWNUeXBlLmlzU3RydWN0U3BlY2lmaWVyKQorICAgIGlmIChwdWJsaWNUeXBlLmlzU3RydWN0
U3BlY2lmaWVyKCkpCiAgICAgewotICAgICAgICBlcnJvcihwdWJsaWNUeXBlLmxpbmUsICJjb25z
dHJ1Y3RvciBjYW4ndCBiZSBhIHN0cnVjdHVyZSBkZWZpbml0aW9uIiwKLSAgICAgICAgICAgICAg
Z2V0QmFzaWNTdHJpbmcocHVibGljVHlwZS50eXBlKSk7Ci0gICAgICAgIHJlY292ZXIoKTsKKyAg
ICAgICAgZXJyb3IocHVibGljVHlwZS5nZXRMaW5lKCksICJjb25zdHJ1Y3RvciBjYW4ndCBiZSBh
IHN0cnVjdHVyZSBkZWZpbml0aW9uIiwKKyAgICAgICAgICAgICAgZ2V0QmFzaWNTdHJpbmcocHVi
bGljVHlwZS5nZXRCYXNpY1R5cGUoKSkpOwogICAgIH0KIAogICAgIFRPcGVyYXRvciBvcCA9IEVP
cE51bGw7Ci0gICAgaWYgKHB1YmxpY1R5cGUudXNlckRlZikKKyAgICBpZiAocHVibGljVHlwZS5n
ZXRVc2VyRGVmKCkpCiAgICAgewogICAgICAgICBvcCA9IEVPcENvbnN0cnVjdFN0cnVjdDsKICAg
ICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgc3dpdGNoIChwdWJsaWNUeXBlLnR5cGUpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICAgICAgaWYg
KHB1YmxpY1R5cGUuaXNNYXRyaXgoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgIHN3aXRjaCAocHVibGljVHlwZS5nZXRDb2xzKCkpCi0gICAgICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzd2l0Y2ggKHB1YmxpY1R5cGUuZ2V0Um93cygpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RNYXQyOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0MngzOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
NDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0
TWF0Mng0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN3aXRjaCAocHVibGljVHlwZS5nZXRSb3dzKCkpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdE1hdDN4
MjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdE1hdDM7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSA0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1
Y3RNYXQzeDQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3dpdGNoIChwdWJsaWNUeXBlLmdldFJvd3MoKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0
NHgyOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0NHgzOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgNDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29u
c3RydWN0TWF0NDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBz
d2l0Y2ggKHB1YmxpY1R5cGUuZ2V0Tm9taW5hbFNpemUoKSkKLSAgICAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wID0gRU9wQ29uc3RydWN0RmxvYXQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RWZWMyOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0VmVjMzsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdFZlYzQ7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIGNh
c2UgRWJ0SW50OgotICAgICAgICAgICAgICAgIHN3aXRjaCAocHVibGljVHlwZS5nZXROb21pbmFs
U2l6ZSgpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgot
ICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RJbnQ7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgotICAgICAg
ICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMjsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDM6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdElWZWMzOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0SVZlYzQ7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgICAgIGNhc2UgRWJ0VUludDoKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKHB1YmxpY1R5
cGUuZ2V0Tm9taW5hbFNpemUoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgMToKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0VUlu
dDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBj
YXNlIDI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdFVWZWMyOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
MzoKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0VVZlYzM7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA0Ogot
ICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RVVmVjNDsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBicmVhazsKLQotICAgICAgICAgICAgY2FzZSBFYnRCb29sOgotICAgICAgICAgICAgICAgIHN3
aXRjaCAocHVibGljVHlwZS5nZXROb21pbmFsU2l6ZSgpKQotICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBF
T3BDb25zdHJ1Y3RCb29sOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29u
c3RydWN0QlZlYzI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1
Y3RCVmVjMzsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdEJW
ZWM0OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KKyAgICAgICAgb3AgPSBzaDo6VHlwZVRvQ29uc3Ry
dWN0b3JPcGVyYXRvcihUVHlwZShwdWJsaWNUeXBlKSk7CiAgICAgICAgIGlmIChvcCA9PSBFT3BO
dWxsKQogICAgICAgICB7Ci0gICAgICAgICAgICBlcnJvcihwdWJsaWNUeXBlLmxpbmUsICJjYW5u
b3QgY29uc3RydWN0IHRoaXMgdHlwZSIsIGdldEJhc2ljU3RyaW5nKHB1YmxpY1R5cGUudHlwZSkp
OwotICAgICAgICAgICAgcmVjb3ZlcigpOwotICAgICAgICAgICAgcHVibGljVHlwZS50eXBlID0g
RWJ0RmxvYXQ7CisgICAgICAgICAgICBlcnJvcihwdWJsaWNUeXBlLmdldExpbmUoKSwgImNhbm5v
dCBjb25zdHJ1Y3QgdGhpcyB0eXBlIiwKKyAgICAgICAgICAgICAgICAgIGdldEJhc2ljU3RyaW5n
KHB1YmxpY1R5cGUuZ2V0QmFzaWNUeXBlKCkpKTsKKyAgICAgICAgICAgIHB1YmxpY1R5cGUuc2V0
QmFzaWNUeXBlKEVidEZsb2F0KTsKICAgICAgICAgICAgIG9wICAgICAgICAgICAgICA9IEVPcENv
bnN0cnVjdEZsb2F0OwogICAgICAgICB9CiAgICAgfQpAQCAtMjM0MSw1MiArMjMyNywzNiBAQCBU
RnVuY3Rpb24gKlRQYXJzZUNvbnRleHQ6OmFkZENvbnN0cnVjdG9yCiAvLyBUaGlzIGZ1bmN0aW9u
IGlzIHVzZWQgdG8gdGVzdCBmb3IgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSBwYXJhbWV0ZXJzIHBh
c3NlZCB0byB2YXJpb3VzIGNvbnN0cnVjdG9yCiAvLyBmdW5jdGlvbnMgYW5kIGFsc28gY29udmVy
dCB0aGVtIHRvIHRoZSByaWdodCBkYXRhdHlwZSBpZiBpdCBpcyBhbGxvd2VkIGFuZCByZXF1aXJl
ZC4KIC8vCi0vLyBSZXR1cm5zIDAgZm9yIGFuIGVycm9yIG9yIHRoZSBjb25zdHJ1Y3RlZCBub2Rl
IChhZ2dyZWdhdGUgb3IgdHlwZWQpIGZvciBubyBlcnJvci4KKy8vIFJldHVybnMgYSBub2RlIHRv
IGFkZCB0byB0aGUgdHJlZSByZWdhcmRsZXNzIG9mIGlmIGFuIGVycm9yIHdhcyBnZW5lcmF0ZWQg
b3Igbm90LgogLy8KIFRJbnRlcm1UeXBlZCAqVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWN0b3Io
VEludGVybU5vZGUgKmFyZ3VtZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVFR5cGUgKnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRPcGVyYXRvciBvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVEZ1bmN0aW9uICpmbkNhbGwsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpCiB7Ci0gICAgVElu
dGVybUFnZ3JlZ2F0ZSAqY29uc3RydWN0b3IgPSBhcmd1bWVudHMtPmdldEFzQWdncmVnYXRlKCk7
Ci0gICAgQVNTRVJUKGNvbnN0cnVjdG9yICE9IG51bGxwdHIpOwotCi0gICAgaWYgKHR5cGUtPmlz
QXJyYXkoKSkKKyAgICBUVHlwZSB0eXBlID0gZm5DYWxsLT5nZXRSZXR1cm5UeXBlKCk7CisgICAg
aWYgKHR5cGUuaXNVbnNpemVkQXJyYXkoKSkKICAgICB7Ci0gICAgICAgIC8vIEdMU0wgRVMgMy4w
MCBzZWN0aW9uIDUuNC40OiBFYWNoIGFyZ3VtZW50IG11c3QgYmUgdGhlIHNhbWUgdHlwZSBhcyB0
aGUgZWxlbWVudCB0eXBlIG9mCi0gICAgICAgIC8vIHRoZSBhcnJheS4KLSAgICAgICAgVEludGVy
bVNlcXVlbmNlICphcmdzID0gY29uc3RydWN0b3ItPmdldFNlcXVlbmNlKCk7Ci0gICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJncy0+c2l6ZSgpOyBpKyspCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnN0IFRUeXBlICZhcmdUeXBlID0gKCphcmdzKVtpXS0+Z2V0QXNUeXBlZCgpLT5n
ZXRUeXBlKCk7Ci0gICAgICAgICAgICAvLyBJdCBoYXMgYWxyZWFkeSBiZWVuIGNoZWNrZWQgdGhh
dCB0aGUgYXJndW1lbnQgaXMgbm90IGFuIGFycmF5LgotICAgICAgICAgICAgQVNTRVJUKCFhcmdU
eXBlLmlzQXJyYXkoKSk7Ci0gICAgICAgICAgICBpZiAoIWFyZ1R5cGUuc2FtZUVsZW1lbnRUeXBl
KCp0eXBlKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBlcnJvcihsaW5lLCAiQXJy
YXkgY29uc3RydWN0b3IgYXJndW1lbnQgaGFzIGFuIGluY29ycmVjdCB0eXBlIiwgIkVycm9yIik7
Ci0gICAgICAgICAgICAgICAgcmVjb3ZlcigpOwotICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIHR5cGUuc2V0QXJyYXlTaXpl
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oZm5DYWxsLT5nZXRQYXJhbUNvdW50KCkpKTsKICAg
ICB9Ci0gICAgZWxzZSBpZiAob3AgPT0gRU9wQ29uc3RydWN0U3RydWN0KQorICAgIGJvb2wgY29u
c3RUeXBlID0gdHJ1ZTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZuQ2FsbC0+Z2V0UGFy
YW1Db3VudCgpOyArK2kpCiAgICAgewotICAgICAgICBjb25zdCBURmllbGRMaXN0ICZmaWVsZHMg
PSB0eXBlLT5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7Ci0gICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAq
YXJncyAgICA9IGNvbnN0cnVjdG9yLT5nZXRTZXF1ZW5jZSgpOwotCi0gICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoaSA+PSBhcmdzLT5zaXplKCkgfHwgKCphcmdzKVtpXS0+Z2V0QXNUeXBlZCgpLT5nZXRU
eXBlKCkgIT0gKmZpZWxkc1tpXS0+dHlwZSgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGVycm9yKGxpbmUsICJTdHJ1Y3R1cmUgY29uc3RydWN0b3IgYXJndW1lbnRzIGRvIG5vdCBt
YXRjaCBzdHJ1Y3R1cmUgZmllbGRzIiwKLSAgICAgICAgICAgICAgICAgICAgICAiRXJyb3IiKTsK
LSAgICAgICAgICAgICAgICByZWNvdmVyKCk7CisgICAgICAgIGNvbnN0IFRDb25zdFBhcmFtZXRl
ciAmcGFyYW0gPSBmbkNhbGwtPmdldFBhcmFtKGkpOworICAgICAgICBpZiAocGFyYW0udHlwZS0+
Z2V0UXVhbGlmaWVyKCkgIT0gRXZxQ29uc3QpCisgICAgICAgICAgICBjb25zdFR5cGUgPSBmYWxz
ZTsKKyAgICB9CisgICAgaWYgKGNvbnN0VHlwZSkKKyAgICAgICAgdHlwZS5zZXRRdWFsaWZpZXIo
RXZxQ29uc3QpOwogCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KKyAgICBpZiAoIWNoZWNrQ29uc3RydWN0b3JBcmd1bWVudHMobGluZSwgYXJndW1l
bnRzLCAqZm5DYWxsLCBvcCwgdHlwZSkpCisgICAgeworICAgICAgICBUSW50ZXJtVHlwZWQgKmR1
bW15Tm9kZSA9IGludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcihudWxscHRyLCBvcCwg
bGluZSk7CisgICAgICAgIGR1bW15Tm9kZS0+c2V0VHlwZSh0eXBlKTsKKyAgICAgICAgcmV0dXJu
IGR1bW15Tm9kZTsKICAgICB9CisgICAgVEludGVybUFnZ3JlZ2F0ZSAqY29uc3RydWN0b3IgPSBh
cmd1bWVudHMtPmdldEFzQWdncmVnYXRlKCk7CisgICAgQVNTRVJUKGNvbnN0cnVjdG9yICE9IG51
bGxwdHIpOwogCiAgICAgLy8gVHVybiB0aGUgYXJndW1lbnQgbGlzdCBpdHNlbGYgaW50byBhIGNv
bnN0cnVjdG9yCiAgICAgY29uc3RydWN0b3ItPnNldE9wKG9wKTsKQEAgLTIzOTQsMTg5ICsyMzY0
LDU4IEBAIFRJbnRlcm1UeXBlZCAqVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWMKICAgICBBU1NF
UlQoY29uc3RydWN0b3ItPmlzQ29uc3RydWN0b3IoKSk7CiAKICAgICAvLyBOZWVkIHRvIHNldCB0
eXBlIGJlZm9yZSBzZXRQcmVjaXNpb25Gcm9tQ2hpbGRyZW4oKSBiZWNhdXNlIGJvb2wgZG9lc24n
dCBoYXZlIHByZWNpc2lvbi4KLSAgICBjb25zdHJ1Y3Rvci0+c2V0VHlwZSgqdHlwZSk7CisgICAg
Y29uc3RydWN0b3ItPnNldFR5cGUodHlwZSk7CiAKICAgICAvLyBTdHJ1Y3RzIHNob3VsZCBub3Qg
YmUgcHJlY2lzaW9uIHF1YWxpZmllZCwgdGhlIGluZGl2aWR1YWwgbWVtYmVycyBtYXkgYmUuCiAg
ICAgLy8gQnVpbHQtaW4gdHlwZXMgb24gdGhlIG90aGVyIGhhbmQgc2hvdWxkIGJlIHByZWNpc2lv
biBxdWFsaWZpZWQuCiAgICAgaWYgKG9wICE9IEVPcENvbnN0cnVjdFN0cnVjdCkKICAgICB7CiAg
ICAgICAgIGNvbnN0cnVjdG9yLT5zZXRQcmVjaXNpb25Gcm9tQ2hpbGRyZW4oKTsKLSAgICAgICAg
dHlwZS0+c2V0UHJlY2lzaW9uKGNvbnN0cnVjdG9yLT5nZXRQcmVjaXNpb24oKSk7Ci0gICAgfQot
Ci0gICAgVEludGVybVR5cGVkICpjb25zdENvbnN0cnVjdG9yID0gaW50ZXJtZWRpYXRlLmZvbGRB
Z2dyZWdhdGVCdWlsdEluKGNvbnN0cnVjdG9yKTsKLSAgICBpZiAoY29uc3RDb25zdHJ1Y3RvcikK
LSAgICB7Ci0gICAgICAgIHJldHVybiBjb25zdENvbnN0cnVjdG9yOwotICAgIH0KLQotICAgIHJl
dHVybiBjb25zdHJ1Y3RvcjsKLX0KLQotLy8KLS8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUg
dHJlZSByZXByZXNlbnRhdGlvbiBmb3IgdGhlIHZlY3RvciBmaWVsZChzKSBiZWluZyBhY2Nlc3Nl
ZCBmcm9tIGNvbnRhbnQKLS8vIHZlY3Rvci4KLS8vIElmIG9ubHkgb25lIGNvbXBvbmVudCBvZiB2
ZWN0b3IgaXMgYWNjZXNzZWQgKHYueCBvciB2WzBdIHdoZXJlIHYgaXMgYSBjb250YW50IHZlY3Rv
ciksIHRoZW4gYQotLy8gY29udGFudCBub2RlIGlzIHJldHVybmVkLCBlbHNlIGFuIGFnZ3JlZ2F0
ZSBub2RlIGlzIHJldHVybmVkIChmb3Igdi54eSkuIFRoZSBpbnB1dCB0byB0aGlzCi0vLyBmdW5j
dGlvbiBjb3VsZCBlaXRoZXIgYmUgdGhlIHN5bWJvbCBub2RlIG9yIGl0IGNvdWxkIGJlIHRoZSBp
bnRlcm1lZGlhdGUgdHJlZSByZXByZXNlbnRhdGlvbiBvZgotLy8gYWNjZXNzaW5nIGZpZWxkcyBp
biBhIGNvbnN0YW50IHN0cnVjdHVyZSBvciBjb2x1bW4gb2YgYSBjb25zdGFudCBtYXRyaXguCi0v
LwotVEludGVybVR5cGVkICpUUGFyc2VDb250ZXh0OjphZGRDb25zdFZlY3Rvck5vZGUoVFZlY3Rv
ckZpZWxkcyAmZmllbGRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVEludGVybUNvbnN0YW50VW5pb24gKm5vZGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsaW5lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBvdXRPZlJh
bmdlSW5kZXhJc0Vycm9yKQotewotICAgIGNvbnN0IFRDb25zdGFudFVuaW9uICp1bmlvbkFycmF5
ID0gbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKLSAgICBBU1NFUlQodW5pb25BcnJheSk7
Ci0KLSAgICBUQ29uc3RhbnRVbmlvbiAqY29uc3RBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvbltm
aWVsZHMubnVtXTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZmllbGRzLm51bTsgaSsrKQot
ICAgIHsKLSAgICAgICAgaWYgKGZpZWxkcy5vZmZzZXRzW2ldID49IG5vZGUtPmdldFR5cGUoKS5n
ZXROb21pbmFsU2l6ZSgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVh
bSBleHRyYUluZm9TdHJlYW07Ci0gICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgInZlY3Rv
ciBmaWVsZCBzZWxlY3Rpb24gb3V0IG9mIHJhbmdlICciIDw8IGZpZWxkcy5vZmZzZXRzW2ldIDw8
ICInIjsKLSAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVh
bS5zdHIoKTsKLSAgICAgICAgICAgIG91dE9mUmFuZ2VFcnJvcihvdXRPZlJhbmdlSW5kZXhJc0Vy
cm9yLCBsaW5lLCAiIiwgIlsiLCBleHRyYUluZm8uY19zdHIoKSk7Ci0gICAgICAgICAgICBmaWVs
ZHMub2Zmc2V0c1tpXSA9IG5vZGUtPmdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpIC0gMTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGNvbnN0QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ZpZWxkcy5vZmZz
ZXRzW2ldXTsKLSAgICB9Ci0gICAgcmV0dXJuIGludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9u
KGNvbnN0QXJyYXksIG5vZGUtPmdldFR5cGUoKSwgbGluZSk7Ci19Ci0KLS8vCi0vLyBUaGlzIGZ1
bmN0aW9uIHJldHVybnMgdGhlIGNvbHVtbiBiZWluZyBhY2Nlc3NlZCBmcm9tIGEgY29uc3RhbnQg
bWF0cml4LiBUaGUgdmFsdWVzIGFyZSByZXRyaWV2ZWQKLS8vIGZyb20gdGhlIHN5bWJvbCB0YWJs
ZSBhbmQgcGFyc2UtdHJlZSBpcyBidWlsdCBmb3IgYSB2ZWN0b3IgKGVhY2ggY29sdW1uIG9mIGEg
bWF0cml4IGlzIGEgdmVjdG9yKS4KLS8vIFRoZSBpbnB1dCB0byB0aGUgZnVuY3Rpb24gY291bGQg
ZWl0aGVyIGJlIGEgc3ltYm9sIG5vZGUgKG1bMF0gd2hlcmUgbSBpcyBhIGNvbnN0YW50IG1hdHJp
eCl0aGF0Ci0vLyByZXByZXNlbnRzIGEgY29uc3RhbnQgbWF0cml4IG9yIGl0IGNvdWxkIGJlIHRo
ZSB0cmVlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb25zdGFudCBtYXRyaXgKLS8vIChzLm0xWzBd
IHdoZXJlIHMgaXMgYSBjb25zdGFudCBzdHJ1Y3R1cmUpCi0vLwotVEludGVybVR5cGVkICpUUGFy
c2VDb250ZXh0OjphZGRDb25zdE1hdHJpeE5vZGUoaW50IGluZGV4LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybUNvbnN0YW50VW5pb24gKm5v
ZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUU291cmNlTG9jICZsaW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBvdXRPZlJhbmdlSW5kZXhJc0Vycm9yKQotewotICAgIGlmIChpbmRl
eCA+PSBub2RlLT5nZXRUeXBlKCkuZ2V0Q29scygpKQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJp
bmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgIm1h
dHJpeCBmaWVsZCBzZWxlY3Rpb24gb3V0IG9mIHJhbmdlICciIDw8IGluZGV4IDw8ICInIjsKLSAg
ICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwotICAg
ICAgICBvdXRPZlJhbmdlRXJyb3Iob3V0T2ZSYW5nZUluZGV4SXNFcnJvciwgbGluZSwgIiIsICJb
IiwgZXh0cmFJbmZvLmNfc3RyKCkpOwotICAgICAgICBpbmRleCA9IG5vZGUtPmdldFR5cGUoKS5n
ZXRDb2xzKCkgLSAxOwotICAgIH0KLQotICAgIGNvbnN0IFRDb25zdGFudFVuaW9uICp1bmlvbkFy
cmF5ID0gbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKLSAgICBpbnQgc2l6ZSA9IG5vZGUt
PmdldFR5cGUoKS5nZXRDb2xzKCk7Ci0gICAgcmV0dXJuIGludGVybWVkaWF0ZS5hZGRDb25zdGFu
dFVuaW9uKCZ1bmlvbkFycmF5W3NpemUgKiBpbmRleF0sIG5vZGUtPmdldFR5cGUoKSwgbGluZSk7
Ci19Ci0KLS8vCi0vLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYW4gZWxlbWVudCBvZiBhbiBhcnJh
eSBhY2Nlc3NlZCBmcm9tIGEgY29uc3RhbnQgYXJyYXkuIFRoZSB2YWx1ZXMgYXJlCi0vLyByZXRy
aWV2ZWQgZnJvbSB0aGUgc3ltYm9sIHRhYmxlIGFuZCBwYXJzZS10cmVlIGlzIGJ1aWx0IGZvciB0
aGUgdHlwZSBvZiB0aGUgZWxlbWVudC4gVGhlIGlucHV0Ci0vLyB0byB0aGUgZnVuY3Rpb24gY291
bGQgZWl0aGVyIGJlIGEgc3ltYm9sIG5vZGUgKGFbMF0gd2hlcmUgYSBpcyBhIGNvbnN0YW50IGFy
cmF5KXRoYXQgcmVwcmVzZW50cyBhCi0vLyBjb25zdGFudCBhcnJheSBvciBpdCBjb3VsZCBiZSB0
aGUgdHJlZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgY29uc3RhbnQgYXJyYXkgKHMuYTFbMF0gd2hl
cmUgcyBpcyBhCi0vLyBjb25zdGFudCBzdHJ1Y3R1cmUpCi0vLwotVEludGVybVR5cGVkICpUUGFy
c2VDb250ZXh0OjphZGRDb25zdEFycmF5Tm9kZShpbnQgaW5kZXgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpub2Rl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
U291cmNlTG9jICZsaW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIG91dE9mUmFuZ2VJbmRleElzRXJyb3IpCi17Ci0gICAgVFR5cGUgYXJyYXlF
bGVtZW50VHlwZSA9IG5vZGUtPmdldFR5cGUoKTsKLSAgICBhcnJheUVsZW1lbnRUeXBlLmNsZWFy
QXJyYXluZXNzKCk7Ci0KLSAgICBpZiAoaW5kZXggPj0gbm9kZS0+Z2V0VHlwZSgpLmdldEFycmF5
U2l6ZSgpKQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFt
OwotICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgImFycmF5IGZpZWxkIHNlbGVjdGlvbiBvdXQg
b2YgcmFuZ2UgJyIgPDwgaW5kZXggPDwgIiciOwotICAgICAgICBzdGQ6OnN0cmluZyBleHRyYUlu
Zm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7Ci0gICAgICAgIG91dE9mUmFuZ2VFcnJvcihvdXRP
ZlJhbmdlSW5kZXhJc0Vycm9yLCBsaW5lLCAiIiwgIlsiLCBleHRyYUluZm8uY19zdHIoKSk7Ci0g
ICAgICAgIGluZGV4ID0gbm9kZS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpIC0gMTsKLSAgICB9
Ci0gICAgc2l6ZV90IGFycmF5RWxlbWVudFNpemUgICAgICAgICAgPSBhcnJheUVsZW1lbnRUeXBl
LmdldE9iamVjdFNpemUoKTsKLSAgICBjb25zdCBUQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9
IG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCk7Ci0gICAgcmV0dXJuIGludGVybWVkaWF0ZS5h
ZGRDb25zdGFudFVuaW9uKCZ1bmlvbkFycmF5W2FycmF5RWxlbWVudFNpemUgKiBpbmRleF0sIG5v
ZGUtPmdldFR5cGUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bGluZSk7Ci19Ci0KLS8vCi0vLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHZhbHVlIG9mIGEg
cGFydGljdWxhciBmaWVsZCBpbnNpZGUgYSBjb25zdGFudCBzdHJ1Y3R1cmUgZnJvbSB0aGUgc3lt
Ym9sCi0vLyB0YWJsZS4KLS8vIElmIHRoZXJlIGlzIGFuIGVtYmVkZGVkL25lc3RlZCBzdHJ1Y3Qs
IGl0IGFwcHJvcHJpYXRlbHkgY2FsbHMgYWRkQ29uc3RTdHJ1Y3ROZXN0ZWQgb3IKLS8vIGFkZENv
bnN0U3RydWN0RnJvbUFnZ3IgZnVuY3Rpb24gYW5kIHJldHVybnMgdGhlIHBhcnNlLXRyZWUgd2l0
aCB0aGUgdmFsdWVzIG9mIHRoZSBlbWJlZGRlZC9uZXN0ZWQKLS8vIHN0cnVjdC4KLS8vCi1USW50
ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6OmFkZENvbnN0U3RydWN0KGNvbnN0IFRTdHJpbmcgJmlk
ZW50aWZpZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJ
bnRlcm1UeXBlZCAqbm9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbGluZSkKLXsKLSAgICBjb25zdCBURmllbGRMaXN0ICZm
aWVsZHMgPSBub2RlLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCktPmZpZWxkcygpOwotICAgIHNpemVf
dCBpbnN0YW5jZVNpemUgICAgICA9IDA7Ci0KLSAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGlu
ZGV4IDwgZmllbGRzLnNpemUoKTsgKytpbmRleCkKLSAgICB7Ci0gICAgICAgIGlmIChmaWVsZHNb
aW5kZXhdLT5uYW1lKCkgPT0gaWRlbnRpZmllcikKLSAgICAgICAgewotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnN0
YW5jZVNpemUgKz0gZmllbGRzW2luZGV4XS0+dHlwZSgpLT5nZXRPYmplY3RTaXplKCk7Ci0gICAg
ICAgIH0KKyAgICAgICAgdHlwZS5zZXRQcmVjaXNpb24oY29uc3RydWN0b3ItPmdldFByZWNpc2lv
bigpKTsKICAgICB9CiAKLSAgICBUSW50ZXJtVHlwZWQgKnR5cGVkTm9kZTsKLSAgICBUSW50ZXJt
Q29uc3RhbnRVbmlvbiAqdGVtcENvbnN0YW50Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3RhbnRVbmlv
bigpOwotICAgIGlmICh0ZW1wQ29uc3RhbnROb2RlKQotICAgIHsKLSAgICAgICAgY29uc3QgVENv
bnN0YW50VW5pb24gKmNvbnN0QXJyYXkgPSB0ZW1wQ29uc3RhbnROb2RlLT5nZXRVbmlvbkFycmF5
UG9pbnRlcigpOwotCi0gICAgICAgIC8vIHR5cGUgd2lsbCBiZSBjaGFuZ2VkIGluIHRoZSBjYWxs
aW5nIGZ1bmN0aW9uCi0gICAgICAgIHR5cGVkTm9kZSA9IGludGVybWVkaWF0ZS5hZGRDb25zdGFu
dFVuaW9uKGNvbnN0QXJyYXkgKyBpbnN0YW5jZVNpemUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBDb25zdGFudE5vZGUtPmdldFR5cGUoKSwg
bGluZSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIGVycm9yKGxpbmUsICJDYW5u
b3Qgb2Zmc2V0IGludG8gdGhlIHN0cnVjdHVyZSIsICJFcnJvciIpOwotICAgICAgICByZWNvdmVy
KCk7Ci0KLSAgICAgICAgcmV0dXJuIDA7CisgICAgY29uc3RydWN0b3ItPnNldFR5cGUodHlwZSk7
CisKKyAgICBUSW50ZXJtVHlwZWQgKmNvbnN0Q29uc3RydWN0b3IgPSBpbnRlcm1lZGlhdGUuZm9s
ZEFnZ3JlZ2F0ZUJ1aWx0SW4oY29uc3RydWN0b3IsICZtRGlhZ25vc3RpY3MpOworICAgIGlmIChj
b25zdENvbnN0cnVjdG9yKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbnN0Q29uc3RydWN0b3I7
CiAgICAgfQogCi0gICAgcmV0dXJuIHR5cGVkTm9kZTsKKyAgICByZXR1cm4gY29uc3RydWN0b3I7
CiB9CiAKIC8vCiAvLyBJbnRlcmZhY2UvdW5pZm9ybSBibG9ja3MKIC8vCi1USW50ZXJtQWdncmVn
YXRlICpUUGFyc2VDb250ZXh0OjphZGRJbnRlcmZhY2VCbG9jayhjb25zdCBUUHVibGljVHlwZSAm
dHlwZVF1YWxpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJm5hbWVMaW5lLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmYmxvY2tOYW1l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEZp
ZWxkTGlzdCAqZmllbGRMaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAqaW5zdGFuY2VOYW1lLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAm
aW5zdGFuY2VMaW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVEludGVybVR5cGVkICphcnJheUluZGV4LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmYXJyYXlJbmRl
eExpbmUpCitUSW50ZXJtQWdncmVnYXRlICpUUGFyc2VDb250ZXh0OjphZGRJbnRlcmZhY2VCbG9j
aygKKyAgICBjb25zdCBUVHlwZVF1YWxpZmllckJ1aWxkZXIgJnR5cGVRdWFsaWZpZXJCdWlsZGVy
LAorICAgIGNvbnN0IFRTb3VyY2VMb2MgJm5hbWVMaW5lLAorICAgIGNvbnN0IFRTdHJpbmcgJmJs
b2NrTmFtZSwKKyAgICBURmllbGRMaXN0ICpmaWVsZExpc3QsCisgICAgY29uc3QgVFN0cmluZyAq
aW5zdGFuY2VOYW1lLAorICAgIGNvbnN0IFRTb3VyY2VMb2MgJmluc3RhbmNlTGluZSwKKyAgICBU
SW50ZXJtVHlwZWQgKmFycmF5SW5kZXgsCisgICAgY29uc3QgVFNvdXJjZUxvYyAmYXJyYXlJbmRl
eExpbmUpCiB7Ci0gICAgaWYgKHJlc2VydmVkRXJyb3JDaGVjayhuYW1lTGluZSwgYmxvY2tOYW1l
KSkKLSAgICAgICAgcmVjb3ZlcigpOworICAgIGNoZWNrSXNOb3RSZXNlcnZlZChuYW1lTGluZSwg
YmxvY2tOYW1lKTsKKworICAgIFRUeXBlUXVhbGlmaWVyIHR5cGVRdWFsaWZpZXIgPSB0eXBlUXVh
bGlmaWVyQnVpbGRlci5nZXRWYXJpYWJsZVR5cGVRdWFsaWZpZXIoJm1EaWFnbm9zdGljcyk7CiAK
ICAgICBpZiAodHlwZVF1YWxpZmllci5xdWFsaWZpZXIgIT0gRXZxVW5pZm9ybSkKICAgICB7CiAg
ICAgICAgIGVycm9yKHR5cGVRdWFsaWZpZXIubGluZSwgImludmFsaWQgcXVhbGlmaWVyOiIsIGdl
dFF1YWxpZmllclN0cmluZyh0eXBlUXVhbGlmaWVyLnF1YWxpZmllciksCiAgICAgICAgICAgICAg
ICJpbnRlcmZhY2UgYmxvY2tzIG11c3QgYmUgdW5pZm9ybSIpOwotICAgICAgICByZWNvdmVyKCk7
CiAgICAgfQogCi0gICAgVExheW91dFF1YWxpZmllciBibG9ja0xheW91dFF1YWxpZmllciA9IHR5
cGVRdWFsaWZpZXIubGF5b3V0UXVhbGlmaWVyOwotICAgIGlmIChsYXlvdXRMb2NhdGlvbkVycm9y
Q2hlY2sodHlwZVF1YWxpZmllci5saW5lLCBibG9ja0xheW91dFF1YWxpZmllcikpCisgICAgaWYg
KHR5cGVRdWFsaWZpZXIuaW52YXJpYW50KQogICAgIHsKLSAgICAgICAgcmVjb3ZlcigpOworICAg
ICAgICBlcnJvcih0eXBlUXVhbGlmaWVyLmxpbmUsICJpbnZhbGlkIHF1YWxpZmllciBvbiBpbnRl
cmZhY2UgYmxvY2sgbWVtYmVyIiwgImludmFyaWFudCIpOwogICAgIH0KIAorICAgIFRMYXlvdXRR
dWFsaWZpZXIgYmxvY2tMYXlvdXRRdWFsaWZpZXIgPSB0eXBlUXVhbGlmaWVyLmxheW91dFF1YWxp
ZmllcjsKKyAgICBjaGVja0xvY2F0aW9uSXNOb3RTcGVjaWZpZWQodHlwZVF1YWxpZmllci5saW5l
LCBibG9ja0xheW91dFF1YWxpZmllcik7CisKICAgICBpZiAoYmxvY2tMYXlvdXRRdWFsaWZpZXIu
bWF0cml4UGFja2luZyA9PSBFbXBVbnNwZWNpZmllZCkKICAgICB7CiAgICAgICAgIGJsb2NrTGF5
b3V0UXVhbGlmaWVyLm1hdHJpeFBhY2tpbmcgPSBtRGVmYXVsdE1hdHJpeFBhY2tpbmc7CkBAIC0y
NTg3LDExICsyNDI2LDEyIEBAIFRJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OmFkZElu
dGUKICAgICAgICAgYmxvY2tMYXlvdXRRdWFsaWZpZXIuYmxvY2tTdG9yYWdlID0gbURlZmF1bHRC
bG9ja1N0b3JhZ2U7CiAgICAgfQogCisgICAgY2hlY2tXb3JrR3JvdXBTaXplSXNOb3RTcGVjaWZp
ZWQobmFtZUxpbmUsIGJsb2NrTGF5b3V0UXVhbGlmaWVyKTsKKwogICAgIFRTeW1ib2wgKmJsb2Nr
TmFtZVN5bWJvbCA9IG5ldyBUSW50ZXJmYWNlQmxvY2tOYW1lKCZibG9ja05hbWUpOwogICAgIGlm
ICghc3ltYm9sVGFibGUuZGVjbGFyZShibG9ja05hbWVTeW1ib2wpKQogICAgIHsKICAgICAgICAg
ZXJyb3IobmFtZUxpbmUsICJyZWRlZmluaXRpb24iLCBibG9ja05hbWUuY19zdHIoKSwgImludGVy
ZmFjZSBibG9jayBuYW1lIik7Ci0gICAgICAgIHJlY292ZXIoKTsKICAgICB9CiAKICAgICAvLyBj
aGVjayBmb3Igc2FtcGxlciB0eXBlcyBhbmQgYXBwbHkgbGF5b3V0IHF1YWxpZmllcnMKQEAgLTI2
MDMsNyArMjQ0Myw2IEBAIFRJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OmFkZEludGUK
ICAgICAgICAgewogICAgICAgICAgICAgZXJyb3IoZmllbGQtPmxpbmUoKSwgInVuc3VwcG9ydGVk
IHR5cGUiLCBmaWVsZFR5cGUtPmdldEJhc2ljU3RyaW5nKCksCiAgICAgICAgICAgICAgICAgICAi
c2FtcGxlciB0eXBlcyBhcmUgbm90IGFsbG93ZWQgaW4gaW50ZXJmYWNlIGJsb2NrcyIpOwotICAg
ICAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICB9CiAKICAgICAgICAgY29uc3QgVFF1YWxpZmll
ciBxdWFsaWZpZXIgPSBmaWVsZFR5cGUtPmdldFF1YWxpZmllcigpOwpAQCAtMjYxNSwyMiArMjQ1
NCwyMiBAQCBUSW50ZXJtQWdncmVnYXRlICpUUGFyc2VDb250ZXh0OjphZGRJbnRlCiAgICAgICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGVycm9yKGZpZWxkLT5saW5lKCksICJpbnZh
bGlkIHF1YWxpZmllciBvbiBpbnRlcmZhY2UgYmxvY2sgbWVtYmVyIiwKICAgICAgICAgICAgICAg
ICAgICAgICBnZXRRdWFsaWZpZXJTdHJpbmcocXVhbGlmaWVyKSk7Ci0gICAgICAgICAgICAgICAg
cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAg
Ly8gY2hlY2sgbGF5b3V0IHF1YWxpZmllcnMKLSAgICAgICAgVExheW91dFF1YWxpZmllciBmaWVs
ZExheW91dFF1YWxpZmllciA9IGZpZWxkVHlwZS0+Z2V0TGF5b3V0UXVhbGlmaWVyKCk7Ci0gICAg
ICAgIGlmIChsYXlvdXRMb2NhdGlvbkVycm9yQ2hlY2soZmllbGQtPmxpbmUoKSwgZmllbGRMYXlv
dXRRdWFsaWZpZXIpKQorICAgICAgICBpZiAoZmllbGRUeXBlLT5pc0ludmFyaWFudCgpKQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZWNvdmVyKCk7CisgICAgICAgICAgICBlcnJvcihmaWVsZC0+
bGluZSgpLCAiaW52YWxpZCBxdWFsaWZpZXIgb24gaW50ZXJmYWNlIGJsb2NrIG1lbWJlciIsICJp
bnZhcmlhbnQiKTsKICAgICAgICAgfQogCisgICAgICAgIC8vIGNoZWNrIGxheW91dCBxdWFsaWZp
ZXJzCisgICAgICAgIFRMYXlvdXRRdWFsaWZpZXIgZmllbGRMYXlvdXRRdWFsaWZpZXIgPSBmaWVs
ZFR5cGUtPmdldExheW91dFF1YWxpZmllcigpOworICAgICAgICBjaGVja0xvY2F0aW9uSXNOb3RT
cGVjaWZpZWQoZmllbGQtPmxpbmUoKSwgZmllbGRMYXlvdXRRdWFsaWZpZXIpOworCiAgICAgICAg
IGlmIChmaWVsZExheW91dFF1YWxpZmllci5ibG9ja1N0b3JhZ2UgIT0gRWJzVW5zcGVjaWZpZWQp
CiAgICAgICAgIHsKICAgICAgICAgICAgIGVycm9yKGZpZWxkLT5saW5lKCksICJpbnZhbGlkIGxh
eW91dCBxdWFsaWZpZXI6IiwKICAgICAgICAgICAgICAgICAgIGdldEJsb2NrU3RvcmFnZVN0cmlu
ZyhmaWVsZExheW91dFF1YWxpZmllci5ibG9ja1N0b3JhZ2UpLCAiY2Fubm90IGJlIHVzZWQgaGVy
ZSIpOwotICAgICAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGZp
ZWxkTGF5b3V0UXVhbGlmaWVyLm1hdHJpeFBhY2tpbmcgPT0gRW1wVW5zcGVjaWZpZWQpCkBAIC0y
NjQ4LDExICsyNDg3LDEwIEBAIFRJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OmFkZElu
dGUKICAgICB9CiAKICAgICAvLyBhZGQgYXJyYXkgaW5kZXgKLSAgICBpbnQgYXJyYXlTaXplID0g
MDsKLSAgICBpZiAoYXJyYXlJbmRleCAhPSBOVUxMKQorICAgIHVuc2lnbmVkIGludCBhcnJheVNp
emUgPSAwOworICAgIGlmIChhcnJheUluZGV4ICE9IG51bGxwdHIpCiAgICAgewotICAgICAgICBp
ZiAoYXJyYXlTaXplRXJyb3JDaGVjayhhcnJheUluZGV4TGluZSwgYXJyYXlJbmRleCwgYXJyYXlT
aXplKSkKLSAgICAgICAgICAgIHJlY292ZXIoKTsKKyAgICAgICAgYXJyYXlTaXplID0gY2hlY2tJ
c1ZhbGlkQXJyYXlTaXplKGFycmF5SW5kZXhMaW5lLCBhcnJheUluZGV4KTsKICAgICB9CiAKICAg
ICBUSW50ZXJmYWNlQmxvY2sgKmludGVyZmFjZUJsb2NrID0KQEAgLTI2ODEsMTQgKzI1MTksMTIg
QEAgVEludGVybUFnZ3JlZ2F0ZSAqVFBhcnNlQ29udGV4dDo6YWRkSW50ZQogICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgIGVycm9yKGZpZWxkLT5saW5lKCksICJyZWRlZmluaXRpb24iLCBm
aWVsZC0+bmFtZSgpLmNfc3RyKCksCiAgICAgICAgICAgICAgICAgICAgICAgImludGVyZmFjZSBi
bG9jayBtZW1iZXIgbmFtZSIpOwotICAgICAgICAgICAgICAgIHJlY292ZXIoKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBpZiAocmVz
ZXJ2ZWRFcnJvckNoZWNrKGluc3RhbmNlTGluZSwgKmluc3RhbmNlTmFtZSkpCi0gICAgICAgICAg
ICByZWNvdmVyKCk7CisgICAgICAgIGNoZWNrSXNOb3RSZXNlcnZlZChpbnN0YW5jZUxpbmUsICpp
bnN0YW5jZU5hbWUpOwogCiAgICAgICAgIC8vIGFkZCBhIHN5bWJvbCBmb3IgdGhpcyBpbnRlcmZh
Y2UgYmxvY2sKICAgICAgICAgVFZhcmlhYmxlICppbnN0YW5jZVR5cGVEZWYgPSBuZXcgVFZhcmlh
YmxlKGluc3RhbmNlTmFtZSwgaW50ZXJmYWNlQmxvY2tUeXBlLCBmYWxzZSk7CkBAIC0yNjk4LDE0
ICsyNTM0LDEzIEBAIFRJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OmFkZEludGUKICAg
ICAgICAgewogICAgICAgICAgICAgZXJyb3IoaW5zdGFuY2VMaW5lLCAicmVkZWZpbml0aW9uIiwg
aW5zdGFuY2VOYW1lLT5jX3N0cigpLAogICAgICAgICAgICAgICAgICAgImludGVyZmFjZSBibG9j
ayBpbnN0YW5jZSBuYW1lIik7Ci0gICAgICAgICAgICByZWNvdmVyKCk7CiAgICAgICAgIH0KIAog
ICAgICAgICBzeW1ib2xJZCAgID0gaW5zdGFuY2VUeXBlRGVmLT5nZXRVbmlxdWVJZCgpOwogICAg
ICAgICBzeW1ib2xOYW1lID0gaW5zdGFuY2VUeXBlRGVmLT5nZXROYW1lKCk7CiAgICAgfQogCi0g
ICAgVEludGVybUFnZ3JlZ2F0ZSAqYWdncmVnYXRlID0gaW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdh
dGUoCisgICAgVEludGVybUFnZ3JlZ2F0ZSAqYWdncmVnYXRlID0gVEludGVybWVkaWF0ZTo6TWFr
ZUFnZ3JlZ2F0ZSgKICAgICAgICAgaW50ZXJtZWRpYXRlLmFkZFN5bWJvbChzeW1ib2xJZCwgc3lt
Ym9sTmFtZSwgaW50ZXJmYWNlQmxvY2tUeXBlLCB0eXBlUXVhbGlmaWVyLmxpbmUpLAogICAgICAg
ICBuYW1lTGluZSk7CiAgICAgYWdncmVnYXRlLT5zZXRPcChFT3BEZWNsYXJhdGlvbik7CkBAIC0y
NzE0LDcgKzI1NDksNyBAQCBUSW50ZXJtQWdncmVnYXRlICpUUGFyc2VDb250ZXh0OjphZGRJbnRl
CiAgICAgcmV0dXJuIGFnZ3JlZ2F0ZTsKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0OjplbnRlclN0
cnVjdERlY2xhcmF0aW9uKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0IFRTdHJpbmcgJmlk
ZW50aWZpZXIpCit2b2lkIFRQYXJzZUNvbnRleHQ6OmVudGVyU3RydWN0RGVjbGFyYXRpb24oY29u
c3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3QgVFN0cmluZyAmaWRlbnRpZmllcikKIHsKICAgICAr
K21TdHJ1Y3ROZXN0aW5nTGV2ZWw7CiAKQEAgLTI3MjQsMTAgKzI1NTksNyBAQCBib29sIFRQYXJz
ZUNvbnRleHQ6OmVudGVyU3RydWN0RGVjbGFyYXRpCiAgICAgaWYgKG1TdHJ1Y3ROZXN0aW5nTGV2
ZWwgPiAxKQogICAgIHsKICAgICAgICAgZXJyb3IobGluZSwgIiIsICJFbWJlZGRlZCBzdHJ1Y3Qg
ZGVmaW5pdGlvbnMgYXJlIG5vdCBhbGxvd2VkIik7Ci0gICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KLQotICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBUUGFyc2VDb250ZXh0OjpleGl0U3Ry
dWN0RGVjbGFyYXRpb24oKQpAQCAtMjc0MSwxNiArMjU3MywxNiBAQCBjb25zdCBpbnQga1dlYkdM
TWF4U3RydWN0TmVzdGluZyA9IDQ7CiAKIH0gIC8vIG5hbWVzcGFjZQogCi1ib29sIFRQYXJzZUNv
bnRleHQ6OnN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNv
bnN0IFRGaWVsZCAmZmllbGQpCit2b2lkIFRQYXJzZUNvbnRleHQ6OmNoZWNrSXNCZWxvd1N0cnVj
dE5lc3RpbmdMaW1pdChjb25zdCBUU291cmNlTG9jICZsaW5lLCBjb25zdCBURmllbGQgJmZpZWxk
KQogewogICAgIGlmICghSXNXZWJHTEJhc2VkU3BlYyhtU2hhZGVyU3BlYykpCiAgICAgewotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoZmll
bGQudHlwZSgpLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRTdHJ1Y3QpCiAgICAgewotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBXZSdyZSBhbHJl
YWR5IGluc2lkZSBhIHN0cnVjdHVyZSBkZWZpbml0aW9uIGF0IHRoaXMgcG9pbnQsIHNvIGFkZApA
QCAtMjc2MiwxMCArMjU5NCw4IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6c3RydWN0TmVzdGluZ0Vy
cm9yQ2gKICAgICAgICAgICAgICAgICAgICAgIDw8ICIgZXhjZWVkcyBtYXhpbXVtIGFsbG93ZWQg
bmVzdGluZyBsZXZlbCBvZiAiIDw8IGtXZWJHTE1heFN0cnVjdE5lc3Rpbmc7CiAgICAgICAgIHN0
ZDo6c3RyaW5nIHJlYXNvbiA9IHJlYXNvblN0cmVhbS5zdHIoKTsKICAgICAgICAgZXJyb3IobGlu
ZSwgcmVhc29uLmNfc3RyKCksIGZpZWxkLm5hbWUoKS5jX3N0cigpLCAiIik7Ci0gICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwog
fQogCiAvLwpAQCAtMjc3NSw4ICsyNjA1LDYgQEAgVEludGVybVR5cGVkICpUUGFyc2VDb250ZXh0
OjphZGRJbmRleEV4cAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmluZGV4RXhwcmVzc2lvbikK
IHsKLSAgICBUSW50ZXJtVHlwZWQgKmluZGV4ZWRFeHByZXNzaW9uID0gTlVMTDsKLQogICAgIGlm
ICghYmFzZUV4cHJlc3Npb24tPmlzQXJyYXkoKSAmJiAhYmFzZUV4cHJlc3Npb24tPmlzTWF0cml4
KCkgJiYgIWJhc2VFeHByZXNzaW9uLT5pc1ZlY3RvcigpKQogICAgIHsKICAgICAgICAgaWYgKGJh
c2VFeHByZXNzaW9uLT5nZXRBc1N5bWJvbE5vZGUoKSkKQEAgLTI3ODgsNyArMjYxNiwxMSBAQCBU
SW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6OmFkZEluZGV4RXhwCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGVycm9yKGxvY2F0aW9uLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5
LCBtYXRyaXgsIG9yIHZlY3RvciAiLCAiZXhwcmVzc2lvbiIpOwogICAgICAgICB9Ci0gICAgICAg
IHJlY292ZXIoKTsKKworICAgICAgICBUQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBU
Q29uc3RhbnRVbmlvblsxXTsKKyAgICAgICAgdW5pb25BcnJheS0+c2V0RkNvbnN0KDAuMGYpOwor
ICAgICAgICByZXR1cm4gaW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gsIEV2cUNvbnN0KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uKTsKICAgICB9CiAKICAgICBUSW50ZXJt
Q29uc3RhbnRVbmlvbiAqaW5kZXhDb25zdGFudFVuaW9uID0gaW5kZXhFeHByZXNzaW9uLT5nZXRB
c0NvbnN0YW50VW5pb24oKTsKQEAgLTI4MDQsMTcxICsyNjM2LDExNyBAQCBUSW50ZXJtVHlwZWQg
KlRQYXJzZUNvbnRleHQ6OmFkZEluZGV4RXhwCiAgICAgICAgICAgICBlcnJvcigKICAgICAgICAg
ICAgICAgICBsb2NhdGlvbiwgIiIsICJbIiwKICAgICAgICAgICAgICAgICAiYXJyYXkgaW5kZXhl
cyBmb3IgaW50ZXJmYWNlIGJsb2NrcyBhcnJheXMgbXVzdCBiZSBjb25zdGFudCBpbnRlZ3JhbCBl
eHByZXNzaW9ucyIpOwotICAgICAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAg
IGVsc2UgaWYgKGJhc2VFeHByZXNzaW9uLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFGcmFnbWVudE91
dCkKICAgICAgICAgewogICAgICAgICAgICAgZXJyb3IobG9jYXRpb24sICIiLCAiWyIsCiAgICAg
ICAgICAgICAgICAgICAiYXJyYXkgaW5kZXhlcyBmb3IgZnJhZ21lbnQgb3V0cHV0cyBtdXN0IGJl
IGNvbnN0YW50IGludGVncmFsIGV4cHJlc3Npb25zIik7Ci0gICAgICAgICAgICByZWNvdmVyKCk7
CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAobVNoYWRlclNwZWMgPT0gU0hfV0VCR0wyX1NQ
RUMgJiYgYmFzZUV4cHJlc3Npb24tPmdldFF1YWxpZmllcigpID09IEV2cUZyYWdEYXRhKQogICAg
ICAgICB7CiAgICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwgIiIsICJbIiwgImFycmF5IGluZGV4
IGZvciBnbF9GcmFnRGF0YSBtdXN0IGJlIGNvbnN0YW50IHplcm8iKTsKLSAgICAgICAgICAgIHJl
Y292ZXIoKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChpbmRleENvbnN0YW50VW5pb24p
CiAgICAgewotICAgICAgICAvLyBJZiB0aGUgaW5kZXggaXMgbm90IHF1YWxpZmllZCBhcyBjb25z
dGFudCwgdGhlIGJlaGF2aW9yIGluIHRoZSBzcGVjIGlzIHVuZGVmaW5lZC4gVGhpcwotICAgICAg
ICAvLyBhcHBsaWVzIGV2ZW4gaWYgQU5HTEUgaGFzIGJlZW4gYWJsZSB0byBjb25zdGFudCBmb2xk
IGl0IChBTkdMRSBtYXkgY29uc3RhbnQgZm9sZAotICAgICAgICAvLyBleHByZXNzaW9ucyB0aGF0
IGFyZSBub3QgY29uc3RhbnQgZXhwcmVzc2lvbnMpLiBUaGUgbW9zdCBjb21wYXRpYmxlIHdheSB0
byBoYW5kbGUgdGhpcwotICAgICAgICAvLyBjYXNlIGlzIHRvIHJlcG9ydCBhIHdhcm5pbmcgaW5z
dGVhZCBvZiBhbiBlcnJvciBhbmQgZm9yY2UgdGhlIGluZGV4IHRvIGJlIGluIHRoZQotICAgICAg
ICAvLyBjb3JyZWN0IHJhbmdlLgorICAgICAgICAvLyBJZiBhbiBvdXQtb2YtcmFuZ2UgaW5kZXgg
aXMgbm90IHF1YWxpZmllZCBhcyBjb25zdGFudCwgdGhlIGJlaGF2aW9yIGluIHRoZSBzcGVjIGlz
CisgICAgICAgIC8vIHVuZGVmaW5lZC4gVGhpcyBhcHBsaWVzIGV2ZW4gaWYgQU5HTEUgaGFzIGJl
ZW4gYWJsZSB0byBjb25zdGFudCBmb2xkIGl0IChBTkdMRSBtYXkKKyAgICAgICAgLy8gY29uc3Rh
bnQgZm9sZCBleHByZXNzaW9ucyB0aGF0IGFyZSBub3QgY29uc3RhbnQgZXhwcmVzc2lvbnMpLiBU
aGUgbW9zdCBjb21wYXRpYmxlIHdheSB0bworICAgICAgICAvLyBoYW5kbGUgdGhpcyBjYXNlIGlz
IHRvIHJlcG9ydCBhIHdhcm5pbmcgaW5zdGVhZCBvZiBhbiBlcnJvciBhbmQgZm9yY2UgdGhlIGlu
ZGV4IHRvIGJlIGluCisgICAgICAgIC8vIHRoZSBjb3JyZWN0IHJhbmdlLgogICAgICAgICBib29s
IG91dE9mUmFuZ2VJbmRleElzRXJyb3IgPSBpbmRleEV4cHJlc3Npb24tPmdldFF1YWxpZmllcigp
ID09IEV2cUNvbnN0OwogICAgICAgICBpbnQgaW5kZXggPSBpbmRleENvbnN0YW50VW5pb24tPmdl
dElDb25zdCgwKTsKLSAgICAgICAgaWYgKGluZGV4IDwgMCkKLSAgICAgICAgewotICAgICAgICAg
ICAgc3RkOjpzdHJpbmdzdHJlYW0gaW5mb1N0cmVhbTsKLSAgICAgICAgICAgIGluZm9TdHJlYW0g
PDwgaW5kZXg7Ci0gICAgICAgICAgICBzdGQ6OnN0cmluZyBpbmZvID0gaW5mb1N0cmVhbS5zdHIo
KTsKLSAgICAgICAgICAgIG91dE9mUmFuZ2VFcnJvcihvdXRPZlJhbmdlSW5kZXhJc0Vycm9yLCBs
b2NhdGlvbiwgIm5lZ2F0aXZlIGluZGV4IiwgaW5mby5jX3N0cigpKTsKLSAgICAgICAgICAgIGlu
ZGV4ID0gMDsKLSAgICAgICAgfQotICAgICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqYmFzZUNv
bnN0YW50VW5pb24gPSBiYXNlRXhwcmVzc2lvbi0+Z2V0QXNDb25zdGFudFVuaW9uKCk7Ci0gICAg
ICAgIGlmIChiYXNlQ29uc3RhbnRVbmlvbikKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGJh
c2VFeHByZXNzaW9uLT5pc0FycmF5KCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
Ly8gY29uc3RhbnQgZm9sZGluZyBmb3IgYXJyYXkgaW5kZXhpbmcKLSAgICAgICAgICAgICAgICBp
bmRleGVkRXhwcmVzc2lvbiA9Ci0gICAgICAgICAgICAgICAgICAgIGFkZENvbnN0QXJyYXlOb2Rl
KGluZGV4LCBiYXNlQ29uc3RhbnRVbmlvbiwgbG9jYXRpb24sIG91dE9mUmFuZ2VJbmRleElzRXJy
b3IpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoYmFzZUV4cHJlc3Npb24t
PmlzVmVjdG9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gY29uc3RhbnQg
Zm9sZGluZyBmb3IgdmVjdG9yIGluZGV4aW5nCi0gICAgICAgICAgICAgICAgVFZlY3RvckZpZWxk
cyBmaWVsZHM7Ci0gICAgICAgICAgICAgICAgZmllbGRzLm51bSA9IDE7Ci0gICAgICAgICAgICAg
ICAgZmllbGRzLm9mZnNldHNbMF0gPQotICAgICAgICAgICAgICAgICAgICBpbmRleDsgIC8vIG5l
ZWQgdG8gZG8gaXQgdGhpcyB3YXkgYmVjYXVzZSB2Lnh5IHNlbmRzIGZpZWxkcyBpbnRlZ2VyIGFy
cmF5Ci0gICAgICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24gPQotICAgICAgICAgICAgICAg
ICAgICBhZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCBiYXNlQ29uc3RhbnRVbmlvbiwgbG9jYXRp
b24sIG91dE9mUmFuZ2VJbmRleElzRXJyb3IpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
ZWxzZSBpZiAoYmFzZUV4cHJlc3Npb24tPmlzTWF0cml4KCkpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgbWF0cml4IGluZGV4aW5nCi0gICAg
ICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24gPQotICAgICAgICAgICAgICAgICAgICBhZGRD
b25zdE1hdHJpeE5vZGUoaW5kZXgsIGJhc2VDb25zdGFudFVuaW9uLCBsb2NhdGlvbiwgb3V0T2ZS
YW5nZUluZGV4SXNFcnJvcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxz
ZQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgc2FmZUluZGV4ID0gLTE7CiAKLSAgICAgICAg
ICAgIGlmIChiYXNlRXhwcmVzc2lvbi0+aXNBcnJheSgpKQorICAgICAgICBpbnQgc2FmZUluZGV4
ID0gLTE7CisKKyAgICAgICAgaWYgKGJhc2VFeHByZXNzaW9uLT5pc0FycmF5KCkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmIChiYXNlRXhwcmVzc2lvbi0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZx
RnJhZ0RhdGEgJiYgaW5kZXggPiAwKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlm
IChiYXNlRXhwcmVzc2lvbi0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxRnJhZ0RhdGEgJiYgaW5kZXgg
PiAwKQorICAgICAgICAgICAgICAgIGlmIChtU2hhZGVyU3BlYyA9PSBTSF9XRUJHTDJfU1BFQykK
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtU2hhZGVyU3BlYyA9
PSBTSF9XRUJHTDJfU1BFQykKKyAgICAgICAgICAgICAgICAgICAgLy8gRXJyb3IgaGFzIGJlZW4g
YWxyZWFkeSBnZW5lcmF0ZWQgaWYgaW5kZXggaXMgbm90IGNvbnN0LgorICAgICAgICAgICAgICAg
ICAgICBpZiAoaW5kZXhFeHByZXNzaW9uLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkKICAg
ICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXJyb3IgaGFz
IGJlZW4gYWxyZWFkeSBnZW5lcmF0ZWQgaWYgaW5kZXggaXMgbm90IGNvbnN0LgotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGluZGV4RXhwcmVzc2lvbi0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZx
Q29uc3QpCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXJyb3IobG9jYXRpb24sICIiLCAiWyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImFycmF5IGluZGV4IGZvciBnbF9GcmFnRGF0YSBtdXN0IGJlIGNvbnN0YW50IHpl
cm8iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvdmVyKCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBzYWZlSW5kZXggPSAwOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFpc0V4
dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKSkKLSAgICAgICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICAgICAgb3V0T2ZSYW5nZUVycm9yKG91dE9mUmFuZ2VJ
bmRleElzRXJyb3IsIGxvY2F0aW9uLCAiIiwgIlsiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJhcnJheSBpbmRleCBmb3IgZ2xfRnJhZ0RhdGEgbXVzdCBiZSB6ZXJv
IHdoZW4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHTF9FWFRf
ZHJhd19idWZmZXJzIGlzIGRpc2FibGVkIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzYWZl
SW5kZXggPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IobG9jYXRpb24sICIiLCAi
WyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJyYXkgaW5kZXggZm9yIGdsX0Zy
YWdEYXRhIG11c3QgYmUgY29uc3RhbnQgemVybyIpOwogICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIHNhZmVJbmRleCA9IDA7CiAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIC8vIE9ubHkgZG8gZ2VuZXJpYyBvdXQtb2YtcmFuZ2UgY2hlY2sgaWYgc2lt
aWxhciBlcnJvciBoYXNuJ3QgYWxyZWFkeSBiZWVuIHJlcG9ydGVkLgotICAgICAgICAgICAgICAg
IGlmIChzYWZlSW5kZXggPCAwICYmIGluZGV4ID49IGJhc2VFeHByZXNzaW9uLT5nZXRUeXBlKCku
Z2V0QXJyYXlTaXplKCkpCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWlzRXh0ZW5zaW9uRW5h
YmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVycyIpKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAgICAg
ICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgImFycmF5IGluZGV4IG91dCBvZiByYW5nZSAn
IiA8PCBpbmRleCA8PCAiJyI7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJh
SW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAgICAgICAgICAgICAgb3V0T2ZS
YW5nZUVycm9yKG91dE9mUmFuZ2VJbmRleElzRXJyb3IsIGxvY2F0aW9uLCAiIiwgIlsiLCBleHRy
YUluZm8uY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHNhZmVJbmRleCA9IGJhc2VFeHBy
ZXNzaW9uLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkgLSAxOworICAgICAgICAgICAgICAgICAg
ICBvdXRPZlJhbmdlRXJyb3Iob3V0T2ZSYW5nZUluZGV4SXNFcnJvciwgbG9jYXRpb24sICIiLCAi
WyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJyYXkgaW5kZXggZm9y
IGdsX0ZyYWdEYXRhIG11c3QgYmUgemVybyB3aGVuICIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJHTF9FWFRfZHJhd19idWZmZXJzIGlzIGRpc2FibGVkIik7CisgICAgICAg
ICAgICAgICAgICAgIHNhZmVJbmRleCA9IDA7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoKGJhc2VFeHByZXNzaW9uLT5pc1ZlY3RvcigpIHx8
IGJhc2VFeHByZXNzaW9uLT5pc01hdHJpeCgpKSAmJgotICAgICAgICAgICAgICAgICAgICAgYmFz
ZUV4cHJlc3Npb24tPmdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpIDw9IGluZGV4KQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVh
bTsKLSAgICAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgImZpZWxkIHNlbGVjdGlvbiBv
dXQgb2YgcmFuZ2UgJyIgPDwgaW5kZXggPDwgIiciOwotICAgICAgICAgICAgICAgIHN0ZDo6c3Ry
aW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAgICAgICAgICBv
dXRPZlJhbmdlRXJyb3Iob3V0T2ZSYW5nZUluZGV4SXNFcnJvciwgbG9jYXRpb24sICIiLCAiWyIs
IGV4dHJhSW5mby5jX3N0cigpKTsKLSAgICAgICAgICAgICAgICBzYWZlSW5kZXggPSBiYXNlRXhw
cmVzc2lvbi0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkgLSAxOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAvLyBEYXRhIG9mIGNvbnN0YW50IHVuaW9ucyBjYW4ndCBiZSBjaGFuZ2Vk
LCBiZWNhdXNlIGl0IG1heSBiZSBzaGFyZWQgd2l0aCBvdGhlcgotICAgICAgICAgICAgLy8gY29u
c3RhbnQgdW5pb25zIG9yIGV2ZW4gYnVpbHRpbnMsIGxpa2UgZ2xfTWF4RHJhd0J1ZmZlcnMuIElu
c3RlYWQgdXNlIGEgbmV3Ci0gICAgICAgICAgICAvLyBzYW5pdGl6ZWQgb2JqZWN0LgotICAgICAg
ICAgICAgaWYgKHNhZmVJbmRleCAhPSAtMSkKKyAgICAgICAgICAgIC8vIE9ubHkgZG8gZ2VuZXJp
YyBvdXQtb2YtcmFuZ2UgY2hlY2sgaWYgc2ltaWxhciBlcnJvciBoYXNuJ3QgYWxyZWFkeSBiZWVu
IHJlcG9ydGVkLgorICAgICAgICAgICAgaWYgKHNhZmVJbmRleCA8IDApCiAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgVENvbnN0YW50VW5pb24gKnNhZmVDb25zdGFudFVuaW9uID0gbmV3
IFRDb25zdGFudFVuaW9uKCk7Ci0gICAgICAgICAgICAgICAgc2FmZUNvbnN0YW50VW5pb24tPnNl
dElDb25zdChzYWZlSW5kZXgpOwotICAgICAgICAgICAgICAgIGluZGV4Q29uc3RhbnRVbmlvbi0+
cmVwbGFjZUNvbnN0YW50VW5pb24oc2FmZUNvbnN0YW50VW5pb24pOworICAgICAgICAgICAgICAg
IHNhZmVJbmRleCA9IGNoZWNrSW5kZXhPdXRPZlJhbmdlKG91dE9mUmFuZ2VJbmRleElzRXJyb3Is
IGxvY2F0aW9uLCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBiYXNlRXhwcmVzc2lvbi0+Z2V0QXJyYXlTaXplKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFycmF5IGluZGV4IG91dCBvZiBy
YW5nZSIsICJbXSIpOwogICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYg
KGJhc2VFeHByZXNzaW9uLT5pc01hdHJpeCgpKQorICAgICAgICB7CisgICAgICAgICAgICBzYWZl
SW5kZXggPSBjaGVja0luZGV4T3V0T2ZSYW5nZShvdXRPZlJhbmdlSW5kZXhJc0Vycm9yLCBsb2Nh
dGlvbiwgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBiYXNlRXhwcmVzc2lvbi0+Z2V0VHlwZSgpLmdldENvbHMoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtYXRyaXggZmllbGQgc2VsZWN0aW9uIG91dCBv
ZiByYW5nZSIsICJbXSIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGJhc2VFeHByZXNz
aW9uLT5pc1ZlY3RvcigpKQorICAgICAgICB7CisgICAgICAgICAgICBzYWZlSW5kZXggPSBjaGVj
a0luZGV4T3V0T2ZSYW5nZShvdXRPZlJhbmdlSW5kZXhJc0Vycm9yLCBsb2NhdGlvbiwgaW5kZXgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlRXhwcmVz
c2lvbi0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAidmVjdG9yIGZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFu
Z2UiLCAiW10iKTsKKyAgICAgICAgfQogCi0gICAgICAgICAgICBpbmRleGVkRXhwcmVzc2lvbiA9
Ci0gICAgICAgICAgICAgICAgaW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCBi
YXNlRXhwcmVzc2lvbiwgaW5kZXhFeHByZXNzaW9uLCBsb2NhdGlvbik7CisgICAgICAgIEFTU0VS
VChzYWZlSW5kZXggPj0gMCk7CisgICAgICAgIC8vIERhdGEgb2YgY29uc3RhbnQgdW5pb25zIGNh
bid0IGJlIGNoYW5nZWQsIGJlY2F1c2UgaXQgbWF5IGJlIHNoYXJlZCB3aXRoIG90aGVyCisgICAg
ICAgIC8vIGNvbnN0YW50IHVuaW9ucyBvciBldmVuIGJ1aWx0aW5zLCBsaWtlIGdsX01heERyYXdC
dWZmZXJzLiBJbnN0ZWFkIHVzZSBhIG5ldworICAgICAgICAvLyBzYW5pdGl6ZWQgb2JqZWN0Lgor
ICAgICAgICBpZiAoc2FmZUluZGV4ICE9IGluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBU
Q29uc3RhbnRVbmlvbiAqc2FmZUNvbnN0YW50VW5pb24gPSBuZXcgVENvbnN0YW50VW5pb24oKTsK
KyAgICAgICAgICAgIHNhZmVDb25zdGFudFVuaW9uLT5zZXRJQ29uc3Qoc2FmZUluZGV4KTsKKyAg
ICAgICAgICAgIGluZGV4Q29uc3RhbnRVbmlvbi0+cmVwbGFjZUNvbnN0YW50VW5pb24oc2FmZUNv
bnN0YW50VW5pb24pOwogICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAg
IGluZGV4ZWRFeHByZXNzaW9uID0KLSAgICAgICAgICAgIGludGVybWVkaWF0ZS5hZGRJbmRleChF
T3BJbmRleEluZGlyZWN0LCBiYXNlRXhwcmVzc2lvbiwgaW5kZXhFeHByZXNzaW9uLCBsb2NhdGlv
bik7Ci0gICAgfQogCi0gICAgaWYgKGluZGV4ZWRFeHByZXNzaW9uID09IDApCi0gICAgewotICAg
ICAgICBUQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblsxXTsK
LSAgICAgICAgdW5pb25BcnJheS0+c2V0RkNvbnN0KDAuMGYpOwotICAgICAgICBpbmRleGVkRXhw
cmVzc2lvbiA9Ci0gICAgICAgICAgICBpbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlv
bkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJwSGlnaCwgRXZxQ29uc3QpLCBsb2NhdGlvbik7Ci0g
ICAgfQotICAgIGVsc2UgaWYgKGJhc2VFeHByZXNzaW9uLT5pc0FycmF5KCkpCi0gICAgewotICAg
ICAgICBUVHlwZSBpbmRleGVkVHlwZSA9IGJhc2VFeHByZXNzaW9uLT5nZXRUeXBlKCk7Ci0gICAg
ICAgIGluZGV4ZWRUeXBlLmNsZWFyQXJyYXluZXNzKCk7Ci0gICAgICAgIGluZGV4ZWRFeHByZXNz
aW9uLT5zZXRUeXBlKGluZGV4ZWRUeXBlKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoYmFzZUV4cHJl
c3Npb24tPmlzTWF0cml4KCkpCi0gICAgewotICAgICAgICBpbmRleGVkRXhwcmVzc2lvbi0+c2V0
VHlwZShUVHlwZShiYXNlRXhwcmVzc2lvbi0+Z2V0QmFzaWNUeXBlKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VFeHByZXNzaW9uLT5nZXRQcmVjaXNpb24o
KSwgRXZxVGVtcG9yYXJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihiYXNlRXhwcmVzc2lvbi0+Z2V0Um93cygpKSkp
OwotICAgIH0KLSAgICBlbHNlIGlmIChiYXNlRXhwcmVzc2lvbi0+aXNWZWN0b3IoKSkKLSAgICB7
Ci0gICAgICAgIGluZGV4ZWRFeHByZXNzaW9uLT5zZXRUeXBlKAotICAgICAgICAgICAgVFR5cGUo
YmFzZUV4cHJlc3Npb24tPmdldEJhc2ljVHlwZSgpLCBiYXNlRXhwcmVzc2lvbi0+Z2V0UHJlY2lz
aW9uKCksIEV2cVRlbXBvcmFyeSkpOworICAgICAgICByZXR1cm4gaW50ZXJtZWRpYXRlLmFkZElu
ZGV4KEVPcEluZGV4RGlyZWN0LCBiYXNlRXhwcmVzc2lvbiwgaW5kZXhFeHByZXNzaW9uLCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbURpYWdub3N0aWNz
KTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24tPnNl
dFR5cGUoYmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKSk7CisgICAgICAgIHJldHVybiBpbnRlcm1l
ZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhJbmRpcmVjdCwgYmFzZUV4cHJlc3Npb24sIGluZGV4RXhw
cmVzc2lvbiwgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Jm1EaWFnbm9zdGljcyk7CiAgICAgfQorfQogCi0gICAgaWYgKGJhc2VFeHByZXNzaW9uLT5nZXRU
eXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QgJiYKLSAgICAgICAgaW5kZXhFeHByZXNz
aW9uLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCi0gICAgewotICAgICAg
ICBpbmRleGVkRXhwcmVzc2lvbi0+Z2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVyKEV2cUNv
bnN0KTsKLSAgICB9Ci0gICAgZWxzZQoraW50IFRQYXJzZUNvbnRleHQ6OmNoZWNrSW5kZXhPdXRP
ZlJhbmdlKGJvb2wgb3V0T2ZSYW5nZUluZGV4SXNFcnJvciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZXgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFycmF5U2l6ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9rZW4pCit7CisgICAg
aWYgKGluZGV4ID49IGFycmF5U2l6ZSB8fCBpbmRleCA8IDApCiAgICAgewotICAgICAgICBpbmRl
eGVkRXhwcmVzc2lvbi0+Z2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVyKEV2cVRlbXBvcmFy
eSk7CisgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKKyAgICAgICAg
ZXh0cmFJbmZvU3RyZWFtIDw8ICInIiA8PCBpbmRleCA8PCAiJyI7CisgICAgICAgIHN0ZDo6c3Ry
aW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKKyAgICAgICAgb3V0T2ZSYW5n
ZUVycm9yKG91dE9mUmFuZ2VJbmRleElzRXJyb3IsIGxvY2F0aW9uLCByZWFzb24sIHRva2VuLCBl
eHRyYUluZm8uY19zdHIoKSk7CisgICAgICAgIGlmIChpbmRleCA8IDApCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGFycmF5U2l6ZSAtIDE7CisgICAgICAgIH0KICAgICB9Ci0KLSAg
ICByZXR1cm4gaW5kZXhlZEV4cHJlc3Npb247CisgICAgcmV0dXJuIGluZGV4OwogfQogCiBUSW50
ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6OmFkZEZpZWxkU2VsZWN0aW9uRXhwcmVzc2lvbihUSW50
ZXJtVHlwZWQgKmJhc2VFeHByZXNzaW9uLApAQCAtMjk3NiwxMiArMjc1NCwxMCBAQCBUSW50ZXJt
VHlwZWQgKlRQYXJzZUNvbnRleHQ6OmFkZEZpZWxkU2VsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZmaWVsZFN0
cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmZpZWxkTG9jYXRpb24pCiB7Ci0gICAgVEludGVybVR5
cGVkICppbmRleGVkRXhwcmVzc2lvbiA9IE5VTEw7Ci0KICAgICBpZiAoYmFzZUV4cHJlc3Npb24t
PmlzQXJyYXkoKSkKICAgICB7CiAgICAgICAgIGVycm9yKGZpZWxkTG9jYXRpb24sICJjYW5ub3Qg
YXBwbHkgZG90IG9wZXJhdG9yIHRvIGFuIGFycmF5IiwgIi4iKTsKLSAgICAgICAgcmVjb3Zlcigp
OworICAgICAgICByZXR1cm4gYmFzZUV4cHJlc3Npb247CiAgICAgfQogCiAgICAgaWYgKGJhc2VF
eHByZXNzaW9uLT5pc1ZlY3RvcigpKQpAQCAtMjk5Miw0NiArMjc2OCwyMSBAQCBUSW50ZXJtVHlw
ZWQgKlRQYXJzZUNvbnRleHQ6OmFkZEZpZWxkU2VsCiAgICAgICAgIHsKICAgICAgICAgICAgIGZp
ZWxkcy5udW0gICAgICAgID0gMTsKICAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzWzBdID0gMDsK
LSAgICAgICAgICAgIHJlY292ZXIoKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChiYXNlRXhw
cmVzc2lvbi0+Z2V0QXNDb25zdGFudFVuaW9uKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8v
IGNvbnN0YW50IGZvbGRpbmcgZm9yIHZlY3RvciBmaWVsZHMKLSAgICAgICAgICAgIGluZGV4ZWRF
eHByZXNzaW9uID0gYWRkQ29uc3RWZWN0b3JOb2RlKGZpZWxkcywgYmFzZUV4cHJlc3Npb24tPmdl
dEFzQ29uc3RhbnRVbmlvbigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmllbGRMb2NhdGlvbiwgdHJ1ZSk7Ci0gICAgICAgIH0KLSAgICAgICAg
ZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmluZGV4ID0gaW50ZXJt
ZWRpYXRlLmFkZFN3aXp6bGUoZmllbGRzLCBmaWVsZExvY2F0aW9uKTsKLSAgICAgICAgICAgIGlu
ZGV4ZWRFeHByZXNzaW9uID0KLSAgICAgICAgICAgICAgICBpbnRlcm1lZGlhdGUuYWRkSW5kZXgo
RU9wVmVjdG9yU3dpenpsZSwgYmFzZUV4cHJlc3Npb24sIGluZGV4LCBkb3RMb2NhdGlvbik7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKGluZGV4ZWRFeHByZXNzaW9uID09IG51bGxwdHIpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJlY292ZXIoKTsKLSAgICAgICAgICAgIGluZGV4ZWRFeHByZXNz
aW9uID0gYmFzZUV4cHJlc3Npb247Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7
Ci0gICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhlIHF1YWxpZmllciBzZXQgaGVyZSB3aWxsIGJl
IGNvcnJlY3RlZCBsYXRlci4KLSAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uLT5zZXRUeXBl
KFRUeXBlKGJhc2VFeHByZXNzaW9uLT5nZXRCYXNpY1R5cGUoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VFeHByZXNzaW9uLT5nZXRQcmVjaXNpb24o
KSwgRXZxVGVtcG9yYXJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHVuc2lnbmVkIGNoYXIpKGZpZWxkU3RyaW5nKS5zaXplKCkpKTsKLSAgICAgICAgfQor
ICAgICAgICByZXR1cm4gVEludGVybWVkaWF0ZTo6QWRkU3dpenpsZShiYXNlRXhwcmVzc2lvbiwg
ZmllbGRzLCBkb3RMb2NhdGlvbik7CiAgICAgfQogICAgIGVsc2UgaWYgKGJhc2VFeHByZXNzaW9u
LT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpCiAgICAgewotICAgICAgICBib29sIGZpZWxk
Rm91bmQgICAgICAgICAgPSBmYWxzZTsKICAgICAgICAgY29uc3QgVEZpZWxkTGlzdCAmZmllbGRz
ID0gYmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CiAgICAg
ICAgIGlmIChmaWVsZHMuZW1wdHkoKSkKICAgICAgICAgewogICAgICAgICAgICAgZXJyb3IoZG90
TG9jYXRpb24sICJzdHJ1Y3R1cmUgaGFzIG5vIGZpZWxkcyIsICJJbnRlcm5hbCBFcnJvciIpOwot
ICAgICAgICAgICAgcmVjb3ZlcigpOwotICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24gPSBi
YXNlRXhwcmVzc2lvbjsKKyAgICAgICAgICAgIHJldHVybiBiYXNlRXhwcmVzc2lvbjsKICAgICAg
ICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKKyAgICAgICAgICAgIGJvb2wgZmllbGRGb3Vu
ZCA9IGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgaW50IGk7CiAgICAgICAgICAgICBmb3Ig
KGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgKytpKQogICAgICAgICAgICAgewpAQCAtMzA0Myw1
MCArMjc5NCwyOSBAQCBUSW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6OmFkZEZpZWxkU2VsCiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZmllbGRGb3VuZCkKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBpZiAoYmFzZUV4cHJlc3Npb24tPmdldEFzQ29uc3RhbnRVbmlvbigp
KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Np
b24gPSBhZGRDb25zdFN0cnVjdChmaWVsZFN0cmluZywgYmFzZUV4cHJlc3Npb24sIGRvdExvY2F0
aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ZWRFeHByZXNzaW9uID09IDApCi0g
ICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlY292ZXIoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uID0gYmFzZUV4cHJlc3Np
b247Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmRleGVkRXhwcmVz
c2lvbi0+c2V0VHlwZSgqZmllbGRzW2ldLT50eXBlKCkpOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIFRDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3
IFRDb25zdGFudFVuaW9uWzFdOwotICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRJ
Q29uc3QoaSk7Ci0gICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5kZXggPSBpbnRl
cm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9u
QXJyYXksICpmaWVsZHNbaV0tPnR5cGUoKSwgZmllbGRMb2NhdGlvbik7Ci0gICAgICAgICAgICAg
ICAgICAgIGluZGV4ZWRFeHByZXNzaW9uID0gaW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4
RGlyZWN0U3RydWN0LCBiYXNlRXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgsIGRvdExvY2F0aW9uKTsK
LSAgICAgICAgICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24tPnNldFR5cGUoKmZpZWxkc1tp
XS0+dHlwZSgpKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgVEludGVybVR5
cGVkICppbmRleCA9IFRJbnRlcm1UeXBlZDo6Q3JlYXRlSW5kZXhOb2RlKGkpOworICAgICAgICAg
ICAgICAgIGluZGV4LT5zZXRMaW5lKGZpZWxkTG9jYXRpb24pOworICAgICAgICAgICAgICAgIHJl
dHVybiBpbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3RTdHJ1Y3QsIGJhc2VFeHBy
ZXNzaW9uLCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRvdExvY2F0aW9uLCAmbURpYWdub3N0aWNzKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBlcnJvcihkb3RMb2NhdGlv
biwgIiBubyBzdWNoIGZpZWxkIGluIHN0cnVjdHVyZSIsIGZpZWxkU3RyaW5nLmNfc3RyKCkpOwot
ICAgICAgICAgICAgICAgIHJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICBpbmRleGVkRXhwcmVz
c2lvbiA9IGJhc2VFeHByZXNzaW9uOworICAgICAgICAgICAgICAgIHJldHVybiBiYXNlRXhwcmVz
c2lvbjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIGlmIChiYXNl
RXhwcmVzc2lvbi0+aXNJbnRlcmZhY2VCbG9jaygpKQogICAgIHsKLSAgICAgICAgYm9vbCBmaWVs
ZEZvdW5kICAgICAgICAgID0gZmFsc2U7CiAgICAgICAgIGNvbnN0IFRGaWVsZExpc3QgJmZpZWxk
cyA9IGJhc2VFeHByZXNzaW9uLT5nZXRUeXBlKCkuZ2V0SW50ZXJmYWNlQmxvY2soKS0+ZmllbGRz
KCk7CiAgICAgICAgIGlmIChmaWVsZHMuZW1wdHkoKSkKICAgICAgICAgewogICAgICAgICAgICAg
ZXJyb3IoZG90TG9jYXRpb24sICJpbnRlcmZhY2UgYmxvY2sgaGFzIG5vIGZpZWxkcyIsICJJbnRl
cm5hbCBFcnJvciIpOwotICAgICAgICAgICAgcmVjb3ZlcigpOwotICAgICAgICAgICAgaW5kZXhl
ZEV4cHJlc3Npb24gPSBiYXNlRXhwcmVzc2lvbjsKKyAgICAgICAgICAgIHJldHVybiBiYXNlRXhw
cmVzc2lvbjsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKKyAgICAgICAgICAg
IGJvb2wgZmllbGRGb3VuZCA9IGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgaW50IGk7CiAg
ICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgKytpKQogICAgICAgICAg
ICAgewpAQCAtMzA5OCwxOSArMjgyOCwxNSBAQCBUSW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6
OmFkZEZpZWxkU2VsCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZmllbGRGb3VuZCkK
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBUQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJh
eSA9IG5ldyBUQ29uc3RhbnRVbmlvblsxXTsKLSAgICAgICAgICAgICAgICB1bmlvbkFycmF5LT5z
ZXRJQ29uc3QoaSk7Ci0gICAgICAgICAgICAgICAgVEludGVybVR5cGVkICppbmRleCA9Ci0gICAg
ICAgICAgICAgICAgICAgIGludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXks
ICpmaWVsZHNbaV0tPnR5cGUoKSwgZmllbGRMb2NhdGlvbik7Ci0gICAgICAgICAgICAgICAgaW5k
ZXhlZEV4cHJlc3Npb24gPSBpbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3RJbnRl
cmZhY2VCbG9jaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBiYXNlRXhwcmVzc2lvbiwgaW5kZXgsIGRvdExvY2F0aW9uKTsKLSAgICAg
ICAgICAgICAgICBpbmRleGVkRXhwcmVzc2lvbi0+c2V0VHlwZSgqZmllbGRzW2ldLT50eXBlKCkp
OworICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5kZXggPSBUSW50ZXJtVHlwZWQ6OkNy
ZWF0ZUluZGV4Tm9kZShpKTsKKyAgICAgICAgICAgICAgICBpbmRleC0+c2V0TGluZShmaWVsZExv
Y2F0aW9uKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJtZWRpYXRlLmFkZEluZGV4KEVP
cEluZGV4RGlyZWN0SW50ZXJmYWNlQmxvY2ssIGJhc2VFeHByZXNzaW9uLCBpbmRleCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdExvY2F0aW9uLCAmbURp
YWdub3N0aWNzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICBlcnJvcihkb3RMb2NhdGlvbiwgIiBubyBzdWNoIGZpZWxkIGlu
IGludGVyZmFjZSBibG9jayIsIGZpZWxkU3RyaW5nLmNfc3RyKCkpOwotICAgICAgICAgICAgICAg
IHJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICBpbmRleGVkRXhwcmVzc2lvbiA9IGJhc2VFeHBy
ZXNzaW9uOworICAgICAgICAgICAgICAgIHJldHVybiBiYXNlRXhwcmVzc2lvbjsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTMxMjgsMzcgKzI4NTQsMjkgQEAgVEludGVybVR5
cGVkICpUUGFyc2VDb250ZXh0OjphZGRGaWVsZFNlbAogICAgICAgICAgICAgICAgICAgInNpZGUi
LAogICAgICAgICAgICAgICAgICAgZmllbGRTdHJpbmcuY19zdHIoKSk7CiAgICAgICAgIH0KLSAg
ICAgICAgcmVjb3ZlcigpOwotICAgICAgICBpbmRleGVkRXhwcmVzc2lvbiA9IGJhc2VFeHByZXNz
aW9uOwotICAgIH0KLQotICAgIGlmIChiYXNlRXhwcmVzc2lvbi0+Z2V0UXVhbGlmaWVyKCkgPT0g
RXZxQ29uc3QpCi0gICAgewotICAgICAgICBpbmRleGVkRXhwcmVzc2lvbi0+Z2V0VHlwZVBvaW50
ZXIoKS0+c2V0UXVhbGlmaWVyKEV2cUNvbnN0KTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAg
ICAgICAgaW5kZXhlZEV4cHJlc3Npb24tPmdldFR5cGVQb2ludGVyKCktPnNldFF1YWxpZmllcihF
dnFUZW1wb3JhcnkpOworICAgICAgICByZXR1cm4gYmFzZUV4cHJlc3Npb247CiAgICAgfQotCi0g
ICAgcmV0dXJuIGluZGV4ZWRFeHByZXNzaW9uOwogfQogCiBUTGF5b3V0UXVhbGlmaWVyIFRQYXJz
ZUNvbnRleHQ6OnBhcnNlTGF5b3V0UXVhbGlmaWVyKGNvbnN0IFRTdHJpbmcgJnF1YWxpZmllclR5
cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFRTb3VyY2VMb2MgJnF1YWxpZmllclR5cGVMaW5lKQogewotICAgIFRMYXlvdXRRdWFs
aWZpZXIgcXVhbGlmaWVyOwotCi0gICAgcXVhbGlmaWVyLmxvY2F0aW9uICAgICAgPSAtMTsKLSAg
ICBxdWFsaWZpZXIubWF0cml4UGFja2luZyA9IEVtcFVuc3BlY2lmaWVkOwotICAgIHF1YWxpZmll
ci5ibG9ja1N0b3JhZ2UgID0gRWJzVW5zcGVjaWZpZWQ7CisgICAgVExheW91dFF1YWxpZmllciBx
dWFsaWZpZXIgPSBUTGF5b3V0UXVhbGlmaWVyOjpjcmVhdGUoKTsKIAogICAgIGlmIChxdWFsaWZp
ZXJUeXBlID09ICJzaGFyZWQiKQogICAgIHsKKyAgICAgICAgaWYgKElzV2ViR0xCYXNlZFNwZWMo
bVNoYWRlclNwZWMpKQorICAgICAgICB7CisgICAgICAgICAgICBlcnJvcihxdWFsaWZpZXJUeXBl
TGluZSwgIk9ubHkgc3RkMTQwIGxheW91dCBpcyBhbGxvd2VkIGluIFdlYkdMIiwgInNoYXJlZCIp
OworICAgICAgICB9CiAgICAgICAgIHF1YWxpZmllci5ibG9ja1N0b3JhZ2UgPSBFYnNTaGFyZWQ7
CiAgICAgfQogICAgIGVsc2UgaWYgKHF1YWxpZmllclR5cGUgPT0gInBhY2tlZCIpCiAgICAgewor
ICAgICAgICBpZiAoSXNXZWJHTEJhc2VkU3BlYyhtU2hhZGVyU3BlYykpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGVycm9yKHF1YWxpZmllclR5cGVMaW5lLCAiT25seSBzdGQxNDAgbGF5b3V0IGlz
IGFsbG93ZWQgaW4gV2ViR0wiLCAicGFja2VkIik7CisgICAgICAgIH0KICAgICAgICAgcXVhbGlm
aWVyLmJsb2NrU3RvcmFnZSA9IEVic1BhY2tlZDsKICAgICB9CiAgICAgZWxzZSBpZiAocXVhbGlm
aWVyVHlwZSA9PSAic3RkMTQwIikKQEAgLTMxNzcsMTM5ICsyODk1LDExOSBAQCBUTGF5b3V0UXVh
bGlmaWVyIFRQYXJzZUNvbnRleHQ6OnBhcnNlTGF5CiAgICAgewogICAgICAgICBlcnJvcihxdWFs
aWZpZXJUeXBlTGluZSwgImludmFsaWQgbGF5b3V0IHF1YWxpZmllciIsIHF1YWxpZmllclR5cGUu
Y19zdHIoKSwKICAgICAgICAgICAgICAgImxvY2F0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50Iik7
Ci0gICAgICAgIHJlY292ZXIoKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKICAgICAgICAgZXJy
b3IocXVhbGlmaWVyVHlwZUxpbmUsICJpbnZhbGlkIGxheW91dCBxdWFsaWZpZXIiLCBxdWFsaWZp
ZXJUeXBlLmNfc3RyKCkpOwotICAgICAgICByZWNvdmVyKCk7CiAgICAgfQogCiAgICAgcmV0dXJu
IHF1YWxpZmllcjsKIH0KIAordm9pZCBUUGFyc2VDb250ZXh0OjpwYXJzZUxvY2FsU2l6ZShjb25z
dCBUU3RyaW5nICZxdWFsaWZpZXJUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUU291cmNlTG9jICZxdWFsaWZpZXJUeXBlTGluZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGludFZhbHVlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZpbnRWYWx1ZUxpbmUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZpbnRWYWx1ZVN0cmlu
ZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGluZGV4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaDo6V29ya0dyb3VwU2l6ZSAqbG9jYWxT
aXplKQoreworICAgIGNoZWNrTGF5b3V0UXVhbGlmaWVyU3VwcG9ydGVkKHF1YWxpZmllclR5cGVM
aW5lLCBxdWFsaWZpZXJUeXBlLCAzMTApOworICAgIGlmIChpbnRWYWx1ZSA8IDEpCisgICAgewor
ICAgICAgICBzdGQ6OnN0cmluZyBlcnJvck1lc3NhZ2UgPSBzdGQ6OnN0cmluZyhnZXRXb3JrR3Jv
dXBTaXplU3RyaW5nKGluZGV4KSkgKyAiIG11c3QgYmUgcG9zaXRpdmUiOworICAgICAgICBlcnJv
cihpbnRWYWx1ZUxpbmUsICJvdXQgb2YgcmFuZ2U6IiwgaW50VmFsdWVTdHJpbmcuY19zdHIoKSwg
ZXJyb3JNZXNzYWdlLmNfc3RyKCkpOworICAgIH0KKyAgICAoKmxvY2FsU2l6ZSlbaW5kZXhdID0g
aW50VmFsdWU7Cit9CisKIFRMYXlvdXRRdWFsaWZpZXIgVFBhcnNlQ29udGV4dDo6cGFyc2VMYXlv
dXRRdWFsaWZpZXIoY29uc3QgVFN0cmluZyAmcXVhbGlmaWVyVHlwZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAm
cXVhbGlmaWVyVHlwZUxpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJmludFZhbHVlU3RyaW5nLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW50VmFsdWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRTb3VyY2VMb2MgJmludFZhbHVlTGluZSkKIHsKLSAgICBUTGF5b3V0UXVhbGlmaWVyIHF1
YWxpZmllcjsKKyAgICBUTGF5b3V0UXVhbGlmaWVyIHF1YWxpZmllciA9IFRMYXlvdXRRdWFsaWZp
ZXI6OmNyZWF0ZSgpOwogCi0gICAgcXVhbGlmaWVyLmxvY2F0aW9uICAgICAgPSAtMTsKLSAgICBx
dWFsaWZpZXIubWF0cml4UGFja2luZyA9IEVtcFVuc3BlY2lmaWVkOwotICAgIHF1YWxpZmllci5i
bG9ja1N0b3JhZ2UgID0gRWJzVW5zcGVjaWZpZWQ7CisgICAgc3RkOjpzdHJpbmcgaW50VmFsdWVT
dHJpbmcgPSBTdHIoaW50VmFsdWUpOwogCi0gICAgaWYgKHF1YWxpZmllclR5cGUgIT0gImxvY2F0
aW9uIikKLSAgICB7Ci0gICAgICAgIGVycm9yKHF1YWxpZmllclR5cGVMaW5lLCAiaW52YWxpZCBs
YXlvdXQgcXVhbGlmaWVyIiwgcXVhbGlmaWVyVHlwZS5jX3N0cigpLAotICAgICAgICAgICAgICAi
b25seSBsb2NhdGlvbiBtYXkgaGF2ZSBhcmd1bWVudHMiKTsKLSAgICAgICAgcmVjb3ZlcigpOwot
ICAgIH0KLSAgICBlbHNlCisgICAgaWYgKHF1YWxpZmllclR5cGUgPT0gImxvY2F0aW9uIikKICAg
ICB7CiAgICAgICAgIC8vIG11c3QgY2hlY2sgdGhhdCBsb2NhdGlvbiBpcyBub24tbmVnYXRpdmUK
ICAgICAgICAgaWYgKGludFZhbHVlIDwgMCkKICAgICAgICAgewogICAgICAgICAgICAgZXJyb3Io
aW50VmFsdWVMaW5lLCAib3V0IG9mIHJhbmdlOiIsIGludFZhbHVlU3RyaW5nLmNfc3RyKCksCiAg
ICAgICAgICAgICAgICAgICAibG9jYXRpb24gbXVzdCBiZSBub24tbmVnYXRpdmUiKTsKLSAgICAg
ICAgICAgIHJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHF1YWxpZmllci5sb2NhdGlvbiA9IGludFZhbHVlOworICAgICAgICAgICAgcXVh
bGlmaWVyLmxvY2F0aW9uc1NwZWNpZmllZCA9IDE7CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICBy
ZXR1cm4gcXVhbGlmaWVyOwotfQotCi1UTGF5b3V0UXVhbGlmaWVyIFRQYXJzZUNvbnRleHQ6Ompv
aW5MYXlvdXRRdWFsaWZpZXJzKFRMYXlvdXRRdWFsaWZpZXIgbGVmdFF1YWxpZmllciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVExheW91dFF1
YWxpZmllciByaWdodFF1YWxpZmllcikKLXsKLSAgICBUTGF5b3V0UXVhbGlmaWVyIGpvaW5lZFF1
YWxpZmllciA9IGxlZnRRdWFsaWZpZXI7Ci0KLSAgICBpZiAocmlnaHRRdWFsaWZpZXIubG9jYXRp
b24gIT0gLTEpCisgICAgZWxzZSBpZiAocXVhbGlmaWVyVHlwZSA9PSAibG9jYWxfc2l6ZV94IikK
KyAgICB7CisgICAgICAgIHBhcnNlTG9jYWxTaXplKHF1YWxpZmllclR5cGUsIHF1YWxpZmllclR5
cGVMaW5lLCBpbnRWYWx1ZSwgaW50VmFsdWVMaW5lLCBpbnRWYWx1ZVN0cmluZywgMHUsCisgICAg
ICAgICAgICAgICAgICAgICAgICZxdWFsaWZpZXIubG9jYWxTaXplKTsKKyAgICB9CisgICAgZWxz
ZSBpZiAocXVhbGlmaWVyVHlwZSA9PSAibG9jYWxfc2l6ZV95IikKICAgICB7Ci0gICAgICAgIGpv
aW5lZFF1YWxpZmllci5sb2NhdGlvbiA9IHJpZ2h0UXVhbGlmaWVyLmxvY2F0aW9uOworICAgICAg
ICBwYXJzZUxvY2FsU2l6ZShxdWFsaWZpZXJUeXBlLCBxdWFsaWZpZXJUeXBlTGluZSwgaW50VmFs
dWUsIGludFZhbHVlTGluZSwgaW50VmFsdWVTdHJpbmcsIDF1LAorICAgICAgICAgICAgICAgICAg
ICAgICAmcXVhbGlmaWVyLmxvY2FsU2l6ZSk7CiAgICAgfQotICAgIGlmIChyaWdodFF1YWxpZmll
ci5tYXRyaXhQYWNraW5nICE9IEVtcFVuc3BlY2lmaWVkKQorICAgIGVsc2UgaWYgKHF1YWxpZmll
clR5cGUgPT0gImxvY2FsX3NpemVfeiIpCiAgICAgewotICAgICAgICBqb2luZWRRdWFsaWZpZXIu
bWF0cml4UGFja2luZyA9IHJpZ2h0UXVhbGlmaWVyLm1hdHJpeFBhY2tpbmc7CisgICAgICAgIHBh
cnNlTG9jYWxTaXplKHF1YWxpZmllclR5cGUsIHF1YWxpZmllclR5cGVMaW5lLCBpbnRWYWx1ZSwg
aW50VmFsdWVMaW5lLCBpbnRWYWx1ZVN0cmluZywgMnUsCisgICAgICAgICAgICAgICAgICAgICAg
ICZxdWFsaWZpZXIubG9jYWxTaXplKTsKICAgICB9Ci0gICAgaWYgKHJpZ2h0UXVhbGlmaWVyLmJs
b2NrU3RvcmFnZSAhPSBFYnNVbnNwZWNpZmllZCkKKyAgICBlbHNlCiAgICAgewotICAgICAgICBq
b2luZWRRdWFsaWZpZXIuYmxvY2tTdG9yYWdlID0gcmlnaHRRdWFsaWZpZXIuYmxvY2tTdG9yYWdl
OworICAgICAgICBlcnJvcihxdWFsaWZpZXJUeXBlTGluZSwgImludmFsaWQgbGF5b3V0IHF1YWxp
ZmllciIsIHF1YWxpZmllclR5cGUuY19zdHIoKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGpvaW5l
ZFF1YWxpZmllcjsKKyAgICByZXR1cm4gcXVhbGlmaWVyOwogfQogCi1UUHVibGljVHlwZSBUUGFy
c2VDb250ZXh0Ojpqb2luSW50ZXJwb2xhdGlvblF1YWxpZmllcnMoY29uc3QgVFNvdXJjZUxvYyAm
aW50ZXJwb2xhdGlvbkxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUUXVhbGlmaWVyIGludGVycG9sYXRpb25RdWFsaWZpZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFNvdXJjZUxvYyAmc3RvcmFnZUxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUUXVhbGlmaWVyIHN0b3JhZ2VRdWFsaWZpZXIpCitUVHlw
ZVF1YWxpZmllckJ1aWxkZXIgKlRQYXJzZUNvbnRleHQ6OmNyZWF0ZVR5cGVRdWFsaWZpZXJCdWls
ZGVyKGNvbnN0IFRTb3VyY2VMb2MgJmxvYykKIHsKLSAgICBUUXVhbGlmaWVyIG1lcmdlZFF1YWxp
ZmllciA9IEV2cVNtb290aEluOworICAgIHJldHVybiBuZXcgVFR5cGVRdWFsaWZpZXJCdWlsZGVy
KAorICAgICAgICBuZXcgVFN0b3JhZ2VRdWFsaWZpZXJXcmFwcGVyKHN5bWJvbFRhYmxlLmF0R2xv
YmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeSwgbG9jKSwKKyAgICAgICAgbVNo
YWRlclZlcnNpb24pOworfQogCi0gICAgaWYgKHN0b3JhZ2VRdWFsaWZpZXIgPT0gRXZxRnJhZ21l
bnRJbikKLSAgICB7Ci0gICAgICAgIGlmIChpbnRlcnBvbGF0aW9uUXVhbGlmaWVyID09IEV2cVNt
b290aCkKLSAgICAgICAgICAgIG1lcmdlZFF1YWxpZmllciA9IEV2cVNtb290aEluOwotICAgICAg
ICBlbHNlIGlmIChpbnRlcnBvbGF0aW9uUXVhbGlmaWVyID09IEV2cUZsYXQpCi0gICAgICAgICAg
ICBtZXJnZWRRdWFsaWZpZXIgPSBFdnFGbGF0SW47Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKHN0b3JhZ2VRdWFsaWZpZXIgPT0g
RXZxQ2VudHJvaWRJbikKLSAgICB7Ci0gICAgICAgIGlmIChpbnRlcnBvbGF0aW9uUXVhbGlmaWVy
ID09IEV2cVNtb290aCkKLSAgICAgICAgICAgIG1lcmdlZFF1YWxpZmllciA9IEV2cUNlbnRyb2lk
SW47Ci0gICAgICAgIGVsc2UgaWYgKGludGVycG9sYXRpb25RdWFsaWZpZXIgPT0gRXZxRmxhdCkK
LSAgICAgICAgICAgIG1lcmdlZFF1YWxpZmllciA9IEV2cUZsYXRJbjsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoc3RvcmFnZVF1
YWxpZmllciA9PSBFdnFWZXJ0ZXhPdXQpCi0gICAgewotICAgICAgICBpZiAoaW50ZXJwb2xhdGlv
blF1YWxpZmllciA9PSBFdnFTbW9vdGgpCi0gICAgICAgICAgICBtZXJnZWRRdWFsaWZpZXIgPSBF
dnFTbW9vdGhPdXQ7Ci0gICAgICAgIGVsc2UgaWYgKGludGVycG9sYXRpb25RdWFsaWZpZXIgPT0g
RXZxRmxhdCkKLSAgICAgICAgICAgIG1lcmdlZFF1YWxpZmllciA9IEV2cUZsYXRPdXQ7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgfQotICAgIGVsc2UgaWYg
KHN0b3JhZ2VRdWFsaWZpZXIgPT0gRXZxQ2VudHJvaWRPdXQpCi0gICAgewotICAgICAgICBpZiAo
aW50ZXJwb2xhdGlvblF1YWxpZmllciA9PSBFdnFTbW9vdGgpCi0gICAgICAgICAgICBtZXJnZWRR
dWFsaWZpZXIgPSBFdnFDZW50cm9pZE91dDsKLSAgICAgICAgZWxzZSBpZiAoaW50ZXJwb2xhdGlv
blF1YWxpZmllciA9PSBFdnFGbGF0KQotICAgICAgICAgICAgbWVyZ2VkUXVhbGlmaWVyID0gRXZx
RmxhdE91dDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICB9
Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgZXJyb3IoaW50ZXJwb2xhdGlvbkxvYywKLSAgICAg
ICAgICAgICAgImludGVycG9sYXRpb24gcXVhbGlmaWVyIHJlcXVpcmVzIGEgZnJhZ21lbnQgJ2lu
JyBvciB2ZXJ0ZXggJ291dCcgc3RvcmFnZSBxdWFsaWZpZXIiLAotICAgICAgICAgICAgICBnZXRJ
bnRlcnBvbGF0aW9uU3RyaW5nKGludGVycG9sYXRpb25RdWFsaWZpZXIpKTsKLSAgICAgICAgcmVj
b3ZlcigpOworVExheW91dFF1YWxpZmllciBUUGFyc2VDb250ZXh0Ojpqb2luTGF5b3V0UXVhbGlm
aWVycyhUTGF5b3V0UXVhbGlmaWVyIGxlZnRRdWFsaWZpZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRMYXlvdXRRdWFsaWZpZXIgcmlnaHRR
dWFsaWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJnJpZ2h0UXVhbGlmaWVyTG9jYXRpb24pCit7CisgICAg
cmV0dXJuIHNoOjpKb2luTGF5b3V0UXVhbGlmaWVycyhsZWZ0UXVhbGlmaWVyLCByaWdodFF1YWxp
ZmllciwgcmlnaHRRdWFsaWZpZXJMb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZtRGlhZ25vc3RpY3MpOworfQogCi0gICAgICAgIG1lcmdlZFF1YWxpZmllciA9
IHN0b3JhZ2VRdWFsaWZpZXI7Ci0gICAgfQorVEZpZWxkTGlzdCAqVFBhcnNlQ29udGV4dDo6YWRk
U3RydWN0RGVjbGFyYXRvckxpc3RXaXRoUXVhbGlmaWVycygKKyAgICBjb25zdCBUVHlwZVF1YWxp
ZmllckJ1aWxkZXIgJnR5cGVRdWFsaWZpZXJCdWlsZGVyLAorICAgIFRQdWJsaWNUeXBlICp0eXBl
U3BlY2lmaWVyLAorICAgIFRGaWVsZExpc3QgKmZpZWxkTGlzdCkKK3sKKyAgICBUVHlwZVF1YWxp
ZmllciB0eXBlUXVhbGlmaWVyID0gdHlwZVF1YWxpZmllckJ1aWxkZXIuZ2V0VmFyaWFibGVUeXBl
UXVhbGlmaWVyKCZtRGlhZ25vc3RpY3MpOwogCi0gICAgVFB1YmxpY1R5cGUgdHlwZTsKLSAgICB0
eXBlLnNldEJhc2ljKEVidFZvaWQsIG1lcmdlZFF1YWxpZmllciwgc3RvcmFnZUxvYyk7Ci0gICAg
cmV0dXJuIHR5cGU7CisgICAgdHlwZVNwZWNpZmllci0+cXVhbGlmaWVyICAgICAgID0gdHlwZVF1
YWxpZmllci5xdWFsaWZpZXI7CisgICAgdHlwZVNwZWNpZmllci0+bGF5b3V0UXVhbGlmaWVyID0g
dHlwZVF1YWxpZmllci5sYXlvdXRRdWFsaWZpZXI7CisgICAgdHlwZVNwZWNpZmllci0+aW52YXJp
YW50ICAgICAgID0gdHlwZVF1YWxpZmllci5pbnZhcmlhbnQ7CisgICAgaWYgKHR5cGVRdWFsaWZp
ZXIucHJlY2lzaW9uICE9IEVicFVuZGVmaW5lZCkKKyAgICB7CisgICAgICAgIHR5cGVTcGVjaWZp
ZXItPnByZWNpc2lvbiA9IHR5cGVRdWFsaWZpZXIucHJlY2lzaW9uOworICAgIH0KKyAgICByZXR1
cm4gYWRkU3RydWN0RGVjbGFyYXRvckxpc3QoKnR5cGVTcGVjaWZpZXIsIGZpZWxkTGlzdCk7CiB9
CiAKIFRGaWVsZExpc3QgKlRQYXJzZUNvbnRleHQ6OmFkZFN0cnVjdERlY2xhcmF0b3JMaXN0KGNv
bnN0IFRQdWJsaWNUeXBlICZ0eXBlU3BlY2lmaWVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVEZpZWxkTGlzdCAqZmllbGRMaXN0KQogewotICAg
IGlmICh2b2lkRXJyb3JDaGVjayh0eXBlU3BlY2lmaWVyLmxpbmUsICgqZmllbGRMaXN0KVswXS0+
bmFtZSgpLCB0eXBlU3BlY2lmaWVyLnR5cGUpKQotICAgIHsKLSAgICAgICAgcmVjb3ZlcigpOwot
ICAgIH0KKyAgICBjaGVja1ByZWNpc2lvblNwZWNpZmllZCh0eXBlU3BlY2lmaWVyLmdldExpbmUo
KSwgdHlwZVNwZWNpZmllci5wcmVjaXNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHlwZVNwZWNpZmllci5nZXRCYXNpY1R5cGUoKSk7CisKKyAgICBjaGVja0lzTm9uVm9pZCh0eXBl
U3BlY2lmaWVyLmdldExpbmUoKSwgKCpmaWVsZExpc3QpWzBdLT5uYW1lKCksIHR5cGVTcGVjaWZp
ZXIuZ2V0QmFzaWNUeXBlKCkpOworCisgICAgY2hlY2tXb3JrR3JvdXBTaXplSXNOb3RTcGVjaWZp
ZWQodHlwZVNwZWNpZmllci5nZXRMaW5lKCksIHR5cGVTcGVjaWZpZXIubGF5b3V0UXVhbGlmaWVy
KTsKIAogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZmllbGRMaXN0LT5zaXplKCk7
ICsraSkKICAgICB7CkBAIC0zMzE3LDU5ICszMDE1LDUxIEBAIFRGaWVsZExpc3QgKlRQYXJzZUNv
bnRleHQ6OmFkZFN0cnVjdERlY2wKICAgICAgICAgLy8gQ2FyZWZ1bCBub3QgdG8gcmVwbGFjZSBh
bHJlYWR5IGtub3duIGFzcGVjdHMgb2YgdHlwZSwgbGlrZSBhcnJheS1uZXNzCiAgICAgICAgIC8v
CiAgICAgICAgIFRUeXBlICp0eXBlID0gKCpmaWVsZExpc3QpW2ldLT50eXBlKCk7Ci0gICAgICAg
IHR5cGUtPnNldEJhc2ljVHlwZSh0eXBlU3BlY2lmaWVyLnR5cGUpOwotICAgICAgICB0eXBlLT5z
ZXRQcmltYXJ5U2l6ZSh0eXBlU3BlY2lmaWVyLnByaW1hcnlTaXplKTsKLSAgICAgICAgdHlwZS0+
c2V0U2Vjb25kYXJ5U2l6ZSh0eXBlU3BlY2lmaWVyLnNlY29uZGFyeVNpemUpOworICAgICAgICB0
eXBlLT5zZXRCYXNpY1R5cGUodHlwZVNwZWNpZmllci5nZXRCYXNpY1R5cGUoKSk7CisgICAgICAg
IHR5cGUtPnNldFByaW1hcnlTaXplKHR5cGVTcGVjaWZpZXIuZ2V0UHJpbWFyeVNpemUoKSk7Cisg
ICAgICAgIHR5cGUtPnNldFNlY29uZGFyeVNpemUodHlwZVNwZWNpZmllci5nZXRTZWNvbmRhcnlT
aXplKCkpOwogICAgICAgICB0eXBlLT5zZXRQcmVjaXNpb24odHlwZVNwZWNpZmllci5wcmVjaXNp
b24pOwogICAgICAgICB0eXBlLT5zZXRRdWFsaWZpZXIodHlwZVNwZWNpZmllci5xdWFsaWZpZXIp
OwogICAgICAgICB0eXBlLT5zZXRMYXlvdXRRdWFsaWZpZXIodHlwZVNwZWNpZmllci5sYXlvdXRR
dWFsaWZpZXIpOworICAgICAgICB0eXBlLT5zZXRJbnZhcmlhbnQodHlwZVNwZWNpZmllci5pbnZh
cmlhbnQpOwogCiAgICAgICAgIC8vIGRvbid0IGFsbG93IGFycmF5cyBvZiBhcnJheXMKICAgICAg
ICAgaWYgKHR5cGUtPmlzQXJyYXkoKSkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKGFycmF5
VHlwZUVycm9yQ2hlY2sodHlwZVNwZWNpZmllci5saW5lLCB0eXBlU3BlY2lmaWVyKSkKLSAgICAg
ICAgICAgICAgICByZWNvdmVyKCk7CisgICAgICAgICAgICBjaGVja0lzVmFsaWRUeXBlRm9yQXJy
YXkodHlwZVNwZWNpZmllci5nZXRMaW5lKCksIHR5cGVTcGVjaWZpZXIpOwogICAgICAgICB9CiAg
ICAgICAgIGlmICh0eXBlU3BlY2lmaWVyLmFycmF5KQotICAgICAgICAgICAgdHlwZS0+c2V0QXJy
YXlTaXplKHR5cGVTcGVjaWZpZXIuYXJyYXlTaXplKTsKLSAgICAgICAgaWYgKHR5cGVTcGVjaWZp
ZXIudXNlckRlZikKKyAgICAgICAgICAgIHR5cGUtPnNldEFycmF5U2l6ZShzdGF0aWNfY2FzdDx1
bnNpZ25lZCBpbnQ+KHR5cGVTcGVjaWZpZXIuYXJyYXlTaXplKSk7CisgICAgICAgIGlmICh0eXBl
U3BlY2lmaWVyLmdldFVzZXJEZWYoKSkKICAgICAgICAgewotICAgICAgICAgICAgdHlwZS0+c2V0
U3RydWN0KHR5cGVTcGVjaWZpZXIudXNlckRlZi0+Z2V0U3RydWN0KCkpOworICAgICAgICAgICAg
dHlwZS0+c2V0U3RydWN0KHR5cGVTcGVjaWZpZXIuZ2V0VXNlckRlZigpLT5nZXRTdHJ1Y3QoKSk7
CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoc3RydWN0TmVzdGluZ0Vycm9yQ2hlY2sodHlwZVNw
ZWNpZmllci5saW5lLCAqKCpmaWVsZExpc3QpW2ldKSkKLSAgICAgICAgewotICAgICAgICAgICAg
cmVjb3ZlcigpOwotICAgICAgICB9CisgICAgICAgIGNoZWNrSXNCZWxvd1N0cnVjdE5lc3RpbmdM
aW1pdCh0eXBlU3BlY2lmaWVyLmdldExpbmUoKSwgKigqZmllbGRMaXN0KVtpXSk7CiAgICAgfQog
CiAgICAgcmV0dXJuIGZpZWxkTGlzdDsKIH0KIAotVFB1YmxpY1R5cGUgVFBhcnNlQ29udGV4dDo6
YWRkU3RydWN0dXJlKGNvbnN0IFRTb3VyY2VMb2MgJnN0cnVjdExpbmUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbmFtZUxpbmUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAqc3Ry
dWN0TmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURmllbGRM
aXN0ICpmaWVsZExpc3QpCitUVHlwZVNwZWNpZmllck5vbkFycmF5IFRQYXJzZUNvbnRleHQ6OmFk
ZFN0cnVjdHVyZShjb25zdCBUU291cmNlTG9jICZzdHJ1Y3RMaW5lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbmFt
ZUxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUU3RyaW5nICpzdHJ1Y3ROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVEZpZWxkTGlzdCAqZmllbGRMaXN0KQogewogICAgIFRT
dHJ1Y3R1cmUgKnN0cnVjdHVyZSA9IG5ldyBUU3RydWN0dXJlKHN0cnVjdE5hbWUsIGZpZWxkTGlz
dCk7CiAgICAgVFR5cGUgKnN0cnVjdHVyZVR5cGUgID0gbmV3IFRUeXBlKHN0cnVjdHVyZSk7CiAK
ICAgICAvLyBTdG9yZSBhIGJvb2wgaW4gdGhlIHN0cnVjdCBpZiB3ZSdyZSBhdCBnbG9iYWwgc2Nv
cGUsIHRvIGFsbG93IHVzIHRvCiAgICAgLy8gc2tpcCB0aGUgbG9jYWwgc3RydWN0IHNjb3Bpbmcg
d29ya2Fyb3VuZCBpbiBITFNMLgotICAgIHN0cnVjdHVyZS0+c2V0VW5pcXVlSWQoVFN5bWJvbFRh
YmxlOjpuZXh0VW5pcXVlSWQoKSk7CiAgICAgc3RydWN0dXJlLT5zZXRBdEdsb2JhbFNjb3BlKHN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSk7CiAKICAgICBpZiAoIXN0cnVjdE5hbWUtPmVtcHR5
KCkpCiAgICAgewotICAgICAgICBpZiAocmVzZXJ2ZWRFcnJvckNoZWNrKG5hbWVMaW5lLCAqc3Ry
dWN0TmFtZSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJlY292ZXIoKTsKLSAgICAgICAgfQor
ICAgICAgICBjaGVja0lzTm90UmVzZXJ2ZWQobmFtZUxpbmUsICpzdHJ1Y3ROYW1lKTsKICAgICAg
ICAgVFZhcmlhYmxlICp1c2VyVHlwZURlZiA9IG5ldyBUVmFyaWFibGUoc3RydWN0TmFtZSwgKnN0
cnVjdHVyZVR5cGUsIHRydWUpOwogICAgICAgICBpZiAoIXN5bWJvbFRhYmxlLmRlY2xhcmUodXNl
clR5cGVEZWYpKQogICAgICAgICB7CiAgICAgICAgICAgICBlcnJvcihuYW1lTGluZSwgInJlZGVm
aW5pdGlvbiIsIHN0cnVjdE5hbWUtPmNfc3RyKCksICJzdHJ1Y3QiKTsKLSAgICAgICAgICAgIHJl
Y292ZXIoKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzM4NiwyMiArMzA3NiwyNyBAQCBUUHVi
bGljVHlwZSBUUGFyc2VDb250ZXh0OjphZGRTdHJ1Y3R1cmUoCiAgICAgICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgICAgIGVycm9yKGZpZWxkLmxpbmUoKSwgImludmFsaWQgcXVhbGlmaWVy
IG9uIHN0cnVjdCBtZW1iZXIiLAogICAgICAgICAgICAgICAgICAgICAgIGdldFF1YWxpZmllclN0
cmluZyhxdWFsaWZpZXIpKTsKLSAgICAgICAgICAgICAgICByZWNvdmVyKCk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKGZpZWxkLnR5cGUoKS0+aXNJbnZh
cmlhbnQoKSkKKyAgICAgICAgeworICAgICAgICAgICAgZXJyb3IoZmllbGQubGluZSgpLCAiaW52
YWxpZCBxdWFsaWZpZXIgb24gc3RydWN0IG1lbWJlciIsICJpbnZhcmlhbnQiKTsKKyAgICAgICAg
fQorCisgICAgICAgIGNoZWNrTG9jYXRpb25Jc05vdFNwZWNpZmllZChmaWVsZC5saW5lKCksIGZp
ZWxkLnR5cGUoKS0+Z2V0TGF5b3V0UXVhbGlmaWVyKCkpOwogICAgIH0KIAotICAgIFRQdWJsaWNU
eXBlIHB1YmxpY1R5cGU7Ci0gICAgcHVibGljVHlwZS5zZXRCYXNpYyhFYnRTdHJ1Y3QsIEV2cVRl
bXBvcmFyeSwgc3RydWN0TGluZSk7Ci0gICAgcHVibGljVHlwZS51c2VyRGVmID0gc3RydWN0dXJl
VHlwZTsKLSAgICBwdWJsaWNUeXBlLmlzU3RydWN0U3BlY2lmaWVyID0gdHJ1ZTsKKyAgICBUVHlw
ZVNwZWNpZmllck5vbkFycmF5IHR5cGVTcGVjaWZpZXJOb25BcnJheTsKKyAgICB0eXBlU3BlY2lm
aWVyTm9uQXJyYXkuaW5pdGlhbGl6ZShFYnRTdHJ1Y3QsIHN0cnVjdExpbmUpOworICAgIHR5cGVT
cGVjaWZpZXJOb25BcnJheS51c2VyRGVmICAgICAgICAgICA9IHN0cnVjdHVyZVR5cGU7CisgICAg
dHlwZVNwZWNpZmllck5vbkFycmF5LmlzU3RydWN0U3BlY2lmaWVyID0gdHJ1ZTsKICAgICBleGl0
U3RydWN0RGVjbGFyYXRpb24oKTsKIAotICAgIHJldHVybiBwdWJsaWNUeXBlOworICAgIHJldHVy
biB0eXBlU3BlY2lmaWVyTm9uQXJyYXk7CiB9CiAKIFRJbnRlcm1Td2l0Y2ggKlRQYXJzZUNvbnRl
eHQ6OmFkZFN3aXRjaChUSW50ZXJtVHlwZWQgKmluaXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqc3RhdGVtZW50TGlzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtQmxvY2sgKnN0YXRlbWVu
dExpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNv
dXJjZUxvYyAmbG9jKQogewogICAgIFRCYXNpY1R5cGUgc3dpdGNoVHlwZSA9IGluaXQtPmdldEJh
c2ljVHlwZSgpOwpAQCAtMzQxMCw3ICszMTA1LDYgQEAgVEludGVybVN3aXRjaCAqVFBhcnNlQ29u
dGV4dDo6YWRkU3dpdGNoKAogICAgIHsKICAgICAgICAgZXJyb3IoaW5pdC0+Z2V0TGluZSgpLCAi
aW5pdC1leHByZXNzaW9uIGluIGEgc3dpdGNoIHN0YXRlbWVudCBtdXN0IGJlIGEgc2NhbGFyIGlu
dGVnZXIiLAogICAgICAgICAgICAgICAic3dpdGNoIik7Ci0gICAgICAgIHJlY292ZXIoKTsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0zNDE4LDcgKzMxMTIsNiBAQCBUSW50
ZXJtU3dpdGNoICpUUGFyc2VDb250ZXh0OjphZGRTd2l0Y2goCiAgICAgewogICAgICAgICBpZiAo
IVZhbGlkYXRlU3dpdGNoOjp2YWxpZGF0ZShzd2l0Y2hUeXBlLCB0aGlzLCBzdGF0ZW1lbnRMaXN0
LCBsb2MpKQogICAgICAgICB7Ci0gICAgICAgICAgICByZWNvdmVyKCk7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgIH0KQEAgLTM0MjcsNyArMzEyMCw2IEBAIFRJ
bnRlcm1Td2l0Y2ggKlRQYXJzZUNvbnRleHQ6OmFkZFN3aXRjaCgKICAgICBpZiAobm9kZSA9PSBu
dWxscHRyKQogICAgIHsKICAgICAgICAgZXJyb3IobG9jLCAiZXJyb25lb3VzIHN3aXRjaCBzdGF0
ZW1lbnQiLCAic3dpdGNoIik7Ci0gICAgICAgIHJlY292ZXIoKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogICAgIHJldHVybiBub2RlOwpAQCAtMzQzOCwyMCArMzEzMCwxNyBAQCBU
SW50ZXJtQ2FzZSAqVFBhcnNlQ29udGV4dDo6YWRkQ2FzZShUSW50CiAgICAgaWYgKG1Td2l0Y2hO
ZXN0aW5nTGV2ZWwgPT0gMCkKICAgICB7CiAgICAgICAgIGVycm9yKGxvYywgImNhc2UgbGFiZWxz
IG5lZWQgdG8gYmUgaW5zaWRlIHN3aXRjaCBzdGF0ZW1lbnRzIiwgImNhc2UiKTsKLSAgICAgICAg
cmVjb3ZlcigpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgaWYgKGNvbmRp
dGlvbiA9PSBudWxscHRyKQogICAgIHsKICAgICAgICAgZXJyb3IobG9jLCAiY2FzZSBsYWJlbCBt
dXN0IGhhdmUgYSBjb25kaXRpb24iLCAiY2FzZSIpOwotICAgICAgICByZWNvdmVyKCk7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBpZiAoKGNvbmRpdGlvbi0+Z2V0QmFzaWNU
eXBlKCkgIT0gRWJ0SW50ICYmIGNvbmRpdGlvbi0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0VUludCkg
fHwKICAgICAgICAgY29uZGl0aW9uLT5pc01hdHJpeCgpIHx8IGNvbmRpdGlvbi0+aXNBcnJheSgp
IHx8IGNvbmRpdGlvbi0+aXNWZWN0b3IoKSkKICAgICB7CiAgICAgICAgIGVycm9yKGNvbmRpdGlv
bi0+Z2V0TGluZSgpLCAiY2FzZSBsYWJlbCBtdXN0IGJlIGEgc2NhbGFyIGludGVnZXIiLCAiY2Fz
ZSIpOwotICAgICAgICByZWNvdmVyKCk7CiAgICAgfQogICAgIFRJbnRlcm1Db25zdGFudFVuaW9u
ICpjb25kaXRpb25Db25zdCA9IGNvbmRpdGlvbi0+Z2V0QXNDb25zdGFudFVuaW9uKCk7CiAgICAg
Ly8gVE9ETyhvZXR1YWhvQG52aWRpYS5jb20pOiBHZXQgcmlkIG9mIHRoZSBjb25kaXRpb25Db25z
dCA9PSBudWxscHRyIGNoZWNrIG9uY2UgYWxsIGNvbnN0YW50CkBAIC0zNDYwLDEzICszMTQ5LDEx
IEBAIFRJbnRlcm1DYXNlICpUUGFyc2VDb250ZXh0OjphZGRDYXNlKFRJbnQKICAgICBpZiAoY29u
ZGl0aW9uLT5nZXRRdWFsaWZpZXIoKSAhPSBFdnFDb25zdCB8fCBjb25kaXRpb25Db25zdCA9PSBu
dWxscHRyKQogICAgIHsKICAgICAgICAgZXJyb3IoY29uZGl0aW9uLT5nZXRMaW5lKCksICJjYXNl
IGxhYmVsIG11c3QgYmUgY29uc3RhbnQiLCAiY2FzZSIpOwotICAgICAgICByZWNvdmVyKCk7CiAg
ICAgfQogICAgIFRJbnRlcm1DYXNlICpub2RlID0gaW50ZXJtZWRpYXRlLmFkZENhc2UoY29uZGl0
aW9uLCBsb2MpOwogICAgIGlmIChub2RlID09IG51bGxwdHIpCiAgICAgewogICAgICAgICBlcnJv
cihsb2MsICJlcnJvbmVvdXMgY2FzZSBzdGF0ZW1lbnQiLCAiY2FzZSIpOwotICAgICAgICByZWNv
dmVyKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICByZXR1cm4gbm9kZTsK
QEAgLTM0NzcsMTQgKzMxNjQsMTIgQEAgVEludGVybUNhc2UgKlRQYXJzZUNvbnRleHQ6OmFkZERl
ZmF1bHQoYwogICAgIGlmIChtU3dpdGNoTmVzdGluZ0xldmVsID09IDApCiAgICAgewogICAgICAg
ICBlcnJvcihsb2MsICJkZWZhdWx0IGxhYmVscyBuZWVkIHRvIGJlIGluc2lkZSBzd2l0Y2ggc3Rh
dGVtZW50cyIsICJkZWZhdWx0Iik7Ci0gICAgICAgIHJlY292ZXIoKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogICAgIFRJbnRlcm1DYXNlICpub2RlID0gaW50ZXJtZWRpYXRlLmFk
ZENhc2UobnVsbHB0ciwgbG9jKTsKICAgICBpZiAobm9kZSA9PSBudWxscHRyKQogICAgIHsKICAg
ICAgICAgZXJyb3IobG9jLCAiZXJyb25lb3VzIGRlZmF1bHQgc3RhdGVtZW50IiwgImRlZmF1bHQi
KTsKLSAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAg
ICAgcmV0dXJuIG5vZGU7CkBAIC0zNTIzLDcgKzMyMDgsNyBAQCBUSW50ZXJtVHlwZWQgKlRQYXJz
ZUNvbnRleHQ6OmNyZWF0ZVVuYXJ5CiAgICAgICAgIGNhc2UgRU9wTmVnYXRpdmU6CiAgICAgICAg
IGNhc2UgRU9wUG9zaXRpdmU6CiAgICAgICAgICAgICBpZiAoY2hpbGQtPmdldEJhc2ljVHlwZSgp
ID09IEVidFN0cnVjdCB8fCBjaGlsZC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0Qm9vbCB8fAotICAg
ICAgICAgICAgICAgIGNoaWxkLT5pc0FycmF5KCkpCisgICAgICAgICAgICAgICAgY2hpbGQtPmlz
QXJyYXkoKSB8fCBJc1NhbXBsZXIoY2hpbGQtPmdldEJhc2ljVHlwZSgpKSkKICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIH0KQEAgLTM1
MzIsNyArMzIxNywxNCBAQCBUSW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6OmNyZWF0ZVVuYXJ5
CiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICByZXR1cm4gaW50ZXJtZWRpYXRlLmFk
ZFVuYXJ5TWF0aChvcCwgY2hpbGQsIGxvYywgZnVuY1JldHVyblR5cGUpOworICAgIFRJbnRlcm1V
bmFyeSAqbm9kZSA9IG5ldyBUSW50ZXJtVW5hcnkob3AsIGNoaWxkKTsKKyAgICBub2RlLT5zZXRM
aW5lKGxvYyk7CisKKyAgICBUSW50ZXJtVHlwZWQgKmZvbGRlZE5vZGUgPSBub2RlLT5mb2xkKCZt
RGlhZ25vc3RpY3MpOworICAgIGlmIChmb2xkZWROb2RlKQorICAgICAgICByZXR1cm4gZm9sZGVk
Tm9kZTsKKworICAgIHJldHVybiBub2RlOwogfQogCiBUSW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRl
eHQ6OmFkZFVuYXJ5TWF0aChUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCAqY2hpbGQsIGNvbnN0
IFRTb3VyY2VMb2MgJmxvYykKQEAgLTM1NDEsNyArMzIzMyw2IEBAIFRJbnRlcm1UeXBlZCAqVFBh
cnNlQ29udGV4dDo6YWRkVW5hcnlNYXQKICAgICBpZiAobm9kZSA9PSBudWxscHRyKQogICAgIHsK
ICAgICAgICAgdW5hcnlPcEVycm9yKGxvYywgR2V0T3BlcmF0b3JTdHJpbmcob3ApLCBjaGlsZC0+
Z2V0Q29tcGxldGVTdHJpbmcoKSk7Ci0gICAgICAgIHJlY292ZXIoKTsKICAgICAgICAgcmV0dXJu
IGNoaWxkOwogICAgIH0KICAgICByZXR1cm4gbm9kZTsKQEAgLTM1NTEsOCArMzI0Miw3IEBAIFRJ
bnRlcm1UeXBlZCAqVFBhcnNlQ29udGV4dDo6YWRkVW5hcnlNYXQKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqY2hpbGQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNl
TG9jICZsb2MpCiB7Ci0gICAgaWYgKGxWYWx1ZUVycm9yQ2hlY2sobG9jLCBHZXRPcGVyYXRvclN0
cmluZyhvcCksIGNoaWxkKSkKLSAgICAgICAgcmVjb3ZlcigpOworICAgIGNoZWNrQ2FuQmVMVmFs
dWUobG9jLCBHZXRPcGVyYXRvclN0cmluZyhvcCksIGNoaWxkKTsKICAgICByZXR1cm4gYWRkVW5h
cnlNYXRoKG9wLCBjaGlsZCwgbG9jKTsKIH0KIApAQCAtMzU2MSw2ICszMjUxLDI4IEBAIGJvb2wg
VFBhcnNlQ29udGV4dDo6YmluYXJ5T3BDb21tb25DaGVjaygKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnJpZ2h0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvYykKIHsKKyAgICBp
ZiAobGVmdC0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpIHx8IHJpZ2h0LT5nZXRUeXBlKCkuZ2V0U3Ry
dWN0KCkpCisgICAgeworICAgICAgICBzd2l0Y2ggKG9wKQorICAgICAgICB7CisgICAgICAgICAg
ICBjYXNlIEVPcEluZGV4RGlyZWN0U3RydWN0OgorICAgICAgICAgICAgICAgIEFTU0VSVChsZWZ0
LT5nZXRUeXBlKCkuZ2V0U3RydWN0KCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBFT3BFcXVhbDoKKyAgICAgICAgICAgIGNhc2UgRU9wTm90RXF1YWw6CisgICAg
ICAgICAgICBjYXNlIEVPcEFzc2lnbjoKKyAgICAgICAgICAgIGNhc2UgRU9wSW5pdGlhbGl6ZToK
KyAgICAgICAgICAgICAgICBpZiAobGVmdC0+Z2V0VHlwZSgpICE9IHJpZ2h0LT5nZXRUeXBlKCkp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICBlcnJvcihsb2MsICJJbnZhbGlkIG9wZXJhdGlvbiBmb3Ig
c3RydWN0cyIsIEdldE9wZXJhdG9yU3RyaW5nKG9wKSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisgICAgfQorCiAgICAgaWYgKGxlZnQtPmlzQXJyYXkoKSB8fCBy
aWdodC0+aXNBcnJheSgpKQogICAgIHsKICAgICAgICAgaWYgKG1TaGFkZXJWZXJzaW9uIDwgMzAw
KQpAQCAtMzYzNCw4ICszMzQ2LDEwIEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6YmluYXJ5T3BDb21t
b25DaGVjaygKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIC8vIENoZWNrIHRo
YXQgdHlwZSBzaXplcyBtYXRjaCBleGFjdGx5IG9uIG9wcyB0aGF0IHJlcXVpcmUgdGhhdC4KLSAg
ICAvLyBBbHNvIGNoZWNrIHJlc3RyaWN0aW9ucyBmb3Igc3RydWN0cyB0aGF0IGNvbnRhaW4gYXJy
YXlzIG9yIHNhbXBsZXJzLgorICAgIC8vIENoZWNrIHRoYXQ6CisgICAgLy8gMS4gVHlwZSBzaXpl
cyBtYXRjaCBleGFjdGx5IG9uIG9wcyB0aGF0IHJlcXVpcmUgdGhhdC4KKyAgICAvLyAyLiBSZXN0
cmljdGlvbnMgZm9yIHN0cnVjdHMgdGhhdCBjb250YWluIGFycmF5cyBvciBzYW1wbGVycyBhcmUg
cmVzcGVjdGVkLgorICAgIC8vIDMuIEFyaXRobWV0aWMgb3AgdHlwZSBkaW1lbnNpb25hbGl0eSBy
ZXN0cmljdGlvbnMgZm9yIG9wcyBvdGhlciB0aGFuIG11bHRpcGx5IGFyZSByZXNwZWN0ZWQuCiAg
ICAgc3dpdGNoIChvcCkKICAgICB7CiAgICAgICAgIGNhc2UgRU9wQXNzaWduOgpAQCAtMzY2OCw2
ICszMzgyLDQ4IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6YmluYXJ5T3BDb21tb25DaGVjaygKICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BBZGQ6CisgICAgICAgIGNhc2Ug
RU9wU3ViOgorICAgICAgICBjYXNlIEVPcERpdjoKKyAgICAgICAgY2FzZSBFT3BJTW9kOgorICAg
ICAgICBjYXNlIEVPcEJpdFNoaWZ0TGVmdDoKKyAgICAgICAgY2FzZSBFT3BCaXRTaGlmdFJpZ2h0
OgorICAgICAgICBjYXNlIEVPcEJpdHdpc2VBbmQ6CisgICAgICAgIGNhc2UgRU9wQml0d2lzZVhv
cjoKKyAgICAgICAgY2FzZSBFT3BCaXR3aXNlT3I6CisgICAgICAgIGNhc2UgRU9wQWRkQXNzaWdu
OgorICAgICAgICBjYXNlIEVPcFN1YkFzc2lnbjoKKyAgICAgICAgY2FzZSBFT3BEaXZBc3NpZ246
CisgICAgICAgIGNhc2UgRU9wSU1vZEFzc2lnbjoKKyAgICAgICAgY2FzZSBFT3BCaXRTaGlmdExl
ZnRBc3NpZ246CisgICAgICAgIGNhc2UgRU9wQml0U2hpZnRSaWdodEFzc2lnbjoKKyAgICAgICAg
Y2FzZSBFT3BCaXR3aXNlQW5kQXNzaWduOgorICAgICAgICBjYXNlIEVPcEJpdHdpc2VYb3JBc3Np
Z246CisgICAgICAgIGNhc2UgRU9wQml0d2lzZU9yQXNzaWduOgorICAgICAgICAgICAgaWYgKChs
ZWZ0LT5pc01hdHJpeCgpICYmIHJpZ2h0LT5pc1ZlY3RvcigpKSB8fCAobGVmdC0+aXNWZWN0b3Io
KSAmJiByaWdodC0+aXNNYXRyaXgoKSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBBcmUgdGhlIHNp
emVzIGNvbXBhdGlibGU/CisgICAgICAgICAgICBpZiAobGVmdC0+Z2V0Tm9taW5hbFNpemUoKSAh
PSByaWdodC0+Z2V0Tm9taW5hbFNpemUoKSB8fAorICAgICAgICAgICAgICAgIGxlZnQtPmdldFNl
Y29uZGFyeVNpemUoKSAhPSByaWdodC0+Z2V0U2Vjb25kYXJ5U2l6ZSgpKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIC8vIElmIHRoZSBub21pbmFsIHNpemVzIG9mIG9wZXJhbmRzIGRv
IG5vdCBtYXRjaDoKKyAgICAgICAgICAgICAgICAvLyBPbmUgb2YgdGhlbSBtdXN0IGJlIGEgc2Nh
bGFyLgorICAgICAgICAgICAgICAgIGlmICghbGVmdC0+aXNTY2FsYXIoKSAmJiAhcmlnaHQtPmlz
U2NhbGFyKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAg
ICAgICAgIC8vIEluIHRoZSBjYXNlIG9mIGNvbXBvdW5kIGFzc2lnbm1lbnQgb3RoZXIgdGhhbiBt
dWx0aXBseS1hc3NpZ24sCisgICAgICAgICAgICAgICAgLy8gdGhlIHJpZ2h0IHNpZGUgbmVlZHMg
dG8gYmUgYSBzY2FsYXIuIE90aGVyd2lzZSBhIHZlY3Rvci9tYXRyaXgKKyAgICAgICAgICAgICAg
ICAvLyB3b3VsZCBiZSBhc3NpZ25lZCB0byBhIHNjYWxhci4gQSBzY2FsYXIgY2FuJ3QgYmUgc2hp
ZnRlZCBieSBhCisgICAgICAgICAgICAgICAgLy8gdmVjdG9yIGVpdGhlci4KKyAgICAgICAgICAg
ICAgICBpZiAoIXJpZ2h0LT5pc1NjYWxhcigpICYmCisgICAgICAgICAgICAgICAgICAgIChJc0Fz
c2lnbm1lbnQob3ApIHx8IG9wID09IEVPcEJpdFNoaWZ0TGVmdCB8fCBvcCA9PSBFT3BCaXRTaGlm
dFJpZ2h0KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVh
azsKICAgICB9CkBAIC0zNjc1LDYgKzM0MzEsNDkgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpiaW5h
cnlPcENvbW1vbkNoZWNrKAogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFRQYXJzZUNvbnRl
eHQ6OmlzTXVsdGlwbGljYXRpb25UeXBlQ29tYmluYXRpb25WYWxpZChUT3BlcmF0b3Igb3AsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUVHlwZSAmbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZyaWdodCkKK3sKKyAgICBzd2l0Y2ggKG9w
KQorICAgIHsKKyAgICAgICAgY2FzZSBFT3BNdWw6CisgICAgICAgIGNhc2UgRU9wTXVsQXNzaWdu
OgorICAgICAgICAgICAgcmV0dXJuIGxlZnQuZ2V0Tm9taW5hbFNpemUoKSA9PSByaWdodC5nZXRO
b21pbmFsU2l6ZSgpICYmCisgICAgICAgICAgICAgICAgICAgbGVmdC5nZXRTZWNvbmRhcnlTaXpl
KCkgPT0gcmlnaHQuZ2V0U2Vjb25kYXJ5U2l6ZSgpOworICAgICAgICBjYXNlIEVPcFZlY3RvclRp
bWVzU2NhbGFyOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGNhc2UgRU9wVmVj
dG9yVGltZXNTY2FsYXJBc3NpZ246CisgICAgICAgICAgICBBU1NFUlQoIWxlZnQuaXNNYXRyaXgo
KSAmJiAhcmlnaHQuaXNNYXRyaXgoKSk7CisgICAgICAgICAgICByZXR1cm4gbGVmdC5pc1ZlY3Rv
cigpICYmICFyaWdodC5pc1ZlY3RvcigpOworICAgICAgICBjYXNlIEVPcFZlY3RvclRpbWVzTWF0
cml4OgorICAgICAgICAgICAgcmV0dXJuIGxlZnQuZ2V0Tm9taW5hbFNpemUoKSA9PSByaWdodC5n
ZXRSb3dzKCk7CisgICAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNNYXRyaXhBc3NpZ246CisgICAg
ICAgICAgICBBU1NFUlQoIWxlZnQuaXNNYXRyaXgoKSAmJiByaWdodC5pc01hdHJpeCgpKTsKKyAg
ICAgICAgICAgIHJldHVybiBsZWZ0LmlzVmVjdG9yKCkgJiYgbGVmdC5nZXROb21pbmFsU2l6ZSgp
ID09IHJpZ2h0LmdldFJvd3MoKSAmJgorICAgICAgICAgICAgICAgICAgIGxlZnQuZ2V0Tm9taW5h
bFNpemUoKSA9PSByaWdodC5nZXRDb2xzKCk7CisgICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNW
ZWN0b3I6CisgICAgICAgICAgICByZXR1cm4gbGVmdC5nZXRDb2xzKCkgPT0gcmlnaHQuZ2V0Tm9t
aW5hbFNpemUoKTsKKyAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1NjYWxhcjoKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzU2NhbGFyQXNzaWdu
OgorICAgICAgICAgICAgQVNTRVJUKGxlZnQuaXNNYXRyaXgoKSAmJiAhcmlnaHQuaXNNYXRyaXgo
KSk7CisgICAgICAgICAgICByZXR1cm4gIXJpZ2h0LmlzVmVjdG9yKCk7CisgICAgICAgIGNhc2Ug
RU9wTWF0cml4VGltZXNNYXRyaXg6CisgICAgICAgICAgICByZXR1cm4gbGVmdC5nZXRDb2xzKCkg
PT0gcmlnaHQuZ2V0Um93cygpOworICAgICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzTWF0cml4QXNz
aWduOgorICAgICAgICAgICAgQVNTRVJUKGxlZnQuaXNNYXRyaXgoKSAmJiByaWdodC5pc01hdHJp
eCgpKTsKKyAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgdHdvIHRoaW5nczoKKyAgICAg
ICAgICAgIC8vIDEuIFRoZSBtYXRyaXggbXVsdGlwbGljYXRpb24gc3RlcCBpcyB2YWxpZC4KKyAg
ICAgICAgICAgIC8vIDIuIFRoZSByZXN1bHQgd2lsbCBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiBj
b2x1bW5zIGFzIHRoZSBsdmFsdWUuCisgICAgICAgICAgICByZXR1cm4gbGVmdC5nZXRDb2xzKCkg
PT0gcmlnaHQuZ2V0Um93cygpICYmIGxlZnQuZ2V0Q29scygpID09IHJpZ2h0LmdldENvbHMoKTsK
KworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKIFRJbnRlcm1UeXBlZCAqVFBhcnNlQ29udGV4
dDo6YWRkQmluYXJ5TWF0aEludGVybmFsKFRPcGVyYXRvciBvcCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqbGVmdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1U
eXBlZCAqcmlnaHQsCkBAIC0zNjkyLDggKzM0OTEsOSBAQCBUSW50ZXJtVHlwZWQgKlRQYXJzZUNv
bnRleHQ6OmFkZEJpbmFyeU1hCiAgICAgICAgIGNhc2UgRU9wR3JlYXRlclRoYW46CiAgICAgICAg
IGNhc2UgRU9wTGVzc1RoYW5FcXVhbDoKICAgICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbkVxdWFs
OgotICAgICAgICAgICAgQVNTRVJUKCFsZWZ0LT5pc0FycmF5KCkgJiYgIXJpZ2h0LT5pc0FycmF5
KCkpOwotICAgICAgICAgICAgaWYgKGxlZnQtPmlzTWF0cml4KCkgfHwgbGVmdC0+aXNWZWN0b3Io
KSB8fCBsZWZ0LT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpCisgICAgICAgICAgICBBU1NF
UlQoIWxlZnQtPmlzQXJyYXkoKSAmJiAhcmlnaHQtPmlzQXJyYXkoKSAmJiAhbGVmdC0+Z2V0VHlw
ZSgpLmdldFN0cnVjdCgpICYmCisgICAgICAgICAgICAgICAgICAgIXJpZ2h0LT5nZXRUeXBlKCku
Z2V0U3RydWN0KCkpOworICAgICAgICAgICAgaWYgKGxlZnQtPmlzTWF0cml4KCkgfHwgbGVmdC0+
aXNWZWN0b3IoKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAgICAgICAgIH0KQEAgLTM3MDEsNyArMzUwMSw4IEBAIFRJbnRlcm1UeXBlZCAqVFBh
cnNlQ29udGV4dDo6YWRkQmluYXJ5TWEKICAgICAgICAgY2FzZSBFT3BMb2dpY2FsT3I6CiAgICAg
ICAgIGNhc2UgRU9wTG9naWNhbFhvcjoKICAgICAgICAgY2FzZSBFT3BMb2dpY2FsQW5kOgotICAg
ICAgICAgICAgQVNTRVJUKCFsZWZ0LT5pc0FycmF5KCkgJiYgIXJpZ2h0LT5pc0FycmF5KCkpOwor
ICAgICAgICAgICAgQVNTRVJUKCFsZWZ0LT5pc0FycmF5KCkgJiYgIXJpZ2h0LT5pc0FycmF5KCkg
JiYgIWxlZnQtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKSAmJgorICAgICAgICAgICAgICAgICAgICFy
aWdodC0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpKTsKICAgICAgICAgICAgIGlmIChsZWZ0LT5nZXRC
YXNpY1R5cGUoKSAhPSBFYnRCb29sIHx8IGxlZnQtPmlzTWF0cml4KCkgfHwgbGVmdC0+aXNWZWN0
b3IoKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTM3MTEsMjggKzM1MTIsNDQgQEAgVEludGVybVR5cGVkICpUUGFyc2VDb250ZXh0OjphZGRCaW5h
cnlNYQogICAgICAgICBjYXNlIEVPcFN1YjoKICAgICAgICAgY2FzZSBFT3BEaXY6CiAgICAgICAg
IGNhc2UgRU9wTXVsOgotICAgICAgICAgICAgQVNTRVJUKCFsZWZ0LT5pc0FycmF5KCkgJiYgIXJp
Z2h0LT5pc0FycmF5KCkpOwotICAgICAgICAgICAgaWYgKGxlZnQtPmdldEJhc2ljVHlwZSgpID09
IEVidFN0cnVjdCB8fCBsZWZ0LT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRCb29sKQorICAgICAgICAg
ICAgQVNTRVJUKCFsZWZ0LT5pc0FycmF5KCkgJiYgIXJpZ2h0LT5pc0FycmF5KCkgJiYgIWxlZnQt
PmdldFR5cGUoKS5nZXRTdHJ1Y3QoKSAmJgorICAgICAgICAgICAgICAgICAgICFyaWdodC0+Z2V0
VHlwZSgpLmdldFN0cnVjdCgpKTsKKyAgICAgICAgICAgIGlmIChsZWZ0LT5nZXRCYXNpY1R5cGUo
KSA9PSBFYnRCb29sKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRU9w
SU1vZDoKLSAgICAgICAgICAgIEFTU0VSVCghbGVmdC0+aXNBcnJheSgpICYmICFyaWdodC0+aXNB
cnJheSgpKTsKKyAgICAgICAgICAgIEFTU0VSVCghbGVmdC0+aXNBcnJheSgpICYmICFyaWdodC0+
aXNBcnJheSgpICYmICFsZWZ0LT5nZXRUeXBlKCkuZ2V0U3RydWN0KCkgJiYKKyAgICAgICAgICAg
ICAgICAgICAhcmlnaHQtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKSk7CiAgICAgICAgICAgICAvLyBO
b3RlIHRoYXQgdGhpcyBpcyBvbmx5IGZvciB0aGUgJSBvcGVyYXRvciwgbm90IGZvciBtb2QoKQot
ICAgICAgICAgICAgaWYgKGxlZnQtPmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCB8fCBsZWZ0
LT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRCb29sIHx8Ci0gICAgICAgICAgICAgICAgbGVmdC0+Z2V0
QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQpCisgICAgICAgICAgICBpZiAobGVmdC0+Z2V0QmFzaWNU
eXBlKCkgPT0gRWJ0Qm9vbCB8fCBsZWZ0LT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCkKICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAvLyBOb3RlIHRoYXQgZm9yIGJpdHdpc2Ug
b3BzLCB0eXBlIGNoZWNraW5nIGlzIGRvbmUgaW4gcHJvbW90ZSgpIHRvCi0gICAgICAgIC8vIHNo
YXJlIGNvZGUgYmV0d2VlbiBvcHMgYW5kIGNvbXBvdW5kIGFzc2lnbm1lbnQKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHJldHVybiBpbnRlcm1lZGlh
dGUuYWRkQmluYXJ5TWF0aChvcCwgbGVmdCwgcmlnaHQsIGxvYyk7CisgICAgaWYgKG9wID09IEVP
cE11bCkKKyAgICB7CisgICAgICAgIG9wID0gVEludGVybUJpbmFyeTo6R2V0TXVsT3BCYXNlZE9u
T3BlcmFuZHMobGVmdC0+Z2V0VHlwZSgpLCByaWdodC0+Z2V0VHlwZSgpKTsKKyAgICAgICAgaWYg
KCFpc011bHRpcGxpY2F0aW9uVHlwZUNvbWJpbmF0aW9uVmFsaWQob3AsIGxlZnQtPmdldFR5cGUo
KSwgcmlnaHQtPmdldFR5cGUoKSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICB9CisgICAgfQorCisgICAgVEludGVybUJpbmFyeSAqbm9kZSA9IG5ldyBU
SW50ZXJtQmluYXJ5KG9wLCBsZWZ0LCByaWdodCk7CisgICAgbm9kZS0+c2V0TGluZShsb2MpOwor
CisgICAgLy8gU2VlIGlmIHdlIGNhbiBmb2xkIGNvbnN0YW50cy4KKyAgICBUSW50ZXJtVHlwZWQg
KmZvbGRlZE5vZGUgPSBub2RlLT5mb2xkKCZtRGlhZ25vc3RpY3MpOworICAgIGlmIChmb2xkZWRO
b2RlKQorICAgICAgICByZXR1cm4gZm9sZGVkTm9kZTsKKworICAgIHJldHVybiBub2RlOwogfQog
CiBUSW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6OmFkZEJpbmFyeU1hdGgoVE9wZXJhdG9yIG9w
LApAQCAtMzc0NSw3ICszNTYyLDYgQEAgVEludGVybVR5cGVkICpUUGFyc2VDb250ZXh0OjphZGRC
aW5hcnlNYQogICAgIHsKICAgICAgICAgYmluYXJ5T3BFcnJvcihsb2MsIEdldE9wZXJhdG9yU3Ry
aW5nKG9wKSwgbGVmdC0+Z2V0Q29tcGxldGVTdHJpbmcoKSwKICAgICAgICAgICAgICAgICAgICAg
ICByaWdodC0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7Ci0gICAgICAgIHJlY292ZXIoKTsKICAgICAg
ICAgcmV0dXJuIGxlZnQ7CiAgICAgfQogICAgIHJldHVybiBub2RlOwpAQCAtMzc2MSw3ICszNTc3
LDYgQEAgVEludGVybVR5cGVkICpUUGFyc2VDb250ZXh0OjphZGRCaW5hcnlNYQogICAgIHsKICAg
ICAgICAgYmluYXJ5T3BFcnJvcihsb2MsIEdldE9wZXJhdG9yU3RyaW5nKG9wKSwgbGVmdC0+Z2V0
Q29tcGxldGVTdHJpbmcoKSwKICAgICAgICAgICAgICAgICAgICAgICByaWdodC0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7Ci0gICAgICAgIHJlY292ZXIoKTsKICAgICAgICAgVENvbnN0YW50VW5pb24g
KnVuaW9uQXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bMV07CiAgICAgICAgIHVuaW9uQXJyYXkt
PnNldEJDb25zdChmYWxzZSk7CiAgICAgICAgIHJldHVybiBpbnRlcm1lZGlhdGUuYWRkQ29uc3Rh
bnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0
KSwKQEAgLTM3NzcsNyArMzU5MiwxOCBAQCBUSW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6OmNy
ZWF0ZUFzc2lnCiB7CiAgICAgaWYgKGJpbmFyeU9wQ29tbW9uQ2hlY2sob3AsIGxlZnQsIHJpZ2h0
LCBsb2MpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGludGVybWVkaWF0ZS5hZGRBc3NpZ24ob3As
IGxlZnQsIHJpZ2h0LCBsb2MpOworICAgICAgICBpZiAob3AgPT0gRU9wTXVsQXNzaWduKQorICAg
ICAgICB7CisgICAgICAgICAgICBvcCA9IFRJbnRlcm1CaW5hcnk6OkdldE11bEFzc2lnbk9wQmFz
ZWRPbk9wZXJhbmRzKGxlZnQtPmdldFR5cGUoKSwgcmlnaHQtPmdldFR5cGUoKSk7CisgICAgICAg
ICAgICBpZiAoIWlzTXVsdGlwbGljYXRpb25UeXBlQ29tYmluYXRpb25WYWxpZChvcCwgbGVmdC0+
Z2V0VHlwZSgpLCByaWdodC0+Z2V0VHlwZSgpKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBU
SW50ZXJtQmluYXJ5ICpub2RlID0gbmV3IFRJbnRlcm1CaW5hcnkob3AsIGxlZnQsIHJpZ2h0KTsK
KyAgICAgICAgbm9kZS0+c2V0TGluZShsb2MpOworCisgICAgICAgIHJldHVybiBub2RlOwogICAg
IH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTM3OTEsNyArMzYxNyw2IEBAIFRJbnRlcm1U
eXBlZCAqVFBhcnNlQ29udGV4dDo6YWRkQXNzaWduKFQKICAgICBpZiAobm9kZSA9PSBudWxscHRy
KQogICAgIHsKICAgICAgICAgYXNzaWduRXJyb3IobG9jLCAiYXNzaWduIiwgbGVmdC0+Z2V0Q29t
cGxldGVTdHJpbmcoKSwgcmlnaHQtPmdldENvbXBsZXRlU3RyaW5nKCkpOwotICAgICAgICByZWNv
dmVyKCk7CiAgICAgICAgIHJldHVybiBsZWZ0OwogICAgIH0KICAgICByZXR1cm4gbm9kZTsKQEAg
LTM4MDEsNyArMzYyNiwxOSBAQCBUSW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6OmFkZENvbW1h
KFRJCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAq
cmlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3Vy
Y2VMb2MgJmxvYykKIHsKLSAgICByZXR1cm4gaW50ZXJtZWRpYXRlLmFkZENvbW1hKGxlZnQsIHJp
Z2h0LCBsb2MsIG1TaGFkZXJWZXJzaW9uKTsKKyAgICAvLyBXZWJHTDIgc2VjdGlvbiA1LjI2LCB0
aGUgZm9sbG93aW5nIHJlc3VsdHMgaW4gYW4gZXJyb3I6CisgICAgLy8gIlNlcXVlbmNlIG9wZXJh
dG9yIGFwcGxpZWQgdG8gdm9pZCwgYXJyYXlzLCBvciBzdHJ1Y3RzIGNvbnRhaW5pbmcgYXJyYXlz
IgorICAgIGlmIChtU2hhZGVyU3BlYyA9PSBTSF9XRUJHTDJfU1BFQyAmJiAobGVmdC0+aXNBcnJh
eSgpIHx8IGxlZnQtPmdldEJhc2ljVHlwZSgpID09IEVidFZvaWQgfHwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQtPmdldFR5cGUoKS5pc1N0cnVjdHVyZUNv
bnRhaW5pbmdBcnJheXMoKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmlnaHQtPmlzQXJyYXkoKSB8fCByaWdodC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0Vm9p
ZCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQtPmdl
dFR5cGUoKS5pc1N0cnVjdHVyZUNvbnRhaW5pbmdBcnJheXMoKSkpCisgICAgeworICAgICAgICBl
cnJvcihsb2MsCisgICAgICAgICAgICAgICJzZXF1ZW5jZSBvcGVyYXRvciBpcyBub3QgYWxsb3dl
ZCBmb3Igdm9pZCwgYXJyYXlzLCBvciBzdHJ1Y3RzIGNvbnRhaW5pbmcgYXJyYXlzIiwKKyAgICAg
ICAgICAgICAgIiwiKTsKKyAgICB9CisKKyAgICByZXR1cm4gVEludGVybWVkaWF0ZTo6QWRkQ29t
bWEobGVmdCwgcmlnaHQsIGxvYywgbVNoYWRlclZlcnNpb24pOwogfQogCiBUSW50ZXJtQnJhbmNo
ICpUUGFyc2VDb250ZXh0OjphZGRCcmFuY2goVE9wZXJhdG9yIG9wLCBjb25zdCBUU291cmNlTG9j
ICZsb2MpCkBAIC0zODEyLDIxICszNjQ5LDE4IEBAIFRJbnRlcm1CcmFuY2ggKlRQYXJzZUNvbnRl
eHQ6OmFkZEJyYW5jaCgKICAgICAgICAgICAgIGlmIChtTG9vcE5lc3RpbmdMZXZlbCA8PSAwKQog
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGVycm9yKGxvYywgImNvbnRpbnVlIHN0YXRl
bWVudCBvbmx5IGFsbG93ZWQgaW4gbG9vcHMiLCAiIik7Ci0gICAgICAgICAgICAgICAgcmVjb3Zl
cigpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRU9w
QnJlYWs6CiAgICAgICAgICAgICBpZiAobUxvb3BOZXN0aW5nTGV2ZWwgPD0gMCAmJiBtU3dpdGNo
TmVzdGluZ0xldmVsIDw9IDApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgZXJyb3Io
bG9jLCAiYnJlYWsgc3RhdGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyBhbmQgc3dpdGNoIHN0
YXRlbWVudHMiLCAiIik7Ci0gICAgICAgICAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRU9wUmV0dXJuOgogICAgICAgICAg
ICAgaWYgKG1DdXJyZW50RnVuY3Rpb25UeXBlLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRWb2lkKQog
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGVycm9yKGxvYywgIm5vbi12b2lkIGZ1bmN0
aW9uIG11c3QgcmV0dXJuIGEgdmFsdWUiLCAicmV0dXJuIik7Ci0gICAgICAgICAgICAgICAgcmVj
b3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1
bHQ6CkBAIC0zODQ1LDEyICszNjc5LDEwIEBAIFRJbnRlcm1CcmFuY2ggKlRQYXJzZUNvbnRleHQ6
OmFkZEJyYW5jaCgKICAgICBpZiAobUN1cnJlbnRGdW5jdGlvblR5cGUtPmdldEJhc2ljVHlwZSgp
ID09IEVidFZvaWQpCiAgICAgewogICAgICAgICBlcnJvcihsb2MsICJ2b2lkIGZ1bmN0aW9uIGNh
bm5vdCByZXR1cm4gYSB2YWx1ZSIsICJyZXR1cm4iKTsKLSAgICAgICAgcmVjb3ZlcigpOwogICAg
IH0KICAgICBlbHNlIGlmICgqbUN1cnJlbnRGdW5jdGlvblR5cGUgIT0gcmV0dXJuVmFsdWUtPmdl
dFR5cGUoKSkKICAgICB7CiAgICAgICAgIGVycm9yKGxvYywgImZ1bmN0aW9uIHJldHVybiBpcyBu
b3QgbWF0Y2hpbmcgdHlwZToiLCAicmV0dXJuIik7Ci0gICAgICAgIHJlY292ZXIoKTsKICAgICB9
CiAgICAgcmV0dXJuIGludGVybWVkaWF0ZS5hZGRCcmFuY2gob3AsIHJldHVyblZhbHVlLCBsb2Mp
OwogfQpAQCAtMzg1OCw3ICszNjkwLDcgQEAgVEludGVybUJyYW5jaCAqVFBhcnNlQ29udGV4dDo6
YWRkQnJhbmNoKAogdm9pZCBUUGFyc2VDb250ZXh0OjpjaGVja1RleHR1cmVPZmZzZXRDb25zdChU
SW50ZXJtQWdncmVnYXRlICpmdW5jdGlvbkNhbGwpCiB7CiAgICAgQVNTRVJUKCFmdW5jdGlvbkNh
bGwtPmlzVXNlckRlZmluZWQoKSk7Ci0gICAgY29uc3QgVFN0cmluZyAmbmFtZSAgICAgICAgPSBm
dW5jdGlvbkNhbGwtPmdldE5hbWUoKTsKKyAgICBjb25zdCBUU3RyaW5nICZuYW1lICAgICAgICA9
IGZ1bmN0aW9uQ2FsbC0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5hbWUoKTsKICAgICBU
SW50ZXJtTm9kZSAqb2Zmc2V0ICAgICAgICA9IG51bGxwdHI7CiAgICAgVEludGVybVNlcXVlbmNl
ICphcmd1bWVudHMgPSBmdW5jdGlvbkNhbGwtPmdldFNlcXVlbmNlKCk7CiAgICAgaWYgKG5hbWUu
Y29tcGFyZSgwLCAxNiwgInRleGVsRmV0Y2hPZmZzZXQiKSA9PSAwIHx8CkBAIC0zODg0LDcgKzM3
MTYsNiBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6OmNoZWNrVGV4dHVyZU9mZnNldENvCiAgICAgICAg
ICAgICBUU3RyaW5nIHVubWFuZ2xlZE5hbWUgPSBURnVuY3Rpb246OnVubWFuZ2xlTmFtZShuYW1l
KTsKICAgICAgICAgICAgIGVycm9yKGZ1bmN0aW9uQ2FsbC0+Z2V0TGluZSgpLCAiVGV4dHVyZSBv
ZmZzZXQgbXVzdCBiZSBhIGNvbnN0YW50IGV4cHJlc3Npb24iLAogICAgICAgICAgICAgICAgICAg
dW5tYW5nbGVkTmFtZS5jX3N0cigpKTsKLSAgICAgICAgICAgIHJlY292ZXIoKTsKICAgICAgICAg
fQogICAgICAgICBlbHNlCiAgICAgICAgIHsKQEAgLTM5MDEsNyArMzczMiw2IEBAIHZvaWQgVFBh
cnNlQ29udGV4dDo6Y2hlY2tUZXh0dXJlT2Zmc2V0Q28KICAgICAgICAgICAgICAgICAgICAgc3Rk
OjpzdHJpbmcgdG9rZW4gPSB0b2tlblN0cmVhbS5zdHIoKTsKICAgICAgICAgICAgICAgICAgICAg
ZXJyb3Iob2Zmc2V0LT5nZXRMaW5lKCksICJUZXh0dXJlIG9mZnNldCB2YWx1ZSBvdXQgb2YgdmFs
aWQgcmFuZ2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5jX3N0cigpKTsKLSAg
ICAgICAgICAgICAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KICAgICAgICAgfQpAQCAtMzkyNiwxNyArMzc1NiwxNCBAQCBUSW50ZXJtVHlwZWQgKlRQ
YXJzZUNvbnRleHQ6OmFkZEZ1bmN0aW9uCiAgICAgICAgIGlmIChmbkNhbGwtPmdldE5hbWUoKSAh
PSAibGVuZ3RoIikKICAgICAgICAgewogICAgICAgICAgICAgZXJyb3IobG9jLCAiaW52YWxpZCBt
ZXRob2QiLCBmbkNhbGwtPmdldE5hbWUoKS5jX3N0cigpKTsKLSAgICAgICAgICAgIHJlY292ZXIo
KTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChwYXJhbU5vZGUgIT0gbnVsbHB0cikKICAg
ICAgICAgewogICAgICAgICAgICAgZXJyb3IobG9jLCAibWV0aG9kIHRha2VzIG5vIHBhcmFtZXRl
cnMiLCAibGVuZ3RoIik7Ci0gICAgICAgICAgICByZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAg
ICAgZWxzZSBpZiAodHlwZWRUaGlzID09IG51bGxwdHIgfHwgIXR5cGVkVGhpcy0+aXNBcnJheSgp
KQogICAgICAgICB7CiAgICAgICAgICAgICBlcnJvcihsb2MsICJsZW5ndGggY2FuIG9ubHkgYmUg
Y2FsbGVkIG9uIGFycmF5cyIsICJsZW5ndGgiKTsKLSAgICAgICAgICAgIHJlY292ZXIoKTsKICAg
ICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKQEAgLTM5NTQsNyArMzc4MSw2IEBAIFRJ
bnRlcm1UeXBlZCAqVFBhcnNlQ29udGV4dDo6YWRkRnVuY3Rpb24KICAgICAgICAgICAgICAgICAv
LyBsZW5ndGggbWV0aG9kIGFwcGxpZWQiLgogICAgICAgICAgICAgICAgIGVycm9yKGxvYywgImxl
bmd0aCBjYW4gb25seSBiZSBjYWxsZWQgb24gYXJyYXkgbmFtZXMsIG5vdCBvbiBhcnJheSBleHBy
ZXNzaW9ucyIsCiAgICAgICAgICAgICAgICAgICAgICAgImxlbmd0aCIpOwotICAgICAgICAgICAg
ICAgIHJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICB1bmlvbkFy
cmF5LT5zZXRJQ29uc3QoYXJyYXlTaXplKTsKQEAgLTM5NjMsMjYgKzM3ODksOCBAQCBUSW50ZXJt
VHlwZWQgKlRQYXJzZUNvbnRleHQ6OmFkZEZ1bmN0aW9uCiAgICAgfQogICAgIGVsc2UgaWYgKG9w
ICE9IEVPcE51bGwpCiAgICAgewotICAgICAgICAvLwogICAgICAgICAvLyBUaGVuIHRoaXMgc2hv
dWxkIGJlIGEgY29uc3RydWN0b3IuCi0gICAgICAgIC8vIERvbid0IGdvIHRocm91Z2ggdGhlIHN5
bWJvbCB0YWJsZSBmb3IgY29uc3RydWN0b3JzLgotICAgICAgICAvLyBUaGVpciBwYXJhbWV0ZXJz
IHdpbGwgYmUgdmVyaWZpZWQgYWxnb3JpdGhtaWNhbGx5LgotICAgICAgICAvLwotICAgICAgICBU
VHlwZSB0eXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7ICAvLyB1c2UgdGhpcyB0byBnZXQgdGhl
IHR5cGUgYmFjawotICAgICAgICBpZiAoIWNvbnN0cnVjdG9yRXJyb3JDaGVjayhsb2MsIHBhcmFt
Tm9kZSwgKmZuQ2FsbCwgb3AsICZ0eXBlKSkKLSAgICAgICAgewotICAgICAgICAgICAgLy8KLSAg
ICAgICAgICAgIC8vIEl0J3MgYSBjb25zdHJ1Y3Rvciwgb2YgdHlwZSAndHlwZScuCi0gICAgICAg
ICAgICAvLwotICAgICAgICAgICAgY2FsbE5vZGUgPSBhZGRDb25zdHJ1Y3RvcihwYXJhbU5vZGUs
ICZ0eXBlLCBvcCwgZm5DYWxsLCBsb2MpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGNhbGxO
b2RlID09IG51bGxwdHIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJlY292ZXIoKTsKLSAgICAg
ICAgICAgIGNhbGxOb2RlID0gaW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKG51bGxw
dHIsIG9wLCBsb2MpOwotICAgICAgICB9Ci0gICAgICAgIGNhbGxOb2RlLT5zZXRUeXBlKHR5cGUp
OworICAgICAgICBjYWxsTm9kZSA9IGFkZENvbnN0cnVjdG9yKHBhcmFtTm9kZSwgb3AsIGZuQ2Fs
bCwgbG9jKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKQEAgLTM5OTcsMTAgKzM4MDUsOSBAQCBU
SW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6OmFkZEZ1bmN0aW9uCiAgICAgICAgICAgICAvLwog
ICAgICAgICAgICAgLy8gQSBkZWNsYXJlZCBmdW5jdGlvbi4KICAgICAgICAgICAgIC8vCi0gICAg
ICAgICAgICBpZiAoYnVpbHRJbiAmJiAhZm5DYW5kaWRhdGUtPmdldEV4dGVuc2lvbigpLmVtcHR5
KCkgJiYKLSAgICAgICAgICAgICAgICBleHRlbnNpb25FcnJvckNoZWNrKGxvYywgZm5DYW5kaWRh
dGUtPmdldEV4dGVuc2lvbigpKSkKKyAgICAgICAgICAgIGlmIChidWlsdEluICYmICFmbkNhbmRp
ZGF0ZS0+Z2V0RXh0ZW5zaW9uKCkuZW1wdHkoKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICByZWNvdmVyKCk7CisgICAgICAgICAgICAgICAgY2hlY2tDYW5Vc2VFeHRlbnNpb24obG9j
LCBmbkNhbmRpZGF0ZS0+Z2V0RXh0ZW5zaW9uKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgb3AgPSBmbkNhbmRpZGF0ZS0+Z2V0QnVpbHRJbk9wKCk7CiAgICAgICAgICAgICBpZiAoYnVp
bHRJbiAmJiBvcCAhPSBFT3BOdWxsKQpAQCAtNDA0Niw3ICszODUzLDggQEAgVEludGVybVR5cGVk
ICpUUGFyc2VDb250ZXh0OjphZGRGdW5jdGlvbgogCiAgICAgICAgICAgICAgICAgICAgIC8vIFNl
ZSBpZiB3ZSBjYW4gY29uc3RhbnQgZm9sZCBhIGJ1aWx0LWluLiBOb3RlIHRoYXQgdGhpcyBtYXkg
YmUgcG9zc2libGUgZXZlbgogICAgICAgICAgICAgICAgICAgICAvLyBpZiBpdCBpcyBub3QgY29u
c3QtcXVhbGlmaWVkLgotICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmZvbGRlZE5v
ZGUgPSBpbnRlcm1lZGlhdGUuZm9sZEFnZ3JlZ2F0ZUJ1aWx0SW4oYWdncmVnYXRlKTsKKyAgICAg
ICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpmb2xkZWROb2RlID0KKyAgICAgICAgICAgICAg
ICAgICAgICAgIGludGVybWVkaWF0ZS5mb2xkQWdncmVnYXRlQnVpbHRJbihhZ2dyZWdhdGUsICZt
RGlhZ25vc3RpY3MpOwogICAgICAgICAgICAgICAgICAgICBpZiAoZm9sZGVkTm9kZSkKICAgICAg
ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbE5vZGUgPSBmb2xk
ZWROb2RlOwpAQCAtNDA3MSwxMCArMzg3OSw5IEBAIFRJbnRlcm1UeXBlZCAqVFBhcnNlQ29udGV4
dDo6YWRkRnVuY3Rpb24KICAgICAgICAgICAgICAgICAvLyBpZiBidWlsdEluID09IHRydWUsIGl0
J3MgZGVmaW5pdGVseSBhIGJ1aWx0SW4gZnVuY3Rpb24gd2l0aCBFT3BOdWxsCiAgICAgICAgICAg
ICAgICAgaWYgKCFidWlsdEluKQogICAgICAgICAgICAgICAgICAgICBhZ2dyZWdhdGUtPnNldFVz
ZXJEZWZpbmVkKCk7Ci0gICAgICAgICAgICAgICAgYWdncmVnYXRlLT5zZXROYW1lKGZuQ2FuZGlk
YXRlLT5nZXRNYW5nbGVkTmFtZSgpKTsKLSAgICAgICAgICAgICAgICBhZ2dyZWdhdGUtPnNldEZ1
bmN0aW9uSWQoZm5DYW5kaWRhdGUtPmdldFVuaXF1ZUlkKCkpOworICAgICAgICAgICAgICAgIGFn
Z3JlZ2F0ZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPnNldEZyb21GdW5jdGlvbigqZm5DYW5k
aWRhdGUpOwogCi0gICAgICAgICAgICAgICAgLy8gVGhpcyBuZWVkcyB0byBoYXBwZW4gYWZ0ZXIg
dGhlIG5hbWUgaXMgc2V0CisgICAgICAgICAgICAgICAgLy8gVGhpcyBuZWVkcyB0byBoYXBwZW4g
YWZ0ZXIgdGhlIGZ1bmN0aW9uIGluZm8gaW5jbHVkaW5nIG5hbWUgaXMgc2V0CiAgICAgICAgICAg
ICAgICAgaWYgKGJ1aWx0SW4pCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg
ICBhZ2dyZWdhdGUtPnNldEJ1aWx0SW5GdW5jdGlvblByZWNpc2lvbigpOwpAQCAtNDA5NSwzNiAr
MzkwMiw0MSBAQCBUSW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6OmFkZEZ1bmN0aW9uCiAgICAg
ICAgICAgICB1bmlvbkFycmF5LT5zZXRGQ29uc3QoMC4wZik7CiAgICAgICAgICAgICBjYWxsTm9k
ZSA9IGludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgbG9jKTsKLSAgICAgICAgICAgIHJlY292ZXIoKTsK
ICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gY2FsbE5vZGU7CiB9CiAKIFRJbnRlcm1UeXBl
ZCAqVFBhcnNlQ29udGV4dDo6YWRkVGVybmFyeVNlbGVjdGlvbihUSW50ZXJtVHlwZWQgKmNvbmQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVy
bVR5cGVkICp0cnVlQmxvY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVEludGVybVR5cGVkICpmYWxzZUJsb2NrLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqdHJ1ZUV4cHJlc3Np
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElu
dGVybVR5cGVkICpmYWxzZUV4cHJlc3Npb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jKQogewotICAgIGlmIChi
b29sRXJyb3JDaGVjayhsb2MsIGNvbmQpKQotICAgICAgICByZWNvdmVyKCk7CisgICAgY2hlY2tJ
c1NjYWxhckJvb2wobG9jLCBjb25kKTsKIAotICAgIGlmICh0cnVlQmxvY2stPmdldFR5cGUoKSAh
PSBmYWxzZUJsb2NrLT5nZXRUeXBlKCkpCisgICAgaWYgKHRydWVFeHByZXNzaW9uLT5nZXRUeXBl
KCkgIT0gZmFsc2VFeHByZXNzaW9uLT5nZXRUeXBlKCkpCiAgICAgewotICAgICAgICBiaW5hcnlP
cEVycm9yKGxvYywgIjoiLCB0cnVlQmxvY2stPmdldENvbXBsZXRlU3RyaW5nKCksIGZhbHNlQmxv
Y2stPmdldENvbXBsZXRlU3RyaW5nKCkpOwotICAgICAgICByZWNvdmVyKCk7Ci0gICAgICAgIHJl
dHVybiBmYWxzZUJsb2NrOworICAgICAgICBiaW5hcnlPcEVycm9yKGxvYywgIjoiLCB0cnVlRXhw
cmVzc2lvbi0+Z2V0Q29tcGxldGVTdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgICAgICBmYWxz
ZUV4cHJlc3Npb24tPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICByZXR1cm4gZmFsc2VF
eHByZXNzaW9uOwogICAgIH0KICAgICAvLyBFU1NMMSBzZWN0aW9ucyA1LjIgYW5kIDUuNzoKICAg
ICAvLyBFU1NMMyBzZWN0aW9uIDUuNzoKICAgICAvLyBUZXJuYXJ5IG9wZXJhdG9yIGlzIG5vdCBh
bW9uZyB0aGUgb3BlcmF0b3JzIGFsbG93ZWQgZm9yIHN0cnVjdHVyZXMvYXJyYXlzLgotICAgIGlm
ICh0cnVlQmxvY2stPmlzQXJyYXkoKSB8fCB0cnVlQmxvY2stPmdldEJhc2ljVHlwZSgpID09IEVi
dFN0cnVjdCkKKyAgICBpZiAodHJ1ZUV4cHJlc3Npb24tPmlzQXJyYXkoKSB8fCB0cnVlRXhwcmVz
c2lvbi0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KQogICAgIHsKICAgICAgICAgZXJyb3Io
bG9jLCAidGVybmFyeSBvcGVyYXRvciBpcyBub3QgYWxsb3dlZCBmb3Igc3RydWN0dXJlcyBvciBh
cnJheXMiLCAiOiIpOwotICAgICAgICByZWNvdmVyKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZUJs
b2NrOworICAgICAgICByZXR1cm4gZmFsc2VFeHByZXNzaW9uOworICAgIH0KKyAgICAvLyBXZWJH
TDIgc2VjdGlvbiA1LjI2LCB0aGUgZm9sbG93aW5nIHJlc3VsdHMgaW4gYW4gZXJyb3I6CisgICAg
Ly8gIlRlcm5hcnkgb3BlcmF0b3IgYXBwbGllZCB0byB2b2lkLCBhcnJheXMsIG9yIHN0cnVjdHMg
Y29udGFpbmluZyBhcnJheXMiCisgICAgaWYgKG1TaGFkZXJTcGVjID09IFNIX1dFQkdMMl9TUEVD
ICYmIHRydWVFeHByZXNzaW9uLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRWb2lkKQorICAgIHsKKyAg
ICAgICAgZXJyb3IobG9jLCAidGVybmFyeSBvcGVyYXRvciBpcyBub3QgYWxsb3dlZCBmb3Igdm9p
ZCIsICI6Iik7CisgICAgICAgIHJldHVybiBmYWxzZUV4cHJlc3Npb247CiAgICAgfQotICAgIHJl
dHVybiBpbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9uKGNvbmQsIHRydWVCbG9jaywgZmFsc2VCbG9j
aywgbG9jKTsKKworICAgIHJldHVybiBUSW50ZXJtZWRpYXRlOjpBZGRUZXJuYXJ5U2VsZWN0aW9u
KGNvbmQsIHRydWVFeHByZXNzaW9uLCBmYWxzZUV4cHJlc3Npb24sIGxvYyk7CiB9CiAKIC8vCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9QYXJz
ZUNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9QYXJzZUNvbnRleHQuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUGFyc2VDb250ZXh0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlICJjb21waWxlci90
cmFuc2xhdG9yL0RpcmVjdGl2ZUhhbmRsZXIuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xh
dG9yL0ludGVybWVkaWF0ZS5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvU3ltYm9s
VGFibGUuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1F1YWxpZmllclR5cGVzLmgi
CiAjaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL1ByZXByb2Nlc3Nvci5oIgogCiBzdHJ1
Y3QgVE1hdHJpeEZpZWxkcwpAQCAtMzAsMTggKzMxLDE4IEBAIGNsYXNzIFRQYXJzZUNvbnRleHQg
OiBhbmdsZTo6Tm9uQ29weWFibGUKICAgcHVibGljOgogICAgIFRQYXJzZUNvbnRleHQoVFN5bWJv
bFRhYmxlICZzeW10LAogICAgICAgICAgICAgICAgICAgVEV4dGVuc2lvbkJlaGF2aW9yICZleHQs
Ci0gICAgICAgICAgICAgICAgICBUSW50ZXJtZWRpYXRlICZpbnRlcm0sCiAgICAgICAgICAgICAg
ICAgICBzaDo6R0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICBTaFNoYWRlclNwZWMgc3Bl
YywKLSAgICAgICAgICAgICAgICAgIGludCBvcHRpb25zLAorICAgICAgICAgICAgICAgICAgU2hD
b21waWxlT3B0aW9ucyBvcHRpb25zLAogICAgICAgICAgICAgICAgICAgYm9vbCBjaGVja3NQcmVj
RXJyb3JzLAogICAgICAgICAgICAgICAgICAgVEluZm9TaW5rICZpcywKICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyAmcmVzb3VyY2VzKQotICAgICAgICA6IGludGVy
bWVkaWF0ZShpbnRlcm0pLAorICAgICAgICA6IGludGVybWVkaWF0ZSgpLAogICAgICAgICAgIHN5
bWJvbFRhYmxlKHN5bXQpLAogICAgICAgICAgIG1EZWZlcnJlZFNpbmdsZURlY2xhcmF0aW9uRXJy
b3JDaGVjayhmYWxzZSksCiAgICAgICAgICAgbVNoYWRlclR5cGUodHlwZSksCiAgICAgICAgICAg
bVNoYWRlclNwZWMoc3BlYyksCisgICAgICAgICAgbUNvbXBpbGVPcHRpb25zKG9wdGlvbnMpLAog
ICAgICAgICAgIG1TaGFkZXJWZXJzaW9uKDEwMCksCiAgICAgICAgICAgbVRyZWVSb290KG51bGxw
dHIpLAogICAgICAgICAgIG1Mb29wTmVzdGluZ0xldmVsKDApLApAQCAtNTIsNyArNTMsNyBAQCBj
bGFzcyBUUGFyc2VDb250ZXh0IDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgICAgICAgbUNoZWNr
c1ByZWNpc2lvbkVycm9ycyhjaGVja3NQcmVjRXJyb3JzKSwKICAgICAgICAgICBtRnJhZ21lbnRQ
cmVjaXNpb25IaWdoT25FU1NMMShmYWxzZSksCiAgICAgICAgICAgbURlZmF1bHRNYXRyaXhQYWNr
aW5nKEVtcENvbHVtbk1ham9yKSwKLSAgICAgICAgICBtRGVmYXVsdEJsb2NrU3RvcmFnZShFYnNT
aGFyZWQpLAorICAgICAgICAgIG1EZWZhdWx0QmxvY2tTdG9yYWdlKElzV2ViR0xCYXNlZFNwZWMo
c3BlYykgPyBFYnNTdGQxNDAgOiBFYnNTaGFyZWQpLAogICAgICAgICAgIG1EaWFnbm9zdGljcyhp
cyksCiAgICAgICAgICAgbURpcmVjdGl2ZUhhbmRsZXIoZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1EaWFnbm9zdGljcywKQEAgLTY1LDggKzY2LDExIEBAIGNsYXNzIFRQYXJzZUNv
bnRleHQgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAgICAgICBtVXNlc0ZyYWdDb2xvcihmYWxz
ZSksCiAgICAgICAgICAgbVVzZXNTZWNvbmRhcnlPdXRwdXRzKGZhbHNlKSwKICAgICAgICAgICBt
TWluUHJvZ3JhbVRleGVsT2Zmc2V0KHJlc291cmNlcy5NaW5Qcm9ncmFtVGV4ZWxPZmZzZXQpLAot
ICAgICAgICAgIG1NYXhQcm9ncmFtVGV4ZWxPZmZzZXQocmVzb3VyY2VzLk1heFByb2dyYW1UZXhl
bE9mZnNldCkKKyAgICAgICAgICBtTWF4UHJvZ3JhbVRleGVsT2Zmc2V0KHJlc291cmNlcy5NYXhQ
cm9ncmFtVGV4ZWxPZmZzZXQpLAorICAgICAgICAgIG1Db21wdXRlU2hhZGVyTG9jYWxTaXplRGVj
bGFyZWQoZmFsc2UpLAorICAgICAgICAgIG1EZWNsYXJpbmdGdW5jdGlvbihmYWxzZSkKICAgICB7
CisgICAgICAgIG1Db21wdXRlU2hhZGVyTG9jYWxTaXplLmZpbGwoLTEpOwogICAgIH0KIAogICAg
IGNvbnN0IHBwOjpQcmVwcm9jZXNzb3IgJmdldFByZXByb2Nlc3NvcigpIGNvbnN0IHsgcmV0dXJu
IG1QcmVwcm9jZXNzb3I7IH0KQEAgLTkwLDkgKzk0LDggQEAgY2xhc3MgVFBhcnNlQ29udGV4dCA6
IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg
KnRva2VuLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmV4dHJhSW5mbyA9
ICIiKTsKIAotICAgIHZvaWQgcmVjb3ZlcigpOwotICAgIFRJbnRlcm1Ob2RlICpnZXRUcmVlUm9v
dCgpIGNvbnN0IHsgcmV0dXJuIG1UcmVlUm9vdDsgfQotICAgIHZvaWQgc2V0VHJlZVJvb3QoVElu
dGVybU5vZGUgKnRyZWVSb290KSB7IG1UcmVlUm9vdCA9IHRyZWVSb290OyB9CisgICAgVEludGVy
bUJsb2NrICpnZXRUcmVlUm9vdCgpIGNvbnN0IHsgcmV0dXJuIG1UcmVlUm9vdDsgfQorICAgIHZv
aWQgc2V0VHJlZVJvb3QoVEludGVybUJsb2NrICp0cmVlUm9vdCkgeyBtVHJlZVJvb3QgPSB0cmVl
Um9vdDsgfQogCiAgICAgYm9vbCBnZXRGcmFnbWVudFByZWNpc2lvbkhpZ2goKSBjb25zdAogICAg
IHsKQEAgLTExNCw2ICsxMTcsMTUgQEAgY2xhc3MgVFBhcnNlQ29udGV4dCA6IGFuZ2xlOjpOb25D
b3B5YWJsZQogICAgIHZvaWQgaW5jclN3aXRjaE5lc3RpbmdMZXZlbCgpIHsgKyttU3dpdGNoTmVz
dGluZ0xldmVsOyB9CiAgICAgdm9pZCBkZWNyU3dpdGNoTmVzdGluZ0xldmVsKCkgeyAtLW1Td2l0
Y2hOZXN0aW5nTGV2ZWw7IH0KIAorICAgIGJvb2wgaXNDb21wdXRlU2hhZGVyTG9jYWxTaXplRGVj
bGFyZWQoKSBjb25zdCB7IHJldHVybiBtQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZURlY2xhcmVkOyB9
CisgICAgc2g6OldvcmtHcm91cFNpemUgZ2V0Q29tcHV0ZVNoYWRlckxvY2FsU2l6ZSgpIGNvbnN0
OworCisgICAgdm9pZCBlbnRlckZ1bmN0aW9uRGVjbGFyYXRpb24oKSB7IG1EZWNsYXJpbmdGdW5j
dGlvbiA9IHRydWU7IH0KKworICAgIHZvaWQgZXhpdEZ1bmN0aW9uRGVjbGFyYXRpb24oKSB7IG1E
ZWNsYXJpbmdGdW5jdGlvbiA9IGZhbHNlOyB9CisKKyAgICBib29sIGRlY2xhcmluZ0Z1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbURlY2xhcmluZ0Z1bmN0aW9uOyB9CisKICAgICAvLyBUaGlzIG1l
dGhvZCBpcyBndWFyYW50ZWVkIHRvIHN1Y2NlZWQsIGV2ZW4gaWYgbm8gdmFyaWFibGUgd2l0aCAn
bmFtZScgZXhpc3RzLgogICAgIGNvbnN0IFRWYXJpYWJsZSAqZ2V0TmFtZWRWYXJpYWJsZShjb25z
dCBUU291cmNlTG9jICZsb2NhdGlvbiwgY29uc3QgVFN0cmluZyAqbmFtZSwgY29uc3QgVFN5bWJv
bCAqc3ltYm9sKTsKICAgICBUSW50ZXJtVHlwZWQgKnBhcnNlVmFyaWFibGVJZGVudGlmaWVyKGNv
bnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uLApAQCAtMTIyLDM4ICsxMzQsNTkgQEAgY2xhc3MgVFBh
cnNlQ29udGV4dCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogCiAgICAgYm9vbCBwYXJzZVZlY3RvckZp
ZWxkcyhjb25zdCBUU3RyaW5nJiwgaW50IHZlY1NpemUsIFRWZWN0b3JGaWVsZHMmLCBjb25zdCBU
U291cmNlTG9jICZsaW5lKTsKIAotICAgIGJvb2wgcmVzZXJ2ZWRFcnJvckNoZWNrKGNvbnN0IFRT
b3VyY2VMb2MgJmxpbmUsIGNvbnN0IFRTdHJpbmcgJmlkZW50aWZpZXIpOwogICAgIHZvaWQgYXNz
aWduRXJyb3IoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3QgY2hhciAqb3AsIFRTdHJpbmcg
bGVmdCwgVFN0cmluZyByaWdodCk7CiAgICAgdm9pZCB1bmFyeU9wRXJyb3IoY29uc3QgVFNvdXJj
ZUxvYyAmbGluZSwgY29uc3QgY2hhciAqb3AsIFRTdHJpbmcgb3BlcmFuZCk7CiAgICAgdm9pZCBi
aW5hcnlPcEVycm9yKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0IGNoYXIgKm9wLCBUU3Ry
aW5nIGxlZnQsIFRTdHJpbmcgcmlnaHQpOwotICAgIGJvb2wgcHJlY2lzaW9uRXJyb3JDaGVjayhj
b25zdCBUU291cmNlTG9jICZsaW5lLCBUUHJlY2lzaW9uIHByZWNpc2lvbiwgVEJhc2ljVHlwZSB0
eXBlKTsKLSAgICBib29sIGxWYWx1ZUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyAmbGluZSwg
Y29uc3QgY2hhciAqb3AsIFRJbnRlcm1UeXBlZCopOwotICAgIGJvb2wgY29uc3RFcnJvckNoZWNr
KFRJbnRlcm1UeXBlZCAqbm9kZSk7Ci0gICAgYm9vbCBpbnRlZ2VyRXJyb3JDaGVjayhUSW50ZXJt
VHlwZWQgKm5vZGUsIGNvbnN0IGNoYXIgKnRva2VuKTsKLSAgICBib29sIGdsb2JhbEVycm9yQ2hl
Y2soY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgYm9vbCBnbG9iYWwsIGNvbnN0IGNoYXIgKnRva2Vu
KTsKLSAgICBib29sIGNvbnN0cnVjdG9yRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jICZsaW5l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICphcmd1bWVudHNO
b2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRGdW5jdGlvbiAmZnVuY3Rpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVE9wZXJhdG9yIG9wLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRUeXBlICp0eXBlKTsKLSAgICBib29sIGFycmF5U2l6ZUVy
cm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgVEludGVybVR5cGVkICpleHByLCBpbnQg
JnNpemUpOwotICAgIGJvb2wgYXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VM
b2MgJmxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlICZ0eXBlKTsKLSAgICBib29sIGFycmF5VHlwZUVy
cm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3QgVFB1YmxpY1R5cGUgJnR5cGUp
OwotICAgIGJvb2wgdm9pZEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3Qg
VFN0cmluZyAmaWRlbnRpZmllciwgY29uc3QgVEJhc2ljVHlwZSAmdHlwZSk7Ci0gICAgYm9vbCBi
b29sRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiwgY29uc3QgVEludGVybVR5cGVkKik7Ci0g
ICAgYm9vbCBib29sRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiwgY29uc3QgVFB1YmxpY1R5
cGUmKTsKLSAgICBib29sIHNhbXBsZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUs
IGNvbnN0IFRQdWJsaWNUeXBlICZwVHlwZSwgY29uc3QgY2hhciAqcmVhc29uKTsKLSAgICBib29s
IGxvY2F0aW9uRGVjbGFyYXRvckxpc3RDaGVjayhjb25zdCBUU291cmNlTG9jICZsaW5lLCBjb25z
dCBUUHVibGljVHlwZSAmcFR5cGUpOwotICAgIGJvb2wgcGFyYW1ldGVyU2FtcGxlckVycm9yQ2hl
Y2soY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgVFF1YWxpZmllciBxdWFsaWZpZXIsIGNvbnN0IFRU
eXBlICZ0eXBlKTsKLSAgICBib29sIHBhcmFtRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jICZs
aW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBwYXJhbVF1YWxpZmllciwgVFR5
cGUgKnR5cGUpOwotICAgIGJvb2wgZXh0ZW5zaW9uRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9j
ICZsaW5lLCBjb25zdCBUU3RyaW5nJik7Ci0gICAgYm9vbCBzaW5nbGVEZWNsYXJhdGlvbkVycm9y
Q2hlY2soY29uc3QgVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUsIGNvbnN0IFRTb3VyY2VMb2MgJmlk
ZW50aWZpZXJMb2NhdGlvbik7Ci0gICAgYm9vbCBsYXlvdXRMb2NhdGlvbkVycm9yQ2hlY2soY29u
c3QgVFNvdXJjZUxvYyAmbG9jYXRpb24sIGNvbnN0IFRMYXlvdXRRdWFsaWZpZXIgJmxheW91dFF1
YWxpZmllcik7Ci0gICAgYm9vbCBmdW5jdGlvbkNhbGxMVmFsdWVFcnJvckNoZWNrKGNvbnN0IFRG
dW5jdGlvbiAqZm5DYW5kaWRhdGUsIFRJbnRlcm1BZ2dyZWdhdGUgKik7Ci0gICAgdm9pZCBlczNJ
bnZhcmlhbnRFcnJvckNoZWNrKGNvbnN0IFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBjb25zdCBUU291
cmNlTG9jICZpbnZhcmlhbnRMb2NhdGlvbik7Ci0gICAgdm9pZCBlczNJbnB1dE91dHB1dFR5cGVD
aGVjayhjb25zdCBUUXVhbGlmaWVyIHF1YWxpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFRQdWJsaWNUeXBlICZ0eXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmcXVhbGlmaWVyTG9jYXRpb24pOworCisgICAg
Ly8gQ2hlY2sgZnVuY3Rpb25zIC0gdGhlIG9uZXMgdGhhdCByZXR1cm4gYm9vbCByZXR1cm4gZmFs
c2UgaWYgYW4gZXJyb3Igd2FzIGdlbmVyYXRlZC4KKworICAgIGJvb2wgY2hlY2tJc05vdFJlc2Vy
dmVkKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0IFRTdHJpbmcgJmlkZW50aWZpZXIpOwor
ICAgIHZvaWQgY2hlY2tQcmVjaXNpb25TcGVjaWZpZWQoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwg
VFByZWNpc2lvbiBwcmVjaXNpb24sIFRCYXNpY1R5cGUgdHlwZSk7CisgICAgYm9vbCBjaGVja0Nh
bkJlTFZhbHVlKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0IGNoYXIgKm9wLCBUSW50ZXJt
VHlwZWQgKm5vZGUpOworICAgIHZvaWQgY2hlY2tJc0NvbnN0KFRJbnRlcm1UeXBlZCAqbm9kZSk7
CisgICAgdm9pZCBjaGVja0lzU2NhbGFySW50ZWdlcihUSW50ZXJtVHlwZWQgKm5vZGUsIGNvbnN0
IGNoYXIgKnRva2VuKTsKKyAgICBib29sIGNoZWNrSXNBdEdsb2JhbExldmVsKGNvbnN0IFRTb3Vy
Y2VMb2MgJmxpbmUsIGNvbnN0IGNoYXIgKnRva2VuKTsKKyAgICBib29sIGNoZWNrQ29uc3RydWN0
b3JBcmd1bWVudHMoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVEludGVybU5vZGUgKmFyZ3VtZW50c05vZGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRGdW5jdGlvbiAmZnVuY3Rpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRPcGVyYXRvciBvcCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgJnR5cGUpOworCisgICAgLy8gUmV0dXJu
cyBhIHNhbml0aXplZCBhcnJheSBzaXplIHRvIHVzZSAodGhlIHNpemUgaXMgYXQgbGVhc3QgMSku
CisgICAgdW5zaWduZWQgaW50IGNoZWNrSXNWYWxpZEFycmF5U2l6ZShjb25zdCBUU291cmNlTG9j
ICZsaW5lLCBUSW50ZXJtVHlwZWQgKmV4cHIpOworICAgIGJvb2wgY2hlY2tJc1ZhbGlkUXVhbGlm
aWVyRm9yQXJyYXkoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3QgVFB1YmxpY1R5cGUgJmVs
ZW1lbnRRdWFsaWZpZXIpOworICAgIGJvb2wgY2hlY2tJc1ZhbGlkVHlwZUZvckFycmF5KGNvbnN0
IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlICZlbGVtZW50VHlwZSk7CisgICAg
Ym9vbCBjaGVja0lzTm9uVm9pZChjb25zdCBUU291cmNlTG9jICZsaW5lLCBjb25zdCBUU3RyaW5n
ICZpZGVudGlmaWVyLCBjb25zdCBUQmFzaWNUeXBlICZ0eXBlKTsKKyAgICB2b2lkIGNoZWNrSXNT
Y2FsYXJCb29sKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0IFRJbnRlcm1UeXBlZCAqdHlw
ZSk7CisgICAgdm9pZCBjaGVja0lzU2NhbGFyQm9vbChjb25zdCBUU291cmNlTG9jICZsaW5lLCBj
b25zdCBUUHVibGljVHlwZSAmcFR5cGUpOworICAgIGJvb2wgY2hlY2tJc05vdFNhbXBsZXIoY29u
c3QgVFNvdXJjZUxvYyAmbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRU
eXBlU3BlY2lmaWVyTm9uQXJyYXkgJnBUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciAqcmVhc29uKTsKKyAgICB2b2lkIGNoZWNrRGVjbGFyYXRvckxvY2F0aW9uSXNO
b3RTcGVjaWZpZWQoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3QgVFB1YmxpY1R5cGUgJnBU
eXBlKTsKKyAgICB2b2lkIGNoZWNrTG9jYXRpb25Jc05vdFNwZWNpZmllZChjb25zdCBUU291cmNl
TG9jICZsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUTGF5b3V0UXVhbGlmaWVyICZsYXlvdXRRdWFsaWZpZXIpOworICAgIHZvaWQgY2hlY2tPdXRQ
YXJhbWV0ZXJJc05vdFNhbXBsZXIoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgJnR5cGUpOworICAg
IHZvaWQgY2hlY2tJc1BhcmFtZXRlclF1YWxpZmllclZhbGlkKGNvbnN0IFRTb3VyY2VMb2MgJmxp
bmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGVR
dWFsaWZpZXJCdWlsZGVyICZ0eXBlUXVhbGlmaWVyQnVpbGRlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUVHlwZSAqdHlwZSk7CisgICAgYm9vbCBjaGVja0NhblVz
ZUV4dGVuc2lvbihjb25zdCBUU291cmNlTG9jICZsaW5lLCBjb25zdCBUU3RyaW5nICZleHRlbnNp
b24pOworICAgIHZvaWQgc2luZ2xlRGVjbGFyYXRpb25FcnJvckNoZWNrKGNvbnN0IFRQdWJsaWNU
eXBlICZwdWJsaWNUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRTb3VyY2VMb2MgJmlkZW50aWZpZXJMb2NhdGlvbik7CisgICAgdm9pZCBjaGVja0xheW91
dFF1YWxpZmllclN1cHBvcnRlZChjb25zdCBUU291cmNlTG9jICZsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJmxheW91dFF1YWxp
Zmllck5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmVy
c2lvblJlcXVpcmVkKTsKKyAgICBib29sIGNoZWNrV29ya0dyb3VwU2l6ZUlzTm90U3BlY2lmaWVk
KGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVExheW91dFF1YWxpZmllciAmbGF5b3V0UXVhbGlmaWVyKTsK
KworICAgIHZvaWQgZnVuY3Rpb25DYWxsTFZhbHVlRXJyb3JDaGVjayhjb25zdCBURnVuY3Rpb24g
KmZuQ2FuZGlkYXRlLCBUSW50ZXJtQWdncmVnYXRlICpmbkNhbGwpOworICAgIHZvaWQgY2hlY2tJ
bnZhcmlhbnRWYXJpYWJsZVF1YWxpZmllcihib29sIGludmFyaWFudCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFF1YWxpZmllciBxdWFsaWZpZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2Mg
JmludmFyaWFudExvY2F0aW9uKTsKKyAgICB2b2lkIGNoZWNrSW5wdXRPdXRwdXRUeXBlSXNWYWxp
ZEVTMyhjb25zdCBUUXVhbGlmaWVyIHF1YWxpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUUHVibGljVHlwZSAmdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZxdWFsaWZpZXJMb2Nh
dGlvbik7CiAKICAgICBjb25zdCBUUHJhZ21hICZwcmFnbWEoKSBjb25zdCB7IHJldHVybiBtRGly
ZWN0aXZlSGFuZGxlci5wcmFnbWEoKTsgfQogICAgIGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciAm
ZXh0ZW5zaW9uQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBtRGlyZWN0aXZlSGFuZGxlci5leHRl
bnNpb25CZWhhdmlvcigpOyB9CkBAIC0xNzEsOSArMjA0LDcgQEAgY2xhc3MgVFBhcnNlQ29udGV4
dCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRl
cm1UeXBlZCAqaW5pdGlhbGl6ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVy
bU5vZGUgKippbnRlcm1Ob2RlKTsKIAotICAgIFRQdWJsaWNUeXBlIGFkZEZ1bGx5U3BlY2lmaWVk
VHlwZShUUXVhbGlmaWVyIHF1YWxpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBpbnZhcmlhbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRMYXlvdXRRdWFsaWZpZXIgbGF5b3V0UXVhbGlmaWVyLAorICAgIFRQdWJsaWNUeXBl
IGFkZEZ1bGx5U3BlY2lmaWVkVHlwZShjb25zdCBUVHlwZVF1YWxpZmllckJ1aWxkZXIgJnR5cGVR
dWFsaWZpZXJCdWlsZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUUHVibGljVHlwZSAmdHlwZVNwZWNpZmllcik7CiAKICAgICBUSW50ZXJtQWdncmVnYXRl
ICpwYXJzZVNpbmdsZURlY2xhcmF0aW9uKFRQdWJsaWNUeXBlICZwdWJsaWNUeXBlLApAQCAtMjAw
LDcgKzIzMSw3IEBAIGNsYXNzIFRQYXJzZUNvbnRleHQgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRTb3VyY2VMb2MgJmluaXRMb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5pdGlhbGl6ZXIpOwogCi0g
ICAgVEludGVybUFnZ3JlZ2F0ZSAqcGFyc2VJbnZhcmlhbnREZWNsYXJhdGlvbihjb25zdCBUU291
cmNlTG9jICZpbnZhcmlhbnRMb2MsCisgICAgVEludGVybUFnZ3JlZ2F0ZSAqcGFyc2VJbnZhcmlh
bnREZWNsYXJhdGlvbihjb25zdCBUVHlwZVF1YWxpZmllckJ1aWxkZXIgJnR5cGVRdWFsaWZpZXJC
dWlsZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVFNvdXJjZUxvYyAmaWRlbnRpZmllckxvYywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgKmlkZW50aWZpZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3ltYm9s
ICpzeW1ib2wpOwpAQCAtMjMyLDM4ICsyNjMsMjcgQEAgY2xhc3MgVFBhcnNlQ29udGV4dCA6IGFu
Z2xlOjpOb25Db3B5YWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUU291cmNlTG9jICZpbml0TG9jYXRpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5pdGlhbGl6ZXIp
OwogCi0gICAgdm9pZCBwYXJzZUdsb2JhbExheW91dFF1YWxpZmllcihjb25zdCBUUHVibGljVHlw
ZSAmdHlwZVF1YWxpZmllcik7Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSAqYWRkRnVuY3Rpb25Qcm90
b3R5cGVEZWNsYXJhdGlvbihjb25zdCBURnVuY3Rpb24gJmZ1bmN0aW9uLAorICAgIHZvaWQgcGFy
c2VHbG9iYWxMYXlvdXRRdWFsaWZpZXIoY29uc3QgVFR5cGVRdWFsaWZpZXJCdWlsZGVyICZ0eXBl
UXVhbGlmaWVyQnVpbGRlcik7CisgICAgVEludGVybUFnZ3JlZ2F0ZSAqYWRkRnVuY3Rpb25Qcm90
b3R5cGVEZWNsYXJhdGlvbihjb25zdCBURnVuY3Rpb24gJnBhcnNlZEZ1bmN0aW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNv
dXJjZUxvYyAmbG9jYXRpb24pOwotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmFkZEZ1bmN0aW9uRGVm
aW5pdGlvbihjb25zdCBURnVuY3Rpb24gJmZ1bmN0aW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICpmdW5jdGlvblByb3RvdHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybUFn
Z3JlZ2F0ZSAqZnVuY3Rpb25Cb2R5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsb2NhdGlvbik7Ci0gICAgdm9pZCBwYXJzZUZ1
bmN0aW9uUHJvdG90eXBlKGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICoqYWdncmVnYXRlT3V0KTsKKyAgICBU
SW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICphZGRGdW5jdGlvbkRlZmluaXRpb24oY29uc3QgVEZ1
bmN0aW9uICZmdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqZnVuY3Rpb25QYXJhbWV0ZXJzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJt
QmxvY2sgKmZ1bmN0aW9uQm9keSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jYXRpb24pOworICAgIHZvaWQg
cGFyc2VGdW5jdGlvbkRlZmluaXRpb25IZWFkZXIoY29uc3QgVFNvdXJjZUxvYyAmbG9jYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURnVuY3Rpb24gKipmdW5j
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1BZ2dy
ZWdhdGUgKiphZ2dyZWdhdGVPdXQpOwogICAgIFRGdW5jdGlvbiAqcGFyc2VGdW5jdGlvbkRlY2xh
cmF0b3IoY29uc3QgVFNvdXJjZUxvYyAmbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uKTsKKyAgICBURnVuY3Rpb24gKnBh
cnNlRnVuY3Rpb25IZWFkZXIoY29uc3QgVFB1YmxpY1R5cGUgJnR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgKm5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uKTsKICAgICBU
RnVuY3Rpb24gKmFkZENvbnN0cnVjdG9yRnVuYyhjb25zdCBUUHVibGljVHlwZSAmcHVibGljVHlw
ZSk7CiAgICAgVEludGVybVR5cGVkICphZGRDb25zdHJ1Y3RvcihUSW50ZXJtTm9kZSAqYXJndW1l
bnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFR5cGUgKnR5cGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUT3BlcmF0b3Igb3AsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBURnVuY3Rpb24gKmZuQ2FsbCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpOwotICAgIFRJbnRlcm1UeXBl
ZCAqYWRkQ29uc3RWZWN0b3JOb2RlKFRWZWN0b3JGaWVsZHMgJmZpZWxkcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqbm9kZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsaW5l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgb3V0T2ZSYW5nZUlu
ZGV4SXNFcnJvcik7Ci0gICAgVEludGVybVR5cGVkICphZGRDb25zdE1hdHJpeE5vZGUoaW50IGlu
ZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1Db25zdGFu
dFVuaW9uICpub2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRTb3VyY2VMb2MgJmxpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBvdXRPZlJhbmdlSW5kZXhJc0Vycm9yKTsKLSAgICBUSW50ZXJtVHlwZWQgKmFkZENvbnN0
QXJyYXlOb2RlKGludCBpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRJbnRlcm1Db25zdGFudFVuaW9uICpub2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgb3V0T2ZSYW5nZUluZGV4SXNFcnJvcik7Ci0gICAgVEludGVybVR5
cGVkICphZGRDb25zdFN0cnVjdCgKLSAgICAgICAgY29uc3QgVFN0cmluZyAmaWRlbnRpZmllciwg
VEludGVybVR5cGVkICpub2RlLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKTsKKwogICAgIFRJbnRl
cm1UeXBlZCAqYWRkSW5kZXhFeHByZXNzaW9uKFRJbnRlcm1UeXBlZCAqYmFzZUV4cHJlc3Npb24s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyYg
bG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5
cGVkICppbmRleEV4cHJlc3Npb24pOwpAQCAtMjcyLDQxICsyOTIsNTIgQEAgY2xhc3MgVFBhcnNl
Q29udGV4dCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJmZpZWxkU3RyaW5nLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmZp
ZWxkTG9jYXRpb24pOwogCisgICAgVEZpZWxkTGlzdCAqYWRkU3RydWN0RGVjbGFyYXRvckxpc3RX
aXRoUXVhbGlmaWVycygKKyAgICAgICAgY29uc3QgVFR5cGVRdWFsaWZpZXJCdWlsZGVyICZ0eXBl
UXVhbGlmaWVyQnVpbGRlciwKKyAgICAgICAgVFB1YmxpY1R5cGUgKnR5cGVTcGVjaWZpZXIsCisg
ICAgICAgIFRGaWVsZExpc3QgKmZpZWxkTGlzdCk7CiAgICAgVEZpZWxkTGlzdCAqYWRkU3RydWN0
RGVjbGFyYXRvckxpc3QoY29uc3QgVFB1YmxpY1R5cGUgJnR5cGVTcGVjaWZpZXIsIFRGaWVsZExp
c3QgKmZpZWxkTGlzdCk7Ci0gICAgVFB1YmxpY1R5cGUgYWRkU3RydWN0dXJlKGNvbnN0IFRTb3Vy
Y2VMb2MgJnN0cnVjdExpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRT
b3VyY2VMb2MgJm5hbWVMaW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
U3RyaW5nICpzdHJ1Y3ROYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURmllbGRM
aXN0ICpmaWVsZExpc3QpOworICAgIFRUeXBlU3BlY2lmaWVyTm9uQXJyYXkgYWRkU3RydWN0dXJl
KGNvbnN0IFRTb3VyY2VMb2MgJnN0cnVjdExpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbmFtZUxpbmUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAqc3RydWN0TmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURmllbGRMaXN0ICpmaWVsZExp
c3QpOwogCi0gICAgVEludGVybUFnZ3JlZ2F0ZSogYWRkSW50ZXJmYWNlQmxvY2soY29uc3QgVFB1
YmxpY1R5cGUgJnR5cGVRdWFsaWZpZXIsCisgICAgVEludGVybUFnZ3JlZ2F0ZSAqYWRkSW50ZXJm
YWNlQmxvY2soY29uc3QgVFR5cGVRdWFsaWZpZXJCdWlsZGVyICZ0eXBlUXVhbGlmaWVyQnVpbGRl
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNl
TG9jICZuYW1lTGluZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUU3RyaW5nICZibG9ja05hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVEZpZWxkTGlzdCAqZmllbGRMaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgKmluc3RhbmNlTmFtZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZpbnN0YW5jZUxp
bmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVk
ICphcnJheUluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRTb3VyY2VMb2MmIGFycmF5SW5kZXhMaW5lKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZhcnJheUluZGV4TGluZSk7CiAKKyAg
ICB2b2lkIHBhcnNlTG9jYWxTaXplKGNvbnN0IFRTdHJpbmcgJnF1YWxpZmllclR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZxdWFsaWZpZXJUeXBlTGluZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnRWYWx1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmludFZhbHVlTGluZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZpbnRWYWx1ZVN0cmluZywKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoOjpXb3Jr
R3JvdXBTaXplICpsb2NhbFNpemUpOwogICAgIFRMYXlvdXRRdWFsaWZpZXIgcGFyc2VMYXlvdXRR
dWFsaWZpZXIoCiAgICAgICAgIGNvbnN0IFRTdHJpbmcgJnF1YWxpZmllclR5cGUsIGNvbnN0IFRT
b3VyY2VMb2MgJnF1YWxpZmllclR5cGVMaW5lKTsKICAgICBUTGF5b3V0UXVhbGlmaWVyIHBhcnNl
TGF5b3V0UXVhbGlmaWVyKGNvbnN0IFRTdHJpbmcgJnF1YWxpZmllclR5cGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZxdWFsaWZp
ZXJUeXBlTGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRTdHJpbmcgJmludFZhbHVlU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGludFZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaW50VmFsdWVMaW5lKTsKLSAgICBUTGF5
b3V0UXVhbGlmaWVyIGpvaW5MYXlvdXRRdWFsaWZpZXJzKFRMYXlvdXRRdWFsaWZpZXIgbGVmdFF1
YWxpZmllciwgVExheW91dFF1YWxpZmllciByaWdodFF1YWxpZmllcik7Ci0gICAgVFB1YmxpY1R5
cGUgam9pbkludGVycG9sYXRpb25RdWFsaWZpZXJzKGNvbnN0IFRTb3VyY2VMb2MgJmludGVycG9s
YXRpb25Mb2MsIFRRdWFsaWZpZXIgaW50ZXJwb2xhdGlvblF1YWxpZmllciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmc3RvcmFn
ZUxvYywgVFF1YWxpZmllciBzdG9yYWdlUXVhbGlmaWVyKTsKKyAgICBUVHlwZVF1YWxpZmllckJ1
aWxkZXIgKmNyZWF0ZVR5cGVRdWFsaWZpZXJCdWlsZGVyKGNvbnN0IFRTb3VyY2VMb2MgJmxvYyk7
CisgICAgVExheW91dFF1YWxpZmllciBqb2luTGF5b3V0UXVhbGlmaWVycyhUTGF5b3V0UXVhbGlm
aWVyIGxlZnRRdWFsaWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUTGF5b3V0UXVhbGlmaWVyIHJpZ2h0UXVhbGlmaWVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmcmlnaHRRdWFsaWZpZXJM
b2NhdGlvbik7CiAKICAgICAvLyBQZXJmb3JtcyBhbiBlcnJvciBjaGVjayBmb3IgZW1iZWRkZWQg
c3RydWN0IGRlY2xhcmF0aW9ucy4KLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgYW4gZXJyb3Igd2Fz
IHJhaXNlZCBkdWUgdG8gdGhlIGRlY2xhcmF0aW9uIG9mCi0gICAgLy8gdGhpcyBzdHJ1Y3QuCi0g
ICAgYm9vbCBlbnRlclN0cnVjdERlY2xhcmF0aW9uKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNv
bnN0IFRTdHJpbmcgJmlkZW50aWZpZXIpOworICAgIHZvaWQgZW50ZXJTdHJ1Y3REZWNsYXJhdGlv
bihjb25zdCBUU291cmNlTG9jICZsaW5lLCBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVyKTsKICAg
ICB2b2lkIGV4aXRTdHJ1Y3REZWNsYXJhdGlvbigpOwogCi0gICAgYm9vbCBzdHJ1Y3ROZXN0aW5n
RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jICZsaW5lLCBjb25zdCBURmllbGQgJmZpZWxkKTsK
KyAgICB2b2lkIGNoZWNrSXNCZWxvd1N0cnVjdE5lc3RpbmdMaW1pdChjb25zdCBUU291cmNlTG9j
ICZsaW5lLCBjb25zdCBURmllbGQgJmZpZWxkKTsKIAotICAgIFRJbnRlcm1Td2l0Y2ggKmFkZFN3
aXRjaChUSW50ZXJtVHlwZWQgKmluaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKnN0YXRlbWVudExpc3Qs
IGNvbnN0IFRTb3VyY2VMb2MgJmxvYyk7CisgICAgVEludGVybVN3aXRjaCAqYWRkU3dpdGNoKFRJ
bnRlcm1UeXBlZCAqaW5pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybUJs
b2NrICpzdGF0ZW1lbnRMaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
U291cmNlTG9jICZsb2MpOwogICAgIFRJbnRlcm1DYXNlICphZGRDYXNlKFRJbnRlcm1UeXBlZCAq
Y29uZGl0aW9uLCBjb25zdCBUU291cmNlTG9jICZsb2MpOwogICAgIFRJbnRlcm1DYXNlICphZGRE
ZWZhdWx0KGNvbnN0IFRTb3VyY2VMb2MgJmxvYyk7CiAKQEAgLTMzMSwxNyArMzYyLDM1IEBAIGNs
YXNzIFRQYXJzZUNvbnRleHQgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvYywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmZhdGFsRXJyb3IpOwogCi0g
ICAgVEludGVybVR5cGVkICphZGRUZXJuYXJ5U2VsZWN0aW9uKAotICAgICAgICBUSW50ZXJtVHlw
ZWQgKmNvbmQsIFRJbnRlcm1UeXBlZCAqdHJ1ZUJsb2NrLCBUSW50ZXJtVHlwZWQgKmZhbHNlQmxv
Y2ssIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpOworICAgIFRJbnRlcm1UeXBlZCAqYWRkVGVybmFy
eVNlbGVjdGlvbihUSW50ZXJtVHlwZWQgKmNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqdHJ1ZUV4cHJlc3Npb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqZmFsc2VFeHByZXNzaW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZs
aW5lKTsKIAogICAgIC8vIFRPRE8oam1hZGlsbCk6IG1ha2UgdGhlc2UgcHJpdmF0ZQotICAgIFRJ
bnRlcm1lZGlhdGUgJmludGVybWVkaWF0ZTsgLy8gdG8gaG9sZCBhbmQgYnVpbGQgYSBwYXJzZSB0
cmVlCisgICAgVEludGVybWVkaWF0ZSBpbnRlcm1lZGlhdGU7ICAvLyB0byBidWlsZCBhIHBhcnNl
IHRyZWUKICAgICBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlOyAgIC8vIHN5bWJvbCB0YWJsZSB0
aGF0IGdvZXMgd2l0aCB0aGUgbGFuZ3VhZ2UgY3VycmVudGx5IGJlaW5nIHBhcnNlZAogCiAgIHBy
aXZhdGU6CisgICAgLy8gUmV0dXJucyBhIGNsYW1wZWQgaW5kZXguCisgICAgaW50IGNoZWNrSW5k
ZXhPdXRPZlJhbmdlKGJvb2wgb3V0T2ZSYW5nZUluZGV4SXNFcnJvciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IGFycmF5U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq
cmVhc29uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b2tlbik7
CisKICAgICBib29sIGRlY2xhcmVWYXJpYWJsZShjb25zdCBUU291cmNlTG9jICZsaW5lLCBjb25z
dCBUU3RyaW5nICZpZGVudGlmaWVyLCBjb25zdCBUVHlwZSAmdHlwZSwgVFZhcmlhYmxlICoqdmFy
aWFibGUpOwogCi0gICAgYm9vbCBub25Jbml0RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jICZs
aW5lLCBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVyLCBUUHVibGljVHlwZSAqdHlwZSk7CisgICAg
dm9pZCBjaGVja0NhbkJlRGVjbGFyZWRXaXRob3V0SW5pdGlhbGl6ZXIoY29uc3QgVFNvdXJjZUxv
YyAmbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUU3RyaW5nICZpZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRQdWJsaWNUeXBlICp0eXBlKTsKKworICAgIGJvb2wgY2hlY2tJc1Zh
bGlkVHlwZUFuZFF1YWxpZmllckZvckFycmF5KGNvbnN0IFRTb3VyY2VMb2MgJmluZGV4TG9jYXRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFB1YmxpY1R5cGUgJmVsZW1lbnRUeXBlKTsKKworICAgIC8vIEFzc3VtZXMgdGhhdCBtdWx0aXBs
aWNhdGlvbiBvcCBoYXMgYWxyZWFkeSBiZWVuIHNldCBiYXNlZCBvbiB0aGUgdHlwZXMuCisgICAg
Ym9vbCBpc011bHRpcGxpY2F0aW9uVHlwZUNvbWJpbmF0aW9uVmFsaWQoVE9wZXJhdG9yIG9wLCBj
b25zdCBUVHlwZSAmbGVmdCwgY29uc3QgVFR5cGUgJnJpZ2h0KTsKIAogICAgIFRJbnRlcm1UeXBl
ZCAqYWRkQmluYXJ5TWF0aEludGVybmFsKAogICAgICAgICBUT3BlcmF0b3Igb3AsIFRJbnRlcm1U
eXBlZCAqbGVmdCwgVEludGVybVR5cGVkICpyaWdodCwgY29uc3QgVFNvdXJjZUxvYyAmbG9jKTsK
QEAgLTM2MCwxNSArNDA5LDE4IEBAIGNsYXNzIFRQYXJzZUNvbnRleHQgOiBhbmdsZTo6Tm9uQ29w
eWFibGUKICAgICBib29sIG1EZWZlcnJlZFNpbmdsZURlY2xhcmF0aW9uRXJyb3JDaGVjazsKIAog
ICAgIHNoOjpHTGVudW0gbVNoYWRlclR5cGU7ICAgICAgICAgICAgICAvLyB2ZXJ0ZXggb3IgZnJh
Z21lbnQgbGFuZ3VhZ2UgKGZ1dHVyZTogcGFjayBvciB1bnBhY2spCi0gICAgU2hTaGFkZXJTcGVj
IG1TaGFkZXJTcGVjOyAgICAgICAgICAgICAgLy8gVGhlIGxhbmd1YWdlIHNwZWNpZmljYXRpb24g
Y29tcGlsZXIgY29uZm9ybXMgdG8gLSBHTEVTMiBvciBXZWJHTC4KKyAgICBTaFNoYWRlclNwZWMg
bVNoYWRlclNwZWM7ICAvLyBUaGUgbGFuZ3VhZ2Ugc3BlY2lmaWNhdGlvbiBjb21waWxlciBjb25m
b3JtcyB0byAtIEdMRVMyIG9yIFdlYkdMLgorICAgIFNoQ29tcGlsZU9wdGlvbnMgbUNvbXBpbGVP
cHRpb25zOyAgLy8gT3B0aW9ucyBwYXNzZWQgdG8gVENvbXBpbGVyCiAgICAgaW50IG1TaGFkZXJW
ZXJzaW9uOwotICAgIFRJbnRlcm1Ob2RlICptVHJlZVJvb3Q7ICAgICAgIC8vIHJvb3Qgb2YgcGFy
c2UgdHJlZSBiZWluZyBjcmVhdGVkCisgICAgVEludGVybUJsb2NrICptVHJlZVJvb3Q7ICAgICAv
LyByb290IG9mIHBhcnNlIHRyZWUgYmVpbmcgY3JlYXRlZAogICAgIGludCBtTG9vcE5lc3RpbmdM
ZXZlbDsgICAgICAgLy8gMCBpZiBvdXRzaWRlIGFsbCBsb29wcwotICAgIGludCBtU3RydWN0TmVz
dGluZ0xldmVsOyAgICAgIC8vIGluY3JlbWVudGVkIHdoaWxlIHBhcnNpbmcgYSBzdHJ1Y3QgZGVj
bGFyYXRpb24KKyAgICBpbnQgbVN0cnVjdE5lc3RpbmdMZXZlbDsgICAgIC8vIGluY3JlbWVudGVk
IHdoaWxlIHBhcnNpbmcgYSBzdHJ1Y3QgZGVjbGFyYXRpb24KICAgICBpbnQgbVN3aXRjaE5lc3Rp
bmdMZXZlbDsgICAgIC8vIDAgaWYgb3V0c2lkZSBhbGwgc3dpdGNoIHN0YXRlbWVudHMKLSAgICBj
b25zdCBUVHlwZSAqbUN1cnJlbnRGdW5jdGlvblR5cGU7ICAvLyB0aGUgcmV0dXJuIHR5cGUgb2Yg
dGhlIGZ1bmN0aW9uIHRoYXQncyBjdXJyZW50bHkgYmVpbmcgcGFyc2VkCisgICAgY29uc3QgVFR5
cGUKKyAgICAgICAgKm1DdXJyZW50RnVuY3Rpb25UeXBlOyAgIC8vIHRoZSByZXR1cm4gdHlwZSBv
ZiB0aGUgZnVuY3Rpb24gdGhhdCdzIGN1cnJlbnRseSBiZWluZyBwYXJzZWQKICAgICBib29sIG1G
dW5jdGlvblJldHVybnNWYWx1ZTsgIC8vIHRydWUgaWYgYSBub24tdm9pZCBmdW5jdGlvbiBoYXMg
YSByZXR1cm4KLSAgICBib29sIG1DaGVja3NQcmVjaXNpb25FcnJvcnM7ICAvLyB0cnVlIGlmIGFu
IGVycm9yIHdpbGwgYmUgZ2VuZXJhdGVkIHdoZW4gYSB2YXJpYWJsZSBpcyBkZWNsYXJlZCB3aXRo
b3V0IHByZWNpc2lvbiwgZXhwbGljaXQgb3IgaW1wbGljaXQuCisgICAgYm9vbCBtQ2hlY2tzUHJl
Y2lzaW9uRXJyb3JzOyAgLy8gdHJ1ZSBpZiBhbiBlcnJvciB3aWxsIGJlIGdlbmVyYXRlZCB3aGVu
IGEgdmFyaWFibGUgaXMgZGVjbGFyZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyB3aXRob3V0IHByZWNpc2lvbiwgZXhwbGljaXQgb3IgaW1wbGljaXQuCiAgICAgYm9vbCBt
RnJhZ21lbnRQcmVjaXNpb25IaWdoT25FU1NMMTsgIC8vIHRydWUgaWYgaGlnaHAgcHJlY2lzaW9u
IGlzIHN1cHBvcnRlZCB3aGVuIGNvbXBpbGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBFU1NMMS4KICAgICBUTGF5b3V0TWF0cml4UGFja2luZyBtRGVmYXVs
dE1hdHJpeFBhY2tpbmc7CkBAIC0zODQsNiArNDM2LDEyIEBAIGNsYXNzIFRQYXJzZUNvbnRleHQg
OiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGdsX1NlY29uZGFyeSBGcmFnQ29sb3Igb3IgYm90aC4KICAgICBpbnQgbU1pblByb2dyYW1UZXhl
bE9mZnNldDsKICAgICBpbnQgbU1heFByb2dyYW1UZXhlbE9mZnNldDsKKworICAgIC8vIGtlZXAg
dHJhY2sgb2YgbG9jYWwgZ3JvdXAgc2l6ZSBkZWNsYXJlZCBpbiBsYXlvdXQuIEl0IHNob3VsZCBi
ZSBkZWNsYXJlZCBvbmx5IG9uY2UuCisgICAgYm9vbCBtQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZURl
Y2xhcmVkOworICAgIHNoOjpXb3JrR3JvdXBTaXplIG1Db21wdXRlU2hhZGVyTG9jYWxTaXplOwor
ICAgIC8vIGtlZXBzIHRyYWNrIHdoZXRoZXIgd2UgYXJlIGRlY2xhcmluZyAvIGRlZmluaW5nIGEg
ZnVuY3Rpb24KKyAgICBib29sIG1EZWNsYXJpbmdGdW5jdGlvbjsKIH07CiAKIGludCBQYVBhcnNl
U3RyaW5ncygKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1Bvb2xBbGxvYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUG9vbEFsbG9jLmNwcAkocmV2aXNpb24gMjA3ODA0
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUG9v
bEFsbG9jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNiwxNiArNiwxNiBAQAogCiAjaW5jbHVkZSAi
Y29tcGlsZXIvdHJhbnNsYXRvci9Qb29sQWxsb2MuaCIKIAotI2luY2x1ZGUgImNvbXBpbGVyL3Ry
YW5zbGF0b3IvSW5pdGlhbGl6ZUdsb2JhbHMuaCIKLQotI2luY2x1ZGUgImNvbW1vbi9wbGF0Zm9y
bS5oIgotI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCi0jaW5jbHVkZSAiY29tbW9uL3Rs
cy5oIgotCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRl
IDxhc3NlcnQuaD4KIAorI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisjaW5jbHVkZSAi
Y29tbW9uL2RlYnVnLmgiCisjaW5jbHVkZSAiY29tbW9uL3BsYXRmb3JtLmgiCisjaW5jbHVkZSAi
Y29tbW9uL3Rscy5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZUds
b2JhbHMuaCIKKwogVExTSW5kZXggUG9vbEluZGV4ID0gVExTX0lOVkFMSURfSU5ERVg7CiAKIGJv
b2wgSW5pdGlhbGl6ZVBvb2xJbmRleCgpCkBAIC01MCwyOCArNTAsMTggQEAgdm9pZCBTZXRHbG9i
YWxQb29sQWxsb2NhdG9yKFRQb29sQWxsb2NhdAogLy8gSW1wbGVtZW50IHRoZSBmdW5jdGlvbmFs
aXR5IG9mIHRoZSBUUG9vbEFsbG9jYXRvciBjbGFzcywgd2hpY2gKIC8vIGlzIGRvY3VtZW50ZWQg
aW4gUG9vbEFsbG9jLmguCiAvLwotVFBvb2xBbGxvY2F0b3I6OlRQb29sQWxsb2NhdG9yKGludCBn
cm93dGhJbmNyZW1lbnQsIGludCBhbGxvY2F0aW9uQWxpZ25tZW50KSA6IAotICAgIHBhZ2VTaXpl
KGdyb3d0aEluY3JlbWVudCksCi0gICAgYWxpZ25tZW50KGFsbG9jYXRpb25BbGlnbm1lbnQpLAot
ICAgIGZyZWVMaXN0KDApLAotICAgIGluVXNlTGlzdCgwKSwKLSAgICBudW1DYWxscygwKSwKLSAg
ICB0b3RhbEJ5dGVzKDApCitUUG9vbEFsbG9jYXRvcjo6VFBvb2xBbGxvY2F0b3IoaW50IGdyb3d0
aEluY3JlbWVudCwgaW50IGFsbG9jYXRpb25BbGlnbm1lbnQpCisgICAgOiBhbGlnbm1lbnQoYWxs
b2NhdGlvbkFsaWdubWVudCksCisjaWYgIWRlZmluZWQoQU5HTEVfVFJBTlNMQVRPUl9ESVNBQkxF
X1BPT0xfQUxMT0MpCisgICAgICBwYWdlU2l6ZShncm93dGhJbmNyZW1lbnQpLAorICAgICAgZnJl
ZUxpc3QoMCksCisgICAgICBpblVzZUxpc3QoMCksCisgICAgICBudW1DYWxscygwKSwKKyAgICAg
IHRvdGFsQnl0ZXMoMCksCisjZW5kaWYKKyAgICAgIG1Mb2NrZWQoZmFsc2UpCiB7CiAgICAgLy8K
LSAgICAvLyBEb24ndCBhbGxvdyBwYWdlIHNpemVzIHdlIGtub3cgYXJlIHNtYWxsZXIgdGhhbiBh
bGwgY29tbW9uCi0gICAgLy8gT1MgcGFnZSBzaXplcy4KLSAgICAvLwotICAgIGlmIChwYWdlU2l6
ZSA8IDQqMTAyNCkKLSAgICAgICAgcGFnZVNpemUgPSA0KjEwMjQ7Ci0KLSAgICAvLwotICAgIC8v
IEEgbGFyZ2UgY3VycmVudFBhZ2VPZmZzZXQgaW5kaWNhdGVzIGEgbmV3IHBhZ2UgbmVlZHMgdG8K
LSAgICAvLyBiZSBvYnRhaW5lZCB0byBhbGxvY2F0ZSBtZW1vcnkuCi0gICAgLy8KLSAgICBjdXJy
ZW50UGFnZU9mZnNldCA9IHBhZ2VTaXplOwotCi0gICAgLy8KICAgICAvLyBBZGp1c3QgYWxpZ25t
ZW50IHRvIGJlIGF0IGxlYXN0IHBvaW50ZXIgYWxpZ25lZCBhbmQKICAgICAvLyBwb3dlciBvZiAy
LgogICAgIC8vCkBAIC04NSw2ICs3NSwyMCBAQCBUUG9vbEFsbG9jYXRvcjo6VFBvb2xBbGxvY2F0
b3IoaW50IGdyb3d0CiAgICAgYWxpZ25tZW50ID0gYTsKICAgICBhbGlnbm1lbnRNYXNrID0gYSAt
IDE7CiAKKyNpZiAhZGVmaW5lZChBTkdMRV9UUkFOU0xBVE9SX0RJU0FCTEVfUE9PTF9BTExPQykK
KyAgICAvLworICAgIC8vIERvbid0IGFsbG93IHBhZ2Ugc2l6ZXMgd2Uga25vdyBhcmUgc21hbGxl
ciB0aGFuIGFsbCBjb21tb24KKyAgICAvLyBPUyBwYWdlIHNpemVzLgorICAgIC8vCisgICAgaWYg
KHBhZ2VTaXplIDwgNCAqIDEwMjQpCisgICAgICAgIHBhZ2VTaXplID0gNCAqIDEwMjQ7CisKKyAg
ICAvLworICAgIC8vIEEgbGFyZ2UgY3VycmVudFBhZ2VPZmZzZXQgaW5kaWNhdGVzIGEgbmV3IHBh
Z2UgbmVlZHMgdG8KKyAgICAvLyBiZSBvYnRhaW5lZCB0byBhbGxvY2F0ZSBtZW1vcnkuCisgICAg
Ly8KKyAgICBjdXJyZW50UGFnZU9mZnNldCA9IHBhZ2VTaXplOworCiAgICAgLy8KICAgICAvLyBB
bGlnbiBoZWFkZXIgc2tpcAogICAgIC8vCkBAIC05MiwxMCArOTYsMTQgQEAgVFBvb2xBbGxvY2F0
b3I6OlRQb29sQWxsb2NhdG9yKGludCBncm93dAogICAgIGlmIChoZWFkZXJTa2lwIDwgc2l6ZW9m
KHRIZWFkZXIpKSB7CiAgICAgICAgIGhlYWRlclNraXAgPSAoc2l6ZW9mKHRIZWFkZXIpICsgYWxp
Z25tZW50TWFzaykgJiB+YWxpZ25tZW50TWFzazsKICAgICB9CisjZWxzZSAgLy8gIWRlZmluZWQo
QU5HTEVfVFJBTlNMQVRPUl9ESVNBQkxFX1BPT0xfQUxMT0MpCisgICAgbVN0YWNrLnB1c2hfYmFj
ayh7fSk7CisjZW5kaWYKIH0KIAogVFBvb2xBbGxvY2F0b3I6On5UUG9vbEFsbG9jYXRvcigpCiB7
CisjaWYgIWRlZmluZWQoQU5HTEVfVFJBTlNMQVRPUl9ESVNBQkxFX1BPT0xfQUxMT0MpCiAgICAg
d2hpbGUgKGluVXNlTGlzdCkgewogICAgICAgICB0SGVhZGVyKiBuZXh0ID0gaW5Vc2VMaXN0LT5u
ZXh0UGFnZTsKICAgICAgICAgaW5Vc2VMaXN0LT5+dEhlYWRlcigpOwpAQCAtMTEyLDYgKzEyMCwx
NiBAQCBUUG9vbEFsbG9jYXRvcjo6flRQb29sQWxsb2NhdG9yKCkKICAgICAgICAgZGVsZXRlIFtd
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGZyZWVMaXN0KTsKICAgICAgICAgZnJlZUxpc3QgPSBu
ZXh0OwogICAgIH0KKyNlbHNlICAvLyAhZGVmaW5lZChBTkdMRV9UUkFOU0xBVE9SX0RJU0FCTEVf
UE9PTF9BTExPQykKKyAgICBmb3IgKGF1dG8gJmFsbG9jcyA6IG1TdGFjaykKKyAgICB7CisgICAg
ICAgIGZvciAoYXV0byBhbGxvYyA6IGFsbG9jcykKKyAgICAgICAgeworICAgICAgICAgICAgZnJl
ZShhbGxvYyk7CisgICAgICAgIH0KKyAgICB9CisgICAgbVN0YWNrLmNsZWFyKCk7CisjZW5kaWYK
IH0KIAogLy8gU3VwcG9ydCBNU1ZDKysgNi4wCkBAIC0xNTIsMTQgKzE3MCwxOCBAQCB2b2lkIFRB
bGxvY2F0aW9uOjpjaGVja0d1YXJkQmxvY2sodW5zaWduCiAKIHZvaWQgVFBvb2xBbGxvY2F0b3I6
OnB1c2goKQogeworI2lmICFkZWZpbmVkKEFOR0xFX1RSQU5TTEFUT1JfRElTQUJMRV9QT09MX0FM
TE9DKQogICAgIHRBbGxvY1N0YXRlIHN0YXRlID0geyBjdXJyZW50UGFnZU9mZnNldCwgaW5Vc2VM
aXN0IH07CiAKLSAgICBzdGFjay5wdXNoX2JhY2soc3RhdGUpOwotICAgICAgICAKKyAgICBtU3Rh
Y2sucHVzaF9iYWNrKHN0YXRlKTsKKwogICAgIC8vCiAgICAgLy8gSW5kaWNhdGUgdGhlcmUgaXMg
bm8gY3VycmVudCBwYWdlIHRvIGFsbG9jYXRlIGZyb20uCiAgICAgLy8KICAgICBjdXJyZW50UGFn
ZU9mZnNldCA9IHBhZ2VTaXplOworI2Vsc2UgIC8vICFkZWZpbmVkKEFOR0xFX1RSQU5TTEFUT1Jf
RElTQUJMRV9QT09MX0FMTE9DKQorICAgIG1TdGFjay5wdXNoX2JhY2soe30pOworI2VuZGlmCiB9
CiAKIC8vCkBAIC0xNzEsMTEgKzE5MywxMiBAQCB2b2lkIFRQb29sQWxsb2NhdG9yOjpwdXNoKCkK
IC8vCiB2b2lkIFRQb29sQWxsb2NhdG9yOjpwb3AoKQogewotICAgIGlmIChzdGFjay5zaXplKCkg
PCAxKQorICAgIGlmIChtU3RhY2suc2l6ZSgpIDwgMSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
dEhlYWRlciogcGFnZSA9IHN0YWNrLmJhY2soKS5wYWdlOwotICAgIGN1cnJlbnRQYWdlT2Zmc2V0
ID0gc3RhY2suYmFjaygpLm9mZnNldDsKKyNpZiAhZGVmaW5lZChBTkdMRV9UUkFOU0xBVE9SX0RJ
U0FCTEVfUE9PTF9BTExPQykKKyAgICB0SGVhZGVyICpwYWdlICAgICA9IG1TdGFjay5iYWNrKCku
cGFnZTsKKyAgICBjdXJyZW50UGFnZU9mZnNldCA9IG1TdGFjay5iYWNrKCkub2Zmc2V0OwogCiAg
ICAgd2hpbGUgKGluVXNlTGlzdCAhPSBwYWdlKSB7CiAgICAgICAgIC8vIGludm9rZSBkZXN0cnVj
dG9yIHRvIGZyZWUgYWxsb2NhdGlvbiBsaXN0CkBAIC0xOTEsNyArMjE0LDE0IEBAIHZvaWQgVFBv
b2xBbGxvY2F0b3I6OnBvcCgpCiAgICAgICAgIGluVXNlTGlzdCA9IG5leHRJblVzZTsKICAgICB9
CiAKLSAgICBzdGFjay5wb3BfYmFjaygpOworICAgIG1TdGFjay5wb3BfYmFjaygpOworI2Vsc2Ug
IC8vICFkZWZpbmVkKEFOR0xFX1RSQU5TTEFUT1JfRElTQUJMRV9QT09MX0FMTE9DKQorICAgIGZv
ciAoYXV0byAmYWxsb2MgOiBtU3RhY2suYmFjaygpKQorICAgIHsKKyAgICAgICAgZnJlZShhbGxv
Yyk7CisgICAgfQorICAgIG1TdGFjay5wb3BfYmFjaygpOworI2VuZGlmCiB9CiAKIC8vCkBAIC0y
MDAsMTIgKzIzMCwxNSBAQCB2b2lkIFRQb29sQWxsb2NhdG9yOjpwb3AoKQogLy8KIHZvaWQgVFBv
b2xBbGxvY2F0b3I6OnBvcEFsbCgpCiB7Ci0gICAgd2hpbGUgKHN0YWNrLnNpemUoKSA+IDApCisg
ICAgd2hpbGUgKG1TdGFjay5zaXplKCkgPiAwKQogICAgICAgICBwb3AoKTsKIH0KIAogdm9pZCog
VFBvb2xBbGxvY2F0b3I6OmFsbG9jYXRlKHNpemVfdCBudW1CeXRlcykKIHsKKyAgICBBU1NFUlQo
IW1Mb2NrZWQpOworCisjaWYgIWRlZmluZWQoQU5HTEVfVFJBTlNMQVRPUl9ESVNBQkxFX1BPT0xf
QUxMT0MpCiAgICAgLy8KICAgICAvLyBKdXN0IGtlZXAgc29tZSBpbnRlcmVzdGluZyBzdGF0aXN0
aWNzLgogICAgIC8vCkBAIC0yODIsOCArMzE1LDI3IEBAIHZvaWQqIFRQb29sQWxsb2NhdG9yOjph
bGxvY2F0ZShzaXplX3QgbnUKICAgICBjdXJyZW50UGFnZU9mZnNldCA9IChoZWFkZXJTa2lwICsg
YWxsb2NhdGlvblNpemUgKyBhbGlnbm1lbnRNYXNrKSAmIH5hbGlnbm1lbnRNYXNrOwogCiAgICAg
cmV0dXJuIGluaXRpYWxpemVBbGxvY2F0aW9uKGluVXNlTGlzdCwgcmV0LCBudW1CeXRlcyk7Cisj
ZWxzZSAgLy8gIWRlZmluZWQoQU5HTEVfVFJBTlNMQVRPUl9ESVNBQkxFX1BPT0xfQUxMT0MpCisg
ICAgdm9pZCAqYWxsb2MgPSBtYWxsb2MobnVtQnl0ZXMgKyBhbGlnbm1lbnRNYXNrKTsKKyAgICBt
U3RhY2suYmFjaygpLnB1c2hfYmFjayhhbGxvYyk7CisKKyAgICBpbnRwdHJfdCBpbnRBbGxvYyA9
IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFsbG9jKTsKKyAgICBpbnRBbGxvYyAgICAgICAg
ICA9IChpbnRBbGxvYyArIGFsaWdubWVudE1hc2spICYgfmFsaWdubWVudE1hc2s7CisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqPihpbnRBbGxvYyk7CisjZW5kaWYKK30KKwordm9p
ZCBUUG9vbEFsbG9jYXRvcjo6bG9jaygpCit7CisgICAgQVNTRVJUKCFtTG9ja2VkKTsKKyAgICBt
TG9ja2VkID0gdHJ1ZTsKIH0KIAordm9pZCBUUG9vbEFsbG9jYXRvcjo6dW5sb2NrKCkKK3sKKyAg
ICBBU1NFUlQobUxvY2tlZCk7CisgICAgbUxvY2tlZCA9IGZhbHNlOworfQogCiAvLwogLy8gQ2hl
Y2sgYWxsIGFsbG9jYXRpb25zIGluIGEgbGlzdCBmb3IgZGFtYWdlIGJ5IGNhbGxpbmcgY2hlY2sg
b24gZWFjaC4KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1Bvb2xBbGxvYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Bvb2xBbGxvYy5oCShyZXZpc2lvbiAyMDc4MDQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Qb29sQWxs
b2MuaAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDcgKzE1MiwxNyBAQCBwdWJsaWM6CiAgICAgLy8g
YnkgY2FsbGluZyBwb3AoKSwgYW5kIHRvIG5vdCBoYXZlIHRvIHNvbHZlIG1lbW9yeSBsZWFrIHBy
b2JsZW1zLgogICAgIC8vCiAKLXByb3RlY3RlZDoKKyAgICAvLyBDYXRjaCB1bndhbnRlZCBhbGxv
Y2F0aW9ucy4KKyAgICAvLyBUT0RPKGptYWRpbGwpOiBSZW1vdmUgdGhpcyB3aGVuIHdlIHJlbW92
ZSB0aGUgZ2xvYmFsIGFsbG9jYXRvci4KKyAgICB2b2lkIGxvY2soKTsKKyAgICB2b2lkIHVubG9j
aygpOworCisgIHByaXZhdGU6CisgICAgc2l6ZV90IGFsaWdubWVudDsgIC8vIGFsbCByZXR1cm5l
ZCBhbGxvY2F0aW9ucyB3aWxsIGJlIGFsaWduZWQgYXQKKyAgICAgICAgICAgICAgICAgICAgICAg
Ly8gdGhpcyBncmFudWxhcml0eSwgd2hpY2ggd2lsbCBiZSBhIHBvd2VyIG9mIDIKKyAgICBzaXpl
X3QgYWxpZ25tZW50TWFzazsKKworI2lmICFkZWZpbmVkKEFOR0xFX1RSQU5TTEFUT1JfRElTQUJM
RV9QT09MX0FMTE9DKQogICAgIGZyaWVuZCBzdHJ1Y3QgdEhlYWRlcjsKICAgICAKICAgICBzdHJ1
Y3QgdEhlYWRlciB7CkBAIC0xOTUsMjIgKzIwNSwyNCBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogCiAg
ICAgc2l6ZV90IHBhZ2VTaXplOyAgICAgICAgLy8gZ3JhbnVsYXJpdHkgb2YgYWxsb2NhdGlvbiBm
cm9tIHRoZSBPUwotICAgIHNpemVfdCBhbGlnbm1lbnQ7ICAgICAgIC8vIGFsbCByZXR1cm5lZCBh
bGxvY2F0aW9ucyB3aWxsIGJlIGFsaWduZWQgYXQgCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gdGhpcyBncmFudWxhcml0eSwgd2hpY2ggd2lsbCBiZSBhIHBvd2VyIG9mIDIKLSAgICBz
aXplX3QgYWxpZ25tZW50TWFzazsKICAgICBzaXplX3QgaGVhZGVyU2tpcDsgICAgICAvLyBhbW91
bnQgb2YgbWVtb3J5IHRvIHNraXAgdG8gbWFrZSByb29tIGZvciB0aGUKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyAgICAgIGhlYWRlciAoYmFzaWNhbGx5LCBzaXplIG9mIGhlYWRlciwg
cm91bmRlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgdXAgdG8gbWFrZSBp
dCBhbGlnbmVkCiAgICAgc2l6ZV90IGN1cnJlbnRQYWdlT2Zmc2V0OyAgLy8gbmV4dCBvZmZzZXQg
aW4gdG9wIG9mIGluVXNlTGlzdCB0byBhbGxvY2F0ZSBmcm9tCiAgICAgdEhlYWRlciogZnJlZUxp
c3Q7ICAgICAgLy8gbGlzdCBvZiBwb3BwZWQgbWVtb3J5CiAgICAgdEhlYWRlciogaW5Vc2VMaXN0
OyAgICAgLy8gbGlzdCBvZiBhbGwgbWVtb3J5IGN1cnJlbnRseSBiZWluZyB1c2VkCi0gICAgdEFs
bG9jU3RhY2sgc3RhY2s7ICAgICAgLy8gc3RhY2sgb2Ygd2hlcmUgdG8gYWxsb2NhdGUgZnJvbSwg
dG8gcGFydGl0aW9uIHBvb2wKKyAgICB0QWxsb2NTdGFjayBtU3RhY2s7ICAgICAvLyBzdGFjayBv
ZiB3aGVyZSB0byBhbGxvY2F0ZSBmcm9tLCB0byBwYXJ0aXRpb24gcG9vbAogCiAgICAgaW50IG51
bUNhbGxzOyAgICAgICAgICAgLy8ganVzdCBhbiBpbnRlcmVzdGluZyBzdGF0aXN0aWMKICAgICBz
aXplX3QgdG90YWxCeXRlczsgICAgICAvLyBqdXN0IGFuIGludGVyZXN0aW5nIHN0YXRpc3RpYwot
cHJpdmF0ZToKKworI2Vsc2UgIC8vICFkZWZpbmVkKEFOR0xFX1RSQU5TTEFUT1JfRElTQUJMRV9Q
T09MX0FMTE9DKQorICAgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPHZvaWQgKj4+IG1TdGFjazsK
KyNlbmRpZgorCiAgICAgVFBvb2xBbGxvY2F0b3ImIG9wZXJhdG9yPShjb25zdCBUUG9vbEFsbG9j
YXRvciYpOyAgLy8gZG9udCBhbGxvdyBhc3NpZ25tZW50IG9wZXJhdG9yCiAgICAgVFBvb2xBbGxv
Y2F0b3IoY29uc3QgVFBvb2xBbGxvY2F0b3ImKTsgIC8vIGRvbnQgYWxsb3cgZGVmYXVsdCBjb3B5
IGNvbnN0cnVjdG9yCisgICAgYm9vbCBtTG9ja2VkOwogfTsKIAogCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9QcnVuZUVtcHR5RGVjbGFyYXRp
b25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9QcnVuZUVtcHR5RGVjbGFyYXRpb25zLmNwcAkocmV2aXNpb24gMjA3ODA0
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUHJ1
bmVFbXB0eURlY2xhcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDkgKzYyLDM5IEBA
IGJvb2wgUHJ1bmVFbXB0eURlY2xhcmF0aW9uc1RyYXZlcnNlcjo6dmkKICAgICAgICAgICAgICAg
ICAgICAgLy8gZGVjbGFyYXRpb24gdGhhdCB3aWxsIGJlIHBydW5lZDoKICAgICAgICAgICAgICAg
ICAgICAgLy8gZmxvYXQ7CiAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSBlbXB0
eVJlcGxhY2VtZW50OwotICAgICAgICAgICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICpwYXJl
bnRBZ2cgPSBnZXRQYXJlbnROb2RlKCktPmdldEFzQWdncmVnYXRlKCk7Ci0gICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChwYXJlbnRBZ2cgIT0gbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgICAg
IG1NdWx0aVJlcGxhY2VtZW50cy5wdXNoX2JhY2soTm9kZVJlcGxhY2VXaXRoTXVsdGlwbGVFbnRy
eShwYXJlbnRBZ2csIG5vZGUsIGVtcHR5UmVwbGFjZW1lbnQpKTsKKyAgICAgICAgICAgICAgICAg
ICAgVEludGVybUJsb2NrICpwYXJlbnRBc0Jsb2NrID0gZ2V0UGFyZW50Tm9kZSgpLT5nZXRBc0Js
b2NrKCk7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBkZWNsYXJhdGlvbiBtYXkgYmUgaW5z
aWRlIGEgYmxvY2sgb3IgaW4gYSBsb29wIGluaXQgZXhwcmVzc2lvbi4KKyAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKHBhcmVudEFzQmxvY2sgIT0gbnVsbHB0ciB8fCBnZXRQYXJlbnROb2RlKCkt
PmdldEFzTG9vcE5vZGUoKSAhPSBudWxscHRyKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBh
cmVudEFzQmxvY2spCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1NdWx0aVJlcGxhY2VtZW50cy5wdXNoX2JhY2soCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTm9kZVJlcGxhY2VXaXRoTXVsdGlwbGVFbnRyeShwYXJlbnRBc0Jsb2NrLCBub2RlLCBl
bXB0eVJlcGxhY2VtZW50KSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBxdWV1ZVJlcGxhY2VtZW50KG5vZGUsIG51bGxwdHIsIE9yaWdpbmFsTm9kZTo6SVNfRFJPUFBF
RCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoc3ltLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgIT0gRXZxR2xvYmFs
ICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgc3ltLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVy
KCkgIT0gRXZxVGVtcG9yYXJ5KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgLy8gV2UndmUgaGl0IGFuIGVtcHR5IHN0cnVjdCBkZWNsYXJhdGlvbiB3aXRoIGEgcXVhbGlm
aWVyLCBmb3IgZXhhbXBsZSBsaWtlCisgICAgICAgICAgICAgICAgICAgIC8vIHRoaXM6CisgICAg
ICAgICAgICAgICAgICAgIC8vIGNvbnN0IHN0cnVjdCBhIHsgaW50IGk7IH07CisgICAgICAgICAg
ICAgICAgICAgIC8vIE5WSURJQSBHTCBkcml2ZXIgdmVyc2lvbiAzNjcuMjcgZG9lc24ndCBhY2Nl
cHQgdGhpcyBraW5kIG9mIGRlY2xhcmF0aW9ucywgc28KKyAgICAgICAgICAgICAgICAgICAgLy8g
d2UgY29udmVydCB0aGUgZGVjbGFyYXRpb24gdG8gYSByZWd1bGFyIHN0cnVjdCBkZWNsYXJhdGlv
bi4gVGhpcyBpcyBva2F5LAorICAgICAgICAgICAgICAgICAgICAvLyBzaW5jZSBFU1NMIDEuMDAg
c3BlYyBzZWN0aW9uIDQuMS44IHNheXMgYWJvdXQgc3RydWN0cyB0aGF0ICJUaGUgb3B0aW9uYWwK
KyAgICAgICAgICAgICAgICAgICAgLy8gcXVhbGlmaWVycyBvbmx5IGFwcGx5IHRvIGFueSBkZWNs
YXJhdG9ycywgYW5kIGFyZSBub3QgcGFydCBvZiB0aGUgdHlwZSBiZWluZworICAgICAgICAgICAg
ICAgICAgICAvLyBkZWZpbmVkIGZvciBuYW1lLiIKKworICAgICAgICAgICAgICAgICAgICBpZiAo
bUluR2xvYmFsU2NvcGUpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHN5bS0+Z2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVyKEV2cUdsb2JhbCk7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBzeW0tPmdldFR5cGVQb2ludGVy
KCktPnNldFF1YWxpZmllcihFdnFUZW1wb3JhcnkpOworICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9RdWFsaWZpZXJBbGl2ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1F1YWxpZmllckFsaXZlLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1F1YWxpZmllckFsaXZlLmgJKG5v
bmV4aXN0ZW50KQpAQCAtMSwxMiArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIw
MTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaWZuZGVm
IENPTVBJTEVSX1RSQU5TTEFUT1JfUVVBTElGSUVSQUxJVkVfSF8KLSNkZWZpbmUgQ09NUElMRVJf
VFJBTlNMQVRPUl9RVUFMSUZJRVJBTElWRV9IXwotCi1ib29sIFF1YWxpZmllcldyaXR0ZW4oVElu
dGVybU5vZGUqIHJvb3QsIFRRdWFsaWZpZXIpOwotCi0jZW5kaWYgLy8gQ09NUElMRVJfVFJBTlNM
QVRPUl9RVUFMSUZJRVJBTElWRV9IXwoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUXVhbGlmaWVyQWxpdmUuaApfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL1F1YWxpZmllclR5cGVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9RdWFsaWZp
ZXJUeXBlcy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvUXVhbGlmaWVyVHlwZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNjQ2IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAiY29tcGlsZXIv
dHJhbnNsYXRvci9RdWFsaWZpZXJUeXBlcy5oIgorCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNs
YXRvci9EaWFnbm9zdGljcy5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCituYW1lc3BhY2Ug
c2gKK3sKK1RMYXlvdXRRdWFsaWZpZXIgSm9pbkxheW91dFF1YWxpZmllcnMoVExheW91dFF1YWxp
ZmllciBsZWZ0UXVhbGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUTGF5b3V0UXVhbGlmaWVyIHJpZ2h0UXVhbGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZyaWdodFF1YWxpZmllckxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURGlhZ25vc3RpY3MgKmRp
YWdub3N0aWNzKQoreworICAgIFRMYXlvdXRRdWFsaWZpZXIgam9pbmVkUXVhbGlmaWVyID0gbGVm
dFF1YWxpZmllcjsKKworICAgIGlmIChyaWdodFF1YWxpZmllci5sb2NhdGlvbiAhPSAtMSkKKyAg
ICB7CisgICAgICAgIGpvaW5lZFF1YWxpZmllci5sb2NhdGlvbiA9IHJpZ2h0UXVhbGlmaWVyLmxv
Y2F0aW9uOworICAgICAgICArK2pvaW5lZFF1YWxpZmllci5sb2NhdGlvbnNTcGVjaWZpZWQ7Cisg
ICAgfQorICAgIGlmIChyaWdodFF1YWxpZmllci5tYXRyaXhQYWNraW5nICE9IEVtcFVuc3BlY2lm
aWVkKQorICAgIHsKKyAgICAgICAgam9pbmVkUXVhbGlmaWVyLm1hdHJpeFBhY2tpbmcgPSByaWdo
dFF1YWxpZmllci5tYXRyaXhQYWNraW5nOworICAgIH0KKyAgICBpZiAocmlnaHRRdWFsaWZpZXIu
YmxvY2tTdG9yYWdlICE9IEVic1Vuc3BlY2lmaWVkKQorICAgIHsKKyAgICAgICAgam9pbmVkUXVh
bGlmaWVyLmJsb2NrU3RvcmFnZSA9IHJpZ2h0UXVhbGlmaWVyLmJsb2NrU3RvcmFnZTsKKyAgICB9
CisKKyAgICBmb3IgKHNpemVfdCBpID0gMHU7IGkgPCByaWdodFF1YWxpZmllci5sb2NhbFNpemUu
c2l6ZSgpOyArK2kpCisgICAgeworICAgICAgICBpZiAocmlnaHRRdWFsaWZpZXIubG9jYWxTaXpl
W2ldICE9IC0xKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoam9pbmVkUXVhbGlmaWVyLmxv
Y2FsU2l6ZVtpXSAhPSAtMSAmJgorICAgICAgICAgICAgICAgIGpvaW5lZFF1YWxpZmllci5sb2Nh
bFNpemVbaV0gIT0gcmlnaHRRdWFsaWZpZXIubG9jYWxTaXplW2ldKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGRpYWdub3N0aWNzLT5lcnJvcihyaWdodFF1YWxpZmllckxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IGhhdmUgbXVsdGlw
bGUgZGlmZmVyZW50IHdvcmsgZ3JvdXAgc2l6ZSBzcGVjaWZpZXJzIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2V0V29ya0dyb3VwU2l6ZVN0cmluZyhpKSwgIiIpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgam9pbmVkUXVhbGlmaWVyLmxvY2FsU2l6ZVtpXSA9IHJp
Z2h0UXVhbGlmaWVyLmxvY2FsU2l6ZVtpXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVy
biBqb2luZWRRdWFsaWZpZXI7Cit9Cit9ICAvLyBuYW1lc3BhY2Ugc2gKKworbmFtZXNwYWNlCit7
CisKKy8vIEdMU0wgRVMgMy4xMCBkb2VzIG5vdCBpbXBvc2UgYSBzdHJpY3Qgb3JkZXIgb24gdHlw
ZSBxdWFsaWZpZXJzIGFuZCBhbGxvd3MgbXVsdGlwbGUgbGF5b3V0CisvLyBkZWNsYXJhdGlvbnMu
CisvLyBHTFNMIEVTIDMuMTAgUmV2aXNpb24gNCwgNC4xMCBPcmRlciBvZiBRdWFsaWZpY2F0aW9u
Citib29sIEFyZVR5cGVRdWFsaWZpZXJDaGVja3NSZWxheGVkKGludCBzaGFkZXJWZXJzaW9uKQor
eworICAgIHJldHVybiBzaGFkZXJWZXJzaW9uID49IDMxMDsKK30KKworI2lmIGRlZmluZWQoQU5H
TEVfRU5BQkxFX0FTU0VSVFMpCitib29sIElzU2NvcGVRdWFsaWZpZXIoVFF1YWxpZmllciBxdWFs
aWZpZXIpCit7CisgICAgcmV0dXJuIHF1YWxpZmllciA9PSBFdnFHbG9iYWwgfHwgcXVhbGlmaWVy
ID09IEV2cVRlbXBvcmFyeTsKK30KKworYm9vbCBJc1Njb3BlUXVhbGlmaWVyV3JhcHBlcihjb25z
dCBUUXVhbGlmaWVyV3JhcHBlckJhc2UgKnF1YWxpZmllcikKK3sKKyAgICBpZiAocXVhbGlmaWVy
LT5nZXRUeXBlKCkgIT0gUXRTdG9yYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgY29u
c3QgVFN0b3JhZ2VRdWFsaWZpZXJXcmFwcGVyICpzdG9yYWdlUXVhbGlmaWVyID0KKyAgICAgICAg
c3RhdGljX2Nhc3Q8Y29uc3QgVFN0b3JhZ2VRdWFsaWZpZXJXcmFwcGVyICo+KHF1YWxpZmllcik7
CisgICAgVFF1YWxpZmllciBxID0gc3RvcmFnZVF1YWxpZmllci0+Z2V0UXVhbGlmaWVyKCk7Cisg
ICAgcmV0dXJuIElzU2NvcGVRdWFsaWZpZXIocSk7Cit9CisKKy8vIFJldHVybnMgdHJ1ZSBpZiB0
aGUgaW52YXJpYW50IGZvciB0aGUgcXVhbGlmaWVyIHNlcXVlbmNlIGhvbGRzCitib29sIElzSW52
YXJpYW50Q29ycmVjdChjb25zdCBUVHlwZVF1YWxpZmllckJ1aWxkZXI6OlF1YWxpZmllclNlcXVl
bmNlICZxdWFsaWZpZXJzKQoreworICAgIC8vIFdlIHNob3VsZCBoYXZlIGF0IGxlYXN0IG9uZSBx
dWFsaWZpZXIuCisgICAgLy8gVGhlIGZpcnN0IHF1YWxpZmllciBhbHdheXMgdGVsbHMgdGhlIHNj
b3BlLgorICAgIHJldHVybiBxdWFsaWZpZXJzLnNpemUoKSA+PSAxICYmIElzU2NvcGVRdWFsaWZp
ZXJXcmFwcGVyKHF1YWxpZmllcnNbMF0pOworfQorI2VuZGlmCisKKy8vIFJldHVybnMgdHJ1ZSBp
ZiB0aGVyZSBhcmUgcXVhbGlmaWVycyB3aGljaCBoYXZlIGJlZW4gc3BlY2lmaWVkIG11bHRpcGxl
IHRpbWVzCisvLyBJZiBhcmVRdWFsaWZpZXJDaGVja3NSZWxheGVkIGlzIHNldCB0byB0cnVlLCB0
aGVuIGxheW91dCBxdWFsaWZpZXIgcmVwZXRpdGlvbiBpcyBhbGxvd2VkLgorYm9vbCBIYXNSZXBl
YXRpbmdRdWFsaWZpZXJzKGNvbnN0IFRUeXBlUXVhbGlmaWVyQnVpbGRlcjo6UXVhbGlmaWVyU2Vx
dWVuY2UgJnF1YWxpZmllcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhcmVR
dWFsaWZpZXJDaGVja3NSZWxheGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
c3RyaW5nICplcnJvck1lc3NhZ2UpCit7CisgICAgYm9vbCBpbnZhcmlhbnRGb3VuZCAgICAgPSBm
YWxzZTsKKyAgICBib29sIHByZWNpc2lvbkZvdW5kICAgICA9IGZhbHNlOworICAgIGJvb2wgbGF5
b3V0Rm91bmQgICAgICAgID0gZmFsc2U7CisgICAgYm9vbCBpbnRlcnBvbGF0aW9uRm91bmQgPSBm
YWxzZTsKKworICAgIHVuc2lnbmVkIGludCBsb2NhdGlvbnNTcGVjaWZpZWQgPSAwOworICAgIGJv
b2wgaXNPdXQgICAgICAgICAgICAgICAgICAgICAgPSBmYWxzZTsKKworICAgIC8vIFRoZSBpdGVy
YXRpb24gc3RhcnRzIGZyb20gb25lIHNpbmNlIHRoZSBmaXJzdCBxdWFsaWZpZXIgb25seSByZXZl
YWxzIHRoZSBzY29wZSBvZiB0aGUKKyAgICAvLyBleHByZXNzaW9uLiBJdCBpcyBpbnNlcnRlZCBm
aXJzdCB3aGVuZXZlciB0aGUgc2VxdWVuY2UgZ2V0cyBjcmVhdGVkLgorICAgIGZvciAoc2l6ZV90
IGkgPSAxOyBpIDwgcXVhbGlmaWVycy5zaXplKCk7ICsraSkKKyAgICB7CisgICAgICAgIHN3aXRj
aCAocXVhbGlmaWVyc1tpXS0+Z2V0VHlwZSgpKQorICAgICAgICB7CisgICAgICAgICAgICBjYXNl
IFF0SW52YXJpYW50OgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChpbnZhcmlh
bnRGb3VuZCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICplcnJvck1l
c3NhZ2UgPSAiVGhlIGludmFyaWFudCBxdWFsaWZpZXIgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVz
LiI7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBpbnZhcmlhbnRGb3VuZCA9IHRydWU7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFF0UHJlY2lzaW9uOgorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChwcmVjaXNpb25Gb3VuZCkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICplcnJvck1lc3NhZ2UgPSAiVGhlIHByZWNp
c2lvbiBxdWFsaWZpZXIgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVzLiI7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBw
cmVjaXNpb25Gb3VuZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBjYXNlIFF0TGF5b3V0OgorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGlmIChsYXlvdXRGb3VuZCAmJiAhYXJlUXVhbGlmaWVyQ2hlY2tzUmVsYXhlZCkKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICplcnJvck1lc3NhZ2UgPSAiVGhl
IGxheW91dCBxdWFsaWZpZXIgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVzLiI7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBpZiAoaW52YXJpYW50Rm91bmQgJiYgIWFyZVF1YWxpZmllckNoZWNrc1JlbGF4ZWQpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGNvbWJpbmF0aW9uIGlz
IG5vdCBjb3JyZWN0IGFjY29yZGluZyB0byB0aGUgc3ludGF4IHNwZWNpZmllZCBpbiB0aGUKKyAg
ICAgICAgICAgICAgICAgICAgLy8gZm9ybWFsIGdyYW1tYXIgaW4gdGhlIEVTU0wgMy4wMCBzcGVj
LiBJbiBFU1NMIDMuMTAgdGhlIGdyYW1tYXIgZG9lcyBub3QgaGF2ZQorICAgICAgICAgICAgICAg
ICAgICAvLyBhIHNpbWlsYXIgcmVzdHJpY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICplcnJv
ck1lc3NhZ2UgPQorICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBsYXlvdXQgcXVhbGlmaWVy
IGFuZCBpbnZhcmlhbnQgcXVhbGlmaWVyIGNhbm5vdCBjb2V4aXN0IGluIHRoZSBzYW1lICIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJhdGlvbiBhY2NvcmRpbmcgdG8gdGhlIGdyYW1t
YXIuIjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGxheW91dEZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBj
b25zdCBUTGF5b3V0UXVhbGlmaWVyICZjdXJyZW50UXVhbGlmaWVyID0KKyAgICAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgVExheW91dFF1YWxpZmllcldyYXBwZXIgKj4ocXVhbGlm
aWVyc1tpXSktPmdldFF1YWxpZmllcigpOworICAgICAgICAgICAgICAgIGxvY2F0aW9uc1NwZWNp
ZmllZCArPSBjdXJyZW50UXVhbGlmaWVyLmxvY2F0aW9uc1NwZWNpZmllZDsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgUXRJbnRlcnBvbGF0
aW9uOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vICdjZW50cm9pZCcgaXMgdHJl
YXRlZCBhcyBhIHN0b3JhZ2UgcXVhbGlmaWVyCisgICAgICAgICAgICAgICAgLy8gJ2ZsYXQgY2Vu
dHJvaWQnIHdpbGwgYmUgc3F1YXNoZWQgdG8gJ2ZsYXQnCisgICAgICAgICAgICAgICAgLy8gJ3Nt
b290aCBjZW50cm9pZCcgd2lsbCBiZSBzcXVhc2hlZCB0byAnY2VudHJvaWQnCisgICAgICAgICAg
ICAgICAgaWYgKGludGVycG9sYXRpb25Gb3VuZCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICplcnJvck1lc3NhZ2UgPSAiVGhlIGludGVycG9sYXRpb24gcXVhbGlmaWVy
IHNwZWNpZmllZCBtdWx0aXBsZSB0aW1lcy4iOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaW50ZXJwb2xhdGlvbkZv
dW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGNhc2UgUXRTdG9yYWdlOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8v
IEdvIG92ZXIgYWxsIG9mIHRoZSBzdG9yYWdlIHF1YWxpZmllcnMgdXAgdW50aWwgdGhlIGN1cnJl
bnQgb25lIGFuZCBjaGVjayBmb3IKKyAgICAgICAgICAgICAgICAvLyByZXBldGl0aW9ucy4KKyAg
ICAgICAgICAgICAgICBUUXVhbGlmaWVyIGN1cnJlbnRRdWFsaWZpZXIgPQorICAgICAgICAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBUU3RvcmFnZVF1YWxpZmllcldyYXBwZXIgKj4ocXVh
bGlmaWVyc1tpXSktPmdldFF1YWxpZmllcigpOworICAgICAgICAgICAgICAgIGlmIChjdXJyZW50
UXVhbGlmaWVyID09IEV2cVZlcnRleE91dCB8fCBjdXJyZW50UXVhbGlmaWVyID09IEV2cUZyYWdt
ZW50T3V0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaXNPdXQgPSB0
cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0g
MTsgaiA8IGk7ICsraikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChxdWFsaWZpZXJzW2pdLT5nZXRUeXBlKCkgPT0gUXRTdG9yYWdlKQorICAgICAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RvcmFnZVF1YWxpZmllcldy
YXBwZXIgKnByZXZpb3VzUXVhbGlmaWVyV3JhcHBlciA9CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgVFN0b3JhZ2VRdWFsaWZpZXJXcmFwcGVyICo+KHF1YWxp
ZmllcnNbal0pOworICAgICAgICAgICAgICAgICAgICAgICAgVFF1YWxpZmllciBwcmV2aW91c1F1
YWxpZmllciA9IHByZXZpb3VzUXVhbGlmaWVyV3JhcHBlci0+Z2V0UXVhbGlmaWVyKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFF1YWxpZmllciA9PSBwcmV2aW91c1F1YWxp
ZmllcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqZXJyb3JNZXNzYWdlID0gcHJldmlvdXNRdWFsaWZpZXJXcmFwcGVyLT5nZXRRdWFsaWZp
ZXJTdHJpbmcoKS5jX3N0cigpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICplcnJvck1l
c3NhZ2UgKz0gIiBzcGVjaWZpZWQgbXVsdGlwbGUgdGltZXMiOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGxvY2F0aW9uc1NwZWNp
ZmllZCA+IDEgJiYgaXNPdXQpCisgICAgeworICAgICAgICAvLyBHTFNMIEVTIDMuMDAuNiBzZWN0
aW9uIDQuMy44LjIgT3V0cHV0IExheW91dCBRdWFsaWZpZXJzCisgICAgICAgIC8vIEdMU0wgRVMg
My4xMCBzZWN0aW9uIDQuNC4yIE91dHB1dCBMYXlvdXQgUXVhbGlmaWVycworICAgICAgICAvLyAi
VGhlIHF1YWxpZmllciBtYXkgYXBwZWFyIGF0IG1vc3Qgb25jZSB3aXRoaW4gYSBkZWNsYXJhdGlv
bi4iCisgICAgICAgICplcnJvck1lc3NhZ2UgPSAiT3V0cHV0IGxheW91dCBsb2NhdGlvbiBzcGVj
aWZpZWQgbXVsdGlwbGUgdGltZXMuIjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCisvLyBHTFNMIEVTIDMuMDBfNiwgNC43IE9yZGVyIG9mIFF1
YWxpZmljYXRpb24KKy8vIFRoZSBjb3JyZWN0IG9yZGVyIG9mIHF1YWxpZmllcnMgaXM6CisvLyBp
bnZhcmlhbnQtcXVhbGlmaWVyIGludGVycG9sYXRpb24tcXVhbGlmaWVyIHN0b3JhZ2UtcXVhbGlm
aWVyIHByZWNpc2lvbi1xdWFsaWZpZXIKKy8vIGxheW91dC1xdWFsaWZpZXIgaGFzIHRvIGJlIGJl
Zm9yZSBzdG9yYWdlLXF1YWxpZmllci4KK2Jvb2wgQXJlUXVhbGlmaWVyc0luT3JkZXIoY29uc3Qg
VFR5cGVRdWFsaWZpZXJCdWlsZGVyOjpRdWFsaWZpZXJTZXF1ZW5jZSAmcXVhbGlmaWVycywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgKmVycm9yTWVzc2FnZSkKK3sKKyAg
ICBib29sIGZvdW5kSW50ZXJwb2xhdGlvbiA9IGZhbHNlOworICAgIGJvb2wgZm91bmRTdG9yYWdl
ICAgICAgID0gZmFsc2U7CisgICAgYm9vbCBmb3VuZFByZWNpc2lvbiAgICAgPSBmYWxzZTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IHF1YWxpZmllcnMuc2l6ZSgpOyArK2kpCisgICAgewor
ICAgICAgICBzd2l0Y2ggKHF1YWxpZmllcnNbaV0tPmdldFR5cGUoKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgY2FzZSBRdEludmFyaWFudDoKKyAgICAgICAgICAgICAgICBpZiAoZm91bmRJbnRl
cnBvbGF0aW9uIHx8IGZvdW5kU3RvcmFnZSB8fCBmb3VuZFByZWNpc2lvbikKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICplcnJvck1lc3NhZ2UgPSAiVGhlIGludmFyaWFu
dCBxdWFsaWZpZXIgaGFzIHRvIGJlIGZpcnN0IGluIHRoZSBleHByZXNzaW9uLiI7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFF0SW50ZXJwb2xhdGlvbjoKKyAgICAgICAg
ICAgICAgICBpZiAoZm91bmRTdG9yYWdlKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgKmVycm9yTWVzc2FnZSA9ICJTdG9yYWdlIHF1YWxpZmllcnMgaGF2ZSB0byBiZSBh
ZnRlciBpbnRlcnBvbGF0aW9uIHF1YWxpZmllcnMuIjsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChm
b3VuZFByZWNpc2lvbikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICpl
cnJvck1lc3NhZ2UgPQorICAgICAgICAgICAgICAgICAgICAgICAgIlByZWNpc2lvbiBxdWFsaWZp
ZXJzIGhhdmUgdG8gYmUgYWZ0ZXIgaW50ZXJwb2xhdGlvbiBxdWFsaWZpZXJzLiI7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgZm91bmRJbnRlcnBvbGF0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgUXRMYXlvdXQ6CisgICAgICAgICAgICAgICAgaWYgKGZvdW5kU3Rv
cmFnZSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICplcnJvck1lc3Nh
Z2UgPSAiU3RvcmFnZSBxdWFsaWZpZXJzIGhhdmUgdG8gYmUgYWZ0ZXIgbGF5b3V0IHF1YWxpZmll
cnMuIjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChmb3VuZFByZWNpc2lvbikKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICplcnJvck1lc3NhZ2UgPSAiUHJlY2lzaW9uIHF1
YWxpZmllcnMgaGF2ZSB0byBiZSBhZnRlciBsYXlvdXQgcXVhbGlmaWVycy4iOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBRdFN0b3JhZ2U6CisgICAgICAgICAgICAgICAg
aWYgKGZvdW5kUHJlY2lzaW9uKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgKmVycm9yTWVzc2FnZSA9ICJQcmVjaXNpb24gcXVhbGlmaWVycyBoYXZlIHRvIGJlIGFmdGVy
IHN0b3JhZ2UgcXVhbGlmaWVycy4iOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZvdW5kU3RvcmFnZSA9IHRydWU7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFF0UHJlY2lzaW9uOgor
ICAgICAgICAgICAgICAgIGZvdW5kUHJlY2lzaW9uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUo
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RydWN0IFF1YWxp
ZmllckNvbXBhcmF0b3IKK3sKKyAgICBib29sIG9wZXJhdG9yKCkoY29uc3QgVFF1YWxpZmllcldy
YXBwZXJCYXNlICpxMSwgY29uc3QgVFF1YWxpZmllcldyYXBwZXJCYXNlICpxMikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBxMS0+Z2V0UmFuaygpIDwgcTItPmdldFJhbmsoKTsKKyAgICB9Cit9Owor
Cit2b2lkIFNvcnRTZXF1ZW5jZShUVHlwZVF1YWxpZmllckJ1aWxkZXI6OlF1YWxpZmllclNlcXVl
bmNlICZxdWFsaWZpZXJzKQoreworICAgIC8vIFdlIG5lZWQgYSBzdGFibGUgc29ydGluZyBhbGdv
cml0aG0gc2luY2UgdGhlIG9yZGVyIG9mIGxheW91dC1xdWFsaWZpZXIgZGVjbGFyYXRpb25zIG1h
dHRlci4KKyAgICAvLyBUaGUgc29ydGluZyBzdGFydHMgZnJvbSBpbmRleCAxLCBpbnN0ZWFkIG9m
IDAsIHNpbmNlIHRoZSBlbGVtZW50IGF0IGluZGV4IDAgdGVsbHMgdGhlIHNjb3BlCisgICAgLy8g
YW5kIHdlIGFsd2F5cyB3YW50IGl0IHRvIGJlIGZpcnN0LgorICAgIHN0ZDo6c3RhYmxlX3NvcnQo
cXVhbGlmaWVycy5iZWdpbigpICsgMSwgcXVhbGlmaWVycy5lbmQoKSwgUXVhbGlmaWVyQ29tcGFy
YXRvcigpKTsKK30KKworLy8gSGFuZGxlcyB0aGUgam9pbmluZyBvZiBzdG9yYWdlIHF1YWxpZmll
cnMgZm9yIHZhcmlhYmxlcy4KK2Jvb2wgSm9pblZhcmlhYmxlU3RvcmFnZVF1YWxpZmllcihUUXVh
bGlmaWVyICpqb2luZWRRdWFsaWZpZXIsIFRRdWFsaWZpZXIgc3RvcmFnZVF1YWxpZmllcikKK3sK
KyAgICBzd2l0Y2ggKCpqb2luZWRRdWFsaWZpZXIpCisgICAgeworICAgICAgICBjYXNlIEV2cUds
b2JhbDoKKyAgICAgICAgICAgICpqb2luZWRRdWFsaWZpZXIgPSBzdG9yYWdlUXVhbGlmaWVyOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRXZxVGVtcG9yYXJ5OgorICAgICAgICB7
CisgICAgICAgICAgICBzd2l0Y2ggKHN0b3JhZ2VRdWFsaWZpZXIpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgY2FzZSBFdnFDb25zdDoKKyAgICAgICAgICAgICAgICAgICAgKmpvaW5l
ZFF1YWxpZmllciA9IHN0b3JhZ2VRdWFsaWZpZXI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgRXZxU21vb3RoOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKHN0b3Jh
Z2VRdWFsaWZpZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBFdnFDZW50
cm9pZDoKKyAgICAgICAgICAgICAgICAgICAgKmpvaW5lZFF1YWxpZmllciA9IEV2cUNlbnRyb2lk
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEV2cVZl
cnRleE91dDoKKyAgICAgICAgICAgICAgICAgICAgKmpvaW5lZFF1YWxpZmllciA9IEV2cVNtb290
aE91dDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBF
dnFGcmFnbWVudEluOgorICAgICAgICAgICAgICAgICAgICAqam9pbmVkUXVhbGlmaWVyID0gRXZx
U21vb3RoSW47CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRXZxRmxhdDoKKyAg
ICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChzdG9yYWdlUXVhbGlmaWVyKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGNhc2UgRXZxQ2VudHJvaWQ6CisgICAgICAgICAgICAgICAg
ICAgICpqb2luZWRRdWFsaWZpZXIgPSBFdnFGbGF0OworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBjYXNlIEV2cVZlcnRleE91dDoKKyAgICAgICAgICAgICAgICAg
ICAgKmpvaW5lZFF1YWxpZmllciA9IEV2cUZsYXRPdXQ7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRXZxRnJhZ21lbnRJbjoKKyAgICAgICAgICAgICAg
ICAgICAgKmpvaW5lZFF1YWxpZmllciA9IEV2cUZsYXRJbjsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBFdnFDZW50cm9pZDoKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNo
IChzdG9yYWdlUXVhbGlmaWVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2Ug
RXZxVmVydGV4T3V0OgorICAgICAgICAgICAgICAgICAgICAqam9pbmVkUXVhbGlmaWVyID0gRXZx
Q2VudHJvaWRPdXQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2UgRXZxRnJhZ21lbnRJbjoKKyAgICAgICAgICAgICAgICAgICAgKmpvaW5lZFF1YWxpZmll
ciA9IEV2cUNlbnRyb2lkSW47CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQor
CisvLyBIYW5kbGVzIHRoZSBqb2luaW5nIG9mIHN0b3JhZ2UgcXVhbGlmaWVycyBmb3IgYSBwYXJh
bWV0ZXIgaW4gYSBmdW5jdGlvbi4KK2Jvb2wgSm9pblBhcmFtZXRlclN0b3JhZ2VRdWFsaWZpZXIo
VFF1YWxpZmllciAqam9pbmVkUXVhbGlmaWVyLCBUUXVhbGlmaWVyIHN0b3JhZ2VRdWFsaWZpZXIp
Cit7CisgICAgc3dpdGNoICgqam9pbmVkUXVhbGlmaWVyKQorICAgIHsKKyAgICAgICAgY2FzZSBF
dnFUZW1wb3Jhcnk6CisgICAgICAgICAgICAqam9pbmVkUXVhbGlmaWVyID0gc3RvcmFnZVF1YWxp
ZmllcjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEV2cUNvbnN0OgorICAgICAg
ICB7CisgICAgICAgICAgICBzd2l0Y2ggKHN0b3JhZ2VRdWFsaWZpZXIpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgY2FzZSBFdnFJbjoKKyAgICAgICAgICAgICAgICAgICAgKmpvaW5l
ZFF1YWxpZmllciA9IEV2cUNvbnN0UmVhZE9ubHk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVy
biB0cnVlOworfQorCitUVHlwZVF1YWxpZmllciBHZXRWYXJpYWJsZVR5cGVRdWFsaWZpZXJGcm9t
U29ydGVkU2VxdWVuY2UoCisgICAgY29uc3QgVFR5cGVRdWFsaWZpZXJCdWlsZGVyOjpRdWFsaWZp
ZXJTZXF1ZW5jZSAmc29ydGVkU2VxdWVuY2UsCisgICAgVERpYWdub3N0aWNzICpkaWFnbm9zdGlj
cykKK3sKKyAgICBUVHlwZVF1YWxpZmllciB0eXBlUXVhbGlmaWVyKAorICAgICAgICBzdGF0aWNf
Y2FzdDxjb25zdCBUU3RvcmFnZVF1YWxpZmllcldyYXBwZXIgKj4oc29ydGVkU2VxdWVuY2VbMF0p
LT5nZXRRdWFsaWZpZXIoKSwKKyAgICAgICAgc29ydGVkU2VxdWVuY2VbMF0tPmdldExpbmUoKSk7
CisgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBzb3J0ZWRTZXF1ZW5jZS5zaXplKCk7ICsraSkK
KyAgICB7CisgICAgICAgIGNvbnN0IFRRdWFsaWZpZXJXcmFwcGVyQmFzZSAqcXVhbGlmaWVyID0g
c29ydGVkU2VxdWVuY2VbaV07CisgICAgICAgIGJvb2wgaXNRdWFsaWZpZXJWYWxpZCAgICAgICAg
ICAgICAgICAgID0gZmFsc2U7CisgICAgICAgIHN3aXRjaCAocXVhbGlmaWVyLT5nZXRUeXBlKCkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgUXRJbnZhcmlhbnQ6CisgICAgICAgICAgICAg
ICAgaXNRdWFsaWZpZXJWYWxpZCAgICAgICAgPSB0cnVlOworICAgICAgICAgICAgICAgIHR5cGVR
dWFsaWZpZXIuaW52YXJpYW50ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgUXRJbnRlcnBvbGF0aW9uOgorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHN3aXRjaCAodHlwZVF1YWxpZmllci5xdWFsaWZpZXIpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBjYXNlIEV2cUdsb2JhbDoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlzUXVhbGlmaWVyVmFsaWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgdHlw
ZVF1YWxpZmllci5xdWFsaWZpZXIgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PGNvbnN0IFRJbnRlcnBvbGF0aW9uUXVhbGlmaWVyV3JhcHBlciAqPihxdWFsaWZpZXIp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+Z2V0UXVhbGlmaWVyKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlzUXVhbGlmaWVyVmFsaWQgPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBjYXNlIFF0TGF5b3V0OgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNv
bnN0IFRMYXlvdXRRdWFsaWZpZXJXcmFwcGVyICpsYXlvdXRRdWFsaWZpZXJXcmFwcGVyID0KKyAg
ICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgVExheW91dFF1YWxpZmllcldyYXBw
ZXIgKj4ocXVhbGlmaWVyKTsKKyAgICAgICAgICAgICAgICBpc1F1YWxpZmllclZhbGlkICAgICAg
ICAgICAgICA9IHRydWU7CisgICAgICAgICAgICAgICAgdHlwZVF1YWxpZmllci5sYXlvdXRRdWFs
aWZpZXIgPSBzaDo6Sm9pbkxheW91dFF1YWxpZmllcnMoCisgICAgICAgICAgICAgICAgICAgIHR5
cGVRdWFsaWZpZXIubGF5b3V0UXVhbGlmaWVyLCBsYXlvdXRRdWFsaWZpZXJXcmFwcGVyLT5nZXRR
dWFsaWZpZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgbGF5b3V0UXVhbGlmaWVyV3JhcHBlci0+
Z2V0TGluZSgpLCBkaWFnbm9zdGljcyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBjYXNlIFF0U3RvcmFnZToKKyAgICAgICAgICAgICAgICBpc1F1
YWxpZmllclZhbGlkID0gSm9pblZhcmlhYmxlU3RvcmFnZVF1YWxpZmllcigKKyAgICAgICAgICAg
ICAgICAgICAgJnR5cGVRdWFsaWZpZXIucXVhbGlmaWVyLAorICAgICAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxjb25zdCBUU3RvcmFnZVF1YWxpZmllcldyYXBwZXIgKj4ocXVhbGlmaWVyKS0+
Z2V0UXVhbGlmaWVyKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBRdFByZWNpc2lvbjoKKyAgICAgICAgICAgICAgICBpc1F1YWxpZmllclZhbGlkID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICB0eXBlUXVhbGlmaWVyLnByZWNpc2lvbiA9CisgICAgICAgICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFRQcmVjaXNpb25RdWFsaWZpZXJXcmFwcGVyICo+KHF1
YWxpZmllciktPmdldFF1YWxpZmllcigpOworICAgICAgICAgICAgICAgIEFTU0VSVCh0eXBlUXVh
bGlmaWVyLnByZWNpc2lvbiAhPSBFYnBVbmRlZmluZWQpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgICAgICB9CisgICAgICAgIGlmICghaXNRdWFsaWZpZXJWYWxpZCkKKyAgICAgICAgeworICAg
ICAgICAgICAgY29uc3QgVFN0cmluZyAmcXVhbGlmaWVyU3RyaW5nID0gcXVhbGlmaWVyLT5nZXRR
dWFsaWZpZXJTdHJpbmcoKTsKKyAgICAgICAgICAgIGRpYWdub3N0aWNzLT5lcnJvcihxdWFsaWZp
ZXItPmdldExpbmUoKSwgImludmFsaWQgcXVhbGlmaWVyIGNvbWJpbmF0aW9uIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBxdWFsaWZpZXJTdHJpbmcuY19zdHIoKSwgIiIpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHR5cGVRdWFsaWZp
ZXI7Cit9CisKK1RUeXBlUXVhbGlmaWVyIEdldFBhcmFtZXRlclR5cGVRdWFsaWZpZXJGcm9tU29y
dGVkU2VxdWVuY2UoCisgICAgY29uc3QgVFR5cGVRdWFsaWZpZXJCdWlsZGVyOjpRdWFsaWZpZXJT
ZXF1ZW5jZSAmc29ydGVkU2VxdWVuY2UsCisgICAgVERpYWdub3N0aWNzICpkaWFnbm9zdGljcykK
K3sKKyAgICBUVHlwZVF1YWxpZmllciB0eXBlUXVhbGlmaWVyKEV2cVRlbXBvcmFyeSwgc29ydGVk
U2VxdWVuY2VbMF0tPmdldExpbmUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBzb3J0
ZWRTZXF1ZW5jZS5zaXplKCk7ICsraSkKKyAgICB7CisgICAgICAgIGNvbnN0IFRRdWFsaWZpZXJX
cmFwcGVyQmFzZSAqcXVhbGlmaWVyID0gc29ydGVkU2VxdWVuY2VbaV07CisgICAgICAgIGJvb2wg
aXNRdWFsaWZpZXJWYWxpZCAgICAgICAgICAgICAgICAgID0gZmFsc2U7CisgICAgICAgIHN3aXRj
aCAocXVhbGlmaWVyLT5nZXRUeXBlKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgUXRJ
bnZhcmlhbnQ6CisgICAgICAgICAgICBjYXNlIFF0SW50ZXJwb2xhdGlvbjoKKyAgICAgICAgICAg
IGNhc2UgUXRMYXlvdXQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IFF0U3RvcmFnZToKKyAgICAgICAgICAgICAgICBpc1F1YWxpZmllclZhbGlkID0gSm9pblBhcmFt
ZXRlclN0b3JhZ2VRdWFsaWZpZXIoCisgICAgICAgICAgICAgICAgICAgICZ0eXBlUXVhbGlmaWVy
LnF1YWxpZmllciwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgVFN0b3Jh
Z2VRdWFsaWZpZXJXcmFwcGVyICo+KHF1YWxpZmllciktPmdldFF1YWxpZmllcigpKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgUXRQcmVjaXNpb246CisgICAgICAg
ICAgICAgICAgaXNRdWFsaWZpZXJWYWxpZCA9IHRydWU7CisgICAgICAgICAgICAgICAgdHlwZVF1
YWxpZmllci5wcmVjaXNpb24gPQorICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25z
dCBUUHJlY2lzaW9uUXVhbGlmaWVyV3JhcHBlciAqPihxdWFsaWZpZXIpLT5nZXRRdWFsaWZpZXIo
KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQodHlwZVF1YWxpZmllci5wcmVjaXNpb24gIT0gRWJw
VW5kZWZpbmVkKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
IWlzUXVhbGlmaWVyVmFsaWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcg
JnF1YWxpZmllclN0cmluZyA9IHF1YWxpZmllci0+Z2V0UXVhbGlmaWVyU3RyaW5nKCk7CisgICAg
ICAgICAgICBkaWFnbm9zdGljcy0+ZXJyb3IocXVhbGlmaWVyLT5nZXRMaW5lKCksICJpbnZhbGlk
IHBhcmFtZXRlciBxdWFsaWZpZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1
YWxpZmllclN0cmluZy5jX3N0cigpLCAiIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHN3aXRjaCAodHlwZVF1YWxpZmllci5xdWFsaWZpZXIpCisgICAgewor
ICAgICAgICBjYXNlIEV2cUluOgorICAgICAgICBjYXNlIEV2cUNvbnN0UmVhZE9ubHk6ICAvLyBj
b25zdCBpbgorICAgICAgICBjYXNlIEV2cU91dDoKKyAgICAgICAgY2FzZSBFdnFJbk91dDoKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEV2cUNvbnN0OgorICAgICAgICAgICAgdHlw
ZVF1YWxpZmllci5xdWFsaWZpZXIgPSBFdnFDb25zdFJlYWRPbmx5OworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgRXZxVGVtcG9yYXJ5OgorICAgICAgICAgICAgLy8gbm8gcXVhbGlm
aWVyIGhhcyBiZWVuIHNwZWNpZmllZCwgc2V0IGl0IHRvIEV2cUluIHdoaWNoIGlzIHRoZSBkZWZh
dWx0CisgICAgICAgICAgICB0eXBlUXVhbGlmaWVyLnF1YWxpZmllciA9IEV2cUluOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBkaWFnbm9zdGljcy0+
ZXJyb3Ioc29ydGVkU2VxdWVuY2VbMF0tPmdldExpbmUoKSwgIkludmFsaWQgcGFyYW1ldGVyIHF1
YWxpZmllciAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFF1YWxpZmllclN0
cmluZyh0eXBlUXVhbGlmaWVyLnF1YWxpZmllciksICIiKTsKKyAgICB9CisgICAgcmV0dXJuIHR5
cGVRdWFsaWZpZXI7Cit9Cit9ICAvLyBuYW1lc3BhY2UKKwordW5zaWduZWQgaW50IFRJbnZhcmlh
bnRRdWFsaWZpZXJXcmFwcGVyOjpnZXRSYW5rKCkgY29uc3QKK3sKKyAgICByZXR1cm4gMHU7Cit9
CisKK3Vuc2lnbmVkIGludCBUSW50ZXJwb2xhdGlvblF1YWxpZmllcldyYXBwZXI6OmdldFJhbmso
KSBjb25zdAoreworICAgIHJldHVybiAxdTsKK30KKwordW5zaWduZWQgaW50IFRMYXlvdXRRdWFs
aWZpZXJXcmFwcGVyOjpnZXRSYW5rKCkgY29uc3QKK3sKKyAgICByZXR1cm4gMnU7Cit9CisKK3Vu
c2lnbmVkIGludCBUU3RvcmFnZVF1YWxpZmllcldyYXBwZXI6OmdldFJhbmsoKSBjb25zdAorewor
ICAgIC8vIEZvcmNlIHRoZSAnY2VudHJvaWQnIGF1eGlsYXJ5IHN0b3JhZ2UgcXVhbGlmaWVyIHRv
IGJlIGFsd2F5cyBmaXJzdCBhbW9uZyBhbGwgc3RvcmFnZQorICAgIC8vIHF1YWxpZmllcnMuCisg
ICAgaWYgKG1TdG9yYWdlUXVhbGlmaWVyID09IEV2cUNlbnRyb2lkKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIDN1OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gNHU7Cisg
ICAgfQorfQorCit1bnNpZ25lZCBpbnQgVFByZWNpc2lvblF1YWxpZmllcldyYXBwZXI6OmdldFJh
bmsoKSBjb25zdAoreworICAgIHJldHVybiA1dTsKK30KKworVFR5cGVRdWFsaWZpZXI6OlRUeXBl
UXVhbGlmaWVyKFRRdWFsaWZpZXIgc2NvcGUsIGNvbnN0IFRTb3VyY2VMb2MgJmxvYykKKyAgICA6
IGxheW91dFF1YWxpZmllcihUTGF5b3V0UXVhbGlmaWVyOjpjcmVhdGUoKSksCisgICAgICBwcmVj
aXNpb24oRWJwVW5kZWZpbmVkKSwKKyAgICAgIHF1YWxpZmllcihzY29wZSksCisgICAgICBpbnZh
cmlhbnQoZmFsc2UpLAorICAgICAgbGluZShsb2MpCit7CisgICAgQVNTRVJUKElzU2NvcGVRdWFs
aWZpZXIocXVhbGlmaWVyKSk7Cit9CisKK1RUeXBlUXVhbGlmaWVyQnVpbGRlcjo6VFR5cGVRdWFs
aWZpZXJCdWlsZGVyKGNvbnN0IFRTdG9yYWdlUXVhbGlmaWVyV3JhcHBlciAqc2NvcGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2hhZGVyVmVyc2lv
bikKKyAgICA6IG1TaGFkZXJWZXJzaW9uKHNoYWRlclZlcnNpb24pCit7CisgICAgQVNTRVJUKElz
U2NvcGVRdWFsaWZpZXIoc2NvcGUtPmdldFF1YWxpZmllcigpKSk7CisgICAgbVF1YWxpZmllcnMu
cHVzaF9iYWNrKHNjb3BlKTsKK30KKwordm9pZCBUVHlwZVF1YWxpZmllckJ1aWxkZXI6OmFwcGVu
ZFF1YWxpZmllcihjb25zdCBUUXVhbGlmaWVyV3JhcHBlckJhc2UgKnF1YWxpZmllcikKK3sKKyAg
ICBtUXVhbGlmaWVycy5wdXNoX2JhY2socXVhbGlmaWVyKTsKK30KKworYm9vbCBUVHlwZVF1YWxp
ZmllckJ1aWxkZXI6OmNoZWNrU2VxdWVuY2VJc1ZhbGlkKFREaWFnbm9zdGljcyAqZGlhZ25vc3Rp
Y3MpIGNvbnN0Cit7CisgICAgYm9vbCBhcmVRdWFsaWZpZXJDaGVja3NSZWxheGVkID0gQXJlVHlw
ZVF1YWxpZmllckNoZWNrc1JlbGF4ZWQobVNoYWRlclZlcnNpb24pOworICAgIHN0ZDo6c3RyaW5n
IGVycm9yTWVzc2FnZTsKKyAgICBpZiAoSGFzUmVwZWF0aW5nUXVhbGlmaWVycyhtUXVhbGlmaWVy
cywgYXJlUXVhbGlmaWVyQ2hlY2tzUmVsYXhlZCwgJmVycm9yTWVzc2FnZSkpCisgICAgeworICAg
ICAgICBkaWFnbm9zdGljcy0+ZXJyb3IobVF1YWxpZmllcnNbMF0tPmdldExpbmUoKSwgInF1YWxp
ZmllciBzZXF1ZW5jZSIsIGVycm9yTWVzc2FnZS5jX3N0cigpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFh
cmVRdWFsaWZpZXJDaGVja3NSZWxheGVkICYmICFBcmVRdWFsaWZpZXJzSW5PcmRlcihtUXVhbGlm
aWVycywgJmVycm9yTWVzc2FnZSkpCisgICAgeworICAgICAgICBkaWFnbm9zdGljcy0+ZXJyb3Io
bVF1YWxpZmllcnNbMF0tPmdldExpbmUoKSwgInF1YWxpZmllciBzZXF1ZW5jZSIsIGVycm9yTWVz
c2FnZS5jX3N0cigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK1RUeXBlUXVhbGlm
aWVyIFRUeXBlUXVhbGlmaWVyQnVpbGRlcjo6Z2V0UGFyYW1ldGVyVHlwZVF1YWxpZmllcihURGlh
Z25vc3RpY3MgKmRpYWdub3N0aWNzKSBjb25zdAoreworICAgIEFTU0VSVChJc0ludmFyaWFudENv
cnJlY3QobVF1YWxpZmllcnMpKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8Y29uc3QgVFN0b3Jh
Z2VRdWFsaWZpZXJXcmFwcGVyICo+KG1RdWFsaWZpZXJzWzBdKS0+Z2V0UXVhbGlmaWVyKCkgPT0K
KyAgICAgICAgICAgRXZxVGVtcG9yYXJ5KTsKKworICAgIGlmICghY2hlY2tTZXF1ZW5jZUlzVmFs
aWQoZGlhZ25vc3RpY3MpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFRUeXBlUXVhbGlmaWVyKEV2
cVRlbXBvcmFyeSwgbVF1YWxpZmllcnNbMF0tPmdldExpbmUoKSk7CisgICAgfQorCisgICAgLy8g
SWYgdGhlIHF1YWxpZmllciBjaGVja3MgYXJlIHJlbGF4ZWQsIHRoZW4gaXQgaXMgZWFzaWVyIHRv
IHNvcnQgdGhlIHF1YWxpZmllcnMgc28KKyAgICAvLyB0aGF0IHRoZSBvcmRlciBpbXBvc2VkIGJ5
IHRoZSBHTFNMIEVTIDMuMDAgc3BlYyBpcyBrZXB0LiBUaGVuIHdlIGNhbiB1c2UgdGhlIHNhbWUg
Y29kZSB0bworICAgIC8vIGNvbWJpbmUgdGhlIHF1YWxpZmllcnMuCisgICAgaWYgKEFyZVR5cGVR
dWFsaWZpZXJDaGVja3NSZWxheGVkKG1TaGFkZXJWZXJzaW9uKSkKKyAgICB7CisgICAgICAgIC8v
IENvcHkgdGhlIHF1YWxpZmllciBzZXF1ZW5jZSBzbyB0aGF0IHdlIGNhbiBzb3J0IHRoZW0uCisg
ICAgICAgIFF1YWxpZmllclNlcXVlbmNlIHNvcnRlZFF1YWxpZmllclNlcXVlbmNlID0gbVF1YWxp
ZmllcnM7CisgICAgICAgIFNvcnRTZXF1ZW5jZShzb3J0ZWRRdWFsaWZpZXJTZXF1ZW5jZSk7Cisg
ICAgICAgIHJldHVybiBHZXRQYXJhbWV0ZXJUeXBlUXVhbGlmaWVyRnJvbVNvcnRlZFNlcXVlbmNl
KHNvcnRlZFF1YWxpZmllclNlcXVlbmNlLCBkaWFnbm9zdGljcyk7CisgICAgfQorICAgIHJldHVy
biBHZXRQYXJhbWV0ZXJUeXBlUXVhbGlmaWVyRnJvbVNvcnRlZFNlcXVlbmNlKG1RdWFsaWZpZXJz
LCBkaWFnbm9zdGljcyk7Cit9CisKK1RUeXBlUXVhbGlmaWVyIFRUeXBlUXVhbGlmaWVyQnVpbGRl
cjo6Z2V0VmFyaWFibGVUeXBlUXVhbGlmaWVyKFREaWFnbm9zdGljcyAqZGlhZ25vc3RpY3MpIGNv
bnN0Cit7CisgICAgQVNTRVJUKElzSW52YXJpYW50Q29ycmVjdChtUXVhbGlmaWVycykpOworCisg
ICAgaWYgKCFjaGVja1NlcXVlbmNlSXNWYWxpZChkaWFnbm9zdGljcykpCisgICAgeworICAgICAg
ICByZXR1cm4gVFR5cGVRdWFsaWZpZXIoCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBU
U3RvcmFnZVF1YWxpZmllcldyYXBwZXIgKj4obVF1YWxpZmllcnNbMF0pLT5nZXRRdWFsaWZpZXIo
KSwKKyAgICAgICAgICAgIG1RdWFsaWZpZXJzWzBdLT5nZXRMaW5lKCkpOworICAgIH0KKworICAg
IC8vIElmIHRoZSBxdWFsaWZpZXIgY2hlY2tzIGFyZSByZWxheGVkLCB0aGVuIGl0IGlzIGVhc2ll
ciB0byBzb3J0IHRoZSBxdWFsaWZpZXJzIHNvCisgICAgLy8gdGhhdCB0aGUgb3JkZXIgaW1wb3Nl
ZCBieSB0aGUgR0xTTCBFUyAzLjAwIHNwZWMgaXMga2VwdC4gVGhlbiB3ZSBjYW4gdXNlIHRoZSBz
YW1lIGNvZGUgdG8KKyAgICAvLyBjb21iaW5lIHRoZSBxdWFsaWZpZXJzLgorICAgIGlmIChBcmVU
eXBlUXVhbGlmaWVyQ2hlY2tzUmVsYXhlZChtU2hhZGVyVmVyc2lvbikpCisgICAgeworICAgICAg
ICAvLyBDb3B5IHRoZSBxdWFsaWZpZXIgc2VxdWVuY2Ugc28gdGhhdCB3ZSBjYW4gc29ydCB0aGVt
LgorICAgICAgICBRdWFsaWZpZXJTZXF1ZW5jZSBzb3J0ZWRRdWFsaWZpZXJTZXF1ZW5jZSA9IG1R
dWFsaWZpZXJzOworICAgICAgICBTb3J0U2VxdWVuY2Uoc29ydGVkUXVhbGlmaWVyU2VxdWVuY2Up
OworICAgICAgICByZXR1cm4gR2V0VmFyaWFibGVUeXBlUXVhbGlmaWVyRnJvbVNvcnRlZFNlcXVl
bmNlKHNvcnRlZFF1YWxpZmllclNlcXVlbmNlLCBkaWFnbm9zdGljcyk7CisgICAgfQorICAgIHJl
dHVybiBHZXRWYXJpYWJsZVR5cGVRdWFsaWZpZXJGcm9tU29ydGVkU2VxdWVuY2UobVF1YWxpZmll
cnMsIGRpYWdub3N0aWNzKTsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL1F1YWxpZmllclR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUXVhbGlmaWVyVHlwZXMu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9RdWFsaWZpZXJUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcw
IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFUT1JfUVVB
TElGSUVSX1RZUEVTX0hfCisjZGVmaW5lIENPTVBJTEVSX1RSQU5TTEFUT1JfUVVBTElGSUVSX1RZ
UEVTX0hfCisKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorI2luY2x1ZGUgImNvbXBp
bGVyL3RyYW5zbGF0b3IvQmFzZVR5cGVzLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRv
ci9UeXBlcy5oIgorCitjbGFzcyBURGlhZ25vc3RpY3M7CisKK25hbWVzcGFjZSBzaAoreworVExh
eW91dFF1YWxpZmllciBKb2luTGF5b3V0UXVhbGlmaWVycyhUTGF5b3V0UXVhbGlmaWVyIGxlZnRR
dWFsaWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRMYXlvdXRR
dWFsaWZpZXIgcmlnaHRRdWFsaWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJnJpZ2h0UXVhbGlmaWVyTG9jYXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFREaWFnbm9zdGljcyAqZGlhZ25vc3RpY3Mp
OworfSAgLy8gbmFtZXNwYWNlIHNoCisKK2VudW0gVFF1YWxpZmllclR5cGUKK3sKKyAgICBRdElu
dmFyaWFudCwKKyAgICBRdEludGVycG9sYXRpb24sCisgICAgUXRMYXlvdXQsCisgICAgUXRTdG9y
YWdlLAorICAgIFF0UHJlY2lzaW9uCit9OworCitjbGFzcyBUUXVhbGlmaWVyV3JhcHBlckJhc2Ug
OiBhbmdsZTo6Tm9uQ29weWFibGUKK3sKKyAgcHVibGljOgorICAgIFBPT0xfQUxMT0NBVE9SX05F
V19ERUxFVEUoKTsKKyAgICBUUXVhbGlmaWVyV3JhcHBlckJhc2UoY29uc3QgVFNvdXJjZUxvYyAm
bGluZSkgOiBtTGluZShsaW5lKSB7fQorICAgIHZpcnR1YWwgflRRdWFsaWZpZXJXcmFwcGVyQmFz
ZSgpe307CisgICAgdmlydHVhbCBUUXVhbGlmaWVyVHlwZSBnZXRUeXBlKCkgY29uc3QgICAgID0g
MDsKKyAgICB2aXJ0dWFsIFRTdHJpbmcgZ2V0UXVhbGlmaWVyU3RyaW5nKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFJhbmsoKSBjb25zdCAgICAgICA9IDA7CisgICAg
Y29uc3QgVFNvdXJjZUxvYyAmZ2V0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1MaW5lOyB9CisgIHBy
aXZhdGU6CisgICAgVFNvdXJjZUxvYyBtTGluZTsKK307CisKK2NsYXNzIFRJbnZhcmlhbnRRdWFs
aWZpZXJXcmFwcGVyIGZpbmFsIDogcHVibGljIFRRdWFsaWZpZXJXcmFwcGVyQmFzZQoreworICBw
dWJsaWM6CisgICAgVEludmFyaWFudFF1YWxpZmllcldyYXBwZXIoY29uc3QgVFNvdXJjZUxvYyAm
bGluZSkgOiBUUXVhbGlmaWVyV3JhcHBlckJhc2UobGluZSkge30KKyAgICB+VEludmFyaWFudFF1
YWxpZmllcldyYXBwZXIoKSB7fQorCisgICAgVFF1YWxpZmllclR5cGUgZ2V0VHlwZSgpIGNvbnN0
IHsgcmV0dXJuIFF0SW52YXJpYW50OyB9CisgICAgVFN0cmluZyBnZXRRdWFsaWZpZXJTdHJpbmco
KSBjb25zdCB7IHJldHVybiAiaW52YXJpYW50IjsgfQorICAgIHVuc2lnbmVkIGludCBnZXRSYW5r
KCkgY29uc3Q7Cit9OworCitjbGFzcyBUSW50ZXJwb2xhdGlvblF1YWxpZmllcldyYXBwZXIgZmlu
YWwgOiBwdWJsaWMgVFF1YWxpZmllcldyYXBwZXJCYXNlCit7CisgIHB1YmxpYzoKKyAgICBUSW50
ZXJwb2xhdGlvblF1YWxpZmllcldyYXBwZXIoVFF1YWxpZmllciBpbnRlcnBvbGF0aW9uUXVhbGlm
aWVyLCBjb25zdCBUU291cmNlTG9jICZsaW5lKQorICAgICAgICA6IFRRdWFsaWZpZXJXcmFwcGVy
QmFzZShsaW5lKSwgbUludGVycG9sYXRpb25RdWFsaWZpZXIoaW50ZXJwb2xhdGlvblF1YWxpZmll
cikKKyAgICB7CisgICAgfQorICAgIH5USW50ZXJwb2xhdGlvblF1YWxpZmllcldyYXBwZXIoKSB7
fQorCisgICAgVFF1YWxpZmllclR5cGUgZ2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIFF0SW50ZXJw
b2xhdGlvbjsgfQorICAgIFRTdHJpbmcgZ2V0UXVhbGlmaWVyU3RyaW5nKCkgY29uc3QgeyByZXR1
cm4gOjpnZXRRdWFsaWZpZXJTdHJpbmcobUludGVycG9sYXRpb25RdWFsaWZpZXIpOyB9CisgICAg
VFF1YWxpZmllciBnZXRRdWFsaWZpZXIoKSBjb25zdCB7IHJldHVybiBtSW50ZXJwb2xhdGlvblF1
YWxpZmllcjsgfQorICAgIHVuc2lnbmVkIGludCBnZXRSYW5rKCkgY29uc3Q7CisKKyAgcHJpdmF0
ZToKKyAgICBUUXVhbGlmaWVyIG1JbnRlcnBvbGF0aW9uUXVhbGlmaWVyOworfTsKKworY2xhc3Mg
VExheW91dFF1YWxpZmllcldyYXBwZXIgZmluYWwgOiBwdWJsaWMgVFF1YWxpZmllcldyYXBwZXJC
YXNlCit7CisgIHB1YmxpYzoKKyAgICBUTGF5b3V0UXVhbGlmaWVyV3JhcHBlcihUTGF5b3V0UXVh
bGlmaWVyIGxheW91dFF1YWxpZmllciwgY29uc3QgVFNvdXJjZUxvYyAmbGluZSkKKyAgICAgICAg
OiBUUXVhbGlmaWVyV3JhcHBlckJhc2UobGluZSksIG1MYXlvdXRRdWFsaWZpZXIobGF5b3V0UXVh
bGlmaWVyKQorICAgIHsKKyAgICB9CisgICAgflRMYXlvdXRRdWFsaWZpZXJXcmFwcGVyKCkge30K
KworICAgIFRRdWFsaWZpZXJUeXBlIGdldFR5cGUoKSBjb25zdCB7IHJldHVybiBRdExheW91dDsg
fQorICAgIFRTdHJpbmcgZ2V0UXVhbGlmaWVyU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gImxheW91
dCI7IH0KKyAgICBjb25zdCBUTGF5b3V0UXVhbGlmaWVyICZnZXRRdWFsaWZpZXIoKSBjb25zdCB7
IHJldHVybiBtTGF5b3V0UXVhbGlmaWVyOyB9CisgICAgdW5zaWduZWQgaW50IGdldFJhbmsoKSBj
b25zdDsKKworICBwcml2YXRlOgorICAgIFRMYXlvdXRRdWFsaWZpZXIgbUxheW91dFF1YWxpZmll
cjsKK307CisKK2NsYXNzIFRTdG9yYWdlUXVhbGlmaWVyV3JhcHBlciBmaW5hbCA6IHB1YmxpYyBU
UXVhbGlmaWVyV3JhcHBlckJhc2UKK3sKKyAgcHVibGljOgorICAgIFRTdG9yYWdlUXVhbGlmaWVy
V3JhcHBlcihUUXVhbGlmaWVyIHN0b3JhZ2VRdWFsaWZpZXIsIGNvbnN0IFRTb3VyY2VMb2MgJmxp
bmUpCisgICAgICAgIDogVFF1YWxpZmllcldyYXBwZXJCYXNlKGxpbmUpLCBtU3RvcmFnZVF1YWxp
ZmllcihzdG9yYWdlUXVhbGlmaWVyKQorICAgIHsKKyAgICB9CisgICAgflRTdG9yYWdlUXVhbGlm
aWVyV3JhcHBlcigpIHt9CisKKyAgICBUUXVhbGlmaWVyVHlwZSBnZXRUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gUXRTdG9yYWdlOyB9CisgICAgVFN0cmluZyBnZXRRdWFsaWZpZXJTdHJpbmcoKSBjb25z
dCB7IHJldHVybiA6OmdldFF1YWxpZmllclN0cmluZyhtU3RvcmFnZVF1YWxpZmllcik7IH0KKyAg
ICBUUXVhbGlmaWVyIGdldFF1YWxpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1TdG9yYWdlUXVhbGlm
aWVyOyB9CisgICAgdW5zaWduZWQgaW50IGdldFJhbmsoKSBjb25zdDsKKworICBwcml2YXRlOgor
ICAgIFRRdWFsaWZpZXIgbVN0b3JhZ2VRdWFsaWZpZXI7Cit9OworCitjbGFzcyBUUHJlY2lzaW9u
UXVhbGlmaWVyV3JhcHBlciBmaW5hbCA6IHB1YmxpYyBUUXVhbGlmaWVyV3JhcHBlckJhc2UKK3sK
KyAgcHVibGljOgorICAgIFRQcmVjaXNpb25RdWFsaWZpZXJXcmFwcGVyKFRQcmVjaXNpb24gcHJl
Y2lzaW9uUXVhbGlmaWVyLCBjb25zdCBUU291cmNlTG9jICZsaW5lKQorICAgICAgICA6IFRRdWFs
aWZpZXJXcmFwcGVyQmFzZShsaW5lKSwgbVByZWNpc2lvblF1YWxpZmllcihwcmVjaXNpb25RdWFs
aWZpZXIpCisgICAgeworICAgIH0KKyAgICB+VFByZWNpc2lvblF1YWxpZmllcldyYXBwZXIoKSB7
fQorCisgICAgVFF1YWxpZmllclR5cGUgZ2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIFF0UHJlY2lz
aW9uOyB9CisgICAgVFN0cmluZyBnZXRRdWFsaWZpZXJTdHJpbmcoKSBjb25zdCB7IHJldHVybiA6
OmdldFByZWNpc2lvblN0cmluZyhtUHJlY2lzaW9uUXVhbGlmaWVyKTsgfQorICAgIFRQcmVjaXNp
b24gZ2V0UXVhbGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbVByZWNpc2lvblF1YWxpZmllcjsgfQor
ICAgIHVuc2lnbmVkIGludCBnZXRSYW5rKCkgY29uc3Q7CisKKyAgcHJpdmF0ZToKKyAgICBUUHJl
Y2lzaW9uIG1QcmVjaXNpb25RdWFsaWZpZXI7Cit9OworCisvLyBUVHlwZVF1YWxpZmllciB0aWdo
dGx5IGNvdmVycyB0eXBlX3F1YWxpZmllciBmcm9tIHRoZSBncmFtbWFyCitzdHJ1Y3QgVFR5cGVR
dWFsaWZpZXIKK3sKKyAgICAvLyBpbml0aWFsaXplcyBhbGwgb2YgdGhlIHF1YWxpZmllcnMgYW5k
IHNldHMgdGhlIHNjb3BlCisgICAgVFR5cGVRdWFsaWZpZXIoVFF1YWxpZmllciBzY29wZSwgY29u
c3QgVFNvdXJjZUxvYyAmbG9jKTsKKworICAgIFRMYXlvdXRRdWFsaWZpZXIgbGF5b3V0UXVhbGlm
aWVyOworICAgIFRQcmVjaXNpb24gcHJlY2lzaW9uOworICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVy
OworICAgIGJvb2wgaW52YXJpYW50OworICAgIFRTb3VyY2VMb2MgbGluZTsKK307CisKKy8vIFRU
eXBlUXVhbGlmaWVyQnVpbGRlciBjb250YWlucyBhbGwgb2YgdGhlIHF1YWxpZmllcnMgd2hlbiB0
eXBlX3F1YWxpZmllciBnZXRzIHBhcnNlZC4KKy8vIEl0IGlzIHRvIGJlIHVzZWQgdG8gdmFsaWRh
dGUgdGhlIHF1YWxpZmllciBzZXF1ZW5jZSBhbmQgYnVpbGQgYSBUVHlwZVF1YWxpZmllciBmcm9t
IGl0LgorY2xhc3MgVFR5cGVRdWFsaWZpZXJCdWlsZGVyIDogYW5nbGU6Ok5vbkNvcHlhYmxlCit7
CisgIHB1YmxpYzoKKyAgICB1c2luZyBRdWFsaWZpZXJTZXF1ZW5jZSA9IFRWZWN0b3I8Y29uc3Qg
VFF1YWxpZmllcldyYXBwZXJCYXNlICo+OworCisgIHB1YmxpYzoKKyAgICBQT09MX0FMTE9DQVRP
Ul9ORVdfREVMRVRFKCk7CisgICAgVFR5cGVRdWFsaWZpZXJCdWlsZGVyKGNvbnN0IFRTdG9yYWdl
UXVhbGlmaWVyV3JhcHBlciAqc2NvcGUsIGludCBzaGFkZXJWZXJzaW9uKTsKKyAgICAvLyBBZGRz
IHRoZSBwYXNzZWQgcXVhbGlmaWVyIHRvIHRoZSBlbmQgb2YgdGhlIHNlcXVlbmNlLgorICAgIHZv
aWQgYXBwZW5kUXVhbGlmaWVyKGNvbnN0IFRRdWFsaWZpZXJXcmFwcGVyQmFzZSAqcXVhbGlmaWVy
KTsKKyAgICAvLyBDaGVja3MgZm9yIHRoZSBvcmRlciBvZiBxdWFsaWZpY2F0aW9uIGFuZCByZXBl
YXRpbmcgcXVhbGlmaWVycy4KKyAgICBib29sIGNoZWNrU2VxdWVuY2VJc1ZhbGlkKFREaWFnbm9z
dGljcyAqZGlhZ25vc3RpY3MpIGNvbnN0OworICAgIC8vIEdvZXMgb3ZlciB0aGUgcXVhbGlmaWVy
IHNlcXVlbmNlIGFuZCBwYXJzZXMgaXQgdG8gZm9ybSBhIHR5cGUgcXVhbGlmaWVyIGZvciBhIGZ1
bmN0aW9uCisgICAgLy8gcGFyYW1ldGVyLgorICAgIC8vIFRoZSByZXR1cm5lZCBvYmplY3QgaXMg
aW5pdGlhbGl6ZWQgZXZlbiBpZiB0aGUgcGFyc2luZyBmYWlscy4KKyAgICBUVHlwZVF1YWxpZmll
ciBnZXRQYXJhbWV0ZXJUeXBlUXVhbGlmaWVyKFREaWFnbm9zdGljcyAqZGlhZ25vc3RpY3MpIGNv
bnN0OworICAgIC8vIEdvZXMgb3ZlciB0aGUgcXVhbGlmaWVyIHNlcXVlbmNlIGFuZCBwYXJzZXMg
aXQgdG8gZm9ybSBhIHR5cGUgcXVhbGlmaWVyIGZvciBhIHZhcmlhYmxlLgorICAgIC8vIFRoZSBy
ZXR1cm5lZCBvYmplY3QgaXMgaW5pdGlhbGl6ZWQgZXZlbiBpZiB0aGUgcGFyc2luZyBmYWlscy4K
KyAgICBUVHlwZVF1YWxpZmllciBnZXRWYXJpYWJsZVR5cGVRdWFsaWZpZXIoVERpYWdub3N0aWNz
ICpkaWFnbm9zdGljcykgY29uc3Q7CisKKyAgcHJpdmF0ZToKKyAgICBRdWFsaWZpZXJTZXF1ZW5j
ZSBtUXVhbGlmaWVyczsKKyAgICBpbnQgbVNoYWRlclZlcnNpb247Cit9OworCisjZW5kaWYgIC8v
IENPTVBJTEVSX1RSQU5TTEFUT1JfUVVBTElGSUVSX1RZUEVTX0hfCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZWNvcmRDb25zdGFudFByZWNp
c2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvUmVjb3JkQ29uc3RhbnRQcmVjaXNpb24uY3BwCShyZXZpc2lvbiAyMDc4
MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9S
ZWNvcmRDb25zdGFudFByZWNpc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDEx
IEBAIFJlY29yZENvbnN0YW50UHJlY2lzaW9uVHJhdmVyc2VyOjpSZWNvcmQKIAogYm9vbCBSZWNv
cmRDb25zdGFudFByZWNpc2lvblRyYXZlcnNlcjo6b3BlcmFuZEFmZmVjdHNQYXJlbnRPcGVyYXRp
b25QcmVjaXNpb24oVEludGVybVR5cGVkICpvcGVyYW5kKQogeworICAgIGlmIChnZXRQYXJlbnRO
b2RlKCktPmdldEFzQ2FzZU5vZGUoKSB8fCBnZXRQYXJlbnROb2RlKCktPmdldEFzQmxvY2soKSkK
KyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICBjb25zdCBUSW50ZXJt
QmluYXJ5ICpwYXJlbnRBc0JpbmFyeSA9IGdldFBhcmVudE5vZGUoKS0+Z2V0QXNCaW5hcnlOb2Rl
KCk7CiAgICAgaWYgKHBhcmVudEFzQmluYXJ5ICE9IG51bGxwdHIpCiAgICAgewpAQCAtMTI4LDcg
KzEzMyw3IEBAIHZvaWQgUmVjb3JkQ29uc3RhbnRQcmVjaXNpb25UcmF2ZXJzZXI6OnYKICAgICBU
SW50ZXJtU2VxdWVuY2UgaW5zZXJ0aW9uczsKICAgICBpbnNlcnRpb25zLnB1c2hfYmFjayhjcmVh
dGVUZW1wSW5pdERlY2xhcmF0aW9uKG5vZGUsIEV2cUNvbnN0KSk7CiAgICAgaW5zZXJ0U3RhdGVt
ZW50c0luUGFyZW50QmxvY2soaW5zZXJ0aW9ucyk7Ci0gICAgbVJlcGxhY2VtZW50cy5wdXNoX2Jh
Y2soTm9kZVVwZGF0ZUVudHJ5KGdldFBhcmVudE5vZGUoKSwgbm9kZSwgY3JlYXRlVGVtcFN5bWJv
bChub2RlLT5nZXRUeXBlKCkpLCBmYWxzZSkpOworICAgIHF1ZXVlUmVwbGFjZW1lbnQobm9kZSwg
Y3JlYXRlVGVtcFN5bWJvbChub2RlLT5nZXRUeXBlKCkpLCBPcmlnaW5hbE5vZGU6OklTX0RST1BQ
RUQpOwogICAgIG1Gb3VuZEhpZ2hlclByZWNpc2lvbkNvbnN0YW50ID0gdHJ1ZTsKIH0KIApJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVnZW5l
cmF0ZVN0cnVjdE5hbWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZWdlbmVyYXRlU3RydWN0TmFtZXMuY3BwCShyZXZp
c2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9SZWdlbmVyYXRlU3RydWN0TmFtZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCwy
NSArNTgsMTQgQEAgdm9pZCBSZWdlbmVyYXRlU3RydWN0TmFtZXM6OnZpc2l0U3ltYm9sKAogICAg
IHVzZXJUeXBlLT5zZXROYW1lKHRtcCk7CiB9CiAKLWJvb2wgUmVnZW5lcmF0ZVN0cnVjdE5hbWVz
Ojp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqYWdncmVnYXRlKQorYm9v
bCBSZWdlbmVyYXRlU3RydWN0TmFtZXM6OnZpc2l0QmxvY2soVmlzaXQsIFRJbnRlcm1CbG9jayAq
YmxvY2spCiB7Ci0gICAgQVNTRVJUKGFnZ3JlZ2F0ZSk7Ci0gICAgc3dpdGNoIChhZ2dyZWdhdGUt
PmdldE9wKCkpCisgICAgKyttU2NvcGVEZXB0aDsKKyAgICBUSW50ZXJtU2VxdWVuY2UgJnNlcXVl
bmNlID0gKihibG9jay0+Z2V0U2VxdWVuY2UoKSk7CisgICAgZm9yIChUSW50ZXJtTm9kZSAqbm9k
ZSA6IHNlcXVlbmNlKQogICAgIHsKLSAgICAgIGNhc2UgRU9wU2VxdWVuY2U6Ci0gICAgICAgICsr
bVNjb3BlRGVwdGg7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAmc2Vx
dWVuY2UgPSAqKGFnZ3JlZ2F0ZS0+Z2V0U2VxdWVuY2UoKSk7Ci0gICAgICAgICAgICBmb3IgKHNp
emVfdCBpaSA9IDA7IGlpIDwgc2VxdWVuY2Uuc2l6ZSgpOyArK2lpKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICpub2RlID0gc2VxdWVuY2VbaWldOwotICAgICAg
ICAgICAgICAgIEFTU0VSVChub2RlICE9IE5VTEwpOwotICAgICAgICAgICAgICAgIG5vZGUtPnRy
YXZlcnNlKHRoaXMpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIC0tbVNjb3Bl
RGVwdGg7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICBub2RlLT50cmF2ZXJzZSh0aGlzKTsKICAgICB9CisgICAgLS1t
U2NvcGVEZXB0aDsKKyAgICByZXR1cm4gZmFsc2U7CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZWdlbmVyYXRlU3RydWN0TmFtZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9SZWdlbmVyYXRlU3RydWN0TmFtZXMuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVnZW5lcmF0ZVN0cnVj
dE5hbWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAgY2xhc3MgUmVnZW5lcmF0
ZVN0cnVjdE5hbWVzIDogcHVibGljIFRJbgogCiAgIHByb3RlY3RlZDoKICAgICB2b2lkIHZpc2l0
U3ltYm9sKFRJbnRlcm1TeW1ib2wgKikgb3ZlcnJpZGU7Ci0gICAgYm9vbCB2aXNpdEFnZ3JlZ2F0
ZShWaXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0Qmxv
Y2soVmlzaXQsIFRJbnRlcm1CbG9jayAqYmxvY2spIG92ZXJyaWRlOwogCiAgIHByaXZhdGU6CiAg
ICAgY29uc3QgVFN5bWJvbFRhYmxlICZtU3ltYm9sVGFibGU7CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZW1vdmVEeW5hbWljSW5kZXhpbmcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1JlbW92ZUR5bmFtaWNJbmRleGluZy5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1JlbW92ZUR5
bmFtaWNJbmRleGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExLDYgKzExLDcgQEAKIAogI2lu
Y2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW5mb1NpbmsuaCIKICNpbmNsdWRlICJjb21waWxl
ci90cmFuc2xhdG9yL0ludGVybU5vZGUuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9y
L0ludGVybU5vZGVQYXR0ZXJuTWF0Y2hlci5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0
b3IvU3ltYm9sVGFibGUuaCIKIAogbmFtZXNwYWNlCkBAIC05MSwyMSArOTIsMTUgQEAgVEludGVy
bUJpbmFyeSAqQ3JlYXRlSW5kZXhEaXJlY3RCYXNlU3ltYgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgaW5kZXgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRRdWFsaWZpZXIgYmFzZVF1YWxpZmll
cikKIHsKLSAgICBUSW50ZXJtQmluYXJ5ICppbmRleE5vZGUgPSBuZXcgVEludGVybUJpbmFyeShF
T3BJbmRleERpcmVjdCk7Ci0gICAgaW5kZXhOb2RlLT5zZXRUeXBlKGZpZWxkVHlwZSk7CiAgICAg
VEludGVybVN5bWJvbCAqYmFzZVN5bWJvbCA9IENyZWF0ZUJhc2VTeW1ib2woaW5kZXhlZFR5cGUs
IGJhc2VRdWFsaWZpZXIpOwotICAgIGluZGV4Tm9kZS0+c2V0TGVmdChiYXNlU3ltYm9sKTsKLSAg
ICBpbmRleE5vZGUtPnNldFJpZ2h0KENyZWF0ZUludENvbnN0YW50Tm9kZShpbmRleCkpOworICAg
IFRJbnRlcm1CaW5hcnkgKmluZGV4Tm9kZSA9CisgICAgICAgIG5ldyBUSW50ZXJtQmluYXJ5KEVP
cEluZGV4RGlyZWN0LCBiYXNlU3ltYm9sLCBUSW50ZXJtVHlwZWQ6OkNyZWF0ZUluZGV4Tm9kZShp
bmRleCkpOwogICAgIHJldHVybiBpbmRleE5vZGU7CiB9CiAKIFRJbnRlcm1CaW5hcnkgKkNyZWF0
ZUFzc2lnblZhbHVlU3ltYm9sTm9kZShUSW50ZXJtVHlwZWQgKnRhcmdldE5vZGUsIGNvbnN0IFRU
eXBlICZhc3NpZ25lZFZhbHVlVHlwZSkKIHsKLSAgICBUSW50ZXJtQmluYXJ5ICphc3NpZ25Ob2Rl
ID0gbmV3IFRJbnRlcm1CaW5hcnkoRU9wQXNzaWduKTsKLSAgICBhc3NpZ25Ob2RlLT5zZXRUeXBl
KGFzc2lnbmVkVmFsdWVUeXBlKTsKLSAgICBhc3NpZ25Ob2RlLT5zZXRMZWZ0KHRhcmdldE5vZGUp
OwotICAgIGFzc2lnbk5vZGUtPnNldFJpZ2h0KENyZWF0ZVZhbHVlU3ltYm9sKGFzc2lnbmVkVmFs
dWVUeXBlKSk7Ci0gICAgcmV0dXJuIGFzc2lnbk5vZGU7CisgICAgcmV0dXJuIG5ldyBUSW50ZXJt
QmluYXJ5KEVPcEFzc2lnbiwgdGFyZ2V0Tm9kZSwgQ3JlYXRlVmFsdWVTeW1ib2woYXNzaWduZWRW
YWx1ZVR5cGUpKTsKIH0KIAogVEludGVybVR5cGVkICpFbnN1cmVTaWduZWRJbnQoVEludGVybVR5
cGVkICpub2RlKQpAQCAtMTc3LDcgKzE3Miw3IEBAIFRUeXBlIEdldEZpZWxkVHlwZShjb25zdCBU
VHlwZSAmaW5kZXhlZFQKIC8vICAgIGJhc2VbMV0gPSB2YWx1ZTsKIC8vIH0KIC8vIE5vdGUgdGhh
dCBlbHNlIGlzIG5vdCB1c2VkIGluIGFib3ZlIGZ1bmN0aW9ucyB0byBhdm9pZCB0aGUgUmV3cml0
ZUVsc2VCbG9ja3MgdHJhbnNmb3JtYXRpb24uCi1USW50ZXJtQWdncmVnYXRlICpHZXRJbmRleEZ1
bmN0aW9uRGVmaW5pdGlvbihUVHlwZSB0eXBlLCBib29sIHdyaXRlKQorVEludGVybUZ1bmN0aW9u
RGVmaW5pdGlvbiAqR2V0SW5kZXhGdW5jdGlvbkRlZmluaXRpb24oVFR5cGUgdHlwZSwgYm9vbCB3
cml0ZSkKIHsKICAgICBBU1NFUlQoIXR5cGUuaXNBcnJheSgpKTsKICAgICAvLyBDb25zZXJ2YXRp
dmVseSB1c2UgaGlnaHAgaGVyZSwgZXZlbiBpZiB0aGUgaW5kZXhlZCB0eXBlIGlzIG5vdCBoaWdo
cC4gVGhhdCB3YXkgdGhlIGNvZGUgY2FuJ3QKQEAgLTE4NSw4ICsxODAsNiBAQCBUSW50ZXJtQWdn
cmVnYXRlICpHZXRJbmRleEZ1bmN0aW9uRGVmaW5pCiAgICAgLy8gaGlnaHAgdmFsdWVzIGFyZSBi
ZWluZyBpbmRleGVkIGluIHRoZSBzaGFkZXIuIEZvciBITFNMIHByZWNpc2lvbiBkb2Vzbid0IG1h
dHRlciwgYnV0IGluCiAgICAgLy8gcHJpbmNpcGxlIHRoaXMgY29kZSBjb3VsZCBiZSB1c2VkIHdp
dGggbXVsdGlwbGUgYmFja2VuZHMuCiAgICAgdHlwZS5zZXRQcmVjaXNpb24oRWJwSGlnaCk7Ci0g
ICAgVEludGVybUFnZ3JlZ2F0ZSAqaW5kZXhpbmdGdW5jdGlvbiA9IG5ldyBUSW50ZXJtQWdncmVn
YXRlKEVPcEZ1bmN0aW9uKTsKLSAgICBpbmRleGluZ0Z1bmN0aW9uLT5zZXROYW1lT2JqKEdldElu
ZGV4RnVuY3Rpb25OYW1lKHR5cGUsIHdyaXRlKSk7CiAKICAgICBUVHlwZSBmaWVsZFR5cGUgPSBH
ZXRGaWVsZFR5cGUodHlwZSk7CiAgICAgaW50IG51bUNhc2VzID0gMDsKQEAgLTE5OCwxNCArMTkx
LDYgQEAgVEludGVybUFnZ3JlZ2F0ZSAqR2V0SW5kZXhGdW5jdGlvbkRlZmluaQogICAgIHsKICAg
ICAgICAgbnVtQ2FzZXMgPSB0eXBlLmdldE5vbWluYWxTaXplKCk7CiAgICAgfQotICAgIGlmICh3
cml0ZSkKLSAgICB7Ci0gICAgICAgIGluZGV4aW5nRnVuY3Rpb24tPnNldFR5cGUoVFR5cGUoRWJ0
Vm9pZCkpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBpbmRleGluZ0Z1bmN0aW9u
LT5zZXRUeXBlKGZpZWxkVHlwZSk7Ci0gICAgfQogCiAgICAgVEludGVybUFnZ3JlZ2F0ZSAqcGFy
YW1zTm9kZSA9IG5ldyBUSW50ZXJtQWdncmVnYXRlKEVPcFBhcmFtZXRlcnMpOwogICAgIFRRdWFs
aWZpZXIgYmFzZVF1YWxpZmllciA9IEV2cUluT3V0OwpAQCAtMjIwLDkgKzIwNSw4IEBAIFRJbnRl
cm1BZ2dyZWdhdGUgKkdldEluZGV4RnVuY3Rpb25EZWZpbmkKICAgICAgICAgVEludGVybVN5bWJv
bCAqdmFsdWVQYXJhbSA9IENyZWF0ZVZhbHVlU3ltYm9sKGZpZWxkVHlwZSk7CiAgICAgICAgIHBh
cmFtc05vZGUtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayh2YWx1ZVBhcmFtKTsKICAgICB9Ci0g
ICAgaW5kZXhpbmdGdW5jdGlvbi0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKHBhcmFtc05vZGUp
OwogCi0gICAgVEludGVybUFnZ3JlZ2F0ZSAqc3RhdGVtZW50TGlzdCA9IG5ldyBUSW50ZXJtQWdn
cmVnYXRlKEVPcFNlcXVlbmNlKTsKKyAgICBUSW50ZXJtQmxvY2sgKnN0YXRlbWVudExpc3QgPSBu
ZXcgVEludGVybUJsb2NrKCk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1DYXNlczsgKytp
KQogICAgIHsKICAgICAgICAgVEludGVybUNhc2UgKmNhc2VOb2RlID0gbmV3IFRJbnRlcm1DYXNl
KENyZWF0ZUludENvbnN0YW50Tm9kZShpKSk7CkBAIC0yNTIsMTggKzIzNiwxNyBAQCBUSW50ZXJt
QWdncmVnYXRlICpHZXRJbmRleEZ1bmN0aW9uRGVmaW5pCiAKICAgICBUSW50ZXJtU3dpdGNoICpz
d2l0Y2hOb2RlID0gbmV3IFRJbnRlcm1Td2l0Y2goQ3JlYXRlSW5kZXhTeW1ib2woKSwgc3RhdGVt
ZW50TGlzdCk7CiAKLSAgICBUSW50ZXJtQWdncmVnYXRlICpib2R5Tm9kZSA9IG5ldyBUSW50ZXJt
QWdncmVnYXRlKEVPcFNlcXVlbmNlKTsKKyAgICBUSW50ZXJtQmxvY2sgKmJvZHlOb2RlID0gbmV3
IFRJbnRlcm1CbG9jaygpOwogICAgIGJvZHlOb2RlLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2so
c3dpdGNoTm9kZSk7CiAKLSAgICBUSW50ZXJtQmluYXJ5ICpjb25kID0gbmV3IFRJbnRlcm1CaW5h
cnkoRU9wTGVzc1RoYW4pOworICAgIFRJbnRlcm1CaW5hcnkgKmNvbmQgPQorICAgICAgICBuZXcg
VEludGVybUJpbmFyeShFT3BMZXNzVGhhbiwgQ3JlYXRlSW5kZXhTeW1ib2woKSwgQ3JlYXRlSW50
Q29uc3RhbnROb2RlKDApKTsKICAgICBjb25kLT5zZXRUeXBlKFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCkpOwotICAgIGNvbmQtPnNldExlZnQoQ3JlYXRlSW5kZXhTeW1ib2woKSk7Ci0gICAg
Y29uZC0+c2V0UmlnaHQoQ3JlYXRlSW50Q29uc3RhbnROb2RlKDApKTsKIAogICAgIC8vIFR3byBi
bG9ja3M6IG9uZSBhY2Nlc3NlcyAoZWl0aGVyIHJlYWRzIG9yIHdyaXRlcykgdGhlIGZpcnN0IGVs
ZW1lbnQgYW5kIHJldHVybnMsCiAgICAgLy8gdGhlIG90aGVyIGFjY2Vzc2VzIHRoZSBsYXN0IGVs
ZW1lbnQuCi0gICAgVEludGVybUFnZ3JlZ2F0ZSAqdXNlRmlyc3RCbG9jayA9IG5ldyBUSW50ZXJt
QWdncmVnYXRlKEVPcFNlcXVlbmNlKTsKLSAgICBUSW50ZXJtQWdncmVnYXRlICp1c2VMYXN0Qmxv
Y2sgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZShFT3BTZXF1ZW5jZSk7CisgICAgVEludGVybUJsb2Nr
ICp1c2VGaXJzdEJsb2NrID0gbmV3IFRJbnRlcm1CbG9jaygpOworICAgIFRJbnRlcm1CbG9jayAq
dXNlTGFzdEJsb2NrICA9IG5ldyBUSW50ZXJtQmxvY2soKTsKICAgICBUSW50ZXJtQmluYXJ5ICpp
bmRleEZpcnN0Tm9kZSA9CiAgICAgICAgIENyZWF0ZUluZGV4RGlyZWN0QmFzZVN5bWJvbE5vZGUo
dHlwZSwgZmllbGRUeXBlLCAwLCBiYXNlUXVhbGlmaWVyKTsKICAgICBUSW50ZXJtQmluYXJ5ICpp
bmRleExhc3ROb2RlID0KQEAgLTI4NiwxMiArMjY5LDIwIEBAIFRJbnRlcm1BZ2dyZWdhdGUgKkdl
dEluZGV4RnVuY3Rpb25EZWZpbmkKICAgICAgICAgVEludGVybUJyYW5jaCAqcmV0dXJuTGFzdE5v
ZGUgPSBuZXcgVEludGVybUJyYW5jaChFT3BSZXR1cm4sIGluZGV4TGFzdE5vZGUpOwogICAgICAg
ICB1c2VMYXN0QmxvY2stPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhyZXR1cm5MYXN0Tm9kZSk7
CiAgICAgfQotICAgIFRJbnRlcm1TZWxlY3Rpb24gKmlmTm9kZSA9IG5ldyBUSW50ZXJtU2VsZWN0
aW9uKGNvbmQsIHVzZUZpcnN0QmxvY2ssIG51bGxwdHIpOworICAgIFRJbnRlcm1JZkVsc2UgKmlm
Tm9kZSA9IG5ldyBUSW50ZXJtSWZFbHNlKGNvbmQsIHVzZUZpcnN0QmxvY2ssIG51bGxwdHIpOwog
ICAgIGJvZHlOb2RlLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2soaWZOb2RlKTsKICAgICBib2R5
Tm9kZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKHVzZUxhc3RCbG9jayk7CiAKLSAgICBpbmRl
eGluZ0Z1bmN0aW9uLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2soYm9keU5vZGUpOwotCisgICAg
VEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAqaW5kZXhpbmdGdW5jdGlvbiA9IG51bGxwdHI7Cisg
ICAgaWYgKHdyaXRlKQorICAgIHsKKyAgICAgICAgaW5kZXhpbmdGdW5jdGlvbiA9IG5ldyBUSW50
ZXJtRnVuY3Rpb25EZWZpbml0aW9uKFRUeXBlKEVidFZvaWQpLCBwYXJhbXNOb2RlLCBib2R5Tm9k
ZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGluZGV4aW5nRnVuY3Rpb24gPSBu
ZXcgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbihmaWVsZFR5cGUsIHBhcmFtc05vZGUsIGJvZHlO
b2RlKTsKKyAgICB9CisgICAgaW5kZXhpbmdGdW5jdGlvbi0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZv
KCktPnNldE5hbWVPYmooR2V0SW5kZXhGdW5jdGlvbk5hbWUodHlwZSwgd3JpdGUpKTsKICAgICBy
ZXR1cm4gaW5kZXhpbmdGdW5jdGlvbjsKIH0KIApAQCAtMzMzLDggKzMyNCw4IEBAIFJlbW92ZUR5
bmFtaWNJbmRleGluZ1RyYXZlcnNlcjo6UmVtb3ZlRHkKIAogdm9pZCBSZW1vdmVEeW5hbWljSW5k
ZXhpbmdUcmF2ZXJzZXI6Omluc2VydEhlbHBlckRlZmluaXRpb25zKFRJbnRlcm1Ob2RlICpyb290
KQogewotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnJvb3RBZ2cgPSByb290LT5nZXRBc0FnZ3JlZ2F0
ZSgpOwotICAgIEFTU0VSVChyb290QWdnICE9IG51bGxwdHIgJiYgcm9vdEFnZy0+Z2V0T3AoKSA9
PSBFT3BTZXF1ZW5jZSk7CisgICAgVEludGVybUJsb2NrICpyb290QmxvY2sgPSByb290LT5nZXRB
c0Jsb2NrKCk7CisgICAgQVNTRVJUKHJvb3RCbG9jayAhPSBudWxscHRyKTsKICAgICBUSW50ZXJt
U2VxdWVuY2UgaW5zZXJ0aW9uczsKICAgICBmb3IgKFRUeXBlIHR5cGUgOiBtSW5kZXhlZFZlY0Fu
ZE1hdHJpeFR5cGVzKQogICAgIHsKQEAgLTM0NCw3ICszMzUsNyBAQCB2b2lkIFJlbW92ZUR5bmFt
aWNJbmRleGluZ1RyYXZlcnNlcjo6aW5zCiAgICAgewogICAgICAgICBpbnNlcnRpb25zLnB1c2hf
YmFjayhHZXRJbmRleEZ1bmN0aW9uRGVmaW5pdGlvbih0eXBlLCB0cnVlKSk7CiAgICAgfQotICAg
IG1JbnNlcnRpb25zLnB1c2hfYmFjayhOb2RlSW5zZXJ0TXVsdGlwbGVFbnRyeShyb290QWdnLCAw
LCBpbnNlcnRpb25zLCBUSW50ZXJtU2VxdWVuY2UoKSkpOworICAgIG1JbnNlcnRpb25zLnB1c2hf
YmFjayhOb2RlSW5zZXJ0TXVsdGlwbGVFbnRyeShyb290QmxvY2ssIDAsIGluc2VydGlvbnMsIFRJ
bnRlcm1TZXF1ZW5jZSgpKSk7CiB9CiAKIC8vIENyZWF0ZSBhIGNhbGwgdG8gZHluX2luZGV4Xyoo
KSBiYXNlZCBvbiBhbiBpbmRpcmVjdCBpbmRleGluZyBvcCBub2RlCkBAIC0zNTYsNyArMzQ3LDgg
QEAgVEludGVybUFnZ3JlZ2F0ZSAqQ3JlYXRlSW5kZXhGdW5jdGlvbkNhbAogICAgIFRJbnRlcm1B
Z2dyZWdhdGUgKmluZGV4aW5nQ2FsbCA9IG5ldyBUSW50ZXJtQWdncmVnYXRlKEVPcEZ1bmN0aW9u
Q2FsbCk7CiAgICAgaW5kZXhpbmdDYWxsLT5zZXRMaW5lKG5vZGUtPmdldExpbmUoKSk7CiAgICAg
aW5kZXhpbmdDYWxsLT5zZXRVc2VyRGVmaW5lZCgpOwotICAgIGluZGV4aW5nQ2FsbC0+c2V0TmFt
ZU9iaihHZXRJbmRleEZ1bmN0aW9uTmFtZShpbmRleGVkTm9kZS0+Z2V0VHlwZSgpLCBmYWxzZSkp
OworICAgIGluZGV4aW5nQ2FsbC0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPnNldE5hbWVPYmoo
CisgICAgICAgIEdldEluZGV4RnVuY3Rpb25OYW1lKGluZGV4ZWROb2RlLT5nZXRUeXBlKCksIGZh
bHNlKSk7CiAgICAgaW5kZXhpbmdDYWxsLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2soaW5kZXhl
ZE5vZGUpOwogICAgIGluZGV4aW5nQ2FsbC0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKGluZGV4
KTsKIApAQCAtMzc0LDcgKzM2Niw4IEBAIFRJbnRlcm1BZ2dyZWdhdGUgKkNyZWF0ZUluZGV4ZWRX
cml0ZUZ1bmMKICAgICBBU1NFUlQobGVmdENvcHkgIT0gbnVsbHB0ciAmJiBsZWZ0Q29weS0+Z2V0
QXNUeXBlZCgpICE9IG51bGxwdHIpOwogICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmluZGV4ZWRXcml0
ZUNhbGwgPQogICAgICAgICBDcmVhdGVJbmRleEZ1bmN0aW9uQ2FsbChub2RlLCBsZWZ0Q29weS0+
Z2V0QXNUeXBlZCgpLCBpbmRleCk7Ci0gICAgaW5kZXhlZFdyaXRlQ2FsbC0+c2V0TmFtZU9iaihH
ZXRJbmRleEZ1bmN0aW9uTmFtZShub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKSwgdHJ1ZSkpOwor
ICAgIGluZGV4ZWRXcml0ZUNhbGwtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5zZXROYW1lT2Jq
KAorICAgICAgICBHZXRJbmRleEZ1bmN0aW9uTmFtZShub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUo
KSwgdHJ1ZSkpOwogICAgIGluZGV4ZWRXcml0ZUNhbGwtPnNldFR5cGUoVFR5cGUoRWJ0Vm9pZCkp
OwogICAgIGluZGV4ZWRXcml0ZUNhbGwtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayh3cml0dGVu
VmFsdWUpOwogICAgIHJldHVybiBpbmRleGVkV3JpdGVDYWxsOwpAQCAtMzk4LDIwICszOTEsMjUg
QEAgYm9vbCBSZW1vdmVEeW5hbWljSW5kZXhpbmdUcmF2ZXJzZXI6OnZpcwogCiAgICAgICAgICAg
ICAvLyBJbml0IHRoZSB0ZW1wIHZhcmlhYmxlIGhvbGRpbmcgdGhlIGluZGV4CiAgICAgICAgICAg
ICBUSW50ZXJtQWdncmVnYXRlICppbml0SW5kZXggPSBjcmVhdGVUZW1wSW5pdERlY2xhcmF0aW9u
KG5vZGUtPmdldFJpZ2h0KCkpOwotICAgICAgICAgICAgVEludGVybVNlcXVlbmNlIGluc2VydGlv
bnM7Ci0gICAgICAgICAgICBpbnNlcnRpb25zLnB1c2hfYmFjayhpbml0SW5kZXgpOwotICAgICAg
ICAgICAgaW5zZXJ0U3RhdGVtZW50c0luUGFyZW50QmxvY2soaW5zZXJ0aW9ucyk7CisgICAgICAg
ICAgICBpbnNlcnRTdGF0ZW1lbnRJblBhcmVudEJsb2NrKGluaXRJbmRleCk7CiAgICAgICAgICAg
ICBtVXNlZFRyZWVJbnNlcnRpb24gPSB0cnVlOwogCiAgICAgICAgICAgICAvLyBSZXBsYWNlIHRo
ZSBpbmRleCB3aXRoIHRoZSB0ZW1wIHZhcmlhYmxlCiAgICAgICAgICAgICBUSW50ZXJtU3ltYm9s
ICp0ZW1wSW5kZXggPSBjcmVhdGVUZW1wU3ltYm9sKG5vZGUtPmdldFJpZ2h0KCktPmdldFR5cGUo
KSk7Ci0gICAgICAgICAgICBOb2RlVXBkYXRlRW50cnkgcmVwbGFjZUluZGV4KG5vZGUsIG5vZGUt
PmdldFJpZ2h0KCksIHRlbXBJbmRleCwgZmFsc2UpOwotICAgICAgICAgICAgbVJlcGxhY2VtZW50
cy5wdXNoX2JhY2socmVwbGFjZUluZGV4KTsKKyAgICAgICAgICAgIHF1ZXVlUmVwbGFjZW1lbnRX
aXRoUGFyZW50KG5vZGUsIG5vZGUtPmdldFJpZ2h0KCksIHRlbXBJbmRleCwgT3JpZ2luYWxOb2Rl
OjpJU19EUk9QUEVEKTsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmICghbm9kZS0+Z2V0TGVm
dCgpLT5pc0FycmF5KCkgJiYgbm9kZS0+Z2V0TGVmdCgpLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRT
dHJ1Y3QpCisgICAgICAgIGVsc2UgaWYgKEludGVybU5vZGVQYXR0ZXJuTWF0Y2hlcjo6SXNEeW5h
bWljSW5kZXhpbmdPZlZlY3Rvck9yTWF0cml4KG5vZGUpKQogICAgICAgICB7CiAgICAgICAgICAg
ICBib29sIHdyaXRlID0gaXNMVmFsdWVSZXF1aXJlZEhlcmUoKTsKIAorI2lmIGRlZmluZWQoQU5H
TEVfRU5BQkxFX0FTU0VSVFMpCisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBJbnRlcm1O
b2RlUGF0dGVybk1hdGNoZXIgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBzbGlnaHRseSBkaWZmZXJl
bnRseQorICAgICAgICAgICAgLy8gaW1wbGVtZW50ZWQgY2hlY2tzIGluIHRoaXMgdHJhdmVyc2Vy
LgorICAgICAgICAgICAgSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVyIG1hdGNoZXIoCisgICAgICAg
ICAgICAgICAgSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVyOjprRHluYW1pY0luZGV4aW5nT2ZWZWN0
b3JPck1hdHJpeEluTFZhbHVlKTsKKyAgICAgICAgICAgIEFTU0VSVChtYXRjaGVyLm1hdGNoKG5v
ZGUsIGdldFBhcmVudE5vZGUoKSwgaXNMVmFsdWVSZXF1aXJlZEhlcmUoKSkgPT0gd3JpdGUpOwor
I2VuZGlmCisKICAgICAgICAgICAgIFRUeXBlIHR5cGUgPSBub2RlLT5nZXRMZWZ0KCktPmdldFR5
cGUoKTsKICAgICAgICAgICAgIG1JbmRleGVkVmVjQW5kTWF0cml4VHlwZXMuaW5zZXJ0KHR5cGUp
OwogCkBAIC00NjIsOSArNDYwLDcgQEAgYm9vbCBSZW1vdmVEeW5hbWljSW5kZXhpbmdUcmF2ZXJz
ZXI6OnZpcwogICAgICAgICAgICAgICAgICAgICBDcmVhdGVJbmRleGVkV3JpdGVGdW5jdGlvbkNh
bGwobm9kZSwgdGVtcEluZGV4LCBjcmVhdGVUZW1wU3ltYm9sKGZpZWxkVHlwZSkpOwogICAgICAg
ICAgICAgICAgIGluc2VydGlvbnNBZnRlci5wdXNoX2JhY2soaW5kZXhlZFdyaXRlQ2FsbCk7CiAg
ICAgICAgICAgICAgICAgaW5zZXJ0U3RhdGVtZW50c0luUGFyZW50QmxvY2soaW5zZXJ0aW9uc0Jl
Zm9yZSwgaW5zZXJ0aW9uc0FmdGVyKTsKLSAgICAgICAgICAgICAgICBOb2RlVXBkYXRlRW50cnkg
cmVwbGFjZUluZGV4KGdldFBhcmVudE5vZGUoKSwgbm9kZSwgY3JlYXRlVGVtcFN5bWJvbChmaWVs
ZFR5cGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFs
c2UpOwotICAgICAgICAgICAgICAgIG1SZXBsYWNlbWVudHMucHVzaF9iYWNrKHJlcGxhY2VJbmRl
eCk7CisgICAgICAgICAgICAgICAgcXVldWVSZXBsYWNlbWVudChub2RlLCBjcmVhdGVUZW1wU3lt
Ym9sKGZpZWxkVHlwZSksIE9yaWdpbmFsTm9kZTo6SVNfRFJPUFBFRCk7CiAgICAgICAgICAgICAg
ICAgbVVzZWRUcmVlSW5zZXJ0aW9uID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGVsc2UKQEAgLTQ3Nyw4ICs0NzMsNyBAQCBib29sIFJlbW92ZUR5bmFtaWNJbmRleGluZ1RyYXZl
cnNlcjo6dmlzCiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtUmVtb3ZlSW5kZXhTaWRlRWZmZWN0
c0luU3VidHJlZSk7CiAgICAgICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqaW5kZXhpbmdD
YWxsID0gQ3JlYXRlSW5kZXhGdW5jdGlvbkNhbGwoCiAgICAgICAgICAgICAgICAgICAgIG5vZGUs
IG5vZGUtPmdldExlZnQoKSwgRW5zdXJlU2lnbmVkSW50KG5vZGUtPmdldFJpZ2h0KCkpKTsKLSAg
ICAgICAgICAgICAgICBOb2RlVXBkYXRlRW50cnkgcmVwbGFjZUluZGV4KGdldFBhcmVudE5vZGUo
KSwgbm9kZSwgaW5kZXhpbmdDYWxsLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgbVJlcGxhY2Vt
ZW50cy5wdXNoX2JhY2socmVwbGFjZUluZGV4KTsKKyAgICAgICAgICAgICAgICBxdWV1ZVJlcGxh
Y2VtZW50KG5vZGUsIGluZGV4aW5nQ2FsbCwgT3JpZ2luYWxOb2RlOjpJU19EUk9QUEVEKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1JlbW92ZVBvdy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlUG93
LmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlUG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsMzEg
KzUyLDIwIEBAIGJvb2wgUmVtb3ZlUG93VHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZSgKIHsKICAg
ICBpZiAoSXNQcm9ibGVtYXRpY1Bvdyhub2RlKSkKICAgICB7Ci0gICAgICAgIFRJbmZvU2luayBu
dWxsU2luazsKLQogICAgICAgICBUSW50ZXJtVHlwZWQgKnggPSBub2RlLT5nZXRTZXF1ZW5jZSgp
LT5hdCgwKS0+Z2V0QXNUeXBlZCgpOwogICAgICAgICBUSW50ZXJtVHlwZWQgKnkgPSBub2RlLT5n
ZXRTZXF1ZW5jZSgpLT5hdCgxKS0+Z2V0QXNUeXBlZCgpOwogCi0gICAgICAgIFRJbnRlcm1VbmFy
eSAqbG9nID0gbmV3IFRJbnRlcm1VbmFyeShFT3BMb2cyKTsKLSAgICAgICAgbG9nLT5zZXRPcGVy
YW5kKHgpOworICAgICAgICBUSW50ZXJtVW5hcnkgKmxvZyA9IG5ldyBUSW50ZXJtVW5hcnkoRU9w
TG9nMiwgeCk7CiAgICAgICAgIGxvZy0+c2V0TGluZShub2RlLT5nZXRMaW5lKCkpOwotICAgICAg
ICBsb2ctPnNldFR5cGUoeC0+Z2V0VHlwZSgpKTsKIAotICAgICAgICBUSW50ZXJtQmluYXJ5ICpt
dWwgPSBuZXcgVEludGVybUJpbmFyeShFT3BNdWwpOwotICAgICAgICBtdWwtPnNldExlZnQoeSk7
Ci0gICAgICAgIG11bC0+c2V0UmlnaHQobG9nKTsKKyAgICAgICAgVE9wZXJhdG9yIG9wICAgICAg
ID0gVEludGVybUJpbmFyeTo6R2V0TXVsT3BCYXNlZE9uT3BlcmFuZHMoeS0+Z2V0VHlwZSgpLCBs
b2ctPmdldFR5cGUoKSk7CisgICAgICAgIFRJbnRlcm1CaW5hcnkgKm11bCA9IG5ldyBUSW50ZXJt
QmluYXJ5KG9wLCB5LCBsb2cpOwogICAgICAgICBtdWwtPnNldExpbmUobm9kZS0+Z2V0TGluZSgp
KTsKLSAgICAgICAgYm9vbCB2YWxpZCA9IG11bC0+cHJvbW90ZShudWxsU2luayk7Ci0gICAgICAg
IFVOVVNFRF9BU1NFUlRJT05fVkFSSUFCTEUodmFsaWQpOwotICAgICAgICBBU1NFUlQodmFsaWQp
OwogCi0gICAgICAgIFRJbnRlcm1VbmFyeSAqZXhwID0gbmV3IFRJbnRlcm1VbmFyeShFT3BFeHAy
KTsKLSAgICAgICAgZXhwLT5zZXRPcGVyYW5kKG11bCk7CisgICAgICAgIFRJbnRlcm1VbmFyeSAq
ZXhwID0gbmV3IFRJbnRlcm1VbmFyeShFT3BFeHAyLCBtdWwpOwogICAgICAgICBleHAtPnNldExp
bmUobm9kZS0+Z2V0TGluZSgpKTsKLSAgICAgICAgZXhwLT5zZXRUeXBlKG5vZGUtPmdldFR5cGUo
KSk7CiAKLSAgICAgICAgTm9kZVVwZGF0ZUVudHJ5IHJlcGxhY2VQb3coZ2V0UGFyZW50Tm9kZSgp
LCBub2RlLCBleHAsIGZhbHNlKTsKLSAgICAgICAgbVJlcGxhY2VtZW50cy5wdXNoX2JhY2socmVw
bGFjZVBvdyk7CisgICAgICAgIHF1ZXVlUmVwbGFjZW1lbnQobm9kZSwgZXhwLCBPcmlnaW5hbE5v
ZGU6OklTX0RST1BQRUQpOwogCiAgICAgICAgIC8vIElmIHRoZSB4IHBhcmFtZXRlciBhbHNvIG5l
ZWRzIHRvIGJlIHJlcGxhY2VkLCB3ZSBuZWVkIHRvIGRvIHRoYXQgaW4gYW5vdGhlciB0cmF2ZXJz
YWwsCiAgICAgICAgIC8vIHNpbmNlIGl0J3MgcGFyZW50IG5vZGUgd2lsbCBjaGFuZ2UgaW4gYSB3
YXkgdGhhdCdzIG5vdCBoYW5kbGVkIGNvcnJlY3RseSBieSB1cGRhdGVUcmVlKCkuCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZW1vdmVTd2l0
Y2hGYWxsVGhyb3VnaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlU3dpdGNoRmFsbFRocm91Z2guY3BwCShyZXZp
c2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9SZW1vdmVTd2l0Y2hGYWxsVGhyb3VnaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYs
NyArNiw3IEBACiAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1JlbW92ZVN3aXRjaEZh
bGxUaHJvdWdoLmgiCiAKLVRJbnRlcm1BZ2dyZWdhdGUgKlJlbW92ZVN3aXRjaEZhbGxUaHJvdWdo
OjpyZW1vdmVGYWxsVGhyb3VnaChUSW50ZXJtQWdncmVnYXRlICpzdGF0ZW1lbnRMaXN0KQorVElu
dGVybUJsb2NrICpSZW1vdmVTd2l0Y2hGYWxsVGhyb3VnaDo6cmVtb3ZlRmFsbFRocm91Z2goVElu
dGVybUJsb2NrICpzdGF0ZW1lbnRMaXN0KQogewogICAgIFJlbW92ZVN3aXRjaEZhbGxUaHJvdWdo
IHJtKHN0YXRlbWVudExpc3QpOwogICAgIEFTU0VSVChzdGF0ZW1lbnRMaXN0KTsKQEAgLTIyLDE0
ICsyMiwxMyBAQCBUSW50ZXJtQWdncmVnYXRlICpSZW1vdmVTd2l0Y2hGYWxsVGhyb3VnCiAgICAg
cmV0dXJuIHJtLm1TdGF0ZW1lbnRMaXN0T3V0OwogfQogCi1SZW1vdmVTd2l0Y2hGYWxsVGhyb3Vn
aDo6UmVtb3ZlU3dpdGNoRmFsbFRocm91Z2goVEludGVybUFnZ3JlZ2F0ZSAqc3RhdGVtZW50TGlz
dCkKK1JlbW92ZVN3aXRjaEZhbGxUaHJvdWdoOjpSZW1vdmVTd2l0Y2hGYWxsVGhyb3VnaChUSW50
ZXJtQmxvY2sgKnN0YXRlbWVudExpc3QpCiAgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZh
bHNlLCBmYWxzZSksCiAgICAgICBtU3RhdGVtZW50TGlzdChzdGF0ZW1lbnRMaXN0KSwKICAgICAg
IG1MYXN0U3RhdGVtZW50V2FzQnJlYWsoZmFsc2UpLAogICAgICAgbVByZXZpb3VzQ2FzZShudWxs
cHRyKQogewotICAgIG1TdGF0ZW1lbnRMaXN0T3V0ID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoKTsK
LSAgICBtU3RhdGVtZW50TGlzdE91dC0+c2V0T3AoRU9wU2VxdWVuY2UpOworICAgIG1TdGF0ZW1l
bnRMaXN0T3V0ID0gbmV3IFRJbnRlcm1CbG9jaygpOwogfQogCiB2b2lkIFJlbW92ZVN3aXRjaEZh
bGxUaHJvdWdoOjp2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICpub2RlKQpAQCAtNjIsNyArNjEs
MTQgQEAgYm9vbCBSZW1vdmVTd2l0Y2hGYWxsVGhyb3VnaDo6dmlzaXRVbmFyeQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotYm9vbCBSZW1vdmVTd2l0Y2hGYWxsVGhyb3VnaDo6dmlzaXRTZWxlY3Rp
b24oVmlzaXQsIFRJbnRlcm1TZWxlY3Rpb24gKm5vZGUpCitib29sIFJlbW92ZVN3aXRjaEZhbGxU
aHJvdWdoOjp2aXNpdFRlcm5hcnkoVmlzaXQsIFRJbnRlcm1UZXJuYXJ5ICpub2RlKQoreworICAg
IG1QcmV2aW91c0Nhc2UtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhub2RlKTsKKyAgICBtTGFz
dFN0YXRlbWVudFdhc0JyZWFrID0gZmFsc2U7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IFJlbW92ZVN3aXRjaEZhbGxUaHJvdWdoOjp2aXNpdElmRWxzZShWaXNpdCwgVEludGVybUlmRWxz
ZSAqbm9kZSkKIHsKICAgICBtUHJldmlvdXNDYXNlLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2so
bm9kZSk7CiAgICAgbUxhc3RTdGF0ZW1lbnRXYXNCcmVhayA9IGZhbHNlOwpAQCAtMTIzLDggKzEy
OSw3IEBAIHZvaWQgUmVtb3ZlU3dpdGNoRmFsbFRocm91Z2g6OmhhbmRsZVByZXYKIGJvb2wgUmVt
b3ZlU3dpdGNoRmFsbFRocm91Z2g6OnZpc2l0Q2FzZShWaXNpdCwgVEludGVybUNhc2UgKm5vZGUp
CiB7CiAgICAgaGFuZGxlUHJldmlvdXNDYXNlKCk7Ci0gICAgbVByZXZpb3VzQ2FzZSA9IG5ldyBU
SW50ZXJtQWdncmVnYXRlKCk7Ci0gICAgbVByZXZpb3VzQ2FzZS0+c2V0T3AoRU9wU2VxdWVuY2Up
OworICAgIG1QcmV2aW91c0Nhc2UgPSBuZXcgVEludGVybUJsb2NrKCk7CiAgICAgbVByZXZpb3Vz
Q2FzZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKG5vZGUpOwogICAgIC8vIERvbid0IHRyYXZl
cnNlIHRoZSBjb25kaXRpb24gb2YgdGhlIGNhc2Ugc3RhdGVtZW50CiAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMTMyLDYgKzEzNywxMyBAQCBib29sIFJlbW92ZVN3aXRjaEZhbGxUaHJvdWdoOjp2aXNp
dENhc2UoCiAKIGJvb2wgUmVtb3ZlU3dpdGNoRmFsbFRocm91Z2g6OnZpc2l0QWdncmVnYXRlKFZp
c2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKQogeworICAgIG1QcmV2aW91c0Nhc2UtPmdldFNl
cXVlbmNlKCktPnB1c2hfYmFjayhub2RlKTsKKyAgICBtTGFzdFN0YXRlbWVudFdhc0JyZWFrID0g
ZmFsc2U7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFJlbW92ZVN3aXRjaEZhbGxUaHJv
dWdoOjp2aXNpdEJsb2NrKFZpc2l0LCBUSW50ZXJtQmxvY2sgKm5vZGUpCit7CiAgICAgaWYgKG5v
ZGUgIT0gbVN0YXRlbWVudExpc3QpCiAgICAgewogICAgICAgICBtUHJldmlvdXNDYXNlLT5nZXRT
ZXF1ZW5jZSgpLT5wdXNoX2JhY2sobm9kZSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZW1vdmVTd2l0Y2hGYWxsVGhyb3VnaC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L1JlbW92ZVN3aXRjaEZhbGxUaHJvdWdoLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1JlbW92ZVN3aXRjaEZhbGxU
aHJvdWdoLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0LDMwICsxNCwzMiBAQCBjbGFzcyBSZW1vdmVT
d2l0Y2hGYWxsVGhyb3VnaCA6IHB1YmxpYyBUCiAgIHB1YmxpYzoKICAgICAvLyBXaGVuIGdpdmVu
IGEgc3RhdGVtZW50TGlzdCBmcm9tIGEgc3dpdGNoIEFTVCBub2RlLCByZXR1cm4gYW4gdXBkYXRl
ZAogICAgIC8vIHN0YXRlbWVudExpc3QgdGhhdCBoYXMgZmFsbC10aHJvdWdoIHJlbW92ZWQuCi0g
ICAgc3RhdGljIFRJbnRlcm1BZ2dyZWdhdGUgKnJlbW92ZUZhbGxUaHJvdWdoKFRJbnRlcm1BZ2dy
ZWdhdGUgKnN0YXRlbWVudExpc3QpOworICAgIHN0YXRpYyBUSW50ZXJtQmxvY2sgKnJlbW92ZUZh
bGxUaHJvdWdoKFRJbnRlcm1CbG9jayAqc3RhdGVtZW50TGlzdCk7CiAKICAgcHJpdmF0ZToKLSAg
ICBSZW1vdmVTd2l0Y2hGYWxsVGhyb3VnaChUSW50ZXJtQWdncmVnYXRlICpzdGF0ZW1lbnRMaXN0
KTsKKyAgICBSZW1vdmVTd2l0Y2hGYWxsVGhyb3VnaChUSW50ZXJtQmxvY2sgKnN0YXRlbWVudExp
c3QpOwogCiAgICAgdm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICpub2RlKSBvdmVycmlk
ZTsKICAgICB2b2lkIHZpc2l0Q29uc3RhbnRVbmlvbihUSW50ZXJtQ29uc3RhbnRVbmlvbiAqbm9k
ZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCB2aXNpdEJpbmFyeShWaXNpdCwgVEludGVybUJpbmFyeSAq
bm9kZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCB2aXNpdFVuYXJ5KFZpc2l0LCBUSW50ZXJtVW5hcnkg
Km5vZGUpIG92ZXJyaWRlOwotICAgIGJvb2wgdmlzaXRTZWxlY3Rpb24oVmlzaXQgdmlzaXQsIFRJ
bnRlcm1TZWxlY3Rpb24gKm5vZGUpIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRUZXJuYXJ5KFZp
c2l0IHZpc2l0LCBUSW50ZXJtVGVybmFyeSAqbm9kZSkgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNp
dElmRWxzZShWaXNpdCB2aXNpdCwgVEludGVybUlmRWxzZSAqbm9kZSkgb3ZlcnJpZGU7CiAgICAg
Ym9vbCB2aXNpdFN3aXRjaChWaXNpdCwgVEludGVybVN3aXRjaCAqbm9kZSkgb3ZlcnJpZGU7CiAg
ICAgYm9vbCB2aXNpdENhc2UoVmlzaXQsIFRJbnRlcm1DYXNlICpub2RlKSBvdmVycmlkZTsKICAg
ICBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKSBvdmVy
cmlkZTsKKyAgICBib29sIHZpc2l0QmxvY2soVmlzaXQsIFRJbnRlcm1CbG9jayAqbm9kZSkgb3Zl
cnJpZGU7CiAgICAgYm9vbCB2aXNpdExvb3AoVmlzaXQsIFRJbnRlcm1Mb29wICpub2RlKSBvdmVy
cmlkZTsKICAgICBib29sIHZpc2l0QnJhbmNoKFZpc2l0LCBUSW50ZXJtQnJhbmNoICpub2RlKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgb3V0cHV0U2VxdWVuY2UoVEludGVybVNlcXVlbmNlICpzZXF1
ZW5jZSwgc2l6ZV90IHN0YXJ0SW5kZXgpOwogICAgIHZvaWQgaGFuZGxlUHJldmlvdXNDYXNlKCk7
CiAKLSAgICBUSW50ZXJtQWdncmVnYXRlICptU3RhdGVtZW50TGlzdDsKLSAgICBUSW50ZXJtQWdn
cmVnYXRlICptU3RhdGVtZW50TGlzdE91dDsKKyAgICBUSW50ZXJtQmxvY2sgKm1TdGF0ZW1lbnRM
aXN0OworICAgIFRJbnRlcm1CbG9jayAqbVN0YXRlbWVudExpc3RPdXQ7CiAgICAgYm9vbCBtTGFz
dFN0YXRlbWVudFdhc0JyZWFrOwotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKm1QcmV2aW91c0Nhc2U7
Ci0gICAgc3RkOjp2ZWN0b3I8VEludGVybUFnZ3JlZ2F0ZSAqPiBtQ2FzZXNTaGFyaW5nQnJlYWs7
CisgICAgVEludGVybUJsb2NrICptUHJldmlvdXNDYXNlOworICAgIHN0ZDo6dmVjdG9yPFRJbnRl
cm1CbG9jayAqPiBtQ2FzZXNTaGFyaW5nQnJlYWs7CiB9OwogCiAjZW5kaWYgLy8gQ09NUElMRVJf
VFJBTlNMQVRPUl9SRU1PVkVTV0lUQ0hGQUxMVEhST1VHSF9IXwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVuYW1lRnVuY3Rpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9SZW5hbWVGdW5jdGlvbi5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZW5hbWVGdW5jdGlvbi5oCShub25leGlz
dGVudCkKQEAgLTEsMzYgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpZm5kZWYgQ09NUElMRVJf
VFJBTlNMQVRPUl9SRU5BTUVGVU5DVElPTl9IXwotI2RlZmluZSBDT01QSUxFUl9UUkFOU0xBVE9S
X1JFTkFNRUZVTkNUSU9OX0hfCi0KLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0ludGVy
bU5vZGUuaCIKLQotLy8KLS8vIFJlbmFtZXMgYSBmdW5jdGlvbiwgaW5jbHVkaW5nIGl0cyBkZWNs
YXJhdGlvbiBhbmQgYW55IGNhbGxzIHRvIGl0LgotLy8KLWNsYXNzIFJlbmFtZUZ1bmN0aW9uIDog
cHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKLXsKLXB1YmxpYzoKLSAgICBSZW5hbWVGdW5jdGlvbihj
b25zdCBUU3RyaW5nJiBvbGRGdW5jdGlvbk5hbWUsIGNvbnN0IFRTdHJpbmcmIG5ld0Z1bmN0aW9u
TmFtZSkKLSAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKQotICAgICwg
bU9sZEZ1bmN0aW9uTmFtZShvbGRGdW5jdGlvbk5hbWUpCi0gICAgLCBtTmV3RnVuY3Rpb25OYW1l
KG5ld0Z1bmN0aW9uTmFtZSkge30KLQotICAgIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlz
aXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBUT3Bl
cmF0b3Igb3AgPSBub2RlLT5nZXRPcCgpOwotICAgICAgICBpZiAoKG9wID09IEVPcEZ1bmN0aW9u
IHx8IG9wID09IEVPcEZ1bmN0aW9uQ2FsbCkgJiYgbm9kZS0+Z2V0TmFtZSgpID09IG1PbGRGdW5j
dGlvbk5hbWUpCi0gICAgICAgICAgICBub2RlLT5zZXROYW1lKG1OZXdGdW5jdGlvbk5hbWUpOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgVFN0cmlu
ZyBtT2xkRnVuY3Rpb25OYW1lOwotICAgIGNvbnN0IFRTdHJpbmcgbU5ld0Z1bmN0aW9uTmFtZTsK
LX07Ci0KLSNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9SRU5BTUVGVU5DVElPTl9IXwoK
UHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvUmVuYW1lRnVuY3Rpb24uaApfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wt
c3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVy
dHkKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L1Jld3JpdGVEb1doaWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlRG9XaGlsZS5jcHAJKHJldmlzaW9uIDIw
NzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L1Jld3JpdGVEb1doaWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTUgKzQzLDExIEBAIGNs
YXNzIERvV2hpbGVSZXdyaXRlciA6IHB1YmxpYyBUSW50ZXJtVHIKICAgcHVibGljOgogICAgIERv
V2hpbGVSZXdyaXRlcigpIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2UpIHt9
CiAKLSAgICBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2Rl
KSBvdmVycmlkZQorICAgIGJvb2wgdmlzaXRCbG9jayhWaXNpdCwgVEludGVybUJsb2NrICpub2Rl
KSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgLy8gQSB3ZWxsLWZvcm1lZCBBU1QgY2FuIG9ubHkg
aGF2ZSBkby13aGlsZSBpbiBFT3BTZXF1ZW5jZSB3aGljaCByZXByZXNlbnQgbGlzdHMgb2YKLSAg
ICAgICAgLy8gc3RhdGVtZW50cy4gQnkgZG9pbmcgYSBwcmVmaXggdHJhdmVyc2FsIHdlIGFyZSBh
YmxlIHRvIHJlcGxhY2UgdGhlIGRvLXdoaWxlIGluIHRoZQotICAgICAgICAvLyBzZXF1ZW5jZSBk
aXJlY3RseSBhcyB0aGUgY29udGVudCBvZiB0aGUgZG8td2hpbGUgd2lsbCBiZSB0cmF2ZXJzZWQg
bGF0ZXIuCi0gICAgICAgIGlmIChub2RlLT5nZXRPcCgpICE9IEVPcFNlcXVlbmNlKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQorICAgICAgICAvLyBBIHdl
bGwtZm9ybWVkIEFTVCBjYW4gb25seSBoYXZlIGRvLXdoaWxlIGluc2lkZSBUSW50ZXJtQmxvY2su
IEJ5IGRvaW5nIGEgcHJlZml4IHRyYXZlcnNhbAorICAgICAgICAvLyB3ZSBhcmUgYWJsZSB0byBy
ZXBsYWNlIHRoZSBkby13aGlsZSBpbiB0aGUgc2VxdWVuY2UgZGlyZWN0bHkgYXMgdGhlIGNvbnRl
bnQgb2YgdGhlCisgICAgICAgIC8vIGRvLXdoaWxlIHdpbGwgYmUgdHJhdmVyc2VkIGxhdGVyLgog
CiAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAqc3RhdGVtZW50cyA9IG5vZGUtPmdldFNlcXVlbmNl
KCk7CiAKQEAgLTk1LDIzICs5MSwyMiBAQCBjbGFzcyBEb1doaWxlUmV3cml0ZXIgOiBwdWJsaWMg
VEludGVybVRyCiAgICAgICAgICAgICAvLyAgICAgYnJlYWs7CiAgICAgICAgICAgICAvLyAgIH0K
ICAgICAgICAgICAgIC8vIH0KLSAgICAgICAgICAgIFRJbnRlcm1TZWxlY3Rpb24gKmJyZWFrSWYg
PSBudWxscHRyOworICAgICAgICAgICAgVEludGVybUlmRWxzZSAqYnJlYWtJZiA9IG51bGxwdHI7
CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgVEludGVybUJyYW5jaCAqYnJlYWtTdGF0
ZW1lbnQgPSBuZXcgVEludGVybUJyYW5jaChFT3BCcmVhaywgbnVsbHB0cik7CiAKLSAgICAgICAg
ICAgICAgICBUSW50ZXJtQWdncmVnYXRlICpicmVha0Jsb2NrID0gbmV3IFRJbnRlcm1BZ2dyZWdh
dGUoRU9wU2VxdWVuY2UpOworICAgICAgICAgICAgICAgIFRJbnRlcm1CbG9jayAqYnJlYWtCbG9j
ayA9IG5ldyBUSW50ZXJtQmxvY2soKTsKICAgICAgICAgICAgICAgICBicmVha0Jsb2NrLT5nZXRT
ZXF1ZW5jZSgpLT5wdXNoX2JhY2soYnJlYWtTdGF0ZW1lbnQpOwogCi0gICAgICAgICAgICAgICAg
VEludGVybVVuYXJ5ICpuZWdhdGVkQ29uZGl0aW9uID0gbmV3IFRJbnRlcm1VbmFyeShFT3BMb2dp
Y2FsTm90KTsKLSAgICAgICAgICAgICAgICBuZWdhdGVkQ29uZGl0aW9uLT5zZXRPcGVyYW5kKGxv
b3AtPmdldENvbmRpdGlvbigpKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtVW5hcnkgKm5lZ2F0
ZWRDb25kaXRpb24gPQorICAgICAgICAgICAgICAgICAgICBuZXcgVEludGVybVVuYXJ5KEVPcExv
Z2ljYWxOb3QsIGxvb3AtPmdldENvbmRpdGlvbigpKTsKIAotICAgICAgICAgICAgICAgIFRJbnRl
cm1TZWxlY3Rpb24gKmlubmVySWYgPQotICAgICAgICAgICAgICAgICAgICBuZXcgVEludGVybVNl
bGVjdGlvbihuZWdhdGVkQ29uZGl0aW9uLCBicmVha0Jsb2NrLCBudWxscHRyKTsKKyAgICAgICAg
ICAgICAgICBUSW50ZXJtSWZFbHNlICppbm5lcklmID0gbmV3IFRJbnRlcm1JZkVsc2UobmVnYXRl
ZENvbmRpdGlvbiwgYnJlYWtCbG9jaywgbnVsbHB0cik7CiAKLSAgICAgICAgICAgICAgICBUSW50
ZXJtQWdncmVnYXRlICppbm5lcklmQmxvY2sgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZShFT3BTZXF1
ZW5jZSk7CisgICAgICAgICAgICAgICAgVEludGVybUJsb2NrICppbm5lcklmQmxvY2sgPSBuZXcg
VEludGVybUJsb2NrKCk7CiAgICAgICAgICAgICAgICAgaW5uZXJJZkJsb2NrLT5nZXRTZXF1ZW5j
ZSgpLT5wdXNoX2JhY2soaW5uZXJJZik7CiAKLSAgICAgICAgICAgICAgICBicmVha0lmID0gbmV3
IFRJbnRlcm1TZWxlY3Rpb24oY3JlYXRlVGVtcFN5bWJvbChib29sVHlwZSksIGlubmVySWZCbG9j
aywgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgYnJlYWtJZiA9IG5ldyBUSW50ZXJtSWZFbHNl
KGNyZWF0ZVRlbXBTeW1ib2woYm9vbFR5cGUpLCBpbm5lcklmQmxvY2ssIG51bGxwdHIpOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBBc3NlbWJsZSB0aGUgcmVwbGFjZW1lbnQgbG9v
cHMsIHJldXNpbmcgdGhlIGRvLXdoaWxlIGxvb3AncyBib2R5IGFuZCBpbnNlcnRpbmcgb3VyCkBA
IC0xMjIsMTQgKzExNywxMCBAQCBjbGFzcyBEb1doaWxlUmV3cml0ZXIgOiBwdWJsaWMgVEludGVy
bVRyCiAgICAgICAgICAgICAgICAgdHJ1ZUNvbnN0YW50LT5zZXRCQ29uc3QodHJ1ZSk7CiAgICAg
ICAgICAgICAgICAgVEludGVybVR5cGVkICp0cnVlVmFsdWUgPSBuZXcgVEludGVybUNvbnN0YW50
VW5pb24odHJ1ZUNvbnN0YW50LCBib29sVHlwZSk7CiAKLSAgICAgICAgICAgICAgICBUSW50ZXJt
QWdncmVnYXRlICpib2R5ID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICBpZiAobG9vcC0+Z2V0
Qm9keSgpICE9IG51bGxwdHIpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICBib2R5ID0gbG9vcC0+Z2V0Qm9keSgpLT5nZXRBc0FnZ3JlZ2F0ZSgpOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgVEludGVybUJsb2Nr
ICpib2R5ID0gbG9vcC0+Z2V0Qm9keSgpOworICAgICAgICAgICAgICAgIGlmIChib2R5ID09IG51
bGxwdHIpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBib2R5ID0gbmV3
IFRJbnRlcm1BZ2dyZWdhdGUoRU9wU2VxdWVuY2UpOworICAgICAgICAgICAgICAgICAgICBib2R5
ID0gbmV3IFRJbnRlcm1CbG9jaygpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBhdXRvIHNlcXVlbmNlID0gYm9keS0+Z2V0U2VxdWVuY2UoKTsKICAgICAgICAgICAgICAgICBz
ZXF1ZW5jZS0+aW5zZXJ0KHNlcXVlbmNlLT5iZWdpbigpLCBhc3NpZ25UcnVlKTsKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVFbHNl
QmxvY2tzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlRWxzZUJsb2Nrcy5jcHAJKHJldmlzaW9uIDIwNzgwNCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Jld3Jp
dGVFbHNlQmxvY2tzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOCw2ICs4LDggQEAKIC8vCiAKICNp
bmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVFbHNlQmxvY2tzLmgiCisKKyNpbmNs
dWRlICJjb21waWxlci90cmFuc2xhdG9yL0ludGVybWVkaWF0ZS5oIgogI2luY2x1ZGUgImNvbXBp
bGVyL3RyYW5zbGF0b3IvTm9kZVNlYXJjaC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0
b3IvU3ltYm9sVGFibGUuaCIKIApAQCAtMjMsODEgKzI1LDYxIEBAIGNsYXNzIEVsc2VCbG9ja1Jl
d3JpdGVyIDogcHVibGljIFRJbnRlcm0KICAgICBFbHNlQmxvY2tSZXdyaXRlcigpOwogCiAgIHBy
b3RlY3RlZDoKLSAgICBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdn
cmVnYXRlICphZ2dyZWdhdGUpIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRGdW5jdGlvbkRlZmlu
aXRpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKmFnZ3JlZ2F0ZSkg
b3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdEJsb2NrKFZpc2l0IHZpc2l0LCBUSW50ZXJtQmxvY2sg
KmJsb2NrKSBvdmVycmlkZTsKIAogICBwcml2YXRlOgogICAgIGNvbnN0IFRUeXBlICptRnVuY3Rp
b25UeXBlOwogCi0gICAgVEludGVybU5vZGUgKnJld3JpdGVTZWxlY3Rpb24oVEludGVybVNlbGVj
dGlvbiAqc2VsZWN0aW9uKTsKKyAgICBUSW50ZXJtTm9kZSAqcmV3cml0ZUlmRWxzZShUSW50ZXJt
SWZFbHNlICppZkVsc2UpOwogfTsKIAotVEludGVybVVuYXJ5ICpNYWtlTmV3VW5hcnkoVE9wZXJh
dG9yIG9wLCBUSW50ZXJtVHlwZWQgKm9wZXJhbmQpCi17Ci0gICAgVEludGVybVVuYXJ5ICp1bmFy
eSA9IG5ldyBUSW50ZXJtVW5hcnkob3AsIG9wZXJhbmQtPmdldFR5cGUoKSk7Ci0gICAgdW5hcnkt
PnNldE9wZXJhbmQob3BlcmFuZCk7Ci0gICAgcmV0dXJuIHVuYXJ5OwotfQotCiBFbHNlQmxvY2tS
ZXdyaXRlcjo6RWxzZUJsb2NrUmV3cml0ZXIoKQogICAgIDogVEludGVybVRyYXZlcnNlcih0cnVl
LCBmYWxzZSwgdHJ1ZSksCiAgICAgICBtRnVuY3Rpb25UeXBlKE5VTEwpCiB7fQogCi1ib29sIEVs
c2VCbG9ja1Jld3JpdGVyOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3Jl
Z2F0ZSAqbm9kZSkKK2Jvb2wgRWxzZUJsb2NrUmV3cml0ZXI6OnZpc2l0RnVuY3Rpb25EZWZpbml0
aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICpub2RlKQogewotICAg
IHN3aXRjaCAobm9kZS0+Z2V0T3AoKSkKKyAgICAvLyBTdG9yZSB0aGUgY3VycmVudCBmdW5jdGlv
biBjb250ZXh0IChzZWUgY29tbWVudCBiZWxvdykKKyAgICBtRnVuY3Rpb25UeXBlID0gKCh2aXNp
dCA9PSBQcmVWaXNpdCkgPyAmbm9kZS0+Z2V0VHlwZSgpIDogbnVsbHB0cik7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgRWxzZUJsb2NrUmV3cml0ZXI6OnZpc2l0QmxvY2soVmlzaXQgdmlz
aXQsIFRJbnRlcm1CbG9jayAqbm9kZSkKK3sKKyAgICBpZiAodmlzaXQgPT0gUG9zdFZpc2l0KQog
ICAgIHsKLSAgICAgIGNhc2UgRU9wU2VxdWVuY2U6Ci0gICAgICAgIGlmICh2aXNpdCA9PSBQb3N0
VmlzaXQpCisgICAgICAgIGZvciAoc2l6ZV90IHN0YXRlbWVudEluZGV4ID0gMDsgc3RhdGVtZW50
SW5kZXggIT0gbm9kZS0+Z2V0U2VxdWVuY2UoKS0+c2l6ZSgpOworICAgICAgICAgICAgIHN0YXRl
bWVudEluZGV4KyspCiAgICAgICAgIHsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IHN0YXRlbWVu
dEluZGV4ID0gMDsgc3RhdGVtZW50SW5kZXggIT0gbm9kZS0+Z2V0U2VxdWVuY2UoKS0+c2l6ZSgp
OyBzdGF0ZW1lbnRJbmRleCsrKQorICAgICAgICAgICAgVEludGVybU5vZGUgKnN0YXRlbWVudCA9
ICgqbm9kZS0+Z2V0U2VxdWVuY2UoKSlbc3RhdGVtZW50SW5kZXhdOworICAgICAgICAgICAgVElu
dGVybUlmRWxzZSAqaWZFbHNlICA9IHN0YXRlbWVudC0+Z2V0QXNJZkVsc2VOb2RlKCk7CisgICAg
ICAgICAgICBpZiAoaWZFbHNlICYmIGlmRWxzZS0+Z2V0RmFsc2VCbG9jaygpICE9IG51bGxwdHIp
CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgVEludGVybU5vZGUgKnN0YXRlbWVudCA9
ICgqbm9kZS0+Z2V0U2VxdWVuY2UoKSlbc3RhdGVtZW50SW5kZXhdOwotICAgICAgICAgICAgICAg
IFRJbnRlcm1TZWxlY3Rpb24gKnNlbGVjdGlvbiA9IHN0YXRlbWVudC0+Z2V0QXNTZWxlY3Rpb25O
b2RlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvbiAmJiBzZWxlY3Rpb24tPmdldEZh
bHNlQmxvY2soKSAhPSBudWxscHRyKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgLy8gQ2hlY2sgZm9yIGlmIC8gZWxzZSBpZgotICAgICAgICAgICAgICAgICAgICBUSW50
ZXJtU2VsZWN0aW9uICplbHNlSWZCcmFuY2ggPSBzZWxlY3Rpb24tPmdldEZhbHNlQmxvY2soKS0+
Z2V0QXNTZWxlY3Rpb25Ob2RlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlbHNlSWZCcmFu
Y2gpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVj
dGlvbi0+cmVwbGFjZUNoaWxkTm9kZShlbHNlSWZCcmFuY2gsIHJld3JpdGVTZWxlY3Rpb24oZWxz
ZUlmQnJhbmNoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgZWxzZUlmQnJhbmNo
OwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgKCpub2RlLT5n
ZXRTZXF1ZW5jZSgpKVtzdGF0ZW1lbnRJbmRleF0gPSByZXdyaXRlU2VsZWN0aW9uKHNlbGVjdGlv
bik7Ci0gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzZWxlY3Rpb247Ci0gICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICgqbm9kZS0+Z2V0U2VxdWVuY2UoKSlbc3RhdGVtZW50SW5k
ZXhdID0gcmV3cml0ZUlmRWxzZShpZkVsc2UpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0g
ICAgICAgIGJyZWFrOwotCi0gICAgICBjYXNlIEVPcEZ1bmN0aW9uOgotICAgICAgICAvLyBTdG9y
ZSB0aGUgY3VycmVudCBmdW5jdGlvbiBjb250ZXh0IChzZWUgY29tbWVudCBiZWxvdykKLSAgICAg
ICAgbUZ1bmN0aW9uVHlwZSA9ICgodmlzaXQgPT0gUHJlVmlzaXQpID8gJm5vZGUtPmdldFR5cGUo
KSA6IE5VTEwpOwotICAgICAgICBicmVhazsKLQotICAgICAgZGVmYXVsdDogYnJlYWs7CiAgICAg
fQotCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVRJbnRlcm1Ob2RlICpFbHNlQmxvY2tSZXdyaXRl
cjo6cmV3cml0ZVNlbGVjdGlvbihUSW50ZXJtU2VsZWN0aW9uICpzZWxlY3Rpb24pCitUSW50ZXJt
Tm9kZSAqRWxzZUJsb2NrUmV3cml0ZXI6OnJld3JpdGVJZkVsc2UoVEludGVybUlmRWxzZSAqaWZF
bHNlKQogewotICAgIEFTU0VSVChzZWxlY3Rpb24gIT0gbnVsbHB0cik7CisgICAgQVNTRVJUKGlm
RWxzZSAhPSBudWxscHRyKTsKIAogICAgIG5leHRUZW1wb3JhcnlJbmRleCgpOwogCi0gICAgVElu
dGVybVR5cGVkICp0eXBlZENvbmRpdGlvbiA9IHNlbGVjdGlvbi0+Z2V0Q29uZGl0aW9uKCktPmdl
dEFzVHlwZWQoKTsKKyAgICBUSW50ZXJtVHlwZWQgKnR5cGVkQ29uZGl0aW9uICAgICA9IGlmRWxz
ZS0+Z2V0Q29uZGl0aW9uKCktPmdldEFzVHlwZWQoKTsKICAgICBUSW50ZXJtQWdncmVnYXRlICpz
dG9yZUNvbmRpdGlvbiA9IGNyZWF0ZVRlbXBJbml0RGVjbGFyYXRpb24odHlwZWRDb25kaXRpb24p
OwogCi0gICAgVEludGVybVNlbGVjdGlvbiAqZmFsc2VCbG9jayA9IG51bGxwdHI7CisgICAgVElu
dGVybUJsb2NrICpmYWxzZUJsb2NrID0gbnVsbHB0cjsKIAogICAgIFRUeXBlIGJvb2xUeXBlKEVi
dEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxVGVtcG9yYXJ5KTsKIAotICAgIGlmIChzZWxlY3Rpb24t
PmdldEZhbHNlQmxvY2soKSkKKyAgICBpZiAoaWZFbHNlLT5nZXRGYWxzZUJsb2NrKCkpCiAgICAg
ewotICAgICAgICBUSW50ZXJtQWdncmVnYXRlICpuZWdhdGVkRWxzZSA9IG51bGxwdHI7CisgICAg
ICAgIFRJbnRlcm1CbG9jayAqbmVnYXRlZEVsc2UgPSBudWxscHRyOwogICAgICAgICAvLyBjcmJ1
Zy5jb20vMzQ2NDYzCiAgICAgICAgIC8vIEQzRCBnZW5lcmF0ZXMgZXJyb3IgbWVzc2FnZXMgY2xh
aW1pbmcgYSBmdW5jdGlvbiBoYXMgbm8gcmV0dXJuIHZhbHVlLCB3aGVuIHJld3JpdGluZwogICAg
ICAgICAvLyBhbiBpZi1lbHNlIGNsYXVzZSB0aGF0IHJldHVybnMgc29tZXRoaW5nIG5vbi12b2lk
IGluIGEgZnVuY3Rpb24uIEJ5IGFwcGVuZGluZyBkdW1teQpAQCAtMTA4LDIyICs5MCwyNCBAQCBU
SW50ZXJtTm9kZSAqRWxzZUJsb2NrUmV3cml0ZXI6OnJld3JpdGVTCiAgICAgICAgICAgICAgICAg
bUZ1bmN0aW9uVHlwZS0+Z2V0QmFzaWNTdHJpbmcoKTsKICAgICAgICAgICAgIFRTdHJpbmcgcmF3
VGV4dCA9ICJyZXR1cm4gKCIgKyB0eXBlU3RyaW5nICsgIikwIjsKICAgICAgICAgICAgIFRJbnRl
cm1SYXcgKnJldHVybk5vZGUgPSBuZXcgVEludGVybVJhdygqbUZ1bmN0aW9uVHlwZSwgcmF3VGV4
dCk7Ci0gICAgICAgICAgICBuZWdhdGVkRWxzZSA9IG5ldyBUSW50ZXJtQWdncmVnYXRlKEVPcFNl
cXVlbmNlKTsKKyAgICAgICAgICAgIG5lZ2F0ZWRFbHNlICAgICAgICAgICAgPSBuZXcgVEludGVy
bUJsb2NrKCk7CiAgICAgICAgICAgICBuZWdhdGVkRWxzZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9i
YWNrKHJldHVybk5vZGUpOwogICAgICAgICB9CiAKICAgICAgICAgVEludGVybVN5bWJvbCAqY29u
ZGl0aW9uU3ltYm9sRWxzZSA9IGNyZWF0ZVRlbXBTeW1ib2woYm9vbFR5cGUpOwotICAgICAgICBU
SW50ZXJtVW5hcnkgKm5lZ2F0ZWRDb25kaXRpb24gPSBNYWtlTmV3VW5hcnkoRU9wTG9naWNhbE5v
dCwgY29uZGl0aW9uU3ltYm9sRWxzZSk7Ci0gICAgICAgIGZhbHNlQmxvY2sgPSBuZXcgVEludGVy
bVNlbGVjdGlvbihuZWdhdGVkQ29uZGl0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZWN0aW9uLT5nZXRGYWxzZUJsb2NrKCksIG5lZ2F0ZWRFbHNlKTsK
KyAgICAgICAgVEludGVybVVuYXJ5ICpuZWdhdGVkQ29uZGl0aW9uICAgICA9IG5ldyBUSW50ZXJt
VW5hcnkoRU9wTG9naWNhbE5vdCwgY29uZGl0aW9uU3ltYm9sRWxzZSk7CisgICAgICAgIFRJbnRl
cm1JZkVsc2UgKmZhbHNlSWZFbHNlID0KKyAgICAgICAgICAgIG5ldyBUSW50ZXJtSWZFbHNlKG5l
Z2F0ZWRDb25kaXRpb24sIGlmRWxzZS0+Z2V0RmFsc2VCbG9jaygpLCBuZWdhdGVkRWxzZSk7Cisg
ICAgICAgIGZhbHNlQmxvY2sgPSBUSW50ZXJtZWRpYXRlOjpFbnN1cmVCbG9jayhmYWxzZUlmRWxz
ZSk7CiAgICAgfQogCiAgICAgVEludGVybVN5bWJvbCAqY29uZGl0aW9uU3ltYm9sU2VsID0gY3Jl
YXRlVGVtcFN5bWJvbChib29sVHlwZSk7Ci0gICAgVEludGVybVNlbGVjdGlvbiAqbmV3U2VsZWN0
aW9uID0gbmV3IFRJbnRlcm1TZWxlY3Rpb24oY29uZGl0aW9uU3ltYm9sU2VsLCBzZWxlY3Rpb24t
PmdldFRydWVCbG9jaygpLCBmYWxzZUJsb2NrKTsKKyAgICBUSW50ZXJtSWZFbHNlICpuZXdJZkVs
c2UgPQorICAgICAgICBuZXcgVEludGVybUlmRWxzZShjb25kaXRpb25TeW1ib2xTZWwsIGlmRWxz
ZS0+Z2V0VHJ1ZUJsb2NrKCksIGZhbHNlQmxvY2spOwogCi0gICAgVEludGVybUFnZ3JlZ2F0ZSAq
YmxvY2sgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZShFT3BTZXF1ZW5jZSk7CisgICAgVEludGVybUJs
b2NrICpibG9jayA9IG5ldyBUSW50ZXJtQmxvY2soKTsKICAgICBibG9jay0+Z2V0U2VxdWVuY2Uo
KS0+cHVzaF9iYWNrKHN0b3JlQ29uZGl0aW9uKTsKLSAgICBibG9jay0+Z2V0U2VxdWVuY2UoKS0+
cHVzaF9iYWNrKG5ld1NlbGVjdGlvbik7CisgICAgYmxvY2stPmdldFNlcXVlbmNlKCktPnB1c2hf
YmFjayhuZXdJZkVsc2UpOwogCiAgICAgcmV0dXJuIGJsb2NrOwogfQpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVRleGVsRmV0Y2hP
ZmZzZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1Jld3JpdGVUZXhlbEZldGNoT2Zmc2V0LmNwcAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdy
aXRlVGV4ZWxGZXRjaE9mZnNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNzAgQEAK
Ky8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworLy8gSW1wbGVtZW50YXRpb24gb2YgdGV4ZWxGZXRjaE9mZnNldCB0cmFu
c2xhdGlvbiBpc3N1ZSB3b3JrYXJvdW5kLgorLy8gU2VlIGhlYWRlciBmb3IgbW9yZSBpbmZvLgor
CisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlVGV4ZWxGZXRjaE9mZnNldC5o
IgorCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJjb21waWxlci90
cmFuc2xhdG9yL0ludGVybU5vZGUuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1N5
bWJvbFRhYmxlLmgiCisKK25hbWVzcGFjZSBzaAoreworCituYW1lc3BhY2UKK3sKKworY2xhc3Mg
VHJhdmVyc2VyIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKK3sKKyAgcHVibGljOgorICAgIHN0
YXRpYyB2b2lkIEFwcGx5KFRJbnRlcm1Ob2RlICpyb290LAorICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFibGUsCisgICAgICAgICAgICAgICAgICAgICAg
aW50IHNoYWRlclZlcnNpb24pOworCisgIHByaXZhdGU6CisgICAgVHJhdmVyc2VyKGNvbnN0IFRT
eW1ib2xUYWJsZSAmc3ltYm9sVGFibGUsIGludCBzaGFkZXJWZXJzaW9uKTsKKyAgICBib29sIHZp
c2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKSBvdmVycmlk
ZTsKKyAgICB2b2lkIG5leHRJdGVyYXRpb24oKTsKKworICAgIGNvbnN0IFRTeW1ib2xUYWJsZSAq
c3ltYm9sVGFibGU7CisgICAgY29uc3QgaW50IHNoYWRlclZlcnNpb247CisgICAgYm9vbCBtRm91
bmQgPSBmYWxzZTsKK307CisKK1RyYXZlcnNlcjo6VHJhdmVyc2VyKGNvbnN0IFRTeW1ib2xUYWJs
ZSAmc3ltYm9sVGFibGUsIGludCBzaGFkZXJWZXJzaW9uKQorICAgIDogVEludGVybVRyYXZlcnNl
cih0cnVlLCBmYWxzZSwgZmFsc2UpLCBzeW1ib2xUYWJsZSgmc3ltYm9sVGFibGUpLCBzaGFkZXJW
ZXJzaW9uKHNoYWRlclZlcnNpb24pCit7Cit9CisKKy8vIHN0YXRpYwordm9pZCBUcmF2ZXJzZXI6
OkFwcGx5KFRJbnRlcm1Ob2RlICpyb290LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRT
eW1ib2xUYWJsZSAmc3ltYm9sVGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgaW50IHNoYWRl
clZlcnNpb24pCit7CisgICAgVHJhdmVyc2VyIHRyYXZlcnNlcihzeW1ib2xUYWJsZSwgc2hhZGVy
VmVyc2lvbik7CisgICAgZG8KKyAgICB7CisgICAgICAgIHRyYXZlcnNlci5uZXh0SXRlcmF0aW9u
KCk7CisgICAgICAgIHJvb3QtPnRyYXZlcnNlKCZ0cmF2ZXJzZXIpOworICAgICAgICBpZiAodHJh
dmVyc2VyLm1Gb3VuZCkKKyAgICAgICAgeworICAgICAgICAgICAgdHJhdmVyc2VyLnVwZGF0ZVRy
ZWUoKTsKKyAgICAgICAgfQorICAgIH0gd2hpbGUgKHRyYXZlcnNlci5tRm91bmQpOworfQorCit2
b2lkIFRyYXZlcnNlcjo6bmV4dEl0ZXJhdGlvbigpCit7CisgICAgbUZvdW5kID0gZmFsc2U7Cit9
CisKK2Jvb2wgVHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFn
Z3JlZ2F0ZSAqbm9kZSkKK3sKKyAgICBpZiAobUZvdW5kKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIC8vIERlY2lkZSBpZiB0aGUgbm9kZSByZXByZXNlbnRzIHRo
ZSBjYWxsIG9mIHRleGVsRmV0Y2hPZmZzZXQuCisgICAgaWYgKG5vZGUtPmdldE9wKCkgIT0gRU9w
RnVuY3Rpb25DYWxsIHx8IG5vZGUtPmlzVXNlckRlZmluZWQoKSkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKworICAgIGlmIChub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8o
KS0+Z2V0TmFtZSgpLmNvbXBhcmUoMCwgMTYsICJ0ZXhlbEZldGNoT2Zmc2V0IikgIT0gMCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIFBvdGVudGlhbCBwcm9i
bGVtIGNhc2UgZGV0ZWN0ZWQsIGFwcGx5IHdvcmthcm91bmQuCisgICAgY29uc3QgVEludGVybVNl
cXVlbmNlICpzZXF1ZW5jZSA9IG5vZGUtPmdldFNlcXVlbmNlKCk7CisgICAgQVNTRVJUKHNlcXVl
bmNlLT5zaXplKCkgPT0gNHUpOworCisgICAgLy8gRGVjaWRlIGlmIHRoZXJlIGlzIGEgMkRBcnJh
eSBzYW1wbGVyLgorICAgIGJvb2wgaXMyREFycmF5ID0gbm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJ
bmZvKCktPmdldE5hbWUoKS5maW5kKCJzMmExIikgIT0gVFN0cmluZzo6bnBvczsKKworICAgIC8v
IENyZWF0ZSBuZXcgYXJndW1lbnQgbGlzdCBmcm9tIG5vZGUtPmdldE5hbWUoKS4KKyAgICAvLyBl
LmcuIEdldCAiKGlzMmExO3ZpMztpMTsiIGZyb20gInRleGVsRmV0Y2hPZmZzZXQoaXMyYTE7dmkz
O2kxO3ZpMjsiCisgICAgVFN0cmluZyBuZXdBcmdzID0gbm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJ
bmZvKCktPmdldE5hbWUoKS5zdWJzdHIoCisgICAgICAgIDE2LCBub2RlLT5nZXRGdW5jdGlvblN5
bWJvbEluZm8oKS0+Z2V0TmFtZSgpLmxlbmd0aCgpIC0gMjApOworICAgIFRTdHJpbmcgbmV3TmFt
ZSAgICAgICAgICAgPSAidGV4ZWxGZXRjaCIgKyBuZXdBcmdzOworICAgIFRTeW1ib2wgKnRleGVs
RmV0Y2hTeW1ib2wgPSBzeW1ib2xUYWJsZS0+ZmluZEJ1aWx0SW4obmV3TmFtZSwgc2hhZGVyVmVy
c2lvbik7CisgICAgQVNTRVJUKHRleGVsRmV0Y2hTeW1ib2wpOworICAgIGludCB1bmlxdWVJZCA9
IHRleGVsRmV0Y2hTeW1ib2wtPmdldFVuaXF1ZUlkKCk7CisKKyAgICAvLyBDcmVhdGUgbmV3IG5v
ZGUgdGhhdCByZXByZXNlbnRzIHRoZSBjYWxsIG9mIGZ1bmN0aW9uIHRleGVsRmV0Y2guCisgICAg
Ly8gSXRzIGFyZ3VtZW50IGxpc3Qgd2lsbCBiZTogdGV4ZWxGZXRjaChzYW1wbGVyLCBQb3NpdGlv
bitvZmZzZXQsIGxvZCkuCisgICAgVEludGVybUFnZ3JlZ2F0ZSAqdGV4ZWxGZXRjaE5vZGUgPSBu
ZXcgVEludGVybUFnZ3JlZ2F0ZShFT3BGdW5jdGlvbkNhbGwpOworICAgIHRleGVsRmV0Y2hOb2Rl
LT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+c2V0TmFtZShuZXdOYW1lKTsKKyAgICB0ZXhlbEZl
dGNoTm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPnNldElkKHVuaXF1ZUlkKTsKKyAgICB0
ZXhlbEZldGNoTm9kZS0+c2V0VHlwZShub2RlLT5nZXRUeXBlKCkpOworICAgIHRleGVsRmV0Y2hO
b2RlLT5zZXRMaW5lKG5vZGUtPmdldExpbmUoKSk7CisKKyAgICAvLyBzYW1wbGVyCisgICAgdGV4
ZWxGZXRjaE5vZGUtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhzZXF1ZW5jZS0+YXQoMCkpOwor
CisgICAgLy8gUG9zaXRpb24KKyAgICBUSW50ZXJtVHlwZWQgKnRleENvb3JkTm9kZSA9IHNlcXVl
bmNlLT5hdCgxKS0+Z2V0QXNUeXBlZCgpOworICAgIEFTU0VSVCh0ZXhDb29yZE5vZGUpOworCisg
ICAgLy8gb2Zmc2V0CisgICAgVEludGVybVR5cGVkICpvZmZzZXROb2RlID0gbnVsbHB0cjsKKyAg
ICBBU1NFUlQoc2VxdWVuY2UtPmF0KDMpLT5nZXRBc1R5cGVkKCkpOworICAgIGlmIChpczJEQXJy
YXkpCisgICAgeworICAgICAgICAvLyBGb3IgMkRBcnJheSBzYW1wbGVycywgUG9zaXRpb24gaXMg
aXZlYzMgYW5kIG9mZnNldCBpcyBpdmVjMjsKKyAgICAgICAgLy8gU28gb2Zmc2V0IG11c3QgYmUg
Y29udmVydGVkIGludG8gYW4gaXZlYzMgYmVmb3JlIGJlaW5nIGFkZGVkIHRvIFBvc2l0aW9uLgor
ICAgICAgICBUSW50ZXJtQWdncmVnYXRlICpjb25zdHJ1Y3RJVmVjM05vZGUgPSBuZXcgVEludGVy
bUFnZ3JlZ2F0ZShFT3BDb25zdHJ1Y3RJVmVjMyk7CisgICAgICAgIGNvbnN0cnVjdElWZWMzTm9k
ZS0+c2V0TGluZSh0ZXhDb29yZE5vZGUtPmdldExpbmUoKSk7CisgICAgICAgIGNvbnN0cnVjdElW
ZWMzTm9kZS0+c2V0VHlwZSh0ZXhDb29yZE5vZGUtPmdldFR5cGUoKSk7CisKKyAgICAgICAgY29u
c3RydWN0SVZlYzNOb2RlLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2soc2VxdWVuY2UtPmF0KDMp
LT5nZXRBc1R5cGVkKCkpOworCisgICAgICAgIFRDb25zdGFudFVuaW9uICp6ZXJvID0gbmV3IFRD
b25zdGFudFVuaW9uKCk7CisgICAgICAgIHplcm8tPnNldElDb25zdCgwKTsKKyAgICAgICAgVFR5
cGUgKmludFR5cGUgPSBuZXcgVFR5cGUoRWJ0SW50KTsKKworICAgICAgICBUSW50ZXJtQ29uc3Rh
bnRVbmlvbiAqemVyb05vZGUgPSBuZXcgVEludGVybUNvbnN0YW50VW5pb24oemVybywgKmludFR5
cGUpOworICAgICAgICBjb25zdHJ1Y3RJVmVjM05vZGUtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFj
ayh6ZXJvTm9kZSk7CisKKyAgICAgICAgb2Zmc2V0Tm9kZSA9IGNvbnN0cnVjdElWZWMzTm9kZTsK
KyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgb2Zmc2V0Tm9kZSA9IHNlcXVlbmNlLT5h
dCgzKS0+Z2V0QXNUeXBlZCgpOworICAgIH0KKworICAgIC8vIFBvc2l0aW9uK29mZnNldAorICAg
IFRJbnRlcm1CaW5hcnkgKmFkZCA9IG5ldyBUSW50ZXJtQmluYXJ5KEVPcEFkZCwgdGV4Q29vcmRO
b2RlLCBvZmZzZXROb2RlKTsKKyAgICBhZGQtPnNldExpbmUodGV4Q29vcmROb2RlLT5nZXRMaW5l
KCkpOworICAgIHRleGVsRmV0Y2hOb2RlLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2soYWRkKTsK
KworICAgIC8vIGxvZAorICAgIHRleGVsRmV0Y2hOb2RlLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2Jh
Y2soc2VxdWVuY2UtPmF0KDIpKTsKKworICAgIEFTU0VSVCh0ZXhlbEZldGNoTm9kZS0+Z2V0U2Vx
dWVuY2UoKS0+c2l6ZSgpID09IDN1KTsKKworICAgIC8vIFJlcGxhY2UgdGhlIG9sZCBub2RlIGJ5
IHRoaXMgbmV3IG5vZGUuCisgICAgcXVldWVSZXBsYWNlbWVudChub2RlLCB0ZXhlbEZldGNoTm9k
ZSwgT3JpZ2luYWxOb2RlOjpJU19EUk9QUEVEKTsKKyAgICBtRm91bmQgPSB0cnVlOworICAgIHJl
dHVybiBmYWxzZTsKK30KKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCit2b2lkIFJld3Jp
dGVUZXhlbEZldGNoT2Zmc2V0KFRJbnRlcm1Ob2RlICpyb290LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgc2hhZGVyVmVyc2lvbikKK3sKKyAgICAvLyB0ZXhlbEZldGNo
T2Zmc2V0IGlzIG9ubHkgdmFsaWQgaW4gR0xTTCAzLjAgYW5kIGxhdGVyLgorICAgIGlmIChzaGFk
ZXJWZXJzaW9uIDwgMzAwKQorICAgICAgICByZXR1cm47CisKKyAgICBUcmF2ZXJzZXI6OkFwcGx5
KHJvb3QsIHN5bWJvbFRhYmxlLCBzaGFkZXJWZXJzaW9uKTsKK30KKworfSAgLy8gbmFtZXNwYWNl
IHNoCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9SZXdyaXRlVGV4ZWxGZXRjaE9mZnNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVUZXhlbEZldGNoT2Zmc2V0
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDMwIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFRoaXMgbXV0YXRpbmcgdHJlZSB0cmF2ZXJz
YWwgd29ya3MgYXJvdW5kIGFuIGlzc3VlIG9uIHRoZSB0cmFuc2xhdGlvbgorLy8gZnJvbSB0ZXhl
bEZldGNoT2Zmc2V0IGludG8gSExTTCBmdW5jdGlvbiBMb2FkIG9uIElOVEVMIGRyaXZlcnMuIEl0
CisvLyB3b3JrcyBieSB0cmFuc2xhdGluZyB0ZXhlbEZldGNoT2Zmc2V0IGludG8gdGV4ZWxGZXRj
aDoKKy8vCisvLyAtIEZyb206IHRleGVsRmV0Y2hPZmZzZXQoc2FtcGxlciwgUG9zaXRpb24sIGxv
ZCwgb2Zmc2V0KQorLy8gLSBUbzogdGV4ZWxGZXRjaChzYW1wbGVyLCBQb3NpdGlvbitvZmZzZXQs
IGxvZCkKKy8vCisvLyBTZWUgaHR0cDovL2FuZ2xlYnVnLmNvbS8xNDY5CisKKyNpZm5kZWYgQ09N
UElMRVJfVFJBTlNMQVRPUl9SRVdSSVRFX1RFWEVMRkVUQ0hPRkZTRVRfSF8KKyNkZWZpbmUgQ09N
UElMRVJfVFJBTlNMQVRPUl9SRVdSSVRFX1RFWEVMRkVUQ0hPRkZTRVRfSF8KKworY2xhc3MgVElu
dGVybU5vZGU7CitjbGFzcyBUU3ltYm9sVGFibGU7CisKK25hbWVzcGFjZSBzaAoreworCit2b2lk
IFJld3JpdGVUZXhlbEZldGNoT2Zmc2V0KFRJbnRlcm1Ob2RlICpyb290LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2hhZGVyVmVyc2lvbik7CisKK30gIC8vIG5hbWVz
cGFjZSBzaAorCisjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfUkVXUklURV9URVhFTEZF
VENIT0ZGU0VUX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9SZXdyaXRlVW5hcnlNaW51c09wZXJhdG9ySW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRl
VW5hcnlNaW51c09wZXJhdG9ySW50LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlVW5hcnlNaW51c09wZXJh
dG9ySW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExMiBAQAorLy8KKy8vIENvcHly
aWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8v
CisvLyBJbXBsZW1lbnRhdGlvbiBvZiBldmFsdWF0aW5nIHVuYXJ5IGludGVnZXIgdmFyaWFibGUg
YnVnIHdvcmthcm91bmQuCisvLyBTZWUgaGVhZGVyIGZvciBtb3JlIGluZm8uCisKKyNpbmNsdWRl
ICJjb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JJbnQuaCIKKwor
I2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgorCituYW1lc3BhY2Ug
c2gKK3sKKworbmFtZXNwYWNlCit7CisKK2NsYXNzIFRyYXZlcnNlciA6IHB1YmxpYyBUSW50ZXJt
VHJhdmVyc2VyCit7CisgIHB1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBBcHBseShUSW50ZXJtTm9k
ZSAqcm9vdCk7CisKKyAgcHJpdmF0ZToKKyAgICBUcmF2ZXJzZXIoKTsKKyAgICBib29sIHZpc2l0
VW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1VbmFyeSAqbm9kZSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBuZXh0SXRlcmF0aW9uKCk7CisKKyAgICBib29sIG1Gb3VuZCA9IGZhbHNlOworfTsKKworLy8g
c3RhdGljCit2b2lkIFRyYXZlcnNlcjo6QXBwbHkoVEludGVybU5vZGUgKnJvb3QpCit7CisgICAg
VHJhdmVyc2VyIHRyYXZlcnNlcjsKKyAgICBkbworICAgIHsKKyAgICAgICAgdHJhdmVyc2VyLm5l
eHRJdGVyYXRpb24oKTsKKyAgICAgICAgcm9vdC0+dHJhdmVyc2UoJnRyYXZlcnNlcik7CisgICAg
ICAgIGlmICh0cmF2ZXJzZXIubUZvdW5kKQorICAgICAgICB7CisgICAgICAgICAgICB0cmF2ZXJz
ZXIudXBkYXRlVHJlZSgpOworICAgICAgICB9CisgICAgfSB3aGlsZSAodHJhdmVyc2VyLm1Gb3Vu
ZCk7Cit9CisKK1RyYXZlcnNlcjo6VHJhdmVyc2VyKCkgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUs
IGZhbHNlLCBmYWxzZSkKK3sKK30KKwordm9pZCBUcmF2ZXJzZXI6Om5leHRJdGVyYXRpb24oKQor
eworICAgIG1Gb3VuZCA9IGZhbHNlOworfQorCitib29sIFRyYXZlcnNlcjo6dmlzaXRVbmFyeShW
aXNpdCB2aXNpdCwgVEludGVybVVuYXJ5ICpub2RlKQoreworICAgIGlmIChtRm91bmQpCisgICAg
eworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gRGVjaWRlIGlmIHRoZSBj
dXJyZW50IHVuYXJ5IG9wZXJhdG9yIGlzIHVuYXJ5IG1pbnVzLgorICAgIGlmIChub2RlLT5nZXRP
cCgpICE9IEVPcE5lZ2F0aXZlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgLy8gRGVjaWRlIGlmIHRoZSBjdXJyZW50IG9wZXJhbmQgaXMgYW4gaW50ZWdlciB2YXJp
YWJsZS4KKyAgICBUSW50ZXJtVHlwZWQgKm9wciA9IG5vZGUtPmdldE9wZXJhbmQoKTsKKyAgICBp
ZiAoIW9wci0+Z2V0VHlwZSgpLmlzU2NhbGFySW50KCkpCisgICAgeworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICAvLyBQb3RlbnRpYWwgcHJvYmxlbSBjYXNlIGRldGVjdGVkLCBh
cHBseSB3b3JrYXJvdW5kOiAtKGludCkgLT4gfihpbnQpICsgMS4KKyAgICAvLyB+KGludCkKKyAg
ICBUSW50ZXJtVW5hcnkgKmJpdHdpc2VOb3QgPSBuZXcgVEludGVybVVuYXJ5KEVPcEJpdHdpc2VO
b3QsIG9wcik7CisgICAgYml0d2lzZU5vdC0+c2V0TGluZShvcHItPmdldExpbmUoKSk7CisKKyAg
ICAvLyBDb25zdGFudCAxIChvciAxdSkKKyAgICBUQ29uc3RhbnRVbmlvbiAqb25lID0gbmV3IFRD
b25zdGFudFVuaW9uKCk7CisgICAgaWYgKG9wci0+Z2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpID09
IEVidEludCkKKyAgICB7CisgICAgICAgIG9uZS0+c2V0SUNvbnN0KDEpOworICAgIH0KKyAgICBl
bHNlCisgICAgeworICAgICAgICBvbmUtPnNldFVDb25zdCgxdSk7CisgICAgfQorICAgIFRJbnRl
cm1Db25zdGFudFVuaW9uICpvbmVOb2RlID0gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9uKG9uZSwg
b3ByLT5nZXRUeXBlKCkpOworICAgIG9uZU5vZGUtPmdldFR5cGVQb2ludGVyKCktPnNldFF1YWxp
ZmllcihFdnFDb25zdCk7CisgICAgb25lTm9kZS0+c2V0TGluZShvcHItPmdldExpbmUoKSk7CisK
KyAgICAvLyB+KGludCkgKyAxCisgICAgVEludGVybUJpbmFyeSAqYWRkID0gbmV3IFRJbnRlcm1C
aW5hcnkoRU9wQWRkLCBiaXR3aXNlTm90LCBvbmVOb2RlKTsKKyAgICBhZGQtPnNldExpbmUob3By
LT5nZXRMaW5lKCkpOworCisgICAgcXVldWVSZXBsYWNlbWVudChub2RlLCBhZGQsIE9yaWdpbmFs
Tm9kZTo6SVNfRFJPUFBFRCk7CisKKyAgICBtRm91bmQgPSB0cnVlOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCit2b2lkIFJld3JpdGVVbmFyeU1p
bnVzT3BlcmF0b3JJbnQoVEludGVybU5vZGUgKnJvb3QpCit7CisgICAgVHJhdmVyc2VyOjpBcHBs
eShyb290KTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHNoCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlVW5hcnlNaW51c09wZXJhdG9y
SW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckludC5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Jld3Jp
dGVVbmFyeU1pbnVzT3BlcmF0b3JJbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIwIEBA
CisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworLy8gVGhpcyBtdXRhdGluZyB0cmVlIHRyYXZlcnNhbCB3b3JrcyBhcm91bmQg
YSBidWcgb24gZXZhbHVhdGluZyB1bmFyeQorLy8gaW50ZWdlciB2YXJpYWJsZSBvbiBJbnRlbCBE
M0QgZHJpdmVyLiBJdCB3b3JrcyBieSByZXdyaXRpbmcgLShpbnQpIHRvCisvLyB+KGludCkgKyAx
IHdoZW4gZXZhbHVhdGluZyB1bmFyeSBpbnRlZ2VyIHZhcmlhYmxlcy4KKworI2lmbmRlZiBDT01Q
SUxFUl9UUkFOU0xBVE9SX1JFV1JJVEVVTkFSWU1JTlVTT1BFUkFUT1JJTlRfSF8KKyNkZWZpbmUg
Q09NUElMRVJfVFJBTlNMQVRPUl9SRVdSSVRFVU5BUllNSU5VU09QRVJBVE9SSU5UX0hfCisKK2Ns
YXNzIFRJbnRlcm1Ob2RlOworbmFtZXNwYWNlIHNoCit7CisKK3ZvaWQgUmV3cml0ZVVuYXJ5TWlu
dXNPcGVyYXRvckludChUSW50ZXJtTm9kZSAqcm9vdCk7CisKK30gIC8vIG5hbWVzcGFjZSBzaAor
CisjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfUkVXUklURVVOQVJZTUlOVVNPUEVSQVRP
UklOVF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvU2NhbGFyaXplVmVjQW5kTWF0Q29uc3RydWN0b3JBcmdzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TY2FsYXJp
emVWZWNBbmRNYXRDb25zdHJ1Y3RvckFyZ3MuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TY2FsYXJpemVWZWNB
bmRNYXRDb25zdHJ1Y3RvckFyZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywyMyArMzcsOSBA
QCBib29sIENvbnRhaW5zVmVjdG9yTm9kZShjb25zdCBUSW50ZXJtU2VxCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1USW50ZXJtQ29uc3RhbnRVbmlvbiAqQ29uc3RydWN0SW5kZXhOb2RlKGludCBp
bmRleCkKLXsKLSAgICBUQ29uc3RhbnRVbmlvbiAqdSA9IG5ldyBUQ29uc3RhbnRVbmlvblsxXTsK
LSAgICB1WzBdLnNldElDb25zdChpbmRleCk7Ci0KLSAgICBUVHlwZSB0eXBlKEVidEludCwgRWJw
VW5kZWZpbmVkLCBFdnFDb25zdCwgMSk7Ci0gICAgVEludGVybUNvbnN0YW50VW5pb24gKm5vZGUg
PSBuZXcgVEludGVybUNvbnN0YW50VW5pb24odSwgdHlwZSk7Ci0gICAgcmV0dXJuIG5vZGU7Ci19
Ci0KIFRJbnRlcm1CaW5hcnkgKkNvbnN0cnVjdFZlY3RvckluZGV4QmluYXJ5Tm9kZShUSW50ZXJt
U3ltYm9sICpzeW1ib2xOb2RlLCBpbnQgaW5kZXgpCiB7Ci0gICAgVEludGVybUJpbmFyeSAqYmlu
YXJ5ID0gbmV3IFRJbnRlcm1CaW5hcnkoRU9wSW5kZXhEaXJlY3QpOwotICAgIGJpbmFyeS0+c2V0
TGVmdChzeW1ib2xOb2RlKTsKLSAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqaW5kZXhOb2RlID0g
Q29uc3RydWN0SW5kZXhOb2RlKGluZGV4KTsKLSAgICBiaW5hcnktPnNldFJpZ2h0KGluZGV4Tm9k
ZSk7Ci0gICAgcmV0dXJuIGJpbmFyeTsKKyAgICByZXR1cm4gbmV3IFRJbnRlcm1CaW5hcnkoRU9w
SW5kZXhEaXJlY3QsIHN5bWJvbE5vZGUsIFRJbnRlcm1UeXBlZDo6Q3JlYXRlSW5kZXhOb2RlKGlu
ZGV4KSk7CiB9CiAKIFRJbnRlcm1CaW5hcnkgKkNvbnN0cnVjdE1hdHJpeEluZGV4QmluYXJ5Tm9k
ZSgKQEAgLTYyLDExICs0OCw4IEBAIFRJbnRlcm1CaW5hcnkgKkNvbnN0cnVjdE1hdHJpeEluZGV4
QmluYXIKICAgICBUSW50ZXJtQmluYXJ5ICpjb2xWZWN0b3JOb2RlID0KICAgICAgICAgQ29uc3Ry
dWN0VmVjdG9ySW5kZXhCaW5hcnlOb2RlKHN5bWJvbE5vZGUsIGNvbEluZGV4KTsKIAotICAgIFRJ
bnRlcm1CaW5hcnkgKmJpbmFyeSA9IG5ldyBUSW50ZXJtQmluYXJ5KEVPcEluZGV4RGlyZWN0KTsK
LSAgICBiaW5hcnktPnNldExlZnQoY29sVmVjdG9yTm9kZSk7Ci0gICAgVEludGVybUNvbnN0YW50
VW5pb24gKnJvd0luZGV4Tm9kZSA9IENvbnN0cnVjdEluZGV4Tm9kZShyb3dJbmRleCk7Ci0gICAg
YmluYXJ5LT5zZXRSaWdodChyb3dJbmRleE5vZGUpOwotICAgIHJldHVybiBiaW5hcnk7CisgICAg
cmV0dXJuIG5ldyBUSW50ZXJtQmluYXJ5KEVPcEluZGV4RGlyZWN0LCBjb2xWZWN0b3JOb2RlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQ6OkNyZWF0ZUluZGV4Tm9k
ZShyb3dJbmRleCkpOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgYW5vbnltb3VzCkBAIC03NywyNSAr
NjAsNiBAQCBib29sIFNjYWxhcml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJnczo6CiAgICAgewog
ICAgICAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpCiAgICAgICAgIHsKLSAgICAgICAgICBjYXNl
IEVPcFNlcXVlbmNlOgotICAgICAgICAgICAgbVNlcXVlbmNlU3RhY2sucHVzaF9iYWNrKFRJbnRl
cm1TZXF1ZW5jZSgpKTsKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmb3IgKFRJbnRl
cm1TZXF1ZW5jZTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG5vZGUtPmdldFNlcXVlbmNlKCktPmJl
Z2luKCk7Ci0gICAgICAgICAgICAgICAgICAgICBpdGVyICE9IG5vZGUtPmdldFNlcXVlbmNlKCkt
PmVuZCgpOyArK2l0ZXIpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBU
SW50ZXJtTm9kZSAqY2hpbGQgPSAqaXRlcjsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNo
aWxkICE9IE5VTEwpOwotICAgICAgICAgICAgICAgICAgICBjaGlsZC0+dHJhdmVyc2UodGhpcyk7
Ci0gICAgICAgICAgICAgICAgICAgIG1TZXF1ZW5jZVN0YWNrLmJhY2soKS5wdXNoX2JhY2soY2hp
bGQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICht
U2VxdWVuY2VTdGFjay5iYWNrKCkuc2l6ZSgpID4gbm9kZS0+Z2V0U2VxdWVuY2UoKS0+c2l6ZSgp
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG5vZGUtPmdldFNlcXVlbmNlKCktPmNs
ZWFyKCk7Ci0gICAgICAgICAgICAgICAgKihub2RlLT5nZXRTZXF1ZW5jZSgpKSA9IG1TZXF1ZW5j
ZVN0YWNrLmJhY2soKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1TZXF1ZW5jZVN0YWNr
LnBvcF9iYWNrKCk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgY2FzZSBF
T3BDb25zdHJ1Y3RWZWMyOgogICAgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0VmVjMzoKICAgICAg
ICAgICBjYXNlIEVPcENvbnN0cnVjdFZlYzQ6CkBAIC0xMjcsNiArOTEsMjYgQEAgYm9vbCBTY2Fs
YXJpemVWZWNBbmRNYXRDb25zdHJ1Y3RvckFyZ3M6OgogICAgIHJldHVybiB0cnVlOwogfQogCiti
b29sIFNjYWxhcml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJnczo6dmlzaXRCbG9jayhWaXNpdCB2
aXNpdCwgVEludGVybUJsb2NrICpub2RlKQoreworICAgIG1CbG9ja1N0YWNrLnB1c2hfYmFjayhU
SW50ZXJtU2VxdWVuY2UoKSk7CisgICAgeworICAgICAgICBmb3IgKFRJbnRlcm1Ob2RlICpjaGls
ZCA6ICpub2RlLT5nZXRTZXF1ZW5jZSgpKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQo
Y2hpbGQgIT0gbnVsbHB0cik7CisgICAgICAgICAgICBjaGlsZC0+dHJhdmVyc2UodGhpcyk7Cisg
ICAgICAgICAgICBtQmxvY2tTdGFjay5iYWNrKCkucHVzaF9iYWNrKGNoaWxkKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBpZiAobUJsb2NrU3RhY2suYmFjaygpLnNpemUoKSA+IG5vZGUtPmdldFNl
cXVlbmNlKCktPnNpemUoKSkKKyAgICB7CisgICAgICAgIG5vZGUtPmdldFNlcXVlbmNlKCktPmNs
ZWFyKCk7CisgICAgICAgICoobm9kZS0+Z2V0U2VxdWVuY2UoKSkgPSBtQmxvY2tTdGFjay5iYWNr
KCk7CisgICAgfQorICAgIG1CbG9ja1N0YWNrLnBvcF9iYWNrKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCiB2b2lkIFNjYWxhcml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJnczo6c2NhbGFyaXpl
QXJncygKICAgICBUSW50ZXJtQWdncmVnYXRlICphZ2dyZWdhdGUsIGJvb2wgc2NhbGFyaXplVmVj
dG9yLCBib29sIHNjYWxhcml6ZU1hdHJpeCkKIHsKQEAgLTI3OCwxNyArMjYyLDE0IEBAIFRTdHJp
bmcgU2NhbGFyaXplVmVjQW5kTWF0Q29uc3RydWN0b3JBcmcKICAgICAgICAgdHlwZS5zZXRQcmVj
aXNpb24obUZyYWdtZW50UHJlY2lzaW9uSGlnaCA/IEVicEhpZ2ggOiBFYnBNZWRpdW0pOwogICAg
IH0KIAotICAgIFRJbnRlcm1CaW5hcnkgKmluaXQgPSBuZXcgVEludGVybUJpbmFyeShFT3BJbml0
aWFsaXplKTsKICAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2xOb2RlID0gbmV3IFRJbnRlcm1TeW1i
b2woLTEsIHRlbXBWYXJOYW1lLCB0eXBlKTsKLSAgICBpbml0LT5zZXRMZWZ0KHN5bWJvbE5vZGUp
OwotICAgIGluaXQtPnNldFJpZ2h0KG9yaWdpbmFsKTsKLSAgICBpbml0LT5zZXRUeXBlKHR5cGUp
OworICAgIFRJbnRlcm1CaW5hcnkgKmluaXQgICAgICAgPSBuZXcgVEludGVybUJpbmFyeShFT3BJ
bml0aWFsaXplLCBzeW1ib2xOb2RlLCBvcmlnaW5hbCk7CiAKICAgICBUSW50ZXJtQWdncmVnYXRl
ICpkZWNsID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoRU9wRGVjbGFyYXRpb24pOwogICAgIGRlY2wt
PmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhpbml0KTsKIAotICAgIEFTU0VSVChtU2VxdWVuY2VT
dGFjay5zaXplKCkgPiAwKTsKLSAgICBUSW50ZXJtU2VxdWVuY2UgJnNlcXVlbmNlID0gbVNlcXVl
bmNlU3RhY2suYmFjaygpOworICAgIEFTU0VSVChtQmxvY2tTdGFjay5zaXplKCkgPiAwKTsKKyAg
ICBUSW50ZXJtU2VxdWVuY2UgJnNlcXVlbmNlID0gbUJsb2NrU3RhY2suYmFjaygpOwogICAgIHNl
cXVlbmNlLnB1c2hfYmFjayhkZWNsKTsKIAogICAgIHJldHVybiB0ZW1wVmFyTmFtZTsKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NjYWxhcml6
ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NjYWxhcml6ZVZlY0FuZE1hdENvbnN0
cnVjdG9yQXJncy5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TY2FsYXJpemVWZWNBbmRNYXRDb25zdHJ1Y3RvckFy
Z3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQCBjbGFzcyBTY2FsYXJpemVWZWNB
bmRNYXRDb25zdHJ1Y3RvckFyZ3MgCiAKICAgcHJvdGVjdGVkOgogICAgIGJvb2wgdmlzaXRBZ2dy
ZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpIG92ZXJyaWRlOworICAg
IGJvb2wgdmlzaXRCbG9jayhWaXNpdCB2aXNpdCwgVEludGVybUJsb2NrICpub2RlKSBvdmVycmlk
ZTsKIAogICBwcml2YXRlOgogICAgIHZvaWQgc2NhbGFyaXplQXJncyhUSW50ZXJtQWdncmVnYXRl
ICphZ2dyZWdhdGUsCkBAIC0zOCw3ICszOSw3IEBAIGNsYXNzIFNjYWxhcml6ZVZlY0FuZE1hdENv
bnN0cnVjdG9yQXJncyAKICAgICAvLyBSZXR1cm4gdGhlIHRlbXBvcmFyeSB2YXJpYWJsZSBuYW1l
LgogICAgIFRTdHJpbmcgY3JlYXRlVGVtcFZhcmlhYmxlKFRJbnRlcm1UeXBlZCAqb3JpZ2luYWwp
OwogCi0gICAgc3RkOjp2ZWN0b3I8VEludGVybVNlcXVlbmNlPiBtU2VxdWVuY2VTdGFjazsKKyAg
ICBzdGQ6OnZlY3RvcjxUSW50ZXJtU2VxdWVuY2U+IG1CbG9ja1N0YWNrOwogICAgIGludCBtVGVt
cFZhckNvdW50OwogCiAgICAgc2g6OkdMZW51bSBtU2hhZGVyVHlwZTsKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NlcGFyYXRlQXJyYXlJbml0
aWFsaXphdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVBcnJheUluaXRpYWxpemF0aW9uLmNwcAkocmV2
aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvU2VwYXJhdGVBcnJheUluaXRpYWxpemF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTgsOCArNTgsOCBAQCBib29sIFNlcGFyYXRlQXJyYXlJbml0VHJhdmVyc2VyOjp2aXNpdEFn
CiAgICAgICAgICAgICAgICAgLy8gV2UgcmVseSBvbiB0aGF0IGFycmF5IGRlY2xhcmF0aW9ucyBo
YXZlIGJlZW4gaXNvbGF0ZWQgdG8gc2luZ2xlIGRlY2xhcmF0aW9ucy4KICAgICAgICAgICAgICAg
ICBBU1NFUlQoc2VxdWVuY2UtPnNpemUoKSA9PSAxKTsKICAgICAgICAgICAgICAgICBUSW50ZXJt
VHlwZWQgKnN5bWJvbCA9IGluaXROb2RlLT5nZXRMZWZ0KCk7Ci0gICAgICAgICAgICAgICAgVElu
dGVybUFnZ3JlZ2F0ZSAqcGFyZW50QWdnID0gZ2V0UGFyZW50Tm9kZSgpLT5nZXRBc0FnZ3JlZ2F0
ZSgpOwotICAgICAgICAgICAgICAgIEFTU0VSVChwYXJlbnRBZ2cgIT0gbnVsbHB0cik7CisgICAg
ICAgICAgICAgICAgVEludGVybUJsb2NrICpwYXJlbnRCbG9jayA9IGdldFBhcmVudE5vZGUoKS0+
Z2V0QXNCbG9jaygpOworICAgICAgICAgICAgICAgIEFTU0VSVChwYXJlbnRCbG9jayAhPSBudWxs
cHRyKTsKIAogICAgICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSByZXBsYWNlbWVudHM7CiAK
QEAgLTY5LDE0ICs2OSwxMyBAQCBib29sIFNlcGFyYXRlQXJyYXlJbml0VHJhdmVyc2VyOjp2aXNp
dEFnCiAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnREZWNsYXJhdGlvbi0+c2V0TGluZShzeW1i
b2wtPmdldExpbmUoKSk7CiAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRzLnB1c2hfYmFjayhy
ZXBsYWNlbWVudERlY2xhcmF0aW9uKTsKIAotICAgICAgICAgICAgICAgIFRJbnRlcm1CaW5hcnkg
KnJlcGxhY2VtZW50QXNzaWdubWVudCA9IG5ldyBUSW50ZXJtQmluYXJ5KEVPcEFzc2lnbik7Ci0g
ICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRBc3NpZ25tZW50LT5zZXRMZWZ0KHN5bWJvbCk7Ci0g
ICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRBc3NpZ25tZW50LT5zZXRSaWdodChpbml0aWFsaXpl
cik7Ci0gICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRBc3NpZ25tZW50LT5zZXRUeXBlKGluaXRp
YWxpemVyLT5nZXRUeXBlKCkpOworICAgICAgICAgICAgICAgIFRJbnRlcm1CaW5hcnkgKnJlcGxh
Y2VtZW50QXNzaWdubWVudCA9CisgICAgICAgICAgICAgICAgICAgIG5ldyBUSW50ZXJtQmluYXJ5
KEVPcEFzc2lnbiwgc3ltYm9sLCBpbml0aWFsaXplcik7CiAgICAgICAgICAgICAgICAgcmVwbGFj
ZW1lbnRBc3NpZ25tZW50LT5zZXRMaW5lKHN5bWJvbC0+Z2V0TGluZSgpKTsKICAgICAgICAgICAg
ICAgICByZXBsYWNlbWVudHMucHVzaF9iYWNrKHJlcGxhY2VtZW50QXNzaWdubWVudCk7CiAKLSAg
ICAgICAgICAgICAgICBtTXVsdGlSZXBsYWNlbWVudHMucHVzaF9iYWNrKE5vZGVSZXBsYWNlV2l0
aE11bHRpcGxlRW50cnkocGFyZW50QWdnLCBub2RlLCByZXBsYWNlbWVudHMpKTsKKyAgICAgICAg
ICAgICAgICBtTXVsdGlSZXBsYWNlbWVudHMucHVzaF9iYWNrKAorICAgICAgICAgICAgICAgICAg
ICBOb2RlUmVwbGFjZVdpdGhNdWx0aXBsZUVudHJ5KHBhcmVudEJsb2NrLCBub2RlLCByZXBsYWNl
bWVudHMpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9T
ZXBhcmF0ZURlY2xhcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVEZWNsYXJhdGlvbnMuY3BwCShy
ZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9TZXBhcmF0ZURlY2xhcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDggKzQ4LDggQEAgYm9vbCBTZXBhcmF0ZURlY2xhcmF0aW9uc1RyYXZlcnNlcjo6dmlzaQogICAg
ICAgICBUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlID0gbm9kZS0+Z2V0U2VxdWVuY2UoKTsKICAg
ICAgICAgaWYgKHNlcXVlbmNlLT5zaXplKCkgPiAxKQogICAgICAgICB7Ci0gICAgICAgICAgICBU
SW50ZXJtQWdncmVnYXRlICpwYXJlbnRBZ2cgPSBnZXRQYXJlbnROb2RlKCktPmdldEFzQWdncmVn
YXRlKCk7Ci0gICAgICAgICAgICBBU1NFUlQocGFyZW50QWdnICE9IG51bGxwdHIpOworICAgICAg
ICAgICAgVEludGVybUJsb2NrICpwYXJlbnRCbG9jayA9IGdldFBhcmVudE5vZGUoKS0+Z2V0QXNC
bG9jaygpOworICAgICAgICAgICAgQVNTRVJUKHBhcmVudEJsb2NrICE9IG51bGxwdHIpOwogCiAg
ICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgcmVwbGFjZW1lbnREZWNsYXJhdGlvbnM7CiAgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpaSA9IDA7IGlpIDwgc2VxdWVuY2UtPnNpemUoKTsgKytpaSkK
QEAgLTYyLDcgKzYyLDggQEAgYm9vbCBTZXBhcmF0ZURlY2xhcmF0aW9uc1RyYXZlcnNlcjo6dmlz
aQogICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50RGVjbGFyYXRpb25zLnB1c2hfYmFjayhyZXBs
YWNlbWVudERlY2xhcmF0aW9uKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbU11bHRp
UmVwbGFjZW1lbnRzLnB1c2hfYmFjayhOb2RlUmVwbGFjZVdpdGhNdWx0aXBsZUVudHJ5KHBhcmVu
dEFnZywgbm9kZSwgcmVwbGFjZW1lbnREZWNsYXJhdGlvbnMpKTsKKyAgICAgICAgICAgIG1NdWx0
aVJlcGxhY2VtZW50cy5wdXNoX2JhY2soCisgICAgICAgICAgICAgICAgTm9kZVJlcGxhY2VXaXRo
TXVsdGlwbGVFbnRyeShwYXJlbnRCbG9jaywgbm9kZSwgcmVwbGFjZW1lbnREZWNsYXJhdGlvbnMp
KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVFeHByZXNz
aW9uc1JldHVybmluZ0FycmF5cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVFeHByZXNzaW9uc1JldHVybmlu
Z0FycmF5cy5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NlcGFyYXRlRXhwcmVzc2lvbnNSZXR1cm5pbmdBcnJh
eXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw2ICsxMiw3IEBACiAjaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci9TZXBhcmF0ZUV4cHJlc3Npb25zUmV0dXJuaW5nQXJyYXlzLmgiCiAKICNp
bmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuaCIKKyNpbmNsdWRlICJjb21w
aWxlci90cmFuc2xhdG9yL0ludGVybU5vZGVQYXR0ZXJuTWF0Y2hlci5oIgogCiBuYW1lc3BhY2UK
IHsKQEAgLTMyLDExICszMywxNCBAQCBjbGFzcyBTZXBhcmF0ZUV4cHJlc3Npb25zVHJhdmVyc2Vy
IDogcHViCiAgICAgLy8gTWFya2VkIHRvIHRydWUgb25jZSBhbiBvcGVyYXRpb24gdGhhdCBuZWVk
cyB0byBiZSBob2lzdGVkIG91dCBvZiB0aGUgZXhwcmVzc2lvbiBoYXMgYmVlbiBmb3VuZC4KICAg
ICAvLyBBZnRlciB0aGF0LCBubyBtb3JlIEFTVCB1cGRhdGVzIGFyZSBwZXJmb3JtZWQgb24gdGhh
dCB0cmF2ZXJzYWwuCiAgICAgYm9vbCBtRm91bmRBcnJheUV4cHJlc3Npb247CisKKyAgICBJbnRl
cm1Ob2RlUGF0dGVybk1hdGNoZXIgbVBhdHRlcm5Ub1NlcGFyYXRlTWF0Y2hlcjsKIH07CiAKIFNl
cGFyYXRlRXhwcmVzc2lvbnNUcmF2ZXJzZXI6OlNlcGFyYXRlRXhwcmVzc2lvbnNUcmF2ZXJzZXIo
KQogICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2UpLAotICAgICAgbUZv
dW5kQXJyYXlFeHByZXNzaW9uKGZhbHNlKQorICAgICAgbUZvdW5kQXJyYXlFeHByZXNzaW9uKGZh
bHNlKSwKKyAgICAgIG1QYXR0ZXJuVG9TZXBhcmF0ZU1hdGNoZXIoSW50ZXJtTm9kZVBhdHRlcm5N
YXRjaGVyOjprRXhwcmVzc2lvblJldHVybmluZ0FycmF5KQogewogfQogCkBAIC00NSwxMSArNDks
NyBAQCBTZXBhcmF0ZUV4cHJlc3Npb25zVHJhdmVyc2VyOjpTZXBhcmF0ZUV4CiAvLyBhbmQgYWxz
byBuZWVkcyB0byBiZSByZXBsYWNlZCBpbiBpdHMgb3JpZ2luYWwgbG9jYXRpb24gYnkgYSBkaWZm
ZXJlbnQgbm9kZS4KIFRJbnRlcm1CaW5hcnkgKkNvcHlBc3NpZ25tZW50Tm9kZShUSW50ZXJtQmlu
YXJ5ICpub2RlKQogewotICAgIFRJbnRlcm1CaW5hcnkgKmNvcHlOb2RlID0gbmV3IFRJbnRlcm1C
aW5hcnkobm9kZS0+Z2V0T3AoKSk7Ci0gICAgY29weU5vZGUtPnNldExlZnQobm9kZS0+Z2V0TGVm
dCgpKTsKLSAgICBjb3B5Tm9kZS0+c2V0UmlnaHQobm9kZS0+Z2V0UmlnaHQoKSk7Ci0gICAgY29w
eU5vZGUtPnNldFR5cGUobm9kZS0+Z2V0VHlwZSgpKTsKLSAgICByZXR1cm4gY29weU5vZGU7Cisg
ICAgcmV0dXJuIG5ldyBUSW50ZXJtQmluYXJ5KG5vZGUtPmdldE9wKCksIG5vZGUtPmdldExlZnQo
KSwgbm9kZS0+Z2V0UmlnaHQoKSk7CiB9CiAKIC8vIFBlcmZvcm1zIGEgc2hhbGxvdyBjb3B5IG9m
IGEgY29uc3RydWN0b3IvZnVuY3Rpb24gY2FsbCBub2RlLgpAQCAtNTksMTIgKzU5LDExIEBAIFRJ
bnRlcm1BZ2dyZWdhdGUgKkNvcHlBZ2dyZWdhdGVOb2RlKFRJbnQKICAgICBUSW50ZXJtU2VxdWVu
Y2UgKmNvcHlTZXEgPSBjb3B5Tm9kZS0+Z2V0U2VxdWVuY2UoKTsKICAgICBjb3B5U2VxLT5pbnNl
cnQoY29weVNlcS0+YmVnaW4oKSwgbm9kZS0+Z2V0U2VxdWVuY2UoKS0+YmVnaW4oKSwgbm9kZS0+
Z2V0U2VxdWVuY2UoKS0+ZW5kKCkpOwogICAgIGNvcHlOb2RlLT5zZXRUeXBlKG5vZGUtPmdldFR5
cGUoKSk7Ci0gICAgY29weU5vZGUtPnNldEZ1bmN0aW9uSWQobm9kZS0+Z2V0RnVuY3Rpb25JZCgp
KTsKKyAgICAqY29weU5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpID0gKm5vZGUtPmdldEZ1
bmN0aW9uU3ltYm9sSW5mbygpOwogICAgIGlmIChub2RlLT5pc1VzZXJEZWZpbmVkKCkpCiAgICAg
ewogICAgICAgICBjb3B5Tm9kZS0+c2V0VXNlckRlZmluZWQoKTsKICAgICB9Ci0gICAgY29weU5v
ZGUtPnNldE5hbWVPYmoobm9kZS0+Z2V0TmFtZU9iaigpKTsKICAgICByZXR1cm4gY29weU5vZGU7
CiB9CiAKQEAgLTczLDMxICs3MiwyNSBAQCBib29sIFNlcGFyYXRlRXhwcmVzc2lvbnNUcmF2ZXJz
ZXI6OnZpc2l0CiAgICAgaWYgKG1Gb3VuZEFycmF5RXhwcmVzc2lvbikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgLy8gRWFybHkgcmV0dXJuIGlmIHRoZSBleHByZXNzaW9uIGlzIG5vdCBh
biBhcnJheSBvciBpZiB3ZSdyZSBub3QgaW5zaWRlIGEgY29tcGxleCBleHByZXNzaW9uLgotICAg
IGlmICghbm9kZS0+Z2V0VHlwZSgpLmlzQXJyYXkoKSB8fCBwYXJlbnROb2RlSXNCbG9jaygpKQor
ICAgIC8vIFJldHVybiBpZiB0aGUgZXhwcmVzc2lvbiBpcyBub3QgYW4gYXJyYXkgb3IgaWYgd2Un
cmUgbm90IGluc2lkZSBhIGNvbXBsZXggZXhwcmVzc2lvbi4KKyAgICBpZiAoIW1QYXR0ZXJuVG9T
ZXBhcmF0ZU1hdGNoZXIubWF0Y2gobm9kZSwgZ2V0UGFyZW50Tm9kZSgpKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpCi0gICAgewotICAgICAgY2Fz
ZSBFT3BBc3NpZ246Ci0gICAgICAgIHsKLSAgICAgICAgICAgIG1Gb3VuZEFycmF5RXhwcmVzc2lv
biA9IHRydWU7Ci0KLSAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSBpbnNlcnRpb25zOwotICAg
ICAgICAgICAgaW5zZXJ0aW9ucy5wdXNoX2JhY2soQ29weUFzc2lnbm1lbnROb2RlKG5vZGUpKTsK
LSAgICAgICAgICAgIC8vIFRPRE8ob2V0dWFobyk6IEluIHNvbWUgY2FzZXMgaXQgd291bGQgYmUg
bW9yZSBvcHRpbWFsIHRvIG5vdCBhZGQgdGhlIHRlbXBvcmFyeSBub2RlLCBidXQganVzdCB1c2Ug
dGhlCi0gICAgICAgICAgICAvLyBvcmlnaW5hbCB0YXJnZXQgb2YgdGhlIGFzc2lnbm1lbnQuIENh
cmUgbXVzdCBiZSB0YWtlbiBzbyB0aGF0IHRoaXMgZG9lc24ndCBoYXBwZW4gd2hlbiB0aGUgc2Ft
ZSBhcnJheQotICAgICAgICAgICAgLy8gc3ltYm9sIGlzIGEgdGFyZ2V0IG9mIGFzc2lnbm1lbnQg
bW9yZSB0aGFuIG9uY2UgaW4gb25lIGV4cHJlc3Npb24uCi0gICAgICAgICAgICBpbnNlcnRpb25z
LnB1c2hfYmFjayhjcmVhdGVUZW1wSW5pdERlY2xhcmF0aW9uKG5vZGUtPmdldExlZnQoKSkpOwot
ICAgICAgICAgICAgaW5zZXJ0U3RhdGVtZW50c0luUGFyZW50QmxvY2soaW5zZXJ0aW9ucyk7Ci0K
LSAgICAgICAgICAgIE5vZGVVcGRhdGVFbnRyeSByZXBsYWNlVmFyaWFibGUoZ2V0UGFyZW50Tm9k
ZSgpLCBub2RlLCBjcmVhdGVUZW1wU3ltYm9sKG5vZGUtPmdldFR5cGUoKSksIGZhbHNlKTsKLSAg
ICAgICAgICAgIG1SZXBsYWNlbWVudHMucHVzaF9iYWNrKHJlcGxhY2VWYXJpYWJsZSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQorICAgIEFTU0VSVChub2RlLT5nZXRPcCgpID09IEVPcEFzc2lnbik7
CisKKyAgICBtRm91bmRBcnJheUV4cHJlc3Npb24gPSB0cnVlOworCisgICAgVEludGVybVNlcXVl
bmNlIGluc2VydGlvbnM7CisgICAgaW5zZXJ0aW9ucy5wdXNoX2JhY2soQ29weUFzc2lnbm1lbnRO
b2RlKG5vZGUpKTsKKyAgICAvLyBUT0RPKG9ldHVhaG8pOiBJbiBzb21lIGNhc2VzIGl0IHdvdWxk
IGJlIG1vcmUgb3B0aW1hbCB0byBub3QgYWRkIHRoZSB0ZW1wb3Jhcnkgbm9kZSwgYnV0IGp1c3QK
KyAgICAvLyB1c2UgdGhlIG9yaWdpbmFsIHRhcmdldCBvZiB0aGUgYXNzaWdubWVudC4gQ2FyZSBt
dXN0IGJlIHRha2VuIHNvIHRoYXQgdGhpcyBkb2Vzbid0IGhhcHBlbgorICAgIC8vIHdoZW4gdGhl
IHNhbWUgYXJyYXkgc3ltYm9sIGlzIGEgdGFyZ2V0IG9mIGFzc2lnbm1lbnQgbW9yZSB0aGFuIG9u
Y2UgaW4gb25lIGV4cHJlc3Npb24uCisgICAgaW5zZXJ0aW9ucy5wdXNoX2JhY2soY3JlYXRlVGVt
cEluaXREZWNsYXJhdGlvbihub2RlLT5nZXRMZWZ0KCkpKTsKKyAgICBpbnNlcnRTdGF0ZW1lbnRz
SW5QYXJlbnRCbG9jayhpbnNlcnRpb25zKTsKKworICAgIHF1ZXVlUmVwbGFjZW1lbnQobm9kZSwg
Y3JlYXRlVGVtcFN5bWJvbChub2RlLT5nZXRUeXBlKCkpLCBPcmlnaW5hbE5vZGU6OklTX0RST1BQ
RUQpOworCisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIFNlcGFyYXRlRXhwcmVzc2lvbnNU
cmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpu
b2RlKQpAQCAtMTA1LDQzICs5OCwyMCBAQCBib29sIFNlcGFyYXRlRXhwcmVzc2lvbnNUcmF2ZXJz
ZXI6OnZpc2l0CiAgICAgaWYgKG1Gb3VuZEFycmF5RXhwcmVzc2lvbikKICAgICAgICAgcmV0dXJu
IGZhbHNlOyAvLyBObyBuZWVkIHRvIHRyYXZlcnNlIGZ1cnRoZXIKIAotICAgIGlmIChnZXRQYXJl
bnROb2RlKCkgIT0gbnVsbHB0cikKLSAgICB7Ci0gICAgICAgIFRJbnRlcm1CaW5hcnkgKnBhcmVu
dEJpbmFyeSA9IGdldFBhcmVudE5vZGUoKS0+Z2V0QXNCaW5hcnlOb2RlKCk7Ci0gICAgICAgIGJv
b2wgcGFyZW50SXNBc3NpZ25tZW50ID0gKHBhcmVudEJpbmFyeSAhPSBudWxscHRyICYmCi0gICAg
ICAgICAgICAocGFyZW50QmluYXJ5LT5nZXRPcCgpID09IEVPcEFzc2lnbiB8fCBwYXJlbnRCaW5h
cnktPmdldE9wKCkgPT0gRU9wSW5pdGlhbGl6ZSkpOwotCi0gICAgICAgIGlmICghbm9kZS0+Z2V0
VHlwZSgpLmlzQXJyYXkoKSB8fCBwYXJlbnROb2RlSXNCbG9jaygpIHx8IHBhcmVudElzQXNzaWdu
bWVudCkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIGlmIChub2RlLT5pc0Nv
bnN0cnVjdG9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1Gb3VuZEFycmF5RXhwcmVzc2lv
biA9IHRydWU7Ci0KLSAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSBpbnNlcnRpb25zOwotICAg
ICAgICAgICAgaW5zZXJ0aW9ucy5wdXNoX2JhY2soY3JlYXRlVGVtcEluaXREZWNsYXJhdGlvbihD
b3B5QWdncmVnYXRlTm9kZShub2RlKSkpOwotICAgICAgICAgICAgaW5zZXJ0U3RhdGVtZW50c0lu
UGFyZW50QmxvY2soaW5zZXJ0aW9ucyk7Ci0KLSAgICAgICAgICAgIE5vZGVVcGRhdGVFbnRyeSBy
ZXBsYWNlVmFyaWFibGUoZ2V0UGFyZW50Tm9kZSgpLCBub2RlLCBjcmVhdGVUZW1wU3ltYm9sKG5v
ZGUtPmdldFR5cGUoKSksIGZhbHNlKTsKLSAgICAgICAgICAgIG1SZXBsYWNlbWVudHMucHVzaF9i
YWNrKHJlcGxhY2VWYXJpYWJsZSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgfQotICAgICAgICBlbHNlIGlmIChub2RlLT5nZXRPcCgpID09IEVPcEZ1bmN0aW9uQ2FsbCkK
LSAgICAgICAgewotICAgICAgICAgICAgbUZvdW5kQXJyYXlFeHByZXNzaW9uID0gdHJ1ZTsKLQot
ICAgICAgICAgICAgVEludGVybVNlcXVlbmNlIGluc2VydGlvbnM7Ci0gICAgICAgICAgICBpbnNl
cnRpb25zLnB1c2hfYmFjayhjcmVhdGVUZW1wSW5pdERlY2xhcmF0aW9uKENvcHlBZ2dyZWdhdGVO
b2RlKG5vZGUpKSk7Ci0gICAgICAgICAgICBpbnNlcnRTdGF0ZW1lbnRzSW5QYXJlbnRCbG9jayhp
bnNlcnRpb25zKTsKKyAgICBpZiAoIW1QYXR0ZXJuVG9TZXBhcmF0ZU1hdGNoZXIubWF0Y2gobm9k
ZSwgZ2V0UGFyZW50Tm9kZSgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgICAg
IE5vZGVVcGRhdGVFbnRyeSByZXBsYWNlVmFyaWFibGUoZ2V0UGFyZW50Tm9kZSgpLCBub2RlLCBj
cmVhdGVUZW1wU3ltYm9sKG5vZGUtPmdldFR5cGUoKSksIGZhbHNlKTsKLSAgICAgICAgICAgIG1S
ZXBsYWNlbWVudHMucHVzaF9iYWNrKHJlcGxhY2VWYXJpYWJsZSk7CisgICAgQVNTRVJUKG5vZGUt
PmlzQ29uc3RydWN0b3IoKSB8fCBub2RlLT5nZXRPcCgpID09IEVPcEZ1bmN0aW9uQ2FsbCk7CiAK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4g
dHJ1ZTsKKyAgICBtRm91bmRBcnJheUV4cHJlc3Npb24gPSB0cnVlOworCisgICAgVEludGVybVNl
cXVlbmNlIGluc2VydGlvbnM7CisgICAgaW5zZXJ0aW9ucy5wdXNoX2JhY2soY3JlYXRlVGVtcElu
aXREZWNsYXJhdGlvbihDb3B5QWdncmVnYXRlTm9kZShub2RlKSkpOworICAgIGluc2VydFN0YXRl
bWVudHNJblBhcmVudEJsb2NrKGluc2VydGlvbnMpOworCisgICAgcXVldWVSZXBsYWNlbWVudChu
b2RlLCBjcmVhdGVUZW1wU3ltYm9sKG5vZGUtPmdldFR5cGUoKSksIE9yaWdpbmFsTm9kZTo6SVNf
RFJPUFBFRCk7CisKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgU2VwYXJhdGVFeHByZXNz
aW9uc1RyYXZlcnNlcjo6bmV4dEl0ZXJhdGlvbigpCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TaGFkZXJMYW5nLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TaGFkZXJM
YW5nLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvU2hhZGVyTGFuZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
OCw2ICsxNDgsOCBAQCB2b2lkIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoU2hCdWlsdEluUmVzCiAg
ICAgLy8gRXh0ZW5zaW9ucy4KICAgICByZXNvdXJjZXMtPk9FU19zdGFuZGFyZF9kZXJpdmF0aXZl
cyA9IDA7CiAgICAgcmVzb3VyY2VzLT5PRVNfRUdMX2ltYWdlX2V4dGVybmFsID0gMDsKKyAgICBy
ZXNvdXJjZXMtPk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWxfZXNzbDMgICAgPSAwOworICAgIHJlc291
cmNlcy0+TlZfRUdMX3N0cmVhbV9jb25zdW1lcl9leHRlcm5hbCA9IDA7CiAgICAgcmVzb3VyY2Vz
LT5BUkJfdGV4dHVyZV9yZWN0YW5nbGUgPSAwOwogICAgIHJlc291cmNlcy0+RVhUX2JsZW5kX2Z1
bmNfZXh0ZW5kZWQgICAgICA9IDA7CiAgICAgcmVzb3VyY2VzLT5FWFRfZHJhd19idWZmZXJzID0g
MDsKQEAgLTE4MCw2ICsxODIsMzcgQEAgdm9pZCBTaEluaXRCdWlsdEluUmVzb3VyY2VzKFNoQnVp
bHRJblJlcwogICAgIHJlc291cmNlcy0+TWF4RXhwcmVzc2lvbkNvbXBsZXhpdHkgPSAyNTY7CiAg
ICAgcmVzb3VyY2VzLT5NYXhDYWxsU3RhY2tEZXB0aCAgICAgICA9IDI1NjsKICAgICByZXNvdXJj
ZXMtPk1heEZ1bmN0aW9uUGFyYW1ldGVycyAgID0gMTAyNDsKKworICAgIC8vIEVTIDMuMSBSZXZp
c2lvbiA0LCA3LjIgQnVpbHQtaW4gQ29uc3RhbnRzCisgICAgcmVzb3VyY2VzLT5NYXhJbWFnZVVu
aXRzICAgICAgICAgICAgPSA0OworICAgIHJlc291cmNlcy0+TWF4VmVydGV4SW1hZ2VVbmlmb3Jt
cyAgID0gMDsKKyAgICByZXNvdXJjZXMtPk1heEZyYWdtZW50SW1hZ2VVbmlmb3JtcyA9IDA7Cisg
ICAgcmVzb3VyY2VzLT5NYXhDb21wdXRlSW1hZ2VVbmlmb3JtcyAgPSA0OworICAgIHJlc291cmNl
cy0+TWF4Q29tYmluZWRJbWFnZVVuaWZvcm1zID0gNDsKKworICAgIHJlc291cmNlcy0+TWF4Q29t
YmluZWRTaGFkZXJPdXRwdXRSZXNvdXJjZXMgPSA0OworCisgICAgcmVzb3VyY2VzLT5NYXhDb21w
dXRlV29ya0dyb3VwQ291bnRbMF0gPSA2NTUzNTsKKyAgICByZXNvdXJjZXMtPk1heENvbXB1dGVX
b3JrR3JvdXBDb3VudFsxXSA9IDY1NTM1OworICAgIHJlc291cmNlcy0+TWF4Q29tcHV0ZVdvcmtH
cm91cENvdW50WzJdID0gNjU1MzU7CisgICAgcmVzb3VyY2VzLT5NYXhDb21wdXRlV29ya0dyb3Vw
U2l6ZVswXSAgPSAxMjg7CisgICAgcmVzb3VyY2VzLT5NYXhDb21wdXRlV29ya0dyb3VwU2l6ZVsx
XSAgPSAxMjg7CisgICAgcmVzb3VyY2VzLT5NYXhDb21wdXRlV29ya0dyb3VwU2l6ZVsyXSAgPSA2
NDsKKyAgICByZXNvdXJjZXMtPk1heENvbXB1dGVVbmlmb3JtQ29tcG9uZW50cyA9IDUxMjsKKyAg
ICByZXNvdXJjZXMtPk1heENvbXB1dGVUZXh0dXJlSW1hZ2VVbml0cyA9IDE2OworCisgICAgcmVz
b3VyY2VzLT5NYXhDb21wdXRlQXRvbWljQ291bnRlcnMgICAgICAgPSA4OworICAgIHJlc291cmNl
cy0+TWF4Q29tcHV0ZUF0b21pY0NvdW50ZXJCdWZmZXJzID0gMTsKKworICAgIHJlc291cmNlcy0+
TWF4VmVydGV4QXRvbWljQ291bnRlcnMgICA9IDA7CisgICAgcmVzb3VyY2VzLT5NYXhGcmFnbWVu
dEF0b21pY0NvdW50ZXJzID0gMDsKKyAgICByZXNvdXJjZXMtPk1heENvbWJpbmVkQXRvbWljQ291
bnRlcnMgPSA4OworICAgIHJlc291cmNlcy0+TWF4QXRvbWljQ291bnRlckJpbmRpbmdzICA9IDE7
CisKKyAgICByZXNvdXJjZXMtPk1heFZlcnRleEF0b21pY0NvdW50ZXJCdWZmZXJzICAgPSAwOwor
ICAgIHJlc291cmNlcy0+TWF4RnJhZ21lbnRBdG9taWNDb3VudGVyQnVmZmVycyA9IDA7CisgICAg
cmVzb3VyY2VzLT5NYXhDb21iaW5lZEF0b21pY0NvdW50ZXJCdWZmZXJzID0gMTsKKyAgICByZXNv
dXJjZXMtPk1heEF0b21pY0NvdW50ZXJCdWZmZXJTaXplICAgICAgPSAzMjsKIH0KIAogLy8KQEAg
LTIzNSwxMSArMjY4LDEwIEBAIGNvbnN0IHN0ZDo6c3RyaW5nICZTaEdldEJ1aWx0SW5SZXNvdXJj
ZXMKIC8vIFJldHVybjogIFRoZSByZXR1cm4gdmFsdWUgb2YgU2hDb21waWxlIGlzIHJlYWxseSBi
b29sZWFuLCBpbmRpY2F0aW5nCiAvLyBzdWNjZXNzIG9yIGZhaWx1cmUuCiAvLwotYm9vbCBTaENv
bXBpbGUoCi0gICAgY29uc3QgU2hIYW5kbGUgaGFuZGxlLAotICAgIGNvbnN0IGNoYXIgKmNvbnN0
IHNoYWRlclN0cmluZ3NbXSwKLSAgICBzaXplX3QgbnVtU3RyaW5ncywKLSAgICBpbnQgY29tcGls
ZU9wdGlvbnMpCitib29sIFNoQ29tcGlsZShjb25zdCBTaEhhbmRsZSBoYW5kbGUsCisgICAgICAg
ICAgICAgICBjb25zdCBjaGFyICpjb25zdCBzaGFkZXJTdHJpbmdzW10sCisgICAgICAgICAgICAg
ICBzaXplX3QgbnVtU3RyaW5ncywKKyAgICAgICAgICAgICAgIFNoQ29tcGlsZU9wdGlvbnMgY29t
cGlsZU9wdGlvbnMpCiB7CiAgICAgVENvbXBpbGVyICpjb21waWxlciA9IEdldENvbXBpbGVyRnJv
bUhhbmRsZShoYW5kbGUpOwogICAgIEFTU0VSVChjb21waWxlcik7CkBAIC0zMjUsMTggKzM1Nywy
MCBAQCBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6SW50ZXJmYWNlQmxvY2s+ICpTCiAgICAgcmV0dXJu
IEdldFNoYWRlclZhcmlhYmxlczxzaDo6SW50ZXJmYWNlQmxvY2s+KGhhbmRsZSk7CiB9CiAKLWJv
b2wgU2hDaGVja1ZhcmlhYmxlc1dpdGhpblBhY2tpbmdMaW1pdHMoCi0gICAgaW50IG1heFZlY3Rv
cnMsIFNoVmFyaWFibGVJbmZvICp2YXJJbmZvQXJyYXksIHNpemVfdCB2YXJJbmZvQXJyYXlTaXpl
KQorc2g6OldvcmtHcm91cFNpemUgU2hHZXRDb21wdXRlU2hhZGVyTG9jYWxHcm91cFNpemUoY29u
c3QgU2hIYW5kbGUgaGFuZGxlKQoreworICAgIEFTU0VSVChoYW5kbGUpOworCisgICAgVFNoSGFu
ZGxlQmFzZSAqYmFzZSA9IHN0YXRpY19jYXN0PFRTaEhhbmRsZUJhc2UgKj4oaGFuZGxlKTsKKyAg
ICBUQ29tcGlsZXIgKmNvbXBpbGVyID0gYmFzZS0+Z2V0QXNDb21waWxlcigpOworICAgIEFTU0VS
VChjb21waWxlcik7CisKKyAgICByZXR1cm4gY29tcGlsZXItPmdldENvbXB1dGVTaGFkZXJMb2Nh
bFNpemUoKTsKK30KKworYm9vbCBTaENoZWNrVmFyaWFibGVzV2l0aGluUGFja2luZ0xpbWl0cyhp
bnQgbWF4VmVjdG9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlNoYWRlclZhcmlhYmxlPiAmdmFyaWFibGVzKQogewotICAg
IGlmICh2YXJJbmZvQXJyYXlTaXplID09IDApCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIEFT
U0VSVCh2YXJJbmZvQXJyYXkpOwotICAgIHN0ZDo6dmVjdG9yPHNoOjpTaGFkZXJWYXJpYWJsZT4g
dmFyaWFibGVzOwotICAgIGZvciAoc2l6ZV90IGlpID0gMDsgaWkgPCB2YXJJbmZvQXJyYXlTaXpl
OyArK2lpKQotICAgIHsKLSAgICAgICAgc2g6OlNoYWRlclZhcmlhYmxlIHZhcih2YXJJbmZvQXJy
YXlbaWldLnR5cGUsIHZhckluZm9BcnJheVtpaV0uc2l6ZSk7Ci0gICAgICAgIHZhcmlhYmxlcy5w
dXNoX2JhY2sodmFyKTsKLSAgICB9CiAgICAgVmFyaWFibGVQYWNrZXIgcGFja2VyOwogICAgIHJl
dHVybiBwYWNrZXIuQ2hlY2tWYXJpYWJsZXNXaXRoaW5QYWNraW5nTGltaXRzKG1heFZlY3RvcnMs
IHZhcmlhYmxlcyk7CiB9CkBAIC0zNzEsNyArNDA1LDYgQEAgY29uc3Qgc3RkOjptYXA8c3RkOjpz
dHJpbmcsIHVuc2lnbmVkIGludAogCiAgICAgcmV0dXJuIHRyYW5zbGF0b3ItPmdldFVuaWZvcm1S
ZWdpc3Rlck1hcCgpOwogI2Vsc2UKLSAgICBzdGF0aWMgYXV0byYgbWFwID0gKm5ldyBzdGQ6Om1h
cDxzdGQ6OnN0cmluZywgdW5zaWduZWQgaW50PjsKLSAgICByZXR1cm4gJm1hcDsKKyAgICByZXR1
cm4gbnVsbHB0cjsKICNlbmRpZiAgLy8gQU5HTEVfRU5BQkxFX0hMU0wKIH0KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NoYWRlclZhcnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1NoYWRlclZhcnMuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TaGFkZXJWYXJzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzU1LDcgKzM1NSw3IEBAIGJvb2wgVmFyeWluZzo6aXNTYW1lVmFyeWluZ0F0
TGlua1RpbWUoY28KIGJvb2wgVmFyeWluZzo6aXNTYW1lVmFyeWluZ0F0TGlua1RpbWUoY29uc3Qg
VmFyeWluZyAmb3RoZXIsIGludCBzaGFkZXJWZXJzaW9uKSBjb25zdAogewogICAgIHJldHVybiAo
U2hhZGVyVmFyaWFibGU6OmlzU2FtZVZhcmlhYmxlQXRMaW5rVGltZShvdGhlciwgZmFsc2UpICYm
Ci0gICAgICAgICAgICBpbnRlcnBvbGF0aW9uID09IG90aGVyLmludGVycG9sYXRpb24gJiYKKyAg
ICAgICAgICAgIEludGVycG9sYXRpb25UeXBlc01hdGNoKGludGVycG9sYXRpb24sIG90aGVyLmlu
dGVycG9sYXRpb24pICYmCiAgICAgICAgICAgICAoc2hhZGVyVmVyc2lvbiA+PSAzMDAgfHwgaXNJ
bnZhcmlhbnQgPT0gb3RoZXIuaXNJbnZhcmlhbnQpKTsKIH0KIApAQCAtMzk4LDQgKzM5OCw5MSBA
QCBzdGQ6OnN0cmluZyBJbnRlcmZhY2VCbG9jazo6ZmllbGRQcmVmaXgoCiAgICAgcmV0dXJuIGlu
c3RhbmNlTmFtZS5lbXB0eSgpID8gIiIgOiBuYW1lOwogfQogCitib29sIEludGVyZmFjZUJsb2Nr
Ojppc1NhbWVJbnRlcmZhY2VCbG9ja0F0TGlua1RpbWUoY29uc3QgSW50ZXJmYWNlQmxvY2sgJm90
aGVyKSBjb25zdAoreworICAgIGlmIChuYW1lICE9IG90aGVyLm5hbWUgfHwgbWFwcGVkTmFtZSAh
PSBvdGhlci5tYXBwZWROYW1lIHx8IGFycmF5U2l6ZSAhPSBvdGhlci5hcnJheVNpemUgfHwKKyAg
ICAgICAgbGF5b3V0ICE9IG90aGVyLmxheW91dCB8fCBpc1Jvd01ham9yTGF5b3V0ICE9IG90aGVy
LmlzUm93TWFqb3JMYXlvdXQgfHwKKyAgICAgICAgZmllbGRzLnNpemUoKSAhPSBvdGhlci5maWVs
ZHMuc2l6ZSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGZv
ciAoc2l6ZV90IGZpZWxkSW5kZXggPSAwOyBmaWVsZEluZGV4IDwgZmllbGRzLnNpemUoKTsgKytm
aWVsZEluZGV4KQorICAgIHsKKyAgICAgICAgaWYgKCFmaWVsZHNbZmllbGRJbmRleF0uaXNTYW1l
SW50ZXJmYWNlQmxvY2tGaWVsZEF0TGlua1RpbWUob3RoZXIuZmllbGRzW2ZpZWxkSW5kZXhdKSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV29ya0dyb3VwU2l6ZTo6ZmlsbChpbnQgZmls
bFZhbHVlKQoreworICAgIGxvY2FsU2l6ZVF1YWxpZmllcnNbMF0gPSBmaWxsVmFsdWU7CisgICAg
bG9jYWxTaXplUXVhbGlmaWVyc1sxXSA9IGZpbGxWYWx1ZTsKKyAgICBsb2NhbFNpemVRdWFsaWZp
ZXJzWzJdID0gZmlsbFZhbHVlOworfQorCit2b2lkIFdvcmtHcm91cFNpemU6OnNldExvY2FsU2l6
ZShpbnQgbG9jYWxTaXplWCwgaW50IGxvY2FsU2l6ZVksIGludCBsb2NhbFNpemVaKQoreworICAg
IGxvY2FsU2l6ZVF1YWxpZmllcnNbMF0gPSBsb2NhbFNpemVYOworICAgIGxvY2FsU2l6ZVF1YWxp
ZmllcnNbMV0gPSBsb2NhbFNpemVZOworICAgIGxvY2FsU2l6ZVF1YWxpZmllcnNbMl0gPSBsb2Nh
bFNpemVaOworfQorCisvLyBjaGVjayB0aGF0IGlmIG9uZSBvZiB0aGVtIGlzIGxlc3MgdGhhbiAx
LCB0aGVuIGFsbCBvZiB0aGVtIGFyZS4KKy8vIE9yIGlmIG9uZSBpcyBwb3NpdGl2ZSwgdGhlbiBh
bGwgb2YgdGhlbSBhcmUgcG9zaXRpdmUuCitib29sIFdvcmtHcm91cFNpemU6OmlzTG9jYWxTaXpl
VmFsaWQoKSBjb25zdAoreworICAgIHJldHVybiAoCisgICAgICAgIChsb2NhbFNpemVRdWFsaWZp
ZXJzWzBdIDwgMSAmJiBsb2NhbFNpemVRdWFsaWZpZXJzWzFdIDwgMSAmJiBsb2NhbFNpemVRdWFs
aWZpZXJzWzJdIDwgMSkgfHwKKyAgICAgICAgKGxvY2FsU2l6ZVF1YWxpZmllcnNbMF0gPiAwICYm
IGxvY2FsU2l6ZVF1YWxpZmllcnNbMV0gPiAwICYmIGxvY2FsU2l6ZVF1YWxpZmllcnNbMl0gPiAw
KSk7Cit9CisKK2Jvb2wgV29ya0dyb3VwU2l6ZTo6aXNBbnlWYWx1ZVNldCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGxvY2FsU2l6ZVF1YWxpZmllcnNbMF0gPiAwIHx8IGxvY2FsU2l6ZVF1YWxpZmll
cnNbMV0gPiAwIHx8IGxvY2FsU2l6ZVF1YWxpZmllcnNbMl0gPiAwOworfQorCitib29sIFdvcmtH
cm91cFNpemU6OmlzRGVjbGFyZWQoKSBjb25zdAoreworICAgIGJvb2wgbG9jYWxTaXplRGVjbGFy
ZWQgPSBsb2NhbFNpemVRdWFsaWZpZXJzWzBdID4gMDsKKyAgICBBU1NFUlQoaXNMb2NhbFNpemVW
YWxpZCgpKTsKKyAgICByZXR1cm4gbG9jYWxTaXplRGVjbGFyZWQ7Cit9CisKK2Jvb2wgV29ya0dy
b3VwU2l6ZTo6aXNXb3JrR3JvdXBTaXplTWF0Y2hpbmcoY29uc3QgV29ya0dyb3VwU2l6ZSAmcmln
aHQpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaSA9IDB1OyBpIDwgc2l6ZSgpOyArK2kpCisg
ICAgeworICAgICAgICBib29sIHJlc3VsdCA9IChsb2NhbFNpemVRdWFsaWZpZXJzW2ldID09IHJp
Z2h0LmxvY2FsU2l6ZVF1YWxpZmllcnNbaV0gfHwKKyAgICAgICAgICAgICAgICAgICAgICAgKGxv
Y2FsU2l6ZVF1YWxpZmllcnNbaV0gPT0gMSAmJiByaWdodC5sb2NhbFNpemVRdWFsaWZpZXJzW2ld
ID09IC0xKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAobG9jYWxTaXplUXVhbGlmaWVyc1tp
XSA9PSAtMSAmJiByaWdodC5sb2NhbFNpemVRdWFsaWZpZXJzW2ldID09IDEpKTsKKyAgICAgICAg
aWYgKCFyZXN1bHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW50ICZXb3JrR3JvdXBTaXplOjpv
cGVyYXRvcltdKHNpemVfdCBpbmRleCkKK3sKKyAgICBBU1NFUlQoaW5kZXggPCBzaXplKCkpOwor
ICAgIHJldHVybiBsb2NhbFNpemVRdWFsaWZpZXJzW2luZGV4XTsKK30KKworaW50IFdvcmtHcm91
cFNpemU6Om9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25zdAoreworICAgIEFTU0VSVChpbmRl
eCA8IHNpemUoKSk7CisgICAgcmV0dXJuIGxvY2FsU2l6ZVF1YWxpZmllcnNbaW5kZXhdOworfQor
CitzaXplX3QgV29ya0dyb3VwU2l6ZTo6c2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIDN1Owor
fQorCiB9ICAvLyBuYW1lc3BhY2Ugc2gKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1NpbXBsaWZ5TG9vcENvbmRpdGlvbnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Np
bXBsaWZ5TG9vcENvbmRpdGlvbnMuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NpbXBsaWZ5TG9vcENvbmRpdGlvbnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjgwIEBACisvLworLy8gQ29weXJpZ2h0IChj
KSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFNp
bXBsaWZ5TG9vcENvbmRpdGlvbnMgaXMgYW4gQVNUIHRyYXZlcnNlciB0aGF0IGNvbnZlcnRzIGxv
b3AgY29uZGl0aW9ucyBhbmQgbG9vcCBleHByZXNzaW9ucworLy8gdG8gcmVndWxhciBzdGF0ZW1l
bnRzIGluc2lkZSB0aGUgbG9vcC4gVGhpcyB3YXkgZnVydGhlciB0cmFuc2Zvcm1hdGlvbnMgdGhh
dCBnZW5lcmF0ZSBzdGF0ZW1lbnRzCisvLyBmcm9tIGxvb3AgY29uZGl0aW9ucyBhbmQgbG9vcCBl
eHByZXNzaW9ucyB3b3JrIGNvcnJlY3RseS4KKy8vCisKKyNpbmNsdWRlICJjb21waWxlci90cmFu
c2xhdG9yL1NpbXBsaWZ5TG9vcENvbmRpdGlvbnMuaCIKKworI2luY2x1ZGUgImNvbXBpbGVyL3Ry
YW5zbGF0b3IvSW50ZXJtTm9kZS5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50
ZXJtTm9kZVBhdHRlcm5NYXRjaGVyLmgiCisKK25hbWVzcGFjZQoreworCitUSW50ZXJtQ29uc3Rh
bnRVbmlvbiAqQ3JlYXRlQm9vbENvbnN0YW50Tm9kZShib29sIHZhbHVlKQoreworICAgIFRDb25z
dGFudFVuaW9uICp1ID0gbmV3IFRDb25zdGFudFVuaW9uOworICAgIHUtPnNldEJDb25zdCh2YWx1
ZSk7CisgICAgVEludGVybUNvbnN0YW50VW5pb24gKm5vZGUgPQorICAgICAgICBuZXcgVEludGVy
bUNvbnN0YW50VW5pb24odSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCwg
MSkpOworICAgIHJldHVybiBub2RlOworfQorCitjbGFzcyBTaW1wbGlmeUxvb3BDb25kaXRpb25z
VHJhdmVyc2VyIDogcHVibGljIFRMVmFsdWVUcmFja2luZ1RyYXZlcnNlcgoreworICBwdWJsaWM6
CisgICAgU2ltcGxpZnlMb29wQ29uZGl0aW9uc1RyYXZlcnNlcih1bnNpZ25lZCBpbnQgY29uZGl0
aW9uc1RvU2ltcGxpZnlNYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBzaGFkZXJWZXJzaW9uKTsKKworICAgIHZvaWQgdHJhdmVyc2VMb29w
KFRJbnRlcm1Mb29wICpub2RlKSBvdmVycmlkZTsKKworICAgIGJvb2wgdmlzaXRCaW5hcnkoVmlz
aXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkgKm5vZGUpIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRB
Z2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpIG92ZXJyaWRlOwor
ICAgIGJvb2wgdmlzaXRUZXJuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtVGVybmFyeSAqbm9kZSkg
b3ZlcnJpZGU7CisKKyAgICB2b2lkIG5leHRJdGVyYXRpb24oKTsKKyAgICBib29sIGZvdW5kTG9v
cFRvQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbUZvdW5kTG9vcFRvQ2hhbmdlOyB9CisKKyAgcHJv
dGVjdGVkOgorICAgIC8vIE1hcmtlZCB0byB0cnVlIG9uY2UgYW4gb3BlcmF0aW9uIHRoYXQgbmVl
ZHMgdG8gYmUgaG9pc3RlZCBvdXQgb2YgdGhlIGV4cHJlc3Npb24gaGFzIGJlZW4KKyAgICAvLyBm
b3VuZC4gQWZ0ZXIgdGhhdCwgbm8gbW9yZSBBU1QgdXBkYXRlcyBhcmUgcGVyZm9ybWVkIG9uIHRo
YXQgdHJhdmVyc2FsLgorICAgIGJvb2wgbUZvdW5kTG9vcFRvQ2hhbmdlOworICAgIGJvb2wgbUlu
c2lkZUxvb3BDb25kaXRpb25PckV4cHJlc3Npb247CisgICAgSW50ZXJtTm9kZVBhdHRlcm5NYXRj
aGVyIG1Db25kaXRpb25zVG9TaW1wbGlmeTsKK307CisKK1NpbXBsaWZ5TG9vcENvbmRpdGlvbnNU
cmF2ZXJzZXI6OlNpbXBsaWZ5TG9vcENvbmRpdGlvbnNUcmF2ZXJzZXIoCisgICAgdW5zaWduZWQg
aW50IGNvbmRpdGlvbnNUb1NpbXBsaWZ5TWFzaywKKyAgICBjb25zdCBUU3ltYm9sVGFibGUgJnN5
bWJvbFRhYmxlLAorICAgIGludCBzaGFkZXJWZXJzaW9uKQorICAgIDogVExWYWx1ZVRyYWNraW5n
VHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSwgc3ltYm9sVGFibGUsIHNoYWRlclZlcnNpb24p
LAorICAgICAgbUZvdW5kTG9vcFRvQ2hhbmdlKGZhbHNlKSwKKyAgICAgIG1JbnNpZGVMb29wQ29u
ZGl0aW9uT3JFeHByZXNzaW9uKGZhbHNlKSwKKyAgICAgIG1Db25kaXRpb25zVG9TaW1wbGlmeShj
b25kaXRpb25zVG9TaW1wbGlmeU1hc2spCit7Cit9CisKK3ZvaWQgU2ltcGxpZnlMb29wQ29uZGl0
aW9uc1RyYXZlcnNlcjo6bmV4dEl0ZXJhdGlvbigpCit7CisgICAgbUZvdW5kTG9vcFRvQ2hhbmdl
ICAgICAgICAgICAgICAgPSBmYWxzZTsKKyAgICBtSW5zaWRlTG9vcENvbmRpdGlvbk9yRXhwcmVz
c2lvbiA9IGZhbHNlOworICAgIG5leHRUZW1wb3JhcnlJbmRleCgpOworfQorCitib29sIFNpbXBs
aWZ5TG9vcENvbmRpdGlvbnNUcmF2ZXJzZXI6OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50
ZXJtQmluYXJ5ICpub2RlKQoreworICAgIC8vIFRoZSB2aXNpdCBmdW5jdGlvbnMgb3BlcmF0ZSBp
biB0aHJlZSBtb2RlczoKKyAgICAvLyAxLiBJZiBhIG1hdGNoaW5nIGV4cHJlc3Npb24gaGFzIGFs
cmVhZHkgYmVlbiBmb3VuZCwgd2UgcmV0dXJuIGVhcmx5IHNpbmNlIG9ubHkgb25lIGxvb3AgY2Fu
CisgICAgLy8gICAgYmUgdHJhbnNmb3JtZWQgb24gb25lIHRyYXZlcnNhbC4KKyAgICAvLyAyLiBX
ZSB0cnkgdG8gZmluZCBsb29wcy4gSW4gY2FzZSBhIG5vZGUgaXMgbm90IGluc2lkZSBhIGxvb3Ag
YW5kIGNhbiBub3QgY29udGFpbiBsb29wcywgd2UKKyAgICAvLyAgICBzdG9wIHRyYXZlcnNpbmcg
dGhlIHN1YnRyZWUuCisgICAgLy8gMy4gSWYgd2UncmUgaW5zaWRlIGEgbG9vcCBjb25kaXRpb24g
b3IgZXhwcmVzc2lvbiwgd2UgY2hlY2sgZm9yIGV4cHJlc3Npb25zIHRoYXQgc2hvdWxkIGJlCisg
ICAgLy8gICAgbW92ZWQgb3V0IG9mIHRoZSBsb29wIGNvbmRpdGlvbiBvciBleHByZXNzaW9uLiBJ
ZiBvbmUgaXMgZm91bmQsIHRoZSBsb29wIGlzIHByb2Nlc3NlZC4KKworICAgIGlmIChtRm91bmRM
b29wVG9DaGFuZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbUluc2lkZUxv
b3BDb25kaXRpb25PckV4cHJlc3Npb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1G
b3VuZExvb3BUb0NoYW5nZSA9IG1Db25kaXRpb25zVG9TaW1wbGlmeS5tYXRjaChub2RlLCBnZXRQ
YXJlbnROb2RlKCksIGlzTFZhbHVlUmVxdWlyZWRIZXJlKCkpOworICAgIHJldHVybiAhbUZvdW5k
TG9vcFRvQ2hhbmdlOworfQorCitib29sIFNpbXBsaWZ5TG9vcENvbmRpdGlvbnNUcmF2ZXJzZXI6
OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKQorewor
ICAgIGlmIChtRm91bmRMb29wVG9DaGFuZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IC8vIElmIHdlJ3JlIG91dHNpZGUgYSBsb29wIGNvbmRpdGlvbiwgd2Ugb25seSBuZWVkIHRvIHRy
YXZlcnNlIG5vZGVzIHRoYXQgbWF5IGNvbnRhaW4gbG9vcHMuCisgICAgaWYgKCFtSW5zaWRlTG9v
cENvbmRpdGlvbk9yRXhwcmVzc2lvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbUZv
dW5kTG9vcFRvQ2hhbmdlID0gbUNvbmRpdGlvbnNUb1NpbXBsaWZ5Lm1hdGNoKG5vZGUsIGdldFBh
cmVudE5vZGUoKSk7CisgICAgcmV0dXJuICFtRm91bmRMb29wVG9DaGFuZ2U7Cit9CisKK2Jvb2wg
U2ltcGxpZnlMb29wQ29uZGl0aW9uc1RyYXZlcnNlcjo6dmlzaXRUZXJuYXJ5KFZpc2l0IHZpc2l0
LCBUSW50ZXJtVGVybmFyeSAqbm9kZSkKK3sKKyAgICBpZiAobUZvdW5kTG9vcFRvQ2hhbmdlKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBEb24ndCB0cmF2ZXJzZSB0ZXJuYXJ5IG9w
ZXJhdG9ycyBvdXRzaWRlIGxvb3AgY29uZGl0aW9ucy4KKyAgICBpZiAoIW1JbnNpZGVMb29wQ29u
ZGl0aW9uT3JFeHByZXNzaW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtRm91bmRM
b29wVG9DaGFuZ2UgPSBtQ29uZGl0aW9uc1RvU2ltcGxpZnkubWF0Y2gobm9kZSk7CisgICAgcmV0
dXJuICFtRm91bmRMb29wVG9DaGFuZ2U7Cit9CisKK3ZvaWQgU2ltcGxpZnlMb29wQ29uZGl0aW9u
c1RyYXZlcnNlcjo6dHJhdmVyc2VMb29wKFRJbnRlcm1Mb29wICpub2RlKQoreworICAgIGlmICht
Rm91bmRMb29wVG9DaGFuZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIE1hcmsgdGhhdCB3
ZSdyZSBpbnNpZGUgYSBsb29wIGNvbmRpdGlvbiBvciBleHByZXNzaW9uLCBhbmQgdHJhbnNmb3Jt
IHRoZSBsb29wIGlmIG5lZWRlZC4KKworICAgIGluY3JlbWVudERlcHRoKG5vZGUpOworCisgICAg
Ly8gTm90ZTogTm8gbmVlZCB0byB0cmF2ZXJzZSB0aGUgbG9vcCBpbml0IG5vZGUuCisKKyAgICBt
SW5zaWRlTG9vcENvbmRpdGlvbk9yRXhwcmVzc2lvbiA9IHRydWU7CisgICAgVExvb3BUeXBlIGxv
b3BUeXBlICAgICAgICAgICAgICAgPSBub2RlLT5nZXRUeXBlKCk7CisKKyAgICBpZiAobm9kZS0+
Z2V0Q29uZGl0aW9uKCkpCisgICAgeworICAgICAgICBub2RlLT5nZXRDb25kaXRpb24oKS0+dHJh
dmVyc2UodGhpcyk7CisKKyAgICAgICAgaWYgKG1Gb3VuZExvb3BUb0NoYW5nZSkKKyAgICAgICAg
eworICAgICAgICAgICAgLy8gUmVwbGFjZSB0aGUgbG9vcCBjb25kaXRpb24gd2l0aCBhIGJvb2xl
YW4gdmFyaWFibGUgdGhhdCdzIHVwZGF0ZWQgb24gZWFjaCBpdGVyYXRpb24uCisgICAgICAgICAg
ICBpZiAobG9vcFR5cGUgPT0gRUxvb3BXaGlsZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAvLyBUcmFuc2Zvcm06CisgICAgICAgICAgICAgICAgLy8gICB3aGlsZSAoZXhwcikgeyBi
b2R5OyB9CisgICAgICAgICAgICAgICAgLy8gaW50bworICAgICAgICAgICAgICAgIC8vICAgYm9v
bCBzMCA9IGV4cHI7CisgICAgICAgICAgICAgICAgLy8gICB3aGlsZSAoczApIHsgeyBib2R5OyB9
IHMwID0gZXhwcjsgfQorICAgICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSB0ZW1wSW5pdFNl
cTsKKyAgICAgICAgICAgICAgICB0ZW1wSW5pdFNlcS5wdXNoX2JhY2soY3JlYXRlVGVtcEluaXRE
ZWNsYXJhdGlvbihub2RlLT5nZXRDb25kaXRpb24oKS0+ZGVlcENvcHkoKSkpOworICAgICAgICAg
ICAgICAgIGluc2VydFN0YXRlbWVudHNJblBhcmVudEJsb2NrKHRlbXBJbml0U2VxKTsKKworICAg
ICAgICAgICAgICAgIFRJbnRlcm1CbG9jayAqbmV3Qm9keSA9IG5ldyBUSW50ZXJtQmxvY2soKTsK
KyAgICAgICAgICAgICAgICBpZiAobm9kZS0+Z2V0Qm9keSgpKQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgbmV3Qm9keS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKG5v
ZGUtPmdldEJvZHkoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG5ld0Jv
ZHktPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjaygKKyAgICAgICAgICAgICAgICAgICAgY3JlYXRl
VGVtcEFzc2lnbm1lbnQobm9kZS0+Z2V0Q29uZGl0aW9uKCktPmRlZXBDb3B5KCkpKTsKKworICAg
ICAgICAgICAgICAgIC8vIENhbid0IHVzZSBxdWV1ZVJlcGxhY2VtZW50IHRvIHJlcGxhY2Ugb2xk
IGJvZHksIHNpbmNlIGl0IG1heSBoYXZlIGJlZW4gbnVsbHB0ci4KKyAgICAgICAgICAgICAgICAv
LyBJdCdzIHNhZmUgdG8gZG8gdGhlIHJlcGxhY2VtZW50cyBpbiBwbGFjZSBoZXJlIC0gdGhpcyBu
b2RlIHdvbid0IGJlIHRyYXZlcnNlZAorICAgICAgICAgICAgICAgIC8vIGZ1cnRoZXIuCisgICAg
ICAgICAgICAgICAgbm9kZS0+c2V0Qm9keShuZXdCb2R5KTsKKyAgICAgICAgICAgICAgICBub2Rl
LT5zZXRDb25kaXRpb24oY3JlYXRlVGVtcFN5bWJvbChub2RlLT5nZXRDb25kaXRpb24oKS0+Z2V0
VHlwZSgpKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChsb29wVHlwZSA9
PSBFTG9vcERvV2hpbGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gVHJhbnNm
b3JtOgorICAgICAgICAgICAgICAgIC8vICAgZG8geworICAgICAgICAgICAgICAgIC8vICAgICBi
b2R5OworICAgICAgICAgICAgICAgIC8vICAgfSB3aGlsZSAoZXhwcik7CisgICAgICAgICAgICAg
ICAgLy8gaW50bworICAgICAgICAgICAgICAgIC8vICAgYm9vbCBzMCA9IHRydWU7CisgICAgICAg
ICAgICAgICAgLy8gICBkbyB7CisgICAgICAgICAgICAgICAgLy8gICAgIHsgYm9keTsgfQorICAg
ICAgICAgICAgICAgIC8vICAgICBzMCA9IGV4cHI7CisgICAgICAgICAgICAgICAgLy8gICB3aGls
ZSAoczApOworICAgICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSB0ZW1wSW5pdFNlcTsKKyAg
ICAgICAgICAgICAgICB0ZW1wSW5pdFNlcS5wdXNoX2JhY2soY3JlYXRlVGVtcEluaXREZWNsYXJh
dGlvbihDcmVhdGVCb29sQ29uc3RhbnROb2RlKHRydWUpKSk7CisgICAgICAgICAgICAgICAgaW5z
ZXJ0U3RhdGVtZW50c0luUGFyZW50QmxvY2sodGVtcEluaXRTZXEpOworCisgICAgICAgICAgICAg
ICAgVEludGVybUJsb2NrICpuZXdCb2R5ID0gbmV3IFRJbnRlcm1CbG9jaygpOworICAgICAgICAg
ICAgICAgIGlmIChub2RlLT5nZXRCb2R5KCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBuZXdCb2R5LT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2sobm9kZS0+Z2V0Qm9k
eSgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbmV3Qm9keS0+Z2V0U2Vx
dWVuY2UoKS0+cHVzaF9iYWNrKAorICAgICAgICAgICAgICAgICAgICBjcmVhdGVUZW1wQXNzaWdu
bWVudChub2RlLT5nZXRDb25kaXRpb24oKS0+ZGVlcENvcHkoKSkpOworCisgICAgICAgICAgICAg
ICAgLy8gQ2FuJ3QgdXNlIHF1ZXVlUmVwbGFjZW1lbnQgdG8gcmVwbGFjZSBvbGQgYm9keSwgc2lu
Y2UgaXQgbWF5IGhhdmUgYmVlbiBudWxscHRyLgorICAgICAgICAgICAgICAgIC8vIEl0J3Mgc2Fm
ZSB0byBkbyB0aGUgcmVwbGFjZW1lbnRzIGluIHBsYWNlIGhlcmUgLSB0aGlzIG5vZGUgd29uJ3Qg
YmUgdHJhdmVyc2VkCisgICAgICAgICAgICAgICAgLy8gZnVydGhlci4KKyAgICAgICAgICAgICAg
ICBub2RlLT5zZXRCb2R5KG5ld0JvZHkpOworICAgICAgICAgICAgICAgIG5vZGUtPnNldENvbmRp
dGlvbihjcmVhdGVUZW1wU3ltYm9sKG5vZGUtPmdldENvbmRpdGlvbigpLT5nZXRUeXBlKCkpKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGxvb3BUeXBlID09IEVMb29wRm9y
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIE1vdmUgdGhlIGxvb3AgY29uZGl0
aW9uIGluc2lkZSB0aGUgbG9vcC4KKyAgICAgICAgICAgICAgICAvLyBUcmFuc2Zvcm06CisgICAg
ICAgICAgICAgICAgLy8gICBmb3IgKGluaXQ7IGV4cHI7IGV4cHJCKSB7IGJvZHk7IH0KKyAgICAg
ICAgICAgICAgICAvLyBpbnRvCisgICAgICAgICAgICAgICAgLy8gICB7CisgICAgICAgICAgICAg
ICAgLy8gICAgIGluaXQ7CisgICAgICAgICAgICAgICAgLy8gICAgIGJvb2wgczAgPSBleHByOwor
ICAgICAgICAgICAgICAgIC8vICAgICB3aGlsZSAoczApIHsgeyBib2R5OyB9IGV4cHJCOyBzMCA9
IGV4cHI7IH0KKyAgICAgICAgICAgICAgICAvLyAgIH0KKyAgICAgICAgICAgICAgICBUSW50ZXJt
QmxvY2sgKmxvb3BTY29wZSA9IG5ldyBUSW50ZXJtQmxvY2soKTsKKyAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+Z2V0SW5pdCgpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgbG9vcFNjb3BlLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2sobm9kZS0+Z2V0SW5pdCgpKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbG9vcFNjb3BlLT5nZXRTZXF1ZW5j
ZSgpLT5wdXNoX2JhY2soCisgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVRlbXBJbml0RGVjbGFy
YXRpb24obm9kZS0+Z2V0Q29uZGl0aW9uKCktPmRlZXBDb3B5KCkpKTsKKworICAgICAgICAgICAg
ICAgIFRJbnRlcm1CbG9jayAqd2hpbGVMb29wQm9keSA9IG5ldyBUSW50ZXJtQmxvY2soKTsKKyAg
ICAgICAgICAgICAgICBpZiAobm9kZS0+Z2V0Qm9keSgpKQorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgd2hpbGVMb29wQm9keS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNr
KG5vZGUtPmdldEJvZHkoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHdo
aWxlTG9vcEJvZHktPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhub2RlLT5nZXRFeHByZXNzaW9u
KCkpOworICAgICAgICAgICAgICAgIHdoaWxlTG9vcEJvZHktPmdldFNlcXVlbmNlKCktPnB1c2hf
YmFjaygKKyAgICAgICAgICAgICAgICAgICAgY3JlYXRlVGVtcEFzc2lnbm1lbnQobm9kZS0+Z2V0
Q29uZGl0aW9uKCktPmRlZXBDb3B5KCkpKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtTG9vcCAq
d2hpbGVMb29wID0gbmV3IFRJbnRlcm1Mb29wKAorICAgICAgICAgICAgICAgICAgICBFTG9vcFdo
aWxlLCBudWxscHRyLCBjcmVhdGVUZW1wU3ltYm9sKG5vZGUtPmdldENvbmRpdGlvbigpLT5nZXRU
eXBlKCkpLCBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICB3aGlsZUxvb3BCb2R5KTsKKyAg
ICAgICAgICAgICAgICBsb29wU2NvcGUtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayh3aGlsZUxv
b3ApOworICAgICAgICAgICAgICAgIHF1ZXVlUmVwbGFjZW1lbnRXaXRoUGFyZW50KGdldEFuY2Vz
dG9yTm9kZSgxKSwgbm9kZSwgbG9vcFNjb3BlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE9yaWdpbmFsTm9kZTo6SVNfRFJPUFBFRCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIW1Gb3VuZExvb3BUb0NoYW5nZSAmJiBub2Rl
LT5nZXRFeHByZXNzaW9uKCkpCisgICAgeworICAgICAgICBub2RlLT5nZXRFeHByZXNzaW9uKCkt
PnRyYXZlcnNlKHRoaXMpOworCisgICAgICAgIGlmIChtRm91bmRMb29wVG9DaGFuZ2UpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChsb29wVHlwZSA9PSBFTG9vcEZvcik7CisgICAgICAg
ICAgICAvLyBNb3ZlIHRoZSBsb29wIGV4cHJlc3Npb24gdG8gaW5zaWRlIHRoZSBsb29wLgorICAg
ICAgICAgICAgLy8gVHJhbnNmb3JtOgorICAgICAgICAgICAgLy8gICBmb3IgKGluaXQ7IGV4cHI7
IGV4cHJCKSB7IGJvZHk7IH0KKyAgICAgICAgICAgIC8vIGludG8KKyAgICAgICAgICAgIC8vICAg
Zm9yIChpbml0OyBleHByOyApIHsgeyBib2R5OyB9IGV4cHJCOyB9CisgICAgICAgICAgICBUSW50
ZXJtVHlwZWQgKmxvb3BFeHByZXNzaW9uID0gbm9kZS0+Z2V0RXhwcmVzc2lvbigpOworICAgICAg
ICAgICAgbm9kZS0+c2V0RXhwcmVzc2lvbihudWxscHRyKTsKKyAgICAgICAgICAgIFRJbnRlcm1C
bG9jayAqb2xkQm9keSA9IG5vZGUtPmdldEJvZHkoKTsKKyAgICAgICAgICAgIG5vZGUtPnNldEJv
ZHkobmV3IFRJbnRlcm1CbG9jaygpKTsKKyAgICAgICAgICAgIGlmIChvbGRCb2R5ICE9IG51bGxw
dHIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbm9kZS0+Z2V0Qm9keSgpLT5nZXRT
ZXF1ZW5jZSgpLT5wdXNoX2JhY2sob2xkQm9keSk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBub2RlLT5nZXRCb2R5KCktPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhsb29wRXhwcmVzc2lv
bik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtSW5zaWRlTG9vcENvbmRpdGlvbk9yRXhwcmVz
c2lvbiA9IGZhbHNlOworCisgICAgaWYgKCFtRm91bmRMb29wVG9DaGFuZ2UgJiYgbm9kZS0+Z2V0
Qm9keSgpKQorICAgICAgICBub2RlLT5nZXRCb2R5KCktPnRyYXZlcnNlKHRoaXMpOworCisgICAg
ZGVjcmVtZW50RGVwdGgoKTsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKK3ZvaWQgU2ltcGxpZnlM
b29wQ29uZGl0aW9ucyhUSW50ZXJtTm9kZSAqcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgY29uZGl0aW9uc1RvU2ltcGxpZnlNYXNrLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqdGVtcG9yYXJ5SW5kZXgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2hhZGVyVmVyc2lvbikKK3sKKyAgICBTaW1wbGlm
eUxvb3BDb25kaXRpb25zVHJhdmVyc2VyIHRyYXZlcnNlcihjb25kaXRpb25zVG9TaW1wbGlmeU1h
c2ssIHN5bWJvbFRhYmxlLCBzaGFkZXJWZXJzaW9uKTsKKyAgICBBU1NFUlQodGVtcG9yYXJ5SW5k
ZXggIT0gbnVsbHB0cik7CisgICAgdHJhdmVyc2VyLnVzZVRlbXBvcmFyeUluZGV4KHRlbXBvcmFy
eUluZGV4KTsKKyAgICAvLyBQcm9jZXNzIG9uZSBsb29wIGF0IGEgdGltZSwgYW5kIHJlc2V0IHRo
ZSB0cmF2ZXJzZXIgYmV0d2VlbiBpdGVyYXRpb25zLgorICAgIGRvCisgICAgeworICAgICAgICB0
cmF2ZXJzZXIubmV4dEl0ZXJhdGlvbigpOworICAgICAgICByb290LT50cmF2ZXJzZSgmdHJhdmVy
c2VyKTsKKyAgICAgICAgaWYgKHRyYXZlcnNlci5mb3VuZExvb3BUb0NoYW5nZSgpKQorICAgICAg
ICAgICAgdHJhdmVyc2VyLnVwZGF0ZVRyZWUoKTsKKyAgICB9IHdoaWxlICh0cmF2ZXJzZXIuZm91
bmRMb29wVG9DaGFuZ2UoKSk7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9TaW1wbGlmeUxvb3BDb25kaXRpb25zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2ltcGxp
ZnlMb29wQ29uZGl0aW9ucy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NpbXBsaWZ5TG9vcENvbmRpdGlvbnMuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDIzIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFNpbXBsaWZ5TG9v
cENvbmRpdGlvbnMgaXMgYW4gQVNUIHRyYXZlcnNlciB0aGF0IGNvbnZlcnRzIGxvb3AgY29uZGl0
aW9ucyBhbmQgbG9vcCBleHByZXNzaW9ucworLy8gdG8gcmVndWxhciBzdGF0ZW1lbnRzIGluc2lk
ZSB0aGUgbG9vcC4gVGhpcyB3YXkgZnVydGhlciB0cmFuc2Zvcm1hdGlvbnMgdGhhdCBnZW5lcmF0
ZSBzdGF0ZW1lbnRzCisvLyBmcm9tIGxvb3AgY29uZGl0aW9ucyBhbmQgbG9vcCBleHByZXNzaW9u
cyB3b3JrIGNvcnJlY3RseS4KKy8vCisKKyNpZm5kZWYgQ09NUElMRVJfVFJBTlNMQVRPUl9TSU1Q
TElGWUxPT1BDT05ESVRJT05TX0hfCisjZGVmaW5lIENPTVBJTEVSX1RSQU5TTEFUT1JfU0lNUExJ
RllMT09QQ09ORElUSU9OU19IXworCitjbGFzcyBUSW50ZXJtTm9kZTsKK2NsYXNzIFRTeW1ib2xU
YWJsZTsKKwordm9pZCBTaW1wbGlmeUxvb3BDb25kaXRpb25zKFRJbnRlcm1Ob2RlICpyb290LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjb25kaXRpb25zVG9TaW1w
bGlmeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKnRlbXBvcmFy
eUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTeW1ib2xUYWJsZSAm
c3ltYm9sVGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNoYWRlclZlcnNp
b24pOworCisjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfU0lNUExJRllMT09QQ09ORElU
SU9OU19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvU3BsaXRTZXF1ZW5jZU9wZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TcGxpdFNlcXVlbmNlT3BlcmF0
b3IuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1NwbGl0U2VxdWVuY2VPcGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxNTMgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gU3BsaXRTZXF1ZW5jZU9wZXJhdG9y
IGlzIGFuIEFTVCB0cmF2ZXJzZXIgdGhhdCBkZXRlY3RzIHNlcXVlbmNlIG9wZXJhdG9yIGV4cHJl
c3Npb25zIHRoYXQKKy8vIGdvIHRocm91Z2ggZnVydGhlciBBU1QgdHJhbnNmb3JtYXRpb25zIHRo
YXQgZ2VuZXJhdGUgc3RhdGVtZW50cywgYW5kIHNwbGl0cyB0aGVtIHNvIHRoYXQKKy8vIHBvc3Np
YmxlIHNpZGUgZWZmZWN0cyBvZiBlYXJsaWVyIHBhcnRzIG9mIHRoZSBzZXF1ZW5jZSBvcGVyYXRv
ciBleHByZXNzaW9uIGFyZSBndWFyYW50ZWVkIHRvIGJlCisvLyBldmFsdWF0ZWQgYmVmb3JlIHRo
ZSBsYXR0ZXIgcGFydHMgb2YgdGhlIHNlcXVlbmNlIG9wZXJhdG9yIGV4cHJlc3Npb24gYXJlIGV2
YWx1YXRlZC4KKy8vCisKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1NwbGl0U2VxdWVu
Y2VPcGVyYXRvci5oIgorCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2Rl
LmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlUGF0dGVybk1hdGNo
ZXIuaCIKKworbmFtZXNwYWNlCit7CisKK2NsYXNzIFNwbGl0U2VxdWVuY2VPcGVyYXRvclRyYXZl
cnNlciA6IHB1YmxpYyBUTFZhbHVlVHJhY2tpbmdUcmF2ZXJzZXIKK3sKKyAgcHVibGljOgorICAg
IFNwbGl0U2VxdWVuY2VPcGVyYXRvclRyYXZlcnNlcih1bnNpZ25lZCBpbnQgcGF0dGVybnNUb1Nw
bGl0TWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN5bWJv
bFRhYmxlICZzeW1ib2xUYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IHNoYWRlclZlcnNpb24pOworCisgICAgYm9vbCB2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwg
VEludGVybUJpbmFyeSAqbm9kZSkgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShW
aXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkgb3ZlcnJpZGU7CisgICAgYm9vbCB2
aXNpdFRlcm5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1UZXJuYXJ5ICpub2RlKSBvdmVycmlkZTsK
KworICAgIHZvaWQgbmV4dEl0ZXJhdGlvbigpOworICAgIGJvb2wgZm91bmRFeHByZXNzaW9uVG9T
cGxpdCgpIGNvbnN0IHsgcmV0dXJuIG1Gb3VuZEV4cHJlc3Npb25Ub1NwbGl0OyB9CisKKyAgcHJv
dGVjdGVkOgorICAgIC8vIE1hcmtlZCB0byB0cnVlIG9uY2UgYW4gb3BlcmF0aW9uIHRoYXQgbmVl
ZHMgdG8gYmUgaG9pc3RlZCBvdXQgb2YgdGhlIGV4cHJlc3Npb24gaGFzIGJlZW4KKyAgICAvLyBm
b3VuZC4gQWZ0ZXIgdGhhdCwgbm8gbW9yZSBBU1QgdXBkYXRlcyBhcmUgcGVyZm9ybWVkIG9uIHRo
YXQgdHJhdmVyc2FsLgorICAgIGJvb2wgbUZvdW5kRXhwcmVzc2lvblRvU3BsaXQ7CisgICAgaW50
IG1JbnNpZGVTZXF1ZW5jZU9wZXJhdG9yOworCisgICAgSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVy
IG1QYXR0ZXJuVG9TcGxpdE1hdGNoZXI7Cit9OworCitTcGxpdFNlcXVlbmNlT3BlcmF0b3JUcmF2
ZXJzZXI6OlNwbGl0U2VxdWVuY2VPcGVyYXRvclRyYXZlcnNlcih1bnNpZ25lZCBpbnQgcGF0dGVy
bnNUb1NwbGl0TWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFibGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgc2hhZGVyVmVyc2lvbikKKyAgICA6IFRMVmFsdWVUcmFja2luZ1RyYXZlcnNlcih0
cnVlLCBmYWxzZSwgdHJ1ZSwgc3ltYm9sVGFibGUsIHNoYWRlclZlcnNpb24pLAorICAgICAgbUZv
dW5kRXhwcmVzc2lvblRvU3BsaXQoZmFsc2UpLAorICAgICAgbUluc2lkZVNlcXVlbmNlT3BlcmF0
b3IoMCksCisgICAgICBtUGF0dGVyblRvU3BsaXRNYXRjaGVyKHBhdHRlcm5zVG9TcGxpdE1hc2sp
Cit7Cit9CisKK3ZvaWQgU3BsaXRTZXF1ZW5jZU9wZXJhdG9yVHJhdmVyc2VyOjpuZXh0SXRlcmF0
aW9uKCkKK3sKKyAgICBtRm91bmRFeHByZXNzaW9uVG9TcGxpdCA9IGZhbHNlOworICAgIG1JbnNp
ZGVTZXF1ZW5jZU9wZXJhdG9yID0gMDsKKyAgICBuZXh0VGVtcG9yYXJ5SW5kZXgoKTsKK30KKwor
Ym9vbCBTcGxpdFNlcXVlbmNlT3BlcmF0b3JUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpc2l0
IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKQoreworICAgIGlmIChtRm91bmRFeHByZXNz
aW9uVG9TcGxpdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1JbnNpZGVTZXF1
ZW5jZU9wZXJhdG9yID4gMCAmJiB2aXNpdCA9PSBQcmVWaXNpdCkKKyAgICB7CisgICAgICAgIC8v
IERldGVjdCBleHByZXNzaW9ucyB0aGF0IG5lZWQgdG8gYmUgc2ltcGxpZmllZAorICAgICAgICBt
Rm91bmRFeHByZXNzaW9uVG9TcGxpdCA9IG1QYXR0ZXJuVG9TcGxpdE1hdGNoZXIubWF0Y2gobm9k
ZSwgZ2V0UGFyZW50Tm9kZSgpKTsKKyAgICAgICAgcmV0dXJuICFtRm91bmRFeHByZXNzaW9uVG9T
cGxpdDsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBTcGxpdFNlcXVlbmNl
T3BlcmF0b3JUcmF2ZXJzZXI6OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5
ICpub2RlKQoreworICAgIGlmIChub2RlLT5nZXRPcCgpID09IEVPcENvbW1hKQorICAgIHsKKyAg
ICAgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
bUZvdW5kRXhwcmVzc2lvblRvU3BsaXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbUluc2lkZVNlcXVlbmNl
T3BlcmF0b3IrKzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICh2aXNpdCA9PSBQb3N0Vmlz
aXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFNwbGl0IHNlcXVlbmNlIG9wZXJhdG9ycyBz
dGFydGluZyBmcm9tIHRoZSBvdXRlcm1vc3Qgb25lIHRvIHByZXNlcnZlIGNvcnJlY3QKKyAgICAg
ICAgICAgIC8vIGV4ZWN1dGlvbiBvcmRlci4KKyAgICAgICAgICAgIGlmIChtRm91bmRFeHByZXNz
aW9uVG9TcGxpdCAmJiBtSW5zaWRlU2VxdWVuY2VPcGVyYXRvciA9PSAxKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIC8vIE1vdmUgdGhlIGxlZnQgc2lkZSBvcGVyYW5kIGludG8gYSBz
ZXBhcmF0ZSBzdGF0ZW1lbnQgaW4gdGhlIHBhcmVudCBibG9jay4KKyAgICAgICAgICAgICAgICBU
SW50ZXJtU2VxdWVuY2UgaW5zZXJ0aW9uczsKKyAgICAgICAgICAgICAgICBpbnNlcnRpb25zLnB1
c2hfYmFjayhub2RlLT5nZXRMZWZ0KCkpOworICAgICAgICAgICAgICAgIGluc2VydFN0YXRlbWVu
dHNJblBhcmVudEJsb2NrKGluc2VydGlvbnMpOworICAgICAgICAgICAgICAgIC8vIFJlcGxhY2Ug
dGhlIGNvbW1hIG5vZGUgd2l0aCBpdHMgcmlnaHQgc2lkZSBvcGVyYW5kLgorICAgICAgICAgICAg
ICAgIHF1ZXVlUmVwbGFjZW1lbnQobm9kZSwgbm9kZS0+Z2V0UmlnaHQoKSwgT3JpZ2luYWxOb2Rl
OjpJU19EUk9QUEVEKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1JbnNpZGVTZXF1ZW5j
ZU9wZXJhdG9yLS07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgaWYgKG1Gb3VuZEV4cHJlc3Npb25Ub1NwbGl0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAobUluc2lkZVNlcXVlbmNlT3BlcmF0b3IgPiAwICYmIHZpc2l0ID09IFByZVZpc2l0
KQorICAgIHsKKyAgICAgICAgLy8gRGV0ZWN0IGV4cHJlc3Npb25zIHRoYXQgbmVlZCB0byBiZSBz
aW1wbGlmaWVkCisgICAgICAgIG1Gb3VuZEV4cHJlc3Npb25Ub1NwbGl0ID0KKyAgICAgICAgICAg
IG1QYXR0ZXJuVG9TcGxpdE1hdGNoZXIubWF0Y2gobm9kZSwgZ2V0UGFyZW50Tm9kZSgpLCBpc0xW
YWx1ZVJlcXVpcmVkSGVyZSgpKTsKKyAgICAgICAgcmV0dXJuICFtRm91bmRFeHByZXNzaW9uVG9T
cGxpdDsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBTcGxpdFNlcXVlbmNl
T3BlcmF0b3JUcmF2ZXJzZXI6OnZpc2l0VGVybmFyeShWaXNpdCB2aXNpdCwgVEludGVybVRlcm5h
cnkgKm5vZGUpCit7CisgICAgaWYgKG1Gb3VuZEV4cHJlc3Npb25Ub1NwbGl0KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobUluc2lkZVNlcXVlbmNlT3BlcmF0b3IgPiAwICYmIHZp
c2l0ID09IFByZVZpc2l0KQorICAgIHsKKyAgICAgICAgLy8gRGV0ZWN0IGV4cHJlc3Npb25zIHRo
YXQgbmVlZCB0byBiZSBzaW1wbGlmaWVkCisgICAgICAgIG1Gb3VuZEV4cHJlc3Npb25Ub1NwbGl0
ID0gbVBhdHRlcm5Ub1NwbGl0TWF0Y2hlci5tYXRjaChub2RlKTsKKyAgICAgICAgcmV0dXJuICFt
Rm91bmRFeHByZXNzaW9uVG9TcGxpdDsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
fSAgLy8gbmFtZXNwYWNlCisKK3ZvaWQgU3BsaXRTZXF1ZW5jZU9wZXJhdG9yKFRJbnRlcm1Ob2Rl
ICpyb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBhdHRlcm5zVG9TcGxpdE1h
c2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKnRlbXBvcmFyeUlu
ZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN5bWJvbFRhYmxlICZzeW1i
b2xUYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaGFkZXJWZXJzaW9uKQor
eworICAgIFNwbGl0U2VxdWVuY2VPcGVyYXRvclRyYXZlcnNlciB0cmF2ZXJzZXIocGF0dGVybnNU
b1NwbGl0TWFzaywgc3ltYm9sVGFibGUsIHNoYWRlclZlcnNpb24pOworICAgIEFTU0VSVCh0ZW1w
b3JhcnlJbmRleCAhPSBudWxscHRyKTsKKyAgICB0cmF2ZXJzZXIudXNlVGVtcG9yYXJ5SW5kZXgo
dGVtcG9yYXJ5SW5kZXgpOworICAgIC8vIFNlcGFyYXRlIG9uZSBleHByZXNzaW9uIGF0IGEgdGlt
ZSwgYW5kIHJlc2V0IHRoZSB0cmF2ZXJzZXIgYmV0d2VlbiBpdGVyYXRpb25zLgorICAgIGRvCisg
ICAgeworICAgICAgICB0cmF2ZXJzZXIubmV4dEl0ZXJhdGlvbigpOworICAgICAgICByb290LT50
cmF2ZXJzZSgmdHJhdmVyc2VyKTsKKyAgICAgICAgaWYgKHRyYXZlcnNlci5mb3VuZEV4cHJlc3Np
b25Ub1NwbGl0KCkpCisgICAgICAgICAgICB0cmF2ZXJzZXIudXBkYXRlVHJlZSgpOworICAgIH0g
d2hpbGUgKHRyYXZlcnNlci5mb3VuZEV4cHJlc3Npb25Ub1NwbGl0KCkpOworfQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU3BsaXRTZXF1ZW5j
ZU9wZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvU3BsaXRTZXF1ZW5jZU9wZXJhdG9yLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU3BsaXRT
ZXF1ZW5jZU9wZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNCBAQAorLy8KKy8v
IENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisvLyBTcGxpdFNlcXVlbmNlT3BlcmF0b3IgaXMgYW4gQVNUIHRyYXZlcnNlciB0aGF0
IGRldGVjdHMgc2VxdWVuY2Ugb3BlcmF0b3IgZXhwcmVzc2lvbnMgdGhhdAorLy8gZ28gdGhyb3Vn
aCBmdXJ0aGVyIEFTVCB0cmFuc2Zvcm1hdGlvbnMgdGhhdCBnZW5lcmF0ZSBzdGF0ZW1lbnRzLCBh
bmQgc3BsaXRzIHRoZW0gc28gdGhhdAorLy8gcG9zc2libGUgc2lkZSBlZmZlY3RzIG9mIGVhcmxp
ZXIgcGFydHMgb2YgdGhlIHNlcXVlbmNlIG9wZXJhdG9yIGV4cHJlc3Npb24gYXJlIGd1YXJhbnRl
ZWQgdG8gYmUKKy8vIGV2YWx1YXRlZCBiZWZvcmUgdGhlIGxhdHRlciBwYXJ0cyBvZiB0aGUgc2Vx
dWVuY2Ugb3BlcmF0b3IgZXhwcmVzc2lvbiBhcmUgZXZhbHVhdGVkLgorLy8KKworI2lmbmRlZiBD
T01QSUxFUl9UUkFOU0xBVE9SX1NQTElUU0VRVUVOQ0VPUEVSQVRPUl9IXworI2RlZmluZSBDT01Q
SUxFUl9UUkFOU0xBVE9SX1NQTElUU0VRVUVOQ0VPUEVSQVRPUl9IXworCitjbGFzcyBUSW50ZXJt
Tm9kZTsKK2NsYXNzIFRTeW1ib2xUYWJsZTsKKwordm9pZCBTcGxpdFNlcXVlbmNlT3BlcmF0b3Io
VEludGVybU5vZGUgKnJvb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGF0dGVy
bnNUb1NwbGl0TWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAq
dGVtcG9yYXJ5SW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3ltYm9s
VGFibGUgJnN5bWJvbFRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNoYWRl
clZlcnNpb24pOworCisjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfU1BMSVRTRVFVRU5D
RU9QRVJBVE9SX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9TeW1ib2xUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU3ltYm9sVGFibGUuY3BwCShyZXZpc2lv
biAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9TeW1ib2xUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDEzICsyMSwzMyBAQAog
CiBpbnQgVFN5bWJvbFRhYmxlOjp1bmlxdWVJZENvdW50ZXIgPSAwOwogCitUU3ltYm9sOjpUU3lt
Ym9sKGNvbnN0IFRTdHJpbmcgKm4pIDogdW5pcXVlSWQoVFN5bWJvbFRhYmxlOjpuZXh0VW5pcXVl
SWQoKSksIG5hbWUobikKK3sKK30KKwogLy8KIC8vIEZ1bmN0aW9ucyBoYXZlIGJ1cmllZCBwb2lu
dGVycyB0byBkZWxldGUuCiAvLwogVEZ1bmN0aW9uOjp+VEZ1bmN0aW9uKCkKIHsKKyAgICBjbGVh
clBhcmFtZXRlcnMoKTsKK30KKwordm9pZCBURnVuY3Rpb246OmNsZWFyUGFyYW1ldGVycygpCit7
CiAgICAgZm9yIChUUGFyYW1MaXN0OjppdGVyYXRvciBpID0gcGFyYW1ldGVycy5iZWdpbigpOyBp
ICE9IHBhcmFtZXRlcnMuZW5kKCk7ICsraSkKICAgICAgICAgZGVsZXRlICgqaSkudHlwZTsKKyAg
ICBwYXJhbWV0ZXJzLmNsZWFyKCk7CisgICAgbWFuZ2xlZE5hbWUgPSBudWxscHRyOworfQorCit2
b2lkIFRGdW5jdGlvbjo6c3dhcFBhcmFtZXRlcnMoY29uc3QgVEZ1bmN0aW9uICZwYXJhbWV0ZXJz
U291cmNlKQoreworICAgIGNsZWFyUGFyYW1ldGVycygpOworICAgIGZvciAoYXV0byBwYXJhbWV0
ZXIgOiBwYXJhbWV0ZXJzU291cmNlLnBhcmFtZXRlcnMpCisgICAgeworICAgICAgICBhZGRQYXJh
bWV0ZXIocGFyYW1ldGVyKTsKKyAgICB9CiB9CiAKIGNvbnN0IFRTdHJpbmcgKlRGdW5jdGlvbjo6
YnVpbGRNYW5nbGVkTmFtZSgpIGNvbnN0CkBAIC01Myw4ICs3Myw2IEBAIFRTeW1ib2xUYWJsZUxl
dmVsOjp+VFN5bWJvbFRhYmxlTGV2ZWwoKQogCiBib29sIFRTeW1ib2xUYWJsZUxldmVsOjppbnNl
cnQoVFN5bWJvbCAqc3ltYm9sKQogewotICAgIHN5bWJvbC0+c2V0VW5pcXVlSWQoVFN5bWJvbFRh
YmxlOjpuZXh0VW5pcXVlSWQoKSk7Ci0KICAgICAvLyByZXR1cm5pbmcgdHJ1ZSBtZWFucyBzeW1i
b2wgd2FzIGFkZGVkIHRvIHRoZSB0YWJsZQogICAgIHRJbnNlcnRSZXN1bHQgcmVzdWx0ID0gbGV2
ZWwuaW5zZXJ0KHRMZXZlbFBhaXIoc3ltYm9sLT5nZXRNYW5nbGVkTmFtZSgpLCBzeW1ib2wpKTsK
IApAQCAtNjMsOCArODEsNiBAQCBib29sIFRTeW1ib2xUYWJsZUxldmVsOjppbnNlcnQoVFN5bWJv
bCAqCiAKIGJvb2wgVFN5bWJvbFRhYmxlTGV2ZWw6Omluc2VydFVubWFuZ2xlZChURnVuY3Rpb24g
KmZ1bmN0aW9uKQogewotICAgIGZ1bmN0aW9uLT5zZXRVbmlxdWVJZChUU3ltYm9sVGFibGU6Om5l
eHRVbmlxdWVJZCgpKTsKLQogICAgIC8vIHJldHVybmluZyB0cnVlIG1lYW5zIHN5bWJvbCB3YXMg
YWRkZWQgdG8gdGhlIHRhYmxlCiAgICAgdEluc2VydFJlc3VsdCByZXN1bHQgPSBsZXZlbC5pbnNl
cnQodExldmVsUGFpcihmdW5jdGlvbi0+Z2V0TmFtZSgpLCBmdW5jdGlvbikpOwogCkBAIC04OCw3
ICsxMDQsOSBAQCBUU3ltYm9sICpUU3ltYm9sVGFibGU6OmZpbmQoY29uc3QgVFN0cmluCiAKICAg
ICBkbwogICAgIHsKLSAgICAgICAgaWYgKGxldmVsID09IEVTU0wzX0JVSUxUSU5TICYmIHNoYWRl
clZlcnNpb24gIT0gMzAwKQorICAgICAgICBpZiAobGV2ZWwgPT0gRVNTTDNfMV9CVUlMVElOUyAm
JiBzaGFkZXJWZXJzaW9uICE9IDMxMCkKKyAgICAgICAgICAgIGxldmVsLS07CisgICAgICAgIGlm
IChsZXZlbCA9PSBFU1NMM19CVUlMVElOUyAmJiBzaGFkZXJWZXJzaW9uIDwgMzAwKQogICAgICAg
ICAgICAgbGV2ZWwtLTsKICAgICAgICAgaWYgKGxldmVsID09IEVTU0wxX0JVSUxUSU5TICYmIHNo
YWRlclZlcnNpb24gIT0gMTAwKQogICAgICAgICAgICAgbGV2ZWwtLTsKQEAgLTExMCw3ICsxMjgs
OSBAQCBUU3ltYm9sICpUU3ltYm9sVGFibGU6OmZpbmRCdWlsdEluKAogewogICAgIGZvciAoaW50
IGxldmVsID0gTEFTVF9CVUlMVElOX0xFVkVMOyBsZXZlbCA+PSAwOyBsZXZlbC0tKQogICAgIHsK
LSAgICAgICAgaWYgKGxldmVsID09IEVTU0wzX0JVSUxUSU5TICYmIHNoYWRlclZlcnNpb24gIT0g
MzAwKQorICAgICAgICBpZiAobGV2ZWwgPT0gRVNTTDNfMV9CVUlMVElOUyAmJiBzaGFkZXJWZXJz
aW9uICE9IDMxMCkKKyAgICAgICAgICAgIGxldmVsLS07CisgICAgICAgIGlmIChsZXZlbCA9PSBF
U1NMM19CVUlMVElOUyAmJiBzaGFkZXJWZXJzaW9uIDwgMzAwKQogICAgICAgICAgICAgbGV2ZWwt
LTsKICAgICAgICAgaWYgKGxldmVsID09IEVTU0wxX0JVSUxUSU5TICYmIHNoYWRlclZlcnNpb24g
IT0gMTAwKQogICAgICAgICAgICAgbGV2ZWwtLTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1N5bWJvbFRhYmxlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU3ltYm9sVGFi
bGUuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvU3ltYm9sVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiAr
MzAsNyBAQAogLy8gICBhcmUgdHJhY2tlZCBpbiB0aGUgaW50ZXJtZWRpYXRlIHJlcHJlc2VudGF0
aW9uLCBub3QgdGhlIHN5bWJvbCB0YWJsZS4KIC8vCiAKKyNpbmNsdWRlIDxhcnJheT4KICNpbmNs
dWRlIDxhc3NlcnQuaD4KICNpbmNsdWRlIDxzZXQ+CiAKQEAgLTQyLDExICs0Myw4IEBAIGNsYXNz
IFRTeW1ib2wgOiBhbmdsZTo6Tm9uQ29weWFibGUKIHsKICAgcHVibGljOgogICAgIFBPT0xfQUxM
T0NBVE9SX05FV19ERUxFVEUoKTsKLSAgICBUU3ltYm9sKGNvbnN0IFRTdHJpbmcgKm4pCi0gICAg
ICAgIDogdW5pcXVlSWQoMCksCi0gICAgICAgICAgbmFtZShuKQotICAgIHsKLSAgICB9CisgICAg
VFN5bWJvbChjb25zdCBUU3RyaW5nICpuKTsKKwogICAgIHZpcnR1YWwgflRTeW1ib2woKQogICAg
IHsKICAgICAgICAgLy8gZG9uJ3QgZGVsZXRlIG5hbWUsIGl0J3MgZnJvbSB0aGUgcG9vbApAQCAt
NjgsMTAgKzY2LDYgQEAgY2xhc3MgVFN5bWJvbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICB2b2lkIHNldFVuaXF1ZUlkKGludCBp
ZCkKLSAgICB7Ci0gICAgICAgIHVuaXF1ZUlkID0gaWQ7Ci0gICAgfQogICAgIGludCBnZXRVbmlx
dWVJZCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gdW5pcXVlSWQ7CkBAIC04Niw3ICs4
MCw3IEBAIGNsYXNzIFRTeW1ib2wgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICB9CiAKICAgcHJp
dmF0ZToKLSAgICBpbnQgdW5pcXVlSWQ7IC8vIEZvciByZWFsIGNvbXBhcmluZyBkdXJpbmcgY29k
ZSBnZW5lcmF0aW9uCisgICAgY29uc3QgaW50IHVuaXF1ZUlkOwogICAgIGNvbnN0IFRTdHJpbmcg
Km5hbWU7CiAgICAgVFN0cmluZyBleHRlbnNpb247CiB9OwpAQCAtMjI4LDYgKzIyMiw4IEBAIGNs
YXNzIFRGdW5jdGlvbiA6IHB1YmxpYyBUU3ltYm9sCiAgICAgICAgIG1hbmdsZWROYW1lID0gbnVs
bHB0cjsKICAgICB9CiAKKyAgICB2b2lkIHN3YXBQYXJhbWV0ZXJzKGNvbnN0IFRGdW5jdGlvbiAm
cGFyYW1ldGVyc1NvdXJjZSk7CisKICAgICBjb25zdCBUU3RyaW5nICZnZXRNYW5nbGVkTmFtZSgp
IGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAobWFuZ2xlZE5hbWUgPT0gbnVsbHB0
cikKQEAgLTI2MSw2ICsyNTcsOCBAQCBjbGFzcyBURnVuY3Rpb24gOiBwdWJsaWMgVFN5bWJvbAog
ICAgIH0KIAogICBwcml2YXRlOgorICAgIHZvaWQgY2xlYXJQYXJhbWV0ZXJzKCk7CisKICAgICBj
b25zdCBUU3RyaW5nICpidWlsZE1hbmdsZWROYW1lKCkgY29uc3Q7CiAKICAgICB0eXBlZGVmIFRW
ZWN0b3I8VENvbnN0UGFyYW1ldGVyPiBUUGFyYW1MaXN0OwpAQCAtMjk1LDYgKzI5Myw3IEBAIGNs
YXNzIFRTeW1ib2xUYWJsZUxldmVsCiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8dExldmVsOjppdGVy
YXRvciwgYm9vbD4gdEluc2VydFJlc3VsdDsKIAogICAgIFRTeW1ib2xUYWJsZUxldmVsKCkKKyAg
ICAgICAgOiBtR2xvYmFsSW52YXJpYW50KGZhbHNlKQogICAgIHsKICAgICB9CiAgICAgflRTeW1i
b2xUYWJsZUxldmVsKCk7CkBAIC0zMDYsOCArMzA1LDIyIEBAIGNsYXNzIFRTeW1ib2xUYWJsZUxl
dmVsCiAKICAgICBUU3ltYm9sICpmaW5kKGNvbnN0IFRTdHJpbmcgJm5hbWUpIGNvbnN0OwogCisg
ICAgdm9pZCBhZGRJbnZhcmlhbnRWYXJ5aW5nKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKQorICAg
IHsKKyAgICAgICAgbUludmFyaWFudFZhcnlpbmdzLmluc2VydChuYW1lKTsKKyAgICB9CisKKyAg
ICBib29sIGlzVmFyeWluZ0ludmFyaWFudChjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkKKyAgICB7
CisgICAgICAgIHJldHVybiAobUdsb2JhbEludmFyaWFudCB8fCBtSW52YXJpYW50VmFyeWluZ3Mu
Y291bnQobmFtZSkgPiAwKTsKKyAgICB9CisKKyAgICB2b2lkIHNldEdsb2JhbEludmFyaWFudChi
b29sIGludmFyaWFudCkgeyBtR2xvYmFsSW52YXJpYW50ID0gaW52YXJpYW50OyB9CisKICAgcHJv
dGVjdGVkOgogICAgIHRMZXZlbCBsZXZlbDsKKyAgICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gbUlu
dmFyaWFudFZhcnlpbmdzOworICAgIGJvb2wgbUdsb2JhbEludmFyaWFudDsKIH07CiAKIC8vIERl
ZmluZSBFU3ltYm9sTGV2ZWwgYXMgaW50IHJhdGhlciB0aGFuIGFuIGVudW0gc2luY2UgbGV2ZWwg
Y2FuIGdvCkBAIC0zMTcsMTQgKzMzMCwxNCBAQCB0eXBlZGVmIGludCBFU3ltYm9sTGV2ZWw7CiBj
b25zdCBpbnQgQ09NTU9OX0JVSUxUSU5TID0gMDsKIGNvbnN0IGludCBFU1NMMV9CVUlMVElOUyA9
IDE7CiBjb25zdCBpbnQgRVNTTDNfQlVJTFRJTlMgPSAyOwotY29uc3QgaW50IExBU1RfQlVJTFRJ
Tl9MRVZFTCA9IEVTU0wzX0JVSUxUSU5TOwotY29uc3QgaW50IEdMT0JBTF9MRVZFTCA9IDM7Citj
b25zdCBpbnQgRVNTTDNfMV9CVUlMVElOUyAgID0gMzsKK2NvbnN0IGludCBMQVNUX0JVSUxUSU5f
TEVWRUwgPSBFU1NMM18xX0JVSUxUSU5TOworY29uc3QgaW50IEdMT0JBTF9MRVZFTCAgICAgICA9
IDQ7CiAKIGNsYXNzIFRTeW1ib2xUYWJsZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogewogICBwdWJs
aWM6CiAgICAgVFN5bWJvbFRhYmxlKCkKLSAgICAgICAgOiBtR2xvYmFsSW52YXJpYW50KGZhbHNl
KQogICAgIHsKICAgICAgICAgLy8gVGhlIHN5bWJvbCB0YWJsZSBjYW5ub3QgYmUgdXNlZCB1bnRp
bCBwdXNoKCkgaXMgY2FsbGVkLCBidXQKICAgICAgICAgLy8gdGhlIGxhY2sgb2YgYW4gaW5pdGlh
bCBjYWxsIHRvIHB1c2goKSBjYW4gYmUgdXNlZCB0byBkZXRlY3QKQEAgLTM0Niw3ICszNTksNyBA
QCBjbGFzcyBUU3ltYm9sVGFibGUgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICB9CiAgICAgYm9v
bCBhdEdsb2JhbExldmVsKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBjdXJyZW50TGV2
ZWwoKSA8PSBHTE9CQUxfTEVWRUw7CisgICAgICAgIHJldHVybiBjdXJyZW50TGV2ZWwoKSA9PSBH
TE9CQUxfTEVWRUw7CiAgICAgfQogICAgIHZvaWQgcHVzaCgpCiAgICAgewpAQCAtMzc5LDEwICsz
OTIsMTAgQEAgY2xhc3MgVFN5bWJvbFRhYmxlIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgICAg
IHJldHVybiB0YWJsZVtsZXZlbF0tPmluc2VydChzeW1ib2wpOwogICAgIH0KIAotICAgIGJvb2wg
aW5zZXJ0Q29uc3RJbnQoRVN5bWJvbExldmVsIGxldmVsLCBjb25zdCBjaGFyICpuYW1lLCBpbnQg
dmFsdWUpCisgICAgYm9vbCBpbnNlcnRDb25zdEludChFU3ltYm9sTGV2ZWwgbGV2ZWwsIGNvbnN0
IGNoYXIgKm5hbWUsIGludCB2YWx1ZSwgVFByZWNpc2lvbiBwcmVjaXNpb24pCiAgICAgewotICAg
ICAgICBUVmFyaWFibGUgKmNvbnN0YW50ID0gbmV3IFRWYXJpYWJsZSgKLSAgICAgICAgICAgIE5l
d1Bvb2xUU3RyaW5nKG5hbWUpLCBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3Qs
IDEpKTsKKyAgICAgICAgVFZhcmlhYmxlICpjb25zdGFudCA9CisgICAgICAgICAgICBuZXcgVFZh
cmlhYmxlKE5ld1Bvb2xUU3RyaW5nKG5hbWUpLCBUVHlwZShFYnRJbnQsIHByZWNpc2lvbiwgRXZx
Q29uc3QsIDEpKTsKICAgICAgICAgVENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgVENv
bnN0YW50VW5pb25bMV07CiAgICAgICAgIHVuaW9uQXJyYXlbMF0uc2V0SUNvbnN0KHZhbHVlKTsK
ICAgICAgICAgY29uc3RhbnQtPnNoYXJlQ29uc3RQb2ludGVyKHVuaW9uQXJyYXkpOwpAQCAtMzk5
LDYgKzQxMiwyNCBAQCBjbGFzcyBUU3ltYm9sVGFibGUgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAg
ICAgICAgcmV0dXJuIGluc2VydChsZXZlbCwgZXh0LCBjb25zdGFudCk7CiAgICAgfQogCisgICAg
Ym9vbCBpbnNlcnRDb25zdEl2ZWMzKEVTeW1ib2xMZXZlbCBsZXZlbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjphcnJheTxpbnQsIDM+ICZ2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRQcmVjaXNpb24gcHJlY2lzaW9uKQorICAgIHsKKyAgICAgICAgVFZhcmlhYmxlICpjb25z
dGFudEl2ZWMzID0KKyAgICAgICAgICAgIG5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcobmFt
ZSksIFRUeXBlKEVidEludCwgcHJlY2lzaW9uLCBFdnFDb25zdCwgMykpOworCisgICAgICAgIFRD
b25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uWzNdOworICAgICAg
ICBmb3IgKHNpemVfdCBpbmRleCA9IDB1OyBpbmRleCA8IDN1OyArK2luZGV4KQorICAgICAgICB7
CisgICAgICAgICAgICB1bmlvbkFycmF5W2luZGV4XS5zZXRJQ29uc3QodmFsdWVzW2luZGV4XSk7
CisgICAgICAgIH0KKyAgICAgICAgY29uc3RhbnRJdmVjMy0+c2hhcmVDb25zdFBvaW50ZXIodW5p
b25BcnJheSk7CisKKyAgICAgICAgcmV0dXJuIGluc2VydChsZXZlbCwgY29uc3RhbnRJdmVjMyk7
CisgICAgfQorCiAgICAgdm9pZCBpbnNlcnRCdWlsdEluKEVTeW1ib2xMZXZlbCBsZXZlbCwgVE9w
ZXJhdG9yIG9wLCBjb25zdCBjaGFyICpleHQsIGNvbnN0IFRUeXBlICpydmFsdWUsIGNvbnN0IGNo
YXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwdHlwZTEsIGNv
bnN0IFRUeXBlICpwdHlwZTIgPSAwLCBjb25zdCBUVHlwZSAqcHR5cGUzID0gMCwgY29uc3QgVFR5
cGUgKnB0eXBlNCA9IDAsIGNvbnN0IFRUeXBlICpwdHlwZTUgPSAwKTsKIApAQCAtNDM3LDE1ICs0
NjgsMTUgQEAgY2xhc3MgVFN5bWJvbFRhYmxlIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAKICAgICBi
b29sIHNldERlZmF1bHRQcmVjaXNpb24oY29uc3QgVFB1YmxpY1R5cGUgJnR5cGUsIFRQcmVjaXNp
b24gcHJlYykKICAgICB7Ci0gICAgICAgIGlmICghU3VwcG9ydHNQcmVjaXNpb24odHlwZS50eXBl
KSkKKyAgICAgICAgaWYgKCFTdXBwb3J0c1ByZWNpc2lvbih0eXBlLmdldEJhc2ljVHlwZSgpKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKHR5cGUudHlwZSA9PSBFYnRV
SW50KQorICAgICAgICBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRVSW50KQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOyAgLy8gRVNTTCAzLjAwLjQgc2VjdGlvbiA0LjUuNAogICAgICAg
ICBpZiAodHlwZS5pc0FnZ3JlZ2F0ZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBO
b3QgYWxsb3dlZCB0byBzZXQgZm9yIGFnZ3JlZ2F0ZSB0eXBlcwogICAgICAgICBpbnQgaW5kZXhP
Zkxhc3RFbGVtZW50ID0gc3RhdGljX2Nhc3Q8aW50PihwcmVjaXNpb25TdGFjay5zaXplKCkpIC0g
MTsKICAgICAgICAgLy8gVXNlcyBtYXAgb3BlcmF0b3IgW10sIG92ZXJ3cml0ZXMgdGhlIGN1cnJl
bnQgdmFsdWUKLSAgICAgICAgKCpwcmVjaXNpb25TdGFja1tpbmRleE9mTGFzdEVsZW1lbnRdKVt0
eXBlLnR5cGVdID0gcHJlYzsKKyAgICAgICAgKCpwcmVjaXNpb25TdGFja1tpbmRleE9mTGFzdEVs
ZW1lbnRdKVt0eXBlLmdldEJhc2ljVHlwZSgpXSA9IHByZWM7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIApAQCAtNDU3LDcgKzQ4OCw4IEBAIGNsYXNzIFRTeW1ib2xUYWJsZSA6IGFuZ2xl
OjpOb25Db3B5YWJsZQogICAgIC8vICJpbnZhcmlhbnQgdmFyeWluZ19uYW1lOyIuCiAgICAgdm9p
ZCBhZGRJbnZhcmlhbnRWYXJ5aW5nKGNvbnN0IHN0ZDo6c3RyaW5nICZvcmlnaW5hbE5hbWUpCiAg
ICAgewotICAgICAgICBtSW52YXJpYW50VmFyeWluZ3MuaW5zZXJ0KG9yaWdpbmFsTmFtZSk7Cisg
ICAgICAgIEFTU0VSVChhdEdsb2JhbExldmVsKCkpOworICAgICAgICB0YWJsZVtjdXJyZW50TGV2
ZWwoKV0tPmFkZEludmFyaWFudFZhcnlpbmcob3JpZ2luYWxOYW1lKTsKICAgICB9CiAgICAgLy8g
SWYgdGhpcyByZXR1cm5zIGZhbHNlLCB0aGUgdmFyeWluZyBjb3VsZCBzdGlsbCBiZSBpbnZhcmlh
bnQKICAgICAvLyBpZiBpdCBpcyBzZXQgYXMgaW52YXJpYW50IGR1cmluZyB0aGUgdmFyeWluZyB2
YXJpYWJsZQpAQCAtNDY1LDEyICs0OTcsMTUgQEAgY2xhc3MgVFN5bWJvbFRhYmxlIDogYW5nbGU6
Ok5vbkNvcHlhYmxlCiAgICAgLy8gdmFyaWFibGUncyB0eXBlLCBub3QgaGVyZS4KICAgICBib29s
IGlzVmFyeWluZ0ludmFyaWFudChjb25zdCBzdGQ6OnN0cmluZyAmb3JpZ2luYWxOYW1lKSBjb25z
dAogICAgIHsKLSAgICAgIHJldHVybiAobUdsb2JhbEludmFyaWFudCB8fAotICAgICAgICAgICAg
ICBtSW52YXJpYW50VmFyeWluZ3MuY291bnQob3JpZ2luYWxOYW1lKSA+IDApOworICAgICAgICBB
U1NFUlQoYXRHbG9iYWxMZXZlbCgpKTsKKyAgICAgICAgcmV0dXJuIHRhYmxlW2N1cnJlbnRMZXZl
bCgpXS0+aXNWYXJ5aW5nSW52YXJpYW50KG9yaWdpbmFsTmFtZSk7CiAgICAgfQogCi0gICAgdm9p
ZCBzZXRHbG9iYWxJbnZhcmlhbnQoKSB7IG1HbG9iYWxJbnZhcmlhbnQgPSB0cnVlOyB9Ci0gICAg
Ym9vbCBnZXRHbG9iYWxJbnZhcmlhbnQoKSBjb25zdCB7IHJldHVybiBtR2xvYmFsSW52YXJpYW50
OyB9CisgICAgdm9pZCBzZXRHbG9iYWxJbnZhcmlhbnQoYm9vbCBpbnZhcmlhbnQpCisgICAgewor
ICAgICAgICBBU1NFUlQoYXRHbG9iYWxMZXZlbCgpKTsKKyAgICAgICAgdGFibGVbY3VycmVudExl
dmVsKCldLT5zZXRHbG9iYWxJbnZhcmlhbnQoaW52YXJpYW50KTsKKyAgICB9CiAKICAgICBzdGF0
aWMgaW50IG5leHRVbmlxdWVJZCgpCiAgICAgewpAQCAtNTAwLDkgKzUzNSw2IEBAIGNsYXNzIFRT
eW1ib2xUYWJsZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogCiAgICAgc3RkOjpzZXQ8c3RkOjpzdHJp
bmc+IG1Vbm1hbmdsZWRCdWlsdGluTmFtZXM7CiAKLSAgICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4g
bUludmFyaWFudFZhcnlpbmdzOwotICAgIGJvb2wgbUdsb2JhbEludmFyaWFudDsKLQogICAgIHN0
YXRpYyBpbnQgdW5pcXVlSWRDb3VudGVyOwogfTsKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVGV4dHVyZUZ1bmN0aW9uSExTTC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvVGV4dHVyZUZ1bmN0aW9uSExTTC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVGV4dHVyZUZ1bmN0aW9uSExTTC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjc0IEBACisvLworLy8gQ29weXJpZ2h0IChj
KSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFRl
eHR1cmVGdW5jdGlvbkhMU0w6IENsYXNzIGZvciB3cml0aW5nIGltcGxlbWVudGF0aW9ucyBvZiBF
U1NMIHRleHR1cmUgZnVuY3Rpb25zIGludG8gSExTTAorLy8gb3V0cHV0LiBTb21lIG9mIHRoZSBp
bXBsZW1lbnRhdGlvbnMgYXJlIHN0cmFpZ2h0Zm9yd2FyZCBhbmQganVzdCBjYWxsIHRoZSBITFNM
IGVxdWl2YWxlbnQgb2YgdGhlCisvLyBFU1NMIHRleHR1cmUgZnVuY3Rpb24sIG90aGVycyBkbyBt
b3JlIHdvcmsgdG8gZW11bGF0ZSBFU1NMIHRleHR1cmUgc2FtcGxpbmcgb3Igc2l6ZSBxdWVyeQor
Ly8gYmVoYXZpb3IuCisvLworCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9UZXh0dXJl
RnVuY3Rpb25ITFNMLmgiCisKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1V0aWxzSExT
TC5oIgorCituYW1lc3BhY2Ugc2gKK3sKKworbmFtZXNwYWNlCit7CisKK3ZvaWQgT3V0cHV0SW50
VGV4Q29vcmRXcmFwKFRJbmZvU2lua0Jhc2UgJm91dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIgKndyYXBNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciAqc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcg
JnRleENvb3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmdGV4
Q29vcmRPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0ZXhD
b29yZE91dE5hbWUpCit7CisgICAgLy8gR0xFUyAzLjAuNCB0YWJsZSAzLjIyIHNwZWNpZmllcyBo
b3cgdGhlIHdyYXAgbW9kZXMgd29yay4gV2UgZG9uJ3QgdXNlIHRoZSBmb3JtdWxhcyB2ZXJiYXRp
bQorICAgIC8vIGJ1dCByYXRoZXIgdXNlIGVxdWl2YWxlbnQgZm9ybXVsYXMgdGhhdCBtYXAgYmV0
dGVyIHRvIEhMU0wuCisgICAgb3V0IDw8ICJpbnQgIiA8PCB0ZXhDb29yZE91dE5hbWUgPDwgIjtc
biI7CisgICAgb3V0IDw8ICJmbG9hdCAiIDw8IHRleENvb3JkT3V0TmFtZSA8PCAiT2Zmc2V0ID0g
IiA8PCB0ZXhDb29yZCA8PCAiICsgZmxvYXQoIiA8PCB0ZXhDb29yZE9mZnNldAorICAgICAgICA8
PCAiKSAvICIgPDwgc2l6ZSA8PCAiO1xuIjsKKworICAgIC8vIENMQU1QX1RPX0VER0UKKyAgICBv
dXQgPDwgImlmICgiIDw8IHdyYXBNb2RlIDw8ICIgPT0gMSlcbiI7CisgICAgb3V0IDw8ICJ7XG4i
OworICAgIG91dCA8PCAiICAgICIgPDwgdGV4Q29vcmRPdXROYW1lIDw8ICIgPSBjbGFtcChpbnQo
Zmxvb3IoIiA8PCBzaXplIDw8ICIgKiAiIDw8IHRleENvb3JkT3V0TmFtZQorICAgICAgICA8PCAi
T2Zmc2V0KSksIDAsIGludCgiIDw8IHNpemUgPDwgIikgLSAxKTtcbiI7CisgICAgb3V0IDw8ICJ9
XG4iOworCisgICAgLy8gTUlSUk9SRURfUkVQRUFUCisgICAgb3V0IDw8ICJlbHNlIGlmICgiIDw8
IHdyYXBNb2RlIDw8ICIgPT0gMylcbiI7CisgICAgb3V0IDw8ICJ7XG4iOworICAgIG91dCA8PCAi
ICAgIGZsb2F0IGNvb3JkV3JhcHBlZCA9IDEuMCAtIGFicyhmcmFjKGFicygiIDw8IHRleENvb3Jk
T3V0TmFtZQorICAgICAgICA8PCAiT2Zmc2V0KSAqIDAuNSkgKiAyLjAgLSAxLjApO1xuIjsKKyAg
ICBvdXQgPDwgIiAgICAiIDw8IHRleENvb3JkT3V0TmFtZSA8PCAiID0gaW50KGZsb29yKCIgPDwg
c2l6ZSA8PCAiICogY29vcmRXcmFwcGVkKSk7XG4iOworICAgIG91dCA8PCAifVxuIjsKKworICAg
IC8vIFJFUEVBVAorICAgIG91dCA8PCAiZWxzZVxuIjsKKyAgICBvdXQgPDwgIntcbiI7CisgICAg
b3V0IDw8ICIgICAgIiA8PCB0ZXhDb29yZE91dE5hbWUgPDwgIiA9IGludChmbG9vcigiIDw8IHNp
emUgPDwgIiAqIGZyYWMoIiA8PCB0ZXhDb29yZE91dE5hbWUKKyAgICAgICAgPDwgIk9mZnNldCkp
KTtcbiI7CisgICAgb3V0IDw8ICJ9XG4iOworfQorCit2b2lkIE91dHB1dEludFRleENvb3JkV3Jh
cHMoVEluZm9TaW5rQmFzZSAmb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbiAmdGV4dHVyZUZ1bmN0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRTdHJpbmcgKnRleENvb3JkWCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUU3RyaW5nICp0ZXhDb29yZFksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVFN0cmluZyAqdGV4Q29vcmRaKQoreworICAgIC8vIENvbnZlcnQgZnJvbSBu
b3JtYWxpemVkIGZsb2F0aW5nLXBvaW50IHRvIGludGVnZXIKKyAgICBvdXQgPDwgImludCB3cmFw
UyA9IHNhbXBsZXJNZXRhZGF0YVtzYW1wbGVySW5kZXhdLndyYXBNb2RlcyAmIDB4MztcbiI7Cisg
ICAgaWYgKHRleHR1cmVGdW5jdGlvbi5vZmZzZXQpCisgICAgeworICAgICAgICBPdXRwdXRJbnRU
ZXhDb29yZFdyYXAob3V0LCAid3JhcFMiLCAid2lkdGgiLCAqdGV4Q29vcmRYLCAib2Zmc2V0Lngi
LCAidGl4Iik7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIE91dHB1dEludFRleENv
b3JkV3JhcChvdXQsICJ3cmFwUyIsICJ3aWR0aCIsICp0ZXhDb29yZFgsICIwIiwgInRpeCIpOwor
ICAgIH0KKyAgICAqdGV4Q29vcmRYID0gInRpeCI7CisgICAgb3V0IDw8ICJpbnQgd3JhcFQgPSAo
c2FtcGxlck1ldGFkYXRhW3NhbXBsZXJJbmRleF0ud3JhcE1vZGVzID4+IDIpICYgMHgzO1xuIjsK
KyAgICBpZiAodGV4dHVyZUZ1bmN0aW9uLm9mZnNldCkKKyAgICB7CisgICAgICAgIE91dHB1dElu
dFRleENvb3JkV3JhcChvdXQsICJ3cmFwVCIsICJoZWlnaHQiLCAqdGV4Q29vcmRZLCAib2Zmc2V0
LnkiLCAidGl5Iik7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIE91dHB1dEludFRl
eENvb3JkV3JhcChvdXQsICJ3cmFwVCIsICJoZWlnaHQiLCAqdGV4Q29vcmRZLCAiMCIsICJ0aXki
KTsKKyAgICB9CisgICAgKnRleENvb3JkWSA9ICJ0aXkiOworCisgICAgaWYgKElzU2FtcGxlckFy
cmF5KHRleHR1cmVGdW5jdGlvbi5zYW1wbGVyKSkKKyAgICB7CisgICAgICAgICp0ZXhDb29yZFog
PSAiaW50KG1heCgwLCBtaW4obGF5ZXJzIC0gMSwgZmxvb3IoMC41ICsgdC56KSkpKSI7CisgICAg
fQorICAgIGVsc2UgaWYgKCFJc1NhbXBsZXJDdWJlKHRleHR1cmVGdW5jdGlvbi5zYW1wbGVyKSAm
JiAhSXNTYW1wbGVyMkQodGV4dHVyZUZ1bmN0aW9uLnNhbXBsZXIpKQorICAgIHsKKyAgICAgICAg
b3V0IDw8ICJpbnQgd3JhcFIgPSAoc2FtcGxlck1ldGFkYXRhW3NhbXBsZXJJbmRleF0ud3JhcE1v
ZGVzID4+IDQpICYgMHgzO1xuIjsKKyAgICAgICAgaWYgKHRleHR1cmVGdW5jdGlvbi5vZmZzZXQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIE91dHB1dEludFRleENvb3JkV3JhcChvdXQsICJ3cmFw
UiIsICJkZXB0aCIsICp0ZXhDb29yZFosICJvZmZzZXQueiIsICJ0aXoiKTsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIE91dHB1dEludFRleENvb3JkV3Jh
cChvdXQsICJ3cmFwUiIsICJkZXB0aCIsICp0ZXhDb29yZFosICIwIiwgInRpeiIpOworICAgICAg
ICB9CisgICAgICAgICp0ZXhDb29yZFogPSAidGl6IjsKKyAgICB9Cit9CisKK3ZvaWQgT3V0cHV0
SExTTDRTYW1wbGVGdW5jdGlvblByZWZpeChUSW5mb1NpbmtCYXNlICZvdXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGV4dHVyZUZ1bmN0aW9uSExTTDo6VGV4
dHVyZUZ1bmN0aW9uICZ0ZXh0dXJlRnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmdGV4dHVyZVJlZmVyZW5jZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZzYW1wbGVyUmVmZXJlbmNl
KQoreworICAgIG91dCA8PCB0ZXh0dXJlUmVmZXJlbmNlOworICAgIGlmIChJc0ludGVnZXJTYW1w
bGVyKHRleHR1cmVGdW5jdGlvbi5zYW1wbGVyKSB8fAorICAgICAgICB0ZXh0dXJlRnVuY3Rpb24u
bWV0aG9kID09IFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbjo6RkVUQ0gpCisg
ICAgeworICAgICAgICBvdXQgPDwgIi5Mb2FkKCI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAoSXNTaGFkb3dTYW1wbGVyKHRleHR1cmVGdW5jdGlvbi5zYW1wbGVyKSkKKyAgICB7
CisgICAgICAgIHN3aXRjaCAodGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCkKKyAgICAgICAgeworICAg
ICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVuY3Rpb246OklNUExJ
Q0lUOgorICAgICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVuY3Rp
b246OkJJQVM6CisgICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVG
dW5jdGlvbjo6TE9EOgorICAgICAgICAgICAgICAgIG91dCA8PCAiLlNhbXBsZUNtcCgiOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb25ITFNM
OjpUZXh0dXJlRnVuY3Rpb246OkxPRDA6CisgICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlv
bkhMU0w6OlRleHR1cmVGdW5jdGlvbjo6TE9EMEJJQVM6CisgICAgICAgICAgICBjYXNlIFRleHR1
cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbjo6R1JBRDoKKyAgICAgICAgICAgICAgICBv
dXQgPDwgIi5TYW1wbGVDbXBMZXZlbFplcm8oIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBzd2l0Y2ggKHRleHR1cmVGdW5j
dGlvbi5tZXRob2QpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9u
SExTTDo6VGV4dHVyZUZ1bmN0aW9uOjpJTVBMSUNJVDoKKyAgICAgICAgICAgICAgICBvdXQgPDwg
Ii5TYW1wbGUoIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgVGV4
dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0aW9uOjpCSUFTOgorICAgICAgICAgICAgICAg
IG91dCA8PCAiLlNhbXBsZUJpYXMoIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0aW9uOjpMT0Q6CisgICAg
ICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbjo6TE9EMDoK
KyAgICAgICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0aW9uOjpM
T0QwQklBUzoKKyAgICAgICAgICAgICAgICBvdXQgPDwgIi5TYW1wbGVMZXZlbCgiOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb25ITFNMOjpU
ZXh0dXJlRnVuY3Rpb246OkdSQUQ6CisgICAgICAgICAgICAgICAgb3V0IDw8ICIuU2FtcGxlR3Jh
ZCgiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisgICAgfQorICAgIG91dCA8PCBz
YW1wbGVyUmVmZXJlbmNlIDw8ICIsICI7Cit9CisKK2NvbnN0IGNoYXIgKkdldFNhbXBsZXJDb29y
ZGluYXRlVHlwZVN0cmluZygKKyAgICBjb25zdCBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJl
RnVuY3Rpb24gJnRleHR1cmVGdW5jdGlvbiwKKyAgICBpbnQgaGxzbENvb3JkcykKK3sKKyAgICBp
ZiAoSXNJbnRlZ2VyU2FtcGxlcih0ZXh0dXJlRnVuY3Rpb24uc2FtcGxlcikgfHwKKyAgICAgICAg
dGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVu
Y3Rpb246OkZFVENIKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChobHNsQ29vcmRzKQorICAgICAg
ICB7CisgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgcmV0dXJuICJpbnQzIjsK
KyAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICByZXR1cm4gImludDQiOworICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAg
ICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHN3aXRjaCAoaGxzbENvb3JkcykK
KyAgICAgICAgeworICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgIHJldHVybiAi
ZmxvYXQyIjsKKyAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICByZXR1cm4gImZs
b2F0MyI7CisgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgcmV0dXJuICJmbG9h
dDQiOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAiIjsKK30KKworaW50IEdldEhMU0xDb29y
ZENvdW50KGNvbnN0IFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbiAmdGV4dHVy
ZUZ1bmN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgIFNoU2hhZGVyT3V0cHV0IG91dHB1dFR5
cGUpCit7CisgICAgaWYgKG91dHB1dFR5cGUgPT0gU0hfSExTTF8zXzBfT1VUUFVUKQorICAgIHsK
KyAgICAgICAgaW50IGhsc2xDb29yZHMgPSAyOworICAgICAgICBzd2l0Y2ggKHRleHR1cmVGdW5j
dGlvbi5zYW1wbGVyKQorICAgICAgICB7CisgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXIyRDoK
KyAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlckV4dGVybmFsT0VTOgorICAgICAgICAgICAgICAg
IGhsc2xDb29yZHMgPSAyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBFYnRTYW1wbGVyQ3ViZToKKyAgICAgICAgICAgICAgICBobHNsQ29vcmRzID0gMzsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
VU5SRUFDSEFCTEUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAodGV4dHVyZUZ1bmN0
aW9uLm1ldGhvZCkKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb25I
TFNMOjpUZXh0dXJlRnVuY3Rpb246OklNUExJQ0lUOgorICAgICAgICAgICAgICAgIHJldHVybiBo
bHNsQ29vcmRzOworICAgICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJl
RnVuY3Rpb246OkJJQVM6CisgICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbkhMU0w6OlRl
eHR1cmVGdW5jdGlvbjo6TE9EOgorICAgICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb25ITFNM
OjpUZXh0dXJlRnVuY3Rpb246OkxPRDA6CisgICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlv
bkhMU0w6OlRleHR1cmVGdW5jdGlvbjo6TE9EMEJJQVM6CisgICAgICAgICAgICAgICAgcmV0dXJu
IDQ7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgc3dpdGNoICh0ZXh0
dXJlRnVuY3Rpb24uc2FtcGxlcikKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSBFYnRTYW1w
bGVyMkQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICBjYXNlIEVidFNh
bXBsZXIzRDoKKyAgICAgICAgICAgICAgICByZXR1cm4gMzsKKyAgICAgICAgICAgIGNhc2UgRWJ0
U2FtcGxlckN1YmU6CisgICAgICAgICAgICAgICAgcmV0dXJuIDM7CisgICAgICAgICAgICBjYXNl
IEVidFNhbXBsZXIyREFycmF5OgorICAgICAgICAgICAgICAgIHJldHVybiAzOworICAgICAgICAg
ICAgY2FzZSBFYnRTYW1wbGVyRXh0ZXJuYWxPRVM6CisgICAgICAgICAgICAgICAgcmV0dXJuIDI7
CisgICAgICAgICAgICBjYXNlIEVidElTYW1wbGVyMkQ6CisgICAgICAgICAgICAgICAgcmV0dXJu
IDI7CisgICAgICAgICAgICBjYXNlIEVidElTYW1wbGVyM0Q6CisgICAgICAgICAgICAgICAgcmV0
dXJuIDM7CisgICAgICAgICAgICBjYXNlIEVidElTYW1wbGVyQ3ViZToKKyAgICAgICAgICAgICAg
ICByZXR1cm4gMzsKKyAgICAgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIyREFycmF5OgorICAgICAg
ICAgICAgICAgIHJldHVybiAzOworICAgICAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjJEOgorICAg
ICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjNEOgor
ICAgICAgICAgICAgICAgIHJldHVybiAzOworICAgICAgICAgICAgY2FzZSBFYnRVU2FtcGxlckN1
YmU6CisgICAgICAgICAgICAgICAgcmV0dXJuIDM7CisgICAgICAgICAgICBjYXNlIEVidFVTYW1w
bGVyMkRBcnJheToKKyAgICAgICAgICAgICAgICByZXR1cm4gMzsKKyAgICAgICAgICAgIGNhc2Ug
RWJ0U2FtcGxlcjJEU2hhZG93OgorICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAg
ICAgY2FzZSBFYnRTYW1wbGVyQ3ViZVNoYWRvdzoKKyAgICAgICAgICAgICAgICByZXR1cm4gMzsK
KyAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXlTaGFkb3c6CisgICAgICAgICAgICAg
ICAgcmV0dXJuIDM7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgT3V0
cHV0VGV4dHVyZUZ1bmN0aW9uQXJndW1lbnRMaXN0KFRJbmZvU2lua0Jhc2UgJm91dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRleHR1cmVGdW5jdGlvbkhM
U0w6OlRleHR1cmVGdW5jdGlvbiAmdGV4dHVyZUZ1bmN0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hTaGFkZXJPdXRwdXQgb3V0cHV0VHlwZSkKK3sK
KyAgICBpZiAob3V0cHV0VHlwZSA9PSBTSF9ITFNMXzNfMF9PVVRQVVQpCisgICAgeworICAgICAg
ICBzd2l0Y2ggKHRleHR1cmVGdW5jdGlvbi5zYW1wbGVyKQorICAgICAgICB7CisgICAgICAgICAg
ICBjYXNlIEVidFNhbXBsZXIyRDoKKyAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlckV4dGVybmFs
T0VTOgorICAgICAgICAgICAgICAgIG91dCA8PCAic2FtcGxlcjJEIHMiOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZToKKyAgICAgICAgICAg
ICAgICBvdXQgPDwgInNhbXBsZXJDVUJFIHMiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAg
ICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGlmIChvdXRwdXRUeXBlID09IFNI
X0hMU0xfNF8wX0ZMOV8zX09VVFBVVCkKKyAgICAgICAgeworICAgICAgICAgICAgb3V0IDw8IFRl
eHR1cmVTdHJpbmcodGV4dHVyZUZ1bmN0aW9uLnNhbXBsZXIpIDw8ICIgeCwgIgorICAgICAgICAg
ICAgICAgIDw8IFNhbXBsZXJTdHJpbmcodGV4dHVyZUZ1bmN0aW9uLnNhbXBsZXIpIDw8ICIgcyI7
CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQo
b3V0cHV0VHlwZSA9PSBTSF9ITFNMXzRfMV9PVVRQVVQpOworICAgICAgICAgICAgb3V0IDw8ICJj
b25zdCB1aW50IHNhbXBsZXJJbmRleCI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAodGV4
dHVyZUZ1bmN0aW9uLm1ldGhvZCA9PQorICAgICAgICBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0
dXJlRnVuY3Rpb246OkZFVENIKSAgLy8gSW50ZWdlciBjb29yZGluYXRlcworICAgIHsKKyAgICAg
ICAgc3dpdGNoICh0ZXh0dXJlRnVuY3Rpb24uY29vcmRzKQorICAgICAgICB7CisgICAgICAgICAg
ICBjYXNlIDI6CisgICAgICAgICAgICAgICAgb3V0IDw8ICIsIGludDIgdCI7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgb3V0IDw8
ICIsIGludDMgdCI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIH0KKyAgICB9CisgICAg
ZWxzZSAgLy8gRmxvYXRpbmctcG9pbnQgY29vcmRpbmF0ZXMgKGV4Y2VwdCB0ZXh0dXJlU2l6ZSkK
KyAgICB7CisgICAgICAgIHN3aXRjaCAodGV4dHVyZUZ1bmN0aW9uLmNvb3JkcykKKyAgICAgICAg
eworICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgIG91dCA8PCAiLCBpbnQgbG9k
IjsKKyAgICAgICAgICAgICAgICBicmVhazsgIC8vIHRleHR1cmVTaXplKCkKKyAgICAgICAgICAg
IGNhc2UgMjoKKyAgICAgICAgICAgICAgICBvdXQgPDwgIiwgZmxvYXQyIHQiOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgIG91dCA8
PCAiLCBmbG9hdDMgdCI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IDQ6CisgICAgICAgICAgICAgICAgb3V0IDw8ICIsIGZsb2F0NCB0IjsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICh0ZXh0dXJlRnVuY3Rpb24ubWV0aG9k
ID09IFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbjo6R1JBRCkKKyAgICB7Cisg
ICAgICAgIHN3aXRjaCAodGV4dHVyZUZ1bmN0aW9uLnNhbXBsZXIpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEOgorICAgICAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjJE
OgorICAgICAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjJEOgorICAgICAgICAgICAgY2FzZSBFYnRT
YW1wbGVyMkRBcnJheToKKyAgICAgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIyREFycmF5OgorICAg
ICAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjJEQXJyYXk6CisgICAgICAgICAgICBjYXNlIEVidFNh
bXBsZXIyRFNoYWRvdzoKKyAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXlTaGFkb3c6
CisgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXJFeHRlcm5hbE9FUzoKKyAgICAgICAgICAgICAg
ICBvdXQgPDwgIiwgZmxvYXQyIGRkeCwgZmxvYXQyIGRkeSI7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXIzRDoKKyAgICAgICAgICAgIGNhc2UgRWJ0
SVNhbXBsZXIzRDoKKyAgICAgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXIzRDoKKyAgICAgICAgICAg
IGNhc2UgRWJ0U2FtcGxlckN1YmU6CisgICAgICAgICAgICBjYXNlIEVidElTYW1wbGVyQ3ViZToK
KyAgICAgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXJDdWJlOgorICAgICAgICAgICAgY2FzZSBFYnRT
YW1wbGVyQ3ViZVNoYWRvdzoKKyAgICAgICAgICAgICAgICBvdXQgPDwgIiwgZmxvYXQzIGRkeCwg
ZmxvYXQzIGRkeSI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBzd2l0Y2ggKHRleHR1cmVGdW5jdGlvbi5tZXRob2QpCisgICAgeworICAgICAgICBjYXNlIFRl
eHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbjo6SU1QTElDSVQ6CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVuY3Rp
b246OkJJQVM6CisgICAgICAgICAgICBicmVhazsgIC8vIENvbWVzIGFmdGVyIHRoZSBvZmZzZXQg
cGFyYW1ldGVyCisgICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0
aW9uOjpMT0Q6CisgICAgICAgICAgICBvdXQgPDwgIiwgZmxvYXQgbG9kIjsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlv
bjo6TE9EMDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlv
bkhMU0w6OlRleHR1cmVGdW5jdGlvbjo6TE9EMEJJQVM6CisgICAgICAgICAgICBicmVhazsgIC8v
IENvbWVzIGFmdGVyIHRoZSBvZmZzZXQgcGFyYW1ldGVyCisgICAgICAgIGNhc2UgVGV4dHVyZUZ1
bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0aW9uOjpTSVpFOgorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0aW9uOjpGRVRDSDoK
KyAgICAgICAgICAgIG91dCA8PCAiLCBpbnQgbWlwIjsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbjo6R1JBRDoKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICB9CisKKyAgICBpZiAodGV4dHVyZUZ1bmN0aW9uLm9mZnNldCkKKyAgICB7Cisg
ICAgICAgIHN3aXRjaCAodGV4dHVyZUZ1bmN0aW9uLnNhbXBsZXIpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGNhc2UgRWJ0U2FtcGxlcjNEOgorICAgICAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjNE
OgorICAgICAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjNEOgorICAgICAgICAgICAgICAgIG91dCA8
PCAiLCBpbnQzIG9mZnNldCI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIEVidFNhbXBsZXIyRDoKKyAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXk6Cisg
ICAgICAgICAgICBjYXNlIEVidElTYW1wbGVyMkQ6CisgICAgICAgICAgICBjYXNlIEVidElTYW1w
bGVyMkRBcnJheToKKyAgICAgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXIyRDoKKyAgICAgICAgICAg
IGNhc2UgRWJ0VVNhbXBsZXIyREFycmF5OgorICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkRT
aGFkb3c6CisgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXIyREFycmF5U2hhZG93OgorICAgICAg
ICAgICAgY2FzZSBFYnRTYW1wbGVyRXh0ZXJuYWxPRVM6CisgICAgICAgICAgICAgICAgb3V0IDw8
ICIsIGludDIgb2Zmc2V0IjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGlmICh0ZXh0dXJlRnVuY3Rpb24ubWV0aG9kID09IFRleHR1cmVGdW5jdGlvbkhMU0w6
OlRleHR1cmVGdW5jdGlvbjo6QklBUyB8fAorICAgICAgICB0ZXh0dXJlRnVuY3Rpb24ubWV0aG9k
ID09IFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbjo6TE9EMEJJQVMpCisgICAg
eworICAgICAgICBvdXQgPDwgIiwgZmxvYXQgYmlhcyI7CisgICAgfQorfQorCit2b2lkIEdldFRl
eHR1cmVSZWZlcmVuY2UoVEluZm9TaW5rQmFzZSAmb3V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbiAmdGV4dHVyZUZ1
bmN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoU2hhZGVyT3V0cHV0IG91
dHB1dFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgVFN0cmluZyAqdGV4dHVyZVJlZmVy
ZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBUU3RyaW5nICpzYW1wbGVyUmVmZXJlbmNl
KQoreworICAgIGlmIChvdXRwdXRUeXBlID09IFNIX0hMU0xfNF8xX09VVFBVVCkKKyAgICB7Cisg
ICAgICAgIFRTdHJpbmcgc3VmZml4ID0gVGV4dHVyZUdyb3VwU3VmZml4KHRleHR1cmVGdW5jdGlv
bi5zYW1wbGVyKTsKKyAgICAgICAgaWYgKFRleHR1cmVHcm91cCh0ZXh0dXJlRnVuY3Rpb24uc2Ft
cGxlcikgPT0gSExTTF9URVhUVVJFXzJEKQorICAgICAgICB7CisgICAgICAgICAgICAqdGV4dHVy
ZVJlZmVyZW5jZSA9IFRTdHJpbmcoInRleHR1cmVzIikgKyBzdWZmaXggKyAiW3NhbXBsZXJJbmRl
eF0iOworICAgICAgICAgICAgKnNhbXBsZXJSZWZlcmVuY2UgPSBUU3RyaW5nKCJzYW1wbGVycyIp
ICsgc3VmZml4ICsgIltzYW1wbGVySW5kZXhdIjsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG91dCA8PCAiICAgIGNvbnN0IHVpbnQgdGV4dHVyZUluZGV4
ID0gc2FtcGxlckluZGV4IC0gdGV4dHVyZUluZGV4T2Zmc2V0IiA8PCBzdWZmaXgKKyAgICAgICAg
ICAgICAgICA8PCAiO1xuIjsKKyAgICAgICAgICAgICp0ZXh0dXJlUmVmZXJlbmNlID0gVFN0cmlu
ZygidGV4dHVyZXMiKSArIHN1ZmZpeCArICJbdGV4dHVyZUluZGV4XSI7CisgICAgICAgICAgICBv
dXQgPDwgIiAgICBjb25zdCB1aW50IHNhbXBsZXJBcnJheUluZGV4ID0gc2FtcGxlckluZGV4IC0g
c2FtcGxlckluZGV4T2Zmc2V0IiA8PCBzdWZmaXgKKyAgICAgICAgICAgICAgICA8PCAiO1xuIjsK
KyAgICAgICAgICAgICpzYW1wbGVyUmVmZXJlbmNlID0gVFN0cmluZygic2FtcGxlcnMiKSArIHN1
ZmZpeCArICJbc2FtcGxlckFycmF5SW5kZXhdIjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNl
CisgICAgeworICAgICAgICAqdGV4dHVyZVJlZmVyZW5jZSA9ICJ4IjsKKyAgICAgICAgKnNhbXBs
ZXJSZWZlcmVuY2UgPSAicyI7CisgICAgfQorfQorCit2b2lkIE91dHB1dFRleHR1cmVTaXplRnVu
Y3Rpb25Cb2R5KFRJbmZvU2lua0Jhc2UgJm91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVGV4dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0aW9uICZ0ZXh0
dXJlRnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRT
dHJpbmcgJnRleHR1cmVSZWZlcmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgZ2V0RGltZW5zaW9uc0lnbm9yZXNCYXNlTGV2ZWwpCit7CisgICAgaWYgKGdldERp
bWVuc2lvbnNJZ25vcmVzQmFzZUxldmVsKQorICAgIHsKKyAgICAgICAgb3V0IDw8ICJpbnQgYmFz
ZUxldmVsID0gc2FtcGxlck1ldGFkYXRhW3NhbXBsZXJJbmRleF0uYmFzZUxldmVsO1xuIjsKKyAg
ICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgb3V0IDw8ICJpbnQgYmFzZUxldmVsID0gMDtc
biI7CisgICAgfQorCisgICAgaWYgKElzU2FtcGxlcjNEKHRleHR1cmVGdW5jdGlvbi5zYW1wbGVy
KSB8fCBJc1NhbXBsZXJBcnJheSh0ZXh0dXJlRnVuY3Rpb24uc2FtcGxlcikgfHwKKyAgICAgICAg
KElzSW50ZWdlclNhbXBsZXIodGV4dHVyZUZ1bmN0aW9uLnNhbXBsZXIpICYmIElzU2FtcGxlckN1
YmUodGV4dHVyZUZ1bmN0aW9uLnNhbXBsZXIpKSkKKyAgICB7CisgICAgICAgIC8vICJkZXB0aCIg
c3RvcmVzIGVpdGhlciB0aGUgbnVtYmVyIG9mIGxheWVycyBpbiBhbiBhcnJheSB0ZXh0dXJlIG9y
IDNEIGRlcHRoCisgICAgICAgIG91dCA8PCAiICAgIHVpbnQgd2lkdGg7IHVpbnQgaGVpZ2h0OyB1
aW50IGRlcHRoOyB1aW50IG51bWJlck9mTGV2ZWxzO1xuIgorICAgICAgICAgICAgPDwgIiAgICAi
IDw8IHRleHR1cmVSZWZlcmVuY2UKKyAgICAgICAgICAgIDw8ICIuR2V0RGltZW5zaW9ucyhiYXNl
TGV2ZWwsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBudW1iZXJPZkxldmVscyk7XG4iCisgICAgICAg
ICAgICA8PCAiICAgIHdpZHRoID0gbWF4KHdpZHRoID4+IGxvZCwgMSk7XG4iCisgICAgICAgICAg
ICA8PCAiICAgIGhlaWdodCA9IG1heChoZWlnaHQgPj4gbG9kLCAxKTtcbiI7CisKKyAgICAgICAg
aWYgKCFJc1NhbXBsZXJBcnJheSh0ZXh0dXJlRnVuY3Rpb24uc2FtcGxlcikpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG91dCA8PCAiICAgIGRlcHRoID0gbWF4KGRlcHRoID4+IGxvZCwgMSk7XG4i
OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKElzU2FtcGxlcjJEKHRleHR1cmVGdW5j
dGlvbi5zYW1wbGVyKSB8fCBJc1NhbXBsZXJDdWJlKHRleHR1cmVGdW5jdGlvbi5zYW1wbGVyKSkK
KyAgICB7CisgICAgICAgIG91dCA8PCAiICAgIHVpbnQgd2lkdGg7IHVpbnQgaGVpZ2h0OyB1aW50
IG51bWJlck9mTGV2ZWxzO1xuIgorICAgICAgICAgICAgPDwgIiAgICAiIDw8IHRleHR1cmVSZWZl
cmVuY2UKKyAgICAgICAgICAgIDw8ICIuR2V0RGltZW5zaW9ucyhiYXNlTGV2ZWwsIHdpZHRoLCBo
ZWlnaHQsIG51bWJlck9mTGV2ZWxzKTtcbiIKKyAgICAgICAgICAgIDw8ICIgICAgd2lkdGggPSBt
YXgod2lkdGggPj4gbG9kLCAxKTtcbiIKKyAgICAgICAgICAgIDw8ICIgICAgaGVpZ2h0ID0gbWF4
KGhlaWdodCA+PiBsb2QsIDEpO1xuIjsKKyAgICB9CisgICAgZWxzZQorICAgICAgICBVTlJFQUNI
QUJMRSgpOworCisgICAgaWYgKHN0cmNtcCh0ZXh0dXJlRnVuY3Rpb24uZ2V0UmV0dXJuVHlwZSgp
LCAiaW50MyIpID09IDApCisgICAgeworICAgICAgICBvdXQgPDwgIiAgICByZXR1cm4gaW50Myh3
aWR0aCwgaGVpZ2h0LCBkZXB0aCk7IjsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAg
b3V0IDw8ICIgICAgcmV0dXJuIGludDIod2lkdGgsIGhlaWdodCk7IjsKKyAgICB9Cit9CisKK3Zv
aWQgUHJvamVjdFRleHR1cmVDb29yZGluYXRlcyhjb25zdCBUZXh0dXJlRnVuY3Rpb25ITFNMOjpU
ZXh0dXJlRnVuY3Rpb24gJnRleHR1cmVGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUU3RyaW5nICp0ZXhDb29yZFgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVFN0cmluZyAqdGV4Q29vcmRZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRT
dHJpbmcgKnRleENvb3JkWikKK3sKKyAgICBpZiAodGV4dHVyZUZ1bmN0aW9uLnByb2opCisgICAg
eworICAgICAgICBUU3RyaW5nIHByb2ooIiIpOworICAgICAgICBzd2l0Y2ggKHRleHR1cmVGdW5j
dGlvbi5jb29yZHMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAg
ICAgICBwcm9qID0gIiAvIHQueiI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgcHJvaiA9ICIgLyB0LnciOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgICAgICB9CisgICAgICAgICp0ZXhDb29yZFggPSAiKCIgKyAqdGV4Q29vcmRY
ICsgcHJvaiArICIpIjsKKyAgICAgICAgKnRleENvb3JkWSA9ICIoIiArICp0ZXhDb29yZFkgKyBw
cm9qICsgIikiOworICAgICAgICAqdGV4Q29vcmRaID0gIigiICsgKnRleENvb3JkWiArIHByb2og
KyAiKSI7CisgICAgfQorfQorCit2b2lkIE91dHB1dEludGVnZXJUZXh0dXJlU2FtcGxlRnVuY3Rp
b25Db21wdXRhdGlvbnMoCisgICAgVEluZm9TaW5rQmFzZSAmb3V0LAorICAgIGNvbnN0IFRleHR1
cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbiAmdGV4dHVyZUZ1bmN0aW9uLAorICAgIGNv
bnN0IFNoU2hhZGVyT3V0cHV0IG91dHB1dFR5cGUsCisgICAgY29uc3QgVFN0cmluZyAmdGV4dHVy
ZVJlZmVyZW5jZSwKKyAgICBUU3RyaW5nICp0ZXhDb29yZFgsCisgICAgVFN0cmluZyAqdGV4Q29v
cmRZLAorICAgIFRTdHJpbmcgKnRleENvb3JkWikKK3sKKyAgICBpZiAoIUlzSW50ZWdlclNhbXBs
ZXIodGV4dHVyZUZ1bmN0aW9uLnNhbXBsZXIpKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBpZiAoSXNTYW1wbGVyQ3ViZSh0ZXh0dXJlRnVuY3Rpb24uc2FtcGxlcikpCisgICAg
eworICAgICAgICBvdXQgPDwgIiAgICBmbG9hdCB3aWR0aDsgZmxvYXQgaGVpZ2h0OyBmbG9hdCBs
YXllcnM7IGZsb2F0IGxldmVscztcbiI7CisKKyAgICAgICAgb3V0IDw8ICIgICAgdWludCBtaXAg
PSAwO1xuIjsKKworICAgICAgICBvdXQgPDwgIiAgICAiIDw8IHRleHR1cmVSZWZlcmVuY2UKKyAg
ICAgICAgICAgIDw8ICIuR2V0RGltZW5zaW9ucyhtaXAsIHdpZHRoLCBoZWlnaHQsIGxheWVycywg
bGV2ZWxzKTtcbiI7CisKKyAgICAgICAgb3V0IDw8ICIgICAgYm9vbCB4TWFqb3IgPSBhYnModC54
KSA+IGFicyh0LnkpICYmIGFicyh0LngpID4gYWJzKHQueik7XG4iOworICAgICAgICBvdXQgPDwg
IiAgICBib29sIHlNYWpvciA9IGFicyh0LnkpID4gYWJzKHQueikgJiYgYWJzKHQueSkgPiBhYnMo
dC54KTtcbiI7CisgICAgICAgIG91dCA8PCAiICAgIGJvb2wgek1ham9yID0gYWJzKHQueikgPiBh
YnModC54KSAmJiBhYnModC56KSA+IGFicyh0LnkpO1xuIjsKKyAgICAgICAgb3V0IDw8ICIgICAg
Ym9vbCBuZWdhdGl2ZSA9ICh4TWFqb3IgJiYgdC54IDwgMC4wZikgfHwgKHlNYWpvciAmJiB0Lnkg
PCAwLjBmKSB8fCAiCisgICAgICAgICAgICAgICAiKHpNYWpvciAmJiB0LnogPCAwLjBmKTtcbiI7
CisKKyAgICAgICAgLy8gRkFDRV9QT1NJVElWRV9YID0gMDAwYgorICAgICAgICAvLyBGQUNFX05F
R0FUSVZFX1ggPSAwMDFiCisgICAgICAgIC8vIEZBQ0VfUE9TSVRJVkVfWSA9IDAxMGIKKyAgICAg
ICAgLy8gRkFDRV9ORUdBVElWRV9ZID0gMDExYgorICAgICAgICAvLyBGQUNFX1BPU0lUSVZFX1og
PSAxMDBiCisgICAgICAgIC8vIEZBQ0VfTkVHQVRJVkVfWiA9IDEwMWIKKyAgICAgICAgb3V0IDw8
ICIgICAgaW50IGZhY2UgPSAoaW50KW5lZ2F0aXZlICsgKGludCl5TWFqb3IgKiAyICsgKGludCl6
TWFqb3IgKiA0O1xuIjsKKworICAgICAgICBvdXQgPDwgIiAgICBmbG9hdCB1ID0geE1ham9yID8g
LXQueiA6ICh5TWFqb3IgJiYgdC55IDwgMC4wZiA/IC10LnggOiB0LngpO1xuIjsKKyAgICAgICAg
b3V0IDw8ICIgICAgZmxvYXQgdiA9IHlNYWpvciA/IHQueiA6IChuZWdhdGl2ZSA/IHQueSA6IC10
LnkpO1xuIjsKKyAgICAgICAgb3V0IDw8ICIgICAgZmxvYXQgbSA9IHhNYWpvciA/IHQueCA6ICh5
TWFqb3IgPyB0LnkgOiB0LnopO1xuIjsKKworICAgICAgICBvdXQgPDwgIiAgICB0LnggPSAodSAq
IDAuNWYgLyBtKSArIDAuNWY7XG4iOworICAgICAgICBvdXQgPDwgIiAgICB0LnkgPSAodiAqIDAu
NWYgLyBtKSArIDAuNWY7XG4iOworCisgICAgICAgIC8vIE1pcCBsZXZlbCBjb21wdXRhdGlvbi4K
KyAgICAgICAgaWYgKHRleHR1cmVGdW5jdGlvbi5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9uSExT
TDo6VGV4dHVyZUZ1bmN0aW9uOjpJTVBMSUNJVCB8fAorICAgICAgICAgICAgdGV4dHVyZUZ1bmN0
aW9uLm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVuY3Rpb246OkxPRCB8
fAorICAgICAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb25I
TFNMOjpUZXh0dXJlRnVuY3Rpb246OkdSQUQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh0
ZXh0dXJlRnVuY3Rpb24ubWV0aG9kID09IFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5j
dGlvbjo6SU1QTElDSVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICIg
ICAgZmxvYXQyIHRTaXplZCA9IGZsb2F0Mih0LnggKiB3aWR0aCwgdC55ICogaGVpZ2h0KTtcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdDIgZHggPSBkZHgodFNpemVkKTtcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdDIgZHkgPSBkZHkodFNpemVkKTtcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdCBsb2QgPSAwLjVmICogbG9nMihtYXgo
ZG90KGR4LCBkeCksIGRvdChkeSwgZHkpKSk7XG4iOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZWxzZSBpZiAodGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb25ITFNM
OjpUZXh0dXJlRnVuY3Rpb246OkdSQUQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Ly8gRVNTTCAzLjAwLjYgc3BlYyBzZWN0aW9uIDguODogIkZvciB0aGUgY3ViZSB2ZXJzaW9uLCB0
aGUgcGFydGlhbAorICAgICAgICAgICAgICAgIC8vIGRlcml2YXRpdmVzIG9mIFAgYXJlIGFzc3Vt
ZWQgdG8gYmUgaW4gdGhlIGNvb3JkaW5hdGUgc3lzdGVtIHVzZWQgYmVmb3JlCisgICAgICAgICAg
ICAgICAgLy8gdGV4dHVyZSBjb29yZGluYXRlcyBhcmUgcHJvamVjdGVkIG9udG8gdGhlIGFwcHJv
cHJpYXRlIGN1YmUgZmFjZS4iCisgICAgICAgICAgICAgICAgLy8gZGR4WzBdIGFuZCBkZHlbMF0g
YXJlIHRoZSBkZXJpdmF0aXZlcyBvZiB0LnggcGFzc2VkIGludG8gdGhlIGZ1bmN0aW9uCisgICAg
ICAgICAgICAgICAgLy8gZGR4WzFdIGFuZCBkZHlbMV0gYXJlIHRoZSBkZXJpdmF0aXZlcyBvZiB0
LnkgcGFzc2VkIGludG8gdGhlIGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgLy8gZGR4WzJdIGFu
ZCBkZHlbMl0gYXJlIHRoZSBkZXJpdmF0aXZlcyBvZiB0LnogcGFzc2VkIGludG8gdGhlIGZ1bmN0
aW9uCisgICAgICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBkZXJpdmF0aXZlcyBvZiB1LCB2
IGFuZCBtCisgICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgZmxvYXQgZHVkeCA9IHhNYWpvciA/
IGRkeFsyXSA6ICh5TWFqb3IgJiYgdC55IDwgMC4wZiA/IC1kZHhbMF0gIgorICAgICAgICAgICAg
ICAgICAgICAgICAiOiBkZHhbMF0pO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZs
b2F0IGR1ZHkgPSB4TWFqb3IgPyBkZHlbMl0gOiAoeU1ham9yICYmIHQueSA8IDAuMGYgPyAtZGR5
WzBdICIKKyAgICAgICAgICAgICAgICAgICAgICAgIjogZGR5WzBdKTtcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgIiAgICBmbG9hdCBkdmR4ID0geU1ham9yID8gZGR4WzJdIDogKG5lZ2F0aXZl
ID8gZGR4WzFdIDogLWRkeFsxXSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxv
YXQgZHZkeSA9IHlNYWpvciA/IGRkeVsyXSA6IChuZWdhdGl2ZSA/IGRkeVsxXSA6IC1kZHlbMV0p
O1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0IGRtZHggPSB4TWFqb3IgPyBk
ZHhbMF0gOiAoeU1ham9yID8gZGR4WzFdIDogZGR4WzJdKTtcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIiAgICBmbG9hdCBkbWR5ID0geE1ham9yID8gZGR5WzBdIDogKHlNYWpvciA/IGRkeVsx
XSA6IGRkeVsyXSk7XG4iOworICAgICAgICAgICAgICAgIC8vIE5vdyBkZXRlcm1pbmUgdGhlIGRl
cml2YXRpdmVzIG9mIHRoZSBmYWNlIGNvb3JkaW5hdGVzLCB1c2luZyB0aGUKKyAgICAgICAgICAg
ICAgICAvLyBkZXJpdmF0aXZlcyBjYWxjdWxhdGVkIGFib3ZlLgorICAgICAgICAgICAgICAgIC8v
IGQgLyBkeCAodSh4KSAqIDAuNSAvIG0oeCkgKyAwLjUpCisgICAgICAgICAgICAgICAgLy8gPSAw
LjUgKiAobSh4KSAqIHUnKHgpIC0gdSh4KSAqIG0nKHgpKSAvIG0oeCleMgorICAgICAgICAgICAg
ICAgIG91dCA8PCAiICAgIGZsb2F0IGRmYWNleGR4ID0gMC41ZiAqIChtICogZHVkeCAtIHUgKiBk
bWR4KSAvIChtICogbSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQgZGZh
Y2V5ZHggPSAwLjVmICogKG0gKiBkdmR4IC0gdiAqIGRtZHgpIC8gKG0gKiBtKTtcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdCBkZmFjZXhkeSA9IDAuNWYgKiAobSAqIGR1ZHkg
LSB1ICogZG1keSkgLyAobSAqIG0pO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZs
b2F0IGRmYWNleWR5ID0gMC41ZiAqIChtICogZHZkeSAtIHYgKiBkbWR5KSAvIChtICogbSk7XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQyIHNpemVWZWMgPSBmbG9hdDIod2lk
dGgsIGhlaWdodCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQyIGZhY2Vk
ZHggPSBmbG9hdDIoZGZhY2V4ZHgsIGRmYWNleWR4KSAqIHNpemVWZWM7XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICIgICAgZmxvYXQyIGZhY2VkZHkgPSBmbG9hdDIoZGZhY2V4ZHksIGRmYWNl
eWR5KSAqIHNpemVWZWM7XG4iOworICAgICAgICAgICAgICAgIC8vIE9wdGltaXphdGlvbjogaW5z
dGVhZCBvZjogbG9nMihtYXgobGVuZ3RoKGZhY2VkZHgpLCBsZW5ndGgoZmFjZWRkeSkpKQorICAg
ICAgICAgICAgICAgIC8vIHdlIGNvbXB1dGU6IGxvZzIobWF4KGxlbmd0aChmYWNlZGR4KV4yLCBs
ZW5ndGgoZmFjZWRkeSleMikpIC8gMgorICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIGZsb2F0
IGxlbmd0aGZhY2VkZHgyID0gZG90KGZhY2VkZHgsIGZhY2VkZHgpO1xuIgorICAgICAgICAgICAg
ICAgICAgICAgICAiICAgIGZsb2F0IGxlbmd0aGZhY2VkZHkyID0gZG90KGZhY2VkZHksIGZhY2Vk
ZHkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0IGxvZCA9IGxvZzIobWF4
KGxlbmd0aGZhY2VkZHgyLCBsZW5ndGhmYWNlZGR5MikpICogMC41ZjtcbiI7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBvdXQgPDwgIiAgICBtaXAgPSB1aW50KG1pbihtYXgocm91bmQobG9k
KSwgMCksIGxldmVscyAtIDEpKTtcbiIKKyAgICAgICAgICAgICAgICA8PCAiICAgICIgPDwgdGV4
dHVyZVJlZmVyZW5jZQorICAgICAgICAgICAgICAgIDw8ICIuR2V0RGltZW5zaW9ucyhtaXAsIHdp
ZHRoLCBoZWlnaHQsIGxheWVycywgbGV2ZWxzKTtcbiI7CisgICAgICAgIH0KKworICAgICAgICAv
LyBDb252ZXJ0IGZyb20gbm9ybWFsaXplZCBmbG9hdGluZy1wb2ludCB0byBpbnRlZ2VyCisgICAg
ICAgICp0ZXhDb29yZFggPSAiaW50KGZsb29yKHdpZHRoICogZnJhYygiICsgKnRleENvb3JkWCAr
ICIpKSkiOworICAgICAgICAqdGV4Q29vcmRZID0gImludChmbG9vcihoZWlnaHQgKiBmcmFjKCIg
KyAqdGV4Q29vcmRZICsgIikpKSI7CisgICAgICAgICp0ZXhDb29yZFogPSAiZmFjZSI7CisgICAg
fQorICAgIGVsc2UgaWYgKHRleHR1cmVGdW5jdGlvbi5tZXRob2QgIT0gVGV4dHVyZUZ1bmN0aW9u
SExTTDo6VGV4dHVyZUZ1bmN0aW9uOjpGRVRDSCkKKyAgICB7CisgICAgICAgIGlmIChJc1NhbXBs
ZXIyRCh0ZXh0dXJlRnVuY3Rpb24uc2FtcGxlcikpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
IChJc1NhbXBsZXJBcnJheSh0ZXh0dXJlRnVuY3Rpb24uc2FtcGxlcikpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgZmxvYXQgd2lkdGg7IGZsb2F0IGhlaWdodDsg
ZmxvYXQgbGF5ZXJzOyBmbG9hdCBsZXZlbHM7XG4iOworCisgICAgICAgICAgICAgICAgaWYgKHRl
eHR1cmVGdW5jdGlvbi5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0
aW9uOjpMT0QwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0IDw8
ICIgICAgdWludCBtaXAgPSAwO1xuIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgZWxzZSBpZiAodGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb25ITFNM
OjpUZXh0dXJlRnVuY3Rpb246OkxPRDBCSUFTKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgb3V0IDw8ICIgICAgdWludCBtaXAgPSBiaWFzO1xuIjsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKworICAgICAg
ICAgICAgICAgICAgICBvdXQgPDwgIiAgICAiIDw8IHRleHR1cmVSZWZlcmVuY2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgIDw8ICIuR2V0RGltZW5zaW9ucygwLCB3aWR0aCwgaGVpZ2h0LCBsYXll
cnMsIGxldmVscyk7XG4iOworICAgICAgICAgICAgICAgICAgICBpZiAodGV4dHVyZUZ1bmN0aW9u
Lm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVuY3Rpb246OklNUExJQ0lU
IHx8CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlRnVuY3Rpb24ubWV0aG9kID09IFRl
eHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbjo6QklBUykKKyAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgZmxvYXQyIHRTaXpl
ZCA9IGZsb2F0Mih0LnggKiB3aWR0aCwgdC55ICogaGVpZ2h0KTtcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiICAgIGZsb2F0IGR4ID0gbGVuZ3RoKGRkeCh0U2l6ZWQpKTtcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0IGR5ID0gbGVuZ3RoKGRk
eSh0U2l6ZWQpKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0
IGxvZCA9IGxvZzIobWF4KGR4LCBkeSkpO1xuIjsKKworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHRleHR1cmVGdW5jdGlvbi5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVy
ZUZ1bmN0aW9uOjpCSUFTKQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIGxvZCArPSBiaWFzO1xuIjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBlbHNlIGlmICh0ZXh0dXJlRnVuY3Rpb24ubWV0aG9kID09IFRleHR1cmVGdW5jdGlvbkhMU0w6
OlRleHR1cmVGdW5jdGlvbjo6R1JBRCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgZmxvYXQyIHNpemVWZWMgPSBmbG9hdDIod2lkdGgs
IGhlaWdodCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdDIg
c2l6ZURkeCA9IGRkeCAqIHNpemVWZWM7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIiAgICBmbG9hdDIgc2l6ZURkeSA9IGRkeSAqIHNpemVWZWM7XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdCBsb2QgPSBsb2cyKG1heChkb3Qoc2l6ZURkeCwg
c2l6ZURkeCksICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG90KHNpemVEZHks
IHNpemVEZHkpKSkgKiAwLjVmO1xuIjsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgICAgIG91dCA8PCAiICAgIHVpbnQgbWlwID0gdWludChtaW4obWF4KHJvdW5kKGxv
ZCksIDApLCBsZXZlbHMgLSAxKSk7XG4iOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIG91dCA8PCAiICAgICIgPDwgdGV4dHVyZVJlZmVyZW5jZQorICAgICAgICAgICAgICAg
ICAgICA8PCAiLkdldERpbWVuc2lvbnMobWlwLCB3aWR0aCwgaGVpZ2h0LCBsYXllcnMsIGxldmVs
cyk7XG4iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIGZsb2F0IHdpZHRoOyBmbG9hdCBoZWlnaHQ7IGZs
b2F0IGxldmVscztcbiI7CisKKyAgICAgICAgICAgICAgICBpZiAodGV4dHVyZUZ1bmN0aW9uLm1l
dGhvZCA9PSBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVuY3Rpb246OkxPRDApCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICB1aW50IG1pcCA9
IDA7XG4iOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmICh0ZXh0
dXJlRnVuY3Rpb24ubWV0aG9kID09IFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlv
bjo6TE9EMEJJQVMpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBvdXQg
PDwgIiAgICB1aW50IG1pcCA9IGJpYXM7XG4iOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBvdXQg
PDwgIiAgICAiIDw8IHRleHR1cmVSZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIDw8
ICIuR2V0RGltZW5zaW9ucygwLCB3aWR0aCwgaGVpZ2h0LCBsZXZlbHMpO1xuIjsKKworICAgICAg
ICAgICAgICAgICAgICBpZiAodGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rp
b25ITFNMOjpUZXh0dXJlRnVuY3Rpb246OklNUExJQ0lUIHx8CisgICAgICAgICAgICAgICAgICAg
ICAgICB0ZXh0dXJlRnVuY3Rpb24ubWV0aG9kID09IFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1
cmVGdW5jdGlvbjo6QklBUykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgb3V0IDw8ICIgICAgZmxvYXQyIHRTaXplZCA9IGZsb2F0Mih0LnggKiB3aWR0aCwg
dC55ICogaGVpZ2h0KTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZs
b2F0IGR4ID0gbGVuZ3RoKGRkeCh0U2l6ZWQpKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiICAgIGZsb2F0IGR5ID0gbGVuZ3RoKGRkeSh0U2l6ZWQpKTtcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0IGxvZCA9IGxvZzIobWF4KGR4LCBkeSkp
O1xuIjsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRleHR1cmVGdW5jdGlvbi5tZXRo
b2QgPT0gVGV4dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0aW9uOjpCSUFTKQorICAgICAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAi
ICAgIGxvZCArPSBiaWFzO1xuIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0ZXh0dXJlRnVuY3Rp
b24ubWV0aG9kID09IFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbjo6R1JBRCkK
KyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIg
ICAgZmxvYXQyIHNpemVWZWMgPSBmbG9hdDIod2lkdGgsIGhlaWdodCk7XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdDIgc2l6ZURkeCA9IGRkeCAqIHNpemVWZWM7
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdDIgc2l6ZURkeSA9
IGRkeSAqIHNpemVWZWM7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBm
bG9hdCBsb2QgPSBsb2cyKG1heChkb3Qoc2l6ZURkeCwgc2l6ZURkeCksICIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZG90KHNpemVEZHksIHNpemVEZHkpKSkgKiAwLjVmO1xuIjsK
KyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiICAg
IHVpbnQgbWlwID0gdWludChtaW4obWF4KHJvdW5kKGxvZCksIDApLCBsZXZlbHMgLSAxKSk7XG4i
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG91dCA8PCAiICAgICIgPDwg
dGV4dHVyZVJlZmVyZW5jZQorICAgICAgICAgICAgICAgICAgICA8PCAiLkdldERpbWVuc2lvbnMo
bWlwLCB3aWR0aCwgaGVpZ2h0LCBsZXZlbHMpO1xuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBlbHNlIGlmIChJc1NhbXBsZXIzRCh0ZXh0dXJlRnVuY3Rpb24uc2FtcGxlcikp
CisgICAgICAgIHsKKyAgICAgICAgICAgIG91dCA8PCAiICAgIGZsb2F0IHdpZHRoOyBmbG9hdCBo
ZWlnaHQ7IGZsb2F0IGRlcHRoOyBmbG9hdCBsZXZlbHM7XG4iOworCisgICAgICAgICAgICBpZiAo
dGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVu
Y3Rpb246OkxPRDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICIgICAg
dWludCBtaXAgPSAwO1xuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKHRl
eHR1cmVGdW5jdGlvbi5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0
aW9uOjpMT0QwQklBUykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIiAg
ICB1aW50IG1pcCA9IGJpYXM7XG4iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiICAgICIgPDwgdGV4dHVyZVJl
ZmVyZW5jZQorICAgICAgICAgICAgICAgICAgICA8PCAiLkdldERpbWVuc2lvbnMoMCwgd2lkdGgs
IGhlaWdodCwgZGVwdGgsIGxldmVscyk7XG4iOworCisgICAgICAgICAgICAgICAgaWYgKHRleHR1
cmVGdW5jdGlvbi5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0aW9u
OjpJTVBMSUNJVCB8fAorICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlRnVuY3Rpb24ubWV0aG9k
ID09IFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbjo6QklBUykKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIGZsb2F0MyB0U2l6ZWQg
PSBmbG9hdDModC54ICogd2lkdGgsIHQueSAqIGhlaWdodCwgdC56ICogZGVwdGgpO1xuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdCBkeCA9IGxlbmd0aChkZHgodFNpemVk
KSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0IGR5ID0gbGVuZ3Ro
KGRkeSh0U2l6ZWQpKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQg
bG9kID0gbG9nMihtYXgoZHgsIGR5KSk7XG4iOworCisgICAgICAgICAgICAgICAgICAgIGlmICh0
ZXh0dXJlRnVuY3Rpb24ubWV0aG9kID09IFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5j
dGlvbjo6QklBUykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0IDw8ICIgICAgbG9kICs9IGJpYXM7XG4iOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRleHR1cmVGdW5jdGlv
bi5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0aW9uOjpHUkFEKQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgZmxvYXQz
IHNpemVWZWMgPSBmbG9hdDMod2lkdGgsIGhlaWdodCwgZGVwdGgpO1xuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIiAgICBmbG9hdDMgc2l6ZURkeCA9IGRkeCAqIHNpemVWZWM7XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0MyBzaXplRGR5ID0gZGR5ICogc2l6
ZVZlYztcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQgbG9kID0gbG9n
MihtYXgoZG90KHNpemVEZHgsIHNpemVEZHgpLCBkb3Qoc2l6ZURkeSwgIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInNpemVEZHkpKSkgKiAwLjVmO1xuIjsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICB1aW50IG1pcCA9IHVpbnQobWluKG1heChy
b3VuZChsb2QpLCAwKSwgbGV2ZWxzIC0gMSkpO1xuIjsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgb3V0IDw8ICIgICAgIiA8PCB0ZXh0dXJlUmVmZXJlbmNlCisgICAgICAgICAgICAgICAg
PDwgIi5HZXREaW1lbnNpb25zKG1pcCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGxldmVscyk7XG4i
OworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisK
KyAgICAgICAgT3V0cHV0SW50VGV4Q29vcmRXcmFwcyhvdXQsIHRleHR1cmVGdW5jdGlvbiwgdGV4
Q29vcmRYLCB0ZXhDb29yZFksIHRleENvb3JkWik7CisgICAgfQorfQorCit2b2lkIE91dHB1dFRl
eHR1cmVTYW1wbGVGdW5jdGlvblJldHVyblN0YXRlbWVudCgKKyAgICBUSW5mb1NpbmtCYXNlICZv
dXQsCisgICAgY29uc3QgVGV4dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0aW9uICZ0ZXh0
dXJlRnVuY3Rpb24sCisgICAgY29uc3QgU2hTaGFkZXJPdXRwdXQgb3V0cHV0VHlwZSwKKyAgICBj
b25zdCBUU3RyaW5nICZ0ZXh0dXJlUmVmZXJlbmNlLAorICAgIGNvbnN0IFRTdHJpbmcgJnNhbXBs
ZXJSZWZlcmVuY2UsCisgICAgY29uc3QgVFN0cmluZyAmdGV4Q29vcmRYLAorICAgIGNvbnN0IFRT
dHJpbmcgJnRleENvb3JkWSwKKyAgICBjb25zdCBUU3RyaW5nICZ0ZXhDb29yZFopCit7CisgICAg
b3V0IDw8ICIgICAgcmV0dXJuICI7CisKKyAgICAvLyBITFNMIGludHJpbnNpYworICAgIGlmIChv
dXRwdXRUeXBlID09IFNIX0hMU0xfM18wX09VVFBVVCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAo
dGV4dHVyZUZ1bmN0aW9uLnNhbXBsZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgRWJ0
U2FtcGxlcjJEOgorICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyRXh0ZXJuYWxPRVM6CisgICAg
ICAgICAgICAgICAgb3V0IDw8ICJ0ZXgyRCI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIEVidFNhbXBsZXJDdWJlOgorICAgICAgICAgICAgICAgIG91dCA8PCAidGV4
Q1VCRSI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2gg
KHRleHR1cmVGdW5jdGlvbi5tZXRob2QpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgVGV4
dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0aW9uOjpJTVBMSUNJVDoKKyAgICAgICAgICAg
ICAgICBvdXQgPDwgIigiIDw8IHNhbXBsZXJSZWZlcmVuY2UgPDwgIiwgIjsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVy
ZUZ1bmN0aW9uOjpCSUFTOgorICAgICAgICAgICAgICAgIG91dCA8PCAiYmlhcygiIDw8IHNhbXBs
ZXJSZWZlcmVuY2UgPDwgIiwgIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgVGV4dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0aW9uOjpMT0Q6CisgICAgICAg
ICAgICAgICAgb3V0IDw8ICJsb2QoIiA8PCBzYW1wbGVyUmVmZXJlbmNlIDw8ICIsICI7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbkhMU0w6
OlRleHR1cmVGdW5jdGlvbjo6TE9EMDoKKyAgICAgICAgICAgICAgICBvdXQgPDwgImxvZCgiIDw8
IHNhbXBsZXJSZWZlcmVuY2UgPDwgIiwgIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0aW9uOjpMT0QwQklB
UzoKKyAgICAgICAgICAgICAgICBvdXQgPDwgImxvZCgiIDw8IHNhbXBsZXJSZWZlcmVuY2UgPDwg
IiwgIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlm
IChvdXRwdXRUeXBlID09IFNIX0hMU0xfNF8xX09VVFBVVCB8fCBvdXRwdXRUeXBlID09IFNIX0hM
U0xfNF8wX0ZMOV8zX09VVFBVVCkKKyAgICB7CisgICAgICAgIE91dHB1dEhMU0w0U2FtcGxlRnVu
Y3Rpb25QcmVmaXgob3V0LCB0ZXh0dXJlRnVuY3Rpb24sIHRleHR1cmVSZWZlcmVuY2UsIHNhbXBs
ZXJSZWZlcmVuY2UpOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisK
KyAgICBjb25zdCBpbnQgaGxzbENvb3JkcyA9IEdldEhMU0xDb29yZENvdW50KHRleHR1cmVGdW5j
dGlvbiwgb3V0cHV0VHlwZSk7CisKKyAgICBvdXQgPDwgR2V0U2FtcGxlckNvb3JkaW5hdGVUeXBl
U3RyaW5nKHRleHR1cmVGdW5jdGlvbiwgaGxzbENvb3JkcykgPDwgIigiIDw8IHRleENvb3JkWCA8
PCAiLCAiCisgICAgICAgIDw8IHRleENvb3JkWTsKKworICAgIGlmIChvdXRwdXRUeXBlID09IFNI
X0hMU0xfM18wX09VVFBVVCkKKyAgICB7CisgICAgICAgIGlmIChobHNsQ29vcmRzID49IDMpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICh0ZXh0dXJlRnVuY3Rpb24uY29vcmRzIDwgMykKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIiwgMCI7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8
ICIsICIgPDwgdGV4Q29vcmRaOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
aWYgKGhsc2xDb29yZHMgPT0gNCkKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoICh0ZXh0
dXJlRnVuY3Rpb24ubWV0aG9kKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2Ug
VGV4dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0aW9uOjpCSUFTOgorICAgICAgICAgICAg
ICAgICAgICBvdXQgPDwgIiwgYmlhcyI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0aW9uOjpM
T0Q6CisgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiLCBsb2QiOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbkhMU0w6OlRl
eHR1cmVGdW5jdGlvbjo6TE9EMDoKKyAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIsIDAiOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFRleHR1cmVG
dW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbjo6TE9EMEJJQVM6CisgICAgICAgICAgICAgICAg
ICAgIG91dCA8PCAiLCBiaWFzIjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIG91dCA8PCAiKSI7CisgICAgfQorICAg
IGVsc2UgaWYgKG91dHB1dFR5cGUgPT0gU0hfSExTTF80XzFfT1VUUFVUIHx8IG91dHB1dFR5cGUg
PT0gU0hfSExTTF80XzBfRkw5XzNfT1VUUFVUKQorICAgIHsKKyAgICAgICAgaWYgKGhsc2xDb29y
ZHMgPj0gMykKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKCFJc0ludGVnZXJTYW1wbGVy
KHRleHR1cmVGdW5jdGlvbi5zYW1wbGVyKSB8fAorICAgICAgICAgICAgICAgICAgICFJc1NhbXBs
ZXJDdWJlKHRleHR1cmVGdW5jdGlvbi5zYW1wbGVyKSB8fCB0ZXhDb29yZFogPT0gImZhY2UiKTsK
KyAgICAgICAgICAgIG91dCA8PCAiLCAiIDw8IHRleENvb3JkWjsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICh0ZXh0dXJlRnVuY3Rpb24ubWV0aG9kID09IFRleHR1cmVGdW5jdGlvbkhMU0w6OlRl
eHR1cmVGdW5jdGlvbjo6R1JBRCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKElzSW50ZWdl
clNhbXBsZXIodGV4dHVyZUZ1bmN0aW9uLnNhbXBsZXIpKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIG91dCA8PCAiLCBtaXApIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVs
c2UgaWYgKElzU2hhZG93U2FtcGxlcih0ZXh0dXJlRnVuY3Rpb24uc2FtcGxlcikpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgLy8gQ29tcGFyZSB2YWx1ZQorICAgICAgICAgICAgICAg
IGlmICh0ZXh0dXJlRnVuY3Rpb24ucHJvaikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIC8vIEFjY29yZGluZyB0byBFU1NMIDMuMDAuNCBzZWMgOC44IHA5NSBvbiB0ZXh0
dXJlUHJvajoKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHJlc3VsdGluZyB0aGlyZCBjb21w
b25lbnQgb2YgUCcgaW4gdGhlIHNoYWRvdyBmb3JtcyBpcyB1c2VkIGFzCisgICAgICAgICAgICAg
ICAgICAgIC8vIERyZWYKKyAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIpLCAiIDw8IHRleENv
b3JkWjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0ZXh0dXJlRnVuY3Rpb24uY29v
cmRzKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNl
IDM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIpLCB0LnoiOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSA0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiKSwgdC53IjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIiksIGRk
eCwgZGR5IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChJc0lu
dGVnZXJTYW1wbGVyKHRleHR1cmVGdW5jdGlvbi5zYW1wbGVyKSB8fAorICAgICAgICAgICAgICAg
ICB0ZXh0dXJlRnVuY3Rpb24ubWV0aG9kID09IFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVG
dW5jdGlvbjo6RkVUQ0gpCisgICAgICAgIHsKKyAgICAgICAgICAgIG91dCA8PCAiLCBtaXApIjsK
KyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChJc1NoYWRvd1NhbXBsZXIodGV4dHVyZUZ1bmN0
aW9uLnNhbXBsZXIpKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBDb21wYXJlIHZhbHVlCisg
ICAgICAgICAgICBpZiAodGV4dHVyZUZ1bmN0aW9uLnByb2opCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIEVTU0wgMy4wMC40IHNlYyA4LjggcDk1IG9uIHRl
eHR1cmVQcm9qOgorICAgICAgICAgICAgICAgIC8vIFRoZSByZXN1bHRpbmcgdGhpcmQgY29tcG9u
ZW50IG9mIFAnIGluIHRoZSBzaGFkb3cgZm9ybXMgaXMgdXNlZCBhcyBEcmVmCisgICAgICAgICAg
ICAgICAgb3V0IDw8ICIpLCAiIDw8IHRleENvb3JkWjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHRleHR1cmVG
dW5jdGlvbi5jb29yZHMpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBj
YXNlIDM6CisgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiksIHQueiI7CisgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgorICAg
ICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIpLCB0LnciOworICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRj
aCAodGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBjYXNlIFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbjo6SU1QTElDSVQ6Cisg
ICAgICAgICAgICAgICAgICAgIG91dCA8PCAiKSI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0
aW9uOjpCSUFTOgorICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiksIGJpYXMiOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlv
bkhMU0w6OlRleHR1cmVGdW5jdGlvbjo6TE9EOgorICAgICAgICAgICAgICAgICAgICBvdXQgPDwg
IiksIGxvZCI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgVGV4dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0aW9uOjpMT0QwOgorICAgICAgICAg
ICAgICAgICAgICBvdXQgPDwgIiksIDAiOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbjo6
TE9EMEJJQVM6CisgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiKSwgYmlhcyI7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICBpZiAodGV4dHVyZUZ1bmN0aW9uLm9mZnNldCAmJgorICAgICAgICAgICAgKCFJc0ludGVn
ZXJTYW1wbGVyKHRleHR1cmVGdW5jdGlvbi5zYW1wbGVyKSB8fAorICAgICAgICAgICAgIHRleHR1
cmVGdW5jdGlvbi5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0aW9u
OjpGRVRDSCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIG91dCA8PCAiLCBvZmZzZXQiOworICAg
ICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKworICAgIG91
dCA8PCAiKTtcbiI7ICAvLyBDbG9zZSB0aGUgc2FtcGxlIGZ1bmN0aW9uIGNhbGwgYW5kIHJldHVy
biBzdGF0ZW1lbnQKK30KKworfSAgLy8gQW5vbnltb3VzIG5hbWVzcGFjZQorCitUU3RyaW5nIFRl
eHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbjo6bmFtZSgpIGNvbnN0Cit7CisgICAg
VFN0cmluZyBuYW1lID0gImdsX3RleHR1cmUiOworCisgICAgLy8gV2UgbmVlZCB0byBpbmNsdWRl
IGZ1bGwgdGhlIHNhbXBsZXIgdHlwZSBpbiB0aGUgZnVuY3Rpb24gbmFtZSB0byBtYWtlIHRoZSBz
aWduYXR1cmUgdW5pcXVlCisgICAgLy8gb24gRDNEMTEsIHdoZXJlIHNhbXBsZXJzIGFyZSBwYXNz
ZWQgdG8gdGV4dHVyZSBmdW5jdGlvbnMgYXMgaW5kaWNlcy4KKyAgICBuYW1lICs9IFRleHR1cmVU
eXBlU3VmZml4KHRoaXMtPnNhbXBsZXIpOworCisgICAgaWYgKHByb2opCisgICAgeworICAgICAg
ICBuYW1lICs9ICJQcm9qIjsKKyAgICB9CisKKyAgICBpZiAob2Zmc2V0KQorICAgIHsKKyAgICAg
ICAgbmFtZSArPSAiT2Zmc2V0IjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKG1ldGhvZCkKKyAgICB7
CisgICAgICAgIGNhc2UgSU1QTElDSVQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBCSUFTOgorICAgICAgICAgICAgYnJlYWs7ICAvLyBFeHRyYSBwYXJhbWV0ZXIgbWFrZXMgdGhl
IHNpZ25hdHVyZSB1bmlxdWUKKyAgICAgICAgY2FzZSBMT0Q6CisgICAgICAgICAgICBuYW1lICs9
ICJMb2QiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTE9EMDoKKyAgICAgICAg
ICAgIG5hbWUgKz0gIkxvZDAiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTE9E
MEJJQVM6CisgICAgICAgICAgICBuYW1lICs9ICJMb2QwIjsKKyAgICAgICAgICAgIGJyZWFrOyAg
Ly8gRXh0cmEgcGFyYW1ldGVyIG1ha2VzIHRoZSBzaWduYXR1cmUgdW5pcXVlCisgICAgICAgIGNh
c2UgU0laRToKKyAgICAgICAgICAgIG5hbWUgKz0gIlNpemUiOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgRkVUQ0g6CisgICAgICAgICAgICBuYW1lICs9ICJGZXRjaCI7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHUkFEOgorICAgICAgICAgICAgbmFtZSArPSAi
R3JhZCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0dXJuIG5hbWU7Cit9CisKK2NvbnN0IGNo
YXIgKlRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbjo6Z2V0UmV0dXJuVHlwZSgp
IGNvbnN0Cit7CisgICAgaWYgKG1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb246OlNJWkUpCisgICAg
eworICAgICAgICBzd2l0Y2ggKHNhbXBsZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2Ug
RWJ0U2FtcGxlcjJEOgorICAgICAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEOgorICAgICAgICAg
ICAgY2FzZSBFYnRVU2FtcGxlcjJEOgorICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkRTaGFk
b3c6CisgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXJDdWJlOgorICAgICAgICAgICAgY2FzZSBF
YnRJU2FtcGxlckN1YmU6CisgICAgICAgICAgICBjYXNlIEVidFVTYW1wbGVyQ3ViZToKKyAgICAg
ICAgICAgIGNhc2UgRWJ0U2FtcGxlckN1YmVTaGFkb3c6CisgICAgICAgICAgICBjYXNlIEVidFNh
bXBsZXJFeHRlcm5hbE9FUzoKKyAgICAgICAgICAgICAgICByZXR1cm4gImludDIiOworICAgICAg
ICAgICAgY2FzZSBFYnRTYW1wbGVyM0Q6CisgICAgICAgICAgICBjYXNlIEVidElTYW1wbGVyM0Q6
CisgICAgICAgICAgICBjYXNlIEVidFVTYW1wbGVyM0Q6CisgICAgICAgICAgICBjYXNlIEVidFNh
bXBsZXIyREFycmF5OgorICAgICAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEQXJyYXk6CisgICAg
ICAgICAgICBjYXNlIEVidFVTYW1wbGVyMkRBcnJheToKKyAgICAgICAgICAgIGNhc2UgRWJ0U2Ft
cGxlcjJEQXJyYXlTaGFkb3c6CisgICAgICAgICAgICAgICAgcmV0dXJuICJpbnQzIjsKKyAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBlbHNlICAvLyBTYW1wbGluZyBmdW5jdGlvbgorICAgIHsKKyAgICAgICAg
c3dpdGNoIChzYW1wbGVyKQorICAgICAgICB7CisgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXIy
RDoKKyAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjNEOgorICAgICAgICAgICAgY2FzZSBFYnRT
YW1wbGVyQ3ViZToKKyAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXk6CisgICAgICAg
ICAgICBjYXNlIEVidFNhbXBsZXJFeHRlcm5hbE9FUzoKKyAgICAgICAgICAgICAgICByZXR1cm4g
ImZsb2F0NCI7CisgICAgICAgICAgICBjYXNlIEVidElTYW1wbGVyMkQ6CisgICAgICAgICAgICBj
YXNlIEVidElTYW1wbGVyM0Q6CisgICAgICAgICAgICBjYXNlIEVidElTYW1wbGVyQ3ViZToKKyAg
ICAgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIyREFycmF5OgorICAgICAgICAgICAgICAgIHJldHVy
biAiaW50NCI7CisgICAgICAgICAgICBjYXNlIEVidFVTYW1wbGVyMkQ6CisgICAgICAgICAgICBj
YXNlIEVidFVTYW1wbGVyM0Q6CisgICAgICAgICAgICBjYXNlIEVidFVTYW1wbGVyQ3ViZToKKyAg
ICAgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXIyREFycmF5OgorICAgICAgICAgICAgICAgIHJldHVy
biAidWludDQiOworICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkRTaGFkb3c6CisgICAgICAg
ICAgICBjYXNlIEVidFNhbXBsZXJDdWJlU2hhZG93OgorICAgICAgICAgICAgY2FzZSBFYnRTYW1w
bGVyMkRBcnJheVNoYWRvdzoKKyAgICAgICAgICAgICAgICByZXR1cm4gImZsb2F0IjsKKyAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICByZXR1cm4gIiI7Cit9CisKK2Jvb2wgVGV4dHVyZUZ1bmN0aW9uSExTTDo6
VGV4dHVyZUZ1bmN0aW9uOjpvcGVyYXRvcjwoY29uc3QgVGV4dHVyZUZ1bmN0aW9uICZyaHMpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHN0ZDo6dGllKHNhbXBsZXIsIGNvb3JkcywgcHJvaiwgb2Zmc2V0
LCBtZXRob2QpIDwKKyAgICAgICAgICAgc3RkOjp0aWUocmhzLnNhbXBsZXIsIHJocy5jb29yZHMs
IHJocy5wcm9qLCByaHMub2Zmc2V0LCByaHMubWV0aG9kKTsKK30KKworVFN0cmluZyBUZXh0dXJl
RnVuY3Rpb25ITFNMOjp1c2VUZXh0dXJlRnVuY3Rpb24oY29uc3QgVFN0cmluZyAmbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRCYXNpY1R5cGUg
c2FtcGxlclR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgY29vcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGxvZDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaDo6R0xlbnVtIHNoYWRlclR5cGUpCit7CisgICAg
VGV4dHVyZUZ1bmN0aW9uIHRleHR1cmVGdW5jdGlvbjsKKyAgICB0ZXh0dXJlRnVuY3Rpb24uc2Ft
cGxlciA9IHNhbXBsZXJUeXBlOworICAgIHRleHR1cmVGdW5jdGlvbi5jb29yZHMgID0gY29vcmRz
OworICAgIHRleHR1cmVGdW5jdGlvbi5tZXRob2QgID0gVGV4dHVyZUZ1bmN0aW9uOjpJTVBMSUNJ
VDsKKyAgICB0ZXh0dXJlRnVuY3Rpb24ucHJvaiAgICA9IGZhbHNlOworICAgIHRleHR1cmVGdW5j
dGlvbi5vZmZzZXQgID0gZmFsc2U7CisKKyAgICBpZiAobmFtZSA9PSAidGV4dHVyZTJEIiB8fCBu
YW1lID09ICJ0ZXh0dXJlQ3ViZSIgfHwgbmFtZSA9PSAidGV4dHVyZSIpCisgICAgeworICAgICAg
ICB0ZXh0dXJlRnVuY3Rpb24ubWV0aG9kID0gVGV4dHVyZUZ1bmN0aW9uOjpJTVBMSUNJVDsKKyAg
ICB9CisgICAgZWxzZSBpZiAobmFtZSA9PSAidGV4dHVyZTJEUHJvaiIgfHwgbmFtZSA9PSAidGV4
dHVyZVByb2oiKQorICAgIHsKKyAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9IFRleHR1
cmVGdW5jdGlvbjo6SU1QTElDSVQ7CisgICAgICAgIHRleHR1cmVGdW5jdGlvbi5wcm9qICAgPSB0
cnVlOworICAgIH0KKyAgICBlbHNlIGlmIChuYW1lID09ICJ0ZXh0dXJlMkRMb2QiIHx8IG5hbWUg
PT0gInRleHR1cmVDdWJlTG9kIiB8fCBuYW1lID09ICJ0ZXh0dXJlTG9kIiB8fAorICAgICAgICAg
ICAgIG5hbWUgPT0gInRleHR1cmUyRExvZEVYVCIgfHwgbmFtZSA9PSAidGV4dHVyZUN1YmVMb2RF
WFQiKQorICAgIHsKKyAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9IFRleHR1cmVGdW5j
dGlvbjo6TE9EOworICAgIH0KKyAgICBlbHNlIGlmIChuYW1lID09ICJ0ZXh0dXJlMkRQcm9qTG9k
IiB8fCBuYW1lID09ICJ0ZXh0dXJlUHJvakxvZCIgfHwKKyAgICAgICAgICAgICBuYW1lID09ICJ0
ZXh0dXJlMkRQcm9qTG9kRVhUIikKKyAgICB7CisgICAgICAgIHRleHR1cmVGdW5jdGlvbi5tZXRo
b2QgPSBUZXh0dXJlRnVuY3Rpb246OkxPRDsKKyAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLnByb2og
ICA9IHRydWU7CisgICAgfQorICAgIGVsc2UgaWYgKG5hbWUgPT0gInRleHR1cmVTaXplIikKKyAg
ICB7CisgICAgICAgIHRleHR1cmVGdW5jdGlvbi5tZXRob2QgPSBUZXh0dXJlRnVuY3Rpb246OlNJ
WkU7CisgICAgfQorICAgIGVsc2UgaWYgKG5hbWUgPT0gInRleHR1cmVPZmZzZXQiKQorICAgIHsK
KyAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9IFRleHR1cmVGdW5jdGlvbjo6SU1QTElD
SVQ7CisgICAgICAgIHRleHR1cmVGdW5jdGlvbi5vZmZzZXQgPSB0cnVlOworICAgIH0KKyAgICBl
bHNlIGlmIChuYW1lID09ICJ0ZXh0dXJlUHJvak9mZnNldCIpCisgICAgeworICAgICAgICB0ZXh0
dXJlRnVuY3Rpb24ubWV0aG9kID0gVGV4dHVyZUZ1bmN0aW9uOjpJTVBMSUNJVDsKKyAgICAgICAg
dGV4dHVyZUZ1bmN0aW9uLm9mZnNldCA9IHRydWU7CisgICAgICAgIHRleHR1cmVGdW5jdGlvbi5w
cm9qICAgPSB0cnVlOworICAgIH0KKyAgICBlbHNlIGlmIChuYW1lID09ICJ0ZXh0dXJlTG9kT2Zm
c2V0IikKKyAgICB7CisgICAgICAgIHRleHR1cmVGdW5jdGlvbi5tZXRob2QgPSBUZXh0dXJlRnVu
Y3Rpb246OkxPRDsKKyAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLm9mZnNldCA9IHRydWU7CisgICAg
fQorICAgIGVsc2UgaWYgKG5hbWUgPT0gInRleHR1cmVQcm9qTG9kT2Zmc2V0IikKKyAgICB7Cisg
ICAgICAgIHRleHR1cmVGdW5jdGlvbi5tZXRob2QgPSBUZXh0dXJlRnVuY3Rpb246OkxPRDsKKyAg
ICAgICAgdGV4dHVyZUZ1bmN0aW9uLnByb2ogICA9IHRydWU7CisgICAgICAgIHRleHR1cmVGdW5j
dGlvbi5vZmZzZXQgPSB0cnVlOworICAgIH0KKyAgICBlbHNlIGlmIChuYW1lID09ICJ0ZXhlbEZl
dGNoIikKKyAgICB7CisgICAgICAgIHRleHR1cmVGdW5jdGlvbi5tZXRob2QgPSBUZXh0dXJlRnVu
Y3Rpb246OkZFVENIOworICAgIH0KKyAgICBlbHNlIGlmIChuYW1lID09ICJ0ZXhlbEZldGNoT2Zm
c2V0IikKKyAgICB7CisgICAgICAgIHRleHR1cmVGdW5jdGlvbi5tZXRob2QgPSBUZXh0dXJlRnVu
Y3Rpb246OkZFVENIOworICAgICAgICB0ZXh0dXJlRnVuY3Rpb24ub2Zmc2V0ID0gdHJ1ZTsKKyAg
ICB9CisgICAgZWxzZSBpZiAobmFtZSA9PSAidGV4dHVyZUdyYWQiIHx8IG5hbWUgPT0gInRleHR1
cmUyREdyYWRFWFQiKQorICAgIHsKKyAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9IFRl
eHR1cmVGdW5jdGlvbjo6R1JBRDsKKyAgICB9CisgICAgZWxzZSBpZiAobmFtZSA9PSAidGV4dHVy
ZUdyYWRPZmZzZXQiKQorICAgIHsKKyAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9IFRl
eHR1cmVGdW5jdGlvbjo6R1JBRDsKKyAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLm9mZnNldCA9IHRy
dWU7CisgICAgfQorICAgIGVsc2UgaWYgKG5hbWUgPT0gInRleHR1cmVQcm9qR3JhZCIgfHwgbmFt
ZSA9PSAidGV4dHVyZTJEUHJvakdyYWRFWFQiIHx8CisgICAgICAgICAgICAgbmFtZSA9PSAidGV4
dHVyZUN1YmVHcmFkRVhUIikKKyAgICB7CisgICAgICAgIHRleHR1cmVGdW5jdGlvbi5tZXRob2Qg
PSBUZXh0dXJlRnVuY3Rpb246OkdSQUQ7CisgICAgICAgIHRleHR1cmVGdW5jdGlvbi5wcm9qICAg
PSB0cnVlOworICAgIH0KKyAgICBlbHNlIGlmIChuYW1lID09ICJ0ZXh0dXJlUHJvakdyYWRPZmZz
ZXQiKQorICAgIHsKKyAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9IFRleHR1cmVGdW5j
dGlvbjo6R1JBRDsKKyAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLnByb2ogICA9IHRydWU7CisgICAg
ICAgIHRleHR1cmVGdW5jdGlvbi5vZmZzZXQgPSB0cnVlOworICAgIH0KKyAgICBlbHNlCisgICAg
ICAgIFVOUkVBQ0hBQkxFKCk7CisKKyAgICBpZiAodGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9PQor
ICAgICAgICBUZXh0dXJlRnVuY3Rpb246OklNUExJQ0lUKSAgLy8gQ291bGQgcmVxdWlyZSBsb2Qg
MCBvciBoYXZlIGEgYmlhcyBhcmd1bWVudAorICAgIHsKKyAgICAgICAgc2l6ZV90IG1hbmRhdG9y
eUFyZ3VtZW50Q291bnQgPSAyOyAgLy8gQWxsIGZ1bmN0aW9ucyBoYXZlIHNhbXBsZXIgYW5kIGNv
b3JkaW5hdGUgYXJndW1lbnRzCisKKyAgICAgICAgaWYgKHRleHR1cmVGdW5jdGlvbi5vZmZzZXQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIG1hbmRhdG9yeUFyZ3VtZW50Q291bnQrKzsKKyAgICAg
ICAgfQorCisgICAgICAgIGJvb2wgYmlhcyA9IChhcmd1bWVudENvdW50ID4gbWFuZGF0b3J5QXJn
dW1lbnRDb3VudCk7ICAvLyBCaWFzIGFyZ3VtZW50IGlzIG9wdGlvbmFsCisKKyAgICAgICAgaWYg
KGxvZDAgfHwgc2hhZGVyVHlwZSA9PSBHTF9WRVJURVhfU0hBREVSKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoYmlhcykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0ZXh0dXJl
RnVuY3Rpb24ubWV0aG9kID0gVGV4dHVyZUZ1bmN0aW9uOjpMT0QwQklBUzsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0ZXh0
dXJlRnVuY3Rpb24ubWV0aG9kID0gVGV4dHVyZUZ1bmN0aW9uOjpMT0QwOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGJpYXMpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHRleHR1cmVGdW5jdGlvbi5tZXRob2QgPSBUZXh0dXJlRnVuY3Rpb246OkJJQVM7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBtVXNlc1RleHR1cmUuaW5zZXJ0KHRleHR1cmVGdW5jdGlvbik7
CisgICAgcmV0dXJuIHRleHR1cmVGdW5jdGlvbi5uYW1lKCk7Cit9CisKK3ZvaWQgVGV4dHVyZUZ1
bmN0aW9uSExTTDo6dGV4dHVyZUZ1bmN0aW9uSGVhZGVyKFRJbmZvU2lua0Jhc2UgJm91dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoU2hh
ZGVyT3V0cHV0IG91dHB1dFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGdldERpbWVuc2lvbnNJZ25vcmVzQmFzZUxldmVsKQoreworICAg
IGZvciAoY29uc3QgVGV4dHVyZUZ1bmN0aW9uICZ0ZXh0dXJlRnVuY3Rpb24gOiBtVXNlc1RleHR1
cmUpCisgICAgeworICAgICAgICAvLyBGdW5jdGlvbiBoZWFkZXIKKyAgICAgICAgb3V0IDw8IHRl
eHR1cmVGdW5jdGlvbi5nZXRSZXR1cm5UeXBlKCkgPDwgIiAiIDw8IHRleHR1cmVGdW5jdGlvbi5u
YW1lKCkgPDwgIigiOworCisgICAgICAgIE91dHB1dFRleHR1cmVGdW5jdGlvbkFyZ3VtZW50TGlz
dChvdXQsIHRleHR1cmVGdW5jdGlvbiwgb3V0cHV0VHlwZSk7CisKKyAgICAgICAgb3V0IDw8ICIp
XG4iCisgICAgICAgICAgICAgICAie1xuIjsKKworICAgICAgICAvLyBJbiBzb21lIGNhc2VzIHdl
IHVzZSBhIHZhcmlhYmxlIHRvIHN0b3JlIHRoZSB0ZXh0dXJlL3NhbXBsZXIgb2JqZWN0cywgYnV0
IHRvIHdvcmsgYXJvdW5kCisgICAgICAgIC8vIGEgRDNEMTEgY29tcGlsZXIgYnVnIHJlbGF0ZWQg
dG8gZGlzY2FyZCBpbnNpZGUgYSBsb29wIHRoYXQgaXMgY29uZGl0aW9uYWwgb24gdGV4dHVyZQor
ICAgICAgICAvLyBzYW1wbGluZyB3ZSBuZWVkIHRvIGNhbGwgdGhlIGZ1bmN0aW9uIGRpcmVjdGx5
IG9uIHJlZmVyZW5jZXMgdG8gdGhlIHRleHR1cmUgYW5kIHNhbXBsZXIKKyAgICAgICAgLy8gYXJy
YXlzLiBUaGUgYnVnIHdhcyBmb3VuZCB1c2luZyBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVy
cy5kaXNjYXJkKmxvb3BfdGV4dHVyZSoKKyAgICAgICAgLy8gdGVzdHMuCisgICAgICAgIFRTdHJp
bmcgdGV4dHVyZVJlZmVyZW5jZTsKKyAgICAgICAgVFN0cmluZyBzYW1wbGVyUmVmZXJlbmNlOwor
ICAgICAgICBHZXRUZXh0dXJlUmVmZXJlbmNlKG91dCwgdGV4dHVyZUZ1bmN0aW9uLCBvdXRwdXRU
eXBlLCAmdGV4dHVyZVJlZmVyZW5jZSwgJnNhbXBsZXJSZWZlcmVuY2UpOworCisgICAgICAgIGlm
ICh0ZXh0dXJlRnVuY3Rpb24ubWV0aG9kID09IFRleHR1cmVGdW5jdGlvbjo6U0laRSkKKyAgICAg
ICAgeworICAgICAgICAgICAgT3V0cHV0VGV4dHVyZVNpemVGdW5jdGlvbkJvZHkob3V0LCB0ZXh0
dXJlRnVuY3Rpb24sIHRleHR1cmVSZWZlcmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnZXREaW1lbnNpb25zSWdub3Jlc0Jhc2VMZXZlbCk7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBUU3RyaW5nIHRleENvb3Jk
WCgidC54Iik7CisgICAgICAgICAgICBUU3RyaW5nIHRleENvb3JkWSgidC55Iik7CisgICAgICAg
ICAgICBUU3RyaW5nIHRleENvb3JkWigidC56Iik7CisgICAgICAgICAgICBQcm9qZWN0VGV4dHVy
ZUNvb3JkaW5hdGVzKHRleHR1cmVGdW5jdGlvbiwgJnRleENvb3JkWCwgJnRleENvb3JkWSwgJnRl
eENvb3JkWik7CisgICAgICAgICAgICBPdXRwdXRJbnRlZ2VyVGV4dHVyZVNhbXBsZUZ1bmN0aW9u
Q29tcHV0YXRpb25zKG91dCwgdGV4dHVyZUZ1bmN0aW9uLCBvdXRwdXRUeXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJl
UmVmZXJlbmNlLCAmdGV4Q29vcmRYLCAmdGV4Q29vcmRZLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGV4Q29vcmRaKTsKKyAgICAg
ICAgICAgIE91dHB1dFRleHR1cmVTYW1wbGVGdW5jdGlvblJldHVyblN0YXRlbWVudChvdXQsIHRl
eHR1cmVGdW5jdGlvbiwgb3V0cHV0VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlUmVmZXJlbmNlLCBzYW1wbGVyUmVmZXJl
bmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRleENvb3JkWCwgdGV4Q29vcmRZLCB0ZXhDb29yZFopOworICAgICAgICB9CisKKyAgICAg
ICAgb3V0IDw8ICJ9XG4iCisgICAgICAgICAgICAgICAiXG4iOworICAgIH0KK30KKworfSAgLy8g
bmFtZXNwYWNlIHNoCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9UZXh0dXJlRnVuY3Rpb25ITFNMLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVGV4dHVyZUZ1bmN0aW9uSExT
TC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL1RleHR1cmVGdW5jdGlvbkhMU0wuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDc2IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFRleHR1cmVGdW5jdGlvbkhMU0w6IENsYXNzIGZv
ciB3cml0aW5nIGltcGxlbWVudGF0aW9ucyBvZiBFU1NMIHRleHR1cmUgZnVuY3Rpb25zIGludG8g
SExTTAorLy8gb3V0cHV0LiBTb21lIG9mIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIHN0cmFpZ2h0
Zm9yd2FyZCBhbmQganVzdCBjYWxsIHRoZSBITFNMIGVxdWl2YWxlbnQgb2YgdGhlCisvLyBFU1NM
IHRleHR1cmUgZnVuY3Rpb24sIG90aGVycyBkbyBtb3JlIHdvcmsgdG8gZW11bGF0ZSBFU1NMIHRl
eHR1cmUgc2FtcGxpbmcgb3Igc2l6ZSBxdWVyeQorLy8gYmVoYXZpb3IuCisvLworCisjaWZuZGVm
IENPTVBJTEVSX1RSQU5TTEFUT1JfVEVYVFVSRUZVTkNUSU9OSExTTF9IXworI2RlZmluZSBDT01Q
SUxFUl9UUkFOU0xBVE9SX1RFWFRVUkVGVU5DVElPTkhMU0xfSF8KKworI2luY2x1ZGUgPHNldD4K
KworI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvQmFzZVR5cGVzLmgiCisjaW5jbHVkZSAi
Y29tcGlsZXIvdHJhbnNsYXRvci9Db21tb24uaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xh
dG9yL0luZm9TaW5rLmgiCisjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCisKK25hbWVz
cGFjZSBzaAoreworCitjbGFzcyBUZXh0dXJlRnVuY3Rpb25ITFNMIGZpbmFsIDogYW5nbGU6Ok5v
bkNvcHlhYmxlCit7CisgIHB1YmxpYzoKKyAgICBzdHJ1Y3QgVGV4dHVyZUZ1bmN0aW9uCisgICAg
eworICAgICAgICAvLyBTZWUgRVNTTCAzLjAwLjYgc2VjdGlvbiA4LjggZm9yIHJlZmVyZW5jZSBh
Ym91dCB3aGF0IHRoZSBkaWZmZXJlbnQgbWV0aG9kcyBiZWxvdyBkby4KKyAgICAgICAgZW51bSBN
ZXRob2QKKyAgICAgICAgeworICAgICAgICAgICAgSU1QTElDSVQsICAvLyBNaXBtYXAgTE9EIGRl
dGVybWluZWQgaW1wbGljaXRseSAoc3RhbmRhcmQgbG9va3VwKQorICAgICAgICAgICAgQklBUywK
KyAgICAgICAgICAgIExPRCwKKyAgICAgICAgICAgIExPRDAsCisgICAgICAgICAgICBMT0QwQklB
UywKKyAgICAgICAgICAgIFNJWkUsICAvLyB0ZXh0dXJlU2l6ZSgpCisgICAgICAgICAgICBGRVRD
SCwKKyAgICAgICAgICAgIEdSQUQKKyAgICAgICAgfTsKKworICAgICAgICBUU3RyaW5nIG5hbWUo
KSBjb25zdDsKKworICAgICAgICBib29sIG9wZXJhdG9yPChjb25zdCBUZXh0dXJlRnVuY3Rpb24g
JnJocykgY29uc3Q7CisKKyAgICAgICAgY29uc3QgY2hhciAqZ2V0UmV0dXJuVHlwZSgpIGNvbnN0
OworCisgICAgICAgIFRCYXNpY1R5cGUgc2FtcGxlcjsKKyAgICAgICAgaW50IGNvb3JkczsKKyAg
ICAgICAgYm9vbCBwcm9qOworICAgICAgICBib29sIG9mZnNldDsKKyAgICAgICAgTWV0aG9kIG1l
dGhvZDsKKyAgICB9OworCisgICAgLy8gUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgdGV4dHVyZSBm
dW5jdGlvbiBpbXBsZW1lbnRhdGlvbiB0byBjYWxsLgorICAgIC8vIFRoZSBuYW1lIHRoYXQncyBw
YXNzZWQgaW4gaXMgdGhlIG5hbWUgb2YgdGhlIEdMU0wgdGV4dHVyZSBmdW5jdGlvbiB0aGF0IGl0
IHNob3VsZCBpbXBsZW1lbnQuCisgICAgVFN0cmluZyB1c2VUZXh0dXJlRnVuY3Rpb24oY29uc3Qg
VFN0cmluZyAmbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQmFzaWNUeXBl
IHNhbXBsZXJUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb29yZHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBsb2QwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNoOjpHTGVudW0gc2hhZGVyVHlwZSk7CisKKyAgICB2b2lkIHRleHR1
cmVGdW5jdGlvbkhlYWRlcihUSW5mb1NpbmtCYXNlICZvdXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgU2hTaGFkZXJPdXRwdXQgb3V0cHV0VHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGdldERpbWVuc2lvbnNJZ25vcmVzQmFzZUxldmVsKTsK
KworICBwcml2YXRlOgorICAgIHR5cGVkZWYgc3RkOjpzZXQ8VGV4dHVyZUZ1bmN0aW9uPiBUZXh0
dXJlRnVuY3Rpb25TZXQ7CisgICAgVGV4dHVyZUZ1bmN0aW9uU2V0IG1Vc2VzVGV4dHVyZTsKK307
CisKK30gIC8vIG5hbWVzcGFjZSBzaAorCisjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1Jf
VEVYVFVSRUZVTkNUSU9OSExTTF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckVTU0wuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JF
U1NMLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckVTU0wuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02LDcgKzYsNiBAQAogCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9y
RVNTTC5oIgogCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9CdWlsdEluRnVuY3Rpb25F
bXVsYXRvckdMU0wuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0VtdWxhdGVQcmVj
aXNpb24uaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1JlY29yZENvbnN0YW50UHJl
Y2lzaW9uLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRFU1NMLmgiCkBA
IC0xNywxNSArMTYsOCBAQCBUcmFuc2xhdG9yRVNTTDo6VHJhbnNsYXRvckVTU0woc2g6OkdMZW51
CiB7CiB9CiAKLXZvaWQgVHJhbnNsYXRvckVTU0w6OmluaXRCdWlsdEluRnVuY3Rpb25FbXVsYXRv
cihCdWlsdEluRnVuY3Rpb25FbXVsYXRvciAqZW11LCBpbnQgY29tcGlsZU9wdGlvbnMpCit2b2lk
IFRyYW5zbGF0b3JFU1NMOjp0cmFuc2xhdGUoVEludGVybU5vZGUgKnJvb3QsIFNoQ29tcGlsZU9w
dGlvbnMgY29tcGlsZU9wdGlvbnMpCiB7Ci0gICAgaWYgKGNvbXBpbGVPcHRpb25zICYgU0hfRU1V
TEFURV9CVUlMVF9JTl9GVU5DVElPTlMpCi0gICAgewotICAgICAgICBJbml0QnVpbHRJbkZ1bmN0
aW9uRW11bGF0b3JGb3JHTFNMV29ya2Fyb3VuZHMoZW11LCBnZXRTaGFkZXJUeXBlKCkpOwotICAg
IH0KLX0KLQotdm9pZCBUcmFuc2xhdG9yRVNTTDo6dHJhbnNsYXRlKFRJbnRlcm1Ob2RlICpyb290
LCBpbnQpIHsKICAgICBUSW5mb1NpbmtCYXNlJiBzaW5rID0gZ2V0SW5mb1NpbmsoKS5vYmo7CiAK
ICAgICBpbnQgc2hhZGVyVmVyID0gZ2V0U2hhZGVyVmVyc2lvbigpOwpAQCAtMzQsMTEgKzI2LDEz
IEBAIHZvaWQgVHJhbnNsYXRvckVTU0w6OnRyYW5zbGF0ZShUSW50ZXJtTm8KICAgICAgICAgc2lu
ayA8PCAiI3ZlcnNpb24gIiA8PCBzaGFkZXJWZXIgPDwgIiBlc1xuIjsKICAgICB9CiAKLSAgICB3
cml0ZVByYWdtYSgpOwotCiAgICAgLy8gV3JpdGUgYnVpbHQtaW4gZXh0ZW5zaW9uIGJlaGF2aW9y
cy4KICAgICB3cml0ZUV4dGVuc2lvbkJlaGF2aW9yKCk7CiAKKyAgICAvLyBXcml0ZSBwcmFnbWFz
IGFmdGVyIGV4dGVuc2lvbnMgYmVjYXVzZSBzb21lIGRyaXZlcnMgY29uc2lkZXIgcHJhZ21hcwor
ICAgIC8vIGxpa2Ugbm9uLXByZXByb2Nlc3NvciB0b2tlbnMuCisgICAgd3JpdGVQcmFnbWEoY29t
cGlsZU9wdGlvbnMpOworCiAgICAgYm9vbCBwcmVjaXNpb25FbXVsYXRpb24gPSBnZXRSZXNvdXJj
ZXMoKS5XRUJHTF9kZWJ1Z19zaGFkZXJfcHJlY2lzaW9uICYmIGdldFByYWdtYSgpLmRlYnVnU2hh
ZGVyUHJlY2lzaW9uOwogCiAgICAgaWYgKHByZWNpc2lvbkVtdWxhdGlvbikKQEAgLTQ2LDcgKzQw
LDcgQEAgdm9pZCBUcmFuc2xhdG9yRVNTTDo6dHJhbnNsYXRlKFRJbnRlcm1ObwogICAgICAgICBF
bXVsYXRlUHJlY2lzaW9uIGVtdWxhdGVQcmVjaXNpb24oZ2V0U3ltYm9sVGFibGUoKSwgc2hhZGVy
VmVyKTsKICAgICAgICAgcm9vdC0+dHJhdmVyc2UoJmVtdWxhdGVQcmVjaXNpb24pOwogICAgICAg
ICBlbXVsYXRlUHJlY2lzaW9uLnVwZGF0ZVRyZWUoKTsKLSAgICAgICAgZW11bGF0ZVByZWNpc2lv
bi53cml0ZUVtdWxhdGlvbkhlbHBlcnMoc2luaywgU0hfRVNTTF9PVVRQVVQpOworICAgICAgICBl
bXVsYXRlUHJlY2lzaW9uLndyaXRlRW11bGF0aW9uSGVscGVycyhzaW5rLCBzaGFkZXJWZXIsIFNI
X0VTU0xfT1VUUFVUKTsKICAgICB9CiAKICAgICBSZWNvcmRDb25zdGFudFByZWNpc2lvbihyb290
LCBnZXRUZW1wb3JhcnlJbmRleCgpKTsKQEAgLTc1LDEyICs2OSwyNSBAQCB2b2lkIFRyYW5zbGF0
b3JFU1NMOjp0cmFuc2xhdGUoVEludGVybU5vCiAgICAgLy8gV3JpdGUgYXJyYXkgYm91bmRzIGNs
YW1waW5nIGVtdWxhdGlvbiBpZiBuZWVkZWQuCiAgICAgZ2V0QXJyYXlCb3VuZHNDbGFtcGVyKCku
T3V0cHV0Q2xhbXBpbmdGdW5jdGlvbkRlZmluaXRpb24oc2luayk7CiAKKyAgICBpZiAoZ2V0U2hh
ZGVyVHlwZSgpID09IEdMX0NPTVBVVEVfU0hBREVSICYmIGlzQ29tcHV0ZVNoYWRlckxvY2FsU2l6
ZURlY2xhcmVkKCkpCisgICAgeworICAgICAgICBjb25zdCBzaDo6V29ya0dyb3VwU2l6ZSAmbG9j
YWxTaXplID0gZ2V0Q29tcHV0ZVNoYWRlckxvY2FsU2l6ZSgpOworICAgICAgICBzaW5rIDw8ICJs
YXlvdXQgKGxvY2FsX3NpemVfeD0iIDw8IGxvY2FsU2l6ZVswXSA8PCAiLCBsb2NhbF9zaXplX3k9
IiA8PCBsb2NhbFNpemVbMV0KKyAgICAgICAgICAgICA8PCAiLCBsb2NhbF9zaXplX3o9IiA8PCBs
b2NhbFNpemVbMl0gPDwgIikgaW47XG4iOworICAgIH0KKwogICAgIC8vIFdyaXRlIHRyYW5zbGF0
ZWQgc2hhZGVyLgogICAgIFRPdXRwdXRFU1NMIG91dHB1dEVTU0woc2luaywgZ2V0QXJyYXlJbmRl
eENsYW1waW5nU3RyYXRlZ3koKSwgZ2V0SGFzaEZ1bmN0aW9uKCksIGdldE5hbWVNYXAoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdldFN5bWJvbFRhYmxlKCksIHNoYWRlclZlciwgcHJl
Y2lzaW9uRW11bGF0aW9uKTsKICAgICByb290LT50cmF2ZXJzZSgmb3V0cHV0RVNTTCk7CiB9CiAK
K2Jvb2wgVHJhbnNsYXRvckVTU0w6OnNob3VsZEZsYXR0ZW5QcmFnbWFTdGRnbEludmFyaWFudEFs
bCgpCit7CisgICAgLy8gTm90IG5lY2Vzc2FyeSB3aGVuIHRyYW5zbGF0aW5nIHRvIEVTU0wuCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIFRyYW5zbGF0b3JFU1NMOjp3cml0ZUV4dGVuc2lv
bkJlaGF2aW9yKCkgewogICAgIFRJbmZvU2lua0Jhc2UmIHNpbmsgPSBnZXRJbmZvU2luaygpLm9i
ajsKICAgICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3ImIGV4dEJlaGF2aW9yID0gZ2V0RXh0ZW5z
aW9uQmVoYXZpb3IoKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL1RyYW5zbGF0b3JFU1NMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckVTU0wuaAkocmV2
aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvVHJhbnNsYXRvckVTU0wuaAkod29ya2luZyBjb3B5KQpAQCAtMTUsOSArMTUsOCBA
QCBjbGFzcyBUcmFuc2xhdG9yRVNTTCA6IHB1YmxpYyBUQ29tcGlsZXIKICAgICBUcmFuc2xhdG9y
RVNTTChzaDo6R0xlbnVtIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjKTsKIAogICBwcm90ZWN0ZWQ6
Ci0gICAgdm9pZCBpbml0QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IoQnVpbHRJbkZ1bmN0aW9uRW11
bGF0b3IgKmVtdSwgaW50IGNvbXBpbGVPcHRpb25zKSBvdmVycmlkZTsKLQotICAgIHZvaWQgdHJh
bnNsYXRlKFRJbnRlcm1Ob2RlICpyb290LCBpbnQgY29tcGlsZU9wdGlvbnMpIG92ZXJyaWRlOwor
ICAgIHZvaWQgdHJhbnNsYXRlKFRJbnRlcm1Ob2RlICpyb290LCBTaENvbXBpbGVPcHRpb25zIGNv
bXBpbGVPcHRpb25zKSBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZEZsYXR0ZW5QcmFnbWFTdGRn
bEludmFyaWFudEFsbCgpIG92ZXJyaWRlOwogCiAgIHByaXZhdGU6CiAgICAgdm9pZCB3cml0ZUV4
dGVuc2lvbkJlaGF2aW9yKCk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yR0xTTC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckdMU0wu
Y3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yR0xTTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
LDYgKzExLDcgQEAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0VtdWxhdGVQcmVjaXNp
b24uaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0V4dGVuc2lvbkdMU0wuaCIKICNp
bmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL091dHB1dEdMU0wuaCIKKyNpbmNsdWRlICJjb21w
aWxlci90cmFuc2xhdG9yL1Jld3JpdGVUZXhlbEZldGNoT2Zmc2V0LmgiCiAjaW5jbHVkZSAiY29t
cGlsZXIvdHJhbnNsYXRvci9WZXJzaW9uR0xTTC5oIgogCiBUcmFuc2xhdG9yR0xTTDo6VHJhbnNs
YXRvckdMU0woc2g6OkdMZW51bSB0eXBlLApAQCAtMTksMjkgKzIwLDczIEBAIFRyYW5zbGF0b3JH
TFNMOjpUcmFuc2xhdG9yR0xTTChzaDo6R0xlbnUKICAgICA6IFRDb21waWxlcih0eXBlLCBzcGVj
LCBvdXRwdXQpIHsKIH0KIAotdm9pZCBUcmFuc2xhdG9yR0xTTDo6aW5pdEJ1aWx0SW5GdW5jdGlv
bkVtdWxhdG9yKEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yICplbXUsIGludCBjb21waWxlT3B0aW9u
cykKK3ZvaWQgVHJhbnNsYXRvckdMU0w6OmluaXRCdWlsdEluRnVuY3Rpb25FbXVsYXRvcihCdWls
dEluRnVuY3Rpb25FbXVsYXRvciAqZW11LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpCiB7Ci0g
ICAgaWYgKGNvbXBpbGVPcHRpb25zICYgU0hfRU1VTEFURV9CVUlMVF9JTl9GVU5DVElPTlMpCisg
ICAgaWYgKGNvbXBpbGVPcHRpb25zICYgU0hfRU1VTEFURV9BQlNfSU5UX0ZVTkNUSU9OKQogICAg
IHsKLSAgICAgICAgSW5pdEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yRm9yR0xTTFdvcmthcm91bmRz
KGVtdSwgZ2V0U2hhZGVyVHlwZSgpKTsKKyAgICAgICAgSW5pdEJ1aWx0SW5BYnNGdW5jdGlvbkVt
dWxhdG9yRm9yR0xTTFdvcmthcm91bmRzKGVtdSwgZ2V0U2hhZGVyVHlwZSgpKTsKKyAgICB9CisK
KyAgICBpZiAoY29tcGlsZU9wdGlvbnMgJiBTSF9FTVVMQVRFX0lTTkFOX0ZMT0FUX0ZVTkNUSU9O
KQorICAgIHsKKyAgICAgICAgSW5pdEJ1aWx0SW5Jc25hbkZ1bmN0aW9uRW11bGF0b3JGb3JHTFNM
V29ya2Fyb3VuZHMoZW11LCBnZXRTaGFkZXJWZXJzaW9uKCkpOwogICAgIH0KIAogICAgIGludCB0
YXJnZXRHTFNMVmVyc2lvbiA9IFNoYWRlck91dHB1dFR5cGVUb0dMU0xWZXJzaW9uKGdldE91dHB1
dFR5cGUoKSk7CiAgICAgSW5pdEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yRm9yR0xTTE1pc3NpbmdG
dW5jdGlvbnMoZW11LCBnZXRTaGFkZXJUeXBlKCksIHRhcmdldEdMU0xWZXJzaW9uKTsKIH0KIAot
dm9pZCBUcmFuc2xhdG9yR0xTTDo6dHJhbnNsYXRlKFRJbnRlcm1Ob2RlICpyb290LCBpbnQgY29t
cGlsZU9wdGlvbnMpCit2b2lkIFRyYW5zbGF0b3JHTFNMOjp0cmFuc2xhdGUoVEludGVybU5vZGUg
KnJvb3QsIFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpCiB7CiAgICAgVEluZm9TaW5r
QmFzZSYgc2luayA9IGdldEluZm9TaW5rKCkub2JqOwogCiAgICAgLy8gV3JpdGUgR0xTTCB2ZXJz
aW9uLgogICAgIHdyaXRlVmVyc2lvbihyb290KTsKIAotICAgIHdyaXRlUHJhZ21hKCk7Ci0KICAg
ICAvLyBXcml0ZSBleHRlbnNpb24gYmVoYXZpb3VyIGFzIG5lZWRlZAogICAgIHdyaXRlRXh0ZW5z
aW9uQmVoYXZpb3Iocm9vdCk7CiAKKyAgICAvLyBXcml0ZSBwcmFnbWFzIGFmdGVyIGV4dGVuc2lv
bnMgYmVjYXVzZSBzb21lIGRyaXZlcnMgY29uc2lkZXIgcHJhZ21hcworICAgIC8vIGxpa2Ugbm9u
LXByZXByb2Nlc3NvciB0b2tlbnMuCisgICAgd3JpdGVQcmFnbWEoY29tcGlsZU9wdGlvbnMpOwor
CisgICAgLy8gSWYgZmxhdHRlbmluZyB0aGUgZ2xvYmFsIGludmFyaWFudCBwcmFnbWEsIHdyaXRl
IGludmFyaWFudCBkZWNsYXJhdGlvbnMgZm9yIGJ1aWx0LWluCisgICAgLy8gdmFyaWFibGVzLiBJ
dCBzaG91bGQgYmUgaGFybWxlc3MgdG8gZG8gdGhpcyB0d2ljZSBpbiB0aGUgY2FzZSB0aGF0IHRo
ZSBzaGFkZXIgYWxzbyBleHBsaWNpdGx5CisgICAgLy8gZGlkIHRoaXMuIEhvd2V2ZXIsIGl0J3Mg
aW1wb3J0YW50IHRvIGVtaXQgaW52YXJpYW50IHF1YWxpZmllcnMgb25seSBmb3IgdGhvc2UgYnVp
bHQtaW4KKyAgICAvLyB2YXJpYWJsZXMgdGhhdCBhcmUgYWN0dWFsbHkgdXNlZCwgdG8gYXZvaWQg
YWZmZWN0aW5nIHRoZSBiZWhhdmlvciBvZiB0aGUgc2hhZGVyLgorICAgIGlmICgoY29tcGlsZU9w
dGlvbnMgJiBTSF9GTEFUVEVOX1BSQUdNQV9TVERHTF9JTlZBUklBTlRfQUxMKSAmJiBnZXRQcmFn
bWEoKS5zdGRnbC5pbnZhcmlhbnRBbGwpCisgICAgeworICAgICAgICBjb2xsZWN0VmFyaWFibGVz
KHJvb3QpOworCisgICAgICAgIHN3aXRjaCAoZ2V0U2hhZGVyVHlwZSgpKQorICAgICAgICB7Cisg
ICAgICAgICAgICBjYXNlIEdMX1ZFUlRFWF9TSEFERVI6CisgICAgICAgICAgICAgICAgc2luayA8
PCAiaW52YXJpYW50IGdsX1Bvc2l0aW9uO1xuIjsKKworICAgICAgICAgICAgICAgIC8vIGdsX1Bv
aW50U2l6ZSBzaG91bGQgYmUgZGVjbGFyZWQgaW52YXJpYW50IGluIGJvdGggRVNTTCAxLjAwIGFu
ZCAzLjAwIGZyYWdtZW50CisgICAgICAgICAgICAgICAgLy8gc2hhZGVycyBpZiBpdCdzIHN0YXRp
Y2FsbHkgcmVmZXJlbmNlZC4KKyAgICAgICAgICAgICAgICBjb25kaXRpb25hbGx5T3V0cHV0SW52
YXJpYW50RGVjbGFyYXRpb24oImdsX1BvaW50U2l6ZSIpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBHTF9GUkFHTUVOVF9TSEFERVI6CisgICAgICAgICAgICAgICAg
Ly8gVGhlIHByZXByb2Nlc3NvciB3aWxsIHJlamVjdCB0aGlzIHByYWdtYSBpZiBpdCdzIHVzZWQg
aW4gRVNTTCAzLjAwIGZyYWdtZW50CisgICAgICAgICAgICAgICAgLy8gc2hhZGVycywgc28gd2Ug
Y2FuIHVzZSBzaW1wbGUgbG9naWMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gZGVjbGFyZSB0aGVz
ZQorICAgICAgICAgICAgICAgIC8vIHZhcmlhYmxlcyBpbnZhcmlhbnQuCisgICAgICAgICAgICAg
ICAgY29uZGl0aW9uYWxseU91dHB1dEludmFyaWFudERlY2xhcmF0aW9uKCJnbF9GcmFnQ29vcmQi
KTsKKyAgICAgICAgICAgICAgICBjb25kaXRpb25hbGx5T3V0cHV0SW52YXJpYW50RGVjbGFyYXRp
b24oImdsX1BvaW50Q29vcmQiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5IG5vdCByZWFjaGVkLCBidXQg
bGVhdmUgdGhpcyBpbiBmb3IgZnV0dXJlIGV4cGFuc2lvbi4KKyAgICAgICAgICAgICAgICBBU1NF
UlQoZmFsc2UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisg
ICAgaWYgKChjb21waWxlT3B0aW9ucyAmIFNIX1JFV1JJVEVfVEVYRUxGRVRDSE9GRlNFVF9UT19U
RVhFTEZFVENIKSAhPSAwKQorICAgIHsKKyAgICAgICAgc2g6OlJld3JpdGVUZXhlbEZldGNoT2Zm
c2V0KHJvb3QsIGdldFN5bWJvbFRhYmxlKCksIGdldFNoYWRlclZlcnNpb24oKSk7CisgICAgfQor
CiAgICAgYm9vbCBwcmVjaXNpb25FbXVsYXRpb24gPSBnZXRSZXNvdXJjZXMoKS5XRUJHTF9kZWJ1
Z19zaGFkZXJfcHJlY2lzaW9uICYmIGdldFByYWdtYSgpLmRlYnVnU2hhZGVyUHJlY2lzaW9uOwog
CiAgICAgaWYgKHByZWNpc2lvbkVtdWxhdGlvbikKQEAgLTQ5LDcgKzk0LDcgQEAgdm9pZCBUcmFu
c2xhdG9yR0xTTDo6dHJhbnNsYXRlKFRJbnRlcm1ObwogICAgICAgICBFbXVsYXRlUHJlY2lzaW9u
IGVtdWxhdGVQcmVjaXNpb24oZ2V0U3ltYm9sVGFibGUoKSwgZ2V0U2hhZGVyVmVyc2lvbigpKTsK
ICAgICAgICAgcm9vdC0+dHJhdmVyc2UoJmVtdWxhdGVQcmVjaXNpb24pOwogICAgICAgICBlbXVs
YXRlUHJlY2lzaW9uLnVwZGF0ZVRyZWUoKTsKLSAgICAgICAgZW11bGF0ZVByZWNpc2lvbi53cml0
ZUVtdWxhdGlvbkhlbHBlcnMoc2luaywgZ2V0T3V0cHV0VHlwZSgpKTsKKyAgICAgICAgZW11bGF0
ZVByZWNpc2lvbi53cml0ZUVtdWxhdGlvbkhlbHBlcnMoc2luaywgZ2V0U2hhZGVyVmVyc2lvbigp
LCBnZXRPdXRwdXRUeXBlKCkpOwogICAgIH0KIAogICAgIC8vIFdyaXRlIGVtdWxhdGVkIGJ1aWx0
LWluIGZ1bmN0aW9ucyBpZiBuZWVkZWQuCkBAIC0xMzIsNiArMTc3LDEzIEBAIHZvaWQgVHJhbnNs
YXRvckdMU0w6OnRyYW5zbGF0ZShUSW50ZXJtTm8KICAgICAgICAgfQogICAgIH0KIAorICAgIGlm
IChnZXRTaGFkZXJUeXBlKCkgPT0gR0xfQ09NUFVURV9TSEFERVIgJiYgaXNDb21wdXRlU2hhZGVy
TG9jYWxTaXplRGVjbGFyZWQoKSkKKyAgICB7CisgICAgICAgIGNvbnN0IHNoOjpXb3JrR3JvdXBT
aXplICZsb2NhbFNpemUgPSBnZXRDb21wdXRlU2hhZGVyTG9jYWxTaXplKCk7CisgICAgICAgIHNp
bmsgPDwgImxheW91dCAobG9jYWxfc2l6ZV94PSIgPDwgbG9jYWxTaXplWzBdIDw8ICIsIGxvY2Fs
X3NpemVfeT0iIDw8IGxvY2FsU2l6ZVsxXQorICAgICAgICAgICAgIDw8ICIsIGxvY2FsX3NpemVf
ej0iIDw8IGxvY2FsU2l6ZVsyXSA8PCAiKSBpbjtcbiI7CisgICAgfQorCiAgICAgLy8gV3JpdGUg
dHJhbnNsYXRlZCBzaGFkZXIuCiAgICAgVE91dHB1dEdMU0wgb3V0cHV0R0xTTChzaW5rLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2V0QXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3koKSwK
QEAgLTE0Myw2ICsxOTUsMTMgQEAgdm9pZCBUcmFuc2xhdG9yR0xTTDo6dHJhbnNsYXRlKFRJbnRl
cm1ObwogICAgIHJvb3QtPnRyYXZlcnNlKCZvdXRwdXRHTFNMKTsKIH0KIAorYm9vbCBUcmFuc2xh
dG9yR0xTTDo6c2hvdWxkRmxhdHRlblByYWdtYVN0ZGdsSW52YXJpYW50QWxsKCkKK3sKKyAgICAv
LyBSZXF1aXJlZCB3aGVuIG91dHB1dHRpbmcgdG8gYW55IEdMU0wgdmVyc2lvbiBncmVhdGVyIHRo
YW4gMS4yMCwgYnV0IHNpbmNlIEFOR0xFIGRvZXNuJ3QKKyAgICAvLyB0cmFuc2xhdGUgdG8gdGhh
dCB2ZXJzaW9uLCByZXR1cm4gdHJ1ZSBmb3IgdGhlIG5leHQgaGlnaGVyIHZlcnNpb24uCisgICAg
cmV0dXJuIElzR0xTTDEzME9yTmV3ZXIoZ2V0T3V0cHV0VHlwZSgpKTsKK30KKwogdm9pZCBUcmFu
c2xhdG9yR0xTTDo6d3JpdGVWZXJzaW9uKFRJbnRlcm1Ob2RlICpyb290KQogewogICAgIFRWZXJz
aW9uR0xTTCB2ZXJzaW9uR0xTTChnZXRTaGFkZXJUeXBlKCksIGdldFByYWdtYSgpLCBnZXRPdXRw
dXRUeXBlKCkpOwpAQCAtMTY4LDEyICsyMjcsMjEgQEAgdm9pZCBUcmFuc2xhdG9yR0xTTDo6d3Jp
dGVFeHRlbnNpb25CZWhhdgogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAg
ICAgICAvLyBGb3IgR0xTTCBvdXRwdXQsIHdlIGRvbid0IG5lZWQgdG8gZW1pdCBtb3N0IGV4dGVu
c2lvbnMgZXhwbGljaXRseSwKLSAgICAgICAgLy8gYnV0IHNvbWUgd2UgbmVlZCB0byB0cmFuc2xh
dGUuCi0gICAgICAgIGlmIChpdGVyLmZpcnN0ID09ICJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9k
IikKKyAgICAgICAgaWYgKGdldE91dHB1dFR5cGUoKSA9PSBTSF9HTFNMX0NPTVBBVElCSUxJVFlf
T1VUUFVUKQogICAgICAgICB7Ci0gICAgICAgICAgICBzaW5rIDw8ICIjZXh0ZW5zaW9uIEdMX0FS
Ql9zaGFkZXJfdGV4dHVyZV9sb2QgOiAiIDw8IGdldEJlaGF2aW9yU3RyaW5nKGl0ZXIuc2Vjb25k
KQotICAgICAgICAgICAgICAgICA8PCAiXG4iOworICAgICAgICAgICAgLy8gRm9yIEdMU0wgb3V0
cHV0LCB3ZSBkb24ndCBuZWVkIHRvIGVtaXQgbW9zdCBleHRlbnNpb25zIGV4cGxpY2l0bHksCisg
ICAgICAgICAgICAvLyBidXQgc29tZSB3ZSBuZWVkIHRvIHRyYW5zbGF0ZSBpbiBHTCBjb21wYXRp
YmlsaXR5IHByb2ZpbGUuCisgICAgICAgICAgICBpZiAoaXRlci5maXJzdCA9PSAiR0xfRVhUX3No
YWRlcl90ZXh0dXJlX2xvZCIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc2luayA8
PCAiI2V4dGVuc2lvbiBHTF9BUkJfc2hhZGVyX3RleHR1cmVfbG9kIDogIiA8PCBnZXRCZWhhdmlv
clN0cmluZyhpdGVyLnNlY29uZCkKKyAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiI7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpdGVyLmZpcnN0ID09ICJHTF9FWFRfZHJhd19i
dWZmZXJzIikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzaW5rIDw8ICIjZXh0ZW5z
aW9uIEdMX0FSQl9kcmF3X2J1ZmZlcnMgOiAiIDw8IGdldEJlaGF2aW9yU3RyaW5nKGl0ZXIuc2Vj
b25kKQorICAgICAgICAgICAgICAgICAgICAgPDwgIlxuIjsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KIApAQCAtMTgzLDYgKzI1MSwyMyBAQCB2b2lkIFRyYW5zbGF0b3JHTFNMOjp3
cml0ZUV4dGVuc2lvbkJlaGF2CiAgICAgICAgIHNpbmsgPDwgIiNleHRlbnNpb24gR0xfQVJCX2V4
cGxpY2l0X2F0dHJpYl9sb2NhdGlvbiA6IHJlcXVpcmVcbiI7CiAgICAgfQogCisgICAgLy8gTmVl
ZCB0byBlbmFibGUgZ3B1X3NoYWRlcjUgdG8gaGF2ZSBpbmRleCBjb25zdGFudCBzYW1wbGVyIGFy
cmF5IGluZGV4aW5nCisgICAgaWYgKGdldE91dHB1dFR5cGUoKSAhPSBTSF9FU1NMX09VVFBVVCAm
JiBnZXRPdXRwdXRUeXBlKCkgPCBTSF9HTFNMXzQwMF9DT1JFX09VVFBVVCkKKyAgICB7CisgICAg
ICAgIHNpbmsgPDwgIiNleHRlbnNpb24gR0xfQVJCX2dwdV9zaGFkZXI1IDogIjsKKworICAgICAg
ICAvLyBEb24ndCB1c2UgInJlcXVpcmUiIG9uIFdlYkdMIDEgdG8gYXZvaWQgYnJlYWtpbmcgV2Vi
R0wgb24gZHJpdmVycyB0aGF0IHNpbGVudGx5CisgICAgICAgIC8vIHN1cHBvcnQgaW5kZXggY29u
c3RhbnQgc2FtcGxlciBhcnJheSBpbmRleGluZywgYnV0IGRvbid0IGhhdmUgdGhlIGV4dGVuc2lv
bi4KKyAgICAgICAgaWYgKGdldFNoYWRlclZlcnNpb24oKSA+PSAzMDApCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHNpbmsgPDwgInJlcXVpcmVcbiI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQor
ICAgICAgICB7CisgICAgICAgICAgICBzaW5rIDw8ICJlbmFibGVcbiI7CisgICAgICAgIH0KKyAg
ICB9CisKICAgICBURXh0ZW5zaW9uR0xTTCBleHRlbnNpb25HTFNMKGdldE91dHB1dFR5cGUoKSk7
CiAgICAgcm9vdC0+dHJhdmVyc2UoJmV4dGVuc2lvbkdMU0wpOwogCkBAIC0xOTUsMyArMjgwLDEy
IEBAIHZvaWQgVHJhbnNsYXRvckdMU0w6OndyaXRlRXh0ZW5zaW9uQmVoYXYKICAgICAgICAgc2lu
ayA8PCAiI2V4dGVuc2lvbiAiIDw8IGV4dCA8PCAiIDogcmVxdWlyZVxuIjsKICAgICB9CiB9CisK
K3ZvaWQgVHJhbnNsYXRvckdMU0w6OmNvbmRpdGlvbmFsbHlPdXRwdXRJbnZhcmlhbnREZWNsYXJh
dGlvbihjb25zdCBjaGFyICpidWlsdGluVmFyeWluZ05hbWUpCit7CisgICAgaWYgKGlzVmFyeWlu
Z0RlZmluZWQoYnVpbHRpblZhcnlpbmdOYW1lKSkKKyAgICB7CisgICAgICAgIFRJbmZvU2lua0Jh
c2UgJnNpbmsgPSBnZXRJbmZvU2luaygpLm9iajsKKyAgICAgICAgc2luayA8PCAiaW52YXJpYW50
ICIgPDwgYnVpbHRpblZhcnlpbmdOYW1lIDw8ICI7XG4iOworICAgIH0KK30KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JHTFNM
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvVHJhbnNsYXRvckdMU0wuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckdMU0wuaAko
d29ya2luZyBjb3B5KQpAQCAtMTUsMTMgKzE1LDE2IEBAIGNsYXNzIFRyYW5zbGF0b3JHTFNMIDog
cHVibGljIFRDb21waWxlcgogICAgIFRyYW5zbGF0b3JHTFNMKHNoOjpHTGVudW0gdHlwZSwgU2hT
aGFkZXJTcGVjIHNwZWMsIFNoU2hhZGVyT3V0cHV0IG91dHB1dCk7CiAKICAgcHJvdGVjdGVkOgot
ICAgIHZvaWQgaW5pdEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yKEJ1aWx0SW5GdW5jdGlvbkVtdWxh
dG9yICplbXUsIGludCBjb21waWxlT3B0aW9ucykgb3ZlcnJpZGU7CisgICAgdm9pZCBpbml0QnVp
bHRJbkZ1bmN0aW9uRW11bGF0b3IoQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IgKmVtdSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVP
cHRpb25zKSBvdmVycmlkZTsKIAotICAgIHZvaWQgdHJhbnNsYXRlKFRJbnRlcm1Ob2RlICpyb290
LCBpbnQgY29tcGlsZU9wdGlvbnMpIG92ZXJyaWRlOworICAgIHZvaWQgdHJhbnNsYXRlKFRJbnRl
cm1Ob2RlICpyb290LCBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25zKSBvdmVycmlkZTsK
KyAgICBib29sIHNob3VsZEZsYXR0ZW5QcmFnbWFTdGRnbEludmFyaWFudEFsbCgpIG92ZXJyaWRl
OwogCiAgIHByaXZhdGU6CiAgICAgdm9pZCB3cml0ZVZlcnNpb24oVEludGVybU5vZGUgKnJvb3Qp
OwogICAgIHZvaWQgd3JpdGVFeHRlbnNpb25CZWhhdmlvcihUSW50ZXJtTm9kZSAqcm9vdCk7Cisg
ICAgdm9pZCBjb25kaXRpb25hbGx5T3V0cHV0SW52YXJpYW50RGVjbGFyYXRpb24oY29uc3QgY2hh
ciAqYnVpbHRpblZhcnlpbmdOYW1lKTsKIH07CiAKICNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNM
QVRPUl9UUkFOU0xBVE9SR0xTTF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckhMU0wuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JI
TFNMLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckhMU0wuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02LDEzICs2LDIyIEBACiAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0
b3JITFNMLmgiCiAKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0FkZERlZmF1bHRSZXR1
cm5TdGF0ZW1lbnRzLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9BcnJheVJldHVy
blZhbHVlVG9PdXRQYXJhbWV0ZXIuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0Jy
ZWFrVmFyaWFibGVBbGlhc2luZ0luSW5uZXJMb29wcy5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3Ry
YW5zbGF0b3IvRW11bGF0ZVByZWNpc2lvbi5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0
b3IvRXhwYW5kSW50ZWdlclBvd0V4cHJlc3Npb25zLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJh
bnNsYXRvci9JbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXIuaCIKICNpbmNsdWRlICJjb21waWxlci90
cmFuc2xhdG9yL091dHB1dEhMU0wuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1Jl
bW92ZUR5bmFtaWNJbmRleGluZy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvUmV3
cml0ZUVsc2VCbG9ja3MuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVU
ZXhlbEZldGNoT2Zmc2V0LmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRl
VW5hcnlNaW51c09wZXJhdG9ySW50LmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9T
ZXBhcmF0ZUFycmF5SW5pdGlhbGl6YXRpb24uaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xh
dG9yL1NlcGFyYXRlRGVjbGFyYXRpb25zLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRv
ci9TZXBhcmF0ZUV4cHJlc3Npb25zUmV0dXJuaW5nQXJyYXlzLmgiCisjaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci9TaW1wbGlmeUxvb3BDb25kaXRpb25zLmgiCisjaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci9TcGxpdFNlcXVlbmNlT3BlcmF0b3IuaCIKICNpbmNsdWRlICJjb21waWxl
ci90cmFuc2xhdG9yL1VuZm9sZFNob3J0Q2lyY3VpdFRvSWYuaCIKIAogVHJhbnNsYXRvckhMU0w6
OlRyYW5zbGF0b3JITFNMKHNoOjpHTGVudW0gdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsIFNoU2hh
ZGVyT3V0cHV0IG91dHB1dCkKQEAgLTIwLDEzICsyOSwyOSBAQCBUcmFuc2xhdG9ySExTTDo6VHJh
bnNsYXRvckhMU0woc2g6OkdMZW51CiB7CiB9CiAKLXZvaWQgVHJhbnNsYXRvckhMU0w6OnRyYW5z
bGF0ZShUSW50ZXJtTm9kZSAqcm9vdCwgaW50IGNvbXBpbGVPcHRpb25zKQordm9pZCBUcmFuc2xh
dG9ySExTTDo6dHJhbnNsYXRlKFRJbnRlcm1Ob2RlICpyb290LCBTaENvbXBpbGVPcHRpb25zIGNv
bXBpbGVPcHRpb25zKQogewogICAgIGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyAmcmVzb3VyY2Vz
ID0gZ2V0UmVzb3VyY2VzKCk7CiAgICAgaW50IG51bVJlbmRlclRhcmdldHMgPSByZXNvdXJjZXMu
RVhUX2RyYXdfYnVmZmVycyA/IHJlc291cmNlcy5NYXhEcmF3QnVmZmVycyA6IDE7CiAKKyAgICBz
aDo6QWRkRGVmYXVsdFJldHVyblN0YXRlbWVudHMocm9vdCk7CisKICAgICBTZXBhcmF0ZURlY2xh
cmF0aW9ucyhyb290KTsKIAorICAgIC8vIE5vdGUgdGhhdCBTaW1wbGlmeUxvb3BDb25kaXRpb25z
IG5lZWRzIHRvIGJlIHJ1biBiZWZvcmUgYW55IG90aGVyIEFTVCB0cmFuc2Zvcm1hdGlvbnMgdGhh
dAorICAgIC8vIG1heSBuZWVkIHRvIGdlbmVyYXRlIG5ldyBzdGF0ZW1lbnRzIGZyb20gbG9vcCBj
b25kaXRpb25zIG9yIGxvb3AgZXhwcmVzc2lvbnMuCisgICAgU2ltcGxpZnlMb29wQ29uZGl0aW9u
cyhyb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJtTm9kZVBhdHRlcm5NYXRj
aGVyOjprRXhwcmVzc2lvblJldHVybmluZ0FycmF5IHwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBJbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXI6OmtVbmZvbGRlZFNob3J0Q2lyY3VpdEV4
cHJlc3Npb24gfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVybU5vZGVQYXR0
ZXJuTWF0Y2hlcjo6a0R5bmFtaWNJbmRleGluZ09mVmVjdG9yT3JNYXRyaXhJbkxWYWx1ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdldFRlbXBvcmFyeUluZGV4KCksIGdldFN5bWJvbFRh
YmxlKCksIGdldFNoYWRlclZlcnNpb24oKSk7CisKKyAgICBTcGxpdFNlcXVlbmNlT3BlcmF0b3Io
cm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVy
OjprRXhwcmVzc2lvblJldHVybmluZ0FycmF5IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEludGVybU5vZGVQYXR0ZXJuTWF0Y2hlcjo6a1VuZm9sZGVkU2hvcnRDaXJjdWl0RXhwcmVz
c2lvbiB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcm1Ob2RlUGF0dGVybk1h
dGNoZXI6OmtEeW5hbWljSW5kZXhpbmdPZlZlY3Rvck9yTWF0cml4SW5MVmFsdWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdldFRlbXBvcmFyeUluZGV4KCksIGdldFN5bWJvbFRhYmxlKCks
IGdldFNoYWRlclZlcnNpb24oKSk7CisKICAgICAvLyBOb3RlIHRoYXQgU2VwYXJhdGVEZWNsYXJh
dGlvbnMgbmVlZHMgdG8gYmUgcnVuIGJlZm9yZSBVbmZvbGRTaG9ydENpcmN1aXRUb0lmLgogICAg
IFVuZm9sZFNob3J0Q2lyY3VpdFRvSWYocm9vdCwgZ2V0VGVtcG9yYXJ5SW5kZXgoKSk7CiAKQEAg
LTUyLDYgKzc3LDQwIEBAIHZvaWQgVHJhbnNsYXRvckhMU0w6OnRyYW5zbGF0ZShUSW50ZXJtTm8K
ICAgICAgICAgc2g6OlJld3JpdGVFbHNlQmxvY2tzKHJvb3QsIGdldFRlbXBvcmFyeUluZGV4KCkp
OwogICAgIH0KIAorICAgIC8vIFdvcmsgYXJvdW5kIGFuIEhMU0wgY29tcGlsZXIgZnJvbnRlbmQg
YWxpYXNpbmcgb3B0aW1pemF0aW9uIGJ1Zy4KKyAgICAvLyBUT0RPKGN3YWxsZXopIFRoZSBkYXRl
IGlzIDIwMTYtMDgtMjUsIE1pY3Jvc29mdCBzYWlkIHRoZSBidWcgd291bGQgYmUgZml4ZWQKKyAg
ICAvLyBpbiB0aGUgbmV4dCByZWxlYXNlIG9mIGQzZGNvbXBpbGVyLmRsbCwgaXQgd291bGQgYmUg
bmljZSB0byBkZXRlY3QgdGhlIERMTAorICAgIC8vIHZlcnNpb24gYW5kIG9ubHkgYXBwbHkgdGhl
IHdvcmthcm91bmQgaWYgaXQgaXMgdG9vIG9sZC4KKyAgICBzaDo6QnJlYWtWYXJpYWJsZUFsaWFz
aW5nSW5Jbm5lckxvb3BzKHJvb3QpOworCisgICAgYm9vbCBwcmVjaXNpb25FbXVsYXRpb24gPQor
ICAgICAgICBnZXRSZXNvdXJjZXMoKS5XRUJHTF9kZWJ1Z19zaGFkZXJfcHJlY2lzaW9uICYmIGdl
dFByYWdtYSgpLmRlYnVnU2hhZGVyUHJlY2lzaW9uOworCisgICAgaWYgKHByZWNpc2lvbkVtdWxh
dGlvbikKKyAgICB7CisgICAgICAgIEVtdWxhdGVQcmVjaXNpb24gZW11bGF0ZVByZWNpc2lvbihn
ZXRTeW1ib2xUYWJsZSgpLCBnZXRTaGFkZXJWZXJzaW9uKCkpOworICAgICAgICByb290LT50cmF2
ZXJzZSgmZW11bGF0ZVByZWNpc2lvbik7CisgICAgICAgIGVtdWxhdGVQcmVjaXNpb24udXBkYXRl
VHJlZSgpOworICAgICAgICBlbXVsYXRlUHJlY2lzaW9uLndyaXRlRW11bGF0aW9uSGVscGVycyhn
ZXRJbmZvU2luaygpLm9iaiwgZ2V0U2hhZGVyVmVyc2lvbigpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRPdXRwdXRUeXBlKCkpOworICAgIH0KKwor
ICAgIGlmICgoY29tcGlsZU9wdGlvbnMgJiBTSF9FWFBBTkRfU0VMRUNUX0hMU0xfSU5URUdFUl9Q
T1dfRVhQUkVTU0lPTlMpICE9IDApCisgICAgeworICAgICAgICBzaDo6RXhwYW5kSW50ZWdlclBv
d0V4cHJlc3Npb25zKHJvb3QsIGdldFRlbXBvcmFyeUluZGV4KCkpOworICAgIH0KKworICAgIGlm
ICgoY29tcGlsZU9wdGlvbnMgJiBTSF9SRVdSSVRFX1RFWEVMRkVUQ0hPRkZTRVRfVE9fVEVYRUxG
RVRDSCkgIT0gMCkKKyAgICB7CisgICAgICAgIHNoOjpSZXdyaXRlVGV4ZWxGZXRjaE9mZnNldChy
b290LCBnZXRTeW1ib2xUYWJsZSgpLCBnZXRTaGFkZXJWZXJzaW9uKCkpOworICAgIH0KKworICAg
IGlmICgoKGNvbXBpbGVPcHRpb25zICYgU0hfUkVXUklURV9JTlRFR0VSX1VOQVJZX01JTlVTX09Q
RVJBVE9SKSAhPSAwKSAmJgorICAgICAgICBnZXRTaGFkZXJUeXBlKCkgPT0gR0xfVkVSVEVYX1NI
QURFUikKKyAgICB7CisgICAgICAgIHNoOjpSZXdyaXRlVW5hcnlNaW51c09wZXJhdG9ySW50KHJv
b3QpOworICAgIH0KKwogICAgIHNoOjpPdXRwdXRITFNMIG91dHB1dEhMU0woZ2V0U2hhZGVyVHlw
ZSgpLCBnZXRTaGFkZXJWZXJzaW9uKCksIGdldEV4dGVuc2lvbkJlaGF2aW9yKCksCiAgICAgICAg
IGdldFNvdXJjZVBhdGgoKSwgZ2V0T3V0cHV0VHlwZSgpLCBudW1SZW5kZXJUYXJnZXRzLCBnZXRV
bmlmb3JtcygpLCBjb21waWxlT3B0aW9ucyk7CiAKQEAgLTYxLDYgKzEyMCwxMiBAQCB2b2lkIFRy
YW5zbGF0b3JITFNMOjp0cmFuc2xhdGUoVEludGVybU5vCiAgICAgbVVuaWZvcm1SZWdpc3Rlck1h
cCA9IG91dHB1dEhMU0wuZ2V0VW5pZm9ybVJlZ2lzdGVyTWFwKCk7CiB9CiAKK2Jvb2wgVHJhbnNs
YXRvckhMU0w6OnNob3VsZEZsYXR0ZW5QcmFnbWFTdGRnbEludmFyaWFudEFsbCgpCit7CisgICAg
Ly8gTm90IG5lY2Vzc2FyeSB3aGVuIHRyYW5zbGF0aW5nIHRvIEhMU0wuCisgICAgcmV0dXJuIGZh
bHNlOworfQorCiBib29sIFRyYW5zbGF0b3JITFNMOjpoYXNJbnRlcmZhY2VCbG9jayhjb25zdCBz
dGQ6OnN0cmluZyAmaW50ZXJmYWNlQmxvY2tOYW1lKSBjb25zdAogewogICAgIHJldHVybiAobUlu
dGVyZmFjZUJsb2NrUmVnaXN0ZXJNYXAuY291bnQoaW50ZXJmYWNlQmxvY2tOYW1lKSA+IDApOwpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJh
bnNsYXRvckhMU0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9ySExTTC5oCShyZXZpc2lvbiAyMDc4MDQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xh
dG9ySExTTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNSw3ICsxNSw3IEBAIGNsYXNzIFRyYW5zbGF0
b3JITFNMIDogcHVibGljIFRDb21waWxlcgogICAgIFRyYW5zbGF0b3JITFNMKHNoOjpHTGVudW0g
dHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsIFNoU2hhZGVyT3V0cHV0IG91dHB1dCk7CiAjaWZkZWYg
QU5HTEVfRU5BQkxFX0hMU0wKICAgICBUcmFuc2xhdG9ySExTTCAqZ2V0QXNUcmFuc2xhdG9ySExT
TCgpIG92ZXJyaWRlIHsgcmV0dXJuIHRoaXM7IH0KLSNlbmRpZgorI2VuZGlmIC8vIEFOR0xFX0VO
QUJMRV9ITFNMCiAKICAgICBib29sIGhhc0ludGVyZmFjZUJsb2NrKGNvbnN0IHN0ZDo6c3RyaW5n
ICZpbnRlcmZhY2VCbG9ja05hbWUpIGNvbnN0OwogICAgIHVuc2lnbmVkIGludCBnZXRJbnRlcmZh
Y2VCbG9ja1JlZ2lzdGVyKGNvbnN0IHN0ZDo6c3RyaW5nICZpbnRlcmZhY2VCbG9ja05hbWUpIGNv
bnN0OwpAQCAtMjMsMTAgKzIzLDExIEBAIGNsYXNzIFRyYW5zbGF0b3JITFNMIDogcHVibGljIFRD
b21waWxlcgogICAgIGNvbnN0IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCB1bnNpZ25lZCBpbnQ+ICpn
ZXRVbmlmb3JtUmVnaXN0ZXJNYXAoKSBjb25zdDsKIAogICBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCB0
cmFuc2xhdGUoVEludGVybU5vZGUgKnJvb3QsIGludCBjb21waWxlT3B0aW9ucykgb3ZlcnJpZGU7
CisgICAgdm9pZCB0cmFuc2xhdGUoVEludGVybU5vZGUgKnJvb3QsIFNoQ29tcGlsZU9wdGlvbnMg
Y29tcGlsZU9wdGlvbnMpIG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkRmxhdHRlblByYWdtYVN0
ZGdsSW52YXJpYW50QWxsKCkgb3ZlcnJpZGU7CiAKICAgICAvLyBjb2xsZWN0VmFyaWFibGVzIG5l
ZWRzIHRvIGJlIHJ1biBhbHdheXMgc28gcmVnaXN0ZXJzIGNhbiBiZSBhc3NpZ25lZC4KLSAgICBi
b29sIHNob3VsZENvbGxlY3RWYXJpYWJsZXMoaW50IGNvbXBpbGVPcHRpb25zKSBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBzaG91bGRDb2xsZWN0VmFyaWFibGVzKFNoQ29tcGls
ZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAg
IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCB1bnNpZ25lZCBpbnQ+IG1JbnRlcmZhY2VCbG9ja1JlZ2lz
dGVyTWFwOwogICAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCB1bnNpZ25lZCBpbnQ+IG1Vbmlmb3Jt
UmVnaXN0ZXJNYXA7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9UeXBlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHlwZXMuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UeXBlcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlICJjb21waWxlci90
cmFuc2xhdG9yL1R5cGVzLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbmZvU2lu
ay5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgorI2luY2x1
ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvU3ltYm9sVGFibGUuaCIKIAogI2luY2x1ZGUgPGFsZ29y
aXRobT4KICNpbmNsdWRlIDxjbGltaXRzPgpAQCAtMTksNDEgKzIwLDQ5IEBAIGNvbnN0IGNoYXIq
IGdldEJhc2ljU3RyaW5nKFRCYXNpY1R5cGUgdCkKIHsKICAgICBzd2l0Y2ggKHQpCiAgICAgewot
ICAgICAgY2FzZSBFYnRWb2lkOiAgICAgICAgICAgICAgICAgcmV0dXJuICJ2b2lkIjsgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFYnRGbG9hdDogICAgICAgICAgICAgICAgcmV0
dXJuICJmbG9hdCI7ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFYnRJbnQ6ICAg
ICAgICAgICAgICAgICAgcmV0dXJuICJpbnQiOyAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSBFYnRVSW50OiAgICAgICAgICAgICAgICAgcmV0dXJuICJ1aW50IjsgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFYnRCb29sOiAgICAgICAgICAgICAgICAgcmV0dXJu
ICJib29sIjsgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFYnRTYW1wbGVyMkQ6
ICAgICAgICAgICAgcmV0dXJuICJzYW1wbGVyMkQiOyAgICAgICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSBFYnRTYW1wbGVyM0Q6ICAgICAgICAgICAgcmV0dXJuICJzYW1wbGVyM0QiOyAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZTogICAgICAgICAgcmV0dXJuICJz
YW1wbGVyQ3ViZSI7ICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFYnRTYW1wbGVyRXh0ZXJu
YWxPRVM6ICAgcmV0dXJuICJzYW1wbGVyRXh0ZXJuYWxPRVMiOyAgIGJyZWFrOwotICAgICAgY2Fz
ZSBFYnRTYW1wbGVyMkRSZWN0OiAgICAgICAgcmV0dXJuICJzYW1wbGVyMkRSZWN0IjsgICAgICAg
IGJyZWFrOwotICAgICAgY2FzZSBFYnRTYW1wbGVyMkRBcnJheTogICAgICAgcmV0dXJuICJzYW1w
bGVyMkRBcnJheSI7ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEOiAgICAg
ICAgICAgcmV0dXJuICJpc2FtcGxlcjJEIjsgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBF
YnRJU2FtcGxlcjNEOiAgICAgICAgICAgcmV0dXJuICJpc2FtcGxlcjNEIjsgICAgICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBFYnRJU2FtcGxlckN1YmU6ICAgICAgICAgcmV0dXJuICJpc2FtcGxl
ckN1YmUiOyAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEQXJyYXk6ICAg
ICAgcmV0dXJuICJpc2FtcGxlcjJEQXJyYXkiOyAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFYnRV
U2FtcGxlcjJEOiAgICAgICAgICAgcmV0dXJuICJ1c2FtcGxlcjJEIjsgICAgICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBFYnRVU2FtcGxlcjNEOiAgICAgICAgICAgcmV0dXJuICJ1c2FtcGxlcjNE
IjsgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFYnRVU2FtcGxlckN1YmU6ICAgICAgICAg
cmV0dXJuICJ1c2FtcGxlckN1YmUiOyAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFYnRVU2Ft
cGxlcjJEQXJyYXk6ICAgICAgcmV0dXJuICJ1c2FtcGxlcjJEQXJyYXkiOyAgICAgIGJyZWFrOwot
ICAgICAgY2FzZSBFYnRTYW1wbGVyMkRTaGFkb3c6ICAgICAgcmV0dXJuICJzYW1wbGVyMkRTaGFk
b3ciOyAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZVNoYWRvdzogICAgcmV0
dXJuICJzYW1wbGVyQ3ViZVNoYWRvdyI7ICAgIGJyZWFrOwotICAgICAgY2FzZSBFYnRTYW1wbGVy
MkRBcnJheVNoYWRvdzogcmV0dXJuICJzYW1wbGVyMkRBcnJheVNoYWRvdyI7IGJyZWFrOwotICAg
ICAgY2FzZSBFYnRTdHJ1Y3Q6ICAgICAgICAgICAgICAgcmV0dXJuICJzdHJ1Y3R1cmUiOyAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFYnRJbnRlcmZhY2VCbG9jazogICAgICAgcmV0dXJu
ICJpbnRlcmZhY2UgYmxvY2siOyAgICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDogVU5SRUFDSEFC
TEUoKTsgICAgICAgcmV0dXJuICJ1bmtub3duIHR5cGUiOworICAgICAgICBjYXNlIEVidFZvaWQ6
ICAgICAgICAgICAgICAgICByZXR1cm4gInZvaWQiOworICAgICAgICBjYXNlIEVidEZsb2F0OiAg
ICAgICAgICAgICAgICByZXR1cm4gImZsb2F0IjsKKyAgICAgICAgY2FzZSBFYnRJbnQ6ICAgICAg
ICAgICAgICAgICAgcmV0dXJuICJpbnQiOworICAgICAgICBjYXNlIEVidFVJbnQ6ICAgICAgICAg
ICAgICAgICByZXR1cm4gInVpbnQiOworICAgICAgICBjYXNlIEVidEJvb2w6ICAgICAgICAgICAg
ICAgICByZXR1cm4gImJvb2wiOworICAgICAgICBjYXNlIEVidFNhbXBsZXIyRDogICAgICAgICAg
ICByZXR1cm4gInNhbXBsZXIyRCI7CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjNEOiAgICAgICAg
ICAgIHJldHVybiAic2FtcGxlcjNEIjsKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZTogICAg
ICAgICAgcmV0dXJuICJzYW1wbGVyQ3ViZSI7CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlckV4dGVy
bmFsT0VTOiAgIHJldHVybiAic2FtcGxlckV4dGVybmFsT0VTIjsKKyAgICAgICAgY2FzZSBFYnRT
YW1wbGVyMkRSZWN0OiAgICAgICAgcmV0dXJuICJzYW1wbGVyMkRSZWN0IjsKKyAgICAgICAgY2Fz
ZSBFYnRTYW1wbGVyMkRBcnJheTogICAgICAgcmV0dXJuICJzYW1wbGVyMkRBcnJheSI7CisgICAg
ICAgIGNhc2UgRWJ0SVNhbXBsZXIyRDogICAgICAgICAgIHJldHVybiAiaXNhbXBsZXIyRCI7Cisg
ICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIzRDogICAgICAgICAgIHJldHVybiAiaXNhbXBsZXIzRCI7
CisgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXJDdWJlOiAgICAgICAgIHJldHVybiAiaXNhbXBsZXJD
dWJlIjsKKyAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEQXJyYXk6ICAgICAgcmV0dXJuICJpc2Ft
cGxlcjJEQXJyYXkiOworICAgICAgICBjYXNlIEVidFVTYW1wbGVyMkQ6ICAgICAgICAgICByZXR1
cm4gInVzYW1wbGVyMkQiOworICAgICAgICBjYXNlIEVidFVTYW1wbGVyM0Q6ICAgICAgICAgICBy
ZXR1cm4gInVzYW1wbGVyM0QiOworICAgICAgICBjYXNlIEVidFVTYW1wbGVyQ3ViZTogICAgICAg
ICByZXR1cm4gInVzYW1wbGVyQ3ViZSI7CisgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXIyREFycmF5
OiAgICAgIHJldHVybiAidXNhbXBsZXIyREFycmF5IjsKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVy
MkRTaGFkb3c6ICAgICAgcmV0dXJuICJzYW1wbGVyMkRTaGFkb3ciOworICAgICAgICBjYXNlIEVi
dFNhbXBsZXJDdWJlU2hhZG93OiAgICByZXR1cm4gInNhbXBsZXJDdWJlU2hhZG93IjsKKyAgICAg
ICAgY2FzZSBFYnRTYW1wbGVyMkRBcnJheVNoYWRvdzogcmV0dXJuICJzYW1wbGVyMkRBcnJheVNo
YWRvdyI7CisgICAgICAgIGNhc2UgRWJ0U3RydWN0OiAgICAgICAgICAgICAgIHJldHVybiAic3Ry
dWN0dXJlIjsKKyAgICAgICAgY2FzZSBFYnRJbnRlcmZhY2VCbG9jazogICAgICAgcmV0dXJuICJp
bnRlcmZhY2UgYmxvY2siOworICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyAgICAgICBy
ZXR1cm4gInVua25vd24gdHlwZSI7CiAgICAgfQogfQogCiBUVHlwZTo6VFR5cGUoY29uc3QgVFB1
YmxpY1R5cGUgJnApCi0gICAgOiB0eXBlKHAudHlwZSksIHByZWNpc2lvbihwLnByZWNpc2lvbiks
IHF1YWxpZmllcihwLnF1YWxpZmllciksIGludmFyaWFudChwLmludmFyaWFudCksCi0gICAgICBs
YXlvdXRRdWFsaWZpZXIocC5sYXlvdXRRdWFsaWZpZXIpLCBwcmltYXJ5U2l6ZShwLnByaW1hcnlT
aXplKSwgc2Vjb25kYXJ5U2l6ZShwLnNlY29uZGFyeVNpemUpLAotICAgICAgYXJyYXkocC5hcnJh
eSksIGFycmF5U2l6ZShwLmFycmF5U2l6ZSksIGludGVyZmFjZUJsb2NrKDApLCBzdHJ1Y3R1cmUo
MCkKKyAgICA6IHR5cGUocC5nZXRCYXNpY1R5cGUoKSksCisgICAgICBwcmVjaXNpb24ocC5wcmVj
aXNpb24pLAorICAgICAgcXVhbGlmaWVyKHAucXVhbGlmaWVyKSwKKyAgICAgIGludmFyaWFudChw
LmludmFyaWFudCksCisgICAgICBsYXlvdXRRdWFsaWZpZXIocC5sYXlvdXRRdWFsaWZpZXIpLAor
ICAgICAgcHJpbWFyeVNpemUocC5nZXRQcmltYXJ5U2l6ZSgpKSwKKyAgICAgIHNlY29uZGFyeVNp
emUocC5nZXRTZWNvbmRhcnlTaXplKCkpLAorICAgICAgYXJyYXkocC5hcnJheSksCisgICAgICBh
cnJheVNpemUocC5hcnJheVNpemUpLAorICAgICAgaW50ZXJmYWNlQmxvY2soMCksCisgICAgICBz
dHJ1Y3R1cmUoMCkKIHsKLSAgICBpZiAocC51c2VyRGVmKQotICAgICAgICBzdHJ1Y3R1cmUgPSBw
LnVzZXJEZWYtPmdldFN0cnVjdCgpOworICAgIGlmIChwLmdldFVzZXJEZWYoKSkKKyAgICAgICAg
c3RydWN0dXJlID0gcC5nZXRVc2VyRGVmKCktPmdldFN0cnVjdCgpOwogfQogCiBib29sIFRTdHJ1
Y3R1cmU6OmVxdWFscyhjb25zdCBUU3RydWN0dXJlICZvdGhlcikgY29uc3QKQEAgLTYxLDYgKzcw
LDEyMiBAQCBib29sIFRTdHJ1Y3R1cmU6OmVxdWFscyhjb25zdCBUU3RydWN0dXJlCiAgICAgcmV0
dXJuICh1bmlxdWVJZCgpID09IG90aGVyLnVuaXF1ZUlkKCkpOwogfQogCitjb25zdCBjaGFyICpU
VHlwZTo6Z2V0QnVpbHRJblR5cGVOYW1lU3RyaW5nKCkgY29uc3QKK3sKKyAgICBpZiAoaXNNYXRy
aXgoKSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoZ2V0Q29scygpKQorICAgICAgICB7CisgICAg
ICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgc3dpdGNoIChnZXRSb3dzKCkpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gIm1hdDIiOworICAgICAgICAgICAgICAgICAgICBjYXNlIDM6Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIm1hdDJ4MyI7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAibWF0Mng0IjsKKyAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgc3dpdGNo
IChnZXRSb3dzKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjYXNl
IDI6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIm1hdDN4MiI7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAibWF0MyI7
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAibWF0M3g0IjsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIDQ6CisgICAg
ICAgICAgICAgICAgc3dpdGNoIChnZXRSb3dzKCkpCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIm1h
dDR4MiI7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAibWF0NHgzIjsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuICJtYXQ0IjsKKyAgICAgICAgICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGlzVmVjdG9y
KCkpCisgICAgeworICAgICAgICBzd2l0Y2ggKGdldEJhc2ljVHlwZSgpKQorICAgICAgICB7Cisg
ICAgICAgICAgICBjYXNlIEVidEZsb2F0OgorICAgICAgICAgICAgICAgIHN3aXRjaCAoZ2V0Tm9t
aW5hbFNpemUoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
MjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAidmVjMiI7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAidmVjMyI7Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biAidmVjNCI7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
ICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CisgICAg
ICAgICAgICAgICAgc3dpdGNoIChnZXROb21pbmFsU2l6ZSgpKQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuICJpdmVjMiI7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAiaXZlYzMiOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIml2ZWM0IjsKKyAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBjYXNlIEVidEJvb2w6CisgICAgICAgICAgICAgICAgc3dpdGNoIChnZXROb21p
bmFsU2l6ZSgpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAy
OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJidmVjMiI7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiYnZlYzMiOwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gImJ2ZWM0IjsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIEVidFVJbnQ6Cisg
ICAgICAgICAgICAgICAgc3dpdGNoIChnZXROb21pbmFsU2l6ZSgpKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuICJ1dmVjMiI7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAidXZlYzMiOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInV2ZWM0IjsKKyAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICB9CisgICAgQVNT
RVJUKGdldEJhc2ljVHlwZSgpICE9IEVidFN0cnVjdCk7CisgICAgQVNTRVJUKGdldEJhc2ljVHlw
ZSgpICE9IEVidEludGVyZmFjZUJsb2NrKTsKKyAgICByZXR1cm4gZ2V0QmFzaWNTdHJpbmcoKTsK
K30KKwogVFN0cmluZyBUVHlwZTo6Z2V0Q29tcGxldGVTdHJpbmcoKSBjb25zdAogewogICAgIFRT
dHJpbmdTdHJlYW0gc3RyZWFtOwpAQCAtMjAyLDcgKzMyNyw5IEBAIHNpemVfdCBUVHlwZTo6Z2V0
T2JqZWN0U2l6ZSgpIGNvbnN0CiAKICAgICBpZiAoaXNBcnJheSgpKQogICAgIHsKLSAgICAgICAg
Ly8gVE9ETzogZ2V0QXJyYXlTaXplKCkgcmV0dXJucyBhbiBpbnQsIG5vdCBhIHNpemVfdAorICAg
ICAgICBpZiAodG90YWxTaXplID09IDApCisgICAgICAgICAgICByZXR1cm4gMDsKKwogICAgICAg
ICBzaXplX3QgY3VycmVudEFycmF5U2l6ZSA9IGdldEFycmF5U2l6ZSgpOwogICAgICAgICBpZiAo
Y3VycmVudEFycmF5U2l6ZSA+IElOVF9NQVggLyB0b3RhbFNpemUpCiAgICAgICAgICAgICB0b3Rh
bFNpemUgPSBJTlRfTUFYOwpAQCAtMjEzLDYgKzM0MCwxNCBAQCBzaXplX3QgVFR5cGU6OmdldE9i
amVjdFNpemUoKSBjb25zdAogICAgIHJldHVybiB0b3RhbFNpemU7CiB9CiAKK1RTdHJ1Y3R1cmU6
OlRTdHJ1Y3R1cmUoY29uc3QgVFN0cmluZyAqbmFtZSwgVEZpZWxkTGlzdCAqZmllbGRzKQorICAg
IDogVEZpZWxkTGlzdENvbGxlY3Rpb24obmFtZSwgZmllbGRzKSwKKyAgICAgIG1EZWVwZXN0TmVz
dGluZygwKSwKKyAgICAgIG1VbmlxdWVJZChUU3ltYm9sVGFibGU6Om5leHRVbmlxdWVJZCgpKSwK
KyAgICAgIG1BdEdsb2JhbFNjb3BlKGZhbHNlKQoreworfQorCiBib29sIFRTdHJ1Y3R1cmU6OmNv
bnRhaW5zQXJyYXlzKCkgY29uc3QKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1GaWVs
ZHMtPnNpemUoKTsgKytpKQpAQCAtMjQ4LDcgKzM4Myw3IEBAIGJvb2wgVFN0cnVjdHVyZTo6Y29u
dGFpbnNTYW1wbGVycygpIGNvbnMKIAogdm9pZCBUU3RydWN0dXJlOjpjcmVhdGVTYW1wbGVyU3lt
Ym9scyhjb25zdCBUU3RyaW5nICZzdHJ1Y3ROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZzdHJ1Y3RBUElOYW1lLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgYXJyYXlPZlN0cnVjdHNTaXplLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQg
YXJyYXlPZlN0cnVjdHNTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUVmVjdG9yPFRJbnRlcm1TeW1ib2wgKj4gKm91dHB1dFN5bWJvbHMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRNYXA8VEludGVybVN5bWJvbCAqLCBUU3RyaW5nPiAq
b3V0cHV0U3ltYm9sc1RvQVBJTmFtZXMpIGNvbnN0CiB7CkBAIC0yNTcsOSArMzkyLDkgQEAgdm9p
ZCBUU3RydWN0dXJlOjpjcmVhdGVTYW1wbGVyU3ltYm9scyhjbwogICAgICAgICBjb25zdCBUVHlw
ZSAqZmllbGRUeXBlID0gZmllbGQtPnR5cGUoKTsKICAgICAgICAgaWYgKElzU2FtcGxlcihmaWVs
ZFR5cGUtPmdldEJhc2ljVHlwZSgpKSkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKGFycmF5
T2ZTdHJ1Y3RzU2l6ZSA+IDApCisgICAgICAgICAgICBpZiAoYXJyYXlPZlN0cnVjdHNTaXplID4g
MHUpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQgYXJyYXlJbmRleCA9
IDA7IGFycmF5SW5kZXggPCBhcnJheU9mU3RydWN0c1NpemU7ICsrYXJyYXlJbmRleCkKKyAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBhcnJheUluZGV4ID0gMHU7IGFycmF5SW5kZXgg
PCBhcnJheU9mU3RydWN0c1NpemU7ICsrYXJyYXlJbmRleCkKICAgICAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgICAgIFRTdHJpbmdTdHJlYW0gbmFtZTsKICAgICAgICAgICAgICAgICAg
ICAgbmFtZSA8PCBzdHJ1Y3ROYW1lIDw8ICJfIiA8PCBhcnJheUluZGV4IDw8ICJfIiA8PCBmaWVs
ZC0+bmFtZSgpOwpAQCAtMjg5LDEwICs0MjQsMTEgQEAgdm9pZCBUU3RydWN0dXJlOjpjcmVhdGVT
YW1wbGVyU3ltYm9scyhjbwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGZpZWxkVHlwZS0+
aXNTdHJ1Y3R1cmVDb250YWluaW5nU2FtcGxlcnMoKSkKICAgICAgICAgewotICAgICAgICAgICAg
aW50IG5lc3RlZEFycmF5T2ZTdHJ1Y3RzU2l6ZSA9IGZpZWxkVHlwZS0+aXNBcnJheSgpID8gZmll
bGRUeXBlLT5nZXRBcnJheVNpemUoKSA6IDA7CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbmVz
dGVkQXJyYXlPZlN0cnVjdHNTaXplID0KKyAgICAgICAgICAgICAgICBmaWVsZFR5cGUtPmlzQXJy
YXkoKSA/IGZpZWxkVHlwZS0+Z2V0QXJyYXlTaXplKCkgOiAwdTsKICAgICAgICAgICAgIGlmIChh
cnJheU9mU3RydWN0c1NpemUgPiAwKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZv
ciAoaW50IGFycmF5SW5kZXggPSAwOyBhcnJheUluZGV4IDwgYXJyYXlPZlN0cnVjdHNTaXplOyAr
K2FycmF5SW5kZXgpCisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgYXJyYXlJbmRl
eCA9IDB1OyBhcnJheUluZGV4IDwgYXJyYXlPZlN0cnVjdHNTaXplOyArK2FycmF5SW5kZXgpCiAg
ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBUU3RyaW5nU3RyZWFtIGZpZWxk
TmFtZTsKICAgICAgICAgICAgICAgICAgICAgZmllbGROYW1lIDw8IHN0cnVjdE5hbWUgPDwgIl8i
IDw8IGFycmF5SW5kZXggPDwgIl8iIDw8IGZpZWxkLT5uYW1lKCk7CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UeXBlcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1R5cGVz
LmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1R5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMywxMyArMTAzLDcg
QEAgY2xhc3MgVFN0cnVjdHVyZSA6IHB1YmxpYyBURmllbGRMaXN0Q29sbAogewogICBwdWJsaWM6
CiAgICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURSgpOwotICAgIFRTdHJ1Y3R1cmUoY29uc3Qg
VFN0cmluZyAqbmFtZSwgVEZpZWxkTGlzdCAqZmllbGRzKQotICAgICAgICA6IFRGaWVsZExpc3RD
b2xsZWN0aW9uKG5hbWUsIGZpZWxkcyksCi0gICAgICAgICAgbURlZXBlc3ROZXN0aW5nKDApLAot
ICAgICAgICAgIG1VbmlxdWVJZCgwKSwKLSAgICAgICAgICBtQXRHbG9iYWxTY29wZShmYWxzZSkK
LSAgICB7Ci0gICAgfQorICAgIFRTdHJ1Y3R1cmUoY29uc3QgVFN0cmluZyAqbmFtZSwgVEZpZWxk
TGlzdCAqZmllbGRzKTsKIAogICAgIGludCBkZWVwZXN0TmVzdGluZygpIGNvbnN0CiAgICAgewpA
QCAtMTIzLDcgKzExNyw3IEBAIGNsYXNzIFRTdHJ1Y3R1cmUgOiBwdWJsaWMgVEZpZWxkTGlzdENv
bGwKIAogICAgIHZvaWQgY3JlYXRlU2FtcGxlclN5bWJvbHMoY29uc3QgVFN0cmluZyAmc3RydWN0
TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJnN0cnVj
dEFQSU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgYXJyYXlP
ZlN0cnVjdHNTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWdu
ZWQgaW50IGFycmF5T2ZTdHJ1Y3RzU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRWZWN0b3I8VEludGVybVN5bWJvbCAqPiAqb3V0cHV0U3ltYm9scywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRNYXA8VEludGVybVN5bWJvbCAqLCBUU3RyaW5nPiAqb3V0cHV0U3lt
Ym9sc1RvQVBJTmFtZXMpIGNvbnN0OwogCkBAIC0yNDEsMTEgKzIzNSwxOCBAQCBjbGFzcyBUVHlw
ZQogICAgICAgICAgIGludGVyZmFjZUJsb2NrKG51bGxwdHIpLCBzdHJ1Y3R1cmUobnVsbHB0cikK
ICAgICB7CiAgICAgfQotICAgIFRUeXBlKFRCYXNpY1R5cGUgdCwgdW5zaWduZWQgY2hhciBwcyA9
IDEsIHVuc2lnbmVkIGNoYXIgc3MgPSAxKQotICAgICAgICA6IHR5cGUodCksIHByZWNpc2lvbihF
YnBVbmRlZmluZWQpLCBxdWFsaWZpZXIoRXZxR2xvYmFsKSwgaW52YXJpYW50KGZhbHNlKSwKKyAg
ICBleHBsaWNpdCBUVHlwZShUQmFzaWNUeXBlIHQsIHVuc2lnbmVkIGNoYXIgcHMgPSAxLCB1bnNp
Z25lZCBjaGFyIHNzID0gMSkKKyAgICAgICAgOiB0eXBlKHQpLAorICAgICAgICAgIHByZWNpc2lv
bihFYnBVbmRlZmluZWQpLAorICAgICAgICAgIHF1YWxpZmllcihFdnFHbG9iYWwpLAorICAgICAg
ICAgIGludmFyaWFudChmYWxzZSksCiAgICAgICAgICAgbGF5b3V0UXVhbGlmaWVyKFRMYXlvdXRR
dWFsaWZpZXI6OmNyZWF0ZSgpKSwKLSAgICAgICAgICBwcmltYXJ5U2l6ZShwcyksIHNlY29uZGFy
eVNpemUoc3MpLCBhcnJheShmYWxzZSksIGFycmF5U2l6ZSgwKSwKLSAgICAgICAgICBpbnRlcmZh
Y2VCbG9jaygwKSwgc3RydWN0dXJlKDApCisgICAgICAgICAgcHJpbWFyeVNpemUocHMpLAorICAg
ICAgICAgIHNlY29uZGFyeVNpemUoc3MpLAorICAgICAgICAgIGFycmF5KGZhbHNlKSwKKyAgICAg
ICAgICBhcnJheVNpemUoMCksCisgICAgICAgICAgaW50ZXJmYWNlQmxvY2soMCksCisgICAgICAg
ICAgc3RydWN0dXJlKDApCiAgICAgewogICAgIH0KICAgICBUVHlwZShUQmFzaWNUeXBlIHQsIFRQ
cmVjaXNpb24gcCwgVFF1YWxpZmllciBxID0gRXZxVGVtcG9yYXJ5LApAQCAtMjU3LDExICsyNTgs
MTggQEAgY2xhc3MgVFR5cGUKICAgICB7CiAgICAgfQogICAgIGV4cGxpY2l0IFRUeXBlKGNvbnN0
IFRQdWJsaWNUeXBlICZwKTsKLSAgICBUVHlwZShUU3RydWN0dXJlICp1c2VyRGVmLCBUUHJlY2lz
aW9uIHAgPSBFYnBVbmRlZmluZWQpCi0gICAgICAgIDogdHlwZShFYnRTdHJ1Y3QpLCBwcmVjaXNp
b24ocCksIHF1YWxpZmllcihFdnFUZW1wb3JhcnkpLCBpbnZhcmlhbnQoZmFsc2UpLAorICAgIGV4
cGxpY2l0IFRUeXBlKFRTdHJ1Y3R1cmUgKnVzZXJEZWYsIFRQcmVjaXNpb24gcCA9IEVicFVuZGVm
aW5lZCkKKyAgICAgICAgOiB0eXBlKEVidFN0cnVjdCksCisgICAgICAgICAgcHJlY2lzaW9uKHAp
LAorICAgICAgICAgIHF1YWxpZmllcihFdnFUZW1wb3JhcnkpLAorICAgICAgICAgIGludmFyaWFu
dChmYWxzZSksCiAgICAgICAgICAgbGF5b3V0UXVhbGlmaWVyKFRMYXlvdXRRdWFsaWZpZXI6OmNy
ZWF0ZSgpKSwKLSAgICAgICAgICBwcmltYXJ5U2l6ZSgxKSwgc2Vjb25kYXJ5U2l6ZSgxKSwgYXJy
YXkoZmFsc2UpLCBhcnJheVNpemUoMCksCi0gICAgICAgICAgaW50ZXJmYWNlQmxvY2soMCksIHN0
cnVjdHVyZSh1c2VyRGVmKQorICAgICAgICAgIHByaW1hcnlTaXplKDEpLAorICAgICAgICAgIHNl
Y29uZGFyeVNpemUoMSksCisgICAgICAgICAgYXJyYXkoZmFsc2UpLAorICAgICAgICAgIGFycmF5
U2l6ZSgwKSwKKyAgICAgICAgICBpbnRlcmZhY2VCbG9jaygwKSwKKyAgICAgICAgICBzdHJ1Y3R1
cmUodXNlckRlZikKICAgICB7CiAgICAgfQogICAgIFRUeXBlKFRJbnRlcmZhY2VCbG9jayAqaW50
ZXJmYWNlQmxvY2tJbiwgVFF1YWxpZmllciBxdWFsaWZpZXJJbiwKQEAgLTMxMiw2ICszMjAsOCBA
QCBjbGFzcyBUVHlwZQogICAgICAgICByZXR1cm4gaW52YXJpYW50OwogICAgIH0KIAorICAgIHZv
aWQgc2V0SW52YXJpYW50KGJvb2wgaSkgeyBpbnZhcmlhbnQgPSBpOyB9CisKICAgICBUTGF5b3V0
UXVhbGlmaWVyIGdldExheW91dFF1YWxpZmllcigpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1
cm4gbGF5b3V0UXVhbGlmaWVyOwpAQCAtMzczLDEzICszODMsMTAgQEAgY2xhc3MgVFR5cGUKICAg
ICB9CiAgICAgYm9vbCBpc1Vuc2l6ZWRBcnJheSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1
cm4gYXJyYXkgJiYgYXJyYXlTaXplID09IDA7CisgICAgICAgIHJldHVybiBhcnJheSAmJiBhcnJh
eVNpemUgPT0gMHU7CiAgICAgfQotICAgIGludCBnZXRBcnJheVNpemUoKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIGFycmF5U2l6ZTsKLSAgICB9Ci0gICAgdm9pZCBzZXRBcnJheVNpemUo
aW50IHMpCisgICAgdW5zaWduZWQgaW50IGdldEFycmF5U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGFy
cmF5U2l6ZTsgfQorICAgIHZvaWQgc2V0QXJyYXlTaXplKHVuc2lnbmVkIGludCBzKQogICAgIHsK
ICAgICAgICAgaWYgKCFhcnJheSB8fCBhcnJheVNpemUgIT0gcykKICAgICAgICAgewpAQCAtMzkz
LDcgKzQwMCw3IEBAIGNsYXNzIFRUeXBlCiAgICAgICAgIGlmIChhcnJheSkKICAgICAgICAgewog
ICAgICAgICAgICAgYXJyYXkgICAgID0gZmFsc2U7Ci0gICAgICAgICAgICBhcnJheVNpemUgPSAw
OworICAgICAgICAgICAgYXJyYXlTaXplID0gMHU7CiAgICAgICAgICAgICBpbnZhbGlkYXRlTWFu
Z2xlZE5hbWUoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ5NCw2ICs1MDEsNyBAQCBjbGFzcyBU
VHlwZQogICAgIHsKICAgICAgICAgcmV0dXJuIDo6Z2V0QmFzaWNTdHJpbmcodHlwZSk7CiAgICAg
fQorCiAgICAgY29uc3QgY2hhciAqZ2V0UHJlY2lzaW9uU3RyaW5nKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiA6OmdldFByZWNpc2lvblN0cmluZyhwcmVjaXNpb24pOwpAQCAtNTAyLDYg
KzUxMCw5IEBAIGNsYXNzIFRUeXBlCiAgICAgewogICAgICAgICByZXR1cm4gOjpnZXRRdWFsaWZp
ZXJTdHJpbmcocXVhbGlmaWVyKTsKICAgICB9CisKKyAgICBjb25zdCBjaGFyICpnZXRCdWlsdElu
VHlwZU5hbWVTdHJpbmcoKSBjb25zdDsKKwogICAgIFRTdHJpbmcgZ2V0Q29tcGxldGVTdHJpbmco
KSBjb25zdDsKIAogICAgIC8vIElmIHRoaXMgdHlwZSBpcyBhIHN0cnVjdCwgcmV0dXJucyB0aGUg
ZGVlcGVzdCBzdHJ1Y3QgbmVzdGluZyBvZgpAQCAtNTM4LDcgKzU0OSw3IEBAIGNsYXNzIFRUeXBl
CiAKICAgICB2b2lkIGNyZWF0ZVNhbXBsZXJTeW1ib2xzKGNvbnN0IFRTdHJpbmcgJnN0cnVjdE5h
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZzdHJ1Y3RB
UElOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IGFycmF5T2ZT
dHJ1Y3RzU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVk
IGludCBhcnJheU9mU3RydWN0c1NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
VmVjdG9yPFRJbnRlcm1TeW1ib2wgKj4gKm91dHB1dFN5bWJvbHMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUTWFwPFRJbnRlcm1TeW1ib2wgKiwgVFN0cmluZz4gKm91dHB1dFN5bWJv
bHNUb0FQSU5hbWVzKSBjb25zdAogICAgIHsKQEAgLTU2Niw3ICs1NzcsNyBAQCBjbGFzcyBUVHlw
ZQogICAgIHVuc2lnbmVkIGNoYXIgcHJpbWFyeVNpemU7IC8vIHNpemUgb2YgdmVjdG9yIG9yIGNv
bHMgbWF0cml4CiAgICAgdW5zaWduZWQgY2hhciBzZWNvbmRhcnlTaXplOyAvLyByb3dzIG9mIGEg
bWF0cml4CiAgICAgYm9vbCBhcnJheTsKLSAgICBpbnQgYXJyYXlTaXplOworICAgIHVuc2lnbmVk
IGludCBhcnJheVNpemU7CiAKICAgICAvLyAwIHVubGVzcyB0aGlzIGlzIGFuIGludGVyZmFjZSBi
bG9jaywgb3IgaW50ZXJmYWNlIGJsb2NrIG1lbWJlciB2YXJpYWJsZQogICAgIFRJbnRlcmZhY2VC
bG9jayAqaW50ZXJmYWNlQmxvY2s7CkBAIC01NzcsNDQgKzU4OCwyNSBAQCBjbGFzcyBUVHlwZQog
ICAgIG11dGFibGUgVFN0cmluZyBtYW5nbGVkOwogfTsKIAotLy8KLS8vIFRoaXMgaXMgYSB3b3Jr
YXJvdW5kIGZvciBhIHByb2JsZW0gd2l0aCB0aGUgeWFjYyBzdGFjaywgIEl0IGNhbid0IGhhdmUK
LS8vIHR5cGVzIHRoYXQgaXQgdGhpbmtzIGhhdmUgbm9uLXRyaXZpYWwgY29uc3RydWN0b3JzLiAg
SXQgc2hvdWxkCi0vLyBqdXN0IGJlIHVzZWQgd2hpbGUgcmVjb2duaXppbmcgdGhlIGdyYW1tYXIs
IG5vdCBhbnl0aGluZyBlbHNlLiAgUG9pbnRlcnMKLS8vIGNvdWxkIGJlIHVzZWQsIGJ1dCBhbHNv
IHRyeWluZyB0byBhdm9pZCBsb3RzIG9mIG1lbW9yeSBtYW5hZ2VtZW50IG92ZXJoZWFkLgotLy8K
LS8vIE5vdCBhcyBiYWQgYXMgaXQgbG9va3MsIHRoZXJlIGlzIG5vIGFjdHVhbCBhc3N1bXB0aW9u
IHRoYXQgdGhlIGZpZWxkcwotLy8gbWF0Y2ggdXAgb3IgYXJlIG5hbWUgdGhlIHNhbWUgb3IgYW55
dGhpbmcgbGlrZSB0aGF0LgotLy8KLXN0cnVjdCBUUHVibGljVHlwZQorLy8gVFR5cGVTcGVjaWZp
ZXJOb25BcnJheSBzdG9yZXMgYWxsIG9mIHRoZSBuZWNlc3NhcnkgZmllbGRzIGZvciB0eXBlX3Nw
ZWNpZmllcl9ub25hcnJheSBmcm9tIHRoZQorLy8gZ3JhbW1hcgorc3RydWN0IFRUeXBlU3BlY2lm
aWVyTm9uQXJyYXkKIHsKICAgICBUQmFzaWNUeXBlIHR5cGU7Ci0gICAgVExheW91dFF1YWxpZmll
ciBsYXlvdXRRdWFsaWZpZXI7Ci0gICAgVFF1YWxpZmllciBxdWFsaWZpZXI7Ci0gICAgYm9vbCBp
bnZhcmlhbnQ7Ci0gICAgVFByZWNpc2lvbiBwcmVjaXNpb247CiAgICAgdW5zaWduZWQgY2hhciBw
cmltYXJ5U2l6ZTsgICAgICAgICAgLy8gc2l6ZSBvZiB2ZWN0b3Igb3IgY29scyBvZiBtYXRyaXgK
ICAgICB1bnNpZ25lZCBjaGFyIHNlY29uZGFyeVNpemU7ICAgICAgICAvLyByb3dzIG9mIG1hdHJp
eAotICAgIGJvb2wgYXJyYXk7Ci0gICAgaW50IGFycmF5U2l6ZTsKICAgICBUVHlwZSAqdXNlckRl
ZjsKICAgICBUU291cmNlTG9jIGxpbmU7CiAKICAgICAvLyB0cnVlIGlmIHRoZSB0eXBlIHdhcyBk
ZWZpbmVkIGJ5IGEgc3RydWN0IHNwZWNpZmllciByYXRoZXIgdGhhbiBhIHJlZmVyZW5jZSB0byBh
IHR5cGUgbmFtZS4KICAgICBib29sIGlzU3RydWN0U3BlY2lmaWVyOwogCi0gICAgdm9pZCBzZXRC
YXNpYyhUQmFzaWNUeXBlIGJ0LCBUUXVhbGlmaWVyIHEsIGNvbnN0IFRTb3VyY2VMb2MgJmxuKQor
ICAgIHZvaWQgaW5pdGlhbGl6ZShUQmFzaWNUeXBlIGJ0LCBjb25zdCBUU291cmNlTG9jICZsbikK
ICAgICB7CiAgICAgICAgIHR5cGUgPSBidDsKLSAgICAgICAgbGF5b3V0UXVhbGlmaWVyID0gVExh
eW91dFF1YWxpZmllcjo6Y3JlYXRlKCk7Ci0gICAgICAgIHF1YWxpZmllciA9IHE7Ci0gICAgICAg
IGludmFyaWFudCA9IGZhbHNlOwotICAgICAgICBwcmVjaXNpb24gPSBFYnBVbmRlZmluZWQ7CiAg
ICAgICAgIHByaW1hcnlTaXplID0gMTsKICAgICAgICAgc2Vjb25kYXJ5U2l6ZSA9IDE7Ci0gICAg
ICAgIGFycmF5ID0gZmFsc2U7Ci0gICAgICAgIGFycmF5U2l6ZSA9IDA7Ci0gICAgICAgIHVzZXJE
ZWYgPSAwOworICAgICAgICB1c2VyRGVmICAgICAgICAgICA9IG51bGxwdHI7CiAgICAgICAgIGxp
bmUgPSBsbjsKICAgICAgICAgaXNTdHJ1Y3RTcGVjaWZpZXIgPSBmYWxzZTsKICAgICB9CkBAIC02
MjQsNzggKzYxNiw5OSBAQCBzdHJ1Y3QgVFB1YmxpY1R5cGUKICAgICAgICAgcHJpbWFyeVNpemUg
PSBzaXplOwogICAgIH0KIAotICAgIHZvaWQgc2V0TWF0cml4KHVuc2lnbmVkIGNoYXIgYywgdW5z
aWduZWQgY2hhciByKQorICAgIHZvaWQgc2V0TWF0cml4KHVuc2lnbmVkIGNoYXIgY29sdW1ucywg
dW5zaWduZWQgY2hhciByb3dzKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGMgPiAxICYmIHIgPiAx
ICYmIGMgPD0gNCAmJiByIDw9IDQpOwotICAgICAgICBwcmltYXJ5U2l6ZSA9IGM7Ci0gICAgICAg
IHNlY29uZGFyeVNpemUgPSByOworICAgICAgICBBU1NFUlQoY29sdW1ucyA+IDEgJiYgcm93cyA+
IDEgJiYgY29sdW1ucyA8PSA0ICYmIHJvd3MgPD0gNCk7CisgICAgICAgIHByaW1hcnlTaXplICAg
PSBjb2x1bW5zOworICAgICAgICBzZWNvbmRhcnlTaXplID0gcm93czsKICAgICB9CiAKLSAgICBi
b29sIGlzVW5zaXplZEFycmF5KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBhcnJheSAm
JiBhcnJheVNpemUgPT0gMDsKLSAgICB9Ci0gICAgdm9pZCBzZXRBcnJheVNpemUoaW50IHMpCisg
ICAgYm9vbCBpc01hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIHByaW1hcnlTaXplID4gMSAmJiBzZWNv
bmRhcnlTaXplID4gMTsgfQorCisgICAgYm9vbCBpc1ZlY3RvcigpIGNvbnN0IHsgcmV0dXJuIHBy
aW1hcnlTaXplID4gMSAmJiBzZWNvbmRhcnlTaXplID09IDE7IH0KK307CisKKy8vCisvLyBUaGlz
IGlzIGEgd29ya2Fyb3VuZCBmb3IgYSBwcm9ibGVtIHdpdGggdGhlIHlhY2Mgc3RhY2ssICBJdCBj
YW4ndCBoYXZlCisvLyB0eXBlcyB0aGF0IGl0IHRoaW5rcyBoYXZlIG5vbi10cml2aWFsIGNvbnN0
cnVjdG9ycy4gIEl0IHNob3VsZAorLy8ganVzdCBiZSB1c2VkIHdoaWxlIHJlY29nbml6aW5nIHRo
ZSBncmFtbWFyLCBub3QgYW55dGhpbmcgZWxzZS4gIFBvaW50ZXJzCisvLyBjb3VsZCBiZSB1c2Vk
LCBidXQgYWxzbyB0cnlpbmcgdG8gYXZvaWQgbG90cyBvZiBtZW1vcnkgbWFuYWdlbWVudCBvdmVy
aGVhZC4KKy8vCisvLyBOb3QgYXMgYmFkIGFzIGl0IGxvb2tzLCB0aGVyZSBpcyBubyBhY3R1YWwg
YXNzdW1wdGlvbiB0aGF0IHRoZSBmaWVsZHMKKy8vIG1hdGNoIHVwIG9yIGFyZSBuYW1lIHRoZSBz
YW1lIG9yIGFueXRoaW5nIGxpa2UgdGhhdC4KKy8vCitzdHJ1Y3QgVFB1YmxpY1R5cGUKK3sKKyAg
ICBUVHlwZVNwZWNpZmllck5vbkFycmF5IHR5cGVTcGVjaWZpZXJOb25BcnJheTsKKyAgICBUTGF5
b3V0UXVhbGlmaWVyIGxheW91dFF1YWxpZmllcjsKKyAgICBUUXVhbGlmaWVyIHF1YWxpZmllcjsK
KyAgICBib29sIGludmFyaWFudDsKKyAgICBUUHJlY2lzaW9uIHByZWNpc2lvbjsKKyAgICBib29s
IGFycmF5OworICAgIGludCBhcnJheVNpemU7CisKKyAgICB2b2lkIGluaXRpYWxpemUoY29uc3Qg
VFR5cGVTcGVjaWZpZXJOb25BcnJheSAmdHlwZVNwZWNpZmllciwgVFF1YWxpZmllciBxKQogICAg
IHsKLSAgICAgICAgYXJyYXkgPSB0cnVlOwotICAgICAgICBhcnJheVNpemUgPSBzOworICAgICAg
ICB0eXBlU3BlY2lmaWVyTm9uQXJyYXkgPSB0eXBlU3BlY2lmaWVyOworICAgICAgICBsYXlvdXRR
dWFsaWZpZXIgICAgICAgPSBUTGF5b3V0UXVhbGlmaWVyOjpjcmVhdGUoKTsKKyAgICAgICAgcXVh
bGlmaWVyICAgICAgICAgICAgID0gcTsKKyAgICAgICAgaW52YXJpYW50ICAgICAgICAgICAgID0g
ZmFsc2U7CisgICAgICAgIHByZWNpc2lvbiAgICAgICAgICAgICA9IEVicFVuZGVmaW5lZDsKKyAg
ICAgICAgYXJyYXkgICAgICAgICAgICAgICAgID0gZmFsc2U7CisgICAgICAgIGFycmF5U2l6ZSAg
ICAgICAgICAgICA9IDA7CiAgICAgfQotICAgIHZvaWQgY2xlYXJBcnJheW5lc3MoKQorCisgICAg
VEJhc2ljVHlwZSBnZXRCYXNpY1R5cGUoKSBjb25zdCB7IHJldHVybiB0eXBlU3BlY2lmaWVyTm9u
QXJyYXkudHlwZTsgfQorICAgIHZvaWQgc2V0QmFzaWNUeXBlKFRCYXNpY1R5cGUgYmFzaWNUeXBl
KSB7IHR5cGVTcGVjaWZpZXJOb25BcnJheS50eXBlID0gYmFzaWNUeXBlOyB9CisKKyAgICB1bnNp
Z25lZCBjaGFyIGdldFByaW1hcnlTaXplKCkgY29uc3QgeyByZXR1cm4gdHlwZVNwZWNpZmllck5v
bkFycmF5LnByaW1hcnlTaXplOyB9CisgICAgdW5zaWduZWQgY2hhciBnZXRTZWNvbmRhcnlTaXpl
KCkgY29uc3QgeyByZXR1cm4gdHlwZVNwZWNpZmllck5vbkFycmF5LnNlY29uZGFyeVNpemU7IH0K
KyAgICB2b2lkIGluaXRpYWxpemVTaXplRm9yU2NhbGFyVHlwZXMoKQogICAgIHsKLSAgICAgICAg
YXJyYXkgPSBmYWxzZTsKLSAgICAgICAgYXJyYXlTaXplID0gMDsKKyAgICAgICAgdHlwZVNwZWNp
Zmllck5vbkFycmF5LnByaW1hcnlTaXplICAgPSAxOworICAgICAgICB0eXBlU3BlY2lmaWVyTm9u
QXJyYXkuc2Vjb25kYXJ5U2l6ZSA9IDE7CiAgICAgfQogCisgICAgY29uc3QgVFR5cGUgKmdldFVz
ZXJEZWYoKSBjb25zdCB7IHJldHVybiB0eXBlU3BlY2lmaWVyTm9uQXJyYXkudXNlckRlZjsgfQor
ICAgIGNvbnN0IFRTb3VyY2VMb2MgJmdldExpbmUoKSBjb25zdCB7IHJldHVybiB0eXBlU3BlY2lm
aWVyTm9uQXJyYXkubGluZTsgfQorCisgICAgYm9vbCBpc1N0cnVjdFNwZWNpZmllcigpIGNvbnN0
IHsgcmV0dXJuIHR5cGVTcGVjaWZpZXJOb25BcnJheS5pc1N0cnVjdFNwZWNpZmllcjsgfQorCiAg
ICAgYm9vbCBpc1N0cnVjdHVyZUNvbnRhaW5pbmdBcnJheXMoKSBjb25zdAogICAgIHsKLSAgICAg
ICAgaWYgKCF1c2VyRGVmKQorICAgICAgICBpZiAoIXR5cGVTcGVjaWZpZXJOb25BcnJheS51c2Vy
RGVmKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAot
ICAgICAgICByZXR1cm4gdXNlckRlZi0+aXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCk7Cisg
ICAgICAgIHJldHVybiB0eXBlU3BlY2lmaWVyTm9uQXJyYXkudXNlckRlZi0+aXNTdHJ1Y3R1cmVD
b250YWluaW5nQXJyYXlzKCk7CiAgICAgfQogCiAgICAgYm9vbCBpc1N0cnVjdHVyZUNvbnRhaW5p
bmdUeXBlKFRCYXNpY1R5cGUgdCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmICghdXNlckRlZikK
KyAgICAgICAgaWYgKCF0eXBlU3BlY2lmaWVyTm9uQXJyYXkudXNlckRlZikKICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIHVz
ZXJEZWYtPmlzU3RydWN0dXJlQ29udGFpbmluZ1R5cGUodCk7Ci0gICAgfQotCi0gICAgYm9vbCBp
c01hdHJpeCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gcHJpbWFyeVNpemUgPiAxICYm
IHNlY29uZGFyeVNpemUgPiAxOwotICAgIH0KLQotICAgIGJvb2wgaXNWZWN0b3IoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHByaW1hcnlTaXplID4gMSAmJiBzZWNvbmRhcnlTaXplID09
IDE7Ci0gICAgfQotCi0gICAgaW50IGdldENvbHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNT
RVJUKGlzTWF0cml4KCkpOwotICAgICAgICByZXR1cm4gcHJpbWFyeVNpemU7CisgICAgICAgIHJl
dHVybiB0eXBlU3BlY2lmaWVyTm9uQXJyYXkudXNlckRlZi0+aXNTdHJ1Y3R1cmVDb250YWluaW5n
VHlwZSh0KTsKICAgICB9CiAKLSAgICBpbnQgZ2V0Um93cygpIGNvbnN0CisgICAgYm9vbCBpc1Vu
c2l6ZWRBcnJheSgpIGNvbnN0IHsgcmV0dXJuIGFycmF5ICYmIGFycmF5U2l6ZSA9PSAwOyB9Cisg
ICAgdm9pZCBzZXRBcnJheVNpemUoaW50IHMpCiAgICAgewotICAgICAgICBBU1NFUlQoaXNNYXRy
aXgoKSk7Ci0gICAgICAgIHJldHVybiBzZWNvbmRhcnlTaXplOworICAgICAgICBhcnJheSAgICAg
PSB0cnVlOworICAgICAgICBhcnJheVNpemUgPSBzOwogICAgIH0KLQotICAgIGludCBnZXROb21p
bmFsU2l6ZSgpIGNvbnN0CisgICAgdm9pZCBjbGVhckFycmF5bmVzcygpCiAgICAgewotICAgICAg
ICByZXR1cm4gcHJpbWFyeVNpemU7CisgICAgICAgIGFycmF5ICAgICA9IGZhbHNlOworICAgICAg
ICBhcnJheVNpemUgPSAwOwogICAgIH0KIAogICAgIGJvb2wgaXNBZ2dyZWdhdGUoKSBjb25zdAog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFycmF5IHx8IGlzTWF0cml4KCkgfHwgaXNWZWN0b3IoKTsK
KyAgICAgICAgcmV0dXJuIGFycmF5IHx8IHR5cGVTcGVjaWZpZXJOb25BcnJheS5pc01hdHJpeCgp
IHx8IHR5cGVTcGVjaWZpZXJOb25BcnJheS5pc1ZlY3RvcigpOwogICAgIH0KIH07CiAKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1VuZm9sZFNo
b3J0Q2lyY3VpdEFTVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVW5mb2xkU2hvcnRDaXJjdWl0QVNULmNwcAkocmV2aXNp
b24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvVW5mb2xkU2hvcnRDaXJjdWl0QVNULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAsMzIg
KzEwLDMwIEBAIG5hbWVzcGFjZQogewogCiAvLyAieCB8fCB5IiBpcyBlcXVpdmFsZW50IHRvICJ4
ID8gdHJ1ZSA6IHkiLgotVEludGVybVNlbGVjdGlvbiAqVW5mb2xkT1IoVEludGVybVR5cGVkICp4
LCBUSW50ZXJtVHlwZWQgKnkpCitUSW50ZXJtVGVybmFyeSAqVW5mb2xkT1IoVEludGVybVR5cGVk
ICp4LCBUSW50ZXJtVHlwZWQgKnkpCiB7Ci0gICAgY29uc3QgVFR5cGUgYm9vbFR5cGUoRWJ0Qm9v
bCwgRWJwVW5kZWZpbmVkKTsKICAgICBUQ29uc3RhbnRVbmlvbiAqdSA9IG5ldyBUQ29uc3RhbnRV
bmlvbjsKICAgICB1LT5zZXRCQ29uc3QodHJ1ZSk7CiAgICAgVEludGVybUNvbnN0YW50VW5pb24g
KnRydWVOb2RlID0gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9uKAogICAgICAgICB1LCBUVHlwZShF
YnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0LCAxKSk7Ci0gICAgcmV0dXJuIG5ldyBUSW50
ZXJtU2VsZWN0aW9uKHgsIHRydWVOb2RlLCB5LCBib29sVHlwZSk7CisgICAgcmV0dXJuIG5ldyBU
SW50ZXJtVGVybmFyeSh4LCB0cnVlTm9kZSwgeSk7CiB9CiAKIC8vICJ4ICYmIHkiIGlzIGVxdWl2
YWxlbnQgdG8gInggPyB5IDogZmFsc2UiLgotVEludGVybVNlbGVjdGlvbiAqVW5mb2xkQU5EKFRJ
bnRlcm1UeXBlZCAqeCwgVEludGVybVR5cGVkICp5KQorVEludGVybVRlcm5hcnkgKlVuZm9sZEFO
RChUSW50ZXJtVHlwZWQgKngsIFRJbnRlcm1UeXBlZCAqeSkKIHsKLSAgICBjb25zdCBUVHlwZSBi
b29sVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQpOwogICAgIFRDb25zdGFudFVuaW9uICp1ID0g
bmV3IFRDb25zdGFudFVuaW9uOwogICAgIHUtPnNldEJDb25zdChmYWxzZSk7CiAgICAgVEludGVy
bUNvbnN0YW50VW5pb24gKmZhbHNlTm9kZSA9IG5ldyBUSW50ZXJtQ29uc3RhbnRVbmlvbigKICAg
ICAgICAgdSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCwgMSkpOwotICAg
IHJldHVybiBuZXcgVEludGVybVNlbGVjdGlvbih4LCB5LCBmYWxzZU5vZGUsIGJvb2xUeXBlKTsK
KyAgICByZXR1cm4gbmV3IFRJbnRlcm1UZXJuYXJ5KHgsIHksIGZhbHNlTm9kZSk7CiB9CiAKIH0g
IC8vIG5hbWVzcGFjZSBhbm9ueW1vdXMKIAogYm9vbCBVbmZvbGRTaG9ydENpcmN1aXRBU1Q6OnZp
c2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5ICpub2RlKQogewotICAgIFRJbnRl
cm1TZWxlY3Rpb24gKnJlcGxhY2VtZW50ID0gTlVMTDsKKyAgICBUSW50ZXJtVGVybmFyeSAqcmVw
bGFjZW1lbnQgPSBudWxscHRyOwogCiAgICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQogICAgIHsK
QEAgLTUwLDggKzQ4LDcgQEAgYm9vbCBVbmZvbGRTaG9ydENpcmN1aXRBU1Q6OnZpc2l0QmluYXJ5
KAogICAgIH0KICAgICBpZiAocmVwbGFjZW1lbnQpCiAgICAgewotICAgICAgICBtUmVwbGFjZW1l
bnRzLnB1c2hfYmFjaygKLSAgICAgICAgICAgIE5vZGVVcGRhdGVFbnRyeShnZXRQYXJlbnROb2Rl
KCksIG5vZGUsIHJlcGxhY2VtZW50LCBmYWxzZSkpOworICAgICAgICBxdWV1ZVJlcGxhY2VtZW50
KG5vZGUsIHJlcGxhY2VtZW50LCBPcmlnaW5hbE5vZGU6OklTX0RST1BQRUQpOwogICAgIH0KICAg
ICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1VuZm9sZFNob3J0Q2lyY3VpdFRvSWYuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1VuZm9sZFNo
b3J0Q2lyY3VpdFRvSWYuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9VbmZvbGRTaG9ydENpcmN1aXRUb0lmLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTEsNiArMTEsNyBAQAogI2luY2x1ZGUgImNvbXBpbGVyL3Ry
YW5zbGF0b3IvVW5mb2xkU2hvcnRDaXJjdWl0VG9JZi5oIgogCiAjaW5jbHVkZSAiY29tcGlsZXIv
dHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9J
bnRlcm1Ob2RlUGF0dGVybk1hdGNoZXIuaCIKIAogbmFtZXNwYWNlCiB7CkBAIC0yMiw0MSArMjMs
MjMgQEAgY2xhc3MgVW5mb2xkU2hvcnRDaXJjdWl0VHJhdmVyc2VyIDogcHVibAogICAgIFVuZm9s
ZFNob3J0Q2lyY3VpdFRyYXZlcnNlcigpOwogCiAgICAgYm9vbCB2aXNpdEJpbmFyeShWaXNpdCB2
aXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkgb3ZlcnJpZGU7Ci0gICAgYm9vbCB2aXNpdEFnZ3Jl
Z2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCB2aXNpdFNlbGVjdGlvbihWaXNpdCB2aXNpdCwgVEludGVybVNlbGVjdGlvbiAqbm9kZSkg
b3ZlcnJpZGU7Ci0gICAgYm9vbCB2aXNpdExvb3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29wICpu
b2RlKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0VGVybmFyeShWaXNpdCB2aXNpdCwgVEludGVy
bVRlcm5hcnkgKm5vZGUpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBuZXh0SXRlcmF0aW9uKCk7CiAg
ICAgYm9vbCBmb3VuZFNob3J0Q2lyY3VpdCgpIGNvbnN0IHsgcmV0dXJuIG1Gb3VuZFNob3J0Q2ly
Y3VpdDsgfQogCiAgIHByb3RlY3RlZDoKLSAgICAvLyBDaGVjayBpZiB0aGUgdHJhdmVyc2FsIGlz
IGluc2lkZSBhIGxvb3AgY29uZGl0aW9uIG9yIGV4cHJlc3Npb24sIGluIHdoaWNoIGNhc2UgdGhl
IHVuZm9sZGVkCi0gICAgLy8gZXhwcmVzc2lvbiBuZWVkcyB0byBiZSBjb3BpZWQgaW5zaWRlIHRo
ZSBsb29wLiBSZXR1cm5zIHRydWUgaWYgdGhlIGNvcHlpbmcgaXMgZG9uZSwgaW4gd2hpY2gKLSAg
ICAvLyBjYXNlIG5vIGZ1cnRoZXIgdW5mb2xkaW5nIHNob3VsZCBiZSBkb25lIG9uIHRoZSBzYW1l
IHRyYXZlcnNhbC4KLSAgICAvLyBUaGUgcGFyYW1ldGVycyBhcmUgdGhlIG5vZGUgdGhhdCB3aWxs
IGJlIHVuZm9sZGVkIHRvIG11bHRpcGxlIHN0YXRlbWVudHMgYW5kIHNvIGNhbid0IHJlbWFpbgot
ICAgIC8vIGluc2lkZSBhIGxvb3AgY29uZGl0aW9uLCBhbmQgaXRzIHBhcmVudC4KLSAgICBib29s
IGNvcHlMb29wQ29uZGl0aW9uT3JFeHByZXNzaW9uKFRJbnRlcm1Ob2RlICpwYXJlbnQsIFRJbnRl
cm1UeXBlZCAqbm9kZSk7Ci0KICAgICAvLyBNYXJrZWQgdG8gdHJ1ZSBvbmNlIGFuIG9wZXJhdGlv
biB0aGF0IG5lZWRzIHRvIGJlIHVuZm9sZGVkIGhhcyBiZWVuIGZvdW5kLgogICAgIC8vIEFmdGVy
IHRoYXQsIG5vIG1vcmUgdW5mb2xkaW5nIGlzIHBlcmZvcm1lZCBvbiB0aGF0IHRyYXZlcnNhbC4K
ICAgICBib29sIG1Gb3VuZFNob3J0Q2lyY3VpdDsKIAotICAgIC8vIFNldCB0byB0aGUgbG9vcCBu
b2RlIHdoaWxlIGEgbG9vcCBjb25kaXRpb24gb3IgZXhwcmVzc2lvbiBpcyBiZWluZyB0cmF2ZXJz
ZWQuCi0gICAgVEludGVybUxvb3AgKm1QYXJlbnRMb29wOwotICAgIC8vIFBhcmVudCBvZiB0aGUg
bG9vcCBub2RlIHdoaWxlIGEgbG9vcCBjb25kaXRpb24gb3IgZXhwcmVzc2lvbiBpcyBiZWluZyB0
cmF2ZXJzZWQuCi0gICAgVEludGVybU5vZGUgKm1Mb29wUGFyZW50OwotCi0gICAgYm9vbCBtSW5M
b29wQ29uZGl0aW9uOwotICAgIGJvb2wgbUluTG9vcEV4cHJlc3Npb247CisgICAgSW50ZXJtTm9k
ZVBhdHRlcm5NYXRjaGVyIG1QYXR0ZXJuVG9VbmZvbGRNYXRjaGVyOwogfTsKIAogVW5mb2xkU2hv
cnRDaXJjdWl0VHJhdmVyc2VyOjpVbmZvbGRTaG9ydENpcmN1aXRUcmF2ZXJzZXIoKQogICAgIDog
VEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgdHJ1ZSksCiAgICAgICBtRm91bmRTaG9ydENp
cmN1aXQoZmFsc2UpLAotICAgICAgbVBhcmVudExvb3AobnVsbHB0ciksCi0gICAgICBtTG9vcFBh
cmVudChudWxscHRyKSwKLSAgICAgIG1Jbkxvb3BDb25kaXRpb24oZmFsc2UpLAotICAgICAgbUlu
TG9vcEV4cHJlc3Npb24oZmFsc2UpCisgICAgICBtUGF0dGVyblRvVW5mb2xkTWF0Y2hlcihJbnRl
cm1Ob2RlUGF0dGVybk1hdGNoZXI6OmtVbmZvbGRlZFNob3J0Q2lyY3VpdEV4cHJlc3Npb24pCiB7
CiB9CiAKQEAgLTY0LDI4MiArNDcsMTE1IEBAIGJvb2wgVW5mb2xkU2hvcnRDaXJjdWl0VHJhdmVy
c2VyOjp2aXNpdEIKIHsKICAgICBpZiAobUZvdW5kU2hvcnRDaXJjdWl0KQogICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAodmlzaXQgIT0gUHJlVmlzaXQpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgaWYgKCFtUGF0dGVyblRvVW5mb2xkTWF0Y2hlci5tYXRjaChub2RlLCBnZXRQ
YXJlbnROb2RlKCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIC8vIElmIG91ciByaWdo
dCBub2RlIGRvZXNuJ3QgaGF2ZSBzaWRlIGVmZmVjdHMsIHdlIGtub3cgd2UgZG9uJ3QgbmVlZCB0
byB1bmZvbGQgdGhpcwogICAgIC8vIGV4cHJlc3Npb246IHRoZXJlIHdpbGwgYmUgbm8gc2hvcnQt
Y2lyY3VpdGluZyBzaWRlIGVmZmVjdHMgdG8gYXZvaWQKICAgICAvLyAobm90ZTogdW5mb2xkaW5n
IGRvZXNuJ3QgZGVwZW5kIG9uIHRoZSBsZWZ0IG5vZGUgLS0gaXQgd2lsbCBhbHdheXMgYmUgZXZh
bHVhdGVkKQotICAgIGlmICghbm9kZS0+Z2V0UmlnaHQoKS0+aGFzU2lkZUVmZmVjdHMoKSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KKyAgICBBU1NFUlQobm9kZS0+Z2V0Umln
aHQoKS0+aGFzU2lkZUVmZmVjdHMoKSk7CisKKyAgICBtRm91bmRTaG9ydENpcmN1aXQgPSB0cnVl
OwogCiAgICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQogICAgIHsKICAgICAgIGNhc2UgRU9wTG9n
aWNhbE9yOgotICAgICAgICBtRm91bmRTaG9ydENpcmN1aXQgPSB0cnVlOwotICAgICAgICBpZiAo
IWNvcHlMb29wQ29uZGl0aW9uT3JFeHByZXNzaW9uKGdldFBhcmVudE5vZGUoKSwgbm9kZSkpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIC8vICJ4IHx8IHkiIGlzIGVxdWl2YWxlbnQgdG8gInggPyB0
cnVlIDogeSIsIHdoaWNoIHVuZm9sZHMgdG8gImJvb2wgczsgaWYoeCkgcyA9IHRydWU7Ci0gICAg
ICAgICAgICAvLyBlbHNlIHMgPSB5OyIsCi0gICAgICAgICAgICAvLyBhbmQgdGhlbiBmdXJ0aGVy
IHNpbXBsaWZpZXMgZG93biB0byAiYm9vbCBzID0geDsgaWYoIXMpIHMgPSB5OyIuCi0KLSAgICAg
ICAgICAgIFRJbnRlcm1TZXF1ZW5jZSBpbnNlcnRpb25zOwotICAgICAgICAgICAgVFR5cGUgYm9v
bFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFUZW1wb3JhcnkpOwotCi0gICAgICAgICAg
ICBBU1NFUlQobm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkgPT0gYm9vbFR5cGUpOwotICAgICAg
ICAgICAgaW5zZXJ0aW9ucy5wdXNoX2JhY2soY3JlYXRlVGVtcEluaXREZWNsYXJhdGlvbihub2Rl
LT5nZXRMZWZ0KCkpKTsKLQotICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqYXNzaWduUmln
aHRCbG9jayA9IG5ldyBUSW50ZXJtQWdncmVnYXRlKEVPcFNlcXVlbmNlKTsKLSAgICAgICAgICAg
IEFTU0VSVChub2RlLT5nZXRSaWdodCgpLT5nZXRUeXBlKCkgPT0gYm9vbFR5cGUpOwotICAgICAg
ICAgICAgYXNzaWduUmlnaHRCbG9jay0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKGNyZWF0ZVRl
bXBBc3NpZ25tZW50KG5vZGUtPmdldFJpZ2h0KCkpKTsKLQotICAgICAgICAgICAgVEludGVybVVu
YXJ5ICpub3RUZW1wU3ltYm9sID0gbmV3IFRJbnRlcm1VbmFyeShFT3BMb2dpY2FsTm90LCBib29s
VHlwZSk7Ci0gICAgICAgICAgICBub3RUZW1wU3ltYm9sLT5zZXRPcGVyYW5kKGNyZWF0ZVRlbXBT
eW1ib2woYm9vbFR5cGUpKTsKLSAgICAgICAgICAgIFRJbnRlcm1TZWxlY3Rpb24gKmlmTm9kZSA9
IG5ldyBUSW50ZXJtU2VsZWN0aW9uKG5vdFRlbXBTeW1ib2wsIGFzc2lnblJpZ2h0QmxvY2ssIG51
bGxwdHIpOwotICAgICAgICAgICAgaW5zZXJ0aW9ucy5wdXNoX2JhY2soaWZOb2RlKTsKLQotICAg
ICAgICAgICAgaW5zZXJ0U3RhdGVtZW50c0luUGFyZW50QmxvY2soaW5zZXJ0aW9ucyk7Ci0KLSAg
ICAgICAgICAgIE5vZGVVcGRhdGVFbnRyeSByZXBsYWNlVmFyaWFibGUoZ2V0UGFyZW50Tm9kZSgp
LCBub2RlLCBjcmVhdGVUZW1wU3ltYm9sKGJvb2xUeXBlKSwgZmFsc2UpOwotICAgICAgICAgICAg
bVJlcGxhY2VtZW50cy5wdXNoX2JhY2socmVwbGFjZVZhcmlhYmxlKTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICB7CisgICAgICAgICAgLy8gInggfHwgeSIgaXMgZXF1
aXZhbGVudCB0byAieCA/IHRydWUgOiB5Iiwgd2hpY2ggdW5mb2xkcyB0byAiYm9vbCBzOyBpZih4
KSBzID0gdHJ1ZTsKKyAgICAgICAgICAvLyBlbHNlIHMgPSB5OyIsCisgICAgICAgICAgLy8gYW5k
IHRoZW4gZnVydGhlciBzaW1wbGlmaWVzIGRvd24gdG8gImJvb2wgcyA9IHg7IGlmKCFzKSBzID0g
eTsiLgorCisgICAgICAgICAgVEludGVybVNlcXVlbmNlIGluc2VydGlvbnM7CisgICAgICAgICAg
VFR5cGUgYm9vbFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFUZW1wb3JhcnkpOworCisg
ICAgICAgICAgQVNTRVJUKG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpID09IGJvb2xUeXBlKTsK
KyAgICAgICAgICBpbnNlcnRpb25zLnB1c2hfYmFjayhjcmVhdGVUZW1wSW5pdERlY2xhcmF0aW9u
KG5vZGUtPmdldExlZnQoKSkpOworCisgICAgICAgICAgVEludGVybUJsb2NrICphc3NpZ25SaWdo
dEJsb2NrID0gbmV3IFRJbnRlcm1CbG9jaygpOworICAgICAgICAgIEFTU0VSVChub2RlLT5nZXRS
aWdodCgpLT5nZXRUeXBlKCkgPT0gYm9vbFR5cGUpOworICAgICAgICAgIGFzc2lnblJpZ2h0Qmxv
Y2stPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhjcmVhdGVUZW1wQXNzaWdubWVudChub2RlLT5n
ZXRSaWdodCgpKSk7CisKKyAgICAgICAgICBUSW50ZXJtVW5hcnkgKm5vdFRlbXBTeW1ib2wgPSBu
ZXcgVEludGVybVVuYXJ5KEVPcExvZ2ljYWxOb3QsIGNyZWF0ZVRlbXBTeW1ib2woYm9vbFR5cGUp
KTsKKyAgICAgICAgICBUSW50ZXJtSWZFbHNlICppZk5vZGUgICAgICAgPSBuZXcgVEludGVybUlm
RWxzZShub3RUZW1wU3ltYm9sLCBhc3NpZ25SaWdodEJsb2NrLCBudWxscHRyKTsKKyAgICAgICAg
ICBpbnNlcnRpb25zLnB1c2hfYmFjayhpZk5vZGUpOworCisgICAgICAgICAgaW5zZXJ0U3RhdGVt
ZW50c0luUGFyZW50QmxvY2soaW5zZXJ0aW9ucyk7CisKKyAgICAgICAgICBxdWV1ZVJlcGxhY2Vt
ZW50KG5vZGUsIGNyZWF0ZVRlbXBTeW1ib2woYm9vbFR5cGUpLCBPcmlnaW5hbE5vZGU6OklTX0RS
T1BQRUQpOworICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KICAgICAgIGNhc2UgRU9w
TG9naWNhbEFuZDoKLSAgICAgICAgbUZvdW5kU2hvcnRDaXJjdWl0ID0gdHJ1ZTsKLSAgICAgICAg
aWYgKCFjb3B5TG9vcENvbmRpdGlvbk9yRXhwcmVzc2lvbihnZXRQYXJlbnROb2RlKCksIG5vZGUp
KQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyAieCAmJiB5IiBpcyBlcXVpdmFsZW50IHRvICJ4
ID8geSA6IGZhbHNlIiwgd2hpY2ggdW5mb2xkcyB0byAiYm9vbCBzOyBpZih4KSBzID0geTsKLSAg
ICAgICAgICAgIC8vIGVsc2UgcyA9IGZhbHNlOyIsCi0gICAgICAgICAgICAvLyBhbmQgdGhlbiBm
dXJ0aGVyIHNpbXBsaWZpZXMgZG93biB0byAiYm9vbCBzID0geDsgaWYocykgcyA9IHk7Ii4KLSAg
ICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSBpbnNlcnRpb25zOwotICAgICAgICAgICAgVFR5cGUg
Ym9vbFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFUZW1wb3JhcnkpOwotCi0gICAgICAg
ICAgICBBU1NFUlQobm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkgPT0gYm9vbFR5cGUpOwotICAg
ICAgICAgICAgaW5zZXJ0aW9ucy5wdXNoX2JhY2soY3JlYXRlVGVtcEluaXREZWNsYXJhdGlvbihu
b2RlLT5nZXRMZWZ0KCkpKTsKLQotICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqYXNzaWdu
UmlnaHRCbG9jayA9IG5ldyBUSW50ZXJtQWdncmVnYXRlKEVPcFNlcXVlbmNlKTsKLSAgICAgICAg
ICAgIEFTU0VSVChub2RlLT5nZXRSaWdodCgpLT5nZXRUeXBlKCkgPT0gYm9vbFR5cGUpOwotICAg
ICAgICAgICAgYXNzaWduUmlnaHRCbG9jay0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKGNyZWF0
ZVRlbXBBc3NpZ25tZW50KG5vZGUtPmdldFJpZ2h0KCkpKTsKLQotICAgICAgICAgICAgVEludGVy
bVNlbGVjdGlvbiAqaWZOb2RlID0gbmV3IFRJbnRlcm1TZWxlY3Rpb24oY3JlYXRlVGVtcFN5bWJv
bChib29sVHlwZSksIGFzc2lnblJpZ2h0QmxvY2ssIG51bGxwdHIpOwotICAgICAgICAgICAgaW5z
ZXJ0aW9ucy5wdXNoX2JhY2soaWZOb2RlKTsKLQotICAgICAgICAgICAgaW5zZXJ0U3RhdGVtZW50
c0luUGFyZW50QmxvY2soaW5zZXJ0aW9ucyk7Ci0KLSAgICAgICAgICAgIE5vZGVVcGRhdGVFbnRy
eSByZXBsYWNlVmFyaWFibGUoZ2V0UGFyZW50Tm9kZSgpLCBub2RlLCBjcmVhdGVUZW1wU3ltYm9s
KGJvb2xUeXBlKSwgZmFsc2UpOwotICAgICAgICAgICAgbVJlcGxhY2VtZW50cy5wdXNoX2JhY2so
cmVwbGFjZVZhcmlhYmxlKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICB7CisgICAgICAgICAgLy8gInggJiYgeSIgaXMgZXF1aXZhbGVudCB0byAieCA/IHkgOiBmYWxz
ZSIsIHdoaWNoIHVuZm9sZHMgdG8gImJvb2wgczsgaWYoeCkgcyA9IHk7CisgICAgICAgICAgLy8g
ZWxzZSBzID0gZmFsc2U7IiwKKyAgICAgICAgICAvLyBhbmQgdGhlbiBmdXJ0aGVyIHNpbXBsaWZp
ZXMgZG93biB0byAiYm9vbCBzID0geDsgaWYocykgcyA9IHk7Ii4KKyAgICAgICAgICBUSW50ZXJt
U2VxdWVuY2UgaW5zZXJ0aW9uczsKKyAgICAgICAgICBUVHlwZSBib29sVHlwZShFYnRCb29sLCBF
YnBVbmRlZmluZWQsIEV2cVRlbXBvcmFyeSk7CisKKyAgICAgICAgICBBU1NFUlQobm9kZS0+Z2V0
TGVmdCgpLT5nZXRUeXBlKCkgPT0gYm9vbFR5cGUpOworICAgICAgICAgIGluc2VydGlvbnMucHVz
aF9iYWNrKGNyZWF0ZVRlbXBJbml0RGVjbGFyYXRpb24obm9kZS0+Z2V0TGVmdCgpKSk7CisKKyAg
ICAgICAgICBUSW50ZXJtQmxvY2sgKmFzc2lnblJpZ2h0QmxvY2sgPSBuZXcgVEludGVybUJsb2Nr
KCk7CisgICAgICAgICAgQVNTRVJUKG5vZGUtPmdldFJpZ2h0KCktPmdldFR5cGUoKSA9PSBib29s
VHlwZSk7CisgICAgICAgICAgYXNzaWduUmlnaHRCbG9jay0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9i
YWNrKGNyZWF0ZVRlbXBBc3NpZ25tZW50KG5vZGUtPmdldFJpZ2h0KCkpKTsKKworICAgICAgICAg
IFRJbnRlcm1JZkVsc2UgKmlmTm9kZSA9CisgICAgICAgICAgICAgIG5ldyBUSW50ZXJtSWZFbHNl
KGNyZWF0ZVRlbXBTeW1ib2woYm9vbFR5cGUpLCBhc3NpZ25SaWdodEJsb2NrLCBudWxscHRyKTsK
KyAgICAgICAgICBpbnNlcnRpb25zLnB1c2hfYmFjayhpZk5vZGUpOworCisgICAgICAgICAgaW5z
ZXJ0U3RhdGVtZW50c0luUGFyZW50QmxvY2soaW5zZXJ0aW9ucyk7CisKKyAgICAgICAgICBxdWV1
ZVJlcGxhY2VtZW50KG5vZGUsIGNyZWF0ZVRlbXBTeW1ib2woYm9vbFR5cGUpLCBPcmlnaW5hbE5v
ZGU6OklTX0RST1BQRUQpOworICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfQogCi1ib29sIFVuZm9sZFNob3J0Q2ly
Y3VpdFRyYXZlcnNlcjo6dmlzaXRTZWxlY3Rpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1TZWxlY3Rp
b24gKm5vZGUpCitib29sIFVuZm9sZFNob3J0Q2lyY3VpdFRyYXZlcnNlcjo6dmlzaXRUZXJuYXJ5
KFZpc2l0IHZpc2l0LCBUSW50ZXJtVGVybmFyeSAqbm9kZSkKIHsKICAgICBpZiAobUZvdW5kU2hv
cnRDaXJjdWl0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBVbmZvbGQgImIgPyB4
IDogeSIgaW50byAidHlwZSBzOyBpZihiKSBzID0geDsgZWxzZSBzID0geTsiCi0gICAgaWYgKHZp
c2l0ID09IFByZVZpc2l0ICYmIG5vZGUtPnVzZXNUZXJuYXJ5T3BlcmF0b3IoKSkKLSAgICB7Ci0g
ICAgICAgIG1Gb3VuZFNob3J0Q2lyY3VpdCA9IHRydWU7Ci0gICAgICAgIGlmICghY29weUxvb3BD
b25kaXRpb25PckV4cHJlc3Npb24oZ2V0UGFyZW50Tm9kZSgpLCBub2RlKSkKLSAgICAgICAgewot
ICAgICAgICAgICAgVEludGVybVNlcXVlbmNlIGluc2VydGlvbnM7Ci0KLSAgICAgICAgICAgIFRJ
bnRlcm1TeW1ib2wgKnRlbXBTeW1ib2wgICAgICAgICA9IGNyZWF0ZVRlbXBTeW1ib2wobm9kZS0+
Z2V0VHlwZSgpKTsKLSAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnRlbXBEZWNsYXJhdGlv
biA9IG5ldyBUSW50ZXJtQWdncmVnYXRlKEVPcERlY2xhcmF0aW9uKTsKLSAgICAgICAgICAgIHRl
bXBEZWNsYXJhdGlvbi0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKHRlbXBTeW1ib2wpOwotICAg
ICAgICAgICAgaW5zZXJ0aW9ucy5wdXNoX2JhY2sodGVtcERlY2xhcmF0aW9uKTsKLQotICAgICAg
ICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqdHJ1ZUJsb2NrID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUo
RU9wU2VxdWVuY2UpOwotICAgICAgICAgICAgVEludGVybUJpbmFyeSAqdHJ1ZUFzc2lnbm1lbnQg
PQotICAgICAgICAgICAgICAgIGNyZWF0ZVRlbXBBc3NpZ25tZW50KG5vZGUtPmdldFRydWVCbG9j
aygpLT5nZXRBc1R5cGVkKCkpOwotICAgICAgICAgICAgdHJ1ZUJsb2NrLT5nZXRTZXF1ZW5jZSgp
LT5wdXNoX2JhY2sodHJ1ZUFzc2lnbm1lbnQpOwotCi0gICAgICAgICAgICBUSW50ZXJtQWdncmVn
YXRlICpmYWxzZUJsb2NrID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoRU9wU2VxdWVuY2UpOwotICAg
ICAgICAgICAgVEludGVybUJpbmFyeSAqZmFsc2VBc3NpZ25tZW50ID0KLSAgICAgICAgICAgICAg
ICBjcmVhdGVUZW1wQXNzaWdubWVudChub2RlLT5nZXRGYWxzZUJsb2NrKCktPmdldEFzVHlwZWQo
KSk7Ci0gICAgICAgICAgICBmYWxzZUJsb2NrLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2soZmFs
c2VBc3NpZ25tZW50KTsKLQotICAgICAgICAgICAgVEludGVybVNlbGVjdGlvbiAqaWZOb2RlID0K
LSAgICAgICAgICAgICAgICBuZXcgVEludGVybVNlbGVjdGlvbihub2RlLT5nZXRDb25kaXRpb24o
KS0+Z2V0QXNUeXBlZCgpLCB0cnVlQmxvY2ssIGZhbHNlQmxvY2spOwotICAgICAgICAgICAgaW5z
ZXJ0aW9ucy5wdXNoX2JhY2soaWZOb2RlKTsKLQotICAgICAgICAgICAgaW5zZXJ0U3RhdGVtZW50
c0luUGFyZW50QmxvY2soaW5zZXJ0aW9ucyk7Ci0KLSAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wg
KnRlcm5hcnlSZXN1bHQgPSBjcmVhdGVUZW1wU3ltYm9sKG5vZGUtPmdldFR5cGUoKSk7Ci0gICAg
ICAgICAgICBOb2RlVXBkYXRlRW50cnkgcmVwbGFjZVZhcmlhYmxlKGdldFBhcmVudE5vZGUoKSwg
bm9kZSwgdGVybmFyeVJlc3VsdCwgZmFsc2UpOwotICAgICAgICAgICAgbVJlcGxhY2VtZW50cy5w
dXNoX2JhY2socmVwbGFjZVZhcmlhYmxlKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQorICAgIGlmICh2aXNpdCAhPSBQcmVWaXNpdCkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICByZXR1cm4gdHJ1ZTsKLX0KKyAgICBpZiAoIW1QYXR0ZXJuVG9VbmZvbGRNYXRj
aGVyLm1hdGNoKG5vZGUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAotYm9vbCBVbmZvbGRTaG9y
dENpcmN1aXRUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdn
cmVnYXRlICpub2RlKQotewotICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCAmJiBtRm91bmRTaG9y
dENpcmN1aXQpCi0gICAgICAgIHJldHVybiBmYWxzZTsgLy8gTm8gbmVlZCB0byB0cmF2ZXJzZSBm
dXJ0aGVyCisgICAgbUZvdW5kU2hvcnRDaXJjdWl0ID0gdHJ1ZTsKIAotICAgIGlmIChub2RlLT5n
ZXRPcCgpID09IEVPcENvbW1hKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHZpc2l0ICE9IFByZVZp
c2l0IHx8ICFtRm91bmRTaG9ydENpcmN1aXQpOworICAgIC8vIFVuZm9sZCAiYiA/IHggOiB5IiBp
bnRvICJ0eXBlIHM7IGlmKGIpIHMgPSB4OyBlbHNlIHMgPSB5OyIKKyAgICBUSW50ZXJtU2VxdWVu
Y2UgaW5zZXJ0aW9uczsKIAotICAgICAgICBpZiAodmlzaXQgPT0gUG9zdFZpc2l0ICYmIG1Gb3Vu
ZFNob3J0Q2lyY3VpdCkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gV2UgY2FuIGJlIHN1cmUg
dGhhdCB3ZSBhcnJpdmVkIGhlcmUgYmVjYXVzZSB0aGVyZSB3YXMgYSBzaG9ydC1jaXJjdWl0aW5n
IG9wZXJhdG9yCi0gICAgICAgICAgICAvLyBpbnNpZGUgdGhlIHNlcXVlbmNlIG9wZXJhdG9yIHNp
bmNlIHdlIG9ubHkgc3RhcnQgdHJhdmVyc2luZyB0aGUgc2VxdWVuY2Ugb3BlcmF0b3IgaW4KLSAg
ICAgICAgICAgIC8vIGNhc2UgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdG9yIGhhcyBub3QgYmVl
biBmb3VuZCBzbyBmYXIuCi0gICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHVuZm9sZCB0aGUgc2Vx
dWVuY2UgKGNvbW1hKSBvcGVyYXRvciwgb3RoZXJ3aXNlIHRoZSBldmFsdWF0aW9uIG9yZGVyIG9m
Ci0gICAgICAgICAgICAvLyBzdGF0ZW1lbnRzIHdvdWxkIGJlIG1lc3NlZCB1cCBieSB1bmZvbGRl
ZCBvcGVyYXRpb25zIGluc2lkZS4KLSAgICAgICAgICAgIC8vIERvbid0IGRvIGFueSBvdGhlciB1
bmZvbGRpbmcgb24gdGhpcyByb3VuZCBvZiB0cmF2ZXJzYWwuCi0gICAgICAgICAgICBtUmVwbGFj
ZW1lbnRzLmNsZWFyKCk7Ci0gICAgICAgICAgICBtTXVsdGlSZXBsYWNlbWVudHMuY2xlYXIoKTsK
LSAgICAgICAgICAgIG1JbnNlcnRpb25zLmNsZWFyKCk7Ci0KLSAgICAgICAgICAgIGlmICghY29w
eUxvb3BDb25kaXRpb25PckV4cHJlc3Npb24oZ2V0UGFyZW50Tm9kZSgpLCBub2RlKSkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgaW5zZXJ0aW9uczsKLSAg
ICAgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgKnNlcSA9IG5vZGUtPmdldFNlcXVlbmNlKCk7
Ci0KLSAgICAgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2U6OnNpemVfdHlwZSBpID0gMDsKLSAg
ICAgICAgICAgICAgICBBU1NFUlQoIXNlcS0+ZW1wdHkoKSk7Ci0gICAgICAgICAgICAgICAgd2hp
bGUgKGkgPCBzZXEtPnNpemUoKSAtIDEpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICBUSW50ZXJtVHlwZWQgKmNoaWxkID0gKCpzZXEpW2ldLT5nZXRBc1R5cGVkKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGluc2VydGlvbnMucHVzaF9iYWNrKGNoaWxkKTsKLSAgICAgICAg
ICAgICAgICAgICAgKytpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlu
c2VydFN0YXRlbWVudHNJblBhcmVudEJsb2NrKGluc2VydGlvbnMpOwotCi0gICAgICAgICAgICAg
ICAgTm9kZVVwZGF0ZUVudHJ5IHJlcGxhY2VWYXJpYWJsZShnZXRQYXJlbnROb2RlKCksIG5vZGUs
ICgqc2VxKVtpXSwgZmFsc2UpOwotICAgICAgICAgICAgICAgIG1SZXBsYWNlbWVudHMucHVzaF9i
YWNrKHJlcGxhY2VWYXJpYWJsZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgcmV0dXJuIHRydWU7Ci19CisgICAgVEludGVybVN5bWJvbCAqdGVtcFN5bWJvbCAgICAgICAg
ID0gY3JlYXRlVGVtcFN5bWJvbChub2RlLT5nZXRUeXBlKCkpOworICAgIFRJbnRlcm1BZ2dyZWdh
dGUgKnRlbXBEZWNsYXJhdGlvbiA9IG5ldyBUSW50ZXJtQWdncmVnYXRlKEVPcERlY2xhcmF0aW9u
KTsKKyAgICB0ZW1wRGVjbGFyYXRpb24tPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayh0ZW1wU3lt
Ym9sKTsKKyAgICBpbnNlcnRpb25zLnB1c2hfYmFjayh0ZW1wRGVjbGFyYXRpb24pOwogCi1ib29s
IFVuZm9sZFNob3J0Q2lyY3VpdFRyYXZlcnNlcjo6dmlzaXRMb29wKFZpc2l0IHZpc2l0LCBUSW50
ZXJtTG9vcCAqbm9kZSkKLXsKLSAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCi0gICAgewotICAg
ICAgICBpZiAobUZvdW5kU2hvcnRDaXJjdWl0KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAg
Ly8gTm8gbmVlZCB0byB0cmF2ZXJzZSBmdXJ0aGVyCisgICAgVEludGVybUJsb2NrICp0cnVlQmxv
Y2sgICAgICAgPSBuZXcgVEludGVybUJsb2NrKCk7CisgICAgVEludGVybUJpbmFyeSAqdHJ1ZUFz
c2lnbm1lbnQgPSBjcmVhdGVUZW1wQXNzaWdubWVudChub2RlLT5nZXRUcnVlRXhwcmVzc2lvbigp
KTsKKyAgICB0cnVlQmxvY2stPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayh0cnVlQXNzaWdubWVu
dCk7CiAKLSAgICAgICAgbUxvb3BQYXJlbnQgPSBnZXRQYXJlbnROb2RlKCk7Ci0gICAgICAgIG1Q
YXJlbnRMb29wID0gbm9kZTsKLSAgICAgICAgaW5jcmVtZW50RGVwdGgobm9kZSk7Ci0KLSAgICAg
ICAgaWYgKG5vZGUtPmdldEluaXQoKSkKLSAgICAgICAgewotICAgICAgICAgICAgbm9kZS0+Z2V0
SW5pdCgpLT50cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAgICAgIGlmIChtRm91bmRTaG9ydENpcmN1
aXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZGVjcmVtZW50RGVwdGgoKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAobm9kZS0+Z2V0Q29uZGl0aW9uKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IG1Jbkxvb3BDb25kaXRpb24gPSB0cnVlOwotICAgICAgICAgICAgbm9kZS0+Z2V0Q29uZGl0aW9u
KCktPnRyYXZlcnNlKHRoaXMpOwotICAgICAgICAgICAgbUluTG9vcENvbmRpdGlvbiA9IGZhbHNl
OwotCi0gICAgICAgICAgICBpZiAobUZvdW5kU2hvcnRDaXJjdWl0KQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGRlY3JlbWVudERlcHRoKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG5vZGUtPmdl
dEV4cHJlc3Npb24oKSkKLSAgICAgICAgewotICAgICAgICAgICAgbUluTG9vcEV4cHJlc3Npb24g
PSB0cnVlOwotICAgICAgICAgICAgbm9kZS0+Z2V0RXhwcmVzc2lvbigpLT50cmF2ZXJzZSh0aGlz
KTsKLSAgICAgICAgICAgIG1Jbkxvb3BFeHByZXNzaW9uID0gZmFsc2U7Ci0KLSAgICAgICAgICAg
IGlmIChtRm91bmRTaG9ydENpcmN1aXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ZGVjcmVtZW50RGVwdGgoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KKyAgICBUSW50ZXJtQmxvY2sgKmZhbHNlQmxvY2sgICAgICAgPSBu
ZXcgVEludGVybUJsb2NrKCk7CisgICAgVEludGVybUJpbmFyeSAqZmFsc2VBc3NpZ25tZW50ID0g
Y3JlYXRlVGVtcEFzc2lnbm1lbnQobm9kZS0+Z2V0RmFsc2VFeHByZXNzaW9uKCkpOworICAgIGZh
bHNlQmxvY2stPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhmYWxzZUFzc2lnbm1lbnQpOwogCi0g
ICAgICAgIGlmIChub2RlLT5nZXRCb2R5KCkpCi0gICAgICAgICAgICBub2RlLT5nZXRCb2R5KCkt
PnRyYXZlcnNlKHRoaXMpOworICAgIFRJbnRlcm1JZkVsc2UgKmlmTm9kZSA9CisgICAgICAgIG5l
dyBUSW50ZXJtSWZFbHNlKG5vZGUtPmdldENvbmRpdGlvbigpLT5nZXRBc1R5cGVkKCksIHRydWVC
bG9jaywgZmFsc2VCbG9jayk7CisgICAgaW5zZXJ0aW9ucy5wdXNoX2JhY2soaWZOb2RlKTsKIAot
ICAgICAgICBkZWNyZW1lbnREZXB0aCgpOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Cisg
ICAgaW5zZXJ0U3RhdGVtZW50c0luUGFyZW50QmxvY2soaW5zZXJ0aW9ucyk7CiAKLWJvb2wgVW5m
b2xkU2hvcnRDaXJjdWl0VHJhdmVyc2VyOjpjb3B5TG9vcENvbmRpdGlvbk9yRXhwcmVzc2lvbihU
SW50ZXJtTm9kZSAqcGFyZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqbm9kZSkKLXsKLSAgICBp
ZiAobUluTG9vcENvbmRpdGlvbikKLSAgICB7Ci0gICAgICAgIG1SZXBsYWNlbWVudHMucHVzaF9i
YWNrKAotICAgICAgICAgICAgTm9kZVVwZGF0ZUVudHJ5KHBhcmVudCwgbm9kZSwgY3JlYXRlVGVt
cFN5bWJvbChub2RlLT5nZXRUeXBlKCkpLCBmYWxzZSkpOwotICAgICAgICBUSW50ZXJtQWdncmVn
YXRlICpib2R5ID0gbVBhcmVudExvb3AtPmdldEJvZHkoKTsKLSAgICAgICAgVEludGVybVNlcXVl
bmNlIGVtcHR5OwotICAgICAgICBpZiAobVBhcmVudExvb3AtPmdldFR5cGUoKSA9PSBFTG9vcERv
V2hpbGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIERlY2xhcmUgdGhlIHRlbXBvcmFyeSB2
YXJpYWJsZSBiZWZvcmUgdGhlIGxvb3AuCi0gICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgaW5z
ZXJ0aW9uc0JlZm9yZUxvb3A7Ci0gICAgICAgICAgICBpbnNlcnRpb25zQmVmb3JlTG9vcC5wdXNo
X2JhY2soY3JlYXRlVGVtcERlY2xhcmF0aW9uKG5vZGUtPmdldFR5cGUoKSkpOwotICAgICAgICAg
ICAgaW5zZXJ0U3RhdGVtZW50c0luUGFyZW50QmxvY2soaW5zZXJ0aW9uc0JlZm9yZUxvb3ApOwot
Ci0gICAgICAgICAgICAvLyBNb3ZlIGEgcGFydCBvZiBkby13aGlsZSBsb29wIGNvbmRpdGlvbiB0
byBpbnNpZGUgdGhlIGxvb3AuCi0gICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgaW5zZXJ0aW9u
c0luTG9vcDsKLSAgICAgICAgICAgIGluc2VydGlvbnNJbkxvb3AucHVzaF9iYWNrKGNyZWF0ZVRl
bXBBc3NpZ25tZW50KG5vZGUpKTsKLSAgICAgICAgICAgIG1JbnNlcnRpb25zLnB1c2hfYmFjayhO
b2RlSW5zZXJ0TXVsdGlwbGVFbnRyeShib2R5LCBib2R5LT5nZXRTZXF1ZW5jZSgpLT5zaXplKCkg
LSAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVtcHR5LCBpbnNlcnRpb25zSW5Mb29wKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxz
ZQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBUaGUgbG9vcCBpbml0aWFsaXplciBleHByZXNz
aW9uIGFuZCBvbmUgY29weSBvZiB0aGUgcGFydCBvZiB0aGUgbG9vcCBjb25kaXRpb24gYXJlCi0g
ICAgICAgICAgICAvLyBleGVjdXRlZCBiZWZvcmUgdGhlIGxvb3AuIFRoZXkgbmVlZCB0byBiZSBp
biBhIG5ldyBzY29wZS4KLSAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmxvb3BTY29wZSA9
IG5ldyBUSW50ZXJtQWdncmVnYXRlKEVPcFNlcXVlbmNlKTsKLQotICAgICAgICAgICAgVEludGVy
bU5vZGUgKmluaXRpYWxpemVyID0gbVBhcmVudExvb3AtPmdldEluaXQoKTsKLSAgICAgICAgICAg
IGlmIChpbml0aWFsaXplciAhPSBudWxscHRyKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIC8vIE1vdmUgdGhlIGluaXRpYWxpemVyIHRvIHRoZSBuZXdseSBjcmVhdGVkIG91dGVyIHNj
b3BlLCBzbyB0aGF0IGNvbmRpdGlvbiBjYW4KLSAgICAgICAgICAgICAgICAvLyBkZXBlbmQgb24g
aXQuCi0gICAgICAgICAgICAgICAgbVJlcGxhY2VtZW50cy5wdXNoX2JhY2soTm9kZVVwZGF0ZUVu
dHJ5KG1QYXJlbnRMb29wLCBpbml0aWFsaXplciwgbnVsbHB0ciwgZmFsc2UpKTsKLSAgICAgICAg
ICAgICAgICBsb29wU2NvcGUtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhpbml0aWFsaXplcik7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGxvb3BTY29wZS0+Z2V0U2VxdWVuY2UoKS0+
cHVzaF9iYWNrKGNyZWF0ZVRlbXBJbml0RGVjbGFyYXRpb24obm9kZSkpOwotICAgICAgICAgICAg
bG9vcFNjb3BlLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2sobVBhcmVudExvb3ApOwotICAgICAg
ICAgICAgbVJlcGxhY2VtZW50cy5wdXNoX2JhY2soTm9kZVVwZGF0ZUVudHJ5KG1Mb29wUGFyZW50
LCBtUGFyZW50TG9vcCwgbG9vcFNjb3BlLCB0cnVlKSk7Ci0KLSAgICAgICAgICAgIC8vIFRoZSBz
ZWNvbmQgY29weSBvZiB0aGUgcGFydCBvZiB0aGUgbG9vcCBjb25kaXRpb24gaXMgZXhlY3V0ZWQg
aW5zaWRlIHRoZSBsb29wLgotICAgICAgICAgICAgVEludGVybVNlcXVlbmNlIGluc2VydGlvbnNJ
bkxvb3A7Ci0gICAgICAgICAgICBpbnNlcnRpb25zSW5Mb29wLnB1c2hfYmFjayhjcmVhdGVUZW1w
QXNzaWdubWVudChub2RlLT5kZWVwQ29weSgpKSk7Ci0gICAgICAgICAgICBtSW5zZXJ0aW9ucy5w
dXNoX2JhY2soTm9kZUluc2VydE11bHRpcGxlRW50cnkoYm9keSwgYm9keS0+Z2V0U2VxdWVuY2Uo
KS0+c2l6ZSgpIC0gMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbXB0eSwgaW5zZXJ0aW9uc0luTG9vcCkpOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KKyAgICBUSW50ZXJtU3ltYm9sICp0ZXJuYXJ5UmVz
dWx0ID0gY3JlYXRlVGVtcFN5bWJvbChub2RlLT5nZXRUeXBlKCkpOworICAgIHF1ZXVlUmVwbGFj
ZW1lbnQobm9kZSwgdGVybmFyeVJlc3VsdCwgT3JpZ2luYWxOb2RlOjpJU19EUk9QUEVEKTsKIAot
ICAgIGlmIChtSW5Mb29wRXhwcmVzc2lvbikKLSAgICB7Ci0gICAgICAgIFRJbnRlcm1UeXBlZCAq
bW92ZWRFeHByZXNzaW9uID0gbVBhcmVudExvb3AtPmdldEV4cHJlc3Npb24oKTsKLSAgICAgICAg
bVJlcGxhY2VtZW50cy5wdXNoX2JhY2soTm9kZVVwZGF0ZUVudHJ5KG1QYXJlbnRMb29wLCBtb3Zl
ZEV4cHJlc3Npb24sIG51bGxwdHIsIGZhbHNlKSk7Ci0gICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUg
KmJvZHkgPSBtUGFyZW50TG9vcC0+Z2V0Qm9keSgpOwotICAgICAgICBUSW50ZXJtU2VxdWVuY2Ug
ZW1wdHk7Ci0gICAgICAgIFRJbnRlcm1TZXF1ZW5jZSBpbnNlcnRpb25zOwotICAgICAgICBpbnNl
cnRpb25zLnB1c2hfYmFjayhtb3ZlZEV4cHJlc3Npb24pOwotICAgICAgICBtSW5zZXJ0aW9ucy5w
dXNoX2JhY2soCi0gICAgICAgICAgICBOb2RlSW5zZXJ0TXVsdGlwbGVFbnRyeShib2R5LCBib2R5
LT5nZXRTZXF1ZW5jZSgpLT5zaXplKCkgLSAxLCBlbXB0eSwgaW5zZXJ0aW9ucykpOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Vbmlmb3JtSExTTC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvVW5pZm9ybUhMU0wuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Vbmlmb3JtSExTTC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNyBAQCB1bnNpZ25lZCBpbnQgVW5pZm9ybUhMU0w6
OmFzc2lnblNhbXBsZXJJCiAgICAgQVNTRVJUKElzU2FtcGxlcih0eXBlLmdldEJhc2ljVHlwZSgp
KSk7CiAgICAgdW5zaWduZWQgaW50IHJlZ2lzdGVySW5kZXggPSBtU2FtcGxlclJlZ2lzdGVyOwog
ICAgIG1Vbmlmb3JtUmVnaXN0ZXJNYXBbc3RkOjpzdHJpbmcobmFtZS5jX3N0cigpKV0gPSByZWdp
c3RlckluZGV4OwotICAgIHVuc2lnbmVkIGludCByZWdpc3RlckNvdW50ID0gdHlwZS5pc0FycmF5
KCkgPyB0eXBlLmdldEFycmF5U2l6ZSgpIDogMTsKKyAgICB1bnNpZ25lZCBpbnQgcmVnaXN0ZXJD
b3VudCAgICAgICAgICAgICAgICAgICAgID0gdHlwZS5pc0FycmF5KCkgPyB0eXBlLmdldEFycmF5
U2l6ZSgpIDogMXU7CiAgICAgbVNhbXBsZXJSZWdpc3RlciArPSByZWdpc3RlckNvdW50OwogICAg
IGlmIChvdXRSZWdpc3RlckNvdW50KQogICAgIHsKQEAgLTE3NSw5ICsxNzUsOSBAQCB2b2lkIFVu
aWZvcm1ITFNMOjpvdXRwdXRITFNMU2FtcGxlclVuaWZvCiAgICAgICAgIHsKICAgICAgICAgICAg
IG91dCA8PCAic3RhdGljIGNvbnN0IHVpbnQgIiA8PCBEZWNvcmF0ZUlmTmVlZGVkKHVuaWZvcm0t
PmdldE5hbWUoKSkgPDwgQXJyYXlTdHJpbmcodHlwZSkKICAgICAgICAgICAgICAgICA8PCAiID0g
eyI7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHR5cGUuZ2V0QXJyYXlTaXplKCk7
ICsraSkKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwdTsgaSA8IHR5cGUuZ2V0
QXJyYXlTaXplKCk7ICsraSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoaSA+
IDApCisgICAgICAgICAgICAgICAgaWYgKGkgPiAwdSkKICAgICAgICAgICAgICAgICAgICAgb3V0
IDw8ICIsICI7CiAgICAgICAgICAgICAgICAgb3V0IDw8IChzYW1wbGVyQXJyYXlJbmRleCArIGkp
OwogICAgICAgICAgICAgfQpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgVW5pZm9ybUhMU0w6OnVu
aWZvcm1zSGVhZGVyKFRJbmZvU2kKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBUVmVj
dG9yPFRJbnRlcm1TeW1ib2wgKj4gc2FtcGxlclN5bWJvbHM7CiAgICAgICAgICAgICAgICAgVE1h
cDxUSW50ZXJtU3ltYm9sICosIFRTdHJpbmc+IHN5bWJvbHNUb0FQSU5hbWVzOwotICAgICAgICAg
ICAgICAgIGludCBhcnJheU9mU3RydWN0c1NpemUgPSB0eXBlLmlzQXJyYXkoKSA/IHR5cGUuZ2V0
QXJyYXlTaXplKCkgOiAwOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBhcnJheU9mU3Ry
dWN0c1NpemUgPSB0eXBlLmlzQXJyYXkoKSA/IHR5cGUuZ2V0QXJyYXlTaXplKCkgOiAwdTsKICAg
ICAgICAgICAgICAgICB0eXBlLmNyZWF0ZVNhbXBsZXJTeW1ib2xzKCJhbmdsZV8iICsgbmFtZS5n
ZXRTdHJpbmcoKSwgbmFtZS5nZXRTdHJpbmcoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFycmF5T2ZTdHJ1Y3RzU2l6ZSwgJnNhbXBsZXJTeW1ib2xzLCAmc3lt
Ym9sc1RvQVBJTmFtZXMpOwogICAgICAgICAgICAgICAgIGZvciAoVEludGVybVN5bWJvbCAqc2Ft
cGxlciA6IHNhbXBsZXJTeW1ib2xzKQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvVXNlSW50ZXJmYWNlQmxvY2tGaWVsZHMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Vz
ZUludGVyZmFjZUJsb2NrRmllbGRzLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Vc2VJbnRlcmZhY2VCbG9ja0ZpZWxk
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNTMgQEAKKy8vCisvLyBDb3B5cmlnaHQg
MjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFVz
ZUludGVyZmFjZUJsb2NrRmllbGRzLmNwcDogaW5zZXJ0IHN0YXRlbWVudHMgdG8gcmVmZXJlbmNl
IGFsbCBtZW1iZXJzIGluIEludGVyZmFjZUJsb2NrIGxpc3QgYXQKKy8vIHRoZSBiZWdpbm5pbmcg
b2YgbWFpbi4gVGhpcyBpcyB0byB3b3JrIGFyb3VuZCBhIE1hYyBkcml2ZXIgdGhhdCB0cmVhdHMg
dW51c2VkIHN0YW5kYXJkL3NoYXJlZAorLy8gdW5pZm9ybSBibG9ja3MgYXMgaW5hY3RpdmUuCisK
KyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1VzZUludGVyZmFjZUJsb2NrRmllbGRzLmgi
CisKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuaCIKKyNpbmNsdWRl
ICJjb21waWxlci90cmFuc2xhdG9yL3V0aWwuaCIKKworbmFtZXNwYWNlIHNoCit7CisKK25hbWVz
cGFjZQoreworCitjbGFzcyBVc2VVbmlmb3JtQmxvY2tNZW1iZXJzIDogcHVibGljIFRJbnRlcm1U
cmF2ZXJzZXIKK3sKKyAgcHVibGljOgorICAgIFVzZVVuaWZvcm1CbG9ja01lbWJlcnMoY29uc3Qg
SW50ZXJmYWNlQmxvY2tMaXN0ICZibG9ja3MpCisgICAgICAgIDogVEludGVybVRyYXZlcnNlcih0
cnVlLCBmYWxzZSwgZmFsc2UpLCBtQmxvY2tzKGJsb2NrcyksIG1Db2RlSW5zZXJ0ZWQoZmFsc2Up
CisgICAgeworICAgIH0KKworICBwcm90ZWN0ZWQ6CisgICAgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShW
aXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkgb3ZlcnJpZGUgeyByZXR1cm4gIW1D
b2RlSW5zZXJ0ZWQ7IH0KKyAgICBib29sIHZpc2l0RnVuY3Rpb25EZWZpbml0aW9uKFZpc2l0IHZp
c2l0LCBUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICpub2RlKSBvdmVycmlkZTsKKworICBwcml2
YXRlOgorICAgIHZvaWQgaW5zZXJ0VXNlQ29kZShUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlKTsK
KyAgICB2b2lkIEFkZEZpZWxkVXNlU3RhdGVtZW50cyhjb25zdCBTaGFkZXJWYXJpYWJsZSAmdmFy
LCBUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlKTsKKworICAgIGNvbnN0IEludGVyZmFjZUJsb2Nr
TGlzdCAmbUJsb2NrczsKKyAgICBib29sIG1Db2RlSW5zZXJ0ZWQ7Cit9OworCitib29sIFVzZVVu
aWZvcm1CbG9ja01lbWJlcnM6OnZpc2l0RnVuY3Rpb25EZWZpbml0aW9uKFZpc2l0IHZpc2l0LCBU
SW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICpub2RlKQoreworICAgIEFTU0VSVCh2aXNpdCA9PSBQ
cmVWaXNpdCk7CisgICAgaWYgKG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5pc01haW4o
KSkKKyAgICB7CisgICAgICAgIFRJbnRlcm1CbG9jayAqYm9keSA9IG5vZGUtPmdldEJvZHkoKTsK
KyAgICAgICAgQVNTRVJUKGJvZHkpOworICAgICAgICBpbnNlcnRVc2VDb2RlKGJvZHktPmdldFNl
cXVlbmNlKCkpOworICAgICAgICBtQ29kZUluc2VydGVkID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gIW1Db2RlSW5zZXJ0ZWQ7Cit9CisKK3ZvaWQgVXNl
VW5pZm9ybUJsb2NrTWVtYmVyczo6QWRkRmllbGRVc2VTdGF0ZW1lbnRzKGNvbnN0IFNoYWRlclZh
cmlhYmxlICZ2YXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlKQoreworICAgIFRTdHJpbmcgbmFtZSA9
IFRTdHJpbmcodmFyLm5hbWUuY19zdHIoKSk7CisgICAgVFR5cGUgdHlwZSAgID0gR2V0U2hhZGVy
VmFyaWFibGVUeXBlKHZhcik7CisKKyAgICBpZiAodmFyLmlzQXJyYXkoKSkKKyAgICB7CisgICAg
ICAgIHNpemVfdCBwb3MgPSBuYW1lLmZpbmRfbGFzdF9vZignWycpOworICAgICAgICBpZiAocG9z
ICE9IFRTdHJpbmc6Om5wb3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIG5hbWUgPSBuYW1lLnN1
YnN0cigwLCBwb3MpOworICAgICAgICB9CisgICAgICAgIFRUeXBlIGVsZW1lbnRUeXBlID0gdHlw
ZTsKKyAgICAgICAgZWxlbWVudFR5cGUuY2xlYXJBcnJheW5lc3MoKTsKKworICAgICAgICBUSW50
ZXJtU3ltYm9sICphcnJheVN5bWJvbCA9IG5ldyBUSW50ZXJtU3ltYm9sKDAsIG5hbWUsIHR5cGUp
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHZhci5hcnJheVNpemU7ICsr
aSkKKyAgICAgICAgeworICAgICAgICAgICAgVEludGVybUJpbmFyeSAqZWxlbWVudCA9CisgICAg
ICAgICAgICAgICAgbmV3IFRJbnRlcm1CaW5hcnkoRU9wSW5kZXhEaXJlY3QsIGFycmF5U3ltYm9s
LCBUSW50ZXJtVHlwZWQ6OkNyZWF0ZUluZGV4Tm9kZShpKSk7CisKKyAgICAgICAgICAgIHNlcXVl
bmNlLT5pbnNlcnQoc2VxdWVuY2UtPmJlZ2luKCksIGVsZW1lbnQpOworICAgICAgICB9CisgICAg
fQorICAgIGVsc2UgaWYgKHZhci5pc1N0cnVjdCgpKQorICAgIHsKKyAgICAgICAgVEludGVybVN5
bWJvbCAqc3RydWN0U3ltYm9sID0gbmV3IFRJbnRlcm1TeW1ib2woMCwgbmFtZSwgdHlwZSk7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgdmFyLmZpZWxkcy5zaXplKCk7ICsr
aSkKKyAgICAgICAgeworICAgICAgICAgICAgVEludGVybUJpbmFyeSAqZWxlbWVudCA9IG5ldyBU
SW50ZXJtQmluYXJ5KEVPcEluZGV4RGlyZWN0U3RydWN0LCBzdHJ1Y3RTeW1ib2wsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5
cGVkOjpDcmVhdGVJbmRleE5vZGUoaSkpOworCisgICAgICAgICAgICBzZXF1ZW5jZS0+aW5zZXJ0
KHNlcXVlbmNlLT5iZWdpbigpLCBlbGVtZW50KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNl
CisgICAgeworICAgICAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2wgPSBuZXcgVEludGVybVN5bWJv
bCgwLCBuYW1lLCB0eXBlKTsKKworICAgICAgICBzZXF1ZW5jZS0+aW5zZXJ0KHNlcXVlbmNlLT5i
ZWdpbigpLCBzeW1ib2wpOworICAgIH0KK30KKwordm9pZCBVc2VVbmlmb3JtQmxvY2tNZW1iZXJz
OjppbnNlcnRVc2VDb2RlKFRJbnRlcm1TZXF1ZW5jZSAqc2VxdWVuY2UpCit7CisgICAgZm9yIChj
b25zdCBhdXRvICZibG9jayA6IG1CbG9ja3MpCisgICAgeworICAgICAgICBpZiAoYmxvY2suaW5z
dGFuY2VOYW1lLmVtcHR5KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0
byAmdmFyIDogYmxvY2suZmllbGRzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEFk
ZEZpZWxkVXNlU3RhdGVtZW50cyh2YXIsIHNlcXVlbmNlKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBlbHNlIGlmIChibG9jay5hcnJheVNpemUgPiAwKQorICAgICAgICB7Cisg
ICAgICAgICAgICBUVHlwZSB0eXBlICAgICAgICAgICAgICAgICA9IEdldEludGVyZmFjZUJsb2Nr
VHlwZShibG9jayk7CisgICAgICAgICAgICBUU3RyaW5nIG5hbWUgICAgICAgICAgICAgICA9IFRT
dHJpbmcoYmxvY2suaW5zdGFuY2VOYW1lLmNfc3RyKCkpOworICAgICAgICAgICAgVEludGVybVN5
bWJvbCAqYXJyYXlTeW1ib2wgPSBuZXcgVEludGVybVN5bWJvbCgwLCBuYW1lLCB0eXBlKTsKKyAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgYmxvY2suYXJyYXlTaXplOyAr
K2kpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgVEludGVybUJpbmFyeSAqaW5zdGFu
Y2VTeW1ib2wgPSBuZXcgVEludGVybUJpbmFyeShFT3BJbmRleERpcmVjdCwgYXJyYXlTeW1ib2ws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUSW50ZXJtVHlwZWQ6OkNyZWF0ZUluZGV4Tm9kZShpKSk7CisgICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaiA9IDA7IGogPCBibG9jay5maWVsZHMuc2l6ZSgpOyAr
K2opCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBUSW50ZXJtQmluYXJ5
ICplbGVtZW50ID0KKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUSW50ZXJtQmluYXJ5KEVP
cEluZGV4RGlyZWN0SW50ZXJmYWNlQmxvY2ssIGluc3RhbmNlU3ltYm9sLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkOjpDcmVhdGVJbmRleE5v
ZGUoaikpOworICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZS0+aW5zZXJ0KHNlcXVlbmNlLT5i
ZWdpbigpLCBlbGVtZW50KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBUVHlwZSB0eXBlICAg
ICAgICAgICAgICAgICA9IEdldEludGVyZmFjZUJsb2NrVHlwZShibG9jayk7CisgICAgICAgICAg
ICBUU3RyaW5nIG5hbWUgICAgICAgICAgICAgICA9IFRTdHJpbmcoYmxvY2suaW5zdGFuY2VOYW1l
LmNfc3RyKCkpOworICAgICAgICAgICAgVEludGVybVN5bWJvbCAqYmxvY2tTeW1ib2wgPSBuZXcg
VEludGVybVN5bWJvbCgwLCBuYW1lLCB0eXBlKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aW50IGkgPSAwOyBpIDwgYmxvY2suZmllbGRzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIFRJbnRlcm1CaW5hcnkgKmVsZW1lbnQgPSBuZXcgVEludGVybUJpbmFy
eSgKKyAgICAgICAgICAgICAgICAgICAgRU9wSW5kZXhEaXJlY3RJbnRlcmZhY2VCbG9jaywgYmxv
Y2tTeW1ib2wsIFRJbnRlcm1UeXBlZDo6Q3JlYXRlSW5kZXhOb2RlKGkpKTsKKworICAgICAgICAg
ICAgICAgIHNlcXVlbmNlLT5pbnNlcnQoc2VxdWVuY2UtPmJlZ2luKCksIGVsZW1lbnQpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UgYW5vbnlt
b3VzCisKK3ZvaWQgVXNlSW50ZXJmYWNlQmxvY2tGaWVsZHMoVEludGVybU5vZGUgKnJvb3QsIGNv
bnN0IEludGVyZmFjZUJsb2NrTGlzdCAmYmxvY2tzKQoreworICAgIFVzZVVuaWZvcm1CbG9ja01l
bWJlcnMgdXNlVW5pZm9ybUJsb2NrKGJsb2Nrcyk7CisgICAgcm9vdC0+dHJhdmVyc2UoJnVzZVVu
aWZvcm1CbG9jayk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBzaApJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVXNlSW50ZXJmYWNlQmxvY2tGaWVs
ZHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9Vc2VJbnRlcmZhY2VCbG9ja0ZpZWxkcy5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1VzZUludGVyZmFj
ZUJsb2NrRmllbGRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNSBAQAorLy8KKy8vIENv
cHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
KworLy8gVXNlSW50ZXJmYWNlQmxvY2tGaWVsZHMuaDogaW5zZXJ0IHN0YXRlbWVudHMgdG8gcmVm
ZXJlbmNlIGFsbCBtZW1iZXJzIGluIEludGVyZmFjZUJsb2NrIGxpc3QgYXQKKy8vIHRoZSBiZWdp
bm5pbmcgb2YgbWFpbi4gVGhpcyBpcyB0byB3b3JrIGFyb3VuZCBhIE1hYyBkcml2ZXIgdGhhdCB0
cmVhdHMgdW51c2VkIHN0YW5kYXJkL3NoYXJlZAorLy8gdW5pZm9ybSBibG9ja3MgYXMgaW5hY3Rp
dmUuCisKKyNpZm5kZWYgQ09NUElMRVJfVFJBTlNMQVRPUl9VU0VJTlRFUkZBQ0VCTE9DS0ZJRUxE
U19IXworI2RlZmluZSBDT01QSUxFUl9UUkFOU0xBVE9SX1VTRUlOVEVSRkFDRUJMT0NLRklFTERT
X0hfCisKKyNpbmNsdWRlIDxHTFNMQU5HL1NoYWRlckxhbmcuaD4KKworY2xhc3MgVEludGVybU5v
ZGU7CituYW1lc3BhY2Ugc2gKK3sKKwordXNpbmcgSW50ZXJmYWNlQmxvY2tMaXN0ID0gc3RkOjp2
ZWN0b3I8c2g6OkludGVyZmFjZUJsb2NrPjsKKwordm9pZCBVc2VJbnRlcmZhY2VCbG9ja0ZpZWxk
cyhUSW50ZXJtTm9kZSAqcm9vdCwgY29uc3QgSW50ZXJmYWNlQmxvY2tMaXN0ICZibG9ja3MpOwor
fSAgLy8gbmFtZXNwYWNlIHNoCisKKyNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9VU0VJ
TlRFUkZBQ0VCTE9DS0ZJRUxEU19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvVXRpbHNITFNMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9VdGlsc0hMU0wuY3BwCShy
ZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9VdGlsc0hMU0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsNiArMTczLDgg
QEAgVFN0cmluZyBUZXh0dXJlVHlwZVN1ZmZpeChjb25zdCBUQmFzaWNUeQogICAgICAgICAgICAg
cmV0dXJuICJDdWJlX2ludDRfIjsKICAgICAgICAgY2FzZSBFYnRVU2FtcGxlckN1YmU6CiAgICAg
ICAgICAgICByZXR1cm4gIkN1YmVfdWludDRfIjsKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyRXh0
ZXJuYWxPRVM6CisgICAgICAgICAgICByZXR1cm4gIl9FeHRlcm5hbCI7CiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICAvLyBBbGwgb3RoZXIgdHlwZXMgYXJlIGlkZW50aWZpZWQgYnkgdGhl
aXIgZ3JvdXAgc3VmZml4CiAgICAgICAgICAgICByZXR1cm4gVGV4dHVyZUdyb3VwU3VmZml4KHR5
cGUpOwpAQCAtMTgxLDExICsxODMsNiBAQCBUU3RyaW5nIFRleHR1cmVUeXBlU3VmZml4KGNvbnN0
IFRCYXNpY1R5CiAKIFRTdHJpbmcgRGVjb3JhdGVVbmlmb3JtKGNvbnN0IFROYW1lICZuYW1lLCBj
b25zdCBUVHlwZSAmdHlwZSkKIHsKLSAgICBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRT
YW1wbGVyRXh0ZXJuYWxPRVMpCi0gICAgewotICAgICAgICByZXR1cm4gImV4XyIgKyBuYW1lLmdl
dFN0cmluZygpOwotICAgIH0KLQogICAgIHJldHVybiBEZWNvcmF0ZUlmTmVlZGVkKG5hbWUpOwog
fQogCkBAIC0zOTYsNDYgKzM5Myw2IEBAIFRTdHJpbmcgUXVhbGlmaWVyU3RyaW5nKFRRdWFsaWZp
ZXIgcXVhbGkKICAgICByZXR1cm4gIiI7CiB9CiAKLWludCBITFNMVGV4dHVyZUNvb3Jkc0NvdW50
KGNvbnN0IFRCYXNpY1R5cGUgc2FtcGxlclR5cGUpCi17Ci0gICAgc3dpdGNoIChzYW1wbGVyVHlw
ZSkKLSAgICB7Ci0gICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEOgotICAgICAgICAgICAgcmV0dXJu
IDI7Ci0gICAgICAgIGNhc2UgRWJ0U2FtcGxlcjNEOgotICAgICAgICAgICAgcmV0dXJuIDM7Ci0g
ICAgICAgIGNhc2UgRWJ0U2FtcGxlckN1YmU6Ci0gICAgICAgICAgICByZXR1cm4gMzsKLSAgICAg
ICAgY2FzZSBFYnRTYW1wbGVyMkRBcnJheToKLSAgICAgICAgICAgIHJldHVybiAzOwotICAgICAg
ICBjYXNlIEVidElTYW1wbGVyMkQ6Ci0gICAgICAgICAgICByZXR1cm4gMjsKLSAgICAgICAgY2Fz
ZSBFYnRJU2FtcGxlcjNEOgotICAgICAgICAgICAgcmV0dXJuIDM7Ci0gICAgICAgIGNhc2UgRWJ0
SVNhbXBsZXJDdWJlOgotICAgICAgICAgICAgcmV0dXJuIDM7Ci0gICAgICAgIGNhc2UgRWJ0SVNh
bXBsZXIyREFycmF5OgotICAgICAgICAgICAgcmV0dXJuIDM7Ci0gICAgICAgIGNhc2UgRWJ0VVNh
bXBsZXIyRDoKLSAgICAgICAgICAgIHJldHVybiAyOwotICAgICAgICBjYXNlIEVidFVTYW1wbGVy
M0Q6Ci0gICAgICAgICAgICByZXR1cm4gMzsKLSAgICAgICAgY2FzZSBFYnRVU2FtcGxlckN1YmU6
Ci0gICAgICAgICAgICByZXR1cm4gMzsKLSAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjJEQXJyYXk6
Ci0gICAgICAgICAgICByZXR1cm4gMzsKLSAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkRTaGFkb3c6
Ci0gICAgICAgICAgICByZXR1cm4gMjsKLSAgICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZVNoYWRv
dzoKLSAgICAgICAgICAgIHJldHVybiAzOwotICAgICAgICBjYXNlIEVidFNhbXBsZXIyREFycmF5
U2hhZG93OgotICAgICAgICAgICAgcmV0dXJuIDM7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICBVTlJFQUNIQUJMRSgpOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQogVFN0cmluZyBE
aXNhbWJpZ3VhdGVGdW5jdGlvbk5hbWUoY29uc3QgVEludGVybVNlcXVlbmNlICpwYXJhbWV0ZXJz
KQogewogICAgIFRTdHJpbmcgZGlzYW1iaWd1YXRpbmdTdHJpbmc7CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9VdGlsc0hMU0wuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9V
dGlsc0hMU0wuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVXRpbHNITFNMLmgJKHdvcmtpbmcgY29weSkKQEAgLTcz
LDcgKzczLDYgQEAgVFN0cmluZyBRdWFsaWZpZWRTdHJ1Y3ROYW1lU3RyaW5nKGNvbnN0IAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdXNlU3RkMTQwUGFja2luZyk7CiBU
U3RyaW5nIEludGVycG9sYXRpb25TdHJpbmcoVFF1YWxpZmllciBxdWFsaWZpZXIpOwogVFN0cmlu
ZyBRdWFsaWZpZXJTdHJpbmcoVFF1YWxpZmllciBxdWFsaWZpZXIpOwotaW50IEhMU0xUZXh0dXJl
Q29vcmRzQ291bnQoY29uc3QgVEJhc2ljVHlwZSBzYW1wbGVyVHlwZSk7CiAvLyBQYXJhbWV0ZXJz
IG1heSBuZWVkIHRvIGJlIGluY2x1ZGVkIGluIGZ1bmN0aW9uIG5hbWVzIHRvIGRpc2FtYmlndWF0
ZSBiZXR3ZWVuIG92ZXJsb2FkZWQKIC8vIGZ1bmN0aW9ucy4KIFRTdHJpbmcgRGlzYW1iaWd1YXRl
RnVuY3Rpb25OYW1lKGNvbnN0IFRJbnRlcm1TZXF1ZW5jZSAqcGFyYW1ldGVycyk7CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZUxp
bWl0YXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZUxpbWl0YXRpb25zLmNwcAkocmV2aXNpb24gMjA3
ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
VmFsaWRhdGVMaW1pdGF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyMyw3ICs0MjMsOCBA
QCBib29sIFZhbGlkYXRlTGltaXRhdGlvbnM6OnZhbGlkYXRlRnVuY3RpCiAKICAgICBib29sIHZh
bGlkID0gdHJ1ZTsKICAgICBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gR2V0R2xvYmFsUGFy
c2VDb250ZXh0KCktPnN5bWJvbFRhYmxlOwotICAgIFRTeW1ib2wqIHN5bWJvbCA9IHN5bWJvbFRh
YmxlLmZpbmQobm9kZS0+Z2V0TmFtZSgpLCBHZXRHbG9iYWxQYXJzZUNvbnRleHQoKS0+Z2V0U2hh
ZGVyVmVyc2lvbigpKTsKKyAgICBUU3ltYm9sICpzeW1ib2wgICAgICAgICAgID0gc3ltYm9sVGFi
bGUuZmluZChub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0TmFtZSgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0R2xvYmFsUGFyc2VDb250ZXh0KCkt
PmdldFNoYWRlclZlcnNpb24oKSk7CiAgICAgQVNTRVJUKHN5bWJvbCAmJiBzeW1ib2wtPmlzRnVu
Y3Rpb24oKSk7CiAgICAgVEZ1bmN0aW9uICpmdW5jdGlvbiA9IHN0YXRpY19jYXN0PFRGdW5jdGlv
biAqPihzeW1ib2wpOwogICAgIGZvciAoUGFyYW1JbmRleDo6Y29uc3RfaXRlcmF0b3IgaSA9IHBJ
bmRleC5iZWdpbigpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvVmFsaWRhdGVPdXRwdXRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZU91dHB1dHMuY3Bw
CShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9WYWxpZGF0ZU91dHB1dHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwx
MCArMzQsMTAgQEAgdm9pZCBWYWxpZGF0ZU91dHB1dHM6OnZpc2l0U3ltYm9sKFRJbnRlcgogICAg
IFRTdHJpbmcgbmFtZSA9IHN5bWJvbC0+Z2V0U3ltYm9sKCk7CiAgICAgVFF1YWxpZmllciBxdWFs
aWZpZXIgPSBzeW1ib2wtPmdldFF1YWxpZmllcigpOwogCi0gICAgaWYgKG1WaXNpdGVkU3ltYm9s
cy5jb3VudChuYW1lKSA9PSAxKQorICAgIGlmIChtVmlzaXRlZFN5bWJvbHMuY291bnQobmFtZS5j
X3N0cigpKSA9PSAxKQogICAgICAgICByZXR1cm47CiAKLSAgICBtVmlzaXRlZFN5bWJvbHMuaW5z
ZXJ0KG5hbWUpOworICAgIG1WaXNpdGVkU3ltYm9scy5pbnNlcnQobmFtZS5jX3N0cigpKTsKIAog
ICAgIGlmIChxdWFsaWZpZXIgPT0gRXZxRnJhZ21lbnRPdXQpCiAgICAgewpAQCAtNjAsNyArNjAs
NyBAQCBpbnQgVmFsaWRhdGVPdXRwdXRzOjp2YWxpZGF0ZUFuZENvdW50RXJyCiAgICAgZm9yIChj
b25zdCBhdXRvICZzeW1ib2wgOiBtT3V0cHV0cykKICAgICB7CiAgICAgICAgIGNvbnN0IFRUeXBl
ICZ0eXBlICAgICAgICAgPSBzeW1ib2wtPmdldFR5cGUoKTsKLSAgICAgICAgY29uc3Qgc2l6ZV90
IGVsZW1lbnRDb3VudCA9IHN0YXRpY19jYXN0PHNpemVfdD4odHlwZS5pc0FycmF5KCkgPyB0eXBl
LmdldEFycmF5U2l6ZSgpIDogMSk7CisgICAgICAgIGNvbnN0IHNpemVfdCBlbGVtZW50Q291bnQg
PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHR5cGUuaXNBcnJheSgpID8gdHlwZS5nZXRBcnJheVNpemUo
KSA6IDF1KTsKICAgICAgICAgY29uc3Qgc2l6ZV90IGxvY2F0aW9uICAgICA9IHN0YXRpY19jYXN0
PHNpemVfdD4odHlwZS5nZXRMYXlvdXRRdWFsaWZpZXIoKS5sb2NhdGlvbik7CiAKICAgICAgICAg
QVNTRVJUKHR5cGUuZ2V0TGF5b3V0UXVhbGlmaWVyKCkubG9jYXRpb24gIT0gLTEpOwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVP
dXRwdXRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVPdXRwdXRzLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlT3V0
cHV0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBAIGNsYXNzIFZhbGlkYXRlT3V0
cHV0cyA6IHB1YmxpYyBUSW50ZXJtVHIKICAgICB0eXBlZGVmIHN0ZDo6dmVjdG9yPFRJbnRlcm1T
eW1ib2wgKj4gT3V0cHV0VmVjdG9yOwogICAgIE91dHB1dFZlY3RvciBtT3V0cHV0czsKICAgICBP
dXRwdXRWZWN0b3IgbVVuc3BlY2lmaWVkTG9jYXRpb25PdXRwdXRzOwotICAgIHN0ZDo6c2V0PFRT
dHJpbmc+IG1WaXNpdGVkU3ltYm9sczsKKyAgICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gbVZpc2l0
ZWRTeW1ib2xzOwogfTsKIAogI2VuZGlmIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfVkFMSURBVEVP
VVRQVVRTX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9WYWxpZGF0ZVN3aXRjaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVTd2l0Y2guY3BwCShyZXZp
c2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9WYWxpZGF0ZVN3aXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgsOCArOCwxMCBA
QAogCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9QYXJzZUNvbnRleHQuaCIKIAotYm9v
bCBWYWxpZGF0ZVN3aXRjaDo6dmFsaWRhdGUoVEJhc2ljVHlwZSBzd2l0Y2hUeXBlLCBUUGFyc2VD
b250ZXh0ICpjb250ZXh0LAotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnN0YXRlbWVudExpc3QsIGNv
bnN0IFRTb3VyY2VMb2MgJmxvYykKK2Jvb2wgVmFsaWRhdGVTd2l0Y2g6OnZhbGlkYXRlKFRCYXNp
Y1R5cGUgc3dpdGNoVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQYXJzZUNv
bnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtQmxv
Y2sgKnN0YXRlbWVudExpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
U291cmNlTG9jICZsb2MpCiB7CiAgICAgVmFsaWRhdGVTd2l0Y2ggdmFsaWRhdGUoc3dpdGNoVHlw
ZSwgY29udGV4dCk7CiAgICAgQVNTRVJUKHN0YXRlbWVudExpc3QpOwpAQCAtNTksMTEgKzYxLDE5
IEBAIGJvb2wgVmFsaWRhdGVTd2l0Y2g6OnZpc2l0VW5hcnkoVmlzaXQsIFQKIHsKICAgICBpZiAo
IW1GaXJzdENhc2VGb3VuZCkKICAgICAgICAgbVN0YXRlbWVudEJlZm9yZUNhc2UgPSB0cnVlOwor
ICAgIG1MYXN0U3RhdGVtZW50V2FzQ2FzZSAgICA9IGZhbHNlOworICAgIHJldHVybiB0cnVlOwor
fQorCitib29sIFZhbGlkYXRlU3dpdGNoOjp2aXNpdFRlcm5hcnkoVmlzaXQsIFRJbnRlcm1UZXJu
YXJ5ICopCit7CisgICAgaWYgKCFtRmlyc3RDYXNlRm91bmQpCisgICAgICAgIG1TdGF0ZW1lbnRC
ZWZvcmVDYXNlID0gdHJ1ZTsKICAgICBtTGFzdFN0YXRlbWVudFdhc0Nhc2UgPSBmYWxzZTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVN3aXRjaDo6dmlzaXRTZWxlY3Rpb24o
VmlzaXQgdmlzaXQsIFRJbnRlcm1TZWxlY3Rpb24gKikKK2Jvb2wgVmFsaWRhdGVTd2l0Y2g6OnZp
c2l0SWZFbHNlKFZpc2l0IHZpc2l0LCBUSW50ZXJtSWZFbHNlICopCiB7CiAgICAgaWYgKHZpc2l0
ID09IFByZVZpc2l0KQogICAgICAgICArK21Db250cm9sRmxvd0RlcHRoOwpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVTd2l0Y2gu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9WYWxpZGF0ZVN3aXRjaC5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZVN3aXRjaC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNiwxNCArMTYsMTcgQEAgY2xhc3MgVmFsaWRhdGVTd2l0Y2ggOiBw
dWJsaWMgVEludGVybVRyYQogICBwdWJsaWM6CiAgICAgLy8gQ2hlY2sgZm9yIGVycm9ycyBhbmQg
b3V0cHV0IG1lc3NhZ2VzIGFueSByZW1haW5pbmcgZXJyb3JzIG9uIHRoZSBjb250ZXh0LgogICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBhcmUgbm8gZXJyb3JzLgotICAgIHN0YXRpYyBib29s
IHZhbGlkYXRlKFRCYXNpY1R5cGUgc3dpdGNoVHlwZSwgVFBhcnNlQ29udGV4dCAqY29udGV4dCwK
LSAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqc3RhdGVtZW50TGlzdCwgY29uc3QgVFNvdXJjZUxv
YyAmbG9jKTsKKyAgICBzdGF0aWMgYm9vbCB2YWxpZGF0ZShUQmFzaWNUeXBlIHN3aXRjaFR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgVFBhcnNlQ29udGV4dCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBUSW50ZXJtQmxvY2sgKnN0YXRlbWVudExpc3QsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jKTsKIAogICAgIHZvaWQgdmlz
aXRTeW1ib2woVEludGVybVN5bWJvbCAqKSBvdmVycmlkZTsKICAgICB2b2lkIHZpc2l0Q29uc3Rh
bnRVbmlvbihUSW50ZXJtQ29uc3RhbnRVbmlvbiAqKSBvdmVycmlkZTsKICAgICBib29sIHZpc2l0
QmluYXJ5KFZpc2l0LCBUSW50ZXJtQmluYXJ5ICopIG92ZXJyaWRlOwogICAgIGJvb2wgdmlzaXRV
bmFyeShWaXNpdCwgVEludGVybVVuYXJ5ICopIG92ZXJyaWRlOwotICAgIGJvb2wgdmlzaXRTZWxl
Y3Rpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1TZWxlY3Rpb24gKikgb3ZlcnJpZGU7CisgICAgYm9v
bCB2aXNpdFRlcm5hcnkoVmlzaXQsIFRJbnRlcm1UZXJuYXJ5ICopIG92ZXJyaWRlOworICAgIGJv
b2wgdmlzaXRJZkVsc2UoVmlzaXQgdmlzaXQsIFRJbnRlcm1JZkVsc2UgKikgb3ZlcnJpZGU7CiAg
ICAgYm9vbCB2aXNpdFN3aXRjaChWaXNpdCwgVEludGVybVN3aXRjaCAqKSBvdmVycmlkZTsKICAg
ICBib29sIHZpc2l0Q2FzZShWaXNpdCwgVEludGVybUNhc2UgKm5vZGUpIG92ZXJyaWRlOwogICAg
IGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKikgb3ZlcnJpZGU7
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9W
YXJpYWJsZUluZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1ZhcmlhYmxlSW5mby5jcHAJKHJldmlzaW9uIDIwNzgwNCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Zhcmlh
YmxlSW5mby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDU4ICszMSw2IEBAIHZvaWQgRXhwYW5k
VXNlckRlZmluZWRWYXJpYWJsZShjb25zdCBTaGEKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyAmbWFwcGVkTmFtZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIG1hcmtTdGF0aWNVc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjp2ZWN0b3I8U2hhZGVyVmFyaWFibGU+ICpleHBhbmRlZCk7Ci0KLXZvaWQgRXhw
YW5kVmFyaWFibGUoY29uc3QgU2hhZGVyVmFyaWFibGUgJnZhcmlhYmxlLAotICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcgJm1hcHBlZE5hbWUsCi0gICAgICAgICAgICAgICAgICAgIGJvb2wgbWFy
a1N0YXRpY1VzZSwKLSAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8U2hhZGVyVmFyaWFi
bGU+ICpleHBhbmRlZCkKLXsKLSAgICBpZiAodmFyaWFibGUuaXNTdHJ1Y3QoKSkKLSAgICB7Ci0g
ICAgICAgIGlmICh2YXJpYWJsZS5pc0FycmF5KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaW50IGVsZW1lbnRJbmRleCA9IDA7IGVsZW1lbnRJbmRleCA8IHZhcmlhYmxl
LmVsZW1lbnRDb3VudCgpOwotICAgICAgICAgICAgICAgICBlbGVtZW50SW5kZXgrKykKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBsbmFtZSA9IG5hbWUgKyA6OkFy
cmF5U3RyaW5nKGVsZW1lbnRJbmRleCk7Ci0gICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgbG1h
cHBlZE5hbWUgPSBtYXBwZWROYW1lICsgOjpBcnJheVN0cmluZyhlbGVtZW50SW5kZXgpOwotICAg
ICAgICAgICAgICAgIEV4cGFuZFVzZXJEZWZpbmVkVmFyaWFibGUodmFyaWFibGUsIGxuYW1lLCBs
bWFwcGVkTmFtZSwgbWFya1N0YXRpY1VzZSwgZXhwYW5kZWQpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgRXhwYW5kVXNlckRl
ZmluZWRWYXJpYWJsZSh2YXJpYWJsZSwgbmFtZSwgbWFwcGVkTmFtZSwgbWFya1N0YXRpY1VzZSwg
ZXhwYW5kZWQpOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIFNo
YWRlclZhcmlhYmxlIGV4cGFuZGVkVmFyID0gdmFyaWFibGU7Ci0KLSAgICAgICAgZXhwYW5kZWRW
YXIubmFtZSA9IG5hbWU7Ci0gICAgICAgIGV4cGFuZGVkVmFyLm1hcHBlZE5hbWUgPSBtYXBwZWRO
YW1lOwotCi0gICAgICAgIC8vIE1hcmsgYWxsIGV4cGFuZGVkIGZpZWxkcyBhcyB1c2VkIGlmIHRo
ZSBwYXJlbnQgaXMgdXNlZAotICAgICAgICBpZiAobWFya1N0YXRpY1VzZSkKLSAgICAgICAgewot
ICAgICAgICAgICAgZXhwYW5kZWRWYXIuc3RhdGljVXNlID0gdHJ1ZTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmIChleHBhbmRlZFZhci5pc0FycmF5KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGV4cGFuZGVkVmFyLm5hbWUgKz0gIlswXSI7Ci0gICAgICAgICAgICBleHBhbmRlZFZhci5tYXBw
ZWROYW1lICs9ICJbMF0iOwotICAgICAgICB9Ci0KLSAgICAgICAgZXhwYW5kZWQtPnB1c2hfYmFj
ayhleHBhbmRlZFZhcik7Ci0gICAgfQotfQotCi12b2lkIEV4cGFuZFVzZXJEZWZpbmVkVmFyaWFi
bGUoY29uc3QgU2hhZGVyVmFyaWFibGUgJnZhcmlhYmxlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZtYXBwZWROYW1lLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgbWFya1N0YXRpY1VzZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6OnZlY3RvcjxTaGFkZXJWYXJpYWJsZT4gKmV4cGFuZGVkKQogewogICAg
IEFTU0VSVCh2YXJpYWJsZS5pc1N0cnVjdCgpKTsKQEAgLTEyMiw3ICs3MCw4IEBAIENvbGxlY3RW
YXJpYWJsZXM6OkNvbGxlY3RWYXJpYWJsZXMoc3RkOjoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjp2ZWN0b3I8c2g6OlZhcnlpbmc+ICp2YXJ5aW5ncywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8c2g6OkludGVyZmFjZUJsb2Nr
PiAqaW50ZXJmYWNlQmxvY2tzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
aEhhc2hGdW5jdGlvbjY0IGhhc2hGdW5jdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVEV4dGVuc2lvbkJlaGF2aW9y
ICZleHRlbnNpb25CZWhhdmlvcikKICAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2Us
IGZhbHNlKSwKICAgICAgIG1BdHRyaWJzKGF0dHJpYnMpLAogICAgICAgbU91dHB1dFZhcmlhYmxl
cyhvdXRwdXRWYXJpYWJsZXMpLApAQCAtMTQ1LDcgKzk0LDggQEAgQ29sbGVjdFZhcmlhYmxlczo6
Q29sbGVjdFZhcmlhYmxlcyhzdGQ6OgogICAgICAgbVNlY29uZGFyeUZyYWdDb2xvckVYVEFkZGVk
KGZhbHNlKSwKICAgICAgIG1TZWNvbmRhcnlGcmFnRGF0YUVYVEFkZGVkKGZhbHNlKSwKICAgICAg
IG1IYXNoRnVuY3Rpb24oaGFzaEZ1bmN0aW9uKSwKLSAgICAgIG1TeW1ib2xUYWJsZShzeW1ib2xU
YWJsZSkKKyAgICAgIG1TeW1ib2xUYWJsZShzeW1ib2xUYWJsZSksCisgICAgICBtRXh0ZW5zaW9u
QmVoYXZpb3IoZXh0ZW5zaW9uQmVoYXZpb3IpCiB7CiB9CiAKQEAgLTQwMSwxMCArMzUxLDE3IEBA
IHZvaWQgQ29sbGVjdFZhcmlhYmxlczo6dmlzaXRTeW1ib2woVEludGUKICAgICAgICAgICAgICAg
ICAgIGluZm8ubmFtZSAgICAgICAgICA9IGtOYW1lOwogICAgICAgICAgICAgICAgICAgaW5mby5t
YXBwZWROYW1lICAgID0ga05hbWU7CiAgICAgICAgICAgICAgICAgICBpbmZvLnR5cGUgICAgICAg
ICAgPSBHTF9GTE9BVF9WRUM0OwotICAgICAgICAgICAgICAgICAgaW5mby5hcnJheVNpemUgPSBz
dGF0aWNfY2FzdDxjb25zdCBUVmFyaWFibGUgKj4oCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtU3ltYm9sVGFibGUuZmluZEJ1aWx0SW4oImdsX01heERyYXdCdWZmZXJz
IiwgMTAwKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+Z2V0Q29u
c3RQb2ludGVyKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+Z2V0
SUNvbnN0KCk7CisgICAgICAgICAgICAgICAgICBpZiAoOjpJc0V4dGVuc2lvbkVuYWJsZWQobUV4
dGVuc2lvbkJlaGF2aW9yLCAiR0xfRVhUX2RyYXdfYnVmZmVycyIpKQorICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgIGluZm8uYXJyYXlTaXplID0gc3RhdGljX2Nhc3Q8
Y29uc3QgVFZhcmlhYmxlICo+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbigiZ2xfTWF4RHJhd0J1ZmZlcnMiLCAxMDAp
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+Z2V0Q29uc3RQ
b2ludGVyKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmdl
dElDb25zdCgpOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgIGluZm8uYXJyYXlTaXpl
ID0gMTsKKyAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgIGluZm8ucHJlY2lz
aW9uID0gR0xfTUVESVVNX0ZMT0FUOyAgLy8gRGVmaW5lZCBieSBzcGVjLgogICAgICAgICAgICAg
ICAgICAgaW5mby5zdGF0aWNVc2UgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgbU91dHB1dFZh
cmlhYmxlcy0+cHVzaF9iYWNrKGluZm8pOwpAQCAtNTIwLDcgKzQ3Nyw3IEBAIHZvaWQgQ29sbGVj
dFZhcmlhYmxlczo6dmlzaXRWYXJpYWJsZShjb24KICAgICBhdHRyaWJ1dGUudHlwZSA9IEdMVmFy
aWFibGVUeXBlKHR5cGUpOwogICAgIGF0dHJpYnV0ZS5wcmVjaXNpb24gPSBHTFZhcmlhYmxlUHJl
Y2lzaW9uKHR5cGUpOwogICAgIGF0dHJpYnV0ZS5uYW1lID0gdmFyaWFibGUtPmdldFN5bWJvbCgp
LmNfc3RyKCk7Ci0gICAgYXR0cmlidXRlLmFycmF5U2l6ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
IGludD4odHlwZS5nZXRBcnJheVNpemUoKSk7CisgICAgYXR0cmlidXRlLmFycmF5U2l6ZSAgPSB0
eXBlLmdldEFycmF5U2l6ZSgpOwogICAgIGF0dHJpYnV0ZS5tYXBwZWROYW1lID0gVEludGVybVRy
YXZlcnNlcjo6aGFzaCh2YXJpYWJsZS0+Z2V0U3ltYm9sKCksIG1IYXNoRnVuY3Rpb24pLmNfc3Ry
KCk7CiAgICAgYXR0cmlidXRlLmxvY2F0aW9uID0gdmFyaWFibGUtPmdldFR5cGUoKS5nZXRMYXlv
dXRRdWFsaWZpZXIoKS5sb2NhdGlvbjsKIApAQCAtNTQwLDcgKzQ5Nyw3IEBAIHZvaWQgQ29sbGVj
dFZhcmlhYmxlczo6dmlzaXRWYXJpYWJsZShjb24KICAgICBhdHRyaWJ1dGUudHlwZSAgICAgICA9
IEdMVmFyaWFibGVUeXBlKHR5cGUpOwogICAgIGF0dHJpYnV0ZS5wcmVjaXNpb24gID0gR0xWYXJp
YWJsZVByZWNpc2lvbih0eXBlKTsKICAgICBhdHRyaWJ1dGUubmFtZSAgICAgICA9IHZhcmlhYmxl
LT5nZXRTeW1ib2woKS5jX3N0cigpOwotICAgIGF0dHJpYnV0ZS5hcnJheVNpemUgID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgaW50Pih0eXBlLmdldEFycmF5U2l6ZSgpKTsKKyAgICBhdHRyaWJ1dGUu
YXJyYXlTaXplICA9IHR5cGUuZ2V0QXJyYXlTaXplKCk7CiAgICAgYXR0cmlidXRlLm1hcHBlZE5h
bWUgPSBUSW50ZXJtVHJhdmVyc2VyOjpoYXNoKHZhcmlhYmxlLT5nZXRTeW1ib2woKSwgbUhhc2hG
dW5jdGlvbikuY19zdHIoKTsKICAgICBhdHRyaWJ1dGUubG9jYXRpb24gICA9IHZhcmlhYmxlLT5n
ZXRUeXBlKCkuZ2V0TGF5b3V0UXVhbGlmaWVyKCkubG9jYXRpb247CiAKQEAgLTY3Nyw2ICs2MzQs
NTIgQEAgYm9vbCBDb2xsZWN0VmFyaWFibGVzOjp2aXNpdEJpbmFyeShWaXNpdAogICAgIHJldHVy
biB0cnVlOwogfQogCit2b2lkIEV4cGFuZFZhcmlhYmxlKGNvbnN0IFNoYWRlclZhcmlhYmxlICZ2
YXJpYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsCisg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZtYXBwZWROYW1lLAorICAgICAg
ICAgICAgICAgICAgICBib29sIG1hcmtTdGF0aWNVc2UsCisgICAgICAgICAgICAgICAgICAgIHN0
ZDo6dmVjdG9yPFNoYWRlclZhcmlhYmxlPiAqZXhwYW5kZWQpCit7CisgICAgaWYgKHZhcmlhYmxl
LmlzU3RydWN0KCkpCisgICAgeworICAgICAgICBpZiAodmFyaWFibGUuaXNBcnJheSgpKQorICAg
ICAgICB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBlbGVtZW50SW5kZXggPSAwOyBl
bGVtZW50SW5kZXggPCB2YXJpYWJsZS5lbGVtZW50Q291bnQoKTsKKyAgICAgICAgICAgICAgICAg
ZWxlbWVudEluZGV4KyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3RkOjpzdHJp
bmcgbG5hbWUgICAgICAgPSBuYW1lICsgOjpBcnJheVN0cmluZyhlbGVtZW50SW5kZXgpOworICAg
ICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGxtYXBwZWROYW1lID0gbWFwcGVkTmFtZSArIDo6QXJy
YXlTdHJpbmcoZWxlbWVudEluZGV4KTsKKyAgICAgICAgICAgICAgICBFeHBhbmRVc2VyRGVmaW5l
ZFZhcmlhYmxlKHZhcmlhYmxlLCBsbmFtZSwgbG1hcHBlZE5hbWUsIG1hcmtTdGF0aWNVc2UsIGV4
cGFuZGVkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAg
IHsKKyAgICAgICAgICAgIEV4cGFuZFVzZXJEZWZpbmVkVmFyaWFibGUodmFyaWFibGUsIG5hbWUs
IG1hcHBlZE5hbWUsIG1hcmtTdGF0aWNVc2UsIGV4cGFuZGVkKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBlbHNlCisgICAgeworICAgICAgICBTaGFkZXJWYXJpYWJsZSBleHBhbmRlZFZhciA9IHZh
cmlhYmxlOworCisgICAgICAgIGV4cGFuZGVkVmFyLm5hbWUgICAgICAgPSBuYW1lOworICAgICAg
ICBleHBhbmRlZFZhci5tYXBwZWROYW1lID0gbWFwcGVkTmFtZTsKKworICAgICAgICAvLyBNYXJr
IGFsbCBleHBhbmRlZCBmaWVsZHMgYXMgdXNlZCBpZiB0aGUgcGFyZW50IGlzIHVzZWQKKyAgICAg
ICAgaWYgKG1hcmtTdGF0aWNVc2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIGV4cGFuZGVkVmFy
LnN0YXRpY1VzZSA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZXhwYW5kZWRWYXIu
aXNBcnJheSgpKQorICAgICAgICB7CisgICAgICAgICAgICBleHBhbmRlZFZhci5uYW1lICs9ICJb
MF0iOworICAgICAgICAgICAgZXhwYW5kZWRWYXIubWFwcGVkTmFtZSArPSAiWzBdIjsKKyAgICAg
ICAgfQorCisgICAgICAgIGV4cGFuZGVkLT5wdXNoX2JhY2soZXhwYW5kZWRWYXIpOworICAgIH0K
K30KKwogdm9pZCBFeHBhbmRVbmlmb3Jtcyhjb25zdCBzdGQ6OnZlY3RvcjxVbmlmb3JtPiAmY29t
cGFjdCwKICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8U2hhZGVyVmFyaWFibGU+ICpl
eHBhbmRlZCkKIHsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1ZhcmlhYmxlSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhcmlhYmxlSW5mby5oCShyZXZpc2lvbiAy
MDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9WYXJpYWJsZUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtOSw2ICs5LDcgQEAKIAogI2luY2x1
ZGUgPEdMU0xBTkcvU2hhZGVyTGFuZy5oPgogCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRv
ci9FeHRlbnNpb25CZWhhdmlvci5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50
ZXJtTm9kZS5oIgogCiBjbGFzcyBUU3ltYm9sVGFibGU7CkBAIC0yNiw3ICsyNyw4IEBAIGNsYXNz
IENvbGxlY3RWYXJpYWJsZXMgOiBwdWJsaWMgVEludGVybVQKICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6dmVjdG9yPFZhcnlpbmc+ICp2YXJ5aW5ncywKICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6dmVjdG9yPEludGVyZmFjZUJsb2NrPiAqaW50ZXJmYWNlQmxvY2tzLAogICAgICAgICAgICAg
ICAgICAgICAgU2hIYXNoRnVuY3Rpb242NCBoYXNoRnVuY3Rpb24sCi0gICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlKTsKKyAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFibGUsCisgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3IgJmV4dGVuc2lvbkJlaGF2aW9yKTsKIAogICAgIHZv
aWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqc3ltYm9sKSBvdmVycmlkZTsKICAgICBib29s
IHZpc2l0QWdncmVnYXRlKFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKSBvdmVycmlkZTsK
QEAgLTY3LDggKzY5LDE1IEBAIGNsYXNzIENvbGxlY3RWYXJpYWJsZXMgOiBwdWJsaWMgVEludGVy
bVQKICAgICBTaEhhc2hGdW5jdGlvbjY0IG1IYXNoRnVuY3Rpb247CiAKICAgICBjb25zdCBUU3lt
Ym9sVGFibGUgJm1TeW1ib2xUYWJsZTsKKyAgICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3IgJm1F
eHRlbnNpb25CZWhhdmlvcjsKIH07CiAKK3ZvaWQgRXhwYW5kVmFyaWFibGUoY29uc3QgU2hhZGVy
VmFyaWFibGUgJnZhcmlhYmxlLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyAmbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm1hcHBlZE5h
bWUsCisgICAgICAgICAgICAgICAgICAgIGJvb2wgbWFya1N0YXRpY1VzZSwKKyAgICAgICAgICAg
ICAgICAgICAgc3RkOjp2ZWN0b3I8U2hhZGVyVmFyaWFibGU+ICpleHBhbmRlZCk7CisKIC8vIEV4
cGFuZCBzdHJ1Y3QgdW5pZm9ybXMgdG8gZmxhdHRlbmVkIGxpc3RzIG9mIHNwbGl0IHZhcmlhYmxl
cwogdm9pZCBFeHBhbmRVbmlmb3Jtcyhjb25zdCBzdGQ6OnZlY3RvcjxVbmlmb3JtPiAmY29tcGFj
dCwKICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8U2hhZGVyVmFyaWFibGU+ICpleHBh
bmRlZCk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9WYXJpYWJsZVBhY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFyaWFibGVQYWNrZXIuY3BwCShyZXZpc2lv
biAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9WYXJpYWJsZVBhY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OCwxNSArMTQ4LDIx
IEBAIGJvb2wgVmFyaWFibGVQYWNrZXI6OnNlYXJjaENvbHVtbihpbnQgY28KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFZhclQ+Ci1ib29sIFZhcmlhYmxlUGFja2Vy
OjpDaGVja1ZhcmlhYmxlc1dpdGhpblBhY2tpbmdMaW1pdHModW5zaWduZWQgaW50IG1heFZlY3Rv
cnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjp2ZWN0b3I8VmFyVD4gJmluX3ZhcmlhYmxlcykKK2Jvb2wgVmFyaWFibGVQ
YWNrZXI6OkNoZWNrVmFyaWFibGVzV2l0aGluUGFja2luZ0xpbWl0cygKKyAgICB1bnNpZ25lZCBp
bnQgbWF4VmVjdG9ycywKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6U2hhZGVyVmFyaWFibGU+
ICZpbl92YXJpYWJsZXMpCiB7CiAgICAgQVNTRVJUKG1heFZlY3RvcnMgPiAwKTsKICAgICBtYXhS
b3dzXyA9IG1heFZlY3RvcnM7CiAgICAgdG9wTm9uRnVsbFJvd18gPSAwOwogICAgIGJvdHRvbU5v
bkZ1bGxSb3dfID0gbWF4Um93c18gLSAxOwotICAgIHN0ZDo6dmVjdG9yPFZhclQ+IHZhcmlhYmxl
cyhpbl92YXJpYWJsZXMpOworICAgIHN0ZDo6dmVjdG9yPHNoOjpTaGFkZXJWYXJpYWJsZT4gdmFy
aWFibGVzOworCisgICAgZm9yIChjb25zdCBhdXRvICZ2YXJpYWJsZSA6IGluX3ZhcmlhYmxlcykK
KyAgICB7CisgICAgICAgIEV4cGFuZFZhcmlhYmxlKHZhcmlhYmxlLCB2YXJpYWJsZS5uYW1lLCB2
YXJpYWJsZS5tYXBwZWROYW1lLCB2YXJpYWJsZS5zdGF0aWNVc2UsCisgICAgICAgICAgICAgICAg
ICAgICAgICZ2YXJpYWJsZXMpOworICAgIH0KIAogICAgIC8vIENoZWNrIHdoZXRoZXIgZWFjaCB2
YXJpYWJsZSBmaXRzIGluIHRoZSBhdmFpbGFibGUgdmVjdG9ycy4KICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHZhcmlhYmxlcy5zaXplKCk7IGkrKykgewpAQCAtMjYxLDkgKzI2NywzIEBAIGJv
b2wgVmFyaWFibGVQYWNrZXI6OkNoZWNrVmFyaWFibGVzV2l0aGkKIAogICAgIHJldHVybiB0cnVl
OwogfQotCi0vLyBJbnN0YW50aWF0ZSBhbGwgcG9zc2libGUgdmFyaWFibGUgcGFja2luZ3MKLXRl
bXBsYXRlIGJvb2wgVmFyaWFibGVQYWNrZXI6OkNoZWNrVmFyaWFibGVzV2l0aGluUGFja2luZ0xp
bWl0cyh1bnNpZ25lZCBpbnQsIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpTaGFkZXJWYXJpYWJsZT4g
Jik7Ci10ZW1wbGF0ZSBib29sIFZhcmlhYmxlUGFja2VyOjpDaGVja1ZhcmlhYmxlc1dpdGhpblBh
Y2tpbmdMaW1pdHModW5zaWduZWQgaW50LCBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6QXR0cmlidXRl
PiAmKTsKLXRlbXBsYXRlIGJvb2wgVmFyaWFibGVQYWNrZXI6OkNoZWNrVmFyaWFibGVzV2l0aGlu
UGFja2luZ0xpbWl0cyh1bnNpZ25lZCBpbnQsIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpVbmlmb3Jt
PiAmKTsKLXRlbXBsYXRlIGJvb2wgVmFyaWFibGVQYWNrZXI6OkNoZWNrVmFyaWFibGVzV2l0aGlu
UGFja2luZ0xpbWl0cyh1bnNpZ25lZCBpbnQsIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpWYXJ5aW5n
PiAmKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1ZhcmlhYmxlUGFja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFyaWFibGVQYWNrZXIuaAkocmV2aXNpb24gMjA3
ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
VmFyaWFibGVQYWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTIsMzAgKzEyLDI5IEBACiAKIGNs
YXNzIFZhcmlhYmxlUGFja2VyIHsKICBwdWJsaWM6Ci0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHRo
ZSBwYXNzZWQgaW4gdmFyaWFibGVzIHBhY2sgaW4gbWF4VmVjdG9ycyBmb2xsb3dpbmcKLSAgICAv
LyB0aGUgcGFja2luZyBydWxlcyBmcm9tIHRoZSBHTFNMIDEuMDE3IHNwZWMsIEFwcGVuZGl4IEEs
IHNlY3Rpb24gNy4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmFyVD4KLSAgICBib29sIENoZWNr
VmFyaWFibGVzV2l0aGluUGFja2luZ0xpbWl0cyh1bnNpZ25lZCBpbnQgbWF4VmVjdG9ycywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3Rv
cjxWYXJUPiAmaW5fdmFyaWFibGVzKTsKLQotICAgIC8vIEdldHMgaG93IG1hbnkgY29tcG9uZW50
cyBpbiBhIHJvdyBhIGRhdGEgdHlwZSB0YWtlcy4KLSAgICBzdGF0aWMgaW50IEdldE51bUNvbXBv
bmVudHNQZXJSb3coc2g6OkdMZW51bSB0eXBlKTsKLQotICAgIC8vIEdldHMgaG93IG1hbnkgcm93
cyBhIGRhdGEgdHlwZSB0YWtlcy4KLSAgICBzdGF0aWMgaW50IEdldE51bVJvd3Moc2g6OkdMZW51
bSB0eXBlKTsKLQotICBwcml2YXRlOgotICAgIHN0YXRpYyBjb25zdCBpbnQga051bUNvbHVtbnMg
PSA0OwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBrQ29sdW1uTWFzayA9ICgxIDw8IGtOdW1D
b2x1bW5zKSAtIDE7Ci0KLSAgICB1bnNpZ25lZCBtYWtlQ29sdW1uRmxhZ3MoaW50IGNvbHVtbiwg
aW50IG51bUNvbXBvbmVudHNQZXJSb3cpOwotICAgIHZvaWQgZmlsbENvbHVtbnMoaW50IHRvcFJv
dywgaW50IG51bVJvd3MsIGludCBjb2x1bW4sIGludCBudW1Db21wb25lbnRzUGVyUm93KTsKLSAg
ICBib29sIHNlYXJjaENvbHVtbihpbnQgY29sdW1uLCBpbnQgbnVtUm93cywgaW50KiBkZXN0Um93
LCBpbnQqIGRlc3RTaXplKTsKLQotICAgIGludCB0b3BOb25GdWxsUm93XzsKLSAgICBpbnQgYm90
dG9tTm9uRnVsbFJvd187Ci0gICAgaW50IG1heFJvd3NfOwotICAgIHN0ZDo6dmVjdG9yPHVuc2ln
bmVkPiByb3dzXzsKKyAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgcGFzc2VkIGluIHZhcmlhYmxl
cyBwYWNrIGluIG1heFZlY3RvcnMgZm9sbG93aW5nCisgICAvLyB0aGUgcGFja2luZyBydWxlcyBm
cm9tIHRoZSBHTFNMIDEuMDE3IHNwZWMsIEFwcGVuZGl4IEEsIHNlY3Rpb24gNy4KKyAgIGJvb2wg
Q2hlY2tWYXJpYWJsZXNXaXRoaW5QYWNraW5nTGltaXRzKHVuc2lnbmVkIGludCBtYXhWZWN0b3Jz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2
ZWN0b3I8c2g6OlNoYWRlclZhcmlhYmxlPiAmaW5fdmFyaWFibGVzKTsKKworICAgLy8gR2V0cyBo
b3cgbWFueSBjb21wb25lbnRzIGluIGEgcm93IGEgZGF0YSB0eXBlIHRha2VzLgorICAgc3RhdGlj
IGludCBHZXROdW1Db21wb25lbnRzUGVyUm93KHNoOjpHTGVudW0gdHlwZSk7CisKKyAgIC8vIEdl
dHMgaG93IG1hbnkgcm93cyBhIGRhdGEgdHlwZSB0YWtlcy4KKyAgIHN0YXRpYyBpbnQgR2V0TnVt
Um93cyhzaDo6R0xlbnVtIHR5cGUpOworCisgcHJpdmF0ZToKKyAgIHN0YXRpYyBjb25zdCBpbnQg
a051bUNvbHVtbnMgICAgICA9IDQ7CisgICBzdGF0aWMgY29uc3QgdW5zaWduZWQga0NvbHVtbk1h
c2sgPSAoMSA8PCBrTnVtQ29sdW1ucykgLSAxOworCisgICB1bnNpZ25lZCBtYWtlQ29sdW1uRmxh
Z3MoaW50IGNvbHVtbiwgaW50IG51bUNvbXBvbmVudHNQZXJSb3cpOworICAgdm9pZCBmaWxsQ29s
dW1ucyhpbnQgdG9wUm93LCBpbnQgbnVtUm93cywgaW50IGNvbHVtbiwgaW50IG51bUNvbXBvbmVu
dHNQZXJSb3cpOworICAgYm9vbCBzZWFyY2hDb2x1bW4oaW50IGNvbHVtbiwgaW50IG51bVJvd3Ms
IGludCAqZGVzdFJvdywgaW50ICpkZXN0U2l6ZSk7CisKKyAgIGludCB0b3BOb25GdWxsUm93XzsK
KyAgIGludCBib3R0b21Ob25GdWxsUm93XzsKKyAgIGludCBtYXhSb3dzXzsKKyAgIHN0ZDo6dmVj
dG9yPHVuc2lnbmVkPiByb3dzXzsKIH07CiAKICNlbmRpZiAvLyBDT01QSUxFUl9UUkFOU0xBVE9S
X1ZBUklBQkxFUEFDS0VSX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9WZXJzaW9uR0xTTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmVyc2lvbkdMU0wuY3BwCShy
ZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9WZXJzaW9uR0xTTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDEwICs2OCw2
IEBAIGJvb2wgVFZlcnNpb25HTFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCwKIAogICAgIHN3aXRj
aCAobm9kZS0+Z2V0T3AoKSkKICAgICB7Ci0gICAgICBjYXNlIEVPcFNlcXVlbmNlOgotICAgICAg
ICAvLyBXZSBuZWVkIHRvIHZpc2l0IHNlcXVlbmNlIGNoaWxkcmVuIHRvIGdldCB0byBnbG9iYWwg
b3IgaW5uZXIgc2NvcGUuCi0gICAgICAgIHZpc2l0Q2hpbGRyZW4gPSB0cnVlOwotICAgICAgICBi
cmVhazsKICAgICAgIGNhc2UgRU9wRGVjbGFyYXRpb246CiAgICAgICAgIHsKICAgICAgICAgICAg
IGNvbnN0IFRJbnRlcm1TZXF1ZW5jZSAmc2VxdWVuY2UgPSAqKG5vZGUtPmdldFNlcXVlbmNlKCkp
OwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
ZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9kZXBncmFwaC9EZXBlbmRlbmN5R3Jh
cGguY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGguY3BwCShub25leGlz
dGVudCkKQEAgLTEsOTUgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNsdWRlICJjb21waWxl
ci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaC5oIgotI2luY2x1ZGUgImNvbXBp
bGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5oIgotCi1URGVw
ZW5kZW5jeUdyYXBoOjpURGVwZW5kZW5jeUdyYXBoKFRJbnRlcm1Ob2RlKiBpbnRlcm1Ob2RlKQot
ewotICAgIFREZXBlbmRlbmN5R3JhcGhCdWlsZGVyOjpidWlsZChpbnRlcm1Ob2RlLCB0aGlzKTsK
LX0KLQotVERlcGVuZGVuY3lHcmFwaDo6flREZXBlbmRlbmN5R3JhcGgoKQotewotICAgIGZvciAo
VEdyYXBoTm9kZVZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1BbGxOb2Rlcy5iZWdpbigp
OyBpdGVyICE9IG1BbGxOb2Rlcy5lbmQoKTsgKytpdGVyKQotICAgIHsKLSAgICAgICAgVEdyYXBo
Tm9kZSogbm9kZSA9ICppdGVyOwotICAgICAgICBkZWxldGUgbm9kZTsKLSAgICB9Ci19Ci0KLVRH
cmFwaEFyZ3VtZW50KiBURGVwZW5kZW5jeUdyYXBoOjpjcmVhdGVBcmd1bWVudChUSW50ZXJtQWdn
cmVnYXRlKiBpbnRlcm1GdW5jdGlvbkNhbGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGFyZ3VtZW50TnVtYmVyKQotewotICAgIFRHcmFwaEFy
Z3VtZW50KiBhcmd1bWVudCA9IG5ldyBUR3JhcGhBcmd1bWVudChpbnRlcm1GdW5jdGlvbkNhbGws
IGFyZ3VtZW50TnVtYmVyKTsKLSAgICBtQWxsTm9kZXMucHVzaF9iYWNrKGFyZ3VtZW50KTsKLSAg
ICByZXR1cm4gYXJndW1lbnQ7Ci19Ci0KLVRHcmFwaEZ1bmN0aW9uQ2FsbCogVERlcGVuZGVuY3lH
cmFwaDo6Y3JlYXRlRnVuY3Rpb25DYWxsKFRJbnRlcm1BZ2dyZWdhdGUqIGludGVybUZ1bmN0aW9u
Q2FsbCkKLXsKLSAgICBUR3JhcGhGdW5jdGlvbkNhbGwqIGZ1bmN0aW9uQ2FsbCA9IG5ldyBUR3Jh
cGhGdW5jdGlvbkNhbGwoaW50ZXJtRnVuY3Rpb25DYWxsKTsKLSAgICBtQWxsTm9kZXMucHVzaF9i
YWNrKGZ1bmN0aW9uQ2FsbCk7Ci0gICAgaWYgKGZ1bmN0aW9uQ2FsbC0+Z2V0SW50ZXJtRnVuY3Rp
b25DYWxsKCktPmlzVXNlckRlZmluZWQoKSkKLSAgICAgICAgbVVzZXJEZWZpbmVkRnVuY3Rpb25D
YWxscy5wdXNoX2JhY2soZnVuY3Rpb25DYWxsKTsKLSAgICByZXR1cm4gZnVuY3Rpb25DYWxsOwot
fQotCi1UR3JhcGhTeW1ib2wqIFREZXBlbmRlbmN5R3JhcGg6OmdldE9yQ3JlYXRlU3ltYm9sKFRJ
bnRlcm1TeW1ib2wqIGludGVybVN5bWJvbCkKLXsKLSAgICBUU3ltYm9sSWRNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ZXIgPSBtU3ltYm9sSWRNYXAuZmluZChpbnRlcm1TeW1ib2wtPmdldElkKCkpOwot
Ci0gICAgVEdyYXBoU3ltYm9sKiBzeW1ib2wgPSBOVUxMOwotCi0gICAgaWYgKGl0ZXIgIT0gbVN5
bWJvbElkTWFwLmVuZCgpKSB7Ci0gICAgICAgIFRTeW1ib2xJZFBhaXIgcGFpciA9ICppdGVyOwot
ICAgICAgICBzeW1ib2wgPSBwYWlyLnNlY29uZDsKLSAgICB9IGVsc2UgewotICAgICAgICBzeW1i
b2wgPSBuZXcgVEdyYXBoU3ltYm9sKGludGVybVN5bWJvbCk7Ci0gICAgICAgIG1BbGxOb2Rlcy5w
dXNoX2JhY2soc3ltYm9sKTsKLQotICAgICAgICBUU3ltYm9sSWRQYWlyIHBhaXIoaW50ZXJtU3lt
Ym9sLT5nZXRJZCgpLCBzeW1ib2wpOwotICAgICAgICBtU3ltYm9sSWRNYXAuaW5zZXJ0KHBhaXIp
OwotCi0gICAgICAgIC8vIFdlIHNhdmUgYWxsIHNhbXBsZXIgc3ltYm9scyBpbiBhIGNvbGxlY3Rp
b24sIHNvIHdlIGNhbiBzdGFydCBncmFwaCB0cmF2ZXJzYWxzIGZyb20gdGhlbSBxdWlja2x5Lgot
ICAgICAgICBpZiAoSXNTYW1wbGVyKGludGVybVN5bWJvbC0+Z2V0QmFzaWNUeXBlKCkpKQotICAg
ICAgICAgICAgbVNhbXBsZXJTeW1ib2xzLnB1c2hfYmFjayhzeW1ib2wpOwotICAgIH0KLQotICAg
IHJldHVybiBzeW1ib2w7Ci19Ci0KLVRHcmFwaFNlbGVjdGlvbiogVERlcGVuZGVuY3lHcmFwaDo6
Y3JlYXRlU2VsZWN0aW9uKFRJbnRlcm1TZWxlY3Rpb24qIGludGVybVNlbGVjdGlvbikKLXsKLSAg
ICBUR3JhcGhTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IG5ldyBUR3JhcGhTZWxlY3Rpb24oaW50ZXJt
U2VsZWN0aW9uKTsKLSAgICBtQWxsTm9kZXMucHVzaF9iYWNrKHNlbGVjdGlvbik7Ci0gICAgcmV0
dXJuIHNlbGVjdGlvbjsKLX0KLQotVEdyYXBoTG9vcCogVERlcGVuZGVuY3lHcmFwaDo6Y3JlYXRl
TG9vcChUSW50ZXJtTG9vcCogaW50ZXJtTG9vcCkKLXsKLSAgICBUR3JhcGhMb29wKiBsb29wID0g
bmV3IFRHcmFwaExvb3AoaW50ZXJtTG9vcCk7Ci0gICAgbUFsbE5vZGVzLnB1c2hfYmFjayhsb29w
KTsKLSAgICByZXR1cm4gbG9vcDsKLX0KLQotVEdyYXBoTG9naWNhbE9wKiBURGVwZW5kZW5jeUdy
YXBoOjpjcmVhdGVMb2dpY2FsT3AoVEludGVybUJpbmFyeSogaW50ZXJtTG9naWNhbE9wKQotewot
ICAgIFRHcmFwaExvZ2ljYWxPcCogbG9naWNhbE9wID0gbmV3IFRHcmFwaExvZ2ljYWxPcChpbnRl
cm1Mb2dpY2FsT3ApOwotICAgIG1BbGxOb2Rlcy5wdXNoX2JhY2sobG9naWNhbE9wKTsKLSAgICBy
ZXR1cm4gbG9naWNhbE9wOwotfQotCi1jb25zdCBjaGFyKiBUR3JhcGhMb2dpY2FsT3A6OmdldE9w
U3RyaW5nKCkgY29uc3QKLXsKLSAgICBjb25zdCBjaGFyKiBvcFN0cmluZyA9IE5VTEw7Ci0gICAg
c3dpdGNoIChnZXRJbnRlcm1Mb2dpY2FsT3AoKS0+Z2V0T3AoKSkgewotICAgICAgICBjYXNlIEVP
cExvZ2ljYWxBbmQ6IG9wU3RyaW5nID0gImFuZCI7IGJyZWFrOwotICAgICAgICBjYXNlIEVPcExv
Z2ljYWxPcjogb3BTdHJpbmcgPSAib3IiOyBicmVhazsKLSAgICAgICAgZGVmYXVsdDogb3BTdHJp
bmcgPSAidW5rbm93biI7IGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gb3BTdHJpbmc7Ci19CgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGguY3BwCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRl
ZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVw
ZW5kZW5jeUdyYXBoLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaC5oCShu
b25leGlzdGVudCkKQEAgLTEsMTk5ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTIg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaWZuZGVmIENP
TVBJTEVSX1RSQU5TTEFUT1JfREVQR1JBUEhfREVQRU5ERU5DWUdSQVBIX0hfCi0jZGVmaW5lIENP
TVBJTEVSX1RSQU5TTEFUT1JfREVQR1JBUEhfREVQRU5ERU5DWUdSQVBIX0hfCi0KLSNpbmNsdWRl
ICJjb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuaCIKLQotI2luY2x1ZGUgPHNldD4KLSNp
bmNsdWRlIDxzdGFjaz4KLQotY2xhc3MgVEdyYXBoTm9kZTsKLWNsYXNzIFRHcmFwaFBhcmVudE5v
ZGU7Ci1jbGFzcyBUR3JhcGhBcmd1bWVudDsKLWNsYXNzIFRHcmFwaEZ1bmN0aW9uQ2FsbDsKLWNs
YXNzIFRHcmFwaFN5bWJvbDsKLWNsYXNzIFRHcmFwaFNlbGVjdGlvbjsKLWNsYXNzIFRHcmFwaExv
b3A7Ci1jbGFzcyBUR3JhcGhMb2dpY2FsT3A7Ci1jbGFzcyBURGVwZW5kZW5jeUdyYXBoVHJhdmVy
c2VyOwotY2xhc3MgVERlcGVuZGVuY3lHcmFwaE91dHB1dDsKLQotdHlwZWRlZiBzdGQ6OnNldDxU
R3JhcGhOb2RlKj4gVEdyYXBoTm9kZVNldDsKLXR5cGVkZWYgc3RkOjp2ZWN0b3I8VEdyYXBoTm9k
ZSo+IFRHcmFwaE5vZGVWZWN0b3I7Ci10eXBlZGVmIHN0ZDo6dmVjdG9yPFRHcmFwaFN5bWJvbCo+
IFRHcmFwaFN5bWJvbFZlY3RvcjsKLXR5cGVkZWYgc3RkOjp2ZWN0b3I8VEdyYXBoRnVuY3Rpb25D
YWxsKj4gVEZ1bmN0aW9uQ2FsbFZlY3RvcjsKLQotLy8KLS8vIEJhc2UgY2xhc3MgZm9yIGFsbCBk
ZXBlbmRlbmN5IGdyYXBoIG5vZGVzLgotLy8KLWNsYXNzIFRHcmFwaE5vZGUgewotcHVibGljOgot
ICAgIFRHcmFwaE5vZGUoVEludGVybU5vZGUqIG5vZGUpIDogaW50ZXJtTm9kZShub2RlKSB7fQot
ICAgIHZpcnR1YWwgflRHcmFwaE5vZGUoKSB7fQotICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZShU
RGVwZW5kZW5jeUdyYXBoVHJhdmVyc2VyKiBncmFwaFRyYXZlcnNlcik7Ci1wcm90ZWN0ZWQ6Ci0g
ICAgVEludGVybU5vZGUqIGludGVybU5vZGU7Ci19OwotCi0vLwotLy8gQmFzZSBjbGFzcyBmb3Ig
ZGVwZW5kZW5jeSBncmFwaCBub2RlcyB0aGF0IG1heSBoYXZlIGNoaWxkcmVuLgotLy8KLWNsYXNz
IFRHcmFwaFBhcmVudE5vZGUgOiBwdWJsaWMgVEdyYXBoTm9kZSB7Ci1wdWJsaWM6Ci0gICAgVEdy
YXBoUGFyZW50Tm9kZShUSW50ZXJtTm9kZSogbm9kZSkgOiBUR3JhcGhOb2RlKG5vZGUpIHt9Ci0g
ICAgflRHcmFwaFBhcmVudE5vZGUoKSBvdmVycmlkZSB7fQotICAgIHZvaWQgYWRkRGVwZW5kZW50
Tm9kZShUR3JhcGhOb2RlKiBub2RlKSB7IGlmIChub2RlICE9IHRoaXMpIG1EZXBlbmRlbnROb2Rl
cy5pbnNlcnQobm9kZSk7IH0KLSAgICB2b2lkIHRyYXZlcnNlKFREZXBlbmRlbmN5R3JhcGhUcmF2
ZXJzZXIgKmdyYXBoVHJhdmVyc2VyKSBvdmVycmlkZTsKLQotcHJpdmF0ZToKLSAgICBUR3JhcGhO
b2RlU2V0IG1EZXBlbmRlbnROb2RlczsKLX07Ci0KLS8vCi0vLyBIYW5kbGUgZnVuY3Rpb24gY2Fs
bCBhcmd1bWVudHMuCi0vLwotY2xhc3MgVEdyYXBoQXJndW1lbnQgOiBwdWJsaWMgVEdyYXBoUGFy
ZW50Tm9kZSB7Ci1wdWJsaWM6Ci0gICAgVEdyYXBoQXJndW1lbnQoVEludGVybUFnZ3JlZ2F0ZSog
aW50ZXJtRnVuY3Rpb25DYWxsLCBpbnQgYXJndW1lbnROdW1iZXIpCi0gICAgICAgIDogVEdyYXBo
UGFyZW50Tm9kZShpbnRlcm1GdW5jdGlvbkNhbGwpCi0gICAgICAgICwgbUFyZ3VtZW50TnVtYmVy
KGFyZ3VtZW50TnVtYmVyKSB7fQotICAgIH5UR3JhcGhBcmd1bWVudCgpIG92ZXJyaWRlIHt9Ci0g
ICAgY29uc3QgVEludGVybUFnZ3JlZ2F0ZSogZ2V0SW50ZXJtRnVuY3Rpb25DYWxsKCkgY29uc3Qg
eyByZXR1cm4gaW50ZXJtTm9kZS0+Z2V0QXNBZ2dyZWdhdGUoKTsgfQotICAgIGludCBnZXRBcmd1
bWVudE51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1Bcmd1bWVudE51bWJlcjsgfQotICAgIHZvaWQg
dHJhdmVyc2UoVERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlciAqZ3JhcGhUcmF2ZXJzZXIpIG92ZXJy
aWRlOwotCi1wcml2YXRlOgotICAgIGludCBtQXJndW1lbnROdW1iZXI7Ci19OwotCi0vLwotLy8g
SGFuZGxlIGZ1bmN0aW9uIGNhbGxzLgotLy8KLWNsYXNzIFRHcmFwaEZ1bmN0aW9uQ2FsbCA6IHB1
YmxpYyBUR3JhcGhQYXJlbnROb2RlIHsKLXB1YmxpYzoKLSAgICBUR3JhcGhGdW5jdGlvbkNhbGwo
VEludGVybUFnZ3JlZ2F0ZSogaW50ZXJtRnVuY3Rpb25DYWxsKQotICAgICAgICA6IFRHcmFwaFBh
cmVudE5vZGUoaW50ZXJtRnVuY3Rpb25DYWxsKSB7fQotICAgIH5UR3JhcGhGdW5jdGlvbkNhbGwo
KSBvdmVycmlkZSB7fQotICAgIGNvbnN0IFRJbnRlcm1BZ2dyZWdhdGUqIGdldEludGVybUZ1bmN0
aW9uQ2FsbCgpIGNvbnN0IHsgcmV0dXJuIGludGVybU5vZGUtPmdldEFzQWdncmVnYXRlKCk7IH0K
LSAgICB2b2lkIHRyYXZlcnNlKFREZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZXIgKmdyYXBoVHJhdmVy
c2VyKSBvdmVycmlkZTsKLX07Ci0KLS8vCi0vLyBIYW5kbGUgc3ltYm9scy4KLS8vCi1jbGFzcyBU
R3JhcGhTeW1ib2wgOiBwdWJsaWMgVEdyYXBoUGFyZW50Tm9kZSB7Ci1wdWJsaWM6Ci0gICAgVEdy
YXBoU3ltYm9sKFRJbnRlcm1TeW1ib2wqIGludGVybVN5bWJvbCkgOiBUR3JhcGhQYXJlbnROb2Rl
KGludGVybVN5bWJvbCkge30KLSAgICB+VEdyYXBoU3ltYm9sKCkgb3ZlcnJpZGUge30KLSAgICBj
b25zdCBUSW50ZXJtU3ltYm9sKiBnZXRJbnRlcm1TeW1ib2woKSBjb25zdCB7IHJldHVybiBpbnRl
cm1Ob2RlLT5nZXRBc1N5bWJvbE5vZGUoKTsgfQotICAgIHZvaWQgdHJhdmVyc2UoVERlcGVuZGVu
Y3lHcmFwaFRyYXZlcnNlciAqZ3JhcGhUcmF2ZXJzZXIpIG92ZXJyaWRlOwotfTsKLQotLy8KLS8v
IEhhbmRsZSBpZiBzdGF0ZW1lbnRzIGFuZCB0ZXJuYXJ5IG9wZXJhdG9ycy4KLS8vCi1jbGFzcyBU
R3JhcGhTZWxlY3Rpb24gOiBwdWJsaWMgVEdyYXBoTm9kZSB7Ci1wdWJsaWM6Ci0gICAgVEdyYXBo
U2VsZWN0aW9uKFRJbnRlcm1TZWxlY3Rpb24qIGludGVybVNlbGVjdGlvbikgOiBUR3JhcGhOb2Rl
KGludGVybVNlbGVjdGlvbikge30KLSAgICB+VEdyYXBoU2VsZWN0aW9uKCkgb3ZlcnJpZGUge30K
LSAgICBjb25zdCBUSW50ZXJtU2VsZWN0aW9uKiBnZXRJbnRlcm1TZWxlY3Rpb24oKSBjb25zdCB7
IHJldHVybiBpbnRlcm1Ob2RlLT5nZXRBc1NlbGVjdGlvbk5vZGUoKTsgfQotICAgIHZvaWQgdHJh
dmVyc2UoVERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlciAqZ3JhcGhUcmF2ZXJzZXIpIG92ZXJyaWRl
OwotfTsKLQotLy8KLS8vIEhhbmRsZSBmb3IsIGRvLXdoaWxlLCBhbmQgd2hpbGUgbG9vcHMuCi0v
LwotY2xhc3MgVEdyYXBoTG9vcCA6IHB1YmxpYyBUR3JhcGhOb2RlIHsKLXB1YmxpYzoKLSAgICBU
R3JhcGhMb29wKFRJbnRlcm1Mb29wKiBpbnRlcm1Mb29wKSA6IFRHcmFwaE5vZGUoaW50ZXJtTG9v
cCkge30KLSAgICB+VEdyYXBoTG9vcCgpIG92ZXJyaWRlIHt9Ci0gICAgY29uc3QgVEludGVybUxv
b3AqIGdldEludGVybUxvb3AoKSBjb25zdCB7IHJldHVybiBpbnRlcm1Ob2RlLT5nZXRBc0xvb3BO
b2RlKCk7IH0KLSAgICB2b2lkIHRyYXZlcnNlKFREZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZXIgKmdy
YXBoVHJhdmVyc2VyKSBvdmVycmlkZTsKLX07Ci0KLS8vCi0vLyBIYW5kbGUgbG9naWNhbCBhbmQs
IG9yLgotLy8KLWNsYXNzIFRHcmFwaExvZ2ljYWxPcCA6IHB1YmxpYyBUR3JhcGhOb2RlIHsKLXB1
YmxpYzoKLSAgICBUR3JhcGhMb2dpY2FsT3AoVEludGVybUJpbmFyeSogaW50ZXJtTG9naWNhbE9w
KSA6IFRHcmFwaE5vZGUoaW50ZXJtTG9naWNhbE9wKSB7fQotICAgIH5UR3JhcGhMb2dpY2FsT3Ao
KSBvdmVycmlkZSB7fQotICAgIGNvbnN0IFRJbnRlcm1CaW5hcnkqIGdldEludGVybUxvZ2ljYWxP
cCgpIGNvbnN0IHsgcmV0dXJuIGludGVybU5vZGUtPmdldEFzQmluYXJ5Tm9kZSgpOyB9Ci0gICAg
Y29uc3QgY2hhciogZ2V0T3BTdHJpbmcoKSBjb25zdDsKLSAgICB2b2lkIHRyYXZlcnNlKFREZXBl
bmRlbmN5R3JhcGhUcmF2ZXJzZXIgKmdyYXBoVHJhdmVyc2VyKSBvdmVycmlkZTsKLX07Ci0KLS8v
Ci0vLyBBIGRlcGVuZGVuY3kgZ3JhcGggb2Ygc3ltYm9scywgZnVuY3Rpb24gY2FsbHMsIGNvbmRp
dGlvbnMgZXRjLgotLy8KLS8vIFRoaXMgY2xhc3MgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIHRvIHRo
ZSBlbnRyeSBwb2ludHMgb2YgdGhlIGRlcGVuZGVuY3kgZ3JhcGguCi0vLwotLy8gRGVwZW5kZW5j
eSBncmFwaCBub2RlcyBzaG91bGQgYmUgY3JlYXRlZCBieSB1c2luZyBvbmUgb2YgdGhlIHByb3Zp
ZGVkICJjcmVhdGUuLi4iIG1ldGhvZHMuCi0vLyBUaGlzIGNsYXNzIChhbmQgbm9ib2R5IGVsc2Up
IG1hbmFnZXMgdGhlIG1lbW9yeSBvZiB0aGUgY3JlYXRlZCBub2Rlcy4KLS8vIE5vZGVzIG1heSBu
b3QgYmUgcmVtb3ZlZCBhZnRlciBiZWluZyBhZGRlZCwgc28gYWxsIGNyZWF0ZWQgbm9kZXMgd2ls
bCBleGlzdCB3aGlsZSB0aGUKLS8vIFREZXBlbmRlbmN5R3JhcGggaW5zdGFuY2UgZXhpc3RzLgot
Ly8KLWNsYXNzIFREZXBlbmRlbmN5R3JhcGggewotcHVibGljOgotICAgIFREZXBlbmRlbmN5R3Jh
cGgoVEludGVybU5vZGUqIGludGVybU5vZGUpOwotICAgIH5URGVwZW5kZW5jeUdyYXBoKCk7Ci0g
ICAgY29uc3QgVEdyYXBoTm9kZVZlY3RvciAmYWxsTm9kZXMoKSBjb25zdCB7IHJldHVybiBtQWxs
Tm9kZXM7IH0KLSAgICBjb25zdCBUR3JhcGhTeW1ib2xWZWN0b3IgJnNhbXBsZXJTeW1ib2xzKCkg
Y29uc3QgeyByZXR1cm4gbVNhbXBsZXJTeW1ib2xzOyB9Ci0gICAgY29uc3QgVEZ1bmN0aW9uQ2Fs
bFZlY3RvciAmdXNlckRlZmluZWRGdW5jdGlvbkNhbGxzKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtVXNlckRlZmluZWRGdW5jdGlvbkNhbGxzOwotICAgIH0KLQotICAgIFRHcmFwaEFy
Z3VtZW50KiBjcmVhdGVBcmd1bWVudChUSW50ZXJtQWdncmVnYXRlKiBpbnRlcm1GdW5jdGlvbkNh
bGwsIGludCBhcmd1bWVudE51bWJlcik7Ci0gICAgVEdyYXBoRnVuY3Rpb25DYWxsKiBjcmVhdGVG
dW5jdGlvbkNhbGwoVEludGVybUFnZ3JlZ2F0ZSogaW50ZXJtRnVuY3Rpb25DYWxsKTsKLSAgICBU
R3JhcGhTeW1ib2wqIGdldE9yQ3JlYXRlU3ltYm9sKFRJbnRlcm1TeW1ib2wqIGludGVybVN5bWJv
bCk7Ci0gICAgVEdyYXBoU2VsZWN0aW9uKiBjcmVhdGVTZWxlY3Rpb24oVEludGVybVNlbGVjdGlv
biogaW50ZXJtU2VsZWN0aW9uKTsKLSAgICBUR3JhcGhMb29wKiBjcmVhdGVMb29wKFRJbnRlcm1M
b29wKiBpbnRlcm1Mb29wKTsKLSAgICBUR3JhcGhMb2dpY2FsT3AqIGNyZWF0ZUxvZ2ljYWxPcChU
SW50ZXJtQmluYXJ5KiBpbnRlcm1Mb2dpY2FsT3ApOwotcHJpdmF0ZToKLSAgICB0eXBlZGVmIFRN
YXA8aW50LCBUR3JhcGhTeW1ib2wqPiBUU3ltYm9sSWRNYXA7Ci0gICAgdHlwZWRlZiBzdGQ6OnBh
aXI8aW50LCBUR3JhcGhTeW1ib2wqPiBUU3ltYm9sSWRQYWlyOwotCi0gICAgVEdyYXBoTm9kZVZl
Y3RvciBtQWxsTm9kZXM7Ci0gICAgVEdyYXBoU3ltYm9sVmVjdG9yIG1TYW1wbGVyU3ltYm9sczsK
LSAgICBURnVuY3Rpb25DYWxsVmVjdG9yIG1Vc2VyRGVmaW5lZEZ1bmN0aW9uQ2FsbHM7Ci0gICAg
VFN5bWJvbElkTWFwIG1TeW1ib2xJZE1hcDsKLX07Ci0KLS8vCi0vLyBGb3IgdHJhdmVyc2luZyB0
aGUgZGVwZW5kZW5jeSBncmFwaC4gVXNlcnMgc2hvdWxkIGRlcml2ZSBmcm9tIHRoaXMsCi0vLyBw
dXQgdGhlaXIgdHJhdmVyc2FsIHNwZWNpZmljIGRhdGEgaW4gaXQsIGFuZCB0aGVuIHBhc3MgaXQg
dG8gYQotLy8gdHJhdmVyc2UgbWV0aG9kLgotLy8KLS8vIFdoZW4gdXNpbmcgdGhpcywganVzdCBm
aWxsIGluIHRoZSBtZXRob2RzIGZvciBub2RlcyB5b3Ugd2FudCB2aXNpdGVkLgotLy8KLWNsYXNz
IFREZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZXIgOiBhbmdsZTo6Tm9uQ29weWFibGUgewotcHVibGlj
OgotICAgIFREZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZXIoKSA6IG1EZXB0aCgwKSB7fQotICAgIHZp
cnR1YWwgflREZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZXIoKSB7fQotCi0gICAgdmlydHVhbCB2b2lk
IHZpc2l0U3ltYm9sKFRHcmFwaFN5bWJvbCogc3ltYm9sKSB7fTsKLSAgICB2aXJ0dWFsIHZvaWQg
dmlzaXRBcmd1bWVudChUR3JhcGhBcmd1bWVudCogc2VsZWN0aW9uKSB7fTsKLSAgICB2aXJ0dWFs
IHZvaWQgdmlzaXRGdW5jdGlvbkNhbGwoVEdyYXBoRnVuY3Rpb25DYWxsKiBmdW5jdGlvbkNhbGwp
IHt9OwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdFNlbGVjdGlvbihUR3JhcGhTZWxlY3Rpb24qIHNl
bGVjdGlvbikge307Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0TG9vcChUR3JhcGhMb29wKiBsb29w
KSB7fTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXRMb2dpY2FsT3AoVEdyYXBoTG9naWNhbE9wKiBs
b2dpY2FsT3ApIHt9OwotCi0gICAgaW50IGdldERlcHRoKCkgY29uc3QgeyByZXR1cm4gbURlcHRo
OyB9Ci0gICAgdm9pZCBpbmNyZW1lbnREZXB0aCgpIHsgKyttRGVwdGg7IH0KLSAgICB2b2lkIGRl
Y3JlbWVudERlcHRoKCkgeyAtLW1EZXB0aDsgfQotCi0gICAgdm9pZCBjbGVhclZpc2l0ZWQoKSB7
IG1WaXNpdGVkLmNsZWFyKCk7IH0KLSAgICB2b2lkIG1hcmtWaXNpdGVkKFRHcmFwaE5vZGUqIG5v
ZGUpIHsgbVZpc2l0ZWQuaW5zZXJ0KG5vZGUpOyB9Ci0gICAgYm9vbCBpc1Zpc2l0ZWQoVEdyYXBo
Tm9kZSogbm9kZSkgY29uc3QgeyByZXR1cm4gbVZpc2l0ZWQuZmluZChub2RlKSAhPSBtVmlzaXRl
ZC5lbmQoKTsgfQotcHJpdmF0ZToKLSAgICBpbnQgbURlcHRoOwotICAgIFRHcmFwaE5vZGVTZXQg
bVZpc2l0ZWQ7Ci19OwotCi0jZW5kaWYgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9ERVBHUkFQSF9E
RVBFTkRFTkNZR1JBUEhfSF8KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaC5o
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoQnVp
bGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5jcHAJKHJldmlz
aW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuY3BwCShub25leGlzdGVudCkK
QEAgLTEsMjU1ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJh
bnNsYXRvci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmgiCi0KLXZvaWQgVERlcGVu
ZGVuY3lHcmFwaEJ1aWxkZXI6OmJ1aWxkKFRJbnRlcm1Ob2RlICpub2RlLCBURGVwZW5kZW5jeUdy
YXBoICpncmFwaCkKLXsKLSAgICBURGVwZW5kZW5jeUdyYXBoQnVpbGRlciBidWlsZGVyKGdyYXBo
KTsKLSAgICBidWlsZGVyLmJ1aWxkKG5vZGUpOwotfQotCi1ib29sIFREZXBlbmRlbmN5R3JhcGhC
dWlsZGVyOjp2aXNpdEFnZ3JlZ2F0ZSgKLSAgICBWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0
ZSAqaW50ZXJtQWdncmVnYXRlKQotewotICAgIHN3aXRjaCAoaW50ZXJtQWdncmVnYXRlLT5nZXRP
cCgpKQotICAgIHsKLSAgICAgIGNhc2UgRU9wRnVuY3Rpb246Ci0gICAgICAgIHZpc2l0RnVuY3Rp
b25EZWZpbml0aW9uKGludGVybUFnZ3JlZ2F0ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBFT3BGdW5jdGlvbkNhbGw6Ci0gICAgICAgIHZpc2l0RnVuY3Rpb25DYWxsKGludGVybUFnZ3Jl
Z2F0ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgdmlzaXRBZ2dy
ZWdhdGVDaGlsZHJlbihpbnRlcm1BZ2dyZWdhdGUpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIFREZXBlbmRlbmN5R3JhcGhCdWlsZGVyOjp2aXNp
dEZ1bmN0aW9uRGVmaW5pdGlvbigKLSAgICBUSW50ZXJtQWdncmVnYXRlICppbnRlcm1BZ2dyZWdh
dGUpCi17Ci0gICAgLy8gQ3VycmVudGx5LCB3ZSBkbyBub3Qgc3VwcG9ydCB1c2VyIGRlZmluZWQg
ZnVuY3Rpb25zLgotICAgIGlmIChpbnRlcm1BZ2dyZWdhdGUtPmdldE5hbWUoKSAhPSAibWFpbigi
KQotICAgICAgICByZXR1cm47Ci0KLSAgICB2aXNpdEFnZ3JlZ2F0ZUNoaWxkcmVuKGludGVybUFn
Z3JlZ2F0ZSk7Ci19Ci0KLS8vIFRha2VzIGFuIGV4cHJlc3Npb24gbGlrZSAiZih4KSIgYW5kIGNy
ZWF0ZXMgYSBkZXBlbmRlbmN5IGdyYXBoIGxpa2UKLS8vICJ4IC0+IGFyZ3VtZW50IDAgLT4gZnVu
Y3Rpb24gY2FsbCIuCi12b2lkIFREZXBlbmRlbmN5R3JhcGhCdWlsZGVyOjp2aXNpdEZ1bmN0aW9u
Q2FsbCgKLSAgICBUSW50ZXJtQWdncmVnYXRlICppbnRlcm1GdW5jdGlvbkNhbGwpCi17Ci0gICAg
VEdyYXBoRnVuY3Rpb25DYWxsICpmdW5jdGlvbkNhbGwgPQotICAgICAgICBtR3JhcGgtPmNyZWF0
ZUZ1bmN0aW9uQ2FsbChpbnRlcm1GdW5jdGlvbkNhbGwpOwotCi0gICAgLy8gUnVuIHRocm91Z2gg
dGhlIGZ1bmN0aW9uIGNhbGwgYXJndW1lbnRzLgotICAgIGludCBhcmd1bWVudE51bWJlciA9IDA7
Ci0gICAgVEludGVybVNlcXVlbmNlICppbnRlcm1Bcmd1bWVudHMgPSBpbnRlcm1GdW5jdGlvbkNh
bGwtPmdldFNlcXVlbmNlKCk7Ci0gICAgZm9yIChUSW50ZXJtU2VxdWVuY2U6OmNvbnN0X2l0ZXJh
dG9yIGl0ZXIgPSBpbnRlcm1Bcmd1bWVudHMtPmJlZ2luKCk7Ci0gICAgICAgICBpdGVyICE9IGlu
dGVybUFyZ3VtZW50cy0+ZW5kKCk7Ci0gICAgICAgICArK2l0ZXIsICsrYXJndW1lbnROdW1iZXIp
Ci0gICAgewotICAgICAgICBUTm9kZVNldE1haW50YWluZXIgbm9kZVNldE1haW50YWluZXIodGhp
cyk7Ci0KLSAgICAgICAgVEludGVybU5vZGUgKmludGVybUFyZ3VtZW50ID0gKml0ZXI7Ci0gICAg
ICAgIGludGVybUFyZ3VtZW50LT50cmF2ZXJzZSh0aGlzKTsKLQotICAgICAgICBpZiAoVFBhcmVu
dE5vZGVTZXQgKmFyZ3VtZW50Tm9kZXMgPSBtTm9kZVNldHMuZ2V0VG9wU2V0KCkpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIFRHcmFwaEFyZ3VtZW50ICphcmd1bWVudCA9IG1HcmFwaC0+Y3JlYXRl
QXJndW1lbnQoCi0gICAgICAgICAgICAgICAgaW50ZXJtRnVuY3Rpb25DYWxsLCBhcmd1bWVudE51
bWJlcik7Ci0gICAgICAgICAgICBjb25uZWN0TXVsdGlwbGVOb2Rlc1RvU2luZ2xlTm9kZShhcmd1
bWVudE5vZGVzLCBhcmd1bWVudCk7Ci0gICAgICAgICAgICBhcmd1bWVudC0+YWRkRGVwZW5kZW50
Tm9kZShmdW5jdGlvbkNhbGwpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gUHVzaCB0aGUg
bGVmdG1vc3Qgc3ltYm9sIG9mIHRoaXMgZnVuY3Rpb24gY2FsbCBpbnRvIHRoZSBjdXJyZW50IHNl
dCBvZgotICAgIC8vIGRlcGVuZGVudCBzeW1ib2xzIHRvIHJlcHJlc2VudCB0aGUgcmVzdWx0IG9m
IHRoaXMgZnVuY3Rpb24gY2FsbC4KLSAgICAvLyBUaHVzLCBhbiBleHByZXNzaW9uIGxpa2UgInkg
PSBmKHgpIiB3aWxsIHlpZWxkIGEgZGVwZW5kZW5jeSBncmFwaCBsaWtlCi0gICAgLy8gInggLT4g
YXJndW1lbnQgMCAtPiBmdW5jdGlvbiBjYWxsIC0+IHkiLgotICAgIC8vIFRoaXMgbGluZSBlc3Nl
bnRpYWxseSBwYXNzZXMgdGhlIGZ1bmN0aW9uIGNhbGwgbm9kZSBiYWNrIHVwIHRvIGFuIGVhcmxp
ZXIKLSAgICAvLyB2aXNpdEFzc2lnbm1lbnQgY2FsbCwgd2hpY2ggd2lsbCBjcmVhdGUgdGhlIGNv
bm5lY3Rpb24gImZ1bmN0aW9uIGNhbGwgLT4geSIuCi0gICAgbU5vZGVTZXRzLmluc2VydEludG9U
b3BTZXQoZnVuY3Rpb25DYWxsKTsKLX0KLQotdm9pZCBURGVwZW5kZW5jeUdyYXBoQnVpbGRlcjo6
dmlzaXRBZ2dyZWdhdGVDaGlsZHJlbigKLSAgICBUSW50ZXJtQWdncmVnYXRlICppbnRlcm1BZ2dy
ZWdhdGUpCi17Ci0gICAgVEludGVybVNlcXVlbmNlICpzZXF1ZW5jZSA9IGludGVybUFnZ3JlZ2F0
ZS0+Z2V0U2VxdWVuY2UoKTsKLSAgICBmb3IgKFRJbnRlcm1TZXF1ZW5jZTo6Y29uc3RfaXRlcmF0
b3IgaXRlciA9IHNlcXVlbmNlLT5iZWdpbigpOwotICAgICAgICAgaXRlciAhPSBzZXF1ZW5jZS0+
ZW5kKCk7ICsraXRlcikKLSAgICB7Ci0gICAgICAgIFRJbnRlcm1Ob2RlICppbnRlcm1DaGlsZCA9
ICppdGVyOwotICAgICAgICBpbnRlcm1DaGlsZC0+dHJhdmVyc2UodGhpcyk7Ci0gICAgfQotfQot
Ci12b2lkIFREZXBlbmRlbmN5R3JhcGhCdWlsZGVyOjp2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9s
ICppbnRlcm1TeW1ib2wpCi17Ci0gICAgLy8gUHVzaCB0aGlzIHN5bWJvbCBpbnRvIHRoZSBzZXQg
b2YgZGVwZW5kZW50IHN5bWJvbHMgZm9yIHRoZSBjdXJyZW50Ci0gICAgLy8gYXNzaWdubWVudCBv
ciBjb25kaXRpb24gdGhhdCB3ZSBhcmUgdHJhdmVyc2luZy4KLSAgICBUR3JhcGhTeW1ib2wgKnN5
bWJvbCA9IG1HcmFwaC0+Z2V0T3JDcmVhdGVTeW1ib2woaW50ZXJtU3ltYm9sKTsKLSAgICBtTm9k
ZVNldHMuaW5zZXJ0SW50b1RvcFNldChzeW1ib2wpOwotCi0gICAgLy8gSWYgdGhpcyBzeW1ib2wg
aXMgdGhlIGN1cnJlbnQgbGVmdG1vc3Qgc3ltYm9sIHVuZGVyIGFuIGFzc2lnbm1lbnQsIHJlcGxh
Y2UKLSAgICAvLyB0aGUgcHJldmlvdXMgbGVmdG1vc3Qgc3ltYm9sIHdpdGggdGhpcyBzeW1ib2wu
Ci0gICAgaWYgKCFtTGVmdG1vc3RTeW1ib2xzLmVtcHR5KCkgJiYgbUxlZnRtb3N0U3ltYm9scy50
b3AoKSAhPSAmbVJpZ2h0U3VidHJlZSkKLSAgICB7Ci0gICAgICAgIG1MZWZ0bW9zdFN5bWJvbHMu
cG9wKCk7Ci0gICAgICAgIG1MZWZ0bW9zdFN5bWJvbHMucHVzaChzeW1ib2wpOwotICAgIH0KLX0K
LQotYm9vbCBURGVwZW5kZW5jeUdyYXBoQnVpbGRlcjo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQs
IFRJbnRlcm1CaW5hcnkgKmludGVybUJpbmFyeSkKLXsKLSAgICBUT3BlcmF0b3Igb3AgPSBpbnRl
cm1CaW5hcnktPmdldE9wKCk7Ci0gICAgaWYgKG9wID09IEVPcEluaXRpYWxpemUgfHwgaW50ZXJt
QmluYXJ5LT5pc0Fzc2lnbm1lbnQoKSkKLSAgICAgICAgdmlzaXRBc3NpZ25tZW50KGludGVybUJp
bmFyeSk7Ci0gICAgZWxzZSBpZiAob3AgPT0gRU9wTG9naWNhbEFuZCB8fCBvcCA9PSBFT3BMb2dp
Y2FsT3IpCi0gICAgICAgIHZpc2l0TG9naWNhbE9wKGludGVybUJpbmFyeSk7Ci0gICAgZWxzZQot
ICAgICAgICB2aXNpdEJpbmFyeUNoaWxkcmVuKGludGVybUJpbmFyeSk7Ci0KLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0KLXZvaWQgVERlcGVuZGVuY3lHcmFwaEJ1aWxkZXI6OnZpc2l0QXNzaWdubWVu
dChUSW50ZXJtQmluYXJ5ICppbnRlcm1Bc3NpZ25tZW50KQotewotICAgIFRJbnRlcm1UeXBlZCAq
aW50ZXJtTGVmdCA9IGludGVybUFzc2lnbm1lbnQtPmdldExlZnQoKTsKLSAgICBpZiAoIWludGVy
bUxlZnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFRHcmFwaFN5bWJvbCAqbGVmdG1vc3RTeW1i
b2wgPSBOVUxMOwotCi0gICAgewotICAgICAgICBUTm9kZVNldE1haW50YWluZXIgbm9kZVNldE1h
aW50YWluZXIodGhpcyk7Ci0KLSAgICAgICAgewotICAgICAgICAgICAgVExlZnRtb3N0U3ltYm9s
TWFpbnRhaW5lciBsZWZ0bW9zdFN5bWJvbE1haW50YWluZXIodGhpcywgbUxlZnRTdWJ0cmVlKTsK
LSAgICAgICAgICAgIGludGVybUxlZnQtPnRyYXZlcnNlKHRoaXMpOwotICAgICAgICAgICAgbGVm
dG1vc3RTeW1ib2wgPSBtTGVmdG1vc3RTeW1ib2xzLnRvcCgpOwotCi0gICAgICAgICAgICAvLyBB
ZnRlciB0cmF2ZXJzaW5nIHRoZSBsZWZ0IHN1YnRyZWUgb2YgdGhpcyBhc3NpZ25tZW50LCB3ZSBz
aG91bGQKLSAgICAgICAgICAgIC8vIGhhdmUgZm91bmQgYSByZWFsIGxlZnRtb3N0IHN5bWJvbCwg
YW5kIHRoZSBsZWZ0bW9zdCBzeW1ib2wgc2hvdWxkCi0gICAgICAgICAgICAvLyBub3QgYmUgYSBw
bGFjZWhvbGRlci4KLSAgICAgICAgICAgIEFTU0VSVChsZWZ0bW9zdFN5bWJvbCAhPSAmbUxlZnRT
dWJ0cmVlKTsKLSAgICAgICAgICAgIEFTU0VSVChsZWZ0bW9zdFN5bWJvbCAhPSAmbVJpZ2h0U3Vi
dHJlZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoVEludGVybVR5cGVkICppbnRlcm1SaWdo
dCA9IGludGVybUFzc2lnbm1lbnQtPmdldFJpZ2h0KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IFRMZWZ0bW9zdFN5bWJvbE1haW50YWluZXIgbGVmdG1vc3RTeW1ib2xNYWludGFpbmVyKHRoaXMs
IG1SaWdodFN1YnRyZWUpOwotICAgICAgICAgICAgaW50ZXJtUmlnaHQtPnRyYXZlcnNlKHRoaXMp
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKFRQYXJlbnROb2RlU2V0ICphc3NpZ25tZW50Tm9k
ZXMgPSBtTm9kZVNldHMuZ2V0VG9wU2V0KCkpCi0gICAgICAgICAgICBjb25uZWN0TXVsdGlwbGVO
b2Rlc1RvU2luZ2xlTm9kZShhc3NpZ25tZW50Tm9kZXMsIGxlZnRtb3N0U3ltYm9sKTsKLSAgICB9
Ci0KLSAgICAvLyBQdXNoIHRoZSBsZWZ0bW9zdCBzeW1ib2wgb2YgdGhpcyBhc3NpZ25tZW50IGlu
dG8gdGhlIGN1cnJlbnQgc2V0IG9mIGRlcGVuZGVudAotICAgIC8vIHN5bWJvbHMgdG8gcmVwcmVz
ZW50IHRoZSByZXN1bHQgb2YgdGhpcyBhc3NpZ25tZW50LgotICAgIC8vIEFuIGV4cHJlc3Npb24g
bGlrZSAiYSA9IChiID0gYykiIHdpbGwgeWllbGQgYSBkZXBlbmRlbmN5IGdyYXBoIGxpa2UKLSAg
ICAvLyAiYyAtPiBiIC0+IGEiLgotICAgIC8vIFRoaXMgbGluZSBlc3NlbnRpYWxseSBwYXNzZXMg
dGhlIGxlZnRtb3N0IHN5bWJvbCBvZiB0aGUgbmVzdGVkIGFzc2lnbm1lbnQKLSAgICAvLyAoImIi
IGluIHRoaXMgZXhhbXBsZSkgYmFjayB1cCB0byB0aGUgZWFybGllciB2aXNpdEFzc2lnbm1lbnQg
Y2FsbCBmb3IgdGhlCi0gICAgLy8gb3V0ZXIgYXNzaWdubWVudCwgd2hpY2ggd2lsbCBjcmVhdGUg
dGhlIGNvbm5lY3Rpb24gImIgLT4gYSIuCi0gICAgbU5vZGVTZXRzLmluc2VydEludG9Ub3BTZXQo
bGVmdG1vc3RTeW1ib2wpOwotfQotCi12b2lkIFREZXBlbmRlbmN5R3JhcGhCdWlsZGVyOjp2aXNp
dExvZ2ljYWxPcChUSW50ZXJtQmluYXJ5ICppbnRlcm1Mb2dpY2FsT3ApCi17Ci0gICAgaWYgKFRJ
bnRlcm1UeXBlZCAqaW50ZXJtTGVmdCA9IGludGVybUxvZ2ljYWxPcC0+Z2V0TGVmdCgpKQotICAg
IHsKLSAgICAgICAgVE5vZGVTZXRQcm9wYWdhdGluZ01haW50YWluZXIgbm9kZVNldE1haW50YWlu
ZXIodGhpcyk7Ci0KLSAgICAgICAgaW50ZXJtTGVmdC0+dHJhdmVyc2UodGhpcyk7Ci0gICAgICAg
IGlmIChUUGFyZW50Tm9kZVNldCAqbGVmdE5vZGVzID0gbU5vZGVTZXRzLmdldFRvcFNldCgpKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBUR3JhcGhMb2dpY2FsT3AgKmxvZ2ljYWxPcCA9IG1HcmFw
aC0+Y3JlYXRlTG9naWNhbE9wKGludGVybUxvZ2ljYWxPcCk7Ci0gICAgICAgICAgICBjb25uZWN0
TXVsdGlwbGVOb2Rlc1RvU2luZ2xlTm9kZShsZWZ0Tm9kZXMsIGxvZ2ljYWxPcCk7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBpZiAoVEludGVybVR5cGVkICppbnRlcm1SaWdodCA9IGludGVybUxv
Z2ljYWxPcC0+Z2V0UmlnaHQoKSkKLSAgICB7Ci0gICAgICAgIFRMZWZ0bW9zdFN5bWJvbE1haW50
YWluZXIgbGVmdG1vc3RTeW1ib2xNYWludGFpbmVyKHRoaXMsIG1SaWdodFN1YnRyZWUpOwotICAg
ICAgICBpbnRlcm1SaWdodC0+dHJhdmVyc2UodGhpcyk7Ci0gICAgfQotfQotCi12b2lkIFREZXBl
bmRlbmN5R3JhcGhCdWlsZGVyOjp2aXNpdEJpbmFyeUNoaWxkcmVuKFRJbnRlcm1CaW5hcnkgKmlu
dGVybUJpbmFyeSkKLXsKLSAgICBpZiAoVEludGVybVR5cGVkICppbnRlcm1MZWZ0ID0gaW50ZXJt
QmluYXJ5LT5nZXRMZWZ0KCkpCi0gICAgICAgIGludGVybUxlZnQtPnRyYXZlcnNlKHRoaXMpOwot
Ci0gICAgaWYgKFRJbnRlcm1UeXBlZCAqaW50ZXJtUmlnaHQgPSBpbnRlcm1CaW5hcnktPmdldFJp
Z2h0KCkpCi0gICAgewotICAgICAgICBUTGVmdG1vc3RTeW1ib2xNYWludGFpbmVyIGxlZnRtb3N0
U3ltYm9sTWFpbnRhaW5lcih0aGlzLCBtUmlnaHRTdWJ0cmVlKTsKLSAgICAgICAgaW50ZXJtUmln
aHQtPnRyYXZlcnNlKHRoaXMpOwotICAgIH0KLX0KLQotYm9vbCBURGVwZW5kZW5jeUdyYXBoQnVp
bGRlcjo6dmlzaXRTZWxlY3Rpb24oCi0gICAgVmlzaXQgdmlzaXQsIFRJbnRlcm1TZWxlY3Rpb24g
KmludGVybVNlbGVjdGlvbikKLXsKLSAgICBpZiAoVEludGVybU5vZGUgKmludGVybUNvbmRpdGlv
biA9IGludGVybVNlbGVjdGlvbi0+Z2V0Q29uZGl0aW9uKCkpCi0gICAgewotICAgICAgICBUTm9k
ZVNldE1haW50YWluZXIgbm9kZVNldE1haW50YWluZXIodGhpcyk7Ci0KLSAgICAgICAgaW50ZXJt
Q29uZGl0aW9uLT50cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAgaWYgKFRQYXJlbnROb2RlU2V0ICpj
b25kaXRpb25Ob2RlcyA9IG1Ob2RlU2V0cy5nZXRUb3BTZXQoKSkKLSAgICAgICAgewotICAgICAg
ICAgICAgVEdyYXBoU2VsZWN0aW9uICpzZWxlY3Rpb24gPSBtR3JhcGgtPmNyZWF0ZVNlbGVjdGlv
bihpbnRlcm1TZWxlY3Rpb24pOwotICAgICAgICAgICAgY29ubmVjdE11bHRpcGxlTm9kZXNUb1Np
bmdsZU5vZGUoY29uZGl0aW9uTm9kZXMsIHNlbGVjdGlvbik7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBpZiAoVEludGVybU5vZGUgKmludGVybVRydWVCbG9jayA9IGludGVybVNlbGVjdGlvbi0+
Z2V0VHJ1ZUJsb2NrKCkpCi0gICAgICAgIGludGVybVRydWVCbG9jay0+dHJhdmVyc2UodGhpcyk7
Ci0KLSAgICBpZiAoVEludGVybU5vZGUgKmludGVybUZhbHNlQmxvY2sgPSBpbnRlcm1TZWxlY3Rp
b24tPmdldEZhbHNlQmxvY2soKSkKLSAgICAgICAgaW50ZXJtRmFsc2VCbG9jay0+dHJhdmVyc2Uo
dGhpcyk7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgVERlcGVuZGVuY3lHcmFwaEJ1
aWxkZXI6OnZpc2l0TG9vcChWaXNpdCB2aXNpdCwgVEludGVybUxvb3AgKmludGVybUxvb3ApCi17
Ci0gICAgaWYgKFRJbnRlcm1UeXBlZCAqaW50ZXJtQ29uZGl0aW9uID0gaW50ZXJtTG9vcC0+Z2V0
Q29uZGl0aW9uKCkpCi0gICAgewotICAgICAgICBUTm9kZVNldE1haW50YWluZXIgbm9kZVNldE1h
aW50YWluZXIodGhpcyk7Ci0KLSAgICAgICAgaW50ZXJtQ29uZGl0aW9uLT50cmF2ZXJzZSh0aGlz
KTsKLSAgICAgICAgaWYgKFRQYXJlbnROb2RlU2V0ICpjb25kaXRpb25Ob2RlcyA9IG1Ob2RlU2V0
cy5nZXRUb3BTZXQoKSkKLSAgICAgICAgewotICAgICAgICAgICAgVEdyYXBoTG9vcCAqbG9vcCA9
IG1HcmFwaC0+Y3JlYXRlTG9vcChpbnRlcm1Mb29wKTsKLSAgICAgICAgICAgIGNvbm5lY3RNdWx0
aXBsZU5vZGVzVG9TaW5nbGVOb2RlKGNvbmRpdGlvbk5vZGVzLCBsb29wKTsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIGlmIChUSW50ZXJtTm9kZSogaW50ZXJtQm9keSA9IGludGVybUxvb3AtPmdl
dEJvZHkoKSkKLSAgICAgICAgaW50ZXJtQm9keS0+dHJhdmVyc2UodGhpcyk7Ci0KLSAgICBpZiAo
VEludGVybVR5cGVkICppbnRlcm1FeHByZXNzaW9uID0gaW50ZXJtTG9vcC0+Z2V0RXhwcmVzc2lv
bigpKQotICAgICAgICBpbnRlcm1FeHByZXNzaW9uLT50cmF2ZXJzZSh0aGlzKTsKLQotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotCi12b2lkIFREZXBlbmRlbmN5R3JhcGhCdWlsZGVyOjpjb25uZWN0
TXVsdGlwbGVOb2Rlc1RvU2luZ2xlTm9kZSgKLSAgICBUUGFyZW50Tm9kZVNldCAqbm9kZXMsIFRH
cmFwaE5vZGUgKm5vZGUpIGNvbnN0Ci17Ci0gICAgZm9yIChUUGFyZW50Tm9kZVNldDo6Y29uc3Rf
aXRlcmF0b3IgaXRlciA9IG5vZGVzLT5iZWdpbigpOwotICAgICAgICAgaXRlciAhPSBub2Rlcy0+
ZW5kKCk7ICsraXRlcikKLSAgICB7Ci0gICAgICAgIFRHcmFwaFBhcmVudE5vZGUgKmN1cnJlbnRO
b2RlID0gKml0ZXI7Ci0gICAgICAgIGN1cnJlbnROb2RlLT5hZGREZXBlbmRlbnROb2RlKG5vZGUp
OwotICAgIH0KLX0KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaEJ1aWxkZXIu
Y3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRp
dmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBo
QnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuaAkocmV2aXNp
b24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5oCShub25leGlzdGVudCkKQEAg
LTEsMTk5ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFU
T1JfREVQR1JBUEhfREVQRU5ERU5DWUdSQVBIQlVJTERFUl9IXwotI2RlZmluZSBDT01QSUxFUl9U
UkFOU0xBVE9SX0RFUEdSQVBIX0RFUEVOREVOQ1lHUkFQSEJVSUxERVJfSF8KLQotI2luY2x1ZGUg
ImNvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoLmgiCi0KLS8vCi0v
LyBDcmVhdGVzIGEgZGVwZW5kZW5jeSBncmFwaCBvZiBzeW1ib2xzLCBmdW5jdGlvbiBjYWxscywg
Y29uZGl0aW9ucyBldGMuIGJ5Ci0vLyB0cmF2ZXJzaW5nIGEgaW50ZXJtZWRpYXRlIHRyZWUuCi0v
LwotY2xhc3MgVERlcGVuZGVuY3lHcmFwaEJ1aWxkZXIgOiBwdWJsaWMgVEludGVybVRyYXZlcnNl
cgotewotICBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYnVpbGQoVEludGVybU5vZGUgKm5vZGUs
IFREZXBlbmRlbmN5R3JhcGggKmdyYXBoKTsKLQotICAgIHZvaWQgdmlzaXRTeW1ib2woVEludGVy
bVN5bWJvbCAqKSBvdmVycmlkZTsKLSAgICBib29sIHZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBU
SW50ZXJtQmluYXJ5ICopIG92ZXJyaWRlOwotICAgIGJvb2wgdmlzaXRTZWxlY3Rpb24oVmlzaXQg
dmlzaXQsIFRJbnRlcm1TZWxlY3Rpb24gKikgb3ZlcnJpZGU7Ci0gICAgYm9vbCB2aXNpdEFnZ3Jl
Z2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqKSBvdmVycmlkZTsKLSAgICBib29s
IHZpc2l0TG9vcChWaXNpdCB2aXNpdCwgVEludGVybUxvb3AgKikgb3ZlcnJpZGU7Ci0KLSAgcHJp
dmF0ZToKLSAgICB0eXBlZGVmIHN0ZDo6c3RhY2s8VEdyYXBoU3ltYm9sICo+IFRTeW1ib2xTdGFj
azsKLSAgICB0eXBlZGVmIHN0ZDo6c2V0PFRHcmFwaFBhcmVudE5vZGUgKj4gVFBhcmVudE5vZGVT
ZXQ7Ci0KLSAgICAvLwotICAgIC8vIEZvciBjb2xsZWN0aW5nIHRoZSBkZXBlbmRlbnQgbm9kZXMg
b2YgYXNzaWdubWVudHMsIGNvbmRpdGlvbnMsIGV0Yy4KLSAgICAvLyB3aGlsZSB0cmF2ZXJzaW5n
IHRoZSBpbnRlcm1lZGlhdGUgdHJlZS4KLSAgICAvLwotICAgIC8vIFRoaXMgZGF0YSBzdHJ1Y3R1
cmUgaXMgc3RhY2sgb2Ygc2V0cy4gRWFjaCBzZXQgY29udGFpbnMgZGVwZW5kZW5jeSBncmFwaAot
ICAgIC8vIHBhcmVudCBub2Rlcy4KLSAgICAvLwotICAgIGNsYXNzIFROb2RlU2V0U3RhY2sKLSAg
ICB7Ci0gICAgICBwdWJsaWM6Ci0gICAgICAgIFROb2RlU2V0U3RhY2soKSB7fTsKLSAgICAgICAg
flROb2RlU2V0U3RhY2soKSB7IGNsZWFyKCk7IH0KLQotICAgICAgICAvLyBUaGlzIHNob3VsZCBv
bmx5IGJlIGNhbGxlZCBhZnRlciBhIHB1c2hTZXQuCi0gICAgICAgIC8vIFJldHVybnMgTlVMTCBp
ZiB0aGUgdG9wIHNldCBpcyBlbXB0eS4KLSAgICAgICAgVFBhcmVudE5vZGVTZXQgKmdldFRvcFNl
dCgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghbU5vZGVTZXRzLmVtcHR5
KCkpOwotICAgICAgICAgICAgVFBhcmVudE5vZGVTZXQgKnRvcFNldCA9IG1Ob2RlU2V0cy50b3Ao
KTsKLSAgICAgICAgICAgIHJldHVybiAhdG9wU2V0LT5lbXB0eSgpID8gdG9wU2V0IDogTlVMTDsK
LSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgcHVzaFNldCgpIHsgbU5vZGVTZXRzLnB1c2gobmV3
IFRQYXJlbnROb2RlU2V0KCkpOyB9Ci0gICAgICAgIHZvaWQgcG9wU2V0KCkKLSAgICAgICAgewot
ICAgICAgICAgICAgQVNTRVJUKCFtTm9kZVNldHMuZW1wdHkoKSk7Ci0gICAgICAgICAgICBkZWxl
dGUgbU5vZGVTZXRzLnRvcCgpOwotICAgICAgICAgICAgbU5vZGVTZXRzLnBvcCgpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgLy8gUG9wcyB0aGUgdG9wIHNldCBhbmQgYWRkcyBpdHMgY29udGVudHMg
dG8gdGhlIG5ldyB0b3Agc2V0LgotICAgICAgICAvLyBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxl
ZCBhZnRlciBhIHB1c2hTZXQuCi0gICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHNldCBiZWxvdyB0
aGUgdG9wIHNldCwgdGhlIHRvcCBzZXQgaXMganVzdCBkZWxldGVkLgotICAgICAgICB2b2lkIHBv
cFNldEludG9OZXh0KCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKCFtTm9kZVNldHMu
ZW1wdHkoKSk7Ci0gICAgICAgICAgICBUUGFyZW50Tm9kZVNldCAqb2xkVG9wU2V0ID0gbU5vZGVT
ZXRzLnRvcCgpOwotICAgICAgICAgICAgbU5vZGVTZXRzLnBvcCgpOwotCi0gICAgICAgICAgICBp
ZiAoIW1Ob2RlU2V0cy5lbXB0eSgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFRQ
YXJlbnROb2RlU2V0ICpuZXdUb3BTZXQgPSBtTm9kZVNldHMudG9wKCk7Ci0gICAgICAgICAgICAg
ICAgbmV3VG9wU2V0LT5pbnNlcnQob2xkVG9wU2V0LT5iZWdpbigpLCBvbGRUb3BTZXQtPmVuZCgp
KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZGVsZXRlIG9sZFRvcFNldDsKLSAgICAg
ICAgfQotCi0gICAgICAgIC8vIERvZXMgbm90aGluZyBpZiB0aGVyZSBpcyBubyB0b3Agc2V0Lgot
ICAgICAgICAvLyBUaGlzIGNhbiBiZSBjYWxsZWQgd2hlbiB0aGVyZSBpcyBubyB0b3Agc2V0IGlm
IHdlIGFyZSB2aXNpdGluZwotICAgICAgICAvLyBzeW1ib2xzIHRoYXQgYXJlIG5vdCB1bmRlciBh
biBhc3NpZ25tZW50IG9yIGNvbmRpdGlvbi4KLSAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byB0
cmFjayB0aG9zZSBzeW1ib2xzLgotICAgICAgICB2b2lkIGluc2VydEludG9Ub3BTZXQoVEdyYXBo
UGFyZW50Tm9kZSAqbm9kZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1Ob2RlU2V0cy5l
bXB0eSgpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgbU5vZGVTZXRz
LnRvcCgpLT5pbnNlcnQobm9kZSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGNsZWFyKCkK
LSAgICAgICAgewotICAgICAgICAgICAgd2hpbGUgKCFtTm9kZVNldHMuZW1wdHkoKSkKLSAgICAg
ICAgICAgICAgICBwb3BTZXQoKTsKLSAgICAgICAgfQotCi0gICAgICBwcml2YXRlOgotICAgICAg
ICB0eXBlZGVmIHN0ZDo6c3RhY2s8VFBhcmVudE5vZGVTZXQgKj4gVFBhcmVudE5vZGVTZXRTdGFj
azsKLQotICAgICAgICBUUGFyZW50Tm9kZVNldFN0YWNrIG1Ob2RlU2V0czsKLSAgICB9OwotCi0g
ICAgLy8KLSAgICAvLyBBbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzIHB1c2hlcyBhIG5ldyBub2Rl
IHNldCB3aGVuIGluc3RhbnRpYXRlZC4KLSAgICAvLyBXaGVuIHRoZSBpbnN0YW5jZSBnb2VzIG91
dCBvZiBzY29wZSwgaXQgYW5kIHBvcHMgdGhlIG5vZGUgc2V0LgotICAgIC8vCi0gICAgY2xhc3Mg
VE5vZGVTZXRNYWludGFpbmVyIDogYW5nbGU6Ok5vbkNvcHlhYmxlCi0gICAgewotICAgICAgcHVi
bGljOgotICAgICAgICBUTm9kZVNldE1haW50YWluZXIoVERlcGVuZGVuY3lHcmFwaEJ1aWxkZXIg
KmZhY3RvcnkpCi0gICAgICAgICAgICA6IG1TZXRzKGZhY3RvcnktPm1Ob2RlU2V0cykKLSAgICAg
ICAgewotICAgICAgICAgICAgbVNldHMucHVzaFNldCgpOwotICAgICAgICB9Ci0gICAgICAgIH5U
Tm9kZVNldE1haW50YWluZXIoKSB7IG1TZXRzLnBvcFNldCgpOyB9Ci0gICAgICBwcm90ZWN0ZWQ6
Ci0gICAgICAgIFROb2RlU2V0U3RhY2sgJm1TZXRzOwotICAgIH07Ci0KLSAgICAvLwotICAgIC8v
IEFuIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MgcHVzaGVzIGEgbmV3IG5vZGUgc2V0IHdoZW4gaW5z
dGFudGlhdGVkLgotICAgIC8vIFdoZW4gdGhlIGluc3RhbmNlIGdvZXMgb3V0IG9mIHNjb3BlLCBp
dCBhbmQgcG9wcyB0aGUgdG9wIG5vZGUgc2V0IGFuZCBhZGRzCi0gICAgLy8gaXRzIGNvbnRlbnRz
IHRvIHRoZSBuZXcgdG9wIG5vZGUgc2V0LgotICAgIC8vCi0gICAgY2xhc3MgVE5vZGVTZXRQcm9w
YWdhdGluZ01haW50YWluZXIgOiBhbmdsZTo6Tm9uQ29weWFibGUKLSAgICB7Ci0gICAgICBwdWJs
aWM6Ci0gICAgICAgIFROb2RlU2V0UHJvcGFnYXRpbmdNYWludGFpbmVyKFREZXBlbmRlbmN5R3Jh
cGhCdWlsZGVyICpmYWN0b3J5KQotICAgICAgICAgICAgOiBtU2V0cyhmYWN0b3J5LT5tTm9kZVNl
dHMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1TZXRzLnB1c2hTZXQoKTsKLSAgICAgICAgfQot
ICAgICAgICB+VE5vZGVTZXRQcm9wYWdhdGluZ01haW50YWluZXIoKSB7IG1TZXRzLnBvcFNldElu
dG9OZXh0KCk7IH0KLSAgICAgIHByb3RlY3RlZDoKLSAgICAgICAgVE5vZGVTZXRTdGFjayAmbVNl
dHM7Ci0gICAgfTsKLQotICAgIC8vCi0gICAgLy8gQW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyBr
ZWVwcyB0cmFjayBvZiB0aGUgbGVmdG1vc3Qgc3ltYm9sIHdoaWxlIHdlJ3JlCi0gICAgLy8gZXhw
bG9yaW5nIGFuIGFzc2lnbm1lbnQuCi0gICAgLy8gSXQgd2lsbCBwdXNoIHRoZSBwbGFjZWhvbGRl
ciBzeW1ib2wga0xlZnRTdWJ0cmVlIHdoZW4gaW5zdGFudGlhdGVkIHVuZGVyIGEKLSAgICAvLyBs
ZWZ0IHN1YnRyZWUsIGFuZCBrUmlnaHRTdWJ0cmVlIHVuZGVyIGEgcmlnaHQgc3VidHJlZS4KLSAg
ICAvLyBXaGVuIGl0IGdvZXMgb3V0IG9mIHNjb3BlLCBpdCB3aWxsIHBvcCB0aGUgbGVmdG1vc3Qg
c3ltYm9sIGF0IHRoZSB0b3Agb2YgdGhlCi0gICAgLy8gc2NvcGUuCi0gICAgLy8gRHVyaW5nIHRy
YXZlcnNhbCwgdGhlIFREZXBlbmRlbmN5R3JhcGhCdWlsZGVyIHdpbGwgcmVwbGFjZSBrTGVmdFN1
YnRyZWUgd2l0aAotICAgIC8vIGEgcmVhbCBzeW1ib2wuCi0gICAgLy8ga1JpZ2h0U3VidHJlZSB3
aWxsIG5ldmVyIGJlIHJlcGxhY2VkIGJ5IGEgcmVhbCBzeW1ib2wgYmVjYXVzZSB3ZSBhcmUgdHJh
Y2tpbmcKLSAgICAvLyB0aGUgbGVmdG1vc3Qgc3ltYm9sLgotICAgIC8vCi0gICAgY2xhc3MgVExl
ZnRtb3N0U3ltYm9sTWFpbnRhaW5lciA6IGFuZ2xlOjpOb25Db3B5YWJsZQotICAgIHsKLSAgICAg
IHB1YmxpYzoKLSAgICAgICAgVExlZnRtb3N0U3ltYm9sTWFpbnRhaW5lcigKLSAgICAgICAgICAg
IFREZXBlbmRlbmN5R3JhcGhCdWlsZGVyICpmYWN0b3J5LCBUR3JhcGhTeW1ib2wgJnN1YnRyZWUp
Ci0gICAgICAgICAgICA6IG1MZWZ0bW9zdFN5bWJvbHMoZmFjdG9yeS0+bUxlZnRtb3N0U3ltYm9s
cykKLSAgICAgICAgewotICAgICAgICAgICAgbU5lZWRzUGxhY2Vob2xkZXJTeW1ib2wgPQotICAg
ICAgICAgICAgICAgIG1MZWZ0bW9zdFN5bWJvbHMuZW1wdHkoKSB8fCBtTGVmdG1vc3RTeW1ib2xz
LnRvcCgpICE9ICZzdWJ0cmVlOwotICAgICAgICAgICAgaWYgKG1OZWVkc1BsYWNlaG9sZGVyU3lt
Ym9sKQotICAgICAgICAgICAgICAgIG1MZWZ0bW9zdFN5bWJvbHMucHVzaCgmc3VidHJlZSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICB+VExlZnRtb3N0U3ltYm9sTWFpbnRhaW5lcigpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGlmIChtTmVlZHNQbGFjZWhvbGRlclN5bWJvbCkKLSAgICAgICAgICAg
ICAgICBtTGVmdG1vc3RTeW1ib2xzLnBvcCgpOwotICAgICAgICB9Ci0KLSAgICAgIHByb3RlY3Rl
ZDoKLSAgICAgICAgVFN5bWJvbFN0YWNrJiBtTGVmdG1vc3RTeW1ib2xzOwotICAgICAgICBib29s
IG1OZWVkc1BsYWNlaG9sZGVyU3ltYm9sOwotICAgIH07Ci0KLSAgICBURGVwZW5kZW5jeUdyYXBo
QnVpbGRlcihURGVwZW5kZW5jeUdyYXBoICpncmFwaCkKLSAgICAgICAgOiBUSW50ZXJtVHJhdmVy
c2VyKHRydWUsIGZhbHNlLCBmYWxzZSksCi0gICAgICAgICAgbUxlZnRTdWJ0cmVlKE5VTEwpLAot
ICAgICAgICAgIG1SaWdodFN1YnRyZWUoTlVMTCksCi0gICAgICAgICAgbUdyYXBoKGdyYXBoKSB7
fQotICAgIHZvaWQgYnVpbGQoVEludGVybU5vZGUgKmludGVybU5vZGUpIHsgaW50ZXJtTm9kZS0+
dHJhdmVyc2UodGhpcyk7IH0KLQotICAgIHZvaWQgY29ubmVjdE11bHRpcGxlTm9kZXNUb1Npbmds
ZU5vZGUoCi0gICAgICAgIFRQYXJlbnROb2RlU2V0ICpub2RlcywgVEdyYXBoTm9kZSAqbm9kZSkg
Y29uc3Q7Ci0KLSAgICB2b2lkIHZpc2l0QXNzaWdubWVudChUSW50ZXJtQmluYXJ5ICopOwotICAg
IHZvaWQgdmlzaXRMb2dpY2FsT3AoVEludGVybUJpbmFyeSAqKTsKLSAgICB2b2lkIHZpc2l0Qmlu
YXJ5Q2hpbGRyZW4oVEludGVybUJpbmFyeSAqKTsKLSAgICB2b2lkIHZpc2l0RnVuY3Rpb25EZWZp
bml0aW9uKFRJbnRlcm1BZ2dyZWdhdGUgKik7Ci0gICAgdm9pZCB2aXNpdEZ1bmN0aW9uQ2FsbChU
SW50ZXJtQWdncmVnYXRlICppbnRlcm1GdW5jdGlvbkNhbGwpOwotICAgIHZvaWQgdmlzaXRBZ2dy
ZWdhdGVDaGlsZHJlbihUSW50ZXJtQWdncmVnYXRlICopOwotCi0gICAgVEdyYXBoU3ltYm9sIG1M
ZWZ0U3VidHJlZTsKLSAgICBUR3JhcGhTeW1ib2wgbVJpZ2h0U3VidHJlZTsKLQotICAgIFREZXBl
bmRlbmN5R3JhcGggKm1HcmFwaDsKLSAgICBUTm9kZVNldFN0YWNrIG1Ob2RlU2V0czsKLSAgICBU
U3ltYm9sU3RhY2sgbUxlZnRtb3N0U3ltYm9sczsKLX07Ci0KLSNlbmRpZiAgLy8gQ09NUElMRVJf
VFJBTlNMQVRPUl9ERVBHUkFQSF9ERVBFTkRFTkNZR1JBUEhCVUlMREVSX0hfCgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmgKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBz
dm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IHByb3BlcnR5CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhPdXRwdXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBo
L0RlcGVuZGVuY3lHcmFwaE91dHB1dC5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVu
Y3lHcmFwaE91dHB1dC5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw2NCArMCwwIEBACi0vLwotLy8g
Q29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgotLy8KLQotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5j
eUdyYXBoT3V0cHV0LmgiCi0KLXZvaWQgVERlcGVuZGVuY3lHcmFwaE91dHB1dDo6b3V0cHV0SW5k
ZW50YXRpb24oKQotewotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZ2V0RGVwdGgoKTsgKytpKQot
ICAgICAgICBtU2luayA8PCAiICAiOwotfQotCi12b2lkIFREZXBlbmRlbmN5R3JhcGhPdXRwdXQ6
OnZpc2l0QXJndW1lbnQoVEdyYXBoQXJndW1lbnQqIHBhcmFtZXRlcikKLXsKLSAgICBvdXRwdXRJ
bmRlbnRhdGlvbigpOwotICAgIG1TaW5rIDw8ICJhcmd1bWVudCAiIDw8IHBhcmFtZXRlci0+Z2V0
QXJndW1lbnROdW1iZXIoKSA8PCAiIG9mIGNhbGwgdG8gIgotICAgICAgICAgIDw8IHBhcmFtZXRl
ci0+Z2V0SW50ZXJtRnVuY3Rpb25DYWxsKCktPmdldE5hbWUoKSA8PCAiXG4iOwotfQotCi12b2lk
IFREZXBlbmRlbmN5R3JhcGhPdXRwdXQ6OnZpc2l0RnVuY3Rpb25DYWxsKFRHcmFwaEZ1bmN0aW9u
Q2FsbCogZnVuY3Rpb25DYWxsKQotewotICAgIG91dHB1dEluZGVudGF0aW9uKCk7Ci0gICAgbVNp
bmsgPDwgImZ1bmN0aW9uIGNhbGwgIiA8PCAgZnVuY3Rpb25DYWxsLT5nZXRJbnRlcm1GdW5jdGlv
bkNhbGwoKS0+Z2V0TmFtZSgpIDw8ICJcbiI7Ci19Ci0KLXZvaWQgVERlcGVuZGVuY3lHcmFwaE91
dHB1dDo6dmlzaXRTeW1ib2woVEdyYXBoU3ltYm9sKiBzeW1ib2wpCi17Ci0gICAgb3V0cHV0SW5k
ZW50YXRpb24oKTsKLSAgICBtU2luayA8PCBzeW1ib2wtPmdldEludGVybVN5bWJvbCgpLT5nZXRT
eW1ib2woKSA8PCAiIChzeW1ib2wgaWQ6ICIKLSAgICAgICAgICA8PCBzeW1ib2wtPmdldEludGVy
bVN5bWJvbCgpLT5nZXRJZCgpIDw8ICIpXG4iOwotfQotCi12b2lkIFREZXBlbmRlbmN5R3JhcGhP
dXRwdXQ6OnZpc2l0U2VsZWN0aW9uKFRHcmFwaFNlbGVjdGlvbiogc2VsZWN0aW9uKQotewotICAg
IG91dHB1dEluZGVudGF0aW9uKCk7Ci0gICAgbVNpbmsgPDwgInNlbGVjdGlvblxuIjsKLX0KLQot
dm9pZCBURGVwZW5kZW5jeUdyYXBoT3V0cHV0Ojp2aXNpdExvb3AoVEdyYXBoTG9vcCogbG9vcCkK
LXsKLSAgICBvdXRwdXRJbmRlbnRhdGlvbigpOwotICAgIG1TaW5rIDw8ICJsb29wIGNvbmRpdGlv
blxuIjsKLX0KLQotdm9pZCBURGVwZW5kZW5jeUdyYXBoT3V0cHV0Ojp2aXNpdExvZ2ljYWxPcChU
R3JhcGhMb2dpY2FsT3AqIGxvZ2ljYWxPcCkKLXsKLSAgICBvdXRwdXRJbmRlbnRhdGlvbigpOwot
ICAgIG1TaW5rIDw8ICJsb2dpY2FsICIgPDwgbG9naWNhbE9wLT5nZXRPcFN0cmluZygpIDw8ICJc
biI7Ci19Ci0KLXZvaWQgVERlcGVuZGVuY3lHcmFwaE91dHB1dDo6b3V0cHV0QWxsU3Bhbm5pbmdU
cmVlcyhURGVwZW5kZW5jeUdyYXBoJiBncmFwaCkKLXsKLSAgICBtU2luayA8PCAiXG4iOwotCi0g
ICAgZm9yIChhdXRvIHN5bWJvbCA6IGdyYXBoLmFsbE5vZGVzKCkpCi0gICAgewotICAgICAgICBt
U2luayA8PCAiLS0tIERlcGVuZGVuY3kgZ3JhcGggc3Bhbm5pbmcgdHJlZSAtLS1cbiI7Ci0gICAg
ICAgIGNsZWFyVmlzaXRlZCgpOwotICAgICAgICBzeW1ib2wtPnRyYXZlcnNlKHRoaXMpOwotICAg
ICAgICBtU2luayA8PCAiXG4iOwotICAgIH0KLX0KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVu
ZGVuY3lHcmFwaE91dHB1dC5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMj
IC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9kZXBncmFw
aC9EZXBlbmRlbmN5R3JhcGhPdXRwdXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhP
dXRwdXQuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmgJKG5v
bmV4aXN0ZW50KQpAQCAtMSwzMSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2lmbmRlZiBDT01Q
SUxFUl9UUkFOU0xBVE9SX0RFUEdSQVBIX0RFUEVOREVOQ1lHUkFQSE9VVFBVVF9IXwotI2RlZmlu
ZSBDT01QSUxFUl9UUkFOU0xBVE9SX0RFUEdSQVBIX0RFUEVOREVOQ1lHUkFQSE9VVFBVVF9IXwot
Ci0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGgu
aCIKLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0luZm9TaW5rLmgiCi0KLWNsYXNzIFRE
ZXBlbmRlbmN5R3JhcGhPdXRwdXQgOiBwdWJsaWMgVERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlcgot
ewotICBwdWJsaWM6Ci0gICAgVERlcGVuZGVuY3lHcmFwaE91dHB1dChUSW5mb1NpbmtCYXNlJiBz
aW5rKSA6IG1TaW5rKHNpbmspIHt9Ci0gICAgdm9pZCB2aXNpdFN5bWJvbChUR3JhcGhTeW1ib2wq
IHN5bWJvbCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdEFyZ3VtZW50KFRHcmFwaEFyZ3VtZW50
KiBwYXJhbWV0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXRGdW5jdGlvbkNhbGwoVEdyYXBo
RnVuY3Rpb25DYWxsKiBmdW5jdGlvbkNhbGwpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXRTZWxl
Y3Rpb24oVEdyYXBoU2VsZWN0aW9uKiBzZWxlY3Rpb24pIG92ZXJyaWRlOwotICAgIHZvaWQgdmlz
aXRMb29wKFRHcmFwaExvb3AqIGxvb3ApIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXRMb2dpY2Fs
T3AoVEdyYXBoTG9naWNhbE9wKiBsb2dpY2FsT3ApIG92ZXJyaWRlOwotCi0gICAgdm9pZCBvdXRw
dXRBbGxTcGFubmluZ1RyZWVzKFREZXBlbmRlbmN5R3JhcGgmIGdyYXBoKTsKLSAgcHJpdmF0ZToK
LSAgICB2b2lkIG91dHB1dEluZGVudGF0aW9uKCk7Ci0KLSAgICBUSW5mb1NpbmtCYXNlJiBtU2lu
azsKLX07Ci0KLSNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9ERVBHUkFQSF9ERVBFTkRF
TkNZR1JBUEhPVVRQVVRfSF8KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaE91
dHB1dC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1u
YXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdy
YXBoVHJhdmVyc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaFRyYXZlcnNlLmNw
cAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoVHJhdmVyc2UuY3BwCShub25l
eGlzdGVudCkKQEAgLTEsNjkgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNsdWRlICJjb21w
aWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaC5oIgotCi0vLyBUaGVzZSBt
ZXRob2RzIGRvIGEgYnJlYWR0aC1maXJzdCB0cmF2ZXJzYWwgdGhyb3VnaCB0aGUgZ3JhcGggYW5k
IG1hcmsgdmlzaXRlZCBub2Rlcy4KLQotdm9pZCBUR3JhcGhOb2RlOjp0cmF2ZXJzZShURGVwZW5k
ZW5jeUdyYXBoVHJhdmVyc2VyKiBncmFwaFRyYXZlcnNlcikKLXsKLSAgICBncmFwaFRyYXZlcnNl
ci0+bWFya1Zpc2l0ZWQodGhpcyk7Ci19Ci0KLXZvaWQgVEdyYXBoUGFyZW50Tm9kZTo6dHJhdmVy
c2UoVERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlciogZ3JhcGhUcmF2ZXJzZXIpCi17Ci0gICAgVEdy
YXBoTm9kZTo6dHJhdmVyc2UoZ3JhcGhUcmF2ZXJzZXIpOwotCi0gICAgZ3JhcGhUcmF2ZXJzZXIt
PmluY3JlbWVudERlcHRoKCk7Ci0KLSAgICAvLyBWaXNpdCB0aGUgcGFyZW50IG5vZGUncyBjaGls
ZHJlbi4KLSAgICBmb3IgKFRHcmFwaE5vZGVTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtRGVw
ZW5kZW50Tm9kZXMuYmVnaW4oKTsKLSAgICAgICAgIGl0ZXIgIT0gbURlcGVuZGVudE5vZGVzLmVu
ZCgpOwotICAgICAgICAgKytpdGVyKQotICAgIHsKLSAgICAgICAgVEdyYXBoTm9kZSogbm9kZSA9
ICppdGVyOwotICAgICAgICBpZiAoIWdyYXBoVHJhdmVyc2VyLT5pc1Zpc2l0ZWQobm9kZSkpCi0g
ICAgICAgICAgICBub2RlLT50cmF2ZXJzZShncmFwaFRyYXZlcnNlcik7Ci0gICAgfQotCi0gICAg
Z3JhcGhUcmF2ZXJzZXItPmRlY3JlbWVudERlcHRoKCk7Ci19Ci0KLXZvaWQgVEdyYXBoQXJndW1l
bnQ6OnRyYXZlcnNlKFREZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZXIqIGdyYXBoVHJhdmVyc2VyKQot
ewotICAgIGdyYXBoVHJhdmVyc2VyLT52aXNpdEFyZ3VtZW50KHRoaXMpOwotICAgIFRHcmFwaFBh
cmVudE5vZGU6OnRyYXZlcnNlKGdyYXBoVHJhdmVyc2VyKTsKLX0KLQotdm9pZCBUR3JhcGhGdW5j
dGlvbkNhbGw6OnRyYXZlcnNlKFREZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZXIqIGdyYXBoVHJhdmVy
c2VyKQotewotICAgIGdyYXBoVHJhdmVyc2VyLT52aXNpdEZ1bmN0aW9uQ2FsbCh0aGlzKTsKLSAg
ICBUR3JhcGhQYXJlbnROb2RlOjp0cmF2ZXJzZShncmFwaFRyYXZlcnNlcik7Ci19Ci0KLXZvaWQg
VEdyYXBoU3ltYm9sOjp0cmF2ZXJzZShURGVwZW5kZW5jeUdyYXBoVHJhdmVyc2VyKiBncmFwaFRy
YXZlcnNlcikKLXsKLSAgICBncmFwaFRyYXZlcnNlci0+dmlzaXRTeW1ib2wodGhpcyk7Ci0gICAg
VEdyYXBoUGFyZW50Tm9kZTo6dHJhdmVyc2UoZ3JhcGhUcmF2ZXJzZXIpOwotfQotCi12b2lkIFRH
cmFwaFNlbGVjdGlvbjo6dHJhdmVyc2UoVERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlciogZ3JhcGhU
cmF2ZXJzZXIpCi17Ci0gICAgZ3JhcGhUcmF2ZXJzZXItPnZpc2l0U2VsZWN0aW9uKHRoaXMpOwot
ICAgIFRHcmFwaE5vZGU6OnRyYXZlcnNlKGdyYXBoVHJhdmVyc2VyKTsKLX0KLQotdm9pZCBUR3Jh
cGhMb29wOjp0cmF2ZXJzZShURGVwZW5kZW5jeUdyYXBoVHJhdmVyc2VyKiBncmFwaFRyYXZlcnNl
cikKLXsKLSAgICBncmFwaFRyYXZlcnNlci0+dmlzaXRMb29wKHRoaXMpOwotICAgIFRHcmFwaE5v
ZGU6OnRyYXZlcnNlKGdyYXBoVHJhdmVyc2VyKTsKLX0KLQotdm9pZCBUR3JhcGhMb2dpY2FsT3A6
OnRyYXZlcnNlKFREZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZXIqIGdyYXBoVHJhdmVyc2VyKQotewot
ICAgIGdyYXBoVHJhdmVyc2VyLT52aXNpdExvZ2ljYWxPcCh0aGlzKTsKLSAgICBUR3JhcGhOb2Rl
Ojp0cmF2ZXJzZShncmFwaFRyYXZlcnNlcik7Ci19CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9kZXBncmFwaC9EZXBl
bmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxl
CiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9nbHNs
YW5nLmwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvZ2xzbGFuZy5sCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nLmwJKHdvcmtpbmcgY29w
eSkKQEAgLTM5Miw3ICszOTIsNiBAQCBPICAgICAgICAgICBbMC03XQogPEZJRUxEUz5bIFx0XHZc
ZlxyXSB7fQogPEZJRUxEUz4uIHsKICAgICB5eWV4dHJhLT5lcnJvcigqeXlsbG9jLCAiSWxsZWdh
bCBjaGFyYWN0ZXIgYXQgZmllbGRuYW1lIHN0YXJ0IiwgeXl0ZXh0LCAiIik7Ci0gICAgeXlleHRy
YS0+cmVjb3ZlcigpOwogICAgIHJldHVybiAwOwogfQogCkBAIC00MzcsNyArNDM2LDYgQEAgaW50
IHJlc2VydmVkX3dvcmQoeXlzY2FuX3QgeXlzY2FubmVyKSB7CiAgICAgc3RydWN0IHl5Z3V0c190
KiB5eWcgPSAoc3RydWN0IHl5Z3V0c190KikgeXlzY2FubmVyOwogCiAgICAgeXlleHRyYS0+ZXJy
b3IoKnl5bGxvYywgIklsbGVnYWwgdXNlIG9mIHJlc2VydmVkIHdvcmQiLCB5eXRleHQsICIiKTsK
LSAgICB5eWV4dHJhLT5yZWNvdmVyKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTQ4Nyw3ICs0
ODUsNiBAQCBpbnQgdWludF9jb25zdGFudChUUGFyc2VDb250ZXh0ICpjb250ZXh0CiAgICAgaWYg
KGNvbnRleHQtPmdldFNoYWRlclZlcnNpb24oKSA8IDMwMCkKICAgICB7CiAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCp5eWxsb2MsICJVbnNpZ25lZCBpbnRlZ2VycyBhcmUgdW5zdXBwb3J0ZWQgcHJp
b3IgdG8gR0xTTCBFUyAzLjAwIiwgeXl0ZXh0LCAiIik7Ci0gICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC01MDQsNyArNTAxLDYgQEAgaW50
IGZsb2F0c3VmZml4X2NoZWNrKFRQYXJzZUNvbnRleHQqIGNvbgogICAgIGlmIChjb250ZXh0LT5n
ZXRTaGFkZXJWZXJzaW9uKCkgPCAzMDApCiAgICAgewogICAgICAgICBjb250ZXh0LT5lcnJvcigq
eXlsbG9jLCAiRmxvYXRpbmctcG9pbnQgc3VmZml4IHVuc3VwcG9ydGVkIHByaW9yIHRvIEdMU0wg
RVMgMy4wMCIsIHl5dGV4dCk7Ci0gICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQogCkBAIC01MTgsNyArNTE0LDYgQEAgaW50IGZsb2F0c3VmZml4X2No
ZWNrKFRQYXJzZUNvbnRleHQqIGNvbgogCiB2b2lkIHl5ZXJyb3IoWVlMVFlQRSogbGxvYywgVFBh
cnNlQ29udGV4dCogY29udGV4dCwgdm9pZCAqc2Nhbm5lciwgY29uc3QgY2hhciogcmVhc29uKSB7
CiAgICAgY29udGV4dC0+ZXJyb3IoKmxsb2MsIHJlYXNvbiwgeXlnZXRfdGV4dChzY2FubmVyKSk7
Ci0gICAgY29udGV4dC0+cmVjb3ZlcigpOwogfQogCiBpbnQgaW50X2NvbnN0YW50KFRQYXJzZUNv
bnRleHQgKmNvbnRleHQpIHsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL2dsc2xhbmcueQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nLnkJKHJldmlzaW9uIDIwNzgw
NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2ds
c2xhbmcueQkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsOCBAQCBXSElDSCBHRU5FUkFURVMg
VEhFIEdMU0wgRVMgUEFSU0VSIChnbHNsCiAKIC8vIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRl
ZCBieSBnZW5lcmF0ZV9wYXJzZXIuc2guIERPIE5PVCBFRElUIQogCisvLyBjbGFuZy1mb3JtYXQg
b2ZmCisKIC8vIElnbm9yZSBlcnJvcnMgaW4gYXV0by1nZW5lcmF0ZWQgY29kZS4KICNpZiBkZWZp
bmVkKF9fR05VQ19fKQogI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC1m
dW5jdGlvbiIKQEAgLTc0LDEwICs3NiwxMiBAQCBXSElDSCBHRU5FUkFURVMgVEhFIEdMU0wgRVMg
UEFSU0VSIChnbHNsCiAgICAgICAgICAgICBUSW50ZXJtTm9kZVBhaXIgbm9kZVBhaXI7CiAgICAg
ICAgICAgICBUSW50ZXJtVHlwZWQqIGludGVybVR5cGVkTm9kZTsKICAgICAgICAgICAgIFRJbnRl
cm1BZ2dyZWdhdGUqIGludGVybUFnZ3JlZ2F0ZTsKKyAgICAgICAgICAgIFRJbnRlcm1CbG9jayog
aW50ZXJtQmxvY2s7CiAgICAgICAgICAgICBUSW50ZXJtU3dpdGNoKiBpbnRlcm1Td2l0Y2g7CiAg
ICAgICAgICAgICBUSW50ZXJtQ2FzZSogaW50ZXJtQ2FzZTsKICAgICAgICAgfTsKICAgICAgICAg
dW5pb24geworICAgICAgICAgICAgVFR5cGVTcGVjaWZpZXJOb25BcnJheSB0eXBlU3BlY2lmaWVy
Tm9uQXJyYXk7CiAgICAgICAgICAgICBUUHVibGljVHlwZSB0eXBlOwogICAgICAgICAgICAgVFBy
ZWNpc2lvbiBwcmVjaXNpb247CiAgICAgICAgICAgICBUTGF5b3V0UXVhbGlmaWVyIGxheW91dFF1
YWxpZmllcjsKQEAgLTg2LDYgKzkwLDggQEAgV0hJQ0ggR0VORVJBVEVTIFRIRSBHTFNMIEVTIFBB
UlNFUiAoZ2xzbAogICAgICAgICAgICAgVFBhcmFtZXRlciBwYXJhbTsKICAgICAgICAgICAgIFRG
aWVsZCogZmllbGQ7CiAgICAgICAgICAgICBURmllbGRMaXN0KiBmaWVsZExpc3Q7CisgICAgICAg
ICAgICBUUXVhbGlmaWVyV3JhcHBlckJhc2UqIHF1YWxpZmllcldyYXBwZXI7CisgICAgICAgICAg
ICBUVHlwZVF1YWxpZmllckJ1aWxkZXIqIHR5cGVRdWFsaWZpZXJCdWlsZGVyOwogICAgICAgICB9
OwogICAgIH0gaW50ZXJtOwogfQpAQCAtMTEzLDI4ICsxMTksNDIgQEAgZXh0ZXJuIHZvaWQgeXll
cnJvcihZWUxUWVBFKiB5eWxsb2MsIFRQYQogI2RlZmluZSBWRVJURVhfT05MWShTLCBMKSB7ICBc
CiAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclR5cGUoKSAhPSBHTF9WRVJURVhfU0hBREVSKSB7
ICBcCiAgICAgICAgIGNvbnRleHQtPmVycm9yKEwsICIgc3VwcG9ydGVkIGluIHZlcnRleCBzaGFk
ZXJzIG9ubHkgIiwgUyk7ICBcCi0gICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsgIFwKICAgICB9
ICBcCiB9CiAKICNkZWZpbmUgRlJBR19PTkxZKFMsIEwpIHsgIFwKICAgICBpZiAoY29udGV4dC0+
Z2V0U2hhZGVyVHlwZSgpICE9IEdMX0ZSQUdNRU5UX1NIQURFUikgeyAgXAogICAgICAgICBjb250
ZXh0LT5lcnJvcihMLCAiIHN1cHBvcnRlZCBpbiBmcmFnbWVudCBzaGFkZXJzIG9ubHkgIiwgUyk7
ICBcCi0gICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsgIFwKKyAgICB9ICBcCit9CisKKyNkZWZp
bmUgQ09NUFVURV9PTkxZKFMsIEwpIHsgIFwKKyAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyVHlw
ZSgpICE9IEdMX0NPTVBVVEVfU0hBREVSKSB7ICBcCisgICAgICAgIGNvbnRleHQtPmVycm9yKEws
ICIgc3VwcG9ydGVkIGluIGNvbXB1dGUgc2hhZGVycyBvbmx5ICIsIFMpOyAgXAorICAgIH0gIFwK
K30KKworI2RlZmluZSBOT05fQ09NUFVURV9PTkxZKFMsIEwpIHsgIFwKKyAgICBpZiAoY29udGV4
dC0+Z2V0U2hhZGVyVHlwZSgpICE9IEdMX1ZFUlRFWF9TSEFERVIgJiYgY29udGV4dC0+Z2V0U2hh
ZGVyVHlwZSgpICE9IEdMX0ZSQUdNRU5UX1NIQURFUikgeyAgXAorICAgICAgICBjb250ZXh0LT5l
cnJvcihMLCAiIHN1cHBvcnRlZCBpbiB2ZXJ0ZXggYW5kIGZyYWdtZW50IHNoYWRlcnMgb25seSAi
LCBTKTsgIFwKICAgICB9ICBcCiB9CiAKICNkZWZpbmUgRVMyX09OTFkoUywgTCkgeyAgXAogICAg
IGlmIChjb250ZXh0LT5nZXRTaGFkZXJWZXJzaW9uKCkgIT0gMTAwKSB7ICBcCiAgICAgICAgIGNv
bnRleHQtPmVycm9yKEwsICIgc3VwcG9ydGVkIGluIEdMU0wgRVMgMS4wMCBvbmx5ICIsIFMpOyAg
XAotICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7ICBcCiAgICAgfSAgXAogfQogCi0jZGVmaW5l
IEVTM19PTkxZKFRPS0VOLCBMSU5FLCBSRUFTT04pIHsgIFwKLSAgICBpZiAoY29udGV4dC0+Z2V0
U2hhZGVyVmVyc2lvbigpICE9IDMwMCkgeyAgXAotICAgICAgICBjb250ZXh0LT5lcnJvcihMSU5F
LCBSRUFTT04gIiBzdXBwb3J0ZWQgaW4gR0xTTCBFUyAzLjAwIG9ubHkgIiwgVE9LRU4pOyAgXAot
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7ICBcCisjZGVmaW5lIEVTM19PUl9ORVdFUihUT0tF
TiwgTElORSwgUkVBU09OKSB7ICBcCisgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclZlcnNpb24o
KSA8IDMwMCkgeyAgXAorICAgICAgICBjb250ZXh0LT5lcnJvcihMSU5FLCBSRUFTT04gIiBzdXBw
b3J0ZWQgaW4gR0xTTCBFUyAzLjAwIGFuZCBhYm92ZSBvbmx5ICIsIFRPS0VOKTsgIFwKKyAgICB9
ICBcCit9CisKKyNkZWZpbmUgRVMzXzFfT05MWShUT0tFTiwgTElORSwgUkVBU09OKSB7ICBcCisg
ICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclZlcnNpb24oKSAhPSAzMTApIHsgIFwKKyAgICAgICAg
Y29udGV4dC0+ZXJyb3IoTElORSwgUkVBU09OICIgc3VwcG9ydGVkIGluIEdMU0wgRVMgMy4xMCBv
bmx5ICIsIFRPS0VOKTsgIFwKICAgICB9ICBcCiB9CiAlfQpAQCAtMTc2LDkgKzE5Niw5IEBAIGV4
dGVybiB2b2lkIHl5ZXJyb3IoWVlMVFlQRSogeXlsbG9jLCBUUGEKICV0eXBlIDxpbnRlcm0uaW50
ZXJtVHlwZWROb2RlPiBzaGlmdF9leHByZXNzaW9uIGFuZF9leHByZXNzaW9uIGV4Y2x1c2l2ZV9v
cl9leHByZXNzaW9uIGluY2x1c2l2ZV9vcl9leHByZXNzaW9uCiAldHlwZSA8aW50ZXJtLmludGVy
bVR5cGVkTm9kZT4gZnVuY3Rpb25fY2FsbCBpbml0aWFsaXplciBjb25kaXRpb24gY29uZGl0aW9u
b3B0CiAKLSV0eXBlIDxpbnRlcm0uaW50ZXJtTm9kZT4gdHJhbnNsYXRpb25fdW5pdCBmdW5jdGlv
bl9kZWZpbml0aW9uCi0ldHlwZSA8aW50ZXJtLmludGVybU5vZGU+IHN0YXRlbWVudCBzaW1wbGVf
c3RhdGVtZW50Ci0ldHlwZSA8aW50ZXJtLmludGVybUFnZ3JlZ2F0ZT4gIHN0YXRlbWVudF9saXN0
IGNvbXBvdW5kX3N0YXRlbWVudCBjb21wb3VuZF9zdGF0ZW1lbnRfbm9fbmV3X3Njb3BlCisldHlw
ZSA8aW50ZXJtLmludGVybUJsb2NrPiB0cmFuc2xhdGlvbl91bml0CisldHlwZSA8aW50ZXJtLmlu
dGVybU5vZGU+IGZ1bmN0aW9uX2RlZmluaXRpb24gc3RhdGVtZW50IHNpbXBsZV9zdGF0ZW1lbnQK
KyV0eXBlIDxpbnRlcm0uaW50ZXJtQmxvY2s+IHN0YXRlbWVudF9saXN0IGNvbXBvdW5kX3N0YXRl
bWVudCBjb21wb3VuZF9zdGF0ZW1lbnRfbm9fbmV3X3Njb3BlCiAldHlwZSA8aW50ZXJtLmludGVy
bU5vZGU+IGRlY2xhcmF0aW9uX3N0YXRlbWVudCBzZWxlY3Rpb25fc3RhdGVtZW50IGV4cHJlc3Np
b25fc3RhdGVtZW50CiAldHlwZSA8aW50ZXJtLmludGVybU5vZGU+IGRlY2xhcmF0aW9uIGV4dGVy
bmFsX2RlY2xhcmF0aW9uCiAldHlwZSA8aW50ZXJtLmludGVybU5vZGU+IGZvcl9pbml0X3N0YXRl
bWVudApAQCAtMTg5LDEzICsyMDksMTggQEAgZXh0ZXJuIHZvaWQgeXllcnJvcihZWUxUWVBFKiB5
eWxsb2MsIFRQYQogJXR5cGUgPGludGVybT4gc2luZ2xlX2RlY2xhcmF0aW9uIGluaXRfZGVjbGFy
YXRvcl9saXN0CiAKICV0eXBlIDxpbnRlcm0+IHBhcmFtZXRlcl9kZWNsYXJhdGlvbiBwYXJhbWV0
ZXJfZGVjbGFyYXRvciBwYXJhbWV0ZXJfdHlwZV9zcGVjaWZpZXIKLSV0eXBlIDxpbnRlcm0ucXVh
bGlmaWVyPiBwYXJhbWV0ZXJfcXVhbGlmaWVyIHBhcmFtZXRlcl90eXBlX3F1YWxpZmllciAKLSV0
eXBlIDxpbnRlcm0ubGF5b3V0UXVhbGlmaWVyPiBsYXlvdXRfcXVhbGlmaWVyIGxheW91dF9xdWFs
aWZpZXJfaWRfbGlzdCBsYXlvdXRfcXVhbGlmaWVyX2lkCisldHlwZSA8aW50ZXJtLmxheW91dFF1
YWxpZmllcj4gbGF5b3V0X3F1YWxpZmllcl9pZF9saXN0IGxheW91dF9xdWFsaWZpZXJfaWQKKwor
JXR5cGUgPGludGVybS50eXBlPiBmdWxseV9zcGVjaWZpZWRfdHlwZSB0eXBlX3NwZWNpZmllcgog
CiAldHlwZSA8aW50ZXJtLnByZWNpc2lvbj4gcHJlY2lzaW9uX3F1YWxpZmllcgotJXR5cGUgPGlu
dGVybS50eXBlPiB0eXBlX3F1YWxpZmllciBmdWxseV9zcGVjaWZpZWRfdHlwZSB0eXBlX3NwZWNp
ZmllciBzdG9yYWdlX3F1YWxpZmllciBpbnRlcnBvbGF0aW9uX3F1YWxpZmllcgotJXR5cGUgPGlu
dGVybS50eXBlPiB0eXBlX3NwZWNpZmllcl9ub19wcmVjIHR5cGVfc3BlY2lmaWVyX25vbmFycmF5
Ci0ldHlwZSA8aW50ZXJtLnR5cGU+IHN0cnVjdF9zcGVjaWZpZXIKKyV0eXBlIDxpbnRlcm0ubGF5
b3V0UXVhbGlmaWVyPiBsYXlvdXRfcXVhbGlmaWVyCisldHlwZSA8aW50ZXJtLnF1YWxpZmllcj4g
c3RvcmFnZV9xdWFsaWZpZXIgaW50ZXJwb2xhdGlvbl9xdWFsaWZpZXIKKyV0eXBlIDxpbnRlcm0u
cXVhbGlmaWVyV3JhcHBlcj4gc2luZ2xlX3R5cGVfcXVhbGlmaWVyIGludmFyaWFudF9xdWFsaWZp
ZXIKKyV0eXBlIDxpbnRlcm0udHlwZVF1YWxpZmllckJ1aWxkZXI+IHR5cGVfcXVhbGlmaWVyCisK
KyV0eXBlIDxpbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5PiB0eXBlX3NwZWNpZmllcl9ub25h
cnJheSBzdHJ1Y3Rfc3BlY2lmaWVyCisldHlwZSA8aW50ZXJtLnR5cGU+IHR5cGVfc3BlY2lmaWVy
X25vX3ByZWMKICV0eXBlIDxpbnRlcm0uZmllbGQ+IHN0cnVjdF9kZWNsYXJhdG9yCiAldHlwZSA8
aW50ZXJtLmZpZWxkTGlzdD4gc3RydWN0X2RlY2xhcmF0b3JfbGlzdCBzdHJ1Y3RfZGVjbGFyYXRp
b24gc3RydWN0X2RlY2xhcmF0aW9uX2xpc3QKICV0eXBlIDxpbnRlcm0uZnVuY3Rpb24+IGZ1bmN0
aW9uX2hlYWRlciBmdW5jdGlvbl9kZWNsYXJhdG9yIGZ1bmN0aW9uX2lkZW50aWZpZXIKQEAgLTI3
NCw4ICsyOTksNyBAQCBwb3N0Zml4X2V4cHJlc3Npb24KIAogaW50ZWdlcl9leHByZXNzaW9uCiAg
ICAgOiBleHByZXNzaW9uIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmludGVnZXJFcnJvckNoZWNr
KCQxLCAiW10iKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgY29u
dGV4dC0+Y2hlY2tJc1NjYWxhckludGVnZXIoJDEsICJbXSIpOwogICAgICAgICAkJCA9ICQxOwog
ICAgIH0KICAgICA7CkBAIC0yOTcsNyArMzIxLDcgQEAgZnVuY3Rpb25fY2FsbF9vcl9tZXRob2QK
ICAgICAgICAgJCQubm9kZVBhaXIubm9kZTIgPSBudWxscHRyOwogICAgIH0KICAgICB8IHBvc3Rm
aXhfZXhwcmVzc2lvbiBET1QgZnVuY3Rpb25fY2FsbF9nZW5lcmljIHsKLSAgICAgICAgRVMzX09O
TFkoIiIsIEAzLCAibWV0aG9kcyIpOworICAgICAgICBFUzNfT1JfTkVXRVIoIiIsIEAzLCAibWV0
aG9kcyIpOwogICAgICAgICAkJCA9ICQzOwogICAgICAgICAkJC5ub2RlUGFpci5ub2RlMiA9ICQx
OwogICAgIH0KQEAgLTMyOCw3ICszNTIsNyBAQCBmdW5jdGlvbl9jYWxsX2hlYWRlcl93aXRoX3Bh
cmFtZXRlcnMKICAgICAgICAgY29uc3QgVFR5cGUgKnR5cGUgPSBuZXcgVFR5cGUoJDItPmdldFR5
cGUoKSk7CiAgICAgICAgICQxLT5hZGRQYXJhbWV0ZXIoVENvbnN0UGFyYW1ldGVyKHR5cGUpKTsK
ICAgICAgICAgJCQuZnVuY3Rpb24gPSAkMTsKLSAgICAgICAgJCQubm9kZVBhaXIubm9kZTEgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZSgkMiwgQDIpOworICAgICAgICAkJC5u
b2RlUGFpci5ub2RlMSA9IFRJbnRlcm1lZGlhdGU6Ok1ha2VBZ2dyZWdhdGUoJDIsIEAyKTsKICAg
ICB9CiAgICAgfCBmdW5jdGlvbl9jYWxsX2hlYWRlcl93aXRoX3BhcmFtZXRlcnMgQ09NTUEgYXNz
aWdubWVudF9leHByZXNzaW9uIHsKICAgICAgICAgY29uc3QgVFR5cGUgKnR5cGUgPSBuZXcgVFR5
cGUoJDMtPmdldFR5cGUoKSk7CkBAIC0zNDksMjAgKzM3MywxOCBAQCBmdW5jdGlvbl9jYWxsX2hl
YWRlcgogZnVuY3Rpb25faWRlbnRpZmllcgogICAgIDogdHlwZV9zcGVjaWZpZXJfbm9fcHJlYyB7
CiAgICAgICAgIGlmICgkMS5hcnJheSkgewotICAgICAgICAgICAgRVMzX09OTFkoIltdIiwgQDEs
ICJhcnJheSBjb25zdHJ1Y3RvciIpOworICAgICAgICAgICAgRVMzX09SX05FV0VSKCJbXSIsIEAx
LCAiYXJyYXkgY29uc3RydWN0b3IiKTsKICAgICAgICAgfQogICAgICAgICAkJCA9IGNvbnRleHQt
PmFkZENvbnN0cnVjdG9yRnVuYygkMSk7CiAgICAgfQogICAgIHwgSURFTlRJRklFUiB7Ci0gICAg
ICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soQDEsICokMS5zdHJpbmcpKQotICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICBjb250ZXh0LT5jaGVja0lzTm90
UmVzZXJ2ZWQoQDEsICokMS5zdHJpbmcpOwogICAgICAgICBjb25zdCBUVHlwZSAqdHlwZSA9IFRD
YWNoZTo6Z2V0VHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwogICAgICAgICBURnVuY3Rpb24g
KmZ1bmN0aW9uID0gbmV3IFRGdW5jdGlvbigkMS5zdHJpbmcsIHR5cGUpOwogICAgICAgICAkJCA9
IGZ1bmN0aW9uOwogICAgIH0KICAgICB8IEZJRUxEX1NFTEVDVElPTiB7Ci0gICAgICAgIGlmIChj
b250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soQDEsICokMS5zdHJpbmcpKQotICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICBjb250ZXh0LT5jaGVja0lzTm90UmVzZXJ2ZWQo
QDEsICokMS5zdHJpbmcpOwogICAgICAgICBjb25zdCBUVHlwZSAqdHlwZSA9IFRDYWNoZTo6Z2V0
VHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwogICAgICAgICBURnVuY3Rpb24gKmZ1bmN0aW9u
ID0gbmV3IFRGdW5jdGlvbigkMS5zdHJpbmcsIHR5cGUpOwogICAgICAgICAkJCA9IGZ1bmN0aW9u
OwpAQCAtMzkzLDcgKzQxNSw3IEBAIHVuYXJ5X29wZXJhdG9yCiAgICAgfCBEQVNIICB7ICQkLm9w
ID0gRU9wTmVnYXRpdmU7IH0KICAgICB8IEJBTkcgIHsgJCQub3AgPSBFT3BMb2dpY2FsTm90OyB9
CiAgICAgfCBUSUxERSB7Ci0gICAgICAgIEVTM19PTkxZKCJ+IiwgQCQsICJiaXQtd2lzZSBvcGVy
YXRvciIpOworICAgICAgICBFUzNfT1JfTkVXRVIoIn4iLCBAJCwgImJpdC13aXNlIG9wZXJhdG9y
Iik7CiAgICAgICAgICQkLm9wID0gRU9wQml0d2lzZU5vdDsKICAgICB9CiAgICAgOwpAQCAtNDA4
LDcgKzQzMCw3IEBAIG11bHRpcGxpY2F0aXZlX2V4cHJlc3Npb24KICAgICAgICAgJCQgPSBjb250
ZXh0LT5hZGRCaW5hcnlNYXRoKEVPcERpdiwgJDEsICQzLCBAMik7CiAgICAgfQogICAgIHwgbXVs
dGlwbGljYXRpdmVfZXhwcmVzc2lvbiBQRVJDRU5UIHVuYXJ5X2V4cHJlc3Npb24gewotICAgICAg
ICBFUzNfT05MWSgiJSIsIEAyLCAiaW50ZWdlciBtb2R1bHVzIG9wZXJhdG9yIik7CisgICAgICAg
IEVTM19PUl9ORVdFUigiJSIsIEAyLCAiaW50ZWdlciBtb2R1bHVzIG9wZXJhdG9yIik7CiAgICAg
ICAgICQkID0gY29udGV4dC0+YWRkQmluYXJ5TWF0aChFT3BJTW9kLCAkMSwgJDMsIEAyKTsKICAg
ICB9CiAgICAgOwpAQCAtNDI2LDExICs0NDgsMTEgQEAgYWRkaXRpdmVfZXhwcmVzc2lvbgogc2hp
ZnRfZXhwcmVzc2lvbgogICAgIDogYWRkaXRpdmVfZXhwcmVzc2lvbiB7ICQkID0gJDE7IH0KICAg
ICB8IHNoaWZ0X2V4cHJlc3Npb24gTEVGVF9PUCBhZGRpdGl2ZV9leHByZXNzaW9uIHsKLSAgICAg
ICAgRVMzX09OTFkoIjw8IiwgQDIsICJiaXQtd2lzZSBvcGVyYXRvciIpOworICAgICAgICBFUzNf
T1JfTkVXRVIoIjw8IiwgQDIsICJiaXQtd2lzZSBvcGVyYXRvciIpOwogICAgICAgICAkJCA9IGNv
bnRleHQtPmFkZEJpbmFyeU1hdGgoRU9wQml0U2hpZnRMZWZ0LCAkMSwgJDMsIEAyKTsKICAgICB9
CiAgICAgfCBzaGlmdF9leHByZXNzaW9uIFJJR0hUX09QIGFkZGl0aXZlX2V4cHJlc3Npb24gewot
ICAgICAgICBFUzNfT05MWSgiPj4iLCBAMiwgImJpdC13aXNlIG9wZXJhdG9yIik7CisgICAgICAg
IEVTM19PUl9ORVdFUigiPj4iLCBAMiwgImJpdC13aXNlIG9wZXJhdG9yIik7CiAgICAgICAgICQk
ID0gY29udGV4dC0+YWRkQmluYXJ5TWF0aChFT3BCaXRTaGlmdFJpZ2h0LCAkMSwgJDMsIEAyKTsK
ICAgICB9CiAgICAgOwpAQCAtNDY0LDcgKzQ4Niw3IEBAIGVxdWFsaXR5X2V4cHJlc3Npb24KIGFu
ZF9leHByZXNzaW9uCiAgICAgOiBlcXVhbGl0eV9leHByZXNzaW9uIHsgJCQgPSAkMTsgfQogICAg
IHwgYW5kX2V4cHJlc3Npb24gQU1QRVJTQU5EIGVxdWFsaXR5X2V4cHJlc3Npb24gewotICAgICAg
ICBFUzNfT05MWSgiJiIsIEAyLCAiYml0LXdpc2Ugb3BlcmF0b3IiKTsKKyAgICAgICAgRVMzX09S
X05FV0VSKCImIiwgQDIsICJiaXQtd2lzZSBvcGVyYXRvciIpOwogICAgICAgICAkJCA9IGNvbnRl
eHQtPmFkZEJpbmFyeU1hdGgoRU9wQml0d2lzZUFuZCwgJDEsICQzLCBAMik7CiAgICAgfQogICAg
IDsKQEAgLTQ3Miw3ICs0OTQsNyBAQCBhbmRfZXhwcmVzc2lvbgogZXhjbHVzaXZlX29yX2V4cHJl
c3Npb24KICAgICA6IGFuZF9leHByZXNzaW9uIHsgJCQgPSAkMTsgfQogICAgIHwgZXhjbHVzaXZl
X29yX2V4cHJlc3Npb24gQ0FSRVQgYW5kX2V4cHJlc3Npb24gewotICAgICAgICBFUzNfT05MWSgi
XiIsIEAyLCAiYml0LXdpc2Ugb3BlcmF0b3IiKTsKKyAgICAgICAgRVMzX09SX05FV0VSKCJeIiwg
QDIsICJiaXQtd2lzZSBvcGVyYXRvciIpOwogICAgICAgICAkJCA9IGNvbnRleHQtPmFkZEJpbmFy
eU1hdGgoRU9wQml0d2lzZVhvciwgJDEsICQzLCBAMik7CiAgICAgfQogICAgIDsKQEAgLTQ4MCw3
ICs1MDIsNyBAQCBleGNsdXNpdmVfb3JfZXhwcmVzc2lvbgogaW5jbHVzaXZlX29yX2V4cHJlc3Np
b24KICAgICA6IGV4Y2x1c2l2ZV9vcl9leHByZXNzaW9uIHsgJCQgPSAkMTsgfQogICAgIHwgaW5j
bHVzaXZlX29yX2V4cHJlc3Npb24gVkVSVElDQUxfQkFSIGV4Y2x1c2l2ZV9vcl9leHByZXNzaW9u
IHsKLSAgICAgICAgRVMzX09OTFkoInwiLCBAMiwgImJpdC13aXNlIG9wZXJhdG9yIik7CisgICAg
ICAgIEVTM19PUl9ORVdFUigifCIsIEAyLCAiYml0LXdpc2Ugb3BlcmF0b3IiKTsKICAgICAgICAg
JCQgPSBjb250ZXh0LT5hZGRCaW5hcnlNYXRoKEVPcEJpdHdpc2VPciwgJDEsICQzLCBAMik7CiAg
ICAgfQogICAgIDsKQEAgLTUxNiw4ICs1MzgsNyBAQCBjb25kaXRpb25hbF9leHByZXNzaW9uCiBh
c3NpZ25tZW50X2V4cHJlc3Npb24KICAgICA6IGNvbmRpdGlvbmFsX2V4cHJlc3Npb24geyAkJCA9
ICQxOyB9CiAgICAgfCB1bmFyeV9leHByZXNzaW9uIGFzc2lnbm1lbnRfb3BlcmF0b3IgYXNzaWdu
bWVudF9leHByZXNzaW9uIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2so
QDIsICJhc3NpZ24iLCAkMSkpCi0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAg
ICAgIGNvbnRleHQtPmNoZWNrQ2FuQmVMVmFsdWUoQDIsICJhc3NpZ24iLCAkMSk7CiAgICAgICAg
ICQkID0gY29udGV4dC0+YWRkQXNzaWduKCQyLm9wLCAkMSwgJDMsIEAyKTsKICAgICB9CiAgICAg
OwpAQCAtNTI3LDI5ICs1NDgsMjkgQEAgYXNzaWdubWVudF9vcGVyYXRvcgogICAgIHwgTVVMX0FT
U0lHTiAgIHsgJCQub3AgPSBFT3BNdWxBc3NpZ247IH0KICAgICB8IERJVl9BU1NJR04gICB7ICQk
Lm9wID0gRU9wRGl2QXNzaWduOyB9CiAgICAgfCBNT0RfQVNTSUdOICAgewotICAgICAgICBFUzNf
T05MWSgiJT0iLCBAJCwgImludGVnZXIgbW9kdWx1cyBvcGVyYXRvciIpOworICAgICAgICBFUzNf
T1JfTkVXRVIoIiU9IiwgQCQsICJpbnRlZ2VyIG1vZHVsdXMgb3BlcmF0b3IiKTsKICAgICAgICAg
JCQub3AgPSBFT3BJTW9kQXNzaWduOwogICAgIH0KICAgICB8IEFERF9BU1NJR04gICB7ICQkLm9w
ID0gRU9wQWRkQXNzaWduOyB9CiAgICAgfCBTVUJfQVNTSUdOICAgeyAkJC5vcCA9IEVPcFN1YkFz
c2lnbjsgfQogICAgIHwgTEVGVF9BU1NJR04gewotICAgICAgICBFUzNfT05MWSgiPDw9IiwgQCQs
ICJiaXQtd2lzZSBvcGVyYXRvciIpOworICAgICAgICBFUzNfT1JfTkVXRVIoIjw8PSIsIEAkLCAi
Yml0LXdpc2Ugb3BlcmF0b3IiKTsKICAgICAgICAgJCQub3AgPSBFT3BCaXRTaGlmdExlZnRBc3Np
Z247CiAgICAgfQogICAgIHwgUklHSFRfQVNTSUdOIHsKLSAgICAgICAgRVMzX09OTFkoIj4+PSIs
IEAkLCAiYml0LXdpc2Ugb3BlcmF0b3IiKTsKKyAgICAgICAgRVMzX09SX05FV0VSKCI+Pj0iLCBA
JCwgImJpdC13aXNlIG9wZXJhdG9yIik7CiAgICAgICAgICQkLm9wID0gRU9wQml0U2hpZnRSaWdo
dEFzc2lnbjsKICAgICB9CiAgICAgfCBBTkRfQVNTSUdOIHsKLSAgICAgICAgRVMzX09OTFkoIiY9
IiwgQCQsICJiaXQtd2lzZSBvcGVyYXRvciIpOworICAgICAgICBFUzNfT1JfTkVXRVIoIiY9Iiwg
QCQsICJiaXQtd2lzZSBvcGVyYXRvciIpOwogICAgICAgICAkJC5vcCA9IEVPcEJpdHdpc2VBbmRB
c3NpZ247CiAgICAgfQogICAgIHwgWE9SX0FTU0lHTiB7Ci0gICAgICAgIEVTM19PTkxZKCJePSIs
IEAkLCAiYml0LXdpc2Ugb3BlcmF0b3IiKTsKKyAgICAgICAgRVMzX09SX05FV0VSKCJePSIsIEAk
LCAiYml0LXdpc2Ugb3BlcmF0b3IiKTsKICAgICAgICAgJCQub3AgPSBFT3BCaXR3aXNlWG9yQXNz
aWduOwogICAgIH0KICAgICB8IE9SX0FTU0lHTiB7Ci0gICAgICAgIEVTM19PTkxZKCJ8PSIsIEAk
LCAiYml0LXdpc2Ugb3BlcmF0b3IiKTsKKyAgICAgICAgRVMzX09SX05FV0VSKCJ8PSIsIEAkLCAi
Yml0LXdpc2Ugb3BlcmF0b3IiKTsKICAgICAgICAgJCQub3AgPSBFT3BCaXR3aXNlT3JBc3NpZ247
CiAgICAgfQogICAgIDsKQEAgLTU2NSwxNiArNTg2LDE0IEBAIGV4cHJlc3Npb24KIAogY29uc3Rh
bnRfZXhwcmVzc2lvbgogICAgIDogY29uZGl0aW9uYWxfZXhwcmVzc2lvbiB7Ci0gICAgICAgIGlm
IChjb250ZXh0LT5jb25zdEVycm9yQ2hlY2soJDEpKQotICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOworICAgICAgICBjb250ZXh0LT5jaGVja0lzQ29uc3QoJDEpOwogICAgICAgICAkJCA9
ICQxOwogICAgIH0KICAgICA7CiAKIGVudGVyX3N0cnVjdAogICAgIDogSURFTlRJRklFUiBMRUZU
X0JSQUNFIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oQDEs
ICokMS5zdHJpbmcpKQotICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICBj
b250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKEAxLCAqJDEuc3RyaW5nKTsKICAgICAgICAg
JCQgPSAkMTsKICAgICB9CiAgICAgOwpAQCAtNTkyLDM1ICs2MTEsMzggQEAgZGVjbGFyYXRpb24K
ICAgICB8IFBSRUNJU0lPTiBwcmVjaXNpb25fcXVhbGlmaWVyIHR5cGVfc3BlY2lmaWVyX25vX3By
ZWMgU0VNSUNPTE9OIHsKICAgICAgICAgaWYgKCgkMiA9PSBFYnBIaWdoKSAmJiAoY29udGV4dC0+
Z2V0U2hhZGVyVHlwZSgpID09IEdMX0ZSQUdNRU5UX1NIQURFUikgJiYgIWNvbnRleHQtPmdldEZy
YWdtZW50UHJlY2lzaW9uSGlnaCgpKSB7CiAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwg
InByZWNpc2lvbiBpcyBub3Qgc3VwcG9ydGVkIGluIGZyYWdtZW50IHNoYWRlciIsICJoaWdocCIp
OwotICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIGlm
ICghY29udGV4dC0+c3ltYm9sVGFibGUuc2V0RGVmYXVsdFByZWNpc2lvbiggJDMsICQyICkpIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAiaWxsZWdhbCB0eXBlIGFyZ3VtZW50IGZv
ciBkZWZhdWx0IHByZWNpc2lvbiBxdWFsaWZpZXIiLCBnZXRCYXNpY1N0cmluZygkMy50eXBlKSk7
Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcihAMSwgImlsbGVnYWwgdHlwZSBhcmd1bWVudCBmb3IgZGVmYXVsdCBwcmVjaXNpb24gcXVh
bGlmaWVyIiwgZ2V0QmFzaWNTdHJpbmcoJDMuZ2V0QmFzaWNUeXBlKCkpKTsKICAgICAgICAgfQog
ICAgICAgICAkJCA9IDA7CiAgICAgfQogICAgIHwgdHlwZV9xdWFsaWZpZXIgZW50ZXJfc3RydWN0
IHN0cnVjdF9kZWNsYXJhdGlvbl9saXN0IFJJR0hUX0JSQUNFIFNFTUlDT0xPTiB7Ci0gICAgICAg
IEVTM19PTkxZKGdldFF1YWxpZmllclN0cmluZygkMS5xdWFsaWZpZXIpLCBAMSwgImludGVyZmFj
ZSBibG9ja3MiKTsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRJbnRlcmZhY2VCbG9jaygkMSwg
QDIsICokMi5zdHJpbmcsICQzLCBOVUxMLCBAJCwgTlVMTCwgQCQpOworICAgICAgICBFUzNfT1Jf
TkVXRVIoJDIuc3RyaW5nLT5jX3N0cigpLCBAMSwgImludGVyZmFjZSBibG9ja3MiKTsKKyAgICAg
ICAgJCQgPSBjb250ZXh0LT5hZGRJbnRlcmZhY2VCbG9jaygqJDEsIEAyLCAqJDIuc3RyaW5nLCAk
MywgTlVMTCwgQCQsIE5VTEwsIEAkKTsKICAgICB9CiAgICAgfCB0eXBlX3F1YWxpZmllciBlbnRl
cl9zdHJ1Y3Qgc3RydWN0X2RlY2xhcmF0aW9uX2xpc3QgUklHSFRfQlJBQ0UgSURFTlRJRklFUiBT
RU1JQ09MT04gewotICAgICAgICBFUzNfT05MWShnZXRRdWFsaWZpZXJTdHJpbmcoJDEucXVhbGlm
aWVyKSwgQDEsICJpbnRlcmZhY2UgYmxvY2tzIik7Ci0gICAgICAgICQkID0gY29udGV4dC0+YWRk
SW50ZXJmYWNlQmxvY2soJDEsIEAyLCAqJDIuc3RyaW5nLCAkMywgJDUuc3RyaW5nLCBANSwgTlVM
TCwgQCQpOworICAgICAgICBFUzNfT1JfTkVXRVIoJDIuc3RyaW5nLT5jX3N0cigpLCBAMSwgImlu
dGVyZmFjZSBibG9ja3MiKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRJbnRlcmZhY2VCbG9j
aygqJDEsIEAyLCAqJDIuc3RyaW5nLCAkMywgJDUuc3RyaW5nLCBANSwgTlVMTCwgQCQpOwogICAg
IH0KICAgICB8IHR5cGVfcXVhbGlmaWVyIGVudGVyX3N0cnVjdCBzdHJ1Y3RfZGVjbGFyYXRpb25f
bGlzdCBSSUdIVF9CUkFDRSBJREVOVElGSUVSIExFRlRfQlJBQ0tFVCBjb25zdGFudF9leHByZXNz
aW9uIFJJR0hUX0JSQUNLRVQgU0VNSUNPTE9OIHsKLSAgICAgICAgRVMzX09OTFkoZ2V0UXVhbGlm
aWVyU3RyaW5nKCQxLnF1YWxpZmllciksIEAxLCAiaW50ZXJmYWNlIGJsb2NrcyIpOwotICAgICAg
ICAkJCA9IGNvbnRleHQtPmFkZEludGVyZmFjZUJsb2NrKCQxLCBAMiwgKiQyLnN0cmluZywgJDMs
ICQ1LnN0cmluZywgQDUsICQ3LCBANik7CisgICAgICAgIEVTM19PUl9ORVdFUigkMi5zdHJpbmct
PmNfc3RyKCksIEAxLCAiaW50ZXJmYWNlIGJsb2NrcyIpOworICAgICAgICAkJCA9IGNvbnRleHQt
PmFkZEludGVyZmFjZUJsb2NrKCokMSwgQDIsICokMi5zdHJpbmcsICQzLCAkNS5zdHJpbmcsIEA1
LCAkNywgQDYpOwogICAgIH0KICAgICB8IHR5cGVfcXVhbGlmaWVyIFNFTUlDT0xPTiB7Ci0gICAg
ICAgIGNvbnRleHQtPnBhcnNlR2xvYmFsTGF5b3V0UXVhbGlmaWVyKCQxKTsKKyAgICAgICAgY29u
dGV4dC0+cGFyc2VHbG9iYWxMYXlvdXRRdWFsaWZpZXIoKiQxKTsKICAgICAgICAgJCQgPSAwOwog
ICAgIH0KKyAgICB8IHR5cGVfcXVhbGlmaWVyIElERU5USUZJRVIgU0VNSUNPTE9OIC8vIGUuZy4g
dG8gcXVhbGlmeSBhbiBleGlzdGluZyB2YXJpYWJsZSBhcyBpbnZhcmlhbnQKKyAgICB7CisgICAg
ICAgICQkID0gY29udGV4dC0+cGFyc2VJbnZhcmlhbnREZWNsYXJhdGlvbigqJDEsIEAyLCAkMi5z
dHJpbmcsICQyLnN5bWJvbCk7CisgICAgfQogICAgIDsKIAogZnVuY3Rpb25fcHJvdG90eXBlCiAg
ICAgOiBmdW5jdGlvbl9kZWNsYXJhdG9yIFJJR0hUX1BBUkVOICB7CiAgICAgICAgICQkLmZ1bmN0
aW9uID0gY29udGV4dC0+cGFyc2VGdW5jdGlvbkRlY2xhcmF0b3IoQDIsICQxKTsKKyAgICAgICAg
Y29udGV4dC0+ZXhpdEZ1bmN0aW9uRGVjbGFyYXRpb24oKTsKICAgICB9CiAgICAgOwogCkBAIC02
NTMsNyArNjc1LDYgQEAgZnVuY3Rpb25faGVhZGVyX3dpdGhfcGFyYW1ldGVycwogICAgICAgICAg
ICAgLy8gVGhpcyBwYXJhbWV0ZXIgPiBmaXJzdCBpcyB2b2lkCiAgICAgICAgICAgICAvLwogICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJjYW5ub3QgYmUgYW4gYXJndW1lbnQgdHlwZSBl
eGNlcHQgZm9yICcodm9pZCknIiwgInZvaWQiKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgIGRlbGV0ZSAkMy5wYXJhbS50eXBlOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgLy8gQWRkIHRoZSBwYXJhbWV0ZXIKQEAgLTY2NSw1MyArNjg2LDMxIEBA
IGZ1bmN0aW9uX2hlYWRlcl93aXRoX3BhcmFtZXRlcnMKIAogZnVuY3Rpb25faGVhZGVyCiAgICAg
OiBmdWxseV9zcGVjaWZpZWRfdHlwZSBJREVOVElGSUVSIExFRlRfUEFSRU4gewotICAgICAgICBp
ZiAoJDEucXVhbGlmaWVyICE9IEV2cUdsb2JhbCAmJiAkMS5xdWFsaWZpZXIgIT0gRXZxVGVtcG9y
YXJ5KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgIm5vIHF1YWxp
ZmllcnMgYWxsb3dlZCBmb3IgZnVuY3Rpb24gcmV0dXJuIiwgZ2V0UXVhbGlmaWVyU3RyaW5nKCQx
LnF1YWxpZmllcikpOwotICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICB9
Ci0gICAgICAgIGlmICghJDEubGF5b3V0UXVhbGlmaWVyLmlzRW1wdHkoKSkKLSAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJubyBxdWFsaWZpZXJzIGFsbG93ZWQgZm9y
IGZ1bmN0aW9uIHJldHVybiIsICJsYXlvdXQiKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKLSAgICAgICAgfQotICAgICAgICAvLyBtYWtlIHN1cmUgYSBzYW1wbGVyIGlzIG5vdCBp
bnZvbHZlZCBhcyB3ZWxsLi4uCi0gICAgICAgIGlmIChjb250ZXh0LT5zYW1wbGVyRXJyb3JDaGVj
ayhAMiwgJDEsICJzYW1wbGVycyBjYW4ndCBiZSBmdW5jdGlvbiByZXR1cm4gdmFsdWVzIikpCi0g
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0KLSAgICAgICAgLy8gQWRkIHRoZSBmdW5j
dGlvbiBhcyBhIHByb3RvdHlwZSBhZnRlciBwYXJzaW5nIGl0ICh3ZSBkbyBub3Qgc3VwcG9ydCBy
ZWN1cnNpb24pCi0gICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rpb247Ci0gICAgICAgIGNvbnN0IFRU
eXBlICp0eXBlID0gbmV3IFRUeXBlKCQxKTsKLSAgICAgICAgZnVuY3Rpb24gPSBuZXcgVEZ1bmN0
aW9uKCQyLnN0cmluZywgdHlwZSk7Ci0gICAgICAgICQkID0gZnVuY3Rpb247Ci0gICAgICAgIAor
ICAgICAgICAkJCA9IGNvbnRleHQtPnBhcnNlRnVuY3Rpb25IZWFkZXIoJDEsICQyLnN0cmluZywg
QDIpOworCiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsKKyAgICAgICAgY29u
dGV4dC0+ZW50ZXJGdW5jdGlvbkRlY2xhcmF0aW9uKCk7CiAgICAgfQogICAgIDsKIAogcGFyYW1l
dGVyX2RlY2xhcmF0b3IKICAgICAvLyBUeXBlICsgbmFtZQogICAgIDogdHlwZV9zcGVjaWZpZXIg
aWRlbnRpZmllciB7Ci0gICAgICAgIGlmICgkMS50eXBlID09IEVidFZvaWQpIHsKKyAgICAgICAg
aWYgKCQxLmdldEJhc2ljVHlwZSgpID09IEVidFZvaWQpIHsKICAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKEAyLCAiaWxsZWdhbCB1c2Ugb2YgdHlwZSAndm9pZCciLCAkMi5zdHJpbmctPmNfc3Ry
KCkpOwotICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAg
IGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soQDIsICokMi5zdHJpbmcpKQotICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICBjb250ZXh0LT5jaGVja0lzTm90UmVz
ZXJ2ZWQoQDIsICokMi5zdHJpbmcpOwogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyQyLnN0
cmluZywgbmV3IFRUeXBlKCQxKX07CiAgICAgICAgICQkLnBhcmFtID0gcGFyYW07CiAgICAgfQog
ICAgIHwgdHlwZV9zcGVjaWZpZXIgaWRlbnRpZmllciBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhw
cmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsKICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gbWFr
ZSBhbiBhcnJheSBvdXQgb2YgdGhpcyB0eXBlCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5
cGVFcnJvckNoZWNrKEAzLCAkMSkpCi0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Cisg
ICAgICAgIGNvbnRleHQtPmNoZWNrSXNWYWxpZFR5cGVGb3JBcnJheShAMywgJDEpOworCisgICAg
ICAgIGNvbnRleHQtPmNoZWNrSXNOb3RSZXNlcnZlZChAMiwgKiQyLnN0cmluZyk7CiAKLSAgICAg
ICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjayhAMiwgKiQyLnN0cmluZykpCi0gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgIHVuc2lnbmVkIGludCBzaXplID0g
Y29udGV4dC0+Y2hlY2tJc1ZhbGlkQXJyYXlTaXplKEAzLCAkNCk7CiAKLSAgICAgICAgaW50IHNp
emU7Ci0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKEAzLCAkNCwgc2l6
ZSkpCi0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICQxLnNldEFycmF5
U2l6ZShzaXplKTsKIAogICAgICAgICBUVHlwZSogdHlwZSA9IG5ldyBUVHlwZSgkMSk7CkBAIC03
MjksNDcgKzcyOCwyMSBAQCBwYXJhbWV0ZXJfZGVjbGFyYXRpb24KICAgICAvLwogICAgIC8vIFR5
cGUgKyBuYW1lCiAgICAgLy8KLSAgICA6IHBhcmFtZXRlcl90eXBlX3F1YWxpZmllciBwYXJhbWV0
ZXJfcXVhbGlmaWVyIHBhcmFtZXRlcl9kZWNsYXJhdG9yIHsKLSAgICAgICAgJCQgPSAkMzsKLSAg
ICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjayhAMywgJDEsICQyLCAkJC5wYXJhbS50
eXBlKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICB9Ci0gICAgfCBwYXJh
bWV0ZXJfcXVhbGlmaWVyIHBhcmFtZXRlcl9kZWNsYXJhdG9yIHsKKyAgICA6IHR5cGVfcXVhbGlm
aWVyIHBhcmFtZXRlcl9kZWNsYXJhdG9yIHsKICAgICAgICAgJCQgPSAkMjsKLSAgICAgICAgaWYg
KGNvbnRleHQtPnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKEAyLCAkMSwgKiQyLnBhcmFtLnR5
cGUpKQotICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICBpZiAoY29udGV4
dC0+cGFyYW1FcnJvckNoZWNrKEAyLCBFdnFUZW1wb3JhcnksICQxLCAkJC5wYXJhbS50eXBlKSkK
LSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgY29udGV4dC0+Y2hlY2tJ
c1BhcmFtZXRlclF1YWxpZmllclZhbGlkKEAyLCAqJDEsICQyLnBhcmFtLnR5cGUpOwogICAgIH0K
LSAgICAvLwotICAgIC8vIE9ubHkgdHlwZQotICAgIC8vCi0gICAgfCBwYXJhbWV0ZXJfdHlwZV9x
dWFsaWZpZXIgcGFyYW1ldGVyX3F1YWxpZmllciBwYXJhbWV0ZXJfdHlwZV9zcGVjaWZpZXIgewot
ICAgICAgICAkJCA9ICQzOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKEAz
LCAkMSwgJDIsICQkLnBhcmFtLnR5cGUpKQotICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OworICAgIHwgcGFyYW1ldGVyX2RlY2xhcmF0b3IgeworICAgICAgICAkJCA9ICQxOworICAgICAg
ICAkJC5wYXJhbS50eXBlLT5zZXRRdWFsaWZpZXIoRXZxSW4pOwogICAgIH0KLSAgICB8IHBhcmFt
ZXRlcl9xdWFsaWZpZXIgcGFyYW1ldGVyX3R5cGVfc3BlY2lmaWVyIHsKKyAgICB8IHR5cGVfcXVh
bGlmaWVyIHBhcmFtZXRlcl90eXBlX3NwZWNpZmllciB7CiAgICAgICAgICQkID0gJDI7Ci0gICAg
ICAgIGlmIChjb250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjayhAMiwgJDEsICokMi5w
YXJhbS50eXBlKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgaWYg
KGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjayhAMiwgRXZxVGVtcG9yYXJ5LCAkMSwgJCQucGFyYW0u
dHlwZSkpCi0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgIGNvbnRleHQt
PmNoZWNrSXNQYXJhbWV0ZXJRdWFsaWZpZXJWYWxpZChAMiwgKiQxLCAkMi5wYXJhbS50eXBlKTsK
ICAgICB9Ci0gICAgOwotCi1wYXJhbWV0ZXJfcXVhbGlmaWVyCi0gICAgOiAvKiBlbXB0eSAqLyB7
Ci0gICAgICAgICQkID0gRXZxSW47Ci0gICAgfQotICAgIHwgSU5fUVVBTCB7Ci0gICAgICAgICQk
ID0gRXZxSW47Ci0gICAgfQotICAgIHwgT1VUX1FVQUwgewotICAgICAgICAkJCA9IEV2cU91dDsK
LSAgICB9Ci0gICAgfCBJTk9VVF9RVUFMIHsKLSAgICAgICAgJCQgPSBFdnFJbk91dDsKKyAgICB8
IHBhcmFtZXRlcl90eXBlX3NwZWNpZmllciB7CisgICAgICAgICQkID0gJDE7CisgICAgICAgICQk
LnBhcmFtLnR5cGUtPnNldFF1YWxpZmllcihFdnFJbik7CiAgICAgfQogICAgIDsKIApAQCAtNzkz
LDEyICs3NjYsMTIgQEAgaW5pdF9kZWNsYXJhdG9yX2xpc3QKICAgICAgICAgJCQuaW50ZXJtQWdn
cmVnYXRlID0gY29udGV4dC0+cGFyc2VBcnJheURlY2xhcmF0b3IoJCQudHlwZSwgJDEuaW50ZXJt
QWdncmVnYXRlLCBAMywgKiQzLnN0cmluZywgQDQsICQ1KTsKICAgICB9CiAgICAgfCBpbml0X2Rl
Y2xhcmF0b3JfbGlzdCBDT01NQSBpZGVudGlmaWVyIExFRlRfQlJBQ0tFVCBSSUdIVF9CUkFDS0VU
IEVRVUFMIGluaXRpYWxpemVyIHsKLSAgICAgICAgRVMzX09OTFkoIltdIiwgQDMsICJpbXBsaWNp
dGx5IHNpemVkIGFycmF5Iik7CisgICAgICAgIEVTM19PUl9ORVdFUigiW10iLCBAMywgImltcGxp
Y2l0bHkgc2l6ZWQgYXJyYXkiKTsKICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgJCQuaW50ZXJt
QWdncmVnYXRlID0gY29udGV4dC0+cGFyc2VBcnJheUluaXREZWNsYXJhdG9yKCQkLnR5cGUsICQx
LmludGVybUFnZ3JlZ2F0ZSwgQDMsICokMy5zdHJpbmcsIEA0LCBudWxscHRyLCBANiwgJDcpOwog
ICAgIH0KICAgICB8IGluaXRfZGVjbGFyYXRvcl9saXN0IENPTU1BIGlkZW50aWZpZXIgTEVGVF9C
UkFDS0VUIGNvbnN0YW50X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCBFUVVBTCBpbml0aWFsaXpl
ciB7Ci0gICAgICAgIEVTM19PTkxZKCI9IiwgQDcsICJmaXJzdC1jbGFzcyBhcnJheXMgKGFycmF5
IGluaXRpYWxpemVyKSIpOworICAgICAgICBFUzNfT1JfTkVXRVIoIj0iLCBANywgImZpcnN0LWNs
YXNzIGFycmF5cyAoYXJyYXkgaW5pdGlhbGl6ZXIpIik7CiAgICAgICAgICQkID0gJDE7CiAgICAg
ICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPnBhcnNlQXJyYXlJbml0RGVjbGFyYXRv
cigkJC50eXBlLCAkMS5pbnRlcm1BZ2dyZWdhdGUsIEAzLCAqJDMuc3RyaW5nLCBANCwgJDUsIEA3
LCAkOCk7CiAgICAgfQpAQCAtODIyLDEyICs3OTUsMTIgQEAgc2luZ2xlX2RlY2xhcmF0aW9uCiAg
ICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPnBhcnNlU2luZ2xlQXJyYXlEZWNs
YXJhdGlvbigkJC50eXBlLCBAMiwgKiQyLnN0cmluZywgQDMsICQ0KTsKICAgICB9CiAgICAgfCBm
dWxseV9zcGVjaWZpZWRfdHlwZSBpZGVudGlmaWVyIExFRlRfQlJBQ0tFVCBSSUdIVF9CUkFDS0VU
IEVRVUFMIGluaXRpYWxpemVyIHsKLSAgICAgICAgRVMzX09OTFkoIltdIiwgQDMsICJpbXBsaWNp
dGx5IHNpemVkIGFycmF5Iik7CisgICAgICAgIEVTM19PUl9ORVdFUigiW10iLCBAMywgImltcGxp
Y2l0bHkgc2l6ZWQgYXJyYXkiKTsKICAgICAgICAgJCQudHlwZSA9ICQxOwogICAgICAgICAkJC5p
bnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5wYXJzZVNpbmdsZUFycmF5SW5pdERlY2xhcmF0aW9u
KCQkLnR5cGUsIEAyLCAqJDIuc3RyaW5nLCBAMywgbnVsbHB0ciwgQDUsICQ2KTsKICAgICB9CiAg
ICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBpZGVudGlmaWVyIExFRlRfQlJBQ0tFVCBjb25zdGFu
dF9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgRVFVQUwgaW5pdGlhbGl6ZXIgewotICAgICAgICBF
UzNfT05MWSgiPSIsIEA2LCAiZmlyc3QtY2xhc3MgYXJyYXlzIChhcnJheSBpbml0aWFsaXplciki
KTsKKyAgICAgICAgRVMzX09SX05FV0VSKCI9IiwgQDYsICJmaXJzdC1jbGFzcyBhcnJheXMgKGFy
cmF5IGluaXRpYWxpemVyKSIpOwogICAgICAgICAkJC50eXBlID0gJDE7CiAgICAgICAgICQkLmlu
dGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPnBhcnNlU2luZ2xlQXJyYXlJbml0RGVjbGFyYXRpb24o
JCQudHlwZSwgQDIsICokMi5zdHJpbmcsIEAzLCAkNCwgQDYsICQ3KTsKICAgICB9CkBAIC04MzUs
MTAgKzgwOCw2IEBAIHNpbmdsZV9kZWNsYXJhdGlvbgogICAgICAgICAkJC50eXBlID0gJDE7CiAg
ICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPnBhcnNlU2luZ2xlSW5pdERlY2xh
cmF0aW9uKCQkLnR5cGUsIEAyLCAqJDIuc3RyaW5nLCBAMywgJDQpOwogICAgIH0KLSAgICB8IElO
VkFSSUFOVCBJREVOVElGSUVSIHsKLSAgICAgICAgLy8gJCQudHlwZSBpcyBub3QgdXNlZCBpbiBp
bnZhcmlhbnQgZGVjbGFyYXRpb25zLgotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250
ZXh0LT5wYXJzZUludmFyaWFudERlY2xhcmF0aW9uKEAxLCBAMiwgJDIuc3RyaW5nLCAkMi5zeW1i
b2wpOwotICAgIH0KICAgICA7CiAKIGZ1bGx5X3NwZWNpZmllZF90eXBlCkBAIC04NDYsMTMxICs4
MTUsMTQwIEBAIGZ1bGx5X3NwZWNpZmllZF90eXBlCiAgICAgICAgICQkID0gJDE7CiAKICAgICAg
ICAgaWYgKCQxLmFycmF5KSB7Ci0gICAgICAgICAgICBFUzNfT05MWSgiW10iLCBAMSwgImZpcnN0
LWNsYXNzLWFycmF5Iik7CisgICAgICAgICAgICBFUzNfT1JfTkVXRVIoIltdIiwgQDEsICJmaXJz
dC1jbGFzcy1hcnJheSIpOwogICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclZlcnNp
b24oKSAhPSAzMDApIHsKICAgICAgICAgICAgICAgICAkMS5jbGVhckFycmF5bmVzcygpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIHwgdHlwZV9xdWFsaWZpZXIgdHlwZV9z
cGVjaWZpZXIgIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRGdWxseVNwZWNpZmllZFR5cGUo
JDEucXVhbGlmaWVyLCAkMS5pbnZhcmlhbnQsICQxLmxheW91dFF1YWxpZmllciwgJDIpOworICAg
IHwgdHlwZV9xdWFsaWZpZXIgdHlwZV9zcGVjaWZpZXIgeworICAgICAgICAkJCA9IGNvbnRleHQt
PmFkZEZ1bGx5U3BlY2lmaWVkVHlwZSgqJDEsICQyKTsKICAgICB9CiAgICAgOwogCiBpbnRlcnBv
bGF0aW9uX3F1YWxpZmllcgogICAgIDogU01PT1RIIHsKLSAgICAgICAgJCQucXVhbGlmaWVyID0g
RXZxU21vb3RoOworICAgICAgICAkJCA9IEV2cVNtb290aDsKICAgICB9CiAgICAgfCBGTEFUIHsK
LSAgICAgICAgJCQucXVhbGlmaWVyID0gRXZxRmxhdDsKLSAgICB9Ci0gICAgOwotCi1wYXJhbWV0
ZXJfdHlwZV9xdWFsaWZpZXIKLSAgICA6IENPTlNUX1FVQUwgewotICAgICAgICAkJCA9IEV2cUNv
bnN0OworICAgICAgICAkJCA9IEV2cUZsYXQ7CiAgICAgfQogICAgIDsKIAogdHlwZV9xdWFsaWZp
ZXIKLSAgICA6IEFUVFJJQlVURSB7Ci0gICAgICAgIFZFUlRFWF9PTkxZKCJhdHRyaWJ1dGUiLCBA
MSk7Ci0gICAgICAgIEVTMl9PTkxZKCJhdHRyaWJ1dGUiLCBAMSk7Ci0gICAgICAgIGlmIChjb250
ZXh0LT5nbG9iYWxFcnJvckNoZWNrKEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExl
dmVsKCksICJhdHRyaWJ1dGUiKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAg
ICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxQXR0cmlidXRlLCBAMSk7CisgICAgOiBzaW5n
bGVfdHlwZV9xdWFsaWZpZXIgeworICAgICAgICAkJCA9IGNvbnRleHQtPmNyZWF0ZVR5cGVRdWFs
aWZpZXJCdWlsZGVyKEAxKTsKKyAgICAgICAgJCQtPmFwcGVuZFF1YWxpZmllcigkMSk7CiAgICAg
fQotICAgIHwgVkFSWUlORyB7Ci0gICAgICAgIEVTMl9PTkxZKCJ2YXJ5aW5nIiwgQDEpOwotICAg
ICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjayhAMSwgY29udGV4dC0+c3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpLCAidmFyeWluZyIpKQotICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwotICAgICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyVHlwZSgpID09IEdMX1ZFUlRF
WF9TSEFERVIpCi0gICAgICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5nT3V0
LCBAMSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2
cVZhcnlpbmdJbiwgQDEpOworICAgIHwgdHlwZV9xdWFsaWZpZXIgc2luZ2xlX3R5cGVfcXVhbGlm
aWVyIHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgJCQtPmFwcGVuZFF1YWxpZmllcigkMik7
CiAgICAgfQotICAgIHwgSU5WQVJJQU5UIFZBUllJTkcgewotICAgICAgICBFUzJfT05MWSgidmFy
eWluZyIsIEAxKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soQDEsIGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFyaWFudCB2YXJ5aW5nIikp
Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5n
ZXRTaGFkZXJUeXBlKCkgPT0gR0xfVkVSVEVYX1NIQURFUikKLSAgICAgICAgICAgICQkLnNldEJh
c2ljKEVidFZvaWQsIEV2cVZhcnlpbmdPdXQsIEAxKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFyeWluZ0luLCBAMSk7Ci0gICAgICAgICQkLmlu
dmFyaWFudCA9IHRydWU7CisgICAgOworCitpbnZhcmlhbnRfcXVhbGlmaWVyCisgICAgOiBJTlZB
UklBTlQgeworICAgICAgICAvLyBlbXB0eQogICAgIH0KLSAgICB8IHN0b3JhZ2VfcXVhbGlmaWVy
IHsKLSAgICAgICAgaWYgKCQxLnF1YWxpZmllciAhPSBFdnFDb25zdCAmJiAhY29udGV4dC0+c3lt
Ym9sVGFibGUuYXRHbG9iYWxMZXZlbCgpKQorICAgIDsKKworc2luZ2xlX3R5cGVfcXVhbGlmaWVy
CisgICAgOiBzdG9yYWdlX3F1YWxpZmllciB7CisgICAgICAgIGlmICghY29udGV4dC0+ZGVjbGFy
aW5nRnVuY3Rpb24oKSAmJiAkMSAhPSBFdnFDb25zdCAmJiAhY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcihA
MSwgIkxvY2FsIHZhcmlhYmxlcyBjYW4gb25seSB1c2UgdGhlIGNvbnN0IHN0b3JhZ2UgcXVhbGlm
aWVyLiIsIGdldFF1YWxpZmllclN0cmluZygkMS5xdWFsaWZpZXIpKTsKLSAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAiTG9jYWwg
dmFyaWFibGVzIGNhbiBvbmx5IHVzZSB0aGUgY29uc3Qgc3RvcmFnZSBxdWFsaWZpZXIuIiwgZ2V0
UXVhbGlmaWVyU3RyaW5nKCQxKSk7CiAgICAgICAgIH0KLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0
Vm9pZCwgJDEucXVhbGlmaWVyLCBAMSk7CisgICAgICAgICQkID0gbmV3IFRTdG9yYWdlUXVhbGlm
aWVyV3JhcHBlcigkMSwgQDEpOwogICAgIH0KLSAgICB8IGludGVycG9sYXRpb25fcXVhbGlmaWVy
IHN0b3JhZ2VfcXVhbGlmaWVyIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5qb2luSW50ZXJwb2xh
dGlvblF1YWxpZmllcnMoQDEsICQxLnF1YWxpZmllciwgQDIsICQyLnF1YWxpZmllcik7CisgICAg
fCBsYXlvdXRfcXVhbGlmaWVyIHsKKyAgICAgICAgY29udGV4dC0+Y2hlY2tJc0F0R2xvYmFsTGV2
ZWwoQDEsICJsYXlvdXQiKTsKKyAgICAgICAgJCQgPSBuZXcgVExheW91dFF1YWxpZmllcldyYXBw
ZXIoJDEsIEAxKTsKICAgICB9Ci0gICAgfCBpbnRlcnBvbGF0aW9uX3F1YWxpZmllciB7Ci0gICAg
ICAgIGNvbnRleHQtPmVycm9yKEAxLCAiaW50ZXJwb2xhdGlvbiBxdWFsaWZpZXIgcmVxdWlyZXMg
YSBmcmFnbWVudCAnaW4nIG9yIHZlcnRleCAnb3V0JyBzdG9yYWdlIHF1YWxpZmllciIsIGdldElu
dGVycG9sYXRpb25TdHJpbmcoJDEucXVhbGlmaWVyKSk7Ci0gICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKLSAgICAgICAgCi0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAg
ICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgcXVhbCwgQDEpOworICAgIHwgcHJlY2lzaW9uX3F1YWxp
ZmllciB7CisgICAgICAgICQkID0gbmV3IFRQcmVjaXNpb25RdWFsaWZpZXJXcmFwcGVyKCQxLCBA
MSk7CiAgICAgfQotICAgIHwgbGF5b3V0X3F1YWxpZmllciB7Ci0gICAgICAgICQkLnF1YWxpZmll
ciA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2
cVRlbXBvcmFyeTsKLSAgICAgICAgJCQubGF5b3V0UXVhbGlmaWVyID0gJDE7CisgICAgfCBpbnRl
cnBvbGF0aW9uX3F1YWxpZmllciB7CisgICAgICAgICQkID0gbmV3IFRJbnRlcnBvbGF0aW9uUXVh
bGlmaWVyV3JhcHBlcigkMSwgQDEpOwogICAgIH0KLSAgICB8IGxheW91dF9xdWFsaWZpZXIgc3Rv
cmFnZV9xdWFsaWZpZXIgewotICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCAkMi5xdWFsaWZp
ZXIsIEAyKTsKLSAgICAgICAgJCQubGF5b3V0UXVhbGlmaWVyID0gJDE7Ci0gICAgfQotICAgIHwg
SU5WQVJJQU5UIHN0b3JhZ2VfcXVhbGlmaWVyIHsKLSAgICAgICAgY29udGV4dC0+ZXMzSW52YXJp
YW50RXJyb3JDaGVjaygkMi5xdWFsaWZpZXIsIEAxKTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0
Vm9pZCwgJDIucXVhbGlmaWVyLCBAMik7Ci0gICAgICAgICQkLmludmFyaWFudCA9IHRydWU7Ci0g
ICAgfQotICAgIHwgSU5WQVJJQU5UIGludGVycG9sYXRpb25fcXVhbGlmaWVyIHN0b3JhZ2VfcXVh
bGlmaWVyIHsKLSAgICAgICAgY29udGV4dC0+ZXMzSW52YXJpYW50RXJyb3JDaGVjaygkMy5xdWFs
aWZpZXIsIEAxKTsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5qb2luSW50ZXJwb2xhdGlvblF1YWxp
ZmllcnMoQDIsICQyLnF1YWxpZmllciwgQDMsICQzLnF1YWxpZmllcik7Ci0gICAgICAgICQkLmlu
dmFyaWFudCA9IHRydWU7CisgICAgfCBpbnZhcmlhbnRfcXVhbGlmaWVyIHsKKyAgICAgICAgY29u
dGV4dC0+Y2hlY2tJc0F0R2xvYmFsTGV2ZWwoQDEsICJpbnZhcmlhbnQiKTsKKyAgICAgICAgJCQg
PSBuZXcgVEludmFyaWFudFF1YWxpZmllcldyYXBwZXIoQDEpOwogICAgIH0KICAgICA7CiAKKwog
c3RvcmFnZV9xdWFsaWZpZXIKLSAgICA6IENPTlNUX1FVQUwgewotICAgICAgICAkJC5xdWFsaWZp
ZXIgPSBFdnFDb25zdDsKKyAgICA6CisgICAgQVRUUklCVVRFIHsKKyAgICAgICAgVkVSVEVYX09O
TFkoImF0dHJpYnV0ZSIsIEAxKTsKKyAgICAgICAgRVMyX09OTFkoImF0dHJpYnV0ZSIsIEAxKTsK
KyAgICAgICAgY29udGV4dC0+Y2hlY2tJc0F0R2xvYmFsTGV2ZWwoQDEsICJhdHRyaWJ1dGUiKTsK
KyAgICAgICAgJCQgPSBFdnFBdHRyaWJ1dGU7CisgICAgfQorICAgIHwgVkFSWUlORyB7CisgICAg
ICAgIEVTMl9PTkxZKCJ2YXJ5aW5nIiwgQDEpOworICAgICAgICBjb250ZXh0LT5jaGVja0lzQXRH
bG9iYWxMZXZlbChAMSwgInZhcnlpbmciKTsKKyAgICAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRl
clR5cGUoKSA9PSBHTF9WRVJURVhfU0hBREVSKQorICAgICAgICAgICAgJCQgPSBFdnFWYXJ5aW5n
T3V0OworICAgICAgICBlbHNlCisgICAgICAgICAgICAkJCA9IEV2cVZhcnlpbmdJbjsKKyAgICB9
CisgICAgfCBDT05TVF9RVUFMIHsKKyAgICAgICAgJCQgPSBFdnFDb25zdDsKICAgICB9CiAgICAg
fCBJTl9RVUFMIHsKLSAgICAgICAgRVMzX09OTFkoImluIiwgQDEsICJzdG9yYWdlIHF1YWxpZmll
ciIpOwotICAgICAgICAkJC5xdWFsaWZpZXIgPSAoY29udGV4dC0+Z2V0U2hhZGVyVHlwZSgpID09
IEdMX0ZSQUdNRU5UX1NIQURFUikgPyBFdnFGcmFnbWVudEluIDogRXZxVmVydGV4SW47CisgICAg
ICAgIGlmIChjb250ZXh0LT5kZWNsYXJpbmdGdW5jdGlvbigpKQorICAgICAgICB7CisgICAgICAg
ICAgICAkJCA9IEV2cUluOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGNvbnRleHQtPmdl
dFNoYWRlclR5cGUoKSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEVTM19PUl9ORVdFUigiaW4iLCBAMSwgInN0b3JhZ2UgcXVhbGlmaWVyIik7CisgICAgICAg
ICAgICAkJCA9IEV2cUZyYWdtZW50SW47CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoY29u
dGV4dC0+Z2V0U2hhZGVyVHlwZSgpID09IEdMX1ZFUlRFWF9TSEFERVIpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEVTM19PUl9ORVdFUigiaW4iLCBAMSwgInN0b3JhZ2UgcXVhbGlmaWVyIik7Cisg
ICAgICAgICAgICAkJCA9IEV2cVZlcnRleEluOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAg
ICAgICAgeworICAgICAgICAgICAgJCQgPSBFdnFDb21wdXRlSW47CisgICAgICAgIH0KICAgICB9
CiAgICAgfCBPVVRfUVVBTCB7Ci0gICAgICAgIEVTM19PTkxZKCJvdXQiLCBAMSwgInN0b3JhZ2Ug
cXVhbGlmaWVyIik7Ci0gICAgICAgICQkLnF1YWxpZmllciA9IChjb250ZXh0LT5nZXRTaGFkZXJU
eXBlKCkgPT0gR0xfRlJBR01FTlRfU0hBREVSKSA/IEV2cUZyYWdtZW50T3V0IDogRXZxVmVydGV4
T3V0OwotICAgIH0KLSAgICB8IENFTlRST0lEIElOX1FVQUwgewotICAgICAgICBFUzNfT05MWSgi
Y2VudHJvaWQgaW4iLCBAMSwgInN0b3JhZ2UgcXVhbGlmaWVyIik7Ci0gICAgICAgIGlmIChjb250
ZXh0LT5nZXRTaGFkZXJUeXBlKCkgPT0gR0xfVkVSVEVYX1NIQURFUikKKyAgICAgICAgaWYgKGNv
bnRleHQtPmRlY2xhcmluZ0Z1bmN0aW9uKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKEAxLCAiaW52YWxpZCBzdG9yYWdlIHF1YWxpZmllciIsICJpdCBpcyBhbiBlcnJv
ciB0byB1c2UgJ2NlbnRyb2lkIGluJyBpbiB0aGUgdmVydGV4IHNoYWRlciIpOwotICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICAgICAgJCQgPSBFdnFPdXQ7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBFUzNfT1JfTkVXRVIoIm91
dCIsIEAxLCAic3RvcmFnZSBxdWFsaWZpZXIiKTsKKyAgICAgICAgICAgIE5PTl9DT01QVVRFX09O
TFkoIm91dCIsIEAxKTsKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXJUeXBlKCkg
PT0gR0xfRlJBR01FTlRfU0hBREVSKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICQk
ID0gRXZxRnJhZ21lbnRPdXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgJCQgPSBFdnFWZXJ0ZXhPdXQ7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KLSAgICAgICAgJCQucXVhbGlmaWVyID0gKGNvbnRleHQtPmdldFNoYWRl
clR5cGUoKSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpID8gRXZxQ2VudHJvaWRJbiA6IEV2cVZlcnRl
eEluOwogICAgIH0KLSAgICB8IENFTlRST0lEIE9VVF9RVUFMIHsKLSAgICAgICAgRVMzX09OTFko
ImNlbnRyb2lkIG91dCIsIEAxLCAic3RvcmFnZSBxdWFsaWZpZXIiKTsKLSAgICAgICAgaWYgKGNv
bnRleHQtPmdldFNoYWRlclR5cGUoKSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpCisgICAgfCBJTk9V
VF9RVUFMIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5kZWNsYXJpbmdGdW5jdGlvbigpKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgImludmFsaWQgc3RvcmFnZSBx
dWFsaWZpZXIiLCAiaXQgaXMgYW4gZXJyb3IgdG8gdXNlICdjZW50cm9pZCBvdXQnIGluIHRoZSBm
cmFnbWVudCBzaGFkZXIiKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAiaW52YWxpZCBpbm91dCBxdWFsaWZpZXIiLCAiJ2lu
b3V0JyBjYW4gYmUgb25seSB1c2VkIHdpdGggZnVuY3Rpb24gcGFyYW1ldGVycyIpOwogICAgICAg
ICB9Ci0gICAgICAgICQkLnF1YWxpZmllciA9IChjb250ZXh0LT5nZXRTaGFkZXJUeXBlKCkgPT0g
R0xfRlJBR01FTlRfU0hBREVSKSA/IEV2cUZyYWdtZW50T3V0IDogRXZxQ2VudHJvaWRPdXQ7Cisg
ICAgICAgICQkID0gRXZxSW5PdXQ7CisgICAgfQorICAgIHwgQ0VOVFJPSUQgeworICAgICAgICBF
UzNfT1JfTkVXRVIoImNlbnRyb2lkIiwgQDEsICJzdG9yYWdlIHF1YWxpZmllciIpOworICAgICAg
ICAkJCA9IEV2cUNlbnRyb2lkOwogICAgIH0KICAgICB8IFVOSUZPUk0gewotICAgICAgICBpZiAo
Y29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjayhAMSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpLCAidW5pZm9ybSIpKQotICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwot
ICAgICAgICAkJC5xdWFsaWZpZXIgPSBFdnFVbmlmb3JtOworICAgICAgICBjb250ZXh0LT5jaGVj
a0lzQXRHbG9iYWxMZXZlbChAMSwgInVuaWZvcm0iKTsKKyAgICAgICAgJCQgPSBFdnFVbmlmb3Jt
OwogICAgIH0KICAgICA7CiAKQEAgLTk3OSwxOSArOTU3LDcgQEAgdHlwZV9zcGVjaWZpZXIKICAg
ICAgICAgJCQgPSAkMTsKIAogICAgICAgICBpZiAoJCQucHJlY2lzaW9uID09IEVicFVuZGVmaW5l
ZCkgewotICAgICAgICAgICAgJCQucHJlY2lzaW9uID0gY29udGV4dC0+c3ltYm9sVGFibGUuZ2V0
RGVmYXVsdFByZWNpc2lvbigkMS50eXBlKTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5wcmVj
aXNpb25FcnJvckNoZWNrKEAxLCAkJC5wcmVjaXNpb24sICQxLnR5cGUpKSB7Ci0gICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
fQotICAgIHwgcHJlY2lzaW9uX3F1YWxpZmllciB0eXBlX3NwZWNpZmllcl9ub19wcmVjIHsKLSAg
ICAgICAgJCQgPSAkMjsKLSAgICAgICAgJCQucHJlY2lzaW9uID0gJDE7Ci0KLSAgICAgICAgaWYg
KCFTdXBwb3J0c1ByZWNpc2lvbigkMi50eXBlKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoQDEsICJpbGxlZ2FsIHR5cGUgZm9yIHByZWNpc2lvbiBxdWFsaWZpZXIiLCBnZXRCYXNpY1N0
cmluZygkMi50eXBlKSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAg
ICAgICAkJC5wcmVjaXNpb24gPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5nZXREZWZhdWx0UHJlY2lz
aW9uKCQxLmdldEJhc2ljVHlwZSgpKTsKICAgICAgICAgfQogICAgIH0KICAgICA7CkBAIC0xMDEw
LDcgKzk3Niw3IEBAIHByZWNpc2lvbl9xdWFsaWZpZXIKIAogbGF5b3V0X3F1YWxpZmllcgogICAg
IDogTEFZT1VUIExFRlRfUEFSRU4gbGF5b3V0X3F1YWxpZmllcl9pZF9saXN0IFJJR0hUX1BBUkVO
IHsKLSAgICAgICAgRVMzX09OTFkoImxheW91dCIsIEAxLCAicXVhbGlmaWVyIik7CisgICAgICAg
IEVTM19PUl9ORVdFUigibGF5b3V0IiwgQDEsICJxdWFsaWZpZXIiKTsKICAgICAgICAgJCQgPSAk
MzsKICAgICB9CiAgICAgOwpAQCAtMTAyMCw3ICs5ODYsNyBAQCBsYXlvdXRfcXVhbGlmaWVyX2lk
X2xpc3QKICAgICAgICAgJCQgPSAkMTsKICAgICB9CiAgICAgfCBsYXlvdXRfcXVhbGlmaWVyX2lk
X2xpc3QgQ09NTUEgbGF5b3V0X3F1YWxpZmllcl9pZCB7Ci0gICAgICAgICQkID0gY29udGV4dC0+
am9pbkxheW91dFF1YWxpZmllcnMoJDEsICQzKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5qb2lu
TGF5b3V0UXVhbGlmaWVycygkMSwgJDMsIEAzKTsKICAgICB9CiAgICAgOwogCkBAIC0xMDI5LDMx
ICs5OTUsMjcgQEAgbGF5b3V0X3F1YWxpZmllcl9pZAogICAgICAgICAkJCA9IGNvbnRleHQtPnBh
cnNlTGF5b3V0UXVhbGlmaWVyKCokMS5zdHJpbmcsIEAxKTsKICAgICB9CiAgICAgfCBJREVOVElG
SUVSIEVRVUFMIElOVENPTlNUQU5UIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5wYXJzZUxheW91
dFF1YWxpZmllcigqJDEuc3RyaW5nLCBAMSwgKiQzLnN0cmluZywgJDMuaSwgQDMpOworICAgICAg
ICAkJCA9IGNvbnRleHQtPnBhcnNlTGF5b3V0UXVhbGlmaWVyKCokMS5zdHJpbmcsIEAxLCAkMy5p
LCBAMyk7CiAgICAgfQogICAgIHwgSURFTlRJRklFUiBFUVVBTCBVSU5UQ09OU1RBTlQgewotICAg
ICAgICAkJCA9IGNvbnRleHQtPnBhcnNlTGF5b3V0UXVhbGlmaWVyKCokMS5zdHJpbmcsIEAxLCAq
JDMuc3RyaW5nLCAkMy5pLCBAMyk7CisgICAgICAgICQkID0gY29udGV4dC0+cGFyc2VMYXlvdXRR
dWFsaWZpZXIoKiQxLnN0cmluZywgQDEsICQzLmksIEAzKTsKICAgICB9CiAgICAgOwogCiB0eXBl
X3NwZWNpZmllcl9ub19wcmVjCiAgICAgOiB0eXBlX3NwZWNpZmllcl9ub25hcnJheSB7Ci0gICAg
ICAgICQkID0gJDE7CisgICAgICAgICQkLmluaXRpYWxpemUoJDEsIChjb250ZXh0LT5zeW1ib2xU
YWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3JhcnkpKTsKICAgICB9
CiAgICAgfCB0eXBlX3NwZWNpZmllcl9ub25hcnJheSBMRUZUX0JSQUNLRVQgUklHSFRfQlJBQ0tF
VCB7Ci0gICAgICAgIEVTM19PTkxZKCJbXSIsIEAyLCAiaW1wbGljaXRseSBzaXplZCBhcnJheSIp
OwotICAgICAgICAkJCA9ICQxOworICAgICAgICBFUzNfT1JfTkVXRVIoIltdIiwgQDIsICJpbXBs
aWNpdGx5IHNpemVkIGFycmF5Iik7CisgICAgICAgICQkLmluaXRpYWxpemUoJDEsIChjb250ZXh0
LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnkp
KTsKICAgICAgICAgJCQuc2V0QXJyYXlTaXplKDApOwogICAgIH0KICAgICB8IHR5cGVfc3BlY2lm
aWVyX25vbmFycmF5IExFRlRfQlJBQ0tFVCBjb25zdGFudF9leHByZXNzaW9uIFJJR0hUX0JSQUNL
RVQgewotICAgICAgICAkJCA9ICQxOwotCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVF
cnJvckNoZWNrKEAyLCAkMSkpCi0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgaW50IHNpemU7Ci0gICAgICAgICAgICBpZiAoY29udGV4
dC0+YXJyYXlTaXplRXJyb3JDaGVjayhAMiwgJDMsIHNpemUpKQotICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgJCQuaW5pdGlhbGl6ZSgkMSwgKGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeSkpOwor
ICAgICAgICBpZiAoY29udGV4dC0+Y2hlY2tJc1ZhbGlkVHlwZUZvckFycmF5KEAyLCAkJCkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBzaXplID0gY29udGV4dC0+Y2hlY2tJ
c1ZhbGlkQXJyYXlTaXplKEAyLCAkMyk7CiAgICAgICAgICAgICAkJC5zZXRBcnJheVNpemUoc2l6
ZSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDYxLDIwOSArMTAyMywxNjQgQEAgdHlwZV9zcGVj
aWZpZXJfbm9fcHJlYwogCiB0eXBlX3NwZWNpZmllcl9ub25hcnJheQogICAgIDogVk9JRF9UWVBF
IHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNp
YyhFYnRWb2lkLCBxdWFsLCBAMSk7CisgICAgICAgICQkLmluaXRpYWxpemUoRWJ0Vm9pZCwgQDEp
OwogICAgIH0KICAgICB8IEZMT0FUX1RZUEUgewotICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBj
b250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1w
b3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCBAMSk7CisgICAgICAg
ICQkLmluaXRpYWxpemUoRWJ0RmxvYXQsIEAxKTsKICAgICB9CiAgICAgfCBJTlRfVFlQRSB7Ci0g
ICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2
ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0
SW50LCBxdWFsLCBAMSk7CisgICAgICAgICQkLmluaXRpYWxpemUoRWJ0SW50LCBAMSk7CiAgICAg
fQogICAgIHwgVUlOVF9UWVBFIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+
c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5Owot
ICAgICAgICAkJC5zZXRCYXNpYyhFYnRVSW50LCBxdWFsLCBAMSk7CisgICAgICAgICQkLmluaXRp
YWxpemUoRWJ0VUludCwgQDEpOwogICAgIH0KICAgICB8IEJPT0xfVFlQRSB7Ci0gICAgICAgIFRR
dWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2
cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVh
bCwgQDEpOworICAgICAgICAkJC5pbml0aWFsaXplKEVidEJvb2wsIEAxKTsKICAgICB9CiAgICAg
fCBWRUMyIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5z
ZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOworICAgICAgICAkJC5pbml0aWFsaXplKEVidEZs
b2F0LCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgyKTsKICAgICB9CiAgICAgfCBWRUMz
IHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNp
YyhFYnRGbG9hdCwgcXVhbCwgQDEpOworICAgICAgICAkJC5pbml0aWFsaXplKEVidEZsb2F0LCBA
MSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgzKTsKICAgICB9CiAgICAgfCBWRUM0IHsKLSAg
ICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZl
bCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRG
bG9hdCwgcXVhbCwgQDEpOworICAgICAgICAkJC5pbml0aWFsaXplKEVidEZsb2F0LCBAMSk7CiAg
ICAgICAgICQkLnNldEFnZ3JlZ2F0ZSg0KTsKICAgICB9CiAgICAgfCBCVkVDMiB7Ci0gICAgICAg
IFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/
IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Qm9vbCwg
cXVhbCwgQDEpOworICAgICAgICAkJC5pbml0aWFsaXplKEVidEJvb2wsIEAxKTsKICAgICAgICAg
JCQuc2V0QWdncmVnYXRlKDIpOwogICAgIH0KICAgICB8IEJWRUMzIHsKLSAgICAgICAgVFF1YWxp
ZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCBA
MSk7CisgICAgICAgICQkLmluaXRpYWxpemUoRWJ0Qm9vbCwgQDEpOwogICAgICAgICAkJC5zZXRB
Z2dyZWdhdGUoMyk7CiAgICAgfQogICAgIHwgQlZFQzQgewotICAgICAgICBUUXVhbGlmaWVyIHF1
YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBF
dnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsIEAxKTsKKyAg
ICAgICAgJCQuaW5pdGlhbGl6ZShFYnRCb29sLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0
ZSg0KTsKICAgICB9CiAgICAgfCBJVkVDMiB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBv
cmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCBAMSk7CisgICAgICAgICQk
LmluaXRpYWxpemUoRWJ0SW50LCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgyKTsKICAg
ICB9CiAgICAgfCBJVkVDMyB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAg
ICAgICAgJCQuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCBAMSk7CisgICAgICAgICQkLmluaXRpYWxp
emUoRWJ0SW50LCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgzKTsKICAgICB9CiAgICAg
fCBJVkVDNCB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQu
c2V0QmFzaWMoRWJ0SW50LCBxdWFsLCBAMSk7CisgICAgICAgICQkLmluaXRpYWxpemUoRWJ0SW50
LCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSg0KTsKICAgICB9CiAgICAgfCBVVkVDMiB7
Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFs
TGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMo
RWJ0VUludCwgcXVhbCwgQDEpOworICAgICAgICAkJC5pbml0aWFsaXplKEVidFVJbnQsIEAxKTsK
ICAgICAgICAgJCQuc2V0QWdncmVnYXRlKDIpOwogICAgIH0KICAgICB8IFVWRUMzIHsKLSAgICAg
ICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgp
ID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRVSW50
LCBxdWFsLCBAMSk7CisgICAgICAgICQkLmluaXRpYWxpemUoRWJ0VUludCwgQDEpOwogICAgICAg
ICAkJC5zZXRBZ2dyZWdhdGUoMyk7CiAgICAgfQogICAgIHwgVVZFQzQgewotICAgICAgICBUUXVh
bGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFH
bG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFVJbnQsIHF1YWws
IEAxKTsKKyAgICAgICAgJCQuaW5pdGlhbGl6ZShFYnRVSW50LCBAMSk7CiAgICAgICAgICQkLnNl
dEFnZ3JlZ2F0ZSg0KTsKICAgICB9CiAgICAgfCBNQVRSSVgyIHsKLSAgICAgICAgVFF1YWxpZmll
ciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFs
IDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEp
OworICAgICAgICAkJC5pbml0aWFsaXplKEVidEZsb2F0LCBAMSk7CiAgICAgICAgICQkLnNldE1h
dHJpeCgyLCAyKTsKICAgICB9CiAgICAgfCBNQVRSSVgzIHsKLSAgICAgICAgVFF1YWxpZmllciBx
dWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDog
RXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwor
ICAgICAgICAkJC5pbml0aWFsaXplKEVidEZsb2F0LCBAMSk7CiAgICAgICAgICQkLnNldE1hdHJp
eCgzLCAzKTsKICAgICB9CiAgICAgfCBNQVRSSVg0IHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFs
ID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZx
VGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOworICAg
ICAgICAkJC5pbml0aWFsaXplKEVidEZsb2F0LCBAMSk7CiAgICAgICAgICQkLnNldE1hdHJpeCg0
LCA0KTsKICAgICB9CiAgICAgfCBNQVRSSVgyeDMgewotICAgICAgICBUUXVhbGlmaWVyIHF1YWwg
PSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFU
ZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCBAMSk7CisgICAg
ICAgICQkLmluaXRpYWxpemUoRWJ0RmxvYXQsIEAxKTsKICAgICAgICAgJCQuc2V0TWF0cml4KDIs
IDMpOwogICAgIH0KICAgICB8IE1BVFJJWDN4MiB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9
IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRl
bXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsIEAxKTsKKyAgICAg
ICAgJCQuaW5pdGlhbGl6ZShFYnRGbG9hdCwgQDEpOwogICAgICAgICAkJC5zZXRNYXRyaXgoMywg
Mik7CiAgICAgfQogICAgIHwgTUFUUklYMng0IHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0g
Y29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVt
cG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOworICAgICAg
ICAkJC5pbml0aWFsaXplKEVidEZsb2F0LCBAMSk7CiAgICAgICAgICQkLnNldE1hdHJpeCgyLCA0
KTsKICAgICB9CiAgICAgfCBNQVRSSVg0eDIgewotICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBj
b250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1w
b3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCBAMSk7CisgICAgICAg
ICQkLmluaXRpYWxpemUoRWJ0RmxvYXQsIEAxKTsKICAgICAgICAgJCQuc2V0TWF0cml4KDQsIDIp
OwogICAgIH0KICAgICB8IE1BVFJJWDN4NCB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBv
cmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsIEAxKTsKKyAgICAgICAg
JCQuaW5pdGlhbGl6ZShFYnRGbG9hdCwgQDEpOwogICAgICAgICAkJC5zZXRNYXRyaXgoMywgNCk7
CiAgICAgfQogICAgIHwgTUFUUklYNHgzIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29u
dGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9y
YXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOworICAgICAgICAk
JC5pbml0aWFsaXplKEVidEZsb2F0LCBAMSk7CiAgICAgICAgICQkLnNldE1hdHJpeCg0LCAzKTsK
ICAgICB9CiAgICAgfCBTQU1QTEVSMkQgewotICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250
ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jh
cnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXIyRCwgcXVhbCwgQDEpOworICAgICAg
ICAkJC5pbml0aWFsaXplKEVidFNhbXBsZXIyRCwgQDEpOwogICAgIH0KICAgICB8IFNBTVBMRVIz
RCB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xv
YmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFz
aWMoRWJ0U2FtcGxlcjNELCBxdWFsLCBAMSk7CisgICAgICAgICQkLmluaXRpYWxpemUoRWJ0U2Ft
cGxlcjNELCBAMSk7CiAgICAgfQogICAgIHwgU0FNUExFUkNVQkUgewotICAgICAgICBUUXVhbGlm
aWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9i
YWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXJDdWJlLCBx
dWFsLCBAMSk7CisgICAgICAgICQkLmluaXRpYWxpemUoRWJ0U2FtcGxlckN1YmUsIEAxKTsKICAg
ICB9CiAgICAgfCBTQU1QTEVSMkRBUlJBWSB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBv
cmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U2FtcGxlcjJEQXJyYXksIHF1YWwsIEAxKTsK
KyAgICAgICAgJCQuaW5pdGlhbGl6ZShFYnRTYW1wbGVyMkRBcnJheSwgQDEpOwogICAgIH0KICAg
ICB8IElTQU1QTEVSMkQgewotICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1i
b2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAg
ICAgICQkLnNldEJhc2ljKEVidElTYW1wbGVyMkQsIHF1YWwsIEAxKTsKKyAgICAgICAgJCQuaW5p
dGlhbGl6ZShFYnRJU2FtcGxlcjJELCBAMSk7CiAgICAgfQogICAgIHwgSVNBTVBMRVIzRCB7Ci0g
ICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2
ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0
SVNhbXBsZXIzRCwgcXVhbCwgQDEpOworICAgICAgICAkJC5pbml0aWFsaXplKEVidElTYW1wbGVy
M0QsIEAxKTsKICAgICB9CiAgICAgfCBJU0FNUExFUkNVQkUgewotICAgICAgICBUUXVhbGlmaWVy
IHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwg
OiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidElTYW1wbGVyQ3ViZSwgcXVh
bCwgQDEpOworICAgICAgICAkJC5pbml0aWFsaXplKEVidElTYW1wbGVyQ3ViZSwgQDEpOwogICAg
IH0KICAgICB8IElTQU1QTEVSMkRBUlJBWSB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBv
cmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0SVNhbXBsZXIyREFycmF5LCBxdWFsLCBAMSk7
CisgICAgICAgICQkLmluaXRpYWxpemUoRWJ0SVNhbXBsZXIyREFycmF5LCBAMSk7CiAgICAgfQog
ICAgIHwgVVNBTVBMRVIyRCB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAg
ICAgICAgJCQuc2V0QmFzaWMoRWJ0VVNhbXBsZXIyRCwgcXVhbCwgQDEpOworICAgICAgICAkJC5p
bml0aWFsaXplKEVidFVTYW1wbGVyMkQsIEAxKTsKICAgICB9CiAgICAgfCBVU0FNUExFUjNEIHsK
LSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxM
ZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhF
YnRVU2FtcGxlcjNELCBxdWFsLCBAMSk7CisgICAgICAgICQkLmluaXRpYWxpemUoRWJ0VVNhbXBs
ZXIzRCwgQDEpOwogICAgIH0KICAgICB8IFVTQU1QTEVSQ1VCRSB7Ci0gICAgICAgIFRRdWFsaWZp
ZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2Jh
bCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0VVNhbXBsZXJDdWJlLCBx
dWFsLCBAMSk7CisgICAgICAgICQkLmluaXRpYWxpemUoRWJ0VVNhbXBsZXJDdWJlLCBAMSk7CiAg
ICAgfQogICAgIHwgVVNBTVBMRVIyREFSUkFZIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0g
Y29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVt
cG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRVU2FtcGxlcjJEQXJyYXksIHF1YWwsIEAx
KTsKKyAgICAgICAgJCQuaW5pdGlhbGl6ZShFYnRVU2FtcGxlcjJEQXJyYXksIEAxKTsKICAgICB9
CiAgICAgfCBTQU1QTEVSMkRTSEFET1cgewotICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250
ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jh
cnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXIyRFNoYWRvdywgcXVhbCwgQDEpOwor
ICAgICAgICAkJC5pbml0aWFsaXplKEVidFNhbXBsZXIyRFNoYWRvdywgQDEpOwogICAgIH0KICAg
ICB8IFNBTVBMRVJDVUJFU0hBRE9XIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4
dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5
OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRTYW1wbGVyQ3ViZVNoYWRvdywgcXVhbCwgQDEpOwor
ICAgICAgICAkJC5pbml0aWFsaXplKEVidFNhbXBsZXJDdWJlU2hhZG93LCBAMSk7CiAgICAgfQog
ICAgIHwgU0FNUExFUjJEQVJSQVlTSEFET1cgewotICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBj
b250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1w
b3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXIyREFycmF5U2hhZG93LCBxdWFs
LCBAMSk7CisgICAgICAgICQkLmluaXRpYWxpemUoRWJ0U2FtcGxlcjJEQXJyYXlTaGFkb3csIEAx
KTsKICAgICB9CiAgICAgfCBTQU1QTEVSX0VYVEVSTkFMX09FUyB7Ci0gICAgICAgIGlmICghY29u
dGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSkgewor
ICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfRUdMX2ltYWdl
X2V4dGVybmFsIikgJiYKKyAgICAgICAgICAgICFjb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigi
R0xfTlZfRUdMX3N0cmVhbV9jb25zdW1lcl9leHRlcm5hbCIpKSB7CiAgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcihAMSwgInVuc3VwcG9ydGVkIHR5cGUiLCAic2FtcGxlckV4dGVybmFsT0VTIik7
Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgVFF1
YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZx
R2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRTYW1wbGVyRXh0
ZXJuYWxPRVMsIHF1YWwsIEAxKTsKKyAgICAgICAgJCQuaW5pdGlhbGl6ZShFYnRTYW1wbGVyRXh0
ZXJuYWxPRVMsIEAxKTsKICAgICB9CiAgICAgfCBTQU1QTEVSMkRSRUNUIHsKICAgICAgICAgaWYg
KCFjb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQVJCX3RleHR1cmVfcmVjdGFuZ2xlIikp
IHsKICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJz
YW1wbGVyMkRSZWN0Iik7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
IH0KLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNp
YyhFYnRTYW1wbGVyMkRSZWN0LCBxdWFsLCBAMSk7CisgICAgICAgICQkLmluaXRpYWxpemUoRWJ0
U2FtcGxlcjJEUmVjdCwgQDEpOwogICAgIH0KICAgICB8IHN0cnVjdF9zcGVjaWZpZXIgewogICAg
ICAgICAkJCA9ICQxOwotICAgICAgICAkJC5xdWFsaWZpZXIgPSBjb250ZXh0LT5zeW1ib2xUYWJs
ZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAgfQogICAg
IHwgVFlQRV9OQU1FIHsKICAgICAgICAgLy8KQEAgLTEyNzEsMTcgKzExODgsMTYgQEAgdHlwZV9z
cGVjaWZpZXJfbm9uYXJyYXkKICAgICAgICAgLy8gdHlwZS4KICAgICAgICAgLy8KICAgICAgICAg
VFR5cGUmIHN0cnVjdHVyZSA9IHN0YXRpY19jYXN0PFRWYXJpYWJsZSo+KCQxLnN5bWJvbCktPmdl
dFR5cGUoKTsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5z
ZXRCYXNpYyhFYnRTdHJ1Y3QsIHF1YWwsIEAxKTsKKyAgICAgICAgJCQuaW5pdGlhbGl6ZShFYnRT
dHJ1Y3QsIEAxKTsKICAgICAgICAgJCQudXNlckRlZiA9ICZzdHJ1Y3R1cmU7CiAgICAgfQogICAg
IDsKIAogc3RydWN0X3NwZWNpZmllcgotICAgIDogU1RSVUNUIGlkZW50aWZpZXIgTEVGVF9CUkFD
RSB7IGlmIChjb250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKEAyLCAqJDIuc3RyaW5nKSkg
Y29udGV4dC0+cmVjb3ZlcigpOyB9IHN0cnVjdF9kZWNsYXJhdGlvbl9saXN0IFJJR0hUX0JSQUNF
IHsKKyAgICA6IFNUUlVDVCBpZGVudGlmaWVyIExFRlRfQlJBQ0UgeyBjb250ZXh0LT5lbnRlclN0
cnVjdERlY2xhcmF0aW9uKEAyLCAqJDIuc3RyaW5nKTsgfSBzdHJ1Y3RfZGVjbGFyYXRpb25fbGlz
dCBSSUdIVF9CUkFDRSB7CiAgICAgICAgICQkID0gY29udGV4dC0+YWRkU3RydWN0dXJlKEAxLCBA
MiwgJDIuc3RyaW5nLCAkNSk7CiAgICAgfQotICAgIHwgU1RSVUNUIExFRlRfQlJBQ0UgeyBpZiAo
Y29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbihAMiwgKiQyLnN0cmluZykpIGNvbnRleHQt
PnJlY292ZXIoKTsgfSBzdHJ1Y3RfZGVjbGFyYXRpb25fbGlzdCBSSUdIVF9CUkFDRSB7CisgICAg
fCBTVFJVQ1QgTEVGVF9CUkFDRSB7IGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oQDIs
ICokMi5zdHJpbmcpOyB9IHN0cnVjdF9kZWNsYXJhdGlvbl9saXN0IFJJR0hUX0JSQUNFIHsKICAg
ICAgICAgJCQgPSBjb250ZXh0LT5hZGRTdHJ1Y3R1cmUoQDEsIEAkLCBOZXdQb29sVFN0cmluZygi
IiksICQ0KTsKICAgICB9CiAgICAgOwpAQCAtMTI5Nyw3ICsxMjEzLDYgQEAgc3RydWN0X2RlY2xh
cmF0aW9uX2xpc3QKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgJCQtPnNpemUo
KTsgKytqKSB7CiAgICAgICAgICAgICAgICAgaWYgKCgqJCQpW2pdLT5uYW1lKCkgPT0gZmllbGQt
Pm5hbWUoKSkgewogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgImR1cGxp
Y2F0ZSBmaWVsZCBuYW1lIGluIHN0cnVjdHVyZToiLCAic3RydWN0IiwgZmllbGQtPm5hbWUoKS5j
X3N0cigpKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgICQkLT5wdXNoX2JhY2soZmll
bGQpOwpAQCAtMTMxMSw5ICsxMjI2LDcgQEAgc3RydWN0X2RlY2xhcmF0aW9uCiAgICAgfQogICAg
IHwgdHlwZV9xdWFsaWZpZXIgdHlwZV9zcGVjaWZpZXIgc3RydWN0X2RlY2xhcmF0b3JfbGlzdCBT
RU1JQ09MT04gewogICAgICAgICAvLyBFUzMgT25seSwgYnV0IGVycm9ycyBzaG91bGQgYmUgaGFu
ZGxlZCBlbHNld2hlcmUKLSAgICAgICAgJDIucXVhbGlmaWVyID0gJDEucXVhbGlmaWVyOwotICAg
ICAgICAkMi5sYXlvdXRRdWFsaWZpZXIgPSAkMS5sYXlvdXRRdWFsaWZpZXI7Ci0gICAgICAgICQk
ID0gY29udGV4dC0+YWRkU3RydWN0RGVjbGFyYXRvckxpc3QoJDIsICQzKTsKKyAgICAgICAgJCQg
PSBjb250ZXh0LT5hZGRTdHJ1Y3REZWNsYXJhdG9yTGlzdFdpdGhRdWFsaWZpZXJzKCokMSwgJiQy
LCAkMyk7CiAgICAgfQogICAgIDsKIApAQCAtMTMyOSwyMCArMTI0MiwxNiBAQCBzdHJ1Y3RfZGVj
bGFyYXRvcl9saXN0CiAKIHN0cnVjdF9kZWNsYXJhdG9yCiAgICAgOiBpZGVudGlmaWVyIHsKLSAg
ICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjayhAMSwgKiQxLnN0cmluZykpCi0g
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgIGNvbnRleHQtPmNoZWNrSXNO
b3RSZXNlcnZlZChAMSwgKiQxLnN0cmluZyk7CiAKICAgICAgICAgVFR5cGUqIHR5cGUgPSBuZXcg
VFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKICAgICAgICAgJCQgPSBuZXcgVEZpZWxkKHR5
cGUsICQxLnN0cmluZywgQDEpOwogICAgIH0KICAgICB8IGlkZW50aWZpZXIgTEVGVF9CUkFDS0VU
IGNvbnN0YW50X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7Ci0gICAgICAgIGlmIChjb250ZXh0
LT5yZXNlcnZlZEVycm9yQ2hlY2soQDEsICokMS5zdHJpbmcpKQotICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOworICAgICAgICBjb250ZXh0LT5jaGVja0lzTm90UmVzZXJ2ZWQoQDEsICok
MS5zdHJpbmcpOwogCiAgICAgICAgIFRUeXBlKiB0eXBlID0gbmV3IFRUeXBlKEVidFZvaWQsIEVi
cFVuZGVmaW5lZCk7Ci0gICAgICAgIGludCBzaXplOwotICAgICAgICBpZiAoY29udGV4dC0+YXJy
YXlTaXplRXJyb3JDaGVjayhAMywgJDMsIHNpemUpKQotICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOworICAgICAgICB1bnNpZ25lZCBpbnQgc2l6ZSA9IGNvbnRleHQtPmNoZWNrSXNWYWxp
ZEFycmF5U2l6ZShAMywgJDMpOwogICAgICAgICB0eXBlLT5zZXRBcnJheVNpemUoc2l6ZSk7CiAK
ICAgICAgICAgJCQgPSBuZXcgVEZpZWxkKHR5cGUsICQxLnN0cmluZywgQDEpOwpAQCAtMTM3OCw3
ICsxMjg3LDYgQEAgY29tcG91bmRfc3RhdGVtZW50CiAgICAgOiBMRUZUX0JSQUNFIFJJR0hUX0JS
QUNFIHsgJCQgPSAwOyB9CiAgICAgfCBMRUZUX0JSQUNFIHsgY29udGV4dC0+c3ltYm9sVGFibGUu
cHVzaCgpOyB9IHN0YXRlbWVudF9saXN0IHsgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7IH0g
UklHSFRfQlJBQ0UgewogICAgICAgICBpZiAoJDMgIT0gMCkgewotICAgICAgICAgICAgJDMtPnNl
dE9wKEVPcFNlcXVlbmNlKTsKICAgICAgICAgICAgICQzLT5zZXRMaW5lKEAkKTsKICAgICAgICAg
fQogICAgICAgICAkJCA9ICQzOwpAQCAtMTQwMiw3ICsxMzEwLDYgQEAgY29tcG91bmRfc3RhdGVt
ZW50X25vX25ld19zY29wZQogICAgIH0KICAgICB8IExFRlRfQlJBQ0Ugc3RhdGVtZW50X2xpc3Qg
UklHSFRfQlJBQ0UgewogICAgICAgICBpZiAoJDIpIHsKLSAgICAgICAgICAgICQyLT5zZXRPcChF
T3BTZXF1ZW5jZSk7CiAgICAgICAgICAgICAkMi0+c2V0TGluZShAJCk7CiAgICAgICAgIH0KICAg
ICAgICAgJCQgPSAkMjsKQEAgLTE0MTEsMTAgKzEzMTgsMTMgQEAgY29tcG91bmRfc3RhdGVtZW50
X25vX25ld19zY29wZQogCiBzdGF0ZW1lbnRfbGlzdAogICAgIDogc3RhdGVtZW50IHsKLSAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZSgkMSwgQCQpOworICAg
ICAgICAkJCA9IG5ldyBUSW50ZXJtQmxvY2soKTsKKyAgICAgICAgJCQtPnNldExpbmUoQCQpOwor
ICAgICAgICAkJC0+YXBwZW5kU3RhdGVtZW50KCQxKTsKICAgICB9CiAgICAgfCBzdGF0ZW1lbnRf
bGlzdCBzdGF0ZW1lbnQgewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93
QWdncmVnYXRlKCQxLCAkMiwgQCQpOworICAgICAgICAkJCA9ICQxOworICAgICAgICAkJC0+YXBw
ZW5kU3RhdGVtZW50KCQyKTsKICAgICB9CiAgICAgOwogCkBAIC0xNDI1LDkgKzEzMzUsOCBAQCBl
eHByZXNzaW9uX3N0YXRlbWVudAogCiBzZWxlY3Rpb25fc3RhdGVtZW50CiAgICAgOiBJRiBMRUZU
X1BBUkVOIGV4cHJlc3Npb24gUklHSFRfUEFSRU4gc2VsZWN0aW9uX3Jlc3Rfc3RhdGVtZW50IHsK
LSAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKEAxLCAkMykpCi0gICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZFNlbGVjdGlvbigkMywgJDUsIEAxKTsKKyAgICAgICAgY29udGV4dC0+Y2hlY2tJc1NjYWxh
ckJvb2woQDEsICQzKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSWZF
bHNlKCQzLCAkNSwgQDEpOwogICAgIH0KICAgICA7CiAKQEAgLTE0NjIsMTggKzEzNzEsMTUgQEAg
Y29uZGl0aW9uCiAgICAgLy8gSW4gMTk5NiBjKysgZHJhZnQsIGNvbmRpdGlvbnMgY2FuIGluY2x1
ZGUgc2luZ2xlIGRlY2xhcmF0aW9ucwogICAgIDogZXhwcmVzc2lvbiB7CiAgICAgICAgICQkID0g
JDE7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygkMS0+Z2V0TGluZSgpLCAk
MSkpCi0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgIGNvbnRleHQtPmNo
ZWNrSXNTY2FsYXJCb29sKCQxLT5nZXRMaW5lKCksICQxKTsKICAgICB9CiAgICAgfCBmdWxseV9z
cGVjaWZpZWRfdHlwZSBpZGVudGlmaWVyIEVRVUFMIGluaXRpYWxpemVyIHsKICAgICAgICAgVElu
dGVybU5vZGUgKmludGVybU5vZGU7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVj
ayhAMiwgJDEpKQotICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICBjb250
ZXh0LT5jaGVja0lzU2NhbGFyQm9vbChAMiwgJDEpOwogCiAgICAgICAgIGlmICghY29udGV4dC0+
ZXhlY3V0ZUluaXRpYWxpemVyKEAyLCAqJDIuc3RyaW5nLCAkMSwgJDQsICZpbnRlcm1Ob2RlKSkK
ICAgICAgICAgICAgICQkID0gJDQ7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQgPSAwOwogICAgICAgICB9CiAgICAgfQpAQCAt
MTQ4Niw4ICsxMzkyLDcgQEAgaXRlcmF0aW9uX3N0YXRlbWVudAogICAgICAgICBjb250ZXh0LT5k
ZWNyTG9vcE5lc3RpbmdMZXZlbCgpOwogICAgIH0KICAgICB8IERPIHsgY29udGV4dC0+aW5jckxv
b3BOZXN0aW5nTGV2ZWwoKTsgfSBzdGF0ZW1lbnRfd2l0aF9zY29wZSBXSElMRSBMRUZUX1BBUkVO
IGV4cHJlc3Npb24gUklHSFRfUEFSRU4gU0VNSUNPTE9OIHsKLSAgICAgICAgaWYgKGNvbnRleHQt
PmJvb2xFcnJvckNoZWNrKEA4LCAkNikpCi0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CisgICAgICAgIGNvbnRleHQtPmNoZWNrSXNTY2FsYXJCb29sKEA4LCAkNik7CiAKICAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcERvV2hpbGUsIDAsICQ2LCAw
LCAkMywgQDQpOwogICAgICAgICBjb250ZXh0LT5kZWNyTG9vcE5lc3RpbmdMZXZlbCgpOwpAQCAt
MTU1MSwxMiArMTQ1NiwxMyBAQCBqdW1wX3N0YXRlbWVudAogCiB0cmFuc2xhdGlvbl91bml0CiAg
ICAgOiBleHRlcm5hbF9kZWNsYXJhdGlvbiB7Ci0gICAgICAgICQkID0gJDE7CisgICAgICAgICQk
ID0gbmV3IFRJbnRlcm1CbG9jaygpOworICAgICAgICAkJC0+c2V0TGluZShAJCk7CisgICAgICAg
ICQkLT5hcHBlbmRTdGF0ZW1lbnQoJDEpOwogICAgICAgICBjb250ZXh0LT5zZXRUcmVlUm9vdCgk
JCk7CiAgICAgfQogICAgIHwgdHJhbnNsYXRpb25fdW5pdCBleHRlcm5hbF9kZWNsYXJhdGlvbiB7
Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEsICQy
LCBAJCk7Ci0gICAgICAgIGNvbnRleHQtPnNldFRyZWVSb290KCQkKTsKKyAgICAgICAgJCQtPmFw
cGVuZFN0YXRlbWVudCgkMik7CiAgICAgfQogICAgIDsKIApAQCAtMTU3MSw3ICsxNDc3LDcgQEAg
ZXh0ZXJuYWxfZGVjbGFyYXRpb24KIAogZnVuY3Rpb25fZGVmaW5pdGlvbgogICAgIDogZnVuY3Rp
b25fcHJvdG90eXBlIHsKLSAgICAgICAgY29udGV4dC0+cGFyc2VGdW5jdGlvblByb3RvdHlwZShA
MSwgJDEuZnVuY3Rpb24sICYkMS5pbnRlcm1BZ2dyZWdhdGUpOworICAgICAgICBjb250ZXh0LT5w
YXJzZUZ1bmN0aW9uRGVmaW5pdGlvbkhlYWRlcihAMSwgJigkMS5mdW5jdGlvbiksICYkMS5pbnRl
cm1BZ2dyZWdhdGUpOwogICAgIH0KICAgICBjb21wb3VuZF9zdGF0ZW1lbnRfbm9fbmV3X3Njb3Bl
IHsKICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRGdW5jdGlvbkRlZmluaXRpb24oKigkMS5mdW5j
dGlvbiksICQxLmludGVybUFnZ3JlZ2F0ZSwgJDMsIEAxKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2dsc2xhbmdfbGV4LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9n
bHNsYW5nX2xleC5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2dsc2xhbmdfbGV4LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjA3NSw3ICsyMDc1LDYgQEAgY2FzZSAyMzc6CiBZWV9SVUxFX1NFVFVQCiB7CiAgICAg
eXlleHRyYS0+ZXJyb3IoKnl5bGxvYywgIklsbGVnYWwgY2hhcmFjdGVyIGF0IGZpZWxkbmFtZSBz
dGFydCIsIHl5dGV4dCwgIiIpOwotICAgIHl5ZXh0cmEtPnJlY292ZXIoKTsKICAgICByZXR1cm4g
MDsKIH0KIAlZWV9CUkVBSwpAQCAtMjA5MCw3ICsyMDg5LDcgQEAgY2FzZSBZWV9TVEFURV9FT0Yo
RklFTERTKToKIAlZWV9CUkVBSwogY2FzZSAyMzk6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiAw
OyB9Cit7IGFzc2VydChmYWxzZSk7IHJldHVybiAwOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjQwOgog
WVlfUlVMRV9TRVRVUApAQCAtMzI3NSw3ICszMjc0LDYgQEAgaW50IHJlc2VydmVkX3dvcmQoeXlz
Y2FuX3QgeXlzY2FubmVyKSB7CiAgICAgc3RydWN0IHl5Z3V0c190KiB5eWcgPSAoc3RydWN0IHl5
Z3V0c190KikgeXlzY2FubmVyOwogCiAgICAgeXlleHRyYS0+ZXJyb3IoKnl5bGxvYywgIklsbGVn
YWwgdXNlIG9mIHJlc2VydmVkIHdvcmQiLCB5eXRleHQsICIiKTsKLSAgICB5eWV4dHJhLT5yZWNv
dmVyKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTMzMjUsNyArMzMyMyw2IEBAIGludCB1aW50
X2NvbnN0YW50KFRQYXJzZUNvbnRleHQgKmNvbnRleHQKICAgICBpZiAoY29udGV4dC0+Z2V0U2hh
ZGVyVmVyc2lvbigpIDwgMzAwKQogICAgIHsKICAgICAgICAgY29udGV4dC0+ZXJyb3IoKnl5bGxv
YywgIlVuc2lnbmVkIGludGVnZXJzIGFyZSB1bnN1cHBvcnRlZCBwcmlvciB0byBHTFNMIEVTIDMu
MDAiLCB5eXRleHQsICIiKTsKLSAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAKQEAgLTMzNDIsNyArMzMzOSw2IEBAIGludCBmbG9hdHN1ZmZpeF9j
aGVjayhUUGFyc2VDb250ZXh0KiBjb24KICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyVmVyc2lv
bigpIDwgMzAwKQogICAgIHsKICAgICAgICAgY29udGV4dC0+ZXJyb3IoKnl5bGxvYywgIkZsb2F0
aW5nLXBvaW50IHN1ZmZpeCB1bnN1cHBvcnRlZCBwcmlvciB0byBHTFNMIEVTIDMuMDAiLCB5eXRl
eHQpOwotICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KIApAQCAtMzM1Niw3ICszMzUyLDYgQEAgaW50IGZsb2F0c3VmZml4X2NoZWNrKFRQYXJzZUNv
bnRleHQqIGNvbgogCiB2b2lkIHl5ZXJyb3IoWVlMVFlQRSogbGxvYywgVFBhcnNlQ29udGV4dCog
Y29udGV4dCwgdm9pZCAqc2Nhbm5lciwgY29uc3QgY2hhciogcmVhc29uKSB7CiAgICAgY29udGV4
dC0+ZXJyb3IoKmxsb2MsIHJlYXNvbiwgeXlnZXRfdGV4dChzY2FubmVyKSk7Ci0gICAgY29udGV4
dC0+cmVjb3ZlcigpOwogfQogCiBpbnQgaW50X2NvbnN0YW50KFRQYXJzZUNvbnRleHQgKmNvbnRl
eHQpIHsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL2dsc2xhbmdfdGFiLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nX3RhYi5jcHAJKHJldmlzaW9uIDIwNzgw
NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2ds
c2xhbmdfdGFiLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsOCBAQAogCiAvLyBUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgZ2VuZXJhdGVfcGFyc2VyLnNoLiBETyBOT1QgRURJ
VCEKIAorLy8gY2xhbmctZm9ybWF0IG9mZgorCiAvLyBJZ25vcmUgZXJyb3JzIGluIGF1dG8tZ2Vu
ZXJhdGVkIGNvZGUuCiAjaWYgZGVmaW5lZChfX0dOVUNfXykKICNwcmFnbWEgR0NDIGRpYWdub3N0
aWMgaWdub3JlZCAiLVd1bnVzZWQtZnVuY3Rpb24iCkBAIC0yOTEsMTAgKzI5MywxMiBAQCB1bmlv
biBZWVNUWVBFCiAgICAgICAgICAgICBUSW50ZXJtTm9kZVBhaXIgbm9kZVBhaXI7CiAgICAgICAg
ICAgICBUSW50ZXJtVHlwZWQqIGludGVybVR5cGVkTm9kZTsKICAgICAgICAgICAgIFRJbnRlcm1B
Z2dyZWdhdGUqIGludGVybUFnZ3JlZ2F0ZTsKKyAgICAgICAgICAgIFRJbnRlcm1CbG9jayogaW50
ZXJtQmxvY2s7CiAgICAgICAgICAgICBUSW50ZXJtU3dpdGNoKiBpbnRlcm1Td2l0Y2g7CiAgICAg
ICAgICAgICBUSW50ZXJtQ2FzZSogaW50ZXJtQ2FzZTsKICAgICAgICAgfTsKICAgICAgICAgdW5p
b24geworICAgICAgICAgICAgVFR5cGVTcGVjaWZpZXJOb25BcnJheSB0eXBlU3BlY2lmaWVyTm9u
QXJyYXk7CiAgICAgICAgICAgICBUUHVibGljVHlwZSB0eXBlOwogICAgICAgICAgICAgVFByZWNp
c2lvbiBwcmVjaXNpb247CiAgICAgICAgICAgICBUTGF5b3V0UXVhbGlmaWVyIGxheW91dFF1YWxp
ZmllcjsKQEAgLTMwMyw2ICszMDcsOCBAQCB1bmlvbiBZWVNUWVBFCiAgICAgICAgICAgICBUUGFy
YW1ldGVyIHBhcmFtOwogICAgICAgICAgICAgVEZpZWxkKiBmaWVsZDsKICAgICAgICAgICAgIFRG
aWVsZExpc3QqIGZpZWxkTGlzdDsKKyAgICAgICAgICAgIFRRdWFsaWZpZXJXcmFwcGVyQmFzZSog
cXVhbGlmaWVyV3JhcHBlcjsKKyAgICAgICAgICAgIFRUeXBlUXVhbGlmaWVyQnVpbGRlciogdHlw
ZVF1YWxpZmllckJ1aWxkZXI7CiAgICAgICAgIH07CiAgICAgfSBpbnRlcm07CiAKQEAgLTM1OSwy
OCArMzY1LDQyIEBAIGV4dGVybiB2b2lkIHl5ZXJyb3IoWVlMVFlQRSogeXlsbG9jLCBUUGEKICNk
ZWZpbmUgVkVSVEVYX09OTFkoUywgTCkgeyAgXAogICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXJU
eXBlKCkgIT0gR0xfVkVSVEVYX1NIQURFUikgeyAgXAogICAgICAgICBjb250ZXh0LT5lcnJvcihM
LCAiIHN1cHBvcnRlZCBpbiB2ZXJ0ZXggc2hhZGVycyBvbmx5ICIsIFMpOyAgXAotICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7ICBcCiAgICAgfSAgXAogfQogCiAjZGVmaW5lIEZSQUdfT05MWShT
LCBMKSB7ICBcCiAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclR5cGUoKSAhPSBHTF9GUkFHTUVO
VF9TSEFERVIpIHsgIFwKICAgICAgICAgY29udGV4dC0+ZXJyb3IoTCwgIiBzdXBwb3J0ZWQgaW4g
ZnJhZ21lbnQgc2hhZGVycyBvbmx5ICIsIFMpOyAgXAotICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7ICBcCisgICAgfSAgXAorfQorCisjZGVmaW5lIENPTVBVVEVfT05MWShTLCBMKSB7ICBcCisg
ICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclR5cGUoKSAhPSBHTF9DT01QVVRFX1NIQURFUikgeyAg
XAorICAgICAgICBjb250ZXh0LT5lcnJvcihMLCAiIHN1cHBvcnRlZCBpbiBjb21wdXRlIHNoYWRl
cnMgb25seSAiLCBTKTsgIFwKKyAgICB9ICBcCit9CisKKyNkZWZpbmUgTk9OX0NPTVBVVEVfT05M
WShTLCBMKSB7ICBcCisgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclR5cGUoKSAhPSBHTF9WRVJU
RVhfU0hBREVSICYmIGNvbnRleHQtPmdldFNoYWRlclR5cGUoKSAhPSBHTF9GUkFHTUVOVF9TSEFE
RVIpIHsgIFwKKyAgICAgICAgY29udGV4dC0+ZXJyb3IoTCwgIiBzdXBwb3J0ZWQgaW4gdmVydGV4
IGFuZCBmcmFnbWVudCBzaGFkZXJzIG9ubHkgIiwgUyk7ICBcCiAgICAgfSAgXAogfQogCiAjZGVm
aW5lIEVTMl9PTkxZKFMsIEwpIHsgIFwKICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyVmVyc2lv
bigpICE9IDEwMCkgeyAgXAogICAgICAgICBjb250ZXh0LT5lcnJvcihMLCAiIHN1cHBvcnRlZCBp
biBHTFNMIEVTIDEuMDAgb25seSAiLCBTKTsgIFwKLSAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OyAgXAogICAgIH0gIFwKIH0KIAotI2RlZmluZSBFUzNfT05MWShUT0tFTiwgTElORSwgUkVBU09O
KSB7ICBcCi0gICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclZlcnNpb24oKSAhPSAzMDApIHsgIFwK
LSAgICAgICAgY29udGV4dC0+ZXJyb3IoTElORSwgUkVBU09OICIgc3VwcG9ydGVkIGluIEdMU0wg
RVMgMy4wMCBvbmx5ICIsIFRPS0VOKTsgIFwKLSAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOyAg
XAorI2RlZmluZSBFUzNfT1JfTkVXRVIoVE9LRU4sIExJTkUsIFJFQVNPTikgeyAgXAorICAgIGlm
IChjb250ZXh0LT5nZXRTaGFkZXJWZXJzaW9uKCkgPCAzMDApIHsgIFwKKyAgICAgICAgY29udGV4
dC0+ZXJyb3IoTElORSwgUkVBU09OICIgc3VwcG9ydGVkIGluIEdMU0wgRVMgMy4wMCBhbmQgYWJv
dmUgb25seSAiLCBUT0tFTik7ICBcCisgICAgfSAgXAorfQorCisjZGVmaW5lIEVTM18xX09OTFko
VE9LRU4sIExJTkUsIFJFQVNPTikgeyAgXAorICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXJWZXJz
aW9uKCkgIT0gMzEwKSB7ICBcCisgICAgICAgIGNvbnRleHQtPmVycm9yKExJTkUsIFJFQVNPTiAi
IHN1cHBvcnRlZCBpbiBHTFNMIEVTIDMuMTAgb25seSAiLCBUT0tFTik7ICBcCiAgICAgfSAgXAog
fQogCkBAIC02MjYsMTggKzY0NiwxOCBAQCB1bmlvbiB5eWFsbG9jCiAjZW5kaWYgLyogIVlZQ09Q
WV9ORUVERUQgKi8KIAogLyogWVlGSU5BTCAtLSBTdGF0ZSBudW1iZXIgb2YgdGhlIHRlcm1pbmF0
aW9uIHN0YXRlLiAgKi8KLSNkZWZpbmUgWVlGSU5BTCAgMTE2CisjZGVmaW5lIFlZRklOQUwgIDEw
OQogLyogWVlMQVNUIC0tIExhc3QgaW5kZXggaW4gWVlUQUJMRS4gICovCi0jZGVmaW5lIFlZTEFT
VCAgIDI1MTYKKyNkZWZpbmUgWVlMQVNUICAgMjQzMgogCiAvKiBZWU5UT0tFTlMgLS0gTnVtYmVy
IG9mIHRlcm1pbmFscy4gICovCiAjZGVmaW5lIFlZTlRPS0VOUyAgMTI4CiAvKiBZWU5OVFMgLS0g
TnVtYmVyIG9mIG5vbnRlcm1pbmFscy4gICovCiAjZGVmaW5lIFlZTk5UUyAgOTQKIC8qIFlZTlJV
TEVTIC0tIE51bWJlciBvZiBydWxlcy4gICovCi0jZGVmaW5lIFlZTlJVTEVTICAyNzUKKyNkZWZp
bmUgWVlOUlVMRVMgIDI2OQogLyogWVlOU1RBVEVTIC0tIE51bWJlciBvZiBzdGF0ZXMuICAqLwot
I2RlZmluZSBZWU5TVEFURVMgIDQxNworI2RlZmluZSBZWU5TVEFURVMgIDQwNQogCiAvKiBZWVRS
QU5TTEFURVtZWVhdIC0tIFN5bWJvbCBudW1iZXIgY29ycmVzcG9uZGluZyB0byBZWVggYXMgcmV0
dXJuZWQKICAgIGJ5IHl5bGV4LCB3aXRoIG91dC1vZi1ib3VuZHMgY2hlY2tpbmcuICAqLwpAQCAt
Njk2LDM0ICs3MTYsMzMgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXRyYW5zbGF0ZVtd
IAogICAvKiBZWVJMSU5FW1lZTl0gLS0gU291cmNlIGxpbmUgd2hlcmUgcnVsZSBudW1iZXIgWVlO
IHdhcyBkZWZpbmVkLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDE2IHl5cmxpbmVbXSA9
CiB7Ci0gICAgICAgMCwgICAyMTIsICAgMjEyLCAgIDIxMywgICAyMTYsICAgMjI2LCAgIDIyOSwg
ICAyMzQsICAgMjM5LCAgIDI0NCwKLSAgICAgMjQ5LCAgIDI1NSwgICAyNTgsICAgMjYxLCAgIDI2
NCwgICAyNjcsICAgMjcwLCAgIDI3NiwgICAyODQsICAgMjk1LAotICAgICAyOTksICAgMzA3LCAg
IDMxMCwgICAzMTYsICAgMzIwLCAgIDMyNywgICAzMzMsICAgMzQyLCAgIDM1MCwgICAzNTYsCi0g
ICAgIDM2MywgICAzNzMsICAgMzc2LCAgIDM3OSwgICAzODIsICAgMzkyLCAgIDM5MywgICAzOTQs
ICAgMzk1LCAgIDQwMywKLSAgICAgNDA0LCAgIDQwNywgICA0MTAsICAgNDE3LCAgIDQxOCwgICA0
MjEsICAgNDI3LCAgIDQyOCwgICA0MzIsICAgNDM5LAotICAgICA0NDAsICAgNDQzLCAgIDQ0Niwg
ICA0NDksICAgNDU1LCAgIDQ1NiwgICA0NTksICAgNDY1LCAgIDQ2NiwgICA0NzMsCi0gICAgIDQ3
NCwgICA0ODEsICAgNDgyLCAgIDQ4OSwgICA0OTAsICAgNDk2LCAgIDQ5NywgICA1MDMsICAgNTA0
LCAgIDUxMCwKLSAgICAgNTExLCAgIDUxNywgICA1MTgsICAgNTI2LCAgIDUyNywgICA1MjgsICAg
NTI5LCAgIDUzMywgICA1MzQsICAgNTM1LAotICAgICA1MzksICAgNTQzLCAgIDU0NywgICA1NTEs
ICAgNTU4LCAgIDU2MSwgICA1NjcsICAgNTc1LCAgIDU4MywgICA1ODYsCi0gICAgIDU5MiwgICA2
MDMsICAgNjA3LCAgIDYxMSwgICA2MTUsICAgNjIyLCAgIDYyOCwgICA2MzEsICAgNjM4LCAgIDY0
NiwKLSAgICAgNjY3LCAgIDY5NCwgICA3MDQsICAgNzMyLCAgIDczNywgICA3NDcsICAgNzUyLCAg
IDc2MiwgICA3NjUsICAgNzY4LAotICAgICA3NzEsICAgNzc3LCAgIDc4NCwgICA3ODcsICAgNzkx
LCAgIDc5NSwgICA4MDAsICAgODA1LCAgIDgxMiwgICA4MTYsCi0gICAgIDgyMCwgICA4MjQsICAg
ODI5LCAgIDgzNCwgICA4MzgsICAgODQ1LCAgIDg1NSwgICA4NjEsICAgODY0LCAgIDg3MCwKLSAg
ICAgODc2LCAgIDg4MywgICA4OTIsICAgOTAyLCAgIDkxMCwgICA5MTMsICAgOTIwLCAgIDkyNCwg
ICA5MjgsICAgOTMzLAotICAgICA5NDEsICAgOTQ0LCAgIDk0OCwgICA5NTIsICAgOTYxLCAgIDk3
MCwgICA5NzgsICAgOTg4LCAgMTAwMCwgIDEwMDMsCi0gICAgMTAwNiwgIDEwMTIsICAxMDE5LCAg
MTAyMiwgIDEwMjgsICAxMDMxLCAgMTAzNCwgIDEwNDAsICAxMDQzLCAgMTA0OCwKLSAgICAxMDYz
LCAgMTA2NywgIDEwNzEsICAxMDc1LCAgMTA3OSwgIDEwODMsICAxMDg4LCAgMTA5MywgIDEwOTgs
ICAxMTAzLAotICAgIDExMDgsICAxMTEzLCAgMTExOCwgIDExMjMsICAxMTI4LCAgMTEzMywgIDEx
MzgsICAxMTQzLCAgMTE0OCwgIDExNTMsCi0gICAgMTE1OCwgIDExNjMsICAxMTY4LCAgMTE3Mywg
IDExNzgsICAxMTgzLCAgMTE4OCwgIDExOTIsICAxMTk2LCAgMTIwMCwKLSAgICAxMjA0LCAgMTIw
OCwgIDEyMTIsICAxMjE2LCAgMTIyMCwgIDEyMjQsICAxMjI4LCAgMTIzMiwgIDEyMzYsICAxMjQw
LAotICAgIDEyNDQsICAxMjQ4LCAgMTI1NiwgIDEyNjQsICAxMjY4LCAgMTI4MSwgIDEyODEsICAx
Mjg0LCAgMTI4NCwgIDEyOTAsCi0gICAgMTI5MywgIDEzMDksICAxMzEyLCAgMTMyMSwgIDEzMjUs
ICAxMzMxLCAgMTMzOCwgIDEzNTMsICAxMzU3LCAgMTM2MSwKLSAgICAxMzYyLCAgMTM2OCwgIDEz
NjksICAxMzcwLCAgMTM3MSwgIDEzNzIsICAxMzczLCAgMTM3NCwgIDEzNzgsICAxMzc5LAotICAg
IDEzNzksICAxMzc5LCAgMTM4OSwgIDEzOTAsICAxMzk0LCAgMTM5NCwgIDEzOTUsICAxMzk1LCAg
MTQwMCwgIDE0MDMsCi0gICAgMTQxMywgIDE0MTYsICAxNDIyLCAgMTQyMywgIDE0MjcsICAxNDM1
LCAgMTQzOSwgIDE0NDYsICAxNDQ2LCAgMTQ1MywKLSAgICAxNDU2LCAgMTQ2MywgIDE0NjgsICAx
NDgzLCAgMTQ4MywgIDE0ODgsICAxNDg4LCAgMTQ5NSwgIDE0OTUsICAxNTAzLAotICAgIDE1MDYs
ICAxNTEyLCAgMTUxNSwgIDE1MjEsICAxNTI1LCAgMTUzMiwgIDE1MzUsICAxNTM4LCAgMTU0MSwg
IDE1NDQsCi0gICAgMTU1MywgIDE1NTcsICAxNTY0LCAgMTU2NywgIDE1NzMsICAxNTczCisgICAg
ICAgMCwgICAyMzcsICAgMjM3LCAgIDIzOCwgICAyNDEsICAgMjUxLCAgIDI1NCwgICAyNTksICAg
MjY0LCAgIDI2OSwKKyAgICAgMjc0LCAgIDI4MCwgICAyODMsICAgMjg2LCAgIDI4OSwgICAyOTIs
ICAgMjk1LCAgIDMwMSwgICAzMDgsICAgMzE5LAorICAgICAzMjMsICAgMzMxLCAgIDMzNCwgICAz
NDAsICAgMzQ0LCAgIDM1MSwgICAzNTcsICAgMzY2LCAgIDM3NCwgICAzODAsCisgICAgIDM4Niwg
ICAzOTUsICAgMzk4LCAgIDQwMSwgICA0MDQsICAgNDE0LCAgIDQxNSwgICA0MTYsICAgNDE3LCAg
IDQyNSwKKyAgICAgNDI2LCAgIDQyOSwgICA0MzIsICAgNDM5LCAgIDQ0MCwgICA0NDMsICAgNDQ5
LCAgIDQ1MCwgICA0NTQsICAgNDYxLAorICAgICA0NjIsICAgNDY1LCAgIDQ2OCwgICA0NzEsICAg
NDc3LCAgIDQ3OCwgICA0ODEsICAgNDg3LCAgIDQ4OCwgICA0OTUsCisgICAgIDQ5NiwgICA1MDMs
ICAgNTA0LCAgIDUxMSwgICA1MTIsICAgNTE4LCAgIDUxOSwgICA1MjUsICAgNTI2LCAgIDUzMiwK
KyAgICAgNTMzLCAgIDUzOSwgICA1NDAsICAgNTQ3LCAgIDU0OCwgICA1NDksICAgNTUwLCAgIDU1
NCwgICA1NTUsICAgNTU2LAorICAgICA1NjAsICAgNTY0LCAgIDU2OCwgICA1NzIsICAgNTc5LCAg
IDU4MiwgICA1ODgsICAgNTk1LCAgIDYwMiwgICA2MDUsCisgICAgIDYxMSwgICA2MjAsICAgNjI0
LCAgIDYyOCwgICA2MzIsICAgNjM2LCAgIDY0MywgICA2NTAsICAgNjUzLCAgIDY2MCwKKyAgICAg
NjY4LCAgIDY4OCwgICA2OTgsICAgNzA2LCAgIDczMSwgICA3MzUsICAgNzM5LCAgIDc0MywgICA3
NTAsICAgNzU3LAorICAgICA3NjAsICAgNzY0LCAgIDc2OCwgICA3NzMsICAgNzc4LCAgIDc4NSwg
ICA3ODksICAgNzkzLCAgIDc5NywgICA4MDIsCisgICAgIDgwNywgICA4MTQsICAgODI0LCAgIDgz
MCwgICA4MzMsICAgODM5LCAgIDg0MywgICA4NTAsICAgODU2LCAgIDg2MywKKyAgICAgODY3LCAg
IDg3MCwgICA4NzMsICAgODgyLCAgIDg4OCwgICA4OTYsICAgODk5LCAgIDkxOSwgICA5MzgsICAg
OTQ1LAorICAgICA5NDksICAgOTU2LCAgIDk2NiwgICA5NjksICAgOTcyLCAgIDk3OCwgICA5ODUs
ICAgOTg4LCAgIDk5NCwgICA5OTcsCisgICAgMTAwMCwgIDEwMDYsICAxMDA5LCAgMTAxNCwgIDEw
MjUsICAxMDI4LCAgMTAzMSwgIDEwMzQsICAxMDM3LCAgMTA0MCwKKyAgICAxMDQ0LCAgMTA0OCwg
IDEwNTIsICAxMDU2LCAgMTA2MCwgIDEwNjQsICAxMDY4LCAgMTA3MiwgIDEwNzYsICAxMDgwLAor
ICAgIDEwODQsICAxMDg4LCAgMTA5MiwgIDEwOTYsICAxMTAwLCAgMTEwNCwgIDExMDgsICAxMTEy
LCAgMTExNiwgIDExMjAsCisgICAgMTEyNCwgIDExMjcsICAxMTMwLCAgMTEzMywgIDExMzYsICAx
MTM5LCAgMTE0MiwgIDExNDUsICAxMTQ4LCAgMTE1MSwKKyAgICAxMTU0LCAgMTE1NywgIDExNjAs
ICAxMTYzLCAgMTE2NiwgIDExNjksICAxMTc2LCAgMTE4MiwgIDExODUsICAxMTk3LAorICAgIDEx
OTcsICAxMjAwLCAgMTIwMCwgIDEyMDYsICAxMjA5LCAgMTIyNCwgIDEyMjcsICAxMjM0LCAgMTIz
OCwgIDEyNDQsCisgICAgMTI1MCwgIDEyNjIsICAxMjY2LCAgMTI3MCwgIDEyNzEsICAxMjc3LCAg
MTI3OCwgIDEyNzksICAxMjgwLCAgMTI4MSwKKyAgICAxMjgyLCAgMTI4MywgIDEyODcsICAxMjg4
LCAgMTI4OCwgIDEyODgsICAxMjk3LCAgMTI5OCwgIDEzMDIsICAxMzAyLAorICAgIDEzMDMsICAx
MzAzLCAgMTMwOCwgIDEzMTEsICAxMzIwLCAgMTMyNSwgIDEzMzIsICAxMzMzLCAgMTMzNywgIDEz
NDQsCisgICAgMTM0OCwgIDEzNTUsICAxMzU1LCAgMTM2MiwgIDEzNjUsICAxMzcyLCAgMTM3Niwg
IDEzODksICAxMzg5LCAgMTM5NCwKKyAgICAxMzk0LCAgMTQwMCwgIDE0MDAsICAxNDA4LCAgMTQx
MSwgIDE0MTcsICAxNDIwLCAgMTQyNiwgIDE0MzAsICAxNDM3LAorICAgIDE0NDAsICAxNDQzLCAg
MTQ0NiwgIDE0NDksICAxNDU4LCAgMTQ2NCwgIDE0NzAsICAxNDczLCAgMTQ3OSwgIDE0NzkKIH07
CiAjZW5kaWYKIApAQCAtNzcwLDEwICs3ODksMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0
IHl5dG5hbWVbXSA9CiAgICJjb25zdGFudF9leHByZXNzaW9uIiwgImVudGVyX3N0cnVjdCIsICJk
ZWNsYXJhdGlvbiIsCiAgICJmdW5jdGlvbl9wcm90b3R5cGUiLCAiZnVuY3Rpb25fZGVjbGFyYXRv
ciIsCiAgICJmdW5jdGlvbl9oZWFkZXJfd2l0aF9wYXJhbWV0ZXJzIiwgImZ1bmN0aW9uX2hlYWRl
ciIsCi0gICJwYXJhbWV0ZXJfZGVjbGFyYXRvciIsICJwYXJhbWV0ZXJfZGVjbGFyYXRpb24iLCAi
cGFyYW1ldGVyX3F1YWxpZmllciIsCisgICJwYXJhbWV0ZXJfZGVjbGFyYXRvciIsICJwYXJhbWV0
ZXJfZGVjbGFyYXRpb24iLAogICAicGFyYW1ldGVyX3R5cGVfc3BlY2lmaWVyIiwgImluaXRfZGVj
bGFyYXRvcl9saXN0IiwgInNpbmdsZV9kZWNsYXJhdGlvbiIsCi0gICJmdWxseV9zcGVjaWZpZWRf
dHlwZSIsICJpbnRlcnBvbGF0aW9uX3F1YWxpZmllciIsCi0gICJwYXJhbWV0ZXJfdHlwZV9xdWFs
aWZpZXIiLCAidHlwZV9xdWFsaWZpZXIiLCAic3RvcmFnZV9xdWFsaWZpZXIiLAorICAiZnVsbHlf
c3BlY2lmaWVkX3R5cGUiLCAiaW50ZXJwb2xhdGlvbl9xdWFsaWZpZXIiLCAidHlwZV9xdWFsaWZp
ZXIiLAorICAiaW52YXJpYW50X3F1YWxpZmllciIsICJzaW5nbGVfdHlwZV9xdWFsaWZpZXIiLCAi
c3RvcmFnZV9xdWFsaWZpZXIiLAogICAidHlwZV9zcGVjaWZpZXIiLCAicHJlY2lzaW9uX3F1YWxp
ZmllciIsICJsYXlvdXRfcXVhbGlmaWVyIiwKICAgImxheW91dF9xdWFsaWZpZXJfaWRfbGlzdCIs
ICJsYXlvdXRfcXVhbGlmaWVyX2lkIiwKICAgInR5cGVfc3BlY2lmaWVyX25vX3ByZWMiLCAidHlw
ZV9zcGVjaWZpZXJfbm9uYXJyYXkiLCAic3RydWN0X3NwZWNpZmllciIsCkBAIC04MTIsMTIgKzgz
MSwxMiBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5eXRva251bVtdID0KIH07CiAjIGVu
ZGlmCiAKLSNkZWZpbmUgWVlQQUNUX05JTkYgLTM2MQorI2RlZmluZSBZWVBBQ1RfTklORiAtMzQ4
CiAKICNkZWZpbmUgeXlwYWN0X3ZhbHVlX2lzX2RlZmF1bHQoWXlzdGF0ZSkgXAotICAoISEoKFl5
c3RhdGUpID09ICgtMzYxKSkpCisgICghISgoWXlzdGF0ZSkgPT0gKC0zNDgpKSkKIAotI2RlZmlu
ZSBZWVRBQkxFX05JTkYgLTIzNQorI2RlZmluZSBZWVRBQkxFX05JTkYgLTIyOQogCiAjZGVmaW5l
IHl5dGFibGVfdmFsdWVfaXNfZXJyb3IoWXl0YWJsZV92YWx1ZSkgXAogICAwCkBAIC04MjYsNDgg
Kzg0NSw0NyBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5eXRva251bVtdID0KICAgICAg
U1RBVEUtTlVNLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXlwYWN0W10gPQogewot
ICAgIDIxNTQsICAgMjI0LCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgIDEzMCwgIC0zNjEsICAtMzYx
LCAgLTM2MSwgIC0zNjEsCi0gICAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAt
MzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwKLSAgICAtMzYxLCAgLTM2MSwgIC0zNjEs
ICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLAotICAgIC0z
NjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAgMTQ1LCAgLTM2
MSwgIC0zNjEsCi0gICAgIC00NiwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAg
LTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwKLSAgICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYx
LCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAgLTgyLAotICAgIC0zNjEsICAt
MzYxLCAgIC02OCwgICAtNDEsICAgLTQ1LCAgICAgOSwgICAgIDcsICAtMzYxLCAgIDExNywgICAg
MTYsCi0gICAgMTE3MywgIC0zNjEsICAtMzYxLCAgMjQzOSwgICAgMTYsICAtMzYxLCAgICAtOSwg
IC0zNjEsICAyMDc5LCAgLTM2MSwKLSAgICAtMzYxLCAgLTM2MSwgIC0zNjEsICAgIDE2LCAgLTM2
MSwgIDI0MzksICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLAotICAgIC0zNjEsICAgLTMxLCAg
ICAyMywgIC0zNjEsICAgIDExLCAgLTM2MSwgICAgNjMsICAtMzYxLCAgLTM2MSwgIC0zNjEsCi0g
ICAgLTM2MSwgIC0zNjEsICAyMzAzLCAgIDE2OCwgICAxMjAsICAtMzYxLCAgICAxMywgICAtNjYs
ICAtMzYxLCAgICAzMSwKLSAgICAtMzYxLCAgMjIyOSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIDEy
NDMsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAgIDU2LAotICAgIDIyMjksICAtMzYxLCAgICAxNywg
ICAtNTAsICAtMzYxLCAgIDQwMSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsCi0gICAgIDEy
MCwgIDIzMDMsICAgLTE4LCAgLTM2MSwgIDEzNDEsICAxNjMyLCAgLTM2MSwgICAxNzksICAyMzAz
LCAgIDEyMCwKLSAgICAxODI0LCAgLTM2MSwgICAgNzAsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAt
MzYxLCAgLTM2MSwgIDE2MzIsICAxNjMyLAotICAgIDE2MzIsICAtMzYxLCAgLTM2MSwgIC0zNjEs
ICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgICAyMiwgIC0zNjEsCi0gICAgLTM2MSwgIC0z
NjEsICAgMTAxLCAgIC0yOSwgIDE3MjcsICAgMTE0LCAgLTM2MSwgIDE2MzIsICAgIDk2LCAgIC05
NywKLSAgICAgMTI4LCAgIC01NCwgICAxMTEsICAgMTE4LCAgIDEwMiwgICAxMTUsICAgMTU0LCAg
IDE1MywgICAtNjksICAtMzYxLAotICAgICAxNDAsICAtMzYxLCAgLTM2MSwgIDE5MDksICAyMjI5
LCAgIDEyNCwgIC0zNjEsICAgIDIzLCAgIDEzNCwgICAxMzYsCi0gICAgLTM2MSwgICAxNDcsICAg
MTQ5LCAgIDE0MywgIDE0MzksICAgMTU1LCAgMTYzMiwgICAxNDgsICAgMTU3LCAgIDE2MCwKLSAg
ICAtMzYxLCAgLTM2MSwgICAxODQsICAtMzYxLCAgLTM2MSwgICAgNTIsICAtMzYxLCAgIC02OCwg
ICAxNTgsICAtMzYxLAotICAgIC0zNjEsICAtMzYxLCAgLTM2MSwgICA1MTcsICAtMzYxLCAgLTM2
MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsCi0gICAgIDE2NiwgIC0zNjEsICAtMzYxLCAg
MTUzNCwgIDE2MzIsICAgMTUwLCAgIDE1OSwgIC0zNjEsICAtMzYxLCAgIDEyMCwKLSAgICAgMTY3
LCAgICA2MSwgIC0zNjEsICAgLTYyLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgICAtNSwgIC0zNjEs
ICAtMzYxLAotICAgIDE2MzIsICAyMzcxLCAgLTM2MSwgIC0zNjEsICAxNjMyLCAgIDE4NSwgIC0z
NjEsICAtMzYxLCAgLTM2MSwgIDE2MzIsCi0gICAgMTYzMiwgIDE2MzIsICAxNjMyLCAgMTYzMiwg
IDE2MzIsICAxNjMyLCAgMTYzMiwgIDE2MzIsICAxNjMyLCAgMTYzMiwKLSAgICAxNjMyLCAgMTYz
MiwgIDE2MzIsICAxNjMyLCAgMTYzMiwgIDE2MzIsICAxNjMyLCAgMTYzMiwgIDE2MzIsICAtMzYx
LAotICAgIC0zNjEsICAxOTk0LCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAg
MTgxLCAgLTM2MSwgIDE2MzIsCi0gICAgLTM2MSwgIC0zNjEsICAgIDY3LCAgMTYzMiwgICAxODAs
ICAtMzYxLCAgLTM2MSwgIC0zNjEsICAgNjMzLCAgLTM2MSwKLSAgICAtMzYxLCAgLTM2MSwgIC0z
NjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLAotICAg
IDE2MzIsICAxNjMyLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgMTYzMiwgICAxNzgsICAgMTg2LCAg
LTM2MSwgIDE2MzIsCi0gICAgIDE4MiwgICAgNjgsICAxNjMyLCAgIDEyMCwgIC0zNjEsICAgLTcx
LCAgLTM2MSwgIC0zNjEsICAgMTg3LCAgIDE4OCwKLSAgICAtMzYxLCAgIDE5MiwgIC0zNjEsICAt
MzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgICA5NiwgICAgOTYsICAgLTk3LAotICAgICAtOTcs
ICAgMTI4LCAgIDEyOCwgICAxMjgsICAgMTI4LCAgIC01NCwgICAtNTQsICAgMTExLCAgIDExOCwg
ICAxMDIsCi0gICAgIDExNSwgICAxNTQsICAgMTUzLCAgIDExMywgIC0zNjEsICAgMjQyLCAgICAx
MSwgICA4NjUsICAgOTgxLCAgICAgNCwKLSAgICAtMzYxLCAgICAxOCwgIC0zNjEsICAxMDc4LCAg
IDYzMywgIC0zNjEsICAtMzYxLCAgIDE5NCwgIDE2MzIsICAgMTg5LAotICAgIC0zNjEsICAxNjMy
LCAgLTM2MSwgICAxOTYsICAtMzYxLCAgMTYzMiwgIC0zNjEsICAtMzYxLCAgMTYzMiwgICAyMDAs
Ci0gICAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIDEwNzgsICAgMTgxLCAgLTM2MSwgICAx
ODgsICAgMTIwLCAgMjMwMywKLSAgICAgMjAxLCAgIDE5OCwgIC0zNjEsICAtMzYxLCAgMTYzMiwg
IC0zNjEsICAtMzYxLCAgIDIwMiwgIC0zNjEsICAxNjMyLAotICAgIC0zNjEsICAgMTkxLCAgIDIw
MywgICAyOTMsICAtMzYxLCAgIDIwNCwgICAyMDUsICAgNzQ5LCAgLTM2MSwgIC0zNjEsCi0gICAg
IDE5NywgICAgNjAsICAxNjMyLCAgIDc0OSwgICAxODEsICAtMzYxLCAgMTYzMiwgIC0zNjEsICAt
MzYxLCAgLTM2MSwKLSAgICAtMzYxLCAgIDE5OSwgICAxODgsICAtMzYxLCAgLTM2MSwgIC0zNjEs
ICAtMzYxCisgICAgMjE0NCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAgMTQ0LCAgLTM0
OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwKKyAgICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAg
LTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LAorICAgIC0zNDgsICAtMzQ4
LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgs
CisgICAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0z
NDgsICAtMzQ4LCAgLTM0OCwKKyAgICAtMzQ4LCAgIC01MywgIC0zNDgsICAtMzQ4LCAgLTM0OCwg
IC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LAorICAgIC0zNDgsICAtMzQ4LCAgLTM0
OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsCisgICAg
IC04MywgIC0zNDgsICAtMzQ4LCAgIC04OSwgICAtNzAsICAgLTgxLCAgMjIxOSwgICAtMjYsICAt
MzQ4LCAgICA2MCwKKyAgICAtMzQ4LCAgMTE2MywgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgs
ICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAgLTY2LAorICAgIC0zNDgsICAyMDY5LCAgLTM0OCwgIC0z
NDgsICAyMzU1LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgIC00MSwgICAgLTIsCisgICAgLTM0OCwg
ICAtMzAsICAtMzQ4LCAgMjIxOSwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIDIyMTksICAgIDgwLCAg
ICA4MCwKKyAgICAtMzQ4LCAgIC0xNywgICAtNzUsICAgLTY1LCAgLTM0OCwgIDIyMTksICAtMzQ4
LCAgLTM0OCwgIDEyMzMsICAtMzQ4LAorICAgIC0zNDgsICAgLTE1LCAgMjIxOSwgIC0zNDgsICAg
LTEwLCAgIC04NSwgIC0zNDgsICAgMzg5LCAgLTM0OCwgIC0zNDgsCisgICAgLTM0OCwgIC0zNDgs
ICAgICAxLCAgIC00OSwgIC0zNDgsICAxMzMxLCAgMTYyMiwgIC0zNDgsICAtMzQ4LCAgMjIxOSwK
KyAgICAgIDgwLCAgMTgxNCwgIC0zNDgsICAgIDE5LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0
OCwgIC0zNDgsICAxNjIyLAorICAgIDE2MjIsICAxNjIyLCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAg
LTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgICAtMjQsCisgICAgLTM0OCwgIC0zNDgsICAtMzQ4
LCAgICAzNywgICAtMjIsICAxNzE3LCAgICA2NywgIC0zNDgsICAxNjIyLCAgICAzNCwKKyAgICAg
IDE0LCAgICA3NiwgICAtNDYsICAgIDcyLCAgICA1MSwgICAgNzUsICAgIDc4LCAgIDExMiwgICAx
MTMsICAgLTc3LAorICAgIC0zNDgsICAgIDk4LCAgLTM0OCwgIC0zNDgsICAxODk5LCAgMjIxOSwg
ICAgODQsICAtMzQ4LCAgICAtMiwgICAgOTQsCisgICAgICA5NywgIC0zNDgsICAgMTA4LCAgIDEw
OSwgICAxMDAsICAxNDI5LCAgIDExNCwgIDE2MjIsICAgMTA0LCAgIDExNSwKKyAgICAgMTExLCAg
LTM0OCwgIC0zNDgsICAgMTkwLCAgLTM0OCwgIC0zNDgsICAgLTE5LCAgLTM0OCwgICAtODksICAg
MTE3LAorICAgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAgNTA1LCAgLTM0OCwgIC0zNDgs
ICAtMzQ4LCAgLTM0OCwgIC0zNDgsCisgICAgLTM0OCwgIDE2MjIsICAxNTI0LCAgMTYyMiwgICAx
MTYsICAgMTEwLCAgLTM0OCwgIC0zNDgsICAgIDgwLCAgIDExOCwKKyAgICAgIDI3LCAgLTM0OCwg
ICAtNTgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAgIC01LCAgLTM0OCwgIC0zNDgsICAxNjIyLAor
ICAgIDIyODcsICAtMzQ4LCAgLTM0OCwgIDE2MjIsICAgMTIxLCAgLTM0OCwgIC0zNDgsICAtMzQ4
LCAgMTYyMiwgIDE2MjIsCisgICAgMTYyMiwgIDE2MjIsICAxNjIyLCAgMTYyMiwgIDE2MjIsICAx
NjIyLCAgMTYyMiwgIDE2MjIsICAxNjIyLCAgMTYyMiwKKyAgICAxNjIyLCAgMTYyMiwgIDE2MjIs
ICAxNjIyLCAgMTYyMiwgIDE2MjIsICAxNjIyLCAgMTYyMiwgIC0zNDgsICAtMzQ4LAorICAgIDE5
ODQsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgICAxMTksICAtMzQ4LCAgMTYy
MiwgIC0zNDgsCisgICAgLTM0OCwgICAgMzIsICAxNjIyLCAgIDEyMiwgIC0zNDgsICAtMzQ4LCAg
LTM0OCwgICA2MjEsICAtMzQ4LCAgLTM0OCwKKyAgICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4
LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAxNjIyLAorICAgIDE2MjIsICAt
MzQ4LCAgLTM0OCwgIC0zNDgsICAgMTI0LCAgIDEyMCwgICAxMjksICAtMzQ4LCAgMTYyMiwgICAx
MjUsCisgICAgICAzMywgIDE2MjIsICAgIDgwLCAgLTM0OCwgICAtODcsICAtMzQ4LCAgLTM0OCwg
ICAxMzAsICAgMTI4LCAgLTM0OCwKKyAgICAgMTM2LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0
OCwgIC0zNDgsICAgIDM0LCAgICAzNCwgICAgMTQsICAgIDE0LAorICAgICAgNzYsICAgIDc2LCAg
ICA3NiwgICAgNzYsICAgLTQ2LCAgIC00NiwgICAgNzIsICAgIDUxLCAgICA3NSwgICAgNzgsCisg
ICAgIDExMiwgICAxMTMsICAgIDU0LCAgLTM0OCwgICAxNjYsICAgLTMwLCAgIDg1MywgICA5Njks
ICAgIC0zLCAgLTM0OCwKKyAgICAgIC0xLCAgLTM0OCwgIDEwNjYsICAgNjIxLCAgLTM0OCwgIC0z
NDgsICAtMzQ4LCAgMTYyMiwgICAxMzIsICAtMzQ4LAorICAgIDE2MjIsICAtMzQ4LCAgIDEzNSwg
IC0zNDgsICAxNjIyLCAgLTM0OCwgIC0zNDgsICAxNjIyLCAgIDEzOSwgIC0zNDgsCisgICAgLTM0
OCwgIC0zNDgsICAtMzQ4LCAgMTA2NiwgICAxMTksICAtMzQ4LCAgIDEyOCwgICAgODAsICAyMjE5
LCAgIDE0MSwKKyAgICAgMTQwLCAgLTM0OCwgIDE2MjIsICAtMzQ4LCAgLTM0OCwgICAxNDUsICAt
MzQ4LCAgMTYyMiwgIC0zNDgsICAgMTM0LAorICAgICAxNDYsICAgMjM2LCAgLTM0OCwgICAxNDcs
ICAgMTQzLCAgIDczNywgIC0zNDgsICAtMzQ4LCAgIDE0OCwgICAgMTcsCisgICAgMTYyMiwgICA3
MzcsICAgMTE5LCAgLTM0OCwgIDE2MjIsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgIDE0
OSwKKyAgICAgMTI4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OAogfTsKIAogICAvKiBZWURF
RkFDVFtTVEFURS1OVU1dIC0tIERlZmF1bHQgcmVkdWN0aW9uIG51bWJlciBpbiBzdGF0ZSBTVEFU
RS1OVU0uCkBAIC04NzUsNzggKzg5Myw3NyBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDE2IHl5
cGFjdFtdID0KICAgICAgbWVhbnMgdGhlIGRlZmF1bHQgaXMgYW4gZXJyb3IuICAqLwogc3RhdGlj
IGNvbnN0IHl5dHlwZV91aW50MTYgeXlkZWZhY3RbXSA9CiB7Ci0gICAgICAgMCwgICAgIDAsICAg
MTQ4LCAgIDE0OSwgICAxNTAsICAgICAwLCAgIDEzMCwgICAxNDAsICAgMTY0LCAgIDE2MSwKLSAg
ICAgMTYyLCAgIDE2MywgICAxNjgsICAgMTY5LCAgIDE3MCwgICAxNzEsICAgMTcyLCAgIDE3Mywg
ICAxNjUsICAgMTY2LAotICAgICAxNjcsICAgMTc0LCAgIDE3NSwgICAxNzYsICAgMTc3LCAgIDE3
OCwgICAxNzksICAgMTQxLCAgIDE0MiwgICAxNDUsCi0gICAgIDEzMSwgICAxODAsICAgMTgxLCAg
IDE4MiwgICAxODMsICAgMTg0LCAgIDE4NSwgICAgIDAsICAgMTI4LCAgIDEyNywKLSAgICAgICAw
LCAgIDE2MCwgICAxODYsICAgMTg4LCAgIDIwMSwgICAyMDIsICAgMTg5LCAgIDE5MCwgICAxOTEs
ICAgMTkyLAotICAgICAxOTMsICAgMTk0LCAgIDE5NSwgICAxOTYsICAgMTk3LCAgIDE4NywgICAx
OTgsICAgMTk5LCAgIDIwMCwgICAgIDAsCi0gICAgIDIwNCwgICAyNzMsICAgMjc0LCAgICAgMCwg
ICAgOTcsICAgMTA3LCAgICAgMCwgICAxMTIsICAgMTE4LCAgIDEzNSwKLSAgICAgICAwLCAgIDEz
MywgICAxMjUsICAgICAwLCAgIDEzNiwgICAxNDYsICAgMTU3LCAgIDIwMywgICAgIDAsICAgMjcw
LAotICAgICAyNzIsICAgMTMyLCAgIDEyNCwgICAgIDAsICAgMTM4LCAgICAgMCwgICAxNDMsICAg
MTQ0LCAgICAgMiwgICAgIDMsCi0gICAgIDIwNywgICAgIDAsICAgICAwLCAgICA4OCwgICAgIDAs
ICAgIDk1LCAgIDEwNywgICAxMjksICAgMTA4LCAgIDEwOSwKLSAgICAgMTEwLCAgICA5OCwgICAg
IDAsICAgMTA3LCAgICAgMCwgICAgODksICAgICAyLCAgIDExOSwgICAxMzQsICAgICAwLAotICAg
ICAgOTQsICAgICAwLCAgIDEyNiwgICAxNDcsICAgMTM3LCAgICAgMCwgICAgIDEsICAgMjcxLCAg
IDEzOSwgICAgIDAsCi0gICAgICAgMCwgICAyMDUsICAgMTU0LCAgICAgMCwgICAxNTIsICAgICAw
LCAgIDI3NSwgICAgOTksICAgMTA0LCAgIDEwNiwKLSAgICAgMTExLCAgICAgMCwgICAxMTMsICAg
MTAwLCAgICAgMCwgICAgIDAsICAgIDg3LCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAs
ICAgMjA5LCAgICAgNCwgICAgIDgsICAgICA2LCAgICAgNywgICAgIDksICAgIDMwLCAgICAgMCwg
ICAgIDAsCi0gICAgICAgMCwgICAxNTgsICAgIDM3LCAgICAzNiwgICAgMzgsICAgIDM1LCAgICAg
NSwgICAgMTEsICAgIDMxLCAgICAxMywKLSAgICAgIDE4LCAgICAxOSwgICAgIDAsICAgICAwLCAg
ICAyNCwgICAgIDAsICAgIDM5LCAgICAgMCwgICAgNDMsICAgIDQ2LAotICAgICAgNDksICAgIDU0
LCAgICA1NywgICAgNTksICAgIDYxLCAgICA2MywgICAgNjUsICAgIDY3LCAgICA2OSwgICAgODYs
Ci0gICAgICAgMCwgICAgMjgsICAgIDkwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE1MSwgICAg
IDAsICAgICAwLCAgICAgMCwKLSAgICAgMjU1LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMjI5LAotICAgICAyMzgsICAgMjQyLCAgICAz
OSwgICAgNzEsICAgIDg0LCAgICAgMCwgICAyMTgsICAgICAwLCAgIDE0NiwgICAyMjEsCi0gICAg
IDI0MCwgICAyMjAsICAgMjE5LCAgICAgMCwgICAyMjIsICAgMjIzLCAgIDIyNCwgICAyMjUsICAg
MjI2LCAgIDIyNywKLSAgICAgMTAxLCAgIDEwMywgICAxMDUsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgIDIxNywgICAxMjMsICAgICAwLAotICAgICAyMTUsICAgICAwLCAgIDIxMywgICAg
IDAsICAgMjEwLCAgICAzMiwgICAgMzMsICAgICAwLCAgICAxNSwgICAgMTYsCi0gICAgICAgMCwg
ICAgIDAsICAgIDIyLCAgICAyMSwgICAgIDAsICAgMTYwLCAgICAyNSwgICAgMjcsICAgIDM0LCAg
ICAgMCwKKyAgICAgICAwLCAgIDEyNywgICAxNDIsICAgMTQzLCAgIDE0NCwgICAgIDAsICAgMTMz
LCAgIDEzNSwgICAxNTgsICAgMTU1LAorICAgICAxNTYsICAgMTU3LCAgIDE2MiwgICAxNjMsICAg
MTY0LCAgIDE2NSwgICAxNjYsICAgMTY3LCAgIDE1OSwgICAxNjAsCisgICAgIDE2MSwgICAxNjgs
ICAgMTY5LCAgIDE3MCwgICAxNzEsICAgMTcyLCAgIDE3MywgICAxMzYsICAgMTM3LCAgIDEzOCwK
KyAgICAgMTQwLCAgIDEzNCwgICAxNzQsICAgMTc1LCAgIDE3NiwgICAxNzcsICAgMTc4LCAgIDE3
OSwgICAxMzksICAgMTI0LAorICAgICAxMjMsICAgICAwLCAgIDE1NCwgICAxODAsICAgMTgyLCAg
IDE5NSwgICAxOTYsICAgMTgzLCAgIDE4NCwgICAxODUsCisgICAgIDE4NiwgICAxODcsICAgMTg4
LCAgIDE4OSwgICAxOTAsICAgMTkxLCAgIDE4MSwgICAxOTIsICAgMTkzLCAgIDE5NCwKKyAgICAg
ICAwLCAgIDE5OCwgICAyNjcsICAgMjY4LCAgICAgMCwgICAgOTgsICAgIDk3LCAgICAgMCwgICAx
MDksICAgMTE1LAorICAgICAxMzEsICAgICAwLCAgIDEzMiwgICAxMjUsICAgMTI4LCAgIDEyMSwg
ICAxMzAsICAgMTI5LCAgIDE0MSwgICAxNTEsCisgICAgIDE5NywgICAgIDAsICAgMjY0LCAgIDI2
NiwgICAgIDAsICAgICAyLCAgICAgMywgICAyMDEsICAgICAwLCAgICAgMCwKKyAgICAgIDg4LCAg
ICAgMCwgICAgOTYsICAgICAwLCAgIDEwNSwgICAgOTksICAgMTA3LCAgICAgMCwgICAxMDgsICAg
ICAwLAorICAgICAgODksICAgICAyLCAgIDExNiwgICAgIDAsICAgIDk0LCAgICAgMCwgICAxMjYs
ICAgMTIyLCAgICAgMCwgICAgIDEsCisgICAgIDI2NSwgICAgIDAsICAgICAwLCAgIDE5OSwgICAx
NDgsICAgICAwLCAgIDE0NiwgICAgIDAsICAgMjY5LCAgIDEwMCwKKyAgICAgMTA0LCAgIDEwNiwg
ICAxMDIsICAgMTEwLCAgIDEwMSwgICAgIDAsICAgICAwLCAgICA4NywgICAgOTUsICAgICAwLAor
ICAgICAgIDAsICAgICAwLCAgIDIwMywgICAgIDQsICAgICA4LCAgICAgNiwgICAgIDcsICAgICA5
LCAgICAzMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgMTUyLCAgICAzNywgICAgMzYsICAg
IDM4LCAgICAzNSwgICAgIDUsICAgIDExLCAgICAzMSwKKyAgICAgIDEzLCAgICAxOCwgICAgMTks
ICAgICAwLCAgICAgMCwgICAgMjQsICAgICAwLCAgICAzOSwgICAgIDAsICAgIDQzLAorICAgICAg
NDYsICAgIDQ5LCAgICA1NCwgICAgNTcsICAgIDU5LCAgICA2MSwgICAgNjMsICAgIDY1LCAgICA2
NywgICAgNjksCisgICAgICA4NiwgICAgIDAsICAgIDI4LCAgICA5MCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAxNDUsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgIDI0OSwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAyMjMsICAg
MjMyLCAgIDIzNiwgICAgMzksICAgIDcxLCAgICA4NCwgICAgIDAsICAgMjEyLCAgICAgMCwgICAx
NDEsCisgICAgIDIxNSwgICAyMzQsICAgMjE0LCAgIDIxMywgICAgIDAsICAgMjE2LCAgIDIxNywg
ICAyMTgsICAgMjE5LCAgIDIyMCwKKyAgICAgMjIxLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgMjExLCAgIDEyMCwgICAgIDAsICAgMjA5LAorICAgICAgIDAsICAgMjA3LCAg
ICAgMCwgICAyMDQsICAgIDMyLCAgICAzMywgICAgIDAsICAgIDE1LCAgICAxNiwgICAgIDAsCisg
ICAgICAgMCwgICAgMjIsICAgIDIxLCAgICAgMCwgICAxNTQsICAgIDI1LCAgICAyNywgICAgMzQs
ICAgICAwLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNTksCi0gICAgIDIw
OCwgICAgIDAsICAgMTU1LCAgIDE1NiwgICAxNTMsICAgMjY2LCAgIDI2NSwgICAyMzYsICAgMjU3
LCAgICAgMCwKLSAgICAgMjY5LCAgIDI2NywgICAgIDAsICAgICAwLCAgICAgMCwgICAyNTAsICAg
MjUzLCAgIDIyOCwgICAgIDAsICAgIDc0LAotICAgICAgNzUsICAgIDc3LCAgICA3NiwgICAgNzks
ICAgIDgwLCAgICA4MSwgICAgODIsICAgIDgzLCAgICA3OCwgICAgNzMsCi0gICAgICAgMCwgICAg
IDAsICAgMjQzLCAgIDIzOSwgICAyNDEsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTE3LCAgICAg
MCwKLSAgICAgMTIwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDIxMSwgICAgIDAsICAgIDkxLCAg
ICAxMCwgICAgIDAsICAgIDE3LAotICAgICAgMjksICAgIDE0LCAgICAyMCwgICAgMjYsICAgIDQw
LCAgICA0MSwgICAgNDIsICAgIDQ1LCAgICA0NCwgICAgNDcsCi0gICAgICA0OCwgICAgNTIsICAg
IDUzLCAgICA1MCwgICAgNTEsICAgIDU1LCAgICA1NiwgICAgNTgsICAgIDYwLCAgICA2MiwKLSAg
ICAgIDY0LCAgICA2NiwgICAgNjgsICAgICAwLCAgIDIwNiwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLAotICAgICAyNjgsICAgICAwLCAgIDI0OSwgICAgIDAsICAgMjMwLCAgICA3
MiwgICAgODUsICAgICAwLCAgICAgMCwgICAxMTQsCi0gICAgIDEyMSwgICAgIDAsICAgMjEyLCAg
ICAgMCwgICAyMTQsICAgICAwLCAgICA5MiwgICAgMTIsICAgICAwLCAgICAgMCwKLSAgICAgMjM1
LCAgIDIzNywgICAyNjAsICAgMjU5LCAgIDI2MiwgICAyMzYsICAgMjQ3LCAgIDI1MSwgICAgIDAs
ICAgICAwLAotICAgICAgIDAsICAgICAwLCAgIDEwMiwgICAxMTUsICAgICAwLCAgIDEyMiwgICAy
MTYsICAgICAwLCAgICA3MCwgICAgIDAsCi0gICAgIDI2MSwgICAgIDAsICAgICAwLCAgIDI0Niwg
ICAyNDQsICAgICAwLCAgICAgMCwgICAgIDAsICAgMjMxLCAgIDExNiwKLSAgICAgICAwLCAgICAg
MCwgICAyNjMsICAgICAwLCAgIDIzNiwgICAyNDgsICAgICAwLCAgIDIzMywgICAyNTQsICAgMjMy
LAotICAgICAgOTMsICAgICAwLCAgIDI2NCwgICAyNTgsICAgMjQ1LCAgIDI1MiwgICAyNTYKKyAg
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAxNTMsICAgMjAyLAorICAgICAgIDAsICAgMTQ5LCAgIDE1MCwgICAxNDcsICAgMjYwLCAgIDI1
OSwgICAyMzAsICAgMjUxLCAgICAgMCwgICAyNjMsCisgICAgIDI2MSwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAyNDQsICAgMjQ3LCAgIDIyMiwgICAgIDAsICAgIDc0LCAgICA3NSwKKyAgICAgIDc3
LCAgICA3NiwgICAgNzksICAgIDgwLCAgICA4MSwgICAgODIsICAgIDgzLCAgICA3OCwgICAgNzMs
ICAgICAwLAorICAgICAgIDAsICAgMjM3LCAgIDIzMywgICAyMzUsICAgICAwLCAgICAgMCwgICAg
IDAsICAgMTE0LCAgICAgMCwgICAxMTcsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgIDIwNSwg
ICAgIDAsICAgIDkxLCAgICAxMCwgICAgIDAsICAgIDE3LCAgICAyOSwKKyAgICAgIDE0LCAgICAy
MCwgICAgMjYsICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQ1LCAgICA0NCwgICAgNDcsICAgIDQ4
LAorICAgICAgNTIsICAgIDUzLCAgICA1MCwgICAgNTEsICAgIDU1LCAgICA1NiwgICAgNTgsICAg
IDYwLCAgICA2MiwgICAgNjQsCisgICAgICA2NiwgICAgNjgsICAgICAwLCAgIDIwMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDI2MiwKKyAgICAgICAwLCAgIDI0MywgICAg
IDAsICAgMjI0LCAgICA3MiwgICAgODUsICAgMTAzLCAgICAgMCwgICAxMTEsICAgMTE4LAorICAg
ICAgIDAsICAgMjA2LCAgICAgMCwgICAyMDgsICAgICAwLCAgICA5MiwgICAgMTIsICAgICAwLCAg
ICAgMCwgICAyMjksCisgICAgIDIzMSwgICAyNTQsICAgMjUzLCAgIDI1NiwgICAyMzAsICAgMjQx
LCAgIDI0NSwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgIDExMiwgICAgIDAsICAg
MTE5LCAgIDIxMCwgICAgIDAsICAgIDcwLCAgICAgMCwgICAyNTUsICAgICAwLAorICAgICAgIDAs
ICAgMjQwLCAgIDIzOCwgICAgIDAsICAgICAwLCAgICAgMCwgICAyMjUsICAgMTEzLCAgICAgMCwg
ICAgIDAsCisgICAgIDI1NywgICAgIDAsICAgMjMwLCAgIDI0MiwgICAgIDAsICAgMjI3LCAgIDI0
OCwgICAyMjYsICAgIDkzLCAgICAgMCwKKyAgICAgMjU4LCAgIDI1MiwgICAyMzksICAgMjQ2LCAg
IDI1MAogfTsKIAogICAvKiBZWVBHT1RPW05URVJNLU5VTV0uICAqLwogc3RhdGljIGNvbnN0IHl5
dHlwZV9pbnQxNiB5eXBnb3RvW10gPQogewotICAgIC0zNjEsICAgLTM5LCAgLTM2MSwgIC0zNjEs
ICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgICA3MywgIC0zNjEsCi0gICAgLTM2MSwgIC0z
NjEsICAtMzYxLCAgLTEwNywgIC0zNjEsICAgLTE1LCAgIC0yMCwgICAtNjcsICAgLTE5LCAgICA1
MywKLSAgICAgIDU0LCAgICA1NSwgICAgNTEsICAgIDU3LCAgICA1OCwgIC0zNjEsICAtMTEwLCAg
LTEzMiwgIC0zNjEsICAtMTQ2LAotICAgIC0xMjUsICAtMzYxLCAgICAgNiwgICAgMTIsICAtMzYx
LCAgLTM2MSwgIC0zNjEsICAgMTkwLCAgIDIyOCwgICAyMTcsCi0gICAgIDE5NSwgIC0zNjEsICAt
MzYxLCAgLTMzNiwgICAgMjUsICAtMzYxLCAgLTEwNCwgICAgMjcsICAgLTU3LCAgIDMyMiwKLSAg
ICAtMzYxLCAgLTM2MSwgICAxNDEsICAgICAwLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwg
IC0xMDksICAtMTMwLAotICAgICAxMDAsICAgIDE5LCAgLTE4NSwgICAtMTcsICAtMTkzLCAgLTMx
MCwgICAtNjUsICAtMzYxLCAgLTM2MSwgICAtNzAsCi0gICAgLTM2MCwgIC0zNjEsICAtMzYxLCAg
IC05MiwgICAgNDYsICAgLTEzLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwKLSAgICAtMzYx
LCAgIC0zOCwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEs
ICAtMzYxLAotICAgIC0zNjEsICAgMjU5LCAgLTM2MSwgIC0zNjEKKyAgICAtMzQ4LCAgIC00MCwg
IC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgICAgMjgsICAtMzQ4LAor
ICAgIC0zNDgsICAtMzQ4LCAgLTM0OCwgICAtNjAsICAtMzQ4LCAgIC03MiwgICAtNzEsICAtMTI3
LCAgIC01MiwgICAgIDgsCisgICAgICAxMiwgICAgMTYsICAgICA3LCAgICAxMCwgICAgMTEsICAt
MzQ4LCAgIC04NiwgIC0xMjIsICAtMzQ4LCAgLTEzMywKKyAgICAgLTc4LCAgLTM0OCwgICAgIDks
ICAgIDEzLCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgIDE2OSwgICAxNzcsICAgMTc0LAorICAgIC0z
NDgsICAtMzQ4LCAgLTMyNiwgIC0zNDgsICAgLTU5LCAgLTM0OCwgICAtNjksICAtMzQ4LCAgIC02
MSwgICAyNjgsCisgICAgLTM0OCwgIC0zNDgsICAgIDk2LCAgICAgMCwgIC0zNDgsICAtMzQ4LCAg
LTM0OCwgIC0zNDgsICAtMTAwLCAgLTEyMCwKKyAgICAgIDU3LCAgIC0yMywgIC0xNDAsICAgLTU3
LCAgLTE5OCwgIC0zMjIsICAtMTA1LCAgLTM0OCwgIC0zNDgsICAtMTEwLAorICAgIC0zNDcsICAt
MzQ4LCAgLTM0OCwgICAtODgsICAgICA1LCAgIC00MiwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0z
NDgsCisgICAgLTM0OCwgICAtNjcsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwg
IC0zNDgsICAtMzQ4LCAgLTM0OCwKKyAgICAtMzQ4LCAgIDIxNiwgIC0zNDgsICAtMzQ4CiB9Owog
CiAgIC8qIFlZREVGR09UT1tOVEVSTS1OVU1dLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50
MTYgeXlkZWZnb3RvW10gPQogewotICAgICAgLTEsICAgMjMwLCAgIDE1NiwgICAxNTcsICAgMTU4
LCAgIDMxOCwgICAxNTksICAgMTYwLCAgIDE2MSwgICAxNjIsCi0gICAgIDE2MywgICAxNjQsICAg
MTY1LCAgIDIwMiwgICAxNjcsICAgMTY4LCAgIDE2OSwgICAxNzAsICAgMTcxLCAgIDE3MiwKLSAg
ICAgMTczLCAgIDE3NCwgICAxNzUsICAgMTc2LCAgIDE3NywgICAxNzgsICAgMjAzLCAgIDIwNCwg
ICAzMDAsICAgMjA1LAotICAgICAxODAsICAgMTExLCAgIDIwNiwgICAyMDcsICAgIDYzLCAgICA2
NCwgICAgNjUsICAgMTI4LCAgIDEwMSwgICAxMDIsCi0gICAgIDEyOSwgICAgNjYsICAgIDY3LCAg
ICA2OCwgICAgNjksICAgMTAzLCAgICA3MCwgICAgNzEsICAgIDcyLCAgICA3MywKLSAgICAgIDc0
LCAgIDEyMywgICAxMjQsICAgMTgxLCAgICA3NiwgICAgNzcsICAgMTg0LCAgIDEyMCwgICAxNDAs
ICAgMTQxLAotICAgICAyMzEsICAgMjMyLCAgIDIyOCwgICAyMDksICAgMjEwLCAgIDIxMSwgICAy
MTIsICAgMjg4LCAgIDM4MSwgICA0MDgsCi0gICAgIDM0NSwgICAzNDYsICAgMzQ3LCAgIDQwOSwg
ICAyMTMsICAgMjE0LCAgIDIxNSwgICAzOTQsICAgMjE2LCAgIDM5NSwKLSAgICAgMjE3LCAgIDM4
MCwgICAyMTgsICAgMzUzLCAgIDI3NywgICAzNDgsICAgMzc0LCAgIDM5MSwgICAzOTIsICAgMjE5
LAotICAgICAgNzgsICAgIDc5LCAgICA4MCwgICAgOTQKKyAgICAgIC0xLCAgIDIxOSwgICAxNDcs
ICAgMTQ4LCAgIDE0OSwgICAzMDcsICAgMTUwLCAgIDE1MSwgICAxNTIsICAgMTUzLAorICAgICAx
NTQsICAgMTU1LCAgIDE1NiwgICAxOTMsICAgMTU4LCAgIDE1OSwgICAxNjAsICAgMTYxLCAgIDE2
MiwgICAxNjMsCisgICAgIDE2NCwgICAxNjUsICAgMTY2LCAgIDE2NywgICAxNjgsICAgMTY5LCAg
IDE5NCwgICAxOTUsICAgMjg5LCAgIDE5NiwKKyAgICAgMTcxLCAgIDEwNSwgICAxOTcsICAgMTk4
LCAgICA2NCwgICAgNjUsICAgIDY2LCAgICA5NCwgICAgOTUsICAgIDk2LAorICAgICAgNjcsICAg
IDY4LCAgICA2OSwgICAgNzAsICAgIDcxLCAgICA3MiwgICAgNzMsICAgIDc0LCAgICA3NSwgICAg
NzYsCisgICAgICA3NywgICAxMTUsICAgMTE2LCAgIDE3MiwgICAgNzksICAgIDgwLCAgIDE3NSwg
ICAxMTIsICAgMTMxLCAgIDEzMiwKKyAgICAgMjIwLCAgIDIyMSwgICAyMTcsICAgMjAwLCAgIDIw
MSwgICAyMDIsICAgMjAzLCAgIDI3NywgICAzNzAsICAgMzk2LAorICAgICAzMzQsICAgMzM1LCAg
IDMzNiwgICAzOTcsICAgMjA0LCAgIDIwNSwgICAyMDYsICAgMzgyLCAgIDIwNywgICAzODMsCisg
ICAgIDIwOCwgICAzNjksICAgMjA5LCAgIDM0MiwgICAyNjYsICAgMzM3LCAgIDM2MywgICAzNzks
ICAgMzgwLCAgIDIxMCwKKyAgICAgIDgxLCAgICA4MiwgICAgODMsICAgIDkxCiB9OwogCiAgIC8q
IFlZVEFCTEVbWVlQQUNUW1NUQVRFLU5VTV1dIC0tIFdoYXQgdG8gZG8gaW4gc3RhdGUgU1RBVEUt
TlVNLiAgSWYKQEAgLTk1NCwzODcgKzk3MSwzNzggQEAgc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQx
NiB5eWRlZmdvdG9bXSA9CiAgICAgIG51bWJlciBpcyB0aGUgb3Bwb3NpdGUuICBJZiBZWVRBQkxF
X05JTkYsIHN5bnRheCBlcnJvci4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDE2IHl5dGFi
bGVbXSA9CiB7Ci0gICAgICA3NSwgICAgOTEsICAgMTI2LCAgIDIyNywgICAyMzcsICAgMTc5LCAg
ICA2MSwgICAxMzgsICAgMTY2LCAgIDIyNiwKLSAgICAgMjM0LCAgIDE4MywgICAgNjIsICAgMTEy
LCAgIDMxNSwgICAzOTMsICAgMTM4LCAgIDM3OCwgICAgOTcsICAgMjUyLAotICAgICAzMDQsICAg
MjUzLCAgICA5MiwgICAyNjcsICAgMTc5LCAgICAgNywgICAgODMsICAgMTY2LCAgICA4NCwgICAx
MDcsCi0gICAgICA4OCwgICAgODksICAgMjQ2LCAgIDI1NiwgICAyNTcsICAgMzY1LCAgIDEzOCwg
ICAzNzEsICAgMzc4LCAgIDMwOCwKLSAgICAgMTM0LCAgIDIzNSwgICAyMzYsICAgMzY2LCAgIDQx
NCwgICAxMzAsICAgIDkzLCAgIDEzNSwgICAyODIsICAgIDk4LAotICAgICAgOTksICAgMTAwLCAg
IDMxNiwgICAyMzQsICAgMTM5LCAgIDE4NiwgICAgMjcsICAgIDI4LCAgIDI2OCwgICAgMjksCi0g
ICAgIDI0OCwgICAxODcsICAgIDkwLCAgIDEzOSwgICAgOTUsICAgMTMyLCAgICA5NiwgICAgMzcs
ICAgMjU4LCAgIDI1OSwKLSAgICAgIDc1LCAgIDI4NCwgICAgOTcsICAgMTEzLCAgIDEzMCwgICAy
NzEsICAgMjQzLCAgIDEyMSwgICAgNzUsICAgMTM4LAotICAgICAxMzgsICAgMjI5LCAgIDI0NCwg
ICAxMzksICAgIDYxLCAgIDExOSwgICAxNzksICAgNDA3LCAgIDIyMywgICAxNjYsCi0gICAgICA2
MiwgICAyMjAsICAgMjI3LCAgIDQwNywgICAzMTksICAgMjI0LCAgIDEwOCwgICAxMTUsICAgMzA3
LCAgIDEyMiwKLSAgICAgMzE3LCAgIDExNCwgICAgNzUsICAgIDk4LCAgICA5OSwgICAxMDAsICAg
MzAxLCAgIDIzOCwgICAyMzksICAgMzc1LAotICAgICAxMTgsICAgIDc1LCAgIDMyMywgICAxNzks
ICAgLTk2LCAgIDMwMSwgICAxNjYsICAgMTMzLCAgIDEwNCwgICAxMjUsCi0gICAgICA3NSwgICAx
MDUsICAgMzQzLCAgIDM3NiwgICAzNjAsICAgMjA4LCAgIDEzOSwgICAxMzksICAgMjQwLCAgIDMw
MSwKLSAgICAgMTg1LCAgICA3NSwgICAyNDEsICAgMzQ5LCAgICAgMiwgICAgIDMsICAgICA0LCAg
IDM1MSwgICAgNzUsICAgMTM2LAotICAgICAgNzUsICAgMjM0LCAgIDMyNCwgICAzMjUsICAgMzI2
LCAgIDE2NiwgICAxNjYsICAgMTY2LCAgIDE2NiwgICAxNjYsCi0gICAgIDE2NiwgICAxNjYsICAg
MTY2LCAgIDE2NiwgICAxNjYsICAgMTY2LCAgIDE2NiwgICAxNjYsICAgMTY2LCAgIDE2NiwKLSAg
ICAgMTY2LCAgIDMwNCwgICAgODMsICAgMzAxLCAgICA4NCwgICA0MTEsICAgMzAyLCAgIDEzOCwg
ICAzNTUsICAgMzU2LAotICAgICAxODIsICAgMzAxLCAgIDMxMywgICAzODMsICAgLTI5LCAgIDMx
NCwgICAzODUsICAgMjI3LCAgIDMwMSwgICAzMTMsCi0gICAgIDM1NywgICAzNTAsICAgMzYyLCAg
ICA3NSwgICAgNzUsICAgIDg2LCAgICA4NywgICAzNjMsICAgICA3LCAgIDMzMSwKLSAgICAgMzMy
LCAgIDMzMywgICAzMzQsICAgMTA2LCAgICA4OSwgICAxNzksICAgIDg4LCAgICA4OSwgICAxNjYs
ICAgMzk5LAotICAgICAyNjAsICAgMjYxLCAgIDE3OSwgICAyNzIsICAgMjczLCAgIDE2NiwgICAy
NDIsICAgMzc3LCAgICA5OCwgICAgOTksCi0gICAgIDEwMCwgICAyNTQsICAgMjU1LCAgIDIwOCwg
ICAxMzksICAgMjQ5LCAgIDI1MCwgICAyNTEsICAgMjQ3LCAgICAyNywKLSAgICAgIDI4LCAgIDQx
NSwgICAgMjksICAgIDgxLCAgIDMwMSwgICAzNjgsICAgMjI3LCAgIDI2MywgICAzNzcsICAgMjI3
LAotICAgICAgMzcsICAgIDM4LCAgICAzOSwgICAgIDcsICAgMzI5LCAgIDMzMCwgICAzODgsICAg
MzI3LCAgIDMyOCwgICAyNjQsCi0gICAgIDM4NywgICAzMzUsICAgMzM2LCAgIDQwMSwgICAyNjIs
ICAgMjY1LCAgIDI2NiwgICAyNjksICAgMjc1LCAgIDM3OSwKLSAgICAgMjc2LCAgIDI3OCwgICAy
MjcsICAgMjc5LCAgIDM3MCwgICAxNzksICAgNDEyLCAgIDI4MCwgICAxNjYsICAgMjgzLAotICAg
ICAyODUsICAgMjg2LCAgIC0yOCwgICAzMDksICAgIDI3LCAgICAyOCwgICAzMTAsICAgIDI5LCAg
ICA4MSwgICAyODcsCi0gICAgIDM3OSwgICAgNzUsICAgMzA1LCAgIDMxMiwgICAyMjcsICAgIDM3
LCAgICAzOCwgICAgMzksICAgMjg5LCAgIDI5MCwKLSAgICAgMjkxLCAgIDI5MiwgICAyOTMsICAg
Mjk0LCAgIDI5NSwgICAyOTYsICAgMjk3LCAgIDI5OCwgICAyMDgsICAtMjM0LAotICAgICAtMjMs
ICAgMzU4LCAgIDM1MiwgICAzNTksICAgMzY3LCAgIDM2MSwgICAtMzAsICAgMjk5LCAgIDM2OSwg
ICAzMDEsCi0gICAgICA4MiwgICAzODIsICAgMzg0LCAgIDM4NiwgICAzODksICAgNDAyLCAgIDM5
NywgICAzOTgsICAgNDAzLCAgIDQwMCwKLSAgICAgNDA0LCAgIDQxMCwgICAxOTksICAgNDE2LCAg
IDMyMiwgICAzMzcsICAgMzQwLCAgIDMzOCwgICA0MDYsICAgMzM5LAotICAgICAxMzEsICAgMjIx
LCAgIDExMiwgICAzNDEsICAgMTI3LCAgIDM0MiwgICAyMjIsICAgIDg1LCAgIDI3NCwgICAzMTEs
Ci0gICAgIDQwNSwgICAzNzIsICAgMzY0LCAgIDQxMywgICAzNTQsICAgMzczLCAgIDM5MCwgICAx
MTcsICAgICAwLCAgIDM5NiwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgIDIwOCwgICAyMDgsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAg
MCwgICAyMDgsICAgMjA4LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAg
ICA3OCwgICAgODgsICAgMTA2LCAgIDExOCwgICAyMTYsICAgIDk4LCAgIDI5MywgICAgOTcsICAg
MjI2LCAgICA2MiwKKyAgICAgMTA3LCAgIDIyMywgICAxNzQsICAgIDYzLCAgIDM2MCwgICAyNTYs
ICAgMzY3LCAgIDM4MSwgICAzMDQsICAgMzU0LAorICAgICAxNzcsICAgIDg5LCAgIDE3MCwgICAg
ODUsICAgIDg2LCAgICA5MCwgICAxNzgsICAgMzU1LCAgIDEwNiwgICAxMDIsCisgICAgICA5Mywg
ICAxMjUsICAgIDk4LCAgIDIzNSwgICAgOTcsICAgIDkyLCAgICA5OCwgICAzNjcsICAgMTI2LCAg
IDE3MCwKKyAgICAgMTA4LCAgIDI0NSwgICAyNDYsICAgMTI3LCAgIDEzMCwgICA0MDIsICAgMTI5
LCAgIDIxNSwgICAxNTcsICAgMTI4LAorICAgICAyNTcsICAgMTMwLCAgIDI3MSwgICAxMjksICAg
MjIzLCAgICA4NywgICAzMDUsICAgMjEyLCAgIDEyMiwgICAxMjMsCisgICAgIDEwNiwgICAyMjcs
ICAgMjI4LCAgIDM5NSwgICAyMTMsICAgMTU3LCAgICA3OCwgICAxMTMsICAgMjE4LCAgIDM5NSwK
KyAgICAgMTMwLCAgICA3OCwgICAxMjksICAgMjk3LCAgIDExNCwgICAyNjAsICAgMjQ3LCAgIDI0
OCwgICAxMTcsICAgMjI0LAorICAgICAyMjUsICAgIDc4LCAgIDIyOSwgICAyMzIsICAgMTExLCAg
ICA5OSwgICAyMzAsICAgMTI0LCAgIDEwMCwgICAyMzMsCisgICAgICA2MiwgICAyMTYsICAgMjkw
LCAgICA3OCwgICAgNjMsICAgMjkxLCAgIDMwOCwgICAgNzgsICAgMjM3LCAgIDE3MywKKyAgICAg
MzA2LCAgIDE3MCwgICAzNjQsICAgMTc2LCAgIDM2NSwgICAgNzgsICAgMjkwLCAgIDIxMSwgICAy
OTAsICAgMjczLAorICAgICAyOTAsICAgMzEyLCAgICA3OCwgICAxMzAsICAgMTMwLCAgIDEyOSwg
ICAxMjksICAgMTk5LCAgIDMyMCwgICAzMjEsCisgICAgIDMyMiwgICAzMjMsICAgMzk5LCAgIC0y
OSwgICAzMzIsICAgMTcwLCAgIDE3MCwgICAxNTcsICAgMjkwLCAgICA3OCwKKyAgICAgMjQxLCAg
ICA3OCwgICAyNDIsICAgMjk0LCAgIDI5NiwgICAzMzgsICAgMTAxLCAgICA4NiwgICAzMDIsICAg
MzQwLAorICAgICAyMjMsICAgMzAzLCAgIDIzMSwgICAyOTAsICAgMzAyLCAgIDI5MywgICAzMzks
ICAgMzUxLCAgICAgMiwgICAgIDMsCisgICAgICAgNCwgICAxNTcsICAgMTU3LCAgIDIzOCwgICAy
MzksICAgMjQwLCAgICA4NSwgICAgODYsICAgMzQ5LCAgIDI0MywKKyAgICAgMjQ0LCAgIDI0OSwg
ICAyNTAsICAgMjYxLCAgIDI2MiwgICAyOTAsICAgMzU3LCAgIDM0NCwgICAzNDUsICAgMzE2LAor
ICAgICAzMTcsICAgMjM2LCAgIDMxOCwgICAzMTksICAgIDc4LCAgICA3OCwgICAyMTYsICAgMjUx
LCAgIDMxMywgICAzMTQsCisgICAgIDMxNSwgICAxNTcsICAgMTU3LCAgIDE1NywgICAxNTcsICAg
MTU3LCAgIDE1NywgICAxNTcsICAgMTU3LCAgIDE1NywKKyAgICAgMTU3LCAgIDE1NywgICAxNTcs
ICAgMTU3LCAgIDE1NywgICAxNTcsICAgMTU3LCAgIDMyNCwgICAzMjUsICAgMTMwLAorICAgICAy
NTIsICAgMTI5LCAgIDI1MywgICAyNTQsICAgMTk5LCAgIDI1OCwgICAyNTUsICAgMzcxLCAgIDI2
NCwgICAzNjYsCisgICAgIDM3MywgICAyNjUsICAgMjY3LCAgIDI2OCwgICAyNjksICAgMTcwLCAg
IDI3NCwgICAyOTksICAgMjcyLCAgIDI3NSwKKyAgICAgMjc2LCAgIC0yOCwgICAzNTgsICAgMzUy
LCAgIDMwMSwgICAyMTYsICAgLTIzLCAgLTIyOCwgICAyMTYsICAgMjk4LAorICAgICAzNjYsICAg
MzQ2LCAgIDM4NywgICAzNDcsICAgMzQxLCAgIDM3NiwgICAzNDgsICAgMzU2LCAgIDM1MCwgICAy
OTAsCisgICAgIC0zMCwgICAxNTcsICAgMzc0LCAgIDM3NywgICAzODksICAgMzcyLCAgIDM4NSwg
ICAzNTksICAgMzkwLCAgIDM4NiwKKyAgICAgMjE2LCAgIDM5MSwgICAzODgsICAgMzkyLCAgIDQw
MywgICAxOTAsICAgMzk0LCAgIDQwMCwgICAzMTEsICAgMzI2LAorICAgICAgNzgsICAgMzI5LCAg
IDM5OCwgICA0MDQsICAgMzI3LCAgIDMzMCwgICAxMjAsICAgMzMxLCAgIDE3MCwgICAzMjgsCisg
ICAgIDExOSwgICAxMjEsICAgMjE2LCAgICA4NCwgICAyNjMsICAgMzAwLCAgIDM3NSwgICAxOTks
ICAgMzkzLCAgIDM1MywKKyAgICAgMzYxLCAgIDQwMSwgICAzNDMsICAgMzY4LCAgIDI3OCwgICAy
NzksICAgMjgwLCAgIDI4MSwgICAyODIsICAgMjgzLAorICAgICAyODQsICAgMjg1LCAgIDI4Niwg
ICAyODcsICAgMTU3LCAgIDM2MiwgICAzNzgsICAgMTEwLCAgICAgMCwgICAxMDYsCisgICAgICAg
MCwgICAgIDAsICAgICAwLCAgIDI4OCwgICAzNjgsICAgICAwLCAgICAgMCwgICAxMDcsICAgICAw
LCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgMzg0LCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE5OSwgICAxOTksICAgICAwLCAgICAg
MCwKKyAgICAgICAwLCAgICAgMCwgICAxOTksICAgMTk5LCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAg
ICAwLCAgIDE5OSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDc4LCAgICAgMCwKICAg
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMjA4LCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgNzUsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgMTk5LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAw
LCAgIDE5OSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcs
ICAgICA4LAorICAgICAgIDksICAgIDEwLCAgICAxMSwgICAxNzksICAgMTgwLCAgIDE4MSwgICAg
IDAsICAgMTgyLCAgIDE4MywgICAxODQsCisgICAgIDE4NSwgICAxODYsICAgMTg3LCAgIDE4OCwg
ICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywKKyAgICAgIDE4LCAgICAx
OSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3
LAorICAgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAg
IDM1LCAgICAzNiwgICAgMzcsCisgICAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIs
ICAgMTg5LCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwKKyAgICAgIDQ3LCAgICA0OCwgICAg
NDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgIDU2LAorICAg
ICAgIDAsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgIDEzMywgICAgNjEsICAgMTM0LCAg
IDEzNSwgICAxMzYsCisgICAgIDEzNywgICAxMzgsICAgICAwLCAgICAgMCwgICAxMzksICAgMTQw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMjA4LCAgICAgMCwg
ICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgIDIwOCwgICAgIDEsICAgICAyLCAgICAg
MywgICAgIDQsICAgICA1LCAgICAgNiwKLSAgICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAg
ICAxMSwgICAxODgsICAgMTg5LCAgIDE5MCwgICAgIDAsICAgMTkxLAotICAgICAxOTIsICAgMTkz
LCAgIDE5NCwgICAxOTUsICAgMTk2LCAgIDE5NywgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUs
CisgICAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0MSwgICAgIDAsICAgICAwLCAgICAgMCwgICAx
OTAsICAgMTkxLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgMTkyLCAgIDE0Mywg
ICAxNDQsICAgMTQ1LCAgIDE0NiwgICAgIDEsICAgICAyLAorICAgICAgIDMsICAgICA0LCAgICAg
NSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAxNzksCisgICAg
IDE4MCwgICAxODEsICAgICAwLCAgIDE4MiwgICAxODMsICAgMTg0LCAgIDE4NSwgICAxODYsICAg
MTg3LCAgIDE4OCwKKyAgICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcs
ICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLAorICAgICAgMjIsICAgIDIzLCAgICAyNCwgICAg
MjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsCisgICAgICAzMiwg
ICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAg
ICA0MSwKKyAgICAgIDQyLCAgIDE4OSwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3
LCAgICA0OCwgICAgNDksICAgIDUwLAorICAgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAg
IDU1LCAgICA1NiwgICAgIDAsICAgIDU3LCAgICA1OCwgICAgNTksCisgICAgICA2MCwgICAxMzMs
ICAgIDYxLCAgIDEzNCwgICAxMzUsICAgMTM2LCAgIDEzNywgICAxMzgsICAgICAwLCAgICAgMCwK
KyAgICAgMTM5LCAgIDE0MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDEsCisgICAgICAgMCwgICAgIDAsICAgICAw
LCAgIDE5MCwgICAyOTIsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE5MiwKKyAgICAg
MTQzLCAgIDE0NCwgICAxNDUsICAgMTQ2LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAg
IDUsICAgICA2LAorICAgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgIDE3OSwg
ICAxODAsICAgMTgxLCAgICAgMCwgICAxODIsCisgICAgIDE4MywgICAxODQsICAgMTg1LCAgIDE4
NiwgICAxODcsICAgMTg4LCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwKICAgICAgIDE2LCAg
ICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAg
IDI1LAotICAgICAgMjYsICAgIDI3LCAgICAyOCwgICAgIDAsICAgIDI5LCAgICAzMCwgICAgMzEs
ICAgIDMyLCAgICAzMywgICAgMzQsCi0gICAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAg
MzksICAgIDQwLCAgICA0MSwgICAxOTgsICAgIDQyLCAgICA0MywKLSAgICAgIDQ0LCAgICA0NSwg
ICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLAot
ICAgICAgNTQsICAgIDU1LCAgICAgMCwgICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTksICAgMTQy
LCAgICA2MCwgICAxNDMsCi0gICAgIDE0NCwgICAxNDUsICAgMTQ2LCAgIDE0NywgICAgIDAsICAg
ICAwLCAgIDE0OCwgICAxNDksICAgICAwLCAgICAgMCwKKyAgICAgIDI2LCAgICAyNywgICAgMjgs
ICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LAorICAgICAg
MzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgMTg5LCAgICA0
MywgICAgNDQsCisgICAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAg
ICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwKKyAgICAgIDU1LCAgICA1NiwgICAgIDAsICAgIDU3
LCAgICA1OCwgICAgNTksICAgIDYwLCAgIDEzMywgICAgNjEsICAgMTM0LAorICAgICAxMzUsICAg
MTM2LCAgIDEzNywgICAxMzgsICAgICAwLCAgICAgMCwgICAxMzksICAgMTQwLCAgICAgMCwgICAg
IDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAxNTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTk5LAotICAgICAyMDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgIDIwMSwgICAxNTIsICAgMTUzLCAgIDE1NCwgICAxNTUsCisg
ICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQxLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgIDE5MCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAx
OTIsICAgMTQzLCAgIDE0NCwgICAxNDUsICAgMTQ2LAogICAgICAgIDEsICAgICAyLCAgICAgMywg
ICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsCi0gICAgICAx
MSwgICAxODgsICAgMTg5LCAgIDE5MCwgICAgIDAsICAgMTkxLCAgIDE5MiwgICAxOTMsICAgMTk0
LCAgIDE5NSwKLSAgICAgMTk2LCAgIDE5NywgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAg
IDE2LCAgICAxNywgICAgMTgsICAgIDE5LAotICAgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMs
ICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgIDAsCi0gICAgICAyOSwgICAg
MzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAz
OCwKLSAgICAgIDM5LCAgICA0MCwgICAgNDEsICAgMTk4LCAgICA0MiwgICAgNDMsICAgIDQ0LCAg
ICA0NSwgICAgNDYsICAgIDQ3LAotICAgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUy
LCAgICA1MywgICAgNTQsICAgIDU1LCAgICAgMCwgICAgNTYsCi0gICAgICA1NywgICAgNTgsICAg
IDU5LCAgIDE0MiwgICAgNjAsICAgMTQzLCAgIDE0NCwgICAxNDUsICAgMTQ2LCAgIDE0NywKLSAg
ICAgICAwLCAgICAgMCwgICAxNDgsICAgMTQ5LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLAorICAgICAgMTEsICAgMTc5LCAgIDE4MCwgICAxODEsICAgICAwLCAgIDE4
MiwgICAxODMsICAgMTg0LCAgIDE4NSwgICAxODYsCisgICAgIDE4NywgICAxODgsICAgIDEyLCAg
ICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwKKyAgICAgIDIw
LCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgs
ICAgIDI5LAorICAgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAg
MzYsICAgIDM3LCAgICAzOCwgICAgMzksCisgICAgICA0MCwgICAgNDEsICAgIDQyLCAgIDE4OSwg
ICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwKKyAgICAgIDQ5LCAgICA1
MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAgIDAsICAgIDU3
LAorICAgICAgNTgsICAgIDU5LCAgICA2MCwgICAxMzMsICAgIDYxLCAgIDEzNCwgICAxMzUsICAg
MTM2LCAgIDEzNywgICAxMzgsCisgICAgICAgMCwgICAgIDAsICAgMTM5LCAgIDE0MCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAg
ICAgIDAsICAgMTUwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE5OSwgICAzMDMsICAgICAwLCAg
ICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAyMDEsICAgMTUyLCAgIDE1MywgICAxNTQsICAgMTU1
LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwKLSAgICAgICA1LCAgICAgNiwgICAgIDcsICAg
ICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgIDE4OCwgICAxODksICAgMTkwLAotICAgICAgIDAs
ICAgMTkxLCAgIDE5MiwgICAxOTMsICAgMTk0LCAgIDE5NSwgICAxOTYsICAgMTk3LCAgICAxMiwg
ICAgMTMsCisgICAgICAgMCwgICAxNDEsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTE3LCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgIDE5MiwgICAxNDMsICAgMTQ0LCAg
IDE0NSwgICAxNDYsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LAorICAgICAgIDUsICAgICA2
LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgMTc5LCAgIDE4MCwgICAxODEs
CisgICAgICAgMCwgICAxODIsICAgMTgzLCAgIDE4NCwgICAxODUsICAgMTg2LCAgIDE4NywgICAx
ODgsICAgIDEyLCAgICAxMywKICAgICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwg
ICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLAotICAgICAgMjQsICAgIDI1LCAgICAy
NiwgICAgMjcsICAgIDI4LCAgICAgMCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsCi0gICAg
ICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAg
IDQxLCAgIDE5OCwKLSAgICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcs
ICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLAotICAgICAgNTIsICAgIDUzLCAgICA1NCwgICAg
NTUsICAgICAwLCAgICA1NiwgICAgNTcsICAgIDU4LCAgICA1OSwgICAxNDIsCi0gICAgICA2MCwg
ICAxNDMsICAgMTQ0LCAgIDE0NSwgICAxNDYsICAgMTQ3LCAgICAgMCwgICAgIDAsICAgMTQ4LCAg
IDE0OSwKKyAgICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMw
LCAgICAzMSwgICAgMzIsICAgIDMzLAorICAgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAg
IDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAxODksCisgICAgICA0MywgICAgNDQs
ICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwK
KyAgICAgIDUzLCAgICA1NCwgICAgNTUsICAgIDU2LCAgICAgMCwgICAgNTcsICAgIDU4LCAgICA1
OSwgICAgNjAsICAgMTMzLAorICAgICAgNjEsICAgMTM0LCAgIDEzNSwgICAxMzYsICAgMTM3LCAg
IDEzOCwgICAgIDAsICAgICAwLCAgIDEzOSwgICAxNDAsCiAgICAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE1MCwgICAg
IDAsICAgICAwLAotICAgICAgIDAsICAgMTk5LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgMjAxLCAgIDE1MiwgICAxNTMsCi0gICAgIDE1NCwgICAxNTUsICAgICAxLCAgICAg
MiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwKLSAgICAgICA5LCAg
ICAxMCwgICAgMTEsICAgMTg4LCAgIDE4OSwgICAxOTAsICAgICAwLCAgIDE5MSwgICAxOTIsICAg
MTkzLAotICAgICAxOTQsICAgMTk1LCAgIDE5NiwgICAxOTcsICAgIDEyLCAgICAxMywgICAgMTQs
ICAgIDE1LCAgICAxNiwgICAgMTcsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAxNDEsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE5MiwgICAxNDMsICAgMTQ0LAor
ICAgICAxNDUsICAgMTQ2LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2
LCAgICAgNywgICAgIDgsCisgICAgICAgOSwgICAgMTAsICAgIDExLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LAogICAgICAg
MTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAy
NiwgICAgMjcsCi0gICAgICAyOCwgICAgIDAsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAg
ICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwKLSAgICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQw
LCAgICA0MSwgICAxOTgsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LAotICAgICAgNDYsICAg
IDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAg
NTUsCi0gICAgICAgMCwgICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTksICAgMTQyLCAgICA2MCwg
ICAxNDMsICAgMTQ0LCAgIDE0NSwKLSAgICAgMTQ2LCAgIDE0NywgICAgIDAsICAgICAwLCAgIDE0
OCwgICAxNDksICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0g
ICAgICAgMCwgICAgIDAsICAgICAwLCAgIDE1MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxMjUs
ICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgMjAxLCAgIDE1MiwgICAx
NTMsICAgMTU0LCAgIDE1NSwgICAgIDEsICAgICAyLAotICAgICAgIDMsICAgICA0LCAgICAgNSwg
ICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAxODgsCi0gICAgIDE4
OSwgICAxOTAsICAgICAwLCAgIDE5MSwgICAxOTIsICAgMTkzLCAgIDE5NCwgICAxOTUsICAgMTk2
LCAgIDE5NywKLSAgICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAg
IDE4LCAgICAxOSwgICAgMjAsICAgIDIxLAotICAgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUs
ICAgIDI2LCAgICAyNywgICAgMjgsICAgICAwLCAgICAyOSwgICAgMzAsCisgICAgICAyOCwgICAg
MjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAz
NywKKyAgICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgIDAsICAgIDQzLCAg
ICA0NCwgICAgNDUsICAgIDQ2LAorICAgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUx
LCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYsCisgICAgICAgMCwgICAgNTcsICAg
IDU4LCAgICA1OSwgICAgNjAsICAgMTMzLCAgICA2MSwgICAxMzQsICAgMTM1LCAgIDEzNiwKKyAg
ICAgMTM3LCAgIDEzOCwgICAgIDAsICAgICAwLCAgIDEzOSwgICAxNDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDEsCisgICAgICAgMiwgICAgIDMsICAgICA0LCAg
IDE0MSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwKKyAgICAgICAw
LCAgICAgMCwgICAgIDAsICAgMTkyLCAgIDE0MywgICAxNDQsICAgMTQ1LCAgIDE0NiwgICAgIDAs
ICAgICAwLAorICAgICAgIDAsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAg
MTcsICAgIDE4LCAgICAxOSwgICAgMjAsCisgICAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwg
ICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwKICAgICAgIDMxLCAgICAz
MiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQw
LAotICAgICAgNDEsICAgMTk4LCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAg
IDQ3LCAgICA0OCwgICAgNDksCi0gICAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQs
ICAgIDU1LCAgICAgMCwgICAgNTYsICAgIDU3LCAgICA1OCwKLSAgICAgIDU5LCAgIDE0MiwgICAg
NjAsICAgMTQzLCAgIDE0NCwgICAxNDUsICAgMTQ2LCAgIDE0NywgICAgIDAsICAgICAwLAotICAg
ICAxNDgsICAgMTQ5LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE1MCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMjAxLAotICAgICAxNTIs
ICAgMTUzLCAgIDE1NCwgICAxNTUsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwg
ICAgIDYsCi0gICAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LAotICAgICAgMTYsICAgIDE3
LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUs
Ci0gICAgICAyNiwgICAgMjcsICAgIDI4LCAgICAgMCwgICAgMjksICAgIDMwLCAgICAzMSwgICAg
MzIsICAgIDMzLCAgICAzNCwKLSAgICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwg
ICAgNDAsICAgIDQxLCAgICAgMCwgICAgNDIsICAgIDQzLAotICAgICAgNDQsICAgIDQ1LCAgICA0
NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsCi0gICAg
ICA1NCwgICAgNTUsICAgICAwLCAgICA1NiwgICAgNTcsICAgIDU4LCAgICA1OSwgICAxNDIsICAg
IDYwLCAgIDE0MywKLSAgICAgMTQ0LCAgIDE0NSwgICAxNDYsICAgMTQ3LCAgICAgMCwgICAgIDAs
ICAgMTQ4LCAgIDE0OSwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwg
ICAxMzcsICAgICAyLCAgICAgMywgICAgIDQsICAgMTUwLCAgICAgNiwgICAgIDcsICAgICA4LCAg
ICAgOSwKLSAgICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAwLCAgICAgMCwgICAyMDEsICAgMTUy
LCAgIDE1MywgICAxNTQsICAgMTU1LAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTIsICAg
IDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsCi0gICAgICAxOSwgICAgMjAs
ICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwK
LSAgICAgICAwLCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAz
NSwgICAgMzYsICAgIDM3LAotICAgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgICAwLCAg
ICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsCi0gICAgICA0NywgICAgNDgsICAgIDQ5
LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICAgMCwKLSAgICAg
IDU2LCAgICA1NywgICAgNTgsICAgIDU5LCAgIDE0MiwgICAgNjAsICAgMTQzLCAgIDE0NCwgICAx
NDUsICAgMTQ2LAotICAgICAxNDcsICAgICAwLCAgICAgMCwgICAxNDgsICAgMTQ5LCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDIsICAgICAzLCAgICAgNCwKLSAgICAgICAwLCAg
ICAgMCwgICAxNTAsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAgMCwgICAgIDAsICAg
ICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAxNTIsICAgMTUzLCAgIDE1NCwgICAxNTUs
ICAgICAwLCAgICAxMiwgICAgMTMsCisgICAgICA0MSwgICAgNDIsICAgICAwLCAgICA0MywgICAg
NDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwKKyAgICAgIDUwLCAgICA1MSwg
ICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgIDU2LCAgICAgMCwgICAgNTcsICAgIDU4LAor
ICAgICAgNTksICAgIDYwLCAgIDEzMywgICAgNjEsICAgMTM0LCAgIDEzNSwgICAxMzYsICAgMTM3
LCAgIDEzOCwgICAgIDAsCisgICAgICAgMCwgICAxMzksICAgMTQwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LAorICAgICAx
NDEsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgICAwLCAgICAg
MCwgICAgIDAsCisgICAgICAgMCwgICAxNDMsICAgMTQ0LCAgIDE0NSwgICAxNDYsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgIDEyLCAgICAxMywKICAgICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3
LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLAotICAgICAgMjQsICAg
IDI1LCAgICAyNiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAzMSwgICAg
MzIsCi0gICAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgNDAsICAgIDQxLCAgICAgMCwKLSAgICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0
NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLAotICAgICAgNTIsICAgIDUzLCAg
ICA1NCwgICAgNTUsICAgICAwLCAgICA1NiwgICAgNTcsICAgIDU4LCAgICAgMCwgICAxMDksCi0g
ICAgICA2MCwgICAgIDAsICAgICAwLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAs
ICAgICAwLCAgICAgMCwKKyAgICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAg
MjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLAorICAgICAgMzQsICAgIDM1LCAgICAzNiwg
ICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgIDAsCisgICAgICA0
MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUx
LCAgICA1MiwKKyAgICAgIDUzLCAgICA1NCwgICAgNTUsICAgIDU2LCAgICAgMCwgICAgNTcsICAg
IDU4LCAgICA1OSwgICAgNjAsICAgMTAzLAorICAgICAgNjEsICAgICAwLCAgICAgMCwgICAgIDgs
ICAgICA5LCAgICAxMCwgICAgMTEsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDEyLCAgICAx
MywKICAgICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAg
ICAyMSwgICAgMjIsICAgIDIzLAotICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgMTEwLCAgICAzMSwgICAgMzIsCi0gICAgICAzMywgICAgMzQsICAg
IDM1LCAgICAzNiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgNDAsICAgIDQxLCAgICAgMCwKLSAg
ICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwg
ICAgNTAsICAgIDUxLAotICAgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgICAwLCAgICA1
NiwgICAgNTcsICAgIDU4LCAgICAgMCwgICAxNDIsCi0gICAgICA2MCwgICAxNDMsICAgMTQ0LCAg
IDE0NSwgICAxNDYsICAgMTQ3LCAgICAgMCwgICAgIDAsICAgMTQ4LCAgIDE0OSwKKyAgICAgIDI0
LCAgICAyNSwgICAgMjYsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDEwNCwgICAgMzIs
ICAgIDMzLAorICAgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgICAwLCAgICAgMCwgICAg
IDAsICAgIDQxLCAgICA0MiwgICAgIDAsCisgICAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0Niwg
ICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwKKyAgICAgIDUzLCAgICA1
NCwgICAgNTUsICAgIDU2LCAgICAgMCwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgIDAsICAgMTMz
LAorICAgICAgNjEsICAgMTM0LCAgIDEzNSwgICAxMzYsICAgMTM3LCAgIDEzOCwgICAgIDAsICAg
ICAwLCAgIDEzOSwgICAxNDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE1MCwgICAgIDAsICAgICAwLAotICAg
ICAxNTEsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAgMCwgICAgIDAsICAgICAwLCAg
IDE1MiwgICAxNTMsCi0gICAgIDE1NCwgICAxNTUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0MSwgICAgIDAsICAgICAwLAorICAgICAxNDIs
ICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0Mywg
ICAxNDQsCisgICAgIDE0NSwgICAxNDYsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAx
MiwgICAgMTMsICAgIDE0LCAgICAxNSwKICAgICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAg
ICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LAotICAgICAgMjYsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQs
Ci0gICAgICAzNSwgICAgMzYsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDQwLCAgICA0MSwgICAg
IDAsICAgIDQyLCAgICA0MywKLSAgICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwg
ICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLAotICAgICAgNTQsICAgIDU1LCAgICAg
MCwgICAgNTYsICAgIDU3LCAgICA1OCwgICAgIDAsICAgMTQyLCAgICA2MCwgICAxNDMsCi0gICAg
IDE0NCwgICAxNDUsICAgMTQ2LCAgIDE0NywgICAgIDAsICAgICAwLCAgIDE0OCwgICAxNDksICAg
ICAwLCAgICAgMCwKKyAgICAgIDI2LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LAorICAgICAgMzYsICAgIDM3LCAgICAgMCwgICAg
IDAsICAgICAwLCAgICA0MSwgICAgNDIsICAgICAwLCAgICA0MywgICAgNDQsCisgICAgICA0NSwg
ICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAg
ICA1NCwKKyAgICAgIDU1LCAgICA1NiwgICAgIDAsICAgIDU3LCAgICA1OCwgICAgNTksICAgICAw
LCAgIDEzMywgICAgNjEsICAgMTM0LAorICAgICAxMzUsICAgMTM2LCAgIDEzNywgICAxMzgsICAg
ICAwLCAgICAgMCwgICAxMzksICAgMTQwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwK
LSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNTAsICAgICAwLCAgICAg
MCwgICAyMjUsICAgICA4LAotICAgICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAxNTIsICAgMTUzLCAgIDE1NCwgICAxNTUsCisgICAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgMTQxLCAgICAgMCwgICAgIDAsICAgMjE0LCAgICAgOCwKKyAgICAg
ICA5LCAgICAxMCwgICAgMTEsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQzLCAgIDE0NCwgICAx
NDUsICAgMTQ2LAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDEyLCAgICAxMywg
ICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsCiAgICAgICAxOCwgICAgMTksICAgIDIwLCAgICAy
MSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAgMCwKLSAgICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAg
IDM2LAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgNDAsICAgIDQxLCAgICAgMCwgICAgNDIs
ICAgIDQzLCAgICA0NCwgICAgNDUsCi0gICAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAg
NTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwKLSAgICAgICAwLCAgICA1Niwg
ICAgNTcsICAgIDU4LCAgICAgMCwgICAxNDIsICAgIDYwLCAgIDE0MywgICAxNDQsICAgMTQ1LAot
ICAgICAxNDYsICAgMTQ3LCAgICAgMCwgICAgIDAsICAgMTQ4LCAgIDE0OSwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMzIsICAg
IDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywKKyAgICAgICAwLCAgICAgMCwgICAgIDAs
ICAgIDQxLCAgICA0MiwgICAgIDAsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LAorICAgICAg
NDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1
NSwgICAgNTYsCisgICAgICAgMCwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgIDAsICAgMTMzLCAg
ICA2MSwgICAxMzQsICAgMTM1LCAgIDEzNiwKKyAgICAgMTM3LCAgIDEzOCwgICAgIDAsICAgICAw
LCAgIDEzOSwgICAxNDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgIDE1MCwgICAgIDgsICAgICA5LCAgICAxMCwg
ICAgMTEsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgMjgxLCAgIDE1
MiwgICAxNTMsICAgMTU0LCAgIDE1NSwgICAgIDAsICAgIDEyLAorICAgICAgIDAsICAgICAwLCAg
ICAgMCwgICAxNDEsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAgMCwgICAgIDAsCisg
ICAgICAgMCwgICAgIDAsICAgICAwLCAgIDI3MCwgICAxNDMsICAgMTQ0LCAgIDE0NSwgICAxNDYs
ICAgICAwLCAgICAxMiwKICAgICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAg
MTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLAotICAgICAgMjMsICAgIDI0LCAgICAyNSwg
ICAgMjYsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMzEsCi0gICAgICAz
MiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDQw
LCAgICA0MSwKLSAgICAgICAwLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAg
IDQ3LCAgICA0OCwgICAgNDksICAgIDUwLAotICAgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQs
ICAgIDU1LCAgICAgMCwgICAgNTYsICAgIDU3LCAgICA1OCwgICAgIDAsCi0gICAgIDE0MiwgICAg
NjAsICAgMTQzLCAgIDE0NCwgICAxNDUsICAgMTQ2LCAgIDE0NywgICAgIDAsICAgICAwLCAgIDE0
OCwKLSAgICAgMTQ5LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE1MCwgICAgIDAsCi0gICAgICAgMCwgICAzMDYsICAg
ICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE1MiwKLSAg
ICAgMTUzLCAgIDE1NCwgICAxNTUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMiwg
ICAgMTMsICAgIDE0LAorICAgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMzIsCisgICAgICAzMywgICAgMzQsICAgIDM1LCAg
ICAzNiwgICAgMzcsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDQxLCAgICA0MiwKKyAgICAgICAw
LCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAs
ICAgIDUxLAorICAgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgIDU2LCAgICAgMCwgICAg
NTcsICAgIDU4LCAgICA1OSwgICAgIDAsCisgICAgIDEzMywgICAgNjEsICAgMTM0LCAgIDEzNSwg
ICAxMzYsICAgMTM3LCAgIDEzOCwgICAgIDAsICAgICAwLCAgIDEzOSwKKyAgICAgMTQwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgIDE0MSwgICAgIDAsCisgICAgICAgMCwgICAyOTUsICAgICA4LCAgICAgOSwgICAgMTAs
ICAgIDExLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0MywKKyAgICAgMTQ0LCAgIDE0NSwgICAx
NDYsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMiwgICAgMTMsICAgIDE0LAogICAg
ICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAg
ICAyMywgICAgMjQsCi0gICAgICAyNSwgICAgMjYsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgMzEsICAgIDMyLCAgICAzMywKLSAgICAgIDM0LCAgICAzNSwgICAgMzYsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgIDQwLCAgICA0MSwgICAgIDAsICAgIDQyLAotICAgICAgNDMs
ICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwg
ICAgNTIsCi0gICAgICA1MywgICAgNTQsICAgIDU1LCAgICAgMCwgICAgNTYsICAgIDU3LCAgICA1
OCwgICAgIDAsICAgMTQyLCAgICA2MCwKLSAgICAgMTQzLCAgIDE0NCwgICAxNDUsICAgMTQ2LCAg
IDE0NywgICAgIDAsICAgICAwLCAgIDE0OCwgICAxNDksICAgICAwLAorICAgICAgMjUsICAgIDI2
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDMyLCAgICAzMywgICAgMzQs
CisgICAgICAzNSwgICAgMzYsICAgIDM3LCAgICAgMCwgICAgIDAsICAgICAwLCAgICA0MSwgICAg
NDIsICAgICAwLCAgICA0MywKKyAgICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwg
ICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLAorICAgICAgNTQsICAgIDU1LCAgICA1
NiwgICAgIDAsICAgIDU3LCAgICA1OCwgICAgNTksICAgICAwLCAgIDEzMywgICAgNjEsCisgICAg
IDEzNCwgICAxMzUsICAgMTM2LCAgIDEzNywgICAxMzgsICAgICAwLCAgICAgMCwgICAxMzksICAg
MTQwLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAxNTAsICAgICA4LCAgICAgOSwgICAgMTAsCi0gICAgICAxMSwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNTIsICAgMTUzLCAg
IDE1NCwKLSAgICAgMTU1LCAgICAgMCwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2
LCAgICAxNywgICAgMTgsICAgIDE5LAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAxNDEsICAgICA4LCAgICAgOSwgICAgMTAsCisgICAgICAxMSwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDMsICAgMTQ0LCAgIDE0NSwK
KyAgICAgMTQ2LCAgICAgMCwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAx
NywgICAgMTgsICAgIDE5LAogICAgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAg
ICAyNSwgICAgMjYsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgIDMx
LCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgICAwLCAgICAgMCwKLSAgICAg
ICAwLCAgICA0MCwgICAyNDUsICAgICAwLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAg
NDYsICAgIDQ3LAotICAgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1Mywg
ICAgNTQsICAgIDU1LCAgICAgMCwgICAgNTYsCi0gICAgICA1NywgICAgNTgsICAgICAwLCAgIDE0
MiwgICAgNjAsICAgMTQzLCAgIDE0NCwgICAxNDUsICAgMTQ2LCAgIDE0NywKLSAgICAgICAwLCAg
ICAgMCwgICAxNDgsICAgMTQ5LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgMTM3LCAgICAgMiwgICAgIDMsCi0gICAgICAgNCwgICAxNTAsICAgICA2LCAgICAgNywgICAg
IDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwg
ICAxNTIsICAgMTUzLCAgIDE1NCwgICAxNTUsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDEyLAor
ICAgICAgIDAsICAgICAwLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3
LCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgNDEsICAgMjM0LCAgICAgMCwgICAgNDMsICAg
IDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwKKyAgICAgIDQ5LCAgICA1MCwgICAgNTEs
ICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAgIDAsICAgIDU3LAorICAgICAg
NTgsICAgIDU5LCAgICAgMCwgICAxMzMsICAgIDYxLCAgIDEzNCwgICAxMzUsICAgMTM2LCAgIDEz
NywgICAxMzgsCisgICAgICAgMCwgICAgIDAsICAgMTM5LCAgIDE0MCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMSwgICAgIDIsICAgICAzLAorICAgICAgIDQsICAg
MTQxLCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAgMCwgICAg
IDAsCisgICAgICAgMCwgICAgIDAsICAgMTQzLCAgIDE0NCwgICAxNDUsICAgMTQ2LCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAxMiwKICAgICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAx
NywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLAotICAgICAgMjMsICAgIDI0LCAg
ICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgIDAsICAgIDI5LCAgICAzMCwgICAgMzEsCi0g
ICAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzks
ICAgIDQwLCAgICA0MSwKLSAgICAgICAwLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAg
NDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLAotICAgICAgNTEsICAgIDUyLCAgICA1Mywg
ICAgNTQsICAgIDU1LCAgICAgMCwgICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTksCi0gICAgICAg
MCwgICAgNjAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAxMzcsICAgICAyLCAgICAgMywgICAgIDQsICAg
ICAwLCAgICAgNiwgICAgIDcsICAgICA4LAorICAgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYs
ICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsCisgICAgICAzMywgICAg
MzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0
MiwKKyAgICAgICAwLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAg
ICA0OSwgICAgNTAsICAgIDUxLAorICAgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgIDU2
LCAgICAgMCwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsCisgICAgICAgMCwgICAgNjEsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAg
ICAgICAwLCAgICAgMCwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICAwLCAgICAgNiwg
ICAgIDcsICAgICA4LAogICAgICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAg
IDIzMywgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywKKyAgICAgICAw
LCAgICAgMCwgICAgIDAsICAgMjIyLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYs
ICAgIDE3LAogICAgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAg
MjQsICAgIDI1LCAgICAyNiwgICAgMjcsCi0gICAgICAyOCwgICAgIDAsICAgIDI5LCAgICAzMCwg
ICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwKLSAgICAgIDM3LCAgICAz
OCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgIDAsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1
LAotICAgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAg
IDUzLCAgICA1NCwgICAgNTUsCi0gICAgICAgMCwgICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTks
ICAgICAwLCAgICA2MCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDEzNywgICAgIDIsICAgICAzLAorICAg
ICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAg
ICAzNiwgICAgMzcsCisgICAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgICAw
LCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwKKyAgICAgIDQ3LCAgICA0OCwgICAgNDksICAg
IDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgIDU2LAorICAgICAgIDAs
ICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgICAgMCwgICAgNjEsICAgICAwLCAgICAgMCwg
ICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDEsICAgICAyLCAgICAgMywKICAgICAgICA0LCAgICAgMCwgICAgIDYsICAgICA3LCAg
ICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDI3MCwgICAgMTIs
CisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgMjU5LCAgICAxMiwKICAgICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywg
ICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLAotICAgICAgMjMsICAgIDI0LCAgICAy
NSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgIDAsICAgIDI5LCAgICAzMCwgICAgMzEsCi0gICAg
ICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAg
IDQwLCAgICA0MSwKLSAgICAgICAwLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYs
ICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLAotICAgICAgNTEsICAgIDUyLCAgICA1MywgICAg
NTQsICAgIDU1LCAgICAgMCwgICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTksCi0gICAgICAgMCwg
ICAgNjAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
IDExNiwKKyAgICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5
LCAgICAzMCwgICAgMzEsICAgIDMyLAorICAgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAg
IDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsCisgICAgICAgMCwgICAgNDMs
ICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwK
KyAgICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAgIDAsICAgIDU3LCAgICA1
OCwgICAgNTksICAgIDYwLAorICAgICAgIDAsICAgIDYxLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxMDksCiAgICAgICAgMCwgICAgIDAsICAgICAx
LCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwKICAgICAg
ICA5LCAgICAxMCwgICAgMTEsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAzNDQsICAgIDEyLCAgICAxMywg
ICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgIDMz
MywgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywKICAgICAgIDE4LCAg
ICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAg
IDI3LAotICAgICAgMjgsICAgICAwLCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMs
ICAgIDM0LCAgICAzNSwgICAgMzYsCi0gICAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAg
NDEsICAgICAwLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwKLSAgICAgIDQ2LCAgICA0Nywg
ICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LAot
ICAgICAgIDAsICAgIDU2LCAgICA1NywgICAgNTgsICAgIDU5LCAgICAgMCwgICAgNjAsICAgICAx
LCAgICAgMiwgICAgIDMsCisgICAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAg
IDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywKKyAgICAgIDM4LCAgICAzOSwgICAgNDAs
ICAgIDQxLCAgICA0MiwgICAgIDAsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LAorICAgICAg
NDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1
NSwgICAgNTYsCisgICAgICAgMCwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgICAwLCAg
ICA2MSwgICAgIDEsICAgICAyLCAgICAgMywKICAgICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3
LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
MTIsCiAgICAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwg
ICAgMjAsICAgIDIxLCAgICAyMiwKLSAgICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAy
NywgICAgMjgsICAgICAwLCAgICAyOSwgICAgMzAsICAgIDMxLAotICAgICAgMzIsICAgIDMzLCAg
ICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsCi0g
ICAgICAgMCwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgs
ICAgIDQ5LCAgICA1MCwKLSAgICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAg
IDAsICAgIDU2LCAgICA1NywgICAgNTgsICAgIDU5LAotICAgICAgIDAsICAgIDYwLCAgIDEzNywg
ICAgIDIsICAgICAzLCAgICAgNCwgICAgIDAsICAgICA2LCAgICAgNywgICAgIDgsCisgICAgICAy
MywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMx
LCAgICAzMiwKKyAgICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAg
IDM5LCAgICA0MCwgICAgNDEsICAgIDQyLAorICAgICAgIDAsICAgIDQzLCAgICA0NCwgICAgNDUs
ICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsCisgICAgICA1MiwgICAg
NTMsICAgIDU0LCAgICA1NSwgICAgNTYsICAgICAwLCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2
MCwKKyAgICAgICAwLCAgICA2MSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICAwLCAg
ICAgNiwgICAgIDcsICAgICA4LAogICAgICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywKICAg
ICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwg
ICAgMjYsICAgIDI3LAotICAgICAgMjgsICAgICAwLCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAz
MiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsCi0gICAgICAzNywgICAgMzgsICAgIDM5LCAg
ICA0MCwgICAgNDEsICAgICAwLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwKLSAgICAgIDQ2
LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQs
ICAgIDU1LAotICAgICAgIDAsICAgIDU2LCAgICA1NywgICAgNTgsICAgIDU5LCAgICAgMCwgICAg
NjAsICAgICAyLCAgICAgMywgICAgIDQsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgOCwg
ICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTIsICAgIDEz
LAotICAgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAg
IDIxLCAgICAyMiwgICAgMjMsCi0gICAgICAyNCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDMxLCAgICAzMiwKLSAgICAgIDMzLCAgICAzNCwgICAg
MzUsICAgIDM2LCAgICAgMCwgICAgIDAsICAgICAwLCAgICA0MCwgICAgNDEsICAgICAwLAotICAg
ICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAg
ICA1MCwgICAgNTEsCi0gICAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgIDAsICAgIDU2
LCAgICA1NywgICAgNTgsICAgICAwLCAgICAgMCwKLSAgICAgIDYwLCAgICAgOCwgICAgIDksICAg
IDEwLCAgICAxMSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTIsICAgIDEzLCAgICAxNCwg
ICAgMTUsCi0gICAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAy
MiwgICAgMjMsICAgIDI0LCAgICAyNSwKLSAgICAgIDI2LCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LAotICAgICAgMzUsICAgIDM2
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICA0MCwgICAgNDEsICAgICAwLCAgICA0MiwgICAgNDMs
Ci0gICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAg
NTEsICAgIDUyLCAgICA1MywKLSAgICAgIDU0LCAgICA1NSwgICAgIDAsICAgIDU2LCAgICA1Nywg
ICAgNTgsICAgICAwLCAgIDMyMCwgICAgNjAsICAgICA4LAotICAgICAgIDksICAgIDEwLCAgICAx
MSwgICAzMjEsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAg
IDE2LCAgICAxNywKLSAgICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMs
ICAgIDI0LCAgICAyNSwgICAgMjYsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsCi0gICAgICAgMCwg
ICAgIDAsICAgICAwLCAgICA0MCwgICAgNDEsICAgICAwLCAgICA0MiwgICAgNDMsICAgIDQ0LCAg
ICA0NSwKLSAgICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUy
LCAgICA1MywgICAgNTQsICAgIDU1LAotICAgICAgIDAsICAgIDU2LCAgICA1NywgICAgNTgsICAg
ICAwLCAgICAgMCwgICAgNjAKKyAgICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwg
ICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LAorICAgICAgMzgsICAgIDM5LCAgICA0
MCwgICAgNDEsICAgIDQyLCAgICAgMCwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsCisgICAg
ICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAg
IDU1LCAgICA1NiwKKyAgICAgICAwLCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAgIDAs
ICAgIDYxLCAgICAgOCwgICAgIDksICAgIDEwLAorICAgICAgMTEsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwg
ICAgIDAsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAg
ICAxOSwKKyAgICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2
LCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAzMiwgICAgMzMsICAg
IDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgNDEs
ICAgIDQyLCAgICAgMCwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwK
KyAgICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1
NiwgICAgIDAsICAgIDU3LAorICAgICAgNTgsICAgIDU5LCAgICAgMCwgICAzMDksICAgIDYxLCAg
ICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAzMTAsCisgICAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAg
IDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAg
MjAsICAgIDIxLAorICAgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAzMiwgICAgMzMsICAgIDM0LCAgICAz
NSwgICAgMzYsICAgIDM3LCAgICAgMCwgICAgIDAsICAgICAwLCAgICA0MSwKKyAgICAgIDQyLCAg
ICAgMCwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAg
IDUwLAorICAgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAgIDAs
ICAgIDU3LCAgICA1OCwgICAgNTksCisgICAgICAgMCwgICAgIDAsICAgIDYxCiB9OwogCiBzdGF0
aWMgY29uc3QgeXl0eXBlX2ludDE2IHl5Y2hlY2tbXSA9CiB7Ci0gICAgICAgMCwgICAgNDAsICAg
IDk0LCAgIDEzNSwgICAxNTAsICAgMTE1LCAgICAgMCwgICAxMTEsICAgMTE1LCAgIDEzNCwKLSAg
ICAgMTQwLCAgIDEyMCwgICAgIDAsICAgIDcwLCAgICA3NiwgICAzNzUsICAgMTIwLCAgIDM1Mywg
ICAgIDksICAgMTE2LAotICAgICAyMTMsICAgMTE4LCAgIDEwNCwgICAgOTIsICAgMTM0LCAgICAg
OSwgICAgIDEsICAgMTM0LCAgICAgMSwgICAgNjgsCi0gICAgICA3NiwgICAgNzcsICAgMTY0LCAg
ICA4NywgICAgODgsICAgMTA2LCAgIDE0MCwgICAzNDcsICAgMzc0LCAgIDIyNCwKLSAgICAgMTA2
LCAgIDE0OCwgICAxNDksICAgMTE0LCAgIDQwNCwgICAxMDIsICAgMTE0LCAgIDExMywgICAxOTQs
ICAgIDQwLAotICAgICAgNDEsICAgIDQyLCAgIDExNCwgICAxODMsICAgMTExLCAgIDEwNSwgICAg
NDAsICAgIDQxLCAgIDEyNywgICAgNDMsCi0gICAgIDE2NywgICAxMTEsICAgMTA4LCAgIDEyMCwg
ICAxMDUsICAgMTA0LCAgIDExMSwgICAgNTEsICAgMTIyLCAgIDEyMywKLSAgICAgIDcwLCAgIDE5
NiwgICAgIDksICAgIDczLCAgIDEzMSwgICAxODQsICAgMTA1LCAgIDEwOCwgICAgNzgsICAgMTgz
LAotICAgICAxODQsICAgMTM4LCAgIDExMSwgICAxNDAsICAgIDc4LCAgICA4NSwgICAxOTYsICAg
Mzk3LCAgIDEwNiwgICAxOTYsCi0gICAgICA3OCwgICAxMzAsICAgMjI0LCAgIDQwMywgICAyNDAs
ICAgMTEzLCAgICA2OSwgICAxMDYsICAgMjIzLCAgICA3NiwKLSAgICAgMTA1LCAgICA3NCwgICAx
MDIsICAgIDQwLCAgICA0MSwgICAgNDIsICAgMTExLCAgICA4NSwgICAgODYsICAgMTA1LAotICAg
ICAgODMsICAgMTExLCAgIDI0NCwgICAyMjMsICAgMTA1LCAgIDExMSwgICAyMjMsICAgMTA0LCAg
IDExMSwgICAxMDgsCi0gICAgIDEyMCwgICAxMTQsICAgMjY4LCAgIDEwNSwgICAzMDksICAgMTI1
LCAgIDE4MywgICAxODQsICAgMTA2LCAgIDExMSwKLSAgICAgMTEzLCAgIDEzMSwgICAxMTAsICAg
Mjc5LCAgICAgNCwgICAgIDUsICAgICA2LCAgIDI4MywgICAxMzgsICAgMTA4LAotICAgICAxNDAs
ICAgMjcxLCAgIDI0OSwgICAyNTAsICAgMjUxLCAgIDI1MiwgICAyNTMsICAgMjU0LCAgIDI1NSwg
ICAyNTYsCi0gICAgIDI1NywgICAyNTgsICAgMjU5LCAgIDI2MCwgICAyNjEsICAgMjYyLCAgIDI2
MywgICAyNjQsICAgMjY1LCAgIDI2NiwKLSAgICAgMjY3LCAgIDM1NCwgICAxMzcsICAgMTExLCAg
IDEzNywgICAxMDUsICAgMTE0LCAgIDI3MSwgICAzMDAsICAgMzAxLAotICAgICAxMTQsICAgMTEx
LCAgIDExMSwgICAzNTgsICAgMTA0LCAgIDExNCwgICAzNjEsICAgMzA5LCAgIDExMSwgICAxMTEs
Ci0gICAgIDMwNSwgICAxMTQsICAgMTE0LCAgIDE4MywgICAxODQsICAgIDQwLCAgICA0MSwgICAz
MTIsICAgICA5LCAgIDI1NiwKLSAgICAgMjU3LCAgIDI1OCwgICAyNTksICAgIDc2LCAgICA3Nywg
ICAzMDUsICAgIDc2LCAgICA3NywgICAzMDUsICAgMzg0LAotICAgICAgODksICAgIDkwLCAgIDMx
MiwgICAgNzksICAgIDgwLCAgIDMxMiwgICAxMDUsICAgMzUzLCAgICA0MCwgICAgNDEsCi0gICAg
ICA0MiwgICAgODMsICAgIDg0LCAgIDIxMywgICAyNzEsICAgMTE5LCAgIDEyMCwgICAxMjEsICAg
MTA0LCAgICA0MCwKLSAgICAgIDQxLCAgIDQwNiwgICAgNDMsICAgIDQ0LCAgIDExMSwgICAxMTIs
ICAgMzU4LCAgIDEyNSwgICAzNzQsICAgMzYxLAotICAgICAgNTEsICAgIDUyLCAgICA1MywgICAg
IDksICAgMjU0LCAgIDI1NSwgICAzNjgsICAgMjUyLCAgIDI1MywgICAxMjQsCi0gICAgIDM2NSwg
ICAyNjAsICAgMjYxLCAgIDM4OSwgICAxMjYsICAgIDkxLCAgICA5MywgICAxMDcsICAgMTE0LCAg
IDM1MywKLSAgICAgMTE0LCAgIDEwNCwgICAzODQsICAgMTA0LCAgIDM0NiwgICAzNjUsICAgNDAy
LCAgIDExNCwgICAzNjUsICAgMTA0LAotICAgICAxMTIsICAgMTA0LCAgIDEwNCwgICAxMTMsICAg
IDQwLCAgICA0MSwgICAxMDcsICAgIDQzLCAgICA0NCwgICAxMDksCi0gICAgIDM3NCwgICAyNzEs
ICAgMTA2LCAgIDEwNiwgICA0MDYsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDk0LCAgICA5NSwK
LSAgICAgIDk2LCAgICA5NywgICAgOTgsICAgIDk5LCAgIDEwMCwgICAxMDEsICAgMTAyLCAgIDEw
MywgICAyODgsICAgMTA4LAotICAgICAxMDUsICAgMTEzLCAgIDExMiwgICAxMDcsICAgMTA3LCAg
IDExMywgICAxMDQsICAgMTEzLCAgICA1NiwgICAxMTEsCi0gICAgICA3NiwgICAxMDcsICAgMTEz
LCAgIDEwNywgICAxMDQsICAgMTE0LCAgIDEwNSwgICAxMDksICAgMTA1LCAgIDEwNywKLSAgICAg
IDE3LCAgIDExNCwgICAxMDgsICAgMTE0LCAgIDI0MSwgICAyNjIsICAgMjY1LCAgIDI2MywgICAx
MTMsICAgMjY0LAotICAgICAxMDMsICAgMTMxLCAgIDM3OSwgICAyNjYsICAgIDk2LCAgIDI2Nywg
ICAxMzEsICAgICA1LCAgIDE4NywgICAyMjksCi0gICAgIDM5NSwgICAzNDgsICAgMzEzLCAgIDQw
MywgICAyODgsICAgMzQ4LCAgIDM3NCwgICAgNzgsICAgIC0xLCAgIDM3OCwKLSAgICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDM0NywgICAzNDgsICAg
IC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAzNTMsICAgMzU0LCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAgMCwgICAgNDEsICAgIDcxLCAgICA5MSwgICAx
MjYsICAgIDY2LCAgIDIwNCwgICAgNjYsICAgMTQxLCAgICAgMCwKKyAgICAgIDcxLCAgIDEzMSwg
ICAxMTIsICAgICAwLCAgIDMzNiwgICAgOTIsICAgMzQyLCAgIDM2NCwgICAgNzYsICAgMTA2LAor
ICAgICAxMDUsICAgMTA0LCAgIDEwOCwgICAgNzYsICAgIDc3LCAgIDExNCwgICAxMTEsICAgMTE0
LCAgICA5NywgICAgNjksCisgICAgIDExMSwgICAxMDYsICAgIDkzLCAgIDE1NSwgICAgOTMsICAg
MTA1LCAgICA5NywgICAzNjMsICAgMTEzLCAgIDEyNSwKKyAgICAgMTA2LCAgICA4NywgICAgODgs
ICAgMTA4LCAgIDEwNSwgICAzOTIsICAgMTA1LCAgIDEyNSwgICAxMDgsICAgMTE0LAorICAgICAx
MjcsICAgMTEyLCAgIDE4NSwgICAxMTIsICAgMTc0LCAgIDEwOCwgICAxMTQsICAgMTA2LCAgICA5
OCwgICAgOTksCisgICAgIDEyOSwgICAgODUsICAgIDg2LCAgIDM4NSwgICAxMTMsICAgMTI1LCAg
ICA2NiwgICAxMDgsICAgMTI5LCAgIDM5MSwKKyAgICAgMTMxLCAgICA3MSwgICAxMzEsICAgMjEz
LCAgICA3NiwgICAxNzUsICAgMTIyLCAgIDEyMywgICAxMDgsICAgMTM5LAorICAgICAxNDAsICAg
IDgxLCAgIDEwNiwgICAxMDUsICAgIDg0LCAgIDExMSwgICAxMTAsICAgMTA0LCAgIDExNCwgICAx
MTEsCisgICAgICA4MSwgICAyMTMsICAgMTExLCAgICA5MywgICAgODEsICAgMTE0LCAgIDIyOSwg
ICAgOTcsICAgMTU4LCAgIDExNCwKKyAgICAgMTA1LCAgIDE4NywgICAxMDUsICAgMTEzLCAgIDEw
NSwgICAxMDUsICAgMTExLCAgIDEwNiwgICAxMTEsICAgMTg3LAorICAgICAxMTEsICAgMjMzLCAg
IDExMiwgICAxNzQsICAgMTc1LCAgIDE3NCwgICAxNzUsICAgMTE3LCAgIDI0NSwgICAyNDYsCisg
ICAgIDI0NywgICAyNDgsICAgMTA1LCAgIDEwNCwgICAyNTcsICAgMjExLCAgIDIxMiwgICAxODcs
ICAgMTExLCAgIDEyOSwKKyAgICAgMTE2LCAgIDEzMSwgICAxMTgsICAgMjExLCAgIDIxMiwgICAy
NjgsICAgIDc2LCAgICA3NywgICAxMTEsICAgMjcyLAorICAgICAyNjAsICAgMTE0LCAgIDEwNSwg
ICAxMTEsICAgMTExLCAgIDM0MywgICAxMTQsICAgMTE0LCAgICAgNCwgICAgIDUsCisgICAgICAg
NiwgICAyMTEsICAgMjEyLCAgIDExOSwgICAxMjAsICAgMTIxLCAgICA3NiwgICAgNzcsICAgMjk4
LCAgICA4MywKKyAgICAgIDg0LCAgICA4OSwgICAgOTAsICAgIDc5LCAgICA4MCwgICAxMTEsICAg
MTEyLCAgIDI4OSwgICAyOTAsICAgMjQxLAorICAgICAyNDIsICAgMTA0LCAgIDI0MywgICAyNDQs
ICAgMTc0LCAgIDE3NSwgICAyOTgsICAgMTI2LCAgIDIzOCwgICAyMzksCisgICAgIDI0MCwgICAy
NDEsICAgMjQyLCAgIDI0MywgICAyNDQsICAgMjQ1LCAgIDI0NiwgICAyNDcsICAgMjQ4LCAgIDI0
OSwKKyAgICAgMjUwLCAgIDI1MSwgICAyNTIsICAgMjUzLCAgIDI1NCwgICAyNTUsICAgMjU2LCAg
IDI0OSwgICAyNTAsICAgMjYwLAorICAgICAxMjUsICAgMjYwLCAgIDEyNCwgICAgOTEsICAgMjA0
LCAgIDEwNywgICAgOTMsICAgMzQ3LCAgIDExNCwgICAzNDIsCisgICAgIDM1MCwgICAxMTQsICAg
MTA0LCAgIDEwNCwgICAxMTQsICAgMzAxLCAgIDExMiwgICAxMDcsICAgMTA0LCAgIDEwNCwKKyAg
ICAgMTA5LCAgIDEwNCwgICAgNTYsICAgMzAxLCAgIDEwNiwgICAzNDcsICAgMTA1LCAgIDEwOCwg
ICAzNTAsICAgMTEzLAorICAgICAzNjMsICAgMTA3LCAgIDM3MiwgICAxMTMsICAgMTEyLCAgIDM1
NywgICAxMDcsICAgMTA3LCAgIDExMywgICAxMTEsCisgICAgIDEwNCwgICAzMDEsICAgMTA3LCAg
IDEwNCwgICAzNzcsICAgMTEzLCAgIDEwNSwgICAzMzUsICAgMTE0LCAgIDEwOSwKKyAgICAgMzcy
LCAgIDEwNSwgICAxMDcsICAgIDE3LCAgIDM5NCwgICAxMDgsICAgMTEzLCAgIDM5MCwgICAyMzAs
ICAgMjUxLAorICAgICAyNjAsICAgMjU0LCAgIDExNCwgICAxMTQsICAgMjUyLCAgIDI1NSwgICAg
OTcsICAgMjU2LCAgIDM1NCwgICAyNTMsCisgICAgICA5MywgICAgOTcsICAgMzk0LCAgICAgNSwg
ICAxNzgsICAgMjE4LCAgIDM1NCwgICAyNzcsICAgMzgzLCAgIDMwMiwKKyAgICAgMzM3LCAgIDM5
MSwgICAyNzcsICAgMzQyLCAgICA5NCwgICAgOTUsICAgIDk2LCAgICA5NywgICAgOTgsICAgIDk5
LAorICAgICAxMDAsICAgMTAxLCAgIDEwMiwgICAxMDMsICAgMzU0LCAgIDMzNywgICAzNjMsICAg
IDgxLCAgICAtMSwgICAzNjgsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgIDExMywgICAzNjMs
ICAgIC0xLCAgICAtMSwgICAzNjgsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgMzY3LCAg
ICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgIDMzNiwgICAzMzcsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAzNDIsICAg
MzQzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAzNzQsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgIDM3OSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgMzYzLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAzNjgsICAgIC0xLAorICAgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
CisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgMzg1LCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgIDM5MSwgICAgIDMsICAgICA0LCAgICAgNSwg
ICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLAorICAgICAgMTEsICAgIDEyLCAgICAx
MywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgLTEsICAgIDE4LCAgICAxOSwgICAgMjAsCisgICAg
ICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAg
IDI5LCAgICAzMCwKKyAgICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYs
ICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLAorICAgICAgNDEsICAgIDQyLCAgICA0MywgICAg
NDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsCisgICAgICA1MSwg
ICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgIDU2LCAgICA1NywgICAgNTgsICAgIDU5LCAg
ICA2MCwKKyAgICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0LCAgICA2NSwgICAgNjYsICAgIDY3
LCAgICA2OCwgICAgNjksICAgIDcwLAorICAgICAgLTEsICAgIDcyLCAgICA3MywgICAgNzQsICAg
IDc1LCAgICA3NiwgICAgNzcsICAgIDc4LCAgICA3OSwgICAgODAsCisgICAgICA4MSwgICAgODIs
ICAgIC0xLCAgICAtMSwgICAgODUsICAgIDg2LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwK
ICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgMzk3LCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0x
LCAgIDQwMywgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwKKyAgICAg
IC0xLCAgICAtMSwgICAgLTEsICAgMTA0LCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDEwOCwgICAx
MDksICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMTQsICAgMTE1LCAgIDExNiwg
ICAxMTcsICAgMTE4LCAgICAgMywgICAgIDQsCisgICAgICAgNSwgICAgIDYsICAgICA3LCAgICAg
OCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwKKyAgICAgIDE1LCAg
ICAxNiwgICAgLTEsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAg
IDI0LAorICAgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEs
ICAgIDMyLCAgICAzMywgICAgMzQsCisgICAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAg
MzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwKKyAgICAgIDQ1LCAgICA0Niwg
ICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LAor
ICAgICAgNTUsICAgIDU2LCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDYy
LCAgICA2MywgICAgNjQsCisgICAgICA2NSwgICAgNjYsICAgIDY3LCAgICA2OCwgICAgNjksICAg
IDcwLCAgICAtMSwgICAgNzIsICAgIDczLCAgICA3NCwKKyAgICAgIDc1LCAgICA3NiwgICAgNzcs
ICAgIDc4LCAgICA3OSwgICAgODAsICAgIDgxLCAgICA4MiwgICAgLTEsICAgIC0xLAorICAgICAg
ODUsICAgIDg2LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgIDEwNCwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTA4
LCAgIDEwOSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTE0LAorICAgICAxMTUsICAg
MTE2LCAgIDExNywgICAxMTgsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAg
IDgsCiAgICAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwg
ICAgMTYsICAgIC0xLCAgICAxOCwKICAgICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAy
MywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAogICAgICAgMjksICAgIDMwLCAg
ICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsCi0g
ICAgICAzOSwgICAgNDAsICAgIDQxLCAgICAtMSwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYs
ICAgIDQ3LCAgICA0OCwKKyAgICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0MywgICAg
NDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LAogICAgICAgNDksICAgIDUwLCAgICA1MSwg
ICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgIDU2LCAgICA1NywgICAgNTgsCiAgICAgICA1
OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0LCAgICA2NSwgICAgNjYsICAgIDY3
LCAgICA2OCwKICAgICAgIDY5LCAgICA3MCwgICAgLTEsICAgIDcyLCAgICA3MywgICAgNzQsICAg
IDc1LCAgICA3NiwgICAgNzcsICAgIDc4LAogICAgICAgNzksICAgIDgwLCAgICA4MSwgICAgODIs
ICAgIC0xLCAgICAtMSwgICAgODUsICAgIDg2LCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMDQsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgMTA4LAotICAgICAxMDksICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgIDExNCwgICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsCisgICAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgMTE0LCAgIDExNSwgICAxMTYsICAgMTE3LCAgIDExOCwKICAg
ICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwg
ICAgMTEsICAgIDEyLAogICAgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIC0xLCAgICAx
OCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsCiAgICAgICAyMywgICAgMjQsICAgIDI1LCAg
ICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwKLSAgICAgIDMz
LCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEs
ICAgIC0xLAorICAgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAg
MzksICAgIDQwLCAgICA0MSwgICAgNDIsCiAgICAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0Niwg
ICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwKICAgICAgIDUzLCAgICA1
NCwgICAgNTUsICAgIDU2LCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDYy
LAogICAgICAgNjMsICAgIDY0LCAgICA2NSwgICAgNjYsICAgIDY3LCAgICA2OCwgICAgNjksICAg
IDcwLCAgICAtMSwgICAgNzIsCiAgICAgICA3MywgICAgNzQsICAgIDc1LCAgICA3NiwgICAgNzcs
ICAgIDc4LCAgICA3OSwgICAgODAsICAgIDgxLCAgICA4MiwKICAgICAgIC0xLCAgICAtMSwgICAg
ODUsICAgIDg2LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAogICAg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAxMDQsICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTA4
LCAgIDEwOSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgIDEwNCwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAxMDgsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEs
ICAgMTE0LCAgIDExNSwgICAxMTYsICAgMTE3LCAgIDExOCwgICAgIDMsICAgICA0LCAgICAgNSwg
ICAgIDYsCiAgICAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAx
MywgICAgMTQsICAgIDE1LCAgICAxNiwKICAgICAgIC0xLCAgICAxOCwgICAgMTksICAgIDIwLCAg
ICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LAogICAgICAgMjcsICAgIDI4
LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYs
Ci0gICAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIC0xLCAgICA0MywgICAg
NDQsICAgIDQ1LCAgICA0NiwKKyAgICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwg
ICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LAogICAgICAgNDcsICAgIDQ4LCAgICA0
OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYsCiAgICAg
ICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2MywgICAgNjQsICAg
IDY1LCAgICA2NiwKICAgICAgIDY3LCAgICA2OCwgICAgNjksICAgIDcwLCAgICAtMSwgICAgNzIs
ICAgIDczLCAgICA3NCwgICAgNzUsICAgIDc2LAogICAgICAgNzcsICAgIDc4LCAgICA3OSwgICAg
ODAsICAgIDgxLCAgICA4MiwgICAgLTEsICAgIC0xLCAgICA4NSwgICAgODYsCiAgICAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgIDEwNCwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgMTA4LCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgMTE0LCAgIDExNSwgICAxMTYsCisgICAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMTQsICAgMTE1LCAgIDExNiwK
ICAgICAgMTE3LCAgIDExOCwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAg
OCwgICAgIDksICAgIDEwLAotICAgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAg
ICAxNiwgICAgLTEsICAgIDE4LCAgICAxOSwgICAgMjAsCi0gICAgICAyMSwgICAgMjIsICAgIDIz
LCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwKKyAgICAg
IDExLCAgICAxMiwgICAgMTMsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDI1LCAgICAyNiwg
ICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsCiAgICAgICAzMSwgICAgMzIsICAgIDMzLCAgICAz
NCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwKLSAgICAgIDQxLCAg
ICAtMSwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAg
IDUwLAotICAgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAgNTcs
ICAgIDU4LCAgICA1OSwgICAgNjAsCisgICAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAg
NDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwKKyAgICAgIDUxLCAgICA1Miwg
ICAgNTMsICAgIDU0LCAgICA1NSwgICAgLTEsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLAog
ICAgICAgNjEsICAgIDYyLCAgICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4
LCAgICA2OSwgICAgNzAsCiAgICAgICAtMSwgICAgNzIsICAgIDczLCAgICA3NCwgICAgNzUsICAg
IDc2LCAgICA3NywgICAgNzgsICAgIDc5LCAgICA4MCwKICAgICAgIDgxLCAgICA4MiwgICAgLTEs
ICAgIC0xLCAgICA4NSwgICAgODYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgIDEwNCwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAxMDgsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTE0
LCAgIDExNSwgICAxMTYsICAgMTE3LCAgIDExOCwgICAgIDMsICAgICA0LAotICAgICAgIDUsICAg
ICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAg
MTQsCi0gICAgICAxNSwgICAgMTYsICAgIC0xLCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwg
ICAgMjIsICAgIDIzLCAgICAyNCwKLSAgICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAy
OSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LAotICAgICAgMzUsICAgIDM2LCAg
ICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIC0xLCAgICA0MywgICAgNDQsCi0g
ICAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIs
ICAgIDUzLCAgICA1NCwKLSAgICAgIDU1LCAgICA1NiwgICAgNTcsICAgIDU4LCAgICA1OSwgICAg
NjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0LAotICAgICAgNjUsICAgIDY2LCAgICA2Nywg
ICAgNjgsICAgIDY5LCAgICA3MCwgICAgLTEsICAgIDcyLCAgICA3MywgICAgNzQsCi0gICAgICA3
NSwgICAgNzYsICAgIDc3LCAgICA3OCwgICAgNzksICAgIDgwLCAgICA4MSwgICAgODIsICAgIC0x
LCAgICAtMSwKLSAgICAgIDg1LCAgICA4NiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMDQsCi0gICAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDEx
NCwKLSAgICAgMTE1LCAgIDExNiwgICAxMTcsICAgMTE4LCAgICAgMywgICAgIDQsICAgICA1LCAg
ICAgNiwgICAgIDcsICAgICA4LAotICAgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEz
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwKLSAg
ICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwg
ICAgMzcsICAgIDM4LAotICAgICAgMzksICAgIDQwLCAgICA0MSwgICAgLTEsICAgIDQzLCAgICA0
NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsCi0gICAgICA0OSwgICAgNTAsICAgIDUxLCAg
ICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgLTEsICAgIDU3LCAgICA1OCwKLSAgICAgIDU5
LCAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcs
ICAgIDY4LAotICAgICAgNjksICAgIDcwLCAgICAtMSwgICAgNzIsICAgIDczLCAgICA3NCwgICAg
NzUsICAgIDc2LCAgICA3NywgICAgNzgsCi0gICAgICA3OSwgICAgODAsICAgIDgxLCAgICA4Miwg
ICAgLTEsICAgIC0xLCAgICA4NSwgICAgODYsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LAotICAgICAgLTEsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgIDEwNCwgICAgIDgsICAg
ICA5LCAgICAxMCwgICAgMTEsCi0gICAgICAxMiwgICAgMTMsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgMTE0LCAgIDExNSwgICAxMTYsICAgMTE3LCAgIDExOCwKLSAgICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLAotICAg
ICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAg
ICA0MCwgICAgNDEsCi0gICAgICAtMSwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3
LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwKLSAgICAgIDUyLCAgICA1MywgICAgNTQsICAg
IDU1LCAgICAtMSwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLAotICAgICAgNjIs
ICAgIDYzLCAgICA2NCwgICAgNjUsICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwg
ICAgLTEsCi0gICAgICA3MiwgICAgNzMsICAgIDc0LCAgICA3NSwgICAgNzYsICAgIDc3LCAgICA3
OCwgICAgNzksICAgIDgwLCAgICA4MSwKLSAgICAgIDgyLCAgICAtMSwgICAgLTEsICAgIDg1LCAg
ICA4NiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgICA0LCAgICAgNSwgICAgIDYs
Ci0gICAgICAtMSwgICAgLTEsICAgMTA0LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAg
LTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTE1LCAgIDExNiwg
ICAxMTcsICAgMTE4LCAgICAtMSwgICAgMjUsICAgIDI2LAorICAgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgIDMsCisgICAg
ICAgNCwgICAgIDUsICAgICA2LCAgIDEwNCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAg
IDEyLCAgICAxMywKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTE0LCAgIDExNSwgICAxMTYs
ICAgMTE3LCAgIDExOCwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIDI1LCAgICAyNiwgICAg
MjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsCisgICAgICAzNCwg
ICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAg
ICA0MywKKyAgICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUw
LCAgICA1MSwgICAgNTIsICAgIDUzLAorICAgICAgNTQsICAgIDU1LCAgICAtMSwgICAgNTcsICAg
IDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsCisgICAgICA2NCwgICAgNjUs
ICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwgICAgLTEsICAgIDcyLCAgICA3MywK
KyAgICAgIDc0LCAgICA3NSwgICAgNzYsICAgIDc3LCAgICA3OCwgICAgNzksICAgIDgwLCAgICA4
MSwgICAgODIsICAgIC0xLAorICAgICAgLTEsICAgIDg1LCAgICA4NiwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwKKyAgICAg
MTA0LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAtMSwgICAg
LTEsICAgIC0xLAorICAgICAgLTEsICAgMTE1LCAgIDExNiwgICAxMTcsICAgMTE4LCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAyNSwgICAgMjYsCiAgICAgICAyNywgICAgMjgsICAgIDI5LCAgICAz
MCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwKLSAgICAgIDM3LCAg
ICAzOCwgICAgMzksICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNDUsICAg
IDQ2LAotICAgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIDU0LCAgICA1NSwgICAgLTEsCisgICAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAg
NDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwKKyAgICAgIDQ3LCAgICA0OCwg
ICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgIC0xLAog
ICAgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0
LCAgICA2NSwgICAgNjYsCi0gICAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwgICAgLTEsICAg
IDcyLCAgICA3MywgICAgNzQsICAgIC0xLCAgICA3NiwKKyAgICAgIDY3LCAgICA2OCwgICAgNjks
ICAgIDcwLCAgICAtMSwgICAgNzIsICAgIDczLCAgICA3NCwgICAgNzUsICAgIDc2LAogICAgICAg
NzcsICAgIC0xLCAgICAtMSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIC0xLCAgICAt
MSwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIDI1LCAgICAyNiwKICAgICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMw
LCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LApAQCAtMTM5Niw3ICsx
NDA0LDcgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eWNoZWNrW10gPQogICAgICAgIDYs
ICAgMTA0LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAtMSwg
ICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgMTE1LCAgIDExNiwgICAxMTcsICAgMTE4LCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAyNSwKICAgICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAg
ICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LAotICAgICAgMzYsICAgIDM3
LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgLTEsICAgIDQzLCAgICA0NCwgICAgNDUs
CisgICAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAg
NDMsICAgIDQ0LCAgICA0NSwKICAgICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwg
ICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LAogICAgICAgLTEsICAgIDU3LCAgICA1
OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2NCwgICAgNjUsCiAgICAg
ICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsICAgIC0xLCAgICA3MiwgICAgNzMsICAg
IDc0LCAgICA3NSwKQEAgLTE0MDUsNyArMTQxMyw3IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50
MTYgeXljaGVja1tdID0KICAgICAgIDExLCAgICAxMiwgICAgMTMsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAxMDksICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsCiAgICAgICAz
MSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5
LCAgICA0MCwKLSAgICAgIDQxLCAgICAtMSwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAg
IDQ3LCAgICA0OCwgICAgNDksICAgIDUwLAorICAgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQs
ICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsCiAgICAgICA1MSwgICAg
NTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgIC0xLCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2
MCwKICAgICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0LCAgICA2NSwgICAgNjYsICAgIDY3LCAg
ICA2OCwgICAgNjksICAgIDcwLAogICAgICAgLTEsICAgIDcyLCAgICA3MywgICAgNzQsICAgIDc1
LCAgICAtMSwgICAgNzcsICAgIC0xLCAgICAtMSwgICAgLTEsCkBAIC0xNDEzLDcgKzE0MjEsNyBA
QCBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDE2IHl5Y2hlY2tbXSA9CiAgICAgICAgNiwgICAgLTEs
ICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIC0xLCAgICAtMSwK
ICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAxMDksICAgIDI1LAogICAgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAg
ICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsCi0gICAgICAzNiwgICAgMzcsICAgIDM4
LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICAtMSwgICAgNDMsICAgIDQ0LCAgICA0NSwKKyAgICAg
IDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0MywgICAg
NDQsICAgIDQ1LAogICAgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwg
ICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsCiAgICAgICAtMSwgICAgNTcsICAgIDU4LCAgICA1
OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0LCAgICA2NSwKICAgICAgIDY2LCAg
ICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwgICAgLTEsICAgIDcyLCAgICA3MywgICAgNzQsICAg
IDc1LApAQCAtMTQyMiwxNCArMTQzMCwxNCBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDE2IHl5
Y2hlY2tbXSA9CiAgICAgICAxMSwgICAgMTIsICAgIDEzLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTA5
LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLAogICAgICAgMzEsICAg
IDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAg
NDAsCi0gICAgICA0MSwgICAgLTEsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0Nywg
ICAgNDgsICAgIDQ5LCAgICA1MCwKKyAgICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0
NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLAogICAgICAgNTEsICAgIDUyLCAg
ICA1MywgICAgNTQsICAgIDU1LCAgICAtMSwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsCiAg
ICAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2NCwgICAgNjUsICAgIDY2LCAgICA2NywgICAgNjgs
ICAgIDY5LCAgICA3MCwKICAgICAgIC0xLCAgICA3MiwgICAgNzMsICAgIDc0LCAgICA3NSwgICAg
LTEsICAgIDc3LCAgICAgMywgICAgIDQsICAgICA1LAogICAgICAgIDYsICAgICA3LCAgICAgOCwg
ICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAtMSwgICAgLTEsCiAgICAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAyNSwKICAgICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAg
IDMyLCAgICAzMywgICAgMzQsICAgIDM1LAotICAgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzks
ICAgIDQwLCAgICA0MSwgICAgLTEsICAgIDQzLCAgICA0NCwgICAgNDUsCisgICAgICAzNiwgICAg
MzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0
NSwKICAgICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAg
ICA1MywgICAgNTQsICAgIDU1LAogICAgICAgLTEsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYw
LCAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2NCwgICAgNjUsCiAgICAgICA2NiwgICAgNjcsICAg
IDY4LCAgICA2OSwgICAgNzAsICAgIC0xLCAgICA3MiwgICAgNzMsICAgIDc0LCAgICA3NSwKQEAg
LTE0MzcsMzEgKzE0NDUsMjQgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eWNoZWNrW10g
PQogICAgICAgMTEsICAgIDEyLCAgICAxMywgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjUs
ICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwKICAgICAgIDMxLCAgICAzMiwgICAg
MzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLAotICAg
ICAgNDEsICAgIC0xLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAg
ICA0OSwgICAgNTAsCisgICAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2
LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwKICAgICAgIDUxLCAgICA1MiwgICAgNTMsICAg
IDU0LCAgICA1NSwgICAgLTEsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLAogICAgICAgNjEs
ICAgIDYyLCAgICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwg
ICAgNzAsCi0gICAgICAtMSwgICAgNzIsICAgIDczLCAgICA3NCwgICAgNzUsICAgIC0xLCAgICA3
NywgICAgIDQsICAgICA1LCAgICAgNiwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLCAg
ICAxMSwgICAgMTIsICAgIDEzLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyNSwgICAgMjYs
Ci0gICAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAg
MzQsICAgIDM1LCAgICAzNiwKLSAgICAgIDM3LCAgICAzOCwgICAgMzksICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgNDUsICAgIDQ2LAotICAgICAgNDcsICAgIDQ4LCAgICA0
OSwgICAgNTAsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDU0LCAgICA1NSwgICAgLTEsCi0gICAg
ICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2MywgICAgNjQsICAg
IDY1LCAgICA2NiwKLSAgICAgIDY3LCAgICA2OCwgICAgNjksICAgIDcwLCAgICAtMSwgICAgNzIs
ICAgIDczLCAgICA3NCwgICAgLTEsICAgIC0xLAotICAgICAgNzcsICAgIDEwLCAgICAxMSwgICAg
MTIsICAgIDEzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyNSwgICAgMjYsICAgIDI3LCAg
ICAyOCwKLSAgICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1
LCAgICAzNiwgICAgMzcsICAgIDM4LAotICAgICAgMzksICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsCi0gICAgICA0OSwgICAgNTAs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDU0LCAgICA1NSwgICAgLTEsICAgIDU3LCAgICA1OCwK
LSAgICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2MywgICAgNjQsICAgIDY1LCAgICA2
NiwgICAgNjcsICAgIDY4LAotICAgICAgNjksICAgIDcwLCAgICAtMSwgICAgNzIsICAgIDczLCAg
ICA3NCwgICAgLTEsICAgIDc2LCAgICA3NywgICAgMTAsCi0gICAgICAxMSwgICAgMTIsICAgIDEz
LCAgICA4MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAg
MjksICAgIDMwLAotICAgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwg
ICAgMzcsICAgIDM4LCAgICAzOSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwKLSAgICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIDU0LCAgICA1NSwgICAgLTEsICAgIDU3LCAgICA1OCwgICAgNTksICAg
IDYwLAotICAgICAgNjEsICAgIDYyLCAgICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcs
ICAgIDY4LCAgICA2OSwgICAgNzAsCi0gICAgICAtMSwgICAgNzIsICAgIDczLCAgICA3NCwgICAg
LTEsICAgIC0xLCAgICA3NworICAgICAgLTEsICAgIDcyLCAgICA3MywgICAgNzQsICAgIDc1LCAg
ICAtMSwgICAgNzcsICAgIDEwLCAgICAxMSwgICAgMTIsCisgICAgICAxMywgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAg
IC0xLCAgICAtMSwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAg
MzEsICAgIDMyLAorICAgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwg
ICAgMzksICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIDQ1LCAgICA0
NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAg
ICA1NCwgICAgNTUsICAgIC0xLCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsICAg
IDYyLAorICAgICAgNjMsICAgIDY0LCAgICA2NSwgICAgNjYsICAgIDY3LCAgICA2OCwgICAgNjks
ICAgIDcwLCAgICAtMSwgICAgNzIsCisgICAgICA3MywgICAgNzQsICAgIC0xLCAgICA3NiwgICAg
NzcsICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICA4MiwKKyAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAor
ICAgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMy
LCAgICAzMywgICAgMzQsCisgICAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIDQ1LCAgICA0NiwgICAgNDcs
ICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDU0LAorICAgICAg
NTUsICAgIC0xLCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2
MywgICAgNjQsCisgICAgICA2NSwgICAgNjYsICAgIDY3LCAgICA2OCwgICAgNjksICAgIDcwLCAg
ICAtMSwgICAgNzIsICAgIDczLCAgICA3NCwKKyAgICAgIC0xLCAgICAtMSwgICAgNzcKIH07CiAK
ICAgLyogWVlTVE9TW1NUQVRFLU5VTV0gLS0gVGhlIChpbnRlcm5hbCBudW1iZXIgb2YgdGhlKSBh
Y2Nlc3NpbmcKQEAgLTE0NzAsNDYgKzE0NzEsNDUgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50
OCB5eXN0b3NbXSA9CiB7CiAgICAgICAgMCwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAg
ICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwKICAgICAgIDEyLCAgICAxMywgICAgMjUs
ICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLAotICAgICAg
MzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0
MSwgICAgNDMsCi0gICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAg
ICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywKLSAgICAgIDU0LCAgICA1NSwgICAgNTcsICAgIDU4
LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0LAotICAgICAgNjUsICAg
IDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwgICAgNzIsICAgIDczLCAgICA3NCwgICAg
NzUsCi0gICAgICA3NywgICAxNjAsICAgMTYxLCAgIDE2MiwgICAxNjMsICAgMTY0LCAgIDE2OSwg
ICAxNzAsICAgMTcxLCAgIDE3MiwKLSAgICAgMTc0LCAgIDE3NSwgICAxNzYsICAgMTc3LCAgIDE3
OCwgICAxODEsICAgMTgyLCAgIDE4MywgICAyMTgsICAgMjE5LAotICAgICAyMjAsICAgIDQ0LCAg
ICA3NiwgICAxNzIsICAgMTc1LCAgIDE3NywgICAgNDAsICAgIDQxLCAgICA3NiwgICAgNzcsCi0g
ICAgIDEwOCwgICAxMjksICAgMTA0LCAgIDExNCwgICAyMjEsICAgMTA1LCAgIDExMSwgICAgIDks
ICAgIDQwLCAgICA0MSwKLSAgICAgIDQyLCAgIDE2NiwgICAxNjcsICAgMTczLCAgIDExMSwgICAx
MTQsICAgIDc2LCAgIDEyOSwgICAxNzUsICAgIDc2LAotICAgICAxMTQsICAgMTU5LCAgIDE3Niwg
ICAxODEsICAgMTc1LCAgIDEwNiwgICAgIDAsICAgMjE5LCAgIDE3NSwgICAxODEsCi0gICAgIDE4
NSwgICAxMDgsICAgIDc2LCAgIDE3OSwgICAxODAsICAgMTA4LCAgIDIwMSwgICAxNjYsICAgMTY1
LCAgIDE2OCwKLSAgICAgMTc2LCAgIDE2NywgICAxMjksICAgMTA0LCAgIDEwNiwgICAxMTMsICAg
MTA4LCAgICAgMywgICAxNzQsICAgMTc2LAotICAgICAxODYsICAgMTg3LCAgICA3NiwgICAgNzgs
ICAgIDc5LCAgICA4MCwgICAgODEsICAgIDgyLCAgICA4NSwgICAgODYsCi0gICAgIDEwNCwgICAx
MDcsICAgMTE1LCAgIDExNiwgICAxMTcsICAgMTE4LCAgIDEzMCwgICAxMzEsICAgMTMyLCAgIDEz
NCwKLSAgICAgMTM1LCAgIDEzNiwgICAxMzcsICAgMTM4LCAgIDEzOSwgICAxNDAsICAgMTQxLCAg
IDE0MiwgICAxNDMsICAgMTQ0LAotICAgICAxNDUsICAgMTQ2LCAgIDE0NywgICAxNDgsICAgMTQ5
LCAgIDE1MCwgICAxNTEsICAgMTUyLCAgIDE1MywgICAxNTQsCi0gICAgIDE1OCwgICAxODEsICAg
MTE0LCAgIDE4NiwgICAxODQsICAgMTEzLCAgIDEwNSwgICAxMTEsICAgIDE0LCAgICAxNSwKLSAg
ICAgIDE2LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwg
ICAgNTYsICAgMTA4LAotICAgICAxMDksICAgMTE0LCAgIDE0MSwgICAxNTQsICAgMTU1LCAgIDE1
NywgICAxNjAsICAgMTYxLCAgIDE4MSwgICAxOTEsCi0gICAgIDE5MiwgICAxOTMsICAgMTk0LCAg
IDIwMiwgICAyMDMsICAgMjA0LCAgIDIwNiwgICAyMDgsICAgMjEwLCAgIDIxNywKLSAgICAgMTI5
LCAgIDE2NSwgICAxNjgsICAgMTA2LCAgIDExMywgICAxMDcsICAgMTU4LCAgIDE1NSwgICAxOTAs
ICAgMTc2LAotICAgICAxMjksICAgMTg4LCAgIDE4OSwgICAxMDksICAgMTg3LCAgIDE0MSwgICAx
NDEsICAgMTU3LCAgICA4NSwgICAgODYsCi0gICAgIDEwNiwgICAxMTAsICAgMTA1LCAgIDEwNSwg
ICAxMTEsICAgIDU1LCAgIDE1NSwgICAxMDQsICAgMTQxLCAgIDExOSwKLSAgICAgMTIwLCAgIDEy
MSwgICAxMTYsICAgMTE4LCAgICA4MywgICAgODQsICAgIDg3LCAgICA4OCwgICAxMjIsICAgMTIz
LAotICAgICAgODksICAgIDkwLCAgIDEyNiwgICAxMjUsICAgMTI0LCAgICA5MSwgICAgOTMsICAg
IDkyLCAgIDEyNywgICAxMDcsCi0gICAgIDEwOSwgICAxODYsICAgIDc5LCAgICA4MCwgICAxODAs
ICAgMTE0LCAgIDExNCwgICAyMTIsICAgMTA0LCAgIDEwNCwKLSAgICAgMTE0LCAgIDExNCwgICAx
NTcsICAgMTA0LCAgIDE1OCwgICAxMTIsICAgMTA0LCAgIDEwOSwgICAxOTUsICAgIDk0LAotICAg
ICAgOTUsICAgIDk2LCAgICA5NywgICAgOTgsICAgIDk5LCAgIDEwMCwgICAxMDEsICAgMTAyLCAg
IDEwMywgICAxMTMsCi0gICAgIDE1NiwgICAxMTEsICAgMTE0LCAgIDEwOSwgICAxOTIsICAgMTA2
LCAgIDEwNywgICAxNTgsICAgMTkwLCAgIDExMywKLSAgICAgMTA3LCAgIDE4OCwgICAxMDYsICAg
MTExLCAgIDExNCwgICAgNzYsICAgMTE0LCAgIDEwNSwgICAxMzMsICAgMTU3LAotICAgICAgNzYs
ICAgIDgyLCAgIDEzNiwgICAxNTUsICAgMTQxLCAgIDE0MSwgICAxNDEsICAgMTQzLCAgIDE0Mywg
ICAxNDQsCi0gICAgIDE0NCwgICAxNDUsICAgMTQ1LCAgIDE0NSwgICAxNDUsICAgMTQ2LCAgIDE0
NiwgICAxNDcsICAgMTQ4LCAgIDE0OSwKLSAgICAgMTUwLCAgIDE1MSwgICAxNTIsICAgMTU3LCAg
IDEwOSwgICAxOTgsICAgMTk5LCAgIDIwMCwgICAyMTMsICAgMTU3LAotICAgICAxMTQsICAgMTU3
LCAgIDExMiwgICAyMTEsICAgMjAyLCAgIDE1NSwgICAxNTUsICAgMTU4LCAgIDExMywgICAxMDcs
Ci0gICAgIDE5MCwgICAxMTMsICAgMTE0LCAgIDE1OCwgICAxODksICAgMTA2LCAgIDExNCwgICAx
MDcsICAgMTEyLCAgICA1NiwKLSAgICAgMjAxLCAgIDE5MywgICAxOTEsICAgMjAzLCAgIDIxNCwg
ICAxMDUsICAgMTA1LCAgIDE1NywgICAxNzEsICAgMTc0LAotICAgICAyMDksICAgMTk2LCAgIDEw
NywgICAxOTAsICAgMTEzLCAgIDE5MCwgICAxMDcsICAgMTU4LCAgIDE1NSwgICAxMDQsCi0gICAg
IDIwOSwgICAyMTUsICAgMjE2LCAgIDE5OCwgICAyMDUsICAgMjA3LCAgIDEyOSwgICAxMDUsICAg
MTA5LCAgIDE5MCwKLSAgICAgMTA3LCAgIDE1NywgICAxMTQsICAgMTA1LCAgICAxNywgICAxOTQs
ICAgMTEzLCAgIDE5MywgICAxOTcsICAgMjAxLAotICAgICAxMTQsICAgMTA1LCAgIDE1NywgICAx
OTcsICAgMTk4LCAgIDE5MCwgICAxMTQKKyAgICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAg
ICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLAorICAgICAgNDMsICAgIDQ0
LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIs
CisgICAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAg
NjEsICAgIDYyLCAgICA2MywKKyAgICAgIDY0LCAgICA2NSwgICAgNjYsICAgIDY3LCAgICA2OCwg
ICAgNjksICAgIDcwLCAgICA3MiwgICAgNzMsICAgIDc0LAorICAgICAgNzUsICAgIDc3LCAgIDE2
MCwgICAxNjEsICAgMTYyLCAgIDE2MywgICAxNjQsICAgMTY4LCAgIDE2OSwgICAxNzAsCisgICAg
IDE3MSwgICAxNzIsICAgMTczLCAgIDE3NCwgICAxNzUsICAgMTc2LCAgIDE3NywgICAxNzgsICAg
MTgxLCAgIDE4MiwKKyAgICAgMTgzLCAgIDIxOCwgICAyMTksICAgMjIwLCAgIDE3NywgICAgNzYs
ICAgIDc3LCAgIDEwOCwgICAxMjksICAgMTA0LAorICAgICAxMTQsICAgMjIxLCAgIDEwNSwgICAx
MTEsICAgMTY1LCAgIDE2NiwgICAxNjcsICAgMTcyLCAgIDE3NiwgICAxMTEsCisgICAgIDExNCwg
ICAgNzYsICAgMTI5LCAgICA3NiwgICAxMTQsICAgMTU5LCAgIDE3NCwgICAxNzYsICAgMTA2LCAg
ICAgMCwKKyAgICAgMjE5LCAgIDE4MSwgICAxODUsICAgMTA4LCAgICA3NiwgICAxNzksICAgMTgw
LCAgIDEwOCwgICAyMDEsICAgMTY2LAorICAgICAxNjUsICAgMTY3LCAgIDEyOSwgICAxMjksICAg
MTA0LCAgIDEwNiwgICAxMTMsICAgMTA4LCAgIDExNCwgICAxNzIsCisgICAgIDE3NiwgICAxODYs
ICAgMTg3LCAgICA3NiwgICAgNzgsICAgIDc5LCAgICA4MCwgICAgODEsICAgIDgyLCAgICA4NSwK
KyAgICAgIDg2LCAgIDEwNCwgICAxMDcsICAgMTE1LCAgIDExNiwgICAxMTcsICAgMTE4LCAgIDEz
MCwgICAxMzEsICAgMTMyLAorICAgICAxMzQsICAgMTM1LCAgIDEzNiwgICAxMzcsICAgMTM4LCAg
IDEzOSwgICAxNDAsICAgMTQxLCAgIDE0MiwgICAxNDMsCisgICAgIDE0NCwgICAxNDUsICAgMTQ2
LCAgIDE0NywgICAxNDgsICAgMTQ5LCAgIDE1MCwgICAxNTEsICAgMTUyLCAgIDE1MywKKyAgICAg
MTU0LCAgIDE1OCwgICAxODEsICAgMTE0LCAgIDE4NiwgICAxODQsICAgMTEzLCAgIDEwNSwgICAx
MTEsICAgIDE0LAorICAgICAgMTUsICAgIDE2LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwg
ICAgMjIsICAgIDIzLCAgICAyNCwgICAgNTYsCisgICAgIDEwOCwgICAxMDksICAgMTE0LCAgIDE0
MSwgICAxNTQsICAgMTU1LCAgIDE1NywgICAxNjAsICAgMTYxLCAgIDE4MSwKKyAgICAgMTkxLCAg
IDE5MiwgICAxOTMsICAgMTk0LCAgIDIwMiwgICAyMDMsICAgMjA0LCAgIDIwNiwgICAyMDgsICAg
MjEwLAorICAgICAyMTcsICAgMTA2LCAgIDEwNiwgICAxMTMsICAgMTA3LCAgIDE1OCwgICAxNTUs
ICAgMTkwLCAgIDE3NiwgICAxMjksCisgICAgIDE4OCwgICAxODksICAgMTA5LCAgIDE4NywgICAx
NDEsICAgMTQxLCAgIDE1NywgICAgODUsICAgIDg2LCAgIDEwNiwKKyAgICAgMTEwLCAgIDEwNSwg
ICAxMDUsICAgMTExLCAgICA1NSwgICAxNTUsICAgMTA0LCAgIDE0MSwgICAxMTksICAgMTIwLAor
ICAgICAxMjEsICAgMTE2LCAgIDExOCwgICAgODMsICAgIDg0LCAgICA4NywgICAgODgsICAgMTIy
LCAgIDEyMywgICAgODksCisgICAgICA5MCwgICAxMjYsICAgMTI1LCAgIDEyNCwgICAgOTEsICAg
IDkzLCAgICA5MiwgICAxMjcsICAgMTA3LCAgIDEwOSwKKyAgICAgMTg2LCAgICA3OSwgICAgODAs
ICAgMTgwLCAgIDExNCwgICAxMTQsICAgMjEyLCAgIDEwNCwgICAxMDQsICAgMTE0LAorICAgICAx
MTQsICAgMTU3LCAgIDEwNCwgICAxNTgsICAgMTEyLCAgIDEwNCwgICAxMDksICAgMTk1LCAgICA5
NCwgICAgOTUsCisgICAgICA5NiwgICAgOTcsICAgIDk4LCAgICA5OSwgICAxMDAsICAgMTAxLCAg
IDEwMiwgICAxMDMsICAgMTEzLCAgIDE1NiwKKyAgICAgMTExLCAgIDExNCwgICAxMDksICAgMTky
LCAgIDE1OCwgICAxMDcsICAgMTU4LCAgIDE5MCwgICAxMTMsICAgMTA3LAorICAgICAxODgsICAg
MTA2LCAgIDExMSwgICAxMTQsICAgIDc2LCAgIDExNCwgICAxMDUsICAgMTMzLCAgIDE1NywgICAg
NzYsCisgICAgICA4MiwgICAxMzYsICAgMTU1LCAgIDE0MSwgICAxNDEsICAgMTQxLCAgIDE0Mywg
ICAxNDMsICAgMTQ0LCAgIDE0NCwKKyAgICAgMTQ1LCAgIDE0NSwgICAxNDUsICAgMTQ1LCAgIDE0
NiwgICAxNDYsICAgMTQ3LCAgIDE0OCwgICAxNDksICAgMTUwLAorICAgICAxNTEsICAgMTUyLCAg
IDE1NywgICAxMDksICAgMTk4LCAgIDE5OSwgICAyMDAsICAgMjEzLCAgIDE1NywgICAxMTQsCisg
ICAgIDE1NywgICAxMTIsICAgMjExLCAgIDIwMiwgICAxNTUsICAgMTU1LCAgIDEwNywgICAxMTMs
ICAgMTA3LCAgIDE5MCwKKyAgICAgMTEzLCAgIDExNCwgICAxNTgsICAgMTg5LCAgIDEwNiwgICAx
MTQsICAgMTA3LCAgIDExMiwgICAgNTYsICAgMjAxLAorICAgICAxOTMsICAgMTkxLCAgIDIwMywg
ICAyMTQsICAgMTA1LCAgIDEwNSwgICAxNTcsICAgMTcwLCAgIDE3MiwgICAyMDksCisgICAgIDE5
NiwgICAxOTAsICAgMTEzLCAgIDE5MCwgICAxMDcsICAgMTU4LCAgIDE1NSwgICAxMDQsICAgMjA5
LCAgIDIxNSwKKyAgICAgMjE2LCAgIDE5OCwgICAyMDUsICAgMjA3LCAgIDEyOSwgICAxMDUsICAg
MTA5LCAgIDE5MCwgICAxMDcsICAgMTU3LAorICAgICAxMTQsICAgMTA1LCAgICAxNywgICAxOTQs
ICAgMTEzLCAgIDE5MywgICAxOTcsICAgMjAxLCAgIDExNCwgICAxMDUsCisgICAgIDE1NywgICAx
OTcsICAgMTk4LCAgIDE5MCwgICAxMTQKIH07CiAKICAgLyogWVlSMVtZWU5dIC0tIFN5bWJvbCBu
dW1iZXIgb2Ygc3ltYm9sIHRoYXQgcnVsZSBZWU4gZGVyaXZlcy4gICovCkBAIC0xNTI0LDI1ICsx
NTI0LDI0IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlyMVtdID0KICAgICAgMTQ5LCAg
IDE1MCwgICAxNTAsICAgMTUxLCAgIDE1MSwgICAxNTIsICAgMTUyLCAgIDE1MywgICAxNTMsICAg
MTU0LAogICAgICAxNTQsICAgMTU1LCAgIDE1NSwgICAxNTYsICAgMTU2LCAgIDE1NiwgICAxNTYs
ICAgMTU2LCAgIDE1NiwgICAxNTYsCiAgICAgIDE1NiwgICAxNTYsICAgMTU2LCAgIDE1NiwgICAx
NTcsICAgMTU3LCAgIDE1OCwgICAxNTksICAgMTYwLCAgIDE2MCwKLSAgICAgMTYwLCAgIDE2MCwg
ICAxNjAsICAgMTYwLCAgIDE2MCwgICAxNjEsICAgMTYyLCAgIDE2MiwgICAxNjMsICAgMTYzLAot
ICAgICAxNjQsICAgMTY1LCAgIDE2NSwgICAxNjYsICAgMTY2LCAgIDE2NiwgICAxNjYsICAgMTY3
LCAgIDE2NywgICAxNjcsCi0gICAgIDE2NywgICAxNjgsICAgMTY5LCAgIDE2OSwgICAxNjksICAg
MTY5LCAgIDE2OSwgICAxNjksICAgMTcwLCAgIDE3MCwKLSAgICAgMTcwLCAgIDE3MCwgICAxNzAs
ICAgMTcwLCAgIDE3MCwgICAxNzEsICAgMTcxLCAgIDE3MiwgICAxNzIsICAgMTczLAotICAgICAx
NzQsICAgMTc0LCAgIDE3NCwgICAxNzQsICAgMTc0LCAgIDE3NCwgICAxNzQsICAgMTc0LCAgIDE3
NCwgICAxNzQsCi0gICAgIDE3NSwgICAxNzUsICAgMTc1LCAgIDE3NSwgICAxNzUsICAgMTc1LCAg
IDE3NiwgICAxNzYsICAgMTc3LCAgIDE3NywKLSAgICAgMTc3LCAgIDE3OCwgICAxNzksICAgMTc5
LCAgIDE4MCwgICAxODAsICAgMTgwLCAgIDE4MSwgICAxODEsICAgMTgxLAotICAgICAxODIsICAg
MTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAx
ODIsCisgICAgIDE2MCwgICAxNjAsICAgMTYwLCAgIDE2MCwgICAxNjAsICAgMTYwLCAgIDE2MSwg
ICAxNjIsICAgMTYyLCAgIDE2MywKKyAgICAgMTYzLCAgIDE2NCwgICAxNjUsICAgMTY1LCAgIDE2
NiwgICAxNjYsICAgMTY2LCAgIDE2NiwgICAxNjcsICAgMTY4LAorICAgICAxNjgsICAgMTY4LCAg
IDE2OCwgICAxNjgsICAgMTY4LCAgIDE2OSwgICAxNjksICAgMTY5LCAgIDE2OSwgICAxNjksCisg
ICAgIDE2OSwgICAxNzAsICAgMTcwLCAgIDE3MSwgICAxNzEsICAgMTcyLCAgIDE3MiwgICAxNzMs
ICAgMTc0LCAgIDE3NCwKKyAgICAgMTc0LCAgIDE3NCwgICAxNzQsICAgMTc1LCAgIDE3NSwgICAx
NzUsICAgMTc1LCAgIDE3NSwgICAxNzUsICAgMTc1LAorICAgICAxNzUsICAgMTc2LCAgIDE3Nywg
ICAxNzcsICAgMTc3LCAgIDE3OCwgICAxNzksICAgMTc5LCAgIDE4MCwgICAxODAsCisgICAgIDE4
MCwgICAxODEsICAgMTgxLCAgIDE4MSwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgy
LCAgIDE4MiwKICAgICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAg
MTgyLCAgIDE4MiwgICAxODIsICAgMTgyLAogICAgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIs
ICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsCiAgICAgIDE4MiwgICAx
ODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4
MiwKLSAgICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODQsICAgMTgzLCAg
IDE4NSwgICAxODMsICAgMTg2LAotICAgICAxODYsICAgMTg3LCAgIDE4NywgICAxODgsICAgMTg4
LCAgIDE4OSwgICAxODksICAgMTkwLCAgIDE5MSwgICAxOTIsCi0gICAgIDE5MiwgICAxOTMsICAg
MTkzLCAgIDE5MywgICAxOTMsICAgMTkzLCAgIDE5MywgICAxOTMsICAgMTk0LCAgIDE5NSwKLSAg
ICAgMTk2LCAgIDE5NCwgICAxOTcsICAgMTk3LCAgIDE5OSwgICAxOTgsICAgMjAwLCAgIDE5OCwg
ICAyMDEsICAgMjAxLAotICAgICAyMDIsICAgMjAyLCAgIDIwMywgICAyMDMsICAgMjA0LCAgIDIw
NSwgICAyMDUsICAgMjA3LCAgIDIwNiwgICAyMDgsCi0gICAgIDIwOCwgICAyMDksICAgMjA5LCAg
IDIxMSwgICAyMTAsICAgMjEyLCAgIDIxMCwgICAyMTMsICAgMjEwLCAgIDIxNCwKLSAgICAgMjE0
LCAgIDIxNSwgICAyMTUsICAgMjE2LCAgIDIxNiwgICAyMTcsICAgMjE3LCAgIDIxNywgICAyMTcs
ICAgMjE3LAotICAgICAyMTgsICAgMjE4LCAgIDIxOSwgICAyMTksICAgMjIxLCAgIDIyMAorICAg
ICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAg
IDE4MiwgICAxODQsCisgICAgIDE4MywgICAxODUsICAgMTgzLCAgIDE4NiwgICAxODYsICAgMTg3
LCAgIDE4NywgICAxODgsICAgMTg4LCAgIDE4OSwKKyAgICAgMTg5LCAgIDE5MCwgICAxOTEsICAg
MTkyLCAgIDE5MiwgICAxOTMsICAgMTkzLCAgIDE5MywgICAxOTMsICAgMTkzLAorICAgICAxOTMs
ICAgMTkzLCAgIDE5NCwgICAxOTUsICAgMTk2LCAgIDE5NCwgICAxOTcsICAgMTk3LCAgIDE5OSwg
ICAxOTgsCisgICAgIDIwMCwgICAxOTgsICAgMjAxLCAgIDIwMSwgICAyMDIsICAgMjAyLCAgIDIw
MywgICAyMDMsICAgMjA0LCAgIDIwNSwKKyAgICAgMjA1LCAgIDIwNywgICAyMDYsICAgMjA4LCAg
IDIwOCwgICAyMDksICAgMjA5LCAgIDIxMSwgICAyMTAsICAgMjEyLAorICAgICAyMTAsICAgMjEz
LCAgIDIxMCwgICAyMTQsICAgMjE0LCAgIDIxNSwgICAyMTUsICAgMjE2LCAgIDIxNiwgICAyMTcs
CisgICAgIDIxNywgICAyMTcsICAgMjE3LCAgIDIxNywgICAyMTgsICAgMjE4LCAgIDIxOSwgICAy
MTksICAgMjIxLCAgIDIyMAogfTsKIAogICAvKiBZWVIyW1lZTl0gLS0gTnVtYmVyIG9mIHN5bWJv
bHMgb24gdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZiBydWxlIFlZTi4gICovCkBAIC0xNTU3LDI1ICsx
NTU2LDI0IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlyMltdID0KICAgICAgICAzLCAg
ICAgMSwgICAgIDMsICAgICAxLCAgICAgMywgICAgIDEsICAgICAzLCAgICAgMSwgICAgIDMsICAg
ICAxLAogICAgICAgIDUsICAgICAxLCAgICAgMywgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEs
ICAgICAxLCAgICAgMSwgICAgIDEsCiAgICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAg
IDEsICAgICAzLCAgICAgMSwgICAgIDIsICAgICAyLCAgICAgMiwKLSAgICAgICA0LCAgICAgNSwg
ICAgIDYsICAgICA5LCAgICAgMiwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDIsICAgICAzLAot
ICAgICAgIDMsICAgICAyLCAgICAgNSwgICAgIDMsICAgICAyLCAgICAgMywgICAgIDIsICAgICAw
LCAgICAgMSwgICAgIDEsCi0gICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMywgICAgIDYsICAg
ICA3LCAgICAgOCwgICAgIDUsICAgICAxLCAgICAgMiwKLSAgICAgICA1LCAgICAgNiwgICAgIDcs
ICAgICA0LCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLAotICAgICAg
IDEsICAgICAxLCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAyLCAgICAg
MiwgICAgIDMsCi0gICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMiwgICAgIDIsICAgICAxLCAg
ICAgMSwgICAgIDIsICAgICAxLCAgICAgMSwKLSAgICAgICAxLCAgICAgNCwgICAgIDEsICAgICAz
LCAgICAgMSwgICAgIDMsICAgICAzLCAgICAgMSwgICAgIDMsICAgICA0LAorICAgICAgIDQsICAg
ICA1LCAgICAgNiwgICAgIDksICAgICAyLCAgICAgMywgICAgIDIsICAgICAxLCAgICAgMSwgICAg
IDIsCisgICAgICAgMywgICAgIDMsICAgICAyLCAgICAgNSwgICAgIDIsICAgICAxLCAgICAgMiwg
ICAgIDEsICAgICAxLCAgICAgMSwKKyAgICAgICAzLCAgICAgNiwgICAgIDcsICAgICA4LCAgICAg
NSwgICAgIDEsICAgICAyLCAgICAgNSwgICAgIDYsICAgICA3LAorICAgICAgIDQsICAgICAxLCAg
ICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsCiAg
ICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEs
ICAgICAxLCAgICAgMSwKKyAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAg
IDQsICAgICAxLCAgICAgMywgICAgIDEsICAgICAzLAorICAgICAgIDMsICAgICAxLCAgICAgMywg
ICAgIDQsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsCiAgICAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAx
LCAgICAgMSwKICAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICAxLCAgICAgMSwgICAgIDEsICAgICAxLAogICAgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEs
ICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsCi0gICAgICAgMSwgICAg
IDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAwLCAgICAgNiwgICAgIDAsICAgICA1LCAgICAg
MSwKLSAgICAgICAyLCAgICAgMywgICAgIDQsICAgICAxLCAgICAgMywgICAgIDEsICAgICA0LCAg
ICAgMSwgICAgIDEsICAgICAxLAotICAgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAx
LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMiwgICAgIDAsCi0gICAgICAgMCwgICAgIDUsICAg
ICAxLCAgICAgMSwgICAgIDAsICAgICAyLCAgICAgMCwgICAgIDIsICAgICAyLCAgICAgMywKLSAg
ICAgICAxLCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgNSwgICAgIDMsICAgICAxLCAgICAgMCwg
ICAgIDYsICAgICAzLAotICAgICAgIDIsICAgICAxLCAgICAgNCwgICAgIDAsICAgICA2LCAgICAg
MCwgICAgIDgsICAgICAwLCAgICAgNywgICAgIDEsCi0gICAgICAgMSwgICAgIDEsICAgICAwLCAg
ICAgMiwgICAgIDMsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAzLCAgICAgMiwKLSAgICAgICAx
LCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMCwgICAgIDMKKyAgICAgICAxLCAgICAgMSwgICAg
IDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAwLAorICAg
ICAgIDYsICAgICAwLCAgICAgNSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICAxLCAg
ICAgMywgICAgIDEsCisgICAgICAgNCwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAx
LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwKKyAgICAgICAxLCAgICAgMSwgICAgIDIsICAg
ICAwLCAgICAgMCwgICAgIDUsICAgICAxLCAgICAgMSwgICAgIDAsICAgICAyLAorICAgICAgIDAs
ICAgICAyLCAgICAgMiwgICAgIDMsICAgICAxLCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgNSwg
ICAgIDMsCisgICAgICAgMSwgICAgIDAsICAgICA2LCAgICAgMywgICAgIDIsICAgICAxLCAgICAg
NCwgICAgIDAsICAgICA2LCAgICAgMCwKKyAgICAgICA4LCAgICAgMCwgICAgIDcsICAgICAxLCAg
ICAgMSwgICAgIDEsICAgICAwLCAgICAgMiwgICAgIDMsICAgICAyLAorICAgICAgIDIsICAgICAy
LCAgICAgMywgICAgIDIsICAgICAxLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMCwgICAgIDMK
IH07CiAKIApAQCAtMjQ3Myw4ICsyNDcxLDcgQEAgeXlyZWR1Y2U6CiAgIGNhc2UgMTc6CiAKICAg
ICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5pbnRlZ2VyRXJyb3JDaGVjaygoeXl2c3BbMF0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICJbXSIpKQotICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOworICAgICAgICBjb250ZXh0LT5jaGVja0lzU2NhbGFySW50ZWdlcigoeXl2c3BbMF0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICJbXSIpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgfQog
CkBAIC0yNTA1LDcgKzI1MDIsNyBAQCB5eXJlZHVjZToKICAgY2FzZSAyMDoKIAogICAgIHsKLSAg
ICAgICAgRVMzX09OTFkoIiIsICh5eWxzcFswXSksICJtZXRob2RzIik7CisgICAgICAgIEVTM19P
Ul9ORVdFUigiIiwgKHl5bHNwWzBdKSwgIm1ldGhvZHMiKTsKICAgICAgICAgKHl5dmFsLmludGVy
bSkgPSAoeXl2c3BbMF0uaW50ZXJtKTsKICAgICAgICAgKHl5dmFsLmludGVybSkubm9kZVBhaXIu
bm9kZTIgPSAoeXl2c3BbLTJdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgIH0KQEAgLTI1
NTIsNyArMjU0OSw3IEBAIHl5cmVkdWNlOgogICAgICAgICBjb25zdCBUVHlwZSAqdHlwZSA9IG5l
dyBUVHlwZSgoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKSk7CiAg
ICAgICAgICh5eXZzcFstMV0uaW50ZXJtLmZ1bmN0aW9uKS0+YWRkUGFyYW1ldGVyKFRDb25zdFBh
cmFtZXRlcih0eXBlKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmZ1bmN0aW9uID0gKHl5dnNw
Wy0xXS5pbnRlcm0uZnVuY3Rpb24pOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5ub2RlUGFpci5u
b2RlMSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKCh5eXZzcFswXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWzBdKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0p
Lm5vZGVQYWlyLm5vZGUxID0gVEludGVybWVkaWF0ZTo6TWFrZUFnZ3JlZ2F0ZSgoeXl2c3BbMF0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFswXSkpOwogICAgIH0KIAogICAgIGJyZWFr
OwpAQCAtMjU4MCw3ICsyNTc3LDcgQEAgeXlyZWR1Y2U6CiAKICAgICB7CiAgICAgICAgIGlmICgo
eXl2c3BbMF0uaW50ZXJtLnR5cGUpLmFycmF5KSB7Ci0gICAgICAgICAgICBFUzNfT05MWSgiW10i
LCAoeXlsc3BbMF0pLCAiYXJyYXkgY29uc3RydWN0b3IiKTsKKyAgICAgICAgICAgIEVTM19PUl9O
RVdFUigiW10iLCAoeXlsc3BbMF0pLCAiYXJyYXkgY29uc3RydWN0b3IiKTsKICAgICAgICAgfQog
ICAgICAgICAoeXl2YWwuaW50ZXJtLmZ1bmN0aW9uKSA9IGNvbnRleHQtPmFkZENvbnN0cnVjdG9y
RnVuYygoeXl2c3BbMF0uaW50ZXJtLnR5cGUpKTsKICAgICB9CkBAIC0yNTkwLDggKzI1ODcsNyBA
QCB5eXJlZHVjZToKICAgY2FzZSAyOToKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnJl
c2VydmVkRXJyb3JDaGVjaygoeXlsc3BbMF0pLCAqKHl5dnNwWzBdLmxleCkuc3RyaW5nKSkKLSAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgY29udGV4dC0+Y2hlY2tJc05v
dFJlc2VydmVkKCh5eWxzcFswXSksICooeXl2c3BbMF0ubGV4KS5zdHJpbmcpOwogICAgICAgICBj
b25zdCBUVHlwZSAqdHlwZSA9IFRDYWNoZTo6Z2V0VHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQp
OwogICAgICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uID0gbmV3IFRGdW5jdGlvbigoeXl2c3BbMF0u
bGV4KS5zdHJpbmcsIHR5cGUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmZ1bmN0aW9uKSA9IGZ1
bmN0aW9uOwpAQCAtMjYwMiw4ICsyNTk4LDcgQEAgeXlyZWR1Y2U6CiAgIGNhc2UgMzA6CiAKICAg
ICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5bHNwWzBdKSwg
Kih5eXZzcFswXS5sZXgpLnN0cmluZykpCi0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CisgICAgICAgIGNvbnRleHQtPmNoZWNrSXNOb3RSZXNlcnZlZCgoeXlsc3BbMF0pLCAqKHl5dnNw
WzBdLmxleCkuc3RyaW5nKTsKICAgICAgICAgY29uc3QgVFR5cGUgKnR5cGUgPSBUQ2FjaGU6Omdl
dFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKICAgICAgICAgVEZ1bmN0aW9uICpmdW5jdGlv
biA9IG5ldyBURnVuY3Rpb24oKHl5dnNwWzBdLmxleCkuc3RyaW5nLCB0eXBlKTsKICAgICAgICAg
KHl5dmFsLmludGVybS5mdW5jdGlvbikgPSBmdW5jdGlvbjsKQEAgLTI2NjcsNyArMjY2Miw3IEBA
IHl5cmVkdWNlOgogICBjYXNlIDM4OgogCiAgICAgewotICAgICAgICBFUzNfT05MWSgifiIsICh5
eWxvYyksICJiaXQtd2lzZSBvcGVyYXRvciIpOworICAgICAgICBFUzNfT1JfTkVXRVIoIn4iLCAo
eXlsb2MpLCAiYml0LXdpc2Ugb3BlcmF0b3IiKTsKICAgICAgICAgKHl5dmFsLmludGVybSkub3Ag
PSBFT3BCaXR3aXNlTm90OwogICAgIH0KIApAQCAtMjY5OCw3ICsyNjkzLDcgQEAgeXlyZWR1Y2U6
CiAgIGNhc2UgNDI6CiAKICAgICB7Ci0gICAgICAgIEVTM19PTkxZKCIlIiwgKHl5bHNwWy0xXSks
ICJpbnRlZ2VyIG1vZHVsdXMgb3BlcmF0b3IiKTsKKyAgICAgICAgRVMzX09SX05FV0VSKCIlIiwg
KHl5bHNwWy0xXSksICJpbnRlZ2VyIG1vZHVsdXMgb3BlcmF0b3IiKTsKICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkQmluYXJ5TWF0aChFT3BJTW9k
LCAoeXl2c3BbLTJdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbMF0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSksICh5eWxzcFstMV0pKTsKICAgICB9CiAKQEAgLTI3MzUsNyArMjczMCw3
IEBAIHl5cmVkdWNlOgogICBjYXNlIDQ3OgogCiAgICAgewotICAgICAgICBFUzNfT05MWSgiPDwi
LCAoeXlsc3BbLTFdKSwgImJpdC13aXNlIG9wZXJhdG9yIik7CisgICAgICAgIEVTM19PUl9ORVdF
UigiPDwiLCAoeXlsc3BbLTFdKSwgImJpdC13aXNlIG9wZXJhdG9yIik7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZEJpbmFyeU1hdGgoRU9wQml0
U2hpZnRMZWZ0LCAoeXl2c3BbLTJdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbMF0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFstMV0pKTsKICAgICB9CiAKQEAgLTI3NDQs
NyArMjczOSw3IEBAIHl5cmVkdWNlOgogICBjYXNlIDQ4OgogCiAgICAgewotICAgICAgICBFUzNf
T05MWSgiPj4iLCAoeXlsc3BbLTFdKSwgImJpdC13aXNlIG9wZXJhdG9yIik7CisgICAgICAgIEVT
M19PUl9ORVdFUigiPj4iLCAoeXlsc3BbLTFdKSwgImJpdC13aXNlIG9wZXJhdG9yIik7CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZEJpbmFyeU1h
dGgoRU9wQml0U2hpZnRSaWdodCwgKHl5dnNwWy0yXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
KHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbLTFdKSk7CiAgICAgfQog
CkBAIC0yODE5LDcgKzI4MTQsNyBAQCB5eXJlZHVjZToKICAgY2FzZSA1ODoKIAogICAgIHsKLSAg
ICAgICAgRVMzX09OTFkoIiYiLCAoeXlsc3BbLTFdKSwgImJpdC13aXNlIG9wZXJhdG9yIik7Cisg
ICAgICAgIEVTM19PUl9ORVdFUigiJiIsICh5eWxzcFstMV0pLCAiYml0LXdpc2Ugb3BlcmF0b3Ii
KTsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRk
QmluYXJ5TWF0aChFT3BCaXR3aXNlQW5kLCAoeXl2c3BbLTJdLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFstMV0pKTsKICAg
ICB9CiAKQEAgLTI4MzQsNyArMjgyOSw3IEBAIHl5cmVkdWNlOgogICBjYXNlIDYwOgogCiAgICAg
ewotICAgICAgICBFUzNfT05MWSgiXiIsICh5eWxzcFstMV0pLCAiYml0LXdpc2Ugb3BlcmF0b3Ii
KTsKKyAgICAgICAgRVMzX09SX05FV0VSKCJeIiwgKHl5bHNwWy0xXSksICJiaXQtd2lzZSBvcGVy
YXRvciIpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0
LT5hZGRCaW5hcnlNYXRoKEVPcEJpdHdpc2VYb3IsICh5eXZzcFstMl0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWy0xXSkp
OwogICAgIH0KIApAQCAtMjg0OSw3ICsyODQ0LDcgQEAgeXlyZWR1Y2U6CiAgIGNhc2UgNjI6CiAK
ICAgICB7Ci0gICAgICAgIEVTM19PTkxZKCJ8IiwgKHl5bHNwWy0xXSksICJiaXQtd2lzZSBvcGVy
YXRvciIpOworICAgICAgICBFUzNfT1JfTkVXRVIoInwiLCAoeXlsc3BbLTFdKSwgImJpdC13aXNl
IG9wZXJhdG9yIik7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNv
bnRleHQtPmFkZEJpbmFyeU1hdGgoRU9wQml0d2lzZU9yLCAoeXl2c3BbLTJdLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFst
MV0pKTsKICAgICB9CiAKQEAgLTI5MjAsOCArMjkxNSw3IEBAIHl5cmVkdWNlOgogICBjYXNlIDcy
OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXlsc3Bb
LTFdKSwgImFzc2lnbiIsICh5eXZzcFstMl0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQotICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICBjb250ZXh0LT5jaGVja0NhbkJl
TFZhbHVlKCh5eWxzcFstMV0pLCAiYXNzaWduIiwgKHl5dnNwWy0yXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRl
eHQtPmFkZEFzc2lnbigoeXl2c3BbLTFdLmludGVybSkub3AsICh5eXZzcFstMl0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSksICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNw
Wy0xXSkpOwogICAgIH0KIApAQCAtMjk0OCw3ICsyOTQyLDcgQEAgeXlyZWR1Y2U6CiAgIGNhc2Ug
NzY6CiAKICAgICB7Ci0gICAgICAgIEVTM19PTkxZKCIlPSIsICh5eWxvYyksICJpbnRlZ2VyIG1v
ZHVsdXMgb3BlcmF0b3IiKTsKKyAgICAgICAgRVMzX09SX05FV0VSKCIlPSIsICh5eWxvYyksICJp
bnRlZ2VyIG1vZHVsdXMgb3BlcmF0b3IiKTsKICAgICAgICAgKHl5dmFsLmludGVybSkub3AgPSBF
T3BJTW9kQXNzaWduOwogICAgIH0KIApAQCAtMjk2OSw3ICsyOTYzLDcgQEAgeXlyZWR1Y2U6CiAg
IGNhc2UgNzk6CiAKICAgICB7Ci0gICAgICAgIEVTM19PTkxZKCI8PD0iLCAoeXlsb2MpLCAiYml0
LXdpc2Ugb3BlcmF0b3IiKTsKKyAgICAgICAgRVMzX09SX05FV0VSKCI8PD0iLCAoeXlsb2MpLCAi
Yml0LXdpc2Ugb3BlcmF0b3IiKTsKICAgICAgICAgKHl5dmFsLmludGVybSkub3AgPSBFT3BCaXRT
aGlmdExlZnRBc3NpZ247CiAgICAgfQogCkBAIC0yOTc4LDcgKzI5NzIsNyBAQCB5eXJlZHVjZToK
ICAgY2FzZSA4MDoKIAogICAgIHsKLSAgICAgICAgRVMzX09OTFkoIj4+PSIsICh5eWxvYyksICJi
aXQtd2lzZSBvcGVyYXRvciIpOworICAgICAgICBFUzNfT1JfTkVXRVIoIj4+PSIsICh5eWxvYyks
ICJiaXQtd2lzZSBvcGVyYXRvciIpOwogICAgICAgICAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcEJp
dFNoaWZ0UmlnaHRBc3NpZ247CiAgICAgfQogCkBAIC0yOTg3LDcgKzI5ODEsNyBAQCB5eXJlZHVj
ZToKICAgY2FzZSA4MToKIAogICAgIHsKLSAgICAgICAgRVMzX09OTFkoIiY9IiwgKHl5bG9jKSwg
ImJpdC13aXNlIG9wZXJhdG9yIik7CisgICAgICAgIEVTM19PUl9ORVdFUigiJj0iLCAoeXlsb2Mp
LCAiYml0LXdpc2Ugb3BlcmF0b3IiKTsKICAgICAgICAgKHl5dmFsLmludGVybSkub3AgPSBFT3BC
aXR3aXNlQW5kQXNzaWduOwogICAgIH0KIApAQCAtMjk5Niw3ICsyOTkwLDcgQEAgeXlyZWR1Y2U6
CiAgIGNhc2UgODI6CiAKICAgICB7Ci0gICAgICAgIEVTM19PTkxZKCJePSIsICh5eWxvYyksICJi
aXQtd2lzZSBvcGVyYXRvciIpOworICAgICAgICBFUzNfT1JfTkVXRVIoIl49IiwgKHl5bG9jKSwg
ImJpdC13aXNlIG9wZXJhdG9yIik7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wQml0
d2lzZVhvckFzc2lnbjsKICAgICB9CiAKQEAgLTMwMDUsNyArMjk5OSw3IEBAIHl5cmVkdWNlOgog
ICBjYXNlIDgzOgogCiAgICAgewotICAgICAgICBFUzNfT05MWSgifD0iLCAoeXlsb2MpLCAiYml0
LXdpc2Ugb3BlcmF0b3IiKTsKKyAgICAgICAgRVMzX09SX05FV0VSKCJ8PSIsICh5eWxvYyksICJi
aXQtd2lzZSBvcGVyYXRvciIpOwogICAgICAgICAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcEJpdHdp
c2VPckFzc2lnbjsKICAgICB9CiAKQEAgLTMwMzAsOCArMzAyNCw3IEBAIHl5cmVkdWNlOgogICBj
YXNlIDg2OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Y29uc3RFcnJvckNoZWNrKCh5
eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCi0gICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CisgICAgICAgIGNvbnRleHQtPmNoZWNrSXNDb25zdCgoeXl2c3BbMF0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSkpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgfQogCkBAIC0zMDQw
LDggKzMwMzMsNyBAQCB5eXJlZHVjZToKICAgY2FzZSA4NzoKIAogICAgIHsKLSAgICAgICAgaWYg
KGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oKHl5bHNwWy0xXSksICooeXl2c3BbLTFd
LmxleCkuc3RyaW5nKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAg
Y29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbigoeXlsc3BbLTFdKSwgKih5eXZzcFstMV0u
bGV4KS5zdHJpbmcpOwogICAgICAgICAoeXl2YWwubGV4KSA9ICh5eXZzcFstMV0ubGV4KTsKICAg
ICB9CiAKQEAgLTMwNzEsMTEgKzMwNjMsOSBAQCB5eXJlZHVjZToKICAgICB7CiAgICAgICAgIGlm
ICgoKHl5dnNwWy0yXS5pbnRlcm0ucHJlY2lzaW9uKSA9PSBFYnBIaWdoKSAmJiAoY29udGV4dC0+
Z2V0U2hhZGVyVHlwZSgpID09IEdMX0ZSQUdNRU5UX1NIQURFUikgJiYgIWNvbnRleHQtPmdldEZy
YWdtZW50UHJlY2lzaW9uSGlnaCgpKSB7CiAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXls
c3BbLTNdKSwgInByZWNpc2lvbiBpcyBub3Qgc3VwcG9ydGVkIGluIGZyYWdtZW50IHNoYWRlciIs
ICJoaWdocCIpOwotICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAg
ICAgICAgIGlmICghY29udGV4dC0+c3ltYm9sVGFibGUuc2V0RGVmYXVsdFByZWNpc2lvbiggKHl5
dnNwWy0xXS5pbnRlcm0udHlwZSksICh5eXZzcFstMl0uaW50ZXJtLnByZWNpc2lvbikgKSkgewot
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWy0zXSksICJpbGxlZ2FsIHR5cGUgYXJn
dW1lbnQgZm9yIGRlZmF1bHQgcHJlY2lzaW9uIHF1YWxpZmllciIsIGdldEJhc2ljU3RyaW5nKCh5
eXZzcFstMV0uaW50ZXJtLnR5cGUpLnR5cGUpKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFstM10pLCAiaWxsZWdhbCB0
eXBlIGFyZ3VtZW50IGZvciBkZWZhdWx0IHByZWNpc2lvbiBxdWFsaWZpZXIiLCBnZXRCYXNpY1N0
cmluZygoeXl2c3BbLTFdLmludGVybS50eXBlKS5nZXRCYXNpY1R5cGUoKSkpOwogICAgICAgICB9
CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAwOwogICAgIH0KQEAgLTMwODUs
OCArMzA3NSw4IEBAIHl5cmVkdWNlOgogICBjYXNlIDkxOgogCiAgICAgewotICAgICAgICBFUzNf
T05MWShnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWy00XS5pbnRlcm0udHlwZSkucXVhbGlmaWVy
KSwgKHl5bHNwWy00XSksICJpbnRlcmZhY2UgYmxvY2tzIik7Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5hZGRJbnRlcmZhY2VCbG9jaygoeXl2c3BbLTRdLmlu
dGVybS50eXBlKSwgKHl5bHNwWy0zXSksICooeXl2c3BbLTNdLmxleCkuc3RyaW5nLCAoeXl2c3Bb
LTJdLmludGVybS5maWVsZExpc3QpLCBOVUxMLCAoeXlsb2MpLCBOVUxMLCAoeXlsb2MpKTsKKyAg
ICAgICAgRVMzX09SX05FV0VSKCh5eXZzcFstM10ubGV4KS5zdHJpbmctPmNfc3RyKCksICh5eWxz
cFstNF0pLCAiaW50ZXJmYWNlIGJsb2NrcyIpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bU5vZGUpID0gY29udGV4dC0+YWRkSW50ZXJmYWNlQmxvY2soKih5eXZzcFstNF0uaW50ZXJtLnR5
cGVRdWFsaWZpZXJCdWlsZGVyKSwgKHl5bHNwWy0zXSksICooeXl2c3BbLTNdLmxleCkuc3RyaW5n
LCAoeXl2c3BbLTJdLmludGVybS5maWVsZExpc3QpLCBOVUxMLCAoeXlsb2MpLCBOVUxMLCAoeXls
b2MpKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTMwOTQsOCArMzA4NCw4IEBAIHl5cmVkdWNl
OgogICBjYXNlIDkyOgogCiAgICAgewotICAgICAgICBFUzNfT05MWShnZXRRdWFsaWZpZXJTdHJp
bmcoKHl5dnNwWy01XS5pbnRlcm0udHlwZSkucXVhbGlmaWVyKSwgKHl5bHNwWy01XSksICJpbnRl
cmZhY2UgYmxvY2tzIik7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250
ZXh0LT5hZGRJbnRlcmZhY2VCbG9jaygoeXl2c3BbLTVdLmludGVybS50eXBlKSwgKHl5bHNwWy00
XSksICooeXl2c3BbLTRdLmxleCkuc3RyaW5nLCAoeXl2c3BbLTNdLmludGVybS5maWVsZExpc3Qp
LCAoeXl2c3BbLTFdLmxleCkuc3RyaW5nLCAoeXlsc3BbLTFdKSwgTlVMTCwgKHl5bG9jKSk7Cisg
ICAgICAgIEVTM19PUl9ORVdFUigoeXl2c3BbLTRdLmxleCkuc3RyaW5nLT5jX3N0cigpLCAoeXls
c3BbLTVdKSwgImludGVyZmFjZSBibG9ja3MiKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1Ob2RlKSA9IGNvbnRleHQtPmFkZEludGVyZmFjZUJsb2NrKCooeXl2c3BbLTVdLmludGVybS50
eXBlUXVhbGlmaWVyQnVpbGRlciksICh5eWxzcFstNF0pLCAqKHl5dnNwWy00XS5sZXgpLnN0cmlu
ZywgKHl5dnNwWy0zXS5pbnRlcm0uZmllbGRMaXN0KSwgKHl5dnNwWy0xXS5sZXgpLnN0cmluZywg
KHl5bHNwWy0xXSksIE5VTEwsICh5eWxvYykpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzEw
Myw4ICszMDkzLDggQEAgeXlyZWR1Y2U6CiAgIGNhc2UgOTM6CiAKICAgICB7Ci0gICAgICAgIEVT
M19PTkxZKGdldFF1YWxpZmllclN0cmluZygoeXl2c3BbLThdLmludGVybS50eXBlKS5xdWFsaWZp
ZXIpLCAoeXlsc3BbLThdKSwgImludGVyZmFjZSBibG9ja3MiKTsKLSAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmFkZEludGVyZmFjZUJsb2NrKCh5eXZzcFstOF0u
aW50ZXJtLnR5cGUpLCAoeXlsc3BbLTddKSwgKih5eXZzcFstN10ubGV4KS5zdHJpbmcsICh5eXZz
cFstNl0uaW50ZXJtLmZpZWxkTGlzdCksICh5eXZzcFstNF0ubGV4KS5zdHJpbmcsICh5eWxzcFst
NF0pLCAoeXl2c3BbLTJdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbLTNdKSk7Cisg
ICAgICAgIEVTM19PUl9ORVdFUigoeXl2c3BbLTddLmxleCkuc3RyaW5nLT5jX3N0cigpLCAoeXls
c3BbLThdKSwgImludGVyZmFjZSBibG9ja3MiKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1Ob2RlKSA9IGNvbnRleHQtPmFkZEludGVyZmFjZUJsb2NrKCooeXl2c3BbLThdLmludGVybS50
eXBlUXVhbGlmaWVyQnVpbGRlciksICh5eWxzcFstN10pLCAqKHl5dnNwWy03XS5sZXgpLnN0cmlu
ZywgKHl5dnNwWy02XS5pbnRlcm0uZmllbGRMaXN0KSwgKHl5dnNwWy00XS5sZXgpLnN0cmluZywg
KHl5bHNwWy00XSksICh5eXZzcFstMl0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFst
M10pKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTMxMTIsNyArMzEwMiw3IEBAIHl5cmVkdWNl
OgogICBjYXNlIDk0OgogCiAgICAgewotICAgICAgICBjb250ZXh0LT5wYXJzZUdsb2JhbExheW91
dFF1YWxpZmllcigoeXl2c3BbLTFdLmludGVybS50eXBlKSk7CisgICAgICAgIGNvbnRleHQtPnBh
cnNlR2xvYmFsTGF5b3V0UXVhbGlmaWVyKCooeXl2c3BbLTFdLmludGVybS50eXBlUXVhbGlmaWVy
QnVpbGRlcikpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gMDsKICAgICB9
CiAKQEAgLTMxMjEsNyArMzExMSw3IEBAIHl5cmVkdWNlOgogICBjYXNlIDk1OgogCiAgICAgewot
ICAgICAgICAoeXl2YWwuaW50ZXJtKS5mdW5jdGlvbiA9IGNvbnRleHQtPnBhcnNlRnVuY3Rpb25E
ZWNsYXJhdG9yKCh5eWxzcFswXSksICh5eXZzcFstMV0uaW50ZXJtLmZ1bmN0aW9uKSk7CisgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5wYXJzZUludmFyaWFudERl
Y2xhcmF0aW9uKCooeXl2c3BbLTJdLmludGVybS50eXBlUXVhbGlmaWVyQnVpbGRlciksICh5eWxz
cFstMV0pLCAoeXl2c3BbLTFdLmxleCkuc3RyaW5nLCAoeXl2c3BbLTFdLmxleCkuc3ltYm9sKTsK
ICAgICB9CiAKICAgICBicmVhazsKQEAgLTMxMjksNyArMzExOSw4IEBAIHl5cmVkdWNlOgogICBj
YXNlIDk2OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmZ1bmN0aW9uKSA9ICh5eXZz
cFswXS5pbnRlcm0uZnVuY3Rpb24pOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5mdW5jdGlvbiA9
IGNvbnRleHQtPnBhcnNlRnVuY3Rpb25EZWNsYXJhdG9yKCh5eWxzcFswXSksICh5eXZzcFstMV0u
aW50ZXJtLmZ1bmN0aW9uKSk7CisgICAgICAgIGNvbnRleHQtPmV4aXRGdW5jdGlvbkRlY2xhcmF0
aW9uKCk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zMTQ1LDYgKzMxMzYsMTQgQEAgeXlyZWR1
Y2U6CiAgIGNhc2UgOTg6CiAKICAgICB7CisgICAgICAgICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24p
ID0gKHl5dnNwWzBdLmludGVybS5mdW5jdGlvbik7CisgICAgfQorCisgICAgYnJlYWs7CisKKyAg
Y2FzZSA5OToKKworICAgIHsKICAgICAgICAgLy8gQWRkIHRoZSBwYXJhbWV0ZXIKICAgICAgICAg
KHl5dmFsLmludGVybS5mdW5jdGlvbikgPSAoeXl2c3BbLTFdLmludGVybS5mdW5jdGlvbik7CiAg
ICAgICAgIGlmICgoeXl2c3BbMF0uaW50ZXJtKS5wYXJhbS50eXBlLT5nZXRCYXNpY1R5cGUoKSAh
PSBFYnRWb2lkKQpAQCAtMzE1NSw3ICszMTU0LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsK
IAotICBjYXNlIDk5OgorICBjYXNlIDEwMDoKIAogICAgIHsKICAgICAgICAgLy8KQEAgLTMxNjcs
NyArMzE2Niw2IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgLy8gVGhpcyBwYXJhbWV0ZXIgPiBm
aXJzdCBpcyB2b2lkCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
KHl5bHNwWy0xXSksICJjYW5ub3QgYmUgYW4gYXJndW1lbnQgdHlwZSBleGNlcHQgZm9yICcodm9p
ZCknIiwgInZvaWQiKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgIGRlbGV0ZSAoeXl2c3BbMF0uaW50ZXJtKS5wYXJhbS50eXBlOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgLy8gQWRkIHRoZSBwYXJhbWV0ZXIKQEAgLTMxNzgsNjIgKzMxNzYsNDAg
QEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDEwMDoKKyAgY2FzZSAxMDE6CiAK
ICAgICB7Ci0gICAgICAgIGlmICgoeXl2c3BbLTJdLmludGVybS50eXBlKS5xdWFsaWZpZXIgIT0g
RXZxR2xvYmFsICYmICh5eXZzcFstMl0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciAhPSBFdnFUZW1w
b3JhcnkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFstMV0p
LCAibm8gcXVhbGlmaWVycyBhbGxvd2VkIGZvciBmdW5jdGlvbiByZXR1cm4iLCBnZXRRdWFsaWZp
ZXJTdHJpbmcoKHl5dnNwWy0yXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyKSk7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCEoeXl2c3BbLTJd
LmludGVybS50eXBlKS5sYXlvdXRRdWFsaWZpZXIuaXNFbXB0eSgpKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbLTFdKSwgIm5vIHF1YWxpZmllcnMgYWxsb3dl
ZCBmb3IgZnVuY3Rpb24gcmV0dXJuIiwgImxheW91dCIpOwotICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwotICAgICAgICB9Ci0gICAgICAgIC8vIG1ha2Ugc3VyZSBhIHNhbXBsZXIgaXMg
bm90IGludm9sdmVkIGFzIHdlbGwuLi4KLSAgICAgICAgaWYgKGNvbnRleHQtPnNhbXBsZXJFcnJv
ckNoZWNrKCh5eWxzcFstMV0pLCAoeXl2c3BbLTJdLmludGVybS50eXBlKSwgInNhbXBsZXJzIGNh
bid0IGJlIGZ1bmN0aW9uIHJldHVybiB2YWx1ZXMiKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKLQotICAgICAgICAvLyBBZGQgdGhlIGZ1bmN0aW9uIGFzIGEgcHJvdG90eXBlIGFm
dGVyIHBhcnNpbmcgaXQgKHdlIGRvIG5vdCBzdXBwb3J0IHJlY3Vyc2lvbikKLSAgICAgICAgVEZ1
bmN0aW9uICpmdW5jdGlvbjsKLSAgICAgICAgY29uc3QgVFR5cGUgKnR5cGUgPSBuZXcgVFR5cGUo
KHl5dnNwWy0yXS5pbnRlcm0udHlwZSkpOwotICAgICAgICBmdW5jdGlvbiA9IG5ldyBURnVuY3Rp
b24oKHl5dnNwWy0xXS5sZXgpLnN0cmluZywgdHlwZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0u
ZnVuY3Rpb24pID0gZnVuY3Rpb247Ci0gICAgICAgIAorICAgICAgICAoeXl2YWwuaW50ZXJtLmZ1
bmN0aW9uKSA9IGNvbnRleHQtPnBhcnNlRnVuY3Rpb25IZWFkZXIoKHl5dnNwWy0yXS5pbnRlcm0u
dHlwZSksICh5eXZzcFstMV0ubGV4KS5zdHJpbmcsICh5eWxzcFstMV0pKTsKKwogICAgICAgICBj
b250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7CisgICAgICAgIGNvbnRleHQtPmVudGVyRnVuY3Rp
b25EZWNsYXJhdGlvbigpOwogICAgIH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTAxOgorICBj
YXNlIDEwMjoKIAogICAgIHsKLSAgICAgICAgaWYgKCh5eXZzcFstMV0uaW50ZXJtLnR5cGUpLnR5
cGUgPT0gRWJ0Vm9pZCkgeworICAgICAgICBpZiAoKHl5dnNwWy0xXS5pbnRlcm0udHlwZSkuZ2V0
QmFzaWNUeXBlKCkgPT0gRWJ0Vm9pZCkgewogICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5
bHNwWzBdKSwgImlsbGVnYWwgdXNlIG9mIHR5cGUgJ3ZvaWQnIiwgKHl5dnNwWzBdLmxleCkuc3Ry
aW5nLT5jX3N0cigpKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
fQotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eWxzcFswXSksICoo
eXl2c3BbMF0ubGV4KS5zdHJpbmcpKQotICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwor
ICAgICAgICBjb250ZXh0LT5jaGVja0lzTm90UmVzZXJ2ZWQoKHl5bHNwWzBdKSwgKih5eXZzcFsw
XS5sZXgpLnN0cmluZyk7CiAgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW0gPSB7KHl5dnNwWzBdLmxl
eCkuc3RyaW5nLCBuZXcgVFR5cGUoKHl5dnNwWy0xXS5pbnRlcm0udHlwZSkpfTsKICAgICAgICAg
KHl5dmFsLmludGVybSkucGFyYW0gPSBwYXJhbTsKICAgICB9CiAKICAgICBicmVhazsKIAotICBj
YXNlIDEwMjoKKyAgY2FzZSAxMDM6CiAKICAgICB7CiAgICAgICAgIC8vIENoZWNrIHRoYXQgd2Ug
Y2FuIG1ha2UgYW4gYXJyYXkgb3V0IG9mIHRoaXMgdHlwZQotICAgICAgICBpZiAoY29udGV4dC0+
YXJyYXlUeXBlRXJyb3JDaGVjaygoeXlsc3BbLTJdKSwgKHl5dnNwWy00XS5pbnRlcm0udHlwZSkp
KQotICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICBjb250ZXh0LT5jaGVj
a0lzVmFsaWRUeXBlRm9yQXJyYXkoKHl5bHNwWy0yXSksICh5eXZzcFstNF0uaW50ZXJtLnR5cGUp
KTsKKworICAgICAgICBjb250ZXh0LT5jaGVja0lzTm90UmVzZXJ2ZWQoKHl5bHNwWy0zXSksICoo
eXl2c3BbLTNdLmxleCkuc3RyaW5nKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRF
cnJvckNoZWNrKCh5eWxzcFstM10pLCAqKHl5dnNwWy0zXS5sZXgpLnN0cmluZykpCi0gICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgIHVuc2lnbmVkIGludCBzaXplID0gY29u
dGV4dC0+Y2hlY2tJc1ZhbGlkQXJyYXlTaXplKCh5eWxzcFstMl0pLCAoeXl2c3BbLTFdLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpKTsKIAotICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgaWYgKGNv
bnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5bHNwWy0yXSksICh5eXZzcFstMV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksIHNpemUpKQotICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAoeXl2c3BbLTRdLmludGVybS50eXBlKS5zZXRBcnJheVNpemUoc2l6ZSk7CiAK
ICAgICAgICAgVFR5cGUqIHR5cGUgPSBuZXcgVFR5cGUoKHl5dnNwWy00XS5pbnRlcm0udHlwZSkp
OwpAQCAtMzI0MywyNCArMzIxOSwxMSBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNh
c2UgMTAzOgotCi0gICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFswXS5pbnRl
cm0pOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eWxzcFswXSksICh5
eXZzcFstMl0uaW50ZXJtLnF1YWxpZmllciksICh5eXZzcFstMV0uaW50ZXJtLnF1YWxpZmllciks
ICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUpKQotICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwotICAgIH0KLQotICAgIGJyZWFrOwotCiAgIGNhc2UgMTA0OgogCiAgICAgewogICAgICAg
ICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFswXS5pbnRlcm0pOwotICAgICAgICBpZiAoY29udGV4
dC0+cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2soKHl5bHNwWzBdKSwgKHl5dnNwWy0xXS5pbnRl
cm0ucXVhbGlmaWVyKSwgKih5eXZzcFswXS5pbnRlcm0pLnBhcmFtLnR5cGUpKQotICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNo
ZWNrKCh5eWxzcFswXSksIEV2cVRlbXBvcmFyeSwgKHl5dnNwWy0xXS5pbnRlcm0ucXVhbGlmaWVy
KSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkpCi0gICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CisgICAgICAgIGNvbnRleHQtPmNoZWNrSXNQYXJhbWV0ZXJRdWFsaWZpZXJWYWxpZCgo
eXlsc3BbMF0pLCAqKHl5dnNwWy0xXS5pbnRlcm0udHlwZVF1YWxpZmllckJ1aWxkZXIpLCAoeXl2
c3BbMF0uaW50ZXJtKS5wYXJhbS50eXBlKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTMyNjks
OCArMzIzMiw3IEBAIHl5cmVkdWNlOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9
ICh5eXZzcFswXS5pbnRlcm0pOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNr
KCh5eWxzcFswXSksICh5eXZzcFstMl0uaW50ZXJtLnF1YWxpZmllciksICh5eXZzcFstMV0uaW50
ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUpKQotICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5wYXJhbS50eXBlLT5z
ZXRRdWFsaWZpZXIoRXZxSW4pOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzI3OSwxMCArMzI0
MSw3IEBAIHl5cmVkdWNlOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZz
cFswXS5pbnRlcm0pOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1ldGVyU2FtcGxlckVycm9y
Q2hlY2soKHl5bHNwWzBdKSwgKHl5dnNwWy0xXS5pbnRlcm0ucXVhbGlmaWVyKSwgKih5eXZzcFsw
XS5pbnRlcm0pLnBhcmFtLnR5cGUpKQotICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwot
ICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eWxzcFswXSksIEV2cVRlbXBv
cmFyeSwgKHl5dnNwWy0xXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0u
dHlwZSkpCi0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgIGNvbnRleHQt
PmNoZWNrSXNQYXJhbWV0ZXJRdWFsaWZpZXJWYWxpZCgoeXlsc3BbMF0pLCAqKHl5dnNwWy0xXS5p
bnRlcm0udHlwZVF1YWxpZmllckJ1aWxkZXIpLCAoeXl2c3BbMF0uaW50ZXJtKS5wYXJhbS50eXBl
KTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTMyOTAsNyArMzI0OSw4IEBAIHl5cmVkdWNlOgog
ICBjYXNlIDEwNzoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0g
RXZxSW47CisgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWzBdLmludGVybSk7CisgICAg
ICAgICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUtPnNldFF1YWxpZmllcihFdnFJbik7CiAgICAg
fQogCiAgICAgYnJlYWs7CkBAIC0zMjk4LDcgKzMyNTgsOCBAQCB5eXJlZHVjZToKICAgY2FzZSAx
MDg6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cUluOwor
ICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyAwLCBuZXcgVFR5cGUoKHl5dnNwWzBdLmludGVy
bS50eXBlKSkgfTsKKyAgICAgICAgKHl5dmFsLmludGVybSkucGFyYW0gPSBwYXJhbTsKICAgICB9
CiAKICAgICBicmVhazsKQEAgLTMzMDYsNyArMzI2Nyw3IEBAIHl5cmVkdWNlOgogICBjYXNlIDEw
OToKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxT3V0Owor
ICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFswXS5pbnRlcm0pOwogICAgIH0KIAogICAg
IGJyZWFrOwpAQCAtMzMxNCw3ICszMjc1LDggQEAgeXlyZWR1Y2U6CiAgIGNhc2UgMTEwOgogCiAg
ICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmllcikgPSBFdnFJbk91dDsKKyAgICAg
ICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbLTJdLmludGVybSk7CisgICAgICAgICh5eXZhbC5p
bnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPnBhcnNlRGVjbGFyYXRvcigoeXl2YWwu
aW50ZXJtKS50eXBlLCAoeXl2c3BbLTJdLmludGVybSkuaW50ZXJtQWdncmVnYXRlLCAoeXlsc3Bb
MF0pLCAqKHl5dnNwWzBdLmxleCkuc3RyaW5nKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTMz
MjIsOCArMzI4NCw4IEBAIHl5cmVkdWNlOgogICBjYXNlIDExMToKIAogICAgIHsKLSAgICAgICAg
VFBhcmFtZXRlciBwYXJhbSA9IHsgMCwgbmV3IFRUeXBlKCh5eXZzcFswXS5pbnRlcm0udHlwZSkp
IH07Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLnBhcmFtID0gcGFyYW07CisgICAgICAgICh5eXZh
bC5pbnRlcm0pID0gKHl5dnNwWy01XS5pbnRlcm0pOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5p
bnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5wYXJzZUFycmF5RGVjbGFyYXRvcigoeXl2YWwuaW50
ZXJtKS50eXBlLCAoeXl2c3BbLTVdLmludGVybSkuaW50ZXJtQWdncmVnYXRlLCAoeXlsc3BbLTNd
KSwgKih5eXZzcFstM10ubGV4KS5zdHJpbmcsICh5eWxzcFstMl0pLCAoeXl2c3BbLTFdLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTMzMzEsNyArMzI5
Myw5IEBAIHl5cmVkdWNlOgogICBjYXNlIDExMjoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmlu
dGVybSkgPSAoeXl2c3BbMF0uaW50ZXJtKTsKKyAgICAgICAgRVMzX09SX05FV0VSKCJbXSIsICh5
eWxzcFstNF0pLCAiaW1wbGljaXRseSBzaXplZCBhcnJheSIpOworICAgICAgICAoeXl2YWwuaW50
ZXJtKSA9ICh5eXZzcFstNl0uaW50ZXJtKTsKKyAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJt
QWdncmVnYXRlID0gY29udGV4dC0+cGFyc2VBcnJheUluaXREZWNsYXJhdG9yKCh5eXZhbC5pbnRl
cm0pLnR5cGUsICh5eXZzcFstNl0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUsICh5eWxzcFstNF0p
LCAqKHl5dnNwWy00XS5sZXgpLnN0cmluZywgKHl5bHNwWy0zXSksIG51bGxwdHIsICh5eWxzcFst
MV0pLCAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpOwogICAgIH0KIAogICAgIGJy
ZWFrOwpAQCAtMzMzOSw4ICszMzAzLDkgQEAgeXlyZWR1Y2U6CiAgIGNhc2UgMTEzOgogCiAgICAg
ewotICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFstMl0uaW50ZXJtKTsKLSAgICAgICAg
KHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+cGFyc2VEZWNsYXJhdG9y
KCh5eXZhbC5pbnRlcm0pLnR5cGUsICh5eXZzcFstMl0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUs
ICh5eWxzcFswXSksICooeXl2c3BbMF0ubGV4KS5zdHJpbmcpOworICAgICAgICBFUzNfT1JfTkVX
RVIoIj0iLCAoeXlsc3BbLTFdKSwgImZpcnN0LWNsYXNzIGFycmF5cyAoYXJyYXkgaW5pdGlhbGl6
ZXIpIik7CisgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWy03XS5pbnRlcm0pOworICAg
ICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5wYXJzZUFycmF5
SW5pdERlY2xhcmF0b3IoKHl5dmFsLmludGVybSkudHlwZSwgKHl5dnNwWy03XS5pbnRlcm0pLmlu
dGVybUFnZ3JlZ2F0ZSwgKHl5bHNwWy01XSksICooeXl2c3BbLTVdLmxleCkuc3RyaW5nLCAoeXls
c3BbLTRdKSwgKHl5dnNwWy0zXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWy0xXSks
ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSk7CiAgICAgfQogCiAgICAgYnJlYWs7
CkBAIC0zMzQ4LDggKzMzMTMsOCBAQCB5eXJlZHVjZToKICAgY2FzZSAxMTQ6CiAKICAgICB7Ci0g
ICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWy01XS5pbnRlcm0pOwotICAgICAgICAoeXl2
YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5wYXJzZUFycmF5RGVjbGFyYXRv
cigoeXl2YWwuaW50ZXJtKS50eXBlLCAoeXl2c3BbLTVdLmludGVybSkuaW50ZXJtQWdncmVnYXRl
LCAoeXlsc3BbLTNdKSwgKih5eXZzcFstM10ubGV4KS5zdHJpbmcsICh5eWxzcFstMl0pLCAoeXl2
c3BbLTFdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKTsKKyAgICAgICAgKHl5dmFsLmludGVybSkg
PSAoeXl2c3BbLTRdLmludGVybSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3Jl
Z2F0ZSA9IGNvbnRleHQtPnBhcnNlSW5pdERlY2xhcmF0b3IoKHl5dmFsLmludGVybSkudHlwZSwg
KHl5dnNwWy00XS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSwgKHl5bHNwWy0yXSksICooeXl2c3Bb
LTJdLmxleCkuc3RyaW5nLCAoeXlsc3BbLTFdKSwgKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTMzNTcsOSArMzMyMiw4IEBAIHl5cmVk
dWNlOgogICBjYXNlIDExNToKIAogICAgIHsKLSAgICAgICAgRVMzX09OTFkoIltdIiwgKHl5bHNw
Wy00XSksICJpbXBsaWNpdGx5IHNpemVkIGFycmF5Iik7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0p
ID0gKHl5dnNwWy02XS5pbnRlcm0pOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dy
ZWdhdGUgPSBjb250ZXh0LT5wYXJzZUFycmF5SW5pdERlY2xhcmF0b3IoKHl5dmFsLmludGVybSku
dHlwZSwgKHl5dnNwWy02XS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSwgKHl5bHNwWy00XSksICoo
eXl2c3BbLTRdLmxleCkuc3RyaW5nLCAoeXlsc3BbLTNdKSwgbnVsbHB0ciwgKHl5bHNwWy0xXSks
ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSk7CisgICAgICAgICh5eXZhbC5pbnRl
cm0pLnR5cGUgPSAoeXl2c3BbMF0uaW50ZXJtLnR5cGUpOworICAgICAgICAoeXl2YWwuaW50ZXJt
KS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5wYXJzZVNpbmdsZURlY2xhcmF0aW9uKCh5eXZh
bC5pbnRlcm0pLnR5cGUsICh5eWxzcFswXSksICIiKTsKICAgICB9CiAKICAgICBicmVhazsKQEAg
LTMzNjcsOSArMzMzMSw4IEBAIHl5cmVkdWNlOgogICBjYXNlIDExNjoKIAogICAgIHsKLSAgICAg
ICAgRVMzX09OTFkoIj0iLCAoeXlsc3BbLTFdKSwgImZpcnN0LWNsYXNzIGFycmF5cyAoYXJyYXkg
aW5pdGlhbGl6ZXIpIik7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWy03XS5pbnRl
cm0pOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5w
YXJzZUFycmF5SW5pdERlY2xhcmF0b3IoKHl5dmFsLmludGVybSkudHlwZSwgKHl5dnNwWy03XS5p
bnRlcm0pLmludGVybUFnZ3JlZ2F0ZSwgKHl5bHNwWy01XSksICooeXl2c3BbLTVdLmxleCkuc3Ry
aW5nLCAoeXlsc3BbLTRdKSwgKHl5dnNwWy0zXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5
bHNwWy0xXSksICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSk7CisgICAgICAgICh5
eXZhbC5pbnRlcm0pLnR5cGUgPSAoeXl2c3BbLTFdLmludGVybS50eXBlKTsKKyAgICAgICAgKHl5
dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+cGFyc2VTaW5nbGVEZWNsYXJh
dGlvbigoeXl2YWwuaW50ZXJtKS50eXBlLCAoeXlsc3BbMF0pLCAqKHl5dnNwWzBdLmxleCkuc3Ry
aW5nKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTMzNzcsOCArMzM0MCw4IEBAIHl5cmVkdWNl
OgogICBjYXNlIDExNzoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3Bb
LTRdLmludGVybSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNv
bnRleHQtPnBhcnNlSW5pdERlY2xhcmF0b3IoKHl5dmFsLmludGVybSkudHlwZSwgKHl5dnNwWy00
XS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSwgKHl5bHNwWy0yXSksICooeXl2c3BbLTJdLmxleCku
c3RyaW5nLCAoeXlsc3BbLTFdKSwgKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKTsK
KyAgICAgICAgKHl5dmFsLmludGVybSkudHlwZSA9ICh5eXZzcFstNF0uaW50ZXJtLnR5cGUpOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5wYXJzZVNp
bmdsZUFycmF5RGVjbGFyYXRpb24oKHl5dmFsLmludGVybSkudHlwZSwgKHl5bHNwWy0zXSksICoo
eXl2c3BbLTNdLmxleCkuc3RyaW5nLCAoeXlsc3BbLTJdKSwgKHl5dnNwWy0xXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zMzg2LDggKzMzNDksOSBA
QCB5eXJlZHVjZToKICAgY2FzZSAxMTg6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0p
LnR5cGUgPSAoeXl2c3BbMF0uaW50ZXJtLnR5cGUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5p
bnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5wYXJzZVNpbmdsZURlY2xhcmF0aW9uKCh5eXZhbC5p
bnRlcm0pLnR5cGUsICh5eWxzcFswXSksICIiKTsKKyAgICAgICAgRVMzX09SX05FV0VSKCJbXSIs
ICh5eWxzcFstM10pLCAiaW1wbGljaXRseSBzaXplZCBhcnJheSIpOworICAgICAgICAoeXl2YWwu
aW50ZXJtKS50eXBlID0gKHl5dnNwWy01XS5pbnRlcm0udHlwZSk7CisgICAgICAgICh5eXZhbC5p
bnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPnBhcnNlU2luZ2xlQXJyYXlJbml0RGVj
bGFyYXRpb24oKHl5dmFsLmludGVybSkudHlwZSwgKHl5bHNwWy00XSksICooeXl2c3BbLTRdLmxl
eCkuc3RyaW5nLCAoeXlsc3BbLTNdKSwgbnVsbHB0ciwgKHl5bHNwWy0xXSksICh5eXZzcFswXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zMzk1LDgg
KzMzNTksOSBAQCB5eXJlZHVjZToKICAgY2FzZSAxMTk6CiAKICAgICB7Ci0gICAgICAgICh5eXZh
bC5pbnRlcm0pLnR5cGUgPSAoeXl2c3BbLTFdLmludGVybS50eXBlKTsKLSAgICAgICAgKHl5dmFs
LmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+cGFyc2VTaW5nbGVEZWNsYXJhdGlv
bigoeXl2YWwuaW50ZXJtKS50eXBlLCAoeXlsc3BbMF0pLCAqKHl5dnNwWzBdLmxleCkuc3RyaW5n
KTsKKyAgICAgICAgRVMzX09SX05FV0VSKCI9IiwgKHl5bHNwWy0xXSksICJmaXJzdC1jbGFzcyBh
cnJheXMgKGFycmF5IGluaXRpYWxpemVyKSIpOworICAgICAgICAoeXl2YWwuaW50ZXJtKS50eXBl
ID0gKHl5dnNwWy02XS5pbnRlcm0udHlwZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVy
bUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPnBhcnNlU2luZ2xlQXJyYXlJbml0RGVjbGFyYXRpb24oKHl5
dmFsLmludGVybSkudHlwZSwgKHl5bHNwWy01XSksICooeXl2c3BbLTVdLmxleCkuc3RyaW5nLCAo
eXlsc3BbLTRdKSwgKHl5dnNwWy0zXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWy0x
XSksICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSk7CiAgICAgfQogCiAgICAgYnJl
YWs7CkBAIC0zNDA0LDggKzMzNjksOCBAQCB5eXJlZHVjZToKICAgY2FzZSAxMjA6CiAKICAgICB7
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUgPSAoeXl2c3BbLTRdLmludGVybS50eXBlKTsK
LSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+cGFyc2VT
aW5nbGVBcnJheURlY2xhcmF0aW9uKCh5eXZhbC5pbnRlcm0pLnR5cGUsICh5eWxzcFstM10pLCAq
KHl5dnNwWy0zXS5sZXgpLnN0cmluZywgKHl5bHNwWy0yXSksICh5eXZzcFstMV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtKS50eXBlID0gKHl5dnNwWy0z
XS5pbnRlcm0udHlwZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9
IGNvbnRleHQtPnBhcnNlU2luZ2xlSW5pdERlY2xhcmF0aW9uKCh5eXZhbC5pbnRlcm0pLnR5cGUs
ICh5eWxzcFstMl0pLCAqKHl5dnNwWy0yXS5sZXgpLnN0cmluZywgKHl5bHNwWy0xXSksICh5eXZz
cFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0z
NDEzLDkgKzMzNzgsMTQgQEAgeXlyZWR1Y2U6CiAgIGNhc2UgMTIxOgogCiAgICAgewotICAgICAg
ICBFUzNfT05MWSgiW10iLCAoeXlsc3BbLTNdKSwgImltcGxpY2l0bHkgc2l6ZWQgYXJyYXkiKTsK
LSAgICAgICAgKHl5dmFsLmludGVybSkudHlwZSA9ICh5eXZzcFstNV0uaW50ZXJtLnR5cGUpOwot
ICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5wYXJzZVNp
bmdsZUFycmF5SW5pdERlY2xhcmF0aW9uKCh5eXZhbC5pbnRlcm0pLnR5cGUsICh5eWxzcFstNF0p
LCAqKHl5dnNwWy00XS5sZXgpLnN0cmluZywgKHl5bHNwWy0zXSksIG51bGxwdHIsICh5eWxzcFst
MV0pLCAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpOworICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGUpID0gKHl5dnNwWzBdLmludGVybS50eXBlKTsKKworICAgICAgICBpZiAoKHl5
dnNwWzBdLmludGVybS50eXBlKS5hcnJheSkgeworICAgICAgICAgICAgRVMzX09SX05FV0VSKCJb
XSIsICh5eWxzcFswXSksICJmaXJzdC1jbGFzcy1hcnJheSIpOworICAgICAgICAgICAgaWYgKGNv
bnRleHQtPmdldFNoYWRlclZlcnNpb24oKSAhPSAzMDApIHsKKyAgICAgICAgICAgICAgICAoeXl2
c3BbMF0uaW50ZXJtLnR5cGUpLmNsZWFyQXJyYXluZXNzKCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KICAgICB9CiAKICAgICBicmVhazsKQEAgLTM0MjMsOSArMzM5Myw3IEBAIHl5cmVkdWNl
OgogICBjYXNlIDEyMjoKIAogICAgIHsKLSAgICAgICAgRVMzX09OTFkoIj0iLCAoeXlsc3BbLTFd
KSwgImZpcnN0LWNsYXNzIGFycmF5cyAoYXJyYXkgaW5pdGlhbGl6ZXIpIik7Ci0gICAgICAgICh5
eXZhbC5pbnRlcm0pLnR5cGUgPSAoeXl2c3BbLTZdLmludGVybS50eXBlKTsKLSAgICAgICAgKHl5
dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+cGFyc2VTaW5nbGVBcnJheUlu
aXREZWNsYXJhdGlvbigoeXl2YWwuaW50ZXJtKS50eXBlLCAoeXlsc3BbLTVdKSwgKih5eXZzcFst
NV0ubGV4KS5zdHJpbmcsICh5eWxzcFstNF0pLCAoeXl2c3BbLTNdLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCAoeXlsc3BbLTFdKSwgKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKTsK
KyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKSA9IGNvbnRleHQtPmFkZEZ1bGx5U3BlY2lmaWVk
VHlwZSgqKHl5dnNwWy0xXS5pbnRlcm0udHlwZVF1YWxpZmllckJ1aWxkZXIpLCAoeXl2c3BbMF0u
aW50ZXJtLnR5cGUpKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTM0MzMsOCArMzQwMSw3IEBA
IHl5cmVkdWNlOgogICBjYXNlIDEyMzoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybSku
dHlwZSA9ICh5eXZzcFstM10uaW50ZXJtLnR5cGUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5p
bnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5wYXJzZVNpbmdsZUluaXREZWNsYXJhdGlvbigoeXl2
YWwuaW50ZXJtKS50eXBlLCAoeXlsc3BbLTJdKSwgKih5eXZzcFstMl0ubGV4KS5zdHJpbmcsICh5
eWxzcFstMV0pLCAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpOworICAgICAgICAo
eXl2YWwuaW50ZXJtLnF1YWxpZmllcikgPSBFdnFTbW9vdGg7CiAgICAgfQogCiAgICAgYnJlYWs7
CkBAIC0zNDQyLDggKzM0MDksNyBAQCB5eXJlZHVjZToKICAgY2FzZSAxMjQ6CiAKICAgICB7Ci0g
ICAgICAgIC8vICQkLnR5cGUgaXMgbm90IHVzZWQgaW4gaW52YXJpYW50IGRlY2xhcmF0aW9ucy4K
LSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+cGFyc2VJ
bnZhcmlhbnREZWNsYXJhdGlvbigoeXlsc3BbLTFdKSwgKHl5bHNwWzBdKSwgKHl5dnNwWzBdLmxl
eCkuc3RyaW5nLCAoeXl2c3BbMF0ubGV4KS5zeW1ib2wpOworICAgICAgICAoeXl2YWwuaW50ZXJt
LnF1YWxpZmllcikgPSBFdnFGbGF0OwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzQ1MSwxNCAr
MzQxNyw4IEBAIHl5cmVkdWNlOgogICBjYXNlIDEyNToKIAogICAgIHsKLSAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKSA9ICh5eXZzcFswXS5pbnRlcm0udHlwZSk7Ci0KLSAgICAgICAgaWYgKCh5
eXZzcFswXS5pbnRlcm0udHlwZSkuYXJyYXkpIHsKLSAgICAgICAgICAgIEVTM19PTkxZKCJbXSIs
ICh5eWxzcFswXSksICJmaXJzdC1jbGFzcy1hcnJheSIpOwotICAgICAgICAgICAgaWYgKGNvbnRl
eHQtPmdldFNoYWRlclZlcnNpb24oKSAhPSAzMDApIHsKLSAgICAgICAgICAgICAgICAoeXl2c3Bb
MF0uaW50ZXJtLnR5cGUpLmNsZWFyQXJyYXluZXNzKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlUXVhbGlmaWVyQnVpbGRlcikgPSBjb250ZXh0
LT5jcmVhdGVUeXBlUXVhbGlmaWVyQnVpbGRlcigoeXlsc3BbMF0pKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS50eXBlUXVhbGlmaWVyQnVpbGRlciktPmFwcGVuZFF1YWxpZmllcigoeXl2c3BbMF0u
aW50ZXJtLnF1YWxpZmllcldyYXBwZXIpKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTM0NjYs
NyArMzQyNiw4IEBAIHl5cmVkdWNlOgogICBjYXNlIDEyNjoKIAogICAgIHsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKSA9IGNvbnRleHQtPmFkZEZ1bGx5U3BlY2lmaWVkVHlwZSgoeXl2c3Bb
LTFdLmludGVybS50eXBlKS5xdWFsaWZpZXIsICh5eXZzcFstMV0uaW50ZXJtLnR5cGUpLmludmFy
aWFudCwgKHl5dnNwWy0xXS5pbnRlcm0udHlwZSkubGF5b3V0UXVhbGlmaWVyLCAoeXl2c3BbMF0u
aW50ZXJtLnR5cGUpKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlUXVhbGlmaWVyQnVpbGRl
cikgPSAoeXl2c3BbLTFdLmludGVybS50eXBlUXVhbGlmaWVyQnVpbGRlcik7CisgICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZVF1YWxpZmllckJ1aWxkZXIpLT5hcHBlbmRRdWFsaWZpZXIoKHl5dnNw
WzBdLmludGVybS5xdWFsaWZpZXJXcmFwcGVyKSk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0z
NDc0LDcgKzM0MzUsNyBAQCB5eXJlZHVjZToKICAgY2FzZSAxMjc6CiAKICAgICB7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkucXVhbGlmaWVyID0gRXZxU21vb3RoOworICAgICAgICAvLyBl
bXB0eQogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzQ4Miw3ICszNDQzLDExIEBAIHl5cmVkdWNl
OgogICBjYXNlIDEyODoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5xdWFs
aWZpZXIgPSBFdnFGbGF0OworICAgICAgICBpZiAoIWNvbnRleHQtPmRlY2xhcmluZ0Z1bmN0aW9u
KCkgJiYgKHl5dnNwWzBdLmludGVybS5xdWFsaWZpZXIpICE9IEV2cUNvbnN0ICYmICFjb250ZXh0
LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKCh5eWxzcFswXSksICJMb2NhbCB2YXJpYWJsZXMgY2FuIG9ubHkgdXNlIHRo
ZSBjb25zdCBzdG9yYWdlIHF1YWxpZmllci4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWzBd
LmludGVybS5xdWFsaWZpZXIpKSk7CisgICAgICAgIH0KKyAgICAgICAgKHl5dmFsLmludGVybS5x
dWFsaWZpZXJXcmFwcGVyKSA9IG5ldyBUU3RvcmFnZVF1YWxpZmllcldyYXBwZXIoKHl5dnNwWzBd
LmludGVybS5xdWFsaWZpZXIpLCAoeXlsc3BbMF0pKTsKICAgICB9CiAKICAgICBicmVhazsKQEAg
LTM0OTAsNyArMzQ1NSw4IEBAIHl5cmVkdWNlOgogICBjYXNlIDEyOToKIAogICAgIHsKLSAgICAg
ICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxQ29uc3Q7CisgICAgICAgIGNvbnRleHQt
PmNoZWNrSXNBdEdsb2JhbExldmVsKCh5eWxzcFswXSksICJsYXlvdXQiKTsKKyAgICAgICAgKHl5
dmFsLmludGVybS5xdWFsaWZpZXJXcmFwcGVyKSA9IG5ldyBUTGF5b3V0UXVhbGlmaWVyV3JhcHBl
cigoeXl2c3BbMF0uaW50ZXJtLmxheW91dFF1YWxpZmllciksICh5eWxzcFswXSkpOwogICAgIH0K
IAogICAgIGJyZWFrOwpAQCAtMzQ5OCwxMSArMzQ2NCw3IEBAIHl5cmVkdWNlOgogICBjYXNlIDEz
MDoKIAogICAgIHsKLSAgICAgICAgVkVSVEVYX09OTFkoImF0dHJpYnV0ZSIsICh5eWxzcFswXSkp
OwotICAgICAgICBFUzJfT05MWSgiYXR0cmlidXRlIiwgKHl5bHNwWzBdKSk7Ci0gICAgICAgIGlm
IChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCh5eWxzcFswXSksIGNvbnRleHQtPnN5bWJvbFRh
YmxlLmF0R2xvYmFsTGV2ZWwoKSwgImF0dHJpYnV0ZSIpKQotICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQs
IEV2cUF0dHJpYnV0ZSwgKHl5bHNwWzBdKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlm
aWVyV3JhcHBlcikgPSBuZXcgVFByZWNpc2lvblF1YWxpZmllcldyYXBwZXIoKHl5dnNwWzBdLmlu
dGVybS5wcmVjaXNpb24pLCAoeXlsc3BbMF0pKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTM1
MTAsMTMgKzM0NzIsNyBAQCB5eXJlZHVjZToKICAgY2FzZSAxMzE6CiAKICAgICB7Ci0gICAgICAg
IEVTMl9PTkxZKCJ2YXJ5aW5nIiwgKHl5bHNwWzBdKSk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5n
bG9iYWxFcnJvckNoZWNrKCh5eWxzcFswXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFs
TGV2ZWwoKSwgInZhcnlpbmciKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAg
ICAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclR5cGUoKSA9PSBHTF9WRVJURVhfU0hBREVSKQot
ICAgICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5
aW5nT3V0LCAoeXlsc3BbMF0pKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5nSW4sICh5eWxzcFswXSkpOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmllcldyYXBwZXIpID0gbmV3IFRJbnRlcnBvbGF0
aW9uUXVhbGlmaWVyV3JhcHBlcigoeXl2c3BbMF0uaW50ZXJtLnF1YWxpZmllciksICh5eWxzcFsw
XSkpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzUyNCwxNCArMzQ4MCw4IEBAIHl5cmVkdWNl
OgogICBjYXNlIDEzMjoKIAogICAgIHsKLSAgICAgICAgRVMyX09OTFkoInZhcnlpbmciLCAoeXls
c3BbLTFdKSk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCh5eWxzcFst
MV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZhcmlhbnQgdmFy
eWluZyIpKQotICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICBpZiAoY29u
dGV4dC0+Z2V0U2hhZGVyVHlwZSgpID09IEdMX1ZFUlRFWF9TSEFERVIpCi0gICAgICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdPdXQsICh5eWxz
cFstMV0pKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5nSW4sICh5eWxzcFstMV0pKTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5pbnZhcmlhbnQgPSB0cnVlOworICAgICAgICBjb250ZXh0LT5jaGVj
a0lzQXRHbG9iYWxMZXZlbCgoeXlsc3BbMF0pLCAiaW52YXJpYW50Iik7CisgICAgICAgICh5eXZh
bC5pbnRlcm0ucXVhbGlmaWVyV3JhcHBlcikgPSBuZXcgVEludmFyaWFudFF1YWxpZmllcldyYXBw
ZXIoKHl5bHNwWzBdKSk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zNTM5LDEyICszNDg5LDEw
IEBAIHl5cmVkdWNlOgogICBjYXNlIDEzMzoKIAogICAgIHsKLSAgICAgICAgaWYgKCh5eXZzcFsw
XS5pbnRlcm0udHlwZSkucXVhbGlmaWVyICE9IEV2cUNvbnN0ICYmICFjb250ZXh0LT5zeW1ib2xU
YWJsZS5hdEdsb2JhbExldmVsKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCh5eWxzcFswXSksICJMb2NhbCB2YXJpYWJsZXMgY2FuIG9ubHkgdXNlIHRoZSBjb25zdCBz
dG9yYWdlIHF1YWxpZmllci4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWzBdLmludGVybS50
eXBlKS5xdWFsaWZpZXIpKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAg
ICAgfQotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsICh5eXZz
cFswXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyLCAoeXlsc3BbMF0pKTsKKyAgICAgICAgVkVSVEVY
X09OTFkoImF0dHJpYnV0ZSIsICh5eWxzcFswXSkpOworICAgICAgICBFUzJfT05MWSgiYXR0cmli
dXRlIiwgKHl5bHNwWzBdKSk7CisgICAgICAgIGNvbnRleHQtPmNoZWNrSXNBdEdsb2JhbExldmVs
KCh5eWxzcFswXSksICJhdHRyaWJ1dGUiKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZp
ZXIpID0gRXZxQXR0cmlidXRlOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzU1Miw3ICszNTAw
LDEyIEBAIHl5cmVkdWNlOgogICBjYXNlIDEzNDoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKSA9IGNvbnRleHQtPmpvaW5JbnRlcnBvbGF0aW9uUXVhbGlmaWVycygoeXlsc3Bb
LTFdKSwgKHl5dnNwWy0xXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyLCAoeXlsc3BbMF0pLCAoeXl2
c3BbMF0uaW50ZXJtLnR5cGUpLnF1YWxpZmllcik7CisgICAgICAgIEVTMl9PTkxZKCJ2YXJ5aW5n
IiwgKHl5bHNwWzBdKSk7CisgICAgICAgIGNvbnRleHQtPmNoZWNrSXNBdEdsb2JhbExldmVsKCh5
eWxzcFswXSksICJ2YXJ5aW5nIik7CisgICAgICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXJUeXBl
KCkgPT0gR0xfVkVSVEVYX1NIQURFUikKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlm
aWVyKSA9IEV2cVZhcnlpbmdPdXQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0ucXVhbGlmaWVyKSA9IEV2cVZhcnlpbmdJbjsKICAgICB9CiAKICAgICBicmVhazsKQEAg
LTM1NjAsMTEgKzM1MTMsNyBAQCB5eXJlZHVjZToKICAgY2FzZSAxMzU6CiAKICAgICB7Ci0gICAg
ICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFswXSksICJpbnRlcnBvbGF0aW9uIHF1YWxpZmllciBy
ZXF1aXJlcyBhIGZyYWdtZW50ICdpbicgb3IgdmVydGV4ICdvdXQnIHN0b3JhZ2UgcXVhbGlmaWVy
IiwgZ2V0SW50ZXJwb2xhdGlvblN0cmluZygoeXl2c3BbMF0uaW50ZXJtLnR5cGUpLnF1YWxpZmll
cikpOwotICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgIAotICAgICAgICBUUXVh
bGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFH
bG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFz
aWMoRWJ0Vm9pZCwgcXVhbCwgKHl5bHNwWzBdKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0ucXVh
bGlmaWVyKSA9IEV2cUNvbnN0OwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzU3Miw4ICszNTIx
LDI0IEBAIHl5cmVkdWNlOgogICBjYXNlIDEzNjoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5xdWFsaWZpZXIgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVs
KCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZSkubGF5b3V0UXVhbGlmaWVyID0gKHl5dnNwWzBdLmludGVybS5sYXlvdXRRdWFsaWZpZXIpOwor
ICAgICAgICBpZiAoY29udGV4dC0+ZGVjbGFyaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxSW47CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZSBpZiAoY29udGV4dC0+Z2V0U2hhZGVyVHlwZSgpID09IEdMX0ZSQUdNRU5UX1NI
QURFUikKKyAgICAgICAgeworICAgICAgICAgICAgRVMzX09SX05FV0VSKCJpbiIsICh5eWxzcFsw
XSksICJzdG9yYWdlIHF1YWxpZmllciIpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5xdWFs
aWZpZXIpID0gRXZxRnJhZ21lbnRJbjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChjb250
ZXh0LT5nZXRTaGFkZXJUeXBlKCkgPT0gR0xfVkVSVEVYX1NIQURFUikKKyAgICAgICAgeworICAg
ICAgICAgICAgRVMzX09SX05FV0VSKCJpbiIsICh5eWxzcFswXSksICJzdG9yYWdlIHF1YWxpZmll
ciIpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxVmVydGV4SW47
CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICAoeXl2YWwu
aW50ZXJtLnF1YWxpZmllcikgPSBFdnFDb21wdXRlSW47CisgICAgICAgIH0KICAgICB9CiAKICAg
ICBicmVhazsKQEAgLTM1ODEsOCArMzU0NiwyMyBAQCB5eXJlZHVjZToKICAgY2FzZSAxMzc6CiAK
ICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgKHl5
dnNwWzBdLmludGVybS50eXBlKS5xdWFsaWZpZXIsICh5eWxzcFswXSkpOwotICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGUpLmxheW91dFF1YWxpZmllciA9ICh5eXZzcFstMV0uaW50ZXJtLmxheW91
dFF1YWxpZmllcik7CisgICAgICAgIGlmIChjb250ZXh0LT5kZWNsYXJpbmdGdW5jdGlvbigpKQor
ICAgICAgICB7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmllcikgPSBFdnFPdXQ7
CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBFUzNfT1Jf
TkVXRVIoIm91dCIsICh5eWxzcFswXSksICJzdG9yYWdlIHF1YWxpZmllciIpOworICAgICAgICAg
ICAgTk9OX0NPTVBVVEVfT05MWSgib3V0IiwgKHl5bHNwWzBdKSk7CisgICAgICAgICAgICBpZiAo
Y29udGV4dC0+Z2V0U2hhZGVyVHlwZSgpID09IEdMX0ZSQUdNRU5UX1NIQURFUikKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmllcikgPSBFdnFGcmFn
bWVudE91dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmllcikgPSBFdnFWZXJ0ZXhPdXQ7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKICAgICBicmVhazsKQEAgLTM1OTAs
OSArMzU3MCwxMSBAQCB5eXJlZHVjZToKICAgY2FzZSAxMzg6CiAKICAgICB7Ci0gICAgICAgIGNv
bnRleHQtPmVzM0ludmFyaWFudEVycm9yQ2hlY2soKHl5dnNwWzBdLmludGVybS50eXBlKS5xdWFs
aWZpZXIsICh5eWxzcFstMV0pKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNp
YyhFYnRWb2lkLCAoeXl2c3BbMF0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciwgKHl5bHNwWzBdKSk7
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuaW52YXJpYW50ID0gdHJ1ZTsKKyAgICAgICAg
aWYgKCFjb250ZXh0LT5kZWNsYXJpbmdGdW5jdGlvbigpKQorICAgICAgICB7CisgICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigoeXlsc3BbMF0pLCAiaW52YWxpZCBpbm91dCBxdWFsaWZpZXIiLCAi
J2lub3V0JyBjYW4gYmUgb25seSB1c2VkIHdpdGggZnVuY3Rpb24gcGFyYW1ldGVycyIpOworICAg
ICAgICB9CisgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cUluT3V0OwogICAg
IH0KIAogICAgIGJyZWFrOwpAQCAtMzYwMCw5ICszNTgyLDggQEAgeXlyZWR1Y2U6CiAgIGNhc2Ug
MTM5OgogCiAgICAgewotICAgICAgICBjb250ZXh0LT5lczNJbnZhcmlhbnRFcnJvckNoZWNrKCh5
eXZzcFswXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyLCAoeXlsc3BbLTJdKSk7Ci0gICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZSkgPSBjb250ZXh0LT5qb2luSW50ZXJwb2xhdGlvblF1YWxpZmllcnMo
KHl5bHNwWy0xXSksICh5eXZzcFstMV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciwgKHl5bHNwWzBd
KSwgKHl5dnNwWzBdLmludGVybS50eXBlKS5xdWFsaWZpZXIpOwotICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGUpLmludmFyaWFudCA9IHRydWU7CisgICAgICAgIEVTM19PUl9ORVdFUigiY2VudHJv
aWQiLCAoeXlsc3BbMF0pLCAic3RvcmFnZSBxdWFsaWZpZXIiKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybS5xdWFsaWZpZXIpID0gRXZxQ2VudHJvaWQ7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0z
NjEwLDcgKzM1OTEsOCBAQCB5eXJlZHVjZToKICAgY2FzZSAxNDA6CiAKICAgICB7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkucXVhbGlmaWVyID0gRXZxQ29uc3Q7CisgICAgICAgIGNvbnRl
eHQtPmNoZWNrSXNBdEdsb2JhbExldmVsKCh5eWxzcFswXSksICJ1bmlmb3JtIik7CisgICAgICAg
ICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cVVuaWZvcm07CiAgICAgfQogCiAgICAgYnJl
YWs7CkBAIC0zNjE4LDggKzM2MDAsMTEgQEAgeXlyZWR1Y2U6CiAgIGNhc2UgMTQxOgogCiAgICAg
ewotICAgICAgICBFUzNfT05MWSgiaW4iLCAoeXlsc3BbMF0pLCAic3RvcmFnZSBxdWFsaWZpZXIi
KTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5xdWFsaWZpZXIgPSAoY29udGV4dC0+Z2V0
U2hhZGVyVHlwZSgpID09IEdMX0ZSQUdNRU5UX1NIQURFUikgPyBFdnFGcmFnbWVudEluIDogRXZx
VmVydGV4SW47CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbMF0uaW50ZXJt
LnR5cGUpOworCisgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLnR5cGUpLnByZWNpc2lvbiA9PSBF
YnBVbmRlZmluZWQpIHsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkucHJlY2lzaW9u
ID0gY29udGV4dC0+c3ltYm9sVGFibGUuZ2V0RGVmYXVsdFByZWNpc2lvbigoeXl2c3BbMF0uaW50
ZXJtLnR5cGUpLmdldEJhc2ljVHlwZSgpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGJyZWFr
OwpAQCAtMzYyNyw4ICszNjEyLDcgQEAgeXlyZWR1Y2U6CiAgIGNhc2UgMTQyOgogCiAgICAgewot
ICAgICAgICBFUzNfT05MWSgib3V0IiwgKHl5bHNwWzBdKSwgInN0b3JhZ2UgcXVhbGlmaWVyIik7
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkucXVhbGlmaWVyID0gKGNvbnRleHQtPmdldFNo
YWRlclR5cGUoKSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpID8gRXZxRnJhZ21lbnRPdXQgOiBFdnFW
ZXJ0ZXhPdXQ7CisgICAgICAgICh5eXZhbC5pbnRlcm0ucHJlY2lzaW9uKSA9IEVicEhpZ2g7CiAg
ICAgfQogCiAgICAgYnJlYWs7CkBAIC0zNjM2LDEzICszNjIwLDcgQEAgeXlyZWR1Y2U6CiAgIGNh
c2UgMTQzOgogCiAgICAgewotICAgICAgICBFUzNfT05MWSgiY2VudHJvaWQgaW4iLCAoeXlsc3Bb
LTFdKSwgInN0b3JhZ2UgcXVhbGlmaWVyIik7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRTaGFk
ZXJUeXBlKCkgPT0gR0xfVkVSVEVYX1NIQURFUikKLSAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5bHNwWy0xXSksICJpbnZhbGlkIHN0b3JhZ2UgcXVhbGlmaWVyIiwgIml0
IGlzIGFuIGVycm9yIHRvIHVzZSAnY2VudHJvaWQgaW4nIGluIHRoZSB2ZXJ0ZXggc2hhZGVyIik7
Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5xdWFsaWZpZXIgPSAoY29udGV4dC0+Z2V0U2hhZGVyVHlwZSgpID09
IEdMX0ZSQUdNRU5UX1NIQURFUikgPyBFdnFDZW50cm9pZEluIDogRXZxVmVydGV4SW47CisgICAg
ICAgICh5eXZhbC5pbnRlcm0ucHJlY2lzaW9uKSA9IEVicE1lZGl1bTsKICAgICB9CiAKICAgICBi
cmVhazsKQEAgLTM2NTAsMTMgKzM2MjgsNyBAQCB5eXJlZHVjZToKICAgY2FzZSAxNDQ6CiAKICAg
ICB7Ci0gICAgICAgIEVTM19PTkxZKCJjZW50cm9pZCBvdXQiLCAoeXlsc3BbLTFdKSwgInN0b3Jh
Z2UgcXVhbGlmaWVyIik7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXJUeXBlKCkgPT0g
R0xfRlJBR01FTlRfU0hBREVSKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigoeXlsc3BbLTFdKSwgImludmFsaWQgc3RvcmFnZSBxdWFsaWZpZXIiLCAiaXQgaXMgYW4gZXJy
b3IgdG8gdXNlICdjZW50cm9pZCBvdXQnIGluIHRoZSBmcmFnbWVudCBzaGFkZXIiKTsKLSAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgfQotICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGUpLnF1YWxpZmllciA9IChjb250ZXh0LT5nZXRTaGFkZXJUeXBlKCkgPT0gR0xfRlJB
R01FTlRfU0hBREVSKSA/IEV2cUZyYWdtZW50T3V0IDogRXZxQ2VudHJvaWRPdXQ7CisgICAgICAg
ICh5eXZhbC5pbnRlcm0ucHJlY2lzaW9uKSA9IEVicExvdzsKICAgICB9CiAKICAgICBicmVhazsK
QEAgLTM2NjQsOSArMzYzNiw4IEBAIHl5cmVkdWNlOgogICBjYXNlIDE0NToKIAogICAgIHsKLSAg
ICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5bHNwWzBdKSwgY29udGV4dC0+
c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidW5pZm9ybSIpKQotICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnF1YWxpZmllciA9
IEV2cVVuaWZvcm07CisgICAgICAgIEVTM19PUl9ORVdFUigibGF5b3V0IiwgKHl5bHNwWy0zXSks
ICJxdWFsaWZpZXIiKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5sYXlvdXRRdWFsaWZpZXIpID0g
KHl5dnNwWy0xXS5pbnRlcm0ubGF5b3V0UXVhbGlmaWVyKTsKICAgICB9CiAKICAgICBicmVhazsK
QEAgLTM2NzQsMTQgKzM2NDUsNyBAQCB5eXJlZHVjZToKICAgY2FzZSAxNDY6CiAKICAgICB7Ci0g
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbMF0uaW50ZXJtLnR5cGUpOwotCi0g
ICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLnR5cGUpLnByZWNpc2lvbiA9PSBFYnBVbmRlZmluZWQp
IHsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkucHJlY2lzaW9uID0gY29udGV4dC0+
c3ltYm9sVGFibGUuZ2V0RGVmYXVsdFByZWNpc2lvbigoeXl2c3BbMF0uaW50ZXJtLnR5cGUpLnR5
cGUpOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPnByZWNpc2lvbkVycm9yQ2hlY2soKHl5bHNw
WzBdKSwgKHl5dmFsLmludGVybS50eXBlKS5wcmVjaXNpb24sICh5eXZzcFswXS5pbnRlcm0udHlw
ZSkudHlwZSkpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgKHl5dmFsLmludGVybS5sYXlvdXRRdWFsaWZpZXIp
ID0gKHl5dnNwWzBdLmludGVybS5sYXlvdXRRdWFsaWZpZXIpOwogICAgIH0KIAogICAgIGJyZWFr
OwpAQCAtMzY4OSwxMyArMzY1Myw3IEBAIHl5cmVkdWNlOgogICBjYXNlIDE0NzoKIAogICAgIHsK
LSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFswXS5pbnRlcm0udHlwZSk7Ci0g
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkucHJlY2lzaW9uID0gKHl5dnNwWy0xXS5pbnRlcm0u
cHJlY2lzaW9uKTsKLQotICAgICAgICBpZiAoIVN1cHBvcnRzUHJlY2lzaW9uKCh5eXZzcFswXS5p
bnRlcm0udHlwZSkudHlwZSkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFst
MV0pLCAiaWxsZWdhbCB0eXBlIGZvciBwcmVjaXNpb24gcXVhbGlmaWVyIiwgZ2V0QmFzaWNTdHJp
bmcoKHl5dnNwWzBdLmludGVybS50eXBlKS50eXBlKSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7Ci0gICAgICAgIH0KKyAgICAgICAgKHl5dmFsLmludGVybS5sYXlvdXRRdWFsaWZp
ZXIpID0gY29udGV4dC0+am9pbkxheW91dFF1YWxpZmllcnMoKHl5dnNwWy0yXS5pbnRlcm0ubGF5
b3V0UXVhbGlmaWVyKSwgKHl5dnNwWzBdLmludGVybS5sYXlvdXRRdWFsaWZpZXIpLCAoeXlsc3Bb
MF0pKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTM3MDMsNyArMzY2MSw3IEBAIHl5cmVkdWNl
OgogICBjYXNlIDE0ODoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5wcmVjaXNpb24p
ID0gRWJwSGlnaDsKKyAgICAgICAgKHl5dmFsLmludGVybS5sYXlvdXRRdWFsaWZpZXIpID0gY29u
dGV4dC0+cGFyc2VMYXlvdXRRdWFsaWZpZXIoKih5eXZzcFswXS5sZXgpLnN0cmluZywgKHl5bHNw
WzBdKSk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zNzExLDcgKzM2NjksNyBAQCB5eXJlZHVj
ZToKICAgY2FzZSAxNDk6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0ucHJlY2lzaW9u
KSA9IEVicE1lZGl1bTsKKyAgICAgICAgKHl5dmFsLmludGVybS5sYXlvdXRRdWFsaWZpZXIpID0g
Y29udGV4dC0+cGFyc2VMYXlvdXRRdWFsaWZpZXIoKih5eXZzcFstMl0ubGV4KS5zdHJpbmcsICh5
eWxzcFstMl0pLCAoeXl2c3BbMF0ubGV4KS5pLCAoeXlsc3BbMF0pKTsKICAgICB9CiAKICAgICBi
cmVhazsKQEAgLTM3MTksNyArMzY3Nyw3IEBAIHl5cmVkdWNlOgogICBjYXNlIDE1MDoKIAogICAg
IHsKLSAgICAgICAgKHl5dmFsLmludGVybS5wcmVjaXNpb24pID0gRWJwTG93OworICAgICAgICAo
eXl2YWwuaW50ZXJtLmxheW91dFF1YWxpZmllcikgPSBjb250ZXh0LT5wYXJzZUxheW91dFF1YWxp
ZmllcigqKHl5dnNwWy0yXS5sZXgpLnN0cmluZywgKHl5bHNwWy0yXSksICh5eXZzcFswXS5sZXgp
LmksICh5eWxzcFswXSkpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzcyNyw4ICszNjg1LDcg
QEAgeXlyZWR1Y2U6CiAgIGNhc2UgMTUxOgogCiAgICAgewotICAgICAgICBFUzNfT05MWSgibGF5
b3V0IiwgKHl5bHNwWy0zXSksICJxdWFsaWZpZXIiKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5s
YXlvdXRRdWFsaWZpZXIpID0gKHl5dnNwWy0xXS5pbnRlcm0ubGF5b3V0UXVhbGlmaWVyKTsKKyAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5pbml0aWFsaXplKCh5eXZzcFswXS5pbnRlcm0udHlw
ZVNwZWNpZmllck5vbkFycmF5KSwgKGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwo
KSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeSkpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAt
MzczNiw3ICszNjkzLDkgQEAgeXlyZWR1Y2U6CiAgIGNhc2UgMTUyOgogCiAgICAgewotICAgICAg
ICAoeXl2YWwuaW50ZXJtLmxheW91dFF1YWxpZmllcikgPSAoeXl2c3BbMF0uaW50ZXJtLmxheW91
dFF1YWxpZmllcik7CisgICAgICAgIEVTM19PUl9ORVdFUigiW10iLCAoeXlsc3BbLTFdKSwgImlt
cGxpY2l0bHkgc2l6ZWQgYXJyYXkiKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5pbml0
aWFsaXplKCh5eXZzcFstMl0uaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSksIChjb250ZXh0
LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnkp
KTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBcnJheVNpemUoMCk7CiAgICAgfQog
CiAgICAgYnJlYWs7CkBAIC0zNzQ0LDcgKzM3MDMsMTIgQEAgeXlyZWR1Y2U6CiAgIGNhc2UgMTUz
OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmxheW91dFF1YWxpZmllcikgPSBjb250
ZXh0LT5qb2luTGF5b3V0UXVhbGlmaWVycygoeXl2c3BbLTJdLmludGVybS5sYXlvdXRRdWFsaWZp
ZXIpLCAoeXl2c3BbMF0uaW50ZXJtLmxheW91dFF1YWxpZmllcikpOworICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGUpLmluaXRpYWxpemUoKHl5dnNwWy0zXS5pbnRlcm0udHlwZVNwZWNpZmllck5v
bkFycmF5KSwgKGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2Jh
bCA6IEV2cVRlbXBvcmFyeSkpOworICAgICAgICBpZiAoY29udGV4dC0+Y2hlY2tJc1ZhbGlkVHlw
ZUZvckFycmF5KCh5eWxzcFstMl0pLCAoeXl2YWwuaW50ZXJtLnR5cGUpKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgdW5zaWduZWQgaW50IHNpemUgPSBjb250ZXh0LT5jaGVja0lzVmFsaWRBcnJh
eVNpemUoKHl5bHNwWy0yXSksICh5eXZzcFstMV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpOwor
ICAgICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBcnJheVNpemUoc2l6ZSk7CisgICAg
ICAgIH0KICAgICB9CiAKICAgICBicmVhazsKQEAgLTM3NTIsNyArMzcxNiw3IEBAIHl5cmVkdWNl
OgogICBjYXNlIDE1NDoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5sYXlvdXRRdWFs
aWZpZXIpID0gY29udGV4dC0+cGFyc2VMYXlvdXRRdWFsaWZpZXIoKih5eXZzcFswXS5sZXgpLnN0
cmluZywgKHl5bHNwWzBdKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5v
bkFycmF5KS5pbml0aWFsaXplKEVidFZvaWQsICh5eWxzcFswXSkpOwogICAgIH0KIAogICAgIGJy
ZWFrOwpAQCAtMzc2MCw3ICszNzI0LDcgQEAgeXlyZWR1Y2U6CiAgIGNhc2UgMTU1OgogCiAgICAg
ewotICAgICAgICAoeXl2YWwuaW50ZXJtLmxheW91dFF1YWxpZmllcikgPSBjb250ZXh0LT5wYXJz
ZUxheW91dFF1YWxpZmllcigqKHl5dnNwWy0yXS5sZXgpLnN0cmluZywgKHl5bHNwWy0yXSksICoo
eXl2c3BbMF0ubGV4KS5zdHJpbmcsICh5eXZzcFswXS5sZXgpLmksICh5eWxzcFswXSkpOworICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRG
bG9hdCwgKHl5bHNwWzBdKSk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zNzY4LDcgKzM3MzIs
NyBAQCB5eXJlZHVjZToKICAgY2FzZSAxNTY6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0ubGF5b3V0UXVhbGlmaWVyKSA9IGNvbnRleHQtPnBhcnNlTGF5b3V0UXVhbGlmaWVyKCooeXl2
c3BbLTJdLmxleCkuc3RyaW5nLCAoeXlsc3BbLTJdKSwgKih5eXZzcFswXS5sZXgpLnN0cmluZywg
KHl5dnNwWzBdLmxleCkuaSwgKHl5bHNwWzBdKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidEludCwgKHl5bHNwWzBdKSk7CiAgICAg
fQogCiAgICAgYnJlYWs7CkBAIC0zNzc2LDcgKzM3NDAsNyBAQCB5eXJlZHVjZToKICAgY2FzZSAx
NTc6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbMF0uaW50
ZXJtLnR5cGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSku
aW5pdGlhbGl6ZShFYnRVSW50LCAoeXlsc3BbMF0pKTsKICAgICB9CiAKICAgICBicmVhazsKQEAg
LTM3ODQsOSArMzc0OCw3IEBAIHl5cmVkdWNlOgogICBjYXNlIDE1ODoKIAogICAgIHsKLSAgICAg
ICAgRVMzX09OTFkoIltdIiwgKHl5bHNwWy0xXSksICJpbXBsaWNpdGx5IHNpemVkIGFycmF5Iik7
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbLTJdLmludGVybS50eXBlKTsK
LSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBcnJheVNpemUoMCk7CisgICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidEJvb2wsICh5
eWxzcFswXSkpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzc5NCwxNiArMzc1Niw4IEBAIHl5
cmVkdWNlOgogICBjYXNlIDE1OToKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KSA9ICh5eXZzcFstM10uaW50ZXJtLnR5cGUpOwotCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJh
eVR5cGVFcnJvckNoZWNrKCh5eWxzcFstMl0pLCAoeXl2c3BbLTNdLmludGVybS50eXBlKSkpCi0g
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgaW50IHNpemU7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVj
aygoeXlsc3BbLTJdKSwgKHl5dnNwWy0xXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkp
Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRBcnJheVNpemUoc2l6ZSk7Ci0gICAgICAgIH0KKyAgICAgICAgKHl5
dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0RmxvYXQsICh5
eWxzcFswXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSku
c2V0QWdncmVnYXRlKDIpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzgxMSw4ICszNzY1LDgg
QEAgeXlyZWR1Y2U6CiAgIGNhc2UgMTYwOgogCiAgICAgewotICAgICAgICBUUXVhbGlmaWVyIHF1
YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBF
dnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9p
ZCwgcXVhbCwgKHl5bHNwWzBdKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmll
ck5vbkFycmF5KS5pbml0aWFsaXplKEVidEZsb2F0LCAoeXlsc3BbMF0pKTsKKyAgICAgICAgKHl5
dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLnNldEFnZ3JlZ2F0ZSgzKTsKICAgICB9
CiAKICAgICBicmVhazsKQEAgLTM4MjAsOCArMzc3NCw4IEBAIHl5cmVkdWNlOgogICBjYXNlIDE2
MToKIAogICAgIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXlsc3BbMF0pKTsK
KyAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUo
RWJ0RmxvYXQsICh5eWxzcFswXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZp
ZXJOb25BcnJheSkuc2V0QWdncmVnYXRlKDQpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzgy
OSw4ICszNzgzLDggQEAgeXlyZWR1Y2U6CiAgIGNhc2UgMTYyOgogCiAgICAgewotICAgICAgICBU
UXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBF
dnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0
QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXlsc3BbMF0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50
eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0Qm9vbCwgKHl5bHNwWzBdKSk7Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5zZXRBZ2dyZWdhdGUo
Mik7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zODM4LDggKzM3OTIsOCBAQCB5eXJlZHVjZToK
ICAgY2FzZSAxNjM6CiAKICAgICB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQt
PnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsK
LSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRVSW50LCBxdWFsLCAoeXls
c3BbMF0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmlu
aXRpYWxpemUoRWJ0Qm9vbCwgKHl5bHNwWzBdKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZVNwZWNpZmllck5vbkFycmF5KS5zZXRBZ2dyZWdhdGUoMyk7CiAgICAgfQogCiAgICAgYnJlYWs7
CkBAIC0zODQ3LDggKzM4MDEsOCBAQCB5eXJlZHVjZToKICAgY2FzZSAxNjQ6CiAKICAgICB7Ci0g
ICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2
ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXlsc3BbMF0pKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0Qm9vbCwgKHl5bHNw
WzBdKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5zZXRB
Z2dyZWdhdGUoNCk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zODU2LDkgKzM4MTAsOCBAQCB5
eXJlZHVjZToKICAgY2FzZSAxNjU6CiAKICAgICB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9
IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRl
bXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwg
cXVhbCwgKHl5bHNwWzBdKSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVn
YXRlKDIpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5p
dGlhbGl6ZShFYnRJbnQsICh5eWxzcFswXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVT
cGVjaWZpZXJOb25BcnJheSkuc2V0QWdncmVnYXRlKDIpOwogICAgIH0KIAogICAgIGJyZWFrOwpA
QCAtMzg2Niw5ICszODE5LDggQEAgeXlyZWR1Y2U6CiAgIGNhc2UgMTY2OgogCiAgICAgewotICAg
ICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVs
KCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eWxzcFswXSkpOwotICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBl
U3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0SW50LCAoeXlsc3BbMF0pKTsKKyAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLnNldEFnZ3JlZ2F0ZSgzKTsK
ICAgICB9CiAKICAgICBicmVhazsKQEAgLTM4NzYsOSArMzgyOCw4IEBAIHl5cmVkdWNlOgogICBj
YXNlIDE2NzoKIAogICAgIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3lt
Ym9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXlsc3Bb
MF0pKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7CisgICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidElu
dCwgKHl5bHNwWzBdKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFy
cmF5KS5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zODg2LDkgKzM4
MzcsOCBAQCB5eXJlZHVjZToKICAgY2FzZSAxNjg6CiAKICAgICB7Ci0gICAgICAgIFRRdWFsaWZp
ZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2Jh
bCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhF
YnRCb29sLCBxdWFsLCAoeXlsc3BbMF0pKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRBZ2dyZWdhdGUoMik7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFy
cmF5KS5pbml0aWFsaXplKEVidFVJbnQsICh5eWxzcFswXSkpOworICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuc2V0QWdncmVnYXRlKDIpOwogICAgIH0KIAogICAg
IGJyZWFrOwpAQCAtMzg5Niw5ICszODQ2LDggQEAgeXlyZWR1Y2U6CiAgIGNhc2UgMTY5OgogCiAg
ICAgewotICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEds
b2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgKHl5bHNwWzBdKSk7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDMpOworICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRVSW50LCAoeXlsc3BbMF0p
KTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLnNldEFnZ3Jl
Z2F0ZSgzKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTM5MDYsOSArMzg1NSw4IEBAIHl5cmVk
dWNlOgogICBjYXNlIDE3MDoKIAogICAgIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29u
dGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9y
YXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEJvb2wsIHF1YWws
ICh5eWxzcFswXSkpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSg0
KTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxp
emUoRWJ0VUludCwgKHl5bHNwWzBdKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNp
Zmllck5vbkFycmF5KS5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0z
OTE2LDkgKzM4NjQsOCBAQCB5eXJlZHVjZToKICAgY2FzZSAxNzE6CiAKICAgICB7Ci0gICAgICAg
IFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/
IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5eWxzcFswXSkpOwotICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lm
aWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0RmxvYXQsICh5eWxzcFswXSkpOworICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuc2V0TWF0cml4KDIsIDIpOwogICAg
IH0KIAogICAgIGJyZWFrOwpAQCAtMzkyNiw5ICszODczLDggQEAgeXlyZWR1Y2U6CiAgIGNhc2Ug
MTcyOgogCiAgICAgewotICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xU
YWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXlsc3BbMF0pKTsK
LSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMyk7CisgICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidEZsb2F0LCAo
eXlsc3BbMF0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkp
LnNldE1hdHJpeCgzLCAzKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTM5MzYsOSArMzg4Miw4
IEBAIHl5cmVkdWNlOgogICBjYXNlIDE3MzoKIAogICAgIHsKLSAgICAgICAgVFF1YWxpZmllciBx
dWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDog
RXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidElu
dCwgcXVhbCwgKHl5bHNwWzBdKSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdn
cmVnYXRlKDQpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSku
aW5pdGlhbGl6ZShFYnRGbG9hdCwgKHl5bHNwWzBdKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0u
dHlwZVNwZWNpZmllck5vbkFycmF5KS5zZXRNYXRyaXgoNCwgNCk7CiAgICAgfQogCiAgICAgYnJl
YWs7CkBAIC0zOTQ2LDkgKzM4OTEsOCBAQCB5eXJlZHVjZToKICAgY2FzZSAxNzQ6CiAKICAgICB7
Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFs
TGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVy
bS50eXBlKS5zZXRCYXNpYyhFYnRVSW50LCBxdWFsLCAoeXlsc3BbMF0pKTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMik7CisgICAgICAgICh5eXZhbC5pbnRlcm0u
dHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidEZsb2F0LCAoeXlsc3BbMF0pKTsK
KyAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLnNldE1hdHJpeCgy
LCAzKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTM5NTYsOSArMzkwMCw4IEBAIHl5cmVkdWNl
OgogICBjYXNlIDE3NToKIAogICAgIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4
dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5
OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFVJbnQsIHF1YWwsICh5
eWxzcFswXSkpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzKTsK
KyAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUo
RWJ0RmxvYXQsICh5eWxzcFswXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZp
ZXJOb25BcnJheSkuc2V0TWF0cml4KDMsIDIpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzk2
Niw5ICszOTA5LDggQEAgeXlyZWR1Y2U6CiAgIGNhc2UgMTc2OgogCiAgICAgewotICAgICAgICBU
UXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBF
dnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0
QmFzaWMoRWJ0VUludCwgcXVhbCwgKHl5bHNwWzBdKSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0u
dHlwZSkuc2V0QWdncmVnYXRlKDQpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZp
ZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRGbG9hdCwgKHl5bHNwWzBdKSk7CisgICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5zZXRNYXRyaXgoMiwgNCk7CiAgICAg
fQogCiAgICAgYnJlYWs7CkBAIC0zOTc2LDkgKzM5MTgsOCBAQCB5eXJlZHVjZToKICAgY2FzZSAx
Nzc6CiAKICAgICB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRh
YmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWzBdKSk7
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0TWF0cml4KDIsIDIpOworICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRGbG9hdCwg
KHl5bHNwWzBdKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5
KS5zZXRNYXRyaXgoNCwgMik7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zOTg2LDkgKzM5Mjcs
OCBAQCB5eXJlZHVjZToKICAgY2FzZSAxNzg6CiAKICAgICB7Ci0gICAgICAgIFRRdWFsaWZpZXIg
cXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6
IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRG
bG9hdCwgcXVhbCwgKHl5bHNwWzBdKSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0
TWF0cml4KDMsIDMpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJh
eSkuaW5pdGlhbGl6ZShFYnRGbG9hdCwgKHl5bHNwWzBdKSk7CisgICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5zZXRNYXRyaXgoMywgNCk7CiAgICAgfQogCiAgICAg
YnJlYWs7CkBAIC0zOTk2LDkgKzM5MzYsOCBAQCB5eXJlZHVjZToKICAgY2FzZSAxNzk6CiAKICAg
ICB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xv
YmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWzBdKSk7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0TWF0cml4KDQsIDQpOworICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRGbG9hdCwgKHl5bHNwWzBd
KSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5zZXRNYXRy
aXgoNCwgMyk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC00MDA2LDkgKzM5NDUsNyBAQCB5eXJl
ZHVjZToKICAgY2FzZSAxODA6CiAKICAgICB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBv
cmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVh
bCwgKHl5bHNwWzBdKSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0TWF0cml4KDIs
IDMpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlh
bGl6ZShFYnRTYW1wbGVyMkQsICh5eWxzcFswXSkpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAt
NDAxNiw5ICszOTUzLDcgQEAgeXlyZWR1Y2U6CiAgIGNhc2UgMTgxOgogCiAgICAgewotICAgICAg
ICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkg
PyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSku
c2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eWxzcFswXSkpOwotICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGUpLnNldE1hdHJpeCgzLCAyKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3Bl
Y2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0U2FtcGxlcjNELCAoeXlsc3BbMF0pKTsKICAg
ICB9CiAKICAgICBicmVhazsKQEAgLTQwMjYsOSArMzk2MSw3IEBAIHl5cmVkdWNlOgogICBjYXNl
IDE4MjoKIAogICAgIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9s
VGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXlsc3BbMF0p
KTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRNYXRyaXgoMiwgNCk7CisgICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidFNhbXBs
ZXJDdWJlLCAoeXlsc3BbMF0pKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTQwMzYsOSArMzk2
OSw3IEBAIHl5cmVkdWNlOgogICBjYXNlIDE4MzoKIAogICAgIHsKLSAgICAgICAgVFF1YWxpZmll
ciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFs
IDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVi
dEZsb2F0LCBxdWFsLCAoeXlsc3BbMF0pKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRNYXRyaXgoNCwgMik7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFy
cmF5KS5pbml0aWFsaXplKEVidFNhbXBsZXIyREFycmF5LCAoeXlsc3BbMF0pKTsKICAgICB9CiAK
ICAgICBicmVhazsKQEAgLTQwNDYsOSArMzk3Nyw3IEBAIHl5cmVkdWNlOgogICBjYXNlIDE4NDoK
IAogICAgIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXlsc3BbMF0pKTsKLSAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRNYXRyaXgoMywgNCk7CisgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidElTYW1wbGVyMkQs
ICh5eWxzcFswXSkpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtNDA1Niw5ICszOTg1LDcgQEAg
eXlyZWR1Y2U6CiAgIGNhc2UgMTg1OgogCiAgICAgewotICAgICAgICBUUXVhbGlmaWVyIHF1YWwg
PSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFU
ZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQs
IHF1YWwsICh5eWxzcFswXSkpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldE1hdHJp
eCg0LCAzKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmlu
aXRpYWxpemUoRWJ0SVNhbXBsZXIzRCwgKHl5bHNwWzBdKSk7CiAgICAgfQogCiAgICAgYnJlYWs7
CkBAIC00MDY2LDggKzM5OTMsNyBAQCB5eXJlZHVjZToKICAgY2FzZSAxODY6CiAKICAgICB7Ci0g
ICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2
ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyMkQsIHF1YWwsICh5eWxzcFswXSkpOworICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRJU2FtcGxl
ckN1YmUsICh5eWxzcFswXSkpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtNDA3NSw4ICs0MDAx
LDcgQEAgeXlyZWR1Y2U6CiAgIGNhc2UgMTg3OgogCiAgICAgewotICAgICAgICBUUXVhbGlmaWVy
IHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwg
OiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0
U2FtcGxlcjNELCBxdWFsLCAoeXlsc3BbMF0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBl
U3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0SVNhbXBsZXIyREFycmF5LCAoeXlsc3Bb
MF0pKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTQwODQsOCArNDAwOSw3IEBAIHl5cmVkdWNl
OgogICBjYXNlIDE4ODoKIAogICAgIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4
dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5
OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNhbXBsZXJDdWJlLCBx
dWFsLCAoeXlsc3BbMF0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9u
QXJyYXkpLmluaXRpYWxpemUoRWJ0VVNhbXBsZXIyRCwgKHl5bHNwWzBdKSk7CiAgICAgfQogCiAg
ICAgYnJlYWs7CkBAIC00MDkzLDggKzQwMTcsNyBAQCB5eXJlZHVjZToKICAgY2FzZSAxODk6CiAK
ICAgICB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyMkRBcnJheSwgcXVhbCwgKHl5bHNwWzBd
KSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFs
aXplKEVidFVTYW1wbGVyM0QsICh5eWxzcFswXSkpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAt
NDEwMiw4ICs0MDI1LDcgQEAgeXlyZWR1Y2U6CiAgIGNhc2UgMTkwOgogCiAgICAgewotICAgICAg
ICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkg
PyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSku
c2V0QmFzaWMoRWJ0SVNhbXBsZXIyRCwgcXVhbCwgKHl5bHNwWzBdKSk7CisgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidFVTYW1wbGVyQ3Vi
ZSwgKHl5bHNwWzBdKSk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC00MTExLDggKzQwMzMsNyBA
QCB5eXJlZHVjZToKICAgY2FzZSAxOTE6CiAKICAgICB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVh
bCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2
cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJU2Ft
cGxlcjNELCBxdWFsLCAoeXlsc3BbMF0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3Bl
Y2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0VVNhbXBsZXIyREFycmF5LCAoeXlsc3BbMF0p
KTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTQxMjAsOCArNDA0MSw3IEBAIHl5cmVkdWNlOgog
ICBjYXNlIDE5MjoKIAogICAgIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+
c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5Owot
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidElTYW1wbGVyQ3ViZSwgcXVh
bCwgKHl5bHNwWzBdKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFy
cmF5KS5pbml0aWFsaXplKEVidFNhbXBsZXIyRFNoYWRvdywgKHl5bHNwWzBdKSk7CiAgICAgfQog
CiAgICAgYnJlYWs7CkBAIC00MTI5LDggKzQwNDksNyBAQCB5eXJlZHVjZToKICAgY2FzZSAxOTM6
CiAKICAgICB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJU2FtcGxlcjJEQXJyYXksIHF1YWwsICh5eWxz
cFswXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5p
dGlhbGl6ZShFYnRTYW1wbGVyQ3ViZVNoYWRvdywgKHl5bHNwWzBdKSk7CiAgICAgfQogCiAgICAg
YnJlYWs7CkBAIC00MTM4LDggKzQwNTcsNyBAQCB5eXJlZHVjZToKICAgY2FzZSAxOTQ6CiAKICAg
ICB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xv
YmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5zZXRCYXNpYyhFYnRVU2FtcGxlcjJELCBxdWFsLCAoeXlsc3BbMF0pKTsKKyAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0
U2FtcGxlcjJEQXJyYXlTaGFkb3csICh5eWxzcFswXSkpOwogICAgIH0KIAogICAgIGJyZWFrOwpA
QCAtNDE0Nyw5MyArNDA2NSwzNSBAQCB5eXJlZHVjZToKICAgY2FzZSAxOTU6CiAKICAgICB7Ci0g
ICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2
ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRCYXNpYyhFYnRVU2FtcGxlcjNELCBxdWFsLCAoeXlsc3BbMF0pKTsKLSAgICB9Ci0K
LSAgICBicmVhazsKLQotICBjYXNlIDE5NjoKLQotICAgIHsKLSAgICAgICAgVFF1YWxpZmllciBx
dWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDog
RXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFVT
YW1wbGVyQ3ViZSwgcXVhbCwgKHl5bHNwWzBdKSk7Ci0gICAgfQotCi0gICAgYnJlYWs7Ci0KLSAg
Y2FzZSAxOTc6Ci0KLSAgICB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRVU2FtcGxlcjJEQXJyYXksIHF1
YWwsICh5eWxzcFswXSkpOwotICAgIH0KLQotICAgIGJyZWFrOwotCi0gIGNhc2UgMTk4OgotCi0g
ICAgewotICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEds
b2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U2FtcGxlcjJEU2hhZG93LCBxdWFsLCAoeXlsc3BbMF0p
KTsKLSAgICB9Ci0KLSAgICBicmVhazsKLQotICBjYXNlIDE5OToKLQotICAgIHsKLSAgICAgICAg
VFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8g
RXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNl
dEJhc2ljKEVidFNhbXBsZXJDdWJlU2hhZG93LCBxdWFsLCAoeXlsc3BbMF0pKTsKLSAgICB9Ci0K
LSAgICBicmVhazsKLQotICBjYXNlIDIwMDoKLQotICAgIHsKLSAgICAgICAgVFF1YWxpZmllciBx
dWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDog
RXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNh
bXBsZXIyREFycmF5U2hhZG93LCBxdWFsLCAoeXlsc3BbMF0pKTsKLSAgICB9Ci0KLSAgICBicmVh
azsKLQotICBjYXNlIDIwMToKLQotICAgIHsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0
c0V4dGVuc2lvbigiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpKSB7CisgICAgICAgIGlmICgh
Y29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSAm
JgorICAgICAgICAgICAgIWNvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9OVl9FR0xfc3Ry
ZWFtX2NvbnN1bWVyX2V4dGVybmFsIikpIHsKICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eWxzcFswXSksICJ1bnN1cHBvcnRlZCB0eXBlIiwgInNhbXBsZXJFeHRlcm5hbE9FUyIpOwotICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgIFRRdWFsaWZp
ZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2Jh
bCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhF
YnRTYW1wbGVyRXh0ZXJuYWxPRVMsIHF1YWwsICh5eWxzcFswXSkpOworICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRTYW1wbGVyRXh0ZXJu
YWxPRVMsICh5eWxzcFswXSkpOwogICAgIH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjAyOgor
ICBjYXNlIDE5NjoKIAogICAgIHsKICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c0V4dGVu
c2lvbigiR0xfQVJCX3RleHR1cmVfcmVjdGFuZ2xlIikpIHsKICAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCh5eWxzcFswXSksICJ1bnN1cHBvcnRlZCB0eXBlIiwgInNhbXBsZXIyRFJlY3QiKTsK
LSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAgICBUUXVh
bGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFH
bG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFz
aWMoRWJ0U2FtcGxlcjJEUmVjdCwgcXVhbCwgKHl5bHNwWzBdKSk7CisgICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidFNhbXBsZXIyRFJlY3Qs
ICh5eWxzcFswXSkpOwogICAgIH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjAzOgorICBjYXNl
IDE5NzoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFswXS5p
bnRlcm0udHlwZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkucXVhbGlmaWVyID0gY29u
dGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9y
YXJ5OworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkgPSAoeXl2
c3BbMF0uaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSk7CiAgICAgfQogCiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAyMDQ6CisgIGNhc2UgMTk4OgogCiAgICAgewogICAgICAgICAvLwpAQCAtNDI0
MSw0MiArNDEwMSw0MSBAQCB5eXJlZHVjZToKICAgICAgICAgLy8gdHlwZS4KICAgICAgICAgLy8K
ICAgICAgICAgVFR5cGUmIHN0cnVjdHVyZSA9IHN0YXRpY19jYXN0PFRWYXJpYWJsZSo+KCh5eXZz
cFswXS5sZXgpLnN5bWJvbCktPmdldFR5cGUoKTsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0g
Y29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVt
cG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFN0cnVjdCwg
cXVhbCwgKHl5bHNwWzBdKSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkudXNlckRlZiA9
ICZzdHJ1Y3R1cmU7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5
KS5pbml0aWFsaXplKEVidFN0cnVjdCwgKHl5bHNwWzBdKSk7CisgICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZVNwZWNpZmllck5vbkFycmF5KS51c2VyRGVmID0gJnN0cnVjdHVyZTsKICAgICB9CiAK
ICAgICBicmVhazsKIAotICBjYXNlIDIwNToKKyAgY2FzZSAxOTk6CiAKLSAgICB7IGlmIChjb250
ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKCh5eWxzcFstMV0pLCAqKHl5dnNwWy0xXS5sZXgp
LnN0cmluZykpIGNvbnRleHQtPnJlY292ZXIoKTsgfQorICAgIHsgY29udGV4dC0+ZW50ZXJTdHJ1
Y3REZWNsYXJhdGlvbigoeXlsc3BbLTFdKSwgKih5eXZzcFstMV0ubGV4KS5zdHJpbmcpOyB9CiAK
ICAgICBicmVhazsKIAotICBjYXNlIDIwNjoKKyAgY2FzZSAyMDA6CiAKICAgICB7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkgPSBjb250ZXh0LT5hZGRTdHJ1Y3R1cmUoKHl5bHNwWy01XSks
ICh5eWxzcFstNF0pLCAoeXl2c3BbLTRdLmxleCkuc3RyaW5nLCAoeXl2c3BbLTFdLmludGVybS5m
aWVsZExpc3QpKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkp
ID0gY29udGV4dC0+YWRkU3RydWN0dXJlKCh5eWxzcFstNV0pLCAoeXlsc3BbLTRdKSwgKHl5dnNw
Wy00XS5sZXgpLnN0cmluZywgKHl5dnNwWy0xXS5pbnRlcm0uZmllbGRMaXN0KSk7CiAgICAgfQog
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMDc6CisgIGNhc2UgMjAxOgogCi0gICAgeyBpZiAoY29u
dGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbigoeXlsc3BbMF0pLCAqKHl5dnNwWzBdLmxleCku
c3RyaW5nKSkgY29udGV4dC0+cmVjb3ZlcigpOyB9CisgICAgeyBjb250ZXh0LT5lbnRlclN0cnVj
dERlY2xhcmF0aW9uKCh5eWxzcFswXSksICooeXl2c3BbMF0ubGV4KS5zdHJpbmcpOyB9CiAKICAg
ICBicmVhazsKIAotICBjYXNlIDIwODoKKyAgY2FzZSAyMDI6CiAKICAgICB7Ci0gICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZSkgPSBjb250ZXh0LT5hZGRTdHJ1Y3R1cmUoKHl5bHNwWy00XSksICh5
eWxvYyksIE5ld1Bvb2xUU3RyaW5nKCIiKSwgKHl5dnNwWy0xXS5pbnRlcm0uZmllbGRMaXN0KSk7
CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KSA9IGNvbnRleHQt
PmFkZFN0cnVjdHVyZSgoeXlsc3BbLTRdKSwgKHl5bG9jKSwgTmV3UG9vbFRTdHJpbmcoIiIpLCAo
eXl2c3BbLTFdLmludGVybS5maWVsZExpc3QpKTsKICAgICB9CiAKICAgICBicmVhazsKIAotICBj
YXNlIDIwOToKKyAgY2FzZSAyMDM6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uZmll
bGRMaXN0KSA9ICh5eXZzcFswXS5pbnRlcm0uZmllbGRMaXN0KTsKQEAgLTQyODQsNyArNDE0Myw3
IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMTA6CisgIGNhc2UgMjA0Ogog
CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCkgPSAoeXl2c3BbLTFdLmlu
dGVybS5maWVsZExpc3QpOwpAQCAtNDI5Myw3ICs0MTUyLDYgQEAgeXlyZWR1Y2U6CiAgICAgICAg
ICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8ICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KS0+c2l6
ZSgpOyArK2opIHsKICAgICAgICAgICAgICAgICBpZiAoKCooeXl2YWwuaW50ZXJtLmZpZWxkTGlz
dCkpW2pdLT5uYW1lKCkgPT0gZmllbGQtPm5hbWUoKSkgewogICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5lcnJvcigoeXlsc3BbMF0pLCAiZHVwbGljYXRlIGZpZWxkIG5hbWUgaW4gc3RydWN0
dXJlOiIsICJzdHJ1Y3QiLCBmaWVsZC0+bmFtZSgpLmNfc3RyKCkpOwotICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogICAgICAgICAgICAgKHl5dmFsLmludGVybS5maWVsZExpc3QpLT5wdXNoX2JhY2soZmllbGQp
OwpAQCAtNDMwMiw3ICs0MTYwLDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNl
IDIxMToKKyAgY2FzZSAyMDU6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRM
aXN0KSA9IGNvbnRleHQtPmFkZFN0cnVjdERlY2xhcmF0b3JMaXN0KCh5eXZzcFstMl0uaW50ZXJt
LnR5cGUpLCAoeXl2c3BbLTFdLmludGVybS5maWVsZExpc3QpKTsKQEAgLTQzMTAsMTggKzQxNjgs
MTYgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDIxMjoKKyAgY2FzZSAyMDY6
CiAKICAgICB7CiAgICAgICAgIC8vIEVTMyBPbmx5LCBidXQgZXJyb3JzIHNob3VsZCBiZSBoYW5k
bGVkIGVsc2V3aGVyZQotICAgICAgICAoeXl2c3BbLTJdLmludGVybS50eXBlKS5xdWFsaWZpZXIg
PSAoeXl2c3BbLTNdLmludGVybS50eXBlKS5xdWFsaWZpZXI7Ci0gICAgICAgICh5eXZzcFstMl0u
aW50ZXJtLnR5cGUpLmxheW91dFF1YWxpZmllciA9ICh5eXZzcFstM10uaW50ZXJtLnR5cGUpLmxh
eW91dFF1YWxpZmllcjsKLSAgICAgICAgKHl5dmFsLmludGVybS5maWVsZExpc3QpID0gY29udGV4
dC0+YWRkU3RydWN0RGVjbGFyYXRvckxpc3QoKHl5dnNwWy0yXS5pbnRlcm0udHlwZSksICh5eXZz
cFstMV0uaW50ZXJtLmZpZWxkTGlzdCkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmZpZWxkTGlz
dCkgPSBjb250ZXh0LT5hZGRTdHJ1Y3REZWNsYXJhdG9yTGlzdFdpdGhRdWFsaWZpZXJzKCooeXl2
c3BbLTNdLmludGVybS50eXBlUXVhbGlmaWVyQnVpbGRlciksICYoeXl2c3BbLTJdLmludGVybS50
eXBlKSwgKHl5dnNwWy0xXS5pbnRlcm0uZmllbGRMaXN0KSk7CiAgICAgfQogCiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAyMTM6CisgIGNhc2UgMjA3OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50
ZXJtLmZpZWxkTGlzdCkgPSBOZXdQb29sVEZpZWxkTGlzdCgpOwpAQCAtNDMzMCw3ICs0MTg2LDcg
QEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDIxNDoKKyAgY2FzZSAyMDg6CiAK
ICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KS0+cHVzaF9iYWNrKCh5eXZz
cFswXS5pbnRlcm0uZmllbGQpKTsKQEAgLTQzMzgsMTEgKzQxOTQsMTAgQEAgeXlyZWR1Y2U6CiAK
ICAgICBicmVhazsKIAotICBjYXNlIDIxNToKKyAgY2FzZSAyMDk6CiAKICAgICB7Ci0gICAgICAg
IGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5bHNwWzBdKSwgKih5eXZzcFswXS5s
ZXgpLnN0cmluZykpCi0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgIGNv
bnRleHQtPmNoZWNrSXNOb3RSZXNlcnZlZCgoeXlsc3BbMF0pLCAqKHl5dnNwWzBdLmxleCkuc3Ry
aW5nKTsKIAogICAgICAgICBUVHlwZSogdHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRl
ZmluZWQpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmZpZWxkKSA9IG5ldyBURmllbGQodHlwZSwg
KHl5dnNwWzBdLmxleCkuc3RyaW5nLCAoeXlsc3BbMF0pKTsKQEAgLTQzNTAsMTYgKzQyMDUsMTMg
QEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDIxNjoKKyAgY2FzZSAyMTA6CiAK
ICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5bHNwWy0z
XSksICooeXl2c3BbLTNdLmxleCkuc3RyaW5nKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKKyAgICAgICAgY29udGV4dC0+Y2hlY2tJc05vdFJlc2VydmVkKCh5eWxzcFstM10pLCAq
KHl5dnNwWy0zXS5sZXgpLnN0cmluZyk7CiAKICAgICAgICAgVFR5cGUqIHR5cGUgPSBuZXcgVFR5
cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKLSAgICAgICAgaW50IHNpemU7Ci0gICAgICAgIGlm
IChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eWxzcFstMV0pLCAoeXl2c3BbLTFdLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXplKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKKyAgICAgICAgdW5zaWduZWQgaW50IHNpemUgPSBjb250ZXh0LT5jaGVja0lzVmFsaWRB
cnJheVNpemUoKHl5bHNwWy0xXSksICh5eXZzcFstMV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkp
OwogICAgICAgICB0eXBlLT5zZXRBcnJheVNpemUoc2l6ZSk7CiAKICAgICAgICAgKHl5dmFsLmlu
dGVybS5maWVsZCkgPSBuZXcgVEZpZWxkKHR5cGUsICh5eXZzcFstM10ubGV4KS5zdHJpbmcsICh5
eWxzcFstM10pKTsKQEAgLTQzNjcsMTk3ICs0MjE5LDE5NyBAQCB5eXJlZHVjZToKIAogICAgIGJy
ZWFrOwogCi0gIGNhc2UgMjE3OgorICBjYXNlIDIxMToKIAogICAgIHsgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9CiAK
ICAgICBicmVhazsKIAotICBjYXNlIDIxODoKKyAgY2FzZSAyMTI6CiAKICAgICB7ICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybU5vZGUpOyB9CiAKICAg
ICBicmVhazsKIAotICBjYXNlIDIxOToKKyAgY2FzZSAyMTM6CiAKLSAgICB7ICh5eXZhbC5pbnRl
cm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSk7IH0KKyAg
ICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybUJs
b2NrKTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMjA6CisgIGNhc2UgMjE0OgogCiAgICAg
eyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1Ob2Rl
KTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMjE6CisgIGNhc2UgMjE1OgogCiAgICAgeyAo
eXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1Ob2RlKTsg
fQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMjI6CisgIGNhc2UgMjE2OgogCiAgICAgeyAoeXl2
YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1Ob2RlKTsgfQog
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMjM6CisgIGNhc2UgMjE3OgogCiAgICAgeyAoeXl2YWwu
aW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1Ob2RlKTsgfQogCiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAyMjQ6CisgIGNhc2UgMjE4OgogCiAgICAgeyAoeXl2YWwuaW50
ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1Td2l0Y2gpOyB9CiAKICAg
ICBicmVhazsKIAotICBjYXNlIDIyNToKKyAgY2FzZSAyMTk6CiAKICAgICB7ICh5eXZhbC5pbnRl
cm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybUNhc2UpOyB9CiAKICAgICBi
cmVhazsKIAotICBjYXNlIDIyNjoKKyAgY2FzZSAyMjA6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0u
aW50ZXJtTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybU5vZGUpOyB9CiAKICAgICBicmVh
azsKIAotICBjYXNlIDIyNzoKKyAgY2FzZSAyMjE6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50
ZXJtTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybU5vZGUpOyB9CiAKICAgICBicmVhazsK
IAotICBjYXNlIDIyODoKKyAgY2FzZSAyMjI6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJt
QWdncmVnYXRlKSA9IDA7IH0KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtQmxvY2spID0gMDsg
fQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMjk6CisgIGNhc2UgMjIzOgogCiAgICAgeyBjb250
ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjMwOgor
ICBjYXNlIDIyNDoKIAogICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7IH0KIAogICAg
IGJyZWFrOwogCi0gIGNhc2UgMjMxOgorICBjYXNlIDIyNToKIAogICAgIHsKLSAgICAgICAgaWYg
KCh5eXZzcFstMl0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkgIT0gMCkgewotICAgICAgICAgICAg
KHl5dnNwWy0yXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKS0+c2V0T3AoRU9wU2VxdWVuY2UpOwot
ICAgICAgICAgICAgKHl5dnNwWy0yXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKS0+c2V0TGluZSgo
eXlsb2MpKTsKKyAgICAgICAgaWYgKCh5eXZzcFstMl0uaW50ZXJtLmludGVybUJsb2NrKSAhPSAw
KSB7CisgICAgICAgICAgICAoeXl2c3BbLTJdLmludGVybS5pbnRlcm1CbG9jayktPnNldExpbmUo
KHl5bG9jKSk7CiAgICAgICAgIH0KLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1BZ2dyZWdh
dGUpID0gKHl5dnNwWy0yXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1CbG9jaykgPSAoeXl2c3BbLTJdLmludGVybS5pbnRlcm1CbG9jayk7CiAg
ICAgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMzI6CisgIGNhc2UgMjI2OgogCi0gICAgeyAo
eXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1BZ2dyZWdh
dGUpOyB9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWzBdLmludGVy
bS5pbnRlcm1CbG9jayk7IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjMzOgorICBjYXNlIDIy
NzoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFswXS5pbnRlcm0u
aW50ZXJtTm9kZSk7IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjM0OgorICBjYXNlIDIyODoK
IAogICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyB9CiAKICAgICBicmVhazsKIAot
ICBjYXNlIDIzNToKKyAgY2FzZSAyMjk6CiAKLSAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBv
cCgpOyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1B
Z2dyZWdhdGUpOyB9CisgICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgKHl5dmFsLmlu
dGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtQmxvY2spOyB9CiAKICAg
ICBicmVhazsKIAotICBjYXNlIDIzNjoKKyAgY2FzZSAyMzA6CiAKICAgICB7IGNvbnRleHQtPnN5
bWJvbFRhYmxlLnB1c2goKTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMzc6CisgIGNhc2Ug
MjMxOgogCiAgICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgKHl5dmFsLmludGVybS5p
bnRlcm1Ob2RlKSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KIAogICAgIGJyZWFr
OwogCi0gIGNhc2UgMjM4OgorICBjYXNlIDIzMjoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1BZ2dyZWdhdGUpID0gMDsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1C
bG9jaykgPSAwOwogICAgIH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjM5OgorICBjYXNlIDIz
MzoKIAogICAgIHsKLSAgICAgICAgaWYgKCh5eXZzcFstMV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0
ZSkpIHsKLSAgICAgICAgICAgICh5eXZzcFstMV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNl
dE9wKEVPcFNlcXVlbmNlKTsKLSAgICAgICAgICAgICh5eXZzcFstMV0uaW50ZXJtLmludGVybUFn
Z3JlZ2F0ZSktPnNldExpbmUoKHl5bG9jKSk7CisgICAgICAgIGlmICgoeXl2c3BbLTFdLmludGVy
bS5pbnRlcm1CbG9jaykpIHsKKyAgICAgICAgICAgICh5eXZzcFstMV0uaW50ZXJtLmludGVybUJs
b2NrKS0+c2V0TGluZSgoeXlsb2MpKTsKICAgICAgICAgfQotICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybUFnZ3JlZ2F0ZSkgPSAoeXl2c3BbLTFdLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybUJsb2NrKSA9ICh5eXZzcFstMV0uaW50ZXJtLmlu
dGVybUJsb2NrKTsKICAgICB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDI0MDoKKyAgY2FzZSAy
MzQ6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKCh5eXZzcFswXS5pbnRlcm0uaW50ZXJt
Tm9kZSksICh5eWxvYykpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybUJsb2NrKSA9IG5l
dyBUSW50ZXJtQmxvY2soKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1CbG9jayktPnNl
dExpbmUoKHl5bG9jKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQmxvY2spLT5hcHBl
bmRTdGF0ZW1lbnQoKHl5dnNwWzBdLmludGVybS5pbnRlcm1Ob2RlKSk7CiAgICAgfQogCiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAyNDE6CisgIGNhc2UgMjM1OgogCiAgICAgewotICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0Fn
Z3JlZ2F0ZSgoeXl2c3BbLTFdLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpLCAoeXl2c3BbMF0uaW50
ZXJtLmludGVybU5vZGUpLCAoeXlsb2MpKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1C
bG9jaykgPSAoeXl2c3BbLTFdLmludGVybS5pbnRlcm1CbG9jayk7CisgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtQmxvY2spLT5hcHBlbmRTdGF0ZW1lbnQoKHl5dnNwWzBdLmludGVybS5pbnRl
cm1Ob2RlKSk7CiAgICAgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNDI6CisgIGNhc2UgMjM2
OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gMDsgfQogCiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAyNDM6CisgIGNhc2UgMjM3OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVy
bU5vZGUpID0gc3RhdGljX2Nhc3Q8VEludGVybU5vZGUqPigoeXl2c3BbLTFdLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpKTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNDQ6CisgIGNhc2UgMjM4
OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hlY2soKHl5bHNwWy00
XSksICh5eXZzcFstMl0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQotICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigoeXl2c3BbLTJdLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLCAoeXl2c3BbMF0uaW50ZXJtLm5vZGVQYWlyKSwgKHl5bHNwWy00XSkpOworICAg
ICAgICBjb250ZXh0LT5jaGVja0lzU2NhbGFyQm9vbCgoeXlsc3BbLTRdKSwgKHl5dnNwWy0yXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9k
ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSWZFbHNlKCh5eXZzcFstMl0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSksICh5eXZzcFswXS5pbnRlcm0ubm9kZVBhaXIpLCAoeXlsc3BbLTRdKSk7
CiAgICAgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNDU6CisgIGNhc2UgMjM5OgogCiAgICAg
ewogICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5ub2RlMSA9ICh5eXZzcFstMl0uaW50
ZXJtLmludGVybU5vZGUpOwpAQCAtNDU2Niw3ICs0NDE4LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBi
cmVhazsKIAotICBjYXNlIDI0NjoKKyAgY2FzZSAyNDA6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1Ob2RlKTsK
QEAgLTQ1NzUsMjIgKzQ0MjcsMjIgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNl
IDI0NzoKKyAgY2FzZSAyNDE6CiAKICAgICB7IGNvbnRleHQtPmluY3JTd2l0Y2hOZXN0aW5nTGV2
ZWwoKTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNDg6CisgIGNhc2UgMjQyOgogCiAgICAg
ewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVN3aXRjaCkgPSBjb250ZXh0LT5hZGRTd2l0
Y2goKHl5dnNwWy0zXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWzBdLmludGVybS5p
bnRlcm1BZ2dyZWdhdGUpLCAoeXlsc3BbLTVdKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtU3dpdGNoKSA9IGNvbnRleHQtPmFkZFN3aXRjaCgoeXl2c3BbLTNdLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLCAoeXl2c3BbMF0uaW50ZXJtLmludGVybUJsb2NrKSwgKHl5bHNwWy01XSkpOwog
ICAgICAgICBjb250ZXh0LT5kZWNyU3dpdGNoTmVzdGluZ0xldmVsKCk7CiAgICAgfQogCiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAyNDk6CisgIGNhc2UgMjQzOgogCiAgICAgewogICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybUNhc2UpID0gY29udGV4dC0+YWRkQ2FzZSgoeXl2c3BbLTFdLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbLTJdKSk7CkBAIC00NTk4LDcgKzQ0NTAsNyBAQCB5
eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjUwOgorICBjYXNlIDI0NDoKIAogICAg
IHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1DYXNlKSA9IGNvbnRleHQtPmFkZERlZmF1
bHQoKHl5bHNwWy0xXSkpOwpAQCAtNDYwNiw0MCArNDQ1OCwzNyBAQCB5eXJlZHVjZToKIAogICAg
IGJyZWFrOwogCi0gIGNhc2UgMjUxOgorICBjYXNlIDI0NToKIAogICAgIHsKICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpOwotICAgICAgICBpZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hlY2soKHl5dnNwWzBdLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRMaW5lKCksICh5eXZzcFswXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSkpCi0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgIGNv
bnRleHQtPmNoZWNrSXNTY2FsYXJCb29sKCh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0TGluZSgpLCAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpOwogICAgIH0K
IAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjUyOgorICBjYXNlIDI0NjoKIAogICAgIHsKICAgICAg
ICAgVEludGVybU5vZGUgKmludGVybU5vZGU7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJy
b3JDaGVjaygoeXlsc3BbLTJdKSwgKHl5dnNwWy0zXS5pbnRlcm0udHlwZSkpKQotICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICBjb250ZXh0LT5jaGVja0lzU2NhbGFyQm9v
bCgoeXlsc3BbLTJdKSwgKHl5dnNwWy0zXS5pbnRlcm0udHlwZSkpOwogCiAgICAgICAgIGlmICgh
Y29udGV4dC0+ZXhlY3V0ZUluaXRpYWxpemVyKCh5eWxzcFstMl0pLCAqKHl5dnNwWy0yXS5sZXgp
LnN0cmluZywgKHl5dnNwWy0zXS5pbnRlcm0udHlwZSksICh5eXZzcFswXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgJmludGVybU5vZGUpKQogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IDA7CiAgICAgICAgIH0KICAgICB9CiAKICAg
ICBicmVhazsKIAotICBjYXNlIDI1MzoKKyAgY2FzZSAyNDc6CiAKICAgICB7IGNvbnRleHQtPnN5
bWJvbFRhYmxlLnB1c2goKTsgY29udGV4dC0+aW5jckxvb3BOZXN0aW5nTGV2ZWwoKTsgfQogCiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAyNTQ6CisgIGNhc2UgMjQ4OgogCiAgICAgewogICAgICAgICBj
b250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsKQEAgLTQ2NDksMTcgKzQ0OTgsMTYgQEAgeXlyZWR1
Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDI1NToKKyAgY2FzZSAyNDk6CiAKICAgICB7IGNv
bnRleHQtPmluY3JMb29wTmVzdGluZ0xldmVsKCk7IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2Ug
MjU2OgorICBjYXNlIDI1MDoKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJv
ckNoZWNrKCh5eWxzcFswXSksICh5eXZzcFstMl0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQot
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICBjb250ZXh0LT5jaGVja0lz
U2NhbGFyQm9vbCgoeXlsc3BbMF0pLCAoeXl2c3BbLTJdLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
KTsKIAogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZExvb3AoRUxvb3BEb1doaWxlLCAwLCAoeXl2c3BbLTJdLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLCAwLCAoeXl2c3BbLTVdLmludGVybS5pbnRlcm1Ob2RlKSwgKHl5bHNwWy00XSkp
OwogICAgICAgICBjb250ZXh0LT5kZWNyTG9vcE5lc3RpbmdMZXZlbCgpOwpAQCAtNDY2NywxMyAr
NDUxNSwxMyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjU3OgorICBjYXNl
IDI1MToKIAogICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyBjb250ZXh0LT5pbmNy
TG9vcE5lc3RpbmdMZXZlbCgpOyB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDI1ODoKKyAgY2Fz
ZSAyNTI6CiAKICAgICB7CiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOwpAQCAt
NDY4Myw3ICs0NTMxLDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDI1OToK
KyAgY2FzZSAyNTM6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkg
PSAoeXl2c3BbMF0uaW50ZXJtLmludGVybU5vZGUpOwpAQCAtNDY5MSw3ICs0NTM5LDcgQEAgeXly
ZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDI2MDoKKyAgY2FzZSAyNTQ6CiAKICAgICB7
CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmlu
dGVybU5vZGUpOwpAQCAtNDY5OSw3ICs0NTQ3LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsK
IAotICBjYXNlIDI2MToKKyAgY2FzZSAyNTU6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsK
QEAgLTQ3MDcsNyArNDU1NSw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAy
NjI6CisgIGNhc2UgMjU2OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSAwOwpAQCAtNDcxNSw3ICs0NTYzLDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVh
azsKIAotICBjYXNlIDI2MzoKKyAgY2FzZSAyNTc6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWy0xXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KTsKQEAgLTQ3MjQsNyArNDU3Miw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAyNjQ6CisgIGNhc2UgMjU4OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQ
YWlyKS5ub2RlMSA9ICh5eXZzcFstMl0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CkBAIC00NzMz
LDcgKzQ1ODEsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjY1OgorICBj
YXNlIDI1OToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNv
bnRleHQtPmFkZEJyYW5jaChFT3BDb250aW51ZSwgKHl5bHNwWy0xXSkpOwpAQCAtNDc0MSw3ICs0
NTg5LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDI2NjoKKyAgY2FzZSAy
NjA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0
LT5hZGRCcmFuY2goRU9wQnJlYWssICh5eWxzcFstMV0pKTsKQEAgLTQ3NDksNyArNDU5Nyw3IEBA
IHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNjc6CisgIGNhc2UgMjYxOgogCiAg
ICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+YWRkQnJh
bmNoKEVPcFJldHVybiwgKHl5bHNwWy0xXSkpOwpAQCAtNDc1Nyw3ICs0NjA1LDcgQEAgeXlyZWR1
Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDI2ODoKKyAgY2FzZSAyNjI6CiAKICAgICB7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5hZGRCcmFuY2goRU9w
UmV0dXJuLCAoeXl2c3BbLTFdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbLTJdKSk7
CkBAIC00NzY1LDcgKzQ2MTMsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2Ug
MjY5OgorICBjYXNlIDI2MzoKIAogICAgIHsKICAgICAgICAgRlJBR19PTkxZKCJkaXNjYXJkIiwg
KHl5bHNwWy0xXSkpOwpAQCAtNDc3NCwyNSArNDYyMiwyNiBAQCB5eXJlZHVjZToKIAogICAgIGJy
ZWFrOwogCi0gIGNhc2UgMjcwOgorICBjYXNlIDI2NDoKIAogICAgIHsKLSAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtTm9kZSk7Ci0gICAg
ICAgIGNvbnRleHQtPnNldFRyZWVSb290KCh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkpOworICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybUJsb2NrKSA9IG5ldyBUSW50ZXJtQmxvY2soKTsKKyAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1CbG9jayktPnNldExpbmUoKHl5bG9jKSk7CisgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQmxvY2spLT5hcHBlbmRTdGF0ZW1lbnQoKHl5dnNwWzBd
LmludGVybS5pbnRlcm1Ob2RlKSk7CisgICAgICAgIGNvbnRleHQtPnNldFRyZWVSb290KCh5eXZh
bC5pbnRlcm0uaW50ZXJtQmxvY2spKTsKICAgICB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDI3
MToKKyAgY2FzZSAyNjU6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9k
ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbLTFdLmludGVy
bS5pbnRlcm1Ob2RlKSwgKHl5dnNwWzBdLmludGVybS5pbnRlcm1Ob2RlKSwgKHl5bG9jKSk7Ci0g
ICAgICAgIGNvbnRleHQtPnNldFRyZWVSb290KCh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkpOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybUJsb2NrKS0+YXBwZW5kU3RhdGVtZW50KCh5eXZz
cFswXS5pbnRlcm0uaW50ZXJtTm9kZSkpOwogICAgIH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2Ug
MjcyOgorICBjYXNlIDI2NjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1O
b2RlKSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtTm9kZSk7CkBAIC00ODAwLDcgKzQ2NDksNyBA
QCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjczOgorICBjYXNlIDI2NzoKIAog
ICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFswXS5pbnRl
cm0uaW50ZXJtTm9kZSk7CkBAIC00ODA4LDE4ICs0NjU3LDE4IEBAIHl5cmVkdWNlOgogCiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAyNzQ6CisgIGNhc2UgMjY4OgogCiAgICAgewotICAgICAgICBjb250
ZXh0LT5wYXJzZUZ1bmN0aW9uUHJvdG90eXBlKCh5eWxzcFswXSksICh5eXZzcFswXS5pbnRlcm0p
LmZ1bmN0aW9uLCAmKHl5dnNwWzBdLmludGVybSkuaW50ZXJtQWdncmVnYXRlKTsKKyAgICAgICAg
Y29udGV4dC0+cGFyc2VGdW5jdGlvbkRlZmluaXRpb25IZWFkZXIoKHl5bHNwWzBdKSwgJigoeXl2
c3BbMF0uaW50ZXJtKS5mdW5jdGlvbiksICYoeXl2c3BbMF0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdh
dGUpOwogICAgIH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjc1OgorICBjYXNlIDI2OToKIAog
ICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmFkZEZ1
bmN0aW9uRGVmaW5pdGlvbigqKCh5eXZzcFstMl0uaW50ZXJtKS5mdW5jdGlvbiksICh5eXZzcFst
Ml0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUsICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtQWdncmVn
YXRlKSwgKHl5bHNwWy0yXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0g
Y29udGV4dC0+YWRkRnVuY3Rpb25EZWZpbml0aW9uKCooKHl5dnNwWy0yXS5pbnRlcm0pLmZ1bmN0
aW9uKSwgKHl5dnNwWy0yXS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSwgKHl5dnNwWzBdLmludGVy
bS5pbnRlcm1CbG9jayksICh5eWxzcFstMl0pKTsKICAgICB9CiAKICAgICBicmVhazsKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2dsc2xhbmdf
dGFiLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvZ2xzbGFuZ190YWIuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZ190YWIuaAkod29y
a2luZyBjb3B5KQpAQCAtMjEwLDYgKzIxMCw3IEBAIHVuaW9uIFlZU1RZUEUKICAgICAgICAgICAg
IFRJbnRlcm1DYXNlKiBpbnRlcm1DYXNlOwogICAgICAgICB9OwogICAgICAgICB1bmlvbiB7Cisg
ICAgICAgICAgICBUVHlwZVNwZWNpZmllck5vbkFycmF5IHR5cGVTcGVjaWZpZXJOb25BcnJheTsK
ICAgICAgICAgICAgIFRQdWJsaWNUeXBlIHR5cGU7CiAgICAgICAgICAgICBUUHJlY2lzaW9uIHBy
ZWNpc2lvbjsKICAgICAgICAgICAgIFRMYXlvdXRRdWFsaWZpZXIgbGF5b3V0UXVhbGlmaWVyOwpA
QCAtMjE4LDYgKzIxOSw4IEBAIHVuaW9uIFlZU1RZUEUKICAgICAgICAgICAgIFRQYXJhbWV0ZXIg
cGFyYW07CiAgICAgICAgICAgICBURmllbGQqIGZpZWxkOwogICAgICAgICAgICAgVEZpZWxkTGlz
dCogZmllbGRMaXN0OworICAgICAgICAgICAgVFF1YWxpZmllcldyYXBwZXJCYXNlICpxdWFsaWZp
ZXJXcmFwcGVyOworICAgICAgICAgICAgVFR5cGVRdWFsaWZpZXJCdWlsZGVyICp0eXBlUXVhbGlm
aWVyQnVpbGRlcjsKICAgICAgICAgfTsKICAgICB9IGludGVybTsKIApJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvaW50ZXJtT3V0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9pbnRlcm1PdXQuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9pbnRlcm1PdXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMCwxMCArMTAsMTEgQEAKIG5hbWVzcGFjZQogewogCi12b2lkIE91dHB1dEZ1bmN0aW9u
KFRJbmZvU2lua0Jhc2UgJm91dCwgY29uc3QgY2hhciAqc3RyLCBUSW50ZXJtQWdncmVnYXRlICpu
b2RlKQordm9pZCBPdXRwdXRGdW5jdGlvbihUSW5mb1NpbmtCYXNlICZvdXQsIGNvbnN0IGNoYXIg
KnN0ciwgVEZ1bmN0aW9uU3ltYm9sSW5mbyAqaW5mbykKIHsKLSAgICBjb25zdCBjaGFyICppbnRl
cm5hbCA9IG5vZGUtPmdldE5hbWVPYmooKS5pc0ludGVybmFsKCkgPyAiIChpbnRlcm5hbCBmdW5j
dGlvbikiIDogIiI7Ci0gICAgb3V0IDw8IHN0ciA8PCBpbnRlcm5hbCA8PCAiOiAiIDw8IG5vZGUt
PmdldE5hbWVPYmooKS5nZXRTdHJpbmcoKTsKKyAgICBjb25zdCBjaGFyICppbnRlcm5hbCA9IGlu
Zm8tPmdldE5hbWVPYmooKS5pc0ludGVybmFsKCkgPyAiIChpbnRlcm5hbCBmdW5jdGlvbikiIDog
IiI7CisgICAgb3V0IDw8IHN0ciA8PCBpbnRlcm5hbCA8PCAiOiAiIDw8IGluZm8tPmdldE5hbWVP
YmooKS5nZXRTdHJpbmcoKSA8PCAiIChzeW1ib2wgaWQgIgorICAgICAgICA8PCBpbmZvLT5nZXRJ
ZCgpIDw8ICIpIjsKIH0KIAogLy8KQEAgLTQyLDEwICs0MywxNiBAQCBjbGFzcyBUT3V0cHV0VHJh
dmVyc2VyIDogcHVibGljIFRJbnRlcm1UCiAgIHByb3RlY3RlZDoKICAgICB2b2lkIHZpc2l0U3lt
Ym9sKFRJbnRlcm1TeW1ib2wgKikgb3ZlcnJpZGU7CiAgICAgdm9pZCB2aXNpdENvbnN0YW50VW5p
b24oVEludGVybUNvbnN0YW50VW5pb24gKikgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdFN3aXp6
bGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1Td2l6emxlICpub2RlKSBvdmVycmlkZTsKICAgICBib29s
IHZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5ICopIG92ZXJyaWRlOwogICAg
IGJvb2wgdmlzaXRVbmFyeShWaXNpdCB2aXNpdCwgVEludGVybVVuYXJ5ICopIG92ZXJyaWRlOwot
ICAgIGJvb2wgdmlzaXRTZWxlY3Rpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1TZWxlY3Rpb24gKikg
b3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdFRlcm5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1UZXJu
YXJ5ICpub2RlKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0SWZFbHNlKFZpc2l0IHZpc2l0LCBU
SW50ZXJtSWZFbHNlICpub2RlKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0U3dpdGNoKFZpc2l0
IHZpc2l0LCBUSW50ZXJtU3dpdGNoICpub2RlKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0Q2Fz
ZShWaXNpdCB2aXNpdCwgVEludGVybUNhc2UgKm5vZGUpIG92ZXJyaWRlOworICAgIGJvb2wgdmlz
aXRGdW5jdGlvbkRlZmluaXRpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRp
b24gKm5vZGUpIG92ZXJyaWRlOwogICAgIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQs
IFRJbnRlcm1BZ2dyZWdhdGUgKikgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdEJsb2NrKFZpc2l0
IHZpc2l0LCBUSW50ZXJtQmxvY2sgKikgb3ZlcnJpZGU7CiAgICAgYm9vbCB2aXNpdExvb3AoVmlz
aXQgdmlzaXQsIFRJbnRlcm1Mb29wICopIG92ZXJyaWRlOwogICAgIGJvb2wgdmlzaXRCcmFuY2go
VmlzaXQgdmlzaXQsIFRJbnRlcm1CcmFuY2ggKikgb3ZlcnJpZGU7CiB9OwpAQCAtODIsNiArODks
MTQgQEAgdm9pZCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdFN5bWJvbChUSW50ZQogICAgIHNpbmsg
PDwgIigiIDw8IG5vZGUtPmdldENvbXBsZXRlU3RyaW5nKCkgPDwgIilcbiI7CiB9CiAKK2Jvb2wg
VE91dHB1dFRyYXZlcnNlcjo6dmlzaXRTd2l6emxlKFZpc2l0IHZpc2l0LCBUSW50ZXJtU3dpenps
ZSAqbm9kZSkKK3sKKyAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBzaW5rOworICAgIE91dHB1dFRy
ZWVUZXh0KG91dCwgbm9kZSwgbURlcHRoKTsKKyAgICBvdXQgPDwgInZlY3RvciBzd2l6emxlIjsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdEJpbmFy
eShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkKIHsKICAgICBUSW5mb1NpbmtCYXNl
JiBvdXQgPSBzaW5rOwpAQCAtOTAsMTQ4ICsxMDUsMTQ4IEBAIGJvb2wgVE91dHB1dFRyYXZlcnNl
cjo6dmlzaXRCaW5hcnkoVmlzaXQKIAogICAgIHN3aXRjaCAobm9kZS0+Z2V0T3AoKSkKICAgICB7
Ci0gICAgICBjYXNlIEVPcEFzc2lnbjoKLSAgICAgICAgb3V0IDw8ICJtb3ZlIHNlY29uZCBjaGls
ZCB0byBmaXJzdCBjaGlsZCI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BJbml0aWFs
aXplOgotICAgICAgICBvdXQgPDwgImluaXRpYWxpemUgZmlyc3QgY2hpbGQgd2l0aCBzZWNvbmQg
Y2hpbGQiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQWRkQXNzaWduOgotICAgICAg
ICBvdXQgPDwgImFkZCBzZWNvbmQgY2hpbGQgaW50byBmaXJzdCBjaGlsZCI7Ci0gICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBFT3BTdWJBc3NpZ246Ci0gICAgICAgIG91dCA8PCAic3VidHJhY3Qg
c2Vjb25kIGNoaWxkIGludG8gZmlyc3QgY2hpbGQiOwotICAgICAgICBicmVhazsKLSAgICAgIGNh
c2UgRU9wTXVsQXNzaWduOgotICAgICAgICBvdXQgPDwgIm11bHRpcGx5IHNlY29uZCBjaGlsZCBp
bnRvIGZpcnN0IGNoaWxkIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFZlY3RvclRp
bWVzTWF0cml4QXNzaWduOgotICAgICAgICBvdXQgPDwgIm1hdHJpeCBtdWx0IHNlY29uZCBjaGls
ZCBpbnRvIGZpcnN0IGNoaWxkIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFZlY3Rv
clRpbWVzU2NhbGFyQXNzaWduOgotICAgICAgICBvdXQgPDwgInZlY3RvciBzY2FsZSBzZWNvbmQg
Y2hpbGQgaW50byBmaXJzdCBjaGlsZCI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BN
YXRyaXhUaW1lc1NjYWxhckFzc2lnbjoKLSAgICAgICAgb3V0IDw8ICJtYXRyaXggc2NhbGUgc2Vj
b25kIGNoaWxkIGludG8gZmlyc3QgY2hpbGQiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ug
RU9wTWF0cml4VGltZXNNYXRyaXhBc3NpZ246Ci0gICAgICAgIG91dCA8PCAibWF0cml4IG11bHQg
c2Vjb25kIGNoaWxkIGludG8gZmlyc3QgY2hpbGQiOwotICAgICAgICBicmVhazsKLSAgICAgIGNh
c2UgRU9wRGl2QXNzaWduOgotICAgICAgICBvdXQgPDwgImRpdmlkZSBzZWNvbmQgY2hpbGQgaW50
byBmaXJzdCBjaGlsZCI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BJTW9kQXNzaWdu
OgotICAgICAgICBvdXQgPDwgIm1vZHVsbyBzZWNvbmQgY2hpbGQgaW50byBmaXJzdCBjaGlsZCI7
Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BCaXRTaGlmdExlZnRBc3NpZ246Ci0gICAg
ICAgIG91dCA8PCAiYml0LXdpc2Ugc2hpZnQgZmlyc3QgY2hpbGQgbGVmdCBieSBzZWNvbmQgY2hp
bGQiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQml0U2hpZnRSaWdodEFzc2lnbjoK
LSAgICAgICAgb3V0IDw8ICJiaXQtd2lzZSBzaGlmdCBmaXJzdCBjaGlsZCByaWdodCBieSBzZWNv
bmQgY2hpbGQiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQml0d2lzZUFuZEFzc2ln
bjoKLSAgICAgICAgb3V0IDw8ICJiaXQtd2lzZSBhbmQgc2Vjb25kIGNoaWxkIGludG8gZmlyc3Qg
Y2hpbGQiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQml0d2lzZVhvckFzc2lnbjoK
LSAgICAgICAgb3V0IDw8ICJiaXQtd2lzZSB4b3Igc2Vjb25kIGNoaWxkIGludG8gZmlyc3QgY2hp
bGQiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQml0d2lzZU9yQXNzaWduOgotICAg
ICAgICBvdXQgPDwgImJpdC13aXNlIG9yIHNlY29uZCBjaGlsZCBpbnRvIGZpcnN0IGNoaWxkIjsK
LSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3Q6Ci0gICAgICAgIG91
dCA8PCAiZGlyZWN0IGluZGV4IjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEluZGV4
SW5kaXJlY3Q6Ci0gICAgICAgIG91dCA8PCAiaW5kaXJlY3QgaW5kZXgiOwotICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3RTdHJ1Y3Q6Ci0gICAgICAgIG91dCA8PCAiZGly
ZWN0IGluZGV4IGZvciBzdHJ1Y3R1cmUiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9w
SW5kZXhEaXJlY3RJbnRlcmZhY2VCbG9jazoKLSAgICAgICAgb3V0IDw8ICJkaXJlY3QgaW5kZXgg
Zm9yIGludGVyZmFjZSBibG9jayI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BWZWN0
b3JTd2l6emxlOgotICAgICAgICBvdXQgPDwgInZlY3RvciBzd2l6emxlIjsKLSAgICAgICAgYnJl
YWs7Ci0KLSAgICAgIGNhc2UgRU9wQWRkOgotICAgICAgICBvdXQgPDwgImFkZCI7Ci0gICAgICAg
IGJyZWFrOwotICAgICAgY2FzZSBFT3BTdWI6Ci0gICAgICAgIG91dCA8PCAic3VidHJhY3QiOwot
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wTXVsOgotICAgICAgICBvdXQgPDwgImNvbXBv
bmVudC13aXNlIG11bHRpcGx5IjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcERpdjoK
LSAgICAgICAgb3V0IDw8ICJkaXZpZGUiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9w
SU1vZDoKLSAgICAgICAgb3V0IDw8ICJtb2R1bG8iOwotICAgICAgICBicmVhazsKLSAgICAgIGNh
c2UgRU9wQml0U2hpZnRMZWZ0OgotICAgICAgICBvdXQgPDwgImJpdC13aXNlIHNoaWZ0IGxlZnQi
OwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQml0U2hpZnRSaWdodDoKLSAgICAgICAg
b3V0IDw8ICJiaXQtd2lzZSBzaGlmdCByaWdodCI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBFT3BCaXR3aXNlQW5kOgotICAgICAgICBvdXQgPDwgImJpdC13aXNlIGFuZCI7Ci0gICAgICAg
IGJyZWFrOwotICAgICAgY2FzZSBFT3BCaXR3aXNlWG9yOgotICAgICAgICBvdXQgPDwgImJpdC13
aXNlIHhvciI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BCaXR3aXNlT3I6Ci0gICAg
ICAgIG91dCA8PCAiYml0LXdpc2Ugb3IiOwotICAgICAgICBicmVhazsKLQotICAgICAgY2FzZSBF
T3BFcXVhbDoKLSAgICAgICAgb3V0IDw8ICJDb21wYXJlIEVxdWFsIjsKLSAgICAgICAgYnJlYWs7
Ci0gICAgICBjYXNlIEVPcE5vdEVxdWFsOgotICAgICAgICBvdXQgPDwgIkNvbXBhcmUgTm90IEVx
dWFsIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcExlc3NUaGFuOgotICAgICAgICBv
dXQgPDwgIkNvbXBhcmUgTGVzcyBUaGFuIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVP
cEdyZWF0ZXJUaGFuOgotICAgICAgICBvdXQgPDwgIkNvbXBhcmUgR3JlYXRlciBUaGFuIjsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcExlc3NUaGFuRXF1YWw6Ci0gICAgICAgIG91dCA8
PCAiQ29tcGFyZSBMZXNzIFRoYW4gb3IgRXF1YWwiOwotICAgICAgICBicmVhazsKLSAgICAgIGNh
c2UgRU9wR3JlYXRlclRoYW5FcXVhbDoKLSAgICAgICAgb3V0IDw8ICJDb21wYXJlIEdyZWF0ZXIg
VGhhbiBvciBFcXVhbCI7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgICBjYXNlIEVPcFZlY3RvclRp
bWVzU2NhbGFyOgotICAgICAgICBvdXQgPDwgInZlY3Rvci1zY2FsZSI7Ci0gICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBFT3BWZWN0b3JUaW1lc01hdHJpeDoKLSAgICAgICAgb3V0IDw8ICJ2ZWN0
b3ItdGltZXMtbWF0cml4IjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcE1hdHJpeFRp
bWVzVmVjdG9yOgotICAgICAgICBvdXQgPDwgIm1hdHJpeC10aW1lcy12ZWN0b3IiOwotICAgICAg
ICBicmVhazsKLSAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNTY2FsYXI6Ci0gICAgICAgIG91dCA8
PCAibWF0cml4LXNjYWxlIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcE1hdHJpeFRp
bWVzTWF0cml4OgotICAgICAgICBvdXQgPDwgIm1hdHJpeC1tdWx0aXBseSI7Ci0gICAgICAgIGJy
ZWFrOwotCi0gICAgICBjYXNlIEVPcExvZ2ljYWxPcjoKLSAgICAgICAgb3V0IDw8ICJsb2dpY2Fs
LW9yIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcExvZ2ljYWxYb3I6Ci0gICAgICAg
IG91dCA8PCAibG9naWNhbC14b3IiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wTG9n
aWNhbEFuZDoKLSAgICAgICAgb3V0IDw8ICJsb2dpY2FsLWFuZCI7Ci0gICAgICAgIGJyZWFrOwot
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgb3V0IDw8ICI8dW5rbm93biBvcD4iOworICAgICAgICBj
YXNlIEVPcENvbW1hOgorICAgICAgICAgICAgb3V0IDw8ICJjb21tYSI7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBFT3BBc3NpZ246CisgICAgICAgICAgICBvdXQgPDwgIm1vdmUg
c2Vjb25kIGNoaWxkIHRvIGZpcnN0IGNoaWxkIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEVPcEluaXRpYWxpemU6CisgICAgICAgICAgICBvdXQgPDwgImluaXRpYWxpemUgZmly
c3QgY2hpbGQgd2l0aCBzZWNvbmQgY2hpbGQiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRU9wQWRkQXNzaWduOgorICAgICAgICAgICAgb3V0IDw8ICJhZGQgc2Vjb25kIGNoaWxk
IGludG8gZmlyc3QgY2hpbGQiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9w
U3ViQXNzaWduOgorICAgICAgICAgICAgb3V0IDw8ICJzdWJ0cmFjdCBzZWNvbmQgY2hpbGQgaW50
byBmaXJzdCBjaGlsZCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BNdWxB
c3NpZ246CisgICAgICAgICAgICBvdXQgPDwgIm11bHRpcGx5IHNlY29uZCBjaGlsZCBpbnRvIGZp
cnN0IGNoaWxkIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcFZlY3RvclRp
bWVzTWF0cml4QXNzaWduOgorICAgICAgICAgICAgb3V0IDw8ICJtYXRyaXggbXVsdCBzZWNvbmQg
Y2hpbGQgaW50byBmaXJzdCBjaGlsZCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBFT3BWZWN0b3JUaW1lc1NjYWxhckFzc2lnbjoKKyAgICAgICAgICAgIG91dCA8PCAidmVjdG9y
IHNjYWxlIHNlY29uZCBjaGlsZCBpbnRvIGZpcnN0IGNoaWxkIjsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzU2NhbGFyQXNzaWduOgorICAgICAgICAgICAg
b3V0IDw8ICJtYXRyaXggc2NhbGUgc2Vjb25kIGNoaWxkIGludG8gZmlyc3QgY2hpbGQiOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNNYXRyaXhBc3NpZ246
CisgICAgICAgICAgICBvdXQgPDwgIm1hdHJpeCBtdWx0IHNlY29uZCBjaGlsZCBpbnRvIGZpcnN0
IGNoaWxkIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcERpdkFzc2lnbjoK
KyAgICAgICAgICAgIG91dCA8PCAiZGl2aWRlIHNlY29uZCBjaGlsZCBpbnRvIGZpcnN0IGNoaWxk
IjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcElNb2RBc3NpZ246CisgICAg
ICAgICAgICBvdXQgPDwgIm1vZHVsbyBzZWNvbmQgY2hpbGQgaW50byBmaXJzdCBjaGlsZCI7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BCaXRTaGlmdExlZnRBc3NpZ246Cisg
ICAgICAgICAgICBvdXQgPDwgImJpdC13aXNlIHNoaWZ0IGZpcnN0IGNoaWxkIGxlZnQgYnkgc2Vj
b25kIGNoaWxkIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEJpdFNoaWZ0
UmlnaHRBc3NpZ246CisgICAgICAgICAgICBvdXQgPDwgImJpdC13aXNlIHNoaWZ0IGZpcnN0IGNo
aWxkIHJpZ2h0IGJ5IHNlY29uZCBjaGlsZCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBFT3BCaXR3aXNlQW5kQXNzaWduOgorICAgICAgICAgICAgb3V0IDw8ICJiaXQtd2lzZSBh
bmQgc2Vjb25kIGNoaWxkIGludG8gZmlyc3QgY2hpbGQiOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgRU9wQml0d2lzZVhvckFzc2lnbjoKKyAgICAgICAgICAgIG91dCA8PCAiYml0
LXdpc2UgeG9yIHNlY29uZCBjaGlsZCBpbnRvIGZpcnN0IGNoaWxkIjsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEVPcEJpdHdpc2VPckFzc2lnbjoKKyAgICAgICAgICAgIG91dCA8
PCAiYml0LXdpc2Ugb3Igc2Vjb25kIGNoaWxkIGludG8gZmlyc3QgY2hpbGQiOworICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBFT3BJbmRleERpcmVjdDoKKyAgICAgICAgICAgIG91
dCA8PCAiZGlyZWN0IGluZGV4IjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVP
cEluZGV4SW5kaXJlY3Q6CisgICAgICAgICAgICBvdXQgPDwgImluZGlyZWN0IGluZGV4IjsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0U3RydWN0OgorICAg
ICAgICAgICAgb3V0IDw8ICJkaXJlY3QgaW5kZXggZm9yIHN0cnVjdHVyZSI7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BJbmRleERpcmVjdEludGVyZmFjZUJsb2NrOgorICAg
ICAgICAgICAgb3V0IDw8ICJkaXJlY3QgaW5kZXggZm9yIGludGVyZmFjZSBibG9jayI7CisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEVPcEFkZDoKKyAgICAgICAgICAgIG91dCA8
PCAiYWRkIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcFN1YjoKKyAgICAg
ICAgICAgIG91dCA8PCAic3VidHJhY3QiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgRU9wTXVsOgorICAgICAgICAgICAgb3V0IDw8ICJjb21wb25lbnQtd2lzZSBtdWx0aXBseSI7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BEaXY6CisgICAgICAgICAgICBv
dXQgPDwgImRpdmlkZSI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BJTW9k
OgorICAgICAgICAgICAgb3V0IDw8ICJtb2R1bG8iOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgRU9wQml0U2hpZnRMZWZ0OgorICAgICAgICAgICAgb3V0IDw8ICJiaXQtd2lzZSBz
aGlmdCBsZWZ0IjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEJpdFNoaWZ0
UmlnaHQ6CisgICAgICAgICAgICBvdXQgPDwgImJpdC13aXNlIHNoaWZ0IHJpZ2h0IjsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEJpdHdpc2VBbmQ6CisgICAgICAgICAgICBv
dXQgPDwgImJpdC13aXNlIGFuZCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBF
T3BCaXR3aXNlWG9yOgorICAgICAgICAgICAgb3V0IDw8ICJiaXQtd2lzZSB4b3IiOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQml0d2lzZU9yOgorICAgICAgICAgICAgb3V0
IDw8ICJiaXQtd2lzZSBvciI7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEVP
cEVxdWFsOgorICAgICAgICAgICAgb3V0IDw8ICJDb21wYXJlIEVxdWFsIjsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEVPcE5vdEVxdWFsOgorICAgICAgICAgICAgb3V0IDw8ICJD
b21wYXJlIE5vdCBFcXVhbCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BM
ZXNzVGhhbjoKKyAgICAgICAgICAgIG91dCA8PCAiQ29tcGFyZSBMZXNzIFRoYW4iOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wR3JlYXRlclRoYW46CisgICAgICAgICAgICBv
dXQgPDwgIkNvbXBhcmUgR3JlYXRlciBUaGFuIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEVPcExlc3NUaGFuRXF1YWw6CisgICAgICAgICAgICBvdXQgPDwgIkNvbXBhcmUgTGVz
cyBUaGFuIG9yIEVxdWFsIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEdy
ZWF0ZXJUaGFuRXF1YWw6CisgICAgICAgICAgICBvdXQgPDwgIkNvbXBhcmUgR3JlYXRlciBUaGFu
IG9yIEVxdWFsIjsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRU9wVmVjdG9y
VGltZXNTY2FsYXI6CisgICAgICAgICAgICBvdXQgPDwgInZlY3Rvci1zY2FsZSI7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BWZWN0b3JUaW1lc01hdHJpeDoKKyAgICAgICAg
ICAgIG91dCA8PCAidmVjdG9yLXRpbWVzLW1hdHJpeCI7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1ZlY3RvcjoKKyAgICAgICAgICAgIG91dCA8PCAibWF0
cml4LXRpbWVzLXZlY3RvciI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BN
YXRyaXhUaW1lc1NjYWxhcjoKKyAgICAgICAgICAgIG91dCA8PCAibWF0cml4LXNjYWxlIjsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzTWF0cml4OgorICAg
ICAgICAgICAgb3V0IDw8ICJtYXRyaXgtbXVsdGlwbHkiOworICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgY2FzZSBFT3BMb2dpY2FsT3I6CisgICAgICAgICAgICBvdXQgPDwgImxvZ2ljYWwt
b3IiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wTG9naWNhbFhvcjoKKyAg
ICAgICAgICAgIG91dCA8PCAibG9naWNhbC14b3IiOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgRU9wTG9naWNhbEFuZDoKKyAgICAgICAgICAgIG91dCA8PCAibG9naWNhbC1hbmQi
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBvdXQg
PDwgIjx1bmtub3duIG9wPiI7CiAgICAgfQogCiAgICAgb3V0IDw8ICIgKCIgPDwgbm9kZS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSA8PCAiKSI7CkBAIC0zNjIsMjcgKzM3NywzOCBAQCBib29sIFRPdXRw
dXRUcmF2ZXJzZXI6OnZpc2l0VW5hcnkoVmlzaXQgCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jv
b2wgVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRGdW5jdGlvbkRlZmluaXRpb24oVmlzaXQgdmlzaXQs
IFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKm5vZGUpCit7CisgICAgVEluZm9TaW5rQmFzZSAm
b3V0ID0gc2luazsKKyAgICBPdXRwdXRUcmVlVGV4dChvdXQsIG5vZGUsIG1EZXB0aCk7CisgICAg
T3V0cHV0RnVuY3Rpb24ob3V0LCAiRnVuY3Rpb24gRGVmaW5pdGlvbiIsIG5vZGUtPmdldEZ1bmN0
aW9uU3ltYm9sSW5mbygpKTsKKyAgICBvdXQgPDwgIlxuIjsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwogYm9vbCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVElu
dGVybUFnZ3JlZ2F0ZSAqbm9kZSkKIHsKICAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBzaW5rOwog
CisgICAgT3V0cHV0VHJlZVRleHQob3V0LCBub2RlLCBtRGVwdGgpOworCiAgICAgaWYgKG5vZGUt
PmdldE9wKCkgPT0gRU9wTnVsbCkKICAgICB7CiAgICAgICAgIG91dC5wcmVmaXgoRVByZWZpeEVy
cm9yKTsKLSAgICAgICAgb3V0IDw8ICJub2RlIGlzIHN0aWxsIEVPcE51bGwhIjsKKyAgICAgICAg
b3V0IDw8ICJub2RlIGlzIHN0aWxsIEVPcE51bGwhXG4iOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKLSAgICBPdXRwdXRUcmVlVGV4dChvdXQsIG5vZGUsIG1EZXB0aCk7CiAKICAgICBz
d2l0Y2ggKG5vZGUtPmdldE9wKCkpCiAgICAgewotICAgICAgY2FzZSBFT3BTZXF1ZW5jZTogICAg
ICBvdXQgPDwgIlNlcXVlbmNlXG4iOyByZXR1cm4gdHJ1ZTsKLSAgICAgIGNhc2UgRU9wQ29tbWE6
ICAgICAgICAgb3V0IDw8ICJDb21tYVxuIjsgcmV0dXJuIHRydWU7Ci0gICAgICBjYXNlIEVPcEZ1
bmN0aW9uOiAgICAgIE91dHB1dEZ1bmN0aW9uKG91dCwgIkZ1bmN0aW9uIERlZmluaXRpb24iLCBu
b2RlKTsgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEZ1bmN0aW9uQ2FsbDogIE91dHB1dEZ1bmN0aW9u
KG91dCwgIkZ1bmN0aW9uIENhbGwiLCBub2RlKTsgYnJlYWs7CisgICAgICBjYXNlIEVPcEZ1bmN0
aW9uQ2FsbDoKKyAgICAgICAgICBPdXRwdXRGdW5jdGlvbihvdXQsICJGdW5jdGlvbiBDYWxsIiwg
bm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCkpOworICAgICAgICAgIGJyZWFrOwogICAgICAg
Y2FzZSBFT3BQYXJhbWV0ZXJzOiAgICBvdXQgPDwgIkZ1bmN0aW9uIFBhcmFtZXRlcnM6ICI7ICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wUHJvdG90eXBlOiAgICAgT3V0cHV0RnVu
Y3Rpb24ob3V0LCAiRnVuY3Rpb24gUHJvdG90eXBlIiwgbm9kZSk7IGJyZWFrOworICAgICAgY2Fz
ZSBFT3BQcm90b3R5cGU6CisgICAgICAgICAgT3V0cHV0RnVuY3Rpb24ob3V0LCAiRnVuY3Rpb24g
UHJvdG90eXBlIiwgbm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCkpOworICAgICAgICAgIGJy
ZWFrOwogCiAgICAgICBjYXNlIEVPcENvbnN0cnVjdEZsb2F0OiBvdXQgPDwgIkNvbnN0cnVjdCBm
bG9hdCI7IGJyZWFrOwogICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RWZWMyOiAgb3V0IDw8ICJDb25z
dHJ1Y3QgdmVjMiI7ICBicmVhazsKQEAgLTQ0OSw3ICs0NzUsNyBAQCBib29sIFRPdXRwdXRUcmF2
ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpCiAgICAgICAgIG91dCA8PCAiQmFkIGFnZ3JlZ2F0aW9u
IG9wIjsKICAgICB9CiAKLSAgICBpZiAobm9kZS0+Z2V0T3AoKSAhPSBFT3BTZXF1ZW5jZSAmJiBu
b2RlLT5nZXRPcCgpICE9IEVPcFBhcmFtZXRlcnMpCisgICAgaWYgKG5vZGUtPmdldE9wKCkgIT0g
RU9wUGFyYW1ldGVycykKICAgICAgICAgb3V0IDw8ICIgKCIgPDwgbm9kZS0+Z2V0Q29tcGxldGVT
dHJpbmcoKSA8PCAiKSI7CiAKICAgICBvdXQgPDwgIlxuIjsKQEAgLTQ1NywxMyArNDgzLDIzIEBA
IGJvb2wgVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRBZ2dyZWdhdGUoVmkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdFNlbGVjdGlvbihWaXNpdCB2aXNp
dCwgVEludGVybVNlbGVjdGlvbiAqbm9kZSkKK2Jvb2wgVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRC
bG9jayhWaXNpdCB2aXNpdCwgVEludGVybUJsb2NrICpub2RlKQoreworICAgIFRJbmZvU2lua0Jh
c2UgJm91dCA9IHNpbms7CisKKyAgICBPdXRwdXRUcmVlVGV4dChvdXQsIG5vZGUsIG1EZXB0aCk7
CisgICAgb3V0IDw8ICJDb2RlIGJsb2NrXG4iOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRUZXJuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtVGVy
bmFyeSAqbm9kZSkKIHsKICAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBzaW5rOwogCiAgICAgT3V0
cHV0VHJlZVRleHQob3V0LCBub2RlLCBtRGVwdGgpOwogCi0gICAgb3V0IDw8ICJUZXN0IGNvbmRp
dGlvbiBhbmQgc2VsZWN0IjsKKyAgICBvdXQgPDwgIlRlcm5hcnkgc2VsZWN0aW9uIjsKICAgICBv
dXQgPDwgIiAoIiA8PCBub2RlLT5nZXRDb21wbGV0ZVN0cmluZygpIDw8ICIpXG4iOwogCiAgICAg
KyttRGVwdGg7CkBAIC00NzMsNiArNTA5LDM4IEBAIGJvb2wgVE91dHB1dFRyYXZlcnNlcjo6dmlz
aXRTZWxlY3Rpb24oVmkKICAgICBub2RlLT5nZXRDb25kaXRpb24oKS0+dHJhdmVyc2UodGhpcyk7
CiAKICAgICBPdXRwdXRUcmVlVGV4dChzaW5rLCBub2RlLCBtRGVwdGgpOworICAgIGlmIChub2Rl
LT5nZXRUcnVlRXhwcmVzc2lvbigpKQorICAgIHsKKyAgICAgICAgb3V0IDw8ICJ0cnVlIGNhc2Vc
biI7CisgICAgICAgIG5vZGUtPmdldFRydWVFeHByZXNzaW9uKCktPnRyYXZlcnNlKHRoaXMpOwor
ICAgIH0KKyAgICBpZiAobm9kZS0+Z2V0RmFsc2VFeHByZXNzaW9uKCkpCisgICAgeworICAgICAg
ICBPdXRwdXRUcmVlVGV4dChzaW5rLCBub2RlLCBtRGVwdGgpOworICAgICAgICBvdXQgPDwgImZh
bHNlIGNhc2VcbiI7CisgICAgICAgIG5vZGUtPmdldEZhbHNlRXhwcmVzc2lvbigpLT50cmF2ZXJz
ZSh0aGlzKTsKKyAgICB9CisKKyAgICAtLW1EZXB0aDsKKworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdElmRWxzZShWaXNpdCB2aXNpdCwgVEludGVy
bUlmRWxzZSAqbm9kZSkKK3sKKyAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBzaW5rOworCisgICAg
T3V0cHV0VHJlZVRleHQob3V0LCBub2RlLCBtRGVwdGgpOworCisgICAgb3V0IDw8ICJJZiB0ZXN0
XG4iOworCisgICAgKyttRGVwdGg7CisKKyAgICBPdXRwdXRUcmVlVGV4dChzaW5rLCBub2RlLCBt
RGVwdGgpOworICAgIG91dCA8PCAiQ29uZGl0aW9uXG4iOworICAgIG5vZGUtPmdldENvbmRpdGlv
bigpLT50cmF2ZXJzZSh0aGlzKTsKKworICAgIE91dHB1dFRyZWVUZXh0KHNpbmssIG5vZGUsIG1E
ZXB0aCk7CiAgICAgaWYgKG5vZGUtPmdldFRydWVCbG9jaygpKQogICAgIHsKICAgICAgICAgb3V0
IDw8ICJ0cnVlIGNhc2VcbiI7CkBAIC00OTUsNiArNTYzLDM1IEBAIGJvb2wgVE91dHB1dFRyYXZl
cnNlcjo6dmlzaXRTZWxlY3Rpb24oVmkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgVE91
dHB1dFRyYXZlcnNlcjo6dmlzaXRTd2l0Y2goVmlzaXQgdmlzaXQsIFRJbnRlcm1Td2l0Y2ggKm5v
ZGUpCit7CisgICAgVEluZm9TaW5rQmFzZSAmb3V0ID0gc2luazsKKworICAgIE91dHB1dFRyZWVU
ZXh0KG91dCwgbm9kZSwgbURlcHRoKTsKKworICAgIG91dCA8PCAiU3dpdGNoXG4iOworCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRDYXNlKFZpc2l0
IHZpc2l0LCBUSW50ZXJtQ2FzZSAqbm9kZSkKK3sKKyAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBz
aW5rOworCisgICAgT3V0cHV0VHJlZVRleHQob3V0LCBub2RlLCBtRGVwdGgpOworCisgICAgaWYg
KG5vZGUtPmdldENvbmRpdGlvbigpID09IG51bGxwdHIpCisgICAgeworICAgICAgICBvdXQgPDwg
IkRlZmF1bHRcbiI7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG91dCA8PCAiQ2Fz
ZVxuIjsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBUT3V0cHV0VHJhdmVy
c2VyOjp2aXNpdENvbnN0YW50VW5pb24oVEludGVybUNvbnN0YW50VW5pb24gKm5vZGUpCiB7CiAg
ICAgVEluZm9TaW5rQmFzZSAmb3V0ID0gc2luazsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3RpbWluZy9SZXN0cmljdEZyYWdtZW50U2hhZGVy
VGltaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci90aW1pbmcvUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZy5jcHAJ
KHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL3RpbWluZy9SZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nLmNwcAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDEzMCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgImNv
bXBpbGVyL3RyYW5zbGF0b3IvSW5mb1NpbmsuaCIKLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xh
dG9yL1BhcnNlQ29udGV4dC5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3Jh
cGgvRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRv
ci90aW1pbmcvUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZy5oIgotCi1SZXN0cmljdEZyYWdt
ZW50U2hhZGVyVGltaW5nOjpSZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nKFRJbmZvU2lua0Jh
c2UmIHNpbmspCi0gICAgOiBtU2luayhzaW5rKQotICAgICwgbU51bUVycm9ycygwKQotewotICAg
IC8vIFNhbXBsaW5nIG9wcyBmb3VuZCBvbmx5IGluIGZyYWdtZW50IHNoYWRlcnMuCi0gICAgbVNh
bXBsaW5nT3BzLmluc2VydCgidGV4dHVyZTJEKHMyMTt2ZjI7ZjE7Iik7Ci0gICAgbVNhbXBsaW5n
T3BzLmluc2VydCgidGV4dHVyZTJEUHJvaihzMjE7dmYzO2YxOyIpOwotICAgIG1TYW1wbGluZ09w
cy5pbnNlcnQoInRleHR1cmUyRFByb2ooczIxO3ZmNDtmMTsiKTsKLSAgICBtU2FtcGxpbmdPcHMu
aW5zZXJ0KCJ0ZXh0dXJlQ3ViZShzQzE7dmYzO2YxOyIpOwotICAgIC8vIFNhbXBsaW5nIG9wcyBm
b3VuZCBpbiBib3RoIHZlcnRleCBhbmQgZnJhZ21lbnQgc2hhZGVycy4KLSAgICBtU2FtcGxpbmdP
cHMuaW5zZXJ0KCJ0ZXh0dXJlMkQoczIxO3ZmMjsiKTsKLSAgICBtU2FtcGxpbmdPcHMuaW5zZXJ0
KCJ0ZXh0dXJlMkRQcm9qKHMyMTt2ZjM7Iik7Ci0gICAgbVNhbXBsaW5nT3BzLmluc2VydCgidGV4
dHVyZTJEUHJvaihzMjE7dmY0OyIpOwotICAgIG1TYW1wbGluZ09wcy5pbnNlcnQoInRleHR1cmVD
dWJlKHNDMTt2ZjM7Iik7Ci0gICAgLy8gU2FtcGxpbmcgb3BzIHByb3ZpZGVkIGJ5IE9FU19FR0xf
aW1hZ2VfZXh0ZXJuYWwuCi0gICAgbVNhbXBsaW5nT3BzLmluc2VydCgidGV4dHVyZTJEKDE7dmYy
OyIpOwotICAgIG1TYW1wbGluZ09wcy5pbnNlcnQoInRleHR1cmUyRFByb2ooMTt2ZjM7Iik7Ci0g
ICAgbVNhbXBsaW5nT3BzLmluc2VydCgidGV4dHVyZTJEUHJvaigxO3ZmNDsiKTsKLSAgICAvLyBT
YW1wbGluZyBvcHMgcHJvdmlkZWQgYnkgQVJCX3RleHR1cmVfcmVjdGFuZ2xlLgotICAgIG1TYW1w
bGluZ09wcy5pbnNlcnQoInRleHR1cmUyRFJlY3QoMTt2ZjI7Iik7Ci0gICAgbVNhbXBsaW5nT3Bz
Lmluc2VydCgidGV4dHVyZTJEUmVjdFByb2ooMTt2ZjM7Iik7Ci0gICAgbVNhbXBsaW5nT3BzLmlu
c2VydCgidGV4dHVyZTJEUmVjdFByb2ooMTt2ZjQ7Iik7Ci0gICAgLy8gU2FtcGxpbmcgb3BzIHBy
b3ZpZGVkIGJ5IEVYVF9zaGFkZXJfdGV4dHVyZV9sb2QuCi0gICAgbVNhbXBsaW5nT3BzLmluc2Vy
dCgidGV4dHVyZTJETG9kRVhUKDE7dmYyO2YxOyIpOwotICAgIG1TYW1wbGluZ09wcy5pbnNlcnQo
InRleHR1cmUyRFByb2pMb2RFWFQoMTt2ZjM7ZjE7Iik7Ci0gICAgbVNhbXBsaW5nT3BzLmluc2Vy
dCgidGV4dHVyZTJEUHJvakxvZEVYVCgxO3ZmNDtmMTsiKTsKLSAgICBtU2FtcGxpbmdPcHMuaW5z
ZXJ0KCJ0ZXh0dXJlQ3ViZUxvZEVYVCgxO3ZmNDtmMTsiKTsKLSAgICBtU2FtcGxpbmdPcHMuaW5z
ZXJ0KCJ0ZXh0dXJlMkRHcmFkRVhUKDE7dmYyO3ZmMjt2ZjI7Iik7Ci0gICAgbVNhbXBsaW5nT3Bz
Lmluc2VydCgidGV4dHVyZTJEUHJvakdyYWRFWFQoMTt2ZjM7dmYyO3ZmMjsiKTsKLSAgICBtU2Ft
cGxpbmdPcHMuaW5zZXJ0KCJ0ZXh0dXJlMkRQcm9qR3JhZEVYVCgxO3ZmNDt2ZjI7dmYyOyIpOwot
ICAgIG1TYW1wbGluZ09wcy5pbnNlcnQoInRleHR1cmVDdWJlR3JhZEVYVCgxO3ZmMzt2ZjM7dmYz
OyIpOwotfQotCi0vLyBGSVhNRShtdnVqb3ZpYyk6IFdlIGRvIG5vdCBrbm93IGlmIHRoZSBleGVj
dXRpb24gdGltZSBvZiBidWlsdC1pbiBvcGVyYXRpb25zIGxpa2Ugc2luLCBwb3csIGV0Yy4KLS8v
IGNhbiB2YXJ5IGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiB0aGUgaW5wdXQgYXJndW1lbnRzLiBJZiBz
bywgd2Ugc2hvdWxkIHJlc3RyaWN0IHRob3NlIGFzIHdlbGwuCi12b2lkIFJlc3RyaWN0RnJhZ21l
bnRTaGFkZXJUaW1pbmc6OmVuZm9yY2VSZXN0cmljdGlvbnMoY29uc3QgVERlcGVuZGVuY3lHcmFw
aCYgZ3JhcGgpCi17Ci0gICAgbU51bUVycm9ycyA9IDA7Ci0KLSAgICAvLyBGSVhNRShtdnVqb3Zp
Yyk6IFRoZSBkZXBlbmRlbmN5IGdyYXBoIGRvZXMgbm90IHN1cHBvcnQgdXNlciBkZWZpbmVkIGZ1
bmN0aW9uIGNhbGxzIHJpZ2h0IG5vdywKLSAgICAvLyBzbyB3ZSBnZW5lcmF0ZSBlcnJvcnMgZm9y
IHRoZW0uCi0gICAgdmFsaWRhdGVVc2VyRGVmaW5lZEZ1bmN0aW9uQ2FsbFVzYWdlKGdyYXBoKTsK
LQotICAgIC8vIFN0YXJ0aW5nIGZyb20gZWFjaCBzYW1wbGVyLCB0cmF2ZXJzZSB0aGUgZGVwZW5k
ZW5jeSBncmFwaCBhbmQgZ2VuZXJhdGUgYW4gZXJyb3IgZWFjaCB0aW1lIHdlCi0gICAgLy8gaGl0
IGEgbm9kZSB3aGVyZSBzYW1wbGVyIGRlcGVuZGVudCB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkLgot
ICAgIGZvciAoYXV0byBzYW1wbGVyU3ltYm9sIDogZ3JhcGguc2FtcGxlclN5bWJvbHMoKSkKLSAg
ICB7Ci0gICAgICAgIGNsZWFyVmlzaXRlZCgpOwotICAgICAgICBzYW1wbGVyU3ltYm9sLT50cmF2
ZXJzZSh0aGlzKTsKLSAgICB9Ci19Ci0KLXZvaWQgUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWlu
Zzo6dmFsaWRhdGVVc2VyRGVmaW5lZEZ1bmN0aW9uQ2FsbFVzYWdlKGNvbnN0IFREZXBlbmRlbmN5
R3JhcGgmIGdyYXBoKQotewotICAgIGZvciAoY29uc3QgYXV0byogZnVuY3Rpb25DYWxsIDogZ3Jh
cGgudXNlckRlZmluZWRGdW5jdGlvbkNhbGxzKCkpCi0gICAgewotICAgICAgICBiZWdpbkVycm9y
KGZ1bmN0aW9uQ2FsbC0+Z2V0SW50ZXJtRnVuY3Rpb25DYWxsKCkpOwotICAgICAgICBtU2luayA8
PCAiQSBjYWxsIHRvIGEgdXNlciBkZWZpbmVkIGZ1bmN0aW9uIGlzIG5vdCBwZXJtaXR0ZWQuXG4i
OwotICAgIH0KLX0KLQotdm9pZCBSZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nOjpiZWdpbkVy
cm9yKGNvbnN0IFRJbnRlcm1Ob2RlKiBub2RlKQotewotICAgICsrbU51bUVycm9yczsKLSAgICBt
U2luay5wcmVmaXgoRVByZWZpeEVycm9yKTsKLSAgICBtU2luay5sb2NhdGlvbihub2RlLT5nZXRM
aW5lKCkpOwotfQotCi1ib29sIFJlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmc6OmlzU2FtcGxp
bmdPcChjb25zdCBUSW50ZXJtQWdncmVnYXRlKiBpbnRlcm1GdW5jdGlvbkNhbGwpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuICFpbnRlcm1GdW5jdGlvbkNhbGwtPmlzVXNlckRlZmluZWQoKSAmJgotICAg
ICAgICAgICBtU2FtcGxpbmdPcHMuZmluZChpbnRlcm1GdW5jdGlvbkNhbGwtPmdldE5hbWUoKSkg
IT0gbVNhbXBsaW5nT3BzLmVuZCgpOwotfQotCi12b2lkIFJlc3RyaWN0RnJhZ21lbnRTaGFkZXJU
aW1pbmc6OnZpc2l0QXJndW1lbnQoVEdyYXBoQXJndW1lbnQqIHBhcmFtZXRlcikKLXsKLSAgICAv
LyBUZXh0dXJlIGNhY2hlIGFjY2VzcyB0aW1lIG1pZ2h0IGxlYWsgc2Vuc2l0aXZlIGluZm9ybWF0
aW9uLgotICAgIC8vIFRodXMsIHdlIHJlc3RyaWN0IHNhbXBsZXIgZGVwZW5kZW50IHZhbHVlcyBm
cm9tIGFmZmVjdGluZyB0aGUgY29vcmRpbmF0ZSBvciBMT0QgYmlhcyBvZiBhCi0gICAgLy8gc2Ft
cGxpbmcgb3BlcmF0aW9uLgotICAgIGlmIChpc1NhbXBsaW5nT3AocGFyYW1ldGVyLT5nZXRJbnRl
cm1GdW5jdGlvbkNhbGwoKSkpIHsKLSAgICAgICAgc3dpdGNoIChwYXJhbWV0ZXItPmdldEFyZ3Vt
ZW50TnVtYmVyKCkpIHsKLSAgICAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgICAgICAvLyBT
ZWNvbmQgYXJndW1lbnQgKGNvb3JkKQotICAgICAgICAgICAgICAgIGJlZ2luRXJyb3IocGFyYW1l
dGVyLT5nZXRJbnRlcm1GdW5jdGlvbkNhbGwoKSk7Ci0gICAgICAgICAgICAgICAgbVNpbmsgPDwg
IkFuIGV4cHJlc3Npb24gZGVwZW5kZW50IG9uIGEgc2FtcGxlciBpcyBub3QgcGVybWl0dGVkIHRv
IGJlIHRoZSIKLSAgICAgICAgICAgICAgICAgICAgICA8PCAiIGNvb3JkaW5hdGUgYXJndW1lbnQg
b2YgYSBzYW1wbGluZyBvcGVyYXRpb24uXG4iOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgICAgIC8vIFRoaXJkIGFyZ3VtZW50IChiaWFz
KQotICAgICAgICAgICAgICAgIGJlZ2luRXJyb3IocGFyYW1ldGVyLT5nZXRJbnRlcm1GdW5jdGlv
bkNhbGwoKSk7Ci0gICAgICAgICAgICAgICAgbVNpbmsgPDwgIkFuIGV4cHJlc3Npb24gZGVwZW5k
ZW50IG9uIGEgc2FtcGxlciBpcyBub3QgcGVybWl0dGVkIHRvIGJlIHRoZSIKLSAgICAgICAgICAg
ICAgICAgICAgICA8PCAiIGJpYXMgYXJndW1lbnQgb2YgYSBzYW1wbGluZyBvcGVyYXRpb24uXG4i
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgICAgICAvLyBGaXJzdCBhcmd1bWVudCAoc2FtcGxlcikKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBSZXN0cmljdEZyYWdtZW50U2hhZGVyVGlt
aW5nOjp2aXNpdFNlbGVjdGlvbihUR3JhcGhTZWxlY3Rpb24qIHNlbGVjdGlvbikKLXsKLSAgICBi
ZWdpbkVycm9yKHNlbGVjdGlvbi0+Z2V0SW50ZXJtU2VsZWN0aW9uKCkpOwotICAgIG1TaW5rIDw8
ICJBbiBleHByZXNzaW9uIGRlcGVuZGVudCBvbiBhIHNhbXBsZXIgaXMgbm90IHBlcm1pdHRlZCBp
biBhIGNvbmRpdGlvbmFsIHN0YXRlbWVudC5cbiI7Ci19Ci0KLXZvaWQgUmVzdHJpY3RGcmFnbWVu
dFNoYWRlclRpbWluZzo6dmlzaXRMb29wKFRHcmFwaExvb3AqIGxvb3ApCi17Ci0gICAgYmVnaW5F
cnJvcihsb29wLT5nZXRJbnRlcm1Mb29wKCkpOwotICAgIG1TaW5rIDw8ICJBbiBleHByZXNzaW9u
IGRlcGVuZGVudCBvbiBhIHNhbXBsZXIgaXMgbm90IHBlcm1pdHRlZCBpbiBhIGxvb3AgY29uZGl0
aW9uLlxuIjsKLX0KLQotdm9pZCBSZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nOjp2aXNpdExv
Z2ljYWxPcChUR3JhcGhMb2dpY2FsT3AqIGxvZ2ljYWxPcCkKLXsKLSAgICBiZWdpbkVycm9yKGxv
Z2ljYWxPcC0+Z2V0SW50ZXJtTG9naWNhbE9wKCkpOwotICAgIG1TaW5rIDw8ICJBbiBleHByZXNz
aW9uIGRlcGVuZGVudCBvbiBhIHNhbXBsZXIgaXMgbm90IHBlcm1pdHRlZCBvbiB0aGUgbGVmdCBo
YW5kIHNpZGUgb2YgYSBsb2dpY2FsICIKLSAgICAgICAgICA8PCBsb2dpY2FsT3AtPmdldE9wU3Ry
aW5nKCkKLSAgICAgICAgICA8PCAiIG9wZXJhdG9yLlxuIjsKLX0KClByb3BlcnR5IGNoYW5nZXMg
b246IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3RpbWlu
Zy9SZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nLmNwcApfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2
bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
cHJvcGVydHkKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL3RpbWluZy9SZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdGltaW5n
L1Jlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmcuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdGltaW5nL1Jlc3Ry
aWN0RnJhZ21lbnRTaGFkZXJUaW1pbmcuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDM5ICswLDAgQEAK
LS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCi0vLwotCi0jaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFUT1JfVElNSU5HX1JFU1RS
SUNURlJBR01FTlRTSEFERVJUSU1JTkdfSF8KLSNkZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9U
SU1JTkdfUkVTVFJJQ1RGUkFHTUVOVFNIQURFUlRJTUlOR19IXwotCi0jaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRv
ci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGguaCIKLQotY2xhc3MgVEluZm9TaW5rQmFzZTsKLQot
Y2xhc3MgUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZyA6IFREZXBlbmRlbmN5R3JhcGhUcmF2
ZXJzZXIKLXsKLSAgcHVibGljOgotICAgIFJlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmcoVElu
Zm9TaW5rQmFzZSAmc2luayk7Ci0gICAgdm9pZCBlbmZvcmNlUmVzdHJpY3Rpb25zKGNvbnN0IFRE
ZXBlbmRlbmN5R3JhcGggJmdyYXBoKTsKLSAgICBpbnQgbnVtRXJyb3JzKCkgY29uc3QgeyByZXR1
cm4gbU51bUVycm9yczsgfQotCi0gICAgdm9pZCB2aXNpdEFyZ3VtZW50KFRHcmFwaEFyZ3VtZW50
ICpwYXJhbWV0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXRTZWxlY3Rpb24oVEdyYXBoU2Vs
ZWN0aW9uICpzZWxlY3Rpb24pIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXRMb29wKFRHcmFwaExv
b3AgKmxvb3ApIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXRMb2dpY2FsT3AoVEdyYXBoTG9naWNh
bE9wICpsb2dpY2FsT3ApIG92ZXJyaWRlOwotCi0gIHByaXZhdGU6Ci0gICAgdm9pZCBiZWdpbkVy
cm9yKGNvbnN0IFRJbnRlcm1Ob2RlICpub2RlKTsKLSAgICB2b2lkIHZhbGlkYXRlVXNlckRlZmlu
ZWRGdW5jdGlvbkNhbGxVc2FnZShjb25zdCBURGVwZW5kZW5jeUdyYXBoICZncmFwaCk7Ci0gICAg
Ym9vbCBpc1NhbXBsaW5nT3AoY29uc3QgVEludGVybUFnZ3JlZ2F0ZSAqaW50ZXJtRnVuY3Rpb25D
YWxsKSBjb25zdDsKLQotICAgIFRJbmZvU2lua0Jhc2UgJm1TaW5rOwotICAgIGludCBtTnVtRXJy
b3JzOwotCi0gICAgdHlwZWRlZiBzdGQ6OnNldDxUU3RyaW5nPiBTdHJpbmdTZXQ7Ci0gICAgU3Ry
aW5nU2V0IG1TYW1wbGluZ09wczsKLX07Ci0KLSNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRP
Ul9USU1JTkdfUkVTVFJJQ1RGUkFHTUVOVFNIQURFUlRJTUlOR19IXwoKUHJvcGVydHkgY2hhbmdl
cyBvbjogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdGlt
aW5nL1Jlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmcuaApfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2
bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
cHJvcGVydHkKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL3RpbWluZy9SZXN0cmljdFZlcnRleFNoYWRlclRpbWluZy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdGltaW5n
L1Jlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdGltaW5nL1Jlc3Ry
aWN0VmVydGV4U2hhZGVyVGltaW5nLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDE3ICswLDAgQEAK
LS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci90aW1pbmcvUmVz
dHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuaCIKLQotdm9pZCBSZXN0cmljdFZlcnRleFNoYWRlclRp
bWluZzo6dmlzaXRTeW1ib2woVEludGVybVN5bWJvbCogbm9kZSkKLXsKLSAgICBpZiAoSXNTYW1w
bGVyKG5vZGUtPmdldEJhc2ljVHlwZSgpKSkgewotICAgICAgICArK21OdW1FcnJvcnM7Ci0gICAg
ICAgIG1TaW5rLm1lc3NhZ2UoRVByZWZpeEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIG5v
ZGUtPmdldExpbmUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAiU2FtcGxlcnMgYXJlIG5vdCBw
ZXJtaXR0ZWQgaW4gdmVydGV4IHNoYWRlcnMuXG4iKTsKLSAgICB9Ci19CgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci90
aW1pbmcvUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuY3BwCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDog
c3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvdGltaW5nL1Jlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdGltaW5n
L1Jlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3RpbWluZy9SZXN0cmlj
dFZlcnRleFNoYWRlclRpbWluZy5oCShub25leGlzdGVudCkKQEAgLTEsMzIgKzAsMCBAQAotLy8K
LS8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KLS8vCi0KLSNpZm5kZWYgQ09NUElMRVJfVFJBTlNMQVRPUl9USU1JTkdfUkVTVFJJQ1RW
RVJURVhTSEFERVJUSU1JTkdfSF8KLSNkZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9USU1JTkdf
UkVTVFJJQ1RWRVJURVhTSEFERVJUSU1JTkdfSF8KLQotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5z
bGF0b3IvSW50ZXJtTm9kZS5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW5mb1Np
bmsuaCIKLQotY2xhc3MgVEluZm9TaW5rQmFzZTsKLQotY2xhc3MgUmVzdHJpY3RWZXJ0ZXhTaGFk
ZXJUaW1pbmcgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlciB7Ci1wdWJsaWM6Ci0gICAgUmVzdHJp
Y3RWZXJ0ZXhTaGFkZXJUaW1pbmcoVEluZm9TaW5rQmFzZSYgc2luaykKLSAgICAgICAgOiBUSW50
ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSkKLSAgICAgICAgLCBtU2luayhzaW5rKQot
ICAgICAgICAsIG1OdW1FcnJvcnMoMCkge30KLQotICAgIHZvaWQgZW5mb3JjZVJlc3RyaWN0aW9u
cyhUSW50ZXJtTm9kZSogcm9vdCkgeyByb290LT50cmF2ZXJzZSh0aGlzKTsgfQotICAgIGludCBu
dW1FcnJvcnMoKSB7IHJldHVybiBtTnVtRXJyb3JzOyB9Ci0KLSAgICB2b2lkIHZpc2l0U3ltYm9s
KFRJbnRlcm1TeW1ib2wgKikgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6Ci0gICAgVEluZm9TaW5rQmFz
ZSYgbVNpbms7Ci0gICAgaW50IG1OdW1FcnJvcnM7Ci19OwotCi0jZW5kaWYgIC8vIENPTVBJTEVS
X1RSQU5TTEFUT1JfVElNSU5HX1JFU1RSSUNUVkVSVEVYU0hBREVSVElNSU5HX0hfCgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci90aW1pbmcvUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuaApfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0
ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL3V0aWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3V0aWwuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci91dGlsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjc4LDYgKzI3OCwyNDQgQEAgSW50ZXJwb2xhdGlvblR5cGUg
R2V0SW50ZXJwb2xhdGlvblR5cGUoVAogICAgIH0KIH0KIAorVFR5cGUgR2V0SW50ZXJmYWNlQmxv
Y2tUeXBlKGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9jayAmYmxvY2spCit7CisgICAgVFR5cGUgdHlw
ZTsKKyAgICBURmllbGRMaXN0ICpmaWVsZHMgPSBuZXcgVEZpZWxkTGlzdDsKKyAgICBUU291cmNl
TG9jIGxvYzsKKyAgICBmb3IgKGNvbnN0IGF1dG8gJmZpZWxkIDogYmxvY2suZmllbGRzKQorICAg
IHsKKyAgICAgICAgVFR5cGUgKmZpZWxkVHlwZSA9IG5ldyBUVHlwZShHZXRTaGFkZXJWYXJpYWJs
ZVR5cGUoZmllbGQpKTsKKyAgICAgICAgZmllbGRzLT5wdXNoX2JhY2sobmV3IFRGaWVsZChmaWVs
ZFR5cGUsIG5ldyBUU3RyaW5nKGZpZWxkLm5hbWUuY19zdHIoKSksIGxvYykpOworICAgIH0KKwor
ICAgIFRJbnRlcmZhY2VCbG9jayAqaW50ZXJmYWNlQmxvY2sgPSBuZXcgVEludGVyZmFjZUJsb2Nr
KAorICAgICAgICBuZXcgVFN0cmluZyhibG9jay5uYW1lLmNfc3RyKCkpLCBmaWVsZHMsIG5ldyBU
U3RyaW5nKGJsb2NrLmluc3RhbmNlTmFtZS5jX3N0cigpKSwKKyAgICAgICAgYmxvY2suYXJyYXlT
aXplLCBUTGF5b3V0UXVhbGlmaWVyOjpjcmVhdGUoKSk7CisKKyAgICB0eXBlLnNldEJhc2ljVHlw
ZShFYnRJbnRlcmZhY2VCbG9jayk7CisgICAgdHlwZS5zZXRJbnRlcmZhY2VCbG9jayhpbnRlcmZh
Y2VCbG9jayk7CisgICAgdHlwZS5zZXRBcnJheVNpemUoYmxvY2suYXJyYXlTaXplKTsKKyAgICBy
ZXR1cm4gdHlwZTsKK30KKworVFR5cGUgR2V0U2hhZGVyVmFyaWFibGVCYXNpY1R5cGUoY29uc3Qg
c2g6OlNoYWRlclZhcmlhYmxlICZ2YXIpCit7CisgICAgc3dpdGNoICh2YXIudHlwZSkKKyAgICB7
CisgICAgICAgIGNhc2UgR0xfQk9PTDoKKyAgICAgICAgICAgIHJldHVybiBUVHlwZShFYnRCb29s
KTsKKyAgICAgICAgY2FzZSBHTF9CT09MX1ZFQzI6CisgICAgICAgICAgICByZXR1cm4gVFR5cGUo
RWJ0Qm9vbCwgMik7CisgICAgICAgIGNhc2UgR0xfQk9PTF9WRUMzOgorICAgICAgICAgICAgcmV0
dXJuIFRUeXBlKEVidEJvb2wsIDMpOworICAgICAgICBjYXNlIEdMX0JPT0xfVkVDNDoKKyAgICAg
ICAgICAgIHJldHVybiBUVHlwZShFYnRCb29sLCA0KTsKKyAgICAgICAgY2FzZSBHTF9GTE9BVDoK
KyAgICAgICAgICAgIHJldHVybiBUVHlwZShFYnRGbG9hdCk7CisgICAgICAgIGNhc2UgR0xfRkxP
QVRfVkVDMjoKKyAgICAgICAgICAgIHJldHVybiBUVHlwZShFYnRGbG9hdCwgMik7CisgICAgICAg
IGNhc2UgR0xfRkxPQVRfVkVDMzoKKyAgICAgICAgICAgIHJldHVybiBUVHlwZShFYnRGbG9hdCwg
Myk7CisgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDNDoKKyAgICAgICAgICAgIHJldHVybiBUVHlw
ZShFYnRGbG9hdCwgNCk7CisgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMjoKKyAgICAgICAgICAg
IHJldHVybiBUVHlwZShFYnRGbG9hdCwgMiwgMik7CisgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFU
MzoKKyAgICAgICAgICAgIHJldHVybiBUVHlwZShFYnRGbG9hdCwgMywgMyk7CisgICAgICAgIGNh
c2UgR0xfRkxPQVRfTUFUNDoKKyAgICAgICAgICAgIHJldHVybiBUVHlwZShFYnRGbG9hdCwgNCwg
NCk7CisgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMngzOgorICAgICAgICAgICAgcmV0dXJuIFRU
eXBlKEVidEZsb2F0LCAyLCAzKTsKKyAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQyeDQ6CisgICAg
ICAgICAgICByZXR1cm4gVFR5cGUoRWJ0RmxvYXQsIDIsIDQpOworICAgICAgICBjYXNlIEdMX0ZM
T0FUX01BVDN4MjoKKyAgICAgICAgICAgIHJldHVybiBUVHlwZShFYnRGbG9hdCwgMywgMik7Cisg
ICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUM3g0OgorICAgICAgICAgICAgcmV0dXJuIFRUeXBlKEVi
dEZsb2F0LCAzLCA0KTsKKyAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQ0eDI6CisgICAgICAgICAg
ICByZXR1cm4gVFR5cGUoRWJ0RmxvYXQsIDQsIDIpOworICAgICAgICBjYXNlIEdMX0ZMT0FUX01B
VDR4MzoKKyAgICAgICAgICAgIHJldHVybiBUVHlwZShFYnRGbG9hdCwgNCwgMyk7CisgICAgICAg
IGNhc2UgR0xfSU5UOgorICAgICAgICAgICAgcmV0dXJuIFRUeXBlKEVidEludCk7CisgICAgICAg
IGNhc2UgR0xfSU5UX1ZFQzI6CisgICAgICAgICAgICByZXR1cm4gVFR5cGUoRWJ0SW50LCAyKTsK
KyAgICAgICAgY2FzZSBHTF9JTlRfVkVDMzoKKyAgICAgICAgICAgIHJldHVybiBUVHlwZShFYnRJ
bnQsIDMpOworICAgICAgICBjYXNlIEdMX0lOVF9WRUM0OgorICAgICAgICAgICAgcmV0dXJuIFRU
eXBlKEVidEludCwgNCk7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgorICAgICAgICAg
ICAgcmV0dXJuIFRUeXBlKEVidFVJbnQpOworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF9W
RUMyOgorICAgICAgICAgICAgcmV0dXJuIFRUeXBlKEVidFVJbnQsIDIpOworICAgICAgICBjYXNl
IEdMX1VOU0lHTkVEX0lOVF9WRUMzOgorICAgICAgICAgICAgcmV0dXJuIFRUeXBlKEVidFVJbnQs
IDMpOworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF9WRUM0OgorICAgICAgICAgICAgcmV0
dXJuIFRUeXBlKEVidFVJbnQsIDQpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5S
RUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBUVHlwZSgpOworICAgIH0KK30KKworVFR5
cGUgR2V0U2hhZGVyVmFyaWFibGVUeXBlKGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmdmFyKQor
eworICAgIFRUeXBlIHR5cGU7CisgICAgaWYgKHZhci5pc1N0cnVjdCgpKQorICAgIHsKKyAgICAg
ICAgVEZpZWxkTGlzdCAqZmllbGRzID0gbmV3IFRGaWVsZExpc3Q7CisgICAgICAgIFRTb3VyY2VM
b2MgbG9jOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8gJmZpZWxkIDogdmFyLmZpZWxkcykKKyAg
ICAgICAgeworICAgICAgICAgICAgVFR5cGUgKmZpZWxkVHlwZSA9IG5ldyBUVHlwZShHZXRTaGFk
ZXJWYXJpYWJsZVR5cGUoZmllbGQpKTsKKyAgICAgICAgICAgIGZpZWxkcy0+cHVzaF9iYWNrKG5l
dyBURmllbGQoZmllbGRUeXBlLCBuZXcgVFN0cmluZyhmaWVsZC5uYW1lLmNfc3RyKCkpLCBsb2Mp
KTsKKyAgICAgICAgfQorICAgICAgICBUU3RydWN0dXJlICpzdHJ1Y3R1cmUgPSBuZXcgVFN0cnVj
dHVyZShuZXcgVFN0cmluZyh2YXIuc3RydWN0TmFtZS5jX3N0cigpKSwgZmllbGRzKTsKKworICAg
ICAgICB0eXBlLnNldEJhc2ljVHlwZShFYnRTdHJ1Y3QpOworICAgICAgICB0eXBlLnNldFN0cnVj
dChzdHJ1Y3R1cmUpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICB0eXBlID0gR2V0
U2hhZGVyVmFyaWFibGVCYXNpY1R5cGUodmFyKTsKKyAgICB9CisKKyAgICBpZiAodmFyLmlzQXJy
YXkoKSkKKyAgICB7CisgICAgICAgIHR5cGUuc2V0QXJyYXlTaXplKHZhci5lbGVtZW50Q291bnQo
KSk7CisgICAgfQorICAgIHJldHVybiB0eXBlOworfQorCitUT3BlcmF0b3IgVHlwZVRvQ29uc3Ry
dWN0b3JPcGVyYXRvcihjb25zdCBUVHlwZSAmdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUuZ2V0
QmFzaWNUeXBlKCkpCisgICAgeworICAgICAgICBjYXNlIEVidEZsb2F0OgorICAgICAgICAgICAg
aWYgKHR5cGUuaXNNYXRyaXgoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzd2l0
Y2ggKHR5cGUuZ2V0Q29scygpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSAyOgorICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlLmdldFJvd3Mo
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFT3BDb25z
dHJ1Y3RNYXQyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVPcENvbnN0cnVjdE1hdDJ4MzsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBFT3BDb25zdHJ1Y3RNYXQyeDQ7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgICAgICAgICBz
d2l0Y2ggKHR5cGUuZ2V0Um93cygpKQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEVPcENvbnN0cnVjdE1hdDN4MjsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFT3BD
b25zdHJ1Y3RNYXQzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVPcENvbnN0cnVjdE1hdDN4NDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZS5nZXRSb3dzKCkpCisgICAgICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU9wQ29uc3RydWN0TWF0NHgyOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEVPcENvbnN0cnVjdE1hdDR4MzsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBF
T3BDb25zdHJ1Y3RNYXQ0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHN3aXRjaCAodHlwZS5nZXROb21pbmFsU2l6ZSgpKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEVPcENvbnN0cnVjdEZsb2F0OworICAgICAgICAgICAgICAgICAgICBjYXNlIDI6Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU9wQ29uc3RydWN0VmVjMjsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVPcENv
bnN0cnVjdFZlYzM7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBFT3BDb25zdHJ1Y3RWZWM0OworICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBFYnRJ
bnQ6CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUuZ2V0Tm9taW5hbFNpemUoKSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBFT3BDb25zdHJ1Y3RJbnQ7CisgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gRU9wQ29uc3RydWN0SVZlYzI7CisgICAgICAgICAgICAgICAgY2FzZSAz
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU9wQ29uc3RydWN0SVZlYzM7CisgICAgICAg
ICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU9wQ29uc3RydWN0
SVZlYzQ7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEVi
dFVJbnQ6CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUuZ2V0Tm9taW5hbFNpemUoKSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBFT3BDb25zdHJ1Y3RVSW50OworICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEVPcENvbnN0cnVjdFVWZWMyOworICAgICAgICAgICAgICAgIGNh
c2UgMzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVPcENvbnN0cnVjdFVWZWMzOworICAg
ICAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVPcENvbnN0
cnVjdFVWZWM0OworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2Fz
ZSBFYnRCb29sOgorICAgICAgICAgICAgc3dpdGNoICh0eXBlLmdldE5vbWluYWxTaXplKCkpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gRU9wQ29uc3RydWN0Qm9vbDsKKyAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBFT3BDb25zdHJ1Y3RCVmVjMjsKKyAgICAgICAgICAgICAg
ICBjYXNlIDM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBFT3BDb25zdHJ1Y3RCVmVjMzsK
KyAgICAgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBFT3BD
b25zdHJ1Y3RCVmVjNDsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGNhc2UgRWJ0U3RydWN0OgorICAgICAgICAgICAgcmV0dXJuIEVPcENvbnN0cnVjdFN0cnVjdDsK
KworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0
dXJuIEVPcE51bGw7Cit9CisKIEdldFZhcmlhYmxlVHJhdmVyc2VyOjpHZXRWYXJpYWJsZVRyYXZl
cnNlcihjb25zdCBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlKQogICAgIDogbVN5bWJvbFRhYmxl
KHN5bWJvbFRhYmxlKQogewpAQCAtMzI0LDcgKzU2Miw3IEBAIHZvaWQgR2V0VmFyaWFibGVUcmF2
ZXJzZXI6OnRyYXZlcnNlKGNvbnMKIAogICAgIFZhclQgdmFyaWFibGU7CiAgICAgdmFyaWFibGUu
bmFtZSA9IG5hbWUuY19zdHIoKTsKLSAgICB2YXJpYWJsZS5hcnJheVNpemUgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBpbnQ+KHR5cGUuZ2V0QXJyYXlTaXplKCkpOworICAgIHZhcmlhYmxlLmFycmF5
U2l6ZSA9IHR5cGUuZ2V0QXJyYXlTaXplKCk7CiAKICAgICBpZiAoIXN0cnVjdHVyZSkKICAgICB7
CkBAIC0zNTcsNCArNTk1LDUyIEBAIHRlbXBsYXRlIHZvaWQgR2V0VmFyaWFibGVUcmF2ZXJzZXI6
OnRyYXYKIHRlbXBsYXRlIHZvaWQgR2V0VmFyaWFibGVUcmF2ZXJzZXI6OnRyYXZlcnNlKGNvbnN0
IFRUeXBlICYsIGNvbnN0IFRTdHJpbmcgJiwgc3RkOjp2ZWN0b3I8VW5pZm9ybT4gKik7CiB0ZW1w
bGF0ZSB2b2lkIEdldFZhcmlhYmxlVHJhdmVyc2VyOjp0cmF2ZXJzZShjb25zdCBUVHlwZSAmLCBj
b25zdCBUU3RyaW5nICYsIHN0ZDo6dmVjdG9yPFZhcnlpbmc+ICopOwogCisvLyBHTFNMIEVTIDEu
MC4xNyA0LjYuMSBUaGUgSW52YXJpYW50IFF1YWxpZmllcgorYm9vbCBDYW5CZUludmFyaWFudEVT
U0wxKFRRdWFsaWZpZXIgcXVhbGlmaWVyKQoreworICAgIHJldHVybiBJc1ZhcnlpbmdJbihxdWFs
aWZpZXIpIHx8IElzVmFyeWluZ091dChxdWFsaWZpZXIpIHx8CisgICAgICAgICAgIElzQnVpbHRp
bk91dHB1dFZhcmlhYmxlKHF1YWxpZmllcikgfHwKKyAgICAgICAgICAgKElzQnVpbHRpbkZyYWdt
ZW50SW5wdXRWYXJpYWJsZShxdWFsaWZpZXIpICYmIHF1YWxpZmllciAhPSBFdnFGcm9udEZhY2lu
Zyk7Cit9CisKKy8vIEdMU0wgRVMgMy4wMCBSZXZpc2lvbiA2LCA0LjYuMSBUaGUgSW52YXJpYW50
IFF1YWxpZmllcgorLy8gR0xTTCBFUyAzLjEwIFJldmlzaW9uIDQsIDQuOC4xIFRoZSBJbnZhcmlh
bnQgUXVhbGlmaWVyCitib29sIENhbkJlSW52YXJpYW50RVNTTDNPckdyZWF0ZXIoVFF1YWxpZmll
ciBxdWFsaWZpZXIpCit7CisgICAgcmV0dXJuIElzVmFyeWluZ091dChxdWFsaWZpZXIpIHx8IHF1
YWxpZmllciA9PSBFdnFGcmFnbWVudE91dCB8fAorICAgICAgICAgICBJc0J1aWx0aW5PdXRwdXRW
YXJpYWJsZShxdWFsaWZpZXIpOworfQorCitib29sIElzQnVpbHRpbk91dHB1dFZhcmlhYmxlKFRR
dWFsaWZpZXIgcXVhbGlmaWVyKQoreworICAgIHN3aXRjaCAocXVhbGlmaWVyKQorICAgIHsKKyAg
ICAgICAgY2FzZSBFdnFQb3NpdGlvbjoKKyAgICAgICAgY2FzZSBFdnFQb2ludFNpemU6CisgICAg
ICAgIGNhc2UgRXZxRnJhZ0RlcHRoOgorICAgICAgICBjYXNlIEV2cUZyYWdEZXB0aEVYVDoKKyAg
ICAgICAgY2FzZSBFdnFGcmFnQ29sb3I6CisgICAgICAgIGNhc2UgRXZxU2Vjb25kYXJ5RnJhZ0Nv
bG9yRVhUOgorICAgICAgICBjYXNlIEV2cUZyYWdEYXRhOgorICAgICAgICBjYXNlIEV2cVNlY29u
ZGFyeUZyYWdEYXRhRVhUOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiti
b29sIElzQnVpbHRpbkZyYWdtZW50SW5wdXRWYXJpYWJsZShUUXVhbGlmaWVyIHF1YWxpZmllcikK
K3sKKyAgICBzd2l0Y2ggKHF1YWxpZmllcikKKyAgICB7CisgICAgICAgIGNhc2UgRXZxRnJhZ0Nv
b3JkOgorICAgICAgICBjYXNlIEV2cVBvaW50Q29vcmQ6CisgICAgICAgIGNhc2UgRXZxRnJvbnRG
YWNpbmc6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CiB9Cit9ICAvLyBuYW1lc3Bh
Y2Ugc2gKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL3V0aWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci91dGlsLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3V0aWwuaAkod29ya2luZyBjb3B5
KQpAQCAtMTIsNiArMTIsNyBAQAogI2luY2x1ZGUgImFuZ2xlX2dsLmgiCiAjaW5jbHVkZSA8R0xT
TEFORy9TaGFkZXJMYW5nLmg+CiAKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL09wZXJh
dG9yLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9UeXBlcy5oIgogCiAvLyBzdHJ0
b2ZfY2xhbXAgaXMgbGlrZSBzdHJ0b2YgYnV0CkBAIC0zNyw2ICszOCwxMiBAQCBib29sIElzVmFy
eWluZyhUUXVhbGlmaWVyIHF1YWxpZmllcik7CiBJbnRlcnBvbGF0aW9uVHlwZSBHZXRJbnRlcnBv
bGF0aW9uVHlwZShUUXVhbGlmaWVyIHF1YWxpZmllcik7CiBUU3RyaW5nIEFycmF5U3RyaW5nKGNv
bnN0IFRUeXBlICZ0eXBlKTsKIAorVFR5cGUgR2V0SW50ZXJmYWNlQmxvY2tUeXBlKGNvbnN0IHNo
OjpJbnRlcmZhY2VCbG9jayAmYmxvY2spOworVFR5cGUgR2V0U2hhZGVyVmFyaWFibGVCYXNpY1R5
cGUoY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZ2YXIpOworVFR5cGUgR2V0U2hhZGVyVmFyaWFi
bGVUeXBlKGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmdmFyKTsKKworVE9wZXJhdG9yIFR5cGVU
b0NvbnN0cnVjdG9yT3BlcmF0b3IoY29uc3QgVFR5cGUgJnR5cGUpOworCiBjbGFzcyBHZXRWYXJp
YWJsZVRyYXZlcnNlciA6IGFuZ2xlOjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6CkBAIC02MCw2
ICs2NywxMCBAQCBjbGFzcyBHZXRWYXJpYWJsZVRyYXZlcnNlciA6IGFuZ2xlOjpOb25DCiAgICAg
Y29uc3QgVFN5bWJvbFRhYmxlICZtU3ltYm9sVGFibGU7CiB9OwogCitib29sIElzQnVpbHRpbk91
dHB1dFZhcmlhYmxlKFRRdWFsaWZpZXIgcXVhbGlmaWVyKTsKK2Jvb2wgSXNCdWlsdGluRnJhZ21l
bnRJbnB1dFZhcmlhYmxlKFRRdWFsaWZpZXIgcXVhbGlmaWVyKTsKK2Jvb2wgQ2FuQmVJbnZhcmlh
bnRFU1NMMShUUXVhbGlmaWVyIHF1YWxpZmllcik7Citib29sIENhbkJlSW52YXJpYW50RVNTTDNP
ckdyZWF0ZXIoVFF1YWxpZmllciBxdWFsaWZpZXIpOwogfQogCiAjZW5kaWYgLy8gQ09NUElMRVJf
VFJBTlNMQVRPUl9VVElMX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGguY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2RlcGdy
YXBoL0RlcGVuZGVuY3lHcmFwaC5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lH
cmFwaC5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw5NSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0
IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQot
I2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoLmgi
Ci0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhC
dWlsZGVyLmgiCi0KLVREZXBlbmRlbmN5R3JhcGg6OlREZXBlbmRlbmN5R3JhcGgoVEludGVybU5v
ZGUqIGludGVybU5vZGUpCi17Ci0gICAgVERlcGVuZGVuY3lHcmFwaEJ1aWxkZXI6OmJ1aWxkKGlu
dGVybU5vZGUsIHRoaXMpOwotfQotCi1URGVwZW5kZW5jeUdyYXBoOjp+VERlcGVuZGVuY3lHcmFw
aCgpCi17Ci0gICAgZm9yIChUR3JhcGhOb2RlVmVjdG9yOjpjb25zdF9pdGVyYXRvciBpdGVyID0g
bUFsbE5vZGVzLmJlZ2luKCk7IGl0ZXIgIT0gbUFsbE5vZGVzLmVuZCgpOyArK2l0ZXIpCi0gICAg
ewotICAgICAgICBUR3JhcGhOb2RlKiBub2RlID0gKml0ZXI7Ci0gICAgICAgIGRlbGV0ZSBub2Rl
OwotICAgIH0KLX0KLQotVEdyYXBoQXJndW1lbnQqIFREZXBlbmRlbmN5R3JhcGg6OmNyZWF0ZUFy
Z3VtZW50KFRJbnRlcm1BZ2dyZWdhdGUqIGludGVybUZ1bmN0aW9uQ2FsbCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYXJndW1lbnROdW1iZXIp
Ci17Ci0gICAgVEdyYXBoQXJndW1lbnQqIGFyZ3VtZW50ID0gbmV3IFRHcmFwaEFyZ3VtZW50KGlu
dGVybUZ1bmN0aW9uQ2FsbCwgYXJndW1lbnROdW1iZXIpOwotICAgIG1BbGxOb2Rlcy5wdXNoX2Jh
Y2soYXJndW1lbnQpOwotICAgIHJldHVybiBhcmd1bWVudDsKLX0KLQotVEdyYXBoRnVuY3Rpb25D
YWxsKiBURGVwZW5kZW5jeUdyYXBoOjpjcmVhdGVGdW5jdGlvbkNhbGwoVEludGVybUFnZ3JlZ2F0
ZSogaW50ZXJtRnVuY3Rpb25DYWxsKQotewotICAgIFRHcmFwaEZ1bmN0aW9uQ2FsbCogZnVuY3Rp
b25DYWxsID0gbmV3IFRHcmFwaEZ1bmN0aW9uQ2FsbChpbnRlcm1GdW5jdGlvbkNhbGwpOwotICAg
IG1BbGxOb2Rlcy5wdXNoX2JhY2soZnVuY3Rpb25DYWxsKTsKLSAgICBpZiAoZnVuY3Rpb25DYWxs
LT5nZXRJbnRlcm1GdW5jdGlvbkNhbGwoKS0+aXNVc2VyRGVmaW5lZCgpKQotICAgICAgICBtVXNl
ckRlZmluZWRGdW5jdGlvbkNhbGxzLnB1c2hfYmFjayhmdW5jdGlvbkNhbGwpOwotICAgIHJldHVy
biBmdW5jdGlvbkNhbGw7Ci19Ci0KLVRHcmFwaFN5bWJvbCogVERlcGVuZGVuY3lHcmFwaDo6Z2V0
T3JDcmVhdGVTeW1ib2woVEludGVybVN5bWJvbCogaW50ZXJtU3ltYm9sKQotewotICAgIFRTeW1i
b2xJZE1hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1TeW1ib2xJZE1hcC5maW5kKGludGVybVN5
bWJvbC0+Z2V0SWQoKSk7Ci0KLSAgICBUR3JhcGhTeW1ib2wqIHN5bWJvbCA9IE5VTEw7Ci0KLSAg
ICBpZiAoaXRlciAhPSBtU3ltYm9sSWRNYXAuZW5kKCkpIHsKLSAgICAgICAgVFN5bWJvbElkUGFp
ciBwYWlyID0gKml0ZXI7Ci0gICAgICAgIHN5bWJvbCA9IHBhaXIuc2Vjb25kOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIHN5bWJvbCA9IG5ldyBUR3JhcGhTeW1ib2woaW50ZXJtU3ltYm9sKTsKLSAg
ICAgICAgbUFsbE5vZGVzLnB1c2hfYmFjayhzeW1ib2wpOwotCi0gICAgICAgIFRTeW1ib2xJZFBh
aXIgcGFpcihpbnRlcm1TeW1ib2wtPmdldElkKCksIHN5bWJvbCk7Ci0gICAgICAgIG1TeW1ib2xJ
ZE1hcC5pbnNlcnQocGFpcik7Ci0KLSAgICAgICAgLy8gV2Ugc2F2ZSBhbGwgc2FtcGxlciBzeW1i
b2xzIGluIGEgY29sbGVjdGlvbiwgc28gd2UgY2FuIHN0YXJ0IGdyYXBoIHRyYXZlcnNhbHMgZnJv
bSB0aGVtIHF1aWNrbHkuCi0gICAgICAgIGlmIChJc1NhbXBsZXIoaW50ZXJtU3ltYm9sLT5nZXRC
YXNpY1R5cGUoKSkpCi0gICAgICAgICAgICBtU2FtcGxlclN5bWJvbHMucHVzaF9iYWNrKHN5bWJv
bCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN5bWJvbDsKLX0KLQotVEdyYXBoU2VsZWN0aW9uKiBU
RGVwZW5kZW5jeUdyYXBoOjpjcmVhdGVTZWxlY3Rpb24oVEludGVybVNlbGVjdGlvbiogaW50ZXJt
U2VsZWN0aW9uKQotewotICAgIFRHcmFwaFNlbGVjdGlvbiogc2VsZWN0aW9uID0gbmV3IFRHcmFw
aFNlbGVjdGlvbihpbnRlcm1TZWxlY3Rpb24pOwotICAgIG1BbGxOb2Rlcy5wdXNoX2JhY2soc2Vs
ZWN0aW9uKTsKLSAgICByZXR1cm4gc2VsZWN0aW9uOwotfQotCi1UR3JhcGhMb29wKiBURGVwZW5k
ZW5jeUdyYXBoOjpjcmVhdGVMb29wKFRJbnRlcm1Mb29wKiBpbnRlcm1Mb29wKQotewotICAgIFRH
cmFwaExvb3AqIGxvb3AgPSBuZXcgVEdyYXBoTG9vcChpbnRlcm1Mb29wKTsKLSAgICBtQWxsTm9k
ZXMucHVzaF9iYWNrKGxvb3ApOwotICAgIHJldHVybiBsb29wOwotfQotCi1UR3JhcGhMb2dpY2Fs
T3AqIFREZXBlbmRlbmN5R3JhcGg6OmNyZWF0ZUxvZ2ljYWxPcChUSW50ZXJtQmluYXJ5KiBpbnRl
cm1Mb2dpY2FsT3ApCi17Ci0gICAgVEdyYXBoTG9naWNhbE9wKiBsb2dpY2FsT3AgPSBuZXcgVEdy
YXBoTG9naWNhbE9wKGludGVybUxvZ2ljYWxPcCk7Ci0gICAgbUFsbE5vZGVzLnB1c2hfYmFjayhs
b2dpY2FsT3ApOwotICAgIHJldHVybiBsb2dpY2FsT3A7Ci19Ci0KLWNvbnN0IGNoYXIqIFRHcmFw
aExvZ2ljYWxPcDo6Z2V0T3BTdHJpbmcoKSBjb25zdAotewotICAgIGNvbnN0IGNoYXIqIG9wU3Ry
aW5nID0gTlVMTDsKLSAgICBzd2l0Y2ggKGdldEludGVybUxvZ2ljYWxPcCgpLT5nZXRPcCgpKSB7
Ci0gICAgICAgIGNhc2UgRU9wTG9naWNhbEFuZDogb3BTdHJpbmcgPSAiYW5kIjsgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgRU9wTG9naWNhbE9yOiBvcFN0cmluZyA9ICJvciI7IGJyZWFrOwotICAgICAg
ICBkZWZhdWx0OiBvcFN0cmluZyA9ICJ1bmtub3duIjsgYnJlYWs7Ci0gICAgfQotICAgIHJldHVy
biBvcFN0cmluZzsKLX0KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaC5jcHAK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGguaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGguaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVw
ZW5kZW5jeUdyYXBoLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwxOTkgKzAsMCBAQAotLy8KLS8vIENv
cHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
LS8vCi0KLSNpZm5kZWYgQ09NUElMRVJfVFJBTlNMQVRPUl9ERVBHUkFQSF9ERVBFTkRFTkNZR1JB
UEhfSF8KLSNkZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9ERVBHUkFQSF9ERVBFTkRFTkNZR1JB
UEhfSF8KLQotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgotCi0j
aW5jbHVkZSA8c2V0PgotI2luY2x1ZGUgPHN0YWNrPgotCi1jbGFzcyBUR3JhcGhOb2RlOwotY2xh
c3MgVEdyYXBoUGFyZW50Tm9kZTsKLWNsYXNzIFRHcmFwaEFyZ3VtZW50OwotY2xhc3MgVEdyYXBo
RnVuY3Rpb25DYWxsOwotY2xhc3MgVEdyYXBoU3ltYm9sOwotY2xhc3MgVEdyYXBoU2VsZWN0aW9u
OwotY2xhc3MgVEdyYXBoTG9vcDsKLWNsYXNzIFRHcmFwaExvZ2ljYWxPcDsKLWNsYXNzIFREZXBl
bmRlbmN5R3JhcGhUcmF2ZXJzZXI7Ci1jbGFzcyBURGVwZW5kZW5jeUdyYXBoT3V0cHV0OwotCi10
eXBlZGVmIHN0ZDo6c2V0PFRHcmFwaE5vZGUqPiBUR3JhcGhOb2RlU2V0OwotdHlwZWRlZiBzdGQ6
OnZlY3RvcjxUR3JhcGhOb2RlKj4gVEdyYXBoTm9kZVZlY3RvcjsKLXR5cGVkZWYgc3RkOjp2ZWN0
b3I8VEdyYXBoU3ltYm9sKj4gVEdyYXBoU3ltYm9sVmVjdG9yOwotdHlwZWRlZiBzdGQ6OnZlY3Rv
cjxUR3JhcGhGdW5jdGlvbkNhbGwqPiBURnVuY3Rpb25DYWxsVmVjdG9yOwotCi0vLwotLy8gQmFz
ZSBjbGFzcyBmb3IgYWxsIGRlcGVuZGVuY3kgZ3JhcGggbm9kZXMuCi0vLwotY2xhc3MgVEdyYXBo
Tm9kZSB7Ci1wdWJsaWM6Ci0gICAgVEdyYXBoTm9kZShUSW50ZXJtTm9kZSogbm9kZSkgOiBpbnRl
cm1Ob2RlKG5vZGUpIHt9Ci0gICAgdmlydHVhbCB+VEdyYXBoTm9kZSgpIHt9Ci0gICAgdmlydHVh
bCB2b2lkIHRyYXZlcnNlKFREZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZXIqIGdyYXBoVHJhdmVyc2Vy
KTsKLXByb3RlY3RlZDoKLSAgICBUSW50ZXJtTm9kZSogaW50ZXJtTm9kZTsKLX07Ci0KLS8vCi0v
LyBCYXNlIGNsYXNzIGZvciBkZXBlbmRlbmN5IGdyYXBoIG5vZGVzIHRoYXQgbWF5IGhhdmUgY2hp
bGRyZW4uCi0vLwotY2xhc3MgVEdyYXBoUGFyZW50Tm9kZSA6IHB1YmxpYyBUR3JhcGhOb2RlIHsK
LXB1YmxpYzoKLSAgICBUR3JhcGhQYXJlbnROb2RlKFRJbnRlcm1Ob2RlKiBub2RlKSA6IFRHcmFw
aE5vZGUobm9kZSkge30KLSAgICB+VEdyYXBoUGFyZW50Tm9kZSgpIG92ZXJyaWRlIHt9Ci0gICAg
dm9pZCBhZGREZXBlbmRlbnROb2RlKFRHcmFwaE5vZGUqIG5vZGUpIHsgaWYgKG5vZGUgIT0gdGhp
cykgbURlcGVuZGVudE5vZGVzLmluc2VydChub2RlKTsgfQotICAgIHZvaWQgdHJhdmVyc2UoVERl
cGVuZGVuY3lHcmFwaFRyYXZlcnNlciAqZ3JhcGhUcmF2ZXJzZXIpIG92ZXJyaWRlOwotCi1wcml2
YXRlOgotICAgIFRHcmFwaE5vZGVTZXQgbURlcGVuZGVudE5vZGVzOwotfTsKLQotLy8KLS8vIEhh
bmRsZSBmdW5jdGlvbiBjYWxsIGFyZ3VtZW50cy4KLS8vCi1jbGFzcyBUR3JhcGhBcmd1bWVudCA6
IHB1YmxpYyBUR3JhcGhQYXJlbnROb2RlIHsKLXB1YmxpYzoKLSAgICBUR3JhcGhBcmd1bWVudChU
SW50ZXJtQWdncmVnYXRlKiBpbnRlcm1GdW5jdGlvbkNhbGwsIGludCBhcmd1bWVudE51bWJlcikK
LSAgICAgICAgOiBUR3JhcGhQYXJlbnROb2RlKGludGVybUZ1bmN0aW9uQ2FsbCkKLSAgICAgICAg
LCBtQXJndW1lbnROdW1iZXIoYXJndW1lbnROdW1iZXIpIHt9Ci0gICAgflRHcmFwaEFyZ3VtZW50
KCkgb3ZlcnJpZGUge30KLSAgICBjb25zdCBUSW50ZXJtQWdncmVnYXRlKiBnZXRJbnRlcm1GdW5j
dGlvbkNhbGwoKSBjb25zdCB7IHJldHVybiBpbnRlcm1Ob2RlLT5nZXRBc0FnZ3JlZ2F0ZSgpOyB9
Ci0gICAgaW50IGdldEFyZ3VtZW50TnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbUFyZ3VtZW50TnVt
YmVyOyB9Ci0gICAgdm9pZCB0cmF2ZXJzZShURGVwZW5kZW5jeUdyYXBoVHJhdmVyc2VyICpncmFw
aFRyYXZlcnNlcikgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6Ci0gICAgaW50IG1Bcmd1bWVudE51bWJl
cjsKLX07Ci0KLS8vCi0vLyBIYW5kbGUgZnVuY3Rpb24gY2FsbHMuCi0vLwotY2xhc3MgVEdyYXBo
RnVuY3Rpb25DYWxsIDogcHVibGljIFRHcmFwaFBhcmVudE5vZGUgewotcHVibGljOgotICAgIFRH
cmFwaEZ1bmN0aW9uQ2FsbChUSW50ZXJtQWdncmVnYXRlKiBpbnRlcm1GdW5jdGlvbkNhbGwpCi0g
ICAgICAgIDogVEdyYXBoUGFyZW50Tm9kZShpbnRlcm1GdW5jdGlvbkNhbGwpIHt9Ci0gICAgflRH
cmFwaEZ1bmN0aW9uQ2FsbCgpIG92ZXJyaWRlIHt9Ci0gICAgY29uc3QgVEludGVybUFnZ3JlZ2F0
ZSogZ2V0SW50ZXJtRnVuY3Rpb25DYWxsKCkgY29uc3QgeyByZXR1cm4gaW50ZXJtTm9kZS0+Z2V0
QXNBZ2dyZWdhdGUoKTsgfQotICAgIHZvaWQgdHJhdmVyc2UoVERlcGVuZGVuY3lHcmFwaFRyYXZl
cnNlciAqZ3JhcGhUcmF2ZXJzZXIpIG92ZXJyaWRlOwotfTsKLQotLy8KLS8vIEhhbmRsZSBzeW1i
b2xzLgotLy8KLWNsYXNzIFRHcmFwaFN5bWJvbCA6IHB1YmxpYyBUR3JhcGhQYXJlbnROb2RlIHsK
LXB1YmxpYzoKLSAgICBUR3JhcGhTeW1ib2woVEludGVybVN5bWJvbCogaW50ZXJtU3ltYm9sKSA6
IFRHcmFwaFBhcmVudE5vZGUoaW50ZXJtU3ltYm9sKSB7fQotICAgIH5UR3JhcGhTeW1ib2woKSBv
dmVycmlkZSB7fQotICAgIGNvbnN0IFRJbnRlcm1TeW1ib2wqIGdldEludGVybVN5bWJvbCgpIGNv
bnN0IHsgcmV0dXJuIGludGVybU5vZGUtPmdldEFzU3ltYm9sTm9kZSgpOyB9Ci0gICAgdm9pZCB0
cmF2ZXJzZShURGVwZW5kZW5jeUdyYXBoVHJhdmVyc2VyICpncmFwaFRyYXZlcnNlcikgb3ZlcnJp
ZGU7Ci19OwotCi0vLwotLy8gSGFuZGxlIGlmIHN0YXRlbWVudHMgYW5kIHRlcm5hcnkgb3BlcmF0
b3JzLgotLy8KLWNsYXNzIFRHcmFwaFNlbGVjdGlvbiA6IHB1YmxpYyBUR3JhcGhOb2RlIHsKLXB1
YmxpYzoKLSAgICBUR3JhcGhTZWxlY3Rpb24oVEludGVybVNlbGVjdGlvbiogaW50ZXJtU2VsZWN0
aW9uKSA6IFRHcmFwaE5vZGUoaW50ZXJtU2VsZWN0aW9uKSB7fQotICAgIH5UR3JhcGhTZWxlY3Rp
b24oKSBvdmVycmlkZSB7fQotICAgIGNvbnN0IFRJbnRlcm1TZWxlY3Rpb24qIGdldEludGVybVNl
bGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGludGVybU5vZGUtPmdldEFzU2VsZWN0aW9uTm9kZSgp
OyB9Ci0gICAgdm9pZCB0cmF2ZXJzZShURGVwZW5kZW5jeUdyYXBoVHJhdmVyc2VyICpncmFwaFRy
YXZlcnNlcikgb3ZlcnJpZGU7Ci19OwotCi0vLwotLy8gSGFuZGxlIGZvciwgZG8td2hpbGUsIGFu
ZCB3aGlsZSBsb29wcy4KLS8vCi1jbGFzcyBUR3JhcGhMb29wIDogcHVibGljIFRHcmFwaE5vZGUg
ewotcHVibGljOgotICAgIFRHcmFwaExvb3AoVEludGVybUxvb3AqIGludGVybUxvb3ApIDogVEdy
YXBoTm9kZShpbnRlcm1Mb29wKSB7fQotICAgIH5UR3JhcGhMb29wKCkgb3ZlcnJpZGUge30KLSAg
ICBjb25zdCBUSW50ZXJtTG9vcCogZ2V0SW50ZXJtTG9vcCgpIGNvbnN0IHsgcmV0dXJuIGludGVy
bU5vZGUtPmdldEFzTG9vcE5vZGUoKTsgfQotICAgIHZvaWQgdHJhdmVyc2UoVERlcGVuZGVuY3lH
cmFwaFRyYXZlcnNlciAqZ3JhcGhUcmF2ZXJzZXIpIG92ZXJyaWRlOwotfTsKLQotLy8KLS8vIEhh
bmRsZSBsb2dpY2FsIGFuZCwgb3IuCi0vLwotY2xhc3MgVEdyYXBoTG9naWNhbE9wIDogcHVibGlj
IFRHcmFwaE5vZGUgewotcHVibGljOgotICAgIFRHcmFwaExvZ2ljYWxPcChUSW50ZXJtQmluYXJ5
KiBpbnRlcm1Mb2dpY2FsT3ApIDogVEdyYXBoTm9kZShpbnRlcm1Mb2dpY2FsT3ApIHt9Ci0gICAg
flRHcmFwaExvZ2ljYWxPcCgpIG92ZXJyaWRlIHt9Ci0gICAgY29uc3QgVEludGVybUJpbmFyeSog
Z2V0SW50ZXJtTG9naWNhbE9wKCkgY29uc3QgeyByZXR1cm4gaW50ZXJtTm9kZS0+Z2V0QXNCaW5h
cnlOb2RlKCk7IH0KLSAgICBjb25zdCBjaGFyKiBnZXRPcFN0cmluZygpIGNvbnN0OwotICAgIHZv
aWQgdHJhdmVyc2UoVERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlciAqZ3JhcGhUcmF2ZXJzZXIpIG92
ZXJyaWRlOwotfTsKLQotLy8KLS8vIEEgZGVwZW5kZW5jeSBncmFwaCBvZiBzeW1ib2xzLCBmdW5j
dGlvbiBjYWxscywgY29uZGl0aW9ucyBldGMuCi0vLwotLy8gVGhpcyBjbGFzcyBwcm92aWRlcyBh
biBpbnRlcmZhY2UgdG8gdGhlIGVudHJ5IHBvaW50cyBvZiB0aGUgZGVwZW5kZW5jeSBncmFwaC4K
LS8vCi0vLyBEZXBlbmRlbmN5IGdyYXBoIG5vZGVzIHNob3VsZCBiZSBjcmVhdGVkIGJ5IHVzaW5n
IG9uZSBvZiB0aGUgcHJvdmlkZWQgImNyZWF0ZS4uLiIgbWV0aG9kcy4KLS8vIFRoaXMgY2xhc3Mg
KGFuZCBub2JvZHkgZWxzZSkgbWFuYWdlcyB0aGUgbWVtb3J5IG9mIHRoZSBjcmVhdGVkIG5vZGVz
LgotLy8gTm9kZXMgbWF5IG5vdCBiZSByZW1vdmVkIGFmdGVyIGJlaW5nIGFkZGVkLCBzbyBhbGwg
Y3JlYXRlZCBub2RlcyB3aWxsIGV4aXN0IHdoaWxlIHRoZQotLy8gVERlcGVuZGVuY3lHcmFwaCBp
bnN0YW5jZSBleGlzdHMuCi0vLwotY2xhc3MgVERlcGVuZGVuY3lHcmFwaCB7Ci1wdWJsaWM6Ci0g
ICAgVERlcGVuZGVuY3lHcmFwaChUSW50ZXJtTm9kZSogaW50ZXJtTm9kZSk7Ci0gICAgflREZXBl
bmRlbmN5R3JhcGgoKTsKLSAgICBjb25zdCBUR3JhcGhOb2RlVmVjdG9yICZhbGxOb2RlcygpIGNv
bnN0IHsgcmV0dXJuIG1BbGxOb2RlczsgfQotICAgIGNvbnN0IFRHcmFwaFN5bWJvbFZlY3RvciAm
c2FtcGxlclN5bWJvbHMoKSBjb25zdCB7IHJldHVybiBtU2FtcGxlclN5bWJvbHM7IH0KLSAgICBj
b25zdCBURnVuY3Rpb25DYWxsVmVjdG9yICZ1c2VyRGVmaW5lZEZ1bmN0aW9uQ2FsbHMoKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1Vc2VyRGVmaW5lZEZ1bmN0aW9uQ2FsbHM7Ci0gICAg
fQotCi0gICAgVEdyYXBoQXJndW1lbnQqIGNyZWF0ZUFyZ3VtZW50KFRJbnRlcm1BZ2dyZWdhdGUq
IGludGVybUZ1bmN0aW9uQ2FsbCwgaW50IGFyZ3VtZW50TnVtYmVyKTsKLSAgICBUR3JhcGhGdW5j
dGlvbkNhbGwqIGNyZWF0ZUZ1bmN0aW9uQ2FsbChUSW50ZXJtQWdncmVnYXRlKiBpbnRlcm1GdW5j
dGlvbkNhbGwpOwotICAgIFRHcmFwaFN5bWJvbCogZ2V0T3JDcmVhdGVTeW1ib2woVEludGVybVN5
bWJvbCogaW50ZXJtU3ltYm9sKTsKLSAgICBUR3JhcGhTZWxlY3Rpb24qIGNyZWF0ZVNlbGVjdGlv
bihUSW50ZXJtU2VsZWN0aW9uKiBpbnRlcm1TZWxlY3Rpb24pOwotICAgIFRHcmFwaExvb3AqIGNy
ZWF0ZUxvb3AoVEludGVybUxvb3AqIGludGVybUxvb3ApOwotICAgIFRHcmFwaExvZ2ljYWxPcCog
Y3JlYXRlTG9naWNhbE9wKFRJbnRlcm1CaW5hcnkqIGludGVybUxvZ2ljYWxPcCk7Ci1wcml2YXRl
OgotICAgIHR5cGVkZWYgVE1hcDxpbnQsIFRHcmFwaFN5bWJvbCo+IFRTeW1ib2xJZE1hcDsKLSAg
ICB0eXBlZGVmIHN0ZDo6cGFpcjxpbnQsIFRHcmFwaFN5bWJvbCo+IFRTeW1ib2xJZFBhaXI7Ci0K
LSAgICBUR3JhcGhOb2RlVmVjdG9yIG1BbGxOb2RlczsKLSAgICBUR3JhcGhTeW1ib2xWZWN0b3Ig
bVNhbXBsZXJTeW1ib2xzOwotICAgIFRGdW5jdGlvbkNhbGxWZWN0b3IgbVVzZXJEZWZpbmVkRnVu
Y3Rpb25DYWxsczsKLSAgICBUU3ltYm9sSWRNYXAgbVN5bWJvbElkTWFwOwotfTsKLQotLy8KLS8v
IEZvciB0cmF2ZXJzaW5nIHRoZSBkZXBlbmRlbmN5IGdyYXBoLiBVc2VycyBzaG91bGQgZGVyaXZl
IGZyb20gdGhpcywKLS8vIHB1dCB0aGVpciB0cmF2ZXJzYWwgc3BlY2lmaWMgZGF0YSBpbiBpdCwg
YW5kIHRoZW4gcGFzcyBpdCB0byBhCi0vLyB0cmF2ZXJzZSBtZXRob2QuCi0vLwotLy8gV2hlbiB1
c2luZyB0aGlzLCBqdXN0IGZpbGwgaW4gdGhlIG1ldGhvZHMgZm9yIG5vZGVzIHlvdSB3YW50IHZp
c2l0ZWQuCi0vLwotY2xhc3MgVERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlciA6IGFuZ2xlOjpOb25D
b3B5YWJsZSB7Ci1wdWJsaWM6Ci0gICAgVERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlcigpIDogbURl
cHRoKDApIHt9Ci0gICAgdmlydHVhbCB+VERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlcigpIHt9Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgdmlzaXRTeW1ib2woVEdyYXBoU3ltYm9sKiBzeW1ib2wpIHt9Owot
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdEFyZ3VtZW50KFRHcmFwaEFyZ3VtZW50KiBzZWxlY3Rpb24p
IHt9OwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdEZ1bmN0aW9uQ2FsbChUR3JhcGhGdW5jdGlvbkNh
bGwqIGZ1bmN0aW9uQ2FsbCkge307Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0U2VsZWN0aW9uKFRH
cmFwaFNlbGVjdGlvbiogc2VsZWN0aW9uKSB7fTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXRMb29w
KFRHcmFwaExvb3AqIGxvb3ApIHt9OwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdExvZ2ljYWxPcChU
R3JhcGhMb2dpY2FsT3AqIGxvZ2ljYWxPcCkge307Ci0KLSAgICBpbnQgZ2V0RGVwdGgoKSBjb25z
dCB7IHJldHVybiBtRGVwdGg7IH0KLSAgICB2b2lkIGluY3JlbWVudERlcHRoKCkgeyArK21EZXB0
aDsgfQotICAgIHZvaWQgZGVjcmVtZW50RGVwdGgoKSB7IC0tbURlcHRoOyB9Ci0KLSAgICB2b2lk
IGNsZWFyVmlzaXRlZCgpIHsgbVZpc2l0ZWQuY2xlYXIoKTsgfQotICAgIHZvaWQgbWFya1Zpc2l0
ZWQoVEdyYXBoTm9kZSogbm9kZSkgeyBtVmlzaXRlZC5pbnNlcnQobm9kZSk7IH0KLSAgICBib29s
IGlzVmlzaXRlZChUR3JhcGhOb2RlKiBub2RlKSBjb25zdCB7IHJldHVybiBtVmlzaXRlZC5maW5k
KG5vZGUpICE9IG1WaXNpdGVkLmVuZCgpOyB9Ci1wcml2YXRlOgotICAgIGludCBtRGVwdGg7Ci0g
ICAgVEdyYXBoTm9kZVNldCBtVmlzaXRlZDsKLX07Ci0KLSNlbmRpZiAvLyBDT01QSUxFUl9UUkFO
U0xBVE9SX0RFUEdSQVBIX0RFUEVOREVOQ1lHUkFQSF9IXwoKUHJvcGVydHkgY2hhbmdlcyBvbjog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgv
RGVwZW5kZW5jeUdyYXBoLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0x
ICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9kZXBncmFwaC9E
ZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhC
dWlsZGVyLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5j
cHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwyNTUgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykg
MjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNs
dWRlICJjb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaEJ1aWxkZXIu
aCIKLQotdm9pZCBURGVwZW5kZW5jeUdyYXBoQnVpbGRlcjo6YnVpbGQoVEludGVybU5vZGUgKm5v
ZGUsIFREZXBlbmRlbmN5R3JhcGggKmdyYXBoKQotewotICAgIFREZXBlbmRlbmN5R3JhcGhCdWls
ZGVyIGJ1aWxkZXIoZ3JhcGgpOwotICAgIGJ1aWxkZXIuYnVpbGQobm9kZSk7Ci19Ci0KLWJvb2wg
VERlcGVuZGVuY3lHcmFwaEJ1aWxkZXI6OnZpc2l0QWdncmVnYXRlKAotICAgIFZpc2l0IHZpc2l0
LCBUSW50ZXJtQWdncmVnYXRlICppbnRlcm1BZ2dyZWdhdGUpCi17Ci0gICAgc3dpdGNoIChpbnRl
cm1BZ2dyZWdhdGUtPmdldE9wKCkpCi0gICAgewotICAgICAgY2FzZSBFT3BGdW5jdGlvbjoKLSAg
ICAgICAgdmlzaXRGdW5jdGlvbkRlZmluaXRpb24oaW50ZXJtQWdncmVnYXRlKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgICBjYXNlIEVPcEZ1bmN0aW9uQ2FsbDoKLSAgICAgICAgdmlzaXRGdW5jdGlv
bkNhbGwoaW50ZXJtQWdncmVnYXRlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0Ogot
ICAgICAgICB2aXNpdEFnZ3JlZ2F0ZUNoaWxkcmVuKGludGVybUFnZ3JlZ2F0ZSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgVERlcGVuZGVuY3lH
cmFwaEJ1aWxkZXI6OnZpc2l0RnVuY3Rpb25EZWZpbml0aW9uKAotICAgIFRJbnRlcm1BZ2dyZWdh
dGUgKmludGVybUFnZ3JlZ2F0ZSkKLXsKLSAgICAvLyBDdXJyZW50bHksIHdlIGRvIG5vdCBzdXBw
b3J0IHVzZXIgZGVmaW5lZCBmdW5jdGlvbnMuCi0gICAgaWYgKGludGVybUFnZ3JlZ2F0ZS0+Z2V0
TmFtZSgpICE9ICJtYWluKCIpCi0gICAgICAgIHJldHVybjsKLQotICAgIHZpc2l0QWdncmVnYXRl
Q2hpbGRyZW4oaW50ZXJtQWdncmVnYXRlKTsKLX0KLQotLy8gVGFrZXMgYW4gZXhwcmVzc2lvbiBs
aWtlICJmKHgpIiBhbmQgY3JlYXRlcyBhIGRlcGVuZGVuY3kgZ3JhcGggbGlrZQotLy8gInggLT4g
YXJndW1lbnQgMCAtPiBmdW5jdGlvbiBjYWxsIi4KLXZvaWQgVERlcGVuZGVuY3lHcmFwaEJ1aWxk
ZXI6OnZpc2l0RnVuY3Rpb25DYWxsKAotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmludGVybUZ1bmN0
aW9uQ2FsbCkKLXsKLSAgICBUR3JhcGhGdW5jdGlvbkNhbGwgKmZ1bmN0aW9uQ2FsbCA9Ci0gICAg
ICAgIG1HcmFwaC0+Y3JlYXRlRnVuY3Rpb25DYWxsKGludGVybUZ1bmN0aW9uQ2FsbCk7Ci0KLSAg
ICAvLyBSdW4gdGhyb3VnaCB0aGUgZnVuY3Rpb24gY2FsbCBhcmd1bWVudHMuCi0gICAgaW50IGFy
Z3VtZW50TnVtYmVyID0gMDsKLSAgICBUSW50ZXJtU2VxdWVuY2UgKmludGVybUFyZ3VtZW50cyA9
IGludGVybUZ1bmN0aW9uQ2FsbC0+Z2V0U2VxdWVuY2UoKTsKLSAgICBmb3IgKFRJbnRlcm1TZXF1
ZW5jZTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGludGVybUFyZ3VtZW50cy0+YmVnaW4oKTsKLSAg
ICAgICAgIGl0ZXIgIT0gaW50ZXJtQXJndW1lbnRzLT5lbmQoKTsKLSAgICAgICAgICsraXRlciwg
Kythcmd1bWVudE51bWJlcikKLSAgICB7Ci0gICAgICAgIFROb2RlU2V0TWFpbnRhaW5lciBub2Rl
U2V0TWFpbnRhaW5lcih0aGlzKTsKLQotICAgICAgICBUSW50ZXJtTm9kZSAqaW50ZXJtQXJndW1l
bnQgPSAqaXRlcjsKLSAgICAgICAgaW50ZXJtQXJndW1lbnQtPnRyYXZlcnNlKHRoaXMpOwotCi0g
ICAgICAgIGlmIChUUGFyZW50Tm9kZVNldCAqYXJndW1lbnROb2RlcyA9IG1Ob2RlU2V0cy5nZXRU
b3BTZXQoKSkKLSAgICAgICAgewotICAgICAgICAgICAgVEdyYXBoQXJndW1lbnQgKmFyZ3VtZW50
ID0gbUdyYXBoLT5jcmVhdGVBcmd1bWVudCgKLSAgICAgICAgICAgICAgICBpbnRlcm1GdW5jdGlv
bkNhbGwsIGFyZ3VtZW50TnVtYmVyKTsKLSAgICAgICAgICAgIGNvbm5lY3RNdWx0aXBsZU5vZGVz
VG9TaW5nbGVOb2RlKGFyZ3VtZW50Tm9kZXMsIGFyZ3VtZW50KTsKLSAgICAgICAgICAgIGFyZ3Vt
ZW50LT5hZGREZXBlbmRlbnROb2RlKGZ1bmN0aW9uQ2FsbCk7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICAvLyBQdXNoIHRoZSBsZWZ0bW9zdCBzeW1ib2wgb2YgdGhpcyBmdW5jdGlvbiBjYWxsIGlu
dG8gdGhlIGN1cnJlbnQgc2V0IG9mCi0gICAgLy8gZGVwZW5kZW50IHN5bWJvbHMgdG8gcmVwcmVz
ZW50IHRoZSByZXN1bHQgb2YgdGhpcyBmdW5jdGlvbiBjYWxsLgotICAgIC8vIFRodXMsIGFuIGV4
cHJlc3Npb24gbGlrZSAieSA9IGYoeCkiIHdpbGwgeWllbGQgYSBkZXBlbmRlbmN5IGdyYXBoIGxp
a2UKLSAgICAvLyAieCAtPiBhcmd1bWVudCAwIC0+IGZ1bmN0aW9uIGNhbGwgLT4geSIuCi0gICAg
Ly8gVGhpcyBsaW5lIGVzc2VudGlhbGx5IHBhc3NlcyB0aGUgZnVuY3Rpb24gY2FsbCBub2RlIGJh
Y2sgdXAgdG8gYW4gZWFybGllcgotICAgIC8vIHZpc2l0QXNzaWdubWVudCBjYWxsLCB3aGljaCB3
aWxsIGNyZWF0ZSB0aGUgY29ubmVjdGlvbiAiZnVuY3Rpb24gY2FsbCAtPiB5Ii4KLSAgICBtTm9k
ZVNldHMuaW5zZXJ0SW50b1RvcFNldChmdW5jdGlvbkNhbGwpOwotfQotCi12b2lkIFREZXBlbmRl
bmN5R3JhcGhCdWlsZGVyOjp2aXNpdEFnZ3JlZ2F0ZUNoaWxkcmVuKAotICAgIFRJbnRlcm1BZ2dy
ZWdhdGUgKmludGVybUFnZ3JlZ2F0ZSkKLXsKLSAgICBUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNl
ID0gaW50ZXJtQWdncmVnYXRlLT5nZXRTZXF1ZW5jZSgpOwotICAgIGZvciAoVEludGVybVNlcXVl
bmNlOjpjb25zdF9pdGVyYXRvciBpdGVyID0gc2VxdWVuY2UtPmJlZ2luKCk7Ci0gICAgICAgICBp
dGVyICE9IHNlcXVlbmNlLT5lbmQoKTsgKytpdGVyKQotICAgIHsKLSAgICAgICAgVEludGVybU5v
ZGUgKmludGVybUNoaWxkID0gKml0ZXI7Ci0gICAgICAgIGludGVybUNoaWxkLT50cmF2ZXJzZSh0
aGlzKTsKLSAgICB9Ci19Ci0KLXZvaWQgVERlcGVuZGVuY3lHcmFwaEJ1aWxkZXI6OnZpc2l0U3lt
Ym9sKFRJbnRlcm1TeW1ib2wgKmludGVybVN5bWJvbCkKLXsKLSAgICAvLyBQdXNoIHRoaXMgc3lt
Ym9sIGludG8gdGhlIHNldCBvZiBkZXBlbmRlbnQgc3ltYm9scyBmb3IgdGhlIGN1cnJlbnQKLSAg
ICAvLyBhc3NpZ25tZW50IG9yIGNvbmRpdGlvbiB0aGF0IHdlIGFyZSB0cmF2ZXJzaW5nLgotICAg
IFRHcmFwaFN5bWJvbCAqc3ltYm9sID0gbUdyYXBoLT5nZXRPckNyZWF0ZVN5bWJvbChpbnRlcm1T
eW1ib2wpOwotICAgIG1Ob2RlU2V0cy5pbnNlcnRJbnRvVG9wU2V0KHN5bWJvbCk7Ci0KLSAgICAv
LyBJZiB0aGlzIHN5bWJvbCBpcyB0aGUgY3VycmVudCBsZWZ0bW9zdCBzeW1ib2wgdW5kZXIgYW4g
YXNzaWdubWVudCwgcmVwbGFjZQotICAgIC8vIHRoZSBwcmV2aW91cyBsZWZ0bW9zdCBzeW1ib2wg
d2l0aCB0aGlzIHN5bWJvbC4KLSAgICBpZiAoIW1MZWZ0bW9zdFN5bWJvbHMuZW1wdHkoKSAmJiBt
TGVmdG1vc3RTeW1ib2xzLnRvcCgpICE9ICZtUmlnaHRTdWJ0cmVlKQotICAgIHsKLSAgICAgICAg
bUxlZnRtb3N0U3ltYm9scy5wb3AoKTsKLSAgICAgICAgbUxlZnRtb3N0U3ltYm9scy5wdXNoKHN5
bWJvbCk7Ci0gICAgfQotfQotCi1ib29sIFREZXBlbmRlbmN5R3JhcGhCdWlsZGVyOjp2aXNpdEJp
bmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqaW50ZXJtQmluYXJ5KQotewotICAgIFRP
cGVyYXRvciBvcCA9IGludGVybUJpbmFyeS0+Z2V0T3AoKTsKLSAgICBpZiAob3AgPT0gRU9wSW5p
dGlhbGl6ZSB8fCBpbnRlcm1CaW5hcnktPmlzQXNzaWdubWVudCgpKQotICAgICAgICB2aXNpdEFz
c2lnbm1lbnQoaW50ZXJtQmluYXJ5KTsKLSAgICBlbHNlIGlmIChvcCA9PSBFT3BMb2dpY2FsQW5k
IHx8IG9wID09IEVPcExvZ2ljYWxPcikKLSAgICAgICAgdmlzaXRMb2dpY2FsT3AoaW50ZXJtQmlu
YXJ5KTsKLSAgICBlbHNlCi0gICAgICAgIHZpc2l0QmluYXJ5Q2hpbGRyZW4oaW50ZXJtQmluYXJ5
KTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBURGVwZW5kZW5jeUdyYXBoQnVpbGRl
cjo6dmlzaXRBc3NpZ25tZW50KFRJbnRlcm1CaW5hcnkgKmludGVybUFzc2lnbm1lbnQpCi17Ci0g
ICAgVEludGVybVR5cGVkICppbnRlcm1MZWZ0ID0gaW50ZXJtQXNzaWdubWVudC0+Z2V0TGVmdCgp
OwotICAgIGlmICghaW50ZXJtTGVmdCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgVEdyYXBoU3lt
Ym9sICpsZWZ0bW9zdFN5bWJvbCA9IE5VTEw7Ci0KLSAgICB7Ci0gICAgICAgIFROb2RlU2V0TWFp
bnRhaW5lciBub2RlU2V0TWFpbnRhaW5lcih0aGlzKTsKLQotICAgICAgICB7Ci0gICAgICAgICAg
ICBUTGVmdG1vc3RTeW1ib2xNYWludGFpbmVyIGxlZnRtb3N0U3ltYm9sTWFpbnRhaW5lcih0aGlz
LCBtTGVmdFN1YnRyZWUpOwotICAgICAgICAgICAgaW50ZXJtTGVmdC0+dHJhdmVyc2UodGhpcyk7
Ci0gICAgICAgICAgICBsZWZ0bW9zdFN5bWJvbCA9IG1MZWZ0bW9zdFN5bWJvbHMudG9wKCk7Ci0K
LSAgICAgICAgICAgIC8vIEFmdGVyIHRyYXZlcnNpbmcgdGhlIGxlZnQgc3VidHJlZSBvZiB0aGlz
IGFzc2lnbm1lbnQsIHdlIHNob3VsZAotICAgICAgICAgICAgLy8gaGF2ZSBmb3VuZCBhIHJlYWwg
bGVmdG1vc3Qgc3ltYm9sLCBhbmQgdGhlIGxlZnRtb3N0IHN5bWJvbCBzaG91bGQKLSAgICAgICAg
ICAgIC8vIG5vdCBiZSBhIHBsYWNlaG9sZGVyLgotICAgICAgICAgICAgQVNTRVJUKGxlZnRtb3N0
U3ltYm9sICE9ICZtTGVmdFN1YnRyZWUpOwotICAgICAgICAgICAgQVNTRVJUKGxlZnRtb3N0U3lt
Ym9sICE9ICZtUmlnaHRTdWJ0cmVlKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChUSW50ZXJt
VHlwZWQgKmludGVybVJpZ2h0ID0gaW50ZXJtQXNzaWdubWVudC0+Z2V0UmlnaHQoKSkKLSAgICAg
ICAgewotICAgICAgICAgICAgVExlZnRtb3N0U3ltYm9sTWFpbnRhaW5lciBsZWZ0bW9zdFN5bWJv
bE1haW50YWluZXIodGhpcywgbVJpZ2h0U3VidHJlZSk7Ci0gICAgICAgICAgICBpbnRlcm1SaWdo
dC0+dHJhdmVyc2UodGhpcyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoVFBhcmVudE5vZGVT
ZXQgKmFzc2lnbm1lbnROb2RlcyA9IG1Ob2RlU2V0cy5nZXRUb3BTZXQoKSkKLSAgICAgICAgICAg
IGNvbm5lY3RNdWx0aXBsZU5vZGVzVG9TaW5nbGVOb2RlKGFzc2lnbm1lbnROb2RlcywgbGVmdG1v
c3RTeW1ib2wpOwotICAgIH0KLQotICAgIC8vIFB1c2ggdGhlIGxlZnRtb3N0IHN5bWJvbCBvZiB0
aGlzIGFzc2lnbm1lbnQgaW50byB0aGUgY3VycmVudCBzZXQgb2YgZGVwZW5kZW50Ci0gICAgLy8g
c3ltYm9scyB0byByZXByZXNlbnQgdGhlIHJlc3VsdCBvZiB0aGlzIGFzc2lnbm1lbnQuCi0gICAg
Ly8gQW4gZXhwcmVzc2lvbiBsaWtlICJhID0gKGIgPSBjKSIgd2lsbCB5aWVsZCBhIGRlcGVuZGVu
Y3kgZ3JhcGggbGlrZQotICAgIC8vICJjIC0+IGIgLT4gYSIuCi0gICAgLy8gVGhpcyBsaW5lIGVz
c2VudGlhbGx5IHBhc3NlcyB0aGUgbGVmdG1vc3Qgc3ltYm9sIG9mIHRoZSBuZXN0ZWQgYXNzaWdu
bWVudAotICAgIC8vICgiYiIgaW4gdGhpcyBleGFtcGxlKSBiYWNrIHVwIHRvIHRoZSBlYXJsaWVy
IHZpc2l0QXNzaWdubWVudCBjYWxsIGZvciB0aGUKLSAgICAvLyBvdXRlciBhc3NpZ25tZW50LCB3
aGljaCB3aWxsIGNyZWF0ZSB0aGUgY29ubmVjdGlvbiAiYiAtPiBhIi4KLSAgICBtTm9kZVNldHMu
aW5zZXJ0SW50b1RvcFNldChsZWZ0bW9zdFN5bWJvbCk7Ci19Ci0KLXZvaWQgVERlcGVuZGVuY3lH
cmFwaEJ1aWxkZXI6OnZpc2l0TG9naWNhbE9wKFRJbnRlcm1CaW5hcnkgKmludGVybUxvZ2ljYWxP
cCkKLXsKLSAgICBpZiAoVEludGVybVR5cGVkICppbnRlcm1MZWZ0ID0gaW50ZXJtTG9naWNhbE9w
LT5nZXRMZWZ0KCkpCi0gICAgewotICAgICAgICBUTm9kZVNldFByb3BhZ2F0aW5nTWFpbnRhaW5l
ciBub2RlU2V0TWFpbnRhaW5lcih0aGlzKTsKLQotICAgICAgICBpbnRlcm1MZWZ0LT50cmF2ZXJz
ZSh0aGlzKTsKLSAgICAgICAgaWYgKFRQYXJlbnROb2RlU2V0ICpsZWZ0Tm9kZXMgPSBtTm9kZVNl
dHMuZ2V0VG9wU2V0KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFRHcmFwaExvZ2ljYWxPcCAq
bG9naWNhbE9wID0gbUdyYXBoLT5jcmVhdGVMb2dpY2FsT3AoaW50ZXJtTG9naWNhbE9wKTsKLSAg
ICAgICAgICAgIGNvbm5lY3RNdWx0aXBsZU5vZGVzVG9TaW5nbGVOb2RlKGxlZnROb2RlcywgbG9n
aWNhbE9wKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChUSW50ZXJtVHlwZWQgKmludGVy
bVJpZ2h0ID0gaW50ZXJtTG9naWNhbE9wLT5nZXRSaWdodCgpKQotICAgIHsKLSAgICAgICAgVExl
ZnRtb3N0U3ltYm9sTWFpbnRhaW5lciBsZWZ0bW9zdFN5bWJvbE1haW50YWluZXIodGhpcywgbVJp
Z2h0U3VidHJlZSk7Ci0gICAgICAgIGludGVybVJpZ2h0LT50cmF2ZXJzZSh0aGlzKTsKLSAgICB9
Ci19Ci0KLXZvaWQgVERlcGVuZGVuY3lHcmFwaEJ1aWxkZXI6OnZpc2l0QmluYXJ5Q2hpbGRyZW4o
VEludGVybUJpbmFyeSAqaW50ZXJtQmluYXJ5KQotewotICAgIGlmIChUSW50ZXJtVHlwZWQgKmlu
dGVybUxlZnQgPSBpbnRlcm1CaW5hcnktPmdldExlZnQoKSkKLSAgICAgICAgaW50ZXJtTGVmdC0+
dHJhdmVyc2UodGhpcyk7Ci0KLSAgICBpZiAoVEludGVybVR5cGVkICppbnRlcm1SaWdodCA9IGlu
dGVybUJpbmFyeS0+Z2V0UmlnaHQoKSkKLSAgICB7Ci0gICAgICAgIFRMZWZ0bW9zdFN5bWJvbE1h
aW50YWluZXIgbGVmdG1vc3RTeW1ib2xNYWludGFpbmVyKHRoaXMsIG1SaWdodFN1YnRyZWUpOwot
ICAgICAgICBpbnRlcm1SaWdodC0+dHJhdmVyc2UodGhpcyk7Ci0gICAgfQotfQotCi1ib29sIFRE
ZXBlbmRlbmN5R3JhcGhCdWlsZGVyOjp2aXNpdFNlbGVjdGlvbigKLSAgICBWaXNpdCB2aXNpdCwg
VEludGVybVNlbGVjdGlvbiAqaW50ZXJtU2VsZWN0aW9uKQotewotICAgIGlmIChUSW50ZXJtTm9k
ZSAqaW50ZXJtQ29uZGl0aW9uID0gaW50ZXJtU2VsZWN0aW9uLT5nZXRDb25kaXRpb24oKSkKLSAg
ICB7Ci0gICAgICAgIFROb2RlU2V0TWFpbnRhaW5lciBub2RlU2V0TWFpbnRhaW5lcih0aGlzKTsK
LQotICAgICAgICBpbnRlcm1Db25kaXRpb24tPnRyYXZlcnNlKHRoaXMpOwotICAgICAgICBpZiAo
VFBhcmVudE5vZGVTZXQgKmNvbmRpdGlvbk5vZGVzID0gbU5vZGVTZXRzLmdldFRvcFNldCgpKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBUR3JhcGhTZWxlY3Rpb24gKnNlbGVjdGlvbiA9IG1HcmFw
aC0+Y3JlYXRlU2VsZWN0aW9uKGludGVybVNlbGVjdGlvbik7Ci0gICAgICAgICAgICBjb25uZWN0
TXVsdGlwbGVOb2Rlc1RvU2luZ2xlTm9kZShjb25kaXRpb25Ob2Rlcywgc2VsZWN0aW9uKTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIGlmIChUSW50ZXJtTm9kZSAqaW50ZXJtVHJ1ZUJsb2NrID0g
aW50ZXJtU2VsZWN0aW9uLT5nZXRUcnVlQmxvY2soKSkKLSAgICAgICAgaW50ZXJtVHJ1ZUJsb2Nr
LT50cmF2ZXJzZSh0aGlzKTsKLQotICAgIGlmIChUSW50ZXJtTm9kZSAqaW50ZXJtRmFsc2VCbG9j
ayA9IGludGVybVNlbGVjdGlvbi0+Z2V0RmFsc2VCbG9jaygpKQotICAgICAgICBpbnRlcm1GYWxz
ZUJsb2NrLT50cmF2ZXJzZSh0aGlzKTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBU
RGVwZW5kZW5jeUdyYXBoQnVpbGRlcjo6dmlzaXRMb29wKFZpc2l0IHZpc2l0LCBUSW50ZXJtTG9v
cCAqaW50ZXJtTG9vcCkKLXsKLSAgICBpZiAoVEludGVybVR5cGVkICppbnRlcm1Db25kaXRpb24g
PSBpbnRlcm1Mb29wLT5nZXRDb25kaXRpb24oKSkKLSAgICB7Ci0gICAgICAgIFROb2RlU2V0TWFp
bnRhaW5lciBub2RlU2V0TWFpbnRhaW5lcih0aGlzKTsKLQotICAgICAgICBpbnRlcm1Db25kaXRp
b24tPnRyYXZlcnNlKHRoaXMpOwotICAgICAgICBpZiAoVFBhcmVudE5vZGVTZXQgKmNvbmRpdGlv
bk5vZGVzID0gbU5vZGVTZXRzLmdldFRvcFNldCgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBU
R3JhcGhMb29wICpsb29wID0gbUdyYXBoLT5jcmVhdGVMb29wKGludGVybUxvb3ApOwotICAgICAg
ICAgICAgY29ubmVjdE11bHRpcGxlTm9kZXNUb1NpbmdsZU5vZGUoY29uZGl0aW9uTm9kZXMsIGxv
b3ApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKFRJbnRlcm1Ob2RlKiBpbnRlcm1Cb2R5
ID0gaW50ZXJtTG9vcC0+Z2V0Qm9keSgpKQotICAgICAgICBpbnRlcm1Cb2R5LT50cmF2ZXJzZSh0
aGlzKTsKLQotICAgIGlmIChUSW50ZXJtVHlwZWQgKmludGVybUV4cHJlc3Npb24gPSBpbnRlcm1M
b29wLT5nZXRFeHByZXNzaW9uKCkpCi0gICAgICAgIGludGVybUV4cHJlc3Npb24tPnRyYXZlcnNl
KHRoaXMpOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi0KLXZvaWQgVERlcGVuZGVuY3lHcmFw
aEJ1aWxkZXI6OmNvbm5lY3RNdWx0aXBsZU5vZGVzVG9TaW5nbGVOb2RlKAotICAgIFRQYXJlbnRO
b2RlU2V0ICpub2RlcywgVEdyYXBoTm9kZSAqbm9kZSkgY29uc3QKLXsKLSAgICBmb3IgKFRQYXJl
bnROb2RlU2V0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbm9kZXMtPmJlZ2luKCk7Ci0gICAgICAg
ICBpdGVyICE9IG5vZGVzLT5lbmQoKTsgKytpdGVyKQotICAgIHsKLSAgICAgICAgVEdyYXBoUGFy
ZW50Tm9kZSAqY3VycmVudE5vZGUgPSAqaXRlcjsKLSAgICAgICAgY3VycmVudE5vZGUtPmFkZERl
cGVuZGVudE5vZGUobm9kZSk7Ci0gICAgfQotfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5k
ZW5jeUdyYXBoQnVpbGRlci5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMj
IC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9kZXBncmFw
aC9EZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBo
QnVpbGRlci5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmgJ
KG5vbmV4aXN0ZW50KQpAQCAtMSwxOTkgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAx
MiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpZm5kZWYg
Q09NUElMRVJfVFJBTlNMQVRPUl9ERVBHUkFQSF9ERVBFTkRFTkNZR1JBUEhCVUlMREVSX0hfCi0j
ZGVmaW5lIENPTVBJTEVSX1RSQU5TTEFUT1JfREVQR1JBUEhfREVQRU5ERU5DWUdSQVBIQlVJTERF
Ul9IXwotCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9kZXBncmFwaC9EZXBlbmRlbmN5
R3JhcGguaCIKLQotLy8KLS8vIENyZWF0ZXMgYSBkZXBlbmRlbmN5IGdyYXBoIG9mIHN5bWJvbHMs
IGZ1bmN0aW9uIGNhbGxzLCBjb25kaXRpb25zIGV0Yy4gYnkKLS8vIHRyYXZlcnNpbmcgYSBpbnRl
cm1lZGlhdGUgdHJlZS4KLS8vCi1jbGFzcyBURGVwZW5kZW5jeUdyYXBoQnVpbGRlciA6IHB1Ymxp
YyBUSW50ZXJtVHJhdmVyc2VyCi17Ci0gIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBidWlsZChU
SW50ZXJtTm9kZSAqbm9kZSwgVERlcGVuZGVuY3lHcmFwaCAqZ3JhcGgpOwotCi0gICAgdm9pZCB2
aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICopIG92ZXJyaWRlOwotICAgIGJvb2wgdmlzaXRCaW5h
cnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkgKikgb3ZlcnJpZGU7Ci0gICAgYm9vbCB2aXNp
dFNlbGVjdGlvbihWaXNpdCB2aXNpdCwgVEludGVybVNlbGVjdGlvbiAqKSBvdmVycmlkZTsKLSAg
ICBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICopIG92
ZXJyaWRlOwotICAgIGJvb2wgdmlzaXRMb29wKFZpc2l0IHZpc2l0LCBUSW50ZXJtTG9vcCAqKSBv
dmVycmlkZTsKLQotICBwcml2YXRlOgotICAgIHR5cGVkZWYgc3RkOjpzdGFjazxUR3JhcGhTeW1i
b2wgKj4gVFN5bWJvbFN0YWNrOwotICAgIHR5cGVkZWYgc3RkOjpzZXQ8VEdyYXBoUGFyZW50Tm9k
ZSAqPiBUUGFyZW50Tm9kZVNldDsKLQotICAgIC8vCi0gICAgLy8gRm9yIGNvbGxlY3RpbmcgdGhl
IGRlcGVuZGVudCBub2RlcyBvZiBhc3NpZ25tZW50cywgY29uZGl0aW9ucywgZXRjLgotICAgIC8v
IHdoaWxlIHRyYXZlcnNpbmcgdGhlIGludGVybWVkaWF0ZSB0cmVlLgotICAgIC8vCi0gICAgLy8g
VGhpcyBkYXRhIHN0cnVjdHVyZSBpcyBzdGFjayBvZiBzZXRzLiBFYWNoIHNldCBjb250YWlucyBk
ZXBlbmRlbmN5IGdyYXBoCi0gICAgLy8gcGFyZW50IG5vZGVzLgotICAgIC8vCi0gICAgY2xhc3Mg
VE5vZGVTZXRTdGFjawotICAgIHsKLSAgICAgIHB1YmxpYzoKLSAgICAgICAgVE5vZGVTZXRTdGFj
aygpIHt9OwotICAgICAgICB+VE5vZGVTZXRTdGFjaygpIHsgY2xlYXIoKTsgfQotCi0gICAgICAg
IC8vIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGEgcHVzaFNldC4KLSAgICAgICAg
Ly8gUmV0dXJucyBOVUxMIGlmIHRoZSB0b3Agc2V0IGlzIGVtcHR5LgotICAgICAgICBUUGFyZW50
Tm9kZVNldCAqZ2V0VG9wU2V0KCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJU
KCFtTm9kZVNldHMuZW1wdHkoKSk7Ci0gICAgICAgICAgICBUUGFyZW50Tm9kZVNldCAqdG9wU2V0
ID0gbU5vZGVTZXRzLnRvcCgpOwotICAgICAgICAgICAgcmV0dXJuICF0b3BTZXQtPmVtcHR5KCkg
PyB0b3BTZXQgOiBOVUxMOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBwdXNoU2V0KCkgeyBt
Tm9kZVNldHMucHVzaChuZXcgVFBhcmVudE5vZGVTZXQoKSk7IH0KLSAgICAgICAgdm9pZCBwb3BT
ZXQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoIW1Ob2RlU2V0cy5lbXB0eSgpKTsK
LSAgICAgICAgICAgIGRlbGV0ZSBtTm9kZVNldHMudG9wKCk7Ci0gICAgICAgICAgICBtTm9kZVNl
dHMucG9wKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBQb3BzIHRoZSB0b3Agc2V0IGFuZCBh
ZGRzIGl0cyBjb250ZW50cyB0byB0aGUgbmV3IHRvcCBzZXQuCi0gICAgICAgIC8vIFRoaXMgc2hv
dWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGEgcHVzaFNldC4KLSAgICAgICAgLy8gSWYgdGhlcmUg
aXMgbm8gc2V0IGJlbG93IHRoZSB0b3Agc2V0LCB0aGUgdG9wIHNldCBpcyBqdXN0IGRlbGV0ZWQu
Ci0gICAgICAgIHZvaWQgcG9wU2V0SW50b05leHQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBB
U1NFUlQoIW1Ob2RlU2V0cy5lbXB0eSgpKTsKLSAgICAgICAgICAgIFRQYXJlbnROb2RlU2V0ICpv
bGRUb3BTZXQgPSBtTm9kZVNldHMudG9wKCk7Ci0gICAgICAgICAgICBtTm9kZVNldHMucG9wKCk7
Ci0KLSAgICAgICAgICAgIGlmICghbU5vZGVTZXRzLmVtcHR5KCkpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgVFBhcmVudE5vZGVTZXQgKm5ld1RvcFNldCA9IG1Ob2RlU2V0cy50b3Ao
KTsKLSAgICAgICAgICAgICAgICBuZXdUb3BTZXQtPmluc2VydChvbGRUb3BTZXQtPmJlZ2luKCks
IG9sZFRvcFNldC0+ZW5kKCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBkZWxldGUg
b2xkVG9wU2V0OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRG9lcyBub3RoaW5nIGlmIHRoZXJl
IGlzIG5vIHRvcCBzZXQuCi0gICAgICAgIC8vIFRoaXMgY2FuIGJlIGNhbGxlZCB3aGVuIHRoZXJl
IGlzIG5vIHRvcCBzZXQgaWYgd2UgYXJlIHZpc2l0aW5nCi0gICAgICAgIC8vIHN5bWJvbHMgdGhh
dCBhcmUgbm90IHVuZGVyIGFuIGFzc2lnbm1lbnQgb3IgY29uZGl0aW9uLgotICAgICAgICAvLyBX
ZSBkb24ndCBuZWVkIHRvIHRyYWNrIHRob3NlIHN5bWJvbHMuCi0gICAgICAgIHZvaWQgaW5zZXJ0
SW50b1RvcFNldChUR3JhcGhQYXJlbnROb2RlICpub2RlKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAobU5vZGVTZXRzLmVtcHR5KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgICAgICBtTm9kZVNldHMudG9wKCktPmluc2VydChub2RlKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHZvaWQgY2xlYXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICB3aGlsZSAoIW1Ob2RlU2V0
cy5lbXB0eSgpKQotICAgICAgICAgICAgICAgIHBvcFNldCgpOwotICAgICAgICB9Ci0KLSAgICAg
IHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgc3RkOjpzdGFjazxUUGFyZW50Tm9kZVNldCAqPiBU
UGFyZW50Tm9kZVNldFN0YWNrOwotCi0gICAgICAgIFRQYXJlbnROb2RlU2V0U3RhY2sgbU5vZGVT
ZXRzOwotICAgIH07Ci0KLSAgICAvLwotICAgIC8vIEFuIGluc3RhbmNlIG9mIHRoaXMgY2xhc3Mg
cHVzaGVzIGEgbmV3IG5vZGUgc2V0IHdoZW4gaW5zdGFudGlhdGVkLgotICAgIC8vIFdoZW4gdGhl
IGluc3RhbmNlIGdvZXMgb3V0IG9mIHNjb3BlLCBpdCBhbmQgcG9wcyB0aGUgbm9kZSBzZXQuCi0g
ICAgLy8KLSAgICBjbGFzcyBUTm9kZVNldE1haW50YWluZXIgOiBhbmdsZTo6Tm9uQ29weWFibGUK
LSAgICB7Ci0gICAgICBwdWJsaWM6Ci0gICAgICAgIFROb2RlU2V0TWFpbnRhaW5lcihURGVwZW5k
ZW5jeUdyYXBoQnVpbGRlciAqZmFjdG9yeSkKLSAgICAgICAgICAgIDogbVNldHMoZmFjdG9yeS0+
bU5vZGVTZXRzKQotICAgICAgICB7Ci0gICAgICAgICAgICBtU2V0cy5wdXNoU2V0KCk7Ci0gICAg
ICAgIH0KLSAgICAgICAgflROb2RlU2V0TWFpbnRhaW5lcigpIHsgbVNldHMucG9wU2V0KCk7IH0K
LSAgICAgIHByb3RlY3RlZDoKLSAgICAgICAgVE5vZGVTZXRTdGFjayAmbVNldHM7Ci0gICAgfTsK
LQotICAgIC8vCi0gICAgLy8gQW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyBwdXNoZXMgYSBuZXcg
bm9kZSBzZXQgd2hlbiBpbnN0YW50aWF0ZWQuCi0gICAgLy8gV2hlbiB0aGUgaW5zdGFuY2UgZ29l
cyBvdXQgb2Ygc2NvcGUsIGl0IGFuZCBwb3BzIHRoZSB0b3Agbm9kZSBzZXQgYW5kIGFkZHMKLSAg
ICAvLyBpdHMgY29udGVudHMgdG8gdGhlIG5ldyB0b3Agbm9kZSBzZXQuCi0gICAgLy8KLSAgICBj
bGFzcyBUTm9kZVNldFByb3BhZ2F0aW5nTWFpbnRhaW5lciA6IGFuZ2xlOjpOb25Db3B5YWJsZQot
ICAgIHsKLSAgICAgIHB1YmxpYzoKLSAgICAgICAgVE5vZGVTZXRQcm9wYWdhdGluZ01haW50YWlu
ZXIoVERlcGVuZGVuY3lHcmFwaEJ1aWxkZXIgKmZhY3RvcnkpCi0gICAgICAgICAgICA6IG1TZXRz
KGZhY3RvcnktPm1Ob2RlU2V0cykKLSAgICAgICAgewotICAgICAgICAgICAgbVNldHMucHVzaFNl
dCgpOwotICAgICAgICB9Ci0gICAgICAgIH5UTm9kZVNldFByb3BhZ2F0aW5nTWFpbnRhaW5lcigp
IHsgbVNldHMucG9wU2V0SW50b05leHQoKTsgfQotICAgICAgcHJvdGVjdGVkOgotICAgICAgICBU
Tm9kZVNldFN0YWNrICZtU2V0czsKLSAgICB9OwotCi0gICAgLy8KLSAgICAvLyBBbiBpbnN0YW5j
ZSBvZiB0aGlzIGNsYXNzIGtlZXBzIHRyYWNrIG9mIHRoZSBsZWZ0bW9zdCBzeW1ib2wgd2hpbGUg
d2UncmUKLSAgICAvLyBleHBsb3JpbmcgYW4gYXNzaWdubWVudC4KLSAgICAvLyBJdCB3aWxsIHB1
c2ggdGhlIHBsYWNlaG9sZGVyIHN5bWJvbCBrTGVmdFN1YnRyZWUgd2hlbiBpbnN0YW50aWF0ZWQg
dW5kZXIgYQotICAgIC8vIGxlZnQgc3VidHJlZSwgYW5kIGtSaWdodFN1YnRyZWUgdW5kZXIgYSBy
aWdodCBzdWJ0cmVlLgotICAgIC8vIFdoZW4gaXQgZ29lcyBvdXQgb2Ygc2NvcGUsIGl0IHdpbGwg
cG9wIHRoZSBsZWZ0bW9zdCBzeW1ib2wgYXQgdGhlIHRvcCBvZiB0aGUKLSAgICAvLyBzY29wZS4K
LSAgICAvLyBEdXJpbmcgdHJhdmVyc2FsLCB0aGUgVERlcGVuZGVuY3lHcmFwaEJ1aWxkZXIgd2ls
bCByZXBsYWNlIGtMZWZ0U3VidHJlZSB3aXRoCi0gICAgLy8gYSByZWFsIHN5bWJvbC4KLSAgICAv
LyBrUmlnaHRTdWJ0cmVlIHdpbGwgbmV2ZXIgYmUgcmVwbGFjZWQgYnkgYSByZWFsIHN5bWJvbCBi
ZWNhdXNlIHdlIGFyZSB0cmFja2luZwotICAgIC8vIHRoZSBsZWZ0bW9zdCBzeW1ib2wuCi0gICAg
Ly8KLSAgICBjbGFzcyBUTGVmdG1vc3RTeW1ib2xNYWludGFpbmVyIDogYW5nbGU6Ok5vbkNvcHlh
YmxlCi0gICAgewotICAgICAgcHVibGljOgotICAgICAgICBUTGVmdG1vc3RTeW1ib2xNYWludGFp
bmVyKAotICAgICAgICAgICAgVERlcGVuZGVuY3lHcmFwaEJ1aWxkZXIgKmZhY3RvcnksIFRHcmFw
aFN5bWJvbCAmc3VidHJlZSkKLSAgICAgICAgICAgIDogbUxlZnRtb3N0U3ltYm9scyhmYWN0b3J5
LT5tTGVmdG1vc3RTeW1ib2xzKQotICAgICAgICB7Ci0gICAgICAgICAgICBtTmVlZHNQbGFjZWhv
bGRlclN5bWJvbCA9Ci0gICAgICAgICAgICAgICAgbUxlZnRtb3N0U3ltYm9scy5lbXB0eSgpIHx8
IG1MZWZ0bW9zdFN5bWJvbHMudG9wKCkgIT0gJnN1YnRyZWU7Ci0gICAgICAgICAgICBpZiAobU5l
ZWRzUGxhY2Vob2xkZXJTeW1ib2wpCi0gICAgICAgICAgICAgICAgbUxlZnRtb3N0U3ltYm9scy5w
dXNoKCZzdWJ0cmVlKTsKLSAgICAgICAgfQotCi0gICAgICAgIH5UTGVmdG1vc3RTeW1ib2xNYWlu
dGFpbmVyKCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1OZWVkc1BsYWNlaG9sZGVyU3lt
Ym9sKQotICAgICAgICAgICAgICAgIG1MZWZ0bW9zdFN5bWJvbHMucG9wKCk7Ci0gICAgICAgIH0K
LQotICAgICAgcHJvdGVjdGVkOgotICAgICAgICBUU3ltYm9sU3RhY2smIG1MZWZ0bW9zdFN5bWJv
bHM7Ci0gICAgICAgIGJvb2wgbU5lZWRzUGxhY2Vob2xkZXJTeW1ib2w7Ci0gICAgfTsKLQotICAg
IFREZXBlbmRlbmN5R3JhcGhCdWlsZGVyKFREZXBlbmRlbmN5R3JhcGggKmdyYXBoKQotICAgICAg
ICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKSwKLSAgICAgICAgICBtTGVm
dFN1YnRyZWUoTlVMTCksCi0gICAgICAgICAgbVJpZ2h0U3VidHJlZShOVUxMKSwKLSAgICAgICAg
ICBtR3JhcGgoZ3JhcGgpIHt9Ci0gICAgdm9pZCBidWlsZChUSW50ZXJtTm9kZSAqaW50ZXJtTm9k
ZSkgeyBpbnRlcm1Ob2RlLT50cmF2ZXJzZSh0aGlzKTsgfQotCi0gICAgdm9pZCBjb25uZWN0TXVs
dGlwbGVOb2Rlc1RvU2luZ2xlTm9kZSgKLSAgICAgICAgVFBhcmVudE5vZGVTZXQgKm5vZGVzLCBU
R3JhcGhOb2RlICpub2RlKSBjb25zdDsKLQotICAgIHZvaWQgdmlzaXRBc3NpZ25tZW50KFRJbnRl
cm1CaW5hcnkgKik7Ci0gICAgdm9pZCB2aXNpdExvZ2ljYWxPcChUSW50ZXJtQmluYXJ5ICopOwot
ICAgIHZvaWQgdmlzaXRCaW5hcnlDaGlsZHJlbihUSW50ZXJtQmluYXJ5ICopOwotICAgIHZvaWQg
dmlzaXRGdW5jdGlvbkRlZmluaXRpb24oVEludGVybUFnZ3JlZ2F0ZSAqKTsKLSAgICB2b2lkIHZp
c2l0RnVuY3Rpb25DYWxsKFRJbnRlcm1BZ2dyZWdhdGUgKmludGVybUZ1bmN0aW9uQ2FsbCk7Ci0g
ICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZUNoaWxkcmVuKFRJbnRlcm1BZ2dyZWdhdGUgKik7Ci0KLSAg
ICBUR3JhcGhTeW1ib2wgbUxlZnRTdWJ0cmVlOwotICAgIFRHcmFwaFN5bWJvbCBtUmlnaHRTdWJ0
cmVlOwotCi0gICAgVERlcGVuZGVuY3lHcmFwaCAqbUdyYXBoOwotICAgIFROb2RlU2V0U3RhY2sg
bU5vZGVTZXRzOwotICAgIFRTeW1ib2xTdGFjayBtTGVmdG1vc3RTeW1ib2xzOwotfTsKLQotI2Vu
ZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX0RFUEdSQVBIX0RFUEVOREVOQ1lHUkFQSEJVSUxE
RVJfSF8KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuaApfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaE91dHB1dC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmNwcAkocmV2aXNpb24gMjA3
ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
ZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDY0
ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9k
ZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhPdXRwdXQuaCIKLQotdm9pZCBURGVwZW5kZW5jeUdyYXBo
T3V0cHV0OjpvdXRwdXRJbmRlbnRhdGlvbigpCi17Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBn
ZXREZXB0aCgpOyArK2kpCi0gICAgICAgIG1TaW5rIDw8ICIgICI7Ci19Ci0KLXZvaWQgVERlcGVu
ZGVuY3lHcmFwaE91dHB1dDo6dmlzaXRBcmd1bWVudChUR3JhcGhBcmd1bWVudCogcGFyYW1ldGVy
KQotewotICAgIG91dHB1dEluZGVudGF0aW9uKCk7Ci0gICAgbVNpbmsgPDwgImFyZ3VtZW50ICIg
PDwgcGFyYW1ldGVyLT5nZXRBcmd1bWVudE51bWJlcigpIDw8ICIgb2YgY2FsbCB0byAiCi0gICAg
ICAgICAgPDwgcGFyYW1ldGVyLT5nZXRJbnRlcm1GdW5jdGlvbkNhbGwoKS0+Z2V0TmFtZSgpIDw8
ICJcbiI7Ci19Ci0KLXZvaWQgVERlcGVuZGVuY3lHcmFwaE91dHB1dDo6dmlzaXRGdW5jdGlvbkNh
bGwoVEdyYXBoRnVuY3Rpb25DYWxsKiBmdW5jdGlvbkNhbGwpCi17Ci0gICAgb3V0cHV0SW5kZW50
YXRpb24oKTsKLSAgICBtU2luayA8PCAiZnVuY3Rpb24gY2FsbCAiIDw8ICBmdW5jdGlvbkNhbGwt
PmdldEludGVybUZ1bmN0aW9uQ2FsbCgpLT5nZXROYW1lKCkgPDwgIlxuIjsKLX0KLQotdm9pZCBU
RGVwZW5kZW5jeUdyYXBoT3V0cHV0Ojp2aXNpdFN5bWJvbChUR3JhcGhTeW1ib2wqIHN5bWJvbCkK
LXsKLSAgICBvdXRwdXRJbmRlbnRhdGlvbigpOwotICAgIG1TaW5rIDw8IHN5bWJvbC0+Z2V0SW50
ZXJtU3ltYm9sKCktPmdldFN5bWJvbCgpIDw8ICIgKHN5bWJvbCBpZDogIgotICAgICAgICAgIDw8
IHN5bWJvbC0+Z2V0SW50ZXJtU3ltYm9sKCktPmdldElkKCkgPDwgIilcbiI7Ci19Ci0KLXZvaWQg
VERlcGVuZGVuY3lHcmFwaE91dHB1dDo6dmlzaXRTZWxlY3Rpb24oVEdyYXBoU2VsZWN0aW9uKiBz
ZWxlY3Rpb24pCi17Ci0gICAgb3V0cHV0SW5kZW50YXRpb24oKTsKLSAgICBtU2luayA8PCAic2Vs
ZWN0aW9uXG4iOwotfQotCi12b2lkIFREZXBlbmRlbmN5R3JhcGhPdXRwdXQ6OnZpc2l0TG9vcChU
R3JhcGhMb29wKiBsb29wKQotewotICAgIG91dHB1dEluZGVudGF0aW9uKCk7Ci0gICAgbVNpbmsg
PDwgImxvb3AgY29uZGl0aW9uXG4iOwotfQotCi12b2lkIFREZXBlbmRlbmN5R3JhcGhPdXRwdXQ6
OnZpc2l0TG9naWNhbE9wKFRHcmFwaExvZ2ljYWxPcCogbG9naWNhbE9wKQotewotICAgIG91dHB1
dEluZGVudGF0aW9uKCk7Ci0gICAgbVNpbmsgPDwgImxvZ2ljYWwgIiA8PCBsb2dpY2FsT3AtPmdl
dE9wU3RyaW5nKCkgPDwgIlxuIjsKLX0KLQotdm9pZCBURGVwZW5kZW5jeUdyYXBoT3V0cHV0Ojpv
dXRwdXRBbGxTcGFubmluZ1RyZWVzKFREZXBlbmRlbmN5R3JhcGgmIGdyYXBoKQotewotICAgIG1T
aW5rIDw8ICJcbiI7Ci0KLSAgICBmb3IgKGF1dG8gc3ltYm9sIDogZ3JhcGguYWxsTm9kZXMoKSkK
LSAgICB7Ci0gICAgICAgIG1TaW5rIDw8ICItLS0gRGVwZW5kZW5jeSBncmFwaCBzcGFubmluZyB0
cmVlIC0tLVxuIjsKLSAgICAgICAgY2xlYXJWaXNpdGVkKCk7Ci0gICAgICAgIHN5bWJvbC0+dHJh
dmVyc2UodGhpcyk7Ci0gICAgICAgIG1TaW5rIDw8ICJcbiI7Ci0gICAgfQotfQoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmNwcApfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6
IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaE91dHB1dC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBo
L0RlcGVuZGVuY3lHcmFwaE91dHB1dC5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9kZXBncmFwaC9EZXBlbmRlbmN5
R3JhcGhPdXRwdXQuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDMxICswLDAgQEAKLS8vCi0vLyBDb3B5
cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0v
LwotCi0jaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFUT1JfREVQR1JBUEhfREVQRU5ERU5DWUdSQVBI
T1VUUFVUX0hfCi0jZGVmaW5lIENPTVBJTEVSX1RSQU5TTEFUT1JfREVQR1JBUEhfREVQRU5ERU5D
WUdSQVBIT1VUUFVUX0hfCi0KLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBo
L0RlcGVuZGVuY3lHcmFwaC5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW5mb1Np
bmsuaCIKLQotY2xhc3MgVERlcGVuZGVuY3lHcmFwaE91dHB1dCA6IHB1YmxpYyBURGVwZW5kZW5j
eUdyYXBoVHJhdmVyc2VyCi17Ci0gIHB1YmxpYzoKLSAgICBURGVwZW5kZW5jeUdyYXBoT3V0cHV0
KFRJbmZvU2lua0Jhc2UmIHNpbmspIDogbVNpbmsoc2luaykge30KLSAgICB2b2lkIHZpc2l0U3lt
Ym9sKFRHcmFwaFN5bWJvbCogc3ltYm9sKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0QXJndW1l
bnQoVEdyYXBoQXJndW1lbnQqIHBhcmFtZXRlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdEZ1
bmN0aW9uQ2FsbChUR3JhcGhGdW5jdGlvbkNhbGwqIGZ1bmN0aW9uQ2FsbCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB2aXNpdFNlbGVjdGlvbihUR3JhcGhTZWxlY3Rpb24qIHNlbGVjdGlvbikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB2aXNpdExvb3AoVEdyYXBoTG9vcCogbG9vcCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB2aXNpdExvZ2ljYWxPcChUR3JhcGhMb2dpY2FsT3AqIGxvZ2ljYWxPcCkgb3ZlcnJpZGU7
Ci0KLSAgICB2b2lkIG91dHB1dEFsbFNwYW5uaW5nVHJlZXMoVERlcGVuZGVuY3lHcmFwaCYgZ3Jh
cGgpOwotICBwcml2YXRlOgotICAgIHZvaWQgb3V0cHV0SW5kZW50YXRpb24oKTsKLQotICAgIFRJ
bmZvU2lua0Jhc2UmIG1TaW5rOwotfTsKLQotI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9S
X0RFUEdSQVBIX0RFUEVOREVOQ1lHUkFQSE9VVFBVVF9IXwoKUHJvcGVydHkgY2hhbmdlcyBvbjog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgv
RGVwZW5kZW5jeUdyYXBoT3V0cHV0LmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxl
CiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9kZXBn
cmFwaC9EZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5j
eUdyYXBoVHJhdmVyc2UuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhU
cmF2ZXJzZS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw2OSArMCwwIEBACi0vLwotLy8gQ29weXJp
Z2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8K
LQotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBo
LmgiCi0KLS8vIFRoZXNlIG1ldGhvZHMgZG8gYSBicmVhZHRoLWZpcnN0IHRyYXZlcnNhbCB0aHJv
dWdoIHRoZSBncmFwaCBhbmQgbWFyayB2aXNpdGVkIG5vZGVzLgotCi12b2lkIFRHcmFwaE5vZGU6
OnRyYXZlcnNlKFREZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZXIqIGdyYXBoVHJhdmVyc2VyKQotewot
ICAgIGdyYXBoVHJhdmVyc2VyLT5tYXJrVmlzaXRlZCh0aGlzKTsKLX0KLQotdm9pZCBUR3JhcGhQ
YXJlbnROb2RlOjp0cmF2ZXJzZShURGVwZW5kZW5jeUdyYXBoVHJhdmVyc2VyKiBncmFwaFRyYXZl
cnNlcikKLXsKLSAgICBUR3JhcGhOb2RlOjp0cmF2ZXJzZShncmFwaFRyYXZlcnNlcik7Ci0KLSAg
ICBncmFwaFRyYXZlcnNlci0+aW5jcmVtZW50RGVwdGgoKTsKLQotICAgIC8vIFZpc2l0IHRoZSBw
YXJlbnQgbm9kZSdzIGNoaWxkcmVuLgotICAgIGZvciAoVEdyYXBoTm9kZVNldDo6Y29uc3RfaXRl
cmF0b3IgaXRlciA9IG1EZXBlbmRlbnROb2Rlcy5iZWdpbigpOwotICAgICAgICAgaXRlciAhPSBt
RGVwZW5kZW50Tm9kZXMuZW5kKCk7Ci0gICAgICAgICArK2l0ZXIpCi0gICAgewotICAgICAgICBU
R3JhcGhOb2RlKiBub2RlID0gKml0ZXI7Ci0gICAgICAgIGlmICghZ3JhcGhUcmF2ZXJzZXItPmlz
VmlzaXRlZChub2RlKSkKLSAgICAgICAgICAgIG5vZGUtPnRyYXZlcnNlKGdyYXBoVHJhdmVyc2Vy
KTsKLSAgICB9Ci0KLSAgICBncmFwaFRyYXZlcnNlci0+ZGVjcmVtZW50RGVwdGgoKTsKLX0KLQot
dm9pZCBUR3JhcGhBcmd1bWVudDo6dHJhdmVyc2UoVERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlciog
Z3JhcGhUcmF2ZXJzZXIpCi17Ci0gICAgZ3JhcGhUcmF2ZXJzZXItPnZpc2l0QXJndW1lbnQodGhp
cyk7Ci0gICAgVEdyYXBoUGFyZW50Tm9kZTo6dHJhdmVyc2UoZ3JhcGhUcmF2ZXJzZXIpOwotfQot
Ci12b2lkIFRHcmFwaEZ1bmN0aW9uQ2FsbDo6dHJhdmVyc2UoVERlcGVuZGVuY3lHcmFwaFRyYXZl
cnNlciogZ3JhcGhUcmF2ZXJzZXIpCi17Ci0gICAgZ3JhcGhUcmF2ZXJzZXItPnZpc2l0RnVuY3Rp
b25DYWxsKHRoaXMpOwotICAgIFRHcmFwaFBhcmVudE5vZGU6OnRyYXZlcnNlKGdyYXBoVHJhdmVy
c2VyKTsKLX0KLQotdm9pZCBUR3JhcGhTeW1ib2w6OnRyYXZlcnNlKFREZXBlbmRlbmN5R3JhcGhU
cmF2ZXJzZXIqIGdyYXBoVHJhdmVyc2VyKQotewotICAgIGdyYXBoVHJhdmVyc2VyLT52aXNpdFN5
bWJvbCh0aGlzKTsKLSAgICBUR3JhcGhQYXJlbnROb2RlOjp0cmF2ZXJzZShncmFwaFRyYXZlcnNl
cik7Ci19Ci0KLXZvaWQgVEdyYXBoU2VsZWN0aW9uOjp0cmF2ZXJzZShURGVwZW5kZW5jeUdyYXBo
VHJhdmVyc2VyKiBncmFwaFRyYXZlcnNlcikKLXsKLSAgICBncmFwaFRyYXZlcnNlci0+dmlzaXRT
ZWxlY3Rpb24odGhpcyk7Ci0gICAgVEdyYXBoTm9kZTo6dHJhdmVyc2UoZ3JhcGhUcmF2ZXJzZXIp
OwotfQotCi12b2lkIFRHcmFwaExvb3A6OnRyYXZlcnNlKFREZXBlbmRlbmN5R3JhcGhUcmF2ZXJz
ZXIqIGdyYXBoVHJhdmVyc2VyKQotewotICAgIGdyYXBoVHJhdmVyc2VyLT52aXNpdExvb3AodGhp
cyk7Ci0gICAgVEdyYXBoTm9kZTo6dHJhdmVyc2UoZ3JhcGhUcmF2ZXJzZXIpOwotfQotCi12b2lk
IFRHcmFwaExvZ2ljYWxPcDo6dHJhdmVyc2UoVERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlciogZ3Jh
cGhUcmF2ZXJzZXIpCi17Ci0gICAgZ3JhcGhUcmF2ZXJzZXItPnZpc2l0TG9naWNhbE9wKHRoaXMp
OwotICAgIFRHcmFwaE5vZGU6OnRyYXZlcnNlKGdyYXBoVHJhdmVyc2VyKTsKLX0KClByb3BlcnR5
IGNoYW5nZXMgb246IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaFRyYXZlcnNlLmNwcApfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0
ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL3RpbWluZy9SZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci90aW1pbmcvUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZy5jcHAJKHJldmlzaW9uIDIwNzgw
NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3Rp
bWluZy9SZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0x
LDEzMCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0
b3IvSW5mb1NpbmsuaCIKLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1BhcnNlQ29udGV4
dC5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdy
YXBoT3V0cHV0LmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci90aW1pbmcvUmVzdHJp
Y3RGcmFnbWVudFNoYWRlclRpbWluZy5oIgotCi1SZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5n
OjpSZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nKFRJbmZvU2lua0Jhc2UmIHNpbmspCi0gICAg
OiBtU2luayhzaW5rKQotICAgICwgbU51bUVycm9ycygwKQotewotICAgIC8vIFNhbXBsaW5nIG9w
cyBmb3VuZCBvbmx5IGluIGZyYWdtZW50IHNoYWRlcnMuCi0gICAgbVNhbXBsaW5nT3BzLmluc2Vy
dCgidGV4dHVyZTJEKHMyMTt2ZjI7ZjE7Iik7Ci0gICAgbVNhbXBsaW5nT3BzLmluc2VydCgidGV4
dHVyZTJEUHJvaihzMjE7dmYzO2YxOyIpOwotICAgIG1TYW1wbGluZ09wcy5pbnNlcnQoInRleHR1
cmUyRFByb2ooczIxO3ZmNDtmMTsiKTsKLSAgICBtU2FtcGxpbmdPcHMuaW5zZXJ0KCJ0ZXh0dXJl
Q3ViZShzQzE7dmYzO2YxOyIpOwotICAgIC8vIFNhbXBsaW5nIG9wcyBmb3VuZCBpbiBib3RoIHZl
cnRleCBhbmQgZnJhZ21lbnQgc2hhZGVycy4KLSAgICBtU2FtcGxpbmdPcHMuaW5zZXJ0KCJ0ZXh0
dXJlMkQoczIxO3ZmMjsiKTsKLSAgICBtU2FtcGxpbmdPcHMuaW5zZXJ0KCJ0ZXh0dXJlMkRQcm9q
KHMyMTt2ZjM7Iik7Ci0gICAgbVNhbXBsaW5nT3BzLmluc2VydCgidGV4dHVyZTJEUHJvaihzMjE7
dmY0OyIpOwotICAgIG1TYW1wbGluZ09wcy5pbnNlcnQoInRleHR1cmVDdWJlKHNDMTt2ZjM7Iik7
Ci0gICAgLy8gU2FtcGxpbmcgb3BzIHByb3ZpZGVkIGJ5IE9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwu
Ci0gICAgbVNhbXBsaW5nT3BzLmluc2VydCgidGV4dHVyZTJEKDE7dmYyOyIpOwotICAgIG1TYW1w
bGluZ09wcy5pbnNlcnQoInRleHR1cmUyRFByb2ooMTt2ZjM7Iik7Ci0gICAgbVNhbXBsaW5nT3Bz
Lmluc2VydCgidGV4dHVyZTJEUHJvaigxO3ZmNDsiKTsKLSAgICAvLyBTYW1wbGluZyBvcHMgcHJv
dmlkZWQgYnkgQVJCX3RleHR1cmVfcmVjdGFuZ2xlLgotICAgIG1TYW1wbGluZ09wcy5pbnNlcnQo
InRleHR1cmUyRFJlY3QoMTt2ZjI7Iik7Ci0gICAgbVNhbXBsaW5nT3BzLmluc2VydCgidGV4dHVy
ZTJEUmVjdFByb2ooMTt2ZjM7Iik7Ci0gICAgbVNhbXBsaW5nT3BzLmluc2VydCgidGV4dHVyZTJE
UmVjdFByb2ooMTt2ZjQ7Iik7Ci0gICAgLy8gU2FtcGxpbmcgb3BzIHByb3ZpZGVkIGJ5IEVYVF9z
aGFkZXJfdGV4dHVyZV9sb2QuCi0gICAgbVNhbXBsaW5nT3BzLmluc2VydCgidGV4dHVyZTJETG9k
RVhUKDE7dmYyO2YxOyIpOwotICAgIG1TYW1wbGluZ09wcy5pbnNlcnQoInRleHR1cmUyRFByb2pM
b2RFWFQoMTt2ZjM7ZjE7Iik7Ci0gICAgbVNhbXBsaW5nT3BzLmluc2VydCgidGV4dHVyZTJEUHJv
akxvZEVYVCgxO3ZmNDtmMTsiKTsKLSAgICBtU2FtcGxpbmdPcHMuaW5zZXJ0KCJ0ZXh0dXJlQ3Vi
ZUxvZEVYVCgxO3ZmNDtmMTsiKTsKLSAgICBtU2FtcGxpbmdPcHMuaW5zZXJ0KCJ0ZXh0dXJlMkRH
cmFkRVhUKDE7dmYyO3ZmMjt2ZjI7Iik7Ci0gICAgbVNhbXBsaW5nT3BzLmluc2VydCgidGV4dHVy
ZTJEUHJvakdyYWRFWFQoMTt2ZjM7dmYyO3ZmMjsiKTsKLSAgICBtU2FtcGxpbmdPcHMuaW5zZXJ0
KCJ0ZXh0dXJlMkRQcm9qR3JhZEVYVCgxO3ZmNDt2ZjI7dmYyOyIpOwotICAgIG1TYW1wbGluZ09w
cy5pbnNlcnQoInRleHR1cmVDdWJlR3JhZEVYVCgxO3ZmMzt2ZjM7dmYzOyIpOwotfQotCi0vLyBG
SVhNRShtdnVqb3ZpYyk6IFdlIGRvIG5vdCBrbm93IGlmIHRoZSBleGVjdXRpb24gdGltZSBvZiBi
dWlsdC1pbiBvcGVyYXRpb25zIGxpa2Ugc2luLCBwb3csIGV0Yy4KLS8vIGNhbiB2YXJ5IGJhc2Vk
IG9uIHRoZSB2YWx1ZSBvZiB0aGUgaW5wdXQgYXJndW1lbnRzLiBJZiBzbywgd2Ugc2hvdWxkIHJl
c3RyaWN0IHRob3NlIGFzIHdlbGwuCi12b2lkIFJlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmc6
OmVuZm9yY2VSZXN0cmljdGlvbnMoY29uc3QgVERlcGVuZGVuY3lHcmFwaCYgZ3JhcGgpCi17Ci0g
ICAgbU51bUVycm9ycyA9IDA7Ci0KLSAgICAvLyBGSVhNRShtdnVqb3ZpYyk6IFRoZSBkZXBlbmRl
bmN5IGdyYXBoIGRvZXMgbm90IHN1cHBvcnQgdXNlciBkZWZpbmVkIGZ1bmN0aW9uIGNhbGxzIHJp
Z2h0IG5vdywKLSAgICAvLyBzbyB3ZSBnZW5lcmF0ZSBlcnJvcnMgZm9yIHRoZW0uCi0gICAgdmFs
aWRhdGVVc2VyRGVmaW5lZEZ1bmN0aW9uQ2FsbFVzYWdlKGdyYXBoKTsKLQotICAgIC8vIFN0YXJ0
aW5nIGZyb20gZWFjaCBzYW1wbGVyLCB0cmF2ZXJzZSB0aGUgZGVwZW5kZW5jeSBncmFwaCBhbmQg
Z2VuZXJhdGUgYW4gZXJyb3IgZWFjaCB0aW1lIHdlCi0gICAgLy8gaGl0IGEgbm9kZSB3aGVyZSBz
YW1wbGVyIGRlcGVuZGVudCB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkLgotICAgIGZvciAoYXV0byBz
YW1wbGVyU3ltYm9sIDogZ3JhcGguc2FtcGxlclN5bWJvbHMoKSkKLSAgICB7Ci0gICAgICAgIGNs
ZWFyVmlzaXRlZCgpOwotICAgICAgICBzYW1wbGVyU3ltYm9sLT50cmF2ZXJzZSh0aGlzKTsKLSAg
ICB9Ci19Ci0KLXZvaWQgUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZzo6dmFsaWRhdGVVc2Vy
RGVmaW5lZEZ1bmN0aW9uQ2FsbFVzYWdlKGNvbnN0IFREZXBlbmRlbmN5R3JhcGgmIGdyYXBoKQot
ewotICAgIGZvciAoY29uc3QgYXV0byogZnVuY3Rpb25DYWxsIDogZ3JhcGgudXNlckRlZmluZWRG
dW5jdGlvbkNhbGxzKCkpCi0gICAgewotICAgICAgICBiZWdpbkVycm9yKGZ1bmN0aW9uQ2FsbC0+
Z2V0SW50ZXJtRnVuY3Rpb25DYWxsKCkpOwotICAgICAgICBtU2luayA8PCAiQSBjYWxsIHRvIGEg
dXNlciBkZWZpbmVkIGZ1bmN0aW9uIGlzIG5vdCBwZXJtaXR0ZWQuXG4iOwotICAgIH0KLX0KLQot
dm9pZCBSZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nOjpiZWdpbkVycm9yKGNvbnN0IFRJbnRl
cm1Ob2RlKiBub2RlKQotewotICAgICsrbU51bUVycm9yczsKLSAgICBtU2luay5wcmVmaXgoRVBy
ZWZpeEVycm9yKTsKLSAgICBtU2luay5sb2NhdGlvbihub2RlLT5nZXRMaW5lKCkpOwotfQotCi1i
b29sIFJlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmc6OmlzU2FtcGxpbmdPcChjb25zdCBUSW50
ZXJtQWdncmVnYXRlKiBpbnRlcm1GdW5jdGlvbkNhbGwpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFp
bnRlcm1GdW5jdGlvbkNhbGwtPmlzVXNlckRlZmluZWQoKSAmJgotICAgICAgICAgICBtU2FtcGxp
bmdPcHMuZmluZChpbnRlcm1GdW5jdGlvbkNhbGwtPmdldE5hbWUoKSkgIT0gbVNhbXBsaW5nT3Bz
LmVuZCgpOwotfQotCi12b2lkIFJlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmc6OnZpc2l0QXJn
dW1lbnQoVEdyYXBoQXJndW1lbnQqIHBhcmFtZXRlcikKLXsKLSAgICAvLyBUZXh0dXJlIGNhY2hl
IGFjY2VzcyB0aW1lIG1pZ2h0IGxlYWsgc2Vuc2l0aXZlIGluZm9ybWF0aW9uLgotICAgIC8vIFRo
dXMsIHdlIHJlc3RyaWN0IHNhbXBsZXIgZGVwZW5kZW50IHZhbHVlcyBmcm9tIGFmZmVjdGluZyB0
aGUgY29vcmRpbmF0ZSBvciBMT0QgYmlhcyBvZiBhCi0gICAgLy8gc2FtcGxpbmcgb3BlcmF0aW9u
LgotICAgIGlmIChpc1NhbXBsaW5nT3AocGFyYW1ldGVyLT5nZXRJbnRlcm1GdW5jdGlvbkNhbGwo
KSkpIHsKLSAgICAgICAgc3dpdGNoIChwYXJhbWV0ZXItPmdldEFyZ3VtZW50TnVtYmVyKCkpIHsK
LSAgICAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgICAgICAvLyBTZWNvbmQgYXJndW1lbnQg
KGNvb3JkKQotICAgICAgICAgICAgICAgIGJlZ2luRXJyb3IocGFyYW1ldGVyLT5nZXRJbnRlcm1G
dW5jdGlvbkNhbGwoKSk7Ci0gICAgICAgICAgICAgICAgbVNpbmsgPDwgIkFuIGV4cHJlc3Npb24g
ZGVwZW5kZW50IG9uIGEgc2FtcGxlciBpcyBub3QgcGVybWl0dGVkIHRvIGJlIHRoZSIKLSAgICAg
ICAgICAgICAgICAgICAgICA8PCAiIGNvb3JkaW5hdGUgYXJndW1lbnQgb2YgYSBzYW1wbGluZyBv
cGVyYXRpb24uXG4iOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAy
OgotICAgICAgICAgICAgICAgIC8vIFRoaXJkIGFyZ3VtZW50IChiaWFzKQotICAgICAgICAgICAg
ICAgIGJlZ2luRXJyb3IocGFyYW1ldGVyLT5nZXRJbnRlcm1GdW5jdGlvbkNhbGwoKSk7Ci0gICAg
ICAgICAgICAgICAgbVNpbmsgPDwgIkFuIGV4cHJlc3Npb24gZGVwZW5kZW50IG9uIGEgc2FtcGxl
ciBpcyBub3QgcGVybWl0dGVkIHRvIGJlIHRoZSIKLSAgICAgICAgICAgICAgICAgICAgICA8PCAi
IGJpYXMgYXJndW1lbnQgb2YgYSBzYW1wbGluZyBvcGVyYXRpb24uXG4iOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAvLyBGaXJz
dCBhcmd1bWVudCAoc2FtcGxlcikKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgIH0KLX0KLQotdm9pZCBSZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nOjp2aXNpdFNlbGVj
dGlvbihUR3JhcGhTZWxlY3Rpb24qIHNlbGVjdGlvbikKLXsKLSAgICBiZWdpbkVycm9yKHNlbGVj
dGlvbi0+Z2V0SW50ZXJtU2VsZWN0aW9uKCkpOwotICAgIG1TaW5rIDw8ICJBbiBleHByZXNzaW9u
IGRlcGVuZGVudCBvbiBhIHNhbXBsZXIgaXMgbm90IHBlcm1pdHRlZCBpbiBhIGNvbmRpdGlvbmFs
IHN0YXRlbWVudC5cbiI7Ci19Ci0KLXZvaWQgUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZzo6
dmlzaXRMb29wKFRHcmFwaExvb3AqIGxvb3ApCi17Ci0gICAgYmVnaW5FcnJvcihsb29wLT5nZXRJ
bnRlcm1Mb29wKCkpOwotICAgIG1TaW5rIDw8ICJBbiBleHByZXNzaW9uIGRlcGVuZGVudCBvbiBh
IHNhbXBsZXIgaXMgbm90IHBlcm1pdHRlZCBpbiBhIGxvb3AgY29uZGl0aW9uLlxuIjsKLX0KLQot
dm9pZCBSZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nOjp2aXNpdExvZ2ljYWxPcChUR3JhcGhM
b2dpY2FsT3AqIGxvZ2ljYWxPcCkKLXsKLSAgICBiZWdpbkVycm9yKGxvZ2ljYWxPcC0+Z2V0SW50
ZXJtTG9naWNhbE9wKCkpOwotICAgIG1TaW5rIDw8ICJBbiBleHByZXNzaW9uIGRlcGVuZGVudCBv
biBhIHNhbXBsZXIgaXMgbm90IHBlcm1pdHRlZCBvbiB0aGUgbGVmdCBoYW5kIHNpZGUgb2YgYSBs
b2dpY2FsICIKLSAgICAgICAgICA8PCBsb2dpY2FsT3AtPmdldE9wU3RyaW5nKCkKLSAgICAgICAg
ICA8PCAiIG9wZXJhdG9yLlxuIjsKLX0KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3RpbWluZy9SZXN0cmljdEZyYWdt
ZW50U2hhZGVyVGltaW5nLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMg
LTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3RpbWluZy9S
ZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdGltaW5nL1Jlc3RyaWN0RnJhZ21l
bnRTaGFkZXJUaW1pbmcuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdGltaW5nL1Jlc3RyaWN0RnJhZ21lbnRTaGFk
ZXJUaW1pbmcuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDM5ICswLDAgQEAKLS8vCi0vLyBDb3B5cmln
aHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwot
Ci0jaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFUT1JfVElNSU5HX1JFU1RSSUNURlJBR01FTlRTSEFE
RVJUSU1JTkdfSF8KLSNkZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9USU1JTkdfUkVTVFJJQ1RG
UkFHTUVOVFNIQURFUlRJTUlOR19IXwotCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9J
bnRlcm1Ob2RlLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9kZXBncmFwaC9EZXBl
bmRlbmN5R3JhcGguaCIKLQotY2xhc3MgVEluZm9TaW5rQmFzZTsKLQotY2xhc3MgUmVzdHJpY3RG
cmFnbWVudFNoYWRlclRpbWluZyA6IFREZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZXIKLXsKLSAgcHVi
bGljOgotICAgIFJlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmcoVEluZm9TaW5rQmFzZSAmc2lu
ayk7Ci0gICAgdm9pZCBlbmZvcmNlUmVzdHJpY3Rpb25zKGNvbnN0IFREZXBlbmRlbmN5R3JhcGgg
JmdyYXBoKTsKLSAgICBpbnQgbnVtRXJyb3JzKCkgY29uc3QgeyByZXR1cm4gbU51bUVycm9yczsg
fQotCi0gICAgdm9pZCB2aXNpdEFyZ3VtZW50KFRHcmFwaEFyZ3VtZW50ICpwYXJhbWV0ZXIpIG92
ZXJyaWRlOwotICAgIHZvaWQgdmlzaXRTZWxlY3Rpb24oVEdyYXBoU2VsZWN0aW9uICpzZWxlY3Rp
b24pIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXRMb29wKFRHcmFwaExvb3AgKmxvb3ApIG92ZXJy
aWRlOwotICAgIHZvaWQgdmlzaXRMb2dpY2FsT3AoVEdyYXBoTG9naWNhbE9wICpsb2dpY2FsT3Ap
IG92ZXJyaWRlOwotCi0gIHByaXZhdGU6Ci0gICAgdm9pZCBiZWdpbkVycm9yKGNvbnN0IFRJbnRl
cm1Ob2RlICpub2RlKTsKLSAgICB2b2lkIHZhbGlkYXRlVXNlckRlZmluZWRGdW5jdGlvbkNhbGxV
c2FnZShjb25zdCBURGVwZW5kZW5jeUdyYXBoICZncmFwaCk7Ci0gICAgYm9vbCBpc1NhbXBsaW5n
T3AoY29uc3QgVEludGVybUFnZ3JlZ2F0ZSAqaW50ZXJtRnVuY3Rpb25DYWxsKSBjb25zdDsKLQot
ICAgIFRJbmZvU2lua0Jhc2UgJm1TaW5rOwotICAgIGludCBtTnVtRXJyb3JzOwotCi0gICAgdHlw
ZWRlZiBzdGQ6OnNldDxUU3RyaW5nPiBTdHJpbmdTZXQ7Ci0gICAgU3RyaW5nU2V0IG1TYW1wbGlu
Z09wczsKLX07Ci0KLSNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9USU1JTkdfUkVTVFJJ
Q1RGUkFHTUVOVFNIQURFUlRJTUlOR19IXwoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdGltaW5nL1Jlc3RyaWN0RnJh
Z21lbnRTaGFkZXJUaW1pbmcuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMg
LTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3RpbWluZy9S
ZXN0cmljdFZlcnRleFNoYWRlclRpbWluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdGltaW5nL1Jlc3RyaWN0VmVydGV4
U2hhZGVyVGltaW5nLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdGltaW5nL1Jlc3RyaWN0VmVydGV4U2hhZGVy
VGltaW5nLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDE3ICswLDAgQEAKLS8vCi0vLyBDb3B5cmln
aHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwot
Ci0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci90aW1pbmcvUmVzdHJpY3RWZXJ0ZXhTaGFk
ZXJUaW1pbmcuaCIKLQotdm9pZCBSZXN0cmljdFZlcnRleFNoYWRlclRpbWluZzo6dmlzaXRTeW1i
b2woVEludGVybVN5bWJvbCogbm9kZSkKLXsKLSAgICBpZiAoSXNTYW1wbGVyKG5vZGUtPmdldEJh
c2ljVHlwZSgpKSkgewotICAgICAgICArK21OdW1FcnJvcnM7Ci0gICAgICAgIG1TaW5rLm1lc3Nh
Z2UoRVByZWZpeEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmdldExpbmUoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAiU2FtcGxlcnMgYXJlIG5vdCBwZXJtaXR0ZWQgaW4gdmVy
dGV4IHNoYWRlcnMuXG4iKTsKLSAgICB9Ci19CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci90aW1pbmcvUmVzdHJpY3RW
ZXJ0ZXhTaGFkZXJUaW1pbmcuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQoj
IyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdGltaW5n
L1Jlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdGltaW5nL1Jlc3RyaWN0VmVydGV4
U2hhZGVyVGltaW5nLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3RpbWluZy9SZXN0cmljdFZlcnRleFNoYWRlclRp
bWluZy5oCShub25leGlzdGVudCkKQEAgLTEsMzIgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAo
YykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNp
Zm5kZWYgQ09NUElMRVJfVFJBTlNMQVRPUl9USU1JTkdfUkVTVFJJQ1RWRVJURVhTSEFERVJUSU1J
TkdfSF8KLSNkZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9USU1JTkdfUkVTVFJJQ1RWRVJURVhT
SEFERVJUSU1JTkdfSF8KLQotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9k
ZS5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW5mb1NpbmsuaCIKLQotY2xhc3Mg
VEluZm9TaW5rQmFzZTsKLQotY2xhc3MgUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcgOiBwdWJs
aWMgVEludGVybVRyYXZlcnNlciB7Ci1wdWJsaWM6Ci0gICAgUmVzdHJpY3RWZXJ0ZXhTaGFkZXJU
aW1pbmcoVEluZm9TaW5rQmFzZSYgc2luaykKLSAgICAgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRy
dWUsIGZhbHNlLCBmYWxzZSkKLSAgICAgICAgLCBtU2luayhzaW5rKQotICAgICAgICAsIG1OdW1F
cnJvcnMoMCkge30KLQotICAgIHZvaWQgZW5mb3JjZVJlc3RyaWN0aW9ucyhUSW50ZXJtTm9kZSog
cm9vdCkgeyByb290LT50cmF2ZXJzZSh0aGlzKTsgfQotICAgIGludCBudW1FcnJvcnMoKSB7IHJl
dHVybiBtTnVtRXJyb3JzOyB9Ci0KLSAgICB2b2lkIHZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wg
Kikgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6Ci0gICAgVEluZm9TaW5rQmFzZSYgbVNpbms7Ci0gICAg
aW50IG1OdW1FcnJvcnM7Ci19OwotCi0jZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfVElN
SU5HX1JFU1RSSUNUVkVSVEVYU0hBREVSVElNSU5HX0hfCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci90aW1pbmcvUmVz
dHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5
bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9pbWFnZV91dGlsL2NvcHlpbWFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2ltYWdlX3V0aWwv
Y29weWltYWdlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvaW1hZ2VfdXRpbC9jb3B5aW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjIg
QEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisvLworCisvLyBjb3B5aW1hZ2UuY3BwOiBEZWZpbmVzIGltYWdlIGNvcHlp
bmcgZnVuY3Rpb25zCisKKyNpbmNsdWRlICJpbWFnZV91dGlsL2NvcHlpbWFnZS5oIgorCituYW1l
c3BhY2UgYW5nbGUKK3sKKwordm9pZCBDb3B5QkdSQThUb1JHQkE4KGNvbnN0IHVpbnQ4X3QgKnNv
dXJjZSwgdWludDhfdCAqZGVzdCkKK3sKKyAgICB1aW50MzJfdCBhcmdiICAgICAgICAgICAgICAg
ICAgICAgICA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90ICo+KHNvdXJjZSk7Cisg
ICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QgKj4oZGVzdCkgPSAoYXJnYiAmIDB4RkYwMEZG
MDApIHwgICAgICAgIC8vIEtlZXAgYWxwaGEgYW5kIGdyZWVuCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoYXJnYiAmIDB4MDBGRjAwMDApID4+IDE2IHwgIC8vIE1v
dmUgcmVkIHRvIGJsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChhcmdiICYgMHgwMDAwMDBGRikgPDwgMTY7ICAgLy8gTW92ZSBibHVlIHRvIHJlZAorfQorCit9
ICAvLyBuYW1lc3BhY2UgYW5nbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9p
bWFnZV91dGlsL2NvcHlpbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9pbWFnZV91dGlsL2NvcHlpbWFnZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9pbWFnZV91dGlsL2NvcHlpbWFnZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMzYgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTMtMjAxNCBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIGNvcHlpbWFnZS5oOiBE
ZWZpbmVzIGltYWdlIGNvcHlpbmcgZnVuY3Rpb25zCisKKyNpZm5kZWYgSU1BR0VVVElMX0NPUFlJ
TUFHRV9IXworI2RlZmluZSBJTUFHRVVUSUxfQ09QWUlNQUdFX0hfCisKKyNpbmNsdWRlICJjb21t
b24vQ29sb3IuaCIKKworI2luY2x1ZGUgImltYWdlX3V0aWwvaW1hZ2Vmb3JtYXRzLmgiCisKKyNp
bmNsdWRlIDxzdGRpbnQuaD4KKworbmFtZXNwYWNlIGFuZ2xlCit7CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBzb3VyY2VUeXBlLCB0eXBlbmFtZSBjb2xvckRhdGFUeXBlPgordm9pZCBSZWFkQ29sb3Io
Y29uc3QgdWludDhfdCAqc291cmNlLCB1aW50OF90ICpkZXN0KTsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIGRlc3RUeXBlLCB0eXBlbmFtZSBjb2xvckRhdGFUeXBlPgordm9pZCBXcml0ZUNvbG9yKGNv
bnN0IHVpbnQ4X3QgKnNvdXJjZSwgdWludDhfdCAqZGVzdCk7CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBzb3VyY2VUeXBlLCB0eXBlbmFtZSBkZXN0VHlwZSwgdHlwZW5hbWUgY29sb3JEYXRhVHlwZT4K
K3ZvaWQgQ29weVBpeGVsKGNvbnN0IHVpbnQ4X3QgKnNvdXJjZSwgdWludDhfdCAqZGVzdCk7CisK
K3ZvaWQgQ29weUJHUkE4VG9SR0JBOChjb25zdCB1aW50OF90ICpzb3VyY2UsIHVpbnQ4X3QgKmRl
c3QpOworCit9ICAvLyBuYW1lc3BhY2UgYW5nbGUKKworI2luY2x1ZGUgImNvcHlpbWFnZS5pbmwi
CisKKyNlbmRpZiAgLy8gSU1BR0VVVElMX0NPUFlJTUFHRV9IXwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2ltYWdlX3V0aWwvY29weWltYWdlLmlubAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvaW1hZ2VfdXRpbC9jb3B5aW1hZ2UuaW5sCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9pbWFnZV91dGlsL2NvcHlp
bWFnZS5pbmwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNCBAQAorLy8KKy8vIENvcHlyaWdo
dCAoYykgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisK
Ky8vIGNvcHlpbWFnZS5pbmw6IERlZmluZXMgaW1hZ2UgY29weWluZyBmdW5jdGlvbnMKKworbmFt
ZXNwYWNlIGFuZ2xlCit7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBzb3VyY2VUeXBlLCB0eXBlbmFt
ZSBjb2xvckRhdGFUeXBlPgoraW5saW5lIHZvaWQgUmVhZENvbG9yKGNvbnN0IHVpbnQ4X3QgKnNv
dXJjZSwgdWludDhfdCAqZGVzdCkKK3sKKyAgICBzb3VyY2VUeXBlOjpyZWFkQ29sb3IocmVpbnRl
cnByZXRfY2FzdDxDb2xvcjxjb2xvckRhdGFUeXBlPio+KGRlc3QpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IHNvdXJjZVR5cGUqPihzb3VyY2UpKTsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIGRlc3RUeXBlLCB0eXBlbmFtZSBjb2xvckRhdGFUeXBl
PgoraW5saW5lIHZvaWQgV3JpdGVDb2xvcihjb25zdCB1aW50OF90ICpzb3VyY2UsIHVpbnQ4X3Qg
KmRlc3QpCit7CisgICAgZGVzdFR5cGU6OndyaXRlQ29sb3IocmVpbnRlcnByZXRfY2FzdDxkZXN0
VHlwZSo+KGRlc3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgQ29sb3I8Y29sb3JEYXRhVHlwZT4qPihzb3VyY2UpKTsKK30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIHNvdXJjZVR5cGUsIHR5cGVuYW1lIGRlc3RUeXBlLCB0eXBlbmFtZSBjb2xvckRhdGFU
eXBlPgoraW5saW5lIHZvaWQgQ29weVBpeGVsKGNvbnN0IHVpbnQ4X3QgKnNvdXJjZSwgdWludDhf
dCAqZGVzdCkKK3sKKyAgICBjb2xvckRhdGFUeXBlIHRlbXA7CisgICAgUmVhZENvbG9yPHNvdXJj
ZVR5cGUsIGNvbG9yRGF0YVR5cGU+KHNvdXJjZSwgJnRlbXApOworICAgIFdyaXRlQ29sb3I8ZGVz
dFR5cGUsIGNvbG9yRGF0YVR5cGU+KCZ0ZW1wLCBkZXN0KTsKK30KKworfSAgLy8gbmFtZXNwYWNl
IGFuZ2xlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvaW1hZ2VfdXRpbC9nZW5l
cmF0ZW1pcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9pbWFn
ZV91dGlsL2dlbmVyYXRlbWlwLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2ltYWdlX3V0aWwvZ2VuZXJhdGVtaXAuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDM0IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTUgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBnZW5lcmF0ZW1pcC5oOiBEZWZpbmVz
IHRoZSBHZW5lcmF0ZU1pcCBmdW5jdGlvbiwgdGVtcGxhdGVkIG9uIHRoZSBmb3JtYXQKKy8vIHR5
cGUgb2YgdGhlIGltYWdlIGZvciB3aGljaCBtaXAgbGV2ZWxzIGFyZSBiZWluZyBnZW5lcmF0ZWQu
CisKKyNpZm5kZWYgSU1BR0VVVElMX0dFTkVSQVRFTUlQX0hfCisjZGVmaW5lIElNQUdFVVRJTF9H
RU5FUkFURU1JUF9IXworCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+
CisKK25hbWVzcGFjZSBhbmdsZQoreworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2lubGluZSB2
b2lkIEdlbmVyYXRlTWlwKHNpemVfdCBzb3VyY2VXaWR0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBzb3VyY2VIZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
c291cmNlRGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzb3Vy
Y2VEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNvdXJjZVJvd1BpdGNoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNvdXJjZURlcHRoUGl0Y2gsCisgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50OF90ICpkZXN0RGF0YSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBkZXN0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
ZGVzdERlcHRoUGl0Y2gpOworCit9ICAvLyBuYW1lc3BhY2UgYW5nbGUKKworI2luY2x1ZGUgImdl
bmVyYXRlbWlwLmlubCIKKworI2VuZGlmICAvLyBJTUFHRVVUSUxfR0VORVJBVEVNSVBfSF8KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9pbWFnZV91dGlsL2dlbmVyYXRlbWlwLmlu
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvaW1hZ2VfdXRpbC9n
ZW5lcmF0ZW1pcC5pbmwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2ltYWdlX3V0aWwvZ2VuZXJhdGVtaXAuaW5sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MjY4IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gZ2VuZXJhdGVtaXAuaW5sOiBEZWZpbmVzIHRoZSBH
ZW5lcmF0ZU1pcCBmdW5jdGlvbiwgdGVtcGxhdGVkIG9uIHRoZSBmb3JtYXQKKy8vIHR5cGUgb2Yg
dGhlIGltYWdlIGZvciB3aGljaCBtaXAgbGV2ZWxzIGFyZSBiZWluZyBnZW5lcmF0ZWQuCisKKyNp
bmNsdWRlICJjb21tb24vbWF0aHV0aWwuaCIKKworI2luY2x1ZGUgImltYWdlX3V0aWwvaW1hZ2Vm
b3JtYXRzLmgiCisKK25hbWVzcGFjZSBhbmdsZQoreworCituYW1lc3BhY2UgcHJpdgoreworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0YXRpYyBpbmxpbmUgVCAqR2V0UGl4ZWwodWludDhfdCAq
ZGF0YSwgc2l6ZV90IHgsIHNpemVfdCB5LCBzaXplX3Qgeiwgc2l6ZV90IHJvd1BpdGNoLCBzaXpl
X3QgZGVwdGhQaXRjaCkKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4oZGF0YSAr
ICh4ICogc2l6ZW9mKFQpKSArICh5ICogcm93UGl0Y2gpICsgKHogKiBkZXB0aFBpdGNoKSk7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RhdGljIGlubGluZSBjb25zdCBUICpHZXRQaXhl
bChjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3QgeCwgc2l6ZV90IHksIHNpemVfdCB6LCBzaXpl
X3Qgcm93UGl0Y2gsIHNpemVfdCBkZXB0aFBpdGNoKQoreworICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNvbnN0IFQqPihkYXRhICsgKHggKiBzaXplb2YoVCkpICsgKHkgKiByb3dQaXRjaCkg
KyAoeiAqIGRlcHRoUGl0Y2gpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGF0aWMg
dm9pZCBHZW5lcmF0ZU1pcF9ZKHNpemVfdCBzb3VyY2VXaWR0aCwgc2l6ZV90IHNvdXJjZUhlaWdo
dCwgc2l6ZV90IHNvdXJjZURlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
aW50OF90ICpzb3VyY2VEYXRhLCBzaXplX3Qgc291cmNlUm93UGl0Y2gsIHNpemVfdCBzb3VyY2VE
ZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVzdFdpZHRoLCBz
aXplX3QgZGVzdEhlaWdodCwgc2l6ZV90IGRlc3REZXB0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDhfdCAqZGVzdERhdGEsIHNpemVfdCBkZXN0Um93UGl0Y2gsIHNpemVfdCBkZXN0
RGVwdGhQaXRjaCkKK3sKKyAgICBBU1NFUlQoc291cmNlV2lkdGggPT0gMSk7CisgICAgQVNTRVJU
KHNvdXJjZUhlaWdodCA+IDEpOworICAgIEFTU0VSVChzb3VyY2VEZXB0aCA9PSAxKTsKKworICAg
IGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgZGVzdEhlaWdodDsgeSsrKQorICAgIHsKKyAgICAgICAg
Y29uc3QgVCAqc3JjMCA9IEdldFBpeGVsPFQ+KHNvdXJjZURhdGEsIDAsIHkgKiAyLCAwLCBzb3Vy
Y2VSb3dQaXRjaCwgc291cmNlRGVwdGhQaXRjaCk7CisgICAgICAgIGNvbnN0IFQgKnNyYzEgPSBH
ZXRQaXhlbDxUPihzb3VyY2VEYXRhLCAwLCB5ICogMiArIDEsIDAsIHNvdXJjZVJvd1BpdGNoLCBz
b3VyY2VEZXB0aFBpdGNoKTsKKyAgICAgICAgVCAqZHN0ID0gR2V0UGl4ZWw8VD4oZGVzdERhdGEs
IDAsIHksIDAsIGRlc3RSb3dQaXRjaCwgZGVzdERlcHRoUGl0Y2gpOworCisgICAgICAgIFQ6OmF2
ZXJhZ2UoZHN0LCBzcmMwLCBzcmMxKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
Pgorc3RhdGljIHZvaWQgR2VuZXJhdGVNaXBfWChzaXplX3Qgc291cmNlV2lkdGgsIHNpemVfdCBz
b3VyY2VIZWlnaHQsIHNpemVfdCBzb3VyY2VEZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgdWludDhfdCAqc291cmNlRGF0YSwgc2l6ZV90IHNvdXJjZVJvd1BpdGNoLCBzaXpl
X3Qgc291cmNlRGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRl
c3RXaWR0aCwgc2l6ZV90IGRlc3RIZWlnaHQsIHNpemVfdCBkZXN0RGVwdGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmRlc3REYXRhLCBzaXplX3QgZGVzdFJvd1BpdGNoLCBz
aXplX3QgZGVzdERlcHRoUGl0Y2gpCit7CisgICAgQVNTRVJUKHNvdXJjZVdpZHRoID4gMSk7Cisg
ICAgQVNTRVJUKHNvdXJjZUhlaWdodCA9PSAxKTsKKyAgICBBU1NFUlQoc291cmNlRGVwdGggPT0g
MSk7CisKKyAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IGRlc3RXaWR0aDsgeCsrKQorICAgIHsK
KyAgICAgICAgY29uc3QgVCAqc3JjMCA9IEdldFBpeGVsPFQ+KHNvdXJjZURhdGEsIHggKiAyLCAw
LCAwLCBzb3VyY2VSb3dQaXRjaCwgc291cmNlRGVwdGhQaXRjaCk7CisgICAgICAgIGNvbnN0IFQg
KnNyYzEgPSBHZXRQaXhlbDxUPihzb3VyY2VEYXRhLCB4ICogMiArIDEsIDAsIDAsIHNvdXJjZVJv
d1BpdGNoLCBzb3VyY2VEZXB0aFBpdGNoKTsKKyAgICAgICAgVCAqZHN0ID0gR2V0UGl4ZWw8VD4o
ZGVzdERhdGEsIHgsIDAsIDAsIGRlc3RSb3dQaXRjaCwgZGVzdERlcHRoUGl0Y2gpOworCisgICAg
ICAgIFQ6OmF2ZXJhZ2UoZHN0LCBzcmMwLCBzcmMxKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorc3RhdGljIHZvaWQgR2VuZXJhdGVNaXBfWihzaXplX3Qgc291cmNlV2lkdGgs
IHNpemVfdCBzb3VyY2VIZWlnaHQsIHNpemVfdCBzb3VyY2VEZXB0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgdWludDhfdCAqc291cmNlRGF0YSwgc2l6ZV90IHNvdXJjZVJvd1Bp
dGNoLCBzaXplX3Qgc291cmNlRGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGRlc3RXaWR0aCwgc2l6ZV90IGRlc3RIZWlnaHQsIHNpemVfdCBkZXN0RGVwdGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmRlc3REYXRhLCBzaXplX3QgZGVzdFJv
d1BpdGNoLCBzaXplX3QgZGVzdERlcHRoUGl0Y2gpCit7CisgICAgQVNTRVJUKHNvdXJjZVdpZHRo
ID09IDEpOworICAgIEFTU0VSVChzb3VyY2VIZWlnaHQgPT0gMSk7CisgICAgQVNTRVJUKHNvdXJj
ZURlcHRoID4gMSk7CisKKyAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlc3REZXB0aDsgeisr
KQorICAgIHsKKyAgICAgICAgY29uc3QgVCAqc3JjMCA9IEdldFBpeGVsPFQ+KHNvdXJjZURhdGEs
IDAsIDAsIHogKiAyLCBzb3VyY2VSb3dQaXRjaCwgc291cmNlRGVwdGhQaXRjaCk7CisgICAgICAg
IGNvbnN0IFQgKnNyYzEgPSBHZXRQaXhlbDxUPihzb3VyY2VEYXRhLCAwLCAwLCB6ICogMiArIDEs
IHNvdXJjZVJvd1BpdGNoLCBzb3VyY2VEZXB0aFBpdGNoKTsKKyAgICAgICAgVCAqZHN0ID0gR2V0
UGl4ZWw8VD4oZGVzdERhdGEsIDAsIDAsIHosIGRlc3RSb3dQaXRjaCwgZGVzdERlcHRoUGl0Y2gp
OworCisgICAgICAgIFQ6OmF2ZXJhZ2UoZHN0LCBzcmMwLCBzcmMxKTsKKyAgICB9Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorc3RhdGljIHZvaWQgR2VuZXJhdGVNaXBfWFkoc2l6ZV90IHNv
dXJjZVdpZHRoLCBzaXplX3Qgc291cmNlSGVpZ2h0LCBzaXplX3Qgc291cmNlRGVwdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzb3VyY2VEYXRhLCBzaXplX3Qg
c291cmNlUm93UGl0Y2gsIHNpemVfdCBzb3VyY2VEZXB0aFBpdGNoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGRlc3RXaWR0aCwgc2l6ZV90IGRlc3RIZWlnaHQsIHNpemVfdCBk
ZXN0RGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpkZXN0RGF0YSwg
c2l6ZV90IGRlc3RSb3dQaXRjaCwgc2l6ZV90IGRlc3REZXB0aFBpdGNoKQoreworICAgIEFTU0VS
VChzb3VyY2VXaWR0aCA+IDEpOworICAgIEFTU0VSVChzb3VyY2VIZWlnaHQgPiAxKTsKKyAgICBB
U1NFUlQoc291cmNlRGVwdGggPT0gMSk7CisKKyAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGRl
c3RIZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgZGVz
dFdpZHRoOyB4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IFQgKnNyYzAgPSBHZXRQ
aXhlbDxUPihzb3VyY2VEYXRhLCB4ICogMiwgeSAqIDIsIDAsIHNvdXJjZVJvd1BpdGNoLCBzb3Vy
Y2VEZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIGNvbnN0IFQgKnNyYzEgPSBHZXRQaXhlbDxUPihz
b3VyY2VEYXRhLCB4ICogMiwgeSAqIDIgKyAxLCAwLCBzb3VyY2VSb3dQaXRjaCwgc291cmNlRGVw
dGhQaXRjaCk7CisgICAgICAgICAgICBjb25zdCBUICpzcmMyID0gR2V0UGl4ZWw8VD4oc291cmNl
RGF0YSwgeCAqIDIgKyAxLCB5ICogMiwgMCwgc291cmNlUm93UGl0Y2gsIHNvdXJjZURlcHRoUGl0
Y2gpOworICAgICAgICAgICAgY29uc3QgVCAqc3JjMyA9IEdldFBpeGVsPFQ+KHNvdXJjZURhdGEs
IHggKiAyICsgMSwgeSAqIDIgKyAxLCAwLCBzb3VyY2VSb3dQaXRjaCwgc291cmNlRGVwdGhQaXRj
aCk7CisgICAgICAgICAgICBUICpkc3QgPSBHZXRQaXhlbDxUPihkZXN0RGF0YSwgeCwgeSwgMCwg
ZGVzdFJvd1BpdGNoLCBkZXN0RGVwdGhQaXRjaCk7CisKKyAgICAgICAgICAgIFQgdG1wMCwgdG1w
MTsKKworICAgICAgICAgICAgVDo6YXZlcmFnZSgmdG1wMCwgc3JjMCwgc3JjMSk7CisgICAgICAg
ICAgICBUOjphdmVyYWdlKCZ0bXAxLCBzcmMyLCBzcmMzKTsKKyAgICAgICAgICAgIFQ6OmF2ZXJh
Z2UoZHN0LCAmdG1wMCwgJnRtcDEpOworICAgICAgICB9CisgICAgfQorfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK3N0YXRpYyB2b2lkIEdlbmVyYXRlTWlwX1laKHNpemVfdCBzb3VyY2VXaWR0
aCwgc2l6ZV90IHNvdXJjZUhlaWdodCwgc2l6ZV90IHNvdXJjZURlcHRoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqc291cmNlRGF0YSwgc2l6ZV90IHNvdXJjZVJv
d1BpdGNoLCBzaXplX3Qgc291cmNlRGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBkZXN0V2lkdGgsIHNpemVfdCBkZXN0SGVpZ2h0LCBzaXplX3QgZGVzdERlcHRo
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqZGVzdERhdGEsIHNpemVfdCBk
ZXN0Um93UGl0Y2gsIHNpemVfdCBkZXN0RGVwdGhQaXRjaCkKK3sKKyAgICBBU1NFUlQoc291cmNl
V2lkdGggPT0gMSk7CisgICAgQVNTRVJUKHNvdXJjZUhlaWdodCA+IDEpOworICAgIEFTU0VSVChz
b3VyY2VEZXB0aCA+IDEpOworCisgICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXN0RGVwdGg7
IHorKykKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgZGVzdEhlaWdodDsg
eSsrKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBUICpzcmMwID0gR2V0UGl4ZWw8VD4o
c291cmNlRGF0YSwgMCwgeSAqIDIsIHogKiAyLCBzb3VyY2VSb3dQaXRjaCwgc291cmNlRGVwdGhQ
aXRjaCk7CisgICAgICAgICAgICBjb25zdCBUICpzcmMxID0gR2V0UGl4ZWw8VD4oc291cmNlRGF0
YSwgMCwgeSAqIDIsIHogKiAyICsgMSwgc291cmNlUm93UGl0Y2gsIHNvdXJjZURlcHRoUGl0Y2gp
OworICAgICAgICAgICAgY29uc3QgVCAqc3JjMiA9IEdldFBpeGVsPFQ+KHNvdXJjZURhdGEsIDAs
IHkgKiAyICsgMSwgeiAqIDIsIHNvdXJjZVJvd1BpdGNoLCBzb3VyY2VEZXB0aFBpdGNoKTsKKyAg
ICAgICAgICAgIGNvbnN0IFQgKnNyYzMgPSBHZXRQaXhlbDxUPihzb3VyY2VEYXRhLCAwLCB5ICog
MiArIDEsIHogKiAyICsgMSwgc291cmNlUm93UGl0Y2gsIHNvdXJjZURlcHRoUGl0Y2gpOworICAg
ICAgICAgICAgVCAqZHN0ID0gR2V0UGl4ZWw8VD4oZGVzdERhdGEsIDAsIHksIHosIGRlc3RSb3dQ
aXRjaCwgZGVzdERlcHRoUGl0Y2gpOworCisgICAgICAgICAgICBUIHRtcDAsIHRtcDE7CisKKyAg
ICAgICAgICAgIFQ6OmF2ZXJhZ2UoJnRtcDAsIHNyYzAsIHNyYzEpOworICAgICAgICAgICAgVDo6
YXZlcmFnZSgmdG1wMSwgc3JjMiwgc3JjMyk7CisgICAgICAgICAgICBUOjphdmVyYWdlKGRzdCwg
JnRtcDAsICZ0bXAxKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CitzdGF0aWMgdm9pZCBHZW5lcmF0ZU1pcF9YWihzaXplX3Qgc291cmNlV2lkdGgsIHNpemVf
dCBzb3VyY2VIZWlnaHQsIHNpemVfdCBzb3VyY2VEZXB0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNvdXJjZURhdGEsIHNpemVfdCBzb3VyY2VSb3dQaXRjaCwg
c2l6ZV90IHNvdXJjZURlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgZGVzdFdpZHRoLCBzaXplX3QgZGVzdEhlaWdodCwgc2l6ZV90IGRlc3REZXB0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmRlc3REYXRhLCBzaXplX3QgZGVzdFJvd1Bp
dGNoLCBzaXplX3QgZGVzdERlcHRoUGl0Y2gpCit7CisgICAgQVNTRVJUKHNvdXJjZVdpZHRoID4g
MSk7CisgICAgQVNTRVJUKHNvdXJjZUhlaWdodCA9PSAxKTsKKyAgICBBU1NFUlQoc291cmNlRGVw
dGggPiAxKTsKKworICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVzdERlcHRoOyB6KyspCisg
ICAgeworICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IGRlc3RXaWR0aDsgeCsrKQorICAg
ICAgICB7CisgICAgICAgICAgICBjb25zdCBUICpzcmMwID0gR2V0UGl4ZWw8VD4oc291cmNlRGF0
YSwgeCAqIDIsIDAsIHogKiAyLCBzb3VyY2VSb3dQaXRjaCwgc291cmNlRGVwdGhQaXRjaCk7Cisg
ICAgICAgICAgICBjb25zdCBUICpzcmMxID0gR2V0UGl4ZWw8VD4oc291cmNlRGF0YSwgeCAqIDIs
IDAsIHogKiAyICsgMSwgc291cmNlUm93UGl0Y2gsIHNvdXJjZURlcHRoUGl0Y2gpOworICAgICAg
ICAgICAgY29uc3QgVCAqc3JjMiA9IEdldFBpeGVsPFQ+KHNvdXJjZURhdGEsIHggKiAyICsgMSwg
MCwgeiAqIDIsIHNvdXJjZVJvd1BpdGNoLCBzb3VyY2VEZXB0aFBpdGNoKTsKKyAgICAgICAgICAg
IGNvbnN0IFQgKnNyYzMgPSBHZXRQaXhlbDxUPihzb3VyY2VEYXRhLCB4ICogMiArIDEsIDAsIHog
KiAyICsgMSwgc291cmNlUm93UGl0Y2gsIHNvdXJjZURlcHRoUGl0Y2gpOworICAgICAgICAgICAg
VCAqZHN0ID0gR2V0UGl4ZWw8VD4oZGVzdERhdGEsIHgsIDAsIHosIGRlc3RSb3dQaXRjaCwgZGVz
dERlcHRoUGl0Y2gpOworCisgICAgICAgICAgICBUIHRtcDAsIHRtcDE7CisKKyAgICAgICAgICAg
IFQ6OmF2ZXJhZ2UoJnRtcDAsIHNyYzAsIHNyYzEpOworICAgICAgICAgICAgVDo6YXZlcmFnZSgm
dG1wMSwgc3JjMiwgc3JjMyk7CisgICAgICAgICAgICBUOjphdmVyYWdlKGRzdCwgJnRtcDAsICZ0
bXAxKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGF0
aWMgdm9pZCBHZW5lcmF0ZU1pcF9YWVooc2l6ZV90IHNvdXJjZVdpZHRoLCBzaXplX3Qgc291cmNl
SGVpZ2h0LCBzaXplX3Qgc291cmNlRGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgdWludDhfdCAqc291cmNlRGF0YSwgc2l6ZV90IHNvdXJjZVJvd1BpdGNoLCBzaXplX3Qg
c291cmNlRGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVz
dFdpZHRoLCBzaXplX3QgZGVzdEhlaWdodCwgc2l6ZV90IGRlc3REZXB0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50OF90ICpkZXN0RGF0YSwgc2l6ZV90IGRlc3RSb3dQaXRjaCwg
c2l6ZV90IGRlc3REZXB0aFBpdGNoKQoreworICAgIEFTU0VSVChzb3VyY2VXaWR0aCA+IDEpOwor
ICAgIEFTU0VSVChzb3VyY2VIZWlnaHQgPiAxKTsKKyAgICBBU1NFUlQoc291cmNlRGVwdGggPiAx
KTsKKworICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVzdERlcHRoOyB6KyspCisgICAgewor
ICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGRlc3RIZWlnaHQ7IHkrKykKKyAgICAgICAg
eworICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCBkZXN0V2lkdGg7IHgrKykKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdCBUICpzcmMwID0gR2V0UGl4ZWw8VD4o
c291cmNlRGF0YSwgeCAqIDIsIHkgKiAyLCB6ICogMiwgc291cmNlUm93UGl0Y2gsIHNvdXJjZURl
cHRoUGl0Y2gpOworICAgICAgICAgICAgICAgIGNvbnN0IFQgKnNyYzEgPSBHZXRQaXhlbDxUPihz
b3VyY2VEYXRhLCB4ICogMiwgeSAqIDIsIHogKiAyICsgMSwgc291cmNlUm93UGl0Y2gsIHNvdXJj
ZURlcHRoUGl0Y2gpOworICAgICAgICAgICAgICAgIGNvbnN0IFQgKnNyYzIgPSBHZXRQaXhlbDxU
Pihzb3VyY2VEYXRhLCB4ICogMiwgeSAqIDIgKyAxLCB6ICogMiwgc291cmNlUm93UGl0Y2gsIHNv
dXJjZURlcHRoUGl0Y2gpOworICAgICAgICAgICAgICAgIGNvbnN0IFQgKnNyYzMgPSBHZXRQaXhl
bDxUPihzb3VyY2VEYXRhLCB4ICogMiwgeSAqIDIgKyAxLCB6ICogMiArIDEsIHNvdXJjZVJvd1Bp
dGNoLCBzb3VyY2VEZXB0aFBpdGNoKTsKKyAgICAgICAgICAgICAgICBjb25zdCBUICpzcmM0ID0g
R2V0UGl4ZWw8VD4oc291cmNlRGF0YSwgeCAqIDIgKyAxLCB5ICogMiwgeiAqIDIsIHNvdXJjZVJv
d1BpdGNoLCBzb3VyY2VEZXB0aFBpdGNoKTsKKyAgICAgICAgICAgICAgICBjb25zdCBUICpzcmM1
ID0gR2V0UGl4ZWw8VD4oc291cmNlRGF0YSwgeCAqIDIgKyAxLCB5ICogMiwgeiAqIDIgKyAxLCBz
b3VyY2VSb3dQaXRjaCwgc291cmNlRGVwdGhQaXRjaCk7CisgICAgICAgICAgICAgICAgY29uc3Qg
VCAqc3JjNiA9IEdldFBpeGVsPFQ+KHNvdXJjZURhdGEsIHggKiAyICsgMSwgeSAqIDIgKyAxLCB6
ICogMiwgc291cmNlUm93UGl0Y2gsIHNvdXJjZURlcHRoUGl0Y2gpOworICAgICAgICAgICAgICAg
IGNvbnN0IFQgKnNyYzcgPSBHZXRQaXhlbDxUPihzb3VyY2VEYXRhLCB4ICogMiArIDEsIHkgKiAy
ICsgMSwgeiAqIDIgKyAxLCBzb3VyY2VSb3dQaXRjaCwgc291cmNlRGVwdGhQaXRjaCk7CisgICAg
ICAgICAgICAgICAgVCAqZHN0ID0gR2V0UGl4ZWw8VD4oZGVzdERhdGEsIHgsIHksIHosIGRlc3RS
b3dQaXRjaCwgZGVzdERlcHRoUGl0Y2gpOworCisgICAgICAgICAgICAgICAgVCB0bXAwLCB0bXAx
LCB0bXAyLCB0bXAzLCB0bXA0LCB0bXA1OworCisgICAgICAgICAgICAgICAgVDo6YXZlcmFnZSgm
dG1wMCwgc3JjMCwgc3JjMSk7CisgICAgICAgICAgICAgICAgVDo6YXZlcmFnZSgmdG1wMSwgc3Jj
Miwgc3JjMyk7CisgICAgICAgICAgICAgICAgVDo6YXZlcmFnZSgmdG1wMiwgc3JjNCwgc3JjNSk7
CisgICAgICAgICAgICAgICAgVDo6YXZlcmFnZSgmdG1wMywgc3JjNiwgc3JjNyk7CisKKyAgICAg
ICAgICAgICAgICBUOjphdmVyYWdlKCZ0bXA0LCAmdG1wMCwgJnRtcDEpOworICAgICAgICAgICAg
ICAgIFQ6OmF2ZXJhZ2UoJnRtcDUsICZ0bXAyLCAmdG1wMyk7CisKKyAgICAgICAgICAgICAgICBU
OjphdmVyYWdlKGRzdCwgJnRtcDQsICZ0bXA1KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KK30KKworCit0eXBlZGVmIHZvaWQgKCpNaXBHZW5lcmF0aW9uRnVuY3Rpb24pKHNpemVf
dCBzb3VyY2VXaWR0aCwgc2l6ZV90IHNvdXJjZUhlaWdodCwgc2l6ZV90IHNvdXJjZURlcHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzb3Vy
Y2VEYXRhLCBzaXplX3Qgc291cmNlUm93UGl0Y2gsIHNpemVfdCBzb3VyY2VEZXB0aFBpdGNoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVzdFdpZHRoLCBz
aXplX3QgZGVzdEhlaWdodCwgc2l6ZV90IGRlc3REZXB0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDhfdCAqZGVzdERhdGEsIHNpemVfdCBkZXN0Um93UGl0Y2gs
IHNpemVfdCBkZXN0RGVwdGhQaXRjaCk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RhdGlj
IE1pcEdlbmVyYXRpb25GdW5jdGlvbiBHZXRNaXBHZW5lcmF0aW9uRnVuY3Rpb24oc2l6ZV90IHNv
dXJjZVdpZHRoLCBzaXplX3Qgc291cmNlSGVpZ2h0LCBzaXplX3Qgc291cmNlRGVwdGgpCit7Cisg
ICAgdWludDhfdCBpbmRleCA9ICgoc291cmNlV2lkdGggPiAxKSAgPyAxIDogMCkgfAorICAgICAg
ICAgICAgICAgICAgICAoKHNvdXJjZUhlaWdodCA+IDEpID8gMiA6IDApIHwKKyAgICAgICAgICAg
ICAgICAgICAgKChzb3VyY2VEZXB0aCA+IDEpICA/IDQgOiAwKTsKKworICAgIHN3aXRjaCAoaW5k
ZXgpCisgICAgeworICAgICAgY2FzZSAwOiByZXR1cm4gTlVMTDsKKyAgICAgIGNhc2UgMTogcmV0
dXJuIEdlbmVyYXRlTWlwX1g8VD47ICAgLy8gVyB4IDEgeCAxCisgICAgICBjYXNlIDI6IHJldHVy
biBHZW5lcmF0ZU1pcF9ZPFQ+OyAgIC8vIDEgeCBIIHggMQorICAgICAgY2FzZSAzOiByZXR1cm4g
R2VuZXJhdGVNaXBfWFk8VD47ICAvLyBXIHggSCB4IDEKKyAgICAgIGNhc2UgNDogcmV0dXJuIEdl
bmVyYXRlTWlwX1o8VD47ICAgLy8gMSB4IDEgeCBECisgICAgICBjYXNlIDU6IHJldHVybiBHZW5l
cmF0ZU1pcF9YWjxUPjsgIC8vIFcgeCAxIHggRAorICAgICAgY2FzZSA2OiByZXR1cm4gR2VuZXJh
dGVNaXBfWVo8VD47ICAvLyAxIHggSCB4IEQKKyAgICAgIGNhc2UgNzogcmV0dXJuIEdlbmVyYXRl
TWlwX1hZWjxUPjsgLy8gVyB4IEggeCBECisgICAgfQorCisgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICByZXR1cm4gTlVMTDsKK30KKworfSAgLy8gbmFtZXNwYWNlIHByaXYKKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitpbmxpbmUgdm9pZCBHZW5lcmF0ZU1pcChzaXplX3Qgc291cmNlV2lkdGgsIHNp
emVfdCBzb3VyY2VIZWlnaHQsIHNpemVfdCBzb3VyY2VEZXB0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNvdXJjZURhdGEsIHNpemVfdCBzb3VyY2VSb3dQaXRjaCwg
c2l6ZV90IHNvdXJjZURlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90
ICpkZXN0RGF0YSwgc2l6ZV90IGRlc3RSb3dQaXRjaCwgc2l6ZV90IGRlc3REZXB0aFBpdGNoKQor
eworICAgIHNpemVfdCBtaXBXaWR0aCA9IHN0ZDo6bWF4PHNpemVfdD4oMSwgc291cmNlV2lkdGgg
Pj4gMSk7CisgICAgc2l6ZV90IG1pcEhlaWdodCA9IHN0ZDo6bWF4PHNpemVfdD4oMSwgc291cmNl
SGVpZ2h0ID4+IDEpOworICAgIHNpemVfdCBtaXBEZXB0aCA9IHN0ZDo6bWF4PHNpemVfdD4oMSwg
c291cmNlRGVwdGggPj4gMSk7CisKKyAgICBwcml2OjpNaXBHZW5lcmF0aW9uRnVuY3Rpb24gZ2Vu
ZXJhdGlvbkZ1bmN0aW9uID0gcHJpdjo6R2V0TWlwR2VuZXJhdGlvbkZ1bmN0aW9uPFQ+KHNvdXJj
ZVdpZHRoLCBzb3VyY2VIZWlnaHQsIHNvdXJjZURlcHRoKTsKKyAgICBBU1NFUlQoZ2VuZXJhdGlv
bkZ1bmN0aW9uICE9IE5VTEwpOworCisgICAgZ2VuZXJhdGlvbkZ1bmN0aW9uKHNvdXJjZVdpZHRo
LCBzb3VyY2VIZWlnaHQsIHNvdXJjZURlcHRoLCBzb3VyY2VEYXRhLCBzb3VyY2VSb3dQaXRjaCwg
c291cmNlRGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgbWlwV2lkdGgsIG1pcEhl
aWdodCwgbWlwRGVwdGgsIGRlc3REYXRhLCBkZXN0Um93UGl0Y2gsIGRlc3REZXB0aFBpdGNoKTsK
K30KKworfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvaW1hZ2VfdXRpbC9pbWFnZWZvcm1hdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9pbWFnZV91dGlsL2ltYWdlZm9ybWF0cy5jcHAJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2ltYWdlX3V0aWwvaW1hZ2Vmb3Jt
YXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2ODggQEAKKy8vCisvLyBDb3B5cmln
aHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLwor
CisvLyBpbWFnZWZvcm1hdHMuY3BwOiBEZWZpbmVzIGltYWdlIGZvcm1hdCB0eXBlcyB3aXRoIGZ1
bmN0aW9ucyBmb3IgbWlwIGdlbmVyYXRpb24KKy8vIGFuZCBjb3B5aW5nLgorCisjaW5jbHVkZSAi
aW1hZ2VfdXRpbC9pbWFnZWZvcm1hdHMuaCIKKworI2luY2x1ZGUgImNvbW1vbi9tYXRodXRpbC5o
IgorCituYW1lc3BhY2UgYW5nbGUKK3sKKwordm9pZCBMODo6cmVhZENvbG9yKGdsOjpDb2xvckYg
KmRzdCwgY29uc3QgTDggKnNyYykKK3sKKyAgICBjb25zdCBmbG9hdCBsdW0gPSBnbDo6bm9ybWFs
aXplZFRvRmxvYXQoc3JjLT5MKTsKKyAgICBkc3QtPnJlZCAgICAgICAgPSBsdW07CisgICAgZHN0
LT5ncmVlbiAgICAgID0gbHVtOworICAgIGRzdC0+Ymx1ZSAgICAgICA9IGx1bTsKKyAgICBkc3Qt
PmFscGhhICAgICAgPSAxLjBmOworfQorCit2b2lkIEw4Ojp3cml0ZUNvbG9yKEw4ICpkc3QsIGNv
bnN0IGdsOjpDb2xvckYgKnNyYykKK3sKKyAgICBkc3QtPkwgPSBnbDo6ZmxvYXRUb05vcm1hbGl6
ZWQ8dWludDhfdD4oc3JjLT5yZWQpOworfQorCit2b2lkIEw4OjphdmVyYWdlKEw4ICpkc3QsIGNv
bnN0IEw4ICpzcmMxLCBjb25zdCBMOCAqc3JjMikKK3sKKyAgICBkc3QtPkwgPSBnbDo6YXZlcmFn
ZShzcmMxLT5MLCBzcmMyLT5MKTsKK30KKwordm9pZCBSODo6cmVhZENvbG9yKGdsOjpDb2xvclVJ
ICpkc3QsIGNvbnN0IFI4ICpzcmMpCit7CisgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKKyAgICBk
c3QtPmdyZWVuID0gMDsKKyAgICBkc3QtPmJsdWUgID0gMDsKKyAgICBkc3QtPmFscGhhID0gMTsK
K30KKwordm9pZCBSODo6cmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjggKnNyYykK
K3sKKyAgICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7CisgICAg
ZHN0LT5ncmVlbiA9IDAuMGY7CisgICAgZHN0LT5ibHVlICA9IDAuMGY7CisgICAgZHN0LT5hbHBo
YSA9IDEuMGY7Cit9CisKK3ZvaWQgUjg6OndyaXRlQ29sb3IoUjggKmRzdCwgY29uc3QgZ2w6OkNv
bG9yVUkgKnNyYykKK3sKKyAgICBkc3QtPlIgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzcmMtPnJl
ZCk7Cit9CisKK3ZvaWQgUjg6OndyaXRlQ29sb3IoUjggKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAq
c3JjKQoreworICAgIGRzdC0+UiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1aW50OF90PihzcmMt
PnJlZCk7Cit9CisKK3ZvaWQgUjg6OmF2ZXJhZ2UoUjggKmRzdCwgY29uc3QgUjggKnNyYzEsIGNv
bnN0IFI4ICpzcmMyKQoreworICAgIGRzdC0+UiA9IGdsOjphdmVyYWdlKHNyYzEtPlIsIHNyYzIt
PlIpOworfQorCit2b2lkIEE4OjpyZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBBOCAq
c3JjKQoreworICAgIGRzdC0+cmVkICAgPSAwLjBmOworICAgIGRzdC0+Z3JlZW4gPSAwLjBmOwor
ICAgIGRzdC0+Ymx1ZSAgPSAwLjBmOworICAgIGRzdC0+YWxwaGEgPSBnbDo6bm9ybWFsaXplZFRv
RmxvYXQoc3JjLT5BKTsKK30KKwordm9pZCBBODo6d3JpdGVDb2xvcihBOCAqZHN0LCBjb25zdCBn
bDo6Q29sb3JGICpzcmMpCit7CisgICAgZHN0LT5BID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPHVp
bnQ4X3Q+KHNyYy0+YWxwaGEpOworfQorCit2b2lkIEE4OjphdmVyYWdlKEE4ICpkc3QsIGNvbnN0
IEE4ICpzcmMxLCBjb25zdCBBOCAqc3JjMikKK3sKKyAgICBkc3QtPkEgPSBnbDo6YXZlcmFnZShz
cmMxLT5BLCBzcmMyLT5BKTsKK30KKwordm9pZCBMOEE4OjpyZWFkQ29sb3IoZ2w6OkNvbG9yRiAq
ZHN0LCBjb25zdCBMOEE4ICpzcmMpCit7CisgICAgY29uc3QgZmxvYXQgbHVtID0gZ2w6Om5vcm1h
bGl6ZWRUb0Zsb2F0KHNyYy0+TCk7CisgICAgZHN0LT5yZWQgICAgICAgID0gbHVtOworICAgIGRz
dC0+Z3JlZW4gICAgICA9IGx1bTsKKyAgICBkc3QtPmJsdWUgICAgICAgPSBsdW07CisgICAgZHN0
LT5hbHBoYSAgICAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+QSk7Cit9CisKK3ZvaWQg
TDhBODo6d3JpdGVDb2xvcihMOEE4ICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKK3sKKyAg
ICBkc3QtPkwgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dWludDhfdD4oc3JjLT5yZWQpOworICAg
IGRzdC0+QSA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1aW50OF90PihzcmMtPmFscGhhKTsKK30K
Kwordm9pZCBMOEE4OjphdmVyYWdlKEw4QTggKmRzdCwgY29uc3QgTDhBOCAqc3JjMSwgY29uc3Qg
TDhBOCAqc3JjMikKK3sKKyAgICAqKHVpbnQxNl90ICopZHN0ID0gKCgoKih1aW50MTZfdCAqKXNy
YzEgXiAqKHVpbnQxNl90ICopc3JjMikgJiAweEZFRkUpID4+IDEpICsKKyAgICAgICAgICAgICAg
ICAgICAgICAgKCoodWludDE2X3QgKilzcmMxICYgKih1aW50MTZfdCAqKXNyYzIpOworfQorCit2
b2lkIEE4TDg6OnJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IEE4TDggKnNyYykKK3sK
KyAgICBjb25zdCBmbG9hdCBsdW0gPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5MKTsKKyAg
ICBkc3QtPnJlZCAgICAgICAgPSBsdW07CisgICAgZHN0LT5ncmVlbiAgICAgID0gbHVtOworICAg
IGRzdC0+Ymx1ZSAgICAgICA9IGx1bTsKKyAgICBkc3QtPmFscGhhICAgICAgPSBnbDo6bm9ybWFs
aXplZFRvRmxvYXQoc3JjLT5BKTsKK30KKwordm9pZCBBOEw4Ojp3cml0ZUNvbG9yKEE4TDggKmRz
dCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQoreworICAgIGRzdC0+TCA9IGdsOjpmbG9hdFRvTm9y
bWFsaXplZDx1aW50OF90PihzcmMtPnJlZCk7CisgICAgZHN0LT5BID0gZ2w6OmZsb2F0VG9Ob3Jt
YWxpemVkPHVpbnQ4X3Q+KHNyYy0+YWxwaGEpOworfQorCit2b2lkIEE4TDg6OmF2ZXJhZ2UoQThM
OCAqZHN0LCBjb25zdCBBOEw4ICpzcmMxLCBjb25zdCBBOEw4ICpzcmMyKQoreworICAgICoodWlu
dDE2X3QgKilkc3QgPSAoKCgqKHVpbnQxNl90ICopc3JjMSBeICoodWludDE2X3QgKilzcmMyKSAm
IDB4RkVGRSkgPj4gMSkgKworICAgICAgICAgICAgICAgICAgICAgICAoKih1aW50MTZfdCAqKXNy
YzEgJiAqKHVpbnQxNl90ICopc3JjMik7Cit9CisKK3ZvaWQgUjhHODo6cmVhZENvbG9yKGdsOjpD
b2xvclVJICpkc3QsIGNvbnN0IFI4RzggKnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gc3JjLT5S
OworICAgIGRzdC0+Z3JlZW4gPSBzcmMtPkc7CisgICAgZHN0LT5ibHVlICA9IDA7CisgICAgZHN0
LT5hbHBoYSA9IDE7Cit9CisKK3ZvaWQgUjhHODo6cmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwg
Y29uc3QgUjhHOCAqc3JjKQoreworICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRvRmxv
YXQoc3JjLT5SKTsKKyAgICBkc3QtPmdyZWVuID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+
Ryk7CisgICAgZHN0LT5ibHVlICA9IDAuMGY7CisgICAgZHN0LT5hbHBoYSA9IDEuMGY7Cit9CisK
K3ZvaWQgUjhHODo6d3JpdGVDb2xvcihSOEc4ICpkc3QsIGNvbnN0IGdsOjpDb2xvclVJICpzcmMp
Cit7CisgICAgZHN0LT5SID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3JjLT5yZWQpOworICAgIGRz
dC0+RyA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHNyYy0+Z3JlZW4pOworfQorCit2b2lkIFI4Rzg6
OndyaXRlQ29sb3IoUjhHOCAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCit7CisgICAgZHN0
LT5SID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPHVpbnQ4X3Q+KHNyYy0+cmVkKTsKKyAgICBkc3Qt
PkcgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dWludDhfdD4oc3JjLT5ncmVlbik7Cit9CisKK3Zv
aWQgUjhHODo6YXZlcmFnZShSOEc4ICpkc3QsIGNvbnN0IFI4RzggKnNyYzEsIGNvbnN0IFI4Rzgg
KnNyYzIpCit7CisgICAgKih1aW50MTZfdCAqKWRzdCA9ICgoKCoodWludDE2X3QgKilzcmMxIF4g
Kih1aW50MTZfdCAqKXNyYzIpICYgMHhGRUZFKSA+PiAxKSArCisgICAgICAgICAgICAgICAgICAg
ICAgICgqKHVpbnQxNl90ICopc3JjMSAmICoodWludDE2X3QgKilzcmMyKTsKK30KKwordm9pZCBS
OEc4Qjg6OnJlYWRDb2xvcihnbDo6Q29sb3JVSSAqZHN0LCBjb25zdCBSOEc4QjggKnNyYykKK3sK
KyAgICBkc3QtPnJlZCAgID0gc3JjLT5SOworICAgIGRzdC0+Z3JlZW4gPSBzcmMtPkc7CisgICAg
ZHN0LT5ibHVlICA9IHNyYy0+RzsKKyAgICBkc3QtPmFscGhhID0gMTsKK30KKwordm9pZCBSOEc4
Qjg6OnJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFI4RzhCOCAqc3JjKQoreworICAg
IGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5SKTsKKyAgICBkc3QtPmdy
ZWVuID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Ryk7CisgICAgZHN0LT5ibHVlICA9IGds
Ojpub3JtYWxpemVkVG9GbG9hdChzcmMtPkIpOworICAgIGRzdC0+YWxwaGEgPSAxLjBmOworfQor
Cit2b2lkIFI4RzhCODo6d3JpdGVDb2xvcihSOEc4QjggKmRzdCwgY29uc3QgZ2w6OkNvbG9yVUkg
KnNyYykKK3sKKyAgICBkc3QtPlIgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzcmMtPnJlZCk7Cisg
ICAgZHN0LT5HID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3JjLT5ncmVlbik7CisgICAgZHN0LT5C
ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3JjLT5ibHVlKTsKK30KKwordm9pZCBSOEc4Qjg6Ondy
aXRlQ29sb3IoUjhHOEI4ICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKK3sKKyAgICBkc3Qt
PlIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dWludDhfdD4oc3JjLT5yZWQpOworICAgIGRzdC0+
RyA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1aW50OF90PihzcmMtPmdyZWVuKTsKKyAgICBkc3Qt
PkIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dWludDhfdD4oc3JjLT5ibHVlKTsKK30KKwordm9p
ZCBSOEc4Qjg6OmF2ZXJhZ2UoUjhHOEI4ICpkc3QsIGNvbnN0IFI4RzhCOCAqc3JjMSwgY29uc3Qg
UjhHOEI4ICpzcmMyKQoreworICAgIGRzdC0+UiA9IGdsOjphdmVyYWdlKHNyYzEtPlIsIHNyYzIt
PlIpOworICAgIGRzdC0+RyA9IGdsOjphdmVyYWdlKHNyYzEtPkcsIHNyYzItPkcpOworICAgIGRz
dC0+QiA9IGdsOjphdmVyYWdlKHNyYzEtPkIsIHNyYzItPkIpOworfQorCit2b2lkIEI4RzhSODo6
cmVhZENvbG9yKGdsOjpDb2xvclVJICpkc3QsIGNvbnN0IEI4RzhSOCAqc3JjKQoreworICAgIGRz
dC0+cmVkICAgPSBzcmMtPlI7CisgICAgZHN0LT5ncmVlbiA9IHNyYy0+RzsKKyAgICBkc3QtPmJs
dWUgID0gc3JjLT5HOworICAgIGRzdC0+YWxwaGEgPSAxOworfQorCit2b2lkIEI4RzhSODo6cmVh
ZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgQjhHOFI4ICpzcmMpCit7CisgICAgZHN0LT5y
ZWQgICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPlIpOworICAgIGRzdC0+Z3JlZW4gPSBn
bDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5HKTsKKyAgICBkc3QtPmJsdWUgID0gZ2w6Om5vcm1h
bGl6ZWRUb0Zsb2F0KHNyYy0+Qik7CisgICAgZHN0LT5hbHBoYSA9IDEuMGY7Cit9CisKK3ZvaWQg
QjhHOFI4Ojp3cml0ZUNvbG9yKEI4RzhSOCAqZHN0LCBjb25zdCBnbDo6Q29sb3JVSSAqc3JjKQor
eworICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHNyYy0+cmVkKTsKKyAgICBkc3Qt
PkcgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzcmMtPmdyZWVuKTsKKyAgICBkc3QtPkIgPSBzdGF0
aWNfY2FzdDx1aW50OF90PihzcmMtPmJsdWUpOworfQorCit2b2lkIEI4RzhSODo6d3JpdGVDb2xv
cihCOEc4UjggKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQoreworICAgIGRzdC0+UiA9IGds
OjpmbG9hdFRvTm9ybWFsaXplZDx1aW50OF90PihzcmMtPnJlZCk7CisgICAgZHN0LT5HID0gZ2w6
OmZsb2F0VG9Ob3JtYWxpemVkPHVpbnQ4X3Q+KHNyYy0+Z3JlZW4pOworICAgIGRzdC0+QiA9IGds
OjpmbG9hdFRvTm9ybWFsaXplZDx1aW50OF90PihzcmMtPmJsdWUpOworfQorCit2b2lkIEI4RzhS
ODo6YXZlcmFnZShCOEc4UjggKmRzdCwgY29uc3QgQjhHOFI4ICpzcmMxLCBjb25zdCBCOEc4Ujgg
KnNyYzIpCit7CisgICAgZHN0LT5SID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Uiwgc3JjMi0+Uik7Cisg
ICAgZHN0LT5HID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Rywgc3JjMi0+Ryk7CisgICAgZHN0LT5CID0g
Z2w6OmF2ZXJhZ2Uoc3JjMS0+Qiwgc3JjMi0+Qik7Cit9CisKK3ZvaWQgUjVHNkI1OjpyZWFkQ29s
b3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSNUc2QjUgKnNyYykKK3sKKyAgICBkc3QtPnJlZCAg
ID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0PDU+KGdsOjpnZXRTaGlmdGVkRGF0YTw1LCAxMT4oc3Jj
LT5SR0IpKTsKKyAgICBkc3QtPmdyZWVuID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0PDY+KGdsOjpn
ZXRTaGlmdGVkRGF0YTw2LCA1PihzcmMtPlJHQikpOworICAgIGRzdC0+Ymx1ZSAgPSBnbDo6bm9y
bWFsaXplZFRvRmxvYXQ8NT4oZ2w6OmdldFNoaWZ0ZWREYXRhPDUsIDA+KHNyYy0+UkdCKSk7Cisg
ICAgZHN0LT5hbHBoYSA9IDEuMGY7Cit9CisKK3ZvaWQgUjVHNkI1Ojp3cml0ZUNvbG9yKFI1RzZC
NSAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCit7CisgICAgZHN0LT5SR0IgPSBnbDo6c2hp
ZnREYXRhPDUsIDExPihnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8NSwgdWludDE2X3Q+KHNyYy0+cmVk
KSkgfAorICAgICAgICAgICAgICAgZ2w6OnNoaWZ0RGF0YTw2LCA1PihnbDo6ZmxvYXRUb05vcm1h
bGl6ZWQ8NiwgdWludDE2X3Q+KHNyYy0+Z3JlZW4pKSB8CisgICAgICAgICAgICAgICBnbDo6c2hp
ZnREYXRhPDUsIDA+KGdsOjpmbG9hdFRvTm9ybWFsaXplZDw1LCB1aW50MTZfdD4oc3JjLT5ibHVl
KSk7Cit9CisKK3ZvaWQgUjVHNkI1OjphdmVyYWdlKFI1RzZCNSAqZHN0LCBjb25zdCBSNUc2QjUg
KnNyYzEsIGNvbnN0IFI1RzZCNSAqc3JjMikKK3sKKyAgICBkc3QtPlJHQiA9IGdsOjpzaGlmdERh
dGE8NSwgMTE+KGdsOjphdmVyYWdlKGdsOjpnZXRTaGlmdGVkRGF0YTw1LCAxMT4oc3JjMS0+UkdC
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpn
ZXRTaGlmdGVkRGF0YTw1LCAxMT4oc3JjMi0+UkdCKSkpIHwKKyAgICAgICAgICAgICAgIGdsOjpz
aGlmdERhdGE8NiwgNT4oZ2w6OmF2ZXJhZ2UoZ2w6OmdldFNoaWZ0ZWREYXRhPDYsIDU+KHNyYzEt
PlJHQiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGds
OjpnZXRTaGlmdGVkRGF0YTw2LCA1PihzcmMyLT5SR0IpKSkgfAorICAgICAgICAgICAgICAgZ2w6
OnNoaWZ0RGF0YTw1LCAwPihnbDo6YXZlcmFnZShnbDo6Z2V0U2hpZnRlZERhdGE8NSwgMD4oc3Jj
MS0+UkdCKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2w6OmdldFNoaWZ0ZWREYXRhPDUsIDA+KHNyYzItPlJHQikpKTsKK30KKwordm9pZCBCNUc2UjU6
OnJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IEI1RzZSNSAqc3JjKQoreworICAgIGRz
dC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQ8NT4oZ2w6OmdldFNoaWZ0ZWREYXRhPDUs
IDExPihzcmMtPkJHUikpOworICAgIGRzdC0+Z3JlZW4gPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQ8
Nj4oZ2w6OmdldFNoaWZ0ZWREYXRhPDYsIDU+KHNyYy0+QkdSKSk7CisgICAgZHN0LT5ibHVlICA9
IGdsOjpub3JtYWxpemVkVG9GbG9hdDw1PihnbDo6Z2V0U2hpZnRlZERhdGE8NSwgMD4oc3JjLT5C
R1IpKTsKKyAgICBkc3QtPmFscGhhID0gMS4wZjsKK30KKwordm9pZCBCNUc2UjU6OndyaXRlQ29s
b3IoQjVHNlI1ICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKK3sKKyAgICBkc3QtPkJHUiA9
IGdsOjpzaGlmdERhdGE8NSwgMD4oZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPDUsIHVuc2lnbmVkIHNo
b3J0PihzcmMtPmJsdWUpKSB8CisgICAgICAgICAgICAgICBnbDo6c2hpZnREYXRhPDYsIDU+KGds
OjpmbG9hdFRvTm9ybWFsaXplZDw2LCB1bnNpZ25lZCBzaG9ydD4oc3JjLT5ncmVlbikpIHwKKyAg
ICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NSwgMTE+KGdsOjpmbG9hdFRvTm9ybWFsaXplZDw1
LCB1bnNpZ25lZCBzaG9ydD4oc3JjLT5yZWQpKTsKK30KKwordm9pZCBCNUc2UjU6OmF2ZXJhZ2Uo
QjVHNlI1ICpkc3QsIGNvbnN0IEI1RzZSNSAqc3JjMSwgY29uc3QgQjVHNlI1ICpzcmMyKQorewor
ICAgIGRzdC0+QkdSID0gZ2w6OnNoaWZ0RGF0YTw1LCAxMT4oZ2w6OmF2ZXJhZ2UoZ2w6OmdldFNo
aWZ0ZWREYXRhPDUsIDExPihzcmMxLT5CR1IpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2w6OmdldFNoaWZ0ZWREYXRhPDUsIDExPihzcmMyLT5CR1Ip
KSkgfAorICAgICAgICAgICAgICAgZ2w6OnNoaWZ0RGF0YTw2LCA1PihnbDo6YXZlcmFnZShnbDo6
Z2V0U2hpZnRlZERhdGE8NiwgNT4oc3JjMS0+QkdSKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OmdldFNoaWZ0ZWREYXRhPDYsIDU+KHNyYzItPkJH
UikpKSB8CisgICAgICAgICAgICAgICBnbDo6c2hpZnREYXRhPDUsIDA+KGdsOjphdmVyYWdlKGds
OjpnZXRTaGlmdGVkRGF0YTw1LCAwPihzcmMxLT5CR1IpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6Z2V0U2hpZnRlZERhdGE8NSwgMD4oc3JjMi0+
QkdSKSkpOworfQorCit2b2lkIEE4UjhHOEI4OjpyZWFkQ29sb3IoZ2w6OkNvbG9yVUkgKmRzdCwg
Y29uc3QgQThSOEc4QjggKnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gc3JjLT5SOworICAgIGRz
dC0+Z3JlZW4gPSBzcmMtPkc7CisgICAgZHN0LT5ibHVlICA9IHNyYy0+QjsKKyAgICBkc3QtPmFs
cGhhID0gc3JjLT5BOworfQorCit2b2lkIEE4UjhHOEI4OjpyZWFkQ29sb3IoZ2w6OkNvbG9yRiAq
ZHN0LCBjb25zdCBBOFI4RzhCOCAqc3JjKQoreworICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFs
aXplZFRvRmxvYXQoc3JjLT5SKTsKKyAgICBkc3QtPmdyZWVuID0gZ2w6Om5vcm1hbGl6ZWRUb0Zs
b2F0KHNyYy0+Ryk7CisgICAgZHN0LT5ibHVlICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMt
PkIpOworICAgIGRzdC0+YWxwaGEgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5BKTsKK30K
Kwordm9pZCBBOFI4RzhCODo6d3JpdGVDb2xvcihBOFI4RzhCOCAqZHN0LCBjb25zdCBnbDo6Q29s
b3JVSSAqc3JjKQoreworICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHNyYy0+cmVk
KTsKKyAgICBkc3QtPkcgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzcmMtPmdyZWVuKTsKKyAgICBk
c3QtPkIgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzcmMtPmJsdWUpOworICAgIGRzdC0+QSA9IHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KHNyYy0+YWxwaGEpOworfQorCit2b2lkIEE4UjhHOEI4Ojp3cml0
ZUNvbG9yKEE4UjhHOEI4ICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKK3sKKyAgICBkc3Qt
PlIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dWludDhfdD4oc3JjLT5yZWQpOworICAgIGRzdC0+
RyA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1aW50OF90PihzcmMtPmdyZWVuKTsKKyAgICBkc3Qt
PkIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dWludDhfdD4oc3JjLT5ibHVlKTsKKyAgICBkc3Qt
PkEgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dWludDhfdD4oc3JjLT5hbHBoYSk7Cit9CisKK3Zv
aWQgQThSOEc4Qjg6OmF2ZXJhZ2UoQThSOEc4QjggKmRzdCwgY29uc3QgQThSOEc4QjggKnNyYzEs
IGNvbnN0IEE4UjhHOEI4ICpzcmMyKQoreworICAgICoodWludDMyX3QgKilkc3QgPSAoKCgqKHVp
bnQzMl90ICopc3JjMSBeICoodWludDMyX3QgKilzcmMyKSAmIDB4RkVGRUZFRkUpID4+IDEpICsK
KyAgICAgICAgICAgICAgICAgICAgICAgKCoodWludDMyX3QgKilzcmMxICYgKih1aW50MzJfdCAq
KXNyYzIpOworfQorCit2b2lkIFI4RzhCOEE4OjpyZWFkQ29sb3IoZ2w6OkNvbG9yVUkgKmRzdCwg
Y29uc3QgUjhHOEI4QTggKnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gc3JjLT5SOworICAgIGRz
dC0+Z3JlZW4gPSBzcmMtPkc7CisgICAgZHN0LT5ibHVlICA9IHNyYy0+QjsKKyAgICBkc3QtPmFs
cGhhID0gc3JjLT5BOworfQorCit2b2lkIFI4RzhCOEE4OjpyZWFkQ29sb3IoZ2w6OkNvbG9yRiAq
ZHN0LCBjb25zdCBSOEc4QjhBOCAqc3JjKQoreworICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFs
aXplZFRvRmxvYXQoc3JjLT5SKTsKKyAgICBkc3QtPmdyZWVuID0gZ2w6Om5vcm1hbGl6ZWRUb0Zs
b2F0KHNyYy0+Ryk7CisgICAgZHN0LT5ibHVlICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMt
PkIpOworICAgIGRzdC0+YWxwaGEgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5BKTsKK30K
Kwordm9pZCBSOEc4QjhBODo6d3JpdGVDb2xvcihSOEc4QjhBOCAqZHN0LCBjb25zdCBnbDo6Q29s
b3JVSSAqc3JjKQoreworICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHNyYy0+cmVk
KTsKKyAgICBkc3QtPkcgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzcmMtPmdyZWVuKTsKKyAgICBk
c3QtPkIgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzcmMtPmJsdWUpOworICAgIGRzdC0+QSA9IHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KHNyYy0+YWxwaGEpOworfQorCit2b2lkIFI4RzhCOEE4Ojp3cml0
ZUNvbG9yKFI4RzhCOEE4ICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKK3sKKyAgICBkc3Qt
PlIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dWludDhfdD4oc3JjLT5yZWQpOworICAgIGRzdC0+
RyA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1aW50OF90PihzcmMtPmdyZWVuKTsKKyAgICBkc3Qt
PkIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dWludDhfdD4oc3JjLT5ibHVlKTsKKyAgICBkc3Qt
PkEgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dWludDhfdD4oc3JjLT5hbHBoYSk7Cit9CisKK3Zv
aWQgUjhHOEI4QTg6OmF2ZXJhZ2UoUjhHOEI4QTggKmRzdCwgY29uc3QgUjhHOEI4QTggKnNyYzEs
IGNvbnN0IFI4RzhCOEE4ICpzcmMyKQoreworICAgICoodWludDMyX3QgKilkc3QgPSAoKCgqKHVp
bnQzMl90ICopc3JjMSBeICoodWludDMyX3QgKilzcmMyKSAmIDB4RkVGRUZFRkUpID4+IDEpICsK
KyAgICAgICAgICAgICAgICAgICAgICAgKCoodWludDMyX3QgKilzcmMxICYgKih1aW50MzJfdCAq
KXNyYzIpOworfQorCit2b2lkIEI4RzhSOEE4OjpyZWFkQ29sb3IoZ2w6OkNvbG9yVUkgKmRzdCwg
Y29uc3QgQjhHOFI4QTggKnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gc3JjLT5SOworICAgIGRz
dC0+Z3JlZW4gPSBzcmMtPkc7CisgICAgZHN0LT5ibHVlICA9IHNyYy0+QjsKKyAgICBkc3QtPmFs
cGhhID0gc3JjLT5BOworfQorCit2b2lkIEI4RzhSOEE4OjpyZWFkQ29sb3IoZ2w6OkNvbG9yRiAq
ZHN0LCBjb25zdCBCOEc4UjhBOCAqc3JjKQoreworICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFs
aXplZFRvRmxvYXQoc3JjLT5SKTsKKyAgICBkc3QtPmdyZWVuID0gZ2w6Om5vcm1hbGl6ZWRUb0Zs
b2F0KHNyYy0+Ryk7CisgICAgZHN0LT5ibHVlICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMt
PkIpOworICAgIGRzdC0+YWxwaGEgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5BKTsKK30K
Kwordm9pZCBCOEc4UjhBODo6d3JpdGVDb2xvcihCOEc4UjhBOCAqZHN0LCBjb25zdCBnbDo6Q29s
b3JVSSAqc3JjKQoreworICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHNyYy0+cmVk
KTsKKyAgICBkc3QtPkcgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzcmMtPmdyZWVuKTsKKyAgICBk
c3QtPkIgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzcmMtPmJsdWUpOworICAgIGRzdC0+QSA9IHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KHNyYy0+YWxwaGEpOworfQorCit2b2lkIEI4RzhSOEE4Ojp3cml0
ZUNvbG9yKEI4RzhSOEE4ICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKK3sKKyAgICBkc3Qt
PlIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dWludDhfdD4oc3JjLT5yZWQpOworICAgIGRzdC0+
RyA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1aW50OF90PihzcmMtPmdyZWVuKTsKKyAgICBkc3Qt
PkIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dWludDhfdD4oc3JjLT5ibHVlKTsKKyAgICBkc3Qt
PkEgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dWludDhfdD4oc3JjLT5hbHBoYSk7Cit9CisKK3Zv
aWQgQjhHOFI4QTg6OmF2ZXJhZ2UoQjhHOFI4QTggKmRzdCwgY29uc3QgQjhHOFI4QTggKnNyYzEs
IGNvbnN0IEI4RzhSOEE4ICpzcmMyKQoreworICAgICoodWludDMyX3QgKilkc3QgPSAoKCgqKHVp
bnQzMl90ICopc3JjMSBeICoodWludDMyX3QgKilzcmMyKSAmIDB4RkVGRUZFRkUpID4+IDEpICsK
KyAgICAgICAgICAgICAgICAgICAgICAgKCoodWludDMyX3QgKilzcmMxICYgKih1aW50MzJfdCAq
KXNyYzIpOworfQorCit2b2lkIEI4RzhSOFg4OjpyZWFkQ29sb3IoZ2w6OkNvbG9yVUkgKmRzdCwg
Y29uc3QgQjhHOFI4WDggKnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gc3JjLT5SOworICAgIGRz
dC0+Z3JlZW4gPSBzcmMtPkc7CisgICAgZHN0LT5ibHVlICA9IHNyYy0+QjsKKyAgICBkc3QtPmFs
cGhhID0gMTsKK30KKwordm9pZCBCOEc4UjhYODo6cmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwg
Y29uc3QgQjhHOFI4WDggKnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRU
b0Zsb2F0KHNyYy0+Uik7CisgICAgZHN0LT5ncmVlbiA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChz
cmMtPkcpOworICAgIGRzdC0+Ymx1ZSAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5CKTsK
KyAgICBkc3QtPmFscGhhID0gMS4wZjsKK30KKwordm9pZCBCOEc4UjhYODo6d3JpdGVDb2xvcihC
OEc4UjhYOCAqZHN0LCBjb25zdCBnbDo6Q29sb3JVSSAqc3JjKQoreworICAgIGRzdC0+UiA9IHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KHNyYy0+cmVkKTsKKyAgICBkc3QtPkcgPSBzdGF0aWNfY2FzdDx1
aW50OF90PihzcmMtPmdyZWVuKTsKKyAgICBkc3QtPkIgPSBzdGF0aWNfY2FzdDx1aW50OF90Pihz
cmMtPmJsdWUpOworICAgIGRzdC0+WCA9IDI1NTsKK30KKwordm9pZCBCOEc4UjhYODo6d3JpdGVD
b2xvcihCOEc4UjhYOCAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCit7CisgICAgZHN0LT5S
ID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPHVpbnQ4X3Q+KHNyYy0+cmVkKTsKKyAgICBkc3QtPkcg
PSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dWludDhfdD4oc3JjLT5ncmVlbik7CisgICAgZHN0LT5C
ID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPHVpbnQ4X3Q+KHNyYy0+Ymx1ZSk7CisgICAgZHN0LT5Y
ID0gMjU1OworfQorCit2b2lkIEI4RzhSOFg4OjphdmVyYWdlKEI4RzhSOFg4ICpkc3QsIGNvbnN0
IEI4RzhSOFg4ICpzcmMxLCBjb25zdCBCOEc4UjhYOCAqc3JjMikKK3sKKyAgICAqKHVpbnQzMl90
ICopZHN0ID0gKCgoKih1aW50MzJfdCAqKXNyYzEgXiAqKHVpbnQzMl90ICopc3JjMikgJiAweEZF
RkVGRUZFKSA+PiAxKSArCisgICAgICAgICAgICAgICAgICAgICAgICgqKHVpbnQzMl90ICopc3Jj
MSAmICoodWludDMyX3QgKilzcmMyKTsKKyAgICBkc3QtPlggPSAyNTU7Cit9CisKK3ZvaWQgQTFS
NUc1QjU6OnJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IEExUjVHNUI1ICpzcmMpCit7
CisgICAgZHN0LT5hbHBoYSA9IGdsOjpub3JtYWxpemVkVG9GbG9hdDwxPihnbDo6Z2V0U2hpZnRl
ZERhdGE8MSwgMTU+KHNyYy0+QVJHQikpOworICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXpl
ZFRvRmxvYXQ8NT4oZ2w6OmdldFNoaWZ0ZWREYXRhPDUsIDEwPihzcmMtPkFSR0IpKTsKKyAgICBk
c3QtPmdyZWVuID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0PDU+KGdsOjpnZXRTaGlmdGVkRGF0YTw1
LCA1PihzcmMtPkFSR0IpKTsKKyAgICBkc3QtPmJsdWUgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0
PDU+KGdsOjpnZXRTaGlmdGVkRGF0YTw1LCAwPihzcmMtPkFSR0IpKTsKK30KKwordm9pZCBBMVI1
RzVCNTo6d3JpdGVDb2xvcihBMVI1RzVCNSAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCit7
CisgICAgZHN0LT5BUkdCID0gZ2w6OnNoaWZ0RGF0YTwxLCAxNT4oZ2w6OmZsb2F0VG9Ob3JtYWxp
emVkPDEsIHVpbnQxNl90PihzcmMtPmFscGhhKSkgfAorICAgICAgICAgICAgICAgIGdsOjpzaGlm
dERhdGE8NSwgMTA+KGdsOjpmbG9hdFRvTm9ybWFsaXplZDw1LCB1aW50MTZfdD4oc3JjLT5yZWQp
KSB8CisgICAgICAgICAgICAgICAgZ2w6OnNoaWZ0RGF0YTw1LCA1PihnbDo6ZmxvYXRUb05vcm1h
bGl6ZWQ8NSwgdWludDE2X3Q+KHNyYy0+Z3JlZW4pKSB8CisgICAgICAgICAgICAgICAgZ2w6OnNo
aWZ0RGF0YTw1LCAwPihnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8NSwgdWludDE2X3Q+KHNyYy0+Ymx1
ZSkpOworfQorCit2b2lkIEExUjVHNUI1OjphdmVyYWdlKEExUjVHNUI1ICpkc3QsIGNvbnN0IEEx
UjVHNUI1ICpzcmMxLCBjb25zdCBBMVI1RzVCNSAqc3JjMikKK3sKKyAgICBkc3QtPkFSR0IgPSBn
bDo6c2hpZnREYXRhPDEsIDE1PihnbDo6YXZlcmFnZShnbDo6Z2V0U2hpZnRlZERhdGE8MSwgMTU+
KHNyYzEtPkFSR0IpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsOjpnZXRTaGlmdGVkRGF0YTwxLCAxNT4oc3JjMi0+QVJHQikpKSB8CisgICAgICAg
ICAgICAgICAgZ2w6OnNoaWZ0RGF0YTw1LCAxMD4oZ2w6OmF2ZXJhZ2UoZ2w6OmdldFNoaWZ0ZWRE
YXRhPDUsIDEwPihzcmMxLT5BUkdCKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnbDo6Z2V0U2hpZnRlZERhdGE8NSwgMTA+KHNyYzItPkFSR0IpKSkg
fAorICAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NSwgNT4oZ2w6OmF2ZXJhZ2UoZ2w6Omdl
dFNoaWZ0ZWREYXRhPDUsIDU+KHNyYzEtPkFSR0IpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OmdldFNoaWZ0ZWREYXRhPDUsIDU+KHNyYzItPkFS
R0IpKSkgfAorICAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NSwgMD4oZ2w6OmF2ZXJhZ2Uo
Z2w6OmdldFNoaWZ0ZWREYXRhPDUsIDA+KHNyYzEtPkFSR0IpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OmdldFNoaWZ0ZWREYXRhPDUsIDA+KHNy
YzItPkFSR0IpKSk7Cit9CisKK3ZvaWQgUjVHNUI1QTE6OnJlYWRDb2xvcihnbDo6Q29sb3JGICpk
c3QsIGNvbnN0IFI1RzVCNUExICpzcmMpCit7CisgICAgZHN0LT5yZWQgICA9IGdsOjpub3JtYWxp
emVkVG9GbG9hdDw1PihnbDo6Z2V0U2hpZnRlZERhdGE8NSwgMTE+KHNyYy0+UkdCQSkpOworICAg
IGRzdC0+Z3JlZW4gPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQ8NT4oZ2w6OmdldFNoaWZ0ZWREYXRh
PDUsIDY+KHNyYy0+UkdCQSkpOworICAgIGRzdC0+Ymx1ZSAgPSBnbDo6bm9ybWFsaXplZFRvRmxv
YXQ8NT4oZ2w6OmdldFNoaWZ0ZWREYXRhPDUsIDE+KHNyYy0+UkdCQSkpOworICAgIGRzdC0+YWxw
aGEgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQ8MT4oZ2w6OmdldFNoaWZ0ZWREYXRhPDEsIDA+KHNy
Yy0+UkdCQSkpOworfQorCit2b2lkIFI1RzVCNUExOjp3cml0ZUNvbG9yKFI1RzVCNUExICpkc3Qs
IGNvbnN0IGdsOjpDb2xvckYgKnNyYykKK3sKKyAgICBkc3QtPlJHQkEgPSBnbDo6c2hpZnREYXRh
PDUsIDExPihnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8NSwgdWludDE2X3Q+KHNyYy0+cmVkKSkgfAor
ICAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NSwgNj4oZ2w6OmZsb2F0VG9Ob3JtYWxpemVk
PDUsIHVpbnQxNl90PihzcmMtPmdyZWVuKSkgfAorICAgICAgICAgICAgICAgIGdsOjpzaGlmdERh
dGE8NSwgMT4oZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPDUsIHVpbnQxNl90PihzcmMtPmJsdWUpKSB8
CisgICAgICAgICAgICAgICAgZ2w6OnNoaWZ0RGF0YTwxLCAwPihnbDo6ZmxvYXRUb05vcm1hbGl6
ZWQ8MSwgdWludDE2X3Q+KHNyYy0+YWxwaGEpKTsKK30KKwordm9pZCBSNUc1QjVBMTo6YXZlcmFn
ZShSNUc1QjVBMSAqZHN0LCBjb25zdCBSNUc1QjVBMSAqc3JjMSwgY29uc3QgUjVHNUI1QTEgKnNy
YzIpCit7CisgICAgZHN0LT5SR0JBID0gZ2w6OnNoaWZ0RGF0YTw1LCAxMT4oZ2w6OmF2ZXJhZ2Uo
Z2w6OmdldFNoaWZ0ZWREYXRhPDUsIDExPihzcmMxLT5SR0JBKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6Z2V0U2hpZnRlZERhdGE8NSwgMTE+
KHNyYzItPlJHQkEpKSkgfAorICAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NSwgNj4oZ2w6
OmF2ZXJhZ2UoZ2w6OmdldFNoaWZ0ZWREYXRhPDUsIDY+KHNyYzEtPlJHQkEpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OmdldFNoaWZ0ZWREYXRh
PDUsIDY+KHNyYzItPlJHQkEpKSkgfAorICAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NSwg
MT4oZ2w6OmF2ZXJhZ2UoZ2w6OmdldFNoaWZ0ZWREYXRhPDUsIDE+KHNyYzEtPlJHQkEpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OmdldFNoaWZ0
ZWREYXRhPDUsIDE+KHNyYzItPlJHQkEpKSkgfAorICAgICAgICAgICAgICAgIGdsOjpzaGlmdERh
dGE8MSwgMD4oZ2w6OmF2ZXJhZ2UoZ2w6OmdldFNoaWZ0ZWREYXRhPDEsIDA+KHNyYzEtPlJHQkEp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6Omdl
dFNoaWZ0ZWREYXRhPDEsIDA+KHNyYzItPlJHQkEpKSk7Cit9CisKK3ZvaWQgUjRHNEI0QTQ6OnJl
YWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFI0RzRCNEE0ICpzcmMpCit7CisgICAgZHN0
LT5yZWQgICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdDw0PihnbDo6Z2V0U2hpZnRlZERhdGE8NCwg
MTI+KHNyYy0+UkdCQSkpOworICAgIGRzdC0+Z3JlZW4gPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQ8
ND4oZ2w6OmdldFNoaWZ0ZWREYXRhPDQsIDg+KHNyYy0+UkdCQSkpOworICAgIGRzdC0+Ymx1ZSAg
PSBnbDo6bm9ybWFsaXplZFRvRmxvYXQ8ND4oZ2w6OmdldFNoaWZ0ZWREYXRhPDQsIDQ+KHNyYy0+
UkdCQSkpOworICAgIGRzdC0+YWxwaGEgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQ8ND4oZ2w6Omdl
dFNoaWZ0ZWREYXRhPDQsIDA+KHNyYy0+UkdCQSkpOworfQorCit2b2lkIFI0RzRCNEE0Ojp3cml0
ZUNvbG9yKFI0RzRCNEE0ICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKK3sKKyAgICBkc3Qt
PlJHQkEgPSBnbDo6c2hpZnREYXRhPDQsIDEyPihnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8NCwgdWlu
dDE2X3Q+KHNyYy0+cmVkKSkgfAorICAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NCwgOD4o
Z2w6OmZsb2F0VG9Ob3JtYWxpemVkPDQsIHVpbnQxNl90PihzcmMtPmdyZWVuKSkgfAorICAgICAg
ICAgICAgICAgIGdsOjpzaGlmdERhdGE8NCwgND4oZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPDQsIHVp
bnQxNl90PihzcmMtPmJsdWUpKSB8CisgICAgICAgICAgICAgICAgZ2w6OnNoaWZ0RGF0YTw0LCAw
PihnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8NCwgdWludDE2X3Q+KHNyYy0+YWxwaGEpKTsKK30KKwor
dm9pZCBSNEc0QjRBNDo6YXZlcmFnZShSNEc0QjRBNCAqZHN0LCBjb25zdCBSNEc0QjRBNCAqc3Jj
MSwgY29uc3QgUjRHNEI0QTQgKnNyYzIpCit7CisgICAgZHN0LT5SR0JBID0gZ2w6OnNoaWZ0RGF0
YTw0LCAxMj4oZ2w6OmF2ZXJhZ2UoZ2w6OmdldFNoaWZ0ZWREYXRhPDQsIDEyPihzcmMxLT5SR0JB
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6
Z2V0U2hpZnRlZERhdGE8NCwgMTI+KHNyYzItPlJHQkEpKSkgfAorICAgICAgICAgICAgICAgIGds
OjpzaGlmdERhdGE8NCwgOD4oZ2w6OmF2ZXJhZ2UoZ2w6OmdldFNoaWZ0ZWREYXRhPDQsIDg+KHNy
YzEtPlJHQkEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2w6OmdldFNoaWZ0ZWREYXRhPDQsIDg+KHNyYzItPlJHQkEpKSkgfAorICAgICAgICAgICAg
ICAgIGdsOjpzaGlmdERhdGE8NCwgND4oZ2w6OmF2ZXJhZ2UoZ2w6OmdldFNoaWZ0ZWREYXRhPDQs
IDQ+KHNyYzEtPlJHQkEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2w6OmdldFNoaWZ0ZWREYXRhPDQsIDQ+KHNyYzItPlJHQkEpKSkgfAorICAgICAg
ICAgICAgICAgIGdsOjpzaGlmdERhdGE8NCwgMD4oZ2w6OmF2ZXJhZ2UoZ2w6OmdldFNoaWZ0ZWRE
YXRhPDQsIDA+KHNyYzEtPlJHQkEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2w6OmdldFNoaWZ0ZWREYXRhPDQsIDA+KHNyYzItPlJHQkEpKSk7Cit9
CisKK3ZvaWQgQTRSNEc0QjQ6OnJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IEE0UjRH
NEI0ICpzcmMpCit7CisgICAgZHN0LT5hbHBoYSA9IGdsOjpub3JtYWxpemVkVG9GbG9hdDw0Pihn
bDo6Z2V0U2hpZnRlZERhdGE8NCwgMTI+KHNyYy0+QVJHQikpOworICAgIGRzdC0+cmVkICAgPSBn
bDo6bm9ybWFsaXplZFRvRmxvYXQ8ND4oZ2w6OmdldFNoaWZ0ZWREYXRhPDQsIDg+KHNyYy0+QVJH
QikpOworICAgIGRzdC0+Z3JlZW4gPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQ8ND4oZ2w6OmdldFNo
aWZ0ZWREYXRhPDQsIDQ+KHNyYy0+QVJHQikpOworICAgIGRzdC0+Ymx1ZSAgPSBnbDo6bm9ybWFs
aXplZFRvRmxvYXQ8ND4oZ2w6OmdldFNoaWZ0ZWREYXRhPDQsIDA+KHNyYy0+QVJHQikpOworfQor
Cit2b2lkIEE0UjRHNEI0Ojp3cml0ZUNvbG9yKEE0UjRHNEI0ICpkc3QsIGNvbnN0IGdsOjpDb2xv
ckYgKnNyYykKK3sKKyAgICBkc3QtPkFSR0IgPSBnbDo6c2hpZnREYXRhPDQsIDEyPihnbDo6Zmxv
YXRUb05vcm1hbGl6ZWQ8NCwgdWludDE2X3Q+KHNyYy0+YWxwaGEpKSB8CisgICAgICAgICAgICAg
ICAgZ2w6OnNoaWZ0RGF0YTw0LCA4PihnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8NCwgdWludDE2X3Q+
KHNyYy0+cmVkKSkgfAorICAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NCwgND4oZ2w6OmZs
b2F0VG9Ob3JtYWxpemVkPDQsIHVpbnQxNl90PihzcmMtPmdyZWVuKSkgfAorICAgICAgICAgICAg
ICAgIGdsOjpzaGlmdERhdGE8NCwgMD4oZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPDQsIHVpbnQxNl90
PihzcmMtPmJsdWUpKTsKK30KKwordm9pZCBBNFI0RzRCNDo6YXZlcmFnZShBNFI0RzRCNCAqZHN0
LCBjb25zdCBBNFI0RzRCNCAqc3JjMSwgY29uc3QgQTRSNEc0QjQgKnNyYzIpCit7CisgICAgZHN0
LT5BUkdCID0gZ2w6OnNoaWZ0RGF0YTw0LCAxMj4oZ2w6OmF2ZXJhZ2UoZ2w6OmdldFNoaWZ0ZWRE
YXRhPDQsIDEyPihzcmMxLT5BUkdCKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnbDo6Z2V0U2hpZnRlZERhdGE8NCwgMTI+KHNyYzItPkFSR0IpKSkg
fAorICAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NCwgOD4oZ2w6OmF2ZXJhZ2UoZ2w6Omdl
dFNoaWZ0ZWREYXRhPDQsIDg+KHNyYzEtPkFSR0IpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OmdldFNoaWZ0ZWREYXRhPDQsIDg+KHNyYzItPkFS
R0IpKSkgfAorICAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NCwgND4oZ2w6OmF2ZXJhZ2Uo
Z2w6OmdldFNoaWZ0ZWREYXRhPDQsIDQ+KHNyYzEtPkFSR0IpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OmdldFNoaWZ0ZWREYXRhPDQsIDQ+KHNy
YzItPkFSR0IpKSkgfAorICAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NCwgMD4oZ2w6OmF2
ZXJhZ2UoZ2w6OmdldFNoaWZ0ZWREYXRhPDQsIDA+KHNyYzEtPkFSR0IpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OmdldFNoaWZ0ZWREYXRhPDQs
IDA+KHNyYzItPkFSR0IpKSk7Cit9CisKK3ZvaWQgUjE2OjpyZWFkQ29sb3IoZ2w6OkNvbG9yVUkg
KmRzdCwgY29uc3QgUjE2ICpzcmMpCit7CisgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKKyAgICBk
c3QtPmdyZWVuID0gMDsKKyAgICBkc3QtPmJsdWUgID0gMDsKKyAgICBkc3QtPmFscGhhID0gMTsK
K30KKwordm9pZCBSMTY6OnJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIxNiAqc3Jj
KQoreworICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5SKTsKKyAg
ICBkc3QtPmdyZWVuID0gMC4wZjsKKyAgICBkc3QtPmJsdWUgID0gMC4wZjsKKyAgICBkc3QtPmFs
cGhhID0gMS4wZjsKK30KKwordm9pZCBSMTY6OndyaXRlQ29sb3IoUjE2ICpkc3QsIGNvbnN0IGds
OjpDb2xvclVJICpzcmMpCit7CisgICAgZHN0LT5SID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHNy
Yy0+cmVkKTsKK30KKwordm9pZCBSMTY6OndyaXRlQ29sb3IoUjE2ICpkc3QsIGNvbnN0IGdsOjpD
b2xvckYgKnNyYykKK3sKKyAgICBkc3QtPlIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dWludDE2
X3Q+KHNyYy0+cmVkKTsKK30KKwordm9pZCBSMTY6OmF2ZXJhZ2UoUjE2ICpkc3QsIGNvbnN0IFIx
NiAqc3JjMSwgY29uc3QgUjE2ICpzcmMyKQoreworICAgIGRzdC0+UiA9IGdsOjphdmVyYWdlKHNy
YzEtPlIsIHNyYzItPlIpOworfQorCit2b2lkIFIxNkcxNjo6cmVhZENvbG9yKGdsOjpDb2xvclVJ
ICpkc3QsIGNvbnN0IFIxNkcxNiAqc3JjKQoreworICAgIGRzdC0+cmVkICAgPSBzcmMtPlI7Cisg
ICAgZHN0LT5ncmVlbiA9IHNyYy0+RzsKKyAgICBkc3QtPmJsdWUgID0gMDsKKyAgICBkc3QtPmFs
cGhhID0gMTsKK30KKwordm9pZCBSMTZHMTY6OnJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNv
bnN0IFIxNkcxNiAqc3JjKQoreworICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRvRmxv
YXQoc3JjLT5SKTsKKyAgICBkc3QtPmdyZWVuID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+
Ryk7CisgICAgZHN0LT5ibHVlICA9IDAuMGY7CisgICAgZHN0LT5hbHBoYSA9IDEuMGY7Cit9CisK
K3ZvaWQgUjE2RzE2Ojp3cml0ZUNvbG9yKFIxNkcxNiAqZHN0LCBjb25zdCBnbDo6Q29sb3JVSSAq
c3JjKQoreworICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PHVpbnQxNl90PihzcmMtPnJlZCk7Cisg
ICAgZHN0LT5HID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHNyYy0+Z3JlZW4pOworfQorCit2b2lk
IFIxNkcxNjo6d3JpdGVDb2xvcihSMTZHMTYgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQor
eworICAgIGRzdC0+UiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1aW50MTZfdD4oc3JjLT5yZWQp
OworICAgIGRzdC0+RyA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1aW50MTZfdD4oc3JjLT5ncmVl
bik7Cit9CisKK3ZvaWQgUjE2RzE2OjphdmVyYWdlKFIxNkcxNiAqZHN0LCBjb25zdCBSMTZHMTYg
KnNyYzEsIGNvbnN0IFIxNkcxNiAqc3JjMikKK3sKKyAgICBkc3QtPlIgPSBnbDo6YXZlcmFnZShz
cmMxLT5SLCBzcmMyLT5SKTsKKyAgICBkc3QtPkcgPSBnbDo6YXZlcmFnZShzcmMxLT5HLCBzcmMy
LT5HKTsKK30KKwordm9pZCBSMTZHMTZCMTY6OnJlYWRDb2xvcihnbDo6Q29sb3JVSSAqZHN0LCBj
b25zdCBSMTZHMTZCMTYgKnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gc3JjLT5SOworICAgIGRz
dC0+Z3JlZW4gPSBzcmMtPkc7CisgICAgZHN0LT5ibHVlICA9IHNyYy0+QjsKKyAgICBkc3QtPmFs
cGhhID0gMTsKK30KKwordm9pZCBSMTZHMTZCMTY6OnJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3Qs
IGNvbnN0IFIxNkcxNkIxNiAqc3JjKQoreworICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXpl
ZFRvRmxvYXQoc3JjLT5SKTsKKyAgICBkc3QtPmdyZWVuID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0
KHNyYy0+Ryk7CisgICAgZHN0LT5ibHVlICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkIp
OworICAgIGRzdC0+YWxwaGEgPSAxLjBmOworfQorCit2b2lkIFIxNkcxNkIxNjo6d3JpdGVDb2xv
cihSMTZHMTZCMTYgKmRzdCwgY29uc3QgZ2w6OkNvbG9yVUkgKnNyYykKK3sKKyAgICBkc3QtPlIg
PSBzdGF0aWNfY2FzdDx1aW50MTZfdD4oc3JjLT5yZWQpOworICAgIGRzdC0+RyA9IHN0YXRpY19j
YXN0PHVpbnQxNl90PihzcmMtPmdyZWVuKTsKKyAgICBkc3QtPkIgPSBzdGF0aWNfY2FzdDx1aW50
MTZfdD4oc3JjLT5ibHVlKTsKK30KKwordm9pZCBSMTZHMTZCMTY6OndyaXRlQ29sb3IoUjE2RzE2
QjE2ICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKK3sKKyAgICBkc3QtPlIgPSBnbDo6Zmxv
YXRUb05vcm1hbGl6ZWQ8dWludDE2X3Q+KHNyYy0+cmVkKTsKKyAgICBkc3QtPkcgPSBnbDo6Zmxv
YXRUb05vcm1hbGl6ZWQ8dWludDE2X3Q+KHNyYy0+Z3JlZW4pOworICAgIGRzdC0+QiA9IGdsOjpm
bG9hdFRvTm9ybWFsaXplZDx1aW50MTZfdD4oc3JjLT5ibHVlKTsKK30KKwordm9pZCBSMTZHMTZC
MTY6OmF2ZXJhZ2UoUjE2RzE2QjE2ICpkc3QsIGNvbnN0IFIxNkcxNkIxNiAqc3JjMSwgY29uc3Qg
UjE2RzE2QjE2ICpzcmMyKQoreworICAgIGRzdC0+UiA9IGdsOjphdmVyYWdlKHNyYzEtPlIsIHNy
YzItPlIpOworICAgIGRzdC0+RyA9IGdsOjphdmVyYWdlKHNyYzEtPkcsIHNyYzItPkcpOworICAg
IGRzdC0+QiA9IGdsOjphdmVyYWdlKHNyYzEtPkIsIHNyYzItPkIpOworfQorCit2b2lkIFIxNkcx
NkIxNkExNjo6cmVhZENvbG9yKGdsOjpDb2xvclVJICpkc3QsIGNvbnN0IFIxNkcxNkIxNkExNiAq
c3JjKQoreworICAgIGRzdC0+cmVkICAgPSBzcmMtPlI7CisgICAgZHN0LT5ncmVlbiA9IHNyYy0+
RzsKKyAgICBkc3QtPmJsdWUgID0gc3JjLT5COworICAgIGRzdC0+YWxwaGEgPSBzcmMtPkE7Cit9
CisKK3ZvaWQgUjE2RzE2QjE2QTE2OjpyZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBS
MTZHMTZCMTZBMTYgKnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zs
b2F0KHNyYy0+Uik7CisgICAgZHN0LT5ncmVlbiA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMt
PkcpOworICAgIGRzdC0+Ymx1ZSAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5CKTsKKyAg
ICBkc3QtPmFscGhhID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+QSk7Cit9CisKK3ZvaWQg
UjE2RzE2QjE2QTE2Ojp3cml0ZUNvbG9yKFIxNkcxNkIxNkExNiAqZHN0LCBjb25zdCBnbDo6Q29s
b3JVSSAqc3JjKQoreworICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PHVpbnQxNl90PihzcmMtPnJl
ZCk7CisgICAgZHN0LT5HID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHNyYy0+Z3JlZW4pOworICAg
IGRzdC0+QiA9IHN0YXRpY19jYXN0PHVpbnQxNl90PihzcmMtPmJsdWUpOworICAgIGRzdC0+QSA9
IHN0YXRpY19jYXN0PHVpbnQxNl90PihzcmMtPmFscGhhKTsKK30KKwordm9pZCBSMTZHMTZCMTZB
MTY6OndyaXRlQ29sb3IoUjE2RzE2QjE2QTE2ICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykK
K3sKKyAgICBkc3QtPlIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dWludDE2X3Q+KHNyYy0+cmVk
KTsKKyAgICBkc3QtPkcgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dWludDE2X3Q+KHNyYy0+Z3Jl
ZW4pOworICAgIGRzdC0+QiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1aW50MTZfdD4oc3JjLT5i
bHVlKTsKKyAgICBkc3QtPkEgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dWludDE2X3Q+KHNyYy0+
YWxwaGEpOworfQorCit2b2lkIFIxNkcxNkIxNkExNjo6YXZlcmFnZShSMTZHMTZCMTZBMTYgKmRz
dCwgY29uc3QgUjE2RzE2QjE2QTE2ICpzcmMxLCBjb25zdCBSMTZHMTZCMTZBMTYgKnNyYzIpCit7
CisgICAgZHN0LT5SID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Uiwgc3JjMi0+Uik7CisgICAgZHN0LT5H
ID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Rywgc3JjMi0+Ryk7CisgICAgZHN0LT5CID0gZ2w6OmF2ZXJh
Z2Uoc3JjMS0+Qiwgc3JjMi0+Qik7CisgICAgZHN0LT5BID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+QSwg
c3JjMi0+QSk7Cit9CisKK3ZvaWQgUjMyOjpyZWFkQ29sb3IoZ2w6OkNvbG9yVUkgKmRzdCwgY29u
c3QgUjMyICpzcmMpCit7CisgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKKyAgICBkc3QtPmdyZWVu
ID0gMDsKKyAgICBkc3QtPmJsdWUgID0gMDsKKyAgICBkc3QtPmFscGhhID0gMTsKK30KKwordm9p
ZCBSMzI6OnJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIzMiAqc3JjKQoreworICAg
IGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5SKTsKKyAgICBkc3QtPmdy
ZWVuID0gMC4wZjsKKyAgICBkc3QtPmJsdWUgID0gMC4wZjsKKyAgICBkc3QtPmFscGhhID0gMS4w
ZjsKK30KKwordm9pZCBSMzI6OndyaXRlQ29sb3IoUjMyICpkc3QsIGNvbnN0IGdsOjpDb2xvclVJ
ICpzcmMpCit7CisgICAgZHN0LT5SID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHNyYy0+cmVkKTsK
K30KKwordm9pZCBSMzI6OndyaXRlQ29sb3IoUjMyICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNy
YykKK3sKKyAgICBkc3QtPlIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dWludDMyX3Q+KHNyYy0+
cmVkKTsKK30KKwordm9pZCBSMzI6OmF2ZXJhZ2UoUjMyICpkc3QsIGNvbnN0IFIzMiAqc3JjMSwg
Y29uc3QgUjMyICpzcmMyKQoreworICAgIGRzdC0+UiA9IGdsOjphdmVyYWdlKHNyYzEtPlIsIHNy
YzItPlIpOworfQorCit2b2lkIFIzMkczMjo6cmVhZENvbG9yKGdsOjpDb2xvclVJICpkc3QsIGNv
bnN0IFIzMkczMiAqc3JjKQoreworICAgIGRzdC0+cmVkICAgPSBzcmMtPlI7CisgICAgZHN0LT5n
cmVlbiA9IHNyYy0+RzsKKyAgICBkc3QtPmJsdWUgID0gMDsKKyAgICBkc3QtPmFscGhhID0gMTsK
K30KKwordm9pZCBSMzJHMzI6OnJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIzMkcz
MiAqc3JjKQoreworICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5S
KTsKKyAgICBkc3QtPmdyZWVuID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Ryk7CisgICAg
ZHN0LT5ibHVlICA9IDAuMGY7CisgICAgZHN0LT5hbHBoYSA9IDEuMGY7Cit9CisKK3ZvaWQgUjMy
RzMyOjp3cml0ZUNvbG9yKFIzMkczMiAqZHN0LCBjb25zdCBnbDo6Q29sb3JVSSAqc3JjKQorewor
ICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihzcmMtPnJlZCk7CisgICAgZHN0LT5H
ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHNyYy0+Z3JlZW4pOworfQorCit2b2lkIFIzMkczMjo6
d3JpdGVDb2xvcihSMzJHMzIgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQoreworICAgIGRz
dC0+UiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1aW50MzJfdD4oc3JjLT5yZWQpOworICAgIGRz
dC0+RyA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1aW50MzJfdD4oc3JjLT5ncmVlbik7Cit9CisK
K3ZvaWQgUjMyRzMyOjphdmVyYWdlKFIzMkczMiAqZHN0LCBjb25zdCBSMzJHMzIgKnNyYzEsIGNv
bnN0IFIzMkczMiAqc3JjMikKK3sKKyAgICBkc3QtPlIgPSBnbDo6YXZlcmFnZShzcmMxLT5SLCBz
cmMyLT5SKTsKKyAgICBkc3QtPkcgPSBnbDo6YXZlcmFnZShzcmMxLT5HLCBzcmMyLT5HKTsKK30K
Kwordm9pZCBSMzJHMzJCMzI6OnJlYWRDb2xvcihnbDo6Q29sb3JVSSAqZHN0LCBjb25zdCBSMzJH
MzJCMzIgKnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gc3JjLT5SOworICAgIGRzdC0+Z3JlZW4g
PSBzcmMtPkc7CisgICAgZHN0LT5ibHVlICA9IHNyYy0+QjsKKyAgICBkc3QtPmFscGhhID0gMTsK
K30KKwordm9pZCBSMzJHMzJCMzI6OnJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIz
MkczMkIzMiAqc3JjKQoreworICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQo
c3JjLT5SKTsKKyAgICBkc3QtPmdyZWVuID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Ryk7
CisgICAgZHN0LT5ibHVlICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkIpOworICAgIGRz
dC0+YWxwaGEgPSAxLjBmOworfQorCit2b2lkIFIzMkczMkIzMjo6d3JpdGVDb2xvcihSMzJHMzJC
MzIgKmRzdCwgY29uc3QgZ2w6OkNvbG9yVUkgKnNyYykKK3sKKyAgICBkc3QtPlIgPSBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oc3JjLT5yZWQpOworICAgIGRzdC0+RyA9IHN0YXRpY19jYXN0PHVpbnQz
Ml90PihzcmMtPmdyZWVuKTsKKyAgICBkc3QtPkIgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3Jj
LT5ibHVlKTsKK30KKwordm9pZCBSMzJHMzJCMzI6OndyaXRlQ29sb3IoUjMyRzMyQjMyICpkc3Qs
IGNvbnN0IGdsOjpDb2xvckYgKnNyYykKK3sKKyAgICBkc3QtPlIgPSBnbDo6ZmxvYXRUb05vcm1h
bGl6ZWQ8dWludDMyX3Q+KHNyYy0+cmVkKTsKKyAgICBkc3QtPkcgPSBnbDo6ZmxvYXRUb05vcm1h
bGl6ZWQ8dWludDMyX3Q+KHNyYy0+Z3JlZW4pOworICAgIGRzdC0+QiA9IGdsOjpmbG9hdFRvTm9y
bWFsaXplZDx1aW50MzJfdD4oc3JjLT5ibHVlKTsKK30KKwordm9pZCBSMzJHMzJCMzI6OmF2ZXJh
Z2UoUjMyRzMyQjMyICpkc3QsIGNvbnN0IFIzMkczMkIzMiAqc3JjMSwgY29uc3QgUjMyRzMyQjMy
ICpzcmMyKQoreworICAgIGRzdC0+UiA9IGdsOjphdmVyYWdlKHNyYzEtPlIsIHNyYzItPlIpOwor
ICAgIGRzdC0+RyA9IGdsOjphdmVyYWdlKHNyYzEtPkcsIHNyYzItPkcpOworICAgIGRzdC0+QiA9
IGdsOjphdmVyYWdlKHNyYzEtPkIsIHNyYzItPkIpOworfQorCit2b2lkIFIzMkczMkIzMkEzMjo6
cmVhZENvbG9yKGdsOjpDb2xvclVJICpkc3QsIGNvbnN0IFIzMkczMkIzMkEzMiAqc3JjKQorewor
ICAgIGRzdC0+cmVkICAgPSBzcmMtPlI7CisgICAgZHN0LT5ncmVlbiA9IHNyYy0+RzsKKyAgICBk
c3QtPmJsdWUgID0gc3JjLT5COworICAgIGRzdC0+YWxwaGEgPSBzcmMtPkE7Cit9CisKK3ZvaWQg
UjMyRzMyQjMyQTMyOjpyZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMzJHMzJCMzJB
MzIgKnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+
Uik7CisgICAgZHN0LT5ncmVlbiA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkcpOworICAg
IGRzdC0+Ymx1ZSAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5CKTsKKyAgICBkc3QtPmFs
cGhhID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+QSk7Cit9CisKK3ZvaWQgUjMyRzMyQjMy
QTMyOjp3cml0ZUNvbG9yKFIzMkczMkIzMkEzMiAqZHN0LCBjb25zdCBnbDo6Q29sb3JVSSAqc3Jj
KQoreworICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihzcmMtPnJlZCk7CisgICAg
ZHN0LT5HID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHNyYy0+Z3JlZW4pOworICAgIGRzdC0+QiA9
IHN0YXRpY19jYXN0PHVpbnQzMl90PihzcmMtPmJsdWUpOworICAgIGRzdC0+QSA9IHN0YXRpY19j
YXN0PHVpbnQzMl90PihzcmMtPmFscGhhKTsKK30KKwordm9pZCBSMzJHMzJCMzJBMzI6OndyaXRl
Q29sb3IoUjMyRzMyQjMyQTMyICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKK3sKKyAgICBk
c3QtPlIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dWludDMyX3Q+KHNyYy0+cmVkKTsKKyAgICBk
c3QtPkcgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dWludDMyX3Q+KHNyYy0+Z3JlZW4pOworICAg
IGRzdC0+QiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1aW50MzJfdD4oc3JjLT5ibHVlKTsKKyAg
ICBkc3QtPkEgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dWludDMyX3Q+KHNyYy0+YWxwaGEpOwor
fQorCit2b2lkIFIzMkczMkIzMkEzMjo6YXZlcmFnZShSMzJHMzJCMzJBMzIgKmRzdCwgY29uc3Qg
UjMyRzMyQjMyQTMyICpzcmMxLCBjb25zdCBSMzJHMzJCMzJBMzIgKnNyYzIpCit7CisgICAgZHN0
LT5SID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Uiwgc3JjMi0+Uik7CisgICAgZHN0LT5HID0gZ2w6OmF2
ZXJhZ2Uoc3JjMS0+Rywgc3JjMi0+Ryk7CisgICAgZHN0LT5CID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+
Qiwgc3JjMi0+Qik7CisgICAgZHN0LT5BID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+QSwgc3JjMi0+QSk7
Cit9CisKK3ZvaWQgUjhTOjpyZWFkQ29sb3IoZ2w6OkNvbG9ySSAqZHN0LCBjb25zdCBSOFMgKnNy
YykKK3sKKyAgICBkc3QtPnJlZCAgID0gc3JjLT5SOworICAgIGRzdC0+Z3JlZW4gPSAwOworICAg
IGRzdC0+Ymx1ZSAgPSAwOworICAgIGRzdC0+YWxwaGEgPSAxOworfQorCit2b2lkIFI4Uzo6cmVh
ZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjhTICpzcmMpCit7CisgICAgZHN0LT5yZWQg
ICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPlIpOworICAgIGRzdC0+Z3JlZW4gPSAwLjBm
OworICAgIGRzdC0+Ymx1ZSAgPSAwLjBmOworICAgIGRzdC0+YWxwaGEgPSAxLjBmOworfQorCit2
b2lkIFI4Uzo6d3JpdGVDb2xvcihSOFMgKmRzdCwgY29uc3QgZ2w6OkNvbG9ySSAqc3JjKQorewor
ICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PGludDhfdD4oc3JjLT5yZWQpOworfQorCit2b2lkIFI4
Uzo6d3JpdGVDb2xvcihSOFMgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQoreworICAgIGRz
dC0+UiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDxpbnQ4X3Q+KHNyYy0+cmVkKTsKK30KKwordm9p
ZCBSOFM6OmF2ZXJhZ2UoUjhTICpkc3QsIGNvbnN0IFI4UyAqc3JjMSwgY29uc3QgUjhTICpzcmMy
KQoreworICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PGludDhfdD4oZ2w6OmF2ZXJhZ2Uoc3JjMS0+
Uiwgc3JjMi0+UikpOworfQorCit2b2lkIFI4RzhTOjpyZWFkQ29sb3IoZ2w6OkNvbG9ySSAqZHN0
LCBjb25zdCBSOEc4UyAqc3JjKQoreworICAgIGRzdC0+cmVkICAgPSBzcmMtPlI7CisgICAgZHN0
LT5ncmVlbiA9IHNyYy0+RzsKKyAgICBkc3QtPmJsdWUgID0gMDsKKyAgICBkc3QtPmFscGhhID0g
MTsKK30KKwordm9pZCBSOEc4Uzo6cmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjhH
OFMgKnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+
Uik7CisgICAgZHN0LT5ncmVlbiA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkcpOworICAg
IGRzdC0+Ymx1ZSAgPSAwLjBmOworICAgIGRzdC0+YWxwaGEgPSAxLjBmOworfQorCit2b2lkIFI4
RzhTOjp3cml0ZUNvbG9yKFI4RzhTICpkc3QsIGNvbnN0IGdsOjpDb2xvckkgKnNyYykKK3sKKyAg
ICBkc3QtPlIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KHNyYy0+cmVkKTsKKyAgICBkc3QtPkcgPSBz
dGF0aWNfY2FzdDxpbnQ4X3Q+KHNyYy0+Z3JlZW4pOworfQorCit2b2lkIFI4RzhTOjp3cml0ZUNv
bG9yKFI4RzhTICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKK3sKKyAgICBkc3QtPlIgPSBn
bDo6ZmxvYXRUb05vcm1hbGl6ZWQ8aW50OF90PihzcmMtPnJlZCk7CisgICAgZHN0LT5HID0gZ2w6
OmZsb2F0VG9Ob3JtYWxpemVkPGludDhfdD4oc3JjLT5ncmVlbik7Cit9CisKK3ZvaWQgUjhHOFM6
OmF2ZXJhZ2UoUjhHOFMgKmRzdCwgY29uc3QgUjhHOFMgKnNyYzEsIGNvbnN0IFI4RzhTICpzcmMy
KQoreworICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PGludDhfdD4oZ2w6OmF2ZXJhZ2Uoc3JjMS0+
Uiwgc3JjMi0+UikpOworICAgIGRzdC0+RyA9IHN0YXRpY19jYXN0PGludDhfdD4oZ2w6OmF2ZXJh
Z2Uoc3JjMS0+Rywgc3JjMi0+RykpOworfQorCit2b2lkIFI4RzhCOFM6OnJlYWRDb2xvcihnbDo6
Q29sb3JJICpkc3QsIGNvbnN0IFI4RzhCOFMgKnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gc3Jj
LT5SOworICAgIGRzdC0+Z3JlZW4gPSBzcmMtPkc7CisgICAgZHN0LT5ibHVlICA9IHNyYy0+QjsK
KyAgICBkc3QtPmFscGhhID0gMTsKK30KKwordm9pZCBSOEc4QjhTOjpyZWFkQ29sb3IoZ2w6OkNv
bG9yRiAqZHN0LCBjb25zdCBSOEc4QjhTICpzcmMpCit7CisgICAgZHN0LT5yZWQgICA9IGdsOjpu
b3JtYWxpemVkVG9GbG9hdChzcmMtPlIpOworICAgIGRzdC0+Z3JlZW4gPSBnbDo6bm9ybWFsaXpl
ZFRvRmxvYXQoc3JjLT5HKTsKKyAgICBkc3QtPmJsdWUgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0
KHNyYy0+Qik7CisgICAgZHN0LT5hbHBoYSA9IDEuMGY7Cit9CisKK3ZvaWQgUjhHOEI4Uzo6d3Jp
dGVDb2xvcihSOEc4QjhTICpkc3QsIGNvbnN0IGdsOjpDb2xvckkgKnNyYykKK3sKKyAgICBkc3Qt
PlIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KHNyYy0+cmVkKTsKKyAgICBkc3QtPkcgPSBzdGF0aWNf
Y2FzdDxpbnQ4X3Q+KHNyYy0+Z3JlZW4pOworICAgIGRzdC0+QiA9IHN0YXRpY19jYXN0PGludDhf
dD4oc3JjLT5ibHVlKTsKK30KKwordm9pZCBSOEc4QjhTOjp3cml0ZUNvbG9yKFI4RzhCOFMgKmRz
dCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQoreworICAgIGRzdC0+UiA9IGdsOjpmbG9hdFRvTm9y
bWFsaXplZDxpbnQ4X3Q+KHNyYy0+cmVkKTsKKyAgICBkc3QtPkcgPSBnbDo6ZmxvYXRUb05vcm1h
bGl6ZWQ8aW50OF90PihzcmMtPmdyZWVuKTsKKyAgICBkc3QtPkIgPSBnbDo6ZmxvYXRUb05vcm1h
bGl6ZWQ8aW50OF90PihzcmMtPmJsdWUpOworfQorCit2b2lkIFI4RzhCOFM6OmF2ZXJhZ2UoUjhH
OEI4UyAqZHN0LCBjb25zdCBSOEc4QjhTICpzcmMxLCBjb25zdCBSOEc4QjhTICpzcmMyKQorewor
ICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PGludDhfdD4oZ2w6OmF2ZXJhZ2Uoc3JjMS0+Uiwgc3Jj
Mi0+UikpOworICAgIGRzdC0+RyA9IHN0YXRpY19jYXN0PGludDhfdD4oZ2w6OmF2ZXJhZ2Uoc3Jj
MS0+Rywgc3JjMi0+RykpOworICAgIGRzdC0+QiA9IHN0YXRpY19jYXN0PGludDhfdD4oZ2w6OmF2
ZXJhZ2Uoc3JjMS0+Qiwgc3JjMi0+QikpOworfQorCit2b2lkIFI4RzhCOEE4Uzo6cmVhZENvbG9y
KGdsOjpDb2xvckkgKmRzdCwgY29uc3QgUjhHOEI4QThTICpzcmMpCit7CisgICAgZHN0LT5yZWQg
ICA9IHNyYy0+UjsKKyAgICBkc3QtPmdyZWVuID0gc3JjLT5HOworICAgIGRzdC0+Ymx1ZSAgPSBz
cmMtPkI7CisgICAgZHN0LT5hbHBoYSA9IHNyYy0+QTsKK30KKwordm9pZCBSOEc4QjhBOFM6OnJl
YWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFI4RzhCOEE4UyAqc3JjKQoreworICAgIGRz
dC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5SKTsKKyAgICBkc3QtPmdyZWVu
ID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Ryk7CisgICAgZHN0LT5ibHVlICA9IGdsOjpu
b3JtYWxpemVkVG9GbG9hdChzcmMtPkIpOworICAgIGRzdC0+YWxwaGEgPSBnbDo6bm9ybWFsaXpl
ZFRvRmxvYXQoc3JjLT5BKTsKK30KKwordm9pZCBSOEc4QjhBOFM6OndyaXRlQ29sb3IoUjhHOEI4
QThTICpkc3QsIGNvbnN0IGdsOjpDb2xvckkgKnNyYykKK3sKKyAgICBkc3QtPlIgPSBzdGF0aWNf
Y2FzdDxpbnQ4X3Q+KHNyYy0+cmVkKTsKKyAgICBkc3QtPkcgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+
KHNyYy0+Z3JlZW4pOworICAgIGRzdC0+QiA9IHN0YXRpY19jYXN0PGludDhfdD4oc3JjLT5ibHVl
KTsKKyAgICBkc3QtPkEgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KHNyYy0+YWxwaGEpOworfQorCit2
b2lkIFI4RzhCOEE4Uzo6d3JpdGVDb2xvcihSOEc4QjhBOFMgKmRzdCwgY29uc3QgZ2w6OkNvbG9y
RiAqc3JjKQoreworICAgIGRzdC0+UiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDxpbnQ4X3Q+KHNy
Yy0+cmVkKTsKKyAgICBkc3QtPkcgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8aW50OF90PihzcmMt
PmdyZWVuKTsKKyAgICBkc3QtPkIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8aW50OF90PihzcmMt
PmJsdWUpOworICAgIGRzdC0+QSA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDxpbnQ4X3Q+KHNyYy0+
YWxwaGEpOworfQorCit2b2lkIFI4RzhCOEE4Uzo6YXZlcmFnZShSOEc4QjhBOFMgKmRzdCwgY29u
c3QgUjhHOEI4QThTICpzcmMxLCBjb25zdCBSOEc4QjhBOFMgKnNyYzIpCit7CisgICAgZHN0LT5S
ID0gc3RhdGljX2Nhc3Q8aW50OF90PihnbDo6YXZlcmFnZShzcmMxLT5SLCBzcmMyLT5SKSk7Cisg
ICAgZHN0LT5HID0gc3RhdGljX2Nhc3Q8aW50OF90PihnbDo6YXZlcmFnZShzcmMxLT5HLCBzcmMy
LT5HKSk7CisgICAgZHN0LT5CID0gc3RhdGljX2Nhc3Q8aW50OF90PihnbDo6YXZlcmFnZShzcmMx
LT5CLCBzcmMyLT5CKSk7CisgICAgZHN0LT5BID0gc3RhdGljX2Nhc3Q8aW50OF90PihnbDo6YXZl
cmFnZShzcmMxLT5BLCBzcmMyLT5BKSk7Cit9CisKK3ZvaWQgUjE2Uzo6cmVhZENvbG9yKGdsOjpD
b2xvckkgKmRzdCwgY29uc3QgUjE2UyAqc3JjKQoreworICAgIGRzdC0+cmVkICAgPSBzcmMtPlI7
CisgICAgZHN0LT5ncmVlbiA9IDA7CisgICAgZHN0LT5ibHVlICA9IDA7CisgICAgZHN0LT5hbHBo
YSA9IDE7Cit9CisKK3ZvaWQgUjE2Uzo6cmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3Qg
UjE2UyAqc3JjKQoreworICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3Jj
LT5SKTsKKyAgICBkc3QtPmdyZWVuID0gMC4wZjsKKyAgICBkc3QtPmJsdWUgID0gMC4wZjsKKyAg
ICBkc3QtPmFscGhhID0gMS4wZjsKK30KKwordm9pZCBSMTZTOjp3cml0ZUNvbG9yKFIxNlMgKmRz
dCwgY29uc3QgZ2w6OkNvbG9ySSAqc3JjKQoreworICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PGlu
dDE2X3Q+KHNyYy0+cmVkKTsKK30KKwordm9pZCBSMTZTOjp3cml0ZUNvbG9yKFIxNlMgKmRzdCwg
Y29uc3QgZ2w6OkNvbG9yRiAqc3JjKQoreworICAgIGRzdC0+UiA9IGdsOjpmbG9hdFRvTm9ybWFs
aXplZDxpbnQxNl90PihzcmMtPnJlZCk7Cit9CisKK3ZvaWQgUjE2Uzo6YXZlcmFnZShSMTZTICpk
c3QsIGNvbnN0IFIxNlMgKnNyYzEsIGNvbnN0IFIxNlMgKnNyYzIpCit7CisgICAgZHN0LT5SID0g
Z2w6OmF2ZXJhZ2Uoc3JjMS0+Uiwgc3JjMi0+Uik7Cit9CisKK3ZvaWQgUjE2RzE2Uzo6cmVhZENv
bG9yKGdsOjpDb2xvckkgKmRzdCwgY29uc3QgUjE2RzE2UyAqc3JjKQoreworICAgIGRzdC0+cmVk
ICAgPSBzcmMtPlI7CisgICAgZHN0LT5ncmVlbiA9IHNyYy0+RzsKKyAgICBkc3QtPmJsdWUgID0g
MDsKKyAgICBkc3QtPmFscGhhID0gMTsKK30KKwordm9pZCBSMTZHMTZTOjpyZWFkQ29sb3IoZ2w6
OkNvbG9yRiAqZHN0LCBjb25zdCBSMTZHMTZTICpzcmMpCit7CisgICAgZHN0LT5yZWQgICA9IGds
Ojpub3JtYWxpemVkVG9GbG9hdChzcmMtPlIpOworICAgIGRzdC0+Z3JlZW4gPSBnbDo6bm9ybWFs
aXplZFRvRmxvYXQoc3JjLT5HKTsKKyAgICBkc3QtPmJsdWUgID0gMC4wZjsKKyAgICBkc3QtPmFs
cGhhID0gMS4wZjsKK30KKwordm9pZCBSMTZHMTZTOjp3cml0ZUNvbG9yKFIxNkcxNlMgKmRzdCwg
Y29uc3QgZ2w6OkNvbG9ySSAqc3JjKQoreworICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PGludDE2
X3Q+KHNyYy0+cmVkKTsKKyAgICBkc3QtPkcgPSBzdGF0aWNfY2FzdDxpbnQxNl90PihzcmMtPmdy
ZWVuKTsKK30KKwordm9pZCBSMTZHMTZTOjp3cml0ZUNvbG9yKFIxNkcxNlMgKmRzdCwgY29uc3Qg
Z2w6OkNvbG9yRiAqc3JjKQoreworICAgIGRzdC0+UiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDxp
bnQxNl90PihzcmMtPnJlZCk7CisgICAgZHN0LT5HID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPGlu
dDE2X3Q+KHNyYy0+Z3JlZW4pOworfQorCit2b2lkIFIxNkcxNlM6OmF2ZXJhZ2UoUjE2RzE2UyAq
ZHN0LCBjb25zdCBSMTZHMTZTICpzcmMxLCBjb25zdCBSMTZHMTZTICpzcmMyKQoreworICAgIGRz
dC0+UiA9IGdsOjphdmVyYWdlKHNyYzEtPlIsIHNyYzItPlIpOworICAgIGRzdC0+RyA9IGdsOjph
dmVyYWdlKHNyYzEtPkcsIHNyYzItPkcpOworfQorCit2b2lkIFIxNkcxNkIxNlM6OnJlYWRDb2xv
cihnbDo6Q29sb3JJICpkc3QsIGNvbnN0IFIxNkcxNkIxNlMgKnNyYykKK3sKKyAgICBkc3QtPnJl
ZCAgID0gc3JjLT5SOworICAgIGRzdC0+Z3JlZW4gPSBzcmMtPkc7CisgICAgZHN0LT5ibHVlICA9
IHNyYy0+QjsKKyAgICBkc3QtPmFscGhhID0gMTsKK30KKwordm9pZCBSMTZHMTZCMTZTOjpyZWFk
Q29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMTZHMTZCMTZTICpzcmMpCit7CisgICAgZHN0
LT5yZWQgICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPlIpOworICAgIGRzdC0+Z3JlZW4g
PSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5HKTsKKyAgICBkc3QtPmJsdWUgID0gZ2w6Om5v
cm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Qik7CisgICAgZHN0LT5hbHBoYSA9IDEuMGY7Cit9CisKK3Zv
aWQgUjE2RzE2QjE2Uzo6d3JpdGVDb2xvcihSMTZHMTZCMTZTICpkc3QsIGNvbnN0IGdsOjpDb2xv
ckkgKnNyYykKK3sKKyAgICBkc3QtPlIgPSBzdGF0aWNfY2FzdDxpbnQxNl90PihzcmMtPnJlZCk7
CisgICAgZHN0LT5HID0gc3RhdGljX2Nhc3Q8aW50MTZfdD4oc3JjLT5ncmVlbik7CisgICAgZHN0
LT5CID0gc3RhdGljX2Nhc3Q8aW50MTZfdD4oc3JjLT5ibHVlKTsKK30KKwordm9pZCBSMTZHMTZC
MTZTOjp3cml0ZUNvbG9yKFIxNkcxNkIxNlMgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQor
eworICAgIGRzdC0+UiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDxpbnQxNl90PihzcmMtPnJlZCk7
CisgICAgZHN0LT5HID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPGludDE2X3Q+KHNyYy0+Z3JlZW4p
OworICAgIGRzdC0+QiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDxpbnQxNl90PihzcmMtPmJsdWUp
OworfQorCit2b2lkIFIxNkcxNkIxNlM6OmF2ZXJhZ2UoUjE2RzE2QjE2UyAqZHN0LCBjb25zdCBS
MTZHMTZCMTZTICpzcmMxLCBjb25zdCBSMTZHMTZCMTZTICpzcmMyKQoreworICAgIGRzdC0+UiA9
IGdsOjphdmVyYWdlKHNyYzEtPlIsIHNyYzItPlIpOworICAgIGRzdC0+RyA9IGdsOjphdmVyYWdl
KHNyYzEtPkcsIHNyYzItPkcpOworICAgIGRzdC0+QiA9IGdsOjphdmVyYWdlKHNyYzEtPkIsIHNy
YzItPkIpOworfQorCit2b2lkIFIxNkcxNkIxNkExNlM6OnJlYWRDb2xvcihnbDo6Q29sb3JJICpk
c3QsIGNvbnN0IFIxNkcxNkIxNkExNlMgKnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gc3JjLT5S
OworICAgIGRzdC0+Z3JlZW4gPSBzcmMtPkc7CisgICAgZHN0LT5ibHVlICA9IHNyYy0+QjsKKyAg
ICBkc3QtPmFscGhhID0gc3JjLT5BOworfQorCit2b2lkIFIxNkcxNkIxNkExNlM6OnJlYWRDb2xv
cihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIxNkcxNkIxNkExNlMgKnNyYykKK3sKKyAgICBkc3Qt
PnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7CisgICAgZHN0LT5ncmVlbiA9
IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkcpOworICAgIGRzdC0+Ymx1ZSAgPSBnbDo6bm9y
bWFsaXplZFRvRmxvYXQoc3JjLT5CKTsKKyAgICBkc3QtPmFscGhhID0gZ2w6Om5vcm1hbGl6ZWRU
b0Zsb2F0KHNyYy0+QSk7Cit9CisKK3ZvaWQgUjE2RzE2QjE2QTE2Uzo6d3JpdGVDb2xvcihSMTZH
MTZCMTZBMTZTICpkc3QsIGNvbnN0IGdsOjpDb2xvckkgKnNyYykKK3sKKyAgICBkc3QtPlIgPSBz
dGF0aWNfY2FzdDxpbnQxNl90PihzcmMtPnJlZCk7CisgICAgZHN0LT5HID0gc3RhdGljX2Nhc3Q8
aW50MTZfdD4oc3JjLT5ncmVlbik7CisgICAgZHN0LT5CID0gc3RhdGljX2Nhc3Q8aW50MTZfdD4o
c3JjLT5ibHVlKTsKKyAgICBkc3QtPkEgPSBzdGF0aWNfY2FzdDxpbnQxNl90PihzcmMtPmFscGhh
KTsKK30KKwordm9pZCBSMTZHMTZCMTZBMTZTOjp3cml0ZUNvbG9yKFIxNkcxNkIxNkExNlMgKmRz
dCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQoreworICAgIGRzdC0+UiA9IGdsOjpmbG9hdFRvTm9y
bWFsaXplZDxpbnQxNl90PihzcmMtPnJlZCk7CisgICAgZHN0LT5HID0gZ2w6OmZsb2F0VG9Ob3Jt
YWxpemVkPGludDE2X3Q+KHNyYy0+Z3JlZW4pOworICAgIGRzdC0+QiA9IGdsOjpmbG9hdFRvTm9y
bWFsaXplZDxpbnQxNl90PihzcmMtPmJsdWUpOworICAgIGRzdC0+QSA9IGdsOjpmbG9hdFRvTm9y
bWFsaXplZDxpbnQxNl90PihzcmMtPmFscGhhKTsKK30KKwordm9pZCBSMTZHMTZCMTZBMTZTOjph
dmVyYWdlKFIxNkcxNkIxNkExNlMgKmRzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBSMTZHMTZCMTZBMTZTICpzcmMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFIxNkcxNkIxNkExNlMgKnNyYzIpCit7CisgICAgZHN0LT5SID0gZ2w6OmF2ZXJhZ2Uoc3Jj
MS0+Uiwgc3JjMi0+Uik7CisgICAgZHN0LT5HID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Rywgc3JjMi0+
Ryk7CisgICAgZHN0LT5CID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Qiwgc3JjMi0+Qik7CisgICAgZHN0
LT5BID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+QSwgc3JjMi0+QSk7Cit9CisKK3ZvaWQgUjMyUzo6cmVh
ZENvbG9yKGdsOjpDb2xvckkgKmRzdCwgY29uc3QgUjMyUyAqc3JjKQoreworICAgIGRzdC0+cmVk
ICAgPSBzcmMtPlI7CisgICAgZHN0LT5ncmVlbiA9IDA7CisgICAgZHN0LT5ibHVlICA9IDA7Cisg
ICAgZHN0LT5hbHBoYSA9IDE7Cit9CisKK3ZvaWQgUjMyUzo6cmVhZENvbG9yKGdsOjpDb2xvckYg
KmRzdCwgY29uc3QgUjMyUyAqc3JjKQoreworICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXpl
ZFRvRmxvYXQoc3JjLT5SKTsKKyAgICBkc3QtPmdyZWVuID0gMC4wZjsKKyAgICBkc3QtPmJsdWUg
ID0gMC4wZjsKKyAgICBkc3QtPmFscGhhID0gMS4wZjsKK30KKwordm9pZCBSMzJTOjp3cml0ZUNv
bG9yKFIzMlMgKmRzdCwgY29uc3QgZ2w6OkNvbG9ySSAqc3JjKQoreworICAgIGRzdC0+UiA9IHN0
YXRpY19jYXN0PGludDMyX3Q+KHNyYy0+cmVkKTsKK30KKwordm9pZCBSMzJTOjp3cml0ZUNvbG9y
KFIzMlMgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQoreworICAgIGRzdC0+UiA9IGdsOjpm
bG9hdFRvTm9ybWFsaXplZDxpbnQzMl90PihzcmMtPnJlZCk7Cit9CisKK3ZvaWQgUjMyUzo6YXZl
cmFnZShSMzJTICpkc3QsIGNvbnN0IFIzMlMgKnNyYzEsIGNvbnN0IFIzMlMgKnNyYzIpCit7Cisg
ICAgZHN0LT5SID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Uiwgc3JjMi0+Uik7Cit9CisKK3ZvaWQgUjMy
RzMyUzo6cmVhZENvbG9yKGdsOjpDb2xvckkgKmRzdCwgY29uc3QgUjMyRzMyUyAqc3JjKQorewor
ICAgIGRzdC0+cmVkICAgPSBzcmMtPlI7CisgICAgZHN0LT5ncmVlbiA9IHNyYy0+RzsKKyAgICBk
c3QtPmJsdWUgID0gMDsKKyAgICBkc3QtPmFscGhhID0gMTsKK30KKwordm9pZCBSMzJHMzJTOjpy
ZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMzJHMzJTICpzcmMpCit7CisgICAgZHN0
LT5yZWQgICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPlIpOworICAgIGRzdC0+Z3JlZW4g
PSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5HKTsKKyAgICBkc3QtPmJsdWUgID0gMC4wZjsK
KyAgICBkc3QtPmFscGhhID0gMS4wZjsKK30KKwordm9pZCBSMzJHMzJTOjp3cml0ZUNvbG9yKFIz
MkczMlMgKmRzdCwgY29uc3QgZ2w6OkNvbG9ySSAqc3JjKQoreworICAgIGRzdC0+UiA9IHN0YXRp
Y19jYXN0PGludDMyX3Q+KHNyYy0+cmVkKTsKKyAgICBkc3QtPkcgPSBzdGF0aWNfY2FzdDxpbnQz
Ml90PihzcmMtPmdyZWVuKTsKK30KKwordm9pZCBSMzJHMzJTOjp3cml0ZUNvbG9yKFIzMkczMlMg
KmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQoreworICAgIGRzdC0+UiA9IGdsOjpmbG9hdFRv
Tm9ybWFsaXplZDxpbnQzMl90PihzcmMtPnJlZCk7CisgICAgZHN0LT5HID0gZ2w6OmZsb2F0VG9O
b3JtYWxpemVkPGludDMyX3Q+KHNyYy0+Z3JlZW4pOworfQorCit2b2lkIFIzMkczMlM6OmF2ZXJh
Z2UoUjMyRzMyUyAqZHN0LCBjb25zdCBSMzJHMzJTICpzcmMxLCBjb25zdCBSMzJHMzJTICpzcmMy
KQoreworICAgIGRzdC0+UiA9IGdsOjphdmVyYWdlKHNyYzEtPlIsIHNyYzItPlIpOworICAgIGRz
dC0+RyA9IGdsOjphdmVyYWdlKHNyYzEtPkcsIHNyYzItPkcpOworfQorCit2b2lkIFIzMkczMkIz
MlM6OnJlYWRDb2xvcihnbDo6Q29sb3JJICpkc3QsIGNvbnN0IFIzMkczMkIzMlMgKnNyYykKK3sK
KyAgICBkc3QtPnJlZCAgID0gc3JjLT5SOworICAgIGRzdC0+Z3JlZW4gPSBzcmMtPkc7CisgICAg
ZHN0LT5ibHVlICA9IHNyYy0+QjsKKyAgICBkc3QtPmFscGhhID0gMTsKK30KKwordm9pZCBSMzJH
MzJCMzJTOjpyZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMzJHMzJCMzJTICpzcmMp
Cit7CisgICAgZHN0LT5yZWQgICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPlIpOworICAg
IGRzdC0+Z3JlZW4gPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5HKTsKKyAgICBkc3QtPmJs
dWUgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Qik7CisgICAgZHN0LT5hbHBoYSA9IDEu
MGY7Cit9CisKK3ZvaWQgUjMyRzMyQjMyUzo6d3JpdGVDb2xvcihSMzJHMzJCMzJTICpkc3QsIGNv
bnN0IGdsOjpDb2xvckkgKnNyYykKK3sKKyAgICBkc3QtPlIgPSBzdGF0aWNfY2FzdDxpbnQzMl90
PihzcmMtPnJlZCk7CisgICAgZHN0LT5HID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oc3JjLT5ncmVl
bik7CisgICAgZHN0LT5CID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oc3JjLT5ibHVlKTsKK30KKwor
dm9pZCBSMzJHMzJCMzJTOjp3cml0ZUNvbG9yKFIzMkczMkIzMlMgKmRzdCwgY29uc3QgZ2w6OkNv
bG9yRiAqc3JjKQoreworICAgIGRzdC0+UiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDxpbnQzMl90
PihzcmMtPnJlZCk7CisgICAgZHN0LT5HID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPGludDMyX3Q+
KHNyYy0+Z3JlZW4pOworICAgIGRzdC0+QiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDxpbnQzMl90
PihzcmMtPmJsdWUpOworfQorCit2b2lkIFIzMkczMkIzMlM6OmF2ZXJhZ2UoUjMyRzMyQjMyUyAq
ZHN0LCBjb25zdCBSMzJHMzJCMzJTICpzcmMxLCBjb25zdCBSMzJHMzJCMzJTICpzcmMyKQorewor
ICAgIGRzdC0+UiA9IGdsOjphdmVyYWdlKHNyYzEtPlIsIHNyYzItPlIpOworICAgIGRzdC0+RyA9
IGdsOjphdmVyYWdlKHNyYzEtPkcsIHNyYzItPkcpOworICAgIGRzdC0+QiA9IGdsOjphdmVyYWdl
KHNyYzEtPkIsIHNyYzItPkIpOworfQorCit2b2lkIFIzMkczMkIzMkEzMlM6OnJlYWRDb2xvcihn
bDo6Q29sb3JJICpkc3QsIGNvbnN0IFIzMkczMkIzMkEzMlMgKnNyYykKK3sKKyAgICBkc3QtPnJl
ZCAgID0gc3JjLT5SOworICAgIGRzdC0+Z3JlZW4gPSBzcmMtPkc7CisgICAgZHN0LT5ibHVlICA9
IHNyYy0+QjsKKyAgICBkc3QtPmFscGhhID0gc3JjLT5BOworfQorCit2b2lkIFIzMkczMkIzMkEz
MlM6OnJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIzMkczMkIzMkEzMlMgKnNyYykK
K3sKKyAgICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7CisgICAg
ZHN0LT5ncmVlbiA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkcpOworICAgIGRzdC0+Ymx1
ZSAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5CKTsKKyAgICBkc3QtPmFscGhhID0gZ2w6
Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+QSk7Cit9CisKK3ZvaWQgUjMyRzMyQjMyQTMyUzo6d3Jp
dGVDb2xvcihSMzJHMzJCMzJBMzJTICpkc3QsIGNvbnN0IGdsOjpDb2xvckkgKnNyYykKK3sKKyAg
ICBkc3QtPlIgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihzcmMtPnJlZCk7CisgICAgZHN0LT5HID0g
c3RhdGljX2Nhc3Q8aW50MzJfdD4oc3JjLT5ncmVlbik7CisgICAgZHN0LT5CID0gc3RhdGljX2Nh
c3Q8aW50MzJfdD4oc3JjLT5ibHVlKTsKKyAgICBkc3QtPkEgPSBzdGF0aWNfY2FzdDxpbnQzMl90
PihzcmMtPmFscGhhKTsKK30KKwordm9pZCBSMzJHMzJCMzJBMzJTOjp3cml0ZUNvbG9yKFIzMkcz
MkIzMkEzMlMgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQoreworICAgIGRzdC0+UiA9IGds
OjpmbG9hdFRvTm9ybWFsaXplZDxpbnQzMl90PihzcmMtPnJlZCk7CisgICAgZHN0LT5HID0gZ2w6
OmZsb2F0VG9Ob3JtYWxpemVkPGludDMyX3Q+KHNyYy0+Z3JlZW4pOworICAgIGRzdC0+QiA9IGds
OjpmbG9hdFRvTm9ybWFsaXplZDxpbnQzMl90PihzcmMtPmJsdWUpOworICAgIGRzdC0+QSA9IGds
OjpmbG9hdFRvTm9ybWFsaXplZDxpbnQzMl90PihzcmMtPmFscGhhKTsKK30KKwordm9pZCBSMzJH
MzJCMzJBMzJTOjphdmVyYWdlKFIzMkczMkIzMkEzMlMgKmRzdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBSMzJHMzJCMzJBMzJTICpzcmMxLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFIzMkczMkIzMkEzMlMgKnNyYzIpCit7CisgICAgZHN0LT5SID0gZ2w6
OmF2ZXJhZ2Uoc3JjMS0+Uiwgc3JjMi0+Uik7CisgICAgZHN0LT5HID0gZ2w6OmF2ZXJhZ2Uoc3Jj
MS0+Rywgc3JjMi0+Ryk7CisgICAgZHN0LT5CID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Qiwgc3JjMi0+
Qik7CisgICAgZHN0LT5BID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+QSwgc3JjMi0+QSk7Cit9CisKK3Zv
aWQgQTE2QjE2RzE2UjE2Rjo6cmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgQTE2QjE2
RzE2UjE2RiAqc3JjKQoreworICAgIGRzdC0+cmVkICAgPSBnbDo6ZmxvYXQxNlRvRmxvYXQzMihz
cmMtPlIpOworICAgIGRzdC0+Z3JlZW4gPSBnbDo6ZmxvYXQxNlRvRmxvYXQzMihzcmMtPkcpOwor
ICAgIGRzdC0+Ymx1ZSAgPSBnbDo6ZmxvYXQxNlRvRmxvYXQzMihzcmMtPkIpOworICAgIGRzdC0+
YWxwaGEgPSBnbDo6ZmxvYXQxNlRvRmxvYXQzMihzcmMtPkEpOworfQorCit2b2lkIEExNkIxNkcx
NlIxNkY6OndyaXRlQ29sb3IoQTE2QjE2RzE2UjE2RiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpz
cmMpCit7CisgICAgZHN0LT5SID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTYoc3JjLT5yZWQpOworICAg
IGRzdC0+RyA9IGdsOjpmbG9hdDMyVG9GbG9hdDE2KHNyYy0+Z3JlZW4pOworICAgIGRzdC0+QiA9
IGdsOjpmbG9hdDMyVG9GbG9hdDE2KHNyYy0+Ymx1ZSk7CisgICAgZHN0LT5BID0gZ2w6OmZsb2F0
MzJUb0Zsb2F0MTYoc3JjLT5hbHBoYSk7Cit9CisKK3ZvaWQgQTE2QjE2RzE2UjE2Rjo6YXZlcmFn
ZShBMTZCMTZHMTZSMTZGICpkc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
QTE2QjE2RzE2UjE2RiAqc3JjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBB
MTZCMTZHMTZSMTZGICpzcmMyKQoreworICAgIGRzdC0+UiA9IGdsOjphdmVyYWdlSGFsZkZsb2F0
KHNyYzEtPlIsIHNyYzItPlIpOworICAgIGRzdC0+RyA9IGdsOjphdmVyYWdlSGFsZkZsb2F0KHNy
YzEtPkcsIHNyYzItPkcpOworICAgIGRzdC0+QiA9IGdsOjphdmVyYWdlSGFsZkZsb2F0KHNyYzEt
PkIsIHNyYzItPkIpOworICAgIGRzdC0+QSA9IGdsOjphdmVyYWdlSGFsZkZsb2F0KHNyYzEtPkEs
IHNyYzItPkEpOworfQorCit2b2lkIFIxNkcxNkIxNkExNkY6OnJlYWRDb2xvcihnbDo6Q29sb3JG
ICpkc3QsIGNvbnN0IFIxNkcxNkIxNkExNkYgKnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gZ2w6
OmZsb2F0MTZUb0Zsb2F0MzIoc3JjLT5SKTsKKyAgICBkc3QtPmdyZWVuID0gZ2w6OmZsb2F0MTZU
b0Zsb2F0MzIoc3JjLT5HKTsKKyAgICBkc3QtPmJsdWUgID0gZ2w6OmZsb2F0MTZUb0Zsb2F0MzIo
c3JjLT5CKTsKKyAgICBkc3QtPmFscGhhID0gZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoc3JjLT5BKTsK
K30KKwordm9pZCBSMTZHMTZCMTZBMTZGOjp3cml0ZUNvbG9yKFIxNkcxNkIxNkExNkYgKmRzdCwg
Y29uc3QgZ2w6OkNvbG9yRiAqc3JjKQoreworICAgIGRzdC0+UiA9IGdsOjpmbG9hdDMyVG9GbG9h
dDE2KHNyYy0+cmVkKTsKKyAgICBkc3QtPkcgPSBnbDo6ZmxvYXQzMlRvRmxvYXQxNihzcmMtPmdy
ZWVuKTsKKyAgICBkc3QtPkIgPSBnbDo6ZmxvYXQzMlRvRmxvYXQxNihzcmMtPmJsdWUpOworICAg
IGRzdC0+QSA9IGdsOjpmbG9hdDMyVG9GbG9hdDE2KHNyYy0+YWxwaGEpOworfQorCit2b2lkIFIx
NkcxNkIxNkExNkY6OmF2ZXJhZ2UoUjE2RzE2QjE2QTE2RiAqZHN0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFIxNkcxNkIxNkExNkYgKnNyYzEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgUjE2RzE2QjE2QTE2RiAqc3JjMikKK3sKKyAgICBkc3QtPlIgPSBn
bDo6YXZlcmFnZUhhbGZGbG9hdChzcmMxLT5SLCBzcmMyLT5SKTsKKyAgICBkc3QtPkcgPSBnbDo6
YXZlcmFnZUhhbGZGbG9hdChzcmMxLT5HLCBzcmMyLT5HKTsKKyAgICBkc3QtPkIgPSBnbDo6YXZl
cmFnZUhhbGZGbG9hdChzcmMxLT5CLCBzcmMyLT5CKTsKKyAgICBkc3QtPkEgPSBnbDo6YXZlcmFn
ZUhhbGZGbG9hdChzcmMxLT5BLCBzcmMyLT5BKTsKK30KKwordm9pZCBSMTZGOjpyZWFkQ29sb3Io
Z2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMTZGICpzcmMpCit7CisgICAgZHN0LT5yZWQgICA9IGds
OjpmbG9hdDE2VG9GbG9hdDMyKHNyYy0+Uik7CisgICAgZHN0LT5ncmVlbiA9IDAuMGY7CisgICAg
ZHN0LT5ibHVlICA9IDAuMGY7CisgICAgZHN0LT5hbHBoYSA9IDEuMGY7Cit9CisKK3ZvaWQgUjE2
Rjo6d3JpdGVDb2xvcihSMTZGICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKK3sKKyAgICBk
c3QtPlIgPSBnbDo6ZmxvYXQzMlRvRmxvYXQxNihzcmMtPnJlZCk7Cit9CisKK3ZvaWQgUjE2Rjo6
YXZlcmFnZShSMTZGICpkc3QsIGNvbnN0IFIxNkYgKnNyYzEsIGNvbnN0IFIxNkYgKnNyYzIpCit7
CisgICAgZHN0LT5SID0gZ2w6OmF2ZXJhZ2VIYWxmRmxvYXQoc3JjMS0+Uiwgc3JjMi0+Uik7Cit9
CisKK3ZvaWQgQTE2Rjo6cmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgQTE2RiAqc3Jj
KQoreworICAgIGRzdC0+cmVkICAgPSAwLjBmOworICAgIGRzdC0+Z3JlZW4gPSAwLjBmOworICAg
IGRzdC0+Ymx1ZSAgPSAwLjBmOworICAgIGRzdC0+YWxwaGEgPSBnbDo6ZmxvYXQxNlRvRmxvYXQz
MihzcmMtPkEpOworfQorCit2b2lkIEExNkY6OndyaXRlQ29sb3IoQTE2RiAqZHN0LCBjb25zdCBn
bDo6Q29sb3JGICpzcmMpCit7CisgICAgZHN0LT5BID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTYoc3Jj
LT5hbHBoYSk7Cit9CisKK3ZvaWQgQTE2Rjo6YXZlcmFnZShBMTZGICpkc3QsIGNvbnN0IEExNkYg
KnNyYzEsIGNvbnN0IEExNkYgKnNyYzIpCit7CisgICAgZHN0LT5BID0gZ2w6OmF2ZXJhZ2VIYWxm
RmxvYXQoc3JjMS0+QSwgc3JjMi0+QSk7Cit9CisKK3ZvaWQgTDE2Rjo6cmVhZENvbG9yKGdsOjpD
b2xvckYgKmRzdCwgY29uc3QgTDE2RiAqc3JjKQoreworICAgIGZsb2F0IGx1bSAgPSBnbDo6Zmxv
YXQxNlRvRmxvYXQzMihzcmMtPkwpOworICAgIGRzdC0+cmVkICAgPSBsdW07CisgICAgZHN0LT5n
cmVlbiA9IGx1bTsKKyAgICBkc3QtPmJsdWUgID0gbHVtOworICAgIGRzdC0+YWxwaGEgPSAxLjBm
OworfQorCit2b2lkIEwxNkY6OndyaXRlQ29sb3IoTDE2RiAqZHN0LCBjb25zdCBnbDo6Q29sb3JG
ICpzcmMpCit7CisgICAgZHN0LT5MID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTYoc3JjLT5yZWQpOwor
fQorCit2b2lkIEwxNkY6OmF2ZXJhZ2UoTDE2RiAqZHN0LCBjb25zdCBMMTZGICpzcmMxLCBjb25z
dCBMMTZGICpzcmMyKQoreworICAgIGRzdC0+TCA9IGdsOjphdmVyYWdlSGFsZkZsb2F0KHNyYzEt
PkwsIHNyYzItPkwpOworfQorCit2b2lkIEwxNkExNkY6OnJlYWRDb2xvcihnbDo6Q29sb3JGICpk
c3QsIGNvbnN0IEwxNkExNkYgKnNyYykKK3sKKyAgICBmbG9hdCBsdW0gID0gZ2w6OmZsb2F0MTZU
b0Zsb2F0MzIoc3JjLT5MKTsKKyAgICBkc3QtPnJlZCAgID0gbHVtOworICAgIGRzdC0+Z3JlZW4g
PSBsdW07CisgICAgZHN0LT5ibHVlICA9IGx1bTsKKyAgICBkc3QtPmFscGhhID0gZ2w6OmZsb2F0
MTZUb0Zsb2F0MzIoc3JjLT5BKTsKK30KKwordm9pZCBMMTZBMTZGOjp3cml0ZUNvbG9yKEwxNkEx
NkYgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQoreworICAgIGRzdC0+TCA9IGdsOjpmbG9h
dDMyVG9GbG9hdDE2KHNyYy0+cmVkKTsKKyAgICBkc3QtPkEgPSBnbDo6ZmxvYXQzMlRvRmxvYXQx
NihzcmMtPmFscGhhKTsKK30KKwordm9pZCBMMTZBMTZGOjphdmVyYWdlKEwxNkExNkYgKmRzdCwg
Y29uc3QgTDE2QTE2RiAqc3JjMSwgY29uc3QgTDE2QTE2RiAqc3JjMikKK3sKKyAgICBkc3QtPkwg
PSBnbDo6YXZlcmFnZUhhbGZGbG9hdChzcmMxLT5MLCBzcmMyLT5MKTsKKyAgICBkc3QtPkEgPSBn
bDo6YXZlcmFnZUhhbGZGbG9hdChzcmMxLT5BLCBzcmMyLT5BKTsKK30KKwordm9pZCBSMTZHMTZG
OjpyZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMTZHMTZGICpzcmMpCit7CisgICAg
ZHN0LT5yZWQgICA9IGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNyYy0+Uik7CisgICAgZHN0LT5ncmVl
biA9IGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNyYy0+Ryk7CisgICAgZHN0LT5ibHVlICA9IDAuMGY7
CisgICAgZHN0LT5hbHBoYSA9IDEuMGY7Cit9CisKK3ZvaWQgUjE2RzE2Rjo6d3JpdGVDb2xvcihS
MTZHMTZGICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKK3sKKyAgICBkc3QtPlIgPSBnbDo6
ZmxvYXQzMlRvRmxvYXQxNihzcmMtPnJlZCk7CisgICAgZHN0LT5HID0gZ2w6OmZsb2F0MzJUb0Zs
b2F0MTYoc3JjLT5ncmVlbik7Cit9CisKK3ZvaWQgUjE2RzE2Rjo6YXZlcmFnZShSMTZHMTZGICpk
c3QsIGNvbnN0IFIxNkcxNkYgKnNyYzEsIGNvbnN0IFIxNkcxNkYgKnNyYzIpCit7CisgICAgZHN0
LT5SID0gZ2w6OmF2ZXJhZ2VIYWxmRmxvYXQoc3JjMS0+Uiwgc3JjMi0+Uik7CisgICAgZHN0LT5H
ID0gZ2w6OmF2ZXJhZ2VIYWxmRmxvYXQoc3JjMS0+Rywgc3JjMi0+Ryk7Cit9CisKK3ZvaWQgUjE2
RzE2QjE2Rjo6cmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjE2RzE2QjE2RiAqc3Jj
KQoreworICAgIGRzdC0+cmVkICAgPSBnbDo6ZmxvYXQxNlRvRmxvYXQzMihzcmMtPlIpOworICAg
IGRzdC0+Z3JlZW4gPSBnbDo6ZmxvYXQxNlRvRmxvYXQzMihzcmMtPkcpOworICAgIGRzdC0+Ymx1
ZSAgPSBnbDo6ZmxvYXQxNlRvRmxvYXQzMihzcmMtPkIpOworICAgIGRzdC0+YWxwaGEgPSAxLjBm
OworfQorCit2b2lkIFIxNkcxNkIxNkY6OndyaXRlQ29sb3IoUjE2RzE2QjE2RiAqZHN0LCBjb25z
dCBnbDo6Q29sb3JGICpzcmMpCit7CisgICAgZHN0LT5SID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTYo
c3JjLT5yZWQpOworICAgIGRzdC0+RyA9IGdsOjpmbG9hdDMyVG9GbG9hdDE2KHNyYy0+Z3JlZW4p
OworICAgIGRzdC0+QiA9IGdsOjpmbG9hdDMyVG9GbG9hdDE2KHNyYy0+Ymx1ZSk7Cit9CisKK3Zv
aWQgUjE2RzE2QjE2Rjo6YXZlcmFnZShSMTZHMTZCMTZGICpkc3QsIGNvbnN0IFIxNkcxNkIxNkYg
KnNyYzEsIGNvbnN0IFIxNkcxNkIxNkYgKnNyYzIpCit7CisgICAgZHN0LT5SID0gZ2w6OmF2ZXJh
Z2VIYWxmRmxvYXQoc3JjMS0+Uiwgc3JjMi0+Uik7CisgICAgZHN0LT5HID0gZ2w6OmF2ZXJhZ2VI
YWxmRmxvYXQoc3JjMS0+Rywgc3JjMi0+Ryk7CisgICAgZHN0LT5CID0gZ2w6OmF2ZXJhZ2VIYWxm
RmxvYXQoc3JjMS0+Qiwgc3JjMi0+Qik7Cit9CisKK3ZvaWQgQTMyQjMyRzMyUjMyRjo6cmVhZENv
bG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgQTMyQjMyRzMyUjMyRiAqc3JjKQoreworICAgIGRz
dC0+cmVkICAgPSBzcmMtPlI7CisgICAgZHN0LT5ncmVlbiA9IHNyYy0+RzsKKyAgICBkc3QtPmJs
dWUgID0gc3JjLT5COworICAgIGRzdC0+YWxwaGEgPSBzcmMtPkE7Cit9CisKK3ZvaWQgQTMyQjMy
RzMyUjMyRjo6d3JpdGVDb2xvcihBMzJCMzJHMzJSMzJGICpkc3QsIGNvbnN0IGdsOjpDb2xvckYg
KnNyYykKK3sKKyAgICBkc3QtPlIgPSBzcmMtPnJlZDsKKyAgICBkc3QtPkcgPSBzcmMtPmdyZWVu
OworICAgIGRzdC0+QiA9IHNyYy0+Ymx1ZTsKKyAgICBkc3QtPkEgPSBzcmMtPmFscGhhOworfQor
Cit2b2lkIEEzMkIzMkczMlIzMkY6OmF2ZXJhZ2UoQTMyQjMyRzMyUjMyRiAqZHN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEEzMkIzMkczMlIzMkYgKnNyYzEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgQTMyQjMyRzMyUjMyRiAqc3JjMikKK3sKKyAgICBk
c3QtPlIgPSBnbDo6YXZlcmFnZShzcmMxLT5SLCBzcmMyLT5SKTsKKyAgICBkc3QtPkcgPSBnbDo6
YXZlcmFnZShzcmMxLT5HLCBzcmMyLT5HKTsKKyAgICBkc3QtPkIgPSBnbDo6YXZlcmFnZShzcmMx
LT5CLCBzcmMyLT5CKTsKKyAgICBkc3QtPkEgPSBnbDo6YXZlcmFnZShzcmMxLT5BLCBzcmMyLT5B
KTsKK30KKwordm9pZCBSMzJHMzJCMzJBMzJGOjpyZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBj
b25zdCBSMzJHMzJCMzJBMzJGICpzcmMpCit7CisgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKKyAg
ICBkc3QtPmdyZWVuID0gc3JjLT5HOworICAgIGRzdC0+Ymx1ZSAgPSBzcmMtPkI7CisgICAgZHN0
LT5hbHBoYSA9IHNyYy0+QTsKK30KKwordm9pZCBSMzJHMzJCMzJBMzJGOjp3cml0ZUNvbG9yKFIz
MkczMkIzMkEzMkYgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQoreworICAgIGRzdC0+UiA9
IHNyYy0+cmVkOworICAgIGRzdC0+RyA9IHNyYy0+Z3JlZW47CisgICAgZHN0LT5CID0gc3JjLT5i
bHVlOworICAgIGRzdC0+QSA9IHNyYy0+YWxwaGE7Cit9CisKK3ZvaWQgUjMyRzMyQjMyQTMyRjo6
YXZlcmFnZShSMzJHMzJCMzJBMzJGICpkc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgUjMyRzMyQjMyQTMyRiAqc3JjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBSMzJHMzJCMzJBMzJGICpzcmMyKQoreworICAgIGRzdC0+UiA9IGdsOjphdmVyYWdlKHNy
YzEtPlIsIHNyYzItPlIpOworICAgIGRzdC0+RyA9IGdsOjphdmVyYWdlKHNyYzEtPkcsIHNyYzIt
PkcpOworICAgIGRzdC0+QiA9IGdsOjphdmVyYWdlKHNyYzEtPkIsIHNyYzItPkIpOworICAgIGRz
dC0+QSA9IGdsOjphdmVyYWdlKHNyYzEtPkEsIHNyYzItPkEpOworfQorCit2b2lkIFIzMkY6OnJl
YWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIzMkYgKnNyYykKK3sKKyAgICBkc3QtPnJl
ZCAgID0gc3JjLT5SOworICAgIGRzdC0+Z3JlZW4gPSAwLjBmOworICAgIGRzdC0+Ymx1ZSAgPSAw
LjBmOworICAgIGRzdC0+YWxwaGEgPSAxLjBmOworfQorCit2b2lkIFIzMkY6OndyaXRlQ29sb3Io
UjMyRiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCit7CisgICAgZHN0LT5SID0gc3JjLT5y
ZWQ7Cit9CisKK3ZvaWQgUjMyRjo6YXZlcmFnZShSMzJGICpkc3QsIGNvbnN0IFIzMkYgKnNyYzEs
IGNvbnN0IFIzMkYgKnNyYzIpCit7CisgICAgZHN0LT5SID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Uiwg
c3JjMi0+Uik7Cit9CisKK3ZvaWQgQTMyRjo6cmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29u
c3QgQTMyRiAqc3JjKQoreworICAgIGRzdC0+cmVkICAgPSAwLjBmOworICAgIGRzdC0+Z3JlZW4g
PSAwLjBmOworICAgIGRzdC0+Ymx1ZSAgPSAwLjBmOworICAgIGRzdC0+YWxwaGEgPSBzcmMtPkE7
Cit9CisKK3ZvaWQgQTMyRjo6d3JpdGVDb2xvcihBMzJGICpkc3QsIGNvbnN0IGdsOjpDb2xvckYg
KnNyYykKK3sKKyAgICBkc3QtPkEgPSBzcmMtPmFscGhhOworfQorCit2b2lkIEEzMkY6OmF2ZXJh
Z2UoQTMyRiAqZHN0LCBjb25zdCBBMzJGICpzcmMxLCBjb25zdCBBMzJGICpzcmMyKQoreworICAg
IGRzdC0+QSA9IGdsOjphdmVyYWdlKHNyYzEtPkEsIHNyYzItPkEpOworfQorCit2b2lkIEwzMkY6
OnJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IEwzMkYgKnNyYykKK3sKKyAgICBkc3Qt
PnJlZCAgID0gc3JjLT5MOworICAgIGRzdC0+Z3JlZW4gPSBzcmMtPkw7CisgICAgZHN0LT5ibHVl
ICA9IHNyYy0+TDsKKyAgICBkc3QtPmFscGhhID0gMS4wZjsKK30KKwordm9pZCBMMzJGOjp3cml0
ZUNvbG9yKEwzMkYgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQoreworICAgIGRzdC0+TCA9
IHNyYy0+cmVkOworfQorCit2b2lkIEwzMkY6OmF2ZXJhZ2UoTDMyRiAqZHN0LCBjb25zdCBMMzJG
ICpzcmMxLCBjb25zdCBMMzJGICpzcmMyKQoreworICAgIGRzdC0+TCA9IGdsOjphdmVyYWdlKHNy
YzEtPkwsIHNyYzItPkwpOworfQorCit2b2lkIEwzMkEzMkY6OnJlYWRDb2xvcihnbDo6Q29sb3JG
ICpkc3QsIGNvbnN0IEwzMkEzMkYgKnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gc3JjLT5MOwor
ICAgIGRzdC0+Z3JlZW4gPSBzcmMtPkw7CisgICAgZHN0LT5ibHVlICA9IHNyYy0+TDsKKyAgICBk
c3QtPmFscGhhID0gc3JjLT5BOworfQorCit2b2lkIEwzMkEzMkY6OndyaXRlQ29sb3IoTDMyQTMy
RiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCit7CisgICAgZHN0LT5MID0gc3JjLT5yZWQ7
CisgICAgZHN0LT5BID0gc3JjLT5hbHBoYTsKK30KKwordm9pZCBMMzJBMzJGOjphdmVyYWdlKEwz
MkEzMkYgKmRzdCwgY29uc3QgTDMyQTMyRiAqc3JjMSwgY29uc3QgTDMyQTMyRiAqc3JjMikKK3sK
KyAgICBkc3QtPkwgPSBnbDo6YXZlcmFnZShzcmMxLT5MLCBzcmMyLT5MKTsKKyAgICBkc3QtPkEg
PSBnbDo6YXZlcmFnZShzcmMxLT5BLCBzcmMyLT5BKTsKK30KKwordm9pZCBSMzJHMzJGOjpyZWFk
Q29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMzJHMzJGICpzcmMpCit7CisgICAgZHN0LT5y
ZWQgICA9IHNyYy0+UjsKKyAgICBkc3QtPmdyZWVuID0gc3JjLT5HOworICAgIGRzdC0+Ymx1ZSAg
PSAwLjBmOworICAgIGRzdC0+YWxwaGEgPSAxLjBmOworfQorCit2b2lkIFIzMkczMkY6OndyaXRl
Q29sb3IoUjMyRzMyRiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCit7CisgICAgZHN0LT5S
ID0gc3JjLT5yZWQ7CisgICAgZHN0LT5HID0gc3JjLT5ncmVlbjsKK30KKwordm9pZCBSMzJHMzJG
OjphdmVyYWdlKFIzMkczMkYgKmRzdCwgY29uc3QgUjMyRzMyRiAqc3JjMSwgY29uc3QgUjMyRzMy
RiAqc3JjMikKK3sKKyAgICBkc3QtPlIgPSBnbDo6YXZlcmFnZShzcmMxLT5SLCBzcmMyLT5SKTsK
KyAgICBkc3QtPkcgPSBnbDo6YXZlcmFnZShzcmMxLT5HLCBzcmMyLT5HKTsKK30KKwordm9pZCBS
MzJHMzJCMzJGOjpyZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMzJHMzJCMzJGICpz
cmMpCit7CisgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKKyAgICBkc3QtPmdyZWVuID0gc3JjLT5H
OworICAgIGRzdC0+Ymx1ZSAgPSBzcmMtPkI7CisgICAgZHN0LT5hbHBoYSA9IDEuMGY7Cit9CisK
K3ZvaWQgUjMyRzMyQjMyRjo6d3JpdGVDb2xvcihSMzJHMzJCMzJGICpkc3QsIGNvbnN0IGdsOjpD
b2xvckYgKnNyYykKK3sKKyAgICBkc3QtPlIgPSBzcmMtPnJlZDsKKyAgICBkc3QtPkcgPSBzcmMt
PmdyZWVuOworICAgIGRzdC0+QiA9IHNyYy0+Ymx1ZTsKK30KKwordm9pZCBSMzJHMzJCMzJGOjph
dmVyYWdlKFIzMkczMkIzMkYgKmRzdCwgY29uc3QgUjMyRzMyQjMyRiAqc3JjMSwgY29uc3QgUjMy
RzMyQjMyRiAqc3JjMikKK3sKKyAgICBkc3QtPlIgPSBnbDo6YXZlcmFnZShzcmMxLT5SLCBzcmMy
LT5SKTsKKyAgICBkc3QtPkcgPSBnbDo6YXZlcmFnZShzcmMxLT5HLCBzcmMyLT5HKTsKKyAgICBk
c3QtPkIgPSBnbDo6YXZlcmFnZShzcmMxLT5CLCBzcmMyLT5CKTsKK30KKwordm9pZCBSMTBHMTBC
MTBBMjo6cmVhZENvbG9yKGdsOjpDb2xvclVJICpkc3QsIGNvbnN0IFIxMEcxMEIxMEEyICpzcmMp
Cit7CisgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKKyAgICBkc3QtPmdyZWVuID0gc3JjLT5HOwor
ICAgIGRzdC0+Ymx1ZSAgPSBzcmMtPkI7CisgICAgZHN0LT5hbHBoYSA9IHNyYy0+QTsKK30KKwor
dm9pZCBSMTBHMTBCMTBBMjo6cmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjEwRzEw
QjEwQTIgKnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0PDEw
PihzcmMtPlIpOworICAgIGRzdC0+Z3JlZW4gPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQ8MTA+KHNy
Yy0+Ryk7CisgICAgZHN0LT5ibHVlICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdDwxMD4oc3JjLT5C
KTsKKyAgICBkc3QtPmFscGhhID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0PDI+KHNyYy0+QSk7Cit9
CisKK3ZvaWQgUjEwRzEwQjEwQTI6OndyaXRlQ29sb3IoUjEwRzEwQjEwQTIgKmRzdCwgY29uc3Qg
Z2w6OkNvbG9yVUkgKnNyYykKK3sKKyAgICBkc3QtPlIgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
c3JjLT5yZWQpOworICAgIGRzdC0+RyA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihzcmMtPmdyZWVu
KTsKKyAgICBkc3QtPkIgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3JjLT5ibHVlKTsKKyAgICBk
c3QtPkEgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3JjLT5hbHBoYSk7Cit9CisKK3ZvaWQgUjEw
RzEwQjEwQTI6OndyaXRlQ29sb3IoUjEwRzEwQjEwQTIgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAq
c3JjKQoreworICAgIGRzdC0+UiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDwxMCwgdWludDMyX3Q+
KHNyYy0+cmVkKTsKKyAgICBkc3QtPkcgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8MTAsIHVpbnQz
Ml90PihzcmMtPmdyZWVuKTsKKyAgICBkc3QtPkIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8MTAs
IHVpbnQzMl90PihzcmMtPmJsdWUpOworICAgIGRzdC0+QSA9IGdsOjpmbG9hdFRvTm9ybWFsaXpl
ZDwyLCB1aW50MzJfdD4oc3JjLT5hbHBoYSk7Cit9CisKK3ZvaWQgUjEwRzEwQjEwQTI6OmF2ZXJh
Z2UoUjEwRzEwQjEwQTIgKmRzdCwgY29uc3QgUjEwRzEwQjEwQTIgKnNyYzEsIGNvbnN0IFIxMEcx
MEIxMEEyICpzcmMyKQoreworICAgIGRzdC0+UiA9IGdsOjphdmVyYWdlKHNyYzEtPlIsIHNyYzIt
PlIpOworICAgIGRzdC0+RyA9IGdsOjphdmVyYWdlKHNyYzEtPkcsIHNyYzItPkcpOworICAgIGRz
dC0+QiA9IGdsOjphdmVyYWdlKHNyYzEtPkIsIHNyYzItPkIpOworICAgIGRzdC0+QSA9IGdsOjph
dmVyYWdlKHNyYzEtPkEsIHNyYzItPkEpOworfQorCit2b2lkIFI5RzlCOUU1OjpyZWFkQ29sb3Io
Z2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSOUc5QjlFNSAqc3JjKQoreworICAgIGdsOjpjb252ZXJ0
OTk5RTV0b1JHQkZsb2F0cyhnbDo6Yml0Q2FzdDx1aW50MzJfdD4oKnNyYyksICZkc3QtPnJlZCwg
JmRzdC0+Z3JlZW4sICZkc3QtPmJsdWUpOworICAgIGRzdC0+YWxwaGEgPSAxLjBmOworfQorCit2
b2lkIFI5RzlCOUU1Ojp3cml0ZUNvbG9yKFI5RzlCOUU1ICpkc3QsIGNvbnN0IGdsOjpDb2xvckYg
KnNyYykKK3sKKyAgICAqcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCAqPihkc3QpID0KKyAgICAg
ICAgZ2w6OmNvbnZlcnRSR0JGbG9hdHNUbzk5OUU1KHNyYy0+cmVkLCBzcmMtPmdyZWVuLCBzcmMt
PmJsdWUpOworfQorCit2b2lkIFI5RzlCOUU1OjphdmVyYWdlKFI5RzlCOUU1ICpkc3QsIGNvbnN0
IFI5RzlCOUU1ICpzcmMxLCBjb25zdCBSOUc5QjlFNSAqc3JjMikKK3sKKyAgICBmbG9hdCByMSwg
ZzEsIGIxOworICAgIGdsOjpjb252ZXJ0OTk5RTV0b1JHQkZsb2F0cygqcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50MzJfdCAqPihzcmMxKSwgJnIxLCAmZzEsICZiMSk7CisKKyAgICBmbG9hdCBy
MiwgZzIsIGIyOworICAgIGdsOjpjb252ZXJ0OTk5RTV0b1JHQkZsb2F0cygqcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50MzJfdCAqPihzcmMyKSwgJnIyLCAmZzIsICZiMik7CisKKyAgICAqcmVp
bnRlcnByZXRfY2FzdDx1aW50MzJfdCAqPihkc3QpID0KKyAgICAgICAgZ2w6OmNvbnZlcnRSR0JG
bG9hdHNUbzk5OUU1KGdsOjphdmVyYWdlKHIxLCByMiksIGdsOjphdmVyYWdlKGcxLCBnMiksIGds
OjphdmVyYWdlKGIxLCBiMikpOworfQorCit2b2lkIFIxMUcxMUIxMEY6OnJlYWRDb2xvcihnbDo6
Q29sb3JGICpkc3QsIGNvbnN0IFIxMUcxMUIxMEYgKnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0g
Z2w6OmZsb2F0MTFUb0Zsb2F0MzIoc3JjLT5SKTsKKyAgICBkc3QtPmdyZWVuID0gZ2w6OmZsb2F0
MTFUb0Zsb2F0MzIoc3JjLT5HKTsKKyAgICBkc3QtPmJsdWUgID0gZ2w6OmZsb2F0MTBUb0Zsb2F0
MzIoc3JjLT5CKTsKKyAgICBkc3QtPmFscGhhID0gMS4wZjsKK30KKwordm9pZCBSMTFHMTFCMTBG
Ojp3cml0ZUNvbG9yKFIxMUcxMUIxMEYgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQorewor
ICAgIGRzdC0+UiA9IGdsOjpmbG9hdDMyVG9GbG9hdDExKHNyYy0+cmVkKTsKKyAgICBkc3QtPkcg
PSBnbDo6ZmxvYXQzMlRvRmxvYXQxMShzcmMtPmdyZWVuKTsKKyAgICBkc3QtPkIgPSBnbDo6Zmxv
YXQzMlRvRmxvYXQxMChzcmMtPmJsdWUpOworfQorCit2b2lkIFIxMUcxMUIxMEY6OmF2ZXJhZ2Uo
UjExRzExQjEwRiAqZHN0LCBjb25zdCBSMTFHMTFCMTBGICpzcmMxLCBjb25zdCBSMTFHMTFCMTBG
ICpzcmMyKQoreworICAgIGRzdC0+UiA9IGdsOjphdmVyYWdlRmxvYXQxMShzcmMxLT5SLCBzcmMy
LT5SKTsKKyAgICBkc3QtPkcgPSBnbDo6YXZlcmFnZUZsb2F0MTEoc3JjMS0+Rywgc3JjMi0+Ryk7
CisgICAgZHN0LT5CID0gZ2w6OmF2ZXJhZ2VGbG9hdDEwKHNyYzEtPkIsIHNyYzItPkIpOworfQor
Cit9ICAvLyBuYW1lc3BhY2UgYW5nbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9pbWFnZV91dGlsL2ltYWdlZm9ybWF0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9pbWFnZV91dGlsL2ltYWdlZm9ybWF0cy5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9pbWFnZV91dGlsL2ltYWdlZm9ybWF0cy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjg4IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEz
LTIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBp
bWFnZWZvcm1hdHMuaDogRGVmaW5lcyBpbWFnZSBmb3JtYXQgdHlwZXMgd2l0aCBmdW5jdGlvbnMg
Zm9yIG1pcCBnZW5lcmF0aW9uCisvLyBhbmQgY29weWluZy4KKworI2lmbmRlZiBJTUFHRVVUSUxf
SU1BR0VGT1JNQVRTX0hfCisjZGVmaW5lIElNQUdFVVRJTF9JTUFHRUZPUk1BVFNfSF8KKworI2lu
Y2x1ZGUgImNvbW1vbi9Db2xvci5oIgorCisjaW5jbHVkZSA8Y3N0ZGludD4KKworbmFtZXNwYWNl
IGFuZ2xlCit7CisKKy8vIFNldmVyYWwgc3RydWN0dXJlcyBzaGFyZSBmdW5jdGlvbmFsaXR5IGZv
ciByZWFkaW5nLCB3cml0aW5nIG9yIG1pcG1hcHBpbmcgYnV0IHRoZSBsYXlvdXQKKy8vIG11c3Qg
bWF0Y2ggdGhlIHRleHR1cmUgZm9ybWF0IHdoaWNoIHRoZSBzdHJ1Y3R1cmUgcmVwcmVzZW50cy4g
SWYgY29sbGFwc2luZyBvciB0eXBlZGVmaW5nCisvLyBzdHJ1Y3RzIGluIHRoaXMgaGVhZGVyLCBt
YWtlIHN1cmUgdGhlIGZ1bmN0aW9uYWxpdHkgYW5kIG1lbW9yeSBsYXlvdXQgaXMgZXhhY3RseSB0
aGUgc2FtZS4KKworc3RydWN0IEw4Cit7CisgICAgdWludDhfdCBMOworCisgICAgc3RhdGljIHZv
aWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgTDggKnNyYyk7CisgICAgc3RhdGlj
IHZvaWQgd3JpdGVDb2xvcihMOCAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpOworICAgIHN0
YXRpYyB2b2lkIGF2ZXJhZ2UoTDggKmRzdCwgY29uc3QgTDggKnNyYzEsIGNvbnN0IEw4ICpzcmMy
KTsKK307CisKK3N0cnVjdCBSOAoreworICAgIHVpbnQ4X3QgUjsKKworICAgIHN0YXRpYyB2b2lk
IHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFI4ICpzcmMpOworICAgIHN0YXRpYyB2
b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JVSSAqZHN0LCBjb25zdCBSOCAqc3JjKTsKKyAgICBzdGF0
aWMgdm9pZCB3cml0ZUNvbG9yKFI4ICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYyk7CisgICAg
c3RhdGljIHZvaWQgd3JpdGVDb2xvcihSOCAqZHN0LCBjb25zdCBnbDo6Q29sb3JVSSAqc3JjKTsK
KyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFI4ICpkc3QsIGNvbnN0IFI4ICpzcmMxLCBjb25zdCBS
OCAqc3JjMik7Cit9OworCitzdHJ1Y3QgQTgKK3sKKyAgICB1aW50OF90IEE7CisKKyAgICBzdGF0
aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBBOCAqc3JjKTsKKyAgICBz
dGF0aWMgdm9pZCB3cml0ZUNvbG9yKEE4ICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYyk7Cisg
ICAgc3RhdGljIHZvaWQgYXZlcmFnZShBOCAqZHN0LCBjb25zdCBBOCAqc3JjMSwgY29uc3QgQTgg
KnNyYzIpOworfTsKKworc3RydWN0IEw4QTgKK3sKKyAgICB1aW50OF90IEw7CisgICAgdWludDhf
dCBBOworCisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3Qg
TDhBOCAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKEw4QTggKmRzdCwgY29uc3Qg
Z2w6OkNvbG9yRiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKEw4QTggKmRzdCwgY29u
c3QgTDhBOCAqc3JjMSwgY29uc3QgTDhBOCAqc3JjMik7Cit9OworCitzdHJ1Y3QgQThMOAorewor
ICAgIHVpbnQ4X3QgQTsKKyAgICB1aW50OF90IEw7CisKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29s
b3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBBOEw4ICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdy
aXRlQ29sb3IoQThMOCAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpOworICAgIHN0YXRpYyB2
b2lkIGF2ZXJhZ2UoQThMOCAqZHN0LCBjb25zdCBBOEw4ICpzcmMxLCBjb25zdCBBOEw4ICpzcmMy
KTsKK307CisKK3N0cnVjdCBSOEc4Cit7CisgICAgdWludDhfdCBSOworICAgIHVpbnQ4X3QgRzsK
KworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFI4Rzgg
KnNyYyk7CisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvclVJICpkc3QsIGNvbnN0
IFI4RzggKnNyYyk7CisgICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSOEc4ICpkc3QsIGNvbnN0
IGdsOjpDb2xvckYgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSOEc4ICpkc3Qs
IGNvbnN0IGdsOjpDb2xvclVJICpzcmMpOworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjhHOCAq
ZHN0LCBjb25zdCBSOEc4ICpzcmMxLCBjb25zdCBSOEc4ICpzcmMyKTsKK307CisKK3N0cnVjdCBS
OEc4QjgKK3sKKyAgICB1aW50OF90IFI7CisgICAgdWludDhfdCBHOworICAgIHVpbnQ4X3QgQjsK
KworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFI4RzhC
OCAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yVUkgKmRzdCwgY29u
c3QgUjhHOEI4ICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjhHOEI4ICpkc3Qs
IGNvbnN0IGdsOjpDb2xvckYgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSOEc4
QjggKmRzdCwgY29uc3QgZ2w6OkNvbG9yVUkgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgYXZlcmFn
ZShSOEc4QjggKmRzdCwgY29uc3QgUjhHOEI4ICpzcmMxLCBjb25zdCBSOEc4QjggKnNyYzIpOwor
fTsKKworc3RydWN0IEI4RzhSOAoreworICAgIHVpbnQ4X3QgQjsKKyAgICB1aW50OF90IEc7Cisg
ICAgdWludDhfdCBSOworCisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRz
dCwgY29uc3QgQjhHOFI4ICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29s
b3JVSSAqZHN0LCBjb25zdCBCOEc4UjggKnNyYyk7CisgICAgc3RhdGljIHZvaWQgd3JpdGVDb2xv
cihCOEc4UjggKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3
cml0ZUNvbG9yKEI4RzhSOCAqZHN0LCBjb25zdCBnbDo6Q29sb3JVSSAqc3JjKTsKKyAgICBzdGF0
aWMgdm9pZCBhdmVyYWdlKEI4RzhSOCAqZHN0LCBjb25zdCBCOEc4UjggKnNyYzEsIGNvbnN0IEI4
RzhSOCAqc3JjMik7Cit9OworCitzdHJ1Y3QgUjVHNkI1Cit7CisgICAgLy8gT3BlbkdMIEVTIDIu
MC4yNSBzcGVjIFNlY3Rpb24gMy42LjI6ICJDb21wb25lbnRzIGFyZSBwYWNrZWQgd2l0aCB0aGUg
Zmlyc3QgY29tcG9uZW50IGluIHRoZQorICAgIC8vIG1vc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiB0
aGUgYml0ZmllbGQsIGFuZCBzdWNjZXNzaXZlIGNvbXBvbmVudCBvY2N1cHlpbmcgcHJvZ3Jlc3Np
dmVseSBsZXNzCisgICAgLy8gc2lnbmlmaWNhbnQgbG9jYXRpb25zIgorICAgIHVpbnQxNl90IFJH
QjsKKworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFI1
RzZCNSAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFI1RzZCNSAqZHN0LCBjb25z
dCBnbDo6Q29sb3JGICpzcmMpOworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjVHNkI1ICpkc3Qs
IGNvbnN0IFI1RzZCNSAqc3JjMSwgY29uc3QgUjVHNkI1ICpzcmMyKTsKK307CisKK3N0cnVjdCBC
NUc2UjUKK3sKKyAgICB1aW50MTZfdCBCR1I7CisKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3Io
Z2w6OkNvbG9yRiAqZHN0LCBjb25zdCBCNUc2UjUgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgd3Jp
dGVDb2xvcihCNUc2UjUgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKTsKKyAgICBzdGF0aWMg
dm9pZCBhdmVyYWdlKEI1RzZSNSAqZHN0LCBjb25zdCBCNUc2UjUgKnNyYzEsIGNvbnN0IEI1RzZS
NSAqc3JjMik7Cit9OworCitzdHJ1Y3QgQThSOEc4QjgKK3sKKyAgICB1aW50OF90IEE7CisgICAg
dWludDhfdCBSOworICAgIHVpbnQ4X3QgRzsKKyAgICB1aW50OF90IEI7CisKKyAgICBzdGF0aWMg
dm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBBOFI4RzhCOCAqc3JjKTsKKyAg
ICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yVUkgKmRzdCwgY29uc3QgQThSOEc4Qjgg
KnNyYyk7CisgICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihBOFI4RzhCOCAqZHN0LCBjb25zdCBn
bDo6Q29sb3JGICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoQThSOEc4QjggKmRz
dCwgY29uc3QgZ2w6OkNvbG9yVUkgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgYXZlcmFnZShBOFI4
RzhCOCAqZHN0LCBjb25zdCBBOFI4RzhCOCAqc3JjMSwgY29uc3QgQThSOEc4QjggKnNyYzIpOwor
fTsKKworc3RydWN0IFI4RzhCOEE4Cit7CisgICAgdWludDhfdCBSOworICAgIHVpbnQ4X3QgRzsK
KyAgICB1aW50OF90IEI7CisgICAgdWludDhfdCBBOworCisgICAgc3RhdGljIHZvaWQgcmVhZENv
bG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjhHOEI4QTggKnNyYyk7CisgICAgc3RhdGljIHZv
aWQgcmVhZENvbG9yKGdsOjpDb2xvclVJICpkc3QsIGNvbnN0IFI4RzhCOEE4ICpzcmMpOworICAg
IHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjhHOEI4QTggKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAq
c3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFI4RzhCOEE4ICpkc3QsIGNvbnN0IGds
OjpDb2xvclVJICpzcmMpOworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjhHOEI4QTggKmRzdCwg
Y29uc3QgUjhHOEI4QTggKnNyYzEsIGNvbnN0IFI4RzhCOEE4ICpzcmMyKTsKK307CisKK3N0cnVj
dCBCOEc4UjhBOAoreworICAgIHVpbnQ4X3QgQjsKKyAgICB1aW50OF90IEc7CisgICAgdWludDhf
dCBSOworICAgIHVpbnQ4X3QgQTsKKworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29s
b3JGICpkc3QsIGNvbnN0IEI4RzhSOEE4ICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xv
cihnbDo6Q29sb3JVSSAqZHN0LCBjb25zdCBCOEc4UjhBOCAqc3JjKTsKKyAgICBzdGF0aWMgdm9p
ZCB3cml0ZUNvbG9yKEI4RzhSOEE4ICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYyk7CisgICAg
c3RhdGljIHZvaWQgd3JpdGVDb2xvcihCOEc4UjhBOCAqZHN0LCBjb25zdCBnbDo6Q29sb3JVSSAq
c3JjKTsKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKEI4RzhSOEE4ICpkc3QsIGNvbnN0IEI4RzhS
OEE4ICpzcmMxLCBjb25zdCBCOEc4UjhBOCAqc3JjMik7Cit9OworCitzdHJ1Y3QgQjhHOFI4WDgK
K3sKKyAgICB1aW50OF90IEI7CisgICAgdWludDhfdCBHOworICAgIHVpbnQ4X3QgUjsKKyAgICB1
aW50OF90IFg7CisKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBj
b25zdCBCOEc4UjhYOCAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9y
VUkgKmRzdCwgY29uc3QgQjhHOFI4WDggKnNyYyk7CisgICAgc3RhdGljIHZvaWQgd3JpdGVDb2xv
cihCOEc4UjhYOCAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpOworICAgIHN0YXRpYyB2b2lk
IHdyaXRlQ29sb3IoQjhHOFI4WDggKmRzdCwgY29uc3QgZ2w6OkNvbG9yVUkgKnNyYyk7CisgICAg
c3RhdGljIHZvaWQgYXZlcmFnZShCOEc4UjhYOCAqZHN0LCBjb25zdCBCOEc4UjhYOCAqc3JjMSwg
Y29uc3QgQjhHOFI4WDggKnNyYzIpOworfTsKKworc3RydWN0IEExUjVHNUI1Cit7CisgICAgdWlu
dDE2X3QgQVJHQjsKKworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3Qs
IGNvbnN0IEExUjVHNUI1ICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoQTFSNUc1
QjUgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdl
KEExUjVHNUI1ICpkc3QsIGNvbnN0IEExUjVHNUI1ICpzcmMxLCBjb25zdCBBMVI1RzVCNSAqc3Jj
Mik7Cit9OworCitzdHJ1Y3QgUjVHNUI1QTEKK3sKKyAgICAvLyBPcGVuR0wgRVMgMi4wLjI1IHNw
ZWMgU2VjdGlvbiAzLjYuMjogIkNvbXBvbmVudHMgYXJlIHBhY2tlZCB3aXRoIHRoZSBmaXJzdCBj
b21wb25lbnQgaW4gdGhlCisgICAgLy8gbW9zdCBzaWduaWZpY2FudAorICAgIC8vIGJpdHMgb2Yg
dGhlIGJpdGZpZWxkLCBhbmQgc3VjY2Vzc2l2ZSBjb21wb25lbnQgb2NjdXB5aW5nIHByb2dyZXNz
aXZlbHkgbGVzcyBzaWduaWZpY2FudAorICAgIC8vIGxvY2F0aW9ucyIKKyAgICB1aW50MTZfdCBS
R0JBOworCisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3Qg
UjVHNUI1QTEgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSNUc1QjVBMSAqZHN0
LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpOworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjVHNUI1
QTEgKmRzdCwgY29uc3QgUjVHNUI1QTEgKnNyYzEsIGNvbnN0IFI1RzVCNUExICpzcmMyKTsKK307
CisKK3N0cnVjdCBSNEc0QjRBNAoreworICAgIC8vIE9wZW5HTCBFUyAyLjAuMjUgc3BlYyBTZWN0
aW9uIDMuNi4yOiAiQ29tcG9uZW50cyBhcmUgcGFja2VkIHdpdGggdGhlIGZpcnN0IGNvbXBvbmVu
dCBpbiB0aGUKKyAgICAvLyBtb3N0IHNpZ25pZmljYW50CisgICAgLy8gYml0cyBvZiB0aGUgYml0
ZmllbGQsIGFuZCBzdWNjZXNzaXZlIGNvbXBvbmVudCBvY2N1cHlpbmcgcHJvZ3Jlc3NpdmVseSBs
ZXNzIHNpZ25pZmljYW50CisgICAgLy8gbG9jYXRpb25zIgorICAgIHVpbnQxNl90IFJHQkE7CisK
KyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSNEc0QjRB
NCAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFI0RzRCNEE0ICpkc3QsIGNvbnN0
IGdsOjpDb2xvckYgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgYXZlcmFnZShSNEc0QjRBNCAqZHN0
LCBjb25zdCBSNEc0QjRBNCAqc3JjMSwgY29uc3QgUjRHNEI0QTQgKnNyYzIpOworfTsKKworc3Ry
dWN0IEE0UjRHNEI0Cit7CisgICAgdWludDE2X3QgQVJHQjsKKworICAgIHN0YXRpYyB2b2lkIHJl
YWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IEE0UjRHNEI0ICpzcmMpOworICAgIHN0YXRp
YyB2b2lkIHdyaXRlQ29sb3IoQTRSNEc0QjQgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKTsK
KyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKEE0UjRHNEI0ICpkc3QsIGNvbnN0IEE0UjRHNEI0ICpz
cmMxLCBjb25zdCBBNFI0RzRCNCAqc3JjMik7Cit9OworCitzdHJ1Y3QgUjE2Cit7CisgICAgdWlu
dDE2X3QgUjsKKworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNv
bnN0IFIxNiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yVUkgKmRz
dCwgY29uc3QgUjE2ICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjE2ICpkc3Qs
IGNvbnN0IGdsOjpDb2xvckYgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSMTYg
KmRzdCwgY29uc3QgZ2w6OkNvbG9yVUkgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgYXZlcmFnZShS
MTYgKmRzdCwgY29uc3QgUjE2ICpzcmMxLCBjb25zdCBSMTYgKnNyYzIpOworfTsKKworc3RydWN0
IFIxNkcxNgoreworICAgIHVpbnQxNl90IFI7CisgICAgdWludDE2X3QgRzsKKworICAgIHN0YXRp
YyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIxNkcxNiAqc3JjKTsKKyAg
ICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yVUkgKmRzdCwgY29uc3QgUjE2RzE2ICpz
cmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjE2RzE2ICpkc3QsIGNvbnN0IGdsOjpD
b2xvckYgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSMTZHMTYgKmRzdCwgY29u
c3QgZ2w6OkNvbG9yVUkgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgYXZlcmFnZShSMTZHMTYgKmRz
dCwgY29uc3QgUjE2RzE2ICpzcmMxLCBjb25zdCBSMTZHMTYgKnNyYzIpOworfTsKKworc3RydWN0
IFIxNkcxNkIxNgoreworICAgIHVpbnQxNl90IFI7CisgICAgdWludDE2X3QgRzsKKyAgICB1aW50
MTZfdCBCOworCisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29u
c3QgUjE2RzE2QjE2ICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JV
SSAqZHN0LCBjb25zdCBSMTZHMTZCMTYgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgd3JpdGVDb2xv
cihSMTZHMTZCMTYgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKTsKKyAgICBzdGF0aWMgdm9p
ZCB3cml0ZUNvbG9yKFIxNkcxNkIxNiAqZHN0LCBjb25zdCBnbDo6Q29sb3JVSSAqc3JjKTsKKyAg
ICBzdGF0aWMgdm9pZCBhdmVyYWdlKFIxNkcxNkIxNiAqZHN0LCBjb25zdCBSMTZHMTZCMTYgKnNy
YzEsIGNvbnN0IFIxNkcxNkIxNiAqc3JjMik7Cit9OworCitzdHJ1Y3QgUjE2RzE2QjE2QTE2Cit7
CisgICAgdWludDE2X3QgUjsKKyAgICB1aW50MTZfdCBHOworICAgIHVpbnQxNl90IEI7CisgICAg
dWludDE2X3QgQTsKKworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3Qs
IGNvbnN0IFIxNkcxNkIxNkExNiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6
OkNvbG9yVUkgKmRzdCwgY29uc3QgUjE2RzE2QjE2QTE2ICpzcmMpOworICAgIHN0YXRpYyB2b2lk
IHdyaXRlQ29sb3IoUjE2RzE2QjE2QTE2ICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYyk7Cisg
ICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSMTZHMTZCMTZBMTYgKmRzdCwgY29uc3QgZ2w6OkNv
bG9yVUkgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgYXZlcmFnZShSMTZHMTZCMTZBMTYgKmRzdCwg
Y29uc3QgUjE2RzE2QjE2QTE2ICpzcmMxLCBjb25zdCBSMTZHMTZCMTZBMTYgKnNyYzIpOworfTsK
Kworc3RydWN0IFIzMgoreworICAgIHVpbnQzMl90IFI7CisKKyAgICBzdGF0aWMgdm9pZCByZWFk
Q29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMzIgKnNyYyk7CisgICAgc3RhdGljIHZvaWQg
cmVhZENvbG9yKGdsOjpDb2xvclVJICpkc3QsIGNvbnN0IFIzMiAqc3JjKTsKKyAgICBzdGF0aWMg
dm9pZCB3cml0ZUNvbG9yKFIzMiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpOworICAgIHN0
YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjMyICpkc3QsIGNvbnN0IGdsOjpDb2xvclVJICpzcmMpOwor
ICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjMyICpkc3QsIGNvbnN0IFIzMiAqc3JjMSwgY29uc3Qg
UjMyICpzcmMyKTsKK307CisKK3N0cnVjdCBSMzJHMzIKK3sKKyAgICB1aW50MzJfdCBSOworICAg
IHVpbnQzMl90IEc7CisKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0
LCBjb25zdCBSMzJHMzIgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xv
clVJICpkc3QsIGNvbnN0IFIzMkczMiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9y
KFIzMkczMiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdy
aXRlQ29sb3IoUjMyRzMyICpkc3QsIGNvbnN0IGdsOjpDb2xvclVJICpzcmMpOworICAgIHN0YXRp
YyB2b2lkIGF2ZXJhZ2UoUjMyRzMyICpkc3QsIGNvbnN0IFIzMkczMiAqc3JjMSwgY29uc3QgUjMy
RzMyICpzcmMyKTsKK307CisKK3N0cnVjdCBSMzJHMzJCMzIKK3sKKyAgICB1aW50MzJfdCBSOwor
ICAgIHVpbnQzMl90IEc7CisgICAgdWludDMyX3QgQjsKKworICAgIHN0YXRpYyB2b2lkIHJlYWRD
b2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIzMkczMkIzMiAqc3JjKTsKKyAgICBzdGF0aWMg
dm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yVUkgKmRzdCwgY29uc3QgUjMyRzMyQjMyICpzcmMpOwor
ICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjMyRzMyQjMyICpkc3QsIGNvbnN0IGdsOjpDb2xv
ckYgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSMzJHMzJCMzIgKmRzdCwgY29u
c3QgZ2w6OkNvbG9yVUkgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgYXZlcmFnZShSMzJHMzJCMzIg
KmRzdCwgY29uc3QgUjMyRzMyQjMyICpzcmMxLCBjb25zdCBSMzJHMzJCMzIgKnNyYzIpOworfTsK
Kworc3RydWN0IFIzMkczMkIzMkEzMgoreworICAgIHVpbnQzMl90IFI7CisgICAgdWludDMyX3Qg
RzsKKyAgICB1aW50MzJfdCBCOworICAgIHVpbnQzMl90IEE7CisKKyAgICBzdGF0aWMgdm9pZCBy
ZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMzJHMzJCMzJBMzIgKnNyYyk7CisgICAg
c3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvclVJICpkc3QsIGNvbnN0IFIzMkczMkIzMkEz
MiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIzMkczMkIzMkEzMiAqZHN0LCBj
b25zdCBnbDo6Q29sb3JGICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjMyRzMy
QjMyQTMyICpkc3QsIGNvbnN0IGdsOjpDb2xvclVJICpzcmMpOworICAgIHN0YXRpYyB2b2lkIGF2
ZXJhZ2UoUjMyRzMyQjMyQTMyICpkc3QsIGNvbnN0IFIzMkczMkIzMkEzMiAqc3JjMSwgY29uc3Qg
UjMyRzMyQjMyQTMyICpzcmMyKTsKK307CisKK3N0cnVjdCBSOFMKK3sKKyAgICBpbnQ4X3QgUjsK
KworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFI4UyAq
c3JjKTsKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9ySSAqZHN0LCBjb25zdCBS
OFMgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSOFMgKmRzdCwgY29uc3QgZ2w6
OkNvbG9yRiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFI4UyAqZHN0LCBjb25z
dCBnbDo6Q29sb3JJICpzcmMpOworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjhTICpkc3QsIGNv
bnN0IFI4UyAqc3JjMSwgY29uc3QgUjhTICpzcmMyKTsKK307CisKK3N0cnVjdCBSOEc4Uworewor
ICAgIGludDhfdCBSOworICAgIGludDhfdCBHOworCisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9y
KGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjhHOFMgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgcmVh
ZENvbG9yKGdsOjpDb2xvckkgKmRzdCwgY29uc3QgUjhHOFMgKnNyYyk7CisgICAgc3RhdGljIHZv
aWQgd3JpdGVDb2xvcihSOEc4UyAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpOworICAgIHN0
YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjhHOFMgKmRzdCwgY29uc3QgZ2w6OkNvbG9ySSAqc3JjKTsK
KyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFI4RzhTICpkc3QsIGNvbnN0IFI4RzhTICpzcmMxLCBj
b25zdCBSOEc4UyAqc3JjMik7Cit9OworCitzdHJ1Y3QgUjhHOEI4UworeworICAgIGludDhfdCBS
OworICAgIGludDhfdCBHOworICAgIGludDhfdCBCOworCisgICAgc3RhdGljIHZvaWQgcmVhZENv
bG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjhHOEI4UyAqc3JjKTsKKyAgICBzdGF0aWMgdm9p
ZCByZWFkQ29sb3IoZ2w6OkNvbG9ySSAqZHN0LCBjb25zdCBSOEc4QjhTICpzcmMpOworICAgIHN0
YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjhHOEI4UyAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMp
OworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjhHOEI4UyAqZHN0LCBjb25zdCBnbDo6Q29s
b3JJICpzcmMpOworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjhHOEI4UyAqZHN0LCBjb25zdCBS
OEc4QjhTICpzcmMxLCBjb25zdCBSOEc4QjhTICpzcmMyKTsKK307CisKK3N0cnVjdCBSOEc4QjhB
OFMKK3sKKyAgICBpbnQ4X3QgUjsKKyAgICBpbnQ4X3QgRzsKKyAgICBpbnQ4X3QgQjsKKyAgICBp
bnQ4X3QgQTsKKworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNv
bnN0IFI4RzhCOEE4UyAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9y
SSAqZHN0LCBjb25zdCBSOEc4QjhBOFMgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgd3JpdGVDb2xv
cihSOEc4QjhBOFMgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKTsKKyAgICBzdGF0aWMgdm9p
ZCB3cml0ZUNvbG9yKFI4RzhCOEE4UyAqZHN0LCBjb25zdCBnbDo6Q29sb3JJICpzcmMpOworICAg
IHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjhHOEI4QThTICpkc3QsIGNvbnN0IFI4RzhCOEE4UyAqc3Jj
MSwgY29uc3QgUjhHOEI4QThTICpzcmMyKTsKK307CisKK3N0cnVjdCBSMTZTCit7CisgICAgaW50
MTZfdCBSOworCisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29u
c3QgUjE2UyAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9ySSAqZHN0
LCBjb25zdCBSMTZTICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjE2UyAqZHN0
LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjE2
UyAqZHN0LCBjb25zdCBnbDo6Q29sb3JJICpzcmMpOworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2Uo
UjE2UyAqZHN0LCBjb25zdCBSMTZTICpzcmMxLCBjb25zdCBSMTZTICpzcmMyKTsKK307CisKK3N0
cnVjdCBSMTZHMTZTCit7CisgICAgaW50MTZfdCBSOworICAgIGludDE2X3QgRzsKKworICAgIHN0
YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIxNkcxNlMgKnNyYyk7
CisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckkgKmRzdCwgY29uc3QgUjE2RzE2
UyAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIxNkcxNlMgKmRzdCwgY29uc3Qg
Z2w6OkNvbG9yRiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIxNkcxNlMgKmRz
dCwgY29uc3QgZ2w6OkNvbG9ySSAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFIxNkcx
NlMgKmRzdCwgY29uc3QgUjE2RzE2UyAqc3JjMSwgY29uc3QgUjE2RzE2UyAqc3JjMik7Cit9Owor
CitzdHJ1Y3QgUjE2RzE2QjE2UworeworICAgIGludDE2X3QgUjsKKyAgICBpbnQxNl90IEc7Cisg
ICAgaW50MTZfdCBCOworCisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRz
dCwgY29uc3QgUjE2RzE2QjE2UyAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6
OkNvbG9ySSAqZHN0LCBjb25zdCBSMTZHMTZCMTZTICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdy
aXRlQ29sb3IoUjE2RzE2QjE2UyAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpOworICAgIHN0
YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjE2RzE2QjE2UyAqZHN0LCBjb25zdCBnbDo6Q29sb3JJICpz
cmMpOworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjE2RzE2QjE2UyAqZHN0LCBjb25zdCBSMTZH
MTZCMTZTICpzcmMxLCBjb25zdCBSMTZHMTZCMTZTICpzcmMyKTsKK307CisKK3N0cnVjdCBSMTZH
MTZCMTZBMTZTCit7CisgICAgaW50MTZfdCBSOworICAgIGludDE2X3QgRzsKKyAgICBpbnQxNl90
IEI7CisgICAgaW50MTZfdCBBOworCisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xv
ckYgKmRzdCwgY29uc3QgUjE2RzE2QjE2QTE2UyAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCByZWFk
Q29sb3IoZ2w6OkNvbG9ySSAqZHN0LCBjb25zdCBSMTZHMTZCMTZBMTZTICpzcmMpOworICAgIHN0
YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjE2RzE2QjE2QTE2UyAqZHN0LCBjb25zdCBnbDo6Q29sb3JG
ICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjE2RzE2QjE2QTE2UyAqZHN0LCBj
b25zdCBnbDo6Q29sb3JJICpzcmMpOworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjE2RzE2QjE2
QTE2UyAqZHN0LCBjb25zdCBSMTZHMTZCMTZBMTZTICpzcmMxLCBjb25zdCBSMTZHMTZCMTZBMTZT
ICpzcmMyKTsKK307CisKK3N0cnVjdCBSMzJTCit7CisgICAgaW50MzJfdCBSOworCisgICAgc3Rh
dGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjMyUyAqc3JjKTsKKyAg
ICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9ySSAqZHN0LCBjb25zdCBSMzJTICpzcmMp
OworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjMyUyAqZHN0LCBjb25zdCBnbDo6Q29sb3JG
ICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjMyUyAqZHN0LCBjb25zdCBnbDo6
Q29sb3JJICpzcmMpOworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjMyUyAqZHN0LCBjb25zdCBS
MzJTICpzcmMxLCBjb25zdCBSMzJTICpzcmMyKTsKK307CisKK3N0cnVjdCBSMzJHMzJTCit7Cisg
ICAgaW50MzJfdCBSOworICAgIGludDMyX3QgRzsKKworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xv
cihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIzMkczMlMgKnNyYyk7CisgICAgc3RhdGljIHZvaWQg
cmVhZENvbG9yKGdsOjpDb2xvckkgKmRzdCwgY29uc3QgUjMyRzMyUyAqc3JjKTsKKyAgICBzdGF0
aWMgdm9pZCB3cml0ZUNvbG9yKFIzMkczMlMgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKTsK
KyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIzMkczMlMgKmRzdCwgY29uc3QgZ2w6OkNvbG9y
SSAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFIzMkczMlMgKmRzdCwgY29uc3QgUjMy
RzMyUyAqc3JjMSwgY29uc3QgUjMyRzMyUyAqc3JjMik7Cit9OworCitzdHJ1Y3QgUjMyRzMyQjMy
UworeworICAgIGludDMyX3QgUjsKKyAgICBpbnQzMl90IEc7CisgICAgaW50MzJfdCBCOworCisg
ICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjMyRzMyQjMy
UyAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9ySSAqZHN0LCBjb25z
dCBSMzJHMzJCMzJTICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjMyRzMyQjMy
UyAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29s
b3IoUjMyRzMyQjMyUyAqZHN0LCBjb25zdCBnbDo6Q29sb3JJICpzcmMpOworICAgIHN0YXRpYyB2
b2lkIGF2ZXJhZ2UoUjMyRzMyQjMyUyAqZHN0LCBjb25zdCBSMzJHMzJCMzJTICpzcmMxLCBjb25z
dCBSMzJHMzJCMzJTICpzcmMyKTsKK307CisKK3N0cnVjdCBSMzJHMzJCMzJBMzJTCit7CisgICAg
aW50MzJfdCBSOworICAgIGludDMyX3QgRzsKKyAgICBpbnQzMl90IEI7CisgICAgaW50MzJfdCBB
OworCisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjMy
RzMyQjMyQTMyUyAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9ySSAq
ZHN0LCBjb25zdCBSMzJHMzJCMzJBMzJTICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29s
b3IoUjMyRzMyQjMyQTMyUyAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpOworICAgIHN0YXRp
YyB2b2lkIHdyaXRlQ29sb3IoUjMyRzMyQjMyQTMyUyAqZHN0LCBjb25zdCBnbDo6Q29sb3JJICpz
cmMpOworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjMyRzMyQjMyQTMyUyAqZHN0LCBjb25zdCBS
MzJHMzJCMzJBMzJTICpzcmMxLCBjb25zdCBSMzJHMzJCMzJBMzJTICpzcmMyKTsKK307CisKK3N0
cnVjdCBBMTZCMTZHMTZSMTZGCit7CisgICAgdWludDE2X3QgQTsKKyAgICB1aW50MTZfdCBSOwor
ICAgIHVpbnQxNl90IEc7CisgICAgdWludDE2X3QgQjsKKworICAgIHN0YXRpYyB2b2lkIHJlYWRD
b2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IEExNkIxNkcxNlIxNkYgKnNyYyk7CisgICAgc3Rh
dGljIHZvaWQgd3JpdGVDb2xvcihBMTZCMTZHMTZSMTZGICpkc3QsIGNvbnN0IGdsOjpDb2xvckYg
KnNyYyk7CisgICAgc3RhdGljIHZvaWQgYXZlcmFnZShBMTZCMTZHMTZSMTZGICpkc3QsIGNvbnN0
IEExNkIxNkcxNlIxNkYgKnNyYzEsIGNvbnN0IEExNkIxNkcxNlIxNkYgKnNyYzIpOworfTsKKwor
c3RydWN0IFIxNkcxNkIxNkExNkYKK3sKKyAgICB1aW50MTZfdCBSOworICAgIHVpbnQxNl90IEc7
CisgICAgdWludDE2X3QgQjsKKyAgICB1aW50MTZfdCBBOworCisgICAgc3RhdGljIHZvaWQgcmVh
ZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjE2RzE2QjE2QTE2RiAqc3JjKTsKKyAgICBz
dGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIxNkcxNkIxNkExNkYgKmRzdCwgY29uc3QgZ2w6OkNvbG9y
RiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFIxNkcxNkIxNkExNkYgKmRzdCwgY29u
c3QgUjE2RzE2QjE2QTE2RiAqc3JjMSwgY29uc3QgUjE2RzE2QjE2QTE2RiAqc3JjMik7Cit9Owor
CitzdHJ1Y3QgUjE2RgoreworICAgIHVpbnQxNl90IFI7CisKKyAgICBzdGF0aWMgdm9pZCByZWFk
Q29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMTZGICpzcmMpOworICAgIHN0YXRpYyB2b2lk
IHdyaXRlQ29sb3IoUjE2RiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpOworICAgIHN0YXRp
YyB2b2lkIGF2ZXJhZ2UoUjE2RiAqZHN0LCBjb25zdCBSMTZGICpzcmMxLCBjb25zdCBSMTZGICpz
cmMyKTsKK307CisKK3N0cnVjdCBBMTZGCit7CisgICAgdWludDE2X3QgQTsKKworICAgIHN0YXRp
YyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IEExNkYgKnNyYyk7CisgICAg
c3RhdGljIHZvaWQgd3JpdGVDb2xvcihBMTZGICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYyk7
CisgICAgc3RhdGljIHZvaWQgYXZlcmFnZShBMTZGICpkc3QsIGNvbnN0IEExNkYgKnNyYzEsIGNv
bnN0IEExNkYgKnNyYzIpOworfTsKKworc3RydWN0IEwxNkYKK3sKKyAgICB1aW50MTZfdCBMOwor
CisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgTDE2RiAq
c3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKEwxNkYgKmRzdCwgY29uc3QgZ2w6OkNv
bG9yRiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKEwxNkYgKmRzdCwgY29uc3QgTDE2
RiAqc3JjMSwgY29uc3QgTDE2RiAqc3JjMik7Cit9OworCitzdHJ1Y3QgTDE2QTE2RgoreworICAg
IHVpbnQxNl90IEw7CisgICAgdWludDE2X3QgQTsKKworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xv
cihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IEwxNkExNkYgKnNyYyk7CisgICAgc3RhdGljIHZvaWQg
d3JpdGVDb2xvcihMMTZBMTZGICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYyk7CisgICAgc3Rh
dGljIHZvaWQgYXZlcmFnZShMMTZBMTZGICpkc3QsIGNvbnN0IEwxNkExNkYgKnNyYzEsIGNvbnN0
IEwxNkExNkYgKnNyYzIpOworfTsKKworc3RydWN0IFIxNkcxNkYKK3sKKyAgICB1aW50MTZfdCBS
OworICAgIHVpbnQxNl90IEc7CisKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9y
RiAqZHN0LCBjb25zdCBSMTZHMTZGICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3Io
UjE2RzE2RiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpOworICAgIHN0YXRpYyB2b2lkIGF2
ZXJhZ2UoUjE2RzE2RiAqZHN0LCBjb25zdCBSMTZHMTZGICpzcmMxLCBjb25zdCBSMTZHMTZGICpz
cmMyKTsKK307CisKK3N0cnVjdCBSMTZHMTZCMTZGCit7CisgICAgdWludDE2X3QgUjsKKyAgICB1
aW50MTZfdCBHOworICAgIHVpbnQxNl90IEI7CisKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3Io
Z2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMTZHMTZCMTZGICpzcmMpOworICAgIHN0YXRpYyB2b2lk
IHdyaXRlQ29sb3IoUjE2RzE2QjE2RiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpOworICAg
IHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjE2RzE2QjE2RiAqZHN0LCBjb25zdCBSMTZHMTZCMTZGICpz
cmMxLCBjb25zdCBSMTZHMTZCMTZGICpzcmMyKTsKK307CisKK3N0cnVjdCBBMzJCMzJHMzJSMzJG
Cit7CisgICAgZmxvYXQgQTsKKyAgICBmbG9hdCBSOworICAgIGZsb2F0IEc7CisgICAgZmxvYXQg
QjsKKworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IEEz
MkIzMkczMlIzMkYgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihBMzJCMzJHMzJS
MzJGICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgYXZlcmFn
ZShBMzJCMzJHMzJSMzJGICpkc3QsIGNvbnN0IEEzMkIzMkczMlIzMkYgKnNyYzEsIGNvbnN0IEEz
MkIzMkczMlIzMkYgKnNyYzIpOworfTsKKworc3RydWN0IFIzMkczMkIzMkEzMkYKK3sKKyAgICBm
bG9hdCBSOworICAgIGZsb2F0IEc7CisgICAgZmxvYXQgQjsKKyAgICBmbG9hdCBBOworCisgICAg
c3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjMyRzMyQjMyQTMy
RiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIzMkczMkIzMkEzMkYgKmRzdCwg
Y29uc3QgZ2w6OkNvbG9yRiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFIzMkczMkIz
MkEzMkYgKmRzdCwgY29uc3QgUjMyRzMyQjMyQTMyRiAqc3JjMSwgY29uc3QgUjMyRzMyQjMyQTMy
RiAqc3JjMik7Cit9OworCitzdHJ1Y3QgUjMyRgoreworICAgIGZsb2F0IFI7CisKKyAgICBzdGF0
aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMzJGICpzcmMpOworICAg
IHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjMyRiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMp
OworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjMyRiAqZHN0LCBjb25zdCBSMzJGICpzcmMxLCBj
b25zdCBSMzJGICpzcmMyKTsKK307CisKK3N0cnVjdCBBMzJGCit7CisgICAgZmxvYXQgQTsKKwor
ICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IEEzMkYgKnNy
Yyk7CisgICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihBMzJGICpkc3QsIGNvbnN0IGdsOjpDb2xv
ckYgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgYXZlcmFnZShBMzJGICpkc3QsIGNvbnN0IEEzMkYg
KnNyYzEsIGNvbnN0IEEzMkYgKnNyYzIpOworfTsKKworc3RydWN0IEwzMkYKK3sKKyAgICBmbG9h
dCBMOworCisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3Qg
TDMyRiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKEwzMkYgKmRzdCwgY29uc3Qg
Z2w6OkNvbG9yRiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKEwzMkYgKmRzdCwgY29u
c3QgTDMyRiAqc3JjMSwgY29uc3QgTDMyRiAqc3JjMik7Cit9OworCitzdHJ1Y3QgTDMyQTMyRgor
eworICAgIGZsb2F0IEw7CisgICAgZmxvYXQgQTsKKworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xv
cihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IEwzMkEzMkYgKnNyYyk7CisgICAgc3RhdGljIHZvaWQg
d3JpdGVDb2xvcihMMzJBMzJGICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYyk7CisgICAgc3Rh
dGljIHZvaWQgYXZlcmFnZShMMzJBMzJGICpkc3QsIGNvbnN0IEwzMkEzMkYgKnNyYzEsIGNvbnN0
IEwzMkEzMkYgKnNyYzIpOworfTsKKworc3RydWN0IFIzMkczMkYKK3sKKyAgICBmbG9hdCBSOwor
ICAgIGZsb2F0IEc7CisKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0
LCBjb25zdCBSMzJHMzJGICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjMyRzMy
RiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpOworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2Uo
UjMyRzMyRiAqZHN0LCBjb25zdCBSMzJHMzJGICpzcmMxLCBjb25zdCBSMzJHMzJGICpzcmMyKTsK
K307CisKK3N0cnVjdCBSMzJHMzJCMzJGCit7CisgICAgZmxvYXQgUjsKKyAgICBmbG9hdCBHOwor
ICAgIGZsb2F0IEI7CisKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0
LCBjb25zdCBSMzJHMzJCMzJGICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjMy
RzMyQjMyRiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpOworICAgIHN0YXRpYyB2b2lkIGF2
ZXJhZ2UoUjMyRzMyQjMyRiAqZHN0LCBjb25zdCBSMzJHMzJCMzJGICpzcmMxLCBjb25zdCBSMzJH
MzJCMzJGICpzcmMyKTsKK307CisKK3N0cnVjdCBSMTBHMTBCMTBBMgoreworICAgIHVpbnQzMl90
IFIgOiAxMDsKKyAgICB1aW50MzJfdCBHIDogMTA7CisgICAgdWludDMyX3QgQiA6IDEwOworICAg
IHVpbnQzMl90IEEgOiAyOworCisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYg
KmRzdCwgY29uc3QgUjEwRzEwQjEwQTIgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9y
KGdsOjpDb2xvclVJICpkc3QsIGNvbnN0IFIxMEcxMEIxMEEyICpzcmMpOworICAgIHN0YXRpYyB2
b2lkIHdyaXRlQ29sb3IoUjEwRzEwQjEwQTIgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKTsK
KyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIxMEcxMEIxMEEyICpkc3QsIGNvbnN0IGdsOjpD
b2xvclVJICpzcmMpOworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjEwRzEwQjEwQTIgKmRzdCwg
Y29uc3QgUjEwRzEwQjEwQTIgKnNyYzEsIGNvbnN0IFIxMEcxMEIxMEEyICpzcmMyKTsKK307Citz
dGF0aWNfYXNzZXJ0KHNpemVvZihSMTBHMTBCMTBBMikgPT0gNCwgIlIxMEcxMEIxMEEyIHN0cnVj
dCBub3QgMzItYml0cy4iKTsKKworc3RydWN0IFI5RzlCOUU1Cit7CisgICAgdWludDMyX3QgUiA6
IDk7CisgICAgdWludDMyX3QgRyA6IDk7CisgICAgdWludDMyX3QgQiA6IDk7CisgICAgdWludDMy
X3QgRSA6IDU7CisKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBj
b25zdCBSOUc5QjlFNSAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFI5RzlCOUU1
ICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgYXZlcmFnZShS
OUc5QjlFNSAqZHN0LCBjb25zdCBSOUc5QjlFNSAqc3JjMSwgY29uc3QgUjlHOUI5RTUgKnNyYzIp
OworfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFI5RzlCOUU1KSA9PSA0LCAiUjlHOUI5RTUgc3Ry
dWN0IG5vdCAzMi1iaXRzLiIpOworCitzdHJ1Y3QgUjExRzExQjEwRgoreworICAgIHVpbnQzMl90
IFIgOiAxMTsKKyAgICB1aW50MzJfdCBHIDogMTE7CisgICAgdWludDMyX3QgQiA6IDEwOworCisg
ICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjExRzExQjEw
RiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIxMUcxMUIxMEYgKmRzdCwgY29u
c3QgZ2w6OkNvbG9yRiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFIxMUcxMUIxMEYg
KmRzdCwgY29uc3QgUjExRzExQjEwRiAqc3JjMSwgY29uc3QgUjExRzExQjEwRiAqc3JjMik7Cit9
Oworc3RhdGljX2Fzc2VydChzaXplb2YoUjExRzExQjEwRikgPT0gNCwgIlIxMUcxMUIxMEYgc3Ry
dWN0IG5vdCAzMi1iaXRzLiIpOworCit9ICAvLyBuYW1lc3BhY2UgYW5nbGUKKworI2VuZGlmICAv
LyBJTUFHRVVUSUxfSU1BR0VGT1JNQVRTX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvaW1hZ2VfdXRpbC9sb2FkaW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9pbWFnZV91dGlsL2xvYWRpbWFnZS5jcHAJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2ltYWdlX3V0aWwvbG9hZGltYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzMjMgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIw
MTMtMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8v
IGFuZ2xlX2xvYWRpbWFnZS5jcHA6IERlZmluZXMgaW1hZ2UgbG9hZGluZyBmdW5jdGlvbnMuCisK
KyNpbmNsdWRlICJpbWFnZV91dGlsL2xvYWRpbWFnZS5oIgorCisjaW5jbHVkZSAiY29tbW9uL21h
dGh1dGlsLmgiCisjaW5jbHVkZSAiY29tbW9uL3BsYXRmb3JtLmgiCisjaW5jbHVkZSAiaW1hZ2Vf
dXRpbC9pbWFnZWZvcm1hdHMuaCIKKworbmFtZXNwYWNlIGFuZ2xlCit7CisKK3ZvaWQgTG9hZEE4
VG9SR0JBOChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwK
KyAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgY29u
c3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0
Y2gsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAg
ICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91
dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNo
KQoreworI2lmIGRlZmluZWQoQU5HTEVfVVNFX1NTRSkKKyAgICBpZiAoZ2w6OnN1cHBvcnRzU1NF
MigpKQorICAgIHsKKyAgICAgICAgX19tMTI4aSB6ZXJvV2lkZSA9IF9tbV9zZXR6ZXJvX3NpMTI4
KCk7CisKKyAgICAgICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQorICAgICAg
ICB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNvdXJjZSA9CisgICAg
ICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+KGlucHV0LCB5
LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOworICAgICAgICAgICAgICAgIHVp
bnQzMl90ICpkZXN0ID0gcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dWludDMyX3Q+KG91dHB1dCwg
eSwgeiwgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0RGVwdGhQaXRjaCk7CisKKyAg
ICAgICAgICAgICAgICBzaXplX3QgeCA9IDA7CisKKyAgICAgICAgICAgICAgICAvLyBNYWtlIG91
dHB1dCB3cml0ZXMgYWxpZ25lZAorICAgICAgICAgICAgICAgIGZvciAoOyAoKHJlaW50ZXJwcmV0
X2Nhc3Q8aW50cHRyX3Q+KCZkZXN0W3hdKSAmIDB4RikgIT0gMCAmJiB4IDwgd2lkdGgpOyB4Kysp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBkZXN0W3hdID0gc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KHNvdXJjZVt4XSkgPDwgMjQ7CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgZm9yICg7IHggKyA3IDwgd2lkdGg7IHggKz0gOCkKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIF9fbTEyOGkgc291cmNlRGF0YSA9CisgICAgICAg
ICAgICAgICAgICAgICAgICBfbW1fbG9hZGxfZXBpNjQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBf
X20xMjhpICo+KCZzb3VyY2VbeF0pKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gSW50ZXJsZWF2
ZSBlYWNoIGJ5dGUgdG8gMTZiaXQsIG1ha2UgdGhlIGxvd2VyIGJ5dGUgdG8gemVybworICAgICAg
ICAgICAgICAgICAgICBzb3VyY2VEYXRhID0gX21tX3VucGFja2xvX2VwaTgoemVyb1dpZGUsIHNv
dXJjZURhdGEpOworICAgICAgICAgICAgICAgICAgICAvLyBJbnRlcmxlYXZlIGVhY2ggMTZiaXQg
dG8gMzJiaXQsIG1ha2UgdGhlIGxvd2VyIDE2Yml0IHRvIHplcm8KKyAgICAgICAgICAgICAgICAg
ICAgX19tMTI4aSBsbyA9IF9tbV91bnBhY2tsb19lcGkxNih6ZXJvV2lkZSwgc291cmNlRGF0YSk7
CisgICAgICAgICAgICAgICAgICAgIF9fbTEyOGkgaGkgPSBfbW1fdW5wYWNraGlfZXBpMTYoemVy
b1dpZGUsIHNvdXJjZURhdGEpOworCisgICAgICAgICAgICAgICAgICAgIF9tbV9zdG9yZV9zaTEy
OChyZWludGVycHJldF9jYXN0PF9fbTEyOGkgKj4oJmRlc3RbeF0pLCBsbyk7CisgICAgICAgICAg
ICAgICAgICAgIF9tbV9zdG9yZV9zaTEyOChyZWludGVycHJldF9jYXN0PF9fbTEyOGkgKj4oJmRl
c3RbeCArIDRdKSwgaGkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8v
IEhhbmRsZSB0aGUgcmVtYWluZGVyCisgICAgICAgICAgICAgICAgZm9yICg7IHggPCB3aWR0aDsg
eCsrKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZGVzdFt4XSA9IHN0
YXRpY19jYXN0PHVpbnQzMl90Pihzb3VyY2VbeF0pIDw8IDI0OworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5k
aWYKKworICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKKyAgICB7CisgICAg
ICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNvdXJjZSA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zm
c2V0RGF0YVBvaW50ZXI8dWludDhfdD4oaW5wdXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0
RGVwdGhQaXRjaCk7CisgICAgICAgICAgICB1aW50MzJfdCAqZGVzdCA9CisgICAgICAgICAgICAg
ICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dWludDMyX3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0
Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOworICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9
IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlc3Rb
eF0gPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc291cmNlW3hdKSA8PCAyNDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBMb2FkQThUb0JHUkE4KHNpemVfdCB3aWR0
aCwKKyAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAg
IHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwK
KyAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qg
Km91dHB1dCwKKyAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgLy8gU2FtZSBh
cyBsb2FkaW5nIHRvIFJHQkEKKyAgICBMb2FkQThUb1JHQkE4KHdpZHRoLCBoZWlnaHQsIGRlcHRo
LCBpbnB1dCwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoLCBvdXRwdXQsCisgICAgICAg
ICAgICAgICAgICBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7Cit9CisKK3ZvaWQg
TG9hZEEzMkZUb1JHQkEzMkYoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0
cHV0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQoreworICAgIGZvciAo
c2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90
IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGZs
b2F0ICpzb3VyY2UgPQorICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2ludGVyPGZs
b2F0PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKKyAgICAg
ICAgICAgIGZsb2F0ICpkZXN0ID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9p
bnRlcjxmbG9hdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRj
aCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gMC4wZjsKKyAgICAg
ICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSAwLjBmOworICAgICAgICAgICAgICAgIGRlc3Rb
NCAqIHggKyAyXSA9IDAuMGY7CisgICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDNdID0gc291
cmNlW3hdOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIExvYWRB
MTZGVG9SR0JBMTZGKHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBp
bnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAgICBmb3IgKHNpemVf
dCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCB5ID0g
MDsgeSA8IGhlaWdodDsgeSsrKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCB1aW50MTZf
dCAqc291cmNlID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50
MTZfdD4oaW5wdXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAg
ICAgICAgICB1aW50MTZfdCAqZGVzdCA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0
YVBvaW50ZXI8dWludDE2X3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERl
cHRoUGl0Y2gpOworICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCsr
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSA9IDA7Cisg
ICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gMDsKKyAgICAgICAgICAgICAgICBkZXN0
WzQgKiB4ICsgMl0gPSAwOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSA9IHNvdXJj
ZVt4XTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBMb2FkTDhU
b1JHQkE4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAor
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICBjb25z
dCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRj
aCwKKyAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAg
ICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0
cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gp
Cit7CisgICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQorICAgIHsKKyAgICAg
ICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAgeworICAgICAg
ICAgICAgY29uc3QgdWludDhfdCAqc291cmNlID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZz
ZXREYXRhUG9pbnRlcjx1aW50OF90PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXRE
ZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIHVpbnQ4X3QgKmRlc3QgPQorICAgICAgICAgICAgICAg
IHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93
UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOworICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7
IHggPCB3aWR0aDsgeCsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHVpbnQ4X3Qg
c291cmNlVmFsID0gc291cmNlW3hdOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSAg
ID0gc291cmNlVmFsOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSAgID0gc291cmNl
VmFsOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSAgID0gc291cmNlVmFsOworICAg
ICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSAgID0gMHhGRjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KK30KKwordm9pZCBMb2FkTDhUb0JHUkE4KHNpemVfdCB3aWR0aCwKKyAg
ICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgIHNpemVf
dCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAg
ICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICBz
aXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1
dCwKKyAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgLy8gU2FtZSBhcyBsb2Fk
aW5nIHRvIFJHQkEKKyAgICBMb2FkTDhUb1JHQkE4KHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBpbnB1
dCwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoLCBvdXRwdXQsCisgICAgICAgICAgICAg
ICAgICBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7Cit9CisKK3ZvaWQgTG9hZEwz
MkZUb1JHQkEzMkYoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
aGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlu
cHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAor
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQoreworICAgIGZvciAoc2l6ZV90
IHogPSAwOyB6IDwgZGVwdGg7IHorKykKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IHkgPSAw
OyB5IDwgaGVpZ2h0OyB5KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGZsb2F0ICpz
b3VyY2UgPQorICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2ludGVyPGZsb2F0Pihp
bnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAg
IGZsb2F0ICpkZXN0ID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjxm
bG9hdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7Cisg
ICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gc291cmNlW3hdOworICAgICAg
ICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IHNvdXJjZVt4XTsKKyAgICAgICAgICAgICAgICBk
ZXN0WzQgKiB4ICsgMl0gPSBzb3VyY2VbeF07CisgICAgICAgICAgICAgICAgZGVzdFs0ICogeCAr
IDNdID0gMS4wZjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBM
b2FkTDE2RlRvUkdCQTE2RihzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRw
dXQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgZm9yIChz
aXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQorICAgIHsKKyAgICAgICAgZm9yIChzaXplX3Qg
eSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgdWlu
dDE2X3QgKnNvdXJjZSA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8
dWludDE2X3Q+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOwor
ICAgICAgICAgICAgdWludDE2X3QgKmRlc3QgPQorICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNl
dERhdGFQb2ludGVyPHVpbnQxNl90PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRw
dXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7
IHgrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSBz
b3VyY2VbeF07CisgICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gc291cmNlW3hdOwor
ICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IHNvdXJjZVt4XTsKKyAgICAgICAgICAg
ICAgICBkZXN0WzQgKiB4ICsgM10gPSBnbDo6RmxvYXQxNk9uZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KK30KKwordm9pZCBMb2FkTEE4VG9SR0JBOChzaXplX3Qgd2lkdGgsCisg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICB1aW50OF90
ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgZm9yIChz
aXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQorICAgIHsKKyAgICAgICAgZm9yIChzaXplX3Qg
eSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgdWlu
dDhfdCAqc291cmNlID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1
aW50OF90PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKKyAg
ICAgICAgICAgIHVpbnQ4X3QgKmRlc3QgPQorICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNldERh
dGFQb2ludGVyPHVpbnQ4X3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERl
cHRoUGl0Y2gpOworICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCsr
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSA9IHNvdXJj
ZVsyICogeCArIDBdOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IHNvdXJjZVsy
ICogeCArIDBdOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IHNvdXJjZVsyICog
eCArIDBdOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSA9IHNvdXJjZVsyICogeCAr
IDFdOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIExvYWRMQThU
b0JHUkE4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwK
KyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICBj
b25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93
UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAg
ICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVw
dGhQaXRjaCkKK3sKKyAgICAvLyBTYW1lIGFzIGxvYWRpbmcgdG8gUkdCQQorICAgIExvYWRMQThU
b1JHQkE4KHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBpbnB1dCwgaW5wdXRSb3dQaXRjaCwgaW5wdXRE
ZXB0aFBpdGNoLCBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgb3V0cHV0Um93UGl0Y2gsIG91
dHB1dERlcHRoUGl0Y2gpOworfQorCit2b2lkIExvYWRMQTMyRlRvUkdCQTMyRihzaXplX3Qgd2lk
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQ
aXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRl
cHRoOyB6KyspCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsg
eSsrKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBmbG9hdCAqc291cmNlID0KKyAgICAg
ICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjxmbG9hdD4oaW5wdXQsIHksIHosIGlu
cHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICBmbG9hdCAqZGVzdCA9
CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8ZmxvYXQ+KG91dHB1dCwg
eSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOworICAgICAgICAgICAgZm9y
IChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGRlc3RbNCAqIHggKyAwXSA9IHNvdXJjZVsyICogeCArIDBdOworICAgICAgICAgICAg
ICAgIGRlc3RbNCAqIHggKyAxXSA9IHNvdXJjZVsyICogeCArIDBdOworICAgICAgICAgICAgICAg
IGRlc3RbNCAqIHggKyAyXSA9IHNvdXJjZVsyICogeCArIDBdOworICAgICAgICAgICAgICAgIGRl
c3RbNCAqIHggKyAzXSA9IHNvdXJjZVsyICogeCArIDFdOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorfQorCit2b2lkIExvYWRMQTE2RlRvUkdCQTE2RihzaXplX3Qgd2lkdGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhf
dCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
b3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6
KyspCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQor
ICAgICAgICB7CisgICAgICAgICAgICBjb25zdCB1aW50MTZfdCAqc291cmNlID0KKyAgICAgICAg
ICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50MTZfdD4oaW5wdXQsIHksIHosIGlu
cHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICB1aW50MTZfdCAqZGVz
dCA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dWludDE2X3Q+KG91
dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOworICAgICAgICAg
ICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSA9IHNvdXJjZVsyICogeCArIDBdOworICAgICAg
ICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IHNvdXJjZVsyICogeCArIDBdOworICAgICAgICAg
ICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IHNvdXJjZVsyICogeCArIDBdOworICAgICAgICAgICAg
ICAgIGRlc3RbNCAqIHggKyAzXSA9IHNvdXJjZVsyICogeCArIDFdOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorfQorCit2b2lkIExvYWRSR0I4VG9CR1I1NjUoc2l6ZV90IHdpZHRo
LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qg
KmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAg
ICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBv
dXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQ
aXRjaCkKK3sKKyAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCisgICAgewor
ICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgICAgICB7Cisg
ICAgICAgICAgICBjb25zdCB1aW50OF90ICpzb3VyY2UgPQorICAgICAgICAgICAgICAgIHByaXY6
Ok9mZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBp
bnB1dERlcHRoUGl0Y2gpOworICAgICAgICAgICAgdWludDE2X3QgKmRlc3QgPQorICAgICAgICAg
ICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQxNl90PihvdXRwdXQsIHksIHosIG91
dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90
IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB1
aW50OF90IHI4ID0gc291cmNlW3ggKiAzICsgMF07CisgICAgICAgICAgICAgICAgdWludDhfdCBn
OCA9IHNvdXJjZVt4ICogMyArIDFdOworICAgICAgICAgICAgICAgIHVpbnQ4X3QgYjggPSBzb3Vy
Y2VbeCAqIDMgKyAyXTsKKyAgICAgICAgICAgICAgICBhdXRvIHI1ICAgID0gc3RhdGljX2Nhc3Q8
dWludDE2X3Q+KHI4ID4+IDMpOworICAgICAgICAgICAgICAgIGF1dG8gZzYgICAgPSBzdGF0aWNf
Y2FzdDx1aW50MTZfdD4oZzggPj4gMik7CisgICAgICAgICAgICAgICAgYXV0byBiNSAgICA9IHN0
YXRpY19jYXN0PHVpbnQxNl90PihiOCA+PiAzKTsKKyAgICAgICAgICAgICAgICBkZXN0W3hdICAg
ID0gKHI1IDw8IDExKSB8IChnNiA8PCA1KSB8IGI1OworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorfQorCit2b2lkIExvYWRSR0I1NjVUb0JHUjU2NShzaXplX3Qgd2lkdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAq
aW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0
cHV0RGVwdGhQaXRjaCkKK3sKKyAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6Kysp
CisgICAgeworICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAg
ICAgICB7CisgICAgICAgICAgICBjb25zdCB1aW50MTZfdCAqc291cmNlID0KKyAgICAgICAgICAg
ICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50MTZfdD4oaW5wdXQsIHksIHosIGlucHV0
Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICB1aW50MTZfdCAqZGVzdCA9
CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dWludDE2X3Q+KG91dHB1
dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOworICAgICAgICAgICAg
Zm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIC8vIFRoZSBHTCB0eXBlIFJHQiBpcyBwYWNrZWQgd2l0aCB3aXRoIHJlZCBpbiB0
aGUgTVNCLCB3aGlsZSB0aGUgRDNEMTEgdHlwZSBCR1IKKyAgICAgICAgICAgICAgICAvLyBpcyBw
YWNrZWQgd2l0aCByZWQgaW4gdGhlIExTQgorICAgICAgICAgICAgICAgIGF1dG8gcmdiICAgID0g
c291cmNlW3hdOworICAgICAgICAgICAgICAgIHVpbnQxNl90IHI1ID0gZ2w6OmdldFNoaWZ0ZWRE
YXRhPDUsIDExPihyZ2IpOworICAgICAgICAgICAgICAgIHVpbnQxNl90IGc2ID0gZ2w6OmdldFNo
aWZ0ZWREYXRhPDYsIDU+KHJnYik7CisgICAgICAgICAgICAgICAgdWludDE2X3QgYjUgPSBnbDo6
Z2V0U2hpZnRlZERhdGE8NSwgMD4ocmdiKTsKKyAgICAgICAgICAgICAgICBkZXN0W3hdICAgICA9
IChyNSA8PCAxMSkgfCAoZzYgPDwgNSkgfCBiNTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KK30KKwordm9pZCBMb2FkUkdCOFRvQkdSWDgoc2l6ZV90IHdpZHRoLAorICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBk
ZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAq
b3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgZm9yIChz
aXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQorICAgIHsKKyAgICAgICAgZm9yIChzaXplX3Qg
eSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgdWlu
dDhfdCAqc291cmNlID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1
aW50OF90PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKKyAg
ICAgICAgICAgIHVpbnQ4X3QgKmRlc3QgPQorICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNldERh
dGFQb2ludGVyPHVpbnQ4X3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERl
cHRoUGl0Y2gpOworICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCsr
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSA9IHNvdXJj
ZVt4ICogMyArIDJdOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IHNvdXJjZVt4
ICogMyArIDFdOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IHNvdXJjZVt4ICog
MyArIDBdOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSA9IDB4RkY7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgTG9hZFJHOFRvQkdSWDgoc2l6ZV90
IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qg
KmlucHV0LAorICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAg
ICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93
UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQorewor
ICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKKyAgICB7CisgICAgICAgIGZv
ciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgICAgIHsKKyAgICAgICAgICAg
IGNvbnN0IHVpbnQ4X3QgKnNvdXJjZSA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0
YVBvaW50ZXI8dWludDhfdD4oaW5wdXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQ
aXRjaCk7CisgICAgICAgICAgICB1aW50OF90ICpkZXN0ID0KKyAgICAgICAgICAgICAgICBwcml2
OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50OF90PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNo
LCBvdXRwdXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwg
d2lkdGg7IHgrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsg
MF0gPSAweDAwOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IHNvdXJjZVt4ICog
MiArIDFdOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IHNvdXJjZVt4ICogMiAr
IDBdOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSA9IDB4RkY7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgTG9hZFI4VG9CR1JYOChzaXplX3Qgd2lk
dGgsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAg
ICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQs
CisgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90
ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQoreworICAgIGZvciAoc2l6
ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IHkg
PSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQ4
X3QgKnNvdXJjZSA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dWlu
dDhfdD4oaW5wdXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAg
ICAgICAgICB1aW50OF90ICpkZXN0ID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRh
UG9pbnRlcjx1aW50OF90PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0
aFBpdGNoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHgrKykK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSAweDAwOwor
ICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IDB4MDA7CisgICAgICAgICAgICAgICAg
ZGVzdFs0ICogeCArIDJdID0gc291cmNlW3hdOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHgg
KyAzXSA9IDB4RkY7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQg
TG9hZFI1RzZCNVRvQkdSQTgoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0
cHV0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQoreworICAgIGZvciAo
c2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90
IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IHVp
bnQxNl90ICpzb3VyY2UgPQorICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2ludGVy
PHVpbnQxNl90PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsK
KyAgICAgICAgICAgIHVpbnQ4X3QgKmRlc3QgPQorICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNl
dERhdGFQb2ludGVyPHVpbnQ4X3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1
dERlcHRoUGl0Y2gpOworICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsg
eCsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHVpbnQxNl90IHJnYiA9IHNvdXJj
ZVt4XTsKKyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPQorICAgICAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDx1aW50OF90PigoKHJnYiAmIDB4MDAxRikgPDwgMykgfCAoKHJnYiAm
IDB4MDAxRikgPj4gMikpOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9CisgICAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCgocmdiICYgMHgwN0UwKSA+PiAz
KSB8ICgocmdiICYgMHgwN0UwKSA+PiA5KSk7CisgICAgICAgICAgICAgICAgZGVzdFs0ICogeCAr
IDJdID0KKyAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDhfdD4oKChyZ2IgJiAw
eEY4MDApID4+IDgpIHwgKChyZ2IgJiAweEY4MDApID4+IDEzKSk7CisgICAgICAgICAgICAgICAg
ZGVzdFs0ICogeCArIDNdID0gMHhGRjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
K30KKwordm9pZCBMb2FkUjVHNkI1VG9SR0JBOChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBk
ZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICB1
aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQ
aXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7
CisgICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQorICAgIHsKKyAgICAgICAg
Zm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAgeworICAgICAgICAg
ICAgY29uc3QgdWludDE2X3QgKnNvdXJjZSA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0
RGF0YVBvaW50ZXI8dWludDE2X3Q+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERl
cHRoUGl0Y2gpOworICAgICAgICAgICAgdWludDhfdCAqZGVzdCA9CisgICAgICAgICAgICAgICAg
cHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dWludDhfdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQ
aXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsg
eCA8IHdpZHRoOyB4KyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdWludDE2X3Qg
cmdiID0gc291cmNlW3hdOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSA9CisgICAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCgocmdiICYgMHhGODAwKSA+PiA4
KSB8ICgocmdiICYgMHhGODAwKSA+PiAxMykpOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHgg
KyAxXSA9CisgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCgocmdiICYg
MHgwN0UwKSA+PiAzKSB8ICgocmdiICYgMHgwN0UwKSA+PiA5KSk7CisgICAgICAgICAgICAgICAg
ZGVzdFs0ICogeCArIDJdID0KKyAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDhf
dD4oKChyZ2IgJiAweDAwMUYpIDw8IDMpIHwgKChyZ2IgJiAweDAwMUYpID4+IDIpKTsKKyAgICAg
ICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10gPSAweEZGOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorfQorCit2b2lkIExvYWRSR0JBOFRvQkdSQTgoc2l6ZV90IHdpZHRoLAorICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0
LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAg
ICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRS
b3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkK
K3sKKyNpZiBkZWZpbmVkKEFOR0xFX1VTRV9TU0UpCisgICAgaWYgKGdsOjpzdXBwb3J0c1NTRTIo
KSkKKyAgICB7CisgICAgICAgIF9fbTEyOGkgYnJNYXNrID0gX21tX3NldDFfZXBpMzIoMHgwMGZm
MDBmZik7CisKKyAgICAgICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQorICAg
ICAgICB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90ICpzb3VyY2UgPQor
ICAgICAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50MzJfdD4oaW5w
dXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICAg
ICAgdWludDMyX3QgKmRlc3QgPSBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50MzJfdD4ob3V0
cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXREZXB0aFBpdGNoKTsK
KworICAgICAgICAgICAgICAgIHNpemVfdCB4ID0gMDsKKworICAgICAgICAgICAgICAgIC8vIE1h
a2Ugb3V0cHV0IHdyaXRlcyBhbGlnbmVkCisgICAgICAgICAgICAgICAgZm9yICg7ICgocmVpbnRl
cnByZXRfY2FzdDxpbnRwdHJfdD4oJmRlc3RbeF0pICYgMTUpICE9IDApICYmIHggPCB3aWR0aDsg
eCsrKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgcmdi
YSA9IHNvdXJjZVt4XTsKKyAgICAgICAgICAgICAgICAgICAgZGVzdFt4XSAgICAgICA9IChBTkdM
RV9ST1RMKHJnYmEsIDE2KSAmIDB4MDBmZjAwZmYpIHwgKHJnYmEgJiAweGZmMDBmZjAwKTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBmb3IgKDsgeCArIDMgPCB3aWR0aDsg
eCArPSA0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgX19tMTI4aSBz
b3VyY2VEYXRhID0KKyAgICAgICAgICAgICAgICAgICAgICAgIF9tbV9sb2FkdV9zaTEyOChyZWlu
dGVycHJldF9jYXN0PGNvbnN0IF9fbTEyOGkgKj4oJnNvdXJjZVt4XSkpOworICAgICAgICAgICAg
ICAgICAgICAvLyBNYXNrIG91dCBnIGFuZCBhLCB3aGljaCBkb24ndCBjaGFuZ2UKKyAgICAgICAg
ICAgICAgICAgICAgX19tMTI4aSBnYUNvbXBvbmVudHMgPSBfbW1fYW5kbm90X3NpMTI4KGJyTWFz
aywgc291cmNlRGF0YSk7CisgICAgICAgICAgICAgICAgICAgIC8vIE1hc2sgb3V0IGIgYW5kIHIK
KyAgICAgICAgICAgICAgICAgICAgX19tMTI4aSBickNvbXBvbmVudHMgPSBfbW1fYW5kX3NpMTI4
KHNvdXJjZURhdGEsIGJyTWFzayk7CisgICAgICAgICAgICAgICAgICAgIC8vIFN3YXAgYiBhbmQg
cgorICAgICAgICAgICAgICAgICAgICBfX20xMjhpIGJyU3dhcHBlZCA9IF9tbV9zaHVmZmxlaGlf
ZXBpMTYoCisgICAgICAgICAgICAgICAgICAgICAgICBfbW1fc2h1ZmZsZWxvX2VwaTE2KGJyQ29t
cG9uZW50cywgX01NX1NIVUZGTEUoMiwgMywgMCwgMSkpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgX01NX1NIVUZGTEUoMiwgMywgMCwgMSkpOworICAgICAgICAgICAgICAgICAgICBfX20xMjhp
IHJlc3VsdCA9IF9tbV9vcl9zaTEyOChnYUNvbXBvbmVudHMsIGJyU3dhcHBlZCk7CisgICAgICAg
ICAgICAgICAgICAgIF9tbV9zdG9yZV9zaTEyOChyZWludGVycHJldF9jYXN0PF9fbTEyOGkgKj4o
JmRlc3RbeF0pLCByZXN1bHQpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IC8vIFBlcmZvcm0gbGVmdG92ZXIgd3JpdGVzCisgICAgICAgICAgICAgICAgZm9yICg7IHggPCB3
aWR0aDsgeCsrKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdWludDMy
X3QgcmdiYSA9IHNvdXJjZVt4XTsKKyAgICAgICAgICAgICAgICAgICAgZGVzdFt4XSAgICAgICA9
IChBTkdMRV9ST1RMKHJnYmEsIDE2KSAmIDB4MDBmZjAwZmYpIHwgKHJnYmEgJiAweGZmMDBmZjAw
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRl
cHRoOyB6KyspCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsg
eSsrKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCB1aW50MzJfdCAqc291cmNlID0KKyAg
ICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50MzJfdD4oaW5wdXQsIHks
IHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICB1aW50MzJf
dCAqZGVzdCA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dWludDMy
X3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOworICAg
ICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHVpbnQzMl90IHJnYmEgPSBzb3VyY2VbeF07CisgICAgICAgICAg
ICAgICAgZGVzdFt4XSAgICAgICA9IChBTkdMRV9ST1RMKHJnYmEsIDE2KSAmIDB4MDBmZjAwZmYp
IHwgKHJnYmEgJiAweGZmMDBmZjAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
K30KKwordm9pZCBMb2FkUkdCQThUb0JHUkE0KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0
aCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qg
Km91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgZm9y
IChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQorICAgIHsKKyAgICAgICAgZm9yIChzaXpl
X3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3Qg
dWludDMyX3QgKnNvdXJjZSA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50
ZXI8dWludDMyX3Q+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gp
OworICAgICAgICAgICAgdWludDE2X3QgKmRlc3QgPQorICAgICAgICAgICAgICAgIHByaXY6Ok9m
ZnNldERhdGFQb2ludGVyPHVpbnQxNl90PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBv
dXRwdXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lk
dGg7IHgrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCByZ2JhOCA9
IHNvdXJjZVt4XTsKKyAgICAgICAgICAgICAgICBhdXRvIHI0ICAgICAgICA9IHN0YXRpY19jYXN0
PHVpbnQxNl90PigocmdiYTggJiAweDAwMDAwMEZGKSA+PiA0KTsKKyAgICAgICAgICAgICAgICBh
dXRvIGc0ICAgICAgICA9IHN0YXRpY19jYXN0PHVpbnQxNl90PigocmdiYTggJiAweDAwMDBGRjAw
KSA+PiAxMik7CisgICAgICAgICAgICAgICAgYXV0byBiNCAgICAgICAgPSBzdGF0aWNfY2FzdDx1
aW50MTZfdD4oKHJnYmE4ICYgMHgwMEZGMDAwMCkgPj4gMjApOworICAgICAgICAgICAgICAgIGF1
dG8gYTQgICAgICAgID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KChyZ2JhOCAmIDB4RkYwMDAwMDAp
ID4+IDI4KTsKKyAgICAgICAgICAgICAgICBkZXN0W3hdICAgICAgICA9IChhNCA8PCAxMikgfCAo
cjQgPDwgOCkgfCAoZzQgPDwgNCkgfCBiNDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KK30KKwordm9pZCBMb2FkUkdCQTRUb0FSR0I0KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBk
ZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4
X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gs
CisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAg
Zm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQorICAgIHsKKyAgICAgICAgZm9yIChz
aXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAgeworICAgICAgICAgICAgY29u
c3QgdWludDE2X3QgKnNvdXJjZSA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBv
aW50ZXI8dWludDE2X3Q+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0
Y2gpOworICAgICAgICAgICAgdWludDE2X3QgKmRlc3QgPQorICAgICAgICAgICAgICAgIHByaXY6
Ok9mZnNldERhdGFQb2ludGVyPHVpbnQxNl90PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNo
LCBvdXRwdXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwg
d2lkdGg7IHgrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZXN0W3hdID0gQU5H
TEVfUk9UUjE2KHNvdXJjZVt4XSwgNCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3ZvaWQgTG9hZFJHQkE0VG9CR1JBOChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVw
dGgsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICB1aW50OF90
ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAor
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQoreworICAgIGZv
ciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKKyAgICB7CisgICAgICAgIGZvciAoc2l6
ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0
IHVpbnQxNl90ICpzb3VyY2UgPQorICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2lu
dGVyPHVpbnQxNl90PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNo
KTsKKyAgICAgICAgICAgIHVpbnQ4X3QgKmRlc3QgPQorICAgICAgICAgICAgICAgIHByaXY6Ok9m
ZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91
dHB1dERlcHRoUGl0Y2gpOworICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0
aDsgeCsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHVpbnQxNl90IHJnYmEgPSBz
b3VyY2VbeF07CisgICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0KKyAgICAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDhfdD4oKChyZ2JhICYgMHgwMEYwKSA8PCAwKSB8ICgo
cmdiYSAmIDB4MDBGMCkgPj4gNCkpOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9
CisgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCgocmdiYSAmIDB4MEYw
MCkgPj4gNCkgfCAoKHJnYmEgJiAweDBGMDApID4+IDgpKTsKKyAgICAgICAgICAgICAgICBkZXN0
WzQgKiB4ICsgMl0gPQorICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50OF90Pigo
KHJnYmEgJiAweEYwMDApID4+IDgpIHwgKChyZ2JhICYgMHhGMDAwKSA+PiAxMikpOworICAgICAg
ICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSA9CisgICAgICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KCgocmdiYSAmIDB4MDAwRikgPDwgNCkgfCAoKHJnYmEgJiAweDAwMEYpID4+
IDApKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBMb2FkUkdC
QTRUb1JHQkE4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVp
Z2h0LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0
aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgZm9yIChzaXplX3QgeiA9IDA7IHog
PCBkZXB0aDsgeisrKQorICAgIHsKKyAgICAgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWln
aHQ7IHkrKykKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgdWludDE2X3QgKnNvdXJjZSA9
CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dWludDE2X3Q+KGlucHV0
LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOworICAgICAgICAgICAgdWlu
dDhfdCAqZGVzdCA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dWlu
dDhfdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7Cisg
ICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgdWludDE2X3QgcmdiYSA9IHNvdXJjZVt4XTsKKyAgICAgICAg
ICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPQorICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDx1aW50OF90PigoKHJnYmEgJiAweEYwMDApID4+IDgpIHwgKChyZ2JhICYgMHhGMDAwKSA+PiAx
MikpOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9CisgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCgocmdiYSAmIDB4MEYwMCkgPj4gNCkgfCAoKHJnYmEg
JiAweDBGMDApID4+IDgpKTsKKyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMl0gPQorICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50OF90PigoKHJnYmEgJiAweDAwRjApIDw8
IDApIHwgKChyZ2JhICYgMHgwMEYwKSA+PiA0KSk7CisgICAgICAgICAgICAgICAgZGVzdFs0ICog
eCArIDNdID0KKyAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDhfdD4oKChyZ2Jh
ICYgMHgwMDBGKSA8PCA0KSB8ICgocmdiYSAmIDB4MDAwRikgPj4gMCkpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIExvYWRCR1JBNFRvQkdSQTgoc2l6ZV90IHdp
ZHRoLAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4
X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAor
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAg
ICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVw
dGhQaXRjaCkKK3sKKyAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCisgICAg
eworICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgICAgICB7
CisgICAgICAgICAgICBjb25zdCB1aW50MTZfdCAqc291cmNlID0KKyAgICAgICAgICAgICAgICBw
cml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50MTZfdD4oaW5wdXQsIHksIHosIGlucHV0Um93UGl0
Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICB1aW50OF90ICpkZXN0ID0KKyAgICAg
ICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50OF90PihvdXRwdXQsIHksIHos
IG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIGZvciAoc2l6
ZV90IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICB1aW50MTZfdCBiZ3JhID0gc291cmNlW3hdOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHgg
KyAwXSA9CisgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCgoYmdyYSAm
IDB4RjAwMCkgPj4gOCkgfCAoKGJncmEgJiAweEYwMDApID4+IDEyKSk7CisgICAgICAgICAgICAg
ICAgZGVzdFs0ICogeCArIDFdID0KKyAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oKChiZ3JhICYgMHgwRjAwKSA+PiA0KSB8ICgoYmdyYSAmIDB4MEYwMCkgPj4gOCkpOwor
ICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9CisgICAgICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KCgoYmdyYSAmIDB4MDBGMCkgPDwgMCkgfCAoKGJncmEgJiAweDAw
RjApID4+IDQpKTsKKyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10gPQorICAgICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50OF90PigoKGJncmEgJiAweDAwMEYpIDw8IDQpIHwg
KChiZ3JhICYgMHgwMDBGKSA+PiAwKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3ZvaWQgTG9hZFJHQkE4VG9CR1I1QTEoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
ZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAg
dWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93
UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQor
eworICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKKyAgICB7CisgICAgICAg
IGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGNvbnN0IHVpbnQzMl90ICpzb3VyY2UgPQorICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNl
dERhdGFQb2ludGVyPHVpbnQzMl90PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXRE
ZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIHVpbnQxNl90ICpkZXN0ID0KKyAgICAgICAgICAgICAg
ICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50MTZfdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRS
b3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0g
MDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdWludDMy
X3QgcmdiYTggPSBzb3VyY2VbeF07CisgICAgICAgICAgICAgICAgYXV0byByNSAgICAgICAgPSBz
dGF0aWNfY2FzdDx1aW50MTZfdD4oKHJnYmE4ICYgMHgwMDAwMDBGRikgPj4gMyk7CisgICAgICAg
ICAgICAgICAgYXV0byBnNSAgICAgICAgPSBzdGF0aWNfY2FzdDx1aW50MTZfdD4oKHJnYmE4ICYg
MHgwMDAwRkYwMCkgPj4gMTEpOworICAgICAgICAgICAgICAgIGF1dG8gYjUgICAgICAgID0gc3Rh
dGljX2Nhc3Q8dWludDE2X3Q+KChyZ2JhOCAmIDB4MDBGRjAwMDApID4+IDE5KTsKKyAgICAgICAg
ICAgICAgICBhdXRvIGExICAgICAgICA9IHN0YXRpY19jYXN0PHVpbnQxNl90PigocmdiYTggJiAw
eEZGMDAwMDAwKSA+PiAzMSk7CisgICAgICAgICAgICAgICAgZGVzdFt4XSAgICAgICAgPSAoYTEg
PDwgMTUpIHwgKHI1IDw8IDEwKSB8IChnNSA8PCA1KSB8IGI1OworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorfQorCit2b2lkIExvYWRSR0IxMEEyVG9CR1I1QTEoc2l6ZV90IHdpZHRo
LAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJv
d1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gs
CisgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAgICBmb3IgKHNpemVfdCB6ID0gMDsg
eiA8IGRlcHRoOyB6KyspCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhl
aWdodDsgeSsrKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBSMTBHMTBCMTBBMiAqc291
cmNlID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjxSMTBHMTBCMTBB
Mj4oaW5wdXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAgICAg
ICAgICB1aW50MTZfdCAqZGVzdCA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBv
aW50ZXI8dWludDE2X3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRo
UGl0Y2gpOworICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFIxMEcxMEIxMEEyIHJnYjEwYTIgPSBzb3Vy
Y2VbeF07CisKKyAgICAgICAgICAgICAgICB1aW50MTZfdCByNSA9IHN0YXRpY19jYXN0PHVpbnQx
Nl90PihyZ2IxMGEyLlIgPj4gNXUpOworICAgICAgICAgICAgICAgIHVpbnQxNl90IGc1ID0gc3Rh
dGljX2Nhc3Q8dWludDE2X3Q+KHJnYjEwYTIuRyA+PiA1dSk7CisgICAgICAgICAgICAgICAgdWlu
dDE2X3QgYjUgPSBzdGF0aWNfY2FzdDx1aW50MTZfdD4ocmdiMTBhMi5CID4+IDV1KTsKKyAgICAg
ICAgICAgICAgICB1aW50MTZfdCBhMSA9IHN0YXRpY19jYXN0PHVpbnQxNl90PihyZ2IxMGEyLkEg
Pj4gMXUpOworCisgICAgICAgICAgICAgICAgZGVzdFt4XSA9IChhMSA8PCAxNSkgfCAocjUgPDwg
MTApIHwgKGc1IDw8IDUpIHwgYjU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgTG9hZFJHQjVBMVRvQTFSR0I1KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
ZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRw
dXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBp
dGNoKQoreworICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKKyAgICB7Cisg
ICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGNvbnN0IHVpbnQxNl90ICpzb3VyY2UgPQorICAgICAgICAgICAgICAgIHByaXY6
Ok9mZnNldERhdGFQb2ludGVyPHVpbnQxNl90PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwg
aW5wdXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIHVpbnQxNl90ICpkZXN0ID0KKyAgICAgICAg
ICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50MTZfdD4ob3V0cHV0LCB5LCB6LCBv
dXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICBmb3IgKHNpemVf
dCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ZGVzdFt4XSA9IEFOR0xFX1JPVFIxNihzb3VyY2VbeF0sIDEpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorfQorCit2b2lkIExvYWRSR0I1QTFUb0JHUkE4KHNpemVfdCB3aWR0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90
ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0
RGVwdGhQaXRjaCkKK3sKKyAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCisg
ICAgeworICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgICAg
ICB7CisgICAgICAgICAgICBjb25zdCB1aW50MTZfdCAqc291cmNlID0KKyAgICAgICAgICAgICAg
ICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50MTZfdD4oaW5wdXQsIHksIHosIGlucHV0Um93
UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICB1aW50OF90ICpkZXN0ID0KKyAg
ICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50OF90PihvdXRwdXQsIHks
IHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIGZvciAo
c2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICB1aW50MTZfdCByZ2JhID0gc291cmNlW3hdOworICAgICAgICAgICAgICAgIGRlc3RbNCAq
IHggKyAwXSA9CisgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCgocmdi
YSAmIDB4MDAzRSkgPDwgMikgfCAoKHJnYmEgJiAweDAwM0UpID4+IDMpKTsKKyAgICAgICAgICAg
ICAgICBkZXN0WzQgKiB4ICsgMV0gPQorICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1
aW50OF90PigoKHJnYmEgJiAweDA3QzApID4+IDMpIHwgKChyZ2JhICYgMHgwN0MwKSA+PiA4KSk7
CisgICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDJdID0KKyAgICAgICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8dWludDhfdD4oKChyZ2JhICYgMHhGODAwKSA+PiA4KSB8ICgocmdiYSAmIDB4
RjgwMCkgPj4gMTMpKTsKKyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10gPSBzdGF0aWNf
Y2FzdDx1aW50OF90PigocmdiYSAmIDB4MDAwMSkgPyAweEZGIDogMCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgTG9hZFJHQjVBMVRvUkdCQTgoc2l6ZV90IHdp
ZHRoLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVp
bnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRj
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBv
dXRwdXREZXB0aFBpdGNoKQoreworICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHor
KykKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQxNl90ICpzb3VyY2UgPQorICAgICAgICAg
ICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQxNl90PihpbnB1dCwgeSwgeiwgaW5w
dXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIHVpbnQ4X3QgKmRlc3Qg
PQorICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+KG91dHB1
dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOworICAgICAgICAgICAg
Zm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHVpbnQxNl90IHJnYmEgPSBzb3VyY2VbeF07CisgICAgICAgICAgICAgICAgZGVz
dFs0ICogeCArIDBdID0KKyAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDhfdD4o
KChyZ2JhICYgMHhGODAwKSA+PiA4KSB8ICgocmdiYSAmIDB4RjgwMCkgPj4gMTMpKTsKKyAgICAg
ICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPQorICAgICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDx1aW50OF90PigoKHJnYmEgJiAweDA3QzApID4+IDMpIHwgKChyZ2JhICYgMHgwN0MwKSA+
PiA4KSk7CisgICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDJdID0KKyAgICAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8dWludDhfdD4oKChyZ2JhICYgMHgwMDNFKSA8PCAyKSB8ICgocmdi
YSAmIDB4MDAzRSkgPj4gMykpOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSA9IHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KChyZ2JhICYgMHgwMDAxKSA/IDB4RkYgOiAwKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBMb2FkQkdSNUExVG9CR1JBOChzaXpl
X3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJv
d1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAor
ICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0
aDsgeisrKQorICAgIHsKKyAgICAgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkr
KykKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgdWludDE2X3QgKnNvdXJjZSA9CisgICAg
ICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dWludDE2X3Q+KGlucHV0LCB5LCB6
LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOworICAgICAgICAgICAgdWludDhfdCAq
ZGVzdCA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dWludDhfdD4o
b3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7CisgICAgICAg
ICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgdWludDE2X3QgYmdyYSA9IHNvdXJjZVt4XTsKKyAgICAgICAgICAgICAg
ICBkZXN0WzQgKiB4ICsgMF0gPQorICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50
OF90PigoKGJncmEgJiAweEY4MDApID4+IDgpIHwgKChiZ3JhICYgMHhGODAwKSA+PiAxMykpOwor
ICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9CisgICAgICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KCgoYmdyYSAmIDB4MDdDMCkgPj4gMykgfCAoKGJncmEgJiAweDA3
QzApID4+IDgpKTsKKyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMl0gPQorICAgICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50OF90PigoKGJncmEgJiAweDAwM0UpIDw8IDIpIHwg
KChiZ3JhICYgMHgwMDNFKSA+PiAzKSk7CisgICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDNd
ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oKGJncmEgJiAweDAwMDEpID8gMHhGRiA6IDApOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIExvYWRSR0IxMEEyVG9SR0JB
OChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERl
cHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAgICBmb3IgKHNpemVfdCB6
ID0gMDsgeiA8IGRlcHRoOyB6KyspCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsg
eSA8IGhlaWdodDsgeSsrKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCB1aW50MzJfdCAq
c291cmNlID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50MzJf
dD4oaW5wdXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAgICAg
ICAgICB1aW50OF90ICpkZXN0ID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9p
bnRlcjx1aW50OF90PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBp
dGNoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCByZ2JhICAgPSBzb3VyY2VbeF07
CisgICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4o
KHJnYmEgJiAweDAwMDAwM0ZGKSA+PiAyKTsKKyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsg
MV0gPSBzdGF0aWNfY2FzdDx1aW50OF90PigocmdiYSAmIDB4MDAwRkZDMDApID4+IDEyKTsKKyAg
ICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMl0gPSBzdGF0aWNfY2FzdDx1aW50OF90Pigocmdi
YSAmIDB4M0ZGMDAwMDApID4+IDIyKTsKKyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10g
PSBzdGF0aWNfY2FzdDx1aW50OF90PigoKHJnYmEgJiAweEMwMDAwMDAwKSA+PiAzMCkgKiAweDU1
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBMb2FkUkdCMTZG
VG9SR0I5RTUoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhl
aWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
aW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0
LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgZm9yIChz
aXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQorICAgIHsKKyAgICAgICAgZm9yIChzaXplX3Qg
eSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgdWlu
dDE2X3QgKnNvdXJjZSA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8
dWludDE2X3Q+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOwor
ICAgICAgICAgICAgdWludDMyX3QgKmRlc3QgPQorICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNl
dERhdGFQb2ludGVyPHVpbnQzMl90PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRw
dXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7
IHgrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZXN0W3hdID0gZ2w6OmNvbnZl
cnRSR0JGbG9hdHNUbzk5OUU1KGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNvdXJjZVt4ICogMyArIDBd
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNvdXJjZVt4ICogMyArIDFdKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpmbG9hdDE2VG9GbG9h
dDMyKHNvdXJjZVt4ICogMyArIDJdKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3ZvaWQgTG9hZFJHQjMyRlRvUkdCOUU1KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBv
dXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0
aFBpdGNoKQoreworICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKKyAgICB7
CisgICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgICAgIHsK
KyAgICAgICAgICAgIGNvbnN0IGZsb2F0ICpzb3VyY2UgPQorICAgICAgICAgICAgICAgIHByaXY6
Ok9mZnNldERhdGFQb2ludGVyPGZsb2F0PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5w
dXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIHVpbnQzMl90ICpkZXN0ID0KKyAgICAgICAgICAg
ICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50MzJfdD4ob3V0cHV0LCB5LCB6LCBvdXRw
dXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCB4
ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGVz
dFt4XSA9IGdsOjpjb252ZXJ0UkdCRmxvYXRzVG85OTlFNShzb3VyY2VbeCAqIDMgKyAwXSwgc291
cmNlW3ggKiAzICsgMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzb3VyY2VbeCAqIDMgKyAyXSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9Cit9CisKK3ZvaWQgTG9hZFJHQjE2RlRvUkcxMUIxMEYoc2l6ZV90IHdpZHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRS
b3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRj
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQoreworICAgIGZvciAoc2l6ZV90IHog
PSAwOyB6IDwgZGVwdGg7IHorKykKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5
IDwgaGVpZ2h0OyB5KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQxNl90ICpz
b3VyY2UgPQorICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQxNl90
PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKKyAgICAgICAg
ICAgIHVpbnQzMl90ICpkZXN0ID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9p
bnRlcjx1aW50MzJfdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQ
aXRjaCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGVzdFt4XSA9IChnbDo6ZmxvYXQzMlRvRmxv
YXQxMShnbDo6ZmxvYXQxNlRvRmxvYXQzMihzb3VyY2VbeCAqIDMgKyAwXSkpIDw8IDApIHwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGdsOjpmbG9hdDMyVG9GbG9hdDExKGdsOjpmbG9hdDE2
VG9GbG9hdDMyKHNvdXJjZVt4ICogMyArIDFdKSkgPDwgMTEpIHwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGdsOjpmbG9hdDMyVG9GbG9hdDEwKGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNvdXJj
ZVt4ICogMyArIDJdKSkgPDwgMjIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
fQorCit2b2lkIExvYWRSR0IzMkZUb1JHMTFCMTBGKHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpp
bnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRl
cHRoOyB6KyspCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsg
eSsrKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBmbG9hdCAqc291cmNlID0KKyAgICAg
ICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjxmbG9hdD4oaW5wdXQsIHksIHosIGlu
cHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICB1aW50MzJfdCAqZGVz
dCA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dWludDMyX3Q+KG91
dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOworICAgICAgICAg
ICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGRlc3RbeF0gPSAoZ2w6OmZsb2F0MzJUb0Zsb2F0MTEoc291cmNlW3ggKiAz
ICsgMF0pIDw8IDApIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGdsOjpmbG9hdDMyVG9G
bG9hdDExKHNvdXJjZVt4ICogMyArIDFdKSA8PCAxMSkgfAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAoZ2w6OmZsb2F0MzJUb0Zsb2F0MTAoc291cmNlW3ggKiAzICsgMl0pIDw8IDIyKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBMb2FkRzhSMjRUb1IyNEc4
KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRS
b3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAor
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsg
eisrKQorICAgIHsKKyAgICAgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykK
KyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgdWludDMyX3QgKnNvdXJjZSA9CisgICAgICAg
ICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dWludDMyX3Q+KGlucHV0LCB5LCB6LCBp
bnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOworICAgICAgICAgICAgdWludDMyX3QgKmRl
c3QgPQorICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQzMl90Pihv
dXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKKyAgICAgICAg
ICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICB1aW50MzJfdCBkID0gc291cmNlW3hdID4+IDg7CisgICAgICAgICAgICAg
ICAgdWludDhfdCBzICA9IHNvdXJjZVt4XSAmIDB4RkY7CisgICAgICAgICAgICAgICAgZGVzdFt4
XSAgICA9IGQgfCAocyA8PCAyNCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgTG9hZEQzMkZUb0QzMkYoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0
RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAg
ICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQoreworICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwg
ZGVwdGg7IHorKykKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0
OyB5KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGZsb2F0ICpzb3VyY2UgPQorICAg
ICAgICAgICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2ludGVyPGZsb2F0PihpbnB1dCwgeSwgeiwg
aW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIGZsb2F0ICpkZXN0
ID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjxmbG9hdD4ob3V0cHV0
LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICBm
b3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgZGVzdFt4XSA9IGdsOjpjbGFtcDAxKHNvdXJjZVt4XSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgTG9hZEQzMkZTOFgyNFRvRDMyRlM4WDI0KHNp
emVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBvdXRwdXREZXB0aFBpdGNoKQoreworICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVw
dGg7IHorKykKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5
KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGZsb2F0ICpzb3VyY2VEZXB0aCA9Cisg
ICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8ZmxvYXQ+KGlucHV0LCB5LCB6
LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOworICAgICAgICAgICAgY29uc3QgdWlu
dDMyX3QgKnNvdXJjZVN0ZW5jaWwgPQorICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNldERhdGFQ
b2ludGVyPHVpbnQzMl90PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBp
dGNoKSArIDE7CisgICAgICAgICAgICBmbG9hdCAqZGVzdERlcHRoID0KKyAgICAgICAgICAgICAg
ICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjxmbG9hdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQ
aXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICB1aW50MzJfdCAqZGVzdFN0ZW5j
aWwgPQorICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQzMl90Pihv
dXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKSArCisgICAgICAg
ICAgICAgICAgMTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHgr
KykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZXN0RGVwdGhbeCAqIDJdICAgPSBn
bDo6Y2xhbXAwMShzb3VyY2VEZXB0aFt4ICogMl0pOworICAgICAgICAgICAgICAgIGRlc3RTdGVu
Y2lsW3ggKiAyXSA9IHNvdXJjZVN0ZW5jaWxbeCAqIDJdICYgMHhGRjAwMDAwMDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBMb2FkUkdCMzJGVG9SR0JBMTZGKHNp
emVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRE
ZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgZm9yIChzaXpl
X3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQorICAgIHsKKyAgICAgICAgZm9yIChzaXplX3QgeSA9
IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgZmxvYXQg
KnNvdXJjZSA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8ZmxvYXQ+
KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOworICAgICAgICAg
ICAgdWludDE2X3QgKmRlc3QgPQorICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2lu
dGVyPHVpbnQxNl90PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBp
dGNoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZXN0W3ggKiA0ICsgMF0gPSBnbDo6ZmxvYXQz
MlRvRmxvYXQxNihzb3VyY2VbeCAqIDMgKyAwXSk7CisgICAgICAgICAgICAgICAgZGVzdFt4ICog
NCArIDFdID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTYoc291cmNlW3ggKiAzICsgMV0pOworICAgICAg
ICAgICAgICAgIGRlc3RbeCAqIDQgKyAyXSA9IGdsOjpmbG9hdDMyVG9GbG9hdDE2KHNvdXJjZVt4
ICogMyArIDJdKTsKKyAgICAgICAgICAgICAgICBkZXN0W3ggKiA0ICsgM10gPSBnbDo6RmxvYXQx
Nk9uZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBMb2FkUjMy
VG9SMTYoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAg
ICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IHVp
bnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisg
ICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAg
ICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1Bp
dGNoLAorICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAg
Zm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQorICAgIHsKKyAgICAgICAgZm9yIChz
aXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAgeworICAgICAgICAgICAgY29u
c3QgdWludDMyX3QgKnNvdXJjZSA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBv
aW50ZXI8dWludDMyX3Q+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0
Y2gpOworICAgICAgICAgICAgdWludDE2X3QgKmRlc3QgPQorICAgICAgICAgICAgICAgIHByaXY6
Ok9mZnNldERhdGFQb2ludGVyPHVpbnQxNl90PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNo
LCBvdXRwdXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwg
d2lkdGg7IHgrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZXN0W3hdID0gc291
cmNlW3hdID4+IDE2OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lk
IExvYWRSMzJUb1IyNEc4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAg
ICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0
Y2gsCisgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
b3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6
KyspCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQor
ICAgICAgICB7CisgICAgICAgICAgICBjb25zdCB1aW50MzJfdCAqc291cmNlID0KKyAgICAgICAg
ICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50MzJfdD4oaW5wdXQsIHksIHosIGlu
cHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICB1aW50MzJfdCAqZGVz
dCA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dWludDMyX3Q+KG91
dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOworCisgICAgICAg
ICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgZGVzdFt4XSA9IHNvdXJjZVt4XSA+PiA4OworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UgYW5nbGUKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9pbWFnZV91dGlsL2xvYWRpbWFnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9pbWFnZV91dGlsL2xvYWRpbWFnZS5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9pbWFnZV91dGlsL2xv
YWRpbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjE4IEBACisvLworLy8gQ29weXJp
Z2h0IChjKSAyMDEzLTIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisvLworCisvLyBsb2FkaW1hZ2UuaDogRGVmaW5lcyBpbWFnZSBsb2FkaW5nIGZ1bmN0aW9ucwor
CisjaWZuZGVmIElNQUdFVVRJTF9MT0FESU1BR0VfSF8KKyNkZWZpbmUgSU1BR0VVVElMX0xPQURJ
TUFHRV9IXworCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKK25h
bWVzcGFjZSBhbmdsZQoreworCit2b2lkIExvYWRBOFRvUkdCQTgoc2l6ZV90IHdpZHRoLAorICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGRlcHRoLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgIHNp
emVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0
LAorICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAg
ICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7CisKK3ZvaWQgTG9hZEE4VG9CR1JBOChz
aXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAg
ICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhf
dCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAg
ICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1Bp
dGNoLAorICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKKwordm9p
ZCBMb2FkQTMyRlRvUkdCQTMyRihzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpv
dXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOworCit2b2lkIExv
YWRBMTZGVG9SR0JBMTZGKHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7CisKK3ZvaWQgTG9hZEw4
VG9SR0JBOChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwK
KyAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgY29u
c3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0
Y2gsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAg
ICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91
dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNo
KTsKKwordm9pZCBMb2FkTDhUb0JHUkE4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAg
ICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAg
ICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICBz
aXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0
aFBpdGNoLAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAg
ICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90
IG91dHB1dERlcHRoUGl0Y2gpOworCit2b2lkIExvYWRMMzJGVG9SR0JBMzJGKHNpemVfdCB3aWR0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50
OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gs
CisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0
cHV0RGVwdGhQaXRjaCk7CisKK3ZvaWQgTG9hZEwxNkZUb1JHQkExNkYoc2l6ZV90IHdpZHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qg
KmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRE
ZXB0aFBpdGNoKTsKKwordm9pZCBMb2FkTEE4VG9SR0JBOChzaXplX3Qgd2lkdGgsCisgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBk
ZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICBz
aXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRw
dXQsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOworCit2b2lkIExvYWRMQThUb0JH
UkE4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICBjb25z
dCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0
Y2gsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAg
ICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQ
aXRjaCk7CisKK3ZvaWQgTG9hZExBMzJGVG9SR0JBMzJGKHNpemVfdCB3aWR0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRE
ZXB0aFBpdGNoKTsKKwordm9pZCBMb2FkTEExNkZUb1JHQkExNkYoc2l6ZV90IHdpZHRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qg
KmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91
dHB1dERlcHRoUGl0Y2gpOworCit2b2lkIExvYWRSR0I4VG9CR1I1NjUoc2l6ZV90IHdpZHRoLAor
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlu
cHV0LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAg
ICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRw
dXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRj
aCk7CisKK3ZvaWQgTG9hZFJHQjU2NVRvQkdSNTY1KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBv
dXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0
aFBpdGNoKTsKKwordm9pZCBMb2FkUkdCOFRvQkdSWDgoc2l6ZV90IHdpZHRoLAorICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBk
ZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAq
b3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOworCit2b2lkIExvYWRS
RzhUb0JHUlg4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdo
dCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAg
ICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0
Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0
RGVwdGhQaXRjaCk7CisKK3ZvaWQgTG9hZFI4VG9CR1JYOChzaXplX3Qgd2lkdGgsCisgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVw
dGgsCisgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKKwordm9pZCBMb2FkUjVHNkI1VG9CR1JBOChz
aXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1
dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNo
LAorICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOworCit2b2lkIExvYWRSNUc2QjVUb1JHQkE4KHNpemVf
dCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93
UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgb3V0cHV0RGVwdGhQaXRjaCk7CisKK3ZvaWQgTG9hZFJHQkE4VG9CR1JBOChzaXplX3Qgd2lk
dGgsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhf
dCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAg
ICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0
aFBpdGNoKTsKKwordm9pZCBMb2FkUkdCQThUb0JHUkE0KHNpemVfdCB3aWR0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgIHVp
bnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0
Y2gsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOworCit2
b2lkIExvYWRSR0JBNFRvQVJHQjQoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0
LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7CisKK3ZvaWQgTG9hZFJHQkE0
VG9CR1JBOChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdo
dCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQ
aXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKKwordm9pZCBMb2FkUkdCQTRUb1JHQkE4KHNpemVf
dCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRj
aCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1
dERlcHRoUGl0Y2gpOworCit2b2lkIExvYWRCR1JBNFRvQkdSQTgoc2l6ZV90IHdpZHRoLAorICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0
LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAg
ICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRS
b3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7
CisKK3ZvaWQgTG9hZFJHQkE4VG9CR1I1QTEoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVw
dGgsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0
Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKKwor
dm9pZCBMb2FkUkdCMTBBMlRvQkdSNUExKHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBk
ZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
b3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERl
cHRoUGl0Y2gpOworCit2b2lkIExvYWRSR0I1QTFUb0ExUkdCNShzaXplX3Qgd2lkdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAq
aW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0
cHV0RGVwdGhQaXRjaCk7CisKK3ZvaWQgTG9hZFJHQjVBMVRvQkdSQTgoc2l6ZV90IHdpZHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qg
KmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRE
ZXB0aFBpdGNoKTsKKwordm9pZCBMb2FkUkdCNUExVG9SR0JBOChzaXplX3Qgd2lkdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5w
dXQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAg
ICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBv
dXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRo
UGl0Y2gpOworCit2b2lkIExvYWRCR1I1QTFUb0JHUkE4KHNpemVfdCB3aWR0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1
dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRj
aCk7CisKK3ZvaWQgTG9hZFJHQjEwQTJUb1JHQkE4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBv
dXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0
aFBpdGNoKTsKKwordm9pZCBMb2FkUkdCMTZGVG9SR0I5RTUoc2l6ZV90IHdpZHRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlu
cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1
dERlcHRoUGl0Y2gpOworCit2b2lkIExvYWRSR0IzMkZUb1JHQjlFNShzaXplX3Qgd2lkdGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhf
dCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
b3V0cHV0RGVwdGhQaXRjaCk7CisKK3ZvaWQgTG9hZFJHQjE2RlRvUkcxMUIxMEYoc2l6ZV90IHdp
ZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
aW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVw
dGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKKwordm9pZCBMb2FkUkdC
MzJGVG9SRzExQjEwRihzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRw
dXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRo
UGl0Y2gpOworCit2b2lkIExvYWRHOFIyNFRvUjI0Rzgoc2l6ZV90IHdpZHRoLAorICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgdWlu
dDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRj
aCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7CisKK3Zv
aWQgTG9hZEQzMkZUb0QzMkYoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQ
aXRjaCwKKyAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAg
ICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBvdXRwdXREZXB0aFBpdGNoKTsKKwordm9pZCBMb2FkRDMyRlM4WDI0VG9EMzJGUzhYMjQoc2l6
ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IG91dHB1dERlcHRoUGl0Y2gpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgdHlwZSwgc2l6ZV90
IGNvbXBvbmVudENvdW50PgoraW5saW5lIHZvaWQgTG9hZFRvTmF0aXZlKHNpemVfdCB3aWR0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQ
aXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgdHlwZSwg
dWludDMyX3QgZm91cnRoQ29tcG9uZW50Qml0cz4KK2lubGluZSB2b2lkIExvYWRUb05hdGl2ZTNU
bzQoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVp
Z2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBvdXRwdXREZXB0aFBpdGNoKTsKKwordGVtcGxhdGUgPHNpemVfdCBjb21wb25lbnRDb3VudD4K
K2lubGluZSB2b2lkIExvYWQzMkZUbzE2RihzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
ZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRE
ZXB0aFBpdGNoKTsKKwordm9pZCBMb2FkUkdCMzJGVG9SR0JBMTZGKHNpemVfdCB3aWR0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50
OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRj
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOworCit0ZW1wbGF0ZSA8c2l6ZV90IGJsb2NrV2lkdGgs
IHNpemVfdCBibG9ja0hlaWdodCwgc2l6ZV90IGJsb2NrU2l6ZT4KK2lubGluZSB2b2lkIExvYWRD
b21wcmVzc2VkVG9OYXRpdmUoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKKwordm9pZCBMb2FkUjMyVG9SMTYoc2l6ZV90IHdp
ZHRoLAorICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAg
IHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAor
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAg
ICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0
cHV0LAorICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAg
ICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
dHlwZSwKKyAgICAgICAgICB1aW50MzJfdCBmaXJzdEJpdHMsCisgICAgICAgICAgdWludDMyX3Qg
c2Vjb25kQml0cywKKyAgICAgICAgICB1aW50MzJfdCB0aGlyZEJpdHMsCisgICAgICAgICAgdWlu
dDMyX3QgZm91cnRoQml0cz4KK2lubGluZSB2b2lkIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YShz
aXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVw
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQ
aXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0
RGVwdGhQaXRjaCk7CisKK3ZvaWQgTG9hZFIzMlRvUjI0Rzgoc2l6ZV90IHdpZHRoLAorICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
ZGVwdGgsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0
cHV0LAorICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKKwordm9pZCBMb2FkRVRDMVJH
QjhUb1JHQkE4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
aGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qg
Km91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gs
CisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOworCit2
b2lkIExvYWRFVEMxUkdCOFRvQkMxKHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qg
Km91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAor
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7CisKK3ZvaWQg
TG9hZEVBQ1IxMVRvUjgoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
aGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
aW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRj
aCwKKyAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAg
ICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBv
dXRwdXREZXB0aFBpdGNoKTsKKwordm9pZCBMb2FkRUFDUjExU1RvUjgoc2l6ZV90IHdpZHRoLAor
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0
LAorICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAg
dWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1Bp
dGNoLAorICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOworCit2
b2lkIExvYWRFQUNSRzExVG9SRzgoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0
LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7CisKK3ZvaWQgTG9hZEVBQ1JH
MTFTVG9SRzgoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVp
Z2h0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0
RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKKwordm9pZCBMb2FkRVRDMlJHQjhU
b1JHQkE4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVp
Z2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91
dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOworCit2b2lk
IExvYWRFVEMyU1JHQjhUb1JHQkE4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRl
cHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0
cHV0RGVwdGhQaXRjaCk7CisKK3ZvaWQgTG9hZEVUQzJSR0I4QTFUb1JHQkE4KHNpemVfdCB3aWR0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0
RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKKwordm9pZCBM
b2FkRVRDMlNSR0I4QTFUb1JHQkE4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOworCit2b2lkIExvYWRFVEMyUkdCQThUb1JH
QkE4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdo
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qg
Km91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNo
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7CisK
K3ZvaWQgTG9hZEVUQzJTUkdCQThUb1NSR0JBOChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhf
dCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0
Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKKworfSAgLy8gbmFtZXNwYWNl
IGFuZ2xlCisKKyNpbmNsdWRlICJsb2FkaW1hZ2UuaW5sIgorCisjZW5kaWYgIC8vIElNQUdFVVRJ
TF9MT0FESU1BR0VfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9pbWFnZV91
dGlsL2xvYWRpbWFnZS5pbmwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2ltYWdlX3V0aWwvbG9hZGltYWdlLmlubAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvaW1hZ2VfdXRpbC9sb2FkaW1hZ2UuaW5sCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTYzIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE0LTIwMTUgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAiY29tbW9u
L21hdGh1dGlsLmgiCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworbmFtZXNwYWNlIGFuZ2xlCit7
CisKK25hbWVzcGFjZSBwcml2Cit7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIFQg
Kk9mZnNldERhdGFQb2ludGVyKHVpbnQ4X3QgKmRhdGEsIHNpemVfdCB5LCBzaXplX3Qgeiwgc2l6
ZV90IHJvd1BpdGNoLCBzaXplX3QgZGVwdGhQaXRjaCkKK3sKKyAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxUKj4oZGF0YSArICh5ICogcm93UGl0Y2gpICsgKHogKiBkZXB0aFBpdGNoKSk7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIGNvbnN0IFQgKk9mZnNldERhdGFQb2lu
dGVyKGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCB5LCBzaXplX3Qgeiwgc2l6ZV90IHJvd1Bp
dGNoLCBzaXplX3QgZGVwdGhQaXRjaCkKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBUKj4oZGF0YSArICh5ICogcm93UGl0Y2gpICsgKHogKiBkZXB0aFBpdGNoKSk7Cit9CisK
K30gIC8vIG5hbWVzcGFjZSBwcml2CisKK3RlbXBsYXRlIDx0eXBlbmFtZSB0eXBlLCBzaXplX3Qg
Y29tcG9uZW50Q291bnQ+CitpbmxpbmUgdm9pZCBMb2FkVG9OYXRpdmUoc2l6ZV90IHdpZHRoLCBz
aXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0
aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90
IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAgICBjb25zdCBz
aXplX3Qgcm93U2l6ZSA9IHdpZHRoICogc2l6ZW9mKHR5cGUpICogY29tcG9uZW50Q291bnQ7Cisg
ICAgY29uc3Qgc2l6ZV90IGxheWVyU2l6ZSA9IHJvd1NpemUgKiBoZWlnaHQ7CisgICAgY29uc3Qg
c2l6ZV90IGltYWdlU2l6ZSA9IGxheWVyU2l6ZSAqIGRlcHRoOworCisgICAgaWYgKGxheWVyU2l6
ZSA9PSBpbnB1dERlcHRoUGl0Y2ggJiYgbGF5ZXJTaXplID09IG91dHB1dERlcHRoUGl0Y2gpCisg
ICAgeworICAgICAgICBBU1NFUlQocm93U2l6ZSA9PSBpbnB1dFJvd1BpdGNoICYmIHJvd1NpemUg
PT0gb3V0cHV0Um93UGl0Y2gpOworICAgICAgICBtZW1jcHkob3V0cHV0LCBpbnB1dCwgaW1hZ2VT
aXplKTsKKyAgICB9CisgICAgZWxzZSBpZiAocm93U2l6ZSA9PSBpbnB1dFJvd1BpdGNoICYmIHJv
d1NpemUgPT0gb3V0cHV0Um93UGl0Y2gpCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCB6ID0g
MDsgeiA8IGRlcHRoOyB6KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IHR5cGUgKnNv
dXJjZSA9IHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHR5cGU+KGlucHV0LCAwLCB6LCBpbnB1dFJv
d1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOworICAgICAgICAgICAgdHlwZSAqZGVzdCA9IHByaXY6
Ok9mZnNldERhdGFQb2ludGVyPHR5cGU+KG91dHB1dCwgMCwgeiwgb3V0cHV0Um93UGl0Y2gsIG91
dHB1dERlcHRoUGl0Y2gpOworCisgICAgICAgICAgICBtZW1jcHkoZGVzdCwgc291cmNlLCBsYXll
clNpemUpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGZvciAo
c2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKKyAgICAgICAgeworICAgICAgICAgICAgZm9y
IChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjb25zdCB0eXBlICpzb3VyY2UgPSBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx0eXBl
PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKKyAgICAgICAg
ICAgICAgICB0eXBlICpkZXN0ID0gcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dHlwZT4ob3V0cHV0
LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICAg
ICAgbWVtY3B5KGRlc3QsIHNvdXJjZSwgd2lkdGggKiBzaXplb2YodHlwZSkgKiBjb21wb25lbnRD
b3VudCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSB0eXBlLCB1aW50MzJfdCBmb3VydGhDb21wb25lbnRCaXRzPgoraW5saW5lIHZvaWQg
TG9hZFRvTmF0aXZlM1RvNChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNp
emVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwg
c2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgY29uc3QgdHlwZSBmb3VydGhWYWx1ZSA9
IGdsOjpiaXRDYXN0PHR5cGU+KGZvdXJ0aENvbXBvbmVudEJpdHMpOworCisgICAgZm9yIChzaXpl
X3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQorICAgIHsKKyAgICAgICAgZm9yIChzaXplX3QgeSA9
IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgdHlwZSAq
c291cmNlID0gcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dHlwZT4oaW5wdXQsIHksIHosIGlucHV0
Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICB0eXBlICpkZXN0ID0gcHJp
djo6T2Zmc2V0RGF0YVBvaW50ZXI8dHlwZT4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwg
b3V0cHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdp
ZHRoOyB4KyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGVzdFt4ICogNCArIDBd
ID0gc291cmNlW3ggKiAzICsgMF07CisgICAgICAgICAgICAgICAgZGVzdFt4ICogNCArIDFdID0g
c291cmNlW3ggKiAzICsgMV07CisgICAgICAgICAgICAgICAgZGVzdFt4ICogNCArIDJdID0gc291
cmNlW3ggKiAzICsgMl07CisgICAgICAgICAgICAgICAgZGVzdFt4ICogNCArIDNdID0gZm91cnRo
VmFsdWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3RlbXBsYXRlIDxz
aXplX3QgY29tcG9uZW50Q291bnQ+CitpbmxpbmUgdm9pZCBMb2FkMzJGVG8xNkYoc2l6ZV90IHdp
ZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5w
dXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwg
c2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAgICBj
b25zdCBzaXplX3QgZWxlbWVudFdpZHRoID0gY29tcG9uZW50Q291bnQgKiB3aWR0aDsKKworICAg
IGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKKyAgICB7CisgICAgICAgIGZvciAo
c2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNv
bnN0IGZsb2F0ICpzb3VyY2UgPSBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjxmbG9hdD4oaW5wdXQs
IHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICB1aW50
MTZfdCAqZGVzdCA9IHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQxNl90PihvdXRwdXQsIHks
IHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKKworICAgICAgICAgICAgZm9y
IChzaXplX3QgeCA9IDA7IHggPCBlbGVtZW50V2lkdGg7IHgrKykKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBkZXN0W3hdID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTYoc291cmNlW3hdKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordGVtcGxhdGUgPHNpemVfdCBi
bG9ja1dpZHRoLCBzaXplX3QgYmxvY2tIZWlnaHQsIHNpemVfdCBibG9ja1NpemU+CitpbmxpbmUg
dm9pZCBMb2FkQ29tcHJlc3NlZFRvTmF0aXZlKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwg
c2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0
Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwg
c2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAgICBj
b25zdCBzaXplX3QgY29sdW1ucyA9ICh3aWR0aCArIChibG9ja1dpZHRoIC0gMSkpIC8gYmxvY2tX
aWR0aDsKKyAgICBjb25zdCBzaXplX3Qgcm93cyA9IChoZWlnaHQgKyAoYmxvY2tIZWlnaHQgLSAx
KSkgLyBibG9ja0hlaWdodDsKKworICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7ICsr
eikKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgcm93czsgKyt5KQorICAg
ICAgICB7CisgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzb3VyY2UgPSBwcml2OjpPZmZzZXRE
YXRhUG9pbnRlcjx1aW50OF90PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0
aFBpdGNoKTsKKyAgICAgICAgICAgIHVpbnQ4X3QgKmRlc3QgPSBwcml2OjpPZmZzZXREYXRhUG9p
bnRlcjx1aW50OF90PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBp
dGNoKTsKKyAgICAgICAgICAgIG1lbWNweShkZXN0LCBzb3VyY2UsIGNvbHVtbnMgKiBibG9ja1Np
emUpOworICAgICAgICB9CisgICAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgdHlwZSwgdWlu
dDMyX3QgZmlyc3RCaXRzLCB1aW50MzJfdCBzZWNvbmRCaXRzLCB1aW50MzJfdCB0aGlyZEJpdHMs
IHVpbnQzMl90IGZvdXJ0aEJpdHM+CitpbmxpbmUgdm9pZCBJbml0aWFsaXplNENvbXBvbmVudERh
dGEoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0
Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQoreworICAgIHR5cGUgd3JpdGVWYWx1
ZXNbNF0gPQorICAgIHsKKyAgICAgICAgZ2w6OmJpdENhc3Q8dHlwZT4oZmlyc3RCaXRzKSwKKyAg
ICAgICAgZ2w6OmJpdENhc3Q8dHlwZT4oc2Vjb25kQml0cyksCisgICAgICAgIGdsOjpiaXRDYXN0
PHR5cGU+KHRoaXJkQml0cyksCisgICAgICAgIGdsOjpiaXRDYXN0PHR5cGU+KGZvdXJ0aEJpdHMp
LAorICAgIH07CisKKyAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCisgICAg
eworICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgICAgICB7
CisgICAgICAgICAgICB0eXBlICpkZXN0Um93ID0gcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dHlw
ZT4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7CisgICAg
ICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgdHlwZSogZGVzdFBpeGVsID0gZGVzdFJvdyArIHggKiA0OworCisg
ICAgICAgICAgICAgICAgLy8gVGhpcyBjb3VsZCBwb3RlbnRpYWxseSBiZSBvcHRpbWl6ZWQgYnkg
Z2VuZXJhdGluZyBhbiBlbnRpcmUgcm93IG9mIGluaXRpYWxpemF0aW9uCisgICAgICAgICAgICAg
ICAgLy8gZGF0YSBhbmQgY29weWluZyByb3cgYnkgcm93IGluc3RlYWQgb2YgcGl4ZWwgYnkgcGl4
ZWwuCisgICAgICAgICAgICAgICAgbWVtY3B5KGRlc3RQaXhlbCwgd3JpdGVWYWx1ZXMsIHNpemVv
Zih0eXBlKSAqIDQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit9IC8v
IG5hbWVzcGFjZSBhbmdsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2ltYWdl
X3V0aWwvbG9hZGltYWdlX2V0Yy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2ltYWdlX3V0aWwvbG9hZGltYWdlX2V0Yy5jcHAJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2ltYWdlX3V0aWwvbG9hZGltYWdlX2V0Yy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNTcyIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAy
MDEzLTIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisv
LyBsb2FkaW1hZ2VfZXRjLmNwcDogRGVjb2RlcyBFVEMgYW5kIEVBQyBlbmNvZGVkIHRleHR1cmVz
LgorCisjaW5jbHVkZSAiaW1hZ2VfdXRpbC9sb2FkaW1hZ2UuaCIKKworI2luY2x1ZGUgImNvbW1v
bi9tYXRodXRpbC5oIgorCisjaW5jbHVkZSAiaW1hZ2VfdXRpbC9pbWFnZWZvcm1hdHMuaCIKKwor
bmFtZXNwYWNlIGFuZ2xlCit7CituYW1lc3BhY2UKK3sKKy8vIFRhYmxlIDMuMTcuMiBzb3J0ZWQg
YWNjb3JkaW5nIHRvIHRhYmxlIDMuMTcuMworLy8gY2xhbmctZm9ybWF0IG9mZgorc3RhdGljIGNv
bnN0IGludCBpbnRlbnNpdHlNb2RpZmllckRlZmF1bHRbXVs0XSA9Cit7CisgICAgeyAgMiwgICA4
LCAgLTIsICAgLTggfSwKKyAgICB7ICA1LCAgMTcsICAtNSwgIC0xNyB9LAorICAgIHsgIDksICAy
OSwgIC05LCAgLTI5IH0sCisgICAgeyAxMywgIDQyLCAtMTMsICAtNDIgfSwKKyAgICB7IDE4LCAg
NjAsIC0xOCwgIC02MCB9LAorICAgIHsgMjQsICA4MCwgLTI0LCAgLTgwIH0sCisgICAgeyAzMywg
MTA2LCAtMzMsIC0xMDYgfSwKKyAgICB7IDQ3LCAxODMsIC00NywgLTE4MyB9LAorfTsKKy8vIGNs
YW5nLWZvcm1hdCBvbgorCisvLyBUYWJsZSBDLjEyLCBpbnRlbnNpdHkgbW9kaWZpZXIgZm9yIG5v
biBvcGFxdWUgcHVuY2h0aHJvdWdoIGFscGhhCisvLyBjbGFuZy1mb3JtYXQgb2ZmCitzdGF0aWMg
Y29uc3QgaW50IGludGVuc2l0eU1vZGlmaWVyTm9uT3BhcXVlW11bNF0gPQoreworICAgIHsgMCwg
ICA4LCAwLCAgIC04IH0sCisgICAgeyAwLCAgMTcsIDAsICAtMTcgfSwKKyAgICB7IDAsICAyOSwg
MCwgIC0yOSB9LAorICAgIHsgMCwgIDQyLCAwLCAgLTQyIH0sCisgICAgeyAwLCAgNjAsIDAsICAt
NjAgfSwKKyAgICB7IDAsICA4MCwgMCwgIC04MCB9LAorICAgIHsgMCwgMTA2LCAwLCAtMTA2IH0s
CisgICAgeyAwLCAxODMsIDAsIC0xODMgfSwKK307CisvLyBjbGFuZy1mb3JtYXQgb24KKworc3Rh
dGljIGNvbnN0IGludCBrTnVtUGl4ZWxzSW5CbG9jayA9IDE2OworCitzdHJ1Y3QgRVRDMkJsb2Nr
Cit7CisgICAgLy8gRGVjb2RlcyB1bnNpZ25lZCBzaW5nbGUgb3IgZHVhbCBjaGFubmVsIGJsb2Nr
IHRvIGJ5dGVzCisgICAgdm9pZCBkZWNvZGVBc1NpbmdsZUNoYW5uZWwodWludDhfdCAqZGVzdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVzdFBpeGVsU3RyaWRlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXN0Um93UGl0Y2gsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1NpZ25lZCkgY29uc3QKKyAgICB7CisgICAg
ICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgNCAmJiAoeSArIGopIDwgaDsgaisrKQorICAgICAg
ICB7CisgICAgICAgICAgICB1aW50OF90ICpyb3cgPSBkZXN0ICsgKGogKiBkZXN0Um93UGl0Y2gp
OworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA0ICYmICh4ICsgaSkgPCB3OyBp
KyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdWludDhfdCAqcGl4ZWwgPSByb3cg
KyAoaSAqIGRlc3RQaXhlbFN0cmlkZSk7CisgICAgICAgICAgICAgICAgaWYgKGlzU2lnbmVkKQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgKnBpeGVsID0gY2xhbXBTQnl0
ZShnZXRTaW5nbGVDaGFubmVsKGksIGosIGlzU2lnbmVkKSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICpwaXhlbCA9IGNsYW1wQnl0ZShnZXRTaW5nbGVDaGFubmVsKGksIGosIGlzU2lnbmVkKSk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgLy8gRGVjb2RlcyBSR0IgYmxvY2sgdG8gcmdiYTgKKyAgICB2b2lkIGRlY29kZUFzUkdCKHVp
bnQ4X3QgKmRlc3QsCisgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeCwKKyAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCB5LAorICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHcsCisgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgaCwKKyAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBk
ZXN0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90IGFscGhhVmFs
dWVzWzRdWzRdLAorICAgICAgICAgICAgICAgICAgICAgYm9vbCBwdW5jaFRocm91Z2hBbHBoYSkg
Y29uc3QKKyAgICB7CisgICAgICAgIGJvb2wgb3BhcXVlQml0ICAgICAgICAgICAgICAgICAgPSB1
LmlkaHQubW9kZS5pZG0uZGlmZmJpdDsKKyAgICAgICAgYm9vbCBub25PcGFxdWVQdW5jaFRocm91
Z2hBbHBoYSA9IHB1bmNoVGhyb3VnaEFscGhhICYmICFvcGFxdWVCaXQ7CisgICAgICAgIC8vIFNl
bGVjdCBtb2RlCisgICAgICAgIGlmICh1LmlkaHQubW9kZS5pZG0uZGlmZmJpdCB8fCBwdW5jaFRo
cm91Z2hBbHBoYSkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgYXV0byAmYmxvY2sgPSB1
LmlkaHQubW9kZS5pZG0uY29sb3JzLmRpZmY7CisgICAgICAgICAgICBpbnQgciAgICAgICAgICAg
ICA9IChibG9jay5SICsgYmxvY2suZFIpOworICAgICAgICAgICAgaW50IGcgICAgICAgICAgICAg
PSAoYmxvY2suRyArIGJsb2NrLmRHKTsKKyAgICAgICAgICAgIGludCBiICAgICAgICAgICAgID0g
KGJsb2NrLkIgKyBibG9jay5kQik7CisgICAgICAgICAgICBpZiAociA8IDAgfHwgciA+IDMxKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlY29kZVRCbG9jayhkZXN0LCB4LCB5LCB3
LCBoLCBkZXN0Um93UGl0Y2gsIGFscGhhVmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlIGlmIChnIDwgMCB8fCBnID4gMzEpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgZGVjb2RlSEJsb2NrKGRlc3QsIHgsIHksIHcsIGgsIGRlc3RSb3dQaXRjaCwgYWxwaGFW
YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbk9wYXF1ZVB1bmNoVGhyb3Vn
aEFscGhhKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGIgPCAwIHx8IGIg
PiAzMSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZWNvZGVQbGFuYXJCbG9jayhk
ZXN0LCB4LCB5LCB3LCBoLCBkZXN0Um93UGl0Y2gsIGFscGhhVmFsdWVzKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZWNv
ZGVEaWZmZXJlbnRpYWxCbG9jayhkZXN0LCB4LCB5LCB3LCBoLCBkZXN0Um93UGl0Y2gsIGFscGhh
VmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbk9wYXF1
ZVB1bmNoVGhyb3VnaEFscGhhKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBl
bHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlY29kZUluZGl2aWR1YWxCbG9jayhkZXN0LCB4
LCB5LCB3LCBoLCBkZXN0Um93UGl0Y2gsIGFscGhhVmFsdWVzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhhKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIC8vIFRyYW5zY29kZXMgUkdCIGJsb2NrIHRvIEJDMQorICAgIHZvaWQgdHJh
bnNjb2RlQXNCQzEodWludDhfdCAqZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHksCisgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgdywKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCBhbHBoYVZhbHVlc1s0XVs0XSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHVuY2hUaHJvdWdoQWxwaGEpIGNvbnN0CisgICAg
eworICAgICAgICBib29sIG9wYXF1ZUJpdCAgICAgICAgICAgICAgICAgID0gdS5pZGh0Lm1vZGUu
aWRtLmRpZmZiaXQ7CisgICAgICAgIGJvb2wgbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEgPSBw
dW5jaFRocm91Z2hBbHBoYSAmJiAhb3BhcXVlQml0OworICAgICAgICAvLyBTZWxlY3QgbW9kZQor
ICAgICAgICBpZiAodS5pZGh0Lm1vZGUuaWRtLmRpZmZiaXQgfHwgcHVuY2hUaHJvdWdoQWxwaGEp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8gJmJsb2NrID0gdS5pZGh0Lm1vZGUu
aWRtLmNvbG9ycy5kaWZmOworICAgICAgICAgICAgaW50IHIgICAgICAgICAgICAgPSAoYmxvY2su
UiArIGJsb2NrLmRSKTsKKyAgICAgICAgICAgIGludCBnICAgICAgICAgICAgID0gKGJsb2NrLkcg
KyBibG9jay5kRyk7CisgICAgICAgICAgICBpbnQgYiAgICAgICAgICAgICA9IChibG9jay5CICsg
YmxvY2suZEIpOworICAgICAgICAgICAgaWYgKHIgPCAwIHx8IHIgPiAzMSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICB0cmFuc2NvZGVUQmxvY2tUb0JDMShkZXN0LCB4LCB5LCB3LCBo
LCBhbHBoYVZhbHVlcywgbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZSBpZiAoZyA8IDAgfHwgZyA+IDMxKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHRyYW5zY29kZUhCbG9ja1RvQkMxKGRlc3QsIHgsIHksIHcsIGgsIGFs
cGhhVmFsdWVzLCBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlIGlmIChiIDwgMCB8fCBiID4gMzEpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgdHJhbnNjb2RlUGxhbmFyQmxvY2tUb0JDMShkZXN0LCB4LCB5LCB3LCBoLCBh
bHBoYVZhbHVlcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgdHJhbnNjb2RlRGlmZmVyZW50aWFsQmxvY2tUb0JDMShkZXN0
LCB4LCB5LCB3LCBoLCBhbHBoYVZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhhKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHRy
YW5zY29kZUluZGl2aWR1YWxCbG9ja1RvQkMxKGRlc3QsIHgsIHksIHcsIGgsIGFscGhhVmFsdWVz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uT3BhcXVlUHVu
Y2hUaHJvdWdoQWxwaGEpOworICAgICAgICB9CisgICAgfQorCisgIHByaXZhdGU6CisgICAgdW5p
b24geworICAgICAgICAvLyBJbmRpdmlkdWFsLCBkaWZmZXJlbnRpYWwsIEggYW5kIFQgbW9kZXMK
KyAgICAgICAgc3RydWN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHVuaW9uIHsKKyAgICAgICAg
ICAgICAgICAvLyBJbmRpdmlkdWFsIGFuZCBkaWZmZXJlbnRpYWwgbW9kZXMKKyAgICAgICAgICAg
ICAgICBzdHJ1Y3QKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHVuaW9u
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCAgLy8gSW5kaXZpZHVhbCBjb2xvcnMK
KyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBjaGFyIFIyIDogNDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBjaGFyIFIxIDogNDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFy
IEcyIDogNDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEcxIDog
NDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEIyIDogNDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEIxIDogNDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0gaW5kaXY7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg
IC8vIERpZmZlcmVudGlhbCBjb2xvcnMKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaWduZWQgY2hhciBkUiA6IDM7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBSIDogNTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaWduZWQgY2hhciBkRyA6IDM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgY2hhciBHIDogNTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduZWQg
Y2hhciBkQiA6IDM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBC
IDogNTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZGlmZjsKKyAgICAgICAgICAgICAgICAg
ICAgfSBjb2xvcnM7CisgICAgICAgICAgICAgICAgICAgIGJvb2wgZmxpcGJpdCA6IDE7CisgICAg
ICAgICAgICAgICAgICAgIGJvb2wgZGlmZmJpdCA6IDE7CisgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGNoYXIgY3cyIDogMzsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBj
dzEgOiAzOworICAgICAgICAgICAgICAgIH0gaWRtOworICAgICAgICAgICAgICAgIC8vIFQgbW9k
ZQorICAgICAgICAgICAgICAgIHN0cnVjdAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gQnl0ZSAxCisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgVFIx
YiA6IDI7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgVGR1bW15QiA6IDE7Cisg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgVFIxYSA6IDI7CisgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGNoYXIgVGR1bW15QSA6IDM7CisgICAgICAgICAgICAgICAgICAgIC8v
IEJ5dGUgMgorICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIFRCMSA6IDQ7CisgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgVEcxIDogNDsKKyAgICAgICAgICAgICAgICAg
ICAgLy8gQnl0ZSAzCisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgVEcyIDogNDsK
KyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBUUjIgOiA0OworICAgICAgICAgICAg
ICAgICAgICAvLyBCeXRlIDQKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBUZGIg
OiAxOworICAgICAgICAgICAgICAgICAgICBib29sIFRmbGlwYml0IDogMTsKKyAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgY2hhciBUZGEgOiAyOworICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBjaGFyIFRCMiA6IDQ7CisgICAgICAgICAgICAgICAgfSB0bTsKKyAgICAgICAgICAgICAg
ICAvLyBIIG1vZGUKKyAgICAgICAgICAgICAgICBzdHJ1Y3QKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIC8vIEJ5dGUgMQorICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBjaGFyIEhHMWEgOiAzOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEhSMSA6
IDQ7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgSGR1bW15QSA6IDE7CisgICAg
ICAgICAgICAgICAgICAgIC8vIEJ5dGUgMgorICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBj
aGFyIEhCMWIgOiAyOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEhkdW1teUMg
OiAxOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEhCMWEgOiAxOworICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEhHMWIgOiAxOworICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyIEhkdW1teUIgOiAzOworICAgICAgICAgICAgICAgICAgICAvLyBCeXRl
IDMKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBIRzJhIDogMzsKKyAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciBIUjIgOiA0OworICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBjaGFyIEhCMWMgOiAxOworICAgICAgICAgICAgICAgICAgICAvLyBCeXRlIDQKKyAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBIZGIgOiAxOworICAgICAgICAgICAgICAg
ICAgICBib29sIEhmbGlwYml0IDogMTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciBIZGEgOiAxOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEhCMiA6IDQ7Cisg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgSEcyYiA6IDE7CisgICAgICAgICAgICAg
ICAgfSBobTsKKyAgICAgICAgICAgIH0gbW9kZTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIg
cGl4ZWxJbmRleE1TQlsyXTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWxJbmRleExT
QlsyXTsKKyAgICAgICAgfSBpZGh0OworICAgICAgICAvLyBwbGFuYXIgbW9kZQorICAgICAgICBz
dHJ1Y3QKKyAgICAgICAgeworICAgICAgICAgICAgLy8gQnl0ZSAxCisgICAgICAgICAgICB1bnNp
Z25lZCBjaGFyIEdPMSA6IDE7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIFJPIDogNjsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIGNoYXIgUGR1bW15QSA6IDE7CisgICAgICAgICAgICAvLyBCeXRl
IDIKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgQk8xIDogMTsKKyAgICAgICAgICAgIHVuc2ln
bmVkIGNoYXIgR08yIDogNjsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgUGR1bW15QiA6IDE7
CisgICAgICAgICAgICAvLyBCeXRlIDMKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgQk8zYSA6
IDI7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIFBkdW1teUQgOiAxOworICAgICAgICAgICAg
dW5zaWduZWQgY2hhciBCTzIgOiAyOworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBQZHVtbXlD
IDogMzsKKyAgICAgICAgICAgIC8vIEJ5dGUgNAorICAgICAgICAgICAgdW5zaWduZWQgY2hhciBS
SDIgOiAxOworICAgICAgICAgICAgYm9vbCBQZmxpcGJpdCA6IDE7CisgICAgICAgICAgICB1bnNp
Z25lZCBjaGFyIFJIMSA6IDU7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEJPM2IgOiAxOwor
ICAgICAgICAgICAgLy8gQnl0ZSA1CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEJIYSA6IDE7
CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEdIIDogNzsKKyAgICAgICAgICAgIC8vIEJ5dGUg
NgorICAgICAgICAgICAgdW5zaWduZWQgY2hhciBSVmEgOiAzOworICAgICAgICAgICAgdW5zaWdu
ZWQgY2hhciBCSGIgOiA1OworICAgICAgICAgICAgLy8gQnl0ZSA3CisgICAgICAgICAgICB1bnNp
Z25lZCBjaGFyIEdWYSA6IDU7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIFJWYiA6IDM7Cisg
ICAgICAgICAgICAvLyBCeXRlIDgKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgQlYgOiA2Owor
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciBHVmIgOiAyOworICAgICAgICB9IHBibGs7CisgICAg
ICAgIC8vIFNpbmdsZSBjaGFubmVsIGJsb2NrCisgICAgICAgIHN0cnVjdAorICAgICAgICB7Cisg
ICAgICAgICAgICB1bmlvbiB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciB1czsKKyAg
ICAgICAgICAgICAgICBzaWduZWQgY2hhciBzOworICAgICAgICAgICAgfSBiYXNlX2NvZGV3b3Jk
OworICAgICAgICAgICAgdW5zaWduZWQgY2hhciB0YWJsZV9pbmRleCA6IDQ7CisgICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyIG11bHRpcGxpZXIgOiA0OworICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciBtYzEgOiAyOworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBtYiA6IDM7CisgICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyIG1hIDogMzsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbWYxIDog
MTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbWUgOiAzOworICAgICAgICAgICAgdW5zaWdu
ZWQgY2hhciBtZCA6IDM7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG1jMiA6IDE7CisgICAg
ICAgICAgICB1bnNpZ25lZCBjaGFyIG1oIDogMzsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIg
bWcgOiAzOworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBtZjIgOiAyOworICAgICAgICAgICAg
dW5zaWduZWQgY2hhciBtazEgOiAyOworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBtaiA6IDM7
CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG1pIDogMzsKKyAgICAgICAgICAgIHVuc2lnbmVk
IGNoYXIgbW4xIDogMTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbW0gOiAzOworICAgICAg
ICAgICAgdW5zaWduZWQgY2hhciBtbCA6IDM7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG1r
MiA6IDE7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG1wIDogMzsKKyAgICAgICAgICAgIHVu
c2lnbmVkIGNoYXIgbW8gOiAzOworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBtbjIgOiAyOwor
ICAgICAgICB9IHNjYmxrOworICAgIH0gdTsKKworICAgIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGNs
YW1wQnl0ZShpbnQgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcj4oZ2w6OmNsYW1wKHZhbHVlLCAwLCAyNTUpKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgc2lnbmVkIGNoYXIgY2xhbXBTQnl0ZShpbnQgdmFsdWUpCisgICAgeworICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8c2lnbmVkIGNoYXI+KGdsOjpjbGFtcCh2YWx1ZSwgLTEyOCwgMTI3KSk7
CisgICAgfQorCisgICAgc3RhdGljIFI4RzhCOEE4IGNyZWF0ZVJHQkEoaW50IHJlZCwgaW50IGdy
ZWVuLCBpbnQgYmx1ZSwgaW50IGFscGhhKQorICAgIHsKKyAgICAgICAgUjhHOEI4QTggcmdiYTsK
KyAgICAgICAgcmdiYS5SID0gY2xhbXBCeXRlKHJlZCk7CisgICAgICAgIHJnYmEuRyA9IGNsYW1w
Qnl0ZShncmVlbik7CisgICAgICAgIHJnYmEuQiA9IGNsYW1wQnl0ZShibHVlKTsKKyAgICAgICAg
cmdiYS5BID0gY2xhbXBCeXRlKGFscGhhKTsKKyAgICAgICAgcmV0dXJuIHJnYmE7CisgICAgfQor
CisgICAgc3RhdGljIFI4RzhCOEE4IGNyZWF0ZVJHQkEoaW50IHJlZCwgaW50IGdyZWVuLCBpbnQg
Ymx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBjcmVhdGVSR0JBKHJlZCwgZ3JlZW4sIGJsdWUs
IDI1NSk7CisgICAgfQorCisgICAgc3RhdGljIGludCBleHRlbmRfNHRvOGJpdHMoaW50IHgpIHsg
cmV0dXJuICh4IDw8IDQpIHwgeDsgfQorICAgIHN0YXRpYyBpbnQgZXh0ZW5kXzV0bzhiaXRzKGlu
dCB4KSB7IHJldHVybiAoeCA8PCAzKSB8ICh4ID4+IDIpOyB9CisgICAgc3RhdGljIGludCBleHRl
bmRfNnRvOGJpdHMoaW50IHgpIHsgcmV0dXJuICh4IDw8IDIpIHwgKHggPj4gNCk7IH0KKyAgICBz
dGF0aWMgaW50IGV4dGVuZF83dG84Yml0cyhpbnQgeCkgeyByZXR1cm4gKHggPDwgMSkgfCAoeCA+
PiA2KTsgfQorCisgICAgdm9pZCBkZWNvZGVJbmRpdmlkdWFsQmxvY2sodWludDhfdCAqZGVzdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVzdFJvd1BpdGNoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgYWxwaGFWYWx1ZXNbNF1bNF0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBub25PcGFxdWVQdW5jaFRocm91
Z2hBbHBoYSkgY29uc3QKKyAgICB7CisgICAgICAgIGNvbnN0IGF1dG8gJmJsb2NrID0gdS5pZGh0
Lm1vZGUuaWRtLmNvbG9ycy5pbmRpdjsKKyAgICAgICAgaW50IHIxICAgICAgICAgICAgPSBleHRl
bmRfNHRvOGJpdHMoYmxvY2suUjEpOworICAgICAgICBpbnQgZzEgICAgICAgICAgICA9IGV4dGVu
ZF80dG84Yml0cyhibG9jay5HMSk7CisgICAgICAgIGludCBiMSAgICAgICAgICAgID0gZXh0ZW5k
XzR0bzhiaXRzKGJsb2NrLkIxKTsKKyAgICAgICAgaW50IHIyICAgICAgICAgICAgPSBleHRlbmRf
NHRvOGJpdHMoYmxvY2suUjIpOworICAgICAgICBpbnQgZzIgICAgICAgICAgICA9IGV4dGVuZF80
dG84Yml0cyhibG9jay5HMik7CisgICAgICAgIGludCBiMiAgICAgICAgICAgID0gZXh0ZW5kXzR0
bzhiaXRzKGJsb2NrLkIyKTsKKyAgICAgICAgZGVjb2RlSW5kaXZpZHVhbE9yRGlmZmVyZW50aWFs
QmxvY2soZGVzdCwgeCwgeSwgdywgaCwgZGVzdFJvd1BpdGNoLCByMSwgZzEsIGIxLCByMiwgZzIs
IGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYVZh
bHVlcywgbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpOworICAgIH0KKworICAgIHZvaWQgZGVj
b2RlRGlmZmVyZW50aWFsQmxvY2sodWludDhfdCAqZGVzdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlc3RSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgYWxwaGFWYWx1ZXNbNF1bNF0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhh
KSBjb25zdAorICAgIHsKKyAgICAgICAgY29uc3QgYXV0byAmYmxvY2sgPSB1LmlkaHQubW9kZS5p
ZG0uY29sb3JzLmRpZmY7CisgICAgICAgIGludCBiMSAgICAgICAgICAgID0gZXh0ZW5kXzV0bzhi
aXRzKGJsb2NrLkIpOworICAgICAgICBpbnQgZzEgICAgICAgICAgICA9IGV4dGVuZF81dG84Yml0
cyhibG9jay5HKTsKKyAgICAgICAgaW50IHIxICAgICAgICAgICAgPSBleHRlbmRfNXRvOGJpdHMo
YmxvY2suUik7CisgICAgICAgIGludCByMiAgICAgICAgICAgID0gZXh0ZW5kXzV0bzhiaXRzKGJs
b2NrLlIgKyBibG9jay5kUik7CisgICAgICAgIGludCBnMiAgICAgICAgICAgID0gZXh0ZW5kXzV0
bzhiaXRzKGJsb2NrLkcgKyBibG9jay5kRyk7CisgICAgICAgIGludCBiMiAgICAgICAgICAgID0g
ZXh0ZW5kXzV0bzhiaXRzKGJsb2NrLkIgKyBibG9jay5kQik7CisgICAgICAgIGRlY29kZUluZGl2
aWR1YWxPckRpZmZlcmVudGlhbEJsb2NrKGRlc3QsIHgsIHksIHcsIGgsIGRlc3RSb3dQaXRjaCwg
cjEsIGcxLCBiMSwgcjIsIGcyLCBiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYWxwaGFWYWx1ZXMsIG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhhKTsKKyAg
ICB9CisKKyAgICB2b2lkIGRlY29kZUluZGl2aWR1YWxPckRpZmZlcmVudGlhbEJsb2NrKHVpbnQ4
X3QgKmRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IHcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBkZXN0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgcjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgZzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgYjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
cjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZzIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYjIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90
IGFscGhhVmFsdWVzWzRdWzRdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSkgY29uc3QKKyAgICB7Cisg
ICAgICAgIGNvbnN0IGF1dG8gaW50ZW5zaXR5TW9kaWZpZXIgPQorICAgICAgICAgICAgbm9uT3Bh
cXVlUHVuY2hUaHJvdWdoQWxwaGEgPyBpbnRlbnNpdHlNb2RpZmllck5vbk9wYXF1ZSA6IGludGVu
c2l0eU1vZGlmaWVyRGVmYXVsdDsKKworICAgICAgICBSOEc4QjhBOCBzdWJibG9ja0NvbG9yczBb
NF07CisgICAgICAgIFI4RzhCOEE4IHN1YmJsb2NrQ29sb3JzMVs0XTsKKyAgICAgICAgZm9yIChz
aXplX3QgbW9kaWZpZXJJZHggPSAwOyBtb2RpZmllcklkeCA8IDQ7IG1vZGlmaWVySWR4KyspCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGludCBpMSAgICAgICAgICAgICAgICAgPSBpbnRl
bnNpdHlNb2RpZmllclt1LmlkaHQubW9kZS5pZG0uY3cxXVttb2RpZmllcklkeF07CisgICAgICAg
ICAgICBzdWJibG9ja0NvbG9yczBbbW9kaWZpZXJJZHhdID0gY3JlYXRlUkdCQShyMSArIGkxLCBn
MSArIGkxLCBiMSArIGkxKTsKKworICAgICAgICAgICAgY29uc3QgaW50IGkyICAgICAgICAgICAg
ICAgICA9IGludGVuc2l0eU1vZGlmaWVyW3UuaWRodC5tb2RlLmlkbS5jdzJdW21vZGlmaWVySWR4
XTsKKyAgICAgICAgICAgIHN1YmJsb2NrQ29sb3JzMVttb2RpZmllcklkeF0gPSBjcmVhdGVSR0JB
KHIyICsgaTIsIGcyICsgaTIsIGIyICsgaTIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHUu
aWRodC5tb2RlLmlkbS5mbGlwYml0KQorICAgICAgICB7CisgICAgICAgICAgICB1aW50OF90ICpj
dXJQaXhlbCA9IGRlc3Q7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IDIgJiYg
KHkgKyBqKSA8IGg7IGorKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBSOEc4QjhB
OCAqcm93ID0gcmVpbnRlcnByZXRfY2FzdDxSOEc4QjhBOCAqPihjdXJQaXhlbCk7CisgICAgICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA0ICYmICh4ICsgaSkgPCB3OyBpKyspCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByb3dbaV0gICA9IHN1YmJsb2Nr
Q29sb3JzMFtnZXRJbmRleChpLCBqKV07CisgICAgICAgICAgICAgICAgICAgIHJvd1tpXS5BID0g
YWxwaGFWYWx1ZXNbal1baV07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGN1
clBpeGVsICs9IGRlc3RSb3dQaXRjaDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZvciAo
c2l6ZV90IGogPSAyOyBqIDwgNCAmJiAoeSArIGopIDwgaDsgaisrKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIFI4RzhCOEE4ICpyb3cgPSByZWludGVycHJldF9jYXN0PFI4RzhCOEE4
ICo+KGN1clBpeGVsKTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDQg
JiYgKHggKyBpKSA8IHc7IGkrKykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIHJvd1tpXSAgID0gc3ViYmxvY2tDb2xvcnMxW2dldEluZGV4KGksIGopXTsKKyAgICAgICAg
ICAgICAgICAgICAgcm93W2ldLkEgPSBhbHBoYVZhbHVlc1tqXVtpXTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgY3VyUGl4ZWwgKz0gZGVzdFJvd1BpdGNoOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgdWlu
dDhfdCAqY3VyUGl4ZWwgPSBkZXN0OworICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGog
PCA0ICYmICh5ICsgaikgPCBoOyBqKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
UjhHOEI4QTggKnJvdyA9IHJlaW50ZXJwcmV0X2Nhc3Q8UjhHOEI4QTggKj4oY3VyUGl4ZWwpOwor
ICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMiAmJiAoeCArIGkpIDwgdzsg
aSsrKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcm93W2ldICAgPSBz
dWJibG9ja0NvbG9yczBbZ2V0SW5kZXgoaSwgaildOworICAgICAgICAgICAgICAgICAgICByb3db
aV0uQSA9IGFscGhhVmFsdWVzW2pdW2ldOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMjsgaSA8IDQgJiYgKHggKyBpKSA8IHc7IGkrKykKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJvd1tpXSAgID0gc3ViYmxvY2tDb2xv
cnMxW2dldEluZGV4KGksIGopXTsKKyAgICAgICAgICAgICAgICAgICAgcm93W2ldLkEgPSBhbHBo
YVZhbHVlc1tqXVtpXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY3VyUGl4
ZWwgKz0gZGVzdFJvd1BpdGNoOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlm
IChub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSkKKyAgICAgICAgeworICAgICAgICAgICAgZGVj
b2RlUHVuY2hUaHJvdWdoQWxwaGFCbG9jayhkZXN0LCB4LCB5LCB3LCBoLCBkZXN0Um93UGl0Y2gp
OworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBkZWNvZGVUQmxvY2sodWludDhfdCAqZGVz
dCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeCwKKyAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgeSwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdywKKyAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVzdFJv
d1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgYWxwaGFWYWx1ZXNb
NF1bNF0sCisgICAgICAgICAgICAgICAgICAgICAgYm9vbCBub25PcGFxdWVQdW5jaFRocm91Z2hB
bHBoYSkgY29uc3QKKyAgICB7CisgICAgICAgIC8vIFRhYmxlIEMuOCwgZGlzdGFuY2UgaW5kZXgg
Zm9yIFQgYW5kIEggbW9kZXMKKyAgICAgICAgY29uc3QgYXV0byAmYmxvY2sgPSB1LmlkaHQubW9k
ZS50bTsKKworICAgICAgICBpbnQgcjEgPSBleHRlbmRfNHRvOGJpdHMoYmxvY2suVFIxYSA8PCAy
IHwgYmxvY2suVFIxYik7CisgICAgICAgIGludCBnMSA9IGV4dGVuZF80dG84Yml0cyhibG9jay5U
RzEpOworICAgICAgICBpbnQgYjEgPSBleHRlbmRfNHRvOGJpdHMoYmxvY2suVEIxKTsKKyAgICAg
ICAgaW50IHIyID0gZXh0ZW5kXzR0bzhiaXRzKGJsb2NrLlRSMik7CisgICAgICAgIGludCBnMiA9
IGV4dGVuZF80dG84Yml0cyhibG9jay5URzIpOworICAgICAgICBpbnQgYjIgPSBleHRlbmRfNHRv
OGJpdHMoYmxvY2suVEIyKTsKKworICAgICAgICBzdGF0aWMgaW50IGRpc3RhbmNlWzhdID0gezMs
IDYsIDExLCAxNiwgMjMsIDMyLCA0MSwgNjR9OworICAgICAgICBjb25zdCBpbnQgZCAgICAgICAg
ICAgID0gZGlzdGFuY2VbYmxvY2suVGRhIDw8IDEgfCBibG9jay5UZGJdOworCisgICAgICAgIGNv
bnN0IFI4RzhCOEE4IHBhaW50Q29sb3JzWzRdID0geworICAgICAgICAgICAgY3JlYXRlUkdCQShy
MSwgZzEsIGIxKSwgY3JlYXRlUkdCQShyMiArIGQsIGcyICsgZCwgYjIgKyBkKSwgY3JlYXRlUkdC
QShyMiwgZzIsIGIyKSwKKyAgICAgICAgICAgIGNyZWF0ZVJHQkEocjIgLSBkLCBnMiAtIGQsIGIy
IC0gZCksCisgICAgICAgIH07CisKKyAgICAgICAgdWludDhfdCAqY3VyUGl4ZWwgPSBkZXN0Owor
ICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IDQgJiYgKHkgKyBqKSA8IGg7IGorKykKKyAg
ICAgICAgeworICAgICAgICAgICAgUjhHOEI4QTggKnJvdyA9IHJlaW50ZXJwcmV0X2Nhc3Q8UjhH
OEI4QTggKj4oY3VyUGl4ZWwpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA0
ICYmICh4ICsgaSkgPCB3OyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcm93
W2ldICAgPSBwYWludENvbG9yc1tnZXRJbmRleChpLCBqKV07CisgICAgICAgICAgICAgICAgcm93
W2ldLkEgPSBhbHBoYVZhbHVlc1tqXVtpXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGN1
clBpeGVsICs9IGRlc3RSb3dQaXRjaDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChub25PcGFx
dWVQdW5jaFRocm91Z2hBbHBoYSkKKyAgICAgICAgeworICAgICAgICAgICAgZGVjb2RlUHVuY2hU
aHJvdWdoQWxwaGFCbG9jayhkZXN0LCB4LCB5LCB3LCBoLCBkZXN0Um93UGl0Y2gpOworICAgICAg
ICB9CisgICAgfQorCisgICAgdm9pZCBkZWNvZGVIQmxvY2sodWludDhfdCAqZGVzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgeCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
eSwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdywKKyAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgaCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVzdFJvd1BpdGNoLAor
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgYWxwaGFWYWx1ZXNbNF1bNF0sCisg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSkgY29u
c3QKKyAgICB7CisgICAgICAgIC8vIFRhYmxlIEMuOCwgZGlzdGFuY2UgaW5kZXggZm9yIFQgYW5k
IEggbW9kZXMKKyAgICAgICAgY29uc3QgYXV0byAmYmxvY2sgPSB1LmlkaHQubW9kZS5obTsKKwor
ICAgICAgICBpbnQgcjEgPSBleHRlbmRfNHRvOGJpdHMoYmxvY2suSFIxKTsKKyAgICAgICAgaW50
IGcxID0gZXh0ZW5kXzR0bzhiaXRzKGJsb2NrLkhHMWEgPDwgMSB8IGJsb2NrLkhHMWIpOworICAg
ICAgICBpbnQgYjEgPSBleHRlbmRfNHRvOGJpdHMoYmxvY2suSEIxYSA8PCAzIHwgYmxvY2suSEIx
YiA8PCAxIHwgYmxvY2suSEIxYyk7CisgICAgICAgIGludCByMiA9IGV4dGVuZF80dG84Yml0cyhi
bG9jay5IUjIpOworICAgICAgICBpbnQgZzIgPSBleHRlbmRfNHRvOGJpdHMoYmxvY2suSEcyYSA8
PCAxIHwgYmxvY2suSEcyYik7CisgICAgICAgIGludCBiMiA9IGV4dGVuZF80dG84Yml0cyhibG9j
ay5IQjIpOworCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgZGlzdGFuY2VbOF0gPSB7MywgNiwg
MTEsIDE2LCAyMywgMzIsIDQxLCA2NH07CisgICAgICAgIGNvbnN0IGludCBkICAgICAgICAgICAg
ICAgICAgPSBkaXN0YW5jZVsoYmxvY2suSGRhIDw8IDIpIHwgKGJsb2NrLkhkYiA8PCAxKSB8Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyMSA8PCAxNiB8IGcxIDw8IDggfCBiMSkg
Pj0gKHIyIDw8IDE2IHwgZzIgPDwgOCB8IGIyKSA/IDEgOiAwKV07CisKKyAgICAgICAgY29uc3Qg
UjhHOEI4QTggcGFpbnRDb2xvcnNbNF0gPSB7CisgICAgICAgICAgICBjcmVhdGVSR0JBKHIxICsg
ZCwgZzEgKyBkLCBiMSArIGQpLCBjcmVhdGVSR0JBKHIxIC0gZCwgZzEgLSBkLCBiMSAtIGQpLAor
ICAgICAgICAgICAgY3JlYXRlUkdCQShyMiArIGQsIGcyICsgZCwgYjIgKyBkKSwgY3JlYXRlUkdC
QShyMiAtIGQsIGcyIC0gZCwgYjIgLSBkKSwKKyAgICAgICAgfTsKKworICAgICAgICB1aW50OF90
ICpjdXJQaXhlbCA9IGRlc3Q7CisgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgNCAmJiAo
eSArIGopIDwgaDsgaisrKQorICAgICAgICB7CisgICAgICAgICAgICBSOEc4QjhBOCAqcm93ID0g
cmVpbnRlcnByZXRfY2FzdDxSOEc4QjhBOCAqPihjdXJQaXhlbCk7CisgICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IDQgJiYgKHggKyBpKSA8IHc7IGkrKykKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICByb3dbaV0gICA9IHBhaW50Q29sb3JzW2dldEluZGV4KGksIGopXTsK
KyAgICAgICAgICAgICAgICByb3dbaV0uQSA9IGFscGhhVmFsdWVzW2pdW2ldOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgY3VyUGl4ZWwgKz0gZGVzdFJvd1BpdGNoOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhhKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWNvZGVQdW5jaFRocm91Z2hBbHBoYUJsb2NrKGRlc3QsIHgsIHksIHcsIGgsIGRl
c3RSb3dQaXRjaCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGRlY29kZVBsYW5hckJs
b2NrKHVpbnQ4X3QgKmRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB5LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IHcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwaXRjaCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgYWxwaGFWYWx1ZXNbNF1bNF0pIGNvbnN0CisgICAg
eworICAgICAgICBpbnQgcm8gPSBleHRlbmRfNnRvOGJpdHModS5wYmxrLlJPKTsKKyAgICAgICAg
aW50IGdvID0gZXh0ZW5kXzd0bzhiaXRzKHUucGJsay5HTzEgPDwgNiB8IHUucGJsay5HTzIpOwor
ICAgICAgICBpbnQgYm8gPQorICAgICAgICAgICAgZXh0ZW5kXzZ0bzhiaXRzKHUucGJsay5CTzEg
PDwgNSB8IHUucGJsay5CTzIgPDwgMyB8IHUucGJsay5CTzNhIDw8IDEgfCB1LnBibGsuQk8zYik7
CisgICAgICAgIGludCByaCA9IGV4dGVuZF82dG84Yml0cyh1LnBibGsuUkgxIDw8IDEgfCB1LnBi
bGsuUkgyKTsKKyAgICAgICAgaW50IGdoID0gZXh0ZW5kXzd0bzhiaXRzKHUucGJsay5HSCk7Cisg
ICAgICAgIGludCBiaCA9IGV4dGVuZF82dG84Yml0cyh1LnBibGsuQkhhIDw8IDUgfCB1LnBibGsu
QkhiKTsKKyAgICAgICAgaW50IHJ2ID0gZXh0ZW5kXzZ0bzhiaXRzKHUucGJsay5SVmEgPDwgMyB8
IHUucGJsay5SVmIpOworICAgICAgICBpbnQgZ3YgPSBleHRlbmRfN3RvOGJpdHModS5wYmxrLkdW
YSA8PCAyIHwgdS5wYmxrLkdWYik7CisgICAgICAgIGludCBidiA9IGV4dGVuZF82dG84Yml0cyh1
LnBibGsuQlYpOworCisgICAgICAgIHVpbnQ4X3QgKmN1clBpeGVsID0gZGVzdDsKKyAgICAgICAg
Zm9yIChzaXplX3QgaiA9IDA7IGogPCA0ICYmICh5ICsgaikgPCBoOyBqKyspCisgICAgICAgIHsK
KyAgICAgICAgICAgIFI4RzhCOEE4ICpyb3cgPSByZWludGVycHJldF9jYXN0PFI4RzhCOEE4ICo+
KGN1clBpeGVsKTsKKworICAgICAgICAgICAgaW50IHJ5ID0gc3RhdGljX2Nhc3Q8aW50PihqKSAq
IChydiAtIHJvKSArIDI7CisgICAgICAgICAgICBpbnQgZ3kgPSBzdGF0aWNfY2FzdDxpbnQ+KGop
ICogKGd2IC0gZ28pICsgMjsKKyAgICAgICAgICAgIGludCBieSA9IHN0YXRpY19jYXN0PGludD4o
aikgKiAoYnYgLSBibykgKyAyOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA0
ICYmICh4ICsgaSkgPCB3OyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcm93
W2ldID0gY3JlYXRlUkdCQSgoKHN0YXRpY19jYXN0PGludD4oaSkgKiAocmggLSBybykgKyByeSkg
Pj4gMikgKyBybywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoc3RhdGlj
X2Nhc3Q8aW50PihpKSAqIChnaCAtIGdvKSArIGd5KSA+PiAyKSArIGdvLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKChzdGF0aWNfY2FzdDxpbnQ+KGkpICogKGJoIC0gYm8p
ICsgYnkpID4+IDIpICsgYm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
bHBoYVZhbHVlc1tqXVtpXSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjdXJQaXhlbCAr
PSBwaXRjaDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEluZGV4IGZvciBpbmRpdmlkdWFs
LCBkaWZmZXJlbnRpYWwsIEggYW5kIFQgbW9kZXMKKyAgICBzaXplX3QgZ2V0SW5kZXgoc2l6ZV90
IHgsIHNpemVfdCB5KSBjb25zdAorICAgIHsKKyAgICAgICAgc2l6ZV90IGJpdEluZGV4ICA9IHgg
KiA0ICsgeTsKKyAgICAgICAgc2l6ZV90IGJpdE9mZnNldCA9IGJpdEluZGV4ICYgNzsKKyAgICAg
ICAgc2l6ZV90IGxzYiAgICAgICA9ICh1LmlkaHQucGl4ZWxJbmRleExTQlsxIC0gKGJpdEluZGV4
ID4+IDMpXSA+PiBiaXRPZmZzZXQpICYgMTsKKyAgICAgICAgc2l6ZV90IG1zYiAgICAgICA9ICh1
LmlkaHQucGl4ZWxJbmRleE1TQlsxIC0gKGJpdEluZGV4ID4+IDMpXSA+PiBiaXRPZmZzZXQpICYg
MTsKKyAgICAgICAgcmV0dXJuIChtc2IgPDwgMSkgfCBsc2I7CisgICAgfQorCisgICAgdm9pZCBk
ZWNvZGVQdW5jaFRocm91Z2hBbHBoYUJsb2NrKHVpbnQ4X3QgKmRlc3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IHcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
ZGVzdFJvd1BpdGNoKSBjb25zdAorICAgIHsKKyAgICAgICAgdWludDhfdCAqY3VyUGl4ZWwgPSBk
ZXN0OworICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IDQgJiYgKHkgKyBqKSA8IGg7IGor
KykKKyAgICAgICAgeworICAgICAgICAgICAgUjhHOEI4QTggKnJvdyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8UjhHOEI4QTggKj4oY3VyUGl4ZWwpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCA0ICYmICh4ICsgaSkgPCB3OyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgaWYgKGdldEluZGV4KGksIGopID09IDIpICAvLyAgbXNiID09IDEgJiYgbHNiID09IDAKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJvd1tpXSA9IGNyZWF0ZVJHQkEo
MCwgMCwgMCwgMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAg
ICAgY3VyUGl4ZWwgKz0gZGVzdFJvd1BpdGNoOworICAgICAgICB9CisgICAgfQorCisgICAgdWlu
dDE2X3QgUkdCOFRvUkdCNTY1KGNvbnN0IFI4RzhCOEE4ICZyZ2JhKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIChzdGF0aWNfY2FzdDx1aW50MTZfdD4ocmdiYS5SID4+IDMpIDw8IDExKSB8
CisgICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHJnYmEuRyA+PiAyKSA8PCA1
KSB8CisgICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHJnYmEuQiA+PiAzKSA8
PCAwKTsKKyAgICB9CisKKyAgICB1aW50MzJfdCBtYXRjaEJDMUJpdHMoY29uc3QgaW50ICpwaXhl
bEluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAqcGl4ZWxJbmRl
eENvdW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUjhHOEI4QTggKnN1YmJs
b2NrQ29sb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtQ29sb3JzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSOEc4QjhBOCAmbWluQ29sb3IsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFI4RzhCOEE4ICZtYXhDb2xvciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSkgY29uc3QK
KyAgICB7CisgICAgICAgIC8vIFByb2plY3QgZWFjaCBwaXhlbCBvbiB0aGUgKG1heENvbG9yLCBt
aW5Db2xvcikgbGluZSB0byBkZWNpZGUgd2hpY2gKKyAgICAgICAgLy8gQkMxIGNvZGUgdG8gYXNz
aWduIHRvIGl0LgorCisgICAgICAgIHVpbnQ4X3QgZGVjb2RlZENvbG9yc1syXVszXSA9IHt7bWF4
Q29sb3IuUiwgbWF4Q29sb3IuRywgbWF4Q29sb3IuQn0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7bWluQ29sb3IuUiwgbWluQ29sb3IuRywgbWluQ29sb3IuQn19Owor
CisgICAgICAgIGludCBkaXJlY3Rpb25bM107CisgICAgICAgIGZvciAoaW50IGNoID0gMDsgY2gg
PCAzOyBjaCsrKQorICAgICAgICB7CisgICAgICAgICAgICBkaXJlY3Rpb25bY2hdID0gZGVjb2Rl
ZENvbG9yc1swXVtjaF0gLSBkZWNvZGVkQ29sb3JzWzFdW2NoXTsKKyAgICAgICAgfQorCisgICAg
ICAgIGludCBzdG9wc1syXTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN0b3BzW2ldID0gZGVjb2RlZENvbG9yc1tpXVswXSAqIGRp
cmVjdGlvblswXSArIGRlY29kZWRDb2xvcnNbaV1bMV0gKiBkaXJlY3Rpb25bMV0gKworICAgICAg
ICAgICAgICAgICAgICAgICBkZWNvZGVkQ29sb3JzW2ldWzJdICogZGlyZWN0aW9uWzJdOworICAg
ICAgICB9CisKKyAgICAgICAgQVNTRVJUKG51bUNvbG9ycyA8PSBrTnVtUGl4ZWxzSW5CbG9jayk7
CisKKyAgICAgICAgaW50IGVuY29kZWRDb2xvcnNba051bVBpeGVsc0luQmxvY2tdOworICAgICAg
ICBpZiAobm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQ29sb3JzOyBpKyspCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgY29uc3QgaW50IGNvdW50ID0gcGl4ZWxJbmRleENvdW50c1tpXTsKKyAg
ICAgICAgICAgICAgICBpZiAoY291bnQgPiAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gSW4gbm9uLW9wYXF1ZSBtb2RlLCAzIGlzIGZvciB0cmFucGFyZW50IHBp
eGVscy4KKworICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PSBzdWJibG9ja0NvbG9yc1tpXS5B
KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVk
Q29sb3JzW2ldID0gMzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFI4RzhCOEE4ICZwaXhlbCA9IHN1YmJsb2NrQ29sb3JzW2ldOworICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgaW50IGRvdCAgICAgICAgID0gcGl4ZWwuUiAqIGRpcmVjdGlvblswXSAr
IHBpeGVsLkcgKiBkaXJlY3Rpb25bMV0gKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBpeGVsLkIgKiBkaXJlY3Rpb25bMl07CisgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBpbnQgZmFjdG9yID0gZ2w6OmNsYW1wKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PGludD4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChz
dGF0aWNfY2FzdDxmbG9hdD4oZG90IC0gc3RvcHNbMV0pIC8gKHN0b3BzWzBdIC0gc3RvcHNbMV0p
KSAqIDIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjVmKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwLCAyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRj
aCAoZmFjdG9yKQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rl
ZENvbG9yc1tpXSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZW5jb2RlZENvbG9yc1tpXSA9IDI7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbmNvZGVkQ29sb3JzW2ldID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG51bUNvbG9yczsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnN0IGlu
dCBjb3VudCA9IHBpeGVsSW5kZXhDb3VudHNbaV07CisgICAgICAgICAgICAgICAgaWYgKGNvdW50
ID4gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIEluIG9wYXF1
ZSBtb2RlLCB0aGUgY29kZSBpcyBmcm9tIDAgdG8gMy4KKworICAgICAgICAgICAgICAgICAgICBj
b25zdCBSOEc4QjhBOCAmcGl4ZWwgPSBzdWJibG9ja0NvbG9yc1tpXTsKKyAgICAgICAgICAgICAg
ICAgICAgY29uc3QgaW50IGRvdCA9CisgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbC5SICog
ZGlyZWN0aW9uWzBdICsgcGl4ZWwuRyAqIGRpcmVjdGlvblsxXSArIHBpeGVsLkIgKiBkaXJlY3Rp
b25bMl07CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBmYWN0b3IgPSBnbDo6Y2xhbXAo
CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChzdGF0aWNfY2FzdDxmbG9hdD4oZG90IC0gc3RvcHNbMV0pIC8gKHN0
b3BzWzBdIC0gc3RvcHNbMV0pKSAqIDMgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAu
NWYpLAorICAgICAgICAgICAgICAgICAgICAgICAgMCwgMyk7CisgICAgICAgICAgICAgICAgICAg
IHN3aXRjaCAoZmFjdG9yKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlZENvbG9y
c1tpXSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rl
ZENvbG9yc1tpXSA9IDM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZW5jb2RlZENvbG9yc1tpXSA9IDI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZWRDb2xvcnNbaV0g
PSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgdWludDMyX3QgYml0cyA9IDA7CisgICAgICAgIGZvciAoaW50IGkgPSBrTnVtUGl4ZWxz
SW5CbG9jayAtIDE7IGkgPj0gMDsgaS0tKQorICAgICAgICB7CisgICAgICAgICAgICBiaXRzIDw8
PSAyOworICAgICAgICAgICAgYml0cyB8PSBlbmNvZGVkQ29sb3JzW3BpeGVsSW5kaWNlc1tpXV07
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gYml0czsKKyAgICB9CisKKyAgICB2b2lkIHBh
Y2tCQzEodm9pZCAqYmMxLAorICAgICAgICAgICAgICAgICBjb25zdCBpbnQgKnBpeGVsSW5kaWNl
cywKKyAgICAgICAgICAgICAgICAgY29uc3QgaW50ICpwaXhlbEluZGV4Q291bnRzLAorICAgICAg
ICAgICAgICAgICBjb25zdCBSOEc4QjhBOCAqc3ViYmxvY2tDb2xvcnMsCisgICAgICAgICAgICAg
ICAgIHNpemVfdCBudW1Db2xvcnMsCisgICAgICAgICAgICAgICAgIGludCBtaW5Db2xvckluZGV4
LAorICAgICAgICAgICAgICAgICBpbnQgbWF4Q29sb3JJbmRleCwKKyAgICAgICAgICAgICAgICAg
Ym9vbCBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSkgY29uc3QKKyAgICB7CisgICAgICAgIGNv
bnN0IFI4RzhCOEE4ICZtaW5Db2xvciA9IHN1YmJsb2NrQ29sb3JzW21pbkNvbG9ySW5kZXhdOwor
ICAgICAgICBjb25zdCBSOEc4QjhBOCAmbWF4Q29sb3IgPSBzdWJibG9ja0NvbG9yc1ttYXhDb2xv
ckluZGV4XTsKKworICAgICAgICB1aW50MzJfdCBiaXRzOworICAgICAgICB1aW50MTZfdCBtYXgx
NiA9IFJHQjhUb1JHQjU2NShtYXhDb2xvcik7CisgICAgICAgIHVpbnQxNl90IG1pbjE2ID0gUkdC
OFRvUkdCNTY1KG1pbkNvbG9yKTsKKyAgICAgICAgaWYgKG1heDE2ICE9IG1pbjE2KQorICAgICAg
ICB7CisgICAgICAgICAgICAvLyBGaW5kIHRoZSBiZXN0IEJDMSBjb2RlIGZvciBlYWNoIHBpeGVs
CisgICAgICAgICAgICBiaXRzID0gbWF0Y2hCQzFCaXRzKHBpeGVsSW5kaWNlcywgcGl4ZWxJbmRl
eENvdW50cywgc3ViYmxvY2tDb2xvcnMsIG51bUNvbG9ycywgbWluQ29sb3IsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1heENvbG9yLCBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBo
YSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICAvLyBT
YW1lIGNvbG9ycywgQkMxIGluZGV4IDAgaXMgdGhlIGNvbG9yIGluIGJvdGggb3BhcXVlIGFuZCB0
cmFuc3BhcmVudCBtb2RlCisgICAgICAgICAgICBiaXRzID0gMDsKKyAgICAgICAgICAgIC8vIEJD
MSBpbmRleCAzIGlzIHRyYW5zcGFyZW50CisgICAgICAgICAgICBpZiAobm9uT3BhcXVlUHVuY2hU
aHJvdWdoQWxwaGEpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBrTnVtUGl4ZWxzSW5CbG9jazsgaSsrKQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKDAgPT0gc3ViYmxvY2tDb2xvcnNbcGl4ZWxJbmRpY2VzW2ldXS5B
KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBiaXRzIHw9
ICgzIDw8IChpICogMikpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKG1heDE2IDwgbWluMTYp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0ZDo6c3dhcChtYXgxNiwgbWluMTYpOworCisgICAg
ICAgICAgICB1aW50MzJfdCB4b3JNYXNrID0gMDsKKyAgICAgICAgICAgIGlmIChub25PcGFxdWVQ
dW5jaFRocm91Z2hBbHBoYSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBJbiB0
cmFuc3BhcmVudCBtb2RlIHN3aXRjaGluZyB0aGUgY29sb3JzIGlzIGRvaW5nIHRoZQorICAgICAg
ICAgICAgICAgIC8vIGZvbGxvd2luZyBjb2RlIHN3YXA6IDAgPC0+IDEuIDB4QSBzZWxlY3RzIHRo
ZSBzZWNvbmQgYml0IG9mCisgICAgICAgICAgICAgICAgLy8gZWFjaCBjb2RlLCBiaXRzID4+IDEg
c2VsZWN0cyB0aGUgZmlyc3QgYml0IG9mIHRoZSBjb2RlIHdoZW4KKyAgICAgICAgICAgICAgICAv
LyB0aGUgc2Vjb25kcyBiaXQgaXMgc2V0IChjYXNlIDIgYW5kIDMpLiBXZSBpbnZlcnQgYWxsIHRo
ZQorICAgICAgICAgICAgICAgIC8vIG5vbi1zZWxlY3RlZCBiaXRzLCB0aGF0IGlzIHRoZSBmaXJz
dCBiaXQgd2hlbiB0aGUgY29kZSBpcworICAgICAgICAgICAgICAgIC8vIDAgb3IgMS4KKyAgICAg
ICAgICAgICAgICB4b3JNYXNrID0gfigoYml0cyA+PiAxKSB8IDB4QUFBQUFBQUEpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IC8vIEluIG9wYXF1ZSBtb2RlIHN3aXRjaGluZyB0aGUgdHdvIGNvbG9ycyBpcyBkb2luZyB0aGUK
KyAgICAgICAgICAgICAgICAvLyBmb2xsb3dpbmcgY29kZSBzd2FwczogMCA8LT4gMSBhbmQgMiA8
LT4gMy4gVGhpcyBpcworICAgICAgICAgICAgICAgIC8vIGVxdWl2YWxlbnQgdG8gZmxpcHBpbmcg
dGhlIGZpcnN0IGJpdCBvZiBlYWNoIGNvZGUKKyAgICAgICAgICAgICAgICAvLyAoNSA9IDBiMDEw
MSkKKyAgICAgICAgICAgICAgICB4b3JNYXNrID0gMHg1NTU1NTU1NTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJpdHMgXj0geG9yTWFzazsKKyAgICAgICAgfQorCisgICAgICAgIHN0cnVj
dCBCQzFCbG9jaworICAgICAgICB7CisgICAgICAgICAgICB1aW50MTZfdCBjb2xvcjA7CisgICAg
ICAgICAgICB1aW50MTZfdCBjb2xvcjE7CisgICAgICAgICAgICB1aW50MzJfdCBiaXRzOworICAg
ICAgICB9OworCisgICAgICAgIC8vIEVuY29kZSB0aGUgb3BhcXVlbmVzcyBpbiB0aGUgb3JkZXIg
b2YgdGhlIHR3byBCQzEgY29sb3JzCisgICAgICAgIEJDMUJsb2NrICpkZXN0ID0gcmVpbnRlcnBy
ZXRfY2FzdDxCQzFCbG9jayAqPihiYzEpOworICAgICAgICBpZiAobm9uT3BhcXVlUHVuY2hUaHJv
dWdoQWxwaGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlc3QtPmNvbG9yMCA9IG1pbjE2Owor
ICAgICAgICAgICAgZGVzdC0+Y29sb3IxID0gbWF4MTY7CisgICAgICAgIH0KKyAgICAgICAgZWxz
ZQorICAgICAgICB7CisgICAgICAgICAgICBkZXN0LT5jb2xvcjAgPSBtYXgxNjsKKyAgICAgICAg
ICAgIGRlc3QtPmNvbG9yMSA9IG1pbjE2OworICAgICAgICB9CisgICAgICAgIGRlc3QtPmJpdHMg
PSBiaXRzOworICAgIH0KKworICAgIHZvaWQgdHJhbnNjb2RlSW5kaXZpZHVhbEJsb2NrVG9CQzEo
dWludDhfdCAqZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCBhbHBoYVZhbHVlc1s0XVs0
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbm9uT3BhcXVl
UHVuY2hUaHJvdWdoQWxwaGEpIGNvbnN0CisgICAgeworICAgICAgICBjb25zdCBhdXRvICZibG9j
ayA9IHUuaWRodC5tb2RlLmlkbS5jb2xvcnMuaW5kaXY7CisgICAgICAgIGludCByMSAgICAgICAg
ICAgID0gZXh0ZW5kXzR0bzhiaXRzKGJsb2NrLlIxKTsKKyAgICAgICAgaW50IGcxICAgICAgICAg
ICAgPSBleHRlbmRfNHRvOGJpdHMoYmxvY2suRzEpOworICAgICAgICBpbnQgYjEgICAgICAgICAg
ICA9IGV4dGVuZF80dG84Yml0cyhibG9jay5CMSk7CisgICAgICAgIGludCByMiAgICAgICAgICAg
ID0gZXh0ZW5kXzR0bzhiaXRzKGJsb2NrLlIyKTsKKyAgICAgICAgaW50IGcyICAgICAgICAgICAg
PSBleHRlbmRfNHRvOGJpdHMoYmxvY2suRzIpOworICAgICAgICBpbnQgYjIgICAgICAgICAgICA9
IGV4dGVuZF80dG84Yml0cyhibG9jay5CMik7CisgICAgICAgIHRyYW5zY29kZUluZGl2aWR1YWxP
ckRpZmZlcmVudGlhbEJsb2NrVG9CQzEoZGVzdCwgeCwgeSwgdywgaCwgcjEsIGcxLCBiMSwgcjIs
IGcyLCBiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhbHBoYVZhbHVlcywgbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpOworICAgIH0KKwor
ICAgIHZvaWQgdHJhbnNjb2RlRGlmZmVyZW50aWFsQmxvY2tUb0JDMSh1aW50OF90ICpkZXN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB3LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCBhbHBoYVZhbHVlc1s0XVs0XSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBub25PcGFxdWVQdW5j
aFRocm91Z2hBbHBoYSkgY29uc3QKKyAgICB7CisgICAgICAgIGNvbnN0IGF1dG8gJmJsb2NrID0g
dS5pZGh0Lm1vZGUuaWRtLmNvbG9ycy5kaWZmOworICAgICAgICBpbnQgYjEgICAgICAgICAgICA9
IGV4dGVuZF81dG84Yml0cyhibG9jay5CKTsKKyAgICAgICAgaW50IGcxICAgICAgICAgICAgPSBl
eHRlbmRfNXRvOGJpdHMoYmxvY2suRyk7CisgICAgICAgIGludCByMSAgICAgICAgICAgID0gZXh0
ZW5kXzV0bzhiaXRzKGJsb2NrLlIpOworICAgICAgICBpbnQgcjIgICAgICAgICAgICA9IGV4dGVu
ZF81dG84Yml0cyhibG9jay5SICsgYmxvY2suZFIpOworICAgICAgICBpbnQgZzIgICAgICAgICAg
ICA9IGV4dGVuZF81dG84Yml0cyhibG9jay5HICsgYmxvY2suZEcpOworICAgICAgICBpbnQgYjIg
ICAgICAgICAgICA9IGV4dGVuZF81dG84Yml0cyhibG9jay5CICsgYmxvY2suZEIpOworICAgICAg
ICB0cmFuc2NvZGVJbmRpdmlkdWFsT3JEaWZmZXJlbnRpYWxCbG9ja1RvQkMxKGRlc3QsIHgsIHks
IHcsIGgsIHIxLCBnMSwgYjEsIHIyLCBnMiwgYjIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFWYWx1ZXMsIG5vbk9wYXF1ZVB1bmNoVGhy
b3VnaEFscGhhKTsKKyAgICB9CisKKyAgICB2b2lkIGV4dHJhY3RQaXhlbEluZGljZXMoaW50ICpw
aXhlbEluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqcGl4ZWxJbmRp
Y2VzQ291bnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCB3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmbGlwYml0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3Qgc3ViYmxvY2tJZHgpIGNvbnN0CisgICAgeworICAgICAg
ICBzaXplX3QgZHhCZWdpbiA9IDA7CisgICAgICAgIHNpemVfdCBkeEVuZCAgID0gNDsKKyAgICAg
ICAgc2l6ZV90IGR5QmVnaW4gPSBzdWJibG9ja0lkeCAqIDI7CisgICAgICAgIHNpemVfdCBkeUVu
ZCAgID0gZHlCZWdpbiArIDI7CisgICAgICAgIGlmICghZmxpcGJpdCkKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RkOjpzd2FwKGR4QmVnaW4sIGR5QmVnaW4pOworICAgICAgICAgICAgc3RkOjpz
d2FwKGR4RW5kLCBkeUVuZCk7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHNpemVfdCBqID0g
ZHlCZWdpbjsgaiA8IGR5RW5kOyBqKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGludCAqcm93
ID0gJnBpeGVsSW5kaWNlc1tqICogNF07CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gZHhC
ZWdpbjsgaSA8IGR4RW5kOyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29u
c3Qgc2l6ZV90IHBpeGVsSW5kZXggPSBzdWJibG9ja0lkeCAqIDQgKyBnZXRJbmRleChpLCBqKTsK
KyAgICAgICAgICAgICAgICByb3dbaV0gICAgICAgICAgICAgICAgICA9IHN0YXRpY19jYXN0PGlu
dD4ocGl4ZWxJbmRleCk7CisgICAgICAgICAgICAgICAgcGl4ZWxJbmRpY2VzQ291bnRzW3BpeGVs
SW5kZXhdKys7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHNl
bGVjdEVuZFBvaW50UENBKGNvbnN0IGludCAqcGl4ZWxJbmRleENvdW50cywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFI4RzhCOEE4ICpzdWJibG9ja0NvbG9ycywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBudW1Db2xvcnMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgKm1pbkNvbG9ySW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgKm1heENvbG9ySW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICAvLyBkZXRlcm1pbmUgY29s
b3IgZGlzdHJpYnV0aW9uCisgICAgICAgIGludCBtdVszXSwgbWluWzNdLCBtYXhbM107CisgICAg
ICAgIGZvciAoaW50IGNoID0gMDsgY2ggPCAzOyBjaCsrKQorICAgICAgICB7CisgICAgICAgICAg
ICBpbnQgbXV2ICA9IDA7CisgICAgICAgICAgICBpbnQgbWludiA9IDI1NTsKKyAgICAgICAgICAg
IGludCBtYXh2ID0gMDsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQ29s
b3JzOyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc3QgaW50IGNvdW50
ID0gcGl4ZWxJbmRleENvdW50c1tpXTsKKyAgICAgICAgICAgICAgICBpZiAoY291bnQgPiAwKQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgYXV0byAmcGl4ZWwg
PSBzdWJibG9ja0NvbG9yc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBpeGVsLkEgPiAw
KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb24t
dHJhbnNwYXJlbnQgcGl4ZWxzCisgICAgICAgICAgICAgICAgICAgICAgICBtdXYgKz0gKCZwaXhl
bC5SKVtjaF0gKiBjb3VudDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbnYgPSBzdGQ6Om1p
bjxpbnQ+KG1pbnYsICgmcGl4ZWwuUilbY2hdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1h
eHYgPSBzdGQ6Om1heDxpbnQ+KG1heHYsICgmcGl4ZWwuUilbY2hdKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
bXVbY2hdICA9IChtdXYgKyBrTnVtUGl4ZWxzSW5CbG9jayAvIDIpIC8ga051bVBpeGVsc0luQmxv
Y2s7CisgICAgICAgICAgICBtaW5bY2hdID0gbWludjsKKyAgICAgICAgICAgIG1heFtjaF0gPSBt
YXh2OworICAgICAgICB9CisKKyAgICAgICAgLy8gZGV0ZXJtaW5lIGNvdmFyaWFuY2UgbWF0cml4
CisgICAgICAgIGludCBjb3ZbNl0gPSB7MCwgMCwgMCwgMCwgMCwgMH07CisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbnVtQ29sb3JzOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAg
IGNvbnN0IGludCBjb3VudCA9IHBpeGVsSW5kZXhDb3VudHNbaV07CisgICAgICAgICAgICBpZiAo
Y291bnQgPiAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8gJnBp
eGVsID0gc3ViYmxvY2tDb2xvcnNbaV07CisgICAgICAgICAgICAgICAgaWYgKHBpeGVsLkEgPiAw
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IHIgPSBwaXhlbC5S
IC0gbXVbMF07CisgICAgICAgICAgICAgICAgICAgIGludCBnID0gcGl4ZWwuRyAtIG11WzFdOwor
ICAgICAgICAgICAgICAgICAgICBpbnQgYiA9IHBpeGVsLkIgLSBtdVsyXTsKKworICAgICAgICAg
ICAgICAgICAgICBjb3ZbMF0gKz0gciAqIHIgKiBjb3VudDsKKyAgICAgICAgICAgICAgICAgICAg
Y292WzFdICs9IHIgKiBnICogY291bnQ7CisgICAgICAgICAgICAgICAgICAgIGNvdlsyXSArPSBy
ICogYiAqIGNvdW50OworICAgICAgICAgICAgICAgICAgICBjb3ZbM10gKz0gZyAqIGcgKiBjb3Vu
dDsKKyAgICAgICAgICAgICAgICAgICAgY292WzRdICs9IGcgKiBiICogY291bnQ7CisgICAgICAg
ICAgICAgICAgICAgIGNvdls1XSArPSBiICogYiAqIGNvdW50OworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFBvd2VyIGl0ZXJhdGlvbiBh
bGdvcml0aG0gdG8gZ2V0IHRoZSBlaWdlbnZhbHVlcyBhbmQgZWlnZW52ZWN0b3IKKworICAgICAg
ICAvLyBTdGFydHMgd2l0aCBkaWFnb25hbCB2ZWN0b3IKKyAgICAgICAgZmxvYXQgdmZyID0gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KG1heFswXSAtIG1pblswXSk7CisgICAgICAgIGZsb2F0IHZmZyA9IHN0
YXRpY19jYXN0PGZsb2F0PihtYXhbMV0gLSBtaW5bMV0pOworICAgICAgICBmbG9hdCB2ZmIgPSBz
dGF0aWNfY2FzdDxmbG9hdD4obWF4WzJdIC0gbWluWzJdKTsKKyAgICAgICAgZmxvYXQgZWlnZW52
YWx1ZTsKKworICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtQb3dlckl0ZXJhdGlvbnMgPSA0
OworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtQb3dlckl0ZXJhdGlvbnM7IGkrKykK
KyAgICAgICAgeworICAgICAgICAgICAgZmxvYXQgciA9IHZmciAqIGNvdlswXSArIHZmZyAqIGNv
dlsxXSArIHZmYiAqIGNvdlsyXTsKKyAgICAgICAgICAgIGZsb2F0IGcgPSB2ZnIgKiBjb3ZbMV0g
KyB2ZmcgKiBjb3ZbM10gKyB2ZmIgKiBjb3ZbNF07CisgICAgICAgICAgICBmbG9hdCBiID0gdmZy
ICogY292WzJdICsgdmZnICogY292WzRdICsgdmZiICogY292WzVdOworCisgICAgICAgICAgICB2
ZnIgPSByOworICAgICAgICAgICAgdmZnID0gZzsKKyAgICAgICAgICAgIHZmYiA9IGI7CisKKyAg
ICAgICAgICAgIGVpZ2VudmFsdWUgPSBzcXJ0KHIgKiByICsgZyAqIGcgKyBiICogYik7CisgICAg
ICAgICAgICBpZiAoZWlnZW52YWx1ZSA+IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgZmxvYXQgaW52Tm9ybSA9IDEuMGYgLyBlaWdlbnZhbHVlOworICAgICAgICAgICAgICAgIHZm
ciAqPSBpbnZOb3JtOworICAgICAgICAgICAgICAgIHZmZyAqPSBpbnZOb3JtOworICAgICAgICAg
ICAgICAgIHZmYiAqPSBpbnZOb3JtOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgaW50IHZyLCB2ZywgdmI7CisKKyAgICAgICAgc3RhdGljIGNvbnN0IGZsb2F0IGtEZWZhdWx0
THVtaW5hbmNlVGhyZXNob2xkID0gNC4wZiAqIDI1NTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGZs
b2F0IGtRdWFudGl6ZVJhbmdlICAgICAgICAgICAgID0gNTEyLjBmOworICAgICAgICBpZiAoZWln
ZW52YWx1ZSA8IGtEZWZhdWx0THVtaW5hbmNlVGhyZXNob2xkKSAgLy8gdG9vIHNtYWxsLCBkZWZh
dWx0IHRvIGx1bWluYW5jZQorICAgICAgICB7CisgICAgICAgICAgICAvLyBMdW1pbmFuY2Ugd2Vp
Z2h0cyBkZWZpbmVkIGJ5IElUVS1SIFJlY29tbWVuZGF0aW9uIEJULjYwMSwgc2NhbGVkIGJ5IDEw
MDAKKyAgICAgICAgICAgIHZyID0gMjk5OworICAgICAgICAgICAgdmcgPSA1ODc7CisgICAgICAg
ICAgICB2YiA9IDExNDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAg
ICAgICAgIC8vIEZyb20gdGhlIGVpZ2VudmFsdWUgYW5kIGVpZ2VudmVjdG9yLCBjaG9vc2UgdGhl
IGF4aXMgdG8gcHJvamVjdAorICAgICAgICAgICAgLy8gY29sb3JzIG9uLiBXaGVuIHByb2plY3Rp
bmcgY29sb3JzIHdlIHdhbnQgdG8gZG8gaW50ZWdlciBjb21wdXRhdGlvbnMKKyAgICAgICAgICAg
IC8vIGZvciBzcGVlZCwgc28gd2Ugbm9ybWFsaXplIHRoZSBlaWdlbnZlY3RvciB0byB0aGUgWzAs
IDUxMl0gcmFuZ2UuCisgICAgICAgICAgICBmbG9hdCBtYWduID0gc3RkOjptYXgoc3RkOjptYXgo
c3RkOjphYnModmZyKSwgc3RkOjphYnModmZnKSksIHN0ZDo6YWJzKHZmYikpOworICAgICAgICAg
ICAgbWFnbiAgICAgICA9IGtRdWFudGl6ZVJhbmdlIC8gbWFnbjsKKyAgICAgICAgICAgIHZyICAg
ICAgICAgPSBzdGF0aWNfY2FzdDxpbnQ+KHZmciAqIG1hZ24pOworICAgICAgICAgICAgdmcgICAg
ICAgICA9IHN0YXRpY19jYXN0PGludD4odmZnICogbWFnbik7CisgICAgICAgICAgICB2YiAgICAg
ICAgID0gc3RhdGljX2Nhc3Q8aW50Pih2ZmIgKiBtYWduKTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIFBpY2sgY29sb3JzIGF0IGV4dHJlbWUgcG9pbnRzCisgICAgICAgIGludCBtaW5EICAgICAg
ICA9IElOVF9NQVg7CisgICAgICAgIGludCBtYXhEICAgICAgICA9IDA7CisgICAgICAgIHNpemVf
dCBtaW5JbmRleCA9IDA7CisgICAgICAgIHNpemVfdCBtYXhJbmRleCA9IDA7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQ29sb3JzOyBpKyspCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGNvbnN0IGludCBjb3VudCA9IHBpeGVsSW5kZXhDb3VudHNbaV07CisgICAgICAgICAgICBp
ZiAoY291bnQgPiAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8g
JnBpeGVsID0gc3ViYmxvY2tDb2xvcnNbaV07CisgICAgICAgICAgICAgICAgaWYgKHBpeGVsLkEg
PiAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IGRvdCA9IHBp
eGVsLlIgKiB2ciArIHBpeGVsLkcgKiB2ZyArIHBpeGVsLkIgKiB2YjsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGRvdCA8IG1pbkQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1pbkQgICAgID0gZG90OworICAgICAgICAgICAgICAgICAgICAgICAgbWlu
SW5kZXggPSBpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlm
IChkb3QgPiBtYXhEKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtYXhEICAgICA9IGRvdDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heEluZGV4ID0g
aTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgICptaW5Db2xvckluZGV4ID0gc3RhdGljX2Nhc3Q8aW50
PihtaW5JbmRleCk7CisgICAgICAgICptYXhDb2xvckluZGV4ID0gc3RhdGljX2Nhc3Q8aW50Piht
YXhJbmRleCk7CisgICAgfQorCisgICAgdm9pZCB0cmFuc2NvZGVJbmRpdmlkdWFsT3JEaWZmZXJl
bnRpYWxCbG9ja1RvQkMxKHVpbnQ4X3QgKmRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBo
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgcjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBnMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgcjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBnMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGIyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90IGFscGhhVmFsdWVzWzRd
WzRdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhhKSBjb25zdAorICAgIHsKKyAgICAgICAg
Ly8gQSBCQzEgYmxvY2sgaGFzIDIgZW5kcG9pbnRzLCBwaXhlbHMgaXMgZW5jb2RlZCBhcyBsaW5l
YXIKKyAgICAgICAgLy8gaW50ZXJwb2xhdGlvbnMgb2YgdGhlbS4gQSBFVEMxL0VUQzIgaW5kaXZp
ZHVhbCBvciBkaWZmZXJlbnRpYWwgYmxvY2sKKyAgICAgICAgLy8gaGFzIDIgc3ViYmxvY2tzLiBF
YWNoIHN1YmJsb2NrIGhhcyBvbmUgY29sb3IgYW5kIGEgbW9kaWZpZXIuIFdlCisgICAgICAgIC8v
IHNlbGVjdCBheGlzIGJ5IHByaW5jaXBhbCBjb21wb25lbnQgYW5hbHlzaXMgKFBDQSkgdG8gdXNl
IGFzCisgICAgICAgIC8vIG91ciB0d28gQkMxIGVuZHBvaW50cyBhbmQgdGhlbiBtYXAgcGl4ZWxz
IHRvIEJDMSBieSBwcm9qZWN0aW5nIG9uIHRoZQorICAgICAgICAvLyBsaW5lIGJldHdlZW4gdGhl
IHR3byBlbmRwb2ludHMgYW5kIGNob29zaW5nIHRoZSByaWdodCBmcmFjdGlvbi4KKworICAgICAg
ICAvLyBUaGUgZ29hbCBvZiB0aGlzIGFsZ29yaXRobSBpcyBtYWtlIGl0IGZhc3RlciB0aGFuIGRl
Y29kZSBFVEMgdG8gUkdCcworICAgICAgICAvLyAgIGFuZCB0aGVuIGVuY29kZSB0byBCQy4gVG8g
YWNoaWV2ZSB0aGlzLCB3ZSBvbmx5IGV4dHJhY3Qgc3ViYmxvY2sKKyAgICAgICAgLy8gICBjb2xv
cnMsIHBpeGVsIGluZGljZXMsIGFuZCBjb3VudHMgb2YgZWFjaCBwaXhlbCBpbmRpY2VzIGZyb20g
RVRDLgorICAgICAgICAvLyAgIFdpdGggdGhvc2UgaW5mb3JtYXRpb24sIHdlIGNhbiBvbmx5IGVu
Y29kZSB1c2VkIHN1YmJsb2NrIGNvbG9ycworICAgICAgICAvLyAgIHRvIEJDMSwgYW5kIGNvcHkg
dGhlIGJpdHMgdG8gdGhlIHJpZ2h0IHBpeGVscy4KKyAgICAgICAgLy8gRnVsbHkgZGVjb2RlIGFu
ZCBlbmNvZGUgbmVlZCB0byBwcm9jZXNzIDE2IFJHQkEgcGl4ZWxzLiBXaXRoIHRoaXMKKyAgICAg
ICAgLy8gICBhbGdvcml0aG0sIGl0J3MgOCBwaXhlbHMgYXQgbWF4aW11bSBmb3IgYSBpbmRpdmlk
dWFsIG9yCisgICAgICAgIC8vICAgZGlmZmVyZW50aWFsIGJsb2NrLiBTYXZlcyB1cyBiYW5kd2lk
dGggYW5kIGNvbXB1dGF0aW9ucy4KKworICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtOdW1D
b2xvcnMgPSA4OworCisgICAgICAgIGNvbnN0IGF1dG8gaW50ZW5zaXR5TW9kaWZpZXIgPQorICAg
ICAgICAgICAgbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEgPyBpbnRlbnNpdHlNb2RpZmllck5v
bk9wYXF1ZSA6IGludGVuc2l0eU1vZGlmaWVyRGVmYXVsdDsKKworICAgICAgICAvLyBDb21wdXRl
IHRoZSBjb2xvcnMgdGhhdCBwaXhlbHMgY2FuIGhhdmUgaW4gZWFjaCBzdWJibG9jayBib3RoIGZv
cgorICAgICAgICAvLyB0aGUgZGVjb2Rpbmcgb2YgdGhlIFJHQkEgZGF0YSBhbmQgQkMxIGVuY29k
aW5nCisgICAgICAgIFI4RzhCOEE4IHN1YmJsb2NrQ29sb3JzW2tOdW1Db2xvcnNdOworICAgICAg
ICBmb3IgKHNpemVfdCBtb2RpZmllcklkeCA9IDA7IG1vZGlmaWVySWR4IDwgNDsgbW9kaWZpZXJJ
ZHgrKykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFs
cGhhICYmIChtb2RpZmllcklkeCA9PSAyKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAvLyBJbiBFVEMgb3BhcXVlIHB1bmNoIHRocm91Z2ggZm9ybWF0cywgaW5kaXZpZHVhbCBhbmQK
KyAgICAgICAgICAgICAgICAvLyBkaWZmZXJlbnRpYWwgYmxvY2tzIHRha2UgaW5kZXggMiBhcyB0
cmFuc3BhcmVudCBwaXhlbC4KKyAgICAgICAgICAgICAgICAvLyBUaHVzIHdlIGRvbid0IG5lZWQg
dG8gY29tcHV0ZSBpdHMgY29sb3IsIGp1c3QgYXNzaWduIGl0CisgICAgICAgICAgICAgICAgLy8g
YXMgYmxhY2suCisgICAgICAgICAgICAgICAgc3ViYmxvY2tDb2xvcnNbbW9kaWZpZXJJZHhdICAg
ICA9IGNyZWF0ZVJHQkEoMCwgMCwgMCwgMCk7CisgICAgICAgICAgICAgICAgc3ViYmxvY2tDb2xv
cnNbNCArIG1vZGlmaWVySWR4XSA9IGNyZWF0ZVJHQkEoMCwgMCwgMCwgMCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29u
c3QgaW50IGkxICAgICAgICAgICAgICAgID0gaW50ZW5zaXR5TW9kaWZpZXJbdS5pZGh0Lm1vZGUu
aWRtLmN3MV1bbW9kaWZpZXJJZHhdOworICAgICAgICAgICAgICAgIHN1YmJsb2NrQ29sb3JzW21v
ZGlmaWVySWR4XSA9IGNyZWF0ZVJHQkEocjEgKyBpMSwgZzEgKyBpMSwgYjEgKyBpMSk7CisKKyAg
ICAgICAgICAgICAgICBjb25zdCBpbnQgaTIgPSBpbnRlbnNpdHlNb2RpZmllclt1LmlkaHQubW9k
ZS5pZG0uY3cyXVttb2RpZmllcklkeF07CisgICAgICAgICAgICAgICAgc3ViYmxvY2tDb2xvcnNb
NCArIG1vZGlmaWVySWR4XSA9IGNyZWF0ZVJHQkEocjIgKyBpMiwgZzIgKyBpMiwgYjIgKyBpMik7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpbnQgcGl4ZWxJbmRpY2VzW2tO
dW1QaXhlbHNJbkJsb2NrXTsKKyAgICAgICAgaW50IHBpeGVsSW5kZXhDb3VudHNba051bUNvbG9y
c10gPSB7MH07CisgICAgICAgIC8vIEV4dHJhY3QgcGl4ZWwgaW5kaWNlcyBmcm9tIGEgRVRDIGJs
b2NrLgorICAgICAgICBmb3IgKHNpemVfdCBibG9ja0lkeCA9IDA7IGJsb2NrSWR4IDwgMjsgYmxv
Y2tJZHgrKykKKyAgICAgICAgeworICAgICAgICAgICAgZXh0cmFjdFBpeGVsSW5kaWNlcyhwaXhl
bEluZGljZXMsIHBpeGVsSW5kZXhDb3VudHMsIHgsIHksIHcsIGgsIHUuaWRodC5tb2RlLmlkbS5m
bGlwYml0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja0lkeCk7CisgICAg
ICAgIH0KKworICAgICAgICBpbnQgbWluQ29sb3JJbmRleCwgbWF4Q29sb3JJbmRleDsKKyAgICAg
ICAgc2VsZWN0RW5kUG9pbnRQQ0EocGl4ZWxJbmRleENvdW50cywgc3ViYmxvY2tDb2xvcnMsIGtO
dW1Db2xvcnMsICZtaW5Db2xvckluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAmbWF4
Q29sb3JJbmRleCk7CisKKyAgICAgICAgcGFja0JDMShkZXN0LCBwaXhlbEluZGljZXMsIHBpeGVs
SW5kZXhDb3VudHMsIHN1YmJsb2NrQ29sb3JzLCBrTnVtQ29sb3JzLCBtaW5Db2xvckluZGV4LAor
ICAgICAgICAgICAgICAgIG1heENvbG9ySW5kZXgsIG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhh
KTsKKyAgICB9CisKKyAgICB2b2lkIHRyYW5zY29kZVRCbG9ja1RvQkMxKHVpbnQ4X3QgKmRlc3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IHcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgYWxwaGFWYWx1ZXNbNF1bNF0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIG5vbk9wYXF1ZVB1bmNoVGhyb3Vn
aEFscGhhKSBjb25zdAorICAgIHsKKyAgICAgICAgLy8gVE9ETyAobWdvbmcpOiBXaWxsIGJlIGlt
cGxlbWVudGVkIHNvb24KKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0KKworICAgIHZv
aWQgdHJhbnNjb2RlSEJsb2NrVG9CQzEodWludDhfdCAqZGVzdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdWludDhfdCBhbHBoYVZhbHVlc1s0XVs0XSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpIGNvbnN0CisgICAg
eworICAgICAgICAvLyBUT0RPIChtZ29uZyk6IFdpbGwgYmUgaW1wbGVtZW50ZWQgc29vbgorICAg
ICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQorCisgICAgdm9pZCB0cmFuc2NvZGVQbGFuYXJC
bG9ja1RvQkMxKHVpbnQ4X3QgKmRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90IGFscGhhVmFsdWVzWzRdWzRdKSBjb25zdAor
ICAgIHsKKyAgICAgICAgLy8gVE9ETyAobWdvbmcpOiBXaWxsIGJlIGltcGxlbWVudGVkIHNvb24K
KyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0KKworICAgIC8vIFNpbmdsZSBjaGFubmVs
IHV0aWxpdHkgZnVuY3Rpb25zCisgICAgaW50IGdldFNpbmdsZUNoYW5uZWwoc2l6ZV90IHgsIHNp
emVfdCB5LCBib29sIGlzU2lnbmVkKSBjb25zdAorICAgIHsKKyAgICAgICAgaW50IGNvZGV3b3Jk
ID0gaXNTaWduZWQgPyB1LnNjYmxrLmJhc2VfY29kZXdvcmQucyA6IHUuc2NibGsuYmFzZV9jb2Rl
d29yZC51czsKKyAgICAgICAgcmV0dXJuIGNvZGV3b3JkICsgZ2V0U2luZ2xlQ2hhbm5lbE1vZGlm
aWVyKHgsIHkpICogdS5zY2Jsay5tdWx0aXBsaWVyOworICAgIH0KKworICAgIGludCBnZXRTaW5n
bGVDaGFubmVsSW5kZXgoc2l6ZV90IHgsIHNpemVfdCB5KSBjb25zdAorICAgIHsKKyAgICAgICAg
QVNTRVJUKHggPCA0ICYmIHkgPCA0KTsKKworICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisg
ICAgICAgIHN3aXRjaCAoeCAqIDQgKyB5KQorICAgICAgICB7CisgICAgICAgICAgICBjYXNlIDA6
IHJldHVybiB1LnNjYmxrLm1hOworICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gdS5zY2Jsay5t
YjsKKyAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIHUuc2NibGsubWMxIDw8IDEgfCB1LnNjYmxr
Lm1jMjsKKyAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuIHUuc2NibGsubWQ7CisgICAgICAgICAg
ICBjYXNlIDQ6IHJldHVybiB1LnNjYmxrLm1lOworICAgICAgICAgICAgY2FzZSA1OiByZXR1cm4g
dS5zY2Jsay5tZjEgPDwgMiB8IHUuc2NibGsubWYyOworICAgICAgICAgICAgY2FzZSA2OiByZXR1
cm4gdS5zY2Jsay5tZzsKKyAgICAgICAgICAgIGNhc2UgNzogcmV0dXJuIHUuc2NibGsubWg7Cisg
ICAgICAgICAgICBjYXNlIDg6IHJldHVybiB1LnNjYmxrLm1pOworICAgICAgICAgICAgY2FzZSA5
OiByZXR1cm4gdS5zY2Jsay5tajsKKyAgICAgICAgICAgIGNhc2UgMTA6IHJldHVybiB1LnNjYmxr
Lm1rMSA8PCAxIHwgdS5zY2Jsay5tazI7CisgICAgICAgICAgICBjYXNlIDExOiByZXR1cm4gdS5z
Y2Jsay5tbDsKKyAgICAgICAgICAgIGNhc2UgMTI6IHJldHVybiB1LnNjYmxrLm1tOworICAgICAg
ICAgICAgY2FzZSAxMzogcmV0dXJuIHUuc2NibGsubW4xIDw8IDIgfCB1LnNjYmxrLm1uMjsKKyAg
ICAgICAgICAgIGNhc2UgMTQ6IHJldHVybiB1LnNjYmxrLm1vOworICAgICAgICAgICAgY2FzZSAx
NTogcmV0dXJuIHUuc2NibGsubXA7CisgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgp
OyByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb24KKyAgICB9
CisKKyAgICBpbnQgZ2V0U2luZ2xlQ2hhbm5lbE1vZGlmaWVyKHNpemVfdCB4LCBzaXplX3QgeSkg
Y29uc3QKKyAgICB7CisgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgICAgICAgc3RhdGlj
IGNvbnN0IGludCBtb2RpZmllclRhYmxlWzE2XVs4XSA9CisgICAgICAgIHsKKyAgICAgICAgICAg
IHsgLTMsIC02LCAgLTksIC0xNSwgMiwgNSwgOCwgMTQgfSwKKyAgICAgICAgICAgIHsgLTMsIC03
LCAtMTAsIC0xMywgMiwgNiwgOSwgMTIgfSwKKyAgICAgICAgICAgIHsgLTIsIC01LCAgLTgsIC0x
MywgMSwgNCwgNywgMTIgfSwKKyAgICAgICAgICAgIHsgLTIsIC00LCAgLTYsIC0xMywgMSwgMywg
NSwgMTIgfSwKKyAgICAgICAgICAgIHsgLTMsIC02LCAgLTgsIC0xMiwgMiwgNSwgNywgMTEgfSwK
KyAgICAgICAgICAgIHsgLTMsIC03LCAgLTksIC0xMSwgMiwgNiwgOCwgMTAgfSwKKyAgICAgICAg
ICAgIHsgLTQsIC03LCAgLTgsIC0xMSwgMywgNiwgNywgMTAgfSwKKyAgICAgICAgICAgIHsgLTMs
IC01LCAgLTgsIC0xMSwgMiwgNCwgNywgMTAgfSwKKyAgICAgICAgICAgIHsgLTIsIC02LCAgLTgs
IC0xMCwgMSwgNSwgNywgIDkgfSwKKyAgICAgICAgICAgIHsgLTIsIC01LCAgLTgsIC0xMCwgMSwg
NCwgNywgIDkgfSwKKyAgICAgICAgICAgIHsgLTIsIC00LCAgLTgsIC0xMCwgMSwgMywgNywgIDkg
fSwKKyAgICAgICAgICAgIHsgLTIsIC01LCAgLTcsIC0xMCwgMSwgNCwgNiwgIDkgfSwKKyAgICAg
ICAgICAgIHsgLTMsIC00LCAgLTcsIC0xMCwgMiwgMywgNiwgIDkgfSwKKyAgICAgICAgICAgIHsg
LTEsIC0yLCAgLTMsIC0xMCwgMCwgMSwgMiwgIDkgfSwKKyAgICAgICAgICAgIHsgLTQsIC02LCAg
LTgsICAtOSwgMywgNSwgNywgIDggfSwKKyAgICAgICAgICAgIHsgLTMsIC01LCAgLTcsICAtOSwg
MiwgNCwgNiwgIDggfQorICAgICAgICB9OworICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb24KKwor
ICAgICAgICByZXR1cm4gbW9kaWZpZXJUYWJsZVt1LnNjYmxrLnRhYmxlX2luZGV4XVtnZXRTaW5n
bGVDaGFubmVsSW5kZXgoeCwgeSldOworICAgIH0KK307CisKKy8vIGNsYW5nLWZvcm1hdCBvZmYK
K3N0YXRpYyBjb25zdCB1aW50OF90IERlZmF1bHRFVENBbHBoYVZhbHVlc1s0XVs0XSA9Cit7Cisg
ICAgeyAyNTUsIDI1NSwgMjU1LCAyNTUgfSwKKyAgICB7IDI1NSwgMjU1LCAyNTUsIDI1NSB9LAor
ICAgIHsgMjU1LCAyNTUsIDI1NSwgMjU1IH0sCisgICAgeyAyNTUsIDI1NSwgMjU1LCAyNTUgfSwK
K307CisvLyBjbGFuZy1mb3JtYXQgb24KKwordm9pZCBMb2FkUjExRUFDVG9SOChzaXplX3Qgd2lk
dGgsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5w
dXQsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICB1
aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRj
aCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gsCisgICAgICAg
ICAgICAgICAgICAgIGJvb2wgaXNTaWduZWQpCit7CisgICAgZm9yIChzaXplX3QgeiA9IDA7IHog
PCBkZXB0aDsgeisrKQorICAgIHsKKyAgICAgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWln
aHQ7IHkgKz0gNCkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgRVRDMkJsb2NrICpzb3Vy
Y2VSb3cgPQorICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2ludGVyPEVUQzJCbG9j
az4oaW5wdXQsIHkgLyA0LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOworICAg
ICAgICAgICAgdWludDhfdCAqZGVzdFJvdyA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0
RGF0YVBvaW50ZXI8dWludDhfdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0
RGVwdGhQaXRjaCk7CisKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7
IHggKz0gNCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdCBFVEMyQmxvY2sg
KnNvdXJjZUJsb2NrID0gc291cmNlUm93ICsgKHggLyA0KTsKKyAgICAgICAgICAgICAgICB1aW50
OF90ICpkZXN0UGl4ZWxzICAgICAgICAgID0gZGVzdFJvdyArIHg7CisKKyAgICAgICAgICAgICAg
ICBzb3VyY2VCbG9jay0+ZGVjb2RlQXNTaW5nbGVDaGFubmVsKGRlc3RQaXhlbHMsIHgsIHksIHdp
ZHRoLCBoZWlnaHQsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvdXRwdXRSb3dQaXRjaCwgaXNTaWduZWQpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorfQorCit2b2lkIExvYWRSRzExRUFDVG9SRzgoc2l6ZV90IHdpZHRoLAor
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlu
cHV0LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAg
ICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRw
dXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRj
aCwKKyAgICAgICAgICAgICAgICAgICAgICBib29sIGlzU2lnbmVkKQoreworICAgIGZvciAoc2l6
ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IHkg
PSAwOyB5IDwgaGVpZ2h0OyB5ICs9IDQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IEVU
QzJCbG9jayAqc291cmNlUm93ID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9p
bnRlcjxFVEMyQmxvY2s+KGlucHV0LCB5IC8gNCwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0
aFBpdGNoKTsKKyAgICAgICAgICAgIHVpbnQ4X3QgKmRlc3RSb3cgPQorICAgICAgICAgICAgICAg
IHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93
UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOworCisgICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0g
MDsgeCA8IHdpZHRoOyB4ICs9IDQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdWlu
dDhfdCAqZGVzdFBpeGVsc1JlZCAgICAgICAgICA9IGRlc3RSb3cgKyAoeCAqIDIpOworICAgICAg
ICAgICAgICAgIGNvbnN0IEVUQzJCbG9jayAqc291cmNlQmxvY2tSZWQgPSBzb3VyY2VSb3cgKyAo
eCAvIDIpOworICAgICAgICAgICAgICAgIHNvdXJjZUJsb2NrUmVkLT5kZWNvZGVBc1NpbmdsZUNo
YW5uZWwoZGVzdFBpeGVsc1JlZCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgMiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFJvd1BpdGNo
LCBpc1NpZ25lZCk7CisKKyAgICAgICAgICAgICAgICB1aW50OF90ICpkZXN0UGl4ZWxzR3JlZW4g
ICAgICAgICAgPSBkZXN0UGl4ZWxzUmVkICsgMTsKKyAgICAgICAgICAgICAgICBjb25zdCBFVEMy
QmxvY2sgKnNvdXJjZUJsb2NrR3JlZW4gPSBzb3VyY2VCbG9ja1JlZCArIDE7CisgICAgICAgICAg
ICAgICAgc291cmNlQmxvY2tHcmVlbi0+ZGVjb2RlQXNTaW5nbGVDaGFubmVsKGRlc3RQaXhlbHNH
cmVlbiwgeCwgeSwgd2lkdGgsIGhlaWdodCwgMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0Um93UGl0Y2gsIGlzU2lnbmVkKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBMb2FkRVRDMlJHQjhU
b1JHQkE4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVp
Z2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91
dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBwdW5jaHRocm91Z2hBbHBoYSkKK3sKKyAgICBmb3IgKHNp
emVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCB5
ID0gMDsgeSA8IGhlaWdodDsgeSArPSA0KQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBF
VEMyQmxvY2sgKnNvdXJjZVJvdyA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBv
aW50ZXI8RVRDMkJsb2NrPihpbnB1dCwgeSAvIDQsIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVw
dGhQaXRjaCk7CisgICAgICAgICAgICB1aW50OF90ICpkZXN0Um93ID0KKyAgICAgICAgICAgICAg
ICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50OF90PihvdXRwdXQsIHksIHosIG91dHB1dFJv
d1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKKworICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9
IDA7IHggPCB3aWR0aDsgeCArPSA0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNv
bnN0IEVUQzJCbG9jayAqc291cmNlQmxvY2sgPSBzb3VyY2VSb3cgKyAoeCAvIDQpOworICAgICAg
ICAgICAgICAgIHVpbnQ4X3QgKmRlc3RQaXhlbHMgICAgICAgICAgPSBkZXN0Um93ICsgKHggKiA0
KTsKKworICAgICAgICAgICAgICAgIHNvdXJjZUJsb2NrLT5kZWNvZGVBc1JHQihkZXN0UGl4ZWxz
LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdEVUQ0FscGhhVmFsdWVzLCBwdW5jaHRocm91
Z2hBbHBoYSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgTG9h
ZEVUQzJSR0I4VG9CQzEoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0
LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAg
ICAgICAgICBib29sIHB1bmNodGhyb3VnaEFscGhhKQoreworICAgIGZvciAoc2l6ZV90IHogPSAw
OyB6IDwgZGVwdGg7IHorKykKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwg
aGVpZ2h0OyB5ICs9IDQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IEVUQzJCbG9jayAq
c291cmNlUm93ID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjxFVEMy
QmxvY2s+KGlucHV0LCB5IC8gNCwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsK
KyAgICAgICAgICAgIHVpbnQ4X3QgKmRlc3RSb3cgPSBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1
aW50OF90PihvdXRwdXQsIHkgLyA0LCB6LCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRE
ZXB0aFBpdGNoKTsKKworICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsg
eCArPSA0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnN0IEVUQzJCbG9jayAq
c291cmNlQmxvY2sgPSBzb3VyY2VSb3cgKyAoeCAvIDQpOworICAgICAgICAgICAgICAgIHVpbnQ4
X3QgKmRlc3RQaXhlbHMgICAgICAgICAgPSBkZXN0Um93ICsgKHggKiAyKTsKKworICAgICAgICAg
ICAgICAgIHNvdXJjZUJsb2NrLT50cmFuc2NvZGVBc0JDMShkZXN0UGl4ZWxzLCB4LCB5LCB3aWR0
aCwgaGVpZ2h0LCBEZWZhdWx0RVRDQWxwaGFWYWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1bmNodGhyb3VnaEFscGhhKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBMb2FkRVRDMlJHQkE4VG9SR0JBOChzaXplX3Qg
d2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRE
ZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgc3JnYikKK3sKKyAgICB1aW50OF90IGRlY29kZWRBbHBoYVZhbHVl
c1s0XVs0XTsKKworICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKKyAgICB7
CisgICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5ICs9IDQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGNvbnN0IEVUQzJCbG9jayAqc291cmNlUm93ID0KKyAgICAgICAgICAg
ICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjxFVEMyQmxvY2s+KGlucHV0LCB5IC8gNCwgeiwg
aW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIHVpbnQ4X3QgKmRl
c3RSb3cgPQorICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+
KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOworCisgICAg
ICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4ICs9IDQpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgY29uc3QgRVRDMkJsb2NrICpzb3VyY2VCbG9ja0FscGhhID0g
c291cmNlUm93ICsgKHggLyAyKTsKKyAgICAgICAgICAgICAgICBzb3VyY2VCbG9ja0FscGhhLT5k
ZWNvZGVBc1NpbmdsZUNoYW5uZWwoCisgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCAqPihkZWNvZGVkQWxwaGFWYWx1ZXMpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCAx
LCA0LAorICAgICAgICAgICAgICAgICAgICBmYWxzZSk7CisKKyAgICAgICAgICAgICAgICB1aW50
OF90ICpkZXN0UGl4ZWxzICAgICAgICAgICAgID0gZGVzdFJvdyArICh4ICogNCk7CisgICAgICAg
ICAgICAgICAgY29uc3QgRVRDMkJsb2NrICpzb3VyY2VCbG9ja1JHQiA9IHNvdXJjZUJsb2NrQWxw
aGEgKyAxOworICAgICAgICAgICAgICAgIHNvdXJjZUJsb2NrUkdCLT5kZWNvZGVBc1JHQihkZXN0
UGl4ZWxzLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlZEFscGhhVmFsdWVzLCBmYWxz
ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK30gIC8vIGFub255bW91
cyBuYW1lc3BhY2UKKwordm9pZCBMb2FkRVRDMVJHQjhUb1JHQkE4KHNpemVfdCB3aWR0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50
OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRj
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgTG9hZEVUQzJSR0I4VG9SR0JBOCh3aWR0
aCwgaGVpZ2h0LCBkZXB0aCwgaW5wdXQsIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCwg
b3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERl
cHRoUGl0Y2gsIGZhbHNlKTsKK30KKwordm9pZCBMb2FkRVRDMVJHQjhUb0JDMShzaXplX3Qgd2lk
dGgsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlu
dDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNo
LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAg
ICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91
dHB1dERlcHRoUGl0Y2gpCit7CisgICAgTG9hZEVUQzJSR0I4VG9CQzEod2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGlucHV0LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gsIG91dHB1dCwKKyAg
ICAgICAgICAgICAgICAgICAgICBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCwgZmFs
c2UpOworfQorCit2b2lkIExvYWRFQUNSMTFUb1I4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRo
LAorICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwK
KyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAg
ICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAgICBMb2FkUjExRUFDVG9SOCh3
aWR0aCwgaGVpZ2h0LCBkZXB0aCwgaW5wdXQsIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRj
aCwgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0
aFBpdGNoLCBmYWxzZSk7Cit9CisKK3ZvaWQgTG9hZEVBQ1IxMVNUb1I4KHNpemVfdCB3aWR0aCwK
KyAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1
dCwKKyAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAg
IHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQ
aXRjaCwKKyAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQorewor
ICAgIExvYWRSMTFFQUNUb1I4KHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBpbnB1dCwgaW5wdXRSb3dQ
aXRjaCwgaW5wdXREZXB0aFBpdGNoLCBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgb3V0cHV0
Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gsIHRydWUpOworfQorCit2b2lkIExvYWRFQUNSRzEx
VG9SRzgoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQs
CisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBp
bnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0
Y2gsCisgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAgICBMb2FkUkcxMUVBQ1RvUkc4KHdpZHRoLCBo
ZWlnaHQsIGRlcHRoLCBpbnB1dCwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoLCBvdXRw
dXQsCisgICAgICAgICAgICAgICAgICAgICBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRj
aCwgZmFsc2UpOworfQorCit2b2lkIExvYWRFQUNSRzExU1RvUkc4KHNpemVfdCB3aWR0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpp
bnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVw
dGhQaXRjaCkKK3sKKyAgICBMb2FkUkcxMUVBQ1RvUkc4KHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBp
bnB1dCwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoLCBvdXRwdXQsCisgICAgICAgICAg
ICAgICAgICAgICBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCwgdHJ1ZSk7Cit9CisK
K3ZvaWQgTG9hZEVUQzJSR0I4VG9SR0JBOChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
ZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRE
ZXB0aFBpdGNoKQoreworICAgIExvYWRFVEMyUkdCOFRvUkdCQTgod2lkdGgsIGhlaWdodCwgZGVw
dGgsIGlucHV0LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gsIG91dHB1dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoLCBmYWxz
ZSk7Cit9CisKK3ZvaWQgTG9hZEVUQzJTUkdCOFRvUkdCQTgoc2l6ZV90IHdpZHRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4
X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRj
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQoreworICAgIExvYWRFVEMyUkdCOFRvUkdCQTgo
d2lkdGgsIGhlaWdodCwgZGVwdGgsIGlucHV0LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0
Y2gsIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFJvd1BpdGNoLCBvdXRw
dXREZXB0aFBpdGNoLCBmYWxzZSk7Cit9CisKK3ZvaWQgTG9hZEVUQzJSR0I4QTFUb1JHQkE4KHNp
emVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qg
Km91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRj
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQor
eworICAgIExvYWRFVEMyUkdCOFRvUkdCQTgod2lkdGgsIGhlaWdodCwgZGVwdGgsIGlucHV0LCBp
bnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gsIG91dHB1dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoLCB0cnVlKTsKK30KKwordm9p
ZCBMb2FkRVRDMlNSR0I4QTFUb1JHQkE4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpp
bnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgTG9hZEVUQzJSR0I4VG9S
R0JBOCh3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgaW5wdXQsIGlucHV0Um93UGl0Y2gsIGlucHV0RGVw
dGhQaXRjaCwgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0Um93UGl0Y2gs
IG91dHB1dERlcHRoUGl0Y2gsIHRydWUpOworfQorCit2b2lkIExvYWRFVEMyUkdCQThUb1JHQkE4
KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91
dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAg
ICBMb2FkRVRDMlJHQkE4VG9SR0JBOCh3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgaW5wdXQsIGlucHV0
Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCwgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoLCBmYWxzZSk7Cit9CisKK3ZvaWQg
TG9hZEVUQzJTUkdCQThUb1NSR0JBOChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5w
dXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQoreworICAgIExvYWRFVEMyUkdCQThUb1JH
QkE4KHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBpbnB1dCwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0
aFBpdGNoLCBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0Um93UGl0Y2gs
IG91dHB1dERlcHRoUGl0Y2gsIHRydWUpOworfQorCit9ICAvLyBuYW1lc3BhY2UgYW5nbGUKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9BdHRyaWJ1dGVNYXAuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9BdHRy
aWJ1dGVNYXAuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvQXR0cmlidXRlTWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMTEg
KzI5LDMwIEBAIEVHTEF0dHJpYiBBdHRyaWJ1dGVNYXA6OmdldChFR0xBdHRyaWIga2UKICAgICBy
ZXR1cm4gKG1BdHRyaWJ1dGVzLmZpbmQoa2V5KSAhPSBtQXR0cmlidXRlcy5lbmQoKSkgPyBpdGVy
LT5zZWNvbmQgOiBkZWZhdWx0VmFsdWU7CiB9CiAKK0VHTGludCBBdHRyaWJ1dGVNYXA6OmdldEFz
SW50KEVHTEF0dHJpYiBrZXksIEVHTGludCBkZWZhdWx0VmFsdWUpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEVHTGludD4oCisgICAgICAgIGdldChzdGF0aWNfY2FzdDxFR0xBdHRy
aWI+KGtleSksIHN0YXRpY19jYXN0PEVHTEF0dHJpYj4oZGVmYXVsdFZhbHVlKSkpOworfQorCiBi
b29sIEF0dHJpYnV0ZU1hcDo6aXNFbXB0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1BdHRyaWJ1
dGVzLmVtcHR5KCk7CiB9CiAKK3N0ZDo6dmVjdG9yPEVHTGludD4gQXR0cmlidXRlTWFwOjp0b0lu
dFZlY3RvcigpIGNvbnN0Cit7CisgICAgc3RkOjp2ZWN0b3I8RUdMaW50PiByZXQ7CisgICAgZm9y
IChjb25zdCBhdXRvICZwYWlyIDogbUF0dHJpYnV0ZXMpCisgICAgeworICAgICAgICByZXQucHVz
aF9iYWNrKHN0YXRpY19jYXN0PEVHTGludD4ocGFpci5maXJzdCkpOworICAgICAgICByZXQucHVz
aF9iYWNrKHN0YXRpY19jYXN0PEVHTGludD4ocGFpci5zZWNvbmQpKTsKKyAgICB9CisgICAgcmV0
LnB1c2hfYmFjayhFR0xfTk9ORSk7CisKKyAgICByZXR1cm4gcmV0OworfQorCiBBdHRyaWJ1dGVN
YXA6OmNvbnN0X2l0ZXJhdG9yIEF0dHJpYnV0ZU1hcDo6YmVnaW4oKSBjb25zdAogewogICAgIHJl
dHVybiBtQXR0cmlidXRlcy5iZWdpbigpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL0F0dHJpYnV0ZU1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9BdHRyaWJ1dGVNYXAuaAkocmV2aXNpb24gMjA3ODA0KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0F0dHJpYnV0ZU1hcC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSA8RUdML2VnbC5oPgogCiAj
aW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPHZlY3Rvcj4KIAogbmFtZXNwYWNlIGVnbAogewpAQCAt
MjMsNyArMjQsOSBAQCBjbGFzcyBBdHRyaWJ1dGVNYXAgZmluYWwKICAgICB2b2lkIGluc2VydChF
R0xBdHRyaWIga2V5LCBFR0xBdHRyaWIgdmFsdWUpOwogICAgIGJvb2wgY29udGFpbnMoRUdMQXR0
cmliIGtleSkgY29uc3Q7CiAgICAgRUdMQXR0cmliIGdldChFR0xBdHRyaWIga2V5LCBFR0xBdHRy
aWIgZGVmYXVsdFZhbHVlKSBjb25zdDsKKyAgICBFR0xpbnQgZ2V0QXNJbnQoRUdMQXR0cmliIGtl
eSwgRUdMaW50IGRlZmF1bHRWYWx1ZSkgY29uc3Q7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7
CisgICAgc3RkOjp2ZWN0b3I8RUdMaW50PiB0b0ludFZlY3RvcigpIGNvbnN0OwogCiAgICAgdHlw
ZWRlZiBzdGQ6Om1hcDxFR0xBdHRyaWIsIEVHTEF0dHJpYj46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0
X2l0ZXJhdG9yOwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
QmluYXJ5U3RyZWFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL0JpbmFyeVN0cmVhbS5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQmluYXJ5U3RyZWFtLmgJKHdvcmtpbmcgY29weSkK
QEAgLTksMjUgKzksMTMgQEAKICNpZm5kZWYgTElCQU5HTEVfQklOQVJZU1RSRUFNX0hfCiAjZGVm
aW5lIExJQkFOR0xFX0JJTkFSWVNUUkVBTV9IXwogCi0jaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRp
bHMuaCIKLSNpbmNsdWRlICJjb21tb24vbWF0aHV0aWwuaCIKLQogI2luY2x1ZGUgPGNzdGRkZWY+
CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KICNpbmNsdWRlIDxzdGRpbnQu
aD4KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIFN0YXRpY0Fzc2VydElzRnVuZGFtZW50
YWwoKQotewotICAgIC8vIGMrKzExIFNUTCBpcyBub3QgYXZhaWxhYmxlIG9uIE9TWCBvciBBbmRy
b2lkCi0jaWYgIWRlZmluZWQoQU5HTEVfUExBVEZPUk1fQVBQTEUpICYmICFkZWZpbmVkKEFOR0xF
X1BMQVRGT1JNX0FORFJPSUQpCi0gICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Z1bmRhbWVudGFs
PFQ+Ojp2YWx1ZSwgIlQgbXVzdCBiZSBhIGZ1bmRhbWVudGFsIHR5cGUuIik7Ci0jZWxzZQotICAg
IHVuaW9uIHsgVCBkdW1teTsgfSBkdW1teTsKLSAgICBzdGF0aWNfY2FzdDx2b2lkPihkdW1teSk7
Ci0jZW5kaWYKLX0KKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorI2luY2x1ZGUgImNv
bW1vbi9tYXRodXRpbC5oIgogCiBuYW1lc3BhY2UgZ2wKIHsKQEAgLTkyLDI1ICs4MCwzMSBAQCBj
bGFzcyBCaW5hcnlJbnB1dFN0cmVhbSA6IGFuZ2xlOjpOb25Db3B5CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIXJ4OjpJc1Vuc2lnbmVkQWRkaXRpb25TYWZl
KG1PZmZzZXQsIGxlbmd0aCkgfHwgbU9mZnNldCArIGxlbmd0aCA+IG1MZW5ndGgpCisgICAgICAg
IGFuZ2xlOjpDaGVja2VkTnVtZXJpYzxzaXplX3Q+IGNoZWNrZWRPZmZzZXQobU9mZnNldCk7Cisg
ICAgICAgIGNoZWNrZWRPZmZzZXQgKz0gbGVuZ3RoOworCisgICAgICAgIGlmICghY2hlY2tlZE9m
ZnNldC5Jc1ZhbGlkKCkgfHwgbU9mZnNldCArIGxlbmd0aCA+IG1MZW5ndGgpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIG1FcnJvciA9IHRydWU7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAogICAgICAgICB2LT5hc3NpZ24ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KG1E
YXRhKSArIG1PZmZzZXQsIGxlbmd0aCk7Ci0gICAgICAgIG1PZmZzZXQgKz0gbGVuZ3RoOworICAg
ICAgICBtT2Zmc2V0ID0gY2hlY2tlZE9mZnNldC5WYWx1ZU9yRGllKCk7CiAgICAgfQogCiAgICAg
dm9pZCBza2lwKHNpemVfdCBsZW5ndGgpCiAgICAgewotICAgICAgICBpZiAoIXJ4OjpJc1Vuc2ln
bmVkQWRkaXRpb25TYWZlKG1PZmZzZXQsIGxlbmd0aCkgfHwgbU9mZnNldCArIGxlbmd0aCA+IG1M
ZW5ndGgpCisgICAgICAgIGFuZ2xlOjpDaGVja2VkTnVtZXJpYzxzaXplX3Q+IGNoZWNrZWRPZmZz
ZXQobU9mZnNldCk7CisgICAgICAgIGNoZWNrZWRPZmZzZXQgKz0gbGVuZ3RoOworCisgICAgICAg
IGlmICghY2hlY2tlZE9mZnNldC5Jc1ZhbGlkKCkgfHwgbU9mZnNldCArIGxlbmd0aCA+IG1MZW5n
dGgpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1FcnJvciA9IHRydWU7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBtT2Zmc2V0ICs9IGxlbmd0aDsKKyAgICAgICAg
bU9mZnNldCA9IGNoZWNrZWRPZmZzZXQuVmFsdWVPckRpZSgpOwogICAgIH0KIAogICAgIHNpemVf
dCBvZmZzZXQoKSBjb25zdApAQCAtMTQyLDI0ICsxMzYsMjcgQEAgY2xhc3MgQmluYXJ5SW5wdXRT
dHJlYW0gOiBhbmdsZTo6Tm9uQ29weQogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIHZv
aWQgcmVhZChUICp2LCBzaXplX3QgbnVtKQogICAgIHsKLSAgICAgICAgU3RhdGljQXNzZXJ0SXNG
dW5kYW1lbnRhbDxUPigpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZnVuZGFtZW50
YWw8VD46OnZhbHVlLCAiVCBtdXN0IGJlIGEgZnVuZGFtZW50YWwgdHlwZS4iKTsKIAotICAgICAg
ICBpZiAoIXJ4OjpJc1Vuc2lnbmVkTXVsdGlwbGljYXRpb25TYWZlKG51bSwgc2l6ZW9mKFQpKSkK
KyAgICAgICAgYW5nbGU6OkNoZWNrZWROdW1lcmljPHNpemVfdD4gY2hlY2tlZExlbmd0aChudW0p
OworICAgICAgICBjaGVja2VkTGVuZ3RoICo9IHNpemVvZihUKTsKKyAgICAgICAgaWYgKCFjaGVj
a2VkTGVuZ3RoLklzVmFsaWQoKSkKICAgICAgICAgewogICAgICAgICAgICAgbUVycm9yID0gdHJ1
ZTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHNpemVfdCBsZW5n
dGggPSBudW0gKiBzaXplb2YoVCk7CisgICAgICAgIGFuZ2xlOjpDaGVja2VkTnVtZXJpYzxzaXpl
X3Q+IGNoZWNrZWRPZmZzZXQobU9mZnNldCk7CisgICAgICAgIGNoZWNrZWRPZmZzZXQgKz0gY2hl
Y2tlZExlbmd0aDsKIAotICAgICAgICBpZiAoIXJ4OjpJc1Vuc2lnbmVkQWRkaXRpb25TYWZlKG1P
ZmZzZXQsIGxlbmd0aCkgfHwgbU9mZnNldCArIGxlbmd0aCA+IG1MZW5ndGgpCisgICAgICAgIGlm
ICghY2hlY2tlZE9mZnNldC5Jc1ZhbGlkKCkgfHwgY2hlY2tlZE9mZnNldC5WYWx1ZU9yRGllKCkg
PiBtTGVuZ3RoKQogICAgICAgICB7CiAgICAgICAgICAgICBtRXJyb3IgPSB0cnVlOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgbWVtY3B5KHYsIG1EYXRhICsgbU9m
ZnNldCwgbGVuZ3RoKTsKLSAgICAgICAgbU9mZnNldCArPSBsZW5ndGg7CisgICAgICAgIG1lbWNw
eSh2LCBtRGF0YSArIG1PZmZzZXQsIGNoZWNrZWRMZW5ndGguVmFsdWVPckRpZSgpKTsKKyAgICAg
ICAgbU9mZnNldCA9IGNoZWNrZWRPZmZzZXQuVmFsdWVPckRpZSgpOwogICAgIH0KIAogICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgpAQCAtMTgxLDExICsxNzgsMjUgQEAgY2xhc3MgQmluYXJ5T3V0
cHV0U3RyZWFtIDogYW5nbGU6Ok5vbkNvcAogICAgIHRlbXBsYXRlIDxjbGFzcyBJbnRUPgogICAg
IHZvaWQgd3JpdGVJbnQoSW50VCBwYXJhbSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChyeDo6SXNJ
bnRlZ2VyQ2FzdFNhZmU8aW50PihwYXJhbSkpOworICAgICAgICBBU1NFUlQoYW5nbGU6OklzVmFs
dWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8aW50PihwYXJhbSkpOwogICAgICAgICBpbnQgaW50VmFs
dWUgPSBzdGF0aWNfY2FzdDxpbnQ+KHBhcmFtKTsKICAgICAgICAgd3JpdGUoJmludFZhbHVlLCAx
KTsKICAgICB9CiAKKyAgICAvLyBTcGVjaWFsaXplZCB3cml0ZUludCBmb3IgdmFsdWVzIHRoYXQg
Y2FuIGFsc28gYmUgZXhhY3RseSAtMS4KKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVWludFQ+CisgICAg
dm9pZCB3cml0ZUludE9yTmVnT25lKFVpbnRUIHBhcmFtKQorICAgIHsKKyAgICAgICAgaWYgKHBh
cmFtID09IHN0YXRpY19jYXN0PFVpbnRUPigtMSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHdy
aXRlSW50KC0xKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHdyaXRlSW50KHBhcmFtKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgd3JpdGVT
dHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcgJnYpCiAgICAgewogICAgICAgICB3cml0ZUludCh2Lmxl
bmd0aCgpKTsKQEAgLTIxMyw3ICsyMjQsNyBAQCBjbGFzcyBCaW5hcnlPdXRwdXRTdHJlYW0gOiBh
bmdsZTo6Tm9uQ29wCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCB3cml0ZShj
b25zdCBUICp2LCBzaXplX3QgbnVtKQogICAgIHsKLSAgICAgICAgU3RhdGljQXNzZXJ0SXNGdW5k
YW1lbnRhbDxUPigpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZnVuZGFtZW50YWw8
VD46OnZhbHVlLCAiVCBtdXN0IGJlIGEgZnVuZGFtZW50YWwgdHlwZS4iKTsKICAgICAgICAgY29u
c3QgY2hhciAqYXNCeXRlcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHYpOwogICAg
ICAgICBtRGF0YS5pbnNlcnQobURhdGEuZW5kKCksIGFzQnl0ZXMsIGFzQnl0ZXMgKyBudW0gKiBz
aXplb2YoVCkpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9CdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9CdWZmZXIuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAs
NyArMTAsNiBAQAogCiAjaW5jbHVkZSAibGliQU5HTEUvQnVmZmVyLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvQnVmZmVySW1wbC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L1JlbmRlcmVyLmgiCiAKIG5hbWVzcGFjZSBnbAogewpAQCAtNDUsNDUgKzQ0LDMzIEBAIGNvbnN0
IHN0ZDo6c3RyaW5nICZCdWZmZXI6OmdldExhYmVsKCkgY28KICAgICByZXR1cm4gbUxhYmVsOwog
fQogCi1FcnJvciBCdWZmZXI6OmJ1ZmZlckRhdGEoY29uc3Qgdm9pZCAqZGF0YSwgR0xzaXplaXB0
ciBzaXplLCBHTGVudW0gdXNhZ2UpCitFcnJvciBCdWZmZXI6OmJ1ZmZlckRhdGEoR0xlbnVtIHRh
cmdldCwgY29uc3Qgdm9pZCAqZGF0YSwgR0xzaXplaXB0ciBzaXplLCBHTGVudW0gdXNhZ2UpCiB7
Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gbUJ1ZmZlci0+c2V0RGF0YShkYXRhLCBzaXplLCB1c2Fn
ZSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJv
cjsKLSAgICB9CisgICAgQU5HTEVfVFJZKG1CdWZmZXItPnNldERhdGEodGFyZ2V0LCBkYXRhLCBz
aXplLCB1c2FnZSkpOwogCiAgICAgbUluZGV4UmFuZ2VDYWNoZS5jbGVhcigpOwogICAgIG1Vc2Fn
ZSA9IHVzYWdlOwogICAgIG1TaXplID0gc2l6ZTsKIAotICAgIHJldHVybiBlcnJvcjsKKyAgICBy
ZXR1cm4gTm9FcnJvcigpOwogfQogCi1FcnJvciBCdWZmZXI6OmJ1ZmZlclN1YkRhdGEoY29uc3Qg
dm9pZCAqZGF0YSwgR0xzaXplaXB0ciBzaXplLCBHTGludHB0ciBvZmZzZXQpCitFcnJvciBCdWZm
ZXI6OmJ1ZmZlclN1YkRhdGEoR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCAqZGF0YSwgR0xzaXpl
aXB0ciBzaXplLCBHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gbUJ1
ZmZlci0+c2V0U3ViRGF0YShkYXRhLCBzaXplLCBvZmZzZXQpOwotICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RS
WShtQnVmZmVyLT5zZXRTdWJEYXRhKHRhcmdldCwgZGF0YSwgc2l6ZSwgb2Zmc2V0KSk7CiAKICAg
ICBtSW5kZXhSYW5nZUNhY2hlLmludmFsaWRhdGVSYW5nZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBp
bnQ+KG9mZnNldCksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc2l6ZSkpOwogCi0gICAgcmV0
dXJuIGVycm9yOworICAgIHJldHVybiBOb0Vycm9yKCk7CiB9CiAKIEVycm9yIEJ1ZmZlcjo6Y29w
eUJ1ZmZlclN1YkRhdGEoQnVmZmVyKiBzb3VyY2UsIEdMaW50cHRyIHNvdXJjZU9mZnNldCwgR0xp
bnRwdHIgZGVzdE9mZnNldCwgR0xzaXplaXB0ciBzaXplKQogewotICAgIGdsOjpFcnJvciBlcnJv
ciA9IG1CdWZmZXItPmNvcHlTdWJEYXRhKHNvdXJjZS0+Z2V0SW1wbGVtZW50YXRpb24oKSwgc291
cmNlT2Zmc2V0LCBkZXN0T2Zmc2V0LCBzaXplKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkobUJ1ZmZl
ci0+Y29weVN1YkRhdGEoc291cmNlLT5nZXRJbXBsZW1lbnRhdGlvbigpLCBzb3VyY2VPZmZzZXQs
IGRlc3RPZmZzZXQsIHNpemUpKTsKIAogICAgIG1JbmRleFJhbmdlQ2FjaGUuaW52YWxpZGF0ZVJh
bmdlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oZGVzdE9mZnNldCksIHN0YXRpY19jYXN0PHVu
c2lnbmVkIGludD4oc2l6ZSkpOwogCi0gICAgcmV0dXJuIGVycm9yOworICAgIHJldHVybiBOb0Vy
cm9yKCk7CiB9CiAKIEVycm9yIEJ1ZmZlcjo6bWFwKEdMZW51bSBhY2Nlc3MpCkBAIC0xNzksMTgg
KzE2NiwxNCBAQCBFcnJvciBCdWZmZXI6OmdldEluZGV4UmFuZ2UoR0xlbnVtIHR5cGUsCiB7CiAg
ICAgaWYgKG1JbmRleFJhbmdlQ2FjaGUuZmluZFJhbmdlKHR5cGUsIG9mZnNldCwgY291bnQsIHBy
aW1pdGl2ZVJlc3RhcnRFbmFibGVkLCBvdXRSYW5nZSkpCiAgICAgewotICAgICAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIE5vRXJyb3IoKTsKICAgICB9
CiAKLSAgICBFcnJvciBlcnJvciA9IG1CdWZmZXItPmdldEluZGV4UmFuZ2UodHlwZSwgb2Zmc2V0
LCBjb3VudCwgcHJpbWl0aXZlUmVzdGFydEVuYWJsZWQsIG91dFJhbmdlKTsKLSAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBB
TkdMRV9UUlkobUJ1ZmZlci0+Z2V0SW5kZXhSYW5nZSh0eXBlLCBvZmZzZXQsIGNvdW50LCBwcmlt
aXRpdmVSZXN0YXJ0RW5hYmxlZCwgb3V0UmFuZ2UpKTsKIAogICAgIG1JbmRleFJhbmdlQ2FjaGUu
YWRkUmFuZ2UodHlwZSwgb2Zmc2V0LCBjb3VudCwgcHJpbWl0aXZlUmVzdGFydEVuYWJsZWQsICpv
dXRSYW5nZSk7CiAKLSAgICByZXR1cm4gRXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBO
b0Vycm9yKCk7CiB9CiAKLX0KK30gIC8vIG5hbWVzcGFjZSBnbApJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0J1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9CdWZmZXIuaAkocmV2aXNpb24gMjA3ODA0KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0J1ZmZlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw4ICszNCw4IEBAIGNsYXNzIEJ1ZmZlciBmaW5hbCA6IHB1YmxpYyBSZWZD
b3VudE9iamUKICAgICB2b2lkIHNldExhYmVsKGNvbnN0IHN0ZDo6c3RyaW5nICZsYWJlbCkgb3Zl
cnJpZGU7CiAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmdldExhYmVsKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKLSAgICBFcnJvciBidWZmZXJEYXRhKGNvbnN0IHZvaWQgKmRhdGEsIEdMc2l6ZWlwdHIgc2l6
ZSwgR0xlbnVtIHVzYWdlKTsKLSAgICBFcnJvciBidWZmZXJTdWJEYXRhKGNvbnN0IHZvaWQgKmRh
dGEsIEdMc2l6ZWlwdHIgc2l6ZSwgR0xpbnRwdHIgb2Zmc2V0KTsKKyAgICBFcnJvciBidWZmZXJE
YXRhKEdMZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQgKmRhdGEsIEdMc2l6ZWlwdHIgc2l6ZSwgR0xl
bnVtIHVzYWdlKTsKKyAgICBFcnJvciBidWZmZXJTdWJEYXRhKEdMZW51bSB0YXJnZXQsIGNvbnN0
IHZvaWQgKmRhdGEsIEdMc2l6ZWlwdHIgc2l6ZSwgR0xpbnRwdHIgb2Zmc2V0KTsKICAgICBFcnJv
ciBjb3B5QnVmZmVyU3ViRGF0YShCdWZmZXIqIHNvdXJjZSwgR0xpbnRwdHIgc291cmNlT2Zmc2V0
LCBHTGludHB0ciBkZXN0T2Zmc2V0LCBHTHNpemVpcHRyIHNpemUpOwogICAgIEVycm9yIG1hcChH
TGVudW0gYWNjZXNzKTsKICAgICBFcnJvciBtYXBSYW5nZShHTGludHB0ciBvZmZzZXQsIEdMc2l6
ZWlwdHIgbGVuZ3RoLCBHTGJpdGZpZWxkIGFjY2Vzcyk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvQ2Fwcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NhcHMuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ2Fwcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcwLDkgKzcwLDE3IEBAIHZvaWQgVGV4dHVyZUNhcHNNYXA6OnJlbW92ZShHTGVudW0g
aW50ZXIKICAgICB9CiB9CiAKK3ZvaWQgVGV4dHVyZUNhcHNNYXA6OmNsZWFyKCkKK3sKKyAgICBt
Q2Fwc01hcC5jbGVhcigpOworfQorCiBjb25zdCBUZXh0dXJlQ2FwcyAmVGV4dHVyZUNhcHNNYXA6
OmdldChHTGVudW0gaW50ZXJuYWxGb3JtYXQpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGF1dG8mIGRl
ZmF1bHRVbnN1cHBvcnRlZFRleHR1cmUgPSAqbmV3IFRleHR1cmVDYXBzOworI3ByYWdtYSBHQ0Mg
ZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZXhpdC10
aW1lLWRlc3RydWN0b3JzIgorICAgIHN0YXRpYyBUZXh0dXJlQ2FwcyBkZWZhdWx0VW5zdXBwb3J0
ZWRUZXh0dXJlOworI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKICAgICBJbnRlcm5hbEZvcm1h
dFRvQ2Fwc01hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1DYXBzTWFwLmZpbmQoaW50ZXJuYWxG
b3JtYXQpOwogICAgIHJldHVybiAoaXRlciAhPSBtQ2Fwc01hcC5lbmQoKSkgPyBpdGVyLT5zZWNv
bmQgOiBkZWZhdWx0VW5zdXBwb3J0ZWRUZXh0dXJlOwogfQpAQCAtMTU4LDcgKzE2NiwxOCBAQCBF
eHRlbnNpb25zOjpFeHRlbnNpb25zKCkKICAgICAgIG1heExhYmVsTGVuZ3RoKDApLAogICAgICAg
bm9FcnJvcihmYWxzZSksCiAgICAgICBsb3NzeUVUQ0RlY29kZShmYWxzZSksCi0gICAgICBjb2xv
ckJ1ZmZlckZsb2F0KGZhbHNlKQorICAgICAgYmluZFVuaWZvcm1Mb2NhdGlvbihmYWxzZSksCisg
ICAgICBzeW5jUXVlcnkoZmFsc2UpLAorICAgICAgY29weVRleHR1cmUoZmFsc2UpLAorICAgICAg
Y29weUNvbXByZXNzZWRUZXh0dXJlKGZhbHNlKSwKKyAgICAgIHdlYmdsQ29tcGF0aWJpbGl0eShm
YWxzZSksCisgICAgICBiaW5kR2VuZXJhdGVzUmVzb3VyY2UoZmFsc2UpLAorICAgICAgcm9idXN0
Q2xpZW50TWVtb3J5KGZhbHNlKSwKKyAgICAgIGNvbG9yQnVmZmVyRmxvYXQoZmFsc2UpLAorICAg
ICAgbXVsdGlzYW1wbGVDb21wYXRpYmlsaXR5KGZhbHNlKSwKKyAgICAgIGZyYW1lYnVmZmVyTWl4
ZWRTYW1wbGVzKGZhbHNlKSwKKyAgICAgIHRleHR1cmVOb3JtMTYoZmFsc2UpLAorICAgICAgcGF0
aFJlbmRlcmluZyhmYWxzZSkKIHsKIH0KIApAQCAtMTY2LDcxICsxODUsMTMgQEAgc3RkOjp2ZWN0
b3I8c3RkOjpzdHJpbmc+IEV4dGVuc2lvbnM6OmdldAogewogICAgIHN0ZDo6dmVjdG9yPHN0ZDo6
c3RyaW5nPiBleHRlbnNpb25TdHJpbmdzOwogCi0gICAgLy8gY2xhbmctZm9ybWF0IG9mZgotICAg
IC8vICAgICAgICAgICAgICAgICAgIHwgRXh0ZW5zaW9uIG5hbWUgICAgICAgICAgICAgICAgICAg
ICAgIHwgU3VwcG9ydGVkIGZsYWcgICAgICAgICAgIHwgT3V0cHV0IHZlY3RvciAgIHwKLSAgICBJ
bnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX09FU19lbGVtZW50X2luZGV4X3VpbnQiLCAgICAgICAg
ICAgZWxlbWVudEluZGV4VWludCwgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIElu
c2VydEV4dGVuc2lvblN0cmluZygiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIiwgICAgICAg
ICBwYWNrZWREZXB0aFN0ZW5jaWwsICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5z
ZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9PRVNfZ2V0X3Byb2dyYW1fYmluYXJ5IiwgICAgICAgICAg
IGdldFByb2dyYW1CaW5hcnksICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNl
cnRFeHRlbnNpb25TdHJpbmcoIkdMX09FU19yZ2I4X3JnYmE4IiwgICAgICAgICAgICAgICAgICAg
cmdiOHJnYmE4LCAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2Vy
dEV4dGVuc2lvblN0cmluZygiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4IiwgICAgICB0
ZXh0dXJlRm9ybWF0QkdSQTg4ODgsICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0
RXh0ZW5zaW9uU3RyaW5nKCJHTF9FWFRfcmVhZF9mb3JtYXRfYmdyYSIsICAgICAgICAgICAgIHJl
YWRGb3JtYXRCR1JBLCAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRF
eHRlbnNpb25TdHJpbmcoIkdMX05WX3BpeGVsX2J1ZmZlcl9vYmplY3QiLCAgICAgICAgICAgcGl4
ZWxCdWZmZXJPYmplY3QsICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4
dGVuc2lvblN0cmluZygiR0xfT0VTX21hcGJ1ZmZlciIsICAgICAgICAgICAgICAgICAgICBtYXBC
dWZmZXIsICAgICAgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0
ZW5zaW9uU3RyaW5nKCJHTF9FWFRfbWFwX2J1ZmZlcl9yYW5nZSIsICAgICAgICAgICAgIG1hcEJ1
ZmZlclJhbmdlLCAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRl
bnNpb25TdHJpbmcoIkdMX0VYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCIsICAgICAgY29sb3JC
dWZmZXJIYWxmRmxvYXQsICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVu
c2lvblN0cmluZygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIsICAgICAgICAgICB0ZXh0dXJl
SGFsZkZsb2F0LCAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5z
aW9uU3RyaW5nKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIsICAgIHRleHR1cmVI
YWxmRmxvYXRMaW5lYXIsICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNp
b25TdHJpbmcoIkdMX09FU190ZXh0dXJlX2Zsb2F0IiwgICAgICAgICAgICAgICAgdGV4dHVyZUZs
b2F0LCAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lv
blN0cmluZygiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIiwgICAgICAgICB0ZXh0dXJlRmxv
YXRMaW5lYXIsICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9u
U3RyaW5nKCJHTF9FWFRfdGV4dHVyZV9yZyIsICAgICAgICAgICAgICAgICAgIHRleHR1cmVSRywg
ICAgICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25T
dHJpbmcoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiLCAgICAgdGV4dHVyZUNvbXBy
ZXNzaW9uRFhUMSwgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0
cmluZygiR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQzIiwgICB0ZXh0dXJlQ29tcHJl
c3Npb25EWFQzLCAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3Ry
aW5nKCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiLCAgIHRleHR1cmVDb21wcmVz
c2lvbkRYVDUsICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJp
bmcoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfaGRyIiwgdGV4dHVyZUNvbXByZXNz
aW9uQVNUQ0hEUiwgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmlu
ZygiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiLCB0ZXh0dXJlQ29tcHJlc3Np
b25BU1RDTERSLCAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5n
KCJHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZSIsIGNvbXByZXNzZWRFVEMxUkdC
OFRleHR1cmUsICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmco
IkdMX0VYVF9zUkdCIiwgICAgICAgICAgICAgICAgICAgICAgICAgc1JHQiwgICAgICAgICAgICAg
ICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygi
R0xfQU5HTEVfZGVwdGhfdGV4dHVyZSIsICAgICAgICAgICAgICBkZXB0aFRleHR1cmVzLCAgICAg
ICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJH
TF9PRVNfZGVwdGgzMiIsICAgICAgICAgICAgICAgICAgICAgIGRlcHRoMzIsICAgICAgICAgICAg
ICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdM
X0VYVF90ZXh0dXJlX3N0b3JhZ2UiLCAgICAgICAgICAgICAgdGV4dHVyZVN0b3JhZ2UsICAgICAg
ICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xf
T0VTX3RleHR1cmVfbnBvdCIsICAgICAgICAgICAgICAgICB0ZXh0dXJlTlBPVCwgICAgICAgICAg
ICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9F
WFRfZHJhd19idWZmZXJzIiwgICAgICAgICAgICAgICAgIGRyYXdCdWZmZXJzLCAgICAgICAgICAg
ICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX0VY
VF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIsICAgdGV4dHVyZUZpbHRlckFuaXNvdHJvcGlj
LCAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfRVhU
X29jY2x1c2lvbl9xdWVyeV9ib29sZWFuIiwgICAgICBvY2NsdXNpb25RdWVyeUJvb2xlYW4sICAg
ICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9OVl9m
ZW5jZSIsICAgICAgICAgICAgICAgICAgICAgICAgIGZlbmNlLCAgICAgICAgICAgICAgICAgICAg
ICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX0FOR0xF
X3RpbWVyX3F1ZXJ5IiwgICAgICAgICAgICAgICAgdGltZXJRdWVyeSwgICAgICAgICAgICAgICAg
JmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfRVhUX2Rp
c2pvaW50X3RpbWVyX3F1ZXJ5IiwgICAgICAgICBkaXNqb2ludFRpbWVyUXVlcnksICAgICAgICAm
ZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9FWFRfcm9i
dXN0bmVzcyIsICAgICAgICAgICAgICAgICAgIHJvYnVzdG5lc3MsICAgICAgICAgICAgICAgICZl
eHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX0VYVF9ibGVu
ZF9taW5tYXgiLCAgICAgICAgICAgICAgICAgYmxlbmRNaW5NYXgsICAgICAgICAgICAgICAgJmV4
dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfQU5HTEVfZnJh
bWVidWZmZXJfYmxpdCIsICAgICAgICAgICBmcmFtZWJ1ZmZlckJsaXQsICAgICAgICAgICAmZXh0
ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9BTkdMRV9mcmFt
ZWJ1ZmZlcl9tdWx0aXNhbXBsZSIsICAgIGZyYW1lYnVmZmVyTXVsdGlzYW1wbGUsICAgICZleHRl
bnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX0FOR0xFX2luc3Rh
bmNlZF9hcnJheXMiLCAgICAgICAgICAgaW5zdGFuY2VkQXJyYXlzLCAgICAgICAgICAgJmV4dGVu
c2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfQU5HTEVfcGFja19y
ZXZlcnNlX3Jvd19vcmRlciIsICAgICBwYWNrUmV2ZXJzZVJvd09yZGVyLCAgICAgICAmZXh0ZW5z
aW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9PRVNfc3RhbmRhcmRf
ZGVyaXZhdGl2ZXMiLCAgICAgICAgIHN0YW5kYXJkRGVyaXZhdGl2ZXMsICAgICAgICZleHRlbnNp
b25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX0VYVF9zaGFkZXJfdGV4
dHVyZV9sb2QiLCAgICAgICAgICAgc2hhZGVyVGV4dHVyZUxPRCwgICAgICAgICAgJmV4dGVuc2lv
blN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfTlZfc2hhZGVyX2ZyYW1l
YnVmZmVyX2ZldGNoIiwgICAgICBOVnNoYWRlckZyYW1lYnVmZmVyRmV0Y2gsICAmZXh0ZW5zaW9u
U3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9BUk1fc2hhZGVyX2ZyYW1l
YnVmZmVyX2ZldGNoIiwgICAgIEFSTXNoYWRlckZyYW1lYnVmZmVyRmV0Y2gsICZleHRlbnNpb25T
dHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX0VYVF9zaGFkZXJfZnJhbWVi
dWZmZXJfZmV0Y2giLCAgICAgc2hhZGVyRnJhbWVidWZmZXJGZXRjaCwgICAgJmV4dGVuc2lvblN0
cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfRVhUX2ZyYWdfZGVwdGgiLCAg
ICAgICAgICAgICAgICAgICBmcmFnRGVwdGgsICAgICAgICAgICAgICAgICAmZXh0ZW5zaW9uU3Ry
aW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9BTkdMRV90ZXh0dXJlX3VzYWdl
IiwgICAgICAgICAgICAgIHRleHR1cmVVc2FnZSwgICAgICAgICAgICAgICZleHRlbnNpb25TdHJp
bmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hh
ZGVyX3NvdXJjZSIsICAgdHJhbnNsYXRlZFNoYWRlclNvdXJjZSwgICAgJmV4dGVuc2lvblN0cmlu
Z3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFw
IiwgICAgICAgICAgICBmYm9SZW5kZXJNaXBtYXAsICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5n
cyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9FWFRfZGlzY2FyZF9mcmFtZWJ1ZmZl
ciIsICAgICAgICAgIGRpc2NhcmRGcmFtZWJ1ZmZlciwgICAgICAgICZleHRlbnNpb25TdHJpbmdz
KTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX0VYVF9kZWJ1Z19tYXJrZXIiLCAgICAg
ICAgICAgICAgICAgZGVidWdNYXJrZXIsICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3Mp
OwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfT0VTX0VHTF9pbWFnZSIsICAgICAgICAg
ICAgICAgICAgICBlZ2xJbWFnZSwgICAgICAgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7
Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIiwg
ICAgICAgICAgIGVnbEltYWdlRXh0ZXJuYWwsICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsK
LSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWxfZXNz
bDMiLCAgICAgZWdsSW1hZ2VFeHRlcm5hbEVzc2wzLCAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwot
ICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfTlZfRUdMX3N0cmVhbV9jb25zdW1lcl9leHRl
cm5hbCIsICBlZ2xTdHJlYW1Db25zdW1lckV4dGVybmFsLCAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0g
ICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9FWFRfdW5wYWNrX3N1YmltYWdlIiwgICAgICAg
ICAgICAgIHVucGFja1N1YmltYWdlLCAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAg
ICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX05WX3BhY2tfc3ViaW1hZ2UiLCAgICAgICAgICAg
ICAgICAgcGFja1N1YmltYWdlLCAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAg
IEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCIsICAgICAg
ICAgICBjb2xvckJ1ZmZlckZsb2F0LCAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAg
SW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIsICAgICAg
ICAgIHZlcnRleEFycmF5T2JqZWN0LCAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJ
bnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX0tIUl9kZWJ1ZyIsICAgICAgICAgICAgICAgICAgICAg
ICAgZGVidWcsICAgICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIC8v
IFRPRE8oam1hZGlsbCk6IEVuYWJsZSB0aGlzIHdoZW4gY29tcGxldGUuCi0gICAgLy9JbnNlcnRF
eHRlbnNpb25TdHJpbmcoIkdMX0tIUl9ub19lcnJvciIsICAgICAgICAgICAgICAgICAgICAgbm9F
cnJvciwgICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotCi0gICAgSW5zZXJ0
RXh0ZW5zaW9uU3RyaW5nKCJHTF9BTkdMRV9sb3NzeV9ldGNfZGVjb2RlIiwgICAgICAgICAgIGxv
c3N5RVRDRGVjb2RlLCAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICAvLyBjbGFu
Zy1mb3JtYXQgb24KKyAgICBmb3IgKGNvbnN0IGF1dG8gJmV4dGVuc2lvbkluZm8gOiBHZXRFeHRl
bnNpb25JbmZvTWFwKCkpCisgICAgeworICAgICAgICBpZiAodGhpcy0+KihleHRlbnNpb25JbmZv
LnNlY29uZC5FeHRlbnNpb25zTWVtYmVyKSkKKyAgICAgICAgeworICAgICAgICAgICAgZXh0ZW5z
aW9uU3RyaW5ncy5wdXNoX2JhY2soZXh0ZW5zaW9uSW5mby5maXJzdCk7CisgICAgICAgIH0KKyAg
ICB9CiAKICAgICByZXR1cm4gZXh0ZW5zaW9uU3RyaW5nczsKIH0KQEAgLTQ5NSw2ICs0NTYsMjgg
QEAgc3RhdGljIGJvb2wgRGV0ZXJtaW5lQ29sb3JCdWZmZXJGbG9hdFN1cAogICAgIHJldHVybiBH
ZXRGb3JtYXRTdXBwb3J0KHRleHR1cmVDYXBzLCByZXF1aXJlZEZvcm1hdHMsIHRydWUsIGZhbHNl
LCB0cnVlKTsKIH0KIAorLy8gQ2hlY2sgZm9yIEdMX0VYVF90ZXh0dXJlX25vcm0xNgorc3RhdGlj
IGJvb2wgRGV0ZXJtaW5lVGV4dHVyZU5vcm0xNlN1cHBvcnQoY29uc3QgVGV4dHVyZUNhcHNNYXAg
JnRleHR1cmVDYXBzKQoreworICAgIHN0ZDo6dmVjdG9yPEdMZW51bT4gcmVxdWlyZWRGaWx0ZXJG
b3JtYXRzOworICAgIHJlcXVpcmVkRmlsdGVyRm9ybWF0cy5wdXNoX2JhY2soR0xfUjE2X0VYVCk7
CisgICAgcmVxdWlyZWRGaWx0ZXJGb3JtYXRzLnB1c2hfYmFjayhHTF9SRzE2X0VYVCk7CisgICAg
cmVxdWlyZWRGaWx0ZXJGb3JtYXRzLnB1c2hfYmFjayhHTF9SR0IxNl9FWFQpOworICAgIHJlcXVp
cmVkRmlsdGVyRm9ybWF0cy5wdXNoX2JhY2soR0xfUkdCQTE2X0VYVCk7CisgICAgcmVxdWlyZWRG
aWx0ZXJGb3JtYXRzLnB1c2hfYmFjayhHTF9SMTZfU05PUk1fRVhUKTsKKyAgICByZXF1aXJlZEZp
bHRlckZvcm1hdHMucHVzaF9iYWNrKEdMX1JHMTZfU05PUk1fRVhUKTsKKyAgICByZXF1aXJlZEZp
bHRlckZvcm1hdHMucHVzaF9iYWNrKEdMX1JHQjE2X1NOT1JNX0VYVCk7CisgICAgcmVxdWlyZWRG
aWx0ZXJGb3JtYXRzLnB1c2hfYmFjayhHTF9SR0JBMTZfU05PUk1fRVhUKTsKKworICAgIHN0ZDo6
dmVjdG9yPEdMZW51bT4gcmVxdWlyZWRSZW5kZXJGb3JtYXRzOworICAgIHJlcXVpcmVkRmlsdGVy
Rm9ybWF0cy5wdXNoX2JhY2soR0xfUjE2X0VYVCk7CisgICAgcmVxdWlyZWRGaWx0ZXJGb3JtYXRz
LnB1c2hfYmFjayhHTF9SRzE2X0VYVCk7CisgICAgcmVxdWlyZWRGaWx0ZXJGb3JtYXRzLnB1c2hf
YmFjayhHTF9SR0JBMTZfRVhUKTsKKworICAgIHJldHVybiBHZXRGb3JtYXRTdXBwb3J0KHRleHR1
cmVDYXBzLCByZXF1aXJlZEZpbHRlckZvcm1hdHMsIHRydWUsIHRydWUsIGZhbHNlKSAmJgorICAg
ICAgICAgICBHZXRGb3JtYXRTdXBwb3J0KHRleHR1cmVDYXBzLCByZXF1aXJlZFJlbmRlckZvcm1h
dHMsIHRydWUsIGZhbHNlLCB0cnVlKTsKK30KKwogdm9pZCBFeHRlbnNpb25zOjpzZXRUZXh0dXJl
RXh0ZW5zaW9uU3VwcG9ydChjb25zdCBUZXh0dXJlQ2Fwc01hcCAmdGV4dHVyZUNhcHMpCiB7CiAg
ICAgcGFja2VkRGVwdGhTdGVuY2lsID0gRGV0ZXJtaW5lUGFja2VkRGVwdGhTdGVuY2lsU3VwcG9y
dCh0ZXh0dXJlQ2Fwcyk7CkBAIC01MTYsNiArNDk5LDEwOSBAQCB2b2lkIEV4dGVuc2lvbnM6OnNl
dFRleHR1cmVFeHRlbnNpb25TdXBwCiAgICAgZGVwdGhUZXh0dXJlcyA9IERldGVybWluZURlcHRo
VGV4dHVyZVN1cHBvcnQodGV4dHVyZUNhcHMpOwogICAgIGRlcHRoMzIgICAgICAgICAgICAgICAg
ICAgPSBEZXRlcm1pbmVEZXB0aDMyU3VwcG9ydCh0ZXh0dXJlQ2Fwcyk7CiAgICAgY29sb3JCdWZm
ZXJGbG9hdCA9IERldGVybWluZUNvbG9yQnVmZmVyRmxvYXRTdXBwb3J0KHRleHR1cmVDYXBzKTsK
KyAgICB0ZXh0dXJlTm9ybTE2ICAgICAgICAgICAgID0gRGV0ZXJtaW5lVGV4dHVyZU5vcm0xNlN1
cHBvcnQodGV4dHVyZUNhcHMpOworfQorCitjb25zdCBFeHRlbnNpb25JbmZvTWFwICZHZXRFeHRl
bnNpb25JbmZvTWFwKCkKK3sKKyAgICBhdXRvIGJ1aWxkRXh0ZW5zaW9uSW5mb01hcCA9IFtdKCkg
eworICAgICAgICBhdXRvIGVuYWJsZWFibGVFeHRlbnNpb24gPSBbXShFeHRlbnNpb25JbmZvOjpF
eHRlbnNpb25Cb29sIG1lbWJlcikgeworICAgICAgICAgICAgRXh0ZW5zaW9uSW5mbyBpbmZvOwor
ICAgICAgICAgICAgaW5mby5FbmFibGVhYmxlICAgICAgID0gdHJ1ZTsKKyAgICAgICAgICAgIGlu
Zm8uRXh0ZW5zaW9uc01lbWJlciA9IG1lbWJlcjsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwor
ICAgICAgICB9OworCisgICAgICAgIGF1dG8gZXNPbmx5RXh0ZW5zaW9uID0gW10oRXh0ZW5zaW9u
SW5mbzo6RXh0ZW5zaW9uQm9vbCBtZW1iZXIpIHsKKyAgICAgICAgICAgIEV4dGVuc2lvbkluZm8g
aW5mbzsKKyAgICAgICAgICAgIGluZm8uRXh0ZW5zaW9uc01lbWJlciA9IG1lbWJlcjsKKyAgICAg
ICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9OworCisgICAgICAgIC8vIGNsYW5nLWZvcm1h
dCBvZmYKKyAgICAgICAgRXh0ZW5zaW9uSW5mb01hcCBtYXA7CisgICAgICAgIG1hcFsiR0xfT0VT
X2VsZW1lbnRfaW5kZXhfdWludCJdID0gZW5hYmxlYWJsZUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6
ZWxlbWVudEluZGV4VWludCk7CisgICAgICAgIG1hcFsiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVu
Y2lsIl0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnBhY2tlZERlcHRoU3RlbmNpbCk7
CisgICAgICAgIG1hcFsiR0xfT0VTX2dldF9wcm9ncmFtX2JpbmFyeSJdID0gZXNPbmx5RXh0ZW5z
aW9uKCZFeHRlbnNpb25zOjpnZXRQcm9ncmFtQmluYXJ5KTsKKyAgICAgICAgbWFwWyJHTF9PRVNf
cmdiOF9yZ2JhOCJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpyZ2I4cmdiYTgpOwor
ICAgICAgICBtYXBbIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCJdID0gZXNPbmx5RXh0
ZW5zaW9uKCZFeHRlbnNpb25zOjp0ZXh0dXJlRm9ybWF0QkdSQTg4ODgpOworICAgICAgICBtYXBb
IkdMX0VYVF9yZWFkX2Zvcm1hdF9iZ3JhIl0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6
OnJlYWRGb3JtYXRCR1JBKTsKKyAgICAgICAgbWFwWyJHTF9OVl9waXhlbF9idWZmZXJfb2JqZWN0
Il0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnBpeGVsQnVmZmVyT2JqZWN0KTsKKyAg
ICAgICAgbWFwWyJHTF9PRVNfbWFwYnVmZmVyIl0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lv
bnM6Om1hcEJ1ZmZlcik7CisgICAgICAgIG1hcFsiR0xfRVhUX21hcF9idWZmZXJfcmFuZ2UiXSA9
IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6bWFwQnVmZmVyUmFuZ2UpOworICAgICAgICBt
YXBbIkdMX0VYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCJdID0gZXNPbmx5RXh0ZW5zaW9uKCZF
eHRlbnNpb25zOjpjb2xvckJ1ZmZlckhhbGZGbG9hdCk7CisgICAgICAgIG1hcFsiR0xfT0VTX3Rl
eHR1cmVfaGFsZl9mbG9hdCJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjp0ZXh0dXJl
SGFsZkZsb2F0KTsKKyAgICAgICAgbWFwWyJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVh
ciJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjp0ZXh0dXJlSGFsZkZsb2F0TGluZWFy
KTsKKyAgICAgICAgbWFwWyJHTF9PRVNfdGV4dHVyZV9mbG9hdCJdID0gZXNPbmx5RXh0ZW5zaW9u
KCZFeHRlbnNpb25zOjp0ZXh0dXJlRmxvYXQpOworICAgICAgICBtYXBbIkdMX09FU190ZXh0dXJl
X2Zsb2F0X2xpbmVhciJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjp0ZXh0dXJlRmxv
YXRMaW5lYXIpOworICAgICAgICBtYXBbIkdMX0VYVF90ZXh0dXJlX3JnIl0gPSBlc09ubHlFeHRl
bnNpb24oJkV4dGVuc2lvbnM6OnRleHR1cmVSRyk7CisgICAgICAgIG1hcFsiR0xfRVhUX3RleHR1
cmVfY29tcHJlc3Npb25fZHh0MSJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjp0ZXh0
dXJlQ29tcHJlc3Npb25EWFQxKTsKKyAgICAgICAgbWFwWyJHTF9BTkdMRV90ZXh0dXJlX2NvbXBy
ZXNzaW9uX2R4dDMiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6dGV4dHVyZUNvbXBy
ZXNzaW9uRFhUMyk7CisgICAgICAgIG1hcFsiR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9k
eHQ1Il0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lvbkRY
VDUpOworICAgICAgICBtYXBbIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfaGRyIl0g
PSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lvbkFTVENIRFIp
OworICAgICAgICBtYXBbIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl0gPSBl
c09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lvbkFTVENMRFIpOwor
ICAgICAgICBtYXBbIkdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlIl0gPSBlc09u
bHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OmNvbXByZXNzZWRFVEMxUkdCOFRleHR1cmUpOworICAg
ICAgICBtYXBbIkdMX0VYVF9zUkdCIl0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnNS
R0IpOworICAgICAgICBtYXBbIkdMX0FOR0xFX2RlcHRoX3RleHR1cmUiXSA9IGVzT25seUV4dGVu
c2lvbigmRXh0ZW5zaW9uczo6ZGVwdGhUZXh0dXJlcyk7CisgICAgICAgIG1hcFsiR0xfT0VTX2Rl
cHRoMzIiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6ZGVwdGgzMik7CisgICAgICAg
IG1hcFsiR0xfRVhUX3RleHR1cmVfc3RvcmFnZSJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNp
b25zOjp0ZXh0dXJlU3RvcmFnZSk7CisgICAgICAgIG1hcFsiR0xfT0VTX3RleHR1cmVfbnBvdCJd
ID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjp0ZXh0dXJlTlBPVCk7CisgICAgICAgIG1h
cFsiR0xfRVhUX2RyYXdfYnVmZmVycyJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpk
cmF3QnVmZmVycyk7CisgICAgICAgIG1hcFsiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJv
cGljIl0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnRleHR1cmVGaWx0ZXJBbmlzb3Ry
b3BpYyk7CisgICAgICAgIG1hcFsiR0xfRVhUX29jY2x1c2lvbl9xdWVyeV9ib29sZWFuIl0gPSBl
c09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6Om9jY2x1c2lvblF1ZXJ5Qm9vbGVhbik7CisgICAg
ICAgIG1hcFsiR0xfTlZfZmVuY2UiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6ZmVu
Y2UpOworICAgICAgICBtYXBbIkdMX0FOR0xFX3RpbWVyX3F1ZXJ5Il0gPSBlc09ubHlFeHRlbnNp
b24oJkV4dGVuc2lvbnM6OnRpbWVyUXVlcnkpOworICAgICAgICBtYXBbIkdMX0VYVF9kaXNqb2lu
dF90aW1lcl9xdWVyeSJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpkaXNqb2ludFRp
bWVyUXVlcnkpOworICAgICAgICBtYXBbIkdMX0VYVF9yb2J1c3RuZXNzIl0gPSBlc09ubHlFeHRl
bnNpb24oJkV4dGVuc2lvbnM6OnJvYnVzdG5lc3MpOworICAgICAgICBtYXBbIkdMX0VYVF9ibGVu
ZF9taW5tYXgiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6YmxlbmRNaW5NYXgpOwor
ICAgICAgICBtYXBbIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiXSA9IGVzT25seUV4dGVuc2lv
bigmRXh0ZW5zaW9uczo6ZnJhbWVidWZmZXJCbGl0KTsKKyAgICAgICAgbWFwWyJHTF9BTkdMRV9m
cmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpm
cmFtZWJ1ZmZlck11bHRpc2FtcGxlKTsKKyAgICAgICAgbWFwWyJHTF9BTkdMRV9pbnN0YW5jZWRf
YXJyYXlzIl0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6Omluc3RhbmNlZEFycmF5cyk7
CisgICAgICAgIG1hcFsiR0xfQU5HTEVfcGFja19yZXZlcnNlX3Jvd19vcmRlciJdID0gZXNPbmx5
RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpwYWNrUmV2ZXJzZVJvd09yZGVyKTsKKyAgICAgICAgbWFw
WyJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5z
aW9uczo6c3RhbmRhcmREZXJpdmF0aXZlcyk7CisgICAgICAgIG1hcFsiR0xfRVhUX3NoYWRlcl90
ZXh0dXJlX2xvZCJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpzaGFkZXJUZXh0dXJl
TE9EKTsKKyAgICAgICAgbWFwWyJHTF9OVl9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2giXSA9IGVz
T25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6TlZzaGFkZXJGcmFtZWJ1ZmZlckZldGNoKTsKKyAg
ICAgICAgbWFwWyJHTF9BUk1fc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoIl0gPSBlc09ubHlFeHRl
bnNpb24oJkV4dGVuc2lvbnM6OkFSTXNoYWRlckZyYW1lYnVmZmVyRmV0Y2gpOworICAgICAgICBt
YXBbIkdMX0VYVF9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2giXSA9IGVzT25seUV4dGVuc2lvbigm
RXh0ZW5zaW9uczo6c2hhZGVyRnJhbWVidWZmZXJGZXRjaCk7CisgICAgICAgIG1hcFsiR0xfRVhU
X2ZyYWdfZGVwdGgiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6ZnJhZ0RlcHRoKTsK
KyAgICAgICAgbWFwWyJHTF9BTkdMRV90ZXh0dXJlX3VzYWdlIl0gPSBlc09ubHlFeHRlbnNpb24o
JkV4dGVuc2lvbnM6OnRleHR1cmVVc2FnZSk7CisgICAgICAgIG1hcFsiR0xfQU5HTEVfdHJhbnNs
YXRlZF9zaGFkZXJfc291cmNlIl0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnRyYW5z
bGF0ZWRTaGFkZXJTb3VyY2UpOworICAgICAgICBtYXBbIkdMX09FU19mYm9fcmVuZGVyX21pcG1h
cCJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpmYm9SZW5kZXJNaXBtYXApOworICAg
ICAgICBtYXBbIkdMX0VYVF9kaXNjYXJkX2ZyYW1lYnVmZmVyIl0gPSBlc09ubHlFeHRlbnNpb24o
JkV4dGVuc2lvbnM6OmRpc2NhcmRGcmFtZWJ1ZmZlcik7CisgICAgICAgIG1hcFsiR0xfRVhUX2Rl
YnVnX21hcmtlciJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpkZWJ1Z01hcmtlcik7
CisgICAgICAgIG1hcFsiR0xfT0VTX0VHTF9pbWFnZSJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRl
bnNpb25zOjplZ2xJbWFnZSk7CisgICAgICAgIG1hcFsiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5h
bCJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjplZ2xJbWFnZUV4dGVybmFsKTsKKyAg
ICAgICAgbWFwWyJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vzc2wzIl0gPSBlc09ubHlFeHRl
bnNpb24oJkV4dGVuc2lvbnM6OmVnbEltYWdlRXh0ZXJuYWxFc3NsMyk7CisgICAgICAgIG1hcFsi
R0xfTlZfRUdMX3N0cmVhbV9jb25zdW1lcl9leHRlcm5hbCJdID0gZXNPbmx5RXh0ZW5zaW9uKCZF
eHRlbnNpb25zOjplZ2xTdHJlYW1Db25zdW1lckV4dGVybmFsKTsKKyAgICAgICAgbWFwWyJHTF9F
WFRfdW5wYWNrX3N1YmltYWdlIl0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnVucGFj
a1N1YmltYWdlKTsKKyAgICAgICAgbWFwWyJHTF9OVl9wYWNrX3N1YmltYWdlIl0gPSBlc09ubHlF
eHRlbnNpb24oJkV4dGVuc2lvbnM6OnBhY2tTdWJpbWFnZSk7CisgICAgICAgIG1hcFsiR0xfRVhU
X2NvbG9yX2J1ZmZlcl9mbG9hdCJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpjb2xv
ckJ1ZmZlckZsb2F0KTsKKyAgICAgICAgbWFwWyJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJd
ID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjp2ZXJ0ZXhBcnJheU9iamVjdCk7CisgICAg
ICAgIG1hcFsiR0xfS0hSX2RlYnVnIl0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OmRl
YnVnKTsKKyAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogRW5hYmxlIHRoaXMgd2hlbiBjb21wbGV0
ZS4KKyAgICAgICAgLy9tYXBbIkdMX0tIUl9ub19lcnJvciJdID0gZXNPbmx5RXh0ZW5zaW9uKCZF
eHRlbnNpb25zOjpub0Vycm9yKTsKKyAgICAgICAgbWFwWyJHTF9BTkdMRV9sb3NzeV9ldGNfZGVj
b2RlIl0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6Omxvc3N5RVRDRGVjb2RlKTsKKyAg
ICAgICAgbWFwWyJHTF9DSFJPTUlVTV9iaW5kX3VuaWZvcm1fbG9jYXRpb24iXSA9IGVzT25seUV4
dGVuc2lvbigmRXh0ZW5zaW9uczo6YmluZFVuaWZvcm1Mb2NhdGlvbik7CisgICAgICAgIG1hcFsi
R0xfQ0hST01JVU1fc3luY19xdWVyeSJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpz
eW5jUXVlcnkpOworICAgICAgICBtYXBbIkdMX0NIUk9NSVVNX2NvcHlfdGV4dHVyZSJdID0gZXNP
bmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpjb3B5VGV4dHVyZSk7CisgICAgICAgIG1hcFsiR0xf
Q0hST01JVU1fY29weV9jb21wcmVzc2VkX3RleHR1cmUiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0
ZW5zaW9uczo6Y29weUNvbXByZXNzZWRUZXh0dXJlKTsKKyAgICAgICAgbWFwWyJHTF9BTkdMRV93
ZWJnbF9jb21wYXRpYmlsaXR5Il0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OndlYmds
Q29tcGF0aWJpbGl0eSk7CisgICAgICAgIG1hcFsiR0xfQ0hST01JVU1fYmluZF9nZW5lcmF0ZXNf
cmVzb3VyY2UiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6YmluZEdlbmVyYXRlc1Jl
c291cmNlKTsKKyAgICAgICAgbWFwWyJHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeSJdID0g
ZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpyb2J1c3RDbGllbnRNZW1vcnkpOworICAgICAg
ICBtYXBbIkdMX0VYVF9tdWx0aXNhbXBsZV9jb21wYXRpYmlsaXR5Il0gPSBlc09ubHlFeHRlbnNp
b24oJkV4dGVuc2lvbnM6Om11bHRpc2FtcGxlQ29tcGF0aWJpbGl0eSk7CisgICAgICAgIG1hcFsi
R0xfQ0hST01JVU1fZnJhbWVidWZmZXJfbWl4ZWRfc2FtcGxlcyJdID0gZXNPbmx5RXh0ZW5zaW9u
KCZFeHRlbnNpb25zOjpmcmFtZWJ1ZmZlck1peGVkU2FtcGxlcyk7CisgICAgICAgIG1hcFsiR0xf
RVhUX3RleHR1cmVfbm9ybTE2Il0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnRleHR1
cmVOb3JtMTYpOworICAgICAgICBtYXBbIkdMX0NIUk9NSVVNX3BhdGhfcmVuZGVyaW5nIl0gPSBl
c09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnBhdGhSZW5kZXJpbmcpOworICAgICAgICAvLyBj
bGFuZy1mb3JtYXQgb24KKworICAgICAgICByZXR1cm4gbWFwOworICAgIH07CisKKyNwcmFnbWEg
R0NDIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2V4
aXQtdGltZS1kZXN0cnVjdG9ycyIKKyAgICBzdGF0aWMgY29uc3QgRXh0ZW5zaW9uSW5mb01hcCBl
eHRlbnNpb25JbmZvID0gYnVpbGRFeHRlbnNpb25JbmZvTWFwKCk7CisjcHJhZ21hIEdDQyBkaWFn
bm9zdGljIHBvcAorICAgIHJldHVybiBleHRlbnNpb25JbmZvOwogfQogCiBUeXBlUHJlY2lzaW9u
OjpUeXBlUHJlY2lzaW9uKCkKQEAgLTU2MSwzMyArNjQ3LDcyIEBAIENhcHM6OkNhcHMoKQogICAg
ICAgbWF4TE9EQmlhcygwKSwKICAgICAgIG1heEN1YmVNYXBUZXh0dXJlU2l6ZSgwKSwKICAgICAg
IG1heFJlbmRlcmJ1ZmZlclNpemUoMCksCisgICAgICBtaW5BbGlhc2VkUG9pbnRTaXplKDApLAor
ICAgICAgbWF4QWxpYXNlZFBvaW50U2l6ZSgwKSwKKyAgICAgIG1pbkFsaWFzZWRMaW5lV2lkdGgo
MCksCisgICAgICBtYXhBbGlhc2VkTGluZVdpZHRoKDApLAorCisgICAgICAvLyBUYWJsZSAyMC40
MAogICAgICAgbWF4RHJhd0J1ZmZlcnMoMCksCisgICAgICBtYXhGcmFtZWJ1ZmZlcldpZHRoKDAp
LAorICAgICAgbWF4RnJhbWVidWZmZXJIZWlnaHQoMCksCisgICAgICBtYXhGcmFtZWJ1ZmZlclNh
bXBsZXMoMCksCiAgICAgICBtYXhDb2xvckF0dGFjaG1lbnRzKDApLAogICAgICAgbWF4Vmlld3Bv
cnRXaWR0aCgwKSwKICAgICAgIG1heFZpZXdwb3J0SGVpZ2h0KDApLAotICAgICAgbWluQWxpYXNl
ZFBvaW50U2l6ZSgwKSwKLSAgICAgIG1heEFsaWFzZWRQb2ludFNpemUoMCksCi0gICAgICBtaW5B
bGlhc2VkTGluZVdpZHRoKDApLAotICAgICAgLy8gVGFibGUgNi4yOQorICAgICAgbWF4U2FtcGxl
TWFza1dvcmRzKDApLAorICAgICAgbWF4Q29sb3JUZXh0dXJlU2FtcGxlcygwKSwKKyAgICAgIG1h
eERlcHRoVGV4dHVyZVNhbXBsZXMoMCksCisgICAgICBtYXhJbnRlZ2VyU2FtcGxlcygwKSwKKyAg
ICAgIG1heFNlcnZlcldhaXRUaW1lb3V0KDApLAorCisgICAgICAvLyBUYWJsZSAyMC40MQorICAg
ICAgbWF4VmVydGV4QXR0cmliUmVsYXRpdmVPZmZzZXQoMCksCisgICAgICBtYXhWZXJ0ZXhBdHRy
aWJCaW5kaW5ncygwKSwKKyAgICAgIG1heFZlcnRleEF0dHJpYlN0cmlkZSgwKSwKICAgICAgIG1h
eEVsZW1lbnRzSW5kaWNlcygwKSwKICAgICAgIG1heEVsZW1lbnRzVmVydGljZXMoMCksCi0gICAg
ICBtYXhTZXJ2ZXJXYWl0VGltZW91dCgwKSwKLSAgICAgIC8vIFRhYmxlIDYuMzEKKworICAgICAg
Ly8gVGFibGUgMjAuNDMKICAgICAgIG1heFZlcnRleEF0dHJpYnV0ZXMoMCksCiAgICAgICBtYXhW
ZXJ0ZXhVbmlmb3JtQ29tcG9uZW50cygwKSwKICAgICAgIG1heFZlcnRleFVuaWZvcm1WZWN0b3Jz
KDApLAogICAgICAgbWF4VmVydGV4VW5pZm9ybUJsb2NrcygwKSwKICAgICAgIG1heFZlcnRleE91
dHB1dENvbXBvbmVudHMoMCksCiAgICAgICBtYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cygwKSwK
LSAgICAgIC8vIFRhYmxlIDYuMzIKKyAgICAgIG1heFZlcnRleEF0b21pY0NvdW50ZXJCdWZmZXJz
KDApLAorICAgICAgbWF4VmVydGV4QXRvbWljQ291bnRlcnMoMCksCisgICAgICBtYXhWZXJ0ZXhJ
bWFnZVVuaWZvcm1zKDApLAorICAgICAgbWF4VmVydGV4U2hhZGVyU3RvcmFnZUJsb2NrcygwKSwK
KworICAgICAgLy8gVGFibGUgMjAuNDQKICAgICAgIG1heEZyYWdtZW50VW5pZm9ybUNvbXBvbmVu
dHMoMCksCiAgICAgICBtYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzKDApLAogICAgICAgbWF4RnJh
Z21lbnRVbmlmb3JtQmxvY2tzKDApLAogICAgICAgbWF4RnJhZ21lbnRJbnB1dENvbXBvbmVudHMo
MCksCiAgICAgICBtYXhUZXh0dXJlSW1hZ2VVbml0cygwKSwKKyAgICAgIG1heEZyYWdtZW50QXRv
bWljQ291bnRlckJ1ZmZlcnMoMCksCisgICAgICBtYXhGcmFnbWVudEF0b21pY0NvdW50ZXJzKDAp
LAorICAgICAgbWF4RnJhZ21lbnRJbWFnZVVuaWZvcm1zKDApLAorICAgICAgbWF4RnJhZ21lbnRT
aGFkZXJTdG9yYWdlQmxvY2tzKDApLAorICAgICAgbWluUHJvZ3JhbVRleHR1cmVHYXRoZXJPZmZz
ZXQoMCksCisgICAgICBtYXhQcm9ncmFtVGV4dHVyZUdhdGhlck9mZnNldCgwKSwKICAgICAgIG1p
blByb2dyYW1UZXhlbE9mZnNldCgwKSwKICAgICAgIG1heFByb2dyYW1UZXhlbE9mZnNldCgwKSwK
LSAgICAgIC8vIFRhYmxlIDYuMzMKKworICAgICAgLy8gVGFibGUgMjAuNDUKKyAgICAgIG1heENv
bXB1dGVXb3JrR3JvdXBJbnZvY2F0aW9ucygwKSwKKyAgICAgIG1heENvbXB1dGVVbmlmb3JtQmxv
Y2tzKDApLAorICAgICAgbWF4Q29tcHV0ZVRleHR1cmVJbWFnZVVuaXRzKDApLAorICAgICAgbWF4
Q29tcHV0ZVNoYXJlZE1lbW9yeVNpemUoMCksCisgICAgICBtYXhDb21wdXRlVW5pZm9ybUNvbXBv
bmVudHMoMCksCisgICAgICBtYXhDb21wdXRlQXRvbWljQ291bnRlckJ1ZmZlcnMoMCksCisgICAg
ICBtYXhDb21wdXRlQXRvbWljQ291bnRlcnMoMCksCisgICAgICBtYXhDb21wdXRlSW1hZ2VVbmlm
b3JtcygwKSwKKyAgICAgIG1heENvbWJpbmVkQ29tcHV0ZVVuaWZvcm1Db21wb25lbnRzKDApLAor
ICAgICAgbWF4Q29tcHV0ZVNoYWRlclN0b3JhZ2VCbG9ja3MoMCksCisKKyAgICAgIC8vIFRhYmxl
IDIwLjQ2CiAgICAgICBtYXhVbmlmb3JtQnVmZmVyQmluZGluZ3MoMCksCiAgICAgICBtYXhVbmlm
b3JtQmxvY2tTaXplKDApLAogICAgICAgdW5pZm9ybUJ1ZmZlck9mZnNldEFsaWdubWVudCgwKSwK
QEAgLTU5NywxMyArNzIyLDM1IEBAIENhcHM6OkNhcHMoKQogICAgICAgbWF4VmFyeWluZ0NvbXBv
bmVudHMoMCksCiAgICAgICBtYXhWYXJ5aW5nVmVjdG9ycygwKSwKICAgICAgIG1heENvbWJpbmVk
VGV4dHVyZUltYWdlVW5pdHMoMCksCi0gICAgICAvLyBUYWJsZSA2LjM0CisgICAgICBtYXhDb21i
aW5lZFNoYWRlck91dHB1dFJlc291cmNlcygwKSwKKworICAgICAgLy8gVGFibGUgMjAuNDcKKyAg
ICAgIG1heFVuaWZvcm1Mb2NhdGlvbnMoMCksCisgICAgICBtYXhBdG9taWNDb3VudGVyQnVmZmVy
QmluZGluZ3MoMCksCisgICAgICBtYXhBdG9taWNDb3VudGVyQnVmZmVyU2l6ZSgwKSwKKyAgICAg
IG1heENvbWJpbmVkQXRvbWljQ291bnRlckJ1ZmZlcnMoMCksCisgICAgICBtYXhDb21iaW5lZEF0
b21pY0NvdW50ZXJzKDApLAorICAgICAgbWF4SW1hZ2VVbml0cygwKSwKKyAgICAgIG1heENvbWJp
bmVkSW1hZ2VVbmlmb3JtcygwKSwKKyAgICAgIG1heFNoYWRlclN0b3JhZ2VCdWZmZXJCaW5kaW5n
cygwKSwKKyAgICAgIG1heFNoYWRlclN0b3JhZ2VCbG9ja1NpemUoMCksCisgICAgICBtYXhDb21i
aW5lZFNoYWRlclN0b3JhZ2VCbG9ja3MoMCksCisgICAgICBzaGFkZXJTdG9yYWdlQnVmZmVyT2Zm
c2V0QWxpZ25tZW50KDApLAorCisgICAgICAvLyBUYWJsZSAyMC40OAogICAgICAgbWF4VHJhbnNm
b3JtRmVlZGJhY2tJbnRlcmxlYXZlZENvbXBvbmVudHMoMCksCiAgICAgICBtYXhUcmFuc2Zvcm1G
ZWVkYmFja1NlcGFyYXRlQXR0cmlidXRlcygwKSwKICAgICAgIG1heFRyYW5zZm9ybUZlZWRiYWNr
U2VwYXJhdGVDb21wb25lbnRzKDApLAotICAgICAgLy8gVGFibGUgNi4zNQorCisgICAgICAvLyBU
YWJsZSAyMC40OQogICAgICAgbWF4U2FtcGxlcygwKQorCiB7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCAzOyArK2kpCisgICAgeworICAgICAgICBtYXhDb21wdXRlV29ya0dyb3VwQ291bnRb
aV0gPSAwOworICAgICAgICBtYXhDb21wdXRlV29ya0dyb3VwU2l6ZVtpXSAgPSAwOworICAgIH0K
IH0KIAogfQpAQCAtNjQxLDcgKzc4OCwxMCBAQCBEaXNwbGF5RXh0ZW5zaW9uczo6RGlzcGxheUV4
dGVuc2lvbnMoKQogICAgICAgc3RyZWFtKGZhbHNlKSwKICAgICAgIHN0cmVhbUNvbnN1bWVyR0xU
ZXh0dXJlKGZhbHNlKSwKICAgICAgIHN0cmVhbUNvbnN1bWVyR0xUZXh0dXJlWVVWKGZhbHNlKSwK
LSAgICAgIHN0cmVhbVByb2R1Y2VyRDNEVGV4dHVyZU5WMTIoZmFsc2UpCisgICAgICBzdHJlYW1Q
cm9kdWNlckQzRFRleHR1cmVOVjEyKGZhbHNlKSwKKyAgICAgIGNyZWF0ZUNvbnRleHRXZWJHTENv
bXBhdGliaWxpdHkoZmFsc2UpLAorICAgICAgY3JlYXRlQ29udGV4dEJpbmRHZW5lcmF0ZXNSZXNv
dXJjZShmYWxzZSksCisgICAgICBnZXRTeW5jVmFsdWVzKGZhbHNlKQogewogfQogCkBAIC02NTAs
MzIgKzgwMCwzNiBAQCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gRGlzcGxheUV4dGVuc2lvCiAg
ICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGV4dGVuc2lvblN0cmluZ3M7CiAKICAgICAvLyBj
bGFuZy1mb3JtYXQgb2ZmCi0gICAgLy8gICAgICAgICAgICAgICAgICAgfCBFeHRlbnNpb24gbmFt
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkIGZsYWcgICAgICAg
ICAgICAgICAgfCBPdXRwdXQgdmVjdG9yICAgfAotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygi
RUdMX0VYVF9jcmVhdGVfY29udGV4dF9yb2J1c3RuZXNzIiwgICAgICAgICAgICAgY3JlYXRlQ29u
dGV4dFJvYnVzdG5lc3MsICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0
ZW5zaW9uU3RyaW5nKCJFR0xfQU5HTEVfZDNkX3NoYXJlX2hhbmRsZV9jbGllbnRfYnVmZmVyIiwg
ICAgICBkM2RTaGFyZUhhbmRsZUNsaWVudEJ1ZmZlciwgICAgICZleHRlbnNpb25TdHJpbmdzKTsK
LSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkVHTF9BTkdMRV9zdXJmYWNlX2QzZF90ZXh0dXJl
XzJkX3NoYXJlX2hhbmRsZSIsIHN1cmZhY2VEM0RUZXh0dXJlMkRTaGFyZUhhbmRsZSwgJmV4dGVu
c2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0FOR0xFX3F1ZXJ5
X3N1cmZhY2VfcG9pbnRlciIsICAgICAgICAgICAgICAgcXVlcnlTdXJmYWNlUG9pbnRlciwgICAg
ICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJF
R0xfQU5HTEVfd2luZG93X2ZpeGVkX3NpemUiLCAgICAgICAgICAgICAgICAgICB3aW5kb3dGaXhl
ZFNpemUsICAgICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRl
bnNpb25TdHJpbmcoIkVHTF9BTkdMRV9rZXllZF9tdXRleCIsICAgICAgICAgICAgICAgICAgICAg
ICAgIGtleWVkTXV0ZXgsICAgICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwot
ICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0FOR0xFX3N1cmZhY2Vfb3JpZW50YXRpb24i
LCAgICAgICAgICAgICAgICAgc3VyZmFjZU9yaWVudGF0aW9uLCAgICAgICAgICAgICAmZXh0ZW5z
aW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfQU5HTEVfZGlyZWN0
X2NvbXBvc2l0aW9uIiwgICAgICAgICAgICAgICAgICBkaXJlY3RDb21wb3NpdGlvbiwgICAgICAg
ICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkVH
TF9OVl9wb3N0X3N1Yl9idWZmZXIiLCAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RTdWJCdWZm
ZXIsICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVu
c2lvblN0cmluZygiRUdMX0tIUl9jcmVhdGVfY29udGV4dCIsICAgICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlQ29udGV4dCwgICAgICAgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0g
ICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfRVhUX2RldmljZV9xdWVyeSIsICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXZpY2VRdWVyeSwgICAgICAgICAgICAgICAgICAgICZleHRlbnNp
b25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkVHTF9LSFJfaW1hZ2UiLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdM
X0tIUl9pbWFnZV9iYXNlIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VCYXNlLCAg
ICAgICAgICAgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5z
aW9uU3RyaW5nKCJFR0xfS0hSX2ltYWdlX3BpeG1hcCIsICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbWFnZVBpeG1hcCwgICAgICAgICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAg
ICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSIsICAg
ICAgICAgICAgICAgICAgIGdsVGV4dHVyZTJESW1hZ2UsICAgICAgICAgICAgICAgJmV4dGVuc2lv
blN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0tIUl9nbF90ZXh0dXJl
X2N1YmVtYXBfaW1hZ2UiLCAgICAgICAgICAgICAgZ2xUZXh0dXJlQ3ViZW1hcEltYWdlLCAgICAg
ICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xf
S0hSX2dsX3RleHR1cmVfM0RfaW1hZ2UiLCAgICAgICAgICAgICAgICAgICBnbFRleHR1cmUzRElt
YWdlLCAgICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNp
b25TdHJpbmcoIkVHTF9LSFJfZ2xfcmVuZGVyYnVmZmVyX2ltYWdlIiwgICAgICAgICAgICAgICAg
IGdsUmVuZGVyYnVmZmVySW1hZ2UsICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAg
IEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0tIUl9nZXRfYWxsX3Byb2NfYWRkcmVzc2VzIiwg
ICAgICAgICAgICAgICAgZ2V0QWxsUHJvY0FkZHJlc3NlcywgICAgICAgICAgICAmZXh0ZW5zaW9u
U3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfS0hSX3N0cmVhbSIsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0sICAgICAgICAgICAgICAgICAgICAg
ICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkVHTF9L
SFJfc3RyZWFtX2NvbnN1bWVyX2dsdGV4dHVyZSIsICAgICAgICAgICAgIHN0cmVhbUNvbnN1bWVy
R0xUZXh0dXJlLCAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lv
blN0cmluZygiRUdMX05WX3N0cmVhbV9jb25zdW1lcl9nbHRleHR1cmVfeXV2IiwgICAgICAgICAg
c3RyZWFtQ29uc3VtZXJHTFRleHR1cmVZVVYsICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAg
SW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfQU5HTEVfZmxleGlibGVfc3VyZmFjZV9jb21wYXRp
YmlsaXR5IiwgICAgICBmbGV4aWJsZVN1cmZhY2VDb21wYXRpYmlsaXR5LCAgICZleHRlbnNpb25T
dHJpbmdzKTsKKyAgICAvLyAgICAgICAgICAgICAgICAgICB8IEV4dGVuc2lvbiBuYW1lICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQgZmxhZyAgICAgICAg
ICAgICAgICAgICAgfCBPdXRwdXQgdmVjdG9yICAgfAorICAgIEluc2VydEV4dGVuc2lvblN0cmlu
ZygiRUdMX0VYVF9jcmVhdGVfY29udGV4dF9yb2J1c3RuZXNzIiwgICAgICAgICAgICAgICAgICAg
Y3JlYXRlQ29udGV4dFJvYnVzdG5lc3MsICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwor
ICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0FOR0xFX2QzZF9zaGFyZV9oYW5kbGVfY2xp
ZW50X2J1ZmZlciIsICAgICAgICAgICAgZDNkU2hhcmVIYW5kbGVDbGllbnRCdWZmZXIsICAgICAg
ICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0FO
R0xFX3N1cmZhY2VfZDNkX3RleHR1cmVfMmRfc2hhcmVfaGFuZGxlIiwgICAgICAgc3VyZmFjZUQz
RFRleHR1cmUyRFNoYXJlSGFuZGxlLCAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2Vy
dEV4dGVuc2lvblN0cmluZygiRUdMX0FOR0xFX3F1ZXJ5X3N1cmZhY2VfcG9pbnRlciIsICAgICAg
ICAgICAgICAgICAgICAgcXVlcnlTdXJmYWNlUG9pbnRlciwgICAgICAgICAgICAgICAgJmV4dGVu
c2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0FOR0xFX3dpbmRv
d19maXhlZF9zaXplIiwgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Rml4ZWRTaXplLCAg
ICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lv
blN0cmluZygiRUdMX0FOR0xFX2tleWVkX211dGV4IiwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAga2V5ZWRNdXRleCwgICAgICAgICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmlu
Z3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0FOR0xFX3N1cmZhY2Vfb3JpZW50
YXRpb24iLCAgICAgICAgICAgICAgICAgICAgICAgc3VyZmFjZU9yaWVudGF0aW9uLCAgICAgICAg
ICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygi
RUdMX0FOR0xFX2RpcmVjdF9jb21wb3NpdGlvbiIsICAgICAgICAgICAgICAgICAgICAgICAgZGly
ZWN0Q29tcG9zaXRpb24sICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAg
IEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX05WX3Bvc3Rfc3ViX2J1ZmZlciIsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcG9zdFN1YkJ1ZmZlciwgICAgICAgICAgICAgICAgICAgICAg
JmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0tIUl9j
cmVhdGVfY29udGV4dCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlQ29udGV4
dCwgICAgICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4
dGVuc2lvblN0cmluZygiRUdMX0VYVF9kZXZpY2VfcXVlcnkiLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGV2aWNlUXVlcnksICAgICAgICAgICAgICAgICAgICAgICAgJmV4dGVuc2lv
blN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0tIUl9pbWFnZSIsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0
cmluZygiRUdMX0tIUl9pbWFnZV9iYXNlIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW1hZ2VCYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3Mp
OworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0tIUl9pbWFnZV9waXhtYXAiLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VQaXhtYXAsICAgICAgICAgICAgICAgICAg
ICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdM
X0tIUl9nbF90ZXh0dXJlXzJEX2ltYWdlIiwgICAgICAgICAgICAgICAgICAgICAgICAgZ2xUZXh0
dXJlMkRJbWFnZSwgICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIElu
c2VydEV4dGVuc2lvblN0cmluZygiRUdMX0tIUl9nbF90ZXh0dXJlX2N1YmVtYXBfaW1hZ2UiLCAg
ICAgICAgICAgICAgICAgICAgZ2xUZXh0dXJlQ3ViZW1hcEltYWdlLCAgICAgICAgICAgICAgJmV4
dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0tIUl9nbF90
ZXh0dXJlXzNEX2ltYWdlIiwgICAgICAgICAgICAgICAgICAgICAgICAgZ2xUZXh0dXJlM0RJbWFn
ZSwgICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVu
c2lvblN0cmluZygiRUdMX0tIUl9nbF9yZW5kZXJidWZmZXJfaW1hZ2UiLCAgICAgICAgICAgICAg
ICAgICAgICAgZ2xSZW5kZXJidWZmZXJJbWFnZSwgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0
cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0tIUl9nZXRfYWxsX3Byb2Nf
YWRkcmVzc2VzIiwgICAgICAgICAgICAgICAgICAgICAgZ2V0QWxsUHJvY0FkZHJlc3NlcywgICAg
ICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmlu
ZygiRUdMX0tIUl9zdHJlYW0iLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RyZWFtLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwor
ICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0tIUl9zdHJlYW1fY29uc3VtZXJfZ2x0ZXh0
dXJlIiwgICAgICAgICAgICAgICAgICAgc3RyZWFtQ29uc3VtZXJHTFRleHR1cmUsICAgICAgICAg
ICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX05W
X3N0cmVhbV9jb25zdW1lcl9nbHRleHR1cmVfeXV2IiwgICAgICAgICAgICAgICAgc3RyZWFtQ29u
c3VtZXJHTFRleHR1cmVZVVYsICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2Vy
dEV4dGVuc2lvblN0cmluZygiRUdMX0FOR0xFX2ZsZXhpYmxlX3N1cmZhY2VfY29tcGF0aWJpbGl0
eSIsICAgICAgICAgICAgZmxleGlibGVTdXJmYWNlQ29tcGF0aWJpbGl0eSwgICAgICAgJmV4dGVu
c2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0FOR0xFX3N0cmVh
bV9wcm9kdWNlcl9kM2RfdGV4dHVyZV9udjEyIiwgICAgICAgICAgc3RyZWFtUHJvZHVjZXJEM0RU
ZXh0dXJlTlYxMiwgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lv
blN0cmluZygiRUdMX0FOR0xFX2NyZWF0ZV9jb250ZXh0X3dlYmdsX2NvbXBhdGliaWxpdHkiLCAg
ICAgICAgY3JlYXRlQ29udGV4dFdlYkdMQ29tcGF0aWJpbGl0eSwgICAgJmV4dGVuc2lvblN0cmlu
Z3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0NIUk9NSVVNX2NyZWF0ZV9jb250
ZXh0X2JpbmRfZ2VuZXJhdGVzX3Jlc291cmNlIiwgY3JlYXRlQ29udGV4dEJpbmRHZW5lcmF0ZXNS
ZXNvdXJjZSwgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygi
RUdMX0NIUk9NSVVNX3N5bmNfY29udHJvbCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0
U3luY1ZhbHVlcywgICAgICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwogICAg
IC8vIFRPRE8oam1hZGlsbCk6IEVuYWJsZSB0aGlzIHdoZW4gY29tcGxldGUuCi0gICAgLy9JbnNl
cnRFeHRlbnNpb25TdHJpbmcoIktIUl9jcmVhdGVfY29udGV4dF9ub19lcnJvciIsICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZUNvbnRleHROb0Vycm9yLCAgICAgICAgICAgJmV4dGVuc2lvblN0cmlu
Z3MpOworICAgIC8vSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJLSFJfY3JlYXRlX2NvbnRleHRfbm9f
ZXJyb3IiLCAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlQ29udGV4dE5vRXJyb3IsICAgICAg
ICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwogICAgIC8vIGNsYW5nLWZvcm1hdCBvbgogCiAg
ICAgcmV0dXJuIGV4dGVuc2lvblN0cmluZ3M7CkBAIC03MjMsNiArODc3LDcgQEAgc3RkOjp2ZWN0
b3I8c3RkOjpzdHJpbmc+IENsaWVudEV4dGVuc2lvbgogICAgIEluc2VydEV4dGVuc2lvblN0cmlu
ZygiRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlIiwgICAgICAgICAgICAgIHBsYXRmb3JtQU5HTEUs
ICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKICAgICBJbnNlcnRFeHRlbnNpb25TdHJp
bmcoIkVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9kM2QiLCAgICAgICAgICBwbGF0Zm9ybUFOR0xF
RDNELCAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CiAgICAgSW5zZXJ0RXh0ZW5zaW9uU3Ry
aW5nKCJFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfb3BlbmdsIiwgICAgICAgcGxhdGZvcm1BTkdM
RU9wZW5HTCwgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0
cmluZygiRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlX251bGwiLCAgICAgICAgIHBsYXRmb3JtQU5H
TEVOVUxMLCAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKICAgICBJbnNlcnRFeHRlbnNpb25T
dHJpbmcoIkVHTF9BTkdMRV9kZXZpY2VfY3JlYXRpb24iLCAgICAgICAgICAgICBkZXZpY2VDcmVh
dGlvbiwgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CiAgICAgSW5zZXJ0RXh0ZW5zaW9u
U3RyaW5nKCJFR0xfQU5HTEVfZGV2aWNlX2NyZWF0aW9uX2QzZDExIiwgICAgICAgZGV2aWNlQ3Jl
YXRpb25EM0QxMSwgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwogICAgIEluc2VydEV4dGVuc2lv
blN0cmluZygiRUdMX0FOR0xFX3gxMV92aXN1YWwiLCAgICAgICAgICAgICAgICAgIHgxMVZpc3Vh
bCwgICAgICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9DYXBzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NhcHMuaAkocmV2aXNpb24gMjA3ODA0KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NhcHMuaAkod29ya2luZyBjb3B5
KQpAQCAtMTQsNiArMTQsNyBAQAogI2luY2x1ZGUgPHNldD4KICNpbmNsdWRlIDxzdHJpbmc+CiAj
aW5jbHVkZSA8dmVjdG9yPgorI2luY2x1ZGUgPGFycmF5PgogCiBuYW1lc3BhY2UgZ2wKIHsKQEAg
LTUxLDYgKzUyLDcgQEAgY2xhc3MgVGV4dHVyZUNhcHNNYXAKIAogICAgIHZvaWQgaW5zZXJ0KEdM
ZW51bSBpbnRlcm5hbEZvcm1hdCwgY29uc3QgVGV4dHVyZUNhcHMgJmNhcHMpOwogICAgIHZvaWQg
cmVtb3ZlKEdMZW51bSBpbnRlcm5hbEZvcm1hdCk7CisgICAgdm9pZCBjbGVhcigpOwogCiAgICAg
Y29uc3QgVGV4dHVyZUNhcHMgJmdldChHTGVudW0gaW50ZXJuYWxGb3JtYXQpIGNvbnN0OwogCkBA
IC04Nyw2ICs4OSw3IEBAIHN0cnVjdCBFeHRlbnNpb25zCiAgICAgLy8gR0xfRVhUX3NSR0IKICAg
ICAvLyBHTF9BTkdMRV9kZXB0aF90ZXh0dXJlLCBHTF9PRVNfZGVwdGgzMgogICAgIC8vIEdMX0VY
VF9jb2xvcl9idWZmZXJfZmxvYXQKKyAgICAvLyBHTF9FWFRfdGV4dHVyZV9ub3JtMTYKICAgICB2
b2lkIHNldFRleHR1cmVFeHRlbnNpb25TdXBwb3J0KGNvbnN0IFRleHR1cmVDYXBzTWFwICZ0ZXh0
dXJlQ2Fwcyk7CiAKICAgICAvLyBFUzIgRXh0ZW5zaW9uIHN1cHBvcnQKQEAgLTI4MSwxMiArMjg0
LDYwIEBAIHN0cnVjdCBFeHRlbnNpb25zCiAgICAgLy8gR0xfQU5HTEVfbG9zc3lfZXRjX2RlY29k
ZQogICAgIGJvb2wgbG9zc3lFVENEZWNvZGU7CiAKKyAgICAvLyBHTF9DSFJPTUlVTV9iaW5kX3Vu
aWZvcm1fbG9jYXRpb24KKyAgICBib29sIGJpbmRVbmlmb3JtTG9jYXRpb247CisKKyAgICAvLyBH
TF9DSFJPTUlVTV9zeW5jX3F1ZXJ5CisgICAgYm9vbCBzeW5jUXVlcnk7CisKKyAgICAvLyBHTF9D
SFJPTUlVTV9jb3B5X3RleHR1cmUKKyAgICBib29sIGNvcHlUZXh0dXJlOworCisgICAgLy8gR0xf
Q0hST01JVU1fY29weV9jb21wcmVzc2VkX3RleHR1cmUKKyAgICBib29sIGNvcHlDb21wcmVzc2Vk
VGV4dHVyZTsKKworICAgIC8vIEdMX0FOR0xFX3dlYmdsX2NvbXBhdGliaWxpdHkKKyAgICBib29s
IHdlYmdsQ29tcGF0aWJpbGl0eTsKKworICAgIC8vIEdMX0NIUk9NSVVNX2JpbmRfZ2VuZXJhdGVz
X3Jlc291cmNlCisgICAgYm9vbCBiaW5kR2VuZXJhdGVzUmVzb3VyY2U7CisKKyAgICAvLyBHTF9B
TkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQorICAgIGJvb2wgcm9idXN0Q2xpZW50TWVtb3J5Owor
CiAgICAgLy8gRVMzIEV4dGVuc2lvbiBzdXBwb3J0CiAKICAgICAvLyBHTF9FWFRfY29sb3JfYnVm
ZmVyX2Zsb2F0CiAgICAgYm9vbCBjb2xvckJ1ZmZlckZsb2F0OworCisgICAgLy8gR0xfRVhUX211
bHRpc2FtcGxlX2NvbXBhdGliaWxpdHkuCisgICAgLy8gd3JpdHRlbiBhZ2FpbnN0IEVTIDMuMSBi
dXQgY2FuIGFwcGx5IHRvIGVhcmxpZXIgdmVyc2lvbnMuCisgICAgYm9vbCBtdWx0aXNhbXBsZUNv
bXBhdGliaWxpdHk7CisKKyAgICAvLyBHTF9DSFJPTUlVTV9mcmFtZWJ1ZmZlcl9taXhlZF9zYW1w
bGVzCisgICAgYm9vbCBmcmFtZWJ1ZmZlck1peGVkU2FtcGxlczsKKworICAgIC8vIEdMX0VYVF90
ZXh0dXJlX25vcm0xNgorICAgIC8vIHdyaXR0ZW4gYWdhaW5zdCBFUyAzLjEgYnV0IGNhbiBhcHBs
eSB0byBFUyAzLjAgYXMgd2VsbC4KKyAgICBib29sIHRleHR1cmVOb3JtMTY7CisKKyAgICAvLyBH
TF9DSFJPTUlVTV9wYXRoX3JlbmRlcmluZworICAgIGJvb2wgcGF0aFJlbmRlcmluZzsKK307CisK
K3N0cnVjdCBFeHRlbnNpb25JbmZvCit7CisgICAgLy8gSWYgdGhpcyBleHRlbnNpb24gY2FuIGJl
IGVuYWJsZWQgd2l0aCBnbEVuYWJsZUV4dGVuc2lvbiAoR0xfQU5HTEVfd2ViZ2xfY29tcGF0aWJp
bGl0eSkKKyAgICBib29sIEVuYWJsZWFibGUgPSBmYWxzZTsKKworICAgIC8vIFBvaW50ZXIgdG8g
YSBib29sZWFuIG1lbWJlciBvZiB0aGUgRXh0ZW5zaW9ucyBzdHJ1Y3QKKyAgICB0eXBlZGVmIGJv
b2woRXh0ZW5zaW9uczo6KkV4dGVuc2lvbkJvb2wpOworICAgIEV4dGVuc2lvbkJvb2wgRXh0ZW5z
aW9uc01lbWJlciA9IG51bGxwdHI7CiB9OwogCit1c2luZyBFeHRlbnNpb25JbmZvTWFwID0gc3Rk
OjptYXA8c3RkOjpzdHJpbmcsIEV4dGVuc2lvbkluZm8+OworY29uc3QgRXh0ZW5zaW9uSW5mb01h
cCAmR2V0RXh0ZW5zaW9uSW5mb01hcCgpOworCiBzdHJ1Y3QgTGltaXRhdGlvbnMKIHsKICAgICBM
aW1pdGF0aW9ucygpOwpAQCAtMzI5LDcgKzM4MCw3IEBAIHN0cnVjdCBDYXBzCiB7CiAgICAgQ2Fw
cygpOwogCi0gICAgLy8gVGFibGUgNi4yOCwgaW1wbGVtZW50YXRpb24gZGVwZW5kZW50IHZhbHVl
cworICAgIC8vIEVTIDMuMSAoQXByaWwgMjksIDIwMTUpIDIwLjM5OiBpbXBsZW1lbnRhdGlvbiBk
ZXBlbmRlbnQgdmFsdWVzCiAgICAgR0x1aW50NjQgbWF4RWxlbWVudEluZGV4OwogICAgIEdMdWlu
dCBtYXgzRFRleHR1cmVTaXplOwogICAgIEdMdWludCBtYXgyRFRleHR1cmVTaXplOwpAQCAtMzM3
LDE2ICszODgsMjkgQEAgc3RydWN0IENhcHMKICAgICBHTGZsb2F0IG1heExPREJpYXM7CiAgICAg
R0x1aW50IG1heEN1YmVNYXBUZXh0dXJlU2l6ZTsKICAgICBHTHVpbnQgbWF4UmVuZGVyYnVmZmVy
U2l6ZTsKLSAgICBHTHVpbnQgbWF4RHJhd0J1ZmZlcnM7Ci0gICAgR0x1aW50IG1heENvbG9yQXR0
YWNobWVudHM7Ci0gICAgR0x1aW50IG1heFZpZXdwb3J0V2lkdGg7Ci0gICAgR0x1aW50IG1heFZp
ZXdwb3J0SGVpZ2h0OwogICAgIEdMZmxvYXQgbWluQWxpYXNlZFBvaW50U2l6ZTsKICAgICBHTGZs
b2F0IG1heEFsaWFzZWRQb2ludFNpemU7CiAgICAgR0xmbG9hdCBtaW5BbGlhc2VkTGluZVdpZHRo
OwogICAgIEdMZmxvYXQgbWF4QWxpYXNlZExpbmVXaWR0aDsKIAotICAgIC8vIFRhYmxlIDYuMjks
IGltcGxlbWVudGF0aW9uIGRlcGVuZGVudCB2YWx1ZXMgKGNvbnQuKQorICAgIC8vIEVTIDMuMSAo
QXByaWwgMjksIDIwMTUpIDIwLjQwOiBpbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQgdmFsdWVzIChj
b250LikKKyAgICBHTHVpbnQgbWF4RHJhd0J1ZmZlcnM7CisgICAgR0x1aW50IG1heEZyYW1lYnVm
ZmVyV2lkdGg7CisgICAgR0x1aW50IG1heEZyYW1lYnVmZmVySGVpZ2h0OworICAgIEdMdWludCBt
YXhGcmFtZWJ1ZmZlclNhbXBsZXM7CisgICAgR0x1aW50IG1heENvbG9yQXR0YWNobWVudHM7Cisg
ICAgR0x1aW50IG1heFZpZXdwb3J0V2lkdGg7CisgICAgR0x1aW50IG1heFZpZXdwb3J0SGVpZ2h0
OworICAgIEdMdWludCBtYXhTYW1wbGVNYXNrV29yZHM7CisgICAgR0x1aW50IG1heENvbG9yVGV4
dHVyZVNhbXBsZXM7CisgICAgR0x1aW50IG1heERlcHRoVGV4dHVyZVNhbXBsZXM7CisgICAgR0x1
aW50IG1heEludGVnZXJTYW1wbGVzOworICAgIEdMdWludDY0IG1heFNlcnZlcldhaXRUaW1lb3V0
OworCisgICAgLy8gRVMgMy4xIChBcHJpbCAyOSwgMjAxNSkgVGFibGUgMjAuNDE6IEltcGxlbWVu
dGF0aW9uIGRlcGVuZGVudCB2YWx1ZXMgKGNvbnQuKQorICAgIEdMaW50IG1heFZlcnRleEF0dHJp
YlJlbGF0aXZlT2Zmc2V0OworICAgIEdMaW50IG1heFZlcnRleEF0dHJpYkJpbmRpbmdzOworICAg
IEdMaW50IG1heFZlcnRleEF0dHJpYlN0cmlkZTsKICAgICBHTHVpbnQgbWF4RWxlbWVudHNJbmRp
Y2VzOwogICAgIEdMdWludCBtYXhFbGVtZW50c1ZlcnRpY2VzOwogICAgIHN0ZDo6dmVjdG9yPEdM
ZW51bT4gY29tcHJlc3NlZFRleHR1cmVGb3JtYXRzOwpAQCAtMzY0LDI2ICs0MjgsNDkgQEAgc3Ry
dWN0IENhcHMKICAgICBUeXBlUHJlY2lzaW9uIGZyYWdtZW50SGlnaHBJbnQ7CiAgICAgVHlwZVBy
ZWNpc2lvbiBmcmFnbWVudE1lZGl1bXBJbnQ7CiAgICAgVHlwZVByZWNpc2lvbiBmcmFnbWVudExv
d3BJbnQ7Ci0gICAgR0x1aW50NjQgbWF4U2VydmVyV2FpdFRpbWVvdXQ7CiAKLSAgICAvLyBUYWJs
ZSA2LjMxLCBpbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQgdmVydGV4IHNoYWRlciBsaW1pdHMKKyAg
ICAvLyBFUyAzLjEgKEFwcmlsIDI5LCAyMDE1KSBUYWJsZSAyMC40MzogSW1wbGVtZW50YXRpb24g
ZGVwZW5kZW50IFZlcnRleCBzaGFkZXIgbGltaXRzCiAgICAgR0x1aW50IG1heFZlcnRleEF0dHJp
YnV0ZXM7CiAgICAgR0x1aW50IG1heFZlcnRleFVuaWZvcm1Db21wb25lbnRzOwogICAgIEdMdWlu
dCBtYXhWZXJ0ZXhVbmlmb3JtVmVjdG9yczsKICAgICBHTHVpbnQgbWF4VmVydGV4VW5pZm9ybUJs
b2NrczsKICAgICBHTHVpbnQgbWF4VmVydGV4T3V0cHV0Q29tcG9uZW50czsKICAgICBHTHVpbnQg
bWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHM7CisgICAgR0x1aW50IG1heFZlcnRleEF0b21pY0Nv
dW50ZXJCdWZmZXJzOworICAgIEdMdWludCBtYXhWZXJ0ZXhBdG9taWNDb3VudGVyczsKKyAgICBH
THVpbnQgbWF4VmVydGV4SW1hZ2VVbmlmb3JtczsKKyAgICBHTHVpbnQgbWF4VmVydGV4U2hhZGVy
U3RvcmFnZUJsb2NrczsKIAotICAgIC8vIFRhYmxlIDYuMzIsIGltcGxlbWVudGF0aW9uIGRlcGVu
ZGVudCBmcmFnbWVudCBzaGFkZXIgbGltaXRzCisgICAgLy8gRVMgMy4xIChBcHJpbCAyOSwgMjAx
NSkgVGFibGUgMjAuNDQ6IEltcGxlbWVudGF0aW9uIGRlcGVuZGVudCBGcmFnbWVudCBzaGFkZXIg
bGltaXRzCiAgICAgR0x1aW50IG1heEZyYWdtZW50VW5pZm9ybUNvbXBvbmVudHM7CiAgICAgR0x1
aW50IG1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnM7CiAgICAgR0x1aW50IG1heEZyYWdtZW50VW5p
Zm9ybUJsb2NrczsKICAgICBHTHVpbnQgbWF4RnJhZ21lbnRJbnB1dENvbXBvbmVudHM7CiAgICAg
R0x1aW50IG1heFRleHR1cmVJbWFnZVVuaXRzOworICAgIEdMdWludCBtYXhGcmFnbWVudEF0b21p
Y0NvdW50ZXJCdWZmZXJzOworICAgIEdMdWludCBtYXhGcmFnbWVudEF0b21pY0NvdW50ZXJzOwor
ICAgIEdMdWludCBtYXhGcmFnbWVudEltYWdlVW5pZm9ybXM7CisgICAgR0x1aW50IG1heEZyYWdt
ZW50U2hhZGVyU3RvcmFnZUJsb2NrczsKKyAgICBHTGludCBtaW5Qcm9ncmFtVGV4dHVyZUdhdGhl
ck9mZnNldDsKKyAgICBHTHVpbnQgbWF4UHJvZ3JhbVRleHR1cmVHYXRoZXJPZmZzZXQ7CiAgICAg
R0xpbnQgbWluUHJvZ3JhbVRleGVsT2Zmc2V0OwogICAgIEdMaW50IG1heFByb2dyYW1UZXhlbE9m
ZnNldDsKIAotICAgIC8vIFRhYmxlIDYuMzMsIGltcGxlbWVudGF0aW9uIGRlcGVuZGVudCBhZ2dy
ZWdhdGUgc2hhZGVyIGxpbWl0cworICAgIC8vIEVTIDMuMSAoQXByaWwgMjksIDIwMTUpIFRhYmxl
IDIwLjQ1OiBpbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQgY29tcHV0ZSBzaGFkZXIgbGltaXRzCisg
ICAgc3RkOjphcnJheTxHTHVpbnQsIDM+IG1heENvbXB1dGVXb3JrR3JvdXBDb3VudDsKKyAgICBz
dGQ6OmFycmF5PEdMdWludCwgMz4gbWF4Q29tcHV0ZVdvcmtHcm91cFNpemU7CisgICAgR0x1aW50
IG1heENvbXB1dGVXb3JrR3JvdXBJbnZvY2F0aW9uczsKKyAgICBHTHVpbnQgbWF4Q29tcHV0ZVVu
aWZvcm1CbG9ja3M7CisgICAgR0x1aW50IG1heENvbXB1dGVUZXh0dXJlSW1hZ2VVbml0czsKKyAg
ICBHTHVpbnQgbWF4Q29tcHV0ZVNoYXJlZE1lbW9yeVNpemU7CisgICAgR0x1aW50IG1heENvbXB1
dGVVbmlmb3JtQ29tcG9uZW50czsKKyAgICBHTHVpbnQgbWF4Q29tcHV0ZUF0b21pY0NvdW50ZXJC
dWZmZXJzOworICAgIEdMdWludCBtYXhDb21wdXRlQXRvbWljQ291bnRlcnM7CisgICAgR0x1aW50
IG1heENvbXB1dGVJbWFnZVVuaWZvcm1zOworICAgIEdMdWludCBtYXhDb21iaW5lZENvbXB1dGVV
bmlmb3JtQ29tcG9uZW50czsKKyAgICBHTHVpbnQgbWF4Q29tcHV0ZVNoYWRlclN0b3JhZ2VCbG9j
a3M7CisKKyAgICAvLyBFUyAzLjEgKEFwcmlsIDI5LCAyMDE1KSBUYWJsZSAyMC40NjogaW1wbGVt
ZW50YXRpb24gZGVwZW5kZW50IGFnZ3JlZ2F0ZSBzaGFkZXIgbGltaXRzCiAgICAgR0x1aW50IG1h
eFVuaWZvcm1CdWZmZXJCaW5kaW5nczsKICAgICBHTHVpbnQ2NCBtYXhVbmlmb3JtQmxvY2tTaXpl
OwogICAgIEdMdWludCB1bmlmb3JtQnVmZmVyT2Zmc2V0QWxpZ25tZW50OwpAQCAtMzkzLDEzICs0
ODAsMjcgQEAgc3RydWN0IENhcHMKICAgICBHTHVpbnQgbWF4VmFyeWluZ0NvbXBvbmVudHM7CiAg
ICAgR0x1aW50IG1heFZhcnlpbmdWZWN0b3JzOwogICAgIEdMdWludCBtYXhDb21iaW5lZFRleHR1
cmVJbWFnZVVuaXRzOworICAgIEdMdWludCBtYXhDb21iaW5lZFNoYWRlck91dHB1dFJlc291cmNl
czsKIAotICAgIC8vIFRhYmxlIDYuMzQsIGltcGxlbWVudGF0aW9uIGRlcGVuZGVudCB0cmFuc2Zv
cm0gZmVlZGJhY2sgbGltaXRzCisgICAgLy8gRVMgMy4xIChBcHJpbCAyOSwgMjAxNSkgVGFibGUg
MjAuNDc6IGltcGxlbWVudGF0aW9uIGRlcGVuZGVudCBhZ2dyZWdhdGUgc2hhZGVyIGxpbWl0cyAo
Y29udC4pCisgICAgR0x1aW50IG1heFVuaWZvcm1Mb2NhdGlvbnM7CisgICAgR0x1aW50IG1heEF0
b21pY0NvdW50ZXJCdWZmZXJCaW5kaW5nczsKKyAgICBHTHVpbnQgbWF4QXRvbWljQ291bnRlckJ1
ZmZlclNpemU7CisgICAgR0x1aW50IG1heENvbWJpbmVkQXRvbWljQ291bnRlckJ1ZmZlcnM7Cisg
ICAgR0x1aW50IG1heENvbWJpbmVkQXRvbWljQ291bnRlcnM7CisgICAgR0x1aW50IG1heEltYWdl
VW5pdHM7CisgICAgR0x1aW50IG1heENvbWJpbmVkSW1hZ2VVbmlmb3JtczsKKyAgICBHTHVpbnQg
bWF4U2hhZGVyU3RvcmFnZUJ1ZmZlckJpbmRpbmdzOworICAgIEdMdWludDY0IG1heFNoYWRlclN0
b3JhZ2VCbG9ja1NpemU7CisgICAgR0x1aW50IG1heENvbWJpbmVkU2hhZGVyU3RvcmFnZUJsb2Nr
czsKKyAgICBHTHVpbnQgc2hhZGVyU3RvcmFnZUJ1ZmZlck9mZnNldEFsaWdubWVudDsKKworICAg
IC8vIEVTIDMuMSAoQXByaWwgMjksIDIwMTUpIFRhYmxlIDIwLjQ4OiBpbXBsZW1lbnRhdGlvbiBk
ZXBlbmRlbnQgdHJhbnNmb3JtIGZlZWRiYWNrIGxpbWl0cwogICAgIEdMdWludCBtYXhUcmFuc2Zv
cm1GZWVkYmFja0ludGVybGVhdmVkQ29tcG9uZW50czsKICAgICBHTHVpbnQgbWF4VHJhbnNmb3Jt
RmVlZGJhY2tTZXBhcmF0ZUF0dHJpYnV0ZXM7CiAgICAgR0x1aW50IG1heFRyYW5zZm9ybUZlZWRi
YWNrU2VwYXJhdGVDb21wb25lbnRzOwogCi0gICAgLy8gVGFibGUgNi4zNSwgRnJhbWVidWZmZXIg
RGVwZW5kZW50IFZhbHVlcworICAgIC8vIEVTIDMuMSAoQXByaWwgMjksIDIwMTUpIFRhYmxlIDIw
LjQ5OiBGcmFtZWJ1ZmZlciBEZXBlbmRlbnQgVmFsdWVzCiAgICAgR0x1aW50IG1heFNhbXBsZXM7
CiB9OwogCkBAIC00OTcsNiArNTk4LDE1IEBAIHN0cnVjdCBEaXNwbGF5RXh0ZW5zaW9ucwogCiAg
ICAgLy8gRUdMX0FOR0xFX3N0cmVhbV9wcm9kdWNlcl9kM2RfdGV4dHVyZV9udjEyCiAgICAgYm9v
bCBzdHJlYW1Qcm9kdWNlckQzRFRleHR1cmVOVjEyOworCisgICAgLy8gRUdMX0FOR0xFX2NyZWF0
ZV9jb250ZXh0X3dlYmdsX2NvbXBhdGliaWxpdHkKKyAgICBib29sIGNyZWF0ZUNvbnRleHRXZWJH
TENvbXBhdGliaWxpdHk7CisKKyAgICAvLyBFR0xfQ0hST01JVU1fY3JlYXRlX2NvbnRleHRfYmlu
ZF9nZW5lcmF0ZXNfcmVzb3VyY2UKKyAgICBib29sIGNyZWF0ZUNvbnRleHRCaW5kR2VuZXJhdGVz
UmVzb3VyY2U7CisKKyAgICAvLyBFR0xfQ0hST01JVU1fZ2V0X3N5bmNfdmFsdWVzCisgICAgYm9v
bCBnZXRTeW5jVmFsdWVzOwogfTsKIAogc3RydWN0IERldmljZUV4dGVuc2lvbnMKQEAgLTUzNSw2
ICs2NDUsOSBAQCBzdHJ1Y3QgQ2xpZW50RXh0ZW5zaW9ucwogICAgIC8vIEVHTF9BTkdMRV9wbGF0
Zm9ybV9hbmdsZV9vcGVuZ2wKICAgICBib29sIHBsYXRmb3JtQU5HTEVPcGVuR0w7CiAKKyAgICAv
LyBFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfbnVsbAorICAgIGJvb2wgcGxhdGZvcm1BTkdMRU5V
TEw7CisKICAgICAvLyBFR0xfQU5HTEVfZGV2aWNlX2NyZWF0aW9uCiAgICAgYm9vbCBkZXZpY2VD
cmVhdGlvbjsKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Nv
bXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05LDkg
KzksOSBAQAogI2luY2x1ZGUgImxpYkFOR0xFL0NvbXBpbGVyLmgiCiAKICNpbmNsdWRlICJjb21t
b24vZGVidWcuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9EYXRhLmgiCisjaW5jbHVkZSAibGliQU5H
TEUvQ29udGV4dFN0YXRlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvQ29tcGlsZXJJ
bXBsLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvSW1wbEZhY3RvcnkuaCIKKyNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9HTEltcGxGYWN0b3J5LmgiCiAKIG5hbWVzcGFjZSBnbAog
ewpAQCAtMjMsMjAgKzIzLDM3IEBAIG5hbWVzcGFjZQogLy8gU2hGaW5hbGl6ZS4KIHNpemVfdCBh
Y3RpdmVDb21waWxlckhhbmRsZXMgPSAwOwogCitTaFNoYWRlclNwZWMgU2VsZWN0U2hhZGVyU3Bl
YyhHTGludCBtYWpvclZlcnNpb24sIEdMaW50IG1pbm9yVmVyc2lvbikKK3sKKyAgICBpZiAobWFq
b3JWZXJzaW9uID49IDMpCisgICAgeworICAgICAgICBpZiAobWlub3JWZXJzaW9uID09IDEpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBTSF9HTEVTM18xX1NQRUM7CisgICAgICAgIH0K
KyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gU0hfR0xFUzNfU1BF
QzsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gU0hfR0xFUzJfU1BFQzsKK30KKwogfSAg
Ly8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi1Db21waWxlcjo6Q29tcGlsZXIocng6OkltcGxGYWN0
b3J5ICppbXBsRmFjdG9yeSwgY29uc3QgZ2w6OkRhdGEgJmRhdGEpCitDb21waWxlcjo6Q29tcGls
ZXIocng6OkdMSW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LCBjb25zdCBDb250ZXh0U3RhdGUgJnN0
YXRlKQogICAgIDogbUltcGxlbWVudGF0aW9uKGltcGxGYWN0b3J5LT5jcmVhdGVDb21waWxlcigp
KSwKLSAgICAgIG1TcGVjKGRhdGEuY2xpZW50VmVyc2lvbiA+IDIgPyBTSF9HTEVTM19TUEVDIDog
U0hfR0xFUzJfU1BFQyksCisgICAgICBtU3BlYyhTZWxlY3RTaGFkZXJTcGVjKHN0YXRlLmdldENs
aWVudE1ham9yVmVyc2lvbigpLCBzdGF0ZS5nZXRDbGllbnRNaW5vclZlcnNpb24oKSkpLAogICAg
ICAgbU91dHB1dFR5cGUobUltcGxlbWVudGF0aW9uLT5nZXRUcmFuc2xhdG9yT3V0cHV0VHlwZSgp
KSwKICAgICAgIG1SZXNvdXJjZXMoKSwKICAgICAgIG1GcmFnbWVudENvbXBpbGVyKG51bGxwdHIp
LAotICAgICAgbVZlcnRleENvbXBpbGVyKG51bGxwdHIpCisgICAgICBtVmVydGV4Q29tcGlsZXIo
bnVsbHB0ciksCisgICAgICBtQ29tcHV0ZUNvbXBpbGVyKG51bGxwdHIpCiB7Ci0gICAgQVNTRVJU
KGRhdGEuY2xpZW50VmVyc2lvbiA9PSAyIHx8IGRhdGEuY2xpZW50VmVyc2lvbiA9PSAzKTsKKyAg
ICBBU1NFUlQoc3RhdGUuZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPT0gMiB8fCBzdGF0ZS5nZXRD
bGllbnRNYWpvclZlcnNpb24oKSA9PSAzKTsKIAotICAgIGNvbnN0IGdsOjpDYXBzICZjYXBzICAg
ICAgICAgICAgID0gKmRhdGEuY2FwczsKLSAgICBjb25zdCBnbDo6RXh0ZW5zaW9ucyAmZXh0ZW5z
aW9ucyA9ICpkYXRhLmV4dGVuc2lvbnM7CisgICAgY29uc3QgZ2w6OkNhcHMgJmNhcHMgICAgICAg
ICAgICAgPSBzdGF0ZS5nZXRDYXBzKCk7CisgICAgY29uc3QgZ2w6OkV4dGVuc2lvbnMgJmV4dGVu
c2lvbnMgPSBzdGF0ZS5nZXRFeHRlbnNpb25zKCk7CiAKICAgICBTaEluaXRCdWlsdEluUmVzb3Vy
Y2VzKCZtUmVzb3VyY2VzKTsKICAgICBtUmVzb3VyY2VzLk1heFZlcnRleEF0dHJpYnMgICAgICAg
ICAgICAgPSBjYXBzLm1heFZlcnRleEF0dHJpYnV0ZXM7CkBAIC01MCw4ICs2Nyw5IEBAIENvbXBp
bGVyOjpDb21waWxlcihyeDo6SW1wbEZhY3RvcnkgKmltcGwKICAgICBtUmVzb3VyY2VzLk9FU19z
dGFuZGFyZF9kZXJpdmF0aXZlcyAgICAgPSBleHRlbnNpb25zLnN0YW5kYXJkRGVyaXZhdGl2ZXM7
CiAgICAgbVJlc291cmNlcy5FWFRfZHJhd19idWZmZXJzICAgICAgICAgICAgID0gZXh0ZW5zaW9u
cy5kcmF3QnVmZmVyczsKICAgICBtUmVzb3VyY2VzLkVYVF9zaGFkZXJfdGV4dHVyZV9sb2QgICAg
ICAgPSBleHRlbnNpb25zLnNoYWRlclRleHR1cmVMT0Q7Ci0gICAgLy8gVE9ETzogZGlzYWJsZWQg
dW50aWwgdGhlIGV4dGVuc2lvbiBpcyBhY3R1YWxseSBzdXBwb3J0ZWQuCi0gICAgbVJlc291cmNl
cy5PRVNfRUdMX2ltYWdlX2V4dGVybmFsID0gMDsKKyAgICBtUmVzb3VyY2VzLk9FU19FR0xfaW1h
Z2VfZXh0ZXJuYWwgICAgICAgICAgPSBleHRlbnNpb25zLmVnbEltYWdlRXh0ZXJuYWw7CisgICAg
bVJlc291cmNlcy5PRVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vzc2wzICAgID0gZXh0ZW5zaW9ucy5l
Z2xJbWFnZUV4dGVybmFsRXNzbDM7CisgICAgbVJlc291cmNlcy5OVl9FR0xfc3RyZWFtX2NvbnN1
bWVyX2V4dGVybmFsID0gZXh0ZW5zaW9ucy5lZ2xTdHJlYW1Db25zdW1lckV4dGVybmFsOwogICAg
IC8vIFRPRE86IHVzZSBzaGFkZXIgcHJlY2lzaW9uIGNhcHMgdG8gZGV0ZXJtaW5lIGlmIGhpZ2gg
cHJlY2lzaW9uIGlzIHN1cHBvcnRlZD8KICAgICBtUmVzb3VyY2VzLkZyYWdtZW50UHJlY2lzaW9u
SGlnaCA9IDE7CiAgICAgbVJlc291cmNlcy5FWFRfZnJhZ19kZXB0aCAgICAgICAgPSBleHRlbnNp
b25zLmZyYWdEZXB0aDsKQEAgLTYxLDYgKzc5LDM1IEBAIENvbXBpbGVyOjpDb21waWxlcihyeDo6
SW1wbEZhY3RvcnkgKmltcGwKICAgICBtUmVzb3VyY2VzLk1heEZyYWdtZW50SW5wdXRWZWN0b3Jz
ID0gY2Fwcy5tYXhGcmFnbWVudElucHV0Q29tcG9uZW50cyAvIDQ7CiAgICAgbVJlc291cmNlcy5N
aW5Qcm9ncmFtVGV4ZWxPZmZzZXQgICA9IGNhcHMubWluUHJvZ3JhbVRleGVsT2Zmc2V0OwogICAg
IG1SZXNvdXJjZXMuTWF4UHJvZ3JhbVRleGVsT2Zmc2V0ICAgPSBjYXBzLm1heFByb2dyYW1UZXhl
bE9mZnNldDsKKworICAgIC8vIEdMU0wgRVMgMy4xIGNvbXB1dGUgc2hhZGVyIGNvbnN0YW50cwor
ICAgIG1SZXNvdXJjZXMuTWF4SW1hZ2VVbml0cyAgICAgICAgICAgICAgICAgICAgPSBjYXBzLm1h
eEltYWdlVW5pdHM7CisgICAgbVJlc291cmNlcy5NYXhWZXJ0ZXhJbWFnZVVuaWZvcm1zICAgICAg
ICAgICA9IGNhcHMubWF4VmVydGV4SW1hZ2VVbmlmb3JtczsKKyAgICBtUmVzb3VyY2VzLk1heEZy
YWdtZW50SW1hZ2VVbmlmb3JtcyAgICAgICAgID0gY2Fwcy5tYXhGcmFnbWVudEltYWdlVW5pZm9y
bXM7CisgICAgbVJlc291cmNlcy5NYXhDb21wdXRlSW1hZ2VVbmlmb3JtcyAgICAgICAgICA9IGNh
cHMubWF4Q29tcHV0ZUltYWdlVW5pZm9ybXM7CisgICAgbVJlc291cmNlcy5NYXhDb21iaW5lZElt
YWdlVW5pZm9ybXMgICAgICAgICA9IGNhcHMubWF4Q29tYmluZWRJbWFnZVVuaWZvcm1zOworICAg
IG1SZXNvdXJjZXMuTWF4Q29tYmluZWRTaGFkZXJPdXRwdXRSZXNvdXJjZXMgPSBjYXBzLm1heENv
bWJpbmVkU2hhZGVyT3V0cHV0UmVzb3VyY2VzOworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAw
dTsgaW5kZXggPCAzdTsgKytpbmRleCkKKyAgICB7CisgICAgICAgIG1SZXNvdXJjZXMuTWF4Q29t
cHV0ZVdvcmtHcm91cENvdW50W2luZGV4XSA9IGNhcHMubWF4Q29tcHV0ZVdvcmtHcm91cENvdW50
W2luZGV4XTsKKyAgICAgICAgbVJlc291cmNlcy5NYXhDb21wdXRlV29ya0dyb3VwU2l6ZVtpbmRl
eF0gID0gY2Fwcy5tYXhDb21wdXRlV29ya0dyb3VwU2l6ZVtpbmRleF07CisgICAgfQorCisgICAg
bVJlc291cmNlcy5NYXhDb21wdXRlVW5pZm9ybUNvbXBvbmVudHMgPSBjYXBzLm1heENvbXB1dGVV
bmlmb3JtQ29tcG9uZW50czsKKyAgICBtUmVzb3VyY2VzLk1heENvbXB1dGVUZXh0dXJlSW1hZ2VV
bml0cyA9IGNhcHMubWF4Q29tcHV0ZVRleHR1cmVJbWFnZVVuaXRzOworCisgICAgbVJlc291cmNl
cy5NYXhDb21wdXRlQXRvbWljQ291bnRlcnMgICAgICAgPSBjYXBzLm1heENvbXB1dGVBdG9taWND
b3VudGVyczsKKyAgICBtUmVzb3VyY2VzLk1heENvbXB1dGVBdG9taWNDb3VudGVyQnVmZmVycyA9
IGNhcHMubWF4Q29tcHV0ZUF0b21pY0NvdW50ZXJCdWZmZXJzOworCisgICAgbVJlc291cmNlcy5N
YXhWZXJ0ZXhBdG9taWNDb3VudGVycyAgICAgICAgID0gY2Fwcy5tYXhWZXJ0ZXhBdG9taWNDb3Vu
dGVyczsKKyAgICBtUmVzb3VyY2VzLk1heEZyYWdtZW50QXRvbWljQ291bnRlcnMgICAgICAgPSBj
YXBzLm1heEZyYWdtZW50QXRvbWljQ291bnRlcnM7CisgICAgbVJlc291cmNlcy5NYXhDb21iaW5l
ZEF0b21pY0NvdW50ZXJzICAgICAgID0gY2Fwcy5tYXhDb21iaW5lZEF0b21pY0NvdW50ZXJzOwor
ICAgIG1SZXNvdXJjZXMuTWF4QXRvbWljQ291bnRlckJpbmRpbmdzICAgICAgICA9IGNhcHMubWF4
QXRvbWljQ291bnRlckJ1ZmZlckJpbmRpbmdzOworICAgIG1SZXNvdXJjZXMuTWF4VmVydGV4QXRv
bWljQ291bnRlckJ1ZmZlcnMgICA9IGNhcHMubWF4VmVydGV4QXRvbWljQ291bnRlckJ1ZmZlcnM7
CisgICAgbVJlc291cmNlcy5NYXhGcmFnbWVudEF0b21pY0NvdW50ZXJCdWZmZXJzID0gY2Fwcy5t
YXhGcmFnbWVudEF0b21pY0NvdW50ZXJCdWZmZXJzOworICAgIG1SZXNvdXJjZXMuTWF4Q29tYmlu
ZWRBdG9taWNDb3VudGVyQnVmZmVycyA9IGNhcHMubWF4Q29tYmluZWRBdG9taWNDb3VudGVyQnVm
ZmVyczsKKyAgICBtUmVzb3VyY2VzLk1heEF0b21pY0NvdW50ZXJCdWZmZXJTaXplICAgICAgPSBj
YXBzLm1heEF0b21pY0NvdW50ZXJCdWZmZXJTaXplOwogfQogCiBDb21waWxlcjo6fkNvbXBpbGVy
KCkKQEAgLTg5LDYgKzEzNiwxNSBAQCBFcnJvciBDb21waWxlcjo6cmVsZWFzZSgpCiAgICAgICAg
IGFjdGl2ZUNvbXBpbGVySGFuZGxlcy0tOwogICAgIH0KIAorICAgIGlmIChtQ29tcHV0ZUNvbXBp
bGVyKQorICAgIHsKKyAgICAgICAgU2hEZXN0cnVjdChtQ29tcHV0ZUNvbXBpbGVyKTsKKyAgICAg
ICAgbUNvbXB1dGVDb21waWxlciA9IG51bGxwdHI7CisKKyAgICAgICAgQVNTRVJUKGFjdGl2ZUNv
bXBpbGVySGFuZGxlcyA+IDApOworICAgICAgICBhY3RpdmVDb21waWxlckhhbmRsZXMtLTsKKyAg
ICB9CisKICAgICBpZiAoYWN0aXZlQ29tcGlsZXJIYW5kbGVzID09IDApCiAgICAgewogICAgICAg
ICBTaEZpbmFsaXplKCk7CkBAIC0xMTEsNyArMTY3LDkgQEAgU2hIYW5kbGUgQ29tcGlsZXI6Omdl
dENvbXBpbGVySGFuZGxlKEdMZQogICAgICAgICBjYXNlIEdMX0ZSQUdNRU5UX1NIQURFUjoKICAg
ICAgICAgICAgIGNvbXBpbGVyID0gJm1GcmFnbWVudENvbXBpbGVyOwogICAgICAgICAgICAgYnJl
YWs7Ci0KKyAgICAgICAgY2FzZSBHTF9DT01QVVRFX1NIQURFUjoKKyAgICAgICAgICAgIGNvbXBp
bGVyID0gJm1Db21wdXRlQ29tcGlsZXI7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db21waWxl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9D
b21waWxlci5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvQ29tcGlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTYsMTcgKzE2LDE3IEBA
CiBuYW1lc3BhY2UgcngKIHsKIGNsYXNzIENvbXBpbGVySW1wbDsKLWNsYXNzIEltcGxGYWN0b3J5
OworY2xhc3MgR0xJbXBsRmFjdG9yeTsKIH0KIAogbmFtZXNwYWNlIGdsCiB7Ci1zdHJ1Y3QgRGF0
YTsKK2NsYXNzIENvbnRleHRTdGF0ZTsKIAogY2xhc3MgQ29tcGlsZXIgZmluYWwgOiBhbmdsZTo6
Tm9uQ29weWFibGUKIHsKICAgcHVibGljOgotICAgIENvbXBpbGVyKHJ4OjpJbXBsRmFjdG9yeSAq
aW1wbEZhY3RvcnksIGNvbnN0IERhdGEgJmRhdGEpOworICAgIENvbXBpbGVyKHJ4OjpHTEltcGxG
YWN0b3J5ICppbXBsRmFjdG9yeSwgY29uc3QgQ29udGV4dFN0YXRlICZkYXRhKTsKICAgICB+Q29t
cGlsZXIoKTsKIAogICAgIEVycm9yIHJlbGVhc2UoKTsKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3Mg
Q29tcGlsZXIgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibAogCiAgICAgU2hIYW5kbGUgbUZyYWdt
ZW50Q29tcGlsZXI7CiAgICAgU2hIYW5kbGUgbVZlcnRleENvbXBpbGVyOworICAgIFNoSGFuZGxl
IG1Db21wdXRlQ29tcGlsZXI7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgZ2wKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dC5jcHAJKHJldmlz
aW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db250
ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEsNyArMTEsMTAgQEAKIAogI2luY2x1ZGUgPGl0
ZXJhdG9yPgogI2luY2x1ZGUgPHNzdHJlYW0+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVk
ZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiY29tbW9uL21hdHJpeF91dGlscy5oIgogI2luY2x1ZGUg
ImNvbW1vbi9wbGF0Zm9ybS5oIgogI2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9CdWZmZXIuaCIKQEAgLTIwLDYgKzIzLDcgQEAKICNpbmNsdWRlICJsaWJB
TkdMRS9GZW5jZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1lYnVmZmVyLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvRnJhbWVidWZmZXJBdHRhY2htZW50LmgiCisjaW5jbHVkZSAibGliQU5HTEUv
UGF0aC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1Byb2dyYW0uaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9RdWVyeS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1JlbmRlcmJ1ZmZlci5oIgpAQCAtMzEsMjgg
KzM1LDgzIEBACiAjaW5jbHVkZSAibGliQU5HTEUvVmVydGV4QXJyYXkuaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9mb3JtYXR1dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3ZhbGlkYXRpb25FUy5o
IgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1JlbmRlcmVyLmgiCisjaW5jbHVkZSAibGli
QU5HTEUvV29ya2Fyb3VuZHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9Db250ZXh0
SW1wbC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0VHTEltcGxGYWN0b3J5LmgiCisj
aW5jbHVkZSAibGliQU5HTEUvcXVlcnljb252ZXJzaW9ucy5oIgorI2luY2x1ZGUgImxpYkFOR0xF
L3F1ZXJ5dXRpbHMuaCIKIAogbmFtZXNwYWNlCiB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
Z2w6OkVycm9yIEdldFF1ZXJ5T2JqZWN0UGFyYW1ldGVyKGdsOjpDb250ZXh0ICpjb250ZXh0LCBH
THVpbnQgaWQsIEdMZW51bSBwbmFtZSwgVCAqcGFyYW1zKQorc3RkOjp2ZWN0b3I8Z2w6OlBhdGgg
Kj4gR2F0aGVyUGF0aHMoZ2w6OlJlc291cmNlTWFuYWdlciAmcmVzb3VyY2VNYW5hZ2VyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1QYXRocywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlKQogewotICAgIGds
OjpRdWVyeSAqcXVlcnlPYmplY3QgPSBjb250ZXh0LT5nZXRRdWVyeShpZCwgZmFsc2UsIEdMX05P
TkUpOwotICAgIEFTU0VSVChxdWVyeU9iamVjdCAhPSBudWxscHRyKTsKKyAgICBzdGQ6OnZlY3Rv
cjxnbDo6UGF0aCAqPiByZXQ7CisgICAgcmV0LnJlc2VydmUobnVtUGF0aHMpOworCisgICAgY29u
c3QgYXV0byAqbmFtZUFycmF5ID0gc3RhdGljX2Nhc3Q8Y29uc3QgVCAqPihwYXRocyk7CisKKyAg
ICBmb3IgKEdMc2l6ZWkgaSA9IDA7IGkgPCBudW1QYXRoczsgKytpKQorICAgIHsKKyAgICAgICAg
Y29uc3QgR0x1aW50IHBhdGhOYW1lID0gbmFtZUFycmF5W2ldICsgcGF0aEJhc2U7CisKKyAgICAg
ICAgcmV0LnB1c2hfYmFjayhyZXNvdXJjZU1hbmFnZXIuZ2V0UGF0aChwYXRoTmFtZSkpOworICAg
IH0KKworICAgIHJldHVybiByZXQ7Cit9CisKK3N0ZDo6dmVjdG9yPGdsOjpQYXRoICo+IEdhdGhl
clBhdGhzKGdsOjpSZXNvdXJjZU1hbmFnZXIgJnJlc291cmNlTWFuYWdlciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0aHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UpCit7CisgICAgc3dpdGNoIChw
YXRoTmFtZVR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAg
ICAgICAgICByZXR1cm4gR2F0aGVyUGF0aHM8R0x1Ynl0ZT4ocmVzb3VyY2VNYW5hZ2VyLCBudW1Q
YXRocywgcGF0aHMsIHBhdGhCYXNlKTsKKworICAgICAgICBjYXNlIEdMX0JZVEU6CisgICAgICAg
ICAgICByZXR1cm4gR2F0aGVyUGF0aHM8R0xieXRlPihyZXNvdXJjZU1hbmFnZXIsIG51bVBhdGhz
LCBwYXRocywgcGF0aEJhc2UpOworCisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6Cisg
ICAgICAgICAgICByZXR1cm4gR2F0aGVyUGF0aHM8R0x1c2hvcnQ+KHJlc291cmNlTWFuYWdlciwg
bnVtUGF0aHMsIHBhdGhzLCBwYXRoQmFzZSk7CisKKyAgICAgICAgY2FzZSBHTF9TSE9SVDoKKyAg
ICAgICAgICAgIHJldHVybiBHYXRoZXJQYXRoczxHTHNob3J0PihyZXNvdXJjZU1hbmFnZXIsIG51
bVBhdGhzLCBwYXRocywgcGF0aEJhc2UpOworCisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5U
OgorICAgICAgICAgICAgcmV0dXJuIEdhdGhlclBhdGhzPEdMdWludD4ocmVzb3VyY2VNYW5hZ2Vy
LCBudW1QYXRocywgcGF0aHMsIHBhdGhCYXNlKTsKKworICAgICAgICBjYXNlIEdMX0lOVDoKKyAg
ICAgICAgICAgIHJldHVybiBHYXRoZXJQYXRoczxHTGludD4ocmVzb3VyY2VNYW5hZ2VyLCBudW1Q
YXRocywgcGF0aHMsIHBhdGhCYXNlKTsKKyAgICB9CisKKyAgICBVTlJFQUNIQUJMRSgpOworICAg
IHJldHVybiBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPigpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK2dsOjpFcnJvciBHZXRRdWVyeU9iamVjdFBhcmFtZXRlcihnbDo6UXVlcnkgKnF1ZXJ5
LCBHTGVudW0gcG5hbWUsIFQgKnBhcmFtcykKK3sKKyAgICBBU1NFUlQocXVlcnkgIT0gbnVsbHB0
cik7CiAKICAgICBzd2l0Y2ggKHBuYW1lKQogICAgIHsKICAgICAgICAgY2FzZSBHTF9RVUVSWV9S
RVNVTFRfRVhUOgotICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5T2JqZWN0LT5nZXRSZXN1bHQocGFy
YW1zKTsKKyAgICAgICAgICAgIHJldHVybiBxdWVyeS0+Z2V0UmVzdWx0KHBhcmFtcyk7CiAgICAg
ICAgIGNhc2UgR0xfUVVFUllfUkVTVUxUX0FWQUlMQUJMRV9FWFQ6CiAgICAgICAgIHsKICAgICAg
ICAgICAgIGJvb2wgYXZhaWxhYmxlOwotICAgICAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gcXVl
cnlPYmplY3QtPmlzUmVzdWx0QXZhaWxhYmxlKCZhdmFpbGFibGUpOworICAgICAgICAgICAgZ2w6
OkVycm9yIGVycm9yID0gcXVlcnktPmlzUmVzdWx0QXZhaWxhYmxlKCZhdmFpbGFibGUpOwogICAg
ICAgICAgICAgaWYgKCFlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgKnBhcmFtcyA9IHN0YXRpY19jYXN0PFQ+KGF2YWlsYWJsZSA/IEdMX1RSVUUgOiBHTF9G
QUxTRSk7CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IGdsOjpDb252ZXJ0RnJvbUdMYm9vbGVh
bjxUPihhdmFpbGFibGUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGVycm9y
OwogICAgICAgICB9CkBAIC04MCwxMSArMTM5LDE2IEBAIHZvaWQgTWFya1RyYW5zZm9ybUZlZWRi
YWNrQnVmZmVyVXNhZ2UoZ2wKIH0KIAogLy8gQXR0cmlidXRlIG1hcCBxdWVyaWVzLgotRUdMaW50
IEdldENsaWVudFZlcnNpb24oY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCitFR0xp
bnQgR2V0Q2xpZW50TWFqb3JWZXJzaW9uKGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJz
KQogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxFR0xpbnQ+KGF0dHJpYnMuZ2V0KEVHTF9DT05U
RVhUX0NMSUVOVF9WRVJTSU9OLCAxKSk7CiB9CiAKK0VHTGludCBHZXRDbGllbnRNaW5vclZlcnNp
b24oY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCit7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEVHTGludD4oYXR0cmlicy5nZXQoRUdMX0NPTlRFWFRfTUlOT1JfVkVSU0lPTiwgMCkp
OworfQorCiBHTGVudW0gR2V0UmVzZXRTdHJhdGVneShjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAm
YXR0cmlicykKIHsKICAgICBFR0xBdHRyaWIgYXR0cmliID0gYXR0cmlicy5nZXQoRUdMX0NPTlRF
WFRfT1BFTkdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWV9FWFQsCkBAIC0xMTYsMzEgKzE4
MCw3NSBAQCBib29sIEdldE5vRXJyb3IoY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgCiAgICAgcmV0
dXJuIChhdHRyaWJzLmdldChFR0xfQ09OVEVYVF9PUEVOR0xfTk9fRVJST1JfS0hSLCBFR0xfRkFM
U0UpID09IEVHTF9UUlVFKTsKIH0KIAorYm9vbCBHZXRXZWJHTENvbnRleHQoY29uc3QgZWdsOjpB
dHRyaWJ1dGVNYXAgJmF0dHJpYnMpCit7CisgICAgcmV0dXJuIChhdHRyaWJzLmdldChFR0xfQ09O
VEVYVF9XRUJHTF9DT01QQVRJQklMSVRZX0FOR0xFLCBFR0xfRkFMU0UpID09IEVHTF9UUlVFKTsK
K30KKworYm9vbCBHZXRCaW5kR2VuZXJhdGVzUmVzb3VyY2UoY29uc3QgZWdsOjpBdHRyaWJ1dGVN
YXAgJmF0dHJpYnMpCit7CisgICAgcmV0dXJuIChhdHRyaWJzLmdldChFR0xfQ09OVEVYVF9CSU5E
X0dFTkVSQVRFU19SRVNPVVJDRV9DSFJPTUlVTSwgRUdMX1RSVUUpID09IEVHTF9UUlVFKTsKK30K
Kworc3RkOjpzdHJpbmcgR2V0T2JqZWN0TGFiZWxGcm9tUG9pbnRlcihHTHNpemVpIGxlbmd0aCwg
Y29uc3QgR0xjaGFyICpsYWJlbCkKK3sKKyAgICBzdGQ6OnN0cmluZyBsYWJlbE5hbWU7CisgICAg
aWYgKGxhYmVsICE9IG51bGxwdHIpCisgICAgeworICAgICAgICBzaXplX3QgbGFiZWxMZW5ndGgg
PSBsZW5ndGggPCAwID8gc3RybGVuKGxhYmVsKSA6IGxlbmd0aDsKKyAgICAgICAgbGFiZWxOYW1l
ICAgICAgICAgID0gc3RkOjpzdHJpbmcobGFiZWwsIGxhYmVsTGVuZ3RoKTsKKyAgICB9CisgICAg
cmV0dXJuIGxhYmVsTmFtZTsKK30KKwordm9pZCBHZXRPYmplY3RMYWJlbEJhc2UoY29uc3Qgc3Rk
OjpzdHJpbmcgJm9iamVjdExhYmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBi
dWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgR0xjaGFyICpsYWJlbCkKK3sKKyAgICBzaXplX3Qgd3JpdGVMZW5n
dGggPSBvYmplY3RMYWJlbC5sZW5ndGgoKTsKKyAgICBpZiAobGFiZWwgIT0gbnVsbHB0ciAmJiBi
dWZTaXplID4gMCkKKyAgICB7CisgICAgICAgIHdyaXRlTGVuZ3RoID0gc3RkOjptaW4oc3RhdGlj
X2Nhc3Q8c2l6ZV90PihidWZTaXplKSAtIDEsIG9iamVjdExhYmVsLmxlbmd0aCgpKTsKKyAgICAg
ICAgc3RkOjpjb3B5KG9iamVjdExhYmVsLmJlZ2luKCksIG9iamVjdExhYmVsLmJlZ2luKCkgKyB3
cml0ZUxlbmd0aCwgbGFiZWwpOworICAgICAgICBsYWJlbFt3cml0ZUxlbmd0aF0gPSAnXDAnOwor
ICAgIH0KKworICAgIGlmIChsZW5ndGggIT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgICpsZW5n
dGggPSBzdGF0aWNfY2FzdDxHTHNpemVpPih3cml0ZUxlbmd0aCk7CisgICAgfQorfQorCiB9ICAv
LyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKIG5hbWVzcGFjZSBnbAogewogCi1Db250ZXh0OjpDb250
ZXh0KGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcsCitDb250ZXh0OjpDb250ZXh0KHJ4OjpFR0xJ
bXBsRmFjdG9yeSAqaW1wbEZhY3RvcnksCisgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29u
ZmlnICpjb25maWcsCiAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnRleHQgKnNoYXJlQ29udGV4
dCwKLSAgICAgICAgICAgICAgICAgcng6OlJlbmRlcmVyICpyZW5kZXJlciwKICAgICAgICAgICAg
ICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCi0gICAgOiBWYWxpZGF0aW9u
Q29udGV4dChHZXRDbGllbnRWZXJzaW9uKGF0dHJpYnMpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgbVN0YXRlLAorCisgICAgOiBWYWxpZGF0aW9uQ29udGV4dChHZXRDbGllbnRNYWpvclZlcnNp
b24oYXR0cmlicyksCisgICAgICAgICAgICAgICAgICAgICAgICBHZXRDbGllbnRNaW5vclZlcnNp
b24oYXR0cmlicyksCisgICAgICAgICAgICAgICAgICAgICAgICAmbUdMU3RhdGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBtQ2FwcywKICAgICAgICAgICAgICAgICAgICAgICAgIG1UZXh0dXJl
Q2FwcywKICAgICAgICAgICAgICAgICAgICAgICAgIG1FeHRlbnNpb25zLAogICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgIG1MaW1pdGF0aW9u
cywKICAgICAgICAgICAgICAgICAgICAgICAgIEdldE5vRXJyb3IoYXR0cmlicykpLAorICAgICAg
bUltcGxlbWVudGF0aW9uKGltcGxGYWN0b3J5LT5jcmVhdGVDb250ZXh0KG1TdGF0ZSkpLAogICAg
ICAgbUNvbXBpbGVyKG51bGxwdHIpLAotICAgICAgbVJlbmRlcmVyKHJlbmRlcmVyKSwKLSAgICAg
IG1DbGllbnRWZXJzaW9uKEdldENsaWVudFZlcnNpb24oYXR0cmlicykpLAorICAgICAgbUNsaWVu
dE1ham9yVmVyc2lvbihHZXRDbGllbnRNYWpvclZlcnNpb24oYXR0cmlicykpLAorICAgICAgbUNs
aWVudE1pbm9yVmVyc2lvbihHZXRDbGllbnRNaW5vclZlcnNpb24oYXR0cmlicykpLAogICAgICAg
bUNvbmZpZyhjb25maWcpLAogICAgICAgbUNsaWVudFR5cGUoRUdMX09QRU5HTF9FU19BUEkpLAog
ICAgICAgbUhhc0JlZW5DdXJyZW50KGZhbHNlKSwKICAgICAgIG1Db250ZXh0TG9zdChmYWxzZSks
CiAgICAgICBtUmVzZXRTdGF0dXMoR0xfTk9fRVJST1IpLAorICAgICAgbUNvbnRleHRMb3N0Rm9y
Y2VkKGZhbHNlKSwKICAgICAgIG1SZXNldFN0cmF0ZWd5KEdldFJlc2V0U3RyYXRlZ3koYXR0cmli
cykpLAogICAgICAgbVJvYnVzdEFjY2VzcyhHZXRSb2J1c3RBY2Nlc3MoYXR0cmlicykpLAogICAg
ICAgbUN1cnJlbnRTdXJmYWNlKG51bGxwdHIpLApAQCAtMTQ4LDIzICsyNTYsMjUgQEAgQ29udGV4
dDo6Q29udGV4dChjb25zdCBlZ2w6OkNvbmZpZyAqY29uZgogewogICAgIEFTU0VSVCghbVJvYnVz
dEFjY2Vzcyk7ICAvLyBVbmltcGxlbWVudGVkCiAKLSAgICBpbml0Q2FwcyhtQ2xpZW50VmVyc2lv
bik7CisgICAgaW5pdENhcHMoR2V0V2ViR0xDb250ZXh0KGF0dHJpYnMpKTsKKyAgICBpbml0V29y
a2Fyb3VuZHMoKTsKIAotICAgIG1TdGF0ZS5pbml0aWFsaXplKG1DYXBzLCBtRXh0ZW5zaW9ucywg
bUNsaWVudFZlcnNpb24sIEdldERlYnVnKGF0dHJpYnMpKTsKKyAgICBtR0xTdGF0ZS5pbml0aWFs
aXplKG1DYXBzLCBtRXh0ZW5zaW9ucywgbUNsaWVudE1ham9yVmVyc2lvbiwgR2V0RGVidWcoYXR0
cmlicyksCisgICAgICAgICAgICAgICAgICAgICAgICBHZXRCaW5kR2VuZXJhdGVzUmVzb3VyY2Uo
YXR0cmlicykpOwogCiAgICAgbUZlbmNlTlZIYW5kbGVBbGxvY2F0b3Iuc2V0QmFzZUhhbmRsZSgw
KTsKIAotICAgIGlmIChzaGFyZUNvbnRleHQgIT0gTlVMTCkKKyAgICBpZiAoc2hhcmVDb250ZXh0
ICE9IG51bGxwdHIpCiAgICAgewogICAgICAgICBtUmVzb3VyY2VNYW5hZ2VyID0gc2hhcmVDb250
ZXh0LT5tUmVzb3VyY2VNYW5hZ2VyOwogICAgICAgICBtUmVzb3VyY2VNYW5hZ2VyLT5hZGRSZWYo
KTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgbVJlc291cmNlTWFuYWdlciA9IG5l
dyBSZXNvdXJjZU1hbmFnZXIobVJlbmRlcmVyKTsKKyAgICAgICAgbVJlc291cmNlTWFuYWdlciA9
IG5ldyBSZXNvdXJjZU1hbmFnZXIoKTsKICAgICB9CiAKLSAgICBtRGF0YS5yZXNvdXJjZU1hbmFn
ZXIgPSBtUmVzb3VyY2VNYW5hZ2VyOworICAgIG1TdGF0ZS5tUmVzb3VyY2VNYW5hZ2VyID0gbVJl
c291cmNlTWFuYWdlcjsKIAogICAgIC8vIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDMuNyBw
YWdlIDgzOgogICAgIC8vIEluIHRoZSBpbml0aWFsIHN0YXRlLCBURVhUVVJFXzJEIGFuZCBURVhU
VVJFX0NVQkVfTUFQIGhhdmUgdHdvZGltZW5zaW9uYWwKQEAgLTE3MiwyMyArMjgyLDMwIEBAIENv
bnRleHQ6OkNvbnRleHQoY29uc3QgZWdsOjpDb25maWcgKmNvbmYKICAgICAvLyBJbiBvcmRlciB0
aGF0IGFjY2VzcyB0byB0aGVzZSBpbml0aWFsIHRleHR1cmVzIG5vdCBiZSBsb3N0LCB0aGV5IGFy
ZSB0cmVhdGVkIGFzIHRleHR1cmUKICAgICAvLyBvYmplY3RzIGFsbCBvZiB3aG9zZSBuYW1lcyBh
cmUgMC4KIAotICAgIFRleHR1cmUgKnplcm9UZXh0dXJlMkQgPSBuZXcgVGV4dHVyZShtUmVuZGVy
ZXItPmNyZWF0ZVRleHR1cmUoR0xfVEVYVFVSRV8yRCksIDAsIEdMX1RFWFRVUkVfMkQpOworICAg
IFRleHR1cmUgKnplcm9UZXh0dXJlMkQgPSBuZXcgVGV4dHVyZShtSW1wbGVtZW50YXRpb24uZ2V0
KCksIDAsIEdMX1RFWFRVUkVfMkQpOwogICAgIG1aZXJvVGV4dHVyZXNbR0xfVEVYVFVSRV8yRF0u
c2V0KHplcm9UZXh0dXJlMkQpOwogCi0gICAgVGV4dHVyZSAqemVyb1RleHR1cmVDdWJlID0gbmV3
IFRleHR1cmUobVJlbmRlcmVyLT5jcmVhdGVUZXh0dXJlKEdMX1RFWFRVUkVfQ1VCRV9NQVApLCAw
LCBHTF9URVhUVVJFX0NVQkVfTUFQKTsKKyAgICBUZXh0dXJlICp6ZXJvVGV4dHVyZUN1YmUgPSBu
ZXcgVGV4dHVyZShtSW1wbGVtZW50YXRpb24uZ2V0KCksIDAsIEdMX1RFWFRVUkVfQ1VCRV9NQVAp
OwogICAgIG1aZXJvVGV4dHVyZXNbR0xfVEVYVFVSRV9DVUJFX01BUF0uc2V0KHplcm9UZXh0dXJl
Q3ViZSk7CiAKLSAgICBpZiAobUNsaWVudFZlcnNpb24gPj0gMykKKyAgICBpZiAobUNsaWVudE1h
am9yVmVyc2lvbiA+PSAzKQogICAgIHsKICAgICAgICAgLy8gVE9ETzogVGhlc2UgY291bGQgYWxz
byBiZSBlbmFibGVkIHZpYSBleHRlbnNpb24KLSAgICAgICAgVGV4dHVyZSAqemVyb1RleHR1cmUz
RCA9IG5ldyBUZXh0dXJlKG1SZW5kZXJlci0+Y3JlYXRlVGV4dHVyZShHTF9URVhUVVJFXzNEKSwg
MCwgR0xfVEVYVFVSRV8zRCk7CisgICAgICAgIFRleHR1cmUgKnplcm9UZXh0dXJlM0QgPSBuZXcg
VGV4dHVyZShtSW1wbGVtZW50YXRpb24uZ2V0KCksIDAsIEdMX1RFWFRVUkVfM0QpOwogICAgICAg
ICBtWmVyb1RleHR1cmVzW0dMX1RFWFRVUkVfM0RdLnNldCh6ZXJvVGV4dHVyZTNEKTsKIAotICAg
ICAgICBUZXh0dXJlICp6ZXJvVGV4dHVyZTJEQXJyYXkgPSBuZXcgVGV4dHVyZShtUmVuZGVyZXIt
PmNyZWF0ZVRleHR1cmUoR0xfVEVYVFVSRV8yRF9BUlJBWSksIDAsIEdMX1RFWFRVUkVfMkRfQVJS
QVkpOworICAgICAgICBUZXh0dXJlICp6ZXJvVGV4dHVyZTJEQXJyYXkgPSBuZXcgVGV4dHVyZSht
SW1wbGVtZW50YXRpb24uZ2V0KCksIDAsIEdMX1RFWFRVUkVfMkRfQVJSQVkpOwogICAgICAgICBt
WmVyb1RleHR1cmVzW0dMX1RFWFRVUkVfMkRfQVJSQVldLnNldCh6ZXJvVGV4dHVyZTJEQXJyYXkp
OwogICAgIH0KIAotICAgIG1TdGF0ZS5pbml0aWFsaXplWmVyb1RleHR1cmVzKG1aZXJvVGV4dHVy
ZXMpOworICAgIGlmIChtRXh0ZW5zaW9ucy5lZ2xJbWFnZUV4dGVybmFsIHx8IG1FeHRlbnNpb25z
LmVnbFN0cmVhbUNvbnN1bWVyRXh0ZXJuYWwpCisgICAgeworICAgICAgICBUZXh0dXJlICp6ZXJv
VGV4dHVyZUV4dGVybmFsID0KKyAgICAgICAgICAgIG5ldyBUZXh0dXJlKG1JbXBsZW1lbnRhdGlv
bi5nZXQoKSwgMCwgR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMpOworICAgICAgICBtWmVyb1RleHR1
cmVzW0dMX1RFWFRVUkVfRVhURVJOQUxfT0VTXS5zZXQoemVyb1RleHR1cmVFeHRlcm5hbCk7Cisg
ICAgfQorCisgICAgbUdMU3RhdGUuaW5pdGlhbGl6ZVplcm9UZXh0dXJlcyhtWmVyb1RleHR1cmVz
KTsKIAogICAgIGJpbmRWZXJ0ZXhBcnJheSgwKTsKICAgICBiaW5kQXJyYXlCdWZmZXIoMCk7CkBA
IC0yMDcsNyArMzI0LDcgQEAgQ29udGV4dDo6Q29udGV4dChjb25zdCBlZ2w6OkNvbmZpZyAqY29u
ZgogICAgIGJpbmRQaXhlbFBhY2tCdWZmZXIoMCk7CiAgICAgYmluZFBpeGVsVW5wYWNrQnVmZmVy
KDApOwogCi0gICAgaWYgKG1DbGllbnRWZXJzaW9uID49IDMpCisgICAgaWYgKG1DbGllbnRNYWpv
clZlcnNpb24gPj0gMykKICAgICB7CiAgICAgICAgIC8vIFtPcGVuR0wgRVMgMy4wLjJdIHNlY3Rp
b24gMi4xNC4xIHBnIDg1OgogICAgICAgICAvLyBJbiB0aGUgaW5pdGlhbCBzdGF0ZSwgYSBkZWZh
dWx0IHRyYW5zZm9ybSBmZWVkYmFjayBvYmplY3QgaXMgYm91bmQgYW5kIHRyZWF0ZWQgYXMKQEAg
LTIxNiw3ICszMzMsNyBAQCBDb250ZXh0OjpDb250ZXh0KGNvbnN0IGVnbDo6Q29uZmlnICpjb25m
CiAgICAgICAgIGJpbmRUcmFuc2Zvcm1GZWVkYmFjaygwKTsKICAgICB9CiAKLSAgICBtQ29tcGls
ZXIgPSBuZXcgQ29tcGlsZXIobVJlbmRlcmVyLCBnZXREYXRhKCkpOworICAgIG1Db21waWxlciA9
IG5ldyBDb21waWxlcihtSW1wbGVtZW50YXRpb24uZ2V0KCksIG1TdGF0ZSk7CiAKICAgICAvLyBJ
bml0aWFsaXplIGRpcnR5IGJpdCBtYXNrcwogICAgIC8vIFRPRE8oam1hZGlsbCk6IGFkZGl0aW9u
YWwgRVMzIHN0YXRlCkBAIC0yMjYsNiArMzQzLDcgQEAgQ29udGV4dDo6Q29udGV4dChjb25zdCBl
Z2w6OkNvbmZpZyAqY29uZgogICAgIG1UZXhJbWFnZURpcnR5Qml0cy5zZXQoU3RhdGU6OkRJUlRZ
X0JJVF9VTlBBQ0tfU0tJUF9JTUFHRVMpOwogICAgIG1UZXhJbWFnZURpcnR5Qml0cy5zZXQoU3Rh
dGU6OkRJUlRZX0JJVF9VTlBBQ0tfU0tJUF9ST1dTKTsKICAgICBtVGV4SW1hZ2VEaXJ0eUJpdHMu
c2V0KFN0YXRlOjpESVJUWV9CSVRfVU5QQUNLX1NLSVBfUElYRUxTKTsKKyAgICBtVGV4SW1hZ2VE
aXJ0eUJpdHMuc2V0KFN0YXRlOjpESVJUWV9CSVRfVU5QQUNLX0JVRkZFUl9CSU5ESU5HKTsKICAg
ICAvLyBObyBkaXJ0eSBvYmplY3RzLgogCiAgICAgLy8gUmVhZHBpeGVscyB1c2VzIHRoZSBwYWNr
IHN0YXRlIGFuZCByZWFkIEZCTwpAQCAtMjM0LDYgKzM1Miw3IEBAIENvbnRleHQ6OkNvbnRleHQo
Y29uc3QgZWdsOjpDb25maWcgKmNvbmYKICAgICBtUmVhZFBpeGVsc0RpcnR5Qml0cy5zZXQoU3Rh
dGU6OkRJUlRZX0JJVF9QQUNLX1JPV19MRU5HVEgpOwogICAgIG1SZWFkUGl4ZWxzRGlydHlCaXRz
LnNldChTdGF0ZTo6RElSVFlfQklUX1BBQ0tfU0tJUF9ST1dTKTsKICAgICBtUmVhZFBpeGVsc0Rp
cnR5Qml0cy5zZXQoU3RhdGU6OkRJUlRZX0JJVF9QQUNLX1NLSVBfUElYRUxTKTsKKyAgICBtUmVh
ZFBpeGVsc0RpcnR5Qml0cy5zZXQoU3RhdGU6OkRJUlRZX0JJVF9QQUNLX0JVRkZFUl9CSU5ESU5H
KTsKICAgICBtUmVhZFBpeGVsc0RpcnR5T2JqZWN0cy5zZXQoU3RhdGU6OkRJUlRZX09CSkVDVF9S
RUFEX0ZSQU1FQlVGRkVSKTsKIAogICAgIG1DbGVhckRpcnR5Qml0cy5zZXQoU3RhdGU6OkRJUlRZ
X0JJVF9SQVNURVJJWkVSX0RJU0NBUkRfRU5BQkxFRCk7CkBAIC0yNTMsMTEgKzM3MiwxMyBAQCBD
b250ZXh0OjpDb250ZXh0KGNvbnN0IGVnbDo6Q29uZmlnICpjb25mCiAgICAgbUJsaXREaXJ0eUJp
dHMuc2V0KFN0YXRlOjpESVJUWV9CSVRfU0NJU1NPUik7CiAgICAgbUJsaXREaXJ0eU9iamVjdHMu
c2V0KFN0YXRlOjpESVJUWV9PQkpFQ1RfUkVBRF9GUkFNRUJVRkZFUik7CiAgICAgbUJsaXREaXJ0
eU9iamVjdHMuc2V0KFN0YXRlOjpESVJUWV9PQkpFQ1RfRFJBV19GUkFNRUJVRkZFUik7CisKKyAg
ICBoYW5kbGVFcnJvcihtSW1wbGVtZW50YXRpb24tPmluaXRpYWxpemUoKSk7CiB9CiAKIENvbnRl
eHQ6On5Db250ZXh0KCkKIHsKLSAgICBtU3RhdGUucmVzZXQoKTsKKyAgICBtR0xTdGF0ZS5yZXNl
dCgpOwogCiAgICAgZm9yIChhdXRvIGZyYW1lYnVmZmVyIDogbUZyYW1lYnVmZmVyTWFwKQogICAg
IHsKQEAgLTMyMiwxNCArNDQzLDE0IEBAIHZvaWQgQ29udGV4dDo6bWFrZUN1cnJlbnQoZWdsOjpT
dXJmYWNlICoKICAgICAgICAgaW5pdFJlbmRlcmVyU3RyaW5nKCk7CiAgICAgICAgIGluaXRFeHRl
bnNpb25TdHJpbmdzKCk7CiAKLSAgICAgICAgbVN0YXRlLnNldFZpZXdwb3J0UGFyYW1zKDAsIDAs
IHN1cmZhY2UtPmdldFdpZHRoKCksIHN1cmZhY2UtPmdldEhlaWdodCgpKTsKLSAgICAgICAgbVN0
YXRlLnNldFNjaXNzb3JQYXJhbXMoMCwgMCwgc3VyZmFjZS0+Z2V0V2lkdGgoKSwgc3VyZmFjZS0+
Z2V0SGVpZ2h0KCkpOworICAgICAgICBtR0xTdGF0ZS5zZXRWaWV3cG9ydFBhcmFtcygwLCAwLCBz
dXJmYWNlLT5nZXRXaWR0aCgpLCBzdXJmYWNlLT5nZXRIZWlnaHQoKSk7CisgICAgICAgIG1HTFN0
YXRlLnNldFNjaXNzb3JQYXJhbXMoMCwgMCwgc3VyZmFjZS0+Z2V0V2lkdGgoKSwgc3VyZmFjZS0+
Z2V0SGVpZ2h0KCkpOwogCiAgICAgICAgIG1IYXNCZWVuQ3VycmVudCA9IHRydWU7CiAgICAgfQog
CiAgICAgLy8gVE9ETyhqbWFkaWxsKTogUmV3b3JrIHRoaXMgd2hlbiB3ZSBzdXBwb3J0IENvbnRl
eHRJbXBsCi0gICAgbVN0YXRlLnNldEFsbERpcnR5Qml0cygpOworICAgIG1HTFN0YXRlLnNldEFs
bERpcnR5Qml0cygpOwogCiAgICAgaWYgKG1DdXJyZW50U3VyZmFjZSkKICAgICB7CkBAIC0zNDIs
MTkgKzQ2MywxOSBAQCB2b2lkIENvbnRleHQ6Om1ha2VDdXJyZW50KGVnbDo6U3VyZmFjZSAqCiAg
ICAgLy8gZnJhbWVidWZmZXIgKG9yIGxhY2sgb2YpIHdpbGwgaGF2ZSBhIG51bGxwdHIuCiAgICAg
ewogICAgICAgICBGcmFtZWJ1ZmZlciAqbmV3RGVmYXVsdCA9IHN1cmZhY2UtPmdldERlZmF1bHRG
cmFtZWJ1ZmZlcigpOwotICAgICAgICBpZiAobVN0YXRlLmdldFJlYWRGcmFtZWJ1ZmZlcigpID09
IG51bGxwdHIpCisgICAgICAgIGlmIChtR0xTdGF0ZS5nZXRSZWFkRnJhbWVidWZmZXIoKSA9PSBu
dWxscHRyKQogICAgICAgICB7Ci0gICAgICAgICAgICBtU3RhdGUuc2V0UmVhZEZyYW1lYnVmZmVy
QmluZGluZyhuZXdEZWZhdWx0KTsKKyAgICAgICAgICAgIG1HTFN0YXRlLnNldFJlYWRGcmFtZWJ1
ZmZlckJpbmRpbmcobmV3RGVmYXVsdCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG1TdGF0ZS5n
ZXREcmF3RnJhbWVidWZmZXIoKSA9PSBudWxscHRyKQorICAgICAgICBpZiAobUdMU3RhdGUuZ2V0
RHJhd0ZyYW1lYnVmZmVyKCkgPT0gbnVsbHB0cikKICAgICAgICAgewotICAgICAgICAgICAgbVN0
YXRlLnNldERyYXdGcmFtZWJ1ZmZlckJpbmRpbmcobmV3RGVmYXVsdCk7CisgICAgICAgICAgICBt
R0xTdGF0ZS5zZXREcmF3RnJhbWVidWZmZXJCaW5kaW5nKG5ld0RlZmF1bHQpOwogICAgICAgICB9
CiAgICAgICAgIG1GcmFtZWJ1ZmZlck1hcFswXSA9IG5ld0RlZmF1bHQ7CiAgICAgfQogCiAgICAg
Ly8gTm90aWZ5IHRoZSByZW5kZXJlciBvZiBhIGNvbnRleHQgc3dpdGNoCi0gICAgbVJlbmRlcmVy
LT5vbk1ha2VDdXJyZW50KGdldERhdGEoKSk7CisgICAgbUltcGxlbWVudGF0aW9uLT5vbk1ha2VD
dXJyZW50KG1TdGF0ZSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6cmVsZWFzZVN1cmZhY2UoKQpAQCAt
MzY0LDEzICs0ODUsMTMgQEAgdm9pZCBDb250ZXh0OjpyZWxlYXNlU3VyZmFjZSgpCiAgICAgLy8g
UmVtb3ZlIHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyCiAgICAgewogICAgICAgICBGcmFtZWJ1ZmZl
ciAqY3VycmVudERlZmF1bHQgPSBtQ3VycmVudFN1cmZhY2UtPmdldERlZmF1bHRGcmFtZWJ1ZmZl
cigpOwotICAgICAgICBpZiAobVN0YXRlLmdldFJlYWRGcmFtZWJ1ZmZlcigpID09IGN1cnJlbnRE
ZWZhdWx0KQorICAgICAgICBpZiAobUdMU3RhdGUuZ2V0UmVhZEZyYW1lYnVmZmVyKCkgPT0gY3Vy
cmVudERlZmF1bHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1TdGF0ZS5zZXRSZWFkRnJhbWVi
dWZmZXJCaW5kaW5nKG51bGxwdHIpOworICAgICAgICAgICAgbUdMU3RhdGUuc2V0UmVhZEZyYW1l
YnVmZmVyQmluZGluZyhudWxscHRyKTsKICAgICAgICAgfQotICAgICAgICBpZiAobVN0YXRlLmdl
dERyYXdGcmFtZWJ1ZmZlcigpID09IGN1cnJlbnREZWZhdWx0KQorICAgICAgICBpZiAobUdMU3Rh
dGUuZ2V0RHJhd0ZyYW1lYnVmZmVyKCkgPT0gY3VycmVudERlZmF1bHQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIG1TdGF0ZS5zZXREcmF3RnJhbWVidWZmZXJCaW5kaW5nKG51bGxwdHIpOworICAg
ICAgICAgICAgbUdMU3RhdGUuc2V0RHJhd0ZyYW1lYnVmZmVyQmluZGluZyhudWxscHRyKTsKICAg
ICAgICAgfQogICAgICAgICBtRnJhbWVidWZmZXJNYXAuZXJhc2UoMCk7CiAgICAgfQpAQCAtMzc5
LDE5ICs1MDAsNiBAQCB2b2lkIENvbnRleHQ6OnJlbGVhc2VTdXJmYWNlKCkKICAgICBtQ3VycmVu
dFN1cmZhY2UgPSBudWxscHRyOwogfQogCi0vLyBOT1RFOiB0aGlzIGZ1bmN0aW9uIHNob3VsZCBu
b3QgYXNzdW1lIHRoYXQgdGhpcyBjb250ZXh0IGlzIGN1cnJlbnQhCi12b2lkIENvbnRleHQ6Om1h
cmtDb250ZXh0TG9zdCgpCi17Ci0gICAgaWYgKG1SZXNldFN0cmF0ZWd5ID09IEdMX0xPU0VfQ09O
VEVYVF9PTl9SRVNFVF9FWFQpCi0gICAgICAgIG1SZXNldFN0YXR1cyA9IEdMX1VOS05PV05fQ09O
VEVYVF9SRVNFVF9FWFQ7Ci0gICAgbUNvbnRleHRMb3N0ID0gdHJ1ZTsKLX0KLQotYm9vbCBDb250
ZXh0Ojppc0NvbnRleHRMb3N0KCkKLXsKLSAgICByZXR1cm4gbUNvbnRleHRMb3N0OwotfQotCiBH
THVpbnQgQ29udGV4dDo6Y3JlYXRlQnVmZmVyKCkKIHsKICAgICByZXR1cm4gbVJlc291cmNlTWFu
YWdlci0+Y3JlYXRlQnVmZmVyKCk7CkBAIC0zOTksMTIgKzUwNywxMyBAQCBHTHVpbnQgQ29udGV4
dDo6Y3JlYXRlQnVmZmVyKCkKIAogR0x1aW50IENvbnRleHQ6OmNyZWF0ZVByb2dyYW0oKQogewot
ICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5jcmVhdGVQcm9ncmFtKCk7CisgICAgcmV0dXJu
IG1SZXNvdXJjZU1hbmFnZXItPmNyZWF0ZVByb2dyYW0obUltcGxlbWVudGF0aW9uLmdldCgpKTsK
IH0KIAogR0x1aW50IENvbnRleHQ6OmNyZWF0ZVNoYWRlcihHTGVudW0gdHlwZSkKIHsKLSAgICBy
ZXR1cm4gbVJlc291cmNlTWFuYWdlci0+Y3JlYXRlU2hhZGVyKG1SZW5kZXJlci0+Z2V0UmVuZGVy
ZXJMaW1pdGF0aW9ucygpLCB0eXBlKTsKKyAgICByZXR1cm4gbVJlc291cmNlTWFuYWdlci0+Y3Jl
YXRlU2hhZGVyKG1JbXBsZW1lbnRhdGlvbi5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1JbXBsZW1lbnRhdGlvbi0+Z2V0TmF0aXZlTGltaXRhdGlvbnMo
KSwgdHlwZSk7CiB9CiAKIEdMdWludCBDb250ZXh0OjpjcmVhdGVUZXh0dXJlKCkKQEAgLTQxOSwx
MSArNTI4LDIyIEBAIEdMdWludCBDb250ZXh0OjpjcmVhdGVSZW5kZXJidWZmZXIoKQogCiBHTHN5
bmMgQ29udGV4dDo6Y3JlYXRlRmVuY2VTeW5jKCkKIHsKLSAgICBHTHVpbnQgaGFuZGxlID0gbVJl
c291cmNlTWFuYWdlci0+Y3JlYXRlRmVuY2VTeW5jKCk7CisgICAgR0x1aW50IGhhbmRsZSA9IG1S
ZXNvdXJjZU1hbmFnZXItPmNyZWF0ZUZlbmNlU3luYyhtSW1wbGVtZW50YXRpb24uZ2V0KCkpOwog
CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8R0xzeW5jPihzdGF0aWNfY2FzdDx1aW50cHRy
X3Q+KGhhbmRsZSkpOwogfQogCitHTHVpbnQgQ29udGV4dDo6Y3JlYXRlUGF0aHMoR0xzaXplaSBy
YW5nZSkKK3sKKyAgICBhdXRvIHJlc3VsdE9yRXJyb3IgPSBtUmVzb3VyY2VNYW5hZ2VyLT5jcmVh
dGVQYXRocyhtSW1wbGVtZW50YXRpb24uZ2V0KCksIHJhbmdlKTsKKyAgICBpZiAocmVzdWx0T3JF
cnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICBoYW5kbGVFcnJvcihyZXN1bHRPckVycm9y
LmdldEVycm9yKCkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3Vs
dE9yRXJyb3IuZ2V0UmVzdWx0KCk7Cit9CisKIEdMdWludCBDb250ZXh0OjpjcmVhdGVWZXJ0ZXhB
cnJheSgpCiB7CiAgICAgR0x1aW50IHZlcnRleEFycmF5ICAgICAgICAgICA9IG1WZXJ0ZXhBcnJh
eUhhbmRsZUFsbG9jYXRvci5hbGxvY2F0ZSgpOwpAQCAtNDU3LDcgKzU3Nyw3IEBAIEdMdWludCBD
b250ZXh0OjpjcmVhdGVGZW5jZU5WKCkKIHsKICAgICBHTHVpbnQgaGFuZGxlID0gbUZlbmNlTlZI
YW5kbGVBbGxvY2F0b3IuYWxsb2NhdGUoKTsKIAotICAgIG1GZW5jZU5WTWFwW2hhbmRsZV0gPSBu
ZXcgRmVuY2VOVihtUmVuZGVyZXItPmNyZWF0ZUZlbmNlTlYoKSk7CisgICAgbUZlbmNlTlZNYXBb
aGFuZGxlXSA9IG5ldyBGZW5jZU5WKG1JbXBsZW1lbnRhdGlvbi0+Y3JlYXRlRmVuY2VOVigpKTsK
IAogICAgIHJldHVybiBoYW5kbGU7CiB9CkBAIC01MjEsNiArNjQxLDk2IEBAIHZvaWQgQ29udGV4
dDo6ZGVsZXRlRmVuY2VTeW5jKEdMc3luYyBmZW4KICAgICBtUmVzb3VyY2VNYW5hZ2VyLT5kZWxl
dGVGZW5jZVN5bmMoc3RhdGljX2Nhc3Q8R0x1aW50PihyZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4oZmVuY2VTeW5jKSkpOwogfQogCit2b2lkIENvbnRleHQ6OmRlbGV0ZVBhdGhzKEdMdWludCBm
aXJzdCwgR0xzaXplaSByYW5nZSkKK3sKKyAgICBtUmVzb3VyY2VNYW5hZ2VyLT5kZWxldGVQYXRo
cyhmaXJzdCwgcmFuZ2UpOworfQorCitib29sIENvbnRleHQ6Omhhc1BhdGhEYXRhKEdMdWludCBw
YXRoKSBjb25zdAoreworICAgIGNvbnN0IGF1dG8gKnBhdGhPYmogPSBtUmVzb3VyY2VNYW5hZ2Vy
LT5nZXRQYXRoKHBhdGgpOworICAgIGlmIChwYXRoT2JqID09IG51bGxwdHIpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiBwYXRoT2JqLT5oYXNQYXRoRGF0YSgpOworfQorCiti
b29sIENvbnRleHQ6Omhhc1BhdGgoR0x1aW50IHBhdGgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1S
ZXNvdXJjZU1hbmFnZXItPmhhc1BhdGgocGF0aCk7Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0UGF0
aENvbW1hbmRzKEdMdWludCBwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBudW1Db21tYW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
dWJ5dGUgKmNvbW1hbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBu
dW1Db29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY29vcmRUeXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqY29vcmRzKQorewor
ICAgIGF1dG8gKnBhdGhPYmplY3QgPSBtUmVzb3VyY2VNYW5hZ2VyLT5nZXRQYXRoKHBhdGgpOwor
CisgICAgaGFuZGxlRXJyb3IocGF0aE9iamVjdC0+c2V0Q29tbWFuZHMobnVtQ29tbWFuZHMsIGNv
bW1hbmRzLCBudW1Db29yZHMsIGNvb3JkVHlwZSwgY29vcmRzKSk7Cit9CisKK3ZvaWQgQ29udGV4
dDo6c2V0UGF0aFBhcmFtZXRlcmYoR0x1aW50IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCB2
YWx1ZSkKK3sKKyAgICBhdXRvICpwYXRoT2JqID0gbVJlc291cmNlTWFuYWdlci0+Z2V0UGF0aChw
YXRoKTsKKworICAgIHN3aXRjaCAocG5hbWUpCisgICAgeworICAgICAgICBjYXNlIEdMX1BBVEhf
U1RST0tFX1dJRFRIX0NIUk9NSVVNOgorICAgICAgICAgICAgcGF0aE9iai0+c2V0U3Ryb2tlV2lk
dGgodmFsdWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfUEFUSF9FTkRf
Q0FQU19DSFJPTUlVTToKKyAgICAgICAgICAgIHBhdGhPYmotPnNldEVuZENhcHMoc3RhdGljX2Nh
c3Q8R0xlbnVtPih2YWx1ZSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xf
UEFUSF9KT0lOX1NUWUxFX0NIUk9NSVVNOgorICAgICAgICAgICAgcGF0aE9iai0+c2V0Sm9pblN0
eWxlKHN0YXRpY19jYXN0PEdMZW51bT4odmFsdWUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEdMX1BBVEhfTUlURVJfTElNSVRfQ0hST01JVU06CisgICAgICAgICAgICBwYXRo
T2JqLT5zZXRNaXRlckxpbWl0KHZhbHVlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEdMX1BBVEhfU1RST0tFX0JPVU5EX0NIUk9NSVVNOgorICAgICAgICAgICAgcGF0aE9iai0+
c2V0U3Ryb2tlQm91bmQodmFsdWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
fQorfQorCit2b2lkIENvbnRleHQ6OmdldFBhdGhQYXJhbWV0ZXJmdihHTHVpbnQgcGF0aCwgR0xl
bnVtIHBuYW1lLCBHTGZsb2F0ICp2YWx1ZSkgY29uc3QKK3sKKyAgICBjb25zdCBhdXRvICpwYXRo
T2JqID0gbVJlc291cmNlTWFuYWdlci0+Z2V0UGF0aChwYXRoKTsKKworICAgIHN3aXRjaCAocG5h
bWUpCisgICAgeworICAgICAgICBjYXNlIEdMX1BBVEhfU1RST0tFX1dJRFRIX0NIUk9NSVVNOgor
ICAgICAgICAgICAgKnZhbHVlID0gcGF0aE9iai0+Z2V0U3Ryb2tlV2lkdGgoKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1BBVEhfRU5EX0NBUFNfQ0hST01JVU06CisgICAg
ICAgICAgICAqdmFsdWUgPSBzdGF0aWNfY2FzdDxHTGZsb2F0PihwYXRoT2JqLT5nZXRFbmRDYXBz
KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfUEFUSF9KT0lOX1NUWUxF
X0NIUk9NSVVNOgorICAgICAgICAgICAgKnZhbHVlID0gc3RhdGljX2Nhc3Q8R0xmbG9hdD4ocGF0
aE9iai0+Z2V0Sm9pblN0eWxlKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
R0xfUEFUSF9NSVRFUl9MSU1JVF9DSFJPTUlVTToKKyAgICAgICAgICAgICp2YWx1ZSA9IHBhdGhP
YmotPmdldE1pdGVyTGltaXQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdM
X1BBVEhfU1RST0tFX0JPVU5EX0NIUk9NSVVNOgorICAgICAgICAgICAgKnZhbHVlID0gcGF0aE9i
ai0+Z2V0U3Ryb2tlQm91bmQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0K
K30KKwordm9pZCBDb250ZXh0OjpzZXRQYXRoU3RlbmNpbEZ1bmMoR0xlbnVtIGZ1bmMsIEdMaW50
IHJlZiwgR0x1aW50IG1hc2spCit7CisgICAgbUdMU3RhdGUuc2V0UGF0aFN0ZW5jaWxGdW5jKGZ1
bmMsIHJlZiwgbWFzayk7Cit9CisKIHZvaWQgQ29udGV4dDo6ZGVsZXRlVmVydGV4QXJyYXkoR0x1
aW50IHZlcnRleEFycmF5KQogewogICAgIGF1dG8gaXRlciA9IG1WZXJ0ZXhBcnJheU1hcC5maW5k
KHZlcnRleEFycmF5KTsKQEAgLTYxMCwxNiArODIwLDYgQEAgQnVmZmVyICpDb250ZXh0OjpnZXRC
dWZmZXIoR0x1aW50IGhhbmRsZQogICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5nZXRCdWZm
ZXIoaGFuZGxlKTsKIH0KIAotU2hhZGVyICpDb250ZXh0OjpnZXRTaGFkZXIoR0x1aW50IGhhbmRs
ZSkgY29uc3QKLXsKLSAgICByZXR1cm4gbVJlc291cmNlTWFuYWdlci0+Z2V0U2hhZGVyKGhhbmRs
ZSk7Ci19Ci0KLVByb2dyYW0gKkNvbnRleHQ6OmdldFByb2dyYW0oR0x1aW50IGhhbmRsZSkgY29u
c3QKLXsKLSAgICByZXR1cm4gbVJlc291cmNlTWFuYWdlci0+Z2V0UHJvZ3JhbShoYW5kbGUpOwot
fQotCiBUZXh0dXJlICpDb250ZXh0OjpnZXRUZXh0dXJlKEdMdWludCBoYW5kbGUpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1SZXNvdXJjZU1hbmFnZXItPmdldFRleHR1cmUoaGFuZGxlKTsKQEAgLTY4
Nyw2ICs4ODcsNDkgQEAgTGFiZWxlZE9iamVjdCAqQ29udGV4dDo6Z2V0TGFiZWxlZE9iamVjdAog
ICAgIHJldHVybiBnZXRGZW5jZVN5bmMocmVpbnRlcnByZXRfY2FzdDxHTHN5bmM+KGNvbnN0X2Nh
c3Q8dm9pZCAqPihwdHIpKSk7CiB9CiAKK3ZvaWQgQ29udGV4dDo6b2JqZWN0TGFiZWwoR0xlbnVt
IGlkZW50aWZpZXIsIEdMdWludCBuYW1lLCBHTHNpemVpIGxlbmd0aCwgY29uc3QgR0xjaGFyICps
YWJlbCkKK3sKKyAgICBMYWJlbGVkT2JqZWN0ICpvYmplY3QgPSBnZXRMYWJlbGVkT2JqZWN0KGlk
ZW50aWZpZXIsIG5hbWUpOworICAgIEFTU0VSVChvYmplY3QgIT0gbnVsbHB0cik7CisKKyAgICBz
dGQ6OnN0cmluZyBsYWJlbE5hbWUgPSBHZXRPYmplY3RMYWJlbEZyb21Qb2ludGVyKGxlbmd0aCwg
bGFiZWwpOworICAgIG9iamVjdC0+c2V0TGFiZWwobGFiZWxOYW1lKTsKK30KKwordm9pZCBDb250
ZXh0OjpvYmplY3RQdHJMYWJlbChjb25zdCB2b2lkICpwdHIsIEdMc2l6ZWkgbGVuZ3RoLCBjb25z
dCBHTGNoYXIgKmxhYmVsKQoreworICAgIExhYmVsZWRPYmplY3QgKm9iamVjdCA9IGdldExhYmVs
ZWRPYmplY3RGcm9tUHRyKHB0cik7CisgICAgQVNTRVJUKG9iamVjdCAhPSBudWxscHRyKTsKKwor
ICAgIHN0ZDo6c3RyaW5nIGxhYmVsTmFtZSA9IEdldE9iamVjdExhYmVsRnJvbVBvaW50ZXIobGVu
Z3RoLCBsYWJlbCk7CisgICAgb2JqZWN0LT5zZXRMYWJlbChsYWJlbE5hbWUpOworfQorCit2b2lk
IENvbnRleHQ6OmdldE9iamVjdExhYmVsKEdMZW51bSBpZGVudGlmaWVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
ICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqbGFiZWwpIGNv
bnN0Cit7CisgICAgTGFiZWxlZE9iamVjdCAqb2JqZWN0ID0gZ2V0TGFiZWxlZE9iamVjdChpZGVu
dGlmaWVyLCBuYW1lKTsKKyAgICBBU1NFUlQob2JqZWN0ICE9IG51bGxwdHIpOworCisgICAgY29u
c3Qgc3RkOjpzdHJpbmcgJm9iamVjdExhYmVsID0gb2JqZWN0LT5nZXRMYWJlbCgpOworICAgIEdl
dE9iamVjdExhYmVsQmFzZShvYmplY3RMYWJlbCwgYnVmU2l6ZSwgbGVuZ3RoLCBsYWJlbCk7Cit9
CisKK3ZvaWQgQ29udGV4dDo6Z2V0T2JqZWN0UHRyTGFiZWwoY29uc3Qgdm9pZCAqcHRyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xjaGFyICpsYWJlbCkgY29uc3QKK3sKKyAgICBMYWJlbGVkT2JqZWN0
ICpvYmplY3QgPSBnZXRMYWJlbGVkT2JqZWN0RnJvbVB0cihwdHIpOworICAgIEFTU0VSVChvYmpl
Y3QgIT0gbnVsbHB0cik7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmb2JqZWN0TGFiZWwgPSBv
YmplY3QtPmdldExhYmVsKCk7CisgICAgR2V0T2JqZWN0TGFiZWxCYXNlKG9iamVjdExhYmVsLCBi
dWZTaXplLCBsZW5ndGgsIGxhYmVsKTsKK30KKwogYm9vbCBDb250ZXh0Ojppc1NhbXBsZXIoR0x1
aW50IHNhbXBsZXJOYW1lKSBjb25zdAogewogICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5p
c1NhbXBsZXIoc2FtcGxlck5hbWUpOwpAQCAtNjk0LDE0ICs5MzcsMTQgQEAgYm9vbCBDb250ZXh0
Ojppc1NhbXBsZXIoR0x1aW50IHNhbXBsZXJOYQogCiB2b2lkIENvbnRleHQ6OmJpbmRBcnJheUJ1
ZmZlcihHTHVpbnQgYnVmZmVySGFuZGxlKQogewotICAgIEJ1ZmZlciAqYnVmZmVyID0gbVJlc291
cmNlTWFuYWdlci0+Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKGJ1ZmZlckhhbmRsZSk7Ci0gICAgbVN0
YXRlLnNldEFycmF5QnVmZmVyQmluZGluZyhidWZmZXIpOworICAgIEJ1ZmZlciAqYnVmZmVyID0g
bVJlc291cmNlTWFuYWdlci0+Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKG1JbXBsZW1lbnRhdGlvbi5n
ZXQoKSwgYnVmZmVySGFuZGxlKTsKKyAgICBtR0xTdGF0ZS5zZXRBcnJheUJ1ZmZlckJpbmRpbmco
YnVmZmVyKTsKIH0KIAogdm9pZCBDb250ZXh0OjpiaW5kRWxlbWVudEFycmF5QnVmZmVyKEdMdWlu
dCBidWZmZXJIYW5kbGUpCiB7Ci0gICAgQnVmZmVyICpidWZmZXIgPSBtUmVzb3VyY2VNYW5hZ2Vy
LT5jaGVja0J1ZmZlckFsbG9jYXRpb24oYnVmZmVySGFuZGxlKTsKLSAgICBtU3RhdGUuZ2V0VmVy
dGV4QXJyYXkoKS0+c2V0RWxlbWVudEFycmF5QnVmZmVyKGJ1ZmZlcik7CisgICAgQnVmZmVyICpi
dWZmZXIgPSBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja0J1ZmZlckFsbG9jYXRpb24obUltcGxlbWVu
dGF0aW9uLmdldCgpLCBidWZmZXJIYW5kbGUpOworICAgIG1HTFN0YXRlLmdldFZlcnRleEFycmF5
KCktPnNldEVsZW1lbnRBcnJheUJ1ZmZlcihidWZmZXIpOwogfQogCiB2b2lkIENvbnRleHQ6OmJp
bmRUZXh0dXJlKEdMZW51bSB0YXJnZXQsIEdMdWludCBoYW5kbGUpCkBAIC03MTQsNDggKzk1Nyw1
MCBAQCB2b2lkIENvbnRleHQ6OmJpbmRUZXh0dXJlKEdMZW51bSB0YXJnZXQsCiAgICAgfQogICAg
IGVsc2UKICAgICB7Ci0gICAgICAgIHRleHR1cmUgPSBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja1Rl
eHR1cmVBbGxvY2F0aW9uKGhhbmRsZSwgdGFyZ2V0KTsKKyAgICAgICAgdGV4dHVyZSA9IG1SZXNv
dXJjZU1hbmFnZXItPmNoZWNrVGV4dHVyZUFsbG9jYXRpb24obUltcGxlbWVudGF0aW9uLmdldCgp
LCBoYW5kbGUsIHRhcmdldCk7CiAgICAgfQogCiAgICAgQVNTRVJUKHRleHR1cmUpOwotICAgIG1T
dGF0ZS5zZXRTYW1wbGVyVGV4dHVyZSh0YXJnZXQsIHRleHR1cmUpOworICAgIG1HTFN0YXRlLnNl
dFNhbXBsZXJUZXh0dXJlKHRhcmdldCwgdGV4dHVyZSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6Ymlu
ZFJlYWRGcmFtZWJ1ZmZlcihHTHVpbnQgZnJhbWVidWZmZXJIYW5kbGUpCiB7CiAgICAgRnJhbWVi
dWZmZXIgKmZyYW1lYnVmZmVyID0gY2hlY2tGcmFtZWJ1ZmZlckFsbG9jYXRpb24oZnJhbWVidWZm
ZXJIYW5kbGUpOwotICAgIG1TdGF0ZS5zZXRSZWFkRnJhbWVidWZmZXJCaW5kaW5nKGZyYW1lYnVm
ZmVyKTsKKyAgICBtR0xTdGF0ZS5zZXRSZWFkRnJhbWVidWZmZXJCaW5kaW5nKGZyYW1lYnVmZmVy
KTsKIH0KIAogdm9pZCBDb250ZXh0OjpiaW5kRHJhd0ZyYW1lYnVmZmVyKEdMdWludCBmcmFtZWJ1
ZmZlckhhbmRsZSkKIHsKICAgICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBjaGVja0ZyYW1l
YnVmZmVyQWxsb2NhdGlvbihmcmFtZWJ1ZmZlckhhbmRsZSk7Ci0gICAgbVN0YXRlLnNldERyYXdG
cmFtZWJ1ZmZlckJpbmRpbmcoZnJhbWVidWZmZXIpOworICAgIG1HTFN0YXRlLnNldERyYXdGcmFt
ZWJ1ZmZlckJpbmRpbmcoZnJhbWVidWZmZXIpOwogfQogCiB2b2lkIENvbnRleHQ6OmJpbmRSZW5k
ZXJidWZmZXIoR0x1aW50IHJlbmRlcmJ1ZmZlckhhbmRsZSkKIHsKLSAgICBSZW5kZXJidWZmZXIg
KnJlbmRlcmJ1ZmZlciA9IG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrUmVuZGVyYnVmZmVyQWxsb2Nh
dGlvbihyZW5kZXJidWZmZXJIYW5kbGUpOwotICAgIG1TdGF0ZS5zZXRSZW5kZXJidWZmZXJCaW5k
aW5nKHJlbmRlcmJ1ZmZlcik7CisgICAgUmVuZGVyYnVmZmVyICpyZW5kZXJidWZmZXIgPQorICAg
ICAgICBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja1JlbmRlcmJ1ZmZlckFsbG9jYXRpb24obUltcGxl
bWVudGF0aW9uLmdldCgpLCByZW5kZXJidWZmZXJIYW5kbGUpOworICAgIG1HTFN0YXRlLnNldFJl
bmRlcmJ1ZmZlckJpbmRpbmcocmVuZGVyYnVmZmVyKTsKIH0KIAogdm9pZCBDb250ZXh0OjpiaW5k
VmVydGV4QXJyYXkoR0x1aW50IHZlcnRleEFycmF5SGFuZGxlKQogewogICAgIFZlcnRleEFycmF5
ICp2ZXJ0ZXhBcnJheSA9IGNoZWNrVmVydGV4QXJyYXlBbGxvY2F0aW9uKHZlcnRleEFycmF5SGFu
ZGxlKTsKLSAgICBtU3RhdGUuc2V0VmVydGV4QXJyYXlCaW5kaW5nKHZlcnRleEFycmF5KTsKKyAg
ICBtR0xTdGF0ZS5zZXRWZXJ0ZXhBcnJheUJpbmRpbmcodmVydGV4QXJyYXkpOwogfQogCiB2b2lk
IENvbnRleHQ6OmJpbmRTYW1wbGVyKEdMdWludCB0ZXh0dXJlVW5pdCwgR0x1aW50IHNhbXBsZXJI
YW5kbGUpCiB7CiAgICAgQVNTRVJUKHRleHR1cmVVbml0IDwgbUNhcHMubWF4Q29tYmluZWRUZXh0
dXJlSW1hZ2VVbml0cyk7Ci0gICAgU2FtcGxlciAqc2FtcGxlciA9IG1SZXNvdXJjZU1hbmFnZXIt
PmNoZWNrU2FtcGxlckFsbG9jYXRpb24oc2FtcGxlckhhbmRsZSk7Ci0gICAgbVN0YXRlLnNldFNh
bXBsZXJCaW5kaW5nKHRleHR1cmVVbml0LCBzYW1wbGVyKTsKKyAgICBTYW1wbGVyICpzYW1wbGVy
ID0KKyAgICAgICAgbVJlc291cmNlTWFuYWdlci0+Y2hlY2tTYW1wbGVyQWxsb2NhdGlvbihtSW1w
bGVtZW50YXRpb24uZ2V0KCksIHNhbXBsZXJIYW5kbGUpOworICAgIG1HTFN0YXRlLnNldFNhbXBs
ZXJCaW5kaW5nKHRleHR1cmVVbml0LCBzYW1wbGVyKTsKIH0KIAogdm9pZCBDb250ZXh0OjpiaW5k
R2VuZXJpY1VuaWZvcm1CdWZmZXIoR0x1aW50IGJ1ZmZlckhhbmRsZSkKIHsKLSAgICBCdWZmZXIg
KmJ1ZmZlciA9IG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrQnVmZmVyQWxsb2NhdGlvbihidWZmZXJI
YW5kbGUpOwotICAgIG1TdGF0ZS5zZXRHZW5lcmljVW5pZm9ybUJ1ZmZlckJpbmRpbmcoYnVmZmVy
KTsKKyAgICBCdWZmZXIgKmJ1ZmZlciA9IG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrQnVmZmVyQWxs
b2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIGJ1ZmZlckhhbmRsZSk7CisgICAgbUdMU3Rh
dGUuc2V0R2VuZXJpY1VuaWZvcm1CdWZmZXJCaW5kaW5nKGJ1ZmZlcik7CiB9CiAKIHZvaWQgQ29u
dGV4dDo6YmluZEluZGV4ZWRVbmlmb3JtQnVmZmVyKEdMdWludCBidWZmZXJIYW5kbGUsCkBAIC03
NjMsMTQgKzEwMDgsMTQgQEAgdm9pZCBDb250ZXh0OjpiaW5kSW5kZXhlZFVuaWZvcm1CdWZmZXIo
RwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgb2Zmc2V0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXpl
KQogewotICAgIEJ1ZmZlciAqYnVmZmVyID0gbVJlc291cmNlTWFuYWdlci0+Y2hlY2tCdWZmZXJB
bGxvY2F0aW9uKGJ1ZmZlckhhbmRsZSk7Ci0gICAgbVN0YXRlLnNldEluZGV4ZWRVbmlmb3JtQnVm
ZmVyQmluZGluZyhpbmRleCwgYnVmZmVyLCBvZmZzZXQsIHNpemUpOworICAgIEJ1ZmZlciAqYnVm
ZmVyID0gbVJlc291cmNlTWFuYWdlci0+Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKG1JbXBsZW1lbnRh
dGlvbi5nZXQoKSwgYnVmZmVySGFuZGxlKTsKKyAgICBtR0xTdGF0ZS5zZXRJbmRleGVkVW5pZm9y
bUJ1ZmZlckJpbmRpbmcoaW5kZXgsIGJ1ZmZlciwgb2Zmc2V0LCBzaXplKTsKIH0KIAogdm9pZCBD
b250ZXh0OjpiaW5kR2VuZXJpY1RyYW5zZm9ybUZlZWRiYWNrQnVmZmVyKEdMdWludCBidWZmZXJI
YW5kbGUpCiB7Ci0gICAgQnVmZmVyICpidWZmZXIgPSBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja0J1
ZmZlckFsbG9jYXRpb24oYnVmZmVySGFuZGxlKTsKLSAgICBtU3RhdGUuZ2V0Q3VycmVudFRyYW5z
Zm9ybUZlZWRiYWNrKCktPmJpbmRHZW5lcmljQnVmZmVyKGJ1ZmZlcik7CisgICAgQnVmZmVyICpi
dWZmZXIgPSBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja0J1ZmZlckFsbG9jYXRpb24obUltcGxlbWVu
dGF0aW9uLmdldCgpLCBidWZmZXJIYW5kbGUpOworICAgIG1HTFN0YXRlLmdldEN1cnJlbnRUcmFu
c2Zvcm1GZWVkYmFjaygpLT5iaW5kR2VuZXJpY0J1ZmZlcihidWZmZXIpOwogfQogCiB2b2lkIENv
bnRleHQ6OmJpbmRJbmRleGVkVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXIoR0x1aW50IGJ1ZmZlckhh
bmRsZSwKQEAgLTc3OCw0NCArMTAyMyw0NCBAQCB2b2lkIENvbnRleHQ6OmJpbmRJbmRleGVkVHJh
bnNmb3JtRmVlZGJhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnRwdHIgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgc2l6ZSkKIHsKLSAgICBCdWZmZXIgKmJ1ZmZlciA9
IG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrQnVmZmVyQWxsb2NhdGlvbihidWZmZXJIYW5kbGUpOwot
ICAgIG1TdGF0ZS5nZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJhY2soKS0+YmluZEluZGV4ZWRCdWZm
ZXIoaW5kZXgsIGJ1ZmZlciwgb2Zmc2V0LCBzaXplKTsKKyAgICBCdWZmZXIgKmJ1ZmZlciA9IG1S
ZXNvdXJjZU1hbmFnZXItPmNoZWNrQnVmZmVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0
KCksIGJ1ZmZlckhhbmRsZSk7CisgICAgbUdMU3RhdGUuZ2V0Q3VycmVudFRyYW5zZm9ybUZlZWRi
YWNrKCktPmJpbmRJbmRleGVkQnVmZmVyKGluZGV4LCBidWZmZXIsIG9mZnNldCwgc2l6ZSk7CiB9
CiAKIHZvaWQgQ29udGV4dDo6YmluZENvcHlSZWFkQnVmZmVyKEdMdWludCBidWZmZXJIYW5kbGUp
CiB7Ci0gICAgQnVmZmVyICpidWZmZXIgPSBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja0J1ZmZlckFs
bG9jYXRpb24oYnVmZmVySGFuZGxlKTsKLSAgICBtU3RhdGUuc2V0Q29weVJlYWRCdWZmZXJCaW5k
aW5nKGJ1ZmZlcik7CisgICAgQnVmZmVyICpidWZmZXIgPSBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVj
a0J1ZmZlckFsbG9jYXRpb24obUltcGxlbWVudGF0aW9uLmdldCgpLCBidWZmZXJIYW5kbGUpOwor
ICAgIG1HTFN0YXRlLnNldENvcHlSZWFkQnVmZmVyQmluZGluZyhidWZmZXIpOwogfQogCiB2b2lk
IENvbnRleHQ6OmJpbmRDb3B5V3JpdGVCdWZmZXIoR0x1aW50IGJ1ZmZlckhhbmRsZSkKIHsKLSAg
ICBCdWZmZXIgKmJ1ZmZlciA9IG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrQnVmZmVyQWxsb2NhdGlv
bihidWZmZXJIYW5kbGUpOwotICAgIG1TdGF0ZS5zZXRDb3B5V3JpdGVCdWZmZXJCaW5kaW5nKGJ1
ZmZlcik7CisgICAgQnVmZmVyICpidWZmZXIgPSBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja0J1ZmZl
ckFsbG9jYXRpb24obUltcGxlbWVudGF0aW9uLmdldCgpLCBidWZmZXJIYW5kbGUpOworICAgIG1H
TFN0YXRlLnNldENvcHlXcml0ZUJ1ZmZlckJpbmRpbmcoYnVmZmVyKTsKIH0KIAogdm9pZCBDb250
ZXh0OjpiaW5kUGl4ZWxQYWNrQnVmZmVyKEdMdWludCBidWZmZXJIYW5kbGUpCiB7Ci0gICAgQnVm
ZmVyICpidWZmZXIgPSBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja0J1ZmZlckFsbG9jYXRpb24oYnVm
ZmVySGFuZGxlKTsKLSAgICBtU3RhdGUuc2V0UGl4ZWxQYWNrQnVmZmVyQmluZGluZyhidWZmZXIp
OworICAgIEJ1ZmZlciAqYnVmZmVyID0gbVJlc291cmNlTWFuYWdlci0+Y2hlY2tCdWZmZXJBbGxv
Y2F0aW9uKG1JbXBsZW1lbnRhdGlvbi5nZXQoKSwgYnVmZmVySGFuZGxlKTsKKyAgICBtR0xTdGF0
ZS5zZXRQaXhlbFBhY2tCdWZmZXJCaW5kaW5nKGJ1ZmZlcik7CiB9CiAKIHZvaWQgQ29udGV4dDo6
YmluZFBpeGVsVW5wYWNrQnVmZmVyKEdMdWludCBidWZmZXJIYW5kbGUpCiB7Ci0gICAgQnVmZmVy
ICpidWZmZXIgPSBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja0J1ZmZlckFsbG9jYXRpb24oYnVmZmVy
SGFuZGxlKTsKLSAgICBtU3RhdGUuc2V0UGl4ZWxVbnBhY2tCdWZmZXJCaW5kaW5nKGJ1ZmZlcik7
CisgICAgQnVmZmVyICpidWZmZXIgPSBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja0J1ZmZlckFsbG9j
YXRpb24obUltcGxlbWVudGF0aW9uLmdldCgpLCBidWZmZXJIYW5kbGUpOworICAgIG1HTFN0YXRl
LnNldFBpeGVsVW5wYWNrQnVmZmVyQmluZGluZyhidWZmZXIpOwogfQogCiB2b2lkIENvbnRleHQ6
OnVzZVByb2dyYW0oR0x1aW50IHByb2dyYW0pCiB7Ci0gICAgbVN0YXRlLnNldFByb2dyYW0oZ2V0
UHJvZ3JhbShwcm9ncmFtKSk7CisgICAgbUdMU3RhdGUuc2V0UHJvZ3JhbShnZXRQcm9ncmFtKHBy
b2dyYW0pKTsKIH0KIAogdm9pZCBDb250ZXh0OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2soR0x1aW50
IHRyYW5zZm9ybUZlZWRiYWNrSGFuZGxlKQogewogICAgIFRyYW5zZm9ybUZlZWRiYWNrICp0cmFu
c2Zvcm1GZWVkYmFjayA9CiAgICAgICAgIGNoZWNrVHJhbnNmb3JtRmVlZGJhY2tBbGxvY2F0aW9u
KHRyYW5zZm9ybUZlZWRiYWNrSGFuZGxlKTsKLSAgICBtU3RhdGUuc2V0VHJhbnNmb3JtRmVlZGJh
Y2tCaW5kaW5nKHRyYW5zZm9ybUZlZWRiYWNrKTsKKyAgICBtR0xTdGF0ZS5zZXRUcmFuc2Zvcm1G
ZWVkYmFja0JpbmRpbmcodHJhbnNmb3JtRmVlZGJhY2spOwogfQogCiBFcnJvciBDb250ZXh0Ojpi
ZWdpblF1ZXJ5KEdMZW51bSB0YXJnZXQsIEdMdWludCBxdWVyeSkKQEAgLTgzMSwyMCArMTA3Niwy
MCBAQCBFcnJvciBDb250ZXh0OjpiZWdpblF1ZXJ5KEdMZW51bSB0YXJnZXQsCiAgICAgfQogCiAg
ICAgLy8gc2V0IHF1ZXJ5IGFzIGFjdGl2ZSBmb3Igc3BlY2lmaWVkIHRhcmdldCBvbmx5IGlmIGJl
Z2luIHN1Y2NlZWRlZAotICAgIG1TdGF0ZS5zZXRBY3RpdmVRdWVyeSh0YXJnZXQsIHF1ZXJ5T2Jq
ZWN0KTsKKyAgICBtR0xTdGF0ZS5zZXRBY3RpdmVRdWVyeSh0YXJnZXQsIHF1ZXJ5T2JqZWN0KTsK
IAogICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKIEVycm9yIENvbnRleHQ6OmVu
ZFF1ZXJ5KEdMZW51bSB0YXJnZXQpCiB7Ci0gICAgUXVlcnkgKnF1ZXJ5T2JqZWN0ID0gbVN0YXRl
LmdldEFjdGl2ZVF1ZXJ5KHRhcmdldCk7CisgICAgUXVlcnkgKnF1ZXJ5T2JqZWN0ID0gbUdMU3Rh
dGUuZ2V0QWN0aXZlUXVlcnkodGFyZ2V0KTsKICAgICBBU1NFUlQocXVlcnlPYmplY3QpOwogCiAg
ICAgZ2w6OkVycm9yIGVycm9yID0gcXVlcnlPYmplY3QtPmVuZCgpOwogCiAgICAgLy8gQWx3YXlz
IHVuYmluZCB0aGUgcXVlcnksIGV2ZW4gaWYgdGhlcmUgd2FzIGFuIGVycm9yLiBUaGlzIG1heSBk
ZWxldGUgdGhlIHF1ZXJ5IG9iamVjdC4KLSAgICBtU3RhdGUuc2V0QWN0aXZlUXVlcnkodGFyZ2V0
LCBOVUxMKTsKKyAgICBtR0xTdGF0ZS5zZXRBY3RpdmVRdWVyeSh0YXJnZXQsIE5VTEwpOwogCiAg
ICAgcmV0dXJuIGVycm9yOwogfQpAQCAtODY0LDcgKzExMDksNyBAQCB2b2lkIENvbnRleHQ6Omdl
dFF1ZXJ5aXYoR0xlbnVtIHRhcmdldCwgCiAgICAgc3dpdGNoIChwbmFtZSkKICAgICB7CiAgICAg
ICAgIGNhc2UgR0xfQ1VSUkVOVF9RVUVSWV9FWFQ6Ci0gICAgICAgICAgICBwYXJhbXNbMF0gPSBn
ZXRTdGF0ZSgpLmdldEFjdGl2ZVF1ZXJ5SWQodGFyZ2V0KTsKKyAgICAgICAgICAgIHBhcmFtc1sw
XSA9IG1HTFN0YXRlLmdldEFjdGl2ZVF1ZXJ5SWQodGFyZ2V0KTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIEdMX1FVRVJZX0NPVU5URVJfQklUU19FWFQ6CiAgICAgICAgICAgICBz
d2l0Y2ggKHRhcmdldCkKQEAgLTg4NywyNCArMTEzMiwyNCBAQCB2b2lkIENvbnRleHQ6OmdldFF1
ZXJ5aXYoR0xlbnVtIHRhcmdldCwgCiAgICAgfQogfQogCi1FcnJvciBDb250ZXh0OjpnZXRRdWVy
eU9iamVjdGl2KEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQordm9pZCBD
b250ZXh0OjpnZXRRdWVyeU9iamVjdGl2KEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTGludCAq
cGFyYW1zKQogewotICAgIHJldHVybiBHZXRRdWVyeU9iamVjdFBhcmFtZXRlcih0aGlzLCBpZCwg
cG5hbWUsIHBhcmFtcyk7CisgICAgaGFuZGxlRXJyb3IoR2V0UXVlcnlPYmplY3RQYXJhbWV0ZXIo
Z2V0UXVlcnkoaWQpLCBwbmFtZSwgcGFyYW1zKSk7CiB9CiAKLUVycm9yIENvbnRleHQ6OmdldFF1
ZXJ5T2JqZWN0dWl2KEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBhcmFtcykKK3Zv
aWQgQ29udGV4dDo6Z2V0UXVlcnlPYmplY3R1aXYoR0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdM
dWludCAqcGFyYW1zKQogewotICAgIHJldHVybiBHZXRRdWVyeU9iamVjdFBhcmFtZXRlcih0aGlz
LCBpZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgaGFuZGxlRXJyb3IoR2V0UXVlcnlPYmplY3RQYXJh
bWV0ZXIoZ2V0UXVlcnkoaWQpLCBwbmFtZSwgcGFyYW1zKSk7CiB9CiAKLUVycm9yIENvbnRleHQ6
OmdldFF1ZXJ5T2JqZWN0aTY0dihHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAqcGFy
YW1zKQordm9pZCBDb250ZXh0OjpnZXRRdWVyeU9iamVjdGk2NHYoR0x1aW50IGlkLCBHTGVudW0g
cG5hbWUsIEdMaW50NjQgKnBhcmFtcykKIHsKLSAgICByZXR1cm4gR2V0UXVlcnlPYmplY3RQYXJh
bWV0ZXIodGhpcywgaWQsIHBuYW1lLCBwYXJhbXMpOworICAgIGhhbmRsZUVycm9yKEdldFF1ZXJ5
T2JqZWN0UGFyYW1ldGVyKGdldFF1ZXJ5KGlkKSwgcG5hbWUsIHBhcmFtcykpOwogfQogCi1FcnJv
ciBDb250ZXh0OjpnZXRRdWVyeU9iamVjdHVpNjR2KEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBH
THVpbnQ2NCAqcGFyYW1zKQordm9pZCBDb250ZXh0OjpnZXRRdWVyeU9iamVjdHVpNjR2KEdMdWlu
dCBpZCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQ2NCAqcGFyYW1zKQogewotICAgIHJldHVybiBHZXRR
dWVyeU9iamVjdFBhcmFtZXRlcih0aGlzLCBpZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgaGFuZGxl
RXJyb3IoR2V0UXVlcnlPYmplY3RQYXJhbWV0ZXIoZ2V0UXVlcnkoaWQpLCBwbmFtZSwgcGFyYW1z
KSk7CiB9CiAKIEZyYW1lYnVmZmVyICpDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlcih1bnNpZ25lZCBp
bnQgaGFuZGxlKSBjb25zdApAQCAtOTM5LDcgKzExODQsNyBAQCBRdWVyeSAqQ29udGV4dDo6Z2V0
UXVlcnkodW5zaWduZWQgaW50IGhhCiAgICAgewogICAgICAgICBpZiAoIXF1ZXJ5LT5zZWNvbmQg
JiYgY3JlYXRlKQogICAgICAgICB7Ci0gICAgICAgICAgICBxdWVyeS0+c2Vjb25kID0gbmV3IFF1
ZXJ5KG1SZW5kZXJlci0+Y3JlYXRlUXVlcnkodHlwZSksIGhhbmRsZSk7CisgICAgICAgICAgICBx
dWVyeS0+c2Vjb25kID0gbmV3IFF1ZXJ5KG1JbXBsZW1lbnRhdGlvbi0+Y3JlYXRlUXVlcnkodHlw
ZSksIGhhbmRsZSk7CiAgICAgICAgICAgICBxdWVyeS0+c2Vjb25kLT5hZGRSZWYoKTsKICAgICAg
ICAgfQogICAgICAgICByZXR1cm4gcXVlcnktPnNlY29uZDsKQEAgLTk1NCwxMyArMTE5OSwxMyBA
QCBRdWVyeSAqQ29udGV4dDo6Z2V0UXVlcnkoR0x1aW50IGhhbmRsZSkgCiAKIFRleHR1cmUgKkNv
bnRleHQ6OmdldFRhcmdldFRleHR1cmUoR0xlbnVtIHRhcmdldCkgY29uc3QKIHsKLSAgICBBU1NF
UlQoVmFsaWRUZXh0dXJlVGFyZ2V0KHRoaXMsIHRhcmdldCkpOwotICAgIHJldHVybiBtU3RhdGUu
Z2V0VGFyZ2V0VGV4dHVyZSh0YXJnZXQpOworICAgIEFTU0VSVChWYWxpZFRleHR1cmVUYXJnZXQo
dGhpcywgdGFyZ2V0KSB8fCBWYWxpZFRleHR1cmVFeHRlcm5hbFRhcmdldCh0aGlzLCB0YXJnZXQp
KTsKKyAgICByZXR1cm4gbUdMU3RhdGUuZ2V0VGFyZ2V0VGV4dHVyZSh0YXJnZXQpOwogfQogCiBU
ZXh0dXJlICpDb250ZXh0OjpnZXRTYW1wbGVyVGV4dHVyZSh1bnNpZ25lZCBpbnQgc2FtcGxlciwg
R0xlbnVtIHR5cGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1TdGF0ZS5nZXRTYW1wbGVyVGV4dHVy
ZShzYW1wbGVyLCB0eXBlKTsKKyAgICByZXR1cm4gbUdMU3RhdGUuZ2V0U2FtcGxlclRleHR1cmUo
c2FtcGxlciwgdHlwZSk7CiB9CiAKIENvbXBpbGVyICpDb250ZXh0OjpnZXRDb21waWxlcigpIGNv
bnN0CkBAIC05NzUsOCArMTIyMCw4IEBAIHZvaWQgQ29udGV4dDo6Z2V0Qm9vbGVhbnYoR0xlbnVt
IHBuYW1lLCAKICAgICAgIGNhc2UgR0xfU0hBREVSX0NPTVBJTEVSOiAgICAgICAgICAgKnBhcmFt
cyA9IEdMX1RSVUU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgIGNh
c2UgR0xfQ09OVEVYVF9ST0JVU1RfQUNDRVNTX0VYVDogKnBhcmFtcyA9IG1Sb2J1c3RBY2Nlc3Mg
PyBHTF9UUlVFIDogR0xfRkFMU0U7ICBicmVhazsKICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIG1T
dGF0ZS5nZXRCb29sZWFudihwbmFtZSwgcGFyYW1zKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgbUdMU3RhdGUuZ2V0Qm9vbGVhbnYocG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgYnJlYWs7
CiAgICAgfQogfQogCkBAIC0xMDAxLDkgKzEyNDYsMTkgQEAgdm9pZCBDb250ZXh0OjpnZXRGbG9h
dHYoR0xlbnVtIHBuYW1lLCBHTAogICAgICAgY2FzZSBHTF9NQVhfVEVYVFVSRV9MT0RfQklBUzoK
ICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1heExPREJpYXM7CiAgICAgICAgIGJyZWFrOworCisg
ICAgICBjYXNlIEdMX1BBVEhfTU9ERUxWSUVXX01BVFJJWF9DSFJPTUlVTToKKyAgICAgIGNhc2Ug
R0xfUEFUSF9QUk9KRUNUSU9OX01BVFJJWF9DSFJPTUlVTToKKyAgICAgIHsKKyAgICAgICAgICBB
U1NFUlQobUV4dGVuc2lvbnMucGF0aFJlbmRlcmluZyk7CisgICAgICAgICAgY29uc3QgR0xmbG9h
dCAqbSA9IG1HTFN0YXRlLmdldFBhdGhSZW5kZXJpbmdNYXRyaXgocG5hbWUpOworICAgICAgICAg
IG1lbWNweShwYXJhbXMsIG0sIDE2ICogc2l6ZW9mKEdMZmxvYXQpKTsKKyAgICAgIH0KKyAgICAg
IGJyZWFrOworCiAgICAgICBkZWZhdWx0OgotICAgICAgICBtU3RhdGUuZ2V0RmxvYXR2KHBuYW1l
LCBwYXJhbXMpOwotICAgICAgICBicmVhazsKKyAgICAgICAgICBtR0xTdGF0ZS5nZXRGbG9hdHYo
cG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCkBAIC0xMDQyLDgg
KzEyOTcsMTIgQEAgdm9pZCBDb250ZXh0OjpnZXRJbnRlZ2VydihHTGVudW0gcG5hbWUsIAogICAg
ICAgY2FzZSBHTF9NQVhfRlJBR01FTlRfSU5QVVRfQ09NUE9ORU5UUzogICAgICAgICAgICAqcGFy
YW1zID0gbUNhcHMubWF4RnJhZ21lbnRJbnB1dENvbXBvbmVudHM7ICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICBjYXNlIEdMX01JTl9QUk9HUkFNX1RFWEVMX09GRlNFVDogICAgICAg
ICAgICAgICAgICpwYXJhbXMgPSBtQ2Fwcy5taW5Qcm9ncmFtVGV4ZWxPZmZzZXQ7ICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgIGNhc2UgR0xfTUFYX1BST0dSQU1fVEVYRUxf
T0ZGU0VUOiAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1heFByb2dyYW1UZXhlbE9m
ZnNldDsgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9NQUpP
Ul9WRVJTSU9OOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcGFyYW1zID0gbUNsaWVudFZl
cnNpb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEdMX01JTk9SX1ZFUlNJT046ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwYXJh
bXMgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFKT1JfVkVSU0lPTjoKKyAgICAgICAgICAqcGFyYW1z
ID0gbUNsaWVudE1ham9yVmVyc2lvbjsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xf
TUlOT1JfVkVSU0lPTjoKKyAgICAgICAgICAqcGFyYW1zID0gbUNsaWVudE1pbm9yVmVyc2lvbjsK
KyAgICAgICAgICBicmVhazsKICAgICAgIGNhc2UgR0xfTUFYX0VMRU1FTlRTX0lORElDRVM6ICAg
ICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1heEVsZW1lbnRzSW5kaWNlczsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBHTF9NQVhfRUxFTUVO
VFNfVkVSVElDRVM6ICAgICAgICAgICAgICAgICAgICAqcGFyYW1zID0gbUNhcHMubWF4RWxlbWVu
dHNWZXJ0aWNlczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNl
IEdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfSU5URVJMRUFWRURfQ09NUE9ORU5UUzogKnBhcmFt
cyA9IG1DYXBzLm1heFRyYW5zZm9ybUZlZWRiYWNrSW50ZXJsZWF2ZWRDb21wb25lbnRzOyBicmVh
azsKQEAgLTEwOTcsMTIgKzEzNTYsMTM0IEBAIHZvaWQgQ29udGV4dDo6Z2V0SW50ZWdlcnYoR0xl
bnVtIHBuYW1lLCAKIAogICAgICAgLy8gR0xfRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5CiAgICAg
ICBjYXNlIEdMX0dQVV9ESVNKT0lOVF9FWFQ6Ci0gICAgICAgICAgKnBhcmFtcyA9IG1SZW5kZXJl
ci0+Z2V0R1BVRGlzam9pbnQoKTsKKyAgICAgICAgICAqcGFyYW1zID0gbUltcGxlbWVudGF0aW9u
LT5nZXRHUFVEaXNqb2ludCgpOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhf
RlJBTUVCVUZGRVJfV0lEVEg6CisgICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1heEZyYW1lYnVm
ZmVyV2lkdGg7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX01BWF9GUkFNRUJVRkZF
Ul9IRUlHSFQ6CisgICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1heEZyYW1lYnVmZmVySGVpZ2h0
OworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhfRlJBTUVCVUZGRVJfU0FNUExF
UzoKKyAgICAgICAgICAqcGFyYW1zID0gbUNhcHMubWF4RnJhbWVidWZmZXJTYW1wbGVzOworICAg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhfU0FNUExFX01BU0tfV09SRFM6CisgICAg
ICAgICAgKnBhcmFtcyA9IG1DYXBzLm1heFNhbXBsZU1hc2tXb3JkczsKKyAgICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgR0xfTUFYX0NPTE9SX1RFWFRVUkVfU0FNUExFUzoKKyAgICAgICAgICAq
cGFyYW1zID0gbUNhcHMubWF4Q29sb3JUZXh0dXJlU2FtcGxlczsKKyAgICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgR0xfTUFYX0RFUFRIX1RFWFRVUkVfU0FNUExFUzoKKyAgICAgICAgICAqcGFy
YW1zID0gbUNhcHMubWF4RGVwdGhUZXh0dXJlU2FtcGxlczsKKyAgICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgR0xfTUFYX0lOVEVHRVJfU0FNUExFUzoKKyAgICAgICAgICAqcGFyYW1zID0gbUNh
cHMubWF4SW50ZWdlclNhbXBsZXM7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX01B
WF9WRVJURVhfQVRUUklCX1JFTEFUSVZFX09GRlNFVDoKKyAgICAgICAgICAqcGFyYW1zID0gbUNh
cHMubWF4VmVydGV4QXR0cmliUmVsYXRpdmVPZmZzZXQ7CisgICAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIEdMX01BWF9WRVJURVhfQVRUUklCX0JJTkRJTkdTOgorICAgICAgICAgICpwYXJhbXMg
PSBtQ2Fwcy5tYXhWZXJ0ZXhBdHRyaWJCaW5kaW5nczsKKyAgICAgICAgICBicmVhazsKKyAgICAg
IGNhc2UgR0xfTUFYX1ZFUlRFWF9BVFRSSUJfU1RSSURFOgorICAgICAgICAgICpwYXJhbXMgPSBt
Q2Fwcy5tYXhWZXJ0ZXhBdHRyaWJTdHJpZGU7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IEdMX01BWF9WRVJURVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSUzoKKyAgICAgICAgICAqcGFyYW1z
ID0gbUNhcHMubWF4VmVydGV4QXRvbWljQ291bnRlckJ1ZmZlcnM7CisgICAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIEdMX01BWF9WRVJURVhfQVRPTUlDX0NPVU5URVJTOgorICAgICAgICAgICpw
YXJhbXMgPSBtQ2Fwcy5tYXhWZXJ0ZXhBdG9taWNDb3VudGVyczsKKyAgICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgR0xfTUFYX1ZFUlRFWF9JTUFHRV9VTklGT1JNUzoKKyAgICAgICAgICAqcGFy
YW1zID0gbUNhcHMubWF4VmVydGV4SW1hZ2VVbmlmb3JtczsKKyAgICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgR0xfTUFYX1ZFUlRFWF9TSEFERVJfU1RPUkFHRV9CTE9DS1M6CisgICAgICAgICAg
KnBhcmFtcyA9IG1DYXBzLm1heFZlcnRleFNoYWRlclN0b3JhZ2VCbG9ja3M7CisgICAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIEdMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJT
OgorICAgICAgICAgICpwYXJhbXMgPSBtQ2Fwcy5tYXhGcmFnbWVudEF0b21pY0NvdW50ZXJCdWZm
ZXJzOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhfRlJBR01FTlRfQVRPTUlD
X0NPVU5URVJTOgorICAgICAgICAgICpwYXJhbXMgPSBtQ2Fwcy5tYXhGcmFnbWVudEF0b21pY0Nv
dW50ZXJzOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhfRlJBR01FTlRfSU1B
R0VfVU5JRk9STVM6CisgICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1heEZyYWdtZW50SW1hZ2VV
bmlmb3JtczsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFYX0ZSQUdNRU5UX1NI
QURFUl9TVE9SQUdFX0JMT0NLUzoKKyAgICAgICAgICAqcGFyYW1zID0gbUNhcHMubWF4RnJhZ21l
bnRTaGFkZXJTdG9yYWdlQmxvY2tzOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9N
SU5fUFJPR1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQ6CisgICAgICAgICAgKnBhcmFtcyA9IG1D
YXBzLm1pblByb2dyYW1UZXh0dXJlR2F0aGVyT2Zmc2V0OworICAgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSBHTF9NQVhfUFJPR1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQ6CisgICAgICAgICAg
KnBhcmFtcyA9IG1DYXBzLm1heFByb2dyYW1UZXh0dXJlR2F0aGVyT2Zmc2V0OworICAgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX0lOVk9DQVRJT05T
OgorICAgICAgICAgICpwYXJhbXMgPSBtQ2Fwcy5tYXhDb21wdXRlV29ya0dyb3VwSW52b2NhdGlv
bnM7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX01BWF9DT01QVVRFX1VOSUZPUk1f
QkxPQ0tTOgorICAgICAgICAgICpwYXJhbXMgPSBtQ2Fwcy5tYXhDb21wdXRlVW5pZm9ybUJsb2Nr
czsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFYX0NPTVBVVEVfVEVYVFVSRV9J
TUFHRV9VTklUUzoKKyAgICAgICAgICAqcGFyYW1zID0gbUNhcHMubWF4Q29tcHV0ZVRleHR1cmVJ
bWFnZVVuaXRzOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhfQ09NUFVURV9T
SEFSRURfTUVNT1JZX1NJWkU6CisgICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1heENvbXB1dGVT
aGFyZWRNZW1vcnlTaXplOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhfQ09N
UFVURV9VTklGT1JNX0NPTVBPTkVOVFM6CisgICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1heENv
bXB1dGVVbmlmb3JtQ29tcG9uZW50czsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xf
TUFYX0NPTVBVVEVfQVRPTUlDX0NPVU5URVJfQlVGRkVSUzoKKyAgICAgICAgICAqcGFyYW1zID0g
bUNhcHMubWF4Q29tcHV0ZUF0b21pY0NvdW50ZXJCdWZmZXJzOworICAgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSBHTF9NQVhfQ09NUFVURV9BVE9NSUNfQ09VTlRFUlM6CisgICAgICAgICAgKnBh
cmFtcyA9IG1DYXBzLm1heENvbXB1dGVBdG9taWNDb3VudGVyczsKKyAgICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgR0xfTUFYX0NPTVBVVEVfSU1BR0VfVU5JRk9STVM6CisgICAgICAgICAgKnBh
cmFtcyA9IG1DYXBzLm1heENvbXB1dGVJbWFnZVVuaWZvcm1zOworICAgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSBHTF9NQVhfQ09NQklORURfQ09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFM6Cisg
ICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1heENvbWJpbmVkQ29tcHV0ZVVuaWZvcm1Db21wb25l
bnRzOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhfQ09NUFVURV9TSEFERVJf
U1RPUkFHRV9CTE9DS1M6CisgICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1heENvbXB1dGVTaGFk
ZXJTdG9yYWdlQmxvY2tzOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhfQ09N
QklORURfU0hBREVSX09VVFBVVF9SRVNPVVJDRVM6CisgICAgICAgICAgKnBhcmFtcyA9IG1DYXBz
Lm1heENvbWJpbmVkU2hhZGVyT3V0cHV0UmVzb3VyY2VzOworICAgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSBHTF9NQVhfVU5JRk9STV9MT0NBVElPTlM6CisgICAgICAgICAgKnBhcmFtcyA9IG1D
YXBzLm1heFVuaWZvcm1Mb2NhdGlvbnM7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdM
X01BWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfQklORElOR1M6CisgICAgICAgICAgKnBhcmFtcyA9
IG1DYXBzLm1heEF0b21pY0NvdW50ZXJCdWZmZXJCaW5kaW5nczsKKyAgICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgR0xfTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TSVpFOgorICAgICAgICAg
ICpwYXJhbXMgPSBtQ2Fwcy5tYXhBdG9taWNDb3VudGVyQnVmZmVyU2l6ZTsKKyAgICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgR0xfTUFYX0NPTUJJTkVEX0FUT01JQ19DT1VOVEVSX0JVRkZFUlM6
CisgICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1heENvbWJpbmVkQXRvbWljQ291bnRlckJ1ZmZl
cnM7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX01BWF9DT01CSU5FRF9BVE9NSUNf
Q09VTlRFUlM6CisgICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1heENvbWJpbmVkQXRvbWljQ291
bnRlcnM7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX01BWF9JTUFHRV9VTklUUzoK
KyAgICAgICAgICAqcGFyYW1zID0gbUNhcHMubWF4SW1hZ2VVbml0czsKKyAgICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgR0xfTUFYX0NPTUJJTkVEX0lNQUdFX1VOSUZPUk1TOgorICAgICAgICAg
ICpwYXJhbXMgPSBtQ2Fwcy5tYXhDb21iaW5lZEltYWdlVW5pZm9ybXM7CisgICAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIEdMX01BWF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfQklORElOR1M6Cisg
ICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1heFNoYWRlclN0b3JhZ2VCdWZmZXJCaW5kaW5nczsK
KyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFYX0NPTUJJTkVEX1NIQURFUl9TVE9S
QUdFX0JMT0NLUzoKKyAgICAgICAgICAqcGFyYW1zID0gbUNhcHMubWF4Q29tYmluZWRTaGFkZXJT
dG9yYWdlQmxvY2tzOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TSEFERVJfU1RP
UkFHRV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVDoKKyAgICAgICAgICAqcGFyYW1zID0gbUNhcHMu
c2hhZGVyU3RvcmFnZUJ1ZmZlck9mZnNldEFsaWdubWVudDsKICAgICAgICAgICBicmVhazsKLQog
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgbVN0YXRlLmdldEludGVnZXJ2KGdldERhdGEoKSwgcG5h
bWUsIHBhcmFtcyk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICAgIG1HTFN0YXRlLmdldEludGVn
ZXJ2KG1TdGF0ZSwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgYnJlYWs7CiAgICAgfQogfQog
CkBAIC0xMTMwLDcgKzE1MTEsMTEgQEAgdm9pZCBDb250ZXh0OjpnZXRJbnRlZ2VyNjR2KEdMZW51
bSBwbmFtZQogCiAgICAgICAvLyBHTF9FWFRfZGlzam9pbnRfdGltZXJfcXVlcnkKICAgICAgIGNh
c2UgR0xfVElNRVNUQU1QX0VYVDoKLSAgICAgICAgICAqcGFyYW1zID0gbVJlbmRlcmVyLT5nZXRU
aW1lc3RhbXAoKTsKKyAgICAgICAgICAqcGFyYW1zID0gbUltcGxlbWVudGF0aW9uLT5nZXRUaW1l
c3RhbXAoKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBHTF9NQVhfU0hBREVSX1NU
T1JBR0VfQkxPQ0tfU0laRToKKyAgICAgICAgICAqcGFyYW1zID0gbUNhcHMubWF4U2hhZGVyU3Rv
cmFnZUJsb2NrU2l6ZTsKICAgICAgICAgICBicmVhazsKICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7CkBAIC0xMTQwLDQzNSArMTUyNSwxMDAgQEAgdm9pZCBDb250ZXh0Ojpn
ZXRJbnRlZ2VyNjR2KEdMZW51bSBwbmFtZQogCiB2b2lkIENvbnRleHQ6OmdldFBvaW50ZXJ2KEdM
ZW51bSBwbmFtZSwgdm9pZCAqKnBhcmFtcykgY29uc3QKIHsKLSAgICBtU3RhdGUuZ2V0UG9pbnRl
cnYocG5hbWUsIHBhcmFtcyk7CisgICAgbUdMU3RhdGUuZ2V0UG9pbnRlcnYocG5hbWUsIHBhcmFt
cyk7CiB9CiAKLWJvb2wgQ29udGV4dDo6Z2V0SW5kZXhlZEludGVnZXJ2KEdMZW51bSB0YXJnZXQs
IEdMdWludCBpbmRleCwgR0xpbnQgKmRhdGEpCit2b2lkIENvbnRleHQ6OmdldEludGVnZXJpX3Yo
R0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGludCAqZGF0YSkKIHsKICAgICAvLyBRdWVy
aWVzIGFib3V0IGNvbnRleHQgY2FwYWJpbGl0aWVzIGFuZCBtYXhpbXVtcyBhcmUgYW5zd2VyZWQg
YnkgQ29udGV4dC4KICAgICAvLyBRdWVyaWVzIGFib3V0IGN1cnJlbnQgR0wgc3RhdGUgdmFsdWVz
IGFyZSBhbnN3ZXJlZCBieSBTdGF0ZS4KLSAgICAvLyBJbmRleGVkIGludGVnZXIgcXVlcmllcyBh
bGwgcmVmZXIgdG8gY3VycmVudCBzdGF0ZSwgc28gdGhpcyBmdW5jdGlvbiBpcyBhCi0gICAgLy8g
bWVyZSBwYXNzdGhyb3VnaC4KLSAgICByZXR1cm4gbVN0YXRlLmdldEluZGV4ZWRJbnRlZ2Vydih0
YXJnZXQsIGluZGV4LCBkYXRhKTsKKworICAgIEdMZW51bSBuYXRpdmVUeXBlOworICAgIHVuc2ln
bmVkIGludCBudW1QYXJhbXM7CisgICAgYm9vbCBxdWVyeVN0YXR1cyA9IGdldEluZGV4ZWRRdWVy
eVBhcmFtZXRlckluZm8odGFyZ2V0LCAmbmF0aXZlVHlwZSwgJm51bVBhcmFtcyk7CisgICAgVU5V
U0VEX0FTU0VSVElPTl9WQVJJQUJMRShxdWVyeVN0YXR1cyk7CisgICAgQVNTRVJUKHF1ZXJ5U3Rh
dHVzKTsKKworICAgIGlmIChuYXRpdmVUeXBlID09IEdMX0lOVCkKKyAgICB7CisgICAgICAgIHN3
aXRjaCAodGFyZ2V0KQorICAgICAgICB7CisgICAgICAgICAgICBjYXNlIEdMX01BWF9DT01QVVRF
X1dPUktfR1JPVVBfQ09VTlQ6CisgICAgICAgICAgICAgICAgQVNTRVJUKGluZGV4IDwgM3UpOwor
ICAgICAgICAgICAgICAgICpkYXRhID0gbUNhcHMubWF4Q29tcHV0ZVdvcmtHcm91cENvdW50W2lu
ZGV4XTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgR0xfTUFYX0NP
TVBVVEVfV09SS19HUk9VUF9TSVpFOgorICAgICAgICAgICAgICAgIEFTU0VSVChpbmRleCA8IDN1
KTsKKyAgICAgICAgICAgICAgICAqZGF0YSA9IG1DYXBzLm1heENvbXB1dGVXb3JrR3JvdXBTaXpl
W2luZGV4XTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgbUdMU3RhdGUuZ2V0SW50ZWdlcmlfdih0YXJnZXQsIGluZGV4LCBkYXRh
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBDYXN0SW5kZXhl
ZFN0YXRlVmFsdWVzKHRoaXMsIG5hdGl2ZVR5cGUsIHRhcmdldCwgaW5kZXgsIG51bVBhcmFtcywg
ZGF0YSk7CisgICAgfQogfQogCi1ib29sIENvbnRleHQ6OmdldEluZGV4ZWRJbnRlZ2VyNjR2KEdM
ZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xpbnQ2NCAqZGF0YSkKK3ZvaWQgQ29udGV4dDo6
Z2V0SW50ZWdlcjY0aV92KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xpbnQ2NCAqZGF0
YSkKIHsKICAgICAvLyBRdWVyaWVzIGFib3V0IGNvbnRleHQgY2FwYWJpbGl0aWVzIGFuZCBtYXhp
bXVtcyBhcmUgYW5zd2VyZWQgYnkgQ29udGV4dC4KICAgICAvLyBRdWVyaWVzIGFib3V0IGN1cnJl
bnQgR0wgc3RhdGUgdmFsdWVzIGFyZSBhbnN3ZXJlZCBieSBTdGF0ZS4KLSAgICAvLyBJbmRleGVk
IGludGVnZXIgcXVlcmllcyBhbGwgcmVmZXIgdG8gY3VycmVudCBzdGF0ZSwgc28gdGhpcyBmdW5j
dGlvbiBpcyBhCi0gICAgLy8gbWVyZSBwYXNzdGhyb3VnaC4KLSAgICByZXR1cm4gbVN0YXRlLmdl
dEluZGV4ZWRJbnRlZ2VyNjR2KHRhcmdldCwgaW5kZXgsIGRhdGEpOworCisgICAgR0xlbnVtIG5h
dGl2ZVR5cGU7CisgICAgdW5zaWduZWQgaW50IG51bVBhcmFtczsKKyAgICBib29sIHF1ZXJ5U3Rh
dHVzID0gZ2V0SW5kZXhlZFF1ZXJ5UGFyYW1ldGVySW5mbyh0YXJnZXQsICZuYXRpdmVUeXBlLCAm
bnVtUGFyYW1zKTsKKyAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKHF1ZXJ5U3RhdHVzKTsK
KyAgICBBU1NFUlQocXVlcnlTdGF0dXMpOworCisgICAgaWYgKG5hdGl2ZVR5cGUgPT0gR0xfSU5U
XzY0X0FOR0xFWCkKKyAgICB7CisgICAgICAgIG1HTFN0YXRlLmdldEludGVnZXI2NGlfdih0YXJn
ZXQsIGluZGV4LCBkYXRhKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgQ2FzdElu
ZGV4ZWRTdGF0ZVZhbHVlcyh0aGlzLCBuYXRpdmVUeXBlLCB0YXJnZXQsIGluZGV4LCBudW1QYXJh
bXMsIGRhdGEpOworICAgIH0KIH0KIAotYm9vbCBDb250ZXh0OjpnZXRRdWVyeVBhcmFtZXRlcklu
Zm8oR0xlbnVtIHBuYW1lLCBHTGVudW0gKnR5cGUsIHVuc2lnbmVkIGludCAqbnVtUGFyYW1zKQor
dm9pZCBDb250ZXh0OjpnZXRCb29sZWFuaV92KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwg
R0xib29sZWFuICpkYXRhKQogewotICAgIGlmIChwbmFtZSA+PSBHTF9EUkFXX0JVRkZFUjBfRVhU
ICYmIHBuYW1lIDw9IEdMX0RSQVdfQlVGRkVSMTVfRVhUKQorICAgIC8vIFF1ZXJpZXMgYWJvdXQg
Y29udGV4dCBjYXBhYmlsaXRpZXMgYW5kIG1heGltdW1zIGFyZSBhbnN3ZXJlZCBieSBDb250ZXh0
LgorICAgIC8vIFF1ZXJpZXMgYWJvdXQgY3VycmVudCBHTCBzdGF0ZSB2YWx1ZXMgYXJlIGFuc3dl
cmVkIGJ5IFN0YXRlLgorCisgICAgR0xlbnVtIG5hdGl2ZVR5cGU7CisgICAgdW5zaWduZWQgaW50
IG51bVBhcmFtczsKKyAgICBib29sIHF1ZXJ5U3RhdHVzID0gZ2V0SW5kZXhlZFF1ZXJ5UGFyYW1l
dGVySW5mbyh0YXJnZXQsICZuYXRpdmVUeXBlLCAmbnVtUGFyYW1zKTsKKyAgICBVTlVTRURfQVNT
RVJUSU9OX1ZBUklBQkxFKHF1ZXJ5U3RhdHVzKTsKKyAgICBBU1NFUlQocXVlcnlTdGF0dXMpOwor
CisgICAgaWYgKG5hdGl2ZVR5cGUgPT0gR0xfQk9PTCkKICAgICB7Ci0gICAgICAgICp0eXBlID0g
R0xfSU5UOwotICAgICAgICAqbnVtUGFyYW1zID0gMTsKLSAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIG1HTFN0YXRlLmdldEJvb2xlYW5pX3YodGFyZ2V0LCBpbmRleCwgZGF0YSk7CiAgICAg
fQotCi0gICAgLy8gUGxlYXNlIG5vdGU6IHRoZSBxdWVyeSB0eXBlIHJldHVybmVkIGZvciBERVBU
SF9DTEVBUl9WQUxVRSBpbiB0aGlzIGltcGxlbWVudGF0aW9uCi0gICAgLy8gaXMgRkxPQVQgcmF0
aGVyIHRoYW4gSU5ULCBhcyB3b3VsZCBiZSBzdWdnZXN0ZWQgYnkgdGhlIEdMIEVTIDIuMCBzcGVj
LiBUaGlzIGlzIGR1ZQotICAgIC8vIHRvIHRoZSBmYWN0IHRoYXQgaXQgaXMgc3RvcmVkIGludGVy
bmFsbHkgYXMgYSBmbG9hdCwgYW5kIHNvIHdvdWxkIHJlcXVpcmUgY29udmVyc2lvbgotICAgIC8v
IGlmIHJldHVybmVkIGZyb20gQ29udGV4dDo6Z2V0SW50ZWdlcnYuIFNpbmNlIHRoaXMgY29udmVy
c2lvbiBpcyBhbHJlYWR5IGltcGxlbWVudGVkCi0gICAgLy8gaW4gdGhlIGNhc2UgdGhhdCBvbmUg
Y2FsbHMgZ2xHZXRJbnRlZ2VydiB0byByZXRyaWV2ZSBhIGZsb2F0LXR5cGVkIHN0YXRlIHZhcmlh
YmxlLCB3ZQotICAgIC8vIHBsYWNlIERFUFRIX0NMRUFSX1ZBTFVFIHdpdGggdGhlIGZsb2F0cy4g
VGhpcyBzaG91bGQgbWFrZSBubyBkaWZmZXJlbmNlIHRvIHRoZSBjYWxsaW5nCi0gICAgLy8gYXBw
bGljYXRpb24uCi0gICAgc3dpdGNoIChwbmFtZSkKKyAgICBlbHNlCiAgICAgewotICAgICAgY2Fz
ZSBHTF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUzoKLSAgICAgICAgewotICAgICAgICAgICAg
KnR5cGUgPSBHTF9JTlQ7Ci0gICAgICAgICAgICAqbnVtUGFyYW1zID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQgaW50PihtQ2Fwcy5jb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMuc2l6ZSgpKTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGNhc2UgR0xfUFJPR1JBTV9CSU5BUllf
Rk9STUFUU19PRVM6Ci0gICAgICAgIHsKLSAgICAgICAgICAgICp0eXBlID0gR0xfSU5UOwotICAg
ICAgICAgICAgKm51bVBhcmFtcyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4obUNhcHMucHJv
Z3JhbUJpbmFyeUZvcm1hdHMuc2l6ZSgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgIGNhc2UgR0xfU0hBREVSX0JJTkFSWV9GT1JNQVRTOgotICAgICAgICB7Ci0gICAg
ICAgICAgICAqdHlwZSA9IEdMX0lOVDsKLSAgICAgICAgICAgICpudW1QYXJhbXMgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBpbnQ+KG1DYXBzLnNoYWRlckJpbmFyeUZvcm1hdHMuc2l6ZSgpKTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgY2FzZSBHTF9NQVhfVkVSVEVY
X0FUVFJJQlM6Ci0gICAgICBjYXNlIEdMX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTOgotICAg
ICAgY2FzZSBHTF9NQVhfVkFSWUlOR19WRUNUT1JTOgotICAgICAgY2FzZSBHTF9NQVhfQ09NQklO
RURfVEVYVFVSRV9JTUFHRV9VTklUUzoKLSAgICAgIGNhc2UgR0xfTUFYX1ZFUlRFWF9URVhUVVJF
X0lNQUdFX1VOSVRTOgotICAgICAgY2FzZSBHTF9NQVhfVEVYVFVSRV9JTUFHRV9VTklUUzoKLSAg
ICAgIGNhc2UgR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUzoKLSAgICAgIGNhc2UgR0xf
TUFYX1JFTkRFUkJVRkZFUl9TSVpFOgotICAgICAgY2FzZSBHTF9NQVhfQ09MT1JfQVRUQUNITUVO
VFNfRVhUOgotICAgICAgY2FzZSBHTF9NQVhfRFJBV19CVUZGRVJTX0VYVDoKLSAgICAgIGNhc2Ug
R0xfTlVNX1NIQURFUl9CSU5BUllfRk9STUFUUzoKLSAgICAgIGNhc2UgR0xfTlVNX0NPTVBSRVNT
RURfVEVYVFVSRV9GT1JNQVRTOgotICAgICAgY2FzZSBHTF9BUlJBWV9CVUZGRVJfQklORElORzoK
LSAgICAgIC8vY2FzZSBHTF9GUkFNRUJVRkZFUl9CSU5ESU5HOiAvLyBlcXVpdmFsZW50IHRvIERS
QVdfRlJBTUVCVUZGRVJfQklORElOR19BTkdMRQotICAgICAgY2FzZSBHTF9EUkFXX0ZSQU1FQlVG
RkVSX0JJTkRJTkdfQU5HTEU6Ci0gICAgICBjYXNlIEdMX1JFQURfRlJBTUVCVUZGRVJfQklORElO
R19BTkdMRToKLSAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0JJTkRJTkc6Ci0gICAgICBjYXNl
IEdMX0NVUlJFTlRfUFJPR1JBTToKLSAgICAgIGNhc2UgR0xfUEFDS19BTElHTk1FTlQ6Ci0gICAg
ICBjYXNlIEdMX1BBQ0tfUkVWRVJTRV9ST1dfT1JERVJfQU5HTEU6Ci0gICAgICBjYXNlIEdMX1VO
UEFDS19BTElHTk1FTlQ6Ci0gICAgICBjYXNlIEdMX0dFTkVSQVRFX01JUE1BUF9ISU5UOgotICAg
ICAgY2FzZSBHTF9GUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUzoKLSAgICAgIGNh
c2UgR0xfUkVEX0JJVFM6Ci0gICAgICBjYXNlIEdMX0dSRUVOX0JJVFM6Ci0gICAgICBjYXNlIEdM
X0JMVUVfQklUUzoKLSAgICAgIGNhc2UgR0xfQUxQSEFfQklUUzoKLSAgICAgIGNhc2UgR0xfREVQ
VEhfQklUUzoKLSAgICAgIGNhc2UgR0xfU1RFTkNJTF9CSVRTOgotICAgICAgY2FzZSBHTF9FTEVN
RU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HOgotICAgICAgY2FzZSBHTF9DVUxMX0ZBQ0VfTU9ERToK
LSAgICAgIGNhc2UgR0xfRlJPTlRfRkFDRToKLSAgICAgIGNhc2UgR0xfQUNUSVZFX1RFWFRVUkU6
Ci0gICAgICBjYXNlIEdMX1NURU5DSUxfRlVOQzoKLSAgICAgIGNhc2UgR0xfU1RFTkNJTF9WQUxV
RV9NQVNLOgotICAgICAgY2FzZSBHTF9TVEVOQ0lMX1JFRjoKLSAgICAgIGNhc2UgR0xfU1RFTkNJ
TF9GQUlMOgotICAgICAgY2FzZSBHTF9TVEVOQ0lMX1BBU1NfREVQVEhfRkFJTDoKLSAgICAgIGNh
c2UgR0xfU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1M6Ci0gICAgICBjYXNlIEdMX1NURU5DSUxfQkFD
S19GVU5DOgotICAgICAgY2FzZSBHTF9TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSzoKLSAgICAgIGNh
c2UgR0xfU1RFTkNJTF9CQUNLX1JFRjoKLSAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX0ZBSUw6
Ci0gICAgICBjYXNlIEdMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUw6Ci0gICAgICBjYXNl
IEdMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1M6Ci0gICAgICBjYXNlIEdMX0RFUFRIX0ZV
TkM6Ci0gICAgICBjYXNlIEdMX0JMRU5EX1NSQ19SR0I6Ci0gICAgICBjYXNlIEdMX0JMRU5EX1NS
Q19BTFBIQToKLSAgICAgIGNhc2UgR0xfQkxFTkRfRFNUX1JHQjoKLSAgICAgIGNhc2UgR0xfQkxF
TkRfRFNUX0FMUEhBOgotICAgICAgY2FzZSBHTF9CTEVORF9FUVVBVElPTl9SR0I6Ci0gICAgICBj
YXNlIEdMX0JMRU5EX0VRVUFUSU9OX0FMUEhBOgotICAgICAgY2FzZSBHTF9TVEVOQ0lMX1dSSVRF
TUFTSzoKLSAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX1dSSVRFTUFTSzoKLSAgICAgIGNhc2Ug
R0xfU1RFTkNJTF9DTEVBUl9WQUxVRToKLSAgICAgIGNhc2UgR0xfU1VCUElYRUxfQklUUzoKLSAg
ICAgIGNhc2UgR0xfTUFYX1RFWFRVUkVfU0laRToKLSAgICAgIGNhc2UgR0xfTUFYX0NVQkVfTUFQ
X1RFWFRVUkVfU0laRToKLSAgICAgIGNhc2UgR0xfU0FNUExFX0JVRkZFUlM6Ci0gICAgICBjYXNl
IEdMX1NBTVBMRVM6Ci0gICAgICBjYXNlIEdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQ
RToKLSAgICAgIGNhc2UgR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JNQVQ6Ci0gICAg
ICBjYXNlIEdMX1RFWFRVUkVfQklORElOR18yRDoKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9CSU5E
SU5HX0NVQkVfTUFQOgotICAgICAgY2FzZSBHTF9SRVNFVF9OT1RJRklDQVRJT05fU1RSQVRFR1lf
RVhUOgotICAgICAgY2FzZSBHTF9OVU1fUFJPR1JBTV9CSU5BUllfRk9STUFUU19PRVM6Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgICp0eXBlID0gR0xfSU5UOwotICAgICAgICAgICAgKm51bVBhcmFt
cyA9IDE7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBjYXNlIEdMX01B
WF9TQU1QTEVTX0FOR0xFOgotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobUV4dGVuc2lvbnMu
ZnJhbWVidWZmZXJNdWx0aXNhbXBsZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAq
dHlwZSA9IEdMX0lOVDsKLSAgICAgICAgICAgICAgICAqbnVtUGFyYW1zID0gMTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICBjYXNlIEdMX01BWF9WSUVXUE9SVF9ESU1TOgotICAgICAgICB7Ci0gICAgICAg
ICAgICAqdHlwZSA9IEdMX0lOVDsKLSAgICAgICAgICAgICpudW1QYXJhbXMgPSAyOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgY2FzZSBHTF9WSUVXUE9SVDoKLSAgICAg
IGNhc2UgR0xfU0NJU1NPUl9CT1g6Ci0gICAgICAgIHsKLSAgICAgICAgICAgICp0eXBlID0gR0xf
SU5UOwotICAgICAgICAgICAgKm51bVBhcmFtcyA9IDQ7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICBjYXNlIEdMX1NIQURFUl9DT01QSUxFUjoKLSAgICAgIGNhc2UgR0xf
U0FNUExFX0NPVkVSQUdFX0lOVkVSVDoKLSAgICAgIGNhc2UgR0xfREVQVEhfV1JJVEVNQVNLOgot
ICAgICAgY2FzZSBHTF9DVUxMX0ZBQ0U6ICAgICAgICAgICAgICAgIC8vIENVTExfRkFDRSB0aHJv
dWdoIERJVEhFUiBhcmUgbmF0dXJhbCB0byBJc0VuYWJsZWQsCi0gICAgICBjYXNlIEdMX1BPTFlH
T05fT0ZGU0VUX0ZJTEw6ICAgICAgLy8gYnV0IGNhbiBiZSByZXRyaWV2ZWQgdGhyb3VnaCB0aGUg
R2V0e1R5cGV9diBxdWVyaWVzLgotICAgICAgY2FzZSBHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJB
R0U6IC8vIEZvciB0aGlzIHB1cnBvc2UsIHRoZXkgYXJlIHRyZWF0ZWQgaGVyZSBhcyBib29sLW5h
dHVyYWwKLSAgICAgIGNhc2UgR0xfU0FNUExFX0NPVkVSQUdFOgotICAgICAgY2FzZSBHTF9TQ0lT
U09SX1RFU1Q6Ci0gICAgICBjYXNlIEdMX1NURU5DSUxfVEVTVDoKLSAgICAgIGNhc2UgR0xfREVQ
VEhfVEVTVDoKLSAgICAgIGNhc2UgR0xfQkxFTkQ6Ci0gICAgICBjYXNlIEdMX0RJVEhFUjoKLSAg
ICAgIGNhc2UgR0xfQ09OVEVYVF9ST0JVU1RfQUNDRVNTX0VYVDoKLSAgICAgICAgewotICAgICAg
ICAgICAgKnR5cGUgPSBHTF9CT09MOwotICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBjYXNlIEdMX0NPTE9SX1dSSVRFTUFT
SzoKLSAgICAgICAgewotICAgICAgICAgICAgKnR5cGUgPSBHTF9CT09MOwotICAgICAgICAgICAg
Km51bVBhcmFtcyA9IDQ7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBj
YXNlIEdMX1BPTFlHT05fT0ZGU0VUX0ZBQ1RPUjoKLSAgICAgIGNhc2UgR0xfUE9MWUdPTl9PRkZT
RVRfVU5JVFM6Ci0gICAgICBjYXNlIEdMX1NBTVBMRV9DT1ZFUkFHRV9WQUxVRToKLSAgICAgIGNh
c2UgR0xfREVQVEhfQ0xFQVJfVkFMVUU6Ci0gICAgICBjYXNlIEdMX0xJTkVfV0lEVEg6Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgICp0eXBlID0gR0xfRkxPQVQ7Ci0gICAgICAgICAgICAqbnVtUGFy
YW1zID0gMTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGNhc2UgR0xf
QUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFOgotICAgICAgY2FzZSBHTF9BTElBU0VEX1BPSU5UX1NJ
WkVfUkFOR0U6Ci0gICAgICBjYXNlIEdMX0RFUFRIX1JBTkdFOgotICAgICAgICB7Ci0gICAgICAg
ICAgICAqdHlwZSA9IEdMX0ZMT0FUOwotICAgICAgICAgICAgKm51bVBhcmFtcyA9IDI7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBjYXNlIEdMX0NPTE9SX0NMRUFSX1ZB
TFVFOgotICAgICAgY2FzZSBHTF9CTEVORF9DT0xPUjoKLSAgICAgICAgewotICAgICAgICAgICAg
KnR5cGUgPSBHTF9GTE9BVDsKLSAgICAgICAgICAgICpudW1QYXJhbXMgPSA0OwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgY2FzZSBHTF9NQVhfVEVYVFVSRV9NQVhfQU5J
U09UUk9QWV9FWFQ6Ci0gICAgICAgIGlmICghbUV4dGVuc2lvbnMubWF4VGV4dHVyZUFuaXNvdHJv
cHkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAg
ICAgICAqdHlwZSA9IEdMX0ZMT0FUOwotICAgICAgICAqbnVtUGFyYW1zID0gMTsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICBjYXNlIEdMX1RJTUVTVEFNUF9FWFQ6Ci0gICAgICAgICAgaWYg
KCFtRXh0ZW5zaW9ucy5kaXNqb2ludFRpbWVyUXVlcnkpCi0gICAgICAgICAgewotICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgfQotICAgICAgICAgICp0eXBlICAgICAgPSBH
TF9JTlRfNjRfQU5HTEVYOwotICAgICAgICAgICpudW1QYXJhbXMgPSAxOwotICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgY2FzZSBHTF9HUFVfRElTSk9JTlRfRVhUOgotICAgICAgICAgIGlm
ICghbUV4dGVuc2lvbnMuZGlzam9pbnRUaW1lclF1ZXJ5KQotICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIH0KLSAgICAgICAgICAqdHlwZSAgICAgID0g
R0xfSU5UOwotICAgICAgICAgICpudW1QYXJhbXMgPSAxOwotICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLQotICAgIGlmIChtRXh0ZW5zaW9ucy5kZWJ1ZykKLSAgICB7Ci0gICAgICAgIHN3
aXRjaCAocG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNhc2UgR0xfREVCVUdfTE9HR0VE
X01FU1NBR0VTOgotICAgICAgICAgICAgY2FzZSBHTF9ERUJVR19ORVhUX0xPR0dFRF9NRVNTQUdF
X0xFTkdUSDoKLSAgICAgICAgICAgIGNhc2UgR0xfREVCVUdfR1JPVVBfU1RBQ0tfREVQVEg6Ci0g
ICAgICAgICAgICBjYXNlIEdMX01BWF9ERUJVR19NRVNTQUdFX0xFTkdUSDoKLSAgICAgICAgICAg
IGNhc2UgR0xfTUFYX0RFQlVHX0xPR0dFRF9NRVNTQUdFUzoKLSAgICAgICAgICAgIGNhc2UgR0xf
TUFYX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIOgotICAgICAgICAgICAgY2FzZSBHTF9NQVhfTEFC
RUxfTEVOR1RIOgotICAgICAgICAgICAgICAgICp0eXBlICAgICAgPSBHTF9JTlQ7Ci0gICAgICAg
ICAgICAgICAgKm51bVBhcmFtcyA9IDE7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICAgICAgICAgIGNhc2UgR0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTOgotICAgICAgICAg
ICAgY2FzZSBHTF9ERUJVR19PVVRQVVQ6Ci0gICAgICAgICAgICAgICAgKnR5cGUgICAgICA9IEdM
X0JPT0w7Ci0gICAgICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIH0KKyAgICAgICAgQ2FzdEluZGV4ZWRTdGF0ZVZhbHVlcyh0
aGlzLCBuYXRpdmVUeXBlLCB0YXJnZXQsIGluZGV4LCBudW1QYXJhbXMsIGRhdGEpOwogICAgIH0K
LQotICAgIC8vIENoZWNrIGZvciBFUzMuMCsgcGFyYW1ldGVyIG5hbWVzIHdoaWNoIGFyZSBhbHNv
IGV4cG9zZWQgYXMgRVMyIGV4dGVuc2lvbnMKLSAgICBzd2l0Y2ggKHBuYW1lKQotICAgIHsKLSAg
ICAgICAgY2FzZSBHTF9QQUNLX1JPV19MRU5HVEg6Ci0gICAgICAgIGNhc2UgR0xfUEFDS19TS0lQ
X1JPV1M6Ci0gICAgICAgIGNhc2UgR0xfUEFDS19TS0lQX1BJWEVMUzoKLSAgICAgICAgICAgIGlm
ICgobUNsaWVudFZlcnNpb24gPCAzKSAmJiAhbUV4dGVuc2lvbnMucGFja1N1YmltYWdlKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICp0eXBlICAgICAgPSBHTF9JTlQ7Ci0gICAgICAgICAgICAqbnVtUGFyYW1z
ID0gMTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBjYXNlIEdMX1VOUEFDS19S
T1dfTEVOR1RIOgotICAgICAgICBjYXNlIEdMX1VOUEFDS19TS0lQX1JPV1M6Ci0gICAgICAgIGNh
c2UgR0xfVU5QQUNLX1NLSVBfUElYRUxTOgotICAgICAgICAgICAgaWYgKChtQ2xpZW50VmVyc2lv
biA8IDMpICYmICFtRXh0ZW5zaW9ucy51bnBhY2tTdWJpbWFnZSkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAq
dHlwZSAgICAgID0gR0xfSU5UOwotICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7Ci0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgY2FzZSBHTF9WRVJURVhfQVJSQVlfQklORElORzoK
LSAgICAgICAgICAgIGlmICgobUNsaWVudFZlcnNpb24gPCAzKSAmJiAhbUV4dGVuc2lvbnMudmVy
dGV4QXJyYXlPYmplY3QpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgKnR5cGUgICAgICA9IEdMX0lOVDsKLSAg
ICAgICAgICAgICpudW1QYXJhbXMgPSAxOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgIGNhc2UgR0xfUElYRUxfUEFDS19CVUZGRVJfQklORElORzoKLSAgICAgICAgY2FzZSBHTF9Q
SVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkc6Ci0gICAgICAgICAgICBpZiAoKG1DbGllbnRWZXJz
aW9uIDwgMykgJiYgIW1FeHRlbnNpb25zLnBpeGVsQnVmZmVyT2JqZWN0KQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICp0eXBlICAgICAgPSBHTF9JTlQ7Ci0gICAgICAgICAgICAqbnVtUGFyYW1zID0gMTsKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGlmIChtQ2xpZW50VmVyc2lvbiA8
IDMpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gQ2hlY2sg
Zm9yIEVTMy4wKyBwYXJhbWV0ZXIgbmFtZXMKLSAgICBzd2l0Y2ggKHBuYW1lKQotICAgIHsKLSAg
ICAgIGNhc2UgR0xfTUFYX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkdTOgotICAgICAgY2FzZSBHTF9V
TklGT1JNX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UOgotICAgICAgY2FzZSBHTF9VTklGT1JNX0JV
RkZFUl9CSU5ESU5HOgotICAgICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQklORElORzoK
LSAgICAgIGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HOgotICAgICAg
Y2FzZSBHTF9DT1BZX1JFQURfQlVGRkVSX0JJTkRJTkc6Ci0gICAgICBjYXNlIEdMX0NPUFlfV1JJ
VEVfQlVGRkVSX0JJTkRJTkc6Ci0gICAgICBjYXNlIEdMX1NBTVBMRVJfQklORElORzoKLSAgICAg
IGNhc2UgR0xfUkVBRF9CVUZGRVI6Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQklORElOR18zRDoK
LSAgICAgIGNhc2UgR0xfVEVYVFVSRV9CSU5ESU5HXzJEX0FSUkFZOgotICAgICAgY2FzZSBHTF9N
QVhfM0RfVEVYVFVSRV9TSVpFOgotICAgICAgY2FzZSBHTF9NQVhfQVJSQVlfVEVYVFVSRV9MQVlF
UlM6Ci0gICAgICBjYXNlIEdMX01BWF9WRVJURVhfVU5JRk9STV9CTE9DS1M6Ci0gICAgICBjYXNl
IEdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0JMT0NLUzoKLSAgICAgIGNhc2UgR0xfTUFYX0NPTUJJ
TkVEX1VOSUZPUk1fQkxPQ0tTOgotICAgICAgY2FzZSBHTF9NQVhfVkVSVEVYX09VVFBVVF9DT01Q
T05FTlRTOgotICAgICAgY2FzZSBHTF9NQVhfRlJBR01FTlRfSU5QVVRfQ09NUE9ORU5UUzoKLSAg
ICAgIGNhc2UgR0xfTUFYX1ZBUllJTkdfQ09NUE9ORU5UUzoKLSAgICAgIGNhc2UgR0xfTUFYX1ZF
UlRFWF9VTklGT1JNX0NPTVBPTkVOVFM6Ci0gICAgICBjYXNlIEdMX01BWF9GUkFHTUVOVF9VTklG
T1JNX0NPTVBPTkVOVFM6Ci0gICAgICBjYXNlIEdMX01JTl9QUk9HUkFNX1RFWEVMX09GRlNFVDoK
LSAgICAgIGNhc2UgR0xfTUFYX1BST0dSQU1fVEVYRUxfT0ZGU0VUOgotICAgICAgY2FzZSBHTF9O
VU1fRVhURU5TSU9OUzoKLSAgICAgIGNhc2UgR0xfTUFKT1JfVkVSU0lPTjoKLSAgICAgIGNhc2Ug
R0xfTUlOT1JfVkVSU0lPTjoKLSAgICAgIGNhc2UgR0xfTUFYX0VMRU1FTlRTX0lORElDRVM6Ci0g
ICAgICBjYXNlIEdMX01BWF9FTEVNRU5UU19WRVJUSUNFUzoKLSAgICAgIGNhc2UgR0xfTUFYX1RS
QU5TRk9STV9GRUVEQkFDS19JTlRFUkxFQVZFRF9DT01QT05FTlRTOgotICAgICAgY2FzZSBHTF9N
QVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0FUVFJJQlM6Ci0gICAgICBjYXNlIEdMX01B
WF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQ09NUE9ORU5UUzoKLSAgICAgIGNhc2UgR0xf
VU5QQUNLX0lNQUdFX0hFSUdIVDoKLSAgICAgIGNhc2UgR0xfVU5QQUNLX1NLSVBfSU1BR0VTOgot
ICAgICAgICB7Ci0gICAgICAgICAgICAqdHlwZSA9IEdMX0lOVDsKLSAgICAgICAgICAgICpudW1Q
YXJhbXMgPSAxOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICBjYXNl
IEdMX01BWF9FTEVNRU5UX0lOREVYOgotICAgICAgY2FzZSBHTF9NQVhfVU5JRk9STV9CTE9DS19T
SVpFOgotICAgICAgY2FzZSBHTF9NQVhfQ09NQklORURfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5U
UzoKLSAgICAgIGNhc2UgR0xfTUFYX0NPTUJJTkVEX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5U
UzoKLSAgICAgIGNhc2UgR0xfTUFYX1NFUlZFUl9XQUlUX1RJTUVPVVQ6Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgICp0eXBlID0gR0xfSU5UXzY0X0FOR0xFWDsKLSAgICAgICAgICAgICpudW1QYXJh
bXMgPSAxOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICBjYXNlIEdM
X1RSQU5TRk9STV9GRUVEQkFDS19BQ1RJVkU6Ci0gICAgICBjYXNlIEdMX1RSQU5TRk9STV9GRUVE
QkFDS19QQVVTRUQ6Ci0gICAgICBjYXNlIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVY
OgotICAgICAgY2FzZSBHTF9SQVNURVJJWkVSX0RJU0NBUkQ6Ci0gICAgICAgIHsKLSAgICAgICAg
ICAgICp0eXBlID0gR0xfQk9PTDsKLSAgICAgICAgICAgICpudW1QYXJhbXMgPSAxOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICBjYXNlIEdMX01BWF9URVhUVVJFX0xP
RF9CSUFTOgotICAgICAgICB7Ci0gICAgICAgICAgICAqdHlwZSA9IEdMX0ZMT0FUOwotICAgICAg
ICAgICAgKm51bVBhcmFtcyA9IDE7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIENvbnRleHQ6OmdldEluZGV4ZWRR
dWVyeVBhcmFtZXRlckluZm8oR0xlbnVtIHRhcmdldCwgR0xlbnVtICp0eXBlLCB1bnNpZ25lZCBp
bnQgKm51bVBhcmFtcykKLXsKLSAgICBpZiAobUNsaWVudFZlcnNpb24gPCAzKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHN3aXRjaCAodGFyZ2V0KQotICAgIHsK
LSAgICAgIGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HOgotICAgICAg
Y2FzZSBHTF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HOgotICAgICAgICB7Ci0gICAgICAgICAgICAq
dHlwZSA9IEdMX0lOVDsKLSAgICAgICAgICAgICpudW1QYXJhbXMgPSAxOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVG
RkVSX1NUQVJUOgotICAgICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NJWkU6
Ci0gICAgICBjYXNlIEdMX1VOSUZPUk1fQlVGRkVSX1NUQVJUOgotICAgICAgY2FzZSBHTF9VTklG
T1JNX0JVRkZFUl9TSVpFOgotICAgICAgICB7Ci0gICAgICAgICAgICAqdHlwZSA9IEdMX0lOVF82
NF9BTkdMRVg7Ci0gICAgICAgICAgICAqbnVtUGFyYW1zID0gMTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHJldHVybiBmYWxzZTsKLX0KK30KIAogRXJyb3IgQ29udGV4dDo6ZHJhd0FycmF5cyhH
TGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpCiB7CiAgICAgc3luY1JlbmRl
cmVyU3RhdGUoKTsKLSAgICBFcnJvciBlcnJvciA9IG1SZW5kZXJlci0+ZHJhd0FycmF5cyhnZXRE
YXRhKCksIG1vZGUsIGZpcnN0LCBjb3VudCk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKG1JbXBsZW1l
bnRhdGlvbi0+ZHJhd0FycmF5cyhtb2RlLCBmaXJzdCwgY291bnQpKTsKKyAgICBNYXJrVHJhbnNm
b3JtRmVlZGJhY2tCdWZmZXJVc2FnZShtR0xTdGF0ZS5nZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJh
Y2soKSk7CiAKLSAgICBNYXJrVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJVc2FnZShtU3RhdGUuZ2V0
Q3VycmVudFRyYW5zZm9ybUZlZWRiYWNrKCkpOwotCi0gICAgcmV0dXJuIEVycm9yKEdMX05PX0VS
Uk9SKTsKKyAgICByZXR1cm4gTm9FcnJvcigpOwogfQogCiBFcnJvciBDb250ZXh0OjpkcmF3QXJy
YXlzSW5zdGFuY2VkKEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgR0xz
aXplaSBpbnN0YW5jZUNvdW50KQogewogICAgIHN5bmNSZW5kZXJlclN0YXRlKCk7Ci0gICAgRXJy
b3IgZXJyb3IgPSBtUmVuZGVyZXItPmRyYXdBcnJheXNJbnN0YW5jZWQoZ2V0RGF0YSgpLCBtb2Rl
LCBmaXJzdCwgY291bnQsIGluc3RhbmNlQ291bnQpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
Ci0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShtSW1w
bGVtZW50YXRpb24tPmRyYXdBcnJheXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBpbnN0
YW5jZUNvdW50KSk7CisgICAgTWFya1RyYW5zZm9ybUZlZWRiYWNrQnVmZmVyVXNhZ2UobUdMU3Rh
dGUuZ2V0Q3VycmVudFRyYW5zZm9ybUZlZWRiYWNrKCkpOwogCi0gICAgTWFya1RyYW5zZm9ybUZl
ZWRiYWNrQnVmZmVyVXNhZ2UobVN0YXRlLmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpKTsK
LQotICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIE5vRXJyb3IoKTsK
IH0KIAogRXJyb3IgQ29udGV4dDo6ZHJhd0VsZW1lbnRzKEdMZW51bSBtb2RlLApAQCAtMTU3OCw3
ICsxNjI4LDcgQEAgRXJyb3IgQ29udGV4dDo6ZHJhd0VsZW1lbnRzKEdMZW51bSBtb2RlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpCiB7
CiAgICAgc3luY1JlbmRlcmVyU3RhdGUoKTsKLSAgICByZXR1cm4gbVJlbmRlcmVyLT5kcmF3RWxl
bWVudHMoZ2V0RGF0YSgpLCBtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgaW5kZXhSYW5nZSk7
CisgICAgcmV0dXJuIG1JbXBsZW1lbnRhdGlvbi0+ZHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50LCB0
eXBlLCBpbmRpY2VzLCBpbmRleFJhbmdlKTsKIH0KIAogRXJyb3IgQ29udGV4dDo6ZHJhd0VsZW1l
bnRzSW5zdGFuY2VkKEdMZW51bSBtb2RlLApAQCAtMTU4OSw4ICsxNjM5LDggQEAgRXJyb3IgQ29u
dGV4dDo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdMZQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpCiB7CiAgICAgc3luY1Jl
bmRlcmVyU3RhdGUoKTsKLSAgICByZXR1cm4gbVJlbmRlcmVyLT5kcmF3RWxlbWVudHNJbnN0YW5j
ZWQoZ2V0RGF0YSgpLCBtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgaW5zdGFuY2VzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleFJhbmdlKTsKKyAg
ICByZXR1cm4gbUltcGxlbWVudGF0aW9uLT5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291
bnQsIHR5cGUsIGluZGljZXMsIGluc3RhbmNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhSYW5nZSk7CiB9CiAKIEVycm9yIENvbnRleHQ6
OmRyYXdSYW5nZUVsZW1lbnRzKEdMZW51bSBtb2RlLApAQCAtMTYwMiw0OSArMTY1MiwyODUgQEAg
RXJyb3IgQ29udGV4dDo6ZHJhd1JhbmdlRWxlbWVudHMoR0xlbnVtIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgSW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkKIHsKICAgICBz
eW5jUmVuZGVyZXJTdGF0ZSgpOwotICAgIHJldHVybiBtUmVuZGVyZXItPmRyYXdSYW5nZUVsZW1l
bnRzKGdldERhdGEoKSwgbW9kZSwgc3RhcnQsIGVuZCwgY291bnQsIHR5cGUsIGluZGljZXMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhSYW5nZSk7CisgICAg
cmV0dXJuIG1JbXBsZW1lbnRhdGlvbi0+ZHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVu
ZCwgY291bnQsIHR5cGUsIGluZGljZXMsIGluZGV4UmFuZ2UpOwogfQogCiBFcnJvciBDb250ZXh0
OjpmbHVzaCgpCiB7Ci0gICAgcmV0dXJuIG1SZW5kZXJlci0+Zmx1c2goKTsKKyAgICByZXR1cm4g
bUltcGxlbWVudGF0aW9uLT5mbHVzaCgpOwogfQogCiBFcnJvciBDb250ZXh0OjpmaW5pc2goKQog
ewotICAgIHJldHVybiBtUmVuZGVyZXItPmZpbmlzaCgpOworICAgIHJldHVybiBtSW1wbGVtZW50
YXRpb24tPmZpbmlzaCgpOwogfQogCiB2b2lkIENvbnRleHQ6Omluc2VydEV2ZW50TWFya2VyKEdM
c2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpCiB7Ci0gICAgQVNTRVJUKG1SZW5kZXJl
cik7Ci0gICAgbVJlbmRlcmVyLT5pbnNlcnRFdmVudE1hcmtlcihsZW5ndGgsIG1hcmtlcik7Cisg
ICAgQVNTRVJUKG1JbXBsZW1lbnRhdGlvbik7CisgICAgbUltcGxlbWVudGF0aW9uLT5pbnNlcnRF
dmVudE1hcmtlcihsZW5ndGgsIG1hcmtlcik7CiB9CiAKIHZvaWQgQ29udGV4dDo6cHVzaEdyb3Vw
TWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpCiB7Ci0gICAgQVNTRVJU
KG1SZW5kZXJlcik7Ci0gICAgbVJlbmRlcmVyLT5wdXNoR3JvdXBNYXJrZXIobGVuZ3RoLCBtYXJr
ZXIpOworICAgIEFTU0VSVChtSW1wbGVtZW50YXRpb24pOworICAgIG1JbXBsZW1lbnRhdGlvbi0+
cHVzaEdyb3VwTWFya2VyKGxlbmd0aCwgbWFya2VyKTsKIH0KIAogdm9pZCBDb250ZXh0Ojpwb3BH
cm91cE1hcmtlcigpCiB7Ci0gICAgQVNTRVJUKG1SZW5kZXJlcik7Ci0gICAgbVJlbmRlcmVyLT5w
b3BHcm91cE1hcmtlcigpOworICAgIEFTU0VSVChtSW1wbGVtZW50YXRpb24pOworICAgIG1JbXBs
ZW1lbnRhdGlvbi0+cG9wR3JvdXBNYXJrZXIoKTsKK30KKwordm9pZCBDb250ZXh0OjpiaW5kVW5p
Zm9ybUxvY2F0aW9uKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgY29uc3QgR0xjaGFy
ICpuYW1lKQoreworICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBnZXRQcm9ncmFtKHByb2dy
YW0pOworICAgIEFTU0VSVChwcm9ncmFtT2JqZWN0KTsKKworICAgIHByb2dyYW1PYmplY3QtPmJp
bmRVbmlmb3JtTG9jYXRpb24obG9jYXRpb24sIG5hbWUpOworfQorCit2b2lkIENvbnRleHQ6OnNl
dENvdmVyYWdlTW9kdWxhdGlvbihHTGVudW0gY29tcG9uZW50cykKK3sKKyAgICBtR0xTdGF0ZS5z
ZXRDb3ZlcmFnZU1vZHVsYXRpb24oY29tcG9uZW50cyk7Cit9CisKK3ZvaWQgQ29udGV4dDo6bG9h
ZFBhdGhSZW5kZXJpbmdNYXRyaXgoR0xlbnVtIG1hdHJpeE1vZGUsIGNvbnN0IEdMZmxvYXQgKm1h
dHJpeCkKK3sKKyAgICBtR0xTdGF0ZS5sb2FkUGF0aFJlbmRlcmluZ01hdHJpeChtYXRyaXhNb2Rl
LCBtYXRyaXgpOworfQorCit2b2lkIENvbnRleHQ6OmxvYWRQYXRoUmVuZGVyaW5nSWRlbnRpdHlN
YXRyaXgoR0xlbnVtIG1hdHJpeE1vZGUpCit7CisgICAgR0xmbG9hdCBJWzE2XTsKKyAgICBhbmds
ZTo6TWF0cml4PEdMZmxvYXQ+OjpzZXRUb0lkZW50aXR5KEkpOworCisgICAgbUdMU3RhdGUubG9h
ZFBhdGhSZW5kZXJpbmdNYXRyaXgobWF0cml4TW9kZSwgSSk7Cit9CisKK3ZvaWQgQ29udGV4dDo6
c3RlbmNpbEZpbGxQYXRoKEdMdWludCBwYXRoLCBHTGVudW0gZmlsbE1vZGUsIEdMdWludCBtYXNr
KQoreworICAgIGNvbnN0IGF1dG8gKnBhdGhPYmogPSBtUmVzb3VyY2VNYW5hZ2VyLT5nZXRQYXRo
KHBhdGgpOworICAgIGlmICghcGF0aE9iaikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVE9E
TyhzdmFpc2FuZW5AbnZpZGlhLmNvbSk6IG1heWJlIHN5bmMgb25seSBzdGF0ZSByZXF1aXJlZCBm
b3IgcGF0aCByZW5kZXJpbmc/CisgICAgc3luY1JlbmRlcmVyU3RhdGUoKTsKKworICAgIG1JbXBs
ZW1lbnRhdGlvbi0+c3RlbmNpbEZpbGxQYXRoKHBhdGhPYmosIGZpbGxNb2RlLCBtYXNrKTsKK30K
Kwordm9pZCBDb250ZXh0OjpzdGVuY2lsU3Ryb2tlUGF0aChHTHVpbnQgcGF0aCwgR0xpbnQgcmVm
ZXJlbmNlLCBHTHVpbnQgbWFzaykKK3sKKyAgICBjb25zdCBhdXRvICpwYXRoT2JqID0gbVJlc291
cmNlTWFuYWdlci0+Z2V0UGF0aChwYXRoKTsKKyAgICBpZiAoIXBhdGhPYmopCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIFRPRE8oc3ZhaXNhbmVuQG52aWRpYS5jb20pOiBtYXliZSBzeW5jIG9u
bHkgc3RhdGUgcmVxdWlyZWQgZm9yIHBhdGggcmVuZGVyaW5nPworICAgIHN5bmNSZW5kZXJlclN0
YXRlKCk7CisKKyAgICBtSW1wbGVtZW50YXRpb24tPnN0ZW5jaWxTdHJva2VQYXRoKHBhdGhPYmos
IHJlZmVyZW5jZSwgbWFzayk7Cit9CisKK3ZvaWQgQ29udGV4dDo6Y292ZXJGaWxsUGF0aChHTHVp
bnQgcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSkKK3sKKyAgICBjb25zdCBhdXRvICpwYXRoT2JqID0g
bVJlc291cmNlTWFuYWdlci0+Z2V0UGF0aChwYXRoKTsKKyAgICBpZiAoIXBhdGhPYmopCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIFRPRE8oc3ZhaXNhbmVuQG52aWRpYS5jb20pOiBtYXliZSBz
eW5jIG9ubHkgc3RhdGUgcmVxdWlyZWQgZm9yIHBhdGggcmVuZGVyaW5nPworICAgIHN5bmNSZW5k
ZXJlclN0YXRlKCk7CisKKyAgICBtSW1wbGVtZW50YXRpb24tPmNvdmVyRmlsbFBhdGgocGF0aE9i
aiwgY292ZXJNb2RlKTsKK30KKwordm9pZCBDb250ZXh0Ojpjb3ZlclN0cm9rZVBhdGgoR0x1aW50
IHBhdGgsIEdMZW51bSBjb3Zlck1vZGUpCit7CisgICAgY29uc3QgYXV0byAqcGF0aE9iaiA9IG1S
ZXNvdXJjZU1hbmFnZXItPmdldFBhdGgocGF0aCk7CisgICAgaWYgKCFwYXRoT2JqKQorICAgICAg
ICByZXR1cm47CisKKyAgICAvLyBUT0RPKHN2YWlzYW5lbkBudmlkaWEuY29tKTogbWF5YmUgc3lu
YyBvbmx5IHN0YXRlIHJlcXVpcmVkIGZvciBwYXRoIHJlbmRlcmluZz8KKyAgICBzeW5jUmVuZGVy
ZXJTdGF0ZSgpOworCisgICAgbUltcGxlbWVudGF0aW9uLT5jb3ZlclN0cm9rZVBhdGgocGF0aE9i
aiwgY292ZXJNb2RlKTsKK30KKwordm9pZCBDb250ZXh0OjpzdGVuY2lsVGhlbkNvdmVyRmlsbFBh
dGgoR0x1aW50IHBhdGgsIEdMZW51bSBmaWxsTW9kZSwgR0x1aW50IG1hc2ssIEdMZW51bSBjb3Zl
ck1vZGUpCit7CisgICAgY29uc3QgYXV0byAqcGF0aE9iaiA9IG1SZXNvdXJjZU1hbmFnZXItPmdl
dFBhdGgocGF0aCk7CisgICAgaWYgKCFwYXRoT2JqKQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBUT0RPKHN2YWlzYW5lbkBudmlkaWEuY29tKTogbWF5YmUgc3luYyBvbmx5IHN0YXRlIHJlcXVp
cmVkIGZvciBwYXRoIHJlbmRlcmluZz8KKyAgICBzeW5jUmVuZGVyZXJTdGF0ZSgpOworCisgICAg
bUltcGxlbWVudGF0aW9uLT5zdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGgocGF0aE9iaiwgZmlsbE1v
ZGUsIG1hc2ssIGNvdmVyTW9kZSk7Cit9CisKK3ZvaWQgQ29udGV4dDo6c3RlbmNpbFRoZW5Db3Zl
clN0cm9rZVBhdGgoR0x1aW50IHBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpCit7CisgICAgY29uc3QgYXV0byAqcGF0aE9iaiA9
IG1SZXNvdXJjZU1hbmFnZXItPmdldFBhdGgocGF0aCk7CisgICAgaWYgKCFwYXRoT2JqKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBUT0RPKHN2YWlzYW5lbkBudmlkaWEuY29tKTogbWF5YmUg
c3luYyBvbmx5IHN0YXRlIHJlcXVpcmVkIGZvciBwYXRoIHJlbmRlcmluZz8KKyAgICBzeW5jUmVu
ZGVyZXJTdGF0ZSgpOworCisgICAgbUltcGxlbWVudGF0aW9uLT5zdGVuY2lsVGhlbkNvdmVyU3Ry
b2tlUGF0aChwYXRoT2JqLCByZWZlcmVuY2UsIG1hc2ssIGNvdmVyTW9kZSk7Cit9CisKK3ZvaWQg
Q29udGV4dDo6Y292ZXJGaWxsUGF0aEluc3RhbmNlZChHTHNpemVpIG51bVBhdGhzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3Jt
VmFsdWVzKQoreworICAgIGNvbnN0IGF1dG8gJnBhdGhPYmplY3RzID0KKyAgICAgICAgR2F0aGVy
UGF0aHMoKm1SZXNvdXJjZU1hbmFnZXIsIG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBw
YXRoQmFzZSk7CisKKyAgICAvLyBUT0RPKHN2YWlzYW5lbkBudmlkaWEuY29tKTogbWF5YmUgc3lu
YyBvbmx5IHN0YXRlIHJlcXVpcmVkIGZvciBwYXRoIHJlbmRlcmluZz8KKyAgICBzeW5jUmVuZGVy
ZXJTdGF0ZSgpOworCisgICAgbUltcGxlbWVudGF0aW9uLT5jb3ZlckZpbGxQYXRoSW5zdGFuY2Vk
KHBhdGhPYmplY3RzLCBjb3Zlck1vZGUsIHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcyk7
Cit9CisKK3ZvaWQgQ29udGV4dDo6Y292ZXJTdHJva2VQYXRoSW5zdGFuY2VkKEdMc2l6ZWkgbnVt
UGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0
aE5hbWVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dm9pZCAqcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgcGF0aEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gY292ZXJNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCit7CisgICAgY29uc3QgYXV0byAmcGF0
aE9iamVjdHMgPQorICAgICAgICBHYXRoZXJQYXRocygqbVJlc291cmNlTWFuYWdlciwgbnVtUGF0
aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlKTsKKworICAgIC8vIFRPRE8oc3ZhaXNh
bmVuQG52aWRpYS5jb20pOiBtYXliZSBzeW5jIG9ubHkgc3RhdGUgcmVxdWlyZWQgZm9yIHBhdGgg
cmVuZGVyaW5nPworICAgIHN5bmNSZW5kZXJlclN0YXRlKCk7CisKKyAgICBtSW1wbGVtZW50YXRp
b24tPmNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZChwYXRoT2JqZWN0cywgY292ZXJNb2RlLCB0cmFu
c2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRyYW5zZm9ybVZhbHVlcyk7Cit9CisKK3ZvaWQgQ29udGV4dDo6c3RlbmNpbEZpbGxQYXRoSW5z
dGFuY2VkKEdMc2l6ZWkgbnVtUGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQoreworICAgIGNv
bnN0IGF1dG8gJnBhdGhPYmplY3RzID0KKyAgICAgICAgR2F0aGVyUGF0aHMoKm1SZXNvdXJjZU1h
bmFnZXIsIG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZSk7CisKKyAgICAv
LyBUT0RPKHN2YWlzYW5lbkBudmlkaWEuY29tKTogbWF5YmUgc3luYyBvbmx5IHN0YXRlIHJlcXVp
cmVkIGZvciBwYXRoIHJlbmRlcmluZz8KKyAgICBzeW5jUmVuZGVyZXJTdGF0ZSgpOworCisgICAg
bUltcGxlbWVudGF0aW9uLT5zdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWQocGF0aE9iamVjdHMsIGZp
bGxNb2RlLCBtYXNrLCB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVZhbHVlcyk7Cit9CisKK3ZvaWQgQ29udGV4dDo6
c3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWQoR0xzaXplaSBudW1QYXRocywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9y
bVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKK3sKKyAgICBjb25zdCBhdXRvICZwYXRoT2JqZWN0cyA9
CisgICAgICAgIEdhdGhlclBhdGhzKCptUmVzb3VyY2VNYW5hZ2VyLCBudW1QYXRocywgcGF0aE5h
bWVUeXBlLCBwYXRocywgcGF0aEJhc2UpOworCisgICAgLy8gVE9ETyhzdmFpc2FuZW5AbnZpZGlh
LmNvbSk6IG1heWJlIHN5bmMgb25seSBzdGF0ZSByZXF1aXJlZCBmb3IgcGF0aCByZW5kZXJpbmc/
CisgICAgc3luY1JlbmRlcmVyU3RhdGUoKTsKKworICAgIG1JbXBsZW1lbnRhdGlvbi0+c3RlbmNp
bFN0cm9rZVBhdGhJbnN0YW5jZWQocGF0aE9iamVjdHMsIHJlZmVyZW5jZSwgbWFzaywgdHJhbnNm
b3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRyYW5zZm9ybVZhbHVlcyk7Cit9CisKK3ZvaWQgQ29udGV4dDo6c3RlbmNpbFRoZW5Db3ZlckZp
bGxQYXRoSW5zdGFuY2VkKEdMc2l6ZWkgbnVtUGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
cGF0aEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZmlsbE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRy
YW5zZm9ybVZhbHVlcykKK3sKKyAgICBjb25zdCBhdXRvICZwYXRoT2JqZWN0cyA9CisgICAgICAg
IEdhdGhlclBhdGhzKCptUmVzb3VyY2VNYW5hZ2VyLCBudW1QYXRocywgcGF0aE5hbWVUeXBlLCBw
YXRocywgcGF0aEJhc2UpOworCisgICAgLy8gVE9ETyhzdmFpc2FuZW5AbnZpZGlhLmNvbSk6IG1h
eWJlIHN5bmMgb25seSBzdGF0ZSByZXF1aXJlZCBmb3IgcGF0aCByZW5kZXJpbmc/CisgICAgc3lu
Y1JlbmRlcmVyU3RhdGUoKTsKKworICAgIG1JbXBsZW1lbnRhdGlvbi0+c3RlbmNpbFRoZW5Db3Zl
ckZpbGxQYXRoSW5zdGFuY2VkKHBhdGhPYmplY3RzLCBjb3Zlck1vZGUsIGZpbGxNb2RlLCBtYXNr
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcyk7Cit9CisKK3ZvaWQgQ29udGV4dDo6c3Rl
bmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWQoR0xzaXplaSBudW1QYXRocywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhO
YW1lVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgdm9pZCAqcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVy
TW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKK3sKKyAgICBj
b25zdCBhdXRvICZwYXRoT2JqZWN0cyA9CisgICAgICAgIEdhdGhlclBhdGhzKCptUmVzb3VyY2VN
YW5hZ2VyLCBudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2UpOworCisgICAg
Ly8gVE9ETyhzdmFpc2FuZW5AbnZpZGlhLmNvbSk6IG1heWJlIHN5bmMgb25seSBzdGF0ZSByZXF1
aXJlZCBmb3IgcGF0aCByZW5kZXJpbmc/CisgICAgc3luY1JlbmRlcmVyU3RhdGUoKTsKKworICAg
IG1JbXBsZW1lbnRhdGlvbi0+c3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWQocGF0
aE9iamVjdHMsIGNvdmVyTW9kZSwgcmVmZXJlbmNlLCBtYXNrLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSwgdHJh
bnNmb3JtVmFsdWVzKTsKK30KKwordm9pZCBDb250ZXh0OjpiaW5kRnJhZ21lbnRJbnB1dExvY2F0
aW9uKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgY29uc3QgR0xjaGFyICpuYW1lKQor
eworICAgIGF1dG8gKnByb2dyYW1PYmplY3QgPSBnZXRQcm9ncmFtKHByb2dyYW0pOworCisgICAg
cHJvZ3JhbU9iamVjdC0+YmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbihsb2NhdGlvbiwgbmFtZSk7
Cit9CisKK3ZvaWQgQ29udGV4dDo6cHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuKEdMdWludCBw
cm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZ2VuTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGNvbXBvbmVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGZsb2F0ICpjb2VmZnMpCit7CisgICAgYXV0byAqcHJvZ3JhbU9iamVjdCA9IGdl
dFByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICBwcm9ncmFtT2JqZWN0LT5wYXRoRnJhZ21lbnRJbnB1
dEdlbihsb2NhdGlvbiwgZ2VuTW9kZSwgY29tcG9uZW50cywgY29lZmZzKTsKIH0KIAotdm9pZCBD
b250ZXh0OjpyZWNvcmRFcnJvcihjb25zdCBFcnJvciAmZXJyb3IpCit2b2lkIENvbnRleHQ6Omhh
bmRsZUVycm9yKGNvbnN0IEVycm9yICZlcnJvcikKIHsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigp
KQogICAgIHsKLSAgICAgICAgbUVycm9ycy5pbnNlcnQoZXJyb3IuZ2V0Q29kZSgpKTsKKyAgICAg
ICAgR0xlbnVtIGNvZGUgPSBlcnJvci5nZXRDb2RlKCk7CisgICAgICAgIG1FcnJvcnMuaW5zZXJ0
KGNvZGUpOworICAgICAgICBpZiAoY29kZSA9PSBHTF9PVVRfT0ZfTUVNT1JZICYmIGdldFdvcmth
cm91bmRzKCkubG9zZUNvbnRleHRPbk91dE9mTWVtb3J5KQorICAgICAgICB7CisgICAgICAgICAg
ICBtYXJrQ29udGV4dExvc3QoKTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmICghZXJyb3IuZ2V0
TWVzc2FnZSgpLmVtcHR5KCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gJmRlYnVnID0g
bVN0YXRlLmdldERlYnVnKCk7Ci0gICAgICAgICAgICBkZWJ1Zy5pbnNlcnRNZXNzYWdlKEdMX0RF
QlVHX1NPVVJDRV9BUEksIEdMX0RFQlVHX1RZUEVfRVJST1IsIGVycm9yLmdldElEKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0RFQlVHX1NFVkVSSVRZX0hJR0gsIGVycm9y
LmdldE1lc3NhZ2UoKSk7CisgICAgICAgICAgICBhdXRvICpkZWJ1ZyA9ICZtR0xTdGF0ZS5nZXRE
ZWJ1ZygpOworICAgICAgICAgICAgZGVidWctPmluc2VydE1lc3NhZ2UoR0xfREVCVUdfU09VUkNF
X0FQSSwgR0xfREVCVUdfVFlQRV9FUlJPUiwgZXJyb3IuZ2V0SUQoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX0RFQlVHX1NFVkVSSVRZX0hJR0gsIGVycm9yLmdldE1lc3Nh
Z2UoKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xNjY1LDMyICsxOTUxLDYxIEBAIEdMZW51
bSBDb250ZXh0OjpnZXRFcnJvcigpCiAgICAgfQogfQogCisvLyBOT1RFOiB0aGlzIGZ1bmN0aW9u
IHNob3VsZCBub3QgYXNzdW1lIHRoYXQgdGhpcyBjb250ZXh0IGlzIGN1cnJlbnQhCit2b2lkIENv
bnRleHQ6Om1hcmtDb250ZXh0TG9zdCgpCit7CisgICAgaWYgKG1SZXNldFN0cmF0ZWd5ID09IEdM
X0xPU0VfQ09OVEVYVF9PTl9SRVNFVF9FWFQpCisgICAgeworICAgICAgICBtUmVzZXRTdGF0dXMg
PSBHTF9VTktOT1dOX0NPTlRFWFRfUkVTRVRfRVhUOworICAgICAgICBtQ29udGV4dExvc3RGb3Jj
ZWQgPSB0cnVlOworICAgIH0KKyAgICBtQ29udGV4dExvc3QgICAgID0gdHJ1ZTsKK30KKworYm9v
bCBDb250ZXh0Ojppc0NvbnRleHRMb3N0KCkKK3sKKyAgICByZXR1cm4gbUNvbnRleHRMb3N0Owor
fQorCiBHTGVudW0gQ29udGV4dDo6Z2V0UmVzZXRTdGF0dXMoKQogewotICAgIC8vVE9ETyhqbWFk
aWxsKTogbmVlZHMgTUFOR0xFIHJld29ya2luZwotICAgIGlmIChtUmVzZXRTdGF0dXMgPT0gR0xf
Tk9fRVJST1IgJiYgIW1Db250ZXh0TG9zdCkKKyAgICAvLyBFdmVuIGlmIHRoZSBhcHBsaWNhdGlv
biBkb2Vzbid0IHdhbnQgdG8ga25vdyBhYm91dCByZXNldHMsIHdlIHdhbnQgdG8ga25vdworICAg
IC8vIGFzIGl0IHdpbGwgYWxsb3cgdXMgdG8gc2tpcCBhbGwgdGhlIGNhbGxzLgorICAgIGlmICht
UmVzZXRTdHJhdGVneSA9PSBHTF9OT19SRVNFVF9OT1RJRklDQVRJT05fRVhUKQogICAgIHsKLSAg
ICAgICAgLy8gbVJlc2V0U3RhdHVzIHdpbGwgYmUgc2V0IGJ5IHRoZSBtYXJrQ29udGV4dExvc3Qg
Y2FsbGJhY2sKLSAgICAgICAgLy8gaW4gdGhlIGNhc2UgYSBub3RpZmljYXRpb24gaXMgc2VudAot
ICAgICAgICBpZiAobVJlbmRlcmVyLT50ZXN0RGV2aWNlTG9zdCgpKQorICAgICAgICBpZiAoIW1D
b250ZXh0TG9zdCAmJiBtSW1wbGVtZW50YXRpb24tPmdldFJlc2V0U3RhdHVzKCkgIT0gR0xfTk9f
RVJST1IpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1SZW5kZXJlci0+bm90aWZ5RGV2aWNlTG9z
dCgpOworICAgICAgICAgICAgbUNvbnRleHRMb3N0ID0gdHJ1ZTsKICAgICAgICAgfQotICAgIH0K
IAotICAgIEdMZW51bSBzdGF0dXMgPSBtUmVzZXRTdGF0dXM7CisgICAgICAgIC8vIEVYVF9yb2J1
c3RuZXNzLCBzZWN0aW9uIDIuNjogSWYgdGhlIHJlc2V0IG5vdGlmaWNhdGlvbiBiZWhhdmlvciBp
cworICAgICAgICAvLyBOT19SRVNFVF9OT1RJRklDQVRJT05fRVhULCB0aGVuIHRoZSBpbXBsZW1l
bnRhdGlvbiB3aWxsIG5ldmVyIGRlbGl2ZXIgbm90aWZpY2F0aW9uIG9mCisgICAgICAgIC8vIHJl
c2V0IGV2ZW50cywgYW5kIEdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQgd2lsbCBhbHdheXMgcmV0
dXJuIE5PX0VSUk9SLgorICAgICAgICByZXR1cm4gR0xfTk9fRVJST1I7CisgICAgfQogCi0gICAg
aWYgKG1SZXNldFN0YXR1cyAhPSBHTF9OT19FUlJPUikKKyAgICAvLyBUaGUgR0xfRVhUX3JvYnVz
dG5lc3Mgc3BlYyBzYXlzIHRoYXQgaWYgYSByZXNldCBpcyBlbmNvdW50ZXJlZCwgYSByZXNldAor
ICAgIC8vIHN0YXR1cyBzaG91bGQgYmUgcmV0dXJuZWQgYXQgbGVhc3Qgb25jZSwgYW5kIEdMX05P
X0VSUk9SIHNob3VsZCBiZSByZXR1cm5lZAorICAgIC8vIG9uY2UgdGhlIGRldmljZSBoYXMgZmlu
aXNoZWQgcmVzZXR0aW5nLgorICAgIGlmICghbUNvbnRleHRMb3N0KQogICAgIHsKLSAgICAgICAg
QVNTRVJUKG1Db250ZXh0TG9zdCk7CisgICAgICAgIEFTU0VSVChtUmVzZXRTdGF0dXMgPT0gR0xf
Tk9fRVJST1IpOworICAgICAgICBtUmVzZXRTdGF0dXMgPSBtSW1wbGVtZW50YXRpb24tPmdldFJl
c2V0U3RhdHVzKCk7CiAKLSAgICAgICAgaWYgKG1SZW5kZXJlci0+dGVzdERldmljZVJlc2V0dGFi
bGUoKSkKKyAgICAgICAgaWYgKG1SZXNldFN0YXR1cyAhPSBHTF9OT19FUlJPUikKICAgICAgICAg
ewotICAgICAgICAgICAgbVJlc2V0U3RhdHVzID0gR0xfTk9fRVJST1I7CisgICAgICAgICAgICBt
Q29udGV4dExvc3QgPSB0cnVlOwogICAgICAgICB9CiAgICAgfQorICAgIGVsc2UgaWYgKCFtQ29u
dGV4dExvc3RGb3JjZWQgJiYgbVJlc2V0U3RhdHVzICE9IEdMX05PX0VSUk9SKQorICAgIHsKKyAg
ICAgICAgLy8gSWYgbWFya0NvbnRleHRMb3N0IHdhcyB1c2VkIHRvIG1hcmsgdGhlIGNvbnRleHQg
bG9zdCB0aGVuCisgICAgICAgIC8vIGFzc3VtZSB0aGF0IGlzIG5vdCByZWNvdmVyYWJsZSwgYW5k
IGNvbnRpbnVlIHRvIHJlcG9ydCB0aGUKKyAgICAgICAgLy8gbG9zdCByZXNldCBzdGF0dXMgZm9y
IHRoZSBsaWZldGltZSBvZiB0aGlzIGNvbnRleHQuCisgICAgICAgIG1SZXNldFN0YXR1cyA9IG1J
bXBsZW1lbnRhdGlvbi0+Z2V0UmVzZXRTdGF0dXMoKTsKKyAgICB9CiAKLSAgICByZXR1cm4gc3Rh
dHVzOworICAgIHJldHVybiBtUmVzZXRTdGF0dXM7CiB9CiAKIGJvb2wgQ29udGV4dDo6aXNSZXNl
dE5vdGlmaWNhdGlvbkVuYWJsZWQoKQpAQCAtMTczMSw3ICsyMDQ2LDggQEAgVmVydGV4QXJyYXkg
KkNvbnRleHQ6OmNoZWNrVmVydGV4QXJyYXlBbAogICAgIFZlcnRleEFycmF5ICp2ZXJ0ZXhBcnJh
eSA9IGdldFZlcnRleEFycmF5KHZlcnRleEFycmF5SGFuZGxlKTsKICAgICBpZiAoIXZlcnRleEFy
cmF5KQogICAgIHsKLSAgICAgICAgdmVydGV4QXJyYXkgICAgICAgICAgICAgICAgICAgICAgICA9
IG5ldyBWZXJ0ZXhBcnJheShtUmVuZGVyZXIsIHZlcnRleEFycmF5SGFuZGxlLCBNQVhfVkVSVEVY
X0FUVFJJQlMpOworICAgICAgICB2ZXJ0ZXhBcnJheSA9IG5ldyBWZXJ0ZXhBcnJheShtSW1wbGVt
ZW50YXRpb24uZ2V0KCksIHZlcnRleEFycmF5SGFuZGxlLCBNQVhfVkVSVEVYX0FUVFJJQlMpOwor
CiAgICAgICAgIG1WZXJ0ZXhBcnJheU1hcFt2ZXJ0ZXhBcnJheUhhbmRsZV0gPSB2ZXJ0ZXhBcnJh
eTsKICAgICB9CiAKQEAgLTE3NDQsNyArMjA2MCw4IEBAIFRyYW5zZm9ybUZlZWRiYWNrICpDb250
ZXh0OjpjaGVja1RyYW5zZm8KICAgICBUcmFuc2Zvcm1GZWVkYmFjayAqdHJhbnNmb3JtRmVlZGJh
Y2sgPSBnZXRUcmFuc2Zvcm1GZWVkYmFjayh0cmFuc2Zvcm1GZWVkYmFja0hhbmRsZSk7CiAgICAg
aWYgKCF0cmFuc2Zvcm1GZWVkYmFjaykKICAgICB7Ci0gICAgICAgIHRyYW5zZm9ybUZlZWRiYWNr
ID0gbmV3IFRyYW5zZm9ybUZlZWRiYWNrKG1SZW5kZXJlciwgdHJhbnNmb3JtRmVlZGJhY2tIYW5k
bGUsIG1DYXBzKTsKKyAgICAgICAgdHJhbnNmb3JtRmVlZGJhY2sgPQorICAgICAgICAgICAgbmV3
IFRyYW5zZm9ybUZlZWRiYWNrKG1JbXBsZW1lbnRhdGlvbi5nZXQoKSwgdHJhbnNmb3JtRmVlZGJh
Y2tIYW5kbGUsIG1DYXBzKTsKICAgICAgICAgdHJhbnNmb3JtRmVlZGJhY2stPmFkZFJlZigpOwog
ICAgICAgICBtVHJhbnNmb3JtRmVlZGJhY2tNYXBbdHJhbnNmb3JtRmVlZGJhY2tIYW5kbGVdID0g
dHJhbnNmb3JtRmVlZGJhY2s7CiAgICAgfQpAQCAtMTc1OSw3ICsyMDc2LDcgQEAgRnJhbWVidWZm
ZXIgKkNvbnRleHQ6OmNoZWNrRnJhbWVidWZmZXJBbAogICAgIGJvb2wgbmV2ZXJDcmVhdGVkID0g
ZnJhbWVidWZmZXJJdCA9PSBtRnJhbWVidWZmZXJNYXAuZW5kKCk7CiAgICAgaWYgKG5ldmVyQ3Jl
YXRlZCB8fCBmcmFtZWJ1ZmZlckl0LT5zZWNvbmQgPT0gbnVsbHB0cikKICAgICB7Ci0gICAgICAg
IEZyYW1lYnVmZmVyICpuZXdGQk8gPSBuZXcgRnJhbWVidWZmZXIobUNhcHMsIG1SZW5kZXJlciwg
ZnJhbWVidWZmZXIpOworICAgICAgICBGcmFtZWJ1ZmZlciAqbmV3RkJPID0gbmV3IEZyYW1lYnVm
ZmVyKG1DYXBzLCBtSW1wbGVtZW50YXRpb24uZ2V0KCksIGZyYW1lYnVmZmVyKTsKICAgICAgICAg
aWYgKG5ldmVyQ3JlYXRlZCkKICAgICAgICAgewogICAgICAgICAgICAgbUZyYW1lYnVmZmVySGFu
ZGxlQWxsb2NhdG9yLnJlc2VydmUoZnJhbWVidWZmZXIpOwpAQCAtMTc3MywxMyArMjA5MCwzNiBA
QCBGcmFtZWJ1ZmZlciAqQ29udGV4dDo6Y2hlY2tGcmFtZWJ1ZmZlckFsCiAgICAgcmV0dXJuIGZy
YW1lYnVmZmVySXQtPnNlY29uZDsKIH0KIAorYm9vbCBDb250ZXh0Ojppc1RleHR1cmVHZW5lcmF0
ZWQoR0x1aW50IHRleHR1cmUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1SZXNvdXJjZU1hbmFnZXIt
PmlzVGV4dHVyZUdlbmVyYXRlZCh0ZXh0dXJlKTsKK30KKworYm9vbCBDb250ZXh0Ojppc0J1ZmZl
ckdlbmVyYXRlZChHTHVpbnQgYnVmZmVyKSBjb25zdAoreworICAgIHJldHVybiBtUmVzb3VyY2VN
YW5hZ2VyLT5pc0J1ZmZlckdlbmVyYXRlZChidWZmZXIpOworfQorCitib29sIENvbnRleHQ6Omlz
UmVuZGVyYnVmZmVyR2VuZXJhdGVkKEdMdWludCByZW5kZXJidWZmZXIpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1SZXNvdXJjZU1hbmFnZXItPmlzUmVuZGVyYnVmZmVyR2VuZXJhdGVkKHJlbmRlcmJ1
ZmZlcik7Cit9CisKK2Jvb2wgQ29udGV4dDo6aXNGcmFtZWJ1ZmZlckdlbmVyYXRlZChHTHVpbnQg
ZnJhbWVidWZmZXIpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1GcmFtZWJ1ZmZlck1hcC5maW5kKDAp
ICE9IG1GcmFtZWJ1ZmZlck1hcC5lbmQoKSk7CisgICAgcmV0dXJuIG1GcmFtZWJ1ZmZlck1hcC5m
aW5kKGZyYW1lYnVmZmVyKSAhPSBtRnJhbWVidWZmZXJNYXAuZW5kKCk7Cit9CisKIGJvb2wgQ29u
dGV4dDo6aXNWZXJ0ZXhBcnJheUdlbmVyYXRlZChHTHVpbnQgdmVydGV4QXJyYXkpCiB7CisgICAg
QVNTRVJUKG1WZXJ0ZXhBcnJheU1hcC5maW5kKDApICE9IG1WZXJ0ZXhBcnJheU1hcC5lbmQoKSk7
CiAgICAgcmV0dXJuIG1WZXJ0ZXhBcnJheU1hcC5maW5kKHZlcnRleEFycmF5KSAhPSBtVmVydGV4
QXJyYXlNYXAuZW5kKCk7CiB9CiAKIGJvb2wgQ29udGV4dDo6aXNUcmFuc2Zvcm1GZWVkYmFja0dl
bmVyYXRlZChHTHVpbnQgdHJhbnNmb3JtRmVlZGJhY2spCiB7CisgICAgQVNTRVJUKG1UcmFuc2Zv
cm1GZWVkYmFja01hcC5maW5kKDApICE9IG1UcmFuc2Zvcm1GZWVkYmFja01hcC5lbmQoKSk7CiAg
ICAgcmV0dXJuIG1UcmFuc2Zvcm1GZWVkYmFja01hcC5maW5kKHRyYW5zZm9ybUZlZWRiYWNrKSAh
PSBtVHJhbnNmb3JtRmVlZGJhY2tNYXAuZW5kKCk7CiB9CiAKQEAgLTE3ODksNyArMjEyOSw3IEBA
IHZvaWQgQ29udGV4dDo6ZGV0YWNoVGV4dHVyZShHTHVpbnQgdGV4dHUKICAgICAvLyBhbGxvY2F0
aW9uIG1hcCBtYW5hZ2VtZW50IGVpdGhlciBoZXJlIG9yIGluIHRoZSByZXNvdXJjZSBtYW5hZ2Vy
IGF0IGRldGFjaCB0aW1lLgogICAgIC8vIFplcm8gdGV4dHVyZXMgYXJlIGhlbGQgYnkgdGhlIENv
bnRleHQsIGFuZCB3ZSBkb24ndCBhdHRlbXB0IHRvIHJlcXVlc3QgdGhlbSBmcm9tCiAgICAgLy8g
dGhlIFN0YXRlLgotICAgIG1TdGF0ZS5kZXRhY2hUZXh0dXJlKG1aZXJvVGV4dHVyZXMsIHRleHR1
cmUpOworICAgIG1HTFN0YXRlLmRldGFjaFRleHR1cmUobVplcm9UZXh0dXJlcywgdGV4dHVyZSk7
CiB9CiAKIHZvaWQgQ29udGV4dDo6ZGV0YWNoQnVmZmVyKEdMdWludCBidWZmZXIpCkBAIC0xODAy
LDcgKzIxNDIsNyBAQCB2b2lkIENvbnRleHQ6OmRldGFjaEJ1ZmZlcihHTHVpbnQgYnVmZmVyCiAg
ICAgLy8gQXR0YWNobWVudHMgdG8gdW5ib3VuZCBjb250YWluZXIgb2JqZWN0cywgc3VjaCBhcwog
ICAgIC8vIGRlbGV0aW9uIG9mIGEgYnVmZmVyIGF0dGFjaGVkIHRvIGEgdmVydGV4IGFycmF5IG9i
amVjdCB3aGljaCBpcyBub3QgYm91bmQgdG8gdGhlIGNvbnRleHQsCiAgICAgLy8gYXJlIG5vdCBh
ZmZlY3RlZCBhbmQgY29udGludWUgdG8gYWN0IGFzIHJlZmVyZW5jZXMgb24gdGhlIGRlbGV0ZWQg
b2JqZWN0Ci0gICAgbVN0YXRlLmRldGFjaEJ1ZmZlcihidWZmZXIpOworICAgIG1HTFN0YXRlLmRl
dGFjaEJ1ZmZlcihidWZmZXIpOwogfQogCiB2b2lkIENvbnRleHQ6OmRldGFjaEZyYW1lYnVmZmVy
KEdMdWludCBmcmFtZWJ1ZmZlcikKQEAgLTE4MTUsMTIgKzIxNTUsMTIgQEAgdm9pZCBDb250ZXh0
OjpkZXRhY2hGcmFtZWJ1ZmZlcihHTHVpbnQgZgogICAgIC8vIElmIGEgZnJhbWVidWZmZXIgdGhh
dCBpcyBjdXJyZW50bHkgYm91bmQgdG8gdGhlIHRhcmdldCBGUkFNRUJVRkZFUiBpcyBkZWxldGVk
LCBpdCBpcyBhcyB0aG91Z2gKICAgICAvLyBCaW5kRnJhbWVidWZmZXIgaGFkIGJlZW4gZXhlY3V0
ZWQgd2l0aCB0aGUgdGFyZ2V0IG9mIEZSQU1FQlVGRkVSIGFuZCBmcmFtZWJ1ZmZlciBvZiB6ZXJv
LgogCi0gICAgaWYgKG1TdGF0ZS5yZW1vdmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nKGZyYW1lYnVm
ZmVyKSAmJiBmcmFtZWJ1ZmZlciAhPSAwKQorICAgIGlmIChtR0xTdGF0ZS5yZW1vdmVSZWFkRnJh
bWVidWZmZXJCaW5kaW5nKGZyYW1lYnVmZmVyKSAmJiBmcmFtZWJ1ZmZlciAhPSAwKQogICAgIHsK
ICAgICAgICAgYmluZFJlYWRGcmFtZWJ1ZmZlcigwKTsKICAgICB9CiAKLSAgICBpZiAobVN0YXRl
LnJlbW92ZURyYXdGcmFtZWJ1ZmZlckJpbmRpbmcoZnJhbWVidWZmZXIpICYmIGZyYW1lYnVmZmVy
ICE9IDApCisgICAgaWYgKG1HTFN0YXRlLnJlbW92ZURyYXdGcmFtZWJ1ZmZlckJpbmRpbmcoZnJh
bWVidWZmZXIpICYmIGZyYW1lYnVmZmVyICE9IDApCiAgICAgewogICAgICAgICBiaW5kRHJhd0Zy
YW1lYnVmZmVyKDApOwogICAgIH0KQEAgLTE4MjgsNyArMjE2OCw3IEBAIHZvaWQgQ29udGV4dDo6
ZGV0YWNoRnJhbWVidWZmZXIoR0x1aW50IGYKIAogdm9pZCBDb250ZXh0OjpkZXRhY2hSZW5kZXJi
dWZmZXIoR0x1aW50IHJlbmRlcmJ1ZmZlcikKIHsKLSAgICBtU3RhdGUuZGV0YWNoUmVuZGVyYnVm
ZmVyKHJlbmRlcmJ1ZmZlcik7CisgICAgbUdMU3RhdGUuZGV0YWNoUmVuZGVyYnVmZmVyKHJlbmRl
cmJ1ZmZlcik7CiB9CiAKIHZvaWQgQ29udGV4dDo6ZGV0YWNoVmVydGV4QXJyYXkoR0x1aW50IHZl
cnRleEFycmF5KQpAQCAtMTg0MCw3ICsyMTgwLDcgQEAgdm9pZCBDb250ZXh0OjpkZXRhY2hWZXJ0
ZXhBcnJheShHTHVpbnQgdgogICAgIC8vIFtPcGVuR0wgRVMgMy4wLjJdIHNlY3Rpb24gMi4xMCBw
YWdlIDQzOgogICAgIC8vIElmIGEgdmVydGV4IGFycmF5IG9iamVjdCB0aGF0IGlzIGN1cnJlbnRs
eSBib3VuZCBpcyBkZWxldGVkLCB0aGUgYmluZGluZwogICAgIC8vIGZvciB0aGF0IG9iamVjdCBy
ZXZlcnRzIHRvIHplcm8gYW5kIHRoZSBkZWZhdWx0IHZlcnRleCBhcnJheSBiZWNvbWVzIGN1cnJl
bnQuCi0gICAgaWYgKG1TdGF0ZS5yZW1vdmVWZXJ0ZXhBcnJheUJpbmRpbmcodmVydGV4QXJyYXkp
KQorICAgIGlmIChtR0xTdGF0ZS5yZW1vdmVWZXJ0ZXhBcnJheUJpbmRpbmcodmVydGV4QXJyYXkp
KQogICAgIHsKICAgICAgICAgYmluZFZlcnRleEFycmF5KDApOwogICAgIH0KQEAgLTE4NDgsMTE3
ICsyMTg4LDY5IEBAIHZvaWQgQ29udGV4dDo6ZGV0YWNoVmVydGV4QXJyYXkoR0x1aW50IHYKIAog
dm9pZCBDb250ZXh0OjpkZXRhY2hUcmFuc2Zvcm1GZWVkYmFjayhHTHVpbnQgdHJhbnNmb3JtRmVl
ZGJhY2spCiB7Ci0gICAgbVN0YXRlLmRldGFjaFRyYW5zZm9ybUZlZWRiYWNrKHRyYW5zZm9ybUZl
ZWRiYWNrKTsKKyAgICAvLyBUcmFuc2Zvcm0gZmVlZGJhY2sgZGV0YWNobWVudCBpcyBoYW5kbGVk
IGJ5IENvbnRleHQsIGJlY2F1c2UgMCBpcyBhIHZhbGlkCisgICAgLy8gdHJhbnNmb3JtIGZlZWRi
YWNrLCBhbmQgYSBwb2ludGVyIHRvIGl0IG11c3QgYmUgcGFzc2VkIGZyb20gQ29udGV4dCB0byBT
dGF0ZSBhdAorICAgIC8vIGJpbmRpbmcgdGltZS4KKworICAgIC8vIFRoZSBPcGVuR0wgc3BlY2lm
aWNhdGlvbiBkb2Vzbid0IG1lbnRpb24gd2hhdCBzaG91bGQgaGFwcGVuIHdoZW4gdGhlIGN1cnJl
bnRseSBib3VuZAorICAgIC8vIHRyYW5zZm9ybSBmZWVkYmFjayBvYmplY3QgaXMgZGVsZXRlZC4g
U2luY2UgaXQgaXMgYSBjb250YWluZXIgb2JqZWN0LCB3ZSB0cmVhdCBpdCBsaWtlCisgICAgLy8g
VkFPcyBhbmQgRkJPcyBhbmQgc2V0IHRoZSBjdXJyZW50IGJvdW5kIHRyYW5zZm9ybSBmZWVkYmFj
ayBiYWNrIHRvIDAuCisgICAgaWYgKG1HTFN0YXRlLnJlbW92ZVRyYW5zZm9ybUZlZWRiYWNrQmlu
ZGluZyh0cmFuc2Zvcm1GZWVkYmFjaykpCisgICAgeworICAgICAgICBiaW5kVHJhbnNmb3JtRmVl
ZGJhY2soMCk7CisgICAgfQogfQogCiB2b2lkIENvbnRleHQ6OmRldGFjaFNhbXBsZXIoR0x1aW50
IHNhbXBsZXIpCiB7Ci0gICAgbVN0YXRlLmRldGFjaFNhbXBsZXIoc2FtcGxlcik7CisgICAgbUdM
U3RhdGUuZGV0YWNoU2FtcGxlcihzYW1wbGVyKTsKIH0KIAogdm9pZCBDb250ZXh0OjpzZXRWZXJ0
ZXhBdHRyaWJEaXZpc29yKEdMdWludCBpbmRleCwgR0x1aW50IGRpdmlzb3IpCiB7Ci0gICAgbVN0
YXRlLnNldFZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpOworICAgIG1HTFN0YXRl
LnNldFZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpOwogfQogCiB2b2lkIENvbnRl
eHQ6OnNhbXBsZXJQYXJhbWV0ZXJpKEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMaW50
IHBhcmFtKQogewotICAgIG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrU2FtcGxlckFsbG9jYXRpb24o
c2FtcGxlcik7Ci0KLSAgICBTYW1wbGVyICpzYW1wbGVyT2JqZWN0ID0gZ2V0U2FtcGxlcihzYW1w
bGVyKTsKLSAgICBBU1NFUlQoc2FtcGxlck9iamVjdCk7CisgICAgU2FtcGxlciAqc2FtcGxlck9i
amVjdCA9CisgICAgICAgIG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrU2FtcGxlckFsbG9jYXRpb24o
bUltcGxlbWVudGF0aW9uLmdldCgpLCBzYW1wbGVyKTsKKyAgICBTZXRTYW1wbGVyUGFyYW1ldGVy
aShzYW1wbGVyT2JqZWN0LCBwbmFtZSwgcGFyYW0pOworfQogCi0gICAgLy8gY2xhbmctZm9ybWF0
IG9mZgotICAgIHN3aXRjaCAocG5hbWUpCi0gICAgewotICAgICAgY2FzZSBHTF9URVhUVVJFX01J
Tl9GSUxURVI6ICAgICAgICAgc2FtcGxlck9iamVjdC0+c2V0TWluRmlsdGVyKHN0YXRpY19jYXN0
PEdMZW51bT4ocGFyYW0pKTsgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfTUFHX0ZJ
TFRFUjogICAgICAgICBzYW1wbGVyT2JqZWN0LT5zZXRNYWdGaWx0ZXIoc3RhdGljX2Nhc3Q8R0xl
bnVtPihwYXJhbSkpOyAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1M6ICAg
ICAgICAgICAgIHNhbXBsZXJPYmplY3QtPnNldFdyYXBTKHN0YXRpY19jYXN0PEdMZW51bT4ocGFy
YW0pKTsgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9URVhUVVJFX1dSQVBfVDogICAgICAg
ICAgICAgc2FtcGxlck9iamVjdC0+c2V0V3JhcFQoc3RhdGljX2Nhc3Q8R0xlbnVtPihwYXJhbSkp
OyAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9SOiAgICAgICAgICAg
ICBzYW1wbGVyT2JqZWN0LT5zZXRXcmFwUihzdGF0aWNfY2FzdDxHTGVudW0+KHBhcmFtKSk7ICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IHNh
bXBsZXJPYmplY3QtPnNldE1heEFuaXNvdHJvcHkoc3RkOjptaW4oc3RhdGljX2Nhc3Q8R0xmbG9h
dD4ocGFyYW0pLCBnZXRFeHRlbnNpb25zKCkubWF4VGV4dHVyZUFuaXNvdHJvcHkpKTsgYnJlYWs7
Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfTUlOX0xPRDogICAgICAgICAgICBzYW1wbGVyT2JqZWN0
LT5zZXRNaW5Mb2Qoc3RhdGljX2Nhc3Q8R0xmbG9hdD4ocGFyYW0pKTsgICAgICBicmVhazsKLSAg
ICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfTE9EOiAgICAgICAgICAgIHNhbXBsZXJPYmplY3QtPnNl
dE1heExvZChzdGF0aWNfY2FzdDxHTGZsb2F0PihwYXJhbSkpOyAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfTU9ERTogICAgICAgc2FtcGxlck9iamVjdC0+c2V0Q29t
cGFyZU1vZGUoc3RhdGljX2Nhc3Q8R0xlbnVtPihwYXJhbSkpOyAgYnJlYWs7Ci0gICAgICBjYXNl
IEdMX1RFWFRVUkVfQ09NUEFSRV9GVU5DOiAgICAgICBzYW1wbGVyT2JqZWN0LT5zZXRDb21wYXJl
RnVuYyhzdGF0aWNfY2FzdDxHTGVudW0+KHBhcmFtKSk7ICBicmVhazsKLSAgICAgIGRlZmF1bHQ6
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7IGJyZWFrOwotICAgIH0K
LSAgICAvLyBjbGFuZy1mb3JtYXQgb24KK3ZvaWQgQ29udGV4dDo6c2FtcGxlclBhcmFtZXRlcml2
KEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbSkKK3sKKyAg
ICBTYW1wbGVyICpzYW1wbGVyT2JqZWN0ID0KKyAgICAgICAgbVJlc291cmNlTWFuYWdlci0+Y2hl
Y2tTYW1wbGVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIHNhbXBsZXIpOworICAg
IFNldFNhbXBsZXJQYXJhbWV0ZXJpdihzYW1wbGVyT2JqZWN0LCBwbmFtZSwgcGFyYW0pOwogfQog
CiB2b2lkIENvbnRleHQ6OnNhbXBsZXJQYXJhbWV0ZXJmKEdMdWludCBzYW1wbGVyLCBHTGVudW0g
cG5hbWUsIEdMZmxvYXQgcGFyYW0pCiB7Ci0gICAgbVJlc291cmNlTWFuYWdlci0+Y2hlY2tTYW1w
bGVyQWxsb2NhdGlvbihzYW1wbGVyKTsKLQotICAgIFNhbXBsZXIgKnNhbXBsZXJPYmplY3QgPSBn
ZXRTYW1wbGVyKHNhbXBsZXIpOwotICAgIEFTU0VSVChzYW1wbGVyT2JqZWN0KTsKLQotICAgIC8v
IGNsYW5nLWZvcm1hdCBvZmYKLSAgICBzd2l0Y2ggKHBuYW1lKQotICAgIHsKLSAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9NSU5fRklMVEVSOiAgICAgICAgIHNhbXBsZXJPYmplY3QtPnNldE1pbkZpbHRl
cih1aXJvdW5kPEdMZW51bT4ocGFyYW0pKTsgICBicmVhazsKLSAgICAgIGNhc2UgR0xfVEVYVFVS
RV9NQUdfRklMVEVSOiAgICAgICAgIHNhbXBsZXJPYmplY3QtPnNldE1hZ0ZpbHRlcih1aXJvdW5k
PEdMZW51bT4ocGFyYW0pKTsgICBicmVhazsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1M6
ICAgICAgICAgICAgIHNhbXBsZXJPYmplY3QtPnNldFdyYXBTKHVpcm91bmQ8R0xlbnVtPihwYXJh
bSkpOyAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1Q6ICAgICAgICAg
ICAgIHNhbXBsZXJPYmplY3QtPnNldFdyYXBUKHVpcm91bmQ8R0xlbnVtPihwYXJhbSkpOyAgICAg
ICBicmVhazsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1I6ICAgICAgICAgICAgIHNhbXBs
ZXJPYmplY3QtPnNldFdyYXBSKHVpcm91bmQ8R0xlbnVtPihwYXJhbSkpOyAgICAgICBicmVhazsK
LSAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IHNhbXBsZXJPYmplY3Qt
PnNldE1heEFuaXNvdHJvcHkoc3RkOjptaW4ocGFyYW0sIGdldEV4dGVuc2lvbnMoKS5tYXhUZXh0
dXJlQW5pc290cm9weSkpOyBicmVhazsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9NSU5fTE9EOiAg
ICAgICAgICAgIHNhbXBsZXJPYmplY3QtPnNldE1pbkxvZChwYXJhbSk7ICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfTE9EOiAgICAgICAgICAg
IHNhbXBsZXJPYmplY3QtPnNldE1heExvZChwYXJhbSk7ICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX01PREU6ICAgICAgIHNhbXBsZXJP
YmplY3QtPnNldENvbXBhcmVNb2RlKHVpcm91bmQ8R0xlbnVtPihwYXJhbSkpOyBicmVhazsKLSAg
ICAgIGNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkM6ICAgICAgIHNhbXBsZXJPYmplY3QtPnNl
dENvbXBhcmVGdW5jKHVpcm91bmQ8R0xlbnVtPihwYXJhbSkpOyBicmVhazsKLSAgICAgIGRlZmF1
bHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7IGJyZWFrOwotICAg
IH0KLSAgICAvLyBjbGFuZy1mb3JtYXQgb24KKyAgICBTYW1wbGVyICpzYW1wbGVyT2JqZWN0ID0K
KyAgICAgICAgbVJlc291cmNlTWFuYWdlci0+Y2hlY2tTYW1wbGVyQWxsb2NhdGlvbihtSW1wbGVt
ZW50YXRpb24uZ2V0KCksIHNhbXBsZXIpOworICAgIFNldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBs
ZXJPYmplY3QsIHBuYW1lLCBwYXJhbSk7CiB9CiAKLUdMaW50IENvbnRleHQ6OmdldFNhbXBsZXJQ
YXJhbWV0ZXJpKEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUpCit2b2lkIENvbnRleHQ6OnNh
bXBsZXJQYXJhbWV0ZXJmdihHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZs
b2F0ICpwYXJhbSkKIHsKLSAgICBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja1NhbXBsZXJBbGxvY2F0
aW9uKHNhbXBsZXIpOwotCi0gICAgU2FtcGxlciAqc2FtcGxlck9iamVjdCA9IGdldFNhbXBsZXIo
c2FtcGxlcik7Ci0gICAgQVNTRVJUKHNhbXBsZXJPYmplY3QpOwotCi0gICAgLy8gY2xhbmctZm9y
bWF0IG9mZgotICAgIHN3aXRjaCAocG5hbWUpCi0gICAgewotICAgICAgY2FzZSBHTF9URVhUVVJF
X01JTl9GSUxURVI6ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMaW50PihzYW1wbGVyT2Jq
ZWN0LT5nZXRNaW5GaWx0ZXIoKSk7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUjog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0xpbnQ+KHNhbXBsZXJPYmplY3QtPmdldE1hZ0Zp
bHRlcigpKTsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1M6ICAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxHTGludD4oc2FtcGxlck9iamVjdC0+Z2V0V3JhcFMoKSk7Ci0gICAgICBj
YXNlIEdMX1RFWFRVUkVfV1JBUF9UOiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0xp
bnQ+KHNhbXBsZXJPYmplY3QtPmdldFdyYXBUKCkpOwotICAgICAgY2FzZSBHTF9URVhUVVJFX1dS
QVBfUjogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMaW50PihzYW1wbGVyT2JqZWN0
LT5nZXRXcmFwUigpKTsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6
IHJldHVybiBzdGF0aWNfY2FzdDxHTGludD4oc2FtcGxlck9iamVjdC0+Z2V0TWF4QW5pc290cm9w
eSgpKTsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9NSU5fTE9EOiAgICAgICAgICAgIHJldHVybiBp
cm91bmQ8R0xpbnQ+KHNhbXBsZXJPYmplY3QtPmdldE1pbkxvZCgpKTsKLSAgICAgIGNhc2UgR0xf
VEVYVFVSRV9NQVhfTE9EOiAgICAgICAgICAgIHJldHVybiBpcm91bmQ8R0xpbnQ+KHNhbXBsZXJP
YmplY3QtPmdldE1heExvZCgpKTsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX01PREU6
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTGludD4oc2FtcGxlck9iamVjdC0+Z2V0Q29tcGFy
ZU1vZGUoKSk7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQ09NUEFSRV9GVU5DOiAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8R0xpbnQ+KHNhbXBsZXJPYmplY3QtPmdldENvbXBhcmVGdW5jKCkpOwot
ICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsg
cmV0dXJuIDA7Ci0gICAgfQotICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorICAgIFNhbXBsZXIgKnNh
bXBsZXJPYmplY3QgPQorICAgICAgICBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja1NhbXBsZXJBbGxv
Y2F0aW9uKG1JbXBsZW1lbnRhdGlvbi5nZXQoKSwgc2FtcGxlcik7CisgICAgU2V0U2FtcGxlclBh
cmFtZXRlcmZ2KHNhbXBsZXJPYmplY3QsIHBuYW1lLCBwYXJhbSk7CiB9CiAKLUdMZmxvYXQgQ29u
dGV4dDo6Z2V0U2FtcGxlclBhcmFtZXRlcmYoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSkK
K3ZvaWQgQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFtZXRlcml2KEdMdWludCBzYW1wbGVyLCBHTGVu
dW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCiB7Ci0gICAgbVJlc291cmNlTWFuYWdlci0+Y2hlY2tT
YW1wbGVyQWxsb2NhdGlvbihzYW1wbGVyKTsKLQotICAgIFNhbXBsZXIgKnNhbXBsZXJPYmplY3Qg
PSBnZXRTYW1wbGVyKHNhbXBsZXIpOwotICAgIEFTU0VSVChzYW1wbGVyT2JqZWN0KTsKKyAgICBj
b25zdCBTYW1wbGVyICpzYW1wbGVyT2JqZWN0ID0KKyAgICAgICAgbVJlc291cmNlTWFuYWdlci0+
Y2hlY2tTYW1wbGVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIHNhbXBsZXIpOwor
ICAgIFF1ZXJ5U2FtcGxlclBhcmFtZXRlcml2KHNhbXBsZXJPYmplY3QsIHBuYW1lLCBwYXJhbXMp
OworfQogCi0gICAgLy8gY2xhbmctZm9ybWF0IG9mZgotICAgIHN3aXRjaCAocG5hbWUpCi0gICAg
ewotICAgICAgY2FzZSBHTF9URVhUVVJFX01JTl9GSUxURVI6ICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEdMZmxvYXQ+KHNhbXBsZXJPYmplY3QtPmdldE1pbkZpbHRlcigpKTsKLSAgICAgIGNh
c2UgR0xfVEVYVFVSRV9NQUdfRklMVEVSOiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTGZs
b2F0PihzYW1wbGVyT2JqZWN0LT5nZXRNYWdGaWx0ZXIoKSk7Ci0gICAgICBjYXNlIEdMX1RFWFRV
UkVfV1JBUF9TOiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0xmbG9hdD4oc2FtcGxl
ck9iamVjdC0+Z2V0V3JhcFMoKSk7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9UOiAgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0xmbG9hdD4oc2FtcGxlck9iamVjdC0+Z2V0V3Jh
cFQoKSk7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9SOiAgICAgICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8R0xmbG9hdD4oc2FtcGxlck9iamVjdC0+Z2V0V3JhcFIoKSk7Ci0gICAgICBj
YXNlIEdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOiByZXR1cm4gc2FtcGxlck9iamVjdC0+
Z2V0TWF4QW5pc290cm9weSgpOwotICAgICAgY2FzZSBHTF9URVhUVVJFX01JTl9MT0Q6ICAgICAg
ICAgICAgcmV0dXJuIHNhbXBsZXJPYmplY3QtPmdldE1pbkxvZCgpOwotICAgICAgY2FzZSBHTF9U
RVhUVVJFX01BWF9MT0Q6ICAgICAgICAgICAgcmV0dXJuIHNhbXBsZXJPYmplY3QtPmdldE1heExv
ZCgpOwotICAgICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfTU9ERTogICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEdMZmxvYXQ+KHNhbXBsZXJPYmplY3QtPmdldENvbXBhcmVNb2RlKCkpOwotICAg
ICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQzogICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEdMZmxvYXQ+KHNhbXBsZXJPYmplY3QtPmdldENvbXBhcmVGdW5jKCkpOwotICAgICAgZGVmYXVs
dDogICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsgcmV0dXJuIDA7Ci0g
ICAgfQotICAgIC8vIGNsYW5nLWZvcm1hdCBvbgordm9pZCBDb250ZXh0OjpnZXRTYW1wbGVyUGFy
YW1ldGVyZnYoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKQor
eworICAgIGNvbnN0IFNhbXBsZXIgKnNhbXBsZXJPYmplY3QgPQorICAgICAgICBtUmVzb3VyY2VN
YW5hZ2VyLT5jaGVja1NhbXBsZXJBbGxvY2F0aW9uKG1JbXBsZW1lbnRhdGlvbi5nZXQoKSwgc2Ft
cGxlcik7CisgICAgUXVlcnlTYW1wbGVyUGFyYW1ldGVyZnYoc2FtcGxlck9iamVjdCwgcG5hbWUs
IHBhcmFtcyk7CiB9CiAKIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVBhcmFtZXRlcmkoR0x1aW50IHBy
b2dyYW0sIEdMZW51bSBwbmFtZSwgR0xpbnQgdmFsdWUpCkBAIC0xOTc0LDMyICsyMjY2LDM2IEBA
IHZvaWQgQ29udGV4dDo6aW5pdFJlbmRlcmVyU3RyaW5nKCkKIHsKICAgICBzdGQ6Om9zdHJpbmdz
dHJlYW0gcmVuZGVyZXJTdHJpbmc7CiAgICAgcmVuZGVyZXJTdHJpbmcgPDwgIkFOR0xFICgiOwot
ICAgIHJlbmRlcmVyU3RyaW5nIDw8IG1SZW5kZXJlci0+Z2V0UmVuZGVyZXJEZXNjcmlwdGlvbigp
OworICAgIHJlbmRlcmVyU3RyaW5nIDw8IG1JbXBsZW1lbnRhdGlvbi0+Z2V0UmVuZGVyZXJEZXNj
cmlwdGlvbigpOwogICAgIHJlbmRlcmVyU3RyaW5nIDw8ICIpIjsKIAogICAgIG1SZW5kZXJlclN0
cmluZyA9IE1ha2VTdGF0aWNTdHJpbmcocmVuZGVyZXJTdHJpbmcuc3RyKCkpOwogfQogCi1jb25z
dCBzdGQ6OnN0cmluZyAmQ29udGV4dDo6Z2V0UmVuZGVyZXJTdHJpbmcoKSBjb25zdAorY29uc3Qg
Y2hhciAqQ29udGV4dDo6Z2V0UmVuZGVyZXJTdHJpbmcoKSBjb25zdAogewogICAgIHJldHVybiBt
UmVuZGVyZXJTdHJpbmc7CiB9CiAKIHZvaWQgQ29udGV4dDo6aW5pdEV4dGVuc2lvblN0cmluZ3Mo
KQogewotICAgIG1FeHRlbnNpb25TdHJpbmdzID0gbUV4dGVuc2lvbnMuZ2V0U3RyaW5ncygpOwor
ICAgIGZvciAoY29uc3QgYXV0byAmZXh0ZW5zaW9uU3RyaW5nIDogbUV4dGVuc2lvbnMuZ2V0U3Ry
aW5ncygpKQorICAgIHsKKyAgICAgICAgbUV4dGVuc2lvblN0cmluZ3MucHVzaF9iYWNrKE1ha2VT
dGF0aWNTdHJpbmcoZXh0ZW5zaW9uU3RyaW5nKSk7CisgICAgfQogCiAgICAgc3RkOjpvc3RyaW5n
c3RyZWFtIGNvbWJpbmVkU3RyaW5nU3RyZWFtOwotICAgIHN0ZDo6Y29weShtRXh0ZW5zaW9uU3Ry
aW5ncy5iZWdpbigpLCBtRXh0ZW5zaW9uU3RyaW5ncy5lbmQoKSwgc3RkOjpvc3RyZWFtX2l0ZXJh
dG9yPHN0ZDo6c3RyaW5nPihjb21iaW5lZFN0cmluZ1N0cmVhbSwgIiAiKSk7Ci0gICAgbUV4dGVu
c2lvblN0cmluZyA9IGNvbWJpbmVkU3RyaW5nU3RyZWFtLnN0cigpOworICAgIHN0ZDo6Y29weSht
RXh0ZW5zaW9uU3RyaW5ncy5iZWdpbigpLCBtRXh0ZW5zaW9uU3RyaW5ncy5lbmQoKSwKKyAgICAg
ICAgICAgICAgc3RkOjpvc3RyZWFtX2l0ZXJhdG9yPGNvbnN0IGNoYXIgKj4oY29tYmluZWRTdHJp
bmdTdHJlYW0sICIgIikpOworICAgIG1FeHRlbnNpb25TdHJpbmcgPSBNYWtlU3RhdGljU3RyaW5n
KGNvbWJpbmVkU3RyaW5nU3RyZWFtLnN0cigpKTsKIH0KIAotY29uc3Qgc3RkOjpzdHJpbmcgJkNv
bnRleHQ6OmdldEV4dGVuc2lvblN0cmluZygpIGNvbnN0Citjb25zdCBjaGFyICpDb250ZXh0Ojpn
ZXRFeHRlbnNpb25TdHJpbmcoKSBjb25zdAogewogICAgIHJldHVybiBtRXh0ZW5zaW9uU3RyaW5n
OwogfQogCi1jb25zdCBzdGQ6OnN0cmluZyAmQ29udGV4dDo6Z2V0RXh0ZW5zaW9uU3RyaW5nKHNp
emVfdCBpZHgpIGNvbnN0Citjb25zdCBjaGFyICpDb250ZXh0OjpnZXRFeHRlbnNpb25TdHJpbmco
c2l6ZV90IGlkeCkgY29uc3QKIHsKICAgICByZXR1cm4gbUV4dGVuc2lvblN0cmluZ3NbaWR4XTsK
IH0KQEAgLTIwMTEsMTEgKzIzMDcsMTEgQEAgc2l6ZV90IENvbnRleHQ6OmdldEV4dGVuc2lvblN0
cmluZ0NvdW50KAogCiB2b2lkIENvbnRleHQ6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0xlbnVt
IHByaW1pdGl2ZU1vZGUpCiB7Ci0gICAgVHJhbnNmb3JtRmVlZGJhY2sgKnRyYW5zZm9ybUZlZWRi
YWNrID0gZ2V0U3RhdGUoKS5nZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICBUcmFu
c2Zvcm1GZWVkYmFjayAqdHJhbnNmb3JtRmVlZGJhY2sgPSBtR0xTdGF0ZS5nZXRDdXJyZW50VHJh
bnNmb3JtRmVlZGJhY2soKTsKICAgICBBU1NFUlQodHJhbnNmb3JtRmVlZGJhY2sgIT0gbnVsbHB0
cik7CiAgICAgQVNTRVJUKCF0cmFuc2Zvcm1GZWVkYmFjay0+aXNQYXVzZWQoKSk7CiAKLSAgICB0
cmFuc2Zvcm1GZWVkYmFjay0+YmVnaW4ocHJpbWl0aXZlTW9kZSwgZ2V0U3RhdGUoKS5nZXRQcm9n
cmFtKCkpOworICAgIHRyYW5zZm9ybUZlZWRiYWNrLT5iZWdpbihwcmltaXRpdmVNb2RlLCBtR0xT
dGF0ZS5nZXRQcm9ncmFtKCkpOwogfQogCiBib29sIENvbnRleHQ6Omhhc0FjdGl2ZVRyYW5zZm9y
bUZlZWRiYWNrKEdMdWludCBwcm9ncmFtKSBjb25zdApAQCAtMjAzMCwyNiArMjMyNiwzNiBAQCBi
b29sIENvbnRleHQ6Omhhc0FjdGl2ZVRyYW5zZm9ybUZlZWRiYWNrCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIENvbnRleHQ6OmluaXRDYXBzKEdMdWludCBjbGllbnRWZXJzaW9uKQordm9p
ZCBDb250ZXh0Ojppbml0Q2Fwcyhib29sIHdlYkdMQ29udGV4dCkKIHsKLSAgICBtQ2FwcyA9IG1S
ZW5kZXJlci0+Z2V0UmVuZGVyZXJDYXBzKCk7CisgICAgbUNhcHMgPSBtSW1wbGVtZW50YXRpb24t
PmdldE5hdGl2ZUNhcHMoKTsKIAotICAgIG1FeHRlbnNpb25zID0gbVJlbmRlcmVyLT5nZXRSZW5k
ZXJlckV4dGVuc2lvbnMoKTsKKyAgICBtRXh0ZW5zaW9ucyA9IG1JbXBsZW1lbnRhdGlvbi0+Z2V0
TmF0aXZlRXh0ZW5zaW9ucygpOwogCi0gICAgbUxpbWl0YXRpb25zID0gbVJlbmRlcmVyLT5nZXRS
ZW5kZXJlckxpbWl0YXRpb25zKCk7CisgICAgbUxpbWl0YXRpb25zID0gbUltcGxlbWVudGF0aW9u
LT5nZXROYXRpdmVMaW1pdGF0aW9ucygpOwogCi0gICAgaWYgKGNsaWVudFZlcnNpb24gPCAzKQor
ICAgIGlmIChtQ2xpZW50TWFqb3JWZXJzaW9uIDwgMykKICAgICB7CiAgICAgICAgIC8vIERpc2Fi
bGUgRVMzKyBleHRlbnNpb25zCiAgICAgICAgIG1FeHRlbnNpb25zLmNvbG9yQnVmZmVyRmxvYXQg
PSBmYWxzZTsKKyAgICAgICAgbUV4dGVuc2lvbnMuZWdsSW1hZ2VFeHRlcm5hbEVzc2wzID0gZmFs
c2U7CisgICAgICAgIG1FeHRlbnNpb25zLnRleHR1cmVOb3JtMTYgICAgICAgICA9IGZhbHNlOwog
ICAgIH0KIAotICAgIGlmIChjbGllbnRWZXJzaW9uID4gMikKKyAgICBpZiAobUNsaWVudE1ham9y
VmVyc2lvbiA+IDIpCiAgICAgewogICAgICAgICAvLyBGSVhNRShnZW9mZmxhbmcpOiBEb24ndCBz
dXBwb3J0IEVYVF9zUkdCIGluIG5vbi1FUzIgY29udGV4dHMKICAgICAgICAgLy9tRXh0ZW5zaW9u
cy5zUkdCID0gZmFsc2U7CiAgICAgfQogCisgICAgLy8gU29tZSBleHRlbnNpb25zIGFyZSBhbHdh
eXMgYXZhaWxhYmxlIGJlY2F1c2UgdGhleSBhcmUgaW1wbGVtZW50ZWQgaW4gdGhlIEdMIGxheWVy
LgorICAgIG1FeHRlbnNpb25zLmJpbmRVbmlmb3JtTG9jYXRpb24gPSB0cnVlOworICAgIG1FeHRl
bnNpb25zLnZlcnRleEFycmF5T2JqZWN0ICAgPSB0cnVlOworICAgIG1FeHRlbnNpb25zLmJpbmRH
ZW5lcmF0ZXNSZXNvdXJjZSA9IHRydWU7CisKKyAgICAvLyBFbmFibGUgdGhlIG5vIGVycm9yIGV4
dGVuc2lvbiBpZiB0aGUgY29udGV4dCB3YXMgY3JlYXRlZCB3aXRoIHRoZSBmbGFnLgorICAgIG1F
eHRlbnNpb25zLm5vRXJyb3IgPSBtU2tpcFZhbGlkYXRpb247CisKICAgICAvLyBFeHBsaWNpdGx5
IGVuYWJsZSBHTF9LSFJfZGVidWcKICAgICBtRXh0ZW5zaW9ucy5kZWJ1ZyAgICAgICAgICAgICAg
ICAgICA9IHRydWU7CiAgICAgbUV4dGVuc2lvbnMubWF4RGVidWdNZXNzYWdlTGVuZ3RoICAgPSAx
MDI0OwpAQCAtMjA1Nyw2ICsyMzYzLDkgQEAgdm9pZCBDb250ZXh0Ojppbml0Q2FwcyhHTHVpbnQg
Y2xpZW50VmVycwogICAgIG1FeHRlbnNpb25zLm1heERlYnVnR3JvdXBTdGFja0RlcHRoID0gMTAy
NDsKICAgICBtRXh0ZW5zaW9ucy5tYXhMYWJlbExlbmd0aCAgICAgICAgICA9IDEwMjQ7CiAKKyAg
ICAvLyBFeHBsaWNpdGx5IGVuYWJsZSBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQorICAg
IG1FeHRlbnNpb25zLnJvYnVzdENsaWVudE1lbW9yeSA9IHRydWU7CisKICAgICAvLyBBcHBseSBp
bXBsZW1lbnRhdGlvbiBsaW1pdHMKICAgICBtQ2Fwcy5tYXhWZXJ0ZXhBdHRyaWJ1dGVzID0gc3Rk
OjptaW48R0x1aW50PihtQ2Fwcy5tYXhWZXJ0ZXhBdHRyaWJ1dGVzLCBNQVhfVkVSVEVYX0FUVFJJ
QlMpOwogICAgIG1DYXBzLm1heFZlcnRleFVuaWZvcm1CbG9ja3MgPSBzdGQ6Om1pbjxHTHVpbnQ+
KG1DYXBzLm1heFZlcnRleFVuaWZvcm1CbG9ja3MsIElNUExFTUVOVEFUSU9OX01BWF9WRVJURVhf
U0hBREVSX1VOSUZPUk1fQlVGRkVSUyk7CkBAIC0yMDY0LDkgKzIzNzMsMjcgQEAgdm9pZCBDb250
ZXh0Ojppbml0Q2FwcyhHTHVpbnQgY2xpZW50VmVycwogCiAgICAgbUNhcHMubWF4RnJhZ21lbnRJ
bnB1dENvbXBvbmVudHMgPSBzdGQ6Om1pbjxHTHVpbnQ+KG1DYXBzLm1heEZyYWdtZW50SW5wdXRD
b21wb25lbnRzLCBJTVBMRU1FTlRBVElPTl9NQVhfVkFSWUlOR19WRUNUT1JTICogNCk7CiAKKyAg
ICAvLyBXZWJHTCBjb21wYXRpYmlsaXR5CisgICAgbUV4dGVuc2lvbnMud2ViZ2xDb21wYXRpYmls
aXR5ID0gd2ViR0xDb250ZXh0OworICAgIGZvciAoY29uc3QgYXV0byAmZXh0ZW5zaW9uSW5mbyA6
IEdldEV4dGVuc2lvbkluZm9NYXAoKSkKKyAgICB7CisgICAgICAgIC8vIElmIHRoaXMgY29udGV4
dCBpcyBmb3IgV2ViR0wsIGRpc2FibGUgYWxsIGVuYWJsZWFibGUgZXh0ZW5zaW9ucworICAgICAg
ICBpZiAod2ViR0xDb250ZXh0ICYmIGV4dGVuc2lvbkluZm8uc2Vjb25kLkVuYWJsZWFibGUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1FeHRlbnNpb25zLiooZXh0ZW5zaW9uSW5mby5zZWNvbmQu
RXh0ZW5zaW9uc01lbWJlcikgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEdl
bmVyYXRlIHRleHR1cmUgY2FwcworICAgIHVwZGF0ZUNhcHMoKTsKK30KKwordm9pZCBDb250ZXh0
Ojp1cGRhdGVDYXBzKCkKK3sKICAgICBtQ2Fwcy5jb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMuY2xl
YXIoKTsKKyAgICBtVGV4dHVyZUNhcHMuY2xlYXIoKTsKIAotICAgIGNvbnN0IFRleHR1cmVDYXBz
TWFwICZyZW5kZXJlckZvcm1hdHMgPSBtUmVuZGVyZXItPmdldFJlbmRlcmVyVGV4dHVyZUNhcHMo
KTsKKyAgICBjb25zdCBUZXh0dXJlQ2Fwc01hcCAmcmVuZGVyZXJGb3JtYXRzID0gbUltcGxlbWVu
dGF0aW9uLT5nZXROYXRpdmVUZXh0dXJlQ2FwcygpOwogICAgIGZvciAoVGV4dHVyZUNhcHNNYXA6
OmNvbnN0X2l0ZXJhdG9yIGkgPSByZW5kZXJlckZvcm1hdHMuYmVnaW4oKTsgaSAhPSByZW5kZXJl
ckZvcm1hdHMuZW5kKCk7IGkrKykKICAgICB7CiAgICAgICAgIEdMZW51bSBmb3JtYXQgPSBpLT5m
aXJzdDsKQEAgLTIwNzgsMTEgKzI0MDUsMTEgQEAgdm9pZCBDb250ZXh0Ojppbml0Q2FwcyhHTHVp
bnQgY2xpZW50VmVycwogICAgICAgICAvLyBDYXBzIGFyZSBBTkQnZCB3aXRoIHRoZSByZW5kZXJl
ciBjYXBzIGJlY2F1c2Ugc29tZSBjb3JlIGZvcm1hdHMgYXJlIHN0aWxsIHVuc3VwcG9ydGVkIGlu
CiAgICAgICAgIC8vIEVTMy4KICAgICAgICAgZm9ybWF0Q2Fwcy50ZXh0dXJhYmxlID0KLSAgICAg
ICAgICAgIGZvcm1hdENhcHMudGV4dHVyYWJsZSAmJiBmb3JtYXRJbmZvLnRleHR1cmVTdXBwb3J0
KGNsaWVudFZlcnNpb24sIG1FeHRlbnNpb25zKTsKKyAgICAgICAgICAgIGZvcm1hdENhcHMudGV4
dHVyYWJsZSAmJiBmb3JtYXRJbmZvLnRleHR1cmVTdXBwb3J0KG1DbGllbnRNYWpvclZlcnNpb24s
IG1FeHRlbnNpb25zKTsKICAgICAgICAgZm9ybWF0Q2Fwcy5yZW5kZXJhYmxlID0KLSAgICAgICAg
ICAgIGZvcm1hdENhcHMucmVuZGVyYWJsZSAmJiBmb3JtYXRJbmZvLnJlbmRlclN1cHBvcnQoY2xp
ZW50VmVyc2lvbiwgbUV4dGVuc2lvbnMpOworICAgICAgICAgICAgZm9ybWF0Q2Fwcy5yZW5kZXJh
YmxlICYmIGZvcm1hdEluZm8ucmVuZGVyU3VwcG9ydChtQ2xpZW50TWFqb3JWZXJzaW9uLCBtRXh0
ZW5zaW9ucyk7CiAgICAgICAgIGZvcm1hdENhcHMuZmlsdGVyYWJsZSA9Ci0gICAgICAgICAgICBm
b3JtYXRDYXBzLmZpbHRlcmFibGUgJiYgZm9ybWF0SW5mby5maWx0ZXJTdXBwb3J0KGNsaWVudFZl
cnNpb24sIG1FeHRlbnNpb25zKTsKKyAgICAgICAgICAgIGZvcm1hdENhcHMuZmlsdGVyYWJsZSAm
JiBmb3JtYXRJbmZvLmZpbHRlclN1cHBvcnQobUNsaWVudE1ham9yVmVyc2lvbiwgbUV4dGVuc2lv
bnMpOwogCiAgICAgICAgIC8vIE9wZW5HTCBFUyBkb2VzIG5vdCBzdXBwb3J0IG11bHRpc2FtcGxp
bmcgd2l0aCBpbnRlZ2VyIGZvcm1hdHMKICAgICAgICAgaWYgKCFmb3JtYXRJbmZvLnJlbmRlclN1
cHBvcnQgfHwgZm9ybWF0SW5mby5jb21wb25lbnRUeXBlID09IEdMX0lOVCB8fCBmb3JtYXRJbmZv
LmNvbXBvbmVudFR5cGUgPT0gR0xfVU5TSUdORURfSU5UKQpAQCAtMjA5OSwyMiArMjQyNiwyOSBA
QCB2b2lkIENvbnRleHQ6OmluaXRDYXBzKEdMdWludCBjbGllbnRWZXJzCiAgICAgfQogfQogCit2
b2lkIENvbnRleHQ6OmluaXRXb3JrYXJvdW5kcygpCit7CisgICAgLy8gTG9zZSB0aGUgY29udGV4
dCB1cG9uIG91dCBvZiBtZW1vcnkgZXJyb3IgaWYgdGhlIGFwcGxpY2F0aW9uIGlzCisgICAgLy8g
ZXhwZWN0aW5nIHRvIHdhdGNoIGZvciB0aG9zZSBldmVudHMuCisgICAgbVdvcmthcm91bmRzLmxv
c2VDb250ZXh0T25PdXRPZk1lbW9yeSA9IChtUmVzZXRTdHJhdGVneSA9PSBHTF9MT1NFX0NPTlRF
WFRfT05fUkVTRVRfRVhUKTsKK30KKwogdm9pZCBDb250ZXh0OjpzeW5jUmVuZGVyZXJTdGF0ZSgp
CiB7Ci0gICAgY29uc3QgU3RhdGU6OkRpcnR5Qml0cyAmZGlydHlCaXRzID0gbVN0YXRlLmdldERp
cnR5Qml0cygpOwotICAgIG1SZW5kZXJlci0+c3luY1N0YXRlKG1TdGF0ZSwgZGlydHlCaXRzKTsK
LSAgICBtU3RhdGUuY2xlYXJEaXJ0eUJpdHMoKTsKLSAgICBtU3RhdGUuc3luY0RpcnR5T2JqZWN0
cygpOworICAgIGNvbnN0IFN0YXRlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cyA9IG1HTFN0YXRlLmdl
dERpcnR5Qml0cygpOworICAgIG1JbXBsZW1lbnRhdGlvbi0+c3luY1N0YXRlKG1HTFN0YXRlLCBk
aXJ0eUJpdHMpOworICAgIG1HTFN0YXRlLmNsZWFyRGlydHlCaXRzKCk7CisgICAgbUdMU3RhdGUu
c3luY0RpcnR5T2JqZWN0cygpOwogfQogCiB2b2lkIENvbnRleHQ6OnN5bmNSZW5kZXJlclN0YXRl
KGNvbnN0IFN0YXRlOjpEaXJ0eUJpdHMgJmJpdE1hc2ssCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFN0YXRlOjpEaXJ0eU9iamVjdHMgJm9iamVjdE1hc2spCiB7Ci0gICAg
Y29uc3QgU3RhdGU6OkRpcnR5Qml0cyAmZGlydHlCaXRzID0gKG1TdGF0ZS5nZXREaXJ0eUJpdHMo
KSAmIGJpdE1hc2spOwotICAgIG1SZW5kZXJlci0+c3luY1N0YXRlKG1TdGF0ZSwgZGlydHlCaXRz
KTsKLSAgICBtU3RhdGUuY2xlYXJEaXJ0eUJpdHMoZGlydHlCaXRzKTsKKyAgICBjb25zdCBTdGF0
ZTo6RGlydHlCaXRzICZkaXJ0eUJpdHMgPSAobUdMU3RhdGUuZ2V0RGlydHlCaXRzKCkgJiBiaXRN
YXNrKTsKKyAgICBtSW1wbGVtZW50YXRpb24tPnN5bmNTdGF0ZShtR0xTdGF0ZSwgZGlydHlCaXRz
KTsKKyAgICBtR0xTdGF0ZS5jbGVhckRpcnR5Qml0cyhkaXJ0eUJpdHMpOwogCi0gICAgbVN0YXRl
LnN5bmNEaXJ0eU9iamVjdHMob2JqZWN0TWFzayk7CisgICAgbUdMU3RhdGUuc3luY0RpcnR5T2Jq
ZWN0cyhvYmplY3RNYXNrKTsKIH0KIAogdm9pZCBDb250ZXh0OjpibGl0RnJhbWVidWZmZXIoR0xp
bnQgc3JjWDAsCkBAIC0yMTI4LDEwICsyNDYyLDcgQEAgdm9pZCBDb250ZXh0OjpibGl0RnJhbWVi
dWZmZXIoR0xpbnQgc3JjWAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVs
ZCBtYXNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbHRlcikKIHsK
LSAgICBGcmFtZWJ1ZmZlciAqcmVhZEZyYW1lYnVmZmVyID0gbVN0YXRlLmdldFJlYWRGcmFtZWJ1
ZmZlcigpOwotICAgIEFTU0VSVChyZWFkRnJhbWVidWZmZXIpOwotCi0gICAgRnJhbWVidWZmZXIg
KmRyYXdGcmFtZWJ1ZmZlciA9IG1TdGF0ZS5nZXREcmF3RnJhbWVidWZmZXIoKTsKKyAgICBGcmFt
ZWJ1ZmZlciAqZHJhd0ZyYW1lYnVmZmVyID0gbUdMU3RhdGUuZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7
CiAgICAgQVNTRVJUKGRyYXdGcmFtZWJ1ZmZlcik7CiAKICAgICBSZWN0YW5nbGUgc3JjQXJlYShz
cmNYMCwgc3JjWTAsIHNyY1gxIC0gc3JjWDAsIHNyY1kxIC0gc3JjWTApOwpAQCAtMjEzOSw2MSAr
MjQ3MCwzOSBAQCB2b2lkIENvbnRleHQ6OmJsaXRGcmFtZWJ1ZmZlcihHTGludCBzcmNYCiAKICAg
ICBzeW5jU3RhdGVGb3JCbGl0KCk7CiAKLSAgICBFcnJvciBlcnJvciA9IGRyYXdGcmFtZWJ1ZmZl
ci0+YmxpdChtU3RhdGUsIHNyY0FyZWEsIGRzdEFyZWEsIG1hc2ssIGZpbHRlciwgcmVhZEZyYW1l
YnVmZmVyKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmVjb3Jk
RXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGhhbmRsZUVycm9yKGRy
YXdGcmFtZWJ1ZmZlci0+YmxpdChtSW1wbGVtZW50YXRpb24uZ2V0KCksIHNyY0FyZWEsIGRzdEFy
ZWEsIG1hc2ssIGZpbHRlcikpOwogfQogCiB2b2lkIENvbnRleHQ6OmNsZWFyKEdMYml0ZmllbGQg
bWFzaykKIHsKICAgICBzeW5jU3RhdGVGb3JDbGVhcigpOwotCi0gICAgRXJyb3IgZXJyb3IgPSBt
U3RhdGUuZ2V0RHJhd0ZyYW1lYnVmZmVyKCktPmNsZWFyKG1EYXRhLCBtYXNrKTsKLSAgICBpZiAo
ZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmVjb3JkRXJyb3IoZXJyb3IpOwotICAg
IH0KKyAgICBoYW5kbGVFcnJvcihtR0xTdGF0ZS5nZXREcmF3RnJhbWVidWZmZXIoKS0+Y2xlYXIo
bUltcGxlbWVudGF0aW9uLmdldCgpLCBtYXNrKSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6Y2xlYXJC
dWZmZXJmdihHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHTGZsb2F0ICp2
YWx1ZXMpCiB7CiAgICAgc3luY1N0YXRlRm9yQ2xlYXIoKTsKLQotICAgIEVycm9yIGVycm9yID0g
bVN0YXRlLmdldERyYXdGcmFtZWJ1ZmZlcigpLT5jbGVhckJ1ZmZlcmZ2KG1EYXRhLCBidWZmZXIs
IGRyYXdidWZmZXIsIHZhbHVlcyk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0g
ICAgICAgIHJlY29yZEVycm9yKGVycm9yKTsKLSAgICB9CisgICAgaGFuZGxlRXJyb3IobUdMU3Rh
dGUuZ2V0RHJhd0ZyYW1lYnVmZmVyKCktPmNsZWFyQnVmZmVyZnYobUltcGxlbWVudGF0aW9uLmdl
dCgpLCBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZHJhd2J1ZmZlciwgdmFsdWVzKSk7CiB9CiAKIHZvaWQgQ29udGV4
dDo6Y2xlYXJCdWZmZXJ1aXYoR0xlbnVtIGJ1ZmZlciwgR0xpbnQgZHJhd2J1ZmZlciwgY29uc3Qg
R0x1aW50ICp2YWx1ZXMpCiB7CiAgICAgc3luY1N0YXRlRm9yQ2xlYXIoKTsKLQotICAgIEVycm9y
IGVycm9yID0gbVN0YXRlLmdldERyYXdGcmFtZWJ1ZmZlcigpLT5jbGVhckJ1ZmZlcnVpdihtRGF0
YSwgYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
Ci0gICAgewotICAgICAgICByZWNvcmRFcnJvcihlcnJvcik7Ci0gICAgfQorICAgIGhhbmRsZUVy
cm9yKG1HTFN0YXRlLmdldERyYXdGcmFtZWJ1ZmZlcigpLT5jbGVhckJ1ZmZlcnVpdihtSW1wbGVt
ZW50YXRpb24uZ2V0KCksIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd2J1ZmZlciwgdmFsdWVzKSk7CiB9CiAK
IHZvaWQgQ29udGV4dDo6Y2xlYXJCdWZmZXJpdihHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVm
ZmVyLCBjb25zdCBHTGludCAqdmFsdWVzKQogewogICAgIHN5bmNTdGF0ZUZvckNsZWFyKCk7Ci0K
LSAgICBFcnJvciBlcnJvciA9IG1TdGF0ZS5nZXREcmF3RnJhbWVidWZmZXIoKS0+Y2xlYXJCdWZm
ZXJpdihtRGF0YSwgYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMpOwotICAgIGlmIChlcnJvci5p
c0Vycm9yKCkpCi0gICAgewotICAgICAgICByZWNvcmRFcnJvcihlcnJvcik7Ci0gICAgfQorICAg
IGhhbmRsZUVycm9yKG1HTFN0YXRlLmdldERyYXdGcmFtZWJ1ZmZlcigpLT5jbGVhckJ1ZmZlcml2
KG1JbXBsZW1lbnRhdGlvbi5nZXQoKSwgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdidWZmZXIsIHZhbHVlcykp
OwogfQogCiB2b2lkIENvbnRleHQ6OmNsZWFyQnVmZmVyZmkoR0xlbnVtIGJ1ZmZlciwgR0xpbnQg
ZHJhd2J1ZmZlciwgR0xmbG9hdCBkZXB0aCwgR0xpbnQgc3RlbmNpbCkKIHsKLSAgICBGcmFtZWJ1
ZmZlciAqZnJhbWVidWZmZXJPYmplY3QgPSBtU3RhdGUuZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7Cisg
ICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyT2JqZWN0ID0gbUdMU3RhdGUuZ2V0RHJhd0ZyYW1l
YnVmZmVyKCk7CiAgICAgQVNTRVJUKGZyYW1lYnVmZmVyT2JqZWN0KTsKIAogICAgIC8vIElmIGEg
YnVmZmVyIGlzIG5vdCBwcmVzZW50LCB0aGUgY2xlYXIgaGFzIG5vIGVmZmVjdApAQCAtMjIwNCwx
MiArMjUxMyw4IEBAIHZvaWQgQ29udGV4dDo6Y2xlYXJCdWZmZXJmaShHTGVudW0gYnVmZmUKICAg
ICB9CiAKICAgICBzeW5jU3RhdGVGb3JDbGVhcigpOwotCi0gICAgRXJyb3IgZXJyb3IgPSBmcmFt
ZWJ1ZmZlck9iamVjdC0+Y2xlYXJCdWZmZXJmaShtRGF0YSwgYnVmZmVyLCBkcmF3YnVmZmVyLCBk
ZXB0aCwgc3RlbmNpbCk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAg
IHJlY29yZEVycm9yKGVycm9yKTsKLSAgICB9CisgICAgaGFuZGxlRXJyb3IoZnJhbWVidWZmZXJP
YmplY3QtPmNsZWFyQnVmZmVyZmkobUltcGxlbWVudGF0aW9uLmdldCgpLCBidWZmZXIsIGRyYXdi
dWZmZXIsIGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZW5jaWwpKTsKIH0KIAogdm9pZCBDb250ZXh0OjpyZWFkUGl4ZWxzKEdMaW50IHgs
CkBAIC0yMjIwLDE3ICsyNTI1LDE4IEBAIHZvaWQgQ29udGV4dDo6cmVhZFBpeGVscyhHTGludCB4
LAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdm9pZCAqcGl4ZWxzKQogeworICAgIGlmICh3aWR0aCA9PSAwIHx8IGhlaWdo
dCA9PSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIHN5bmNTdGF0ZUZv
clJlYWRQaXhlbHMoKTsKIAotICAgIEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlck9iamVjdCA9IG1T
dGF0ZS5nZXRSZWFkRnJhbWVidWZmZXIoKTsKKyAgICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXJP
YmplY3QgPSBtR0xTdGF0ZS5nZXRSZWFkRnJhbWVidWZmZXIoKTsKICAgICBBU1NFUlQoZnJhbWVi
dWZmZXJPYmplY3QpOwogCiAgICAgUmVjdGFuZ2xlIGFyZWEoeCwgeSwgd2lkdGgsIGhlaWdodCk7
Ci0gICAgRXJyb3IgZXJyb3IgPSBmcmFtZWJ1ZmZlck9iamVjdC0+cmVhZFBpeGVscyhtU3RhdGUs
IGFyZWEsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQot
ICAgIHsKLSAgICAgICAgcmVjb3JkRXJyb3IoZXJyb3IpOwotICAgIH0KKyAgICBoYW5kbGVFcnJv
cihmcmFtZWJ1ZmZlck9iamVjdC0+cmVhZFBpeGVscyhtSW1wbGVtZW50YXRpb24uZ2V0KCksIGFy
ZWEsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6Y29weVRleElt
YWdlMkQoR0xlbnVtIHRhcmdldCwKQEAgLTIyNDMsMTggKzI1NDksMTQgQEAgdm9pZCBDb250ZXh0
Ojpjb3B5VGV4SW1hZ2UyRChHTGVudW0gdGFyZwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBib3JkZXIpCiB7CiAgICAgLy8gT25seSBzeW5jIHRoZSByZWFkIEZCTwotICAgIG1T
dGF0ZS5zeW5jRGlydHlPYmplY3QoR0xfUkVBRF9GUkFNRUJVRkZFUik7CisgICAgbUdMU3RhdGUu
c3luY0RpcnR5T2JqZWN0KEdMX1JFQURfRlJBTUVCVUZGRVIpOwogCiAgICAgUmVjdGFuZ2xlIHNv
dXJjZUFyZWEoeCwgeSwgd2lkdGgsIGhlaWdodCk7CiAKLSAgICBjb25zdCBGcmFtZWJ1ZmZlciAq
ZnJhbWVidWZmZXIgPSBtU3RhdGUuZ2V0UmVhZEZyYW1lYnVmZmVyKCk7CisgICAgY29uc3QgRnJh
bWVidWZmZXIgKmZyYW1lYnVmZmVyID0gbUdMU3RhdGUuZ2V0UmVhZEZyYW1lYnVmZmVyKCk7CiAg
ICAgVGV4dHVyZSAqdGV4dHVyZSA9CiAgICAgICAgIGdldFRhcmdldFRleHR1cmUoSXNDdWJlTWFw
VGV4dHVyZVRhcmdldCh0YXJnZXQpID8gR0xfVEVYVFVSRV9DVUJFX01BUCA6IHRhcmdldCk7Ci0g
ICAgRXJyb3IgZXJyb3IgPSB0ZXh0dXJlLT5jb3B5SW1hZ2UodGFyZ2V0LCBsZXZlbCwgc291cmNl
QXJlYSwgaW50ZXJuYWxmb3JtYXQsIGZyYW1lYnVmZmVyKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJv
cigpKQotICAgIHsKLSAgICAgICAgcmVjb3JkRXJyb3IoZXJyb3IpOwotICAgIH0KKyAgICBoYW5k
bGVFcnJvcih0ZXh0dXJlLT5jb3B5SW1hZ2UodGFyZ2V0LCBsZXZlbCwgc291cmNlQXJlYSwgaW50
ZXJuYWxmb3JtYXQsIGZyYW1lYnVmZmVyKSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6Y29weVRleFN1
YkltYWdlMkQoR0xlbnVtIHRhcmdldCwKQEAgLTIyNjYsMjAgKzI1NjgsMjEgQEAgdm9pZCBDb250
ZXh0Ojpjb3B5VGV4U3ViSW1hZ2UyRChHTGVudW0gdAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGhlaWdodCkKIHsKKyAgICBpZiAod2lkdGggPT0gMCB8fCBoZWlnaHQgPT0gMCkKKyAg
ICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyBPbmx5IHN5bmMgdGhlIHJlYWQg
RkJPCi0gICAgbVN0YXRlLnN5bmNEaXJ0eU9iamVjdChHTF9SRUFEX0ZSQU1FQlVGRkVSKTsKKyAg
ICBtR0xTdGF0ZS5zeW5jRGlydHlPYmplY3QoR0xfUkVBRF9GUkFNRUJVRkZFUik7CiAKICAgICBP
ZmZzZXQgZGVzdE9mZnNldCh4b2Zmc2V0LCB5b2Zmc2V0LCAwKTsKICAgICBSZWN0YW5nbGUgc291
cmNlQXJlYSh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKIAotICAgIGNvbnN0IEZyYW1lYnVmZmVyICpm
cmFtZWJ1ZmZlciA9IG1TdGF0ZS5nZXRSZWFkRnJhbWVidWZmZXIoKTsKKyAgICBjb25zdCBGcmFt
ZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBtR0xTdGF0ZS5nZXRSZWFkRnJhbWVidWZmZXIoKTsKICAg
ICBUZXh0dXJlICp0ZXh0dXJlID0KICAgICAgICAgZ2V0VGFyZ2V0VGV4dHVyZShJc0N1YmVNYXBU
ZXh0dXJlVGFyZ2V0KHRhcmdldCkgPyBHTF9URVhUVVJFX0NVQkVfTUFQIDogdGFyZ2V0KTsKLSAg
ICBFcnJvciBlcnJvciA9IHRleHR1cmUtPmNvcHlTdWJJbWFnZSh0YXJnZXQsIGxldmVsLCBkZXN0
T2Zmc2V0LCBzb3VyY2VBcmVhLCBmcmFtZWJ1ZmZlcik7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3Io
KSkKLSAgICB7Ci0gICAgICAgIHJlY29yZEVycm9yKGVycm9yKTsKLSAgICB9CisgICAgaGFuZGxl
RXJyb3IodGV4dHVyZS0+Y29weVN1YkltYWdlKHRhcmdldCwgbGV2ZWwsIGRlc3RPZmZzZXQsIHNv
dXJjZUFyZWEsIGZyYW1lYnVmZmVyKSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6Y29weVRleFN1Yklt
YWdlM0QoR0xlbnVtIHRhcmdldCwKQEAgLTIyOTIsMTkgKzI1OTUsMjAgQEAgdm9pZCBDb250ZXh0
Ojpjb3B5VGV4U3ViSW1hZ2UzRChHTGVudW0gdAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGhlaWdodCkKIHsKKyAgICBpZiAod2lkdGggPT0gMCB8fCBoZWlnaHQgPT0gMCkKKyAgICB7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyBPbmx5IHN5bmMgdGhlIHJlYWQgRkJP
Ci0gICAgbVN0YXRlLnN5bmNEaXJ0eU9iamVjdChHTF9SRUFEX0ZSQU1FQlVGRkVSKTsKKyAgICBt
R0xTdGF0ZS5zeW5jRGlydHlPYmplY3QoR0xfUkVBRF9GUkFNRUJVRkZFUik7CiAKICAgICBPZmZz
ZXQgZGVzdE9mZnNldCh4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0KTsKICAgICBSZWN0YW5nbGUg
c291cmNlQXJlYSh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKIAotICAgIGNvbnN0IEZyYW1lYnVmZmVy
ICpmcmFtZWJ1ZmZlciA9IG1TdGF0ZS5nZXRSZWFkRnJhbWVidWZmZXIoKTsKKyAgICBjb25zdCBG
cmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBtR0xTdGF0ZS5nZXRSZWFkRnJhbWVidWZmZXIoKTsK
ICAgICBUZXh0dXJlICp0ZXh0dXJlICAgICAgICAgICAgICAgPSBnZXRUYXJnZXRUZXh0dXJlKHRh
cmdldCk7Ci0gICAgRXJyb3IgZXJyb3IgPSB0ZXh0dXJlLT5jb3B5U3ViSW1hZ2UodGFyZ2V0LCBs
ZXZlbCwgZGVzdE9mZnNldCwgc291cmNlQXJlYSwgZnJhbWVidWZmZXIpOwotICAgIGlmIChlcnJv
ci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZWNvcmRFcnJvcihlcnJvcik7Ci0gICAgfQor
ICAgIGhhbmRsZUVycm9yKHRleHR1cmUtPmNvcHlTdWJJbWFnZSh0YXJnZXQsIGxldmVsLCBkZXN0
T2Zmc2V0LCBzb3VyY2VBcmVhLCBmcmFtZWJ1ZmZlcikpOwogfQogCiB2b2lkIENvbnRleHQ6OmZy
YW1lYnVmZmVyVGV4dHVyZTJEKEdMZW51bSB0YXJnZXQsCkBAIC0yMzEzLDcgKzI2MTcsNyBAQCB2
b2lkIENvbnRleHQ6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMZW51CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCB0ZXh0dXJlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsZXZlbCkKIHsKLSAgICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZm
ZXIgPSBtU3RhdGUuZ2V0VGFyZ2V0RnJhbWVidWZmZXIodGFyZ2V0KTsKKyAgICBGcmFtZWJ1ZmZl
ciAqZnJhbWVidWZmZXIgPSBtR0xTdGF0ZS5nZXRUYXJnZXRGcmFtZWJ1ZmZlcih0YXJnZXQpOwog
ICAgIEFTU0VSVChmcmFtZWJ1ZmZlcik7CiAKICAgICBpZiAodGV4dHVyZSAhPSAwKQpAQCAtMjMz
OSw3ICsyNjQzLDcgQEAgdm9pZCBDb250ZXh0OjpmcmFtZWJ1ZmZlclRleHR1cmUyRChHTGVudQog
ICAgICAgICBmcmFtZWJ1ZmZlci0+cmVzZXRBdHRhY2htZW50KGF0dGFjaG1lbnQpOwogICAgIH0K
IAotICAgIG1TdGF0ZS5zZXRPYmplY3REaXJ0eSh0YXJnZXQpOworICAgIG1HTFN0YXRlLnNldE9i
amVjdERpcnR5KHRhcmdldCk7CiB9CiAKIHZvaWQgQ29udGV4dDo6ZnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIoR0xlbnVtIHRhcmdldCwKQEAgLTIzNDcsNyArMjY1MSw3IEBAIHZvaWQgQ29udGV4dDo6
ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0wKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IHJlbmRlcmJ1ZmZlcikKIHsKLSAgICBGcmFtZWJ1ZmZl
ciAqZnJhbWVidWZmZXIgPSBtU3RhdGUuZ2V0VGFyZ2V0RnJhbWVidWZmZXIodGFyZ2V0KTsKKyAg
ICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBtR0xTdGF0ZS5nZXRUYXJnZXRGcmFtZWJ1ZmZl
cih0YXJnZXQpOwogICAgIEFTU0VSVChmcmFtZWJ1ZmZlcik7CiAKICAgICBpZiAocmVuZGVyYnVm
ZmVyICE9IDApCkBAIC0yMzYxLDcgKzI2NjUsNyBAQCB2b2lkIENvbnRleHQ6OmZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyKEdMCiAgICAgICAgIGZyYW1lYnVmZmVyLT5yZXNldEF0dGFjaG1lbnQoYXR0
YWNobWVudCk7CiAgICAgfQogCi0gICAgbVN0YXRlLnNldE9iamVjdERpcnR5KHRhcmdldCk7Cisg
ICAgbUdMU3RhdGUuc2V0T2JqZWN0RGlydHkodGFyZ2V0KTsKIH0KIAogdm9pZCBDb250ZXh0Ojpm
cmFtZWJ1ZmZlclRleHR1cmVMYXllcihHTGVudW0gdGFyZ2V0LApAQCAtMjM3MCw3ICsyNjc0LDcg
QEAgdm9pZCBDb250ZXh0OjpmcmFtZWJ1ZmZlclRleHR1cmVMYXllcihHTAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGF5ZXIpCiB7Ci0gICAgRnJhbWVidWZmZXIgKmZy
YW1lYnVmZmVyID0gbVN0YXRlLmdldFRhcmdldEZyYW1lYnVmZmVyKHRhcmdldCk7CisgICAgRnJh
bWVidWZmZXIgKmZyYW1lYnVmZmVyID0gbUdMU3RhdGUuZ2V0VGFyZ2V0RnJhbWVidWZmZXIodGFy
Z2V0KTsKICAgICBBU1NFUlQoZnJhbWVidWZmZXIpOwogCiAgICAgaWYgKHRleHR1cmUgIT0gMCkK
QEAgLTIzOTYsMzkgKzI3MDAsMzUgQEAgdm9pZCBDb250ZXh0OjpmcmFtZWJ1ZmZlclRleHR1cmVM
YXllcihHTAogICAgICAgICBmcmFtZWJ1ZmZlci0+cmVzZXRBdHRhY2htZW50KGF0dGFjaG1lbnQp
OwogICAgIH0KIAotICAgIG1TdGF0ZS5zZXRPYmplY3REaXJ0eSh0YXJnZXQpOworICAgIG1HTFN0
YXRlLnNldE9iamVjdERpcnR5KHRhcmdldCk7CiB9CiAKIHZvaWQgQ29udGV4dDo6ZHJhd0J1ZmZl
cnMoR0xzaXplaSBuLCBjb25zdCBHTGVudW0gKmJ1ZnMpCiB7Ci0gICAgRnJhbWVidWZmZXIgKmZy
YW1lYnVmZmVyID0gbVN0YXRlLmdldERyYXdGcmFtZWJ1ZmZlcigpOworICAgIEZyYW1lYnVmZmVy
ICpmcmFtZWJ1ZmZlciA9IG1HTFN0YXRlLmdldERyYXdGcmFtZWJ1ZmZlcigpOwogICAgIEFTU0VS
VChmcmFtZWJ1ZmZlcik7CiAgICAgZnJhbWVidWZmZXItPnNldERyYXdCdWZmZXJzKG4sIGJ1ZnMp
OwotICAgIG1TdGF0ZS5zZXRPYmplY3REaXJ0eShHTF9EUkFXX0ZSQU1FQlVGRkVSKTsKKyAgICBt
R0xTdGF0ZS5zZXRPYmplY3REaXJ0eShHTF9EUkFXX0ZSQU1FQlVGRkVSKTsKIH0KIAogdm9pZCBD
b250ZXh0OjpyZWFkQnVmZmVyKEdMZW51bSBtb2RlKQogewotICAgIEZyYW1lYnVmZmVyICpyZWFk
RkJPID0gbVN0YXRlLmdldFJlYWRGcmFtZWJ1ZmZlcigpOworICAgIEZyYW1lYnVmZmVyICpyZWFk
RkJPID0gbUdMU3RhdGUuZ2V0UmVhZEZyYW1lYnVmZmVyKCk7CiAgICAgcmVhZEZCTy0+c2V0UmVh
ZEJ1ZmZlcihtb2RlKTsKLSAgICBtU3RhdGUuc2V0T2JqZWN0RGlydHkoR0xfUkVBRF9GUkFNRUJV
RkZFUik7CisgICAgbUdMU3RhdGUuc2V0T2JqZWN0RGlydHkoR0xfUkVBRF9GUkFNRUJVRkZFUik7
CiB9CiAKIHZvaWQgQ29udGV4dDo6ZGlzY2FyZEZyYW1lYnVmZmVyKEdMZW51bSB0YXJnZXQsIEdM
c2l6ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpCiB7CiAgICAg
Ly8gT25seSBzeW5jIHRoZSBGQk8KLSAgICBtU3RhdGUuc3luY0RpcnR5T2JqZWN0KHRhcmdldCk7
CisgICAgbUdMU3RhdGUuc3luY0RpcnR5T2JqZWN0KHRhcmdldCk7CiAKLSAgICBGcmFtZWJ1ZmZl
ciAqZnJhbWVidWZmZXIgPSBtU3RhdGUuZ2V0VGFyZ2V0RnJhbWVidWZmZXIodGFyZ2V0KTsKKyAg
ICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBtR0xTdGF0ZS5nZXRUYXJnZXRGcmFtZWJ1ZmZl
cih0YXJnZXQpOwogICAgIEFTU0VSVChmcmFtZWJ1ZmZlcik7CiAKICAgICAvLyBUaGUgc3BlY2lm
aWNhdGlvbiBpc24ndCBjbGVhciB3aGF0IHNob3VsZCBiZSBkb25lIHdoZW4gdGhlIGZyYW1lYnVm
ZmVyIGlzbid0IGNvbXBsZXRlLgogICAgIC8vIFdlIGxlYXZlIGl0IHVwIHRvIHRoZSBmcmFtZWJ1
ZmZlciBpbXBsZW1lbnRhdGlvbiB0byBkZWNpZGUgd2hhdCB0byBkby4KLSAgICBFcnJvciBlcnJv
ciA9IGZyYW1lYnVmZmVyLT5kaXNjYXJkKG51bUF0dGFjaG1lbnRzLCBhdHRhY2htZW50cyk7Ci0g
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJlY29yZEVycm9yKGVycm9y
KTsKLSAgICB9CisgICAgaGFuZGxlRXJyb3IoZnJhbWVidWZmZXItPmRpc2NhcmQobnVtQXR0YWNo
bWVudHMsIGF0dGFjaG1lbnRzKSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6aW52YWxpZGF0ZUZyYW1l
YnVmZmVyKEdMZW51bSB0YXJnZXQsCkBAIC0yNDM2LDIwICsyNzM2LDE3IEBAIHZvaWQgQ29udGV4
dDo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdMZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpCiB7CiAgICAgLy8gT25seSBzeW5j
IHRoZSBGQk8KLSAgICBtU3RhdGUuc3luY0RpcnR5T2JqZWN0KHRhcmdldCk7CisgICAgbUdMU3Rh
dGUuc3luY0RpcnR5T2JqZWN0KHRhcmdldCk7CiAKLSAgICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZm
ZXIgPSBtU3RhdGUuZ2V0VGFyZ2V0RnJhbWVidWZmZXIodGFyZ2V0KTsKKyAgICBGcmFtZWJ1ZmZl
ciAqZnJhbWVidWZmZXIgPSBtR0xTdGF0ZS5nZXRUYXJnZXRGcmFtZWJ1ZmZlcih0YXJnZXQpOwog
ICAgIEFTU0VSVChmcmFtZWJ1ZmZlcik7CiAKLSAgICBpZiAoZnJhbWVidWZmZXItPmNoZWNrU3Rh
dHVzKG1EYXRhKSA9PSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKKyAgICBpZiAoZnJhbWVidWZm
ZXItPmNoZWNrU3RhdHVzKG1TdGF0ZSkgIT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpCiAgICAg
ewotICAgICAgICBFcnJvciBlcnJvciA9IGZyYW1lYnVmZmVyLT5pbnZhbGlkYXRlKG51bUF0dGFj
aG1lbnRzLCBhdHRhY2htZW50cyk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJlY29yZEVycm9yKGVycm9yKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQorICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgaGFuZGxlRXJyb3Io
ZnJhbWVidWZmZXItPmludmFsaWRhdGUobnVtQXR0YWNobWVudHMsIGF0dGFjaG1lbnRzKSk7CiB9
CiAKIHZvaWQgQ29udGV4dDo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdMZW51bSB0YXJnZXQs
CkBAIC0yNDYxLDIxICsyNzU4LDE4IEBAIHZvaWQgQ29udGV4dDo6aW52YWxpZGF0ZVN1YkZyYW1l
YnVmZmVyKEcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
aGVpZ2h0KQogewogICAgIC8vIE9ubHkgc3luYyB0aGUgRkJPCi0gICAgbVN0YXRlLnN5bmNEaXJ0
eU9iamVjdCh0YXJnZXQpOworICAgIG1HTFN0YXRlLnN5bmNEaXJ0eU9iamVjdCh0YXJnZXQpOwog
Ci0gICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gbVN0YXRlLmdldFRhcmdldEZyYW1lYnVm
ZmVyKHRhcmdldCk7CisgICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gbUdMU3RhdGUuZ2V0
VGFyZ2V0RnJhbWVidWZmZXIodGFyZ2V0KTsKICAgICBBU1NFUlQoZnJhbWVidWZmZXIpOwogCi0g
ICAgaWYgKGZyYW1lYnVmZmVyLT5jaGVja1N0YXR1cyhtRGF0YSkgPT0gR0xfRlJBTUVCVUZGRVJf
Q09NUExFVEUpCisgICAgaWYgKGZyYW1lYnVmZmVyLT5jaGVja1N0YXR1cyhtU3RhdGUpICE9IEdM
X0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQogICAgIHsKLSAgICAgICAgUmVjdGFuZ2xlIGFyZWEoeCwg
eSwgd2lkdGgsIGhlaWdodCk7Ci0gICAgICAgIEVycm9yIGVycm9yID0gZnJhbWVidWZmZXItPmlu
dmFsaWRhdGVTdWIobnVtQXR0YWNobWVudHMsIGF0dGFjaG1lbnRzLCBhcmVhKTsKLSAgICAgICAg
aWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmVjb3JkRXJyb3Io
ZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIHJldHVybjsK
ICAgICB9CisKKyAgICBSZWN0YW5nbGUgYXJlYSh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBo
YW5kbGVFcnJvcihmcmFtZWJ1ZmZlci0+aW52YWxpZGF0ZVN1YihudW1BdHRhY2htZW50cywgYXR0
YWNobWVudHMsIGFyZWEpKTsKIH0KIAogdm9pZCBDb250ZXh0Ojp0ZXhJbWFnZTJEKEdMZW51bSB0
YXJnZXQsCkBAIC0yNDkzLDEyICsyNzg3LDggQEAgdm9pZCBDb250ZXh0Ojp0ZXhJbWFnZTJEKEdM
ZW51bSB0YXJnZXQsCiAgICAgRXh0ZW50cyBzaXplKHdpZHRoLCBoZWlnaHQsIDEpOwogICAgIFRl
eHR1cmUgKnRleHR1cmUgPQogICAgICAgICBnZXRUYXJnZXRUZXh0dXJlKElzQ3ViZU1hcFRleHR1
cmVUYXJnZXQodGFyZ2V0KSA/IEdMX1RFWFRVUkVfQ1VCRV9NQVAgOiB0YXJnZXQpOwotICAgIEVy
cm9yIGVycm9yID0gdGV4dHVyZS0+c2V0SW1hZ2UobVN0YXRlLmdldFVucGFja1N0YXRlKCksIHRh
cmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCBzaXplLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QgKj4ocGl4ZWxzKSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAg
IHJlY29yZEVycm9yKGVycm9yKTsKLSAgICB9CisgICAgaGFuZGxlRXJyb3IodGV4dHVyZS0+c2V0
SW1hZ2UobUdMU3RhdGUuZ2V0VW5wYWNrU3RhdGUoKSwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCB0
eXBlLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QgKj4ocGl4ZWxzKSkpOwogfQogCiB2
b2lkIENvbnRleHQ6OnRleEltYWdlM0QoR0xlbnVtIHRhcmdldCwKQEAgLTI1MTYsMTIgKzI4MDYs
OCBAQCB2b2lkIENvbnRleHQ6OnRleEltYWdlM0QoR0xlbnVtIHRhcmdldCwKIAogICAgIEV4dGVu
dHMgc2l6ZSh3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7CiAgICAgVGV4dHVyZSAqdGV4dHVyZSA9IGdl
dFRhcmdldFRleHR1cmUodGFyZ2V0KTsKLSAgICBFcnJvciBlcnJvciA9IHRleHR1cmUtPnNldElt
YWdlKG1TdGF0ZS5nZXRVbnBhY2tTdGF0ZSgpLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlw
ZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90ICo+KHBpeGVscykpOwotICAgIGlmIChl
cnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZWNvcmRFcnJvcihlcnJvcik7Ci0gICAg
fQorICAgIGhhbmRsZUVycm9yKHRleHR1cmUtPnNldEltYWdlKG1HTFN0YXRlLmdldFVucGFja1N0
YXRlKCksIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCBzaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlwZSwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90ICo+KHBpeGVscykpKTsKIH0KIAogdm9pZCBDb250ZXh0Ojp0ZXhTdWJJbWFnZTJE
KEdMZW51bSB0YXJnZXQsCkBAIC0yNTQ1LDEyICsyODMxLDggQEAgdm9pZCBDb250ZXh0Ojp0ZXhT
dWJJbWFnZTJEKEdMZW51bSB0YXJnZQogICAgIEJveCBhcmVhKHhvZmZzZXQsIHlvZmZzZXQsIDAs
IHdpZHRoLCBoZWlnaHQsIDEpOwogICAgIFRleHR1cmUgKnRleHR1cmUgPQogICAgICAgICBnZXRU
YXJnZXRUZXh0dXJlKElzQ3ViZU1hcFRleHR1cmVUYXJnZXQodGFyZ2V0KSA/IEdMX1RFWFRVUkVf
Q1VCRV9NQVAgOiB0YXJnZXQpOwotICAgIEVycm9yIGVycm9yID0gdGV4dHVyZS0+c2V0U3ViSW1h
Z2UobVN0YXRlLmdldFVucGFja1N0YXRlKCksIHRhcmdldCwgbGV2ZWwsIGFyZWEsIGZvcm1hdCwg
dHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihwaXhlbHMpKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigp
KQotICAgIHsKLSAgICAgICAgcmVjb3JkRXJyb3IoZXJyb3IpOwotICAgIH0KKyAgICBoYW5kbGVF
cnJvcih0ZXh0dXJlLT5zZXRTdWJJbWFnZShtR0xTdGF0ZS5nZXRVbnBhY2tTdGF0ZSgpLCB0YXJn
ZXQsIGxldmVsLCBhcmVhLCBmb3JtYXQsIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90ICo+KHBpeGVscykpKTsK
IH0KIAogdm9pZCBDb250ZXh0Ojp0ZXhTdWJJbWFnZTNEKEdMZW51bSB0YXJnZXQsCkBAIC0yNTc1
LDEyICsyODU3LDggQEAgdm9pZCBDb250ZXh0Ojp0ZXhTdWJJbWFnZTNEKEdMZW51bSB0YXJnZQog
CiAgICAgQm94IGFyZWEoeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgpOwogICAgIFRleHR1cmUgKnRleHR1cmUgPSBnZXRUYXJnZXRUZXh0dXJlKHRhcmdldCk7
Ci0gICAgRXJyb3IgZXJyb3IgPSB0ZXh0dXJlLT5zZXRTdWJJbWFnZShtU3RhdGUuZ2V0VW5wYWNr
U3RhdGUoKSwgdGFyZ2V0LCBsZXZlbCwgYXJlYSwgZm9ybWF0LCB0eXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
ICo+KHBpeGVscykpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICBy
ZWNvcmRFcnJvcihlcnJvcik7Ci0gICAgfQorICAgIGhhbmRsZUVycm9yKHRleHR1cmUtPnNldFN1
YkltYWdlKG1HTFN0YXRlLmdldFVucGFja1N0YXRlKCksIHRhcmdldCwgbGV2ZWwsIGFyZWEsIGZv
cm1hdCwgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QgKj4ocGl4ZWxzKSkpOwogfQogCiB2b2lkIENvbnRleHQ6
OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdMZW51bSB0YXJnZXQsCkBAIC0yNTk3LDEzICsyODc1LDkg
QEAgdm9pZCBDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChHTGVudQogICAgIEV4dGVudHMg
c2l6ZSh3aWR0aCwgaGVpZ2h0LCAxKTsKICAgICBUZXh0dXJlICp0ZXh0dXJlID0KICAgICAgICAg
Z2V0VGFyZ2V0VGV4dHVyZShJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkgPyBHTF9URVhU
VVJFX0NVQkVfTUFQIDogdGFyZ2V0KTsKLSAgICBFcnJvciBlcnJvciA9Ci0gICAgICAgIHRleHR1
cmUtPnNldENvbXByZXNzZWRJbWFnZShtU3RhdGUuZ2V0VW5wYWNrU3RhdGUoKSwgdGFyZ2V0LCBs
ZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbWFnZVNpemUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihkYXRh
KSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJlY29yZEVycm9y
KGVycm9yKTsKLSAgICB9CisgICAgaGFuZGxlRXJyb3IodGV4dHVyZS0+c2V0Q29tcHJlc3NlZElt
YWdlKG1HTFN0YXRlLmdldFVucGFja1N0YXRlKCksIHRhcmdldCwgbGV2ZWwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsZm9ybWF0LCBzaXplLCBp
bWFnZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihkYXRhKSkpOwogfQogCiB2b2lkIENvbnRl
eHQ6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdMZW51bSB0YXJnZXQsCkBAIC0yNjIwLDEzICsyODk0
LDkgQEAgdm9pZCBDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHTGVudQogCiAgICAgRXh0
ZW50cyBzaXplKHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsKICAgICBUZXh0dXJlICp0ZXh0dXJlID0g
Z2V0VGFyZ2V0VGV4dHVyZSh0YXJnZXQpOwotICAgIEVycm9yIGVycm9yID0KLSAgICAgICAgdGV4
dHVyZS0+c2V0Q29tcHJlc3NlZEltYWdlKG1TdGF0ZS5nZXRVbnBhY2tTdGF0ZSgpLCB0YXJnZXQs
IGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGltYWdlU2l6ZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90ICo+KGRh
dGEpKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmVjb3JkRXJy
b3IoZXJyb3IpOwotICAgIH0KKyAgICBoYW5kbGVFcnJvcih0ZXh0dXJlLT5zZXRDb21wcmVzc2Vk
SW1hZ2UobUdMU3RhdGUuZ2V0VW5wYWNrU3RhdGUoKSwgdGFyZ2V0LCBsZXZlbCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxmb3JtYXQsIHNpemUs
IGltYWdlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90ICo+KGRhdGEpKSk7CiB9CiAKIHZvaWQgQ29u
dGV4dDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwKQEAgLTI2NDQsMTMg
KzI5MTQsOSBAQCB2b2lkIENvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdMCiAgICAg
Qm94IGFyZWEoeG9mZnNldCwgeW9mZnNldCwgMCwgd2lkdGgsIGhlaWdodCwgMSk7CiAgICAgVGV4
dHVyZSAqdGV4dHVyZSA9CiAgICAgICAgIGdldFRhcmdldFRleHR1cmUoSXNDdWJlTWFwVGV4dHVy
ZVRhcmdldCh0YXJnZXQpID8gR0xfVEVYVFVSRV9DVUJFX01BUCA6IHRhcmdldCk7Ci0gICAgRXJy
b3IgZXJyb3IgPQotICAgICAgICB0ZXh0dXJlLT5zZXRDb21wcmVzc2VkU3ViSW1hZ2UobVN0YXRl
LmdldFVucGFja1N0YXRlKCksIHRhcmdldCwgbGV2ZWwsIGFyZWEsIGZvcm1hdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlU2l6ZSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90ICo+KGRhdGEpKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAg
IHsKLSAgICAgICAgcmVjb3JkRXJyb3IoZXJyb3IpOwotICAgIH0KKyAgICBoYW5kbGVFcnJvcih0
ZXh0dXJlLT5zZXRDb21wcmVzc2VkU3ViSW1hZ2UobUdMU3RhdGUuZ2V0VW5wYWNrU3RhdGUoKSwg
dGFyZ2V0LCBsZXZlbCwgYXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZm9ybWF0LCBpbWFnZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihk
YXRhKSkpOwogfQogCiB2b2lkIENvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdMZW51
bSB0YXJnZXQsCkBAIC0yNjc1LDM5ICsyOTQxLDExNSBAQCB2b2lkIENvbnRleHQ6OmNvbXByZXNz
ZWRUZXhTdWJJbWFnZTNEKEdMCiAKICAgICBCb3ggYXJlYSh4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zm
c2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7CiAgICAgVGV4dHVyZSAqdGV4dHVyZSA9IGdldFRh
cmdldFRleHR1cmUodGFyZ2V0KTsKLSAgICBFcnJvciBlcnJvciA9Ci0gICAgICAgIHRleHR1cmUt
PnNldENvbXByZXNzZWRTdWJJbWFnZShtU3RhdGUuZ2V0VW5wYWNrU3RhdGUoKSwgdGFyZ2V0LCBs
ZXZlbCwgYXJlYSwgZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW1hZ2VTaXplLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QgKj4oZGF0YSkpOwot
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZWNvcmRFcnJvcihlcnJv
cik7Ci0gICAgfQorICAgIGhhbmRsZUVycm9yKHRleHR1cmUtPnNldENvbXByZXNzZWRTdWJJbWFn
ZShtR0xTdGF0ZS5nZXRVbnBhY2tTdGF0ZSgpLCB0YXJnZXQsIGxldmVsLCBhcmVhLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIGltYWdlU2l6
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90ICo+KGRhdGEpKSk7CiB9CiAKLXZvaWQgQ29udGV4dDo6
Z2V0QnVmZmVyUG9pbnRlcnYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIC8qcG5hbWUqLywgdm9pZCAq
KnBhcmFtcykKK3ZvaWQgQ29udGV4dDo6Z2VuZXJhdGVNaXBtYXAoR0xlbnVtIHRhcmdldCkKIHsK
LSAgICBCdWZmZXIgKmJ1ZmZlciA9IGdldFN0YXRlKCkuZ2V0VGFyZ2V0QnVmZmVyKHRhcmdldCk7
Ci0gICAgQVNTRVJUKGJ1ZmZlcik7CisgICAgVGV4dHVyZSAqdGV4dHVyZSA9IGdldFRhcmdldFRl
eHR1cmUodGFyZ2V0KTsKKyAgICBoYW5kbGVFcnJvcih0ZXh0dXJlLT5nZW5lcmF0ZU1pcG1hcCgp
KTsKK30KIAotICAgIGlmICghYnVmZmVyLT5pc01hcHBlZCgpKQorR0xib29sZWFuIENvbnRleHQ6
OmVuYWJsZUV4dGVuc2lvbihjb25zdCBjaGFyICpuYW1lKQoreworICAgIGNvbnN0IEV4dGVuc2lv
bkluZm9NYXAgJmV4dGVuc2lvbkluZm9zID0gR2V0RXh0ZW5zaW9uSW5mb01hcCgpOworICAgIEFT
U0VSVChleHRlbnNpb25JbmZvcy5maW5kKG5hbWUpICE9IGV4dGVuc2lvbkluZm9zLmVuZCgpKTsK
KyAgICBjb25zdCBhdXRvICZleHRlbnNpb24gPSBleHRlbnNpb25JbmZvcy5hdChuYW1lKTsKKyAg
ICBBU1NFUlQoZXh0ZW5zaW9uLkVuYWJsZWFibGUpOworCisgICAgaWYgKG1FeHRlbnNpb25zLioo
ZXh0ZW5zaW9uLkV4dGVuc2lvbnNNZW1iZXIpKQogICAgIHsKLSAgICAgICAgKnBhcmFtcyA9IG51
bGxwdHI7CisgICAgICAgIC8vIEV4dGVuc2lvbiBhbHJlYWR5IGVuYWJsZWQKKyAgICAgICAgcmV0
dXJuIEdMX1RSVUU7CiAgICAgfQotICAgIGVsc2UKKworICAgIGNvbnN0IGF1dG8gJm5hdGl2ZUV4
dGVuc2lvbnMgPSBtSW1wbGVtZW50YXRpb24tPmdldE5hdGl2ZUV4dGVuc2lvbnMoKTsKKyAgICBp
ZiAoIShuYXRpdmVFeHRlbnNpb25zLiooZXh0ZW5zaW9uLkV4dGVuc2lvbnNNZW1iZXIpKSkKICAg
ICB7Ci0gICAgICAgICpwYXJhbXMgPSBidWZmZXItPmdldE1hcFBvaW50ZXIoKTsKKyAgICAgICAg
Ly8gVW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgdmFsaWQg
ZXh0ZW5zaW9uCisgICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAgICB9CisKKyAgICBtRXh0ZW5z
aW9ucy4qKGV4dGVuc2lvbi5FeHRlbnNpb25zTWVtYmVyKSA9IHRydWU7CisgICAgdXBkYXRlQ2Fw
cygpOworICAgIGluaXRFeHRlbnNpb25TdHJpbmdzKCk7CisgICAgcmV0dXJuIEdMX1RSVUU7Cit9
CisKK3ZvaWQgQ29udGV4dDo6Y29weVRleHR1cmVDSFJPTUlVTShHTHVpbnQgc291cmNlSWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGRlc3RJZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdFR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFja0ZsaXBZLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBhY2tVbm11bHRp
cGx5QWxwaGEpCit7CisgICAgc3luY1N0YXRlRm9yVGV4SW1hZ2UoKTsKKworICAgIGdsOjpUZXh0
dXJlICpzb3VyY2VUZXh0dXJlID0gZ2V0VGV4dHVyZShzb3VyY2VJZCk7CisgICAgZ2w6OlRleHR1
cmUgKmRlc3RUZXh0dXJlICAgPSBnZXRUZXh0dXJlKGRlc3RJZCk7CisgICAgaGFuZGxlRXJyb3Io
ZGVzdFRleHR1cmUtPmNvcHlUZXh0dXJlKGludGVybmFsRm9ybWF0LCBkZXN0VHlwZSwgdW5wYWNr
RmxpcFkgPT0gR0xfVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSA9PSBHTF9UUlVFLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnBhY2tVbm11bHRpcGx5QWxwaGEgPT0gR0xfVFJVRSwg
c291cmNlVGV4dHVyZSkpOworfQorCit2b2lkIENvbnRleHQ6OmNvcHlTdWJUZXh0dXJlQ0hST01J
VU0oR0x1aW50IHNvdXJjZUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBkZXN0SWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgeG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5
b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBhY2tGbGlwWSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNrVW5t
dWx0aXBseUFscGhhKQoreworICAgIC8vIFplcm8gc2l6ZWQgY29waWVzIGFyZSB2YWxpZCBidXQg
bm8tb3BzCisgICAgaWYgKHdpZHRoID09IDAgfHwgaGVpZ2h0ID09IDApCisgICAgeworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgc3luY1N0YXRlRm9yVGV4SW1hZ2UoKTsKKworICAgIGds
OjpUZXh0dXJlICpzb3VyY2VUZXh0dXJlID0gZ2V0VGV4dHVyZShzb3VyY2VJZCk7CisgICAgZ2w6
OlRleHR1cmUgKmRlc3RUZXh0dXJlICAgPSBnZXRUZXh0dXJlKGRlc3RJZCk7CisgICAgT2Zmc2V0
IG9mZnNldCh4b2Zmc2V0LCB5b2Zmc2V0LCAwKTsKKyAgICBSZWN0YW5nbGUgYXJlYSh4LCB5LCB3
aWR0aCwgaGVpZ2h0KTsKKyAgICBoYW5kbGVFcnJvcihkZXN0VGV4dHVyZS0+Y29weVN1YlRleHR1
cmUob2Zmc2V0LCBhcmVhLCB1bnBhY2tGbGlwWSA9PSBHTF9UUlVFLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnBhY2tQcmVtdWx0aXBseUFscGhhID09IEdM
X1RSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVucGFj
a1VubXVsdGlwbHlBbHBoYSA9PSBHTF9UUlVFLCBzb3VyY2VUZXh0dXJlKSk7Cit9CisKK3ZvaWQg
Q29udGV4dDo6Y29tcHJlc3NlZENvcHlUZXh0dXJlQ0hST01JVU0oR0x1aW50IHNvdXJjZUlkLCBH
THVpbnQgZGVzdElkKQoreworICAgIHN5bmNTdGF0ZUZvclRleEltYWdlKCk7CisKKyAgICBnbDo6
VGV4dHVyZSAqc291cmNlVGV4dHVyZSA9IGdldFRleHR1cmUoc291cmNlSWQpOworICAgIGdsOjpU
ZXh0dXJlICpkZXN0VGV4dHVyZSAgID0gZ2V0VGV4dHVyZShkZXN0SWQpOworICAgIGhhbmRsZUVy
cm9yKGRlc3RUZXh0dXJlLT5jb3B5Q29tcHJlc3NlZFRleHR1cmUoc291cmNlVGV4dHVyZSkpOwor
fQorCit2b2lkIENvbnRleHQ6OmdldEJ1ZmZlclBvaW50ZXJ2KEdMZW51bSB0YXJnZXQsIEdMZW51
bSBwbmFtZSwgdm9pZCAqKnBhcmFtcykKK3sKKyAgICBCdWZmZXIgKmJ1ZmZlciA9IG1HTFN0YXRl
LmdldFRhcmdldEJ1ZmZlcih0YXJnZXQpOworICAgIEFTU0VSVChidWZmZXIpOworCisgICAgUXVl
cnlCdWZmZXJQb2ludGVydihidWZmZXIsIHBuYW1lLCBwYXJhbXMpOwogfQogCiBHTHZvaWQgKkNv
bnRleHQ6Om1hcEJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBHTGVudW0gYWNjZXNzKQogewotICAgIEJ1
ZmZlciAqYnVmZmVyID0gZ2V0U3RhdGUoKS5nZXRUYXJnZXRCdWZmZXIodGFyZ2V0KTsKKyAgICBC
dWZmZXIgKmJ1ZmZlciA9IG1HTFN0YXRlLmdldFRhcmdldEJ1ZmZlcih0YXJnZXQpOwogICAgIEFT
U0VSVChidWZmZXIpOwogCiAgICAgRXJyb3IgZXJyb3IgPSBidWZmZXItPm1hcChhY2Nlc3MpOwog
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewotICAgICAgICByZWNvcmRFcnJvcihlcnJv
cik7CisgICAgICAgIGhhbmRsZUVycm9yKGVycm9yKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCkBAIC0yNzE2LDE0ICszMDU4LDE0IEBAIEdMdm9pZCAqQ29udGV4dDo6bWFwQnVm
ZmVyKEdMZW51bSB0YXJnZXQKIAogR0xib29sZWFuIENvbnRleHQ6OnVubWFwQnVmZmVyKEdMZW51
bSB0YXJnZXQpCiB7Ci0gICAgQnVmZmVyICpidWZmZXIgPSBnZXRTdGF0ZSgpLmdldFRhcmdldEJ1
ZmZlcih0YXJnZXQpOworICAgIEJ1ZmZlciAqYnVmZmVyID0gbUdMU3RhdGUuZ2V0VGFyZ2V0QnVm
ZmVyKHRhcmdldCk7CiAgICAgQVNTRVJUKGJ1ZmZlcik7CiAKICAgICBHTGJvb2xlYW4gcmVzdWx0
OwogICAgIEVycm9yIGVycm9yID0gYnVmZmVyLT51bm1hcCgmcmVzdWx0KTsKICAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgcmVjb3JkRXJyb3IoZXJyb3IpOworICAgICAg
ICBoYW5kbGVFcnJvcihlcnJvcik7CiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAgICB9CiAK
QEAgLTI3MzUsMTMgKzMwNzcsMTMgQEAgR0x2b2lkICpDb250ZXh0OjptYXBCdWZmZXJSYW5nZShH
TGVudW0gdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIGxlbmd0
aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBhY2Nlc3MpCiB7
Ci0gICAgQnVmZmVyICpidWZmZXIgPSBnZXRTdGF0ZSgpLmdldFRhcmdldEJ1ZmZlcih0YXJnZXQp
OworICAgIEJ1ZmZlciAqYnVmZmVyID0gbUdMU3RhdGUuZ2V0VGFyZ2V0QnVmZmVyKHRhcmdldCk7
CiAgICAgQVNTRVJUKGJ1ZmZlcik7CiAKICAgICBFcnJvciBlcnJvciA9IGJ1ZmZlci0+bWFwUmFu
Z2Uob2Zmc2V0LCBsZW5ndGgsIGFjY2Vzcyk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAg
ICB7Ci0gICAgICAgIHJlY29yZEVycm9yKGVycm9yKTsKKyAgICAgICAgaGFuZGxlRXJyb3IoZXJy
b3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTI3NzMsNCArMzExNSw0
MDcgQEAgdm9pZCBDb250ZXh0OjpzeW5jU3RhdGVGb3JCbGl0KCkKICAgICBzeW5jUmVuZGVyZXJT
dGF0ZShtQmxpdERpcnR5Qml0cywgbUJsaXREaXJ0eU9iamVjdHMpOwogfQogCit2b2lkIENvbnRl
eHQ6OmFjdGl2ZVRleHR1cmUoR0xlbnVtIHRleHR1cmUpCit7CisgICAgbUdMU3RhdGUuc2V0QWN0
aXZlU2FtcGxlcih0ZXh0dXJlIC0gR0xfVEVYVFVSRTApOworfQorCit2b2lkIENvbnRleHQ6OmJs
ZW5kQ29sb3IoR0xjbGFtcGYgcmVkLCBHTGNsYW1wZiBncmVlbiwgR0xjbGFtcGYgYmx1ZSwgR0xj
bGFtcGYgYWxwaGEpCit7CisgICAgbUdMU3RhdGUuc2V0QmxlbmRDb2xvcihjbGFtcDAxKHJlZCks
IGNsYW1wMDEoZ3JlZW4pLCBjbGFtcDAxKGJsdWUpLCBjbGFtcDAxKGFscGhhKSk7Cit9CisKK3Zv
aWQgQ29udGV4dDo6YmxlbmRFcXVhdGlvblNlcGFyYXRlKEdMZW51bSBtb2RlUkdCLCBHTGVudW0g
bW9kZUFscGhhKQoreworICAgIG1HTFN0YXRlLnNldEJsZW5kRXF1YXRpb24obW9kZVJHQiwgbW9k
ZUFscGhhKTsKK30KKwordm9pZCBDb250ZXh0OjpibGVuZEZ1bmNTZXBhcmF0ZShHTGVudW0gc3Jj
UkdCLCBHTGVudW0gZHN0UkdCLCBHTGVudW0gc3JjQWxwaGEsIEdMZW51bSBkc3RBbHBoYSkKK3sK
KyAgICBtR0xTdGF0ZS5zZXRCbGVuZEZhY3RvcnMoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBk
c3RBbHBoYSk7Cit9CisKK3ZvaWQgQ29udGV4dDo6Y2xlYXJDb2xvcihHTGNsYW1wZiByZWQsIEdM
Y2xhbXBmIGdyZWVuLCBHTGNsYW1wZiBibHVlLCBHTGNsYW1wZiBhbHBoYSkKK3sKKyAgICBtR0xT
dGF0ZS5zZXRDb2xvckNsZWFyVmFsdWUocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworfQorCit2
b2lkIENvbnRleHQ6OmNsZWFyRGVwdGhmKEdMY2xhbXBmIGRlcHRoKQoreworICAgIG1HTFN0YXRl
LnNldERlcHRoQ2xlYXJWYWx1ZShkZXB0aCk7Cit9CisKK3ZvaWQgQ29udGV4dDo6Y2xlYXJTdGVu
Y2lsKEdMaW50IHMpCit7CisgICAgbUdMU3RhdGUuc2V0U3RlbmNpbENsZWFyVmFsdWUocyk7Cit9
CisKK3ZvaWQgQ29udGV4dDo6Y29sb3JNYXNrKEdMYm9vbGVhbiByZWQsIEdMYm9vbGVhbiBncmVl
biwgR0xib29sZWFuIGJsdWUsIEdMYm9vbGVhbiBhbHBoYSkKK3sKKyAgICBtR0xTdGF0ZS5zZXRD
b2xvck1hc2socmVkID09IEdMX1RSVUUsIGdyZWVuID09IEdMX1RSVUUsIGJsdWUgPT0gR0xfVFJV
RSwgYWxwaGEgPT0gR0xfVFJVRSk7Cit9CisKK3ZvaWQgQ29udGV4dDo6Y3VsbEZhY2UoR0xlbnVt
IG1vZGUpCit7CisgICAgbUdMU3RhdGUuc2V0Q3VsbE1vZGUobW9kZSk7Cit9CisKK3ZvaWQgQ29u
dGV4dDo6ZGVwdGhGdW5jKEdMZW51bSBmdW5jKQoreworICAgIG1HTFN0YXRlLnNldERlcHRoRnVu
YyhmdW5jKTsKK30KKwordm9pZCBDb250ZXh0OjpkZXB0aE1hc2soR0xib29sZWFuIGZsYWcpCit7
CisgICAgbUdMU3RhdGUuc2V0RGVwdGhNYXNrKGZsYWcgIT0gR0xfRkFMU0UpOworfQorCit2b2lk
IENvbnRleHQ6OmRlcHRoUmFuZ2VmKEdMY2xhbXBmIHpOZWFyLCBHTGNsYW1wZiB6RmFyKQorewor
ICAgIG1HTFN0YXRlLnNldERlcHRoUmFuZ2Uoek5lYXIsIHpGYXIpOworfQorCit2b2lkIENvbnRl
eHQ6OmRpc2FibGUoR0xlbnVtIGNhcCkKK3sKKyAgICBtR0xTdGF0ZS5zZXRFbmFibGVGZWF0dXJl
KGNhcCwgZmFsc2UpOworfQorCit2b2lkIENvbnRleHQ6OmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJh
eShHTHVpbnQgaW5kZXgpCit7CisgICAgbUdMU3RhdGUuc2V0RW5hYmxlVmVydGV4QXR0cmliQXJy
YXkoaW5kZXgsIGZhbHNlKTsKK30KKwordm9pZCBDb250ZXh0OjplbmFibGUoR0xlbnVtIGNhcCkK
K3sKKyAgICBtR0xTdGF0ZS5zZXRFbmFibGVGZWF0dXJlKGNhcCwgdHJ1ZSk7Cit9CisKK3ZvaWQg
Q29udGV4dDo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0x1aW50IGluZGV4KQoreworICAgIG1H
TFN0YXRlLnNldEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4LCB0cnVlKTsKK30KKwordm9p
ZCBDb250ZXh0Ojpmcm9udEZhY2UoR0xlbnVtIG1vZGUpCit7CisgICAgbUdMU3RhdGUuc2V0RnJv
bnRGYWNlKG1vZGUpOworfQorCit2b2lkIENvbnRleHQ6OmhpbnQoR0xlbnVtIHRhcmdldCwgR0xl
bnVtIG1vZGUpCit7CisgICAgc3dpdGNoICh0YXJnZXQpCisgICAgeworICAgICAgICBjYXNlIEdM
X0dFTkVSQVRFX01JUE1BUF9ISU5UOgorICAgICAgICAgICAgbUdMU3RhdGUuc2V0R2VuZXJhdGVN
aXBtYXBIaW50KG1vZGUpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9G
UkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUzoKKyAgICAgICAgICAgIG1HTFN0YXRl
LnNldEZyYWdtZW50U2hhZGVyRGVyaXZhdGl2ZUhpbnQobW9kZSk7CisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK3ZvaWQgQ29udGV4dDo6bGluZVdpZHRoKEdMZmxv
YXQgd2lkdGgpCit7CisgICAgbUdMU3RhdGUuc2V0TGluZVdpZHRoKHdpZHRoKTsKK30KKwordm9p
ZCBDb250ZXh0OjpwaXhlbFN0b3JlaShHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQoreworICAg
IHN3aXRjaCAocG5hbWUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOUEFDS19BTElHTk1FTlQ6
CisgICAgICAgICAgICBtR0xTdGF0ZS5zZXRVbnBhY2tBbGlnbm1lbnQocGFyYW0pOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9QQUNLX0FMSUdOTUVOVDoKKyAgICAgICAg
ICAgIG1HTFN0YXRlLnNldFBhY2tBbGlnbm1lbnQocGFyYW0pOworICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgY2FzZSBHTF9QQUNLX1JFVkVSU0VfUk9XX09SREVSX0FOR0xFOgorICAgICAg
ICAgICAgbUdMU3RhdGUuc2V0UGFja1JldmVyc2VSb3dPcmRlcihwYXJhbSAhPSAwKTsKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfVU5QQUNLX1JPV19MRU5HVEg6CisgICAg
ICAgICAgICBBU1NFUlQoKGdldENsaWVudE1ham9yVmVyc2lvbigpID49IDMpIHx8IGdldEV4dGVu
c2lvbnMoKS51bnBhY2tTdWJpbWFnZSk7CisgICAgICAgICAgICBtR0xTdGF0ZS5zZXRVbnBhY2tS
b3dMZW5ndGgocGFyYW0pOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9V
TlBBQ0tfSU1BR0VfSEVJR0hUOgorICAgICAgICAgICAgQVNTRVJUKGdldENsaWVudE1ham9yVmVy
c2lvbigpID49IDMpOworICAgICAgICAgICAgbUdMU3RhdGUuc2V0VW5wYWNrSW1hZ2VIZWlnaHQo
cGFyYW0pOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9VTlBBQ0tfU0tJ
UF9JTUFHRVM6CisgICAgICAgICAgICBBU1NFUlQoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPj0g
Myk7CisgICAgICAgICAgICBtR0xTdGF0ZS5zZXRVbnBhY2tTa2lwSW1hZ2VzKHBhcmFtKTsKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfVU5QQUNLX1NLSVBfUk9XUzoKKyAg
ICAgICAgICAgIEFTU0VSVCgoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPj0gMykgfHwgZ2V0RXh0
ZW5zaW9ucygpLnVucGFja1N1YmltYWdlKTsKKyAgICAgICAgICAgIG1HTFN0YXRlLnNldFVucGFj
a1NraXBSb3dzKHBhcmFtKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xf
VU5QQUNLX1NLSVBfUElYRUxTOgorICAgICAgICAgICAgQVNTRVJUKChnZXRDbGllbnRNYWpvclZl
cnNpb24oKSA+PSAzKSB8fCBnZXRFeHRlbnNpb25zKCkudW5wYWNrU3ViaW1hZ2UpOworICAgICAg
ICAgICAgbUdMU3RhdGUuc2V0VW5wYWNrU2tpcFBpeGVscyhwYXJhbSk7CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBjYXNlIEdMX1BBQ0tfUk9XX0xFTkdUSDoKKyAgICAgICAgICAgIEFT
U0VSVCgoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPj0gMykgfHwgZ2V0RXh0ZW5zaW9ucygpLnBh
Y2tTdWJpbWFnZSk7CisgICAgICAgICAgICBtR0xTdGF0ZS5zZXRQYWNrUm93TGVuZ3RoKHBhcmFt
KTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfUEFDS19TS0lQX1JPV1M6
CisgICAgICAgICAgICBBU1NFUlQoKGdldENsaWVudE1ham9yVmVyc2lvbigpID49IDMpIHx8IGdl
dEV4dGVuc2lvbnMoKS5wYWNrU3ViaW1hZ2UpOworICAgICAgICAgICAgbUdMU3RhdGUuc2V0UGFj
a1NraXBSb3dzKHBhcmFtKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xf
UEFDS19TS0lQX1BJWEVMUzoKKyAgICAgICAgICAgIEFTU0VSVCgoZ2V0Q2xpZW50TWFqb3JWZXJz
aW9uKCkgPj0gMykgfHwgZ2V0RXh0ZW5zaW9ucygpLnBhY2tTdWJpbWFnZSk7CisgICAgICAgICAg
ICBtR0xTdGF0ZS5zZXRQYWNrU2tpcFBpeGVscyhwYXJhbSk7CisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICB9Cit9CisKK3ZvaWQgQ29udGV4dDo6cG9seWdvbk9mZnNldChHTGZs
b2F0IGZhY3RvciwgR0xmbG9hdCB1bml0cykKK3sKKyAgICBtR0xTdGF0ZS5zZXRQb2x5Z29uT2Zm
c2V0UGFyYW1zKGZhY3RvciwgdW5pdHMpOworfQorCit2b2lkIENvbnRleHQ6OnNhbXBsZUNvdmVy
YWdlKEdMY2xhbXBmIHZhbHVlLCBHTGJvb2xlYW4gaW52ZXJ0KQoreworICAgIG1HTFN0YXRlLnNl
dFNhbXBsZUNvdmVyYWdlUGFyYW1zKGNsYW1wMDEodmFsdWUpLCBpbnZlcnQgPT0gR0xfVFJVRSk7
Cit9CisKK3ZvaWQgQ29udGV4dDo6c2Npc3NvcihHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCkKK3sKKyAgICBtR0xTdGF0ZS5zZXRTY2lzc29yUGFyYW1zKHgs
IHksIHdpZHRoLCBoZWlnaHQpOworfQorCit2b2lkIENvbnRleHQ6OnN0ZW5jaWxGdW5jU2VwYXJh
dGUoR0xlbnVtIGZhY2UsIEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKQorewor
ICAgIGlmIChmYWNlID09IEdMX0ZST05UIHx8IGZhY2UgPT0gR0xfRlJPTlRfQU5EX0JBQ0spCisg
ICAgeworICAgICAgICBtR0xTdGF0ZS5zZXRTdGVuY2lsUGFyYW1zKGZ1bmMsIHJlZiwgbWFzayk7
CisgICAgfQorCisgICAgaWYgKGZhY2UgPT0gR0xfQkFDSyB8fCBmYWNlID09IEdMX0ZST05UX0FO
RF9CQUNLKQorICAgIHsKKyAgICAgICAgbUdMU3RhdGUuc2V0U3RlbmNpbEJhY2tQYXJhbXMoZnVu
YywgcmVmLCBtYXNrKTsKKyAgICB9Cit9CisKK3ZvaWQgQ29udGV4dDo6c3RlbmNpbE1hc2tTZXBh
cmF0ZShHTGVudW0gZmFjZSwgR0x1aW50IG1hc2spCit7CisgICAgaWYgKGZhY2UgPT0gR0xfRlJP
TlQgfHwgZmFjZSA9PSBHTF9GUk9OVF9BTkRfQkFDSykKKyAgICB7CisgICAgICAgIG1HTFN0YXRl
LnNldFN0ZW5jaWxXcml0ZW1hc2sobWFzayk7CisgICAgfQorCisgICAgaWYgKGZhY2UgPT0gR0xf
QkFDSyB8fCBmYWNlID09IEdMX0ZST05UX0FORF9CQUNLKQorICAgIHsKKyAgICAgICAgbUdMU3Rh
dGUuc2V0U3RlbmNpbEJhY2tXcml0ZW1hc2sobWFzayk7CisgICAgfQorfQorCit2b2lkIENvbnRl
eHQ6OnN0ZW5jaWxPcFNlcGFyYXRlKEdMZW51bSBmYWNlLCBHTGVudW0gZmFpbCwgR0xlbnVtIHpm
YWlsLCBHTGVudW0genBhc3MpCit7CisgICAgaWYgKGZhY2UgPT0gR0xfRlJPTlQgfHwgZmFjZSA9
PSBHTF9GUk9OVF9BTkRfQkFDSykKKyAgICB7CisgICAgICAgIG1HTFN0YXRlLnNldFN0ZW5jaWxP
cGVyYXRpb25zKGZhaWwsIHpmYWlsLCB6cGFzcyk7CisgICAgfQorCisgICAgaWYgKGZhY2UgPT0g
R0xfQkFDSyB8fCBmYWNlID09IEdMX0ZST05UX0FORF9CQUNLKQorICAgIHsKKyAgICAgICAgbUdM
U3RhdGUuc2V0U3RlbmNpbEJhY2tPcGVyYXRpb25zKGZhaWwsIHpmYWlsLCB6cGFzcyk7CisgICAg
fQorfQorCit2b2lkIENvbnRleHQ6OnZlcnRleEF0dHJpYjFmKEdMdWludCBpbmRleCwgR0xmbG9h
dCB4KQoreworICAgIEdMZmxvYXQgdmFsc1s0XSA9IHt4LCAwLCAwLCAxfTsKKyAgICBtR0xTdGF0
ZS5zZXRWZXJ0ZXhBdHRyaWJmKGluZGV4LCB2YWxzKTsKK30KKwordm9pZCBDb250ZXh0Ojp2ZXJ0
ZXhBdHRyaWIxZnYoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2YWx1ZXMpCit7CisgICAg
R0xmbG9hdCB2YWxzWzRdID0ge3ZhbHVlc1swXSwgMCwgMCwgMX07CisgICAgbUdMU3RhdGUuc2V0
VmVydGV4QXR0cmliZihpbmRleCwgdmFscyk7Cit9CisKK3ZvaWQgQ29udGV4dDo6dmVydGV4QXR0
cmliMmYoR0x1aW50IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSkKK3sKKyAgICBHTGZsb2F0
IHZhbHNbNF0gPSB7eCwgeSwgMCwgMX07CisgICAgbUdMU3RhdGUuc2V0VmVydGV4QXR0cmliZihp
bmRleCwgdmFscyk7Cit9CisKK3ZvaWQgQ29udGV4dDo6dmVydGV4QXR0cmliMmZ2KEdMdWludCBp
bmRleCwgY29uc3QgR0xmbG9hdCAqdmFsdWVzKQoreworICAgIEdMZmxvYXQgdmFsc1s0XSA9IHt2
YWx1ZXNbMF0sIHZhbHVlc1sxXSwgMCwgMX07CisgICAgbUdMU3RhdGUuc2V0VmVydGV4QXR0cmli
ZihpbmRleCwgdmFscyk7Cit9CisKK3ZvaWQgQ29udGV4dDo6dmVydGV4QXR0cmliM2YoR0x1aW50
IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KQoreworICAgIEdMZmxvYXQg
dmFsc1s0XSA9IHt4LCB5LCB6LCAxfTsKKyAgICBtR0xTdGF0ZS5zZXRWZXJ0ZXhBdHRyaWJmKGlu
ZGV4LCB2YWxzKTsKK30KKwordm9pZCBDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWIzZnYoR0x1aW50IGlu
ZGV4LCBjb25zdCBHTGZsb2F0ICp2YWx1ZXMpCit7CisgICAgR0xmbG9hdCB2YWxzWzRdID0ge3Zh
bHVlc1swXSwgdmFsdWVzWzFdLCB2YWx1ZXNbMl0sIDF9OworICAgIG1HTFN0YXRlLnNldFZlcnRl
eEF0dHJpYmYoaW5kZXgsIHZhbHMpOworfQorCit2b2lkIENvbnRleHQ6OnZlcnRleEF0dHJpYjRm
KEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeiwgR0xmbG9hdCB3
KQoreworICAgIEdMZmxvYXQgdmFsc1s0XSA9IHt4LCB5LCB6LCB3fTsKKyAgICBtR0xTdGF0ZS5z
ZXRWZXJ0ZXhBdHRyaWJmKGluZGV4LCB2YWxzKTsKK30KKwordm9pZCBDb250ZXh0Ojp2ZXJ0ZXhB
dHRyaWI0ZnYoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2YWx1ZXMpCit7CisgICAgbUdM
U3RhdGUuc2V0VmVydGV4QXR0cmliZihpbmRleCwgdmFsdWVzKTsKK30KKwordm9pZCBDb250ZXh0
Ojp2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiBub3JtYWxpemVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgc3RyaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9p
ZCAqcHRyKQoreworICAgIG1HTFN0YXRlLnNldFZlcnRleEF0dHJpYlN0YXRlKGluZGV4LCBtR0xT
dGF0ZS5nZXRUYXJnZXRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSKSwgc2l6ZSwgdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkID09IEdMX1RSVUUsIGZhbHNl
LCBzdHJpZGUsIHB0cik7Cit9CisKK3ZvaWQgQ29udGV4dDo6dmlld3BvcnQoR0xpbnQgeCwgR0xp
bnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCit7CisgICAgbUdMU3RhdGUuc2V0
Vmlld3BvcnRQYXJhbXMoeCwgeSwgd2lkdGgsIGhlaWdodCk7Cit9CisKK3ZvaWQgQ29udGV4dDo6
dmVydGV4QXR0cmliSVBvaW50ZXIoR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBzdHJpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
dm9pZCAqcG9pbnRlcikKK3sKKyAgICBtR0xTdGF0ZS5zZXRWZXJ0ZXhBdHRyaWJTdGF0ZShpbmRl
eCwgbUdMU3RhdGUuZ2V0VGFyZ2V0QnVmZmVyKEdMX0FSUkFZX0JVRkZFUiksIHNpemUsIHR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIHRydWUsIHN0cmlkZSwg
cG9pbnRlcik7Cit9CisKK3ZvaWQgQ29udGV4dDo6dmVydGV4QXR0cmliSTRpKEdMdWludCBpbmRl
eCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQgdykKK3sKKyAgICBHTGludCB2YWxz
WzRdID0ge3gsIHksIHosIHd9OworICAgIG1HTFN0YXRlLnNldFZlcnRleEF0dHJpYmkoaW5kZXgs
IHZhbHMpOworfQorCit2b2lkIENvbnRleHQ6OnZlcnRleEF0dHJpYkk0dWkoR0x1aW50IGluZGV4
LCBHTHVpbnQgeCwgR0x1aW50IHksIEdMdWludCB6LCBHTHVpbnQgdykKK3sKKyAgICBHTHVpbnQg
dmFsc1s0XSA9IHt4LCB5LCB6LCB3fTsKKyAgICBtR0xTdGF0ZS5zZXRWZXJ0ZXhBdHRyaWJ1KGlu
ZGV4LCB2YWxzKTsKK30KKwordm9pZCBDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNGl2KEdMdWludCBp
bmRleCwgY29uc3QgR0xpbnQgKnYpCit7CisgICAgbUdMU3RhdGUuc2V0VmVydGV4QXR0cmliaShp
bmRleCwgdik7Cit9CisKK3ZvaWQgQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYoR0x1aW50IGlu
ZGV4LCBjb25zdCBHTHVpbnQgKnYpCit7CisgICAgbUdMU3RhdGUuc2V0VmVydGV4QXR0cmlidShp
bmRleCwgdik7Cit9CisKK3ZvaWQgQ29udGV4dDo6ZGVidWdNZXNzYWdlQ29udHJvbChHTGVudW0g
c291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzZXZlcml0eSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqaWRzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBlbmFibGVkKQoreworICAgIHN0ZDo6dmVjdG9y
PEdMdWludD4gaWRWZWN0b3IoaWRzLCBpZHMgKyBjb3VudCk7CisgICAgbUdMU3RhdGUuZ2V0RGVi
dWcoKS5zZXRNZXNzYWdlQ29udHJvbChzb3VyY2UsIHR5cGUsIHNldmVyaXR5LCBzdGQ6Om1vdmUo
aWRWZWN0b3IpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVu
YWJsZWQgIT0gR0xfRkFMU0UpKTsKK30KKwordm9pZCBDb250ZXh0OjpkZWJ1Z01lc3NhZ2VJbnNl
cnQoR0xlbnVtIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNldmVyaXR5LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZW5ndGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKmJ1ZikKK3sKKyAgICBzdGQ6OnN0cmluZyBt
c2coYnVmLCAobGVuZ3RoID4gMCkgPyBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgOiBzdHJs
ZW4oYnVmKSk7CisgICAgbUdMU3RhdGUuZ2V0RGVidWcoKS5pbnNlcnRNZXNzYWdlKHNvdXJjZSwg
dHlwZSwgaWQsIHNldmVyaXR5LCBzdGQ6Om1vdmUobXNnKSk7Cit9CisKK3ZvaWQgQ29udGV4dDo6
ZGVidWdNZXNzYWdlQ2FsbGJhY2soR0xERUJVR1BST0NLSFIgY2FsbGJhY2ssIGNvbnN0IHZvaWQg
KnVzZXJQYXJhbSkKK3sKKyAgICBtR0xTdGF0ZS5nZXREZWJ1ZygpLnNldENhbGxiYWNrKGNhbGxi
YWNrLCB1c2VyUGFyYW0pOworfQorCitHTHVpbnQgQ29udGV4dDo6Z2V0RGVidWdNZXNzYWdlTG9n
KEdMdWludCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKnNv
dXJjZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAqdHlwZXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqaWRzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKnNldmVyaXRpZXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aHMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqbWVzc2FnZUxvZykKK3sKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8R0x1aW50PihtR0xTdGF0ZS5nZXREZWJ1ZygpLmdldE1lc3NhZ2VzKGNv
dW50LCBidWZTaXplLCBzb3VyY2VzLCB0eXBlcywgaWRzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdGllcywgbGVu
Z3RocywgbWVzc2FnZUxvZykpOworfQorCit2b2lkIENvbnRleHQ6OnB1c2hEZWJ1Z0dyb3VwKEdM
ZW51bSBzb3VyY2UsIEdMdWludCBpZCwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdMY2hhciAqbWVz
c2FnZSkKK3sKKyAgICBzdGQ6OnN0cmluZyBtc2cobWVzc2FnZSwgKGxlbmd0aCA+IDApID8gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpIDogc3RybGVuKG1lc3NhZ2UpKTsKKyAgICBtR0xTdGF0
ZS5nZXREZWJ1ZygpLnB1c2hHcm91cChzb3VyY2UsIGlkLCBzdGQ6Om1vdmUobXNnKSk7Cit9CisK
K3ZvaWQgQ29udGV4dDo6cG9wRGVidWdHcm91cCgpCit7CisgICAgbUdMU3RhdGUuZ2V0RGVidWco
KS5wb3BHcm91cCgpOworfQorCit2b2lkIENvbnRleHQ6OmJ1ZmZlckRhdGEoR0xlbnVtIHRhcmdl
dCwgR0xzaXplaXB0ciBzaXplLCBjb25zdCBHTHZvaWQgKmRhdGEsIEdMZW51bSB1c2FnZSkKK3sK
KyAgICBCdWZmZXIgKmJ1ZmZlciA9IG1HTFN0YXRlLmdldFRhcmdldEJ1ZmZlcih0YXJnZXQpOwor
ICAgIEFTU0VSVChidWZmZXIpOworICAgIGhhbmRsZUVycm9yKGJ1ZmZlci0+YnVmZmVyRGF0YSh0
YXJnZXQsIGRhdGEsIHNpemUsIHVzYWdlKSk7Cit9CisKK3ZvaWQgQ29udGV4dDo6YnVmZmVyU3Vi
RGF0YShHTGVudW0gdGFyZ2V0LCBHTGludHB0ciBvZmZzZXQsIEdMc2l6ZWlwdHIgc2l6ZSwgY29u
c3QgR0x2b2lkICpkYXRhKQoreworICAgIGlmIChkYXRhID09IG51bGxwdHIpCisgICAgeworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgQnVmZmVyICpidWZmZXIgPSBtR0xTdGF0ZS5nZXRU
YXJnZXRCdWZmZXIodGFyZ2V0KTsKKyAgICBBU1NFUlQoYnVmZmVyKTsKKyAgICBoYW5kbGVFcnJv
cihidWZmZXItPmJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBkYXRhLCBzaXplLCBvZmZzZXQpKTsKK30K
Kwordm9pZCBDb250ZXh0OjphdHRhY2hTaGFkZXIoR0x1aW50IHByb2dyYW0sIEdMdWludCBzaGFk
ZXIpCit7CisgICAgYXV0byBwcm9ncmFtT2JqZWN0ID0gbVJlc291cmNlTWFuYWdlci0+Z2V0UHJv
Z3JhbShwcm9ncmFtKTsKKyAgICBhdXRvIHNoYWRlck9iamVjdCAgPSBtUmVzb3VyY2VNYW5hZ2Vy
LT5nZXRTaGFkZXIoc2hhZGVyKTsKKyAgICBBU1NFUlQocHJvZ3JhbU9iamVjdCAmJiBzaGFkZXJP
YmplY3QpOworICAgIHByb2dyYW1PYmplY3QtPmF0dGFjaFNoYWRlcihzaGFkZXJPYmplY3QpOwor
fQorCitjb25zdCBXb3JrYXJvdW5kcyAmQ29udGV4dDo6Z2V0V29ya2Fyb3VuZHMoKSBjb25zdAor
eworICAgIHJldHVybiBtV29ya2Fyb3VuZHM7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSBnbApJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbnRleHQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dC5oCShy
ZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOCwxNSArMTgsMTcgQEAKICNpbmNsdWRlICJs
aWJBTkdMRS9SZWZDb3VudE9iamVjdC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0NhcHMuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9Db25zdGFudHMuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9EYXRhLmgi
CisjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dFN0YXRlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
RXJyb3IuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuaCIKICNpbmNsdWRl
ICJsaWJBTkdMRS9WZXJ0ZXhBdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9Xb3JrYXJv
dW5kcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMuaCIKIAogbmFtZXNwYWNlIHJ4
CiB7Ci1jbGFzcyBSZW5kZXJlcjsKK2NsYXNzIENvbnRleHRJbXBsOworY2xhc3MgRUdMSW1wbEZh
Y3Rvcnk7CiB9CiAKIG5hbWVzcGFjZSBlZ2wKQEAgLTU3LDkgKzU5LDkgQEAgY2xhc3MgVHJhbnNm
b3JtRmVlZGJhY2s7CiBjbGFzcyBDb250ZXh0IGZpbmFsIDogcHVibGljIFZhbGlkYXRpb25Db250
ZXh0CiB7CiAgIHB1YmxpYzoKLSAgICBDb250ZXh0KGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcs
CisgICAgQ29udGV4dChyeDo6RUdMSW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LAorICAgICAgICAg
ICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZywKICAgICAgICAgICAgIGNvbnN0IENvbnRleHQg
KnNoYXJlQ29udGV4dCwKLSAgICAgICAgICAgIHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIsCiAgICAg
ICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicyk7CiAKICAgICB2aXJ0dWFs
IH5Db250ZXh0KCk7CkBAIC02Nyw5ICs2OSw2IEBAIGNsYXNzIENvbnRleHQgZmluYWwgOiBwdWJs
aWMgVmFsaWRhdGlvbkMKICAgICB2b2lkIG1ha2VDdXJyZW50KGVnbDo6U3VyZmFjZSAqc3VyZmFj
ZSk7CiAgICAgdm9pZCByZWxlYXNlU3VyZmFjZSgpOwogCi0gICAgdmlydHVhbCB2b2lkIG1hcmtD
b250ZXh0TG9zdCgpOwotICAgIGJvb2wgaXNDb250ZXh0TG9zdCgpOwotCiAgICAgLy8gVGhlc2Ug
Y3JlYXRlICBhbmQgZGVzdHJveSBtZXRob2RzIGFyZSBtZXJlbHkgcGFzcy10aHJvdWdocyB0bwog
ICAgIC8vIFJlc291cmNlTWFuYWdlciwgd2hpY2ggb3ducyB0aGVzZSBvYmplY3QgdHlwZXMKICAg
ICBHTHVpbnQgY3JlYXRlQnVmZmVyKCk7CkBAIC04MCw2ICs3OSw3IEBAIGNsYXNzIENvbnRleHQg
ZmluYWwgOiBwdWJsaWMgVmFsaWRhdGlvbkMKICAgICBHTHVpbnQgY3JlYXRlU2FtcGxlcigpOwog
ICAgIEdMdWludCBjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpOwogICAgIEdMc3luYyBjcmVhdGVG
ZW5jZVN5bmMoKTsKKyAgICBHTHVpbnQgY3JlYXRlUGF0aHMoR0xzaXplaSByYW5nZSk7CiAKICAg
ICB2b2lkIGRlbGV0ZUJ1ZmZlcihHTHVpbnQgYnVmZmVyKTsKICAgICB2b2lkIGRlbGV0ZVNoYWRl
cihHTHVpbnQgc2hhZGVyKTsKQEAgLTg5LDYgKzg5LDIwIEBAIGNsYXNzIENvbnRleHQgZmluYWwg
OiBwdWJsaWMgVmFsaWRhdGlvbkMKICAgICB2b2lkIGRlbGV0ZVNhbXBsZXIoR0x1aW50IHNhbXBs
ZXIpOwogICAgIHZvaWQgZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soR0x1aW50IHRyYW5zZm9ybUZl
ZWRiYWNrKTsKICAgICB2b2lkIGRlbGV0ZUZlbmNlU3luYyhHTHN5bmMgZmVuY2VTeW5jKTsKKyAg
ICB2b2lkIGRlbGV0ZVBhdGhzKEdMdWludCBmaXJzdCwgR0xzaXplaSByYW5nZSk7CisKKyAgICAv
LyBDSFJPTUlVTV9wYXRoX3JlbmRlcmluZworICAgIGJvb2wgaGFzUGF0aERhdGEoR0x1aW50IHBh
dGgpIGNvbnN0OworICAgIGJvb2wgaGFzUGF0aChHTHVpbnQgcGF0aCkgY29uc3Q7CisgICAgdm9p
ZCBzZXRQYXRoQ29tbWFuZHMoR0x1aW50IHBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBudW1Db21tYW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVi
eXRlICpjb21tYW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUNvb3Jk
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY29vcmRUeXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmNvb3Jkcyk7CisgICAgdm9pZCBzZXRQYXRoUGFy
YW1ldGVyZihHTHVpbnQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHZhbHVlKTsKKyAgICB2
b2lkIGdldFBhdGhQYXJhbWV0ZXJmdihHTHVpbnQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0
ICp2YWx1ZSkgY29uc3Q7CisgICAgdm9pZCBzZXRQYXRoU3RlbmNpbEZ1bmMoR0xlbnVtIGZ1bmMs
IEdMaW50IHJlZiwgR0x1aW50IG1hc2spOwogCiAgICAgLy8gRnJhbWVidWZmZXJzIGFyZSBvd25l
ZCBieSB0aGUgQ29udGV4dCwgc28gdGhlc2UgbWV0aG9kcyBkbyBub3QgcGFzcyB0aHJvdWdoCiAg
ICAgR0x1aW50IGNyZWF0ZUZyYW1lYnVmZmVyKCk7CkBAIC0xMzUsMjUgKzE0OSwyNiBAQCBjbGFz
cyBDb250ZXh0IGZpbmFsIDogcHVibGljIFZhbGlkYXRpb25DCiAgICAgRXJyb3IgZW5kUXVlcnko
R0xlbnVtIHRhcmdldCk7CiAgICAgRXJyb3IgcXVlcnlDb3VudGVyKEdMdWludCBpZCwgR0xlbnVt
IHRhcmdldCk7CiAgICAgdm9pZCBnZXRRdWVyeWl2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt
ZSwgR0xpbnQgKnBhcmFtcyk7Ci0gICAgRXJyb3IgZ2V0UXVlcnlPYmplY3RpdihHTHVpbnQgaWQs
IEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Ci0gICAgRXJyb3IgZ2V0UXVlcnlPYmplY3R1
aXYoR0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMdWludCAqcGFyYW1zKTsKLSAgICBFcnJvciBn
ZXRRdWVyeU9iamVjdGk2NHYoR0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMaW50NjQgKnBhcmFt
cyk7Ci0gICAgRXJyb3IgZ2V0UXVlcnlPYmplY3R1aTY0dihHTHVpbnQgaWQsIEdMZW51bSBwbmFt
ZSwgR0x1aW50NjQgKnBhcmFtcyk7CisgICAgdm9pZCBnZXRRdWVyeU9iamVjdGl2KEdMdWludCBp
ZCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0
dWl2KEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBhcmFtcyk7CisgICAgdm9pZCBn
ZXRRdWVyeU9iamVjdGk2NHYoR0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMaW50NjQgKnBhcmFt
cyk7CisgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2KEdMdWludCBpZCwgR0xlbnVtIHBuYW1l
LCBHTHVpbnQ2NCAqcGFyYW1zKTsKIAogICAgIHZvaWQgc2V0VmVydGV4QXR0cmliRGl2aXNvcihH
THVpbnQgaW5kZXgsIEdMdWludCBkaXZpc29yKTsKIAogICAgIHZvaWQgc2FtcGxlclBhcmFtZXRl
cmkoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOworICAgIHZvaWQg
c2FtcGxlclBhcmFtZXRlcml2KEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdM
aW50ICpwYXJhbSk7CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZihHTHVpbnQgc2FtcGxlciwg
R0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKLSAgICBHTGludCBnZXRTYW1wbGVyUGFyYW1l
dGVyaShHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lKTsKLSAgICBHTGZsb2F0IGdldFNhbXBs
ZXJQYXJhbWV0ZXJmKEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUpOworICAgIHZvaWQgc2Ft
cGxlclBhcmFtZXRlcmZ2KEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxv
YXQgKnBhcmFtKTsKKworICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2KEdMdWludCBzYW1w
bGVyLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOworICAgIHZvaWQgZ2V0U2FtcGxlclBh
cmFtZXRlcmZ2KEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7
CiAKICAgICB2b2lkIHByb2dyYW1QYXJhbWV0ZXJpKEdMdWludCBwcm9ncmFtLCBHTGVudW0gcG5h
bWUsIEdMaW50IHZhbHVlKTsKIAogICAgIEJ1ZmZlciAqZ2V0QnVmZmVyKEdMdWludCBoYW5kbGUp
IGNvbnN0OwogICAgIEZlbmNlTlYgKmdldEZlbmNlTlYoR0x1aW50IGhhbmRsZSk7CiAgICAgRmVu
Y2VTeW5jICpnZXRGZW5jZVN5bmMoR0xzeW5jIGhhbmRsZSkgY29uc3Q7Ci0gICAgU2hhZGVyICpn
ZXRTaGFkZXIoR0x1aW50IGhhbmRsZSkgY29uc3Q7Ci0gICAgUHJvZ3JhbSAqZ2V0UHJvZ3JhbShH
THVpbnQgaGFuZGxlKSBjb25zdDsKICAgICBUZXh0dXJlICpnZXRUZXh0dXJlKEdMdWludCBoYW5k
bGUpIGNvbnN0OwogICAgIEZyYW1lYnVmZmVyICpnZXRGcmFtZWJ1ZmZlcihHTHVpbnQgaGFuZGxl
KSBjb25zdDsKICAgICBSZW5kZXJidWZmZXIgKmdldFJlbmRlcmJ1ZmZlcihHTHVpbnQgaGFuZGxl
KSBjb25zdDsKQEAgLTE2Miw4ICsxNzcsMTQgQEAgY2xhc3MgQ29udGV4dCBmaW5hbCA6IHB1Ymxp
YyBWYWxpZGF0aW9uQwogICAgIFF1ZXJ5ICpnZXRRdWVyeShHTHVpbnQgaGFuZGxlLCBib29sIGNy
ZWF0ZSwgR0xlbnVtIHR5cGUpOwogICAgIFF1ZXJ5ICpnZXRRdWVyeShHTHVpbnQgaGFuZGxlKSBj
b25zdDsKICAgICBUcmFuc2Zvcm1GZWVkYmFjayAqZ2V0VHJhbnNmb3JtRmVlZGJhY2soR0x1aW50
IGhhbmRsZSkgY29uc3Q7Ci0gICAgTGFiZWxlZE9iamVjdCAqZ2V0TGFiZWxlZE9iamVjdChHTGVu
dW0gaWRlbnRpZmllciwgR0x1aW50IG5hbWUpIGNvbnN0OwotICAgIExhYmVsZWRPYmplY3QgKmdl
dExhYmVsZWRPYmplY3RGcm9tUHRyKGNvbnN0IHZvaWQgKnB0cikgY29uc3Q7CisgICAgdm9pZCBv
YmplY3RMYWJlbChHTGVudW0gaWRlbnRpZmllciwgR0x1aW50IG5hbWUsIEdMc2l6ZWkgbGVuZ3Ro
LCBjb25zdCBHTGNoYXIgKmxhYmVsKTsKKyAgICB2b2lkIG9iamVjdFB0ckxhYmVsKGNvbnN0IHZv
aWQgKnB0ciwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdMY2hhciAqbGFiZWwpOworICAgIHZvaWQg
Z2V0T2JqZWN0TGFiZWwoR0xlbnVtIGlkZW50aWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEdMY2hhciAqbGFiZWwpIGNvbnN0OworICAgIHZvaWQgZ2V0T2JqZWN0UHRyTGFi
ZWwoY29uc3Qgdm9pZCAqcHRyLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xj
aGFyICpsYWJlbCkgY29uc3Q7CiAKICAgICBUZXh0dXJlICpnZXRUYXJnZXRUZXh0dXJlKEdMZW51
bSB0YXJnZXQpIGNvbnN0OwogICAgIFRleHR1cmUgKmdldFNhbXBsZXJUZXh0dXJlKHVuc2lnbmVk
IGludCBzYW1wbGVyLCBHTGVudW0gdHlwZSkgY29uc3Q7CkBAIC0xNzIsNiArMTkzLDEwIEBAIGNs
YXNzIENvbnRleHQgZmluYWwgOiBwdWJsaWMgVmFsaWRhdGlvbkMKIAogICAgIGJvb2wgaXNTYW1w
bGVyKEdMdWludCBzYW1wbGVyTmFtZSkgY29uc3Q7CiAKKyAgICBib29sIGlzVGV4dHVyZUdlbmVy
YXRlZChHTHVpbnQgdGV4dHVyZSkgY29uc3Q7CisgICAgYm9vbCBpc0J1ZmZlckdlbmVyYXRlZChH
THVpbnQgYnVmZmVyKSBjb25zdDsKKyAgICBib29sIGlzUmVuZGVyYnVmZmVyR2VuZXJhdGVkKEdM
dWludCByZW5kZXJidWZmZXIpIGNvbnN0OworICAgIGJvb2wgaXNGcmFtZWJ1ZmZlckdlbmVyYXRl
ZChHTHVpbnQgZnJhbWVidWZmZXIpIGNvbnN0OwogICAgIGJvb2wgaXNWZXJ0ZXhBcnJheUdlbmVy
YXRlZChHTHVpbnQgdmVydGV4QXJyYXkpOwogICAgIGJvb2wgaXNUcmFuc2Zvcm1GZWVkYmFja0dl
bmVyYXRlZChHTHVpbnQgdmVydGV4QXJyYXkpOwogCkBAIC0xODAsMTIgKzIwNSw4NSBAQCBjbGFz
cyBDb250ZXh0IGZpbmFsIDogcHVibGljIFZhbGlkYXRpb25DCiAgICAgdm9pZCBnZXRJbnRlZ2Vy
dihHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwogICAgIHZvaWQgZ2V0SW50ZWdlcjY0dihH
TGVudW0gcG5hbWUsIEdMaW50NjQgKnBhcmFtcyk7CiAgICAgdm9pZCBnZXRQb2ludGVydihHTGVu
dW0gcG5hbWUsIHZvaWQgKipwYXJhbXMpIGNvbnN0OwotCi0gICAgYm9vbCBnZXRJbmRleGVkSW50
ZWdlcnYoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGludCAqZGF0YSk7Ci0gICAgYm9v
bCBnZXRJbmRleGVkSW50ZWdlcjY0dihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMaW50
NjQgKmRhdGEpOwotCi0gICAgYm9vbCBnZXRRdWVyeVBhcmFtZXRlckluZm8oR0xlbnVtIHBuYW1l
LCBHTGVudW0gKnR5cGUsIHVuc2lnbmVkIGludCAqbnVtUGFyYW1zKTsKLSAgICBib29sIGdldElu
ZGV4ZWRRdWVyeVBhcmFtZXRlckluZm8oR0xlbnVtIHRhcmdldCwgR0xlbnVtICp0eXBlLCB1bnNp
Z25lZCBpbnQgKm51bVBhcmFtcyk7CisgICAgdm9pZCBnZXRCb29sZWFuaV92KEdMZW51bSB0YXJn
ZXQsIEdMdWludCBpbmRleCwgR0xib29sZWFuICpkYXRhKTsKKyAgICB2b2lkIGdldEludGVnZXJp
X3YoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGludCAqZGF0YSk7CisgICAgdm9pZCBn
ZXRJbnRlZ2VyNjRpX3YoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGludDY0ICpkYXRh
KTsKKworICAgIHZvaWQgYWN0aXZlVGV4dHVyZShHTGVudW0gdGV4dHVyZSk7CisgICAgdm9pZCBi
bGVuZENvbG9yKEdMY2xhbXBmIHJlZCwgR0xjbGFtcGYgZ3JlZW4sIEdMY2xhbXBmIGJsdWUsIEdM
Y2xhbXBmIGFscGhhKTsKKyAgICB2b2lkIGJsZW5kRXF1YXRpb25TZXBhcmF0ZShHTGVudW0gbW9k
ZVJHQiwgR0xlbnVtIG1vZGVBbHBoYSk7CisgICAgdm9pZCBibGVuZEZ1bmNTZXBhcmF0ZShHTGVu
dW0gc3JjUkdCLCBHTGVudW0gZHN0UkdCLCBHTGVudW0gc3JjQWxwaGEsIEdMZW51bSBkc3RBbHBo
YSk7CisgICAgdm9pZCBjbGVhckNvbG9yKEdMY2xhbXBmIHJlZCwgR0xjbGFtcGYgZ3JlZW4sIEdM
Y2xhbXBmIGJsdWUsIEdMY2xhbXBmIGFscGhhKTsKKyAgICB2b2lkIGNsZWFyRGVwdGhmKEdMY2xh
bXBmIGRlcHRoKTsKKyAgICB2b2lkIGNsZWFyU3RlbmNpbChHTGludCBzKTsKKyAgICB2b2lkIGNv
bG9yTWFzayhHTGJvb2xlYW4gcmVkLCBHTGJvb2xlYW4gZ3JlZW4sIEdMYm9vbGVhbiBibHVlLCBH
TGJvb2xlYW4gYWxwaGEpOworICAgIHZvaWQgY3VsbEZhY2UoR0xlbnVtIG1vZGUpOworICAgIHZv
aWQgZGVwdGhGdW5jKEdMZW51bSBmdW5jKTsKKyAgICB2b2lkIGRlcHRoTWFzayhHTGJvb2xlYW4g
ZmxhZyk7CisgICAgdm9pZCBkZXB0aFJhbmdlZihHTGNsYW1wZiB6TmVhciwgR0xjbGFtcGYgekZh
cik7CisgICAgdm9pZCBkaXNhYmxlKEdMZW51bSBjYXApOworICAgIHZvaWQgZGlzYWJsZVZlcnRl
eEF0dHJpYkFycmF5KEdMdWludCBpbmRleCk7CisgICAgdm9pZCBlbmFibGUoR0xlbnVtIGNhcCk7
CisgICAgdm9pZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHTHVpbnQgaW5kZXgpOworICAgIHZv
aWQgZnJvbnRGYWNlKEdMZW51bSBtb2RlKTsKKyAgICB2b2lkIGhpbnQoR0xlbnVtIHRhcmdldCwg
R0xlbnVtIG1vZGUpOworICAgIHZvaWQgbGluZVdpZHRoKEdMZmxvYXQgd2lkdGgpOworICAgIHZv
aWQgcGl4ZWxTdG9yZWkoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CisgICAgdm9pZCBwb2x5
Z29uT2Zmc2V0KEdMZmxvYXQgZmFjdG9yLCBHTGZsb2F0IHVuaXRzKTsKKyAgICB2b2lkIHNhbXBs
ZUNvdmVyYWdlKEdMY2xhbXBmIHZhbHVlLCBHTGJvb2xlYW4gaW52ZXJ0KTsKKyAgICB2b2lkIHNj
aXNzb3IoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwor
ICAgIHZvaWQgc3RlbmNpbEZ1bmNTZXBhcmF0ZShHTGVudW0gZmFjZSwgR0xlbnVtIGZ1bmMsIEdM
aW50IHJlZiwgR0x1aW50IG1hc2spOworICAgIHZvaWQgc3RlbmNpbE1hc2tTZXBhcmF0ZShHTGVu
dW0gZmFjZSwgR0x1aW50IG1hc2spOworICAgIHZvaWQgc3RlbmNpbE9wU2VwYXJhdGUoR0xlbnVt
IGZhY2UsIEdMZW51bSBmYWlsLCBHTGVudW0gemZhaWwsIEdMZW51bSB6cGFzcyk7CisgICAgdm9p
ZCB2ZXJ0ZXhBdHRyaWIxZihHTHVpbnQgaW5kZXgsIEdMZmxvYXQgeCk7CisgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWIxZnYoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2YWx1ZXMpOworICAgIHZv
aWQgdmVydGV4QXR0cmliMmYoR0x1aW50IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSk7Cisg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZnYoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2YWx1
ZXMpOworICAgIHZvaWQgdmVydGV4QXR0cmliM2YoR0x1aW50IGluZGV4LCBHTGZsb2F0IHgsIEdM
ZmxvYXQgeSwgR0xmbG9hdCB6KTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjNmdihHTHVpbnQgaW5k
ZXgsIGNvbnN0IEdMZmxvYXQgKnZhbHVlcyk7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZihHTHVp
bnQgaW5kZXgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdyk7Cisg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2YWx1
ZXMpOworICAgIHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcihHTHVpbnQgaW5kZXgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xl
YW4gbm9ybWFsaXplZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzdHJp
ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcHRyKTsKKyAg
ICB2b2lkIHZpZXdwb3J0KEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0KTsKKworICAgIHZvaWQgdmVydGV4QXR0cmliSVBvaW50ZXIoR0x1aW50IGluZGV4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBzdHJpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THZvaWQgKnBvaW50ZXIpOworICAgIHZvaWQgdmVydGV4QXR0cmliSTRpKEdMdWludCBpbmRleCwg
R0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQgdyk7CisgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWJJNHVpKEdMdWludCBpbmRleCwgR0x1aW50IHgsIEdMdWludCB5LCBHTHVpbnQgeiwgR0x1aW50
IHcpOworICAgIHZvaWQgdmVydGV4QXR0cmliSTRpdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMaW50
ICp2KTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KEdMdWludCBpbmRleCwgY29uc3QgR0x1
aW50ICp2KTsKKworICAgIHZvaWQgZGVidWdNZXNzYWdlQ29udHJvbChHTGVudW0gc291cmNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHNldmVyaXR5LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THVpbnQgKmlkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGVuYWJs
ZWQpOworICAgIHZvaWQgZGVidWdNZXNzYWdlSW5zZXJ0KEdMZW51bSBzb3VyY2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzZXZl
cml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxlbmd0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKmJ1Zik7CisgICAgdm9pZCBkZWJ1
Z01lc3NhZ2VDYWxsYmFjayhHTERFQlVHUFJPQ0tIUiBjYWxsYmFjaywgY29uc3Qgdm9pZCAqdXNl
clBhcmFtKTsKKyAgICBHTHVpbnQgZ2V0RGVidWdNZXNzYWdlTG9nKEdMdWludCBjb3VudCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSAqc291cmNlcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSAqdHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgKmlkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAqc2V2ZXJp
dGllcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKm1lc3NhZ2VMb2cpOworICAgIHZv
aWQgcHVzaERlYnVnR3JvdXAoR0xlbnVtIHNvdXJjZSwgR0x1aW50IGlkLCBHTHNpemVpIGxlbmd0
aCwgY29uc3QgR0xjaGFyICptZXNzYWdlKTsKKyAgICB2b2lkIHBvcERlYnVnR3JvdXAoKTsKIAog
ICAgIHZvaWQgY2xlYXIoR0xiaXRmaWVsZCBtYXNrKTsKICAgICB2b2lkIGNsZWFyQnVmZmVyZnYo
R0xlbnVtIGJ1ZmZlciwgR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0xmbG9hdCAqdmFsdWVzKTsK
QEAgLTM2OCw2ICs0NjYsMjkgQEAgY2xhc3MgQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBWYWxpZGF0
aW9uQwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW1hZ2VTaXplLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpkYXRhKTsKKyAgICB2b2lk
IGNvcHlUZXh0dXJlQ0hST01JVU0oR0x1aW50IHNvdXJjZUlkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgZGVzdElkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGRlc3RUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNr
RmxpcFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBhY2tQcmVt
dWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5w
YWNrVW5tdWx0aXBseUFscGhhKTsKKyAgICB2b2lkIGNvcHlTdWJUZXh0dXJlQ0hST01JVU0oR0x1
aW50IHNvdXJjZUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZGVz
dElkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdp
ZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFja0ZsaXBZLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNrUHJlbXVsdGlwbHlB
bHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFja1Vu
bXVsdGlwbHlBbHBoYSk7CisgICAgdm9pZCBjb21wcmVzc2VkQ29weVRleHR1cmVDSFJPTUlVTShH
THVpbnQgc291cmNlSWQsIEdMdWludCBkZXN0SWQpOworCisgICAgdm9pZCBnZW5lcmF0ZU1pcG1h
cChHTGVudW0gdGFyZ2V0KTsKKworICAgIEdMYm9vbGVhbiBlbmFibGVFeHRlbnNpb24oY29uc3Qg
Y2hhciAqbmFtZSk7CiAKICAgICBFcnJvciBmbHVzaCgpOwogICAgIEVycm9yIGZpbmlzaCgpOwpA
QCAtMzg2LDI1ICs1MDcsOTkgQEAgY2xhc3MgQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBWYWxpZGF0
aW9uQwogICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFy
ICptYXJrZXIpOwogICAgIHZvaWQgcG9wR3JvdXBNYXJrZXIoKTsKIAotICAgIHZvaWQgcmVjb3Jk
RXJyb3IoY29uc3QgRXJyb3IgJmVycm9yKSBvdmVycmlkZTsKKyAgICB2b2lkIGJpbmRVbmlmb3Jt
TG9jYXRpb24oR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBjb25zdCBHTGNoYXIgKm5h
bWUpOworCisgICAgLy8gQ0hST01JVU1fZnJhbWVidWZmZXJfbWl4ZWRfc2FtcGxlcworICAgIHZv
aWQgc2V0Q292ZXJhZ2VNb2R1bGF0aW9uKEdMZW51bSBjb21wb25lbnRzKTsKKworICAgIC8vIENI
Uk9NSVVNX3BhdGhfcmVuZGVyaW5nCisgICAgdm9pZCBsb2FkUGF0aFJlbmRlcmluZ01hdHJpeChH
TGVudW0gbWF0cml4TW9kZSwgY29uc3QgR0xmbG9hdCAqbWF0cml4KTsKKyAgICB2b2lkIGxvYWRQ
YXRoUmVuZGVyaW5nSWRlbnRpdHlNYXRyaXgoR0xlbnVtIG1hdHJpeE1vZGUpOworICAgIHZvaWQg
c3RlbmNpbEZpbGxQYXRoKEdMdWludCBwYXRoLCBHTGVudW0gZmlsbE1vZGUsIEdMdWludCBtYXNr
KTsKKyAgICB2b2lkIHN0ZW5jaWxTdHJva2VQYXRoKEdMdWludCBwYXRoLCBHTGludCByZWZlcmVu
Y2UsIEdMdWludCBtYXNrKTsKKyAgICB2b2lkIGNvdmVyRmlsbFBhdGgoR0x1aW50IHBhdGgsIEdM
ZW51bSBjb3Zlck1vZGUpOworICAgIHZvaWQgY292ZXJTdHJva2VQYXRoKEdMdWludCBwYXRoLCBH
TGVudW0gY292ZXJNb2RlKTsKKyAgICB2b2lkIHN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aChHTHVp
bnQgcGF0aCwgR0xlbnVtIGZpbGxNb2RlLCBHTHVpbnQgbWFzaywgR0xlbnVtIGNvdmVyTW9kZSk7
CisgICAgdm9pZCBzdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aChHTHVpbnQgcGF0aCwgR0xpbnQg
cmVmZXJlbmNlLCBHTHVpbnQgbWFzaywgR0xlbnVtIGNvdmVyTW9kZSk7CisgICAgdm9pZCBjb3Zl
ckZpbGxQYXRoSW5zdGFuY2VkKEdMc2l6ZWkgbnVtUGF0aHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgcGF0aEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBjb3Zlck1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOworICAgIHZvaWQgY292ZXJTdHJva2VQYXRoSW5zdGFuY2Vk
KEdMc2l6ZWkgbnVtUGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBhdGhOYW1lVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB2b2lkICpwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
cGF0aEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVy
TW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3Jt
VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0
cmFuc2Zvcm1WYWx1ZXMpOworICAgIHZvaWQgc3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkKEdMc2l6
ZWkgbnVtUGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBh
dGhOYW1lVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lk
ICpwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJB
c2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7
CisgICAgdm9pZCBzdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZChHTHNpemVpIG51bVBhdGhzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7
CisgICAgdm9pZCBzdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWQoR0xzaXplaSBudW1Q
YXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cGF0aE5hbWVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHZvaWQgKnBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBwYXRoQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1
ZXMpOworICAgIHZvaWQgc3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWQoR0xzaXpl
aSBudW1QYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwYXRoTmFtZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1U
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKKyAgICB2b2lkIGJpbmRGcmFnbWVudElucHV0TG9j
YXRpb24oR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBjb25zdCBHTGNoYXIgKm5hbWUp
OworICAgIHZvaWQgcHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuKEdMdWludCBwcm9ncmFtLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBnZW5Nb2RlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGNvbXBvbmVudHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqY29lZmZzKTsKKwor
ICAgIHZvaWQgYnVmZmVyRGF0YShHTGVudW0gdGFyZ2V0LCBHTHNpemVpcHRyIHNpemUsIGNvbnN0
IEdMdm9pZCAqZGF0YSwgR0xlbnVtIHVzYWdlKTsKKyAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0xl
bnVtIHRhcmdldCwgR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIHNpemUsIGNvbnN0IEdMdm9p
ZCAqZGF0YSk7CisgICAgdm9pZCBhdHRhY2hTaGFkZXIoR0x1aW50IHByb2dyYW0sIEdMdWludCBz
aGFkZXIpOworCisgICAgdm9pZCBoYW5kbGVFcnJvcihjb25zdCBFcnJvciAmZXJyb3IpIG92ZXJy
aWRlOwogCiAgICAgR0xlbnVtIGdldEVycm9yKCk7CisgICAgdm9pZCBtYXJrQ29udGV4dExvc3Qo
KTsKKyAgICBib29sIGlzQ29udGV4dExvc3QoKTsKICAgICBHTGVudW0gZ2V0UmVzZXRTdGF0dXMo
KTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZXNldE5vdGlmaWNhdGlvbkVuYWJsZWQoKTsKKyAgICBi
b29sIGlzUmVzZXROb3RpZmljYXRpb25FbmFibGVkKCk7CiAKICAgICBjb25zdCBlZ2w6OkNvbmZp
ZyAqZ2V0Q29uZmlnKCkgY29uc3Q7CiAgICAgRUdMZW51bSBnZXRDbGllbnRUeXBlKCkgY29uc3Q7
CiAgICAgRUdMZW51bSBnZXRSZW5kZXJCdWZmZXIoKSBjb25zdDsKIAotICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZnZXRSZW5kZXJlclN0cmluZygpIGNvbnN0OworICAgIGNvbnN0IGNoYXIgKmdldFJl
bmRlcmVyU3RyaW5nKCkgY29uc3Q7CiAKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmZ2V0RXh0ZW5z
aW9uU3RyaW5nKCkgY29uc3Q7Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJmdldEV4dGVuc2lvblN0
cmluZyhzaXplX3QgaWR4KSBjb25zdDsKKyAgICBjb25zdCBjaGFyICpnZXRFeHRlbnNpb25TdHJp
bmcoKSBjb25zdDsKKyAgICBjb25zdCBjaGFyICpnZXRFeHRlbnNpb25TdHJpbmcoc2l6ZV90IGlk
eCkgY29uc3Q7CiAgICAgc2l6ZV90IGdldEV4dGVuc2lvblN0cmluZ0NvdW50KCkgY29uc3Q7CiAK
LSAgICByeDo6UmVuZGVyZXIgKmdldFJlbmRlcmVyKCkgeyByZXR1cm4gbVJlbmRlcmVyOyB9Ci0K
LSAgICBTdGF0ZSAmZ2V0U3RhdGUoKSB7IHJldHVybiBtU3RhdGU7IH0KKyAgICByeDo6Q29udGV4
dEltcGwgKmdldEltcGxlbWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbUltcGxlbWVudGF0aW9u
LmdldCgpOyB9CisgICAgY29uc3QgV29ya2Fyb3VuZHMgJmdldFdvcmthcm91bmRzKCkgY29uc3Q7
CiAKICAgcHJpdmF0ZToKICAgICB2b2lkIHN5bmNSZW5kZXJlclN0YXRlKCk7CkBAIC00MjgsNyAr
NjIzLDE0IEBAIGNsYXNzIENvbnRleHQgZmluYWwgOiBwdWJsaWMgVmFsaWRhdGlvbkMKICAgICB2
b2lkIGluaXRSZW5kZXJlclN0cmluZygpOwogICAgIHZvaWQgaW5pdEV4dGVuc2lvblN0cmluZ3Mo
KTsKIAotICAgIHZvaWQgaW5pdENhcHMoR0x1aW50IGNsaWVudFZlcnNpb24pOworICAgIHZvaWQg
aW5pdENhcHMoYm9vbCB3ZWJHTENvbnRleHQpOworICAgIHZvaWQgdXBkYXRlQ2FwcygpOworICAg
IHZvaWQgaW5pdFdvcmthcm91bmRzKCk7CisKKyAgICBMYWJlbGVkT2JqZWN0ICpnZXRMYWJlbGVk
T2JqZWN0KEdMZW51bSBpZGVudGlmaWVyLCBHTHVpbnQgbmFtZSkgY29uc3Q7CisgICAgTGFiZWxl
ZE9iamVjdCAqZ2V0TGFiZWxlZE9iamVjdEZyb21QdHIoY29uc3Qgdm9pZCAqcHRyKSBjb25zdDsK
KworICAgIHN0ZDo6dW5pcXVlX3B0cjxyeDo6Q29udGV4dEltcGw+IG1JbXBsZW1lbnRhdGlvbjsK
IAogICAgIC8vIENhcHMgdG8gdXNlIGZvciB2YWxpZGF0aW9uCiAgICAgQ2FwcyBtQ2FwczsKQEAg
LTQzOSwxMCArNjQxLDEwIEBAIGNsYXNzIENvbnRleHQgZmluYWwgOiBwdWJsaWMgVmFsaWRhdGlv
bkMKICAgICAvLyBTaGFkZXIgY29tcGlsZXIKICAgICBDb21waWxlciAqbUNvbXBpbGVyOwogCi0g
ICAgcng6OlJlbmRlcmVyICpjb25zdCBtUmVuZGVyZXI7Ci0gICAgU3RhdGUgbVN0YXRlOworICAg
IFN0YXRlIG1HTFN0YXRlOwogCi0gICAgaW50IG1DbGllbnRWZXJzaW9uOworICAgIGludCBtQ2xp
ZW50TWFqb3JWZXJzaW9uOworICAgIGludCBtQ2xpZW50TWlub3JWZXJzaW9uOwogCiAgICAgY29u
c3QgZWdsOjpDb25maWcgKm1Db25maWc7CiAgICAgRUdMZW51bSBtQ2xpZW50VHlwZTsKQEAgLTQ2
NCw5ICs2NjYsOSBAQCBjbGFzcyBDb250ZXh0IGZpbmFsIDogcHVibGljIFZhbGlkYXRpb25DCiAg
ICAgUmVzb3VyY2VNYXA8VHJhbnNmb3JtRmVlZGJhY2s+IG1UcmFuc2Zvcm1GZWVkYmFja01hcDsK
ICAgICBIYW5kbGVBbGxvY2F0b3IgbVRyYW5zZm9ybUZlZWRiYWNrQWxsb2NhdG9yOwogCi0gICAg
c3RkOjpzdHJpbmcgbVJlbmRlcmVyU3RyaW5nOwotICAgIHN0ZDo6c3RyaW5nIG1FeHRlbnNpb25T
dHJpbmc7Ci0gICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IG1FeHRlbnNpb25TdHJpbmdzOwor
ICAgIGNvbnN0IGNoYXIgKm1SZW5kZXJlclN0cmluZzsKKyAgICBjb25zdCBjaGFyICptRXh0ZW5z
aW9uU3RyaW5nOworICAgIHN0ZDo6dmVjdG9yPGNvbnN0IGNoYXIgKj4gbUV4dGVuc2lvblN0cmlu
Z3M7CiAKICAgICAvLyBSZWNvcmRlZCBlcnJvcnMKICAgICB0eXBlZGVmIHN0ZDo6c2V0PEdMZW51
bT4gRXJyb3JTZXQ7CkBAIC00NzYsNiArNjc4LDcgQEAgY2xhc3MgQ29udGV4dCBmaW5hbCA6IHB1
YmxpYyBWYWxpZGF0aW9uQwogICAgIGJvb2wgbUhhc0JlZW5DdXJyZW50OwogICAgIGJvb2wgbUNv
bnRleHRMb3N0OwogICAgIEdMZW51bSBtUmVzZXRTdGF0dXM7CisgICAgYm9vbCBtQ29udGV4dExv
c3RGb3JjZWQ7CiAgICAgR0xlbnVtIG1SZXNldFN0cmF0ZWd5OwogICAgIGJvb2wgbVJvYnVzdEFj
Y2VzczsKICAgICBlZ2w6OlN1cmZhY2UgKm1DdXJyZW50U3VyZmFjZTsKQEAgLTQ5MCw2ICs2OTMs
OCBAQCBjbGFzcyBDb250ZXh0IGZpbmFsIDogcHVibGljIFZhbGlkYXRpb25DCiAgICAgU3RhdGU6
OkRpcnR5T2JqZWN0cyBtQ2xlYXJEaXJ0eU9iamVjdHM7CiAgICAgU3RhdGU6OkRpcnR5Qml0cyBt
QmxpdERpcnR5Qml0czsKICAgICBTdGF0ZTo6RGlydHlPYmplY3RzIG1CbGl0RGlydHlPYmplY3Rz
OworCisgICAgV29ya2Fyb3VuZHMgbVdvcmthcm91bmRzOwogfTsKIAogfSAgLy8gbmFtZXNwYWNl
IGdsCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dFN0
YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvQ29udGV4dFN0YXRlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDU4OSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIERhdGEuY3BwOiBDb250YWluZXIgY2xhc3Mg
Zm9yIGFsbCBHTCByZWxldmFudCBzdGF0ZSwgY2FwcyBhbmQgb2JqZWN0cworCisjaW5jbHVkZSAi
bGliQU5HTEUvQ29udGV4dFN0YXRlLmgiCisKKyNpbmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZl
ci5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1Jlc291cmNlTWFuYWdlci5oIgorCituYW1lc3BhY2Ug
Z2wKK3sKKworQ29udGV4dFN0YXRlOjpDb250ZXh0U3RhdGUodWludHB0cl90IGNvbnRleHRJbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGNsaWVudE1ham9yVmVyc2lvbkluLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY2xpZW50TWlub3JWZXJzaW9uSW4sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSAqc3RhdGVJbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IENhcHMgJmNhcHNJbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRleHR1cmVDYXBzTWFwICZ0ZXh0dXJlQ2Fwc0luLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgRXh0ZW5zaW9ucyAmZXh0ZW5zaW9uc0luLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VNYW5hZ2VyICpyZXNvdXJjZU1hbmFnZXJJbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExpbWl0YXRpb25zICZsaW1pdGF0aW9u
c0luKQorICAgIDogbUdMVmVyc2lvbihjbGllbnRNYWpvclZlcnNpb25JbiwgY2xpZW50TWlub3JW
ZXJzaW9uSW4pLAorICAgICAgbUNvbnRleHQoY29udGV4dEluKSwKKyAgICAgIG1TdGF0ZShzdGF0
ZUluKSwKKyAgICAgIG1DYXBzKGNhcHNJbiksCisgICAgICBtVGV4dHVyZUNhcHModGV4dHVyZUNh
cHNJbiksCisgICAgICBtRXh0ZW5zaW9ucyhleHRlbnNpb25zSW4pLAorICAgICAgbVJlc291cmNl
TWFuYWdlcihyZXNvdXJjZU1hbmFnZXJJbiksCisgICAgICBtTGltaXRhdGlvbnMobGltaXRhdGlv
bnNJbikKK3sKK30KKworQ29udGV4dFN0YXRlOjp+Q29udGV4dFN0YXRlKCkKK3sKK30KKworY29u
c3QgVGV4dHVyZUNhcHMgJkNvbnRleHRTdGF0ZTo6Z2V0VGV4dHVyZUNhcChHTGVudW0gaW50ZXJu
YWxGb3JtYXQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1UZXh0dXJlQ2Fwcy5nZXQoaW50ZXJuYWxG
b3JtYXQpOworfQorCitWYWxpZGF0aW9uQ29udGV4dDo6VmFsaWRhdGlvbkNvbnRleHQoR0xpbnQg
Y2xpZW50TWFqb3JWZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGNsaWVudE1pbm9yVmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTdGF0ZSAqc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgQ2FwcyAmY2FwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUZXh0dXJlQ2Fwc01hcCAmdGV4dHVyZUNhcHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgRXh0ZW5zaW9ucyAmZXh0ZW5zaW9ucywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZXNvdXJjZU1hbmFnZXIgKnJlc291
cmNlTWFuYWdlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBM
aW1pdGF0aW9ucyAmbGltaXRhdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBza2lwVmFsaWRhdGlvbikKKyAgICA6IG1TdGF0ZShyZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4odGhpcyksCisgICAgICAgICAgICAgY2xpZW50TWFqb3JWZXJzaW9uLAorICAg
ICAgICAgICAgIGNsaWVudE1pbm9yVmVyc2lvbiwKKyAgICAgICAgICAgICBzdGF0ZSwKKyAgICAg
ICAgICAgICBjYXBzLAorICAgICAgICAgICAgIHRleHR1cmVDYXBzLAorICAgICAgICAgICAgIGV4
dGVuc2lvbnMsCisgICAgICAgICAgICAgcmVzb3VyY2VNYW5hZ2VyLAorICAgICAgICAgICAgIGxp
bWl0YXRpb25zKSwKKyAgICAgIG1Ta2lwVmFsaWRhdGlvbihza2lwVmFsaWRhdGlvbikKK3sKK30K
KworYm9vbCBWYWxpZGF0aW9uQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXJJbmZvKEdMZW51bSBw
bmFtZSwgR0xlbnVtICp0eXBlLCB1bnNpZ25lZCBpbnQgKm51bVBhcmFtcykKK3sKKyAgICBpZiAo
cG5hbWUgPj0gR0xfRFJBV19CVUZGRVIwX0VYVCAmJiBwbmFtZSA8PSBHTF9EUkFXX0JVRkZFUjE1
X0VYVCkKKyAgICB7CisgICAgICAgICp0eXBlICAgICAgPSBHTF9JTlQ7CisgICAgICAgICpudW1Q
YXJhbXMgPSAxOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBQbGVhc2Ug
bm90ZTogdGhlIHF1ZXJ5IHR5cGUgcmV0dXJuZWQgZm9yIERFUFRIX0NMRUFSX1ZBTFVFIGluIHRo
aXMgaW1wbGVtZW50YXRpb24KKyAgICAvLyBpcyBGTE9BVCByYXRoZXIgdGhhbiBJTlQsIGFzIHdv
dWxkIGJlIHN1Z2dlc3RlZCBieSB0aGUgR0wgRVMgMi4wIHNwZWMuIFRoaXMgaXMgZHVlCisgICAg
Ly8gdG8gdGhlIGZhY3QgdGhhdCBpdCBpcyBzdG9yZWQgaW50ZXJuYWxseSBhcyBhIGZsb2F0LCBh
bmQgc28gd291bGQgcmVxdWlyZSBjb252ZXJzaW9uCisgICAgLy8gaWYgcmV0dXJuZWQgZnJvbSBD
b250ZXh0OjpnZXRJbnRlZ2Vydi4gU2luY2UgdGhpcyBjb252ZXJzaW9uIGlzIGFscmVhZHkgaW1w
bGVtZW50ZWQKKyAgICAvLyBpbiB0aGUgY2FzZSB0aGF0IG9uZSBjYWxscyBnbEdldEludGVnZXJ2
IHRvIHJldHJpZXZlIGEgZmxvYXQtdHlwZWQgc3RhdGUgdmFyaWFibGUsIHdlCisgICAgLy8gcGxh
Y2UgREVQVEhfQ0xFQVJfVkFMVUUgd2l0aCB0aGUgZmxvYXRzLiBUaGlzIHNob3VsZCBtYWtlIG5v
IGRpZmZlcmVuY2UgdG8gdGhlIGNhbGxpbmcKKyAgICAvLyBhcHBsaWNhdGlvbi4KKyAgICBzd2l0
Y2ggKHBuYW1lKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1RFWFRVUkVfRk9S
TUFUUzoKKyAgICAgICAgeworICAgICAgICAgICAgKnR5cGUgICAgICA9IEdMX0lOVDsKKyAgICAg
ICAgICAgICpudW1QYXJhbXMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGdldENhcHMoKS5j
b21wcmVzc2VkVGV4dHVyZUZvcm1hdHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUFJPR1JBTV9CSU5BUllfRk9STUFUU19PRVM6
CisgICAgICAgIHsKKyAgICAgICAgICAgICp0eXBlICAgICAgPSBHTF9JTlQ7CisgICAgICAgICAg
ICAqbnVtUGFyYW1zID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihnZXRDYXBzKCkucHJvZ3Jh
bUJpbmFyeUZvcm1hdHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgR0xfU0hBREVSX0JJTkFSWV9GT1JNQVRTOgorICAgICAgICB7Cisg
ICAgICAgICAgICAqdHlwZSAgICAgID0gR0xfSU5UOworICAgICAgICAgICAgKm51bVBhcmFtcyA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oZ2V0Q2FwcygpLnNoYWRlckJpbmFyeUZvcm1hdHMu
c2l6ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAg
Y2FzZSBHTF9NQVhfVkVSVEVYX0FUVFJJQlM6CisgICAgICAgIGNhc2UgR0xfTUFYX1ZFUlRFWF9V
TklGT1JNX1ZFQ1RPUlM6CisgICAgICAgIGNhc2UgR0xfTUFYX1ZBUllJTkdfVkVDVE9SUzoKKyAg
ICAgICAgY2FzZSBHTF9NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUzoKKyAgICAgICAg
Y2FzZSBHTF9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFM6CisgICAgICAgIGNhc2UgR0xf
TUFYX1RFWFRVUkVfSU1BR0VfVU5JVFM6CisgICAgICAgIGNhc2UgR0xfTUFYX0ZSQUdNRU5UX1VO
SUZPUk1fVkVDVE9SUzoKKyAgICAgICAgY2FzZSBHTF9NQVhfUkVOREVSQlVGRkVSX1NJWkU6Cisg
ICAgICAgIGNhc2UgR0xfTUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVDoKKyAgICAgICAgY2FzZSBH
TF9NQVhfRFJBV19CVUZGRVJTX0VYVDoKKyAgICAgICAgY2FzZSBHTF9OVU1fU0hBREVSX0JJTkFS
WV9GT1JNQVRTOgorICAgICAgICBjYXNlIEdMX05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFU
UzoKKyAgICAgICAgY2FzZSBHTF9BUlJBWV9CVUZGRVJfQklORElORzoKKyAgICAgICAgLy8gY2Fz
ZSBHTF9GUkFNRUJVRkZFUl9CSU5ESU5HOiAvLyBlcXVpdmFsZW50IHRvIERSQVdfRlJBTUVCVUZG
RVJfQklORElOR19BTkdMRQorICAgICAgICBjYXNlIEdMX0RSQVdfRlJBTUVCVUZGRVJfQklORElO
R19BTkdMRToKKyAgICAgICAgY2FzZSBHTF9SRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkdfQU5HTEU6
CisgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0JJTkRJTkc6CisgICAgICAgIGNhc2UgR0xf
Q1VSUkVOVF9QUk9HUkFNOgorICAgICAgICBjYXNlIEdMX1BBQ0tfQUxJR05NRU5UOgorICAgICAg
ICBjYXNlIEdMX1BBQ0tfUkVWRVJTRV9ST1dfT1JERVJfQU5HTEU6CisgICAgICAgIGNhc2UgR0xf
VU5QQUNLX0FMSUdOTUVOVDoKKyAgICAgICAgY2FzZSBHTF9HRU5FUkFURV9NSVBNQVBfSElOVDoK
KyAgICAgICAgY2FzZSBHTF9GUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUzoKKyAg
ICAgICAgY2FzZSBHTF9SRURfQklUUzoKKyAgICAgICAgY2FzZSBHTF9HUkVFTl9CSVRTOgorICAg
ICAgICBjYXNlIEdMX0JMVUVfQklUUzoKKyAgICAgICAgY2FzZSBHTF9BTFBIQV9CSVRTOgorICAg
ICAgICBjYXNlIEdMX0RFUFRIX0JJVFM6CisgICAgICAgIGNhc2UgR0xfU1RFTkNJTF9CSVRTOgor
ICAgICAgICBjYXNlIEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkc6CisgICAgICAgIGNh
c2UgR0xfQ1VMTF9GQUNFX01PREU6CisgICAgICAgIGNhc2UgR0xfRlJPTlRfRkFDRToKKyAgICAg
ICAgY2FzZSBHTF9BQ1RJVkVfVEVYVFVSRToKKyAgICAgICAgY2FzZSBHTF9TVEVOQ0lMX0ZVTkM6
CisgICAgICAgIGNhc2UgR0xfU1RFTkNJTF9WQUxVRV9NQVNLOgorICAgICAgICBjYXNlIEdMX1NU
RU5DSUxfUkVGOgorICAgICAgICBjYXNlIEdMX1NURU5DSUxfRkFJTDoKKyAgICAgICAgY2FzZSBH
TF9TVEVOQ0lMX1BBU1NfREVQVEhfRkFJTDoKKyAgICAgICAgY2FzZSBHTF9TVEVOQ0lMX1BBU1Nf
REVQVEhfUEFTUzoKKyAgICAgICAgY2FzZSBHTF9TVEVOQ0lMX0JBQ0tfRlVOQzoKKyAgICAgICAg
Y2FzZSBHTF9TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSzoKKyAgICAgICAgY2FzZSBHTF9TVEVOQ0lM
X0JBQ0tfUkVGOgorICAgICAgICBjYXNlIEdMX1NURU5DSUxfQkFDS19GQUlMOgorICAgICAgICBj
YXNlIEdMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUw6CisgICAgICAgIGNhc2UgR0xfU1RF
TkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUzoKKyAgICAgICAgY2FzZSBHTF9ERVBUSF9GVU5DOgor
ICAgICAgICBjYXNlIEdMX0JMRU5EX1NSQ19SR0I6CisgICAgICAgIGNhc2UgR0xfQkxFTkRfU1JD
X0FMUEhBOgorICAgICAgICBjYXNlIEdMX0JMRU5EX0RTVF9SR0I6CisgICAgICAgIGNhc2UgR0xf
QkxFTkRfRFNUX0FMUEhBOgorICAgICAgICBjYXNlIEdMX0JMRU5EX0VRVUFUSU9OX1JHQjoKKyAg
ICAgICAgY2FzZSBHTF9CTEVORF9FUVVBVElPTl9BTFBIQToKKyAgICAgICAgY2FzZSBHTF9TVEVO
Q0lMX1dSSVRFTUFTSzoKKyAgICAgICAgY2FzZSBHTF9TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLOgor
ICAgICAgICBjYXNlIEdMX1NURU5DSUxfQ0xFQVJfVkFMVUU6CisgICAgICAgIGNhc2UgR0xfU1VC
UElYRUxfQklUUzoKKyAgICAgICAgY2FzZSBHTF9NQVhfVEVYVFVSRV9TSVpFOgorICAgICAgICBj
YXNlIEdMX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkU6CisgICAgICAgIGNhc2UgR0xfU0FNUExF
X0JVRkZFUlM6CisgICAgICAgIGNhc2UgR0xfU0FNUExFUzoKKyAgICAgICAgY2FzZSBHTF9JTVBM
RU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEU6CisgICAgICAgIGNhc2UgR0xfSU1QTEVNRU5UQVRJ
T05fQ09MT1JfUkVBRF9GT1JNQVQ6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9CSU5ESU5HXzJE
OgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQklORElOR19DVUJFX01BUDoKKyAgICAgICAgY2Fz
ZSBHTF9SRVNFVF9OT1RJRklDQVRJT05fU1RSQVRFR1lfRVhUOgorICAgICAgICBjYXNlIEdMX05V
TV9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTX09FUzoKKyAgICAgICAgeworICAgICAgICAgICAgKnR5
cGUgICAgICA9IEdMX0lOVDsKKyAgICAgICAgICAgICpudW1QYXJhbXMgPSAxOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9NQVhfU0FNUExFU19B
TkdMRToKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFnZXRFeHRlbnNpb25zKCkuZnJhbWVi
dWZmZXJNdWx0aXNhbXBsZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqdHlwZSAgICAgID0gR0xfSU5UOwor
ICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIEdMX01BWF9WSUVXUE9SVF9ESU1TOgorICAgICAgICB7Cisg
ICAgICAgICAgICAqdHlwZSAgICAgID0gR0xfSU5UOworICAgICAgICAgICAgKm51bVBhcmFtcyA9
IDI7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdM
X1ZJRVdQT1JUOgorICAgICAgICBjYXNlIEdMX1NDSVNTT1JfQk9YOgorICAgICAgICB7CisgICAg
ICAgICAgICAqdHlwZSAgICAgID0gR0xfSU5UOworICAgICAgICAgICAgKm51bVBhcmFtcyA9IDQ7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1NI
QURFUl9DT01QSUxFUjoKKyAgICAgICAgY2FzZSBHTF9TQU1QTEVfQ09WRVJBR0VfSU5WRVJUOgor
ICAgICAgICBjYXNlIEdMX0RFUFRIX1dSSVRFTUFTSzoKKyAgICAgICAgY2FzZSBHTF9DVUxMX0ZB
Q0U6ICAgICAgICAgICAgICAgICAvLyBDVUxMX0ZBQ0UgdGhyb3VnaCBESVRIRVIgYXJlIG5hdHVy
YWwgdG8gSXNFbmFibGVkLAorICAgICAgICBjYXNlIEdMX1BPTFlHT05fT0ZGU0VUX0ZJTEw6ICAg
ICAgIC8vIGJ1dCBjYW4gYmUgcmV0cmlldmVkIHRocm91Z2ggdGhlIEdldHtUeXBlfXYgcXVlcmll
cy4KKyAgICAgICAgY2FzZSBHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0U6ICAvLyBGb3IgdGhp
cyBwdXJwb3NlLCB0aGV5IGFyZSB0cmVhdGVkIGhlcmUgYXMKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBib29sLW5hdHVyYWwKKyAgICAgICAgY2FzZSBHTF9T
QU1QTEVfQ09WRVJBR0U6CisgICAgICAgIGNhc2UgR0xfU0NJU1NPUl9URVNUOgorICAgICAgICBj
YXNlIEdMX1NURU5DSUxfVEVTVDoKKyAgICAgICAgY2FzZSBHTF9ERVBUSF9URVNUOgorICAgICAg
ICBjYXNlIEdMX0JMRU5EOgorICAgICAgICBjYXNlIEdMX0RJVEhFUjoKKyAgICAgICAgY2FzZSBH
TF9DT05URVhUX1JPQlVTVF9BQ0NFU1NfRVhUOgorICAgICAgICB7CisgICAgICAgICAgICAqdHlw
ZSAgICAgID0gR0xfQk9PTDsKKyAgICAgICAgICAgICpudW1QYXJhbXMgPSAxOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT0xPUl9XUklURU1B
U0s6CisgICAgICAgIHsKKyAgICAgICAgICAgICp0eXBlICAgICAgPSBHTF9CT09MOworICAgICAg
ICAgICAgKm51bVBhcmFtcyA9IDQ7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIEdMX1BPTFlHT05fT0ZGU0VUX0ZBQ1RPUjoKKyAgICAgICAgY2FzZSBH
TF9QT0xZR09OX09GRlNFVF9VTklUUzoKKyAgICAgICAgY2FzZSBHTF9TQU1QTEVfQ09WRVJBR0Vf
VkFMVUU6CisgICAgICAgIGNhc2UgR0xfREVQVEhfQ0xFQVJfVkFMVUU6CisgICAgICAgIGNhc2Ug
R0xfTElORV9XSURUSDoKKyAgICAgICAgeworICAgICAgICAgICAgKnR5cGUgICAgICA9IEdMX0ZM
T0FUOworICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7CisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0FMSUFTRURfTElORV9XSURUSF9SQU5HRToK
KyAgICAgICAgY2FzZSBHTF9BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0U6CisgICAgICAgIGNhc2Ug
R0xfREVQVEhfUkFOR0U6CisgICAgICAgIHsKKyAgICAgICAgICAgICp0eXBlICAgICAgPSBHTF9G
TE9BVDsKKyAgICAgICAgICAgICpudW1QYXJhbXMgPSAyOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT0xPUl9DTEVBUl9WQUxVRToKKyAgICAg
ICAgY2FzZSBHTF9CTEVORF9DT0xPUjoKKyAgICAgICAgeworICAgICAgICAgICAgKnR5cGUgICAg
ICA9IEdMX0ZMT0FUOworICAgICAgICAgICAgKm51bVBhcmFtcyA9IDQ7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX01BWF9URVhUVVJFX01BWF9B
TklTT1RST1BZX0VYVDoKKyAgICAgICAgICAgIGlmICghZ2V0RXh0ZW5zaW9ucygpLm1heFRleHR1
cmVBbmlzb3Ryb3B5KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICp0eXBlICAgICAgPSBHTF9GTE9BVDsKKyAg
ICAgICAgICAgICpudW1QYXJhbXMgPSAxOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIGNhc2UgR0xfVElNRVNUQU1QX0VYVDoKKyAgICAgICAgICAgIGlmICghZ2V0RXh0ZW5zaW9u
cygpLmRpc2pvaW50VGltZXJRdWVyeSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqdHlwZSAgICAgID0gR0xf
SU5UXzY0X0FOR0xFWDsKKyAgICAgICAgICAgICpudW1QYXJhbXMgPSAxOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIGNhc2UgR0xfR1BVX0RJU0pPSU5UX0VYVDoKKyAgICAgICAg
ICAgIGlmICghZ2V0RXh0ZW5zaW9ucygpLmRpc2pvaW50VGltZXJRdWVyeSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAqdHlwZSAgICAgID0gR0xfSU5UOworICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSBHTF9DT1ZFUkFHRV9NT0RVTEFU
SU9OX0NIUk9NSVVNOgorICAgICAgICAgICAgaWYgKCFnZXRFeHRlbnNpb25zKCkuZnJhbWVidWZm
ZXJNaXhlZFNhbXBsZXMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKnR5cGUgICAgICA9IEdMX0lOVDsKKyAg
ICAgICAgICAgICpudW1QYXJhbXMgPSAxOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIGNhc2UgR0xfVEVYVFVSRV9CSU5ESU5HX0VYVEVSTkFMX09FUzoKKyAgICAgICAgICAgIGlm
ICghZ2V0RXh0ZW5zaW9ucygpLmVnbFN0cmVhbUNvbnN1bWVyRXh0ZXJuYWwgJiYgIWdldEV4dGVu
c2lvbnMoKS5lZ2xJbWFnZUV4dGVybmFsKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICp0eXBlICAgICAgPSBH
TF9JTlQ7CisgICAgICAgICAgICAqbnVtUGFyYW1zID0gMTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIGlmIChnZXRFeHRlbnNpb25zKCkuZGVidWcpCisgICAgeworICAg
ICAgICBzd2l0Y2ggKHBuYW1lKQorICAgICAgICB7CisgICAgICAgICAgICBjYXNlIEdMX0RFQlVH
X0xPR0dFRF9NRVNTQUdFUzoKKyAgICAgICAgICAgIGNhc2UgR0xfREVCVUdfTkVYVF9MT0dHRURf
TUVTU0FHRV9MRU5HVEg6CisgICAgICAgICAgICBjYXNlIEdMX0RFQlVHX0dST1VQX1NUQUNLX0RF
UFRIOgorICAgICAgICAgICAgY2FzZSBHTF9NQVhfREVCVUdfTUVTU0FHRV9MRU5HVEg6CisgICAg
ICAgICAgICBjYXNlIEdMX01BWF9ERUJVR19MT0dHRURfTUVTU0FHRVM6CisgICAgICAgICAgICBj
YXNlIEdMX01BWF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSDoKKyAgICAgICAgICAgIGNhc2UgR0xf
TUFYX0xBQkVMX0xFTkdUSDoKKyAgICAgICAgICAgICAgICAqdHlwZSAgICAgID0gR0xfSU5UOwor
ICAgICAgICAgICAgICAgICpudW1QYXJhbXMgPSAxOworICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgICAgICAgICBjYXNlIEdMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9VUzoKKyAg
ICAgICAgICAgIGNhc2UgR0xfREVCVUdfT1VUUFVUOgorICAgICAgICAgICAgICAgICp0eXBlICAg
ICAgPSBHTF9CT09MOworICAgICAgICAgICAgICAgICpudW1QYXJhbXMgPSAxOworICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGdldEV4dGVu
c2lvbnMoKS5tdWx0aXNhbXBsZUNvbXBhdGliaWxpdHkpCisgICAgeworICAgICAgICBzd2l0Y2gg
KHBuYW1lKQorICAgICAgICB7CisgICAgICAgICAgICBjYXNlIEdMX01VTFRJU0FNUExFX0VYVDoK
KyAgICAgICAgICAgIGNhc2UgR0xfU0FNUExFX0FMUEhBX1RPX09ORV9FWFQ6CisgICAgICAgICAg
ICAgICAgKnR5cGUgICAgICA9IEdMX0JPT0w7CisgICAgICAgICAgICAgICAgKm51bVBhcmFtcyA9
IDE7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBpZiAoZ2V0RXh0ZW5zaW9ucygpLnBhdGhSZW5kZXJpbmcpCisgICAgeworICAgICAgICBzd2l0
Y2ggKHBuYW1lKQorICAgICAgICB7CisgICAgICAgICAgICBjYXNlIEdMX1BBVEhfTU9ERUxWSUVX
X01BVFJJWF9DSFJPTUlVTToKKyAgICAgICAgICAgIGNhc2UgR0xfUEFUSF9QUk9KRUNUSU9OX01B
VFJJWF9DSFJPTUlVTToKKyAgICAgICAgICAgICAgICAqdHlwZSA9IEdMX0ZMT0FUOworICAgICAg
ICAgICAgICAgICpudW1QYXJhbXMgPSAxNjsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChnZXRFeHRlbnNpb25zKCkuYmluZEdlbmVyYXRl
c1Jlc291cmNlKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChwbmFtZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgY2FzZSBHTF9CSU5EX0dFTkVSQVRFU19SRVNPVVJDRV9DSFJPTUlVTToKKyAgICAg
ICAgICAgICAgICAqdHlwZSAgICAgID0gR0xfQk9PTDsKKyAgICAgICAgICAgICAgICAqbnVtUGFy
YW1zID0gMTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIC8vIENoZWNrIGZvciBFUzMuMCsgcGFyYW1ldGVyIG5hbWVzIHdoaWNoIGFyZSBhbHNv
IGV4cG9zZWQgYXMgRVMyIGV4dGVuc2lvbnMKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAg
ICAgICAgY2FzZSBHTF9QQUNLX1JPV19MRU5HVEg6CisgICAgICAgIGNhc2UgR0xfUEFDS19TS0lQ
X1JPV1M6CisgICAgICAgIGNhc2UgR0xfUEFDS19TS0lQX1BJWEVMUzoKKyAgICAgICAgICAgIGlm
ICgoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKSAmJiAhZ2V0RXh0ZW5zaW9ucygpLnBhY2tT
dWJpbWFnZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAqdHlwZSAgICAgID0gR0xfSU5UOworICAgICAgICAg
ICAgKm51bVBhcmFtcyA9IDE7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2Fz
ZSBHTF9VTlBBQ0tfUk9XX0xFTkdUSDoKKyAgICAgICAgY2FzZSBHTF9VTlBBQ0tfU0tJUF9ST1dT
OgorICAgICAgICBjYXNlIEdMX1VOUEFDS19TS0lQX1BJWEVMUzoKKyAgICAgICAgICAgIGlmICgo
Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKSAmJiAhZ2V0RXh0ZW5zaW9ucygpLnVucGFja1N1
YmltYWdlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICp0eXBlICAgICAgPSBHTF9JTlQ7CisgICAgICAgICAg
ICAqbnVtUGFyYW1zID0gMTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBjYXNl
IEdMX1ZFUlRFWF9BUlJBWV9CSU5ESU5HOgorICAgICAgICAgICAgaWYgKChnZXRDbGllbnRNYWpv
clZlcnNpb24oKSA8IDMpICYmICFnZXRFeHRlbnNpb25zKCkudmVydGV4QXJyYXlPYmplY3QpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgKnR5cGUgICAgICA9IEdMX0lOVDsKKyAgICAgICAgICAgICpudW1QYXJh
bXMgPSAxOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGNhc2UgR0xfUElYRUxf
UEFDS19CVUZGRVJfQklORElORzoKKyAgICAgICAgY2FzZSBHTF9QSVhFTF9VTlBBQ0tfQlVGRkVS
X0JJTkRJTkc6CisgICAgICAgICAgICBpZiAoKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykg
JiYgIWdldEV4dGVuc2lvbnMoKS5waXhlbEJ1ZmZlck9iamVjdCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAq
dHlwZSAgICAgID0gR0xfSU5UOworICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBjb25zdCBHTFZlcnNpb24gJmdsVmVyc2lv
biA9IG1TdGF0ZS5nZXRHTFZlcnNpb24oKTsKKworICAgIGlmICghZ2xWZXJzaW9uLmlzRVMzT3JH
cmVhdGVyKCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8g
Q2hlY2sgZm9yIEVTMy4wKyBwYXJhbWV0ZXIgbmFtZXMKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAg
IHsKKyAgICAgICAgY2FzZSBHTF9NQVhfVU5JRk9STV9CVUZGRVJfQklORElOR1M6CisgICAgICAg
IGNhc2UgR0xfVU5JRk9STV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVDoKKyAgICAgICAgY2FzZSBH
TF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HOgorICAgICAgICBjYXNlIEdMX1RSQU5TRk9STV9GRUVE
QkFDS19CSU5ESU5HOgorICAgICAgICBjYXNlIEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJf
QklORElORzoKKyAgICAgICAgY2FzZSBHTF9DT1BZX1JFQURfQlVGRkVSX0JJTkRJTkc6CisgICAg
ICAgIGNhc2UgR0xfQ09QWV9XUklURV9CVUZGRVJfQklORElORzoKKyAgICAgICAgY2FzZSBHTF9T
QU1QTEVSX0JJTkRJTkc6CisgICAgICAgIGNhc2UgR0xfUkVBRF9CVUZGRVI6CisgICAgICAgIGNh
c2UgR0xfVEVYVFVSRV9CSU5ESU5HXzNEOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQklORElO
R18yRF9BUlJBWToKKyAgICAgICAgY2FzZSBHTF9NQVhfM0RfVEVYVFVSRV9TSVpFOgorICAgICAg
ICBjYXNlIEdMX01BWF9BUlJBWV9URVhUVVJFX0xBWUVSUzoKKyAgICAgICAgY2FzZSBHTF9NQVhf
VkVSVEVYX1VOSUZPUk1fQkxPQ0tTOgorICAgICAgICBjYXNlIEdMX01BWF9GUkFHTUVOVF9VTklG
T1JNX0JMT0NLUzoKKyAgICAgICAgY2FzZSBHTF9NQVhfQ09NQklORURfVU5JRk9STV9CTE9DS1M6
CisgICAgICAgIGNhc2UgR0xfTUFYX1ZFUlRFWF9PVVRQVVRfQ09NUE9ORU5UUzoKKyAgICAgICAg
Y2FzZSBHTF9NQVhfRlJBR01FTlRfSU5QVVRfQ09NUE9ORU5UUzoKKyAgICAgICAgY2FzZSBHTF9N
QVhfVkFSWUlOR19DT01QT05FTlRTOgorICAgICAgICBjYXNlIEdMX01BWF9WRVJURVhfVU5JRk9S
TV9DT01QT05FTlRTOgorICAgICAgICBjYXNlIEdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0NPTVBP
TkVOVFM6CisgICAgICAgIGNhc2UgR0xfTUlOX1BST0dSQU1fVEVYRUxfT0ZGU0VUOgorICAgICAg
ICBjYXNlIEdMX01BWF9QUk9HUkFNX1RFWEVMX09GRlNFVDoKKyAgICAgICAgY2FzZSBHTF9OVU1f
RVhURU5TSU9OUzoKKyAgICAgICAgY2FzZSBHTF9NQUpPUl9WRVJTSU9OOgorICAgICAgICBjYXNl
IEdMX01JTk9SX1ZFUlNJT046CisgICAgICAgIGNhc2UgR0xfTUFYX0VMRU1FTlRTX0lORElDRVM6
CisgICAgICAgIGNhc2UgR0xfTUFYX0VMRU1FTlRTX1ZFUlRJQ0VTOgorICAgICAgICBjYXNlIEdM
X01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfSU5URVJMRUFWRURfQ09NUE9ORU5UUzoKKyAgICAgICAg
Y2FzZSBHTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0FUVFJJQlM6CisgICAgICAg
IGNhc2UgR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9DT01QT05FTlRTOgorICAg
ICAgICBjYXNlIEdMX1VOUEFDS19JTUFHRV9IRUlHSFQ6CisgICAgICAgIGNhc2UgR0xfVU5QQUNL
X1NLSVBfSU1BR0VTOgorICAgICAgICB7CisgICAgICAgICAgICAqdHlwZSAgICAgID0gR0xfSU5U
OworICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQorCisgICAgICAgIGNhc2UgR0xfTUFYX0VMRU1FTlRfSU5ERVg6CisgICAgICAg
IGNhc2UgR0xfTUFYX1VOSUZPUk1fQkxPQ0tfU0laRToKKyAgICAgICAgY2FzZSBHTF9NQVhfQ09N
QklORURfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUzoKKyAgICAgICAgY2FzZSBHTF9NQVhfQ09N
QklORURfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTOgorICAgICAgICBjYXNlIEdMX01BWF9T
RVJWRVJfV0FJVF9USU1FT1VUOgorICAgICAgICB7CisgICAgICAgICAgICAqdHlwZSAgICAgID0g
R0xfSU5UXzY0X0FOR0xFWDsKKyAgICAgICAgICAgICpudW1QYXJhbXMgPSAxOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIEdMX1RSQU5TRk9STV9G
RUVEQkFDS19BQ1RJVkU6CisgICAgICAgIGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BBVVNF
RDoKKyAgICAgICAgY2FzZSBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWDoKKyAgICAg
ICAgY2FzZSBHTF9SQVNURVJJWkVSX0RJU0NBUkQ6CisgICAgICAgIHsKKyAgICAgICAgICAgICp0
eXBlICAgICAgPSBHTF9CT09MOworICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgR0xfTUFYX1RFWFRV
UkVfTE9EX0JJQVM6CisgICAgICAgIHsKKyAgICAgICAgICAgICp0eXBlICAgICAgPSBHTF9GTE9B
VDsKKyAgICAgICAgICAgICpudW1QYXJhbXMgPSAxOworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIWdsVmVyc2lvbi5pc0VTMzEoKSkKKyAgICB7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAg
IHsKKyAgICAgICAgY2FzZSBHTF9NQVhfRlJBTUVCVUZGRVJfV0lEVEg6CisgICAgICAgIGNhc2Ug
R0xfTUFYX0ZSQU1FQlVGRkVSX0hFSUdIVDoKKyAgICAgICAgY2FzZSBHTF9NQVhfRlJBTUVCVUZG
RVJfU0FNUExFUzoKKyAgICAgICAgY2FzZSBHTF9NQVhfU0FNUExFX01BU0tfV09SRFM6CisgICAg
ICAgIGNhc2UgR0xfTUFYX0NPTE9SX1RFWFRVUkVfU0FNUExFUzoKKyAgICAgICAgY2FzZSBHTF9N
QVhfREVQVEhfVEVYVFVSRV9TQU1QTEVTOgorICAgICAgICBjYXNlIEdMX01BWF9JTlRFR0VSX1NB
TVBMRVM6CisgICAgICAgIGNhc2UgR0xfTUFYX1ZFUlRFWF9BVFRSSUJfUkVMQVRJVkVfT0ZGU0VU
OgorICAgICAgICBjYXNlIEdMX01BWF9WRVJURVhfQVRUUklCX0JJTkRJTkdTOgorICAgICAgICBj
YXNlIEdMX01BWF9WRVJURVhfQVRUUklCX1NUUklERToKKyAgICAgICAgY2FzZSBHTF9NQVhfVkVS
VEVYX0FUT01JQ19DT1VOVEVSX0JVRkZFUlM6CisgICAgICAgIGNhc2UgR0xfTUFYX1ZFUlRFWF9B
VE9NSUNfQ09VTlRFUlM6CisgICAgICAgIGNhc2UgR0xfTUFYX1ZFUlRFWF9JTUFHRV9VTklGT1JN
UzoKKyAgICAgICAgY2FzZSBHTF9NQVhfVkVSVEVYX1NIQURFUl9TVE9SQUdFX0JMT0NLUzoKKyAg
ICAgICAgY2FzZSBHTF9NQVhfRlJBR01FTlRfQVRPTUlDX0NPVU5URVJfQlVGRkVSUzoKKyAgICAg
ICAgY2FzZSBHTF9NQVhfRlJBR01FTlRfQVRPTUlDX0NPVU5URVJTOgorICAgICAgICBjYXNlIEdM
X01BWF9GUkFHTUVOVF9JTUFHRV9VTklGT1JNUzoKKyAgICAgICAgY2FzZSBHTF9NQVhfRlJBR01F
TlRfU0hBREVSX1NUT1JBR0VfQkxPQ0tTOgorICAgICAgICBjYXNlIEdMX01JTl9QUk9HUkFNX1RF
WFRVUkVfR0FUSEVSX09GRlNFVDoKKyAgICAgICAgY2FzZSBHTF9NQVhfUFJPR1JBTV9URVhUVVJF
X0dBVEhFUl9PRkZTRVQ6CisgICAgICAgIGNhc2UgR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9J
TlZPQ0FUSU9OUzoKKyAgICAgICAgY2FzZSBHTF9NQVhfQ09NUFVURV9VTklGT1JNX0JMT0NLUzoK
KyAgICAgICAgY2FzZSBHTF9NQVhfQ09NUFVURV9URVhUVVJFX0lNQUdFX1VOSVRTOgorICAgICAg
ICBjYXNlIEdMX01BWF9DT01QVVRFX1NIQVJFRF9NRU1PUllfU0laRToKKyAgICAgICAgY2FzZSBH
TF9NQVhfQ09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFM6CisgICAgICAgIGNhc2UgR0xfTUFYX0NP
TVBVVEVfQVRPTUlDX0NPVU5URVJfQlVGRkVSUzoKKyAgICAgICAgY2FzZSBHTF9NQVhfQ09NUFVU
RV9BVE9NSUNfQ09VTlRFUlM6CisgICAgICAgIGNhc2UgR0xfTUFYX0NPTVBVVEVfSU1BR0VfVU5J
Rk9STVM6CisgICAgICAgIGNhc2UgR0xfTUFYX0NPTUJJTkVEX0NPTVBVVEVfVU5JRk9STV9DT01Q
T05FTlRTOgorICAgICAgICBjYXNlIEdMX01BWF9DT01QVVRFX1NIQURFUl9TVE9SQUdFX0JMT0NL
UzoKKyAgICAgICAgY2FzZSBHTF9NQVhfQ09NQklORURfU0hBREVSX09VVFBVVF9SRVNPVVJDRVM6
CisgICAgICAgIGNhc2UgR0xfTUFYX1VOSUZPUk1fTE9DQVRJT05TOgorICAgICAgICBjYXNlIEdM
X01BWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfQklORElOR1M6CisgICAgICAgIGNhc2UgR0xfTUFY
X0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TSVpFOgorICAgICAgICBjYXNlIEdMX01BWF9DT01CSU5F
RF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTOgorICAgICAgICBjYXNlIEdMX01BWF9DT01CSU5FRF9B
VE9NSUNfQ09VTlRFUlM6CisgICAgICAgIGNhc2UgR0xfTUFYX0lNQUdFX1VOSVRTOgorICAgICAg
ICBjYXNlIEdMX01BWF9DT01CSU5FRF9JTUFHRV9VTklGT1JNUzoKKyAgICAgICAgY2FzZSBHTF9N
QVhfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJTkRJTkdTOgorICAgICAgICBjYXNlIEdMX01BWF9D
T01CSU5FRF9TSEFERVJfU1RPUkFHRV9CTE9DS1M6CisgICAgICAgIGNhc2UgR0xfU0hBREVSX1NU
T1JBR0VfQlVGRkVSX09GRlNFVF9BTElHTk1FTlQ6CisgICAgICAgICAgICAqdHlwZSAgICAgID0g
R0xfSU5UOworICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgY2FzZSBHTF9NQVhfU0hBREVSX1NUT1JBR0VfQkxPQ0tfU0laRToKKyAg
ICAgICAgICAgICp0eXBlICAgICAgPSBHTF9JTlRfNjRfQU5HTEVYOworICAgICAgICAgICAgKm51
bVBhcmFtcyA9IDE7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgVmFsaWRhdGlvbkNvbnRleHQ6OmdldEluZGV4ZWRRdWVyeVBh
cmFtZXRlckluZm8oR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICp0eXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKm51bVBhcmFt
cykKK3sKKworICAgIGNvbnN0IEdMVmVyc2lvbiAmZ2xWZXJzaW9uID0gbVN0YXRlLmdldEdMVmVy
c2lvbigpOworICAgIGlmICghZ2xWZXJzaW9uLmlzRVMzT3JHcmVhdGVyKCkpCisgICAgeworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3dpdGNoICh0YXJnZXQpCisgICAgewor
ICAgICAgICBjYXNlIEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklORElORzoKKyAgICAg
ICAgY2FzZSBHTF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HOgorICAgICAgICB7CisgICAgICAgICAg
ICAqdHlwZSAgICAgID0gR0xfSU5UOworICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1RSQU5TRk9S
TV9GRUVEQkFDS19CVUZGRVJfU1RBUlQ6CisgICAgICAgIGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURC
QUNLX0JVRkZFUl9TSVpFOgorICAgICAgICBjYXNlIEdMX1VOSUZPUk1fQlVGRkVSX1NUQVJUOgor
ICAgICAgICBjYXNlIEdMX1VOSUZPUk1fQlVGRkVSX1NJWkU6CisgICAgICAgIHsKKyAgICAgICAg
ICAgICp0eXBlICAgICAgPSBHTF9JTlRfNjRfQU5HTEVYOworICAgICAgICAgICAgKm51bVBhcmFt
cyA9IDE7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGlmICghZ2xWZXJzaW9uLmlzRVMzMSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIHN3aXRjaCAodGFyZ2V0KQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9NQVhf
Q09NUFVURV9XT1JLX0dST1VQX0NPVU5UOgorICAgICAgICBjYXNlIEdMX01BWF9DT01QVVRFX1dP
UktfR1JPVVBfU0laRToKKyAgICAgICAgeworICAgICAgICAgICAgKnR5cGUgICAgICA9IEdMX0lO
VDsKKyAgICAgICAgICAgICpudW1QYXJhbXMgPSAxOworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1Byb2dyYW0gKlZh
bGlkYXRpb25Db250ZXh0OjpnZXRQcm9ncmFtKEdMdWludCBoYW5kbGUpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1TdGF0ZS5tUmVzb3VyY2VNYW5hZ2VyLT5nZXRQcm9ncmFtKGhhbmRsZSk7Cit9CisK
K1NoYWRlciAqVmFsaWRhdGlvbkNvbnRleHQ6OmdldFNoYWRlcihHTHVpbnQgaGFuZGxlKSBjb25z
dAoreworICAgIHJldHVybiBtU3RhdGUubVJlc291cmNlTWFuYWdlci0+Z2V0U2hhZGVyKGhhbmRs
ZSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBnbApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL0NvbnRleHRTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0U3RhdGUuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dFN0YXRlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjIgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTQg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBDb250ZXh0
U3RhdGU6IENvbnRhaW5lciBjbGFzcyBmb3IgYWxsIEdMIGNvbnRleHQgc3RhdGUsIGNhcHMgYW5k
IG9iamVjdHMuCisKKyNpZm5kZWYgTElCQU5HTEVfQ09OVEVYVFNUQVRFX0hfCisjZGVmaW5lIExJ
QkFOR0xFX0NPTlRFWFRTVEFURV9IXworCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9TdGF0ZS5oIgorCituYW1lc3BhY2UgZ2wKK3sKK2NsYXNzIFZh
bGlkYXRpb25Db250ZXh0OworY2xhc3MgQ29udGV4dFN0YXRlOworCitjbGFzcyBHTFZlcnNpb24g
ZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKK3sKKyAgcHVibGljOgorICAgIEdMVmVyc2lvbihH
TGludCBjbGllbnRNYWpvclZlcnNpb24sIEdMaW50IGNsaWVudE1pbm9yVmVyc2lvbikKKyAgICAg
ICAgOiBtQ2xpZW50TWFqb3JWZXJzaW9uKGNsaWVudE1ham9yVmVyc2lvbiksIG1DbGllbnRNaW5v
clZlcnNpb24oY2xpZW50TWlub3JWZXJzaW9uKQorICAgIHsKKyAgICB9CisKKyAgICBHTGludCBn
ZXRDbGllbnRNYWpvclZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtQ2xpZW50TWFqb3JWZXJzaW9u
OyB9CisgICAgR0xpbnQgZ2V0Q2xpZW50TWlub3JWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbUNs
aWVudE1pbm9yVmVyc2lvbjsgfQorCisgICAgYm9vbCBpc0VTMigpIGNvbnN0IHsgcmV0dXJuIG1D
bGllbnRNYWpvclZlcnNpb24gPT0gMjsgfQorICAgIGJvb2wgaXNFUzMoKSBjb25zdCB7IHJldHVy
biBtQ2xpZW50TWFqb3JWZXJzaW9uID09IDMgJiYgbUNsaWVudE1pbm9yVmVyc2lvbiA9PSAwOyB9
CisgICAgYm9vbCBpc0VTMzEoKSBjb25zdCB7IHJldHVybiBtQ2xpZW50TWFqb3JWZXJzaW9uID09
IDMgJiYgbUNsaWVudE1pbm9yVmVyc2lvbiA9PSAxOyB9CisgICAgYm9vbCBpc0VTM09yR3JlYXRl
cigpIGNvbnN0IHsgcmV0dXJuIG1DbGllbnRNYWpvclZlcnNpb24gPj0gMzsgfQorCisgIHByaXZh
dGU6CisgICAgR0xpbnQgbUNsaWVudE1ham9yVmVyc2lvbjsKKyAgICBHTGludCBtQ2xpZW50TWlu
b3JWZXJzaW9uOworfTsKKworY2xhc3MgQ29udGV4dFN0YXRlIGZpbmFsIDogcHVibGljIGFuZ2xl
OjpOb25Db3B5YWJsZQoreworICBwdWJsaWM6CisgICAgQ29udGV4dFN0YXRlKHVpbnRwdHJfdCBj
b250ZXh0LAorICAgICAgICAgICAgICAgICBHTGludCBjbGllbnRNYWpvclZlcnNpb24sCisgICAg
ICAgICAgICAgICAgIEdMaW50IGNsaWVudE1pbm9yVmVyc2lvbiwKKyAgICAgICAgICAgICAgICAg
U3RhdGUgKnN0YXRlLAorICAgICAgICAgICAgICAgICBjb25zdCBDYXBzICZjYXBzLAorICAgICAg
ICAgICAgICAgICBjb25zdCBUZXh0dXJlQ2Fwc01hcCAmdGV4dHVyZUNhcHMsCisgICAgICAgICAg
ICAgICAgIGNvbnN0IEV4dGVuc2lvbnMgJmV4dGVuc2lvbnMsCisgICAgICAgICAgICAgICAgIGNv
bnN0IFJlc291cmNlTWFuYWdlciAqcmVzb3VyY2VNYW5hZ2VyLAorICAgICAgICAgICAgICAgICBj
b25zdCBMaW1pdGF0aW9ucyAmbGltaXRhdGlvbnMpOworICAgIH5Db250ZXh0U3RhdGUoKTsKKwor
ICAgIHVpbnRwdHJfdCBnZXRDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbUNvbnRleHQ7IH0KKyAg
ICBHTGludCBnZXRDbGllbnRNYWpvclZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtR0xWZXJzaW9u
LmdldENsaWVudE1ham9yVmVyc2lvbigpOyB9CisgICAgR0xpbnQgZ2V0Q2xpZW50TWlub3JWZXJz
aW9uKCkgY29uc3QgeyByZXR1cm4gbUdMVmVyc2lvbi5nZXRDbGllbnRNaW5vclZlcnNpb24oKTsg
fQorICAgIGNvbnN0IEdMVmVyc2lvbiAmZ2V0R0xWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbUdM
VmVyc2lvbjsgfQorICAgIGNvbnN0IFN0YXRlICZnZXRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuICpt
U3RhdGU7IH0KKyAgICBjb25zdCBDYXBzICZnZXRDYXBzKCkgY29uc3QgeyByZXR1cm4gbUNhcHM7
IH0KKyAgICBjb25zdCBUZXh0dXJlQ2Fwc01hcCAmZ2V0VGV4dHVyZUNhcHMoKSBjb25zdCB7IHJl
dHVybiBtVGV4dHVyZUNhcHM7IH0KKyAgICBjb25zdCBFeHRlbnNpb25zICZnZXRFeHRlbnNpb25z
KCkgY29uc3QgeyByZXR1cm4gbUV4dGVuc2lvbnM7IH0KKyAgICBjb25zdCBSZXNvdXJjZU1hbmFn
ZXIgJmdldFJlc291cmNlTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuICptUmVzb3VyY2VNYW5hZ2Vy
OyB9CisgICAgY29uc3QgTGltaXRhdGlvbnMgJmdldExpbWl0YXRpb25zKCkgY29uc3QgeyByZXR1
cm4gbUxpbWl0YXRpb25zOyB9CisKKyAgICBjb25zdCBUZXh0dXJlQ2FwcyAmZ2V0VGV4dHVyZUNh
cChHTGVudW0gaW50ZXJuYWxGb3JtYXQpIGNvbnN0OworCisgIHByaXZhdGU6CisgICAgZnJpZW5k
IGNsYXNzIENvbnRleHQ7CisgICAgZnJpZW5kIGNsYXNzIFZhbGlkYXRpb25Db250ZXh0OworCisg
ICAgR0xWZXJzaW9uIG1HTFZlcnNpb247CisgICAgdWludHB0cl90IG1Db250ZXh0OworICAgIFN0
YXRlICptU3RhdGU7CisgICAgY29uc3QgQ2FwcyAmbUNhcHM7CisgICAgY29uc3QgVGV4dHVyZUNh
cHNNYXAgJm1UZXh0dXJlQ2FwczsKKyAgICBjb25zdCBFeHRlbnNpb25zICZtRXh0ZW5zaW9uczsK
KyAgICBjb25zdCBSZXNvdXJjZU1hbmFnZXIgKm1SZXNvdXJjZU1hbmFnZXI7CisgICAgY29uc3Qg
TGltaXRhdGlvbnMgJm1MaW1pdGF0aW9uczsKK307CisKK2NsYXNzIFZhbGlkYXRpb25Db250ZXh0
IDogYW5nbGU6Ok5vbkNvcHlhYmxlCit7CisgIHB1YmxpYzoKKyAgICBWYWxpZGF0aW9uQ29udGV4
dChHTGludCBjbGllbnRNYWpvclZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
Y2xpZW50TWlub3JWZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgIFN0YXRlICpzdGF0ZSwK
KyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDYXBzICZjYXBzLAorICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRleHR1cmVDYXBzTWFwICZ0ZXh0dXJlQ2FwcywKKyAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBFeHRlbnNpb25zICZleHRlbnNpb25zLAorICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFJlc291cmNlTWFuYWdlciAqcmVzb3VyY2VNYW5hZ2VyLAorICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IExpbWl0YXRpb25zICZsaW1pdGF0aW9ucywKKyAgICAgICAgICAgICAg
ICAgICAgICBib29sIHNraXBWYWxpZGF0aW9uKTsKKyAgICB2aXJ0dWFsIH5WYWxpZGF0aW9uQ29u
dGV4dCgpIHt9CisKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXJyb3IoY29uc3QgRXJyb3IgJmVy
cm9yKSA9IDA7CisKKyAgICBjb25zdCBDb250ZXh0U3RhdGUgJmdldENvbnRleHRTdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1TdGF0ZTsgfQorICAgIGludCBnZXRDbGllbnRNYWpvclZlcnNpb24oKSBj
b25zdCB7IHJldHVybiBtU3RhdGUuZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCk7IH0KKyAgICBpbnQg
Z2V0Q2xpZW50TWlub3JWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbVN0YXRlLmdldENsaWVudE1p
bm9yVmVyc2lvbigpOyB9CisgICAgY29uc3QgR0xWZXJzaW9uICZnZXRHTFZlcnNpb24oKSBjb25z
dCB7IHJldHVybiBtU3RhdGUubUdMVmVyc2lvbjsgfQorICAgIGNvbnN0IFN0YXRlICZnZXRHTFN0
YXRlKCkgY29uc3QgeyByZXR1cm4gbVN0YXRlLmdldFN0YXRlKCk7IH0KKyAgICBjb25zdCBDYXBz
ICZnZXRDYXBzKCkgY29uc3QgeyByZXR1cm4gbVN0YXRlLmdldENhcHMoKTsgfQorICAgIGNvbnN0
IFRleHR1cmVDYXBzTWFwICZnZXRUZXh0dXJlQ2FwcygpIGNvbnN0IHsgcmV0dXJuIG1TdGF0ZS5n
ZXRUZXh0dXJlQ2FwcygpOyB9CisgICAgY29uc3QgRXh0ZW5zaW9ucyAmZ2V0RXh0ZW5zaW9ucygp
IGNvbnN0IHsgcmV0dXJuIG1TdGF0ZS5nZXRFeHRlbnNpb25zKCk7IH0KKyAgICBjb25zdCBMaW1p
dGF0aW9ucyAmZ2V0TGltaXRhdGlvbnMoKSBjb25zdCB7IHJldHVybiBtU3RhdGUuZ2V0TGltaXRh
dGlvbnMoKTsgfQorICAgIGJvb2wgc2tpcFZhbGlkYXRpb24oKSBjb25zdCB7IHJldHVybiBtU2tp
cFZhbGlkYXRpb247IH0KKworICAgIC8vIFNwZWNpZmljIG1ldGhvZHMgbmVlZGVkIGZvciB2YWxp
ZGF0aW9uLgorICAgIGJvb2wgZ2V0UXVlcnlQYXJhbWV0ZXJJbmZvKEdMZW51bSBwbmFtZSwgR0xl
bnVtICp0eXBlLCB1bnNpZ25lZCBpbnQgKm51bVBhcmFtcyk7CisgICAgYm9vbCBnZXRJbmRleGVk
UXVlcnlQYXJhbWV0ZXJJbmZvKEdMZW51bSB0YXJnZXQsIEdMZW51bSAqdHlwZSwgdW5zaWduZWQg
aW50ICpudW1QYXJhbXMpOworCisgICAgUHJvZ3JhbSAqZ2V0UHJvZ3JhbShHTHVpbnQgaGFuZGxl
KSBjb25zdDsKKyAgICBTaGFkZXIgKmdldFNoYWRlcihHTHVpbnQgaGFuZGxlKSBjb25zdDsKKwor
ICBwcm90ZWN0ZWQ6CisgICAgQ29udGV4dFN0YXRlIG1TdGF0ZTsKKyAgICBib29sIG1Ta2lwVmFs
aWRhdGlvbjsKK307Cit9ICAvLyBuYW1lc3BhY2UgZ2wKKworI2VuZGlmICAvLyBMSUJBTkdMRV9D
T05URVhUU1RBVEVfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9EYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvRGF0YS5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9EYXRhLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDU2ICswLDAgQEAK
LS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCi0vLwotCi0vLyBEYXRhLmNwcDogQ29udGFpbmVyIGNsYXNzIGZvciBhbGwgR0wg
cmVsZXZhbnQgc3RhdGUsIGNhcHMgYW5kIG9iamVjdHMKLQotI2luY2x1ZGUgImxpYkFOR0xFL0Rh
dGEuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9SZXNvdXJjZU1hbmFnZXIuaCIKLQotbmFtZXNwYWNl
IGdsCi17Ci0KLURhdGE6OkRhdGEodWludHB0cl90IGNvbnRleHRJbiwKLSAgICAgICAgICAgR0xp
bnQgY2xpZW50VmVyc2lvbkluLAotICAgICAgICAgICBjb25zdCBTdGF0ZSAmc3RhdGVJbiwKLSAg
ICAgICAgICAgY29uc3QgQ2FwcyAmY2Fwc0luLAotICAgICAgICAgICBjb25zdCBUZXh0dXJlQ2Fw
c01hcCAmdGV4dHVyZUNhcHNJbiwKLSAgICAgICAgICAgY29uc3QgRXh0ZW5zaW9ucyAmZXh0ZW5z
aW9uc0luLAotICAgICAgICAgICBjb25zdCBSZXNvdXJjZU1hbmFnZXIgKnJlc291cmNlTWFuYWdl
ckluLAotICAgICAgICAgICBjb25zdCBMaW1pdGF0aW9ucyAmbGltaXRhdGlvbnNJbikKLSAgICA6
IGNvbnRleHQoY29udGV4dEluKSwKLSAgICAgIGNsaWVudFZlcnNpb24oY2xpZW50VmVyc2lvbklu
KSwKLSAgICAgIHN0YXRlKCZzdGF0ZUluKSwKLSAgICAgIGNhcHMoJmNhcHNJbiksCi0gICAgICB0
ZXh0dXJlQ2FwcygmdGV4dHVyZUNhcHNJbiksCi0gICAgICBleHRlbnNpb25zKCZleHRlbnNpb25z
SW4pLAotICAgICAgcmVzb3VyY2VNYW5hZ2VyKHJlc291cmNlTWFuYWdlckluKSwKLSAgICAgIGxp
bWl0YXRpb25zKCZsaW1pdGF0aW9uc0luKQote30KLQotRGF0YTo6fkRhdGEoKQotewotfQotCi1W
YWxpZGF0aW9uQ29udGV4dDo6VmFsaWRhdGlvbkNvbnRleHQoR0xpbnQgY2xpZW50VmVyc2lvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdGF0ZSAmc3RhdGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ2FwcyAmY2FwcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXh0dXJlQ2Fwc01h
cCAmdGV4dHVyZUNhcHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgRXh0ZW5zaW9ucyAmZXh0ZW5zaW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBSZXNvdXJjZU1hbmFnZXIgKnJlc291cmNlTWFuYWdlciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMaW1pdGF0aW9ucyAmbGltaXRhdGlv
bnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBza2lwVmFsaWRh
dGlvbikKLSAgICA6IG1EYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSwKLSAg
ICAgICAgICAgIGNsaWVudFZlcnNpb24sCi0gICAgICAgICAgICBzdGF0ZSwKLSAgICAgICAgICAg
IGNhcHMsCi0gICAgICAgICAgICB0ZXh0dXJlQ2FwcywKLSAgICAgICAgICAgIGV4dGVuc2lvbnMs
Ci0gICAgICAgICAgICByZXNvdXJjZU1hbmFnZXIsCi0gICAgICAgICAgICBsaW1pdGF0aW9ucyks
Ci0gICAgICBtU2tpcFZhbGlkYXRpb24oc2tpcFZhbGlkYXRpb24pCi17Ci19Ci19ICAvLyBuYW1l
c3BhY2UgZ2wKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9EYXRh
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Rh
dGEuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL0RhdGEuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDcyICswLDAgQEAKLS8vCi0vLyBDb3B5
cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0v
LwotCi0vLyBEYXRhLmg6IENvbnRhaW5lciBjbGFzcyBmb3IgYWxsIEdMIHJlbGV2YW50IHN0YXRl
LCBjYXBzIGFuZCBvYmplY3RzCi0KLSNpZm5kZWYgTElCQU5HTEVfREFUQV9IXwotI2RlZmluZSBM
SUJBTkdMRV9EQVRBX0hfCi0KLSNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgotI2luY2x1
ZGUgImxpYkFOR0xFL1N0YXRlLmgiCi0KLW5hbWVzcGFjZSBnbAotewotCi1zdHJ1Y3QgRGF0YSBm
aW5hbCA6IHB1YmxpYyBhbmdsZTo6Tm9uQ29weWFibGUKLXsKLSAgcHVibGljOgotICAgIERhdGEo
dWludHB0cl90IGNvbnRleHQsCi0gICAgICAgICBHTGludCBjbGllbnRWZXJzaW9uLAotICAgICAg
ICAgY29uc3QgU3RhdGUgJnN0YXRlLAotICAgICAgICAgY29uc3QgQ2FwcyAmY2FwcywKLSAgICAg
ICAgIGNvbnN0IFRleHR1cmVDYXBzTWFwICZ0ZXh0dXJlQ2FwcywKLSAgICAgICAgIGNvbnN0IEV4
dGVuc2lvbnMgJmV4dGVuc2lvbnMsCi0gICAgICAgICBjb25zdCBSZXNvdXJjZU1hbmFnZXIgKnJl
c291cmNlTWFuYWdlciwKLSAgICAgICAgIGNvbnN0IExpbWl0YXRpb25zICZsaW1pdGF0aW9ucyk7
Ci0gICAgfkRhdGEoKTsKLQotICAgIHVpbnRwdHJfdCBjb250ZXh0OwotICAgIEdMaW50IGNsaWVu
dFZlcnNpb247Ci0gICAgY29uc3QgU3RhdGUgKnN0YXRlOwotICAgIGNvbnN0IENhcHMgKmNhcHM7
Ci0gICAgY29uc3QgVGV4dHVyZUNhcHNNYXAgKnRleHR1cmVDYXBzOwotICAgIGNvbnN0IEV4dGVu
c2lvbnMgKmV4dGVuc2lvbnM7Ci0gICAgY29uc3QgUmVzb3VyY2VNYW5hZ2VyICpyZXNvdXJjZU1h
bmFnZXI7Ci0gICAgY29uc3QgTGltaXRhdGlvbnMgKmxpbWl0YXRpb25zOwotfTsKLQotY2xhc3Mg
VmFsaWRhdGlvbkNvbnRleHQgOiBhbmdsZTo6Tm9uQ29weWFibGUKLXsKLSAgcHVibGljOgotICAg
IFZhbGlkYXRpb25Db250ZXh0KEdMaW50IGNsaWVudFZlcnNpb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENh
cHMgJmNhcHMsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGV4dHVyZUNhcHNNYXAgJnRl
eHR1cmVDYXBzLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEV4dGVuc2lvbnMgJmV4dGVu
c2lvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VNYW5hZ2VyICpyZXNv
dXJjZU1hbmFnZXIsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGltaXRhdGlvbnMgJmxp
bWl0YXRpb25zLAotICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2tpcFZhbGlkYXRpb24pOwot
ICAgIHZpcnR1YWwgflZhbGlkYXRpb25Db250ZXh0KCkge30KLQotICAgIHZpcnR1YWwgdm9pZCBy
ZWNvcmRFcnJvcihjb25zdCBFcnJvciAmZXJyb3IpID0gMDsKLQotICAgIGNvbnN0IERhdGEgJmdl
dERhdGEoKSBjb25zdCB7IHJldHVybiBtRGF0YTsgfQotICAgIGludCBnZXRDbGllbnRWZXJzaW9u
KCkgY29uc3QgeyByZXR1cm4gbURhdGEuY2xpZW50VmVyc2lvbjsgfQotICAgIGNvbnN0IFN0YXRl
ICZnZXRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuICptRGF0YS5zdGF0ZTsgfQotICAgIGNvbnN0IENh
cHMgJmdldENhcHMoKSBjb25zdCB7IHJldHVybiAqbURhdGEuY2FwczsgfQotICAgIGNvbnN0IFRl
eHR1cmVDYXBzTWFwICZnZXRUZXh0dXJlQ2FwcygpIGNvbnN0IHsgcmV0dXJuICptRGF0YS50ZXh0
dXJlQ2FwczsgfQotICAgIGNvbnN0IEV4dGVuc2lvbnMgJmdldEV4dGVuc2lvbnMoKSBjb25zdCB7
IHJldHVybiAqbURhdGEuZXh0ZW5zaW9uczsgfQotICAgIGNvbnN0IExpbWl0YXRpb25zICZnZXRM
aW1pdGF0aW9ucygpIGNvbnN0IHsgcmV0dXJuICptRGF0YS5saW1pdGF0aW9uczsgfQotICAgIGJv
b2wgc2tpcFZhbGlkYXRpb24oKSBjb25zdCB7IHJldHVybiBtU2tpcFZhbGlkYXRpb247IH0KLQot
ICBwcm90ZWN0ZWQ6Ci0gICAgRGF0YSBtRGF0YTsKLSAgICBib29sIG1Ta2lwVmFsaWRhdGlvbjsK
LX07Ci0KLX0KLQotI2VuZGlmIC8vIExJQkFOR0xFX0RBVEFfSF8KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9EZXZpY2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9EZXZpY2UuY3BwCShyZXZpc2lvbiAyMDc4
MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRGV2aWNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsMTAgQEAgc3RhdGljIHN0ZDo6c3RyaW5nIEdlbmVy
YXRlRXh0ZW5zaW9uc1N0cgogdHlwZWRlZiBzdGQ6OnNldDxlZ2w6OkRldmljZSAqPiBEZXZpY2VT
ZXQ7CiBzdGF0aWMgRGV2aWNlU2V0ICpHZXREZXZpY2VTZXQoKQogewotICAgIHN0YXRpYyBhdXRv
JiBkZXZpY2VzID0gKm5ldyBEZXZpY2VTZXQ7CisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gK
KyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMi
CisgICAgc3RhdGljIERldmljZVNldCBkZXZpY2VzOworI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBw
b3AKICAgICByZXR1cm4gJmRldmljZXM7CiB9CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9EaXNwbGF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRGlzcGxheS5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9EaXNwbGF5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDQsMTEgKzQ0LDE5IEBACiAjICAgICAgIGluY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL2dsL2dseC9EaXNwbGF5R0xYLmgiCiAjICAgZWxpZiBkZWZpbmVkKEFOR0xFX1BMQVRG
T1JNX0FQUExFKQogIyAgICAgICBpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvRGlz
cGxheUNHTC5oIgorIyAgIGVsaWYgZGVmaW5lZChBTkdMRV9VU0VfT1pPTkUpCisjICAgICAgIGlu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9vem9uZS9EaXNwbGF5T3pvbmUuaCIKKyMg
ICBlbGlmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fQU5EUk9JRCkKKyMgICAgICAgaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL2FuZHJvaWQvRGlzcGxheUFuZHJvaWQuaCIKICMgICBl
bHNlCiAjICAgICAgIGVycm9yIFVuc3VwcG9ydGVkIE9wZW5HTCBwbGF0Zm9ybS4KICMgICBlbmRp
ZgogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9OVUxMKQorI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL251bGwvRGlzcGxheU5VTEwuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2Ug
ZWdsCiB7CiAKQEAgLTgyLDIxICs5MCwzMCBAQCB0eXBlZGVmIHN0ZDo6bWFwPEVHTE5hdGl2ZVdp
bmRvd1R5cGUsIFN1CiAvLyBhc3NvY2lhdGVkIHdpdGggaXQuCiBzdGF0aWMgV2luZG93U3VyZmFj
ZU1hcCAqR2V0V2luZG93U3VyZmFjZXMoKQogewotICAgIHN0YXRpYyBhdXRvJiB3aW5kb3dTdXJm
YWNlcyA9ICpuZXcgV2luZG93U3VyZmFjZU1hcDsKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVz
aAorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2V4aXQtdGltZS1kZXN0cnVjdG9y
cyIKKyAgICBzdGF0aWMgV2luZG93U3VyZmFjZU1hcCB3aW5kb3dTdXJmYWNlczsKKyNwcmFnbWEg
R0NDIGRpYWdub3N0aWMgcG9wCiAgICAgcmV0dXJuICZ3aW5kb3dTdXJmYWNlczsKIH0KIAogdHlw
ZWRlZiBzdGQ6Om1hcDxFR0xOYXRpdmVEaXNwbGF5VHlwZSwgRGlzcGxheSAqPiBBTkdMRVBsYXRm
b3JtRGlzcGxheU1hcDsKIHN0YXRpYyBBTkdMRVBsYXRmb3JtRGlzcGxheU1hcCAqR2V0QU5HTEVQ
bGF0Zm9ybURpc3BsYXlNYXAoKQogewotICAgIHN0YXRpYyBhdXRvJiBkaXNwbGF5cyA9ICpuZXcg
QU5HTEVQbGF0Zm9ybURpc3BsYXlNYXA7CisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKyNw
cmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMiCisg
ICAgc3RhdGljIEFOR0xFUGxhdGZvcm1EaXNwbGF5TWFwIGRpc3BsYXlzOworI3ByYWdtYSBHQ0Mg
ZGlhZ25vc3RpYyBwb3AKICAgICByZXR1cm4gJmRpc3BsYXlzOwogfQogCiB0eXBlZGVmIHN0ZDo6
bWFwPERldmljZSAqLCBEaXNwbGF5ICo+IERldmljZVBsYXRmb3JtRGlzcGxheU1hcDsKIHN0YXRp
YyBEZXZpY2VQbGF0Zm9ybURpc3BsYXlNYXAgKkdldERldmljZVBsYXRmb3JtRGlzcGxheU1hcCgp
CiB7Ci0gICAgc3RhdGljIGF1dG8mIGRpc3BsYXlzID0gKm5ldyBEZXZpY2VQbGF0Zm9ybURpc3Bs
YXlNYXA7CisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgR0NDIGRpYWdub3N0
aWMgaWdub3JlZCAiLVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMiCisgICAgc3RhdGljIERldmljZVBs
YXRmb3JtRGlzcGxheU1hcCBkaXNwbGF5czsKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCiAg
ICAgcmV0dXJuICZkaXNwbGF5czsKIH0KIApAQCAtMTQyLDEwICsxNTksMTQgQEAgcng6OkRpc3Bs
YXlJbXBsICpDcmVhdGVEaXNwbGF5RnJvbUF0dHJpYgogI2lmIGRlZmluZWQoQU5HTEVfRU5BQkxF
X0QzRDkpIHx8IGRlZmluZWQoQU5HTEVfRU5BQkxFX0QzRDExKQogICAgICAgICAvLyBEZWZhdWx0
IHRvIEQzRCBkaXNwbGF5cwogICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5RDNEKCk7Ci0j
ZWxpZiBkZWZpbmVkKEFOR0xFX1VTRV9YMTEpICYmIGRlZmluZWQoQU5HTEVfRU5BQkxFX09QRU5H
TCkKKyNlbGlmIGRlZmluZWQoQU5HTEVfVVNFX1gxMSkKICAgICAgICAgaW1wbCA9IG5ldyByeDo6
RGlzcGxheUdMWCgpOwotI2VsaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9BUFBMRSkgJiYgZGVm
aW5lZChBTkdMRV9FTkFCTEVfT1BFTkdMKQorI2VsaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9B
UFBMRSkKICAgICAgICAgaW1wbCA9IG5ldyByeDo6RGlzcGxheUNHTCgpOworI2VsaWYgZGVmaW5l
ZChBTkdMRV9VU0VfT1pPTkUpCisgICAgICAgIGltcGwgPSBuZXcgcng6OkRpc3BsYXlPem9uZSgp
OworI2VsaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9BTkRST0lEKQorICAgICAgICBpbXBsID0g
bmV3IHJ4OjpEaXNwbGF5QW5kcm9pZCgpOwogI2Vsc2UKICAgICAgICAgLy8gTm8gZGlzcGxheSBh
dmFpbGFibGUKICAgICAgICAgVU5SRUFDSEFCTEUoKTsKQEAgLTE3MCw2ICsxOTEsMTIgQEAgcng6
OkRpc3BsYXlJbXBsICpDcmVhdGVEaXNwbGF5RnJvbUF0dHJpYgogICAgICAgICBpbXBsID0gbmV3
IHJ4OjpEaXNwbGF5R0xYKCk7CiAjZWxpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0FQUExFKQog
ICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5Q0dMKCk7CisjZWxpZiBkZWZpbmVkKEFOR0xF
X1VTRV9PWk9ORSkKKyAgICAgICAgLy8gVGhpcyBtaWdodCB3b3JrIGJ1dCBoYXMgbmV2ZXIgYmVl
biB0cmllZCwgc28gZGlzYWxsb3cgZm9yIG5vdy4KKyAgICAgICAgaW1wbCA9IG51bGxwdHI7Cisj
ZWxpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0FORFJPSUQpCisgICAgICAgIC8vIE5vIEdMIHN1
cHBvcnQgb24gdGhpcyBwbGF0Zm9ybSwgZmFpbCBkaXNwbGF5IGNyZWF0aW9uLgorICAgICAgICBp
bXBsID0gbnVsbHB0cjsKICNlbHNlCiAjZXJyb3IgVW5zdXBwb3J0ZWQgT3BlbkdMIHBsYXRmb3Jt
LgogI2VuZGlmCkBAIC0xODEsMTMgKzIwOCwyMyBAQCByeDo6RGlzcGxheUltcGwgKkNyZWF0ZURp
c3BsYXlGcm9tQXR0cmliCiAjaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfT1BFTkdMKQogICAgICAg
Y2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xFU19BTkdMRToKICNpZiBkZWZpbmVk
KEFOR0xFX1BMQVRGT1JNX1dJTkRPV1MpCi0gICAgICAgICAgaW1wbCA9IG5ldyByeDo6RGlzcGxh
eVdHTCgpOworICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5V0dMKCk7CiAjZWxpZiBkZWZp
bmVkKEFOR0xFX1VTRV9YMTEpCi0gICAgICAgICAgaW1wbCA9IG5ldyByeDo6RGlzcGxheUdMWCgp
OworICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5R0xYKCk7CisjZWxpZiBkZWZpbmVkKEFO
R0xFX1VTRV9PWk9ORSkKKyAgICAgICAgaW1wbCA9IG5ldyByeDo6RGlzcGxheU96b25lKCk7Cisj
ZWxpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0FORFJPSUQpCisgICAgICAgIGltcGwgPSBuZXcg
cng6OkRpc3BsYXlBbmRyb2lkKCk7CiAjZWxzZQotICAgICAgICAgIC8vIE5vIEdMRVMgc3VwcG9y
dCBvbiB0aGlzIHBsYXRmb3JtLCBmYWlsIGRpc3BsYXkgY3JlYXRpb24uCi0gICAgICAgICAgaW1w
bCA9IG51bGxwdHI7CisgICAgICAgIC8vIE5vIEdMRVMgc3VwcG9ydCBvbiB0aGlzIHBsYXRmb3Jt
LCBmYWlsIGRpc3BsYXkgY3JlYXRpb24uCisgICAgICAgIGltcGwgPSBudWxscHRyOworI2VuZGlm
CisgICAgICAgIGJyZWFrOwogI2VuZGlmCisKKyNpZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9OVUxM
KQorICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9OVUxMX0FOR0xFOgorICAgICAg
ICAgIGltcGwgPSBuZXcgcng6OkRpc3BsYXlOVUxMKCk7CiAgICAgICAgICAgYnJlYWs7CiAjZW5k
aWYKIApAQCAtMzAzLDYgKzM0MCw3IEBAIERpc3BsYXk6OkRpc3BsYXkoRUdMZW51bSBwbGF0Zm9y
bSwgRUdMTmEKICAgICAgIG1Db250ZXh0U2V0KCksCiAgICAgICBtU3RyZWFtU2V0KCksCiAgICAg
ICBtSW5pdGlhbGl6ZWQoZmFsc2UpLAorICAgICAgbURldmljZUxvc3QoZmFsc2UpLAogICAgICAg
bUNhcHMoKSwKICAgICAgIG1EaXNwbGF5RXh0ZW5zaW9ucygpLAogICAgICAgbURpc3BsYXlFeHRl
bnNpb25TdHJpbmcoKSwKQEAgLTM5OCwxNyArNDM2LDggQEAgRXJyb3IgRGlzcGxheTo6aW5pdGlh
bGl6ZSgpCiAgICAgICAgIGlmIChtRGlzcGxheUV4dGVuc2lvbnMuZGV2aWNlUXVlcnkpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJ4OjpEZXZpY2VJbXBsICppbXBsID0gbnVsbHB0cjsKLSAgICAg
ICAgICAgIGVycm9yID0gbUltcGxlbWVudGF0aW9uLT5nZXREZXZpY2UoJmltcGwpOwotICAgICAg
ICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGVycm9yID0gRGV2
aWNlOjpDcmVhdGVEZXZpY2UodGhpcywgaW1wbCwgJm1EZXZpY2UpOwotICAgICAgICAgICAgaWYg
KGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZXJyb3I7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBBTkdMRV9UUlkobUltcGxlbWVudGF0
aW9uLT5nZXREZXZpY2UoJmltcGwpKTsKKyAgICAgICAgICAgIEFOR0xFX1RSWShEZXZpY2U6OkNy
ZWF0ZURldmljZSh0aGlzLCBpbXBsLCAmbURldmljZSkpOwogICAgICAgICB9CiAgICAgICAgIGVs
c2UKICAgICAgICAgewpAQCAtNTMwLDMyICs1NTksMjEgQEAgRXJyb3IgRGlzcGxheTo6Y3JlYXRl
V2luZG93U3VyZmFjZShjb25zdAogewogICAgIGlmIChtSW1wbGVtZW50YXRpb24tPnRlc3REZXZp
Y2VMb3N0KCkpCiAgICAgewotICAgICAgICBFcnJvciBlcnJvciA9IHJlc3RvcmVMb3N0RGV2aWNl
KCk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBBTkdMRV9UUlkocmVzdG9yZUxvc3RE
ZXZpY2UoKSk7CiAgICAgfQogCi0gICAgcng6OlN1cmZhY2VJbXBsICpzdXJmYWNlSW1wbCA9IG1J
bXBsZW1lbnRhdGlvbi0+Y3JlYXRlV2luZG93U3VyZmFjZShjb25maWd1cmF0aW9uLCB3aW5kb3cs
IGF0dHJpYnMpOwotICAgIEFTU0VSVChzdXJmYWNlSW1wbCAhPSBudWxscHRyKTsKLQotICAgIEVy
cm9yIGVycm9yID0gc3VyZmFjZUltcGwtPmluaXRpYWxpemUoKTsKLSAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQotICAgIHsKLSAgICAgICAgU2FmZURlbGV0ZShzdXJmYWNlSW1wbCk7Ci0gICAgICAg
IHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgc3RkOjp1bmlxdWVfcHRyPFN1cmZhY2U+IHN1cmZh
Y2UoCisgICAgICAgIG5ldyBXaW5kb3dTdXJmYWNlKG1JbXBsZW1lbnRhdGlvbiwgY29uZmlndXJh
dGlvbiwgd2luZG93LCBhdHRyaWJzKSk7CisgICAgQU5HTEVfVFJZKHN1cmZhY2UtPmluaXRpYWxp
emUoKSk7CiAKLSAgICBTdXJmYWNlICpzdXJmYWNlID0gbmV3IFN1cmZhY2Uoc3VyZmFjZUltcGws
IEVHTF9XSU5ET1dfQklULCBjb25maWd1cmF0aW9uLCBhdHRyaWJzKTsKLSAgICBtSW1wbGVtZW50
YXRpb24tPmdldFN1cmZhY2VTZXQoKS5pbnNlcnQoc3VyZmFjZSk7CisgICAgQVNTRVJUKG91dFN1
cmZhY2UgIT0gbnVsbHB0cik7CisgICAgKm91dFN1cmZhY2UgPSBzdXJmYWNlLnJlbGVhc2UoKTsK
KyAgICBtSW1wbGVtZW50YXRpb24tPmdldFN1cmZhY2VTZXQoKS5pbnNlcnQoKm91dFN1cmZhY2Up
OwogCiAgICAgV2luZG93U3VyZmFjZU1hcCAqd2luZG93U3VyZmFjZXMgPSBHZXRXaW5kb3dTdXJm
YWNlcygpOwogICAgIEFTU0VSVCh3aW5kb3dTdXJmYWNlcyAmJiB3aW5kb3dTdXJmYWNlcy0+Zmlu
ZCh3aW5kb3cpID09IHdpbmRvd1N1cmZhY2VzLT5lbmQoKSk7Ci0gICAgd2luZG93U3VyZmFjZXMt
Pmluc2VydChzdGQ6Om1ha2VfcGFpcih3aW5kb3csIHN1cmZhY2UpKTsKKyAgICB3aW5kb3dTdXJm
YWNlcy0+aW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKHdpbmRvdywgKm91dFN1cmZhY2UpKTsKIAotICAg
IEFTU0VSVChvdXRTdXJmYWNlICE9IG51bGxwdHIpOwotICAgICpvdXRTdXJmYWNlID0gc3VyZmFj
ZTsKICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CiB9CiAKQEAgLTU2NSwyOCAr
NTgzLDE2IEBAIEVycm9yIERpc3BsYXk6OmNyZWF0ZVBidWZmZXJTdXJmYWNlKGNvbnMKIAogICAg
IGlmIChtSW1wbGVtZW50YXRpb24tPnRlc3REZXZpY2VMb3N0KCkpCiAgICAgewotICAgICAgICBF
cnJvciBlcnJvciA9IHJlc3RvcmVMb3N0RGV2aWNlKCk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQor
ICAgICAgICBBTkdMRV9UUlkocmVzdG9yZUxvc3REZXZpY2UoKSk7CiAgICAgfQogCi0gICAgcng6
OlN1cmZhY2VJbXBsICpzdXJmYWNlSW1wbCA9IG1JbXBsZW1lbnRhdGlvbi0+Y3JlYXRlUGJ1ZmZl
clN1cmZhY2UoY29uZmlndXJhdGlvbiwgYXR0cmlicyk7Ci0gICAgQVNTRVJUKHN1cmZhY2VJbXBs
ICE9IG51bGxwdHIpOwotCi0gICAgRXJyb3IgZXJyb3IgPSBzdXJmYWNlSW1wbC0+aW5pdGlhbGl6
ZSgpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICBTYWZlRGVsZXRl
KHN1cmZhY2VJbXBsKTsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KLQotICAgIFN1cmZh
Y2UgKnN1cmZhY2UgPSBuZXcgU3VyZmFjZShzdXJmYWNlSW1wbCwgRUdMX1BCVUZGRVJfQklULCBj
b25maWd1cmF0aW9uLCBhdHRyaWJzKTsKLSAgICBtSW1wbGVtZW50YXRpb24tPmdldFN1cmZhY2VT
ZXQoKS5pbnNlcnQoc3VyZmFjZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFN1cmZhY2U+IHN1cmZh
Y2UobmV3IFBidWZmZXJTdXJmYWNlKG1JbXBsZW1lbnRhdGlvbiwgY29uZmlndXJhdGlvbiwgYXR0
cmlicykpOworICAgIEFOR0xFX1RSWShzdXJmYWNlLT5pbml0aWFsaXplKCkpOwogCiAgICAgQVNT
RVJUKG91dFN1cmZhY2UgIT0gbnVsbHB0cik7Ci0gICAgKm91dFN1cmZhY2UgPSBzdXJmYWNlOwor
ICAgICpvdXRTdXJmYWNlID0gc3VyZmFjZS5yZWxlYXNlKCk7CisgICAgbUltcGxlbWVudGF0aW9u
LT5nZXRTdXJmYWNlU2V0KCkuaW5zZXJ0KCpvdXRTdXJmYWNlKTsKKwogICAgIHJldHVybiBlZ2w6
OkVycm9yKEVHTF9TVUNDRVNTKTsKIH0KIApAQCAtNTk3LDI4ICs2MDMsMTcgQEAgRXJyb3IgRGlz
cGxheTo6Y3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdQogCiAgICAgaWYgKG1JbXBsZW1lbnRhdGlv
bi0+dGVzdERldmljZUxvc3QoKSkKICAgICB7Ci0gICAgICAgIEVycm9yIGVycm9yID0gcmVzdG9y
ZUxvc3REZXZpY2UoKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcng6OlN1
cmZhY2VJbXBsICpzdXJmYWNlSW1wbCA9IG1JbXBsZW1lbnRhdGlvbi0+Y3JlYXRlUGJ1ZmZlckZy
b21DbGllbnRCdWZmZXIoY29uZmlndXJhdGlvbiwgc2hhcmVIYW5kbGUsIGF0dHJpYnMpOwotICAg
IEFTU0VSVChzdXJmYWNlSW1wbCAhPSBudWxscHRyKTsKLQotICAgIEVycm9yIGVycm9yID0gc3Vy
ZmFjZUltcGwtPmluaXRpYWxpemUoKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsK
LSAgICAgICAgU2FmZURlbGV0ZShzdXJmYWNlSW1wbCk7Ci0gICAgICAgIHJldHVybiBlcnJvcjsK
KyAgICAgICAgQU5HTEVfVFJZKHJlc3RvcmVMb3N0RGV2aWNlKCkpOwogICAgIH0KIAotICAgIFN1
cmZhY2UgKnN1cmZhY2UgPSBuZXcgU3VyZmFjZShzdXJmYWNlSW1wbCwgRUdMX1BCVUZGRVJfQklU
LCBjb25maWd1cmF0aW9uLCBhdHRyaWJzKTsKLSAgICBtSW1wbGVtZW50YXRpb24tPmdldFN1cmZh
Y2VTZXQoKS5pbnNlcnQoc3VyZmFjZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFN1cmZhY2U+IHN1
cmZhY2UoCisgICAgICAgIG5ldyBQYnVmZmVyU3VyZmFjZShtSW1wbGVtZW50YXRpb24sIGNvbmZp
Z3VyYXRpb24sIHNoYXJlSGFuZGxlLCBhdHRyaWJzKSk7CisgICAgQU5HTEVfVFJZKHN1cmZhY2Ut
PmluaXRpYWxpemUoKSk7CiAKICAgICBBU1NFUlQob3V0U3VyZmFjZSAhPSBudWxscHRyKTsKLSAg
ICAqb3V0U3VyZmFjZSA9IHN1cmZhY2U7CisgICAgKm91dFN1cmZhY2UgPSBzdXJmYWNlLnJlbGVh
c2UoKTsKKyAgICBtSW1wbGVtZW50YXRpb24tPmdldFN1cmZhY2VTZXQoKS5pbnNlcnQoKm91dFN1
cmZhY2UpOworCiAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwogfQogCkBAIC02
MjksMjggKzYyNCwxNyBAQCBFcnJvciBEaXNwbGF5OjpjcmVhdGVQaXhtYXBTdXJmYWNlKGNvbnN0
CiAKICAgICBpZiAobUltcGxlbWVudGF0aW9uLT50ZXN0RGV2aWNlTG9zdCgpKQogICAgIHsKLSAg
ICAgICAgRXJyb3IgZXJyb3IgPSByZXN0b3JlTG9zdERldmljZSgpOwotICAgICAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAg
ICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKHJlc3RvcmVMb3N0RGV2aWNlKCkpOwogICAgIH0KIAot
ICAgIHJ4OjpTdXJmYWNlSW1wbCAqc3VyZmFjZUltcGwgPSBtSW1wbGVtZW50YXRpb24tPmNyZWF0
ZVBpeG1hcFN1cmZhY2UoY29uZmlndXJhdGlvbiwgbmF0aXZlUGl4bWFwLCBhdHRyaWJzKTsKLSAg
ICBBU1NFUlQoc3VyZmFjZUltcGwgIT0gbnVsbHB0cik7Ci0KLSAgICBFcnJvciBlcnJvciA9IHN1
cmZhY2VJbXBsLT5pbml0aWFsaXplKCk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7
Ci0gICAgICAgIFNhZmVEZWxldGUoc3VyZmFjZUltcGwpOwotICAgICAgICByZXR1cm4gZXJyb3I7
Ci0gICAgfQotCi0gICAgU3VyZmFjZSAqc3VyZmFjZSA9IG5ldyBTdXJmYWNlKHN1cmZhY2VJbXBs
LCBFR0xfUElYTUFQX0JJVCwgY29uZmlndXJhdGlvbiwgYXR0cmlicyk7Ci0gICAgbUltcGxlbWVu
dGF0aW9uLT5nZXRTdXJmYWNlU2V0KCkuaW5zZXJ0KHN1cmZhY2UpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxTdXJmYWNlPiBzdXJmYWNlKAorICAgICAgICBuZXcgUGl4bWFwU3VyZmFjZShtSW1wbGVt
ZW50YXRpb24sIGNvbmZpZ3VyYXRpb24sIG5hdGl2ZVBpeG1hcCwgYXR0cmlicykpOworICAgIEFO
R0xFX1RSWShzdXJmYWNlLT5pbml0aWFsaXplKCkpOwogCiAgICAgQVNTRVJUKG91dFN1cmZhY2Ug
IT0gbnVsbHB0cik7Ci0gICAgKm91dFN1cmZhY2UgPSBzdXJmYWNlOworICAgICpvdXRTdXJmYWNl
ID0gc3VyZmFjZS5yZWxlYXNlKCk7CisgICAgbUltcGxlbWVudGF0aW9uLT5nZXRTdXJmYWNlU2V0
KCkuaW5zZXJ0KCpvdXRTdXJmYWNlKTsKKwogICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUND
RVNTKTsKIH0KIApAQCAtNjY0LDExICs2NDgsNyBAQCBFcnJvciBEaXNwbGF5OjpjcmVhdGVJbWFn
ZShnbDo6Q29udGV4dCAqCiAKICAgICBpZiAobUltcGxlbWVudGF0aW9uLT50ZXN0RGV2aWNlTG9z
dCgpKQogICAgIHsKLSAgICAgICAgRXJyb3IgZXJyb3IgPSByZXN0b3JlTG9zdERldmljZSgpOwot
ICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKHJlc3RvcmVMb3N0RGV2aWNl
KCkpOwogICAgIH0KIAogICAgIGVnbDo6SW1hZ2VTaWJsaW5nICpzaWJsaW5nID0gbnVsbHB0cjsK
QEAgLTY4OSwxMSArNjY5LDcgQEAgRXJyb3IgRGlzcGxheTo6Y3JlYXRlSW1hZ2UoZ2w6OkNvbnRl
eHQgKgogICAgIHJ4OjpJbWFnZUltcGwgKmltYWdlSW1wbCA9IG1JbXBsZW1lbnRhdGlvbi0+Y3Jl
YXRlSW1hZ2UodGFyZ2V0LCBzaWJsaW5nLCBhdHRyaWJzKTsKICAgICBBU1NFUlQoaW1hZ2VJbXBs
ICE9IG51bGxwdHIpOwogCi0gICAgRXJyb3IgZXJyb3IgPSBpbWFnZUltcGwtPmluaXRpYWxpemUo
KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9y
OwotICAgIH0KKyAgICBBTkdMRV9UUlkoaW1hZ2VJbXBsLT5pbml0aWFsaXplKCkpOwogCiAgICAg
SW1hZ2UgKmltYWdlID0gbmV3IEltYWdlKGltYWdlSW1wbCwgdGFyZ2V0LCBzaWJsaW5nLCBhdHRy
aWJzKTsKIApAQCAtNzExLDEwICs2ODcsNyBAQCBFcnJvciBEaXNwbGF5OjpjcmVhdGVTdHJlYW0o
Y29uc3QgQXR0cmliCiB7CiAgICAgQVNTRVJUKGlzSW5pdGlhbGl6ZWQoKSk7CiAKLSAgICByeDo6
U3RyZWFtSW1wbCAqc3RyZWFtSW1wbCA9IG1JbXBsZW1lbnRhdGlvbi0+Y3JlYXRlU3RyZWFtKGF0
dHJpYnMpOwotICAgIEFTU0VSVChzdHJlYW1JbXBsICE9IG51bGxwdHIpOwotCi0gICAgU3RyZWFt
ICpzdHJlYW0gPSBuZXcgU3RyZWFtKHN0cmVhbUltcGwsIGF0dHJpYnMpOworICAgIFN0cmVhbSAq
c3RyZWFtID0gbmV3IFN0cmVhbSh0aGlzLCBhdHRyaWJzKTsKIAogICAgIEFTU0VSVChzdHJlYW0g
IT0gbnVsbHB0cik7CiAgICAgbVN0cmVhbVNldC5pbnNlcnQoc3RyZWFtKTsKQEAgLTczMiwxNSAr
NzA1LDEwIEBAIEVycm9yIERpc3BsYXk6OmNyZWF0ZUNvbnRleHQoY29uc3QgQ29uZmkKIAogICAg
IGlmIChtSW1wbGVtZW50YXRpb24tPnRlc3REZXZpY2VMb3N0KCkpCiAgICAgewotICAgICAgICBF
cnJvciBlcnJvciA9IHJlc3RvcmVMb3N0RGV2aWNlKCk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQor
ICAgICAgICBBTkdMRV9UUlkocmVzdG9yZUxvc3REZXZpY2UoKSk7CiAgICAgfQogCi0gICAgZ2w6
OkNvbnRleHQgKmNvbnRleHQgPSAqb3V0Q29udGV4dCA9Ci0gICAgICAgIG1JbXBsZW1lbnRhdGlv
bi0+Y3JlYXRlQ29udGV4dChjb25maWd1cmF0aW9uLCBzaGFyZUNvbnRleHQsIGF0dHJpYnMpOwor
ICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gbmV3IGdsOjpDb250ZXh0KG1JbXBsZW1lbnRhdGlv
biwgY29uZmlndXJhdGlvbiwgc2hhcmVDb250ZXh0LCBhdHRyaWJzKTsKIAogICAgIEFTU0VSVChj
b250ZXh0ICE9IG51bGxwdHIpOwogICAgIG1Db250ZXh0U2V0Lmluc2VydChjb250ZXh0KTsKQEAg
LTc1MiwxMSArNzIwLDcgQEAgRXJyb3IgRGlzcGxheTo6Y3JlYXRlQ29udGV4dChjb25zdCBDb25m
aQogCiBFcnJvciBEaXNwbGF5OjptYWtlQ3VycmVudChlZ2w6OlN1cmZhY2UgKmRyYXdTdXJmYWNl
LCBlZ2w6OlN1cmZhY2UgKnJlYWRTdXJmYWNlLCBnbDo6Q29udGV4dCAqY29udGV4dCkKIHsKLSAg
ICBFcnJvciBlcnJvciA9IG1JbXBsZW1lbnRhdGlvbi0+bWFrZUN1cnJlbnQoZHJhd1N1cmZhY2Us
IHJlYWRTdXJmYWNlLCBjb250ZXh0KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkobUltcGxlbWVudGF0
aW9uLT5tYWtlQ3VycmVudChkcmF3U3VyZmFjZSwgcmVhZFN1cmZhY2UsIGNvbnRleHQpKTsKIAog
ICAgIGlmIChjb250ZXh0ICE9IG51bGxwdHIgJiYgZHJhd1N1cmZhY2UgIT0gbnVsbHB0cikKICAg
ICB7CkBAIC04MjksMjEgKzc5MywzNCBAQCB2b2lkIERpc3BsYXk6OmRlc3Ryb3lDb250ZXh0KGds
OjpDb250ZXh0CiBib29sIERpc3BsYXk6OmlzRGV2aWNlTG9zdCgpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKGlzSW5pdGlhbGl6ZWQoKSk7Ci0gICAgcmV0dXJuIG1JbXBsZW1lbnRhdGlvbi0+aXNEZXZp
Y2VMb3N0KCk7CisgICAgcmV0dXJuIG1EZXZpY2VMb3N0OwogfQogCiBib29sIERpc3BsYXk6OnRl
c3REZXZpY2VMb3N0KCkKIHsKICAgICBBU1NFUlQoaXNJbml0aWFsaXplZCgpKTsKLSAgICByZXR1
cm4gbUltcGxlbWVudGF0aW9uLT50ZXN0RGV2aWNlTG9zdCgpOworCisgICAgaWYgKCFtRGV2aWNl
TG9zdCAmJiBtSW1wbGVtZW50YXRpb24tPnRlc3REZXZpY2VMb3N0KCkpCisgICAgeworICAgICAg
ICBub3RpZnlEZXZpY2VMb3N0KCk7CisgICAgfQorCisgICAgcmV0dXJuIG1EZXZpY2VMb3N0Owog
fQogCiB2b2lkIERpc3BsYXk6Om5vdGlmeURldmljZUxvc3QoKQogeworICAgIGlmIChtRGV2aWNl
TG9zdCkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBmb3IgKENvbnRleHRT
ZXQ6Oml0ZXJhdG9yIGNvbnRleHQgPSBtQ29udGV4dFNldC5iZWdpbigpOyBjb250ZXh0ICE9IG1D
b250ZXh0U2V0LmVuZCgpOyBjb250ZXh0KyspCiAgICAgewogICAgICAgICAoKmNvbnRleHQpLT5t
YXJrQ29udGV4dExvc3QoKTsKICAgICB9CisKKyAgICBtRGV2aWNlTG9zdCA9IHRydWU7CiB9CiAK
IEVycm9yIERpc3BsYXk6OndhaXRDbGllbnQoKSBjb25zdApAQCAtOTE2LDYgKzg5MywxMCBAQCBz
dGF0aWMgQ2xpZW50RXh0ZW5zaW9ucyBHZW5lcmF0ZUNsaWVudEV4CiAgICAgZXh0ZW5zaW9ucy5w
bGF0Zm9ybUFOR0xFT3BlbkdMID0gdHJ1ZTsKICNlbmRpZgogCisjaWYgZGVmaW5lZChBTkdMRV9F
TkFCTEVfTlVMTCkKKyAgICBleHRlbnNpb25zLnBsYXRmb3JtQU5HTEVOVUxMID0gdHJ1ZTsKKyNl
bmRpZgorCiAjaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfRDNEMTEpCiAgICAgZXh0ZW5zaW9ucy5k
ZXZpY2VDcmVhdGlvbiAgICAgID0gdHJ1ZTsKICAgICBleHRlbnNpb25zLmRldmljZUNyZWF0aW9u
RDNEMTEgPSB0cnVlOwpAQCAtOTQ5LDcgKzkzMCwxMCBAQCBjb25zdCBDbGllbnRFeHRlbnNpb25z
ICZEaXNwbGF5OjpnZXRDbGllCiAKIGNvbnN0IHN0ZDo6c3RyaW5nICZEaXNwbGF5OjpnZXRDbGll
bnRFeHRlbnNpb25TdHJpbmcoKQogewotICAgIHN0YXRpYyBjb25zdCBhdXRvJiBjbGllbnRFeHRl
bnNpb25zU3RyaW5nID0gKm5ldyBzdGQ6OnN0cmluZyhHZW5lcmF0ZUV4dGVuc2lvbnNTdHJpbmco
Z2V0Q2xpZW50RXh0ZW5zaW9ucygpKSk7CisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKyNw
cmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMiCisg
ICAgc3RhdGljIGNvbnN0IHN0ZDo6c3RyaW5nIGNsaWVudEV4dGVuc2lvbnNTdHJpbmcgPSBHZW5l
cmF0ZUV4dGVuc2lvbnNTdHJpbmcoZ2V0Q2xpZW50RXh0ZW5zaW9ucygpKTsKKyNwcmFnbWEgR0ND
IGRpYWdub3N0aWMgcG9wCiAgICAgcmV0dXJuIGNsaWVudEV4dGVuc2lvbnNTdHJpbmc7CiB9CiAK
QEAgLTk1Nyw2ICs5NDEsMTIgQEAgdm9pZCBEaXNwbGF5Ojppbml0RGlzcGxheUV4dGVuc2lvbnMo
KQogewogICAgIG1EaXNwbGF5RXh0ZW5zaW9ucyA9IG1JbXBsZW1lbnRhdGlvbi0+Z2V0RXh0ZW5z
aW9ucygpOwogCisgICAgLy8gU29tZSBleHRlbnNpb25zIGFyZSBhbHdheXMgYXZhaWxhYmxlIGJl
Y2F1c2UgdGhleSBhcmUgaW1wbGVtZW50ZWQgaW4gdGhlIEVHTCBsYXllci4KKyAgICBtRGlzcGxh
eUV4dGVuc2lvbnMuY3JlYXRlQ29udGV4dCAgICAgICAgPSB0cnVlOworICAgIG1EaXNwbGF5RXh0
ZW5zaW9ucy5jcmVhdGVDb250ZXh0Tm9FcnJvciA9IHRydWU7CisgICAgbURpc3BsYXlFeHRlbnNp
b25zLmNyZWF0ZUNvbnRleHRXZWJHTENvbXBhdGliaWxpdHkgPSB0cnVlOworICAgIG1EaXNwbGF5
RXh0ZW5zaW9ucy5jcmVhdGVDb250ZXh0QmluZEdlbmVyYXRlc1Jlc291cmNlID0gdHJ1ZTsKKwog
ICAgIC8vIEZvcmNlIEVHTF9LSFJfZ2V0X2FsbF9wcm9jX2FkZHJlc3NlcyBvbi4KICAgICBtRGlz
cGxheUV4dGVuc2lvbnMuZ2V0QWxsUHJvY0FkZHJlc3NlcyA9IHRydWU7CiAKQEAgLTEwMzcsNCAr
MTAyNyw4IEBAIERldmljZSAqRGlzcGxheTo6Z2V0RGV2aWNlKCkgY29uc3QKICAgICByZXR1cm4g
bURldmljZTsKIH0KIAorZ2w6OlZlcnNpb24gRGlzcGxheTo6Z2V0TWF4U3VwcG9ydGVkRVNWZXJz
aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUltcGxlbWVudGF0aW9uLT5nZXRNYXhTdXBwb3J0
ZWRFU1ZlcnNpb24oKTsKK30KIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9EaXNwbGF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL0Rpc3BsYXkuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Rpc3BsYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMTQs
MTEgKzE0LDExIEBACiAjaW5jbHVkZSA8c2V0PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1
ZGUgImxpYkFOR0xFL0Vycm9yLmgiCisjaW5jbHVkZSAibGliQU5HTEUvQXR0cmlidXRlTWFwLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvQ2Fwcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0NvbmZpZy5o
IgotI2luY2x1ZGUgImxpYkFOR0xFL0F0dHJpYnV0ZU1hcC5oIgotI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL1JlbmRlcmVyLmgiCisjaW5jbHVkZSAibGliQU5HTEUvRXJyb3IuaCIKKyNpbmNs
dWRlICJsaWJBTkdMRS9WZXJzaW9uLmgiCiAKIG5hbWVzcGFjZSBnbAogewpAQCAtMTEyLDYgKzEx
Miw4IEBAIGNsYXNzIERpc3BsYXkgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBEZXZp
Y2UgKmdldERldmljZSgpIGNvbnN0OwogICAgIEVHTGVudW0gZ2V0UGxhdGZvcm0oKSBjb25zdCB7
IHJldHVybiBtUGxhdGZvcm07IH0KIAorICAgIGdsOjpWZXJzaW9uIGdldE1heFN1cHBvcnRlZEVT
VmVyc2lvbigpIGNvbnN0OworCiAgIHByaXZhdGU6CiAgICAgRGlzcGxheShFR0xlbnVtIHBsYXRm
b3JtLCBFR0xOYXRpdmVEaXNwbGF5VHlwZSBkaXNwbGF5SWQsIERldmljZSAqZWdsRGV2aWNlKTsK
IApAQCAtMTM5LDYgKzE0MSw3IEBAIGNsYXNzIERpc3BsYXkgZmluYWwgOiBhbmdsZTo6Tm9uQ29w
eWFibGUKICAgICBTdHJlYW1TZXQgbVN0cmVhbVNldDsKIAogICAgIGJvb2wgbUluaXRpYWxpemVk
OworICAgIGJvb2wgbURldmljZUxvc3Q7CiAKICAgICBDYXBzIG1DYXBzOwogCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRmVuY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GZW5jZS5jcHAJKHJldmlzaW9u
IDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GZW5jZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTksMTIgKzksMTEgQEAKIAogI2luY2x1ZGUgImxpYkFOR0xF
L0ZlbmNlLmgiCiAKKyNpbmNsdWRlICJhbmdsZV9nbC5oIgorCisjaW5jbHVkZSAiY29tbW9uL3V0
aWxpdGllcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0ZlbmNlTlZJbXBsLmgiCiAj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvRmVuY2VTeW5jSW1wbC5oIgotI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL1JlbmRlcmVyLmgiCi0jaW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5o
IgotCi0jaW5jbHVkZSAiYW5nbGVfZ2wuaCIKIAogbmFtZXNwYWNlIGdsCiB7CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRmxvYXQxNlRvRmxvYXQzMi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Zsb2F0MTZU
b0Zsb2F0MzIuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvRmxvYXQxNlRvRmxvYXQzMi5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwy
MjAzICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxs
eSBnZW5lcmF0ZWQuCi0KLW5hbWVzcGFjZSBnbAotewotCi1jb25zdCBzdGF0aWMgdW5zaWduZWQg
Z19tYW50aXNzYVsyMDQ4XSA9IHsKLSAgICAweDAwMDAwMDAwLAotICAgIDB4MzM4MDAwMDAsCi0g
ICAgMHgzNDAwMDAwMCwKLSAgICAweDM0NDAwMDAwLAotICAgIDB4MzQ4MDAwMDAsCi0gICAgMHgz
NGEwMDAwMCwKLSAgICAweDM0YzAwMDAwLAotICAgIDB4MzRlMDAwMDAsCi0gICAgMHgzNTAwMDAw
MCwKLSAgICAweDM1MTAwMDAwLAotICAgIDB4MzUyMDAwMDAsCi0gICAgMHgzNTMwMDAwMCwKLSAg
ICAweDM1NDAwMDAwLAotICAgIDB4MzU1MDAwMDAsCi0gICAgMHgzNTYwMDAwMCwKLSAgICAweDM1
NzAwMDAwLAotICAgIDB4MzU4MDAwMDAsCi0gICAgMHgzNTg4MDAwMCwKLSAgICAweDM1OTAwMDAw
LAotICAgIDB4MzU5ODAwMDAsCi0gICAgMHgzNWEwMDAwMCwKLSAgICAweDM1YTgwMDAwLAotICAg
IDB4MzViMDAwMDAsCi0gICAgMHgzNWI4MDAwMCwKLSAgICAweDM1YzAwMDAwLAotICAgIDB4MzVj
ODAwMDAsCi0gICAgMHgzNWQwMDAwMCwKLSAgICAweDM1ZDgwMDAwLAotICAgIDB4MzVlMDAwMDAs
Ci0gICAgMHgzNWU4MDAwMCwKLSAgICAweDM1ZjAwMDAwLAotICAgIDB4MzVmODAwMDAsCi0gICAg
MHgzNjAwMDAwMCwKLSAgICAweDM2MDQwMDAwLAotICAgIDB4MzYwODAwMDAsCi0gICAgMHgzNjBj
MDAwMCwKLSAgICAweDM2MTAwMDAwLAotICAgIDB4MzYxNDAwMDAsCi0gICAgMHgzNjE4MDAwMCwK
LSAgICAweDM2MWMwMDAwLAotICAgIDB4MzYyMDAwMDAsCi0gICAgMHgzNjI0MDAwMCwKLSAgICAw
eDM2MjgwMDAwLAotICAgIDB4MzYyYzAwMDAsCi0gICAgMHgzNjMwMDAwMCwKLSAgICAweDM2MzQw
MDAwLAotICAgIDB4MzYzODAwMDAsCi0gICAgMHgzNjNjMDAwMCwKLSAgICAweDM2NDAwMDAwLAot
ICAgIDB4MzY0NDAwMDAsCi0gICAgMHgzNjQ4MDAwMCwKLSAgICAweDM2NGMwMDAwLAotICAgIDB4
MzY1MDAwMDAsCi0gICAgMHgzNjU0MDAwMCwKLSAgICAweDM2NTgwMDAwLAotICAgIDB4MzY1YzAw
MDAsCi0gICAgMHgzNjYwMDAwMCwKLSAgICAweDM2NjQwMDAwLAotICAgIDB4MzY2ODAwMDAsCi0g
ICAgMHgzNjZjMDAwMCwKLSAgICAweDM2NzAwMDAwLAotICAgIDB4MzY3NDAwMDAsCi0gICAgMHgz
Njc4MDAwMCwKLSAgICAweDM2N2MwMDAwLAotICAgIDB4MzY4MDAwMDAsCi0gICAgMHgzNjgyMDAw
MCwKLSAgICAweDM2ODQwMDAwLAotICAgIDB4MzY4NjAwMDAsCi0gICAgMHgzNjg4MDAwMCwKLSAg
ICAweDM2OGEwMDAwLAotICAgIDB4MzY4YzAwMDAsCi0gICAgMHgzNjhlMDAwMCwKLSAgICAweDM2
OTAwMDAwLAotICAgIDB4MzY5MjAwMDAsCi0gICAgMHgzNjk0MDAwMCwKLSAgICAweDM2OTYwMDAw
LAotICAgIDB4MzY5ODAwMDAsCi0gICAgMHgzNjlhMDAwMCwKLSAgICAweDM2OWMwMDAwLAotICAg
IDB4MzY5ZTAwMDAsCi0gICAgMHgzNmEwMDAwMCwKLSAgICAweDM2YTIwMDAwLAotICAgIDB4MzZh
NDAwMDAsCi0gICAgMHgzNmE2MDAwMCwKLSAgICAweDM2YTgwMDAwLAotICAgIDB4MzZhYTAwMDAs
Ci0gICAgMHgzNmFjMDAwMCwKLSAgICAweDM2YWUwMDAwLAotICAgIDB4MzZiMDAwMDAsCi0gICAg
MHgzNmIyMDAwMCwKLSAgICAweDM2YjQwMDAwLAotICAgIDB4MzZiNjAwMDAsCi0gICAgMHgzNmI4
MDAwMCwKLSAgICAweDM2YmEwMDAwLAotICAgIDB4MzZiYzAwMDAsCi0gICAgMHgzNmJlMDAwMCwK
LSAgICAweDM2YzAwMDAwLAotICAgIDB4MzZjMjAwMDAsCi0gICAgMHgzNmM0MDAwMCwKLSAgICAw
eDM2YzYwMDAwLAotICAgIDB4MzZjODAwMDAsCi0gICAgMHgzNmNhMDAwMCwKLSAgICAweDM2Y2Mw
MDAwLAotICAgIDB4MzZjZTAwMDAsCi0gICAgMHgzNmQwMDAwMCwKLSAgICAweDM2ZDIwMDAwLAot
ICAgIDB4MzZkNDAwMDAsCi0gICAgMHgzNmQ2MDAwMCwKLSAgICAweDM2ZDgwMDAwLAotICAgIDB4
MzZkYTAwMDAsCi0gICAgMHgzNmRjMDAwMCwKLSAgICAweDM2ZGUwMDAwLAotICAgIDB4MzZlMDAw
MDAsCi0gICAgMHgzNmUyMDAwMCwKLSAgICAweDM2ZTQwMDAwLAotICAgIDB4MzZlNjAwMDAsCi0g
ICAgMHgzNmU4MDAwMCwKLSAgICAweDM2ZWEwMDAwLAotICAgIDB4MzZlYzAwMDAsCi0gICAgMHgz
NmVlMDAwMCwKLSAgICAweDM2ZjAwMDAwLAotICAgIDB4MzZmMjAwMDAsCi0gICAgMHgzNmY0MDAw
MCwKLSAgICAweDM2ZjYwMDAwLAotICAgIDB4MzZmODAwMDAsCi0gICAgMHgzNmZhMDAwMCwKLSAg
ICAweDM2ZmMwMDAwLAotICAgIDB4MzZmZTAwMDAsCi0gICAgMHgzNzAwMDAwMCwKLSAgICAweDM3
MDEwMDAwLAotICAgIDB4MzcwMjAwMDAsCi0gICAgMHgzNzAzMDAwMCwKLSAgICAweDM3MDQwMDAw
LAotICAgIDB4MzcwNTAwMDAsCi0gICAgMHgzNzA2MDAwMCwKLSAgICAweDM3MDcwMDAwLAotICAg
IDB4MzcwODAwMDAsCi0gICAgMHgzNzA5MDAwMCwKLSAgICAweDM3MGEwMDAwLAotICAgIDB4Mzcw
YjAwMDAsCi0gICAgMHgzNzBjMDAwMCwKLSAgICAweDM3MGQwMDAwLAotICAgIDB4MzcwZTAwMDAs
Ci0gICAgMHgzNzBmMDAwMCwKLSAgICAweDM3MTAwMDAwLAotICAgIDB4MzcxMTAwMDAsCi0gICAg
MHgzNzEyMDAwMCwKLSAgICAweDM3MTMwMDAwLAotICAgIDB4MzcxNDAwMDAsCi0gICAgMHgzNzE1
MDAwMCwKLSAgICAweDM3MTYwMDAwLAotICAgIDB4MzcxNzAwMDAsCi0gICAgMHgzNzE4MDAwMCwK
LSAgICAweDM3MTkwMDAwLAotICAgIDB4MzcxYTAwMDAsCi0gICAgMHgzNzFiMDAwMCwKLSAgICAw
eDM3MWMwMDAwLAotICAgIDB4MzcxZDAwMDAsCi0gICAgMHgzNzFlMDAwMCwKLSAgICAweDM3MWYw
MDAwLAotICAgIDB4MzcyMDAwMDAsCi0gICAgMHgzNzIxMDAwMCwKLSAgICAweDM3MjIwMDAwLAot
ICAgIDB4MzcyMzAwMDAsCi0gICAgMHgzNzI0MDAwMCwKLSAgICAweDM3MjUwMDAwLAotICAgIDB4
MzcyNjAwMDAsCi0gICAgMHgzNzI3MDAwMCwKLSAgICAweDM3MjgwMDAwLAotICAgIDB4MzcyOTAw
MDAsCi0gICAgMHgzNzJhMDAwMCwKLSAgICAweDM3MmIwMDAwLAotICAgIDB4MzcyYzAwMDAsCi0g
ICAgMHgzNzJkMDAwMCwKLSAgICAweDM3MmUwMDAwLAotICAgIDB4MzcyZjAwMDAsCi0gICAgMHgz
NzMwMDAwMCwKLSAgICAweDM3MzEwMDAwLAotICAgIDB4MzczMjAwMDAsCi0gICAgMHgzNzMzMDAw
MCwKLSAgICAweDM3MzQwMDAwLAotICAgIDB4MzczNTAwMDAsCi0gICAgMHgzNzM2MDAwMCwKLSAg
ICAweDM3MzcwMDAwLAotICAgIDB4MzczODAwMDAsCi0gICAgMHgzNzM5MDAwMCwKLSAgICAweDM3
M2EwMDAwLAotICAgIDB4MzczYjAwMDAsCi0gICAgMHgzNzNjMDAwMCwKLSAgICAweDM3M2QwMDAw
LAotICAgIDB4MzczZTAwMDAsCi0gICAgMHgzNzNmMDAwMCwKLSAgICAweDM3NDAwMDAwLAotICAg
IDB4Mzc0MTAwMDAsCi0gICAgMHgzNzQyMDAwMCwKLSAgICAweDM3NDMwMDAwLAotICAgIDB4Mzc0
NDAwMDAsCi0gICAgMHgzNzQ1MDAwMCwKLSAgICAweDM3NDYwMDAwLAotICAgIDB4Mzc0NzAwMDAs
Ci0gICAgMHgzNzQ4MDAwMCwKLSAgICAweDM3NDkwMDAwLAotICAgIDB4Mzc0YTAwMDAsCi0gICAg
MHgzNzRiMDAwMCwKLSAgICAweDM3NGMwMDAwLAotICAgIDB4Mzc0ZDAwMDAsCi0gICAgMHgzNzRl
MDAwMCwKLSAgICAweDM3NGYwMDAwLAotICAgIDB4Mzc1MDAwMDAsCi0gICAgMHgzNzUxMDAwMCwK
LSAgICAweDM3NTIwMDAwLAotICAgIDB4Mzc1MzAwMDAsCi0gICAgMHgzNzU0MDAwMCwKLSAgICAw
eDM3NTUwMDAwLAotICAgIDB4Mzc1NjAwMDAsCi0gICAgMHgzNzU3MDAwMCwKLSAgICAweDM3NTgw
MDAwLAotICAgIDB4Mzc1OTAwMDAsCi0gICAgMHgzNzVhMDAwMCwKLSAgICAweDM3NWIwMDAwLAot
ICAgIDB4Mzc1YzAwMDAsCi0gICAgMHgzNzVkMDAwMCwKLSAgICAweDM3NWUwMDAwLAotICAgIDB4
Mzc1ZjAwMDAsCi0gICAgMHgzNzYwMDAwMCwKLSAgICAweDM3NjEwMDAwLAotICAgIDB4Mzc2MjAw
MDAsCi0gICAgMHgzNzYzMDAwMCwKLSAgICAweDM3NjQwMDAwLAotICAgIDB4Mzc2NTAwMDAsCi0g
ICAgMHgzNzY2MDAwMCwKLSAgICAweDM3NjcwMDAwLAotICAgIDB4Mzc2ODAwMDAsCi0gICAgMHgz
NzY5MDAwMCwKLSAgICAweDM3NmEwMDAwLAotICAgIDB4Mzc2YjAwMDAsCi0gICAgMHgzNzZjMDAw
MCwKLSAgICAweDM3NmQwMDAwLAotICAgIDB4Mzc2ZTAwMDAsCi0gICAgMHgzNzZmMDAwMCwKLSAg
ICAweDM3NzAwMDAwLAotICAgIDB4Mzc3MTAwMDAsCi0gICAgMHgzNzcyMDAwMCwKLSAgICAweDM3
NzMwMDAwLAotICAgIDB4Mzc3NDAwMDAsCi0gICAgMHgzNzc1MDAwMCwKLSAgICAweDM3NzYwMDAw
LAotICAgIDB4Mzc3NzAwMDAsCi0gICAgMHgzNzc4MDAwMCwKLSAgICAweDM3NzkwMDAwLAotICAg
IDB4Mzc3YTAwMDAsCi0gICAgMHgzNzdiMDAwMCwKLSAgICAweDM3N2MwMDAwLAotICAgIDB4Mzc3
ZDAwMDAsCi0gICAgMHgzNzdlMDAwMCwKLSAgICAweDM3N2YwMDAwLAotICAgIDB4Mzc4MDAwMDAs
Ci0gICAgMHgzNzgwODAwMCwKLSAgICAweDM3ODEwMDAwLAotICAgIDB4Mzc4MTgwMDAsCi0gICAg
MHgzNzgyMDAwMCwKLSAgICAweDM3ODI4MDAwLAotICAgIDB4Mzc4MzAwMDAsCi0gICAgMHgzNzgz
ODAwMCwKLSAgICAweDM3ODQwMDAwLAotICAgIDB4Mzc4NDgwMDAsCi0gICAgMHgzNzg1MDAwMCwK
LSAgICAweDM3ODU4MDAwLAotICAgIDB4Mzc4NjAwMDAsCi0gICAgMHgzNzg2ODAwMCwKLSAgICAw
eDM3ODcwMDAwLAotICAgIDB4Mzc4NzgwMDAsCi0gICAgMHgzNzg4MDAwMCwKLSAgICAweDM3ODg4
MDAwLAotICAgIDB4Mzc4OTAwMDAsCi0gICAgMHgzNzg5ODAwMCwKLSAgICAweDM3OGEwMDAwLAot
ICAgIDB4Mzc4YTgwMDAsCi0gICAgMHgzNzhiMDAwMCwKLSAgICAweDM3OGI4MDAwLAotICAgIDB4
Mzc4YzAwMDAsCi0gICAgMHgzNzhjODAwMCwKLSAgICAweDM3OGQwMDAwLAotICAgIDB4Mzc4ZDgw
MDAsCi0gICAgMHgzNzhlMDAwMCwKLSAgICAweDM3OGU4MDAwLAotICAgIDB4Mzc4ZjAwMDAsCi0g
ICAgMHgzNzhmODAwMCwKLSAgICAweDM3OTAwMDAwLAotICAgIDB4Mzc5MDgwMDAsCi0gICAgMHgz
NzkxMDAwMCwKLSAgICAweDM3OTE4MDAwLAotICAgIDB4Mzc5MjAwMDAsCi0gICAgMHgzNzkyODAw
MCwKLSAgICAweDM3OTMwMDAwLAotICAgIDB4Mzc5MzgwMDAsCi0gICAgMHgzNzk0MDAwMCwKLSAg
ICAweDM3OTQ4MDAwLAotICAgIDB4Mzc5NTAwMDAsCi0gICAgMHgzNzk1ODAwMCwKLSAgICAweDM3
OTYwMDAwLAotICAgIDB4Mzc5NjgwMDAsCi0gICAgMHgzNzk3MDAwMCwKLSAgICAweDM3OTc4MDAw
LAotICAgIDB4Mzc5ODAwMDAsCi0gICAgMHgzNzk4ODAwMCwKLSAgICAweDM3OTkwMDAwLAotICAg
IDB4Mzc5OTgwMDAsCi0gICAgMHgzNzlhMDAwMCwKLSAgICAweDM3OWE4MDAwLAotICAgIDB4Mzc5
YjAwMDAsCi0gICAgMHgzNzliODAwMCwKLSAgICAweDM3OWMwMDAwLAotICAgIDB4Mzc5YzgwMDAs
Ci0gICAgMHgzNzlkMDAwMCwKLSAgICAweDM3OWQ4MDAwLAotICAgIDB4Mzc5ZTAwMDAsCi0gICAg
MHgzNzllODAwMCwKLSAgICAweDM3OWYwMDAwLAotICAgIDB4Mzc5ZjgwMDAsCi0gICAgMHgzN2Ew
MDAwMCwKLSAgICAweDM3YTA4MDAwLAotICAgIDB4MzdhMTAwMDAsCi0gICAgMHgzN2ExODAwMCwK
LSAgICAweDM3YTIwMDAwLAotICAgIDB4MzdhMjgwMDAsCi0gICAgMHgzN2EzMDAwMCwKLSAgICAw
eDM3YTM4MDAwLAotICAgIDB4MzdhNDAwMDAsCi0gICAgMHgzN2E0ODAwMCwKLSAgICAweDM3YTUw
MDAwLAotICAgIDB4MzdhNTgwMDAsCi0gICAgMHgzN2E2MDAwMCwKLSAgICAweDM3YTY4MDAwLAot
ICAgIDB4MzdhNzAwMDAsCi0gICAgMHgzN2E3ODAwMCwKLSAgICAweDM3YTgwMDAwLAotICAgIDB4
MzdhODgwMDAsCi0gICAgMHgzN2E5MDAwMCwKLSAgICAweDM3YTk4MDAwLAotICAgIDB4MzdhYTAw
MDAsCi0gICAgMHgzN2FhODAwMCwKLSAgICAweDM3YWIwMDAwLAotICAgIDB4MzdhYjgwMDAsCi0g
ICAgMHgzN2FjMDAwMCwKLSAgICAweDM3YWM4MDAwLAotICAgIDB4MzdhZDAwMDAsCi0gICAgMHgz
N2FkODAwMCwKLSAgICAweDM3YWUwMDAwLAotICAgIDB4MzdhZTgwMDAsCi0gICAgMHgzN2FmMDAw
MCwKLSAgICAweDM3YWY4MDAwLAotICAgIDB4MzdiMDAwMDAsCi0gICAgMHgzN2IwODAwMCwKLSAg
ICAweDM3YjEwMDAwLAotICAgIDB4MzdiMTgwMDAsCi0gICAgMHgzN2IyMDAwMCwKLSAgICAweDM3
YjI4MDAwLAotICAgIDB4MzdiMzAwMDAsCi0gICAgMHgzN2IzODAwMCwKLSAgICAweDM3YjQwMDAw
LAotICAgIDB4MzdiNDgwMDAsCi0gICAgMHgzN2I1MDAwMCwKLSAgICAweDM3YjU4MDAwLAotICAg
IDB4MzdiNjAwMDAsCi0gICAgMHgzN2I2ODAwMCwKLSAgICAweDM3YjcwMDAwLAotICAgIDB4Mzdi
NzgwMDAsCi0gICAgMHgzN2I4MDAwMCwKLSAgICAweDM3Yjg4MDAwLAotICAgIDB4MzdiOTAwMDAs
Ci0gICAgMHgzN2I5ODAwMCwKLSAgICAweDM3YmEwMDAwLAotICAgIDB4MzdiYTgwMDAsCi0gICAg
MHgzN2JiMDAwMCwKLSAgICAweDM3YmI4MDAwLAotICAgIDB4MzdiYzAwMDAsCi0gICAgMHgzN2Jj
ODAwMCwKLSAgICAweDM3YmQwMDAwLAotICAgIDB4MzdiZDgwMDAsCi0gICAgMHgzN2JlMDAwMCwK
LSAgICAweDM3YmU4MDAwLAotICAgIDB4MzdiZjAwMDAsCi0gICAgMHgzN2JmODAwMCwKLSAgICAw
eDM3YzAwMDAwLAotICAgIDB4MzdjMDgwMDAsCi0gICAgMHgzN2MxMDAwMCwKLSAgICAweDM3YzE4
MDAwLAotICAgIDB4MzdjMjAwMDAsCi0gICAgMHgzN2MyODAwMCwKLSAgICAweDM3YzMwMDAwLAot
ICAgIDB4MzdjMzgwMDAsCi0gICAgMHgzN2M0MDAwMCwKLSAgICAweDM3YzQ4MDAwLAotICAgIDB4
MzdjNTAwMDAsCi0gICAgMHgzN2M1ODAwMCwKLSAgICAweDM3YzYwMDAwLAotICAgIDB4MzdjNjgw
MDAsCi0gICAgMHgzN2M3MDAwMCwKLSAgICAweDM3Yzc4MDAwLAotICAgIDB4MzdjODAwMDAsCi0g
ICAgMHgzN2M4ODAwMCwKLSAgICAweDM3YzkwMDAwLAotICAgIDB4MzdjOTgwMDAsCi0gICAgMHgz
N2NhMDAwMCwKLSAgICAweDM3Y2E4MDAwLAotICAgIDB4MzdjYjAwMDAsCi0gICAgMHgzN2NiODAw
MCwKLSAgICAweDM3Y2MwMDAwLAotICAgIDB4MzdjYzgwMDAsCi0gICAgMHgzN2NkMDAwMCwKLSAg
ICAweDM3Y2Q4MDAwLAotICAgIDB4MzdjZTAwMDAsCi0gICAgMHgzN2NlODAwMCwKLSAgICAweDM3
Y2YwMDAwLAotICAgIDB4MzdjZjgwMDAsCi0gICAgMHgzN2QwMDAwMCwKLSAgICAweDM3ZDA4MDAw
LAotICAgIDB4MzdkMTAwMDAsCi0gICAgMHgzN2QxODAwMCwKLSAgICAweDM3ZDIwMDAwLAotICAg
IDB4MzdkMjgwMDAsCi0gICAgMHgzN2QzMDAwMCwKLSAgICAweDM3ZDM4MDAwLAotICAgIDB4Mzdk
NDAwMDAsCi0gICAgMHgzN2Q0ODAwMCwKLSAgICAweDM3ZDUwMDAwLAotICAgIDB4MzdkNTgwMDAs
Ci0gICAgMHgzN2Q2MDAwMCwKLSAgICAweDM3ZDY4MDAwLAotICAgIDB4MzdkNzAwMDAsCi0gICAg
MHgzN2Q3ODAwMCwKLSAgICAweDM3ZDgwMDAwLAotICAgIDB4MzdkODgwMDAsCi0gICAgMHgzN2Q5
MDAwMCwKLSAgICAweDM3ZDk4MDAwLAotICAgIDB4MzdkYTAwMDAsCi0gICAgMHgzN2RhODAwMCwK
LSAgICAweDM3ZGIwMDAwLAotICAgIDB4MzdkYjgwMDAsCi0gICAgMHgzN2RjMDAwMCwKLSAgICAw
eDM3ZGM4MDAwLAotICAgIDB4MzdkZDAwMDAsCi0gICAgMHgzN2RkODAwMCwKLSAgICAweDM3ZGUw
MDAwLAotICAgIDB4MzdkZTgwMDAsCi0gICAgMHgzN2RmMDAwMCwKLSAgICAweDM3ZGY4MDAwLAot
ICAgIDB4MzdlMDAwMDAsCi0gICAgMHgzN2UwODAwMCwKLSAgICAweDM3ZTEwMDAwLAotICAgIDB4
MzdlMTgwMDAsCi0gICAgMHgzN2UyMDAwMCwKLSAgICAweDM3ZTI4MDAwLAotICAgIDB4MzdlMzAw
MDAsCi0gICAgMHgzN2UzODAwMCwKLSAgICAweDM3ZTQwMDAwLAotICAgIDB4MzdlNDgwMDAsCi0g
ICAgMHgzN2U1MDAwMCwKLSAgICAweDM3ZTU4MDAwLAotICAgIDB4MzdlNjAwMDAsCi0gICAgMHgz
N2U2ODAwMCwKLSAgICAweDM3ZTcwMDAwLAotICAgIDB4MzdlNzgwMDAsCi0gICAgMHgzN2U4MDAw
MCwKLSAgICAweDM3ZTg4MDAwLAotICAgIDB4MzdlOTAwMDAsCi0gICAgMHgzN2U5ODAwMCwKLSAg
ICAweDM3ZWEwMDAwLAotICAgIDB4MzdlYTgwMDAsCi0gICAgMHgzN2ViMDAwMCwKLSAgICAweDM3
ZWI4MDAwLAotICAgIDB4MzdlYzAwMDAsCi0gICAgMHgzN2VjODAwMCwKLSAgICAweDM3ZWQwMDAw
LAotICAgIDB4MzdlZDgwMDAsCi0gICAgMHgzN2VlMDAwMCwKLSAgICAweDM3ZWU4MDAwLAotICAg
IDB4MzdlZjAwMDAsCi0gICAgMHgzN2VmODAwMCwKLSAgICAweDM3ZjAwMDAwLAotICAgIDB4Mzdm
MDgwMDAsCi0gICAgMHgzN2YxMDAwMCwKLSAgICAweDM3ZjE4MDAwLAotICAgIDB4MzdmMjAwMDAs
Ci0gICAgMHgzN2YyODAwMCwKLSAgICAweDM3ZjMwMDAwLAotICAgIDB4MzdmMzgwMDAsCi0gICAg
MHgzN2Y0MDAwMCwKLSAgICAweDM3ZjQ4MDAwLAotICAgIDB4MzdmNTAwMDAsCi0gICAgMHgzN2Y1
ODAwMCwKLSAgICAweDM3ZjYwMDAwLAotICAgIDB4MzdmNjgwMDAsCi0gICAgMHgzN2Y3MDAwMCwK
LSAgICAweDM3Zjc4MDAwLAotICAgIDB4MzdmODAwMDAsCi0gICAgMHgzN2Y4ODAwMCwKLSAgICAw
eDM3ZjkwMDAwLAotICAgIDB4MzdmOTgwMDAsCi0gICAgMHgzN2ZhMDAwMCwKLSAgICAweDM3ZmE4
MDAwLAotICAgIDB4MzdmYjAwMDAsCi0gICAgMHgzN2ZiODAwMCwKLSAgICAweDM3ZmMwMDAwLAot
ICAgIDB4MzdmYzgwMDAsCi0gICAgMHgzN2ZkMDAwMCwKLSAgICAweDM3ZmQ4MDAwLAotICAgIDB4
MzdmZTAwMDAsCi0gICAgMHgzN2ZlODAwMCwKLSAgICAweDM3ZmYwMDAwLAotICAgIDB4MzdmZjgw
MDAsCi0gICAgMHgzODAwMDAwMCwKLSAgICAweDM4MDA0MDAwLAotICAgIDB4MzgwMDgwMDAsCi0g
ICAgMHgzODAwYzAwMCwKLSAgICAweDM4MDEwMDAwLAotICAgIDB4MzgwMTQwMDAsCi0gICAgMHgz
ODAxODAwMCwKLSAgICAweDM4MDFjMDAwLAotICAgIDB4MzgwMjAwMDAsCi0gICAgMHgzODAyNDAw
MCwKLSAgICAweDM4MDI4MDAwLAotICAgIDB4MzgwMmMwMDAsCi0gICAgMHgzODAzMDAwMCwKLSAg
ICAweDM4MDM0MDAwLAotICAgIDB4MzgwMzgwMDAsCi0gICAgMHgzODAzYzAwMCwKLSAgICAweDM4
MDQwMDAwLAotICAgIDB4MzgwNDQwMDAsCi0gICAgMHgzODA0ODAwMCwKLSAgICAweDM4MDRjMDAw
LAotICAgIDB4MzgwNTAwMDAsCi0gICAgMHgzODA1NDAwMCwKLSAgICAweDM4MDU4MDAwLAotICAg
IDB4MzgwNWMwMDAsCi0gICAgMHgzODA2MDAwMCwKLSAgICAweDM4MDY0MDAwLAotICAgIDB4Mzgw
NjgwMDAsCi0gICAgMHgzODA2YzAwMCwKLSAgICAweDM4MDcwMDAwLAotICAgIDB4MzgwNzQwMDAs
Ci0gICAgMHgzODA3ODAwMCwKLSAgICAweDM4MDdjMDAwLAotICAgIDB4MzgwODAwMDAsCi0gICAg
MHgzODA4NDAwMCwKLSAgICAweDM4MDg4MDAwLAotICAgIDB4MzgwOGMwMDAsCi0gICAgMHgzODA5
MDAwMCwKLSAgICAweDM4MDk0MDAwLAotICAgIDB4MzgwOTgwMDAsCi0gICAgMHgzODA5YzAwMCwK
LSAgICAweDM4MGEwMDAwLAotICAgIDB4MzgwYTQwMDAsCi0gICAgMHgzODBhODAwMCwKLSAgICAw
eDM4MGFjMDAwLAotICAgIDB4MzgwYjAwMDAsCi0gICAgMHgzODBiNDAwMCwKLSAgICAweDM4MGI4
MDAwLAotICAgIDB4MzgwYmMwMDAsCi0gICAgMHgzODBjMDAwMCwKLSAgICAweDM4MGM0MDAwLAot
ICAgIDB4MzgwYzgwMDAsCi0gICAgMHgzODBjYzAwMCwKLSAgICAweDM4MGQwMDAwLAotICAgIDB4
MzgwZDQwMDAsCi0gICAgMHgzODBkODAwMCwKLSAgICAweDM4MGRjMDAwLAotICAgIDB4MzgwZTAw
MDAsCi0gICAgMHgzODBlNDAwMCwKLSAgICAweDM4MGU4MDAwLAotICAgIDB4MzgwZWMwMDAsCi0g
ICAgMHgzODBmMDAwMCwKLSAgICAweDM4MGY0MDAwLAotICAgIDB4MzgwZjgwMDAsCi0gICAgMHgz
ODBmYzAwMCwKLSAgICAweDM4MTAwMDAwLAotICAgIDB4MzgxMDQwMDAsCi0gICAgMHgzODEwODAw
MCwKLSAgICAweDM4MTBjMDAwLAotICAgIDB4MzgxMTAwMDAsCi0gICAgMHgzODExNDAwMCwKLSAg
ICAweDM4MTE4MDAwLAotICAgIDB4MzgxMWMwMDAsCi0gICAgMHgzODEyMDAwMCwKLSAgICAweDM4
MTI0MDAwLAotICAgIDB4MzgxMjgwMDAsCi0gICAgMHgzODEyYzAwMCwKLSAgICAweDM4MTMwMDAw
LAotICAgIDB4MzgxMzQwMDAsCi0gICAgMHgzODEzODAwMCwKLSAgICAweDM4MTNjMDAwLAotICAg
IDB4MzgxNDAwMDAsCi0gICAgMHgzODE0NDAwMCwKLSAgICAweDM4MTQ4MDAwLAotICAgIDB4Mzgx
NGMwMDAsCi0gICAgMHgzODE1MDAwMCwKLSAgICAweDM4MTU0MDAwLAotICAgIDB4MzgxNTgwMDAs
Ci0gICAgMHgzODE1YzAwMCwKLSAgICAweDM4MTYwMDAwLAotICAgIDB4MzgxNjQwMDAsCi0gICAg
MHgzODE2ODAwMCwKLSAgICAweDM4MTZjMDAwLAotICAgIDB4MzgxNzAwMDAsCi0gICAgMHgzODE3
NDAwMCwKLSAgICAweDM4MTc4MDAwLAotICAgIDB4MzgxN2MwMDAsCi0gICAgMHgzODE4MDAwMCwK
LSAgICAweDM4MTg0MDAwLAotICAgIDB4MzgxODgwMDAsCi0gICAgMHgzODE4YzAwMCwKLSAgICAw
eDM4MTkwMDAwLAotICAgIDB4MzgxOTQwMDAsCi0gICAgMHgzODE5ODAwMCwKLSAgICAweDM4MTlj
MDAwLAotICAgIDB4MzgxYTAwMDAsCi0gICAgMHgzODFhNDAwMCwKLSAgICAweDM4MWE4MDAwLAot
ICAgIDB4MzgxYWMwMDAsCi0gICAgMHgzODFiMDAwMCwKLSAgICAweDM4MWI0MDAwLAotICAgIDB4
MzgxYjgwMDAsCi0gICAgMHgzODFiYzAwMCwKLSAgICAweDM4MWMwMDAwLAotICAgIDB4MzgxYzQw
MDAsCi0gICAgMHgzODFjODAwMCwKLSAgICAweDM4MWNjMDAwLAotICAgIDB4MzgxZDAwMDAsCi0g
ICAgMHgzODFkNDAwMCwKLSAgICAweDM4MWQ4MDAwLAotICAgIDB4MzgxZGMwMDAsCi0gICAgMHgz
ODFlMDAwMCwKLSAgICAweDM4MWU0MDAwLAotICAgIDB4MzgxZTgwMDAsCi0gICAgMHgzODFlYzAw
MCwKLSAgICAweDM4MWYwMDAwLAotICAgIDB4MzgxZjQwMDAsCi0gICAgMHgzODFmODAwMCwKLSAg
ICAweDM4MWZjMDAwLAotICAgIDB4MzgyMDAwMDAsCi0gICAgMHgzODIwNDAwMCwKLSAgICAweDM4
MjA4MDAwLAotICAgIDB4MzgyMGMwMDAsCi0gICAgMHgzODIxMDAwMCwKLSAgICAweDM4MjE0MDAw
LAotICAgIDB4MzgyMTgwMDAsCi0gICAgMHgzODIxYzAwMCwKLSAgICAweDM4MjIwMDAwLAotICAg
IDB4MzgyMjQwMDAsCi0gICAgMHgzODIyODAwMCwKLSAgICAweDM4MjJjMDAwLAotICAgIDB4Mzgy
MzAwMDAsCi0gICAgMHgzODIzNDAwMCwKLSAgICAweDM4MjM4MDAwLAotICAgIDB4MzgyM2MwMDAs
Ci0gICAgMHgzODI0MDAwMCwKLSAgICAweDM4MjQ0MDAwLAotICAgIDB4MzgyNDgwMDAsCi0gICAg
MHgzODI0YzAwMCwKLSAgICAweDM4MjUwMDAwLAotICAgIDB4MzgyNTQwMDAsCi0gICAgMHgzODI1
ODAwMCwKLSAgICAweDM4MjVjMDAwLAotICAgIDB4MzgyNjAwMDAsCi0gICAgMHgzODI2NDAwMCwK
LSAgICAweDM4MjY4MDAwLAotICAgIDB4MzgyNmMwMDAsCi0gICAgMHgzODI3MDAwMCwKLSAgICAw
eDM4Mjc0MDAwLAotICAgIDB4MzgyNzgwMDAsCi0gICAgMHgzODI3YzAwMCwKLSAgICAweDM4Mjgw
MDAwLAotICAgIDB4MzgyODQwMDAsCi0gICAgMHgzODI4ODAwMCwKLSAgICAweDM4MjhjMDAwLAot
ICAgIDB4MzgyOTAwMDAsCi0gICAgMHgzODI5NDAwMCwKLSAgICAweDM4Mjk4MDAwLAotICAgIDB4
MzgyOWMwMDAsCi0gICAgMHgzODJhMDAwMCwKLSAgICAweDM4MmE0MDAwLAotICAgIDB4MzgyYTgw
MDAsCi0gICAgMHgzODJhYzAwMCwKLSAgICAweDM4MmIwMDAwLAotICAgIDB4MzgyYjQwMDAsCi0g
ICAgMHgzODJiODAwMCwKLSAgICAweDM4MmJjMDAwLAotICAgIDB4MzgyYzAwMDAsCi0gICAgMHgz
ODJjNDAwMCwKLSAgICAweDM4MmM4MDAwLAotICAgIDB4MzgyY2MwMDAsCi0gICAgMHgzODJkMDAw
MCwKLSAgICAweDM4MmQ0MDAwLAotICAgIDB4MzgyZDgwMDAsCi0gICAgMHgzODJkYzAwMCwKLSAg
ICAweDM4MmUwMDAwLAotICAgIDB4MzgyZTQwMDAsCi0gICAgMHgzODJlODAwMCwKLSAgICAweDM4
MmVjMDAwLAotICAgIDB4MzgyZjAwMDAsCi0gICAgMHgzODJmNDAwMCwKLSAgICAweDM4MmY4MDAw
LAotICAgIDB4MzgyZmMwMDAsCi0gICAgMHgzODMwMDAwMCwKLSAgICAweDM4MzA0MDAwLAotICAg
IDB4MzgzMDgwMDAsCi0gICAgMHgzODMwYzAwMCwKLSAgICAweDM4MzEwMDAwLAotICAgIDB4Mzgz
MTQwMDAsCi0gICAgMHgzODMxODAwMCwKLSAgICAweDM4MzFjMDAwLAotICAgIDB4MzgzMjAwMDAs
Ci0gICAgMHgzODMyNDAwMCwKLSAgICAweDM4MzI4MDAwLAotICAgIDB4MzgzMmMwMDAsCi0gICAg
MHgzODMzMDAwMCwKLSAgICAweDM4MzM0MDAwLAotICAgIDB4MzgzMzgwMDAsCi0gICAgMHgzODMz
YzAwMCwKLSAgICAweDM4MzQwMDAwLAotICAgIDB4MzgzNDQwMDAsCi0gICAgMHgzODM0ODAwMCwK
LSAgICAweDM4MzRjMDAwLAotICAgIDB4MzgzNTAwMDAsCi0gICAgMHgzODM1NDAwMCwKLSAgICAw
eDM4MzU4MDAwLAotICAgIDB4MzgzNWMwMDAsCi0gICAgMHgzODM2MDAwMCwKLSAgICAweDM4MzY0
MDAwLAotICAgIDB4MzgzNjgwMDAsCi0gICAgMHgzODM2YzAwMCwKLSAgICAweDM4MzcwMDAwLAot
ICAgIDB4MzgzNzQwMDAsCi0gICAgMHgzODM3ODAwMCwKLSAgICAweDM4MzdjMDAwLAotICAgIDB4
MzgzODAwMDAsCi0gICAgMHgzODM4NDAwMCwKLSAgICAweDM4Mzg4MDAwLAotICAgIDB4MzgzOGMw
MDAsCi0gICAgMHgzODM5MDAwMCwKLSAgICAweDM4Mzk0MDAwLAotICAgIDB4MzgzOTgwMDAsCi0g
ICAgMHgzODM5YzAwMCwKLSAgICAweDM4M2EwMDAwLAotICAgIDB4MzgzYTQwMDAsCi0gICAgMHgz
ODNhODAwMCwKLSAgICAweDM4M2FjMDAwLAotICAgIDB4MzgzYjAwMDAsCi0gICAgMHgzODNiNDAw
MCwKLSAgICAweDM4M2I4MDAwLAotICAgIDB4MzgzYmMwMDAsCi0gICAgMHgzODNjMDAwMCwKLSAg
ICAweDM4M2M0MDAwLAotICAgIDB4MzgzYzgwMDAsCi0gICAgMHgzODNjYzAwMCwKLSAgICAweDM4
M2QwMDAwLAotICAgIDB4MzgzZDQwMDAsCi0gICAgMHgzODNkODAwMCwKLSAgICAweDM4M2RjMDAw
LAotICAgIDB4MzgzZTAwMDAsCi0gICAgMHgzODNlNDAwMCwKLSAgICAweDM4M2U4MDAwLAotICAg
IDB4MzgzZWMwMDAsCi0gICAgMHgzODNmMDAwMCwKLSAgICAweDM4M2Y0MDAwLAotICAgIDB4Mzgz
ZjgwMDAsCi0gICAgMHgzODNmYzAwMCwKLSAgICAweDM4NDAwMDAwLAotICAgIDB4Mzg0MDQwMDAs
Ci0gICAgMHgzODQwODAwMCwKLSAgICAweDM4NDBjMDAwLAotICAgIDB4Mzg0MTAwMDAsCi0gICAg
MHgzODQxNDAwMCwKLSAgICAweDM4NDE4MDAwLAotICAgIDB4Mzg0MWMwMDAsCi0gICAgMHgzODQy
MDAwMCwKLSAgICAweDM4NDI0MDAwLAotICAgIDB4Mzg0MjgwMDAsCi0gICAgMHgzODQyYzAwMCwK
LSAgICAweDM4NDMwMDAwLAotICAgIDB4Mzg0MzQwMDAsCi0gICAgMHgzODQzODAwMCwKLSAgICAw
eDM4NDNjMDAwLAotICAgIDB4Mzg0NDAwMDAsCi0gICAgMHgzODQ0NDAwMCwKLSAgICAweDM4NDQ4
MDAwLAotICAgIDB4Mzg0NGMwMDAsCi0gICAgMHgzODQ1MDAwMCwKLSAgICAweDM4NDU0MDAwLAot
ICAgIDB4Mzg0NTgwMDAsCi0gICAgMHgzODQ1YzAwMCwKLSAgICAweDM4NDYwMDAwLAotICAgIDB4
Mzg0NjQwMDAsCi0gICAgMHgzODQ2ODAwMCwKLSAgICAweDM4NDZjMDAwLAotICAgIDB4Mzg0NzAw
MDAsCi0gICAgMHgzODQ3NDAwMCwKLSAgICAweDM4NDc4MDAwLAotICAgIDB4Mzg0N2MwMDAsCi0g
ICAgMHgzODQ4MDAwMCwKLSAgICAweDM4NDg0MDAwLAotICAgIDB4Mzg0ODgwMDAsCi0gICAgMHgz
ODQ4YzAwMCwKLSAgICAweDM4NDkwMDAwLAotICAgIDB4Mzg0OTQwMDAsCi0gICAgMHgzODQ5ODAw
MCwKLSAgICAweDM4NDljMDAwLAotICAgIDB4Mzg0YTAwMDAsCi0gICAgMHgzODRhNDAwMCwKLSAg
ICAweDM4NGE4MDAwLAotICAgIDB4Mzg0YWMwMDAsCi0gICAgMHgzODRiMDAwMCwKLSAgICAweDM4
NGI0MDAwLAotICAgIDB4Mzg0YjgwMDAsCi0gICAgMHgzODRiYzAwMCwKLSAgICAweDM4NGMwMDAw
LAotICAgIDB4Mzg0YzQwMDAsCi0gICAgMHgzODRjODAwMCwKLSAgICAweDM4NGNjMDAwLAotICAg
IDB4Mzg0ZDAwMDAsCi0gICAgMHgzODRkNDAwMCwKLSAgICAweDM4NGQ4MDAwLAotICAgIDB4Mzg0
ZGMwMDAsCi0gICAgMHgzODRlMDAwMCwKLSAgICAweDM4NGU0MDAwLAotICAgIDB4Mzg0ZTgwMDAs
Ci0gICAgMHgzODRlYzAwMCwKLSAgICAweDM4NGYwMDAwLAotICAgIDB4Mzg0ZjQwMDAsCi0gICAg
MHgzODRmODAwMCwKLSAgICAweDM4NGZjMDAwLAotICAgIDB4Mzg1MDAwMDAsCi0gICAgMHgzODUw
NDAwMCwKLSAgICAweDM4NTA4MDAwLAotICAgIDB4Mzg1MGMwMDAsCi0gICAgMHgzODUxMDAwMCwK
LSAgICAweDM4NTE0MDAwLAotICAgIDB4Mzg1MTgwMDAsCi0gICAgMHgzODUxYzAwMCwKLSAgICAw
eDM4NTIwMDAwLAotICAgIDB4Mzg1MjQwMDAsCi0gICAgMHgzODUyODAwMCwKLSAgICAweDM4NTJj
MDAwLAotICAgIDB4Mzg1MzAwMDAsCi0gICAgMHgzODUzNDAwMCwKLSAgICAweDM4NTM4MDAwLAot
ICAgIDB4Mzg1M2MwMDAsCi0gICAgMHgzODU0MDAwMCwKLSAgICAweDM4NTQ0MDAwLAotICAgIDB4
Mzg1NDgwMDAsCi0gICAgMHgzODU0YzAwMCwKLSAgICAweDM4NTUwMDAwLAotICAgIDB4Mzg1NTQw
MDAsCi0gICAgMHgzODU1ODAwMCwKLSAgICAweDM4NTVjMDAwLAotICAgIDB4Mzg1NjAwMDAsCi0g
ICAgMHgzODU2NDAwMCwKLSAgICAweDM4NTY4MDAwLAotICAgIDB4Mzg1NmMwMDAsCi0gICAgMHgz
ODU3MDAwMCwKLSAgICAweDM4NTc0MDAwLAotICAgIDB4Mzg1NzgwMDAsCi0gICAgMHgzODU3YzAw
MCwKLSAgICAweDM4NTgwMDAwLAotICAgIDB4Mzg1ODQwMDAsCi0gICAgMHgzODU4ODAwMCwKLSAg
ICAweDM4NThjMDAwLAotICAgIDB4Mzg1OTAwMDAsCi0gICAgMHgzODU5NDAwMCwKLSAgICAweDM4
NTk4MDAwLAotICAgIDB4Mzg1OWMwMDAsCi0gICAgMHgzODVhMDAwMCwKLSAgICAweDM4NWE0MDAw
LAotICAgIDB4Mzg1YTgwMDAsCi0gICAgMHgzODVhYzAwMCwKLSAgICAweDM4NWIwMDAwLAotICAg
IDB4Mzg1YjQwMDAsCi0gICAgMHgzODViODAwMCwKLSAgICAweDM4NWJjMDAwLAotICAgIDB4Mzg1
YzAwMDAsCi0gICAgMHgzODVjNDAwMCwKLSAgICAweDM4NWM4MDAwLAotICAgIDB4Mzg1Y2MwMDAs
Ci0gICAgMHgzODVkMDAwMCwKLSAgICAweDM4NWQ0MDAwLAotICAgIDB4Mzg1ZDgwMDAsCi0gICAg
MHgzODVkYzAwMCwKLSAgICAweDM4NWUwMDAwLAotICAgIDB4Mzg1ZTQwMDAsCi0gICAgMHgzODVl
ODAwMCwKLSAgICAweDM4NWVjMDAwLAotICAgIDB4Mzg1ZjAwMDAsCi0gICAgMHgzODVmNDAwMCwK
LSAgICAweDM4NWY4MDAwLAotICAgIDB4Mzg1ZmMwMDAsCi0gICAgMHgzODYwMDAwMCwKLSAgICAw
eDM4NjA0MDAwLAotICAgIDB4Mzg2MDgwMDAsCi0gICAgMHgzODYwYzAwMCwKLSAgICAweDM4NjEw
MDAwLAotICAgIDB4Mzg2MTQwMDAsCi0gICAgMHgzODYxODAwMCwKLSAgICAweDM4NjFjMDAwLAot
ICAgIDB4Mzg2MjAwMDAsCi0gICAgMHgzODYyNDAwMCwKLSAgICAweDM4NjI4MDAwLAotICAgIDB4
Mzg2MmMwMDAsCi0gICAgMHgzODYzMDAwMCwKLSAgICAweDM4NjM0MDAwLAotICAgIDB4Mzg2Mzgw
MDAsCi0gICAgMHgzODYzYzAwMCwKLSAgICAweDM4NjQwMDAwLAotICAgIDB4Mzg2NDQwMDAsCi0g
ICAgMHgzODY0ODAwMCwKLSAgICAweDM4NjRjMDAwLAotICAgIDB4Mzg2NTAwMDAsCi0gICAgMHgz
ODY1NDAwMCwKLSAgICAweDM4NjU4MDAwLAotICAgIDB4Mzg2NWMwMDAsCi0gICAgMHgzODY2MDAw
MCwKLSAgICAweDM4NjY0MDAwLAotICAgIDB4Mzg2NjgwMDAsCi0gICAgMHgzODY2YzAwMCwKLSAg
ICAweDM4NjcwMDAwLAotICAgIDB4Mzg2NzQwMDAsCi0gICAgMHgzODY3ODAwMCwKLSAgICAweDM4
NjdjMDAwLAotICAgIDB4Mzg2ODAwMDAsCi0gICAgMHgzODY4NDAwMCwKLSAgICAweDM4Njg4MDAw
LAotICAgIDB4Mzg2OGMwMDAsCi0gICAgMHgzODY5MDAwMCwKLSAgICAweDM4Njk0MDAwLAotICAg
IDB4Mzg2OTgwMDAsCi0gICAgMHgzODY5YzAwMCwKLSAgICAweDM4NmEwMDAwLAotICAgIDB4Mzg2
YTQwMDAsCi0gICAgMHgzODZhODAwMCwKLSAgICAweDM4NmFjMDAwLAotICAgIDB4Mzg2YjAwMDAs
Ci0gICAgMHgzODZiNDAwMCwKLSAgICAweDM4NmI4MDAwLAotICAgIDB4Mzg2YmMwMDAsCi0gICAg
MHgzODZjMDAwMCwKLSAgICAweDM4NmM0MDAwLAotICAgIDB4Mzg2YzgwMDAsCi0gICAgMHgzODZj
YzAwMCwKLSAgICAweDM4NmQwMDAwLAotICAgIDB4Mzg2ZDQwMDAsCi0gICAgMHgzODZkODAwMCwK
LSAgICAweDM4NmRjMDAwLAotICAgIDB4Mzg2ZTAwMDAsCi0gICAgMHgzODZlNDAwMCwKLSAgICAw
eDM4NmU4MDAwLAotICAgIDB4Mzg2ZWMwMDAsCi0gICAgMHgzODZmMDAwMCwKLSAgICAweDM4NmY0
MDAwLAotICAgIDB4Mzg2ZjgwMDAsCi0gICAgMHgzODZmYzAwMCwKLSAgICAweDM4NzAwMDAwLAot
ICAgIDB4Mzg3MDQwMDAsCi0gICAgMHgzODcwODAwMCwKLSAgICAweDM4NzBjMDAwLAotICAgIDB4
Mzg3MTAwMDAsCi0gICAgMHgzODcxNDAwMCwKLSAgICAweDM4NzE4MDAwLAotICAgIDB4Mzg3MWMw
MDAsCi0gICAgMHgzODcyMDAwMCwKLSAgICAweDM4NzI0MDAwLAotICAgIDB4Mzg3MjgwMDAsCi0g
ICAgMHgzODcyYzAwMCwKLSAgICAweDM4NzMwMDAwLAotICAgIDB4Mzg3MzQwMDAsCi0gICAgMHgz
ODczODAwMCwKLSAgICAweDM4NzNjMDAwLAotICAgIDB4Mzg3NDAwMDAsCi0gICAgMHgzODc0NDAw
MCwKLSAgICAweDM4NzQ4MDAwLAotICAgIDB4Mzg3NGMwMDAsCi0gICAgMHgzODc1MDAwMCwKLSAg
ICAweDM4NzU0MDAwLAotICAgIDB4Mzg3NTgwMDAsCi0gICAgMHgzODc1YzAwMCwKLSAgICAweDM4
NzYwMDAwLAotICAgIDB4Mzg3NjQwMDAsCi0gICAgMHgzODc2ODAwMCwKLSAgICAweDM4NzZjMDAw
LAotICAgIDB4Mzg3NzAwMDAsCi0gICAgMHgzODc3NDAwMCwKLSAgICAweDM4Nzc4MDAwLAotICAg
IDB4Mzg3N2MwMDAsCi0gICAgMHgzODc4MDAwMCwKLSAgICAweDM4Nzg0MDAwLAotICAgIDB4Mzg3
ODgwMDAsCi0gICAgMHgzODc4YzAwMCwKLSAgICAweDM4NzkwMDAwLAotICAgIDB4Mzg3OTQwMDAs
Ci0gICAgMHgzODc5ODAwMCwKLSAgICAweDM4NzljMDAwLAotICAgIDB4Mzg3YTAwMDAsCi0gICAg
MHgzODdhNDAwMCwKLSAgICAweDM4N2E4MDAwLAotICAgIDB4Mzg3YWMwMDAsCi0gICAgMHgzODdi
MDAwMCwKLSAgICAweDM4N2I0MDAwLAotICAgIDB4Mzg3YjgwMDAsCi0gICAgMHgzODdiYzAwMCwK
LSAgICAweDM4N2MwMDAwLAotICAgIDB4Mzg3YzQwMDAsCi0gICAgMHgzODdjODAwMCwKLSAgICAw
eDM4N2NjMDAwLAotICAgIDB4Mzg3ZDAwMDAsCi0gICAgMHgzODdkNDAwMCwKLSAgICAweDM4N2Q4
MDAwLAotICAgIDB4Mzg3ZGMwMDAsCi0gICAgMHgzODdlMDAwMCwKLSAgICAweDM4N2U0MDAwLAot
ICAgIDB4Mzg3ZTgwMDAsCi0gICAgMHgzODdlYzAwMCwKLSAgICAweDM4N2YwMDAwLAotICAgIDB4
Mzg3ZjQwMDAsCi0gICAgMHgzODdmODAwMCwKLSAgICAweDM4N2ZjMDAwLAotICAgIDB4MzgwMDAw
MDAsCi0gICAgMHgzODAwMjAwMCwKLSAgICAweDM4MDA0MDAwLAotICAgIDB4MzgwMDYwMDAsCi0g
ICAgMHgzODAwODAwMCwKLSAgICAweDM4MDBhMDAwLAotICAgIDB4MzgwMGMwMDAsCi0gICAgMHgz
ODAwZTAwMCwKLSAgICAweDM4MDEwMDAwLAotICAgIDB4MzgwMTIwMDAsCi0gICAgMHgzODAxNDAw
MCwKLSAgICAweDM4MDE2MDAwLAotICAgIDB4MzgwMTgwMDAsCi0gICAgMHgzODAxYTAwMCwKLSAg
ICAweDM4MDFjMDAwLAotICAgIDB4MzgwMWUwMDAsCi0gICAgMHgzODAyMDAwMCwKLSAgICAweDM4
MDIyMDAwLAotICAgIDB4MzgwMjQwMDAsCi0gICAgMHgzODAyNjAwMCwKLSAgICAweDM4MDI4MDAw
LAotICAgIDB4MzgwMmEwMDAsCi0gICAgMHgzODAyYzAwMCwKLSAgICAweDM4MDJlMDAwLAotICAg
IDB4MzgwMzAwMDAsCi0gICAgMHgzODAzMjAwMCwKLSAgICAweDM4MDM0MDAwLAotICAgIDB4Mzgw
MzYwMDAsCi0gICAgMHgzODAzODAwMCwKLSAgICAweDM4MDNhMDAwLAotICAgIDB4MzgwM2MwMDAs
Ci0gICAgMHgzODAzZTAwMCwKLSAgICAweDM4MDQwMDAwLAotICAgIDB4MzgwNDIwMDAsCi0gICAg
MHgzODA0NDAwMCwKLSAgICAweDM4MDQ2MDAwLAotICAgIDB4MzgwNDgwMDAsCi0gICAgMHgzODA0
YTAwMCwKLSAgICAweDM4MDRjMDAwLAotICAgIDB4MzgwNGUwMDAsCi0gICAgMHgzODA1MDAwMCwK
LSAgICAweDM4MDUyMDAwLAotICAgIDB4MzgwNTQwMDAsCi0gICAgMHgzODA1NjAwMCwKLSAgICAw
eDM4MDU4MDAwLAotICAgIDB4MzgwNWEwMDAsCi0gICAgMHgzODA1YzAwMCwKLSAgICAweDM4MDVl
MDAwLAotICAgIDB4MzgwNjAwMDAsCi0gICAgMHgzODA2MjAwMCwKLSAgICAweDM4MDY0MDAwLAot
ICAgIDB4MzgwNjYwMDAsCi0gICAgMHgzODA2ODAwMCwKLSAgICAweDM4MDZhMDAwLAotICAgIDB4
MzgwNmMwMDAsCi0gICAgMHgzODA2ZTAwMCwKLSAgICAweDM4MDcwMDAwLAotICAgIDB4MzgwNzIw
MDAsCi0gICAgMHgzODA3NDAwMCwKLSAgICAweDM4MDc2MDAwLAotICAgIDB4MzgwNzgwMDAsCi0g
ICAgMHgzODA3YTAwMCwKLSAgICAweDM4MDdjMDAwLAotICAgIDB4MzgwN2UwMDAsCi0gICAgMHgz
ODA4MDAwMCwKLSAgICAweDM4MDgyMDAwLAotICAgIDB4MzgwODQwMDAsCi0gICAgMHgzODA4NjAw
MCwKLSAgICAweDM4MDg4MDAwLAotICAgIDB4MzgwOGEwMDAsCi0gICAgMHgzODA4YzAwMCwKLSAg
ICAweDM4MDhlMDAwLAotICAgIDB4MzgwOTAwMDAsCi0gICAgMHgzODA5MjAwMCwKLSAgICAweDM4
MDk0MDAwLAotICAgIDB4MzgwOTYwMDAsCi0gICAgMHgzODA5ODAwMCwKLSAgICAweDM4MDlhMDAw
LAotICAgIDB4MzgwOWMwMDAsCi0gICAgMHgzODA5ZTAwMCwKLSAgICAweDM4MGEwMDAwLAotICAg
IDB4MzgwYTIwMDAsCi0gICAgMHgzODBhNDAwMCwKLSAgICAweDM4MGE2MDAwLAotICAgIDB4Mzgw
YTgwMDAsCi0gICAgMHgzODBhYTAwMCwKLSAgICAweDM4MGFjMDAwLAotICAgIDB4MzgwYWUwMDAs
Ci0gICAgMHgzODBiMDAwMCwKLSAgICAweDM4MGIyMDAwLAotICAgIDB4MzgwYjQwMDAsCi0gICAg
MHgzODBiNjAwMCwKLSAgICAweDM4MGI4MDAwLAotICAgIDB4MzgwYmEwMDAsCi0gICAgMHgzODBi
YzAwMCwKLSAgICAweDM4MGJlMDAwLAotICAgIDB4MzgwYzAwMDAsCi0gICAgMHgzODBjMjAwMCwK
LSAgICAweDM4MGM0MDAwLAotICAgIDB4MzgwYzYwMDAsCi0gICAgMHgzODBjODAwMCwKLSAgICAw
eDM4MGNhMDAwLAotICAgIDB4MzgwY2MwMDAsCi0gICAgMHgzODBjZTAwMCwKLSAgICAweDM4MGQw
MDAwLAotICAgIDB4MzgwZDIwMDAsCi0gICAgMHgzODBkNDAwMCwKLSAgICAweDM4MGQ2MDAwLAot
ICAgIDB4MzgwZDgwMDAsCi0gICAgMHgzODBkYTAwMCwKLSAgICAweDM4MGRjMDAwLAotICAgIDB4
MzgwZGUwMDAsCi0gICAgMHgzODBlMDAwMCwKLSAgICAweDM4MGUyMDAwLAotICAgIDB4MzgwZTQw
MDAsCi0gICAgMHgzODBlNjAwMCwKLSAgICAweDM4MGU4MDAwLAotICAgIDB4MzgwZWEwMDAsCi0g
ICAgMHgzODBlYzAwMCwKLSAgICAweDM4MGVlMDAwLAotICAgIDB4MzgwZjAwMDAsCi0gICAgMHgz
ODBmMjAwMCwKLSAgICAweDM4MGY0MDAwLAotICAgIDB4MzgwZjYwMDAsCi0gICAgMHgzODBmODAw
MCwKLSAgICAweDM4MGZhMDAwLAotICAgIDB4MzgwZmMwMDAsCi0gICAgMHgzODBmZTAwMCwKLSAg
ICAweDM4MTAwMDAwLAotICAgIDB4MzgxMDIwMDAsCi0gICAgMHgzODEwNDAwMCwKLSAgICAweDM4
MTA2MDAwLAotICAgIDB4MzgxMDgwMDAsCi0gICAgMHgzODEwYTAwMCwKLSAgICAweDM4MTBjMDAw
LAotICAgIDB4MzgxMGUwMDAsCi0gICAgMHgzODExMDAwMCwKLSAgICAweDM4MTEyMDAwLAotICAg
IDB4MzgxMTQwMDAsCi0gICAgMHgzODExNjAwMCwKLSAgICAweDM4MTE4MDAwLAotICAgIDB4Mzgx
MWEwMDAsCi0gICAgMHgzODExYzAwMCwKLSAgICAweDM4MTFlMDAwLAotICAgIDB4MzgxMjAwMDAs
Ci0gICAgMHgzODEyMjAwMCwKLSAgICAweDM4MTI0MDAwLAotICAgIDB4MzgxMjYwMDAsCi0gICAg
MHgzODEyODAwMCwKLSAgICAweDM4MTJhMDAwLAotICAgIDB4MzgxMmMwMDAsCi0gICAgMHgzODEy
ZTAwMCwKLSAgICAweDM4MTMwMDAwLAotICAgIDB4MzgxMzIwMDAsCi0gICAgMHgzODEzNDAwMCwK
LSAgICAweDM4MTM2MDAwLAotICAgIDB4MzgxMzgwMDAsCi0gICAgMHgzODEzYTAwMCwKLSAgICAw
eDM4MTNjMDAwLAotICAgIDB4MzgxM2UwMDAsCi0gICAgMHgzODE0MDAwMCwKLSAgICAweDM4MTQy
MDAwLAotICAgIDB4MzgxNDQwMDAsCi0gICAgMHgzODE0NjAwMCwKLSAgICAweDM4MTQ4MDAwLAot
ICAgIDB4MzgxNGEwMDAsCi0gICAgMHgzODE0YzAwMCwKLSAgICAweDM4MTRlMDAwLAotICAgIDB4
MzgxNTAwMDAsCi0gICAgMHgzODE1MjAwMCwKLSAgICAweDM4MTU0MDAwLAotICAgIDB4MzgxNTYw
MDAsCi0gICAgMHgzODE1ODAwMCwKLSAgICAweDM4MTVhMDAwLAotICAgIDB4MzgxNWMwMDAsCi0g
ICAgMHgzODE1ZTAwMCwKLSAgICAweDM4MTYwMDAwLAotICAgIDB4MzgxNjIwMDAsCi0gICAgMHgz
ODE2NDAwMCwKLSAgICAweDM4MTY2MDAwLAotICAgIDB4MzgxNjgwMDAsCi0gICAgMHgzODE2YTAw
MCwKLSAgICAweDM4MTZjMDAwLAotICAgIDB4MzgxNmUwMDAsCi0gICAgMHgzODE3MDAwMCwKLSAg
ICAweDM4MTcyMDAwLAotICAgIDB4MzgxNzQwMDAsCi0gICAgMHgzODE3NjAwMCwKLSAgICAweDM4
MTc4MDAwLAotICAgIDB4MzgxN2EwMDAsCi0gICAgMHgzODE3YzAwMCwKLSAgICAweDM4MTdlMDAw
LAotICAgIDB4MzgxODAwMDAsCi0gICAgMHgzODE4MjAwMCwKLSAgICAweDM4MTg0MDAwLAotICAg
IDB4MzgxODYwMDAsCi0gICAgMHgzODE4ODAwMCwKLSAgICAweDM4MThhMDAwLAotICAgIDB4Mzgx
OGMwMDAsCi0gICAgMHgzODE4ZTAwMCwKLSAgICAweDM4MTkwMDAwLAotICAgIDB4MzgxOTIwMDAs
Ci0gICAgMHgzODE5NDAwMCwKLSAgICAweDM4MTk2MDAwLAotICAgIDB4MzgxOTgwMDAsCi0gICAg
MHgzODE5YTAwMCwKLSAgICAweDM4MTljMDAwLAotICAgIDB4MzgxOWUwMDAsCi0gICAgMHgzODFh
MDAwMCwKLSAgICAweDM4MWEyMDAwLAotICAgIDB4MzgxYTQwMDAsCi0gICAgMHgzODFhNjAwMCwK
LSAgICAweDM4MWE4MDAwLAotICAgIDB4MzgxYWEwMDAsCi0gICAgMHgzODFhYzAwMCwKLSAgICAw
eDM4MWFlMDAwLAotICAgIDB4MzgxYjAwMDAsCi0gICAgMHgzODFiMjAwMCwKLSAgICAweDM4MWI0
MDAwLAotICAgIDB4MzgxYjYwMDAsCi0gICAgMHgzODFiODAwMCwKLSAgICAweDM4MWJhMDAwLAot
ICAgIDB4MzgxYmMwMDAsCi0gICAgMHgzODFiZTAwMCwKLSAgICAweDM4MWMwMDAwLAotICAgIDB4
MzgxYzIwMDAsCi0gICAgMHgzODFjNDAwMCwKLSAgICAweDM4MWM2MDAwLAotICAgIDB4MzgxYzgw
MDAsCi0gICAgMHgzODFjYTAwMCwKLSAgICAweDM4MWNjMDAwLAotICAgIDB4MzgxY2UwMDAsCi0g
ICAgMHgzODFkMDAwMCwKLSAgICAweDM4MWQyMDAwLAotICAgIDB4MzgxZDQwMDAsCi0gICAgMHgz
ODFkNjAwMCwKLSAgICAweDM4MWQ4MDAwLAotICAgIDB4MzgxZGEwMDAsCi0gICAgMHgzODFkYzAw
MCwKLSAgICAweDM4MWRlMDAwLAotICAgIDB4MzgxZTAwMDAsCi0gICAgMHgzODFlMjAwMCwKLSAg
ICAweDM4MWU0MDAwLAotICAgIDB4MzgxZTYwMDAsCi0gICAgMHgzODFlODAwMCwKLSAgICAweDM4
MWVhMDAwLAotICAgIDB4MzgxZWMwMDAsCi0gICAgMHgzODFlZTAwMCwKLSAgICAweDM4MWYwMDAw
LAotICAgIDB4MzgxZjIwMDAsCi0gICAgMHgzODFmNDAwMCwKLSAgICAweDM4MWY2MDAwLAotICAg
IDB4MzgxZjgwMDAsCi0gICAgMHgzODFmYTAwMCwKLSAgICAweDM4MWZjMDAwLAotICAgIDB4Mzgx
ZmUwMDAsCi0gICAgMHgzODIwMDAwMCwKLSAgICAweDM4MjAyMDAwLAotICAgIDB4MzgyMDQwMDAs
Ci0gICAgMHgzODIwNjAwMCwKLSAgICAweDM4MjA4MDAwLAotICAgIDB4MzgyMGEwMDAsCi0gICAg
MHgzODIwYzAwMCwKLSAgICAweDM4MjBlMDAwLAotICAgIDB4MzgyMTAwMDAsCi0gICAgMHgzODIx
MjAwMCwKLSAgICAweDM4MjE0MDAwLAotICAgIDB4MzgyMTYwMDAsCi0gICAgMHgzODIxODAwMCwK
LSAgICAweDM4MjFhMDAwLAotICAgIDB4MzgyMWMwMDAsCi0gICAgMHgzODIxZTAwMCwKLSAgICAw
eDM4MjIwMDAwLAotICAgIDB4MzgyMjIwMDAsCi0gICAgMHgzODIyNDAwMCwKLSAgICAweDM4MjI2
MDAwLAotICAgIDB4MzgyMjgwMDAsCi0gICAgMHgzODIyYTAwMCwKLSAgICAweDM4MjJjMDAwLAot
ICAgIDB4MzgyMmUwMDAsCi0gICAgMHgzODIzMDAwMCwKLSAgICAweDM4MjMyMDAwLAotICAgIDB4
MzgyMzQwMDAsCi0gICAgMHgzODIzNjAwMCwKLSAgICAweDM4MjM4MDAwLAotICAgIDB4MzgyM2Ew
MDAsCi0gICAgMHgzODIzYzAwMCwKLSAgICAweDM4MjNlMDAwLAotICAgIDB4MzgyNDAwMDAsCi0g
ICAgMHgzODI0MjAwMCwKLSAgICAweDM4MjQ0MDAwLAotICAgIDB4MzgyNDYwMDAsCi0gICAgMHgz
ODI0ODAwMCwKLSAgICAweDM4MjRhMDAwLAotICAgIDB4MzgyNGMwMDAsCi0gICAgMHgzODI0ZTAw
MCwKLSAgICAweDM4MjUwMDAwLAotICAgIDB4MzgyNTIwMDAsCi0gICAgMHgzODI1NDAwMCwKLSAg
ICAweDM4MjU2MDAwLAotICAgIDB4MzgyNTgwMDAsCi0gICAgMHgzODI1YTAwMCwKLSAgICAweDM4
MjVjMDAwLAotICAgIDB4MzgyNWUwMDAsCi0gICAgMHgzODI2MDAwMCwKLSAgICAweDM4MjYyMDAw
LAotICAgIDB4MzgyNjQwMDAsCi0gICAgMHgzODI2NjAwMCwKLSAgICAweDM4MjY4MDAwLAotICAg
IDB4MzgyNmEwMDAsCi0gICAgMHgzODI2YzAwMCwKLSAgICAweDM4MjZlMDAwLAotICAgIDB4Mzgy
NzAwMDAsCi0gICAgMHgzODI3MjAwMCwKLSAgICAweDM4Mjc0MDAwLAotICAgIDB4MzgyNzYwMDAs
Ci0gICAgMHgzODI3ODAwMCwKLSAgICAweDM4MjdhMDAwLAotICAgIDB4MzgyN2MwMDAsCi0gICAg
MHgzODI3ZTAwMCwKLSAgICAweDM4MjgwMDAwLAotICAgIDB4MzgyODIwMDAsCi0gICAgMHgzODI4
NDAwMCwKLSAgICAweDM4Mjg2MDAwLAotICAgIDB4MzgyODgwMDAsCi0gICAgMHgzODI4YTAwMCwK
LSAgICAweDM4MjhjMDAwLAotICAgIDB4MzgyOGUwMDAsCi0gICAgMHgzODI5MDAwMCwKLSAgICAw
eDM4MjkyMDAwLAotICAgIDB4MzgyOTQwMDAsCi0gICAgMHgzODI5NjAwMCwKLSAgICAweDM4Mjk4
MDAwLAotICAgIDB4MzgyOWEwMDAsCi0gICAgMHgzODI5YzAwMCwKLSAgICAweDM4MjllMDAwLAot
ICAgIDB4MzgyYTAwMDAsCi0gICAgMHgzODJhMjAwMCwKLSAgICAweDM4MmE0MDAwLAotICAgIDB4
MzgyYTYwMDAsCi0gICAgMHgzODJhODAwMCwKLSAgICAweDM4MmFhMDAwLAotICAgIDB4MzgyYWMw
MDAsCi0gICAgMHgzODJhZTAwMCwKLSAgICAweDM4MmIwMDAwLAotICAgIDB4MzgyYjIwMDAsCi0g
ICAgMHgzODJiNDAwMCwKLSAgICAweDM4MmI2MDAwLAotICAgIDB4MzgyYjgwMDAsCi0gICAgMHgz
ODJiYTAwMCwKLSAgICAweDM4MmJjMDAwLAotICAgIDB4MzgyYmUwMDAsCi0gICAgMHgzODJjMDAw
MCwKLSAgICAweDM4MmMyMDAwLAotICAgIDB4MzgyYzQwMDAsCi0gICAgMHgzODJjNjAwMCwKLSAg
ICAweDM4MmM4MDAwLAotICAgIDB4MzgyY2EwMDAsCi0gICAgMHgzODJjYzAwMCwKLSAgICAweDM4
MmNlMDAwLAotICAgIDB4MzgyZDAwMDAsCi0gICAgMHgzODJkMjAwMCwKLSAgICAweDM4MmQ0MDAw
LAotICAgIDB4MzgyZDYwMDAsCi0gICAgMHgzODJkODAwMCwKLSAgICAweDM4MmRhMDAwLAotICAg
IDB4MzgyZGMwMDAsCi0gICAgMHgzODJkZTAwMCwKLSAgICAweDM4MmUwMDAwLAotICAgIDB4Mzgy
ZTIwMDAsCi0gICAgMHgzODJlNDAwMCwKLSAgICAweDM4MmU2MDAwLAotICAgIDB4MzgyZTgwMDAs
Ci0gICAgMHgzODJlYTAwMCwKLSAgICAweDM4MmVjMDAwLAotICAgIDB4MzgyZWUwMDAsCi0gICAg
MHgzODJmMDAwMCwKLSAgICAweDM4MmYyMDAwLAotICAgIDB4MzgyZjQwMDAsCi0gICAgMHgzODJm
NjAwMCwKLSAgICAweDM4MmY4MDAwLAotICAgIDB4MzgyZmEwMDAsCi0gICAgMHgzODJmYzAwMCwK
LSAgICAweDM4MmZlMDAwLAotICAgIDB4MzgzMDAwMDAsCi0gICAgMHgzODMwMjAwMCwKLSAgICAw
eDM4MzA0MDAwLAotICAgIDB4MzgzMDYwMDAsCi0gICAgMHgzODMwODAwMCwKLSAgICAweDM4MzBh
MDAwLAotICAgIDB4MzgzMGMwMDAsCi0gICAgMHgzODMwZTAwMCwKLSAgICAweDM4MzEwMDAwLAot
ICAgIDB4MzgzMTIwMDAsCi0gICAgMHgzODMxNDAwMCwKLSAgICAweDM4MzE2MDAwLAotICAgIDB4
MzgzMTgwMDAsCi0gICAgMHgzODMxYTAwMCwKLSAgICAweDM4MzFjMDAwLAotICAgIDB4MzgzMWUw
MDAsCi0gICAgMHgzODMyMDAwMCwKLSAgICAweDM4MzIyMDAwLAotICAgIDB4MzgzMjQwMDAsCi0g
ICAgMHgzODMyNjAwMCwKLSAgICAweDM4MzI4MDAwLAotICAgIDB4MzgzMmEwMDAsCi0gICAgMHgz
ODMyYzAwMCwKLSAgICAweDM4MzJlMDAwLAotICAgIDB4MzgzMzAwMDAsCi0gICAgMHgzODMzMjAw
MCwKLSAgICAweDM4MzM0MDAwLAotICAgIDB4MzgzMzYwMDAsCi0gICAgMHgzODMzODAwMCwKLSAg
ICAweDM4MzNhMDAwLAotICAgIDB4MzgzM2MwMDAsCi0gICAgMHgzODMzZTAwMCwKLSAgICAweDM4
MzQwMDAwLAotICAgIDB4MzgzNDIwMDAsCi0gICAgMHgzODM0NDAwMCwKLSAgICAweDM4MzQ2MDAw
LAotICAgIDB4MzgzNDgwMDAsCi0gICAgMHgzODM0YTAwMCwKLSAgICAweDM4MzRjMDAwLAotICAg
IDB4MzgzNGUwMDAsCi0gICAgMHgzODM1MDAwMCwKLSAgICAweDM4MzUyMDAwLAotICAgIDB4Mzgz
NTQwMDAsCi0gICAgMHgzODM1NjAwMCwKLSAgICAweDM4MzU4MDAwLAotICAgIDB4MzgzNWEwMDAs
Ci0gICAgMHgzODM1YzAwMCwKLSAgICAweDM4MzVlMDAwLAotICAgIDB4MzgzNjAwMDAsCi0gICAg
MHgzODM2MjAwMCwKLSAgICAweDM4MzY0MDAwLAotICAgIDB4MzgzNjYwMDAsCi0gICAgMHgzODM2
ODAwMCwKLSAgICAweDM4MzZhMDAwLAotICAgIDB4MzgzNmMwMDAsCi0gICAgMHgzODM2ZTAwMCwK
LSAgICAweDM4MzcwMDAwLAotICAgIDB4MzgzNzIwMDAsCi0gICAgMHgzODM3NDAwMCwKLSAgICAw
eDM4Mzc2MDAwLAotICAgIDB4MzgzNzgwMDAsCi0gICAgMHgzODM3YTAwMCwKLSAgICAweDM4Mzdj
MDAwLAotICAgIDB4MzgzN2UwMDAsCi0gICAgMHgzODM4MDAwMCwKLSAgICAweDM4MzgyMDAwLAot
ICAgIDB4MzgzODQwMDAsCi0gICAgMHgzODM4NjAwMCwKLSAgICAweDM4Mzg4MDAwLAotICAgIDB4
MzgzOGEwMDAsCi0gICAgMHgzODM4YzAwMCwKLSAgICAweDM4MzhlMDAwLAotICAgIDB4MzgzOTAw
MDAsCi0gICAgMHgzODM5MjAwMCwKLSAgICAweDM4Mzk0MDAwLAotICAgIDB4MzgzOTYwMDAsCi0g
ICAgMHgzODM5ODAwMCwKLSAgICAweDM4MzlhMDAwLAotICAgIDB4MzgzOWMwMDAsCi0gICAgMHgz
ODM5ZTAwMCwKLSAgICAweDM4M2EwMDAwLAotICAgIDB4MzgzYTIwMDAsCi0gICAgMHgzODNhNDAw
MCwKLSAgICAweDM4M2E2MDAwLAotICAgIDB4MzgzYTgwMDAsCi0gICAgMHgzODNhYTAwMCwKLSAg
ICAweDM4M2FjMDAwLAotICAgIDB4MzgzYWUwMDAsCi0gICAgMHgzODNiMDAwMCwKLSAgICAweDM4
M2IyMDAwLAotICAgIDB4MzgzYjQwMDAsCi0gICAgMHgzODNiNjAwMCwKLSAgICAweDM4M2I4MDAw
LAotICAgIDB4MzgzYmEwMDAsCi0gICAgMHgzODNiYzAwMCwKLSAgICAweDM4M2JlMDAwLAotICAg
IDB4MzgzYzAwMDAsCi0gICAgMHgzODNjMjAwMCwKLSAgICAweDM4M2M0MDAwLAotICAgIDB4Mzgz
YzYwMDAsCi0gICAgMHgzODNjODAwMCwKLSAgICAweDM4M2NhMDAwLAotICAgIDB4MzgzY2MwMDAs
Ci0gICAgMHgzODNjZTAwMCwKLSAgICAweDM4M2QwMDAwLAotICAgIDB4MzgzZDIwMDAsCi0gICAg
MHgzODNkNDAwMCwKLSAgICAweDM4M2Q2MDAwLAotICAgIDB4MzgzZDgwMDAsCi0gICAgMHgzODNk
YTAwMCwKLSAgICAweDM4M2RjMDAwLAotICAgIDB4MzgzZGUwMDAsCi0gICAgMHgzODNlMDAwMCwK
LSAgICAweDM4M2UyMDAwLAotICAgIDB4MzgzZTQwMDAsCi0gICAgMHgzODNlNjAwMCwKLSAgICAw
eDM4M2U4MDAwLAotICAgIDB4MzgzZWEwMDAsCi0gICAgMHgzODNlYzAwMCwKLSAgICAweDM4M2Vl
MDAwLAotICAgIDB4MzgzZjAwMDAsCi0gICAgMHgzODNmMjAwMCwKLSAgICAweDM4M2Y0MDAwLAot
ICAgIDB4MzgzZjYwMDAsCi0gICAgMHgzODNmODAwMCwKLSAgICAweDM4M2ZhMDAwLAotICAgIDB4
MzgzZmMwMDAsCi0gICAgMHgzODNmZTAwMCwKLSAgICAweDM4NDAwMDAwLAotICAgIDB4Mzg0MDIw
MDAsCi0gICAgMHgzODQwNDAwMCwKLSAgICAweDM4NDA2MDAwLAotICAgIDB4Mzg0MDgwMDAsCi0g
ICAgMHgzODQwYTAwMCwKLSAgICAweDM4NDBjMDAwLAotICAgIDB4Mzg0MGUwMDAsCi0gICAgMHgz
ODQxMDAwMCwKLSAgICAweDM4NDEyMDAwLAotICAgIDB4Mzg0MTQwMDAsCi0gICAgMHgzODQxNjAw
MCwKLSAgICAweDM4NDE4MDAwLAotICAgIDB4Mzg0MWEwMDAsCi0gICAgMHgzODQxYzAwMCwKLSAg
ICAweDM4NDFlMDAwLAotICAgIDB4Mzg0MjAwMDAsCi0gICAgMHgzODQyMjAwMCwKLSAgICAweDM4
NDI0MDAwLAotICAgIDB4Mzg0MjYwMDAsCi0gICAgMHgzODQyODAwMCwKLSAgICAweDM4NDJhMDAw
LAotICAgIDB4Mzg0MmMwMDAsCi0gICAgMHgzODQyZTAwMCwKLSAgICAweDM4NDMwMDAwLAotICAg
IDB4Mzg0MzIwMDAsCi0gICAgMHgzODQzNDAwMCwKLSAgICAweDM4NDM2MDAwLAotICAgIDB4Mzg0
MzgwMDAsCi0gICAgMHgzODQzYTAwMCwKLSAgICAweDM4NDNjMDAwLAotICAgIDB4Mzg0M2UwMDAs
Ci0gICAgMHgzODQ0MDAwMCwKLSAgICAweDM4NDQyMDAwLAotICAgIDB4Mzg0NDQwMDAsCi0gICAg
MHgzODQ0NjAwMCwKLSAgICAweDM4NDQ4MDAwLAotICAgIDB4Mzg0NGEwMDAsCi0gICAgMHgzODQ0
YzAwMCwKLSAgICAweDM4NDRlMDAwLAotICAgIDB4Mzg0NTAwMDAsCi0gICAgMHgzODQ1MjAwMCwK
LSAgICAweDM4NDU0MDAwLAotICAgIDB4Mzg0NTYwMDAsCi0gICAgMHgzODQ1ODAwMCwKLSAgICAw
eDM4NDVhMDAwLAotICAgIDB4Mzg0NWMwMDAsCi0gICAgMHgzODQ1ZTAwMCwKLSAgICAweDM4NDYw
MDAwLAotICAgIDB4Mzg0NjIwMDAsCi0gICAgMHgzODQ2NDAwMCwKLSAgICAweDM4NDY2MDAwLAot
ICAgIDB4Mzg0NjgwMDAsCi0gICAgMHgzODQ2YTAwMCwKLSAgICAweDM4NDZjMDAwLAotICAgIDB4
Mzg0NmUwMDAsCi0gICAgMHgzODQ3MDAwMCwKLSAgICAweDM4NDcyMDAwLAotICAgIDB4Mzg0NzQw
MDAsCi0gICAgMHgzODQ3NjAwMCwKLSAgICAweDM4NDc4MDAwLAotICAgIDB4Mzg0N2EwMDAsCi0g
ICAgMHgzODQ3YzAwMCwKLSAgICAweDM4NDdlMDAwLAotICAgIDB4Mzg0ODAwMDAsCi0gICAgMHgz
ODQ4MjAwMCwKLSAgICAweDM4NDg0MDAwLAotICAgIDB4Mzg0ODYwMDAsCi0gICAgMHgzODQ4ODAw
MCwKLSAgICAweDM4NDhhMDAwLAotICAgIDB4Mzg0OGMwMDAsCi0gICAgMHgzODQ4ZTAwMCwKLSAg
ICAweDM4NDkwMDAwLAotICAgIDB4Mzg0OTIwMDAsCi0gICAgMHgzODQ5NDAwMCwKLSAgICAweDM4
NDk2MDAwLAotICAgIDB4Mzg0OTgwMDAsCi0gICAgMHgzODQ5YTAwMCwKLSAgICAweDM4NDljMDAw
LAotICAgIDB4Mzg0OWUwMDAsCi0gICAgMHgzODRhMDAwMCwKLSAgICAweDM4NGEyMDAwLAotICAg
IDB4Mzg0YTQwMDAsCi0gICAgMHgzODRhNjAwMCwKLSAgICAweDM4NGE4MDAwLAotICAgIDB4Mzg0
YWEwMDAsCi0gICAgMHgzODRhYzAwMCwKLSAgICAweDM4NGFlMDAwLAotICAgIDB4Mzg0YjAwMDAs
Ci0gICAgMHgzODRiMjAwMCwKLSAgICAweDM4NGI0MDAwLAotICAgIDB4Mzg0YjYwMDAsCi0gICAg
MHgzODRiODAwMCwKLSAgICAweDM4NGJhMDAwLAotICAgIDB4Mzg0YmMwMDAsCi0gICAgMHgzODRi
ZTAwMCwKLSAgICAweDM4NGMwMDAwLAotICAgIDB4Mzg0YzIwMDAsCi0gICAgMHgzODRjNDAwMCwK
LSAgICAweDM4NGM2MDAwLAotICAgIDB4Mzg0YzgwMDAsCi0gICAgMHgzODRjYTAwMCwKLSAgICAw
eDM4NGNjMDAwLAotICAgIDB4Mzg0Y2UwMDAsCi0gICAgMHgzODRkMDAwMCwKLSAgICAweDM4NGQy
MDAwLAotICAgIDB4Mzg0ZDQwMDAsCi0gICAgMHgzODRkNjAwMCwKLSAgICAweDM4NGQ4MDAwLAot
ICAgIDB4Mzg0ZGEwMDAsCi0gICAgMHgzODRkYzAwMCwKLSAgICAweDM4NGRlMDAwLAotICAgIDB4
Mzg0ZTAwMDAsCi0gICAgMHgzODRlMjAwMCwKLSAgICAweDM4NGU0MDAwLAotICAgIDB4Mzg0ZTYw
MDAsCi0gICAgMHgzODRlODAwMCwKLSAgICAweDM4NGVhMDAwLAotICAgIDB4Mzg0ZWMwMDAsCi0g
ICAgMHgzODRlZTAwMCwKLSAgICAweDM4NGYwMDAwLAotICAgIDB4Mzg0ZjIwMDAsCi0gICAgMHgz
ODRmNDAwMCwKLSAgICAweDM4NGY2MDAwLAotICAgIDB4Mzg0ZjgwMDAsCi0gICAgMHgzODRmYTAw
MCwKLSAgICAweDM4NGZjMDAwLAotICAgIDB4Mzg0ZmUwMDAsCi0gICAgMHgzODUwMDAwMCwKLSAg
ICAweDM4NTAyMDAwLAotICAgIDB4Mzg1MDQwMDAsCi0gICAgMHgzODUwNjAwMCwKLSAgICAweDM4
NTA4MDAwLAotICAgIDB4Mzg1MGEwMDAsCi0gICAgMHgzODUwYzAwMCwKLSAgICAweDM4NTBlMDAw
LAotICAgIDB4Mzg1MTAwMDAsCi0gICAgMHgzODUxMjAwMCwKLSAgICAweDM4NTE0MDAwLAotICAg
IDB4Mzg1MTYwMDAsCi0gICAgMHgzODUxODAwMCwKLSAgICAweDM4NTFhMDAwLAotICAgIDB4Mzg1
MWMwMDAsCi0gICAgMHgzODUxZTAwMCwKLSAgICAweDM4NTIwMDAwLAotICAgIDB4Mzg1MjIwMDAs
Ci0gICAgMHgzODUyNDAwMCwKLSAgICAweDM4NTI2MDAwLAotICAgIDB4Mzg1MjgwMDAsCi0gICAg
MHgzODUyYTAwMCwKLSAgICAweDM4NTJjMDAwLAotICAgIDB4Mzg1MmUwMDAsCi0gICAgMHgzODUz
MDAwMCwKLSAgICAweDM4NTMyMDAwLAotICAgIDB4Mzg1MzQwMDAsCi0gICAgMHgzODUzNjAwMCwK
LSAgICAweDM4NTM4MDAwLAotICAgIDB4Mzg1M2EwMDAsCi0gICAgMHgzODUzYzAwMCwKLSAgICAw
eDM4NTNlMDAwLAotICAgIDB4Mzg1NDAwMDAsCi0gICAgMHgzODU0MjAwMCwKLSAgICAweDM4NTQ0
MDAwLAotICAgIDB4Mzg1NDYwMDAsCi0gICAgMHgzODU0ODAwMCwKLSAgICAweDM4NTRhMDAwLAot
ICAgIDB4Mzg1NGMwMDAsCi0gICAgMHgzODU0ZTAwMCwKLSAgICAweDM4NTUwMDAwLAotICAgIDB4
Mzg1NTIwMDAsCi0gICAgMHgzODU1NDAwMCwKLSAgICAweDM4NTU2MDAwLAotICAgIDB4Mzg1NTgw
MDAsCi0gICAgMHgzODU1YTAwMCwKLSAgICAweDM4NTVjMDAwLAotICAgIDB4Mzg1NWUwMDAsCi0g
ICAgMHgzODU2MDAwMCwKLSAgICAweDM4NTYyMDAwLAotICAgIDB4Mzg1NjQwMDAsCi0gICAgMHgz
ODU2NjAwMCwKLSAgICAweDM4NTY4MDAwLAotICAgIDB4Mzg1NmEwMDAsCi0gICAgMHgzODU2YzAw
MCwKLSAgICAweDM4NTZlMDAwLAotICAgIDB4Mzg1NzAwMDAsCi0gICAgMHgzODU3MjAwMCwKLSAg
ICAweDM4NTc0MDAwLAotICAgIDB4Mzg1NzYwMDAsCi0gICAgMHgzODU3ODAwMCwKLSAgICAweDM4
NTdhMDAwLAotICAgIDB4Mzg1N2MwMDAsCi0gICAgMHgzODU3ZTAwMCwKLSAgICAweDM4NTgwMDAw
LAotICAgIDB4Mzg1ODIwMDAsCi0gICAgMHgzODU4NDAwMCwKLSAgICAweDM4NTg2MDAwLAotICAg
IDB4Mzg1ODgwMDAsCi0gICAgMHgzODU4YTAwMCwKLSAgICAweDM4NThjMDAwLAotICAgIDB4Mzg1
OGUwMDAsCi0gICAgMHgzODU5MDAwMCwKLSAgICAweDM4NTkyMDAwLAotICAgIDB4Mzg1OTQwMDAs
Ci0gICAgMHgzODU5NjAwMCwKLSAgICAweDM4NTk4MDAwLAotICAgIDB4Mzg1OWEwMDAsCi0gICAg
MHgzODU5YzAwMCwKLSAgICAweDM4NTllMDAwLAotICAgIDB4Mzg1YTAwMDAsCi0gICAgMHgzODVh
MjAwMCwKLSAgICAweDM4NWE0MDAwLAotICAgIDB4Mzg1YTYwMDAsCi0gICAgMHgzODVhODAwMCwK
LSAgICAweDM4NWFhMDAwLAotICAgIDB4Mzg1YWMwMDAsCi0gICAgMHgzODVhZTAwMCwKLSAgICAw
eDM4NWIwMDAwLAotICAgIDB4Mzg1YjIwMDAsCi0gICAgMHgzODViNDAwMCwKLSAgICAweDM4NWI2
MDAwLAotICAgIDB4Mzg1YjgwMDAsCi0gICAgMHgzODViYTAwMCwKLSAgICAweDM4NWJjMDAwLAot
ICAgIDB4Mzg1YmUwMDAsCi0gICAgMHgzODVjMDAwMCwKLSAgICAweDM4NWMyMDAwLAotICAgIDB4
Mzg1YzQwMDAsCi0gICAgMHgzODVjNjAwMCwKLSAgICAweDM4NWM4MDAwLAotICAgIDB4Mzg1Y2Ew
MDAsCi0gICAgMHgzODVjYzAwMCwKLSAgICAweDM4NWNlMDAwLAotICAgIDB4Mzg1ZDAwMDAsCi0g
ICAgMHgzODVkMjAwMCwKLSAgICAweDM4NWQ0MDAwLAotICAgIDB4Mzg1ZDYwMDAsCi0gICAgMHgz
ODVkODAwMCwKLSAgICAweDM4NWRhMDAwLAotICAgIDB4Mzg1ZGMwMDAsCi0gICAgMHgzODVkZTAw
MCwKLSAgICAweDM4NWUwMDAwLAotICAgIDB4Mzg1ZTIwMDAsCi0gICAgMHgzODVlNDAwMCwKLSAg
ICAweDM4NWU2MDAwLAotICAgIDB4Mzg1ZTgwMDAsCi0gICAgMHgzODVlYTAwMCwKLSAgICAweDM4
NWVjMDAwLAotICAgIDB4Mzg1ZWUwMDAsCi0gICAgMHgzODVmMDAwMCwKLSAgICAweDM4NWYyMDAw
LAotICAgIDB4Mzg1ZjQwMDAsCi0gICAgMHgzODVmNjAwMCwKLSAgICAweDM4NWY4MDAwLAotICAg
IDB4Mzg1ZmEwMDAsCi0gICAgMHgzODVmYzAwMCwKLSAgICAweDM4NWZlMDAwLAotICAgIDB4Mzg2
MDAwMDAsCi0gICAgMHgzODYwMjAwMCwKLSAgICAweDM4NjA0MDAwLAotICAgIDB4Mzg2MDYwMDAs
Ci0gICAgMHgzODYwODAwMCwKLSAgICAweDM4NjBhMDAwLAotICAgIDB4Mzg2MGMwMDAsCi0gICAg
MHgzODYwZTAwMCwKLSAgICAweDM4NjEwMDAwLAotICAgIDB4Mzg2MTIwMDAsCi0gICAgMHgzODYx
NDAwMCwKLSAgICAweDM4NjE2MDAwLAotICAgIDB4Mzg2MTgwMDAsCi0gICAgMHgzODYxYTAwMCwK
LSAgICAweDM4NjFjMDAwLAotICAgIDB4Mzg2MWUwMDAsCi0gICAgMHgzODYyMDAwMCwKLSAgICAw
eDM4NjIyMDAwLAotICAgIDB4Mzg2MjQwMDAsCi0gICAgMHgzODYyNjAwMCwKLSAgICAweDM4NjI4
MDAwLAotICAgIDB4Mzg2MmEwMDAsCi0gICAgMHgzODYyYzAwMCwKLSAgICAweDM4NjJlMDAwLAot
ICAgIDB4Mzg2MzAwMDAsCi0gICAgMHgzODYzMjAwMCwKLSAgICAweDM4NjM0MDAwLAotICAgIDB4
Mzg2MzYwMDAsCi0gICAgMHgzODYzODAwMCwKLSAgICAweDM4NjNhMDAwLAotICAgIDB4Mzg2M2Mw
MDAsCi0gICAgMHgzODYzZTAwMCwKLSAgICAweDM4NjQwMDAwLAotICAgIDB4Mzg2NDIwMDAsCi0g
ICAgMHgzODY0NDAwMCwKLSAgICAweDM4NjQ2MDAwLAotICAgIDB4Mzg2NDgwMDAsCi0gICAgMHgz
ODY0YTAwMCwKLSAgICAweDM4NjRjMDAwLAotICAgIDB4Mzg2NGUwMDAsCi0gICAgMHgzODY1MDAw
MCwKLSAgICAweDM4NjUyMDAwLAotICAgIDB4Mzg2NTQwMDAsCi0gICAgMHgzODY1NjAwMCwKLSAg
ICAweDM4NjU4MDAwLAotICAgIDB4Mzg2NWEwMDAsCi0gICAgMHgzODY1YzAwMCwKLSAgICAweDM4
NjVlMDAwLAotICAgIDB4Mzg2NjAwMDAsCi0gICAgMHgzODY2MjAwMCwKLSAgICAweDM4NjY0MDAw
LAotICAgIDB4Mzg2NjYwMDAsCi0gICAgMHgzODY2ODAwMCwKLSAgICAweDM4NjZhMDAwLAotICAg
IDB4Mzg2NmMwMDAsCi0gICAgMHgzODY2ZTAwMCwKLSAgICAweDM4NjcwMDAwLAotICAgIDB4Mzg2
NzIwMDAsCi0gICAgMHgzODY3NDAwMCwKLSAgICAweDM4Njc2MDAwLAotICAgIDB4Mzg2NzgwMDAs
Ci0gICAgMHgzODY3YTAwMCwKLSAgICAweDM4NjdjMDAwLAotICAgIDB4Mzg2N2UwMDAsCi0gICAg
MHgzODY4MDAwMCwKLSAgICAweDM4NjgyMDAwLAotICAgIDB4Mzg2ODQwMDAsCi0gICAgMHgzODY4
NjAwMCwKLSAgICAweDM4Njg4MDAwLAotICAgIDB4Mzg2OGEwMDAsCi0gICAgMHgzODY4YzAwMCwK
LSAgICAweDM4NjhlMDAwLAotICAgIDB4Mzg2OTAwMDAsCi0gICAgMHgzODY5MjAwMCwKLSAgICAw
eDM4Njk0MDAwLAotICAgIDB4Mzg2OTYwMDAsCi0gICAgMHgzODY5ODAwMCwKLSAgICAweDM4Njlh
MDAwLAotICAgIDB4Mzg2OWMwMDAsCi0gICAgMHgzODY5ZTAwMCwKLSAgICAweDM4NmEwMDAwLAot
ICAgIDB4Mzg2YTIwMDAsCi0gICAgMHgzODZhNDAwMCwKLSAgICAweDM4NmE2MDAwLAotICAgIDB4
Mzg2YTgwMDAsCi0gICAgMHgzODZhYTAwMCwKLSAgICAweDM4NmFjMDAwLAotICAgIDB4Mzg2YWUw
MDAsCi0gICAgMHgzODZiMDAwMCwKLSAgICAweDM4NmIyMDAwLAotICAgIDB4Mzg2YjQwMDAsCi0g
ICAgMHgzODZiNjAwMCwKLSAgICAweDM4NmI4MDAwLAotICAgIDB4Mzg2YmEwMDAsCi0gICAgMHgz
ODZiYzAwMCwKLSAgICAweDM4NmJlMDAwLAotICAgIDB4Mzg2YzAwMDAsCi0gICAgMHgzODZjMjAw
MCwKLSAgICAweDM4NmM0MDAwLAotICAgIDB4Mzg2YzYwMDAsCi0gICAgMHgzODZjODAwMCwKLSAg
ICAweDM4NmNhMDAwLAotICAgIDB4Mzg2Y2MwMDAsCi0gICAgMHgzODZjZTAwMCwKLSAgICAweDM4
NmQwMDAwLAotICAgIDB4Mzg2ZDIwMDAsCi0gICAgMHgzODZkNDAwMCwKLSAgICAweDM4NmQ2MDAw
LAotICAgIDB4Mzg2ZDgwMDAsCi0gICAgMHgzODZkYTAwMCwKLSAgICAweDM4NmRjMDAwLAotICAg
IDB4Mzg2ZGUwMDAsCi0gICAgMHgzODZlMDAwMCwKLSAgICAweDM4NmUyMDAwLAotICAgIDB4Mzg2
ZTQwMDAsCi0gICAgMHgzODZlNjAwMCwKLSAgICAweDM4NmU4MDAwLAotICAgIDB4Mzg2ZWEwMDAs
Ci0gICAgMHgzODZlYzAwMCwKLSAgICAweDM4NmVlMDAwLAotICAgIDB4Mzg2ZjAwMDAsCi0gICAg
MHgzODZmMjAwMCwKLSAgICAweDM4NmY0MDAwLAotICAgIDB4Mzg2ZjYwMDAsCi0gICAgMHgzODZm
ODAwMCwKLSAgICAweDM4NmZhMDAwLAotICAgIDB4Mzg2ZmMwMDAsCi0gICAgMHgzODZmZTAwMCwK
LSAgICAweDM4NzAwMDAwLAotICAgIDB4Mzg3MDIwMDAsCi0gICAgMHgzODcwNDAwMCwKLSAgICAw
eDM4NzA2MDAwLAotICAgIDB4Mzg3MDgwMDAsCi0gICAgMHgzODcwYTAwMCwKLSAgICAweDM4NzBj
MDAwLAotICAgIDB4Mzg3MGUwMDAsCi0gICAgMHgzODcxMDAwMCwKLSAgICAweDM4NzEyMDAwLAot
ICAgIDB4Mzg3MTQwMDAsCi0gICAgMHgzODcxNjAwMCwKLSAgICAweDM4NzE4MDAwLAotICAgIDB4
Mzg3MWEwMDAsCi0gICAgMHgzODcxYzAwMCwKLSAgICAweDM4NzFlMDAwLAotICAgIDB4Mzg3MjAw
MDAsCi0gICAgMHgzODcyMjAwMCwKLSAgICAweDM4NzI0MDAwLAotICAgIDB4Mzg3MjYwMDAsCi0g
ICAgMHgzODcyODAwMCwKLSAgICAweDM4NzJhMDAwLAotICAgIDB4Mzg3MmMwMDAsCi0gICAgMHgz
ODcyZTAwMCwKLSAgICAweDM4NzMwMDAwLAotICAgIDB4Mzg3MzIwMDAsCi0gICAgMHgzODczNDAw
MCwKLSAgICAweDM4NzM2MDAwLAotICAgIDB4Mzg3MzgwMDAsCi0gICAgMHgzODczYTAwMCwKLSAg
ICAweDM4NzNjMDAwLAotICAgIDB4Mzg3M2UwMDAsCi0gICAgMHgzODc0MDAwMCwKLSAgICAweDM4
NzQyMDAwLAotICAgIDB4Mzg3NDQwMDAsCi0gICAgMHgzODc0NjAwMCwKLSAgICAweDM4NzQ4MDAw
LAotICAgIDB4Mzg3NGEwMDAsCi0gICAgMHgzODc0YzAwMCwKLSAgICAweDM4NzRlMDAwLAotICAg
IDB4Mzg3NTAwMDAsCi0gICAgMHgzODc1MjAwMCwKLSAgICAweDM4NzU0MDAwLAotICAgIDB4Mzg3
NTYwMDAsCi0gICAgMHgzODc1ODAwMCwKLSAgICAweDM4NzVhMDAwLAotICAgIDB4Mzg3NWMwMDAs
Ci0gICAgMHgzODc1ZTAwMCwKLSAgICAweDM4NzYwMDAwLAotICAgIDB4Mzg3NjIwMDAsCi0gICAg
MHgzODc2NDAwMCwKLSAgICAweDM4NzY2MDAwLAotICAgIDB4Mzg3NjgwMDAsCi0gICAgMHgzODc2
YTAwMCwKLSAgICAweDM4NzZjMDAwLAotICAgIDB4Mzg3NmUwMDAsCi0gICAgMHgzODc3MDAwMCwK
LSAgICAweDM4NzcyMDAwLAotICAgIDB4Mzg3NzQwMDAsCi0gICAgMHgzODc3NjAwMCwKLSAgICAw
eDM4Nzc4MDAwLAotICAgIDB4Mzg3N2EwMDAsCi0gICAgMHgzODc3YzAwMCwKLSAgICAweDM4Nzdl
MDAwLAotICAgIDB4Mzg3ODAwMDAsCi0gICAgMHgzODc4MjAwMCwKLSAgICAweDM4Nzg0MDAwLAot
ICAgIDB4Mzg3ODYwMDAsCi0gICAgMHgzODc4ODAwMCwKLSAgICAweDM4NzhhMDAwLAotICAgIDB4
Mzg3OGMwMDAsCi0gICAgMHgzODc4ZTAwMCwKLSAgICAweDM4NzkwMDAwLAotICAgIDB4Mzg3OTIw
MDAsCi0gICAgMHgzODc5NDAwMCwKLSAgICAweDM4Nzk2MDAwLAotICAgIDB4Mzg3OTgwMDAsCi0g
ICAgMHgzODc5YTAwMCwKLSAgICAweDM4NzljMDAwLAotICAgIDB4Mzg3OWUwMDAsCi0gICAgMHgz
ODdhMDAwMCwKLSAgICAweDM4N2EyMDAwLAotICAgIDB4Mzg3YTQwMDAsCi0gICAgMHgzODdhNjAw
MCwKLSAgICAweDM4N2E4MDAwLAotICAgIDB4Mzg3YWEwMDAsCi0gICAgMHgzODdhYzAwMCwKLSAg
ICAweDM4N2FlMDAwLAotICAgIDB4Mzg3YjAwMDAsCi0gICAgMHgzODdiMjAwMCwKLSAgICAweDM4
N2I0MDAwLAotICAgIDB4Mzg3YjYwMDAsCi0gICAgMHgzODdiODAwMCwKLSAgICAweDM4N2JhMDAw
LAotICAgIDB4Mzg3YmMwMDAsCi0gICAgMHgzODdiZTAwMCwKLSAgICAweDM4N2MwMDAwLAotICAg
IDB4Mzg3YzIwMDAsCi0gICAgMHgzODdjNDAwMCwKLSAgICAweDM4N2M2MDAwLAotICAgIDB4Mzg3
YzgwMDAsCi0gICAgMHgzODdjYTAwMCwKLSAgICAweDM4N2NjMDAwLAotICAgIDB4Mzg3Y2UwMDAs
Ci0gICAgMHgzODdkMDAwMCwKLSAgICAweDM4N2QyMDAwLAotICAgIDB4Mzg3ZDQwMDAsCi0gICAg
MHgzODdkNjAwMCwKLSAgICAweDM4N2Q4MDAwLAotICAgIDB4Mzg3ZGEwMDAsCi0gICAgMHgzODdk
YzAwMCwKLSAgICAweDM4N2RlMDAwLAotICAgIDB4Mzg3ZTAwMDAsCi0gICAgMHgzODdlMjAwMCwK
LSAgICAweDM4N2U0MDAwLAotICAgIDB4Mzg3ZTYwMDAsCi0gICAgMHgzODdlODAwMCwKLSAgICAw
eDM4N2VhMDAwLAotICAgIDB4Mzg3ZWMwMDAsCi0gICAgMHgzODdlZTAwMCwKLSAgICAweDM4N2Yw
MDAwLAotICAgIDB4Mzg3ZjIwMDAsCi0gICAgMHgzODdmNDAwMCwKLSAgICAweDM4N2Y2MDAwLAot
ICAgIDB4Mzg3ZjgwMDAsCi0gICAgMHgzODdmYTAwMCwKLSAgICAweDM4N2ZjMDAwLAotICAgIDB4
Mzg3ZmUwMDAsCi19OwotCi1jb25zdCBzdGF0aWMgdW5zaWduZWQgZ19leHBvbmVudFs2NF0gPSB7
Ci0gICAgMHgwMDAwMDAwMCwKLSAgICAweDAwODAwMDAwLAotICAgIDB4MDEwMDAwMDAsCi0gICAg
MHgwMTgwMDAwMCwKLSAgICAweDAyMDAwMDAwLAotICAgIDB4MDI4MDAwMDAsCi0gICAgMHgwMzAw
MDAwMCwKLSAgICAweDAzODAwMDAwLAotICAgIDB4MDQwMDAwMDAsCi0gICAgMHgwNDgwMDAwMCwK
LSAgICAweDA1MDAwMDAwLAotICAgIDB4MDU4MDAwMDAsCi0gICAgMHgwNjAwMDAwMCwKLSAgICAw
eDA2ODAwMDAwLAotICAgIDB4MDcwMDAwMDAsCi0gICAgMHgwNzgwMDAwMCwKLSAgICAweDA4MDAw
MDAwLAotICAgIDB4MDg4MDAwMDAsCi0gICAgMHgwOTAwMDAwMCwKLSAgICAweDA5ODAwMDAwLAot
ICAgIDB4MGEwMDAwMDAsCi0gICAgMHgwYTgwMDAwMCwKLSAgICAweDBiMDAwMDAwLAotICAgIDB4
MGI4MDAwMDAsCi0gICAgMHgwYzAwMDAwMCwKLSAgICAweDBjODAwMDAwLAotICAgIDB4MGQwMDAw
MDAsCi0gICAgMHgwZDgwMDAwMCwKLSAgICAweDBlMDAwMDAwLAotICAgIDB4MGU4MDAwMDAsCi0g
ICAgMHgwZjAwMDAwMCwKLSAgICAweDQ3ODAwMDAwLAotICAgIDB4ODAwMDAwMDAsCi0gICAgMHg4
MDgwMDAwMCwKLSAgICAweDgxMDAwMDAwLAotICAgIDB4ODE4MDAwMDAsCi0gICAgMHg4MjAwMDAw
MCwKLSAgICAweDgyODAwMDAwLAotICAgIDB4ODMwMDAwMDAsCi0gICAgMHg4MzgwMDAwMCwKLSAg
ICAweDg0MDAwMDAwLAotICAgIDB4ODQ4MDAwMDAsCi0gICAgMHg4NTAwMDAwMCwKLSAgICAweDg1
ODAwMDAwLAotICAgIDB4ODYwMDAwMDAsCi0gICAgMHg4NjgwMDAwMCwKLSAgICAweDg3MDAwMDAw
LAotICAgIDB4ODc4MDAwMDAsCi0gICAgMHg4ODAwMDAwMCwKLSAgICAweDg4ODAwMDAwLAotICAg
IDB4ODkwMDAwMDAsCi0gICAgMHg4OTgwMDAwMCwKLSAgICAweDhhMDAwMDAwLAotICAgIDB4OGE4
MDAwMDAsCi0gICAgMHg4YjAwMDAwMCwKLSAgICAweDhiODAwMDAwLAotICAgIDB4OGMwMDAwMDAs
Ci0gICAgMHg4YzgwMDAwMCwKLSAgICAweDhkMDAwMDAwLAotICAgIDB4OGQ4MDAwMDAsCi0gICAg
MHg4ZTAwMDAwMCwKLSAgICAweDhlODAwMDAwLAotICAgIDB4OGYwMDAwMDAsCi0gICAgMHhjNzgw
MDAwMCwKLX07Ci0KLWNvbnN0IHN0YXRpYyB1bnNpZ25lZCBnX29mZnNldFs2NF0gPSB7Ci0gICAg
MHgwMDAwMDAwMCwKLSAgICAweDAwMDAwNDAwLAotICAgIDB4MDAwMDA0MDAsCi0gICAgMHgwMDAw
MDQwMCwKLSAgICAweDAwMDAwNDAwLAotICAgIDB4MDAwMDA0MDAsCi0gICAgMHgwMDAwMDQwMCwK
LSAgICAweDAwMDAwNDAwLAotICAgIDB4MDAwMDA0MDAsCi0gICAgMHgwMDAwMDQwMCwKLSAgICAw
eDAwMDAwNDAwLAotICAgIDB4MDAwMDA0MDAsCi0gICAgMHgwMDAwMDQwMCwKLSAgICAweDAwMDAw
NDAwLAotICAgIDB4MDAwMDA0MDAsCi0gICAgMHgwMDAwMDQwMCwKLSAgICAweDAwMDAwNDAwLAot
ICAgIDB4MDAwMDA0MDAsCi0gICAgMHgwMDAwMDQwMCwKLSAgICAweDAwMDAwNDAwLAotICAgIDB4
MDAwMDA0MDAsCi0gICAgMHgwMDAwMDQwMCwKLSAgICAweDAwMDAwNDAwLAotICAgIDB4MDAwMDA0
MDAsCi0gICAgMHgwMDAwMDQwMCwKLSAgICAweDAwMDAwNDAwLAotICAgIDB4MDAwMDA0MDAsCi0g
ICAgMHgwMDAwMDQwMCwKLSAgICAweDAwMDAwNDAwLAotICAgIDB4MDAwMDA0MDAsCi0gICAgMHgw
MDAwMDQwMCwKLSAgICAweDAwMDAwNDAwLAotICAgIDB4MDAwMDAwMDAsCi0gICAgMHgwMDAwMDQw
MCwKLSAgICAweDAwMDAwNDAwLAotICAgIDB4MDAwMDA0MDAsCi0gICAgMHgwMDAwMDQwMCwKLSAg
ICAweDAwMDAwNDAwLAotICAgIDB4MDAwMDA0MDAsCi0gICAgMHgwMDAwMDQwMCwKLSAgICAweDAw
MDAwNDAwLAotICAgIDB4MDAwMDA0MDAsCi0gICAgMHgwMDAwMDQwMCwKLSAgICAweDAwMDAwNDAw
LAotICAgIDB4MDAwMDA0MDAsCi0gICAgMHgwMDAwMDQwMCwKLSAgICAweDAwMDAwNDAwLAotICAg
IDB4MDAwMDA0MDAsCi0gICAgMHgwMDAwMDQwMCwKLSAgICAweDAwMDAwNDAwLAotICAgIDB4MDAw
MDA0MDAsCi0gICAgMHgwMDAwMDQwMCwKLSAgICAweDAwMDAwNDAwLAotICAgIDB4MDAwMDA0MDAs
Ci0gICAgMHgwMDAwMDQwMCwKLSAgICAweDAwMDAwNDAwLAotICAgIDB4MDAwMDA0MDAsCi0gICAg
MHgwMDAwMDQwMCwKLSAgICAweDAwMDAwNDAwLAotICAgIDB4MDAwMDA0MDAsCi0gICAgMHgwMDAw
MDQwMCwKLSAgICAweDAwMDAwNDAwLAotICAgIDB4MDAwMDA0MDAsCi0gICAgMHgwMDAwMDQwMCwK
LX07Ci0KLWZsb2F0IGZsb2F0MTZUb0Zsb2F0MzIodW5zaWduZWQgc2hvcnQgaCkKLXsKLSAgICB1
bnNpZ25lZCBpMzIgPSBnX21hbnRpc3NhW2dfb2Zmc2V0W2ggPj4gMTBdICsgKGggJiAweDNmZild
ICsgZ19leHBvbmVudFtoID4+IDEwXTsKLSAgICByZXR1cm4gKihmbG9hdCopICZpMzI7Ci19Ci19
Ci0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GbG9hdDE2VG9G
bG9hdDMyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9GbG9hdDE2VG9GbG9hdDMyLnB5CShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRmxvYXQxNlRvRmxvYXQzMi5weQkobm9uZXhpc3Rl
bnQpCkBAIC0xLDc4ICswLDAgQEAKLSMgQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSMgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLSMKLQotIyBUaGlzIHNjcmlwdCBnZW5lcmF0ZXMgYSBm
dW5jdGlvbiB0aGF0IGNvbnZlcnRzIDE2LWJpdCBwcmVjaXNpb24gZmxvYXRpbmcKLSMgcG9pbnQg
bnVtYmVycyB0byAzMi1iaXQuCi0jIEl0IGlzIGJhc2VkIG9uIGZ0cDovL2Z0cC5mb3gtdG9vbGtp
dC5vcmcvcHViL2Zhc3RoYWxmZmxvYXRjb252ZXJzaW9uLnBkZi4KLQotZGVmIGNvbnZlcnRNYW50
aXNzYShpKToKLSAgICBpZiBpID09IDA6Ci0gICAgICAgIHJldHVybiAwCi0gICAgZWxpZiBpIDwg
MTAyNDoKLSAgICAgICAgbSA9IGkgPDwgMTMKLSAgICAgICAgZSA9IDAKLSAgICAgICAgd2hpbGUg
bm90IChtICYgMHgwMDgwMDAwMCk6Ci0gICAgICAgICAgICBlIC09IDB4MDA4MDAwMDAKLSAgICAg
ICAgICAgIG0gPSBtIDw8IDEKLSAgICAgICAgbSAmPSB+MHgwMDgwMDAwMAotICAgICAgICBlICs9
IDB4Mzg4MDAwMDAKLSAgICAgICAgcmV0dXJuIG0gfCBlCi0gICAgZWxzZToKLSAgICAgICAgcmV0
dXJuIDB4MzgwMDAwMDAgKyAoKGkgLSAxMDI0KSA8PCAxMykKLQotZGVmIGNvbnZlcnRFeHBvbmVu
dChpKToKLSAgICBpZiBpID09IDA6Ci0gICAgICAgIHJldHVybiAwCi0gICAgZWxpZiBpIGluIHJh
bmdlKDEsIDMxKToKLSAgICAgICAgcmV0dXJuIGkgPDwgMjMKLSAgICBlbGlmIGkgPT0gMzE6Ci0g
ICAgICAgIHJldHVybiAweDQ3ODAwMDAwCi0gICAgZWxpZiBpID09IDMyOgotICAgICAgICByZXR1
cm4gMHg4MDAwMDAwMAotICAgIGVsaWYgaSBpbiByYW5nZSgzMywgNjMpOgotICAgICAgICByZXR1
cm4gMHg4MDAwMDAwMCArICgoaSAtIDMyKSA8PCAyMykKLSAgICBlbHNlOgotICAgICAgICByZXR1
cm4gMHhDNzgwMDAwMAotCi1kZWYgY29udmVydE9mZnNldChpKToKLSAgICBpZiBpID09IDAgb3Ig
aSA9PSAzMjoKLSAgICAgICAgcmV0dXJuIDAKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gMTAy
NAotCi1wcmludCAiIiIvLwotLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2Fs
bHkgZ2VuZXJhdGVkLgotCi1uYW1lc3BhY2UgZ2wKLXsKLSIiIgotCi1wcmludCAiY29uc3Qgc3Rh
dGljIHVuc2lnbmVkIGdfbWFudGlzc2FbMjA0OF0gPSB7IgotZm9yIGkgaW4gcmFuZ2UoMCwgMjA0
OCk6Ci0gICAgcHJpbnQgIiAgICAlIzAxMHgsIiAlIGNvbnZlcnRNYW50aXNzYShpKQotcHJpbnQg
In07XG4iCi0KLXByaW50ICJjb25zdCBzdGF0aWMgdW5zaWduZWQgZ19leHBvbmVudFs2NF0gPSB7
IgotZm9yIGkgaW4gcmFuZ2UoMCwgNjQpOgotICAgIHByaW50ICIgICAgJSMwMTB4LCIgJSBjb252
ZXJ0RXhwb25lbnQoaSkKLXByaW50ICJ9O1xuIgotCi1wcmludCAiY29uc3Qgc3RhdGljIHVuc2ln
bmVkIGdfb2Zmc2V0WzY0XSA9IHsiCi1mb3IgaSBpbiByYW5nZSgwLCA2NCk6Ci0gICAgcHJpbnQg
IiAgICAlIzAxMHgsIiAlIGNvbnZlcnRPZmZzZXQoaSkKLXByaW50ICJ9O1xuIgotCi1wcmludCAi
IiJmbG9hdCBmbG9hdDE2VG9GbG9hdDMyKHVuc2lnbmVkIHNob3J0IGgpCi17Ci0gICAgdW5zaWdu
ZWQgaTMyID0gZ19tYW50aXNzYVtnX29mZnNldFtoID4+IDEwXSArIChoICYgMHgzZmYpXSArIGdf
ZXhwb25lbnRbaCA+PiAxMF07Ci0gICAgcmV0dXJuICooZmxvYXQqKSAmaTMyOwotfQotfQotIiIi
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRnJhbWVidWZmZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9G
cmFtZWJ1ZmZlci5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9GcmFtZWJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4LDI4
ICsxOCwyOCBAQAogI2luY2x1ZGUgImxpYkFOR0xFL1N1cmZhY2UuaCIKICNpbmNsdWRlICJsaWJB
TkdMRS9UZXh0dXJlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvZm9ybWF0dXRpbHMuaCIKKyNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9Db250ZXh0SW1wbC5oIgogI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL0ZyYW1lYnVmZmVySW1wbC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L0ltcGxGYWN0b3J5LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvR0xJbXBsRmFjdG9y
eS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1JlbmRlcmJ1ZmZlckltcGwuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9TdXJmYWNlSW1wbC5oIgogCit1c2luZyBuYW1lc3Bh
Y2UgYW5nbGU7CisKIG5hbWVzcGFjZSBnbAogewogCiBuYW1lc3BhY2UKIHsKLXZvaWQgRGV0YWNo
TWF0Y2hpbmdBdHRhY2htZW50KEZyYW1lYnVmZmVyQXR0YWNobWVudCAqYXR0YWNobWVudCwgR0xl
bnVtIG1hdGNoVHlwZSwgR0x1aW50IG1hdGNoSWQpCisKK3ZvaWQgQmluZFJlc291cmNlQ2hhbm5l
bChDaGFubmVsQmluZGluZyAqYmluZGluZywgRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0ICpy
ZXNvdXJjZSkKIHsKLSAgICBpZiAoYXR0YWNobWVudC0+aXNBdHRhY2hlZCgpICYmCi0gICAgICAg
IGF0dGFjaG1lbnQtPnR5cGUoKSA9PSBtYXRjaFR5cGUgJiYKLSAgICAgICAgYXR0YWNobWVudC0+
aWQoKSA9PSBtYXRjaElkKQotICAgIHsKLSAgICAgICAgYXR0YWNobWVudC0+ZGV0YWNoKCk7Ci0g
ICAgfQotfQorICAgIGJpbmRpbmctPmJpbmQocmVzb3VyY2UgPyByZXNvdXJjZS0+Z2V0RGlydHlD
aGFubmVsKCkgOiBudWxscHRyKTsKIH0KIAotRnJhbWVidWZmZXI6OkRhdGE6OkRhdGEoKQorfSAg
Ly8gYW5vbnltb3VzIG5hbWVzcGFjZQorCitGcmFtZWJ1ZmZlclN0YXRlOjpGcmFtZWJ1ZmZlclN0
YXRlKCkKICAgICA6IG1MYWJlbCgpLAogICAgICAgbUNvbG9yQXR0YWNobWVudHMoMSksCiAgICAg
ICBtRHJhd0J1ZmZlclN0YXRlcygxLCBHTF9OT05FKSwKQEAgLTQ4LDcgKzQ4LDcgQEAgRnJhbWVi
dWZmZXI6OkRhdGE6OkRhdGEoKQogICAgIG1EcmF3QnVmZmVyU3RhdGVzWzBdID0gR0xfQ09MT1Jf
QVRUQUNITUVOVDBfRVhUOwogfQogCi1GcmFtZWJ1ZmZlcjo6RGF0YTo6RGF0YShjb25zdCBDYXBz
ICZjYXBzKQorRnJhbWVidWZmZXJTdGF0ZTo6RnJhbWVidWZmZXJTdGF0ZShjb25zdCBDYXBzICZj
YXBzKQogICAgIDogbUxhYmVsKCksCiAgICAgICBtQ29sb3JBdHRhY2htZW50cyhjYXBzLm1heENv
bG9yQXR0YWNobWVudHMpLAogICAgICAgbURyYXdCdWZmZXJTdGF0ZXMoY2Fwcy5tYXhEcmF3QnVm
ZmVycywgR0xfTk9ORSksCkBAIC01OCwxNiArNTgsNDMgQEAgRnJhbWVidWZmZXI6OkRhdGE6OkRh
dGEoY29uc3QgQ2FwcyAmY2FwcwogICAgIG1EcmF3QnVmZmVyU3RhdGVzWzBdID0gR0xfQ09MT1Jf
QVRUQUNITUVOVDBfRVhUOwogfQogCi1GcmFtZWJ1ZmZlcjo6RGF0YTo6fkRhdGEoKQorRnJhbWVi
dWZmZXJTdGF0ZTo6fkZyYW1lYnVmZmVyU3RhdGUoKQogewogfQogCi1jb25zdCBzdGQ6OnN0cmlu
ZyAmRnJhbWVidWZmZXI6OkRhdGE6OmdldExhYmVsKCkKK2NvbnN0IHN0ZDo6c3RyaW5nICZGcmFt
ZWJ1ZmZlclN0YXRlOjpnZXRMYWJlbCgpCiB7CiAgICAgcmV0dXJuIG1MYWJlbDsKIH0KIAotY29u
c3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpGcmFtZWJ1ZmZlcjo6RGF0YTo6Z2V0UmVhZEF0dGFj
aG1lbnQoKSBjb25zdAorY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpGcmFtZWJ1ZmZlclN0
YXRlOjpnZXRBdHRhY2htZW50KEdMZW51bSBhdHRhY2htZW50KSBjb25zdAoreworICAgIGlmIChh
dHRhY2htZW50ID49IEdMX0NPTE9SX0FUVEFDSE1FTlQwICYmIGF0dGFjaG1lbnQgPD0gR0xfQ09M
T1JfQVRUQUNITUVOVDE1KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldENvbG9yQXR0YWNobWVu
dChhdHRhY2htZW50IC0gR0xfQ09MT1JfQVRUQUNITUVOVDApOworICAgIH0KKworICAgIHN3aXRj
aCAoYXR0YWNobWVudCkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfQ09MT1I6CisgICAgICAgIGNh
c2UgR0xfQkFDSzoKKyAgICAgICAgICAgIHJldHVybiBnZXRDb2xvckF0dGFjaG1lbnQoMCk7Cisg
ICAgICAgIGNhc2UgR0xfREVQVEg6CisgICAgICAgIGNhc2UgR0xfREVQVEhfQVRUQUNITUVOVDoK
KyAgICAgICAgICAgIHJldHVybiBnZXREZXB0aEF0dGFjaG1lbnQoKTsKKyAgICAgICAgY2FzZSBH
TF9TVEVOQ0lMOgorICAgICAgICBjYXNlIEdMX1NURU5DSUxfQVRUQUNITUVOVDoKKyAgICAgICAg
ICAgIHJldHVybiBnZXRTdGVuY2lsQXR0YWNobWVudCgpOworICAgICAgICBjYXNlIEdMX0RFUFRI
X1NURU5DSUw6CisgICAgICAgIGNhc2UgR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UOgorICAg
ICAgICAgICAgcmV0dXJuIGdldERlcHRoU3RlbmNpbEF0dGFjaG1lbnQoKTsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICB9Cit9CisKK2NvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqRnJhbWVidWZm
ZXJTdGF0ZTo6Z2V0UmVhZEF0dGFjaG1lbnQoKSBjb25zdAogewogICAgIEFTU0VSVChtUmVhZEJ1
ZmZlclN0YXRlID09IEdMX0JBQ0sgfHwgKG1SZWFkQnVmZmVyU3RhdGUgPj0gR0xfQ09MT1JfQVRU
QUNITUVOVDAgJiYgbVJlYWRCdWZmZXJTdGF0ZSA8PSBHTF9DT0xPUl9BVFRBQ0hNRU5UMTUpKTsK
ICAgICBzaXplX3QgcmVhZEluZGV4ID0gKG1SZWFkQnVmZmVyU3RhdGUgPT0gR0xfQkFDSyA/IDAg
OiBzdGF0aWNfY2FzdDxzaXplX3Q+KG1SZWFkQnVmZmVyU3RhdGUgLSBHTF9DT0xPUl9BVFRBQ0hN
RU5UMCkpOwpAQCAtNzUsNyArMTAyLDcgQEAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpG
cmFtZWJ1ZmZlcgogICAgIHJldHVybiBtQ29sb3JBdHRhY2htZW50c1tyZWFkSW5kZXhdLmlzQXR0
YWNoZWQoKSA/ICZtQ29sb3JBdHRhY2htZW50c1tyZWFkSW5kZXhdIDogbnVsbHB0cjsKIH0KIAot
Y29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpGcmFtZWJ1ZmZlcjo6RGF0YTo6Z2V0Rmlyc3RD
b2xvckF0dGFjaG1lbnQoKSBjb25zdAorY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpGcmFt
ZWJ1ZmZlclN0YXRlOjpnZXRGaXJzdENvbG9yQXR0YWNobWVudCgpIGNvbnN0CiB7CiAgICAgZm9y
IChjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgJmNvbG9yQXR0YWNobWVudCA6IG1Db2xvckF0
dGFjaG1lbnRzKQogICAgIHsKQEAgLTg4LDcgKzExNSw3IEBAIGNvbnN0IEZyYW1lYnVmZmVyQXR0
YWNobWVudCAqRnJhbWVidWZmZXIKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotY29uc3QgRnJh
bWVidWZmZXJBdHRhY2htZW50ICpGcmFtZWJ1ZmZlcjo6RGF0YTo6Z2V0RGVwdGhPclN0ZW5jaWxB
dHRhY2htZW50KCkgY29uc3QKK2NvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqRnJhbWVidWZm
ZXJTdGF0ZTo6Z2V0RGVwdGhPclN0ZW5jaWxBdHRhY2htZW50KCkgY29uc3QKIHsKICAgICBpZiAo
bURlcHRoQXR0YWNobWVudC5pc0F0dGFjaGVkKCkpCiAgICAgewpAQCAtMTAxLDcgKzEyOCw3IEBA
IGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqRnJhbWVidWZmZXIKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpGcmFtZWJ1ZmZlcjo6RGF0
YTo6Z2V0Q29sb3JBdHRhY2htZW50KHNpemVfdCBjb2xvckF0dGFjaG1lbnQpIGNvbnN0Citjb25z
dCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKkZyYW1lYnVmZmVyU3RhdGU6OmdldENvbG9yQXR0YWNo
bWVudChzaXplX3QgY29sb3JBdHRhY2htZW50KSBjb25zdAogewogICAgIEFTU0VSVChjb2xvckF0
dGFjaG1lbnQgPCBtQ29sb3JBdHRhY2htZW50cy5zaXplKCkpOwogICAgIHJldHVybiBtQ29sb3JB
dHRhY2htZW50c1tjb2xvckF0dGFjaG1lbnRdLmlzQXR0YWNoZWQoKSA/CkBAIC0xMDksMTcgKzEz
NiwxNyBAQCBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKkZyYW1lYnVmZmVyCiAgICAgICAg
ICAgIG51bGxwdHI7CiB9CiAKLWNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqRnJhbWVidWZm
ZXI6OkRhdGE6OmdldERlcHRoQXR0YWNobWVudCgpIGNvbnN0Citjb25zdCBGcmFtZWJ1ZmZlckF0
dGFjaG1lbnQgKkZyYW1lYnVmZmVyU3RhdGU6OmdldERlcHRoQXR0YWNobWVudCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1EZXB0aEF0dGFjaG1lbnQuaXNBdHRhY2hlZCgpID8gJm1EZXB0aEF0dGFj
aG1lbnQgOiBudWxscHRyOwogfQogCi1jb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKkZyYW1l
YnVmZmVyOjpEYXRhOjpnZXRTdGVuY2lsQXR0YWNobWVudCgpIGNvbnN0Citjb25zdCBGcmFtZWJ1
ZmZlckF0dGFjaG1lbnQgKkZyYW1lYnVmZmVyU3RhdGU6OmdldFN0ZW5jaWxBdHRhY2htZW50KCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbVN0ZW5jaWxBdHRhY2htZW50LmlzQXR0YWNoZWQoKSA/ICZt
U3RlbmNpbEF0dGFjaG1lbnQgOiBudWxscHRyOwogfQogCi1jb25zdCBGcmFtZWJ1ZmZlckF0dGFj
aG1lbnQgKkZyYW1lYnVmZmVyOjpEYXRhOjpnZXREZXB0aFN0ZW5jaWxBdHRhY2htZW50KCkgY29u
c3QKK2NvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqRnJhbWVidWZmZXJTdGF0ZTo6Z2V0RGVw
dGhTdGVuY2lsQXR0YWNobWVudCgpIGNvbnN0CiB7CiAgICAgLy8gQSB2YWxpZCBkZXB0aC1zdGVu
Y2lsIGF0dGFjaG1lbnQgaGFzIHRoZSBzYW1lIHJlc291cmNlIGJvdW5kIHRvIGJvdGggdGhlCiAg
ICAgLy8gZGVwdGggYW5kIHN0ZW5jaWwgYXR0YWNobWVudCBwb2ludHMuCkBAIC0xMzMsNyArMTYw
LDcgQEAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpGcmFtZWJ1ZmZlcgogICAgIHJldHVy
biBudWxscHRyOwogfQogCi1ib29sIEZyYW1lYnVmZmVyOjpEYXRhOjphdHRhY2htZW50c0hhdmVT
YW1lRGltZW5zaW9ucygpIGNvbnN0Citib29sIEZyYW1lYnVmZmVyU3RhdGU6OmF0dGFjaG1lbnRz
SGF2ZVNhbWVEaW1lbnNpb25zKCkgY29uc3QKIHsKICAgICBPcHRpb25hbDxFeHRlbnRzPiBhdHRh
Y2htZW50U2l6ZTsKIApAQCAtMTY5LDE3ICsxOTYsODkgQEAgYm9vbCBGcmFtZWJ1ZmZlcjo6RGF0
YTo6YXR0YWNobWVudHNIYXZlUwogICAgIHJldHVybiAhaGFzTWlzbWF0Y2hlZFNpemUobVN0ZW5j
aWxBdHRhY2htZW50KTsKIH0KIAotRnJhbWVidWZmZXI6OkZyYW1lYnVmZmVyKGNvbnN0IENhcHMg
JmNhcHMsIHJ4OjpJbXBsRmFjdG9yeSAqZmFjdG9yeSwgR0x1aW50IGlkKQotICAgIDogbURhdGEo
Y2FwcyksIG1JbXBsKGZhY3RvcnktPmNyZWF0ZUZyYW1lYnVmZmVyKG1EYXRhKSksIG1JZChpZCkK
K2NvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKkZyYW1lYnVmZmVyU3RhdGU6OmdldERy
YXdCdWZmZXIoc2l6ZV90IGRyYXdCdWZmZXJJZHgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGRyYXdC
dWZmZXJJZHggPCBtRHJhd0J1ZmZlclN0YXRlcy5zaXplKCkpOworICAgIGlmIChtRHJhd0J1ZmZl
clN0YXRlc1tkcmF3QnVmZmVySWR4XSAhPSBHTF9OT05FKQorICAgIHsKKyAgICAgICAgLy8gRVMz
IHNwZWM6ICJJZiB0aGUgR0wgaXMgYm91bmQgdG8gYSBkcmF3IGZyYW1lYnVmZmVyIG9iamVjdCwg
dGhlIGl0aCBidWZmZXIgbGlzdGVkIGluIGJ1ZnMKKyAgICAgICAgLy8gbXVzdCBiZSBDT0xPUl9B
VFRBQ0hNRU5UaSBvciBOT05FIgorICAgICAgICBBU1NFUlQobURyYXdCdWZmZXJTdGF0ZXNbZHJh
d0J1ZmZlcklkeF0gPT0gR0xfQ09MT1JfQVRUQUNITUVOVDAgKyBkcmF3QnVmZmVySWR4IHx8Cisg
ICAgICAgICAgICAgICAoZHJhd0J1ZmZlcklkeCA9PSAwICYmIG1EcmF3QnVmZmVyU3RhdGVzW2Ry
YXdCdWZmZXJJZHhdID09IEdMX0JBQ0spKTsKKyAgICAgICAgcmV0dXJuIGdldEF0dGFjaG1lbnQo
bURyYXdCdWZmZXJTdGF0ZXNbZHJhd0J1ZmZlcklkeF0pOworICAgIH0KKyAgICBlbHNlCisgICAg
eworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9Cit9CisKK3NpemVfdCBGcmFtZWJ1ZmZl
clN0YXRlOjpnZXREcmF3QnVmZmVyQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBtRHJhd0J1
ZmZlclN0YXRlcy5zaXplKCk7Cit9CisKK2Jvb2wgRnJhbWVidWZmZXJTdGF0ZTo6Y29sb3JBdHRh
Y2htZW50c0FyZVVuaXF1ZUltYWdlcygpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgZmlyc3RB
dHRhY2htZW50SWR4ID0gMDsgZmlyc3RBdHRhY2htZW50SWR4IDwgbUNvbG9yQXR0YWNobWVudHMu
c2l6ZSgpOworICAgICAgICAgZmlyc3RBdHRhY2htZW50SWR4KyspCisgICAgeworICAgICAgICBj
b25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICZmaXJzdEF0dGFjaG1lbnQgPSBtQ29sb3JB
dHRhY2htZW50c1tmaXJzdEF0dGFjaG1lbnRJZHhdOworICAgICAgICBpZiAoIWZpcnN0QXR0YWNo
bWVudC5pc0F0dGFjaGVkKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICB9CisKKyAgICAgICAgZm9yIChzaXplX3Qgc2Vjb25kQXR0YWNobWVudElkeCA9IGZpcnN0
QXR0YWNobWVudElkeCArIDE7CisgICAgICAgICAgICAgc2Vjb25kQXR0YWNobWVudElkeCA8IG1D
b2xvckF0dGFjaG1lbnRzLnNpemUoKTsgc2Vjb25kQXR0YWNobWVudElkeCsrKQorICAgICAgICB7
CisgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICZzZWNvbmRBdHRh
Y2htZW50ID0KKyAgICAgICAgICAgICAgICBtQ29sb3JBdHRhY2htZW50c1tzZWNvbmRBdHRhY2ht
ZW50SWR4XTsKKyAgICAgICAgICAgIGlmICghc2Vjb25kQXR0YWNobWVudC5pc0F0dGFjaGVkKCkp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmIChmaXJzdEF0dGFjaG1lbnQgPT0gc2Vjb25kQXR0YWNobWVudCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworRnJhbWVidWZm
ZXI6OkZyYW1lYnVmZmVyKGNvbnN0IENhcHMgJmNhcHMsIHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0
b3J5LCBHTHVpbnQgaWQpCisgICAgOiBtU3RhdGUoY2FwcyksCisgICAgICBtSW1wbChmYWN0b3J5
LT5jcmVhdGVGcmFtZWJ1ZmZlcihtU3RhdGUpKSwKKyAgICAgIG1JZChpZCksCisgICAgICBtQ2Fj
aGVkU3RhdHVzKCksCisgICAgICBtRGlydHlEZXB0aEF0dGFjaG1lbnRCaW5kaW5nKHRoaXMsIERJ
UlRZX0JJVF9ERVBUSF9BVFRBQ0hNRU5UKSwKKyAgICAgIG1EaXJ0eVN0ZW5jaWxBdHRhY2htZW50
QmluZGluZyh0aGlzLCBESVJUWV9CSVRfU1RFTkNJTF9BVFRBQ0hNRU5UKQogewogICAgIEFTU0VS
VChtSWQgIT0gMCk7CiAgICAgQVNTRVJUKG1JbXBsICE9IG51bGxwdHIpOworICAgIEFTU0VSVCht
U3RhdGUubUNvbG9yQXR0YWNobWVudHMuc2l6ZSgpID09IHN0YXRpY19jYXN0PHNpemVfdD4oY2Fw
cy5tYXhDb2xvckF0dGFjaG1lbnRzKSk7CisKKyAgICBmb3IgKHNpemVfdCBjb2xvckluZGV4ID0g
MDsgY29sb3JJbmRleCA8IG1TdGF0ZS5tQ29sb3JBdHRhY2htZW50cy5zaXplKCk7ICsrY29sb3JJ
bmRleCkKKyAgICB7CisgICAgICAgIG1EaXJ0eUNvbG9yQXR0YWNobWVudEJpbmRpbmdzLnB1c2hf
YmFjayhDaGFubmVsQmluZGluZygKKyAgICAgICAgICAgIHRoaXMsIHN0YXRpY19jYXN0PFNpZ25h
bFRva2VuPihESVJUWV9CSVRfQ09MT1JfQVRUQUNITUVOVF8wICsgY29sb3JJbmRleCkpKTsKKyAg
ICB9CiB9CiAKIEZyYW1lYnVmZmVyOjpGcmFtZWJ1ZmZlcihyeDo6U3VyZmFjZUltcGwgKnN1cmZh
Y2UpCi0gICAgOiBtRGF0YSgpLCBtSW1wbChzdXJmYWNlLT5jcmVhdGVEZWZhdWx0RnJhbWVidWZm
ZXIobURhdGEpKSwgbUlkKDApCisgICAgOiBtU3RhdGUoKSwKKyAgICAgIG1JbXBsKHN1cmZhY2Ut
PmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihtU3RhdGUpKSwKKyAgICAgIG1JZCgwKSwKKyAgICAg
IG1DYWNoZWRTdGF0dXMoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpLAorICAgICAgbURpcnR5RGVw
dGhBdHRhY2htZW50QmluZGluZyh0aGlzLCBESVJUWV9CSVRfREVQVEhfQVRUQUNITUVOVCksCisg
ICAgICBtRGlydHlTdGVuY2lsQXR0YWNobWVudEJpbmRpbmcodGhpcywgRElSVFlfQklUX1NURU5D
SUxfQVRUQUNITUVOVCkKIHsKICAgICBBU1NFUlQobUltcGwgIT0gbnVsbHB0cik7CisgICAgbURp
cnR5Q29sb3JBdHRhY2htZW50QmluZGluZ3MucHVzaF9iYWNrKAorICAgICAgICBDaGFubmVsQmlu
ZGluZyh0aGlzLCBzdGF0aWNfY2FzdDxTaWduYWxUb2tlbj4oRElSVFlfQklUX0NPTE9SX0FUVEFD
SE1FTlRfMCkpKTsKIH0KIAogRnJhbWVidWZmZXI6On5GcmFtZWJ1ZmZlcigpCkBAIC0xODksMTIg
KzI4OCwxMiBAQCBGcmFtZWJ1ZmZlcjo6fkZyYW1lYnVmZmVyKCkKIAogdm9pZCBGcmFtZWJ1ZmZl
cjo6c2V0TGFiZWwoY29uc3Qgc3RkOjpzdHJpbmcgJmxhYmVsKQogewotICAgIG1EYXRhLm1MYWJl
bCA9IGxhYmVsOworICAgIG1TdGF0ZS5tTGFiZWwgPSBsYWJlbDsKIH0KIAogY29uc3Qgc3RkOjpz
dHJpbmcgJkZyYW1lYnVmZmVyOjpnZXRMYWJlbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1EYXRh
Lm1MYWJlbDsKKyAgICByZXR1cm4gbVN0YXRlLm1MYWJlbDsKIH0KIAogdm9pZCBGcmFtZWJ1ZmZl
cjo6ZGV0YWNoVGV4dHVyZShHTHVpbnQgdGV4dHVyZUlkKQpAQCAtMjA5LDEwNCArMzA4LDk1IEBA
IHZvaWQgRnJhbWVidWZmZXI6OmRldGFjaFJlbmRlcmJ1ZmZlcihHTHUKIAogdm9pZCBGcmFtZWJ1
ZmZlcjo6ZGV0YWNoUmVzb3VyY2VCeUlkKEdMZW51bSByZXNvdXJjZVR5cGUsIEdMdWludCByZXNv
dXJjZUlkKQogewotICAgIGZvciAoYXV0byAmY29sb3JBdHRhY2htZW50IDogbURhdGEubUNvbG9y
QXR0YWNobWVudHMpCisgICAgZm9yIChzaXplX3QgY29sb3JJbmRleCA9IDA7IGNvbG9ySW5kZXgg
PCBtU3RhdGUubUNvbG9yQXR0YWNobWVudHMuc2l6ZSgpOyArK2NvbG9ySW5kZXgpCiAgICAgewot
ICAgICAgICBEZXRhY2hNYXRjaGluZ0F0dGFjaG1lbnQoJmNvbG9yQXR0YWNobWVudCwgcmVzb3Vy
Y2VUeXBlLCByZXNvdXJjZUlkKTsKKyAgICAgICAgZGV0YWNoTWF0Y2hpbmdBdHRhY2htZW50KCZt
U3RhdGUubUNvbG9yQXR0YWNobWVudHNbY29sb3JJbmRleF0sIHJlc291cmNlVHlwZSwgcmVzb3Vy
Y2VJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERJUlRZX0JJVF9DT0xPUl9B
VFRBQ0hNRU5UXzAgKyBjb2xvckluZGV4KTsKICAgICB9CiAKLSAgICBEZXRhY2hNYXRjaGluZ0F0
dGFjaG1lbnQoJm1EYXRhLm1EZXB0aEF0dGFjaG1lbnQsIHJlc291cmNlVHlwZSwgcmVzb3VyY2VJ
ZCk7Ci0gICAgRGV0YWNoTWF0Y2hpbmdBdHRhY2htZW50KCZtRGF0YS5tU3RlbmNpbEF0dGFjaG1l
bnQsIHJlc291cmNlVHlwZSwgcmVzb3VyY2VJZCk7CisgICAgZGV0YWNoTWF0Y2hpbmdBdHRhY2ht
ZW50KCZtU3RhdGUubURlcHRoQXR0YWNobWVudCwgcmVzb3VyY2VUeXBlLCByZXNvdXJjZUlkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBESVJUWV9CSVRfREVQVEhfQVRUQUNITUVOVCk7
CisgICAgZGV0YWNoTWF0Y2hpbmdBdHRhY2htZW50KCZtU3RhdGUubVN0ZW5jaWxBdHRhY2htZW50
LCByZXNvdXJjZVR5cGUsIHJlc291cmNlSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERJUlRZX0JJVF9TVEVOQ0lMX0FUVEFDSE1FTlQpOworfQorCit2b2lkIEZyYW1lYnVmZmVyOjpk
ZXRhY2hNYXRjaGluZ0F0dGFjaG1lbnQoRnJhbWVidWZmZXJBdHRhY2htZW50ICphdHRhY2htZW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtYXRj
aFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IG1hdGNoSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGRpcnR5Qml0KQoreworICAgIGlmIChhdHRhY2htZW50LT5pc0F0dGFjaGVkKCkgJiYgYXR0
YWNobWVudC0+dHlwZSgpID09IG1hdGNoVHlwZSAmJiBhdHRhY2htZW50LT5pZCgpID09IG1hdGNo
SWQpCisgICAgeworICAgICAgICBhdHRhY2htZW50LT5kZXRhY2goKTsKKyAgICAgICAgbURpcnR5
Qml0cy5zZXQoZGlydHlCaXQpOworICAgIH0KIH0KIAogY29uc3QgRnJhbWVidWZmZXJBdHRhY2ht
ZW50ICpGcmFtZWJ1ZmZlcjo6Z2V0Q29sb3JidWZmZXIoc2l6ZV90IGNvbG9yQXR0YWNobWVudCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbURhdGEuZ2V0Q29sb3JBdHRhY2htZW50KGNvbG9yQXR0YWNo
bWVudCk7CisgICAgcmV0dXJuIG1TdGF0ZS5nZXRDb2xvckF0dGFjaG1lbnQoY29sb3JBdHRhY2ht
ZW50KTsKIH0KIAogY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpGcmFtZWJ1ZmZlcjo6Z2V0
RGVwdGhidWZmZXIoKSBjb25zdAogewotICAgIHJldHVybiBtRGF0YS5nZXREZXB0aEF0dGFjaG1l
bnQoKTsKKyAgICByZXR1cm4gbVN0YXRlLmdldERlcHRoQXR0YWNobWVudCgpOwogfQogCiBjb25z
dCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKkZyYW1lYnVmZmVyOjpnZXRTdGVuY2lsYnVmZmVyKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbURhdGEuZ2V0U3RlbmNpbEF0dGFjaG1lbnQoKTsKKyAgICBy
ZXR1cm4gbVN0YXRlLmdldFN0ZW5jaWxBdHRhY2htZW50KCk7CiB9CiAKIGNvbnN0IEZyYW1lYnVm
ZmVyQXR0YWNobWVudCAqRnJhbWVidWZmZXI6OmdldERlcHRoU3RlbmNpbEJ1ZmZlcigpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1EYXRhLmdldERlcHRoU3RlbmNpbEF0dGFjaG1lbnQoKTsKKyAgICBy
ZXR1cm4gbVN0YXRlLmdldERlcHRoU3RlbmNpbEF0dGFjaG1lbnQoKTsKIH0KIAogY29uc3QgRnJh
bWVidWZmZXJBdHRhY2htZW50ICpGcmFtZWJ1ZmZlcjo6Z2V0RGVwdGhPclN0ZW5jaWxidWZmZXIo
KSBjb25zdAogewotICAgIHJldHVybiBtRGF0YS5nZXREZXB0aE9yU3RlbmNpbEF0dGFjaG1lbnQo
KTsKKyAgICByZXR1cm4gbVN0YXRlLmdldERlcHRoT3JTdGVuY2lsQXR0YWNobWVudCgpOwogfQog
CiBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKkZyYW1lYnVmZmVyOjpnZXRSZWFkQ29sb3Ji
dWZmZXIoKSBjb25zdAogewotICAgIHJldHVybiBtRGF0YS5nZXRSZWFkQXR0YWNobWVudCgpOwor
ICAgIHJldHVybiBtU3RhdGUuZ2V0UmVhZEF0dGFjaG1lbnQoKTsKIH0KIAogR0xlbnVtIEZyYW1l
YnVmZmVyOjpnZXRSZWFkQ29sb3JidWZmZXJUeXBlKCkgY29uc3QKIHsKLSAgICBjb25zdCBGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnQgKnJlYWRBdHRhY2htZW50ID0gbURhdGEuZ2V0UmVhZEF0dGFjaG1l
bnQoKTsKKyAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKnJlYWRBdHRhY2htZW50ID0g
bVN0YXRlLmdldFJlYWRBdHRhY2htZW50KCk7CiAgICAgcmV0dXJuIChyZWFkQXR0YWNobWVudCAh
PSBudWxscHRyID8gcmVhZEF0dGFjaG1lbnQtPnR5cGUoKSA6IEdMX05PTkUpOwogfQogCiBjb25z
dCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKkZyYW1lYnVmZmVyOjpnZXRGaXJzdENvbG9yYnVmZmVy
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbURhdGEuZ2V0Rmlyc3RDb2xvckF0dGFjaG1lbnQoKTsK
KyAgICByZXR1cm4gbVN0YXRlLmdldEZpcnN0Q29sb3JBdHRhY2htZW50KCk7CiB9CiAKIGNvbnN0
IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqRnJhbWVidWZmZXI6OmdldEF0dGFjaG1lbnQoR0xlbnVt
IGF0dGFjaG1lbnQpIGNvbnN0CiB7Ci0gICAgaWYgKGF0dGFjaG1lbnQgPj0gR0xfQ09MT1JfQVRU
QUNITUVOVDAgJiYgYXR0YWNobWVudCA8PSBHTF9DT0xPUl9BVFRBQ0hNRU5UMTUpCi0gICAgewot
ICAgICAgICByZXR1cm4gbURhdGEuZ2V0Q29sb3JBdHRhY2htZW50KGF0dGFjaG1lbnQgLSBHTF9D
T0xPUl9BVFRBQ0hNRU5UMCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHN3aXRj
aCAoYXR0YWNobWVudCkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfQ09MT1I6Ci0gICAg
ICAgICAgY2FzZSBHTF9CQUNLOgotICAgICAgICAgICAgcmV0dXJuIG1EYXRhLmdldENvbG9yQXR0
YWNobWVudCgwKTsKLSAgICAgICAgICBjYXNlIEdMX0RFUFRIOgotICAgICAgICAgIGNhc2UgR0xf
REVQVEhfQVRUQUNITUVOVDoKLSAgICAgICAgICAgIHJldHVybiBtRGF0YS5nZXREZXB0aEF0dGFj
aG1lbnQoKTsKLSAgICAgICAgICBjYXNlIEdMX1NURU5DSUw6Ci0gICAgICAgICAgY2FzZSBHTF9T
VEVOQ0lMX0FUVEFDSE1FTlQ6Ci0gICAgICAgICAgICByZXR1cm4gbURhdGEuZ2V0U3RlbmNpbEF0
dGFjaG1lbnQoKTsKLSAgICAgICAgICBjYXNlIEdMX0RFUFRIX1NURU5DSUw6Ci0gICAgICAgICAg
Y2FzZSBHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQ6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0
RGVwdGhTdGVuY2lsQnVmZmVyKCk7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotICAg
IH0KKyAgICByZXR1cm4gbVN0YXRlLmdldEF0dGFjaG1lbnQoYXR0YWNobWVudCk7CiB9CiAKIHNp
emVfdCBGcmFtZWJ1ZmZlcjo6Z2V0RHJhd2J1ZmZlclN0YXRlQ291bnQoKSBjb25zdAogewotICAg
IHJldHVybiBtRGF0YS5tRHJhd0J1ZmZlclN0YXRlcy5zaXplKCk7CisgICAgcmV0dXJuIG1TdGF0
ZS5tRHJhd0J1ZmZlclN0YXRlcy5zaXplKCk7CiB9CiAKIEdMZW51bSBGcmFtZWJ1ZmZlcjo6Z2V0
RHJhd0J1ZmZlclN0YXRlKHNpemVfdCBkcmF3QnVmZmVyKSBjb25zdAogewotICAgIEFTU0VSVChk
cmF3QnVmZmVyIDwgbURhdGEubURyYXdCdWZmZXJTdGF0ZXMuc2l6ZSgpKTsKLSAgICByZXR1cm4g
bURhdGEubURyYXdCdWZmZXJTdGF0ZXNbZHJhd0J1ZmZlcl07CisgICAgQVNTRVJUKGRyYXdCdWZm
ZXIgPCBtU3RhdGUubURyYXdCdWZmZXJTdGF0ZXMuc2l6ZSgpKTsKKyAgICByZXR1cm4gbVN0YXRl
Lm1EcmF3QnVmZmVyU3RhdGVzW2RyYXdCdWZmZXJdOwogfQogCiBjb25zdCBzdGQ6OnZlY3RvcjxH
TGVudW0+ICZGcmFtZWJ1ZmZlcjo6Z2V0RHJhd0J1ZmZlclN0YXRlcygpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1EYXRhLmdldERyYXdCdWZmZXJTdGF0ZXMoKTsKKyAgICByZXR1cm4gbVN0YXRlLmdl
dERyYXdCdWZmZXJTdGF0ZXMoKTsKIH0KIAogdm9pZCBGcmFtZWJ1ZmZlcjo6c2V0RHJhd0J1ZmZl
cnMoc2l6ZV90IGNvdW50LCBjb25zdCBHTGVudW0gKmJ1ZmZlcnMpCiB7Ci0gICAgYXV0byAmZHJh
d1N0YXRlcyA9IG1EYXRhLm1EcmF3QnVmZmVyU3RhdGVzOworICAgIGF1dG8gJmRyYXdTdGF0ZXMg
PSBtU3RhdGUubURyYXdCdWZmZXJTdGF0ZXM7CiAKICAgICBBU1NFUlQoY291bnQgPD0gZHJhd1N0
YXRlcy5zaXplKCkpOwogICAgIHN0ZDo6Y29weShidWZmZXJzLCBidWZmZXJzICsgY291bnQsIGRy
YXdTdGF0ZXMuYmVnaW4oKSk7CkBAIC0zMTYsMjQgKzQwNiwxMiBAQCB2b2lkIEZyYW1lYnVmZmVy
OjpzZXREcmF3QnVmZmVycyhzaXplX3QgCiAKIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAq
RnJhbWVidWZmZXI6OmdldERyYXdCdWZmZXIoc2l6ZV90IGRyYXdCdWZmZXIpIGNvbnN0CiB7Ci0g
ICAgQVNTRVJUKGRyYXdCdWZmZXIgPCBtRGF0YS5tRHJhd0J1ZmZlclN0YXRlcy5zaXplKCkpOwot
ICAgIGlmIChtRGF0YS5tRHJhd0J1ZmZlclN0YXRlc1tkcmF3QnVmZmVyXSAhPSBHTF9OT05FKQot
ICAgIHsKLSAgICAgICAgLy8gRVMzIHNwZWM6ICJJZiB0aGUgR0wgaXMgYm91bmQgdG8gYSBkcmF3
IGZyYW1lYnVmZmVyIG9iamVjdCwgdGhlIGl0aCBidWZmZXIgbGlzdGVkIGluIGJ1ZnMKLSAgICAg
ICAgLy8gbXVzdCBiZSBDT0xPUl9BVFRBQ0hNRU5UaSBvciBOT05FIgotICAgICAgICBBU1NFUlQo
bURhdGEubURyYXdCdWZmZXJTdGF0ZXNbZHJhd0J1ZmZlcl0gPT0gR0xfQ09MT1JfQVRUQUNITUVO
VDAgKyBkcmF3QnVmZmVyIHx8Ci0gICAgICAgICAgICAgICAoZHJhd0J1ZmZlciA9PSAwICYmIG1E
YXRhLm1EcmF3QnVmZmVyU3RhdGVzW2RyYXdCdWZmZXJdID09IEdMX0JBQ0spKTsKLSAgICAgICAg
cmV0dXJuIGdldEF0dGFjaG1lbnQobURhdGEubURyYXdCdWZmZXJTdGF0ZXNbZHJhd0J1ZmZlcl0p
OwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9
CisgICAgcmV0dXJuIG1TdGF0ZS5nZXREcmF3QnVmZmVyKGRyYXdCdWZmZXIpOwogfQogCiBib29s
IEZyYW1lYnVmZmVyOjpoYXNFbmFibGVkRHJhd0J1ZmZlcigpIGNvbnN0CiB7Ci0gICAgZm9yIChz
aXplX3QgZHJhd2J1ZmZlcklkeCA9IDA7IGRyYXdidWZmZXJJZHggPCBtRGF0YS5tRHJhd0J1ZmZl
clN0YXRlcy5zaXplKCk7ICsrZHJhd2J1ZmZlcklkeCkKKyAgICBmb3IgKHNpemVfdCBkcmF3YnVm
ZmVySWR4ID0gMDsgZHJhd2J1ZmZlcklkeCA8IG1TdGF0ZS5tRHJhd0J1ZmZlclN0YXRlcy5zaXpl
KCk7ICsrZHJhd2J1ZmZlcklkeCkKICAgICB7CiAgICAgICAgIGlmIChnZXREcmF3QnVmZmVyKGRy
YXdidWZmZXJJZHgpICE9IG51bGxwdHIpCiAgICAgICAgIHsKQEAgLTM0NiwzNiArNDI0LDM3IEBA
IGJvb2wgRnJhbWVidWZmZXI6Omhhc0VuYWJsZWREcmF3QnVmZmVyKCkKIAogR0xlbnVtIEZyYW1l
YnVmZmVyOjpnZXRSZWFkQnVmZmVyU3RhdGUoKSBjb25zdAogewotICAgIHJldHVybiBtRGF0YS5t
UmVhZEJ1ZmZlclN0YXRlOworICAgIHJldHVybiBtU3RhdGUubVJlYWRCdWZmZXJTdGF0ZTsKIH0K
IAogdm9pZCBGcmFtZWJ1ZmZlcjo6c2V0UmVhZEJ1ZmZlcihHTGVudW0gYnVmZmVyKQogewogICAg
IEFTU0VSVChidWZmZXIgPT0gR0xfQkFDSyB8fCBidWZmZXIgPT0gR0xfTk9ORSB8fAogICAgICAg
ICAgICAoYnVmZmVyID49IEdMX0NPTE9SX0FUVEFDSE1FTlQwICYmCi0gICAgICAgICAgICAoYnVm
ZmVyIC0gR0xfQ09MT1JfQVRUQUNITUVOVDApIDwgbURhdGEubUNvbG9yQXR0YWNobWVudHMuc2l6
ZSgpKSk7Ci0gICAgbURhdGEubVJlYWRCdWZmZXJTdGF0ZSA9IGJ1ZmZlcjsKKyAgICAgICAgICAg
IChidWZmZXIgLSBHTF9DT0xPUl9BVFRBQ0hNRU5UMCkgPCBtU3RhdGUubUNvbG9yQXR0YWNobWVu
dHMuc2l6ZSgpKSk7CisgICAgbVN0YXRlLm1SZWFkQnVmZmVyU3RhdGUgPSBidWZmZXI7CiAgICAg
bURpcnR5Qml0cy5zZXQoRElSVFlfQklUX1JFQURfQlVGRkVSKTsKIH0KIAogc2l6ZV90IEZyYW1l
YnVmZmVyOjpnZXROdW1Db2xvckJ1ZmZlcnMoKSBjb25zdAogewotICAgIHJldHVybiBtRGF0YS5t
Q29sb3JBdHRhY2htZW50cy5zaXplKCk7CisgICAgcmV0dXJuIG1TdGF0ZS5tQ29sb3JBdHRhY2ht
ZW50cy5zaXplKCk7CiB9CiAKIGJvb2wgRnJhbWVidWZmZXI6Omhhc0RlcHRoKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gKG1EYXRhLm1EZXB0aEF0dGFjaG1lbnQuaXNBdHRhY2hlZCgpICYmIG1EYXRh
Lm1EZXB0aEF0dGFjaG1lbnQuZ2V0RGVwdGhTaXplKCkgPiAwKTsKKyAgICByZXR1cm4gKG1TdGF0
ZS5tRGVwdGhBdHRhY2htZW50LmlzQXR0YWNoZWQoKSAmJiBtU3RhdGUubURlcHRoQXR0YWNobWVu
dC5nZXREZXB0aFNpemUoKSA+IDApOwogfQogCiBib29sIEZyYW1lYnVmZmVyOjpoYXNTdGVuY2ls
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gKG1EYXRhLm1TdGVuY2lsQXR0YWNobWVudC5pc0F0dGFj
aGVkKCkgJiYgbURhdGEubVN0ZW5jaWxBdHRhY2htZW50LmdldFN0ZW5jaWxTaXplKCkgPiAwKTsK
KyAgICByZXR1cm4gKG1TdGF0ZS5tU3RlbmNpbEF0dGFjaG1lbnQuaXNBdHRhY2hlZCgpICYmCisg
ICAgICAgICAgICBtU3RhdGUubVN0ZW5jaWxBdHRhY2htZW50LmdldFN0ZW5jaWxTaXplKCkgPiAw
KTsKIH0KIAogYm9vbCBGcmFtZWJ1ZmZlcjo6dXNpbmdFeHRlbmRlZERyYXdCdWZmZXJzKCkgY29u
c3QKIHsKLSAgICBmb3IgKHNpemVfdCBkcmF3YnVmZmVySWR4ID0gMTsgZHJhd2J1ZmZlcklkeCA8
IG1EYXRhLm1EcmF3QnVmZmVyU3RhdGVzLnNpemUoKTsgKytkcmF3YnVmZmVySWR4KQorICAgIGZv
ciAoc2l6ZV90IGRyYXdidWZmZXJJZHggPSAxOyBkcmF3YnVmZmVySWR4IDwgbVN0YXRlLm1EcmF3
QnVmZmVyU3RhdGVzLnNpemUoKTsgKytkcmF3YnVmZmVySWR4KQogICAgIHsKICAgICAgICAgaWYg
KGdldERyYXdCdWZmZXIoZHJhd2J1ZmZlcklkeCkgIT0gbnVsbHB0cikKICAgICAgICAgewpAQCAt
Mzg2LDcgKzQ2NSw3IEBAIGJvb2wgRnJhbWVidWZmZXI6OnVzaW5nRXh0ZW5kZWREcmF3QnVmZmUK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUdMZW51bSBGcmFtZWJ1ZmZlcjo6Y2hlY2tTdGF0dXMo
Y29uc3QgZ2w6OkRhdGEgJmRhdGEpIGNvbnN0CitHTGVudW0gRnJhbWVidWZmZXI6OmNoZWNrU3Rh
dHVzKGNvbnN0IENvbnRleHRTdGF0ZSAmc3RhdGUpCiB7CiAgICAgLy8gVGhlIGRlZmF1bHQgZnJh
bWVidWZmZXIgKm11c3QqIGFsd2F5cyBiZSBjb21wbGV0ZSwgdGhvdWdoIGl0IG1heSBub3QgYmUK
ICAgICAvLyBzdWJqZWN0IHRvIHRoZSBzYW1lIHJ1bGVzIGFzIGFwcGxpY2F0aW9uIEZCT3MuIGll
LCBpdCBjb3VsZCBoYXZlIDB4MCBzaXplLgpAQCAtMzk1LDExICs0NzQsMjMgQEAgR0xlbnVtIEZy
YW1lYnVmZmVyOjpjaGVja1N0YXR1cyhjb25zdCBnbAogICAgICAgICByZXR1cm4gR0xfRlJBTUVC
VUZGRVJfQ09NUExFVEU7CiAgICAgfQogCisgICAgaWYgKGhhc0FueURpcnR5Qml0KCkgfHwgIW1D
YWNoZWRTdGF0dXMudmFsaWQoKSkKKyAgICB7CisgICAgICAgIG1DYWNoZWRTdGF0dXMgPSBjaGVj
a1N0YXR1c0ltcGwoc3RhdGUpOworICAgIH0KKworICAgIHJldHVybiBtQ2FjaGVkU3RhdHVzLnZh
bHVlKCk7Cit9CisKK0dMZW51bSBGcmFtZWJ1ZmZlcjo6Y2hlY2tTdGF0dXNJbXBsKGNvbnN0IENv
bnRleHRTdGF0ZSAmc3RhdGUpCit7CisgICAgQVNTRVJUKG1JZCAhPSAwKTsKKwogICAgIHVuc2ln
bmVkIGludCBjb2xvcmJ1ZmZlclNpemUgPSAwOwogICAgIGludCBzYW1wbGVzID0gLTE7CiAgICAg
Ym9vbCBtaXNzaW5nQXR0YWNobWVudCA9IHRydWU7CiAKLSAgICBmb3IgKGNvbnN0IEZyYW1lYnVm
ZmVyQXR0YWNobWVudCAmY29sb3JBdHRhY2htZW50IDogbURhdGEubUNvbG9yQXR0YWNobWVudHMp
CisgICAgZm9yIChjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgJmNvbG9yQXR0YWNobWVudCA6
IG1TdGF0ZS5tQ29sb3JBdHRhY2htZW50cykKICAgICB7CiAgICAgICAgIGlmIChjb2xvckF0dGFj
aG1lbnQuaXNBdHRhY2hlZCgpKQogICAgICAgICB7CkBAIC00MDksOSArNTAwLDggQEAgR0xlbnVt
IEZyYW1lYnVmZmVyOjpjaGVja1N0YXR1cyhjb25zdCBnbAogICAgICAgICAgICAgICAgIHJldHVy
biBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCA9IGNvbG9yQXR0YWNobWVudC5nZXRJ
bnRlcm5hbEZvcm1hdCgpOwotICAgICAgICAgICAgY29uc3QgVGV4dHVyZUNhcHMgJmZvcm1hdENh
cHMgPSBkYXRhLnRleHR1cmVDYXBzLT5nZXQoaW50ZXJuYWxmb3JtYXQpOwotICAgICAgICAgICAg
Y29uc3QgSW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBHZXRJbnRlcm5hbEZvcm1hdEluZm8o
aW50ZXJuYWxmb3JtYXQpOworICAgICAgICAgICAgY29uc3QgRm9ybWF0ICZmb3JtYXQgICAgICAg
ICAgPSBjb2xvckF0dGFjaG1lbnQuZ2V0Rm9ybWF0KCk7CisgICAgICAgICAgICBjb25zdCBUZXh0
dXJlQ2FwcyAmZm9ybWF0Q2FwcyA9IHN0YXRlLmdldFRleHR1cmVDYXAoZm9ybWF0LmFzU2l6ZWQo
KSk7CiAgICAgICAgICAgICBpZiAoY29sb3JBdHRhY2htZW50LnR5cGUoKSA9PSBHTF9URVhUVVJF
KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGlmICghZm9ybWF0Q2Fwcy5yZW5kZXJh
YmxlKQpAQCAtNDE5LDcgKzUwOSw3IEBAIEdMZW51bSBGcmFtZWJ1ZmZlcjo6Y2hlY2tTdGF0dXMo
Y29uc3QgZ2wKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09N
UExFVEVfQVRUQUNITUVOVDsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBp
ZiAoZm9ybWF0SW5mby5kZXB0aEJpdHMgPiAwIHx8IGZvcm1hdEluZm8uc3RlbmNpbEJpdHMgPiAw
KQorICAgICAgICAgICAgICAgIGlmIChmb3JtYXQuaW5mby0+ZGVwdGhCaXRzID4gMCB8fCBmb3Jt
YXQuaW5mby0+c3RlbmNpbEJpdHMgPiAwKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVDsKICAg
ICAgICAgICAgICAgICB9CkBAIC00MzUsMTQgKzUyNSwxNiBAQCBHTGVudW0gRnJhbWVidWZmZXI6
OmNoZWNrU3RhdHVzKGNvbnN0IGdsCiAgICAgICAgICAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTog
Q2hlY2sgaWYgT3BlbkdMIEVTMiBkcml2ZXJzIGVuZm9yY2UgY3ViZSBjb21wbGV0ZW5lc3MuCiAg
ICAgICAgICAgICAgICAgY29uc3QgVGV4dHVyZSAqdGV4dHVyZSA9IGNvbG9yQXR0YWNobWVudC5n
ZXRUZXh0dXJlKCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHRleHR1cmUpOwotICAgICAgICAg
ICAgICAgIGlmICh0ZXh0dXJlLT5nZXRUYXJnZXQoKSA9PSBHTF9URVhUVVJFX0NVQkVfTUFQICYm
ICF0ZXh0dXJlLT5pc0N1YmVDb21wbGV0ZSgpKQorICAgICAgICAgICAgICAgIGlmICh0ZXh0dXJl
LT5nZXRUYXJnZXQoKSA9PSBHTF9URVhUVVJFX0NVQkVfTUFQICYmCisgICAgICAgICAgICAgICAg
ICAgICF0ZXh0dXJlLT5nZXRUZXh0dXJlU3RhdGUoKS5pc0N1YmVDb21wbGV0ZSgpKQogICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lO
Q09NUExFVEVfQVRUQUNITUVOVDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBlbHNlIGlmIChjb2xvckF0dGFjaG1lbnQudHlwZSgpID09IEdMX1JFTkRFUkJV
RkZFUikKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoIWZvcm1hdENhcHMucmVu
ZGVyYWJsZSB8fCBmb3JtYXRJbmZvLmRlcHRoQml0cyA+IDAgfHwgZm9ybWF0SW5mby5zdGVuY2ls
Qml0cyA+IDApCisgICAgICAgICAgICAgICAgaWYgKCFmb3JtYXRDYXBzLnJlbmRlcmFibGUgfHwg
Zm9ybWF0LmluZm8tPmRlcHRoQml0cyA+IDAgfHwKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0
LmluZm8tPnN0ZW5jaWxCaXRzID4gMCkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7CiAgICAg
ICAgICAgICAgICAgfQpAQCAtNDU5LDkgKzU1MSw5IEBAIEdMZW51bSBGcmFtZWJ1ZmZlcjo6Y2hl
Y2tTdGF0dXMoY29uc3QgZ2wKIAogICAgICAgICAgICAgICAgIC8vIGluIEdMRVMgMi4wLCBhbGwg
Y29sb3IgYXR0YWNobWVudHMgYXR0YWNobWVudHMgbXVzdCBoYXZlIHRoZSBzYW1lIG51bWJlciBv
ZiBiaXRwbGFuZXMKICAgICAgICAgICAgICAgICAvLyBpbiBHTEVTIDMuMCwgdGhlcmUgaXMgbm8g
c3VjaCByZXN0cmljdGlvbgotICAgICAgICAgICAgICAgIGlmIChkYXRhLmNsaWVudFZlcnNpb24g
PCAzKQorICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8
IDMpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAoZm9ybWF0SW5m
by5waXhlbEJ5dGVzICE9IGNvbG9yYnVmZmVyU2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGZvcm1hdC5pbmZvLT5waXhlbEJ5dGVzICE9IGNvbG9yYnVmZmVyU2l6ZSkKICAgICAgICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVS
X1VOU1VQUE9SVEVEOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC00NzAsMTMgKzU2MiwxMyBA
QCBHTGVudW0gRnJhbWVidWZmZXI6OmNoZWNrU3RhdHVzKGNvbnN0IGdsCiAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgc2FtcGxlcyA9IGNvbG9yQXR0YWNo
bWVudC5nZXRTYW1wbGVzKCk7Ci0gICAgICAgICAgICAgICAgY29sb3JidWZmZXJTaXplID0gZm9y
bWF0SW5mby5waXhlbEJ5dGVzOworICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyU2l6ZSAgID0g
Zm9ybWF0LmluZm8tPnBpeGVsQnl0ZXM7CiAgICAgICAgICAgICAgICAgbWlzc2luZ0F0dGFjaG1l
bnQgPSBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIGNvbnN0
IEZyYW1lYnVmZmVyQXR0YWNobWVudCAmZGVwdGhBdHRhY2htZW50ID0gbURhdGEubURlcHRoQXR0
YWNobWVudDsKKyAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgJmRlcHRoQXR0YWNobWVu
dCA9IG1TdGF0ZS5tRGVwdGhBdHRhY2htZW50OwogICAgIGlmIChkZXB0aEF0dGFjaG1lbnQuaXNB
dHRhY2hlZCgpKQogICAgIHsKICAgICAgICAgY29uc3QgRXh0ZW50cyAmc2l6ZSA9IGRlcHRoQXR0
YWNobWVudC5nZXRTaXplKCk7CkBAIC00ODUsMTMgKzU3NywxMiBAQCBHTGVudW0gRnJhbWVidWZm
ZXI6OmNoZWNrU3RhdHVzKGNvbnN0IGdsCiAgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZG
RVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOwogICAgICAgICB9CiAKLSAgICAgICAgR0xlbnVtIGlu
dGVybmFsZm9ybWF0ID0gZGVwdGhBdHRhY2htZW50LmdldEludGVybmFsRm9ybWF0KCk7Ci0gICAg
ICAgIGNvbnN0IFRleHR1cmVDYXBzICZmb3JtYXRDYXBzID0gZGF0YS50ZXh0dXJlQ2Fwcy0+Z2V0
KGludGVybmFsZm9ybWF0KTsKLSAgICAgICAgY29uc3QgSW50ZXJuYWxGb3JtYXQgJmZvcm1hdElu
Zm8gPSBHZXRJbnRlcm5hbEZvcm1hdEluZm8oaW50ZXJuYWxmb3JtYXQpOworICAgICAgICBjb25z
dCBGb3JtYXQgJmZvcm1hdCAgICAgICAgICA9IGRlcHRoQXR0YWNobWVudC5nZXRGb3JtYXQoKTsK
KyAgICAgICAgY29uc3QgVGV4dHVyZUNhcHMgJmZvcm1hdENhcHMgPSBzdGF0ZS5nZXRUZXh0dXJl
Q2FwKGZvcm1hdC5hc1NpemVkKCkpOwogICAgICAgICBpZiAoZGVwdGhBdHRhY2htZW50LnR5cGUo
KSA9PSBHTF9URVhUVVJFKQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBkZXB0aCB0ZXh0dXJl
IGF0dGFjaG1lbnRzIHJlcXVpcmUgT0VTL0FOR0xFX2RlcHRoX3RleHR1cmUKLSAgICAgICAgICAg
IGlmICghZGF0YS5leHRlbnNpb25zLT5kZXB0aFRleHR1cmVzKQorICAgICAgICAgICAgaWYgKCFz
dGF0ZS5nZXRFeHRlbnNpb25zKCkuZGVwdGhUZXh0dXJlcykKICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOwog
ICAgICAgICAgICAgfQpAQCAtNTAxLDE0ICs1OTIsMTQgQEAgR0xlbnVtIEZyYW1lYnVmZmVyOjpj
aGVja1N0YXR1cyhjb25zdCBnbAogICAgICAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZF
Ul9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlm
IChmb3JtYXRJbmZvLmRlcHRoQml0cyA9PSAwKQorICAgICAgICAgICAgaWYgKGZvcm1hdC5pbmZv
LT5kZXB0aEJpdHMgPT0gMCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICByZXR1cm4g
R0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGRlcHRoQXR0YWNobWVudC50eXBlKCkgPT0gR0xfUkVO
REVSQlVGRkVSKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIWZvcm1hdENhcHMucmVuZGVy
YWJsZSB8fCBmb3JtYXRJbmZvLmRlcHRoQml0cyA9PSAwKQorICAgICAgICAgICAgaWYgKCFmb3Jt
YXRDYXBzLnJlbmRlcmFibGUgfHwgZm9ybWF0LmluZm8tPmRlcHRoQml0cyA9PSAwKQogICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRF
X0FUVEFDSE1FTlQ7CiAgICAgICAgICAgICB9CkBAIC01MjEsMTEgKzYxMiwyMSBAQCBHTGVudW0g
RnJhbWVidWZmZXI6OmNoZWNrU3RhdHVzKGNvbnN0IGdsCiAgICAgICAgIH0KICAgICAgICAgZWxz
ZSBpZiAoc2FtcGxlcyAhPSBkZXB0aEF0dGFjaG1lbnQuZ2V0U2FtcGxlcygpKQogICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NVUxUSVNBTVBM
RV9BTkdMRTsKKyAgICAgICAgICAgIC8vIENIUk9NSVVNX2ZyYW1lYnVmZmVyX21peGVkX3NhbXBs
ZXMgYWxsb3dzIGEgZnJhbWVidWZmZXIgdG8gYmUKKyAgICAgICAgICAgIC8vIGNvbnNpZGVyZWQg
Y29tcGxldGUgd2hlbiBpdHMgZGVwdGggb3Igc3RlbmNpbCBzYW1wbGVzIGFyZSBhCisgICAgICAg
ICAgICAvLyBtdWx0aXBsZSBvZiB0aGUgbnVtYmVyIG9mIGNvbG9yIHNhbXBsZXMuCisgICAgICAg
ICAgICBjb25zdCBib29sIG1peGVkU2FtcGxlcyA9IHN0YXRlLmdldEV4dGVuc2lvbnMoKS5mcmFt
ZWJ1ZmZlck1peGVkU2FtcGxlczsKKyAgICAgICAgICAgIGlmICghbWl4ZWRTYW1wbGVzKQorICAg
ICAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExF
X0FOR0xFOworCisgICAgICAgICAgICBjb25zdCBpbnQgY29sb3JTYW1wbGVzID0gc2FtcGxlcyA/
IHNhbXBsZXMgOiAxOworICAgICAgICAgICAgY29uc3QgaW50IGRlcHRoU2FtcGxlcyA9IGRlcHRo
QXR0YWNobWVudC5nZXRTYW1wbGVzKCk7CisgICAgICAgICAgICBpZiAoKGRlcHRoU2FtcGxlcyAl
IGNvbG9yU2FtcGxlcykgIT0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZG
RVJfSU5DT01QTEVURV9NVUxUSVNBTVBMRV9BTkdMRTsKICAgICAgICAgfQogICAgIH0KIAotICAg
IGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAmc3RlbmNpbEF0dGFjaG1lbnQgPSBtRGF0YS5t
U3RlbmNpbEF0dGFjaG1lbnQ7CisgICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICZzdGVu
Y2lsQXR0YWNobWVudCA9IG1TdGF0ZS5tU3RlbmNpbEF0dGFjaG1lbnQ7CiAgICAgaWYgKHN0ZW5j
aWxBdHRhY2htZW50LmlzQXR0YWNoZWQoKSkKICAgICB7CiAgICAgICAgIGNvbnN0IEV4dGVudHMg
JnNpemUgPSBzdGVuY2lsQXR0YWNobWVudC5nZXRTaXplKCk7CkBAIC01MzQsMTQgKzYzNSwxMyBA
QCBHTGVudW0gRnJhbWVidWZmZXI6OmNoZWNrU3RhdHVzKGNvbnN0IGdsCiAgICAgICAgICAgICBy
ZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOwogICAgICAgICB9CiAK
LSAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gc3RlbmNpbEF0dGFjaG1lbnQuZ2V0SW50
ZXJuYWxGb3JtYXQoKTsKLSAgICAgICAgY29uc3QgVGV4dHVyZUNhcHMgJmZvcm1hdENhcHMgPSBk
YXRhLnRleHR1cmVDYXBzLT5nZXQoaW50ZXJuYWxmb3JtYXQpOwotICAgICAgICBjb25zdCBJbnRl
cm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9IEdldEludGVybmFsRm9ybWF0SW5mbyhpbnRlcm5hbGZv
cm1hdCk7CisgICAgICAgIGNvbnN0IEZvcm1hdCAmZm9ybWF0ICAgICAgICAgID0gc3RlbmNpbEF0
dGFjaG1lbnQuZ2V0Rm9ybWF0KCk7CisgICAgICAgIGNvbnN0IFRleHR1cmVDYXBzICZmb3JtYXRD
YXBzID0gc3RhdGUuZ2V0VGV4dHVyZUNhcChmb3JtYXQuYXNTaXplZCgpKTsKICAgICAgICAgaWYg
KHN0ZW5jaWxBdHRhY2htZW50LnR5cGUoKSA9PSBHTF9URVhUVVJFKQogICAgICAgICB7CiAgICAg
ICAgICAgICAvLyB0ZXh0dXJlIHN0ZW5jaWwgYXR0YWNobWVudHMgY29tZSBhbG9uZyBhcyBwYXJ0
CiAgICAgICAgICAgICAvLyBvZiBPRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwgKyBPRVMvQU5HTEVf
ZGVwdGhfdGV4dHVyZQotICAgICAgICAgICAgaWYgKCFkYXRhLmV4dGVuc2lvbnMtPmRlcHRoVGV4
dHVyZXMpCisgICAgICAgICAgICBpZiAoIXN0YXRlLmdldEV4dGVuc2lvbnMoKS5kZXB0aFRleHR1
cmVzKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZF
Ul9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7CiAgICAgICAgICAgICB9CkBAIC01NTEsMTQgKzY1MSwx
NCBAQCBHTGVudW0gRnJhbWVidWZmZXI6OmNoZWNrU3RhdHVzKGNvbnN0IGdsCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVDsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGZvcm1hdEluZm8uc3RlbmNpbEJpdHMgPT0gMCkK
KyAgICAgICAgICAgIGlmIChmb3JtYXQuaW5mby0+c3RlbmNpbEJpdHMgPT0gMCkKICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9B
VFRBQ0hNRU5UOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKHN0
ZW5jaWxBdHRhY2htZW50LnR5cGUoKSA9PSBHTF9SRU5ERVJCVUZGRVIpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICghZm9ybWF0Q2Fwcy5yZW5kZXJhYmxlIHx8IGZvcm1hdEluZm8uc3RlbmNp
bEJpdHMgPT0gMCkKKyAgICAgICAgICAgIGlmICghZm9ybWF0Q2Fwcy5yZW5kZXJhYmxlIHx8IGZv
cm1hdC5pbmZvLT5zdGVuY2lsQml0cyA9PSAwKQogICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7CiAgICAgICAg
ICAgICB9CkBAIC01NzEsNyArNjcxLDIyIEBAIEdMZW51bSBGcmFtZWJ1ZmZlcjo6Y2hlY2tTdGF0
dXMoY29uc3QgZ2wKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChzYW1wbGVzICE9IHN0ZW5j
aWxBdHRhY2htZW50LmdldFNhbXBsZXMoKSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEVfQU5HTEU7CisgICAgICAgICAg
ICAvLyBzZWUgdGhlIGNvbW1lbnRzIGluIGRlcHRoIGF0dGFjaG1lbnQgY2hlY2suCisgICAgICAg
ICAgICBjb25zdCBib29sIG1peGVkU2FtcGxlcyA9IHN0YXRlLmdldEV4dGVuc2lvbnMoKS5mcmFt
ZWJ1ZmZlck1peGVkU2FtcGxlczsKKyAgICAgICAgICAgIGlmICghbWl4ZWRTYW1wbGVzKQorICAg
ICAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExF
X0FOR0xFOworCisgICAgICAgICAgICBjb25zdCBpbnQgY29sb3JTYW1wbGVzICAgPSBzYW1wbGVz
ID8gc2FtcGxlcyA6IDE7CisgICAgICAgICAgICBjb25zdCBpbnQgc3RlbmNpbFNhbXBsZXMgPSBz
dGVuY2lsQXR0YWNobWVudC5nZXRTYW1wbGVzKCk7CisgICAgICAgICAgICBpZiAoKHN0ZW5jaWxT
YW1wbGVzICUgY29sb3JTYW1wbGVzKSAhPSAwKQorICAgICAgICAgICAgICAgIHJldHVybiBHTF9G
UkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExFX0FOR0xFOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gU3RhcnRpbmcgZnJvbSBFUyAzLjAgc3RlbmNpbCBhbmQgZGVwdGgsIGlmIHByZXNl
bnQsIHNob3VsZCBiZSB0aGUgc2FtZSBpbWFnZQorICAgICAgICBpZiAoc3RhdGUuZ2V0Q2xpZW50
TWFqb3JWZXJzaW9uKCkgPj0gMyAmJiBkZXB0aEF0dGFjaG1lbnQuaXNBdHRhY2hlZCgpICYmCisg
ICAgICAgICAgICBzdGVuY2lsQXR0YWNobWVudCAhPSBkZXB0aEF0dGFjaG1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRDsKICAgICAg
ICAgfQogICAgIH0KIApAQCAtNTgzLDcgKzY5OCw3IEBAIEdMZW51bSBGcmFtZWJ1ZmZlcjo6Y2hl
Y2tTdGF0dXMoY29uc3QgZ2wKIAogICAgIC8vIEluIEVTIDIuMCwgYWxsIGNvbG9yIGF0dGFjaG1l
bnRzIG11c3QgaGF2ZSB0aGUgc2FtZSB3aWR0aCBhbmQgaGVpZ2h0LgogICAgIC8vIEluIEVTIDMu
MCwgdGhlcmUgaXMgbm8gc3VjaCByZXN0cmljdGlvbi4KLSAgICBpZiAoZGF0YS5jbGllbnRWZXJz
aW9uIDwgMyAmJiAhbURhdGEuYXR0YWNobWVudHNIYXZlU2FtZURpbWVuc2lvbnMoKSkKKyAgICBp
ZiAoc3RhdGUuZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFtU3RhdGUuYXR0YWNobWVu
dHNIYXZlU2FtZURpbWVuc2lvbnMoKSkKICAgICB7CiAgICAgICAgIHJldHVybiBHTF9GUkFNRUJV
RkZFUl9JTkNPTVBMRVRFX0RJTUVOU0lPTlM7CiAgICAgfQpAQCAtNjEyLDY3ICs3MjcsNjcgQEAg
RXJyb3IgRnJhbWVidWZmZXI6OmludmFsaWRhdGVTdWIoc2l6ZV90IAogICAgIHJldHVybiBtSW1w
bC0+aW52YWxpZGF0ZVN1Yihjb3VudCwgYXR0YWNobWVudHMsIGFyZWEpOwogfQogCi1FcnJvciBG
cmFtZWJ1ZmZlcjo6Y2xlYXIoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIEdMYml0ZmllbGQgbWFzaykK
K0Vycm9yIEZyYW1lYnVmZmVyOjpjbGVhcihyeDo6Q29udGV4dEltcGwgKmNvbnRleHQsIEdMYml0
ZmllbGQgbWFzaykKIHsKLSAgICBpZiAoZGF0YS5zdGF0ZS0+aXNSYXN0ZXJpemVyRGlzY2FyZEVu
YWJsZWQoKSkKKyAgICBpZiAoY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmlzUmFzdGVyaXplckRpc2Nh
cmRFbmFibGVkKCkpCiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9S
KTsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogCi0gICAgcmV0dXJuIG1J
bXBsLT5jbGVhcihkYXRhLCBtYXNrKTsKKyAgICByZXR1cm4gbUltcGwtPmNsZWFyKGNvbnRleHQs
IG1hc2spOwogfQogCi1FcnJvciBGcmFtZWJ1ZmZlcjo6Y2xlYXJCdWZmZXJmdihjb25zdCBnbDo6
RGF0YSAmZGF0YSwKK0Vycm9yIEZyYW1lYnVmZmVyOjpjbGVhckJ1ZmZlcmZ2KHJ4OjpDb250ZXh0
SW1wbCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBi
dWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWVz
KQogewotICAgIGlmIChkYXRhLnN0YXRlLT5pc1Jhc3Rlcml6ZXJEaXNjYXJkRW5hYmxlZCgpKQor
ICAgIGlmIChjb250ZXh0LT5nZXRHTFN0YXRlKCkuaXNSYXN0ZXJpemVyRGlzY2FyZEVuYWJsZWQo
KSkKICAgICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAg
ICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiAKLSAgICByZXR1cm4gbUltcGwtPmNsZWFy
QnVmZmVyZnYoZGF0YSwgYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMpOworICAgIHJldHVybiBt
SW1wbC0+Y2xlYXJCdWZmZXJmdihjb250ZXh0LCBidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlcyk7
CiB9CiAKLUVycm9yIEZyYW1lYnVmZmVyOjpjbGVhckJ1ZmZlcnVpdihjb25zdCBnbDo6RGF0YSAm
ZGF0YSwKK0Vycm9yIEZyYW1lYnVmZmVyOjpjbGVhckJ1ZmZlcnVpdihyeDo6Q29udGV4dEltcGwg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZl
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWVzKQog
ewotICAgIGlmIChkYXRhLnN0YXRlLT5pc1Jhc3Rlcml6ZXJEaXNjYXJkRW5hYmxlZCgpKQorICAg
IGlmIChjb250ZXh0LT5nZXRHTFN0YXRlKCkuaXNSYXN0ZXJpemVyRGlzY2FyZEVuYWJsZWQoKSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICBy
ZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiAKLSAgICByZXR1cm4gbUltcGwtPmNsZWFyQnVm
ZmVydWl2KGRhdGEsIGJ1ZmZlciwgZHJhd2J1ZmZlciwgdmFsdWVzKTsKKyAgICByZXR1cm4gbUlt
cGwtPmNsZWFyQnVmZmVydWl2KGNvbnRleHQsIGJ1ZmZlciwgZHJhd2J1ZmZlciwgdmFsdWVzKTsK
IH0KIAotRXJyb3IgRnJhbWVidWZmZXI6OmNsZWFyQnVmZmVyaXYoY29uc3QgZ2w6OkRhdGEgJmRh
dGEsCitFcnJvciBGcmFtZWJ1ZmZlcjo6Y2xlYXJCdWZmZXJpdihyeDo6Q29udGV4dEltcGwgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYnVmZmVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHJhd2J1ZmZlciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZXMpCiB7Ci0gICAg
aWYgKGRhdGEuc3RhdGUtPmlzUmFzdGVyaXplckRpc2NhcmRFbmFibGVkKCkpCisgICAgaWYgKGNv
bnRleHQtPmdldEdMU3RhdGUoKS5pc1Jhc3Rlcml6ZXJEaXNjYXJkRW5hYmxlZCgpKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBn
bDo6Tm9FcnJvcigpOwogICAgIH0KIAotICAgIHJldHVybiBtSW1wbC0+Y2xlYXJCdWZmZXJpdihk
YXRhLCBidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlcyk7CisgICAgcmV0dXJuIG1JbXBsLT5jbGVh
ckJ1ZmZlcml2KGNvbnRleHQsIGJ1ZmZlciwgZHJhd2J1ZmZlciwgdmFsdWVzKTsKIH0KIAotRXJy
b3IgRnJhbWVidWZmZXI6OmNsZWFyQnVmZmVyZmkoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCitFcnJv
ciBGcmFtZWJ1ZmZlcjo6Y2xlYXJCdWZmZXJmaShyeDo6Q29udGV4dEltcGwgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYnVmZmVyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHJhd2J1ZmZlciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgZGVwdGgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBzdGVuY2lsKQogewotICAgIGlmIChkYXRhLnN0YXRlLT5pc1Jhc3Rl
cml6ZXJEaXNjYXJkRW5hYmxlZCgpKQorICAgIGlmIChjb250ZXh0LT5nZXRHTFN0YXRlKCkuaXNS
YXN0ZXJpemVyRGlzY2FyZEVuYWJsZWQoKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfTk9fRVJST1IpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiAK
LSAgICByZXR1cm4gbUltcGwtPmNsZWFyQnVmZmVyZmkoZGF0YSwgYnVmZmVyLCBkcmF3YnVmZmVy
LCBkZXB0aCwgc3RlbmNpbCk7CisgICAgcmV0dXJuIG1JbXBsLT5jbGVhckJ1ZmZlcmZpKGNvbnRl
eHQsIGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGVwdGgsIHN0ZW5jaWwpOwogfQogCiBHTGVudW0gRnJh
bWVidWZmZXI6OmdldEltcGxlbWVudGF0aW9uQ29sb3JSZWFkRm9ybWF0KCkgY29uc3QKQEAgLTY4
NSw0OSArODAwLDQzIEBAIEdMZW51bSBGcmFtZWJ1ZmZlcjo6Z2V0SW1wbGVtZW50YXRpb25Db2wK
ICAgICByZXR1cm4gbUltcGwtPmdldEltcGxlbWVudGF0aW9uQ29sb3JSZWFkVHlwZSgpOwogfQog
Ci1FcnJvciBGcmFtZWJ1ZmZlcjo6cmVhZFBpeGVscyhjb25zdCBTdGF0ZSAmc3RhdGUsCitFcnJv
ciBGcmFtZWJ1ZmZlcjo6cmVhZFBpeGVscyhyeDo6Q29udGV4dEltcGwgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZWN0YW5nbGUgJmFyZWEsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THZvaWQgKnBpeGVscykgY29uc3QKIHsKLSAgICBFcnJvciBlcnJvciA9IG1JbXBsLT5yZWFkUGl4
ZWxzKHN0YXRlLCBhcmVhLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7Ci0gICAgaWYgKGVycm9yLmlz
RXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVf
VFJZKG1JbXBsLT5yZWFkUGl4ZWxzKGNvbnRleHQsIGFyZWEsIGZvcm1hdCwgdHlwZSwgcGl4ZWxz
KSk7CiAKLSAgICBCdWZmZXIgKnVucGFja0J1ZmZlciA9IHN0YXRlLmdldFVucGFja1N0YXRlKCku
cGl4ZWxCdWZmZXIuZ2V0KCk7CisgICAgQnVmZmVyICp1bnBhY2tCdWZmZXIgPSBjb250ZXh0LT5n
ZXRHTFN0YXRlKCkuZ2V0VW5wYWNrU3RhdGUoKS5waXhlbEJ1ZmZlci5nZXQoKTsKICAgICBpZiAo
dW5wYWNrQnVmZmVyKQogICAgIHsKICAgICAgICAgdW5wYWNrQnVmZmVyLT5vblBpeGVsVW5wYWNr
KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIEVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4g
Tm9FcnJvcigpOwogfQogCi1FcnJvciBGcmFtZWJ1ZmZlcjo6YmxpdChjb25zdCBTdGF0ZSAmc3Rh
dGUsCitFcnJvciBGcmFtZWJ1ZmZlcjo6YmxpdChyeDo6Q29udGV4dEltcGwgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBSZWN0YW5nbGUgJmRlc3RBcmVhLAogICAgICAgICAg
ICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGZpbHRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZyYW1lYnVmZmVy
ICpzb3VyY2VGcmFtZWJ1ZmZlcikKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWx0
ZXIpCiB7Ci0gICAgcmV0dXJuIG1JbXBsLT5ibGl0KHN0YXRlLCBzb3VyY2VBcmVhLCBkZXN0QXJl
YSwgbWFzaywgZmlsdGVyLCBzb3VyY2VGcmFtZWJ1ZmZlcik7CisgICAgcmV0dXJuIG1JbXBsLT5i
bGl0KGNvbnRleHQsIHNvdXJjZUFyZWEsIGRlc3RBcmVhLCBtYXNrLCBmaWx0ZXIpOwogfQogCi1p
bnQgRnJhbWVidWZmZXI6OmdldFNhbXBsZXMoY29uc3QgZ2w6OkRhdGEgJmRhdGEpIGNvbnN0Citp
bnQgRnJhbWVidWZmZXI6OmdldFNhbXBsZXMoY29uc3QgQ29udGV4dFN0YXRlICZzdGF0ZSkKIHsK
LSAgICBpZiAoY2hlY2tTdGF0dXMoZGF0YSkgPT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpCisg
ICAgaWYgKGNvbXBsZXRlKHN0YXRlKSkKICAgICB7Ci0gICAgICAgIC8vIGZvciBhIGNvbXBsZXRl
IGZyYW1lYnVmZmVyLCBhbGwgYXR0YWNobWVudHMgbXVzdCBoYXZlIHRoZSBzYW1lIHNhbXBsZSBj
b3VudAotICAgICAgICAvLyBpbiB0aGlzIGNhc2UgcmV0dXJuIHRoZSBmaXJzdCBub256ZXJvIHNh
bXBsZSBzaXplCi0gICAgICAgIGZvciAoY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICZjb2xv
ckF0dGFjaG1lbnQgOiBtRGF0YS5tQ29sb3JBdHRhY2htZW50cykKKyAgICAgICAgLy8gRm9yIGEg
Y29tcGxldGUgZnJhbWVidWZmZXIsIGFsbCBhdHRhY2htZW50cyBtdXN0IGhhdmUgdGhlIHNhbWUg
c2FtcGxlIGNvdW50LgorICAgICAgICAvLyBJbiB0aGlzIGNhc2UgcmV0dXJuIHRoZSBmaXJzdCBu
b256ZXJvIHNhbXBsZSBzaXplLgorICAgICAgICBjb25zdCBhdXRvICpmaXJzdENvbG9yQXR0YWNo
bWVudCA9IG1TdGF0ZS5nZXRGaXJzdENvbG9yQXR0YWNobWVudCgpOworICAgICAgICBpZiAoZmly
c3RDb2xvckF0dGFjaG1lbnQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChjb2xvckF0dGFj
aG1lbnQuaXNBdHRhY2hlZCgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVy
biBjb2xvckF0dGFjaG1lbnQuZ2V0U2FtcGxlcygpOwotICAgICAgICAgICAgfQorICAgICAgICAg
ICAgQVNTRVJUKGZpcnN0Q29sb3JBdHRhY2htZW50LT5pc0F0dGFjaGVkKCkpOworICAgICAgICAg
ICAgcmV0dXJuIGZpcnN0Q29sb3JBdHRhY2htZW50LT5nZXRTYW1wbGVzKCk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTczNiw3ICs4NDUsNyBAQCBpbnQgRnJhbWVidWZmZXI6OmdldFNhbXBsZXMo
Y29uc3QgZ2w6OkRhCiAKIGJvb2wgRnJhbWVidWZmZXI6Omhhc1ZhbGlkRGVwdGhTdGVuY2lsKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbURhdGEuZ2V0RGVwdGhTdGVuY2lsQXR0YWNobWVudCgpICE9
IG51bGxwdHI7CisgICAgcmV0dXJuIG1TdGF0ZS5nZXREZXB0aFN0ZW5jaWxBdHRhY2htZW50KCkg
IT0gbnVsbHB0cjsKIH0KIAogdm9pZCBGcmFtZWJ1ZmZlcjo6c2V0QXR0YWNobWVudChHTGVudW0g
dHlwZSwKQEAgLTc1MSwxOSArODYwLDIwIEBAIHZvaWQgRnJhbWVidWZmZXI6OnNldEF0dGFjaG1l
bnQoR0xlbnVtIHQKICAgICAgICAgaWYgKHJlc291cmNlKQogICAgICAgICB7CiAgICAgICAgICAg
ICBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OlRhcmdldCB0YXJnZXQoYmluZGluZywgdGV4dHVyZUlu
ZGV4KTsKLSAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCAgICAgICAgICAgID0gcmVz
b3VyY2UtPmdldEF0dGFjaG1lbnRJbnRlcm5hbEZvcm1hdCh0YXJnZXQpOwotICAgICAgICAgICAg
Y29uc3QgSW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBHZXRJbnRlcm5hbEZvcm1hdEluZm8o
aW50ZXJuYWxGb3JtYXQpOwotICAgICAgICAgICAgaWYgKGZvcm1hdEluZm8uZGVwdGhCaXRzID09
IDAgfHwgZm9ybWF0SW5mby5zdGVuY2lsQml0cyA9PSAwKQorICAgICAgICAgICAgY29uc3QgRm9y
bWF0ICZmb3JtYXQgPSByZXNvdXJjZS0+Z2V0QXR0YWNobWVudEZvcm1hdCh0YXJnZXQpOworICAg
ICAgICAgICAgaWYgKGZvcm1hdC5pbmZvLT5kZXB0aEJpdHMgPT0gMCB8fCBmb3JtYXQuaW5mby0+
c3RlbmNpbEJpdHMgPT0gMCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAvLyBBdHRh
Y2hpbmcgbnVsbHB0ciBkZXRhY2hlcyB0aGUgY3VycmVudCBhdHRhY2htZW50LgogICAgICAgICAg
ICAgICAgIGF0dGFjaG1lbnRPYmogPSBudWxscHRyOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKLSAgICAgICAgbURhdGEubURlcHRoQXR0YWNobWVudC5hdHRhY2godHlwZSwgYmluZGluZywg
dGV4dHVyZUluZGV4LCBhdHRhY2htZW50T2JqKTsKLSAgICAgICAgbURhdGEubVN0ZW5jaWxBdHRh
Y2htZW50LmF0dGFjaCh0eXBlLCBiaW5kaW5nLCB0ZXh0dXJlSW5kZXgsIGF0dGFjaG1lbnRPYmop
OworICAgICAgICBtU3RhdGUubURlcHRoQXR0YWNobWVudC5hdHRhY2godHlwZSwgYmluZGluZywg
dGV4dHVyZUluZGV4LCBhdHRhY2htZW50T2JqKTsKKyAgICAgICAgbVN0YXRlLm1TdGVuY2lsQXR0
YWNobWVudC5hdHRhY2godHlwZSwgYmluZGluZywgdGV4dHVyZUluZGV4LCBhdHRhY2htZW50T2Jq
KTsKICAgICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0RFUFRIX0FUVEFDSE1FTlQpOwog
ICAgICAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfU1RFTkNJTF9BVFRBQ0hNRU5UKTsKKyAg
ICAgICAgQmluZFJlc291cmNlQ2hhbm5lbCgmbURpcnR5RGVwdGhBdHRhY2htZW50QmluZGluZywg
cmVzb3VyY2UpOworICAgICAgICBCaW5kUmVzb3VyY2VDaGFubmVsKCZtRGlydHlTdGVuY2lsQXR0
YWNobWVudEJpbmRpbmcsIHJlc291cmNlKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKQEAgLTc3
MSwyNCArODgxLDI4IEBAIHZvaWQgRnJhbWVidWZmZXI6OnNldEF0dGFjaG1lbnQoR0xlbnVtIHQK
ICAgICAgICAgewogICAgICAgICAgICAgY2FzZSBHTF9ERVBUSDoKICAgICAgICAgICAgIGNhc2Ug
R0xfREVQVEhfQVRUQUNITUVOVDoKLSAgICAgICAgICAgICAgICBtRGF0YS5tRGVwdGhBdHRhY2ht
ZW50LmF0dGFjaCh0eXBlLCBiaW5kaW5nLCB0ZXh0dXJlSW5kZXgsIHJlc291cmNlKTsKKyAgICAg
ICAgICAgICAgICBtU3RhdGUubURlcHRoQXR0YWNobWVudC5hdHRhY2godHlwZSwgYmluZGluZywg
dGV4dHVyZUluZGV4LCByZXNvdXJjZSk7CiAgICAgICAgICAgICAgICAgbURpcnR5Qml0cy5zZXQo
RElSVFlfQklUX0RFUFRIX0FUVEFDSE1FTlQpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgQmluZFJlc291cmNlQ2hhbm5lbCgmbURpcnR5RGVwdGhBdHRhY2htZW50QmluZGlu
ZywgcmVzb3VyY2UpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBH
TF9TVEVOQ0lMOgogICAgICAgICAgICAgY2FzZSBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQ6Ci0gICAg
ICAgICAgICAgICAgbURhdGEubVN0ZW5jaWxBdHRhY2htZW50LmF0dGFjaCh0eXBlLCBiaW5kaW5n
LCB0ZXh0dXJlSW5kZXgsIHJlc291cmNlKTsKKyAgICAgICAgICAgICAgICBtU3RhdGUubVN0ZW5j
aWxBdHRhY2htZW50LmF0dGFjaCh0eXBlLCBiaW5kaW5nLCB0ZXh0dXJlSW5kZXgsIHJlc291cmNl
KTsKICAgICAgICAgICAgICAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfU1RFTkNJTF9BVFRB
Q0hNRU5UKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIEJpbmRSZXNvdXJj
ZUNoYW5uZWwoJm1EaXJ0eVN0ZW5jaWxBdHRhY2htZW50QmluZGluZywgcmVzb3VyY2UpOworICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBHTF9CQUNLOgotICAgICAgICAg
ICAgICAgIG1EYXRhLm1Db2xvckF0dGFjaG1lbnRzWzBdLmF0dGFjaCh0eXBlLCBiaW5kaW5nLCB0
ZXh0dXJlSW5kZXgsIHJlc291cmNlKTsKKyAgICAgICAgICAgICAgICBtU3RhdGUubUNvbG9yQXR0
YWNobWVudHNbMF0uYXR0YWNoKHR5cGUsIGJpbmRpbmcsIHRleHR1cmVJbmRleCwgcmVzb3VyY2Up
OwogICAgICAgICAgICAgICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9DT0xPUl9BVFRBQ0hN
RU5UXzApOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgLy8gTm8gbmVlZCBm
b3IgYSByZXNvdXJjZSBiaW5kaW5nIGZvciB0aGUgZGVmYXVsdCBGQk8sIGl0J3MgYWx3YXlzIGNv
bXBsZXRlLgorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBzaXplX3QgY29sb3JJbmRleCA9IGJpbmRpbmcg
LSBHTF9DT0xPUl9BVFRBQ0hNRU5UMDsKLSAgICAgICAgICAgICAgICBBU1NFUlQoY29sb3JJbmRl
eCA8IG1EYXRhLm1Db2xvckF0dGFjaG1lbnRzLnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgbURh
dGEubUNvbG9yQXR0YWNobWVudHNbY29sb3JJbmRleF0uYXR0YWNoKHR5cGUsIGJpbmRpbmcsIHRl
eHR1cmVJbmRleCwgcmVzb3VyY2UpOworICAgICAgICAgICAgICAgIEFTU0VSVChjb2xvckluZGV4
IDwgbVN0YXRlLm1Db2xvckF0dGFjaG1lbnRzLnNpemUoKSk7CisgICAgICAgICAgICAgICAgbVN0
YXRlLm1Db2xvckF0dGFjaG1lbnRzW2NvbG9ySW5kZXhdLmF0dGFjaCh0eXBlLCBiaW5kaW5nLCB0
ZXh0dXJlSW5kZXgsIHJlc291cmNlKTsKICAgICAgICAgICAgICAgICBtRGlydHlCaXRzLnNldChE
SVJUWV9CSVRfQ09MT1JfQVRUQUNITUVOVF8wICsgY29sb3JJbmRleCk7CisgICAgICAgICAgICAg
ICAgQmluZFJlc291cmNlQ2hhbm5lbCgmbURpcnR5Q29sb3JBdHRhY2htZW50QmluZGluZ3NbY29s
b3JJbmRleF0sIHJlc291cmNlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CkBAIC04MDAsMTMgKzkxNCwyNSBAQCB2b2lkIEZyYW1lYnVmZmVyOjpyZXNldEF0
dGFjaG1lbnQoR0xlbnVtCiAgICAgc2V0QXR0YWNobWVudChHTF9OT05FLCBiaW5kaW5nLCBJbWFn
ZUluZGV4OjpNYWtlSW52YWxpZCgpLCBudWxscHRyKTsKIH0KIAotdm9pZCBGcmFtZWJ1ZmZlcjo6
c3luY1N0YXRlKCkgY29uc3QKK3ZvaWQgRnJhbWVidWZmZXI6OnN5bmNTdGF0ZSgpCiB7CiAgICAg
aWYgKG1EaXJ0eUJpdHMuYW55KCkpCiAgICAgewogICAgICAgICBtSW1wbC0+c3luY1N0YXRlKG1E
aXJ0eUJpdHMpOwogICAgICAgICBtRGlydHlCaXRzLnJlc2V0KCk7CisgICAgICAgIG1DYWNoZWRT
dGF0dXMucmVzZXQoKTsKICAgICB9CiB9CiAKK3ZvaWQgRnJhbWVidWZmZXI6OnNpZ25hbChTaWdu
YWxUb2tlbiB0b2tlbikKK3sKKyAgICAvLyBUT09EKGptYWRpbGwpOiBNYWtlIHRoaXMgb25seSB1
cGRhdGUgaW5kaXZpZHVhbCBhdHRhY2htZW50cyB0byBkbyBsZXNzIHdvcmsuCisgICAgbUNhY2hl
ZFN0YXR1cy5yZXNldCgpOworfQorCitib29sIEZyYW1lYnVmZmVyOjpjb21wbGV0ZShjb25zdCBD
b250ZXh0U3RhdGUgJnN0YXRlKQoreworICAgIHJldHVybiAoY2hlY2tTdGF0dXMoc3RhdGUpID09
IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIGdsCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRnJhbWVidWZmZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRnJhbWVidWZm
ZXIuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL0ZyYW1lYnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyLDE2ICsxMiwxOSBAQAog
CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiY29tbW9uL09wdGlvbmFsLmgiCiAjaW5j
bHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Db25zdGFudHMu
aCIKICNpbmNsdWRlICJsaWJBTkdMRS9EZWJ1Zy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0Vycm9y
LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRnJhbWVidWZmZXJBdHRhY2htZW50LmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvUmVmQ291bnRPYmplY3QuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9zaWduYWxf
dXRpbHMuaCIKIAogbmFtZXNwYWNlIHJ4CiB7Ci1jbGFzcyBJbXBsRmFjdG9yeTsKK2NsYXNzIENv
bnRleHRJbXBsOworY2xhc3MgR0xJbXBsRmFjdG9yeTsKIGNsYXNzIEZyYW1lYnVmZmVySW1wbDsK
IGNsYXNzIFJlbmRlcmJ1ZmZlckltcGw7CiBjbGFzcyBTdXJmYWNlSW1wbDsKQEAgLTM1LDY1ICsz
OCw3MiBAQCBjbGFzcyBTdXJmYWNlOwogbmFtZXNwYWNlIGdsCiB7CiBjbGFzcyBDb250ZXh0Owor
Y2xhc3MgRnJhbWVidWZmZXI7CiBjbGFzcyBSZW5kZXJidWZmZXI7CiBjbGFzcyBTdGF0ZTsKIGNs
YXNzIFRleHR1cmU7CiBjbGFzcyBUZXh0dXJlQ2Fwc01hcDsKIHN0cnVjdCBDYXBzOwotc3RydWN0
IERhdGE7CitjbGFzcyBDb250ZXh0U3RhdGU7CiBzdHJ1Y3QgRXh0ZW5zaW9uczsKIHN0cnVjdCBJ
bWFnZUluZGV4Owogc3RydWN0IFJlY3RhbmdsZTsKIAotY2xhc3MgRnJhbWVidWZmZXIgZmluYWwg
OiBwdWJsaWMgTGFiZWxlZE9iamVjdAorY2xhc3MgRnJhbWVidWZmZXJTdGF0ZSBmaW5hbCA6IGFu
Z2xlOjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6CisgICAgRnJhbWVidWZmZXJTdGF0ZSgpOwor
ICAgIGV4cGxpY2l0IEZyYW1lYnVmZmVyU3RhdGUoY29uc3QgQ2FwcyAmY2Fwcyk7CisgICAgfkZy
YW1lYnVmZmVyU3RhdGUoKTsKIAotICAgIGNsYXNzIERhdGEgZmluYWwgOiBhbmdsZTo6Tm9uQ29w
eWFibGUKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmZ2V0TGFiZWwoKTsKKworICAgIGNvbnN0IEZy
YW1lYnVmZmVyQXR0YWNobWVudCAqZ2V0QXR0YWNobWVudChHTGVudW0gYXR0YWNobWVudCkgY29u
c3Q7CisgICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpnZXRSZWFkQXR0YWNobWVudCgp
IGNvbnN0OworICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqZ2V0Rmlyc3RDb2xvckF0
dGFjaG1lbnQoKSBjb25zdDsKKyAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmdldERl
cHRoT3JTdGVuY2lsQXR0YWNobWVudCgpIGNvbnN0OworICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0
YWNobWVudCAqZ2V0Q29sb3JBdHRhY2htZW50KHNpemVfdCBjb2xvckF0dGFjaG1lbnQpIGNvbnN0
OworICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqZ2V0RGVwdGhBdHRhY2htZW50KCkg
Y29uc3Q7CisgICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpnZXRTdGVuY2lsQXR0YWNo
bWVudCgpIGNvbnN0OworICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqZ2V0RGVwdGhT
dGVuY2lsQXR0YWNobWVudCgpIGNvbnN0OworCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8R0xlbnVt
PiAmZ2V0RHJhd0J1ZmZlclN0YXRlcygpIGNvbnN0IHsgcmV0dXJuIG1EcmF3QnVmZmVyU3RhdGVz
OyB9CisgICAgR0xlbnVtIGdldFJlYWRCdWZmZXJTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1SZWFk
QnVmZmVyU3RhdGU7IH0KKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxGcmFtZWJ1ZmZlckF0dGFjaG1l
bnQ+ICZnZXRDb2xvckF0dGFjaG1lbnRzKCkgY29uc3QKICAgICB7Ci0gICAgICBwdWJsaWM6Ci0g
ICAgICAgIGV4cGxpY2l0IERhdGEoKTsKLSAgICAgICAgZXhwbGljaXQgRGF0YShjb25zdCBDYXBz
ICZjYXBzKTsKLSAgICAgICAgfkRhdGEoKTsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAm
Z2V0TGFiZWwoKTsKLQotICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmdldFJl
YWRBdHRhY2htZW50KCkgY29uc3Q7Ci0gICAgICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVu
dCAqZ2V0Rmlyc3RDb2xvckF0dGFjaG1lbnQoKSBjb25zdDsKLSAgICAgICAgY29uc3QgRnJhbWVi
dWZmZXJBdHRhY2htZW50ICpnZXREZXB0aE9yU3RlbmNpbEF0dGFjaG1lbnQoKSBjb25zdDsKLSAg
ICAgICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpnZXRDb2xvckF0dGFjaG1lbnQoc2l6
ZV90IGNvbG9yQXR0YWNobWVudCkgY29uc3Q7Ci0gICAgICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0
YWNobWVudCAqZ2V0RGVwdGhBdHRhY2htZW50KCkgY29uc3Q7Ci0gICAgICAgIGNvbnN0IEZyYW1l
YnVmZmVyQXR0YWNobWVudCAqZ2V0U3RlbmNpbEF0dGFjaG1lbnQoKSBjb25zdDsKLSAgICAgICAg
Y29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpnZXREZXB0aFN0ZW5jaWxBdHRhY2htZW50KCkg
Y29uc3Q7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8R0xlbnVtPiAmZ2V0RHJhd0J1ZmZl
clN0YXRlcygpIGNvbnN0IHsgcmV0dXJuIG1EcmF3QnVmZmVyU3RhdGVzOyB9Ci0gICAgICAgIEdM
ZW51bSBnZXRSZWFkQnVmZmVyU3RhdGUoKSBjb25zdCB7IHJldHVybiBtUmVhZEJ1ZmZlclN0YXRl
OyB9Ci0gICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEZyYW1lYnVmZmVyQXR0YWNobWVudD4gJmdl
dENvbG9yQXR0YWNobWVudHMoKSBjb25zdCB7IHJldHVybiBtQ29sb3JBdHRhY2htZW50czsgfQot
Ci0gICAgICAgIGJvb2wgYXR0YWNobWVudHNIYXZlU2FtZURpbWVuc2lvbnMoKSBjb25zdDsKLQot
ICAgICAgcHJpdmF0ZToKLSAgICAgICAgZnJpZW5kIGNsYXNzIEZyYW1lYnVmZmVyOwotCi0gICAg
ICAgIHN0ZDo6c3RyaW5nIG1MYWJlbDsKLQotICAgICAgICBzdGQ6OnZlY3RvcjxGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnQ+IG1Db2xvckF0dGFjaG1lbnRzOwotICAgICAgICBGcmFtZWJ1ZmZlckF0dGFj
aG1lbnQgbURlcHRoQXR0YWNobWVudDsKLSAgICAgICAgRnJhbWVidWZmZXJBdHRhY2htZW50IG1T
dGVuY2lsQXR0YWNobWVudDsKKyAgICAgICAgcmV0dXJuIG1Db2xvckF0dGFjaG1lbnRzOworICAg
IH0KIAotICAgICAgICBzdGQ6OnZlY3RvcjxHTGVudW0+IG1EcmF3QnVmZmVyU3RhdGVzOwotICAg
ICAgICBHTGVudW0gbVJlYWRCdWZmZXJTdGF0ZTsKLSAgICB9OworICAgIGJvb2wgYXR0YWNobWVu
dHNIYXZlU2FtZURpbWVuc2lvbnMoKSBjb25zdDsKKyAgICBib29sIGNvbG9yQXR0YWNobWVudHNB
cmVVbmlxdWVJbWFnZXMoKSBjb25zdDsKKworICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVu
dCAqZ2V0RHJhd0J1ZmZlcihzaXplX3QgZHJhd0J1ZmZlcklkeCkgY29uc3Q7CisgICAgc2l6ZV90
IGdldERyYXdCdWZmZXJDb3VudCgpIGNvbnN0OworCisgIHByaXZhdGU6CisgICAgZnJpZW5kIGNs
YXNzIEZyYW1lYnVmZmVyOwogCi0gICAgRnJhbWVidWZmZXIoY29uc3QgQ2FwcyAmY2Fwcywgcng6
OkltcGxGYWN0b3J5ICpmYWN0b3J5LCBHTHVpbnQgaWQpOworICAgIHN0ZDo6c3RyaW5nIG1MYWJl
bDsKKworICAgIHN0ZDo6dmVjdG9yPEZyYW1lYnVmZmVyQXR0YWNobWVudD4gbUNvbG9yQXR0YWNo
bWVudHM7CisgICAgRnJhbWVidWZmZXJBdHRhY2htZW50IG1EZXB0aEF0dGFjaG1lbnQ7CisgICAg
RnJhbWVidWZmZXJBdHRhY2htZW50IG1TdGVuY2lsQXR0YWNobWVudDsKKworICAgIHN0ZDo6dmVj
dG9yPEdMZW51bT4gbURyYXdCdWZmZXJTdGF0ZXM7CisgICAgR0xlbnVtIG1SZWFkQnVmZmVyU3Rh
dGU7Cit9OworCitjbGFzcyBGcmFtZWJ1ZmZlciBmaW5hbCA6IHB1YmxpYyBMYWJlbGVkT2JqZWN0
LCBwdWJsaWMgYW5nbGU6OlNpZ25hbFJlY2VpdmVyCit7CisgIHB1YmxpYzoKKyAgICBGcmFtZWJ1
ZmZlcihjb25zdCBDYXBzICZjYXBzLCByeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwgR0x1aW50
IGlkKTsKICAgICBGcmFtZWJ1ZmZlcihyeDo6U3VyZmFjZUltcGwgKnN1cmZhY2UpOwogICAgIHZp
cnR1YWwgfkZyYW1lYnVmZmVyKCk7CiAKICAgICB2b2lkIHNldExhYmVsKGNvbnN0IHN0ZDo6c3Ry
aW5nICZsYWJlbCkgb3ZlcnJpZGU7CiAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmdldExhYmVsKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBjb25zdCByeDo6RnJhbWVidWZmZXJJbXBsICpnZXRJbXBs
ZW1lbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1JbXBsOyB9Ci0gICAgcng6OkZyYW1lYnVmZmVy
SW1wbCAqZ2V0SW1wbGVtZW50YXRpb24oKSB7IHJldHVybiBtSW1wbDsgfQorICAgIHJ4OjpGcmFt
ZWJ1ZmZlckltcGwgKmdldEltcGxlbWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbUltcGw7IH0K
IAogICAgIEdMdWludCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1JZDsgfQogCkBAIC0xMzAsMjcgKzE0
MCwzNiBAQCBjbGFzcyBGcmFtZWJ1ZmZlciBmaW5hbCA6IHB1YmxpYyBMYWJlbGVkCiAgICAgc2l6
ZV90IGdldE51bUNvbG9yQnVmZmVycygpIGNvbnN0OwogICAgIGJvb2wgaGFzRGVwdGgoKSBjb25z
dDsKICAgICBib29sIGhhc1N0ZW5jaWwoKSBjb25zdDsKLSAgICBpbnQgZ2V0U2FtcGxlcyhjb25z
dCBnbDo6RGF0YSAmZGF0YSkgY29uc3Q7CisKICAgICBib29sIHVzaW5nRXh0ZW5kZWREcmF3QnVm
ZmVycygpIGNvbnN0OwogCi0gICAgR0xlbnVtIGNoZWNrU3RhdHVzKGNvbnN0IGdsOjpEYXRhICZk
YXRhKSBjb25zdDsKKyAgICAvLyBUaGlzIG1ldGhvZCBjYWxscyBjaGVja1N0YXR1cy4KKyAgICBp
bnQgZ2V0U2FtcGxlcyhjb25zdCBDb250ZXh0U3RhdGUgJnN0YXRlKTsKKyAgICBHTGVudW0gY2hl
Y2tTdGF0dXMoY29uc3QgQ29udGV4dFN0YXRlICZzdGF0ZSk7CisKKyAgICAvLyBIZWxwZXIgZm9y
IGNoZWNrU3RhdHVzID09IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFLgorICAgIGJvb2wgY29tcGxl
dGUoY29uc3QgQ29udGV4dFN0YXRlICZzdGF0ZSk7CisKICAgICBib29sIGhhc1ZhbGlkRGVwdGhT
dGVuY2lsKCkgY29uc3Q7CiAKICAgICBFcnJvciBkaXNjYXJkKHNpemVfdCBjb3VudCwgY29uc3Qg
R0xlbnVtICphdHRhY2htZW50cyk7CiAgICAgRXJyb3IgaW52YWxpZGF0ZShzaXplX3QgY291bnQs
IGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpOwogICAgIEVycm9yIGludmFsaWRhdGVTdWIoc2l6
ZV90IGNvdW50LCBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzLCBjb25zdCBnbDo6UmVjdGFuZ2xl
ICZhcmVhKTsKIAotICAgIEVycm9yIGNsZWFyKGNvbnN0IGdsOjpEYXRhICZkYXRhLCBHTGJpdGZp
ZWxkIG1hc2spOwotICAgIEVycm9yIGNsZWFyQnVmZmVyZnYoY29uc3QgZ2w6OkRhdGEgJmRhdGEs
CisgICAgRXJyb3IgY2xlYXIocng6OkNvbnRleHRJbXBsICpjb250ZXh0LCBHTGJpdGZpZWxkIG1h
c2spOworICAgIEVycm9yIGNsZWFyQnVmZmVyZnYocng6OkNvbnRleHRJbXBsICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwKICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGRyYXdidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICp2YWx1ZXMpOwotICAgIEVycm9yIGNsZWFyQnVmZmVydWl2KGNvbnN0IGdsOjpEYXRh
ICZkYXRhLAorICAgIEVycm9yIGNsZWFyQnVmZmVydWl2KHJ4OjpDb250ZXh0SW1wbCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYnVmZmVyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0x1aW50ICp2YWx1ZXMpOwotICAgIEVycm9yIGNsZWFyQnVmZmVyaXYoY29uc3QgZ2w6
OkRhdGEgJmRhdGEsIEdMZW51bSBidWZmZXIsIEdMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdMaW50
ICp2YWx1ZXMpOwotICAgIEVycm9yIGNsZWFyQnVmZmVyZmkoY29uc3QgZ2w6OkRhdGEgJmRhdGEs
CisgICAgRXJyb3IgY2xlYXJCdWZmZXJpdihyeDo6Q29udGV4dEltcGwgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgZHJhd2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50
ICp2YWx1ZXMpOworICAgIEVycm9yIGNsZWFyQnVmZmVyZmkocng6OkNvbnRleHRJbXBsICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwKICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBH
TGZsb2F0IGRlcHRoLApAQCAtMTU4LDE4ICsxNzcsMTcgQEAgY2xhc3MgRnJhbWVidWZmZXIgZmlu
YWwgOiBwdWJsaWMgTGFiZWxlZAogCiAgICAgR0xlbnVtIGdldEltcGxlbWVudGF0aW9uQ29sb3JS
ZWFkRm9ybWF0KCkgY29uc3Q7CiAgICAgR0xlbnVtIGdldEltcGxlbWVudGF0aW9uQ29sb3JSZWFk
VHlwZSgpIGNvbnN0OwotICAgIEVycm9yIHJlYWRQaXhlbHMoY29uc3QgZ2w6OlN0YXRlICZzdGF0
ZSwKKyAgICBFcnJvciByZWFkUGl4ZWxzKHJ4OjpDb250ZXh0SW1wbCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmFyZWEsCiAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUs
CiAgICAgICAgICAgICAgICAgICAgICBHTHZvaWQgKnBpeGVscykgY29uc3Q7CiAKLSAgICBFcnJv
ciBibGl0KGNvbnN0IFN0YXRlICZzdGF0ZSwKKyAgICBFcnJvciBibGl0KHJ4OjpDb250ZXh0SW1w
bCAqY29udGV4dCwKICAgICAgICAgICAgICAgIGNvbnN0IFJlY3RhbmdsZSAmc291cmNlQXJlYSwK
ICAgICAgICAgICAgICAgIGNvbnN0IFJlY3RhbmdsZSAmZGVzdEFyZWEsCiAgICAgICAgICAgICAg
ICBHTGJpdGZpZWxkIG1hc2ssCi0gICAgICAgICAgICAgICBHTGVudW0gZmlsdGVyLAotICAgICAg
ICAgICAgICAgY29uc3QgRnJhbWVidWZmZXIgKnNvdXJjZUZyYW1lYnVmZmVyKTsKKyAgICAgICAg
ICAgICAgIEdMZW51bSBmaWx0ZXIpOwogCiAgICAgZW51bSBEaXJ0eUJpdFR5cGUKICAgICB7CkBA
IC0xODcsMTkgKzIwNSwzMSBAQCBjbGFzcyBGcmFtZWJ1ZmZlciBmaW5hbCA6IHB1YmxpYyBMYWJl
bGVkCiAgICAgdHlwZWRlZiBzdGQ6OmJpdHNldDxESVJUWV9CSVRfTUFYPiBEaXJ0eUJpdHM7CiAg
ICAgYm9vbCBoYXNBbnlEaXJ0eUJpdCgpIGNvbnN0IHsgcmV0dXJuIG1EaXJ0eUJpdHMuYW55KCk7
IH0KIAotICAgIHZvaWQgc3luY1N0YXRlKCkgY29uc3Q7CisgICAgdm9pZCBzeW5jU3RhdGUoKTsK
KworICAgIC8vIGFuZ2xlOjpTaWduYWxSZWNlaXZlciBpbXBsZW1lbnRhdGlvbgorICAgIHZvaWQg
c2lnbmFsKGFuZ2xlOjpTaWduYWxUb2tlbiB0b2tlbikgb3ZlcnJpZGU7CiAKLSAgcHJvdGVjdGVk
OgorICBwcml2YXRlOgogICAgIHZvaWQgZGV0YWNoUmVzb3VyY2VCeUlkKEdMZW51bSByZXNvdXJj
ZVR5cGUsIEdMdWludCByZXNvdXJjZUlkKTsKKyAgICB2b2lkIGRldGFjaE1hdGNoaW5nQXR0YWNo
bWVudChGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmF0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIG1hdGNoVHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgbWF0Y2hJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgZGlydHlCaXQpOworICAgIEdMZW51bSBjaGVja1N0YXR1c0ltcGwoY29u
c3QgQ29udGV4dFN0YXRlICZzdGF0ZSk7CiAKLSAgICBEYXRhIG1EYXRhOworICAgIEZyYW1lYnVm
ZmVyU3RhdGUgbVN0YXRlOwogICAgIHJ4OjpGcmFtZWJ1ZmZlckltcGwgKm1JbXBsOwogICAgIEdM
dWludCBtSWQ7CiAKLSAgICAvLyBUT0RPKGptYWRpbGwpOiBTZWUgaWYgd2UgY2FuIG1ha2UgdGhp
cyBub24tbXV0YWJsZS4KLSAgICBtdXRhYmxlIERpcnR5Qml0cyBtRGlydHlCaXRzOworICAgIE9w
dGlvbmFsPEdMZW51bT4gbUNhY2hlZFN0YXR1czsKKyAgICBzdGQ6OnZlY3RvcjxhbmdsZTo6Q2hh
bm5lbEJpbmRpbmc+IG1EaXJ0eUNvbG9yQXR0YWNobWVudEJpbmRpbmdzOworICAgIGFuZ2xlOjpD
aGFubmVsQmluZGluZyBtRGlydHlEZXB0aEF0dGFjaG1lbnRCaW5kaW5nOworICAgIGFuZ2xlOjpD
aGFubmVsQmluZGluZyBtRGlydHlTdGVuY2lsQXR0YWNobWVudEJpbmRpbmc7CisKKyAgICBEaXJ0
eUJpdHMgbURpcnR5Qml0czsKIH07CiAKLX0KK30gIC8vIG5hbWVzcGFjZSBnbAogCiAjZW5kaWYg
ICAvLyBMSUJBTkdMRV9GUkFNRUJVRkZFUl9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVu
dC5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNiw2
ICsxNiw3IEBACiAjaW5jbHVkZSAibGliQU5HTEUvVGV4dHVyZS5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL2Zvcm1hdHV0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvRnJhbWVidWZm
ZXJJbXBsLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvRnJhbWVidWZmZXJBdHRhY2ht
ZW50T2JqZWN0SW1wbC5oIgogCiBuYW1lc3BhY2UgZ2wKIHsKQEAgLTExNCw0MiArMTE1LDQyIEBA
IHZvaWQgRnJhbWVidWZmZXJBdHRhY2htZW50OjphdHRhY2goR0xlbnUKIAogR0x1aW50IEZyYW1l
YnVmZmVyQXR0YWNobWVudDo6Z2V0UmVkU2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEdldElu
dGVybmFsRm9ybWF0SW5mbyhnZXRJbnRlcm5hbEZvcm1hdCgpKS5yZWRCaXRzOworICAgIHJldHVy
biBnZXRGb3JtYXQoKS5pbmZvLT5yZWRCaXRzOwogfQogCiBHTHVpbnQgRnJhbWVidWZmZXJBdHRh
Y2htZW50OjpnZXRHcmVlblNpemUoKSBjb25zdAogewotICAgIHJldHVybiBHZXRJbnRlcm5hbEZv
cm1hdEluZm8oZ2V0SW50ZXJuYWxGb3JtYXQoKSkuZ3JlZW5CaXRzOworICAgIHJldHVybiBnZXRG
b3JtYXQoKS5pbmZvLT5ncmVlbkJpdHM7CiB9CiAKIEdMdWludCBGcmFtZWJ1ZmZlckF0dGFjaG1l
bnQ6OmdldEJsdWVTaXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gR2V0SW50ZXJuYWxGb3JtYXRJ
bmZvKGdldEludGVybmFsRm9ybWF0KCkpLmJsdWVCaXRzOworICAgIHJldHVybiBnZXRGb3JtYXQo
KS5pbmZvLT5ibHVlQml0czsKIH0KIAogR0x1aW50IEZyYW1lYnVmZmVyQXR0YWNobWVudDo6Z2V0
QWxwaGFTaXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gR2V0SW50ZXJuYWxGb3JtYXRJbmZvKGdl
dEludGVybmFsRm9ybWF0KCkpLmFscGhhQml0czsKKyAgICByZXR1cm4gZ2V0Rm9ybWF0KCkuaW5m
by0+YWxwaGFCaXRzOwogfQogCiBHTHVpbnQgRnJhbWVidWZmZXJBdHRhY2htZW50OjpnZXREZXB0
aFNpemUoKSBjb25zdAogewotICAgIHJldHVybiBHZXRJbnRlcm5hbEZvcm1hdEluZm8oZ2V0SW50
ZXJuYWxGb3JtYXQoKSkuZGVwdGhCaXRzOworICAgIHJldHVybiBnZXRGb3JtYXQoKS5pbmZvLT5k
ZXB0aEJpdHM7CiB9CiAKIEdMdWludCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OmdldFN0ZW5jaWxT
aXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gR2V0SW50ZXJuYWxGb3JtYXRJbmZvKGdldEludGVy
bmFsRm9ybWF0KCkpLnN0ZW5jaWxCaXRzOworICAgIHJldHVybiBnZXRGb3JtYXQoKS5pbmZvLT5z
dGVuY2lsQml0czsKIH0KIAogR0xlbnVtIEZyYW1lYnVmZmVyQXR0YWNobWVudDo6Z2V0Q29tcG9u
ZW50VHlwZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEdldEludGVybmFsRm9ybWF0SW5mbyhnZXRJ
bnRlcm5hbEZvcm1hdCgpKS5jb21wb25lbnRUeXBlOworICAgIHJldHVybiBnZXRGb3JtYXQoKS5p
bmZvLT5jb21wb25lbnRUeXBlOwogfQogCiBHTGVudW0gRnJhbWVidWZmZXJBdHRhY2htZW50Ojpn
ZXRDb2xvckVuY29kaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gR2V0SW50ZXJuYWxGb3JtYXRJ
bmZvKGdldEludGVybmFsRm9ybWF0KCkpLmNvbG9yRW5jb2Rpbmc7CisgICAgcmV0dXJuIGdldEZv
cm1hdCgpLmluZm8tPmNvbG9yRW5jb2Rpbmc7CiB9CiAKIEdMdWludCBGcmFtZWJ1ZmZlckF0dGFj
aG1lbnQ6OmlkKCkgY29uc3QKQEAgLTIwNSw0ICsyMDYsMzYgQEAgY29uc3QgZWdsOjpTdXJmYWNl
ICpGcmFtZWJ1ZmZlckF0dGFjaG1lbgogICAgIHJldHVybiByeDo6R2V0QXM8ZWdsOjpTdXJmYWNl
PihtUmVzb3VyY2UpOwogfQogCitib29sIEZyYW1lYnVmZmVyQXR0YWNobWVudDo6b3BlcmF0b3I9
PShjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgJm90aGVyKSBjb25zdAoreworICAgIGlmICht
UmVzb3VyY2UgIT0gb3RoZXIubVJlc291cmNlIHx8IG1UeXBlICE9IG90aGVyLm1UeXBlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChtVHlwZSA9PSBHTF9U
RVhUVVJFICYmIGdldFRleHR1cmVJbWFnZUluZGV4KCkgIT0gb3RoZXIuZ2V0VGV4dHVyZUltYWdl
SW5kZXgoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KKworYm9vbCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6Om9wZXJhdG9yIT0oY29u
c3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICZvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7Cit9CisKK0Vycm9yIEZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdDo6
Z2V0QXR0YWNobWVudFJlbmRlclRhcmdldCgKKyAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1l
bnQ6OlRhcmdldCAmdGFyZ2V0LAorICAgIHJ4OjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJU
YXJnZXQgKipydE91dCkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0QXR0YWNobWVudEltcGwoKS0+
Z2V0QXR0YWNobWVudFJlbmRlclRhcmdldCh0YXJnZXQsIHJ0T3V0KTsKK30KKworYW5nbGU6OkJy
b2FkY2FzdENoYW5uZWwgKkZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdDo6Z2V0RGlydHlDaGFu
bmVsKCkKK3sKKyAgICByZXR1cm4gJm1EaXJ0eUNoYW5uZWw7Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSBnbApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZyYW1lYnVm
ZmVyQXR0YWNobWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1lbnQuaAkocmV2aXNpb24gMjA3ODA0KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNSw2ICsxNSw3IEBACiAjaW5jbHVkZSAibGliQU5HTEUv
YW5nbGV0eXBlcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0Vycm9yLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvSW1hZ2VJbmRleC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3NpZ25hbF91dGlscy5oIgog
CiBuYW1lc3BhY2UgZWdsCiB7CkBAIC0zOCw2ICszOSw3IEBAIGNsYXNzIEZyYW1lYnVmZmVyQXR0
YWNobWVudE9iamVjdEltcGw7CiBuYW1lc3BhY2UgZ2wKIHsKIGNsYXNzIEZyYW1lYnVmZmVyQXR0
YWNobWVudE9iamVjdDsKK3N0cnVjdCBGb3JtYXQ7CiBjbGFzcyBSZW5kZXJidWZmZXI7CiBjbGFz
cyBUZXh0dXJlOwogCkBAIC0xMTYsNyArMTE4LDcgQEAgY2xhc3MgRnJhbWVidWZmZXJBdHRhY2ht
ZW50IGZpbmFsCiAgICAgLy8gY29ycmVzcG9uZCB0byBhIDNEIHRleHR1cmUgZGVwdGggb3IgdGhl
IGxheWVyIGNvdW50IG9mIGEgMkQgYXJyYXkgdGV4dHVyZS4gRm9yIFN1cmZhY2VzIGFuZAogICAg
IC8vIFJlbmRlcmJ1ZmZlcnMsIGl0IHdpbGwgYWx3YXlzIGJlIDEuCiAgICAgRXh0ZW50cyBnZXRT
aXplKCkgY29uc3Q7Ci0gICAgR0xlbnVtIGdldEludGVybmFsRm9ybWF0KCkgY29uc3Q7CisgICAg
Y29uc3QgRm9ybWF0ICZnZXRGb3JtYXQoKSBjb25zdDsKICAgICBHTHNpemVpIGdldFNhbXBsZXMo
KSBjb25zdDsKICAgICBHTGVudW0gdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1UeXBlOyB9CiAgICAg
Ym9vbCBpc0F0dGFjaGVkKCkgY29uc3QgeyByZXR1cm4gbVR5cGUgIT0gR0xfTk9ORTsgfQpAQCAt
MTM2LDYgKzEzOCw5IEBAIGNsYXNzIEZyYW1lYnVmZmVyQXR0YWNobWVudCBmaW5hbAogICAgICAg
ICByZXR1cm4gZXJyb3I7CiAgICAgfQogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZyYW1l
YnVmZmVyQXR0YWNobWVudCAmb3RoZXIpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgJm90aGVyKSBjb25zdDsKKwogICBwcml2YXRlOgogICAg
IGdsOjpFcnJvciBnZXRSZW5kZXJUYXJnZXQocng6OkZyYW1lYnVmZmVyQXR0YWNobWVudFJlbmRl
clRhcmdldCAqKnJ0T3V0KSBjb25zdDsKIApAQCAtMTUyLDcgKzE1Nyw4IEBAIGNsYXNzIEZyYW1l
YnVmZmVyQXR0YWNobWVudE9iamVjdAogICAgIHZpcnR1YWwgfkZyYW1lYnVmZmVyQXR0YWNobWVu
dE9iamVjdCgpIHt9CiAKICAgICB2aXJ0dWFsIEV4dGVudHMgZ2V0QXR0YWNobWVudFNpemUoY29u
c3QgRnJhbWVidWZmZXJBdHRhY2htZW50OjpUYXJnZXQgJnRhcmdldCkgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgR0xlbnVtIGdldEF0dGFjaG1lbnRJbnRlcm5hbEZvcm1hdChjb25zdCBGcmFtZWJ1
ZmZlckF0dGFjaG1lbnQ6OlRhcmdldCAmdGFyZ2V0KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBj
b25zdCBGb3JtYXQgJmdldEF0dGFjaG1lbnRGb3JtYXQoCisgICAgICAgIGNvbnN0IEZyYW1lYnVm
ZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQpIGNvbnN0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gMDsKICAgICB2aXJ0dWFsIEdMc2l6ZWkgZ2V0QXR0YWNobWVudFNhbXBs
ZXMoY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50OjpUYXJnZXQgJnRhcmdldCkgY29uc3QgPSAw
OwogCiAgICAgdmlydHVhbCB2b2lkIG9uQXR0YWNoKCkgPSAwOwpAQCAtMTYyLDggKzE2OCwxMiBA
QCBjbGFzcyBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3QKICAgICBFcnJvciBnZXRBdHRhY2ht
ZW50UmVuZGVyVGFyZ2V0KGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJn
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByeDo6RnJhbWVidWZmZXJB
dHRhY2htZW50UmVuZGVyVGFyZ2V0ICoqcnRPdXQpIGNvbnN0OwogCisgICAgYW5nbGU6OkJyb2Fk
Y2FzdENoYW5uZWwgKmdldERpcnR5Q2hhbm5lbCgpOworCiAgIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIHJ4OjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3RJbXBsICpnZXRBdHRhY2htZW50SW1w
bCgpIGNvbnN0ID0gMDsKKworICAgIGFuZ2xlOjpCcm9hZGNhc3RDaGFubmVsIG1EaXJ0eUNoYW5u
ZWw7CiB9OwogCiBpbmxpbmUgRXh0ZW50cyBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OmdldFNpemUo
KSBjb25zdApAQCAtMTcxLDkgKzE4MSw5IEBAIGlubGluZSBFeHRlbnRzIEZyYW1lYnVmZmVyQXR0
YWNobWVudDo6Z2UKICAgICByZXR1cm4gbVJlc291cmNlLT5nZXRBdHRhY2htZW50U2l6ZShtVGFy
Z2V0KTsKIH0KIAotaW5saW5lIEdMZW51bSBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OmdldEludGVy
bmFsRm9ybWF0KCkgY29uc3QKK2lubGluZSBjb25zdCBGb3JtYXQgJkZyYW1lYnVmZmVyQXR0YWNo
bWVudDo6Z2V0Rm9ybWF0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbVJlc291cmNlLT5nZXRBdHRh
Y2htZW50SW50ZXJuYWxGb3JtYXQobVRhcmdldCk7CisgICAgcmV0dXJuIG1SZXNvdXJjZS0+Z2V0
QXR0YWNobWVudEZvcm1hdChtVGFyZ2V0KTsKIH0KIAogaW5saW5lIEdMc2l6ZWkgRnJhbWVidWZm
ZXJBdHRhY2htZW50OjpnZXRTYW1wbGVzKCkgY29uc3QKQEAgLTE4OCwzMSArMTk4LDQgQEAgaW5s
aW5lIGdsOjpFcnJvciBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OgogCiB9IC8vIG5hbWVzcGFjZSBn
bAogCi1uYW1lc3BhY2UgcngKLXsKLQotY2xhc3MgRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0
SW1wbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQotewotICBwdWJsaWM6Ci0gICAgRnJhbWVidWZmZXJB
dHRhY2htZW50T2JqZWN0SW1wbCgpIHt9Ci0gICAgdmlydHVhbCB+RnJhbWVidWZmZXJBdHRhY2ht
ZW50T2JqZWN0SW1wbCgpIHt9Ci0KLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBnZXRBdHRhY2htZW50
UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OlRhcmdldCAmdGFy
Z2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJh
bWVidWZmZXJBdHRhY2htZW50UmVuZGVyVGFyZ2V0ICoqcnRPdXQpID0gMDsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIHJ4Ci0KLW5hbWVzcGFjZSBnbAotewotCi1pbmxpbmUgRXJyb3IgRnJhbWVidWZm
ZXJBdHRhY2htZW50T2JqZWN0OjpnZXRBdHRhY2htZW50UmVuZGVyVGFyZ2V0KAotICAgIGNvbnN0
IEZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQsCi0gICAgcng6OkZyYW1lYnVm
ZmVyQXR0YWNobWVudFJlbmRlclRhcmdldCAqKnJ0T3V0KSBjb25zdAotewotICAgIHJldHVybiBn
ZXRBdHRhY2htZW50SW1wbCgpLT5nZXRBdHRhY2htZW50UmVuZGVyVGFyZ2V0KHRhcmdldCwgcnRP
dXQpOwotfQotCi19Ci0KICNlbmRpZiAvLyBMSUJBTkdMRV9GUkFNRUJVRkZFUkFUVEFDSE1FTlRf
SF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9IYW5kbGVBbGxv
Y2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9IYW5kbGVBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSGFuZGxlQWxsb2NhdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjMsMTEgKzYzLDE0IEBAIEdMdWludCBIYW5kbGVBbGxvY2F0b3I6OmFsbG9jYXRl
KCkKICAgICBHTHVpbnQgZnJlZUxpc3RIYW5kbGUgPSBsaXN0SXQtPmJlZ2luOwogICAgIEFTU0VS
VChmcmVlTGlzdEhhbmRsZSA+IDApOwogCi0gICAgbGlzdEl0LT5iZWdpbisrOwogICAgIGlmIChs
aXN0SXQtPmJlZ2luID09IGxpc3RJdC0+ZW5kKQogICAgIHsKICAgICAgICAgbVVuYWxsb2NhdGVk
TGlzdC5lcmFzZShsaXN0SXQpOwogICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBsaXN0
SXQtPmJlZ2luKys7CisgICAgfQogCiAgICAgcmV0dXJuIGZyZWVMaXN0SGFuZGxlOwogfQpAQCAt
MTAxLDcgKzEwNCw3IEBAIHZvaWQgSGFuZGxlQWxsb2NhdG9yOjpyZXNlcnZlKEdMdWludCBoYW4K
IAogICAgIGlmIChoYW5kbGUgPT0gYmVnaW4gfHwgaGFuZGxlID09IGVuZCkKICAgICB7Ci0gICAg
ICAgIGlmIChiZWdpbiArIDEgPT0gZW5kKQorICAgICAgICBpZiAoYmVnaW4gPT0gZW5kKQogICAg
ICAgICB7CiAgICAgICAgICAgICBtVW5hbGxvY2F0ZWRMaXN0LmVyYXNlKGJvdW5kSXQpOwogICAg
ICAgICB9CkBAIC0xMTcsMTggKzEyMCwxMiBAQCB2b2lkIEhhbmRsZUFsbG9jYXRvcjo6cmVzZXJ2
ZShHTHVpbnQgaGFuCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBBU1NFUlQoYmVnaW4g
PCBoYW5kbGUgJiYgaGFuZGxlIDwgZW5kKTsKKwogICAgIC8vIG5lZWQgdG8gc3BsaXQgdGhlIHJh
bmdlCiAgICAgYXV0byBwbGFjZW1lbnRJdCA9IG1VbmFsbG9jYXRlZExpc3QuZXJhc2UoYm91bmRJ
dCk7Ci0KLSAgICBpZiAoaGFuZGxlICsgMSAhPSBlbmQpCi0gICAgewotICAgICAgICBwbGFjZW1l
bnRJdCA9IG1VbmFsbG9jYXRlZExpc3QuaW5zZXJ0KHBsYWNlbWVudEl0LCBIYW5kbGVSYW5nZSho
YW5kbGUgKyAxLCBlbmQpKTsKLSAgICB9Ci0gICAgaWYgKGJlZ2luICE9IGhhbmRsZSkKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChiZWdpbiA8IGhhbmRsZSk7Ci0gICAgICAgIG1VbmFsbG9jYXRlZExp
c3QuaW5zZXJ0KHBsYWNlbWVudEl0LCBIYW5kbGVSYW5nZShiZWdpbiwgaGFuZGxlKSk7Ci0gICAg
fQorICAgIHBsYWNlbWVudEl0ICAgICAgPSBtVW5hbGxvY2F0ZWRMaXN0Lmluc2VydChwbGFjZW1l
bnRJdCwgSGFuZGxlUmFuZ2UoaGFuZGxlICsgMSwgZW5kKSk7CisgICAgbVVuYWxsb2NhdGVkTGlz
dC5pbnNlcnQocGxhY2VtZW50SXQsIEhhbmRsZVJhbmdlKGJlZ2luLCBoYW5kbGUgLSAxKSk7CiB9
CiAKIH0gIC8vIG5hbWVzcGFjZSBnbApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuaAkocmV2aXNpb24gMjA3ODA0
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIEhhbmRsZUFsbG9jYXRv
ciBmaW5hbCA6IGFuZ2xlOjpOb24KICAgICB0eXBlZGVmIHN0ZDo6dmVjdG9yPEdMdWludD4gSGFu
ZGxlTGlzdDsKICAgICBIYW5kbGVMaXN0IG1GcmVlVmFsdWVzOwogCisgICAgLy8gUmVwcmVzZW50
cyBhbiBpbmNsdXNpdmUgcmFuZ2UgW2JlZ2luLCBlbmRdCiAgICAgc3RydWN0IEhhbmRsZVJhbmdl
CiAgICAgewogICAgICAgICBIYW5kbGVSYW5nZShHTHVpbnQgYmVnaW5JbiwgR0x1aW50IGVuZElu
KSA6IGJlZ2luKGJlZ2luSW4pLCBlbmQoZW5kSW4pIHt9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvSGFuZGxlQWxsb2NhdG9yX3VuaXR0ZXN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSGFuZGxlQWxsb2Nh
dG9yX3VuaXR0ZXN0LmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRvcl91bml0dGVzdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTkwLDggKzkwLDcgQEAgVEVTVChIYW5kbGVBbGxvY2F0b3JUZXN0LCBSZWFsbG9j
YXRpb24pCiAgICAgRVhQRUNUX0VRKGZpbmFsUmVzdWx0LCAxKTsKIH0KIAotLy8gVGhlIGZvbGxv
d2luZyB0ZXN0IGNvdmVycyByZXNlcnZpbmcgYSBoYW5kbGUgd2l0aCBtYXggdWludCB2YWx1ZS4K
LS8vIFNlZSBodHRwOi8vYW5nbGVidWcuY29tLzEwNTIKKy8vIFRoZSBmb2xsb3dpbmcgdGVzdCBj
b3ZlcnMgcmVzZXJ2aW5nIGEgaGFuZGxlIHdpdGggbWF4IHVpbnQgdmFsdWUuIFNlZSBodHRwOi8v
YW5nbGVidWcuY29tLzEwNTIKIFRFU1QoSGFuZGxlQWxsb2NhdG9yVGVzdCwgUmVzZXJ2ZU1heFVp
bnRIYW5kbGUpCiB7CiAgICAgZ2w6OkhhbmRsZUFsbG9jYXRvciBhbGxvY2F0b3I7CkBAIC0xMDMs
NiArMTAyLDE5IEBAIFRFU1QoSGFuZGxlQWxsb2NhdG9yVGVzdCwgUmVzZXJ2ZU1heFVpbnQKICAg
ICBFWFBFQ1RfRVEoMXUsIG5vcm1hbEhhbmRsZSk7CiB9CiAKKy8vIFRoZSBmb2xsb3dpbmcgdGVz
dCBjb3ZlcnMgcmVzZXJ2aW5nIGEgaGFuZGxlIHdpdGggbWF4IHVpbnQgdmFsdWUgbWludXMgb25l
IHRoZW4gbWF4IHVpbnQgdmFsdWUuCitURVNUKEhhbmRsZUFsbG9jYXRvclRlc3QsIFJlc2VydmVN
YXhVaW50SGFuZGxlMikKK3sKKyAgICBnbDo6SGFuZGxlQWxsb2NhdG9yIGFsbG9jYXRvcjsKKwor
ICAgIEdMdWludCBtYXhVaW50SGFuZGxlID0gc3RkOjpudW1lcmljX2xpbWl0czxHTHVpbnQ+Ojpt
YXgoKTsKKyAgICBhbGxvY2F0b3IucmVzZXJ2ZShtYXhVaW50SGFuZGxlIC0gMSk7CisgICAgYWxs
b2NhdG9yLnJlc2VydmUobWF4VWludEhhbmRsZSk7CisKKyAgICBHTHVpbnQgbm9ybWFsSGFuZGxl
ID0gYWxsb2NhdG9yLmFsbG9jYXRlKCk7CisgICAgRVhQRUNUX0VRKDF1LCBub3JtYWxIYW5kbGUp
OworfQorCiAvLyBUbyB0ZXN0IGlmIHRoZSBhbGxvY2F0b3Iga2VlcCB0aGUgaGFuZGxlIGluIGEg
c29ydGVkIG9yZGVyLgogVEVTVChIYW5kbGVBbGxvY2F0b3JUZXN0LCBTb3J0ZWRPcmRlckhhbmRs
ZSkKIHsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9IYW5kbGVS
YW5nZUFsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL0hhbmRsZVJhbmdlQWxsb2NhdG9yLmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSGFuZGxlUmFuZ2VBbGxvY2F0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjI2IEBACisvLworLy8gQ29weXJpZ2h0IChj
KSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8g
SGFuZGxlUmFuZ2VBbGxvY2F0b3IuY3BwIDogSW1wbGVtZW50YXRpb24gZm9yIEhhbmRsZVJhbmdl
QWxsb2NhdG9yLmgKKworI2luY2x1ZGUgImxpYkFOR0xFL0hhbmRsZVJhbmdlQWxsb2NhdG9yLmgi
CisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHV0
aWxpdHk+CisKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorI2luY2x1ZGUgImNvbW1v
bi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgZ2wKK3sKKworY29uc3QgR0x1aW50IEhhbmRsZVJhbmdl
QWxsb2NhdG9yOjprSW52YWxpZEhhbmRsZSA9IDA7CisKK0hhbmRsZVJhbmdlQWxsb2NhdG9yOjpI
YW5kbGVSYW5nZUFsbG9jYXRvcigpCit7CisgICAgLy8gU2ltcGxpZnkgdGhlIGNvZGUgYnkgbWFr
aW5nIHN1cmUgdGhhdCBsb3dlcl9ib3VuZChpZCkgbmV2ZXIKKyAgICAvLyByZXR1cm5zIHRoZSBi
ZWdpbm5pbmcgb2YgdGhlIG1hcCwgaWYgaWQgaXMgdmFsaWQgKGVnICE9IGtJbnZhbGlkSGFuZGxl
KS4KKyAgICBtVXNlZC5pbnNlcnQoc3RkOjptYWtlX3BhaXIoMHUsIDB1KSk7Cit9CisKK0dMdWlu
dCBIYW5kbGVSYW5nZUFsbG9jYXRvcjo6YWxsb2NhdGUoKQoreworICAgIHJldHVybiBhbGxvY2F0
ZVJhbmdlKDF1KTsKK30KKworR0x1aW50IEhhbmRsZVJhbmdlQWxsb2NhdG9yOjphbGxvY2F0ZUF0
T3JBYm92ZShHTHVpbnQgd2FudGVkKQoreworICAgIGlmICh3YW50ZWQgPT0gMHUgfHwgd2FudGVk
ID09IDF1KQorICAgICAgICByZXR1cm4gYWxsb2NhdGVSYW5nZSgxdSk7CisKKyAgICBhdXRvIGN1
cnJlbnQgPSBtVXNlZC5sb3dlcl9ib3VuZCh3YW50ZWQpOworICAgIGF1dG8gbmV4dCA9IGN1cnJl
bnQ7CisgICAgaWYgKGN1cnJlbnQgPT0gbVVzZWQuZW5kKCkgfHwgY3VycmVudC0+Zmlyc3QgPiB3
YW50ZWQpCisgICAgeworICAgICAgICBjdXJyZW50LS07CisgICAgfQorICAgIGVsc2UKKyAgICB7
CisgICAgICAgIG5leHQrKzsKKyAgICB9CisKKyAgICBHTHVpbnQgZmlyc3RJZCA9IGN1cnJlbnQt
PmZpcnN0OworICAgIFVOVVNFRF9BU1NFUlRJT05fVkFSSUFCTEUoZmlyc3RJZCk7CisgICAgR0x1
aW50IGxhc3RJZCA9IGN1cnJlbnQtPnNlY29uZDsKKyAgICBBU1NFUlQod2FudGVkID49IGZpcnN0
SWQpOworCisgICAgaWYgKHdhbnRlZCAtIDF1IDw9IGxhc3RJZCkKKyAgICB7CisgICAgICAgIC8v
IEFwcGVuZCB0byBjdXJyZW50IHJhbmdlLgorICAgICAgICBsYXN0SWQrKzsKKyAgICAgICAgaWYg
KGxhc3RJZCA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBUaGUgaW5jcmVtZW50IG92
ZXJmbG93ZWQuCisgICAgICAgICAgICByZXR1cm4gYWxsb2NhdGVSYW5nZSgxdSk7CisgICAgICAg
IH0KKworICAgICAgICBjdXJyZW50LT5zZWNvbmQgPSBsYXN0SWQ7CisKKyAgICAgICAgaWYgKG5l
eHQgIT0gbVVzZWQuZW5kKCkgJiYgbmV4dC0+Zmlyc3QgLSAxdSA9PSBsYXN0SWQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIC8vIE1lcmdlIHdpdGggbmV4dCByYW5nZS4KKyAgICAgICAgICAgIGN1
cnJlbnQtPnNlY29uZCA9IG5leHQtPnNlY29uZDsKKyAgICAgICAgICAgIG1Vc2VkLmVyYXNlKG5l
eHQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBsYXN0SWQ7CisgICAgfQorICAgIGVsc2Ug
aWYgKG5leHQgIT0gbVVzZWQuZW5kKCkgJiYgbmV4dC0+Zmlyc3QgLSAxdSA9PSB3YW50ZWQpCisg
ICAgeworICAgICAgICAvLyBQcmVwZW5kIHRvIG5leHQgcmFuZ2UuCisgICAgICAgIEdMdWludCBs
YXN0RXhpc3RpbmcgPSBuZXh0LT5zZWNvbmQ7CisgICAgICAgIG1Vc2VkLmVyYXNlKG5leHQpOwor
ICAgICAgICBtVXNlZC5pbnNlcnQoc3RkOjptYWtlX3BhaXIod2FudGVkLCBsYXN0RXhpc3Rpbmcp
KTsKKyAgICAgICAgcmV0dXJuIHdhbnRlZDsKKyAgICB9CisgICAgbVVzZWQuaW5zZXJ0KHN0ZDo6
bWFrZV9wYWlyKHdhbnRlZCwgd2FudGVkKSk7CisgICAgcmV0dXJuIHdhbnRlZDsKK30KKworR0x1
aW50IEhhbmRsZVJhbmdlQWxsb2NhdG9yOjphbGxvY2F0ZVJhbmdlKEdMdWludCByYW5nZSkKK3sK
KyAgICBBU1NFUlQocmFuZ2UgIT0gMCk7CisKKyAgICBhdXRvIGN1cnJlbnQgPSBtVXNlZC5iZWdp
bigpOworICAgIGF1dG8gbmV4dCAgICA9IGN1cnJlbnQ7CisKKyAgICB3aGlsZSAoKytuZXh0ICE9
IG1Vc2VkLmVuZCgpKQorICAgIHsKKyAgICAgICAgaWYgKG5leHQtPmZpcnN0IC0gY3VycmVudC0+
c2Vjb25kID4gcmFuZ2UpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY3VycmVudCA9IG5l
eHQ7CisgICAgfQorICAgIGNvbnN0IEdMdWludCBmaXJzdElkID0gY3VycmVudC0+c2Vjb25kICsg
MXU7CisgICAgY29uc3QgR0x1aW50IGxhc3RJZCAgPSBmaXJzdElkICsgcmFuZ2UgLSAxdTsKKwor
ICAgIC8vIGRlYWwgd2l0aCB3cmFwYXJvdW5kCisgICAgaWYgKGZpcnN0SWQgPT0gMHUgfHwgbGFz
dElkIDwgZmlyc3RJZCkKKyAgICAgICAgcmV0dXJuIGtJbnZhbGlkSGFuZGxlOworCisgICAgY3Vy
cmVudC0+c2Vjb25kID0gbGFzdElkOworCisgICAgaWYgKG5leHQgIT0gbVVzZWQuZW5kKCkgJiYg
bmV4dC0+Zmlyc3QgLSAxdSA9PSBsYXN0SWQpCisgICAgeworICAgICAgICAvLyBtZXJnZSB3aXRo
IG5leHQgcmFuZ2UKKyAgICAgICAgY3VycmVudC0+c2Vjb25kID0gbmV4dC0+c2Vjb25kOworICAg
ICAgICBtVXNlZC5lcmFzZShuZXh0KTsKKyAgICB9CisgICAgcmV0dXJuIGZpcnN0SWQ7Cit9CisK
K2Jvb2wgSGFuZGxlUmFuZ2VBbGxvY2F0b3I6Om1hcmtBc1VzZWQoR0x1aW50IGhhbmRsZSkKK3sK
KyAgICBBU1NFUlQoaGFuZGxlKTsKKyAgICBhdXRvIGN1cnJlbnQgPSBtVXNlZC5sb3dlcl9ib3Vu
ZChoYW5kbGUpOworICAgIGlmIChjdXJyZW50ICE9IG1Vc2VkLmVuZCgpICYmIGN1cnJlbnQtPmZp
cnN0ID09IGhhbmRsZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBuZXh0ID0g
Y3VycmVudDsKKyAgICAtLWN1cnJlbnQ7CisKKyAgICBpZiAoY3VycmVudC0+c2Vjb25kID49IGhh
bmRsZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQVNTRVJUKGN1cnJlbnQtPmZpcnN0
IDwgaGFuZGxlICYmIGN1cnJlbnQtPnNlY29uZCA8IGhhbmRsZSk7CisKKyAgICBpZiAoY3VycmVu
dC0+c2Vjb25kICsgMXUgPT0gaGFuZGxlKQorICAgIHsKKyAgICAgICAgLy8gQXBwZW5kIHRvIGN1
cnJlbnQgcmFuZ2UuCisgICAgICAgIGN1cnJlbnQtPnNlY29uZCA9IGhhbmRsZTsKKyAgICAgICAg
aWYgKG5leHQgIT0gbVVzZWQuZW5kKCkgJiYgbmV4dC0+Zmlyc3QgLSAxdSA9PSBoYW5kbGUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIC8vIE1lcmdlIHdpdGggbmV4dCByYW5nZS4KKyAgICAgICAg
ICAgIGN1cnJlbnQtPnNlY29uZCA9IG5leHQtPnNlY29uZDsKKyAgICAgICAgICAgIG1Vc2VkLmVy
YXNlKG5leHQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBl
bHNlIGlmIChuZXh0ICE9IG1Vc2VkLmVuZCgpICYmIG5leHQtPmZpcnN0IC0gMXUgPT0gaGFuZGxl
KQorICAgIHsKKyAgICAgICAgLy8gUHJlcGVuZCB0byBuZXh0IHJhbmdlLgorICAgICAgICBHTHVp
bnQgbGFzdEV4aXN0aW5nID0gbmV4dC0+c2Vjb25kOworICAgICAgICBtVXNlZC5lcmFzZShuZXh0
KTsKKyAgICAgICAgbVVzZWQuaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKGhhbmRsZSwgbGFzdEV4aXN0
aW5nKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIG1Vc2VkLmluc2VydChz
dGQ6Om1ha2VfcGFpcihoYW5kbGUsIGhhbmRsZSkpOworICAgIHJldHVybiB0cnVlOworfQorCit2
b2lkIEhhbmRsZVJhbmdlQWxsb2NhdG9yOjpyZWxlYXNlKEdMdWludCBoYW5kbGUpCit7CisgICAg
cmVsZWFzZVJhbmdlKGhhbmRsZSwgMXUpOworfQorCit2b2lkIEhhbmRsZVJhbmdlQWxsb2NhdG9y
OjpyZWxlYXNlUmFuZ2UoR0x1aW50IGZpcnN0LCBHTHVpbnQgcmFuZ2UpCit7CisgICAgaWYgKHJh
bmdlID09IDB1IHx8IChmaXJzdCA9PSAwdSAmJiByYW5nZSA9PSAxdSkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChmaXJzdCA9PSAwdSkKKyAgICB7CisgICAgICAgIGZpcnN0Kys7CisgICAg
ICAgIHJhbmdlLS07CisgICAgfQorCisgICAgR0x1aW50IGxhc3QgPSBmaXJzdCArIHJhbmdlIC0g
MXU7CisgICAgaWYgKGxhc3QgPCBmaXJzdCkKKyAgICAgICAgbGFzdCA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8R0x1aW50Pjo6bWF4KCk7CisKKyAgICB3aGlsZSAodHJ1ZSkKKyAgICB7CisgICAgICAg
IGF1dG8gY3VycmVudCA9IG1Vc2VkLmxvd2VyX2JvdW5kKGxhc3QpOworICAgICAgICBpZiAoY3Vy
cmVudCA9PSBtVXNlZC5lbmQoKSB8fCBjdXJyZW50LT5maXJzdCA+IGxhc3QpCisgICAgICAgICAg
ICAtLWN1cnJlbnQ7CisKKyAgICAgICAgaWYgKGN1cnJlbnQtPnNlY29uZCA8IGZpcnN0KQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChjdXJyZW50LT5maXJzdCA+PSBmaXJzdCkK
KyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgR0x1aW50IGxhc3RFeGlzdGluZyA9IGN1cnJl
bnQtPnNlY29uZDsKKyAgICAgICAgICAgIG1Vc2VkLmVyYXNlKGN1cnJlbnQpOworICAgICAgICAg
ICAgaWYgKGxhc3QgPCBsYXN0RXhpc3RpbmcpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgbVVzZWQuaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKGxhc3QgKyAxdSwgbGFzdEV4aXN0aW5nKSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoY3VycmVudC0+c2Vj
b25kIDw9IGxhc3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIGN1cnJlbnQtPnNlY29uZCA9IGZp
cnN0IC0gMXU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAg
ICBBU1NFUlQoY3VycmVudC0+Zmlyc3QgPCBmaXJzdCAmJiBjdXJyZW50LT5zZWNvbmQgPiBsYXN0
KTsKKyAgICAgICAgICAgIGNvbnN0IEdMdWludCBsYXN0RXhpc3RpbmcgPSBjdXJyZW50LT5zZWNv
bmQ7CisgICAgICAgICAgICBjdXJyZW50LT5zZWNvbmQgPSBmaXJzdCAtIDF1OworICAgICAgICAg
ICAgbVVzZWQuaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKGxhc3QgKyAxdSwgbGFzdEV4aXN0aW5nKSk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgSGFuZGxlUmFuZ2VBbGxvY2F0b3I6OmlzVXNl
ZChHTHVpbnQgaGFuZGxlKSBjb25zdAoreworICAgIGlmIChoYW5kbGUgPT0ga0ludmFsaWRIYW5k
bGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gY3VycmVudCA9IG1Vc2VkLmxv
d2VyX2JvdW5kKGhhbmRsZSk7CisgICAgaWYgKGN1cnJlbnQgIT0gbVVzZWQuZW5kKCkpCisgICAg
eworICAgICAgICBpZiAoY3VycmVudC0+Zmlyc3QgPT0gaGFuZGxlKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIC0tY3VycmVudDsKKyAgICByZXR1cm4gY3VycmVudC0+c2Vj
b25kID49IGhhbmRsZTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGdsCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSGFuZGxlUmFuZ2VBbGxvY2F0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSGFuZGxlUmFuZ2VB
bGxvY2F0b3IuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvSGFuZGxlUmFuZ2VBbGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDU5IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBIYW5kbGVSYW5nZUFsbG9jYXRvci5oOiBE
ZWZpbmVzIHRoZSBnbDo6SGFuZGxlUmFuZ2VBbGxvY2F0b3IgY2xhc3MsIHdoaWNoIGlzIHVzZWQg
dG8KKy8vIGFsbG9jYXRlIGNvbnRpZ3VvdXMgcmFuZ2VzIG9mIEdMIHBhdGggaGFuZGxlcy4KKwor
I2lmbmRlZiBMSUJBTkdMRV9IQU5ETEVSQU5HRUFMTE9DQVRPUl9IXworI2RlZmluZSBMSUJBTkdM
RV9IQU5ETEVSQU5HRUFMTE9DQVRPUl9IXworCisjaW5jbHVkZSA8bWFwPgorCisjaW5jbHVkZSAi
YW5nbGVfZ2wuaCIKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorCituYW1lc3BhY2Ug
Z2wKK3sKKworLy8gQWxsb2NhdGVzIGNvbnRpZ3VvdXMgcmFuZ2VzIG9mIHBhdGggb2JqZWN0IGhh
bmRsZXMuCitjbGFzcyBIYW5kbGVSYW5nZUFsbG9jYXRvciBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5
YWJsZQoreworICBwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IEdMdWludCBrSW52YWxpZEhhbmRs
ZTsKKworICAgIEhhbmRsZVJhbmdlQWxsb2NhdG9yKCk7CisKKyAgICAvLyBBbGxvY2F0ZXMgYSBu
ZXcgcGF0aCBoYW5kbGUuCisgICAgR0x1aW50IGFsbG9jYXRlKCk7CisKKyAgICAvLyBBbGxvY2F0
ZXMgYSBoYW5kbGUgc3RhcnRpbmcgYXQgb3IgYWJvdmUgdGhlIHZhbHVlIG9mIHx3YW50ZWR8Lgor
ICAgIC8vIE5vdGU6IG1heSB3cmFwIGlmIGl0IHN0YXJ0cyBuZWFyIGxpbWl0LgorICAgIEdMdWlu
dCBhbGxvY2F0ZUF0T3JBYm92ZShHTHVpbnQgd2FudGVkKTsKKworICAgIC8vIEFsbG9jYXRlcyB8
cmFuZ2V8IGFtb3VudCBvZiBjb250aWd1b3VzIHBhdGhzLgorICAgIC8vIFJldHVybnMgdGhlIGZp
cnN0IGlkIHRvIHxmaXJzdF9pZHwgb3IgfGtJbnZhbGlkSGFuZGxlfCBpZgorICAgIC8vIGFsbG9j
YXRpb24gZmFpbGVkLgorICAgIEdMdWludCBhbGxvY2F0ZVJhbmdlKEdMdWludCByYW5nZSk7CisK
KyAgICAvLyBNYXJrcyBhbiBpZCBhcyB1c2VkLiBSZXR1cm5zIGZhbHNlIGlmIGhhbmRsZSB3YXMg
YWxyZWFkeSB1c2VkLgorICAgIGJvb2wgbWFya0FzVXNlZChHTHVpbnQgaGFuZGxlKTsKKworICAg
IC8vIFJlbGVhc2UgaGFuZGxlLgorICAgIHZvaWQgcmVsZWFzZShHTHVpbnQgaGFuZGxlKTsKKwor
ICAgIC8vIFJlbGVhc2UgYSB8cmFuZ2V8IGFtb3VudCBvZiBjb250aWd1b3VzIGhhbmRsZXMsIHN0
YXJ0aW5nIGZyb20gfGZpcnN0fAorICAgIHZvaWQgcmVsZWFzZVJhbmdlKEdMdWludCBmaXJzdCwg
R0x1aW50IHJhbmdlKTsKKworICAgIC8vIENoZWNrcyB3aGV0aGVyIG9yIG5vdCBhIHJlc291cmNl
IElEIGlzIGluIHVzZS4KKyAgICBib29sIGlzVXNlZChHTHVpbnQgaGFuZGxlKSBjb25zdDsKKwor
ICBwcml2YXRlOgorICAgIHN0ZDo6bWFwPEdMdWludCwgR0x1aW50PiBtVXNlZDsKK307CisKK30g
IC8vIG5hbWVzcGFjZSBnbAorCisjZW5kaWYgIC8vIExJQkFOR0xFX0hBTkRMRVJBTkdFQUxMT0NB
VE9SX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSGFuZGxl
UmFuZ2VBbGxvY2F0b3JfdW5pdHRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9IYW5kbGVSYW5nZUFsbG9jYXRvcl91bml0dGVzdC5jcHAJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0hh
bmRsZVJhbmdlQWxsb2NhdG9yX3VuaXR0ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDI3NSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorLy8KKy8vIFVuaXQgdGVzdHMgZm9yIEhhbmRsZVJhbmdlQWxsb2NhdG9y
LgorLy8KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKKworI2luY2x1ZGUgImxpYkFOR0xFL0hhbmRsZVJhbmdlQWxsb2NhdG9yLmgiCisKK25hbWVz
cGFjZQoreworCitjbGFzcyBIYW5kbGVSYW5nZUFsbG9jYXRvclRlc3QgOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgZ2w6OkhhbmRsZVJhbmdlQWxsb2NhdG9yICpn
ZXRBbGxvY2F0b3IoKSB7IHJldHVybiAmbUFsbG9jYXRvcjsgfQorCisgIHByaXZhdGU6CisgICAg
Z2w6OkhhbmRsZVJhbmdlQWxsb2NhdG9yIG1BbGxvY2F0b3I7Cit9OworCisvLyBDaGVja3MgYmFz
aWMgZnVuY3Rpb25hbGl0eTogYWxsb2NhdGUsIHJlbGVhc2UsIGlzVXNlZC4KK1RFU1RfRihIYW5k
bGVSYW5nZUFsbG9jYXRvclRlc3QsIFRlc3RCYXNpYykKK3sKKyAgICBhdXRvICphbGxvY2F0b3Ig
PSBnZXRBbGxvY2F0b3IoKTsKKyAgICAvLyBDaGVjayB0aGF0IHJlc291cmNlIDEgaXMgbm90IGlu
IHVzZQorICAgIEVYUEVDVF9GQUxTRShhbGxvY2F0b3ItPmlzVXNlZCgxKSk7CisKKyAgICAvLyBB
bGxvY2F0ZSBhbiBJRCwgY2hlY2sgdGhhdCBpdCdzIGluIHVzZS4KKyAgICBHTHVpbnQgaWQxID0g
YWxsb2NhdG9yLT5hbGxvY2F0ZSgpOworICAgIEVYUEVDVF9UUlVFKGFsbG9jYXRvci0+aXNVc2Vk
KGlkMSkpOworCisgICAgLy8gQWxsb2NhdGUgYW5vdGhlciBJRCwgY2hlY2sgdGhhdCBpdCdzIGlu
IHVzZSwgYW5kIGRpZmZlcmVudCBmcm9tIHRoZSBmaXJzdAorICAgIC8vIG9uZS4KKyAgICBHTHVp
bnQgaWQyID0gYWxsb2NhdG9yLT5hbGxvY2F0ZSgpOworICAgIEVYUEVDVF9UUlVFKGFsbG9jYXRv
ci0+aXNVc2VkKGlkMikpOworICAgIEVYUEVDVF9ORShpZDEsIGlkMik7CisKKyAgICAvLyBGcmVl
IG9uZSBvZiB0aGUgSURzLCBjaGVjayB0aGF0IGl0J3Mgbm90IGluIHVzZSBhbnkgbW9yZS4KKyAg
ICBhbGxvY2F0b3ItPnJlbGVhc2UoaWQxKTsKKyAgICBFWFBFQ1RfRkFMU0UoYWxsb2NhdG9yLT5p
c1VzZWQoaWQxKSk7CisKKyAgICAvLyBGcmVlcyB0aGUgb3RoZXIgSUQsIGNoZWNrIHRoYXQgaXQn
cyBub3QgaW4gdXNlIGFueSBtb3JlLgorICAgIGFsbG9jYXRvci0+cmVsZWFzZShpZDIpOworICAg
IEVYUEVDVF9GQUxTRShhbGxvY2F0b3ItPmlzVXNlZChpZDIpKTsKK30KKworLy8gQ2hlY2tzIHRo
YXQgdGhlIHJlc291cmNlIGhhbmRsZXMgYXJlIHJlLXVzZWQgYWZ0ZXIgYmVpbmcgZnJlZWQuCitU
RVNUX0YoSGFuZGxlUmFuZ2VBbGxvY2F0b3JUZXN0LCBUZXN0QWR2YW5jZWQpCit7CisgICAgYXV0
byAqYWxsb2NhdG9yID0gZ2V0QWxsb2NhdG9yKCk7CisKKyAgICAvLyBBbGxvY2F0ZSB0aGUgaGln
aGVzdCBwb3NzaWJsZSBJRCwgdG8gbWFrZSBsaWZlIGF3a3dhcmQuCisgICAgYWxsb2NhdG9yLT5h
bGxvY2F0ZUF0T3JBYm92ZSh+c3RhdGljX2Nhc3Q8R0x1aW50PigwKSk7CisKKyAgICAvLyBBbGxv
Y2F0ZSBhIHNpZ25pZmljYW50IG51bWJlciBvZiByZXNvdXJjZXMuCisgICAgY29uc3QgdW5zaWdu
ZWQgaW50IGtOdW1SZXNvdXJjZXMgPSAxMDA7CisgICAgR0x1aW50IGlkc1trTnVtUmVzb3VyY2Vz
XTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGtOdW1SZXNvdXJjZXM7ICsraSkK
KyAgICB7CisgICAgICAgIGlkc1tpXSA9IGFsbG9jYXRvci0+YWxsb2NhdGUoKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUoYWxsb2NhdG9yLT5pc1VzZWQoaWRzW2ldKSk7CisgICAgfQorCisgICAgLy8g
Q2hlY2sgdGhhdCBhIG5ldyBhbGxvY2F0aW9uIHJlLXVzZXMgdGhlIHJlc291cmNlIHdlIGp1c3Qg
ZnJlZWQuCisgICAgR0x1aW50IGlkMSA9IGlkc1trTnVtUmVzb3VyY2VzIC8gMl07CisgICAgYWxs
b2NhdG9yLT5yZWxlYXNlKGlkMSk7CisgICAgRVhQRUNUX0ZBTFNFKGFsbG9jYXRvci0+aXNVc2Vk
KGlkMSkpOworICAgIEdMdWludCBpZDIgPSBhbGxvY2F0b3ItPmFsbG9jYXRlKCk7CisgICAgRVhQ
RUNUX1RSVUUoYWxsb2NhdG9yLT5pc1VzZWQoaWQyKSk7CisgICAgRVhQRUNUX0VRKGlkMSwgaWQy
KTsKK30KKworLy8gQ2hlY2tzIHRoYXQgd2UgY2FuIGNob29zZSBvdXIgb3duIGlkcyBhbmQgdGhl
eSB3b24ndCBiZSByZXVzZWQuCitURVNUX0YoSGFuZGxlUmFuZ2VBbGxvY2F0b3JUZXN0LCBNYXJr
QXNVc2VkKQoreworICAgIGF1dG8gKmFsbG9jYXRvciA9IGdldEFsbG9jYXRvcigpOworICAgIEdM
dWludCBpZCA9IGFsbG9jYXRvci0+YWxsb2NhdGUoKTsKKyAgICBhbGxvY2F0b3ItPnJlbGVhc2Uo
aWQpOworICAgIEVYUEVDVF9GQUxTRShhbGxvY2F0b3ItPmlzVXNlZChpZCkpOworICAgIEVYUEVD
VF9UUlVFKGFsbG9jYXRvci0+bWFya0FzVXNlZChpZCkpOworICAgIEVYUEVDVF9UUlVFKGFsbG9j
YXRvci0+aXNVc2VkKGlkKSk7CisgICAgR0x1aW50IGlkMiA9IGFsbG9jYXRvci0+YWxsb2NhdGUo
KTsKKyAgICBFWFBFQ1RfTkUoaWQsIGlkMik7CisgICAgRVhQRUNUX1RSVUUoYWxsb2NhdG9yLT5t
YXJrQXNVc2VkKGlkMiArIDEpKTsKKyAgICBHTHVpbnQgaWQzID0gYWxsb2NhdG9yLT5hbGxvY2F0
ZSgpOworICAgIC8vIENoZWNrcyBvdXIgYWxnb3JpdGhtLiBJZiB0aGUgYWxnb3JpdGhtIGNoYW5n
ZXMgdGhpcyBjaGVjayBzaG91bGQgYmUKKyAgICAvLyBjaGFuZ2VkLgorICAgIEVYUEVDVF9FUShp
ZDMsIGlkMiArIDIpOworfQorCisvLyBDaGVja3MgYWxsb2NhdGVBdE9yQWJvdmUuCitURVNUX0Yo
SGFuZGxlUmFuZ2VBbGxvY2F0b3JUZXN0LCBBbGxvY2F0ZUF0T3JBYm92ZSkKK3sKKyAgICBjb25z
dCBHTHVpbnQga09mZnNldCA9IDEyMzQ1NjsKKyAgICBhdXRvICphbGxvY2F0b3IgICAgICA9IGdl
dEFsbG9jYXRvcigpOworICAgIEdMdWludCBpZDEgPSBhbGxvY2F0b3ItPmFsbG9jYXRlQXRPckFi
b3ZlKGtPZmZzZXQpOworICAgIEVYUEVDVF9FUShrT2Zmc2V0LCBpZDEpOworICAgIEdMdWludCBp
ZDIgPSBhbGxvY2F0b3ItPmFsbG9jYXRlQXRPckFib3ZlKGtPZmZzZXQpOworICAgIEVYUEVDVF9H
VChpZDIsIGtPZmZzZXQpOworICAgIEdMdWludCBpZDMgPSBhbGxvY2F0b3ItPmFsbG9jYXRlQXRP
ckFib3ZlKGtPZmZzZXQpOworICAgIEVYUEVDVF9HVChpZDMsIGtPZmZzZXQpOworfQorCisvLyBD
aGVja3MgdGhhdCBhbGxvY2F0ZUF0T3JBYm92ZSB3cmFwcyBhcm91bmQgYXQgdGhlIG1heGltdW0g
dmFsdWUuCitURVNUX0YoSGFuZGxlUmFuZ2VBbGxvY2F0b3JUZXN0LCBBbGxvY2F0ZUlkQXRPckFi
b3ZlV3JhcHNBcm91bmQpCit7CisgICAgY29uc3QgR0x1aW50IGtNYXhQb3NzaWJsZU9mZnNldCA9
IH5zdGF0aWNfY2FzdDxHTHVpbnQ+KDApOworICAgIGF1dG8gKmFsbG9jYXRvciAgICAgICAgICAg
ICAgICAgPSBnZXRBbGxvY2F0b3IoKTsKKyAgICBHTHVpbnQgaWQxID0gYWxsb2NhdG9yLT5hbGxv
Y2F0ZUF0T3JBYm92ZShrTWF4UG9zc2libGVPZmZzZXQpOworICAgIEVYUEVDVF9FUShrTWF4UG9z
c2libGVPZmZzZXQsIGlkMSk7CisgICAgR0x1aW50IGlkMiA9IGFsbG9jYXRvci0+YWxsb2NhdGVB
dE9yQWJvdmUoa01heFBvc3NpYmxlT2Zmc2V0KTsKKyAgICBFWFBFQ1RfRVEoMXUsIGlkMik7Cisg
ICAgR0x1aW50IGlkMyA9IGFsbG9jYXRvci0+YWxsb2NhdGVBdE9yQWJvdmUoa01heFBvc3NpYmxl
T2Zmc2V0KTsKKyAgICBFWFBFQ1RfRVEoMnUsIGlkMyk7Cit9CisKKy8vIENoZWNrcyB0aGF0IGZy
ZWVpbmcgYW4gYWxyZWFkeSBmcmVlZCByYW5nZSBjYXVzZXMgbm8gaGFybS4KK1RFU1RfRihIYW5k
bGVSYW5nZUFsbG9jYXRvclRlc3QsIFJlZHVuZGFudEZyZWVJc0lnbm9yZWQpCit7CisgICAgYXV0
byAqYWxsb2NhdG9yID0gZ2V0QWxsb2NhdG9yKCk7CisgICAgR0x1aW50IGlkMSA9IGFsbG9jYXRv
ci0+YWxsb2NhdGUoKTsKKyAgICBhbGxvY2F0b3ItPnJlbGVhc2UoMCk7CisgICAgYWxsb2NhdG9y
LT5yZWxlYXNlKGlkMSk7CisgICAgYWxsb2NhdG9yLT5yZWxlYXNlKGlkMSk7CisgICAgYWxsb2Nh
dG9yLT5yZWxlYXNlKGlkMSArIDEpOworICAgIEdMdWludCBpZDIgPSBhbGxvY2F0b3ItPmFsbG9j
YXRlKCk7CisgICAgR0x1aW50IGlkMyA9IGFsbG9jYXRvci0+YWxsb2NhdGUoKTsKKyAgICBFWFBF
Q1RfTkUoaWQyLCBpZDMpOworICAgIEVYUEVDVF9ORShhbGxvY2F0b3ItPmtJbnZhbGlkSGFuZGxl
LCBpZDIpOworICAgIEVYUEVDVF9ORShhbGxvY2F0b3ItPmtJbnZhbGlkSGFuZGxlLCBpZDMpOwor
fQorCisvLyBDaGVjayBhbGxvY2F0aW5nIGFuZCByZWxlYXNpbmcgbXVsdGlwbGUgcmFuZ2VzLgor
VEVTVF9GKEhhbmRsZVJhbmdlQWxsb2NhdG9yVGVzdCwgYWxsb2NhdGVSYW5nZSkKK3sKKyAgICBj
b25zdCBHTHVpbnQga01heFBvc3NpYmxlT2Zmc2V0ID0gc3RkOjpudW1lcmljX2xpbWl0czxHTHVp
bnQ+OjptYXgoKTsKKworICAgIGF1dG8gKmFsbG9jYXRvciA9IGdldEFsbG9jYXRvcigpOworCisg
ICAgR0x1aW50IGlkMSA9IGFsbG9jYXRvci0+YWxsb2NhdGVSYW5nZSgxKTsKKyAgICBFWFBFQ1Rf
RVEoMXUsIGlkMSk7CisgICAgR0x1aW50IGlkMiA9IGFsbG9jYXRvci0+YWxsb2NhdGVSYW5nZSgy
KTsKKyAgICBFWFBFQ1RfRVEoMnUsIGlkMik7CisgICAgR0x1aW50IGlkMyA9IGFsbG9jYXRvci0+
YWxsb2NhdGVSYW5nZSgzKTsKKyAgICBFWFBFQ1RfRVEoNHUsIGlkMyk7CisgICAgR0x1aW50IGlk
NCA9IGFsbG9jYXRvci0+YWxsb2NhdGUoKTsKKyAgICBFWFBFQ1RfRVEoN3UsIGlkNCk7CisgICAg
YWxsb2NhdG9yLT5yZWxlYXNlKDMpOworICAgIEdMdWludCBpZDUgPSBhbGxvY2F0b3ItPmFsbG9j
YXRlUmFuZ2UoMSk7CisgICAgRVhQRUNUX0VRKDN1LCBpZDUpOworICAgIGFsbG9jYXRvci0+cmVs
ZWFzZSg1KTsKKyAgICBhbGxvY2F0b3ItPnJlbGVhc2UoMik7CisgICAgYWxsb2NhdG9yLT5yZWxl
YXNlKDQpOworICAgIEdMdWludCBpZDYgPSBhbGxvY2F0b3ItPmFsbG9jYXRlUmFuZ2UoMik7Cisg
ICAgRVhQRUNUX0VRKDR1LCBpZDYpOworICAgIEdMdWludCBpZDcgPSBhbGxvY2F0b3ItPmFsbG9j
YXRlQXRPckFib3ZlKGtNYXhQb3NzaWJsZU9mZnNldCk7CisgICAgRVhQRUNUX0VRKGtNYXhQb3Nz
aWJsZU9mZnNldCwgaWQ3KTsKKyAgICBHTHVpbnQgaWQ4ID0gYWxsb2NhdG9yLT5hbGxvY2F0ZUF0
T3JBYm92ZShrTWF4UG9zc2libGVPZmZzZXQpOworICAgIEVYUEVDVF9FUSgydSwgaWQ4KTsKKyAg
ICBHTHVpbnQgaWQ5ID0gYWxsb2NhdG9yLT5hbGxvY2F0ZVJhbmdlKDUwKTsKKyAgICBFWFBFQ1Rf
RVEoOHUsIGlkOSk7CisgICAgR0x1aW50IGlkMTAgPSBhbGxvY2F0b3ItPmFsbG9jYXRlUmFuZ2Uo
NTApOworICAgIEVYUEVDVF9FUSg1OHUsIGlkMTApOworICAgIC8vIFJlbW92ZSBhbGwgdGhlIGxv
dy1udW1iZXJlZCBpZHMuCisgICAgYWxsb2NhdG9yLT5yZWxlYXNlKDEpOworICAgIGFsbG9jYXRv
ci0+cmVsZWFzZSgxNSk7CisgICAgYWxsb2NhdG9yLT5yZWxlYXNlUmFuZ2UoMiwgMTA3KTsKKyAg
ICBHTHVpbnQgaWQxMSA9IGFsbG9jYXRvci0+YWxsb2NhdGVSYW5nZSgxMDApOworICAgIEVYUEVD
VF9FUSgxdSwgaWQxMSk7CisgICAgYWxsb2NhdG9yLT5yZWxlYXNlKGtNYXhQb3NzaWJsZU9mZnNl
dCk7CisgICAgR0x1aW50IGlkMTIgPSBhbGxvY2F0b3ItPmFsbG9jYXRlUmFuZ2UoMTAwKTsKKyAg
ICBFWFBFQ1RfRVEoMTAxdSwgaWQxMik7CisKKyAgICBHTHVpbnQgaWQxMyA9IGFsbG9jYXRvci0+
YWxsb2NhdGVBdE9yQWJvdmUoa01heFBvc3NpYmxlT2Zmc2V0IC0gMnUpOworICAgIEVYUEVDVF9F
UShrTWF4UG9zc2libGVPZmZzZXQgLSAydSwgaWQxMyk7CisgICAgR0x1aW50IGlkMTQgPSBhbGxv
Y2F0b3ItPmFsbG9jYXRlUmFuZ2UoMyk7CisgICAgRVhQRUNUX0VRKDIwMXUsIGlkMTQpOworfQor
CisvLyBDaGVja3MgdGhhdCBoYXZpbmcgYWxsb2NhdGVkIGEgaGlnaCByYW5nZSBkb2Vzbid0IGlu
dGVyZmVyZQorLy8gd2l0aCBub3JtYWwgbG93IHJhbmdlIGFsbG9jYXRpb24uCitURVNUX0YoSGFu
ZGxlUmFuZ2VBbGxvY2F0b3JUZXN0LCBBbGxvY2F0ZVJhbmdlRW5kTm9FZmZlY3QpCit7CisgICAg
Y29uc3QgR0x1aW50IGtNYXhQb3NzaWJsZU9mZnNldCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8R0x1
aW50Pjo6bWF4KCk7CisKKyAgICBhdXRvICphbGxvY2F0b3IgPSBnZXRBbGxvY2F0b3IoKTsKKyAg
ICBHTHVpbnQgaWQxID0gYWxsb2NhdG9yLT5hbGxvY2F0ZUF0T3JBYm92ZShrTWF4UG9zc2libGVP
ZmZzZXQgLSAydSk7CisgICAgRVhQRUNUX0VRKGtNYXhQb3NzaWJsZU9mZnNldCAtIDJ1LCBpZDEp
OworICAgIEdMdWludCBpZDMgPSBhbGxvY2F0b3ItPmFsbG9jYXRlUmFuZ2UoMyk7CisgICAgRVhQ
RUNUX0VRKDF1LCBpZDMpOworICAgIEdMdWludCBpZDIgPSBhbGxvY2F0b3ItPmFsbG9jYXRlUmFu
Z2UoMik7CisgICAgRVhQRUNUX0VRKDR1LCBpZDIpOworfQorCisvLyBDaGVja3MgYWxsb2NhdGlu
ZyBhIHJhbmdlIHRoYXQgY29uc3VtZXMgdGhlIHdob2xlIHVpbnQzMiBzcGFjZS4KK1RFU1RfRihI
YW5kbGVSYW5nZUFsbG9jYXRvclRlc3QsIEFsbG9jYXRlTWF4KQoreworICAgIGNvbnN0IHVpbnQz
Ml90IGtNYXhQb3NzaWJsZVJhbmdlID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1h
eCgpOworCisgICAgYXV0byAqYWxsb2NhdG9yID0gZ2V0QWxsb2NhdG9yKCk7CisgICAgR0x1aW50
IGlkID0gYWxsb2NhdG9yLT5hbGxvY2F0ZVJhbmdlKGtNYXhQb3NzaWJsZVJhbmdlKTsKKyAgICBF
WFBFQ1RfRVEoMXUsIGlkKTsKKyAgICBhbGxvY2F0b3ItPnJlbGVhc2VSYW5nZShpZCwga01heFBv
c3NpYmxlUmFuZ2UgLSAxdSk7CisgICAgR0x1aW50IGlkMiA9IGFsbG9jYXRvci0+YWxsb2NhdGVS
YW5nZShrTWF4UG9zc2libGVSYW5nZSk7CisgICAgRVhQRUNUX0VRKDB1LCBpZDIpOworICAgIGFs
bG9jYXRvci0+cmVsZWFzZVJhbmdlKGlkLCBrTWF4UG9zc2libGVSYW5nZSk7CisgICAgR0x1aW50
IGlkMyA9IGFsbG9jYXRvci0+YWxsb2NhdGVSYW5nZShrTWF4UG9zc2libGVSYW5nZSk7CisgICAg
RVhQRUNUX0VRKDF1LCBpZDMpOworfQorCisvLyBDaGVja3MgYWxsb2NhdGluZyBhIHJhbmdlIHRo
YXQgY29uc3VtZXMgdGhlIHdob2xlIHVpbnQzMiBzcGFjZQorLy8gY2F1c2VzIG5leHQgYWxsb2Nh
dGlvbiB0byBmYWlsLgorLy8gU3Vic2VxdWVudGx5IGNoZWNrcyB0aGF0IG9uY2UgdGhlIGJpZyBy
YW5nZSBpcyByZWR1Y2VkIG5ldyBhbGxvY2F0aW9ucworLy8gYXJlIHBvc3NpYmxlLgorVEVTVF9G
KEhhbmRsZVJhbmdlQWxsb2NhdG9yVGVzdCwgQWxsb2NhdGVGdWxsUmFuZ2UpCit7CisgICAgY29u
c3QgdWludDMyX3Qga01heFBvc3NpYmxlUmFuZ2UgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQz
Ml90Pjo6bWF4KCk7CisgICAgY29uc3QgR0x1aW50IGtGcmVlZElkICAgICAgICAgICAgPSA1NTV1
OworICAgIGF1dG8gKmFsbG9jYXRvciAgICAgICAgICAgICAgICAgID0gZ2V0QWxsb2NhdG9yKCk7
CisKKyAgICBHTHVpbnQgaWQxID0gYWxsb2NhdG9yLT5hbGxvY2F0ZVJhbmdlKGtNYXhQb3NzaWJs
ZVJhbmdlKTsKKyAgICBFWFBFQ1RfRVEoMXUsIGlkMSk7CisgICAgR0x1aW50IGlkMiA9IGFsbG9j
YXRvci0+YWxsb2NhdGUoKTsKKyAgICBFWFBFQ1RfRVEoZ2w6OkhhbmRsZVJhbmdlQWxsb2NhdG9y
OjprSW52YWxpZEhhbmRsZSwgaWQyKTsKKyAgICBhbGxvY2F0b3ItPnJlbGVhc2Uoa0ZyZWVkSWQp
OworICAgIEdMdWludCBpZDMgPSBhbGxvY2F0b3ItPmFsbG9jYXRlKCk7CisgICAgRVhQRUNUX0VR
KGtGcmVlZElkLCBpZDMpOworICAgIEdMdWludCBpZDQgPSBhbGxvY2F0b3ItPmFsbG9jYXRlKCk7
CisgICAgRVhQRUNUX0VRKDB1LCBpZDQpOworICAgIGFsbG9jYXRvci0+cmVsZWFzZShrRnJlZWRJ
ZCArIDF1KTsKKyAgICBhbGxvY2F0b3ItPnJlbGVhc2Uoa0ZyZWVkSWQgKyA0dSk7CisgICAgYWxs
b2NhdG9yLT5yZWxlYXNlKGtGcmVlZElkICsgM3UpOworICAgIGFsbG9jYXRvci0+cmVsZWFzZShr
RnJlZWRJZCArIDV1KTsKKyAgICBhbGxvY2F0b3ItPnJlbGVhc2Uoa0ZyZWVkSWQgKyAydSk7Cisg
ICAgR0x1aW50IGlkNSA9IGFsbG9jYXRvci0+YWxsb2NhdGVSYW5nZSg1KTsKKyAgICBFWFBFQ1Rf
RVEoa0ZyZWVkSWQgKyAxdSwgaWQ1KTsKK30KKworLy8gQ2hlY2tzIHRoYXQgYWxsb2NhdGluZyBh
IHJhbmdlIHRoYXQgZXhjZWVkcyB1aW50MzIKKy8vIGRvZXMgbm90IHdyYXAgaW5jb3JyZWN0bHkg
YW5kIGZhaWxzLgorVEVTVF9GKEhhbmRsZVJhbmdlQWxsb2NhdG9yVGVzdCwgQWxsb2NhdGVSYW5n
ZU5vV3JhcEluUmFuZ2UpCit7CisgICAgY29uc3QgdWludDMyX3Qga01heFBvc3NpYmxlUmFuZ2Ug
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCk7CisgICAgY29uc3QgR0x1aW50
IGtBbGxvY0lkICAgICAgICAgICAgPSAxMHU7CisgICAgYXV0byAqYWxsb2NhdG9yICAgICAgICAg
ICAgICAgICAgPSBnZXRBbGxvY2F0b3IoKTsKKworICAgIEdMdWludCBpZDEgPSBhbGxvY2F0b3It
PmFsbG9jYXRlQXRPckFib3ZlKGtBbGxvY0lkKTsKKyAgICBFWFBFQ1RfRVEoa0FsbG9jSWQsIGlk
MSk7CisgICAgR0x1aW50IGlkMiA9IGFsbG9jYXRvci0+YWxsb2NhdGVSYW5nZShrTWF4UG9zc2li
bGVSYW5nZSAtIDV1KTsKKyAgICBFWFBFQ1RfRVEoMHUsIGlkMik7CisgICAgR0x1aW50IGlkMyA9
IGFsbG9jYXRvci0+YWxsb2NhdGVSYW5nZShrTWF4UG9zc2libGVSYW5nZSAtIGtBbGxvY0lkKTsK
KyAgICBFWFBFQ1RfRVEoa0FsbG9jSWQgKyAxdSwgaWQzKTsKK30KKworLy8gQ2hlY2sgc3BlY2lh
bCBjYXNlcyBmb3IgMCByYW5nZSBhbGxvY2F0aW9ucyBhbmQgemVybyBoYW5kbGVzLgorVEVTVF9G
KEhhbmRsZVJhbmdlQWxsb2NhdG9yVGVzdCwgWmVyb0lkQ2FzZXMpCit7CisgICAgYXV0byAqYWxs
b2NhdG9yID0gZ2V0QWxsb2NhdG9yKCk7CisgICAgRVhQRUNUX0ZBTFNFKGFsbG9jYXRvci0+aXNV
c2VkKDApKTsKKyAgICBHTHVpbnQgaWQxID0gYWxsb2NhdG9yLT5hbGxvY2F0ZUF0T3JBYm92ZSgw
KTsKKyAgICBFWFBFQ1RfTkUoMHUsIGlkMSk7CisgICAgRVhQRUNUX0ZBTFNFKGFsbG9jYXRvci0+
aXNVc2VkKDApKTsKKyAgICBhbGxvY2F0b3ItPnJlbGVhc2UoMCk7CisgICAgRVhQRUNUX0ZBTFNF
KGFsbG9jYXRvci0+aXNVc2VkKDApKTsKKyAgICBFWFBFQ1RfVFJVRShhbGxvY2F0b3ItPmlzVXNl
ZChpZDEpKTsKKyAgICBhbGxvY2F0b3ItPnJlbGVhc2UoaWQxKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
YWxsb2NhdG9yLT5pc1VzZWQoaWQxKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9JbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL0ltYWdlLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEsNiAr
MTEsNyBAQAogI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgogI2luY2x1ZGUgImNvbW1vbi91dGls
aXRpZXMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgiCisjaW5jbHVkZSAibGli
QU5HTEUvZm9ybWF0dXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9UZXh0dXJlLmgiCiAjaW5j
bHVkZSAibGliQU5HTEUvUmVuZGVyYnVmZmVyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvSW1hZ2VJbXBsLmgiCkBAIC04Miw3ICs4Myw3IEBAIHZvaWQgSW1hZ2VTaWJsaW5nOjpyZW1v
dmVJbWFnZVNvdXJjZShlZ2wKIEltYWdlOjpJbWFnZShyeDo6SW1hZ2VJbXBsICppbXBsLCBFR0xl
bnVtIHRhcmdldCwgSW1hZ2VTaWJsaW5nICpidWZmZXIsIGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0
cmlicykKICAgICA6IFJlZkNvdW50T2JqZWN0KDApLAogICAgICAgbUltcGxlbWVudGF0aW9uKGlt
cGwpLAotICAgICAgbUludGVybmFsRm9ybWF0KEdMX05PTkUpLAorICAgICAgbUZvcm1hdChnbDo6
Rm9ybWF0OjpJbnZhbGlkKCkpLAogICAgICAgbVdpZHRoKDApLAogICAgICAgbUhlaWdodCgwKSwK
ICAgICAgIG1TYW1wbGVzKDApLApAQCAtMTAwLDcgKzEwMSw3IEBAIEltYWdlOjpJbWFnZShyeDo6
SW1hZ2VJbXBsICppbXBsLCBFR0xlbnUKICAgICAgICAgZ2w6OlRleHR1cmUgKnRleHR1cmUgPSBy
eDo6R2V0QXM8Z2w6OlRleHR1cmU+KG1Tb3VyY2UuZ2V0KCkpOwogICAgICAgICBHTGVudW0gdGV4
dHVyZVRhcmdldCA9IGVnbF9nbDo6RUdMSW1hZ2VUYXJnZXRUb0dMVGV4dHVyZVRhcmdldCh0YXJn
ZXQpOwogICAgICAgICBzaXplX3QgbGV2ZWwgICAgICAgICA9IGF0dHJpYnMuZ2V0KEVHTF9HTF9U
RVhUVVJFX0xFVkVMX0tIUiwgMCk7Ci0gICAgICAgIG1JbnRlcm5hbEZvcm1hdCAgICAgID0gdGV4
dHVyZS0+Z2V0SW50ZXJuYWxGb3JtYXQodGV4dHVyZVRhcmdldCwgbGV2ZWwpOworICAgICAgICBt
Rm9ybWF0ICAgICAgICAgICAgICA9IHRleHR1cmUtPmdldEZvcm1hdCh0ZXh0dXJlVGFyZ2V0LCBs
ZXZlbCk7CiAgICAgICAgIG1XaWR0aCAgICAgICAgICAgICAgID0gdGV4dHVyZS0+Z2V0V2lkdGgo
dGV4dHVyZVRhcmdldCwgbGV2ZWwpOwogICAgICAgICBtSGVpZ2h0ICAgICAgICAgICAgICA9IHRl
eHR1cmUtPmdldEhlaWdodCh0ZXh0dXJlVGFyZ2V0LCBsZXZlbCk7CiAgICAgICAgIG1TYW1wbGVz
ICAgICAgICAgICAgID0gMDsKQEAgLTEwOCw3ICsxMDksNyBAQCBJbWFnZTo6SW1hZ2Uocng6Oklt
YWdlSW1wbCAqaW1wbCwgRUdMZW51CiAgICAgZWxzZSBpZiAoSXNSZW5kZXJidWZmZXJUYXJnZXQo
dGFyZ2V0KSkKICAgICB7CiAgICAgICAgIGdsOjpSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlciA9
IHJ4OjpHZXRBczxnbDo6UmVuZGVyYnVmZmVyPihtU291cmNlLmdldCgpKTsKLSAgICAgICAgbUlu
dGVybmFsRm9ybWF0ICAgICAgICAgICAgICAgID0gcmVuZGVyYnVmZmVyLT5nZXRJbnRlcm5hbEZv
cm1hdCgpOworICAgICAgICBtRm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICAgPSByZW5kZXJi
dWZmZXItPmdldEZvcm1hdCgpOwogICAgICAgICBtV2lkdGggICAgICAgICAgICAgICAgICAgICAg
ICAgPSByZW5kZXJidWZmZXItPmdldFdpZHRoKCk7CiAgICAgICAgIG1IZWlnaHQgICAgICAgICAg
ICAgICAgICAgICAgICA9IHJlbmRlcmJ1ZmZlci0+Z2V0SGVpZ2h0KCk7CiAgICAgICAgIG1TYW1w
bGVzICAgICAgICAgICAgICAgICAgICAgICA9IHJlbmRlcmJ1ZmZlci0+Z2V0U2FtcGxlcygpOwpA
QCAtMTYwLDkgKzE2MSw5IEBAIGdsOjpFcnJvciBJbWFnZTo6b3JwaGFuU2libGluZyhJbWFnZVNp
YmwKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKLUdMZW51bSBJbWFnZTo6Z2V0SW50ZXJuYWxGb3Jt
YXQoKSBjb25zdAorY29uc3QgZ2w6OkZvcm1hdCAmSW1hZ2U6OmdldEZvcm1hdCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1JbnRlcm5hbEZvcm1hdDsKKyAgICByZXR1cm4gbUZvcm1hdDsKIH0KIAog
c2l6ZV90IEltYWdlOjpnZXRXaWR0aCgpIGNvbnN0CkBAIC0xODksNCArMTkwLDQgQEAgY29uc3Qg
cng6OkltYWdlSW1wbCAqSW1hZ2U6OmdldEltcGxlbWVudAogewogICAgIHJldHVybiBtSW1wbGVt
ZW50YXRpb247CiB9Ci19Cit9ICAvLyBuYW1lc3BhY2UgZWdsCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSW1hZ2UuaAkocmV2aXNpb24gMjA3ODA0KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ltYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEzLDYgKzEzLDcgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9BdHRyaWJ1dGVNYXAuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9FcnJvci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1JlZkNvdW50
T2JqZWN0LmgiCisjaW5jbHVkZSAibGliQU5HTEUvZm9ybWF0dXRpbHMuaCIKIAogI2luY2x1ZGUg
PHNldD4KIApAQCAtNTcsNyArNTgsNyBAQCBjbGFzcyBJbWFnZSBmaW5hbCA6IHB1YmxpYyBSZWZD
b3VudE9iamVjCiAgICAgSW1hZ2Uocng6OkltYWdlSW1wbCAqaW1wbCwgRUdMZW51bSB0YXJnZXQs
IEltYWdlU2libGluZyAqYnVmZmVyLCBjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpOwogICAg
IH5JbWFnZSgpOwogCi0gICAgR0xlbnVtIGdldEludGVybmFsRm9ybWF0KCkgY29uc3Q7CisgICAg
Y29uc3QgZ2w6OkZvcm1hdCAmZ2V0Rm9ybWF0KCkgY29uc3Q7CiAgICAgc2l6ZV90IGdldFdpZHRo
KCkgY29uc3Q7CiAgICAgc2l6ZV90IGdldEhlaWdodCgpIGNvbnN0OwogICAgIHNpemVfdCBnZXRT
YW1wbGVzKCkgY29uc3Q7CkBAIC03OCw3ICs3OSw3IEBAIGNsYXNzIEltYWdlIGZpbmFsIDogcHVi
bGljIFJlZkNvdW50T2JqZWMKIAogICAgIHJ4OjpJbWFnZUltcGwgKm1JbXBsZW1lbnRhdGlvbjsK
IAotICAgIEdMZW51bSBtSW50ZXJuYWxGb3JtYXQ7CisgICAgZ2w6OkZvcm1hdCBtRm9ybWF0Owog
ICAgIHNpemVfdCBtV2lkdGg7CiAgICAgc2l6ZV90IG1IZWlnaHQ7CiAgICAgc2l6ZV90IG1TYW1w
bGVzOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ltYWdlSW5k
ZXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9JbWFnZUluZGV4LmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL0ltYWdlSW5kZXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2
ICsyNywxMSBAQCBJbWFnZUluZGV4ICZJbWFnZUluZGV4OjpvcGVyYXRvcj0oY29uc3QgCiAgICAg
cmV0dXJuICp0aGlzOwogfQogCitib29sIEltYWdlSW5kZXg6OmlzM0QoKSBjb25zdAoreworICAg
IHJldHVybiB0eXBlID09IEdMX1RFWFRVUkVfM0QgfHwgdHlwZSA9PSBHTF9URVhUVVJFXzJEX0FS
UkFZOworfQorCiBJbWFnZUluZGV4IEltYWdlSW5kZXg6Ok1ha2UyRChHTGludCBtaXBJbmRleCkK
IHsKICAgICByZXR1cm4gSW1hZ2VJbmRleChHTF9URVhUVVJFXzJELCBtaXBJbmRleCwgRU5USVJF
X0xFVkVMKTsKQEAgLTc4LDYgKzgzLDE2IEBAIGJvb2wgSW1hZ2VJbmRleDo6b3BlcmF0b3I8KGNv
bnN0IEltYWdlSW4KICAgICB9CiB9CiAKK2Jvb2wgSW1hZ2VJbmRleDo6b3BlcmF0b3I9PShjb25z
dCBJbWFnZUluZGV4ICZvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gKHR5cGUgPT0gb3RoZXIu
dHlwZSkgJiYgKG1pcEluZGV4ID09IG90aGVyLm1pcEluZGV4KSAmJiAobGF5ZXJJbmRleCA9PSBv
dGhlci5sYXllckluZGV4KTsKK30KKworYm9vbCBJbWFnZUluZGV4OjpvcGVyYXRvciE9KGNvbnN0
IEltYWdlSW5kZXggJm90aGVyKSBjb25zdAoreworICAgIHJldHVybiAhKCp0aGlzID09IG90aGVy
KTsKK30KKwogSW1hZ2VJbmRleDo6SW1hZ2VJbmRleChHTGVudW0gdHlwZUluLCBHTGludCBtaXBJ
bmRleEluLCBHTGludCBsYXllckluZGV4SW4pCiAgICAgOiB0eXBlKHR5cGVJbiksCiAgICAgICBt
aXBJbmRleChtaXBJbmRleEluKSwKQEAgLTEyMCw3ICsxMzUsMTIgQEAgSW1hZ2VJbmRleEl0ZXJh
dG9yOjpJbWFnZUluZGV4SXRlcmF0b3IoRwogCiBHTGludCBJbWFnZUluZGV4SXRlcmF0b3I6Om1h
eExheWVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gKG1MYXllckNvdW50cyA/IHN0YXRpY19jYXN0
PEdMaW50PihtTGF5ZXJDb3VudHNbbUN1cnJlbnRNaXBdKSA6IG1MYXllclJhbmdlLmVuZCk7Cisg
ICAgaWYgKG1MYXllckNvdW50cykKKyAgICB7CisgICAgICAgIEFTU0VSVChtQ3VycmVudE1pcCA+
PSAwKTsKKyAgICAgICAgcmV0dXJuIChtQ3VycmVudE1pcCA8IG1NaXBSYW5nZS5lbmQpID8gbUxh
eWVyQ291bnRzW21DdXJyZW50TWlwXSA6IDA7CisgICAgfQorICAgIHJldHVybiBtTGF5ZXJSYW5n
ZS5lbmQ7CiB9CiAKIEltYWdlSW5kZXggSW1hZ2VJbmRleEl0ZXJhdG9yOjpuZXh0KCkKQEAgLTEz
NCwyMSArMTU0LDI5IEBAIEltYWdlSW5kZXggSW1hZ2VJbmRleEl0ZXJhdG9yOjpuZXh0KCkKIAog
ICAgIGlmIChtQ3VycmVudExheWVyICE9IEltYWdlSW5kZXg6OkVOVElSRV9MRVZFTCkKICAgICB7
Ci0gICAgICAgIGlmIChtQ3VycmVudExheWVyIDwgbWF4TGF5ZXIoKS0xKQorICAgICAgICBpZiAo
bUN1cnJlbnRMYXllciA8IG1heExheWVyKCkgLSAxKQogICAgICAgICB7CiAgICAgICAgICAgICBt
Q3VycmVudExheWVyKys7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobUN1cnJlbnRNaXAg
PCBtTWlwUmFuZ2UuZW5kLTEpCisgICAgICAgIGVsc2UgaWYgKG1DdXJyZW50TWlwIDwgbU1pcFJh
bmdlLmVuZCAtIDEpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1DdXJyZW50TWlwKys7CiAgICAg
ICAgICAgICBtQ3VycmVudExheWVyID0gbUxheWVyUmFuZ2Uuc3RhcnQ7CiAgICAgICAgIH0KKyAg
ICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0KICAg
ICB9Ci0gICAgZWxzZSBpZiAobUN1cnJlbnRNaXAgPCBtTWlwUmFuZ2UuZW5kLTEpCisgICAgZWxz
ZSBpZiAobUN1cnJlbnRNaXAgPCBtTWlwUmFuZ2UuZW5kIC0gMSkKICAgICB7CiAgICAgICAgIG1D
dXJyZW50TWlwKys7CiAgICAgICAgIG1DdXJyZW50TGF5ZXIgPSBtTGF5ZXJSYW5nZS5zdGFydDsK
ICAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgZG9uZSgpOworICAgIH0KIAogICAgIHJl
dHVybiB2YWx1ZTsKIH0KQEAgLTE3MCw0ICsxOTgsMTAgQEAgYm9vbCBJbWFnZUluZGV4SXRlcmF0
b3I6Omhhc05leHQoKSBjb25zdAogICAgIHJldHVybiAobUN1cnJlbnRNaXAgPCBtTWlwUmFuZ2Uu
ZW5kIHx8IG1DdXJyZW50TGF5ZXIgPCBtYXhMYXllcigpKTsKIH0KIAordm9pZCBJbWFnZUluZGV4
SXRlcmF0b3I6OmRvbmUoKQoreworICAgIG1DdXJyZW50TWlwICAgPSBtTWlwUmFuZ2UuZW5kOwor
ICAgIG1DdXJyZW50TGF5ZXIgPSBtYXhMYXllcigpOwogfQorCit9ICAvLyBuYW1lc3BhY2UgZ2wK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9JbWFnZUluZGV4LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ltYWdl
SW5kZXguaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL0ltYWdlSW5kZXguaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQCBz
dHJ1Y3QgSW1hZ2VJbmRleAogICAgIEltYWdlSW5kZXggJm9wZXJhdG9yPShjb25zdCBJbWFnZUlu
ZGV4ICZvdGhlcik7CiAKICAgICBib29sIGhhc0xheWVyKCkgY29uc3QgeyByZXR1cm4gbGF5ZXJJ
bmRleCAhPSBFTlRJUkVfTEVWRUw7IH0KKyAgICBib29sIGlzM0QoKSBjb25zdDsKIAogICAgIHN0
YXRpYyBJbWFnZUluZGV4IE1ha2UyRChHTGludCBtaXBJbmRleCk7CiAgICAgc3RhdGljIEltYWdl
SW5kZXggTWFrZUN1YmUoR0xlbnVtIHRhcmdldCwgR0xpbnQgbWlwSW5kZXgpOwpAQCAtNDAsNiAr
NDEsOCBAQCBzdHJ1Y3QgSW1hZ2VJbmRleAogICAgIHN0YXRpYyBjb25zdCBHTGludCBFTlRJUkVf
TEVWRUwgPSBzdGF0aWNfY2FzdDxHTGludD4oLTEpOwogCiAgICAgYm9vbCBvcGVyYXRvcjwoY29u
c3QgSW1hZ2VJbmRleCAmb3RoZXIpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJ
bWFnZUluZGV4ICZvdGhlcikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEltYWdl
SW5kZXggJm90aGVyKSBjb25zdDsKIAogICBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBJbWFn
ZUluZGV4SXRlcmF0b3I7CkBAIC02NSw2ICs2OCw3IEBAIGNsYXNzIEltYWdlSW5kZXhJdGVyYXRv
cgogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSYW5nZTxHTGludD4gJmxheWVyUmFuZ2Us
IGNvbnN0IEdMc2l6ZWkgKmxheWVyQ291bnRzKTsKIAogICAgIEdMaW50IG1heExheWVyKCkgY29u
c3Q7CisgICAgdm9pZCBkb25lKCk7CiAKICAgICBHTGVudW0gbVR5cGU7CiAgICAgUmFuZ2U8R0xp
bnQ+IG1NaXBSYW5nZTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9JbWFnZUluZGV4SXRlcmF0b3JfdW5pdHRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9JbWFnZUluZGV4SXRlcmF0b3JfdW5pdHRlc3Qu
Y3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvSW1hZ2VJbmRleEl0ZXJhdG9yX3VuaXR0ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDEsNiArNDEsOCBAQCBURVNUKEltYWdlSW5kZXhUZXN0LCBJdGVyYXRvcjJEKQogICAgICAgICBF
WFBFQ1RfRVEoY3VycmVudC5taXBJbmRleCwgbmV4dEluZGV4Lm1pcEluZGV4KTsKICAgICAgICAg
RVhQRUNUX0VRKGN1cnJlbnQubGF5ZXJJbmRleCwgbmV4dEluZGV4LmxheWVySW5kZXgpOwogICAg
IH0KKworICAgIEVYUEVDVF9GQUxTRShpdGVyLmhhc05leHQoKSk7CiB9CiAKIFRFU1QoSW1hZ2VJ
bmRleFRlc3QsIEl0ZXJhdG9yQ3ViZSkKQEAgLTY0LDYgKzY2LDggQEAgVEVTVChJbWFnZUluZGV4
VGVzdCwgSXRlcmF0b3JDdWJlKQogICAgICAgICAgICAgRVhQRUNUX1RSVUUobmV4dEluZGV4Lmhh
c0xheWVyKCkpOwogICAgICAgICB9CiAgICAgfQorCisgICAgRVhQRUNUX0ZBTFNFKGl0ZXIuaGFz
TmV4dCgpKTsKIH0KIAogVEVTVChJbWFnZUluZGV4VGVzdCwgSXRlcmF0b3IzRCkKQEAgLTg1LDYg
Kzg5LDggQEAgVEVTVChJbWFnZUluZGV4VGVzdCwgSXRlcmF0b3IzRCkKICAgICAgICAgICAgIEVY
UEVDVF9UUlVFKG5leHRJbmRleC5oYXNMYXllcigpKTsKICAgICAgICAgfQogICAgIH0KKworICAg
IEVYUEVDVF9GQUxTRShpdGVyLmhhc05leHQoKSk7CiB9CiAKIFRFU1QoSW1hZ2VJbmRleFRlc3Qs
IEl0ZXJhdG9yMkRBcnJheSkKQEAgLTEwOSw2ICsxMTUsOCBAQCBURVNUKEltYWdlSW5kZXhUZXN0
LCBJdGVyYXRvcjJEQXJyYXkpCiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShuZXh0SW5kZXguaGFz
TGF5ZXIoKSk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICBFWFBFQ1RfRkFMU0UoaXRlci5oYXNO
ZXh0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL0ltYWdlX3VuaXR0ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSW1hZ2VfdW5pdHRlc3QuY3BwCShyZXZpc2lv
biAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSW1hZ2Vf
dW5pdHRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw4ICsxNCwxMCBAQAogI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL0ltYWdlSW1wbF9tb2NrLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvVGV4dHVyZUltcGxfbW9jay5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L1JlbmRlcmJ1ZmZlckltcGxfbW9jay5oIgorI2luY2x1ZGUgInRlc3RzL2FuZ2xlX3VuaXR0ZXN0
c191dGlscy5oIgogCiB1c2luZyA6OnRlc3Rpbmc6Ol87Cit1c2luZyA6OnRlc3Rpbmc6Ok5pY2VN
b2NrOwogdXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47CiAKIG5hbWVzcGFjZSBhbmdsZQpAQCAtMjMs
OSArMjUsMTEgQEAgbmFtZXNwYWNlIGFuZ2xlCiAvLyBWZXJpZnkgcmVmIGNvdW50cyBhcmUgbWFp
bnRhaW5lZCBiZXR3ZWVuIGltYWdlcyBhbmQgdGhlaXIgc2libGluZ3Mgd2hlbiBvYmplY3RzIGFy
ZSBkZWxldGVkCiBURVNUKEltYWdlVGVzdCwgUmVmQ291bnRpbmcpCiB7CisgICAgTmljZU1vY2s8
cng6Ok1vY2tHTEZhY3Rvcnk+IG1vY2tGYWN0b3J5OwogICAgIC8vIENyZWF0ZSBhIHRleHR1cmUg
YW5kIGFuIEVHTCBpbWFnZSB0aGF0IHVzZXMgdGhlIHRleHR1cmUgYXMgaXRzIHNvdXJjZQogICAg
IHJ4OjpNb2NrVGV4dHVyZUltcGwgKnRleHR1cmVJbXBsID0gbmV3IHJ4OjpNb2NrVGV4dHVyZUlt
cGwoKTsKLSAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSA9IG5ldyBnbDo6VGV4dHVyZSh0ZXh0dXJl
SW1wbCwgMSwgR0xfVEVYVFVSRV8yRCk7CisgICAgRVhQRUNUX0NBTEwobW9ja0ZhY3RvcnksIGNy
ZWF0ZVRleHR1cmUoXykpLldpbGxPbmNlKFJldHVybih0ZXh0dXJlSW1wbCkpOworICAgIGdsOjpU
ZXh0dXJlICp0ZXh0dXJlID0gbmV3IGdsOjpUZXh0dXJlKCZtb2NrRmFjdG9yeSwgMSwgR0xfVEVY
VFVSRV8yRCk7CiAgICAgdGV4dHVyZS0+YWRkUmVmKCk7CiAKICAgICByeDo6TW9ja0ltYWdlSW1w
bCAqaW1hZ2VJbXBsID0gbmV3IHJ4OjpNb2NrSW1hZ2VJbXBsKCk7CkBAIC04Miw5ICs4NiwxMSBA
QCBURVNUKEltYWdlVGVzdCwgUmVmQ291bnRpbmcpCiAvLyBWZXJpZnkgdGhhdCByZXNwZWNpZml5
aW5nIHRleHR1cmVzIHJlbGVhc2VzIHJlZmVyZW5jZXMgdG8gdGhlIEltYWdlLgogVEVTVChJbWFn
ZVRlc3QsIFJlc3BlY2lmaWNhdGlvblJlbGVhc2VzUmVmZXJlbmNlcykKIHsKKyAgICBOaWNlTW9j
azxyeDo6TW9ja0dMRmFjdG9yeT4gbW9ja0ZhY3Rvcnk7CiAgICAgLy8gQ3JlYXRlIGEgdGV4dHVy
ZSBhbmQgYW4gRUdMIGltYWdlIHRoYXQgdXNlcyB0aGUgdGV4dHVyZSBhcyBpdHMgc291cmNlCiAg
ICAgcng6Ok1vY2tUZXh0dXJlSW1wbCAqdGV4dHVyZUltcGwgPSBuZXcgcng6Ok1vY2tUZXh0dXJl
SW1wbCgpOwotICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJlID0gbmV3IGdsOjpUZXh0dXJlKHRleHR1
cmVJbXBsLCAxLCBHTF9URVhUVVJFXzJEKTsKKyAgICBFWFBFQ1RfQ0FMTChtb2NrRmFjdG9yeSwg
Y3JlYXRlVGV4dHVyZShfKSkuV2lsbE9uY2UoUmV0dXJuKHRleHR1cmVJbXBsKSk7CisgICAgZ2w6
OlRleHR1cmUgKnRleHR1cmUgPSBuZXcgZ2w6OlRleHR1cmUoJm1vY2tGYWN0b3J5LCAxLCBHTF9U
RVhUVVJFXzJEKTsKICAgICB0ZXh0dXJlLT5hZGRSZWYoKTsKIAogICAgIGdsOjpQaXhlbFVucGFj
a1N0YXRlIGRlZmF1bHRVbnBhY2tTdGF0ZTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9QYXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvUGF0aC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1BhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNzggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFBhdGguaDogRGVmaW5lcyB0aGUgZ2w6
OlBhdGggY2xhc3MsIHJlcHJlc2VudGluZyBDSFJPTUlVTV9wYXRoX3JlbmRlcmluZworLy8gcGF0
aCBvYmplY3QuCisKKyNpbmNsdWRlICJsaWJBTkdMRS9QYXRoLmgiCisjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvUGF0aEltcGwuaCIKKworI2luY2x1ZGUgImNvbW1vbi9tYXRodXRpbC5oIgor
I2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgZ2wKK3sKKworUGF0aDo6UGF0
aChyeDo6UGF0aEltcGwgKmltcGwpCisgICAgOiBtUGF0aChpbXBsKSwKKyAgICAgIG1IYXNEYXRh
KGZhbHNlKSwKKyAgICAgIG1FbmRDYXBzKEdMX0ZMQVRfQ0hST01JVU0pLAorICAgICAgbUpvaW5T
dHlsZShHTF9NSVRFUl9SRVZFUlRfQ0hST01JVU0pLAorICAgICAgbVN0cm9rZVdpZHRoKDEuMGYp
LAorICAgICAgbVN0cm9rZUJvdW5kKDAuMmYpLAorICAgICAgbU1pdGVyTGltaXQoNC4wZikKK3sK
K30KKworUGF0aDo6flBhdGgoKQoreworICAgIGRlbGV0ZSBtUGF0aDsKK30KKworRXJyb3IgUGF0
aDo6c2V0Q29tbWFuZHMoR0xzaXplaSBudW1Db21tYW5kcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMdWJ5dGUgKmNvbW1hbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBudW1Db29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY29vcmRUeXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqY29vcmRzKQoreworICAgIEFO
R0xFX1RSWShtUGF0aC0+c2V0Q29tbWFuZHMobnVtQ29tbWFuZHMsIGNvbW1hbmRzLCBudW1Db29y
ZHMsIGNvb3JkVHlwZSwgY29vcmRzKSk7CisKKyAgICBtSGFzRGF0YSA9IHRydWU7CisKKyAgICBy
ZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKK30KKwordm9pZCBQYXRoOjpzZXRTdHJva2VXaWR0aChHTGZs
b2F0IHdpZHRoKQoreworICAgIG1TdHJva2VXaWR0aCA9IHdpZHRoOworICAgIG1QYXRoLT5zZXRQ
YXRoUGFyYW1ldGVyKEdMX1BBVEhfU1RST0tFX1dJRFRIX0NIUk9NSVVNLCBtU3Ryb2tlV2lkdGgp
OworfQorCit2b2lkIFBhdGg6OnNldFN0cm9rZUJvdW5kKEdMZmxvYXQgYm91bmQpCit7CisgICAg
bVN0cm9rZUJvdW5kID0gY2xhbXAoYm91bmQsIDAuMGYsIDEuMGYpOworICAgIG1QYXRoLT5zZXRQ
YXRoUGFyYW1ldGVyKEdMX1BBVEhfU1RST0tFX0JPVU5EX0NIUk9NSVVNLCBtU3Ryb2tlQm91bmQp
OworfQorCit2b2lkIFBhdGg6OnNldEVuZENhcHMoR0xlbnVtIHR5cGUpCit7CisgICAgbUVuZENh
cHMgPSB0eXBlOworICAgIG1QYXRoLT5zZXRQYXRoUGFyYW1ldGVyKEdMX1BBVEhfRU5EX0NBUFNf
Q0hST01JVU0sIHN0YXRpY19jYXN0PEdMZmxvYXQ+KHR5cGUpKTsKK30KKwordm9pZCBQYXRoOjpz
ZXRKb2luU3R5bGUoR0xlbnVtIHR5cGUpCit7CisgICAgbUpvaW5TdHlsZSA9IHR5cGU7CisgICAg
bVBhdGgtPnNldFBhdGhQYXJhbWV0ZXIoR0xfUEFUSF9KT0lOX1NUWUxFX0NIUk9NSVVNLCBzdGF0
aWNfY2FzdDxHTGZsb2F0Pih0eXBlKSk7Cit9CisKK3ZvaWQgUGF0aDo6c2V0TWl0ZXJMaW1pdChH
TGZsb2F0IHZhbHVlKQoreworICAgIG1NaXRlckxpbWl0ID0gdmFsdWU7CisgICAgbVBhdGgtPnNl
dFBhdGhQYXJhbWV0ZXIoR0xfUEFUSF9NSVRFUl9MSU1JVF9DSFJPTUlVTSwgdmFsdWUpOworfQor
Cit9ICAvLyBnbApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Bh
dGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
UGF0aC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9QYXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MSBAQAorLy8KKy8vIENvcHly
aWdodCAoYykgMjAwMi0yMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKworLy8gUGF0aC5oOiBEZWZpbmVzIHRoZSBnbDo6UGF0aCBjbGFzcywgcmVwcmVzZW50
aW5nIENIUk9NSVVNX3BhdGhfcmVuZGVyaW5nCisvLyBwYXRoIG9iamVjdC4KKworI2lmbmRlZiBM
SUJBTkdMRV9QQVRIX0hfCisjZGVmaW5lIExJQkFOR0xFX1BBVEhfSF8KKworI2luY2x1ZGUgImFu
Z2xlX2dsLmgiCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJsaWJB
TkdMRS9FcnJvci5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1JlZkNvdW50T2JqZWN0LmgiCisKK25h
bWVzcGFjZSByeAoreworY2xhc3MgUGF0aEltcGw7Cit9CisKK25hbWVzcGFjZSBnbAoreworY2xh
c3MgUGF0aCBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQoreworICBwdWJsaWM6CisgICAgUGF0
aChyeDo6UGF0aEltcGwgKmltcGwpOworCisgICAgflBhdGgoKTsKKworICAgIEVycm9yIHNldENv
bW1hbmRzKEdMc2l6ZWkgbnVtQ29tbWFuZHMsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0x1Ynl0ZSAqY29tbWFuZHMsCisgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1Db29y
ZHMsCisgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvb3JkVHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB2b2lkICpjb29yZHMpOworCisgICAgdm9pZCBzZXRTdHJva2VXaWR0
aChHTGZsb2F0IHdpZHRoKTsKKyAgICB2b2lkIHNldFN0cm9rZUJvdW5kKEdMZmxvYXQgYm91bmQp
OworICAgIHZvaWQgc2V0RW5kQ2FwcyhHTGVudW0gdHlwZSk7CisgICAgdm9pZCBzZXRKb2luU3R5
bGUoR0xlbnVtIHR5cGUpOworICAgIHZvaWQgc2V0TWl0ZXJMaW1pdChHTGZsb2F0IHZhbHVlKTsK
KworICAgIEdMZmxvYXQgZ2V0U3Ryb2tlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtU3Ryb2tlV2lk
dGg7IH0KKyAgICBHTGZsb2F0IGdldFN0cm9rZUJvdW5kKCkgY29uc3QgeyByZXR1cm4gbVN0cm9r
ZUJvdW5kOyB9CisgICAgR0xmbG9hdCBnZXRNaXRlckxpbWl0KCkgY29uc3QgeyByZXR1cm4gbU1p
dGVyTGltaXQ7IH0KKyAgICBHTGVudW0gZ2V0RW5kQ2FwcygpIGNvbnN0IHsgcmV0dXJuIG1FbmRD
YXBzOyB9CisgICAgR0xlbnVtIGdldEpvaW5TdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1Kb2luU3R5
bGU7IH0KKworICAgIGJvb2wgaGFzUGF0aERhdGEoKSBjb25zdCB7IHJldHVybiBtSGFzRGF0YTsg
fQorCisgICAgcng6OlBhdGhJbXBsICpnZXRJbXBsZW1lbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1QYXRoOyB9CisKKyAgcHJpdmF0ZToKKyAgICByeDo6UGF0aEltcGwgKm1QYXRoOworCisgICAg
Ly8gYSBQYXRoIG9iamVjdCBpcyBub3QgYWN0dWFsbHkgY29uc2lkZXJlZCAiYSBwYXRoIgorICAg
IC8vIHVudGlsbCBpdCBoYXMgYmVlbiBzcGVjaWZpZWQgd2l0aCBkYXRhLiBTbyB3ZSdsbAorICAg
IC8vIGtlZXAgdGhpcyBmbGFnIHRvIHN1cHBvcnQgdGhpcyBzZW1hbnRpY3MuCisgICAgYm9vbCBt
SGFzRGF0YTsKKworICAgIEdMZW51bSBtRW5kQ2FwczsKKyAgICBHTGVudW0gbUpvaW5TdHlsZTsK
KyAgICBHTGZsb2F0IG1TdHJva2VXaWR0aDsKKyAgICBHTGZsb2F0IG1TdHJva2VCb3VuZDsKKyAg
ICBHTGZsb2F0IG1NaXRlckxpbWl0OworfTsKKworfSAgLy8gbmFtZXNwYWNlIGdsCisKKyNlbmRp
ZiAgLy8gTElCQU5HTEVfUEFUSF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL1Byb2dyYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9Qcm9ncmFtLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Byb2dyYW0uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNywxMiArMTcsMTMgQEAKICNpbmNsdWRlICJjb21tb24vdXRpbGl0aWVzLmgiCiAjaW5j
bHVkZSAiY29tbW9uL3ZlcnNpb24uaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL2Js
b2NrbGF5b3V0LmgiCi0jaW5jbHVkZSAibGliQU5HTEUvRGF0YS5oIgorI2luY2x1ZGUgImxpYkFO
R0xFL0NvbnRleHRTdGF0ZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1Jlc291cmNlTWFuYWdlci5o
IgogI2luY2x1ZGUgImxpYkFOR0xFL2ZlYXR1cmVzLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvUmVuZGVyZXIuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9HTEltcGxGYWN0
b3J5LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvUHJvZ3JhbUltcGwuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9xdWVyeWNvbnZlcnNpb25zLmgiCisjaW5jbHVkZSAibGliQU5HTEUvVW5p
Zm9ybS5oIgogCiBuYW1lc3BhY2UgZ2wKIHsKQEAgLTEzOCwxNCArMTM5LDYgQEAgYm9vbCBVbmlm
b3JtSW5MaXN0KGNvbnN0IHN0ZDo6dmVjdG9yPExpbgogCiBjb25zdCBjaGFyICpjb25zdCBnX2Zh
a2VwYXRoID0gIkM6XFxmYWtlcGF0aCI7CiAKLUF0dHJpYnV0ZUJpbmRpbmdzOjpBdHRyaWJ1dGVC
aW5kaW5ncygpCi17Ci19Ci0KLUF0dHJpYnV0ZUJpbmRpbmdzOjp+QXR0cmlidXRlQmluZGluZ3Mo
KQotewotfQotCiBJbmZvTG9nOjpJbmZvTG9nKCkKIHsKIH0KQEAgLTE4NCw3ICsxNzcsNyBAQCB2
b2lkIEluZm9Mb2c6OmdldExvZyhHTHNpemVpIGJ1ZlNpemUsIEdMCiB9CiAKIC8vIGFwcGVuZCBh
IHNhbnRpemVkIG1lc3NhZ2UgdG8gdGhlIHByb2dyYW0gaW5mbyBsb2cuCi0vLyBUaGUgRDNEIGNv
bXBpbGVyIGluY2x1ZGVzIGEgZmFrZSBmaWxlIHBhdGggaW4gc29tZSBvZiB0aGUgd2FybmluZyBv
ciBlcnJvciAKKy8vIFRoZSBEM0QgY29tcGlsZXIgaW5jbHVkZXMgYSBmYWtlIGZpbGUgcGF0aCBp
biBzb21lIG9mIHRoZSB3YXJuaW5nIG9yIGVycm9yCiAvLyBtZXNzYWdlcywgc28gbGV0cyByZW1v
dmUgYWxsIG9jY3VycmVuY2VzIG9mIHRoaXMgZmFrZSBmaWxlIHBhdGggZnJvbSB0aGUgbG9nLgog
dm9pZCBJbmZvTG9nOjphcHBlbmRTYW5pdGl6ZWQoY29uc3QgY2hhciAqbWVzc2FnZSkKIHsKQEAg
LTIwOCwzMCArMjAxLDUwIEBAIHZvaWQgSW5mb0xvZzo6cmVzZXQoKQogewogfQogCi1WYXJpYWJs
ZUxvY2F0aW9uOjpWYXJpYWJsZUxvY2F0aW9uKCkKLSAgICA6IG5hbWUoKSwKLSAgICAgIGVsZW1l
bnQoMCksCi0gICAgICBpbmRleCgwKQorVmFyaWFibGVMb2NhdGlvbjo6VmFyaWFibGVMb2NhdGlv
bigpIDogbmFtZSgpLCBlbGVtZW50KDApLCBpbmRleCgwKSwgdXNlZChmYWxzZSksIGlnbm9yZWQo
ZmFsc2UpCit7Cit9CisKK1ZhcmlhYmxlTG9jYXRpb246OlZhcmlhYmxlTG9jYXRpb24oY29uc3Qg
c3RkOjpzdHJpbmcgJm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBlbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgaW5kZXgpCisgICAgOiBuYW1lKG5hbWUpLCBlbGVtZW50KGVsZW1lbnQpLCBp
bmRleChpbmRleCksIHVzZWQodHJ1ZSksIGlnbm9yZWQoZmFsc2UpCit7Cit9CisKK3ZvaWQgUHJv
Z3JhbTo6QmluZGluZ3M6OmJpbmRMb2NhdGlvbihHTHVpbnQgaW5kZXgsIGNvbnN0IHN0ZDo6c3Ry
aW5nICZuYW1lKQogeworICAgIG1CaW5kaW5nc1tuYW1lXSA9IGluZGV4OwogfQogCi1WYXJpYWJs
ZUxvY2F0aW9uOjpWYXJpYWJsZUxvY2F0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lLCB1bnNp
Z25lZCBpbnQgZWxlbWVudCwgdW5zaWduZWQgaW50IGluZGV4KQotICAgIDogbmFtZShuYW1lKSwK
LSAgICAgIGVsZW1lbnQoZWxlbWVudCksCi0gICAgICBpbmRleChpbmRleCkKK2ludCBQcm9ncmFt
OjpCaW5kaW5nczo6Z2V0QmluZGluZyhjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkgY29uc3QKIHsK
KyAgICBhdXRvIGl0ZXIgPSBtQmluZGluZ3MuZmluZChuYW1lKTsKKyAgICByZXR1cm4gKGl0ZXIg
IT0gbUJpbmRpbmdzLmVuZCgpKSA/IGl0ZXItPnNlY29uZCA6IC0xOwogfQogCi1Qcm9ncmFtOjpE
YXRhOjpEYXRhKCkKK1Byb2dyYW06OkJpbmRpbmdzOjpjb25zdF9pdGVyYXRvciBQcm9ncmFtOjpC
aW5kaW5nczo6YmVnaW4oKSBjb25zdAoreworICAgIHJldHVybiBtQmluZGluZ3MuYmVnaW4oKTsK
K30KKworUHJvZ3JhbTo6QmluZGluZ3M6OmNvbnN0X2l0ZXJhdG9yIFByb2dyYW06OkJpbmRpbmdz
OjplbmQoKSBjb25zdAoreworICAgIHJldHVybiBtQmluZGluZ3MuZW5kKCk7Cit9CisKK1Byb2dy
YW1TdGF0ZTo6UHJvZ3JhbVN0YXRlKCkKICAgICA6IG1MYWJlbCgpLAogICAgICAgbUF0dGFjaGVk
RnJhZ21lbnRTaGFkZXIobnVsbHB0ciksCiAgICAgICBtQXR0YWNoZWRWZXJ0ZXhTaGFkZXIobnVs
bHB0ciksCisgICAgICBtQXR0YWNoZWRDb21wdXRlU2hhZGVyKG51bGxwdHIpLAogICAgICAgbVRy
YW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9kZShHTF9JTlRFUkxFQVZFRF9BVFRSSUJTKSwKICAgICAg
IG1CaW5hcnlSZXRyaWV2ZWFibGVIaW50KGZhbHNlKQogeworICAgIG1Db21wdXRlU2hhZGVyTG9j
YWxTaXplLmZpbGwoMSk7CiB9CiAKLVByb2dyYW06OkRhdGE6On5EYXRhKCkKK1Byb2dyYW1TdGF0
ZTo6flByb2dyYW1TdGF0ZSgpCiB7CiAgICAgaWYgKG1BdHRhY2hlZFZlcnRleFNoYWRlciAhPSBu
dWxscHRyKQogICAgIHsKQEAgLTI0MiwxNCArMjU1LDE5IEBAIFByb2dyYW06OkRhdGE6On5EYXRh
KCkKICAgICB7CiAgICAgICAgIG1BdHRhY2hlZEZyYWdtZW50U2hhZGVyLT5yZWxlYXNlKCk7CiAg
ICAgfQorCisgICAgaWYgKG1BdHRhY2hlZENvbXB1dGVTaGFkZXIgIT0gbnVsbHB0cikKKyAgICB7
CisgICAgICAgIG1BdHRhY2hlZENvbXB1dGVTaGFkZXItPnJlbGVhc2UoKTsKKyAgICB9CiB9CiAK
LWNvbnN0IHN0ZDo6c3RyaW5nICZQcm9ncmFtOjpEYXRhOjpnZXRMYWJlbCgpCitjb25zdCBzdGQ6
OnN0cmluZyAmUHJvZ3JhbVN0YXRlOjpnZXRMYWJlbCgpCiB7CiAgICAgcmV0dXJuIG1MYWJlbDsK
IH0KIAotY29uc3QgTGlua2VkVW5pZm9ybSAqUHJvZ3JhbTo6RGF0YTo6Z2V0VW5pZm9ybUJ5TmFt
ZShjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkgY29uc3QKK2NvbnN0IExpbmtlZFVuaWZvcm0gKlBy
b2dyYW1TdGF0ZTo6Z2V0VW5pZm9ybUJ5TmFtZShjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkgY29u
c3QKIHsKICAgICBmb3IgKGNvbnN0IExpbmtlZFVuaWZvcm0gJmxpbmtlZFVuaWZvcm0gOiBtVW5p
Zm9ybXMpCiAgICAgewpAQCAtMjYyLDcgKzI4MCw3IEBAIGNvbnN0IExpbmtlZFVuaWZvcm0gKlBy
b2dyYW06OkRhdGE6OmdldFUKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotR0xpbnQgUHJvZ3Jh
bTo6RGF0YTo6Z2V0VW5pZm9ybUxvY2F0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25z
dAorR0xpbnQgUHJvZ3JhbVN0YXRlOjpnZXRVbmlmb3JtTG9jYXRpb24oY29uc3Qgc3RkOjpzdHJp
bmcgJm5hbWUpIGNvbnN0CiB7CiAgICAgc2l6ZV90IHN1YnNjcmlwdCAgICAgPSBHTF9JTlZBTElE
X0lOREVYOwogICAgIHN0ZDo6c3RyaW5nIGJhc2VOYW1lID0gZ2w6OlBhcnNlVW5pZm9ybU5hbWUo
bmFtZSwgJnN1YnNjcmlwdCk7CkBAIC0yNzAsMTQgKzI4OCwyOSBAQCBHTGludCBQcm9ncmFtOjpE
YXRhOjpnZXRVbmlmb3JtTG9jYXRpb24oCiAgICAgZm9yIChzaXplX3QgbG9jYXRpb24gPSAwOyBs
b2NhdGlvbiA8IG1Vbmlmb3JtTG9jYXRpb25zLnNpemUoKTsgKytsb2NhdGlvbikKICAgICB7CiAg
ICAgICAgIGNvbnN0IFZhcmlhYmxlTG9jYXRpb24gJnVuaWZvcm1Mb2NhdGlvbiA9IG1Vbmlmb3Jt
TG9jYXRpb25zW2xvY2F0aW9uXTsKLSAgICAgICAgY29uc3QgTGlua2VkVW5pZm9ybSAmdW5pZm9y
bSAgICAgICAgICAgID0gbVVuaWZvcm1zW3VuaWZvcm1Mb2NhdGlvbi5pbmRleF07CisgICAgICAg
IGlmICghdW5pZm9ybUxvY2F0aW9uLnVzZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgTGlua2VkVW5pZm9ybSAmdW5pZm9ybSA9
IG1Vbmlmb3Jtc1t1bmlmb3JtTG9jYXRpb24uaW5kZXhdOwogCiAgICAgICAgIGlmICh1bmlmb3Jt
Lm5hbWUgPT0gYmFzZU5hbWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICgodW5pZm9ybS5p
c0FycmF5KCkgJiYgdW5pZm9ybUxvY2F0aW9uLmVsZW1lbnQgPT0gc3Vic2NyaXB0KSB8fAotICAg
ICAgICAgICAgICAgIChzdWJzY3JpcHQgPT0gR0xfSU5WQUxJRF9JTkRFWCkpCisgICAgICAgICAg
ICBpZiAodW5pZm9ybS5pc0FycmF5KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
aWYgKHVuaWZvcm1Mb2NhdGlvbi5lbGVtZW50ID09IHN1YnNjcmlwdCB8fAorICAgICAgICAgICAg
ICAgICAgICAodW5pZm9ybUxvY2F0aW9uLmVsZW1lbnQgPT0gMCAmJiBzdWJzY3JpcHQgPT0gR0xf
SU5WQUxJRF9JTkRFWCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8R0xpbnQ+KGxvY2F0aW9uKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMaW50Pihsb2NhdGlvbik7CisgICAgICAgICAgICAg
ICAgaWYgKHN1YnNjcmlwdCA9PSBHTF9JTlZBTElEX0lOREVYKQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMaW50Pihsb2NhdGlvbik7
CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAt
Mjg1LDcgKzMxOCw3IEBAIEdMaW50IFByb2dyYW06OkRhdGE6OmdldFVuaWZvcm1Mb2NhdGlvbigK
ICAgICByZXR1cm4gLTE7CiB9CiAKLUdMdWludCBQcm9ncmFtOjpEYXRhOjpnZXRVbmlmb3JtSW5k
ZXgoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0CitHTHVpbnQgUHJvZ3JhbVN0YXRlOjpn
ZXRVbmlmb3JtSW5kZXgoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0CiB7CiAgICAgc2l6
ZV90IHN1YnNjcmlwdCAgICAgPSBHTF9JTlZBTElEX0lOREVYOwogICAgIHN0ZDo6c3RyaW5nIGJh
c2VOYW1lID0gZ2w6OlBhcnNlVW5pZm9ybU5hbWUobmFtZSwgJnN1YnNjcmlwdCk7CkBAIC0zMTEs
OCArMzQ0LDggQEAgR0x1aW50IFByb2dyYW06OkRhdGE6OmdldFVuaWZvcm1JbmRleChjbwogICAg
IHJldHVybiBHTF9JTlZBTElEX0lOREVYOwogfQogCi1Qcm9ncmFtOjpQcm9ncmFtKHJ4OjpJbXBs
RmFjdG9yeSAqZmFjdG9yeSwgUmVzb3VyY2VNYW5hZ2VyICptYW5hZ2VyLCBHTHVpbnQgaGFuZGxl
KQotICAgIDogbVByb2dyYW0oZmFjdG9yeS0+Y3JlYXRlUHJvZ3JhbShtRGF0YSkpLAorUHJvZ3Jh
bTo6UHJvZ3JhbShyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwgUmVzb3VyY2VNYW5hZ2VyICpt
YW5hZ2VyLCBHTHVpbnQgaGFuZGxlKQorICAgIDogbVByb2dyYW0oZmFjdG9yeS0+Y3JlYXRlUHJv
Z3JhbShtU3RhdGUpKSwKICAgICAgIG1WYWxpZGF0ZWQoZmFsc2UpLAogICAgICAgbUxpbmtlZChm
YWxzZSksCiAgICAgICBtRGVsZXRlU3RhdHVzKGZhbHNlKSwKQEAgLTMzNiwxNjYgKzM2OSwzMDQg
QEAgUHJvZ3JhbTo6flByb2dyYW0oKQogCiB2b2lkIFByb2dyYW06OnNldExhYmVsKGNvbnN0IHN0
ZDo6c3RyaW5nICZsYWJlbCkKIHsKLSAgICBtRGF0YS5tTGFiZWwgPSBsYWJlbDsKKyAgICBtU3Rh
dGUubUxhYmVsID0gbGFiZWw7CiB9CiAKIGNvbnN0IHN0ZDo6c3RyaW5nICZQcm9ncmFtOjpnZXRM
YWJlbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1EYXRhLm1MYWJlbDsKKyAgICByZXR1cm4gbVN0
YXRlLm1MYWJlbDsKIH0KIAotYm9vbCBQcm9ncmFtOjphdHRhY2hTaGFkZXIoU2hhZGVyICpzaGFk
ZXIpCit2b2lkIFByb2dyYW06OmF0dGFjaFNoYWRlcihTaGFkZXIgKnNoYWRlcikKIHsKLSAgICBp
ZiAoc2hhZGVyLT5nZXRUeXBlKCkgPT0gR0xfVkVSVEVYX1NIQURFUikKKyAgICBzd2l0Y2ggKHNo
YWRlci0+Z2V0VHlwZSgpKQogICAgIHsKLSAgICAgICAgaWYgKG1EYXRhLm1BdHRhY2hlZFZlcnRl
eFNoYWRlcikKKyAgICAgICAgY2FzZSBHTF9WRVJURVhfU0hBREVSOgogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBBU1NFUlQoIW1TdGF0ZS5tQXR0YWNo
ZWRWZXJ0ZXhTaGFkZXIpOworICAgICAgICAgICAgbVN0YXRlLm1BdHRhY2hlZFZlcnRleFNoYWRl
ciA9IHNoYWRlcjsKKyAgICAgICAgICAgIG1TdGF0ZS5tQXR0YWNoZWRWZXJ0ZXhTaGFkZXItPmFk
ZFJlZigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLQotICAgICAgICBtRGF0YS5t
QXR0YWNoZWRWZXJ0ZXhTaGFkZXIgPSBzaGFkZXI7Ci0gICAgICAgIG1EYXRhLm1BdHRhY2hlZFZl
cnRleFNoYWRlci0+YWRkUmVmKCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKHNoYWRlci0+Z2V0VHlw
ZSgpID09IEdMX0ZSQUdNRU5UX1NIQURFUikKLSAgICB7Ci0gICAgICAgIGlmIChtRGF0YS5tQXR0
YWNoZWRGcmFnbWVudFNoYWRlcikKKyAgICAgICAgY2FzZSBHTF9GUkFHTUVOVF9TSEFERVI6CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIEFTU0VSVCgh
bVN0YXRlLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyKTsKKyAgICAgICAgICAgIG1TdGF0ZS5tQXR0
YWNoZWRGcmFnbWVudFNoYWRlciA9IHNoYWRlcjsKKyAgICAgICAgICAgIG1TdGF0ZS5tQXR0YWNo
ZWRGcmFnbWVudFNoYWRlci0+YWRkUmVmKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQotCi0gICAgICAgIG1EYXRhLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyID0gc2hhZGVyOwotICAg
ICAgICBtRGF0YS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlci0+YWRkUmVmKCk7CisgICAgICAgIGNh
c2UgR0xfQ09NUFVURV9TSEFERVI6CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCghbVN0
YXRlLm1BdHRhY2hlZENvbXB1dGVTaGFkZXIpOworICAgICAgICAgICAgbVN0YXRlLm1BdHRhY2hl
ZENvbXB1dGVTaGFkZXIgPSBzaGFkZXI7CisgICAgICAgICAgICBtU3RhdGUubUF0dGFjaGVkQ29t
cHV0ZVNoYWRlci0+YWRkUmVmKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICB9Ci0gICAgZWxz
ZSBVTlJFQUNIQUJMRSgpOwotCi0gICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgUHJvZ3JhbTo6
ZGV0YWNoU2hhZGVyKFNoYWRlciAqc2hhZGVyKQogewotICAgIGlmIChzaGFkZXItPmdldFR5cGUo
KSA9PSBHTF9WRVJURVhfU0hBREVSKQorICAgIHN3aXRjaCAoc2hhZGVyLT5nZXRUeXBlKCkpCiAg
ICAgewotICAgICAgICBpZiAobURhdGEubUF0dGFjaGVkVmVydGV4U2hhZGVyICE9IHNoYWRlcikK
KyAgICAgICAgY2FzZSBHTF9WRVJURVhfU0hBREVSOgogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtU3RhdGUubUF0dGFjaGVk
VmVydGV4U2hhZGVyICE9IHNoYWRlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgc2hhZGVyLT5yZWxlYXNlKCk7
Ci0gICAgICAgIG1EYXRhLm1BdHRhY2hlZFZlcnRleFNoYWRlciA9IG51bGxwdHI7Ci0gICAgfQot
ICAgIGVsc2UgaWYgKHNoYWRlci0+Z2V0VHlwZSgpID09IEdMX0ZSQUdNRU5UX1NIQURFUikKLSAg
ICB7Ci0gICAgICAgIGlmIChtRGF0YS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlciAhPSBzaGFkZXIp
CisgICAgICAgICAgICBzaGFkZXItPnJlbGVhc2UoKTsKKyAgICAgICAgICAgIG1TdGF0ZS5tQXR0
YWNoZWRWZXJ0ZXhTaGFkZXIgPSBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBHTF9GUkFHTUVOVF9TSEFERVI6CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmIChtU3RhdGUubUF0dGFjaGVkRnJhZ21l
bnRTaGFkZXIgIT0gc2hhZGVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2hhZGVyLT5yZWxlYXNlKCk7
CisgICAgICAgICAgICBtU3RhdGUubUF0dGFjaGVkRnJhZ21lbnRTaGFkZXIgPSBudWxscHRyOwor
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT01QVVRFX1NI
QURFUjoKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1TdGF0ZS5tQXR0YWNoZWRDb21wdXRl
U2hhZGVyICE9IHNoYWRlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgc2hhZGVyLT5yZWxlYXNlKCk7Ci0gICAg
ICAgIG1EYXRhLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyID0gbnVsbHB0cjsKKyAgICAgICAgICAg
IHNoYWRlci0+cmVsZWFzZSgpOworICAgICAgICAgICAgbVN0YXRlLm1BdHRhY2hlZENvbXB1dGVT
aGFkZXIgPSBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgfQotICAgIGVsc2UgVU5S
RUFDSEFCTEUoKTsKIAogICAgIHJldHVybiB0cnVlOwogfQogCiBpbnQgUHJvZ3JhbTo6Z2V0QXR0
YWNoZWRTaGFkZXJzQ291bnQoKSBjb25zdAogewotICAgIHJldHVybiAobURhdGEubUF0dGFjaGVk
VmVydGV4U2hhZGVyID8gMSA6IDApICsgKG1EYXRhLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyID8g
MSA6IDApOworICAgIHJldHVybiAobVN0YXRlLm1BdHRhY2hlZFZlcnRleFNoYWRlciA/IDEgOiAw
KSArIChtU3RhdGUubUF0dGFjaGVkRnJhZ21lbnRTaGFkZXIgPyAxIDogMCkgKworICAgICAgICAg
ICAobVN0YXRlLm1BdHRhY2hlZENvbXB1dGVTaGFkZXIgPyAxIDogMCk7CiB9CiAKLXZvaWQgQXR0
cmlidXRlQmluZGluZ3M6OmJpbmRBdHRyaWJ1dGVMb2NhdGlvbihHTHVpbnQgaW5kZXgsIGNvbnN0
IGNoYXIgKm5hbWUpCit2b2lkIFByb2dyYW06OmJpbmRBdHRyaWJ1dGVMb2NhdGlvbihHTHVpbnQg
aW5kZXgsIGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgbUF0dHJpYnV0ZUJpbmRpbmdzLmJpbmRM
b2NhdGlvbihpbmRleCwgbmFtZSk7Cit9CisKK3ZvaWQgUHJvZ3JhbTo6YmluZFVuaWZvcm1Mb2Nh
dGlvbihHTHVpbnQgaW5kZXgsIGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgLy8gQmluZCB0aGUg
YmFzZSB1bmlmb3JtIG5hbWUgb25seSBzaW5jZSBhcnJheSBpbmRpY2VzIG90aGVyIHRoYW4gMCBj
YW5ub3QgYmUgYm91bmQKKyAgICBtVW5pZm9ybUJpbmRpbmdzLmJpbmRMb2NhdGlvbihpbmRleCwg
UGFyc2VVbmlmb3JtTmFtZShuYW1lLCBudWxscHRyKSk7Cit9CisKK3ZvaWQgUHJvZ3JhbTo6Ymlu
ZEZyYWdtZW50SW5wdXRMb2NhdGlvbihHTGludCBpbmRleCwgY29uc3QgY2hhciAqbmFtZSkKK3sK
KyAgICBtRnJhZ21lbnRJbnB1dEJpbmRpbmdzLmJpbmRMb2NhdGlvbihpbmRleCwgbmFtZSk7Cit9
CisKK0JpbmRpbmdJbmZvIFByb2dyYW06OmdldEZyYWdtZW50SW5wdXRCaW5kaW5nSW5mbyhHTGlu
dCBpbmRleCkgY29uc3QKIHsKLSAgICBpZiAoaW5kZXggPCBNQVhfVkVSVEVYX0FUVFJJQlMpCisg
ICAgQmluZGluZ0luZm8gcmV0OworICAgIHJldC50eXBlICA9IEdMX05PTkU7CisgICAgcmV0LnZh
bGlkID0gZmFsc2U7CisKKyAgICBjb25zdCBTaGFkZXIgKmZyYWdtZW50U2hhZGVyID0gbVN0YXRl
LmdldEF0dGFjaGVkRnJhZ21lbnRTaGFkZXIoKTsKKyAgICBBU1NFUlQoZnJhZ21lbnRTaGFkZXIp
OworCisgICAgLy8gRmluZCB0aGUgYWN0dWFsIGZyYWdtZW50IHNoYWRlciB2YXJ5aW5nIHdlJ3Jl
IGludGVyZXN0ZWQgaW4KKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6VmFyeWluZz4gJmlucHV0
cyA9IGZyYWdtZW50U2hhZGVyLT5nZXRWYXJ5aW5ncygpOworCisgICAgZm9yIChjb25zdCBhdXRv
ICZiaW5kaW5nIDogbUZyYWdtZW50SW5wdXRCaW5kaW5ncykKICAgICB7Ci0gICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCisgICAgICAgIGlmIChiaW5k
aW5nLnNlY29uZCAhPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KGluZGV4KSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgIHJldC52YWxpZCA9IHRydWU7CisKKyAgICAgICAgc3RkOjpzdHJp
bmcgb3JpZ2luYWxOYW1lID0gYmluZGluZy5maXJzdDsKKyAgICAgICAgdW5zaWduZWQgaW50IGFy
cmF5SW5kZXggID0gUGFyc2VBbmRTdHJpcEFycmF5SW5kZXgoJm9yaWdpbmFsTmFtZSk7CisKKyAg
ICAgICAgZm9yIChjb25zdCBhdXRvICZpbiA6IGlucHV0cykKICAgICAgICAgewotICAgICAgICAg
ICAgbUF0dHJpYnV0ZUJpbmRpbmdbaV0uZXJhc2UobmFtZSk7Ci0gICAgICAgIH0KKyAgICAgICAg
ICAgIGlmIChpbi5uYW1lID09IG9yaWdpbmFsTmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBpZiAoaW4uaXNBcnJheSgpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gVGhlIGNsaWVudCB3YW50cyB0byBiaW5kIGVpdGhlciAibmFtZSIgb3IgIm5h
bWVbMF0iLgorICAgICAgICAgICAgICAgICAgICAvLyBHTCBFUyAzLjEgc3BlYyByZWZlcnMgdG8g
YWN0aXZlIGFycmF5IG5hbWVzIHdpdGggbGFuZ3VhZ2Ugc3VjaCBhczoKKyAgICAgICAgICAgICAg
ICAgICAgLy8gImlmIHRoZSBzdHJpbmcgaWRlbnRpZmllcyB0aGUgYmFzZSBuYW1lIG9mIGFuIGFj
dGl2ZSBhcnJheSwgd2hlcmUgdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIHN0cmluZyB3b3Vs
ZCBleGFjdGx5IG1hdGNoIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSBpZiB0aGUgc3VmZml4ICJb
MF0iCisgICAgICAgICAgICAgICAgICAgIC8vIHdlcmUgYXBwZW5kZWQgdG8gdGhlIHN0cmluZyIu
CisgICAgICAgICAgICAgICAgICAgIGlmIChhcnJheUluZGV4ID09IEdMX0lOVkFMSURfSU5ERVgp
CisgICAgICAgICAgICAgICAgICAgICAgICBhcnJheUluZGV4ID0gMDsKIAotICAgICAgICBtQXR0
cmlidXRlQmluZGluZ1tpbmRleF0uaW5zZXJ0KG5hbWUpOworICAgICAgICAgICAgICAgICAgICBy
ZXQubmFtZSA9IGluLm1hcHBlZE5hbWUgKyAiWyIgKyBUb1N0cmluZyhhcnJheUluZGV4KSArICJd
IjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0Lm5hbWUgPSBpbi5tYXBwZWROYW1lOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXQudHlwZSA9IGluLnR5cGU7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0K
KworICAgIHJldHVybiByZXQ7CiB9CiAKLXZvaWQgUHJvZ3JhbTo6YmluZEF0dHJpYnV0ZUxvY2F0
aW9uKEdMdWludCBpbmRleCwgY29uc3QgY2hhciAqbmFtZSkKK3ZvaWQgUHJvZ3JhbTo6cGF0aEZy
YWdtZW50SW5wdXRHZW4oR0xpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBnZW5Nb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBjb21wb25lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICpjb2VmZnMpCiB7Ci0gICAgbUF0dHJpYnV0ZUJpbmRpbmdzLmJpbmRBdHRy
aWJ1dGVMb2NhdGlvbihpbmRleCwgbmFtZSk7CisgICAgLy8gSWYgdGhlIGxvY2F0aW9uIGlzIC0x
IHRoZW4gdGhlIGNvbW1hbmQgaXMgc2lsZW50bHkgaWdub3JlZAorICAgIGlmIChpbmRleCA9PSAt
MSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgYXV0byAmYmluZGluZyA9IGdldEZyYWdt
ZW50SW5wdXRCaW5kaW5nSW5mbyhpbmRleCk7CisKKyAgICAvLyBJZiB0aGUgaW5wdXQgZG9lc24n
dCBleGlzdCB0aGVuIHRoZW4gdGhlIGNvbW1hbmQgaXMgc2lsZW50bHkgaWdub3JlZAorICAgIC8v
IFRoaXMgY291bGQgaGFwcGVuIHRocm91Z2ggb3B0aW1pemF0aW9uIGZvciBleGFtcGxlLCB0aGUg
c2hhZGVyIHRyYW5zbGF0b3IKKyAgICAvLyBkZWNpZGVzIHRoYXQgYSB2YXJpYWJsZSBpcyBub3Qg
YWN0dWFsbHkgYmVpbmcgdXNlZCBhbmQgb3B0aW1pemVzIGl0IGF3YXkuCisgICAgaWYgKGJpbmRp
bmcubmFtZS5lbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtUHJvZ3JhbS0+c2V0UGF0
aEZyYWdtZW50SW5wdXRHZW4oYmluZGluZy5uYW1lLCBnZW5Nb2RlLCBjb21wb25lbnRzLCBjb2Vm
ZnMpOwogfQogCi0vLyBMaW5rcyB0aGUgSExTTCBjb2RlIG9mIHRoZSB2ZXJ0ZXggYW5kIHBpeGVs
IHNoYWRlciBieSBtYXRjaGluZyB1cCB0aGVpciB2YXJ5aW5ncywKLS8vIGNvbXBpbGluZyB0aGVt
IGludG8gYmluYXJpZXMsIGRldGVybWluaW5nIHRoZSBhdHRyaWJ1dGUgbWFwcGluZ3MsIGFuZCBj
b2xsZWN0aW5nCi0vLyBhIGxpc3Qgb2YgdW5pZm9ybXMKLUVycm9yIFByb2dyYW06OmxpbmsoY29u
c3QgZ2w6OkRhdGEgJmRhdGEpCisvLyBUaGUgYXR0YWNoZWQgc2hhZGVycyBhcmUgY2hlY2tlZCBm
b3IgbGlua2luZyBlcnJvcnMgYnkgbWF0Y2hpbmcgdXAgdGhlaXIgdmFyaWFibGVzLgorLy8gVW5p
Zm9ybSwgaW5wdXQgYW5kIG91dHB1dCB2YXJpYWJsZXMgZ2V0IGNvbGxlY3RlZC4KKy8vIFRoZSBj
b2RlIGdldHMgY29tcGlsZWQgaW50byBiaW5hcmllcy4KK0Vycm9yIFByb2dyYW06OmxpbmsoY29u
c3QgQ29udGV4dFN0YXRlICZkYXRhKQogewogICAgIHVubGluayhmYWxzZSk7CiAKICAgICBtSW5m
b0xvZy5yZXNldCgpOwogICAgIHJlc2V0VW5pZm9ybUJsb2NrQmluZGluZ3MoKTsKIAotICAgIGlm
ICghbURhdGEubUF0dGFjaGVkRnJhZ21lbnRTaGFkZXIgfHwgIW1EYXRhLm1BdHRhY2hlZEZyYWdt
ZW50U2hhZGVyLT5pc0NvbXBpbGVkKCkpCi0gICAgewotICAgICAgICByZXR1cm4gRXJyb3IoR0xf
Tk9fRVJST1IpOwotICAgIH0KLSAgICBBU1NFUlQobURhdGEubUF0dGFjaGVkRnJhZ21lbnRTaGFk
ZXItPmdldFR5cGUoKSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpOworICAgIGNvbnN0IENhcHMgJmNh
cHMgPSBkYXRhLmdldENhcHMoKTsKIAotICAgIGlmICghbURhdGEubUF0dGFjaGVkVmVydGV4U2hh
ZGVyIHx8ICFtRGF0YS5tQXR0YWNoZWRWZXJ0ZXhTaGFkZXItPmlzQ29tcGlsZWQoKSkKKyAgICBi
b29sIGlzQ29tcHV0ZVNoYWRlckF0dGFjaGVkID0gKG1TdGF0ZS5tQXR0YWNoZWRDb21wdXRlU2hh
ZGVyICE9IG51bGxwdHIpOworICAgIGJvb2wgbm9uQ29tcHV0ZVNoYWRlcnNBdHRhY2hlZCA9Cisg
ICAgICAgIChtU3RhdGUubUF0dGFjaGVkVmVydGV4U2hhZGVyICE9IG51bGxwdHIgfHwgbVN0YXRl
Lm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyICE9IG51bGxwdHIpOworICAgIC8vIENoZWNrIHdoZXRo
ZXIgd2UgYm90aCBoYXZlIGEgY29tcHV0ZSBhbmQgbm9uLWNvbXB1dGUgc2hhZGVycyBhdHRhY2hl
ZC4KKyAgICAvLyBJZiB0aGVyZSBhcmUgb2YgYm90aCB0eXBlcyBhdHRhY2hlZCwgdGhlbiBsaW5r
aW5nIHNob3VsZCBmYWlsLgorICAgIC8vIE9wZW5HTCBFUyAzLjEwLCA3LjMgUHJvZ3JhbSBPYmpl
Y3RzLCB1bmRlciBMaW5rUHJvZ3JhbQorICAgIGlmIChpc0NvbXB1dGVTaGFkZXJBdHRhY2hlZCA9
PSB0cnVlICYmIG5vbkNvbXB1dGVTaGFkZXJzQXR0YWNoZWQgPT0gdHJ1ZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIG1JbmZvTG9nIDw8ICJCb3Ro
IGEgY29tcHV0ZSBhbmQgbm9uLWNvbXB1dGUgc2hhZGVycyBhcmUgYXR0YWNoZWQgdG8gdGhlIHNh
bWUgcHJvZ3JhbS4iOworICAgICAgICByZXR1cm4gTm9FcnJvcigpOwogICAgIH0KLSAgICBBU1NF
UlQobURhdGEubUF0dGFjaGVkVmVydGV4U2hhZGVyLT5nZXRUeXBlKCkgPT0gR0xfVkVSVEVYX1NI
QURFUik7CiAKLSAgICBpZiAoIWxpbmtBdHRyaWJ1dGVzKGRhdGEsIG1JbmZvTG9nLCBtQXR0cmli
dXRlQmluZGluZ3MsIG1EYXRhLm1BdHRhY2hlZFZlcnRleFNoYWRlcikpCisgICAgaWYgKG1TdGF0
ZS5tQXR0YWNoZWRDb21wdXRlU2hhZGVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEVycm9yKEdM
X05PX0VSUk9SKTsKLSAgICB9CisgICAgICAgIGlmICghbVN0YXRlLm1BdHRhY2hlZENvbXB1dGVT
aGFkZXItPmlzQ29tcGlsZWQoKSkKKyAgICAgICAgeworICAgICAgICAgICAgbUluZm9Mb2cgPDwg
IkF0dGFjaGVkIGNvbXB1dGUgc2hhZGVyIGlzIG5vdCBjb21waWxlZC4iOworICAgICAgICAgICAg
cmV0dXJuIE5vRXJyb3IoKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQobVN0YXRlLm1BdHRh
Y2hlZENvbXB1dGVTaGFkZXItPmdldFR5cGUoKSA9PSBHTF9DT01QVVRFX1NIQURFUik7CiAKLSAg
ICBpZiAoIWxpbmtWYXJ5aW5ncyhtSW5mb0xvZywgbURhdGEubUF0dGFjaGVkVmVydGV4U2hhZGVy
LCBtRGF0YS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlcikpCi0gICAgewotICAgICAgICByZXR1cm4g
RXJyb3IoR0xfTk9fRVJST1IpOwotICAgIH0KKyAgICAgICAgbVN0YXRlLm1Db21wdXRlU2hhZGVy
TG9jYWxTaXplID0gbVN0YXRlLm1BdHRhY2hlZENvbXB1dGVTaGFkZXItPmdldFdvcmtHcm91cFNp
emUoKTsKIAotICAgIGlmICghbGlua1VuaWZvcm1zKG1JbmZvTG9nLCAqZGF0YS5jYXBzKSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJPUik7Ci0gICAgfQorICAgICAgICAv
LyBHTFNMIEVTIDMuMTAsIDQuNC4xLjEgQ29tcHV0ZSBTaGFkZXIgSW5wdXRzCisgICAgICAgIC8v
IElmIHRoZSB3b3JrIGdyb3VwIHNpemUgaXMgbm90IHNwZWNpZmllZCwgYSBsaW5rIHRpbWUgZXJy
b3Igc2hvdWxkIG9jY3VyLgorICAgICAgICBpZiAoIW1TdGF0ZS5tQ29tcHV0ZVNoYWRlckxvY2Fs
U2l6ZS5pc0RlY2xhcmVkKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1JbmZvTG9nIDw8ICJX
b3JrIGdyb3VwIHNpemUgaXMgbm90IHNwZWNpZmllZC4iOworICAgICAgICAgICAgcmV0dXJuIE5v
RXJyb3IoKTsKKyAgICAgICAgfQogCi0gICAgaWYgKCFsaW5rVW5pZm9ybUJsb2NrcyhtSW5mb0xv
ZywgKmRhdGEuY2FwcykpCi0gICAgewotICAgICAgICByZXR1cm4gRXJyb3IoR0xfTk9fRVJST1Ip
OwotICAgIH0KKyAgICAgICAgaWYgKCFsaW5rVW5pZm9ybXMobUluZm9Mb2csIGNhcHMsIG1Vbmlm
b3JtQmluZGluZ3MpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gTm9FcnJvcigpOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKCFsaW5rVW5pZm9ybUJsb2NrcyhtSW5mb0xvZywgY2Fw
cykpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBOb0Vycm9yKCk7CisgICAgICAgIH0K
IAotICAgIGNvbnN0IGF1dG8gJm1lcmdlZFZhcnlpbmdzID0gZ2V0TWVyZ2VkVmFyeWluZ3MoKTsK
KyAgICAgICAgcng6OkxpbmtSZXN1bHQgcmVzdWx0ID0gbVByb2dyYW0tPmxpbmsoZGF0YSwgbUlu
Zm9Mb2cpOwogCi0gICAgaWYgKCFsaW5rVmFsaWRhdGVUcmFuc2Zvcm1GZWVkYmFjayhtSW5mb0xv
ZywgbWVyZ2VkVmFyeWluZ3MsICpkYXRhLmNhcHMpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEVy
cm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAgaWYgKHJlc3VsdC5lcnJvci5pc0Vycm9yKCkgfHwg
IXJlc3VsdC5saW5rU3VjY2VzcykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dC5lcnJvcjsKKyAgICAgICAgfQogICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBpZiAo
IW1TdGF0ZS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlciB8fCAhbVN0YXRlLm1BdHRhY2hlZEZyYWdt
ZW50U2hhZGVyLT5pc0NvbXBpbGVkKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBO
b0Vycm9yKCk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKG1TdGF0ZS5tQXR0YWNoZWRGcmFn
bWVudFNoYWRlci0+Z2V0VHlwZSgpID09IEdMX0ZSQUdNRU5UX1NIQURFUik7CiAKLSAgICBsaW5r
T3V0cHV0VmFyaWFibGVzKCk7CisgICAgICAgIGlmICghbVN0YXRlLm1BdHRhY2hlZFZlcnRleFNo
YWRlciB8fCAhbVN0YXRlLm1BdHRhY2hlZFZlcnRleFNoYWRlci0+aXNDb21waWxlZCgpKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gTm9FcnJvcigpOworICAgICAgICB9CisgICAgICAg
IEFTU0VSVChtU3RhdGUubUF0dGFjaGVkVmVydGV4U2hhZGVyLT5nZXRUeXBlKCkgPT0gR0xfVkVS
VEVYX1NIQURFUik7CiAKLSAgICByeDo6TGlua1Jlc3VsdCByZXN1bHQgPSBtUHJvZ3JhbS0+bGlu
ayhkYXRhLCBtSW5mb0xvZyk7Ci0gICAgaWYgKHJlc3VsdC5lcnJvci5pc0Vycm9yKCkgfHwgIXJl
c3VsdC5saW5rU3VjY2VzcykKLSAgICB7Ci0gICAgICAgIHJldHVybiByZXN1bHQuZXJyb3I7Ci0g
ICAgfQorICAgICAgICBpZiAobVN0YXRlLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyLT5nZXRTaGFk
ZXJWZXJzaW9uKCkgIT0KKyAgICAgICAgICAgIG1TdGF0ZS5tQXR0YWNoZWRWZXJ0ZXhTaGFkZXIt
PmdldFNoYWRlclZlcnNpb24oKSkKKyAgICAgICAgeworICAgICAgICAgICAgbUluZm9Mb2cgPDwg
IkZyYWdtZW50IHNoYWRlciB2ZXJzaW9uIGRvZXMgbm90IG1hdGNoIHZlcnRleCBzaGFkZXIgdmVy
c2lvbi4iOworICAgICAgICAgICAgcmV0dXJuIE5vRXJyb3IoKTsKKyAgICAgICAgfQogCi0gICAg
Z2F0aGVyVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhtZXJnZWRWYXJ5aW5ncyk7Ci0gICAgZ2F0
aGVySW50ZXJmYWNlQmxvY2tJbmZvKCk7CisgICAgICAgIGlmICghbGlua0F0dHJpYnV0ZXMoZGF0
YSwgbUluZm9Mb2csIG1BdHRyaWJ1dGVCaW5kaW5ncywgbVN0YXRlLm1BdHRhY2hlZFZlcnRleFNo
YWRlcikpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBOb0Vycm9yKCk7CisgICAgICAg
IH0KIAotICAgIG1MaW5rZWQgPSB0cnVlOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJS
T1IpOwotfQorICAgICAgICBpZiAoIWxpbmtWYXJ5aW5ncyhtSW5mb0xvZywgbVN0YXRlLm1BdHRh
Y2hlZFZlcnRleFNoYWRlciwgbVN0YXRlLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyKSkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIE5vRXJyb3IoKTsKKyAgICAgICAgfQogCi1pbnQgQXR0
cmlidXRlQmluZGluZ3M6OmdldEF0dHJpYnV0ZUJpbmRpbmcoY29uc3Qgc3RkOjpzdHJpbmcgJm5h
bWUpIGNvbnN0Ci17Ci0gICAgZm9yIChpbnQgbG9jYXRpb24gPSAwOyBsb2NhdGlvbiA8IE1BWF9W
RVJURVhfQVRUUklCUzsgbG9jYXRpb24rKykKLSAgICB7Ci0gICAgICAgIGlmIChtQXR0cmlidXRl
QmluZGluZ1tsb2NhdGlvbl0uZmluZChuYW1lKSAhPSBtQXR0cmlidXRlQmluZGluZ1tsb2NhdGlv
bl0uZW5kKCkpCisgICAgICAgIGlmICghbGlua1VuaWZvcm1zKG1JbmZvTG9nLCBjYXBzLCBtVW5p
Zm9ybUJpbmRpbmdzKSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9uOwor
ICAgICAgICAgICAgcmV0dXJuIE5vRXJyb3IoKTsKICAgICAgICAgfQorCisgICAgICAgIGlmICgh
bGlua1VuaWZvcm1CbG9ja3MobUluZm9Mb2csIGNhcHMpKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gTm9FcnJvcigpOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgYXV0byAmbWVy
Z2VkVmFyeWluZ3MgPSBnZXRNZXJnZWRWYXJ5aW5ncygpOworCisgICAgICAgIGlmICghbGlua1Zh
bGlkYXRlVHJhbnNmb3JtRmVlZGJhY2sobUluZm9Mb2csIG1lcmdlZFZhcnlpbmdzLCBjYXBzKSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIE5vRXJyb3IoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGxpbmtPdXRwdXRWYXJpYWJsZXMoKTsKKworICAgICAgICByeDo6TGlua1Jlc3VsdCBy
ZXN1bHQgPSBtUHJvZ3JhbS0+bGluayhkYXRhLCBtSW5mb0xvZyk7CisgICAgICAgIGlmIChyZXN1
bHQuZXJyb3IuaXNFcnJvcigpIHx8ICFyZXN1bHQubGlua1N1Y2Nlc3MpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiByZXN1bHQuZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBnYXRo
ZXJUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKG1lcmdlZFZhcnlpbmdzKTsKICAgICB9CiAKLSAg
ICByZXR1cm4gLTE7CisgICAgZ2F0aGVySW50ZXJmYWNlQmxvY2tJbmZvKCk7CisKKyAgICBtTGlu
a2VkID0gdHJ1ZTsKKyAgICByZXR1cm4gTm9FcnJvcigpOwogfQogCiAvLyBSZXR1cm5zIHRoZSBw
cm9ncmFtIG9iamVjdCB0byBhbiB1bmxpbmtlZCBzdGF0ZSwgYmVmb3JlIHJlLWxpbmtpbmcsIG9y
IGF0IGRlc3RydWN0aW9uCkBAIC01MDMsMjYgKzY3NCwzMyBAQCB2b2lkIFByb2dyYW06OnVubGlu
ayhib29sIGRlc3Ryb3kpCiB7CiAgICAgaWYgKGRlc3Ryb3kpICAgLy8gT2JqZWN0IGJlaW5nIGRl
c3RydWN0ZWQKICAgICB7Ci0gICAgICAgIGlmIChtRGF0YS5tQXR0YWNoZWRGcmFnbWVudFNoYWRl
cikKKyAgICAgICAgaWYgKG1TdGF0ZS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlcikKKyAgICAgICAg
eworICAgICAgICAgICAgbVN0YXRlLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyLT5yZWxlYXNlKCk7
CisgICAgICAgICAgICBtU3RhdGUubUF0dGFjaGVkRnJhZ21lbnRTaGFkZXIgPSBudWxscHRyOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKG1TdGF0ZS5tQXR0YWNoZWRWZXJ0ZXhTaGFkZXIpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIG1EYXRhLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyLT5yZWxl
YXNlKCk7Ci0gICAgICAgICAgICBtRGF0YS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlciA9IG51bGxw
dHI7CisgICAgICAgICAgICBtU3RhdGUubUF0dGFjaGVkVmVydGV4U2hhZGVyLT5yZWxlYXNlKCk7
CisgICAgICAgICAgICBtU3RhdGUubUF0dGFjaGVkVmVydGV4U2hhZGVyID0gbnVsbHB0cjsKICAg
ICAgICAgfQogCi0gICAgICAgIGlmIChtRGF0YS5tQXR0YWNoZWRWZXJ0ZXhTaGFkZXIpCisgICAg
ICAgIGlmIChtU3RhdGUubUF0dGFjaGVkQ29tcHV0ZVNoYWRlcikKICAgICAgICAgewotICAgICAg
ICAgICAgbURhdGEubUF0dGFjaGVkVmVydGV4U2hhZGVyLT5yZWxlYXNlKCk7Ci0gICAgICAgICAg
ICBtRGF0YS5tQXR0YWNoZWRWZXJ0ZXhTaGFkZXIgPSBudWxscHRyOworICAgICAgICAgICAgbVN0
YXRlLm1BdHRhY2hlZENvbXB1dGVTaGFkZXItPnJlbGVhc2UoKTsKKyAgICAgICAgICAgIG1TdGF0
ZS5tQXR0YWNoZWRDb21wdXRlU2hhZGVyID0gbnVsbHB0cjsKICAgICAgICAgfQogICAgIH0KIAot
ICAgIG1EYXRhLm1BdHRyaWJ1dGVzLmNsZWFyKCk7Ci0gICAgbURhdGEubUFjdGl2ZUF0dHJpYkxv
Y2F0aW9uc01hc2sucmVzZXQoKTsKLSAgICBtRGF0YS5tVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5n
VmFycy5jbGVhcigpOwotICAgIG1EYXRhLm1Vbmlmb3Jtcy5jbGVhcigpOwotICAgIG1EYXRhLm1V
bmlmb3JtTG9jYXRpb25zLmNsZWFyKCk7Ci0gICAgbURhdGEubVVuaWZvcm1CbG9ja3MuY2xlYXIo
KTsKLSAgICBtRGF0YS5tT3V0cHV0VmFyaWFibGVzLmNsZWFyKCk7CisgICAgbVN0YXRlLm1BdHRy
aWJ1dGVzLmNsZWFyKCk7CisgICAgbVN0YXRlLm1BY3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrLnJl
c2V0KCk7CisgICAgbVN0YXRlLm1UcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdWYXJzLmNsZWFyKCk7
CisgICAgbVN0YXRlLm1Vbmlmb3Jtcy5jbGVhcigpOworICAgIG1TdGF0ZS5tVW5pZm9ybUxvY2F0
aW9ucy5jbGVhcigpOworICAgIG1TdGF0ZS5tVW5pZm9ybUJsb2Nrcy5jbGVhcigpOworICAgIG1T
dGF0ZS5tT3V0cHV0VmFyaWFibGVzLmNsZWFyKCk7CisgICAgbVN0YXRlLm1Db21wdXRlU2hhZGVy
TG9jYWxTaXplLmZpbGwoMSk7CiAKICAgICBtVmFsaWRhdGVkID0gZmFsc2U7CiAKQEAgLTU2Niwy
MiArNzQ0LDI2IEBAIEVycm9yIFByb2dyYW06OmxvYWRCaW5hcnkoR0xlbnVtIGJpbmFyeUYKICAg
ICAgICAgcmV0dXJuIEVycm9yKEdMX05PX0VSUk9SKTsKICAgICB9CiAKKyAgICBtU3RhdGUubUNv
bXB1dGVTaGFkZXJMb2NhbFNpemVbMF0gPSBzdHJlYW0ucmVhZEludDxpbnQ+KCk7CisgICAgbVN0
YXRlLm1Db21wdXRlU2hhZGVyTG9jYWxTaXplWzFdID0gc3RyZWFtLnJlYWRJbnQ8aW50PigpOwor
ICAgIG1TdGF0ZS5tQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZVsyXSA9IHN0cmVhbS5yZWFkSW50PGlu
dD4oKTsKKwogICAgIHN0YXRpY19hc3NlcnQoTUFYX1ZFUlRFWF9BVFRSSUJTIDw9IHNpemVvZih1
bnNpZ25lZCBsb25nKSAqIDgsCiAgICAgICAgICAgICAgICAgICAiVG9vIG1hbnkgdmVydGV4IGF0
dHJpYnMgZm9yIG1hc2siKTsKLSAgICBtRGF0YS5tQWN0aXZlQXR0cmliTG9jYXRpb25zTWFzayA9
IHN0cmVhbS5yZWFkSW50PHVuc2lnbmVkIGxvbmc+KCk7CisgICAgbVN0YXRlLm1BY3RpdmVBdHRy
aWJMb2NhdGlvbnNNYXNrID0gc3RyZWFtLnJlYWRJbnQ8dW5zaWduZWQgbG9uZz4oKTsKIAogICAg
IHVuc2lnbmVkIGludCBhdHRyaWJDb3VudCA9IHN0cmVhbS5yZWFkSW50PHVuc2lnbmVkIGludD4o
KTsKLSAgICBBU1NFUlQobURhdGEubUF0dHJpYnV0ZXMuZW1wdHkoKSk7CisgICAgQVNTRVJUKG1T
dGF0ZS5tQXR0cmlidXRlcy5lbXB0eSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGludCBhdHRyaWJJ
bmRleCA9IDA7IGF0dHJpYkluZGV4IDwgYXR0cmliQ291bnQ7ICsrYXR0cmliSW5kZXgpCiAgICAg
ewogICAgICAgICBzaDo6QXR0cmlidXRlIGF0dHJpYjsKICAgICAgICAgTG9hZFNoYWRlclZhcigm
c3RyZWFtLCAmYXR0cmliKTsKICAgICAgICAgYXR0cmliLmxvY2F0aW9uID0gc3RyZWFtLnJlYWRJ
bnQ8aW50PigpOwotICAgICAgICBtRGF0YS5tQXR0cmlidXRlcy5wdXNoX2JhY2soYXR0cmliKTsK
KyAgICAgICAgbVN0YXRlLm1BdHRyaWJ1dGVzLnB1c2hfYmFjayhhdHRyaWIpOwogICAgIH0KIAog
ICAgIHVuc2lnbmVkIGludCB1bmlmb3JtQ291bnQgPSBzdHJlYW0ucmVhZEludDx1bnNpZ25lZCBp
bnQ+KCk7Ci0gICAgQVNTRVJUKG1EYXRhLm1Vbmlmb3Jtcy5lbXB0eSgpKTsKKyAgICBBU1NFUlQo
bVN0YXRlLm1Vbmlmb3Jtcy5lbXB0eSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGludCB1bmlmb3Jt
SW5kZXggPSAwOyB1bmlmb3JtSW5kZXggPCB1bmlmb3JtQ291bnQ7ICsrdW5pZm9ybUluZGV4KQog
ICAgIHsKICAgICAgICAgTGlua2VkVW5pZm9ybSB1bmlmb3JtOwpAQCAtNTkzLDExICs3NzUsMTEg
QEAgRXJyb3IgUHJvZ3JhbTo6bG9hZEJpbmFyeShHTGVudW0gYmluYXJ5RgogICAgICAgICB1bmlm
b3JtLmJsb2NrSW5mby5tYXRyaXhTdHJpZGUgICAgID0gc3RyZWFtLnJlYWRJbnQ8aW50PigpOwog
ICAgICAgICB1bmlmb3JtLmJsb2NrSW5mby5pc1Jvd01ham9yTWF0cml4ID0gc3RyZWFtLnJlYWRC
b29sKCk7CiAKLSAgICAgICAgbURhdGEubVVuaWZvcm1zLnB1c2hfYmFjayh1bmlmb3JtKTsKKyAg
ICAgICAgbVN0YXRlLm1Vbmlmb3Jtcy5wdXNoX2JhY2sodW5pZm9ybSk7CiAgICAgfQogCiAgICAg
Y29uc3QgdW5zaWduZWQgaW50IHVuaWZvcm1JbmRleENvdW50ID0gc3RyZWFtLnJlYWRJbnQ8dW5z
aWduZWQgaW50PigpOwotICAgIEFTU0VSVChtRGF0YS5tVW5pZm9ybUxvY2F0aW9ucy5lbXB0eSgp
KTsKKyAgICBBU1NFUlQobVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zLmVtcHR5KCkpOwogICAgIGZv
ciAodW5zaWduZWQgaW50IHVuaWZvcm1JbmRleEluZGV4ID0gMDsgdW5pZm9ybUluZGV4SW5kZXgg
PCB1bmlmb3JtSW5kZXhDb3VudDsKICAgICAgICAgIHVuaWZvcm1JbmRleEluZGV4KyspCiAgICAg
ewpAQCAtNjA1LDEyICs3ODcsMTQgQEAgRXJyb3IgUHJvZ3JhbTo6bG9hZEJpbmFyeShHTGVudW0g
YmluYXJ5RgogICAgICAgICBzdHJlYW0ucmVhZFN0cmluZygmdmFyaWFibGUubmFtZSk7CiAgICAg
ICAgIHN0cmVhbS5yZWFkSW50KCZ2YXJpYWJsZS5lbGVtZW50KTsKICAgICAgICAgc3RyZWFtLnJl
YWRJbnQoJnZhcmlhYmxlLmluZGV4KTsKKyAgICAgICAgc3RyZWFtLnJlYWRCb29sKCZ2YXJpYWJs
ZS51c2VkKTsKKyAgICAgICAgc3RyZWFtLnJlYWRCb29sKCZ2YXJpYWJsZS5pZ25vcmVkKTsKIAot
ICAgICAgICBtRGF0YS5tVW5pZm9ybUxvY2F0aW9ucy5wdXNoX2JhY2sodmFyaWFibGUpOworICAg
ICAgICBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnMucHVzaF9iYWNrKHZhcmlhYmxlKTsKICAgICB9
CiAKICAgICB1bnNpZ25lZCBpbnQgdW5pZm9ybUJsb2NrQ291bnQgPSBzdHJlYW0ucmVhZEludDx1
bnNpZ25lZCBpbnQ+KCk7Ci0gICAgQVNTRVJUKG1EYXRhLm1Vbmlmb3JtQmxvY2tzLmVtcHR5KCkp
OworICAgIEFTU0VSVChtU3RhdGUubVVuaWZvcm1CbG9ja3MuZW1wdHkoKSk7CiAgICAgZm9yICh1
bnNpZ25lZCBpbnQgdW5pZm9ybUJsb2NrSW5kZXggPSAwOyB1bmlmb3JtQmxvY2tJbmRleCA8IHVu
aWZvcm1CbG9ja0NvdW50OwogICAgICAgICAgKyt1bmlmb3JtQmxvY2tJbmRleCkKICAgICB7CkBA
IC02MjgsMTEgKzgxMiwxMSBAQCBFcnJvciBQcm9ncmFtOjpsb2FkQmluYXJ5KEdMZW51bSBiaW5h
cnlGCiAgICAgICAgICAgICB1bmlmb3JtQmxvY2subWVtYmVyVW5pZm9ybUluZGV4ZXMucHVzaF9i
YWNrKHN0cmVhbS5yZWFkSW50PHVuc2lnbmVkIGludD4oKSk7CiAgICAgICAgIH0KIAotICAgICAg
ICBtRGF0YS5tVW5pZm9ybUJsb2Nrcy5wdXNoX2JhY2sodW5pZm9ybUJsb2NrKTsKKyAgICAgICAg
bVN0YXRlLm1Vbmlmb3JtQmxvY2tzLnB1c2hfYmFjayh1bmlmb3JtQmxvY2spOwogICAgIH0KIAog
ICAgIHVuc2lnbmVkIGludCB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdDb3VudCA9IHN0cmVhbS5y
ZWFkSW50PHVuc2lnbmVkIGludD4oKTsKLSAgICBBU1NFUlQobURhdGEubVRyYW5zZm9ybUZlZWRi
YWNrVmFyeWluZ1ZhcnMuZW1wdHkoKSk7CisgICAgQVNTRVJUKG1TdGF0ZS5tVHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5nVmFycy5lbXB0eSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGludCB0cmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmdJbmRleCA9IDA7CiAgICAgICAgIHRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZ0luZGV4IDwgdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nQ291bnQ7CiAgICAgICAgICsrdHJh
bnNmb3JtRmVlZGJhY2tWYXJ5aW5nSW5kZXgpCkBAIC02NDIsMTAgKzgyNiwxMCBAQCBFcnJvciBQ
cm9ncmFtOjpsb2FkQmluYXJ5KEdMZW51bSBiaW5hcnlGCiAgICAgICAgIHN0cmVhbS5yZWFkSW50
KCZ2YXJ5aW5nLnR5cGUpOwogICAgICAgICBzdHJlYW0ucmVhZFN0cmluZygmdmFyeWluZy5uYW1l
KTsKIAotICAgICAgICBtRGF0YS5tVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nVmFycy5wdXNoX2Jh
Y2sodmFyeWluZyk7CisgICAgICAgIG1TdGF0ZS5tVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nVmFy
cy5wdXNoX2JhY2sodmFyeWluZyk7CiAgICAgfQogCi0gICAgc3RyZWFtLnJlYWRJbnQoJm1EYXRh
Lm1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUpOworICAgIHN0cmVhbS5yZWFkSW50KCZtU3Rh
dGUubVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9kZSk7CiAKICAgICB1bnNpZ25lZCBpbnQgb3V0
cHV0VmFyQ291bnQgPSBzdHJlYW0ucmVhZEludDx1bnNpZ25lZCBpbnQ+KCk7CiAgICAgZm9yICh1
bnNpZ25lZCBpbnQgb3V0cHV0SW5kZXggPSAwOyBvdXRwdXRJbmRleCA8IG91dHB1dFZhckNvdW50
OyArK291dHB1dEluZGV4KQpAQCAtNjU1LDcgKzgzOSw3IEBAIEVycm9yIFByb2dyYW06OmxvYWRC
aW5hcnkoR0xlbnVtIGJpbmFyeUYKICAgICAgICAgc3RyZWFtLnJlYWRJbnQoJmxvY2F0aW9uRGF0
YS5lbGVtZW50KTsKICAgICAgICAgc3RyZWFtLnJlYWRJbnQoJmxvY2F0aW9uRGF0YS5pbmRleCk7
CiAgICAgICAgIHN0cmVhbS5yZWFkU3RyaW5nKCZsb2NhdGlvbkRhdGEubmFtZSk7Ci0gICAgICAg
IG1EYXRhLm1PdXRwdXRWYXJpYWJsZXNbbG9jYXRpb25JbmRleF0gPSBsb2NhdGlvbkRhdGE7Cisg
ICAgICAgIG1TdGF0ZS5tT3V0cHV0VmFyaWFibGVzW2xvY2F0aW9uSW5kZXhdID0gbG9jYXRpb25E
YXRhOwogICAgIH0KIAogICAgIHN0cmVhbS5yZWFkSW50KCZtU2FtcGxlclVuaWZvcm1SYW5nZS5z
dGFydCk7CkBAIC02ODUsMTcgKzg2OSwyMSBAQCBFcnJvciBQcm9ncmFtOjpzYXZlQmluYXJ5KEdM
ZW51bSAqYmluYXJ5CiAgICAgc3RyZWFtLndyaXRlSW50KEFOR0xFX01JTk9SX1ZFUlNJT04pOwog
ICAgIHN0cmVhbS53cml0ZUJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hh
cio+KEFOR0xFX0NPTU1JVF9IQVNIKSwgQU5HTEVfQ09NTUlUX0hBU0hfU0laRSk7CiAKLSAgICBz
dHJlYW0ud3JpdGVJbnQobURhdGEubUFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2sudG9fdWxvbmco
KSk7CisgICAgc3RyZWFtLndyaXRlSW50KG1TdGF0ZS5tQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZVsw
XSk7CisgICAgc3RyZWFtLndyaXRlSW50KG1TdGF0ZS5tQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZVsx
XSk7CisgICAgc3RyZWFtLndyaXRlSW50KG1TdGF0ZS5tQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZVsy
XSk7CisKKyAgICBzdHJlYW0ud3JpdGVJbnQobVN0YXRlLm1BY3RpdmVBdHRyaWJMb2NhdGlvbnNN
YXNrLnRvX3Vsb25nKCkpOwogCi0gICAgc3RyZWFtLndyaXRlSW50KG1EYXRhLm1BdHRyaWJ1dGVz
LnNpemUoKSk7Ci0gICAgZm9yIChjb25zdCBzaDo6QXR0cmlidXRlICZhdHRyaWIgOiBtRGF0YS5t
QXR0cmlidXRlcykKKyAgICBzdHJlYW0ud3JpdGVJbnQobVN0YXRlLm1BdHRyaWJ1dGVzLnNpemUo
KSk7CisgICAgZm9yIChjb25zdCBzaDo6QXR0cmlidXRlICZhdHRyaWIgOiBtU3RhdGUubUF0dHJp
YnV0ZXMpCiAgICAgewogICAgICAgICBXcml0ZVNoYWRlclZhcigmc3RyZWFtLCBhdHRyaWIpOwog
ICAgICAgICBzdHJlYW0ud3JpdGVJbnQoYXR0cmliLmxvY2F0aW9uKTsKICAgICB9CiAKLSAgICBz
dHJlYW0ud3JpdGVJbnQobURhdGEubVVuaWZvcm1zLnNpemUoKSk7Ci0gICAgZm9yIChjb25zdCBn
bDo6TGlua2VkVW5pZm9ybSAmdW5pZm9ybSA6IG1EYXRhLm1Vbmlmb3JtcykKKyAgICBzdHJlYW0u
d3JpdGVJbnQobVN0YXRlLm1Vbmlmb3Jtcy5zaXplKCkpOworICAgIGZvciAoY29uc3QgZ2w6Okxp
bmtlZFVuaWZvcm0gJnVuaWZvcm0gOiBtU3RhdGUubVVuaWZvcm1zKQogICAgIHsKICAgICAgICAg
V3JpdGVTaGFkZXJWYXIoJnN0cmVhbSwgdW5pZm9ybSk7CiAKQEAgLTcwOCwxNiArODk2LDE4IEBA
IEVycm9yIFByb2dyYW06OnNhdmVCaW5hcnkoR0xlbnVtICpiaW5hcnkKICAgICAgICAgc3RyZWFt
LndyaXRlSW50KHVuaWZvcm0uYmxvY2tJbmZvLmlzUm93TWFqb3JNYXRyaXgpOwogICAgIH0KIAot
ICAgIHN0cmVhbS53cml0ZUludChtRGF0YS5tVW5pZm9ybUxvY2F0aW9ucy5zaXplKCkpOwotICAg
IGZvciAoY29uc3QgYXV0byAmdmFyaWFibGUgOiBtRGF0YS5tVW5pZm9ybUxvY2F0aW9ucykKKyAg
ICBzdHJlYW0ud3JpdGVJbnQobVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zLnNpemUoKSk7CisgICAg
Zm9yIChjb25zdCBhdXRvICZ2YXJpYWJsZSA6IG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9ucykKICAg
ICB7CiAgICAgICAgIHN0cmVhbS53cml0ZVN0cmluZyh2YXJpYWJsZS5uYW1lKTsKICAgICAgICAg
c3RyZWFtLndyaXRlSW50KHZhcmlhYmxlLmVsZW1lbnQpOwogICAgICAgICBzdHJlYW0ud3JpdGVJ
bnQodmFyaWFibGUuaW5kZXgpOworICAgICAgICBzdHJlYW0ud3JpdGVJbnQodmFyaWFibGUudXNl
ZCk7CisgICAgICAgIHN0cmVhbS53cml0ZUludCh2YXJpYWJsZS5pZ25vcmVkKTsKICAgICB9CiAK
LSAgICBzdHJlYW0ud3JpdGVJbnQobURhdGEubVVuaWZvcm1CbG9ja3Muc2l6ZSgpKTsKLSAgICBm
b3IgKGNvbnN0IFVuaWZvcm1CbG9jayAmdW5pZm9ybUJsb2NrIDogbURhdGEubVVuaWZvcm1CbG9j
a3MpCisgICAgc3RyZWFtLndyaXRlSW50KG1TdGF0ZS5tVW5pZm9ybUJsb2Nrcy5zaXplKCkpOwor
ICAgIGZvciAoY29uc3QgVW5pZm9ybUJsb2NrICZ1bmlmb3JtQmxvY2sgOiBtU3RhdGUubVVuaWZv
cm1CbG9ja3MpCiAgICAgewogICAgICAgICBzdHJlYW0ud3JpdGVTdHJpbmcodW5pZm9ybUJsb2Nr
Lm5hbWUpOwogICAgICAgICBzdHJlYW0ud3JpdGVJbnQodW5pZm9ybUJsb2NrLmlzQXJyYXkpOwpA
QCAtNzM0LDIxICs5MjQsMjEgQEAgRXJyb3IgUHJvZ3JhbTo6c2F2ZUJpbmFyeShHTGVudW0gKmJp
bmFyeQogICAgICAgICB9CiAgICAgfQogCi0gICAgc3RyZWFtLndyaXRlSW50KG1EYXRhLm1UcmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdWYXJzLnNpemUoKSk7Ci0gICAgZm9yIChjb25zdCBzaDo6VmFy
eWluZyAmdmFyeWluZyA6IG1EYXRhLm1UcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdWYXJzKQorICAg
IHN0cmVhbS53cml0ZUludChtU3RhdGUubVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ1ZhcnMuc2l6
ZSgpKTsKKyAgICBmb3IgKGNvbnN0IHNoOjpWYXJ5aW5nICZ2YXJ5aW5nIDogbVN0YXRlLm1UcmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdWYXJzKQogICAgIHsKICAgICAgICAgc3RyZWFtLndyaXRlSW50
KHZhcnlpbmcuYXJyYXlTaXplKTsKICAgICAgICAgc3RyZWFtLndyaXRlSW50KHZhcnlpbmcudHlw
ZSk7CiAgICAgICAgIHN0cmVhbS53cml0ZVN0cmluZyh2YXJ5aW5nLm5hbWUpOwogICAgIH0KIAot
ICAgIHN0cmVhbS53cml0ZUludChtRGF0YS5tVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlKTsK
KyAgICBzdHJlYW0ud3JpdGVJbnQobVN0YXRlLm1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUp
OwogCi0gICAgc3RyZWFtLndyaXRlSW50KG1EYXRhLm1PdXRwdXRWYXJpYWJsZXMuc2l6ZSgpKTsK
LSAgICBmb3IgKGNvbnN0IGF1dG8gJm91dHB1dFBhaXIgOiBtRGF0YS5tT3V0cHV0VmFyaWFibGVz
KQorICAgIHN0cmVhbS53cml0ZUludChtU3RhdGUubU91dHB1dFZhcmlhYmxlcy5zaXplKCkpOwor
ICAgIGZvciAoY29uc3QgYXV0byAmb3V0cHV0UGFpciA6IG1TdGF0ZS5tT3V0cHV0VmFyaWFibGVz
KQogICAgIHsKICAgICAgICAgc3RyZWFtLndyaXRlSW50KG91dHB1dFBhaXIuZmlyc3QpOwotICAg
ICAgICBzdHJlYW0ud3JpdGVJbnQob3V0cHV0UGFpci5zZWNvbmQuZWxlbWVudCk7CisgICAgICAg
IHN0cmVhbS53cml0ZUludE9yTmVnT25lKG91dHB1dFBhaXIuc2Vjb25kLmVsZW1lbnQpOwogICAg
ICAgICBzdHJlYW0ud3JpdGVJbnQob3V0cHV0UGFpci5zZWNvbmQuaW5kZXgpOwogICAgICAgICBz
dHJlYW0ud3JpdGVTdHJpbmcob3V0cHV0UGFpci5zZWNvbmQubmFtZSk7CiAgICAgfQpAQCAtNzYz
LDcgKzk1Myw3IEBAIEVycm9yIFByb2dyYW06OnNhdmVCaW5hcnkoR0xlbnVtICpiaW5hcnkKICAg
ICB9CiAKICAgICBHTHNpemVpIHN0cmVhbUxlbmd0aCAgID0gc3RhdGljX2Nhc3Q8R0xzaXplaT4o
c3RyZWFtLmxlbmd0aCgpKTsKLSAgICBjb25zdCB2b2lkICpzdHJlYW1EYXRhID0gc3RyZWFtLmRh
dGEoKTsKKyAgICBjb25zdCB2b2lkICpzdHJlYW1TdGF0ZSA9IHN0cmVhbS5kYXRhKCk7CiAKICAg
ICBpZiAoc3RyZWFtTGVuZ3RoID4gYnVmU2l6ZSkKICAgICB7CkBAIC03ODIsNyArOTcyLDcgQEAg
RXJyb3IgUHJvZ3JhbTo6c2F2ZUJpbmFyeShHTGVudW0gKmJpbmFyeQogICAgIHsKICAgICAgICAg
Y2hhciAqcHRyID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYmluYXJ5KTsKIAotICAgICAgICBt
ZW1jcHkocHRyLCBzdHJlYW1EYXRhLCBzdHJlYW1MZW5ndGgpOworICAgICAgICBtZW1jcHkocHRy
LCBzdHJlYW1TdGF0ZSwgc3RyZWFtTGVuZ3RoKTsKICAgICAgICAgcHRyICs9IHN0cmVhbUxlbmd0
aDsKIAogICAgICAgICBBU1NFUlQocHRyIC0gc3RyZWFtTGVuZ3RoID09IGJpbmFyeSk7CkBAIC04
MTIsMTIgKzEwMDIsMTIgQEAgdm9pZCBQcm9ncmFtOjpzZXRCaW5hcnlSZXRyaWV2YWJsZUhpbnQo
YgogewogICAgIC8vIFRPRE8oam1hZGlsbCkgOiByZXBsYWNlIHdpdGggZGlydHkgYml0cwogICAg
IG1Qcm9ncmFtLT5zZXRCaW5hcnlSZXRyaWV2YWJsZUhpbnQocmV0cmlldmFibGUpOwotICAgIG1E
YXRhLm1CaW5hcnlSZXRyaWV2ZWFibGVIaW50ID0gcmV0cmlldmFibGU7CisgICAgbVN0YXRlLm1C
aW5hcnlSZXRyaWV2ZWFibGVIaW50ID0gcmV0cmlldmFibGU7CiB9CiAKIGJvb2wgUHJvZ3JhbTo6
Z2V0QmluYXJ5UmV0cmlldmFibGVIaW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbURhdGEubUJp
bmFyeVJldHJpZXZlYWJsZUhpbnQ7CisgICAgcmV0dXJuIG1TdGF0ZS5tQmluYXJ5UmV0cmlldmVh
YmxlSGludDsKIH0KIAogdm9pZCBQcm9ncmFtOjpyZWxlYXNlKCkKQEAgLTg1NCwyMCArMTA0NCwy
OSBAQCB2b2lkIFByb2dyYW06OmdldEF0dGFjaGVkU2hhZGVycyhHTHNpemVpCiB7CiAgICAgaW50
IHRvdGFsID0gMDsKIAotICAgIGlmIChtRGF0YS5tQXR0YWNoZWRWZXJ0ZXhTaGFkZXIpCisgICAg
aWYgKG1TdGF0ZS5tQXR0YWNoZWRDb21wdXRlU2hhZGVyKQogICAgIHsKICAgICAgICAgaWYgKHRv
dGFsIDwgbWF4Q291bnQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHNoYWRlcnNbdG90YWxdID0g
bURhdGEubUF0dGFjaGVkVmVydGV4U2hhZGVyLT5nZXRIYW5kbGUoKTsKKyAgICAgICAgICAgIHNo
YWRlcnNbdG90YWxdID0gbVN0YXRlLm1BdHRhY2hlZENvbXB1dGVTaGFkZXItPmdldEhhbmRsZSgp
OwogICAgICAgICAgICAgdG90YWwrKzsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChtRGF0
YS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlcikKKyAgICBpZiAobVN0YXRlLm1BdHRhY2hlZFZlcnRl
eFNoYWRlcikKICAgICB7CiAgICAgICAgIGlmICh0b3RhbCA8IG1heENvdW50KQogICAgICAgICB7
Ci0gICAgICAgICAgICBzaGFkZXJzW3RvdGFsXSA9IG1EYXRhLm1BdHRhY2hlZEZyYWdtZW50U2hh
ZGVyLT5nZXRIYW5kbGUoKTsKKyAgICAgICAgICAgIHNoYWRlcnNbdG90YWxdID0gbVN0YXRlLm1B
dHRhY2hlZFZlcnRleFNoYWRlci0+Z2V0SGFuZGxlKCk7CisgICAgICAgICAgICB0b3RhbCsrOwor
ICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1TdGF0ZS5tQXR0YWNoZWRGcmFnbWVudFNoYWRl
cikKKyAgICB7CisgICAgICAgIGlmICh0b3RhbCA8IG1heENvdW50KQorICAgICAgICB7CisgICAg
ICAgICAgICBzaGFkZXJzW3RvdGFsXSA9IG1TdGF0ZS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlci0+
Z2V0SGFuZGxlKCk7CiAgICAgICAgICAgICB0b3RhbCsrOwogICAgICAgICB9CiAgICAgfQpAQCAt
ODgwLDcgKzEwNzksNyBAQCB2b2lkIFByb2dyYW06OmdldEF0dGFjaGVkU2hhZGVycyhHTHNpemVp
CiAKIEdMdWludCBQcm9ncmFtOjpnZXRBdHRyaWJ1dGVMb2NhdGlvbihjb25zdCBzdGQ6OnN0cmlu
ZyAmbmFtZSkgY29uc3QKIHsKLSAgICBmb3IgKGNvbnN0IHNoOjpBdHRyaWJ1dGUgJmF0dHJpYnV0
ZSA6IG1EYXRhLm1BdHRyaWJ1dGVzKQorICAgIGZvciAoY29uc3Qgc2g6OkF0dHJpYnV0ZSAmYXR0
cmlidXRlIDogbVN0YXRlLm1BdHRyaWJ1dGVzKQogICAgIHsKICAgICAgICAgaWYgKGF0dHJpYnV0
ZS5uYW1lID09IG5hbWUgJiYgYXR0cmlidXRlLnN0YXRpY1VzZSkKICAgICAgICAgewpAQCAtODkz
LDggKzEwOTIsOCBAQCBHTHVpbnQgUHJvZ3JhbTo6Z2V0QXR0cmlidXRlTG9jYXRpb24oY29uCiAK
IGJvb2wgUHJvZ3JhbTo6aXNBdHRyaWJMb2NhdGlvbkFjdGl2ZShzaXplX3QgYXR0cmliTG9jYXRp
b24pIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGF0dHJpYkxvY2F0aW9uIDwgbURhdGEubUFjdGl2ZUF0
dHJpYkxvY2F0aW9uc01hc2suc2l6ZSgpKTsKLSAgICByZXR1cm4gbURhdGEubUFjdGl2ZUF0dHJp
YkxvY2F0aW9uc01hc2tbYXR0cmliTG9jYXRpb25dOworICAgIEFTU0VSVChhdHRyaWJMb2NhdGlv
biA8IG1TdGF0ZS5tQWN0aXZlQXR0cmliTG9jYXRpb25zTWFzay5zaXplKCkpOworICAgIHJldHVy
biBtU3RhdGUubUFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2tbYXR0cmliTG9jYXRpb25dOwogfQog
CiB2b2lkIFByb2dyYW06OmdldEFjdGl2ZUF0dHJpYnV0ZShHTHVpbnQgaW5kZXgsIEdMc2l6ZWkg
YnVmc2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqc2l6ZSwgR0xlbnVtICp0eXBlLCBHTGNo
YXIgKm5hbWUpCkBAIC05MTgsNyArMTExNyw3IEBAIHZvaWQgUHJvZ3JhbTo6Z2V0QWN0aXZlQXR0
cmlidXRlKEdMdWludCAKIAogICAgIHNpemVfdCBhdHRyaWJ1dGVJbmRleCA9IDA7CiAKLSAgICBm
b3IgKGNvbnN0IHNoOjpBdHRyaWJ1dGUgJmF0dHJpYnV0ZSA6IG1EYXRhLm1BdHRyaWJ1dGVzKQor
ICAgIGZvciAoY29uc3Qgc2g6OkF0dHJpYnV0ZSAmYXR0cmlidXRlIDogbVN0YXRlLm1BdHRyaWJ1
dGVzKQogICAgIHsKICAgICAgICAgLy8gU2tpcCBvdmVyIGluYWN0aXZlIGF0dHJpYnV0ZXMKICAg
ICAgICAgaWYgKGF0dHJpYnV0ZS5zdGF0aWNVc2UpCkBAIC05MzEsOCArMTEzMCw4IEBAIHZvaWQg
UHJvZ3JhbTo6Z2V0QWN0aXZlQXR0cmlidXRlKEdMdWludCAKICAgICAgICAgfQogICAgIH0KIAot
ICAgIEFTU0VSVChpbmRleCA9PSBhdHRyaWJ1dGVJbmRleCAmJiBhdHRyaWJ1dGVJbmRleCA8IG1E
YXRhLm1BdHRyaWJ1dGVzLnNpemUoKSk7Ci0gICAgY29uc3Qgc2g6OkF0dHJpYnV0ZSAmYXR0cmli
ID0gbURhdGEubUF0dHJpYnV0ZXNbYXR0cmlidXRlSW5kZXhdOworICAgIEFTU0VSVChpbmRleCA9
PSBhdHRyaWJ1dGVJbmRleCAmJiBhdHRyaWJ1dGVJbmRleCA8IG1TdGF0ZS5tQXR0cmlidXRlcy5z
aXplKCkpOworICAgIGNvbnN0IHNoOjpBdHRyaWJ1dGUgJmF0dHJpYiA9IG1TdGF0ZS5tQXR0cmli
dXRlc1thdHRyaWJ1dGVJbmRleF07CiAKICAgICBpZiAoYnVmc2l6ZSA+IDApCiAgICAgewpAQCAt
OTYxLDcgKzExNjAsNyBAQCBHTGludCBQcm9ncmFtOjpnZXRBY3RpdmVBdHRyaWJ1dGVDb3VudCgp
CiAKICAgICBHTGludCBjb3VudCA9IDA7CiAKLSAgICBmb3IgKGNvbnN0IHNoOjpBdHRyaWJ1dGUg
JmF0dHJpYiA6IG1EYXRhLm1BdHRyaWJ1dGVzKQorICAgIGZvciAoY29uc3Qgc2g6OkF0dHJpYnV0
ZSAmYXR0cmliIDogbVN0YXRlLm1BdHRyaWJ1dGVzKQogICAgIHsKICAgICAgICAgY291bnQgKz0g
KGF0dHJpYi5zdGF0aWNVc2UgPyAxIDogMCk7CiAgICAgfQpAQCAtOTc4LDcgKzExNzcsNyBAQCBH
TGludCBQcm9ncmFtOjpnZXRBY3RpdmVBdHRyaWJ1dGVNYXhMZW5nCiAKICAgICBzaXplX3QgbWF4
TGVuZ3RoID0gMDsKIAotICAgIGZvciAoY29uc3Qgc2g6OkF0dHJpYnV0ZSAmYXR0cmliIDogbURh
dGEubUF0dHJpYnV0ZXMpCisgICAgZm9yIChjb25zdCBzaDo6QXR0cmlidXRlICZhdHRyaWIgOiBt
U3RhdGUubUF0dHJpYnV0ZXMpCiAgICAgewogICAgICAgICBpZiAoYXR0cmliLnN0YXRpY1VzZSkK
ICAgICAgICAgewpAQCAtOTkzLDcgKzExOTIsNyBAQCBHTGludCBQcm9ncmFtOjpnZXRGcmFnRGF0
YUxvY2F0aW9uKGNvbnN0CiB7CiAgICAgc3RkOjpzdHJpbmcgYmFzZU5hbWUobmFtZSk7CiAgICAg
dW5zaWduZWQgaW50IGFycmF5SW5kZXggPSBQYXJzZUFuZFN0cmlwQXJyYXlJbmRleCgmYmFzZU5h
bWUpOwotICAgIGZvciAoYXV0byBvdXRwdXRQYWlyIDogbURhdGEubU91dHB1dFZhcmlhYmxlcykK
KyAgICBmb3IgKGF1dG8gb3V0cHV0UGFpciA6IG1TdGF0ZS5tT3V0cHV0VmFyaWFibGVzKQogICAg
IHsKICAgICAgICAgY29uc3QgVmFyaWFibGVMb2NhdGlvbiAmb3V0cHV0VmFyaWFibGUgPSBvdXRw
dXRQYWlyLnNlY29uZDsKICAgICAgICAgaWYgKG91dHB1dFZhcmlhYmxlLm5hbWUgPT0gYmFzZU5h
bWUgJiYgKGFycmF5SW5kZXggPT0gR0xfSU5WQUxJRF9JTkRFWCB8fCBhcnJheUluZGV4ID09IG91
dHB1dFZhcmlhYmxlLmVsZW1lbnQpKQpAQCAtMTAxNCw4ICsxMjEzLDggQEAgdm9pZCBQcm9ncmFt
OjpnZXRBY3RpdmVVbmlmb3JtKEdMdWludCBpbgogICAgIGlmIChtTGlua2VkKQogICAgIHsKICAg
ICAgICAgLy8gaW5kZXggbXVzdCBiZSBzbWFsbGVyIHRoYW4gZ2V0QWN0aXZlVW5pZm9ybUNvdW50
KCkKLSAgICAgICAgQVNTRVJUKGluZGV4IDwgbURhdGEubVVuaWZvcm1zLnNpemUoKSk7Ci0gICAg
ICAgIGNvbnN0IExpbmtlZFVuaWZvcm0gJnVuaWZvcm0gPSBtRGF0YS5tVW5pZm9ybXNbaW5kZXhd
OworICAgICAgICBBU1NFUlQoaW5kZXggPCBtU3RhdGUubVVuaWZvcm1zLnNpemUoKSk7CisgICAg
ICAgIGNvbnN0IExpbmtlZFVuaWZvcm0gJnVuaWZvcm0gPSBtU3RhdGUubVVuaWZvcm1zW2luZGV4
XTsKIAogICAgICAgICBpZiAoYnVmc2l6ZSA+IDApCiAgICAgICAgIHsKQEAgLTEwNTgsNyArMTI1
Nyw3IEBAIEdMaW50IFByb2dyYW06OmdldEFjdGl2ZVVuaWZvcm1Db3VudCgpIGMKIHsKICAgICBp
ZiAobUxpbmtlZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTGludD4obURh
dGEubVVuaWZvcm1zLnNpemUoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTGludD4o
bVN0YXRlLm1Vbmlmb3Jtcy5zaXplKCkpOwogICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtMTA3
Miw3ICsxMjcxLDcgQEAgR0xpbnQgUHJvZ3JhbTo6Z2V0QWN0aXZlVW5pZm9ybU1heExlbmd0aAog
CiAgICAgaWYgKG1MaW5rZWQpCiAgICAgewotICAgICAgICBmb3IgKGNvbnN0IExpbmtlZFVuaWZv
cm0gJnVuaWZvcm0gOiBtRGF0YS5tVW5pZm9ybXMpCisgICAgICAgIGZvciAoY29uc3QgTGlua2Vk
VW5pZm9ybSAmdW5pZm9ybSA6IG1TdGF0ZS5tVW5pZm9ybXMpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGlmICghdW5pZm9ybS5uYW1lLmVtcHR5KCkpCiAgICAgICAgICAgICB7CkBAIC0xMDkxLDgg
KzEyOTAsOCBAQCBHTGludCBQcm9ncmFtOjpnZXRBY3RpdmVVbmlmb3JtTWF4TGVuZ3RoCiAKIEdM
aW50IFByb2dyYW06OmdldEFjdGl2ZVVuaWZvcm1pKEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1l
KSBjb25zdAogewotICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA8IG1EYXRh
Lm1Vbmlmb3Jtcy5zaXplKCkpOwotICAgIGNvbnN0IGdsOjpMaW5rZWRVbmlmb3JtICZ1bmlmb3Jt
ID0gbURhdGEubVVuaWZvcm1zW2luZGV4XTsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90
PihpbmRleCkgPCBtU3RhdGUubVVuaWZvcm1zLnNpemUoKSk7CisgICAgY29uc3QgZ2w6Okxpbmtl
ZFVuaWZvcm0gJnVuaWZvcm0gPSBtU3RhdGUubVVuaWZvcm1zW2luZGV4XTsKICAgICBzd2l0Y2gg
KHBuYW1lKQogICAgIHsKICAgICAgIGNhc2UgR0xfVU5JRk9STV9UWVBFOiAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxHTGludD4odW5pZm9ybS50eXBlKTsKQEAgLTExMTIsMjQgKzEzMTEsMzQg
QEAgR0xpbnQgUHJvZ3JhbTo6Z2V0QWN0aXZlVW5pZm9ybWkoR0x1aW50IAogCiBib29sIFByb2dy
YW06OmlzVmFsaWRVbmlmb3JtTG9jYXRpb24oR0xpbnQgbG9jYXRpb24pIGNvbnN0CiB7Ci0gICAg
QVNTRVJUKHJ4OjpJc0ludGVnZXJDYXN0U2FmZTxHTGludD4obURhdGEubVVuaWZvcm1Mb2NhdGlv
bnMuc2l6ZSgpKSk7Ci0gICAgcmV0dXJuIChsb2NhdGlvbiA+PSAwICYmIHN0YXRpY19jYXN0PHNp
emVfdD4obG9jYXRpb24pIDwgbURhdGEubVVuaWZvcm1Mb2NhdGlvbnMuc2l6ZSgpKTsKKyAgICBB
U1NFUlQoYW5nbGU6OklzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8R0xpbnQ+KG1TdGF0ZS5t
VW5pZm9ybUxvY2F0aW9ucy5zaXplKCkpKTsKKyAgICByZXR1cm4gKGxvY2F0aW9uID49IDAgJiYg
c3RhdGljX2Nhc3Q8c2l6ZV90Pihsb2NhdGlvbikgPCBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnMu
c2l6ZSgpICYmCisgICAgICAgICAgICBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnNbc3RhdGljX2Nh
c3Q8c2l6ZV90Pihsb2NhdGlvbildLnVzZWQpOworfQorCitib29sIFByb2dyYW06OmlzSWdub3Jl
ZFVuaWZvcm1Mb2NhdGlvbihHTGludCBsb2NhdGlvbikgY29uc3QKK3sKKyAgICAvLyBMb2NhdGlv
biBpcyBpZ25vcmVkIGlmIGl0IGlzIC0xIG9yIGl0IHdhcyBib3VuZCBidXQgbm9uLWV4aXN0YW50
IGluIHRoZSBzaGFkZXIgb3Igb3B0aW1pemVkCisgICAgLy8gb3V0CisgICAgcmV0dXJuIGxvY2F0
aW9uID09IC0xIHx8CisgICAgICAgICAgIChsb2NhdGlvbiA+PSAwICYmIHN0YXRpY19jYXN0PHNp
emVfdD4obG9jYXRpb24pIDwgbVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zLnNpemUoKSAmJgorICAg
ICAgICAgICAgbVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zW3N0YXRpY19jYXN0PHNpemVfdD4obG9j
YXRpb24pXS5pZ25vcmVkKTsKIH0KIAogY29uc3QgTGlua2VkVW5pZm9ybSAmUHJvZ3JhbTo6Z2V0
VW5pZm9ybUJ5TG9jYXRpb24oR0xpbnQgbG9jYXRpb24pIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGxv
Y2F0aW9uID49IDAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90Pihsb2NhdGlvbikgPCBtRGF0YS5tVW5p
Zm9ybUxvY2F0aW9ucy5zaXplKCkpOwotICAgIHJldHVybiBtRGF0YS5tVW5pZm9ybXNbbURhdGEu
bVVuaWZvcm1Mb2NhdGlvbnNbbG9jYXRpb25dLmluZGV4XTsKKyAgICBBU1NFUlQobG9jYXRpb24g
Pj0gMCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KGxvY2F0aW9uKSA8IG1TdGF0ZS5tVW5pZm9ybUxv
Y2F0aW9ucy5zaXplKCkpOworICAgIHJldHVybiBtU3RhdGUubVVuaWZvcm1zW21TdGF0ZS5tVW5p
Zm9ybUxvY2F0aW9uc1tsb2NhdGlvbl0uaW5kZXhdOwogfQogCiBHTGludCBQcm9ncmFtOjpnZXRV
bmlmb3JtTG9jYXRpb24oY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1EYXRhLmdldFVuaWZvcm1Mb2NhdGlvbihuYW1lKTsKKyAgICByZXR1cm4gbVN0YXRlLmdl
dFVuaWZvcm1Mb2NhdGlvbihuYW1lKTsKIH0KIAogR0x1aW50IFByb2dyYW06OmdldFVuaWZvcm1J
bmRleChjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkgY29uc3QKIHsKLSAgICByZXR1cm4gbURhdGEu
Z2V0VW5pZm9ybUluZGV4KG5hbWUpOworICAgIHJldHVybiBtU3RhdGUuZ2V0VW5pZm9ybUluZGV4
KG5hbWUpOwogfQogCiB2b2lkIFByb2dyYW06OnNldFVuaWZvcm0xZnYoR0xpbnQgbG9jYXRpb24s
IEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpCkBAIC0xMzIxLDcgKzE1MzAsNyBAQCBi
b29sIFByb2dyYW06OnZhbGlkYXRlU2FtcGxlcnMoSW5mb0xvZyAqCiAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgc2FtcGxlckluZGV4ID0gbVNhbXBsZXJVbmlmb3JtUmFuZ2Uuc3RhcnQ7CiAgICAgICAg
ICBzYW1wbGVySW5kZXggPCBtU2FtcGxlclVuaWZvcm1SYW5nZS5lbmQ7ICsrc2FtcGxlckluZGV4
KQogICAgIHsKLSAgICAgICAgY29uc3QgTGlua2VkVW5pZm9ybSAmdW5pZm9ybSA9IG1EYXRhLm1V
bmlmb3Jtc1tzYW1wbGVySW5kZXhdOworICAgICAgICBjb25zdCBMaW5rZWRVbmlmb3JtICZ1bmlm
b3JtID0gbVN0YXRlLm1Vbmlmb3Jtc1tzYW1wbGVySW5kZXhdOwogICAgICAgICBBU1NFUlQodW5p
Zm9ybS5pc1NhbXBsZXIoKSk7CiAKICAgICAgICAgaWYgKCF1bmlmb3JtLnN0YXRpY1VzZSkKQEAg
LTEzODAsMTUgKzE1ODksMTYgQEAgYm9vbCBQcm9ncmFtOjppc1ZhbGlkYXRlZCgpIGNvbnN0CiAK
IEdMdWludCBQcm9ncmFtOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tDb3VudCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMdWludD4obURhdGEubVVuaWZvcm1CbG9ja3Muc2l6ZSgp
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0x1aW50PihtU3RhdGUubVVuaWZvcm1CbG9ja3Mu
c2l6ZSgpKTsKIH0KIAogdm9pZCBQcm9ncmFtOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKEdM
dWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgs
IEdMY2hhciAqdW5pZm9ybUJsb2NrTmFtZSkgY29uc3QKIHsKLSAgICBBU1NFUlQodW5pZm9ybUJs
b2NrSW5kZXggPAotICAgICAgICAgICBtRGF0YS5tVW5pZm9ybUJsb2Nrcy5zaXplKCkpOyAgLy8g
aW5kZXggbXVzdCBiZSBzbWFsbGVyIHRoYW4gZ2V0QWN0aXZlVW5pZm9ybUJsb2NrQ291bnQoKQor
ICAgIEFTU0VSVCgKKyAgICAgICAgdW5pZm9ybUJsb2NrSW5kZXggPAorICAgICAgICBtU3RhdGUu
bVVuaWZvcm1CbG9ja3Muc2l6ZSgpKTsgIC8vIGluZGV4IG11c3QgYmUgc21hbGxlciB0aGFuIGdl
dEFjdGl2ZVVuaWZvcm1CbG9ja0NvdW50KCkKIAotICAgIGNvbnN0IFVuaWZvcm1CbG9jayAmdW5p
Zm9ybUJsb2NrID0gbURhdGEubVVuaWZvcm1CbG9ja3NbdW5pZm9ybUJsb2NrSW5kZXhdOworICAg
IGNvbnN0IFVuaWZvcm1CbG9jayAmdW5pZm9ybUJsb2NrID0gbVN0YXRlLm1Vbmlmb3JtQmxvY2tz
W3VuaWZvcm1CbG9ja0luZGV4XTsKIAogICAgIGlmIChidWZTaXplID4gMCkKICAgICB7CkBAIC0x
NDA5LDUzICsxNjE5LDE2IEBAIHZvaWQgUHJvZ3JhbTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFt
ZSgKICAgICB9CiB9CiAKLXZvaWQgUHJvZ3JhbTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0x1
aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpIGNvbnN0
Ci17Ci0gICAgQVNTRVJUKHVuaWZvcm1CbG9ja0luZGV4IDwKLSAgICAgICAgICAgbURhdGEubVVu
aWZvcm1CbG9ja3Muc2l6ZSgpKTsgIC8vIGluZGV4IG11c3QgYmUgc21hbGxlciB0aGFuIGdldEFj
dGl2ZVVuaWZvcm1CbG9ja0NvdW50KCkKLQotICAgIGNvbnN0IFVuaWZvcm1CbG9jayAmdW5pZm9y
bUJsb2NrID0gbURhdGEubVVuaWZvcm1CbG9ja3NbdW5pZm9ybUJsb2NrSW5kZXhdOwotCi0gICAg
c3dpdGNoIChwbmFtZSkKLSAgICB7Ci0gICAgICBjYXNlIEdMX1VOSUZPUk1fQkxPQ0tfREFUQV9T
SVpFOgotICAgICAgICAqcGFyYW1zID0gc3RhdGljX2Nhc3Q8R0xpbnQ+KHVuaWZvcm1CbG9jay5k
YXRhU2l6ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9VTklGT1JNX0JMT0NLX05B
TUVfTEVOR1RIOgotICAgICAgICAgICpwYXJhbXMgPQotICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxHTGludD4odW5pZm9ybUJsb2NrLm5hbWUuc2l6ZSgpICsgMSArICh1bmlmb3JtQmxvY2suaXNB
cnJheSA/IDMgOiAwKSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9VTklGT1JNX0JM
T0NLX0FDVElWRV9VTklGT1JNUzoKLSAgICAgICAgKnBhcmFtcyA9IHN0YXRpY19jYXN0PEdMaW50
Pih1bmlmb3JtQmxvY2subWVtYmVyVW5pZm9ybUluZGV4ZXMuc2l6ZSgpKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEdMX1VOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1fSU5ESUNFUzoK
LSAgICAgICAgewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgYmxvY2tNZW1iZXJJbmRl
eCA9IDA7IGJsb2NrTWVtYmVySW5kZXggPCB1bmlmb3JtQmxvY2subWVtYmVyVW5pZm9ybUluZGV4
ZXMuc2l6ZSgpOyBibG9ja01lbWJlckluZGV4KyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgcGFyYW1zW2Jsb2NrTWVtYmVySW5kZXhdID0gc3RhdGljX2Nhc3Q8R0xpbnQ+KHVuaWZv
cm1CbG9jay5tZW1iZXJVbmlmb3JtSW5kZXhlc1tibG9ja01lbWJlckluZGV4XSk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1VOSUZPUk1f
QkxPQ0tfUkVGRVJFTkNFRF9CWV9WRVJURVhfU0hBREVSOgotICAgICAgICAgICpwYXJhbXMgPSBz
dGF0aWNfY2FzdDxHTGludD4odW5pZm9ybUJsb2NrLnZlcnRleFN0YXRpY1VzZSk7Ci0gICAgICAg
IGJyZWFrOwotICAgICAgY2FzZSBHTF9VTklGT1JNX0JMT0NLX1JFRkVSRU5DRURfQllfRlJBR01F
TlRfU0hBREVSOgotICAgICAgICAgICpwYXJhbXMgPSBzdGF0aWNfY2FzdDxHTGludD4odW5pZm9y
bUJsb2NrLmZyYWdtZW50U3RhdGljVXNlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0
OiBVTlJFQUNIQUJMRSgpOwotICAgIH0KLX0KLQogR0xpbnQgUHJvZ3JhbTo6Z2V0QWN0aXZlVW5p
Zm9ybUJsb2NrTWF4TGVuZ3RoKCkgY29uc3QKIHsKICAgICBpbnQgbWF4TGVuZ3RoID0gMDsKIAog
ICAgIGlmIChtTGlua2VkKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgaW50IG51bVVuaWZvcm1C
bG9ja3MgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG1EYXRhLm1Vbmlmb3JtQmxvY2tzLnNp
emUoKSk7CisgICAgICAgIHVuc2lnbmVkIGludCBudW1Vbmlmb3JtQmxvY2tzID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQgaW50PihtU3RhdGUubVVuaWZvcm1CbG9ja3Muc2l6ZSgpKTsKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbnQgdW5pZm9ybUJsb2NrSW5kZXggPSAwOyB1bmlmb3JtQmxvY2tJbmRl
eCA8IG51bVVuaWZvcm1CbG9ja3M7IHVuaWZvcm1CbG9ja0luZGV4KyspCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnN0IFVuaWZvcm1CbG9jayAmdW5pZm9ybUJsb2NrID0gbURhdGEubVVuaWZv
cm1CbG9ja3NbdW5pZm9ybUJsb2NrSW5kZXhdOworICAgICAgICAgICAgY29uc3QgVW5pZm9ybUJs
b2NrICZ1bmlmb3JtQmxvY2sgPSBtU3RhdGUubVVuaWZvcm1CbG9ja3NbdW5pZm9ybUJsb2NrSW5k
ZXhdOwogICAgICAgICAgICAgaWYgKCF1bmlmb3JtQmxvY2submFtZS5lbXB0eSgpKQogICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgIGNvbnN0IGludCBsZW5ndGggPSBzdGF0aWNfY2FzdDxp
bnQ+KHVuaWZvcm1CbG9jay5uYW1lLmxlbmd0aCgpKSArIDE7CkBAIC0xNDc2LDEwICsxNjQ5LDEw
IEBAIEdMdWludCBQcm9ncmFtOjpnZXRVbmlmb3JtQmxvY2tJbmRleChjb24KICAgICBzaXplX3Qg
c3Vic2NyaXB0ICAgICA9IEdMX0lOVkFMSURfSU5ERVg7CiAgICAgc3RkOjpzdHJpbmcgYmFzZU5h
bWUgPSBnbDo6UGFyc2VVbmlmb3JtTmFtZShuYW1lLCAmc3Vic2NyaXB0KTsKIAotICAgIHVuc2ln
bmVkIGludCBudW1Vbmlmb3JtQmxvY2tzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihtRGF0
YS5tVW5pZm9ybUJsb2Nrcy5zaXplKCkpOworICAgIHVuc2lnbmVkIGludCBudW1Vbmlmb3JtQmxv
Y2tzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihtU3RhdGUubVVuaWZvcm1CbG9ja3Muc2l6
ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGludCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRleCA8
IG51bVVuaWZvcm1CbG9ja3M7IGJsb2NrSW5kZXgrKykKICAgICB7Ci0gICAgICAgIGNvbnN0IGds
OjpVbmlmb3JtQmxvY2sgJnVuaWZvcm1CbG9jayA9IG1EYXRhLm1Vbmlmb3JtQmxvY2tzW2Jsb2Nr
SW5kZXhdOworICAgICAgICBjb25zdCBnbDo6VW5pZm9ybUJsb2NrICZ1bmlmb3JtQmxvY2sgPSBt
U3RhdGUubVVuaWZvcm1CbG9ja3NbYmxvY2tJbmRleF07CiAgICAgICAgIGlmICh1bmlmb3JtQmxv
Y2submFtZSA9PSBiYXNlTmFtZSkKICAgICAgICAgewogICAgICAgICAgICAgY29uc3QgYm9vbCBh
cnJheUVsZW1lbnRaZXJvID0KQEAgLTE0OTcsNDcgKzE2NzAsNDcgQEAgR0x1aW50IFByb2dyYW06
OmdldFVuaWZvcm1CbG9ja0luZGV4KGNvbgogCiBjb25zdCBVbmlmb3JtQmxvY2sgJlByb2dyYW06
OmdldFVuaWZvcm1CbG9ja0J5SW5kZXgoR0x1aW50IGluZGV4KSBjb25zdAogewotICAgIEFTU0VS
VChpbmRleCA8IHN0YXRpY19jYXN0PEdMdWludD4obURhdGEubVVuaWZvcm1CbG9ja3Muc2l6ZSgp
KSk7Ci0gICAgcmV0dXJuIG1EYXRhLm1Vbmlmb3JtQmxvY2tzW2luZGV4XTsKKyAgICBBU1NFUlQo
aW5kZXggPCBzdGF0aWNfY2FzdDxHTHVpbnQ+KG1TdGF0ZS5tVW5pZm9ybUJsb2Nrcy5zaXplKCkp
KTsKKyAgICByZXR1cm4gbVN0YXRlLm1Vbmlmb3JtQmxvY2tzW2luZGV4XTsKIH0KIAogdm9pZCBQ
cm9ncmFtOjpiaW5kVW5pZm9ybUJsb2NrKEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0x1aW50
IHVuaWZvcm1CbG9ja0JpbmRpbmcpCiB7Ci0gICAgbURhdGEubVVuaWZvcm1CbG9ja0JpbmRpbmdz
W3VuaWZvcm1CbG9ja0luZGV4XSA9IHVuaWZvcm1CbG9ja0JpbmRpbmc7CisgICAgbVN0YXRlLm1V
bmlmb3JtQmxvY2tCaW5kaW5nc1t1bmlmb3JtQmxvY2tJbmRleF0gPSB1bmlmb3JtQmxvY2tCaW5k
aW5nOwogICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtQmxvY2tCaW5kaW5nKHVuaWZvcm1CbG9ja0lu
ZGV4LCB1bmlmb3JtQmxvY2tCaW5kaW5nKTsKIH0KIAogR0x1aW50IFByb2dyYW06OmdldFVuaWZv
cm1CbG9ja0JpbmRpbmcoR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KSBjb25zdAogewotICAgIHJl
dHVybiBtRGF0YS5nZXRVbmlmb3JtQmxvY2tCaW5kaW5nKHVuaWZvcm1CbG9ja0luZGV4KTsKKyAg
ICByZXR1cm4gbVN0YXRlLmdldFVuaWZvcm1CbG9ja0JpbmRpbmcodW5pZm9ybUJsb2NrSW5kZXgp
OwogfQogCiB2b2lkIFByb2dyYW06OnJlc2V0VW5pZm9ybUJsb2NrQmluZGluZ3MoKQogewogICAg
IGZvciAodW5zaWduZWQgaW50IGJsb2NrSWQgPSAwOyBibG9ja0lkIDwgSU1QTEVNRU5UQVRJT05f
TUFYX0NPTUJJTkVEX1NIQURFUl9VTklGT1JNX0JVRkZFUlM7IGJsb2NrSWQrKykKICAgICB7Ci0g
ICAgICAgIG1EYXRhLm1Vbmlmb3JtQmxvY2tCaW5kaW5nc1tibG9ja0lkXSA9IDA7CisgICAgICAg
IG1TdGF0ZS5tVW5pZm9ybUJsb2NrQmluZGluZ3NbYmxvY2tJZF0gPSAwOwogICAgIH0KLSAgICBt
RGF0YS5tQWN0aXZlVW5pZm9ybUJsb2NrQmluZGluZ3MucmVzZXQoKTsKKyAgICBtU3RhdGUubUFj
dGl2ZVVuaWZvcm1CbG9ja0JpbmRpbmdzLnJlc2V0KCk7CiB9CiAKIHZvaWQgUHJvZ3JhbTo6c2V0
VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhHTHNpemVpIGNvdW50LCBjb25zdCBHTGNoYXIgKmNv
bnN0ICp2YXJ5aW5ncywgR0xlbnVtIGJ1ZmZlck1vZGUpCiB7Ci0gICAgbURhdGEubVRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZ05hbWVzLnJlc2l6ZShjb3VudCk7CisgICAgbVN0YXRlLm1UcmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmdOYW1lcy5yZXNpemUoY291bnQpOwogICAgIGZvciAoR0xzaXplaSBp
ID0gMDsgaSA8IGNvdW50OyBpKyspCiAgICAgewotICAgICAgICBtRGF0YS5tVHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5nTmFtZXNbaV0gPSB2YXJ5aW5nc1tpXTsKKyAgICAgICAgbVN0YXRlLm1UcmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdOYW1lc1tpXSA9IHZhcnlpbmdzW2ldOwogICAgIH0KIAotICAg
IG1EYXRhLm1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUgPSBidWZmZXJNb2RlOworICAgIG1T
dGF0ZS5tVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlID0gYnVmZmVyTW9kZTsKIH0KIAogdm9p
ZCBQcm9ncmFtOjpnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcoR0x1aW50IGluZGV4LCBHTHNp
emVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xzaXplaSAqc2l6ZSwgR0xlbnVtICp0eXBl
LCBHTGNoYXIgKm5hbWUpIGNvbnN0CiB7CiAgICAgaWYgKG1MaW5rZWQpCiAgICAgewotICAgICAg
ICBBU1NFUlQoaW5kZXggPCBtRGF0YS5tVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nVmFycy5zaXpl
KCkpOwotICAgICAgICBjb25zdCBzaDo6VmFyeWluZyAmdmFyeWluZyA9IG1EYXRhLm1UcmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmdWYXJzW2luZGV4XTsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgbVN0
YXRlLm1UcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdWYXJzLnNpemUoKSk7CisgICAgICAgIGNvbnN0
IHNoOjpWYXJ5aW5nICZ2YXJ5aW5nID0gbVN0YXRlLm1UcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdW
YXJzW2luZGV4XTsKICAgICAgICAgR0xzaXplaSBsYXN0TmFtZUlkeCA9IHN0ZDo6bWluKGJ1ZlNp
emUgLSAxLCBzdGF0aWNfY2FzdDxHTHNpemVpPih2YXJ5aW5nLm5hbWUubGVuZ3RoKCkpKTsKICAg
ICAgICAgaWYgKGxlbmd0aCkKICAgICAgICAgewpAQCAtMTU2Myw3ICsxNzM2LDcgQEAgR0xzaXpl
aSBQcm9ncmFtOjpnZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcgogewogICAgIGlmIChtTGlua2VkKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1EYXRhLm1UcmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmdWYXJzLnNpemUoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxHTHNpemVpPihtU3RhdGUubVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ1ZhcnMuc2l6ZSgpKTsK
ICAgICB9CiAgICAgZWxzZQogICAgIHsKQEAgLTE1NzYsNyArMTc0OSw3IEBAIEdMc2l6ZWkgUHJv
Z3JhbTo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXIKICAgICBpZiAobUxpbmtlZCkKICAgICB7CiAg
ICAgICAgIEdMc2l6ZWkgbWF4U2l6ZSA9IDA7Ci0gICAgICAgIGZvciAoY29uc3Qgc2g6OlZhcnlp
bmcgJnZhcnlpbmcgOiBtRGF0YS5tVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nVmFycykKKyAgICAg
ICAgZm9yIChjb25zdCBzaDo6VmFyeWluZyAmdmFyeWluZyA6IG1TdGF0ZS5tVHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5nVmFycykKICAgICAgICAgewogICAgICAgICAgICAgbWF4U2l6ZSA9IHN0ZDo6
bWF4KG1heFNpemUsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHZhcnlpbmcubmFtZS5sZW5ndGgoKSAr
IDEpKTsKICAgICAgICAgfQpAQCAtMTU5MSwxNyArMTc2NCwyMCBAQCBHTHNpemVpIFByb2dyYW06
OmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyCiAKIEdMZW51bSBQcm9ncmFtOjpnZXRUcmFuc2Zvcm1G
ZWVkYmFja0J1ZmZlck1vZGUoKSBjb25zdAogewotICAgIHJldHVybiBtRGF0YS5tVHJhbnNmb3Jt
RmVlZGJhY2tCdWZmZXJNb2RlOworICAgIHJldHVybiBtU3RhdGUubVRyYW5zZm9ybUZlZWRiYWNr
QnVmZmVyTW9kZTsKIH0KIAotLy8gc3RhdGljCiBib29sIFByb2dyYW06OmxpbmtWYXJ5aW5ncyhJ
bmZvTG9nICZpbmZvTG9nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hhZGVy
ICp2ZXJ0ZXhTaGFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTaGFkZXIg
KmZyYWdtZW50U2hhZGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hhZGVy
ICpmcmFnbWVudFNoYWRlcikgY29uc3QKIHsKKyAgICBBU1NFUlQodmVydGV4U2hhZGVyLT5nZXRT
aGFkZXJWZXJzaW9uKCkgPT0gZnJhZ21lbnRTaGFkZXItPmdldFNoYWRlclZlcnNpb24oKSk7CisK
ICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6VmFyeWluZz4gJnZlcnRleFZhcnlpbmdzICAgPSB2
ZXJ0ZXhTaGFkZXItPmdldFZhcnlpbmdzKCk7CiAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlZh
cnlpbmc+ICZmcmFnbWVudFZhcnlpbmdzID0gZnJhZ21lbnRTaGFkZXItPmdldFZhcnlpbmdzKCk7
CiAKKyAgICBzdGQ6Om1hcDxHTHVpbnQsIHN0ZDo6c3RyaW5nPiBzdGF0aWNGcmFnbWVudElucHV0
TG9jYXRpb25zOworCiAgICAgZm9yIChjb25zdCBzaDo6VmFyeWluZyAmb3V0cHV0IDogZnJhZ21l
bnRWYXJ5aW5ncykKICAgICB7CiAgICAgICAgIGJvb2wgbWF0Y2hlZCA9IGZhbHNlOwpAQCAtMTYx
Nyw3ICsxNzkzLDggQEAgYm9vbCBQcm9ncmFtOjpsaW5rVmFyeWluZ3MoSW5mb0xvZyAmaW5mbwog
ICAgICAgICAgICAgaWYgKG91dHB1dC5uYW1lID09IGlucHV0Lm5hbWUpCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFpbnB1dC5pc0J1aWx0SW4oKSk7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFsaW5rVmFsaWRhdGVWYXJ5aW5ncyhpbmZvTG9nLCBvdXRwdXQubmFtZSwgaW5w
dXQsIG91dHB1dCkpCisgICAgICAgICAgICAgICAgaWYgKCFsaW5rVmFsaWRhdGVWYXJ5aW5ncyhp
bmZvTG9nLCBvdXRwdXQubmFtZSwgaW5wdXQsIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZlcnRleFNoYWRlci0+Z2V0U2hhZGVyVmVyc2lvbigpKSkK
ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgICAgICB9CkBAIC0xNjMzLDYgKzE4MTAsMjkgQEAgYm9vbCBQcm9ncmFtOjpsaW5r
VmFyeWluZ3MoSW5mb0xvZyAmaW5mbwogICAgICAgICAgICAgaW5mb0xvZyA8PCAiRnJhZ21lbnQg
dmFyeWluZyAiIDw8IG91dHB1dC5uYW1lIDw8ICIgZG9lcyBub3QgbWF0Y2ggYW55IHZlcnRleCB2
YXJ5aW5nIjsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQorCisgICAgICAg
IC8vIENoZWNrIGZvciBhbGlhc2VkIHBhdGggcmVuZGVyaW5nIGlucHV0IGJpbmRpbmdzIChpZiBh
bnkpLgorICAgICAgICAvLyBJZiBtb3JlIHRoYW4gb25lIGJpbmRpbmcgcmVmZXIgc3RhdGljYWxs
eSB0byB0aGUgc2FtZQorICAgICAgICAvLyBsb2NhdGlvbiB0aGUgbGluayBtdXN0IGZhaWwuCisK
KyAgICAgICAgaWYgKCFvdXRwdXQuc3RhdGljVXNlKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgY29uc3QgYXV0byBpbnB1dEJpbmRpbmcgPSBtRnJhZ21lbnRJbnB1dEJpbmRpbmdz
LmdldEJpbmRpbmcob3V0cHV0Lm5hbWUpOworICAgICAgICBpZiAoaW5wdXRCaW5kaW5nID09IC0x
KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgY29uc3QgYXV0byBpdCA9IHN0YXRp
Y0ZyYWdtZW50SW5wdXRMb2NhdGlvbnMuZmluZChpbnB1dEJpbmRpbmcpOworICAgICAgICBpZiAo
aXQgPT0gc3RkOjplbmQoc3RhdGljRnJhZ21lbnRJbnB1dExvY2F0aW9ucykpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpY0ZyYWdtZW50SW5wdXRMb2NhdGlvbnMuaW5zZXJ0KHN0ZDo6bWFr
ZV9wYWlyKGlucHV0QmluZGluZywgb3V0cHV0Lm5hbWUpKTsKKyAgICAgICAgfQorICAgICAgICBl
bHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGluZm9Mb2cgPDwgIkJpbmRpbmcgZm9yIGZyYWdt
ZW50IGlucHV0ICIgPDwgb3V0cHV0Lm5hbWUgPDwgIiBjb25mbGljdHMgd2l0aCAiCisgICAgICAg
ICAgICAgICAgICAgIDw8IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KICAgICB9CiAKICAgICAvLyBUT0RPKGptYWRpbGwpOiB2ZXJpZnkgbm8gdW5tYXRj
aGVkIHZlcnRleCB2YXJ5aW5ncz8KQEAgLTE2NDAsMTMgKzE4NDAsMTMgQEAgYm9vbCBQcm9ncmFt
OjpsaW5rVmFyeWluZ3MoSW5mb0xvZyAmaW5mbwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFByb2dyYW06OmxpbmtVbmlmb3JtcyhnbDo6SW5mb0xvZyAmaW5mb0xvZywgY29uc3QgZ2w6OkNh
cHMgJmNhcHMpCitib29sIFByb2dyYW06OnZhbGlkYXRlVmVydGV4QW5kRnJhZ21lbnRVbmlmb3Jt
cyhJbmZvTG9nICZpbmZvTG9nKSBjb25zdAogewotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpV
bmlmb3JtPiAmdmVydGV4VW5pZm9ybXMgICA9IG1EYXRhLm1BdHRhY2hlZFZlcnRleFNoYWRlci0+
Z2V0VW5pZm9ybXMoKTsKLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6VW5pZm9ybT4gJmZyYWdt
ZW50VW5pZm9ybXMgPSBtRGF0YS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlci0+Z2V0VW5pZm9ybXMo
KTsKLQogICAgIC8vIENoZWNrIHRoYXQgdW5pZm9ybXMgZGVmaW5lZCBpbiB0aGUgdmVydGV4IGFu
ZCBmcmFnbWVudCBzaGFkZXJzIGFyZSBpZGVudGljYWwKICAgICBzdGQ6Om1hcDxzdGQ6OnN0cmlu
ZywgTGlua2VkVW5pZm9ybT4gbGlua2VkVW5pZm9ybXM7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8
c2g6OlVuaWZvcm0+ICZ2ZXJ0ZXhVbmlmb3JtcyA9IG1TdGF0ZS5tQXR0YWNoZWRWZXJ0ZXhTaGFk
ZXItPmdldFVuaWZvcm1zKCk7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlVuaWZvcm0+ICZm
cmFnbWVudFVuaWZvcm1zID0KKyAgICAgICAgbVN0YXRlLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVy
LT5nZXRVbmlmb3JtcygpOwogCiAgICAgZm9yIChjb25zdCBzaDo6VW5pZm9ybSAmdmVydGV4VW5p
Zm9ybSA6IHZlcnRleFVuaWZvcm1zKQogICAgIHsKQEAgLTE2NjYsNiArMTg2NiwyMSBAQCBib29s
IFByb2dyYW06OmxpbmtVbmlmb3JtcyhnbDo6SW5mb0xvZyAmCiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgUHJvZ3JhbTo6bGlua1Vu
aWZvcm1zKGdsOjpJbmZvTG9nICZpbmZvTG9nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OkNhcHMgJmNhcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBC
aW5kaW5ncyAmdW5pZm9ybUJpbmRpbmdzKQoreworICAgIGlmIChtU3RhdGUubUF0dGFjaGVkVmVy
dGV4U2hhZGVyICYmIG1TdGF0ZS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlcikKKyAgICB7CisgICAg
ICAgIEFTU0VSVChtU3RhdGUubUF0dGFjaGVkQ29tcHV0ZVNoYWRlciA9PSBudWxscHRyKTsKKyAg
ICAgICAgaWYgKCF2YWxpZGF0ZVZlcnRleEFuZEZyYWdtZW50VW5pZm9ybXMoaW5mb0xvZykpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KIAog
ICAgIC8vIEZsYXR0ZW4gdGhlIHVuaWZvcm1zIGxpc3QgKG5lc3RlZCBmaWVsZHMpIGludG8gYSBz
aW1wbGUgbGlzdCAobm8gbmVzdGluZykuCiAgICAgLy8gQWxzbyBjaGVjayB0aGUgbWF4aW11bSB1
bmlmb3JtIHZlY3RvciBhbmQgc2FtcGxlciBjb3VudHMuCkBAIC0xNjc0LDMwICsxODg5LDExMSBA
QCBib29sIFByb2dyYW06OmxpbmtVbmlmb3JtcyhnbDo6SW5mb0xvZyAmCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBpbmRleFVuaWZvcm1zKCk7CisgICAgaWYgKCFpbmRleFVu
aWZvcm1zKGluZm9Mb2csIGNhcHMsIHVuaWZvcm1CaW5kaW5ncykpCisgICAgeworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUHJvZ3Jh
bTo6aW5kZXhVbmlmb3JtcygpCitib29sIFByb2dyYW06OmluZGV4VW5pZm9ybXMoZ2w6OkluZm9M
b2cgJmluZm9Mb2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkNhcHMg
JmNhcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQmluZGluZ3MgJnVuaWZv
cm1CaW5kaW5ncykKIHsKLSAgICBmb3IgKHNpemVfdCB1bmlmb3JtSW5kZXggPSAwOyB1bmlmb3Jt
SW5kZXggPCBtRGF0YS5tVW5pZm9ybXMuc2l6ZSgpOyB1bmlmb3JtSW5kZXgrKykKKyAgICAvLyBV
bmlmb3JtcyBhd2FpdGluZyBhIGxvY2F0aW9uCisgICAgc3RkOjp2ZWN0b3I8VmFyaWFibGVMb2Nh
dGlvbj4gdW5ib3VuZFVuaWZvcm1zOworICAgIHN0ZDo6bWFwPEdMdWludCwgVmFyaWFibGVMb2Nh
dGlvbj4gYm91bmRVbmlmb3JtczsKKyAgICBpbnQgbWF4VW5pZm9ybUxvY2F0aW9uID0gLTE7CisK
KyAgICAvLyBHYXRoZXIgYm91bmQgYW5kIHVuYm91bmQgdW5pZm9ybXMKKyAgICBmb3IgKHNpemVf
dCB1bmlmb3JtSW5kZXggPSAwOyB1bmlmb3JtSW5kZXggPCBtU3RhdGUubVVuaWZvcm1zLnNpemUo
KTsgdW5pZm9ybUluZGV4KyspCiAgICAgewotICAgICAgICBjb25zdCBnbDo6TGlua2VkVW5pZm9y
bSAmdW5pZm9ybSA9IG1EYXRhLm1Vbmlmb3Jtc1t1bmlmb3JtSW5kZXhdOworICAgICAgICBjb25z
dCBnbDo6TGlua2VkVW5pZm9ybSAmdW5pZm9ybSA9IG1TdGF0ZS5tVW5pZm9ybXNbdW5pZm9ybUlu
ZGV4XTsKKworICAgICAgICBpZiAodW5pZm9ybS5pc0J1aWx0SW4oKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpbnQgYmluZGluZ0xvY2F0
aW9uID0gdW5pZm9ybUJpbmRpbmdzLmdldEJpbmRpbmcodW5pZm9ybS5uYW1lKTsKKworICAgICAg
ICAvLyBWZXJpZnkgdGhhdCB0aGlzIGxvY2F0aW9uIGlzbid0IGJvdW5kIHR3aWNlCisgICAgICAg
IGlmIChiaW5kaW5nTG9jYXRpb24gIT0gLTEgJiYgYm91bmRVbmlmb3Jtcy5maW5kKGJpbmRpbmdM
b2NhdGlvbikgIT0gYm91bmRVbmlmb3Jtcy5lbmQoKSkKKyAgICAgICAgeworICAgICAgICAgICAg
aW5mb0xvZyA8PCAiTXVsdGlwbGUgdW5pZm9ybXMgYm91bmQgdG8gbG9jYXRpb24gIiA8PCBiaW5k
aW5nTG9jYXRpb24gPDwgIi4iOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgYXJyYXlJbmRleCA9IDA7IGFycmF5SW5kZXgg
PCB1bmlmb3JtLmVsZW1lbnRDb3VudCgpOyBhcnJheUluZGV4KyspCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGlmICghdW5pZm9ybS5pc0J1aWx0SW4oKSkKKyAgICAgICAgICAgIFZhcmlhYmxlTG9j
YXRpb24gbG9jYXRpb24odW5pZm9ybS5uYW1lLCBhcnJheUluZGV4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHVuaWZvcm1J
bmRleCkpOworCisgICAgICAgICAgICBpZiAoYXJyYXlJbmRleCA9PSAwICYmIGJpbmRpbmdMb2Nh
dGlvbiAhPSAtMSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBib3VuZFVuaWZvcm1z
W2JpbmRpbmdMb2NhdGlvbl0gPSBsb2NhdGlvbjsKKyAgICAgICAgICAgICAgICBtYXhVbmlmb3Jt
TG9jYXRpb24gICAgICAgICAgICAgPSBzdGQ6Om1heChtYXhVbmlmb3JtTG9jYXRpb24sIGJpbmRp
bmdMb2NhdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgLy8gQXNzaWduIGluLW9yZGVyIHVuaWZvcm0gbG9jYXRpb25z
Ci0gICAgICAgICAgICAgICAgbURhdGEubVVuaWZvcm1Mb2NhdGlvbnMucHVzaF9iYWNrKGdsOjpW
YXJpYWJsZUxvY2F0aW9uKAotICAgICAgICAgICAgICAgICAgICB1bmlmb3JtLm5hbWUsIGFycmF5
SW5kZXgsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4odW5pZm9ybUluZGV4KSkpOworICAgICAg
ICAgICAgICAgIHVuYm91bmRVbmlmb3Jtcy5wdXNoX2JhY2sobG9jYXRpb24pOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQorCisgICAgLy8gR2F0aGVyIHRoZSByZXNlcnZlZCBiaW5k
aW5ncywgb25lcyB0aGF0IGFyZSBib3VuZCBidXQgbm90IHJlZmVyZW5jZWQuICBPdGhlciB1bmlm
b3JtcyBzaG91bGQKKyAgICAvLyBub3QgYmUgYXNzaWduZWQgdG8gdGhvc2UgbG9jYXRpb25zLgor
ICAgIHN0ZDo6c2V0PEdMdWludD4gcmVzZXJ2ZWRMb2NhdGlvbnM7CisgICAgZm9yIChjb25zdCBh
dXRvICZiaW5kaW5nIDogdW5pZm9ybUJpbmRpbmdzKQorICAgIHsKKyAgICAgICAgR0x1aW50IGxv
Y2F0aW9uID0gYmluZGluZy5zZWNvbmQ7CisgICAgICAgIGlmIChib3VuZFVuaWZvcm1zLmZpbmQo
bG9jYXRpb24pID09IGJvdW5kVW5pZm9ybXMuZW5kKCkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJlc2VydmVkTG9jYXRpb25zLmluc2VydChsb2NhdGlvbik7CisgICAgICAgICAgICBtYXhVbmlm
b3JtTG9jYXRpb24gPSBzdGQ6Om1heChtYXhVbmlmb3JtTG9jYXRpb24sIHN0YXRpY19jYXN0PGlu
dD4obG9jYXRpb24pKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIE1ha2UgZW5vdWdoIHNw
YWNlIGZvciBhbGwgdW5pZm9ybXMsIGJvdW5kIGFuZCB1bmJvdW5kCisgICAgbVN0YXRlLm1Vbmlm
b3JtTG9jYXRpb25zLnJlc2l6ZSgKKyAgICAgICAgc3RkOjptYXgodW5ib3VuZFVuaWZvcm1zLnNp
emUoKSArIGJvdW5kVW5pZm9ybXMuc2l6ZSgpICsgcmVzZXJ2ZWRMb2NhdGlvbnMuc2l6ZSgpLAor
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxzaXplX3Q+KG1heFVuaWZvcm1Mb2NhdGlvbiAr
IDEpKSk7CisKKyAgICAvLyBBc3NpZ24gYm91bmQgdW5pZm9ybXMKKyAgICBmb3IgKGNvbnN0IGF1
dG8gJmJvdW5kVW5pZm9ybSA6IGJvdW5kVW5pZm9ybXMpCisgICAgeworICAgICAgICBtU3RhdGUu
bVVuaWZvcm1Mb2NhdGlvbnNbYm91bmRVbmlmb3JtLmZpcnN0XSA9IGJvdW5kVW5pZm9ybS5zZWNv
bmQ7CisgICAgfQorCisgICAgLy8gQXNzaWduIHJlc2VydmVkIHVuaWZvcm1zCisgICAgZm9yIChj
b25zdCBhdXRvICZyZXNlcnZlZExvY2F0aW9uIDogcmVzZXJ2ZWRMb2NhdGlvbnMpCisgICAgewor
ICAgICAgICBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnNbcmVzZXJ2ZWRMb2NhdGlvbl0uaWdub3Jl
ZCA9IHRydWU7CisgICAgfQorCisgICAgLy8gQXNzaWduIHVuYm91bmQgdW5pZm9ybXMKKyAgICBz
aXplX3QgbmV4dFVuaWZvcm1Mb2NhdGlvbiA9IDA7CisgICAgZm9yIChjb25zdCBhdXRvICZ1bmJv
dW5kVW5pZm9ybSA6IHVuYm91bmRVbmlmb3JtcykKKyAgICB7CisgICAgICAgIHdoaWxlIChtU3Rh
dGUubVVuaWZvcm1Mb2NhdGlvbnNbbmV4dFVuaWZvcm1Mb2NhdGlvbl0udXNlZCB8fAorICAgICAg
ICAgICAgICAgbVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zW25leHRVbmlmb3JtTG9jYXRpb25dLmln
bm9yZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIG5leHRVbmlmb3JtTG9jYXRpb24rKzsKKyAg
ICAgICAgfQorCisgICAgICAgIEFTU0VSVChuZXh0VW5pZm9ybUxvY2F0aW9uIDwgbVN0YXRlLm1V
bmlmb3JtTG9jYXRpb25zLnNpemUoKSk7CisgICAgICAgIG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9u
c1tuZXh0VW5pZm9ybUxvY2F0aW9uXSA9IHVuYm91bmRVbmlmb3JtOworICAgICAgICBuZXh0VW5p
Zm9ybUxvY2F0aW9uKys7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUHJv
Z3JhbTo6bGlua1ZhbGlkYXRlSW50ZXJmYWNlQmxvY2tGaWVsZHMoSW5mb0xvZyAmaW5mb0xvZywg
Y29uc3Qgc3RkOjpzdHJpbmcgJnVuaWZvcm1OYW1lLCBjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2tG
aWVsZCAmdmVydGV4VW5pZm9ybSwgY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrRmllbGQgJmZyYWdt
ZW50VW5pZm9ybSkKK2Jvb2wgUHJvZ3JhbTo6bGlua1ZhbGlkYXRlSW50ZXJmYWNlQmxvY2tGaWVs
ZHMoSW5mb0xvZyAmaW5mb0xvZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnVuaWZvcm1OYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaDo6SW50ZXJmYWNlQmxv
Y2tGaWVsZCAmdmVydGV4VW5pZm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrRmllbGQgJmZyYWdtZW50VW5p
Zm9ybSkKIHsKICAgICAvLyBXZSBkb24ndCB2YWxpZGF0ZSBwcmVjaXNpb24gb24gVUJPIGZpZWxk
cy4gU2VlIHJlc29sdXRpb24gb2YgS2hyb25vcyBidWcgMTAyODcuCiAgICAgaWYgKCFsaW5rVmFs
aWRhdGVWYXJpYWJsZXNCYXNlKGluZm9Mb2csIHVuaWZvcm1OYW1lLCB2ZXJ0ZXhVbmlmb3JtLCBm
cmFnbWVudFVuaWZvcm0sIGZhbHNlKSkKQEAgLTE3MTUsMzEgKzIwMTEsMzEgQEAgYm9vbCBQcm9n
cmFtOjpsaW5rVmFsaWRhdGVJbnRlcmZhY2VCbG9jawogfQogCiAvLyBEZXRlcm1pbmVzIHRoZSBt
YXBwaW5nIGJldHdlZW4gR0wgYXR0cmlidXRlcyBhbmQgRGlyZWN0M0QgOSB2ZXJ0ZXggc3RyZWFt
IHVzYWdlIGluZGljZXMKLWJvb2wgUHJvZ3JhbTo6bGlua0F0dHJpYnV0ZXMoY29uc3QgZ2w6OkRh
dGEgJmRhdGEsCitib29sIFByb2dyYW06OmxpbmtBdHRyaWJ1dGVzKGNvbnN0IENvbnRleHRTdGF0
ZSAmZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5mb0xvZyAmaW5mb0xvZywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlQmluZGluZ3MgJmF0
dHJpYnV0ZUJpbmRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCaW5k
aW5ncyAmYXR0cmlidXRlQmluZGluZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFNoYWRlciAqdmVydGV4U2hhZGVyKQogewogICAgIHVuc2lnbmVkIGludCB1c2VkTG9jYXRp
b25zID0gMDsKLSAgICBtRGF0YS5tQXR0cmlidXRlcyAgICAgICAgICA9IHZlcnRleFNoYWRlci0+
Z2V0QWN0aXZlQXR0cmlidXRlcygpOwotICAgIEdMdWludCBtYXhBdHRyaWJzID0gZGF0YS5jYXBz
LT5tYXhWZXJ0ZXhBdHRyaWJ1dGVzOworICAgIG1TdGF0ZS5tQXR0cmlidXRlcyAgICAgICAgID0g
dmVydGV4U2hhZGVyLT5nZXRBY3RpdmVBdHRyaWJ1dGVzKCk7CisgICAgR0x1aW50IG1heEF0dHJp
YnMgICAgICAgICAgPSBkYXRhLmdldENhcHMoKS5tYXhWZXJ0ZXhBdHRyaWJ1dGVzOwogCiAgICAg
Ly8gVE9ETyhqbWFkaWxsKTogaGFuZGxlIGFsaWFzaW5nIHJvYnVzdGx5Ci0gICAgaWYgKG1EYXRh
Lm1BdHRyaWJ1dGVzLnNpemUoKSA+IG1heEF0dHJpYnMpCisgICAgaWYgKG1TdGF0ZS5tQXR0cmli
dXRlcy5zaXplKCkgPiBtYXhBdHRyaWJzKQogICAgIHsKICAgICAgICAgaW5mb0xvZyA8PCAiVG9v
IG1hbnkgdmVydGV4IGF0dHJpYnV0ZXMuIjsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIHN0ZDo6dmVjdG9yPHNoOjpBdHRyaWJ1dGUgKj4gdXNlZEF0dHJpYk1hcChkYXRhLmNh
cHMtPm1heFZlcnRleEF0dHJpYnV0ZXMsIG51bGxwdHIpOworICAgIHN0ZDo6dmVjdG9yPHNoOjpB
dHRyaWJ1dGUgKj4gdXNlZEF0dHJpYk1hcChtYXhBdHRyaWJzLCBudWxscHRyKTsKIAogICAgIC8v
IExpbmsgYXR0cmlidXRlcyB0aGF0IGhhdmUgYSBiaW5kaW5nIGxvY2F0aW9uCi0gICAgZm9yIChz
aDo6QXR0cmlidXRlICZhdHRyaWJ1dGUgOiBtRGF0YS5tQXR0cmlidXRlcykKKyAgICBmb3IgKHNo
OjpBdHRyaWJ1dGUgJmF0dHJpYnV0ZSA6IG1TdGF0ZS5tQXR0cmlidXRlcykKICAgICB7CiAgICAg
ICAgIC8vIFRPRE8oam1hZGlsbCk6IGRvIHN0YXRpY1VzZSBmaWx0ZXJpbmcgc3RlcCBoZXJlLCBv
ciBub3QgYXQgYWxsCiAgICAgICAgIEFTU0VSVChhdHRyaWJ1dGUuc3RhdGljVXNlKTsKIAotICAg
ICAgICBpbnQgYmluZGluZ0xvY2F0aW9uID0gYXR0cmlidXRlQmluZGluZ3MuZ2V0QXR0cmlidXRl
QmluZGluZyhhdHRyaWJ1dGUubmFtZSk7CisgICAgICAgIGludCBiaW5kaW5nTG9jYXRpb24gPSBh
dHRyaWJ1dGVCaW5kaW5ncy5nZXRCaW5kaW5nKGF0dHJpYnV0ZS5uYW1lKTsKICAgICAgICAgaWYg
KGF0dHJpYnV0ZS5sb2NhdGlvbiA9PSAtMSAmJiBiaW5kaW5nTG9jYXRpb24gIT0gLTEpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGF0dHJpYnV0ZS5sb2NhdGlvbiA9IGJpbmRpbmdMb2NhdGlvbjsK
QEAgLTE3ODYsNyArMjA4Miw3IEBAIGJvb2wgUHJvZ3JhbTo6bGlua0F0dHJpYnV0ZXMoY29uc3Qg
Z2w6OkQKICAgICB9CiAKICAgICAvLyBMaW5rIGF0dHJpYnV0ZXMgdGhhdCBkb24ndCBoYXZlIGEg
YmluZGluZyBsb2NhdGlvbgotICAgIGZvciAoc2g6OkF0dHJpYnV0ZSAmYXR0cmlidXRlIDogbURh
dGEubUF0dHJpYnV0ZXMpCisgICAgZm9yIChzaDo6QXR0cmlidXRlICZhdHRyaWJ1dGUgOiBtU3Rh
dGUubUF0dHJpYnV0ZXMpCiAgICAgewogICAgICAgICBBU1NFUlQoYXR0cmlidXRlLnN0YXRpY1Vz
ZSk7CiAKQEAgLTE4MDYsNyArMjEwMiw3IEBAIGJvb2wgUHJvZ3JhbTo6bGlua0F0dHJpYnV0ZXMo
Y29uc3QgZ2w6OkQKICAgICAgICAgfQogICAgIH0KIAotICAgIGZvciAoY29uc3Qgc2g6OkF0dHJp
YnV0ZSAmYXR0cmlidXRlIDogbURhdGEubUF0dHJpYnV0ZXMpCisgICAgZm9yIChjb25zdCBzaDo6
QXR0cmlidXRlICZhdHRyaWJ1dGUgOiBtU3RhdGUubUF0dHJpYnV0ZXMpCiAgICAgewogICAgICAg
ICBBU1NFUlQoYXR0cmlidXRlLnN0YXRpY1VzZSk7CiAgICAgICAgIEFTU0VSVChhdHRyaWJ1dGUu
bG9jYXRpb24gIT0gLTEpOwpAQCAtMTgxNCw0MyArMjExMCw0NyBAQCBib29sIFByb2dyYW06Omxp
bmtBdHRyaWJ1dGVzKGNvbnN0IGdsOjpECiAKICAgICAgICAgZm9yIChpbnQgciA9IDA7IHIgPCBy
ZWdzOyByKyspCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1EYXRhLm1BY3RpdmVBdHRyaWJMb2Nh
dGlvbnNNYXNrLnNldChhdHRyaWJ1dGUubG9jYXRpb24gKyByKTsKKyAgICAgICAgICAgIG1TdGF0
ZS5tQWN0aXZlQXR0cmliTG9jYXRpb25zTWFzay5zZXQoYXR0cmlidXRlLmxvY2F0aW9uICsgcik7
CiAgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBQcm9ncmFt
OjpsaW5rVW5pZm9ybUJsb2NrcyhJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBDYXBzICZjYXBzKQor
Ym9vbCBQcm9ncmFtOjp2YWxpZGF0ZVVuaWZvcm1CbG9ja3NDb3VudChHTHVpbnQgbWF4VW5pZm9y
bUJsb2NrcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjp2ZWN0b3I8c2g6OkludGVyZmFjZUJsb2NrPiAmaW50ZWZhY2VCbG9ja3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZlcnJv
ck1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZm9M
b2cgJmluZm9Mb2cpIGNvbnN0CiB7Ci0gICAgY29uc3QgU2hhZGVyICZ2ZXJ0ZXhTaGFkZXIgICA9
ICptRGF0YS5tQXR0YWNoZWRWZXJ0ZXhTaGFkZXI7Ci0gICAgY29uc3QgU2hhZGVyICZmcmFnbWVu
dFNoYWRlciA9ICptRGF0YS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlcjsKLQotICAgIGNvbnN0IHN0
ZDo6dmVjdG9yPHNoOjpJbnRlcmZhY2VCbG9jaz4gJnZlcnRleEludGVyZmFjZUJsb2NrcyA9IHZl
cnRleFNoYWRlci5nZXRJbnRlcmZhY2VCbG9ja3MoKTsKLSAgICBjb25zdCBzdGQ6OnZlY3Rvcjxz
aDo6SW50ZXJmYWNlQmxvY2s+ICZmcmFnbWVudEludGVyZmFjZUJsb2NrcyA9IGZyYWdtZW50U2hh
ZGVyLmdldEludGVyZmFjZUJsb2NrcygpOworICAgIEdMdWludCBibG9ja0NvdW50ID0gMDsKKyAg
ICBmb3IgKGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9jayAmYmxvY2sgOiBpbnRlZmFjZUJsb2NrcykK
KyAgICB7CisgICAgICAgIGlmIChibG9jay5zdGF0aWNVc2UgfHwgYmxvY2subGF5b3V0ICE9IHNo
OjpCTE9DS0xBWU9VVF9QQUNLRUQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgrK2Jsb2Nr
Q291bnQgPiBtYXhVbmlmb3JtQmxvY2tzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGluZm9Mb2cgPDwgZXJyb3JNZXNzYWdlIDw8IG1heFVuaWZvcm1CbG9ja3MgPDwgIikiOworICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KIAorYm9vbCBQcm9ncmFtOjp2YWxpZGF0ZVZlcnRleEFu
ZEZyYWdtZW50SW50ZXJmYWNlQmxvY2tzKAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpJbnRl
cmZhY2VCbG9jaz4gJnZlcnRleEludGVyZmFjZUJsb2NrcywKKyAgICBjb25zdCBzdGQ6OnZlY3Rv
cjxzaDo6SW50ZXJmYWNlQmxvY2s+ICZmcmFnbWVudEludGVyZmFjZUJsb2NrcywKKyAgICBJbmZv
TG9nICZpbmZvTG9nKSBjb25zdAorewogICAgIC8vIENoZWNrIHRoYXQgaW50ZXJmYWNlIGJsb2Nr
cyBkZWZpbmVkIGluIHRoZSB2ZXJ0ZXggYW5kIGZyYWdtZW50IHNoYWRlcnMgYXJlIGlkZW50aWNh
bAotICAgIHR5cGVkZWYgc3RkOjptYXA8c3RkOjpzdHJpbmcsIGNvbnN0IHNoOjpJbnRlcmZhY2VC
bG9jayo+IFVuaWZvcm1CbG9ja01hcDsKKyAgICB0eXBlZGVmIHN0ZDo6bWFwPHN0ZDo6c3RyaW5n
LCBjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2sgKj4gVW5pZm9ybUJsb2NrTWFwOwogICAgIFVuaWZv
cm1CbG9ja01hcCBsaW5rZWRVbmlmb3JtQmxvY2tzOwogCi0gICAgR0x1aW50IHZlcnRleEJsb2Nr
Q291bnQgPSAwOwogICAgIGZvciAoY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrICZ2ZXJ0ZXhJbnRl
cmZhY2VCbG9jayA6IHZlcnRleEludGVyZmFjZUJsb2NrcykKICAgICB7CiAgICAgICAgIGxpbmtl
ZFVuaWZvcm1CbG9ja3NbdmVydGV4SW50ZXJmYWNlQmxvY2submFtZV0gPSAmdmVydGV4SW50ZXJm
YWNlQmxvY2s7Ci0KLSAgICAgICAgLy8gTm90ZTogc2hhcmVkIGFuZCBzdGQxNDAgbGF5b3V0cyBh
cmUgYWx3YXlzIGNvbnNpZGVyZWQgYWN0aXZlCi0gICAgICAgIGlmICh2ZXJ0ZXhJbnRlcmZhY2VC
bG9jay5zdGF0aWNVc2UgfHwgdmVydGV4SW50ZXJmYWNlQmxvY2subGF5b3V0ICE9IHNoOjpCTE9D
S0xBWU9VVF9QQUNLRUQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICgrK3ZlcnRleEJsb2Nr
Q291bnQgPiBjYXBzLm1heFZlcnRleFVuaWZvcm1CbG9ja3MpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgaW5mb0xvZyA8PCAiVmVydGV4IHNoYWRlciB1bmlmb3JtIGJsb2NrIGNvdW50
IGV4Y2VlZCBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQkxPQ0tTICgiCi0gICAgICAgICAgICAgICAg
ICAgICAgICA8PCBjYXBzLm1heFZlcnRleFVuaWZvcm1CbG9ja3MgPDwgIikiOwotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQogICAgIH0KIAot
ICAgIEdMdWludCBmcmFnbWVudEJsb2NrQ291bnQgPSAwOwogICAgIGZvciAoY29uc3Qgc2g6Oklu
dGVyZmFjZUJsb2NrICZmcmFnbWVudEludGVyZmFjZUJsb2NrIDogZnJhZ21lbnRJbnRlcmZhY2VC
bG9ja3MpCiAgICAgewogICAgICAgICBhdXRvIGVudHJ5ID0gbGlua2VkVW5pZm9ybUJsb2Nrcy5m
aW5kKGZyYWdtZW50SW50ZXJmYWNlQmxvY2submFtZSk7CkBAIC0xODYyLDI2ICsyMTYyLDU5IEBA
IGJvb2wgUHJvZ3JhbTo6bGlua1VuaWZvcm1CbG9ja3MoSW5mb0xvZyAKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICB9CisgICAgcmV0
dXJuIHRydWU7Cit9CiAKLSAgICAgICAgLy8gTm90ZTogc2hhcmVkIGFuZCBzdGQxNDAgbGF5b3V0
cyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgYWN0aXZlCi0gICAgICAgIGlmIChmcmFnbWVudEludGVy
ZmFjZUJsb2NrLnN0YXRpY1VzZSB8fAotICAgICAgICAgICAgZnJhZ21lbnRJbnRlcmZhY2VCbG9j
ay5sYXlvdXQgIT0gc2g6OkJMT0NLTEFZT1VUX1BBQ0tFRCkKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKCsrZnJhZ21lbnRCbG9ja0NvdW50ID4gY2Fwcy5tYXhGcmFnbWVudFVuaWZvcm1CbG9j
a3MpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW5mb0xvZwotICAgICAgICAgICAg
ICAgICAgICA8PCAiRnJhZ21lbnQgc2hhZGVyIHVuaWZvcm0gYmxvY2sgY291bnQgZXhjZWVkIEdM
X01BWF9GUkFHTUVOVF9VTklGT1JNX0JMT0NLUyAoIgotICAgICAgICAgICAgICAgICAgICA8PCBj
YXBzLm1heEZyYWdtZW50VW5pZm9ybUJsb2NrcyA8PCAiKSI7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgfQorYm9vbCBQcm9ncmFtOjpsaW5rVW5pZm9ybUJsb2Nr
cyhJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBDYXBzICZjYXBzKQoreworICAgIGlmIChtU3RhdGUu
bUF0dGFjaGVkQ29tcHV0ZVNoYWRlcikKKyAgICB7CisgICAgICAgIGNvbnN0IFNoYWRlciAmY29t
cHV0ZVNoYWRlciAgICAgICAgPSAqbVN0YXRlLm1BdHRhY2hlZENvbXB1dGVTaGFkZXI7CisgICAg
ICAgIGNvbnN0IGF1dG8gJmNvbXB1dGVJbnRlcmZhY2VCbG9ja3MgPSBjb21wdXRlU2hhZGVyLmdl
dEludGVyZmFjZUJsb2NrcygpOworCisgICAgICAgIGlmICghdmFsaWRhdGVVbmlmb3JtQmxvY2tz
Q291bnQoCisgICAgICAgICAgICAgICAgY2Fwcy5tYXhDb21wdXRlVW5pZm9ybUJsb2NrcywgY29t
cHV0ZUludGVyZmFjZUJsb2NrcywKKyAgICAgICAgICAgICAgICAiQ29tcHV0ZSBzaGFkZXIgdW5p
Zm9ybSBibG9jayBjb3VudCBleGNlZWRzIEdMX01BWF9DT01QVVRFX1VOSUZPUk1fQkxPQ0tTICgi
LAorICAgICAgICAgICAgICAgIGluZm9Mb2cpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
Y29uc3QgU2hhZGVyICZ2ZXJ0ZXhTaGFkZXIgICA9ICptU3RhdGUubUF0dGFjaGVkVmVydGV4U2hh
ZGVyOworICAgIGNvbnN0IFNoYWRlciAmZnJhZ21lbnRTaGFkZXIgPSAqbVN0YXRlLm1BdHRhY2hl
ZEZyYWdtZW50U2hhZGVyOworCisgICAgY29uc3QgYXV0byAmdmVydGV4SW50ZXJmYWNlQmxvY2tz
ICAgPSB2ZXJ0ZXhTaGFkZXIuZ2V0SW50ZXJmYWNlQmxvY2tzKCk7CisgICAgY29uc3QgYXV0byAm
ZnJhZ21lbnRJbnRlcmZhY2VCbG9ja3MgPSBmcmFnbWVudFNoYWRlci5nZXRJbnRlcmZhY2VCbG9j
a3MoKTsKKworICAgIGlmICghdmFsaWRhdGVVbmlmb3JtQmxvY2tzQ291bnQoCisgICAgICAgICAg
ICBjYXBzLm1heFZlcnRleFVuaWZvcm1CbG9ja3MsIHZlcnRleEludGVyZmFjZUJsb2NrcywKKyAg
ICAgICAgICAgICJWZXJ0ZXggc2hhZGVyIHVuaWZvcm0gYmxvY2sgY291bnQgZXhjZWVkcyBHTF9N
QVhfVkVSVEVYX1VOSUZPUk1fQkxPQ0tTICgiLCBpbmZvTG9nKSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKCF2YWxpZGF0ZVVuaWZvcm1CbG9ja3NDb3VudCgK
KyAgICAgICAgICAgIGNhcHMubWF4RnJhZ21lbnRVbmlmb3JtQmxvY2tzLCBmcmFnbWVudEludGVy
ZmFjZUJsb2NrcywKKyAgICAgICAgICAgICJGcmFnbWVudCBzaGFkZXIgdW5pZm9ybSBibG9jayBj
b3VudCBleGNlZWRzIEdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0JMT0NLUyAoIiwKKyAgICAgICAg
ICAgIGluZm9Mb2cpKQorICAgIHsKKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IGlmICghdmFsaWRhdGVWZXJ0ZXhBbmRGcmFnbWVudEludGVyZmFjZUJsb2Nrcyh2ZXJ0ZXhJbnRl
cmZhY2VCbG9ja3MsIGZyYWdtZW50SW50ZXJmYWNlQmxvY2tzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvTG9nKSkKKyAgICB7CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBQcm9n
cmFtOjphcmVNYXRjaGluZ0ludGVyZmFjZUJsb2NrcyhnbDo6SW5mb0xvZyAmaW5mb0xvZywgY29u
c3Qgc2g6OkludGVyZmFjZUJsb2NrICZ2ZXJ0ZXhJbnRlcmZhY2VCbG9jaywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrICZm
cmFnbWVudEludGVyZmFjZUJsb2NrKQorYm9vbCBQcm9ncmFtOjphcmVNYXRjaGluZ0ludGVyZmFj
ZUJsb2NrcyhnbDo6SW5mb0xvZyAmaW5mb0xvZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrICZ2ZXJ0ZXhJbnRlcmZhY2VC
bG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2g6
OkludGVyZmFjZUJsb2NrICZmcmFnbWVudEludGVyZmFjZUJsb2NrKSBjb25zdAogewogICAgIGNv
bnN0IGNoYXIqIGJsb2NrTmFtZSA9IHZlcnRleEludGVyZmFjZUJsb2NrLm5hbWUuY19zdHIoKTsK
ICAgICAvLyB2YWxpZGF0ZSBibG9ja3MgZm9yIHRoZSBzYW1lIG1lbWJlciB0eXBlcwpAQCAtMTk5
Myw3ICsyMzI2LDExIEBAIGJvb2wgUHJvZ3JhbTo6bGlua1ZhbGlkYXRlVW5pZm9ybXMoSW5mb0wK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBQcm9ncmFtOjpsaW5rVmFsaWRhdGVWYXJ5aW5n
cyhJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBzdGQ6OnN0cmluZyAmdmFyeWluZ05hbWUsIGNvbnN0
IHNoOjpWYXJ5aW5nICZ2ZXJ0ZXhWYXJ5aW5nLCBjb25zdCBzaDo6VmFyeWluZyAmZnJhZ21lbnRW
YXJ5aW5nKQorYm9vbCBQcm9ncmFtOjpsaW5rVmFsaWRhdGVWYXJ5aW5ncyhJbmZvTG9nICZpbmZv
TG9nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyAmdmFyeWluZ05hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHNoOjpWYXJ5aW5nICZ2ZXJ0ZXhWYXJ5aW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzaDo6VmFyeWluZyAmZnJhZ21lbnRWYXJ5aW5nLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2hhZGVyVmVyc2lvbikKIHsKICAgICBpZiAoIWxp
bmtWYWxpZGF0ZVZhcmlhYmxlc0Jhc2UoaW5mb0xvZywgdmFyeWluZ05hbWUsIHZlcnRleFZhcnlp
bmcsIGZyYWdtZW50VmFyeWluZywgZmFsc2UpKQogICAgIHsKQEAgLTIwMDIsNyArMjMzOSwxNSBA
QCBib29sIFByb2dyYW06OmxpbmtWYWxpZGF0ZVZhcnlpbmdzKEluZm9MCiAKICAgICBpZiAoIXNo
OjpJbnRlcnBvbGF0aW9uVHlwZXNNYXRjaCh2ZXJ0ZXhWYXJ5aW5nLmludGVycG9sYXRpb24sIGZy
YWdtZW50VmFyeWluZy5pbnRlcnBvbGF0aW9uKSkKICAgICB7Ci0gICAgICAgIGluZm9Mb2cgPDwg
IkludGVycG9sYXRpb24gdHlwZXMgZm9yICIgPDwgdmFyeWluZ05hbWUgPDwgIiBkaWZmZXIgYmV0
d2VlbiB2ZXJ0ZXggYW5kIGZyYWdtZW50IHNoYWRlcnMiOworICAgICAgICBpbmZvTG9nIDw8ICJJ
bnRlcnBvbGF0aW9uIHR5cGVzIGZvciAiIDw8IHZhcnlpbmdOYW1lCisgICAgICAgICAgICAgICAg
PDwgIiBkaWZmZXIgYmV0d2VlbiB2ZXJ0ZXggYW5kIGZyYWdtZW50IHNoYWRlcnMuIjsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChzaGFkZXJWZXJzaW9uID09IDEwMCAm
JiB2ZXJ0ZXhWYXJ5aW5nLmlzSW52YXJpYW50ICE9IGZyYWdtZW50VmFyeWluZy5pc0ludmFyaWFu
dCkKKyAgICB7CisgICAgICAgIGluZm9Mb2cgPDwgIkludmFyaWFuY2UgZm9yICIgPDwgdmFyeWlu
Z05hbWUKKyAgICAgICAgICAgICAgICA8PCAiIGRpZmZlcnMgYmV0d2VlbiB2ZXJ0ZXggYW5kIGZy
YWdtZW50IHNoYWRlcnMuIjsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjAx
Nyw3ICsyMzYyLDcgQEAgYm9vbCBQcm9ncmFtOjpsaW5rVmFsaWRhdGVUcmFuc2Zvcm1GZWVkYgog
CiAgICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IHVuaXF1ZU5hbWVzOwogCi0gICAgZm9yIChjb25z
dCBzdGQ6OnN0cmluZyAmdGZWYXJ5aW5nTmFtZSA6IG1EYXRhLm1UcmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmdOYW1lcykKKyAgICBmb3IgKGNvbnN0IHN0ZDo6c3RyaW5nICZ0ZlZhcnlpbmdOYW1lIDog
bVN0YXRlLm1UcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdOYW1lcykKICAgICB7CiAgICAgICAgIGJv
b2wgZm91bmQgPSBmYWxzZTsKICAgICAgICAgZm9yIChjb25zdCBzaDo6VmFyeWluZyAqdmFyeWlu
ZyA6IHZhcnlpbmdzKQpAQCAtMjA0MCw3ICsyMzg1LDcgQEAgYm9vbCBQcm9ncmFtOjpsaW5rVmFs
aWRhdGVUcmFuc2Zvcm1GZWVkYgogCiAgICAgICAgICAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTog
SW52ZXN0aWdhdGUgaW1wbGVtZW50YXRpb24gbGltaXRzIG9uIEQzRDExCiAgICAgICAgICAgICAg
ICAgc2l6ZV90IGNvbXBvbmVudENvdW50ID0gZ2w6OlZhcmlhYmxlQ29tcG9uZW50Q291bnQodmFy
eWluZy0+dHlwZSk7Ci0gICAgICAgICAgICAgICAgaWYgKG1EYXRhLm1UcmFuc2Zvcm1GZWVkYmFj
a0J1ZmZlck1vZGUgPT0gR0xfU0VQQVJBVEVfQVRUUklCUyAmJgorICAgICAgICAgICAgICAgIGlm
IChtU3RhdGUubVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9kZSA9PSBHTF9TRVBBUkFURV9BVFRS
SUJTICYmCiAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudENvdW50ID4gY2Fwcy5tYXhUcmFu
c2Zvcm1GZWVkYmFja1NlcGFyYXRlQ29tcG9uZW50cykKICAgICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgICAgIGluZm9Mb2cgPDwgIlRyYW5zZm9ybSBmZWVkYmFjayB2YXJ5aW5nJ3Mg
IiA8PCB2YXJ5aW5nLT5uYW1lIDw8ICIgY29tcG9uZW50cyAoIgpAQCAtMjA2Niw3ICsyNDExLDcg
QEAgYm9vbCBQcm9ncmFtOjpsaW5rVmFsaWRhdGVUcmFuc2Zvcm1GZWVkYgogICAgICAgICBVTlVT
RURfQVNTRVJUSU9OX1ZBUklBQkxFKGZvdW5kKTsKICAgICB9CiAKLSAgICBpZiAobURhdGEubVRy
YW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9kZSA9PSBHTF9JTlRFUkxFQVZFRF9BVFRSSUJTICYmCisg
ICAgaWYgKG1TdGF0ZS5tVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlID09IEdMX0lOVEVSTEVB
VkVEX0FUVFJJQlMgJiYKICAgICAgICAgdG90YWxDb21wb25lbnRzID4gY2Fwcy5tYXhUcmFuc2Zv
cm1GZWVkYmFja0ludGVybGVhdmVkQ29tcG9uZW50cykKICAgICB7CiAgICAgICAgIGluZm9Mb2cg
PDwgIlRyYW5zZm9ybSBmZWVkYmFjayB2YXJ5aW5nIHRvdGFsIGNvbXBvbmVudHMgKCIgPDwgdG90
YWxDb21wb25lbnRzCkBAIC0yMDgxLDE0ICsyNDI2LDE0IEBAIGJvb2wgUHJvZ3JhbTo6bGlua1Zh
bGlkYXRlVHJhbnNmb3JtRmVlZGIKIHZvaWQgUHJvZ3JhbTo6Z2F0aGVyVHJhbnNmb3JtRmVlZGJh
Y2tWYXJ5aW5ncyhjb25zdCBzdGQ6OnZlY3Rvcjxjb25zdCBzaDo6VmFyeWluZyAqPiAmdmFyeWlu
Z3MpCiB7CiAgICAgLy8gR2F0aGVyIHRoZSBsaW5rZWQgdmFyeWluZ3MgdGhhdCBhcmUgdXNlZCBm
b3IgdHJhbnNmb3JtIGZlZWRiYWNrLCB0aGV5IHNob3VsZCBhbGwgZXhpc3QuCi0gICAgbURhdGEu
bVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ1ZhcnMuY2xlYXIoKTsKLSAgICBmb3IgKGNvbnN0IHN0
ZDo6c3RyaW5nICZ0ZlZhcnlpbmdOYW1lIDogbURhdGEubVRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
Z05hbWVzKQorICAgIG1TdGF0ZS5tVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nVmFycy5jbGVhcigp
OworICAgIGZvciAoY29uc3Qgc3RkOjpzdHJpbmcgJnRmVmFyeWluZ05hbWUgOiBtU3RhdGUubVRy
YW5zZm9ybUZlZWRiYWNrVmFyeWluZ05hbWVzKQogICAgIHsKICAgICAgICAgZm9yIChjb25zdCBz
aDo6VmFyeWluZyAqdmFyeWluZyA6IHZhcnlpbmdzKQogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAodGZWYXJ5aW5nTmFtZSA9PSB2YXJ5aW5nLT5uYW1lKQogICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIG1EYXRhLm1UcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdWYXJzLnB1c2hfYmFjaygq
dmFyeWluZyk7CisgICAgICAgICAgICAgICAgbVN0YXRlLm1UcmFuc2Zvcm1GZWVkYmFja1Zhcnlp
bmdWYXJzLnB1c2hfYmFjaygqdmFyeWluZyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIxMDAsNyArMjQ0NSw3IEBAIHN0ZDo6dmVjdG9yPGNv
bnN0IHNoOjpWYXJ5aW5nICo+IFByb2dyYW0KICAgICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gdW5p
cXVlTmFtZXM7CiAgICAgc3RkOjp2ZWN0b3I8Y29uc3Qgc2g6OlZhcnlpbmcgKj4gdmFyeWluZ3M7
CiAKLSAgICBmb3IgKGNvbnN0IHNoOjpWYXJ5aW5nICZ2YXJ5aW5nIDogbURhdGEubUF0dGFjaGVk
VmVydGV4U2hhZGVyLT5nZXRWYXJ5aW5ncygpKQorICAgIGZvciAoY29uc3Qgc2g6OlZhcnlpbmcg
JnZhcnlpbmcgOiBtU3RhdGUubUF0dGFjaGVkVmVydGV4U2hhZGVyLT5nZXRWYXJ5aW5ncygpKQog
ICAgIHsKICAgICAgICAgaWYgKHVuaXF1ZU5hbWVzLmNvdW50KHZhcnlpbmcubmFtZSkgPT0gMCkK
ICAgICAgICAgewpAQCAtMjEwOSw3ICsyNDU0LDcgQEAgc3RkOjp2ZWN0b3I8Y29uc3Qgc2g6OlZh
cnlpbmcgKj4gUHJvZ3JhbQogICAgICAgICB9CiAgICAgfQogCi0gICAgZm9yIChjb25zdCBzaDo6
VmFyeWluZyAmdmFyeWluZyA6IG1EYXRhLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyLT5nZXRWYXJ5
aW5ncygpKQorICAgIGZvciAoY29uc3Qgc2g6OlZhcnlpbmcgJnZhcnlpbmcgOiBtU3RhdGUubUF0
dGFjaGVkRnJhZ21lbnRTaGFkZXItPmdldFZhcnlpbmdzKCkpCiAgICAgewogICAgICAgICBpZiAo
dW5pcXVlTmFtZXMuY291bnQodmFyeWluZy5uYW1lKSA9PSAwKQogICAgICAgICB7CkBAIC0yMTIz
LDcgKzI0NjgsNyBAQCBzdGQ6OnZlY3Rvcjxjb25zdCBzaDo6VmFyeWluZyAqPiBQcm9ncmFtCiAK
IHZvaWQgUHJvZ3JhbTo6bGlua091dHB1dFZhcmlhYmxlcygpCiB7Ci0gICAgY29uc3QgU2hhZGVy
ICpmcmFnbWVudFNoYWRlciA9IG1EYXRhLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyOworICAgIGNv
bnN0IFNoYWRlciAqZnJhZ21lbnRTaGFkZXIgPSBtU3RhdGUubUF0dGFjaGVkRnJhZ21lbnRTaGFk
ZXI7CiAgICAgQVNTRVJUKGZyYWdtZW50U2hhZGVyICE9IG51bGxwdHIpOwogCiAgICAgLy8gU2tp
cCB0aGlzIHN0ZXAgZm9yIEdMRVMyIHNoYWRlcnMuCkBAIC0yMTUyLDczICsyNDk3LDk0IEBAIHZv
aWQgUHJvZ3JhbTo6bGlua091dHB1dFZhcmlhYmxlcygpCiAgICAgICAgICAgICAgZWxlbWVudElu
ZGV4KyspCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IGludCBsb2NhdGlvbiA9IGJhc2VM
b2NhdGlvbiArIGVsZW1lbnRJbmRleDsKLSAgICAgICAgICAgIEFTU0VSVChtRGF0YS5tT3V0cHV0
VmFyaWFibGVzLmNvdW50KGxvY2F0aW9uKSA9PSAwKTsKKyAgICAgICAgICAgIEFTU0VSVChtU3Rh
dGUubU91dHB1dFZhcmlhYmxlcy5jb3VudChsb2NhdGlvbikgPT0gMCk7CiAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgZWxlbWVudCA9IG91dHB1dFZhcmlhYmxlLmlzQXJyYXkoKSA/IGVsZW1lbnRJ
bmRleCA6IEdMX0lOVkFMSURfSU5ERVg7Ci0gICAgICAgICAgICBtRGF0YS5tT3V0cHV0VmFyaWFi
bGVzW2xvY2F0aW9uXSA9CisgICAgICAgICAgICBtU3RhdGUubU91dHB1dFZhcmlhYmxlc1tsb2Nh
dGlvbl0gPQogICAgICAgICAgICAgICAgIFZhcmlhYmxlTG9jYXRpb24ob3V0cHV0VmFyaWFibGUu
bmFtZSwgZWxlbWVudCwgb3V0cHV0VmFyaWFibGVJbmRleCk7CiAgICAgICAgIH0KICAgICB9CiB9
CiAKLWJvb2wgUHJvZ3JhbTo6ZmxhdHRlblVuaWZvcm1zQW5kQ2hlY2tDYXBzKGNvbnN0IENhcHMg
JmNhcHMsIEluZm9Mb2cgJmluZm9Mb2cpCitib29sIFByb2dyYW06OmZsYXR0ZW5Vbmlmb3Jtc0Fu
ZENoZWNrQ2Fwc0ZvclNoYWRlcihjb25zdCBnbDo6U2hhZGVyICZzaGFkZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWF4VW5pZm9y
bUNvbXBvbmVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgbWF4VGV4dHVyZUltYWdlVW5pdHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmY29tcG9u
ZW50c0Vycm9yTWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzYW1wbGVyRXJyb3JNZXNzYWdlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0
b3I8TGlua2VkVW5pZm9ybT4gJnNhbXBsZXJVbmlmb3JtcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZm9Mb2cgJmluZm9Mb2cpCiB7Ci0gICAg
Y29uc3QgZ2w6OlNoYWRlciAqdmVydGV4U2hhZGVyID0gbURhdGEuZ2V0QXR0YWNoZWRWZXJ0ZXhT
aGFkZXIoKTsKLSAgICBWZWN0b3JBbmRTYW1wbGVyQ291bnQgdnNDb3VudHM7Ci0KLSAgICBzdGQ6
OnZlY3RvcjxMaW5rZWRVbmlmb3JtPiBzYW1wbGVyVW5pZm9ybXM7Ci0KLSAgICBmb3IgKGNvbnN0
IHNoOjpVbmlmb3JtICZ1bmlmb3JtIDogdmVydGV4U2hhZGVyLT5nZXRVbmlmb3JtcygpKQorICAg
IFZlY3RvckFuZFNhbXBsZXJDb3VudCB2YXNDb3VudDsKKyAgICBmb3IgKGNvbnN0IHNoOjpVbmlm
b3JtICZ1bmlmb3JtIDogc2hhZGVyLmdldFVuaWZvcm1zKCkpCiAgICAgewogICAgICAgICBpZiAo
dW5pZm9ybS5zdGF0aWNVc2UpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHZzQ291bnRzICs9IGZs
YXR0ZW5Vbmlmb3JtKHVuaWZvcm0sIHVuaWZvcm0ubmFtZSwgJnNhbXBsZXJVbmlmb3Jtcyk7Cisg
ICAgICAgICAgICB2YXNDb3VudCArPSBmbGF0dGVuVW5pZm9ybSh1bmlmb3JtLCB1bmlmb3JtLm5h
bWUsICZzYW1wbGVyVW5pZm9ybXMpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHZzQ291
bnRzLnZlY3RvckNvdW50ID4gY2Fwcy5tYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycykKKyAgICBpZiAo
dmFzQ291bnQudmVjdG9yQ291bnQgPiBtYXhVbmlmb3JtQ29tcG9uZW50cykKICAgICB7Ci0gICAg
ICAgIGluZm9Mb2cgPDwgIlZlcnRleCBzaGFkZXIgYWN0aXZlIHVuaWZvcm1zIGV4Y2VlZCBNQVhf
VkVSVEVYX1VOSUZPUk1fVkVDVE9SUyAoIgotICAgICAgICAgICAgICAgIDw8IGNhcHMubWF4VmVy
dGV4VW5pZm9ybVZlY3RvcnMgPDwgIikuIjsKKyAgICAgICAgaW5mb0xvZyA8PCBjb21wb25lbnRz
RXJyb3JNZXNzYWdlIDw8IG1heFVuaWZvcm1Db21wb25lbnRzIDw8ICIpLiI7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAodnNDb3VudHMuc2FtcGxlckNvdW50ID4gY2Fw
cy5tYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cykKKyAgICBpZiAodmFzQ291bnQuc2FtcGxlckNv
dW50ID4gbWF4VGV4dHVyZUltYWdlVW5pdHMpCiAgICAgewotICAgICAgICBpbmZvTG9nIDw8ICJW
ZXJ0ZXggc2hhZGVyIHNhbXBsZXIgY291bnQgZXhjZWVkcyBNQVhfVkVSVEVYX1RFWFRVUkVfSU1B
R0VfVU5JVFMgKCIKLSAgICAgICAgICAgICAgICA8PCBjYXBzLm1heFZlcnRleFRleHR1cmVJbWFn
ZVVuaXRzIDw8ICIpLiI7CisgICAgICAgIGluZm9Mb2cgPDwgc2FtcGxlckVycm9yTWVzc2FnZSA8
PCBtYXhUZXh0dXJlSW1hZ2VVbml0cyA8PCAiKS4iOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCi0gICAgY29uc3QgZ2w6OlNoYWRlciAqZnJhZ21lbnRTaGFkZXIgPSBtRGF0YS5nZXRB
dHRhY2hlZEZyYWdtZW50U2hhZGVyKCk7Ci0gICAgVmVjdG9yQW5kU2FtcGxlckNvdW50IGZzQ291
bnRzOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFByb2dyYW06OmZsYXR0ZW5Vbmlmb3Jt
c0FuZENoZWNrQ2Fwcyhjb25zdCBDYXBzICZjYXBzLCBJbmZvTG9nICZpbmZvTG9nKQoreworICAg
IHN0ZDo6dmVjdG9yPExpbmtlZFVuaWZvcm0+IHNhbXBsZXJVbmlmb3JtczsKIAotICAgIGZvciAo
Y29uc3Qgc2g6OlVuaWZvcm0gJnVuaWZvcm0gOiBmcmFnbWVudFNoYWRlci0+Z2V0VW5pZm9ybXMo
KSkKKyAgICBpZiAobVN0YXRlLm1BdHRhY2hlZENvbXB1dGVTaGFkZXIpCiAgICAgewotICAgICAg
ICBpZiAodW5pZm9ybS5zdGF0aWNVc2UpCisgICAgICAgIGNvbnN0IGdsOjpTaGFkZXIgKmNvbXB1
dGVTaGFkZXIgPSBtU3RhdGUuZ2V0QXR0YWNoZWRDb21wdXRlU2hhZGVyKCk7CisKKyAgICAgICAg
Ly8gVE9ETyAobXJhZGV2KTogY2hlY2sgd2hldGhlciB3ZSBuZWVkIGZpbmVyLWdyYWluZWQgY29t
cG9uZW50IGNvdW50aW5nCisgICAgICAgIGlmICghZmxhdHRlblVuaWZvcm1zQW5kQ2hlY2tDYXBz
Rm9yU2hhZGVyKAorICAgICAgICAgICAgICAgICpjb21wdXRlU2hhZGVyLCBjYXBzLm1heENvbXB1
dGVVbmlmb3JtQ29tcG9uZW50cyAvIDQsCisgICAgICAgICAgICAgICAgY2Fwcy5tYXhDb21wdXRl
VGV4dHVyZUltYWdlVW5pdHMsCisgICAgICAgICAgICAgICAgIkNvbXB1dGUgc2hhZGVyIGFjdGl2
ZSB1bmlmb3JtcyBleGNlZWQgTUFYX0NPTVBVVEVfVU5JRk9STV9DT01QT05FTlRTICgiLAorICAg
ICAgICAgICAgICAgICJDb21wdXRlIHNoYWRlciBzYW1wbGVyIGNvdW50IGV4Y2VlZHMgTUFYX0NP
TVBVVEVfVEVYVFVSRV9JTUFHRV9VTklUUyAoIiwKKyAgICAgICAgICAgICAgICBzYW1wbGVyVW5p
Zm9ybXMsIGluZm9Mb2cpKQogICAgICAgICB7Ci0gICAgICAgICAgICBmc0NvdW50cyArPSBmbGF0
dGVuVW5pZm9ybSh1bmlmb3JtLCB1bmlmb3JtLm5hbWUsICZzYW1wbGVyVW5pZm9ybXMpOworICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQotCi0gICAgaWYgKGZzQ291
bnRzLnZlY3RvckNvdW50ID4gY2Fwcy5tYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzKQorICAgIGVs
c2UKICAgICB7Ci0gICAgICAgIGluZm9Mb2cgPDwgIkZyYWdtZW50IHNoYWRlciBhY3RpdmUgdW5p
Zm9ybXMgZXhjZWVkIE1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMgKCIKLSAgICAgICAgICAg
ICAgICA8PCBjYXBzLm1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMgPDwgIikuIjsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICAgICAgY29uc3QgZ2w6OlNoYWRlciAqdmVydGV4U2hh
ZGVyID0gbVN0YXRlLmdldEF0dGFjaGVkVmVydGV4U2hhZGVyKCk7CiAKLSAgICBpZiAoZnNDb3Vu
dHMuc2FtcGxlckNvdW50ID4gY2Fwcy5tYXhUZXh0dXJlSW1hZ2VVbml0cykKLSAgICB7Ci0gICAg
ICAgIGluZm9Mb2cgPDwgIkZyYWdtZW50IHNoYWRlciBzYW1wbGVyIGNvdW50IGV4Y2VlZHMgTUFY
X1RFWFRVUkVfSU1BR0VfVU5JVFMgKCIKLSAgICAgICAgICAgICAgICA8PCBjYXBzLm1heFRleHR1
cmVJbWFnZVVuaXRzIDw8ICIpLiI7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYg
KCFmbGF0dGVuVW5pZm9ybXNBbmRDaGVja0NhcHNGb3JTaGFkZXIoCisgICAgICAgICAgICAgICAg
KnZlcnRleFNoYWRlciwgY2Fwcy5tYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycywgY2Fwcy5tYXhWZXJ0
ZXhUZXh0dXJlSW1hZ2VVbml0cywKKyAgICAgICAgICAgICAgICAiVmVydGV4IHNoYWRlciBhY3Rp
dmUgdW5pZm9ybXMgZXhjZWVkIE1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTICgiLAorICAgICAg
ICAgICAgICAgICJWZXJ0ZXggc2hhZGVyIHNhbXBsZXIgY291bnQgZXhjZWVkcyBNQVhfVkVSVEVY
X1RFWFRVUkVfSU1BR0VfVU5JVFMgKCIsCisgICAgICAgICAgICAgICAgc2FtcGxlclVuaWZvcm1z
LCBpbmZvTG9nKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgICAgIGNvbnN0IGdsOjpTaGFkZXIgKmZyYWdtZW50U2hhZGVyID0gbVN0YXRlLmdl
dEF0dGFjaGVkRnJhZ21lbnRTaGFkZXIoKTsKKworICAgICAgICBpZiAoIWZsYXR0ZW5Vbmlmb3Jt
c0FuZENoZWNrQ2Fwc0ZvclNoYWRlcigKKyAgICAgICAgICAgICAgICAqZnJhZ21lbnRTaGFkZXIs
IGNhcHMubWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycywgY2Fwcy5tYXhUZXh0dXJlSW1hZ2VVbml0
cywKKyAgICAgICAgICAgICAgICAiRnJhZ21lbnQgc2hhZGVyIGFjdGl2ZSB1bmlmb3JtcyBleGNl
ZWQgTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUyAoIiwKKyAgICAgICAgICAgICAgICAiRnJh
Z21lbnQgc2hhZGVyIHNhbXBsZXIgY291bnQgZXhjZWVkcyBNQVhfVEVYVFVSRV9JTUFHRV9VTklU
UyAoIiwgc2FtcGxlclVuaWZvcm1zLAorICAgICAgICAgICAgICAgIGluZm9Mb2cpKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBt
U2FtcGxlclVuaWZvcm1SYW5nZS5zdGFydCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4obURh
dGEubVVuaWZvcm1zLnNpemUoKSk7CisgICAgbVNhbXBsZXJVbmlmb3JtUmFuZ2Uuc3RhcnQgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG1TdGF0ZS5tVW5pZm9ybXMuc2l6ZSgpKTsKICAgICBt
U2FtcGxlclVuaWZvcm1SYW5nZS5lbmQgPQogICAgICAgICBtU2FtcGxlclVuaWZvcm1SYW5nZS5z
dGFydCArIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc2FtcGxlclVuaWZvcm1zLnNpemUoKSk7
CiAKLSAgICBtRGF0YS5tVW5pZm9ybXMuaW5zZXJ0KG1EYXRhLm1Vbmlmb3Jtcy5lbmQoKSwgc2Ft
cGxlclVuaWZvcm1zLmJlZ2luKCksIHNhbXBsZXJVbmlmb3Jtcy5lbmQoKSk7CisgICAgbVN0YXRl
Lm1Vbmlmb3Jtcy5pbnNlcnQobVN0YXRlLm1Vbmlmb3Jtcy5lbmQoKSwgc2FtcGxlclVuaWZvcm1z
LmJlZ2luKCksIHNhbXBsZXJVbmlmb3Jtcy5lbmQoKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
QEAgLTIyNDksNyArMjYxNSw4IEBAIFByb2dyYW06OlZlY3RvckFuZFNhbXBsZXJDb3VudCBQcm9n
cmFtOjoKIAogICAgIC8vIE5vdCBhIHN0cnVjdAogICAgIGJvb2wgaXNTYW1wbGVyID0gSXNTYW1w
bGVyVHlwZSh1bmlmb3JtLnR5cGUpOwotICAgIGlmICghVW5pZm9ybUluTGlzdChtRGF0YS5nZXRV
bmlmb3JtcygpLCBmdWxsTmFtZSkgJiYgIVVuaWZvcm1Jbkxpc3QoKnNhbXBsZXJVbmlmb3Jtcywg
ZnVsbE5hbWUpKQorICAgIGlmICghVW5pZm9ybUluTGlzdChtU3RhdGUuZ2V0VW5pZm9ybXMoKSwg
ZnVsbE5hbWUpICYmCisgICAgICAgICFVbmlmb3JtSW5MaXN0KCpzYW1wbGVyVW5pZm9ybXMsIGZ1
bGxOYW1lKSkKICAgICB7CiAgICAgICAgIGdsOjpMaW5rZWRVbmlmb3JtIGxpbmtlZFVuaWZvcm0o
dW5pZm9ybS50eXBlLCB1bmlmb3JtLnByZWNpc2lvbiwgZnVsbE5hbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pZm9ybS5hcnJheVNpemUsIC0xLApAQCAtMjI2
Myw3ICsyNjMwLDcgQEAgUHJvZ3JhbTo6VmVjdG9yQW5kU2FtcGxlckNvdW50IFByb2dyYW06Ogog
ICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgbURhdGEubVVu
aWZvcm1zLnB1c2hfYmFjayhsaW5rZWRVbmlmb3JtKTsKKyAgICAgICAgICAgIG1TdGF0ZS5tVW5p
Zm9ybXMucHVzaF9iYWNrKGxpbmtlZFVuaWZvcm0pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0y
MjgwLDE0ICsyNjQ3LDM5IEBAIFByb2dyYW06OlZlY3RvckFuZFNhbXBsZXJDb3VudCBQcm9ncmFt
OjoKIAogdm9pZCBQcm9ncmFtOjpnYXRoZXJJbnRlcmZhY2VCbG9ja0luZm8oKQogeworICAgIEFT
U0VSVChtU3RhdGUubVVuaWZvcm1CbG9ja3MuZW1wdHkoKSk7CisKKyAgICBpZiAobVN0YXRlLm1B
dHRhY2hlZENvbXB1dGVTaGFkZXIpCisgICAgeworICAgICAgICBjb25zdCBnbDo6U2hhZGVyICpj
b21wdXRlU2hhZGVyID0gbVN0YXRlLmdldEF0dGFjaGVkQ29tcHV0ZVNoYWRlcigpOworCisgICAg
ICAgIGZvciAoY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrICZjb21wdXRlQmxvY2sgOiBjb21wdXRl
U2hhZGVyLT5nZXRJbnRlcmZhY2VCbG9ja3MoKSkKKyAgICAgICAgeworCisgICAgICAgICAgICAv
LyBPbmx5ICdwYWNrZWQnIGJsb2NrcyBhcmUgYWxsb3dlZCB0byBiZSBjb25zaWRlcmVkIGluYWN0
aXZlLgorICAgICAgICAgICAgaWYgKCFjb21wdXRlQmxvY2suc3RhdGljVXNlICYmIGNvbXB1dGVC
bG9jay5sYXlvdXQgPT0gc2g6OkJMT0NLTEFZT1VUX1BBQ0tFRCkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICAgICAgZm9yIChnbDo6VW5pZm9ybUJsb2NrICZibG9jayA6IG1T
dGF0ZS5tVW5pZm9ybUJsb2NrcykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAo
YmxvY2submFtZSA9PSBjb21wdXRlQmxvY2submFtZSkKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIGJsb2NrLmNvbXB1dGVTdGF0aWNVc2UgPSBjb21wdXRlQmxvY2suc3Rh
dGljVXNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ZGVmaW5lVW5pZm9ybUJsb2NrKGNvbXB1dGVCbG9jaywgR0xfQ09NUFVURV9TSEFERVIpOworICAg
ICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBzdGQ6OnNldDxzdGQ6OnN0cmlu
Zz4gdmlzaXRlZExpc3Q7CiAKLSAgICBjb25zdCBnbDo6U2hhZGVyICp2ZXJ0ZXhTaGFkZXIgPSBt
RGF0YS5nZXRBdHRhY2hlZFZlcnRleFNoYWRlcigpOworICAgIGNvbnN0IGdsOjpTaGFkZXIgKnZl
cnRleFNoYWRlciA9IG1TdGF0ZS5nZXRBdHRhY2hlZFZlcnRleFNoYWRlcigpOwogCi0gICAgQVNT
RVJUKG1EYXRhLm1Vbmlmb3JtQmxvY2tzLmVtcHR5KCkpOwogICAgIGZvciAoY29uc3Qgc2g6Oklu
dGVyZmFjZUJsb2NrICZ2ZXJ0ZXhCbG9jayA6IHZlcnRleFNoYWRlci0+Z2V0SW50ZXJmYWNlQmxv
Y2tzKCkpCiAgICAgewotICAgICAgICAvLyBPbmx5ICdwYWNrZWQnIGJsb2NrcyBhcmUgYWxsb3dl
ZCB0byBiZSBjb25zaWRlcmVkIGluYWNpdmUuCisgICAgICAgIC8vIE9ubHkgJ3BhY2tlZCcgYmxv
Y2tzIGFyZSBhbGxvd2VkIHRvIGJlIGNvbnNpZGVyZWQgaW5hY3RpdmUuCiAgICAgICAgIGlmICgh
dmVydGV4QmxvY2suc3RhdGljVXNlICYmIHZlcnRleEJsb2NrLmxheW91dCA9PSBzaDo6QkxPQ0tM
QVlPVVRfUEFDS0VEKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTIyOTgsMTcgKzI2OTAs
MTcgQEAgdm9pZCBQcm9ncmFtOjpnYXRoZXJJbnRlcmZhY2VCbG9ja0luZm8oKQogICAgICAgICB2
aXNpdGVkTGlzdC5pbnNlcnQodmVydGV4QmxvY2submFtZSk7CiAgICAgfQogCi0gICAgY29uc3Qg
Z2w6OlNoYWRlciAqZnJhZ21lbnRTaGFkZXIgPSBtRGF0YS5nZXRBdHRhY2hlZEZyYWdtZW50U2hh
ZGVyKCk7CisgICAgY29uc3QgZ2w6OlNoYWRlciAqZnJhZ21lbnRTaGFkZXIgPSBtU3RhdGUuZ2V0
QXR0YWNoZWRGcmFnbWVudFNoYWRlcigpOwogCiAgICAgZm9yIChjb25zdCBzaDo6SW50ZXJmYWNl
QmxvY2sgJmZyYWdtZW50QmxvY2sgOiBmcmFnbWVudFNoYWRlci0+Z2V0SW50ZXJmYWNlQmxvY2tz
KCkpCiAgICAgewotICAgICAgICAvLyBPbmx5ICdwYWNrZWQnIGJsb2NrcyBhcmUgYWxsb3dlZCB0
byBiZSBjb25zaWRlcmVkIGluYWNpdmUuCisgICAgICAgIC8vIE9ubHkgJ3BhY2tlZCcgYmxvY2tz
IGFyZSBhbGxvd2VkIHRvIGJlIGNvbnNpZGVyZWQgaW5hY3RpdmUuCiAgICAgICAgIGlmICghZnJh
Z21lbnRCbG9jay5zdGF0aWNVc2UgJiYgZnJhZ21lbnRCbG9jay5sYXlvdXQgPT0gc2g6OkJMT0NL
TEFZT1VUX1BBQ0tFRCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmICh2aXNp
dGVkTGlzdC5jb3VudChmcmFnbWVudEJsb2NrLm5hbWUpID4gMCkKICAgICAgICAgewotICAgICAg
ICAgICAgZm9yIChnbDo6VW5pZm9ybUJsb2NrICZibG9jayA6IG1EYXRhLm1Vbmlmb3JtQmxvY2tz
KQorICAgICAgICAgICAgZm9yIChnbDo6VW5pZm9ybUJsb2NrICZibG9jayA6IG1TdGF0ZS5tVW5p
Zm9ybUJsb2NrcykKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAoYmxvY2submFt
ZSA9PSBmcmFnbWVudEJsb2NrLm5hbWUpCiAgICAgICAgICAgICAgICAgewpAQCAtMjM1NiwxNCAr
Mjc0OCwxNCBAQCB2b2lkIFByb2dyYW06OmRlZmluZVVuaWZvcm1CbG9ja01lbWJlcnMoCiAKICAg
ICAgICAgICAgIC8vIFNpbmNlIGJsb2NrIHVuaWZvcm1zIGhhdmUgbm8gbG9jYXRpb24sIHdlIGRv
bid0IG5lZWQgdG8gc3RvcmUgdGhlbSBpbiB0aGUgdW5pZm9ybQogICAgICAgICAgICAgLy8gbG9j
YXRpb25zIGxpc3QuCi0gICAgICAgICAgICBtRGF0YS5tVW5pZm9ybXMucHVzaF9iYWNrKG5ld1Vu
aWZvcm0pOworICAgICAgICAgICAgbVN0YXRlLm1Vbmlmb3Jtcy5wdXNoX2JhY2sobmV3VW5pZm9y
bSk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKIHZvaWQgUHJvZ3JhbTo6ZGVmaW5lVW5pZm9ybUJs
b2NrKGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9jayAmaW50ZXJmYWNlQmxvY2ssIEdMZW51bSBzaGFk
ZXJUeXBlKQogewotICAgIGludCBibG9ja0luZGV4ICAgPSBzdGF0aWNfY2FzdDxpbnQ+KG1EYXRh
Lm1Vbmlmb3JtQmxvY2tzLnNpemUoKSk7CisgICAgaW50IGJsb2NrSW5kZXggICA9IHN0YXRpY19j
YXN0PGludD4obVN0YXRlLm1Vbmlmb3JtQmxvY2tzLnNpemUoKSk7CiAgICAgc2l6ZV90IGJsb2Nr
U2l6ZSA9IDA7CiAKICAgICAvLyBEb24ndCBkZWZpbmUgdGhpcyBibG9jayBhdCBhbGwgaWYgaXQn
cyBub3QgYWN0aXZlIGluIHRoZSBpbXBsZW1lbnRhdGlvbi4KQEAgLTIzNzQsOSArMjc2Niw5IEBA
IHZvaWQgUHJvZ3JhbTo6ZGVmaW5lVW5pZm9ybUJsb2NrKGNvbnN0IHMKIAogICAgIC8vIFRyYWNr
IHRoZSBmaXJzdCBhbmQgbGFzdCB1bmlmb3JtIGluZGV4IHRvIGRldGVybWluZSB0aGUgcmFuZ2Ug
b2YgYWN0aXZlIHVuaWZvcm1zIGluIHRoZQogICAgIC8vIGJsb2NrLgotICAgIHNpemVfdCBmaXJz
dEJsb2NrVW5pZm9ybUluZGV4ID0gbURhdGEubVVuaWZvcm1zLnNpemUoKTsKKyAgICBzaXplX3Qg
Zmlyc3RCbG9ja1VuaWZvcm1JbmRleCA9IG1TdGF0ZS5tVW5pZm9ybXMuc2l6ZSgpOwogICAgIGRl
ZmluZVVuaWZvcm1CbG9ja01lbWJlcnMoaW50ZXJmYWNlQmxvY2suZmllbGRzLCBpbnRlcmZhY2VC
bG9jay5maWVsZFByZWZpeCgpLCBibG9ja0luZGV4KTsKLSAgICBzaXplX3QgbGFzdEJsb2NrVW5p
Zm9ybUluZGV4ID0gbURhdGEubVVuaWZvcm1zLnNpemUoKTsKKyAgICBzaXplX3QgbGFzdEJsb2Nr
VW5pZm9ybUluZGV4ID0gbVN0YXRlLm1Vbmlmb3Jtcy5zaXplKCk7CiAKICAgICBzdGQ6OnZlY3Rv
cjx1bnNpZ25lZCBpbnQ+IGJsb2NrVW5pZm9ybUluZGV4ZXM7CiAgICAgZm9yIChzaXplX3QgYmxv
Y2tVbmlmb3JtSW5kZXggPSBmaXJzdEJsb2NrVW5pZm9ybUluZGV4OwpAQCAtMjM5MiwxNCArMjc4
NCwyNSBAQCB2b2lkIFByb2dyYW06OmRlZmluZVVuaWZvcm1CbG9jayhjb25zdCBzCiAgICAgICAg
ICAgICBVbmlmb3JtQmxvY2sgYmxvY2soaW50ZXJmYWNlQmxvY2submFtZSwgdHJ1ZSwgYXJyYXlF
bGVtZW50KTsKICAgICAgICAgICAgIGJsb2NrLm1lbWJlclVuaWZvcm1JbmRleGVzID0gYmxvY2tV
bmlmb3JtSW5kZXhlczsKIAotICAgICAgICAgICAgaWYgKHNoYWRlclR5cGUgPT0gR0xfVkVSVEVY
X1NIQURFUikKKyAgICAgICAgICAgIHN3aXRjaCAoc2hhZGVyVHlwZSkKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBibG9jay52ZXJ0ZXhTdGF0aWNVc2UgPSBpbnRlcmZhY2VCbG9jay5z
dGF0aWNVc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHNoYWRlclR5cGUgPT0gR0xfRlJBR01FTlRfU0hBREVS
KTsKLSAgICAgICAgICAgICAgICBibG9jay5mcmFnbWVudFN0YXRpY1VzZSA9IGludGVyZmFjZUJs
b2NrLnN0YXRpY1VzZTsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1ZFUlRFWF9TSEFERVI6Cisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBibG9jay52ZXJ0ZXhTdGF0aWNV
c2UgPSBpbnRlcmZhY2VCbG9jay5zdGF0aWNVc2U7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEdMX0ZSQUdNRU5UX1NI
QURFUjoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGJsb2NrLmZyYWdt
ZW50U3RhdGljVXNlID0gaW50ZXJmYWNlQmxvY2suc3RhdGljVXNlOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBHTF9D
T01QVVRFX1NIQURFUjoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGJs
b2NrLmNvbXB1dGVTdGF0aWNVc2UgPSBpbnRlcmZhY2VCbG9jay5zdGF0aWNVc2U7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBEZXRlcm1pbmUgaWYgd2UgY2FuIGV2
ZXIgaGF2ZSBhbiBpbmFjdGl2ZSBhcnJheSBlbGVtZW50IGJsb2NrLgpAQCAtMjQxMSw3ICsyODE0
LDcgQEAgdm9pZCBQcm9ncmFtOjpkZWZpbmVVbmlmb3JtQmxvY2soY29uc3QgcwogCiAgICAgICAg
ICAgICBBU1NFUlQoYmxvY2tFbGVtZW50U2l6ZSA9PSBibG9ja1NpemUpOwogICAgICAgICAgICAg
YmxvY2suZGF0YVNpemUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGJsb2NrRWxlbWVudFNp
emUpOwotICAgICAgICAgICAgbURhdGEubVVuaWZvcm1CbG9ja3MucHVzaF9iYWNrKGJsb2NrKTsK
KyAgICAgICAgICAgIG1TdGF0ZS5tVW5pZm9ybUJsb2Nrcy5wdXNoX2JhY2soYmxvY2spOwogICAg
ICAgICB9CiAgICAgfQogICAgIGVsc2UKQEAgLTI0MTksMjYgKzI4MjIsMzcgQEAgdm9pZCBQcm9n
cmFtOjpkZWZpbmVVbmlmb3JtQmxvY2soY29uc3QgcwogICAgICAgICBVbmlmb3JtQmxvY2sgYmxv
Y2soaW50ZXJmYWNlQmxvY2submFtZSwgZmFsc2UsIDApOwogICAgICAgICBibG9jay5tZW1iZXJV
bmlmb3JtSW5kZXhlcyA9IGJsb2NrVW5pZm9ybUluZGV4ZXM7CiAKLSAgICAgICAgaWYgKHNoYWRl
clR5cGUgPT0gR0xfVkVSVEVYX1NIQURFUikKLSAgICAgICAgewotICAgICAgICAgICAgYmxvY2su
dmVydGV4U3RhdGljVXNlID0gaW50ZXJmYWNlQmxvY2suc3RhdGljVXNlOwotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UKKyAgICAgICAgc3dpdGNoIChzaGFkZXJUeXBlKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBBU1NFUlQoc2hhZGVyVHlwZSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpOwotICAgICAg
ICAgICAgYmxvY2suZnJhZ21lbnRTdGF0aWNVc2UgPSBpbnRlcmZhY2VCbG9jay5zdGF0aWNVc2U7
CisgICAgICAgICAgICBjYXNlIEdMX1ZFUlRFWF9TSEFERVI6CisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgYmxvY2sudmVydGV4U3RhdGljVXNlID0gaW50ZXJmYWNlQmxvY2suc3RhdGlj
VXNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
Y2FzZSBHTF9GUkFHTUVOVF9TSEFERVI6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
YmxvY2suZnJhZ21lbnRTdGF0aWNVc2UgPSBpbnRlcmZhY2VCbG9jay5zdGF0aWNVc2U7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIEdMX0NP
TVBVVEVfU0hBREVSOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGJsb2NrLmNvbXB1
dGVTdGF0aWNVc2UgPSBpbnRlcmZhY2VCbG9jay5zdGF0aWNVc2U7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgIH0KIAogICAgICAgICBibG9jay5kYXRhU2l6ZSA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oYmxvY2tTaXplKTsKLSAgICAgICAgbURhdGEubVVu
aWZvcm1CbG9ja3MucHVzaF9iYWNrKGJsb2NrKTsKKyAgICAgICAgbVN0YXRlLm1Vbmlmb3JtQmxv
Y2tzLnB1c2hfYmFjayhibG9jayk7CiAgICAgfQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
IHZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybUludGVybmFsKEdMaW50IGxvY2F0aW9uLCBHTHNpemVp
IGNvdW50LCBjb25zdCBUICp2KQogewotICAgIGNvbnN0IFZhcmlhYmxlTG9jYXRpb24gJmxvY2F0
aW9uSW5mbyA9IG1EYXRhLm1Vbmlmb3JtTG9jYXRpb25zW2xvY2F0aW9uXTsKLSAgICBMaW5rZWRV
bmlmb3JtICpsaW5rZWRVbmlmb3JtICAgICAgICAgPSAmbURhdGEubVVuaWZvcm1zW2xvY2F0aW9u
SW5mby5pbmRleF07CisgICAgY29uc3QgVmFyaWFibGVMb2NhdGlvbiAmbG9jYXRpb25JbmZvID0g
bVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zW2xvY2F0aW9uXTsKKyAgICBMaW5rZWRVbmlmb3JtICps
aW5rZWRVbmlmb3JtICAgICAgICAgPSAmbVN0YXRlLm1Vbmlmb3Jtc1tsb2NhdGlvbkluZm8uaW5k
ZXhdOwogICAgIHVpbnQ4X3QgKmRlc3RQb2ludGVyICAgICAgICAgICAgICAgICA9IGxpbmtlZFVu
aWZvcm0tPmdldERhdGFQdHJUb0VsZW1lbnQobG9jYXRpb25JbmZvLmVsZW1lbnQpOwogCiAgICAg
aWYgKFZhcmlhYmxlQ29tcG9uZW50VHlwZShsaW5rZWRVbmlmb3JtLT50eXBlKSA9PSBHTF9CT09M
KQpAQCAtMjQ3Niw4ICsyODkwLDggQEAgdm9pZCBQcm9ncmFtOjpzZXRNYXRyaXhVbmlmb3JtSW50
ZXJuYWwoRwogICAgIH0KIAogICAgIC8vIFBlcmZvcm0gYSB0cmFuc3Bvc2luZyBjb3B5LgotICAg
IGNvbnN0IFZhcmlhYmxlTG9jYXRpb24gJmxvY2F0aW9uSW5mbyA9IG1EYXRhLm1Vbmlmb3JtTG9j
YXRpb25zW2xvY2F0aW9uXTsKLSAgICBMaW5rZWRVbmlmb3JtICpsaW5rZWRVbmlmb3JtICAgICAg
ICAgPSAmbURhdGEubVVuaWZvcm1zW2xvY2F0aW9uSW5mby5pbmRleF07CisgICAgY29uc3QgVmFy
aWFibGVMb2NhdGlvbiAmbG9jYXRpb25JbmZvID0gbVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zW2xv
Y2F0aW9uXTsKKyAgICBMaW5rZWRVbmlmb3JtICpsaW5rZWRVbmlmb3JtICAgICAgICAgPSAmbVN0
YXRlLm1Vbmlmb3Jtc1tsb2NhdGlvbkluZm8uaW5kZXhdOwogICAgIFQgKmRlc3RQdHIgPSByZWlu
dGVycHJldF9jYXN0PFQgKj4obGlua2VkVW5pZm9ybS0+Z2V0RGF0YVB0clRvRWxlbWVudChsb2Nh
dGlvbkluZm8uZWxlbWVudCkpOwogICAgIGZvciAoR0xzaXplaSBlbGVtZW50ID0gMDsgZWxlbWVu
dCA8IGNvdW50OyArK2VsZW1lbnQpCiAgICAgewpAQCAtMjQ5MywxNSArMjkwNywxMSBAQCB2b2lk
IFByb2dyYW06OnNldE1hdHJpeFVuaWZvcm1JbnRlcm5hbChHCiAgICAgfQogfQogCi1leHRlcm4g
dGVtcGxhdGUgR0xlbnVtIEdMVHlwZVRvR0xlbnVtPGZsb2F0Pjo6dmFsdWU7Ci1leHRlcm4gdGVt
cGxhdGUgR0xlbnVtIEdMVHlwZVRvR0xlbnVtPGludD46OnZhbHVlOwotZXh0ZXJuIHRlbXBsYXRl
IEdMZW51bSBHTFR5cGVUb0dMZW51bTx1bnNpZ25lZCBpbnQ+Ojp2YWx1ZTsKLQogdGVtcGxhdGUg
PHR5cGVuYW1lIERlc3RUPgogdm9pZCBQcm9ncmFtOjpnZXRVbmlmb3JtSW50ZXJuYWwoR0xpbnQg
bG9jYXRpb24sIERlc3RUICpkYXRhT3V0KSBjb25zdAogewotICAgIGNvbnN0IFZhcmlhYmxlTG9j
YXRpb24gJmxvY2F0aW9uSW5mbyA9IG1EYXRhLm1Vbmlmb3JtTG9jYXRpb25zW2xvY2F0aW9uXTsK
LSAgICBjb25zdCBMaW5rZWRVbmlmb3JtICZ1bmlmb3JtICAgICAgICAgPSBtRGF0YS5tVW5pZm9y
bXNbbG9jYXRpb25JbmZvLmluZGV4XTsKKyAgICBjb25zdCBWYXJpYWJsZUxvY2F0aW9uICZsb2Nh
dGlvbkluZm8gPSBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnNbbG9jYXRpb25dOworICAgIGNvbnN0
IExpbmtlZFVuaWZvcm0gJnVuaWZvcm0gICAgICAgICA9IG1TdGF0ZS5tVW5pZm9ybXNbbG9jYXRp
b25JbmZvLmluZGV4XTsKIAogICAgIGNvbnN0IHVpbnQ4X3QgKnNyY1BvaW50ZXIgPSB1bmlmb3Jt
LmdldERhdGFQdHJUb0VsZW1lbnQobG9jYXRpb25JbmZvLmVsZW1lbnQpOwogCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUHJvZ3JhbS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Qcm9ncmFtLmgJKHJldmlzaW9u
IDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Qcm9ncmFt
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIHJ4CiB7Ci1j
bGFzcyBJbXBsRmFjdG9yeTsKK2NsYXNzIEdMSW1wbEZhY3Rvcnk7CiBjbGFzcyBQcm9ncmFtSW1w
bDsKIHN0cnVjdCBUcmFuc2xhdGVkQXR0cmlidXRlOwogfQpAQCAtMzgsMTEgKzM4LDEwIEBAIHN0
cnVjdCBUcmFuc2xhdGVkQXR0cmlidXRlOwogbmFtZXNwYWNlIGdsCiB7CiBzdHJ1Y3QgQ2FwczsK
LXN0cnVjdCBEYXRhOworY2xhc3MgQ29udGV4dFN0YXRlOwogY2xhc3MgUmVzb3VyY2VNYW5hZ2Vy
OwogY2xhc3MgU2hhZGVyOwogY2xhc3MgSW5mb0xvZzsKLWNsYXNzIEF0dHJpYnV0ZUJpbmRpbmdz
OwogY2xhc3MgQnVmZmVyOwogY2xhc3MgRnJhbWVidWZmZXI7CiBzdHJ1Y3QgVW5pZm9ybUJsb2Nr
OwpAQCAtNTAsMTkgKzQ5LDYgQEAgc3RydWN0IExpbmtlZFVuaWZvcm07CiAKIGV4dGVybiBjb25z
dCBjaGFyICogY29uc3QgZ19mYWtlcGF0aDsKIAotY2xhc3MgQXR0cmlidXRlQmluZGluZ3MKLXsK
LSAgcHVibGljOgotICAgIEF0dHJpYnV0ZUJpbmRpbmdzKCk7Ci0gICAgfkF0dHJpYnV0ZUJpbmRp
bmdzKCk7Ci0KLSAgICB2b2lkIGJpbmRBdHRyaWJ1dGVMb2NhdGlvbihHTHVpbnQgaW5kZXgsIGNv
bnN0IGNoYXIgKm5hbWUpOwotICAgIGludCBnZXRBdHRyaWJ1dGVCaW5kaW5nKGNvbnN0IHN0ZDo6
c3RyaW5nICZuYW1lKSBjb25zdDsKLQotICBwcml2YXRlOgotICAgIHN0ZDo6c2V0PHN0ZDo6c3Ry
aW5nPiBtQXR0cmlidXRlQmluZGluZ1tNQVhfVkVSVEVYX0FUVFJJQlNdOwotfTsKLQogY2xhc3Mg
SW5mb0xvZyA6IGFuZ2xlOjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6CkBAIC0xNDIsODkgKzEy
OCwxMTIgQEAgc3RydWN0IFZhcmlhYmxlTG9jYXRpb24KICAgICBzdGQ6OnN0cmluZyBuYW1lOwog
ICAgIHVuc2lnbmVkIGludCBlbGVtZW50OwogICAgIHVuc2lnbmVkIGludCBpbmRleDsKKworICAg
IC8vIElmIHRoaXMgaXMgYSB2YWxpZCB1bmlmb3JtIGxvY2F0aW9uCisgICAgYm9vbCB1c2VkOwor
CisgICAgLy8gSWYgdGhpcyBsb2NhdGlvbiB3YXMgYm91bmQgdG8gYW4gdW5yZWZlcmVuY2VkIHVu
aWZvcm0uICBTZXR0aW5nIGRhdGEgb24gdGhpcyB1bmlmb3JtIGlzIGEKKyAgICAvLyBuby1vcC4K
KyAgICBib29sIGlnbm9yZWQ7CiB9OwogCi1jbGFzcyBQcm9ncmFtIGZpbmFsIDogYW5nbGU6Ok5v
bkNvcHlhYmxlLCBwdWJsaWMgTGFiZWxlZE9iamVjdAorLy8gSW5mb3JtYXRpb24gYWJvdXQgYSB2
YXJpYWJsZSBiaW5kaW5nLgorLy8gQ3VycmVudGx5IHVzZWQgYnkgQ0hST01JVU1fcGF0aF9yZW5k
ZXJpbmcKK3N0cnVjdCBCaW5kaW5nSW5mbworeworICAgIC8vIFRoZSB0eXBlIG9mIGJpbmRpbmcs
IGZvciBleGFtcGxlIEdMX0ZMT0FUX1ZFQzMuCisgICAgLy8gVGhpcyBjYW4gYmUgR0xfTk9ORSBp
ZiB0aGUgdmFyaWFibGUgaXMgb3B0aW1pemVkIGF3YXkuCisgICAgR0xlbnVtIHR5cGU7CisKKyAg
ICAvLyBUaGlzIGlzIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSBpbgorICAgIC8vIHRoZSB0cmFu
c2xhdGVkIHNoYWRlciBwcm9ncmFtLiBOb3RlIHRoYXQKKyAgICAvLyB0aGlzIGNhbiBiZSBlbXB0
eSBpbiB0aGUgY2FzZSB3aGVyZSB0aGUKKyAgICAvLyB2YXJpYWJsZSBoYXMgYmVlbiBvcHRpbWl6
ZWQgYXdheS4KKyAgICBzdGQ6OnN0cmluZyBuYW1lOworCisgICAgLy8gVHJ1ZSBpZiB0aGUgYmlu
ZGluZyBpcyB2YWxpZCwgb3RoZXJ3aXNlIGZhbHNlLgorICAgIGJvb2wgdmFsaWQ7Cit9OworCitj
bGFzcyBQcm9ncmFtU3RhdGUgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKIHsKICAgcHVibGlj
OgotICAgIGNsYXNzIERhdGEgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKLSAgICB7Ci0gICAg
ICBwdWJsaWM6Ci0gICAgICAgIERhdGEoKTsKLSAgICAgICAgfkRhdGEoKTsKKyAgICBQcm9ncmFt
U3RhdGUoKTsKKyAgICB+UHJvZ3JhbVN0YXRlKCk7CiAKLSAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJmdldExhYmVsKCk7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmdldExhYmVsKCk7CiAKLSAg
ICAgICAgY29uc3QgU2hhZGVyICpnZXRBdHRhY2hlZFZlcnRleFNoYWRlcigpIGNvbnN0IHsgcmV0
dXJuIG1BdHRhY2hlZFZlcnRleFNoYWRlcjsgfQotICAgICAgICBjb25zdCBTaGFkZXIgKmdldEF0
dGFjaGVkRnJhZ21lbnRTaGFkZXIoKSBjb25zdCB7IHJldHVybiBtQXR0YWNoZWRGcmFnbWVudFNo
YWRlcjsgfQotICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gJmdldFRyYW5z
Zm9ybUZlZWRiYWNrVmFyeWluZ05hbWVzKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIG1UcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdOYW1lczsKLSAgICAgICAgfQotICAgICAg
ICBHTGludCBnZXRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUoKSBjb25zdCB7IHJldHVybiBt
VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlOyB9Ci0gICAgICAgIEdMdWludCBnZXRVbmlmb3Jt
QmxvY2tCaW5kaW5nKEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCkgY29uc3QKLSAgICAgICAgewot
ICAgICAgICAgICAgQVNTRVJUKHVuaWZvcm1CbG9ja0luZGV4IDwgSU1QTEVNRU5UQVRJT05fTUFY
X0NPTUJJTkVEX1NIQURFUl9VTklGT1JNX0JVRkZFUlMpOwotICAgICAgICAgICAgcmV0dXJuIG1V
bmlmb3JtQmxvY2tCaW5kaW5nc1t1bmlmb3JtQmxvY2tJbmRleF07Ci0gICAgICAgIH0KLSAgICAg
ICAgY29uc3QgVW5pZm9ybUJsb2NrQmluZGluZ01hc2sgJmdldEFjdGl2ZVVuaWZvcm1CbG9ja0Jp
bmRpbmdzTWFzaygpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtQWN0aXZl
VW5pZm9ybUJsb2NrQmluZGluZ3M7Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3Qgc3RkOjp2ZWN0
b3I8c2g6OkF0dHJpYnV0ZT4gJmdldEF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBtQXR0cmli
dXRlczsgfQotICAgICAgICBjb25zdCBBdHRyaWJ1dGVzTWFzayAmZ2V0QWN0aXZlQXR0cmliTG9j
YXRpb25zTWFzaygpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtQWN0aXZl
QXR0cmliTG9jYXRpb25zTWFzazsKLSAgICAgICAgfQotICAgICAgICBjb25zdCBzdGQ6Om1hcDxp
bnQsIFZhcmlhYmxlTG9jYXRpb24+ICZnZXRPdXRwdXRWYXJpYWJsZXMoKSBjb25zdAotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gbU91dHB1dFZhcmlhYmxlczsKLSAgICAgICAgfQotICAg
ICAgICBjb25zdCBzdGQ6OnZlY3RvcjxMaW5rZWRVbmlmb3JtPiAmZ2V0VW5pZm9ybXMoKSBjb25z
dCB7IHJldHVybiBtVW5pZm9ybXM7IH0KLSAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8VmFyaWFi
bGVMb2NhdGlvbj4gJmdldFVuaWZvcm1Mb2NhdGlvbnMoKSBjb25zdAotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gbVVuaWZvcm1Mb2NhdGlvbnM7Ci0gICAgICAgIH0KLSAgICAgICAgY29u
c3Qgc3RkOjp2ZWN0b3I8VW5pZm9ybUJsb2NrPiAmZ2V0VW5pZm9ybUJsb2NrcygpIGNvbnN0IHsg
cmV0dXJuIG1Vbmlmb3JtQmxvY2tzOyB9CisgICAgY29uc3QgU2hhZGVyICpnZXRBdHRhY2hlZFZl
cnRleFNoYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1BdHRhY2hlZFZlcnRleFNoYWRlcjsgfQorICAg
IGNvbnN0IFNoYWRlciAqZ2V0QXR0YWNoZWRGcmFnbWVudFNoYWRlcigpIGNvbnN0IHsgcmV0dXJu
IG1BdHRhY2hlZEZyYWdtZW50U2hhZGVyOyB9CisgICAgY29uc3QgU2hhZGVyICpnZXRBdHRhY2hl
ZENvbXB1dGVTaGFkZXIoKSBjb25zdCB7IHJldHVybiBtQXR0YWNoZWRDb21wdXRlU2hhZGVyOyB9
CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+ICZnZXRUcmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmdOYW1lcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbVRyYW5zZm9ybUZl
ZWRiYWNrVmFyeWluZ05hbWVzOworICAgIH0KKyAgICBHTGludCBnZXRUcmFuc2Zvcm1GZWVkYmFj
a0J1ZmZlck1vZGUoKSBjb25zdCB7IHJldHVybiBtVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2Rl
OyB9CisgICAgR0x1aW50IGdldFVuaWZvcm1CbG9ja0JpbmRpbmcoR0x1aW50IHVuaWZvcm1CbG9j
a0luZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKHVuaWZvcm1CbG9ja0luZGV4IDwg
SU1QTEVNRU5UQVRJT05fTUFYX0NPTUJJTkVEX1NIQURFUl9VTklGT1JNX0JVRkZFUlMpOworICAg
ICAgICByZXR1cm4gbVVuaWZvcm1CbG9ja0JpbmRpbmdzW3VuaWZvcm1CbG9ja0luZGV4XTsKKyAg
ICB9CisgICAgY29uc3QgVW5pZm9ybUJsb2NrQmluZGluZ01hc2sgJmdldEFjdGl2ZVVuaWZvcm1C
bG9ja0JpbmRpbmdzTWFzaygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbUFjdGl2ZVVu
aWZvcm1CbG9ja0JpbmRpbmdzOworICAgIH0KKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6QXR0
cmlidXRlPiAmZ2V0QXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1BdHRyaWJ1dGVzOyB9Cisg
ICAgY29uc3QgQXR0cmlidXRlc01hc2sgJmdldEFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2soKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1BY3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrOwor
ICAgIH0KKyAgICBjb25zdCBzdGQ6Om1hcDxpbnQsIFZhcmlhYmxlTG9jYXRpb24+ICZnZXRPdXRw
dXRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtT3V0cHV0VmFyaWFibGVzOyB9CisgICAgY29u
c3Qgc3RkOjp2ZWN0b3I8TGlua2VkVW5pZm9ybT4gJmdldFVuaWZvcm1zKCkgY29uc3QgeyByZXR1
cm4gbVVuaWZvcm1zOyB9CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8VmFyaWFibGVMb2NhdGlvbj4g
JmdldFVuaWZvcm1Mb2NhdGlvbnMoKSBjb25zdCB7IHJldHVybiBtVW5pZm9ybUxvY2F0aW9uczsg
fQorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFVuaWZvcm1CbG9jaz4gJmdldFVuaWZvcm1CbG9ja3Mo
KSBjb25zdCB7IHJldHVybiBtVW5pZm9ybUJsb2NrczsgfQogCi0gICAgICAgIGNvbnN0IExpbmtl
ZFVuaWZvcm0gKmdldFVuaWZvcm1CeU5hbWUoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0
OwotICAgICAgICBHTGludCBnZXRVbmlmb3JtTG9jYXRpb24oY29uc3Qgc3RkOjpzdHJpbmcgJm5h
bWUpIGNvbnN0OwotICAgICAgICBHTHVpbnQgZ2V0VW5pZm9ybUluZGV4KGNvbnN0IHN0ZDo6c3Ry
aW5nICZuYW1lKSBjb25zdDsKKyAgICBjb25zdCBMaW5rZWRVbmlmb3JtICpnZXRVbmlmb3JtQnlO
YW1lKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25zdDsKKyAgICBHTGludCBnZXRVbmlmb3Jt
TG9jYXRpb24oY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0OworICAgIEdMdWludCBnZXRV
bmlmb3JtSW5kZXgoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0OwogCi0gICAgICBwcml2
YXRlOgotICAgICAgICBmcmllbmQgY2xhc3MgUHJvZ3JhbTsKKyAgcHJpdmF0ZToKKyAgICBmcmll
bmQgY2xhc3MgUHJvZ3JhbTsKIAotICAgICAgICBzdGQ6OnN0cmluZyBtTGFiZWw7CisgICAgc3Rk
OjpzdHJpbmcgbUxhYmVsOwogCi0gICAgICAgIFNoYWRlciAqbUF0dGFjaGVkRnJhZ21lbnRTaGFk
ZXI7Ci0gICAgICAgIFNoYWRlciAqbUF0dGFjaGVkVmVydGV4U2hhZGVyOworICAgIHNoOjpXb3Jr
R3JvdXBTaXplIG1Db21wdXRlU2hhZGVyTG9jYWxTaXplOwogCi0gICAgICAgIHN0ZDo6dmVjdG9y
PHN0ZDo6c3RyaW5nPiBtVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nTmFtZXM7Ci0gICAgICAgIHN0
ZDo6dmVjdG9yPHNoOjpWYXJ5aW5nPiBtVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nVmFyczsKLSAg
ICAgICAgR0xlbnVtIG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGU7CisgICAgU2hhZGVyICpt
QXR0YWNoZWRGcmFnbWVudFNoYWRlcjsKKyAgICBTaGFkZXIgKm1BdHRhY2hlZFZlcnRleFNoYWRl
cjsKKyAgICBTaGFkZXIgKm1BdHRhY2hlZENvbXB1dGVTaGFkZXI7CiAKLSAgICAgICAgR0x1aW50
IG1Vbmlmb3JtQmxvY2tCaW5kaW5nc1tJTVBMRU1FTlRBVElPTl9NQVhfQ09NQklORURfU0hBREVS
X1VOSUZPUk1fQlVGRkVSU107Ci0gICAgICAgIFVuaWZvcm1CbG9ja0JpbmRpbmdNYXNrIG1BY3Rp
dmVVbmlmb3JtQmxvY2tCaW5kaW5nczsKKyAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbVRy
YW5zZm9ybUZlZWRiYWNrVmFyeWluZ05hbWVzOworICAgIHN0ZDo6dmVjdG9yPHNoOjpWYXJ5aW5n
PiBtVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nVmFyczsKKyAgICBHTGVudW0gbVRyYW5zZm9ybUZl
ZWRiYWNrQnVmZmVyTW9kZTsKIAotICAgICAgICBzdGQ6OnZlY3RvcjxzaDo6QXR0cmlidXRlPiBt
QXR0cmlidXRlczsKLSAgICAgICAgc3RkOjpiaXRzZXQ8TUFYX1ZFUlRFWF9BVFRSSUJTPiBtQWN0
aXZlQXR0cmliTG9jYXRpb25zTWFzazsKKyAgICBHTHVpbnQgbVVuaWZvcm1CbG9ja0JpbmRpbmdz
W0lNUExFTUVOVEFUSU9OX01BWF9DT01CSU5FRF9TSEFERVJfVU5JRk9STV9CVUZGRVJTXTsKKyAg
ICBVbmlmb3JtQmxvY2tCaW5kaW5nTWFzayBtQWN0aXZlVW5pZm9ybUJsb2NrQmluZGluZ3M7CiAK
LSAgICAgICAgLy8gVW5pZm9ybXMgYXJlIHNvcnRlZCBpbiBvcmRlcjoKLSAgICAgICAgLy8gIDEu
IE5vbi1zYW1wbGVyIHVuaWZvcm1zCi0gICAgICAgIC8vICAyLiBTYW1wbGVyIHVuaWZvcm1zCi0g
ICAgICAgIC8vICAzLiBVbmlmb3JtIGJsb2NrIHVuaWZvcm1zCi0gICAgICAgIC8vIFRoaXMgbWFr
ZXMgc2FtcGxlciB2YWxpZGF0aW9uIGVhc2llciwgc2luY2Ugd2UgZG9uJ3QgbmVlZCBhIHNlcGFy
YXRlIGxpc3QuCi0gICAgICAgIHN0ZDo6dmVjdG9yPExpbmtlZFVuaWZvcm0+IG1Vbmlmb3JtczsK
LSAgICAgICAgc3RkOjp2ZWN0b3I8VmFyaWFibGVMb2NhdGlvbj4gbVVuaWZvcm1Mb2NhdGlvbnM7
Ci0gICAgICAgIHN0ZDo6dmVjdG9yPFVuaWZvcm1CbG9jaz4gbVVuaWZvcm1CbG9ja3M7CisgICAg
c3RkOjp2ZWN0b3I8c2g6OkF0dHJpYnV0ZT4gbUF0dHJpYnV0ZXM7CisgICAgc3RkOjpiaXRzZXQ8
TUFYX1ZFUlRFWF9BVFRSSUJTPiBtQWN0aXZlQXR0cmliTG9jYXRpb25zTWFzazsKIAotICAgICAg
ICAvLyBUT0RPKGptYWRpbGwpOiB1c2UgdW5vcmRlcmVkL2hhc2ggbWFwIHdoZW4gYXZhaWxhYmxl
Ci0gICAgICAgIHN0ZDo6bWFwPGludCwgVmFyaWFibGVMb2NhdGlvbj4gbU91dHB1dFZhcmlhYmxl
czsKKyAgICAvLyBVbmlmb3JtcyBhcmUgc29ydGVkIGluIG9yZGVyOgorICAgIC8vICAxLiBOb24t
c2FtcGxlciB1bmlmb3JtcworICAgIC8vICAyLiBTYW1wbGVyIHVuaWZvcm1zCisgICAgLy8gIDMu
IFVuaWZvcm0gYmxvY2sgdW5pZm9ybXMKKyAgICAvLyBUaGlzIG1ha2VzIHNhbXBsZXIgdmFsaWRh
dGlvbiBlYXNpZXIsIHNpbmNlIHdlIGRvbid0IG5lZWQgYSBzZXBhcmF0ZSBsaXN0LgorICAgIHN0
ZDo6dmVjdG9yPExpbmtlZFVuaWZvcm0+IG1Vbmlmb3JtczsKKyAgICBzdGQ6OnZlY3RvcjxWYXJp
YWJsZUxvY2F0aW9uPiBtVW5pZm9ybUxvY2F0aW9uczsKKyAgICBzdGQ6OnZlY3RvcjxVbmlmb3Jt
QmxvY2s+IG1Vbmlmb3JtQmxvY2tzOwogCi0gICAgICAgIGJvb2wgbUJpbmFyeVJldHJpZXZlYWJs
ZUhpbnQ7Ci0gICAgfTsKKyAgICAvLyBUT0RPKGptYWRpbGwpOiB1c2UgdW5vcmRlcmVkL2hhc2gg
bWFwIHdoZW4gYXZhaWxhYmxlCisgICAgc3RkOjptYXA8aW50LCBWYXJpYWJsZUxvY2F0aW9uPiBt
T3V0cHV0VmFyaWFibGVzOwogCi0gICAgUHJvZ3JhbShyeDo6SW1wbEZhY3RvcnkgKmZhY3Rvcnks
IFJlc291cmNlTWFuYWdlciAqbWFuYWdlciwgR0x1aW50IGhhbmRsZSk7CisgICAgYm9vbCBtQmlu
YXJ5UmV0cmlldmVhYmxlSGludDsKK307CisKK2NsYXNzIFByb2dyYW0gZmluYWwgOiBhbmdsZTo6
Tm9uQ29weWFibGUsIHB1YmxpYyBMYWJlbGVkT2JqZWN0Cit7CisgIHB1YmxpYzoKKyAgICBQcm9n
cmFtKHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5LCBSZXNvdXJjZU1hbmFnZXIgKm1hbmFnZXIs
IEdMdWludCBoYW5kbGUpOwogICAgIH5Qcm9ncmFtKCk7CiAKICAgICBHTHVpbnQgaWQoKSBjb25z
dCB7IHJldHVybiBtSGFuZGxlOyB9CkBAIC0yMzIsMTYgKzI0MSwyOCBAQCBjbGFzcyBQcm9ncmFt
IGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgdm9pZCBzZXRMYWJlbChjb25zdCBzdGQ6
OnN0cmluZyAmbGFiZWwpIG92ZXJyaWRlOwogICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZnZXRMYWJl
bCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgcng6OlByb2dyYW1JbXBsICpnZXRJbXBsZW1lbnRh
dGlvbigpIHsgcmV0dXJuIG1Qcm9ncmFtOyB9Ci0gICAgY29uc3Qgcng6OlByb2dyYW1JbXBsICpn
ZXRJbXBsZW1lbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1Qcm9ncmFtOyB9CisgICAgcng6OlBy
b2dyYW1JbXBsICpnZXRJbXBsZW1lbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1Qcm9ncmFtOyB9
CiAKLSAgICBib29sIGF0dGFjaFNoYWRlcihTaGFkZXIgKnNoYWRlcik7CisgICAgdm9pZCBhdHRh
Y2hTaGFkZXIoU2hhZGVyICpzaGFkZXIpOwogICAgIGJvb2wgZGV0YWNoU2hhZGVyKFNoYWRlciAq
c2hhZGVyKTsKICAgICBpbnQgZ2V0QXR0YWNoZWRTaGFkZXJzQ291bnQoKSBjb25zdDsKIAorICAg
IGNvbnN0IFNoYWRlciAqZ2V0QXR0YWNoZWRWZXJ0ZXhTaGFkZXIoKSBjb25zdCB7IHJldHVybiBt
U3RhdGUubUF0dGFjaGVkVmVydGV4U2hhZGVyOyB9CisgICAgY29uc3QgU2hhZGVyICpnZXRBdHRh
Y2hlZEZyYWdtZW50U2hhZGVyKCkgY29uc3QgeyByZXR1cm4gbVN0YXRlLm1BdHRhY2hlZEZyYWdt
ZW50U2hhZGVyOyB9CisgICAgY29uc3QgU2hhZGVyICpnZXRBdHRhY2hlZENvbXB1dGVTaGFkZXIo
KSBjb25zdCB7IHJldHVybiBtU3RhdGUubUF0dGFjaGVkQ29tcHV0ZVNoYWRlcjsgfQorCiAgICAg
dm9pZCBiaW5kQXR0cmlidXRlTG9jYXRpb24oR0x1aW50IGluZGV4LCBjb25zdCBjaGFyICpuYW1l
KTsKKyAgICB2b2lkIGJpbmRVbmlmb3JtTG9jYXRpb24oR0x1aW50IGluZGV4LCBjb25zdCBjaGFy
ICpuYW1lKTsKKworICAgIC8vIENIUk9NSVVNX3BhdGhfcmVuZGVyaW5nCisgICAgQmluZGluZ0lu
Zm8gZ2V0RnJhZ21lbnRJbnB1dEJpbmRpbmdJbmZvKEdMaW50IGluZGV4KSBjb25zdDsKKyAgICB2
b2lkIGJpbmRGcmFnbWVudElucHV0TG9jYXRpb24oR0xpbnQgaW5kZXgsIGNvbnN0IGNoYXIgKm5h
bWUpOworICAgIHZvaWQgcGF0aEZyYWdtZW50SW5wdXRHZW4oR0xpbnQgaW5kZXgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZ2VuTW9kZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGNvbXBvbmVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICpjb2VmZnMpOwogCi0gICAgRXJyb3IgbGluayhjb25zdCBnbDo6
RGF0YSAmZGF0YSk7CisgICAgRXJyb3IgbGluayhjb25zdCBDb250ZXh0U3RhdGUgJmRhdGEpOwog
ICAgIGJvb2wgaXNMaW5rZWQoKSBjb25zdDsKIAogICAgIEVycm9yIGxvYWRCaW5hcnkoR0xlbnVt
IGJpbmFyeUZvcm1hdCwgY29uc3Qgdm9pZCAqYmluYXJ5LCBHTHNpemVpIGxlbmd0aCk7CkBAIC0y
NjAsNyArMjgxLDcgQEAgY2xhc3MgUHJvZ3JhbSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQog
ICAgIHZvaWQgZ2V0QWN0aXZlQXR0cmlidXRlKEdMdWludCBpbmRleCwgR0xzaXplaSBidWZzaXpl
LCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpzaXplLCBHTGVudW0gKnR5cGUsIEdMY2hhciAqbmFt
ZSk7CiAgICAgR0xpbnQgZ2V0QWN0aXZlQXR0cmlidXRlQ291bnQoKSBjb25zdDsKICAgICBHTGlu
dCBnZXRBY3RpdmVBdHRyaWJ1dGVNYXhMZW5ndGgoKSBjb25zdDsKLSAgICBjb25zdCBzdGQ6OnZl
Y3RvcjxzaDo6QXR0cmlidXRlPiAmZ2V0QXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1EYXRh
Lm1BdHRyaWJ1dGVzOyB9CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OkF0dHJpYnV0ZT4gJmdl
dEF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBtU3RhdGUubUF0dHJpYnV0ZXM7IH0KIAogICAg
IEdMaW50IGdldEZyYWdEYXRhTG9jYXRpb24oY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0
OwogCkBAIC0yNzQsNiArMjk1LDcgQEAgY2xhc3MgUHJvZ3JhbSBmaW5hbCA6IGFuZ2xlOjpOb25D
b3B5YWJsZQogICAgIEdMaW50IGdldEFjdGl2ZVVuaWZvcm1NYXhMZW5ndGgoKSBjb25zdDsKICAg
ICBHTGludCBnZXRBY3RpdmVVbmlmb3JtaShHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSkgY29u
c3Q7CiAgICAgYm9vbCBpc1ZhbGlkVW5pZm9ybUxvY2F0aW9uKEdMaW50IGxvY2F0aW9uKSBjb25z
dDsKKyAgICBib29sIGlzSWdub3JlZFVuaWZvcm1Mb2NhdGlvbihHTGludCBsb2NhdGlvbikgY29u
c3Q7CiAgICAgY29uc3QgTGlua2VkVW5pZm9ybSAmZ2V0VW5pZm9ybUJ5TG9jYXRpb24oR0xpbnQg
bG9jYXRpb24pIGNvbnN0OwogCiAgICAgR0xpbnQgZ2V0VW5pZm9ybUxvY2F0aW9uKGNvbnN0IHN0
ZDo6c3RyaW5nICZuYW1lKSBjb25zdDsKQEAgLTMwNSw3ICszMjcsNiBAQCBjbGFzcyBQcm9ncmFt
IGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgdm9pZCBnZXRVbmlmb3JtdWl2KEdMaW50
IGxvY2F0aW9uLCBHTHVpbnQgKnBhcmFtcykgY29uc3Q7CiAKICAgICB2b2lkIGdldEFjdGl2ZVVu
aWZvcm1CbG9ja05hbWUoR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHTHNpemVpIGJ1ZlNpemUs
IEdMc2l6ZWkgKmxlbmd0aCwgR0xjaGFyICp1bmlmb3JtQmxvY2tOYW1lKSBjb25zdDsKLSAgICB2
b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0xl
bnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKSBjb25zdDsKICAgICBHTHVpbnQgZ2V0QWN0aXZlVW5p
Zm9ybUJsb2NrQ291bnQoKSBjb25zdDsKICAgICBHTGludCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tN
YXhMZW5ndGgoKSBjb25zdDsKIApAQCAtMzM3LDI1ICszNTgsNDcgQEAgY2xhc3MgUHJvZ3JhbSBm
aW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogCiAgICAgY29uc3QgQXR0cmlidXRlc01hc2sgJmdl
dEFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2soKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJu
IG1EYXRhLm1BY3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrOworICAgICAgICByZXR1cm4gbVN0YXRl
Lm1BY3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrOwogICAgIH0KIAogICBwcml2YXRlOgorICAgIGNs
YXNzIEJpbmRpbmdzIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCisgICAgeworICAgICAgcHVi
bGljOgorICAgICAgICB2b2lkIGJpbmRMb2NhdGlvbihHTHVpbnQgaW5kZXgsIGNvbnN0IHN0ZDo6
c3RyaW5nICZuYW1lKTsKKyAgICAgICAgaW50IGdldEJpbmRpbmcoY29uc3Qgc3RkOjpzdHJpbmcg
Jm5hbWUpIGNvbnN0OworCisgICAgICAgIHR5cGVkZWYgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6
c3RyaW5nLCBHTHVpbnQ+Ojpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKKyAgICAgICAg
Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdDsKKyAgICAgICAgY29uc3RfaXRlcmF0b3IgZW5k
KCkgY29uc3Q7CisKKyAgICAgIHByaXZhdGU6CisgICAgICAgIHN0ZDo6dW5vcmRlcmVkX21hcDxz
dGQ6OnN0cmluZywgR0x1aW50PiBtQmluZGluZ3M7CisgICAgfTsKKwogICAgIHZvaWQgdW5saW5r
KGJvb2wgZGVzdHJveSA9IGZhbHNlKTsKICAgICB2b2lkIHJlc2V0VW5pZm9ybUJsb2NrQmluZGlu
Z3MoKTsKIAotICAgIGJvb2wgbGlua0F0dHJpYnV0ZXMoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCisg
ICAgYm9vbCBsaW5rQXR0cmlidXRlcyhjb25zdCBDb250ZXh0U3RhdGUgJmRhdGEsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBJbmZvTG9nICZpbmZvTG9nLAotICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgQXR0cmlidXRlQmluZGluZ3MgJmF0dHJpYnV0ZUJpbmRpbmdzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgQmluZGluZ3MgJmF0dHJpYnV0ZUJpbmRpbmdzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgU2hhZGVyICp2ZXJ0ZXhTaGFkZXIpOworICAgIGJvb2wg
dmFsaWRhdGVVbmlmb3JtQmxvY2tzQ291bnQoR0x1aW50IG1heFVuaWZvcm1CbG9ja3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6SW50
ZXJmYWNlQmxvY2s+ICZibG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZlcnJvck1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJbmZvTG9nICZpbmZvTG9nKSBjb25zdDsKKyAgICBib29sIHZhbGlkYXRl
VmVydGV4QW5kRnJhZ21lbnRJbnRlcmZhY2VCbG9ja3MoCisgICAgICAgIGNvbnN0IHN0ZDo6dmVj
dG9yPHNoOjpJbnRlcmZhY2VCbG9jaz4gJnZlcnRleEludGVyZmFjZUJsb2NrcywKKyAgICAgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8c2g6OkludGVyZmFjZUJsb2NrPiAmZnJhZ21lbnRJbnRlcmZhY2VC
bG9ja3MsCisgICAgICAgIEluZm9Mb2cgJmluZm9Mb2cpIGNvbnN0OwogICAgIGJvb2wgbGlua1Vu
aWZvcm1CbG9ja3MoSW5mb0xvZyAmaW5mb0xvZywgY29uc3QgQ2FwcyAmY2Fwcyk7Ci0gICAgc3Rh
dGljIGJvb2wgbGlua1ZhcnlpbmdzKEluZm9Mb2cgJmluZm9Mb2csCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFNoYWRlciAqdmVydGV4U2hhZGVyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBTaGFkZXIgKmZyYWdtZW50U2hhZGVyKTsKLSAgICBib29sIGxp
bmtVbmlmb3JtcyhnbDo6SW5mb0xvZyAmaW5mb0xvZywgY29uc3QgZ2w6OkNhcHMgJmNhcHMpOwot
ICAgIHZvaWQgaW5kZXhVbmlmb3JtcygpOwotICAgIGJvb2wgYXJlTWF0Y2hpbmdJbnRlcmZhY2VC
bG9ja3MoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9jayAmdmVy
dGV4SW50ZXJmYWNlQmxvY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzaDo6SW50ZXJmYWNlQmxvY2sgJmZyYWdtZW50SW50ZXJmYWNlQmxvY2spOworICAgIGJv
b2wgbGlua1ZhcnlpbmdzKEluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IFNoYWRlciAqdmVydGV4U2hh
ZGVyLCBjb25zdCBTaGFkZXIgKmZyYWdtZW50U2hhZGVyKSBjb25zdDsKKyAgICBib29sIHZhbGlk
YXRlVmVydGV4QW5kRnJhZ21lbnRVbmlmb3JtcyhJbmZvTG9nICZpbmZvTG9nKSBjb25zdDsKKyAg
ICBib29sIGxpbmtVbmlmb3JtcyhnbDo6SW5mb0xvZyAmaW5mb0xvZywgY29uc3QgZ2w6OkNhcHMg
JmNhcHMsIGNvbnN0IEJpbmRpbmdzICZ1bmlmb3JtQmluZGluZ3MpOworICAgIGJvb2wgaW5kZXhV
bmlmb3JtcyhnbDo6SW5mb0xvZyAmaW5mb0xvZywgY29uc3QgZ2w6OkNhcHMgJmNhcHMsIGNvbnN0
IEJpbmRpbmdzICZ1bmlmb3JtQmluZGluZ3MpOworICAgIGJvb2wgYXJlTWF0Y2hpbmdJbnRlcmZh
Y2VCbG9ja3MoZ2w6OkluZm9Mb2cgJmluZm9Mb2csCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2sgJnZlcnRleEludGVyZmFjZUJsb2Nr
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2g6OkludGVyZmFj
ZUJsb2NrICZmcmFnbWVudEludGVyZmFjZUJsb2NrKSBjb25zdDsKIAogICAgIHN0YXRpYyBib29s
IGxpbmtWYWxpZGF0ZVZhcmlhYmxlc0Jhc2UoSW5mb0xvZyAmaW5mb0xvZywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2YXJpYWJs
ZU5hbWUsCkBAIC0zNjMsNyArNDA2LDExIEBAIGNsYXNzIFByb2dyYW0gZmluYWwgOiBhbmdsZTo6
Tm9uQ29weWFibGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmZnJhZ21lbnRWYXJpYWJsZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdmFsaWRhdGVQcmVjaXNpb24pOwogCi0g
ICAgc3RhdGljIGJvb2wgbGlua1ZhbGlkYXRlVmFyeWluZ3MoSW5mb0xvZyAmaW5mb0xvZywgY29u
c3Qgc3RkOjpzdHJpbmcgJnZhcnlpbmdOYW1lLCBjb25zdCBzaDo6VmFyeWluZyAmdmVydGV4VmFy
eWluZywgY29uc3Qgc2g6OlZhcnlpbmcgJmZyYWdtZW50VmFyeWluZyk7CisgICAgc3RhdGljIGJv
b2wgbGlua1ZhbGlkYXRlVmFyeWluZ3MoSW5mb0xvZyAmaW5mb0xvZywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmFyeWluZ05hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2g6OlZhcnlpbmcgJnZl
cnRleFZhcnlpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c2g6OlZhcnlpbmcgJmZyYWdtZW50VmFyeWluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgc2hhZGVyVmVyc2lvbik7CiAgICAgYm9vbCBsaW5rVmFsaWRhdGVUcmFu
c2Zvcm1GZWVkYmFjayhJbmZvTG9nICZpbmZvTG9nLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Y29uc3Qgc2g6OlZhcnlpbmcgKj4gJmxp
bmtlZFZhcnlpbmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgQ2FwcyAmY2FwcykgY29uc3Q7CkBAIC0zNzUsNiArNDIyLDEzIEBAIGNsYXNzIFByb2dyYW0g
ZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBzdGQ6OnZlY3Rvcjxjb25zdCBzaDo6VmFy
eWluZyAqPiBnZXRNZXJnZWRWYXJ5aW5ncygpIGNvbnN0OwogICAgIHZvaWQgbGlua091dHB1dFZh
cmlhYmxlcygpOwogCisgICAgYm9vbCBmbGF0dGVuVW5pZm9ybXNBbmRDaGVja0NhcHNGb3JTaGFk
ZXIoY29uc3QgZ2w6OlNoYWRlciAmc2hhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXhVbmlmb3JtQ29tcG9uZW50cywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWF4VGV4dHVyZUlt
YWdlVW5pdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJmNvbXBvbmVudHNFcnJvck1lc3NhZ2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNhbXBs
ZXJFcnJvck1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjp2ZWN0b3I8TGlua2VkVW5pZm9ybT4gJnNhbXBsZXJVbmlmb3JtcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmZvTG9nICZpbmZvTG9n
KTsKICAgICBib29sIGZsYXR0ZW5Vbmlmb3Jtc0FuZENoZWNrQ2Fwcyhjb25zdCBDYXBzICZjYXBz
LCBJbmZvTG9nICZpbmZvTG9nKTsKIAogICAgIHN0cnVjdCBWZWN0b3JBbmRTYW1wbGVyQ291bnQK
QEAgLTQxNSwxMiArNDY5LDE2IEBAIGNsYXNzIFByb2dyYW0gZmluYWwgOiBhbmdsZTo6Tm9uQ29w
eWFibGUKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVzdFQ+CiAgICAgdm9pZCBnZXRVbmlmb3Jt
SW50ZXJuYWwoR0xpbnQgbG9jYXRpb24sIERlc3RUICpkYXRhT3V0KSBjb25zdDsKIAotICAgIERh
dGEgbURhdGE7CisgICAgUHJvZ3JhbVN0YXRlIG1TdGF0ZTsKICAgICByeDo6UHJvZ3JhbUltcGwg
Km1Qcm9ncmFtOwogCiAgICAgYm9vbCBtVmFsaWRhdGVkOwogCi0gICAgQXR0cmlidXRlQmluZGlu
Z3MgbUF0dHJpYnV0ZUJpbmRpbmdzOworICAgIEJpbmRpbmdzIG1BdHRyaWJ1dGVCaW5kaW5nczsK
KyAgICBCaW5kaW5ncyBtVW5pZm9ybUJpbmRpbmdzOworCisgICAgLy8gQ0hST01JVU1fcGF0aF9y
ZW5kZXJpbmcKKyAgICBCaW5kaW5ncyBtRnJhZ21lbnRJbnB1dEJpbmRpbmdzOwogCiAgICAgYm9v
bCBtTGlua2VkOwogICAgIGJvb2wgbURlbGV0ZVN0YXR1czsgICAvLyBGbGFnIHRvIGluZGljYXRl
IHRoYXQgdGhlIHByb2dyYW0gY2FuIGJlIGRlbGV0ZWQgd2hlbiBubyBsb25nZXIgaW4gdXNlCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUHJvZ3JhbV91bml0dGVz
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L1Byb2dyYW1fdW5pdHRlc3QuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUHJvZ3JhbV91bml0dGVzdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgsNyArOCw2IEBACiAKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogCi0jaW5jbHVk
ZSAidGVzdHMvYW5nbGVfdW5pdHRlc3RzX3V0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvUHJv
Z3JhbS5oIgogCiB1c2luZyBuYW1lc3BhY2UgZ2w7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvUmVuZGVyYnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUmVuZGVyYnVmZmVyLmNwcAkocmV2aXNpb24g
MjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1JlbmRlcmJ1
ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAgUmVuZGVyYnVmZmVyOjpS
ZW5kZXJidWZmZXIocng6OlJlbmRlcmJ1ZgogICAgICAgbUxhYmVsKCksCiAgICAgICBtV2lkdGgo
MCksCiAgICAgICBtSGVpZ2h0KDApLAotICAgICAgbUludGVybmFsRm9ybWF0KEdMX1JHQkE0KSwK
KyAgICAgIG1Gb3JtYXQoR0xfUkdCQTQpLAogICAgICAgbVNhbXBsZXMoMCkKIHsKIH0KQEAgLTQ5
LDY2ICs0OSw1NSBAQCBFcnJvciBSZW5kZXJidWZmZXI6OnNldFN0b3JhZ2UoR0xlbnVtIGluCiB7
CiAgICAgb3JwaGFuSW1hZ2VzKCk7CiAKLSAgICBFcnJvciBlcnJvciA9IG1SZW5kZXJidWZmZXIt
PnNldFN0b3JhZ2UoaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwotICAgIGlmIChlcnJv
ci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFO
R0xFX1RSWShtUmVuZGVyYnVmZmVyLT5zZXRTdG9yYWdlKGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0KSk7CiAKICAgICBtV2lkdGggICAgICAgICAgPSBzdGF0aWNfY2FzdDxHTHNpemVpPih3
aWR0aCk7CiAgICAgbUhlaWdodCAgICAgICAgID0gc3RhdGljX2Nhc3Q8R0xzaXplaT4oaGVpZ2h0
KTsKLSAgICBtSW50ZXJuYWxGb3JtYXQgPSBpbnRlcm5hbGZvcm1hdDsKKyAgICBtRm9ybWF0ICAg
ICAgICAgPSBGb3JtYXQoaW50ZXJuYWxmb3JtYXQpOwogICAgIG1TYW1wbGVzID0gMDsKIAotICAg
IHJldHVybiBFcnJvcihHTF9OT19FUlJPUik7CisgICAgbURpcnR5Q2hhbm5lbC5zaWduYWwoKTsK
KworICAgIHJldHVybiBOb0Vycm9yKCk7CiB9CiAKIEVycm9yIFJlbmRlcmJ1ZmZlcjo6c2V0U3Rv
cmFnZU11bHRpc2FtcGxlKHNpemVfdCBzYW1wbGVzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIHNp
emVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCkKIHsKICAgICBvcnBoYW5JbWFnZXMoKTsKIAotICAg
IEVycm9yIGVycm9yID0gbVJlbmRlcmJ1ZmZlci0+c2V0U3RvcmFnZU11bHRpc2FtcGxlKHNhbXBs
ZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJv
cigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlko
bVJlbmRlcmJ1ZmZlci0+c2V0U3RvcmFnZU11bHRpc2FtcGxlKHNhbXBsZXMsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0KSk7CiAKICAgICBtV2lkdGggICAgICAgICAgPSBzdGF0aWNfY2Fz
dDxHTHNpemVpPih3aWR0aCk7CiAgICAgbUhlaWdodCAgICAgICAgID0gc3RhdGljX2Nhc3Q8R0xz
aXplaT4oaGVpZ2h0KTsKLSAgICBtSW50ZXJuYWxGb3JtYXQgPSBpbnRlcm5hbGZvcm1hdDsKKyAg
ICBtRm9ybWF0ICAgICAgICAgPSBGb3JtYXQoaW50ZXJuYWxmb3JtYXQpOwogICAgIG1TYW1wbGVz
ICAgICAgICA9IHN0YXRpY19jYXN0PEdMc2l6ZWk+KHNhbXBsZXMpOwogCi0gICAgcmV0dXJuIEVy
cm9yKEdMX05PX0VSUk9SKTsKKyAgICBtRGlydHlDaGFubmVsLnNpZ25hbCgpOworCisgICAgcmV0
dXJuIE5vRXJyb3IoKTsKIH0KIAogRXJyb3IgUmVuZGVyYnVmZmVyOjpzZXRTdG9yYWdlRUdMSW1h
Z2VUYXJnZXQoZWdsOjpJbWFnZSAqaW1hZ2UpCiB7CiAgICAgb3JwaGFuSW1hZ2VzKCk7CiAKLSAg
ICBFcnJvciBlcnJvciA9IG1SZW5kZXJidWZmZXItPnNldFN0b3JhZ2VFR0xJbWFnZVRhcmdldChp
bWFnZSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBl
cnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKG1SZW5kZXJidWZmZXItPnNldFN0b3JhZ2VFR0xJ
bWFnZVRhcmdldChpbWFnZSkpOwogCiAgICAgc2V0VGFyZ2V0SW1hZ2UoaW1hZ2UpOwogCiAgICAg
bVdpZHRoICAgICAgICAgID0gc3RhdGljX2Nhc3Q8R0xzaXplaT4oaW1hZ2UtPmdldFdpZHRoKCkp
OwogICAgIG1IZWlnaHQgICAgICAgICA9IHN0YXRpY19jYXN0PEdMc2l6ZWk+KGltYWdlLT5nZXRI
ZWlnaHQoKSk7Ci0gICAgbUludGVybmFsRm9ybWF0ID0gaW1hZ2UtPmdldEludGVybmFsRm9ybWF0
KCk7CisgICAgbUZvcm1hdCAgICAgICAgID0gRm9ybWF0KGltYWdlLT5nZXRGb3JtYXQoKSk7CiAg
ICAgbVNhbXBsZXMgICAgICAgID0gMDsKIAotICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJPUik7
Ci19CisgICAgbURpcnR5Q2hhbm5lbC5zaWduYWwoKTsKIAotcng6OlJlbmRlcmJ1ZmZlckltcGwg
KlJlbmRlcmJ1ZmZlcjo6Z2V0SW1wbGVtZW50YXRpb24oKQotewotICAgIEFTU0VSVChtUmVuZGVy
YnVmZmVyKTsKLSAgICByZXR1cm4gbVJlbmRlcmJ1ZmZlcjsKKyAgICByZXR1cm4gTm9FcnJvcigp
OwogfQogCi1jb25zdCByeDo6UmVuZGVyYnVmZmVySW1wbCAqUmVuZGVyYnVmZmVyOjpnZXRJbXBs
ZW1lbnRhdGlvbigpIGNvbnN0CityeDo6UmVuZGVyYnVmZmVySW1wbCAqUmVuZGVyYnVmZmVyOjpn
ZXRJbXBsZW1lbnRhdGlvbigpIGNvbnN0CiB7CisgICAgQVNTRVJUKG1SZW5kZXJidWZmZXIpOwog
ICAgIHJldHVybiBtUmVuZGVyYnVmZmVyOwogfQogCkBAIC0xMjIsOSArMTExLDkgQEAgR0xzaXpl
aSBSZW5kZXJidWZmZXI6OmdldEhlaWdodCgpIGNvbnN0CiAgICAgcmV0dXJuIG1IZWlnaHQ7CiB9
CiAKLUdMZW51bSBSZW5kZXJidWZmZXI6OmdldEludGVybmFsRm9ybWF0KCkgY29uc3QKK2NvbnN0
IEZvcm1hdCAmUmVuZGVyYnVmZmVyOjpnZXRGb3JtYXQoKSBjb25zdAogewotICAgIHJldHVybiBt
SW50ZXJuYWxGb3JtYXQ7CisgICAgcmV0dXJuIG1Gb3JtYXQ7CiB9CiAKIEdMc2l6ZWkgUmVuZGVy
YnVmZmVyOjpnZXRTYW1wbGVzKCkgY29uc3QKQEAgLTEzNCwzMiArMTIzLDMyIEBAIEdMc2l6ZWkg
UmVuZGVyYnVmZmVyOjpnZXRTYW1wbGVzKCkgY29uc3QKIAogR0x1aW50IFJlbmRlcmJ1ZmZlcjo6
Z2V0UmVkU2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEdldEludGVybmFsRm9ybWF0SW5mbyht
SW50ZXJuYWxGb3JtYXQpLnJlZEJpdHM7CisgICAgcmV0dXJuIG1Gb3JtYXQuaW5mby0+cmVkQml0
czsKIH0KIAogR0x1aW50IFJlbmRlcmJ1ZmZlcjo6Z2V0R3JlZW5TaXplKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gR2V0SW50ZXJuYWxGb3JtYXRJbmZvKG1JbnRlcm5hbEZvcm1hdCkuZ3JlZW5CaXRz
OworICAgIHJldHVybiBtRm9ybWF0LmluZm8tPmdyZWVuQml0czsKIH0KIAogR0x1aW50IFJlbmRl
cmJ1ZmZlcjo6Z2V0Qmx1ZVNpemUoKSBjb25zdAogewotICAgIHJldHVybiBHZXRJbnRlcm5hbEZv
cm1hdEluZm8obUludGVybmFsRm9ybWF0KS5ibHVlQml0czsKKyAgICByZXR1cm4gbUZvcm1hdC5p
bmZvLT5ibHVlQml0czsKIH0KIAogR0x1aW50IFJlbmRlcmJ1ZmZlcjo6Z2V0QWxwaGFTaXplKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gR2V0SW50ZXJuYWxGb3JtYXRJbmZvKG1JbnRlcm5hbEZvcm1h
dCkuYWxwaGFCaXRzOworICAgIHJldHVybiBtRm9ybWF0LmluZm8tPmFscGhhQml0czsKIH0KIAog
R0x1aW50IFJlbmRlcmJ1ZmZlcjo6Z2V0RGVwdGhTaXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
R2V0SW50ZXJuYWxGb3JtYXRJbmZvKG1JbnRlcm5hbEZvcm1hdCkuZGVwdGhCaXRzOworICAgIHJl
dHVybiBtRm9ybWF0LmluZm8tPmRlcHRoQml0czsKIH0KIAogR0x1aW50IFJlbmRlcmJ1ZmZlcjo6
Z2V0U3RlbmNpbFNpemUoKSBjb25zdAogewotICAgIHJldHVybiBHZXRJbnRlcm5hbEZvcm1hdElu
Zm8obUludGVybmFsRm9ybWF0KS5zdGVuY2lsQml0czsKKyAgICByZXR1cm4gbUZvcm1hdC5pbmZv
LT5zdGVuY2lsQml0czsKIH0KIAogdm9pZCBSZW5kZXJidWZmZXI6Om9uQXR0YWNoKCkKQEAgLTE4
MSw0ICsxNzAsNCBAQCBFeHRlbnRzIFJlbmRlcmJ1ZmZlcjo6Z2V0QXR0YWNobWVudFNpemUoCiB7
CiAgICAgcmV0dXJuIEV4dGVudHMobVdpZHRoLCBtSGVpZ2h0LCAxKTsKIH0KLX0KK30gIC8vIG5h
bWVzcGFjZSBnbApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Jl
bmRlcmJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9SZW5kZXJidWZmZXIuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1JlbmRlcmJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSAibGliQU5HTEUvRXJyb3IuaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9JbWFn
ZS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL2Zvcm1hdHV0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvUmVuZGVyYnVmZmVySW1wbC5oIgogCiBuYW1lc3BhY2UgZ2wKQEAgLTQxLDEy
ICs0MiwxMSBAQCBjbGFzcyBSZW5kZXJidWZmZXIgZmluYWwgOiBwdWJsaWMgZWdsOjpJCiAgICAg
RXJyb3Igc2V0U3RvcmFnZU11bHRpc2FtcGxlKHNpemVfdCBzYW1wbGVzLCBHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCk7CiAgICAgRXJyb3Igc2V0U3Rv
cmFnZUVHTEltYWdlVGFyZ2V0KGVnbDo6SW1hZ2UgKmltYWdlVGFyZ2V0KTsKIAotICAgIHJ4OjpS
ZW5kZXJidWZmZXJJbXBsICpnZXRJbXBsZW1lbnRhdGlvbigpOwotICAgIGNvbnN0IHJ4OjpSZW5k
ZXJidWZmZXJJbXBsICpnZXRJbXBsZW1lbnRhdGlvbigpIGNvbnN0OworICAgIHJ4OjpSZW5kZXJi
dWZmZXJJbXBsICpnZXRJbXBsZW1lbnRhdGlvbigpIGNvbnN0OwogCiAgICAgR0xzaXplaSBnZXRX
aWR0aCgpIGNvbnN0OwogICAgIEdMc2l6ZWkgZ2V0SGVpZ2h0KCkgY29uc3Q7Ci0gICAgR0xlbnVt
IGdldEludGVybmFsRm9ybWF0KCkgY29uc3Q7CisgICAgY29uc3QgRm9ybWF0ICZnZXRGb3JtYXQo
KSBjb25zdDsKICAgICBHTHNpemVpIGdldFNhbXBsZXMoKSBjb25zdDsKICAgICBHTHVpbnQgZ2V0
UmVkU2l6ZSgpIGNvbnN0OwogICAgIEdMdWludCBnZXRHcmVlblNpemUoKSBjb25zdDsKQEAgLTU3
LDcgKzU3LDExIEBAIGNsYXNzIFJlbmRlcmJ1ZmZlciBmaW5hbCA6IHB1YmxpYyBlZ2w6OkkKIAog
ICAgIC8vIEZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdCBJbXBsCiAgICAgRXh0ZW50cyBnZXRB
dHRhY2htZW50U2l6ZShjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OlRhcmdldCAmdGFyZ2V0
KSBjb25zdCBvdmVycmlkZTsKLSAgICBHTGVudW0gZ2V0QXR0YWNobWVudEludGVybmFsRm9ybWF0
KGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICYvKnRhcmdldCovKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBnZXRJbnRlcm5hbEZvcm1hdCgpOyB9CisgICAgY29uc3QgRm9ybWF0
ICZnZXRBdHRhY2htZW50Rm9ybWF0KAorICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1l
bnQ6OlRhcmdldCAmIC8qdGFyZ2V0Ki8pIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBy
ZXR1cm4gZ2V0Rm9ybWF0KCk7CisgICAgfQogICAgIEdMc2l6ZWkgZ2V0QXR0YWNobWVudFNhbXBs
ZXMoY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50OjpUYXJnZXQgJi8qdGFyZ2V0Ki8pIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGdldFNhbXBsZXMoKTsgfQogCiAgICAgdm9pZCBvbkF0dGFjaCgp
IG92ZXJyaWRlOwpAQCAtNzMsNyArNzcsNyBAQCBjbGFzcyBSZW5kZXJidWZmZXIgZmluYWwgOiBw
dWJsaWMgZWdsOjpJCiAKICAgICBHTHNpemVpIG1XaWR0aDsKICAgICBHTHNpemVpIG1IZWlnaHQ7
Ci0gICAgR0xlbnVtIG1JbnRlcm5hbEZvcm1hdDsKKyAgICBGb3JtYXQgbUZvcm1hdDsKICAgICBH
THNpemVpIG1TYW1wbGVzOwogfTsKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL1Jlc291cmNlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Jlc291cmNlTWFuYWdlci5jcHAJKHJldmlzaW9uIDIw
NzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9SZXNvdXJjZU1h
bmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00LDI1ICs0LDI0IEBACiAvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgogLy8KIAotLy8gUmVzb3VyY2VNYW5hZ2VyLmNwcDogSW1wbGVtZW50
cyB0aGUgZ2w6OlJlc291cmNlTWFuYWdlciBjbGFzcywgd2hpY2ggdHJhY2tzIGFuZCAKKy8vIFJl
c291cmNlTWFuYWdlci5jcHA6IEltcGxlbWVudHMgdGhlIGdsOjpSZXNvdXJjZU1hbmFnZXIgY2xh
c3MsIHdoaWNoIHRyYWNrcyBhbmQKIC8vIHJldHJpZXZlcyBvYmplY3RzIHdoaWNoIG1heSBiZSBz
aGFyZWQgYnkgbXVsdGlwbGUgQ29udGV4dHMuCiAKICNpbmNsdWRlICJsaWJBTkdMRS9SZXNvdXJj
ZU1hbmFnZXIuaCIKIAogI2luY2x1ZGUgImxpYkFOR0xFL0J1ZmZlci5oIgorI2luY2x1ZGUgImxp
YkFOR0xFL0ZlbmNlLmgiCisjaW5jbHVkZSAibGliQU5HTEUvUGF0aC5oIgogI2luY2x1ZGUgImxp
YkFOR0xFL1Byb2dyYW0uaCIKICNpbmNsdWRlICJsaWJBTkdMRS9SZW5kZXJidWZmZXIuaCIKKyNp
bmNsdWRlICJsaWJBTkdMRS9TYW1wbGVyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvU2hhZGVyLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvVGV4dHVyZS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL1NhbXBs
ZXIuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9GZW5jZS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL1JlbmRlcmVyLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvR0xJbXBsRmFj
dG9yeS5oIgogCiBuYW1lc3BhY2UgZ2wKIHsKLVJlc291cmNlTWFuYWdlcjo6UmVzb3VyY2VNYW5h
Z2VyKHJ4OjpJbXBsRmFjdG9yeSAqZmFjdG9yeSkKLSAgICA6IG1GYWN0b3J5KGZhY3RvcnkpLAot
ICAgICAgbVJlZkNvdW50KDEpCitSZXNvdXJjZU1hbmFnZXI6OlJlc291cmNlTWFuYWdlcigpIDog
bVJlZkNvdW50KDEpCiB7CiB9CiAKQEAgLTYyLDYgKzYxLDEyIEBAIFJlc291cmNlTWFuYWdlcjo6
flJlc291cmNlTWFuYWdlcigpCiAgICAgewogICAgICAgICBkZWxldGVGZW5jZVN5bmMobUZlbmNl
U3luY01hcC5iZWdpbigpLT5maXJzdCk7CiAgICAgfQorCisgICAgZm9yIChhdXRvIGl0ID0gbVBh
dGhNYXAuYmVnaW4oKTsgaXQgIT0gbVBhdGhNYXAuZW5kKCk7ICsraXQpCisgICAgeworICAgICAg
ICBjb25zdCBhdXRvICpwID0gaXQtPnNlY29uZDsKKyAgICAgICAgZGVsZXRlIHA7CisgICAgfQog
fQogCiB2b2lkIFJlc291cmNlTWFuYWdlcjo6YWRkUmVmKCkKQEAgLTg4LDI1ICs5MywyNCBAQCBH
THVpbnQgUmVzb3VyY2VNYW5hZ2VyOjpjcmVhdGVCdWZmZXIoKQogfQogCiAvLyBSZXR1cm5zIGFu
IHVudXNlZCBzaGFkZXIvcHJvZ3JhbSBuYW1lCi1HTHVpbnQgUmVzb3VyY2VNYW5hZ2VyOjpjcmVh
dGVTaGFkZXIoY29uc3QgZ2w6OkxpbWl0YXRpb25zICZyZW5kZXJlckxpbWl0YXRpb25zLCBHTGVu
dW0gdHlwZSkKK0dMdWludCBSZXNvdXJjZU1hbmFnZXI6OmNyZWF0ZVNoYWRlcihyeDo6R0xJbXBs
RmFjdG9yeSAqZmFjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6TGltaXRhdGlvbnMgJnJlbmRlcmVyTGltaXRhdGlvbnMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUpCiB7CisgICAgQVNTRVJUKHR5cGUg
PT0gR0xfVkVSVEVYX1NIQURFUiB8fCB0eXBlID09IEdMX0ZSQUdNRU5UX1NIQURFUiB8fCB0eXBl
ID09IEdMX0NPTVBVVEVfU0hBREVSKTsKICAgICBHTHVpbnQgaGFuZGxlID0gbVByb2dyYW1TaGFk
ZXJIYW5kbGVBbGxvY2F0b3IuYWxsb2NhdGUoKTsKIAotICAgIGlmICh0eXBlID09IEdMX1ZFUlRF
WF9TSEFERVIgfHwgdHlwZSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpCi0gICAgewotICAgICAgICBt
U2hhZGVyTWFwW2hhbmRsZV0gPSBuZXcgU2hhZGVyKHRoaXMsIG1GYWN0b3J5LCByZW5kZXJlckxp
bWl0YXRpb25zLCB0eXBlLCBoYW5kbGUpOwotICAgIH0KLSAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7
CisgICAgbVNoYWRlck1hcFtoYW5kbGVdID0gbmV3IFNoYWRlcih0aGlzLCBmYWN0b3J5LCByZW5k
ZXJlckxpbWl0YXRpb25zLCB0eXBlLCBoYW5kbGUpOwogCiAgICAgcmV0dXJuIGhhbmRsZTsKIH0K
IAogLy8gUmV0dXJucyBhbiB1bnVzZWQgcHJvZ3JhbS9zaGFkZXIgbmFtZQotR0x1aW50IFJlc291
cmNlTWFuYWdlcjo6Y3JlYXRlUHJvZ3JhbSgpCitHTHVpbnQgUmVzb3VyY2VNYW5hZ2VyOjpjcmVh
dGVQcm9ncmFtKHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5KQogewogICAgIEdMdWludCBoYW5k
bGUgPSBtUHJvZ3JhbVNoYWRlckhhbmRsZUFsbG9jYXRvci5hbGxvY2F0ZSgpOwogCi0gICAgbVBy
b2dyYW1NYXBbaGFuZGxlXSA9IG5ldyBQcm9ncmFtKG1GYWN0b3J5LCB0aGlzLCBoYW5kbGUpOwor
ICAgIG1Qcm9ncmFtTWFwW2hhbmRsZV0gPSBuZXcgUHJvZ3JhbShmYWN0b3J5LCB0aGlzLCBoYW5k
bGUpOwogCiAgICAgcmV0dXJuIGhhbmRsZTsKIH0KQEAgLTE0MiwxNyArMTQ2LDQyIEBAIEdMdWlu
dCBSZXNvdXJjZU1hbmFnZXI6OmNyZWF0ZVNhbXBsZXIoKQogfQogCiAvLyBSZXR1cm5zIHRoZSBu
ZXh0IHVudXNlZCBmZW5jZSBuYW1lLCBhbmQgYWxsb2NhdGVzIHRoZSBmZW5jZQotR0x1aW50IFJl
c291cmNlTWFuYWdlcjo6Y3JlYXRlRmVuY2VTeW5jKCkKK0dMdWludCBSZXNvdXJjZU1hbmFnZXI6
OmNyZWF0ZUZlbmNlU3luYyhyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSkKIHsKICAgICBHTHVp
bnQgaGFuZGxlID0gbUZlbmNlU3luY0hhbmRsZUFsbG9jYXRvci5hbGxvY2F0ZSgpOwogCi0gICAg
RmVuY2VTeW5jICpmZW5jZVN5bmMgPSBuZXcgRmVuY2VTeW5jKG1GYWN0b3J5LT5jcmVhdGVGZW5j
ZVN5bmMoKSwgaGFuZGxlKTsKKyAgICBGZW5jZVN5bmMgKmZlbmNlU3luYyA9IG5ldyBGZW5jZVN5
bmMoZmFjdG9yeS0+Y3JlYXRlRmVuY2VTeW5jKCksIGhhbmRsZSk7CiAgICAgZmVuY2VTeW5jLT5h
ZGRSZWYoKTsKICAgICBtRmVuY2VTeW5jTWFwW2hhbmRsZV0gPSBmZW5jZVN5bmM7CiAKICAgICBy
ZXR1cm4gaGFuZGxlOwogfQogCitFcnJvck9yUmVzdWx0PEdMdWludD4gUmVzb3VyY2VNYW5hZ2Vy
OjpjcmVhdGVQYXRocyhyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwgR0xzaXplaSByYW5nZSkK
K3sKKyAgICAvLyBBbGxvY2F0ZSBjbGllbnQgc2lkZSBoYW5kbGVzLgorICAgIGNvbnN0IEdMdWlu
dCBjbGllbnQgPSBtUGF0aEhhbmRsZUFsbG9jYXRvci5hbGxvY2F0ZVJhbmdlKHN0YXRpY19jYXN0
PEdMdWludD4ocmFuZ2UpKTsKKyAgICBpZiAoY2xpZW50ID09IEhhbmRsZVJhbmdlQWxsb2NhdG9y
OjprSW52YWxpZEhhbmRsZSkKKyAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVN
T1JZLCAiRmFpbGVkIHRvIGFsbG9jYXRlIHBhdGggaGFuZGxlIHJhbmdlLiIpOworCisgICAgY29u
c3QgYXV0byAmcGF0aHMgPSBmYWN0b3J5LT5jcmVhdGVQYXRocyhyYW5nZSk7CisgICAgaWYgKHBh
dGhzLmVtcHR5KCkpCisgICAgeworICAgICAgICBtUGF0aEhhbmRsZUFsbG9jYXRvci5yZWxlYXNl
UmFuZ2UoY2xpZW50LCByYW5nZSk7CisgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09G
X01FTU9SWSwgIkZhaWxlZCB0byBhbGxvY2F0ZSBwYXRoIG9iamVjdHMuIik7CisgICAgfQorCisg
ICAgYXV0byBoaW50ID0gbVBhdGhNYXAuYmVnaW4oKTsKKworICAgIGZvciAoR0xzaXplaSBpID0g
MDsgaSA8IHJhbmdlOyArK2kpCisgICAgeworICAgICAgICBjb25zdCBhdXRvIGltcGwgPSBwYXRo
c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSldOworICAgICAgICBjb25zdCBhdXRvIGlkICAgPSBj
bGllbnQgKyBpOworICAgICAgICBoaW50ICAgICAgICAgICAgPSBtUGF0aE1hcC5pbnNlcnQoaGlu
dCwgc3RkOjptYWtlX3BhaXIoaWQsIG5ldyBQYXRoKGltcGwpKSk7CisgICAgfQorICAgIHJldHVy
biBjbGllbnQ7Cit9CisKIHZvaWQgUmVzb3VyY2VNYW5hZ2VyOjpkZWxldGVCdWZmZXIoR0x1aW50
IGJ1ZmZlcikKIHsKICAgICBhdXRvIGJ1ZmZlck9iamVjdCA9IG1CdWZmZXJNYXAuZmluZChidWZm
ZXIpOwpAQCAtMTk3LDcgKzIyNiw3IEBAIHZvaWQgUmVzb3VyY2VNYW5hZ2VyOjpkZWxldGVQcm9n
cmFtKEdMdWkKICAgICAgICAgICAgIG1Qcm9ncmFtTWFwLmVyYXNlKHByb2dyYW1PYmplY3QpOwog
ICAgICAgICB9CiAgICAgICAgIGVsc2UKLSAgICAgICAgeyAKKyAgICAgICAgewogICAgICAgICAg
ICAgcHJvZ3JhbU9iamVjdC0+c2Vjb25kLT5mbGFnRm9yRGVsZXRpb24oKTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTI1MSw2ICsyODAsMjEgQEAgdm9pZCBSZXNvdXJjZU1hbmFnZXI6OmRlbGV0ZUZl
bmNlU3luYyhHTAogICAgIH0KIH0KIAordm9pZCBSZXNvdXJjZU1hbmFnZXI6OmRlbGV0ZVBhdGhz
KEdMdWludCBmaXJzdCwgR0xzaXplaSByYW5nZSkKK3sKKyAgICBmb3IgKEdMc2l6ZWkgaSA9IDA7
IGkgPCByYW5nZTsgKytpKQorICAgIHsKKyAgICAgICAgY29uc3QgYXV0byBpZCA9IGZpcnN0ICsg
aTsKKyAgICAgICAgY29uc3QgYXV0byBpdCA9IG1QYXRoTWFwLmZpbmQoaWQpOworICAgICAgICBp
ZiAoaXQgPT0gbVBhdGhNYXAuZW5kKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
UGF0aCAqcCA9IGl0LT5zZWNvbmQ7CisgICAgICAgIGRlbGV0ZSBwOworICAgICAgICBtUGF0aE1h
cC5lcmFzZShpdCk7CisgICAgfQorICAgIG1QYXRoSGFuZGxlQWxsb2NhdG9yLnJlbGVhc2VSYW5n
ZShmaXJzdCwgc3RhdGljX2Nhc3Q8R0x1aW50PihyYW5nZSkpOworfQorCiBCdWZmZXIgKlJlc291
cmNlTWFuYWdlcjo6Z2V0QnVmZmVyKHVuc2lnbmVkIGludCBoYW5kbGUpCiB7CiAgICAgYXV0byBi
dWZmZXIgPSBtQnVmZmVyTWFwLmZpbmQoaGFuZGxlKTsKQEAgLTI2NSw3ICszMDksNyBAQCBCdWZm
ZXIgKlJlc291cmNlTWFuYWdlcjo6Z2V0QnVmZmVyKHVuc2lnCiAgICAgfQogfQogCi1TaGFkZXIg
KlJlc291cmNlTWFuYWdlcjo6Z2V0U2hhZGVyKHVuc2lnbmVkIGludCBoYW5kbGUpCitTaGFkZXIg
KlJlc291cmNlTWFuYWdlcjo6Z2V0U2hhZGVyKHVuc2lnbmVkIGludCBoYW5kbGUpIGNvbnN0CiB7
CiAgICAgYXV0byBzaGFkZXIgPSBtU2hhZGVyTWFwLmZpbmQoaGFuZGxlKTsKIApAQCAtMzUyLDEy
ICszOTYsMzQgQEAgRmVuY2VTeW5jICpSZXNvdXJjZU1hbmFnZXI6OmdldEZlbmNlU3luYwogICAg
IH0KIH0KIAorY29uc3QgUGF0aCAqUmVzb3VyY2VNYW5hZ2VyOjpnZXRQYXRoKEdMdWludCBoYW5k
bGUpIGNvbnN0Cit7CisgICAgYXV0byBpdCA9IG1QYXRoTWFwLmZpbmQoaGFuZGxlKTsKKyAgICBp
ZiAoaXQgPT0gc3RkOjplbmQobVBhdGhNYXApKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gaXQtPnNlY29uZDsKK30KKworUGF0aCAqUmVzb3VyY2VNYW5hZ2VyOjpnZXRQYXRo
KEdMdWludCBoYW5kbGUpCit7CisgICAgYXV0byBpdCA9IG1QYXRoTWFwLmZpbmQoaGFuZGxlKTsK
KyAgICBpZiAoaXQgPT0gc3RkOjplbmQobVBhdGhNYXApKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIHJldHVybiBpdC0+c2Vjb25kOworfQorCitib29sIFJlc291cmNlTWFuYWdlcjo6
aGFzUGF0aChHTHVpbnQgaGFuZGxlKSBjb25zdAoreworICAgIHJldHVybiBtUGF0aEhhbmRsZUFs
bG9jYXRvci5pc1VzZWQoaGFuZGxlKTsKK30KKwogdm9pZCBSZXNvdXJjZU1hbmFnZXI6OnNldFJl
bmRlcmJ1ZmZlcihHTHVpbnQgaGFuZGxlLCBSZW5kZXJidWZmZXIgKmJ1ZmZlcikKIHsKICAgICBt
UmVuZGVyYnVmZmVyTWFwW2hhbmRsZV0gPSBidWZmZXI7CiB9CiAKLUJ1ZmZlciAqUmVzb3VyY2VN
YW5hZ2VyOjpjaGVja0J1ZmZlckFsbG9jYXRpb24oR0x1aW50IGhhbmRsZSkKK0J1ZmZlciAqUmVz
b3VyY2VNYW5hZ2VyOjpjaGVja0J1ZmZlckFsbG9jYXRpb24ocng6OkdMSW1wbEZhY3RvcnkgKmZh
Y3RvcnksIEdMdWludCBoYW5kbGUpCiB7CiAgICAgaWYgKGhhbmRsZSA9PSAwKQogICAgIHsKQEAg
LTM3Miw3ICs0MzgsNyBAQCBCdWZmZXIgKlJlc291cmNlTWFuYWdlcjo6Y2hlY2tCdWZmZXJBbGxv
CiAgICAgICAgIHJldHVybiBidWZmZXJNYXBJdC0+c2Vjb25kOwogICAgIH0KIAotICAgIEJ1ZmZl
ciAqYnVmZmVyID0gbmV3IEJ1ZmZlcihtRmFjdG9yeS0+Y3JlYXRlQnVmZmVyKCksIGhhbmRsZSk7
CisgICAgQnVmZmVyICpidWZmZXIgPSBuZXcgQnVmZmVyKGZhY3RvcnktPmNyZWF0ZUJ1ZmZlcigp
LCBoYW5kbGUpOwogICAgIGJ1ZmZlci0+YWRkUmVmKCk7CiAKICAgICBpZiAoaGFuZGxlQWxsb2Nh
dGVkKQpAQCAtMzg4LDcgKzQ1NCw5IEBAIEJ1ZmZlciAqUmVzb3VyY2VNYW5hZ2VyOjpjaGVja0J1
ZmZlckFsbG8KICAgICByZXR1cm4gYnVmZmVyOwogfQogCi1UZXh0dXJlICpSZXNvdXJjZU1hbmFn
ZXI6OmNoZWNrVGV4dHVyZUFsbG9jYXRpb24oR0x1aW50IGhhbmRsZSwgR0xlbnVtIHR5cGUpCitU
ZXh0dXJlICpSZXNvdXJjZU1hbmFnZXI6OmNoZWNrVGV4dHVyZUFsbG9jYXRpb24ocng6OkdMSW1w
bEZhY3RvcnkgKmZhY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IGhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSkKIHsKICAgICBpZiAoaGFuZGxlID09IDAp
CiAgICAgewpAQCAtNDAzLDcgKzQ3MSw3IEBAIFRleHR1cmUgKlJlc291cmNlTWFuYWdlcjo6Y2hl
Y2tUZXh0dXJlQWwKICAgICAgICAgcmV0dXJuIHRleHR1cmVNYXBJdC0+c2Vjb25kOwogICAgIH0K
IAotICAgIFRleHR1cmUgKnRleHR1cmUgPSBuZXcgVGV4dHVyZShtRmFjdG9yeS0+Y3JlYXRlVGV4
dHVyZSh0eXBlKSwgaGFuZGxlLCB0eXBlKTsKKyAgICBUZXh0dXJlICp0ZXh0dXJlID0gbmV3IFRl
eHR1cmUoZmFjdG9yeSwgaGFuZGxlLCB0eXBlKTsKICAgICB0ZXh0dXJlLT5hZGRSZWYoKTsKIAog
ICAgIGlmIChoYW5kbGVBbGxvY2F0ZWQpCkBAIC00MTksNyArNDg3LDggQEAgVGV4dHVyZSAqUmVz
b3VyY2VNYW5hZ2VyOjpjaGVja1RleHR1cmVBbAogICAgIHJldHVybiB0ZXh0dXJlOwogfQogCi1S
ZW5kZXJidWZmZXIgKlJlc291cmNlTWFuYWdlcjo6Y2hlY2tSZW5kZXJidWZmZXJBbGxvY2F0aW9u
KEdMdWludCBoYW5kbGUpCitSZW5kZXJidWZmZXIgKlJlc291cmNlTWFuYWdlcjo6Y2hlY2tSZW5k
ZXJidWZmZXJBbGxvY2F0aW9uKHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
aGFuZGxlKQogewogICAgIGlmIChoYW5kbGUgPT0gMCkKICAgICB7CkBAIC00MzQsNyArNTAzLDcg
QEAgUmVuZGVyYnVmZmVyICpSZXNvdXJjZU1hbmFnZXI6OmNoZWNrUmVuZAogICAgICAgICByZXR1
cm4gcmVuZGVyYnVmZmVyTWFwSXQtPnNlY29uZDsKICAgICB9CiAKLSAgICBSZW5kZXJidWZmZXIg
KnJlbmRlcmJ1ZmZlciA9IG5ldyBSZW5kZXJidWZmZXIobUZhY3RvcnktPmNyZWF0ZVJlbmRlcmJ1
ZmZlcigpLCBoYW5kbGUpOworICAgIFJlbmRlcmJ1ZmZlciAqcmVuZGVyYnVmZmVyID0gbmV3IFJl
bmRlcmJ1ZmZlcihmYWN0b3J5LT5jcmVhdGVSZW5kZXJidWZmZXIoKSwgaGFuZGxlKTsKICAgICBy
ZW5kZXJidWZmZXItPmFkZFJlZigpOwogCiAgICAgaWYgKGhhbmRsZUFsbG9jYXRlZCkKQEAgLTQ1
MCw3ICs1MTksNyBAQCBSZW5kZXJidWZmZXIgKlJlc291cmNlTWFuYWdlcjo6Y2hlY2tSZW5kCiAg
ICAgcmV0dXJuIHJlbmRlcmJ1ZmZlcjsKIH0KIAotU2FtcGxlciAqUmVzb3VyY2VNYW5hZ2VyOjpj
aGVja1NhbXBsZXJBbGxvY2F0aW9uKEdMdWludCBzYW1wbGVySGFuZGxlKQorU2FtcGxlciAqUmVz
b3VyY2VNYW5hZ2VyOjpjaGVja1NhbXBsZXJBbGxvY2F0aW9uKHJ4OjpHTEltcGxGYWN0b3J5ICpm
YWN0b3J5LCBHTHVpbnQgc2FtcGxlckhhbmRsZSkKIHsKICAgICAvLyBTYW1wbGVycyBjYW5ub3Qg
YmUgY3JlYXRlZCB2aWEgQmluZAogICAgIGlmIChzYW1wbGVySGFuZGxlID09IDApCkBAIC00NjIs
NyArNTMxLDcgQEAgU2FtcGxlciAqUmVzb3VyY2VNYW5hZ2VyOjpjaGVja1NhbXBsZXJBbAogCiAg
ICAgaWYgKCFzYW1wbGVyKQogICAgIHsKLSAgICAgICAgc2FtcGxlciAgICAgICAgICAgICAgICAg
ICAgPSBuZXcgU2FtcGxlcihtRmFjdG9yeSwgc2FtcGxlckhhbmRsZSk7CisgICAgICAgIHNhbXBs
ZXIgICAgICAgICAgICAgICAgICAgID0gbmV3IFNhbXBsZXIoZmFjdG9yeSwgc2FtcGxlckhhbmRs
ZSk7CiAgICAgICAgIG1TYW1wbGVyTWFwW3NhbXBsZXJIYW5kbGVdID0gc2FtcGxlcjsKICAgICAg
ICAgc2FtcGxlci0+YWRkUmVmKCk7CiAgICAgfQpAQCAtNDc1LDQgKzU0NCwxOSBAQCBib29sIFJl
c291cmNlTWFuYWdlcjo6aXNTYW1wbGVyKEdMdWludCBzCiAgICAgcmV0dXJuIG1TYW1wbGVyTWFw
LmZpbmQoc2FtcGxlcikgIT0gbVNhbXBsZXJNYXAuZW5kKCk7CiB9CiAKK2Jvb2wgUmVzb3VyY2VN
YW5hZ2VyOjppc1RleHR1cmVHZW5lcmF0ZWQoR0x1aW50IHRleHR1cmUpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHRleHR1cmUgPT0gMCB8fCBtVGV4dHVyZU1hcC5maW5kKHRleHR1cmUpICE9IG1UZXh0
dXJlTWFwLmVuZCgpOworfQorCitib29sIFJlc291cmNlTWFuYWdlcjo6aXNCdWZmZXJHZW5lcmF0
ZWQoR0x1aW50IGJ1ZmZlcikgY29uc3QKK3sKKyAgICByZXR1cm4gYnVmZmVyID09IDAgfHwgbUJ1
ZmZlck1hcC5maW5kKGJ1ZmZlcikgIT0gbUJ1ZmZlck1hcC5lbmQoKTsKK30KKworYm9vbCBSZXNv
dXJjZU1hbmFnZXI6OmlzUmVuZGVyYnVmZmVyR2VuZXJhdGVkKEdMdWludCByZW5kZXJidWZmZXIp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHJlbmRlcmJ1ZmZlciA9PSAwIHx8IG1SZW5kZXJidWZmZXJN
YXAuZmluZChyZW5kZXJidWZmZXIpICE9IG1SZW5kZXJidWZmZXJNYXAuZW5kKCk7Cit9CisKIH0g
IC8vIG5hbWVzcGFjZSBnbApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL1Jlc291cmNlTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9SZXNvdXJjZU1hbmFnZXIuaAkocmV2aXNpb24gMjA3ODA0KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Jlc291cmNlTWFuYWdlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMywxOSArMTMsMjEgQEAKICNpbmNsdWRlICJhbmdsZV9nbC5oIgog
I2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvYW5nbGV0
eXBlcy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0Vycm9yLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
SGFuZGxlQWxsb2NhdG9yLmgiCisjaW5jbHVkZSAibGliQU5HTEUvSGFuZGxlUmFuZ2VBbGxvY2F0
b3IuaCIKIAogbmFtZXNwYWNlIHJ4CiB7Ci1jbGFzcyBJbXBsRmFjdG9yeTsKK2NsYXNzIEdMSW1w
bEZhY3Rvcnk7CiB9CiAKIG5hbWVzcGFjZSBnbAogewogY2xhc3MgQnVmZmVyOwotc3RydWN0IERh
dGE7CiBjbGFzcyBGZW5jZVN5bmM7CiBzdHJ1Y3QgTGltaXRhdGlvbnM7CitjbGFzcyBQYXRoOwog
Y2xhc3MgUHJvZ3JhbTsKIGNsYXNzIFJlbmRlcmJ1ZmZlcjsKIGNsYXNzIFNhbXBsZXI7CkBAIC0z
NSwxOSArMzcsMjIgQEAgY2xhc3MgVGV4dHVyZTsKIGNsYXNzIFJlc291cmNlTWFuYWdlciA6IGFu
Z2xlOjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6Ci0gICAgZXhwbGljaXQgUmVzb3VyY2VNYW5h
Z2VyKHJ4OjpJbXBsRmFjdG9yeSAqZmFjdG9yeSk7CisgICAgUmVzb3VyY2VNYW5hZ2VyKCk7CiAg
ICAgflJlc291cmNlTWFuYWdlcigpOwogCiAgICAgdm9pZCBhZGRSZWYoKTsKICAgICB2b2lkIHJl
bGVhc2UoKTsKIAogICAgIEdMdWludCBjcmVhdGVCdWZmZXIoKTsKLSAgICBHTHVpbnQgY3JlYXRl
U2hhZGVyKGNvbnN0IGdsOjpMaW1pdGF0aW9ucyAmcmVuZGVyZXJMaW1pdGF0aW9ucywgR0xlbnVt
IHR5cGUpOwotICAgIEdMdWludCBjcmVhdGVQcm9ncmFtKCk7CisgICAgR0x1aW50IGNyZWF0ZVNo
YWRlcihyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpMaW1pdGF0aW9ucyAmcmVuZGVyZXJMaW1pdGF0aW9ucywKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0eXBlKTsKKyAgICBHTHVpbnQgY3JlYXRlUHJvZ3JhbShyeDo6
R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSk7CiAgICAgR0x1aW50IGNyZWF0ZVRleHR1cmUoKTsKICAg
ICBHTHVpbnQgY3JlYXRlUmVuZGVyYnVmZmVyKCk7CiAgICAgR0x1aW50IGNyZWF0ZVNhbXBsZXIo
KTsKLSAgICBHTHVpbnQgY3JlYXRlRmVuY2VTeW5jKCk7CisgICAgR0x1aW50IGNyZWF0ZUZlbmNl
U3luYyhyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSk7CisgICAgRXJyb3JPclJlc3VsdDxHTHVp
bnQ+IGNyZWF0ZVBhdGhzKHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5LCBHTHNpemVpIHJhbmdl
KTsKIAogICAgIHZvaWQgZGVsZXRlQnVmZmVyKEdMdWludCBidWZmZXIpOwogICAgIHZvaWQgZGVs
ZXRlU2hhZGVyKEdMdWludCBzaGFkZXIpOwpAQCAtNTYsMjggKzYxLDM4IEBAIGNsYXNzIFJlc291
cmNlTWFuYWdlciA6IGFuZ2xlOjpOb25Db3B5YWIKICAgICB2b2lkIGRlbGV0ZVJlbmRlcmJ1ZmZl
cihHTHVpbnQgcmVuZGVyYnVmZmVyKTsKICAgICB2b2lkIGRlbGV0ZVNhbXBsZXIoR0x1aW50IHNh
bXBsZXIpOwogICAgIHZvaWQgZGVsZXRlRmVuY2VTeW5jKEdMdWludCBmZW5jZVN5bmMpOworICAg
IHZvaWQgZGVsZXRlUGF0aHMoR0x1aW50IGZpcnN0LCBHTHNpemVpIHJhbmdlKTsKIAogICAgIEJ1
ZmZlciAqZ2V0QnVmZmVyKEdMdWludCBoYW5kbGUpOwotICAgIFNoYWRlciAqZ2V0U2hhZGVyKEdM
dWludCBoYW5kbGUpOworICAgIFNoYWRlciAqZ2V0U2hhZGVyKEdMdWludCBoYW5kbGUpIGNvbnN0
OwogICAgIFByb2dyYW0gKmdldFByb2dyYW0oR0x1aW50IGhhbmRsZSkgY29uc3Q7CiAgICAgVGV4
dHVyZSAqZ2V0VGV4dHVyZShHTHVpbnQgaGFuZGxlKTsKICAgICBSZW5kZXJidWZmZXIgKmdldFJl
bmRlcmJ1ZmZlcihHTHVpbnQgaGFuZGxlKTsKICAgICBTYW1wbGVyICpnZXRTYW1wbGVyKEdMdWlu
dCBoYW5kbGUpOwogICAgIEZlbmNlU3luYyAqZ2V0RmVuY2VTeW5jKEdMdWludCBoYW5kbGUpOwog
CisgICAgLy8gQ0hST01JVU1fcGF0aF9yZW5kZXJpbmcKKyAgICBjb25zdCBQYXRoICpnZXRQYXRo
KEdMdWludCBwYXRoKSBjb25zdDsKKyAgICBQYXRoICpnZXRQYXRoKEdMdWludCBwYXRoKTsKKyAg
ICBib29sIGhhc1BhdGgoR0x1aW50IHBhdGgpIGNvbnN0OworCiAgICAgdm9pZCBzZXRSZW5kZXJi
dWZmZXIoR0x1aW50IGhhbmRsZSwgUmVuZGVyYnVmZmVyICpyZW5kZXJidWZmZXIpOwogCi0gICAg
QnVmZmVyICpjaGVja0J1ZmZlckFsbG9jYXRpb24oR0x1aW50IGhhbmRsZSk7Ci0gICAgVGV4dHVy
ZSAqY2hlY2tUZXh0dXJlQWxsb2NhdGlvbihHTHVpbnQgaGFuZGxlLCBHTGVudW0gdHlwZSk7Ci0g
ICAgUmVuZGVyYnVmZmVyICpjaGVja1JlbmRlcmJ1ZmZlckFsbG9jYXRpb24oR0x1aW50IGhhbmRs
ZSk7Ci0gICAgU2FtcGxlciAqY2hlY2tTYW1wbGVyQWxsb2NhdGlvbihHTHVpbnQgc2FtcGxlckhh
bmRsZSk7CisgICAgQnVmZmVyICpjaGVja0J1ZmZlckFsbG9jYXRpb24ocng6OkdMSW1wbEZhY3Rv
cnkgKmZhY3RvcnksIEdMdWludCBoYW5kbGUpOworICAgIFRleHR1cmUgKmNoZWNrVGV4dHVyZUFs
bG9jYXRpb24ocng6OkdMSW1wbEZhY3RvcnkgKmZhY3RvcnksIEdMdWludCBoYW5kbGUsIEdMZW51
bSB0eXBlKTsKKyAgICBSZW5kZXJidWZmZXIgKmNoZWNrUmVuZGVyYnVmZmVyQWxsb2NhdGlvbihy
eDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwgR0x1aW50IGhhbmRsZSk7CisgICAgU2FtcGxlciAq
Y2hlY2tTYW1wbGVyQWxsb2NhdGlvbihyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwgR0x1aW50
IHNhbXBsZXJIYW5kbGUpOwogCiAgICAgYm9vbCBpc1NhbXBsZXIoR0x1aW50IHNhbXBsZXIpOwog
CisgICAgLy8gR0xfQ0hST01JVU1fYmluZF9nZW5lcmF0ZXNfcmVzb3VyY2UKKyAgICBib29sIGlz
VGV4dHVyZUdlbmVyYXRlZChHTHVpbnQgdGV4dHVyZSkgY29uc3Q7CisgICAgYm9vbCBpc0J1ZmZl
ckdlbmVyYXRlZChHTHVpbnQgYnVmZmVyKSBjb25zdDsKKyAgICBib29sIGlzUmVuZGVyYnVmZmVy
R2VuZXJhdGVkKEdMdWludCByZW5kZXJidWZmZXIpIGNvbnN0OworCiAgIHByaXZhdGU6CiAgICAg
dm9pZCBjcmVhdGVUZXh0dXJlSW50ZXJuYWwoR0x1aW50IGhhbmRsZSk7CiAKLSAgICByeDo6SW1w
bEZhY3RvcnkgKm1GYWN0b3J5OwogICAgIHN0ZDo6c2l6ZV90IG1SZWZDb3VudDsKIAogICAgIFJl
c291cmNlTWFwPEJ1ZmZlcj4gbUJ1ZmZlck1hcDsKQEAgLTk5LDYgKzExNCw5IEBAIGNsYXNzIFJl
c291cmNlTWFuYWdlciA6IGFuZ2xlOjpOb25Db3B5YWIKIAogICAgIFJlc291cmNlTWFwPEZlbmNl
U3luYz4gbUZlbmNlU3luY01hcDsKICAgICBIYW5kbGVBbGxvY2F0b3IgbUZlbmNlU3luY0hhbmRs
ZUFsbG9jYXRvcjsKKworICAgIFJlc291cmNlTWFwPFBhdGg+IG1QYXRoTWFwOworICAgIEhhbmRs
ZVJhbmdlQWxsb2NhdG9yIG1QYXRoSGFuZGxlQWxsb2NhdG9yOwogfTsKIAogfSAgLy8gbmFtZXNw
YWNlIGdsCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUmVzb3Vy
Y2VNYW5hZ2VyX3VuaXR0ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvUmVzb3VyY2VNYW5hZ2VyX3VuaXR0ZXN0LmNwcAkocmV2aXNpb24g
MjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Jlc291cmNl
TWFuYWdlcl91bml0dGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTksMjkgKzksMjMgQEAKICNp
bmNsdWRlIDxnbW9jay9nbW9jay5oPgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAKLSNpbmNs
dWRlICJ0ZXN0cy9hbmdsZV91bml0dGVzdHNfdXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9S
ZXNvdXJjZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJ0ZXN0cy9hbmdsZV91bml0dGVzdHNfdXRpbHMu
aCIKIAogdXNpbmcgbmFtZXNwYWNlIHJ4OwogdXNpbmcgbmFtZXNwYWNlIGdsOwogCi1uYW1lc3Bh
Y2UKLXsKK3VzaW5nIDo6dGVzdGluZzo6XzsKIAotY2xhc3MgTW9ja0ZhY3RvcnkgOiBwdWJsaWMg
TnVsbEZhY3RvcnkKK25hbWVzcGFjZQogewotICBwdWJsaWM6Ci0gICAgTU9DS19NRVRIT0QwKGNy
ZWF0ZUJ1ZmZlciwgQnVmZmVySW1wbCooKSk7Ci0gICAgTU9DS19NRVRIT0QxKGNyZWF0ZVRleHR1
cmUsIFRleHR1cmVJbXBsKihHTGVudW0pKTsKLSAgICBNT0NLX01FVEhPRDAoY3JlYXRlUmVuZGVy
YnVmZmVyLCBSZW5kZXJidWZmZXJJbXBsKigpKTsKLX07CiAKIGNsYXNzIFJlc291cmNlTWFuYWdl
clRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdAogewogICBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBT
ZXRVcCgpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBtUmVzb3VyY2VNYW5hZ2VyID0gbmV3IFJl
c291cmNlTWFuYWdlcigmbU1vY2tGYWN0b3J5KTsKKyAgICAgICAgbVJlc291cmNlTWFuYWdlciA9
IG5ldyBSZXNvdXJjZU1hbmFnZXIoKTsKICAgICB9CiAKICAgICB2b2lkIFRlYXJEb3duKCkgb3Zl
cnJpZGUKQEAgLTM5LDE1ICszMywxNSBAQCBjbGFzcyBSZXNvdXJjZU1hbmFnZXJUZXN0IDogcHVi
bGljIHRlc3RpCiAgICAgICAgIFNhZmVEZWxldGUobVJlc291cmNlTWFuYWdlcik7CiAgICAgfQog
Ci0gICAgTW9ja0ZhY3RvcnkgbU1vY2tGYWN0b3J5OworICAgIE1vY2tHTEZhY3RvcnkgbU1vY2tG
YWN0b3J5OwogICAgIFJlc291cmNlTWFuYWdlciAqbVJlc291cmNlTWFuYWdlcjsKIH07CiAKIFRF
U1RfRihSZXNvdXJjZU1hbmFnZXJUZXN0LCBSZWFsbG9jYXRlQm91bmRUZXh0dXJlKQogewotICAg
IEVYUEVDVF9DQUxMKG1Nb2NrRmFjdG9yeSwgY3JlYXRlVGV4dHVyZShHTF9URVhUVVJFXzJEKSku
VGltZXMoMSkuUmV0aXJlc09uU2F0dXJhdGlvbigpOworICAgIEVYUEVDVF9DQUxMKG1Nb2NrRmFj
dG9yeSwgY3JlYXRlVGV4dHVyZShfKSkuVGltZXMoMSkuUmV0aXJlc09uU2F0dXJhdGlvbigpOwog
Ci0gICAgbVJlc291cmNlTWFuYWdlci0+Y2hlY2tUZXh0dXJlQWxsb2NhdGlvbigxLCBHTF9URVhU
VVJFXzJEKTsKKyAgICBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja1RleHR1cmVBbGxvY2F0aW9uKCZt
TW9ja0ZhY3RvcnksIDEsIEdMX1RFWFRVUkVfMkQpOwogICAgIEdMdWludCBuZXdUZXh0dXJlID0g
bVJlc291cmNlTWFuYWdlci0+Y3JlYXRlVGV4dHVyZSgpOwogICAgIEVYUEVDVF9ORSgxdSwgbmV3
VGV4dHVyZSk7CiB9CkBAIC01Niw3ICs1MCw3IEBAIFRFU1RfRihSZXNvdXJjZU1hbmFnZXJUZXN0
LCBSZWFsbG9jYXRlQm8KIHsKICAgICBFWFBFQ1RfQ0FMTChtTW9ja0ZhY3RvcnksIGNyZWF0ZUJ1
ZmZlcigpKS5UaW1lcygxKS5SZXRpcmVzT25TYXR1cmF0aW9uKCk7CiAKLSAgICBtUmVzb3VyY2VN
YW5hZ2VyLT5jaGVja0J1ZmZlckFsbG9jYXRpb24oMSk7CisgICAgbVJlc291cmNlTWFuYWdlci0+
Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKCZtTW9ja0ZhY3RvcnksIDEpOwogICAgIEdMdWludCBuZXdC
dWZmZXIgPSBtUmVzb3VyY2VNYW5hZ2VyLT5jcmVhdGVCdWZmZXIoKTsKICAgICBFWFBFQ1RfTkUo
MXUsIG5ld0J1ZmZlcik7CiB9CkBAIC02NSw5ICs1OSw5IEBAIFRFU1RfRihSZXNvdXJjZU1hbmFn
ZXJUZXN0LCBSZWFsbG9jYXRlQm8KIHsKICAgICBFWFBFQ1RfQ0FMTChtTW9ja0ZhY3RvcnksIGNy
ZWF0ZVJlbmRlcmJ1ZmZlcigpKS5UaW1lcygxKS5SZXRpcmVzT25TYXR1cmF0aW9uKCk7CiAKLSAg
ICBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja1JlbmRlcmJ1ZmZlckFsbG9jYXRpb24oMSk7CisgICAg
bVJlc291cmNlTWFuYWdlci0+Y2hlY2tSZW5kZXJidWZmZXJBbGxvY2F0aW9uKCZtTW9ja0ZhY3Rv
cnksIDEpOwogICAgIEdMdWludCBuZXdSZW5kZXJidWZmZXIgPSBtUmVzb3VyY2VNYW5hZ2VyLT5j
cmVhdGVSZW5kZXJidWZmZXIoKTsKICAgICBFWFBFQ1RfTkUoMXUsIG5ld1JlbmRlcmJ1ZmZlcik7
CiB9CiAKLX0KK30gIC8vIGFub255bW91cyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TYW1wbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU2FtcGxlci5jcHAJKHJldmlzaW9uIDIwNzgw
NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TYW1wbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOSwxMyArOSwxMyBAQAogCiAjaW5jbHVkZSAibGliQU5HTEUvU2Ft
cGxlci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMuaCIKLSNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9JbXBsRmFjdG9yeS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L0dMSW1wbEZhY3RvcnkuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9TYW1wbGVySW1w
bC5oIgogCiBuYW1lc3BhY2UgZ2wKIHsKIAotU2FtcGxlcjo6U2FtcGxlcihyeDo6SW1wbEZhY3Rv
cnkgKmZhY3RvcnksIEdMdWludCBpZCkKK1NhbXBsZXI6OlNhbXBsZXIocng6OkdMSW1wbEZhY3Rv
cnkgKmZhY3RvcnksIEdMdWludCBpZCkKICAgICA6IFJlZkNvdW50T2JqZWN0KGlkKSwgbUltcGwo
ZmFjdG9yeS0+Y3JlYXRlU2FtcGxlcigpKSwgbUxhYmVsKCksIG1TYW1wbGVyU3RhdGUoKQogewog
fQpAQCAtMTQwLDEzICsxNDAsOSBAQCBjb25zdCBTYW1wbGVyU3RhdGUgJlNhbXBsZXI6OmdldFNh
bXBsZXJTCiAgICAgcmV0dXJuIG1TYW1wbGVyU3RhdGU7CiB9CiAKLWNvbnN0IHJ4OjpTYW1wbGVy
SW1wbCAqU2FtcGxlcjo6Z2V0SW1wbGVtZW50YXRpb24oKSBjb25zdAorcng6OlNhbXBsZXJJbXBs
ICpTYW1wbGVyOjpnZXRJbXBsZW1lbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1JbXBs
OwogfQogCi1yeDo6U2FtcGxlckltcGwgKlNhbXBsZXI6OmdldEltcGxlbWVudGF0aW9uKCkKLXsK
LSAgICByZXR1cm4gbUltcGw7Ci19CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvU2FtcGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9TYW1wbGVyLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TYW1wbGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE2LDcgKzE2LDcgQEAKIAogbmFtZXNwYWNlIHJ4CiB7Ci1jbGFzcyBJbXBsRmFjdG9yeTsKK2Ns
YXNzIEdMSW1wbEZhY3Rvcnk7CiBjbGFzcyBTYW1wbGVySW1wbDsKIH0KIApAQCAtMjYsNyArMjYs
NyBAQCBuYW1lc3BhY2UgZ2wKIGNsYXNzIFNhbXBsZXIgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRP
YmplY3QsIHB1YmxpYyBMYWJlbGVkT2JqZWN0CiB7CiAgIHB1YmxpYzoKLSAgICBTYW1wbGVyKHJ4
OjpJbXBsRmFjdG9yeSAqZmFjdG9yeSwgR0x1aW50IGlkKTsKKyAgICBTYW1wbGVyKHJ4OjpHTElt
cGxGYWN0b3J5ICpmYWN0b3J5LCBHTHVpbnQgaWQpOwogICAgIH5TYW1wbGVyKCkgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIHNldExhYmVsKGNvbnN0IHN0ZDo6c3RyaW5nICZsYWJlbCkgb3ZlcnJpZGU7
CkBAIC02NCw4ICs2NCw3IEBAIGNsYXNzIFNhbXBsZXIgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRP
YmoKIAogICAgIGNvbnN0IFNhbXBsZXJTdGF0ZSAmZ2V0U2FtcGxlclN0YXRlKCkgY29uc3Q7CiAK
LSAgICBjb25zdCByeDo6U2FtcGxlckltcGwgKmdldEltcGxlbWVudGF0aW9uKCkgY29uc3Q7Ci0g
ICAgcng6OlNhbXBsZXJJbXBsICpnZXRJbXBsZW1lbnRhdGlvbigpOworICAgIHJ4OjpTYW1wbGVy
SW1wbCAqZ2V0SW1wbGVtZW50YXRpb24oKSBjb25zdDsKIAogICBwcml2YXRlOgogICAgIHJ4OjpT
YW1wbGVySW1wbCAqbUltcGw7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvU2hhZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvU2hhZGVyLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1NoYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
LDkgKzE0LDEwIEBACiAKICNpbmNsdWRlICJjb21tb24vdXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAi
R0xTTEFORy9TaGFkZXJMYW5nLmgiCisjaW5jbHVkZSAibGliQU5HTEUvQ2Fwcy5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL0NvbXBpbGVyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvQ29uc3RhbnRzLmgi
Ci0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvUmVuZGVyZXIuaCIKKyNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9HTEltcGxGYWN0b3J5LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvU2hhZGVySW1wbC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1Jlc291cmNlTWFuYWdlci5oIgog
CkBAIC03MiwyMSArNzMsMjIgQEAgYm9vbCBDb21wYXJlU2hhZGVyVmFyKGNvbnN0IHNoOjpTaGFk
ZXJWYQogICAgIHJldHVybiBnbDo6VmFyaWFibGVTb3J0T3JkZXIoeC50eXBlKSA8IGdsOjpWYXJp
YWJsZVNvcnRPcmRlcih5LnR5cGUpOwogfQogCi1TaGFkZXI6OkRhdGE6OkRhdGEoR0xlbnVtIHNo
YWRlclR5cGUpIDogbUxhYmVsKCksIG1TaGFkZXJUeXBlKHNoYWRlclR5cGUpLCBtU2hhZGVyVmVy
c2lvbigxMDApCitTaGFkZXJTdGF0ZTo6U2hhZGVyU3RhdGUoR0xlbnVtIHNoYWRlclR5cGUpIDog
bUxhYmVsKCksIG1TaGFkZXJUeXBlKHNoYWRlclR5cGUpLCBtU2hhZGVyVmVyc2lvbigxMDApCiB7
CisgICAgbUxvY2FsU2l6ZS5maWxsKC0xKTsKIH0KIAotU2hhZGVyOjpEYXRhOjp+RGF0YSgpCitT
aGFkZXJTdGF0ZTo6flNoYWRlclN0YXRlKCkKIHsKIH0KIAogU2hhZGVyOjpTaGFkZXIoUmVzb3Vy
Y2VNYW5hZ2VyICptYW5hZ2VyLAotICAgICAgICAgICAgICAgcng6OkltcGxGYWN0b3J5ICppbXBs
RmFjdG9yeSwKKyAgICAgICAgICAgICAgIHJ4OjpHTEltcGxGYWN0b3J5ICppbXBsRmFjdG9yeSwK
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpMaW1pdGF0aW9ucyAmcmVuZGVyZXJMaW1pdGF0aW9u
cywKICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgR0x1aW50IGhh
bmRsZSkKLSAgICA6IG1EYXRhKHR5cGUpLAotICAgICAgbUltcGxlbWVudGF0aW9uKGltcGxGYWN0
b3J5LT5jcmVhdGVTaGFkZXIobURhdGEpKSwKKyAgICA6IG1TdGF0ZSh0eXBlKSwKKyAgICAgIG1J
bXBsZW1lbnRhdGlvbihpbXBsRmFjdG9yeS0+Y3JlYXRlU2hhZGVyKG1TdGF0ZSkpLAogICAgICAg
bVJlbmRlcmVyTGltaXRhdGlvbnMocmVuZGVyZXJMaW1pdGF0aW9ucyksCiAgICAgICBtSGFuZGxl
KGhhbmRsZSksCiAgICAgICBtVHlwZSh0eXBlKSwKQEAgLTEwNSwxMiArMTA3LDEyIEBAIFNoYWRl
cjo6flNoYWRlcigpCiAKIHZvaWQgU2hhZGVyOjpzZXRMYWJlbChjb25zdCBzdGQ6OnN0cmluZyAm
bGFiZWwpCiB7Ci0gICAgbURhdGEubUxhYmVsID0gbGFiZWw7CisgICAgbVN0YXRlLm1MYWJlbCA9
IGxhYmVsOwogfQogCiBjb25zdCBzdGQ6OnN0cmluZyAmU2hhZGVyOjpnZXRMYWJlbCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1EYXRhLm1MYWJlbDsKKyAgICByZXR1cm4gbVN0YXRlLm1MYWJlbDsK
IH0KIAogR0x1aW50IFNoYWRlcjo6Z2V0SGFuZGxlKCkgY29uc3QKQEAgLTEzNCw3ICsxMzYsNyBA
QCB2b2lkIFNoYWRlcjo6c2V0U291cmNlKEdMc2l6ZWkgY291bnQsIGNvCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBtRGF0YS5tU291cmNlID0gc3RyZWFtLnN0cigpOworICAgIG1TdGF0ZS5tU291
cmNlID0gc3RyZWFtLnN0cigpOwogfQogCiBpbnQgU2hhZGVyOjpnZXRJbmZvTG9nTGVuZ3RoKCkg
Y29uc3QKQEAgLTE2NywxNyArMTY5LDE3IEBAIHZvaWQgU2hhZGVyOjpnZXRJbmZvTG9nKEdMc2l6
ZWkgYnVmU2l6ZSwKIAogaW50IFNoYWRlcjo6Z2V0U291cmNlTGVuZ3RoKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbURhdGEubVNvdXJjZS5lbXB0eSgpID8gMCA6IChzdGF0aWNfY2FzdDxpbnQ+KG1E
YXRhLm1Tb3VyY2UubGVuZ3RoKCkpICsgMSk7CisgICAgcmV0dXJuIG1TdGF0ZS5tU291cmNlLmVt
cHR5KCkgPyAwIDogKHN0YXRpY19jYXN0PGludD4obVN0YXRlLm1Tb3VyY2UubGVuZ3RoKCkpICsg
MSk7CiB9CiAKIGludCBTaGFkZXI6OmdldFRyYW5zbGF0ZWRTb3VyY2VMZW5ndGgoKSBjb25zdAog
ewotICAgIGlmIChtRGF0YS5tVHJhbnNsYXRlZFNvdXJjZS5lbXB0eSgpKQorICAgIGlmIChtU3Rh
dGUubVRyYW5zbGF0ZWRTb3VyY2UuZW1wdHkoKSkKICAgICB7CiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KIAotICAgIHJldHVybiAoc3RhdGljX2Nhc3Q8aW50PihtRGF0YS5tVHJhbnNsYXRlZFNv
dXJjZS5sZW5ndGgoKSkgKyAxKTsKKyAgICByZXR1cm4gKHN0YXRpY19jYXN0PGludD4obVN0YXRl
Lm1UcmFuc2xhdGVkU291cmNlLmxlbmd0aCgpKSArIDEpOwogfQogCiBpbnQgU2hhZGVyOjpnZXRU
cmFuc2xhdGVkU291cmNlV2l0aERlYnVnSW5mb0xlbmd0aCgpIGNvbnN0CkBAIC0yMTEsMTIgKzIx
MywxMiBAQCB2b2lkIFNoYWRlcjo6Z2V0U291cmNlSW1wbChjb25zdCBzdGQ6OnN0CiAKIHZvaWQg
U2hhZGVyOjpnZXRTb3VyY2UoR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIg
KmJ1ZmZlcikgY29uc3QKIHsKLSAgICBnZXRTb3VyY2VJbXBsKG1EYXRhLm1Tb3VyY2UsIGJ1ZlNp
emUsIGxlbmd0aCwgYnVmZmVyKTsKKyAgICBnZXRTb3VyY2VJbXBsKG1TdGF0ZS5tU291cmNlLCBi
dWZTaXplLCBsZW5ndGgsIGJ1ZmZlcik7CiB9CiAKIHZvaWQgU2hhZGVyOjpnZXRUcmFuc2xhdGVk
U291cmNlKEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICpidWZmZXIpIGNv
bnN0CiB7Ci0gICAgZ2V0U291cmNlSW1wbChtRGF0YS5tVHJhbnNsYXRlZFNvdXJjZSwgYnVmU2l6
ZSwgbGVuZ3RoLCBidWZmZXIpOworICAgIGdldFNvdXJjZUltcGwobVN0YXRlLm1UcmFuc2xhdGVk
U291cmNlLCBidWZTaXplLCBsZW5ndGgsIGJ1ZmZlcik7CiB9CiAKIHZvaWQgU2hhZGVyOjpnZXRU
cmFuc2xhdGVkU291cmNlV2l0aERlYnVnSW5mbyhHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxl
bmd0aCwgY2hhciAqYnVmZmVyKSBjb25zdApAQCAtMjI3LDIzICsyMjksMjMgQEAgdm9pZCBTaGFk
ZXI6OmdldFRyYW5zbGF0ZWRTb3VyY2VXaXRoRGVidQogCiB2b2lkIFNoYWRlcjo6Y29tcGlsZShD
b21waWxlciAqY29tcGlsZXIpCiB7Ci0gICAgbURhdGEubVRyYW5zbGF0ZWRTb3VyY2UuY2xlYXIo
KTsKKyAgICBtU3RhdGUubVRyYW5zbGF0ZWRTb3VyY2UuY2xlYXIoKTsKICAgICBtSW5mb0xvZy5j
bGVhcigpOwotICAgIG1EYXRhLm1TaGFkZXJWZXJzaW9uID0gMTAwOwotICAgIG1EYXRhLm1WYXJ5
aW5ncy5jbGVhcigpOwotICAgIG1EYXRhLm1Vbmlmb3Jtcy5jbGVhcigpOwotICAgIG1EYXRhLm1J
bnRlcmZhY2VCbG9ja3MuY2xlYXIoKTsKLSAgICBtRGF0YS5tQWN0aXZlQXR0cmlidXRlcy5jbGVh
cigpOwotICAgIG1EYXRhLm1BY3RpdmVPdXRwdXRWYXJpYWJsZXMuY2xlYXIoKTsKKyAgICBtU3Rh
dGUubVNoYWRlclZlcnNpb24gPSAxMDA7CisgICAgbVN0YXRlLm1WYXJ5aW5ncy5jbGVhcigpOwor
ICAgIG1TdGF0ZS5tVW5pZm9ybXMuY2xlYXIoKTsKKyAgICBtU3RhdGUubUludGVyZmFjZUJsb2Nr
cy5jbGVhcigpOworICAgIG1TdGF0ZS5tQWN0aXZlQXR0cmlidXRlcy5jbGVhcigpOworICAgIG1T
dGF0ZS5tQWN0aXZlT3V0cHV0VmFyaWFibGVzLmNsZWFyKCk7CiAKLSAgICBTaEhhbmRsZSBjb21w
aWxlckhhbmRsZSA9IGNvbXBpbGVyLT5nZXRDb21waWxlckhhbmRsZShtRGF0YS5tU2hhZGVyVHlw
ZSk7CisgICAgU2hIYW5kbGUgY29tcGlsZXJIYW5kbGUgPSBjb21waWxlci0+Z2V0Q29tcGlsZXJI
YW5kbGUobVN0YXRlLm1TaGFkZXJUeXBlKTsKIAogICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHNvdXJj
ZVN0cmVhbTsKIAogICAgIHN0ZDo6c3RyaW5nIHNvdXJjZVBhdGg7Ci0gICAgaW50IGFkZGl0aW9u
YWxPcHRpb25zID0KKyAgICBTaENvbXBpbGVPcHRpb25zIGFkZGl0aW9uYWxPcHRpb25zID0KICAg
ICAgICAgbUltcGxlbWVudGF0aW9uLT5wcmVwYXJlU291cmNlQW5kUmV0dXJuT3B0aW9ucygmc291
cmNlU3RyZWFtLCAmc291cmNlUGF0aCk7Ci0gICAgaW50IGNvbXBpbGVPcHRpb25zICAgID0gKFNI
X09CSkVDVF9DT0RFIHwgU0hfVkFSSUFCTEVTIHwgYWRkaXRpb25hbE9wdGlvbnMpOworICAgIFNo
Q29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMgPSAoU0hfT0JKRUNUX0NPREUgfCBTSF9WQVJJ
QUJMRVMgfCBhZGRpdGlvbmFsT3B0aW9ucyk7CiAKICAgICAvLyBTb21lIHRhcmdldHMgKGVnIEQz
RDExIEZlYXR1cmUgTGV2ZWwgOV8zIGFuZCBiZWxvdykgZG8gbm90IHN1cHBvcnQgbm9uLWNvbnN0
YW50IGxvb3AgaW5kZXhlcwogICAgIC8vIGluIGZyYWdtZW50IHNoYWRlcnMuIFNoYWRlciBjb21w
aWxhdGlvbiB3aWxsIGZhaWwuIFRvIHByb3ZpZGUgYSBiZXR0ZXIgZXJyb3IgbWVzc2FnZSB3ZSBj
YW4KQEAgLTI3NCw3ICsyNzYsNyBAQCB2b2lkIFNoYWRlcjo6Y29tcGlsZShDb21waWxlciAqY29t
cGlsZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtRGF0YS5tVHJhbnNsYXRlZFNv
dXJjZSA9IFNoR2V0T2JqZWN0Q29kZShjb21waWxlckhhbmRsZSk7CisgICAgbVN0YXRlLm1UcmFu
c2xhdGVkU291cmNlID0gU2hHZXRPYmplY3RDb2RlKGNvbXBpbGVySGFuZGxlKTsKIAogI2lmbmRl
ZiBOREVCVUcKICAgICAvLyBQcmVmaXggdHJhbnNsYXRlZCBzaGFkZXIgd2l0aCBjb21tZW50ZWQg
b3V0IHVuLXRyYW5zbGF0ZWQgc2hhZGVyLgpAQCAtMjg2LDQwICsyODgsNTAgQEAgdm9pZCBTaGFk
ZXI6OmNvbXBpbGUoQ29tcGlsZXIgKmNvbXBpbGVyKQogICAgIHNpemVfdCBjdXJQb3MgPSAwOwog
ICAgIHdoaWxlIChjdXJQb3MgIT0gc3RkOjpzdHJpbmc6Om5wb3MpCiAgICAgewotICAgICAgICBz
aXplX3QgbmV4dExpbmUgPSBtRGF0YS5tU291cmNlLmZpbmQoIlxuIiwgY3VyUG9zKTsKKyAgICAg
ICAgc2l6ZV90IG5leHRMaW5lID0gbVN0YXRlLm1Tb3VyY2UuZmluZCgiXG4iLCBjdXJQb3MpOwog
ICAgICAgICBzaXplX3QgbGVuICAgICAgPSAobmV4dExpbmUgPT0gc3RkOjpzdHJpbmc6Om5wb3Mp
ID8gc3RkOjpzdHJpbmc6Om5wb3MgOiAobmV4dExpbmUgLSBjdXJQb3MgKyAxKTsKIAotICAgICAg
ICBzaGFkZXJTdHJlYW0gPDwgIi8vICIgPDwgbURhdGEubVNvdXJjZS5zdWJzdHIoY3VyUG9zLCBs
ZW4pOworICAgICAgICBzaGFkZXJTdHJlYW0gPDwgIi8vICIgPDwgbVN0YXRlLm1Tb3VyY2Uuc3Vi
c3RyKGN1clBvcywgbGVuKTsKIAogICAgICAgICBjdXJQb3MgPSAobmV4dExpbmUgPT0gc3RkOjpz
dHJpbmc6Om5wb3MpID8gc3RkOjpzdHJpbmc6Om5wb3MgOiAobmV4dExpbmUgKyAxKTsKICAgICB9
CiAgICAgc2hhZGVyU3RyZWFtIDw8ICJcblxuIjsKLSAgICBzaGFkZXJTdHJlYW0gPDwgbURhdGEu
bVRyYW5zbGF0ZWRTb3VyY2U7Ci0gICAgbURhdGEubVRyYW5zbGF0ZWRTb3VyY2UgPSBzaGFkZXJT
dHJlYW0uc3RyKCk7CisgICAgc2hhZGVyU3RyZWFtIDw8IG1TdGF0ZS5tVHJhbnNsYXRlZFNvdXJj
ZTsKKyAgICBtU3RhdGUubVRyYW5zbGF0ZWRTb3VyY2UgPSBzaGFkZXJTdHJlYW0uc3RyKCk7CiAj
ZW5kaWYKIAogICAgIC8vIEdhdGhlciB0aGUgc2hhZGVyIGluZm9ybWF0aW9uCi0gICAgbURhdGEu
bVNoYWRlclZlcnNpb24gPSBTaEdldFNoYWRlclZlcnNpb24oY29tcGlsZXJIYW5kbGUpOworICAg
IG1TdGF0ZS5tU2hhZGVyVmVyc2lvbiA9IFNoR2V0U2hhZGVyVmVyc2lvbihjb21waWxlckhhbmRs
ZSk7CiAKLSAgICBtRGF0YS5tVmFyeWluZ3MgICAgICAgID0gR2V0U2hhZGVyVmFyaWFibGVzKFNo
R2V0VmFyeWluZ3MoY29tcGlsZXJIYW5kbGUpKTsKLSAgICBtRGF0YS5tVW5pZm9ybXMgICAgICAg
ID0gR2V0U2hhZGVyVmFyaWFibGVzKFNoR2V0VW5pZm9ybXMoY29tcGlsZXJIYW5kbGUpKTsKLSAg
ICBtRGF0YS5tSW50ZXJmYWNlQmxvY2tzID0gR2V0U2hhZGVyVmFyaWFibGVzKFNoR2V0SW50ZXJm
YWNlQmxvY2tzKGNvbXBpbGVySGFuZGxlKSk7CisgICAgbVN0YXRlLm1WYXJ5aW5ncyAgICAgICAg
PSBHZXRTaGFkZXJWYXJpYWJsZXMoU2hHZXRWYXJ5aW5ncyhjb21waWxlckhhbmRsZSkpOworICAg
IG1TdGF0ZS5tVW5pZm9ybXMgICAgICAgID0gR2V0U2hhZGVyVmFyaWFibGVzKFNoR2V0VW5pZm9y
bXMoY29tcGlsZXJIYW5kbGUpKTsKKyAgICBtU3RhdGUubUludGVyZmFjZUJsb2NrcyA9IEdldFNo
YWRlclZhcmlhYmxlcyhTaEdldEludGVyZmFjZUJsb2Nrcyhjb21waWxlckhhbmRsZSkpOwogCi0g
ICAgaWYgKG1EYXRhLm1TaGFkZXJUeXBlID09IEdMX1ZFUlRFWF9TSEFERVIpCisgICAgc3dpdGNo
IChtU3RhdGUubVNoYWRlclR5cGUpCiAgICAgewotICAgICAgICBtRGF0YS5tQWN0aXZlQXR0cmli
dXRlcyA9IEdldEFjdGl2ZVNoYWRlclZhcmlhYmxlcyhTaEdldEF0dHJpYnV0ZXMoY29tcGlsZXJI
YW5kbGUpKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1EYXRhLm1T
aGFkZXJUeXBlID09IEdMX0ZSQUdNRU5UX1NIQURFUik7Ci0KLSAgICAgICAgLy8gVE9ETyhqbWFk
aWxsKTogRmlndXJlIG91dCB3aHkgd2Ugb25seSBzb3J0IGluIHRoZSBGUywgYW5kIGlmIHdlIG5l
ZWQgdG8uCi0gICAgICAgIHN0ZDo6c29ydChtRGF0YS5tVmFyeWluZ3MuYmVnaW4oKSwgbURhdGEu
bVZhcnlpbmdzLmVuZCgpLCBDb21wYXJlU2hhZGVyVmFyKTsKLSAgICAgICAgbURhdGEubUFjdGl2
ZU91dHB1dFZhcmlhYmxlcyA9Ci0gICAgICAgICAgICBHZXRBY3RpdmVTaGFkZXJWYXJpYWJsZXMo
U2hHZXRPdXRwdXRWYXJpYWJsZXMoY29tcGlsZXJIYW5kbGUpKTsKKyAgICAgICAgY2FzZSBHTF9D
T01QVVRFX1NIQURFUjoKKyAgICAgICAgeworICAgICAgICAgICAgbVN0YXRlLm1Mb2NhbFNpemUg
PSBTaEdldENvbXB1dGVTaGFkZXJMb2NhbEdyb3VwU2l6ZShjb21waWxlckhhbmRsZSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1ZFUlRFWF9TSEFERVI6
CisgICAgICAgIHsKKyAgICAgICAgICAgIG1TdGF0ZS5tQWN0aXZlQXR0cmlidXRlcyA9IEdldEFj
dGl2ZVNoYWRlclZhcmlhYmxlcyhTaEdldEF0dHJpYnV0ZXMoY29tcGlsZXJIYW5kbGUpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfRlJBR01FTlRfU0hB
REVSOgorICAgICAgICB7CisgICAgICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBGaWd1cmUgb3V0
IHdoeSB3ZSBvbmx5IHNvcnQgaW4gdGhlIEZTLCBhbmQgaWYgd2UgbmVlZCB0by4KKyAgICAgICAg
ICAgIHN0ZDo6c29ydChtU3RhdGUubVZhcnlpbmdzLmJlZ2luKCksIG1TdGF0ZS5tVmFyeWluZ3Mu
ZW5kKCksIENvbXBhcmVTaGFkZXJWYXIpOworICAgICAgICAgICAgbVN0YXRlLm1BY3RpdmVPdXRw
dXRWYXJpYWJsZXMgPQorICAgICAgICAgICAgICAgIEdldEFjdGl2ZVNoYWRlclZhcmlhYmxlcyhT
aEdldE91dHB1dFZhcmlhYmxlcyhjb21waWxlckhhbmRsZSkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CiAgICAgfQogCi0gICAgQVNTRVJUKCFtRGF0YS5tVHJhbnNsYXRlZFNvdXJjZS5lbXB0eSgpKTsK
KyAgICBBU1NFUlQoIW1TdGF0ZS5tVHJhbnNsYXRlZFNvdXJjZS5lbXB0eSgpKTsKIAogICAgIG1D
b21waWxlZCA9IG1JbXBsZW1lbnRhdGlvbi0+cG9zdFRyYW5zbGF0ZUNvbXBpbGUoY29tcGlsZXIs
ICZtSW5mb0xvZyk7CiB9CkBAIC0zNTYsMzkgKzM2OCwzOSBAQCB2b2lkIFNoYWRlcjo6ZmxhZ0Zv
ckRlbGV0aW9uKCkKIAogaW50IFNoYWRlcjo6Z2V0U2hhZGVyVmVyc2lvbigpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1EYXRhLm1TaGFkZXJWZXJzaW9uOworICAgIHJldHVybiBtU3RhdGUubVNoYWRl
clZlcnNpb247CiB9CiAKIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpWYXJ5aW5nPiAmU2hhZGVyOjpn
ZXRWYXJ5aW5ncygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1EYXRhLmdldFZhcnlpbmdzKCk7Cisg
ICAgcmV0dXJuIG1TdGF0ZS5nZXRWYXJ5aW5ncygpOwogfQogCiBjb25zdCBzdGQ6OnZlY3Rvcjxz
aDo6VW5pZm9ybT4gJlNoYWRlcjo6Z2V0VW5pZm9ybXMoKSBjb25zdAogewotICAgIHJldHVybiBt
RGF0YS5nZXRVbmlmb3JtcygpOworICAgIHJldHVybiBtU3RhdGUuZ2V0VW5pZm9ybXMoKTsKIH0K
IAogY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OkludGVyZmFjZUJsb2NrPiAmU2hhZGVyOjpnZXRJbnRl
cmZhY2VCbG9ja3MoKSBjb25zdAogewotICAgIHJldHVybiBtRGF0YS5nZXRJbnRlcmZhY2VCbG9j
a3MoKTsKKyAgICByZXR1cm4gbVN0YXRlLmdldEludGVyZmFjZUJsb2NrcygpOwogfQogCiBjb25z
dCBzdGQ6OnZlY3RvcjxzaDo6QXR0cmlidXRlPiAmU2hhZGVyOjpnZXRBY3RpdmVBdHRyaWJ1dGVz
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbURhdGEuZ2V0QWN0aXZlQXR0cmlidXRlcygpOworICAg
IHJldHVybiBtU3RhdGUuZ2V0QWN0aXZlQXR0cmlidXRlcygpOwogfQogCiBjb25zdCBzdGQ6OnZl
Y3RvcjxzaDo6T3V0cHV0VmFyaWFibGU+ICZTaGFkZXI6OmdldEFjdGl2ZU91dHB1dFZhcmlhYmxl
cygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1EYXRhLmdldEFjdGl2ZU91dHB1dFZhcmlhYmxlcygp
OworICAgIHJldHVybiBtU3RhdGUuZ2V0QWN0aXZlT3V0cHV0VmFyaWFibGVzKCk7CiB9CiAKIGlu
dCBTaGFkZXI6OmdldFNlbWFudGljSW5kZXgoY29uc3Qgc3RkOjpzdHJpbmcgJmF0dHJpYnV0ZU5h
bWUpIGNvbnN0CiB7CiAgICAgaWYgKCFhdHRyaWJ1dGVOYW1lLmVtcHR5KCkpCiAgICAgewotICAg
ICAgICBjb25zdCBhdXRvICZhY3RpdmVBdHRyaWJ1dGVzID0gbURhdGEuZ2V0QWN0aXZlQXR0cmli
dXRlcygpOworICAgICAgICBjb25zdCBhdXRvICZhY3RpdmVBdHRyaWJ1dGVzID0gbVN0YXRlLmdl
dEFjdGl2ZUF0dHJpYnV0ZXMoKTsKIAogICAgICAgICBpbnQgc2VtYW50aWNJbmRleCA9IDA7CiAg
ICAgICAgIGZvciAoc2l6ZV90IGF0dHJpYnV0ZUluZGV4ID0gMDsgYXR0cmlidXRlSW5kZXggPCBh
Y3RpdmVBdHRyaWJ1dGVzLnNpemUoKTsgYXR0cmlidXRlSW5kZXgrKykKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TaGFkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU2hhZGVyLmgJKHJldmlzaW9uIDIwNzgw
NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TaGFkZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiBuYW1lc3BhY2UgcngKIHsKLWNsYXNzIElt
cGxGYWN0b3J5OworY2xhc3MgR0xJbXBsRmFjdG9yeTsKIGNsYXNzIFNoYWRlckltcGw7CiBjbGFz
cyBTaGFkZXJTaDsKIH0KQEAgLTMzLDU4ICszMyw1NyBAQCBjbGFzcyBTaGFkZXJTaDsKIG5hbWVz
cGFjZSBnbAogewogY2xhc3MgQ29tcGlsZXI7CitjbGFzcyBDb250ZXh0U3RhdGU7CiBzdHJ1Y3Qg
TGltaXRhdGlvbnM7CiBjbGFzcyBSZXNvdXJjZU1hbmFnZXI7Ci1zdHJ1Y3QgRGF0YTsKIAotY2xh
c3MgU2hhZGVyIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlLCBwdWJsaWMgTGFiZWxlZE9iamVj
dAorY2xhc3MgU2hhZGVyU3RhdGUgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKIHsKICAgcHVi
bGljOgotICAgIGNsYXNzIERhdGEgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKKyAgICBTaGFk
ZXJTdGF0ZShHTGVudW0gc2hhZGVyVHlwZSk7CisgICAgflNoYWRlclN0YXRlKCk7CisKKyAgICBj
b25zdCBzdGQ6OnN0cmluZyAmZ2V0TGFiZWwoKSBjb25zdCB7IHJldHVybiBtTGFiZWw7IH0KKwor
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZnZXRTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtU291cmNl
OyB9CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmdldFRyYW5zbGF0ZWRTb3VyY2UoKSBjb25zdCB7
IHJldHVybiBtVHJhbnNsYXRlZFNvdXJjZTsgfQorCisgICAgR0xlbnVtIGdldFNoYWRlclR5cGUo
KSBjb25zdCB7IHJldHVybiBtU2hhZGVyVHlwZTsgfQorICAgIGludCBnZXRTaGFkZXJWZXJzaW9u
KCkgY29uc3QgeyByZXR1cm4gbVNoYWRlclZlcnNpb247IH0KKworICAgIGNvbnN0IHN0ZDo6dmVj
dG9yPHNoOjpWYXJ5aW5nPiAmZ2V0VmFyeWluZ3MoKSBjb25zdCB7IHJldHVybiBtVmFyeWluZ3M7
IH0KKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6VW5pZm9ybT4gJmdldFVuaWZvcm1zKCkgY29u
c3QgeyByZXR1cm4gbVVuaWZvcm1zOyB9CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OkludGVy
ZmFjZUJsb2NrPiAmZ2V0SW50ZXJmYWNlQmxvY2tzKCkgY29uc3QgeyByZXR1cm4gbUludGVyZmFj
ZUJsb2NrczsgfQorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpBdHRyaWJ1dGU+ICZnZXRBY3Rp
dmVBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbUFjdGl2ZUF0dHJpYnV0ZXM7IH0KKyAgICBj
b25zdCBzdGQ6OnZlY3RvcjxzaDo6T3V0cHV0VmFyaWFibGU+ICZnZXRBY3RpdmVPdXRwdXRWYXJp
YWJsZXMoKSBjb25zdAogICAgIHsKLSAgICAgIHB1YmxpYzoKLSAgICAgICAgRGF0YShHTGVudW0g
c2hhZGVyVHlwZSk7Ci0gICAgICAgIH5EYXRhKCk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJmdldExhYmVsKCkgY29uc3QgeyByZXR1cm4gbUxhYmVsOyB9Ci0KLSAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcgJmdldFNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1Tb3VyY2U7IH0KLSAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJmdldFRyYW5zbGF0ZWRTb3VyY2UoKSBjb25zdCB7IHJldHVy
biBtVHJhbnNsYXRlZFNvdXJjZTsgfQotCi0gICAgICAgIEdMZW51bSBnZXRTaGFkZXJUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbVNoYWRlclR5cGU7IH0KLSAgICAgICAgaW50IGdldFNoYWRlclZlcnNp
b24oKSBjb25zdCB7IHJldHVybiBtU2hhZGVyVmVyc2lvbjsgfQotCi0gICAgICAgIGNvbnN0IHN0
ZDo6dmVjdG9yPHNoOjpWYXJ5aW5nPiAmZ2V0VmFyeWluZ3MoKSBjb25zdCB7IHJldHVybiBtVmFy
eWluZ3M7IH0KLSAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlVuaWZvcm0+ICZnZXRVbmlm
b3JtcygpIGNvbnN0IHsgcmV0dXJuIG1Vbmlmb3JtczsgfQotICAgICAgICBjb25zdCBzdGQ6OnZl
Y3RvcjxzaDo6SW50ZXJmYWNlQmxvY2s+ICZnZXRJbnRlcmZhY2VCbG9ja3MoKSBjb25zdAotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbUludGVyZmFjZUJsb2NrczsKLSAgICAgICAgfQot
ICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6QXR0cmlidXRlPiAmZ2V0QWN0aXZlQXR0cmli
dXRlcygpIGNvbnN0IHsgcmV0dXJuIG1BY3RpdmVBdHRyaWJ1dGVzOyB9Ci0gICAgICAgIGNvbnN0
IHN0ZDo6dmVjdG9yPHNoOjpPdXRwdXRWYXJpYWJsZT4gJmdldEFjdGl2ZU91dHB1dFZhcmlhYmxl
cygpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtQWN0aXZlT3V0cHV0VmFy
aWFibGVzOwotICAgICAgICB9Ci0KLSAgICAgIHByaXZhdGU6Ci0gICAgICAgIGZyaWVuZCBjbGFz
cyBTaGFkZXI7Ci0KLSAgICAgICAgc3RkOjpzdHJpbmcgbUxhYmVsOwotCi0gICAgICAgIEdMZW51
bSBtU2hhZGVyVHlwZTsKLSAgICAgICAgaW50IG1TaGFkZXJWZXJzaW9uOwotICAgICAgICBzdGQ6
OnN0cmluZyBtVHJhbnNsYXRlZFNvdXJjZTsKLSAgICAgICAgc3RkOjpzdHJpbmcgbVNvdXJjZTsK
LQotICAgICAgICBzdGQ6OnZlY3RvcjxzaDo6VmFyeWluZz4gbVZhcnlpbmdzOwotICAgICAgICBz
dGQ6OnZlY3RvcjxzaDo6VW5pZm9ybT4gbVVuaWZvcm1zOwotICAgICAgICBzdGQ6OnZlY3Rvcjxz
aDo6SW50ZXJmYWNlQmxvY2s+IG1JbnRlcmZhY2VCbG9ja3M7Ci0gICAgICAgIHN0ZDo6dmVjdG9y
PHNoOjpBdHRyaWJ1dGU+IG1BY3RpdmVBdHRyaWJ1dGVzOwotICAgICAgICBzdGQ6OnZlY3Rvcjxz
aDo6T3V0cHV0VmFyaWFibGU+IG1BY3RpdmVPdXRwdXRWYXJpYWJsZXM7Ci0gICAgfTsKKyAgICAg
ICAgcmV0dXJuIG1BY3RpdmVPdXRwdXRWYXJpYWJsZXM7CisgICAgfQorCisgIHByaXZhdGU6Cisg
ICAgZnJpZW5kIGNsYXNzIFNoYWRlcjsKKworICAgIHN0ZDo6c3RyaW5nIG1MYWJlbDsKIAorICAg
IEdMZW51bSBtU2hhZGVyVHlwZTsKKyAgICBpbnQgbVNoYWRlclZlcnNpb247CisgICAgc3RkOjpz
dHJpbmcgbVRyYW5zbGF0ZWRTb3VyY2U7CisgICAgc3RkOjpzdHJpbmcgbVNvdXJjZTsKKworICAg
IHNoOjpXb3JrR3JvdXBTaXplIG1Mb2NhbFNpemU7CisKKyAgICBzdGQ6OnZlY3RvcjxzaDo6VmFy
eWluZz4gbVZhcnlpbmdzOworICAgIHN0ZDo6dmVjdG9yPHNoOjpVbmlmb3JtPiBtVW5pZm9ybXM7
CisgICAgc3RkOjp2ZWN0b3I8c2g6OkludGVyZmFjZUJsb2NrPiBtSW50ZXJmYWNlQmxvY2tzOwor
ICAgIHN0ZDo6dmVjdG9yPHNoOjpBdHRyaWJ1dGU+IG1BY3RpdmVBdHRyaWJ1dGVzOworICAgIHN0
ZDo6dmVjdG9yPHNoOjpPdXRwdXRWYXJpYWJsZT4gbUFjdGl2ZU91dHB1dFZhcmlhYmxlczsKK307
CisKK2NsYXNzIFNoYWRlciBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZSwgcHVibGljIExhYmVs
ZWRPYmplY3QKK3sKKyAgcHVibGljOgogICAgIFNoYWRlcihSZXNvdXJjZU1hbmFnZXIgKm1hbmFn
ZXIsCi0gICAgICAgICAgIHJ4OjpJbXBsRmFjdG9yeSAqaW1wbEZhY3RvcnksCisgICAgICAgICAg
IHJ4OjpHTEltcGxGYWN0b3J5ICppbXBsRmFjdG9yeSwKICAgICAgICAgICAgY29uc3QgZ2w6Okxp
bWl0YXRpb25zICZyZW5kZXJlckxpbWl0YXRpb25zLAogICAgICAgICAgICBHTGVudW0gdHlwZSwK
ICAgICAgICAgICAgR0x1aW50IGhhbmRsZSk7CkBAIC05Nyw3ICs5Niw3IEBAIGNsYXNzIFNoYWRl
ciBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZSwKICAgICBHTGVudW0gZ2V0VHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1UeXBlOyB9CiAgICAgR0x1aW50IGdldEhhbmRsZSgpIGNvbnN0OwogCi0gICAg
Y29uc3Qgcng6OlNoYWRlckltcGwgKmdldEltcGxlbWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4g
bUltcGxlbWVudGF0aW9uOyB9CisgICAgcng6OlNoYWRlckltcGwgKmdldEltcGxlbWVudGF0aW9u
KCkgY29uc3QgeyByZXR1cm4gbUltcGxlbWVudGF0aW9uOyB9CiAKICAgICB2b2lkIGRlbGV0ZVNv
dXJjZSgpOwogICAgIHZvaWQgc2V0U291cmNlKEdMc2l6ZWkgY291bnQsIGNvbnN0IGNoYXIgKmNv
bnN0ICpzdHJpbmcsIGNvbnN0IEdMaW50ICpsZW5ndGgpOwpAQCAtMTA3LDcgKzEwNiw3IEBAIGNs
YXNzIFNoYWRlciBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZSwKICAgICB2b2lkIGdldFNvdXJj
ZShHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgY2hhciAqYnVmZmVyKSBjb25zdDsK
ICAgICBpbnQgZ2V0VHJhbnNsYXRlZFNvdXJjZUxlbmd0aCgpIGNvbnN0OwogICAgIGludCBnZXRU
cmFuc2xhdGVkU291cmNlV2l0aERlYnVnSW5mb0xlbmd0aCgpIGNvbnN0OwotICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZnZXRUcmFuc2xhdGVkU291cmNlKCkgY29uc3QgeyByZXR1cm4gbURhdGEuZ2V0
VHJhbnNsYXRlZFNvdXJjZSgpOyB9CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmdldFRyYW5zbGF0
ZWRTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtU3RhdGUuZ2V0VHJhbnNsYXRlZFNvdXJjZSgpOyB9
CiAgICAgdm9pZCBnZXRUcmFuc2xhdGVkU291cmNlKEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAq
bGVuZ3RoLCBjaGFyICpidWZmZXIpIGNvbnN0OwogICAgIHZvaWQgZ2V0VHJhbnNsYXRlZFNvdXJj
ZVdpdGhEZWJ1Z0luZm8oR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmJ1
ZmZlcikgY29uc3Q7CiAKQEAgLTEzMCwxMCArMTI5LDEyIEBAIGNsYXNzIFNoYWRlciBmaW5hbCA6
IGFuZ2xlOjpOb25Db3B5YWJsZSwKIAogICAgIGludCBnZXRTZW1hbnRpY0luZGV4KGNvbnN0IHN0
ZDo6c3RyaW5nICZhdHRyaWJ1dGVOYW1lKSBjb25zdDsKIAorICAgIGNvbnN0IHNoOjpXb3JrR3Jv
dXBTaXplICZnZXRXb3JrR3JvdXBTaXplKCkgY29uc3QgeyByZXR1cm4gbVN0YXRlLm1Mb2NhbFNp
emU7IH0KKwogICBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGdldFNvdXJjZUltcGwoY29uc3Qg
c3RkOjpzdHJpbmcgJnNvdXJjZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNo
YXIgKmJ1ZmZlcik7CiAKLSAgICBEYXRhIG1EYXRhOworICAgIFNoYWRlclN0YXRlIG1TdGF0ZTsK
ICAgICByeDo6U2hhZGVySW1wbCAqbUltcGxlbWVudGF0aW9uOwogICAgIGNvbnN0IGdsOjpMaW1p
dGF0aW9ucyAmbVJlbmRlcmVyTGltaXRhdGlvbnM7CiAgICAgY29uc3QgR0x1aW50IG1IYW5kbGU7
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU3RhdGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TdGF0ZS5j
cHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9TdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgsNyArOCwxMiBAQAogCiAjaW5jbHVk
ZSAibGliQU5HTEUvU3RhdGUuaCIKIAorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxzdHJp
bmcuaD4KKwogI2luY2x1ZGUgImNvbW1vbi9CaXRTZXRJdGVyYXRvci5oIgorI2luY2x1ZGUgImNv
bW1vbi9tYXRyaXhfdXRpbHMuaCIKKyNpbmNsdWRlICJjb21tb24vbWF0aHV0aWwuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9Db250ZXh0LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvQ2Fwcy5oIgogI2lu
Y2x1ZGUgImxpYkFOR0xFL0RlYnVnLmgiCkBAIC0xOCw2ICsyMywxNiBAQAogI2luY2x1ZGUgImxp
YkFOR0xFL1ZlcnRleEFycmF5LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvZm9ybWF0dXRpbHMuaCIK
IAorbmFtZXNwYWNlCit7CisKK0dMZW51bSBBY3RpdmVRdWVyeVR5cGUoY29uc3QgR0xlbnVtIHR5
cGUpCit7CisgICAgcmV0dXJuICh0eXBlID09IEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJW
QVRJVkUpID8gR0xfQU5ZX1NBTVBMRVNfUEFTU0VEIDogdHlwZTsKK30KKworfSAgLy8gYW5vbnlt
b3VzIG5hbWVwYWNlCisKIG5hbWVzcGFjZSBnbAogewogCkBAIC0zNSw2ICs1MCw3IEBAIFN0YXRl
OjpTdGF0ZSgpCiAgICAgICBtTGluZVdpZHRoKDApLAogICAgICAgbUdlbmVyYXRlTWlwbWFwSGlu
dChHTF9OT05FKSwKICAgICAgIG1GcmFnbWVudFNoYWRlckRlcml2YXRpdmVIaW50KEdMX05PTkUp
LAorICAgICAgbUJpbmRHZW5lcmF0ZXNSZXNvdXJjZSh0cnVlKSwKICAgICAgIG1OZWFyWigwKSwK
ICAgICAgIG1GYXJaKDApLAogICAgICAgbVJlYWRGcmFtZWJ1ZmZlcihudWxscHRyKSwKQEAgLTQy
LDcgKzU4LDkgQEAgU3RhdGU6OlN0YXRlKCkKICAgICAgIG1Qcm9ncmFtKG51bGxwdHIpLAogICAg
ICAgbVZlcnRleEFycmF5KG51bGxwdHIpLAogICAgICAgbUFjdGl2ZVNhbXBsZXIoMCksCi0gICAg
ICBtUHJpbWl0aXZlUmVzdGFydChmYWxzZSkKKyAgICAgIG1QcmltaXRpdmVSZXN0YXJ0KGZhbHNl
KSwKKyAgICAgIG1NdWx0aVNhbXBsaW5nKGZhbHNlKSwKKyAgICAgIG1TYW1wbGVBbHBoYVRvT25l
KGZhbHNlKQogewogfQogCkBAIC01NCw3ICs3Miw4IEBAIFN0YXRlOjp+U3RhdGUoKQogdm9pZCBT
dGF0ZTo6aW5pdGlhbGl6ZShjb25zdCBDYXBzICZjYXBzLAogICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBFeHRlbnNpb25zICZleHRlbnNpb25zLAogICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgY2xpZW50VmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWJ1ZykK
KyAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWJ1ZywKKyAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBiaW5kR2VuZXJhdGVzUmVzb3VyY2UpCiB7CiAgICAgbU1heERyYXdCdWZmZXJzID0g
Y2Fwcy5tYXhEcmF3QnVmZmVyczsKICAgICBtTWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyA9
IGNhcHMubWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0czsKQEAgLTEyMCw2ICsxMzksOCBAQCB2
b2lkIFN0YXRlOjppbml0aWFsaXplKGNvbnN0IENhcHMgJmNhcHMsCiAgICAgbUdlbmVyYXRlTWlw
bWFwSGludCA9IEdMX0RPTlRfQ0FSRTsKICAgICBtRnJhZ21lbnRTaGFkZXJEZXJpdmF0aXZlSGlu
dCA9IEdMX0RPTlRfQ0FSRTsKIAorICAgIG1CaW5kR2VuZXJhdGVzUmVzb3VyY2UgPSBiaW5kR2Vu
ZXJhdGVzUmVzb3VyY2U7CisKICAgICBtTGluZVdpZHRoID0gMS4wZjsKIAogICAgIG1WaWV3cG9y
dC54ID0gMDsKQEAgLTE0OCw2ICsxNjksMTAgQEAgdm9pZCBTdGF0ZTo6aW5pdGlhbGl6ZShjb25z
dCBDYXBzICZjYXBzLAogICAgICAgICBtU2FtcGxlclRleHR1cmVzW0dMX1RFWFRVUkVfMkRfQVJS
QVldLnJlc2l6ZShjYXBzLm1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpOwogICAgICAgICBt
U2FtcGxlclRleHR1cmVzW0dMX1RFWFRVUkVfM0RdLnJlc2l6ZShjYXBzLm1heENvbWJpbmVkVGV4
dHVyZUltYWdlVW5pdHMpOwogICAgIH0KKyAgICBpZiAoZXh0ZW5zaW9ucy5lZ2xJbWFnZUV4dGVy
bmFsIHx8IGV4dGVuc2lvbnMuZWdsU3RyZWFtQ29uc3VtZXJFeHRlcm5hbCkKKyAgICB7CisgICAg
ICAgIG1TYW1wbGVyVGV4dHVyZXNbR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVNdLnJlc2l6ZShjYXBz
Lm1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpOworICAgIH0KIAogICAgIG1TYW1wbGVycy5y
ZXNpemUoY2Fwcy5tYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsKIApAQCAtMTU1LDYgKzE4
MCw3IEBAIHZvaWQgU3RhdGU6OmluaXRpYWxpemUoY29uc3QgQ2FwcyAmY2FwcywKICAgICBtQWN0
aXZlUXVlcmllc1tHTF9BTllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFXS5zZXQobnVsbHB0
cik7CiAgICAgbUFjdGl2ZVF1ZXJpZXNbR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNf
V1JJVFRFTl0uc2V0KG51bGxwdHIpOwogICAgIG1BY3RpdmVRdWVyaWVzW0dMX1RJTUVfRUxBUFNF
RF9FWFRdLnNldChudWxscHRyKTsKKyAgICBtQWN0aXZlUXVlcmllc1tHTF9DT01NQU5EU19DT01Q
TEVURURfQ0hST01JVU1dLnNldChudWxscHRyKTsKIAogICAgIG1Qcm9ncmFtID0gbnVsbHB0cjsK
IApAQCAtMTY1LDYgKzE5MSwyMCBAQCB2b2lkIFN0YXRlOjppbml0aWFsaXplKGNvbnN0IENhcHMg
JmNhcHMsCiAKICAgICBtRGVidWcuc2V0T3V0cHV0RW5hYmxlZChkZWJ1Zyk7CiAgICAgbURlYnVn
LnNldE1heExvZ2dlZE1lc3NhZ2VzKGV4dGVuc2lvbnMubWF4RGVidWdMb2dnZWRNZXNzYWdlcyk7
CisKKyAgICBpZiAoZXh0ZW5zaW9ucy5mcmFtZWJ1ZmZlck11bHRpc2FtcGxlKQorICAgIHsKKyAg
ICAgICAgbU11bHRpU2FtcGxpbmcgPSB0cnVlOworICAgICAgICBtU2FtcGxlQWxwaGFUb09uZSA9
IGZhbHNlOworICAgIH0KKworICAgIG1Db3ZlcmFnZU1vZHVsYXRpb24gPSBHTF9OT05FOworCisg
ICAgYW5nbGU6Ok1hdHJpeDxHTGZsb2F0Pjo6c2V0VG9JZGVudGl0eShtUGF0aE1hdHJpeFByb2op
OworICAgIGFuZ2xlOjpNYXRyaXg8R0xmbG9hdD46OnNldFRvSWRlbnRpdHkobVBhdGhNYXRyaXhN
Vik7CisgICAgbVBhdGhTdGVuY2lsRnVuYyA9IEdMX0FMV0FZUzsKKyAgICBtUGF0aFN0ZW5jaWxS
ZWYgID0gMDsKKyAgICBtUGF0aFN0ZW5jaWxNYXNrID0gc3RkOjpudW1lcmljX2xpbWl0czxHTHVp
bnQ+OjptYXgoKTsKIH0KIAogdm9pZCBTdGF0ZTo6cmVzZXQoKQpAQCAtMjEyLDYgKzI1MiwxMiBA
QCB2b2lkIFN0YXRlOjpyZXNldCgpCiAKICAgICBtUHJvZ3JhbSA9IE5VTEw7CiAKKyAgICBhbmds
ZTo6TWF0cml4PEdMZmxvYXQ+OjpzZXRUb0lkZW50aXR5KG1QYXRoTWF0cml4UHJvaik7CisgICAg
YW5nbGU6Ok1hdHJpeDxHTGZsb2F0Pjo6c2V0VG9JZGVudGl0eShtUGF0aE1hdHJpeE1WKTsKKyAg
ICBtUGF0aFN0ZW5jaWxGdW5jID0gR0xfQUxXQVlTOworICAgIG1QYXRoU3RlbmNpbFJlZiAgPSAw
OworICAgIG1QYXRoU3RlbmNpbE1hc2sgPSBzdGQ6Om51bWVyaWNfbGltaXRzPEdMdWludD46Om1h
eCgpOworCiAgICAgLy8gVE9ETyhqbWFkaWxsKTogSXMgdGhpcyBuZWNlc3Nhcnk/CiAgICAgc2V0
QWxsRGlydHlCaXRzKCk7CiB9CkBAIC00OTksNiArNTQ1LDI4IEBAIGJvb2wgU3RhdGU6OmdldFNh
bXBsZUNvdmVyYWdlSW52ZXJ0KCkgY28KICAgICByZXR1cm4gbVNhbXBsZUNvdmVyYWdlSW52ZXJ0
OwogfQogCit2b2lkIFN0YXRlOjpzZXRTYW1wbGVBbHBoYVRvT25lKGJvb2wgZW5hYmxlZCkKK3sK
KyAgICBtU2FtcGxlQWxwaGFUb09uZSA9IGVuYWJsZWQ7CisgICAgbURpcnR5Qml0cy5zZXQoRElS
VFlfQklUX1NBTVBMRV9BTFBIQV9UT19PTkUpOworfQorCitib29sIFN0YXRlOjppc1NhbXBsZUFs
cGhhVG9PbmVFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVNhbXBsZUFscGhhVG9PbmU7
Cit9CisKK3ZvaWQgU3RhdGU6OnNldE11bHRpc2FtcGxpbmcoYm9vbCBlbmFibGVkKQoreworICAg
IG1NdWx0aVNhbXBsaW5nID0gZW5hYmxlZDsKKyAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRf
TVVMVElTQU1QTElORyk7Cit9CisKK2Jvb2wgU3RhdGU6OmlzTXVsdGlzYW1wbGluZ0VuYWJsZWQo
KSBjb25zdAoreworICAgIHJldHVybiBtTXVsdGlTYW1wbGluZzsKK30KKwogYm9vbCBTdGF0ZTo6
aXNTY2lzc29yVGVzdEVuYWJsZWQoKSBjb25zdAogewogICAgIHJldHVybiBtU2Npc3NvclRlc3Q7
CkBAIC01NTAsNiArNjE4LDggQEAgdm9pZCBTdGF0ZTo6c2V0RW5hYmxlRmVhdHVyZShHTGVudW0g
ZmVhdAogewogICAgIHN3aXRjaCAoZmVhdHVyZSkKICAgICB7CisgICAgICBjYXNlIEdMX01VTFRJ
U0FNUExFX0VYVDogICAgICAgICAgICAgICBzZXRNdWx0aXNhbXBsaW5nKGVuYWJsZWQpOyAgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TQU1QTEVfQUxQSEFfVE9fT05FX0VYVDogICAgICAg
c2V0U2FtcGxlQWxwaGFUb09uZShlbmFibGVkKTsgICAgICBicmVhazsKICAgICAgIGNhc2UgR0xf
Q1VMTF9GQUNFOiAgICAgICAgICAgICAgICAgICAgIHNldEN1bGxGYWNlKGVuYWJsZWQpOyAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEdMX1BPTFlHT05fT0ZGU0VUX0ZJTEw6ICAgICAg
ICAgICBzZXRQb2x5Z29uT2Zmc2V0RmlsbChlbmFibGVkKTsgICAgIGJyZWFrOwogICAgICAgY2Fz
ZSBHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0U6ICAgICAgc2V0U2FtcGxlQWxwaGFUb0NvdmVy
YWdlKGVuYWJsZWQpOyBicmVhazsKQEAgLTU3MSwxMCArNjQxLDEyIEBAIHZvaWQgU3RhdGU6OnNl
dEVuYWJsZUZlYXR1cmUoR0xlbnVtIGZlYXQKICAgICB9CiB9CiAKLWJvb2wgU3RhdGU6OmdldEVu
YWJsZUZlYXR1cmUoR0xlbnVtIGZlYXR1cmUpCitib29sIFN0YXRlOjpnZXRFbmFibGVGZWF0dXJl
KEdMZW51bSBmZWF0dXJlKSBjb25zdAogewogICAgIHN3aXRjaCAoZmVhdHVyZSkKICAgICB7Cisg
ICAgICBjYXNlIEdMX01VTFRJU0FNUExFX0VYVDogICAgICAgICAgICAgICByZXR1cm4gaXNNdWx0
aXNhbXBsaW5nRW5hYmxlZCgpOworICAgICAgY2FzZSBHTF9TQU1QTEVfQUxQSEFfVE9fT05FX0VY
VDogICAgICAgcmV0dXJuIGlzU2FtcGxlQWxwaGFUb09uZUVuYWJsZWQoKTsKICAgICAgIGNhc2Ug
R0xfQ1VMTF9GQUNFOiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpc0N1bGxGYWNlRW5hYmxl
ZCgpOwogICAgICAgY2FzZSBHTF9QT0xZR09OX09GRlNFVF9GSUxMOiAgICAgICAgICAgcmV0dXJu
IGlzUG9seWdvbk9mZnNldEZpbGxFbmFibGVkKCk7CiAgICAgICBjYXNlIEdMX1NBTVBMRV9BTFBI
QV9UT19DT1ZFUkFHRTogICAgICByZXR1cm4gaXNTYW1wbGVBbHBoYVRvQ292ZXJhZ2VFbmFibGVk
KCk7CkBAIC01OTAsNiArNjYyLDggQEAgYm9vbCBTdGF0ZTo6Z2V0RW5hYmxlRmVhdHVyZShHTGVu
dW0gZmVhdAogICAgICAgICAgIHJldHVybiBtRGVidWcuaXNPdXRwdXRTeW5jaHJvbm91cygpOwog
ICAgICAgY2FzZSBHTF9ERUJVR19PVVRQVVQ6CiAgICAgICAgICAgcmV0dXJuIG1EZWJ1Zy5pc091
dHB1dEVuYWJsZWQoKTsKKyAgICAgIGNhc2UgR0xfQklORF9HRU5FUkFURVNfUkVTT1VSQ0VfQ0hS
T01JVU06CisgICAgICAgICAgcmV0dXJuIGlzQmluZEdlbmVyYXRlc1Jlc291cmNlRW5hYmxlZCgp
OwogICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0KQEAgLTYyMCw2ICs2OTQsMTEgQEAgdm9pZCBT
dGF0ZTo6c2V0RnJhZ21lbnRTaGFkZXJEZXJpdmF0aXZlSAogICAgIC8vIElnbm9yZSBmb3Igbm93
LiBJdCBpcyB2YWxpZCBmb3IgaW1wbGVtZW50YXRpb25zIHRvIGlnbm9yZSBoaW50LgogfQogCiti
b29sIFN0YXRlOjppc0JpbmRHZW5lcmF0ZXNSZXNvdXJjZUVuYWJsZWQoKSBjb25zdAoreworICAg
IHJldHVybiBtQmluZEdlbmVyYXRlc1Jlc291cmNlOworfQorCiB2b2lkIFN0YXRlOjpzZXRWaWV3
cG9ydFBhcmFtcyhHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCkKIHsKICAgICBtVmlld3BvcnQueCA9IHg7CkBAIC02ODEsMTAgKzc2MCwxMCBAQCB2b2lkIFN0
YXRlOjpkZXRhY2hUZXh0dXJlKGNvbnN0IFRleHR1cmVNCiAgICAgLy8gSWYgYSB0ZXh0dXJlIG9i
amVjdCBpcyBkZWxldGVkLCBpdCBpcyBhcyBpZiBhbGwgdGV4dHVyZSB1bml0cyB3aGljaCBhcmUg
Ym91bmQgdG8gdGhhdCB0ZXh0dXJlIG9iamVjdCBhcmUKICAgICAvLyByZWJvdW5kIHRvIHRleHR1
cmUgb2JqZWN0IHplcm8KIAotICAgIGZvciAoVGV4dHVyZUJpbmRpbmdNYXA6Oml0ZXJhdG9yIGJp
bmRpbmdWZWMgPSBtU2FtcGxlclRleHR1cmVzLmJlZ2luKCk7IGJpbmRpbmdWZWMgIT0gbVNhbXBs
ZXJUZXh0dXJlcy5lbmQoKTsgYmluZGluZ1ZlYysrKQorICAgIGZvciAoYXV0byAmYmluZGluZ1Zl
YyA6IG1TYW1wbGVyVGV4dHVyZXMpCiAgICAgewotICAgICAgICBHTGVudW0gdGV4dHVyZVR5cGUg
PSBiaW5kaW5nVmVjLT5maXJzdDsKLSAgICAgICAgVGV4dHVyZUJpbmRpbmdWZWN0b3IgJnRleHR1
cmVWZWN0b3IgPSBiaW5kaW5nVmVjLT5zZWNvbmQ7CisgICAgICAgIEdMZW51bSB0ZXh0dXJlVHlw
ZSA9IGJpbmRpbmdWZWMuZmlyc3Q7CisgICAgICAgIFRleHR1cmVCaW5kaW5nVmVjdG9yICZ0ZXh0
dXJlVmVjdG9yID0gYmluZGluZ1ZlYy5zZWNvbmQ7CiAgICAgICAgIGZvciAoc2l6ZV90IHRleHR1
cmVJZHggPSAwOyB0ZXh0dXJlSWR4IDwgdGV4dHVyZVZlY3Rvci5zaXplKCk7IHRleHR1cmVJZHgr
KykKICAgICAgICAgewogICAgICAgICAgICAgQmluZGluZ1BvaW50ZXI8VGV4dHVyZT4gJmJpbmRp
bmcgPSB0ZXh0dXJlVmVjdG9yW3RleHR1cmVJZHhdOwpAQCAtNzY5LDcgKzg0OCw3IEBAIEdMdWlu
dCBTdGF0ZTo6Z2V0UmVuZGVyYnVmZmVySWQoKSBjb25zdAogICAgIHJldHVybiBtUmVuZGVyYnVm
ZmVyLmlkKCk7CiB9CiAKLVJlbmRlcmJ1ZmZlciAqU3RhdGU6OmdldEN1cnJlbnRSZW5kZXJidWZm
ZXIoKQorUmVuZGVyYnVmZmVyICpTdGF0ZTo6Z2V0Q3VycmVudFJlbmRlcmJ1ZmZlcigpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1SZW5kZXJidWZmZXIuZ2V0KCk7CiB9CkBAIC04NDgsMjIgKzkyNywx
MiBAQCBGcmFtZWJ1ZmZlciAqU3RhdGU6OmdldFRhcmdldEZyYW1lYnVmZmVyCiAgICAgfQogfQog
Ci1GcmFtZWJ1ZmZlciAqU3RhdGU6OmdldFJlYWRGcmFtZWJ1ZmZlcigpCi17Ci0gICAgcmV0dXJu
IG1SZWFkRnJhbWVidWZmZXI7Ci19Ci0KLUZyYW1lYnVmZmVyICpTdGF0ZTo6Z2V0RHJhd0ZyYW1l
YnVmZmVyKCkKLXsKLSAgICByZXR1cm4gbURyYXdGcmFtZWJ1ZmZlcjsKLX0KLQotY29uc3QgRnJh
bWVidWZmZXIgKlN0YXRlOjpnZXRSZWFkRnJhbWVidWZmZXIoKSBjb25zdAorRnJhbWVidWZmZXIg
KlN0YXRlOjpnZXRSZWFkRnJhbWVidWZmZXIoKSBjb25zdAogewogICAgIHJldHVybiBtUmVhZEZy
YW1lYnVmZmVyOwogfQogCi1jb25zdCBGcmFtZWJ1ZmZlciAqU3RhdGU6OmdldERyYXdGcmFtZWJ1
ZmZlcigpIGNvbnN0CitGcmFtZWJ1ZmZlciAqU3RhdGU6OmdldERyYXdGcmFtZWJ1ZmZlcigpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1EcmF3RnJhbWVidWZmZXI7CiB9CkBAIC05NjcsMTkgKzEwMzYs
MjMgQEAgYm9vbCBTdGF0ZTo6aXNUcmFuc2Zvcm1GZWVkYmFja0FjdGl2ZVVucAogICAgIHJldHVy
biBjdXJUcmFuc2Zvcm1GZWVkYmFjayAmJiBjdXJUcmFuc2Zvcm1GZWVkYmFjay0+aXNBY3RpdmUo
KSAmJiAhY3VyVHJhbnNmb3JtRmVlZGJhY2stPmlzUGF1c2VkKCk7CiB9CiAKLXZvaWQgU3RhdGU6
OmRldGFjaFRyYW5zZm9ybUZlZWRiYWNrKEdMdWludCB0cmFuc2Zvcm1GZWVkYmFjaykKK2Jvb2wg
U3RhdGU6OnJlbW92ZVRyYW5zZm9ybUZlZWRiYWNrQmluZGluZyhHTHVpbnQgdHJhbnNmb3JtRmVl
ZGJhY2spCiB7CiAgICAgaWYgKG1UcmFuc2Zvcm1GZWVkYmFjay5pZCgpID09IHRyYW5zZm9ybUZl
ZWRiYWNrKQogICAgIHsKLSAgICAgICAgbVRyYW5zZm9ybUZlZWRiYWNrLnNldChOVUxMKTsKKyAg
ICAgICAgbVRyYW5zZm9ybUZlZWRiYWNrLnNldChudWxscHRyKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFN0YXRlOjppc1F1ZXJ5
QWN0aXZlKCkgY29uc3QKK2Jvb2wgU3RhdGU6OmlzUXVlcnlBY3RpdmUoY29uc3QgR0xlbnVtIHR5
cGUpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvICZpdGVyIDogbUFjdGl2ZVF1ZXJpZXMpCiAgICAg
ewotICAgICAgICBpZiAoaXRlci5zZWNvbmQuZ2V0KCkgIT0gTlVMTCkKKyAgICAgICAgY29uc3Qg
UXVlcnkgKnF1ZXJ5ID0gaXRlci5zZWNvbmQuZ2V0KCk7CisgICAgICAgIGlmIChxdWVyeSAhPSBu
dWxscHRyICYmIEFjdGl2ZVF1ZXJ5VHlwZShxdWVyeS0+Z2V0VHlwZSgpKSA9PSBBY3RpdmVRdWVy
eVR5cGUodHlwZSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CkBAIC0xMDYxLDExICsxMTM0LDEzIEBAIHZvaWQgU3RhdGU6OnNldENvcHlXcml0ZUJ1ZmZl
ckJpbmRpbmcoQnUKIHZvaWQgU3RhdGU6OnNldFBpeGVsUGFja0J1ZmZlckJpbmRpbmcoQnVmZmVy
ICpidWZmZXIpCiB7CiAgICAgbVBhY2sucGl4ZWxCdWZmZXIuc2V0KGJ1ZmZlcik7CisgICAgbURp
cnR5Qml0cy5zZXQoRElSVFlfQklUX1BBQ0tfQlVGRkVSX0JJTkRJTkcpOwogfQogCiB2b2lkIFN0
YXRlOjpzZXRQaXhlbFVucGFja0J1ZmZlckJpbmRpbmcoQnVmZmVyICpidWZmZXIpCiB7CiAgICAg
bVVucGFjay5waXhlbEJ1ZmZlci5zZXQoYnVmZmVyKTsKKyAgICBtRGlydHlCaXRzLnNldChESVJU
WV9CSVRfVU5QQUNLX0JVRkZFUl9CSU5ESU5HKTsKIH0KIAogQnVmZmVyICpTdGF0ZTo6Z2V0VGFy
Z2V0QnVmZmVyKEdMZW51bSB0YXJnZXQpIGNvbnN0CkBAIC0xMzE0LDYgKzEzODksNzMgQEAgRGVi
dWcgJlN0YXRlOjpnZXREZWJ1ZygpCiAgICAgcmV0dXJuIG1EZWJ1ZzsKIH0KIAordm9pZCBTdGF0
ZTo6c2V0Q292ZXJhZ2VNb2R1bGF0aW9uKEdMZW51bSBjb21wb25lbnRzKQoreworICAgIG1Db3Zl
cmFnZU1vZHVsYXRpb24gPSBjb21wb25lbnRzOworICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJ
VF9DT1ZFUkFHRV9NT0RVTEFUSU9OKTsKK30KKworR0xlbnVtIFN0YXRlOjpnZXRDb3ZlcmFnZU1v
ZHVsYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBtQ292ZXJhZ2VNb2R1bGF0aW9uOworfQor
Cit2b2lkIFN0YXRlOjpsb2FkUGF0aFJlbmRlcmluZ01hdHJpeChHTGVudW0gbWF0cml4TW9kZSwg
Y29uc3QgR0xmbG9hdCAqbWF0cml4KQoreworICAgIGlmIChtYXRyaXhNb2RlID09IEdMX1BBVEhf
TU9ERUxWSUVXX0NIUk9NSVVNKQorICAgIHsKKyAgICAgICAgbWVtY3B5KG1QYXRoTWF0cml4TVYs
IG1hdHJpeCwgMTYgKiBzaXplb2YoR0xmbG9hdCkpOworICAgICAgICBtRGlydHlCaXRzLnNldChE
SVJUWV9CSVRfUEFUSF9SRU5ERVJJTkdfTUFUUklYX01WKTsKKyAgICB9CisgICAgZWxzZSBpZiAo
bWF0cml4TW9kZSA9PSBHTF9QQVRIX1BST0pFQ1RJT05fQ0hST01JVU0pCisgICAgeworICAgICAg
ICBtZW1jcHkobVBhdGhNYXRyaXhQcm9qLCBtYXRyaXgsIDE2ICogc2l6ZW9mKEdMZmxvYXQpKTsK
KyAgICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX1BBVEhfUkVOREVSSU5HX01BVFJJWF9Q
Uk9KKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICB9Cit9CisKK2NvbnN0IEdMZmxvYXQgKlN0YXRlOjpnZXRQYXRoUmVuZGVyaW5nTWF0cml4KEdM
ZW51bSB3aGljaCkgY29uc3QKK3sKKyAgICBpZiAod2hpY2ggPT0gR0xfUEFUSF9NT0RFTFZJRVdf
TUFUUklYX0NIUk9NSVVNKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1QYXRoTWF0cml4TVY7Cisg
ICAgfQorICAgIGVsc2UgaWYgKHdoaWNoID09IEdMX1BBVEhfUFJPSkVDVElPTl9NQVRSSVhfQ0hS
T01JVU0pCisgICAgeworICAgICAgICByZXR1cm4gbVBhdGhNYXRyaXhQcm9qOworICAgIH0KKwor
ICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgU3RhdGU6
OnNldFBhdGhTdGVuY2lsRnVuYyhHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzaykK
K3sKKyAgICBtUGF0aFN0ZW5jaWxGdW5jID0gZnVuYzsKKyAgICBtUGF0aFN0ZW5jaWxSZWYgID0g
cmVmOworICAgIG1QYXRoU3RlbmNpbE1hc2sgPSBtYXNrOworICAgIG1EaXJ0eUJpdHMuc2V0KERJ
UlRZX0JJVF9QQVRIX1JFTkRFUklOR19TVEVOQ0lMX1NUQVRFKTsKK30KKworR0xlbnVtIFN0YXRl
OjpnZXRQYXRoU3RlbmNpbEZ1bmMoKSBjb25zdAoreworICAgIHJldHVybiBtUGF0aFN0ZW5jaWxG
dW5jOworfQorCitHTGludCBTdGF0ZTo6Z2V0UGF0aFN0ZW5jaWxSZWYoKSBjb25zdAoreworICAg
IHJldHVybiBtUGF0aFN0ZW5jaWxSZWY7Cit9CisKK0dMdWludCBTdGF0ZTo6Z2V0UGF0aFN0ZW5j
aWxNYXNrKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVBhdGhTdGVuY2lsTWFzazsKK30KKwogdm9p
ZCBTdGF0ZTo6Z2V0Qm9vbGVhbnYoR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4gKnBhcmFtcykKIHsK
ICAgICBzd2l0Y2ggKHBuYW1lKQpAQCAtMTM0OSw2ICsxNDkxLDE1IEBAIHZvaWQgU3RhdGU6Omdl
dEJvb2xlYW52KEdMZW51bSBwbmFtZSwgR0wKICAgICAgIGNhc2UgR0xfREVCVUdfT1VUUFVUOgog
ICAgICAgICAgICpwYXJhbXMgPSBtRGVidWcuaXNPdXRwdXRFbmFibGVkKCkgPyBHTF9UUlVFIDog
R0xfRkFMU0U7CiAgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX01VTFRJU0FNUExFX0VY
VDoKKyAgICAgICAgICAqcGFyYW1zID0gbU11bHRpU2FtcGxpbmc7CisgICAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIEdMX1NBTVBMRV9BTFBIQV9UT19PTkVfRVhUOgorICAgICAgICAgICpwYXJh
bXMgPSBtU2FtcGxlQWxwaGFUb09uZTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xf
QklORF9HRU5FUkFURVNfUkVTT1VSQ0VfQ0hST01JVU06CisgICAgICAgICAgKnBhcmFtcyA9IGlz
QmluZEdlbmVyYXRlc1Jlc291cmNlRW5hYmxlZCgpID8gR0xfVFJVRSA6IEdMX0ZBTFNFOworICAg
ICAgICAgIGJyZWFrOwogICAgICAgZGVmYXVsdDoKICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAg
ICAgICAgYnJlYWs7CkBAIC0xMzg0LDEzICsxNTM1LDIxIEBAIHZvaWQgU3RhdGU6OmdldEZsb2F0
dihHTGVudW0gcG5hbWUsIEdMZmwKICAgICAgICAgcGFyYW1zWzJdID0gbUJsZW5kQ29sb3IuYmx1
ZTsKICAgICAgICAgcGFyYW1zWzNdID0gbUJsZW5kQ29sb3IuYWxwaGE7CiAgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSBHTF9NVUxUSVNBTVBMRV9FWFQ6CisgICAgICAgICpwYXJhbXMgPSBzdGF0
aWNfY2FzdDxHTGZsb2F0PihtTXVsdGlTYW1wbGluZyk7CisgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSBHTF9TQU1QTEVfQUxQSEFfVE9fT05FX0VYVDoKKyAgICAgICAgKnBhcmFtcyA9IHN0YXRp
Y19jYXN0PEdMZmxvYXQ+KG1TYW1wbGVBbHBoYVRvT25lKTsKKyAgICAgIGNhc2UgR0xfQ09WRVJB
R0VfTU9EVUxBVElPTl9DSFJPTUlVTToKKyAgICAgICAgICBwYXJhbXNbMF0gPSBzdGF0aWNfY2Fz
dDxHTGZsb2F0PihtQ292ZXJhZ2VNb2R1bGF0aW9uKTsKKyAgICAgICAgICBicmVhazsKICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IH0KIAotdm9pZCBTdGF0ZTo6Z2V0SW50ZWdlcnYoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIEdMZW51
bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKK3ZvaWQgU3RhdGU6OmdldEludGVnZXJ2KGNvbnN0IENv
bnRleHRTdGF0ZSAmZGF0YSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQogewogICAgIGlm
IChwbmFtZSA+PSBHTF9EUkFXX0JVRkZFUjBfRVhUICYmIHBuYW1lIDw9IEdMX0RSQVdfQlVGRkVS
MTVfRVhUKQogICAgIHsKQEAgLTE1ODUsNiArMTc0NCwxMSBAQCB2b2lkIFN0YXRlOjpnZXRJbnRl
Z2Vydihjb25zdCBnbDo6RGF0YSAmCiAgICAgICAgICpwYXJhbXMgPQogICAgICAgICAgICAgZ2V0
U2FtcGxlclRleHR1cmVJZChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG1BY3RpdmVTYW1wbGVy
KSwgR0xfVEVYVFVSRV8yRF9BUlJBWSk7CiAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9U
RVhUVVJFX0JJTkRJTkdfRVhURVJOQUxfT0VTOgorICAgICAgICAgIEFTU0VSVChtQWN0aXZlU2Ft
cGxlciA8IG1NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsKKyAgICAgICAgICAqcGFyYW1z
ID0gZ2V0U2FtcGxlclRleHR1cmVJZChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG1BY3RpdmVT
YW1wbGVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9URVhU
VVJFX0VYVEVSTkFMX09FUyk7CisgICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEdMX1VOSUZP
Uk1fQlVGRkVSX0JJTkRJTkc6CiAgICAgICAgICpwYXJhbXMgPSBtR2VuZXJpY1VuaWZvcm1CdWZm
ZXIuaWQoKTsKICAgICAgICAgYnJlYWs7CkBAIC0xNjIyLDYgKzE3ODYsMTQgQEAgdm9pZCBTdGF0
ZTo6Z2V0SW50ZWdlcnYoY29uc3QgZ2w6OkRhdGEgJgogICAgICAgY2FzZSBHTF9ERUJVR19HUk9V
UF9TVEFDS19ERVBUSDoKICAgICAgICAgICAqcGFyYW1zID0gc3RhdGljX2Nhc3Q8R0xpbnQ+KG1E
ZWJ1Zy5nZXRHcm91cFN0YWNrRGVwdGgoKSk7CiAgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IEdMX01VTFRJU0FNUExFX0VYVDoKKyAgICAgICAgICAqcGFyYW1zID0gc3RhdGljX2Nhc3Q8R0xp
bnQ+KG1NdWx0aVNhbXBsaW5nKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfU0FN
UExFX0FMUEhBX1RPX09ORV9FWFQ6CisgICAgICAgICAgKnBhcmFtcyA9IHN0YXRpY19jYXN0PEdM
aW50PihtU2FtcGxlQWxwaGFUb09uZSk7CisgICAgICBjYXNlIEdMX0NPVkVSQUdFX01PRFVMQVRJ
T05fQ0hST01JVU06CisgICAgICAgICAgKnBhcmFtcyA9IHN0YXRpY19jYXN0PEdMaW50PihtQ292
ZXJhZ2VNb2R1bGF0aW9uKTsKKyAgICAgICAgICBicmVhazsKICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTY0NCw3ICsxODE2LDcgQEAg
dm9pZCBTdGF0ZTo6Z2V0UG9pbnRlcnYoR0xlbnVtIHBuYW1lLCB2bwogICAgIH0KIH0KIAotYm9v
bCBTdGF0ZTo6Z2V0SW5kZXhlZEludGVnZXJ2KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwg
R0xpbnQgKmRhdGEpCit2b2lkIFN0YXRlOjpnZXRJbnRlZ2VyaV92KEdMZW51bSB0YXJnZXQsIEdM
dWludCBpbmRleCwgR0xpbnQgKmRhdGEpCiB7CiAgICAgc3dpdGNoICh0YXJnZXQpCiAgICAgewpA
QCAtMTY2MSwxMyArMTgzMywxMiBAQCBib29sIFN0YXRlOjpnZXRJbmRleGVkSW50ZWdlcnYoR0xl
bnVtIHRhCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgICBkZWZhdWx0OgotICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICBicmVh
azsKICAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTdGF0ZTo6Z2V0SW5kZXhl
ZEludGVnZXI2NHYoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGludDY0ICpkYXRhKQor
dm9pZCBTdGF0ZTo6Z2V0SW50ZWdlcjY0aV92KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwg
R0xpbnQ2NCAqZGF0YSkKIHsKICAgICBzd2l0Y2ggKHRhcmdldCkKICAgICB7CkBAIC0xNjk2LDEw
ICsxODY3LDE0IEBAIGJvb2wgU3RhdGU6OmdldEluZGV4ZWRJbnRlZ2VyNjR2KEdMZW51bSAKICAg
ICAgICAgfQogICAgICAgICBicmVhazsKICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgIGJyZWFrOwogICAgIH0K
K30KIAotICAgIHJldHVybiB0cnVlOwordm9pZCBTdGF0ZTo6Z2V0Qm9vbGVhbmlfdihHTGVudW0g
dGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMYm9vbGVhbiAqZGF0YSkKK3sKKyAgICBVTlJFQUNIQUJM
RSgpOwogfQogCiBib29sIFN0YXRlOjpoYXNNYXBwZWRCdWZmZXIoR0xlbnVtIHRhcmdldCkgY29u
c3QKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TdGF0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TdGF0ZS5o
CShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTMsNiArMTMsNyBAQAogI2luY2x1ZGUgPG1l
bW9yeT4KIAogI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisjaW5jbHVkZSAiY29tbW9u
L0NvbG9yLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRGVidWcuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9Qcm9ncmFtLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvUmVmQ291bnRPYmplY3QuaCIKQEAgLTI5
LDcgKzMwLDYgQEAgY2xhc3MgUXVlcnk7CiBjbGFzcyBWZXJ0ZXhBcnJheTsKIGNsYXNzIENvbnRl
eHQ7CiBzdHJ1Y3QgQ2FwczsKLXN0cnVjdCBEYXRhOwogCiB0eXBlZGVmIHN0ZDo6bWFwPEdMZW51
bSwgQmluZGluZ1BvaW50ZXI8VGV4dHVyZT4+IFRleHR1cmVNYXA7CiAKQEAgLTQyLDcgKzQyLDgg
QEAgY2xhc3MgU3RhdGUgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICB2b2lkIGluaXRpYWxpemUo
Y29uc3QgQ2FwcyAmY2FwcywKICAgICAgICAgICAgICAgICAgICAgY29uc3QgRXh0ZW5zaW9ucyAm
ZXh0ZW5zaW9ucywKICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGNsaWVudFZlcnNpb24sCi0g
ICAgICAgICAgICAgICAgICAgIGJvb2wgZGVidWcpOworICAgICAgICAgICAgICAgICAgICBib29s
IGRlYnVnLAorICAgICAgICAgICAgICAgICAgICBib29sIGJpbmRHZW5lcmF0ZXNSZXNvdXJjZSk7
CiAgICAgdm9pZCByZXNldCgpOwogCiAgICAgLy8gU3RhdGUgY2h1bmsgZ2V0dGVycwpAQCAtMTE5
LDYgKzEyMCwxMiBAQCBjbGFzcyBTdGF0ZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIEdMY2xh
bXBmIGdldFNhbXBsZUNvdmVyYWdlVmFsdWUoKSBjb25zdDsKICAgICBib29sIGdldFNhbXBsZUNv
dmVyYWdlSW52ZXJ0KCkgY29uc3Q7CiAKKyAgICAvLyBNdWx0aXNhbXBsaW5nL2FscGhhIHRvIG9u
ZSBtYW5pcHVsYXRpb24uCisgICAgdm9pZCBzZXRTYW1wbGVBbHBoYVRvT25lKGJvb2wgZW5hYmxl
ZCk7CisgICAgYm9vbCBpc1NhbXBsZUFscGhhVG9PbmVFbmFibGVkKCkgY29uc3Q7CisgICAgdm9p
ZCBzZXRNdWx0aXNhbXBsaW5nKGJvb2wgZW5hYmxlZCk7CisgICAgYm9vbCBpc011bHRpc2FtcGxp
bmdFbmFibGVkKCkgY29uc3Q7CisKICAgICAvLyBTY2lzc29yIHRlc3Qgc3RhdGUgdG9nZ2xlICYg
cXVlcnkKICAgICBib29sIGlzU2Npc3NvclRlc3RFbmFibGVkKCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXRTY2lzc29yVGVzdChib29sIGVuYWJsZWQpOwpAQCAtMTMxLDcgKzEzOCw3IEBAIGNsYXNzIFN0
YXRlIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAKICAgICAvLyBHZW5lcmljIHN0YXRlIHRvZ2dsZSAm
IHF1ZXJ5CiAgICAgdm9pZCBzZXRFbmFibGVGZWF0dXJlKEdMZW51bSBmZWF0dXJlLCBib29sIGVu
YWJsZWQpOwotICAgIGJvb2wgZ2V0RW5hYmxlRmVhdHVyZShHTGVudW0gZmVhdHVyZSk7CisgICAg
Ym9vbCBnZXRFbmFibGVGZWF0dXJlKEdMZW51bSBmZWF0dXJlKSBjb25zdDsKIAogICAgIC8vIExp
bmUgd2lkdGggc3RhdGUgc2V0dGVyCiAgICAgdm9pZCBzZXRMaW5lV2lkdGgoR0xmbG9hdCB3aWR0
aCk7CkBAIC0xNDEsNiArMTQ4LDkgQEAgY2xhc3MgU3RhdGUgOiBhbmdsZTo6Tm9uQ29weWFibGUK
ICAgICB2b2lkIHNldEdlbmVyYXRlTWlwbWFwSGludChHTGVudW0gaGludCk7CiAgICAgdm9pZCBz
ZXRGcmFnbWVudFNoYWRlckRlcml2YXRpdmVIaW50KEdMZW51bSBoaW50KTsKIAorICAgIC8vIEdM
X0NIUk9NSVVNX2JpbmRfZ2VuZXJhdGVzX3Jlc291cmNlCisgICAgYm9vbCBpc0JpbmRHZW5lcmF0
ZXNSZXNvdXJjZUVuYWJsZWQoKSBjb25zdDsKKwogICAgIC8vIFZpZXdwb3J0IHN0YXRlIHNldHRl
ci9nZXR0ZXIKICAgICB2b2lkIHNldFZpZXdwb3J0UGFyYW1zKEdMaW50IHgsIEdMaW50IHksIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKICAgICBjb25zdCBSZWN0YW5nbGUgJmdldFZp
ZXdwb3J0KCkgY29uc3Q7CkBAIC0xNjQsMTcgKzE3NCwxNSBAQCBjbGFzcyBTdGF0ZSA6IGFuZ2xl
OjpOb25Db3B5YWJsZQogICAgIC8vIFJlbmRlcmJ1ZmZlciBiaW5kaW5nIG1hbmlwdWxhdGlvbgog
ICAgIHZvaWQgc2V0UmVuZGVyYnVmZmVyQmluZGluZyhSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZl
cik7CiAgICAgR0x1aW50IGdldFJlbmRlcmJ1ZmZlcklkKCkgY29uc3Q7Ci0gICAgUmVuZGVyYnVm
ZmVyICpnZXRDdXJyZW50UmVuZGVyYnVmZmVyKCk7CisgICAgUmVuZGVyYnVmZmVyICpnZXRDdXJy
ZW50UmVuZGVyYnVmZmVyKCkgY29uc3Q7CiAgICAgdm9pZCBkZXRhY2hSZW5kZXJidWZmZXIoR0x1
aW50IHJlbmRlcmJ1ZmZlcik7CiAKICAgICAvLyBGcmFtZWJ1ZmZlciBiaW5kaW5nIG1hbmlwdWxh
dGlvbgogICAgIHZvaWQgc2V0UmVhZEZyYW1lYnVmZmVyQmluZGluZyhGcmFtZWJ1ZmZlciAqZnJh
bWVidWZmZXIpOwogICAgIHZvaWQgc2V0RHJhd0ZyYW1lYnVmZmVyQmluZGluZyhGcmFtZWJ1ZmZl
ciAqZnJhbWVidWZmZXIpOwogICAgIEZyYW1lYnVmZmVyICpnZXRUYXJnZXRGcmFtZWJ1ZmZlcihH
TGVudW0gdGFyZ2V0KSBjb25zdDsKLSAgICBGcmFtZWJ1ZmZlciAqZ2V0UmVhZEZyYW1lYnVmZmVy
KCk7Ci0gICAgRnJhbWVidWZmZXIgKmdldERyYXdGcmFtZWJ1ZmZlcigpOwotICAgIGNvbnN0IEZy
YW1lYnVmZmVyICpnZXRSZWFkRnJhbWVidWZmZXIoKSBjb25zdDsKLSAgICBjb25zdCBGcmFtZWJ1
ZmZlciAqZ2V0RHJhd0ZyYW1lYnVmZmVyKCkgY29uc3Q7CisgICAgRnJhbWVidWZmZXIgKmdldFJl
YWRGcmFtZWJ1ZmZlcigpIGNvbnN0OworICAgIEZyYW1lYnVmZmVyICpnZXREcmF3RnJhbWVidWZm
ZXIoKSBjb25zdDsKICAgICBib29sIHJlbW92ZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcoR0x1aW50
IGZyYW1lYnVmZmVyKTsKICAgICBib29sIHJlbW92ZURyYXdGcmFtZWJ1ZmZlckJpbmRpbmcoR0x1
aW50IGZyYW1lYnVmZmVyKTsKIApAQCAtMTkyLDEwICsyMDAsMTAgQEAgY2xhc3MgU3RhdGUgOiBh
bmdsZTo6Tm9uQ29weWFibGUKICAgICB2b2lkIHNldFRyYW5zZm9ybUZlZWRiYWNrQmluZGluZyhU
cmFuc2Zvcm1GZWVkYmFjayAqdHJhbnNmb3JtRmVlZGJhY2spOwogICAgIFRyYW5zZm9ybUZlZWRi
YWNrICpnZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJhY2soKSBjb25zdDsKICAgICBib29sIGlzVHJh
bnNmb3JtRmVlZGJhY2tBY3RpdmVVbnBhdXNlZCgpIGNvbnN0OwotICAgIHZvaWQgZGV0YWNoVHJh
bnNmb3JtRmVlZGJhY2soR0x1aW50IHRyYW5zZm9ybUZlZWRiYWNrKTsKKyAgICBib29sIHJlbW92
ZVRyYW5zZm9ybUZlZWRiYWNrQmluZGluZyhHTHVpbnQgdHJhbnNmb3JtRmVlZGJhY2spOwogCiAg
ICAgLy8gUXVlcnkgYmluZGluZyBtYW5pcHVsYXRpb24KLSAgICBib29sIGlzUXVlcnlBY3RpdmUo
KSBjb25zdDsKKyAgICBib29sIGlzUXVlcnlBY3RpdmUoY29uc3QgR0xlbnVtIHR5cGUpIGNvbnN0
OwogICAgIGJvb2wgaXNRdWVyeUFjdGl2ZShRdWVyeSAqcXVlcnkpIGNvbnN0OwogICAgIHZvaWQg
c2V0QWN0aXZlUXVlcnkoR0xlbnVtIHRhcmdldCwgUXVlcnkgKnF1ZXJ5KTsKICAgICBHTHVpbnQg
Z2V0QWN0aXZlUXVlcnlJZChHTGVudW0gdGFyZ2V0KSBjb25zdDsKQEAgLTI2OSwxMyArMjc3LDI3
IEBAIGNsYXNzIFN0YXRlIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgY29uc3QgRGVidWcgJmdl
dERlYnVnKCkgY29uc3Q7CiAgICAgRGVidWcgJmdldERlYnVnKCk7CiAKKyAgICAvLyBDSFJPTUlV
TV9mcmFtZWJ1ZmZlcl9taXhlZF9zYW1wbGVzIGNvdmVyYWdlIG1vZHVsYXRpb24KKyAgICB2b2lk
IHNldENvdmVyYWdlTW9kdWxhdGlvbihHTGVudW0gY29tcG9uZW50cyk7CisgICAgR0xlbnVtIGdl
dENvdmVyYWdlTW9kdWxhdGlvbigpIGNvbnN0OworCisgICAgLy8gQ0hST01JVU1fcGF0aF9yZW5k
ZXJpbmcKKyAgICB2b2lkIGxvYWRQYXRoUmVuZGVyaW5nTWF0cml4KEdMZW51bSBtYXRyaXhNb2Rl
LCBjb25zdCBHTGZsb2F0ICptYXRyaXgpOworICAgIGNvbnN0IEdMZmxvYXQgKmdldFBhdGhSZW5k
ZXJpbmdNYXRyaXgoR0xlbnVtIHdoaWNoKSBjb25zdDsKKyAgICB2b2lkIHNldFBhdGhTdGVuY2ls
RnVuYyhHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzayk7CisKKyAgICBHTGVudW0g
Z2V0UGF0aFN0ZW5jaWxGdW5jKCkgY29uc3Q7CisgICAgR0xpbnQgZ2V0UGF0aFN0ZW5jaWxSZWYo
KSBjb25zdDsKKyAgICBHTHVpbnQgZ2V0UGF0aFN0ZW5jaWxNYXNrKCkgY29uc3Q7CisKICAgICAv
LyBTdGF0ZSBxdWVyeSBmdW5jdGlvbnMKICAgICB2b2lkIGdldEJvb2xlYW52KEdMZW51bSBwbmFt
ZSwgR0xib29sZWFuICpwYXJhbXMpOwogICAgIHZvaWQgZ2V0RmxvYXR2KEdMZW51bSBwbmFtZSwg
R0xmbG9hdCAqcGFyYW1zKTsKLSAgICB2b2lkIGdldEludGVnZXJ2KGNvbnN0IGdsOjpEYXRhICZk
YXRhLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOworICAgIHZvaWQgZ2V0SW50ZWdlcnYo
Y29uc3QgQ29udGV4dFN0YXRlICZkYXRhLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwog
ICAgIHZvaWQgZ2V0UG9pbnRlcnYoR0xlbnVtIHBuYW1lLCB2b2lkICoqcGFyYW1zKSBjb25zdDsK
LSAgICBib29sIGdldEluZGV4ZWRJbnRlZ2VydihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgs
IEdMaW50ICpkYXRhKTsKLSAgICBib29sIGdldEluZGV4ZWRJbnRlZ2VyNjR2KEdMZW51bSB0YXJn
ZXQsIEdMdWludCBpbmRleCwgR0xpbnQ2NCAqZGF0YSk7CisgICAgdm9pZCBnZXRJbnRlZ2VyaV92
KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xpbnQgKmRhdGEpOworICAgIHZvaWQgZ2V0
SW50ZWdlcjY0aV92KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xpbnQ2NCAqZGF0YSk7
CisgICAgdm9pZCBnZXRCb29sZWFuaV92KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xi
b29sZWFuICpkYXRhKTsKIAogICAgIGJvb2wgaGFzTWFwcGVkQnVmZmVyKEdMZW51bSB0YXJnZXQp
IGNvbnN0OwogCkBAIC0zMjAsMTEgKzM0MiwxMyBAQCBjbGFzcyBTdGF0ZSA6IGFuZ2xlOjpOb25D
b3B5YWJsZQogICAgICAgICBESVJUWV9CSVRfVU5QQUNLX1NLSVBfSU1BR0VTLAogICAgICAgICBE
SVJUWV9CSVRfVU5QQUNLX1NLSVBfUk9XUywKICAgICAgICAgRElSVFlfQklUX1VOUEFDS19TS0lQ
X1BJWEVMUywKKyAgICAgICAgRElSVFlfQklUX1VOUEFDS19CVUZGRVJfQklORElORywKICAgICAg
ICAgRElSVFlfQklUX1BBQ0tfQUxJR05NRU5ULAogICAgICAgICBESVJUWV9CSVRfUEFDS19SRVZF
UlNFX1JPV19PUkRFUiwKICAgICAgICAgRElSVFlfQklUX1BBQ0tfUk9XX0xFTkdUSCwKICAgICAg
ICAgRElSVFlfQklUX1BBQ0tfU0tJUF9ST1dTLAogICAgICAgICBESVJUWV9CSVRfUEFDS19TS0lQ
X1BJWEVMUywKKyAgICAgICAgRElSVFlfQklUX1BBQ0tfQlVGRkVSX0JJTkRJTkcsCiAgICAgICAg
IERJUlRZX0JJVF9ESVRIRVJfRU5BQkxFRCwKICAgICAgICAgRElSVFlfQklUX0dFTkVSQVRFX01J
UE1BUF9ISU5ULAogICAgICAgICBESVJUWV9CSVRfU0hBREVSX0RFUklWQVRJVkVfSElOVCwKQEAg
LTMzMyw2ICszNTcsMTIgQEAgY2xhc3MgU3RhdGUgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAg
ICAgRElSVFlfQklUX1JFTkRFUkJVRkZFUl9CSU5ESU5HLAogICAgICAgICBESVJUWV9CSVRfVkVS
VEVYX0FSUkFZX0JJTkRJTkcsCiAgICAgICAgIERJUlRZX0JJVF9QUk9HUkFNX0JJTkRJTkcsCisg
ICAgICAgIERJUlRZX0JJVF9NVUxUSVNBTVBMSU5HLAorICAgICAgICBESVJUWV9CSVRfU0FNUExF
X0FMUEhBX1RPX09ORSwKKyAgICAgICAgRElSVFlfQklUX0NPVkVSQUdFX01PRFVMQVRJT04sICAg
ICAgICAgLy8gQ0hST01JVU1fZnJhbWVidWZmZXJfbWl4ZWRfc2FtcGxlcworICAgICAgICBESVJU
WV9CSVRfUEFUSF9SRU5ERVJJTkdfTUFUUklYX01WLCAgICAvLyBDSFJPTUlVTV9wYXRoX3JlbmRl
cmluZyBwYXRoIG1vZGVsIHZpZXcgbWF0cml4CisgICAgICAgIERJUlRZX0JJVF9QQVRIX1JFTkRF
UklOR19NQVRSSVhfUFJPSiwgIC8vIENIUk9NSVVNX3BhdGhfcmVuZGVyaW5nIHBhdGggcHJvamVj
dGlvbiBtYXRyaXgKKyAgICAgICAgRElSVFlfQklUX1BBVEhfUkVOREVSSU5HX1NURU5DSUxfU1RB
VEUsCiAgICAgICAgIERJUlRZX0JJVF9DVVJSRU5UX1ZBTFVFXzAsCiAgICAgICAgIERJUlRZX0JJ
VF9DVVJSRU5UX1ZBTFVFX01BWCA9IERJUlRZX0JJVF9DVVJSRU5UX1ZBTFVFXzAgKyBNQVhfVkVS
VEVYX0FUVFJJQlMsCiAgICAgICAgIERJUlRZX0JJVF9JTlZBTElEICAgICAgICAgICA9IERJUlRZ
X0JJVF9DVVJSRU5UX1ZBTFVFX01BWCwKQEAgLTM5Miw2ICs0MjIsOCBAQCBjbGFzcyBTdGF0ZSA6
IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIEdMZW51bSBtR2VuZXJhdGVNaXBtYXBIaW50OwogICAg
IEdMZW51bSBtRnJhZ21lbnRTaGFkZXJEZXJpdmF0aXZlSGludDsKIAorICAgIGJvb2wgbUJpbmRH
ZW5lcmF0ZXNSZXNvdXJjZTsKKwogICAgIFJlY3RhbmdsZSBtVmlld3BvcnQ7CiAgICAgZmxvYXQg
bU5lYXJaOwogICAgIGZsb2F0IG1GYXJaOwpAQCAtNDM1LDYgKzQ2NywxOCBAQCBjbGFzcyBTdGF0
ZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogCiAgICAgRGVidWcgbURlYnVnOwogCisgICAgYm9vbCBt
TXVsdGlTYW1wbGluZzsKKyAgICBib29sIG1TYW1wbGVBbHBoYVRvT25lOworCisgICAgR0xlbnVt
IG1Db3ZlcmFnZU1vZHVsYXRpb247CisKKyAgICAvLyBDSFJPTUlVTV9wYXRoX3JlbmRlcmluZwor
ICAgIEdMZmxvYXQgbVBhdGhNYXRyaXhNVlsxNl07CisgICAgR0xmbG9hdCBtUGF0aE1hdHJpeFBy
b2pbMTZdOworICAgIEdMZW51bSBtUGF0aFN0ZW5jaWxGdW5jOworICAgIEdMaW50IG1QYXRoU3Rl
bmNpbFJlZjsKKyAgICBHTHVpbnQgbVBhdGhTdGVuY2lsTWFzazsKKwogICAgIERpcnR5Qml0cyBt
RGlydHlCaXRzOwogICAgIERpcnR5T2JqZWN0cyBtRGlydHlPYmplY3RzOwogfTsKQEAgLTQ0Miw0
ICs0ODYsMyBAQCBjbGFzcyBTdGF0ZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogfSAgLy8gbmFtZXNw
YWNlIGdsCiAKICNlbmRpZiAvLyBMSUJBTkdMRV9TVEFURV9IXwotCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU3RyZWFtLmNwcAkocmV2aXNpb24gMjA3
ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1N0cmVhbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE3LDI1ICsxNyw0MiBAQAogI2luY2x1ZGUgImNvbW1vbi9wbGF0
Zm9ybS5oIgogI2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9Db250ZXh0LmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvU3RyZWFtSW1wbC5oIgor
I2luY2x1ZGUgImxpYkFOR0xFL0Rpc3BsYXkuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9EaXNwbGF5SW1wbC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1N0cmVhbVByb2R1
Y2VySW1wbC5oIgogCiBuYW1lc3BhY2UgZWdsCiB7CiAKLVN0cmVhbTo6U3RyZWFtKHJ4OjpTdHJl
YW1JbXBsICppbXBsLCBjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCi0gICAgOiBtSW1wbGVt
ZW50YXRpb24oaW1wbCksCitTdHJlYW06OlN0cmVhbShEaXNwbGF5ICpkaXNwbGF5LCBjb25zdCBB
dHRyaWJ1dGVNYXAgJmF0dHJpYnMpCisgICAgOiBtRGlzcGxheShkaXNwbGF5KSwKKyAgICAgIG1Q
cm9kdWNlckltcGxlbWVudGF0aW9uKG51bGxwdHIpLAogICAgICAgbVN0YXRlKEVHTF9TVFJFQU1f
U1RBVEVfQ1JFQVRFRF9LSFIpLAogICAgICAgbVByb2R1Y2VyRnJhbWUoMCksCiAgICAgICBtQ29u
c3VtZXJGcmFtZSgwKSwKLSAgICAgIG1Db25zdW1lckxhdGVuY3koc3RhdGljX2Nhc3Q8RUdMaW50
PihhdHRyaWJzLmdldChFR0xfQ09OU1VNRVJfTEFURU5DWV9VU0VDX0tIUiwgMCkpKSwKLSAgICAg
IG1Db25zdW1lckFjcXVpcmVUaW1lb3V0KAotICAgICAgICAgIHN0YXRpY19jYXN0PEVHTGludD4o
YXR0cmlicy5nZXQoRUdMX0NPTlNVTUVSX0FDUVVJUkVfVElNRU9VVF9VU0VDX0tIUiwgMCkpKQot
eworICAgICAgbUNvbnN1bWVyTGF0ZW5jeShhdHRyaWJzLmdldEFzSW50KEVHTF9DT05TVU1FUl9M
QVRFTkNZX1VTRUNfS0hSLCAwKSksCisgICAgICBtQ29uc3VtZXJBY3F1aXJlVGltZW91dChhdHRy
aWJzLmdldEFzSW50KEVHTF9DT05TVU1FUl9BQ1FVSVJFX1RJTUVPVVRfVVNFQ19LSFIsIDApKSwK
KyAgICAgIG1QbGFuZUNvdW50KDApLAorICAgICAgbUNvbnN1bWVyVHlwZShDb25zdW1lclR5cGU6
Ok5vQ29uc3VtZXIpLAorICAgICAgbVByb2R1Y2VyVHlwZShQcm9kdWNlclR5cGU6Ok5vUHJvZHVj
ZXIpCit7CisgICAgZm9yIChhdXRvICZwbGFuZSA6IG1QbGFuZXMpCisgICAgeworICAgICAgICBw
bGFuZS50ZXh0dXJlVW5pdCA9IC0xOworICAgICAgICBwbGFuZS50ZXh0dXJlICAgICA9IG51bGxw
dHI7CisgICAgfQogfQogCiBTdHJlYW06On5TdHJlYW0oKQogewotICAgIFNhZmVEZWxldGUobUlt
cGxlbWVudGF0aW9uKTsKKyAgICBTYWZlRGVsZXRlKG1Qcm9kdWNlckltcGxlbWVudGF0aW9uKTsK
KyAgICBmb3IgKGF1dG8gJnBsYW5lIDogbVBsYW5lcykKKyAgICB7CisgICAgICAgIGlmIChwbGFu
ZS50ZXh0dXJlICE9IG51bGxwdHIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHBsYW5lLnRleHR1
cmUtPnJlbGVhc2VTdHJlYW0oKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogdm9pZCBTdHJlYW06
OnNldENvbnN1bWVyTGF0ZW5jeShFR0xpbnQgbGF0ZW5jeSkKQEAgLTczLDQgKzkwLDE4MiBAQCBF
R0xpbnQgU3RyZWFtOjpnZXRDb25zdW1lckFjcXVpcmVUaW1lb3V0CiAgICAgcmV0dXJuIG1Db25z
dW1lckFjcXVpcmVUaW1lb3V0OwogfQogCitTdHJlYW06OlByb2R1Y2VyVHlwZSBTdHJlYW06Omdl
dFByb2R1Y2VyVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1Qcm9kdWNlclR5cGU7Cit9CisK
K1N0cmVhbTo6Q29uc3VtZXJUeXBlIFN0cmVhbTo6Z2V0Q29uc3VtZXJUeXBlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbUNvbnN1bWVyVHlwZTsKK30KKworRUdMaW50IFN0cmVhbTo6Z2V0UGxhbmVD
b3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1QbGFuZUNvdW50OworfQorCityeDo6U3RyZWFt
UHJvZHVjZXJJbXBsICpTdHJlYW06OmdldEltcGxlbWVudGF0aW9uKCkKK3sKKyAgICByZXR1cm4g
bVByb2R1Y2VySW1wbGVtZW50YXRpb247Cit9CisKK0Vycm9yIFN0cmVhbTo6Y3JlYXRlQ29uc3Vt
ZXJHTFRleHR1cmVFeHRlcm5hbChjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYnV0ZXMsIGdsOjpD
b250ZXh0ICpjb250ZXh0KQoreworICAgIEFTU0VSVChtU3RhdGUgPT0gRUdMX1NUUkVBTV9TVEFU
RV9DUkVBVEVEX0tIUik7CisgICAgQVNTRVJUKG1Db25zdW1lclR5cGUgPT0gQ29uc3VtZXJUeXBl
OjpOb0NvbnN1bWVyKTsKKyAgICBBU1NFUlQobVByb2R1Y2VyVHlwZSA9PSBQcm9kdWNlclR5cGU6
Ok5vUHJvZHVjZXIpOworICAgIEFTU0VSVChjb250ZXh0ICE9IG51bGxwdHIpOworCisgICAgY29u
c3QgYXV0byAmZ2xTdGF0ZSA9IGNvbnRleHQtPmdldEdMU3RhdGUoKTsKKyAgICBFR0xlbnVtIGJ1
ZmZlclR5cGUgPSBhdHRyaWJ1dGVzLmdldEFzSW50KEVHTF9DT0xPUl9CVUZGRVJfVFlQRSwgRUdM
X1JHQl9CVUZGRVIpOworICAgIGlmIChidWZmZXJUeXBlID09IEVHTF9SR0JfQlVGRkVSKQorICAg
IHsKKyAgICAgICAgbVBsYW5lc1swXS50ZXh0dXJlID0gZ2xTdGF0ZS5nZXRUYXJnZXRUZXh0dXJl
KEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTKTsKKyAgICAgICAgQVNTRVJUKG1QbGFuZXNbMF0udGV4
dHVyZSAhPSBudWxscHRyKTsKKyAgICAgICAgbVBsYW5lc1swXS50ZXh0dXJlLT5iaW5kU3RyZWFt
KHRoaXMpOworICAgICAgICBtQ29uc3VtZXJUeXBlID0gQ29uc3VtZXJUeXBlOjpHTFRleHR1cmVS
R0I7CisgICAgICAgIG1QbGFuZUNvdW50ICAgPSAxOworICAgIH0KKyAgICBlbHNlCisgICAgewor
ICAgICAgICBtUGxhbmVDb3VudCA9IGF0dHJpYnV0ZXMuZ2V0QXNJbnQoRUdMX1lVVl9OVU1CRVJf
T0ZfUExBTkVTX0VYVCwgMik7CisgICAgICAgIEFTU0VSVChtUGxhbmVDb3VudCA8PSAzKTsKKyAg
ICAgICAgZm9yIChFR0xpbnQgaSA9IDA7IGkgPCBtUGxhbmVDb3VudDsgaSsrKQorICAgICAgICB7
CisgICAgICAgICAgICAvLyBGZXRjaCBhbGwgdGhlIHRleHR1cmVzCisgICAgICAgICAgICBtUGxh
bmVzW2ldLnRleHR1cmVVbml0ID0gYXR0cmlidXRlcy5nZXRBc0ludChFR0xfWVVWX1BMQU5FMF9U
RVhUVVJFX1VOSVRfTlYgKyBpLCAtMSk7CisgICAgICAgICAgICBpZiAobVBsYW5lc1tpXS50ZXh0
dXJlVW5pdCAhPSBFR0xfTk9ORSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtUGxh
bmVzW2ldLnRleHR1cmUgPQorICAgICAgICAgICAgICAgICAgICBnbFN0YXRlLmdldFNhbXBsZXJU
ZXh0dXJlKG1QbGFuZXNbaV0udGV4dHVyZVVuaXQsIEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTKTsK
KyAgICAgICAgICAgICAgICBBU1NFUlQobVBsYW5lc1tpXS50ZXh0dXJlICE9IG51bGxwdHIpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gQmluZCB0aGVtIHRvIHRoZSBz
dHJlYW0KKyAgICAgICAgZm9yIChFR0xpbnQgaSA9IDA7IGkgPCBtUGxhbmVDb3VudDsgaSsrKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAobVBsYW5lc1tpXS50ZXh0dXJlVW5pdCAhPSBFR0xf
Tk9ORSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtUGxhbmVzW2ldLnRleHR1cmUt
PmJpbmRTdHJlYW0odGhpcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbUNv
bnN1bWVyVHlwZSA9IENvbnN1bWVyVHlwZTo6R0xUZXh0dXJlWVVWOworICAgIH0KKworICAgIG1D
b250ZXh0ID0gY29udGV4dDsKKyAgICBtU3RhdGUgICA9IEVHTF9TVFJFQU1fU1RBVEVfQ09OTkVD
VElOR19LSFI7CisKKyAgICByZXR1cm4gRXJyb3IoRUdMX1NVQ0NFU1MpOworfQorCitFcnJvciBT
dHJlYW06OmNyZWF0ZVByb2R1Y2VyRDNEMTFUZXh0dXJlTlYxMihjb25zdCBBdHRyaWJ1dGVNYXAg
JmF0dHJpYnV0ZXMpCit7CisgICAgQVNTRVJUKG1TdGF0ZSA9PSBFR0xfU1RSRUFNX1NUQVRFX0NP
Tk5FQ1RJTkdfS0hSKTsKKyAgICBBU1NFUlQobUNvbnN1bWVyVHlwZSA9PSBDb25zdW1lclR5cGU6
OkdMVGV4dHVyZVlVVik7CisgICAgQVNTRVJUKG1Qcm9kdWNlclR5cGUgPT0gUHJvZHVjZXJUeXBl
OjpOb1Byb2R1Y2VyKTsKKyAgICBBU1NFUlQobVBsYW5lQ291bnQgPT0gMik7CisKKyAgICBtUHJv
ZHVjZXJJbXBsZW1lbnRhdGlvbiA9IG1EaXNwbGF5LT5nZXRJbXBsZW1lbnRhdGlvbigpLT5jcmVh
dGVTdHJlYW1Qcm9kdWNlckQzRFRleHR1cmVOVjEyKAorICAgICAgICBtQ29uc3VtZXJUeXBlLCBh
dHRyaWJ1dGVzKTsKKyAgICBtUHJvZHVjZXJUeXBlID0gUHJvZHVjZXJUeXBlOjpEM0QxMVRleHR1
cmVOVjEyOworICAgIG1TdGF0ZSAgICAgICAgPSBFR0xfU1RSRUFNX1NUQVRFX0VNUFRZX0tIUjsK
KworICAgIHJldHVybiBFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKKy8vIENhbGxlZCB3aGVuIHRo
ZSBjb25zdW1lciBvZiB0aGlzIHN0cmVhbSBzdGFydHMgdXNpbmcgdGhlIHN0cmVhbQorRXJyb3Ig
U3RyZWFtOjpjb25zdW1lckFjcXVpcmUoKQoreworICAgIEFTU0VSVChtU3RhdGUgPT0gRUdMX1NU
UkVBTV9TVEFURV9ORVdfRlJBTUVfQVZBSUxBQkxFX0tIUiB8fAorICAgICAgICAgICBtU3RhdGUg
PT0gRUdMX1NUUkVBTV9TVEFURV9PTERfRlJBTUVfQVZBSUxBQkxFX0tIUik7CisgICAgQVNTRVJU
KG1Db25zdW1lclR5cGUgPT0gQ29uc3VtZXJUeXBlOjpHTFRleHR1cmVSR0IgfHwKKyAgICAgICAg
ICAgbUNvbnN1bWVyVHlwZSA9PSBDb25zdW1lclR5cGU6OkdMVGV4dHVyZVlVVik7CisgICAgQVNT
RVJUKG1Qcm9kdWNlclR5cGUgPT0gUHJvZHVjZXJUeXBlOjpEM0QxMVRleHR1cmVOVjEyKTsKKwor
ICAgIG1TdGF0ZSA9IEVHTF9TVFJFQU1fU1RBVEVfT0xEX0ZSQU1FX0FWQUlMQUJMRV9LSFI7Cisg
ICAgbUNvbnN1bWVyRnJhbWUrKzsKKworICAgIC8vIEJpbmQgdGhlIHBsYW5lcyB0byB0aGUgZ2wg
dGV4dHVyZXMKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1QbGFuZUNvdW50OyBpKyspCisgICAg
eworICAgICAgICBpZiAobVBsYW5lc1tpXS50ZXh0dXJlICE9IG51bGxwdHIpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1QbGFuZXNbaV0udGV4dHVyZS0+YWNxdWlyZUltYWdlRnJvbVN0cmVhbSgK
KyAgICAgICAgICAgICAgICBtUHJvZHVjZXJJbXBsZW1lbnRhdGlvbi0+Z2V0R0xGcmFtZURlc2Ny
aXB0aW9uKGkpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBFcnJvcihFR0xfU1VD
Q0VTUyk7Cit9CisKK0Vycm9yIFN0cmVhbTo6Y29uc3VtZXJSZWxlYXNlKCkKK3sKKyAgICBBU1NF
UlQobVN0YXRlID09IEVHTF9TVFJFQU1fU1RBVEVfTkVXX0ZSQU1FX0FWQUlMQUJMRV9LSFIgfHwK
KyAgICAgICAgICAgbVN0YXRlID09IEVHTF9TVFJFQU1fU1RBVEVfT0xEX0ZSQU1FX0FWQUlMQUJM
RV9LSFIpOworICAgIEFTU0VSVChtQ29uc3VtZXJUeXBlID09IENvbnN1bWVyVHlwZTo6R0xUZXh0
dXJlUkdCIHx8CisgICAgICAgICAgIG1Db25zdW1lclR5cGUgPT0gQ29uc3VtZXJUeXBlOjpHTFRl
eHR1cmVZVVYpOworICAgIEFTU0VSVChtUHJvZHVjZXJUeXBlID09IFByb2R1Y2VyVHlwZTo6RDNE
MTFUZXh0dXJlTlYxMik7CisKKyAgICAvLyBSZWxlYXNlIHRoZSBpbWFnZXMKKyAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG1QbGFuZUNvdW50OyBpKyspCisgICAgeworICAgICAgICBpZiAobVBsYW5l
c1tpXS50ZXh0dXJlICE9IG51bGxwdHIpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1QbGFuZXNb
aV0udGV4dHVyZS0+cmVsZWFzZUltYWdlRnJvbVN0cmVhbSgpOworICAgICAgICB9CisgICAgfQor
CisgICAgcmV0dXJuIEVycm9yKEVHTF9TVUNDRVNTKTsKK30KKworYm9vbCBTdHJlYW06OmlzQ29u
c3VtZXJCb3VuZFRvQ29udGV4dChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkgY29uc3QKK3sK
KyAgICBBU1NFUlQoY29udGV4dCAhPSBudWxscHRyKTsKKyAgICByZXR1cm4gKGNvbnRleHQgPT0g
bUNvbnRleHQpOworfQorCitFcnJvciBTdHJlYW06OnZhbGlkYXRlRDNEMTFOVjEyVGV4dHVyZSh2
b2lkICp0ZXh0dXJlKSBjb25zdAoreworICAgIEFTU0VSVChtQ29uc3VtZXJUeXBlID09IENvbnN1
bWVyVHlwZTo6R0xUZXh0dXJlUkdCIHx8CisgICAgICAgICAgIG1Db25zdW1lclR5cGUgPT0gQ29u
c3VtZXJUeXBlOjpHTFRleHR1cmVZVVYpOworICAgIEFTU0VSVChtUHJvZHVjZXJUeXBlID09IFBy
b2R1Y2VyVHlwZTo6RDNEMTFUZXh0dXJlTlYxMik7CisgICAgQVNTRVJUKG1Qcm9kdWNlckltcGxl
bWVudGF0aW9uICE9IG51bGxwdHIpOworCisgICAgcmV0dXJuIG1Qcm9kdWNlckltcGxlbWVudGF0
aW9uLT52YWxpZGF0ZUQzRE5WMTJUZXh0dXJlKHRleHR1cmUpOworfQorCitFcnJvciBTdHJlYW06
OnBvc3REM0QxMU5WMTJUZXh0dXJlKHZvaWQgKnRleHR1cmUsIGNvbnN0IEF0dHJpYnV0ZU1hcCAm
YXR0cmlidXRlcykKK3sKKyAgICBBU1NFUlQobUNvbnN1bWVyVHlwZSA9PSBDb25zdW1lclR5cGU6
OkdMVGV4dHVyZVJHQiB8fAorICAgICAgICAgICBtQ29uc3VtZXJUeXBlID09IENvbnN1bWVyVHlw
ZTo6R0xUZXh0dXJlWVVWKTsKKyAgICBBU1NFUlQobVByb2R1Y2VyVHlwZSA9PSBQcm9kdWNlclR5
cGU6OkQzRDExVGV4dHVyZU5WMTIpOworCisgICAgbVByb2R1Y2VySW1wbGVtZW50YXRpb24tPnBv
c3REM0ROVjEyVGV4dHVyZSh0ZXh0dXJlLCBhdHRyaWJ1dGVzKTsKKyAgICBtUHJvZHVjZXJGcmFt
ZSsrOworCisgICAgbVN0YXRlID0gRUdMX1NUUkVBTV9TVEFURV9ORVdfRlJBTUVfQVZBSUxBQkxF
X0tIUjsKKworICAgIHJldHVybiBFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKKy8vIFRoaXMgaXMg
Y2FsbGVkIHdoZW4gYSB0ZXh0dXJlIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhpcyBzdHJlYW0g
aXMgZGVzdHJveWVkLiBFdmVuIGlmIG11bHRpcGxlCisvLyB0ZXh0dXJlcyBhcmUgYm91bmQsIG9u
ZSBiZWluZyBkZXN0cm95ZWQgaW52YWxpZGF0ZXMgdGhlIHN0cmVhbSwgc28gYWxsIHRoZSByZW1h
aW5pbmcgdGV4dHVyZXMKKy8vIHdpbGwgYmUgcmVsZWFzZWQgYW5kIHRoZSBzdHJlYW0gd2lsbCBi
ZSBpbnZhbGlkYXRlZC4KK3ZvaWQgU3RyZWFtOjpyZWxlYXNlVGV4dHVyZXMoKQoreworICAgIGZv
ciAoYXV0byAmcGxhbmUgOiBtUGxhbmVzKQorICAgIHsKKyAgICAgICAgaWYgKHBsYW5lLnRleHR1
cmUgIT0gbnVsbHB0cikKKyAgICAgICAgeworICAgICAgICAgICAgcGxhbmUudGV4dHVyZS0+cmVs
ZWFzZVN0cmVhbSgpOworICAgICAgICAgICAgcGxhbmUudGV4dHVyZSA9IG51bGxwdHI7CisgICAg
ICAgIH0KKyAgICB9CisgICAgbUNvbnN1bWVyVHlwZSA9IENvbnN1bWVyVHlwZTo6Tm9Db25zdW1l
cjsKKyAgICBtUHJvZHVjZXJUeXBlID0gUHJvZHVjZXJUeXBlOjpOb1Byb2R1Y2VyOworICAgIG1T
dGF0ZSAgICAgICAgPSBFR0xfU1RSRUFNX1NUQVRFX0RJU0NPTk5FQ1RFRF9LSFI7Cit9CisKIH0g
IC8vIG5hbWVzcGFjZSBlZ2wKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9TdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvU3RyZWFtLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9TdHJlYW0uaAkod29ya2luZyBjb3B5KQpAQCAtMTAsNiArMTAs
OCBAQAogI2lmbmRlZiBMSUJBTkdMRV9TVFJFQU1fSF8KICNkZWZpbmUgTElCQU5HTEVfU1RSRUFN
X0hfCiAKKyNpbmNsdWRlIDxhcnJheT4KKwogI2luY2x1ZGUgPEVHTC9lZ2wuaD4KICNpbmNsdWRl
IDxFR0wvZWdsZXh0Lmg+CiAKQEAgLTE4LDE4ICsyMCw0OCBAQAogCiBuYW1lc3BhY2UgcngKIHsK
LWNsYXNzIFN0cmVhbUltcGw7CitjbGFzcyBTdHJlYW1Qcm9kdWNlckltcGw7Cit9CisKK25hbWVz
cGFjZSBnbAoreworY2xhc3MgQ29udGV4dDsKK2NsYXNzIFRleHR1cmU7CiB9CiAKIG5hbWVzcGFj
ZSBlZ2wKIHsKK2NsYXNzIERpc3BsYXk7CitjbGFzcyBFcnJvcjsKIAogY2xhc3MgU3RyZWFtIGZp
bmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiB7CiAgIHB1YmxpYzoKLSAgICBTdHJlYW0ocng6OlN0
cmVhbUltcGwgKmltcGwsIGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0cmlicyk7CisgICAgU3RyZWFt
KERpc3BsYXkgKmRpc3BsYXksIGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0cmlicyk7CiAgICAgflN0
cmVhbSgpOwogCisgICAgZW51bSBjbGFzcyBDb25zdW1lclR5cGUKKyAgICB7CisgICAgICAgIE5v
Q29uc3VtZXIsCisgICAgICAgIEdMVGV4dHVyZVJHQiwKKyAgICAgICAgR0xUZXh0dXJlWVVWLAor
ICAgIH07CisKKyAgICBlbnVtIGNsYXNzIFByb2R1Y2VyVHlwZQorICAgIHsKKyAgICAgICAgTm9Q
cm9kdWNlciwKKyAgICAgICAgRDNEMTFUZXh0dXJlTlYxMiwKKyAgICB9OworCisgICAgLy8gQSBH
TCB0ZXh0dXJlIGludGVycHJldGF0aW9uIG9mIGEgcGFydCBvZiBhIHByb2R1Y2VyIGZyYW1lLiBG
b3IgdXNlIHdpdGggR0wgdGV4dHVyZSBjb25zdW1lcnMKKyAgICBzdHJ1Y3QgR0xUZXh0dXJlRGVz
Y3JpcHRpb24KKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGludCB3aWR0aDsKKyAgICAgICAgdW5z
aWduZWQgaW50IGhlaWdodDsKKyAgICAgICAgdW5zaWduZWQgaW50IGludGVybmFsRm9ybWF0Owor
ICAgICAgICB1bnNpZ25lZCBpbnQgbWlwTGV2ZWxzOworICAgIH07CisKICAgICBFR0xlbnVtIGdl
dFN0YXRlKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldENvbnN1bWVyTGF0ZW5jeShFR0xpbnQgbGF0
ZW5jeSk7CkBAIC00MSw5ICs3Myw0MiBAQCBjbGFzcyBTdHJlYW0gZmluYWwgOiBhbmdsZTo6Tm9u
Q29weWFibGUKICAgICB2b2lkIHNldENvbnN1bWVyQWNxdWlyZVRpbWVvdXQoRUdMaW50IHRpbWVv
dXQpOwogICAgIEVHTGludCBnZXRDb25zdW1lckFjcXVpcmVUaW1lb3V0KCkgY29uc3Q7CiAKKyAg
ICBDb25zdW1lclR5cGUgZ2V0Q29uc3VtZXJUeXBlKCkgY29uc3Q7CisgICAgUHJvZHVjZXJUeXBl
IGdldFByb2R1Y2VyVHlwZSgpIGNvbnN0OworCisgICAgRUdMaW50IGdldFBsYW5lQ291bnQoKSBj
b25zdDsKKworICAgIHJ4OjpTdHJlYW1Qcm9kdWNlckltcGwgKmdldEltcGxlbWVudGF0aW9uKCk7
CisKKyAgICAvLyBDb25zdW1lciBjcmVhdGlvbiBtZXRob2RzCisgICAgRXJyb3IgY3JlYXRlQ29u
c3VtZXJHTFRleHR1cmVFeHRlcm5hbChjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYnV0ZXMsIGds
OjpDb250ZXh0ICpjb250ZXh0KTsKKworICAgIC8vIFByb2R1Y2VyIGNyZWF0aW9uIG1ldGhvZHMK
KyAgICBFcnJvciBjcmVhdGVQcm9kdWNlckQzRDExVGV4dHVyZU5WMTIoY29uc3QgQXR0cmlidXRl
TWFwICZhdHRyaWJ1dGVzKTsKKworICAgIC8vIENvbnN1bWVyIG1ldGhvZHMKKyAgICBFcnJvciBj
b25zdW1lckFjcXVpcmUoKTsKKyAgICBFcnJvciBjb25zdW1lclJlbGVhc2UoKTsKKworICAgIC8v
IFNvbWUgY29uc3VtZXJzIGFyZSBib3VuZCB0byBHTCBjb250ZXh0cy4gVGhpcyB2YWxpZGF0ZXMg
dGhhdCBhIGdpdmVuIGNvbnRleHQgaXMgYm91bmQgdG8gdGhlCisgICAgLy8gc3RyZWFtJ3MgY29u
c3VtZXIKKyAgICBib29sIGlzQ29uc3VtZXJCb3VuZFRvQ29udGV4dChjb25zdCBnbDo6Q29udGV4
dCAqY29udGV4dCkgY29uc3Q7CisKKyAgICAvLyBQcm9kdWNlciBtZXRob2RzCisgICAgRXJyb3Ig
dmFsaWRhdGVEM0QxMU5WMTJUZXh0dXJlKHZvaWQgKnRleHR1cmUpIGNvbnN0OworICAgIEVycm9y
IHBvc3REM0QxMU5WMTJUZXh0dXJlKHZvaWQgKnRleHR1cmUsIGNvbnN0IEF0dHJpYnV0ZU1hcCAm
YXR0cmlidXRlcyk7CisKICAgcHJpdmF0ZToKLSAgICAvLyBJbXBsZW1lbnRhdGlvbgotICAgIHJ4
OjpTdHJlYW1JbXBsICptSW1wbGVtZW50YXRpb247CisgICAgLy8gQXNzb2NpYXRlZCBkaXNwbGF5
CisgICAgRGlzcGxheSAqbURpc3BsYXk7CisKKyAgICAvLyBQcm9kdWNlciBJbXBsZW1lbnRhdGlv
bgorICAgIHJ4OjpTdHJlYW1Qcm9kdWNlckltcGwgKm1Qcm9kdWNlckltcGxlbWVudGF0aW9uOwor
CisgICAgLy8gQXNzb2NpYXRlZCBHTCBjb250ZXh0LiBOb3RlIHRoYXQgdGhpcyBpcyBhIHdlYWsg
cG9pbnRlciB1c2VkIGZvciB2YWxpZGF0aW9uIHB1cnBvc2VzIG9ubHksCisgICAgLy8gYW5kIHNo
b3VsZCBuZXZlciBiZSBhcmJpdHJhcmlseSBkZXJlZmVyZW5jZWQgd2l0aG91dCBrbm93aW5nIHRo
ZSBjb250ZXh0IHN0aWxsIGV4aXN0cyBhcyBpdAorICAgIC8vIGNhbiBiZWNvbWUgZGFuZ2xpbmcg
YXQgYW55IHRpbWUuCisgICAgZ2w6OkNvbnRleHQgKm1Db250ZXh0OwogCiAgICAgLy8gRUdMIGRl
ZmluZWQgYXR0cmlidXRlcwogICAgIEVHTGludCBtU3RhdGU7CkBAIC01Myw2ICsxMTgsMjQgQEAg
Y2xhc3MgU3RyZWFtIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAKICAgICAvLyBFR0wgZ2x0
ZXh0dXJlIGNvbnN1bWVyIGF0dHJpYnV0ZXMKICAgICBFR0xpbnQgbUNvbnN1bWVyQWNxdWlyZVRp
bWVvdXQ7CisKKyAgICAvLyBFR0wgZ2x0ZXh0dXJlIHl1diBjb25zdW1lciBhdHRyaWJ1dGVzCisg
ICAgRUdMaW50IG1QbGFuZUNvdW50OworICAgIHN0cnVjdCBQbGFuZVRleHR1cmUKKyAgICB7Cisg
ICAgICAgIEVHTGludCB0ZXh0dXJlVW5pdDsKKyAgICAgICAgZ2w6OlRleHR1cmUgKnRleHR1cmU7
CisgICAgfTsKKyAgICAvLyBUZXh0dXJlIHVuaXRzIGFuZCB0ZXh0dXJlcyBmb3IgYWxsIHRoZSBw
bGFuZXMKKyAgICBzdGQ6OmFycmF5PFBsYW5lVGV4dHVyZSwgMz4gbVBsYW5lczsKKworICAgIC8v
IENvbnN1bWVyIGFuZCBwcm9kdWNlciB0eXBlcworICAgIENvbnN1bWVyVHlwZSBtQ29uc3VtZXJU
eXBlOworICAgIFByb2R1Y2VyVHlwZSBtUHJvZHVjZXJUeXBlOworCisgICAgLy8gQU5HTEUtb25s
eSBtZXRob2QsIHVzZWQgaW50ZXJuYWxseQorICAgIGZyaWVuZCBjbGFzcyBnbDo6VGV4dHVyZTsK
KyAgICB2b2lkIHJlbGVhc2VUZXh0dXJlcygpOwogfTsKIH0gIC8vIG5hbWVzcGFjZSBlZ2wKIApJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1N1cmZhY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TdXJmYWNl
LmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL1N1cmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMCwyNCArMTAsMjYgQEAKIAog
I2luY2x1ZGUgImxpYkFOR0xFL1N1cmZhY2UuaCIKIAotI2luY2x1ZGUgImxpYkFOR0xFL0NvbmZp
Zy5oIgotI2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1lYnVmZmVyLmgiCi0jaW5jbHVkZSAibGliQU5H
TEUvVGV4dHVyZS5oIgotCiAjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgogCiAjaW5jbHVkZSA8aW9z
dHJlYW0+CiAKKyNpbmNsdWRlICJsaWJBTkdMRS9Db25maWcuaCIKKyNpbmNsdWRlICJsaWJBTkdM
RS9GcmFtZWJ1ZmZlci5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1RleHR1cmUuaCIKKyNpbmNsdWRl
ICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0VH
TEltcGxGYWN0b3J5LmgiCisKIG5hbWVzcGFjZSBlZ2wKIHsKIAotU3VyZmFjZTo6U3VyZmFjZShy
eDo6U3VyZmFjZUltcGwgKmltcGwsCi0gICAgICAgICAgICAgICAgIEVHTGludCBzdXJmYWNlVHlw
ZSwKLSAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZywKLSAgICAgICAg
ICAgICAgICAgY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJ1dGVzKQorU3VyZmFjZVN0YXRlOjpT
dXJmYWNlU3RhdGUoKSA6IGRlZmF1bHRGcmFtZWJ1ZmZlcihudWxscHRyKQoreworfQorCitTdXJm
YWNlOjpTdXJmYWNlKEVHTGludCBzdXJmYWNlVHlwZSwgY29uc3QgZWdsOjpDb25maWcgKmNvbmZp
ZywgY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJ1dGVzKQogICAgIDogRnJhbWVidWZmZXJBdHRh
Y2htZW50T2JqZWN0KCksCi0gICAgICBtSW1wbGVtZW50YXRpb24oaW1wbCksCi0gICAgICBtRGVm
YXVsdEZyYW1lYnVmZmVyKG51bGxwdHIpLAorICAgICAgbUltcGxlbWVudGF0aW9uKG51bGxwdHIp
LAogICAgICAgbUN1cnJlbnRDb3VudCgwKSwKICAgICAgIG1EZXN0cm95ZWQoZmFsc2UpLAogICAg
ICAgbVR5cGUoc3VyZmFjZVR5cGUpLApAQCAtNDEsOSArNDMsMTEgQEAgU3VyZmFjZTo6U3VyZmFj
ZShyeDo6U3VyZmFjZUltcGwgKmltcGwsCiAgICAgICAvLyBGSVhNRTogRGV0ZXJtaW5lIGFjdHVh
bCBwaXhlbCBhc3BlY3QgcmF0aW8KICAgICAgIG1QaXhlbEFzcGVjdFJhdGlvKHN0YXRpY19jYXN0
PEVHTGludD4oMS4wICogRUdMX0RJU1BMQVlfU0NBTElORykpLAogICAgICAgbVJlbmRlckJ1ZmZl
cihFR0xfQkFDS19CVUZGRVIpLAotICAgICAgbVN3YXBCZWhhdmlvcihpbXBsLT5nZXRTd2FwQmVo
YXZpb3IoKSksCisgICAgICBtU3dhcEJlaGF2aW9yKEVHTF9OT05FKSwKICAgICAgIG1PcmllbnRh
dGlvbigwKSwKLSAgICAgIG1UZXh0dXJlKCkKKyAgICAgIG1UZXh0dXJlKCksCisgICAgICBtQmFj
a0Zvcm1hdChjb25maWctPnJlbmRlclRhcmdldEZvcm1hdCksCisgICAgICBtRFNGb3JtYXQoY29u
ZmlnLT5kZXB0aFN0ZW5jaWxGb3JtYXQpCiB7CiAgICAgbVBvc3RTdWJCdWZmZXJSZXF1ZXN0ZWQg
PSAoYXR0cmlidXRlcy5nZXQoRUdMX1BPU1RfU1VCX0JVRkZFUl9TVVBQT1JURURfTlYsIEVHTF9G
QUxTRSkgPT0gRUdMX1RSVUUpOwogICAgIG1GbGV4aWJsZVN1cmZhY2VDb21wYXRpYmlsaXR5UmVx
dWVzdGVkID0KQEAgLTY1LDkgKzY5LDYgQEAgU3VyZmFjZTo6U3VyZmFjZShyeDo6U3VyZmFjZUlt
cGwgKmltcGwsCiAgICAgfQogCiAgICAgbU9yaWVudGF0aW9uID0gc3RhdGljX2Nhc3Q8RUdMaW50
PihhdHRyaWJ1dGVzLmdldChFR0xfU1VSRkFDRV9PUklFTlRBVElPTl9BTkdMRSwgMCkpOwotCi0g
ICAgbURlZmF1bHRGcmFtZWJ1ZmZlciA9IGNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcigpOwotICAg
IEFTU0VSVChtRGVmYXVsdEZyYW1lYnVmZmVyICE9IG51bGxwdHIpOwogfQogCiBTdXJmYWNlOjp+
U3VyZmFjZSgpCkBAIC04MiwxMCArODMsMjUgQEAgU3VyZmFjZTo6flN1cmZhY2UoKQogICAgICAg
ICBtVGV4dHVyZS5zZXQobnVsbHB0cik7CiAgICAgfQogCi0gICAgU2FmZURlbGV0ZShtRGVmYXVs
dEZyYW1lYnVmZmVyKTsKKyAgICBTYWZlRGVsZXRlKG1TdGF0ZS5kZWZhdWx0RnJhbWVidWZmZXIp
OwogICAgIFNhZmVEZWxldGUobUltcGxlbWVudGF0aW9uKTsKIH0KIAorRXJyb3IgU3VyZmFjZTo6
aW5pdGlhbGl6ZSgpCit7CisgICAgQU5HTEVfVFJZKG1JbXBsZW1lbnRhdGlvbi0+aW5pdGlhbGl6
ZSgpKTsKKworICAgIC8vIEluaXRpYWxpemVkIGhlcmUgc2luY2UgaW1wbCBpcyBudWxscHRyIGlu
IHRoZSBjb25zdHJ1Y3Rvci4KKyAgICAvLyBNdXN0IGhhcHBlbiBhZnRlciBpbXBsZW1lbnRhdGlv
biBpbml0aWFsaXplIGZvciBBbmRyb2lkLgorICAgIG1Td2FwQmVoYXZpb3IgPSBtSW1wbGVtZW50
YXRpb24tPmdldFN3YXBCZWhhdmlvcigpOworCisgICAgLy8gTXVzdCBoYXBwZW4gYWZ0ZXIgaW1w
bGVtZW50YXRpb24gaW5pdGlhbGl6ZSBmb3IgT1NYLgorICAgIG1TdGF0ZS5kZWZhdWx0RnJhbWVi
dWZmZXIgPSBjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoKTsKKyAgICBBU1NFUlQobVN0YXRlLmRl
ZmF1bHRGcmFtZWJ1ZmZlciAhPSBudWxscHRyKTsKKworICAgIHJldHVybiBFcnJvcihFR0xfU1VD
Q0VTUyk7Cit9CisKIHZvaWQgU3VyZmFjZTo6c2V0SXNDdXJyZW50KGJvb2wgaXNDdXJyZW50KQog
ewogICAgIGlmIChpc0N1cnJlbnQpCkBAIC0yMDUsNiArMjIxLDExIEBAIEVycm9yIFN1cmZhY2U6
OnJlbGVhc2VUZXhJbWFnZShFR0xpbnQgYnUKICAgICByZXR1cm4gbUltcGxlbWVudGF0aW9uLT5y
ZWxlYXNlVGV4SW1hZ2UoYnVmZmVyKTsKIH0KIAorRXJyb3IgU3VyZmFjZTo6Z2V0U3luY1ZhbHVl
cyhFR0x1aW50NjRLSFIgKnVzdCwgRUdMdWludDY0S0hSICptc2MsIEVHTHVpbnQ2NEtIUiAqc2Jj
KQoreworICAgIHJldHVybiBtSW1wbGVtZW50YXRpb24tPmdldFN5bmNWYWx1ZXModXN0LCBtc2Ms
IHNiYyk7Cit9CisKIHZvaWQgU3VyZmFjZTo6cmVsZWFzZVRleEltYWdlRnJvbVRleHR1cmUoKQog
ewogICAgIEFTU0VSVChtVGV4dHVyZS5nZXQoKSk7CkBAIC0yMTYsMTAgKzIzNywxMCBAQCBnbDo6
RXh0ZW50cyBTdXJmYWNlOjpnZXRBdHRhY2htZW50U2l6ZShjCiAgICAgcmV0dXJuIGdsOjpFeHRl
bnRzKGdldFdpZHRoKCksIGdldEhlaWdodCgpLCAxKTsKIH0KIAotR0xlbnVtIFN1cmZhY2U6Omdl
dEF0dGFjaG1lbnRJbnRlcm5hbEZvcm1hdChjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50
OjpUYXJnZXQgJnRhcmdldCkgY29uc3QKK2NvbnN0IGdsOjpGb3JtYXQgJlN1cmZhY2U6OmdldEF0
dGFjaG1lbnRGb3JtYXQoCisgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFy
Z2V0ICZ0YXJnZXQpIGNvbnN0CiB7Ci0gICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZyA9IGdl
dENvbmZpZygpOwotICAgIHJldHVybiAodGFyZ2V0LmJpbmRpbmcoKSA9PSBHTF9CQUNLID8gY29u
ZmlnLT5yZW5kZXJUYXJnZXRGb3JtYXQgOiBjb25maWctPmRlcHRoU3RlbmNpbEZvcm1hdCk7Cisg
ICAgcmV0dXJuICh0YXJnZXQuYmluZGluZygpID09IEdMX0JBQ0sgPyBtQmFja0Zvcm1hdCA6IG1E
U0Zvcm1hdCk7CiB9CiAKIEdMc2l6ZWkgU3VyZmFjZTo6Z2V0QXR0YWNobWVudFNhbXBsZXMoY29u
c3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQpIGNvbnN0CkBAIC0y
NTgsNCArMjc5LDUzIEBAIGdsOjpGcmFtZWJ1ZmZlciAqU3VyZmFjZTo6Y3JlYXRlRGVmYXVsdEYK
IAogICAgIHJldHVybiBmcmFtZWJ1ZmZlcjsKIH0KKworV2luZG93U3VyZmFjZTo6V2luZG93U3Vy
ZmFjZShyeDo6RUdMSW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJzKQorICAgIDogU3VyZmFjZShF
R0xfV0lORE9XX0JJVCwgY29uZmlnLCBhdHRyaWJzKQoreworICAgIG1JbXBsZW1lbnRhdGlvbiA9
IGltcGxGYWN0b3J5LT5jcmVhdGVXaW5kb3dTdXJmYWNlKG1TdGF0ZSwgY29uZmlnLCB3aW5kb3cs
IGF0dHJpYnMpOworfQorCitXaW5kb3dTdXJmYWNlOjp+V2luZG93U3VyZmFjZSgpCit7Cit9CisK
K1BidWZmZXJTdXJmYWNlOjpQYnVmZmVyU3VyZmFjZShyeDo6RUdMSW1wbEZhY3RvcnkgKmltcGxG
YWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbmZpZyAqY29u
ZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZU1hcCAm
YXR0cmlicykKKyAgICA6IFN1cmZhY2UoRUdMX1BCVUZGRVJfQklULCBjb25maWcsIGF0dHJpYnMp
Cit7CisgICAgbUltcGxlbWVudGF0aW9uID0gaW1wbEZhY3RvcnktPmNyZWF0ZVBidWZmZXJTdXJm
YWNlKG1TdGF0ZSwgY29uZmlnLCBhdHRyaWJzKTsKK30KKworUGJ1ZmZlclN1cmZhY2U6OlBidWZm
ZXJTdXJmYWNlKHJ4OjpFR0xJbXBsRmFjdG9yeSAqaW1wbEZhY3RvcnksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgQ29uZmlnICpjb25maWcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIHNoYXJlSGFuZGxlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0cmlicykKKyAgICA6IFN1
cmZhY2UoRUdMX1BCVUZGRVJfQklULCBjb25maWcsIGF0dHJpYnMpCit7CisgICAgbUltcGxlbWVu
dGF0aW9uID0KKyAgICAgICAgaW1wbEZhY3RvcnktPmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVm
ZmVyKG1TdGF0ZSwgY29uZmlnLCBzaGFyZUhhbmRsZSwgYXR0cmlicyk7CiB9CisKK1BidWZmZXJT
dXJmYWNlOjp+UGJ1ZmZlclN1cmZhY2UoKQoreworfQorCitQaXhtYXBTdXJmYWNlOjpQaXhtYXBT
dXJmYWNlKHJ4OjpFR0xJbXBsRmFjdG9yeSAqaW1wbEZhY3RvcnksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IENvbmZpZyAqY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOYXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJzKQorICAgIDogU3VyZmFjZShF
R0xfUElYTUFQX0JJVCwgY29uZmlnLCBhdHRyaWJzKQoreworICAgIG1JbXBsZW1lbnRhdGlvbiA9
IGltcGxGYWN0b3J5LT5jcmVhdGVQaXhtYXBTdXJmYWNlKG1TdGF0ZSwgY29uZmlnLCBuYXRpdmVQ
aXhtYXAsIGF0dHJpYnMpOworfQorCitQaXhtYXBTdXJmYWNlOjp+UGl4bWFwU3VyZmFjZSgpCit7
Cit9CisKK30gIC8vIG5hbWVzcGFjZSBlZ2wKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9TdXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL1N1cmZhY2UuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1N1cmZhY2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgImxpYkFOR0xFL0Vycm9yLmgiCiAjaW5jbHVkZSAi
bGliQU5HTEUvRnJhbWVidWZmZXJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvUmVm
Q291bnRPYmplY3QuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1N1cmZhY2VJbXBsLmgiCiAKIG5hbWVzcGFjZSBnbApAQCAt
MjUsMjggKzI2LDQyIEBAIGNsYXNzIEZyYW1lYnVmZmVyOwogY2xhc3MgVGV4dHVyZTsKIH0KIAor
bmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBFR0xJbXBsRmFjdG9yeTsKK30KKwogbmFtZXNwYWNlIGVn
bAogewogY2xhc3MgQXR0cmlidXRlTWFwOwogY2xhc3MgRGlzcGxheTsKIHN0cnVjdCBDb25maWc7
CiAKLWNsYXNzIFN1cmZhY2UgZmluYWwgOiBwdWJsaWMgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVu
dE9iamVjdAorc3RydWN0IFN1cmZhY2VTdGF0ZSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQor
eworICAgIFN1cmZhY2VTdGF0ZSgpOworCisgICAgZ2w6OkZyYW1lYnVmZmVyICpkZWZhdWx0RnJh
bWVidWZmZXI7Cit9OworCitjbGFzcyBTdXJmYWNlIDogcHVibGljIGdsOjpGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRPYmplY3QKIHsKICAgcHVibGljOgotICAgIFN1cmZhY2Uocng6OlN1cmZhY2VJbXBs
ICppbXBsLCBFR0xpbnQgc3VyZmFjZVR5cGUsIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcsIGNv
bnN0IEF0dHJpYnV0ZU1hcCAmYXR0cmlidXRlcyk7CisgICAgdmlydHVhbCB+U3VyZmFjZSgpOwog
Ci0gICAgcng6OlN1cmZhY2VJbXBsICpnZXRJbXBsZW1lbnRhdGlvbigpIHsgcmV0dXJuIG1JbXBs
ZW1lbnRhdGlvbjsgfQotICAgIGNvbnN0IHJ4OjpTdXJmYWNlSW1wbCAqZ2V0SW1wbGVtZW50YXRp
b24oKSBjb25zdCB7IHJldHVybiBtSW1wbGVtZW50YXRpb247IH0KKyAgICByeDo6U3VyZmFjZUlt
cGwgKmdldEltcGxlbWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbUltcGxlbWVudGF0aW9uOyB9
CiAKICAgICBFR0xpbnQgZ2V0VHlwZSgpIGNvbnN0OwogCisgICAgRXJyb3IgaW5pdGlhbGl6ZSgp
OwogICAgIEVycm9yIHN3YXAoKTsKICAgICBFcnJvciBwb3N0U3ViQnVmZmVyKEVHTGludCB4LCBF
R0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KTsKICAgICBFcnJvciBxdWVyeVN1
cmZhY2VQb2ludGVyQU5HTEUoRUdMaW50IGF0dHJpYnV0ZSwgdm9pZCAqKnZhbHVlKTsKICAgICBF
cnJvciBiaW5kVGV4SW1hZ2UoZ2w6OlRleHR1cmUgKnRleHR1cmUsIEVHTGludCBidWZmZXIpOwog
ICAgIEVycm9yIHJlbGVhc2VUZXhJbWFnZShFR0xpbnQgYnVmZmVyKTsKIAorICAgIEVycm9yIGdl
dFN5bmNWYWx1ZXMoRUdMdWludDY0S0hSICp1c3QsIEVHTHVpbnQ2NEtIUiAqbXNjLCBFR0x1aW50
NjRLSFIgKnNiYyk7CisKICAgICBFR0xpbnQgaXNQb3N0U3ViQnVmZmVyU3VwcG9ydGVkKCkgY29u
c3Q7CiAKICAgICB2b2lkIHNldFN3YXBJbnRlcnZhbChFR0xpbnQgaW50ZXJ2YWwpOwpAQCAtNjUs
MTMgKzgwLDE0IEBAIGNsYXNzIFN1cmZhY2UgZmluYWwgOiBwdWJsaWMgZ2w6OkZyYW1lYnUKICAg
ICBFR0xlbnVtIGdldFRleHR1cmVUYXJnZXQoKSBjb25zdDsKIAogICAgIGdsOjpUZXh0dXJlICpn
ZXRCb3VuZFRleHR1cmUoKSBjb25zdCB7IHJldHVybiBtVGV4dHVyZS5nZXQoKTsgfQotICAgIGds
OjpGcmFtZWJ1ZmZlciAqZ2V0RGVmYXVsdEZyYW1lYnVmZmVyKCkgeyByZXR1cm4gbURlZmF1bHRG
cmFtZWJ1ZmZlcjsgfQorICAgIGdsOjpGcmFtZWJ1ZmZlciAqZ2V0RGVmYXVsdEZyYW1lYnVmZmVy
KCkgeyByZXR1cm4gbVN0YXRlLmRlZmF1bHRGcmFtZWJ1ZmZlcjsgfQogCiAgICAgRUdMaW50IGlz
Rml4ZWRTaXplKCkgY29uc3Q7CiAKICAgICAvLyBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3Qg
aW1wbGVtZW50YXRpb24KICAgICBnbDo6RXh0ZW50cyBnZXRBdHRhY2htZW50U2l6ZShjb25zdCBn
bDo6RnJhbWVidWZmZXJBdHRhY2htZW50OjpUYXJnZXQgJnRhcmdldCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgR0xlbnVtIGdldEF0dGFjaG1lbnRJbnRlcm5hbEZvcm1hdChjb25zdCBnbDo6RnJhbWVi
dWZmZXJBdHRhY2htZW50OjpUYXJnZXQgJnRhcmdldCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29u
c3QgZ2w6OkZvcm1hdCAmZ2V0QXR0YWNobWVudEZvcm1hdCgKKyAgICAgICAgY29uc3QgZ2w6OkZy
YW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQpIGNvbnN0IG92ZXJyaWRlOwogICAg
IEdMc2l6ZWkgZ2V0QXR0YWNobWVudFNhbXBsZXMoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNo
bWVudDo6VGFyZ2V0ICZ0YXJnZXQpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBvbkF0dGFj
aCgpIG92ZXJyaWRlIHt9CkBAIC04Niw4ICsxMDIsOCBAQCBjbGFzcyBTdXJmYWNlIGZpbmFsIDog
cHVibGljIGdsOjpGcmFtZWJ1CiAKICAgICBib29sIGRpcmVjdENvbXBvc2l0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbURpcmVjdENvbXBvc2l0aW9uOyB9CiAKLSAgcHJpdmF0ZToKLSAgICB2aXJ0dWFs
IH5TdXJmYWNlKCk7CisgIHByb3RlY3RlZDoKKyAgICBTdXJmYWNlKEVHTGludCBzdXJmYWNlVHlw
ZSwgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZywgY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJ1
dGVzKTsKICAgICByeDo6RnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0SW1wbCAqZ2V0QXR0YWNo
bWVudEltcGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtSW1wbGVtZW50YXRpb247IH0KIAog
ICAgIGdsOjpGcmFtZWJ1ZmZlciAqY3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKCk7CkBAIC05Niw4
ICsxMTIsOCBAQCBjbGFzcyBTdXJmYWNlIGZpbmFsIDogcHVibGljIGdsOjpGcmFtZWJ1CiAgICAg
ZnJpZW5kIGNsYXNzIGdsOjpUZXh0dXJlOwogICAgIHZvaWQgcmVsZWFzZVRleEltYWdlRnJvbVRl
eHR1cmUoKTsKIAorICAgIFN1cmZhY2VTdGF0ZSBtU3RhdGU7CiAgICAgcng6OlN1cmZhY2VJbXBs
ICptSW1wbGVtZW50YXRpb247Ci0gICAgZ2w6OkZyYW1lYnVmZmVyICptRGVmYXVsdEZyYW1lYnVm
ZmVyOwogICAgIGludCBtQ3VycmVudENvdW50OwogICAgIGJvb2wgbURlc3Ryb3llZDsKIApAQCAt
MTI0LDggKzE0MCw0NCBAQCBjbGFzcyBTdXJmYWNlIGZpbmFsIDogcHVibGljIGdsOjpGcmFtZWJ1
CiAgICAgRUdMaW50IG1PcmllbnRhdGlvbjsKIAogICAgIEJpbmRpbmdQb2ludGVyPGdsOjpUZXh0
dXJlPiBtVGV4dHVyZTsKKworICAgIGdsOjpGb3JtYXQgbUJhY2tGb3JtYXQ7CisgICAgZ2w6OkZv
cm1hdCBtRFNGb3JtYXQ7CiB9OwogCi19CitjbGFzcyBXaW5kb3dTdXJmYWNlIGZpbmFsIDogcHVi
bGljIFN1cmZhY2UKK3sKKyAgcHVibGljOgorICAgIFdpbmRvd1N1cmZhY2Uocng6OkVHTEltcGxG
YWN0b3J5ICppbXBsRmFjdG9yeSwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IENvbmZpZyAqY29u
ZmlnLAorICAgICAgICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCisgICAg
ICAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpOworICAgIH5XaW5kb3dT
dXJmYWNlKCkgb3ZlcnJpZGU7Cit9OworCitjbGFzcyBQYnVmZmVyU3VyZmFjZSBmaW5hbCA6IHB1
YmxpYyBTdXJmYWNlCit7CisgIHB1YmxpYzoKKyAgICBQYnVmZmVyU3VyZmFjZShyeDo6RUdMSW1w
bEZhY3RvcnkgKmltcGxGYWN0b3J5LAorICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbmZpZyAq
Y29uZmlnLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0cmlicyk7
CisgICAgUGJ1ZmZlclN1cmZhY2Uocng6OkVHTEltcGxGYWN0b3J5ICppbXBsRmFjdG9yeSwKKyAg
ICAgICAgICAgICAgICAgICBjb25zdCBDb25maWcgKmNvbmZpZywKKyAgICAgICAgICAgICAgICAg
ICBFR0xDbGllbnRCdWZmZXIgc2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgY29uc3Qg
QXR0cmlidXRlTWFwICZhdHRyaWJzKTsKKyAgICB+UGJ1ZmZlclN1cmZhY2UoKSBvdmVycmlkZTsK
K307CisKK2NsYXNzIFBpeG1hcFN1cmZhY2UgZmluYWwgOiBwdWJsaWMgU3VyZmFjZQoreworICBw
dWJsaWM6CisgICAgUGl4bWFwU3VyZmFjZShyeDo6RUdMSW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5
LAorICAgICAgICAgICAgICAgICAgY29uc3QgQ29uZmlnICpjb25maWcsCisgICAgICAgICAgICAg
ICAgICBOYXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwKKyAgICAgICAgICAgICAgICAgIGNv
bnN0IEF0dHJpYnV0ZU1hcCAmYXR0cmlicyk7CisgICAgflBpeG1hcFN1cmZhY2UoKSBvdmVycmlk
ZTsKK307CisKK30gIC8vIG5hbWVzcGFjZSBlZ2wKIAogI2VuZGlmICAgLy8gTElCQU5HTEVfU1VS
RkFDRV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1N1cmZh
Y2VfdW5pdHRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9TdXJmYWNlX3VuaXR0ZXN0LmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1N1cmZhY2VfdW5pdHRlc3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05LDEzICs5LDE1IEBACiAjaW5jbHVkZSAibGliQU5HTEUvYW5nbGV0
eXBlcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0F0dHJpYnV0ZU1hcC5oIgogI2luY2x1ZGUgImxp
YkFOR0xFL0NvbmZpZy5oIgotI2luY2x1ZGUgImxpYkFOR0xFL0RhdGEuaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9Db250ZXh0U3RhdGUuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9TdGF0ZS5oIgogI2lu
Y2x1ZGUgImxpYkFOR0xFL1N1cmZhY2UuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9G
cmFtZWJ1ZmZlckltcGxfbW9jay5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1N1cmZh
Y2VJbXBsLmgiCisjaW5jbHVkZSAidGVzdHMvYW5nbGVfdW5pdHRlc3RzX3V0aWxzLmgiCiAKIHVz
aW5nIG5hbWVzcGFjZSByeDsKK3VzaW5nIG5hbWVzcGFjZSB0ZXN0aW5nOwogCiBuYW1lc3BhY2UK
IHsKQEAgLTIzLDE2ICsyNSwxNyBAQCBuYW1lc3BhY2UKIGNsYXNzIE1vY2tTdXJmYWNlSW1wbCA6
IHB1YmxpYyByeDo6U3VyZmFjZUltcGwKIHsKICAgcHVibGljOgorICAgIE1vY2tTdXJmYWNlSW1w
bCgpIDogU3VyZmFjZUltcGwobW9ja1N0YXRlKSB7fQogICAgIHZpcnR1YWwgfk1vY2tTdXJmYWNl
SW1wbCgpIHsgZGVzdHJveSgpOyB9CiAKICAgICBNT0NLX01FVEhPRDAoaW5pdGlhbGl6ZSwgZWds
OjpFcnJvcigpKTsKLSAgICBNT0NLX01FVEhPRDEoY3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyLAot
ICAgICAgICAgICAgICAgICByeDo6RnJhbWVidWZmZXJJbXBsICooY29uc3QgZ2w6OkZyYW1lYnVm
ZmVyOjpEYXRhICZkYXRhKSk7CisgICAgTU9DS19NRVRIT0QxKGNyZWF0ZURlZmF1bHRGcmFtZWJ1
ZmZlciwgcng6OkZyYW1lYnVmZmVySW1wbCAqKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZk
YXRhKSk7CiAgICAgTU9DS19NRVRIT0QwKHN3YXAsIGVnbDo6RXJyb3IoKSk7CiAgICAgTU9DS19N
RVRIT0Q0KHBvc3RTdWJCdWZmZXIsIGVnbDo6RXJyb3IoRUdMaW50LCBFR0xpbnQsIEVHTGludCwg
RUdMaW50KSk7CiAgICAgTU9DS19NRVRIT0QyKHF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRSwgZWds
OjpFcnJvcihFR0xpbnQsIHZvaWQqKikpOwogICAgIE1PQ0tfTUVUSE9EMihiaW5kVGV4SW1hZ2Us
IGVnbDo6RXJyb3IoZ2w6OlRleHR1cmUqLCBFR0xpbnQpKTsKICAgICBNT0NLX01FVEhPRDEocmVs
ZWFzZVRleEltYWdlLCBlZ2w6OkVycm9yKEVHTGludCkpOworICAgIE1PQ0tfTUVUSE9EMyhnZXRT
eW5jVmFsdWVzLCBlZ2w6OkVycm9yKEVHTHVpbnQ2NEtIUiAqLCBFR0x1aW50NjRLSFIgKiwgRUdM
dWludDY0S0hSICopKTsKICAgICBNT0NLX01FVEhPRDEoc2V0U3dhcEludGVydmFsLCB2b2lkKEVH
TGludCkpOwogICAgIE1PQ0tfQ09OU1RfTUVUSE9EMChnZXRXaWR0aCwgRUdMaW50KCkpOwogICAg
IE1PQ0tfQ09OU1RfTUVUSE9EMChnZXRIZWlnaHQsIEVHTGludCgpKTsKQEAgLTQxLDIwICs0NCwy
MSBAQCBjbGFzcyBNb2NrU3VyZmFjZUltcGwgOiBwdWJsaWMgcng6OlN1cmZhCiAgICAgTU9DS19N
RVRIT0QyKGdldEF0dGFjaG1lbnRSZW5kZXJUYXJnZXQsIGdsOjpFcnJvcihjb25zdCBnbDo6RnJh
bWVidWZmZXJBdHRhY2htZW50OjpUYXJnZXQgJiwgcng6OkZyYW1lYnVmZmVyQXR0YWNobWVudFJl
bmRlclRhcmdldCAqKikpOwogCiAgICAgTU9DS19NRVRIT0QwKGRlc3Ryb3ksIHZvaWQoKSk7CisK
KyAgICBlZ2w6OlN1cmZhY2VTdGF0ZSBtb2NrU3RhdGU7CiB9OwogCiBURVNUKFN1cmZhY2VUZXN0
LCBEZXN0cnVjdGlvbkRlbGV0ZXNJbXBsKQogewotICAgIE1vY2tGcmFtZWJ1ZmZlckltcGwgKmZy
YW1lYnVmZmVyID0gbmV3IE1vY2tGcmFtZWJ1ZmZlckltcGw7CisgICAgTmljZU1vY2s8TW9ja0VH
TEZhY3Rvcnk+IGZhY3Rvcnk7CiAKICAgICBNb2NrU3VyZmFjZUltcGwgKmltcGwgPSBuZXcgTW9j
a1N1cmZhY2VJbXBsOwotICAgIEVYUEVDVF9DQUxMKCppbXBsLCBnZXRTd2FwQmVoYXZpb3IoKSk7
Ci0gICAgRVhQRUNUX0NBTEwoKmltcGwsIGNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcih0ZXN0aW5n
OjpfKSkuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKGZyYW1lYnVmZmVyKSk7CisgICAgRVhQRUNU
X0NBTEwoZmFjdG9yeSwgY3JlYXRlV2luZG93U3VyZmFjZShfLCBfLCBfLCBfKSkuV2lsbE9uY2Uo
UmV0dXJuKGltcGwpKTsKIAogICAgIGVnbDo6Q29uZmlnIGNvbmZpZzsKLSAgICBlZ2w6OlN1cmZh
Y2UgKnN1cmZhY2UgPSBuZXcgZWdsOjpTdXJmYWNlKGltcGwsIEVHTF9XSU5ET1dfQklULCAmY29u
ZmlnLCBlZ2w6OkF0dHJpYnV0ZU1hcCgpKTsKKyAgICBlZ2w6OlN1cmZhY2UgKnN1cmZhY2UgPSBu
ZXcgZWdsOjpXaW5kb3dTdXJmYWNlKAorICAgICAgICAmZmFjdG9yeSwgJmNvbmZpZywgc3RhdGlj
X2Nhc3Q8RUdMTmF0aXZlV2luZG93VHlwZT4oMCksIGVnbDo6QXR0cmlidXRlTWFwKCkpOwogCi0g
ICAgRVhQRUNUX0NBTEwoKmZyYW1lYnVmZmVyLCBkZXN0cm95KCkpLlRpbWVzKDEpLlJldGlyZXNP
blNhdHVyYXRpb24oKTsKICAgICBFWFBFQ1RfQ0FMTCgqaW1wbCwgZGVzdHJveSgpKS5UaW1lcygx
KS5SZXRpcmVzT25TYXR1cmF0aW9uKCk7CiAKICAgICBzdXJmYWNlLT5vbkRlc3Ryb3koKTsKQEAg
LTYyLDcgKzY2LDcgQEAgVEVTVChTdXJmYWNlVGVzdCwgRGVzdHJ1Y3Rpb25EZWxldGVzSW1wbAog
ICAgIC8vIE9ubHkgbmVlZGVkIGJlY2F1c2UgdGhlIG1vY2sgaXMgbGVha2VkIGlmIGJ1Z3MgYXJl
IHByZXNlbnQsCiAgICAgLy8gd2hpY2ggbG9ncyBhbiBlcnJvciwgYnV0IGRvZXMgbm90IGNhdXNl
IHRoZSB0ZXN0IHRvIGZhaWwuCiAgICAgLy8gT3JkaW5hcmlseSBtb2NrcyBhcmUgdmVyaWZpZWQg
d2hlbiBkZXN0cm95ZWQuCi0gICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXIoaW1wbCk7
CisgICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXIoaW1wbCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVGV4dHVyZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1RleHR1cmUu
Y3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvVGV4dHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyLDE0ICsxMiwzMiBAQAogI2lu
Y2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Db25maWcuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9Db250ZXh0LmgiCi0jaW5jbHVkZSAibGliQU5HTEUvRGF0YS5o
IgorI2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHRTdGF0ZS5oIgogI2luY2x1ZGUgImxpYkFOR0xF
L0ltYWdlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvU3VyZmFjZS5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL2Zvcm1hdHV0aWxzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvR0xJbXBsRmFj
dG9yeS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1RleHR1cmVJbXBsLmgiCiAKIG5h
bWVzcGFjZSBnbAogewogCituYW1lc3BhY2UKK3sKK2Jvb2wgSXNQb2ludFNhbXBsZWQoY29uc3Qg
Z2w6OlNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlKQoreworICAgIHJldHVybiAoc2FtcGxlclN0
YXRlLm1hZ0ZpbHRlciA9PSBHTF9ORUFSRVNUICYmCisgICAgICAgICAgICAoc2FtcGxlclN0YXRl
Lm1pbkZpbHRlciA9PSBHTF9ORUFSRVNUIHx8CisgICAgICAgICAgICAgc2FtcGxlclN0YXRlLm1p
bkZpbHRlciA9PSBHTF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUKSk7Cit9CisKK3NpemVfdCBHZXRJ
bWFnZURlc2NJbmRleChHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwpCit7CisgICAgcmV0dXJu
IElzQ3ViZU1hcFRleHR1cmVUYXJnZXQodGFyZ2V0KSA/ICgobGV2ZWwgKiA2KSArIEN1YmVNYXBU
ZXh0dXJlVGFyZ2V0VG9MYXllckluZGV4KHRhcmdldCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA6IGxldmVsOworfQorfSAgLy8gbmFtZXNwYWNlCisKIGJvb2wg
SXNNaXBtYXBGaWx0ZXJlZChjb25zdCBnbDo6U2FtcGxlclN0YXRlICZzYW1wbGVyU3RhdGUpCiB7
CiAgICAgc3dpdGNoIChzYW1wbGVyU3RhdGUubWluRmlsdGVyKQpAQCAtMzcsMjUgKzU1LDQ0NiBA
QCBib29sIElzTWlwbWFwRmlsdGVyZWQoY29uc3QgZ2w6OlNhbXBsZXJTCiAgICAgfQogfQogCi1i
b29sIElzUG9pbnRTYW1wbGVkKGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJnNhbXBsZXJTdGF0ZSkK
K1N3aXp6bGVTdGF0ZTo6U3dpenpsZVN0YXRlKCkKKyAgICA6IHN3aXp6bGVSZWQoR0xfSU5WQUxJ
RF9JTkRFWCksCisgICAgICBzd2l6emxlR3JlZW4oR0xfSU5WQUxJRF9JTkRFWCksCisgICAgICBz
d2l6emxlQmx1ZShHTF9JTlZBTElEX0lOREVYKSwKKyAgICAgIHN3aXp6bGVBbHBoYShHTF9JTlZB
TElEX0lOREVYKQoreworfQorCitTd2l6emxlU3RhdGU6OlN3aXp6bGVTdGF0ZShHTGVudW0gcmVk
LCBHTGVudW0gZ3JlZW4sIEdMZW51bSBibHVlLCBHTGVudW0gYWxwaGEpCisgICAgOiBzd2l6emxl
UmVkKHJlZCksIHN3aXp6bGVHcmVlbihncmVlbiksIHN3aXp6bGVCbHVlKGJsdWUpLCBzd2l6emxl
QWxwaGEoYWxwaGEpCit7Cit9CisKK2Jvb2wgU3dpenpsZVN0YXRlOjpzd2l6emxlUmVxdWlyZWQo
KSBjb25zdAoreworICAgIHJldHVybiBzd2l6emxlUmVkICE9IEdMX1JFRCB8fCBzd2l6emxlR3Jl
ZW4gIT0gR0xfR1JFRU4gfHwgc3dpenpsZUJsdWUgIT0gR0xfQkxVRSB8fAorICAgICAgICAgICBz
d2l6emxlQWxwaGEgIT0gR0xfQUxQSEE7Cit9CisKK2Jvb2wgU3dpenpsZVN0YXRlOjpvcGVyYXRv
cj09KGNvbnN0IFN3aXp6bGVTdGF0ZSAmb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN3aXp6
bGVSZWQgPT0gb3RoZXIuc3dpenpsZVJlZCAmJiBzd2l6emxlR3JlZW4gPT0gb3RoZXIuc3dpenps
ZUdyZWVuICYmCisgICAgICAgICAgIHN3aXp6bGVCbHVlID09IG90aGVyLnN3aXp6bGVCbHVlICYm
IHN3aXp6bGVBbHBoYSA9PSBvdGhlci5zd2l6emxlQWxwaGE7Cit9CisKK2Jvb2wgU3dpenpsZVN0
YXRlOjpvcGVyYXRvciE9KGNvbnN0IFN3aXp6bGVTdGF0ZSAmb3RoZXIpIGNvbnN0Cit7CisgICAg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworfQorCitUZXh0dXJlU3RhdGU6OlRleHR1cmVTdGF0
ZShHTGVudW0gdGFyZ2V0KQorICAgIDogbVRhcmdldCh0YXJnZXQpLAorICAgICAgbVN3aXp6bGVT
dGF0ZShHTF9SRUQsIEdMX0dSRUVOLCBHTF9CTFVFLCBHTF9BTFBIQSksCisgICAgICBtU2FtcGxl
clN0YXRlKFNhbXBsZXJTdGF0ZTo6Q3JlYXRlRGVmYXVsdEZvclRhcmdldCh0YXJnZXQpKSwKKyAg
ICAgIG1CYXNlTGV2ZWwoMCksCisgICAgICBtTWF4TGV2ZWwoMTAwMCksCisgICAgICBtSW1tdXRh
YmxlRm9ybWF0KGZhbHNlKSwKKyAgICAgIG1JbW11dGFibGVMZXZlbHMoMCksCisgICAgICBtVXNh
Z2UoR0xfTk9ORSksCisgICAgICBtSW1hZ2VEZXNjcygoSU1QTEVNRU5UQVRJT05fTUFYX1RFWFRV
UkVfTEVWRUxTICsgMSkgKgorICAgICAgICAgICAgICAgICAgKHRhcmdldCA9PSBHTF9URVhUVVJF
X0NVQkVfTUFQID8gNiA6IDEpKSwKKyAgICAgIG1Db21wbGV0ZW5lc3NDYWNoZSgpCit7Cit9CisK
K2Jvb2wgVGV4dHVyZVN0YXRlOjpzd2l6emxlUmVxdWlyZWQoKSBjb25zdAoreworICAgIHJldHVy
biBtU3dpenpsZVN0YXRlLnN3aXp6bGVSZXF1aXJlZCgpOworfQorCitHTHVpbnQgVGV4dHVyZVN0
YXRlOjpnZXRFZmZlY3RpdmVCYXNlTGV2ZWwoKSBjb25zdAoreworICAgIGlmIChtSW1tdXRhYmxl
Rm9ybWF0KQorICAgIHsKKyAgICAgICAgLy8gR0xFUyAzLjAuNCBzZWN0aW9uIDMuOC4xMAorICAg
ICAgICByZXR1cm4gc3RkOjptaW4obUJhc2VMZXZlbCwgbUltbXV0YWJsZUxldmVscyAtIDEpOwor
ICAgIH0KKyAgICAvLyBTb21lIGNsYXNzZXMgdXNlIHRoZSBlZmZlY3RpdmUgYmFzZSBsZXZlbCB0
byBpbmRleCBhcnJheXMgd2l0aCBsZXZlbCBkYXRhLiBCeSBjbGFtcGluZyB0aGUKKyAgICAvLyBl
ZmZlY3RpdmUgYmFzZSBsZXZlbCB0byBtYXggbGV2ZWxzIHRoZXNlIGFycmF5cyBuZWVkIGp1c3Qg
b25lIGV4dHJhIGl0ZW0gdG8gc3RvcmUgcHJvcGVydGllcworICAgIC8vIHRoYXQgc2hvdWxkIGJl
IHJldHVybmVkIGZvciBhbGwgb3V0LW9mLXJhbmdlIGJhc2UgbGV2ZWwgdmFsdWVzLCBpbnN0ZWFk
IG9mIG5lZWRpbmcgc3BlY2lhbAorICAgIC8vIGhhbmRsaW5nIGZvciBvdXQtb2YtcmFuZ2UgYmFz
ZSBsZXZlbHMuCisgICAgcmV0dXJuIHN0ZDo6bWluKG1CYXNlTGV2ZWwsIHN0YXRpY19jYXN0PEdM
dWludD4oZ2w6OklNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUykpOworfQorCitHTHVp
bnQgVGV4dHVyZVN0YXRlOjpnZXRFZmZlY3RpdmVNYXhMZXZlbCgpIGNvbnN0Cit7CisgICAgaWYg
KG1JbW11dGFibGVGb3JtYXQpCisgICAgeworICAgICAgICAvLyBHTEVTIDMuMC40IHNlY3Rpb24g
My44LjEwCisgICAgICAgIEdMdWludCBjbGFtcGVkTWF4TGV2ZWwgPSBzdGQ6Om1heChtTWF4TGV2
ZWwsIGdldEVmZmVjdGl2ZUJhc2VMZXZlbCgpKTsKKyAgICAgICAgY2xhbXBlZE1heExldmVsICAg
ICAgICA9IHN0ZDo6bWluKGNsYW1wZWRNYXhMZXZlbCwgbUltbXV0YWJsZUxldmVscyAtIDEpOwor
ICAgICAgICByZXR1cm4gY2xhbXBlZE1heExldmVsOworICAgIH0KKyAgICByZXR1cm4gbU1heExl
dmVsOworfQorCitHTHVpbnQgVGV4dHVyZVN0YXRlOjpnZXRNaXBtYXBNYXhMZXZlbCgpIGNvbnN0
Cit7CisgICAgY29uc3QgSW1hZ2VEZXNjICZiYXNlSW1hZ2VEZXNjID0gZ2V0SW1hZ2VEZXNjKGdl
dEJhc2VJbWFnZVRhcmdldCgpLCBnZXRFZmZlY3RpdmVCYXNlTGV2ZWwoKSk7CisgICAgR0x1aW50
IGV4cGVjdGVkTWlwTGV2ZWxzID0gMDsKKyAgICBpZiAobVRhcmdldCA9PSBHTF9URVhUVVJFXzNE
KQorICAgIHsKKyAgICAgICAgY29uc3QgaW50IG1heERpbSA9IHN0ZDo6bWF4KHN0ZDo6bWF4KGJh
c2VJbWFnZURlc2Muc2l6ZS53aWR0aCwgYmFzZUltYWdlRGVzYy5zaXplLmhlaWdodCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlSW1hZ2VEZXNjLnNpemUuZGVwdGgp
OworICAgICAgICBleHBlY3RlZE1pcExldmVscyA9IHN0YXRpY19jYXN0PEdMdWludD4obG9nMiht
YXhEaW0pKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgZXhwZWN0ZWRNaXBMZXZl
bHMgPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KAorICAgICAgICAgICAgbG9nMihzdGQ6Om1heChiYXNl
SW1hZ2VEZXNjLnNpemUud2lkdGgsIGJhc2VJbWFnZURlc2Muc2l6ZS5oZWlnaHQpKSk7CisgICAg
fQorCisgICAgcmV0dXJuIHN0ZDo6bWluPEdMdWludD4oZ2V0RWZmZWN0aXZlQmFzZUxldmVsKCkg
KyBleHBlY3RlZE1pcExldmVscywgZ2V0RWZmZWN0aXZlTWF4TGV2ZWwoKSk7Cit9CisKK2Jvb2wg
VGV4dHVyZVN0YXRlOjpzZXRCYXNlTGV2ZWwoR0x1aW50IGJhc2VMZXZlbCkKK3sKKyAgICBpZiAo
bUJhc2VMZXZlbCAhPSBiYXNlTGV2ZWwpCisgICAgeworICAgICAgICBtQmFzZUxldmVsICAgICAg
ICAgICAgICAgICAgICA9IGJhc2VMZXZlbDsKKyAgICAgICAgbUNvbXBsZXRlbmVzc0NhY2hlLmNh
Y2hlVmFsaWQgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KKwordm9pZCBUZXh0dXJlU3RhdGU6OnNldE1heExldmVsKEdMdWludCBtYXhM
ZXZlbCkKK3sKKyAgICBpZiAobU1heExldmVsICE9IG1heExldmVsKQorICAgIHsKKyAgICAgICAg
bU1heExldmVsICAgICAgICAgICAgICAgICAgICAgPSBtYXhMZXZlbDsKKyAgICAgICAgbUNvbXBs
ZXRlbmVzc0NhY2hlLmNhY2hlVmFsaWQgPSBmYWxzZTsKKyAgICB9Cit9CisKKy8vIFRlc3RzIGZv
ciBjdWJlIHRleHR1cmUgY29tcGxldGVuZXNzLiBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiAz
LjcuMTAgcGFnZSA4MS4KK2Jvb2wgVGV4dHVyZVN0YXRlOjppc0N1YmVDb21wbGV0ZSgpIGNvbnN0
Cit7CisgICAgQVNTRVJUKG1UYXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01BUCk7CisKKyAgICBj
b25zdCBJbWFnZURlc2MgJmJhc2VJbWFnZURlc2MgPSBnZXRJbWFnZURlc2MoRmlyc3RDdWJlTWFw
VGV4dHVyZVRhcmdldCwgMCk7CisgICAgaWYgKGJhc2VJbWFnZURlc2Muc2l6ZS53aWR0aCA9PSAw
IHx8IGJhc2VJbWFnZURlc2Muc2l6ZS53aWR0aCAhPSBiYXNlSW1hZ2VEZXNjLnNpemUuaGVpZ2h0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGZvciAoR0xlbnVt
IGZhY2UgPSBGaXJzdEN1YmVNYXBUZXh0dXJlVGFyZ2V0ICsgMTsgZmFjZSA8PSBMYXN0Q3ViZU1h
cFRleHR1cmVUYXJnZXQ7IGZhY2UrKykKKyAgICB7CisgICAgICAgIGNvbnN0IEltYWdlRGVzYyAm
ZmFjZUltYWdlRGVzYyA9IGdldEltYWdlRGVzYyhmYWNlLCAwKTsKKyAgICAgICAgaWYgKGZhY2VJ
bWFnZURlc2Muc2l6ZS53aWR0aCAhPSBiYXNlSW1hZ2VEZXNjLnNpemUud2lkdGggfHwKKyAgICAg
ICAgICAgIGZhY2VJbWFnZURlc2Muc2l6ZS5oZWlnaHQgIT0gYmFzZUltYWdlRGVzYy5zaXplLmhl
aWdodCB8fAorICAgICAgICAgICAgIUZvcm1hdDo6U2FtZVNpemVkKGZhY2VJbWFnZURlc2MuZm9y
bWF0LCBiYXNlSW1hZ2VEZXNjLmZvcm1hdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IFRleHR1cmVTdGF0ZTo6aXNTYW1wbGVyQ29tcGxldGUoY29uc3QgU2FtcGxlclN0YXRlICZzYW1w
bGVyU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29u
dGV4dFN0YXRlICZkYXRhKSBjb25zdAoreworICAgIGNvbnN0IEltYWdlRGVzYyAmYmFzZUltYWdl
RGVzYyA9IGdldEltYWdlRGVzYyhnZXRCYXNlSW1hZ2VUYXJnZXQoKSwgZ2V0RWZmZWN0aXZlQmFz
ZUxldmVsKCkpOworICAgIGNvbnN0IFRleHR1cmVDYXBzICZ0ZXh0dXJlQ2FwcyA9IGRhdGEuZ2V0
VGV4dHVyZUNhcChiYXNlSW1hZ2VEZXNjLmZvcm1hdC5hc1NpemVkKCkpOworICAgIGlmICghbUNv
bXBsZXRlbmVzc0NhY2hlLmNhY2hlVmFsaWQgfHwgbUNvbXBsZXRlbmVzc0NhY2hlLnNhbXBsZXJT
dGF0ZSAhPSBzYW1wbGVyU3RhdGUgfHwKKyAgICAgICAgbUNvbXBsZXRlbmVzc0NhY2hlLmZpbHRl
cmFibGUgIT0gdGV4dHVyZUNhcHMuZmlsdGVyYWJsZSB8fAorICAgICAgICBtQ29tcGxldGVuZXNz
Q2FjaGUuY2xpZW50VmVyc2lvbiAhPSBkYXRhLmdldENsaWVudE1ham9yVmVyc2lvbigpIHx8Cisg
ICAgICAgIG1Db21wbGV0ZW5lc3NDYWNoZS5zdXBwb3J0c05QT1QgIT0gZGF0YS5nZXRFeHRlbnNp
b25zKCkudGV4dHVyZU5QT1QpCisgICAgeworICAgICAgICBtQ29tcGxldGVuZXNzQ2FjaGUuY2Fj
aGVWYWxpZCAgICAgID0gdHJ1ZTsKKyAgICAgICAgbUNvbXBsZXRlbmVzc0NhY2hlLnNhbXBsZXJT
dGF0ZSAgICA9IHNhbXBsZXJTdGF0ZTsKKyAgICAgICAgbUNvbXBsZXRlbmVzc0NhY2hlLmZpbHRl
cmFibGUgICAgICA9IHRleHR1cmVDYXBzLmZpbHRlcmFibGU7CisgICAgICAgIG1Db21wbGV0ZW5l
c3NDYWNoZS5jbGllbnRWZXJzaW9uICAgPSBkYXRhLmdldENsaWVudE1ham9yVmVyc2lvbigpOwor
ICAgICAgICBtQ29tcGxldGVuZXNzQ2FjaGUuc3VwcG9ydHNOUE9UICAgID0gZGF0YS5nZXRFeHRl
bnNpb25zKCkudGV4dHVyZU5QT1Q7CisgICAgICAgIG1Db21wbGV0ZW5lc3NDYWNoZS5zYW1wbGVy
Q29tcGxldGUgPSBjb21wdXRlU2FtcGxlckNvbXBsZXRlbmVzcyhzYW1wbGVyU3RhdGUsIGRhdGEp
OworICAgIH0KKyAgICByZXR1cm4gbUNvbXBsZXRlbmVzc0NhY2hlLnNhbXBsZXJDb21wbGV0ZTsK
K30KKworYm9vbCBUZXh0dXJlU3RhdGU6OmNvbXB1dGVTYW1wbGVyQ29tcGxldGVuZXNzKGNvbnN0
IFNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnRleHRTdGF0ZSAmZGF0YSkgY29uc3QKK3sKKyAg
ICBpZiAobUJhc2VMZXZlbCA+IG1NYXhMZXZlbCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgY29uc3QgSW1hZ2VEZXNjICZiYXNlSW1hZ2VEZXNjID0gZ2V0SW1hZ2VE
ZXNjKGdldEJhc2VJbWFnZVRhcmdldCgpLCBnZXRFZmZlY3RpdmVCYXNlTGV2ZWwoKSk7CisgICAg
aWYgKGJhc2VJbWFnZURlc2Muc2l6ZS53aWR0aCA9PSAwIHx8IGJhc2VJbWFnZURlc2Muc2l6ZS5o
ZWlnaHQgPT0gMCB8fAorICAgICAgICBiYXNlSW1hZ2VEZXNjLnNpemUuZGVwdGggPT0gMCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgLy8gVGhlIGNhc2VzIHdoZXJl
IHRoZSB0ZXh0dXJlIGlzIGluY29tcGxldGUgYmVjYXVzZSBiYXNlIGxldmVsIGlzIG91dCBvZiBy
YW5nZSBzaG91bGQgYmUKKyAgICAvLyBoYW5kbGVkIGJ5IHRoZSBhYm92ZSBjb25kaXRpb24uCisg
ICAgQVNTRVJUKG1CYXNlTGV2ZWwgPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVW
RUxTIHx8IG1JbW11dGFibGVGb3JtYXQpOworCisgICAgaWYgKG1UYXJnZXQgPT0gR0xfVEVYVFVS
RV9DVUJFX01BUCAmJiBiYXNlSW1hZ2VEZXNjLnNpemUud2lkdGggIT0gYmFzZUltYWdlRGVzYy5z
aXplLmhlaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBj
b25zdCBUZXh0dXJlQ2FwcyAmdGV4dHVyZUNhcHMgPSBkYXRhLmdldFRleHR1cmVDYXAoYmFzZUlt
YWdlRGVzYy5mb3JtYXQuYXNTaXplZCgpKTsKKyAgICBpZiAoIXRleHR1cmVDYXBzLmZpbHRlcmFi
bGUgJiYgIUlzUG9pbnRTYW1wbGVkKHNhbXBsZXJTdGF0ZSkpCisgICAgeworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIGJvb2wgbnBvdFN1cHBvcnQgPSBkYXRhLmdldEV4dGVuc2lv
bnMoKS50ZXh0dXJlTlBPVCB8fCBkYXRhLmdldENsaWVudE1ham9yVmVyc2lvbigpID49IDM7Cisg
ICAgaWYgKCFucG90U3VwcG9ydCkKKyAgICB7CisgICAgICAgIGlmICgoc2FtcGxlclN0YXRlLndy
YXBTICE9IEdMX0NMQU1QX1RPX0VER0UgJiYgIWdsOjppc1BvdzIoYmFzZUltYWdlRGVzYy5zaXpl
LndpZHRoKSkgfHwKKyAgICAgICAgICAgIChzYW1wbGVyU3RhdGUud3JhcFQgIT0gR0xfQ0xBTVBf
VE9fRURHRSAmJiAhZ2w6OmlzUG93MihiYXNlSW1hZ2VEZXNjLnNpemUuaGVpZ2h0KSkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGlmIChJc01pcG1hcEZpbHRlcmVkKHNhbXBsZXJTdGF0ZSkpCisgICAgeworICAgICAgICBpZiAo
IW5wb3RTdXBwb3J0KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIWdsOjppc1BvdzIoYmFz
ZUltYWdlRGVzYy5zaXplLndpZHRoKSB8fCAhZ2w6OmlzUG93MihiYXNlSW1hZ2VEZXNjLnNpemUu
aGVpZ2h0KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWNvbXB1dGVNaXBtYXBDb21w
bGV0ZW5lc3MoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGlmIChtVGFyZ2V0ID09IEdMX1RF
WFRVUkVfQ1VCRV9NQVAgJiYgIWlzQ3ViZUNvbXBsZXRlKCkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEZyb20gR0xfT0VT
X0VHTF9pbWFnZV9leHRlcm5hbF9lc3NsMzogSWYgc3RhdGUgaXMgcHJlc2VudCBpbiBhIHNhbXBs
ZXIgb2JqZWN0IGJvdW5kIHRvIGEKKyAgICAvLyB0ZXh0dXJlIHVuaXQgdGhhdCB3b3VsZCBoYXZl
IGJlZW4gcmVqZWN0ZWQgYnkgYSBjYWxsIHRvIFRleFBhcmFtZXRlciogZm9yIHRoZSB0ZXh0dXJl
IGJvdW5kCisgICAgLy8gdG8gdGhhdCB1bml0LCB0aGUgYmVoYXZpb3Igb2YgdGhlIGltcGxlbWVu
dGF0aW9uIGlzIGFzIGlmIHRoZSB0ZXh0dXJlIHdlcmUgaW5jb21wbGV0ZS4gRm9yCisgICAgLy8g
ZXhhbXBsZSwgaWYgVEVYVFVSRV9XUkFQX1Mgb3IgVEVYVFVSRV9XUkFQX1QgaXMgc2V0IHRvIGFu
eXRoaW5nIGJ1dCBDTEFNUF9UT19FREdFIG9uIHRoZQorICAgIC8vIHNhbXBsZXIgb2JqZWN0IGJv
dW5kIHRvIGEgdGV4dHVyZSB1bml0IGFuZCB0aGUgdGV4dHVyZSBib3VuZCB0byB0aGF0IHVuaXQg
aXMgYW4gZXh0ZXJuYWwKKyAgICAvLyB0ZXh0dXJlLCB0aGUgdGV4dHVyZSB3aWxsIGJlIGNvbnNp
ZGVyZWQgaW5jb21wbGV0ZS4KKyAgICAvLyBTYW1wbGVyIG9iamVjdCBzdGF0ZSB3aGljaCBkb2Vz
IG5vdCBhZmZlY3Qgc2FtcGxpbmcgZm9yIHRoZSB0eXBlIG9mIHRleHR1cmUgYm91bmQgdG8gYQor
ICAgIC8vIHRleHR1cmUgdW5pdCwgc3VjaCBhcyBURVhUVVJFX1dSQVBfUiBmb3IgYW4gZXh0ZXJu
YWwgdGV4dHVyZSwgZG9lcyBub3QgYWZmZWN0IGNvbXBsZXRlbmVzcy4KKyAgICBpZiAobVRhcmdl
dCA9PSBHTF9URVhUVVJFX0VYVEVSTkFMX09FUykKKyAgICB7CisgICAgICAgIGlmIChzYW1wbGVy
U3RhdGUud3JhcFMgIT0gR0xfQ0xBTVBfVE9fRURHRSB8fCBzYW1wbGVyU3RhdGUud3JhcFQgIT0g
R0xfQ0xBTVBfVE9fRURHRSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKHNhbXBsZXJTdGF0ZS5taW5GaWx0ZXIgIT0gR0xfTElO
RUFSICYmIHNhbXBsZXJTdGF0ZS5taW5GaWx0ZXIgIT0gR0xfTkVBUkVTVCkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gT3Bl
bkdMRVMgMy4wLjIgc3BlYyBzZWN0aW9uIDMuOC4xMyBzdGF0ZXMgdGhhdCBhIHRleHR1cmUgaXMg
bm90IG1pcG1hcCBjb21wbGV0ZSBpZjoKKyAgICAvLyBUaGUgaW50ZXJuYWxmb3JtYXQgc3BlY2lm
aWVkIGZvciB0aGUgdGV4dHVyZSBhcnJheXMgaXMgYSBzaXplZCBpbnRlcm5hbCBkZXB0aCBvcgor
ICAgIC8vIGRlcHRoIGFuZCBzdGVuY2lsIGZvcm1hdCAoc2VlIHRhYmxlIDMuMTMpLCB0aGUgdmFs
dWUgb2YgVEVYVFVSRV9DT01QQVJFXy0KKyAgICAvLyBNT0RFIGlzIE5PTkUsIGFuZCBlaXRoZXIg
dGhlIG1hZ25pZmljYXRpb24gZmlsdGVyIGlzIG5vdCBORUFSRVNUIG9yIHRoZSBtaW5pLQorICAg
IC8vIGZpY2F0aW9uIGZpbHRlciBpcyBuZWl0aGVyIE5FQVJFU1Qgbm9yIE5FQVJFU1RfTUlQTUFQ
X05FQVJFU1QuCisgICAgaWYgKGJhc2VJbWFnZURlc2MuZm9ybWF0LmluZm8tPmRlcHRoQml0cyA+
IDAgJiYgZGF0YS5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA+PSAzKQorICAgIHsKKyAgICAgICAg
Ly8gTm90ZTogd2UgcmVzdHJpY3QgdGhpcyB2YWxpZGF0aW9uIHRvIHNpemVkIHR5cGVzLiBGb3Ig
dGhlIE9FU19kZXB0aF90ZXh0dXJlcworICAgICAgICAvLyBleHRlbnNpb24sIGR1ZSB0byBzb21l
IHVuZGVyc3BlY2lmaWNhdGlvbiBwcm9ibGVtcywgd2UgbXVzdCBhbGxvdyBsaW5lYXIgZmlsdGVy
aW5nCisgICAgICAgIC8vIGZvciBsZWdhY3kgY29tcGF0aWJpbGl0eSB3aXRoIFdlYkdMIDEuCisg
ICAgICAgIC8vIFNlZSBodHRwOi8vY3JidWcuY29tLzY0OTIwMAorICAgICAgICBpZiAoc2FtcGxl
clN0YXRlLmNvbXBhcmVNb2RlID09IEdMX05PTkUgJiYgYmFzZUltYWdlRGVzYy5mb3JtYXQuc2l6
ZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgoc2FtcGxlclN0YXRlLm1pbkZpbHRlciAh
PSBHTF9ORUFSRVNUICYmCisgICAgICAgICAgICAgICAgIHNhbXBsZXJTdGF0ZS5taW5GaWx0ZXIg
IT0gR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVCkgfHwKKyAgICAgICAgICAgICAgICBzYW1wbGVy
U3RhdGUubWFnRmlsdGVyICE9IEdMX05FQVJFU1QpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVGV4dHVyZVN0YXRlOjpjb21wdXRlTWlwbWFwQ29t
cGxldGVuZXNzKCkgY29uc3QKK3sKKyAgICBjb25zdCBHTHVpbnQgbWF4TGV2ZWwgPSBnZXRNaXBt
YXBNYXhMZXZlbCgpOworCisgICAgZm9yIChHTHVpbnQgbGV2ZWwgPSBnZXRFZmZlY3RpdmVCYXNl
TGV2ZWwoKTsgbGV2ZWwgPD0gbWF4TGV2ZWw7IGxldmVsKyspCisgICAgeworICAgICAgICBpZiAo
bVRhcmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQKQorICAgICAgICB7CisgICAgICAgICAgICBm
b3IgKEdMZW51bSBmYWNlID0gRmlyc3RDdWJlTWFwVGV4dHVyZVRhcmdldDsgZmFjZSA8PSBMYXN0
Q3ViZU1hcFRleHR1cmVUYXJnZXQ7IGZhY2UrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIWNvbXB1dGVMZXZlbENvbXBsZXRlbmVzcyhmYWNlLCBsZXZlbCkpCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKCFjb21wdXRlTGV2ZWxDb21wbGV0ZW5lc3MobVRhcmdldCwgbGV2
ZWwpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IFRleHR1cmVTdGF0ZTo6Y29tcHV0ZUxldmVsQ29tcGxldGVuZXNzKEdMZW51bSB0YXJnZXQsIHNp
emVfdCBsZXZlbCkgY29uc3QKK3sKKyAgICBBU1NFUlQobGV2ZWwgPCBJTVBMRU1FTlRBVElPTl9N
QVhfVEVYVFVSRV9MRVZFTFMpOworCisgICAgaWYgKG1JbW11dGFibGVGb3JtYXQpCisgICAgewor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBjb25zdCBJbWFnZURlc2MgJmJhc2VJ
bWFnZURlc2MgPSBnZXRJbWFnZURlc2MoZ2V0QmFzZUltYWdlVGFyZ2V0KCksIGdldEVmZmVjdGl2
ZUJhc2VMZXZlbCgpKTsKKyAgICBpZiAoYmFzZUltYWdlRGVzYy5zaXplLndpZHRoID09IDAgfHwg
YmFzZUltYWdlRGVzYy5zaXplLmhlaWdodCA9PSAwIHx8CisgICAgICAgIGJhc2VJbWFnZURlc2Mu
c2l6ZS5kZXB0aCA9PSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIGNvbnN0IEltYWdlRGVzYyAmbGV2ZWxJbWFnZURlc2MgPSBnZXRJbWFnZURlc2ModGFyZ2V0
LCBsZXZlbCk7CisgICAgaWYgKGxldmVsSW1hZ2VEZXNjLnNpemUud2lkdGggPT0gMCB8fCBsZXZl
bEltYWdlRGVzYy5zaXplLmhlaWdodCA9PSAwIHx8CisgICAgICAgIGxldmVsSW1hZ2VEZXNjLnNp
emUuZGVwdGggPT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBpZiAoIUZvcm1hdDo6U2FtZVNpemVkKGxldmVsSW1hZ2VEZXNjLmZvcm1hdCwgYmFzZUltYWdl
RGVzYy5mb3JtYXQpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IEFTU0VSVChsZXZlbCA+PSBnZXRFZmZlY3RpdmVCYXNlTGV2ZWwoKSk7CisgICAgY29uc3Qgc2l6
ZV90IHJlbGF0aXZlTGV2ZWwgPSBsZXZlbCAtIGdldEVmZmVjdGl2ZUJhc2VMZXZlbCgpOworICAg
IGlmIChsZXZlbEltYWdlRGVzYy5zaXplLndpZHRoICE9IHN0ZDo6bWF4KDEsIGJhc2VJbWFnZURl
c2Muc2l6ZS53aWR0aCA+PiByZWxhdGl2ZUxldmVsKSkKKyAgICB7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBpZiAobGV2ZWxJbWFnZURlc2Muc2l6ZS5oZWlnaHQgIT0gc3Rk
OjptYXgoMSwgYmFzZUltYWdlRGVzYy5zaXplLmhlaWdodCA+PiByZWxhdGl2ZUxldmVsKSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAobVRhcmdldCA9PSBH
TF9URVhUVVJFXzNEKQorICAgIHsKKyAgICAgICAgaWYgKGxldmVsSW1hZ2VEZXNjLnNpemUuZGVw
dGggIT0gc3RkOjptYXgoMSwgYmFzZUltYWdlRGVzYy5zaXplLmRlcHRoID4+IHJlbGF0aXZlTGV2
ZWwpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICB9CisgICAgZWxzZSBpZiAobVRhcmdldCA9PSBHTF9URVhUVVJFXzJEX0FSUkFZKQorICAgIHsK
KyAgICAgICAgaWYgKGxldmVsSW1hZ2VEZXNjLnNpemUuZGVwdGggIT0gYmFzZUltYWdlRGVzYy5z
aXplLmRlcHRoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworR0xlbnVtIFRleHR1cmVTdGF0ZTo6
Z2V0QmFzZUltYWdlVGFyZ2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVRhcmdldCA9PSBHTF9U
RVhUVVJFX0NVQkVfTUFQID8gRmlyc3RDdWJlTWFwVGV4dHVyZVRhcmdldCA6IG1UYXJnZXQ7Cit9
CisKK0ltYWdlRGVzYzo6SW1hZ2VEZXNjKCkgOiBJbWFnZURlc2MoRXh0ZW50cygwLCAwLCAwKSwg
Rm9ybWF0OjpJbnZhbGlkKCkpCit7Cit9CisKK0ltYWdlRGVzYzo6SW1hZ2VEZXNjKGNvbnN0IEV4
dGVudHMgJnNpemUsIGNvbnN0IEZvcm1hdCAmZm9ybWF0KSA6IHNpemUoc2l6ZSksIGZvcm1hdChm
b3JtYXQpCiB7Ci0gICAgcmV0dXJuIChzYW1wbGVyU3RhdGUubWFnRmlsdGVyID09IEdMX05FQVJF
U1QgJiYgKHNhbXBsZXJTdGF0ZS5taW5GaWx0ZXIgPT0gR0xfTkVBUkVTVCB8fCBzYW1wbGVyU3Rh
dGUubWluRmlsdGVyID09IEdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QpKTsKIH0KIAotc3RhdGlj
IHNpemVfdCBHZXRJbWFnZURlc2NJbmRleChHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwpCitj
b25zdCBJbWFnZURlc2MgJlRleHR1cmVTdGF0ZTo6Z2V0SW1hZ2VEZXNjKEdMZW51bSB0YXJnZXQs
IHNpemVfdCBsZXZlbCkgY29uc3QKIHsKLSAgICByZXR1cm4gSXNDdWJlTWFwVGV4dHVyZVRhcmdl
dCh0YXJnZXQpID8gKChsZXZlbCAqIDYpICsgQ3ViZU1hcFRleHR1cmVUYXJnZXRUb0xheWVySW5k
ZXgodGFyZ2V0KSkgOiBsZXZlbDsKKyAgICBzaXplX3QgZGVzY0luZGV4ID0gR2V0SW1hZ2VEZXNj
SW5kZXgodGFyZ2V0LCBsZXZlbCk7CisgICAgQVNTRVJUKGRlc2NJbmRleCA8IG1JbWFnZURlc2Nz
LnNpemUoKSk7CisgICAgcmV0dXJuIG1JbWFnZURlc2NzW2Rlc2NJbmRleF07CiB9CiAKLVRleHR1
cmU6OlRleHR1cmUocng6OlRleHR1cmVJbXBsICppbXBsLCBHTHVpbnQgaWQsIEdMZW51bSB0YXJn
ZXQpCit2b2lkIFRleHR1cmVTdGF0ZTo6c2V0SW1hZ2VEZXNjKEdMZW51bSB0YXJnZXQsIHNpemVf
dCBsZXZlbCwgY29uc3QgSW1hZ2VEZXNjICZkZXNjKQoreworICAgIHNpemVfdCBkZXNjSW5kZXgg
PSBHZXRJbWFnZURlc2NJbmRleCh0YXJnZXQsIGxldmVsKTsKKyAgICBBU1NFUlQoZGVzY0luZGV4
IDwgbUltYWdlRGVzY3Muc2l6ZSgpKTsKKyAgICBtSW1hZ2VEZXNjc1tkZXNjSW5kZXhdICAgICAg
ICA9IGRlc2M7CisgICAgbUNvbXBsZXRlbmVzc0NhY2hlLmNhY2hlVmFsaWQgPSBmYWxzZTsKK30K
Kwordm9pZCBUZXh0dXJlU3RhdGU6OnNldEltYWdlRGVzY0NoYWluKEdMdWludCBiYXNlTGV2ZWws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1heExldmVsLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4dGVudHMgYmFzZVNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRm9ybWF0ICZmb3JtYXQp
Cit7CisgICAgZm9yIChHTHVpbnQgbGV2ZWwgPSBiYXNlTGV2ZWw7IGxldmVsIDw9IG1heExldmVs
OyBsZXZlbCsrKQorICAgIHsKKyAgICAgICAgaW50IHJlbGF0aXZlTGV2ZWwgPSAobGV2ZWwgLSBi
YXNlTGV2ZWwpOworICAgICAgICBFeHRlbnRzIGxldmVsU2l6ZShzdGQ6Om1heDxpbnQ+KGJhc2VT
aXplLndpZHRoID4+IHJlbGF0aXZlTGV2ZWwsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6Om1heDxpbnQ+KGJhc2VTaXplLmhlaWdodCA+PiByZWxhdGl2ZUxldmVsLCAxKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgKG1UYXJnZXQgPT0gR0xfVEVYVFVSRV8yRF9BUlJBWSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYmFzZVNpemUuZGVwdGgKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogc3RkOjptYXg8aW50PihiYXNlU2l6ZS5kZXB0aCA+PiBy
ZWxhdGl2ZUxldmVsLCAxKSk7CisgICAgICAgIEltYWdlRGVzYyBsZXZlbEluZm8obGV2ZWxTaXpl
LCBmb3JtYXQpOworCisgICAgICAgIGlmIChtVGFyZ2V0ID09IEdMX1RFWFRVUkVfQ1VCRV9NQVAp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoR0xlbnVtIGZhY2UgPSBGaXJzdEN1YmVNYXBU
ZXh0dXJlVGFyZ2V0OyBmYWNlIDw9IExhc3RDdWJlTWFwVGV4dHVyZVRhcmdldDsgZmFjZSsrKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHNldEltYWdlRGVzYyhmYWNlLCBsZXZlbCwg
bGV2ZWxJbmZvKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHNldEltYWdlRGVzYyhtVGFyZ2V0LCBsZXZlbCwgbGV2ZWxJbmZv
KTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBUZXh0dXJlU3RhdGU6OmNsZWFySW1hZ2VE
ZXNjKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCkKK3sKKyAgICBzZXRJbWFnZURlc2ModGFy
Z2V0LCBsZXZlbCwgSW1hZ2VEZXNjKCkpOworfQorCit2b2lkIFRleHR1cmVTdGF0ZTo6Y2xlYXJJ
bWFnZURlc2NzKCkKK3sKKyAgICBmb3IgKHNpemVfdCBkZXNjSW5kZXggPSAwOyBkZXNjSW5kZXgg
PCBtSW1hZ2VEZXNjcy5zaXplKCk7IGRlc2NJbmRleCsrKQorICAgIHsKKyAgICAgICAgbUltYWdl
RGVzY3NbZGVzY0luZGV4XSA9IEltYWdlRGVzYygpOworICAgIH0KKyAgICBtQ29tcGxldGVuZXNz
Q2FjaGUuY2FjaGVWYWxpZCA9IGZhbHNlOworfQorCitUZXh0dXJlU3RhdGU6OlNhbXBsZXJDb21w
bGV0ZW5lc3NDYWNoZTo6U2FtcGxlckNvbXBsZXRlbmVzc0NhY2hlKCkKKyAgICA6IGNhY2hlVmFs
aWQoZmFsc2UpLAorICAgICAgc2FtcGxlclN0YXRlKCksCisgICAgICBmaWx0ZXJhYmxlKGZhbHNl
KSwKKyAgICAgIGNsaWVudFZlcnNpb24oMCksCisgICAgICBzdXBwb3J0c05QT1QoZmFsc2UpLAor
ICAgICAgc2FtcGxlckNvbXBsZXRlKGZhbHNlKQoreworfQorCitUZXh0dXJlOjpUZXh0dXJlKHJ4
OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5LCBHTHVpbnQgaWQsIEdMZW51bSB0YXJnZXQpCiAgICAg
OiBlZ2w6OkltYWdlU2libGluZyhpZCksCi0gICAgICBtVGV4dHVyZShpbXBsKSwKKyAgICAgIG1T
dGF0ZSh0YXJnZXQpLAorICAgICAgbVRleHR1cmUoZmFjdG9yeS0+Y3JlYXRlVGV4dHVyZShtU3Rh
dGUpKSwKICAgICAgIG1MYWJlbCgpLAotICAgICAgbVRleHR1cmVTdGF0ZSgpLAotICAgICAgbVRh
cmdldCh0YXJnZXQpLAotICAgICAgbUltYWdlRGVzY3MoSU1QTEVNRU5UQVRJT05fTUFYX1RFWFRV
UkVfTEVWRUxTICogKHRhcmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQID8gNiA6IDEpKSwKLSAg
ICAgIG1Db21wbGV0ZW5lc3NDYWNoZSgpLAotICAgICAgbUJvdW5kU3VyZmFjZShOVUxMKQorICAg
ICAgbUJvdW5kU3VyZmFjZShudWxscHRyKSwKKyAgICAgIG1Cb3VuZFN0cmVhbShudWxscHRyKQog
ewogfQogCkBAIC02NCw3ICs1MDMsMTIgQEAgVGV4dHVyZTo6flRleHR1cmUoKQogICAgIGlmICht
Qm91bmRTdXJmYWNlKQogICAgIHsKICAgICAgICAgbUJvdW5kU3VyZmFjZS0+cmVsZWFzZVRleElt
YWdlKEVHTF9CQUNLX0JVRkZFUik7Ci0gICAgICAgIG1Cb3VuZFN1cmZhY2UgPSBOVUxMOworICAg
ICAgICBtQm91bmRTdXJmYWNlID0gbnVsbHB0cjsKKyAgICB9CisgICAgaWYgKG1Cb3VuZFN0cmVh
bSkKKyAgICB7CisgICAgICAgIG1Cb3VuZFN0cmVhbS0+cmVsZWFzZVRleHR1cmVzKCk7CisgICAg
ICAgIG1Cb3VuZFN0cmVhbSA9IG51bGxwdHI7CiAgICAgfQogICAgIFNhZmVEZWxldGUobVRleHR1
cmUpOwogfQpAQCAtNzIsNiArNTE2LDcgQEAgVGV4dHVyZTo6flRleHR1cmUoKQogdm9pZCBUZXh0
dXJlOjpzZXRMYWJlbChjb25zdCBzdGQ6OnN0cmluZyAmbGFiZWwpCiB7CiAgICAgbUxhYmVsID0g
bGFiZWw7CisgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0xBQkVMKTsKIH0KIAogY29uc3Qg
c3RkOjpzdHJpbmcgJlRleHR1cmU6OmdldExhYmVsKCkgY29uc3QKQEAgLTgxLDI4NyArNTI2LDI1
MCBAQCBjb25zdCBzdGQ6OnN0cmluZyAmVGV4dHVyZTo6Z2V0TGFiZWwoKSBjCiAKIEdMZW51bSBU
ZXh0dXJlOjpnZXRUYXJnZXQoKSBjb25zdAogewotICAgIHJldHVybiBtVGFyZ2V0OworICAgIHJl
dHVybiBtU3RhdGUubVRhcmdldDsKIH0KIAogdm9pZCBUZXh0dXJlOjpzZXRTd2l6emxlUmVkKEdM
ZW51bSBzd2l6emxlUmVkKQogewotICAgIG1UZXh0dXJlU3RhdGUuc3dpenpsZVJlZCA9IHN3aXp6
bGVSZWQ7CisgICAgbVN0YXRlLm1Td2l6emxlU3RhdGUuc3dpenpsZVJlZCA9IHN3aXp6bGVSZWQ7
CisgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX1NXSVpaTEVfUkVEKTsKIH0KIAogR0xlbnVt
IFRleHR1cmU6OmdldFN3aXp6bGVSZWQoKSBjb25zdAogewotICAgIHJldHVybiBtVGV4dHVyZVN0
YXRlLnN3aXp6bGVSZWQ7CisgICAgcmV0dXJuIG1TdGF0ZS5tU3dpenpsZVN0YXRlLnN3aXp6bGVS
ZWQ7CiB9CiAKIHZvaWQgVGV4dHVyZTo6c2V0U3dpenpsZUdyZWVuKEdMZW51bSBzd2l6emxlR3Jl
ZW4pCiB7Ci0gICAgbVRleHR1cmVTdGF0ZS5zd2l6emxlR3JlZW4gPSBzd2l6emxlR3JlZW47Cisg
ICAgbVN0YXRlLm1Td2l6emxlU3RhdGUuc3dpenpsZUdyZWVuID0gc3dpenpsZUdyZWVuOworICAg
IG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9TV0laWkxFX0dSRUVOKTsKIH0KIAogR0xlbnVtIFRl
eHR1cmU6OmdldFN3aXp6bGVHcmVlbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1UZXh0dXJlU3Rh
dGUuc3dpenpsZUdyZWVuOworICAgIHJldHVybiBtU3RhdGUubVN3aXp6bGVTdGF0ZS5zd2l6emxl
R3JlZW47CiB9CiAKIHZvaWQgVGV4dHVyZTo6c2V0U3dpenpsZUJsdWUoR0xlbnVtIHN3aXp6bGVC
bHVlKQogewotICAgIG1UZXh0dXJlU3RhdGUuc3dpenpsZUJsdWUgPSBzd2l6emxlQmx1ZTsKKyAg
ICBtU3RhdGUubVN3aXp6bGVTdGF0ZS5zd2l6emxlQmx1ZSA9IHN3aXp6bGVCbHVlOworICAgIG1E
aXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9TV0laWkxFX0JMVUUpOwogfQogCiBHTGVudW0gVGV4dHVy
ZTo6Z2V0U3dpenpsZUJsdWUoKSBjb25zdAogewotICAgIHJldHVybiBtVGV4dHVyZVN0YXRlLnN3
aXp6bGVCbHVlOworICAgIHJldHVybiBtU3RhdGUubVN3aXp6bGVTdGF0ZS5zd2l6emxlQmx1ZTsK
IH0KIAogdm9pZCBUZXh0dXJlOjpzZXRTd2l6emxlQWxwaGEoR0xlbnVtIHN3aXp6bGVBbHBoYSkK
IHsKLSAgICBtVGV4dHVyZVN0YXRlLnN3aXp6bGVBbHBoYSA9IHN3aXp6bGVBbHBoYTsKKyAgICBt
U3RhdGUubVN3aXp6bGVTdGF0ZS5zd2l6emxlQWxwaGEgPSBzd2l6emxlQWxwaGE7CisgICAgbURp
cnR5Qml0cy5zZXQoRElSVFlfQklUX1NXSVpaTEVfQUxQSEEpOwogfQogCiBHTGVudW0gVGV4dHVy
ZTo6Z2V0U3dpenpsZUFscGhhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbVRleHR1cmVTdGF0ZS5z
d2l6emxlQWxwaGE7CisgICAgcmV0dXJuIG1TdGF0ZS5tU3dpenpsZVN0YXRlLnN3aXp6bGVBbHBo
YTsKIH0KIAogdm9pZCBUZXh0dXJlOjpzZXRNaW5GaWx0ZXIoR0xlbnVtIG1pbkZpbHRlcikKIHsK
LSAgICBtVGV4dHVyZVN0YXRlLnNhbXBsZXJTdGF0ZS5taW5GaWx0ZXIgPSBtaW5GaWx0ZXI7Cisg
ICAgbVN0YXRlLm1TYW1wbGVyU3RhdGUubWluRmlsdGVyID0gbWluRmlsdGVyOworICAgIG1EaXJ0
eUJpdHMuc2V0KERJUlRZX0JJVF9NSU5fRklMVEVSKTsKIH0KIAogR0xlbnVtIFRleHR1cmU6Omdl
dE1pbkZpbHRlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1UZXh0dXJlU3RhdGUuc2FtcGxlclN0
YXRlLm1pbkZpbHRlcjsKKyAgICByZXR1cm4gbVN0YXRlLm1TYW1wbGVyU3RhdGUubWluRmlsdGVy
OwogfQogCiB2b2lkIFRleHR1cmU6OnNldE1hZ0ZpbHRlcihHTGVudW0gbWFnRmlsdGVyKQogewot
ICAgIG1UZXh0dXJlU3RhdGUuc2FtcGxlclN0YXRlLm1hZ0ZpbHRlciA9IG1hZ0ZpbHRlcjsKKyAg
ICBtU3RhdGUubVNhbXBsZXJTdGF0ZS5tYWdGaWx0ZXIgPSBtYWdGaWx0ZXI7CisgICAgbURpcnR5
Qml0cy5zZXQoRElSVFlfQklUX01BR19GSUxURVIpOwogfQogCiBHTGVudW0gVGV4dHVyZTo6Z2V0
TWFnRmlsdGVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbVRleHR1cmVTdGF0ZS5zYW1wbGVyU3Rh
dGUubWFnRmlsdGVyOworICAgIHJldHVybiBtU3RhdGUubVNhbXBsZXJTdGF0ZS5tYWdGaWx0ZXI7
CiB9CiAKIHZvaWQgVGV4dHVyZTo6c2V0V3JhcFMoR0xlbnVtIHdyYXBTKQogewotICAgIG1UZXh0
dXJlU3RhdGUuc2FtcGxlclN0YXRlLndyYXBTID0gd3JhcFM7CisgICAgbVN0YXRlLm1TYW1wbGVy
U3RhdGUud3JhcFMgPSB3cmFwUzsKKyAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfV1JBUF9T
KTsKIH0KIAogR0xlbnVtIFRleHR1cmU6OmdldFdyYXBTKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bVRleHR1cmVTdGF0ZS5zYW1wbGVyU3RhdGUud3JhcFM7CisgICAgcmV0dXJuIG1TdGF0ZS5tU2Ft
cGxlclN0YXRlLndyYXBTOwogfQogCiB2b2lkIFRleHR1cmU6OnNldFdyYXBUKEdMZW51bSB3cmFw
VCkKIHsKLSAgICBtVGV4dHVyZVN0YXRlLnNhbXBsZXJTdGF0ZS53cmFwVCA9IHdyYXBUOworICAg
IG1TdGF0ZS5tU2FtcGxlclN0YXRlLndyYXBUID0gd3JhcFQ7CisgICAgbURpcnR5Qml0cy5zZXQo
RElSVFlfQklUX1dSQVBfVCk7CiB9CiAKIEdMZW51bSBUZXh0dXJlOjpnZXRXcmFwVCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1UZXh0dXJlU3RhdGUuc2FtcGxlclN0YXRlLndyYXBUOworICAgIHJl
dHVybiBtU3RhdGUubVNhbXBsZXJTdGF0ZS53cmFwVDsKIH0KIAogdm9pZCBUZXh0dXJlOjpzZXRX
cmFwUihHTGVudW0gd3JhcFIpCiB7Ci0gICAgbVRleHR1cmVTdGF0ZS5zYW1wbGVyU3RhdGUud3Jh
cFIgPSB3cmFwUjsKKyAgICBtU3RhdGUubVNhbXBsZXJTdGF0ZS53cmFwUiA9IHdyYXBSOworICAg
IG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9XUkFQX1IpOwogfQogCiBHTGVudW0gVGV4dHVyZTo6
Z2V0V3JhcFIoKSBjb25zdAogewotICAgIHJldHVybiBtVGV4dHVyZVN0YXRlLnNhbXBsZXJTdGF0
ZS53cmFwUjsKKyAgICByZXR1cm4gbVN0YXRlLm1TYW1wbGVyU3RhdGUud3JhcFI7CiB9CiAKIHZv
aWQgVGV4dHVyZTo6c2V0TWF4QW5pc290cm9weShmbG9hdCBtYXhBbmlzb3Ryb3B5KQogewotICAg
IG1UZXh0dXJlU3RhdGUuc2FtcGxlclN0YXRlLm1heEFuaXNvdHJvcHkgPSBtYXhBbmlzb3Ryb3B5
OworICAgIG1TdGF0ZS5tU2FtcGxlclN0YXRlLm1heEFuaXNvdHJvcHkgPSBtYXhBbmlzb3Ryb3B5
OworICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9NQVhfQU5JU09UUk9QWSk7CiB9CiAKIGZs
b2F0IFRleHR1cmU6OmdldE1heEFuaXNvdHJvcHkoKSBjb25zdAogewotICAgIHJldHVybiBtVGV4
dHVyZVN0YXRlLnNhbXBsZXJTdGF0ZS5tYXhBbmlzb3Ryb3B5OworICAgIHJldHVybiBtU3RhdGUu
bVNhbXBsZXJTdGF0ZS5tYXhBbmlzb3Ryb3B5OwogfQogCiB2b2lkIFRleHR1cmU6OnNldE1pbkxv
ZChHTGZsb2F0IG1pbkxvZCkKIHsKLSAgICBtVGV4dHVyZVN0YXRlLnNhbXBsZXJTdGF0ZS5taW5M
b2QgPSBtaW5Mb2Q7CisgICAgbVN0YXRlLm1TYW1wbGVyU3RhdGUubWluTG9kID0gbWluTG9kOwor
ICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9NSU5fTE9EKTsKIH0KIAogR0xmbG9hdCBUZXh0
dXJlOjpnZXRNaW5Mb2QoKSBjb25zdAogewotICAgIHJldHVybiBtVGV4dHVyZVN0YXRlLnNhbXBs
ZXJTdGF0ZS5taW5Mb2Q7CisgICAgcmV0dXJuIG1TdGF0ZS5tU2FtcGxlclN0YXRlLm1pbkxvZDsK
IH0KIAogdm9pZCBUZXh0dXJlOjpzZXRNYXhMb2QoR0xmbG9hdCBtYXhMb2QpCiB7Ci0gICAgbVRl
eHR1cmVTdGF0ZS5zYW1wbGVyU3RhdGUubWF4TG9kID0gbWF4TG9kOworICAgIG1TdGF0ZS5tU2Ft
cGxlclN0YXRlLm1heExvZCA9IG1heExvZDsKKyAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRf
TUFYX0xPRCk7CiB9CiAKIEdMZmxvYXQgVGV4dHVyZTo6Z2V0TWF4TG9kKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbVRleHR1cmVTdGF0ZS5zYW1wbGVyU3RhdGUubWF4TG9kOworICAgIHJldHVybiBt
U3RhdGUubVNhbXBsZXJTdGF0ZS5tYXhMb2Q7CiB9CiAKIHZvaWQgVGV4dHVyZTo6c2V0Q29tcGFy
ZU1vZGUoR0xlbnVtIGNvbXBhcmVNb2RlKQogewotICAgIG1UZXh0dXJlU3RhdGUuc2FtcGxlclN0
YXRlLmNvbXBhcmVNb2RlID0gY29tcGFyZU1vZGU7CisgICAgbVN0YXRlLm1TYW1wbGVyU3RhdGUu
Y29tcGFyZU1vZGUgPSBjb21wYXJlTW9kZTsKKyAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRf
Q09NUEFSRV9NT0RFKTsKIH0KIAogR0xlbnVtIFRleHR1cmU6OmdldENvbXBhcmVNb2RlKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbVRleHR1cmVTdGF0ZS5zYW1wbGVyU3RhdGUuY29tcGFyZU1vZGU7
CisgICAgcmV0dXJuIG1TdGF0ZS5tU2FtcGxlclN0YXRlLmNvbXBhcmVNb2RlOwogfQogCiB2b2lk
IFRleHR1cmU6OnNldENvbXBhcmVGdW5jKEdMZW51bSBjb21wYXJlRnVuYykKIHsKLSAgICBtVGV4
dHVyZVN0YXRlLnNhbXBsZXJTdGF0ZS5jb21wYXJlRnVuYyA9IGNvbXBhcmVGdW5jOworICAgIG1T
dGF0ZS5tU2FtcGxlclN0YXRlLmNvbXBhcmVGdW5jID0gY29tcGFyZUZ1bmM7CisgICAgbURpcnR5
Qml0cy5zZXQoRElSVFlfQklUX0NPTVBBUkVfRlVOQyk7CiB9CiAKIEdMZW51bSBUZXh0dXJlOjpn
ZXRDb21wYXJlRnVuYygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1UZXh0dXJlU3RhdGUuc2FtcGxl
clN0YXRlLmNvbXBhcmVGdW5jOworICAgIHJldHVybiBtU3RhdGUubVNhbXBsZXJTdGF0ZS5jb21w
YXJlRnVuYzsKIH0KIAogY29uc3QgU2FtcGxlclN0YXRlICZUZXh0dXJlOjpnZXRTYW1wbGVyU3Rh
dGUoKSBjb25zdAogewotICAgIHJldHVybiBtVGV4dHVyZVN0YXRlLnNhbXBsZXJTdGF0ZTsKKyAg
ICByZXR1cm4gbVN0YXRlLm1TYW1wbGVyU3RhdGU7CiB9CiAKIHZvaWQgVGV4dHVyZTo6c2V0QmFz
ZUxldmVsKEdMdWludCBiYXNlTGV2ZWwpCiB7Ci0gICAgbVRleHR1cmVTdGF0ZS5iYXNlTGV2ZWwg
PSBiYXNlTGV2ZWw7CisgICAgaWYgKG1TdGF0ZS5zZXRCYXNlTGV2ZWwoYmFzZUxldmVsKSkKKyAg
ICB7CisgICAgICAgIG1UZXh0dXJlLT5zZXRCYXNlTGV2ZWwobVN0YXRlLmdldEVmZmVjdGl2ZUJh
c2VMZXZlbCgpKTsKKyAgICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0JBU0VfTEVWRUwp
OworICAgIH0KIH0KIAogR0x1aW50IFRleHR1cmU6OmdldEJhc2VMZXZlbCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1UZXh0dXJlU3RhdGUuYmFzZUxldmVsOworICAgIHJldHVybiBtU3RhdGUubUJh
c2VMZXZlbDsKIH0KIAogdm9pZCBUZXh0dXJlOjpzZXRNYXhMZXZlbChHTHVpbnQgbWF4TGV2ZWwp
CiB7Ci0gICAgbVRleHR1cmVTdGF0ZS5tYXhMZXZlbCA9IG1heExldmVsOworICAgIG1TdGF0ZS5z
ZXRNYXhMZXZlbChtYXhMZXZlbCk7CisgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX01BWF9M
RVZFTCk7CiB9CiAKIEdMdWludCBUZXh0dXJlOjpnZXRNYXhMZXZlbCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1UZXh0dXJlU3RhdGUubWF4TGV2ZWw7CisgICAgcmV0dXJuIG1TdGF0ZS5tTWF4TGV2
ZWw7CiB9CiAKIGJvb2wgVGV4dHVyZTo6Z2V0SW1tdXRhYmxlRm9ybWF0KCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbVRleHR1cmVTdGF0ZS5pbW11dGFibGVGb3JtYXQ7CisgICAgcmV0dXJuIG1TdGF0
ZS5tSW1tdXRhYmxlRm9ybWF0OwogfQogCiBHTHVpbnQgVGV4dHVyZTo6Z2V0SW1tdXRhYmxlTGV2
ZWxzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbVRleHR1cmVTdGF0ZS5pbW11dGFibGVMZXZlbHM7
CisgICAgcmV0dXJuIG1TdGF0ZS5tSW1tdXRhYmxlTGV2ZWxzOwogfQogCiB2b2lkIFRleHR1cmU6
OnNldFVzYWdlKEdMZW51bSB1c2FnZSkKIHsKLSAgICBtVGV4dHVyZVN0YXRlLnVzYWdlID0gdXNh
Z2U7Ci0gICAgZ2V0SW1wbGVtZW50YXRpb24oKS0+c2V0VXNhZ2UodXNhZ2UpOworICAgIG1TdGF0
ZS5tVXNhZ2UgPSB1c2FnZTsKKyAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfVVNBR0UpOwog
fQogCiBHTGVudW0gVGV4dHVyZTo6Z2V0VXNhZ2UoKSBjb25zdAogewotICAgIHJldHVybiBtVGV4
dHVyZVN0YXRlLnVzYWdlOworICAgIHJldHVybiBtU3RhdGUubVVzYWdlOwogfQogCiBjb25zdCBU
ZXh0dXJlU3RhdGUgJlRleHR1cmU6OmdldFRleHR1cmVTdGF0ZSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1UZXh0dXJlU3RhdGU7CisgICAgcmV0dXJuIG1TdGF0ZTsKIH0KIAogc2l6ZV90IFRleHR1
cmU6OmdldFdpZHRoKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCkgY29uc3QKIHsKLSAgICBB
U1NFUlQodGFyZ2V0ID09IG1UYXJnZXQgfHwgKG1UYXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01B
UCAmJiBJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkpKTsKLSAgICByZXR1cm4gZ2V0SW1h
Z2VEZXNjKHRhcmdldCwgbGV2ZWwpLnNpemUud2lkdGg7CisgICAgQVNTRVJUKHRhcmdldCA9PSBt
U3RhdGUubVRhcmdldCB8fAorICAgICAgICAgICAobVN0YXRlLm1UYXJnZXQgPT0gR0xfVEVYVFVS
RV9DVUJFX01BUCAmJiBJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkpKTsKKyAgICByZXR1
cm4gbVN0YXRlLmdldEltYWdlRGVzYyh0YXJnZXQsIGxldmVsKS5zaXplLndpZHRoOwogfQogCiBz
aXplX3QgVGV4dHVyZTo6Z2V0SGVpZ2h0KEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCkgY29u
c3QKIHsKLSAgICBBU1NFUlQodGFyZ2V0ID09IG1UYXJnZXQgfHwgKG1UYXJnZXQgPT0gR0xfVEVY
VFVSRV9DVUJFX01BUCAmJiBJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkpKTsKLSAgICBy
ZXR1cm4gZ2V0SW1hZ2VEZXNjKHRhcmdldCwgbGV2ZWwpLnNpemUuaGVpZ2h0OworICAgIEFTU0VS
VCh0YXJnZXQgPT0gbVN0YXRlLm1UYXJnZXQgfHwKKyAgICAgICAgICAgKG1TdGF0ZS5tVGFyZ2V0
ID09IEdMX1RFWFRVUkVfQ1VCRV9NQVAgJiYgSXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0YXJnZXQp
KSk7CisgICAgcmV0dXJuIG1TdGF0ZS5nZXRJbWFnZURlc2ModGFyZ2V0LCBsZXZlbCkuc2l6ZS5o
ZWlnaHQ7CiB9CiAKIHNpemVfdCBUZXh0dXJlOjpnZXREZXB0aChHTGVudW0gdGFyZ2V0LCBzaXpl
X3QgbGV2ZWwpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHRhcmdldCA9PSBtVGFyZ2V0IHx8IChtVGFy
Z2V0ID09IEdMX1RFWFRVUkVfQ1VCRV9NQVAgJiYgSXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0YXJn
ZXQpKSk7Ci0gICAgcmV0dXJuIGdldEltYWdlRGVzYyh0YXJnZXQsIGxldmVsKS5zaXplLmRlcHRo
OwotfQotCi1HTGVudW0gVGV4dHVyZTo6Z2V0SW50ZXJuYWxGb3JtYXQoR0xlbnVtIHRhcmdldCwg
c2l6ZV90IGxldmVsKSBjb25zdAotewotICAgIEFTU0VSVCh0YXJnZXQgPT0gbVRhcmdldCB8fCAo
bVRhcmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQICYmIElzQ3ViZU1hcFRleHR1cmVUYXJnZXQo
dGFyZ2V0KSkpOwotICAgIHJldHVybiBnZXRJbWFnZURlc2ModGFyZ2V0LCBsZXZlbCkuaW50ZXJu
YWxGb3JtYXQ7Ci19Ci0KLWJvb2wgVGV4dHVyZTo6aXNTYW1wbGVyQ29tcGxldGUoY29uc3QgU2Ft
cGxlclN0YXRlICZzYW1wbGVyU3RhdGUsIGNvbnN0IERhdGEgJmRhdGEpIGNvbnN0Ci17Ci0gICAg
Y29uc3QgSW1hZ2VEZXNjICZiYXNlSW1hZ2VEZXNjID0gZ2V0SW1hZ2VEZXNjKGdldEJhc2VJbWFn
ZVRhcmdldCgpLCBtVGV4dHVyZVN0YXRlLmJhc2VMZXZlbCk7Ci0gICAgY29uc3QgVGV4dHVyZUNh
cHMgJnRleHR1cmVDYXBzID0gZGF0YS50ZXh0dXJlQ2Fwcy0+Z2V0KGJhc2VJbWFnZURlc2MuaW50
ZXJuYWxGb3JtYXQpOwotICAgIGlmICghbUNvbXBsZXRlbmVzc0NhY2hlLmNhY2hlVmFsaWQgfHwK
LSAgICAgICAgbUNvbXBsZXRlbmVzc0NhY2hlLnNhbXBsZXJTdGF0ZSAhPSBzYW1wbGVyU3RhdGUg
fHwKLSAgICAgICAgbUNvbXBsZXRlbmVzc0NhY2hlLmZpbHRlcmFibGUgIT0gdGV4dHVyZUNhcHMu
ZmlsdGVyYWJsZSB8fAotICAgICAgICBtQ29tcGxldGVuZXNzQ2FjaGUuY2xpZW50VmVyc2lvbiAh
PSBkYXRhLmNsaWVudFZlcnNpb24gfHwKLSAgICAgICAgbUNvbXBsZXRlbmVzc0NhY2hlLnN1cHBv
cnRzTlBPVCAhPSBkYXRhLmV4dGVuc2lvbnMtPnRleHR1cmVOUE9UKQotICAgIHsKLSAgICAgICAg
bUNvbXBsZXRlbmVzc0NhY2hlLmNhY2hlVmFsaWQgPSB0cnVlOwotICAgICAgICBtQ29tcGxldGVu
ZXNzQ2FjaGUuc2FtcGxlclN0YXRlID0gc2FtcGxlclN0YXRlOwotICAgICAgICBtQ29tcGxldGVu
ZXNzQ2FjaGUuZmlsdGVyYWJsZSA9IHRleHR1cmVDYXBzLmZpbHRlcmFibGU7Ci0gICAgICAgIG1D
b21wbGV0ZW5lc3NDYWNoZS5jbGllbnRWZXJzaW9uID0gZGF0YS5jbGllbnRWZXJzaW9uOwotICAg
ICAgICBtQ29tcGxldGVuZXNzQ2FjaGUuc3VwcG9ydHNOUE9UID0gZGF0YS5leHRlbnNpb25zLT50
ZXh0dXJlTlBPVDsKLSAgICAgICAgbUNvbXBsZXRlbmVzc0NhY2hlLnNhbXBsZXJDb21wbGV0ZSA9
IGNvbXB1dGVTYW1wbGVyQ29tcGxldGVuZXNzKHNhbXBsZXJTdGF0ZSwgZGF0YSk7Ci0gICAgfQot
ICAgIHJldHVybiBtQ29tcGxldGVuZXNzQ2FjaGUuc2FtcGxlckNvbXBsZXRlOwotfQotCi1ib29s
IFRleHR1cmU6OmlzTWlwbWFwQ29tcGxldGUoKSBjb25zdAotewotICAgIHJldHVybiBjb21wdXRl
TWlwbWFwQ29tcGxldGVuZXNzKCk7Ci19Ci0KLS8vIFRlc3RzIGZvciBjdWJlIHRleHR1cmUgY29t
cGxldGVuZXNzLiBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiAzLjcuMTAgcGFnZSA4MS4KLWJv
b2wgVGV4dHVyZTo6aXNDdWJlQ29tcGxldGUoKSBjb25zdAotewotICAgIEFTU0VSVChtVGFyZ2V0
ID09IEdMX1RFWFRVUkVfQ1VCRV9NQVApOwotCi0gICAgY29uc3QgSW1hZ2VEZXNjICZiYXNlSW1h
Z2VEZXNjID0gZ2V0SW1hZ2VEZXNjKEZpcnN0Q3ViZU1hcFRleHR1cmVUYXJnZXQsIDApOwotICAg
IGlmIChiYXNlSW1hZ2VEZXNjLnNpemUud2lkdGggPT0gMCB8fCBiYXNlSW1hZ2VEZXNjLnNpemUu
d2lkdGggIT0gYmFzZUltYWdlRGVzYy5zaXplLmhlaWdodCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgICBmb3IgKEdMZW51bSBmYWNlID0gRmlyc3RDdWJlTWFwVGV4
dHVyZVRhcmdldCArIDE7IGZhY2UgPD0gTGFzdEN1YmVNYXBUZXh0dXJlVGFyZ2V0OyBmYWNlKysp
Ci0gICAgewotICAgICAgICBjb25zdCBJbWFnZURlc2MgJmZhY2VJbWFnZURlc2MgPSBnZXRJbWFn
ZURlc2MoZmFjZSwgMCk7Ci0gICAgICAgIGlmIChmYWNlSW1hZ2VEZXNjLnNpemUud2lkdGggIT0g
YmFzZUltYWdlRGVzYy5zaXplLndpZHRoIHx8Ci0gICAgICAgICAgICBmYWNlSW1hZ2VEZXNjLnNp
emUuaGVpZ2h0ICE9IGJhc2VJbWFnZURlc2Muc2l6ZS5oZWlnaHQgfHwKLSAgICAgICAgICAgIGZh
Y2VJbWFnZURlc2MuaW50ZXJuYWxGb3JtYXQgIT0gYmFzZUltYWdlRGVzYy5pbnRlcm5hbEZvcm1h
dCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXNpemVfdCBUZXh0dXJlOjpnZXRNaXBDb21wbGV0
ZUxldmVscygpIGNvbnN0Ci17Ci0gICAgY29uc3QgSW1hZ2VEZXNjICZiYXNlSW1hZ2VEZXNjID0g
Z2V0SW1hZ2VEZXNjKGdldEJhc2VJbWFnZVRhcmdldCgpLCAwKTsKLSAgICBpZiAobVRhcmdldCA9
PSBHTF9URVhUVVJFXzNEKQotICAgIHsKLSAgICAgICAgY29uc3QgaW50IG1heERpbSA9IHN0ZDo6
bWF4KHN0ZDo6bWF4KGJhc2VJbWFnZURlc2Muc2l6ZS53aWR0aCwgYmFzZUltYWdlRGVzYy5zaXpl
LmhlaWdodCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlSW1hZ2VE
ZXNjLnNpemUuZGVwdGgpOwotICAgICAgICByZXR1cm4gbG9nMihtYXhEaW0pICsgMTsKLSAgICB9
Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgcmV0dXJuIGxvZzIoc3RkOjptYXgoYmFzZUltYWdl
RGVzYy5zaXplLndpZHRoLCBiYXNlSW1hZ2VEZXNjLnNpemUuaGVpZ2h0KSkgKyAxOwotICAgIH0K
KyAgICBBU1NFUlQodGFyZ2V0ID09IG1TdGF0ZS5tVGFyZ2V0IHx8CisgICAgICAgICAgIChtU3Rh
dGUubVRhcmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQICYmIElzQ3ViZU1hcFRleHR1cmVUYXJn
ZXQodGFyZ2V0KSkpOworICAgIHJldHVybiBtU3RhdGUuZ2V0SW1hZ2VEZXNjKHRhcmdldCwgbGV2
ZWwpLnNpemUuZGVwdGg7Cit9CisKK2NvbnN0IEZvcm1hdCAmVGV4dHVyZTo6Z2V0Rm9ybWF0KEdM
ZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCkgY29uc3QKK3sKKyAgICBBU1NFUlQodGFyZ2V0ID09
IG1TdGF0ZS5tVGFyZ2V0IHx8CisgICAgICAgICAgIChtU3RhdGUubVRhcmdldCA9PSBHTF9URVhU
VVJFX0NVQkVfTUFQICYmIElzQ3ViZU1hcFRleHR1cmVUYXJnZXQodGFyZ2V0KSkpOworICAgIHJl
dHVybiBtU3RhdGUuZ2V0SW1hZ2VEZXNjKHRhcmdldCwgbGV2ZWwpLmZvcm1hdDsKK30KKworYm9v
bCBUZXh0dXJlOjppc01pcG1hcENvbXBsZXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN0YXRl
LmNvbXB1dGVNaXBtYXBDb21wbGV0ZW5lc3MoKTsKIH0KIAogZWdsOjpTdXJmYWNlICpUZXh0dXJl
OjpnZXRCb3VuZFN1cmZhY2UoKSBjb25zdApAQCAtMzY5LDYgKzc3NywxMSBAQCBlZ2w6OlN1cmZh
Y2UgKlRleHR1cmU6OmdldEJvdW5kU3VyZmFjZSgpCiAgICAgcmV0dXJuIG1Cb3VuZFN1cmZhY2U7
CiB9CiAKK2VnbDo6U3RyZWFtICpUZXh0dXJlOjpnZXRCb3VuZFN0cmVhbSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1Cb3VuZFN0cmVhbTsKK30KKwogRXJyb3IgVGV4dHVyZTo6c2V0SW1hZ2UoY29u
c3QgUGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLApA
QCAtMzc4LDIyICs3OTEsMjAgQEAgRXJyb3IgVGV4dHVyZTo6c2V0SW1hZ2UoY29uc3QgUGl4ZWxV
bnBhYwogICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpCiB7Ci0gICAgQVNTRVJUKHRhcmdldCA9
PSBtVGFyZ2V0IHx8IChtVGFyZ2V0ID09IEdMX1RFWFRVUkVfQ1VCRV9NQVAgJiYgSXNDdWJlTWFw
VGV4dHVyZVRhcmdldCh0YXJnZXQpKSk7CisgICAgQVNTRVJUKHRhcmdldCA9PSBtU3RhdGUubVRh
cmdldCB8fAorICAgICAgICAgICAobVN0YXRlLm1UYXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01B
UCAmJiBJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkpKTsKIAogICAgIC8vIFJlbGVhc2Ug
ZnJvbSBwcmV2aW91cyBjYWxscyB0byBlZ2xCaW5kVGV4SW1hZ2UsIHRvIGF2b2lkIGNhbGxpbmcg
dGhlIEltcGwgYWZ0ZXIKICAgICByZWxlYXNlVGV4SW1hZ2VJbnRlcm5hbCgpOwogICAgIG9ycGhh
bkltYWdlcygpOwogCi0gICAgRXJyb3IgZXJyb3IgPQotICAgICAgICBtVGV4dHVyZS0+c2V0SW1h
Z2UodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHNpemUsIGZvcm1hdCwgdHlwZSwgdW5w
YWNrU3RhdGUsIHBpeGVscyk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKAorICAgICAgICBtVGV4dHVy
ZS0+c2V0SW1hZ2UodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHNpemUsIGZvcm1hdCwg
dHlwZSwgdW5wYWNrU3RhdGUsIHBpeGVscykpOwogCi0gICAgc2V0SW1hZ2VEZXNjKHRhcmdldCwg
bGV2ZWwsIEltYWdlRGVzYyhzaXplLCBHZXRTaXplZEludGVybmFsRm9ybWF0KGludGVybmFsRm9y
bWF0LCB0eXBlKSkpOworICAgIG1TdGF0ZS5zZXRJbWFnZURlc2ModGFyZ2V0LCBsZXZlbCwgSW1h
Z2VEZXNjKHNpemUsIEZvcm1hdChpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlKSkpOworICAg
IG1EaXJ0eUNoYW5uZWwuc2lnbmFsKCk7CiAKLSAgICByZXR1cm4gRXJyb3IoR0xfTk9fRVJST1Ip
OworICAgIHJldHVybiBOb0Vycm9yKCk7CiB9CiAKIEVycm9yIFRleHR1cmU6OnNldFN1YkltYWdl
KGNvbnN0IFBpeGVsVW5wYWNrU3RhdGUgJnVucGFja1N0YXRlLApAQCAtNDA0LDcgKzgxNSw4IEBA
IEVycm9yIFRleHR1cmU6OnNldFN1YkltYWdlKGNvbnN0IFBpeGVsVW4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgdWludDhfdCAqcGl4ZWxzKQogewotICAgIEFTU0VSVCh0YXJnZXQgPT0gbVRhcmdldCB8fCAo
bVRhcmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQICYmIElzQ3ViZU1hcFRleHR1cmVUYXJnZXQo
dGFyZ2V0KSkpOworICAgIEFTU0VSVCh0YXJnZXQgPT0gbVN0YXRlLm1UYXJnZXQgfHwKKyAgICAg
ICAgICAgKG1TdGF0ZS5tVGFyZ2V0ID09IEdMX1RFWFRVUkVfQ1VCRV9NQVAgJiYgSXNDdWJlTWFw
VGV4dHVyZVRhcmdldCh0YXJnZXQpKSk7CiAgICAgcmV0dXJuIG1UZXh0dXJlLT5zZXRTdWJJbWFn
ZSh0YXJnZXQsIGxldmVsLCBhcmVhLCBmb3JtYXQsIHR5cGUsIHVucGFja1N0YXRlLCBwaXhlbHMp
OwogfQogCkBAIC00MTYsMjIgKzgyOCwyMCBAQCBFcnJvciBUZXh0dXJlOjpzZXRDb21wcmVzc2Vk
SW1hZ2UoY29uc3QgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlt
YWdlU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90
ICpwaXhlbHMpCiB7Ci0gICAgQVNTRVJUKHRhcmdldCA9PSBtVGFyZ2V0IHx8IChtVGFyZ2V0ID09
IEdMX1RFWFRVUkVfQ1VCRV9NQVAgJiYgSXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpKSk7
CisgICAgQVNTRVJUKHRhcmdldCA9PSBtU3RhdGUubVRhcmdldCB8fAorICAgICAgICAgICAobVN0
YXRlLm1UYXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01BUCAmJiBJc0N1YmVNYXBUZXh0dXJlVGFy
Z2V0KHRhcmdldCkpKTsKIAogICAgIC8vIFJlbGVhc2UgZnJvbSBwcmV2aW91cyBjYWxscyB0byBl
Z2xCaW5kVGV4SW1hZ2UsIHRvIGF2b2lkIGNhbGxpbmcgdGhlIEltcGwgYWZ0ZXIKICAgICByZWxl
YXNlVGV4SW1hZ2VJbnRlcm5hbCgpOwogICAgIG9ycGhhbkltYWdlcygpOwogCi0gICAgRXJyb3Ig
ZXJyb3IgPSBtVGV4dHVyZS0+c2V0Q29tcHJlc3NlZEltYWdlKHRhcmdldCwgbGV2ZWwsIGludGVy
bmFsRm9ybWF0LCBzaXplLCB1bnBhY2tTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW1hZ2VTaXplLCBwaXhlbHMpOwotICAgIGlmIChlcnJvci5p
c0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xF
X1RSWShtVGV4dHVyZS0+c2V0Q29tcHJlc3NlZEltYWdlKHRhcmdldCwgbGV2ZWwsIGludGVybmFs
Rm9ybWF0LCBzaXplLCB1bnBhY2tTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbWFnZVNpemUsIHBpeGVscykpOwogCi0gICAgc2V0SW1hZ2VEZXNjKHRh
cmdldCwgbGV2ZWwsIEltYWdlRGVzYyhzaXplLCBHZXRTaXplZEludGVybmFsRm9ybWF0KGludGVy
bmFsRm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFKSkpOworICAgIG1TdGF0ZS5zZXRJbWFnZURlc2Mo
dGFyZ2V0LCBsZXZlbCwgSW1hZ2VEZXNjKHNpemUsIEZvcm1hdChpbnRlcm5hbEZvcm1hdCkpKTsK
KyAgICBtRGlydHlDaGFubmVsLnNpZ25hbCgpOwogCi0gICAgcmV0dXJuIEVycm9yKEdMX05PX0VS
Uk9SKTsKKyAgICByZXR1cm4gTm9FcnJvcigpOwogfQogCiBFcnJvciBUZXh0dXJlOjpzZXRDb21w
cmVzc2VkU3ViSW1hZ2UoY29uc3QgUGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrU3RhdGUsCkBAIC00
NDIsNyArODUyLDggQEAgRXJyb3IgVGV4dHVyZTo6c2V0Q29tcHJlc3NlZFN1YkltYWdlKGNvbgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZVNpemUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxz
KQogewotICAgIEFTU0VSVCh0YXJnZXQgPT0gbVRhcmdldCB8fCAobVRhcmdldCA9PSBHTF9URVhU
VVJFX0NVQkVfTUFQICYmIElzQ3ViZU1hcFRleHR1cmVUYXJnZXQodGFyZ2V0KSkpOworICAgIEFT
U0VSVCh0YXJnZXQgPT0gbVN0YXRlLm1UYXJnZXQgfHwKKyAgICAgICAgICAgKG1TdGF0ZS5tVGFy
Z2V0ID09IEdMX1RFWFRVUkVfQ1VCRV9NQVAgJiYgSXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0YXJn
ZXQpKSk7CiAKICAgICByZXR1cm4gbVRleHR1cmUtPnNldENvbXByZXNzZWRTdWJJbWFnZSh0YXJn
ZXQsIGxldmVsLCBhcmVhLCBmb3JtYXQsIHVucGFja1N0YXRlLCBpbWFnZVNpemUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxzKTsKQEAgLTQ1MSwxNDEg
Kzg2MiwxMzUgQEAgRXJyb3IgVGV4dHVyZTo6c2V0Q29tcHJlc3NlZFN1YkltYWdlKGNvbgogRXJy
b3IgVGV4dHVyZTo6Y29weUltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3Qg
UmVjdGFuZ2xlICZzb3VyY2VBcmVhLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgRnJhbWVidWZmZXIgKnNvdXJjZSkKIHsKLSAgICBBU1NFUlQo
dGFyZ2V0ID09IG1UYXJnZXQgfHwgKG1UYXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01BUCAmJiBJ
c0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkpKTsKKyAgICBBU1NFUlQodGFyZ2V0ID09IG1T
dGF0ZS5tVGFyZ2V0IHx8CisgICAgICAgICAgIChtU3RhdGUubVRhcmdldCA9PSBHTF9URVhUVVJF
X0NVQkVfTUFQICYmIElzQ3ViZU1hcFRleHR1cmVUYXJnZXQodGFyZ2V0KSkpOwogCiAgICAgLy8g
UmVsZWFzZSBmcm9tIHByZXZpb3VzIGNhbGxzIHRvIGVnbEJpbmRUZXhJbWFnZSwgdG8gYXZvaWQg
Y2FsbGluZyB0aGUgSW1wbCBhZnRlcgogICAgIHJlbGVhc2VUZXhJbWFnZUludGVybmFsKCk7CiAg
ICAgb3JwaGFuSW1hZ2VzKCk7CiAKLSAgICBFcnJvciBlcnJvciA9IG1UZXh0dXJlLT5jb3B5SW1h
Z2UodGFyZ2V0LCBsZXZlbCwgc291cmNlQXJlYSwgaW50ZXJuYWxGb3JtYXQsIHNvdXJjZSk7Ci0g
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAg
ICB9CisgICAgQU5HTEVfVFJZKG1UZXh0dXJlLT5jb3B5SW1hZ2UodGFyZ2V0LCBsZXZlbCwgc291
cmNlQXJlYSwgaW50ZXJuYWxGb3JtYXQsIHNvdXJjZSkpOwogCi0gICAgc2V0SW1hZ2VEZXNjKHRh
cmdldCwgbGV2ZWwsIEltYWdlRGVzYyhFeHRlbnRzKHNvdXJjZUFyZWEud2lkdGgsIHNvdXJjZUFy
ZWEuaGVpZ2h0LCAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdldFNpemVkSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUp
KSk7CisgICAgY29uc3QgR0xlbnVtIHNpemVkRm9ybWF0ID0gR2V0U2l6ZWRJbnRlcm5hbEZvcm1h
dChpbnRlcm5hbEZvcm1hdCwgR0xfVU5TSUdORURfQllURSk7CisgICAgbVN0YXRlLnNldEltYWdl
RGVzYyh0YXJnZXQsIGxldmVsLCBJbWFnZURlc2MoRXh0ZW50cyhzb3VyY2VBcmVhLndpZHRoLCBz
b3VyY2VBcmVhLmhlaWdodCwgMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRm9ybWF0KHNpemVkRm9ybWF0KSkpOworICAgIG1EaXJ0eUNoYW5uZWwu
c2lnbmFsKCk7CiAKLSAgICByZXR1cm4gRXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBO
b0Vycm9yKCk7CiB9CiAKIEVycm9yIFRleHR1cmU6OmNvcHlTdWJJbWFnZShHTGVudW0gdGFyZ2V0
LCBzaXplX3QgbGV2ZWwsIGNvbnN0IE9mZnNldCAmZGVzdE9mZnNldCwgY29uc3QgUmVjdGFuZ2xl
ICZzb3VyY2VBcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZyYW1lYnVm
ZmVyICpzb3VyY2UpCiB7Ci0gICAgQVNTRVJUKHRhcmdldCA9PSBtVGFyZ2V0IHx8IChtVGFyZ2V0
ID09IEdMX1RFWFRVUkVfQ1VCRV9NQVAgJiYgSXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0YXJnZXQp
KSk7CisgICAgQVNTRVJUKHRhcmdldCA9PSBtU3RhdGUubVRhcmdldCB8fAorICAgICAgICAgICAo
bVN0YXRlLm1UYXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01BUCAmJiBJc0N1YmVNYXBUZXh0dXJl
VGFyZ2V0KHRhcmdldCkpKTsKIAogICAgIHJldHVybiBtVGV4dHVyZS0+Y29weVN1YkltYWdlKHRh
cmdldCwgbGV2ZWwsIGRlc3RPZmZzZXQsIHNvdXJjZUFyZWEsIHNvdXJjZSk7CiB9CiAKLUVycm9y
IFRleHR1cmU6OnNldFN0b3JhZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVscywgR0xlbnVt
IGludGVybmFsRm9ybWF0LCBjb25zdCBFeHRlbnRzICZzaXplKQorRXJyb3IgVGV4dHVyZTo6Y29w
eVRleHR1cmUoR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja0Zs
aXBZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tQcmVtdWx0aXBseUFs
cGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tVbm11bHRpcGx5QWxw
aGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXh0dXJlICpzb3VyY2UpCiB7
Ci0gICAgQVNTRVJUKHRhcmdldCA9PSBtVGFyZ2V0KTsKLQogICAgIC8vIFJlbGVhc2UgZnJvbSBw
cmV2aW91cyBjYWxscyB0byBlZ2xCaW5kVGV4SW1hZ2UsIHRvIGF2b2lkIGNhbGxpbmcgdGhlIElt
cGwgYWZ0ZXIKICAgICByZWxlYXNlVGV4SW1hZ2VJbnRlcm5hbCgpOwogICAgIG9ycGhhbkltYWdl
cygpOwogCi0gICAgRXJyb3IgZXJyb3IgPSBtVGV4dHVyZS0+c2V0U3RvcmFnZSh0YXJnZXQsIGxl
dmVscywgaW50ZXJuYWxGb3JtYXQsIHNpemUpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0g
ICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShtVGV4dHVy
ZS0+Y29weVRleHR1cmUoaW50ZXJuYWxGb3JtYXQsIHR5cGUsIHVucGFja0ZsaXBZLCB1bnBhY2tQ
cmVtdWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5w
YWNrVW5tdWx0aXBseUFscGhhLCBzb3VyY2UpKTsKIAotICAgIG1UZXh0dXJlU3RhdGUuaW1tdXRh
YmxlRm9ybWF0ID0gdHJ1ZTsKLSAgICBtVGV4dHVyZVN0YXRlLmltbXV0YWJsZUxldmVscyA9IHN0
YXRpY19jYXN0PEdMdWludD4obGV2ZWxzKTsKLSAgICBjbGVhckltYWdlRGVzY3MoKTsKLSAgICBz
ZXRJbWFnZURlc2NDaGFpbihsZXZlbHMsIHNpemUsIGludGVybmFsRm9ybWF0KTsKKyAgICBjb25z
dCBhdXRvICZzb3VyY2VEZXNjICAgPSBzb3VyY2UtPm1TdGF0ZS5nZXRJbWFnZURlc2Moc291cmNl
LT5nZXRUYXJnZXQoKSwgMCk7CisgICAgY29uc3QgR0xlbnVtIHNpemVkRm9ybWF0ID0gR2V0U2l6
ZWRJbnRlcm5hbEZvcm1hdChpbnRlcm5hbEZvcm1hdCwgdHlwZSk7CisgICAgbVN0YXRlLnNldElt
YWdlRGVzYyhnZXRUYXJnZXQoKSwgMCwgSW1hZ2VEZXNjKHNvdXJjZURlc2Muc2l6ZSwgRm9ybWF0
KHNpemVkRm9ybWF0KSkpOworICAgIG1EaXJ0eUNoYW5uZWwuc2lnbmFsKCk7CiAKLSAgICByZXR1
cm4gRXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBOb0Vycm9yKCk7CiB9CiAKLUVycm9y
IFRleHR1cmU6OmdlbmVyYXRlTWlwbWFwcygpCitFcnJvciBUZXh0dXJlOjpjb3B5U3ViVGV4dHVy
ZShjb25zdCBPZmZzZXQgJmRlc3RPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIHVucGFja0ZsaXBZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCB1bnBhY2tVbm11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUZXh0dXJlICpzb3VyY2UpCit7CisgICAgcmV0dXJuIG1UZXh0dXJlLT5jb3B5U3Vi
VGV4dHVyZShkZXN0T2Zmc2V0LCBzb3VyY2VBcmVhLCB1bnBhY2tGbGlwWSwgdW5wYWNrUHJlbXVs
dGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVucGFja1Vu
bXVsdGlwbHlBbHBoYSwgc291cmNlKTsKK30KKworRXJyb3IgVGV4dHVyZTo6Y29weUNvbXByZXNz
ZWRUZXh0dXJlKGNvbnN0IFRleHR1cmUgKnNvdXJjZSkKIHsKICAgICAvLyBSZWxlYXNlIGZyb20g
cHJldmlvdXMgY2FsbHMgdG8gZWdsQmluZFRleEltYWdlLCB0byBhdm9pZCBjYWxsaW5nIHRoZSBJ
bXBsIGFmdGVyCiAgICAgcmVsZWFzZVRleEltYWdlSW50ZXJuYWwoKTsKKyAgICBvcnBoYW5JbWFn
ZXMoKTsKIAotICAgIC8vIEVHTF9LSFJfZ2xfaW1hZ2Ugc3RhdGVzIHRoYXQgaW1hZ2VzIGFyZSBv
bmx5IG9ycGhhbmVkIHdoZW4gZ2VuZXJhdGluZyBtaXBtYXBzIGlmIHRoZSB0ZXh0dXJlCi0gICAg
Ly8gaXMgbm90IG1pcCBjb21wbGV0ZS4KLSAgICBpZiAoIWlzTWlwbWFwQ29tcGxldGUoKSkKLSAg
ICB7Ci0gICAgICAgIG9ycGhhbkltYWdlcygpOwotICAgIH0KLQotICAgIEVycm9yIGVycm9yID0g
bVRleHR1cmUtPmdlbmVyYXRlTWlwbWFwcyhtVGV4dHVyZVN0YXRlKTsKLSAgICBpZiAoZXJyb3Iu
aXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdM
RV9UUlkobVRleHR1cmUtPmNvcHlDb21wcmVzc2VkVGV4dHVyZShzb3VyY2UpKTsKIAotICAgIGNv
bnN0IEltYWdlRGVzYyAmYmFzZUltYWdlSW5mbyA9IGdldEltYWdlRGVzYyhnZXRCYXNlSW1hZ2VU
YXJnZXQoKSwgMCk7Ci0gICAgc2l6ZV90IG1pcExldmVscyA9IGxvZzIoc3RkOjptYXgoc3RkOjpt
YXgoYmFzZUltYWdlSW5mby5zaXplLndpZHRoLCBiYXNlSW1hZ2VJbmZvLnNpemUuaGVpZ2h0KSwg
YmFzZUltYWdlSW5mby5zaXplLmRlcHRoKSkgKyAxOwotICAgIHNldEltYWdlRGVzY0NoYWluKG1p
cExldmVscywgYmFzZUltYWdlSW5mby5zaXplLCBiYXNlSW1hZ2VJbmZvLmludGVybmFsRm9ybWF0
KTsKKyAgICBBU1NFUlQoc291cmNlLT5nZXRUYXJnZXQoKSAhPSBHTF9URVhUVVJFX0NVQkVfTUFQ
ICYmIGdldFRhcmdldCgpICE9IEdMX1RFWFRVUkVfQ1VCRV9NQVApOworICAgIGNvbnN0IGF1dG8g
JnNvdXJjZURlc2MgPSBzb3VyY2UtPm1TdGF0ZS5nZXRJbWFnZURlc2Moc291cmNlLT5nZXRUYXJn
ZXQoKSwgMCk7CisgICAgbVN0YXRlLnNldEltYWdlRGVzYyhnZXRUYXJnZXQoKSwgMCwgc291cmNl
RGVzYyk7CiAKLSAgICByZXR1cm4gRXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBOb0Vy
cm9yKCk7CiB9CiAKLXZvaWQgVGV4dHVyZTo6c2V0SW1hZ2VEZXNjQ2hhaW4oc2l6ZV90IGxldmVs
cywgRXh0ZW50cyBiYXNlU2l6ZSwgR0xlbnVtIHNpemVkSW50ZXJuYWxGb3JtYXQpCitFcnJvciBU
ZXh0dXJlOjpzZXRTdG9yYWdlKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbGV2ZWxzLCBHTGVudW0g
aW50ZXJuYWxGb3JtYXQsIGNvbnN0IEV4dGVudHMgJnNpemUpCiB7Ci0gICAgZm9yIChpbnQgbGV2
ZWwgPSAwOyBsZXZlbCA8IHN0YXRpY19jYXN0PGludD4obGV2ZWxzKTsgbGV2ZWwrKykKLSAgICB7
Ci0gICAgICAgIEV4dGVudHMgbGV2ZWxTaXplKAotICAgICAgICAgICAgc3RkOjptYXg8aW50Pihi
YXNlU2l6ZS53aWR0aCA+PiBsZXZlbCwgMSksIHN0ZDo6bWF4PGludD4oYmFzZVNpemUuaGVpZ2h0
ID4+IGxldmVsLCAxKSwKLSAgICAgICAgICAgIChtVGFyZ2V0ID09IEdMX1RFWFRVUkVfMkRfQVJS
QVkpID8gYmFzZVNpemUuZGVwdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDogc3RkOjptYXg8aW50PihiYXNlU2l6ZS5kZXB0aCA+PiBsZXZlbCwgMSkpOwot
ICAgICAgICBJbWFnZURlc2MgbGV2ZWxJbmZvKGxldmVsU2l6ZSwgc2l6ZWRJbnRlcm5hbEZvcm1h
dCk7CisgICAgQVNTRVJUKHRhcmdldCA9PSBtU3RhdGUubVRhcmdldCk7CiAKLSAgICAgICAgaWYg
KG1UYXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01BUCkKLSAgICAgICAgewotICAgICAgICAgICAg
Zm9yIChHTGVudW0gZmFjZSA9IEZpcnN0Q3ViZU1hcFRleHR1cmVUYXJnZXQ7IGZhY2UgPD0gTGFz
dEN1YmVNYXBUZXh0dXJlVGFyZ2V0OyBmYWNlKyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgc2V0SW1hZ2VEZXNjKGZhY2UsIGxldmVsLCBsZXZlbEluZm8pOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgc2V0SW1h
Z2VEZXNjKG1UYXJnZXQsIGxldmVsLCBsZXZlbEluZm8pOwotICAgICAgICB9Ci0gICAgfQotfQor
ICAgIC8vIFJlbGVhc2UgZnJvbSBwcmV2aW91cyBjYWxscyB0byBlZ2xCaW5kVGV4SW1hZ2UsIHRv
IGF2b2lkIGNhbGxpbmcgdGhlIEltcGwgYWZ0ZXIKKyAgICByZWxlYXNlVGV4SW1hZ2VJbnRlcm5h
bCgpOworICAgIG9ycGhhbkltYWdlcygpOwogCi1UZXh0dXJlOjpJbWFnZURlc2M6OkltYWdlRGVz
YygpCi0gICAgOiBJbWFnZURlc2MoRXh0ZW50cygwLCAwLCAwKSwgR0xfTk9ORSkKLXsKLX0KKyAg
ICBBTkdMRV9UUlkobVRleHR1cmUtPnNldFN0b3JhZ2UodGFyZ2V0LCBsZXZlbHMsIGludGVybmFs
Rm9ybWF0LCBzaXplKSk7CiAKLVRleHR1cmU6OkltYWdlRGVzYzo6SW1hZ2VEZXNjKGNvbnN0IEV4
dGVudHMgJnNpemUsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCkKLSAgICA6IHNpemUoc2l6ZSksCi0g
ICAgICBpbnRlcm5hbEZvcm1hdChpbnRlcm5hbEZvcm1hdCkKLXsKLX0KKyAgICBtU3RhdGUubUlt
bXV0YWJsZUZvcm1hdCA9IHRydWU7CisgICAgbVN0YXRlLm1JbW11dGFibGVMZXZlbHMgPSBzdGF0
aWNfY2FzdDxHTHVpbnQ+KGxldmVscyk7CisgICAgbVN0YXRlLmNsZWFySW1hZ2VEZXNjcygpOwor
ICAgIG1TdGF0ZS5zZXRJbWFnZURlc2NDaGFpbigwLCBzdGF0aWNfY2FzdDxHTHVpbnQ+KGxldmVs
cyAtIDEpLCBzaXplLCBGb3JtYXQoaW50ZXJuYWxGb3JtYXQpKTsKIAotY29uc3QgVGV4dHVyZTo6
SW1hZ2VEZXNjICZUZXh0dXJlOjpnZXRJbWFnZURlc2MoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxl
dmVsKSBjb25zdAotewotICAgIHNpemVfdCBkZXNjSW5kZXggPSBHZXRJbWFnZURlc2NJbmRleCh0
YXJnZXQsIGxldmVsKTsKLSAgICBBU1NFUlQoZGVzY0luZGV4IDwgbUltYWdlRGVzY3Muc2l6ZSgp
KTsKLSAgICByZXR1cm4gbUltYWdlRGVzY3NbZGVzY0luZGV4XTsKLX0KKyAgICAvLyBDaGFuZ2lu
ZyB0aGUgdGV4dHVyZSB0byBpbW11dGFibGUgY2FuIHRyaWdnZXIgYSBjaGFuZ2UgaW4gdGhlIGJh
c2UgYW5kIG1heCBsZXZlbHM6CisgICAgLy8gR0xFUyAzLjAuNCBzZWN0aW9uIDMuOC4xMCBwZyAx
NTg6CisgICAgLy8gIkZvciBpbW11dGFibGUtZm9ybWF0IHRleHR1cmVzLCBsZXZlbGJhc2UgaXMg
Y2xhbXBlZCB0byB0aGUgcmFuZ2VbMDtsZXZlbHNdLGxldmVsbWF4IGlzIHRoZW4KKyAgICAvLyBj
bGFtcGVkIHRvIHRoZSByYW5nZVtsZXZlbGJhc2U7bGV2ZWxzXS4KKyAgICBtRGlydHlCaXRzLnNl
dChESVJUWV9CSVRfQkFTRV9MRVZFTCk7CisgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX01B
WF9MRVZFTCk7CiAKLXZvaWQgVGV4dHVyZTo6c2V0SW1hZ2VEZXNjKEdMZW51bSB0YXJnZXQsIHNp
emVfdCBsZXZlbCwgY29uc3QgSW1hZ2VEZXNjICZkZXNjKQotewotICAgIHNpemVfdCBkZXNjSW5k
ZXggPSBHZXRJbWFnZURlc2NJbmRleCh0YXJnZXQsIGxldmVsKTsKLSAgICBBU1NFUlQoZGVzY0lu
ZGV4IDwgbUltYWdlRGVzY3Muc2l6ZSgpKTsKLSAgICBtSW1hZ2VEZXNjc1tkZXNjSW5kZXhdID0g
ZGVzYzsKLSAgICBtQ29tcGxldGVuZXNzQ2FjaGUuY2FjaGVWYWxpZCA9IGZhbHNlOwotfQorICAg
IG1EaXJ0eUNoYW5uZWwuc2lnbmFsKCk7CiAKLXZvaWQgVGV4dHVyZTo6Y2xlYXJJbWFnZURlc2Mo
R0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsKQotewotICAgIHNldEltYWdlRGVzYyh0YXJnZXQs
IGxldmVsLCBJbWFnZURlc2MoKSk7CisgICAgcmV0dXJuIE5vRXJyb3IoKTsKIH0KIAotdm9pZCBU
ZXh0dXJlOjpjbGVhckltYWdlRGVzY3MoKQorRXJyb3IgVGV4dHVyZTo6Z2VuZXJhdGVNaXBtYXAo
KQogewotICAgIGZvciAoc2l6ZV90IGRlc2NJbmRleCA9IDA7IGRlc2NJbmRleCA8IG1JbWFnZURl
c2NzLnNpemUoKTsgZGVzY0luZGV4KyspCisgICAgLy8gUmVsZWFzZSBmcm9tIHByZXZpb3VzIGNh
bGxzIHRvIGVnbEJpbmRUZXhJbWFnZSwgdG8gYXZvaWQgY2FsbGluZyB0aGUgSW1wbCBhZnRlcgor
ICAgIHJlbGVhc2VUZXhJbWFnZUludGVybmFsKCk7CisKKyAgICAvLyBFR0xfS0hSX2dsX2ltYWdl
IHN0YXRlcyB0aGF0IGltYWdlcyBhcmUgb25seSBvcnBoYW5lZCB3aGVuIGdlbmVyYXRpbmcgbWlw
bWFwcyBpZiB0aGUgdGV4dHVyZQorICAgIC8vIGlzIG5vdCBtaXAgY29tcGxldGUuCisgICAgaWYg
KCFpc01pcG1hcENvbXBsZXRlKCkpCiAgICAgewotICAgICAgICBtSW1hZ2VEZXNjc1tkZXNjSW5k
ZXhdID0gSW1hZ2VEZXNjKCk7CisgICAgICAgIG9ycGhhbkltYWdlcygpOwogICAgIH0KLSAgICBt
Q29tcGxldGVuZXNzQ2FjaGUuY2FjaGVWYWxpZCA9IGZhbHNlOworCisgICAgY29uc3QgR0x1aW50
IGJhc2VMZXZlbCA9IG1TdGF0ZS5nZXRFZmZlY3RpdmVCYXNlTGV2ZWwoKTsKKyAgICBjb25zdCBH
THVpbnQgbWF4TGV2ZWwgID0gbVN0YXRlLmdldE1pcG1hcE1heExldmVsKCk7CisKKyAgICBpZiAo
bWF4TGV2ZWwgPiBiYXNlTGV2ZWwpCisgICAgeworICAgICAgICBzeW5jSW1wbFN0YXRlKCk7Cisg
ICAgICAgIEFOR0xFX1RSWShtVGV4dHVyZS0+Z2VuZXJhdGVNaXBtYXAoKSk7CisKKyAgICAgICAg
Y29uc3QgSW1hZ2VEZXNjICZiYXNlSW1hZ2VJbmZvID0KKyAgICAgICAgICAgIG1TdGF0ZS5nZXRJ
bWFnZURlc2MobVN0YXRlLmdldEJhc2VJbWFnZVRhcmdldCgpLCBiYXNlTGV2ZWwpOworICAgICAg
ICBtU3RhdGUuc2V0SW1hZ2VEZXNjQ2hhaW4oYmFzZUxldmVsLCBtYXhMZXZlbCwgYmFzZUltYWdl
SW5mby5zaXplLCBiYXNlSW1hZ2VJbmZvLmZvcm1hdCk7CisgICAgfQorCisgICAgbURpcnR5Q2hh
bm5lbC5zaWduYWwoKTsKKworICAgIHJldHVybiBOb0Vycm9yKCk7CiB9CiAKIHZvaWQgVGV4dHVy
ZTo6YmluZFRleEltYWdlRnJvbVN1cmZhY2UoZWdsOjpTdXJmYWNlICpzdXJmYWNlKQpAQCAtNjAx
LDEwICsxMDA2LDExIEBAIHZvaWQgVGV4dHVyZTo6YmluZFRleEltYWdlRnJvbVN1cmZhY2UoZWcK
ICAgICBtQm91bmRTdXJmYWNlID0gc3VyZmFjZTsKIAogICAgIC8vIFNldCB0aGUgaW1hZ2UgaW5m
byB0byB0aGUgc2l6ZSBhbmQgZm9ybWF0IG9mIHRoZSBzdXJmYWNlCi0gICAgQVNTRVJUKG1UYXJn
ZXQgPT0gR0xfVEVYVFVSRV8yRCk7CisgICAgQVNTRVJUKG1TdGF0ZS5tVGFyZ2V0ID09IEdMX1RF
WFRVUkVfMkQpOwogICAgIEV4dGVudHMgc2l6ZShzdXJmYWNlLT5nZXRXaWR0aCgpLCBzdXJmYWNl
LT5nZXRIZWlnaHQoKSwgMSk7Ci0gICAgSW1hZ2VEZXNjIGRlc2Moc2l6ZSwgc3VyZmFjZS0+Z2V0
Q29uZmlnKCktPnJlbmRlclRhcmdldEZvcm1hdCk7Ci0gICAgc2V0SW1hZ2VEZXNjKG1UYXJnZXQs
IDAsIGRlc2MpOworICAgIEltYWdlRGVzYyBkZXNjKHNpemUsIEZvcm1hdChzdXJmYWNlLT5nZXRD
b25maWcoKS0+cmVuZGVyVGFyZ2V0Rm9ybWF0KSk7CisgICAgbVN0YXRlLnNldEltYWdlRGVzYyht
U3RhdGUubVRhcmdldCwgMCwgZGVzYyk7CisgICAgbURpcnR5Q2hhbm5lbC5zaWduYWwoKTsKIH0K
IAogdm9pZCBUZXh0dXJlOjpyZWxlYXNlVGV4SW1hZ2VGcm9tU3VyZmFjZSgpCkBAIC02MTQsMjMz
ICsxMDIwLDkyIEBAIHZvaWQgVGV4dHVyZTo6cmVsZWFzZVRleEltYWdlRnJvbVN1cmZhY2UKICAg
ICBtVGV4dHVyZS0+cmVsZWFzZVRleEltYWdlKCk7CiAKICAgICAvLyBFcmFzZSB0aGUgaW1hZ2Ug
aW5mbyBmb3IgbGV2ZWwgMAotICAgIEFTU0VSVChtVGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQpOwot
ICAgIGNsZWFySW1hZ2VEZXNjKG1UYXJnZXQsIDApOwotfQotCi12b2lkIFRleHR1cmU6OnJlbGVh
c2VUZXhJbWFnZUludGVybmFsKCkKLXsKLSAgICBpZiAobUJvdW5kU3VyZmFjZSkKLSAgICB7Ci0g
ICAgICAgIC8vIE5vdGlmeSB0aGUgc3VyZmFjZQotICAgICAgICBtQm91bmRTdXJmYWNlLT5yZWxl
YXNlVGV4SW1hZ2VGcm9tVGV4dHVyZSgpOwotCi0gICAgICAgIC8vIFRoZW4sIGNhbGwgdGhlIHNh
bWUgbWV0aG9kIGFzIGZyb20gdGhlIHN1cmZhY2UKLSAgICAgICAgcmVsZWFzZVRleEltYWdlRnJv
bVN1cmZhY2UoKTsKLSAgICB9CisgICAgQVNTRVJUKG1TdGF0ZS5tVGFyZ2V0ID09IEdMX1RFWFRV
UkVfMkQpOworICAgIG1TdGF0ZS5jbGVhckltYWdlRGVzYyhtU3RhdGUubVRhcmdldCwgMCk7Cisg
ICAgbURpcnR5Q2hhbm5lbC5zaWduYWwoKTsKIH0KIAotRXJyb3IgVGV4dHVyZTo6c2V0RUdMSW1h
Z2VUYXJnZXQoR0xlbnVtIHRhcmdldCwgZWdsOjpJbWFnZSAqaW1hZ2VUYXJnZXQpCit2b2lkIFRl
eHR1cmU6OmJpbmRTdHJlYW0oZWdsOjpTdHJlYW0gKnN0cmVhbSkKIHsKLSAgICBBU1NFUlQodGFy
Z2V0ID09IG1UYXJnZXQpOwotICAgIEFTU0VSVCh0YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCk7Cisg
ICAgQVNTRVJUKHN0cmVhbSk7CiAKLSAgICAvLyBSZWxlYXNlIGZyb20gcHJldmlvdXMgY2FsbHMg
dG8gZWdsQmluZFRleEltYWdlLCB0byBhdm9pZCBjYWxsaW5nIHRoZSBJbXBsIGFmdGVyCi0gICAg
cmVsZWFzZVRleEltYWdlSW50ZXJuYWwoKTsKLSAgICBvcnBoYW5JbWFnZXMoKTsKLQotICAgIEVy
cm9yIGVycm9yID0gbVRleHR1cmUtPnNldEVHTEltYWdlVGFyZ2V0KHRhcmdldCwgaW1hZ2VUYXJn
ZXQpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJy
b3I7Ci0gICAgfQotCi0gICAgc2V0VGFyZ2V0SW1hZ2UoaW1hZ2VUYXJnZXQpOworICAgIC8vIEl0
IHNob3VsZCBub3QgYmUgcG9zc2libGUgdG8gYmluZCBhIHRleHR1cmUgYWxyZWFkeSBib3VuZCB0
byBhbm90aGVyIHN0cmVhbQorICAgIEFTU0VSVChtQm91bmRTdHJlYW0gPT0gbnVsbHB0cik7CiAK
LSAgICBFeHRlbnRzIHNpemUoc3RhdGljX2Nhc3Q8aW50PihpbWFnZVRhcmdldC0+Z2V0V2lkdGgo
KSksCi0gICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oaW1hZ2VUYXJnZXQtPmdldEhl
aWdodCgpKSwgMSk7Ci0gICAgR0xlbnVtIGludGVybmFsRm9ybWF0ID0gaW1hZ2VUYXJnZXQtPmdl
dEludGVybmFsRm9ybWF0KCk7Ci0gICAgR0xlbnVtIHR5cGUgICAgICAgICAgID0gR2V0SW50ZXJu
YWxGb3JtYXRJbmZvKGludGVybmFsRm9ybWF0KS50eXBlOworICAgIG1Cb3VuZFN0cmVhbSA9IHN0
cmVhbTsKIAotICAgIGNsZWFySW1hZ2VEZXNjcygpOwotICAgIHNldEltYWdlRGVzYyh0YXJnZXQs
IDAsIEltYWdlRGVzYyhzaXplLCBHZXRTaXplZEludGVybmFsRm9ybWF0KGludGVybmFsRm9ybWF0
LCB0eXBlKSkpOwotCi0gICAgcmV0dXJuIEVycm9yKEdMX05PX0VSUk9SKTsKKyAgICBBU1NFUlQo
bVN0YXRlLm1UYXJnZXQgPT0gR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMpOwogfQogCi1HTGVudW0g
VGV4dHVyZTo6Z2V0QmFzZUltYWdlVGFyZ2V0KCkgY29uc3QKK3ZvaWQgVGV4dHVyZTo6cmVsZWFz
ZVN0cmVhbSgpCiB7Ci0gICAgcmV0dXJuIG1UYXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01BUCA/
IEZpcnN0Q3ViZU1hcFRleHR1cmVUYXJnZXQgOiBtVGFyZ2V0OworICAgIEFTU0VSVChtQm91bmRT
dHJlYW0pOworICAgIG1Cb3VuZFN0cmVhbSA9IG51bGxwdHI7CiB9CiAKLWJvb2wgVGV4dHVyZTo6
Y29tcHV0ZVNhbXBsZXJDb21wbGV0ZW5lc3MoY29uc3QgU2FtcGxlclN0YXRlICZzYW1wbGVyU3Rh
dGUsIGNvbnN0IERhdGEgJmRhdGEpIGNvbnN0Cit2b2lkIFRleHR1cmU6OmFjcXVpcmVJbWFnZUZy
b21TdHJlYW0oY29uc3QgZWdsOjpTdHJlYW06OkdMVGV4dHVyZURlc2NyaXB0aW9uICZkZXNjKQog
ewotICAgIGNvbnN0IEltYWdlRGVzYyAmYmFzZUltYWdlRGVzYyA9IGdldEltYWdlRGVzYyhnZXRC
YXNlSW1hZ2VUYXJnZXQoKSwgbVRleHR1cmVTdGF0ZS5iYXNlTGV2ZWwpOwotICAgIGlmIChiYXNl
SW1hZ2VEZXNjLnNpemUud2lkdGggPT0gMCB8fCBiYXNlSW1hZ2VEZXNjLnNpemUuaGVpZ2h0ID09
IDAgfHwgYmFzZUltYWdlRGVzYy5zaXplLmRlcHRoID09IDApCi0gICAgewotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKG1UYXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01B
UCAmJiBiYXNlSW1hZ2VEZXNjLnNpemUud2lkdGggIT0gYmFzZUltYWdlRGVzYy5zaXplLmhlaWdo
dCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBjb25zdCBUZXh0
dXJlQ2FwcyAmdGV4dHVyZUNhcHMgPSBkYXRhLnRleHR1cmVDYXBzLT5nZXQoYmFzZUltYWdlRGVz
Yy5pbnRlcm5hbEZvcm1hdCk7Ci0gICAgaWYgKCF0ZXh0dXJlQ2Fwcy5maWx0ZXJhYmxlICYmICFJ
c1BvaW50U2FtcGxlZChzYW1wbGVyU3RhdGUpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLQotICAgIGJvb2wgbnBvdFN1cHBvcnQgPSBkYXRhLmV4dGVuc2lvbnMtPnRleHR1
cmVOUE9UIHx8IGRhdGEuY2xpZW50VmVyc2lvbiA+PSAzOwotICAgIGlmICghbnBvdFN1cHBvcnQp
Ci0gICAgewotICAgICAgICBpZiAoKHNhbXBsZXJTdGF0ZS53cmFwUyAhPSBHTF9DTEFNUF9UT19F
REdFICYmICFnbDo6aXNQb3cyKGJhc2VJbWFnZURlc2Muc2l6ZS53aWR0aCkpIHx8Ci0gICAgICAg
ICAgICAoc2FtcGxlclN0YXRlLndyYXBUICE9IEdMX0NMQU1QX1RPX0VER0UgJiYgIWdsOjppc1Bv
dzIoYmFzZUltYWdlRGVzYy5zaXplLmhlaWdodCkpKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoSXNNaXBtYXBGaWx0ZXJl
ZChzYW1wbGVyU3RhdGUpKQotICAgIHsKLSAgICAgICAgaWYgKCFucG90U3VwcG9ydCkKLSAgICAg
ICAgewotICAgICAgICAgICAgaWYgKCFnbDo6aXNQb3cyKGJhc2VJbWFnZURlc2Muc2l6ZS53aWR0
aCkgfHwgIWdsOjppc1BvdzIoYmFzZUltYWdlRGVzYy5zaXplLmhlaWdodCkpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKCFjb21wdXRlTWlwbWFwQ29tcGxldGVuZXNzKCkpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNl
Ci0gICAgewotICAgICAgICBpZiAobVRhcmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQICYmICFp
c0N1YmVDb21wbGV0ZSgpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBPcGVuR0xFUyAzLjAuMiBzcGVjIHNlY3Rpb24gMy44
LjEzIHN0YXRlcyB0aGF0IGEgdGV4dHVyZSBpcyBub3QgbWlwbWFwIGNvbXBsZXRlIGlmOgotICAg
IC8vIFRoZSBpbnRlcm5hbGZvcm1hdCBzcGVjaWZpZWQgZm9yIHRoZSB0ZXh0dXJlIGFycmF5cyBp
cyBhIHNpemVkIGludGVybmFsIGRlcHRoIG9yCi0gICAgLy8gZGVwdGggYW5kIHN0ZW5jaWwgZm9y
bWF0IChzZWUgdGFibGUgMy4xMyksIHRoZSB2YWx1ZSBvZiBURVhUVVJFX0NPTVBBUkVfLQotICAg
IC8vIE1PREUgaXMgTk9ORSwgYW5kIGVpdGhlciB0aGUgbWFnbmlmaWNhdGlvbiBmaWx0ZXIgaXMg
bm90IE5FQVJFU1Qgb3IgdGhlIG1pbmktCi0gICAgLy8gZmljYXRpb24gZmlsdGVyIGlzIG5laXRo
ZXIgTkVBUkVTVCBub3IgTkVBUkVTVF9NSVBNQVBfTkVBUkVTVC4KLSAgICBjb25zdCBnbDo6SW50
ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGJhc2VJ
bWFnZURlc2MuaW50ZXJuYWxGb3JtYXQpOwotICAgIGlmIChmb3JtYXRJbmZvLmRlcHRoQml0cyA+
IDAgJiYgZGF0YS5jbGllbnRWZXJzaW9uID4gMikKLSAgICB7Ci0gICAgICAgIGlmIChzYW1wbGVy
U3RhdGUuY29tcGFyZU1vZGUgPT0gR0xfTk9ORSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYg
KChzYW1wbGVyU3RhdGUubWluRmlsdGVyICE9IEdMX05FQVJFU1QgJiYgc2FtcGxlclN0YXRlLm1p
bkZpbHRlciAhPSBHTF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUKSB8fAotICAgICAgICAgICAgICAg
IHNhbXBsZXJTdGF0ZS5tYWdGaWx0ZXIgIT0gR0xfTkVBUkVTVCkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9CisgICAgQVNTRVJUKG1Cb3VuZFN0cmVhbSAhPSBudWxscHRyKTsKKyAgICBtVGV4dHVyZS0+
c2V0SW1hZ2VFeHRlcm5hbChtU3RhdGUubVRhcmdldCwgbUJvdW5kU3RyZWFtLCBkZXNjKTsKIAot
ICAgIHJldHVybiB0cnVlOworICAgIEV4dGVudHMgc2l6ZShkZXNjLndpZHRoLCBkZXNjLmhlaWdo
dCwgMSk7CisgICAgbVN0YXRlLnNldEltYWdlRGVzYyhtU3RhdGUubVRhcmdldCwgMCwgSW1hZ2VE
ZXNjKHNpemUsIEZvcm1hdChkZXNjLmludGVybmFsRm9ybWF0KSkpOworICAgIG1EaXJ0eUNoYW5u
ZWwuc2lnbmFsKCk7CiB9CiAKLWJvb2wgVGV4dHVyZTo6Y29tcHV0ZU1pcG1hcENvbXBsZXRlbmVz
cygpIGNvbnN0Cit2b2lkIFRleHR1cmU6OnJlbGVhc2VJbWFnZUZyb21TdHJlYW0oKQogewotICAg
IHNpemVfdCBleHBlY3RlZE1pcExldmVscyA9IGdldE1pcENvbXBsZXRlTGV2ZWxzKCk7Ci0KLSAg
ICBzaXplX3QgbWF4TGV2ZWwgPSBzdGQ6Om1pbjxzaXplX3Q+KGV4cGVjdGVkTWlwTGV2ZWxzLCBt
VGV4dHVyZVN0YXRlLm1heExldmVsICsgMSk7Ci0KLSAgICBmb3IgKHNpemVfdCBsZXZlbCA9IG1U
ZXh0dXJlU3RhdGUuYmFzZUxldmVsOyBsZXZlbCA8IG1heExldmVsOyBsZXZlbCsrKQotICAgIHsK
LSAgICAgICAgaWYgKG1UYXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01BUCkKLSAgICAgICAgewot
ICAgICAgICAgICAgZm9yIChHTGVudW0gZmFjZSA9IEZpcnN0Q3ViZU1hcFRleHR1cmVUYXJnZXQ7
IGZhY2UgPD0gTGFzdEN1YmVNYXBUZXh0dXJlVGFyZ2V0OyBmYWNlKyspCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgaWYgKCFjb21wdXRlTGV2ZWxDb21wbGV0ZW5lc3MoZmFjZSwgbGV2
ZWwpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBl
bHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghY29tcHV0ZUxldmVsQ29tcGxldGVuZXNz
KG1UYXJnZXQsIGxldmVsKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9CisgICAgQVNTRVJUKG1Cb3Vu
ZFN0cmVhbSAhPSBudWxscHRyKTsKKyAgICBtVGV4dHVyZS0+c2V0SW1hZ2VFeHRlcm5hbChtU3Rh
dGUubVRhcmdldCwgbnVsbHB0ciwgZWdsOjpTdHJlYW06OkdMVGV4dHVyZURlc2NyaXB0aW9uKCkp
OwogCi0gICAgcmV0dXJuIHRydWU7CisgICAgLy8gU2V0IHRvIGluY29tcGxldGUKKyAgICBtU3Rh
dGUuY2xlYXJJbWFnZURlc2MobVN0YXRlLm1UYXJnZXQsIDApOworICAgIG1EaXJ0eUNoYW5uZWwu
c2lnbmFsKCk7CiB9CiAKLWJvb2wgVGV4dHVyZTo6Y29tcHV0ZUxldmVsQ29tcGxldGVuZXNzKEdM
ZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCkgY29uc3QKK3ZvaWQgVGV4dHVyZTo6cmVsZWFzZVRl
eEltYWdlSW50ZXJuYWwoKQogewotICAgIEFTU0VSVChsZXZlbCA8IElNUExFTUVOVEFUSU9OX01B
WF9URVhUVVJFX0xFVkVMUyk7Ci0KLSAgICBpZiAobVRleHR1cmVTdGF0ZS5pbW11dGFibGVGb3Jt
YXQpCisgICAgaWYgKG1Cb3VuZFN1cmZhY2UpCiAgICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9CisgICAgICAgIC8vIE5vdGlmeSB0aGUgc3VyZmFjZQorICAgICAgICBtQm91bmRTdXJm
YWNlLT5yZWxlYXNlVGV4SW1hZ2VGcm9tVGV4dHVyZSgpOwogCi0gICAgY29uc3QgSW1hZ2VEZXNj
ICZiYXNlSW1hZ2VEZXNjID0gZ2V0SW1hZ2VEZXNjKGdldEJhc2VJbWFnZVRhcmdldCgpLCBtVGV4
dHVyZVN0YXRlLmJhc2VMZXZlbCk7Ci0gICAgaWYgKGJhc2VJbWFnZURlc2Muc2l6ZS53aWR0aCA9
PSAwIHx8IGJhc2VJbWFnZURlc2Muc2l6ZS5oZWlnaHQgPT0gMCB8fCBiYXNlSW1hZ2VEZXNjLnNp
emUuZGVwdGggPT0gMCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgLy8g
VGhlbiwgY2FsbCB0aGUgc2FtZSBtZXRob2QgYXMgZnJvbSB0aGUgc3VyZmFjZQorICAgICAgICBy
ZWxlYXNlVGV4SW1hZ2VGcm9tU3VyZmFjZSgpOwogICAgIH0KK30KIAotICAgIGNvbnN0IEltYWdl
RGVzYyAmbGV2ZWxJbWFnZURlc2MgPSBnZXRJbWFnZURlc2ModGFyZ2V0LCBsZXZlbCk7Ci0gICAg
aWYgKGxldmVsSW1hZ2VEZXNjLnNpemUud2lkdGggPT0gMCB8fCBsZXZlbEltYWdlRGVzYy5zaXpl
LmhlaWdodCA9PSAwIHx8Ci0gICAgICAgIGxldmVsSW1hZ2VEZXNjLnNpemUuZGVwdGggPT0gMCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CitFcnJvciBUZXh0dXJlOjpzZXRF
R0xJbWFnZVRhcmdldChHTGVudW0gdGFyZ2V0LCBlZ2w6OkltYWdlICppbWFnZVRhcmdldCkKK3sK
KyAgICBBU1NFUlQodGFyZ2V0ID09IG1TdGF0ZS5tVGFyZ2V0KTsKKyAgICBBU1NFUlQodGFyZ2V0
ID09IEdMX1RFWFRVUkVfMkQgfHwgdGFyZ2V0ID09IEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTKTsK
IAotICAgIGlmIChsZXZlbEltYWdlRGVzYy5pbnRlcm5hbEZvcm1hdCAhPSBiYXNlSW1hZ2VEZXNj
LmludGVybmFsRm9ybWF0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAg
ICAvLyBSZWxlYXNlIGZyb20gcHJldmlvdXMgY2FsbHMgdG8gZWdsQmluZFRleEltYWdlLCB0byBh
dm9pZCBjYWxsaW5nIHRoZSBJbXBsIGFmdGVyCisgICAgcmVsZWFzZVRleEltYWdlSW50ZXJuYWwo
KTsKKyAgICBvcnBoYW5JbWFnZXMoKTsKIAotICAgIEFTU0VSVChsZXZlbCA+PSBtVGV4dHVyZVN0
YXRlLmJhc2VMZXZlbCk7Ci0gICAgY29uc3Qgc2l6ZV90IHJlbGF0aXZlTGV2ZWwgPSBsZXZlbCAt
IG1UZXh0dXJlU3RhdGUuYmFzZUxldmVsOwotICAgIGlmIChsZXZlbEltYWdlRGVzYy5zaXplLndp
ZHRoICE9IHN0ZDo6bWF4KDEsIGJhc2VJbWFnZURlc2Muc2l6ZS53aWR0aCA+PiByZWxhdGl2ZUxl
dmVsKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgQU5HTEVfVFJZ
KG1UZXh0dXJlLT5zZXRFR0xJbWFnZVRhcmdldCh0YXJnZXQsIGltYWdlVGFyZ2V0KSk7CiAKLSAg
ICBpZiAobGV2ZWxJbWFnZURlc2Muc2l6ZS5oZWlnaHQgIT0gc3RkOjptYXgoMSwgYmFzZUltYWdl
RGVzYy5zaXplLmhlaWdodCA+PiByZWxhdGl2ZUxldmVsKSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9CisgICAgc2V0VGFyZ2V0SW1hZ2UoaW1hZ2VUYXJnZXQpOwogCi0gICAg
aWYgKG1UYXJnZXQgPT0gR0xfVEVYVFVSRV8zRCkKLSAgICB7Ci0gICAgICAgIGlmIChsZXZlbElt
YWdlRGVzYy5zaXplLmRlcHRoICE9IHN0ZDo6bWF4KDEsIGJhc2VJbWFnZURlc2Muc2l6ZS5kZXB0
aCA+PiByZWxhdGl2ZUxldmVsKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKG1UYXJnZXQgPT0gR0xfVEVYVFVSRV8y
RF9BUlJBWSkKLSAgICB7Ci0gICAgICAgIGlmIChsZXZlbEltYWdlRGVzYy5zaXplLmRlcHRoICE9
IGJhc2VJbWFnZURlc2Muc2l6ZS5kZXB0aCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQorICAgIEV4dGVudHMgc2l6ZShzdGF0aWNfY2FzdDxp
bnQ+KGltYWdlVGFyZ2V0LT5nZXRXaWR0aCgpKSwKKyAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8aW50PihpbWFnZVRhcmdldC0+Z2V0SGVpZ2h0KCkpLCAxKTsKIAotICAgIHJldHVybiB0cnVl
OwotfQorICAgIG1TdGF0ZS5jbGVhckltYWdlRGVzY3MoKTsKKyAgICBtU3RhdGUuc2V0SW1hZ2VE
ZXNjKHRhcmdldCwgMCwgSW1hZ2VEZXNjKHNpemUsIGltYWdlVGFyZ2V0LT5nZXRGb3JtYXQoKSkp
OworICAgIG1EaXJ0eUNoYW5uZWwuc2lnbmFsKCk7CiAKLVRleHR1cmU6OlNhbXBsZXJDb21wbGV0
ZW5lc3NDYWNoZTo6U2FtcGxlckNvbXBsZXRlbmVzc0NhY2hlKCkKLSAgICA6IGNhY2hlVmFsaWQo
ZmFsc2UpLAotICAgICAgc2FtcGxlclN0YXRlKCksCi0gICAgICBmaWx0ZXJhYmxlKGZhbHNlKSwK
LSAgICAgIGNsaWVudFZlcnNpb24oMCksCi0gICAgICBzdXBwb3J0c05QT1QoZmFsc2UpLAotICAg
ICAgc2FtcGxlckNvbXBsZXRlKGZhbHNlKQoteworICAgIHJldHVybiBOb0Vycm9yKCk7CiB9CiAK
IEV4dGVudHMgVGV4dHVyZTo6Z2V0QXR0YWNobWVudFNpemUoY29uc3QgZ2w6OkZyYW1lYnVmZmVy
QXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdldEltYWdl
RGVzYyh0YXJnZXQudGV4dHVyZUluZGV4KCkudHlwZSwgdGFyZ2V0LnRleHR1cmVJbmRleCgpLm1p
cEluZGV4KS5zaXplOworICAgIHJldHVybiBtU3RhdGUuZ2V0SW1hZ2VEZXNjKHRhcmdldC50ZXh0
dXJlSW5kZXgoKS50eXBlLCB0YXJnZXQudGV4dHVyZUluZGV4KCkubWlwSW5kZXgpLnNpemU7CiB9
CiAKLUdMZW51bSBUZXh0dXJlOjpnZXRBdHRhY2htZW50SW50ZXJuYWxGb3JtYXQoY29uc3QgZ2w6
OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQpIGNvbnN0Citjb25zdCBGb3Jt
YXQgJlRleHR1cmU6OmdldEF0dGFjaG1lbnRGb3JtYXQoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0
YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdldEludGVybmFs
Rm9ybWF0KHRhcmdldC50ZXh0dXJlSW5kZXgoKS50eXBlLCB0YXJnZXQudGV4dHVyZUluZGV4KCku
bWlwSW5kZXgpOworICAgIHJldHVybiBnZXRGb3JtYXQodGFyZ2V0LnRleHR1cmVJbmRleCgpLnR5
cGUsIHRhcmdldC50ZXh0dXJlSW5kZXgoKS5taXBJbmRleCk7CiB9CiAKIEdMc2l6ZWkgVGV4dHVy
ZTo6Z2V0QXR0YWNobWVudFNhbXBsZXMoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6
VGFyZ2V0ICYvKnRhcmdldCovKSBjb25zdApAQCAtODYzLDQgKzExMjgsMTUgQEAgR0x1aW50IFRl
eHR1cmU6OmdldElkKCkgY29uc3QKIHsKICAgICByZXR1cm4gaWQoKTsKIH0KKwordm9pZCBUZXh0
dXJlOjpzeW5jSW1wbFN0YXRlKCkKK3sKKyAgICBtVGV4dHVyZS0+c3luY1N0YXRlKG1EaXJ0eUJp
dHMpOworICAgIG1EaXJ0eUJpdHMucmVzZXQoKTsKK30KKworcng6OkZyYW1lYnVmZmVyQXR0YWNo
bWVudE9iamVjdEltcGwgKlRleHR1cmU6OmdldEF0dGFjaG1lbnRJbXBsKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbVRleHR1cmU7CiB9Cit9ICAvLyBuYW1lc3BhY2UgZ2wKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9UZXh0dXJlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1RleHR1cmUuaAkocmV2aXNpb24gMjA3
ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1RleHR1cmUuaAko
d29ya2luZyBjb3B5KQpAQCAtMjAsMjcgKzIwLDE1NCBAQAogI2luY2x1ZGUgImxpYkFOR0xFL0Vy
cm9yLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRnJhbWVidWZmZXJBdHRhY2htZW50LmgiCiAjaW5j
bHVkZSAibGliQU5HTEUvSW1hZ2UuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9TdHJlYW0uaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvVGV4dHVyZUltcGwuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgogCiBu
YW1lc3BhY2UgZWdsCiB7CiBjbGFzcyBTdXJmYWNlOworY2xhc3MgU3RyZWFtOworfQorCituYW1l
c3BhY2UgcngKK3sKK2NsYXNzIEdMSW1wbEZhY3Rvcnk7CitjbGFzcyBUZXh0dXJlSW1wbDsKK2Ns
YXNzIFRleHR1cmVHTDsKIH0KIAogbmFtZXNwYWNlIGdsCiB7CitjbGFzcyBDb250ZXh0U3RhdGU7
CiBjbGFzcyBGcmFtZWJ1ZmZlcjsKLXN0cnVjdCBEYXRhOworY2xhc3MgVGV4dHVyZTsKIAogYm9v
bCBJc01pcG1hcEZpbHRlcmVkKGNvbnN0IFNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlKTsKIAor
c3RydWN0IEltYWdlRGVzYyBmaW5hbAoreworICAgIEltYWdlRGVzYygpOworICAgIEltYWdlRGVz
Yyhjb25zdCBFeHRlbnRzICZzaXplLCBjb25zdCBGb3JtYXQgJmZvcm1hdCk7CisKKyAgICBJbWFn
ZURlc2MoY29uc3QgSW1hZ2VEZXNjICZvdGhlcikgPSBkZWZhdWx0OworICAgIEltYWdlRGVzYyAm
b3BlcmF0b3I9KGNvbnN0IEltYWdlRGVzYyAmb3RoZXIpID0gZGVmYXVsdDsKKworICAgIEV4dGVu
dHMgc2l6ZTsKKyAgICBGb3JtYXQgZm9ybWF0OworfTsKKworc3RydWN0IFN3aXp6bGVTdGF0ZSBm
aW5hbAoreworICAgIFN3aXp6bGVTdGF0ZSgpOworICAgIFN3aXp6bGVTdGF0ZShHTGVudW0gcmVk
LCBHTGVudW0gZ3JlZW4sIEdMZW51bSBibHVlLCBHTGVudW0gYWxwaGEpOworICAgIFN3aXp6bGVT
dGF0ZShjb25zdCBTd2l6emxlU3RhdGUgJm90aGVyKSA9IGRlZmF1bHQ7CisgICAgU3dpenpsZVN0
YXRlICZvcGVyYXRvcj0oY29uc3QgU3dpenpsZVN0YXRlICZvdGhlcikgPSBkZWZhdWx0OworCisg
ICAgYm9vbCBzd2l6emxlUmVxdWlyZWQoKSBjb25zdDsKKworICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTd2l6emxlU3RhdGUgJm90aGVyKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgU3dpenpsZVN0YXRlICZvdGhlcikgY29uc3Q7CisKKyAgICBHTGVudW0gc3dpenpsZVJlZDsK
KyAgICBHTGVudW0gc3dpenpsZUdyZWVuOworICAgIEdMZW51bSBzd2l6emxlQmx1ZTsKKyAgICBH
TGVudW0gc3dpenpsZUFscGhhOworfTsKKworLy8gU3RhdGUgZnJvbSBUYWJsZSA2LjkgKHN0YXRl
IHBlciB0ZXh0dXJlIG9iamVjdCkgaW4gdGhlIE9wZW5HTCBFUyAzLjAuMiBzcGVjLgorc3RydWN0
IFRleHR1cmVTdGF0ZSBmaW5hbCA6IHB1YmxpYyBhbmdsZTo6Tm9uQ29weWFibGUKK3sKKyAgICBU
ZXh0dXJlU3RhdGUoR0xlbnVtIHRhcmdldCk7CisKKyAgICBib29sIHN3aXp6bGVSZXF1aXJlZCgp
IGNvbnN0OworICAgIEdMdWludCBnZXRFZmZlY3RpdmVCYXNlTGV2ZWwoKSBjb25zdDsKKyAgICBH
THVpbnQgZ2V0RWZmZWN0aXZlTWF4TGV2ZWwoKSBjb25zdDsKKworICAgIC8vIFJldHVybnMgdGhl
IHZhbHVlIGNhbGxlZCAicSIgaW4gdGhlIEdMRVMgMy4wLjQgc3BlYyBzZWN0aW9uIDMuOC4xMC4K
KyAgICBHTHVpbnQgZ2V0TWlwbWFwTWF4TGV2ZWwoKSBjb25zdDsKKworICAgIC8vIFJldHVybnMg
dHJ1ZSBpZiBiYXNlIGxldmVsIGNoYW5nZWQuCisgICAgYm9vbCBzZXRCYXNlTGV2ZWwoR0x1aW50
IGJhc2VMZXZlbCk7CisgICAgdm9pZCBzZXRNYXhMZXZlbChHTHVpbnQgbWF4TGV2ZWwpOworCisg
ICAgYm9vbCBpc0N1YmVDb21wbGV0ZSgpIGNvbnN0OworICAgIGJvb2wgaXNTYW1wbGVyQ29tcGxl
dGUoY29uc3QgU2FtcGxlclN0YXRlICZzYW1wbGVyU3RhdGUsIGNvbnN0IENvbnRleHRTdGF0ZSAm
ZGF0YSkgY29uc3Q7CisKKyAgICBjb25zdCBJbWFnZURlc2MgJmdldEltYWdlRGVzYyhHTGVudW0g
dGFyZ2V0LCBzaXplX3QgbGV2ZWwpIGNvbnN0OworCisgICAgR0xlbnVtIGdldFRhcmdldCgpIGNv
bnN0IHsgcmV0dXJuIG1UYXJnZXQ7IH0KKyAgICBjb25zdCBTd2l6emxlU3RhdGUgJmdldFN3aXp6
bGVTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1Td2l6emxlU3RhdGU7IH0KKyAgICBjb25zdCBTYW1w
bGVyU3RhdGUgJmdldFNhbXBsZXJTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1TYW1wbGVyU3RhdGU7
IH0KKyAgICBHTGVudW0gZ2V0VXNhZ2UoKSBjb25zdCB7IHJldHVybiBtVXNhZ2U7IH0KKworICBw
cml2YXRlOgorICAgIC8vIFRleHR1cmUgbmVlZHMgYWNjZXNzIHRvIHRoZSBJbWFnZURlc2MgZnVu
Y3Rpb25zLgorICAgIGZyaWVuZCBjbGFzcyBUZXh0dXJlOworICAgIC8vIFRPRE8oam1hZGlsbCk6
IFJlbW92ZSBUZXh0dXJlR0wgZnJvbSBmcmllbmRzLgorICAgIGZyaWVuZCBjbGFzcyByeDo6VGV4
dHVyZUdMOworICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgVGV4dHVyZVN0YXRlICZh
LCBjb25zdCBUZXh0dXJlU3RhdGUgJmIpOworCisgICAgYm9vbCBjb21wdXRlU2FtcGxlckNvbXBs
ZXRlbmVzcyhjb25zdCBTYW1wbGVyU3RhdGUgJnNhbXBsZXJTdGF0ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnRleHRTdGF0ZSAmZGF0YSkgY29uc3Q7Cisg
ICAgYm9vbCBjb21wdXRlTWlwbWFwQ29tcGxldGVuZXNzKCkgY29uc3Q7CisgICAgYm9vbCBjb21w
dXRlTGV2ZWxDb21wbGV0ZW5lc3MoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsKSBjb25zdDsK
KworICAgIEdMZW51bSBnZXRCYXNlSW1hZ2VUYXJnZXQoKSBjb25zdDsKKworICAgIHZvaWQgc2V0
SW1hZ2VEZXNjKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgSW1hZ2VEZXNjICZk
ZXNjKTsKKyAgICB2b2lkIHNldEltYWdlRGVzY0NoYWluKEdMdWludCBiYXNlbGV2ZWwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWF4TGV2ZWwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFeHRlbnRzIGJhc2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgRm9ybWF0ICZmb3JtYXQpOworICAgIHZvaWQgY2xlYXJJbWFnZURlc2MoR0xlbnVtIHRh
cmdldCwgc2l6ZV90IGxldmVsKTsKKyAgICB2b2lkIGNsZWFySW1hZ2VEZXNjcygpOworCisgICAg
Y29uc3QgR0xlbnVtIG1UYXJnZXQ7CisKKyAgICBTd2l6emxlU3RhdGUgbVN3aXp6bGVTdGF0ZTsK
KworICAgIFNhbXBsZXJTdGF0ZSBtU2FtcGxlclN0YXRlOworCisgICAgR0x1aW50IG1CYXNlTGV2
ZWw7CisgICAgR0x1aW50IG1NYXhMZXZlbDsKKworICAgIGJvb2wgbUltbXV0YWJsZUZvcm1hdDsK
KyAgICBHTHVpbnQgbUltbXV0YWJsZUxldmVsczsKKworICAgIC8vIEZyb20gR0xfQU5HTEVfdGV4
dHVyZV91c2FnZQorICAgIEdMZW51bSBtVXNhZ2U7CisKKyAgICBzdGQ6OnZlY3RvcjxJbWFnZURl
c2M+IG1JbWFnZURlc2NzOworCisgICAgc3RydWN0IFNhbXBsZXJDb21wbGV0ZW5lc3NDYWNoZQor
ICAgIHsKKyAgICAgICAgU2FtcGxlckNvbXBsZXRlbmVzc0NhY2hlKCk7CisKKyAgICAgICAgYm9v
bCBjYWNoZVZhbGlkOworCisgICAgICAgIC8vIEFsbCB2YWx1ZXMgdGhhdCBhZmZlY3Qgc2FtcGxl
ciBjb21wbGV0ZW5lc3MgdGhhdCBhcmUgbm90IHN0b3JlZCB3aXRoaW4KKyAgICAgICAgLy8gdGhl
IHRleHR1cmUgaXRzZWxmCisgICAgICAgIFNhbXBsZXJTdGF0ZSBzYW1wbGVyU3RhdGU7CisgICAg
ICAgIGJvb2wgZmlsdGVyYWJsZTsKKyAgICAgICAgR0xpbnQgY2xpZW50VmVyc2lvbjsKKyAgICAg
ICAgYm9vbCBzdXBwb3J0c05QT1Q7CisKKyAgICAgICAgLy8gUmVzdWx0IG9mIHRoZSBzYW1wbGVy
IGNvbXBsZXRlbmVzcyB3aXRoIHRoZSBhYm92ZSBwYXJhbWV0ZXJzCisgICAgICAgIGJvb2wgc2Ft
cGxlckNvbXBsZXRlOworICAgIH07CisgICAgbXV0YWJsZSBTYW1wbGVyQ29tcGxldGVuZXNzQ2Fj
aGUgbUNvbXBsZXRlbmVzc0NhY2hlOworfTsKKworYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRleHR1
cmVTdGF0ZSAmYSwgY29uc3QgVGV4dHVyZVN0YXRlICZiKTsKK2Jvb2wgb3BlcmF0b3IhPShjb25z
dCBUZXh0dXJlU3RhdGUgJmEsIGNvbnN0IFRleHR1cmVTdGF0ZSAmYik7CisKIGNsYXNzIFRleHR1
cmUgZmluYWwgOiBwdWJsaWMgZWdsOjpJbWFnZVNpYmxpbmcsCiAgICAgICAgICAgICAgICAgICAg
ICAgcHVibGljIEZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdCwKICAgICAgICAgICAgICAgICAg
ICAgICBwdWJsaWMgTGFiZWxlZE9iamVjdAogewogICBwdWJsaWM6Ci0gICAgVGV4dHVyZShyeDo6
VGV4dHVyZUltcGwgKmltcGwsIEdMdWludCBpZCwgR0xlbnVtIHRhcmdldCk7CisgICAgVGV4dHVy
ZShyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwgR0x1aW50IGlkLCBHTGVudW0gdGFyZ2V0KTsK
ICAgICB+VGV4dHVyZSgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRMYWJlbChjb25zdCBzdGQ6
OnN0cmluZyAmbGFiZWwpIG92ZXJyaWRlOwpAQCAtMTEwLDEyICsyMzcsOSBAQCBjbGFzcyBUZXh0
dXJlIGZpbmFsIDogcHVibGljIGVnbDo6SW1hZ2VTCiAgICAgc2l6ZV90IGdldFdpZHRoKEdMZW51
bSB0YXJnZXQsIHNpemVfdCBsZXZlbCkgY29uc3Q7CiAgICAgc2l6ZV90IGdldEhlaWdodChHTGVu
dW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwpIGNvbnN0OwogICAgIHNpemVfdCBnZXREZXB0aChHTGVu
dW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwpIGNvbnN0OwotICAgIEdMZW51bSBnZXRJbnRlcm5hbEZv
cm1hdChHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwpIGNvbnN0OworICAgIGNvbnN0IEZvcm1h
dCAmZ2V0Rm9ybWF0KEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCkgY29uc3Q7CiAKLSAgICBi
b29sIGlzU2FtcGxlckNvbXBsZXRlKGNvbnN0IFNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlLCBj
b25zdCBEYXRhICZkYXRhKSBjb25zdDsKICAgICBib29sIGlzTWlwbWFwQ29tcGxldGUoKSBjb25z
dDsKLSAgICBib29sIGlzQ3ViZUNvbXBsZXRlKCkgY29uc3Q7Ci0gICAgc2l6ZV90IGdldE1pcENv
bXBsZXRlTGV2ZWxzKCkgY29uc3Q7CiAKICAgICBFcnJvciBzZXRJbWFnZShjb25zdCBQaXhlbFVu
cGFja1N0YXRlICZ1bnBhY2tTdGF0ZSwKICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0
LApAQCAtMTU5LDg3ICsyODMsMTEyIEBAIGNsYXNzIFRleHR1cmUgZmluYWwgOiBwdWJsaWMgZWds
OjpJbWFnZVMKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVjdGFuZ2xlICZzb3VyY2VB
cmVhLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlciAqc291cmNlKTsK
IAotICAgIEVycm9yIHNldFN0b3JhZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVscywgR0xl
bnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBFeHRlbnRzICZzaXplKTsKKyAgICBFcnJvciBjb3B5
VGV4dHVyZShHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tGbGlwWSwKKyAgICAg
ICAgICAgICAgICAgICAgICBib29sIHVucGFja1ByZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCB1bnBhY2tVbm11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVGV4dHVyZSAqc291cmNlKTsKKyAgICBFcnJvciBjb3B5U3ViVGV4dHVyZShj
b25zdCBPZmZzZXQgJmRlc3RPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5w
YWNrRmxpcFksCisgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tQcmVtdWx0aXBs
eUFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrVW5tdWx0aXBseUFs
cGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRleHR1cmUgKnNvdXJjZSk7Cisg
ICAgRXJyb3IgY29weUNvbXByZXNzZWRUZXh0dXJlKGNvbnN0IFRleHR1cmUgKnNvdXJjZSk7CisK
KyAgICBFcnJvciBzZXRTdG9yYWdlKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbGV2ZWxzLCBHTGVu
dW0gaW50ZXJuYWxGb3JtYXQsIGNvbnN0IEV4dGVudHMgJnNpemUpOwogCiAgICAgRXJyb3Igc2V0
RUdMSW1hZ2VUYXJnZXQoR0xlbnVtIHRhcmdldCwgZWdsOjpJbWFnZSAqaW1hZ2VUYXJnZXQpOwog
Ci0gICAgRXJyb3IgZ2VuZXJhdGVNaXBtYXBzKCk7CisgICAgRXJyb3IgZ2VuZXJhdGVNaXBtYXAo
KTsKIAogICAgIGVnbDo6U3VyZmFjZSAqZ2V0Qm91bmRTdXJmYWNlKCkgY29uc3Q7CisgICAgZWds
OjpTdHJlYW0gKmdldEJvdW5kU3RyZWFtKCkgY29uc3Q7CiAKLSAgICByeDo6VGV4dHVyZUltcGwg
KmdldEltcGxlbWVudGF0aW9uKCkgeyByZXR1cm4gbVRleHR1cmU7IH0KLSAgICBjb25zdCByeDo6
VGV4dHVyZUltcGwgKmdldEltcGxlbWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbVRleHR1cmU7
IH0KKyAgICByeDo6VGV4dHVyZUltcGwgKmdldEltcGxlbWVudGF0aW9uKCkgY29uc3QgeyByZXR1
cm4gbVRleHR1cmU7IH0KIAogICAgIC8vIEZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdCBpbXBs
ZW1lbnRhdGlvbgogICAgIEV4dGVudHMgZ2V0QXR0YWNobWVudFNpemUoY29uc3QgRnJhbWVidWZm
ZXJBdHRhY2htZW50OjpUYXJnZXQgJnRhcmdldCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgR0xlbnVt
IGdldEF0dGFjaG1lbnRJbnRlcm5hbEZvcm1hdChjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6
OlRhcmdldCAmdGFyZ2V0KSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBGb3JtYXQgJmdldEF0
dGFjaG1lbnRGb3JtYXQoY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50OjpUYXJnZXQgJnRhcmdl
dCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgR0xzaXplaSBnZXRBdHRhY2htZW50U2FtcGxlcyhjb25z
dCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OlRhcmdldCAmdGFyZ2V0KSBjb25zdCBvdmVycmlkZTsK
IAogICAgIHZvaWQgb25BdHRhY2goKSBvdmVycmlkZTsKICAgICB2b2lkIG9uRGV0YWNoKCkgb3Zl
cnJpZGU7CiAgICAgR0x1aW50IGdldElkKCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICBlbnVtIERp
cnR5Qml0VHlwZQorICAgIHsKKyAgICAgICAgLy8gU2FtcGxlciBzdGF0ZQorICAgICAgICBESVJU
WV9CSVRfTUlOX0ZJTFRFUiwKKyAgICAgICAgRElSVFlfQklUX01BR19GSUxURVIsCisgICAgICAg
IERJUlRZX0JJVF9XUkFQX1MsCisgICAgICAgIERJUlRZX0JJVF9XUkFQX1QsCisgICAgICAgIERJ
UlRZX0JJVF9XUkFQX1IsCisgICAgICAgIERJUlRZX0JJVF9NQVhfQU5JU09UUk9QWSwKKyAgICAg
ICAgRElSVFlfQklUX01JTl9MT0QsCisgICAgICAgIERJUlRZX0JJVF9NQVhfTE9ELAorICAgICAg
ICBESVJUWV9CSVRfQ09NUEFSRV9NT0RFLAorICAgICAgICBESVJUWV9CSVRfQ09NUEFSRV9GVU5D
LAorCisgICAgICAgIC8vIFRleHR1cmUgc3RhdGUKKyAgICAgICAgRElSVFlfQklUX1NXSVpaTEVf
UkVELAorICAgICAgICBESVJUWV9CSVRfU1dJWlpMRV9HUkVFTiwKKyAgICAgICAgRElSVFlfQklU
X1NXSVpaTEVfQkxVRSwKKyAgICAgICAgRElSVFlfQklUX1NXSVpaTEVfQUxQSEEsCisgICAgICAg
IERJUlRZX0JJVF9CQVNFX0xFVkVMLAorICAgICAgICBESVJUWV9CSVRfTUFYX0xFVkVMLAorCisg
ICAgICAgIC8vIE1pc2MKKyAgICAgICAgRElSVFlfQklUX0xBQkVMLAorICAgICAgICBESVJUWV9C
SVRfVVNBR0UsCisKKyAgICAgICAgRElSVFlfQklUX0NPVU5ULAorICAgIH07CisgICAgdXNpbmcg
RGlydHlCaXRzID0gc3RkOjpiaXRzZXQ8RElSVFlfQklUX0NPVU5UPjsKKworICAgIHZvaWQgc3lu
Y0ltcGxTdGF0ZSgpOworICAgIGJvb2wgaGFzQW55RGlydHlCaXQoKSBjb25zdCB7IHJldHVybiBt
RGlydHlCaXRzLmFueSgpOyB9CisKICAgcHJpdmF0ZToKLSAgICByeDo6RnJhbWVidWZmZXJBdHRh
Y2htZW50T2JqZWN0SW1wbCAqZ2V0QXR0YWNobWVudEltcGwoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtVGV4dHVyZTsgfQorICAgIHJ4OjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3RJbXBs
ICpnZXRBdHRhY2htZW50SW1wbCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gQU5HTEUtb25s
eSBtZXRob2QsIHVzZWQgaW50ZXJuYWxseQogICAgIGZyaWVuZCBjbGFzcyBlZ2w6OlN1cmZhY2U7
CiAgICAgdm9pZCBiaW5kVGV4SW1hZ2VGcm9tU3VyZmFjZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2Up
OwogICAgIHZvaWQgcmVsZWFzZVRleEltYWdlRnJvbVN1cmZhY2UoKTsKIAorICAgIC8vIEFOR0xF
LW9ubHkgbWV0aG9kcywgdXNlZCBpbnRlcm5hbGx5CisgICAgZnJpZW5kIGNsYXNzIGVnbDo6U3Ry
ZWFtOworICAgIHZvaWQgYmluZFN0cmVhbShlZ2w6OlN0cmVhbSAqc3RyZWFtKTsKKyAgICB2b2lk
IHJlbGVhc2VTdHJlYW0oKTsKKyAgICB2b2lkIGFjcXVpcmVJbWFnZUZyb21TdHJlYW0oY29uc3Qg
ZWdsOjpTdHJlYW06OkdMVGV4dHVyZURlc2NyaXB0aW9uICZkZXNjKTsKKyAgICB2b2lkIHJlbGVh
c2VJbWFnZUZyb21TdHJlYW0oKTsKKworICAgIFRleHR1cmVTdGF0ZSBtU3RhdGU7CisgICAgRGly
dHlCaXRzIG1EaXJ0eUJpdHM7CiAgICAgcng6OlRleHR1cmVJbXBsICptVGV4dHVyZTsKIAogICAg
IHN0ZDo6c3RyaW5nIG1MYWJlbDsKIAotICAgIFRleHR1cmVTdGF0ZSBtVGV4dHVyZVN0YXRlOwot
Ci0gICAgR0xlbnVtIG1UYXJnZXQ7Ci0KLSAgICBzdHJ1Y3QgSW1hZ2VEZXNjCi0gICAgewotICAg
ICAgICBFeHRlbnRzIHNpemU7Ci0gICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdDsKLQotICAg
ICAgICBJbWFnZURlc2MoKTsKLSAgICAgICAgSW1hZ2VEZXNjKGNvbnN0IEV4dGVudHMgJnNpemUs
IEdMZW51bSBpbnRlcm5hbEZvcm1hdCk7Ci0gICAgfTsKLQotICAgIEdMZW51bSBnZXRCYXNlSW1h
Z2VUYXJnZXQoKSBjb25zdDsKLQotICAgIGJvb2wgY29tcHV0ZVNhbXBsZXJDb21wbGV0ZW5lc3Mo
Y29uc3QgU2FtcGxlclN0YXRlICZzYW1wbGVyU3RhdGUsIGNvbnN0IERhdGEgJmRhdGEpIGNvbnN0
OwotICAgIGJvb2wgY29tcHV0ZU1pcG1hcENvbXBsZXRlbmVzcygpIGNvbnN0OwotICAgIGJvb2wg
Y29tcHV0ZUxldmVsQ29tcGxldGVuZXNzKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCkgY29u
c3Q7Ci0KLSAgICBjb25zdCBJbWFnZURlc2MgJmdldEltYWdlRGVzYyhHTGVudW0gdGFyZ2V0LCBz
aXplX3QgbGV2ZWwpIGNvbnN0OwotICAgIHZvaWQgc2V0SW1hZ2VEZXNjKEdMZW51bSB0YXJnZXQs
IHNpemVfdCBsZXZlbCwgY29uc3QgSW1hZ2VEZXNjICZkZXNjKTsKLSAgICB2b2lkIHNldEltYWdl
RGVzY0NoYWluKHNpemVfdCBsZXZlbHMsIEV4dGVudHMgYmFzZVNpemUsIEdMZW51bSBzaXplZElu
dGVybmFsRm9ybWF0KTsKLSAgICB2b2lkIGNsZWFySW1hZ2VEZXNjKEdMZW51bSB0YXJnZXQsIHNp
emVfdCBsZXZlbCk7Ci0gICAgdm9pZCBjbGVhckltYWdlRGVzY3MoKTsKICAgICB2b2lkIHJlbGVh
c2VUZXhJbWFnZUludGVybmFsKCk7CiAKLSAgICBzdGQ6OnZlY3RvcjxJbWFnZURlc2M+IG1JbWFn
ZURlc2NzOwotCi0gICAgc3RydWN0IFNhbXBsZXJDb21wbGV0ZW5lc3NDYWNoZQotICAgIHsKLSAg
ICAgICAgU2FtcGxlckNvbXBsZXRlbmVzc0NhY2hlKCk7Ci0KLSAgICAgICAgYm9vbCBjYWNoZVZh
bGlkOwotCi0gICAgICAgIC8vIEFsbCB2YWx1ZXMgdGhhdCBhZmZlY3Qgc2FtcGxlciBjb21wbGV0
ZW5lc3MgdGhhdCBhcmUgbm90IHN0b3JlZCB3aXRoaW4KLSAgICAgICAgLy8gdGhlIHRleHR1cmUg
aXRzZWxmCi0gICAgICAgIFNhbXBsZXJTdGF0ZSBzYW1wbGVyU3RhdGU7Ci0gICAgICAgIGJvb2wg
ZmlsdGVyYWJsZTsKLSAgICAgICAgR0xpbnQgY2xpZW50VmVyc2lvbjsKLSAgICAgICAgYm9vbCBz
dXBwb3J0c05QT1Q7Ci0KLSAgICAgICAgLy8gUmVzdWx0IG9mIHRoZSBzYW1wbGVyIGNvbXBsZXRl
bmVzcyB3aXRoIHRoZSBhYm92ZSBwYXJhbWV0ZXJzCi0gICAgICAgIGJvb2wgc2FtcGxlckNvbXBs
ZXRlOwotICAgIH07Ci0gICAgbXV0YWJsZSBTYW1wbGVyQ29tcGxldGVuZXNzQ2FjaGUgbUNvbXBs
ZXRlbmVzc0NhY2hlOwotCiAgICAgZWdsOjpTdXJmYWNlICptQm91bmRTdXJmYWNlOworICAgIGVn
bDo6U3RyZWFtICptQm91bmRTdHJlYW07CiB9OwogCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFRleHR1cmVTdGF0ZSAmYSwgY29uc3QgVGV4dHVyZVN0YXRlICZiKQoreworICAgIHJldHVy
biBhLm1Td2l6emxlU3RhdGUgPT0gYi5tU3dpenpsZVN0YXRlICYmIGEubVNhbXBsZXJTdGF0ZSA9
PSBiLm1TYW1wbGVyU3RhdGUgJiYKKyAgICAgICAgICAgYS5tQmFzZUxldmVsID09IGIubUJhc2VM
ZXZlbCAmJiBhLm1NYXhMZXZlbCA9PSBiLm1NYXhMZXZlbCAmJgorICAgICAgICAgICBhLm1JbW11
dGFibGVGb3JtYXQgPT0gYi5tSW1tdXRhYmxlRm9ybWF0ICYmIGEubUltbXV0YWJsZUxldmVscyA9
PSBiLm1JbW11dGFibGVMZXZlbHMgJiYKKyAgICAgICAgICAgYS5tVXNhZ2UgPT0gYi5tVXNhZ2U7
Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVGV4dHVyZVN0YXRlICZhLCBjb25z
dCBUZXh0dXJlU3RhdGUgJmIpCit7CisgICAgcmV0dXJuICEoYSA9PSBiKTsKK30KIH0KIAogI2Vu
ZGlmICAgLy8gTElCQU5HTEVfVEVYVFVSRV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL1RyYW5zZm9ybUZlZWRiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVHJhbnNmb3JtRmVlZGJhY2suY3BwCShy
ZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
VHJhbnNmb3JtRmVlZGJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04LDM4ICs4LDU5IEBACiAK
ICNpbmNsdWRlICJsaWJBTkdMRS9CdWZmZXIuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9DYXBzLmgi
CisjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dFN0YXRlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
UHJvZ3JhbS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0ltcGxGYWN0b3J5LmgiCisj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvR0xJbXBsRmFjdG9yeS5oIgogI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL1RyYW5zZm9ybUZlZWRiYWNrSW1wbC5oIgogCiBuYW1lc3BhY2UgZ2wK
IHsKIAotVHJhbnNmb3JtRmVlZGJhY2s6OlRyYW5zZm9ybUZlZWRiYWNrKHJ4OjpJbXBsRmFjdG9y
eSAqaW1wbEZhY3RvcnksIEdMdWludCBpZCwgY29uc3QgQ2FwcyAmY2FwcykKLSAgICA6IFJlZkNv
dW50T2JqZWN0KGlkKSwKLSAgICAgIG1JbXBsZW1lbnRhdGlvbihpbXBsRmFjdG9yeS0+Y3JlYXRl
VHJhbnNmb3JtRmVlZGJhY2soKSksCi0gICAgICBtTGFiZWwoKSwKK1RyYW5zZm9ybUZlZWRiYWNr
U3RhdGU6OlRyYW5zZm9ybUZlZWRiYWNrU3RhdGUoc2l6ZV90IG1heEluZGV4ZWRCdWZmZXJzKQor
ICAgIDogbUxhYmVsKCksCiAgICAgICBtQWN0aXZlKGZhbHNlKSwKICAgICAgIG1QcmltaXRpdmVN
b2RlKEdMX05PTkUpLAogICAgICAgbVBhdXNlZChmYWxzZSksCiAgICAgICBtUHJvZ3JhbShudWxs
cHRyKSwKICAgICAgIG1HZW5lcmljQnVmZmVyKCksCi0gICAgICBtSW5kZXhlZEJ1ZmZlcnMoY2Fw
cy5tYXhUcmFuc2Zvcm1GZWVkYmFja1NlcGFyYXRlQXR0cmlidXRlcykKKyAgICAgIG1JbmRleGVk
QnVmZmVycyhtYXhJbmRleGVkQnVmZmVycykKK3sKK30KKworY29uc3QgQmluZGluZ1BvaW50ZXI8
QnVmZmVyPiAmVHJhbnNmb3JtRmVlZGJhY2tTdGF0ZTo6Z2V0R2VuZXJpY0J1ZmZlcigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1HZW5lcmljQnVmZmVyOworfQorCitjb25zdCBPZmZzZXRCaW5kaW5n
UG9pbnRlcjxCdWZmZXI+ICZUcmFuc2Zvcm1GZWVkYmFja1N0YXRlOjpnZXRJbmRleGVkQnVmZmVy
KHNpemVfdCBpZHgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1JbmRleGVkQnVmZmVyc1tpZHhdOwor
fQorCitjb25zdCBzdGQ6OnZlY3RvcjxPZmZzZXRCaW5kaW5nUG9pbnRlcjxCdWZmZXI+PiAmVHJh
bnNmb3JtRmVlZGJhY2tTdGF0ZTo6Z2V0SW5kZXhlZEJ1ZmZlcnMoKSBjb25zdAoreworICAgIHJl
dHVybiBtSW5kZXhlZEJ1ZmZlcnM7Cit9CisKK1RyYW5zZm9ybUZlZWRiYWNrOjpUcmFuc2Zvcm1G
ZWVkYmFjayhyeDo6R0xJbXBsRmFjdG9yeSAqaW1wbEZhY3RvcnksIEdMdWludCBpZCwgY29uc3Qg
Q2FwcyAmY2FwcykKKyAgICA6IFJlZkNvdW50T2JqZWN0KGlkKSwKKyAgICAgIG1TdGF0ZShjYXBz
Lm1heFRyYW5zZm9ybUZlZWRiYWNrU2VwYXJhdGVBdHRyaWJ1dGVzKSwKKyAgICAgIG1JbXBsZW1l
bnRhdGlvbihpbXBsRmFjdG9yeS0+Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2sobVN0YXRlKSkKIHsK
ICAgICBBU1NFUlQobUltcGxlbWVudGF0aW9uICE9IG51bGxwdHIpOwogfQogCiBUcmFuc2Zvcm1G
ZWVkYmFjazo6flRyYW5zZm9ybUZlZWRiYWNrKCkKIHsKLSAgICBpZiAobVByb2dyYW0pCisgICAg
aWYgKG1TdGF0ZS5tUHJvZ3JhbSkKICAgICB7Ci0gICAgICAgIG1Qcm9ncmFtLT5yZWxlYXNlKCk7
Ci0gICAgICAgIG1Qcm9ncmFtID0gbnVsbHB0cjsKKyAgICAgICAgbVN0YXRlLm1Qcm9ncmFtLT5y
ZWxlYXNlKCk7CisgICAgICAgIG1TdGF0ZS5tUHJvZ3JhbSA9IG51bGxwdHI7CiAgICAgfQotICAg
IG1HZW5lcmljQnVmZmVyLnNldChudWxscHRyKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1JbmRleGVkQnVmZmVycy5zaXplKCk7IGkrKykKKyAgICBtU3RhdGUubUdlbmVyaWNCdWZmZXIu
c2V0KG51bGxwdHIpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVN0YXRlLm1JbmRleGVk
QnVmZmVycy5zaXplKCk7IGkrKykKICAgICB7Ci0gICAgICAgIG1JbmRleGVkQnVmZmVyc1tpXS5z
ZXQobnVsbHB0cik7CisgICAgICAgIG1TdGF0ZS5tSW5kZXhlZEJ1ZmZlcnNbaV0uc2V0KG51bGxw
dHIpOwogICAgIH0KIAogICAgIFNhZmVEZWxldGUobUltcGxlbWVudGF0aW9uKTsKQEAgLTQ3LDEy
OSArNjgsMTI5IEBAIFRyYW5zZm9ybUZlZWRiYWNrOjp+VHJhbnNmb3JtRmVlZGJhY2soKQogCiB2
b2lkIFRyYW5zZm9ybUZlZWRiYWNrOjpzZXRMYWJlbChjb25zdCBzdGQ6OnN0cmluZyAmbGFiZWwp
CiB7Ci0gICAgbUxhYmVsID0gbGFiZWw7CisgICAgbVN0YXRlLm1MYWJlbCA9IGxhYmVsOwogfQog
CiBjb25zdCBzdGQ6OnN0cmluZyAmVHJhbnNmb3JtRmVlZGJhY2s6OmdldExhYmVsKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbUxhYmVsOworICAgIHJldHVybiBtU3RhdGUubUxhYmVsOwogfQogCiB2
b2lkIFRyYW5zZm9ybUZlZWRiYWNrOjpiZWdpbihHTGVudW0gcHJpbWl0aXZlTW9kZSwgUHJvZ3Jh
bSAqcHJvZ3JhbSkKIHsKLSAgICBtQWN0aXZlID0gdHJ1ZTsKLSAgICBtUHJpbWl0aXZlTW9kZSA9
IHByaW1pdGl2ZU1vZGU7Ci0gICAgbVBhdXNlZCA9IGZhbHNlOworICAgIG1TdGF0ZS5tQWN0aXZl
ICAgICAgICA9IHRydWU7CisgICAgbVN0YXRlLm1QcmltaXRpdmVNb2RlID0gcHJpbWl0aXZlTW9k
ZTsKKyAgICBtU3RhdGUubVBhdXNlZCAgICAgICAgPSBmYWxzZTsKICAgICBtSW1wbGVtZW50YXRp
b24tPmJlZ2luKHByaW1pdGl2ZU1vZGUpOwogICAgIGJpbmRQcm9ncmFtKHByb2dyYW0pOwogfQog
CiB2b2lkIFRyYW5zZm9ybUZlZWRiYWNrOjplbmQoKQogewotICAgIG1BY3RpdmUgPSBmYWxzZTsK
LSAgICBtUHJpbWl0aXZlTW9kZSA9IEdMX05PTkU7Ci0gICAgbVBhdXNlZCA9IGZhbHNlOworICAg
IG1TdGF0ZS5tQWN0aXZlICAgICAgICA9IGZhbHNlOworICAgIG1TdGF0ZS5tUHJpbWl0aXZlTW9k
ZSA9IEdMX05PTkU7CisgICAgbVN0YXRlLm1QYXVzZWQgICAgICAgID0gZmFsc2U7CiAgICAgbUlt
cGxlbWVudGF0aW9uLT5lbmQoKTsKLSAgICBpZiAobVByb2dyYW0pCisgICAgaWYgKG1TdGF0ZS5t
UHJvZ3JhbSkKICAgICB7Ci0gICAgICAgIG1Qcm9ncmFtLT5yZWxlYXNlKCk7Ci0gICAgICAgIG1Q
cm9ncmFtID0gbnVsbHB0cjsKKyAgICAgICAgbVN0YXRlLm1Qcm9ncmFtLT5yZWxlYXNlKCk7Cisg
ICAgICAgIG1TdGF0ZS5tUHJvZ3JhbSA9IG51bGxwdHI7CiAgICAgfQogfQogCiB2b2lkIFRyYW5z
Zm9ybUZlZWRiYWNrOjpwYXVzZSgpCiB7Ci0gICAgbVBhdXNlZCA9IHRydWU7CisgICAgbVN0YXRl
Lm1QYXVzZWQgPSB0cnVlOwogICAgIG1JbXBsZW1lbnRhdGlvbi0+cGF1c2UoKTsKIH0KIAogdm9p
ZCBUcmFuc2Zvcm1GZWVkYmFjazo6cmVzdW1lKCkKIHsKLSAgICBtUGF1c2VkID0gZmFsc2U7Cisg
ICAgbVN0YXRlLm1QYXVzZWQgPSBmYWxzZTsKICAgICBtSW1wbGVtZW50YXRpb24tPnJlc3VtZSgp
OwogfQogCiBib29sIFRyYW5zZm9ybUZlZWRiYWNrOjppc0FjdGl2ZSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1BY3RpdmU7CisgICAgcmV0dXJuIG1TdGF0ZS5tQWN0aXZlOwogfQogCiBib29sIFRy
YW5zZm9ybUZlZWRiYWNrOjppc1BhdXNlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1QYXVzZWQ7
CisgICAgcmV0dXJuIG1TdGF0ZS5tUGF1c2VkOwogfQogCiBHTGVudW0gVHJhbnNmb3JtRmVlZGJh
Y2s6OmdldFByaW1pdGl2ZU1vZGUoKSBjb25zdAogewotICAgIHJldHVybiBtUHJpbWl0aXZlTW9k
ZTsKKyAgICByZXR1cm4gbVN0YXRlLm1QcmltaXRpdmVNb2RlOwogfQogCiB2b2lkIFRyYW5zZm9y
bUZlZWRiYWNrOjpiaW5kUHJvZ3JhbShQcm9ncmFtICpwcm9ncmFtKQogewotICAgIGlmIChtUHJv
Z3JhbSAhPSBwcm9ncmFtKQorICAgIGlmIChtU3RhdGUubVByb2dyYW0gIT0gcHJvZ3JhbSkKICAg
ICB7Ci0gICAgICAgIGlmIChtUHJvZ3JhbSAhPSBudWxscHRyKQorICAgICAgICBpZiAobVN0YXRl
Lm1Qcm9ncmFtICE9IG51bGxwdHIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1Qcm9ncmFtLT5y
ZWxlYXNlKCk7CisgICAgICAgICAgICBtU3RhdGUubVByb2dyYW0tPnJlbGVhc2UoKTsKICAgICAg
ICAgfQotICAgICAgICBtUHJvZ3JhbSA9IHByb2dyYW07Ci0gICAgICAgIGlmIChtUHJvZ3JhbSAh
PSBudWxscHRyKQorICAgICAgICBtU3RhdGUubVByb2dyYW0gPSBwcm9ncmFtOworICAgICAgICBp
ZiAobVN0YXRlLm1Qcm9ncmFtICE9IG51bGxwdHIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1Q
cm9ncmFtLT5hZGRSZWYoKTsKKyAgICAgICAgICAgIG1TdGF0ZS5tUHJvZ3JhbS0+YWRkUmVmKCk7
CiAgICAgICAgIH0KICAgICB9CiB9CiAKIGJvb2wgVHJhbnNmb3JtRmVlZGJhY2s6Omhhc0JvdW5k
UHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSkgY29uc3QKIHsKLSAgICByZXR1cm4gbVByb2dyYW0gIT0g
bnVsbHB0ciAmJiBtUHJvZ3JhbS0+aWQoKSA9PSBwcm9ncmFtOworICAgIHJldHVybiBtU3RhdGUu
bVByb2dyYW0gIT0gbnVsbHB0ciAmJiBtU3RhdGUubVByb2dyYW0tPmlkKCkgPT0gcHJvZ3JhbTsK
IH0KIAogdm9pZCBUcmFuc2Zvcm1GZWVkYmFjazo6YmluZEdlbmVyaWNCdWZmZXIoQnVmZmVyICpi
dWZmZXIpCiB7Ci0gICAgbUdlbmVyaWNCdWZmZXIuc2V0KGJ1ZmZlcik7Ci0gICAgbUltcGxlbWVu
dGF0aW9uLT5iaW5kR2VuZXJpY0J1ZmZlcihtR2VuZXJpY0J1ZmZlcik7CisgICAgbVN0YXRlLm1H
ZW5lcmljQnVmZmVyLnNldChidWZmZXIpOworICAgIG1JbXBsZW1lbnRhdGlvbi0+YmluZEdlbmVy
aWNCdWZmZXIobVN0YXRlLm1HZW5lcmljQnVmZmVyKTsKIH0KIAogdm9pZCBUcmFuc2Zvcm1GZWVk
YmFjazo6ZGV0YWNoQnVmZmVyKEdMdWludCBidWZmZXJOYW1lKQogewotICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMDsgaW5kZXggPCBtSW5kZXhlZEJ1ZmZlcnMuc2l6ZSgpOyBpbmRleCsrKQorICAg
IGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtU3RhdGUubUluZGV4ZWRCdWZmZXJzLnNp
emUoKTsgaW5kZXgrKykKICAgICB7Ci0gICAgICAgIGlmIChtSW5kZXhlZEJ1ZmZlcnNbaW5kZXhd
LmlkKCkgPT0gYnVmZmVyTmFtZSkKKyAgICAgICAgaWYgKG1TdGF0ZS5tSW5kZXhlZEJ1ZmZlcnNb
aW5kZXhdLmlkKCkgPT0gYnVmZmVyTmFtZSkKICAgICAgICAgewotICAgICAgICAgICAgbUluZGV4
ZWRCdWZmZXJzW2luZGV4XS5zZXQobnVsbHB0cik7Ci0gICAgICAgICAgICBtSW1wbGVtZW50YXRp
b24tPmJpbmRJbmRleGVkQnVmZmVyKGluZGV4LCBtSW5kZXhlZEJ1ZmZlcnNbaW5kZXhdKTsKKyAg
ICAgICAgICAgIG1TdGF0ZS5tSW5kZXhlZEJ1ZmZlcnNbaW5kZXhdLnNldChudWxscHRyKTsKKyAg
ICAgICAgICAgIG1JbXBsZW1lbnRhdGlvbi0+YmluZEluZGV4ZWRCdWZmZXIoaW5kZXgsIG1TdGF0
ZS5tSW5kZXhlZEJ1ZmZlcnNbaW5kZXhdKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICht
R2VuZXJpY0J1ZmZlci5pZCgpID09IGJ1ZmZlck5hbWUpCisgICAgaWYgKG1TdGF0ZS5tR2VuZXJp
Y0J1ZmZlci5pZCgpID09IGJ1ZmZlck5hbWUpCiAgICAgewotICAgICAgICBtR2VuZXJpY0J1ZmZl
ci5zZXQobnVsbHB0cik7Ci0gICAgICAgIG1JbXBsZW1lbnRhdGlvbi0+YmluZEdlbmVyaWNCdWZm
ZXIobUdlbmVyaWNCdWZmZXIpOworICAgICAgICBtU3RhdGUubUdlbmVyaWNCdWZmZXIuc2V0KG51
bGxwdHIpOworICAgICAgICBtSW1wbGVtZW50YXRpb24tPmJpbmRHZW5lcmljQnVmZmVyKG1TdGF0
ZS5tR2VuZXJpY0J1ZmZlcik7CiAgICAgfQogfQogCiBjb25zdCBCaW5kaW5nUG9pbnRlcjxCdWZm
ZXI+ICZUcmFuc2Zvcm1GZWVkYmFjazo6Z2V0R2VuZXJpY0J1ZmZlcigpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1HZW5lcmljQnVmZmVyOworICAgIHJldHVybiBtU3RhdGUubUdlbmVyaWNCdWZmZXI7
CiB9CiAKIHZvaWQgVHJhbnNmb3JtRmVlZGJhY2s6OmJpbmRJbmRleGVkQnVmZmVyKHNpemVfdCBp
bmRleCwgQnVmZmVyICpidWZmZXIsIHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplKQogewotICAg
IEFTU0VSVChpbmRleCA8IG1JbmRleGVkQnVmZmVycy5zaXplKCkpOwotICAgIG1JbmRleGVkQnVm
ZmVyc1tpbmRleF0uc2V0KGJ1ZmZlciwgb2Zmc2V0LCBzaXplKTsKLSAgICBtSW1wbGVtZW50YXRp
b24tPmJpbmRJbmRleGVkQnVmZmVyKGluZGV4LCBtSW5kZXhlZEJ1ZmZlcnNbaW5kZXhdKTsKKyAg
ICBBU1NFUlQoaW5kZXggPCBtU3RhdGUubUluZGV4ZWRCdWZmZXJzLnNpemUoKSk7CisgICAgbVN0
YXRlLm1JbmRleGVkQnVmZmVyc1tpbmRleF0uc2V0KGJ1ZmZlciwgb2Zmc2V0LCBzaXplKTsKKyAg
ICBtSW1wbGVtZW50YXRpb24tPmJpbmRJbmRleGVkQnVmZmVyKGluZGV4LCBtU3RhdGUubUluZGV4
ZWRCdWZmZXJzW2luZGV4XSk7CiB9CiAKIGNvbnN0IE9mZnNldEJpbmRpbmdQb2ludGVyPEJ1ZmZl
cj4gJlRyYW5zZm9ybUZlZWRiYWNrOjpnZXRJbmRleGVkQnVmZmVyKHNpemVfdCBpbmRleCkgY29u
c3QKIHsKLSAgICBBU1NFUlQoaW5kZXggPCBtSW5kZXhlZEJ1ZmZlcnMuc2l6ZSgpKTsKLSAgICBy
ZXR1cm4gbUluZGV4ZWRCdWZmZXJzW2luZGV4XTsKKyAgICBBU1NFUlQoaW5kZXggPCBtU3RhdGUu
bUluZGV4ZWRCdWZmZXJzLnNpemUoKSk7CisgICAgcmV0dXJuIG1TdGF0ZS5tSW5kZXhlZEJ1ZmZl
cnNbaW5kZXhdOwogfQogCiBzaXplX3QgVHJhbnNmb3JtRmVlZGJhY2s6OmdldEluZGV4ZWRCdWZm
ZXJDb3VudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1JbmRleGVkQnVmZmVycy5zaXplKCk7Cisg
ICAgcmV0dXJuIG1TdGF0ZS5tSW5kZXhlZEJ1ZmZlcnMuc2l6ZSgpOwogfQogCiByeDo6VHJhbnNm
b3JtRmVlZGJhY2tJbXBsICpUcmFuc2Zvcm1GZWVkYmFjazo6Z2V0SW1wbGVtZW50YXRpb24oKQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1RyYW5zZm9ybUZlZWRi
YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L1RyYW5zZm9ybUZlZWRiYWNrLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9UcmFuc2Zvcm1GZWVkYmFjay5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNiw3ICsxNiw3IEBACiAKIG5hbWVzcGFjZSByeAogewotY2xhc3MgSW1wbEZhY3Rvcnk7
CitjbGFzcyBHTEltcGxGYWN0b3J5OwogY2xhc3MgVHJhbnNmb3JtRmVlZGJhY2tJbXBsOwogfQog
CkBAIC0yNiwxMCArMjYsMzQgQEAgY2xhc3MgQnVmZmVyOwogc3RydWN0IENhcHM7CiBjbGFzcyBQ
cm9ncmFtOwogCitjbGFzcyBUcmFuc2Zvcm1GZWVkYmFja1N0YXRlIGZpbmFsIDogcHVibGljIGFu
Z2xlOjpOb25Db3B5YWJsZQoreworICBwdWJsaWM6CisgICAgVHJhbnNmb3JtRmVlZGJhY2tTdGF0
ZShzaXplX3QgbWF4SW5kZXhlZEJ1ZmZlcnMpOworCisgICAgY29uc3QgQmluZGluZ1BvaW50ZXI8
QnVmZmVyPiAmZ2V0R2VuZXJpY0J1ZmZlcigpIGNvbnN0OworICAgIGNvbnN0IE9mZnNldEJpbmRp
bmdQb2ludGVyPEJ1ZmZlcj4gJmdldEluZGV4ZWRCdWZmZXIoc2l6ZV90IGlkeCkgY29uc3Q7Cisg
ICAgY29uc3Qgc3RkOjp2ZWN0b3I8T2Zmc2V0QmluZGluZ1BvaW50ZXI8QnVmZmVyPj4gJmdldElu
ZGV4ZWRCdWZmZXJzKCkgY29uc3Q7CisKKyAgcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgVHJh
bnNmb3JtRmVlZGJhY2s7CisKKyAgICBzdGQ6OnN0cmluZyBtTGFiZWw7CisKKyAgICBib29sIG1B
Y3RpdmU7CisgICAgR0xlbnVtIG1QcmltaXRpdmVNb2RlOworICAgIGJvb2wgbVBhdXNlZDsKKwor
ICAgIFByb2dyYW0gKm1Qcm9ncmFtOworCisgICAgQmluZGluZ1BvaW50ZXI8QnVmZmVyPiBtR2Vu
ZXJpY0J1ZmZlcjsKKyAgICBzdGQ6OnZlY3RvcjxPZmZzZXRCaW5kaW5nUG9pbnRlcjxCdWZmZXI+
PiBtSW5kZXhlZEJ1ZmZlcnM7Cit9OworCiBjbGFzcyBUcmFuc2Zvcm1GZWVkYmFjayBmaW5hbCA6
IHB1YmxpYyBSZWZDb3VudE9iamVjdCwgcHVibGljIExhYmVsZWRPYmplY3QKIHsKICAgcHVibGlj
OgotICAgIFRyYW5zZm9ybUZlZWRiYWNrKHJ4OjpJbXBsRmFjdG9yeSAqaW1wbEZhY3RvcnksIEdM
dWludCBpZCwgY29uc3QgQ2FwcyAmY2Fwcyk7CisgICAgVHJhbnNmb3JtRmVlZGJhY2socng6OkdM
SW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LCBHTHVpbnQgaWQsIGNvbnN0IENhcHMgJmNhcHMpOwog
ICAgIHZpcnR1YWwgflRyYW5zZm9ybUZlZWRiYWNrKCk7CiAKICAgICB2b2lkIHNldExhYmVsKGNv
bnN0IHN0ZDo6c3RyaW5nICZsYWJlbCkgb3ZlcnJpZGU7CkBAIC02MSwxOCArODUsOCBAQCBjbGFz
cyBUcmFuc2Zvcm1GZWVkYmFjayBmaW5hbCA6IHB1YmxpYyBSCiAgIHByaXZhdGU6CiAgICAgdm9p
ZCBiaW5kUHJvZ3JhbShQcm9ncmFtICpwcm9ncmFtKTsKIAorICAgIFRyYW5zZm9ybUZlZWRiYWNr
U3RhdGUgbVN0YXRlOwogICAgIHJ4OjpUcmFuc2Zvcm1GZWVkYmFja0ltcGwqIG1JbXBsZW1lbnRh
dGlvbjsKLQotICAgIHN0ZDo6c3RyaW5nIG1MYWJlbDsKLQotICAgIGJvb2wgbUFjdGl2ZTsKLSAg
ICBHTGVudW0gbVByaW1pdGl2ZU1vZGU7Ci0gICAgYm9vbCBtUGF1c2VkOwotCi0gICAgUHJvZ3Jh
bSAqbVByb2dyYW07Ci0KLSAgICBCaW5kaW5nUG9pbnRlcjxCdWZmZXI+IG1HZW5lcmljQnVmZmVy
OwotICAgIHN0ZDo6dmVjdG9yPE9mZnNldEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4+IG1JbmRleGVk
QnVmZmVyczsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9UcmFuc2Zvcm1GZWVkYmFja191bml0dGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1RyYW5zZm9ybUZlZWRiYWNrX3VuaXR0ZXN0
LmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL1RyYW5zZm9ybUZlZWRiYWNrX3VuaXR0ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTQsMTcgKzE0LDE3IEBACiAjaW5jbHVkZSAidGVzdHMvYW5nbGVfdW5pdHRlc3RzX3V0aWxzLmgi
CiAKIHVzaW5nIDo6dGVzdGluZzo6XzsKK3VzaW5nIDo6dGVzdGluZzo6Z2V0OwogdXNpbmcgOjp0
ZXN0aW5nOjpSZXR1cm47CiB1c2luZyA6OnRlc3Rpbmc6OlNldEFyZ3VtZW50UG9pbnRlZTsKIAog
bmFtZXNwYWNlCiB7CiAKLWNsYXNzIE1vY2tGYWN0b3J5IDogcHVibGljIHJ4OjpOdWxsRmFjdG9y
eQorQUNUSU9OKENyZWF0ZU1vY2tUcmFuc2Zvcm1GZWVkYmFja0ltcGwpCiB7Ci0gIHB1YmxpYzoK
LSAgICBNT0NLX01FVEhPRDAoY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2ssIHJ4OjpUcmFuc2Zvcm1G
ZWVkYmFja0ltcGwgKigpKTsKLX07CisgICAgcmV0dXJuIG5ldyByeDo6TW9ja1RyYW5zZm9ybUZl
ZWRiYWNrSW1wbChhcmcwKTsKK30KIAogY2xhc3MgVHJhbnNmb3JtRmVlZGJhY2tUZXN0IDogcHVi
bGljIHRlc3Rpbmc6OlRlc3QKIHsKQEAgLTMzLDE3ICszMywxOCBAQCBjbGFzcyBUcmFuc2Zvcm1G
ZWVkYmFja1Rlc3QgOiBwdWJsaWMgdGVzCiAKICAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKICAg
ICB7Ci0gICAgICAgIG1JbXBsID0gbmV3IHJ4OjpNb2NrVHJhbnNmb3JtRmVlZGJhY2tJbXBsOwot
ICAgICAgICBFWFBFQ1RfQ0FMTChtTW9ja0ZhY3RvcnksIGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNr
KCkpCi0gICAgICAgICAgICAuV2lsbE9uY2UoUmV0dXJuKG1JbXBsKSkKKyAgICAgICAgRVhQRUNU
X0NBTEwobU1vY2tGYWN0b3J5LCBjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjayhfKSkKKyAgICAgICAg
ICAgIC5XaWxsT25jZShDcmVhdGVNb2NrVHJhbnNmb3JtRmVlZGJhY2tJbXBsKCkpCiAgICAgICAg
ICAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigpOwogCiAgICAgICAgIC8vIFNldCBhIHJlYXNvbmFi
bGUgbnVtYmVyIG9mIHRmIGF0dHJpYnV0ZXMKICAgICAgICAgbUNhcHMubWF4VHJhbnNmb3JtRmVl
ZGJhY2tTZXBhcmF0ZUF0dHJpYnV0ZXMgPSA4OwogCi0gICAgICAgIEVYUEVDVF9DQUxMKCptSW1w
bCwgZGVzdHJ1Y3RvcigpKTsKICAgICAgICAgbUZlZWRiYWNrID0gbmV3IGdsOjpUcmFuc2Zvcm1G
ZWVkYmFjaygmbU1vY2tGYWN0b3J5LCAxLCBtQ2Fwcyk7CiAgICAgICAgIG1GZWVkYmFjay0+YWRk
UmVmKCk7CisKKyAgICAgICAgbUltcGwgPSByeDo6R2V0SW1wbEFzPHJ4OjpNb2NrVHJhbnNmb3Jt
RmVlZGJhY2tJbXBsPihtRmVlZGJhY2spOworICAgICAgICBFWFBFQ1RfQ0FMTCgqbUltcGwsIGRl
c3RydWN0b3IoKSk7CiAgICAgfQogCiAgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCkBAIC01
OSw3ICs2MCw3IEBAIGNsYXNzIFRyYW5zZm9ybUZlZWRiYWNrVGVzdCA6IHB1YmxpYyB0ZXMKICAg
ICAgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXIobUltcGwpOwogICAgIH0KIAotICAg
IE1vY2tGYWN0b3J5IG1Nb2NrRmFjdG9yeTsKKyAgICByeDo6TW9ja0dMRmFjdG9yeSBtTW9ja0Zh
Y3Rvcnk7CiAgICAgcng6Ok1vY2tUcmFuc2Zvcm1GZWVkYmFja0ltcGwqIG1JbXBsOwogICAgIGds
OjpUcmFuc2Zvcm1GZWVkYmFjayogbUZlZWRiYWNrOwogICAgIGdsOjpDYXBzIG1DYXBzOwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1VuaWZvcm0uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Vbmlmb3JtLmNw
cAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL1VuaWZvcm0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNyArMTIxLDEyIEBAIGNvbnN0
IHVpbnQ4X3QgKkxpbmtlZFVuaWZvcm06OmdldERhdGFQdHIKIH0KIAogVW5pZm9ybUJsb2NrOjpV
bmlmb3JtQmxvY2soKQotICAgIDogaXNBcnJheShmYWxzZSksIGFycmF5RWxlbWVudCgwKSwgZGF0
YVNpemUoMCksIHZlcnRleFN0YXRpY1VzZShmYWxzZSksIGZyYWdtZW50U3RhdGljVXNlKGZhbHNl
KQorICAgIDogaXNBcnJheShmYWxzZSksCisgICAgICBhcnJheUVsZW1lbnQoMCksCisgICAgICBk
YXRhU2l6ZSgwKSwKKyAgICAgIHZlcnRleFN0YXRpY1VzZShmYWxzZSksCisgICAgICBmcmFnbWVu
dFN0YXRpY1VzZShmYWxzZSksCisgICAgICBjb21wdXRlU3RhdGljVXNlKGZhbHNlKQogewogfQog
CkBAIC0xMzEsNyArMTM2LDggQEAgVW5pZm9ybUJsb2NrOjpVbmlmb3JtQmxvY2soY29uc3Qgc3Rk
OjpzdAogICAgICAgYXJyYXlFbGVtZW50KGFycmF5RWxlbWVudEluKSwKICAgICAgIGRhdGFTaXpl
KDApLAogICAgICAgdmVydGV4U3RhdGljVXNlKGZhbHNlKSwKLSAgICAgIGZyYWdtZW50U3RhdGlj
VXNlKGZhbHNlKQorICAgICAgZnJhZ21lbnRTdGF0aWNVc2UoZmFsc2UpLAorICAgICAgY29tcHV0
ZVN0YXRpY1VzZShmYWxzZSkKIHsKIH0KIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL1VuaWZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvVW5pZm9ybS5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVW5pZm9ybS5oCSh3b3JraW5nIGNvcHkpCkBA
IC02Myw2ICs2Myw3IEBAIHN0cnVjdCBVbmlmb3JtQmxvY2sKIAogICAgIGJvb2wgdmVydGV4U3Rh
dGljVXNlOwogICAgIGJvb2wgZnJhZ21lbnRTdGF0aWNVc2U7CisgICAgYm9vbCBjb21wdXRlU3Rh
dGljVXNlOwogCiAgICAgc3RkOjp2ZWN0b3I8dW5zaWduZWQgaW50PiBtZW1iZXJVbmlmb3JtSW5k
ZXhlczsKIH07CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVmVy
c2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9WZXJzaW9uLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9WZXJzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDggQEAg
c3RydWN0IFZlcnNpb24KICAgICBHTHVpbnQgbWlub3I7CiB9OwogCitib29sIG9wZXJhdG9yPT0o
Y29uc3QgVmVyc2lvbiAmYSwgY29uc3QgVmVyc2lvbiAmYik7Citib29sIG9wZXJhdG9yIT0oY29u
c3QgVmVyc2lvbiAmYSwgY29uc3QgVmVyc2lvbiAmYik7CiBib29sIG9wZXJhdG9yPj0oY29uc3Qg
VmVyc2lvbiAmYSwgY29uc3QgVmVyc2lvbiAmYik7CiBib29sIG9wZXJhdG9yPChjb25zdCBWZXJz
aW9uICZhLCBjb25zdCBWZXJzaW9uICZiKTsKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL1ZlcnNpb24uaW5sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9WZXJzaW9uLmlubAkocmV2aXNpb24gMjA3ODA0KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1ZlcnNpb24uaW5sCSh3b3JraW5n
IGNvcHkpCkBAIC0yMCw2ICsyMCwxNiBAQCBpbmxpbmUgVmVyc2lvbjo6VmVyc2lvbihHTHVpbnQg
bWFqb3JfLCBHCiAgICAgbWlub3IgPSBtaW5vcl87CiB9CiAKK2lubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgVmVyc2lvbiAmYSwgY29uc3QgVmVyc2lvbiAmYikKK3sKKyAgICByZXR1cm4gYS5t
YWpvciA9PSBiLm1ham9yICYmIGEubWlub3IgPT0gYi5taW5vcjsKK30KKworaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBWZXJzaW9uICZhLCBjb25zdCBWZXJzaW9uICZiKQoreworICAgIHJl
dHVybiAhKGEgPT0gYik7Cit9CisKIGlubGluZSBib29sIG9wZXJhdG9yPj0oY29uc3QgVmVyc2lv
biAmYSwgY29uc3QgVmVyc2lvbiAmYikKIHsKICAgICByZXR1cm4gYS5tYWpvciA+IGIubWFqb3Ig
fHwgKGEubWFqb3IgPT0gYi5tYWpvciAmJiBhLm1pbm9yID49IGIubWlub3IpOwpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1ZlcnRleEFycmF5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVmVydGV4QXJyYXku
Y3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvVmVydGV4QXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04LDE4ICs4LDE4IEBACiAK
ICNpbmNsdWRlICJsaWJBTkdMRS9WZXJ0ZXhBcnJheS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0J1
ZmZlci5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0ltcGxGYWN0b3J5LmgiCisjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvR0xJbXBsRmFjdG9yeS5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL1ZlcnRleEFycmF5SW1wbC5oIgogCiBuYW1lc3BhY2UgZ2wKIHsKIAotVmVy
dGV4QXJyYXk6OkRhdGE6OkRhdGEoc2l6ZV90IG1heEF0dHJpYnMpCitWZXJ0ZXhBcnJheVN0YXRl
OjpWZXJ0ZXhBcnJheVN0YXRlKHNpemVfdCBtYXhBdHRyaWJzKQogICAgIDogbUxhYmVsKCksIG1W
ZXJ0ZXhBdHRyaWJ1dGVzKG1heEF0dHJpYnMpLCBtTWF4RW5hYmxlZEF0dHJpYnV0ZSgwKQogewog
fQogCi1WZXJ0ZXhBcnJheTo6RGF0YTo6fkRhdGEoKQorVmVydGV4QXJyYXlTdGF0ZTo6flZlcnRl
eEFycmF5U3RhdGUoKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZ2V0TWF4QXR0cmli
cygpOyBpKyspCiAgICAgewpAQCAtMjgsOCArMjgsOCBAQCBWZXJ0ZXhBcnJheTo6RGF0YTo6fkRh
dGEoKQogICAgIG1FbGVtZW50QXJyYXlCdWZmZXIuc2V0KG51bGxwdHIpOwogfQogCi1WZXJ0ZXhB
cnJheTo6VmVydGV4QXJyYXkocng6OkltcGxGYWN0b3J5ICpmYWN0b3J5LCBHTHVpbnQgaWQsIHNp
emVfdCBtYXhBdHRyaWJzKQotICAgIDogbUlkKGlkKSwgbURhdGEobWF4QXR0cmlicyksIG1WZXJ0
ZXhBcnJheShmYWN0b3J5LT5jcmVhdGVWZXJ0ZXhBcnJheShtRGF0YSkpCitWZXJ0ZXhBcnJheTo6
VmVydGV4QXJyYXkocng6OkdMSW1wbEZhY3RvcnkgKmZhY3RvcnksIEdMdWludCBpZCwgc2l6ZV90
IG1heEF0dHJpYnMpCisgICAgOiBtSWQoaWQpLCBtU3RhdGUobWF4QXR0cmlicyksIG1WZXJ0ZXhB
cnJheShmYWN0b3J5LT5jcmVhdGVWZXJ0ZXhBcnJheShtU3RhdGUpKQogewogfQogCkBAIC00NSw2
MCArNDUsNjAgQEAgR0x1aW50IFZlcnRleEFycmF5OjppZCgpIGNvbnN0CiAKIHZvaWQgVmVydGV4
QXJyYXk6OnNldExhYmVsKGNvbnN0IHN0ZDo6c3RyaW5nICZsYWJlbCkKIHsKLSAgICBtRGF0YS5t
TGFiZWwgPSBsYWJlbDsKKyAgICBtU3RhdGUubUxhYmVsID0gbGFiZWw7CiB9CiAKIGNvbnN0IHN0
ZDo6c3RyaW5nICZWZXJ0ZXhBcnJheTo6Z2V0TGFiZWwoKSBjb25zdAogewotICAgIHJldHVybiBt
RGF0YS5tTGFiZWw7CisgICAgcmV0dXJuIG1TdGF0ZS5tTGFiZWw7CiB9CiAKIHZvaWQgVmVydGV4
QXJyYXk6OmRldGFjaEJ1ZmZlcihHTHVpbnQgYnVmZmVyTmFtZSkKIHsKICAgICBmb3IgKHNpemVf
dCBhdHRyaWJ1dGUgPSAwOyBhdHRyaWJ1dGUgPCBnZXRNYXhBdHRyaWJzKCk7IGF0dHJpYnV0ZSsr
KQogICAgIHsKLSAgICAgICAgaWYgKG1EYXRhLm1WZXJ0ZXhBdHRyaWJ1dGVzW2F0dHJpYnV0ZV0u
YnVmZmVyLmlkKCkgPT0gYnVmZmVyTmFtZSkKKyAgICAgICAgaWYgKG1TdGF0ZS5tVmVydGV4QXR0
cmlidXRlc1thdHRyaWJ1dGVdLmJ1ZmZlci5pZCgpID09IGJ1ZmZlck5hbWUpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIG1EYXRhLm1WZXJ0ZXhBdHRyaWJ1dGVzW2F0dHJpYnV0ZV0uYnVmZmVyLnNl
dChudWxscHRyKTsKKyAgICAgICAgICAgIG1TdGF0ZS5tVmVydGV4QXR0cmlidXRlc1thdHRyaWJ1
dGVdLmJ1ZmZlci5zZXQobnVsbHB0cik7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAobURh
dGEubUVsZW1lbnRBcnJheUJ1ZmZlci5pZCgpID09IGJ1ZmZlck5hbWUpCisgICAgaWYgKG1TdGF0
ZS5tRWxlbWVudEFycmF5QnVmZmVyLmlkKCkgPT0gYnVmZmVyTmFtZSkKICAgICB7Ci0gICAgICAg
IG1EYXRhLm1FbGVtZW50QXJyYXlCdWZmZXIuc2V0KG51bGxwdHIpOworICAgICAgICBtU3RhdGUu
bUVsZW1lbnRBcnJheUJ1ZmZlci5zZXQobnVsbHB0cik7CiAgICAgfQogfQogCiBjb25zdCBWZXJ0
ZXhBdHRyaWJ1dGUgJlZlcnRleEFycmF5OjpnZXRWZXJ0ZXhBdHRyaWJ1dGUoc2l6ZV90IGF0dHJp
YnV0ZUluZGV4KSBjb25zdAogewogICAgIEFTU0VSVChhdHRyaWJ1dGVJbmRleCA8IGdldE1heEF0
dHJpYnMoKSk7Ci0gICAgcmV0dXJuIG1EYXRhLm1WZXJ0ZXhBdHRyaWJ1dGVzW2F0dHJpYnV0ZUlu
ZGV4XTsKKyAgICByZXR1cm4gbVN0YXRlLm1WZXJ0ZXhBdHRyaWJ1dGVzW2F0dHJpYnV0ZUluZGV4
XTsKIH0KIAogdm9pZCBWZXJ0ZXhBcnJheTo6c2V0VmVydGV4QXR0cmliRGl2aXNvcihzaXplX3Qg
aW5kZXgsIEdMdWludCBkaXZpc29yKQogewogICAgIEFTU0VSVChpbmRleCA8IGdldE1heEF0dHJp
YnMoKSk7Ci0gICAgbURhdGEubVZlcnRleEF0dHJpYnV0ZXNbaW5kZXhdLmRpdmlzb3IgPSBkaXZp
c29yOworICAgIG1TdGF0ZS5tVmVydGV4QXR0cmlidXRlc1tpbmRleF0uZGl2aXNvciA9IGRpdmlz
b3I7CiAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0FUVFJJQl8wX0RJVklTT1IgKyBpbmRl
eCk7CiB9CiAKIHZvaWQgVmVydGV4QXJyYXk6OmVuYWJsZUF0dHJpYnV0ZShzaXplX3QgYXR0cmli
dXRlSW5kZXgsIGJvb2wgZW5hYmxlZFN0YXRlKQogewogICAgIEFTU0VSVChhdHRyaWJ1dGVJbmRl
eCA8IGdldE1heEF0dHJpYnMoKSk7Ci0gICAgbURhdGEubVZlcnRleEF0dHJpYnV0ZXNbYXR0cmli
dXRlSW5kZXhdLmVuYWJsZWQgPSBlbmFibGVkU3RhdGU7CisgICAgbVN0YXRlLm1WZXJ0ZXhBdHRy
aWJ1dGVzW2F0dHJpYnV0ZUluZGV4XS5lbmFibGVkID0gZW5hYmxlZFN0YXRlOwogICAgIG1EaXJ0
eUJpdHMuc2V0KERJUlRZX0JJVF9BVFRSSUJfMF9FTkFCTEVEICsgYXR0cmlidXRlSW5kZXgpOwog
CiAgICAgLy8gVXBkYXRlIHN0YXRlIGNhY2hlCiAgICAgaWYgKGVuYWJsZWRTdGF0ZSkKICAgICB7
Ci0gICAgICAgIG1EYXRhLm1NYXhFbmFibGVkQXR0cmlidXRlID0gc3RkOjptYXgoYXR0cmlidXRl
SW5kZXggKyAxLCBtRGF0YS5tTWF4RW5hYmxlZEF0dHJpYnV0ZSk7CisgICAgICAgIG1TdGF0ZS5t
TWF4RW5hYmxlZEF0dHJpYnV0ZSA9IHN0ZDo6bWF4KGF0dHJpYnV0ZUluZGV4ICsgMSwgbVN0YXRl
Lm1NYXhFbmFibGVkQXR0cmlidXRlKTsKICAgICB9Ci0gICAgZWxzZSBpZiAobURhdGEubU1heEVu
YWJsZWRBdHRyaWJ1dGUgPT0gYXR0cmlidXRlSW5kZXggKyAxKQorICAgIGVsc2UgaWYgKG1TdGF0
ZS5tTWF4RW5hYmxlZEF0dHJpYnV0ZSA9PSBhdHRyaWJ1dGVJbmRleCArIDEpCiAgICAgewotICAg
ICAgICB3aGlsZSAobURhdGEubU1heEVuYWJsZWRBdHRyaWJ1dGUgPiAwICYmCi0gICAgICAgICAg
ICAgICAhbURhdGEubVZlcnRleEF0dHJpYnV0ZXNbbURhdGEubU1heEVuYWJsZWRBdHRyaWJ1dGUg
LSAxXS5lbmFibGVkKQorICAgICAgICB3aGlsZSAobVN0YXRlLm1NYXhFbmFibGVkQXR0cmlidXRl
ID4gMCAmJgorICAgICAgICAgICAgICAgIW1TdGF0ZS5tVmVydGV4QXR0cmlidXRlc1ttU3RhdGUu
bU1heEVuYWJsZWRBdHRyaWJ1dGUgLSAxXS5lbmFibGVkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICAtLW1EYXRhLm1NYXhFbmFibGVkQXR0cmlidXRlOworICAgICAgICAgICAgLS1tU3RhdGUubU1h
eEVuYWJsZWRBdHRyaWJ1dGU7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xMDgsNyArMTA4LDcg
QEAgdm9pZCBWZXJ0ZXhBcnJheTo6c2V0QXR0cmlidXRlU3RhdGUoc2l6ZQogewogICAgIEFTU0VS
VChhdHRyaWJ1dGVJbmRleCA8IGdldE1heEF0dHJpYnMoKSk7CiAKLSAgICBWZXJ0ZXhBdHRyaWJ1
dGUgKmF0dHJpYiA9ICZtRGF0YS5tVmVydGV4QXR0cmlidXRlc1thdHRyaWJ1dGVJbmRleF07Cisg
ICAgVmVydGV4QXR0cmlidXRlICphdHRyaWIgPSAmbVN0YXRlLm1WZXJ0ZXhBdHRyaWJ1dGVzW2F0
dHJpYnV0ZUluZGV4XTsKIAogICAgIGF0dHJpYi0+YnVmZmVyLnNldChib3VuZEJ1ZmZlcik7CiAg
ICAgYXR0cmliLT5zaXplID0gc2l6ZTsKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIFZlcnRleEFy
cmF5OjpzZXRBdHRyaWJ1dGVTdGF0ZShzaXplCiAKIHZvaWQgVmVydGV4QXJyYXk6OnNldEVsZW1l
bnRBcnJheUJ1ZmZlcihCdWZmZXIgKmJ1ZmZlcikKIHsKLSAgICBtRGF0YS5tRWxlbWVudEFycmF5
QnVmZmVyLnNldChidWZmZXIpOworICAgIG1TdGF0ZS5tRWxlbWVudEFycmF5QnVmZmVyLnNldChi
dWZmZXIpOwogICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9FTEVNRU5UX0FSUkFZX0JVRkZF
Uik7CiB9CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9WZXJ0
ZXhBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9WZXJ0ZXhBcnJheS5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvVmVydGV4QXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjMs
NyArMjMsNyBAQAogCiBuYW1lc3BhY2UgcngKIHsKLWNsYXNzIEltcGxGYWN0b3J5OworY2xhc3Mg
R0xJbXBsRmFjdG9yeTsKIGNsYXNzIFZlcnRleEFycmF5SW1wbDsKIH0KIApAQCAtMzEsMTAgKzMx
LDM1IEBAIG5hbWVzcGFjZSBnbAogewogY2xhc3MgQnVmZmVyOwogCitjbGFzcyBWZXJ0ZXhBcnJh
eVN0YXRlIGZpbmFsIDogcHVibGljIGFuZ2xlOjpOb25Db3B5YWJsZQoreworICBwdWJsaWM6Cisg
ICAgZXhwbGljaXQgVmVydGV4QXJyYXlTdGF0ZShzaXplX3QgbWF4QXR0cmlicyk7CisgICAgflZl
cnRleEFycmF5U3RhdGUoKTsKKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZnZXRMYWJlbCgpIGNv
bnN0IHsgcmV0dXJuIG1MYWJlbDsgfQorCisgICAgY29uc3QgQmluZGluZ1BvaW50ZXI8QnVmZmVy
PiAmZ2V0RWxlbWVudEFycmF5QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbUVsZW1lbnRBcnJheUJ1
ZmZlcjsgfQorICAgIHNpemVfdCBnZXRNYXhBdHRyaWJzKCkgY29uc3QgeyByZXR1cm4gbVZlcnRl
eEF0dHJpYnV0ZXMuc2l6ZSgpOyB9CisgICAgc2l6ZV90IGdldE1heEVuYWJsZWRBdHRyaWJ1dGUo
KSBjb25zdCB7IHJldHVybiBtTWF4RW5hYmxlZEF0dHJpYnV0ZTsgfQorICAgIGNvbnN0IHN0ZDo6
dmVjdG9yPFZlcnRleEF0dHJpYnV0ZT4gJmdldFZlcnRleEF0dHJpYnV0ZXMoKSBjb25zdCB7IHJl
dHVybiBtVmVydGV4QXR0cmlidXRlczsgfQorICAgIGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmZ2V0
VmVydGV4QXR0cmlidXRlKHNpemVfdCBpbmRleCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtVmVydGV4QXR0cmlidXRlc1tpbmRleF07CisgICAgfQorCisgIHByaXZhdGU6CisgICAgZnJp
ZW5kIGNsYXNzIFZlcnRleEFycmF5OworICAgIHN0ZDo6c3RyaW5nIG1MYWJlbDsKKyAgICBzdGQ6
OnZlY3RvcjxWZXJ0ZXhBdHRyaWJ1dGU+IG1WZXJ0ZXhBdHRyaWJ1dGVzOworICAgIEJpbmRpbmdQ
b2ludGVyPEJ1ZmZlcj4gbUVsZW1lbnRBcnJheUJ1ZmZlcjsKKyAgICBzaXplX3QgbU1heEVuYWJs
ZWRBdHRyaWJ1dGU7Cit9OworCiBjbGFzcyBWZXJ0ZXhBcnJheSBmaW5hbCA6IHB1YmxpYyBMYWJl
bGVkT2JqZWN0CiB7CiAgIHB1YmxpYzoKLSAgICBWZXJ0ZXhBcnJheShyeDo6SW1wbEZhY3Rvcnkg
KmZhY3RvcnksIEdMdWludCBpZCwgc2l6ZV90IG1heEF0dHJpYnMpOworICAgIFZlcnRleEFycmF5
KHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5LCBHTHVpbnQgaWQsIHNpemVfdCBtYXhBdHRyaWJz
KTsKICAgICB+VmVydGV4QXJyYXkoKTsKIAogICAgIEdMdWludCBpZCgpIGNvbnN0OwpAQCAtNTIs
MzkgKzc3LDE5IEBAIGNsYXNzIFZlcnRleEFycmF5IGZpbmFsIDogcHVibGljIExhYmVsZWQKIAog
ICAgIHZvaWQgc2V0RWxlbWVudEFycmF5QnVmZmVyKEJ1ZmZlciAqYnVmZmVyKTsKIAotICAgIGNv
bnN0IEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4gJmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG1EYXRhLmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpOyB9Ci0gICAgc2l6ZV90IGdl
dE1heEF0dHJpYnMoKSBjb25zdCB7IHJldHVybiBtRGF0YS5nZXRWZXJ0ZXhBdHRyaWJ1dGVzKCku
c2l6ZSgpOyB9Ci0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8VmVydGV4QXR0cmlidXRlPiAmZ2V0VmVy
dGV4QXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1EYXRhLmdldFZlcnRleEF0dHJpYnV0ZXMo
KTsgfQotCi0gICAgcng6OlZlcnRleEFycmF5SW1wbCAqZ2V0SW1wbGVtZW50YXRpb24oKSB7IHJl
dHVybiBtVmVydGV4QXJyYXk7IH0KLSAgICBjb25zdCByeDo6VmVydGV4QXJyYXlJbXBsICpnZXRJ
bXBsZW1lbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1WZXJ0ZXhBcnJheTsgfQorICAgIGNvbnN0
IEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4gJmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbVN0YXRlLmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpOworICAg
IH0KKyAgICBzaXplX3QgZ2V0TWF4QXR0cmlicygpIGNvbnN0IHsgcmV0dXJuIG1TdGF0ZS5nZXRW
ZXJ0ZXhBdHRyaWJ1dGVzKCkuc2l6ZSgpOyB9CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8VmVydGV4
QXR0cmlidXRlPiAmZ2V0VmVydGV4QXR0cmlidXRlcygpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbVN0YXRlLmdldFZlcnRleEF0dHJpYnV0ZXMoKTsKKyAgICB9CiAKLSAgICBzaXplX3Qg
Z2V0TWF4RW5hYmxlZEF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1EYXRhLmdldE1heEVuYWJs
ZWRBdHRyaWJ1dGUoKTsgfQorICAgIHJ4OjpWZXJ0ZXhBcnJheUltcGwgKmdldEltcGxlbWVudGF0
aW9uKCkgY29uc3QgeyByZXR1cm4gbVZlcnRleEFycmF5OyB9CiAKLSAgICBjbGFzcyBEYXRhIGZp
bmFsIDogcHVibGljIGFuZ2xlOjpOb25Db3B5YWJsZQotICAgIHsKLSAgICAgIHB1YmxpYzoKLSAg
ICAgICAgZXhwbGljaXQgRGF0YShzaXplX3QgbWF4QXR0cmlicyk7Ci0gICAgICAgIH5EYXRhKCk7
Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmdldExhYmVsKCkgY29uc3QgeyByZXR1cm4g
bUxhYmVsOyB9Ci0KLSAgICAgICAgY29uc3QgQmluZGluZ1BvaW50ZXI8QnVmZmVyPiAmZ2V0RWxl
bWVudEFycmF5QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbUVsZW1lbnRBcnJheUJ1ZmZlcjsgfQot
ICAgICAgICBzaXplX3QgZ2V0TWF4QXR0cmlicygpIGNvbnN0IHsgcmV0dXJuIG1WZXJ0ZXhBdHRy
aWJ1dGVzLnNpemUoKTsgfQotICAgICAgICBzaXplX3QgZ2V0TWF4RW5hYmxlZEF0dHJpYnV0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1NYXhFbmFibGVkQXR0cmlidXRlOyB9Ci0gICAgICAgIGNvbnN0IHN0
ZDo6dmVjdG9yPFZlcnRleEF0dHJpYnV0ZT4gJmdldFZlcnRleEF0dHJpYnV0ZXMoKSBjb25zdCB7
IHJldHVybiBtVmVydGV4QXR0cmlidXRlczsgfQotICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJ1
dGUgJmdldFZlcnRleEF0dHJpYnV0ZShzaXplX3QgaW5kZXgpIGNvbnN0Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBtVmVydGV4QXR0cmlidXRlc1tpbmRleF07Ci0gICAgICAgIH0KLQot
ICAgICAgcHJpdmF0ZToKLSAgICAgICAgZnJpZW5kIGNsYXNzIFZlcnRleEFycmF5OwotICAgICAg
ICBzdGQ6OnN0cmluZyBtTGFiZWw7Ci0gICAgICAgIHN0ZDo6dmVjdG9yPFZlcnRleEF0dHJpYnV0
ZT4gbVZlcnRleEF0dHJpYnV0ZXM7Ci0gICAgICAgIEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4gbUVs
ZW1lbnRBcnJheUJ1ZmZlcjsKLSAgICAgICAgc2l6ZV90IG1NYXhFbmFibGVkQXR0cmlidXRlOwot
ICAgIH07CisgICAgc2l6ZV90IGdldE1heEVuYWJsZWRBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVy
biBtU3RhdGUuZ2V0TWF4RW5hYmxlZEF0dHJpYnV0ZSgpOyB9CiAKICAgICBlbnVtIERpcnR5Qml0
VHlwZQogICAgIHsKQEAgLTExNCw3ICsxMTksNyBAQCBjbGFzcyBWZXJ0ZXhBcnJheSBmaW5hbCA6
IHB1YmxpYyBMYWJlbGVkCiAgIHByaXZhdGU6CiAgICAgR0x1aW50IG1JZDsKIAotICAgIERhdGEg
bURhdGE7CisgICAgVmVydGV4QXJyYXlTdGF0ZSBtU3RhdGU7CiAgICAgRGlydHlCaXRzIG1EaXJ0
eUJpdHM7CiAKICAgICByeDo6VmVydGV4QXJyYXlJbXBsICptVmVydGV4QXJyYXk7CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVmVydGV4QXR0cmlidXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1ZlcnRleEF0
dHJpYnV0ZS5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvVmVydGV4QXR0cmlidXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDkgKzM5
LDYgQEAgc3RydWN0IFZlcnRleEF0dHJpYnV0ZQogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZlcnRl
eEF0dHJpYnV0ZSAmYSwgY29uc3QgVmVydGV4QXR0cmlidXRlICZiKTsKIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmEsIGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYik7CiAK
LXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotVCBRdWVyeVNpbmdsZVZlcnRleEF0dHJpYnV0ZVBhcmFt
ZXRlcihjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUmIGF0dHJpYiwgR0xlbnVtIHBuYW1lKTsKLQogc2l6
ZV90IENvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVUeXBlU2l6ZShjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUm
IGF0dHJpYik7CiBzaXplX3QgQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZVN0cmlkZShjb25zdCBWZXJ0
ZXhBdHRyaWJ1dGUmIGF0dHJpYik7CiBzaXplX3QgQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZUVsZW1l
bnRDb3VudChjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9WZXJ0ZXhBdHRyaWJ1dGUuaW5sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9WZXJ0ZXhBdHRyaWJ1dGUu
aW5sCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvVmVydGV4QXR0cmlidXRlLmlubAkod29ya2luZyBjb3B5KQpAQCAtMjcsMzMgKzI3LDYg
QEAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBWZXJ0ZXhBdHRyaQogICAgIHJldHVybiAh
KGEgPT0gYik7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotVCBRdWVyeVNpbmdsZVZlcnRl
eEF0dHJpYnV0ZVBhcmFtZXRlcihjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUmIGF0dHJpYiwgR0xlbnVt
IHBuYW1lKQotewotICBzd2l0Y2ggKHBuYW1lKQotICB7Ci0gICAgY2FzZSBHTF9WRVJURVhfQVRU
UklCX0FSUkFZX0VOQUJMRUQ6Ci0gICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oYXR0cmliLmVu
YWJsZWQgPyBHTF9UUlVFIDogR0xfRkFMU0UpOwotICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9B
UlJBWV9TSVpFOgotICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KGF0dHJpYi5zaXplKTsKLSAg
ICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFOgotICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFQ+KGF0dHJpYi5zdHJpZGUpOwotICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJB
WV9UWVBFOgotICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KGF0dHJpYi50eXBlKTsKLSAgICBj
YXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRDoKLSAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxUPihhdHRyaWIubm9ybWFsaXplZCA/IEdMX1RSVUUgOiBHTF9GQUxTRSk7Ci0gICAg
Y2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HOgotICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFQ+KGF0dHJpYi5idWZmZXIuaWQoKSk7Ci0gICAgY2FzZSBHTF9WRVJURVhf
QVRUUklCX0FSUkFZX0RJVklTT1I6Ci0gICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oYXR0cmli
LmRpdmlzb3IpOwotICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9JTlRFR0VSOgotICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KGF0dHJpYi5wdXJlSW50ZWdlciA/IEdMX1RSVUUgOiBH
TF9GQUxTRSk7Ci0gICAgZGVmYXVsdDoKLSAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8VD4oMCk7Ci0gIH0KLX0KLQogaW5saW5lIFZlcnRleEF0dHJpYkN1cnJl
bnRWYWx1ZURhdGE6OlZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGEoKQogICAgIDogVHlwZShH
TF9GTE9BVCkKIHsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9X
b3JrYXJvdW5kcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9Xb3JrYXJvdW5kcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9Xb3JrYXJvdW5kcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMjUgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBXb3JrYXJvdW5kcy5oOiBXb3JrYXJvdW5kcyBm
b3IgZHJpdmVyIGJ1Z3MgYW5kIG90aGVyIGJlaGF2aW9ycyBzZWVuCisvLyBvbiBhbGwgcGxhdGZv
cm1zLgorCisjaWZuZGVmIExJQkFOR0xFX1dPUktBUk9VTkRTX0hfCisjZGVmaW5lIExJQkFOR0xF
X1dPUktBUk9VTkRTX0hfCisKK25hbWVzcGFjZSBnbAoreworCitzdHJ1Y3QgV29ya2Fyb3VuZHMK
K3sKKyAgICAvLyBGb3JjZSB0aGUgY29udGV4dCB0byBiZSBsb3N0ICh2aWEgS0hSX3JvYnVzdG5l
c3MpIGlmIGEgR0xfT1VUX09GX01FTU9SWSBlcnJvciBvY2N1cnMuIFRoZQorICAgIC8vIGRyaXZl
ciBtYXkgYmUgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlIGlmIHRoaXMgaGFwcGVucywgYW5kIHNv
bWUgdXNlcnMgb2YgQU5HTEUgcmVseSBvbiB0aGlzCisgICAgLy8gbm90aWZpY2F0aW9uIHRvIHBy
ZXZlbnQgZnVydGhlciBleGVjdXRpb24uCisgICAgYm9vbCBsb3NlQ29udGV4dE9uT3V0T2ZNZW1v
cnkgPSBmYWxzZTsKK307Cit9ICAvLyBuYW1lc3BhY2UgZ2wKKworI2VuZGlmICAvLyBMSUJBTkdM
RV9XT1JLQVJPVU5EU19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL2FuZ2xldHlwZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9hbmdsZXR5cGVzLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2FuZ2xldHlwZXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MywyNCArNTMsMjEgQEAgU2FtcGxlclN0YXRlOjpTYW1wbGVyU3RhdGUoKQogewog
fQogCi1UZXh0dXJlU3RhdGU6OlRleHR1cmVTdGF0ZSgpCi0gICAgOiBzd2l6emxlUmVkKEdMX1JF
RCksCi0gICAgICBzd2l6emxlR3JlZW4oR0xfR1JFRU4pLAotICAgICAgc3dpenpsZUJsdWUoR0xf
QkxVRSksCi0gICAgICBzd2l6emxlQWxwaGEoR0xfQUxQSEEpLAotICAgICAgc2FtcGxlclN0YXRl
KCksCi0gICAgICBiYXNlTGV2ZWwoMCksCi0gICAgICBtYXhMZXZlbCgxMDAwKSwKLSAgICAgIGlt
bXV0YWJsZUZvcm1hdChmYWxzZSksCi0gICAgICBpbW11dGFibGVMZXZlbHMoMCksCi0gICAgICB1
c2FnZShHTF9OT05FKQorLy8gc3RhdGljCitTYW1wbGVyU3RhdGUgU2FtcGxlclN0YXRlOjpDcmVh
dGVEZWZhdWx0Rm9yVGFyZ2V0KEdMZW51bSB0YXJnZXQpCiB7Ci19CisgICAgU2FtcGxlclN0YXRl
IHN0YXRlOwogCi1ib29sIFRleHR1cmVTdGF0ZTo6c3dpenpsZVJlcXVpcmVkKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gc3dpenpsZVJlZCAhPSBHTF9SRUQgfHwgc3dpenpsZUdyZWVuICE9IEdMX0dS
RUVOIHx8Ci0gICAgICAgICAgIHN3aXp6bGVCbHVlICE9IEdMX0JMVUUgfHwgc3dpenpsZUFscGhh
ICE9IEdMX0FMUEhBOworICAgIC8vIEFjY29yZGluZyB0byBPRVNfRUdMX2ltYWdlX2V4dGVybmFs
OiBGb3IgZXh0ZXJuYWwgdGV4dHVyZXMsIHRoZSBkZWZhdWx0IG1pbiBmaWx0ZXIgaXMKKyAgICAv
LyBHTF9MSU5FQVIgYW5kIHRoZSBkZWZhdWx0IHMgYW5kIHQgd3JhcCBtb2RlcyBhcmUgR0xfQ0xB
TVBfVE9fRURHRS4KKyAgICBpZiAodGFyZ2V0ID09IEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTKQor
ICAgIHsKKyAgICAgICAgc3RhdGUubWluRmlsdGVyID0gR0xfTElORUFSOworICAgICAgICBzdGF0
ZS53cmFwUyAgICAgPSBHTF9DTEFNUF9UT19FREdFOworICAgICAgICBzdGF0ZS53cmFwVCAgICAg
PSBHTF9DTEFNUF9UT19FREdFOworICAgIH0KKworICAgIHJldHVybiBzdGF0ZTsKIH0KIAogc3Rh
dGljIHZvaWQgTWluTWF4KGludCBhLCBpbnQgYiwgaW50ICptaW5pbXVtLCBpbnQgKm1heGltdW0p
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvYW5nbGV0eXBlcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9hbmds
ZXR5cGVzLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9hbmdsZXR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDI4ICs0NSw2IEBA
IGVudW0gU2FtcGxlclR5cGUKICAgICBTQU1QTEVSX1ZFUlRFWAogfTsKIAotdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci1zdHJ1Y3QgQ29sb3IKLXsKLSAgICBUIHJlZDsKLSAgICBUIGdyZWVuOwotICAg
IFQgYmx1ZTsKLSAgICBUIGFscGhhOwotCi0gICAgQ29sb3IoKSA6IHJlZCgwKSwgZ3JlZW4oMCks
IGJsdWUoMCksIGFscGhhKDApIHsgfQotICAgIENvbG9yKFQgciwgVCBnLCBUIGIsIFQgYSkgOiBy
ZWQociksIGdyZWVuKGcpLCBibHVlKGIpLCBhbHBoYShhKSB7IH0KLX07Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbG9yPFQ+ICZhLCBjb25zdCBDb2xv
cjxUPiAmYik7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotYm9vbCBvcGVyYXRvciE9KGNvbnN0
IENvbG9yPFQ+ICZhLCBjb25zdCBDb2xvcjxUPiAmYik7Ci0KLXR5cGVkZWYgQ29sb3I8ZmxvYXQ+
IENvbG9yRjsKLXR5cGVkZWYgQ29sb3I8aW50PiBDb2xvckk7Ci10eXBlZGVmIENvbG9yPHVuc2ln
bmVkIGludD4gQ29sb3JVSTsKLQogc3RydWN0IFJlY3RhbmdsZQogewogICAgIFJlY3RhbmdsZSgp
IDogeCgwKSwgeSgwKSwgd2lkdGgoMCksIGhlaWdodCgwKSB7fQpAQCAtMTEwLDYgKzg4LDkgQEAg
c3RydWN0IEV4dGVudHMKICAgICBFeHRlbnRzKCkgOiB3aWR0aCgwKSwgaGVpZ2h0KDApLCBkZXB0
aCgwKSB7IH0KICAgICBFeHRlbnRzKGludCB3aWR0aF8sIGludCBoZWlnaHRfLCBpbnQgZGVwdGhf
KSA6IHdpZHRoKHdpZHRoXyksIGhlaWdodChoZWlnaHRfKSwgZGVwdGgoZGVwdGhfKSB7IH0KIAor
ICAgIEV4dGVudHMoY29uc3QgRXh0ZW50cyAmb3RoZXIpID0gZGVmYXVsdDsKKyAgICBFeHRlbnRz
ICZvcGVyYXRvcj0oY29uc3QgRXh0ZW50cyAmb3RoZXIpID0gZGVmYXVsdDsKKwogICAgIGJvb2wg
ZW1wdHkoKSBjb25zdCB7IHJldHVybiAod2lkdGggKiBoZWlnaHQgKiBkZXB0aCkgPT0gMDsgfQog
fTsKIApAQCAtMTk0LDYgKzE3NSw3IEBAIHN0cnVjdCBEZXB0aFN0ZW5jaWxTdGF0ZQogc3RydWN0
IFNhbXBsZXJTdGF0ZQogewogICAgIFNhbXBsZXJTdGF0ZSgpOworICAgIHN0YXRpYyBTYW1wbGVy
U3RhdGUgQ3JlYXRlRGVmYXVsdEZvclRhcmdldChHTGVudW0gdGFyZ2V0KTsKIAogICAgIEdMZW51
bSBtaW5GaWx0ZXI7CiAgICAgR0xlbnVtIG1hZ0ZpbHRlcjsKQEAgLTIxNSw4NiArMTk3LDM5IEBA
IHN0cnVjdCBTYW1wbGVyU3RhdGUKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTYW1wbGVyU3RhdGUg
JmEsIGNvbnN0IFNhbXBsZXJTdGF0ZSAmYik7CiBib29sIG9wZXJhdG9yIT0oY29uc3QgU2FtcGxl
clN0YXRlICZhLCBjb25zdCBTYW1wbGVyU3RhdGUgJmIpOwogCi0vLyBTdGF0ZSBmcm9tIFRhYmxl
IDYuOSAoc3RhdGUgcGVyIHRleHR1cmUgb2JqZWN0KSBpbiB0aGUgT3BlbkdMIEVTIDMuMC4yIHNw
ZWMuCi1zdHJ1Y3QgVGV4dHVyZVN0YXRlCitzdHJ1Y3QgUGl4ZWxTdG9yZVN0YXRlQmFzZQogewot
ICAgIFRleHR1cmVTdGF0ZSgpOwotCi0gICAgR0xlbnVtIHN3aXp6bGVSZWQ7Ci0gICAgR0xlbnVt
IHN3aXp6bGVHcmVlbjsKLSAgICBHTGVudW0gc3dpenpsZUJsdWU7Ci0gICAgR0xlbnVtIHN3aXp6
bGVBbHBoYTsKLQotICAgIFNhbXBsZXJTdGF0ZSBzYW1wbGVyU3RhdGU7Ci0KLSAgICBHTHVpbnQg
YmFzZUxldmVsOwotICAgIEdMdWludCBtYXhMZXZlbDsKLQotICAgIGJvb2wgaW1tdXRhYmxlRm9y
bWF0OwotICAgIEdMdWludCBpbW11dGFibGVMZXZlbHM7Ci0KLSAgICAvLyBGcm9tIEdMX0FOR0xF
X3RleHR1cmVfdXNhZ2UKLSAgICBHTGVudW0gdXNhZ2U7Ci0KLSAgICBib29sIHN3aXp6bGVSZXF1
aXJlZCgpIGNvbnN0OworICAgIEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4gcGl4ZWxCdWZmZXI7Cisg
ICAgR0xpbnQgYWxpZ25tZW50ICAgPSA0OworICAgIEdMaW50IHJvd0xlbmd0aCAgID0gMDsKKyAg
ICBHTGludCBza2lwUm93cyAgICA9IDA7CisgICAgR0xpbnQgc2tpcFBpeGVscyAgPSAwOworICAg
IEdMaW50IGltYWdlSGVpZ2h0ID0gMDsKKyAgICBHTGludCBza2lwSW1hZ2VzICA9IDA7CiB9Owog
Ci1ib29sIG9wZXJhdG9yPT0oY29uc3QgVGV4dHVyZVN0YXRlICZhLCBjb25zdCBUZXh0dXJlU3Rh
dGUgJmIpOwotYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRleHR1cmVTdGF0ZSAmYSwgY29uc3QgVGV4
dHVyZVN0YXRlICZiKTsKLQotc3RydWN0IFBpeGVsVW5wYWNrU3RhdGUKK3N0cnVjdCBQaXhlbFVu
cGFja1N0YXRlIDogUGl4ZWxTdG9yZVN0YXRlQmFzZQogewotICAgIEJpbmRpbmdQb2ludGVyPEJ1
ZmZlcj4gcGl4ZWxCdWZmZXI7Ci0gICAgR0xpbnQgYWxpZ25tZW50OwotICAgIEdMaW50IHJvd0xl
bmd0aDsKLSAgICBHTGludCBza2lwUm93czsKLSAgICBHTGludCBza2lwUGl4ZWxzOwotICAgIEdM
aW50IGltYWdlSGVpZ2h0OwotICAgIEdMaW50IHNraXBJbWFnZXM7Ci0KLSAgICBQaXhlbFVucGFj
a1N0YXRlKCkKLSAgICAgICAgOiBhbGlnbm1lbnQoNCksCi0gICAgICAgICAgcm93TGVuZ3RoKDAp
LAotICAgICAgICAgIHNraXBSb3dzKDApLAotICAgICAgICAgIHNraXBQaXhlbHMoMCksCi0gICAg
ICAgICAgaW1hZ2VIZWlnaHQoMCksCi0gICAgICAgICAgc2tpcEltYWdlcygwKQotICAgIHt9Cisg
ICAgUGl4ZWxVbnBhY2tTdGF0ZSgpIHt9CiAKICAgICBQaXhlbFVucGFja1N0YXRlKEdMaW50IGFs
aWdubWVudEluLCBHTGludCByb3dMZW5ndGhJbikKLSAgICAgICAgOiBhbGlnbm1lbnQoYWxpZ25t
ZW50SW4pLAotICAgICAgICAgIHJvd0xlbmd0aChyb3dMZW5ndGhJbiksCi0gICAgICAgICAgc2tp
cFJvd3MoMCksCi0gICAgICAgICAgc2tpcFBpeGVscygwKSwKLSAgICAgICAgICBpbWFnZUhlaWdo
dCgwKSwKLSAgICAgICAgICBza2lwSW1hZ2VzKDApCi0gICAge30KKyAgICB7CisgICAgICAgIGFs
aWdubWVudCA9IGFsaWdubWVudEluOworICAgICAgICByb3dMZW5ndGggPSByb3dMZW5ndGhJbjsK
KyAgICB9CiB9OwogCi1zdHJ1Y3QgUGl4ZWxQYWNrU3RhdGUKK3N0cnVjdCBQaXhlbFBhY2tTdGF0
ZSA6IFBpeGVsU3RvcmVTdGF0ZUJhc2UKIHsKLSAgICBCaW5kaW5nUG9pbnRlcjxCdWZmZXI+IHBp
eGVsQnVmZmVyOwotICAgIEdMaW50IGFsaWdubWVudDsKLSAgICBib29sIHJldmVyc2VSb3dPcmRl
cjsKLSAgICBHTGludCByb3dMZW5ndGg7Ci0gICAgR0xpbnQgc2tpcFJvd3M7Ci0gICAgR0xpbnQg
c2tpcFBpeGVsczsKLQotICAgIFBpeGVsUGFja1N0YXRlKCkKLSAgICAgICAgOiBhbGlnbm1lbnQo
NCksCi0gICAgICAgICAgcmV2ZXJzZVJvd09yZGVyKGZhbHNlKSwKLSAgICAgICAgICByb3dMZW5n
dGgoMCksCi0gICAgICAgICAgc2tpcFJvd3MoMCksCi0gICAgICAgICAgc2tpcFBpeGVscygwKQot
ICAgIHt9Ci0KLSAgICBleHBsaWNpdCBQaXhlbFBhY2tTdGF0ZShHTGludCBhbGlnbm1lbnRJbiwg
Ym9vbCByZXZlcnNlUm93T3JkZXJJbikKLSAgICAgICAgOiBhbGlnbm1lbnQoYWxpZ25tZW50SW4p
LAotICAgICAgICAgIHJldmVyc2VSb3dPcmRlcihyZXZlcnNlUm93T3JkZXJJbiksCi0gICAgICAg
ICAgcm93TGVuZ3RoKDApLAotICAgICAgICAgIHNraXBSb3dzKDApLAotICAgICAgICAgIHNraXBQ
aXhlbHMoMCkKLSAgICB7fQorICAgIFBpeGVsUGFja1N0YXRlKCkge30KKworICAgIFBpeGVsUGFj
a1N0YXRlKEdMaW50IGFsaWdubWVudEluLCBib29sIHJldmVyc2VSb3dPcmRlckluKQorICAgICAg
ICA6IHJldmVyc2VSb3dPcmRlcihyZXZlcnNlUm93T3JkZXJJbikKKyAgICB7CisgICAgICAgIGFs
aWdubWVudCA9IGFsaWdubWVudEluOworICAgIH0KKworICAgIGJvb2wgcmV2ZXJzZVJvd09yZGVy
ID0gZmFsc2U7CiB9OwogCiAvLyBVc2VkIGluIFByb2dyYW0gYW5kIFZlcnRleEFycmF5LgpAQCAt
MzEzLDEwICsyNDgsMTMgQEAgbmFtZXNwYWNlIHJ4CiB7CiBlbnVtIFZlbmRvcklEIDogdWludDMy
X3QKIHsKLSAgICBWRU5ET1JfSURfVU5LTk9XTiA9IDB4MCwKLSAgICBWRU5ET1JfSURfQU1EICAg
ICA9IDB4MTAwMiwKLSAgICBWRU5ET1JfSURfSU5URUwgICA9IDB4ODA4NiwKLSAgICBWRU5ET1Jf
SURfTlZJRElBICA9IDB4MTBERSwKKyAgICBWRU5ET1JfSURfVU5LTk9XTiAgPSAweDAsCisgICAg
VkVORE9SX0lEX0FNRCAgICAgID0gMHgxMDAyLAorICAgIFZFTkRPUl9JRF9JTlRFTCAgICA9IDB4
ODA4NiwKKyAgICBWRU5ET1JfSURfTlZJRElBICAgPSAweDEwREUsCisgICAgLy8gVGhpcyBpcyBR
dWFsY29tbSBQQ0kgVmVuZG9yIElELgorICAgIC8vIEFuZHJvaWQgZG9lc24ndCBoYXZlIGEgUENJ
IGJ1cywgYnV0IGFsbCB3ZSBuZWVkIGlzIGEgdW5pcXVlIGlkLgorICAgIFZFTkRPUl9JRF9RVUFM
Q09NTSA9IDB4NTE0MywKIH07CiAKIC8vIEEgbWFjcm8gdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIg
YW4gb2JqZWN0IGhhcyBhIGdpdmVuIHJ1bnRpbWUgdHlwZS4KQEAgLTM1OSwxMiArMjk3LDYgQEAg
aW5saW5lIERlc3RUICpHZXRJbXBsQXMoU3JjVCAqc3JjKQogICAgIHJldHVybiBHZXRBczxEZXN0
VD4oc3JjLT5nZXRJbXBsZW1lbnRhdGlvbigpKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIERl
c3RULCB0eXBlbmFtZSBTcmNUPgotaW5saW5lIGNvbnN0IERlc3RUICpHZXRJbXBsQXMoY29uc3Qg
U3JjVCAqc3JjKQotewotICAgIHJldHVybiBHZXRBczxjb25zdCBEZXN0VD4oc3JjLT5nZXRJbXBs
ZW1lbnRhdGlvbigpKTsKLX0KLQogfQogCiAjaW5jbHVkZSAiYW5nbGV0eXBlcy5pbmwiCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvYW5nbGV0eXBlcy5pbmwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2FuZ2xldHlw
ZXMuaW5sCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvYW5nbGV0eXBlcy5pbmwJKHdvcmtpbmcgY29weSkKQEAgLTksMjEgKzksNiBAQAog
bmFtZXNwYWNlIGdsCiB7CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotYm9vbCBvcGVyYXRvcj09
KGNvbnN0IENvbG9yPFQ+ICZhLCBjb25zdCBDb2xvcjxUPiAmYikKLXsKLSAgICByZXR1cm4gYS5y
ZWQgPT0gYi5yZWQgJiYKLSAgICAgICAgICAgYS5ncmVlbiA9PSBiLmdyZWVuICYmCi0gICAgICAg
ICAgIGEuYmx1ZSA9PSBiLmJsdWUgJiYKLSAgICAgICAgICAgYS5hbHBoYSA9PSBiLmFscGhhOwot
fQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWJvb2wgb3BlcmF0b3IhPShjb25zdCBDb2xvcjxU
PiAmYSwgY29uc3QgQ29sb3I8VD4gJmIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQog
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWN0YW5nbGUgJmEsIGNvbnN0IFJlY3Rhbmds
ZSAmYikKIHsKICAgICByZXR1cm4gYS54ID09IGIueCAmJgpAQCAtNTYsMjMgKzQxLDQgQEAgaW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTYW1wbGVyU3RhdAogICAgIHJldHVybiAhKGEgPT0g
Yik7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVGV4dHVyZVN0YXRlICZhLCBj
b25zdCBUZXh0dXJlU3RhdGUgJmIpCi17Ci0gICAgcmV0dXJuIGEuc3dpenpsZVJlZCA9PSBiLnN3
aXp6bGVSZWQgJiYKLSAgICAgICAgICAgYS5zd2l6emxlR3JlZW4gPT0gYi5zd2l6emxlR3JlZW4g
JiYKLSAgICAgICAgICAgYS5zd2l6emxlQmx1ZSA9PSBiLnN3aXp6bGVCbHVlICYmCi0gICAgICAg
ICAgIGEuc3dpenpsZUFscGhhID09IGIuc3dpenpsZUFscGhhICYmCi0gICAgICAgICAgIGEuc2Ft
cGxlclN0YXRlID09IGIuc2FtcGxlclN0YXRlICYmCi0gICAgICAgICAgIGEuYmFzZUxldmVsID09
IGIuYmFzZUxldmVsICYmCi0gICAgICAgICAgIGEubWF4TGV2ZWwgPT0gYi5tYXhMZXZlbCAmJgot
ICAgICAgICAgICBhLmltbXV0YWJsZUZvcm1hdCA9PSBiLmltbXV0YWJsZUZvcm1hdCAmJgotICAg
ICAgICAgICBhLmltbXV0YWJsZUxldmVscyA9PSBiLmltbXV0YWJsZUxldmVscyAmJgotICAgICAg
ICAgICBhLnVzYWdlID09IGIudXNhZ2U7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgVGV4dHVyZVN0YXRlICZhLCBjb25zdCBUZXh0dXJlU3RhdGUgJmIpCi17Ci0gICAgcmV0dXJu
ICEoYSA9PSBiKTsKLX0KLQogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL2VzM19mb3JtYXRfdHlwZV9jb21iaW5hdGlvbnMuanNvbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZXMzX2Zvcm1hdF90eXBlX2NvbWJp
bmF0aW9ucy5qc29uCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9lczNfZm9ybWF0X3R5cGVfY29tYmluYXRpb25zLmpzb24JKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxNzEgQEAKK3sKKyAgICAiRm9ybWF0IGNvbWJpbmF0aW9ucyBmcm9tIEVT
IDMuMC4xIHNwZWMsIHRhYmxlIDMuMiI6CisgICAgWworICAgICAgICBbICJHTF9SR0JBOCIsICAg
ICAgICAgICAgICAiR0xfUkdCQSIsICAgICAgICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiIF0sCisg
ICAgICAgIFsgIkdMX1JHQjVfQTEiLCAgICAgICAgICAgICJHTF9SR0JBIiwgICAgICAgICAgICAi
R0xfVU5TSUdORURfQllURSIgXSwKKyAgICAgICAgWyAiR0xfUkdCQTQiLCAgICAgICAgICAgICAg
IkdMX1JHQkEiLCAgICAgICAgICAgICJHTF9VTlNJR05FRF9CWVRFIiBdLAorICAgICAgICBbICJH
TF9TUkdCOF9BTFBIQTgiLCAgICAgICAiR0xfUkdCQSIsICAgICAgICAgICAgIkdMX1VOU0lHTkVE
X0JZVEUiIF0sCisgICAgICAgIFsgIkdMX1JHQkE4X1NOT1JNIiwgICAgICAgICJHTF9SR0JBIiwg
ICAgICAgICAgICAiR0xfQllURSIgXSwKKyAgICAgICAgWyAiR0xfUkdCQTQiLCAgICAgICAgICAg
ICAgIkdMX1JHQkEiLCAgICAgICAgICAgICJHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80IiBdLAor
ICAgICAgICBbICJHTF9SR0IxMF9BMiIsICAgICAgICAgICAiR0xfUkdCQSIsICAgICAgICAgICAg
IkdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViIgXSwKKyAgICAgICAgWyAiR0xfUkdCNV9B
MSIsICAgICAgICAgICAgIkdMX1JHQkEiLCAgICAgICAgICAgICJHTF9VTlNJR05FRF9JTlRfMl8x
MF8xMF8xMF9SRVYiIF0sCisgICAgICAgIFsgIkdMX1JHQjVfQTEiLCAgICAgICAgICAgICJHTF9S
R0JBIiwgICAgICAgICAgICAiR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMSIgXSwKKyAgICAgICAg
WyAiR0xfUkdCQTE2RiIsICAgICAgICAgICAgIkdMX1JHQkEiLCAgICAgICAgICAgICJHTF9IQUxG
X0ZMT0FUIiBdLAorICAgICAgICBbICJHTF9SR0JBMTZGIiwgICAgICAgICAgICAiR0xfUkdCQSIs
ICAgICAgICAgICAgIkdMX0hBTEZfRkxPQVRfT0VTIiBdLAorICAgICAgICBbICJHTF9SR0JBMzJG
IiwgICAgICAgICAgICAiR0xfUkdCQSIsICAgICAgICAgICAgIkdMX0ZMT0FUIiBdLAorICAgICAg
ICBbICJHTF9SR0JBMTZGIiwgICAgICAgICAgICAiR0xfUkdCQSIsICAgICAgICAgICAgIkdMX0ZM
T0FUIiBdLAorICAgICAgICBbICJHTF9SR0JBOFVJIiwgICAgICAgICAgICAiR0xfUkdCQV9JTlRF
R0VSIiwgICAgIkdMX1VOU0lHTkVEX0JZVEUiIF0sCisgICAgICAgIFsgIkdMX1JHQkE4SSIsICAg
ICAgICAgICAgICJHTF9SR0JBX0lOVEVHRVIiLCAgICAiR0xfQllURSIgXSwKKyAgICAgICAgWyAi
R0xfUkdCQTE2VUkiLCAgICAgICAgICAgIkdMX1JHQkFfSU5URUdFUiIsICAgICJHTF9VTlNJR05F
RF9TSE9SVCIgXSwKKyAgICAgICAgWyAiR0xfUkdCQTE2SSIsICAgICAgICAgICAgIkdMX1JHQkFf
SU5URUdFUiIsICAgICJHTF9TSE9SVCIgXSwKKyAgICAgICAgWyAiR0xfUkdCQTMyVUkiLCAgICAg
ICAgICAgIkdMX1JHQkFfSU5URUdFUiIsICAgICJHTF9VTlNJR05FRF9JTlQiIF0sCisgICAgICAg
IFsgIkdMX1JHQkEzMkkiLCAgICAgICAgICAgICJHTF9SR0JBX0lOVEVHRVIiLCAgICAiR0xfSU5U
IiBdLAorICAgICAgICBbICJHTF9SR0IxMF9BMlVJIiwgICAgICAgICAiR0xfUkdCQV9JTlRFR0VS
IiwgICAgIkdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViIgXSwKKyAgICAgICAgWyAiR0xf
UkdCOCIsICAgICAgICAgICAgICAgIkdMX1JHQiIsICAgICAgICAgICAgICJHTF9VTlNJR05FRF9C
WVRFIiBdLAorICAgICAgICBbICJHTF9SR0I1NjUiLCAgICAgICAgICAgICAiR0xfUkdCIiwgICAg
ICAgICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiIF0sCisgICAgICAgIFsgIkdMX1NSR0I4IiwgICAg
ICAgICAgICAgICJHTF9SR0IiLCAgICAgICAgICAgICAiR0xfVU5TSUdORURfQllURSIgXSwKKyAg
ICAgICAgWyAiR0xfUkdCOF9TTk9STSIsICAgICAgICAgIkdMX1JHQiIsICAgICAgICAgICAgICJH
TF9CWVRFIiBdLAorICAgICAgICBbICJHTF9SR0I1NjUiLCAgICAgICAgICAgICAiR0xfUkdCIiwg
ICAgICAgICAgICAgIkdMX1VOU0lHTkVEX1NIT1JUXzVfNl81IiBdLAorICAgICAgICBbICJHTF9S
MTFGX0cxMUZfQjEwRiIsICAgICAiR0xfUkdCIiwgICAgICAgICAgICAgIkdMX1VOU0lHTkVEX0lO
VF8xMEZfMTFGXzExRl9SRVYiIF0sCisgICAgICAgIFsgIkdMX1JHQjlfRTUiLCAgICAgICAgICAg
ICJHTF9SR0IiLCAgICAgICAgICAgICAiR0xfVU5TSUdORURfSU5UXzVfOV85XzlfUkVWIiBdLAor
ICAgICAgICBbICJHTF9SR0IxNkYiLCAgICAgICAgICAgICAiR0xfUkdCIiwgICAgICAgICAgICAg
IkdMX0hBTEZfRkxPQVQiIF0sCisgICAgICAgIFsgIkdMX1JHQjE2RiIsICAgICAgICAgICAgICJH
TF9SR0IiLCAgICAgICAgICAgICAiR0xfSEFMRl9GTE9BVF9PRVMiIF0sCisgICAgICAgIFsgIkdM
X1IxMUZfRzExRl9CMTBGIiwgICAgICJHTF9SR0IiLCAgICAgICAgICAgICAiR0xfSEFMRl9GTE9B
VCIgXSwKKyAgICAgICAgWyAiR0xfUjExRl9HMTFGX0IxMEYiLCAgICAgIkdMX1JHQiIsICAgICAg
ICAgICAgICJHTF9IQUxGX0ZMT0FUX09FUyIgXSwKKyAgICAgICAgWyAiR0xfUkdCOV9FNSIsICAg
ICAgICAgICAgIkdMX1JHQiIsICAgICAgICAgICAgICJHTF9IQUxGX0ZMT0FUIiBdLAorICAgICAg
ICBbICJHTF9SR0I5X0U1IiwgICAgICAgICAgICAiR0xfUkdCIiwgICAgICAgICAgICAgIkdMX0hB
TEZfRkxPQVRfT0VTIiBdLAorICAgICAgICBbICJHTF9SR0IzMkYiLCAgICAgICAgICAgICAiR0xf
UkdCIiwgICAgICAgICAgICAgIkdMX0ZMT0FUIiBdLAorICAgICAgICBbICJHTF9SR0IxNkYiLCAg
ICAgICAgICAgICAiR0xfUkdCIiwgICAgICAgICAgICAgIkdMX0ZMT0FUIiBdLAorICAgICAgICBb
ICJHTF9SMTFGX0cxMUZfQjEwRiIsICAgICAiR0xfUkdCIiwgICAgICAgICAgICAgIkdMX0ZMT0FU
IiBdLAorICAgICAgICBbICJHTF9SR0I5X0U1IiwgICAgICAgICAgICAiR0xfUkdCIiwgICAgICAg
ICAgICAgIkdMX0ZMT0FUIiBdLAorICAgICAgICBbICJHTF9SR0I4VUkiLCAgICAgICAgICAgICAi
R0xfUkdCX0lOVEVHRVIiLCAgICAgIkdMX1VOU0lHTkVEX0JZVEUiIF0sCisgICAgICAgIFsgIkdM
X1JHQjhJIiwgICAgICAgICAgICAgICJHTF9SR0JfSU5URUdFUiIsICAgICAiR0xfQllURSIgXSwK
KyAgICAgICAgWyAiR0xfUkdCMTZVSSIsICAgICAgICAgICAgIkdMX1JHQl9JTlRFR0VSIiwgICAg
ICJHTF9VTlNJR05FRF9TSE9SVCIgXSwKKyAgICAgICAgWyAiR0xfUkdCMTZJIiwgICAgICAgICAg
ICAgIkdMX1JHQl9JTlRFR0VSIiwgICAgICJHTF9TSE9SVCIgXSwKKyAgICAgICAgWyAiR0xfUkdC
MzJVSSIsICAgICAgICAgICAgIkdMX1JHQl9JTlRFR0VSIiwgICAgICJHTF9VTlNJR05FRF9JTlQi
IF0sCisgICAgICAgIFsgIkdMX1JHQjMySSIsICAgICAgICAgICAgICJHTF9SR0JfSU5URUdFUiIs
ICAgICAiR0xfSU5UIiBdLAorICAgICAgICBbICJHTF9SRzgiLCAgICAgICAgICAgICAgICAiR0xf
UkciLCAgICAgICAgICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiIF0sCisgICAgICAgIFsgIkdMX1JH
OF9TTk9STSIsICAgICAgICAgICJHTF9SRyIsICAgICAgICAgICAgICAiR0xfQllURSIgXSwKKyAg
ICAgICAgWyAiR0xfUkcxNkYiLCAgICAgICAgICAgICAgIkdMX1JHIiwgICAgICAgICAgICAgICJH
TF9IQUxGX0ZMT0FUIiBdLAorICAgICAgICBbICJHTF9SRzE2RiIsICAgICAgICAgICAgICAiR0xf
UkciLCAgICAgICAgICAgICAgIkdMX0hBTEZfRkxPQVRfT0VTIiBdLAorICAgICAgICBbICJHTF9S
RzMyRiIsICAgICAgICAgICAgICAiR0xfUkciLCAgICAgICAgICAgICAgIkdMX0ZMT0FUIiBdLAor
ICAgICAgICBbICJHTF9SRzE2RiIsICAgICAgICAgICAgICAiR0xfUkciLCAgICAgICAgICAgICAg
IkdMX0ZMT0FUIiBdLAorICAgICAgICBbICJHTF9SRzhVSSIsICAgICAgICAgICAgICAiR0xfUkdf
SU5URUdFUiIsICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiIF0sCisgICAgICAgIFsgIkdMX1JHOEki
LCAgICAgICAgICAgICAgICJHTF9SR19JTlRFR0VSIiwgICAgICAiR0xfQllURSIgXSwKKyAgICAg
ICAgWyAiR0xfUkcxNlVJIiwgICAgICAgICAgICAgIkdMX1JHX0lOVEVHRVIiLCAgICAgICJHTF9V
TlNJR05FRF9TSE9SVCIgXSwKKyAgICAgICAgWyAiR0xfUkcxNkkiLCAgICAgICAgICAgICAgIkdM
X1JHX0lOVEVHRVIiLCAgICAgICJHTF9TSE9SVCIgXSwKKyAgICAgICAgWyAiR0xfUkczMlVJIiwg
ICAgICAgICAgICAgIkdMX1JHX0lOVEVHRVIiLCAgICAgICJHTF9VTlNJR05FRF9JTlQiIF0sCisg
ICAgICAgIFsgIkdMX1JHMzJJIiwgICAgICAgICAgICAgICJHTF9SR19JTlRFR0VSIiwgICAgICAi
R0xfSU5UIiBdLAorICAgICAgICBbICJHTF9SOCIsICAgICAgICAgICAgICAgICAiR0xfUkVEIiwg
ICAgICAgICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiIF0sCisgICAgICAgIFsgIkdMX1I4X1NOT1JN
IiwgICAgICAgICAgICJHTF9SRUQiLCAgICAgICAgICAgICAiR0xfQllURSIgXSwKKyAgICAgICAg
WyAiR0xfUjE2RiIsICAgICAgICAgICAgICAgIkdMX1JFRCIsICAgICAgICAgICAgICJHTF9IQUxG
X0ZMT0FUIiBdLAorICAgICAgICBbICJHTF9SMTZGIiwgICAgICAgICAgICAgICAiR0xfUkVEIiwg
ICAgICAgICAgICAgIkdMX0hBTEZfRkxPQVRfT0VTIiBdLAorICAgICAgICBbICJHTF9SMzJGIiwg
ICAgICAgICAgICAgICAiR0xfUkVEIiwgICAgICAgICAgICAgIkdMX0ZMT0FUIiBdLAorICAgICAg
ICBbICJHTF9SMTZGIiwgICAgICAgICAgICAgICAiR0xfUkVEIiwgICAgICAgICAgICAgIkdMX0ZM
T0FUIiBdLAorICAgICAgICBbICJHTF9SOFVJIiwgICAgICAgICAgICAgICAiR0xfUkVEX0lOVEVH
RVIiLCAgICAgIkdMX1VOU0lHTkVEX0JZVEUiIF0sCisgICAgICAgIFsgIkdMX1I4SSIsICAgICAg
ICAgICAgICAgICJHTF9SRURfSU5URUdFUiIsICAgICAiR0xfQllURSIgXSwKKyAgICAgICAgWyAi
R0xfUjE2VUkiLCAgICAgICAgICAgICAgIkdMX1JFRF9JTlRFR0VSIiwgICAgICJHTF9VTlNJR05F
RF9TSE9SVCIgXSwKKyAgICAgICAgWyAiR0xfUjE2SSIsICAgICAgICAgICAgICAgIkdMX1JFRF9J
TlRFR0VSIiwgICAgICJHTF9TSE9SVCIgXSwKKyAgICAgICAgWyAiR0xfUjMyVUkiLCAgICAgICAg
ICAgICAgIkdMX1JFRF9JTlRFR0VSIiwgICAgICJHTF9VTlNJR05FRF9JTlQiIF0sCisgICAgICAg
IFsgIkdMX1IzMkkiLCAgICAgICAgICAgICAgICJHTF9SRURfSU5URUdFUiIsICAgICAiR0xfSU5U
IiBdCisgICAgXSwKKyAgICAiVW5zaXplZCBmb3JtYXRzIjoKKyAgICBbCisgICAgICAgIFsgIkdM
X1JHQkEiLCAgICAgICAgICAgICAgICJHTF9SR0JBIiwgICAgICAgICAgICAiR0xfVU5TSUdORURf
QllURSIgXSwKKyAgICAgICAgWyAiR0xfUkdCQSIsICAgICAgICAgICAgICAgIkdMX1JHQkEiLCAg
ICAgICAgICAgICJHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80IiBdLAorICAgICAgICBbICJHTF9S
R0JBIiwgICAgICAgICAgICAgICAiR0xfUkdCQSIsICAgICAgICAgICAgIkdMX1VOU0lHTkVEX1NI
T1JUXzVfNV81XzEiIF0sCisgICAgICAgIFsgIkdMX1JHQiIsICAgICAgICAgICAgICAgICJHTF9S
R0IiLCAgICAgICAgICAgICAiR0xfVU5TSUdORURfQllURSIgXSwKKyAgICAgICAgWyAiR0xfUkdC
IiwgICAgICAgICAgICAgICAgIkdMX1JHQiIsICAgICAgICAgICAgICJHTF9VTlNJR05FRF9TSE9S
VF81XzZfNSIgXSwKKyAgICAgICAgWyAiR0xfTFVNSU5BTkNFX0FMUEhBIiwgICAgIkdMX0xVTUlO
QU5DRV9BTFBIQSIsICJHTF9VTlNJR05FRF9CWVRFIiBdLAorICAgICAgICBbICJHTF9MVU1JTkFO
Q0UiLCAgICAgICAgICAiR0xfTFVNSU5BTkNFIiwgICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiIF0s
CisgICAgICAgIFsgIkdMX0FMUEhBIiwgICAgICAgICAgICAgICJHTF9BTFBIQSIsICAgICAgICAg
ICAiR0xfVU5TSUdORURfQllURSIgXSwKKyAgICAgICAgWyAiR0xfU1JHQl9BTFBIQV9FWFQiLCAg
ICAgIkdMX1NSR0JfQUxQSEFfRVhUIiwgICJHTF9VTlNJR05FRF9CWVRFIiBdLAorICAgICAgICBb
ICJHTF9TUkdCX0VYVCIsICAgICAgICAgICAiR0xfU1JHQl9FWFQiLCAgICAgICAgIkdMX1VOU0lH
TkVEX0JZVEUiIF0sCisgICAgICAgIFsgIkdMX1JHIiwgICAgICAgICAgICAgICAgICJHTF9SRyIs
ICAgICAgICAgICAgICAiR0xfVU5TSUdORURfQllURSIgXSwKKyAgICAgICAgWyAiR0xfUkciLCAg
ICAgICAgICAgICAgICAgIkdMX1JHIiwgICAgICAgICAgICAgICJHTF9GTE9BVCIgXSwKKyAgICAg
ICAgWyAiR0xfUkciLCAgICAgICAgICAgICAgICAgIkdMX1JHIiwgICAgICAgICAgICAgICJHTF9I
QUxGX0ZMT0FUIiBdLAorICAgICAgICBbICJHTF9SRyIsICAgICAgICAgICAgICAgICAiR0xfUkci
LCAgICAgICAgICAgICAgIkdMX0hBTEZfRkxPQVRfT0VTIiBdLAorICAgICAgICBbICJHTF9SRUQi
LCAgICAgICAgICAgICAgICAiR0xfUkVEIiwgICAgICAgICAgICAgIkdMX1VOU0lHTkVEX0JZVEUi
IF0sCisgICAgICAgIFsgIkdMX1JFRCIsICAgICAgICAgICAgICAgICJHTF9SRUQiLCAgICAgICAg
ICAgICAiR0xfRkxPQVQiIF0sCisgICAgICAgIFsgIkdMX1JFRCIsICAgICAgICAgICAgICAgICJH
TF9SRUQiLCAgICAgICAgICAgICAiR0xfSEFMRl9GTE9BVCIgXSwKKyAgICAgICAgWyAiR0xfUkVE
IiwgICAgICAgICAgICAgICAgIkdMX1JFRCIsICAgICAgICAgICAgICJHTF9IQUxGX0ZMT0FUX09F
UyIgXSwKKyAgICAgICAgWyAiR0xfREVQVEhfU1RFTkNJTCIsICAgICAgIkdMX0RFUFRIX1NURU5D
SUwiLCAgICJHTF9VTlNJR05FRF9JTlRfMjRfOCIgXQorICAgIF0sCisgICAgIkRlcHRoIHN0ZW5j
aWwgZm9ybWF0cyI6CisgICAgWworICAgICAgICBbICJHTF9ERVBUSF9DT01QT05FTlQxNiIsICAi
R0xfREVQVEhfQ09NUE9ORU5UIiwgIkdMX1VOU0lHTkVEX1NIT1JUIiBdLAorICAgICAgICBbICJH
TF9ERVBUSF9DT01QT05FTlQyNCIsICAiR0xfREVQVEhfQ09NUE9ORU5UIiwgIkdMX1VOU0lHTkVE
X0lOVCIgXSwKKyAgICAgICAgWyAiR0xfREVQVEhfQ09NUE9ORU5UMTYiLCAgIkdMX0RFUFRIX0NP
TVBPTkVOVCIsICJHTF9VTlNJR05FRF9JTlQiIF0sCisgICAgICAgIFsgIkdMX0RFUFRIX0NPTVBP
TkVOVDMyRiIsICJHTF9ERVBUSF9DT01QT05FTlQiLCAiR0xfRkxPQVQiIF0sCisgICAgICAgIFsg
IkdMX0RFUFRIMjRfU1RFTkNJTDgiLCAgICJHTF9ERVBUSF9TVEVOQ0lMIiwgICAiR0xfVU5TSUdO
RURfSU5UXzI0XzgiIF0sCisgICAgICAgIFsgIkdMX0RFUFRIMzJGX1NURU5DSUw4IiwgICJHTF9E
RVBUSF9TVEVOQ0lMIiwgICAiR0xfRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWIiBdCisg
ICAgXSwKKyAgICAiRnJvbSBHTF9FWFRfc1JHQiI6CisgICAgWworICAgICAgICBbICJHTF9TUkdC
OF9BTFBIQThfRVhUIiwgICAiR0xfU1JHQl9BTFBIQV9FWFQiLCAiR0xfVU5TSUdORURfQllURSIg
XSwKKyAgICAgICAgWyAiR0xfU1JHQjgiLCAgICAgICAgICAgICAgIkdMX1NSR0JfRVhUIiwgICAg
ICAgIkdMX1VOU0lHTkVEX0JZVEUiIF0KKyAgICBdLAorICAgICJGcm9tIEdMX09FU190ZXh0dXJl
X2Zsb2F0IjoKKyAgICBbCisgICAgICAgIFsgIkdMX1JHQkEiLCAgICAgICAgICAgICAgICJHTF9S
R0JBIiwgICAgICAgICAgICAiR0xfRkxPQVQiIF0sCisgICAgICAgIFsgIkdMX1JHQiIsICAgICAg
ICAgICAgICAgICJHTF9SR0IiLCAgICAgICAgICAgICAiR0xfRkxPQVQiIF0sCisgICAgICAgIFsg
IkdMX0xVTUlOQU5DRV9BTFBIQSIsICAgICJHTF9MVU1JTkFOQ0VfQUxQSEEiLCAiR0xfRkxPQVQi
IF0sCisgICAgICAgIFsgIkdMX0xVTUlOQU5DRSIsICAgICAgICAgICJHTF9MVU1JTkFOQ0UiLCAg
ICAgICAiR0xfRkxPQVQiIF0sCisgICAgICAgIFsgIkdMX0FMUEhBIiwgICAgICAgICAgICAgICJH
TF9BTFBIQSIsICAgICAgICAgICAiR0xfRkxPQVQiIF0KKyAgICBdLAorICAgICJGcm9tIEdMX09F
U190ZXh0dXJlX2hhbGZfZmxvYXQiOgorICAgIFsKKyAgICAgICAgWyAiR0xfUkdCQSIsICAgICAg
ICAgICAgICAgIkdMX1JHQkEiLCAgICAgICAgICAgICJHTF9IQUxGX0ZMT0FUX09FUyIgXSwKKyAg
ICAgICAgWyAiR0xfUkdCIiwgICAgICAgICAgICAgICAgIkdMX1JHQiIsICAgICAgICAgICAgICJH
TF9IQUxGX0ZMT0FUX09FUyIgXSwKKyAgICAgICAgWyAiR0xfTFVNSU5BTkNFX0FMUEhBIiwgICAg
IkdMX0xVTUlOQU5DRV9BTFBIQSIsICJHTF9IQUxGX0ZMT0FUIiBdLAorICAgICAgICBbICJHTF9M
VU1JTkFOQ0VfQUxQSEEiLCAgICAiR0xfTFVNSU5BTkNFX0FMUEhBIiwgIkdMX0hBTEZfRkxPQVRf
T0VTIiBdLAorICAgICAgICBbICJHTF9MVU1JTkFOQ0UiLCAgICAgICAgICAiR0xfTFVNSU5BTkNF
IiwgICAgICAgIkdMX0hBTEZfRkxPQVQiIF0sCisgICAgICAgIFsgIkdMX0xVTUlOQU5DRSIsICAg
ICAgICAgICJHTF9MVU1JTkFOQ0UiLCAgICAgICAiR0xfSEFMRl9GTE9BVF9PRVMiIF0sCisgICAg
ICAgIFsgIkdMX0FMUEhBIiwgICAgICAgICAgICAgICJHTF9BTFBIQSIsICAgICAgICAgICAiR0xf
SEFMRl9GTE9BVCIgXSwKKyAgICAgICAgWyAiR0xfQUxQSEEiLCAgICAgICAgICAgICAgIkdMX0FM
UEhBIiwgICAgICAgICAgICJHTF9IQUxGX0ZMT0FUX09FUyIgXQorICAgIF0sCisgICAgIkZyb20g
R0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4IjoKKyAgICBbCisgICAgICAgIFsgIkdMX0JH
UkFfRVhUIiwgICAgICAgICAgICJHTF9CR1JBX0VYVCIsICAgICAgICAiR0xfVU5TSUdORURfQllU
RSIgXQorICAgIF0sCisgICAgIkZyb20gR0xfRVhUX3RleHR1cmVfc3RvcmFnZSI6CisgICAgWwor
ICAgICAgICBbICJHTF9BTFBIQThfRVhUIiwgICAgICAgICAgICAgIkdMX0FMUEhBIiwgICAgICAg
ICAgICJHTF9VTlNJR05FRF9CWVRFIiBdLAorICAgICAgICBbICJHTF9MVU1JTkFOQ0U4X0VYVCIs
ICAgICAgICAgIkdMX0xVTUlOQU5DRSIsICAgICAgICJHTF9VTlNJR05FRF9CWVRFIiBdLAorICAg
ICAgICBbICJHTF9MVU1JTkFOQ0U4X0FMUEhBOF9FWFQiLCAgIkdMX0xVTUlOQU5DRV9BTFBIQSIs
ICJHTF9VTlNJR05FRF9CWVRFIiBdLAorICAgICAgICBbICJHTF9BTFBIQTMyRl9FWFQiLCAgICAg
ICAgICAgIkdMX0FMUEhBIiwgICAgICAgICAgICJHTF9GTE9BVCIgXSwKKyAgICAgICAgWyAiR0xf
TFVNSU5BTkNFMzJGX0VYVCIsICAgICAgICJHTF9MVU1JTkFOQ0UiLCAgICAgICAiR0xfRkxPQVQi
IF0sCisgICAgICAgIFsgIkdMX0xVTUlOQU5DRV9BTFBIQTMyRl9FWFQiLCAiR0xfTFVNSU5BTkNF
X0FMUEhBIiwgIkdMX0ZMT0FUIiBdLAorICAgICAgICBbICJHTF9BTFBIQTE2Rl9FWFQiLCAgICAg
ICAgICAgIkdMX0FMUEhBIiwgICAgICAgICAgICJHTF9IQUxGX0ZMT0FUIiBdLAorICAgICAgICBb
ICJHTF9BTFBIQTE2Rl9FWFQiLCAgICAgICAgICAgIkdMX0FMUEhBIiwgICAgICAgICAgICJHTF9I
QUxGX0ZMT0FUX09FUyIgXSwKKyAgICAgICAgWyAiR0xfTFVNSU5BTkNFMTZGX0VYVCIsICAgICAg
ICJHTF9MVU1JTkFOQ0UiLCAgICAgICAiR0xfSEFMRl9GTE9BVCIgXSwKKyAgICAgICAgWyAiR0xf
TFVNSU5BTkNFMTZGX0VYVCIsICAgICAgICJHTF9MVU1JTkFOQ0UiLCAgICAgICAiR0xfSEFMRl9G
TE9BVF9PRVMiIF0sCisgICAgICAgIFsgIkdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9FWFQiLCAiR0xf
TFVNSU5BTkNFX0FMUEhBIiwgIkdMX0hBTEZfRkxPQVQiIF0sCisgICAgICAgIFsgIkdMX0xVTUlO
QU5DRV9BTFBIQTE2Rl9FWFQiLCAiR0xfTFVNSU5BTkNFX0FMUEhBIiwgIkdMX0hBTEZfRkxPQVRf
T0VTIiBdCisgICAgXSwKKyAgICAiRnJvbSBHTF9FWFRfdGV4dHVyZV9zdG9yYWdlIGFuZCBHTF9F
WFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiOgorICAgIFsKKyAgICAgICAgWyAiR0xfQkdSQThf
RVhUIiwgICAgICAgICAgICAgICJHTF9CR1JBX0VYVCIsICAgICAgICAiR0xfVU5TSUdORURfQllU
RSIgXSwKKyAgICAgICAgWyAiR0xfQkdSQTRfQU5HTEVYIiwgICAgICAgICAgICJHTF9CR1JBX0VY
VCIsICAgICAgICAiR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF9SRVZfRVhUIiBdLAorICAgICAg
ICBbICJHTF9CR1JBNF9BTkdMRVgiLCAgICAgICAgICAgIkdMX0JHUkFfRVhUIiwgICAgICAgICJH
TF9VTlNJR05FRF9CWVRFIiBdLAorICAgICAgICBbICJHTF9CR1I1X0ExX0FOR0xFWCIsICAgICAg
ICAgIkdMX0JHUkFfRVhUIiwgICAgICAgICJHTF9VTlNJR05FRF9TSE9SVF8xXzVfNV81X1JFVl9F
WFQiIF0sCisgICAgICAgIFsgIkdMX0JHUjVfQTFfQU5HTEVYIiwgICAgICAgICAiR0xfQkdSQV9F
WFQiLCAgICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiIF0KKyAgICBdLAorICAgICJGcm9tIEdMX0FO
R0xFX2RlcHRoX3RleHR1cmUgYW5kIE9FU19kZXB0aF90ZXh0dXJlIjoKKyAgICBbCisgICAgICAg
IFsgIkdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUyIsICAiR0xfREVQVEhfQ09NUE9ORU5UIiwgIkdM
X1VOU0lHTkVEX0lOVF8yNF84IiBdLAorICAgICAgICBbICJHTF9ERVBUSF9DT01QT05FTlQiLCAg
ICAgICAgIkdMX0RFUFRIX0NPTVBPTkVOVCIsICJHTF9VTlNJR05FRF9TSE9SVCIgXSwKKyAgICAg
ICAgWyAiR0xfREVQVEhfQ09NUE9ORU5UIiwgICAgICAgICJHTF9ERVBUSF9DT01QT05FTlQiLCAi
R0xfVU5TSUdORURfSU5UIiBdCisgICAgXSwKKyAgICAiRnJvbSBHTF9FWFRfdGV4dHVyZV9ub3Jt
MTYiOgorICAgIFsKKyAgICAgICAgWyAiR0xfUjE2X0VYVCIsICAgICAgICAgICJHTF9SRUQiLCAg
IkdMX1VOU0lHTkVEX1NIT1JUIiBdLAorICAgICAgICBbICJHTF9SRzE2X0VYVCIsICAgICAgICAg
IkdMX1JHIiwgICAiR0xfVU5TSUdORURfU0hPUlQiIF0sCisgICAgICAgIFsgIkdMX1JHQjE2X0VY
VCIsICAgICAgICAiR0xfUkdCIiwgICJHTF9VTlNJR05FRF9TSE9SVCIgXSwKKyAgICAgICAgWyAi
R0xfUkdCQTE2X0VYVCIsICAgICAgICJHTF9SR0JBIiwgIkdMX1VOU0lHTkVEX1NIT1JUIiBdLAor
ICAgICAgICBbICJHTF9SMTZfU05PUk1fRVhUIiwgICAgIkdMX1JFRCIsICAiR0xfU0hPUlQiIF0s
CisgICAgICAgIFsgIkdMX1JHMTZfU05PUk1fRVhUIiwgICAiR0xfUkciLCAgICJHTF9TSE9SVCIg
XSwKKyAgICAgICAgWyAiR0xfUkdCMTZfU05PUk1fRVhUIiwgICJHTF9SR0IiLCAgIkdMX1NIT1JU
IiBdLAorICAgICAgICBbICJHTF9SR0JBMTZfU05PUk1fRVhUIiwgIkdMX1JHQkEiLCAiR0xfU0hP
UlQiIF0KKyAgICBdCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvZm9ybWF0X21hcF9hdXRvZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvZm9ybWF0X21hcF9hdXRvZ2VuLmNwcAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZm9ybWF0X21hcF9hdXRv
Z2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1MzAgQEAKKy8vIEdFTkVSQVRFRCBG
SUxFIC0gRE8gTk9UIEVESVQuCisvLyBHZW5lcmF0ZWQgYnkgZ2VuX2Zvcm1hdF9tYXAucHkgdXNp
bmcgZGF0YSBmcm9tIGZvcm1hdF9tYXBfZGF0YS5qc29uLgorLy8gRVMzIGZvcm1hdCBpbmZvIGZy
b20gZXMzX2Zvcm1hdF90eXBlX2NvbWJpbmF0aW9ucy5qc29uLgorLy8KKy8vIENvcHlyaWdodCAy
MDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIGZvcm1h
dF9tYXA6CisvLyAgIERldGVybWluaW5nIHRoZSBzaXplZCBpbnRlcm5hbCBmb3JtYXQgZnJvbSBh
IChmb3JtYXQsdHlwZSkgcGFpci4KKy8vICAgQWxzbyBjaGVjayBlczMgZm9ybWF0IGNvbWJpbmF0
aW9ucyBmb3IgdmFsaWRpdHkuCisKKyNpbmNsdWRlICJhbmdsZV9nbC5oIgorI2luY2x1ZGUgImNv
bW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgZ2wKK3sKKworR0xlbnVtIEdldFNpemVkRm9ybWF0
SW50ZXJuYWwoR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoIChmb3Jt
YXQpCisgICAgeworICAgICAgICBjYXNlIEdMX0FMUEhBOgorICAgICAgICAgICAgc3dpdGNoICh0
eXBlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBHTF9BTFBIQTMyRl9FWFQ7CisgICAgICAgICAgICAgICAg
Y2FzZSBHTF9IQUxGX0ZMT0FUOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfQUxQSEEx
NkZfRVhUOworICAgICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBHTF9BTFBIQTE2Rl9FWFQ7CisgICAgICAgICAgICAgICAgY2Fz
ZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfQUxQSEE4
X0VYVDsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xf
QkdSQV9FWFQ6CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gR0xfQkdSQThfRVhUOworICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hP
UlRfMV81XzVfNV9SRVZfRVhUOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfQkdSNV9B
MV9BTkdMRVg7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80
X1JFVl9FWFQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9CR1JBNF9BTkdMRVg7Cisg
ICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF81XzZfNToKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEdMX0JHUjU2NV9BTkdMRVg7CisgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhU
OgorICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdM
X0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xF
OgorICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdM
X0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU7CisgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5H
TEU6CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
R0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRTsKKyAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VY
VDoKKyAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBH
TF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQ6CisgICAgICAgICAgICBz
d2l0Y2ggKHR5cGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9GTE9B
VDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0RFUFRIX0NPTVBPTkVOVDMyRjsKKyAg
ICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUzsKKyAgICAgICAgICAgICAgICBjYXNlIEdM
X1VOU0lHTkVEX1NIT1JUOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfREVQVEhfQ09N
UE9ORU5UMTY7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNl
IEdMX0RFUFRIX1NURU5DSUw6CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9GTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9S
RVY6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9ERVBUSDMyRl9TVEVOQ0lMODsKKyAg
ICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF8yNF84OgorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gR0xfREVQVEgyNF9TVEVOQ0lMODsKKyAgICAgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFOgorICAgICAgICAgICAgc3dpdGNo
ICh0eXBlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9MVU1JTkFOQ0UzMkZfRVhUOworICAgICAgICAg
ICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdM
X0xVTUlOQU5DRTE2Rl9FWFQ7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUX09F
UzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0xVTUlOQU5DRTE2Rl9FWFQ7CisgICAg
ICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gR0xfTFVNSU5BTkNFOF9FWFQ7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQToKKyAgICAgICAgICAgIHN3aXRjaCAo
dHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0ZMT0FUOgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gR0xfTFVNSU5BTkNFX0FMUEhBMzJGX0VYVDsKKyAgICAg
ICAgICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBHTF9MVU1JTkFOQ0VfQUxQSEExNkZfRVhUOworICAgICAgICAgICAgICAgIGNhc2UgR0xfSEFM
Rl9GTE9BVF9PRVM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9MVU1JTkFOQ0VfQUxQ
SEExNkZfRVhUOworICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEdMX0xVTUlOQU5DRThfQUxQSEE4X0VYVDsKKyAgICAgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfUkVEOgorICAgICAgICAg
ICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgR0xf
QllURToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1I4X1NOT1JNOworICAgICAgICAg
ICAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9SMzJG
OworICAgICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVDoKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEdMX1IxNkY7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUX09F
UzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1IxNkY7CisgICAgICAgICAgICAgICAg
Y2FzZSBHTF9TSE9SVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1IxNl9TTk9STV9F
WFQ7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gR0xfUjg7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9T
SE9SVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1IxNl9FWFQ7CisgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX1JFRF9JTlRFR0VSOgorICAg
ICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNh
c2UgR0xfQllURToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1I4STsKKyAgICAgICAg
ICAgICAgICBjYXNlIEdMX0lOVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1IzMkk7
CisgICAgICAgICAgICAgICAgY2FzZSBHTF9TSE9SVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEdMX1IxNkk7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gR0xfUjhVSTsKKyAgICAgICAgICAgICAgICBjYXNlIEdM
X1VOU0lHTkVEX0lOVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1IzMlVJOworICAg
ICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBHTF9SMTZVSTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2UgR0xfUkc6CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgY2FzZSBHTF9CWVRFOgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gR0xfUkc4X1NOT1JNOworICAgICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBHTF9SRzMyRjsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0hB
TEZfRkxPQVQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9SRzE2RjsKKyAgICAgICAg
ICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVRfT0VTOgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gR0xfUkcxNkY7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9TSE9SVDoKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEdMX1JHMTZfU05PUk1fRVhUOworICAgICAgICAgICAgICAgIGNhc2Ug
R0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHODsKKyAg
ICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOgorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gR0xfUkcxNl9FWFQ7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBjYXNlIEdMX1JHQjoKKyAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0JZVEU6CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBHTF9SR0I4X1NOT1JNOworICAgICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9SR0IzMkY7CisgICAgICAgICAgICAgICAgY2Fz
ZSBHTF9IQUxGX0ZMT0FUOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfUkdCMTZGOwor
ICAgICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBHTF9SR0IxNkY7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9TSE9SVDoKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjE2X1NOT1JNX0VYVDsKKyAgICAgICAgICAg
ICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBH
TF9SR0I4OworICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UXzEwRl8xMUZfMTFG
X1JFVjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1IxMUZfRzExRl9CMTBGOworICAg
ICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UXzVfOV85XzlfUkVWOgorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gR0xfUkdCOV9FNTsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VO
U0lHTkVEX1NIT1JUOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfUkdCMTZfRVhUOwor
ICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNV82XzU6CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBHTF9SR0I1NjU7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9CWVRFOgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gR0xfUkdCQThfU05PUk07CisgICAgICAgICAgICAgICAgY2FzZSBHTF9G
TE9BVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQkEzMkY7CisgICAgICAgICAg
ICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xf
UkdCQTE2RjsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVRfT0VTOgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gR0xfUkdCQTE2RjsKKyAgICAgICAgICAgICAgICBjYXNlIEdM
X1NIT1JUOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfUkdCQTE2X1NOT1JNX0VYVDsK
KyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBHTF9SR0JBODsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lO
VF8yXzEwXzEwXzEwX1JFVjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjEwX0Ey
OworICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBHTF9SR0JBMTZfRVhUOworICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5T
SUdORURfU0hPUlRfNF80XzRfNDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQkE0
OworICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMToKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjVfQTE7CisgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIEdMX1JHQkFfSU5URUdFUjoKKyAgICAgICAgICAgIHN3
aXRjaCAodHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0JZVEU6
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9SR0JBOEk7CisgICAgICAgICAgICAgICAg
Y2FzZSBHTF9JTlQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9SR0JBMzJJOworICAg
ICAgICAgICAgICAgIGNhc2UgR0xfU0hPUlQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBH
TF9SR0JBMTZJOworICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQkE4VUk7CisgICAgICAgICAgICAgICAgY2FzZSBH
TF9VTlNJR05FRF9JTlQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9SR0JBMzJVSTsK
KyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVjoKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjEwX0EyVUk7CisgICAgICAgICAgICAgICAg
Y2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JH
QkExNlVJOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBH
TF9SR0JfSU5URUdFUjoKKyAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBjYXNlIEdMX0JZVEU6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBHTF9SR0I4STsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0lOVDoKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEdMX1JHQjMySTsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1NIT1JUOgor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfUkdCMTZJOworICAgICAgICAgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjhV
STsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEdMX1JHQjMyVUk7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05F
RF9TSE9SVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjE2VUk7CisgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX1JHX0lOVEVHRVI6Cisg
ICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Y2FzZSBHTF9CWVRFOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfUkc4STsKKyAgICAg
ICAgICAgICAgICBjYXNlIEdMX0lOVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JH
MzJJOworICAgICAgICAgICAgICAgIGNhc2UgR0xfU0hPUlQ6CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBHTF9SRzE2STsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9SRzhVSTsKKyAgICAgICAgICAgICAgICBj
YXNlIEdMX1VOU0lHTkVEX0lOVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHMzJV
STsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gR0xfUkcxNlVJOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgY2FzZSBHTF9TUkdCX0FMUEhBX0VYVDoKKyAgICAgICAgICAgIHN3aXRjaCAo
dHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZ
VEU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9TUkdCOF9BTFBIQTg7CisgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX1NSR0JfRVhUOgorICAg
ICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1NSR0I4
OworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9TVEVO
Q0lMOgorICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEdMX1NURU5DSUxfSU5ERVg4OworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBHTF9OT05FOgorICAgICAgICAgICAgcmV0dXJuIEdMX05PTkU7CisKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBHTF9O
T05FOworfQorCitib29sIFZhbGlkRVMzRm9ybWF0KEdMZW51bSBmb3JtYXQpCit7CisgICAgc3dp
dGNoIChmb3JtYXQpCisgICAgeworICAgICAgICBjYXNlIEdMX0FMUEhBOgorICAgICAgICBjYXNl
IEdMX0JHUkFfRVhUOgorICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDoKKyAgICAgICAg
Y2FzZSBHTF9ERVBUSF9TVEVOQ0lMOgorICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRToKKyAgICAg
ICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6CisgICAgICAgIGNhc2UgR0xfUkVEOgorICAgICAg
ICBjYXNlIEdMX1JFRF9JTlRFR0VSOgorICAgICAgICBjYXNlIEdMX1JHOgorICAgICAgICBjYXNl
IEdMX1JHQjoKKyAgICAgICAgY2FzZSBHTF9SR0JBOgorICAgICAgICBjYXNlIEdMX1JHQkFfSU5U
RUdFUjoKKyAgICAgICAgY2FzZSBHTF9SR0JfSU5URUdFUjoKKyAgICAgICAgY2FzZSBHTF9SR19J
TlRFR0VSOgorICAgICAgICBjYXNlIEdMX1NSR0JfQUxQSEFfRVhUOgorICAgICAgICBjYXNlIEdM
X1NSR0JfRVhUOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgVmFsaWRFUzNUeXBl
KEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2Ug
R0xfQllURToKKyAgICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAgICAgY2FzZSBHTF9GTE9BVF8z
Ml9VTlNJR05FRF9JTlRfMjRfOF9SRVY6CisgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVDoKKyAg
ICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUX09FUzoKKyAgICAgICAgY2FzZSBHTF9JTlQ6CisgICAg
ICAgIGNhc2UgR0xfU0hPUlQ6CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UXzEw
Rl8xMUZfMTFGX1JFVjoKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfMjRfODoKKyAgICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVY6CisgICAgICAgIGNhc2UgR0xf
VU5TSUdORURfSU5UXzVfOV85XzlfUkVWOgorICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JU
OgorICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzFfNV81XzVfUkVWX0VYVDoKKyAgICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80OgorICAgICAgICBjYXNlIEdMX1VOU0lH
TkVEX1NIT1JUXzRfNF80XzRfUkVWX0VYVDoKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9S
VF81XzVfNV8xOgorICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81OgorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgVmFsaWRFUzNGb3JtYXRDb21iaW5hdGlvbihHTGVu
dW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xlbnVtIGludGVybmFsRm9ybWF0KQoreworICAgIEFT
U0VSVChWYWxpZEVTM0Zvcm1hdChmb3JtYXQpICYmIFZhbGlkRVMzVHlwZSh0eXBlKSk7CisKKyAg
ICBzd2l0Y2ggKGZvcm1hdCkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfUkdCX0lOVEVHRVI6Cisg
ICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Y2FzZSBHTF9JTlQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0
Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlIEdMX1JHQjMySToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQjE2VUk6CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBjYXNlIEdMX1NIT1JUOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SR0IxNkk6CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQjhVSToKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGNhc2UgR0xfQllURToKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisgICAgICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdCOEk6CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdCMzJVSToKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9S
R0JBX0lOVEVHRVI6CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgY2FzZSBHTF9JTlQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQkEzMkk6CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOgorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SR0JBMTZVSToKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBf
UkVWOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnRl
cm5hbEZvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBHTF9SR0IxMF9BMlVJOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBH
TF9TSE9SVDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAo
aW50ZXJuYWxGb3JtYXQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgR0xfUkdCQTE2SToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2Ug
R0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdCQThVSToKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGNhc2UgR0xfQllURToKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdCQThJOgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQkEzMlVJOgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX1JHQjoKKyAgICAg
ICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNl
IEdMX1VOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVY6CisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1IxMUZfRzExRl9CMTBGOgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQp
CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xf
UkdCMTZfRVhUOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBHTF9TSE9SVDoKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGb3Jt
YXQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
R0xfUkdCMTZfU05PUk1fRVhUOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBHTF9V
TlNJR05FRF9CWVRFOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3dp
dGNoIChpbnRlcm5hbEZvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBHTF9SR0I6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdM
X1JHQjg6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQjU2NToKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgR0xfU1JHQjg6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81OgorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SR0I6CisgICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlIEdMX1JHQjU2NToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNh
c2UgR0xfSEFMRl9GTE9BVF9PRVM6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQjoKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgR0xfUkdCMTZGOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SMTFGX0cx
MUZfQjEwRjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdCOV9FNToKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVDoKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdCMTZGOgor
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SMTFGX0cxMUZfQjEwRjoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdCOV9FNToKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgR0xfUkdCMzJGOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SR0IxNkY6Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1IxMUZfRzExRl9CMTBGOgorICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBHTF9SR0I5X0U1OgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgY2FzZSBHTF9CWVRFOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
c3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBHTF9SR0I4X1NOT1JNOgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfNV85XzlfOV9SRVY6CisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQjlfRTU6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug
R0xfTFVNSU5BTkNFX0FMUEhBOgorICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVDoKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNF
X0FMUEhBOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEEx
NkZfRVhUOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQp
CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xf
TFVNSU5BTkNFX0FMUEhBOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9MVU1JTkFO
Q0VfQUxQSEEzMkZfRVhUOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJ
R05FRF9CWVRFOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNo
IChpbnRlcm5hbEZvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6CisgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIEdMX0xVTUlOQU5DRThfQUxQSEE4X0VYVDoKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6CisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQToKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBMTZGX0VYVDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9B
TFBIQToKKyAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX0FMUEhBOgorICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBHTF9BTFBIQTE2Rl9FWFQ6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBjYXNlIEdMX0ZMT0FUOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
c3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBHTF9BTFBIQToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgR0xfQUxQSEEzMkZfRVhUOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBHTF9V
TlNJR05FRF9CWVRFOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3dp
dGNoIChpbnRlcm5hbEZvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBHTF9BTFBIQToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
R0xfQUxQSEE4X0VYVDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9G
TE9BVF9PRVM6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2gg
KGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjYXNlIEdMX0FMUEhBOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9B
TFBIQTE2Rl9FWFQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIGNhc2UgR0xfUkdCQToKKyAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOgorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkK
KyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9S
R0JBMTZfRVhUOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9J
TlRfMl8xMF8xMF8xMF9SRVY6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQjEwX0EyOgorICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBHTF9SR0I1X0ExOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBHTF9T
SE9SVDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50
ZXJuYWxGb3JtYXQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgR0xfUkdCQTE2X1NOT1JNX0VYVDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNDoKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisgICAgICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdCQToKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgR0xfUkdCQTQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBj
YXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIEdMX1JHQkE4OgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SR0I1X0Ex
OgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SR0JBNDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgR0xfU1JHQjhfQUxQSEE4OgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgY2FzZSBHTF9IQUxGX0ZMT0FUX09FUzoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisgICAgICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdCQToKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgR0xfUkdCQTE2RjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2Ug
R0xfSEFMRl9GTE9BVDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3
aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgR0xfUkdCQTE2RjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBz
d2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNl
IEdMX1JHQkEzMkY6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQkExNkY6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEdMX0JZVEU6CisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQkE4X1NOT1JN
OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF81XzVf
NV8xOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnRl
cm5hbEZvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBHTF9SR0JBOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SR0I1X0Ex
OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBj
YXNlIEdMX0xVTUlOQU5DRToKKyAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVQ6CisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRToK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFMTZGX0VYVDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRToKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFMzJGX0VYVDoKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNF
OgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U4X0VYVDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6CisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX0xVTUlO
QU5DRToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFMTZGX0VYVDoK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2Fz
ZSBHTF9SR19JTlRFR0VSOgorICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGNhc2UgR0xfSU5UOgorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SRzMySToKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1JHMTZVSToKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfU0hPUlQ6CisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1JHMTZJOgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SRzhV
SToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfQllURToKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfUkc4SToK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkK
KyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9S
RzMyVUk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2UgR0xfUkVEX0lOVEVHRVI6CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9JTlQ6CisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1IzMkk6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOgorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SMTZV
SToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfU0hPUlQ6CisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1IxNkk6
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0
KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdM
X1I4VUk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEdMX0JZVEU6CisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQor
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1I4
SToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1h
dCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBH
TF9SMzJVSToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBHTF9SRUQ6CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfUjE2X0VY
VDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfU0hPUlQ6CisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1IxNl9T
Tk9STV9FWFQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEdMX0ZMT0FUOgorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1h
dCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBH
TF9SRUQ6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1IzMkY6CisgICAgICAgICAg
ICAgICAgICAgICAgICBjYXNlIEdMX1IxNkY6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBj
YXNlIEdMX0hBTEZfRkxPQVRfT0VTOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SRUQ6CisgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIEdMX1IxNkY6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEdMX0hBTEZf
RkxPQVQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGlu
dGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIEdMX1JFRDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfUjE2RjoK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQp
CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xf
UkVEOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SODoKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGNhc2UgR0xfQllURToKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisgICAgICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfUjhfU05PUk06CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfREVQVEhfQ09N
UE9ORU5UOgorICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQ6Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDI0OgorICAgICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQxNjoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UXzI0Xzg6CisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIX0NP
TVBPTkVOVDMyX09FUzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFs
Rm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBj
YXNlIEdMX0RFUFRIX0NPTVBPTkVOVDMyRjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMTY6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfREVQVEhfU1RFTkNJ
TDoKKyAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF8yNF84OgorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9TVEVOQ0lMOgorICAg
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSDI0X1NURU5DSUw4OgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgY2FzZSBHTF9GTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVY6
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFs
Rm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBj
YXNlIEdMX0RFUFRIMzJGX1NURU5DSUw4OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX1NSR0JfRVhUOgorICAgICAgICAgICAgc3dp
dGNoICh0eXBlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdO
RURfQllURToKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAo
aW50ZXJuYWxGb3JtYXQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgR0xfU1JHQl9FWFQ6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdM
X1NSR0I4OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBjYXNlIEdMX1NSR0JfQUxQSEFfRVhUOgorICAgICAgICAgICAgc3dpdGNoICh0eXBlKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGb3Jt
YXQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
R0xfU1JHQl9BTFBIQV9FWFQ6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1NSR0I4
X0FMUEhBOF9FWFQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIGNhc2UgR0xfUkc6CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfUkcx
Nl9FWFQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEdMX1NIT1JUOgorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkK
KyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9S
RzE2X1NOT1JNX0VYVDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFs
Rm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBj
YXNlIEdMX1JHOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SRzMyRjoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfUkcxNkY6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBjYXNlIEdMX0hBTEZfRkxPQVRfT0VTOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SRzoKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgR0xfUkcxNkY6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEdM
X0hBTEZfRkxPQVQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0
Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlIEdMX1JHOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9S
RzE2RjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxG
b3JtYXQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgR0xfUkc6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1JHODoKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGNhc2UgR0xfQllURToKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisgICAgICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfUkc4X1NOT1JNOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX0JH
UkFfRVhUOgorICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF9SRVZfRVhUOgorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkK
KyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9C
R1JBNF9BTkdMRVg6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVE
X0JZVEU6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGlu
dGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIEdMX0JHUkE4X0VYVDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xf
QkdSQTRfQU5HTEVYOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9CR1I1X0ExX0FO
R0xFWDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfQkdSQV9FWFQ6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzFfNV81XzVfUkVWX0VY
VDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJu
YWxGb3JtYXQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgR0xfQkdSNV9BMV9BTkdMRVg6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCit9
ICAvLyBuYW1lc3BhY2UgZ2wKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9mb3JtYXRfbWFwX2RhdGEuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvZm9ybWF0X21hcF9kYXRhLmpzb24JKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2Zvcm1hdF9tYXBfZGF0YS5q
c29uCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMwIEBACit7CisgICAgIkdMX1JHQkEiOiB7
CisgICAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkdMX1JHQkE4IiwKKyAgICAgICAgIkdMX1VO
U0lHTkVEX1NIT1JUIjogIkdMX1JHQkExNl9FWFQiLAorICAgICAgICAiR0xfQllURSI6ICJHTF9S
R0JBOF9TTk9STSIsCisgICAgICAgICJHTF9TSE9SVCI6ICJHTF9SR0JBMTZfU05PUk1fRVhUIiwK
KyAgICAgICAgIkdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQiOiAiR0xfUkdCQTQiLAorICAgICAg
ICAiR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMSI6ICJHTF9SR0I1X0ExIiwKKyAgICAgICAgIkdM
X1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViI6ICJHTF9SR0IxMF9BMiIsCisgICAgICAgICJH
TF9GTE9BVCI6ICJHTF9SR0JBMzJGIiwKKyAgICAgICAgIkdMX0hBTEZfRkxPQVQiOiAiR0xfUkdC
QTE2RiIsCisgICAgICAgICJHTF9IQUxGX0ZMT0FUX09FUyI6ICJHTF9SR0JBMTZGIgorICAgIH0s
CisgICAgIkdMX1JHQkFfSU5URUdFUiI6IHsKKyAgICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAi
R0xfUkdCQThVSSIsCisgICAgICAgICJHTF9CWVRFIjogIkdMX1JHQkE4SSIsCisgICAgICAgICJH
TF9VTlNJR05FRF9TSE9SVCI6ICJHTF9SR0JBMTZVSSIsCisgICAgICAgICJHTF9TSE9SVCI6ICJH
TF9SR0JBMTZJIiwKKyAgICAgICAgIkdMX1VOU0lHTkVEX0lOVCI6ICJHTF9SR0JBMzJVSSIsCisg
ICAgICAgICJHTF9JTlQiOiAiR0xfUkdCQTMySSIsCisgICAgICAgICJHTF9VTlNJR05FRF9JTlRf
Ml8xMF8xMF8xMF9SRVYiOiAiR0xfUkdCMTBfQTJVSSIKKyAgICB9LAorICAgICJHTF9SR0IiOiB7
CisgICAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkdMX1JHQjgiLAorICAgICAgICAiR0xfVU5T
SUdORURfU0hPUlQiOiAiR0xfUkdCMTZfRVhUIiwKKyAgICAgICAgIkdMX0JZVEUiOiAiR0xfUkdC
OF9TTk9STSIsCisgICAgICAgICJHTF9TSE9SVCI6ICJHTF9SR0IxNl9TTk9STV9FWFQiLAorICAg
ICAgICAiR0xfVU5TSUdORURfU0hPUlRfNV82XzUiOiAiR0xfUkdCNTY1IiwKKyAgICAgICAgIkdM
X1VOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYiOiAiR0xfUjExRl9HMTFGX0IxMEYiLAorICAg
ICAgICAiR0xfVU5TSUdORURfSU5UXzVfOV85XzlfUkVWIjogIkdMX1JHQjlfRTUiLAorICAgICAg
ICAiR0xfRkxPQVQiOiAiR0xfUkdCMzJGIiwKKyAgICAgICAgIkdMX0hBTEZfRkxPQVQiOiAiR0xf
UkdCMTZGIiwKKyAgICAgICAgIkdMX0hBTEZfRkxPQVRfT0VTIjogIkdMX1JHQjE2RiIKKyAgICB9
LAorICAgICJHTF9SR0JfSU5URUdFUiI6IHsKKyAgICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAi
R0xfUkdCOFVJIiwKKyAgICAgICAgIkdMX0JZVEUiOiAiR0xfUkdCOEkiLCAiR0xfVU5TSUdORURf
U0hPUlQiOiAiR0xfUkdCMTZVSSIsCisgICAgICAgICJHTF9TSE9SVCI6ICJHTF9SR0IxNkkiLAor
ICAgICAgICAiR0xfVU5TSUdORURfSU5UIjogIkdMX1JHQjMyVUkiLAorICAgICAgICAiR0xfSU5U
IjogIkdMX1JHQjMySSIKKyAgICB9LAorICAgICJHTF9SRyI6IHsKKyAgICAgICAgIkdMX1VOU0lH
TkVEX0JZVEUiOiAiR0xfUkc4IiwKKyAgICAgICAgIkdMX1VOU0lHTkVEX1NIT1JUIjogIkdMX1JH
MTZfRVhUIiwKKyAgICAgICAgIkdMX0JZVEUiOiAiR0xfUkc4X1NOT1JNIiwKKyAgICAgICAgIkdM
X1NIT1JUIjogIkdMX1JHMTZfU05PUk1fRVhUIiwKKyAgICAgICAgIkdMX0ZMT0FUIjogIkdMX1JH
MzJGIiwKKyAgICAgICAgIkdMX0hBTEZfRkxPQVQiOiAiR0xfUkcxNkYiLAorICAgICAgICAiR0xf
SEFMRl9GTE9BVF9PRVMiOiAiR0xfUkcxNkYiCisgICAgfSwKKyAgICAiR0xfUkdfSU5URUdFUiI6
IHsKKyAgICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiR0xfUkc4VUkiLAorICAgICAgICAiR0xf
QllURSI6ICJHTF9SRzhJIiwKKyAgICAgICAgIkdMX1VOU0lHTkVEX1NIT1JUIjogIkdMX1JHMTZV
SSIsCisgICAgICAgICJHTF9TSE9SVCI6ICJHTF9SRzE2SSIsCisgICAgICAgICJHTF9VTlNJR05F
RF9JTlQiOiAiR0xfUkczMlVJIiwKKyAgICAgICAgIkdMX0lOVCI6ICJHTF9SRzMySSIKKyAgICB9
LAorICAgICJHTF9SRUQiOiB7CisgICAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkdMX1I4IiwK
KyAgICAgICAgIkdMX1VOU0lHTkVEX1NIT1JUIjogIkdMX1IxNl9FWFQiLAorICAgICAgICAiR0xf
QllURSI6ICJHTF9SOF9TTk9STSIsCisgICAgICAgICJHTF9TSE9SVCI6ICJHTF9SMTZfU05PUk1f
RVhUIiwKKyAgICAgICAgIkdMX0ZMT0FUIjogIkdMX1IzMkYiLAorICAgICAgICAiR0xfSEFMRl9G
TE9BVCI6ICJHTF9SMTZGIiwKKyAgICAgICAgIkdMX0hBTEZfRkxPQVRfT0VTIjogIkdMX1IxNkYi
CisgICAgfSwKKyAgICAiR0xfUkVEX0lOVEVHRVIiOiB7CisgICAgICAgICJHTF9VTlNJR05FRF9C
WVRFIjogIkdMX1I4VUkiLAorICAgICAgICAiR0xfQllURSI6ICJHTF9SOEkiLAorICAgICAgICAi
R0xfVU5TSUdORURfU0hPUlQiOiAiR0xfUjE2VUkiLAorICAgICAgICAiR0xfU0hPUlQiOiAiR0xf
UjE2SSIsCisgICAgICAgICJHTF9VTlNJR05FRF9JTlQiOiAiR0xfUjMyVUkiLAorICAgICAgICAi
R0xfSU5UIjogIkdMX1IzMkkiCisgICAgfSwKKyAgICAiR0xfTFVNSU5BTkNFX0FMUEhBIjogewor
ICAgICAgICAiR0xfVU5TSUdORURfQllURSI6ICJHTF9MVU1JTkFOQ0U4X0FMUEhBOF9FWFQiLAor
ICAgICAgICAiR0xfRkxPQVQiOiAiR0xfTFVNSU5BTkNFX0FMUEhBMzJGX0VYVCIsCisgICAgICAg
ICJHTF9IQUxGX0ZMT0FUIjogIkdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9FWFQiLAorICAgICAgICAi
R0xfSEFMRl9GTE9BVF9PRVMiOiAiR0xfTFVNSU5BTkNFX0FMUEhBMTZGX0VYVCIKKyAgICB9LAor
ICAgICJHTF9MVU1JTkFOQ0UiOiB7CisgICAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkdMX0xV
TUlOQU5DRThfRVhUIiwKKyAgICAgICAgIkdMX0ZMT0FUIjogIkdMX0xVTUlOQU5DRTMyRl9FWFQi
LAorICAgICAgICAiR0xfSEFMRl9GTE9BVCI6ICJHTF9MVU1JTkFOQ0UxNkZfRVhUIiwKKyAgICAg
ICAgIkdMX0hBTEZfRkxPQVRfT0VTIjogIkdMX0xVTUlOQU5DRTE2Rl9FWFQiCisgICAgfSwKKyAg
ICAiR0xfQUxQSEEiOiB7CisgICAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkdMX0FMUEhBOF9F
WFQiLAorICAgICAgICAiR0xfRkxPQVQiOiAiR0xfQUxQSEEzMkZfRVhUIiwKKyAgICAgICAgIkdM
X0hBTEZfRkxPQVQiOiAiR0xfQUxQSEExNkZfRVhUIiwKKyAgICAgICAgIkdMX0hBTEZfRkxPQVRf
T0VTIjogIkdMX0FMUEhBMTZGX0VYVCIKKyAgICB9LAorICAgICJHTF9CR1JBX0VYVCI6IHsKKyAg
ICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiR0xfQkdSQThfRVhUIiwKKyAgICAgICAgIkdMX1VO
U0lHTkVEX1NIT1JUXzRfNF80XzRfUkVWX0VYVCI6ICJHTF9CR1JBNF9BTkdMRVgiLAorICAgICAg
ICAiR0xfVU5TSUdORURfU0hPUlRfMV81XzVfNV9SRVZfRVhUIjogIkdMX0JHUjVfQTFfQU5HTEVY
IiwKKyAgICAgICAgIkdMX1VOU0lHTkVEX1NIT1JUXzVfNl81IjogIkdMX0JHUjU2NV9BTkdMRVgi
CisgICAgfSwKKyAgICAiR0xfU1JHQl9FWFQiOiB7CisgICAgICAgICJHTF9VTlNJR05FRF9CWVRF
IjogIkdMX1NSR0I4IgorICAgIH0sCisgICAgIkdMX1NSR0JfQUxQSEFfRVhUIjogeworICAgICAg
ICAiR0xfVU5TSUdORURfQllURSI6ICJHTF9TUkdCOF9BTFBIQTgiCisgICAgfSwKKyAgICAiR0xf
Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCI6IHsKKyAgICAgICAgIkdMX1VOU0lHTkVEX0JZ
VEUiOiAiR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCIKKyAgICB9LAorICAgICJHTF9D
T01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCI6IHsKKyAgICAgICAgIkdMX1VOU0lHTkVEX0JZ
VEUiOiAiR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQiCisgICAgfSwKKyAgICAiR0xf
Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRSI6IHsKKyAgICAgICAgIkdMX1VOU0lHTkVE
X0JZVEUiOiAiR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRSIKKyAgICB9LAorICAg
ICJHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFIjogeworICAgICAgICAiR0xfVU5T
SUdORURfQllURSI6ICJHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFIgorICAgIH0s
CisgICAgIkdMX0RFUFRIX0NPTVBPTkVOVCI6IHsKKyAgICAgICAgIkdMX1VOU0lHTkVEX1NIT1JU
IjogIkdMX0RFUFRIX0NPTVBPTkVOVDE2IiwKKyAgICAgICAgIkdMX1VOU0lHTkVEX0lOVCI6ICJH
TF9ERVBUSF9DT01QT05FTlQzMl9PRVMiLAorICAgICAgICAiR0xfRkxPQVQiOiAiR0xfREVQVEhf
Q09NUE9ORU5UMzJGIgorICAgIH0sCisgICAgIkdMX1NURU5DSUwiOiB7CisgICAgICAgICJHTF9V
TlNJR05FRF9CWVRFIjogIkdMX1NURU5DSUxfSU5ERVg4IgorICAgIH0sCisgICAgIkdMX0RFUFRI
X1NURU5DSUwiOiB7CisgICAgICAgICJHTF9VTlNJR05FRF9JTlRfMjRfOCI6ICJHTF9ERVBUSDI0
X1NURU5DSUw4IiwKKyAgICAgICAgIkdMX0ZMT0FUXzMyX1VOU0lHTkVEX0lOVF8yNF84X1JFViI6
ICJHTF9ERVBUSDMyRl9TVEVOQ0lMOCIKKyAgICB9Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvZm9ybWF0dXRpbHMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mb3JtYXR1dGlscy5jcHAJKHJldmlzaW9u
IDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mb3JtYXR1
dGlscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwLDcgKzEwLDggQEAKICNpbmNsdWRlICJsaWJB
TkdMRS9mb3JtYXR1dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHQuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlci5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L1JlbmRlcmVyLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKIAogbmFtZXNwYWNlIGdsCiB7
CkBAIC0xOCwxMTYgKzE5LDI4IEBAIG5hbWVzcGFjZSBnbAogLy8gRVMyIHJlcXVpcmVzIHRoYXQg
Zm9ybWF0IGlzIGVxdWFsIHRvIGludGVybmFsIGZvcm1hdCBhdCBhbGwgZ2xUZXgqSW1hZ2UyRCBl
bnRyeSBwb2ludHMgYW5kIHRoZSBpbXBsZW1lbnRhdGlvbgogLy8gY2FuIGRlY2lkZSB0aGUgdHJ1
ZSwgc2l6ZWQsIGludGVybmFsIGZvcm1hdC4gVGhlIEVTMkZvcm1hdE1hcCBkZXRlcm1pbmVzIHRo
ZSBpbnRlcm5hbCBmb3JtYXQgZm9yIGFsbCB2YWxpZAogLy8gZm9ybWF0IGFuZCB0eXBlIGNvbWJp
bmF0aW9ucy4KK0dMZW51bSBHZXRTaXplZEZvcm1hdEludGVybmFsKEdMZW51bSBmb3JtYXQsIEdM
ZW51bSB0eXBlKTsKIAotdHlwZWRlZiBzdGQ6OnBhaXI8R0xlbnVtLCBHTGVudW0+IEZvcm1hdFR5
cGVQYWlyOwotdHlwZWRlZiBzdGQ6OnBhaXI8Rm9ybWF0VHlwZVBhaXIsIEdMZW51bT4gRm9ybWF0
UGFpcjsKLXR5cGVkZWYgc3RkOjptYXA8Rm9ybWF0VHlwZVBhaXIsIEdMZW51bT4gRm9ybWF0TWFw
OwotCi0vLyBBIGhlbHBlciBmdW5jdGlvbiB0byBpbnNlcnQgZGF0YSBpbnRvIHRoZSBmb3JtYXQg
bWFwIHdpdGggZmV3ZXIgY2hhcmFjdGVycy4KLXN0YXRpYyBpbmxpbmUgdm9pZCBJbnNlcnRGb3Jt
YXRNYXBwaW5nKEZvcm1hdE1hcCAqbWFwLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xl
bnVtIGludGVybmFsRm9ybWF0KQotewotICAgIG1hcC0+aW5zZXJ0KEZvcm1hdFBhaXIoRm9ybWF0
VHlwZVBhaXIoZm9ybWF0LCB0eXBlKSwgaW50ZXJuYWxGb3JtYXQpKTsKLX0KLQotRm9ybWF0TWFw
JiBCdWlsZEZvcm1hdE1hcCgpCi17Ci0gICAgYXV0byYgbWFwID0gKm5ldyBGb3JtYXRNYXA7Ci0K
LSAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgfCBGb3JtYXQgICAgICAgICAgICAgICB8IFR5
cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSW50ZXJuYWwgZm9ybWF0ICAgICAgICAg
IHwKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQkEsICAgICAgICAgICAgICAg
R0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAgICBHTF9SR0JBOCk7Ci0gICAgSW5zZXJ0
Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0JBLCAgICAgICAgICAgICAgIEdMX0JZVEUsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQThfU05PUk0pOwotICAgIEluc2VydEZvcm1hdE1h
cHBpbmcoJm1hcCwgR0xfUkdCQSwgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9TSE9SVF80XzRf
NF80LCAgICAgICAgIEdMX1JHQkE0KTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdM
X1JHQkEsICAgICAgICAgICAgICAgR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMSwgICAgICAgICBH
TF9SR0I1X0ExKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQkEsICAgICAg
ICAgICAgICAgR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWLCAgICBHTF9SR0IxMF9BMik7
Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0JBLCAgICAgICAgICAgICAgIEdM
X0ZMT0FULCAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMyRik7Ci0gICAgSW5zZXJ0
Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0JBLCAgICAgICAgICAgICAgIEdMX0hBTEZfRkxPQVQs
ICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2Rik7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGlu
ZygmbWFwLCBHTF9SR0JBLCAgICAgICAgICAgICAgIEdMX0hBTEZfRkxPQVRfT0VTLCAgICAgICAg
ICAgICAgICAgR0xfUkdCQTE2Rik7Ci0KLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdM
X1JHQkFfSU5URUdFUiwgICAgICAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAgICBH
TF9SR0JBOFVJKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQkFfSU5URUdF
UiwgICAgICAgR0xfQllURSwgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOEkpOwot
ICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCQV9JTlRFR0VSLCAgICAgICBHTF9V
TlNJR05FRF9TSE9SVCwgICAgICAgICAgICAgICAgIEdMX1JHQkExNlVJKTsKLSAgICBJbnNlcnRG
b3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQkFfSU5URUdFUiwgICAgICAgR0xfU0hPUlQsICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZJKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5n
KCZtYXAsIEdMX1JHQkFfSU5URUdFUiwgICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgICAg
ICAgICAgICBHTF9SR0JBMzJVSSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9S
R0JBX0lOVEVHRVIsICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
UkdCQTMySSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0JBX0lOVEVHRVIs
ICAgICAgIEdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViwgICAgR0xfUkdCMTBfQTJVSSk7
Ci0KLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQiwgICAgICAgICAgICAgICAg
R0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAgICBHTF9SR0I4KTsKLSAgICBJbnNlcnRG
b3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQiwgICAgICAgICAgICAgICAgR0xfQllURSwgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9SR0I4X1NOT1JNKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBw
aW5nKCZtYXAsIEdMX1JHQiwgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfU0hPUlRfNV82XzUs
ICAgICAgICAgICBHTF9SR0I1NjUpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xf
UkdCLCAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWLCAgIEdM
X1IxMUZfRzExRl9CMTBGKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQiwg
ICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5UXzVfOV85XzlfUkVWLCAgICAgICBHTF9SR0I5
X0U1KTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQiwgICAgICAgICAgICAg
ICAgR0xfRkxPQVQsICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0IzMkYpOwotICAgIElu
c2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCLCAgICAgICAgICAgICAgICBHTF9IQUxGX0ZM
T0FULCAgICAgICAgICAgICAgICAgICAgIEdMX1JHQjE2Rik7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFw
cGluZygmbWFwLCBHTF9SR0IsICAgICAgICAgICAgICAgIEdMX0hBTEZfRkxPQVRfT0VTLCAgICAg
ICAgICAgICAgICAgR0xfUkdCMTZGKTsKLQotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwg
R0xfUkdCX0lOVEVHRVIsICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICAg
IEdMX1JHQjhVSSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0JfSU5URUdF
UiwgICAgICAgIEdMX0JZVEUsICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCOEkpOwot
ICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCX0lOVEVHRVIsICAgICAgICBHTF9V
TlNJR05FRF9TSE9SVCwgICAgICAgICAgICAgICAgIEdMX1JHQjE2VUkpOwotICAgIEluc2VydEZv
cm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCX0lOVEVHRVIsICAgICAgICBHTF9TSE9SVCwgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1JHQjE2SSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygm
bWFwLCBHTF9SR0JfSU5URUdFUiwgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgICAgICAg
ICAgICAgR0xfUkdCMzJVSSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0Jf
SU5URUdFUiwgICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdC
MzJJKTsKLQotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkcsICAgICAgICAgICAg
ICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICAgIEdMX1JHOCk7Ci0gICAgSW5z
ZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SRywgICAgICAgICAgICAgICAgIEdMX0JZVEUsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkc4X1NOT1JNKTsKLSAgICBJbnNlcnRGb3JtYXRN
YXBwaW5nKCZtYXAsIEdMX1JHLCAgICAgICAgICAgICAgICAgR0xfRkxPQVQsICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9SRzMyRik7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBH
TF9SRywgICAgICAgICAgICAgICAgIEdMX0hBTEZfRkxPQVQsICAgICAgICAgICAgICAgICAgICAg
R0xfUkcxNkYpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkcsICAgICAgICAg
ICAgICAgICBHTF9IQUxGX0ZMT0FUX09FUywgICAgICAgICAgICAgICAgIEdMX1JHMTZGKTsKLQot
ICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdfSU5URUdFUiwgICAgICAgICBHTF9V
TlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICAgIEdMX1JHOFVJKTsKLSAgICBJbnNlcnRGb3Jt
YXRNYXBwaW5nKCZtYXAsIEdMX1JHX0lOVEVHRVIsICAgICAgICAgR0xfQllURSwgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9SRzhJKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAs
IEdMX1JHX0lOVEVHRVIsICAgICAgICAgR0xfVU5TSUdORURfU0hPUlQsICAgICAgICAgICAgICAg
ICBHTF9SRzE2VUkpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdfSU5URUdF
UiwgICAgICAgICBHTF9TSE9SVCwgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHMTZJKTsK
LSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHX0lOVEVHRVIsICAgICAgICAgR0xf
VU5TSUdORURfSU5ULCAgICAgICAgICAgICAgICAgICBHTF9SRzMyVUkpOwotICAgIEluc2VydEZv
cm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdfSU5URUdFUiwgICAgICAgICBHTF9JTlQsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1JHMzJJKTsKLQotICAgIEluc2VydEZvcm1hdE1hcHBpbmco
Jm1hcCwgR0xfUkVELCAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAg
ICAgICAgIEdMX1I4KTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JFRCwgICAg
ICAgICAgICAgICAgR0xfQllURSwgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SOF9TTk9S
TSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SRUQsICAgICAgICAgICAgICAg
IEdMX0ZMT0FULCAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjMyRik7Ci0gICAgSW5zZXJ0
Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SRUQsICAgICAgICAgICAgICAgIEdMX0hBTEZfRkxPQVQs
ICAgICAgICAgICAgICAgICAgICAgR0xfUjE2Rik7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygm
bWFwLCBHTF9SRUQsICAgICAgICAgICAgICAgIEdMX0hBTEZfRkxPQVRfT0VTLCAgICAgICAgICAg
ICAgICAgR0xfUjE2Rik7Ci0KLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JFRF9J
TlRFR0VSLCAgICAgICAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAgICBHTF9SOFVJ
KTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JFRF9JTlRFR0VSLCAgICAgICAg
R0xfQllURSwgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SOEkpOwotICAgIEluc2VydEZv
cm1hdE1hcHBpbmcoJm1hcCwgR0xfUkVEX0lOVEVHRVIsICAgICAgICBHTF9VTlNJR05FRF9TSE9S
VCwgICAgICAgICAgICAgICAgIEdMX1IxNlVJKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZt
YXAsIEdMX1JFRF9JTlRFR0VSLCAgICAgICAgR0xfU0hPUlQsICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9SMTZJKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JFRF9JTlRF
R0VSLCAgICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgICAgICAgICAgICBHTF9SMzJVSSk7
Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SRURfSU5URUdFUiwgICAgICAgIEdM
X0lOVCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjMySSk7Ci0KLSAgICBJbnNlcnRG
b3JtYXRNYXBwaW5nKCZtYXAsIEdMX0xVTUlOQU5DRV9BTFBIQSwgICAgR0xfVU5TSUdORURfQllU
RSwgICAgICAgICAgICAgICAgICBHTF9MVU1JTkFOQ0U4X0FMUEhBOF9FWFQpOwotICAgIEluc2Vy
dEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfTFVNSU5BTkNFLCAgICAgICAgICBHTF9VTlNJR05FRF9C
WVRFLCAgICAgICAgICAgICAgICAgIEdMX0xVTUlOQU5DRThfRVhUKTsKLSAgICBJbnNlcnRGb3Jt
YXRNYXBwaW5nKCZtYXAsIEdMX0FMUEhBLCAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwg
ICAgICAgICAgICAgICAgICBHTF9BTFBIQThfRVhUKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5n
KCZtYXAsIEdMX0xVTUlOQU5DRV9BTFBIQSwgICAgR0xfRkxPQVQsICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9MVU1JTkFOQ0VfQUxQSEEzMkZfRVhUKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBw
aW5nKCZtYXAsIEdMX0xVTUlOQU5DRSwgICAgICAgICAgR0xfRkxPQVQsICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9MVU1JTkFOQ0UzMkZfRVhUKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5n
KCZtYXAsIEdMX0FMUEhBLCAgICAgICAgICAgICAgR0xfRkxPQVQsICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9BTFBIQTMyRl9FWFQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwg
R0xfTFVNSU5BTkNFX0FMUEhBLCAgICBHTF9IQUxGX0ZMT0FULCAgICAgICAgICAgICAgICAgICAg
IEdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9FWFQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1h
cCwgR0xfTFVNSU5BTkNFX0FMUEhBLCAgICBHTF9IQUxGX0ZMT0FUX09FUywgICAgICAgICAgICAg
ICAgIEdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9FWFQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmco
Jm1hcCwgR0xfTFVNSU5BTkNFLCAgICAgICAgICBHTF9IQUxGX0ZMT0FULCAgICAgICAgICAgICAg
ICAgICAgIEdMX0xVTUlOQU5DRTE2Rl9FWFQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1h
cCwgR0xfTFVNSU5BTkNFLCAgICAgICAgICBHTF9IQUxGX0ZMT0FUX09FUywgICAgICAgICAgICAg
ICAgIEdMX0xVTUlOQU5DRTE2Rl9FWFQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwg
R0xfQUxQSEEsICAgICAgICAgICAgICBHTF9IQUxGX0ZMT0FULCAgICAgICAgICAgICAgICAgICAg
IEdMX0FMUEhBMTZGX0VYVCk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9BTFBI
QSwgICAgICAgICAgICAgIEdMX0hBTEZfRkxPQVRfT0VTLCAgICAgICAgICAgICAgICAgR0xfQUxQ
SEExNkZfRVhUKTsKLQotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQkdSQV9FWFQs
ICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICAgIEdMX0JHUkE4X0VY
VCk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9CR1JBX0VYVCwgICAgICAgICAg
IEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzRfUkVWX0VYVCwgR0xfQkdSQTRfQU5HTEVYKTsKLSAg
ICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0JHUkFfRVhULCAgICAgICAgICAgR0xfVU5T
SUdORURfU0hPUlRfMV81XzVfNV9SRVZfRVhULCBHTF9CR1I1X0ExX0FOR0xFWCk7Ci0KLSAgICBJ
bnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1NSR0JfRVhULCAgICAgICAgICAgR0xfVU5TSUdO
RURfQllURSwgICAgICAgICAgICAgICAgICBHTF9TUkdCOCk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFw
cGluZygmbWFwLCBHTF9TUkdCX0FMUEhBX0VYVCwgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAg
ICAgICAgICAgICAgR0xfU1JHQjhfQUxQSEE4KTsKLQotICAgIEluc2VydEZvcm1hdE1hcHBpbmco
Jm1hcCwgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCwgICAgR0xfVU5TSUdORURfQllU
RSwgICAgIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQpOwotICAgIEluc2VydEZvcm1h
dE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsICAgR0xfVU5T
SUdORURfQllURSwgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUKTsKLSAgICBJ
bnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5H
TEUsIEdMX1VOU0lHTkVEX0JZVEUsICAgICBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FO
R0xFKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdCQV9T
M1RDX0RYVDVfQU5HTEUsIEdMX1VOU0lHTkVEX0JZVEUsICAgICBHTF9DT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQ1X0FOR0xFKTsKLQotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfREVQ
VEhfQ09NUE9ORU5ULCAgICBHTF9VTlNJR05FRF9TSE9SVCwgICAgICAgICAgICAgICAgIEdMX0RF
UFRIX0NPTVBPTkVOVDE2KTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0RFUFRI
X0NPTVBPTkVOVCwgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgICAgICAgICAgICBHTF9ERVBU
SF9DT01QT05FTlQzMl9PRVMpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfREVQ
VEhfQ09NUE9ORU5ULCAgICBHTF9GTE9BVCwgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0RF
UFRIX0NPTVBPTkVOVDMyRik7CituYW1lc3BhY2UKK3sKK3R5cGVkZWYgc3RkOjpwYWlyPEdMZW51
bSwgSW50ZXJuYWxGb3JtYXQ+IEludGVybmFsRm9ybWF0SW5mb1BhaXI7Cit0eXBlZGVmIHN0ZDo6
bWFwPEdMZW51bSwgSW50ZXJuYWxGb3JtYXQ+IEludGVybmFsRm9ybWF0SW5mb01hcDsKIAotICAg
IEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfU1RFTkNJTCwgICAgICAgICAgICBHTF9VTlNJ
R05FRF9CWVRFLCAgICAgICAgICAgICAgICAgIEdMX1NURU5DSUxfSU5ERVg4KTsKK30gIC8vIGFu
b255bW91cyBuYW1lc3BhY2UKIAotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfREVQ
VEhfU1RFTkNJTCwgICAgICBHTF9VTlNJR05FRF9JTlRfMjRfOCwgICAgICAgICAgICAgIEdMX0RF
UFRIMjRfU1RFTkNJTDgpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfREVQVEhf
U1RFTkNJTCwgICAgICBHTF9GTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVYsIEdMX0RFUFRI
MzJGX1NURU5DSUw4KTsKK0Zvcm1hdFR5cGU6OkZvcm1hdFR5cGUoKSA6IGZvcm1hdChHTF9OT05F
KSwgdHlwZShHTF9OT05FKQoreworfQogCi0gICAgcmV0dXJuIG1hcDsKK0Zvcm1hdFR5cGU6OkZv
cm1hdFR5cGUoR0xlbnVtIGZvcm1hdF8sIEdMZW51bSB0eXBlXykgOiBmb3JtYXQoZm9ybWF0Xyks
IHR5cGUodHlwZV8pCit7Cit9CisKK2Jvb2wgRm9ybWF0VHlwZTo6b3BlcmF0b3I8KGNvbnN0IEZv
cm1hdFR5cGUgJm90aGVyKSBjb25zdAoreworICAgIGlmIChmb3JtYXQgIT0gb3RoZXIuZm9ybWF0
KQorICAgICAgICByZXR1cm4gZm9ybWF0IDwgb3RoZXIuZm9ybWF0OworICAgIHJldHVybiB0eXBl
IDwgb3RoZXIudHlwZTsKIH0KIAogVHlwZTo6VHlwZSgpCkBAIC0yNjgsNyArMTgxLDggQEAgc3Rh
dGljIGJvb2wgRmxvYXRSZW5kZXJhYmxlU3VwcG9ydFJHKEdMdQogfQogCiBJbnRlcm5hbEZvcm1h
dDo6SW50ZXJuYWxGb3JtYXQoKQotICAgIDogcmVkQml0cygwKSwKKyAgICA6IGludGVybmFsRm9y
bWF0KEdMX05PTkUpLAorICAgICAgcmVkQml0cygwKSwKICAgICAgIGdyZWVuQml0cygwKSwKICAg
ICAgIGJsdWVCaXRzKDApLAogICAgICAgbHVtaW5hbmNlQml0cygwKSwKQEAgLTI5MSwyNSArMjA1
LDEyNiBAQCBJbnRlcm5hbEZvcm1hdDo6SW50ZXJuYWxGb3JtYXQoKQogewogfQogCi1zdGF0aWMg
SW50ZXJuYWxGb3JtYXQgVW5zaXplZEZvcm1hdChHTGVudW0gZm9ybWF0LCBJbnRlcm5hbEZvcm1h
dDo6U3VwcG9ydENoZWNrRnVuY3Rpb24gdGV4dHVyZVN1cHBvcnQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBJbnRlcm5hbEZvcm1hdDo6U3VwcG9ydENoZWNrRnVuY3Rpb24g
cmVuZGVyU3VwcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVy
bmFsRm9ybWF0OjpTdXBwb3J0Q2hlY2tGdW5jdGlvbiBmaWx0ZXJTdXBwb3J0KQorYm9vbCBJbnRl
cm5hbEZvcm1hdDo6aXNMVU1BKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKChyZWRCaXRzICsgZ3Jl
ZW5CaXRzICsgYmx1ZUJpdHMgKyBkZXB0aEJpdHMgKyBzdGVuY2lsQml0cykgPT0gMCAmJgorICAg
ICAgICAgICAgKGx1bWluYW5jZUJpdHMgKyBhbHBoYUJpdHMpID4gMCk7Cit9CisKK0dMZW51bSBJ
bnRlcm5hbEZvcm1hdDo6Z2V0UmVhZFBpeGVsc0Zvcm1hdCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGZvcm1hdDsKK30KKworR0xlbnVtIEludGVybmFsRm9ybWF0OjpnZXRSZWFkUGl4ZWxzVHlwZSgp
IGNvbnN0Cit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9IQUxG
X0ZMT0FUOgorICAgICAgICAgICAgLy8gVGhlIGludGVybmFsIGZvcm1hdCBtYXkgaGF2ZSBhIHR5
cGUgb2YgR0xfSEFMRl9GTE9BVCBidXQgd2hlbiBleHBvc2luZyB0aGlzIHR5cGUgYXMKKyAgICAg
ICAgICAgIC8vIHRoZSBJTVBMRU1FTlRBVElPTl9SRUFEX1RZUEUsIG9ubHkgSEFMRl9GTE9BVF9P
RVMgaXMgYWxsb3dlZCBieQorICAgICAgICAgICAgLy8gT0VTX3RleHR1cmVfaGFsZl9mbG9hdAor
ICAgICAgICAgICAgcmV0dXJuIEdMX0hBTEZfRkxPQVRfT0VTOworCisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICByZXR1cm4gdHlwZTsKKyAgICB9Cit9CisKK0Zvcm1hdDo6Rm9ybWF0KEdM
ZW51bSBpbnRlcm5hbEZvcm1hdCkgOiBGb3JtYXQoR2V0SW50ZXJuYWxGb3JtYXRJbmZvKGludGVy
bmFsRm9ybWF0KSkKK3sKK30KKworRm9ybWF0OjpGb3JtYXQoY29uc3QgSW50ZXJuYWxGb3JtYXQg
JmludGVybmFsRm9ybWF0KQorICAgIDogaW5mbygmaW50ZXJuYWxGb3JtYXQpLCBmb3JtYXQoaW5m
by0+Zm9ybWF0KSwgdHlwZShpbmZvLT50eXBlKSwgc2l6ZWQodHJ1ZSkKK3sKKyAgICBBU1NFUlQo
KGluZm8tPnBpeGVsQnl0ZXMgPiAwICYmIGZvcm1hdCAhPSBHTF9OT05FICYmIHR5cGUgIT0gR0xf
Tk9ORSkgfHwKKyAgICAgICAgICAgaW50ZXJuYWxGb3JtYXQuZm9ybWF0ID09IEdMX05PTkUpOwor
fQorCitGb3JtYXQ6OkZvcm1hdChHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdMZW51bSBmb3JtYXQs
IEdMZW51bSB0eXBlKQorICAgIDogaW5mbyhudWxscHRyKSwgZm9ybWF0KGZvcm1hdCksIHR5cGUo
dHlwZSksIHNpemVkKGZhbHNlKQoreworICAgIGNvbnN0IGF1dG8gJnBsYWluSW5mbyA9IEdldElu
dGVybmFsRm9ybWF0SW5mbyhpbnRlcm5hbEZvcm1hdCk7CisgICAgc2l6ZWQgICAgICAgICAgICAg
ICAgID0gcGxhaW5JbmZvLnBpeGVsQnl0ZXMgPiAwOworICAgIGluZm8gPSAoc2l6ZWQgPyAmcGxh
aW5JbmZvIDogJkdldEludGVybmFsRm9ybWF0SW5mbyhHZXRTaXplZEZvcm1hdEludGVybmFsKGZv
cm1hdCwgdHlwZSkpKTsKKyAgICBBU1NFUlQoZm9ybWF0ID09IEdMX05PTkUgfHwgaW5mby0+cGl4
ZWxCeXRlcyA+IDApOworfQorCitGb3JtYXQ6OkZvcm1hdChjb25zdCBGb3JtYXQgJm90aGVyKSA9
IGRlZmF1bHQ7CitGb3JtYXQgJkZvcm1hdDo6b3BlcmF0b3I9KGNvbnN0IEZvcm1hdCAmb3RoZXIp
ID0gZGVmYXVsdDsKKworR0xlbnVtIEZvcm1hdDo6YXNTaXplZCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHNpemVkID8gaW5mby0+aW50ZXJuYWxGb3JtYXQgOiBHZXRTaXplZEZvcm1hdEludGVybmFs
KGZvcm1hdCwgdHlwZSk7Cit9CisKK2Jvb2wgRm9ybWF0Ojp2YWxpZCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGluZm8tPmZvcm1hdCAhPSBHTF9OT05FOworfQorCisvLyBzdGF0aWMKK2Jvb2wgRm9y
bWF0OjpTYW1lU2l6ZWQoY29uc3QgRm9ybWF0ICZhLCBjb25zdCBGb3JtYXQgJmIpCit7CisgICAg
cmV0dXJuIChhLmluZm8gPT0gYi5pbmZvKTsKK30KKworLy8gc3RhdGljCitGb3JtYXQgRm9ybWF0
OjpJbnZhbGlkKCkKK3sKKyAgICBzdGF0aWMgRm9ybWF0IGludmFsaWQoR0xfTk9ORSwgR0xfTk9O
RSwgR0xfTk9ORSk7CisgICAgcmV0dXJuIGludmFsaWQ7Cit9CisKK2Jvb2wgSW50ZXJuYWxGb3Jt
YXQ6Om9wZXJhdG9yPT0oY29uc3QgSW50ZXJuYWxGb3JtYXQgJm90aGVyKSBjb25zdAoreworICAg
IC8vIFdlIGFzc3VtZSB0aGVyZSBhcmUgbm8gZHVwbGljYXRlcy4KKyAgICBBU1NFUlQoKHRoaXMg
PT0gJm90aGVyKSA9PSAoaW50ZXJuYWxGb3JtYXQgPT0gb3RoZXIuaW50ZXJuYWxGb3JtYXQpKTsK
KyAgICByZXR1cm4gaW50ZXJuYWxGb3JtYXQgPT0gb3RoZXIuaW50ZXJuYWxGb3JtYXQ7Cit9CisK
K2Jvb2wgSW50ZXJuYWxGb3JtYXQ6Om9wZXJhdG9yIT0oY29uc3QgSW50ZXJuYWxGb3JtYXQgJm90
aGVyKSBjb25zdAoreworICAgIC8vIFdlIGFzc3VtZSB0aGVyZSBhcmUgbm8gZHVwbGljYXRlcy4K
KyAgICBBU1NFUlQoKHRoaXMgIT0gJm90aGVyKSA9PSAoaW50ZXJuYWxGb3JtYXQgIT0gb3RoZXIu
aW50ZXJuYWxGb3JtYXQpKTsKKyAgICByZXR1cm4gaW50ZXJuYWxGb3JtYXQgIT0gb3RoZXIuaW50
ZXJuYWxGb3JtYXQ7Cit9CisKK3N0YXRpYyB2b2lkIEFkZFVuc2l6ZWRGb3JtYXQoSW50ZXJuYWxG
b3JtYXRJbmZvTWFwICptYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBp
bnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1h
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJuYWxGb3JtYXQ6OlN1cHBvcnRD
aGVja0Z1bmN0aW9uIHRleHR1cmVTdXBwb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJbnRlcm5hbEZvcm1hdDo6U3VwcG9ydENoZWNrRnVuY3Rpb24gcmVuZGVyU3VwcG9ydCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJuYWxGb3JtYXQ6OlN1cHBvcnRDaGVja0Z1
bmN0aW9uIGZpbHRlclN1cHBvcnQpCiB7CiAgICAgSW50ZXJuYWxGb3JtYXQgZm9ybWF0SW5mbzsK
KyAgICBmb3JtYXRJbmZvLmludGVybmFsRm9ybWF0ID0gaW50ZXJuYWxGb3JtYXQ7CiAgICAgZm9y
bWF0SW5mby5mb3JtYXQgPSBmb3JtYXQ7CiAgICAgZm9ybWF0SW5mby50ZXh0dXJlU3VwcG9ydCA9
IHRleHR1cmVTdXBwb3J0OwogICAgIGZvcm1hdEluZm8ucmVuZGVyU3VwcG9ydCA9IHJlbmRlclN1
cHBvcnQ7CiAgICAgZm9ybWF0SW5mby5maWx0ZXJTdXBwb3J0ID0gZmlsdGVyU3VwcG9ydDsKLSAg
ICByZXR1cm4gZm9ybWF0SW5mbzsKKyAgICBBU1NFUlQobWFwLT5jb3VudChpbnRlcm5hbEZvcm1h
dCkgPT0gMCk7CisgICAgKCptYXApW2ludGVybmFsRm9ybWF0XSA9IGZvcm1hdEluZm87CiB9CiAK
LXN0YXRpYyBJbnRlcm5hbEZvcm1hdCBSR0JBRm9ybWF0KEdMdWludCByZWQsIEdMdWludCBncmVl
biwgR0x1aW50IGJsdWUsIEdMdWludCBhbHBoYSwgR0x1aW50IHNoYXJlZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGVudW0g
Y29tcG9uZW50VHlwZSwgYm9vbCBzcmdiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSW50ZXJuYWxGb3JtYXQ6OlN1cHBvcnRDaGVja0Z1bmN0aW9uIHRleHR1cmVTdXBwb3J0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJuYWxGb3JtYXQ6OlN1cHBvcnRD
aGVja0Z1bmN0aW9uIHJlbmRlclN1cHBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJbnRlcm5hbEZvcm1hdDo6U3VwcG9ydENoZWNrRnVuY3Rpb24gZmlsdGVyU3VwcG9ydCkK
K3ZvaWQgQWRkUkdCQUZvcm1hdChJbnRlcm5hbEZvcm1hdEluZm9NYXAgKm1hcCwKKyAgICAgICAg
ICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgR0x1
aW50IHJlZCwKKyAgICAgICAgICAgICAgICAgICBHTHVpbnQgZ3JlZW4sCisgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGJsdWUsCisgICAgICAgICAgICAgICAgICAgR0x1aW50IGFscGhhLAorICAg
ICAgICAgICAgICAgICAgIEdMdWludCBzaGFyZWQsCisgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICBHTGVudW0gY29tcG9uZW50VHlwZSwKKyAgICAgICAgICAgICAgICAgICBib29sIHNyZ2Is
CisgICAgICAgICAgICAgICAgICAgSW50ZXJuYWxGb3JtYXQ6OlN1cHBvcnRDaGVja0Z1bmN0aW9u
IHRleHR1cmVTdXBwb3J0LAorICAgICAgICAgICAgICAgICAgIEludGVybmFsRm9ybWF0OjpTdXBw
b3J0Q2hlY2tGdW5jdGlvbiByZW5kZXJTdXBwb3J0LAorICAgICAgICAgICAgICAgICAgIEludGVy
bmFsRm9ybWF0OjpTdXBwb3J0Q2hlY2tGdW5jdGlvbiBmaWx0ZXJTdXBwb3J0KQogewogICAgIElu
dGVybmFsRm9ybWF0IGZvcm1hdEluZm87CisgICAgZm9ybWF0SW5mby5pbnRlcm5hbEZvcm1hdCA9
IGludGVybmFsRm9ybWF0OwogICAgIGZvcm1hdEluZm8ucmVkQml0cyA9IHJlZDsKICAgICBmb3Jt
YXRJbmZvLmdyZWVuQml0cyA9IGdyZWVuOwogICAgIGZvcm1hdEluZm8uYmx1ZUJpdHMgPSBibHVl
OwpAQCAtMzI0LDcgKzMzOSw4IEBAIHN0YXRpYyBJbnRlcm5hbEZvcm1hdCBSR0JBRm9ybWF0KEdM
dWludCAKICAgICBmb3JtYXRJbmZvLnRleHR1cmVTdXBwb3J0ID0gdGV4dHVyZVN1cHBvcnQ7CiAg
ICAgZm9ybWF0SW5mby5yZW5kZXJTdXBwb3J0ID0gcmVuZGVyU3VwcG9ydDsKICAgICBmb3JtYXRJ
bmZvLmZpbHRlclN1cHBvcnQgPSBmaWx0ZXJTdXBwb3J0OwotICAgIHJldHVybiBmb3JtYXRJbmZv
OworICAgIEFTU0VSVChtYXAtPmNvdW50KGludGVybmFsRm9ybWF0KSA9PSAwKTsKKyAgICAoKm1h
cClbaW50ZXJuYWxGb3JtYXRdID0gZm9ybWF0SW5mbzsKIH0KIAogc3RhdGljIEludGVybmFsRm9y
bWF0IExVTUFGb3JtYXQoR0x1aW50IGx1bWluYW5jZSwgR0x1aW50IGFscGhhLCBHTGVudW0gZm9y
bWF0LCBHTGVudW0gdHlwZSwgR0xlbnVtIGNvbXBvbmVudFR5cGUsCkBAIC0zMzMsNiArMzQ5LDcg
QEAgc3RhdGljIEludGVybmFsRm9ybWF0IExVTUFGb3JtYXQoR0x1aW50IAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSW50ZXJuYWxGb3JtYXQ6OlN1cHBvcnRDaGVja0Z1bmN0aW9u
IGZpbHRlclN1cHBvcnQpCiB7CiAgICAgSW50ZXJuYWxGb3JtYXQgZm9ybWF0SW5mbzsKKyAgICBm
b3JtYXRJbmZvLmludGVybmFsRm9ybWF0ID0gR2V0U2l6ZWRGb3JtYXRJbnRlcm5hbChmb3JtYXQs
IHR5cGUpOwogICAgIGZvcm1hdEluZm8ubHVtaW5hbmNlQml0cyA9IGx1bWluYW5jZTsKICAgICBm
b3JtYXRJbmZvLmFscGhhQml0cyA9IGFscGhhOwogICAgIGZvcm1hdEluZm8ucGl4ZWxCeXRlcyA9
IChsdW1pbmFuY2UgKyBhbHBoYSkgLyA4OwpAQCAtMzQ3LDEyICszNjQsMjAgQEAgc3RhdGljIElu
dGVybmFsRm9ybWF0IExVTUFGb3JtYXQoR0x1aW50IAogICAgIHJldHVybiBmb3JtYXRJbmZvOwog
fQogCi1zdGF0aWMgSW50ZXJuYWxGb3JtYXQgRGVwdGhTdGVuY2lsRm9ybWF0KEdMdWludCBkZXB0
aEJpdHMsIEdMdWludCBzdGVuY2lsQml0cywgR0x1aW50IHVudXNlZEJpdHMsIEdMZW51bSBmb3Jt
YXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBl
LCBHTGVudW0gY29tcG9uZW50VHlwZSwgSW50ZXJuYWxGb3JtYXQ6OlN1cHBvcnRDaGVja0Z1bmN0
aW9uIHRleHR1cmVTdXBwb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJbnRlcm5hbEZvcm1hdDo6U3VwcG9ydENoZWNrRnVuY3Rpb24gcmVuZGVyU3VwcG9ydCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJuYWxGb3JtYXQ6
OlN1cHBvcnRDaGVja0Z1bmN0aW9uIGZpbHRlclN1cHBvcnQpCit2b2lkIEFkZERlcHRoU3RlbmNp
bEZvcm1hdChJbnRlcm5hbEZvcm1hdEluZm9NYXAgKm1hcCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBkZXB0aEJpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3Rl
bmNpbEJpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdW51c2VkQml0cywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBjb21wb25lbnRUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJuYWxG
b3JtYXQ6OlN1cHBvcnRDaGVja0Z1bmN0aW9uIHRleHR1cmVTdXBwb3J0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSW50ZXJuYWxGb3JtYXQ6OlN1cHBvcnRDaGVja0Z1bmN0aW9uIHJlbmRl
clN1cHBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcm5hbEZvcm1hdDo6U3Vw
cG9ydENoZWNrRnVuY3Rpb24gZmlsdGVyU3VwcG9ydCkKIHsKICAgICBJbnRlcm5hbEZvcm1hdCBm
b3JtYXRJbmZvOworICAgIGZvcm1hdEluZm8uaW50ZXJuYWxGb3JtYXQgPSBpbnRlcm5hbEZvcm1h
dDsKICAgICBmb3JtYXRJbmZvLmRlcHRoQml0cyA9IGRlcHRoQml0czsKICAgICBmb3JtYXRJbmZv
LnN0ZW5jaWxCaXRzID0gc3RlbmNpbEJpdHM7CiAgICAgZm9ybWF0SW5mby5waXhlbEJ5dGVzID0g
KGRlcHRoQml0cyArIHN0ZW5jaWxCaXRzICsgdW51c2VkQml0cykgLyA4OwpAQCAtMzY0LDcgKzM4
OSw4IEBAIHN0YXRpYyBJbnRlcm5hbEZvcm1hdCBEZXB0aFN0ZW5jaWxGb3JtYXQKICAgICBmb3Jt
YXRJbmZvLnRleHR1cmVTdXBwb3J0ID0gdGV4dHVyZVN1cHBvcnQ7CiAgICAgZm9ybWF0SW5mby5y
ZW5kZXJTdXBwb3J0ID0gcmVuZGVyU3VwcG9ydDsKICAgICBmb3JtYXRJbmZvLmZpbHRlclN1cHBv
cnQgPSBmaWx0ZXJTdXBwb3J0OwotICAgIHJldHVybiBmb3JtYXRJbmZvOworICAgIEFTU0VSVCht
YXAtPmNvdW50KGludGVybmFsRm9ybWF0KSA9PSAwKTsKKyAgICAoKm1hcClbaW50ZXJuYWxGb3Jt
YXRdID0gZm9ybWF0SW5mbzsKIH0KIAogc3RhdGljIEludGVybmFsRm9ybWF0IENvbXByZXNzZWRG
b3JtYXQoR0x1aW50IGNvbXByZXNzZWRCbG9ja1dpZHRoLCBHTHVpbnQgY29tcHJlc3NlZEJsb2Nr
SGVpZ2h0LCBHTHVpbnQgY29tcHJlc3NlZEJsb2NrU2l6ZSwKQEAgLTM3NCw2ICs0MDAsNyBAQCBz
dGF0aWMgSW50ZXJuYWxGb3JtYXQgQ29tcHJlc3NlZEZvcm1hdChHCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBJbnRlcm5hbEZvcm1hdDo6U3VwcG9ydENoZWNrRnVuY3Rp
b24gZmlsdGVyU3VwcG9ydCkKIHsKICAgICBJbnRlcm5hbEZvcm1hdCBmb3JtYXRJbmZvOworICAg
IGZvcm1hdEluZm8uaW50ZXJuYWxGb3JtYXQgICAgICAgID0gZm9ybWF0OwogICAgIGZvcm1hdElu
Zm8uY29tcHJlc3NlZEJsb2NrV2lkdGggPSBjb21wcmVzc2VkQmxvY2tXaWR0aDsKICAgICBmb3Jt
YXRJbmZvLmNvbXByZXNzZWRCbG9ja0hlaWdodCA9IGNvbXByZXNzZWRCbG9ja0hlaWdodDsKICAg
ICBmb3JtYXRJbmZvLnBpeGVsQnl0ZXMgPSBjb21wcmVzc2VkQmxvY2tTaXplIC8gODsKQEAgLTM4
OSw4NCArNDE2LDg1IEBAIHN0YXRpYyBJbnRlcm5hbEZvcm1hdCBDb21wcmVzc2VkRm9ybWF0KEcK
ICAgICByZXR1cm4gZm9ybWF0SW5mbzsKIH0KIAotdHlwZWRlZiBzdGQ6OnBhaXI8R0xlbnVtLCBJ
bnRlcm5hbEZvcm1hdD4gSW50ZXJuYWxGb3JtYXRJbmZvUGFpcjsKLXR5cGVkZWYgc3RkOjptYXA8
R0xlbnVtLCBJbnRlcm5hbEZvcm1hdD4gSW50ZXJuYWxGb3JtYXRJbmZvTWFwOwotCi1zdGF0aWMg
SW50ZXJuYWxGb3JtYXRJbmZvTWFwJiBCdWlsZEludGVybmFsRm9ybWF0SW5mb01hcCgpCitzdGF0
aWMgSW50ZXJuYWxGb3JtYXRJbmZvTWFwIEJ1aWxkSW50ZXJuYWxGb3JtYXRJbmZvTWFwKCkKIHsK
LSAgICBhdXRvJiBtYXAgPSAqbmV3IEludGVybmFsRm9ybWF0SW5mb01hcDsKKyAgICBJbnRlcm5h
bEZvcm1hdEluZm9NYXAgbWFwOwogCi0gICAgLy8gY2xhbmctZm9ybWF0IG9mZgogICAgIC8vIEZy
b20gRVMgMy4wLjEgc3BlYywgdGFibGUgMy4xMgotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3Jt
YXRJbmZvUGFpcihHTF9OT05FLCAgICAgICAgICAgICAgSW50ZXJuYWxGb3JtYXQoKSkpOworICAg
IG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9OT05FLCBJbnRlcm5hbEZvcm1h
dCgpKSk7CiAKLSAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEludGVybmFs
IGZvcm1hdCAgICAgfCAgICAgICAgICB8IFIgfCBHIHwgQiB8IEEgfFMgfCBGb3JtYXQgICAgICAg
ICB8IFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbXBvbmVudCB0eXBlICAgICAg
ICB8IFNSR0IgfCBUZXh0dXJlIHN1cHBvcnRlZCAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVu
ZGVyYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZpbHRlcmFibGUgICAgfAot
ICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9SOCwgICAgICAgICAgICAg
ICAgUkdCQUZvcm1hdCggOCwgIDAsICAwLCAgMCwgMCwgR0xfUkVELCAgICAgICAgICBHTF9VTlNJ
R05FRF9CWVRFLCAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBmYWxzZSwg
UmVxdWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OnRleHR1cmVSRz4sIFJlcXVpcmVFU09yRXh0
PDMsICZFeHRlbnNpb25zOjp0ZXh0dXJlUkc+LCBBbHdheXNTdXBwb3J0ZWQpKSk7Ci0gICAgbWFw
Lmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX1I4X1NOT1JNLCAgICAgICAgICBSR0JB
Rm9ybWF0KCA4LCAgMCwgIDAsICAwLCAwLCBHTF9SRUQsICAgICAgICAgIEdMX0JZVEUsICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1NJR05FRF9OT1JNQUxJWkVELCAgIGZhbHNlLCBSZXF1aXJl
RVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCkpKTsKLSAgICBtYXAuaW5zZXJ0
KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfUkc4LCAgICAgICAgICAgICAgIFJHQkFGb3JtYXQo
IDgsICA4LCAgMCwgIDAsIDAsIEdMX1JHLCAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgICAg
ICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgZmFsc2UsIFJlcXVpcmVFU09yRXh0
PDMsICZFeHRlbnNpb25zOjp0ZXh0dXJlUkc+LCBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9u
czo6dGV4dHVyZVJHPiwgQWx3YXlzU3VwcG9ydGVkKSkpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJu
YWxGb3JtYXRJbmZvUGFpcihHTF9SRzhfU05PUk0sICAgICAgICAgUkdCQUZvcm1hdCggOCwgIDgs
ICAwLCAgMCwgMCwgR0xfUkcsICAgICAgICAgICBHTF9CWVRFLCAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9TSUdORURfTk9STUFMSVpFRCwgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBbHdheXNTdXBwb3J0ZWQpKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1h
dEluZm9QYWlyKEdMX1JHQjgsICAgICAgICAgICAgICBSR0JBRm9ybWF0KCA4LCAgOCwgIDgsICAw
LCAwLCBHTF9SR0IsICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgIEdM
X1VOU0lHTkVEX05PUk1BTElaRUQsIGZhbHNlLCBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9u
czo6cmdiOHJnYmE4PiwgUmVxdWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OnJnYjhyZ2JhOD4s
IEFsd2F5c1N1cHBvcnRlZCkpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1Bh
aXIoR0xfUkdCOF9TTk9STSwgICAgICAgIFJHQkFGb3JtYXQoIDgsICA4LCAgOCwgIDAsIDAsIEdM
X1JHQiwgICAgICAgICAgR0xfQllURSwgICAgICAgICAgICAgICAgICAgICAgICAgR0xfU0lHTkVE
X05PUk1BTElaRUQsICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlz
U3VwcG9ydGVkKSkpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9S
R0I1NjUsICAgICAgICAgICAgUkdCQUZvcm1hdCggNSwgIDYsICA1LCAgMCwgMCwgR0xfUkdCLCAg
ICAgICAgICBHTF9VTlNJR05FRF9TSE9SVF81XzZfNSwgICAgICAgICBHTF9VTlNJR05FRF9OT1JN
QUxJWkVELCBmYWxzZSwgUmVxdWlyZUVTPDI+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJlcXVpcmVFUzwyPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0
ZWQpKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX1JHQkE0LCAg
ICAgICAgICAgICBSR0JBRm9ybWF0KCA0LCAgNCwgIDQsICA0LCAwLCBHTF9SR0JBLCAgICAgICAg
IEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQsICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQs
IGZhbHNlLCBSZXF1aXJlRVM8Mj4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWly
ZUVTPDI+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCkpKTsK
LSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfUkdCNV9BMSwgICAgICAg
ICAgIFJHQkFGb3JtYXQoIDUsICA1LCAgNSwgIDEsIDAsIEdMX1JHQkEsICAgICAgICAgR0xfVU5T
SUdORURfU0hPUlRfNV81XzVfMSwgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgZmFsc2Us
IFJlcXVpcmVFUzwyPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mj4s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKSkpOwotICAgIG1h
cC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9SR0JBOCwgICAgICAgICAgICAgUkdC
QUZvcm1hdCggOCwgIDgsICA4LCAgOCwgMCwgR0xfUkdCQSwgICAgICAgICBHTF9VTlNJR05FRF9C
WVRFLCAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBmYWxzZSwgUmVxdWly
ZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OnJnYjhyZ2JhOD4sIFJlcXVpcmVFU09yRXh0PDMsICZF
eHRlbnNpb25zOjpyZ2I4cmdiYTg+LCBBbHdheXNTdXBwb3J0ZWQpKSk7Ci0gICAgbWFwLmluc2Vy
dChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX1JHQkE4X1NOT1JNLCAgICAgICBSR0JBRm9ybWF0
KCA4LCAgOCwgIDgsICA4LCAwLCBHTF9SR0JBLCAgICAgICAgIEdMX0JZVEUsICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1NJR05FRF9OT1JNQUxJWkVELCAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCkpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVy
bmFsRm9ybWF0SW5mb1BhaXIoR0xfUkdCMTBfQTIsICAgICAgICAgIFJHQkFGb3JtYXQoMTAsIDEw
LCAxMCwgIDIsIDAsIEdMX1JHQkEsICAgICAgICAgR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBf
UkVWLCAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKSkpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3Jt
YXRJbmZvUGFpcihHTF9SR0IxMF9BMlVJLCAgICAgICAgUkdCQUZvcm1hdCgxMCwgMTAsIDEwLCAg
MiwgMCwgR0xfUkdCQV9JTlRFR0VSLCBHTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYsICBH
TF9VTlNJR05FRF9JTlQsICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOZXZlclN1cHBvcnRlZCkpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1Bh
aXIoR0xfU1JHQjgsICAgICAgICAgICAgIFJHQkFGb3JtYXQoIDgsICA4LCAgOCwgIDAsIDAsIEdM
X1JHQiwgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAgR0xfVU5TSUdO
RURfTk9STUFMSVpFRCwgdHJ1ZSwgIFJlcXVpcmVFU09yRXh0PDMsICZFeHRlbnNpb25zOjpzUkdC
PiwgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlz
U3VwcG9ydGVkKSkpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9T
UkdCOF9BTFBIQTgsICAgICAgUkdCQUZvcm1hdCggOCwgIDgsICA4LCAgOCwgMCwgR0xfUkdCQSwg
ICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JN
QUxJWkVELCB0cnVlLCAgUmVxdWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OnNSR0I+LCAgICAg
IFJlcXVpcmVFU09yRXh0PDMsICZFeHRlbnNpb25zOjpzUkdCPiwgICAgICBBbHdheXNTdXBwb3J0
ZWQpKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX1IxMUZfRzEx
Rl9CMTBGLCAgICBSR0JBRm9ybWF0KDExLCAxMSwgMTAsICAwLCAwLCBHTF9SR0IsICAgICAgICAg
IEdMX1VOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYsIEdMX0ZMT0FULCAgICAgICAgICAgICAg
IGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWly
ZUV4dDwmRXh0ZW5zaW9uczo6Y29sb3JCdWZmZXJGbG9hdD4sIEFsd2F5c1N1cHBvcnRlZCkpKTsK
LSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfUkdCOV9FNSwgICAgICAg
ICAgIFJHQkFGb3JtYXQoIDksICA5LCAgOSwgIDAsIDUsIEdMX1JHQiwgICAgICAgICAgR0xfVU5T
SUdORURfSU5UXzVfOV85XzlfUkVWLCAgICAgR0xfRkxPQVQsICAgICAgICAgICAgICAgZmFsc2Us
IFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRl
ZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKSkpOwotICAgIG1h
cC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9SOEksICAgICAgICAgICAgICAgUkdC
QUZvcm1hdCggOCwgIDAsICAwLCAgMCwgMCwgR0xfUkVEX0lOVEVHRVIsICBHTF9CWVRFLCAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9JTlQsICAgICAgICAgICAgICAgICBmYWxzZSwgUmVxdWly
ZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCkpKTsKLSAgICBtYXAuaW5zZXJ0
KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfUjhVSSwgICAgICAgICAgICAgIFJHQkFGb3JtYXQo
IDgsICAwLCAgMCwgIDAsIDAsIEdMX1JFRF9JTlRFR0VSLCAgR0xfVU5TSUdORURfQllURSwgICAg
ICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5h
bEZvcm1hdEluZm9QYWlyKEdMX1IxNkksICAgICAgICAgICAgICBSR0JBRm9ybWF0KDE2LCAgMCwg
IDAsICAwLCAwLCBHTF9SRURfSU5URUdFUiwgIEdMX1NIT1JULCAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5ldmVyU3VwcG9ydGVkKSkpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJ
bmZvUGFpcihHTF9SMTZVSSwgICAgICAgICAgICAgUkdCQUZvcm1hdCgxNiwgIDAsICAwLCAgMCwg
MCwgR0xfUkVEX0lOVEVHRVIsICBHTF9VTlNJR05FRF9TSE9SVCwgICAgICAgICAgICAgICBHTF9V
TlNJR05FRF9JTlQsICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO
ZXZlclN1cHBvcnRlZCkpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIo
R0xfUjMySSwgICAgICAgICAgICAgIFJHQkFGb3JtYXQoMzIsICAwLCAgMCwgIDAsIDAsIEdMX1JF
RF9JTlRFR0VSLCAgR0xfSU5ULCAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfSU5ULCAgICAg
ICAgICAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBw
b3J0ZWQpKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX1IzMlVJ
LCAgICAgICAgICAgICBSR0JBRm9ybWF0KDMyLCAgMCwgIDAsICAwLCAwLCBHTF9SRURfSU5URUdF
UiwgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAg
ICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVx
dWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKSkp
OwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9SRzhJLCAgICAgICAg
ICAgICAgUkdCQUZvcm1hdCggOCwgIDgsICAwLCAgMCwgMCwgR0xfUkdfSU5URUdFUiwgICBHTF9C
WVRFLCAgICAgICAgICAgICAgICAgICAgICAgICBHTF9JTlQsICAgICAgICAgICAgICAgICBmYWxz
ZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwz
PiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCkpKTsKLSAgICBt
YXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfUkc4VUksICAgICAgICAgICAgIFJH
QkFGb3JtYXQoIDgsICA4LCAgMCwgIDAsIDAsIEdMX1JHX0lOVEVHRVIsICAgR0xfVU5TSUdORURf
QllURSwgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgZmFsc2UsIFJlcXVp
cmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mz4sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpKSk7Ci0gICAgbWFwLmluc2Vy
dChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX1JHMTZJLCAgICAgICAgICAgICBSR0JBRm9ybWF0
KDE2LCAxNiwgIDAsICAwLCAwLCBHTF9SR19JTlRFR0VSLCAgIEdMX1NIT1JULCAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKSkpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJu
YWxGb3JtYXRJbmZvUGFpcihHTF9SRzE2VUksICAgICAgICAgICAgUkdCQUZvcm1hdCgxNiwgMTYs
ICAwLCAgMCwgMCwgR0xfUkdfSU5URUdFUiwgICBHTF9VTlNJR05FRF9TSE9SVCwgICAgICAgICAg
ICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOZXZlclN1cHBvcnRlZCkpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0
SW5mb1BhaXIoR0xfUkczMkksICAgICAgICAgICAgIFJHQkFGb3JtYXQoMzIsIDMyLCAgMCwgIDAs
IDAsIEdMX1JHX0lOVEVHRVIsICAgR0xfSU5ULCAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
SU5ULCAgICAgICAgICAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TmV2ZXJTdXBwb3J0ZWQpKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWly
KEdMX1JHMzJVSSwgICAgICAgICAgICBSR0JBRm9ybWF0KDMyLCAzMiwgIDAsICAwLCAwLCBHTF9S
R19JTlRFR0VSLCAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVE
X0lOVCwgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3Vw
cG9ydGVkKSkpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9SR0I4
SSwgICAgICAgICAgICAgUkdCQUZvcm1hdCggOCwgIDgsICA4LCAgMCwgMCwgR0xfUkdCX0lOVEVH
RVIsICBHTF9CWVRFLCAgICAgICAgICAgICAgICAgICAgICAgICBHTF9JTlQsICAgICAgICAgICAg
ICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5l
dmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCkp
KTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfUkdCOFVJLCAgICAg
ICAgICAgIFJHQkFGb3JtYXQoIDgsICA4LCAgOCwgIDAsIDAsIEdMX1JHQl9JTlRFR0VSLCAgR0xf
VU5TSUdORURfQllURSwgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgZmFs
c2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBv
cnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpKSk7Ci0gICAg
bWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX1JHQjE2SSwgICAgICAgICAgICBS
R0JBRm9ybWF0KDE2LCAxNiwgMTYsICAwLCAwLCBHTF9SR0JfSU5URUdFUiwgIEdMX1NIT1JULCAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgIGZhbHNlLCBSZXF1
aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKSkpOwotICAgIG1hcC5pbnNl
cnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9SR0IxNlVJLCAgICAgICAgICAgUkdCQUZvcm1h
dCgxNiwgMTYsIDE2LCAgMCwgMCwgR0xfUkdCX0lOVEVHRVIsICBHTF9VTlNJR05FRF9TSE9SVCwg
ICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCkpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVy
bmFsRm9ybWF0SW5mb1BhaXIoR0xfUkdCMzJJLCAgICAgICAgICAgIFJHQkFGb3JtYXQoMzIsIDMy
LCAzMiwgIDAsIDAsIEdMX1JHQl9JTlRFR0VSLCAgR0xfSU5ULCAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfSU5ULCAgICAgICAgICAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1h
dEluZm9QYWlyKEdMX1JHQjMyVUksICAgICAgICAgICBSR0JBRm9ybWF0KDMyLCAzMiwgMzIsICAw
LCAwLCBHTF9SR0JfSU5URUdFUiwgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgICAgICAgICAgIEdM
X1VOU0lHTkVEX0lOVCwgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5ldmVyU3VwcG9ydGVkKSkpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFp
cihHTF9SR0JBOEksICAgICAgICAgICAgUkdCQUZvcm1hdCggOCwgIDgsICA4LCAgOCwgMCwgR0xf
UkdCQV9JTlRFR0VSLCBHTF9CWVRFLCAgICAgICAgICAgICAgICAgICAgICAgICBHTF9JTlQsICAg
ICAgICAgICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1
cHBvcnRlZCkpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfUkdC
QThVSSwgICAgICAgICAgIFJHQkFGb3JtYXQoIDgsICA4LCAgOCwgIDgsIDAsIEdMX1JHQkFfSU5U
RUdFUiwgR0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULCAg
ICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS
ZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQp
KSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX1JHQkExNkksICAg
ICAgICAgICBSR0JBRm9ybWF0KDE2LCAxNiwgMTYsIDE2LCAwLCBHTF9SR0JBX0lOVEVHRVIsIEdM
X1NIT1JULCAgICAgICAgICAgICAgICAgICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgIGZh
bHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVT
PDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKSkpOwotICAg
IG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9SR0JBMTZVSSwgICAgICAgICAg
UkdCQUZvcm1hdCgxNiwgMTYsIDE2LCAxNiwgMCwgR0xfUkdCQV9JTlRFR0VSLCBHTF9VTlNJR05F
RF9TSE9SVCwgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICBmYWxzZSwgUmVx
dWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCkpKTsKLSAgICBtYXAuaW5z
ZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfUkdCQTMySSwgICAgICAgICAgIFJHQkFGb3Jt
YXQoMzIsIDMyLCAzMiwgMzIsIDAsIEdMX1JHQkFfSU5URUdFUiwgR0xfSU5ULCAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfSU5ULCAgICAgICAgICAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwz
PiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpKSk7Ci0gICAgbWFwLmluc2VydChJbnRl
cm5hbEZvcm1hdEluZm9QYWlyKEdMX1JHQkEzMlVJLCAgICAgICAgICBSR0JBRm9ybWF0KDMyLCAz
MiwgMzIsIDMyLCAwLCBHTF9SR0JBX0lOVEVHRVIsIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgICAg
ICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKSkpOwotCi0gICAgbWFwLmluc2VydChJbnRlcm5hbEZv
cm1hdEluZm9QYWlyKEdMX0JHUkE4X0VYVCwgICAgICAgICBSR0JBRm9ybWF0KCA4LCAgOCwgIDgs
ICA4LCAwLCBHTF9CR1JBX0VYVCwgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAg
ICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgZmFsc2UsIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6
OnRleHR1cmVGb3JtYXRCR1JBODg4OD4sIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVG
b3JtYXRCR1JBODg4OD4sIEFsd2F5c1N1cHBvcnRlZCkpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVy
bmFsRm9ybWF0SW5mb1BhaXIoR0xfQkdSQTRfQU5HTEVYLCAgICAgIFJHQkFGb3JtYXQoIDQsICA0
LCAgNCwgIDQsIDAsIEdMX0JHUkFfRVhULCAgICAgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF9S
RVZfRVhULCBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBmYWxzZSwgUmVxdWlyZUV4dDwmRXh0ZW5z
aW9uczo6dGV4dHVyZUZvcm1hdEJHUkE4ODg4PiwgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6dGV4
dHVyZUZvcm1hdEJHUkE4ODg4PiwgQWx3YXlzU3VwcG9ydGVkKSkpOwotICAgIG1hcC5pbnNlcnQo
SW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9CR1I1X0ExX0FOR0xFWCwgICAgUkdCQUZvcm1hdCgg
NSwgIDUsICA1LCAgMSwgMCwgR0xfQkdSQV9FWFQsICAgICBHTF9VTlNJR05FRF9TSE9SVF8xXzVf
NV81X1JFVl9FWFQsIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIGZhbHNlLCBSZXF1aXJlRXh0PCZF
eHRlbnNpb25zOjp0ZXh0dXJlRm9ybWF0QkdSQTg4ODg+LCBSZXF1aXJlRXh0PCZFeHRlbnNpb25z
Ojp0ZXh0dXJlRm9ybWF0QkdSQTg4ODg+LCBBbHdheXNTdXBwb3J0ZWQpKSk7CisgICAgLy8gY2xh
bmctZm9ybWF0IG9mZgorCisgICAgLy8gICAgICAgICAgICAgICAgIHwgSW50ZXJuYWwgZm9ybWF0
ICAgICB8IFIgfCBHIHwgQiB8IEEgfFMgfCBGb3JtYXQgICAgICAgICB8IFR5cGUgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8IENvbXBvbmVudCB0eXBlICAgICAgICB8IFNSR0IgfCBUZXh0dXJl
IHN1cHBvcnRlZCAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVuZGVyYWJsZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8IEZpbHRlcmFibGUgICAgfAorICAgIEFkZFJHQkFGb3JtYXQo
Jm1hcCwgR0xfUjgsICAgICAgICAgICAgICAgICA4LCAgMCwgIDAsICAwLCAwLCBHTF9SRUQsICAg
ICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1B
TElaRUQsIGZhbHNlLCBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6dGV4dHVyZVJHPiwg
UmVxdWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OnRleHR1cmVSRz4sIEFsd2F5c1N1cHBvcnRl
ZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SOF9TTk9STSwgICAgICAgICAgIDgsICAw
LCAgMCwgIDAsIDAsIEdMX1JFRCwgICAgICAgICAgR0xfQllURSwgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfU0lHTkVEX05PUk1BTElaRUQsICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JH
OCwgICAgICAgICAgICAgICAgOCwgIDgsICAwLCAgMCwgMCwgR0xfUkcsICAgICAgICAgICBHTF9V
TlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBmYWxz
ZSwgUmVxdWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OnRleHR1cmVSRz4sIFJlcXVpcmVFU09y
RXh0PDMsICZFeHRlbnNpb25zOjp0ZXh0dXJlUkc+LCBBbHdheXNTdXBwb3J0ZWQpOworICAgIEFk
ZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkc4X1NOT1JNLCAgICAgICAgICA4LCAgOCwgIDAsICAwLCAw
LCBHTF9SRywgICAgICAgICAgIEdMX0JZVEUsICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1NJ
R05FRF9OT1JNQUxJWkVELCAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFs
d2F5c1N1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SR0I4LCAgICAgICAg
ICAgICAgIDgsICA4LCAgOCwgIDAsIDAsIEdMX1JHQiwgICAgICAgICAgR0xfVU5TSUdORURfQllU
RSwgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgZmFsc2UsIFJlcXVpcmVF
U09yRXh0PDMsICZFeHRlbnNpb25zOjpyZ2I4cmdiYTg+LCBSZXF1aXJlRVNPckV4dDwzLCAmRXh0
ZW5zaW9uczo6cmdiOHJnYmE4PiwgQWx3YXlzU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0
KCZtYXAsIEdMX1JHQjhfU05PUk0sICAgICAgICAgOCwgIDgsICA4LCAgMCwgMCwgR0xfUkdCLCAg
ICAgICAgICBHTF9CWVRFLCAgICAgICAgICAgICAgICAgICAgICAgICBHTF9TSUdORURfTk9STUFM
SVpFRCwgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0
ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkdCNTY1LCAgICAgICAgICAgICA1LCAg
NiwgIDUsICAwLCAwLCBHTF9SR0IsICAgICAgICAgIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81LCAg
ICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIGZhbHNlLCBSZXF1aXJlRVM8Mj4sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDI+LCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9S
R0JBNCwgICAgICAgICAgICAgIDQsICA0LCAgNCwgIDQsIDAsIEdMX1JHQkEsICAgICAgICAgR0xf
VU5TSUdORURfU0hPUlRfNF80XzRfNCwgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgZmFs
c2UsIFJlcXVpcmVFUzwyPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8
Mj4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKTsKKyAgICBB
ZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHQjVfQTEsICAgICAgICAgICAgNSwgIDUsICA1LCAgMSwg
MCwgR0xfUkdCQSwgICAgICAgICBHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xLCAgICAgICBHTF9V
TlNJR05FRF9OT1JNQUxJWkVELCBmYWxzZSwgUmVxdWlyZUVTPDI+LCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJlcXVpcmVFUzwyPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
bHdheXNTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkdCQTgsICAgICAg
ICAgICAgICA4LCAgOCwgIDgsICA4LCAwLCBHTF9SR0JBLCAgICAgICAgIEdMX1VOU0lHTkVEX0JZ
VEUsICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIGZhbHNlLCBSZXF1aXJl
RVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6cmdiOHJnYmE4PiwgUmVxdWlyZUVTT3JFeHQ8MywgJkV4
dGVuc2lvbnM6OnJnYjhyZ2JhOD4sIEFsd2F5c1N1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1h
dCgmbWFwLCBHTF9SR0JBOF9TTk9STSwgICAgICAgIDgsICA4LCAgOCwgIDgsIDAsIEdMX1JHQkEs
ICAgICAgICAgR0xfQllURSwgICAgICAgICAgICAgICAgICAgICAgICAgR0xfU0lHTkVEX05PUk1B
TElaRUQsICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9y
dGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHQjEwX0EyLCAgICAgICAgICAxMCwg
MTAsIDEwLCAgMiwgMCwgR0xfUkdCQSwgICAgICAgICBHTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8x
MF9SRVYsICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xf
UkdCMTBfQTJVSSwgICAgICAgIDEwLCAxMCwgMTAsICAyLCAwLCBHTF9SR0JBX0lOVEVHRVIsIEdM
X1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViwgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgIGZh
bHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVT
PDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBB
ZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1NSR0I4LCAgICAgICAgICAgICAgOCwgIDgsICA4LCAgMCwg
MCwgR0xfUkdCLCAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICBHTF9V
TlNJR05FRF9OT1JNQUxJWkVELCB0cnVlLCAgUmVxdWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6
OnNSR0I+LCAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
bHdheXNTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfU1JHQjhfQUxQSEE4
LCAgICAgICA4LCAgOCwgIDgsICA4LCAwLCBHTF9SR0JBLCAgICAgICAgIEdMX1VOU0lHTkVEX0JZ
VEUsICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIHRydWUsICBSZXF1aXJl
RVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6c1JHQj4sICAgICAgUmVxdWlyZUVTT3JFeHQ8MywgJkV4
dGVuc2lvbnM6OnNSR0I+LCAgICAgIEFsd2F5c1N1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1h
dCgmbWFwLCBHTF9SR0I5X0U1LCAgICAgICAgICAgIDksICA5LCAgOSwgIDAsIDUsIEdMX1JHQiwg
ICAgICAgICAgR0xfVU5TSUdORURfSU5UXzVfOV85XzlfUkVWLCAgICAgR0xfRkxPQVQsICAgICAg
ICAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9y
dGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1I4SSwgICAgICAgICAgICAgICAgOCwg
IDAsICAwLCAgMCwgMCwgR0xfUkVEX0lOVEVHRVIsICBHTF9CWVRFLCAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9JTlQsICAgICAgICAgICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9S
OFVJLCAgICAgICAgICAgICAgIDgsICAwLCAgMCwgIDAsIDAsIEdMX1JFRF9JTlRFR0VSLCAgR0xf
VU5TSUdORURfQllURSwgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgZmFs
c2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8
Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOworICAgIEFk
ZFJHQkFGb3JtYXQoJm1hcCwgR0xfUjE2SSwgICAgICAgICAgICAgIDE2LCAgMCwgIDAsICAwLCAw
LCBHTF9SRURfSU5URUdFUiwgIEdMX1NIT1JULCAgICAgICAgICAgICAgICAgICAgICAgIEdMX0lO
VCwgICAgICAgICAgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5l
dmVyU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1IxNlVJLCAgICAgICAg
ICAgICAxNiwgIDAsICAwLCAgMCwgMCwgR0xfUkVEX0lOVEVHRVIsICBHTF9VTlNJR05FRF9TSE9S
VCwgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICBmYWxzZSwgUmVxdWlyZUVT
PDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgm
bWFwLCBHTF9SMzJJLCAgICAgICAgICAgICAgMzIsICAwLCAgMCwgIDAsIDAsIEdMX1JFRF9JTlRF
R0VSLCAgR0xfSU5ULCAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfSU5ULCAgICAgICAgICAg
ICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS
ZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQp
OworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUjMyVUksICAgICAgICAgICAgIDMyLCAgMCwg
IDAsICAwLCAwLCBHTF9SRURfSU5URUdFUiwgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgICAgICAg
ICAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHOEks
ICAgICAgICAgICAgICAgOCwgIDgsICAwLCAgMCwgMCwgR0xfUkdfSU5URUdFUiwgICBHTF9CWVRF
LCAgICAgICAgICAgICAgICAgICAgICAgICBHTF9JTlQsICAgICAgICAgICAgICAgICBmYWxzZSwg
UmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7CisgICAgQWRkUkdC
QUZvcm1hdCgmbWFwLCBHTF9SRzhVSSwgICAgICAgICAgICAgIDgsICA4LCAgMCwgIDAsIDAsIEdM
X1JHX0lOVEVHRVIsICAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAgR0xfVU5TSUdO
RURfSU5ULCAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJT
dXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkcxNkksICAgICAgICAgICAg
IDE2LCAxNiwgIDAsICAwLCAwLCBHTF9SR19JTlRFR0VSLCAgIEdMX1NIT1JULCAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAs
IEdMX1JHMTZVSSwgICAgICAgICAgICAxNiwgMTYsICAwLCAgMCwgMCwgR0xfUkdfSU5URUdFUiwg
ICBHTF9VTlNJR05FRF9TSE9SVCwgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAg
ICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVp
cmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Cisg
ICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SRzMySSwgICAgICAgICAgICAgMzIsIDMyLCAgMCwg
IDAsIDAsIEdMX1JHX0lOVEVHRVIsICAgR0xfSU5ULCAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfSU5ULCAgICAgICAgICAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTmV2ZXJTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUjExRl9HMTFG
X0IxMEYsICAgIDExLCAxMSwgMTAsICAwLCAwLCBHTF9SR0IsICAgICAgICAgIEdMX1VOU0lHTkVE
X0lOVF8xMEZfMTFGXzExRl9SRVYsIEdMX0ZMT0FULCAgICAgICAgICAgICAgIGZhbHNlLCBSZXF1
aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUV4dDwmRXh0ZW5z
aW9uczo6Y29sb3JCdWZmZXJGbG9hdD4sIEFsd2F5c1N1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZv
cm1hdCgmbWFwLCBHTF9SRzMyVUksICAgICAgICAgICAgMzIsIDMyLCAgMCwgIDAsIDAsIEdMX1JH
X0lOVEVHRVIsICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURf
SU5ULCAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBw
b3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkdCOEksICAgICAgICAgICAgICA4
LCAgOCwgIDgsICAwLCAwLCBHTF9SR0JfSU5URUdFUiwgIEdMX0JZVEUsICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdM
X1JHQjhVSSwgICAgICAgICAgICAgOCwgIDgsICA4LCAgMCwgMCwgR0xfUkdCX0lOVEVHRVIsICBH
TF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICBm
YWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3Vw
cG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7CisgICAg
QWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SR0IxNkksICAgICAgICAgICAgMTYsIDE2LCAxNiwgIDAs
IDAsIEdMX1JHQl9JTlRFR0VSLCAgR0xfU0hPUlQsICAgICAgICAgICAgICAgICAgICAgICAgR0xf
SU5ULCAgICAgICAgICAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TmV2ZXJTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkdCMTZVSSwgICAg
ICAgICAgIDE2LCAxNiwgMTYsICAwLCAwLCBHTF9SR0JfSU5URUdFUiwgIEdMX1VOU0lHTkVEX1NI
T1JULCAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgIGZhbHNlLCBSZXF1aXJl
RVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0
KCZtYXAsIEdMX1JHQjMySSwgICAgICAgICAgICAzMiwgMzIsIDMyLCAgMCwgMCwgR0xfUkdCX0lO
VEVHRVIsICBHTF9JTlQsICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9JTlQsICAgICAgICAg
ICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRl
ZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SR0IzMlVJLCAgICAgICAgICAgMzIsIDMy
LCAzMiwgIDAsIDAsIEdMX1JHQl9JTlRFR0VSLCAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgICAg
ICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkdC
QThJLCAgICAgICAgICAgICA4LCAgOCwgIDgsICA4LCAwLCBHTF9SR0JBX0lOVEVHRVIsIEdMX0JZ
VEUsICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgIGZhbHNl
LCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDM+
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGRS
R0JBRm9ybWF0KCZtYXAsIEdMX1JHQkE4VUksICAgICAgICAgICAgOCwgIDgsICA4LCAgOCwgMCwg
R0xfUkdCQV9JTlRFR0VSLCBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICBHTF9VTlNJ
R05FRF9JTlQsICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZl
clN1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SR0JBMTZJLCAgICAgICAg
ICAgMTYsIDE2LCAxNiwgMTYsIDAsIEdMX1JHQkFfSU5URUdFUiwgR0xfU0hPUlQsICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfSU5ULCAgICAgICAgICAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwz
PiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1h
cCwgR0xfUkdCQTE2VUksICAgICAgICAgIDE2LCAxNiwgMTYsIDE2LCAwLCBHTF9SR0JBX0lOVEVH
RVIsIEdMX1VOU0lHTkVEX1NIT1JULCAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAg
ICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVx
dWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsK
KyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHQkEzMkksICAgICAgICAgICAzMiwgMzIsIDMy
LCAzMiwgMCwgR0xfUkdCQV9JTlRFR0VSLCBHTF9JTlQsICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9JTlQsICAgICAgICAgICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBOZXZlclN1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SR0JBMzJV
SSwgICAgICAgICAgMzIsIDMyLCAzMiwgMzIsIDAsIEdMX1JHQkFfSU5URUdFUiwgR0xfVU5TSUdO
RURfSU5ULCAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgZmFsc2UsIFJl
cXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mz4sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOworCisgICAgQWRkUkdC
QUZvcm1hdCgmbWFwLCBHTF9CR1JBOF9FWFQsICAgICAgICAgIDgsICA4LCAgOCwgIDgsIDAsIEdM
X0JHUkFfRVhULCAgICAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAgICBHTF9VTlNJ
R05FRF9OT1JNQUxJWkVELCBmYWxzZSwgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUZv
cm1hdEJHUkE4ODg4PiwgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUZvcm1hdEJHUkE4
ODg4PiwgQWx3YXlzU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX0JHUkE0
X0FOR0xFWCwgICAgICAgNCwgIDQsICA0LCAgNCwgMCwgR0xfQkdSQV9FWFQsICAgICBHTF9VTlNJ
R05FRF9TSE9SVF80XzRfNF80X1JFVl9FWFQsIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIGZhbHNl
LCBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlRm9ybWF0QkdSQTg4ODg+LCBSZXF1aXJl
RXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlRm9ybWF0QkdSQTg4ODg+LCBBbHdheXNTdXBwb3J0ZWQp
OworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfQkdSNV9BMV9BTkdMRVgsICAgICA1LCAgNSwg
IDUsICAxLCAwLCBHTF9CR1JBX0VYVCwgICAgIEdMX1VOU0lHTkVEX1NIT1JUXzFfNV81XzVfUkVW
X0VYVCwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgZmFsc2UsIFJlcXVpcmVFeHQ8JkV4dGVuc2lv
bnM6OnRleHR1cmVGb3JtYXRCR1JBODg4OD4sIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRleHR1
cmVGb3JtYXRCR1JBODg4OD4sIEFsd2F5c1N1cHBvcnRlZCk7CisKKyAgICAvLyBTcGVjaWFsIGZv
cm1hdCB3aGljaCBpcyBub3QgcmVhbGx5IHN1cHBvcnRlZCwgc28gYWx3YXlzIGZhbHNlIGZvciBh
bGwgc3VwcG9ydHMuCisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9CR1I1NjVfQU5HTEVYLCAg
ICAgIDUsICA2LCAgNSwgIDEsIDAsIEdMX0JHUkFfRVhULCAgICAgR0xfVU5TSUdORURfU0hPUlRf
NV82XzUsICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBmYWxzZSwgTmV2ZXJTdXBw
b3J0ZWQsIE5ldmVyU3VwcG9ydGVkLCBOZXZlclN1cHBvcnRlZCk7CiAKICAgICAvLyBGbG9hdGlu
ZyBwb2ludCByZW5kZXJhYmlsaXR5IGFuZCBmaWx0ZXJpbmcgaXMgcHJvdmlkZWQgYnkgT0VTX3Rl
eHR1cmVfZmxvYXQgYW5kIE9FU190ZXh0dXJlX2hhbGZfZmxvYXQKLSAgICAvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8IEludGVybmFsIGZvcm1hdCAgICAgfCAgICAgICAgICB8IEQg
fFMgfCBGb3JtYXQgICAgICAgICAgICAgfCBUeXBlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8IENvbXAgICB8IFNSR0IgfCAgVGV4dHVyZSBzdXBwb3J0ZWQgfCBSZW5kZXJhYmxl
ICAgICAgICAgICAgICAgICAgfCBGaWx0ZXJhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAotICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg
ICAgICAgICAgICAgICB8ICAgICAgICAgIHwgICB8ICB8ICAgICAgICAgICAgICAgICAgICB8ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdHlwZSAgIHwgICAgICB8ICAg
ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gICAgbWFwLmluc2VydChJ
bnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX1IxNkYsICAgICAgICAgICAgICBSR0JBRm9ybWF0KDE2
LCAgMCwgIDAsICAwLCAwLCBHTF9SRUQsICAgICAgICAgIEdMX0hBTEZfRkxPQVQsICAgICAgICAg
ICAgICAgICAgIEdMX0ZMT0FULCBmYWxzZSwgSGFsZkZsb2F0U3VwcG9ydFJHLCBIYWxmRmxvYXRS
ZW5kZXJhYmxlU3VwcG9ydFJHLCBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlSGFsZkZs
b2F0TGluZWFyPikpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xf
UkcxNkYsICAgICAgICAgICAgIFJHQkFGb3JtYXQoMTYsIDE2LCAgMCwgIDAsIDAsIEdMX1JHLCAg
ICAgICAgICAgR0xfSEFMRl9GTE9BVCwgICAgICAgICAgICAgICAgICAgR0xfRkxPQVQsIGZhbHNl
LCBIYWxmRmxvYXRTdXBwb3J0UkcsIEhhbGZGbG9hdFJlbmRlcmFibGVTdXBwb3J0UkcsIFJlcXVp
cmVFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVIYWxmRmxvYXRMaW5lYXI+KSkpOwotICAgIG1hcC5p
bnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9SR0IxNkYsICAgICAgICAgICAgUkdCQUZv
cm1hdCgxNiwgMTYsIDE2LCAgMCwgMCwgR0xfUkdCLCAgICAgICAgICBHTF9IQUxGX0ZMT0FULCAg
ICAgICAgICAgICAgICAgICBHTF9GTE9BVCwgZmFsc2UsIEhhbGZGbG9hdFN1cHBvcnQsICAgSGFs
ZkZsb2F0UmVuZGVyYWJsZVN1cHBvcnQsICAgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6dGV4dHVy
ZUhhbGZGbG9hdExpbmVhcj4pKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9Q
YWlyKEdMX1JHQkExNkYsICAgICAgICAgICBSR0JBRm9ybWF0KDE2LCAxNiwgMTYsIDE2LCAwLCBH
TF9SR0JBLCAgICAgICAgIEdMX0hBTEZfRkxPQVQsICAgICAgICAgICAgICAgICAgIEdMX0ZMT0FU
LCBmYWxzZSwgSGFsZkZsb2F0U3VwcG9ydCwgICBIYWxmRmxvYXRSZW5kZXJhYmxlU3VwcG9ydCwg
ICBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlSGFsZkZsb2F0TGluZWFyPikpKTsKLSAg
ICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfUjMyRiwgICAgICAgICAgICAg
IFJHQkFGb3JtYXQoMzIsICAwLCAgMCwgIDAsIDAsIEdMX1JFRCwgICAgICAgICAgR0xfRkxPQVQs
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfRkxPQVQsIGZhbHNlLCBGbG9hdFN1cHBvcnRSRywg
ICAgIEZsb2F0UmVuZGVyYWJsZVN1cHBvcnRSRywgICAgIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6
OnRleHR1cmVGbG9hdExpbmVhcj4gICAgKSkpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3Jt
YXRJbmZvUGFpcihHTF9SRzMyRiwgICAgICAgICAgICAgUkdCQUZvcm1hdCgzMiwgMzIsICAwLCAg
MCwgMCwgR0xfUkcsICAgICAgICAgICBHTF9GTE9BVCwgICAgICAgICAgICAgICAgICAgICAgICBH
TF9GTE9BVCwgZmFsc2UsIEZsb2F0U3VwcG9ydFJHLCAgICAgRmxvYXRSZW5kZXJhYmxlU3VwcG9y
dFJHLCAgICAgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUZsb2F0TGluZWFyPiAgICAp
KSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX1JHQjMyRiwgICAg
ICAgICAgICBSR0JBRm9ybWF0KDMyLCAzMiwgMzIsICAwLCAwLCBHTF9SR0IsICAgICAgICAgIEdM
X0ZMT0FULCAgICAgICAgICAgICAgICAgICAgICAgIEdMX0ZMT0FULCBmYWxzZSwgRmxvYXRTdXBw
b3J0LCAgICAgICBGbG9hdFJlbmRlcmFibGVTdXBwb3J0LCAgICAgICBSZXF1aXJlRXh0PCZFeHRl
bnNpb25zOjp0ZXh0dXJlRmxvYXRMaW5lYXI+ICAgICkpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVy
bmFsRm9ybWF0SW5mb1BhaXIoR0xfUkdCQTMyRiwgICAgICAgICAgIFJHQkFGb3JtYXQoMzIsIDMy
LCAzMiwgMzIsIDAsIEdMX1JHQkEsICAgICAgICAgR0xfRkxPQVQsICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfRkxPQVQsIGZhbHNlLCBGbG9hdFN1cHBvcnQsICAgICAgIEZsb2F0UmVuZGVyYWJs
ZVN1cHBvcnQsICAgICAgIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVGbG9hdExpbmVh
cj4gICAgKSkpOworICAgIC8vICAgICAgICAgICAgICAgICB8IEludGVybmFsIGZvcm1hdCAgICAg
fCBEIHxTIHwgRm9ybWF0ICAgICAgICAgICAgIHwgVHlwZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCBDb21wICAgfCBTUkdCIHwgIFRleHR1cmUgc3VwcG9ydGVkIHwgUmVuZGVy
YWJsZSAgICAgICAgICAgICAgICAgIHwgRmlsdGVyYWJsZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg
ICAgIHwgICB8ICB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgdHlwZSAgIHwgICAgICB8ICAgICAgICAgICAgICAgICAgICB8ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SMTZGLCAgICAg
ICAgICAgICAgMTYsICAwLCAgMCwgIDAsIDAsIEdMX1JFRCwgICAgICAgICAgR0xfSEFMRl9GTE9B
VCwgICAgICAgICAgICAgICAgICAgR0xfRkxPQVQsIGZhbHNlLCBIYWxmRmxvYXRTdXBwb3J0Ukcs
IEhhbGZGbG9hdFJlbmRlcmFibGVTdXBwb3J0UkcsIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRl
eHR1cmVIYWxmRmxvYXRMaW5lYXI+KTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHMTZG
LCAgICAgICAgICAgICAxNiwgMTYsICAwLCAgMCwgMCwgR0xfUkcsICAgICAgICAgICBHTF9IQUxG
X0ZMT0FULCAgICAgICAgICAgICAgICAgICBHTF9GTE9BVCwgZmFsc2UsIEhhbGZGbG9hdFN1cHBv
cnRSRywgSGFsZkZsb2F0UmVuZGVyYWJsZVN1cHBvcnRSRywgUmVxdWlyZUV4dDwmRXh0ZW5zaW9u
czo6dGV4dHVyZUhhbGZGbG9hdExpbmVhcj4pOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xf
UkdCMTZGLCAgICAgICAgICAgIDE2LCAxNiwgMTYsICAwLCAwLCBHTF9SR0IsICAgICAgICAgIEdM
X0hBTEZfRkxPQVQsICAgICAgICAgICAgICAgICAgIEdMX0ZMT0FULCBmYWxzZSwgSGFsZkZsb2F0
U3VwcG9ydCwgICBIYWxmRmxvYXRSZW5kZXJhYmxlU3VwcG9ydCwgICBSZXF1aXJlRXh0PCZFeHRl
bnNpb25zOjp0ZXh0dXJlSGFsZkZsb2F0TGluZWFyPik7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFw
LCBHTF9SR0JBMTZGLCAgICAgICAgICAgMTYsIDE2LCAxNiwgMTYsIDAsIEdMX1JHQkEsICAgICAg
ICAgR0xfSEFMRl9GTE9BVCwgICAgICAgICAgICAgICAgICAgR0xfRkxPQVQsIGZhbHNlLCBIYWxm
RmxvYXRTdXBwb3J0LCAgIEhhbGZGbG9hdFJlbmRlcmFibGVTdXBwb3J0LCAgIFJlcXVpcmVFeHQ8
JkV4dGVuc2lvbnM6OnRleHR1cmVIYWxmRmxvYXRMaW5lYXI+KTsKKyAgICBBZGRSR0JBRm9ybWF0
KCZtYXAsIEdMX1IzMkYsICAgICAgICAgICAgICAzMiwgIDAsICAwLCAgMCwgMCwgR0xfUkVELCAg
ICAgICAgICBHTF9GTE9BVCwgICAgICAgICAgICAgICAgICAgICAgICBHTF9GTE9BVCwgZmFsc2Us
IEZsb2F0U3VwcG9ydFJHLCAgICAgRmxvYXRSZW5kZXJhYmxlU3VwcG9ydFJHLCAgICAgUmVxdWly
ZUV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUZsb2F0TGluZWFyPiAgICApOworICAgIEFkZFJHQkFG
b3JtYXQoJm1hcCwgR0xfUkczMkYsICAgICAgICAgICAgIDMyLCAzMiwgIDAsICAwLCAwLCBHTF9S
RywgICAgICAgICAgIEdMX0ZMT0FULCAgICAgICAgICAgICAgICAgICAgICAgIEdMX0ZMT0FULCBm
YWxzZSwgRmxvYXRTdXBwb3J0UkcsICAgICBGbG9hdFJlbmRlcmFibGVTdXBwb3J0UkcsICAgICBS
ZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlRmxvYXRMaW5lYXI+ICAgICk7CisgICAgQWRk
UkdCQUZvcm1hdCgmbWFwLCBHTF9SR0IzMkYsICAgICAgICAgICAgMzIsIDMyLCAzMiwgIDAsIDAs
IEdMX1JHQiwgICAgICAgICAgR0xfRkxPQVQsICAgICAgICAgICAgICAgICAgICAgICAgR0xfRkxP
QVQsIGZhbHNlLCBGbG9hdFN1cHBvcnQsICAgICAgIEZsb2F0UmVuZGVyYWJsZVN1cHBvcnQsICAg
ICAgIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVGbG9hdExpbmVhcj4gICAgKTsKKyAg
ICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHQkEzMkYsICAgICAgICAgICAzMiwgMzIsIDMyLCAz
MiwgMCwgR0xfUkdCQSwgICAgICAgICBHTF9GTE9BVCwgICAgICAgICAgICAgICAgICAgICAgICBH
TF9GTE9BVCwgZmFsc2UsIEZsb2F0U3VwcG9ydCwgICAgICAgRmxvYXRSZW5kZXJhYmxlU3VwcG9y
dCwgICAgICAgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUZsb2F0TGluZWFyPiAgICAp
OwogCiAgICAgLy8gRGVwdGggc3RlbmNpbCBmb3JtYXRzCi0gICAgLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCBJbnRlcm5hbCBmb3JtYXQgICAgICAgICB8ICAgICAgICAgICAgICAg
ICAgfCBEIHxTIHwgWCB8IEZvcm1hdCAgICAgICAgICAgIHwgVHlwZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCBDb21wb25lbnQgdHlwZSAgICAgICAgfCBTdXBwb3J0ZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJlbmRlcmFibGUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBG
aWx0ZXJhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICBtYXAuaW5z
ZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfREVQVEhfQ09NUE9ORU5UMTYsICAgICBEZXB0
aFN0ZW5jaWxGb3JtYXQoMTYsIDAsICAwLCBHTF9ERVBUSF9DT01QT05FTlQsIEdMX1VOU0lHTkVE
X1NIT1JULCAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgUmVxdWlyZUVT
PDI+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mj4sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUmVxdWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OmRlcHRoVGV4dHVyZXM+KSkp
OwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9ERVBUSF9DT01QT05F
TlQyNCwgICAgIERlcHRoU3RlbmNpbEZvcm1hdCgyNCwgMCwgIDAsIEdMX0RFUFRIX0NPTVBPTkVO
VCwgR0xfVU5TSUdORURfSU5ULCAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJ
WkVELCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVp
cmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6ZGVw
dGhUZXh0dXJlcz4pKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdM
X0RFUFRIX0NPTVBPTkVOVDMyRiwgICAgRGVwdGhTdGVuY2lsRm9ybWF0KDMyLCAwLCAgMCwgR0xf
REVQVEhfQ09NUE9ORU5ULCBHTF9GTE9BVCwgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0ZM
T0FULCAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFU09yRXh0PDMsICZF
eHRlbnNpb25zOjpkZXB0aFRleHR1cmVzPikpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9y
bWF0SW5mb1BhaXIoR0xfREVQVEhfQ09NUE9ORU5UMzJfT0VTLCBEZXB0aFN0ZW5jaWxGb3JtYXQo
MzIsIDAsICAwLCBHTF9ERVBUSF9DT01QT05FTlQsIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgICAg
ICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgUmVxdWlyZUV4dE9yRXh0PCZFeHRlbnNp
b25zOjpkZXB0aFRleHR1cmVzLCAmRXh0ZW5zaW9uczo6ZGVwdGgzMj4sIFJlcXVpcmVFeHRPckV4
dDwmRXh0ZW5zaW9uczo6ZGVwdGhUZXh0dXJlcywgJkV4dGVuc2lvbnM6OmRlcHRoMzI+LCBBbHdh
eXNTdXBwb3J0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSkpOwotICAgIG1hcC5pbnNl
cnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9ERVBUSDI0X1NURU5DSUw4LCAgICAgIERlcHRo
U3RlbmNpbEZvcm1hdCgyNCwgOCwgIDAsIEdMX0RFUFRIX1NURU5DSUwsICAgR0xfVU5TSUdORURf
SU5UXzI0XzgsICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBSZXF1aXJlRVNP
ckV4dDwzLCAmRXh0ZW5zaW9uczo6ZGVwdGhUZXh0dXJlcz4sIFJlcXVpcmVFU09yRXh0T3JFeHQ8
MywgJkV4dGVuc2lvbnM6OmRlcHRoVGV4dHVyZXMsICZFeHRlbnNpb25zOjpwYWNrZWREZXB0aFN0
ZW5jaWw+LCBBbHdheXNTdXBwb3J0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKSk7
Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0RFUFRIMzJGX1NURU5D
SUw4LCAgICAgRGVwdGhTdGVuY2lsRm9ybWF0KDMyLCA4LCAyNCwgR0xfREVQVEhfU1RFTkNJTCwg
ICBHTF9GTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVYsIEdMX0ZMT0FULCAgICAgICAgICAg
ICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWly
ZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICkpKTsKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICB8IEludGVybmFs
IGZvcm1hdCAgICAgICAgIHwgRCB8UyB8IFggfCBGb3JtYXQgICAgICAgICAgICB8IFR5cGUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29tcG9uZW50IHR5cGUgICAgICAgIHwgU3VwcG9y
dGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSZW5kZXJhYmxlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgRmlsdGVyYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgQWRkRGVwdGhTdGVuY2lsRm9ybWF0KCZtYXAsIEdMX0RFUFRIX0NPTVBPTkVOVDE2LCAg
ICAgMTYsIDAsICAwLCBHTF9ERVBUSF9DT01QT05FTlQsIEdMX1VOU0lHTkVEX1NIT1JULCAgICAg
ICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgUmVxdWlyZUVTPDI+LCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mj4sICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVx
dWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OmRlcHRoVGV4dHVyZXM+KTsKKyAgICBBZGREZXB0
aFN0ZW5jaWxGb3JtYXQoJm1hcCwgR0xfREVQVEhfQ09NUE9ORU5UMjQsICAgICAyNCwgMCwgIDAs
IEdMX0RFUFRIX0NPTVBPTkVOVCwgR0xfVU5TSUdORURfSU5ULCAgICAgICAgICAgICAgICAgICBH
TF9VTlNJR05FRF9OT1JNQUxJWkVELCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVNPckV4dDwz
LCAmRXh0ZW5zaW9uczo6ZGVwdGhUZXh0dXJlcz4pOworICAgIEFkZERlcHRoU3RlbmNpbEZvcm1h
dCgmbWFwLCBHTF9ERVBUSF9DT01QT05FTlQzMkYsICAgIDMyLCAwLCAgMCwgR0xfREVQVEhfQ09N
UE9ORU5ULCBHTF9GTE9BVCwgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0ZMT0FULCAgICAg
ICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFU09yRXh0PDMsICZFeHRlbnNpb25z
OjpkZXB0aFRleHR1cmVzPik7CisgICAgQWRkRGVwdGhTdGVuY2lsRm9ybWF0KCZtYXAsIEdMX0RF
UFRIX0NPTVBPTkVOVDMyX09FUywgMzIsIDAsICAwLCBHTF9ERVBUSF9DT01QT05FTlQsIEdMX1VO
U0lHTkVEX0lOVCwgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgUmVx
dWlyZUV4dE9yRXh0PCZFeHRlbnNpb25zOjpkZXB0aFRleHR1cmVzLCAmRXh0ZW5zaW9uczo6ZGVw
dGgzMj4sIFJlcXVpcmVFeHRPckV4dDwmRXh0ZW5zaW9uczo6ZGVwdGhUZXh0dXJlcywgJkV4dGVu
c2lvbnM6OmRlcHRoMzI+LCBBbHdheXNTdXBwb3J0ZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKTsKKyAgICBBZGREZXB0aFN0ZW5jaWxGb3JtYXQoJm1hcCwgR0xfREVQVEgyNF9TVEVOQ0lM
OCwgICAgICAyNCwgOCwgIDAsIEdMX0RFUFRIX1NURU5DSUwsICAgR0xfVU5TSUdORURfSU5UXzI0
XzgsICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBSZXF1aXJlRVNPckV4dDwz
LCAmRXh0ZW5zaW9uczo6ZGVwdGhUZXh0dXJlcz4sIFJlcXVpcmVFU09yRXh0T3JFeHQ8MywgJkV4
dGVuc2lvbnM6OmRlcHRoVGV4dHVyZXMsICZFeHRlbnNpb25zOjpwYWNrZWREZXB0aFN0ZW5jaWw+
LCBBbHdheXNTdXBwb3J0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgIEFk
ZERlcHRoU3RlbmNpbEZvcm1hdCgmbWFwLCBHTF9ERVBUSDMyRl9TVEVOQ0lMOCwgICAgIDMyLCA4
LCAyNCwgR0xfREVQVEhfU1RFTkNJTCwgICBHTF9GTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9S
RVYsIEdMX0ZMT0FULCAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBv
cnRlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgLy8gU1RFTkNJTF9JTkRF
WDggaXMgc3BlY2lhbC1jYXNlZCwgc2VlIGFyb3VuZCB0aGUgYm90dG9tIG9mIHRoZSBsaXN0Lgog
CiAgICAgLy8gTHVtaW5hbmNlIGFscGhhIGZvcm1hdHMKQEAgLTQ4MiwyMyArNTEwLDIzIEBAIHN0
YXRpYyBJbnRlcm5hbEZvcm1hdEluZm9NYXAmIEJ1aWxkSW50ZXIKICAgICBtYXAuaW5zZXJ0KElu
dGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfTFVNSU5BTkNFX0FMUEhBMTZGX0VYVCwgTFVNQUZvcm1h
dCgxNiwgMTYsIEdMX0xVTUlOQU5DRV9BTFBIQSwgR0xfSEFMRl9GTE9BVCwgICAgR0xfRkxPQVQs
ICAgICAgICAgICAgICAgUmVxdWlyZUV4dEFuZEV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZVN0b3Jh
Z2UsICZFeHRlbnNpb25zOjp0ZXh0dXJlSGFsZkZsb2F0PiwgTmV2ZXJTdXBwb3J0ZWQsIEFsd2F5
c1N1cHBvcnRlZCkpKTsKIAogICAgIC8vIFVuc2l6ZWQgZm9ybWF0cwotICAgIC8vICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgSW50ZXJuYWwgZm9ybWF0ICAgfCAgICAgICAgICAgICB8
IEZvcm1hdCAgICAgICAgICAgIHwgU3VwcG9ydGVkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IFJlbmRlcmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCBGaWx0ZXJhYmxlICAgIHwKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0
SW5mb1BhaXIoR0xfQUxQSEEsICAgICAgICAgICBVbnNpemVkRm9ybWF0KEdMX0FMUEhBLCAgICAg
ICAgICAgUmVxdWlyZUVTPDI+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdh
eXNTdXBwb3J0ZWQpKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdM
X0xVTUlOQU5DRSwgICAgICAgVW5zaXplZEZvcm1hdChHTF9MVU1JTkFOQ0UsICAgICAgIFJlcXVp
cmVFUzwyPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBv
cnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVk
KSkpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9MVU1JTkFOQ0Vf
QUxQSEEsIFVuc2l6ZWRGb3JtYXQoR0xfTFVNSU5BTkNFX0FMUEhBLCBSZXF1aXJlRVM8Mj4sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCkpKTsKLSAgICBt
YXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfUkVELCAgICAgICAgICAgICBVbnNp
emVkRm9ybWF0KEdMX1JFRCwgICAgICAgICAgICAgUmVxdWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lv
bnM6OnRleHR1cmVSRz4sICAgICAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQpKSk7Ci0gICAgbWFwLmluc2VydChJ
bnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX1JHLCAgICAgICAgICAgICAgVW5zaXplZEZvcm1hdChH
TF9SRywgICAgICAgICAgICAgIFJlcXVpcmVFU09yRXh0PDMsICZFeHRlbnNpb25zOjp0ZXh0dXJl
Ukc+LCAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKSkpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3Jt
YXRJbmZvUGFpcihHTF9SR0IsICAgICAgICAgICAgIFVuc2l6ZWRGb3JtYXQoR0xfUkdCLCAgICAg
ICAgICAgICBSZXF1aXJlRVM8Mj4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUmVxdWlyZUVTPDI+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFs
d2F5c1N1cHBvcnRlZCkpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIo
R0xfUkdCQSwgICAgICAgICAgICBVbnNpemVkRm9ybWF0KEdMX1JHQkEsICAgICAgICAgICAgUmVx
dWlyZUVTPDI+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVF
UzwyPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0
ZWQpKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX1JFRF9JTlRF
R0VSLCAgICAgVW5zaXplZEZvcm1hdChHTF9SRURfSU5URUdFUiwgICAgIFJlcXVpcmVFUzwzPiwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQgKSkpOwotICAg
IG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9SR19JTlRFR0VSLCAgICAgIFVu
c2l6ZWRGb3JtYXQoR0xfUkdfSU5URUdFUiwgICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkICkpKTsKLSAgICBtYXAuaW5zZXJ0
KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfUkdCX0lOVEVHRVIsICAgICBVbnNpemVkRm9ybWF0
KEdMX1JHQl9JTlRFR0VSLCAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOZXZlclN1cHBvcnRlZCApKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZv
cm1hdEluZm9QYWlyKEdMX1JHQkFfSU5URUdFUiwgICAgVW5zaXplZEZvcm1hdChHTF9SR0JBX0lO
VEVHRVIsICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TmV2ZXJTdXBwb3J0ZWQgKSkpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFp
cihHTF9CR1JBX0VYVCwgICAgICAgIFVuc2l6ZWRGb3JtYXQoR0xfQkdSQV9FWFQsICAgICAgICBS
ZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlRm9ybWF0QkdSQTg4ODg+LCAgICAgUmVxdWly
ZUV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUZvcm1hdEJHUkE4ODg4PiwgICAgIEFsd2F5c1N1cHBv
cnRlZCkpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfREVQVEhf
Q09NUE9ORU5ULCBVbnNpemVkRm9ybWF0KEdMX0RFUFRIX0NPTVBPTkVOVCwgUmVxdWlyZUVTPDI+
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwyPiwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQpKSk7Ci0g
ICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0RFUFRIX1NURU5DSUwsICAg
VW5zaXplZEZvcm1hdChHTF9ERVBUSF9TVEVOQ0lMLCAgIFJlcXVpcmVFU09yRXh0PDMsICZFeHRl
bnNpb25zOjpwYWNrZWREZXB0aFN0ZW5jaWw+LCBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9u
czo6cGFja2VkRGVwdGhTdGVuY2lsPiwgQWx3YXlzU3VwcG9ydGVkKSkpOwotICAgIG1hcC5pbnNl
cnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9TUkdCX0VYVCwgICAgICAgIFVuc2l6ZWRGb3Jt
YXQoR0xfUkdCLCAgICAgICAgICAgICBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6c1JH
Qj4sICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCkpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFs
Rm9ybWF0SW5mb1BhaXIoR0xfU1JHQl9BTFBIQV9FWFQsICBVbnNpemVkRm9ybWF0KEdMX1JHQkEs
ICAgICAgICAgICAgUmVxdWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OnNSR0I+LCAgICAgICAg
ICAgICAgIFJlcXVpcmVFU09yRXh0PDMsICZFeHRlbnNpb25zOjpzUkdCPiwgICAgICAgICAgICAg
ICBBbHdheXNTdXBwb3J0ZWQpKSk7CisgICAgLy8gICAgICAgICAgICAgICAgICAgIHwgSW50ZXJu
YWwgZm9ybWF0ICAgfCBGb3JtYXQgICAgICAgICAgICB8IFN1cHBvcnRlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSZW5kZXJhYmxlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgRmlsdGVyYWJsZSAgICB8CisgICAgQWRkVW5zaXplZEZv
cm1hdCgmbWFwLCBHTF9BTFBIQSwgICAgICAgICAgIEdMX0FMUEhBLCAgICAgICAgICAgUmVxdWly
ZUVTPDI+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9y
dGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQp
OworICAgIEFkZFVuc2l6ZWRGb3JtYXQoJm1hcCwgR0xfTFVNSU5BTkNFLCAgICAgICBHTF9MVU1J
TkFOQ0UsICAgICAgIFJlcXVpcmVFUzwyPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQWx3YXlzU3VwcG9ydGVkKTsKKyAgICBBZGRVbnNpemVkRm9ybWF0KCZtYXAsIEdMX0xVTUlO
QU5DRV9BTFBIQSwgR0xfTFVNSU5BTkNFX0FMUEhBLCBSZXF1aXJlRVM8Mj4sICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7CisgICAgQWRkVW5zaXplZEZv
cm1hdCgmbWFwLCBHTF9SRUQsICAgICAgICAgICAgIEdMX1JFRCwgICAgICAgICAgICAgUmVxdWly
ZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OnRleHR1cmVSRz4sICAgICAgICAgIE5ldmVyU3VwcG9y
dGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQp
OworICAgIEFkZFVuc2l6ZWRGb3JtYXQoJm1hcCwgR0xfUkcsICAgICAgICAgICAgICBHTF9SRywg
ICAgICAgICAgICAgIFJlcXVpcmVFU09yRXh0PDMsICZFeHRlbnNpb25zOjp0ZXh0dXJlUkc+LCAg
ICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQWx3YXlzU3VwcG9ydGVkKTsKKyAgICBBZGRVbnNpemVkRm9ybWF0KCZtYXAsIEdMX1JHQiwg
ICAgICAgICAgICAgR0xfUkdCLCAgICAgICAgICAgICBSZXF1aXJlRVM8Mj4sICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDI+LCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7CisgICAgQWRkVW5zaXplZEZv
cm1hdCgmbWFwLCBHTF9SR0JBLCAgICAgICAgICAgIEdMX1JHQkEsICAgICAgICAgICAgUmVxdWly
ZUVTPDI+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwy
PiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQp
OworICAgIEFkZFVuc2l6ZWRGb3JtYXQoJm1hcCwgR0xfUkVEX0lOVEVHRVIsICAgICBHTF9SRURf
SU5URUdFUiwgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTmV2ZXJTdXBwb3J0ZWQgKTsKKyAgICBBZGRVbnNpemVkRm9ybWF0KCZtYXAsIEdMX1JHX0lO
VEVHRVIsICAgICAgR0xfUkdfSU5URUdFUiwgICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkICk7CisgICAgQWRkVW5zaXplZEZv
cm1hdCgmbWFwLCBHTF9SR0JfSU5URUdFUiwgICAgIEdMX1JHQl9JTlRFR0VSLCAgICAgUmVxdWly
ZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9y
dGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCAp
OworICAgIEFkZFVuc2l6ZWRGb3JtYXQoJm1hcCwgR0xfUkdCQV9JTlRFR0VSLCAgICBHTF9SR0JB
X0lOVEVHRVIsICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTmV2ZXJTdXBwb3J0ZWQgKTsKKyAgICBBZGRVbnNpemVkRm9ybWF0KCZtYXAsIEdMX0JHUkFf
RVhULCAgICAgICAgR0xfQkdSQV9FWFQsICAgICAgICBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0
ZXh0dXJlRm9ybWF0QkdSQTg4ODg+LCAgICAgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6dGV4dHVy
ZUZvcm1hdEJHUkE4ODg4PiwgICAgIEFsd2F5c1N1cHBvcnRlZCk7CisgICAgQWRkVW5zaXplZEZv
cm1hdCgmbWFwLCBHTF9ERVBUSF9DT01QT05FTlQsIEdMX0RFUFRIX0NPTVBPTkVOVCwgUmVxdWly
ZUVTPDI+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwy
PiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQp
OworICAgIEFkZFVuc2l6ZWRGb3JtYXQoJm1hcCwgR0xfREVQVEhfU1RFTkNJTCwgICBHTF9ERVBU
SF9TVEVOQ0lMLCAgIFJlcXVpcmVFU09yRXh0PDMsICZFeHRlbnNpb25zOjpwYWNrZWREZXB0aFN0
ZW5jaWw+LCBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6cGFja2VkRGVwdGhTdGVuY2ls
PiwgQWx3YXlzU3VwcG9ydGVkKTsKKyAgICBBZGRVbnNpemVkRm9ybWF0KCZtYXAsIEdMX1NSR0Jf
RVhULCAgICAgICAgR0xfUkdCLCAgICAgICAgICAgICBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5z
aW9uczo6c1JHQj4sICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7CisgICAgQWRkVW5zaXplZEZv
cm1hdCgmbWFwLCBHTF9TUkdCX0FMUEhBX0VYVCwgIEdMX1JHQkEsICAgICAgICAgICAgUmVxdWly
ZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OnNSR0I+LCAgICAgICAgICAgICAgIFJlcXVpcmVFU09y
RXh0PDMsICZFeHRlbnNpb25zOjpzUkdCPiwgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQp
OwogCiAgICAgLy8gQ29tcHJlc3NlZCBmb3JtYXRzLCBGcm9tIEVTIDMuMC4xIHNwZWMsIHRhYmxl
IDMuMTYKICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEludGVybmFsIGZv
cm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8VyB8SCB8
IEJTIHxDQ3wgRm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5
cGUgICAgICAgICAgICB8IFNSR0IgfCBTdXBwb3J0ZWQgICB8IFJlbmRlcmFibGUgICAgfCBGaWx0
ZXJhYmxlICAgIHwKQEAgLTU2MywxMSArNTkxLDIyIEBAIHN0YXRpYyBJbnRlcm5hbEZvcm1hdElu
Zm9NYXAmIEJ1aWxkSW50ZXIKICAgICAvLyAtIE11bHRpc2FtcGxlZCBidWZmZXIgYXJlIGRpc2Fs
bG93ZWQgZm9yIG5vbi1ub3JtYWxpemVkIGludGVnZXIgY29tcG9uZW50IHR5cGVzIGFuZCB3ZSB3
YW50IHRvIHN1cHBvcnQgaXQgZm9yIFNURU5DSUxfSU5ERVg4CiAgICAgLy8gLSBBbGwgb3RoZXIg
c3RlbmNpbCBmb3JtYXRzIChhbGwgZGVwdGgtc3RlbmNpbCkgYXJlIGVpdGhlciBmbG9hdCBvciBu
b3JtYWxpemVkCiAgICAgLy8gLSBJdCBhZmZlY3RzIG9ubHkgdmFsaWRhdGlvbiBvZiBpbnRlcm5h
bGZvcm1hdCBpbiBSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUuCi0gICAgLy8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCBJbnRlcm5hbCBmb3JtYXQgIHwgICAgICAgICAgICAg
ICAgICB8RCB8UyB8WCB8IEZvcm1hdCAgICAgICAgICB8IFR5cGUgICAgICAgICAgICB8IENvbXBv
bmVudCB0eXBlICAgICAgICB8IFN1cHBvcnRlZCAgIHwgUmVuZGVyYWJsZSAgfCBGaWx0ZXJhYmxl
ICAgfAotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9TVEVOQ0lMX0lO
REVYOCwgRGVwdGhTdGVuY2lsRm9ybWF0KDAsIDgsIDAsIEdMX0RFUFRIX1NURU5DSUwsIEdMX1VO
U0lHTkVEX0JZVEUsIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIFJlcXVpcmVFUzwyPiwgUmVxdWly
ZUVTPDI+LCBOZXZlclN1cHBvcnRlZCkpKTsKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAg
ICB8IEludGVybmFsIGZvcm1hdCAgfEQgfFMgfFggfCBGb3JtYXQgICAgfCBUeXBlICAgICAgICAg
ICAgfCBDb21wb25lbnQgdHlwZSAgICAgICAgfCBTdXBwb3J0ZWQgICB8IFJlbmRlcmFibGUgIHwg
RmlsdGVyYWJsZSAgIHwKKyAgICBBZGREZXB0aFN0ZW5jaWxGb3JtYXQoJm1hcCwgR0xfU1RFTkNJ
TF9JTkRFWDgsIDAsIDgsIDAsIEdMX1NURU5DSUwsIEdMX1VOU0lHTkVEX0JZVEUsIEdMX1VOU0lH
TkVEX05PUk1BTElaRUQsIFJlcXVpcmVFUzwyPiwgUmVxdWlyZUVTPDI+LCBOZXZlclN1cHBvcnRl
ZCk7CiAKICAgICAvLyBGcm9tIEdMX0FOR0xFX2xvc3N5X2V0Y19kZWNvZGUKLSAgICBtYXAuaW5z
ZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfRVRDMV9SR0I4X0xPU1NZX0RFQ09ERV9BTkdM
RSwgQ29tcHJlc3NlZEZvcm1hdCg0LCA0LCA2NCwgMywgR0xfRVRDMV9SR0I4X09FUywgR0xfVU5T
SUdORURfQllURSwgZmFsc2UsIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6Omxvc3N5RVRDRGVjb2Rl
PiwgTmV2ZXJTdXBwb3J0ZWQsIEFsd2F5c1N1cHBvcnRlZCkpKTsKKyAgICBtYXAuaW5zZXJ0KElu
dGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfRVRDMV9SR0I4X0xPU1NZX0RFQ09ERV9BTkdMRSwgQ29t
cHJlc3NlZEZvcm1hdCg0LCA0LCA2NCwgMywgR0xfRVRDMV9SR0I4X0xPU1NZX0RFQ09ERV9BTkdM
RSwgR0xfVU5TSUdORURfQllURSwgZmFsc2UsIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6Omxvc3N5
RVRDRGVjb2RlPiwgTmV2ZXJTdXBwb3J0ZWQsIEFsd2F5c1N1cHBvcnRlZCkpKTsKKworICAgIC8v
IEZyb20gR0xfRVhUX3RleHR1cmVfbm9ybTE2CisgICAgLy8gICAgICAgICAgICAgICAgIHwgSW50
ZXJuYWwgZm9ybWF0ICAgICB8IFIgfCBHIHwgQiB8IEEgfFMgfCBGb3JtYXQgICAgICAgICB8IFR5
cGUgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbXBvbmVudCB0eXBlICAgICAgICB8IFNS
R0IgfCBUZXh0dXJlIHN1cHBvcnRlZCAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVuZGVyYWJs
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZpbHRlcmFibGUgICAgfAorICAgIEFk
ZFJHQkFGb3JtYXQoJm1hcCwgR0xfUjE2X0VYVCwgICAgICAgICAgIDE2LCAgMCwgIDAsICAwLCAw
LCBHTF9SRUQsICAgICAgICAgIEdMX1VOU0lHTkVEX1NIT1JULCAgICAgICAgICAgICAgIEdMX1VO
U0lHTkVEX05PUk1BTElaRUQsIGZhbHNlLCBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJl
Tm9ybTE2PiwgICAgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZU5vcm0xNj4sICAgIEFs
d2F5c1N1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SMTZfU05PUk1fRVhU
LCAgICAgMTYsICAwLCAgMCwgIDAsIDAsIEdMX1JFRCwgICAgICAgICAgR0xfU0hPUlQsICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfU0lHTkVEX05PUk1BTElaRUQsICAgZmFsc2UsIFJlcXVpcmVF
eHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVOb3JtMTY+LCAgICBOZXZlclN1cHBvcnRlZCwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0
KCZtYXAsIEdMX1JHMTZfRVhULCAgICAgICAgICAxNiwgMTYsICAwLCAgMCwgMCwgR0xfUkcsICAg
ICAgICAgICBHTF9VTlNJR05FRF9TSE9SVCwgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JN
QUxJWkVELCBmYWxzZSwgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZU5vcm0xNj4sICAg
IFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVOb3JtMTY+LCAgICBBbHdheXNTdXBwb3J0
ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkcxNl9TTk9STV9FWFQsICAgIDE2LCAx
NiwgIDAsICAwLCAwLCBHTF9SRywgICAgICAgICAgIEdMX1NIT1JULCAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX1NJR05FRF9OT1JNQUxJWkVELCAgIGZhbHNlLCBSZXF1aXJlRXh0PCZFeHRlbnNp
b25zOjp0ZXh0dXJlTm9ybTE2PiwgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9S
R0IxNl9FWFQsICAgICAgICAgMTYsIDE2LCAxNiwgIDAsIDAsIEdMX1JHQiwgICAgICAgICAgR0xf
VU5TSUdORURfU0hPUlQsICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgZmFs
c2UsIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVOb3JtMTY+LCAgICBOZXZlclN1cHBv
cnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKTsKKyAgICBB
ZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHQjE2X1NOT1JNX0VYVCwgICAxNiwgMTYsIDE2LCAgMCwg
MCwgR0xfUkdCLCAgICAgICAgICBHTF9TSE9SVCwgICAgICAgICAgICAgICAgICAgICAgICBHTF9T
SUdORURfTk9STUFMSVpFRCwgICBmYWxzZSwgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6dGV4dHVy
ZU5vcm0xNj4sICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
bHdheXNTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkdCQTE2X0VYVCwg
ICAgICAgIDE2LCAxNiwgMTYsIDE2LCAwLCBHTF9SR0JBLCAgICAgICAgIEdMX1VOU0lHTkVEX1NI
T1JULCAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIGZhbHNlLCBSZXF1aXJl
RXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlTm9ybTE2PiwgICAgUmVxdWlyZUV4dDwmRXh0ZW5zaW9u
czo6dGV4dHVyZU5vcm0xNj4sICAgIEFsd2F5c1N1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1h
dCgmbWFwLCBHTF9SR0JBMTZfU05PUk1fRVhULCAgMTYsIDE2LCAxNiwgMTYsIDAsIEdMX1JHQkEs
ICAgICAgICAgR0xfU0hPUlQsICAgICAgICAgICAgICAgICAgICAgICAgR0xfU0lHTkVEX05PUk1B
TElaRUQsICAgZmFsc2UsIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVOb3JtMTY+LCAg
ICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9y
dGVkKTsKIAogICAgIC8vIGNsYW5nLWZvcm1hdCBvbgogCkBAIC01NzYsMjAgKzYxNSwyNiBAQCBz
dGF0aWMgSW50ZXJuYWxGb3JtYXRJbmZvTWFwJiBCdWlsZEludGVyCiAKIHN0YXRpYyBjb25zdCBJ
bnRlcm5hbEZvcm1hdEluZm9NYXAgJkdldEludGVybmFsRm9ybWF0TWFwKCkKIHsKLSAgICBzdGF0
aWMgY29uc3QgSW50ZXJuYWxGb3JtYXRJbmZvTWFwJiBmb3JtYXRNYXAgPSBCdWlsZEludGVybmFs
Rm9ybWF0SW5mb01hcCgpOworI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIEdD
QyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZXhpdC10aW1lLWRlc3RydWN0b3JzIgorICAgIHN0YXRp
YyBjb25zdCBJbnRlcm5hbEZvcm1hdEluZm9NYXAgZm9ybWF0TWFwID0gQnVpbGRJbnRlcm5hbEZv
cm1hdEluZm9NYXAoKTsKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCiAgICAgcmV0dXJuIGZv
cm1hdE1hcDsKIH0KIAotc3RhdGljIEZvcm1hdFNldCYgQnVpbGRBbGxTaXplZEludGVybmFsRm9y
bWF0U2V0KCkKK3N0YXRpYyBGb3JtYXRTZXQgQnVpbGRBbGxTaXplZEludGVybmFsRm9ybWF0U2V0
KCkKIHsKLSAgICBhdXRvJiByZXN1bHQgPSAqbmV3IEZvcm1hdFNldDsKKyAgICBGb3JtYXRTZXQg
cmVzdWx0OwogCi0gICAgY29uc3QgSW50ZXJuYWxGb3JtYXRJbmZvTWFwICZmb3JtYXRzID0gR2V0
SW50ZXJuYWxGb3JtYXRNYXAoKTsKLSAgICBmb3IgKEludGVybmFsRm9ybWF0SW5mb01hcDo6Y29u
c3RfaXRlcmF0b3IgaSA9IGZvcm1hdHMuYmVnaW4oKTsgaSAhPSBmb3JtYXRzLmVuZCgpOyBpKysp
CisgICAgZm9yIChhdXRvIGl0ZXIgOiBHZXRJbnRlcm5hbEZvcm1hdE1hcCgpKQogICAgIHsKLSAg
ICAgICAgaWYgKGktPnNlY29uZC5waXhlbEJ5dGVzID4gMCkKKyAgICAgICAgaWYgKGl0ZXIuc2Vj
b25kLnBpeGVsQnl0ZXMgPiAwKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQuaW5zZXJ0
KGktPmZpcnN0KTsKKyAgICAgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IEZpeCB0aGlzIGhhY2su
CisgICAgICAgICAgICBpZiAoaXRlci5maXJzdCA9PSBHTF9CR1I1NjVfQU5HTEVYKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICByZXN1bHQuaW5zZXJ0KGl0ZXIuZmly
c3QpOwogICAgICAgICB9CiAgICAgfQogCkBAIC02NTUsNyArNzAwLDcgQEAgY29uc3QgVHlwZSAm
R2V0VHlwZUluZm8oR0xlbnVtIHR5cGUpCiBjb25zdCBJbnRlcm5hbEZvcm1hdCAmR2V0SW50ZXJu
YWxGb3JtYXRJbmZvKEdMZW51bSBpbnRlcm5hbEZvcm1hdCkKIHsKICAgICBjb25zdCBJbnRlcm5h
bEZvcm1hdEluZm9NYXAgJmZvcm1hdE1hcCA9IEdldEludGVybmFsRm9ybWF0TWFwKCk7Ci0gICAg
SW50ZXJuYWxGb3JtYXRJbmZvTWFwOjpjb25zdF9pdGVyYXRvciBpdGVyID0gZm9ybWF0TWFwLmZp
bmQoaW50ZXJuYWxGb3JtYXQpOworICAgIGF1dG8gaXRlciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gZm9ybWF0TWFwLmZpbmQoaW50ZXJuYWxGb3JtYXQpOwogICAgIGlmIChpdGVyICE9
IGZvcm1hdE1hcC5lbmQoKSkKICAgICB7CiAgICAgICAgIHJldHVybiBpdGVyLT5zZWNvbmQ7CkBA
IC02NjcsOTcgKzcxMiwxNjAgQEAgY29uc3QgSW50ZXJuYWxGb3JtYXQgJkdldEludGVybmFsRm9y
bWF0SQogICAgIH0KIH0KIAotR0x1aW50IEludGVybmFsRm9ybWF0Ojpjb21wdXRlUm93UGl0Y2go
R0xlbnVtIGZvcm1hdFR5cGUsIEdMc2l6ZWkgd2lkdGgsIEdMaW50IGFsaWdubWVudCwgR0xpbnQg
cm93TGVuZ3RoKSBjb25zdAorR0x1aW50IEludGVybmFsRm9ybWF0Ojpjb21wdXRlUGl4ZWxCeXRl
cyhHTGVudW0gZm9ybWF0VHlwZSkgY29uc3QKIHsKLSAgICBBU1NFUlQoYWxpZ25tZW50ID4gMCAm
JiBpc1BvdzIoYWxpZ25tZW50KSk7Ci0gICAgR0x1aW50IHJvd0J5dGVzOwotICAgIGlmIChyb3dM
ZW5ndGggPiAwKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFjb21wcmVzc2VkKTsKLSAgICAgICAg
cm93Qnl0ZXMgPSBwaXhlbEJ5dGVzICogcm93TGVuZ3RoOwotICAgIH0KLSAgICBlbHNlCi0gICAg
ewotICAgICAgICByb3dCeXRlcyA9IGNvbXB1dGVCbG9ja1NpemUoZm9ybWF0VHlwZSwgd2lkdGgs
IDEpOwotICAgIH0KLSAgICByZXR1cm4gcng6OnJvdW5kVXAocm93Qnl0ZXMsIHN0YXRpY19jYXN0
PEdMdWludD4oYWxpZ25tZW50KSk7CisgICAgY29uc3QgYXV0byAmdHlwZUluZm8gPSBHZXRUeXBl
SW5mbyhmb3JtYXRUeXBlKTsKKyAgICBHTHVpbnQgY29tcG9uZW50cyAgICA9IHR5cGVJbmZvLnNw
ZWNpYWxJbnRlcnByZXRhdGlvbiA/IDF1IDogY29tcG9uZW50Q291bnQ7CisgICAgcmV0dXJuIGNv
bXBvbmVudHMgKiB0eXBlSW5mby5ieXRlczsKIH0KIAotR0x1aW50IEludGVybmFsRm9ybWF0Ojpj
b21wdXRlRGVwdGhQaXRjaChHTGVudW0gZm9ybWF0VHlwZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGFsaWdubWVudCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcm93TGVuZ3RoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbWFnZUhlaWdodCkgY29uc3QKK0Vycm9y
T3JSZXN1bHQ8R0x1aW50PiBJbnRlcm5hbEZvcm1hdDo6Y29tcHV0ZVJvd1BpdGNoKEdMZW51bSBm
b3JtYXRUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYWxpZ25tZW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJv
d0xlbmd0aCkgY29uc3QKIHsKLSAgICBHTHVpbnQgcm93czsKLSAgICBpZiAoaW1hZ2VIZWlnaHQg
PiAwKQorICAgIC8vIENvbXByZXNzZWQgaW1hZ2VzIGRvIG5vdCB1c2UgcGFjay91bnBhY2sgcGFy
YW1ldGVycy4KKyAgICBpZiAoY29tcHJlc3NlZCkKICAgICB7Ci0gICAgICAgIHJvd3MgPSBpbWFn
ZUhlaWdodDsKKyAgICAgICAgQVNTRVJUKHJvd0xlbmd0aCA9PSAwKTsKKyAgICAgICAgcmV0dXJu
IGNvbXB1dGVDb21wcmVzc2VkSW1hZ2VTaXplKGZvcm1hdFR5cGUsIEV4dGVudHMod2lkdGgsIDEs
IDEpKTsKICAgICB9Ci0gICAgZWxzZQorCisgICAgQ2hlY2tlZE51bWVyaWM8R0x1aW50PiBjaGVj
a2VkV2lkdGgocm93TGVuZ3RoID4gMCA/IHJvd0xlbmd0aCA6IHdpZHRoKTsKKyAgICBDaGVja2Vk
TnVtZXJpYzxHTHVpbnQ+IGNoZWNrZWRSb3dCeXRlcyA9IGNoZWNrZWRXaWR0aCAqIGNvbXB1dGVQ
aXhlbEJ5dGVzKGZvcm1hdFR5cGUpOworCisgICAgQVNTRVJUKGFsaWdubWVudCA+IDAgJiYgaXNQ
b3cyKGFsaWdubWVudCkpOworICAgIENoZWNrZWROdW1lcmljPEdMdWludD4gY2hlY2tlZEFsaWdu
bWVudChhbGlnbm1lbnQpOworICAgIGF1dG8gYWxpZ25lZCA9IHJ4Ojpyb3VuZFVwKGNoZWNrZWRS
b3dCeXRlcywgY2hlY2tlZEFsaWdubWVudCk7CisgICAgQU5HTEVfVFJZX0NIRUNLRURfTUFUSChh
bGlnbmVkKTsKKyAgICByZXR1cm4gYWxpZ25lZC5WYWx1ZU9yRGllKCk7Cit9CisKK0Vycm9yT3JS
ZXN1bHQ8R0x1aW50PiBJbnRlcm5hbEZvcm1hdDo6Y29tcHV0ZURlcHRoUGl0Y2goR0xzaXplaSBo
ZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGltYWdlSGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcm93UGl0Y2gpIGNvbnN0Cit7CisgICAg
R0x1aW50IHJvd3MgPQorICAgICAgICAoaW1hZ2VIZWlnaHQgPiAwID8gc3RhdGljX2Nhc3Q8R0x1
aW50PihpbWFnZUhlaWdodCkgOiBzdGF0aWNfY2FzdDxHTHVpbnQ+KGhlaWdodCkpOworICAgIENo
ZWNrZWROdW1lcmljPEdMdWludD4gY2hlY2tlZFJvd1BpdGNoKHJvd1BpdGNoKTsKKworICAgIGF1
dG8gZGVwdGhQaXRjaCA9IGNoZWNrZWRSb3dQaXRjaCAqIHJvd3M7CisgICAgQU5HTEVfVFJZX0NI
RUNLRURfTUFUSChkZXB0aFBpdGNoKTsKKyAgICByZXR1cm4gZGVwdGhQaXRjaC5WYWx1ZU9yRGll
KCk7Cit9CisKK0Vycm9yT3JSZXN1bHQ8R0x1aW50PiBJbnRlcm5hbEZvcm1hdDo6Y29tcHV0ZURl
cHRoUGl0Y2goR0xlbnVtIGZvcm1hdFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBhbGlnbm1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByb3dMZW5ndGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBpbWFnZUhlaWdodCkgY29uc3QKK3sKKyAgICBHTHVpbnQgcm93UGl0Y2ggPSAwOworICAg
IEFOR0xFX1RSWV9SRVNVTFQoY29tcHV0ZVJvd1BpdGNoKGZvcm1hdFR5cGUsIHdpZHRoLCBhbGln
bm1lbnQsIHJvd0xlbmd0aCksIHJvd1BpdGNoKTsKKyAgICByZXR1cm4gY29tcHV0ZURlcHRoUGl0
Y2goaGVpZ2h0LCBpbWFnZUhlaWdodCwgcm93UGl0Y2gpOworfQorCitFcnJvck9yUmVzdWx0PEdM
dWludD4gSW50ZXJuYWxGb3JtYXQ6OmNvbXB1dGVDb21wcmVzc2VkSW1hZ2VTaXplKEdMZW51bSBm
b3JtYXRUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRXh0ZW50cyAmc2l6ZSkgY29uc3QKK3sKKyAg
ICBDaGVja2VkTnVtZXJpYzxHTHVpbnQ+IGNoZWNrZWRXaWR0aChzaXplLndpZHRoKTsKKyAgICBD
aGVja2VkTnVtZXJpYzxHTHVpbnQ+IGNoZWNrZWRIZWlnaHQoc2l6ZS5oZWlnaHQpOworICAgIENo
ZWNrZWROdW1lcmljPEdMdWludD4gY2hlY2tlZERlcHRoKHNpemUuZGVwdGgpOworICAgIENoZWNr
ZWROdW1lcmljPEdMdWludD4gY2hlY2tlZEJsb2NrV2lkdGgoY29tcHJlc3NlZEJsb2NrV2lkdGgp
OworICAgIENoZWNrZWROdW1lcmljPEdMdWludD4gY2hlY2tlZEJsb2NrSGVpZ2h0KGNvbXByZXNz
ZWRCbG9ja0hlaWdodCk7CisKKyAgICBBU1NFUlQoY29tcHJlc3NlZCk7CisgICAgYXV0byBudW1C
bG9ja3NXaWRlID0gKGNoZWNrZWRXaWR0aCArIGNoZWNrZWRCbG9ja1dpZHRoIC0gMXUpIC8gY2hl
Y2tlZEJsb2NrV2lkdGg7CisgICAgYXV0byBudW1CbG9ja3NIaWdoID0gKGNoZWNrZWRIZWlnaHQg
KyBjaGVja2VkQmxvY2tIZWlnaHQgLSAxdSkgLyBjaGVja2VkQmxvY2tIZWlnaHQ7CisgICAgYXV0
byBieXRlcyAgICAgICAgID0gbnVtQmxvY2tzV2lkZSAqIG51bUJsb2Nrc0hpZ2ggKiBwaXhlbEJ5
dGVzICogY2hlY2tlZERlcHRoOworICAgIEFOR0xFX1RSWV9DSEVDS0VEX01BVEgoYnl0ZXMpOwor
ICAgIHJldHVybiBieXRlcy5WYWx1ZU9yRGllKCk7Cit9CisKK0Vycm9yT3JSZXN1bHQ8R0x1aW50
PiBJbnRlcm5hbEZvcm1hdDo6Y29tcHV0ZVNraXBCeXRlcyhHTHVpbnQgcm93UGl0Y2gsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBkZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBQaXhlbFN0b3JlU3RhdGVCYXNlICZzdGF0ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBpczNEKSBjb25zdAoreworICAgIENoZWNrZWROdW1lcmljPEdMdWludD4gY2hlY2tlZFJv
d1BpdGNoKHJvd1BpdGNoKTsKKyAgICBDaGVja2VkTnVtZXJpYzxHTHVpbnQ+IGNoZWNrZWREZXB0
aFBpdGNoKGRlcHRoUGl0Y2gpOworICAgIENoZWNrZWROdW1lcmljPEdMdWludD4gY2hlY2tlZFNr
aXBJbWFnZXMoc3RhdGljX2Nhc3Q8R0x1aW50PihzdGF0ZS5za2lwSW1hZ2VzKSk7CisgICAgQ2hl
Y2tlZE51bWVyaWM8R0x1aW50PiBjaGVja2VkU2tpcFJvd3Moc3RhdGljX2Nhc3Q8R0x1aW50Pihz
dGF0ZS5za2lwUm93cykpOworICAgIENoZWNrZWROdW1lcmljPEdMdWludD4gY2hlY2tlZFNraXBQ
aXhlbHMoc3RhdGljX2Nhc3Q8R0x1aW50PihzdGF0ZS5za2lwUGl4ZWxzKSk7CisgICAgQ2hlY2tl
ZE51bWVyaWM8R0x1aW50PiBjaGVja2VkUGl4ZWxCeXRlcyhwaXhlbEJ5dGVzKTsKKyAgICBhdXRv
IGNoZWNrZWRTa2lwSW1hZ2VzQnl0ZXMgPSBjaGVja2VkU2tpcEltYWdlcyAqIGNoZWNrZWREZXB0
aFBpdGNoOworICAgIGlmICghaXMzRCkKICAgICB7Ci0gICAgICAgIHJvd3MgPSBoZWlnaHQ7Cisg
ICAgICAgIGNoZWNrZWRTa2lwSW1hZ2VzQnl0ZXMgPSAwOwogICAgIH0KLSAgICByZXR1cm4gY29t
cHV0ZVJvd1BpdGNoKGZvcm1hdFR5cGUsIHdpZHRoLCBhbGlnbm1lbnQsIHJvd0xlbmd0aCkgKiBy
b3dzOwotfQorICAgIGF1dG8gc2tpcEJ5dGVzID0gY2hlY2tlZFNraXBJbWFnZXNCeXRlcyArIGNo
ZWNrZWRTa2lwUm93cyAqIGNoZWNrZWRSb3dQaXRjaCArCisgICAgICAgICAgICAgICAgICAgICBj
aGVja2VkU2tpcFBpeGVscyAqIGNoZWNrZWRQaXhlbEJ5dGVzOworICAgIEFOR0xFX1RSWV9DSEVD
S0VEX01BVEgoc2tpcEJ5dGVzKTsKKyAgICByZXR1cm4gc2tpcEJ5dGVzLlZhbHVlT3JEaWUoKTsK
K30KKworRXJyb3JPclJlc3VsdDxHTHVpbnQ+IEludGVybmFsRm9ybWF0Ojpjb21wdXRlUGFja1Vu
cGFja0VuZEJ5dGUoCisgICAgR0xlbnVtIGZvcm1hdFR5cGUsCisgICAgY29uc3QgRXh0ZW50cyAm
c2l6ZSwKKyAgICBjb25zdCBQaXhlbFN0b3JlU3RhdGVCYXNlICZzdGF0ZSwKKyAgICBib29sIGlz
M0QpIGNvbnN0Cit7CisgICAgR0x1aW50IHJvd1BpdGNoID0gMDsKKyAgICBBTkdMRV9UUllfUkVT
VUxUKGNvbXB1dGVSb3dQaXRjaChmb3JtYXRUeXBlLCBzaXplLndpZHRoLCBzdGF0ZS5hbGlnbm1l
bnQsIHN0YXRlLnJvd0xlbmd0aCksCisgICAgICAgICAgICAgICAgICAgICByb3dQaXRjaCk7CiAK
LUdMdWludCBJbnRlcm5hbEZvcm1hdDo6Y29tcHV0ZUJsb2NrU2l6ZShHTGVudW0gZm9ybWF0VHlw
ZSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpIGNvbnN0Ci17CisgICAgR0x1aW50IGRl
cHRoUGl0Y2ggPSAwOworICAgIGlmIChpczNEKQorICAgIHsKKyAgICAgICAgQU5HTEVfVFJZX1JF
U1VMVChjb21wdXRlRGVwdGhQaXRjaChzaXplLmhlaWdodCwgc3RhdGUuaW1hZ2VIZWlnaHQsIHJv
d1BpdGNoKSwgZGVwdGhQaXRjaCk7CisgICAgfQorCisgICAgQ2hlY2tlZE51bWVyaWM8R0x1aW50
PiBjaGVja2VkQ29weUJ5dGVzID0gMDsKICAgICBpZiAoY29tcHJlc3NlZCkKICAgICB7Ci0gICAg
ICAgIEdMc2l6ZWkgbnVtQmxvY2tzV2lkZSA9ICh3aWR0aCArIGNvbXByZXNzZWRCbG9ja1dpZHRo
IC0gMSkgLyBjb21wcmVzc2VkQmxvY2tXaWR0aDsKLSAgICAgICAgR0xzaXplaSBudW1CbG9ja3NI
aWdodCA9IChoZWlnaHQgKyBjb21wcmVzc2VkQmxvY2tIZWlnaHQgLSAxKSAvIGNvbXByZXNzZWRC
bG9ja0hlaWdodDsKLSAgICAgICAgcmV0dXJuIChwaXhlbEJ5dGVzICogbnVtQmxvY2tzV2lkZSAq
IG51bUJsb2Nrc0hpZ2h0KTsKKyAgICAgICAgQU5HTEVfVFJZX1JFU1VMVChjb21wdXRlQ29tcHJl
c3NlZEltYWdlU2l6ZShmb3JtYXRUeXBlLCBzaXplKSwgY2hlY2tlZENvcHlCeXRlcyk7CiAgICAg
fQotICAgIGVsc2UKKyAgICBlbHNlIGlmIChzaXplLmhlaWdodCAhPSAwICYmICghaXMzRCB8fCBz
aXplLmRlcHRoICE9IDApKQogICAgIHsKLSAgICAgICAgY29uc3QgVHlwZSAmdHlwZUluZm8gPSBH
ZXRUeXBlSW5mbyhmb3JtYXRUeXBlKTsKLSAgICAgICAgaWYgKHR5cGVJbmZvLnNwZWNpYWxJbnRl
cnByZXRhdGlvbikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHR5cGVJbmZvLmJ5dGVz
ICogd2lkdGggKiBoZWlnaHQ7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQorICAgICAgICBDaGVj
a2VkTnVtZXJpYzxHTHVpbnQ+IGJ5dGVzID0gY29tcHV0ZVBpeGVsQnl0ZXMoZm9ybWF0VHlwZSk7
CisgICAgICAgIGNoZWNrZWRDb3B5Qnl0ZXMgKz0gc2l6ZS53aWR0aCAqIGJ5dGVzOworCisgICAg
ICAgIENoZWNrZWROdW1lcmljPEdMdWludD4gaGVpZ2h0TWludXNPbmUgPSBzaXplLmhlaWdodCAt
IDE7CisgICAgICAgIGNoZWNrZWRDb3B5Qnl0ZXMgKz0gaGVpZ2h0TWludXNPbmUgKiByb3dQaXRj
aDsKKworICAgICAgICBpZiAoaXMzRCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGNv
bXBvbmVudENvdW50ICogdHlwZUluZm8uYnl0ZXMgKiB3aWR0aCAqIGhlaWdodDsKKyAgICAgICAg
ICAgIENoZWNrZWROdW1lcmljPEdMdWludD4gZGVwdGhNaW51c09uZSA9IHNpemUuZGVwdGggLSAx
OworICAgICAgICAgICAgY2hlY2tlZENvcHlCeXRlcyArPSBkZXB0aE1pbnVzT25lICogZGVwdGhQ
aXRjaDsKICAgICAgICAgfQogICAgIH0KLX0KIAotR0x1aW50IEludGVybmFsRm9ybWF0Ojpjb21w
dXRlU2tpcFBpeGVscyhHTGludCByb3dQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgZGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgc2tpcEltYWdlcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2tpcFJvd3MsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNraXBQaXhlbHMpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIHNraXBJbWFnZXMgKiBkZXB0aFBpdGNoICsgc2tpcFJvd3MgKiByb3dQaXRjaCArIHNraXBQ
aXhlbHMgKiBwaXhlbEJ5dGVzOworICAgIENoZWNrZWROdW1lcmljPEdMdWludD4gY2hlY2tlZFNr
aXBCeXRlcyA9IDA7CisgICAgQU5HTEVfVFJZX1JFU1VMVChjb21wdXRlU2tpcEJ5dGVzKHJvd1Bp
dGNoLCBkZXB0aFBpdGNoLCBzdGF0ZSwgaXMzRCksIGNoZWNrZWRTa2lwQnl0ZXMpOworCisgICAg
Q2hlY2tlZE51bWVyaWM8R0x1aW50PiBlbmRCeXRlID0gY2hlY2tlZENvcHlCeXRlcyArIGNoZWNr
ZWRTa2lwQnl0ZXM7CisKKyAgICBBTkdMRV9UUllfQ0hFQ0tFRF9NQVRIKGVuZEJ5dGUpOworICAg
IHJldHVybiBlbmRCeXRlLlZhbHVlT3JEaWUoKTsKIH0KIAogR0xlbnVtIEdldFNpemVkSW50ZXJu
YWxGb3JtYXQoR0xlbnVtIGludGVybmFsRm9ybWF0LCBHTGVudW0gdHlwZSkKIHsKLSAgICBjb25z
dCBJbnRlcm5hbEZvcm1hdCYgZm9ybWF0SW5mbyA9IEdldEludGVybmFsRm9ybWF0SW5mbyhpbnRl
cm5hbEZvcm1hdCk7CisgICAgY29uc3QgSW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBHZXRJ
bnRlcm5hbEZvcm1hdEluZm8oaW50ZXJuYWxGb3JtYXQpOwogICAgIGlmIChmb3JtYXRJbmZvLnBp
eGVsQnl0ZXMgPiAwKQogICAgIHsKICAgICAgICAgcmV0dXJuIGludGVybmFsRm9ybWF0OwogICAg
IH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0TWFwJiBmb3Jt
YXRNYXAgPSBCdWlsZEZvcm1hdE1hcCgpOwotICAgICAgICBGb3JtYXRNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ZXIgPSBmb3JtYXRNYXAuZmluZChGb3JtYXRUeXBlUGFpcihpbnRlcm5hbEZvcm1hdCwg
dHlwZSkpOwotICAgICAgICBpZiAoaXRlciAhPSBmb3JtYXRNYXAuZW5kKCkpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBpdGVyLT5zZWNvbmQ7Ci0gICAgICAgIH0KLSAgICAgICAgZWxz
ZQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gR0xfTk9ORTsKLSAgICAgICAgfQotICAg
IH0KKyAgICByZXR1cm4gR2V0U2l6ZWRGb3JtYXRJbnRlcm5hbChpbnRlcm5hbEZvcm1hdCwgdHlw
ZSk7CiB9CiAKIGNvbnN0IEZvcm1hdFNldCAmR2V0QWxsU2l6ZWRJbnRlcm5hbEZvcm1hdHMoKQog
ewotICAgIHN0YXRpYyBGb3JtYXRTZXQmIGZvcm1hdFNldCA9IEJ1aWxkQWxsU2l6ZWRJbnRlcm5h
bEZvcm1hdFNldCgpOworI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIEdDQyBk
aWFnbm9zdGljIGlnbm9yZWQgIi1XZXhpdC10aW1lLWRlc3RydWN0b3JzIgorICAgIHN0YXRpYyBG
b3JtYXRTZXQgZm9ybWF0U2V0ID0gQnVpbGRBbGxTaXplZEludGVybmFsRm9ybWF0U2V0KCk7Cisj
cHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAogICAgIHJldHVybiBmb3JtYXRTZXQ7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mb3JtYXR1dGlscy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mb3JtYXR1
dGlscy5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvZm9ybWF0dXRpbHMuaAkod29ya2luZyBjb3B5KQpAQCAtOSwxNyArOSwzMCBAQAog
I2lmbmRlZiBMSUJBTkdMRV9GT1JNQVRVVElMU19IXwogI2RlZmluZSBMSUJBTkdMRV9GT1JNQVRV
VElMU19IXwogCi0jaW5jbHVkZSAibGliQU5HTEUvQ2Fwcy5oIgotI2luY2x1ZGUgImxpYkFOR0xF
L2FuZ2xldHlwZXMuaCIKLQotI2luY2x1ZGUgImFuZ2xlX2dsLmgiCi0KICNpbmNsdWRlIDxjc3Rk
ZGVmPgogI2luY2x1ZGUgPHN0ZGludC5oPgogCisjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKKyNpbmNs
dWRlICJsaWJBTkdMRS9DYXBzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvRXJyb3IuaCIKKyNpbmNs
dWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgiCisKIG5hbWVzcGFjZSBnbAogewogCitzdHJ1Y3Qg
Rm9ybWF0VHlwZSBmaW5hbAoreworICAgIEZvcm1hdFR5cGUoKTsKKyAgICBGb3JtYXRUeXBlKEdM
ZW51bSBmb3JtYXRfLCBHTGVudW0gdHlwZV8pOworICAgIEZvcm1hdFR5cGUoY29uc3QgRm9ybWF0
VHlwZSAmb3RoZXIpID0gZGVmYXVsdDsKKyAgICBGb3JtYXRUeXBlICZvcGVyYXRvcj0oY29uc3Qg
Rm9ybWF0VHlwZSAmb3RoZXIpID0gZGVmYXVsdDsKKworICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0
IEZvcm1hdFR5cGUgJm90aGVyKSBjb25zdDsKKworICAgIEdMZW51bSBmb3JtYXQ7CisgICAgR0xl
bnVtIHR5cGU7Cit9OworCiBzdHJ1Y3QgVHlwZQogewogICAgIFR5cGUoKTsKQEAgLTM0LDYgKzQ3
LDQ0IEBAIHN0cnVjdCBJbnRlcm5hbEZvcm1hdAogewogICAgIEludGVybmFsRm9ybWF0KCk7CiAK
KyAgICBHTHVpbnQgY29tcHV0ZVBpeGVsQnl0ZXMoR0xlbnVtIGZvcm1hdFR5cGUpIGNvbnN0Owor
CisgICAgRXJyb3JPclJlc3VsdDxHTHVpbnQ+IGNvbXB1dGVSb3dQaXRjaChHTGVudW0gZm9ybWF0
VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
d2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBh
bGlnbm1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCByb3dMZW5ndGgpIGNvbnN0OworICAgIEVycm9yT3JSZXN1bHQ8R0x1aW50PiBjb21wdXRlRGVw
dGhQaXRjaChHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgaW1hZ2VIZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCByb3dQaXRjaCkgY29uc3Q7CisgICAgRXJyb3JPclJl
c3VsdDxHTHVpbnQ+IGNvbXB1dGVEZXB0aFBpdGNoKEdMZW51bSBmb3JtYXRUeXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYWxpZ25t
ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBy
b3dMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGltYWdlSGVpZ2h0KSBjb25zdDsKKworICAgIEVycm9yT3JSZXN1bHQ8R0x1aW50PiBjb21w
dXRlQ29tcHJlc3NlZEltYWdlU2l6ZShHTGVudW0gZm9ybWF0VHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRXh0ZW50cyAmc2l6
ZSkgY29uc3Q7CisKKyAgICBFcnJvck9yUmVzdWx0PEdMdWludD4gY29tcHV0ZVNraXBCeXRlcyhH
THVpbnQgcm93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IGRlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgUGl4ZWxTdG9yZVN0YXRlQmFzZSAmc3RhdGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpczNEKSBjb25zdDsKKworICAgIEVy
cm9yT3JSZXN1bHQ8R0x1aW50PiBjb21wdXRlUGFja1VucGFja0VuZEJ5dGUoR0xlbnVtIGZvcm1h
dFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgRXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQaXhlbFN0b3JlU3RhdGVCYXNlICZzdGF0
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGlzM0QpIGNvbnN0OworCisgICAgYm9vbCBpc0xVTUEoKSBjb25zdDsKKyAgICBHTGVu
dW0gZ2V0UmVhZFBpeGVsc0Zvcm1hdCgpIGNvbnN0OworICAgIEdMZW51bSBnZXRSZWFkUGl4ZWxz
VHlwZSgpIGNvbnN0OworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEludGVybmFsRm9ybWF0
ICZvdGhlcikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEludGVybmFsRm9ybWF0
ICZvdGhlcikgY29uc3Q7CisKKyAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQ7CisKICAgICBHTHVp
bnQgcmVkQml0czsKICAgICBHTHVpbnQgZ3JlZW5CaXRzOwogICAgIEdMdWludCBibHVlQml0czsK
QEAgLTY0LDIxICsxMTUsMzQgQEAgc3RydWN0IEludGVybmFsRm9ybWF0CiAgICAgU3VwcG9ydENo
ZWNrRnVuY3Rpb24gdGV4dHVyZVN1cHBvcnQ7CiAgICAgU3VwcG9ydENoZWNrRnVuY3Rpb24gcmVu
ZGVyU3VwcG9ydDsKICAgICBTdXBwb3J0Q2hlY2tGdW5jdGlvbiBmaWx0ZXJTdXBwb3J0OworfTsK
KworLy8gQSAiRm9ybWF0IiBpcyBlaXRoZXIgYSBzaXplZCBmb3JtYXQsIG9yIGFuIHt1bnNpemVk
IGZvcm1hdCwgdHlwZX0gY29tYmluYXRpb24uCitzdHJ1Y3QgRm9ybWF0Cit7CisgICAgLy8gU2l6
ZWQgdHlwZXMgb25seS4KKyAgICBleHBsaWNpdCBGb3JtYXQoR0xlbnVtIGludGVybmFsRm9ybWF0
KTsKKyAgICBleHBsaWNpdCBGb3JtYXQoY29uc3QgSW50ZXJuYWxGb3JtYXQgJmludGVybmFsRm9y
bWF0KTsKKworICAgIC8vIFNpemVkIG9yIHVuc2l6ZWQgdHlwZXMuCisgICAgRm9ybWF0KEdMZW51
bSBpbnRlcm5hbEZvcm1hdCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUpOwogCi0gICAgR0x1
aW50IGNvbXB1dGVSb3dQaXRjaChHTGVudW0gZm9ybWF0VHlwZSwgR0xzaXplaSB3aWR0aCwgR0xp
bnQgYWxpZ25tZW50LCBHTGludCByb3dMZW5ndGgpIGNvbnN0OwotICAgIEdMdWludCBjb21wdXRl
RGVwdGhQaXRjaChHTGVudW0gZm9ybWF0VHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBo
ZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGFsaWdubWVudCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcm93TGVuZ3RoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBpbWFnZUhlaWdodCkgY29uc3Q7Ci0gICAgR0x1aW50IGNv
bXB1dGVCbG9ja1NpemUoR0xlbnVtIGZvcm1hdFR5cGUsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0KSBjb25zdDsKLSAgICBHTHVpbnQgY29tcHV0ZVNraXBQaXhlbHMoR0xpbnQgcm93UGl0
Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRlcHRoUGl0Y2gsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNraXBJbWFnZXMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHNraXBSb3dzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBza2lwUGl4ZWxzKSBjb25zdDsKKyAgICBGb3JtYXQoY29uc3QgRm9ybWF0ICZv
dGhlcik7CisgICAgRm9ybWF0ICZvcGVyYXRvcj0oY29uc3QgRm9ybWF0ICZvdGhlcik7CisKKyAg
ICBHTGVudW0gYXNTaXplZCgpIGNvbnN0OworICAgIGJvb2wgdmFsaWQoKSBjb25zdDsKKworICAg
IHN0YXRpYyBGb3JtYXQgSW52YWxpZCgpOworICAgIHN0YXRpYyBib29sIFNhbWVTaXplZChjb25z
dCBGb3JtYXQgJmEsIGNvbnN0IEZvcm1hdCAmYik7CisKKyAgICAvLyBUaGlzIGlzIHRoZSBzaXpl
ZCBpbmZvLgorICAgIGNvbnN0IEludGVybmFsRm9ybWF0ICppbmZvOworICAgIEdMZW51bSBmb3Jt
YXQ7CisgICAgR0xlbnVtIHR5cGU7CisgICAgYm9vbCBzaXplZDsKIH07CisKIGNvbnN0IEludGVy
bmFsRm9ybWF0ICZHZXRJbnRlcm5hbEZvcm1hdEluZm8oR0xlbnVtIGludGVybmFsRm9ybWF0KTsK
IAogR0xlbnVtIEdldFNpemVkSW50ZXJuYWxGb3JtYXQoR0xlbnVtIGludGVybmFsRm9ybWF0LCBH
TGVudW0gdHlwZSk7CkBAIC0yMTIsNyArMjc2LDcgQEAgZW51bSBWZXJ0ZXhGb3JtYXRUeXBlCiAg
ICAgVkVSVEVYX0ZPUk1BVF9VSU5UMjEwX0lOVCwKIH07CiAKLXR5cGVkZWYgc3RkOjp2ZWN0b3I8
Z2w6OlZlcnRleEZvcm1hdFR5cGU+IElucHV0TGF5b3V0OwordHlwZWRlZiBzdGQ6OnZlY3RvcjxW
ZXJ0ZXhGb3JtYXRUeXBlPiBJbnB1dExheW91dDsKIAogc3RydWN0IFZlcnRleEZvcm1hdCA6IGFu
Z2xlOjpOb25Db3B5YWJsZQogewpAQCAtMjI5LDYgKzI5MywxMSBAQCBWZXJ0ZXhGb3JtYXRUeXBl
IEdldFZlcnRleEZvcm1hdFR5cGUoY29uCiBWZXJ0ZXhGb3JtYXRUeXBlIEdldFZlcnRleEZvcm1h
dFR5cGUoY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWIsIEdMZW51bSBjdXJyZW50VmFsdWVU
eXBlKTsKIGNvbnN0IFZlcnRleEZvcm1hdCAmR2V0VmVydGV4Rm9ybWF0RnJvbVR5cGUoVmVydGV4
Rm9ybWF0VHlwZSB2ZXJ0ZXhGb3JtYXRUeXBlKTsKIAorLy8gSW1wbGVtZW50ZWQgaW4gZm9ybWF0
X21hcF9hdXRvZ2VuLmNwcAorYm9vbCBWYWxpZEVTM0Zvcm1hdChHTGVudW0gZm9ybWF0KTsKK2Jv
b2wgVmFsaWRFUzNUeXBlKEdMZW51bSB0eXBlKTsKK2Jvb2wgVmFsaWRFUzNGb3JtYXRDb21iaW5h
dGlvbihHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xlbnVtIGludGVybmFsRm9ybWF0KTsK
KwogfSAgLy8gbmFtZXNwYWNlIGdsCiAKICNlbmRpZiAvLyBMSUJBTkdMRV9GT1JNQVRVVElMU19I
XwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2dlbl9mb3JtYXRf
bWFwLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9nZW5fZm9ybWF0X21hcC5weQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvZ2VuX2Zvcm1hdF9tYXAucHkJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxODcgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisjIENvcHlyaWdodCAyMDE2IFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
KyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyMKKyMgZ2VuX2Zvcm1hdF9tYXAucHk6Cisj
ICBDb2RlIGdlbmVyYXRpb24gZm9yIEdMIGZvcm1hdCBtYXAuIFRoZSBmb3JtYXQgbWFwIG1hdGNo
ZXMgYmV0d2VlbgorIyAge2Zvcm1hdCx0eXBlfSBhbmQgaW50ZXJuYWwgZm9ybWF0LgorCitmcm9t
IGRhdGV0aW1lIGltcG9ydCBkYXRlCitpbXBvcnQgc3lzCisKK3N5cy5wYXRoLmFwcGVuZCgncmVu
ZGVyZXInKQoraW1wb3J0IGFuZ2xlX2Zvcm1hdAorCit0ZW1wbGF0ZV9jcHAgPSAiIiIvLyBHRU5F
UkFURUQgRklMRSAtIERPIE5PVCBFRElULgorLy8gR2VuZXJhdGVkIGJ5IHtzY3JpcHRfbmFtZX0g
dXNpbmcgZGF0YSBmcm9tIHtkYXRhX3NvdXJjZV9uYW1lfS4KKy8vIEVTMyBmb3JtYXQgaW5mbyBm
cm9tIHtlczNfZGF0YV9zb3VyY2VfbmFtZX0uCisvLworLy8gQ29weXJpZ2h0IHtjb3B5cmlnaHRf
eWVhcn0gVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gZm9y
bWF0X21hcDoKKy8vICAgRGV0ZXJtaW5pbmcgdGhlIHNpemVkIGludGVybmFsIGZvcm1hdCBmcm9t
IGEgKGZvcm1hdCx0eXBlKSBwYWlyLgorLy8gICBBbHNvIGNoZWNrIGVzMyBmb3JtYXQgY29tYmlu
YXRpb25zIGZvciB2YWxpZGl0eS4KKworI2luY2x1ZGUgImFuZ2xlX2dsLmgiCisjaW5jbHVkZSAi
Y29tbW9uL2RlYnVnLmgiCisKK25hbWVzcGFjZSBnbAore3sKKworR0xlbnVtIEdldFNpemVkRm9y
bWF0SW50ZXJuYWwoR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUpCit7eworICAgIHN3aXRjaCAo
Zm9ybWF0KQorICAgIHt7Cit7Zm9ybWF0X2Nhc2VzfSAgICAgICAgY2FzZSBHTF9OT05FOgorICAg
ICAgICAgICAgcmV0dXJuIEdMX05PTkU7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IGJyZWFrOworICAgIH19CisKKyAgICByZXR1cm4gR0xfTk9ORTsKK319CisKK2Jvb2wgVmFsaWRF
UzNGb3JtYXQoR0xlbnVtIGZvcm1hdCkKK3t7CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAge3sK
K3tlczNfZm9ybWF0X2Nhc2VzfSAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfX0KK319CisKK2Jvb2wgVmFs
aWRFUzNUeXBlKEdMZW51bSB0eXBlKQore3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAge3sKK3tl
czNfdHlwZV9jYXNlc30gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH19Cit9fQorCitib29sIFZhbGlkRVMz
Rm9ybWF0Q29tYmluYXRpb24oR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMZW51bSBpbnRl
cm5hbEZvcm1hdCkKK3t7CisgICAgQVNTRVJUKFZhbGlkRVMzRm9ybWF0KGZvcm1hdCkgJiYgVmFs
aWRFUzNUeXBlKHR5cGUpKTsKKworICAgIHN3aXRjaCAoZm9ybWF0KQorICAgIHt7Cit7ZXMzX2Nv
bWJvX2Nhc2VzfSAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICB9fQorCisgICAgcmV0dXJuIGZhbHNlOworfX0KKworfX0g
IC8vIG5hbWVzcGFjZSBnbAorIiIiCisKK3RlbXBsYXRlX2Zvcm1hdF9jYXNlID0gIiIiICAgICAg
ICBjYXNlIHtmb3JtYXR9OgorICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAg
e3sKK3t0eXBlX2Nhc2VzfSAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH19CisgICAgICAgICAgICBicmVhazsKKworIiIiCisK
K3RlbXBsYXRlX3NpbXBsZV9jYXNlID0gIiIiICAgICAgICAgICAgICAgIGNhc2Uge2tleX06Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB7cmVzdWx0fTsKKyIiIgorCit0ZW1wbGF0ZV9lczNf
Y29tYm9fdHlwZV9jYXNlID0gIiIiICAgICAgICAgICAgICAgIGNhc2Uge3R5cGV9OgorICAgICAg
ICAgICAgICAgIHt7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQp
CisgICAgICAgICAgICAgICAgICAgIHt7Cit7aW50ZXJuYWxfZm9ybWF0X2Nhc2VzfSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIH19CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH19CisiIiIKKworZGVmIHBhcnNlX3R5cGVfY2FzZSh0eXBlLCByZXN1bHQpOgorICAgIHJldHVy
biB0ZW1wbGF0ZV9zaW1wbGVfY2FzZS5mb3JtYXQoCisgICAgICAgIGtleSA9IHR5cGUsIHJlc3Vs
dCA9IHJlc3VsdCkKKworZGVmIHBhcnNlX2Zvcm1hdF9jYXNlKGZvcm1hdCwgdHlwZV9tYXApOgor
ICAgIHR5cGVfY2FzZXMgPSAiIgorICAgIGZvciB0eXBlLCBpbnRlcm5hbF9mb3JtYXQgaW4gc29y
dGVkKHR5cGVfbWFwLml0ZXJpdGVtcygpKToKKyAgICAgICAgdHlwZV9jYXNlcyArPSBwYXJzZV90
eXBlX2Nhc2UodHlwZSwgaW50ZXJuYWxfZm9ybWF0KQorICAgIHJldHVybiB0ZW1wbGF0ZV9mb3Jt
YXRfY2FzZS5mb3JtYXQoCisgICAgICAgIGZvcm1hdCA9IGZvcm1hdCwgdHlwZV9jYXNlcyA9IHR5
cGVfY2FzZXMpCisKK2lucHV0X3NjcmlwdCA9ICdmb3JtYXRfbWFwX2RhdGEuanNvbicKKworZm9y
bWF0X21hcCA9IGFuZ2xlX2Zvcm1hdC5sb2FkX2pzb24oaW5wdXRfc2NyaXB0KQorCitmb3JtYXRf
Y2FzZXMgPSAiIgorCitmb3IgZm9ybWF0LCB0eXBlX21hcCBpbiBzb3J0ZWQoZm9ybWF0X21hcC5p
dGVyaXRlbXMoKSk6CisgICAgZm9ybWF0X2Nhc2VzICs9IHBhcnNlX2Zvcm1hdF9jYXNlKGZvcm1h
dCwgdHlwZV9tYXApCisKK2NvbWJvX2RhdGFfZmlsZSA9ICdlczNfZm9ybWF0X3R5cGVfY29tYmlu
YXRpb25zLmpzb24nCitlczNfY29tYm9fZGF0YSA9IGFuZ2xlX2Zvcm1hdC5sb2FkX2pzb24oY29t
Ym9fZGF0YV9maWxlKQorY29tYm9fZGF0YSA9IFtjb21ibyBmb3Igc3VibGlzdCBpbiBlczNfY29t
Ym9fZGF0YS52YWx1ZXMoKSBmb3IgY29tYm8gaW4gc3VibGlzdF0KKwordHlwZXMgPSBzZXQoKQor
Zm9ybWF0cyA9IHNldCgpCitjb21ib3MgPSB7fQorCitmb3IgaW50ZXJuYWxfZm9ybWF0LCBmb3Jt
YXQsIHR5cGUgaW4gY29tYm9fZGF0YToKKyAgICB0eXBlcy51cGRhdGUoW3R5cGVdKQorICAgIGZv
cm1hdHMudXBkYXRlKFtmb3JtYXRdKQorICAgIGlmIGZvcm1hdCBub3QgaW4gY29tYm9zOgorICAg
ICAgICBjb21ib3NbZm9ybWF0XSA9IHt9CisgICAgaWYgdHlwZSBub3QgaW4gY29tYm9zW2Zvcm1h
dF06CisgICAgICAgIGNvbWJvc1tmb3JtYXRdW3R5cGVdID0gW2ludGVybmFsX2Zvcm1hdF0KKyAg
ICBlbHNlOgorICAgICAgICBjb21ib3NbZm9ybWF0XVt0eXBlXSArPSBbaW50ZXJuYWxfZm9ybWF0
XQorCitlczNfZm9ybWF0X2Nhc2VzID0gIiIKKworZm9yIGZvcm1hdCBpbiBzb3J0ZWQoZm9ybWF0
cyk6CisgICAgZXMzX2Zvcm1hdF9jYXNlcyArPSAiICAgICAgICBjYXNlICIgKyBmb3JtYXQgKyAi
OlxuIgorCitlczNfdHlwZV9jYXNlcyA9ICIiCisKK2ZvciB0eXBlIGluIHNvcnRlZCh0eXBlcyk6
CisgICAgZXMzX3R5cGVfY2FzZXMgKz0gIiAgICAgICAgY2FzZSAiICsgdHlwZSArICI6XG4iCisK
K2VzM19jb21ib19jYXNlcyA9ICIiCisKK2ZvciBmb3JtYXQsIHR5cGVfY29tYm9zIGluIGNvbWJv
cy5pdGVyaXRlbXMoKToKKyAgICB0aGlzX3R5cGVfY2FzZXMgPSAiIgorICAgIGZvciB0eXBlLCBj
b21ib3MgaW4gdHlwZV9jb21ib3MuaXRlcml0ZW1zKCk6CisgICAgICAgIGludGVybmFsX2Zvcm1h
dF9jYXNlcyA9ICIiCisgICAgICAgIGZvciBpbnRlcm5hbF9mb3JtYXQgaW4gY29tYm9zOgorICAg
ICAgICAgICAgaW50ZXJuYWxfZm9ybWF0X2Nhc2VzICs9ICIgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlICIgKyBpbnRlcm5hbF9mb3JtYXQgKyAiOlxuIgorCisgICAgICAgIHRoaXNfdHlwZV9j
YXNlcyArPSB0ZW1wbGF0ZV9lczNfY29tYm9fdHlwZV9jYXNlLmZvcm1hdCgKKyAgICAgICAgICAg
IHR5cGUgPSB0eXBlLCBpbnRlcm5hbF9mb3JtYXRfY2FzZXMgPSBpbnRlcm5hbF9mb3JtYXRfY2Fz
ZXMpCisKKyAgICBlczNfY29tYm9fY2FzZXMgKz0gdGVtcGxhdGVfZm9ybWF0X2Nhc2UuZm9ybWF0
KAorICAgICAgICBmb3JtYXQgPSBmb3JtYXQsIHR5cGVfY2FzZXMgPSB0aGlzX3R5cGVfY2FzZXMp
CisKK3dpdGggb3BlbignZm9ybWF0X21hcF9hdXRvZ2VuLmNwcCcsICd3dCcpIGFzIG91dF9maWxl
OgorICAgIG91dHB1dF9jcHAgPSB0ZW1wbGF0ZV9jcHAuZm9ybWF0KAorICAgICAgICBzY3JpcHRf
bmFtZSA9IHN5cy5hcmd2WzBdLAorICAgICAgICBkYXRhX3NvdXJjZV9uYW1lID0gaW5wdXRfc2Ny
aXB0LAorICAgICAgICBlczNfZGF0YV9zb3VyY2VfbmFtZSA9IGNvbWJvX2RhdGFfZmlsZSwKKyAg
ICAgICAgY29weXJpZ2h0X3llYXIgPSBkYXRlLnRvZGF5KCkueWVhciwKKyAgICAgICAgZm9ybWF0
X2Nhc2VzID0gZm9ybWF0X2Nhc2VzLAorICAgICAgICBlczNfZm9ybWF0X2Nhc2VzID0gZXMzX2Zv
cm1hdF9jYXNlcywKKyAgICAgICAgZXMzX3R5cGVfY2FzZXMgPSBlczNfdHlwZV9jYXNlcywKKyAg
ICAgICAgZXMzX2NvbWJvX2Nhc2VzID0gZXMzX2NvbWJvX2Nhc2VzKQorICAgIG91dF9maWxlLndy
aXRlKG91dHB1dF9jcHApCisgICAgb3V0X2ZpbGUuY2xvc2UoKQpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3F1ZXJ5Y29udmVyc2lvbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9xdWVyeWNvbnZlcnNpb25z
LmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3F1ZXJ5Y29udmVyc2lvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NiwxNyArODYs
NiBAQCBRdWVyeVQgQ2FzdFN0YXRlVmFsdWUoR0xlbnVtIHBuYW1lLCBOYXRpCiAKIH0gIC8vIGFu
b255bW91cyBuYW1lc3BhY2UKIAotdGVtcGxhdGUgPD4KLUdMZW51bSBHTFR5cGVUb0dMZW51bTxH
TGludD46OnZhbHVlID0gR0xfSU5UOwotdGVtcGxhdGUgPD4KLUdMZW51bSBHTFR5cGVUb0dMZW51
bTxHTHVpbnQ+Ojp2YWx1ZSA9IEdMX1VOU0lHTkVEX0lOVDsKLXRlbXBsYXRlIDw+Ci1HTGVudW0g
R0xUeXBlVG9HTGVudW08R0xib29sZWFuPjo6dmFsdWUgPSBHTF9CT09MOwotdGVtcGxhdGUgPD4K
LUdMZW51bSBHTFR5cGVUb0dMZW51bTxHTGludDY0Pjo6dmFsdWUgPSBHTF9JTlRfNjRfQU5HTEVY
OwotdGVtcGxhdGUgPD4KLUdMZW51bSBHTFR5cGVUb0dMZW51bTxHTGZsb2F0Pjo6dmFsdWUgPSBH
TF9GTE9BVDsKLQogdGVtcGxhdGUgPHR5cGVuYW1lIFF1ZXJ5VD4KIHZvaWQgQ2FzdFN0YXRlVmFs
dWVzKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBuYXRpdmVUeXBlLCBHTGVudW0gcG5hbWUsCiAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnVtUGFyYW1zLCBRdWVyeVQgKm91dFBh
cmFtcykKQEAgLTE1NCw0ICsxNDMsNzcgQEAgdGVtcGxhdGUgdm9pZCBDYXN0U3RhdGVWYWx1ZXM8
R0x1aW50PihDbwogdGVtcGxhdGUgdm9pZCBDYXN0U3RhdGVWYWx1ZXM8R0xmbG9hdD4oQ29udGV4
dCAqLCBHTGVudW0sIEdMZW51bSwgdW5zaWduZWQgaW50LCBHTGZsb2F0ICopOwogdGVtcGxhdGUg
dm9pZCBDYXN0U3RhdGVWYWx1ZXM8R0xpbnQ2ND4oQ29udGV4dCAqLCBHTGVudW0sIEdMZW51bSwg
dW5zaWduZWQgaW50LCBHTGludDY0ICopOwogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUXVlcnlUPgor
dm9pZCBDYXN0SW5kZXhlZFN0YXRlVmFsdWVzKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIG5hdGl2ZVR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnVtUGFy
YW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5VCAqb3V0UGFyYW1zKQorewor
ICAgIGlmIChuYXRpdmVUeXBlID09IEdMX0lOVCkKKyAgICB7CisgICAgICAgIHN0ZDo6dmVjdG9y
PEdMaW50PiBpbnRQYXJhbXMobnVtUGFyYW1zLCAwKTsKKyAgICAgICAgY29udGV4dC0+Z2V0SW50
ZWdlcmlfdihwbmFtZSwgaW5kZXgsIGludFBhcmFtcy5kYXRhKCkpOworCisgICAgICAgIGZvciAo
dW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1zOyArK2kpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG91dFBhcmFtc1tpXSA9IENhc3RTdGF0ZVZhbHVlPFF1ZXJ5VD4ocG5hbWUsIGludFBh
cmFtc1tpXSk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAobmF0aXZlVHlwZSA9PSBH
TF9CT09MKQorICAgIHsKKyAgICAgICAgc3RkOjp2ZWN0b3I8R0xib29sZWFuPiBib29sUGFyYW1z
KG51bVBhcmFtcywgR0xfRkFMU0UpOworICAgICAgICBjb250ZXh0LT5nZXRCb29sZWFuaV92KHBu
YW1lLCBpbmRleCwgYm9vbFBhcmFtcy5kYXRhKCkpOworCisgICAgICAgIGZvciAodW5zaWduZWQg
aW50IGkgPSAwOyBpIDwgbnVtUGFyYW1zOyArK2kpCisgICAgICAgIHsKKyAgICAgICAgICAgIG91
dFBhcmFtc1tpXSA9CisgICAgICAgICAgICAgICAgKGJvb2xQYXJhbXNbaV0gPT0gR0xfRkFMU0Ug
PyBzdGF0aWNfY2FzdDxRdWVyeVQ+KDApIDogc3RhdGljX2Nhc3Q8UXVlcnlUPigxKSk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAobmF0aXZlVHlwZSA9PSBHTF9JTlRfNjRfQU5HTEVY
KQorICAgIHsKKyAgICAgICAgc3RkOjp2ZWN0b3I8R0xpbnQ2ND4gaW50NjRQYXJhbXMobnVtUGFy
YW1zLCAwKTsKKyAgICAgICAgY29udGV4dC0+Z2V0SW50ZWdlcjY0aV92KHBuYW1lLCBpbmRleCwg
aW50NjRQYXJhbXMuZGF0YSgpKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IG51bVBhcmFtczsgKytpKQorICAgICAgICB7CisgICAgICAgICAgICBvdXRQYXJhbXNbaV0g
PSBDYXN0U3RhdGVWYWx1ZTxRdWVyeVQ+KHBuYW1lLCBpbnQ2NFBhcmFtc1tpXSk7CisgICAgICAg
IH0KKyAgICB9CisgICAgZWxzZQorICAgICAgICBVTlJFQUNIQUJMRSgpOworfQorCit0ZW1wbGF0
ZSB2b2lkIENhc3RJbmRleGVkU3RhdGVWYWx1ZXM8R0xib29sZWFuPihDb250ZXh0ICosCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGJvb2xlYW4gKik7Cit0ZW1wbGF0ZSB2b2lkIENhc3RJbmRleGVkU3RhdGVWYWx1ZXM8R0xpbnQ+
KENvbnRleHQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBp
bmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCAqKTsKK3RlbXBsYXRlIHZvaWQgQ2FzdEluZGV4ZWRTdGF0ZVZhbHVlczxHTHVpbnQ+KENvbnRl
eHQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRl
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCAqKTsKK3RlbXBsYXRlIHZvaWQgQ2FzdEluZGV4ZWRTdGF0ZVZhbHVlczxHTGZsb2F0PihDb250
ZXh0ICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
aW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZmxvYXQgKik7Cit0ZW1wbGF0ZSB2b2lkIENhc3RJbmRleGVkU3RhdGVWYWx1ZXM8R0xpbnQ2
ND4oQ29udGV4dCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludDY0ICopOwogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3F1ZXJ5Y29udmVyc2lvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcXVlcnljb252ZXJzaW9ucy5oCShyZXZpc2lvbiAyMDc4
MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcXVlcnljb252ZXJz
aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMywzMyBAQCBjbGFzcyBDb250ZXh0Owog
dGVtcGxhdGUgPHR5cGVuYW1lIEdMVHlwZT4KIHN0cnVjdCBHTFR5cGVUb0dMZW51bQogewotICAg
IHN0YXRpYyBHTGVudW0gdmFsdWU7CisgICAgLy8gc3RhdGljIGNvbnN0ZXhwciBHTGVudW0gdmFs
dWU7Cit9OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IEdMVHlwZVRvR0xlbnVtPEdMaW50Pgorewor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0xlbnVtIHZhbHVlID0gR0xfSU5UOworfTsKK3RlbXBsYXRl
IDw+CitzdHJ1Y3QgR0xUeXBlVG9HTGVudW08R0x1aW50PgoreworICAgIHN0YXRpYyBjb25zdGV4
cHIgR0xlbnVtIHZhbHVlID0gR0xfVU5TSUdORURfSU5UOworfTsKK3RlbXBsYXRlIDw+CitzdHJ1
Y3QgR0xUeXBlVG9HTGVudW08R0xib29sZWFuPgoreworICAgIHN0YXRpYyBjb25zdGV4cHIgR0xl
bnVtIHZhbHVlID0gR0xfQk9PTDsKK307Cit0ZW1wbGF0ZSA8Pgorc3RydWN0IEdMVHlwZVRvR0xl
bnVtPEdMaW50NjQ+Cit7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHTGVudW0gdmFsdWUgPSBHTF9J
TlRfNjRfQU5HTEVYOworfTsKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgR0xUeXBlVG9HTGVudW08R0xm
bG9hdD4KK3sKKyAgICBzdGF0aWMgY29uc3RleHByIEdMZW51bSB2YWx1ZSA9IEdMX0ZMT0FUOwog
fTsKIAogLy8gVGhlIEdMIHN0YXRlIHF1ZXJ5IEFQSSB0eXBlcyBhcmU6IGJvb2wsIGludCwgdWlu
dCwgZmxvYXQsIGludDY0CkBAIC0zMSw2ICs1NywxNCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgUXVl
cnlUPgogdm9pZCBDYXN0U3RhdGVWYWx1ZXMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG5hdGl2
ZVR5cGUsIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBu
dW1QYXJhbXMsIFF1ZXJ5VCAqb3V0UGFyYW1zKTsKIAorLy8gVGhlIEdMIHN0YXRlIHF1ZXJ5IEFQ
SSB0eXBlcyBhcmU6IGJvb2wsIGludCwgdWludCwgZmxvYXQsIGludDY0Cit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgUXVlcnlUPgordm9pZCBDYXN0SW5kZXhlZFN0YXRlVmFsdWVzKENvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG5hdGl2ZVR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgbnVtUGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5VCAq
b3V0UGFyYW1zKTsKIH0KIAogI2VuZGlmICAvLyBMSUJBTkdMRV9RVUVSWV9DT05WRVJTSU9OU19I
XwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3F1ZXJ5dXRpbHMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9x
dWVyeXV0aWxzLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcXVlcnl1dGlscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NjAg
QEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisvLworCisvLyBxdWVyeXV0aWxzLmNwcDogVXRpbGl0aWVzIGZvciBxdWVy
eWluZyB2YWx1ZXMgZnJvbSBHTCBvYmplY3RzCisKKyNpbmNsdWRlICJsaWJBTkdMRS9xdWVyeXV0
aWxzLmgiCisKKyNpbmNsdWRlICJjb21tb24vdXRpbGl0aWVzLmgiCisKKyNpbmNsdWRlICJsaWJB
TkdMRS9CdWZmZXIuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlci5oIgorI2luY2x1
ZGUgImxpYkFOR0xFL1Byb2dyYW0uaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9SZW5kZXJidWZmZXIu
aCIKKyNpbmNsdWRlICJsaWJBTkdMRS9TYW1wbGVyLmgiCisjaW5jbHVkZSAibGliQU5HTEUvU2hh
ZGVyLmgiCisjaW5jbHVkZSAibGliQU5HTEUvVGV4dHVyZS5oIgorI2luY2x1ZGUgImxpYkFOR0xF
L1VuaWZvcm0uaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9WZXJ0ZXhBdHRyaWJ1dGUuaCIKKworbmFt
ZXNwYWNlIGdsCit7CisKK25hbWVzcGFjZQorewordGVtcGxhdGUgPHR5cGVuYW1lIFBhcmFtVHlw
ZT4KK3ZvaWQgUXVlcnlUZXhQYXJhbWV0ZXJCYXNlKGNvbnN0IFRleHR1cmUgKnRleHR1cmUsIEdM
ZW51bSBwbmFtZSwgUGFyYW1UeXBlICpwYXJhbXMpCit7CisgICAgQVNTRVJUKHRleHR1cmUgIT0g
bnVsbHB0cik7CisKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9U
RVhUVVJFX01BR19GSUxURVI6CisgICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTGVu
dW08UGFyYW1UeXBlPih0ZXh0dXJlLT5nZXRNYWdGaWx0ZXIoKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX01JTl9GSUxURVI6CisgICAgICAgICAgICAqcGFy
YW1zID0gQ29udmVydEZyb21HTGVudW08UGFyYW1UeXBlPih0ZXh0dXJlLT5nZXRNaW5GaWx0ZXIo
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX1dSQVBfUzoK
KyAgICAgICAgICAgICpwYXJhbXMgPSBDb252ZXJ0RnJvbUdMZW51bTxQYXJhbVR5cGU+KHRleHR1
cmUtPmdldFdyYXBTKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV9XUkFQX1Q6CisgICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTGVudW08UGFy
YW1UeXBlPih0ZXh0dXJlLT5nZXRXcmFwVCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9SOgorICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRG
cm9tR0xlbnVtPFBhcmFtVHlwZT4odGV4dHVyZS0+Z2V0V3JhcFIoKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0lNTVVUQUJMRV9GT1JNQVQ6CisgICAgICAg
ICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTGJvb2xlYW48UGFyYW1UeXBlPih0ZXh0dXJlLT5n
ZXRJbW11dGFibGVGb3JtYXQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBH
TF9URVhUVVJFX0lNTVVUQUJMRV9MRVZFTFM6CisgICAgICAgICAgICAqcGFyYW1zID0gQ29udmVy
dEZyb21HTHVpbnQ8UGFyYW1UeXBlPih0ZXh0dXJlLT5nZXRJbW11dGFibGVMZXZlbHMoKSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX1VTQUdFX0FOR0xFOgor
ICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRGcm9tR0xlbnVtPFBhcmFtVHlwZT4odGV4dHVy
ZS0+Z2V0VXNhZ2UoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhU
VVJFX01BWF9BTklTT1RST1BZX0VYVDoKKyAgICAgICAgICAgICpwYXJhbXMgPSBDb252ZXJ0RnJv
bUdMZmxvYXQ8UGFyYW1UeXBlPih0ZXh0dXJlLT5nZXRNYXhBbmlzb3Ryb3B5KCkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9TV0laWkxFX1I6CisgICAgICAg
ICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTGVudW08UGFyYW1UeXBlPih0ZXh0dXJlLT5nZXRT
d2l6emxlUmVkKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVS
RV9TV0laWkxFX0c6CisgICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTGVudW08UGFy
YW1UeXBlPih0ZXh0dXJlLT5nZXRTd2l6emxlR3JlZW4oKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBHTF9URVhUVVJFX1NXSVpaTEVfQjoKKyAgICAgICAgICAgICpwYXJhbXMg
PSBDb252ZXJ0RnJvbUdMZW51bTxQYXJhbVR5cGU+KHRleHR1cmUtPmdldFN3aXp6bGVCbHVlKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9TV0laWkxFX0E6
CisgICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTGVudW08UGFyYW1UeXBlPih0ZXh0
dXJlLT5nZXRTd2l6emxlQWxwaGEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBHTF9URVhUVVJFX0JBU0VfTEVWRUw6CisgICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydEZy
b21HTHVpbnQ8UGFyYW1UeXBlPih0ZXh0dXJlLT5nZXRCYXNlTGV2ZWwoKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9MRVZFTDoKKyAgICAgICAgICAg
ICpwYXJhbXMgPSBDb252ZXJ0RnJvbUdMdWludDxQYXJhbVR5cGU+KHRleHR1cmUtPmdldE1heExl
dmVsKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NSU5f
TE9EOgorICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRGcm9tR0xmbG9hdDxQYXJhbVR5cGU+
KHRleHR1cmUtPmdldFNhbXBsZXJTdGF0ZSgpLm1pbkxvZCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9MT0Q6CisgICAgICAgICAgICAqcGFyYW1zID0g
Q29udmVydEZyb21HTGZsb2F0PFBhcmFtVHlwZT4odGV4dHVyZS0+Z2V0U2FtcGxlclN0YXRlKCku
bWF4TG9kKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ09N
UEFSRV9NT0RFOgorICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRGcm9tR0xlbnVtPFBhcmFt
VHlwZT4odGV4dHVyZS0+Z2V0Q29tcGFyZU1vZGUoKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQzoKKyAgICAgICAgICAgICpwYXJhbXMg
PSBDb252ZXJ0RnJvbUdMZW51bTxQYXJhbVR5cGU+KHRleHR1cmUtPmdldENvbXBhcmVGdW5jKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJF
QUNIQUJMRSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgUGFyYW1UeXBlPgordm9pZCBTZXRUZXhQYXJhbWV0ZXJCYXNlKFRleHR1cmUgKnRleHR1
cmUsIEdMZW51bSBwbmFtZSwgY29uc3QgUGFyYW1UeXBlICpwYXJhbXMpCit7CisgICAgQVNTRVJU
KHRleHR1cmUgIT0gbnVsbHB0cik7CisKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAgICAg
ICAgY2FzZSBHTF9URVhUVVJFX1dSQVBfUzoKKyAgICAgICAgICAgIHRleHR1cmUtPnNldFdyYXBT
KENvbnZlcnRUb0dMZW51bShwYXJhbXNbMF0pKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9UOgorICAgICAgICAgICAgdGV4dHVyZS0+c2V0V3JhcFQo
Q29udmVydFRvR0xlbnVtKHBhcmFtc1swXSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgR0xfVEVYVFVSRV9XUkFQX1I6CisgICAgICAgICAgICB0ZXh0dXJlLT5zZXRXcmFwUihD
b252ZXJ0VG9HTGVudW0ocGFyYW1zWzBdKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBHTF9URVhUVVJFX01JTl9GSUxURVI6CisgICAgICAgICAgICB0ZXh0dXJlLT5zZXRNaW5G
aWx0ZXIoQ29udmVydFRvR0xlbnVtKHBhcmFtc1swXSkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQUdfRklMVEVSOgorICAgICAgICAgICAgdGV4dHVyZS0+
c2V0TWFnRmlsdGVyKENvbnZlcnRUb0dMZW51bShwYXJhbXNbMF0pKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfVVNBR0VfQU5HTEU6CisgICAgICAgICAgICB0
ZXh0dXJlLT5zZXRVc2FnZShDb252ZXJ0VG9HTGVudW0ocGFyYW1zWzBdKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVDoKKyAg
ICAgICAgICAgIHRleHR1cmUtPnNldE1heEFuaXNvdHJvcHkoQ29udmVydFRvR0xmbG9hdChwYXJh
bXNbMF0pKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ09N
UEFSRV9NT0RFOgorICAgICAgICAgICAgdGV4dHVyZS0+c2V0Q29tcGFyZU1vZGUoQ29udmVydFRv
R0xlbnVtKHBhcmFtc1swXSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV9DT01QQVJFX0ZVTkM6CisgICAgICAgICAgICB0ZXh0dXJlLT5zZXRDb21wYXJlRnVu
YyhDb252ZXJ0VG9HTGVudW0ocGFyYW1zWzBdKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBHTF9URVhUVVJFX1NXSVpaTEVfUjoKKyAgICAgICAgICAgIHRleHR1cmUtPnNldFN3
aXp6bGVSZWQoQ29udmVydFRvR0xlbnVtKHBhcmFtc1swXSkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9TV0laWkxFX0c6CisgICAgICAgICAgICB0ZXh0dXJl
LT5zZXRTd2l6emxlR3JlZW4oQ29udmVydFRvR0xlbnVtKHBhcmFtc1swXSkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9TV0laWkxFX0I6CisgICAgICAgICAg
ICB0ZXh0dXJlLT5zZXRTd2l6emxlQmx1ZShDb252ZXJ0VG9HTGVudW0ocGFyYW1zWzBdKSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX1NXSVpaTEVfQToKKyAg
ICAgICAgICAgIHRleHR1cmUtPnNldFN3aXp6bGVBbHBoYShDb252ZXJ0VG9HTGVudW0ocGFyYW1z
WzBdKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0JBU0Vf
TEVWRUw6CisgICAgICAgICAgICB0ZXh0dXJlLT5zZXRCYXNlTGV2ZWwoQ29udmVydFRvR0x1aW50
KHBhcmFtc1swXSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVS
RV9NQVhfTEVWRUw6CisgICAgICAgICAgICB0ZXh0dXJlLT5zZXRNYXhMZXZlbChDb252ZXJ0VG9H
THVpbnQocGFyYW1zWzBdKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9U
RVhUVVJFX01JTl9MT0Q6CisgICAgICAgICAgICB0ZXh0dXJlLT5zZXRNaW5Mb2QoQ29udmVydFRv
R0xmbG9hdChwYXJhbXNbMF0pKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdM
X1RFWFRVUkVfTUFYX0xPRDoKKyAgICAgICAgICAgIHRleHR1cmUtPnNldE1heExvZChDb252ZXJ0
VG9HTGZsb2F0KHBhcmFtc1swXSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
fQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUGFyYW1UeXBlPgordm9pZCBRdWVyeVNhbXBsZXJQ
YXJhbWV0ZXJCYXNlKGNvbnN0IFNhbXBsZXIgKnNhbXBsZXIsIEdMZW51bSBwbmFtZSwgUGFyYW1U
eXBlICpwYXJhbXMpCit7CisgICAgc3dpdGNoIChwbmFtZSkKKyAgICB7CisgICAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9NSU5fRklMVEVSOgorICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRGcm9t
R0xlbnVtPFBhcmFtVHlwZT4oc2FtcGxlci0+Z2V0TWluRmlsdGVyKCkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQUdfRklMVEVSOgorICAgICAgICAgICAg
KnBhcmFtcyA9IENvbnZlcnRGcm9tR0xlbnVtPFBhcmFtVHlwZT4oc2FtcGxlci0+Z2V0TWFnRmls
dGVyKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQ
X1M6CisgICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTGVudW08UGFyYW1UeXBlPihz
YW1wbGVyLT5nZXRXcmFwUygpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdM
X1RFWFRVUkVfV1JBUF9UOgorICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRGcm9tR0xlbnVt
PFBhcmFtVHlwZT4oc2FtcGxlci0+Z2V0V3JhcFQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBHTF9URVhUVVJFX1dSQVBfUjoKKyAgICAgICAgICAgICpwYXJhbXMgPSBDb252
ZXJ0RnJvbUdMZW51bTxQYXJhbVR5cGU+KHNhbXBsZXItPmdldFdyYXBSKCkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6Cisg
ICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTGZsb2F0PFBhcmFtVHlwZT4oc2FtcGxl
ci0+Z2V0TWF4QW5pc290cm9weSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEdMX1RFWFRVUkVfTUlOX0xPRDoKKyAgICAgICAgICAgICpwYXJhbXMgPSBDb252ZXJ0RnJvbUdM
ZmxvYXQ8UGFyYW1UeXBlPihzYW1wbGVyLT5nZXRNaW5Mb2QoKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9MT0Q6CisgICAgICAgICAgICAqcGFyYW1z
ID0gQ29udmVydEZyb21HTGZsb2F0PFBhcmFtVHlwZT4oc2FtcGxlci0+Z2V0TWF4TG9kKCkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX01PREU6
CisgICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTGVudW08UGFyYW1UeXBlPihzYW1w
bGVyLT5nZXRDb21wYXJlTW9kZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEdMX1RFWFRVUkVfQ09NUEFSRV9GVU5DOgorICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRG
cm9tR0xlbnVtPFBhcmFtVHlwZT4oc2FtcGxlci0+Z2V0Q29tcGFyZUZ1bmMoKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQYXJh
bVR5cGU+Cit2b2lkIFNldFNhbXBsZXJQYXJhbWV0ZXJCYXNlKFNhbXBsZXIgKnNhbXBsZXIsIEdM
ZW51bSBwbmFtZSwgY29uc3QgUGFyYW1UeXBlICpwYXJhbXMpCit7CisgICAgc3dpdGNoIChwbmFt
ZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1M6CisgICAgICAgICAgICBz
YW1wbGVyLT5zZXRXcmFwUyhDb252ZXJ0VG9HTGVudW0ocGFyYW1zWzBdKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX1dSQVBfVDoKKyAgICAgICAgICAgIHNh
bXBsZXItPnNldFdyYXBUKENvbnZlcnRUb0dMZW51bShwYXJhbXNbMF0pKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9SOgorICAgICAgICAgICAgc2Ft
cGxlci0+c2V0V3JhcFIoQ29udmVydFRvR0xlbnVtKHBhcmFtc1swXSkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NSU5fRklMVEVSOgorICAgICAgICAgICAg
c2FtcGxlci0+c2V0TWluRmlsdGVyKENvbnZlcnRUb0dMZW51bShwYXJhbXNbMF0pKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUjoKKyAgICAg
ICAgICAgIHNhbXBsZXItPnNldE1hZ0ZpbHRlcihDb252ZXJ0VG9HTGVudW0ocGFyYW1zWzBdKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9BTklTT1RS
T1BZX0VYVDoKKyAgICAgICAgICAgIHNhbXBsZXItPnNldE1heEFuaXNvdHJvcHkoQ29udmVydFRv
R0xmbG9hdChwYXJhbXNbMF0pKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdM
X1RFWFRVUkVfQ09NUEFSRV9NT0RFOgorICAgICAgICAgICAgc2FtcGxlci0+c2V0Q29tcGFyZU1v
ZGUoQ29udmVydFRvR0xlbnVtKHBhcmFtc1swXSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkM6CisgICAgICAgICAgICBzYW1wbGVyLT5z
ZXRDb21wYXJlRnVuYyhDb252ZXJ0VG9HTGVudW0ocGFyYW1zWzBdKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX01JTl9MT0Q6CisgICAgICAgICAgICBzYW1w
bGVyLT5zZXRNaW5Mb2QoQ29udmVydFRvR0xmbG9hdChwYXJhbXNbMF0pKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUFYX0xPRDoKKyAgICAgICAgICAgIHNh
bXBsZXItPnNldE1heExvZChDb252ZXJ0VG9HTGZsb2F0KHBhcmFtc1swXSkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUGFyYW1U
eXBlLCB0eXBlbmFtZSBDdXJyZW50RGF0YVR5cGU+CitQYXJhbVR5cGUgQ29udmVydEN1cnJlbnRW
YWx1ZShDdXJyZW50RGF0YVR5cGUgY3VycmVudFZhbHVlKQoreworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxQYXJhbVR5cGU+KGN1cnJlbnRWYWx1ZSk7Cit9CisKK3RlbXBsYXRlIDw+CitHTGludCBD
b252ZXJ0Q3VycmVudFZhbHVlKEdMZmxvYXQgY3VycmVudFZhbHVlKQoreworICAgIHJldHVybiBp
cm91bmQ8R0xpbnQ+KGN1cnJlbnRWYWx1ZSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQYXJh
bVR5cGUsIHR5cGVuYW1lIEN1cnJlbnREYXRhVHlwZSwgc2l6ZV90IEN1cnJlbnRWYWx1ZUNvdW50
Pgordm9pZCBRdWVyeVZlcnRleEF0dHJpYkJhc2UoY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRy
aWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDdXJyZW50RGF0YVR5cGUgKCZj
dXJyZW50VmFsdWVEYXRhKVtDdXJyZW50VmFsdWVDb3VudF0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbVR5
cGUgKnBhcmFtcykKK3sKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAgICAgICAgY2FzZSBH
TF9DVVJSRU5UX1ZFUlRFWF9BVFRSSUI6CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IEN1cnJlbnRWYWx1ZUNvdW50OyArK2kpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgcGFyYW1zW2ldID0gQ29udmVydEN1cnJlbnRWYWx1ZTxQYXJhbVR5cGU+KGN1cnJlbnRWYWx1
ZURhdGFbaV0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEOgorICAgICAgICAgICAgKnBhcmFtcyA9
IENvbnZlcnRGcm9tR0xib29sZWFuPFBhcmFtVHlwZT4oYXR0cmliLmVuYWJsZWQpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9TSVpFOgor
ICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRGcm9tR0x1aW50PFBhcmFtVHlwZT4oYXR0cmli
LnNpemUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJ
Ql9BUlJBWV9TVFJJREU6CisgICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTHVpbnQ8
UGFyYW1UeXBlPihhdHRyaWIuc3RyaWRlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRToKKyAgICAgICAgICAgICpwYXJhbXMgPSBD
b252ZXJ0RnJvbUdMZW51bTxQYXJhbVR5cGU+KGF0dHJpYi50eXBlKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRDoKKyAg
ICAgICAgICAgICpwYXJhbXMgPSBDb252ZXJ0RnJvbUdMYm9vbGVhbjxQYXJhbVR5cGU+KGF0dHJp
Yi5ub3JtYWxpemVkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1ZFUlRF
WF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkc6CisgICAgICAgICAgICAqcGFyYW1zID0gQ29u
dmVydEZyb21HTHVpbnQ8UGFyYW1UeXBlPihhdHRyaWIuYnVmZmVyLmlkKCkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJU09SOgor
ICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRGcm9tR0x1aW50PFBhcmFtVHlwZT4oYXR0cmli
LmRpdmlzb3IpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVkVSVEVYX0FU
VFJJQl9BUlJBWV9JTlRFR0VSOgorICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRGcm9tR0xi
b29sZWFuPFBhcmFtVHlwZT4oYXR0cmliLnB1cmVJbnRlZ2VyKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgIH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFBhcmFtVHlwZT4KK3Zv
aWQgUXVlcnlCdWZmZXJQYXJhbWV0ZXJCYXNlKGNvbnN0IEJ1ZmZlciAqYnVmZmVyLCBHTGVudW0g
cG5hbWUsIFBhcmFtVHlwZSAqcGFyYW1zKQoreworICAgIEFTU0VSVChidWZmZXIgIT0gbnVsbHB0
cik7CisKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9CVUZGRVJf
VVNBR0U6CisgICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTGVudW08UGFyYW1UeXBl
PihidWZmZXItPmdldFVzYWdlKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
R0xfQlVGRkVSX1NJWkU6CisgICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTGludDY0
PFBhcmFtVHlwZT4oYnVmZmVyLT5nZXRTaXplKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgR0xfQlVGRkVSX0FDQ0VTU19GTEFHUzoKKyAgICAgICAgICAgICpwYXJhbXMgPSBD
b252ZXJ0RnJvbUdMdWludDxQYXJhbVR5cGU+KGJ1ZmZlci0+Z2V0QWNjZXNzRmxhZ3MoKSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9CVUZGRVJfQUNDRVNTX09FUzoKKyAg
ICAgICAgICAgICpwYXJhbXMgPSBDb252ZXJ0RnJvbUdMZW51bTxQYXJhbVR5cGU+KGJ1ZmZlci0+
Z2V0QWNjZXNzKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfQlVGRkVS
X01BUFBFRDoKKyAgICAgICAgICAgICpwYXJhbXMgPSBDb252ZXJ0RnJvbUdMYm9vbGVhbjxQYXJh
bVR5cGU+KGJ1ZmZlci0+aXNNYXBwZWQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBHTF9CVUZGRVJfTUFQX09GRlNFVDoKKyAgICAgICAgICAgICpwYXJhbXMgPSBDb252ZXJ0
RnJvbUdMaW50NjQ8UGFyYW1UeXBlPihidWZmZXItPmdldE1hcE9mZnNldCgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX0JVRkZFUl9NQVBfTEVOR1RIOgorICAgICAgICAg
ICAgKnBhcmFtcyA9IENvbnZlcnRGcm9tR0xpbnQ2NDxQYXJhbVR5cGU+KGJ1ZmZlci0+Z2V0TWFw
TGVuZ3RoKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit9ICAv
LyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK3ZvaWQgUXVlcnlGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQ
YXJhbWV0ZXJpdihjb25zdCBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCit7Cisg
ICAgQVNTRVJUKGZyYW1lYnVmZmVyKTsKKworICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVu
dCAqYXR0YWNobWVudE9iamVjdCA9IGZyYW1lYnVmZmVyLT5nZXRBdHRhY2htZW50KGF0dGFjaG1l
bnQpOworICAgIGlmIChhdHRhY2htZW50T2JqZWN0ID09IG51bGxwdHIpCisgICAgeworICAgICAg
ICAvLyBFUyAyLjAuMjUgc3BlYyBwZyAxMjcgc3RhdGVzIHRoYXQgaWYgdGhlIHZhbHVlIG9mIEZS
QU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUKKyAgICAgICAgLy8gaXMgTk9ORSwgdGhl
biBxdWVyeWluZyBhbnkgb3RoZXIgcG5hbWUgd2lsbCBnZW5lcmF0ZSBJTlZBTElEX0VOVU0uCisK
KyAgICAgICAgLy8gRVMgMy4wLjIgc3BlYyBwZyAyMzUgc3RhdGVzIHRoYXQgaWYgdGhlIGF0dGFj
aG1lbnQgdHlwZSBpcyBub25lLAorICAgICAgICAvLyBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5U
X09CSkVDVF9OQU1FIHdpbGwgcmV0dXJuIHplcm8gYW5kIGJlIGFuCisgICAgICAgIC8vIElOVkFM
SURfT1BFUkFUSU9OIGZvciBhbGwgb3RoZXIgcG5hbWVzCisKKyAgICAgICAgc3dpdGNoIChwbmFt
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5U
X09CSkVDVF9UWVBFOgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSBHTF9OT05FOworICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFD
SE1FTlRfT0JKRUNUX05BTUU6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IDA7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
VU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAgICAgICAg
Y2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFOgorICAgICAgICAgICAg
KnBhcmFtcyA9IGF0dGFjaG1lbnRPYmplY3QtPnR5cGUoKTsKKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRToKKyAg
ICAgICAgICAgICpwYXJhbXMgPSBhdHRhY2htZW50T2JqZWN0LT5pZCgpOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVf
TEVWRUw6CisgICAgICAgICAgICAqcGFyYW1zID0gYXR0YWNobWVudE9iamVjdC0+bWlwTGV2ZWwo
KTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfQVRU
QUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0U6CisgICAgICAgICAgICAqcGFyYW1zID0gYXR0
YWNobWVudE9iamVjdC0+Y3ViZU1hcEZhY2UoKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9SRURfU0laRToKKyAgICAgICAgICAg
ICpwYXJhbXMgPSBhdHRhY2htZW50T2JqZWN0LT5nZXRSZWRTaXplKCk7CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfR1JFRU5fU0la
RToKKyAgICAgICAgICAgICpwYXJhbXMgPSBhdHRhY2htZW50T2JqZWN0LT5nZXRHcmVlblNpemUo
KTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfQVRU
QUNITUVOVF9CTFVFX1NJWkU6CisgICAgICAgICAgICAqcGFyYW1zID0gYXR0YWNobWVudE9iamVj
dC0+Z2V0Qmx1ZVNpemUoKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xf
RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9BTFBIQV9TSVpFOgorICAgICAgICAgICAgKnBhcmFtcyA9
IGF0dGFjaG1lbnRPYmplY3QtPmdldEFscGhhU2l6ZSgpOworICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0RFUFRIX1NJWkU6CisgICAg
ICAgICAgICAqcGFyYW1zID0gYXR0YWNobWVudE9iamVjdC0+Z2V0RGVwdGhTaXplKCk7CisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRf
U1RFTkNJTF9TSVpFOgorICAgICAgICAgICAgKnBhcmFtcyA9IGF0dGFjaG1lbnRPYmplY3QtPmdl
dFN0ZW5jaWxTaXplKCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX0ZS
QU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZUEU6CisgICAgICAgICAgICAqcGFyYW1z
ID0gYXR0YWNobWVudE9iamVjdC0+Z2V0Q29tcG9uZW50VHlwZSgpOworICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09E
SU5HOgorICAgICAgICAgICAgKnBhcmFtcyA9IGF0dGFjaG1lbnRPYmplY3QtPmdldENvbG9yRW5j
b2RpbmcoKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZG
RVJfQVRUQUNITUVOVF9URVhUVVJFX0xBWUVSOgorICAgICAgICAgICAgKnBhcmFtcyA9IGF0dGFj
aG1lbnRPYmplY3QtPmxheWVyKCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
IH0KK30KKwordm9pZCBRdWVyeUJ1ZmZlclBhcmFtZXRlcml2KGNvbnN0IEJ1ZmZlciAqYnVmZmVy
LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCit7CisgICAgUXVlcnlCdWZmZXJQYXJhbWV0
ZXJCYXNlKGJ1ZmZlciwgcG5hbWUsIHBhcmFtcyk7Cit9CisKK3ZvaWQgUXVlcnlCdWZmZXJQYXJh
bWV0ZXJpNjR2KGNvbnN0IEJ1ZmZlciAqYnVmZmVyLCBHTGVudW0gcG5hbWUsIEdMaW50NjQgKnBh
cmFtcykKK3sKKyAgICBRdWVyeUJ1ZmZlclBhcmFtZXRlckJhc2UoYnVmZmVyLCBwbmFtZSwgcGFy
YW1zKTsKK30KKwordm9pZCBRdWVyeUJ1ZmZlclBvaW50ZXJ2KGNvbnN0IEJ1ZmZlciAqYnVmZmVy
LCBHTGVudW0gcG5hbWUsIHZvaWQgKipwYXJhbXMpCit7CisgICAgc3dpdGNoIChwbmFtZSkKKyAg
ICB7CisgICAgICAgIGNhc2UgR0xfQlVGRkVSX01BUF9QT0lOVEVSOgorICAgICAgICAgICAgKnBh
cmFtcyA9IGJ1ZmZlci0+Z2V0TWFwUG9pbnRlcigpOworICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICB9Cit9CisKK3ZvaWQgUXVlcnlQcm9ncmFtaXYoY29uc3QgUHJvZ3JhbSAqcHJv
Z3JhbSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQoreworICAgIEFTU0VSVChwcm9ncmFt
ICE9IG51bGxwdHIpOworCisgICAgc3dpdGNoIChwbmFtZSkKKyAgICB7CisgICAgICAgIGNhc2Ug
R0xfREVMRVRFX1NUQVRVUzoKKyAgICAgICAgICAgICpwYXJhbXMgPSBwcm9ncmFtLT5pc0ZsYWdn
ZWRGb3JEZWxldGlvbigpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIEdMX0xJ
TktfU1RBVFVTOgorICAgICAgICAgICAgKnBhcmFtcyA9IHByb2dyYW0tPmlzTGlua2VkKCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgR0xfVkFMSURBVEVfU1RBVFVTOgorICAg
ICAgICAgICAgKnBhcmFtcyA9IHByb2dyYW0tPmlzVmFsaWRhdGVkKCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIGNhc2UgR0xfSU5GT19MT0dfTEVOR1RIOgorICAgICAgICAgICAgKnBh
cmFtcyA9IHByb2dyYW0tPmdldEluZm9Mb2dMZW5ndGgoKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgY2FzZSBHTF9BVFRBQ0hFRF9TSEFERVJTOgorICAgICAgICAgICAgKnBhcmFtcyA9
IHByb2dyYW0tPmdldEF0dGFjaGVkU2hhZGVyc0NvdW50KCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIGNhc2UgR0xfQUNUSVZFX0FUVFJJQlVURVM6CisgICAgICAgICAgICAqcGFyYW1z
ID0gcHJvZ3JhbS0+Z2V0QWN0aXZlQXR0cmlidXRlQ291bnQoKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgY2FzZSBHTF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEg6CisgICAgICAg
ICAgICAqcGFyYW1zID0gcHJvZ3JhbS0+Z2V0QWN0aXZlQXR0cmlidXRlTWF4TGVuZ3RoKCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgR0xfQUNUSVZFX1VOSUZPUk1TOgorICAg
ICAgICAgICAgKnBhcmFtcyA9IHByb2dyYW0tPmdldEFjdGl2ZVVuaWZvcm1Db3VudCgpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5H
VEg6CisgICAgICAgICAgICAqcGFyYW1zID0gcHJvZ3JhbS0+Z2V0QWN0aXZlVW5pZm9ybU1heExl
bmd0aCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIEdMX1BST0dSQU1fQklO
QVJZX0xFTkdUSF9PRVM6CisgICAgICAgICAgICAqcGFyYW1zID0gcHJvZ3JhbS0+Z2V0QmluYXJ5
TGVuZ3RoKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgR0xfQUNUSVZFX1VO
SUZPUk1fQkxPQ0tTOgorICAgICAgICAgICAgKnBhcmFtcyA9IHByb2dyYW0tPmdldEFjdGl2ZVVu
aWZvcm1CbG9ja0NvdW50KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgR0xf
QUNUSVZFX1VOSUZPUk1fQkxPQ0tfTUFYX05BTUVfTEVOR1RIOgorICAgICAgICAgICAgKnBhcmFt
cyA9IHByb2dyYW0tPmdldEFjdGl2ZVVuaWZvcm1CbG9ja01heExlbmd0aCgpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9NT0RF
OgorICAgICAgICAgICAgKnBhcmFtcyA9IHByb2dyYW0tPmdldFRyYW5zZm9ybUZlZWRiYWNrQnVm
ZmVyTW9kZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVFJBTlNGT1JN
X0ZFRURCQUNLX1ZBUllJTkdTOgorICAgICAgICAgICAgKnBhcmFtcyA9IHByb2dyYW0tPmdldFRy
YW5zZm9ybUZlZWRiYWNrVmFyeWluZ0NvdW50KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlOR19NQVhfTEVOR1RIOgorICAgICAg
ICAgICAgKnBhcmFtcyA9IHByb2dyYW0tPmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ01heExl
bmd0aCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfUFJPR1JBTV9CSU5B
UllfUkVUUklFVkFCTEVfSElOVDoKKyAgICAgICAgICAgICpwYXJhbXMgPSBwcm9ncmFtLT5nZXRC
aW5hcnlSZXRyaWV2YWJsZUhpbnQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
IH0KK30KKwordm9pZCBRdWVyeVJlbmRlcmJ1ZmZlcml2KGNvbnN0IFJlbmRlcmJ1ZmZlciAqcmVu
ZGVyYnVmZmVyLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCit7CisgICAgQVNTRVJUKHJl
bmRlcmJ1ZmZlciAhPSBudWxscHRyKTsKKworICAgIHN3aXRjaCAocG5hbWUpCisgICAgeworICAg
ICAgICBjYXNlIEdMX1JFTkRFUkJVRkZFUl9XSURUSDoKKyAgICAgICAgICAgICpwYXJhbXMgPSBy
ZW5kZXJidWZmZXItPmdldFdpZHRoKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBHTF9SRU5ERVJCVUZGRVJfSEVJR0hUOgorICAgICAgICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1
ZmZlci0+Z2V0SGVpZ2h0KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9S
RU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUOgorICAgICAgICAgICAgKnBhcmFtcyA9IHJlbmRl
cmJ1ZmZlci0+Z2V0Rm9ybWF0KCkuaW5mby0+aW50ZXJuYWxGb3JtYXQ7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVJfUkVEX1NJWkU6CisgICAgICAgICAg
ICAqcGFyYW1zID0gcmVuZGVyYnVmZmVyLT5nZXRSZWRTaXplKCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVJfR1JFRU5fU0laRToKKyAgICAgICAgICAg
ICpwYXJhbXMgPSByZW5kZXJidWZmZXItPmdldEdyZWVuU2l6ZSgpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0JMVUVfU0laRToKKyAgICAgICAgICAg
ICpwYXJhbXMgPSByZW5kZXJidWZmZXItPmdldEJsdWVTaXplKCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVJfQUxQSEFfU0laRToKKyAgICAgICAgICAg
ICpwYXJhbXMgPSByZW5kZXJidWZmZXItPmdldEFscGhhU2l6ZSgpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0RFUFRIX1NJWkU6CisgICAgICAgICAg
ICAqcGFyYW1zID0gcmVuZGVyYnVmZmVyLT5nZXREZXB0aFNpemUoKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEdMX1JFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkU6CisgICAgICAg
ICAgICAqcGFyYW1zID0gcmVuZGVyYnVmZmVyLT5nZXRTdGVuY2lsU2l6ZSgpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX1NBTVBMRVNfQU5HTEU6Cisg
ICAgICAgICAgICAqcGFyYW1zID0gcmVuZGVyYnVmZmVyLT5nZXRTYW1wbGVzKCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgUXVlcnlTaGFkZXJpdihjb25z
dCBTaGFkZXIgKnNoYWRlciwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQoreworICAgIEFT
U0VSVChzaGFkZXIgIT0gbnVsbHB0cik7CisKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAg
ICAgICAgY2FzZSBHTF9TSEFERVJfVFlQRToKKyAgICAgICAgICAgICpwYXJhbXMgPSBzaGFkZXIt
PmdldFR5cGUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBHTF9ERUxFVEVf
U1RBVFVTOgorICAgICAgICAgICAgKnBhcmFtcyA9IHNoYWRlci0+aXNGbGFnZ2VkRm9yRGVsZXRp
b24oKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBHTF9DT01QSUxFX1NUQVRV
UzoKKyAgICAgICAgICAgICpwYXJhbXMgPSBzaGFkZXItPmlzQ29tcGlsZWQoKSA/IEdMX1RSVUUg
OiBHTF9GQUxTRTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBHTF9JTkZPX0xP
R19MRU5HVEg6CisgICAgICAgICAgICAqcGFyYW1zID0gc2hhZGVyLT5nZXRJbmZvTG9nTGVuZ3Ro
KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgR0xfU0hBREVSX1NPVVJDRV9M
RU5HVEg6CisgICAgICAgICAgICAqcGFyYW1zID0gc2hhZGVyLT5nZXRTb3VyY2VMZW5ndGgoKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBHTF9UUkFOU0xBVEVEX1NIQURFUl9T
T1VSQ0VfTEVOR1RIX0FOR0xFOgorICAgICAgICAgICAgKnBhcmFtcyA9IHNoYWRlci0+Z2V0VHJh
bnNsYXRlZFNvdXJjZVdpdGhEZWJ1Z0luZm9MZW5ndGgoKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgUXVlcnlUZXhQYXJhbWV0ZXJmdihjb25zdCBUZXh0
dXJlICp0ZXh0dXJlLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcykKK3sKKyAgICBRdWVy
eVRleFBhcmFtZXRlckJhc2UodGV4dHVyZSwgcG5hbWUsIHBhcmFtcyk7Cit9CisKK3ZvaWQgUXVl
cnlUZXhQYXJhbWV0ZXJpdihjb25zdCBUZXh0dXJlICp0ZXh0dXJlLCBHTGVudW0gcG5hbWUsIEdM
aW50ICpwYXJhbXMpCit7CisgICAgUXVlcnlUZXhQYXJhbWV0ZXJCYXNlKHRleHR1cmUsIHBuYW1l
LCBwYXJhbXMpOworfQorCit2b2lkIFF1ZXJ5U2FtcGxlclBhcmFtZXRlcmZ2KGNvbnN0IFNhbXBs
ZXIgKnNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKQoreworICAgIFF1ZXJ5
U2FtcGxlclBhcmFtZXRlckJhc2Uoc2FtcGxlciwgcG5hbWUsIHBhcmFtcyk7Cit9CisKK3ZvaWQg
UXVlcnlTYW1wbGVyUGFyYW1ldGVyaXYoY29uc3QgU2FtcGxlciAqc2FtcGxlciwgR0xlbnVtIHBu
YW1lLCBHTGludCAqcGFyYW1zKQoreworICAgIFF1ZXJ5U2FtcGxlclBhcmFtZXRlckJhc2Uoc2Ft
cGxlciwgcG5hbWUsIHBhcmFtcyk7Cit9CisKK3ZvaWQgUXVlcnlWZXJ0ZXhBdHRyaWJmdihjb25z
dCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZjdXJyZW50VmFsdWVEYXRhLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGZsb2F0ICpwYXJhbXMpCit7CisgICAgUXVlcnlWZXJ0ZXhBdHRyaWJCYXNlKGF0dHJpYiwg
Y3VycmVudFZhbHVlRGF0YS5GbG9hdFZhbHVlcywgcG5hbWUsIHBhcmFtcyk7Cit9CisKK3ZvaWQg
UXVlcnlWZXJ0ZXhBdHRyaWJpdihjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZj
dXJyZW50VmFsdWVEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQoreworICAgIFF1ZXJ5VmVy
dGV4QXR0cmliQmFzZShhdHRyaWIsIGN1cnJlbnRWYWx1ZURhdGEuRmxvYXRWYWx1ZXMsIHBuYW1l
LCBwYXJhbXMpOworfQorCit2b2lkIFF1ZXJ5VmVydGV4QXR0cmliUG9pbnRlcnYoY29uc3QgVmVy
dGV4QXR0cmlidXRlICZhdHRyaWIsIEdMZW51bSBwbmFtZSwgR0x2b2lkICoqcG9pbnRlcikKK3sK
KyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklC
X0FSUkFZX1BPSU5URVI6CisgICAgICAgICAgICAqcG9pbnRlciA9IGNvbnN0X2Nhc3Q8R0x2b2lk
ICo+KGF0dHJpYi5wb2ludGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
fQorfQorCit2b2lkIFF1ZXJ5VmVydGV4QXR0cmliSWl2KGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAm
YXR0cmliLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJDdXJy
ZW50VmFsdWVEYXRhICZjdXJyZW50VmFsdWVEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMp
Cit7CisgICAgUXVlcnlWZXJ0ZXhBdHRyaWJCYXNlKGF0dHJpYiwgY3VycmVudFZhbHVlRGF0YS5J
bnRWYWx1ZXMsIHBuYW1lLCBwYXJhbXMpOworfQorCit2b2lkIFF1ZXJ5VmVydGV4QXR0cmliSXVp
dihjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGEgJmN1cnJlbnRWYWx1ZURhdGEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcykKK3sKKyAgICBRdWVyeVZlcnRleEF0dHJpYkJh
c2UoYXR0cmliLCBjdXJyZW50VmFsdWVEYXRhLlVuc2lnbmVkSW50VmFsdWVzLCBwbmFtZSwgcGFy
YW1zKTsKK30KKwordm9pZCBRdWVyeUFjdGl2ZVVuaWZvcm1CbG9ja2l2KGNvbnN0IFByb2dyYW0g
KnByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHVuaWZvcm1C
bG9ja0luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQoreworICAgIGNv
bnN0IFVuaWZvcm1CbG9jayAmdW5pZm9ybUJsb2NrID0gcHJvZ3JhbS0+Z2V0VW5pZm9ybUJsb2Nr
QnlJbmRleCh1bmlmb3JtQmxvY2tJbmRleCk7CisgICAgc3dpdGNoIChwbmFtZSkKKyAgICB7Cisg
ICAgICAgIGNhc2UgR0xfVU5JRk9STV9CTE9DS19CSU5ESU5HOgorICAgICAgICAgICAgKnBhcmFt
cyA9IENvbnZlcnRUb0dMaW50KHByb2dyYW0tPmdldFVuaWZvcm1CbG9ja0JpbmRpbmcodW5pZm9y
bUJsb2NrSW5kZXgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1VOSUZP
Uk1fQkxPQ0tfREFUQV9TSVpFOgorICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRUb0dMaW50
KHVuaWZvcm1CbG9jay5kYXRhU2l6ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBHTF9VTklGT1JNX0JMT0NLX05BTUVfTEVOR1RIOgorICAgICAgICAgICAgKnBhcmFtcyA9IENv
bnZlcnRUb0dMaW50KHVuaWZvcm1CbG9jay5uYW1lV2l0aEFycmF5SW5kZXgoKS5zaXplKCkgKyAx
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1VOSUZPUk1fQkxPQ0tfQUNU
SVZFX1VOSUZPUk1TOgorICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRUb0dMaW50KHVuaWZv
cm1CbG9jay5tZW1iZXJVbmlmb3JtSW5kZXhlcy5zaXplKCkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgR0xfVU5JRk9STV9CTE9DS19BQ1RJVkVfVU5JRk9STV9JTkRJQ0VTOgor
ICAgICAgICAgICAgZm9yIChzaXplX3QgYmxvY2tNZW1iZXJJbmRleCA9IDA7CisgICAgICAgICAg
ICAgICAgIGJsb2NrTWVtYmVySW5kZXggPCB1bmlmb3JtQmxvY2subWVtYmVyVW5pZm9ybUluZGV4
ZXMuc2l6ZSgpOyBibG9ja01lbWJlckluZGV4KyspCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgcGFyYW1zW2Jsb2NrTWVtYmVySW5kZXhdID0KKyAgICAgICAgICAgICAgICAgICAgQ29u
dmVydFRvR0xpbnQodW5pZm9ybUJsb2NrLm1lbWJlclVuaWZvcm1JbmRleGVzW2Jsb2NrTWVtYmVy
SW5kZXhdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEdMX1VOSUZPUk1fQkxPQ0tfUkVGRVJFTkNFRF9CWV9WRVJURVhfU0hBREVSOgorICAgICAgICAg
ICAgKnBhcmFtcyA9IENvbnZlcnRUb0dMaW50KHVuaWZvcm1CbG9jay52ZXJ0ZXhTdGF0aWNVc2Up
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVU5JRk9STV9CTE9DS19SRUZF
UkVOQ0VEX0JZX0ZSQUdNRU5UX1NIQURFUjoKKyAgICAgICAgICAgICpwYXJhbXMgPSBDb252ZXJ0
VG9HTGludCh1bmlmb3JtQmxvY2suZnJhZ21lbnRTdGF0aWNVc2UpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgfQorfQorCit2b2lkIFF1ZXJ5SW50ZXJuYWxGb3JtYXRpdihjb25z
dCBUZXh0dXJlQ2FwcyAmZm9ybWF0LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xp
bnQgKnBhcmFtcykKK3sKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAgICAgICAgY2FzZSBH
TF9OVU1fU0FNUExFX0NPVU5UUzoKKyAgICAgICAgICAgIGlmIChidWZTaXplICE9IDApCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IHN0YXRpY19jYXN0PEdMaW50Pihm
b3JtYXQuc2FtcGxlQ291bnRzLnNpemUoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBjYXNlIEdMX1NBTVBMRVM6CisgICAgICAgIHsKKyAgICAgICAgICAg
IHNpemVfdCByZXR1cm5Db3VudCAgID0gc3RkOjptaW48c2l6ZV90PihidWZTaXplLCBmb3JtYXQu
c2FtcGxlQ291bnRzLnNpemUoKSk7CisgICAgICAgICAgICBhdXRvIHNhbXBsZVJldmVyc2VJdCA9
IGZvcm1hdC5zYW1wbGVDb3VudHMucmJlZ2luKCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBz
YW1wbGVJbmRleCA9IDA7IHNhbXBsZUluZGV4IDwgcmV0dXJuQ291bnQ7ICsrc2FtcGxlSW5kZXgp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcGFyYW1zW3NhbXBsZUluZGV4XSA9ICpz
YW1wbGVSZXZlcnNlSXQrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVh
azsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBTZXRUZXhQYXJhbWV0ZXJmKFRleHR1cmUg
KnRleHR1cmUsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSkKK3sKKyAgICBTZXRUZXhQYXJh
bWV0ZXJCYXNlKHRleHR1cmUsIHBuYW1lLCAmcGFyYW0pOworfQorCit2b2lkIFNldFRleFBhcmFt
ZXRlcmZ2KFRleHR1cmUgKnRleHR1cmUsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFy
YW1zKQoreworICAgIFNldFRleFBhcmFtZXRlckJhc2UodGV4dHVyZSwgcG5hbWUsIHBhcmFtcyk7
Cit9CisKK3ZvaWQgU2V0VGV4UGFyYW1ldGVyaShUZXh0dXJlICp0ZXh0dXJlLCBHTGVudW0gcG5h
bWUsIEdMaW50IHBhcmFtKQoreworICAgIFNldFRleFBhcmFtZXRlckJhc2UodGV4dHVyZSwgcG5h
bWUsICZwYXJhbSk7Cit9CisKK3ZvaWQgU2V0VGV4UGFyYW1ldGVyaXYoVGV4dHVyZSAqdGV4dHVy
ZSwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKQoreworICAgIFNldFRleFBhcmFt
ZXRlckJhc2UodGV4dHVyZSwgcG5hbWUsIHBhcmFtcyk7Cit9CisKK3ZvaWQgU2V0U2FtcGxlclBh
cmFtZXRlcmYoU2FtcGxlciAqc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQor
eworICAgIFNldFNhbXBsZXJQYXJhbWV0ZXJCYXNlKHNhbXBsZXIsIHBuYW1lLCAmcGFyYW0pOwor
fQorCit2b2lkIFNldFNhbXBsZXJQYXJhbWV0ZXJmdihTYW1wbGVyICpzYW1wbGVyLCBHTGVudW0g
cG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykKK3sKKyAgICBTZXRTYW1wbGVyUGFyYW1ldGVy
QmFzZShzYW1wbGVyLCBwbmFtZSwgcGFyYW1zKTsKK30KKwordm9pZCBTZXRTYW1wbGVyUGFyYW1l
dGVyaShTYW1wbGVyICpzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQoreworICAg
IFNldFNhbXBsZXJQYXJhbWV0ZXJCYXNlKHNhbXBsZXIsIHBuYW1lLCAmcGFyYW0pOworfQorCit2
b2lkIFNldFNhbXBsZXJQYXJhbWV0ZXJpdihTYW1wbGVyICpzYW1wbGVyLCBHTGVudW0gcG5hbWUs
IGNvbnN0IEdMaW50ICpwYXJhbXMpCit7CisgICAgU2V0U2FtcGxlclBhcmFtZXRlckJhc2Uoc2Ft
cGxlciwgcG5hbWUsIHBhcmFtcyk7Cit9Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcXVlcnl1dGlscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9xdWVyeXV0aWxzLmgJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3F1ZXJ5dXRpbHMuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDc5IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gcXVlcnl1dGlscy5oOiBV
dGlsaXRpZXMgZm9yIHF1ZXJ5aW5nIHZhbHVlcyBmcm9tIEdMIG9iamVjdHMKKworI2lmbmRlZiBM
SUJBTkdMRV9RVUVSWVVUSUxTX0hfCisjZGVmaW5lIExJQkFOR0xFX1FVRVJZVVRJTFNfSF8KKwor
I2luY2x1ZGUgImFuZ2xlX2dsLmgiCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKwor
bmFtZXNwYWNlIGdsCit7CitjbGFzcyBCdWZmZXI7CitjbGFzcyBGcmFtZWJ1ZmZlcjsKK2NsYXNz
IFByb2dyYW07CitjbGFzcyBSZW5kZXJidWZmZXI7CitjbGFzcyBTYW1wbGVyOworY2xhc3MgU2hh
ZGVyOworY2xhc3MgVGV4dHVyZTsKK3N0cnVjdCBUZXh0dXJlQ2FwczsKK3N0cnVjdCBVbmlmb3Jt
QmxvY2s7CitzdHJ1Y3QgVmVydGV4QXR0cmlidXRlOworc3RydWN0IFZlcnRleEF0dHJpYkN1cnJl
bnRWYWx1ZURhdGE7CisKK3ZvaWQgUXVlcnlGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
dihjb25zdCBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOwordm9pZCBRdWVyeUJ1
ZmZlclBhcmFtZXRlcml2KGNvbnN0IEJ1ZmZlciAqYnVmZmVyLCBHTGVudW0gcG5hbWUsIEdMaW50
ICpwYXJhbXMpOwordm9pZCBRdWVyeUJ1ZmZlclBhcmFtZXRlcmk2NHYoY29uc3QgQnVmZmVyICpi
dWZmZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAqcGFyYW1zKTsKK3ZvaWQgUXVlcnlCdWZmZXJQ
b2ludGVydihjb25zdCBCdWZmZXIgKmJ1ZmZlciwgR0xlbnVtIHBuYW1lLCB2b2lkICoqcGFyYW1z
KTsKK3ZvaWQgUXVlcnlQcm9ncmFtaXYoY29uc3QgUHJvZ3JhbSAqcHJvZ3JhbSwgR0xlbnVtIHBu
YW1lLCBHTGludCAqcGFyYW1zKTsKK3ZvaWQgUXVlcnlSZW5kZXJidWZmZXJpdihjb25zdCBSZW5k
ZXJidWZmZXIgKnJlbmRlcmJ1ZmZlciwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKK3Zv
aWQgUXVlcnlTaGFkZXJpdihjb25zdCBTaGFkZXIgKnNoYWRlciwgR0xlbnVtIHBuYW1lLCBHTGlu
dCAqcGFyYW1zKTsKK3ZvaWQgUXVlcnlUZXhQYXJhbWV0ZXJmdihjb25zdCBUZXh0dXJlICp0ZXh0
dXJlLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7Cit2b2lkIFF1ZXJ5VGV4UGFyYW1l
dGVyaXYoY29uc3QgVGV4dHVyZSAqdGV4dHVyZSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1z
KTsKK3ZvaWQgUXVlcnlTYW1wbGVyUGFyYW1ldGVyZnYoY29uc3QgU2FtcGxlciAqc2FtcGxlciwg
R0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwordm9pZCBRdWVyeVNhbXBsZXJQYXJhbWV0
ZXJpdihjb25zdCBTYW1wbGVyICpzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMp
Owordm9pZCBRdWVyeVZlcnRleEF0dHJpYmZ2KGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmli
LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1
ZURhdGEgJmN1cnJlbnRWYWx1ZURhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcyk7Cit2b2lk
IFF1ZXJ5VmVydGV4QXR0cmliaXYoY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0YSAm
Y3VycmVudFZhbHVlRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7Cit2b2lkIFF1ZXJ5VmVy
dGV4QXR0cmliUG9pbnRlcnYoY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWIsIEdMZW51bSBw
bmFtZSwgR0x2b2lkICoqcG9pbnRlcik7Cit2b2lkIFF1ZXJ5VmVydGV4QXR0cmliSWl2KGNvbnN0
IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZjdXJyZW50VmFsdWVEYXRhLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50ICpwYXJhbXMpOwordm9pZCBRdWVyeVZlcnRleEF0dHJpYkl1aXYoY29uc3QgVmVy
dGV4QXR0cmlidXRlICZhdHRyaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBW
ZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZjdXJyZW50VmFsdWVEYXRhLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50ICpwYXJhbXMpOworCit2b2lkIFF1ZXJ5QWN0aXZlVW5pZm9ybUJsb2NraXYoY29u
c3QgUHJvZ3JhbSAqcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgdW5pZm9ybUJsb2NrSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMp
OworCit2b2lkIFF1ZXJ5SW50ZXJuYWxGb3JtYXRpdihjb25zdCBUZXh0dXJlQ2FwcyAmZm9ybWF0
LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xpbnQgKnBhcmFtcyk7CisKK3ZvaWQg
U2V0VGV4UGFyYW1ldGVyZihUZXh0dXJlICp0ZXh0dXJlLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQg
cGFyYW0pOwordm9pZCBTZXRUZXhQYXJhbWV0ZXJmdihUZXh0dXJlICp0ZXh0dXJlLCBHTGVudW0g
cG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Cit2b2lkIFNldFRleFBhcmFtZXRlcmkoVGV4
dHVyZSAqdGV4dHVyZSwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7Cit2b2lkIFNldFRleFBh
cmFtZXRlcml2KFRleHR1cmUgKnRleHR1cmUsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBh
cmFtcyk7CisKK3ZvaWQgU2V0U2FtcGxlclBhcmFtZXRlcmYoU2FtcGxlciAqc2FtcGxlciwgR0xl
bnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKK3ZvaWQgU2V0U2FtcGxlclBhcmFtZXRlcmZ2KFNh
bXBsZXIgKnNhbXBsZXIsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKK3Zv
aWQgU2V0U2FtcGxlclBhcmFtZXRlcmkoU2FtcGxlciAqc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBH
TGludCBwYXJhbSk7Cit2b2lkIFNldFNhbXBsZXJQYXJhbWV0ZXJpdihTYW1wbGVyICpzYW1wbGVy
LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOworfQorCisjZW5kaWYgIC8vIExJ
QkFOR0xFX1FVRVJZVVRJTFNfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9zaWduYWxfdXRpbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9zaWduYWxfdXRpbHMuY3BwCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9zaWduYWxfdXRpbHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAzIEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gc2lnbmFsX3V0aWxzOgor
Ly8gICBIZWxwZXIgY2xhc3NlcyBmb3IgdHJhY2tpbmcgZGVwZW5kZW50IHN0YXRlIGNoYW5nZXMg
YmV0d2VlbiBvYmplY3RzLgorLy8gICBUaGVzZSBjaGFuZ2VzIGFyZSBzaWduYWxlZCB0byB0aGUg
ZGVwZW5kZW50IGNsYXNzIHZpYSBjaGFubmVscy4KKworI2luY2x1ZGUgImxpYkFOR0xFL3NpZ25h
bF91dGlscy5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCisjaW5jbHVkZSAiY29tbW9uL2Rl
YnVnLmgiCisKK25hbWVzcGFjZSBhbmdsZQoreworCitCcm9hZGNhc3RDaGFubmVsOjpCcm9hZGNh
c3RDaGFubmVsKCkKK3sKK30KKworQnJvYWRjYXN0Q2hhbm5lbDo6fkJyb2FkY2FzdENoYW5uZWwo
KQoreworICAgIHJlc2V0KCk7Cit9CisKK3ZvaWQgQnJvYWRjYXN0Q2hhbm5lbDo6YWRkUmVjZWl2
ZXIoQ2hhbm5lbEJpbmRpbmcgKnJlY2VpdmVyKQoreworICAgIEFTU0VSVChzdGQ6OmZpbmQobVJl
Y2VpdmVycy5iZWdpbigpLCBtUmVjZWl2ZXJzLmVuZCgpLCByZWNlaXZlcikgPT0gbVJlY2VpdmVy
cy5lbmQoKSk7CisgICAgbVJlY2VpdmVycy5wdXNoX2JhY2socmVjZWl2ZXIpOworfQorCit2b2lk
IEJyb2FkY2FzdENoYW5uZWw6OnJlbW92ZVJlY2VpdmVyKENoYW5uZWxCaW5kaW5nICpyZWNlaXZl
cikKK3sKKyAgICBhdXRvIGl0ZXIgPSBzdGQ6OmZpbmQobVJlY2VpdmVycy5iZWdpbigpLCBtUmVj
ZWl2ZXJzLmVuZCgpLCByZWNlaXZlcik7CisgICAgQVNTRVJUKGl0ZXIgIT0gbVJlY2VpdmVycy5l
bmQoKSk7CisgICAgbVJlY2VpdmVycy5lcmFzZShpdGVyKTsKK30KKwordm9pZCBCcm9hZGNhc3RD
aGFubmVsOjpzaWduYWwoKSBjb25zdAoreworICAgIGlmIChtUmVjZWl2ZXJzLmVtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGZvciAoY29uc3QgYXV0byAqcmVjZWl2ZXIgOiBtUmVjZWl2
ZXJzKQorICAgIHsKKyAgICAgICAgcmVjZWl2ZXItPnNpZ25hbCgpOworICAgIH0KK30KKwordm9p
ZCBCcm9hZGNhc3RDaGFubmVsOjpyZXNldCgpCit7CisgICAgZm9yIChhdXRvIHJlY2VpdmVyIDog
bVJlY2VpdmVycykKKyAgICB7CisgICAgICAgIHJlY2VpdmVyLT5vbkNoYW5uZWxDbG9zZWQoKTsK
KyAgICB9CisgICAgbVJlY2VpdmVycy5jbGVhcigpOworfQorCitDaGFubmVsQmluZGluZzo6Q2hh
bm5lbEJpbmRpbmcoU2lnbmFsUmVjZWl2ZXIgKnJlY2VpdmVyLCBTaWduYWxUb2tlbiB0b2tlbikK
KyAgICA6IG1DaGFubmVsKG51bGxwdHIpLCBtUmVjZWl2ZXIocmVjZWl2ZXIpLCBtVG9rZW4odG9r
ZW4pCit7CisgICAgQVNTRVJUKHJlY2VpdmVyKTsKK30KKworQ2hhbm5lbEJpbmRpbmc6On5DaGFu
bmVsQmluZGluZygpCit7CisgICAgcmVzZXQoKTsKK30KKwordm9pZCBDaGFubmVsQmluZGluZzo6
YmluZChCcm9hZGNhc3RDaGFubmVsICpjaGFubmVsKQoreworICAgIEFTU0VSVChtUmVjZWl2ZXIp
OworICAgIGlmIChtQ2hhbm5lbCkKKyAgICB7CisgICAgICAgIG1DaGFubmVsLT5yZW1vdmVSZWNl
aXZlcih0aGlzKTsKKyAgICB9CisKKyAgICBtQ2hhbm5lbCA9IGNoYW5uZWw7CisKKyAgICBpZiAo
bUNoYW5uZWwpCisgICAgeworICAgICAgICBtQ2hhbm5lbC0+YWRkUmVjZWl2ZXIodGhpcyk7Cisg
ICAgfQorfQorCit2b2lkIENoYW5uZWxCaW5kaW5nOjpyZXNldCgpCit7CisgICAgYmluZChudWxs
cHRyKTsKK30KKwordm9pZCBDaGFubmVsQmluZGluZzo6c2lnbmFsKCkgY29uc3QKK3sKKyAgICBt
UmVjZWl2ZXItPnNpZ25hbChtVG9rZW4pOworfQorCit2b2lkIENoYW5uZWxCaW5kaW5nOjpvbkNo
YW5uZWxDbG9zZWQoKQoreworICAgIG1DaGFubmVsID0gbnVsbHB0cjsKK30KKworfSAgLy8gbmFt
ZXNwYWNlIGFuZ2xlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
c2lnbmFsX3V0aWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3NpZ25hbF91dGlscy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9zaWduYWxfdXRpbHMuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDc0IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gc2lnbmFsX3V0aWxzOgorLy8gICBIZWxwZXIgY2xh
c3NlcyBmb3IgdHJhY2tpbmcgZGVwZW5kZW50IHN0YXRlIGNoYW5nZXMgYmV0d2VlbiBvYmplY3Rz
LgorLy8gICBUaGVzZSBjaGFuZ2VzIGFyZSBzaWduYWxlZCB0byB0aGUgZGVwZW5kZW50IGNsYXNz
IHZpYSBjaGFubmVscy4KKworI2lmbmRlZiBMSUJBTkdMRV9TSUdOQUxfVVRJTFNfSF8KKyNkZWZp
bmUgTElCQU5HTEVfU0lHTkFMX1VUSUxTX0hfCisKKyNpbmNsdWRlIDxzZXQ+CisKKyNpbmNsdWRl
ICJjb21tb24vYW5nbGV1dGlscy5oIgorCituYW1lc3BhY2UgYW5nbGUKK3sKKworLy8gTWVzc2Fn
ZSB0b2tlbiBwYXNzZWQgdG8gdGhlIHJlY2VpdmVyOwordXNpbmcgU2lnbmFsVG9rZW4gPSB1aW50
MzJfdDsKKworLy8gSW50ZXJmYWNlIHRoYXQgdGhlIGRlcGVuZGluZyBjbGFzcyBpbmhlcml0cyBm
cm9tLgorY2xhc3MgU2lnbmFsUmVjZWl2ZXIKK3sKKyAgcHVibGljOgorICAgIHZpcnR1YWwgflNp
Z25hbFJlY2VpdmVyKCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgdm9pZCBzaWduYWwoU2lnbmFs
VG9rZW4gdG9rZW4pID0gMDsKK307CisKK2NsYXNzIENoYW5uZWxCaW5kaW5nOworCisvLyBUaGUg
aG9zdCBjbGFzcyBvd25zIHRoZSBjaGFubmVsLiBJdCB1c2VzIHRoZSBjaGFubmVsIHRvIGZpcmUg
c2lnbmFscyB0byB0aGUgcmVjZWl2ZXIuCitjbGFzcyBCcm9hZGNhc3RDaGFubmVsIGZpbmFsIDog
Tm9uQ29weWFibGUKK3sKKyAgcHVibGljOgorICAgIEJyb2FkY2FzdENoYW5uZWwoKTsKKyAgICB+
QnJvYWRjYXN0Q2hhbm5lbCgpOworCisgICAgdm9pZCBzaWduYWwoKSBjb25zdDsKKyAgICB2b2lk
IHJlc2V0KCk7CisKKyAgcHJpdmF0ZToKKyAgICAvLyBPbmx5IHRoZSBDaGFubmVsQmluZGluZyBj
bGFzcyBzaG91bGQgYWRkIG9yIHJlbW92ZSByZWNlaXZlcnMuCisgICAgZnJpZW5kIGNsYXNzIENo
YW5uZWxCaW5kaW5nOworICAgIHZvaWQgYWRkUmVjZWl2ZXIoQ2hhbm5lbEJpbmRpbmcgKnJlY2Vp
dmVyKTsKKyAgICB2b2lkIHJlbW92ZVJlY2VpdmVyKENoYW5uZWxCaW5kaW5nICpyZWNlaXZlcik7
CisKKyAgICBzdGQ6OnZlY3RvcjxDaGFubmVsQmluZGluZyAqPiBtUmVjZWl2ZXJzOworfTsKKwor
Ly8gVGhlIGRlcGVuZGVudCBjbGFzcyBrZWVwcyBiaW5kaW5ncyB0byB0aGUgaG9zdCdzIEJyb2Fk
Y2FzdENoYW5uZWwuCitjbGFzcyBDaGFubmVsQmluZGluZyBmaW5hbAoreworICBwdWJsaWM6Cisg
ICAgQ2hhbm5lbEJpbmRpbmcoU2lnbmFsUmVjZWl2ZXIgKnJlY2VpdmVyLCBTaWduYWxUb2tlbiB0
b2tlbik7CisgICAgfkNoYW5uZWxCaW5kaW5nKCk7CisgICAgQ2hhbm5lbEJpbmRpbmcoY29uc3Qg
Q2hhbm5lbEJpbmRpbmcgJm90aGVyKSA9IGRlZmF1bHQ7CisgICAgQ2hhbm5lbEJpbmRpbmcgJm9w
ZXJhdG9yPShjb25zdCBDaGFubmVsQmluZGluZyAmb3RoZXIpID0gZGVmYXVsdDsKKworICAgIHZv
aWQgYmluZChCcm9hZGNhc3RDaGFubmVsICpjaGFubmVsKTsKKyAgICB2b2lkIHJlc2V0KCk7Cisg
ICAgdm9pZCBzaWduYWwoKSBjb25zdDsKKyAgICB2b2lkIG9uQ2hhbm5lbENsb3NlZCgpOworCisg
IHByaXZhdGU6CisgICAgQnJvYWRjYXN0Q2hhbm5lbCAqbUNoYW5uZWw7CisgICAgU2lnbmFsUmVj
ZWl2ZXIgKm1SZWNlaXZlcjsKKyAgICBTaWduYWxUb2tlbiBtVG9rZW47Cit9OworCit9ICAvLyBu
YW1lc3BhY2UgYW5nbGUKKworI2VuZGlmICAvLyBMSUJBTkdMRV9TSUdOQUxfVVRJTFNfSF8KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9zaWduYWxfdXRpbHNfdW5p
dHRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9zaWduYWxfdXRpbHNfdW5pdHRlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9zaWduYWxfdXRpbHNfdW5pdHRlc3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gc2lnbmFsX3V0
aWxzX3VuaXR0ZXN0OgorLy8gICBVbml0IHRlc3RzIGZvciBzaWduYWxzIGFuZCByZWxhdGVkIHV0
aWxzLgorCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKworI2luY2x1ZGUgImxpYkFOR0xFL3Np
Z25hbF91dGlscy5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7Cit1c2luZyBuYW1lc3BhY2Ug
dGVzdGluZzsKKworbmFtZXNwYWNlCit7CisKK3N0cnVjdCBTaWduYWxUaGluZyA6IHB1YmxpYyBT
aWduYWxSZWNlaXZlcgoreworICAgIHZvaWQgc2lnbmFsKFNpZ25hbFRva2VuIHRva2VuKSBvdmVy
cmlkZSB7IHdhc1NpZ25hbGVkID0gdHJ1ZTsgfQorICAgIGJvb2wgd2FzU2lnbmFsZWQgPSBmYWxz
ZTsKK307CisKKy8vIFRlc3QgdGhhdCBicm9hZGNhc3Qgc2lnbmFscyB3b3JrLgorVEVTVChTaWdu
YWxUZXN0LCBCcm9hZGNhc3RTaWduYWxzKQoreworICAgIEJyb2FkY2FzdENoYW5uZWwgY2hhbm5l
bDsKKyAgICBTaWduYWxUaGluZyB0aGluZzsKKyAgICBDaGFubmVsQmluZGluZyBiaW5kaW5nKCZ0
aGluZywgMHUpOworCisgICAgYmluZGluZy5iaW5kKCZjaGFubmVsKTsKKyAgICBBU1NFUlRfRkFM
U0UodGhpbmcud2FzU2lnbmFsZWQpOworICAgIGNoYW5uZWwuc2lnbmFsKCk7CisgICAgQVNTRVJU
X1RSVUUodGhpbmcud2FzU2lnbmFsZWQpOworfQorCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNl
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVH
TC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3ZhbGlkYXRpb25FR0wuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVHTC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE2LDYgKzE2LDggQEAKICNpbmNsdWRlICJsaWJBTkdMRS9JbWFnZS5oIgogI2luY2x1ZGUgImxp
YkFOR0xFL1N0cmVhbS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1N1cmZhY2UuaCIKKyNpbmNsdWRl
ICJsaWJBTkdMRS9UZXh0dXJlLmgiCisjaW5jbHVkZSAibGliQU5HTEUvZm9ybWF0dXRpbHMuaCIK
IAogI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KIApAQCAtNTcsNyArNTksNyBAQCBib29sIFRleHR1
cmVIYXNOb25aZXJvTWlwTGV2ZWxzU3BlY2lmaWVkCiAgICAgICAgICAgICBmb3IgKEdMZW51bSBm
YWNlID0gZ2w6OkZpcnN0Q3ViZU1hcFRleHR1cmVUYXJnZXQ7IGZhY2UgPD0gZ2w6Okxhc3RDdWJl
TWFwVGV4dHVyZVRhcmdldDsKICAgICAgICAgICAgICAgICAgZmFjZSsrKQogICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGlmICh0ZXh0dXJlLT5nZXRJbnRlcm5hbEZvcm1hdChmYWNlLCBs
ZXZlbCkgIT0gR0xfTk9ORSkKKyAgICAgICAgICAgICAgICBpZiAodGV4dHVyZS0+Z2V0Rm9ybWF0
KGZhY2UsIGxldmVsKS52YWxpZCgpKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQpAQCAtNjUsNyArNjcsNyBAQCBi
b29sIFRleHR1cmVIYXNOb25aZXJvTWlwTGV2ZWxzU3BlY2lmaWVkCiAgICAgICAgIH0KICAgICAg
ICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodGV4dHVyZS0+Z2V0SW50ZXJuYWxG
b3JtYXQodGV4dHVyZS0+Z2V0VGFyZ2V0KCksIGxldmVsKSAhPSBHTF9OT05FKQorICAgICAgICAg
ICAgaWYgKHRleHR1cmUtPmdldEZvcm1hdCh0ZXh0dXJlLT5nZXRUYXJnZXQoKSwgbGV2ZWwpLnZh
bGlkKCkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgICB9CkBAIC04MCw3ICs4Miw3IEBAIGJvb2wgQ3ViZVRleHR1cmVIYXNVbnNwZWNpZmll
ZExldmVsMEZhY2UKICAgICBBU1NFUlQodGV4dHVyZS0+Z2V0VGFyZ2V0KCkgPT0gR0xfVEVYVFVS
RV9DVUJFX01BUCk7CiAgICAgZm9yIChHTGVudW0gZmFjZSA9IGdsOjpGaXJzdEN1YmVNYXBUZXh0
dXJlVGFyZ2V0OyBmYWNlIDw9IGdsOjpMYXN0Q3ViZU1hcFRleHR1cmVUYXJnZXQ7IGZhY2UrKykK
ICAgICB7Ci0gICAgICAgIGlmICh0ZXh0dXJlLT5nZXRJbnRlcm5hbEZvcm1hdChmYWNlLCAwKSA9
PSBHTF9OT05FKQorICAgICAgICBpZiAoIXRleHR1cmUtPmdldEZvcm1hdChmYWNlLCAwKS52YWxp
ZCgpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAt
MTIyLDYgKzEyNCwzNCBAQCBlZ2w6OkVycm9yIFZhbGlkYXRlU3RyZWFtQXR0cmlidXRlKGNvbnN0
CiAgICAgfQogICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKIH0KKworZWdsOjpF
cnJvciBWYWxpZGF0ZUNyZWF0ZUltYWdlS0hSTWlwTGV2ZWxDb21tb24oZ2w6OkNvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6VGV4dHVyZSAqdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVHTEF0dHJpYiBsZXZlbCkKK3sKKyAgICAvLyBOb3RlIHRoYXQg
dGhlIHNwZWMgRUdMX0tIUl9jcmVhdGVfaW1hZ2Ugc3BlYyBkb2VzIG5vdCBleHBsaWNpdGx5IHNw
ZWNpZnkgYW4gZXJyb3IKKyAgICAvLyB3aGVuIHRoZSBsZXZlbCBpcyBvdXRzaWRlIHRoZSBiYXNl
L21heCBsZXZlbCByYW5nZSwgYnV0IGl0IGRvZXMgbWVudGlvbiB0aGF0IHRoZQorICAgIC8vIGxl
dmVsICJtdXN0IGJlIGEgcGFydCBvZiB0aGUgY29tcGxldGUgdGV4dHVyZSBvYmplY3QgPGJ1ZmZl
cj4iLiBJdCBjYW4gYmUgYXJndWVkCisgICAgLy8gdGhhdCBvdXQtb2YtcmFuZ2UgbGV2ZWxzIGFy
ZSBub3QgYSBwYXJ0IG9mIHRoZSBjb21wbGV0ZSB0ZXh0dXJlLgorICAgIGNvbnN0IEdMdWludCBl
ZmZlY3RpdmVCYXNlTGV2ZWwgPSB0ZXh0dXJlLT5nZXRUZXh0dXJlU3RhdGUoKS5nZXRFZmZlY3Rp
dmVCYXNlTGV2ZWwoKTsKKyAgICBpZiAobGV2ZWwgPiAwICYmCisgICAgICAgICghdGV4dHVyZS0+
aXNNaXBtYXBDb21wbGV0ZSgpIHx8IHN0YXRpY19jYXN0PEdMdWludD4obGV2ZWwpIDwgZWZmZWN0
aXZlQmFzZUxldmVsIHx8CisgICAgICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+KGxldmVsKSA+IHRl
eHR1cmUtPmdldFRleHR1cmVTdGF0ZSgpLmdldE1pcG1hcE1heExldmVsKCkpKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsICJ0ZXh0dXJlIG11c3Qg
YmUgY29tcGxldGUgaWYgbGV2ZWwgaXMgbm9uLXplcm8uIik7CisgICAgfQorCisgICAgaWYgKGxl
dmVsID09IDAgJiYgIXRleHR1cmUtPmlzTWlwbWFwQ29tcGxldGUoKSAmJgorICAgICAgICBUZXh0
dXJlSGFzTm9uWmVyb01pcExldmVsc1NwZWNpZmllZChjb250ZXh0LCB0ZXh0dXJlKSkKKyAgICB7
CisgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfUEFSQU1FVEVSLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAiaWYgbGV2ZWwgaXMgemVybyBhbmQgdGhlIHRleHR1cmUgaXMgaW5j
b21wbGV0ZSwgaXQgbXVzdCBoYXZlIG5vIG1pcCAiCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICJsZXZlbHMgc3BlY2lmaWVkIGV4Y2VwdCB6ZXJvLiIpOworICAgIH0KKworICAgIHJldHVybiBl
Z2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlCiAKIG5hbWVzcGFj
ZSBlZ2wKQEAgLTE0NCwxNiArMTc0LDE3IEBAIEVycm9yIFZhbGlkYXRlRGlzcGxheShjb25zdCBE
aXNwbGF5ICpkaXMKICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9OT1RfSU5JVElBTElaRUQsICJk
aXNwbGF5IGlzIG5vdCBpbml0aWFsaXplZC4iKTsKICAgICB9CiAKKyAgICBpZiAoZGlzcGxheS0+
aXNEZXZpY2VMb3N0KCkpCisgICAgeworICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0NPTlRFWFRf
TE9TVCwgImRpc3BsYXkgaGFkIGEgY29udGV4dCBsb3NzIik7CisgICAgfQorCiAgICAgcmV0dXJu
IEVycm9yKEVHTF9TVUNDRVNTKTsKIH0KIAogRXJyb3IgVmFsaWRhdGVTdXJmYWNlKGNvbnN0IERp
c3BsYXkgKmRpc3BsYXksIFN1cmZhY2UgKnN1cmZhY2UpCiB7Ci0gICAgRXJyb3IgZXJyb3IgPSBW
YWxpZGF0ZURpc3BsYXkoZGlzcGxheSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKFZhbGlkYXRlRGlz
cGxheShkaXNwbGF5KSk7CiAKICAgICBpZiAoIWRpc3BsYXktPmlzVmFsaWRTdXJmYWNlKHN1cmZh
Y2UpKQogICAgIHsKQEAgLTE2NSwxMSArMTk2LDcgQEAgRXJyb3IgVmFsaWRhdGVTdXJmYWNlKGNv
bnN0IERpc3BsYXkgKmRpcwogCiBFcnJvciBWYWxpZGF0ZUNvbmZpZyhjb25zdCBEaXNwbGF5ICpk
aXNwbGF5LCBjb25zdCBDb25maWcgKmNvbmZpZykKIHsKLSAgICBFcnJvciBlcnJvciA9IFZhbGlk
YXRlRGlzcGxheShkaXNwbGF5KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkoVmFsaWRhdGVEaXNwbGF5
KGRpc3BsYXkpKTsKIAogICAgIGlmICghZGlzcGxheS0+aXNWYWxpZENvbmZpZyhjb25maWcpKQog
ICAgIHsKQEAgLTE4MSwxMSArMjA4LDcgQEAgRXJyb3IgVmFsaWRhdGVDb25maWcoY29uc3QgRGlz
cGxheSAqZGlzcAogCiBFcnJvciBWYWxpZGF0ZUNvbnRleHQoY29uc3QgRGlzcGxheSAqZGlzcGxh
eSwgZ2w6OkNvbnRleHQgKmNvbnRleHQpCiB7Ci0gICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZURp
c3BsYXkoZGlzcGxheSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKFZhbGlkYXRlRGlzcGxheShkaXNw
bGF5KSk7CiAKICAgICBpZiAoIWRpc3BsYXktPmlzVmFsaWRDb250ZXh0KGNvbnRleHQpKQogICAg
IHsKQEAgLTE5NywxMSArMjIwLDcgQEAgRXJyb3IgVmFsaWRhdGVDb250ZXh0KGNvbnN0IERpc3Bs
YXkgKmRpcwogCiBFcnJvciBWYWxpZGF0ZUltYWdlKGNvbnN0IERpc3BsYXkgKmRpc3BsYXksIGNv
bnN0IEltYWdlICppbWFnZSkKIHsKLSAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlRGlzcGxheShk
aXNwbGF5KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkoVmFsaWRhdGVEaXNwbGF5KGRpc3BsYXkpKTsK
IAogICAgIGlmICghZGlzcGxheS0+aXNWYWxpZEltYWdlKGltYWdlKSkKICAgICB7CkBAIC0yMTMs
MTEgKzIzMiw3IEBAIEVycm9yIFZhbGlkYXRlSW1hZ2UoY29uc3QgRGlzcGxheSAqZGlzcGwKIAog
RXJyb3IgVmFsaWRhdGVTdHJlYW0oY29uc3QgRGlzcGxheSAqZGlzcGxheSwgY29uc3QgU3RyZWFt
ICpzdHJlYW0pCiB7Ci0gICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZURpc3BsYXkoZGlzcGxheSk7
Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsK
LSAgICB9CisgICAgQU5HTEVfVFJZKFZhbGlkYXRlRGlzcGxheShkaXNwbGF5KSk7CiAKICAgICBj
b25zdCBEaXNwbGF5RXh0ZW5zaW9ucyAmZGlzcGxheUV4dGVuc2lvbnMgPSBkaXNwbGF5LT5nZXRF
eHRlbnNpb25zKCk7CiAgICAgaWYgKCFkaXNwbGF5RXh0ZW5zaW9ucy5zdHJlYW0pCkBAIC0yMzYs
MTEgKzI1MSw3IEBAIEVycm9yIFZhbGlkYXRlU3RyZWFtKGNvbnN0IERpc3BsYXkgKmRpc3AKIEVy
cm9yIFZhbGlkYXRlQ3JlYXRlQ29udGV4dChEaXNwbGF5ICpkaXNwbGF5LCBDb25maWcgKmNvbmZp
Z3VyYXRpb24sIGdsOjpDb250ZXh0ICpzaGFyZUNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgQXR0cmlidXRlTWFwJiBhdHRyaWJ1dGVzKQogewotICAgIEVycm9yIGVy
cm9yID0gVmFsaWRhdGVDb25maWcoZGlzcGxheSwgY29uZmlndXJhdGlvbik7Ci0gICAgaWYgKGVy
cm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAg
QU5HTEVfVFJZKFZhbGlkYXRlQ29uZmlnKGRpc3BsYXksIGNvbmZpZ3VyYXRpb24pKTsKIAogICAg
IC8vIEdldCB0aGUgcmVxdWVzdGVkIGNsaWVudCB2ZXJzaW9uIChkZWZhdWx0IGlzIDEpIGFuZCBj
aGVjayBpdCBpcyAyIG9yIDMuCiAgICAgRUdMQXR0cmliIGNsaWVudE1ham9yVmVyc2lvbiA9IDE7
CkBAIC0zMTYsMTkgKzMyNyw2OCBAQCBFcnJvciBWYWxpZGF0ZUNyZWF0ZUNvbnRleHQoRGlzcGxh
eSAqZGlzCiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAg
ICBjYXNlIEVHTF9DT05URVhUX1dFQkdMX0NPTVBBVElCSUxJVFlfQU5HTEU6CisgICAgICAgICAg
ICAgIGlmICghZGlzcGxheS0+Z2V0RXh0ZW5zaW9ucygpLmNyZWF0ZUNvbnRleHRXZWJHTENvbXBh
dGliaWxpdHkpCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBFcnJv
cihFR0xfQkFEX0FUVFJJQlVURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXR0
cmlidXRlIEVHTF9DT05URVhUX1dFQkdMX0NPTVBBVElCSUxJVFlfQU5HTEUgcmVxdWlyZXMgIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFR0xfQU5HTEVfY3JlYXRlX2NvbnRleHRf
d2ViZ2xfY29tcGF0aWJpbGl0eS4iKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBp
ZiAodmFsdWUgIT0gRUdMX1RSVUUgJiYgdmFsdWUgIT0gRUdMX0ZBTFNFKQorICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3IoCisgICAgICAgICAgICAgICAgICAg
ICAgRUdMX0JBRF9BVFRSSUJVVEUsCisgICAgICAgICAgICAgICAgICAgICAgIkVHTF9DT05URVhU
X1dFQkdMX0NPTVBBVElCSUxJVFlfQU5HTEUgbXVzdCBiZSBFR0xfVFJVRSBvciBFR0xfRkFMU0Uu
Iik7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBj
YXNlIEVHTF9DT05URVhUX0JJTkRfR0VORVJBVEVTX1JFU09VUkNFX0NIUk9NSVVNOgorICAgICAg
ICAgICAgICBpZiAoIWRpc3BsYXktPmdldEV4dGVuc2lvbnMoKS5jcmVhdGVDb250ZXh0QmluZEdl
bmVyYXRlc1Jlc291cmNlKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICByZXR1
cm4gRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkF0dHJpYnV0ZSBFR0xfQ09OVEVYVF9CSU5EX0dFTkVSQVRFU19SRVNPVVJDRV9DSFJPTUlV
TSByZXF1aXJlcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVHTF9DSFJPTUlV
TV9jcmVhdGVfY29udGV4dF9iaW5kX2dlbmVyYXRlc19yZXNvdXJjZS4iKTsKKyAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICBpZiAodmFsdWUgIT0gRUdMX1RSVUUgJiYgdmFsdWUgIT0gRUdM
X0ZBTFNFKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3Io
RUdMX0JBRF9BVFRSSUJVVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVHTF9D
T05URVhUX0JJTkRfR0VORVJBVEVTX1JFU09VUkNFX0NIUk9NSVVNIG11c3QgYmUgRUdMX1RSVUUg
b3IgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFR0xfRkFMU0UuIik7CisgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQVRUUklCVVRFKTsKICAgICAgICAgfQog
ICAgIH0KIAotICAgIGlmICgoY2xpZW50TWFqb3JWZXJzaW9uICE9IDIgJiYgY2xpZW50TWFqb3JW
ZXJzaW9uICE9IDMpIHx8IGNsaWVudE1pbm9yVmVyc2lvbiAhPSAwKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIEVycm9yKEVHTF9CQURfQ09ORklHKTsKLSAgICB9Ci0KLSAgICBpZiAoY2xpZW50TWFq
b3JWZXJzaW9uID09IDMgJiYgIShjb25maWd1cmF0aW9uLT5jb25mb3JtYW50ICYgRUdMX09QRU5H
TF9FUzNfQklUX0tIUikpCisgICAgc3dpdGNoIChjbGllbnRNYWpvclZlcnNpb24pCiAgICAgewot
ICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9DT05GSUcpOworICAgICAgICBjYXNlIDI6Cisg
ICAgICAgICAgICBpZiAoY2xpZW50TWlub3JWZXJzaW9uICE9IDApCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQ09ORklHKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICBpZiAo
Y2xpZW50TWlub3JWZXJzaW9uICE9IDAgJiYgY2xpZW50TWlub3JWZXJzaW9uICE9IDEpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQ09ORklHKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghKGNvbmZpZ3VyYXRpb24tPmNvbmZvcm1h
bnQgJiBFR0xfT1BFTkdMX0VTM19CSVRfS0hSKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9DT05GSUcpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKGRpc3BsYXktPmdldE1heFN1cHBvcnRlZEVTVmVyc2lvbigpIDwKKyAgICAgICAg
ICAgICAgICBnbDo6VmVyc2lvbihzdGF0aWNfY2FzdDxHTHVpbnQ+KGNsaWVudE1ham9yVmVyc2lv
biksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0x1aW50PihjbGll
bnRNaW5vclZlcnNpb24pKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
RXJyb3IoRUdMX0JBRF9DT05GSUcsICJSZXF1ZXN0ZWQgR0xFUyB2ZXJzaW9uIGlzIG5vdCBzdXBw
b3J0ZWQuIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX0NPTkZJRyk7CisgICAgICAg
ICAgICBicmVhazsKICAgICB9CiAKICAgICAvLyBOb3RlOiBFR0xfQ09OVEVYVF9PUEVOR0xfRk9S
V0FSRF9DT01QQVRJQkxFX0JJVF9LSFIgZG9lcyBub3QgYXBwbHkgdG8gRVMKQEAgLTM2Myw3ICs0
MjMsOCBAQCBFcnJvciBWYWxpZGF0ZUNyZWF0ZUNvbnRleHQoRGlzcGxheSAqZGlzCiAgICAgICAg
ICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9NQVRDSCk7CiAgICAgICAgIH0KIAotICAgICAgICBp
ZiAoc2hhcmVDb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgIT0gY2xpZW50TWFqb3JWZXJzaW9u
KQorICAgICAgICBpZiAoc2hhcmVDb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSAhPSBj
bGllbnRNYWpvclZlcnNpb24gfHwKKyAgICAgICAgICAgIHNoYXJlQ29udGV4dC0+Z2V0Q2xpZW50
TWlub3JWZXJzaW9uKCkgIT0gY2xpZW50TWlub3JWZXJzaW9uKQogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9DT05URVhUKTsKICAgICAgICAgfQpAQCAtMzc1LDEx
ICs0MzYsNyBAQCBFcnJvciBWYWxpZGF0ZUNyZWF0ZUNvbnRleHQoRGlzcGxheSAqZGlzCiBFcnJv
ciBWYWxpZGF0ZUNyZWF0ZVdpbmRvd1N1cmZhY2UoRGlzcGxheSAqZGlzcGxheSwgQ29uZmlnICpj
b25maWcsIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZU1hcCYgYXR0cmlidXRlcykKIHsKLSAgICBFcnJv
ciBlcnJvciA9IFZhbGlkYXRlQ29uZmlnKGRpc3BsYXksIGNvbmZpZyk7Ci0gICAgaWYgKGVycm9y
LmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5H
TEVfVFJZKFZhbGlkYXRlQ29uZmlnKGRpc3BsYXksIGNvbmZpZykpOwogCiAgICAgaWYgKCFkaXNw
bGF5LT5pc1ZhbGlkTmF0aXZlV2luZG93KHdpbmRvdykpCiAgICAgewpAQCAtNDc1LDExICs1MzIs
NyBAQCBFcnJvciBWYWxpZGF0ZUNyZWF0ZVdpbmRvd1N1cmZhY2UoRGlzcGxhCiAKIEVycm9yIFZh
bGlkYXRlQ3JlYXRlUGJ1ZmZlclN1cmZhY2UoRGlzcGxheSAqZGlzcGxheSwgQ29uZmlnICpjb25m
aWcsIGNvbnN0IEF0dHJpYnV0ZU1hcCYgYXR0cmlidXRlcykKIHsKLSAgICBFcnJvciBlcnJvciA9
IFZhbGlkYXRlQ29uZmlnKGRpc3BsYXksIGNvbmZpZyk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3Io
KSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKFZh
bGlkYXRlQ29uZmlnKGRpc3BsYXksIGNvbmZpZykpOwogCiAgICAgY29uc3QgRGlzcGxheUV4dGVu
c2lvbnMgJmRpc3BsYXlFeHRlbnNpb25zID0gZGlzcGxheS0+Z2V0RXh0ZW5zaW9ucygpOwogCkBA
IC01ODMsMTEgKzYzNiw3IEBAIEVycm9yIFZhbGlkYXRlQ3JlYXRlUGJ1ZmZlclN1cmZhY2UoRGlz
cGwKIEVycm9yIFZhbGlkYXRlQ3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoRGlzcGxheSAq
ZGlzcGxheSwgRUdMZW51bSBidWZ0eXBlLCBFR0xDbGllbnRCdWZmZXIgYnVmZmVyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWcgKmNvbmZpZywgY29u
c3QgQXR0cmlidXRlTWFwJiBhdHRyaWJ1dGVzKQogewotICAgIEVycm9yIGVycm9yID0gVmFsaWRh
dGVDb25maWcoZGlzcGxheSwgY29uZmlnKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkoVmFsaWRhdGVD
b25maWcoZGlzcGxheSwgY29uZmlnKSk7CiAKICAgICBjb25zdCBEaXNwbGF5RXh0ZW5zaW9ucyAm
ZGlzcGxheUV4dGVuc2lvbnMgPSBkaXNwbGF5LT5nZXRFeHRlbnNpb25zKCk7CiAKQEAgLTc1Niwx
MSArODA1LDcgQEAgRXJyb3IgVmFsaWRhdGVDcmVhdGVJbWFnZUtIUihjb25zdCBEaXNwbAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgYnVmZmVyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYnV0ZXMpCiB7
Ci0gICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZUNvbnRleHQoZGlzcGxheSwgY29udGV4dCk7Ci0g
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAg
ICB9CisgICAgQU5HTEVfVFJZKFZhbGlkYXRlQ29udGV4dChkaXNwbGF5LCBjb250ZXh0KSk7CiAK
ICAgICBjb25zdCBEaXNwbGF5RXh0ZW5zaW9ucyAmZGlzcGxheUV4dGVuc2lvbnMgPSBkaXNwbGF5
LT5nZXRFeHRlbnNpb25zKCk7CiAKQEAgLTg2MSwxOSArOTA2LDcgQEAgRXJyb3IgVmFsaWRhdGVD
cmVhdGVJbWFnZUtIUihjb25zdCBEaXNwbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
dGFyZ2V0IDJEIHRleHR1cmUgZG9lcyBub3QgaGF2ZSBhIHZhbGlkIHNpemUgYXQgc3BlY2lmaWVk
IGxldmVsLiIpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAobGV2ZWwgPiAwICYm
ICghdGV4dHVyZS0+aXNNaXBtYXBDb21wbGV0ZSgpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxzaXplX3Q+KGxldmVsKSA+PSB0ZXh0dXJlLT5nZXRNaXBDb21w
bGV0ZUxldmVscygpKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRXJy
b3IoRUdMX0JBRF9QQVJBTUVURVIsICJ0ZXh0dXJlIG11c3QgYmUgY29tcGxldGUgaWYgbGV2ZWwg
aXMgbm9uLXplcm8uIik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChsZXZlbCA9
PSAwICYmICF0ZXh0dXJlLT5pc01pcG1hcENvbXBsZXRlKCkgJiYKLSAgICAgICAgICAgICAgICBU
ZXh0dXJlSGFzTm9uWmVyb01pcExldmVsc1NwZWNpZmllZChjb250ZXh0LCB0ZXh0dXJlKSkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9QQVJBTUVU
RVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpZiBsZXZlbCBpcyB6ZXJvIGFuZCB0
aGUgdGV4dHVyZSBpcyBpbmNvbXBsZXRlLCBpdCBtdXN0IGhhdmUgbm8gbWlwICIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImxldmVscyBzcGVjaWZpZWQgZXhjZXB0IHplcm8uIik7Ci0g
ICAgICAgICAgICB9CisgICAgICAgICAgICBBTkdMRV9UUlkoVmFsaWRhdGVDcmVhdGVJbWFnZUtI
Uk1pcExldmVsQ29tbW9uKGNvbnRleHQsIHRleHR1cmUsIGxldmVsKSk7CiAgICAgICAgIH0KICAg
ICAgICAgYnJlYWs7CiAKQEAgLTkxNywxOSArOTUwLDcgQEAgRXJyb3IgVmFsaWRhdGVDcmVhdGVJ
bWFnZUtIUihjb25zdCBEaXNwbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW5kIGZh
Y2UuIik7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChsZXZlbCA+IDAgJiYgKCF0
ZXh0dXJlLT5pc01pcG1hcENvbXBsZXRlKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PHNpemVfdD4obGV2ZWwpID49IHRleHR1cmUtPmdldE1pcENvbXBsZXRl
TGV2ZWxzKCkpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBFcnJvcihF
R0xfQkFEX1BBUkFNRVRFUiwgInRleHR1cmUgbXVzdCBiZSBjb21wbGV0ZSBpZiBsZXZlbCBpcyBu
b24temVyby4iKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGxldmVsID09IDAg
JiYgIXRleHR1cmUtPmlzTWlwbWFwQ29tcGxldGUoKSAmJgotICAgICAgICAgICAgICAgIFRleHR1
cmVIYXNOb25aZXJvTWlwTGV2ZWxzU3BlY2lmaWVkKGNvbnRleHQsIHRleHR1cmUpKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlmIGxldmVsIGlzIHplcm8gYW5kIHRoZSB0
ZXh0dXJlIGlzIGluY29tcGxldGUsIGl0IG11c3QgaGF2ZSBubyBtaXAgIgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAibGV2ZWxzIHNwZWNpZmllZCBleGNlcHQgemVyby4iKTsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIEFOR0xFX1RSWShWYWxpZGF0ZUNyZWF0ZUltYWdlS0hSTWlw
TGV2ZWxDb21tb24oY29udGV4dCwgdGV4dHVyZSwgbGV2ZWwpKTsKIAogICAgICAgICAgICAgaWYg
KGxldmVsID09IDAgJiYgIXRleHR1cmUtPmlzTWlwbWFwQ29tcGxldGUoKSAmJgogICAgICAgICAg
ICAgICAgIEN1YmVUZXh0dXJlSGFzVW5zcGVjaWZpZWRMZXZlbDBGYWNlKHRleHR1cmUpKQpAQCAt
OTg0LDE5ICsxMDA1LDcgQEAgRXJyb3IgVmFsaWRhdGVDcmVhdGVJbWFnZUtIUihjb25zdCBEaXNw
bAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2Zmc2V0IGF0IHRoZSBzcGVjaWZpZWQg
bGV2ZWwuIik7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChsZXZlbCA+IDAgJiYg
KCF0ZXh0dXJlLT5pc01pcG1hcENvbXBsZXRlKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PHNpemVfdD4obGV2ZWwpID49IHRleHR1cmUtPmdldE1pcENvbXBs
ZXRlTGV2ZWxzKCkpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBFcnJv
cihFR0xfQkFEX1BBUkFNRVRFUiwgInRleHR1cmUgbXVzdCBiZSBjb21wbGV0ZSBpZiBsZXZlbCBp
cyBub24temVyby4iKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGxldmVsID09
IDAgJiYgIXRleHR1cmUtPmlzTWlwbWFwQ29tcGxldGUoKSAmJgotICAgICAgICAgICAgICAgIFRl
eHR1cmVIYXNOb25aZXJvTWlwTGV2ZWxzU3BlY2lmaWVkKGNvbnRleHQsIHRleHR1cmUpKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX1BBUkFNRVRF
UiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlmIGxldmVsIGlzIHplcm8gYW5kIHRo
ZSB0ZXh0dXJlIGlzIGluY29tcGxldGUsIGl0IG11c3QgaGF2ZSBubyBtaXAgIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAibGV2ZWxzIHNwZWNpZmllZCBleGNlcHQgemVyby4iKTsKLSAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIEFOR0xFX1RSWShWYWxpZGF0ZUNyZWF0ZUltYWdlS0hS
TWlwTGV2ZWxDb21tb24oY29udGV4dCwgdGV4dHVyZSwgbGV2ZWwpKTsKICAgICAgICAgfQogICAg
ICAgICBicmVhazsKIApAQCAtMTA0MywxMSArMTA1Miw3IEBAIEVycm9yIFZhbGlkYXRlQ3JlYXRl
SW1hZ2VLSFIoY29uc3QgRGlzcGwKIAogRXJyb3IgVmFsaWRhdGVEZXN0cm95SW1hZ2VLSFIoY29u
c3QgRGlzcGxheSAqZGlzcGxheSwgY29uc3QgSW1hZ2UgKmltYWdlKQogewotICAgIEVycm9yIGVy
cm9yID0gVmFsaWRhdGVJbWFnZShkaXNwbGF5LCBpbWFnZSk7Ci0gICAgaWYgKGVycm9yLmlzRXJy
b3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZ
KFZhbGlkYXRlSW1hZ2UoZGlzcGxheSwgaW1hZ2UpKTsKIAogICAgIGlmICghZGlzcGxheS0+Z2V0
RXh0ZW5zaW9ucygpLmltYWdlQmFzZSAmJiAhZGlzcGxheS0+Z2V0RXh0ZW5zaW9ucygpLmltYWdl
KQogICAgIHsKQEAgLTExMTQsMTEgKzExMTksNyBAQCBFcnJvciBWYWxpZGF0ZVJlbGVhc2VEZXZp
Y2VBTkdMRShEZXZpY2UgCiAKIEVycm9yIFZhbGlkYXRlQ3JlYXRlU3RyZWFtS0hSKGNvbnN0IERp
c3BsYXkgKmRpc3BsYXksIGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0cmlidXRlcykKIHsKLSAgICBF
cnJvciBlcnJvciA9IFZhbGlkYXRlRGlzcGxheShkaXNwbGF5KTsKLSAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9U
UlkoVmFsaWRhdGVEaXNwbGF5KGRpc3BsYXkpKTsKIAogICAgIGNvbnN0IERpc3BsYXlFeHRlbnNp
b25zICZkaXNwbGF5RXh0ZW5zaW9ucyA9IGRpc3BsYXktPmdldEV4dGVuc2lvbnMoKTsKICAgICBp
ZiAoIWRpc3BsYXlFeHRlbnNpb25zLnN0cmVhbSkKQEAgLTExMzEsMTEgKzExMzIsNyBAQCBFcnJv
ciBWYWxpZGF0ZUNyZWF0ZVN0cmVhbUtIUihjb25zdCBEaXNwCiAgICAgICAgIEVHTEF0dHJpYiBh
dHRyaWJ1dGUgPSBhdHRyaWJ1dGVJdGVyLmZpcnN0OwogICAgICAgICBFR0xBdHRyaWIgdmFsdWUg
ICAgID0gYXR0cmlidXRlSXRlci5zZWNvbmQ7CiAKLSAgICAgICAgZXJyb3IgPSBWYWxpZGF0ZVN0
cmVhbUF0dHJpYnV0ZShhdHRyaWJ1dGUsIHZhbHVlLCBkaXNwbGF5RXh0ZW5zaW9ucyk7Ci0gICAg
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBl
cnJvcjsKLSAgICAgICAgfQorICAgICAgICBBTkdMRV9UUlkoVmFsaWRhdGVTdHJlYW1BdHRyaWJ1
dGUoYXR0cmlidXRlLCB2YWx1ZSwgZGlzcGxheUV4dGVuc2lvbnMpKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gRXJyb3IoRUdMX1NVQ0NFU1MpOwpAQCAtMTE0MywxMiArMTE0MCw3IEBAIEVycm9yIFZh
bGlkYXRlQ3JlYXRlU3RyZWFtS0hSKGNvbnN0IERpc3AKIAogRXJyb3IgVmFsaWRhdGVEZXN0cm95
U3RyZWFtS0hSKGNvbnN0IERpc3BsYXkgKmRpc3BsYXksIGNvbnN0IFN0cmVhbSAqc3RyZWFtKQog
ewotICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVTdHJlYW0oZGlzcGxheSwgc3RyZWFtKTsKLSAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAg
IH0KLQorICAgIEFOR0xFX1RSWShWYWxpZGF0ZVN0cmVhbShkaXNwbGF5LCBzdHJlYW0pKTsKICAg
ICByZXR1cm4gRXJyb3IoRUdMX1NVQ0NFU1MpOwogfQogCkBAIC0xMTU3LDExICsxMTQ5LDcgQEAg
RXJyb3IgVmFsaWRhdGVTdHJlYW1BdHRyaWJLSFIoY29uc3QgRGlzcAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRUdMaW50IGF0dHJpYnV0ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVHTGludCB2YWx1ZSkKIHsKLSAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlU3RyZWFt
KGRpc3BsYXksIHN0cmVhbSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKFZhbGlkYXRlU3RyZWFtKGRp
c3BsYXksIHN0cmVhbSkpOwogCiAgICAgaWYgKHN0cmVhbS0+Z2V0U3RhdGUoKSA9PSBFR0xfU1RS
RUFNX1NUQVRFX0RJU0NPTk5FQ1RFRF9LSFIpCiAgICAgewpAQCAtMTE3NiwxMSArMTE2NCw3IEBA
IEVycm9yIFZhbGlkYXRlUXVlcnlTdHJlYW1LSFIoY29uc3QgRGlzcGwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRUdMZW51bSBhdHRyaWJ1dGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVHTGludCAqdmFsdWUpCiB7Ci0gICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZVN0cmVh
bShkaXNwbGF5LCBzdHJlYW0pOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAg
ICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShWYWxpZGF0ZVN0cmVhbShk
aXNwbGF5LCBzdHJlYW0pKTsKIAogICAgIHN3aXRjaCAoYXR0cmlidXRlKQogICAgIHsKQEAgLTEy
MDUsMTEgKzExODksNyBAQCBFcnJvciBWYWxpZGF0ZVF1ZXJ5U3RyZWFtdTY0S0hSKGNvbnN0IERp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGVudW0gYXR0cmlidXRlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0x1aW50NjRLSFIgKnZhbHVlKQogewotICAg
IEVycm9yIGVycm9yID0gVmFsaWRhdGVTdHJlYW0oZGlzcGxheSwgc3RyZWFtKTsKLSAgICBpZiAo
ZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAg
ICBBTkdMRV9UUlkoVmFsaWRhdGVTdHJlYW0oZGlzcGxheSwgc3RyZWFtKSk7CiAKICAgICBzd2l0
Y2ggKGF0dHJpYnV0ZSkKICAgICB7CkBAIC0xMjI3LDE3ICsxMjA3LDggQEAgRXJyb3IgVmFsaWRh
dGVTdHJlYW1Db25zdW1lckdMVGV4dHVyZUV4dAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmVhbSAqc3RyZWFt
KQogewotICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVEaXNwbGF5KGRpc3BsYXkpOwotICAgIGlm
IChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQot
Ci0gICAgZXJyb3IgPSBWYWxpZGF0ZUNvbnRleHQoZGlzcGxheSwgY29udGV4dCk7Ci0gICAgaWYg
KGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Cisg
ICAgQU5HTEVfVFJZKFZhbGlkYXRlRGlzcGxheShkaXNwbGF5KSk7CisgICAgQU5HTEVfVFJZKFZh
bGlkYXRlQ29udGV4dChkaXNwbGF5LCBjb250ZXh0KSk7CiAKICAgICBjb25zdCBEaXNwbGF5RXh0
ZW5zaW9ucyAmZGlzcGxheUV4dGVuc2lvbnMgPSBkaXNwbGF5LT5nZXRFeHRlbnNpb25zKCk7CiAg
ICAgaWYgKCFkaXNwbGF5RXh0ZW5zaW9ucy5zdHJlYW1Db25zdW1lckdMVGV4dHVyZSkKQEAgLTEy
NDUsNiArMTIxNiwxMSBAQCBFcnJvciBWYWxpZGF0ZVN0cmVhbUNvbnN1bWVyR0xUZXh0dXJlRXh0
CiAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX0FDQ0VTUywgIlN0cmVhbSBjb25zdW1lciBl
eHRlbnNpb24gbm90IGFjdGl2ZSIpOwogICAgIH0KIAorICAgIGlmICghY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLmVnbFN0cmVhbUNvbnN1bWVyRXh0ZXJuYWwpCisgICAgeworICAgICAgICByZXR1
cm4gRXJyb3IoRUdMX0JBRF9BQ0NFU1MsICJFR0wgc3RyZWFtIGNvbnN1bWVyIGV4dGVybmFsIEdM
IGV4dGVuc2lvbiBub3QgZW5hYmxlZCIpOworICAgIH0KKwogICAgIGlmIChzdHJlYW0gPT0gRUdM
X05PX1NUUkVBTV9LSFIgfHwgIWRpc3BsYXktPmlzVmFsaWRTdHJlYW0oc3RyZWFtKSkKICAgICB7
CiAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX1NUUkVBTV9LSFIsICJJbnZhbGlkIHN0cmVh
bSIpOwpAQCAtMTI1NSw2ICsxMjMxLDEzIEBAIEVycm9yIFZhbGlkYXRlU3RyZWFtQ29uc3VtZXJH
TFRleHR1cmVFeHQKICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfU1RBVEVfS0hSLCAiSW52
YWxpZCBzdHJlYW0gc3RhdGUiKTsKICAgICB9CiAKKyAgICAvLyBMb29rdXAgdGhlIHRleHR1cmUg
YW5kIGVuc3VyZSBpdCBpcyBjb3JyZWN0CisgICAgZ2w6OlRleHR1cmUgKnRleHR1cmUgPSBjb250
ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VGFyZ2V0VGV4dHVyZShHTF9URVhUVVJFX0VYVEVSTkFMX09F
Uyk7CisgICAgaWYgKHRleHR1cmUgPT0gbnVsbHB0ciB8fCB0ZXh0dXJlLT5nZXRJZCgpID09IDAp
CisgICAgeworICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9BQ0NFU1MsICJObyBleHRlcm5h
bCB0ZXh0dXJlIGJvdW5kIik7CisgICAgfQorCiAgICAgcmV0dXJuIEVycm9yKEVHTF9TVUNDRVNT
KTsKIH0KIApAQCAtMTI2MiwxNyArMTI0NSw3IEBAIEVycm9yIFZhbGlkYXRlU3RyZWFtQ29uc3Vt
ZXJBY3F1aXJlS0hSKGMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGds
OjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgU3RyZWFtICpzdHJlYW0pCiB7Ci0gICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZURp
c3BsYXkoZGlzcGxheSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBlcnJvcjsKLSAgICB9Ci0KLSAgICBlcnJvciA9IFZhbGlkYXRlQ29udGV4dChkaXNw
bGF5LCBjb250ZXh0KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkoVmFsaWRhdGVEaXNwbGF5KGRpc3Bs
YXkpKTsKIAogICAgIGNvbnN0IERpc3BsYXlFeHRlbnNpb25zICZkaXNwbGF5RXh0ZW5zaW9ucyA9
IGRpc3BsYXktPmdldEV4dGVuc2lvbnMoKTsKICAgICBpZiAoIWRpc3BsYXlFeHRlbnNpb25zLnN0
cmVhbUNvbnN1bWVyR0xUZXh0dXJlKQpAQCAtMTI4NSw2ICsxMjU4LDI3IEBAIEVycm9yIFZhbGlk
YXRlU3RyZWFtQ29uc3VtZXJBY3F1aXJlS0hSKGMKICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9C
QURfU1RSRUFNX0tIUiwgIkludmFsaWQgc3RyZWFtIik7CiAgICAgfQogCisgICAgaWYgKCFjb250
ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQUNDRVNTLCAiTm8gR0wg
Y29udGV4dCBjdXJyZW50IHRvIGNhbGxpbmcgdGhyZWFkLiIpOworICAgIH0KKworICAgIEFOR0xF
X1RSWShWYWxpZGF0ZUNvbnRleHQoZGlzcGxheSwgY29udGV4dCkpOworCisgICAgaWYgKCFzdHJl
YW0tPmlzQ29uc3VtZXJCb3VuZFRvQ29udGV4dChjb250ZXh0KSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBFcnJvcihFR0xfQkFEX0FDQ0VTUywgIkN1cnJlbnQgR0wgY29udGV4dCBub3QgYXNzb2Np
YXRlZCB3aXRoIHN0cmVhbSBjb25zdW1lciIpOworICAgIH0KKworICAgIGlmIChzdHJlYW0tPmdl
dENvbnN1bWVyVHlwZSgpICE9IFN0cmVhbTo6Q29uc3VtZXJUeXBlOjpHTFRleHR1cmVSR0IgJiYK
KyAgICAgICAgc3RyZWFtLT5nZXRDb25zdW1lclR5cGUoKSAhPSBTdHJlYW06OkNvbnN1bWVyVHlw
ZTo6R0xUZXh0dXJlWVVWKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQUND
RVNTLCAiSW52YWxpZCBzdHJlYW0gY29uc3VtZXIgdHlwZSIpOworICAgIH0KKworICAgIC8vIE5v
dGU6IHRlY2huaWNhbGx5IEVHTF9TVFJFQU1fU1RBVEVfRU1QVFlfS0hSIGlzIGEgdmFsaWQgc3Rh
dGUgd2hlbiB0aGUgdGltZW91dCBpcyBub24temVyby4KKyAgICAvLyBIb3dldmVyLCB0aGUgdGlt
ZW91dCBpcyBlZmZlY3RpdmVseSBpZ25vcmVkIHNpbmNlIGl0IGhhcyBubyB1c2VmdWwgZnVuY3Rp
b25hbGl0eSB3aXRoIHRoZQorICAgIC8vIGN1cnJlbnQgcHJvZHVjZXJzIHRoYXQgYXJlIGltcGxl
bWVudGVkLCBzbyB3ZSBkb24ndCBhbGxvdyB0aGF0IHN0YXRlCiAgICAgaWYgKHN0cmVhbS0+Z2V0
U3RhdGUoKSAhPSBFR0xfU1RSRUFNX1NUQVRFX05FV19GUkFNRV9BVkFJTEFCTEVfS0hSICYmCiAg
ICAgICAgIHN0cmVhbS0+Z2V0U3RhdGUoKSAhPSBFR0xfU1RSRUFNX1NUQVRFX09MRF9GUkFNRV9B
VkFJTEFCTEVfS0hSKQogICAgIHsKQEAgLTEyOTgsMTcgKzEyOTIsNyBAQCBFcnJvciBWYWxpZGF0
ZVN0cmVhbUNvbnN1bWVyUmVsZWFzZUtIUihjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFN0cmVhbSAqc3RyZWFtKQogewotICAgIEVycm9yIGVycm9y
ID0gVmFsaWRhdGVEaXNwbGF5KGRpc3BsYXkpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0g
ICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQotCi0gICAgZXJyb3IgPSBWYWxpZGF0
ZUNvbnRleHQoZGlzcGxheSwgY29udGV4dCk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKFZhbGlkYXRl
RGlzcGxheShkaXNwbGF5KSk7CiAKICAgICBjb25zdCBEaXNwbGF5RXh0ZW5zaW9ucyAmZGlzcGxh
eUV4dGVuc2lvbnMgPSBkaXNwbGF5LT5nZXRFeHRlbnNpb25zKCk7CiAgICAgaWYgKCFkaXNwbGF5
RXh0ZW5zaW9ucy5zdHJlYW1Db25zdW1lckdMVGV4dHVyZSkKQEAgLTEzMjEsNiArMTMwNSwyNCBA
QCBFcnJvciBWYWxpZGF0ZVN0cmVhbUNvbnN1bWVyUmVsZWFzZUtIUihjCiAgICAgICAgIHJldHVy
biBFcnJvcihFR0xfQkFEX1NUUkVBTV9LSFIsICJJbnZhbGlkIHN0cmVhbSIpOwogICAgIH0KIAor
ICAgIGlmICghY29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX0FD
Q0VTUywgIk5vIEdMIGNvbnRleHQgY3VycmVudCB0byBjYWxsaW5nIHRocmVhZC4iKTsKKyAgICB9
CisKKyAgICBBTkdMRV9UUlkoVmFsaWRhdGVDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpKTsKKwor
ICAgIGlmICghc3RyZWFtLT5pc0NvbnN1bWVyQm91bmRUb0NvbnRleHQoY29udGV4dCkpCisgICAg
eworICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9BQ0NFU1MsICJDdXJyZW50IEdMIGNvbnRl
eHQgbm90IGFzc29jaWF0ZWQgd2l0aCBzdHJlYW0gY29uc3VtZXIiKTsKKyAgICB9CisKKyAgICBp
ZiAoc3RyZWFtLT5nZXRDb25zdW1lclR5cGUoKSAhPSBTdHJlYW06OkNvbnN1bWVyVHlwZTo6R0xU
ZXh0dXJlUkdCICYmCisgICAgICAgIHN0cmVhbS0+Z2V0Q29uc3VtZXJUeXBlKCkgIT0gU3RyZWFt
OjpDb25zdW1lclR5cGU6OkdMVGV4dHVyZVlVVikKKyAgICB7CisgICAgICAgIHJldHVybiBFcnJv
cihFR0xfQkFEX0FDQ0VTUywgIkludmFsaWQgc3RyZWFtIGNvbnN1bWVyIHR5cGUiKTsKKyAgICB9
CisKICAgICBpZiAoc3RyZWFtLT5nZXRTdGF0ZSgpICE9IEVHTF9TVFJFQU1fU1RBVEVfTkVXX0ZS
QU1FX0FWQUlMQUJMRV9LSFIgJiYKICAgICAgICAgc3RyZWFtLT5nZXRTdGF0ZSgpICE9IEVHTF9T
VFJFQU1fU1RBVEVfT0xEX0ZSQU1FX0FWQUlMQUJMRV9LSFIpCiAgICAgewpAQCAtMTMzNSwxNyAr
MTMzNyw3IEBAIEVycm9yIFZhbGlkYXRlU3RyZWFtQ29uc3VtZXJHTFRleHR1cmVFeHQKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBT
dHJlYW0gKnN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiB7Ci0gICAgRXJyb3Ig
ZXJyb3IgPSBWYWxpZGF0ZURpc3BsYXkoZGlzcGxheSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3Io
KSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Ci0KLSAgICBlcnJvciA9IFZh
bGlkYXRlQ29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigp
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQUNDRVNTLCAiSW52YWxpZCBj
b250ZXh0Iik7Ci0gICAgfQorICAgIEFOR0xFX1RSWShWYWxpZGF0ZURpc3BsYXkoZGlzcGxheSkp
OwogCiAgICAgY29uc3QgRGlzcGxheUV4dGVuc2lvbnMgJmRpc3BsYXlFeHRlbnNpb25zID0gZGlz
cGxheS0+Z2V0RXh0ZW5zaW9ucygpOwogICAgIGlmICghZGlzcGxheUV4dGVuc2lvbnMuc3RyZWFt
Q29uc3VtZXJHTFRleHR1cmUpCkBAIC0xMzUzLDE2ICsxMzQ1LDMzIEBAIEVycm9yIFZhbGlkYXRl
U3RyZWFtQ29uc3VtZXJHTFRleHR1cmVFeHQKICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURf
QUNDRVNTLCAiU3RyZWFtIGNvbnN1bWVyIGV4dGVuc2lvbiBub3QgYWN0aXZlIik7CiAgICAgfQog
CisgICAgLy8gQWx0aG91Z2ggdGVjaG5pY2FsbHkgbm90IGEgcmVxdWlyZW1lbnQgaW4gc3BlYywg
dGhlIGNvbnRleHQgbmVlZHMgdG8gYmUgY2hlY2tlZCBmb3Igc3VwcG9ydAorICAgIC8vIGZvciBl
eHRlcm5hbCB0ZXh0dXJlcyBvciBmdXR1cmUgbG9naWMgd2lsbCBjYXVzZSBhc3NlcnRhdGlvbnMu
IFRoaXMgZXh0ZW5zaW9uIGlzIGFsc28KKyAgICAvLyBlZmZlY3RpdmVseSB1c2VsZXNzIHdpdGhv
dXQgZXh0ZXJuYWwgdGV4dHVyZXMuCisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
ZWdsU3RyZWFtQ29uc3VtZXJFeHRlcm5hbCkKKyAgICB7CisgICAgICAgIHJldHVybiBFcnJvcihF
R0xfQkFEX0FDQ0VTUywgIkVHTCBzdHJlYW0gY29uc3VtZXIgZXh0ZXJuYWwgR0wgZXh0ZW5zaW9u
IG5vdCBlbmFibGVkIik7CisgICAgfQorCiAgICAgaWYgKHN0cmVhbSA9PSBFR0xfTk9fU1RSRUFN
X0tIUiB8fCAhZGlzcGxheS0+aXNWYWxpZFN0cmVhbShzdHJlYW0pKQogICAgIHsKICAgICAgICAg
cmV0dXJuIEVycm9yKEVHTF9CQURfU1RSRUFNX0tIUiwgIkludmFsaWQgc3RyZWFtIik7CiAgICAg
fQogCisgICAgaWYgKCFjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9C
QURfQUNDRVNTLCAiTm8gR0wgY29udGV4dCBjdXJyZW50IHRvIGNhbGxpbmcgdGhyZWFkLiIpOwor
ICAgIH0KKworICAgIEFOR0xFX1RSWShWYWxpZGF0ZUNvbnRleHQoZGlzcGxheSwgY29udGV4dCkp
OworCiAgICAgaWYgKHN0cmVhbS0+Z2V0U3RhdGUoKSAhPSBFR0xfU1RSRUFNX1NUQVRFX0NSRUFU
RURfS0hSKQogICAgIHsKICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfU1RBVEVfS0hSLCAi
SW52YWxpZCBzdHJlYW0gc3RhdGUiKTsKICAgICB9CiAKKyAgICBjb25zdCBnbDo6Q2FwcyAmZ2xD
YXBzID0gY29udGV4dC0+Z2V0Q2FwcygpOworCiAgICAgRUdMQXR0cmliIGNvbG9yQnVmZmVyVHlw
ZSA9IEVHTF9SR0JfQlVGRkVSOwogICAgIEVHTEF0dHJpYiBwbGFuZUNvdW50ICAgICAgPSAtMTsK
ICAgICBFR0xBdHRyaWIgcGxhbmVbM107CkBAIC0xMzc4LDcgKzEzODcsNyBAQCBFcnJvciBWYWxp
ZGF0ZVN0cmVhbUNvbnN1bWVyR0xUZXh0dXJlRXh0CiAgICAgICAgIHN3aXRjaCAoYXR0cmlidXRl
KQogICAgICAgICB7CiAgICAgICAgICAgICBjYXNlIEVHTF9DT0xPUl9CVUZGRVJfVFlQRToKLSAg
ICAgICAgICAgICAgICBpZiAodmFsdWUgIT0gRUdMX1JHQl9CVUZGRVIgfHwgdmFsdWUgIT0gRUdM
X1lVVl9CVUZGRVJfRVhUKQorICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBFR0xfUkdCX0JV
RkZFUiAmJiB2YWx1ZSAhPSBFR0xfWVVWX0JVRkZFUl9FWFQpCiAgICAgICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsICJJbnZh
bGlkIGNvbG9yIGJ1ZmZlciB0eXBlIik7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTM5OCw3ICsx
NDA3LDkgQEAgRXJyb3IgVmFsaWRhdGVTdHJlYW1Db25zdW1lckdMVGV4dHVyZUV4dAogICAgICAg
ICAgICAgICAgIGlmIChhdHRyaWJ1dGUgPj0gRUdMX1lVVl9QTEFORTBfVEVYVFVSRV9VTklUX05W
ICYmCiAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSA8PSBFR0xfWVVWX1BMQU5FMl9URVhU
VVJFX1VOSVRfTlYpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAo
dmFsdWUgPCAwKQorICAgICAgICAgICAgICAgICAgICBpZiAoKHZhbHVlIDwgMCB8fAorICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhbHVlID49IHN0YXRpY19jYXN0PEVHTEF0dHJpYj4oZ2xDYXBz
Lm1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpKSAmJgorICAgICAgICAgICAgICAgICAgICAg
ICAgdmFsdWUgIT0gRUdMX05PTkUpCiAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX0FDQ0VTUywgIkludmFsaWQgdGV4dHVy
ZSB1bml0Iik7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTE0MjQsNiArMTQzNSwxMyBAQCBF
cnJvciBWYWxpZGF0ZVN0cmVhbUNvbnN1bWVyR0xUZXh0dXJlRXh0CiAgICAgICAgICAgICAgICAg
cmV0dXJuIEVycm9yKEVHTF9CQURfTUFUQ0gsICJQbGFuZXMgY2Fubm90IGJlIHNwZWNpZmllZCIp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CisKKyAgICAgICAgLy8gTG9va3VwIHRoZSB0ZXh0
dXJlIGFuZCBlbnN1cmUgaXQgaXMgY29ycmVjdAorICAgICAgICBnbDo6VGV4dHVyZSAqdGV4dHVy
ZSA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRUYXJnZXRUZXh0dXJlKEdMX1RFWFRVUkVfRVhU
RVJOQUxfT0VTKTsKKyAgICAgICAgaWYgKHRleHR1cmUgPT0gbnVsbHB0ciB8fCB0ZXh0dXJlLT5n
ZXRJZCgpID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFE
X0FDQ0VTUywgIk5vIGV4dGVybmFsIHRleHR1cmUgYm91bmQiKTsKKyAgICAgICAgfQogICAgIH0K
ICAgICBlbHNlCiAgICAgewpAQCAtMTQzNSwxOCArMTQ1MywzNyBAQCBFcnJvciBWYWxpZGF0ZVN0
cmVhbUNvbnN1bWVyR0xUZXh0dXJlRXh0CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBF
cnJvcihFR0xfQkFEX01BVENILCAiSW52YWxpZCBZVVYgcGxhbmUgY291bnQiKTsKICAgICAgICAg
fQorICAgICAgICBmb3IgKEVHTEF0dHJpYiBpID0gcGxhbmVDb3VudDsgaSA8IDM7IGkrKykKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKHBsYW5lW2ldICE9IC0xKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX01BVENILCAiSW52YWxpZCBwbGFu
ZSBzcGVjaWZpZWQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFNl
dCB0byBlbnN1cmUgbm8gdGV4dHVyZSBpcyByZWZlcmVuY2VkIG1vcmUgdGhhbiBvbmNlCisgICAg
ICAgIHN0ZDo6c2V0PGdsOjpUZXh0dXJlICo+IHRleHR1cmVTZXQ7CiAgICAgICAgIGZvciAoRUdM
QXR0cmliIGkgPSAwOyBpIDwgcGxhbmVDb3VudDsgaSsrKQogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAocGxhbmVbaV0gPT0gLTEpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIEVycm9yKEVHTF9CQURfTUFUQ0gsICJOb3QgYWxsIHBsYW5lcyBzcGVjaWZpZWQiKTsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBmb3IgKEVHTEF0dHJpYiBpID0gcGxhbmVD
b3VudDsgaSA8IDM7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHBsYW5lW2ldICE9
IC0xKQorICAgICAgICAgICAgaWYgKHBsYW5lW2ldICE9IEVHTF9OT05FKQogICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX01BVENILCAiSW52YWxpZCBw
bGFuZSBzcGVjaWZpZWQiKTsKKyAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSA9
IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRTYW1wbGVyVGV4dHVyZSgKKyAgICAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihwbGFuZVtpXSksIEdMX1RFWFRVUkVfRVhU
RVJOQUxfT0VTKTsKKyAgICAgICAgICAgICAgICBpZiAodGV4dHVyZSA9PSBudWxscHRyIHx8IHRl
eHR1cmUtPmdldElkKCkgPT0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9CQURfQUNDRVNT
LAorICAgICAgICAgICAgICAgICAgICAgICAgIk5vIGV4dGVybmFsIHRleHR1cmUgYm91bmQgYXQg
b25lIG9yIG1vcmUgc3BlY2lmaWVkIHRleHR1cmUgdW5pdHMiKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgaWYgKHRleHR1cmVTZXQuZmluZCh0ZXh0dXJlKSAhPSB0ZXh0dXJl
U2V0LmVuZCgpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEVycm9yKEVHTF9CQURfQUNDRVNTLCAiTXVsdGlwbGUgcGxhbmVzIGJvdW5kIHRvIHNhbWUgdGV4
dHVyZSBvYmplY3QiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGV4dHVy
ZVNldC5pbnNlcnQodGV4dHVyZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBA
IC0xNDU4LDE3ICsxNDk1LDE1IEBAIEVycm9yIFZhbGlkYXRlQ3JlYXRlU3RyZWFtUHJvZHVjZXJE
M0RUZXgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFN0cmVhbSAqc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJzKQogewor
ICAgIEFOR0xFX1RSWShWYWxpZGF0ZURpc3BsYXkoZGlzcGxheSkpOworCiAgICAgY29uc3QgRGlz
cGxheUV4dGVuc2lvbnMgJmRpc3BsYXlFeHRlbnNpb25zID0gZGlzcGxheS0+Z2V0RXh0ZW5zaW9u
cygpOwogICAgIGlmICghZGlzcGxheUV4dGVuc2lvbnMuc3RyZWFtUHJvZHVjZXJEM0RUZXh0dXJl
TlYxMikKICAgICB7CiAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX0FDQ0VTUywgIlN0cmVh
bSBwcm9kdWNlciBleHRlbnNpb24gbm90IGFjdGl2ZSIpOwogICAgIH0KIAotICAgIEVycm9yIGVy
cm9yID0gVmFsaWRhdGVTdHJlYW0oZGlzcGxheSwgc3RyZWFtKTsKLSAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9U
UlkoVmFsaWRhdGVTdHJlYW0oZGlzcGxheSwgc3RyZWFtKSk7CiAKICAgICBpZiAoIWF0dHJpYnMu
aXNFbXB0eSgpKQogICAgIHsKQEAgLTE0ODAsMjUgKzE1MTUsMjkgQEAgRXJyb3IgVmFsaWRhdGVD
cmVhdGVTdHJlYW1Qcm9kdWNlckQzRFRleAogICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9T
VEFURV9LSFIsICJTdHJlYW0gbm90IGluIGNvbm5lY3Rpbmcgc3RhdGUiKTsKICAgICB9CiAKKyAg
ICBpZiAoc3RyZWFtLT5nZXRDb25zdW1lclR5cGUoKSAhPSBTdHJlYW06OkNvbnN1bWVyVHlwZTo6
R0xUZXh0dXJlWVVWIHx8CisgICAgICAgIHN0cmVhbS0+Z2V0UGxhbmVDb3VudCgpICE9IDIpCisg
ICAgeworICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9NQVRDSCwgIkluY29tcGF0aWJsZSBz
dHJlYW0gY29uc3VtZXIgdHlwZSIpOworICAgIH0KKwogICAgIHJldHVybiBFcnJvcihFR0xfU1VD
Q0VTUyk7CiB9CiAKIEVycm9yIFZhbGlkYXRlU3RyZWFtUG9zdEQzRFRleHR1cmVOVjEyQU5HTEUo
Y29uc3QgRGlzcGxheSAqZGlzcGxheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgU3RyZWFtICpzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnRleHR1cmUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnRleHR1cmUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0
cmlicykKIHsKKyAgICBBTkdMRV9UUlkoVmFsaWRhdGVEaXNwbGF5KGRpc3BsYXkpKTsKKwogICAg
IGNvbnN0IERpc3BsYXlFeHRlbnNpb25zICZkaXNwbGF5RXh0ZW5zaW9ucyA9IGRpc3BsYXktPmdl
dEV4dGVuc2lvbnMoKTsKICAgICBpZiAoIWRpc3BsYXlFeHRlbnNpb25zLnN0cmVhbVByb2R1Y2Vy
RDNEVGV4dHVyZU5WMTIpCiAgICAgewogICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9BQ0NF
U1MsICJTdHJlYW0gcHJvZHVjZXIgZXh0ZW5zaW9uIG5vdCBhY3RpdmUiKTsKICAgICB9CiAKLSAg
ICBFcnJvciBlcnJvciA9IFZhbGlkYXRlU3RyZWFtKGRpc3BsYXksIHN0cmVhbSk7Ci0gICAgaWYg
KGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Cisg
ICAgQU5HTEVfVFJZKFZhbGlkYXRlU3RyZWFtKGRpc3BsYXksIHN0cmVhbSkpOwogCiAgICAgZm9y
IChhdXRvICZhdHRyaWJ1dGVJdGVyIDogYXR0cmlicykKICAgICB7CkBAIC0xNTI1LDExICsxNTY0
LDY0IEBAIEVycm9yIFZhbGlkYXRlU3RyZWFtUG9zdEQzRFRleHR1cmVOVjEyQU4KICAgICAgICAg
cmV0dXJuIEVycm9yKEVHTF9CQURfU1RBVEVfS0hSLCAiU3RyZWFtIG5vdCBmdWxseSBjb25maWd1
cmVkIik7CiAgICAgfQogCisgICAgaWYgKHN0cmVhbS0+Z2V0UHJvZHVjZXJUeXBlKCkgIT0gU3Ry
ZWFtOjpQcm9kdWNlclR5cGU6OkQzRDExVGV4dHVyZU5WMTIpCisgICAgeworICAgICAgICByZXR1
cm4gRXJyb3IoRUdMX0JBRF9NQVRDSCwgIkluY29tcGF0aWJsZSBzdHJlYW0gcHJvZHVjZXIiKTsK
KyAgICB9CisKICAgICBpZiAodGV4dHVyZSA9PSBudWxscHRyKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIEVycm9yKEVHTF9CQURfUEFSQU1FVEVSLCAiVGV4dHVyZSBtdXN0IG5vdCBiZSBudWxsIik7
CisgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfUEFSQU1FVEVSLCAiVGV4dHVyZSBp
cyBudWxsIik7CiAgICAgfQogCi0gICAgcmV0dXJuIEVycm9yKEVHTF9TVUNDRVNTKTsKKyAgICBy
ZXR1cm4gc3RyZWFtLT52YWxpZGF0ZUQzRDExTlYxMlRleHR1cmUodGV4dHVyZSk7CiB9CisKK0Vy
cm9yIFZhbGlkYXRlR2V0U3luY1ZhbHVlc0NIUk9NSVVNKGNvbnN0IERpc3BsYXkgKmRpc3BsYXks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdXJmYWNlICpzdXJm
YWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRUdMdWludDY0
S0hSICp1c3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFR0x1
aW50NjRLSFIgKm1zYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEVHTHVpbnQ2NEtIUiAqc2JjKQoreworICAgIEFOR0xFX1RSWShWYWxpZGF0ZURpc3BsYXkoZGlz
cGxheSkpOworCisgICAgY29uc3QgRGlzcGxheUV4dGVuc2lvbnMgJmRpc3BsYXlFeHRlbnNpb25z
ID0gZGlzcGxheS0+Z2V0RXh0ZW5zaW9ucygpOworICAgIGlmICghZGlzcGxheUV4dGVuc2lvbnMu
Z2V0U3luY1ZhbHVlcykKKyAgICB7CisgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX0FDQ0VT
UywgImdldFN5bmNWYWx1ZXMgZXh0ZW5zaW9uIG5vdCBhY3RpdmUiKTsKKyAgICB9CisKKyAgICBp
ZiAoZGlzcGxheS0+aXNEZXZpY2VMb3N0KCkpCisgICAgeworICAgICAgICByZXR1cm4gRXJyb3Io
RUdMX0NPTlRFWFRfTE9TVCwgIkNvbnRleHQgaXMgbG9zdC4iKTsKKyAgICB9CisKKyAgICBpZiAo
c3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkKKyAgICB7CisgICAgICAgIHJldHVybiBFcnJvcihF
R0xfQkFEX1NVUkZBQ0UsICJnZXRTeW5jVmFsdWVzIHN1cmZhY2UgY2Fubm90IGJlIEVHTF9OT19T
VVJGQUNFIik7CisgICAgfQorCisgICAgaWYgKCFzdXJmYWNlLT5kaXJlY3RDb21wb3NpdGlvbigp
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfU1VSRkFDRSwKKyAgICAgICAg
ICAgICAgICAgICAgICJnZXRTeW5jVmFsdWVzIHN1cmZhY2UgcmVxdWlyZXMgRGlyZWN0IENvbXBv
c2l0aW9uIHRvIGJlIGVuYWJsZWQiKTsKKyAgICB9CisKKyAgICBpZiAodXN0ID09IG51bGxwdHIp
CisgICAgeworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgInVz
dCBpcyBudWxsIik7CisgICAgfQorCisgICAgaWYgKG1zYyA9PSBudWxscHRyKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsICJtc2MgaXMgbnVsbCIp
OworICAgIH0KKworICAgIGlmIChzYmMgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIHJldHVy
biBlZ2w6OkVycm9yKEVHTF9CQURfUEFSQU1FVEVSLCAic2JjIGlzIG51bGwiKTsKKyAgICB9CisK
KyAgICByZXR1cm4gRXJyb3IoRUdMX1NVQ0NFU1MpOwogfQorfSAgLy8gbmFtZXNwYWNlIGdsCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVHTC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxp
ZGF0aW9uRUdMLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRUdMLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDggKzky
LDEzIEBAIEVycm9yIFZhbGlkYXRlQ3JlYXRlU3RyZWFtUHJvZHVjZXJEM0RUZXgKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJp
YnV0ZU1hcCAmYXR0cmlicyk7CiBFcnJvciBWYWxpZGF0ZVN0cmVhbVBvc3REM0RUZXh0dXJlTlYx
MkFOR0xFKGNvbnN0IERpc3BsYXkgKmRpc3BsYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmVhbSAqc3RyZWFtLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICp0ZXh0dXJlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp0ZXh0dXJlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGVN
YXAgJmF0dHJpYnMpOworRXJyb3IgVmFsaWRhdGVHZXRTeW5jVmFsdWVzQ0hST01JVU0oY29uc3Qg
RGlzcGxheSAqZGlzcGxheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFN1cmZhY2UgKnN1cmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBFR0x1aW50NjRLSFIgKnVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEVHTHVpbnQ2NEtIUiAqbXNjLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgRUdMdWludDY0S0hSICpzYmMpOwogCiAvLyBPdGhlciB2YWxpZGF0
aW9uCiBFcnJvciBWYWxpZGF0ZUNvbXBhdGlibGVDb25maWdzKGNvbnN0IERpc3BsYXkgKmRpc3Bs
YXksCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlv
bkVTMi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3ZhbGlkYXRpb25FUzIuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTcsMTcgKzcsMjIgQEAKIC8vIHZhbGlkYXRpb25FUzIuY3BwOiBWYWxpZGF0aW9uIGZ1bmN0
aW9ucyBmb3IgT3BlbkdMIEVTIDIuMCBlbnRyeSBwb2ludCBwYXJhbWV0ZXJzCiAKICNpbmNsdWRl
ICJsaWJBTkdMRS92YWxpZGF0aW9uRVMyLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvdmFsaWRhdGlv
bkVTLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvdmFsaWRhdGlvbkVTMy5oIgorCisjaW5jbHVkZSA8
Y3N0ZGludD4KKworI2luY2x1ZGUgImNvbW1vbi9tYXRodXRpbC5oIgorI2luY2x1ZGUgImNvbW1v
bi9zdHJpbmdfdXRpbHMuaCIKKyNpbmNsdWRlICJjb21tb24vdXRpbGl0aWVzLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvQ29udGV4dC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1RleHR1cmUuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlci5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1l
YnVmZmVyQXR0YWNobWVudC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1JlbmRlcmJ1ZmZlci5oIgor
I2luY2x1ZGUgImxpYkFOR0xFL1NoYWRlci5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1VuaWZvcm0u
aCIKICNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgotI2luY2x1ZGUgImxpYkFOR0xF
L0ZyYW1lYnVmZmVyQXR0YWNobWVudC5oIgotCi0jaW5jbHVkZSAiY29tbW9uL21hdGh1dGlsLmgi
Ci0jaW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3ZhbGlk
YXRpb25FUy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3ZhbGlkYXRpb25FUzMuaCIKIAogbmFtZXNw
YWNlIGdsCiB7CkBAIC00Niw5ICs1MSw5IEBAIGJvb2wgSXNQYXJ0aWFsQmxpdChnbDo6Q29udGV4
dCAqY29udGV4dCwKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaWYgKGNvbnRl
eHQtPmdldFN0YXRlKCkuaXNTY2lzc29yVGVzdEVuYWJsZWQoKSkKKyAgICBpZiAoY29udGV4dC0+
Z2V0R0xTdGF0ZSgpLmlzU2Npc3NvclRlc3RFbmFibGVkKCkpCiAgICAgewotICAgICAgICBjb25z
dCBSZWN0YW5nbGUgJnNjaXNzb3IgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFNjaXNzb3IoKTsK
KyAgICAgICAgY29uc3QgUmVjdGFuZ2xlICZzY2lzc29yID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgp
LmdldFNjaXNzb3IoKTsKICAgICAgICAgcmV0dXJuIHNjaXNzb3IueCA+IDAgfHwgc2Npc3Nvci55
ID4gMCB8fCBzY2lzc29yLndpZHRoIDwgd3JpdGVTaXplLndpZHRoIHx8CiAgICAgICAgICAgICAg
ICBzY2lzc29yLmhlaWdodCA8IHdyaXRlU2l6ZS5oZWlnaHQ7CiAgICAgfQpAQCAtNTYsMjEgKzYx
LDI1NSBAQCBib29sIElzUGFydGlhbEJsaXQoZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Jvb2wgVmFsaWRhdGVQYXRo
SW5zdGFuY2VzKGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBudW1QYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZv
aWQgKnBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlKQor
eworICAgIGNvbnN0IGF1dG8gKmFycmF5ID0gc3RhdGljX2Nhc3Q8Y29uc3QgVCAqPihwYXRocyk7
CisKKyAgICBmb3IgKEdMc2l6ZWkgaSA9IDA7IGkgPCBudW1QYXRoczsgKytpKQorICAgIHsKKyAg
ICAgICAgY29uc3QgR0x1aW50IHBhdGhOYW1lID0gYXJyYXlbaV0gKyBwYXRoQmFzZTsKKyAgICAg
ICAgaWYgKGNvbnRleHQtPmhhc1BhdGgocGF0aE5hbWUpICYmICFjb250ZXh0LT5oYXNQYXRoRGF0
YShwYXRoTmFtZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIk5vIHN1Y2ggcGF0aCBvYmplY3QuIikp
OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVy
biB0cnVlOworfQorCitib29sIFZhbGlkYXRlSW5zdGFuY2VkUGF0aFBhcmFtZXRlcnMoZ2w6OkNv
bnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBudW1QYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcGF0aE5hbWVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHZvaWQgKnBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBwYXRoQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCit7CisgICAgaWYgKCFjb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkucGF0aFJlbmRlcmluZykKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKAorICAgICAgICAgICAgZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiR0xf
Q0hST01JVU1fcGF0aF9yZW5kZXJpbmcgaXMgbm90IGF2YWlsYWJsZS4iKSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAocGF0aHMgPT0gbnVsbHB0cikKKyAgICB7Cisg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKGdsOjpFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAi
Tm8gcGF0aCBuYW1lIGFycmF5LiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIGlmIChudW1QYXRocyA8IDApCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihnbDo6RXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIkludmFsaWQgKG5lZ2F0aXZlKSBudW1QYXRo
cy4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIWFuZ2xlOjpJ
c1ZhbHVlSW5SYW5nZUZvck51bWVyaWNUeXBlPHN0ZDo6dWludDMyX3Q+KG51bVBhdGhzKSkKKyAg
ICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKGdsOjpFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgIk92ZXJmbG93IGluIG51bVBhdGhzLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIHN0ZDo6dWludDMyX3QgcGF0aE5hbWVUeXBlU2l6ZSA9IDA7CisgICAg
c3RkOjp1aW50MzJfdCBjb21wb25lbnRDb3VudCAgID0gMDsKKworICAgIHN3aXRjaCAocGF0aE5h
bWVUeXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAg
ICAgcGF0aE5hbWVUeXBlU2l6ZSA9IHNpemVvZihHTHVieXRlKTsKKyAgICAgICAgICAgIGlmICgh
VmFsaWRhdGVQYXRoSW5zdGFuY2VzPEdMdWJ5dGU+KGNvbnRleHQsIG51bVBhdGhzLCBwYXRocywg
cGF0aEJhc2UpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIGNhc2UgR0xfQllURToKKyAgICAgICAgICAgIHBhdGhOYW1lVHlwZVNp
emUgPSBzaXplb2YoR0xieXRlKTsKKyAgICAgICAgICAgIGlmICghVmFsaWRhdGVQYXRoSW5zdGFu
Y2VzPEdMYnl0ZT4oY29udGV4dCwgbnVtUGF0aHMsIHBhdGhzLCBwYXRoQmFzZSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2Fz
ZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAgICAgICAgICAgIHBhdGhOYW1lVHlwZVNpemUgPSBzaXpl
b2YoR0x1c2hvcnQpOworICAgICAgICAgICAgaWYgKCFWYWxpZGF0ZVBhdGhJbnN0YW5jZXM8R0x1
c2hvcnQ+KGNvbnRleHQsIG51bVBhdGhzLCBwYXRocywgcGF0aEJhc2UpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xf
U0hPUlQ6CisgICAgICAgICAgICBwYXRoTmFtZVR5cGVTaXplID0gc2l6ZW9mKEdMc2hvcnQpOwor
ICAgICAgICAgICAgaWYgKCFWYWxpZGF0ZVBhdGhJbnN0YW5jZXM8R0xzaG9ydD4oY29udGV4dCwg
bnVtUGF0aHMsIHBhdGhzLCBwYXRoQmFzZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6Cisg
ICAgICAgICAgICBwYXRoTmFtZVR5cGVTaXplID0gc2l6ZW9mKEdMdWludCk7CisgICAgICAgICAg
ICBpZiAoIVZhbGlkYXRlUGF0aEluc3RhbmNlczxHTHVpbnQ+KGNvbnRleHQsIG51bVBhdGhzLCBw
YXRocywgcGF0aEJhc2UpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfSU5UOgorICAgICAgICAgICAgcGF0aE5hbWVU
eXBlU2l6ZSA9IHNpemVvZihHTGludCk7CisgICAgICAgICAgICBpZiAoIVZhbGlkYXRlUGF0aElu
c3RhbmNlczxHTGludD4oY29udGV4dCwgbnVtUGF0aHMsIHBhdGhzLCBwYXRoQmFzZSkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKGdsOjpFcnJvcihHTF9J
TlZBTElEX0VOVU0sICJJbnZhbGlkIHBhdGggbmFtZSB0eXBlLiIpKTsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHRyYW5zZm9ybVR5cGUpCisgICAgewor
ICAgICAgICBjYXNlIEdMX05PTkU6CisgICAgICAgICAgICBjb21wb25lbnRDb3VudCA9IDA7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9UUkFOU0xBVEVfWF9DSFJPTUlVTToK
KyAgICAgICAgY2FzZSBHTF9UUkFOU0xBVEVfWV9DSFJPTUlVTToKKyAgICAgICAgICAgIGNvbXBv
bmVudENvdW50ID0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1RSQU5T
TEFURV8yRF9DSFJPTUlVTToKKyAgICAgICAgICAgIGNvbXBvbmVudENvdW50ID0gMjsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1RSQU5TTEFURV8zRF9DSFJPTUlVTToKKyAg
ICAgICAgICAgIGNvbXBvbmVudENvdW50ID0gMzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEdMX0FGRklORV8yRF9DSFJPTUlVTToKKyAgICAgICAgY2FzZSBHTF9UUkFOU1BPU0Vf
QUZGSU5FXzJEX0NIUk9NSVVNOgorICAgICAgICAgICAgY29tcG9uZW50Q291bnQgPSA2OworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfQUZGSU5FXzNEX0NIUk9NSVVNOgorICAg
ICAgICBjYXNlIEdMX1RSQU5TUE9TRV9BRkZJTkVfM0RfQ0hST01JVU06CisgICAgICAgICAgICBj
b21wb25lbnRDb3VudCA9IDEyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihnbDo6RXJyb3IoR0xfSU5WQUxJRF9F
TlVNLCAiSW52YWxpZCB0cmFuc2Zvcm1hdGlvbi4iKSk7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIGlmIChjb21wb25lbnRDb3VudCAhPSAwICYmIHRyYW5zZm9ybVZhbHVl
cyA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoZ2w6OkVy
cm9yKEdMX0lOVkFMSURfVkFMVUUsICJObyB0cmFuc2Zvcm0gYXJyYXkgZ2l2ZW4uIikpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgYW5nbGU6OkNoZWNrZWROdW1lcmljPHN0
ZDo6dWludDMyX3Q+IGNoZWNrZWRTaXplKDApOworICAgIGNoZWNrZWRTaXplICs9IChudW1QYXRo
cyAqIHBhdGhOYW1lVHlwZVNpemUpOworICAgIGNoZWNrZWRTaXplICs9IChudW1QYXRocyAqIHNp
emVvZihHTGZsb2F0KSAqIGNvbXBvbmVudENvdW50KTsKKyAgICBpZiAoIWNoZWNrZWRTaXplLklz
VmFsaWQoKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKGdsOjpFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTiwgIk92ZXJmbG93IGluIG51bSBwYXRocy4iKSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBJc1Zh
bGlkQ29weVRleHR1cmVGb3JtYXQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGludGVybmFsRm9y
bWF0KQoreworICAgIGNvbnN0IEludGVybmFsRm9ybWF0ICZpbnRlcm5hbEZvcm1hdEluZm8gPSBH
ZXRJbnRlcm5hbEZvcm1hdEluZm8oaW50ZXJuYWxGb3JtYXQpOworICAgIHN3aXRjaCAoaW50ZXJu
YWxGb3JtYXRJbmZvLmZvcm1hdCkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfQUxQSEE6CisgICAg
ICAgIGNhc2UgR0xfTFVNSU5BTkNFOgorICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQToK
KyAgICAgICAgY2FzZSBHTF9SR0I6CisgICAgICAgIGNhc2UgR0xfUkdCQToKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgICAgIGNhc2UgR0xfUkVEOgorICAgICAgICAgICAgcmV0dXJu
IGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpID49IDMgfHwgY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnRleHR1cmVSRzsKKworICAgICAgICBjYXNlIEdMX0JHUkFfRVhUOgorICAgICAg
ICAgICAgcmV0dXJuIGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlRm9ybWF0QkdSQTg4
ODg7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
Cit9CisKK2Jvb2wgSXNWYWxpZENvcHlUZXh0dXJlRGVzdGluYXRpb25Gb3JtYXRUeXBlKENvbnRl
eHQgKmNvbnRleHQsIEdMaW50IGludGVybmFsRm9ybWF0LCBHTGVudW0gdHlwZSkKK3sKKyAgICBz
d2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9SR0I6CisgICAg
ICAgIGNhc2UgR0xfUkdCQToKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xf
QkdSQV9FWFQ6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRl
eHR1cmVGb3JtYXRCR1JBODg4ODsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgSXNWYWxpZENvcHlUZXh0dXJlRGVzdGluYXRpb25UYXJnZXQoQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHRhcmdldCkKK3sKKyAgICBzd2l0Y2ggKHRhcmdldCkKKyAgICB7Cisg
ICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogYWNjZXB0IEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FS
QiBpZiB0aGUgdGV4dHVyZV9yZWN0YW5nbGUgZXh0ZW5zaW9uIGlzCisgICAgICAgIC8vIHN1cHBv
cnRlZAorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorfQorCitib29sIElzVmFsaWRDb3B5VGV4dHVyZVNvdXJjZVRhcmdldChDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdGFyZ2V0KQoreworICAgIGlmIChJc1ZhbGlkQ29weVRleHR1cmVEZXN0aW5h
dGlvblRhcmdldChjb250ZXh0LCB0YXJnZXQpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBhY2NlcHQgR0xfVEVYVFVSRV9FWFRF
Uk5BTF9PRVMgaWYgdGhlIHRleHR1cmVfZXh0ZXJuYWwgZXh0ZW5zaW9uIGlzCisgICAgLy8gc3Vw
cG9ydGVkCisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0gIC8vIGFub255bW91cyBuYW1lc3Bh
Y2UKIAotYm9vbCBWYWxpZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVycyhDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBib29s
IGlzQ29tcHJlc3NlZCwgYm9vbCBpc1N1YkltYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
Ym9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICpwaXhlbHMp
Citib29sIFZhbGlkYXRlRVMyVGV4SW1hZ2VQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDb21wcmVzc2VkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGlzU3ViSW1hZ2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBi
b3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGltYWdlU2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwaXhlbHMpCiB7CiAgICAg
aWYgKCFWYWxpZFRleHR1cmUyRERlc3RpbmF0aW9uVGFyZ2V0KGNvbnRleHQsIHRhcmdldCkpCiAg
ICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0p
KTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoIVZhbGlkSW1hZ2VTaXpl
UGFyYW1ldGVycyhjb250ZXh0LCB0YXJnZXQsIGxldmVsLCB3aWR0aCwgaGVpZ2h0LCAxLCBpc1N1
YkltYWdlKSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfVkFMVUUpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC03OCwxMyAr
MzE3LDEzIEBAIGJvb2wgVmFsaWRhdGVFUzJUZXhJbWFnZVBhcmFtZXRlcnMoQ29udGUKICAgICAg
ICAgc3RkOjpudW1lcmljX2xpbWl0czxHTHNpemVpPjo6bWF4KCkgLSB4b2Zmc2V0IDwgd2lkdGgg
fHwKICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxHTHNpemVpPjo6bWF4KCkgLSB5b2Zmc2V0
IDwgaGVpZ2h0KQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSkpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX1ZBTFVFKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAo
IWlzU3ViSW1hZ2UgJiYgIWlzQ29tcHJlc3NlZCAmJiBpbnRlcm5hbGZvcm1hdCAhPSBmb3JtYXQp
CiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC05NSw3ICsz
MzQsNyBAQCBib29sIFZhbGlkYXRlRVMyVGV4SW1hZ2VQYXJhbWV0ZXJzKENvbnRlCiAgICAgICAg
IGlmIChzdGF0aWNfY2FzdDxHTHVpbnQ+KHdpZHRoKSA+IChjYXBzLm1heDJEVGV4dHVyZVNpemUg
Pj4gbGV2ZWwpIHx8CiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+KGhlaWdodCkgPiAo
Y2Fwcy5tYXgyRFRleHR1cmVTaXplID4+IGxldmVsKSkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtMTAzLDI3ICszNDIsMjcg
QEAgYm9vbCBWYWxpZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVycyhDb250ZQogICAgIHsKICAgICAg
ICAgaWYgKCFpc1N1YkltYWdlICYmIHdpZHRoICE9IGhlaWdodCkKICAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHN0YXRp
Y19jYXN0PEdMdWludD4od2lkdGgpID4gKGNhcHMubWF4Q3ViZU1hcFRleHR1cmVTaXplID4+IGxl
dmVsKSB8fAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0x1aW50PihoZWlnaHQpID4gKGNhcHMu
bWF4Q3ViZU1hcFRleHR1cmVTaXplID4+IGxldmVsKSkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0g
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJlID0gY29u
dGV4dC0+Z2V0VGFyZ2V0VGV4dHVyZShJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkgPyBH
TF9URVhUVVJFX0NVQkVfTUFQIDogdGFyZ2V0KTsKICAgICBpZiAoIXRleHR1cmUpCiAgICAgewot
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMzEsOSArMzcwLDEwIEBA
IGJvb2wgVmFsaWRhdGVFUzJUZXhJbWFnZVBhcmFtZXRlcnMoQ29udGUKICAgICB7CiAgICAgICAg
IGlmIChmb3JtYXQgIT0gR0xfTk9ORSkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKGdsOjpH
ZXRTaXplZEludGVybmFsRm9ybWF0KGZvcm1hdCwgdHlwZSkgIT0gdGV4dHVyZS0+Z2V0SW50ZXJu
YWxGb3JtYXQodGFyZ2V0LCBsZXZlbCkpCisgICAgICAgICAgICBpZiAoZ2w6OkdldFNpemVkSW50
ZXJuYWxGb3JtYXQoZm9ybWF0LCB0eXBlKSAhPQorICAgICAgICAgICAgICAgIHRleHR1cmUtPmdl
dEZvcm1hdCh0YXJnZXQsIGxldmVsKS5hc1NpemVkKCkpCiAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQpAQCAtMTQxLDcgKzM4MSw3IEBAIGJvb2wgVmFsaWRhdGVFUzJUZXhJbWFn
ZVBhcmFtZXRlcnMoQ29udGUKICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4oeG9mZnNl
dCArIHdpZHRoKSA+IHRleHR1cmUtPmdldFdpZHRoKHRhcmdldCwgbGV2ZWwpIHx8CiAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxzaXplX3Q+KHlvZmZzZXQgKyBoZWlnaHQpID4gdGV4dHVyZS0+Z2V0
SGVpZ2h0KHRhcmdldCwgbGV2ZWwpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNDksNyArMzg5LDcgQEAgYm9vbCBWYWxp
ZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVycyhDb250ZQogICAgIHsKICAgICAgICAgaWYgKHRleHR1
cmUtPmdldEltbXV0YWJsZUZvcm1hdCgpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTE1Nyw2MSArMzk3LDYx
IEBAIGJvb2wgVmFsaWRhdGVFUzJUZXhJbWFnZVBhcmFtZXRlcnMoQ29udGUKICAgICAvLyBWZXJp
ZnkgemVybyBib3JkZXIKICAgICBpZiAoYm9yZGVyICE9IDApCiAgICAgewotICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAogICAgIGlmIChpc0NvbXByZXNzZWQpCiAgICAgewogICAgICAgICBH
TGVudW0gYWN0dWFsSW50ZXJuYWxGb3JtYXQgPQotICAgICAgICAgICAgaXNTdWJJbWFnZSA/IHRl
eHR1cmUtPmdldEludGVybmFsRm9ybWF0KHRhcmdldCwgbGV2ZWwpIDogaW50ZXJuYWxmb3JtYXQ7
CisgICAgICAgICAgICBpc1N1YkltYWdlID8gdGV4dHVyZS0+Z2V0Rm9ybWF0KHRhcmdldCwgbGV2
ZWwpLmFzU2l6ZWQoKSA6IGludGVybmFsZm9ybWF0OwogICAgICAgICBzd2l0Y2ggKGFjdHVhbElu
dGVybmFsRm9ybWF0KQogICAgICAgICB7CiAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JH
Ql9TM1RDX0RYVDFfRVhUOgogICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUMV9FWFQ6CiAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0
dXJlQ29tcHJlc3Npb25EWFQxKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRToKICAgICAg
ICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVDb21wcmVzc2lvbkRY
VDEpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgY2FzZSBH
TF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFOgogICAgICAgICAgICAgaWYgKCFjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZUNvbXByZXNzaW9uRFhUNSkKICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X0VOVU0pKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICBjYXNlIEdMX0VUQzFfUkdCOF9PRVM6
CiAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2VkRVRD
MVJHQjhUZXh0dXJlKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgIGNhc2UgR0xfRVRDMV9SR0I4X0xPU1NZX0RFQ09ERV9BTkdMRToKICAgICAgICAgICAgICAg
aWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkubG9zc3lFVENEZWNvZGUpCiAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKAorICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgRXJy
b3IoR0xfSU5WQUxJRF9FTlVNLCAiQU5HTEVfbG9zc3lfZXRjX2RlY29kZSBleHRlbnNpb24gaXMg
bm90IHN1cHBvcnRlZCIpKTsKICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcigKKyAgICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoCiAgICAgICAgICAgICAgICAgICBHTF9JTlZBTElEX0VO
VU0sICJpbnRlcm5hbGZvcm1hdCBpcyBub3QgYSBzdXBwb3J0ZWQgY29tcHJlc3NlZCBpbnRlcm5h
bCBmb3JtYXQiKSk7CiAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAg
ICAgICBpZiAoIVZhbGlkQ29tcHJlc3NlZEltYWdlU2l6ZShjb250ZXh0LCBhY3R1YWxJbnRlcm5h
bEZvcm1hdCwgd2lkdGgsIGhlaWdodCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtMjMxLDcgKzQ3MSw3IEBA
IGJvb2wgVmFsaWRhdGVFUzJUZXhJbWFnZVBhcmFtZXRlcnMoQ29udGUKICAgICAgICAgICBjYXNl
IEdMX0ZMT0FUOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCkBAIC0yNTAsNyArNDkwLDcg
QEAgYm9vbCBWYWxpZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVycyhDb250ZQogICAgICAgICAgICAg
ICBjYXNlIEdMX0hBTEZfRkxPQVRfT0VTOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAg
LTI1OCw3ICs0OTgsNyBAQCBib29sIFZhbGlkYXRlRVMyVGV4SW1hZ2VQYXJhbWV0ZXJzKENvbnRl
CiAgICAgICAgICAgY2FzZSBHTF9SRzoKICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkudGV4dHVyZVJHKQogICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwog
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgIHN3aXRjaCAodHlwZSkKQEAgLTI2OCw3ICs1MDgsNyBAQCBib29sIFZhbGlkYXRlRVMy
VGV4SW1hZ2VQYXJhbWV0ZXJzKENvbnRlCiAgICAgICAgICAgICAgICAgY2FzZSBHTF9IQUxGX0ZM
T0FUX09FUzoKICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjgxLDcg
KzUyMSw3IEBAIGJvb2wgVmFsaWRhdGVFUzJUZXhJbWFnZVBhcmFtZXRlcnMoQ29udGUKICAgICAg
ICAgICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUX09FUzoKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsK
QEAgLTI5NSw3ICs1MzUsNyBAQCBib29sIFZhbGlkYXRlRVMyVGV4SW1hZ2VQYXJhbWV0ZXJzKENv
bnRlCiAgICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgYnJlYWs7CkBAIC0zMDUsNyArNTQ1LDcgQEAgYm9vbCBWYWxpZGF0ZUVTMlRleEltYWdlUGFy
YW1ldGVycyhDb250ZQogICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgYnJlYWs7CkBAIC0zMTMsNyArNTUzLDcgQEAgYm9vbCBWYWxpZGF0ZUVTMlRl
eEltYWdlUGFyYW1ldGVycyhDb250ZQogICAgICAgICAgIGNhc2UgR0xfU1JHQl9BTFBIQV9FWFQ6
CiAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zUkdCKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfRU5VTSkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKQEAgLTMyMSw3ICs1NjEsNyBAQCBi
b29sIFZhbGlkYXRlRVMyVGV4SW1hZ2VQYXJhbWV0ZXJzKENvbnRlCiAgICAgICAgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfQllURToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTMzNyw3ICs1
NzcsNyBAQCBib29sIFZhbGlkYXRlRVMyVGV4SW1hZ2VQYXJhbWV0ZXJzKENvbnRlCiAgICAgICAg
ICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MzQ3LDEyICs1ODcsMTIgQEAgYm9vbCBWYWxpZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVycyhDb250
ZQogICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF8yNF84X09FUzoKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAgLTM2Miw2MiArNjAyLDYyIEBAIGJvb2wgVmFsaWRh
dGVFUzJUZXhJbWFnZVBhcmFtZXRlcnMoQ29udGUKICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNT
RURfUkdCQV9TM1RDX0RYVDFfRVhUOgogICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS50ZXh0dXJlQ29tcHJlc3Npb25EWFQxKQogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7
CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFOgogICAgICAg
ICAgICAgaWYgKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlQ29tcHJlc3Npb25EWFQz
KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQ1X0FOR0xFOgogICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS50ZXh0dXJlQ29tcHJlc3Npb25EWFQ1KQogICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Cisg
ICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgY2FzZSBHTF9FVEMxX1JHQjhfT0VTOgogICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5jb21wcmVzc2VkRVRDMVJHQjhUZXh0dXJlKQogICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgY2FzZSBHTF9FVEMxX1JHQjhfTE9TU1lfREVDT0RFX0FOR0xFOgog
ICAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmxvc3N5RVRDRGVjb2Rl
KQogICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cigKKyAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAogICAgICAgICAgICAg
ICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJFVEMxX1JHQjhfTE9TU1lfREVDT0RFX0FOR0xFIGNhbid0IHdvcmsgd2l0aCB0
aGlzIHR5cGUuIikpOwogICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoCisgICAgICAgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcigKICAgICAgICAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX0VOVU0s
ICJBTkdMRV9sb3NzeV9ldGNfZGVjb2RlIGV4dGVuc2lvbiBpcyBub3Qgc3VwcG9ydGVkLiIpKTsK
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgfQpAQCAtNDI2
LDE5ICs2NjYsMTkgQEAgYm9vbCBWYWxpZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVycyhDb250ZQog
ICAgICAgICAgIGNhc2UgR0xfREVQVEhfU1RFTkNJTF9PRVM6CiAgICAgICAgICAgICBpZiAoIWNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5kZXB0aFRleHR1cmVzKQogICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUp
KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X1ZBTFVFKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBHTF9URVhUVVJFXzJEKQogICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAvLyBPRVNfZGVwdGhfdGV4dHVyZSBzdXBwb3J0cyBsb2Fk
aW5nIGRlcHRoIGRhdGEgYW5kIG11bHRpcGxlIGxldmVscywKICAgICAgICAgICAgIC8vIGJ1dCBB
TkdMRV9kZXB0aF90ZXh0dXJlIGRvZXMgbm90CiAgICAgICAgICAgICBpZiAocGl4ZWxzICE9IE5V
TEwgfHwgbGV2ZWwgIT0gMCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
YnJlYWs7CkBAIC00NTAsNyArNjkwLDcgQEAgYm9vbCBWYWxpZGF0ZUVTMlRleEltYWdlUGFyYW1l
dGVycyhDb250ZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS50ZXh0dXJlRmxvYXQpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00NTgs
MTIgKzY5OCwxOCBAQCBib29sIFZhbGlkYXRlRVMyVGV4SW1hZ2VQYXJhbWV0ZXJzKENvbnRlCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1
cmVIYWxmRmxvYXQpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCisgICAgaWYg
KCFWYWxpZEltYWdlRGF0YVNpemUoY29udGV4dCwgdGFyZ2V0LCB3aWR0aCwgaGVpZ2h0LCAxLCBp
bnRlcm5hbGZvcm1hdCwgdHlwZSwgcGl4ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGltYWdlU2l6ZSkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTQ4MCwyOSArNzI2LDI4IEBAIGJvb2wgVmFsaWRhdGVFUzJD
b3B5VGV4SW1hZ2VQYXJhbWV0ZXJzKFYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgYm9yZGVyKQogewotICAgIEdMZW51bSB0ZXh0dXJlSW50ZXJuYWxGb3JtYXQg
PSBHTF9OT05FOwotCiAgICAgaWYgKCFWYWxpZFRleHR1cmUyRERlc3RpbmF0aW9uVGFyZ2V0KGNv
bnRleHQsIHRhcmdldCkpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIHRleHR1cmUgdGFyZ2V0IikpOworICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIHRleHR1
cmUgdGFyZ2V0IikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgRm9ybWF0
IHRleHR1cmVGb3JtYXQgPSBGb3JtYXQ6OkludmFsaWQoKTsKICAgICBpZiAoIVZhbGlkYXRlQ29w
eVRleEltYWdlUGFyYW1ldGVyc0Jhc2UoY29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIGlzU3ViSW1hZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHhvZmZzZXQsIHlvZmZzZXQsIDAsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwg
JnRleHR1cmVJbnRlcm5hbEZvcm1hdCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHhvZmZzZXQsIHlvZmZzZXQsIDAsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGJv
cmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRleHR1
cmVGb3JtYXQpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGNv
bnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdl
dFJlYWRGcmFtZWJ1ZmZlcigpOwotICAgIEdMZW51bSBjb2xvcmJ1ZmZlckZvcm1hdCA9IGZyYW1l
YnVmZmVyLT5nZXRSZWFkQ29sb3JidWZmZXIoKS0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsKLSAgICBj
b25zdCBhdXRvICZpbnRlcm5hbEZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZv
KHRleHR1cmVJbnRlcm5hbEZvcm1hdCk7Ci0gICAgR0xlbnVtIHRleHR1cmVGb3JtYXQgPSBpbnRl
cm5hbEZvcm1hdEluZm8uZm9ybWF0OworICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVi
dWZmZXIgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0UmVhZEZyYW1lYnVmZmVyKCk7CisgICAg
R0xlbnVtIGNvbG9yYnVmZmVyRm9ybWF0ICAgICAgICAgICA9IGZyYW1lYnVmZmVyLT5nZXRSZWFk
Q29sb3JidWZmZXIoKS0+Z2V0Rm9ybWF0KCkuYXNTaXplZCgpOworICAgIGNvbnN0IGF1dG8gJmZv
cm1hdEluZm8gICAgICAgICAgICAgPSAqdGV4dHVyZUZvcm1hdC5pbmZvOwogCiAgICAgLy8gW09w
ZW5HTCBFUyAyLjAuMjRdIHRhYmxlIDMuOQogICAgIGlmIChpc1N1YkltYWdlKQogICAgIHsKLSAg
ICAgICAgc3dpdGNoICh0ZXh0dXJlRm9ybWF0KQorICAgICAgICBzd2l0Y2ggKGZvcm1hdEluZm8u
Zm9ybWF0KQogICAgICAgICB7CiAgICAgICAgICAgY2FzZSBHTF9BTFBIQToKICAgICAgICAgICAg
IGlmIChjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9BTFBIQThfRVhUICYmCkBAIC01MTAsNyArNzU1
LDcgQEAgYm9vbCBWYWxpZGF0ZUVTMkNvcHlUZXhJbWFnZVBhcmFtZXRlcnMoVgogICAgICAgICAg
ICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjVfQTEgJiYKICAgICAgICAgICAgICAg
ICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JBOF9PRVMpCiAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTIzLDcgKzc2OCw3IEBAIGJvb2wgVmFsaWRh
dGVFUzJDb3B5VGV4SW1hZ2VQYXJhbWV0ZXJzKFYKICAgICAgICAgICAgICAgICAgIGNvbG9yYnVm
ZmVyRm9ybWF0ICE9IEdMX1JHQjVfQTEgJiYKICAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVy
Rm9ybWF0ICE9IEdMX1JHQkE4X09FUykKICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKSk7CiAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgYnJlYWs7CkBAIC01NDAsNyArNzg1LDcgQEAgYm9vbCBWYWxpZGF0
ZUVTMkNvcHlUZXhJbWFnZVBhcmFtZXRlcnMoVgogICAgICAgICAgICAgICAgICAgY29sb3JidWZm
ZXJGb3JtYXQgIT0gR0xfUkdCMzJGICYmCiAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZv
cm1hdCAhPSBHTF9SR0JBMzJGKQogICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICBicmVhazsKQEAgLTU1NSw3ICs4MDAsNyBAQCBib29sIFZhbGlkYXRlRVMy
Q29weVRleEltYWdlUGFyYW1ldGVycyhWCiAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZv
cm1hdCAhPSBHTF9SR0IzMkYgJiYKICAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0
ICE9IEdMX1JHQkEzMkYpCiAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OwogICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtNTY4LDcgKzgxMyw3IEBAIGJvb2wgVmFsaWRhdGVFUzJDb3B5
VGV4SW1hZ2VQYXJhbWV0ZXJzKFYKICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAh
PSBHTF9SR0IzMkYgJiYKICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9S
R0JBMzJGKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAg
LTU3OSw3ICs4MjQsNyBAQCBib29sIFZhbGlkYXRlRVMyQ29weVRleEltYWdlUGFyYW1ldGVycyhW
CiAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQThfT0VTICYmCiAg
ICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQTMyRikKICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC01ODksMjEgKzgzNCwyMCBA
QCBib29sIFZhbGlkYXRlRVMyQ29weVRleEltYWdlUGFyYW1ldGVycyhWCiAgICAgICAgICAgY2Fz
ZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFOgogICAgICAgICAgIGNhc2UgR0xf
RVRDMV9SR0I4X09FUzoKICAgICAgICAgICBjYXNlIEdMX0VUQzFfUkdCOF9MT1NTWV9ERUNPREVf
QU5HTEU6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTikpOworICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UOgogICAgICAgICAgIGNhc2UgR0xfREVQVEhfU1RF
TkNJTF9PRVM6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGludGVybmFsRm9ybWF0SW5mby50eXBlID09IEdM
X0ZMT0FUICYmCi0gICAgICAgICAgICAhY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVG
bG9hdCkKKyAgICAgICAgaWYgKGZvcm1hdEluZm8udHlwZSA9PSBHTF9GTE9BVCAmJiAhY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVGbG9hdCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC02MTksNyAr
ODYzLDcgQEAgYm9vbCBWYWxpZGF0ZUVTMkNvcHlUZXhJbWFnZVBhcmFtZXRlcnMoVgogICAgICAg
ICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE4X09FUyAmJgogICAgICAgICAg
ICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX0JHUjVfQTFfQU5HTEVYKQogICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTYzNCw3ICs4NzgsNyBAQCBi
b29sIFZhbGlkYXRlRVMyQ29weVRleEltYWdlUGFyYW1ldGVycyhWCiAgICAgICAgICAgICAgICAg
ICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JBOF9PRVMgJiYKICAgICAgICAgICAgICAgICAg
IGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX0JHUjVfQTFfQU5HTEVYKQogICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTikpOworICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICBicmVhazsKQEAgLTY0OSw3ICs4OTMs
NyBAQCBib29sIFZhbGlkYXRlRVMyQ29weVRleEltYWdlUGFyYW1ldGVycyhWCiAgICAgICAgICAg
ICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JBOF9PRVMgJiYKICAgICAgICAgICAg
ICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX0JHUjVfQTFfQU5HTEVYKQogICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICBicmVhazsKQEAgLTY2Myw3
ICs5MDcsNyBAQCBib29sIFZhbGlkYXRlRVMyQ29weVRleEltYWdlUGFyYW1ldGVycyhWCiAgICAg
ICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JBOF9PRVMgJiYKICAgICAg
ICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX0JHUjVfQTFfQU5HTEVYKQogICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICBicmVhazsKQEAg
LTY3Niw3ICs5MjAsNyBAQCBib29sIFZhbGlkYXRlRVMyQ29weVRleEltYWdlUGFyYW1ldGVycyhW
CiAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQThfT0VTICYmCiAg
ICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfQkdSNV9BMV9BTkdMRVgpCiAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjg4LDcgKzkz
Miw3IEBAIGJvb2wgVmFsaWRhdGVFUzJDb3B5VGV4SW1hZ2VQYXJhbWV0ZXJzKFYKICAgICAgICAg
ICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JBOF9PRVMgJiYKICAgICAgICAgICAg
ICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9CR1I1X0ExX0FOR0xFWCkKICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTikpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC02OTYsNjEgKzk0MCw2MSBAQCBi
b29sIFZhbGlkYXRlRVMyQ29weVRleEltYWdlUGFyYW1ldGVycyhWCiAgICAgICAgICAgY2FzZSBH
TF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKICAgICAgICAgICAgIGlmIChjb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZUNvbXByZXNzaW9uRFhUMSkKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTikpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdM
RToKICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZUNvbXBy
ZXNzaW9uRFhUMykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgIGNhc2UgR0xfQ09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRToKICAgICAgICAgICAgIGlmIChjb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkudGV4dHVyZUNvbXByZXNzaW9uRFhUNSkKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTikpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgIGNhc2UgR0xfRVRDMV9SR0I4X09FUzoKICAgICAgICAgICAgIGlmIChj
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3NlZEVUQzFSR0I4VGV4dHVyZSkKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkp
OworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
RU5VTSkpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgIGNhc2UgR0xfRVRDMV9SR0I4X0xPU1NZX0RFQ09E
RV9BTkdMRToKICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5sb3Nz
eUVUQ0RlY29kZSkKICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFVEMxX1JHQjhfTE9TU1lf
REVDT0RFX0FOR0xFIGNhbid0IGJlIGNvcGllZCB0by4iKSk7CiAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcigKKyAgICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAogICAgICAgICAgICAgICAgICAgICAg
IEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkFOR0xFX2xvc3N5X2V0Y19kZWNvZGUgZXh0ZW5zaW9u
IGlzIG5vdCBzdXBwb3J0ZWQuIikpOwogICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgICB9CkBAIC03NjIsMTYgKzEwMDYsMTYgQEAgYm9vbCBWYWxpZGF0ZUVTMkNv
cHlUZXhJbWFnZVBhcmFtZXRlcnMoVgogICAgICAgICAgIGNhc2UgR0xfREVQVEgyNF9TVEVOQ0lM
OF9PRVM6CiAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRlcHRoVGV4
dHVyZXMpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTc4NSwzMiArMTAyOSwzMiBAQCBib29sIFZhbGlk
YXRlRVMyVGV4U3RvcmFnZVBhcmFtZXRlcnMoQ29uCiB7CiAgICAgaWYgKHRhcmdldCAhPSBHTF9U
RVhUVVJFXzJEICYmIHRhcmdldCAhPSBHTF9URVhUVVJFX0NVQkVfTUFQKQogICAgIHsKLSAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKHdpZHRoIDwgMSB8fCBoZWlnaHQgPCAxIHx8
IGxldmVscyA8IDEpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlm
ICh0YXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01BUCAmJiB3aWR0aCAhPSBoZWlnaHQpCiAgICAg
ewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7
CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChsZXZlbHMgIT0gMSAmJiBs
ZXZlbHMgIT0gZ2w6OmxvZzIoc3RkOjptYXgod2lkdGgsIGhlaWdodCkpICsgMSkKICAgICB7Ci0g
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7
CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBjb25zdCBnbDo6SW50ZXJu
YWxGb3JtYXQgJmZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGludGVybmFs
Zm9ybWF0KTsKICAgICBpZiAoZm9ybWF0SW5mby5mb3JtYXQgPT0gR0xfTk9ORSB8fCBmb3JtYXRJ
bmZvLnR5cGUgPT0gR0xfTk9ORSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApA
QCAtODIyLDcgKzEwNjYsNyBAQCBib29sIFZhbGlkYXRlRVMyVGV4U3RvcmFnZVBhcmFtZXRlcnMo
Q29uCiAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxHTHVpbnQ+KHdpZHRoKSA+IGNhcHMubWF4MkRU
ZXh0dXJlU2l6ZSB8fAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0x1aW50PihoZWlnaHQpID4g
Y2Fwcy5tYXgyRFRleHR1cmVTaXplKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC04MzAsMTIgKzEwNzQsMTIg
QEAgYm9vbCBWYWxpZGF0ZUVTMlRleFN0b3JhZ2VQYXJhbWV0ZXJzKENvbgogICAgICAgICBpZiAo
c3RhdGljX2Nhc3Q8R0x1aW50Pih3aWR0aCkgPiBjYXBzLm1heEN1YmVNYXBUZXh0dXJlU2l6ZSB8
fAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0x1aW50PihoZWlnaHQpID4gY2Fwcy5tYXhDdWJl
TWFwVGV4dHVyZVNpemUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCkBAIC04NDMsNyArMTA4Nyw3IEBAIGJvb2wgVmFsaWRhdGVFUzJU
ZXhTdG9yYWdlUGFyYW1ldGVycyhDb24KICAgICB7CiAgICAgICAgIGlmICghZ2w6OmlzUG93Mih3
aWR0aCkgfHwgIWdsOjppc1BvdzIoaGVpZ2h0KSkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC04NTQsMzUgKzEw
OTgsMzUgQEAgYm9vbCBWYWxpZGF0ZUVTMlRleFN0b3JhZ2VQYXJhbWV0ZXJzKENvbgogICAgICAg
Y2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKICAgICAgICAgaWYgKCFjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZUNvbXByZXNzaW9uRFhUMSkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7
CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0p
KTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsK
ICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRToKICAgICAgICAg
aWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZUNvbXByZXNzaW9uRFhUMykKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX0VOVU0pKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAg
ICBicmVhazsKICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRToK
ICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZUNvbXByZXNzaW9u
RFhUNSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgR0xfRVRDMV9SR0I4X09FUzoKICAgICAgICAg
aWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3NlZEVUQzFSR0I4VGV4dHVyZSkK
ICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAg
ICAgICBicmVhazsKICAgICAgIGNhc2UgR0xfRVRDMV9SR0I4X0xPU1NZX0RFQ09ERV9BTkdMRToK
ICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5sb3NzeUVUQ0RlY29kZSkK
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKAorICAgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKICAgICAgICAgICAgICAgICAgIEVycm9yKEdM
X0lOVkFMSURfRU5VTSwgIkFOR0xFX2xvc3N5X2V0Y19kZWNvZGUgZXh0ZW5zaW9uIGlzIG5vdCBz
dXBwb3J0ZWQuIikpOwogICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgfQpA
QCAtODk0LDcgKzExMzgsNyBAQCBib29sIFZhbGlkYXRlRVMyVGV4U3RvcmFnZVBhcmFtZXRlcnMo
Q29uCiAgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQTMyRl9FWFQ6CiAgICAgICAgIGlmICgh
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVGbG9hdCkKICAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTkw
NSw3ICsxMTQ5LDcgQEAgYm9vbCBWYWxpZGF0ZUVTMlRleFN0b3JhZ2VQYXJhbWV0ZXJzKENvbgog
ICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEExNkZfRVhUOgogICAgICAgICBpZiAoIWNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlSGFsZkZsb2F0KQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtOTE3
LDcgKzExNjEsNyBAQCBib29sIFZhbGlkYXRlRVMyVGV4U3RvcmFnZVBhcmFtZXRlcnMoQ29uCiAg
ICAgICBjYXNlIEdMX1JHMzJGX0VYVDoKICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkudGV4dHVyZVJHKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtOTI2LDE4ICsxMTcwLDE4IEBAIGJvb2wg
VmFsaWRhdGVFUzJUZXhTdG9yYWdlUGFyYW1ldGVycyhDb24KICAgICAgIGNhc2UgR0xfREVQVEgy
NF9TVEVOQ0lMOF9PRVM6CiAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRl
cHRoVGV4dHVyZXMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKHRhcmdldCAhPSBHTF9URVhUVVJFXzJEKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTikpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAg
ICAgICAvLyBBTkdMRV9kZXB0aF90ZXh0dXJlIG9ubHkgc3VwcG9ydHMgMS1sZXZlbCB0ZXh0dXJl
cwogICAgICAgICBpZiAobGV2ZWxzICE9IDEpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtOTQ4
LDcxICsxMTkyLDI1IEBAIGJvb2wgVmFsaWRhdGVFUzJUZXhTdG9yYWdlUGFyYW1ldGVycyhDb24K
ICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSA9IGNvbnRleHQtPmdldFRhcmdldFRleHR1cmUodGFy
Z2V0KTsKICAgICBpZiAoIXRleHR1cmUgfHwgdGV4dHVyZS0+aWQoKSA9PSAwKQogICAgIHsKLSAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsK
KyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmICh0ZXh0dXJlLT5nZXRJ
bW11dGFibGVGb3JtYXQoKSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotLy8gY2hlY2sgZm9yIGNvbWJpbmF0aW9ucyBv
ZiBmb3JtYXQgYW5kIHR5cGUgdGhhdCBhcmUgdmFsaWQgZm9yIFJlYWRQaXhlbHMKLWJvb2wgVmFs
aWRFUzJSZWFkRm9ybWF0VHlwZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gZm9ybWF0LCBHTGVu
dW0gdHlwZSkKLXsKLSAgICBzd2l0Y2ggKGZvcm1hdCkKLSAgICB7Ci0gICAgICBjYXNlIEdMX1JH
QkE6Ci0gICAgICAgIHN3aXRjaCAodHlwZSkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xf
VU5TSUdORURfQllURToKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEdMX0JHUkFfRVhUOgotICAgICAgICBzd2l0Y2ggKHR5cGUpCi0gICAgICAgIHsKLSAg
ICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6Ci0gICAgICAgICAgY2FzZSBHTF9VTlNJR05F
RF9TSE9SVF80XzRfNF80X1JFVl9FWFQ6Ci0gICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9S
VF8xXzVfNV81X1JFVl9FWFQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwot
ICAgICAgY2FzZSBHTF9SR19FWFQ6Ci0gICAgICBjYXNlIEdMX1JFRF9FWFQ6Ci0gICAgICAgIGlm
ICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVSRykKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHN3aXRjaCAodHlwZSkKLSAg
ICAgICAgewotICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIH0KLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIGJvb2wgVmFsaWRhdGVEaXNjYXJk
RnJhbWVidWZmZXJFWFQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xzaXplaSBu
dW1BdHRhY2htZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xlbnVtICphdHRhY2htZW50cykKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5kaXNjYXJkRnJhbWVidWZmZXIpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkV4dGVuc2lvbiBub3QgZW5hYmxlZCIpKTsK
KyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04s
ICJFeHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKQEAgLTEwMjEsMTAgKzEyMTksMTEgQEAgYm9vbCBWYWxpZGF0ZURpc2NhcmRGcmFtZWJ1ZmZl
ckVYVChDb250ZQogICAgIHN3aXRjaCAodGFyZ2V0KQogICAgIHsKICAgICAgIGNhc2UgR0xfRlJB
TUVCVUZGRVI6Ci0gICAgICAgIGRlZmF1bHRGcmFtZWJ1ZmZlciA9IChjb250ZXh0LT5nZXRTdGF0
ZSgpLmdldFRhcmdldEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSKS0+aWQoKSA9PSAwKTsKLSAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdEZyYW1lYnVmZmVyID0KKyAgICAgICAgICAg
ICAgKGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRUYXJnZXRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJV
RkZFUiktPmlkKCkgPT0gMCk7CisgICAgICAgICAgYnJlYWs7CiAgICAgICBkZWZhdWx0OgotICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlk
IGZyYW1lYnVmZmVyIHRhcmdldCIpKTsKKyAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGZyYW1lYnVmZmVyIHRhcmdldCIpKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTAzNSw3ICsxMjM0LDcgQEAgYm9vbCBW
YWxpZGF0ZUJpbmRWZXJ0ZXhBcnJheU9FUyhDb250ZXh0IAogewogICAgIGlmICghY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLnZlcnRleEFycmF5T2JqZWN0KQogICAgIHsKLSAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFeHRlbnNpb24gbm90
IGVuYWJsZWQiKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OLCAiRXh0ZW5zaW9uIG5vdCBlbmFibGVkIikpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCkBAIC0xMDQ2LDcgKzEyNDUsNyBAQCBib29sIFZhbGlkYXRlRGVsZXRl
VmVydGV4QXJyYXlzT0VTKENvbnRlCiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkudmVydGV4QXJyYXlPYmplY3QpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkV4dGVuc2lvbiBub3QgZW5hYmxlZCIpKTsK
KyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04s
ICJFeHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKQEAgLTEwNTcsNyArMTI1Niw3IEBAIGJvb2wgVmFsaWRhdGVHZW5WZXJ0ZXhBcnJheXNPRVMo
Q29udGV4dCAKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS52ZXJ0ZXhBcnJh
eU9iamVjdCkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAiRXh0ZW5zaW9uIG5vdCBlbmFibGVkIikpOworICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkV4dGVuc2lvbiBu
b3QgZW5hYmxlZCIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTA2OCw3
ICsxMjY3LDcgQEAgYm9vbCBWYWxpZGF0ZUlzVmVydGV4QXJyYXlPRVMoQ29udGV4dCAqYwogewog
ICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnZlcnRleEFycmF5T2JqZWN0KQogICAg
IHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04sICJFeHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRXh0ZW5zaW9uIG5vdCBlbmFibGVkIikp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMDgzLDcgKzEyODIsNyBAQCBi
b29sIFZhbGlkYXRlUHJvZ3JhbUJpbmFyeU9FUyhDb250ZXh0ICpjCiB7CiAgICAgaWYgKCFjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0UHJvZ3JhbUJpbmFyeSkKICAgICB7Ci0gICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRXh0ZW5zaW9u
IG5vdCBlbmFibGVkIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTiwgIkV4dGVuc2lvbiBub3QgZW5hYmxlZCIpKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTA5OSw3ICsxMjk4LDcgQEAgYm9vbCBWYWxpZGF0ZUdl
dFByb2dyYW1CaW5hcnlPRVMoQ29udGV4dAogewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmdldFByb2dyYW1CaW5hcnkpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkV4dGVuc2lvbiBub3QgZW5hYmxlZCIp
KTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04sICJFeHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKQEAgLTExNzEsMjUgKzEzNzAsMjUgQEAgYm9vbCBWYWxpZGF0ZURlYnVnTWVzc2FnZUNv
bnRyb2xLSFIoQ29udAogewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRlYnVn
KQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04sICJFeHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CisgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRXh0ZW5zaW9uIG5vdCBlbmFi
bGVkIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKCFWYWxpZERl
YnVnU291cmNlKHNvdXJjZSwgZmFsc2UpICYmIHNvdXJjZSAhPSBHTF9ET05UX0NBUkUpCiAgICAg
ewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJ
bnZhbGlkIGRlYnVnIHNvdXJjZS4iKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgZGVidWcgc291cmNlLiIpKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmICghVmFsaWREZWJ1Z1R5cGUodHlwZSkgJiYg
dHlwZSAhPSBHTF9ET05UX0NBUkUpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGRlYnVnIHR5cGUuIikpOworICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGRl
YnVnIHR5cGUuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKCFW
YWxpZERlYnVnU2V2ZXJpdHkoc2V2ZXJpdHkpICYmIHNldmVyaXR5ICE9IEdMX0RPTlRfQ0FSRSkK
ICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSwgIkludmFsaWQgZGVidWcgc2V2ZXJpdHkuIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGRlYnVnIHNldmVyaXR5LiIpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTE5Nyw3ICsxMzk2LDcgQEAgYm9v
bCBWYWxpZGF0ZURlYnVnTWVzc2FnZUNvbnRyb2xLSFIoQ29udAogICAgIHsKICAgICAgICAgaWYg
KHNvdXJjZSA9PSBHTF9ET05UX0NBUkUgfHwgdHlwZSA9PSBHTF9ET05UX0NBUkUpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKAorICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoCiAgICAgICAgICAgICAgICAgR0xfSU5WQUxJRF9P
UEVSQVRJT04sCiAgICAgICAgICAgICAgICAgIklmIGNvdW50IGlzIGdyZWF0ZXIgdGhhbiB6ZXJv
LCBzb3VyY2UgYW5kIHNldmVyaXR5IGNhbm5vdCBiZSBHTF9ET05UX0NBUkUuIikpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTIwNSw3ICsxNDA0LDcgQEAgYm9vbCBWYWxpZGF0ZURl
YnVnTWVzc2FnZUNvbnRyb2xLSFIoQ29udAogCiAgICAgICAgIGlmIChzZXZlcml0eSAhPSBHTF9E
T05UX0NBUkUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKAor
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCiAgICAgICAgICAgICAgICAgRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sCiAgICAgICAgICAgICAgICAgICAgICAgIklmIGNvdW50IGlz
IGdyZWF0ZXIgdGhhbiB6ZXJvLCBzZXZlcml0eSBtdXN0IGJlIEdMX0RPTlRfQ0FSRS4iKSk7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMjI1LDExICsxNDI0LDExIEBAIGJvb2wgVmFs
aWRhdGVEZWJ1Z01lc3NhZ2VJbnNlcnRLSFIoQ29udGUKIHsKICAgICBpZiAoIWNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5kZWJ1ZykKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRXh0ZW5zaW9uIG5vdCBlbmFibGVkIikpOwor
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwg
IkV4dGVuc2lvbiBub3QgZW5hYmxlZCIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIGlmICghY29udGV4dC0+Z2V0U3RhdGUoKS5nZXREZWJ1ZygpLmlzT3V0cHV0RW5hYmxl
ZCgpKQorICAgIGlmICghY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldERlYnVnKCkuaXNPdXRwdXRF
bmFibGVkKCkpCiAgICAgewogICAgICAgICAvLyBJZiB0aGUgREVCVUdfT1VUUFVUIHN0YXRlIGlz
IGRpc2FibGVkIGNhbGxzIHRvIERlYnVnTWVzc2FnZUluc2VydCBhcmUgZGlzY2FyZGVkIGFuZCBk
bwogICAgICAgICAvLyBub3QgZ2VuZXJhdGUgYW4gZXJyb3IuCkBAIC0xMjM4LDI2ICsxNDM3LDI2
IEBAIGJvb2wgVmFsaWRhdGVEZWJ1Z01lc3NhZ2VJbnNlcnRLSFIoQ29udGUKIAogICAgIGlmICgh
VmFsaWREZWJ1Z1NldmVyaXR5KHNldmVyaXR5KSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgZGVidWcgc2V2ZXJpdHku
IikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0s
ICJJbnZhbGlkIGRlYnVnIHNldmVyaXR5LiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAogICAgIGlmICghVmFsaWREZWJ1Z1R5cGUodHlwZSkpCiAgICAgewotICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGRlYnVnIHR5
cGUuIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VO
VU0sICJJbnZhbGlkIGRlYnVnIHR5cGUuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCiAgICAgaWYgKCFWYWxpZERlYnVnU291cmNlKHNvdXJjZSwgdHJ1ZSkpCiAgICAgewotICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlk
IGRlYnVnIHNvdXJjZS4iKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfRU5VTSwgIkludmFsaWQgZGVidWcgc291cmNlLiIpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAogICAgIHNpemVfdCBtZXNzYWdlTGVuZ3RoID0gKGxlbmd0aCA8IDAp
ID8gc3RybGVuKGJ1ZikgOiBsZW5ndGg7CiAgICAgaWYgKG1lc3NhZ2VMZW5ndGggPiBjb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkubWF4RGVidWdNZXNzYWdlTGVuZ3RoKQogICAgIHsKLSAgICAgICAg
Y29udGV4dC0+cmVjb3JkRXJyb3IoCisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAogICAg
ICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIk1lc3NhZ2UgbGVuZ3RoIGlzIGxhcmdl
ciB0aGFuIEdMX01BWF9ERUJVR19NRVNTQUdFX0xFTkdUSC4iKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CkBAIC0xMjcxLDcgKzE0NzAsNyBAQCBib29sIFZhbGlkYXRlRGVidWdNZXNz
YWdlQ2FsbGJhY2tLSFIoQ29uCiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
ZGVidWcpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTiwgIkV4dGVuc2lvbiBub3QgZW5hYmxlZCIpKTsKKyAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFeHRlbnNpb24gbm90
IGVuYWJsZWQiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEyOTAsMTMg
KzE0ODksMTMgQEAgYm9vbCBWYWxpZGF0ZUdldERlYnVnTWVzc2FnZUxvZ0tIUihDb250ZQogewog
ICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRlYnVnKQogICAgIHsKLSAgICAgICAg
Y29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFeHRlbnNp
b24gbm90IGVuYWJsZWQiKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLCAiRXh0ZW5zaW9uIG5vdCBlbmFibGVkIikpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKGJ1ZlNpemUgPCAwICYmIG1lc3NhZ2VMb2cg
IT0gbnVsbHB0cikKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKAorICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcigKICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfVkFM
VUUsICJidWZTaXplIG11c3QgYmUgcG9zaXRpdmUgaWYgbWVzc2FnZUxvZyBpcyBub3QgbnVsbC4i
KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xMzEyLDI4ICsxNTExLDI4IEBA
IGJvb2wgVmFsaWRhdGVQdXNoRGVidWdHcm91cEtIUihDb250ZXh0ICoKIHsKICAgICBpZiAoIWNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5kZWJ1ZykKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRXh0ZW5zaW9uIG5vdCBlbmFi
bGVkIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgIkV4dGVuc2lvbiBub3QgZW5hYmxlZCIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAogICAgIGlmICghVmFsaWREZWJ1Z1NvdXJjZShzb3VyY2UsIHRydWUpKQogICAg
IHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAi
SW52YWxpZCBkZWJ1ZyBzb3VyY2UuIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGRlYnVnIHNvdXJjZS4iKSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBzaXplX3QgbWVzc2FnZUxlbmd0aCA9IChsZW5n
dGggPCAwKSA/IHN0cmxlbihtZXNzYWdlKSA6IGxlbmd0aDsKICAgICBpZiAobWVzc2FnZUxlbmd0
aCA+IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5tYXhEZWJ1Z01lc3NhZ2VMZW5ndGgpCiAgICAg
ewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcigKKyAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoCiAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiTWVzc2FnZSBsZW5n
dGggaXMgbGFyZ2VyIHRoYW4gR0xfTUFYX0RFQlVHX01FU1NBR0VfTEVOR1RILiIpKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHNpemVfdCBjdXJyZW50U3RhY2tTaXplID0g
Y29udGV4dC0+Z2V0U3RhdGUoKS5nZXREZWJ1ZygpLmdldEdyb3VwU3RhY2tEZXB0aCgpOworICAg
IHNpemVfdCBjdXJyZW50U3RhY2tTaXplID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldERlYnVn
KCkuZ2V0R3JvdXBTdGFja0RlcHRoKCk7CiAgICAgaWYgKGN1cnJlbnRTdGFja1NpemUgPj0gY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLm1heERlYnVnR3JvdXBTdGFja0RlcHRoKQogICAgIHsKLSAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoCisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KAogICAgICAgICAgICAgRXJyb3IoR0xfU1RBQ0tfT1ZFUkZMT1csCiAgICAgICAgICAgICAgICAg
ICAiQ2Fubm90IHB1c2ggbW9yZSB0aGFuIEdMX01BWF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSCBk
ZWJ1ZyBncm91cHMuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzQ2LDE0ICsxNTQ1
LDE0IEBAIGJvb2wgVmFsaWRhdGVQb3BEZWJ1Z0dyb3VwS0hSKENvbnRleHQgKmMKIHsKICAgICBp
ZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kZWJ1ZykKICAgICB7Ci0gICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRXh0ZW5zaW9uIG5v
dCBlbmFibGVkIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTiwgIkV4dGVuc2lvbiBub3QgZW5hYmxlZCIpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIHNpemVfdCBjdXJyZW50U3RhY2tTaXplID0gY29udGV4dC0+
Z2V0U3RhdGUoKS5nZXREZWJ1ZygpLmdldEdyb3VwU3RhY2tEZXB0aCgpOworICAgIHNpemVfdCBj
dXJyZW50U3RhY2tTaXplID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldERlYnVnKCkuZ2V0R3Jv
dXBTdGFja0RlcHRoKCk7CiAgICAgaWYgKGN1cnJlbnRTdGFja1NpemUgPD0gMSkKICAgICB7Ci0g
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX1NUQUNLX1VOREVSRkxPVywgIkNh
bm5vdCBwb3AgdGhlIGRlZmF1bHQgZGVidWcgZ3JvdXAuIikpOworICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9TVEFDS19VTkRFUkZMT1csICJDYW5ub3QgcG9wIHRoZSBkZWZh
dWx0IGRlYnVnIGdyb3VwLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAt
MTM2Nyw3ICsxNTY2LDcgQEAgc3RhdGljIGJvb2wgVmFsaWRhdGVPYmplY3RJZGVudGlmaWVyQW5k
TgogICAgICAgICBjYXNlIEdMX0JVRkZFUjoKICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRC
dWZmZXIobmFtZSkgPT0gbnVsbHB0cikKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAibmFtZSBpcyBub3Qg
YSB2YWxpZCBidWZmZXIuIikpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJuYW1lIGlzIG5vdCBhIHZhbGlkIGJ1ZmZlci4iKSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC0xMzc1LDcgKzE1NzQsNyBAQCBzdGF0aWMgYm9vbCBWYWxpZGF0
ZU9iamVjdElkZW50aWZpZXJBbmROCiAgICAgICAgIGNhc2UgR0xfU0hBREVSOgogICAgICAgICAg
ICAgaWYgKGNvbnRleHQtPmdldFNoYWRlcihuYW1lKSA9PSBudWxscHRyKQogICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURf
VkFMVUUsICJuYW1lIGlzIG5vdCBhIHZhbGlkIHNoYWRlci4iKSk7CisgICAgICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIm5hbWUgaXMgbm90
IGEgdmFsaWQgc2hhZGVyLiIpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEzODMsNyArMTU4Miw3IEBA
IHN0YXRpYyBib29sIFZhbGlkYXRlT2JqZWN0SWRlbnRpZmllckFuZE4KICAgICAgICAgY2FzZSBH
TF9QUk9HUkFNOgogICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFByb2dyYW0obmFtZSkgPT0g
bnVsbHB0cikKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAibmFtZSBpcyBub3QgYSB2YWxpZCBwcm9ncmFt
LiIpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX1ZBTFVFLCAibmFtZSBpcyBub3QgYSB2YWxpZCBwcm9ncmFtLiIpKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTEzOTEsNyArMTU5MCw3IEBAIHN0YXRpYyBib29sIFZhbGlkYXRlT2JqZWN0SWRlbnRp
ZmllckFuZE4KICAgICAgICAgY2FzZSBHTF9WRVJURVhfQVJSQVk6CiAgICAgICAgICAgICBpZiAo
Y29udGV4dC0+Z2V0VmVydGV4QXJyYXkobmFtZSkgPT0gbnVsbHB0cikKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZB
TFVFLCAibmFtZSBpcyBub3QgYSB2YWxpZCB2ZXJ0ZXggYXJyYXkuIikpOworICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJuYW1lIGlz
IG5vdCBhIHZhbGlkIHZlcnRleCBhcnJheS4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMzk5LDcg
KzE1OTgsNyBAQCBzdGF0aWMgYm9vbCBWYWxpZGF0ZU9iamVjdElkZW50aWZpZXJBbmROCiAgICAg
ICAgIGNhc2UgR0xfUVVFUlk6CiAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0UXVlcnkobmFt
ZSkgPT0gbnVsbHB0cikKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAibmFtZSBpcyBub3QgYSB2YWxpZCBx
dWVyeS4iKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSwgIm5hbWUgaXMgbm90IGEgdmFsaWQgcXVlcnkuIikpOwogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtMTQwNyw3ICsxNjA2LDcgQEAgc3RhdGljIGJvb2wgVmFsaWRhdGVPYmplY3RJZGVu
dGlmaWVyQW5kTgogICAgICAgICBjYXNlIEdMX1RSQU5TRk9STV9GRUVEQkFDSzoKICAgICAgICAg
ICAgIGlmIChjb250ZXh0LT5nZXRUcmFuc2Zvcm1GZWVkYmFjayhuYW1lKSA9PSBudWxscHRyKQog
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKAorICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAogICAgICAgICAgICAgICAgICAgICBF
cnJvcihHTF9JTlZBTElEX1ZBTFVFLCAibmFtZSBpcyBub3QgYSB2YWxpZCB0cmFuc2Zvcm0gZmVl
ZGJhY2suIikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0K
QEAgLTE0MTYsNyArMTYxNSw3IEBAIHN0YXRpYyBib29sIFZhbGlkYXRlT2JqZWN0SWRlbnRpZmll
ckFuZE4KICAgICAgICAgY2FzZSBHTF9TQU1QTEVSOgogICAgICAgICAgICAgaWYgKGNvbnRleHQt
PmdldFNhbXBsZXIobmFtZSkgPT0gbnVsbHB0cikKICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAibmFtZSBp
cyBub3QgYSB2YWxpZCBzYW1wbGVyLiIpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAibmFtZSBpcyBub3QgYSB2YWxpZCBzYW1w
bGVyLiIpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE0MjQsNyArMTYyMyw3IEBAIHN0YXRpYyBib29s
IFZhbGlkYXRlT2JqZWN0SWRlbnRpZmllckFuZE4KICAgICAgICAgY2FzZSBHTF9URVhUVVJFOgog
ICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFRleHR1cmUobmFtZSkgPT0gbnVsbHB0cikKICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX1ZBTFVFLCAibmFtZSBpcyBub3QgYSB2YWxpZCB0ZXh0dXJlLiIpKTsKKyAgICAg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAi
bmFtZSBpcyBub3QgYSB2YWxpZCB0ZXh0dXJlLiIpKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE0MzIs
NyArMTYzMSw3IEBAIHN0YXRpYyBib29sIFZhbGlkYXRlT2JqZWN0SWRlbnRpZmllckFuZE4KICAg
ICAgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVI6CiAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0
UmVuZGVyYnVmZmVyKG5hbWUpID09IG51bGxwdHIpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIm5hbWUg
aXMgbm90IGEgdmFsaWQgcmVuZGVyYnVmZmVyLiIpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAibmFtZSBpcyBub3QgYSB2YWxp
ZCByZW5kZXJidWZmZXIuIikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTQ0MCwxNSArMTYzOSwzOSBA
QCBzdGF0aWMgYm9vbCBWYWxpZGF0ZU9iamVjdElkZW50aWZpZXJBbmROCiAgICAgICAgIGNhc2Ug
R0xfRlJBTUVCVUZGRVI6CiAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0RnJhbWVidWZmZXIo
bmFtZSkgPT0gbnVsbHB0cikKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAibmFtZSBpcyBub3QgYSB2YWxp
ZCBmcmFtZWJ1ZmZlci4iKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIm5hbWUgaXMgbm90IGEgdmFsaWQgZnJhbWVidWZmZXIu
IikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGlkZW50aWZp
ZXIuIikpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9FTlVNLCAiSW52YWxpZCBpZGVudGlmaWVyLiIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9Cit9CisKK3N0YXRpYyBib29sIFZhbGlkYXRlTGFiZWxMZW5ndGgoQ29udGV4dCAq
Y29udGV4dCwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdMY2hhciAqbGFiZWwpCit7CisgICAgc2l6
ZV90IGxhYmVsTGVuZ3RoID0gMDsKKworICAgIGlmIChsZW5ndGggPCAwKQorICAgIHsKKyAgICAg
ICAgaWYgKGxhYmVsICE9IG51bGxwdHIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxhYmVsTGVu
Z3RoID0gc3RybGVuKGxhYmVsKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgewor
ICAgICAgICBsYWJlbExlbmd0aCA9IHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKTsKKyAgICB9
CisKKyAgICBpZiAobGFiZWxMZW5ndGggPiBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkubWF4TGFi
ZWxMZW5ndGgpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAg
ICAgIEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJMYWJlbCBsZW5ndGggaXMgbGFyZ2VyIHRoYW4g
R0xfTUFYX0xBQkVMX0xFTkdUSC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTE0NjEsNyArMTY4NCw3IEBAIGJvb2wgVmFsaWRhdGVP
YmplY3RMYWJlbEtIUihDb250ZXh0ICpjb24KIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5kZWJ1ZykKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRXh0ZW5zaW9uIG5vdCBlbmFibGVkIikpOworICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkV4dGVu
c2lvbiBub3QgZW5hYmxlZCIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAt
MTQ3MCwxMSArMTY5Myw4IEBAIGJvb2wgVmFsaWRhdGVPYmplY3RMYWJlbEtIUihDb250ZXh0ICpj
b24KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHNpemVfdCBsYWJlbExlbmd0
aCA9IChsZW5ndGggPCAwKSA/IHN0cmxlbihsYWJlbCkgOiBsZW5ndGg7Ci0gICAgaWYgKGxhYmVs
TGVuZ3RoID4gY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLm1heExhYmVsTGVuZ3RoKQorICAgIGlm
ICghVmFsaWRhdGVMYWJlbExlbmd0aChjb250ZXh0LCBsZW5ndGgsIGxhYmVsKSkKICAgICB7Ci0g
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKAotICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSwgIkxhYmVsIGxlbmd0aCBpcyBsYXJnZXIgdGhhbiBHTF9NQVhfTEFCRUxfTEVOR1RI
LiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTQ5MCwxMyArMTcxMCwx
MyBAQCBib29sIFZhbGlkYXRlR2V0T2JqZWN0TGFiZWxLSFIoQ29udGV4dCAqCiB7CiAgICAgaWYg
KCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGVidWcpCiAgICAgewotICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkV4dGVuc2lvbiBub3Qg
ZW5hYmxlZCIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04sICJFeHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKICAgICBpZiAoYnVmU2l6ZSA8IDApCiAgICAgewotICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiYnVmU2l6ZSBjYW5ub3Qg
YmUgbmVnYXRpdmUuIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX1ZBTFVFLCAiYnVmU2l6ZSBjYW5ub3QgYmUgbmVnYXRpdmUuIikpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xNTA1LDE1ICsxNzI1LDE0IEBAIGJvb2wgVmFsaWRh
dGVHZXRPYmplY3RMYWJlbEtIUihDb250ZXh0ICoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIC8vIENhbiBuby1vcCBpZiBidWZTaXplIGlzIHplcm8uCi0gICAgcmV0dXJuIGJ1
ZlNpemUgPiAwOworICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBWYWxpZGF0ZU9i
amVjdFB0ck5hbWUoQ29udGV4dCAqY29udGV4dCwgY29uc3Qgdm9pZCAqcHRyKQogewogICAgIGlm
IChjb250ZXh0LT5nZXRGZW5jZVN5bmMocmVpbnRlcnByZXRfY2FzdDxHTHN5bmM+KGNvbnN0X2Nh
c3Q8dm9pZCAqPihwdHIpKSkgPT0gbnVsbHB0cikKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJuYW1lIGlzIG5vdCBhIHZhbGlkIHN5
bmMuIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZB
TFVFLCAibmFtZSBpcyBub3QgYSB2YWxpZCBzeW5jLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIApAQCAtMTUyNyw3ICsxNzQ2LDcgQEAgYm9vbCBWYWxpZGF0ZU9iamVjdFB0ckxh
YmVsS0hSKENvbnRleHQgKgogewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRl
YnVnKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04sICJFeHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CisgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRXh0ZW5zaW9uIG5vdCBl
bmFibGVkIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xNTM2LDExICsx
NzU1LDggQEAgYm9vbCBWYWxpZGF0ZU9iamVjdFB0ckxhYmVsS0hSKENvbnRleHQgKgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgc2l6ZV90IGxhYmVsTGVuZ3RoID0gKGxlbmd0
aCA8IDApID8gc3RybGVuKGxhYmVsKSA6IGxlbmd0aDsKLSAgICBpZiAobGFiZWxMZW5ndGggPiBj
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkubWF4TGFiZWxMZW5ndGgpCisgICAgaWYgKCFWYWxpZGF0
ZUxhYmVsTGVuZ3RoKGNvbnRleHQsIGxlbmd0aCwgbGFiZWwpKQogICAgIHsKLSAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoCi0gICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAi
TGFiZWwgbGVuZ3RoIGlzIGxhcmdlciB0aGFuIEdMX01BWF9MQUJFTF9MRU5HVEguIikpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xNTU1LDEzICsxNzcxLDEzIEBAIGJvb2wg
VmFsaWRhdGVHZXRPYmplY3RQdHJMYWJlbEtIUihDb250ZXgKIHsKICAgICBpZiAoIWNvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5kZWJ1ZykKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRXh0ZW5zaW9uIG5vdCBlbmFibGVkIikp
OworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TiwgIkV4dGVuc2lvbiBub3QgZW5hYmxlZCIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAogICAgIGlmIChidWZTaXplIDwgMCkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJidWZTaXplIGNhbm5vdCBiZSBuZWdhdGl2
ZS4iKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFM
VUUsICJidWZTaXplIGNhbm5vdCBiZSBuZWdhdGl2ZS4iKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKQEAgLTE1NzAsMTUgKzE3ODYsMTQgQEAgYm9vbCBWYWxpZGF0ZUdldE9iamVj
dFB0ckxhYmVsS0hSKENvbnRleAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAg
Ly8gQ2FuIG5vLW9wIGlmIGJ1ZlNpemUgaXMgemVyby4KLSAgICByZXR1cm4gYnVmU2l6ZSA+IDA7
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgVmFsaWRhdGVHZXRQb2ludGVydktIUihDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIHZvaWQgKipwYXJhbXMpCiB7CiAgICAgaWYgKCFj
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGVidWcpCiAgICAgewotICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkV4dGVuc2lvbiBub3QgZW5h
YmxlZCIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04sICJFeHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKQEAgLTE1OTAsNyArMTgwNSw3IEBAIGJvb2wgVmFsaWRhdGVHZXRQb2ludGVy
dktIUihDb250ZXh0ICpjb24KICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0s
ICJJbnZhbGlkIHBuYW1lLiIpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgcG5hbWUuIikpOwogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTYxMSwxNCArMTgyNiwxNCBAQCBib29sIFZhbGlkYXRl
QmxpdEZyYW1lYnVmZmVyQU5HTEUoQ29udGV4CiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkuZnJhbWVidWZmZXJCbGl0KQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJCbGl0IGV4dGVuc2lvbiBub3QgYXZh
aWxhYmxlLiIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04sICJCbGl0IGV4dGVuc2lvbiBub3QgYXZhaWxhYmxlLiIpKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChzcmNYMSAtIHNyY1gwICE9IGRzdFgxIC0g
ZHN0WDAgfHwgc3JjWTEgLSBzcmNZMCAhPSBkc3RZMSAtIGRzdFkwKQogICAgIHsKICAgICAgICAg
Ly8gVE9ETyhqbWFkaWxsKTogRGV0ZXJtaW5lIGlmIHRoaXMgc2hvdWxkIGJlIGF2YWlsYWJsZSBv
biBvdGhlciBpbXBsZW1lbnRhdGlvbnMuCi0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKAorICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcigKICAgICAgICAgICAgIEdM
X0lOVkFMSURfT1BFUkFUSU9OLAogICAgICAgICAgICAgIlNjYWxpbmcgYW5kIGZsaXBwaW5nIGlu
IEJsaXRGcmFtZWJ1ZmZlckFOR0xFIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlv
bi4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE2MjYsMTIgKzE4NDEsMTIgQEAgYm9v
bCBWYWxpZGF0ZUJsaXRGcmFtZWJ1ZmZlckFOR0xFKENvbnRleAogCiAgICAgaWYgKGZpbHRlciA9
PSBHTF9MSU5FQVIpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX0VOVU0sICJMaW5lYXIgYmxpdCBub3Qgc3VwcG9ydGVkIGluIHRoaXMgZXh0ZW5z
aW9uIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VO
VU0sICJMaW5lYXIgYmxpdCBub3Qgc3VwcG9ydGVkIGluIHRoaXMgZXh0ZW5zaW9uIikpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgY29uc3QgRnJhbWVidWZmZXIgKnJlYWRG
cmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0UmVhZEZyYW1lYnVmZmVyKCk7Ci0g
ICAgY29uc3QgRnJhbWVidWZmZXIgKmRyYXdGcmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldFN0YXRl
KCkuZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7CisgICAgRnJhbWVidWZmZXIgKnJlYWRGcmFtZWJ1ZmZl
ciA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRSZWFkRnJhbWVidWZmZXIoKTsKKyAgICBGcmFt
ZWJ1ZmZlciAqZHJhd0ZyYW1lYnVmZmVyID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldERyYXdG
cmFtZWJ1ZmZlcigpOwogCiAgICAgaWYgKG1hc2sgJiBHTF9DT0xPUl9CVUZGRVJfQklUKQogICAg
IHsKQEAgLTE2NDUsNyArMTg2MCw3IEBAIGJvb2wgVmFsaWRhdGVCbGl0RnJhbWVidWZmZXJBTkdM
RShDb250ZXgKICAgICAgICAgICAgICAgICByZWFkQ29sb3JBdHRhY2htZW50LT50eXBlKCkgIT0g
R0xfUkVOREVSQlVGRkVSICYmCiAgICAgICAgICAgICAgICAgcmVhZENvbG9yQXR0YWNobWVudC0+
dHlwZSgpICE9IEdMX0ZSQU1FQlVGRkVSX0RFRkFVTFQpCiAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IH0KIApAQCAtMTY2MSwyNiArMTg3NiwyNSBAQCBib29sIFZhbGlkYXRlQmxpdEZyYW1lYnVmZmVy
QU5HTEUoQ29udGV4CiAgICAgICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50LT50eXBlKCkg
IT0gR0xfUkVOREVSQlVGRkVSICYmCiAgICAgICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50
LT50eXBlKCkgIT0gR0xfRlJBTUVCVUZGRVJfREVGQVVMVCkKICAgICAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgICAgICAgICAvLyBSZXR1cm4gYW4gZXJyb3IgaWYgdGhlIGRlc3RpbmF0aW9uIGZvcm1hdHMg
ZG8gbm90IG1hdGNoCi0gICAgICAgICAgICAgICAgICAgIGlmIChhdHRhY2htZW50LT5nZXRJbnRl
cm5hbEZvcm1hdCgpICE9IHJlYWRDb2xvckF0dGFjaG1lbnQtPmdldEludGVybmFsRm9ybWF0KCkp
CisgICAgICAgICAgICAgICAgICAgIGlmICghRm9ybWF0OjpTYW1lU2l6ZWQoYXR0YWNobWVudC0+
Z2V0Rm9ybWF0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVhZENvbG9yQXR0YWNobWVudC0+Z2V0Rm9ybWF0KCkpKQogICAgICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaW50IHJlYWRTYW1wbGVzID0gcmVh
ZEZyYW1lYnVmZmVyLT5nZXRTYW1wbGVzKGNvbnRleHQtPmdldERhdGEoKSk7Ci0KLSAgICAgICAg
ICAgIGlmIChyZWFkU2FtcGxlcyAhPSAwICYmCisgICAgICAgICAgICBpZiAocmVhZEZyYW1lYnVm
ZmVyLT5nZXRTYW1wbGVzKGNvbnRleHQtPmdldENvbnRleHRTdGF0ZSgpKSAhPSAwICYmCiAgICAg
ICAgICAgICAgICAgSXNQYXJ0aWFsQmxpdChjb250ZXh0LCByZWFkQ29sb3JBdHRhY2htZW50LCBk
cmF3Q29sb3JBdHRhY2htZW50LCBzcmNYMCwgc3JjWTAsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxKSkKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNzA2LDEzICsxOTIwLDEzIEBAIGJv
b2wgVmFsaWRhdGVCbGl0RnJhbWVidWZmZXJBTkdMRShDb250ZXgKICAgICAgICAgICAgICAgICAg
ICAgRVJSKAogICAgICAgICAgICAgICAgICAgICAgICAgIk9ubHkgd2hvbGUtYnVmZmVyIGRlcHRo
IGFuZCBzdGVuY2lsIGJsaXRzIGFyZSBzdXBwb3J0ZWQgYnkgdGhpcyAiCiAgICAgICAgICAgICAg
ICAgICAgICAgICAiaW1wbGVtZW50YXRpb24uIik7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgICAgICBpZiAocmVhZEJ1ZmZlci0+Z2V0U2FtcGxlcygpICE9IDAgfHwg
ZHJhd0J1ZmZlci0+Z2V0U2FtcGxlcygpICE9IDApCiAgICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTikpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMTcyNSwxOCArMTkzOSwxNiBA
QCBib29sIFZhbGlkYXRlQmxpdEZyYW1lYnVmZmVyQU5HTEUoQ29udGV4CiAKIGJvb2wgVmFsaWRh
dGVDbGVhcihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xiaXRmaWVsZCBtYXNrKQogewot
ICAgIGNvbnN0IEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlck9iamVjdCA9IGNvbnRleHQtPmdldFN0
YXRlKCkuZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7Ci0gICAgQVNTRVJUKGZyYW1lYnVmZmVyT2JqZWN0
KTsKLQotICAgIGlmIChmcmFtZWJ1ZmZlck9iamVjdC0+Y2hlY2tTdGF0dXMoY29udGV4dC0+Z2V0
RGF0YSgpKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKKyAgICBhdXRvIGZibyA9IGNvbnRl
eHQtPmdldEdMU3RhdGUoKS5nZXREcmF3RnJhbWVidWZmZXIoKTsKKyAgICBpZiAoZmJvLT5jaGVj
a1N0YXR1cyhjb250ZXh0LT5nZXRDb250ZXh0U3RhdGUoKSkgIT0gR0xfRlJBTUVCVUZGRVJfQ09N
UExFVEUpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZB
TElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTikpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKChtYXNrICYgfihHTF9DT0xPUl9CVUZGRVJfQklU
IHwgR0xfREVQVEhfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCkpICE9IDApCiAg
ICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVF
KSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUp
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTc0Nyw3ICsxOTU5LDcgQEAg
Ym9vbCBWYWxpZGF0ZURyYXdCdWZmZXJzRVhUKFZhbGlkYXRpb25DbwogewogICAgIGlmICghY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzKQogICAgIHsKLSAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFeHRlbnNpb24gbm90
IHN1cHBvcnRlZC4iKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAiRXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQuIikpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xNzY1LDE1ICsxOTc3LDQ2IEBAIGJvb2wgVmFsaWRh
dGVUZXhJbWFnZTJEKENvbnRleHQgKmNvbnRleHQKICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwaXhlbHMp
CiB7Ci0gICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgaWYgKGNv
bnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKKyAgICB7CisgICAgICAgIHJldHVy
biBWYWxpZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVycyhjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgZmFsc2UsIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMCwgMCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5
cGUsIC0xLCBwaXhlbHMpOworICAgIH0KKworICAgIEFTU0VSVChjb250ZXh0LT5nZXRDbGllbnRN
YWpvclZlcnNpb24oKSA+PSAzKTsKKyAgICByZXR1cm4gVmFsaWRhdGVFUzNUZXhJbWFnZTJEUGFy
YW1ldGVycyhjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgZmFsc2UsIGZh
bHNlLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAs
IHdpZHRoLCBoZWlnaHQsIDEsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCAtMSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbHMpOworfQorCitib29sIFZhbGlk
YXRlVGV4SW1hZ2UyRFJvYnVzdChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJu
YWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscykKK3sK
KyAgICBpZiAoIVZhbGlkYXRlUm9idXN0RW50cnlQb2ludChjb250ZXh0LCBidWZTaXplKSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoY29udGV4dC0+Z2V0
Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKICAgICAgICAgcmV0dXJuIFZhbGlkYXRl
RVMyVGV4SW1hZ2VQYXJhbWV0ZXJzKGNvbnRleHQsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCBmYWxzZSwgZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLCAwLCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxz
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIHdp
ZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBidWZTaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxzKTsKICAgICB9CiAKLSAgICBB
U1NFUlQoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpID49IDMpOworICAgIEFTU0VSVChjb250
ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA+PSAzKTsKICAgICByZXR1cm4gVmFsaWRhdGVF
UzNUZXhJbWFnZTJEUGFyYW1ldGVycyhjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZv
cm1hdCwgZmFsc2UsIGZhbHNlLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAsIDAsIHdpZHRoLCBoZWlnaHQsIDEsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBw
aXhlbHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAs
IHdpZHRoLCBoZWlnaHQsIDEsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBidWZTaXplLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVscyk7CiB9CiAKIGJvb2wg
VmFsaWRhdGVUZXhTdWJJbWFnZTJEKENvbnRleHQgKmNvbnRleHQsCkBAIC0xNzg4LDE1ICsyMDMx
LDQ2IEBAIGJvb2wgVmFsaWRhdGVUZXhTdWJJbWFnZTJEKENvbnRleHQgKmNvbnQKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcGl4ZWxzKQogewogCi0gICAgaWYgKGNv
bnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgaWYgKGNvbnRleHQtPmdldENsaWVu
dE1ham9yVmVyc2lvbigpIDwgMykKKyAgICB7CisgICAgICAgIHJldHVybiBWYWxpZGF0ZUVTMlRl
eEltYWdlUGFyYW1ldGVycyhjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBHTF9OT05FLCBmYWxzZSwg
dHJ1ZSwgeG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIDAsIGZvcm1hdCwgdHlwZSwgLTEsIHBpeGVscyk7
CisgICAgfQorCisgICAgQVNTRVJUKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpID49
IDMpOworICAgIHJldHVybiBWYWxpZGF0ZUVTM1RleEltYWdlMkRQYXJhbWV0ZXJzKGNvbnRleHQs
IHRhcmdldCwgbGV2ZWwsIEdMX05PTkUsIGZhbHNlLCB0cnVlLCB4b2Zmc2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvZmZzZXQsIDAsIHdpZHRoLCBoZWln
aHQsIDEsIDAsIGZvcm1hdCwgdHlwZSwgLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGl4ZWxzKTsKK30KKworYm9vbCBWYWxpZGF0ZVRleFN1YkltYWdlMkRS
b2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgeG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgeW9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBm
b3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcGl4
ZWxzKQoreworICAgIGlmICghVmFsaWRhdGVSb2J1c3RFbnRyeVBvaW50KGNvbnRleHQsIGJ1ZlNp
emUpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChjb250
ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgewogICAgICAgICByZXR1cm4g
VmFsaWRhdGVFUzJUZXhJbWFnZVBhcmFtZXRlcnMoY29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgR0xf
Tk9ORSwgZmFsc2UsIHRydWUsIHhvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCAwLCBmb3JtYXQsIHR5cGUs
IHBpeGVscyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5
b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCAwLCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbHMpOwogICAgIH0KIAot
ICAgIEFTU0VSVChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPj0gMyk7CisgICAgQVNTRVJU
KGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpID49IDMpOwogICAgIHJldHVybiBWYWxp
ZGF0ZUVTM1RleEltYWdlMkRQYXJhbWV0ZXJzKGNvbnRleHQsIHRhcmdldCwgbGV2ZWwsIEdMX05P
TkUsIGZhbHNlLCB0cnVlLCB4b2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHlvZmZzZXQsIDAsIHdpZHRoLCBoZWlnaHQsIDEsIDAsIGZvcm1hdCwgdHlw
ZSwgcGl4ZWxzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5
b2Zmc2V0LCAwLCB3aWR0aCwgaGVpZ2h0LCAxLCAwLCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxzKTsKIH0KIAog
Ym9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhJbWFnZTJEKENvbnRleHQgKmNvbnRleHQsCkBAIC0x
ODA5LDE5ICsyMDgzLDE5IEBAIGJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4SW1hZ2UyRChDb250
ZXgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGltYWdlU2l6ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmRhdGEpCiB7
Ci0gICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgaWYgKGNvbnRl
eHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7CiAgICAgICAgIGlmICghVmFs
aWRhdGVFUzJUZXhJbWFnZVBhcmFtZXRlcnMoY29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIHRydWUsIGZhbHNlLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgR0xfTk9ORSwgR0xfTk9ORSwg
ZGF0YSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgd2lk
dGgsIGhlaWdodCwgYm9yZGVyLCBHTF9OT05FLCBHTF9OT05FLCAtMSwgZGF0YSkpCiAgICAgICAg
IHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNl
CiAgICAgewotICAgICAgICBBU1NFUlQoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpID49IDMp
OworICAgICAgICBBU1NFUlQoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPj0gMyk7
CiAgICAgICAgIGlmICghVmFsaWRhdGVFUzNUZXhJbWFnZTJEUGFyYW1ldGVycyhjb250ZXh0LCB0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgdHJ1ZSwgZmFsc2UsIDAsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCB3aWR0aCwgaGVpZ2h0LCAx
LCBib3JkZXIsIEdMX05PTkUsIEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLCAwLCB3aWR0aCwgaGVpZ2h0LCAxLCBib3JkZXIsIEdMX05PTkUs
IEdMX05PTkUsIC0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE4Mjks
MTEgKzIxMDMsMTcgQEAgYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhJbWFnZTJEKENvbnRleAog
ICAgIH0KIAogICAgIGNvbnN0IEludGVybmFsRm9ybWF0ICZmb3JtYXRJbmZvID0gR2V0SW50ZXJu
YWxGb3JtYXRJbmZvKGludGVybmFsZm9ybWF0KTsKLSAgICBpZiAoaW1hZ2VTaXplIDwgMCB8fAot
ICAgICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+KGltYWdlU2l6ZSkgIT0KLSAgICAgICAgICAgIGZv
cm1hdEluZm8uY29tcHV0ZUJsb2NrU2l6ZShHTF9VTlNJR05FRF9CWVRFLCB3aWR0aCwgaGVpZ2h0
KSkKKyAgICBhdXRvIGJsb2NrU2l6ZU9yRXJyID0KKyAgICAgICAgZm9ybWF0SW5mby5jb21wdXRl
Q29tcHJlc3NlZEltYWdlU2l6ZShHTF9VTlNJR05FRF9CWVRFLCBnbDo6RXh0ZW50cyh3aWR0aCwg
aGVpZ2h0LCAxKSk7CisgICAgaWYgKGJsb2NrU2l6ZU9yRXJyLmlzRXJyb3IoKSkKKyAgICB7Cisg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKGJsb2NrU2l6ZU9yRXJyLmdldEVycm9yKCkpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGltYWdlU2l6ZSA8IDAgfHwg
c3RhdGljX2Nhc3Q8R0x1aW50PihpbWFnZVNpemUpICE9IGJsb2NrU2l6ZU9yRXJyLmdldFJlc3Vs
dCgpKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X1ZBTFVFKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE4NTEsMTkgKzIx
MzEsMTkgQEAgYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKENvbgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW1hZ2VTaXplLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqZGF0YSkKIHsKLSAg
ICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICBpZiAoY29udGV4dC0+
Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKICAgICAgICAgaWYgKCFWYWxpZGF0
ZUVTMlRleEltYWdlUGFyYW1ldGVycyhjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBHTF9OT05FLCB0
cnVlLCB0cnVlLCB4b2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIDAsIEdMX05PTkUsIEdMX05PTkUsIGRhdGEp
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvZmZzZXQsIHdp
ZHRoLCBoZWlnaHQsIDAsIEdMX05PTkUsIEdMX05PTkUsIC0xLCBkYXRhKSkKICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UKICAg
ICB7Ci0gICAgICAgIEFTU0VSVChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPj0gMyk7Cisg
ICAgICAgIEFTU0VSVChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA+PSAzKTsKICAg
ICAgICAgaWYgKCFWYWxpZGF0ZUVTM1RleEltYWdlMkRQYXJhbWV0ZXJzKGNvbnRleHQsIHRhcmdl
dCwgbGV2ZWwsIEdMX05PTkUsIHRydWUsIHRydWUsIHhvZmZzZXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b2Zmc2V0LCAwLCB3aWR0aCwgaGVpZ2h0LCAx
LCAwLCBHTF9OT05FLCBHTF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeW9mZnNldCwgMCwgd2lkdGgsIGhlaWdodCwgMSwgMCwgR0xfTk9ORSwgR0xf
Tk9ORSwgLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
YXRhKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTg3MSwxMSAr
MjE1MSwxNyBAQCBib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkltYWdlMkQoQ29uCiAgICAg
fQogCiAgICAgY29uc3QgSW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBHZXRJbnRlcm5hbEZv
cm1hdEluZm8oZm9ybWF0KTsKLSAgICBpZiAoaW1hZ2VTaXplIDwgMCB8fAotICAgICAgICBzdGF0
aWNfY2FzdDxHTHVpbnQ+KGltYWdlU2l6ZSkgIT0KLSAgICAgICAgICAgIGZvcm1hdEluZm8uY29t
cHV0ZUJsb2NrU2l6ZShHTF9VTlNJR05FRF9CWVRFLCB3aWR0aCwgaGVpZ2h0KSkKKyAgICBhdXRv
IGJsb2NrU2l6ZU9yRXJyID0KKyAgICAgICAgZm9ybWF0SW5mby5jb21wdXRlQ29tcHJlc3NlZElt
YWdlU2l6ZShHTF9VTlNJR05FRF9CWVRFLCBnbDo6RXh0ZW50cyh3aWR0aCwgaGVpZ2h0LCAxKSk7
CisgICAgaWYgKGJsb2NrU2l6ZU9yRXJyLmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKGJsb2NrU2l6ZU9yRXJyLmdldEVycm9yKCkpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGltYWdlU2l6ZSA8IDAgfHwgc3RhdGljX2Nhc3Q8
R0x1aW50PihpbWFnZVNpemUpICE9IGJsb2NrU2l6ZU9yRXJyLmdldFJlc3VsdCgpKQogICAgIHsK
LSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwor
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE4ODQsNDYgKzIxNzAsNDAgQEAgYm9v
bCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKENvbgogCiBib29sIFZhbGlkYXRlR2V0
QnVmZmVyUG9pbnRlcnZPRVMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVt
IHBuYW1lLCB2b2lkICoqcGFyYW1zKQogewotICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLm1hcEJ1ZmZlcikKLSAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiTWFwIGJ1ZmZlciBleHRlbnNpb24gbm90IGF2YWlsYWJs
ZS4iKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gVmFsaWRh
dGVHZXRCdWZmZXJQb2ludGVydkJhc2UoY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgcGFyYW1zKTsK
KyAgICByZXR1cm4gVmFsaWRhdGVHZXRCdWZmZXJQb2ludGVydkJhc2UoY29udGV4dCwgdGFyZ2V0
LCBwbmFtZSwgbnVsbHB0ciwgcGFyYW1zKTsKIH0KIAogYm9vbCBWYWxpZGF0ZU1hcEJ1ZmZlck9F
UyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gYWNjZXNzKQogewogICAg
IGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLm1hcEJ1ZmZlcikKICAgICB7Ci0gICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiTWFwIGJ1
ZmZlciBleHRlbnNpb24gbm90IGF2YWlsYWJsZS4iKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiTWFwIGJ1ZmZlciBleHRlbnNpb24g
bm90IGF2YWlsYWJsZS4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBp
ZiAoIVZhbGlkQnVmZmVyVGFyZ2V0KGNvbnRleHQsIHRhcmdldCkpCiAgICAgewotICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGJ1ZmZl
ciB0YXJnZXQuIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX0VOVU0sICJJbnZhbGlkIGJ1ZmZlciB0YXJnZXQuIikpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgQnVmZmVyICpidWZmZXIgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdl
dFRhcmdldEJ1ZmZlcih0YXJnZXQpOworICAgIEJ1ZmZlciAqYnVmZmVyID0gY29udGV4dC0+Z2V0
R0xTdGF0ZSgpLmdldFRhcmdldEJ1ZmZlcih0YXJnZXQpOwogCiAgICAgaWYgKGJ1ZmZlciA9PSBu
dWxscHRyKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04sICJBdHRlbXB0ZWQgdG8gbWFwIGJ1ZmZlciBvYmplY3QgemVyby4iKSk7
CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCAiQXR0ZW1wdGVkIHRvIG1hcCBidWZmZXIgb2JqZWN0IHplcm8uIikpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKGFjY2VzcyAhPSBHTF9XUklURV9PTkxZX09FUykK
ICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSwgIk5vbi13cml0ZSBidWZmZXIgbWFwcGluZyBub3Qgc3VwcG9ydGVkLiIpKTsKKyAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiTm9uLXdyaXRlIGJ1
ZmZlciBtYXBwaW5nIG5vdCBzdXBwb3J0ZWQuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCiAgICAgaWYgKGJ1ZmZlci0+aXNNYXBwZWQoKSkKICAgICB7Ci0gICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQnVmZmVyIGlzIGFs
cmVhZHkgbWFwcGVkLiIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sICJCdWZmZXIgaXMgYWxyZWFkeSBtYXBwZWQuIikpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xOTM0LDcgKzIyMTQsNyBAQCBib29sIFZhbGlk
YXRlVW5tYXBCdWZmZXJPRVMoQ29udGV4dCAqY29uCiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkubWFwQnVmZmVyKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJNYXAgYnVmZmVyIGV4dGVuc2lvbiBub3Qg
YXZhaWxhYmxlLiIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04sICJNYXAgYnVmZmVyIGV4dGVuc2lvbiBub3QgYXZhaWxhYmxlLiIpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTk0OSw3ICsyMjI5LDcgQEAgYm9v
bCBWYWxpZGF0ZU1hcEJ1ZmZlclJhbmdlRVhUKENvbnRleHQgKgogewogICAgIGlmICghY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLm1hcEJ1ZmZlclJhbmdlKQogICAgIHsKLSAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoCisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAogICAgICAgICAg
ICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJNYXAgYnVmZmVyIHJhbmdlIGV4dGVuc2lv
biBub3QgYXZhaWxhYmxlLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTE5
NjQsNyArMjI0NCw3IEBAIGJvb2wgVmFsaWRhdGVGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlRVhUKEMK
IHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5tYXBCdWZmZXJSYW5nZSkKICAg
ICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKAorICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcigKICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiTWFwIGJ1
ZmZlciByYW5nZSBleHRlbnNpb24gbm90IGF2YWlsYWJsZS4iKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CkBAIC0xOTc3LDcgKzIyNTcsMTQgQEAgYm9vbCBWYWxpZGF0ZUJpbmRUZXh0
dXJlKENvbnRleHQgKmNvbnRleAogICAgIFRleHR1cmUgKnRleHR1cmVPYmplY3QgPSBjb250ZXh0
LT5nZXRUZXh0dXJlKHRleHR1cmUpOwogICAgIGlmICh0ZXh0dXJlT2JqZWN0ICYmIHRleHR1cmVP
YmplY3QtPmdldFRhcmdldCgpICE9IHRhcmdldCAmJiB0ZXh0dXJlICE9IDApCiAgICAgewotICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIklu
dmFsaWQgdGV4dHVyZSIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sICJJbnZhbGlkIHRleHR1cmUiKSk7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBpZiAoIWNvbnRleHQtPmdldEdMU3RhdGUoKS5pc0JpbmRHZW5l
cmF0ZXNSZXNvdXJjZUVuYWJsZWQoKSAmJgorICAgICAgICAhY29udGV4dC0+aXNUZXh0dXJlR2Vu
ZXJhdGVkKHRleHR1cmUpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJUZXh0dXJlIHdhcyBub3QgZ2VuZXJhdGVkIikpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xOTg5LDI2ICsyMjc2LDEzNDEgQEAg
Ym9vbCBWYWxpZGF0ZUJpbmRUZXh0dXJlKENvbnRleHQgKmNvbnRleAogCiAgICAgICAgIGNhc2Ug
R0xfVEVYVFVSRV8zRDoKICAgICAgICAgY2FzZSBHTF9URVhUVVJFXzJEX0FSUkFZOgotICAgICAg
ICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgICAgICAgICBp
ZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSwgIkdMRVMgMy4wIGRpc2FibGVkIikpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkdMRVMgMy4wIGRpc2FibGVkIikpOwogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTOgotICAgICAgICAgICAg
aWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZWdsU3RyZWFtQ29uc3VtZXJFeHRlcm5hbCkK
KyAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVnbEltYWdlRXh0ZXJu
YWwgJiYKKyAgICAgICAgICAgICAgICAhY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVnbFN0cmVh
bUNvbnN1bWVyRXh0ZXJuYWwpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoCisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCiAg
ICAgICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkV4dGVybmFsIHRleHR1
cmUgZXh0ZW5zaW9uIG5vdCBlbmFibGVkIikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAi
SW52YWxpZCB0YXJnZXQiKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIHRhcmdldCIpKTsKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBWYWxpZGF0ZUJp
bmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSkKK3sKKyAg
ICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5iaW5kVW5pZm9ybUxvY2F0aW9uKQorICAg
IHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTiwgIkdMX0NIUk9NSVVNX2JpbmRfdW5pZm9ybV9sb2NhdGlvbiBpcyBu
b3QgYXZhaWxhYmxlLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFBy
b2dyYW0gKnByb2dyYW1PYmplY3QgPSBHZXRWYWxpZFByb2dyYW0oY29udGV4dCwgcHJvZ3JhbSk7
CisgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGlmIChsb2NhdGlvbiA8IDApCisgICAgeworICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiTG9jYXRpb24gY2Fubm90IGJlIGxl
c3MgdGhhbiAwLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGNvbnN0
IENhcHMgJmNhcHMgPSBjb250ZXh0LT5nZXRDYXBzKCk7CisgICAgaWYgKHN0YXRpY19jYXN0PHNp
emVfdD4obG9jYXRpb24pID49CisgICAgICAgIChjYXBzLm1heFZlcnRleFVuaWZvcm1WZWN0b3Jz
ICsgY2Fwcy5tYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzKSAqIDQpCisgICAgeworICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiTG9jYXRpb24gbXVzdCBiZSBsZXNzIHRoYW4gKE1BWF9W
RVJURVhfVU5JRk9STV9WRUNUT1JTICsgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUykgKiA0IikpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKHN0cm5jbXAobmFtZSwgImdsXyIsIDMpID09IDAp
CisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiTmFtZSBjYW5ub3Qgc3RhcnQgd2l0aCB0aGUgcmVzZXJ2
ZWQgXCJnbF9cIiBwcmVmaXguIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVDb3ZlcmFnZU1vZHVsYXRpb25DSFJP
TUlVTShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gY29tcG9uZW50cykKK3sKKyAgICBpZiAoIWNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5mcmFtZWJ1ZmZlck1peGVkU2FtcGxlcykKKyAgICB7Cisg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04sICJHTF9DSFJPTUlVTV9mcmFtZWJ1ZmZlcl9taXhlZF9zYW1wbGVzIGlzIG5v
dCBhdmFpbGFibGUuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHN3aXRj
aCAoY29tcG9uZW50cykKKyAgICB7CisgICAgICAgIGNhc2UgR0xfUkdCOgorICAgICAgICBjYXNl
IEdMX1JHQkE6CisgICAgICAgIGNhc2UgR0xfQUxQSEE6CisgICAgICAgIGNhc2UgR0xfTk9ORToK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9FTlVNLAor
ICAgICAgICAgICAgICAgICAgICAgICJHTGVudW0gY29tcG9uZW50cyBpcyBub3Qgb25lIG9mIEdM
X1JHQiwgR0xfUkdCQSwgR0xfQUxQSEEgb3IgR0xfTk9ORS4iKSk7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIENIUk9NSVVNX3Bh
dGhfcmVuZGVyaW5nCisKK2Jvb2wgVmFsaWRhdGVNYXRyaXgoQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIG1hdHJpeE1vZGUsIGNvbnN0IEdMZmxvYXQgKm1hdHJpeCkKK3sKKyAgICBpZiAoIWNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5wYXRoUmVuZGVyaW5nKQorICAgIHsKKyAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwg
IkdMX0NIUk9NSVVNX3BhdGhfcmVuZGVyaW5nIGlzIG5vdCBhdmFpbGFibGUuIikpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmIChtYXRyaXhNb2RlICE9IEdMX1BBVEhfTU9E
RUxWSUVXX0NIUk9NSVVNICYmIG1hdHJpeE1vZGUgIT0gR0xfUEFUSF9QUk9KRUNUSU9OX0NIUk9N
SVVNKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9FTlVNLCAiSW52YWxpZCBtYXRyaXggbW9kZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgaWYgKG1hdHJpeCA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJJbnZhbGlkIG1hdHJp
eC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgVmFsaWRhdGVNYXRyaXhNb2RlKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtYXRy
aXhNb2RlKQoreworICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnBhdGhSZW5kZXJp
bmcpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiR0xfQ0hST01JVU1fcGF0aF9yZW5kZXJpbmcgaXMg
bm90IGF2YWlsYWJsZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYg
KG1hdHJpeE1vZGUgIT0gR0xfUEFUSF9NT0RFTFZJRVdfQ0hST01JVU0gJiYgbWF0cml4TW9kZSAh
PSBHTF9QQVRIX1BST0pFQ1RJT05fQ0hST01JVU0pCisgICAgeworICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIG1hdHJpeCBtb2RlLiIp
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBWYWxpZGF0ZUdlblBhdGhzKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgcmFuZ2UpCit7
CisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkucGF0aFJlbmRlcmluZykKKyAgICB7
CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04sICJHTF9DSFJPTUlVTV9wYXRoX3JlbmRlcmluZyBpcyBub3QgYXZhaWxh
YmxlLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIHJhbmdlID0g
MCBpcyB1bmRlZmluZWQgaW4gTlZfcGF0aF9yZW5kZXJpbmcuCisgICAgLy8gd2UgYWRkIHN0cmlj
dGVyIHNlbWFudGljIGNoZWNrIGhlcmUgYW5kIHJlcXVpcmUgYSBub24gemVybyBwb3NpdGl2ZSBy
YW5nZS4KKyAgICBpZiAocmFuZ2UgPD0gMCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJJbnZhbGlkIHJhbmdlLiIpKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghYW5nbGU6OklzVmFsdWVJblJhbmdl
Rm9yTnVtZXJpY1R5cGU8c3RkOjp1aW50MzJfdD4ocmFuZ2UpKQorICAgIHsKKyAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJSYW5nZSBvdmVy
Zmxvdy4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBWYWxpZGF0ZURlbGV0ZVBhdGhzKENvbnRleHQgKmNvbnRleHQsIEdMdWlu
dCBwYXRoLCBHTHNpemVpIHJhbmdlKQoreworICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLnBhdGhSZW5kZXJpbmcpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigK
KyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiR0xfQ0hST01JVU1fcGF0
aF9yZW5kZXJpbmcgaXMgbm90IGF2YWlsYWJsZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICAvLyByYW5nZSA9IDAgaXMgdW5kZWZpbmVkIGluIE5WX3BhdGhfcmVuZGVy
aW5nLgorICAgIC8vIHdlIGFkZCBzdHJpY3RlciBzZW1hbnRpYyBjaGVjayBoZXJlIGFuZCByZXF1
aXJlIGEgbm9uIHplcm8gcG9zaXRpdmUgcmFuZ2UuCisgICAgaWYgKHJhbmdlIDw9IDApCisgICAg
eworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAi
SW52YWxpZCByYW5nZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBh
bmdsZTo6Q2hlY2tlZE51bWVyaWM8c3RkOjp1aW50MzJfdD4gY2hlY2tlZFJhbmdlKHBhdGgpOwor
ICAgIGNoZWNrZWRSYW5nZSArPSByYW5nZTsKKworICAgIGlmICghYW5nbGU6OklzVmFsdWVJblJh
bmdlRm9yTnVtZXJpY1R5cGU8c3RkOjp1aW50MzJfdD4ocmFuZ2UpIHx8ICFjaGVja2VkUmFuZ2Uu
SXNWYWxpZCgpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sICJSYW5nZSBvdmVyZmxvdy4iKSk7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVQYXRoQ29t
bWFuZHMoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29tbWFuZHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgKmNvbW1hbmRzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUNvb3JkcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGNvb3JkVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgdm9pZCAqY29vcmRzKQoreworICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnBh
dGhSZW5kZXJpbmcpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAg
ICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiR0xfQ0hST01JVU1fcGF0aF9yZW5k
ZXJpbmcgaXMgbm90IGF2YWlsYWJsZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgaWYgKCFjb250ZXh0LT5oYXNQYXRoKHBhdGgpKQorICAgIHsKKyAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJObyBzdWNoIHBhdGgg
b2JqZWN0LiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChudW1D
b21tYW5kcyA8IDApCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX1ZBTFVFLCAiSW52YWxpZCBudW1iZXIgb2YgY29tbWFuZHMuIikpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGVsc2UgaWYgKG51bUNvbW1hbmRzID4gMCkKKyAg
ICB7CisgICAgICAgIGlmICghY29tbWFuZHMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJObyBjb21tYW5kcyBhcnJh
eSBnaXZlbi4iKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBpZiAobnVtQ29vcmRzIDwgMCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJJbnZhbGlkIG51bWJlciBvZiBjb29yZGlu
YXRlcy4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgZWxzZSBpZiAobnVt
Q29vcmRzID4gMCkKKyAgICB7CisgICAgICAgIGlmICghY29vcmRzKQorICAgICAgICB7CisgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiTm8g
Y29vcmRpbmF0ZSBhcnJheSBnaXZlbi4iKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBzdGQ6OnVpbnQzMl90IGNvb3JkVHlwZVNpemUgPSAwOwor
ICAgIHN3aXRjaCAoY29vcmRUeXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9CWVRFOgorICAg
ICAgICAgICAgY29vcmRUeXBlU2l6ZSA9IHNpemVvZihHTGJ5dGUpOworICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgY29vcmRU
eXBlU2l6ZSA9IHNpemVvZihHTHVieXRlKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGNhc2UgR0xfU0hPUlQ6CisgICAgICAgICAgICBjb29yZFR5cGVTaXplID0gc2l6ZW9mKEdMc2hv
cnQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9S
VDoKKyAgICAgICAgICAgIGNvb3JkVHlwZVNpemUgPSBzaXplb2YoR0x1c2hvcnQpOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAgICAgICAgIGNvb3Jk
VHlwZVNpemUgPSBzaXplb2YoR0xmbG9hdCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNLCAiSW52YWxpZCBjb29yZGluYXRlIHR5cGUuIikpOworICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGFuZ2xlOjpDaGVja2VkTnVtZXJpYzxzdGQ6OnVpbnQz
Ml90PiBjaGVja2VkU2l6ZShudW1Db21tYW5kcyk7CisgICAgY2hlY2tlZFNpemUgKz0gKGNvb3Jk
VHlwZVNpemUgKiBudW1Db29yZHMpOworICAgIGlmICghY2hlY2tlZFNpemUuSXNWYWxpZCgpKQor
ICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04sICJDb29yZCBzaXplIG92ZXJmbG93LiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIC8vIGVhcmx5IHJldHVybiBza2lwcyBjb21tYW5kIGRhdGEgdmFsaWRhdGlv
biB3aGVuIGl0IGRvZXNuJ3QgZXhpc3QuCisgICAgaWYgKCFjb21tYW5kcykKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICBHTHNpemVpIGV4cGVjdGVkTnVtQ29vcmRzID0gMDsKKyAgICBmb3Ig
KEdMc2l6ZWkgaSA9IDA7IGkgPCBudW1Db21tYW5kczsgKytpKQorICAgIHsKKyAgICAgICAgc3dp
dGNoIChjb21tYW5kc1tpXSkKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSBHTF9DTE9TRV9Q
QVRIX0NIUk9NSVVNOiAgLy8gbm8gY29vcmRpbmF0ZXMuCisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIEdMX01PVkVfVE9fQ0hST01JVU06CisgICAgICAgICAgICBjYXNl
IEdMX0xJTkVfVE9fQ0hST01JVU06CisgICAgICAgICAgICAgICAgZXhwZWN0ZWROdW1Db29yZHMg
Kz0gMjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgR0xfUVVBRFJB
VElDX0NVUlZFX1RPX0NIUk9NSVVNOgorICAgICAgICAgICAgICAgIGV4cGVjdGVkTnVtQ29vcmRz
ICs9IDQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdMX0NVQklD
X0NVUlZFX1RPX0NIUk9NSVVNOgorICAgICAgICAgICAgICAgIGV4cGVjdGVkTnVtQ29vcmRzICs9
IDY7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdMX0NPTklDX0NV
UlZFX1RPX0NIUk9NSVVNOgorICAgICAgICAgICAgICAgIGV4cGVjdGVkTnVtQ29vcmRzICs9IDU7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFs
aWQgY29tbWFuZC4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgfQorICAgIGlmIChleHBlY3RlZE51bUNvb3JkcyAhPSBudW1Db29yZHMpCisgICAgewor
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiSW52
YWxpZCBudW1iZXIgb2YgY29vcmRpbmF0ZXMuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVTZXRQYXRoUGFyYW1l
dGVyKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBwYXRoLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQg
dmFsdWUpCit7CisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkucGF0aFJlbmRlcmlu
ZykKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJHTF9DSFJPTUlVTV9wYXRoX3JlbmRlcmluZyBpcyBu
b3QgYXZhaWxhYmxlLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAo
IWNvbnRleHQtPmhhc1BhdGgocGF0aCkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIk5vIHN1Y2ggcGF0aCBvYmplY3QuIikp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3dpdGNoIChwbmFtZSkKKyAg
ICB7CisgICAgICAgIGNhc2UgR0xfUEFUSF9TVFJPS0VfV0lEVEhfQ0hST01JVU06CisgICAgICAg
ICAgICBpZiAodmFsdWUgPCAwLjBmKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJJbnZhbGlkIHN0cm9r
ZSB3aWR0aC4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfUEFUSF9FTkRfQ0FQU19DSFJP
TUlVTToKKyAgICAgICAgICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8R0xlbnVtPih2YWx1ZSkpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9GTEFUX0NIUk9NSVVNOgorICAg
ICAgICAgICAgICAgIGNhc2UgR0xfU1FVQVJFX0NIUk9NSVVNOgorICAgICAgICAgICAgICAgIGNh
c2UgR0xfUk9VTkRfQ0hST01JVU06CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgZW5kIGNhcHMuIikpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBHTF9QQVRIX0pPSU5fU1RZTEVfQ0hST01JVU06CisgICAgICAg
ICAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PEdMZW51bT4odmFsdWUpKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGNhc2UgR0xfTUlURVJfUkVWRVJUX0NIUk9NSVVNOgorICAgICAgICAg
ICAgICAgIGNhc2UgR0xfQkVWRUxfQ0hST01JVU06CisgICAgICAgICAgICAgICAgY2FzZSBHTF9S
T1VORF9DSFJPTUlVTToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBqb2luIHN0eWxlLiIpKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1BB
VEhfTUlURVJfTElNSVRfQ0hST01JVU06CisgICAgICAgICAgICBpZiAodmFsdWUgPCAwLjBmKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfVkFMVUUsICJJbnZhbGlkIG1pdGVyIGxpbWl0LiIpKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBjYXNlIEdMX1BBVEhfU1RST0tFX0JPVU5EX0NIUk9NSVVNOgorICAgICAgICAgICAg
Ly8gbm8gZXJyb3JzLCBvbmx5IGNsYW1waW5nLgorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfRU5VTSwgIkludmFsaWQgcGF0aCBwYXJhbWV0ZXIuIikpOworICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdl
dFBhdGhQYXJhbWV0ZXIoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHBhdGgsIEdMZW51bSBwbmFt
ZSwgR0xmbG9hdCAqdmFsdWUpCit7CisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
cGF0aFJlbmRlcmluZykKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAg
ICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJHTF9DSFJPTUlVTV9wYXRoX3Jl
bmRlcmluZyBpcyBub3QgYXZhaWxhYmxlLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIGlmICghY29udGV4dC0+aGFzUGF0aChwYXRoKSkKKyAgICB7CisgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiTm8gc3VjaCBw
YXRoIG9iamVjdC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKCF2
YWx1ZSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfVkFMVUUsICJObyB2YWx1ZSBhcnJheS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9QQVRIX1NU
Uk9LRV9XSURUSF9DSFJPTUlVTToKKyAgICAgICAgY2FzZSBHTF9QQVRIX0VORF9DQVBTX0NIUk9N
SVVNOgorICAgICAgICBjYXNlIEdMX1BBVEhfSk9JTl9TVFlMRV9DSFJPTUlVTToKKyAgICAgICAg
Y2FzZSBHTF9QQVRIX01JVEVSX0xJTUlUX0NIUk9NSVVNOgorICAgICAgICBjYXNlIEdMX1BBVEhf
U1RST0tFX0JPVU5EX0NIUk9NSVVNOgorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
RU5VTSwgIkludmFsaWQgcGF0aCBwYXJhbWV0ZXIuIikpOworICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlUGF0aFN0
ZW5jaWxGdW5jKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWlu
dCBtYXNrKQoreworICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnBhdGhSZW5kZXJp
bmcpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiR0xfQ0hST01JVU1fcGF0aF9yZW5kZXJpbmcgaXMg
bm90IGF2YWlsYWJsZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBz
d2l0Y2ggKGZ1bmMpCisgICAgeworICAgICAgICBjYXNlIEdMX05FVkVSOgorICAgICAgICBjYXNl
IEdMX0FMV0FZUzoKKyAgICAgICAgY2FzZSBHTF9MRVNTOgorICAgICAgICBjYXNlIEdMX0xFUVVB
TDoKKyAgICAgICAgY2FzZSBHTF9FUVVBTDoKKyAgICAgICAgY2FzZSBHTF9HRVFVQUw6CisgICAg
ICAgIGNhc2UgR0xfR1JFQVRFUjoKKyAgICAgICAgY2FzZSBHTF9OT1RFUVVBTDoKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBzdGVuY2lsIGZ1bmN0aW9uLiIp
KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworLy8gTm90ZSB0aGF0IHRoZSBzcGVjIHNwZWNpZmllcyB0aGF0IGZvciB0aGUgcGF0aCBk
cmF3aW5nIGNvbW1hbmRzCisvLyBpZiB0aGUgcGF0aCBvYmplY3QgaXMgbm90IGFuIGV4aXN0aW5n
IHBhdGggb2JqZWN0IHRoZSBjb21tYW5kCisvLyBkb2VzIG5vdGhpbmcgYW5kIG5vIGVycm9yIGlz
IGdlbmVyYXRlZC4KKy8vIEhvd2V2ZXIgaWYgdGhlIHBhdGggb2JqZWN0IGV4aXN0cyBidXQgaGFz
IG5vdCBiZWVuIHNwZWNpZmllZCBhbnkKKy8vIGNvbW1hbmRzIHRoZW4gYW4gZXJyb3IgaXMgZ2Vu
ZXJhdGVkLgorCitib29sIFZhbGlkYXRlU3RlbmNpbEZpbGxQYXRoKENvbnRleHQgKmNvbnRleHQs
IEdMdWludCBwYXRoLCBHTGVudW0gZmlsbE1vZGUsIEdMdWludCBtYXNrKQoreworICAgIGlmICgh
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnBhdGhSZW5kZXJpbmcpCisgICAgeworICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OLCAiR0xfQ0hST01JVU1fcGF0aF9yZW5kZXJpbmcgaXMgbm90IGF2YWlsYWJsZS4iKSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKGNvbnRleHQtPmhhc1BhdGgocGF0
aCkgJiYgIWNvbnRleHQtPmhhc1BhdGhEYXRhKHBhdGgpKQorICAgIHsKKyAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJObyBzdWNoIHBhdGgg
b2JqZWN0LiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN3aXRjaCAo
ZmlsbE1vZGUpCisgICAgeworICAgICAgICBjYXNlIEdMX0NPVU5UX1VQX0NIUk9NSVVNOgorICAg
ICAgICBjYXNlIEdMX0NPVU5UX0RPV05fQ0hST01JVU06CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfRU5VTSwgIkludmFsaWQgZmlsbCBtb2RlLiIpKTsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIWlzUG93MihtYXNrICsgMSkpCisgICAgeworICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiSW52YWxp
ZCBzdGVuY2lsIGJpdCBtYXNrLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlU3RlbmNpbFN0cm9rZVBhdGgoQ29u
dGV4dCAqY29udGV4dCwgR0x1aW50IHBhdGgsIEdMaW50IHJlZmVyZW5jZSwgR0x1aW50IG1hc2sp
Cit7CisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkucGF0aFJlbmRlcmluZykKKyAg
ICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sICJHTF9DSFJPTUlVTV9wYXRoX3JlbmRlcmluZyBpcyBub3QgYXZh
aWxhYmxlLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAoY29udGV4
dC0+aGFzUGF0aChwYXRoKSAmJiAhY29udGV4dC0+aGFzUGF0aERhdGEocGF0aCkpCisgICAgewor
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwg
Ik5vIHN1Y2ggcGF0aCBvciBwYXRoIGhhcyBubyBkYXRhLiIpKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlQ292ZXJQ
YXRoKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBwYXRoLCBHTGVudW0gY292ZXJNb2RlKQorewor
ICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnBhdGhSZW5kZXJpbmcpCisgICAgewor
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OLCAiR0xfQ0hST01JVU1fcGF0aF9yZW5kZXJpbmcgaXMgbm90IGF2YWlsYWJs
ZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKGNvbnRleHQtPmhh
c1BhdGgocGF0aCkgJiYgIWNvbnRleHQtPmhhc1BhdGhEYXRhKHBhdGgpKQorICAgIHsKKyAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJObyBz
dWNoIHBhdGggb2JqZWN0LiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IHN3aXRjaCAoY292ZXJNb2RlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9DT05WRVhfSFVMTF9D
SFJPTUlVTToKKyAgICAgICAgY2FzZSBHTF9CT1VORElOR19CT1hfQ0hST01JVU06CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgY292ZXIgbW9kZS4iKSk7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIFZhbGlkYXRlU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoKENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlKQoreworICAgIHJldHVy
biBWYWxpZGF0ZVN0ZW5jaWxGaWxsUGF0aChjb250ZXh0LCBwYXRoLCBmaWxsTW9kZSwgbWFzaykg
JiYKKyAgICAgICAgICAgVmFsaWRhdGVDb3ZlclBhdGgoY29udGV4dCwgcGF0aCwgY292ZXJNb2Rl
KTsKK30KKworYm9vbCBWYWxpZGF0ZVN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoKENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVm
ZXJlbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBt
YXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zl
ck1vZGUpCit7CisgICAgcmV0dXJuIFZhbGlkYXRlU3RlbmNpbFN0cm9rZVBhdGgoY29udGV4dCwg
cGF0aCwgcmVmZXJlbmNlLCBtYXNrKSAmJgorICAgICAgICAgICBWYWxpZGF0ZUNvdmVyUGF0aChj
b250ZXh0LCBwYXRoLCBjb3Zlck1vZGUpOworfQorCitib29sIFZhbGlkYXRlSXNQYXRoKENvbnRl
eHQgKmNvbnRleHQpCit7CisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkucGF0aFJl
bmRlcmluZykKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAg
ICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJHTF9DSFJPTUlVTV9wYXRoX3JlbmRlcmlu
ZyBpcyBub3QgYXZhaWxhYmxlLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUNvdmVyRmlsbFBhdGhJbnN0YW5jZWQo
Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgbnVtUGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcGF0aE5hbWVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgdm9pZCAqcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgcGF0aEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
Y292ZXJNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRy
YW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCit7CisgICAgaWYgKCFWYWxpZGF0ZUluc3RhbmNlZFBh
dGhQYXJhbWV0ZXJzKGNvbnRleHQsIG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRo
QmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3Jt
VHlwZSwgdHJhbnNmb3JtVmFsdWVzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3dp
dGNoIChjb3Zlck1vZGUpCisgICAgeworICAgICAgICBjYXNlIEdMX0NPTlZFWF9IVUxMX0NIUk9N
SVVNOgorICAgICAgICBjYXNlIEdMX0JPVU5ESU5HX0JPWF9DSFJPTUlVTToKKyAgICAgICAgY2Fz
ZSBHTF9CT1VORElOR19CT1hfT0ZfQk9VTkRJTkdfQk9YRVNfQ0hST01JVU06CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgY292ZXIgbW9kZS4iKSk7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgVmFsaWRhdGVDb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWQoQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1QYXRocywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KnRyYW5zZm9ybVZhbHVlcykKK3sKKyAgICBpZiAoIVZhbGlkYXRlSW5zdGFuY2VkUGF0aFBhcmFt
ZXRlcnMoY29udGV4dCwgbnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlLCB0
cmFuc2Zvcm1WYWx1ZXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzd2l0Y2ggKGNv
dmVyTW9kZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfQ09OVkVYX0hVTExfQ0hST01JVU06Cisg
ICAgICAgIGNhc2UgR0xfQk9VTkRJTkdfQk9YX0NIUk9NSVVNOgorICAgICAgICBjYXNlIEdMX0JP
VU5ESU5HX0JPWF9PRl9CT1VORElOR19CT1hFU19DSFJPTUlVTToKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBjb3ZlciBtb2RlLiIpKTsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxp
ZGF0ZVN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bVBhdGhzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFs
dWVzKQoreworCisgICAgaWYgKCFWYWxpZGF0ZUluc3RhbmNlZFBhdGhQYXJhbWV0ZXJzKGNvbnRl
eHQsIG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFs
dWVzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3dpdGNoIChmaWxsTW9kZSkKKyAg
ICB7CisgICAgICAgIGNhc2UgR0xfQ09VTlRfVVBfQ0hST01JVU06CisgICAgICAgIGNhc2UgR0xf
Q09VTlRfRE9XTl9DSFJPTUlVTToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVN
LCAiSW52YWxpZCBmaWxsIG1vZGUuIikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICBpZiAoIWlzUG93MihtYXNrICsgMSkpCisgICAgeworICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiSW52YWxpZCBzdGVuY2lsIGJpdCBt
YXNrLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBWYWxpZGF0ZVN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkKENvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBu
dW1QYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cGF0aE5hbWVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHZvaWQgKnBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBwYXRoQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCByZWZlcmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQoreworICAgIGlmICghVmFsaWRh
dGVJbnN0YW5jZWRQYXRoUGFyYW1ldGVycyhjb250ZXh0LCBudW1QYXRocywgcGF0aE5hbWVUeXBl
LCBwYXRocywgcGF0aEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIC8vIG5vIG1vcmUgdmFsaWRhdGlvbiBoZXJlLgorCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgVmFsaWRhdGVTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWQoQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBudW1QYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxN
b2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGNvdmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKK3sK
KyAgICBpZiAoIVZhbGlkYXRlSW5zdGFuY2VkUGF0aFBhcmFtZXRlcnMoY29udGV4dCwgbnVtUGF0
aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzd2l0Y2ggKGNvdmVyTW9kZSkKKyAgICB7CisgICAg
ICAgIGNhc2UgR0xfQ09OVkVYX0hVTExfQ0hST01JVU06CisgICAgICAgIGNhc2UgR0xfQk9VTkRJ
TkdfQk9YX0NIUk9NSVVNOgorICAgICAgICBjYXNlIEdMX0JPVU5ESU5HX0JPWF9PRl9CT1VORElO
R19CT1hFU19DSFJPTUlVTToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAi
SW52YWxpZCBjb3ZlciBtb2RlLiIpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBzd2l0Y2ggKGZpbGxNb2RlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9DT1VOVF9V
UF9DSFJPTUlVTToKKyAgICAgICAgY2FzZSBHTF9DT1VOVF9ET1dOX0NIUk9NSVVNOgorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGZpbGwgbW9kZS4iKSk7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmICghaXNQb3cyKG1hc2sgKyAx
KSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
VkFMVUUsICJJbnZhbGlkIHN0ZW5jaWwgYml0IG1hc2suIikpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVTdGVuY2ls
VGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0aHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBhdGhOYW1lVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB2b2lkICpwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zl
ck1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQoreworICAgIGlm
ICghVmFsaWRhdGVJbnN0YW5jZWRQYXRoUGFyYW1ldGVycyhjb250ZXh0LCBudW1QYXRocywgcGF0
aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHN3aXRjaCAoY292ZXJNb2RlKQorICAgIHsKKyAgICAgICAgY2Fz
ZSBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTToKKyAgICAgICAgY2FzZSBHTF9CT1VORElOR19CT1hf
Q0hST01JVU06CisgICAgICAgIGNhc2UgR0xfQk9VTkRJTkdfQk9YX09GX0JPVU5ESU5HX0JPWEVT
X0NIUk9NSVVNOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlk
IGNvdmVyIG1vZGUuIikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlQmluZEZyYWdtZW50SW5wdXRMb2NhdGlv
bihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMY2hhciAqbmFtZSkKK3sKKyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5wYXRoUmVuZGVyaW5nKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisg
ICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkdMX0NIUk9NSVVNX3BhdGhf
cmVuZGVyaW5nIGlzIG5vdCBhdmFpbGFibGUuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgY29uc3QgR0xpbnQgTWF4TG9jYXRpb24gPSBjb250ZXh0LT5nZXRDYXBzKCku
bWF4VmFyeWluZ1ZlY3RvcnMgKiA0OworICAgIGlmIChsb2NhdGlvbiA+PSBNYXhMb2NhdGlvbikK
KyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFM
VUUsICJMb2NhdGlvbiBleGNlZWRzIG1heCB2YXJ5aW5nLiIpKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGNvbnN0IGF1dG8gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5n
ZXRQcm9ncmFtKHByb2dyYW0pOworICAgIGlmICghcHJvZ3JhbU9iamVjdCkKKyAgICB7CisgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiTm8g
c3VjaCBwcm9ncmFtLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlm
ICghbmFtZSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfVkFMVUUsICJObyBuYW1lIGdpdmVuLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGlmIChhbmdsZTo6QmVnaW5zV2l0aChuYW1lLCAiZ2xfIikpCisgICAgewor
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwg
IkNhbm5vdCBiaW5kIGEgYnVpbHQtaW4gdmFyaWFibGUuIikpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVQcm9ncmFt
UGF0aEZyYWdtZW50SW5wdXRHZW4oQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZ2VuTW9kZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY29tcG9uZW50cywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqY29lZmZzKQorewor
ICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnBhdGhSZW5kZXJpbmcpCisgICAgewor
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OLCAiR0xfQ0hST01JVU1fcGF0aF9yZW5kZXJpbmcgaXMgbm90IGF2YWlsYWJs
ZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBjb25zdCBhdXRvICpw
cm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKKyAgICBpZiAoIXBy
b2dyYW1PYmplY3QgfHwgcHJvZ3JhbU9iamVjdC0+aXNGbGFnZ2VkRm9yRGVsZXRpb24oKSkKKyAg
ICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OLCAiTm8gc3VjaCBwcm9ncmFtLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIGlmICghcHJvZ3JhbU9iamVjdC0+aXNMaW5rZWQoKSkKKyAgICB7CisgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiUHJvZ3JhbSBp
cyBub3QgbGlua2VkLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN3
aXRjaCAoZ2VuTW9kZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfTk9ORToKKyAgICAgICAgICAg
IGlmIChjb21wb25lbnRzICE9IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIkludmFsaWQgY29tcG9u
ZW50cy4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9PQkpFQ1RfTElORUFSX0NIUk9N
SVVNOgorICAgICAgICBjYXNlIEdMX0VZRV9MSU5FQVJfQ0hST01JVU06CisgICAgICAgIGNhc2Ug
R0xfQ09OU1RBTlRfQ0hST01JVU06CisgICAgICAgICAgICBpZiAoY29tcG9uZW50cyA8IDEgfHwg
Y29tcG9uZW50cyA+IDQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIkludmFsaWQgY29tcG9uZW50cy4i
KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKCFjb2VmZnMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIk5vIGNvZWZmaWNpZW50cyBh
cnJheSBnaXZlbi4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgZ2Vu
IG1vZGUuIikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIElm
IHRoZSBsb2NhdGlvbiBpcyAtMSB0aGVuIHRoZSBjb21tYW5kIGlzIHNpbGVudGx5IGlnbm9yZWQK
KyAgICAvLyBhbmQgbm8gZnVydGhlciB2YWxpZGF0aW9uIGlzIG5lZWRlZC4KKyAgICBpZiAobG9j
YXRpb24gPT0gLTEpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgY29uc3QgYXV0byAmYmlu
ZGluZyA9IHByb2dyYW1PYmplY3QtPmdldEZyYWdtZW50SW5wdXRCaW5kaW5nSW5mbyhsb2NhdGlv
bik7CisKKyAgICBpZiAoIWJpbmRpbmcudmFsaWQpCisgICAgeworICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIk5vIHN1Y2ggYmluZGluZy4i
KSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoYmluZGluZy50eXBl
ICE9IEdMX05PTkUpCisgICAgeworICAgICAgICBHTGludCBleHBlY3RlZENvbXBvbmVudHMgPSAw
OworICAgICAgICBzd2l0Y2ggKGJpbmRpbmcudHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAg
Y2FzZSBHTF9GTE9BVDoKKyAgICAgICAgICAgICAgICBleHBlY3RlZENvbXBvbmVudHMgPSAxOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUMyOgor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkQ29tcG9uZW50cyA9IDI7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzM6CisgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRDb21wb25lbnRzID0gMzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgR0xfRkxPQVRfVkVDNDoKKyAgICAgICAgICAgICAgICBleHBlY3RlZENvbXBvbmVu
dHMgPSA0OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwKKyAgICAgICAgICAgICAgICAgICAgIkZyYWdtZW50IGlucHV0IHR5cGUgaXMgbm90IGEg
ZmxvYXRpbmcgcG9pbnQgc2NhbGFyIG9yIHZlY3Rvci4iKSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmIChleHBlY3RlZENvbXBvbmVudHMgIT0g
Y29tcG9uZW50cyAmJiBnZW5Nb2RlICE9IEdMX05PTkUpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiVW5leHBl
Y3RlZCBudW1iZXIgb2YgY29tcG9uZW50cyIpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUNv
cHlUZXh0dXJlQ0hST01JVU0oQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBzb3VyY2VJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBkZXN0SWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBkZXN0VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVh
biB1bnBhY2tGbGlwWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVh
biB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xib29sZWFuIHVucGFja1VubXVsdGlwbHlBbHBoYSkKK3sKKyAgICBpZiAoIWNvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5jb3B5VGV4dHVyZSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJHTF9D
SFJPTUlVTV9jb3B5X3RleHR1cmUgZXh0ZW5zaW9uIG5vdCBhdmFpbGFibGUuIikpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uc3QgZ2w6OlRleHR1cmUgKnNvdXJjZSA9
IGNvbnRleHQtPmdldFRleHR1cmUoc291cmNlSWQpOworICAgIGlmIChzb3VyY2UgPT0gbnVsbHB0
cikKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSwgIlNvdXJjZSB0ZXh0dXJlIGlzIG5vdCBhIHZhbGlkIHRleHR1
cmUgb2JqZWN0LiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICgh
SXNWYWxpZENvcHlUZXh0dXJlU291cmNlVGFyZ2V0KGNvbnRleHQsIHNvdXJjZS0+Z2V0VGFyZ2V0
KCkpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSwgIlNvdXJjZSB0ZXh0dXJlIGEgdmFsaWQgdGV4dHVyZSB0eXBlLiIpKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEdMZW51bSBzb3VyY2VUYXJnZXQgPSBzb3Vy
Y2UtPmdldFRhcmdldCgpOworICAgIEFTU0VSVChzb3VyY2VUYXJnZXQgIT0gR0xfVEVYVFVSRV9D
VUJFX01BUCk7CisgICAgaWYgKHNvdXJjZS0+Z2V0V2lkdGgoc291cmNlVGFyZ2V0LCAwKSA9PSAw
IHx8IHNvdXJjZS0+Z2V0SGVpZ2h0KHNvdXJjZVRhcmdldCwgMCkgPT0gMCkKKyAgICB7CisgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSwgIkxldmVsIDAgb2YgdGhlIHNvdXJjZSB0ZXh0dXJlIG11c3QgYmUgZGVmaW5lZC4iKSk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBjb25zdCBnbDo6Rm9ybWF0ICZz
b3VyY2VGb3JtYXQgPSBzb3VyY2UtPmdldEZvcm1hdChzb3VyY2VUYXJnZXQsIDApOworICAgIGlm
ICghSXNWYWxpZENvcHlUZXh0dXJlRm9ybWF0KGNvbnRleHQsIHNvdXJjZUZvcm1hdC5mb3JtYXQp
KQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTiwgIlNvdXJjZSB0ZXh0dXJlIGludGVybmFsIGZvcm1hdCBp
cyBpbnZhbGlkLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGNvbnN0
IGdsOjpUZXh0dXJlICpkZXN0ID0gY29udGV4dC0+Z2V0VGV4dHVyZShkZXN0SWQpOworICAgIGlm
IChkZXN0ID09IG51bGxwdHIpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigK
KyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJEZXN0aW5hdGlvbiB0ZXh0dXJl
IGlzIG5vdCBhIHZhbGlkIHRleHR1cmUgb2JqZWN0LiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIGlmICghSXNWYWxpZENvcHlUZXh0dXJlRGVzdGluYXRpb25UYXJnZXQo
Y29udGV4dCwgZGVzdC0+Z2V0VGFyZ2V0KCkpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIkRlc3RpbmF0aW9uIHRleHR1cmUgYSB2
YWxpZCB0ZXh0dXJlIHR5cGUuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgaWYgKCFJc1ZhbGlkQ29weVRleHR1cmVEZXN0aW5hdGlvbkZvcm1hdFR5cGUoY29udGV4dCwg
aW50ZXJuYWxGb3JtYXQsIGRlc3RUeXBlKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAg
ICAgICAgICAgICAiRGVzdGluYXRpb24gaW50ZXJuYWwgZm9ybWF0IGFuZCB0eXBlIGNvbWJpbmF0
aW9uIGlzIG5vdCB2YWxpZC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBpZiAoZGVzdC0+Z2V0SW1tdXRhYmxlRm9ybWF0KCkpCisgICAgeworICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkRlc3RpbmF0aW9uIHRl
eHR1cmUgaXMgaW1tdXRhYmxlLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlQ29weVN1YlRleHR1cmVDSFJPTUlV
TShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IHNvdXJjZUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IGRlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhv
ZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGJvb2xlYW4gdW5wYWNrRmxpcFksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBhY2tVbm11bHRpcGx5QWxwaGEp
Cit7CisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29weVRleHR1cmUpCisgICAg
eworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAiR0xfQ0hST01JVU1fY29weV90ZXh0dXJlIGV4dGVuc2lvbiBub3Qg
YXZhaWxhYmxlLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGNvbnN0
IGdsOjpUZXh0dXJlICpzb3VyY2UgPSBjb250ZXh0LT5nZXRUZXh0dXJlKHNvdXJjZUlkKTsKKyAg
ICBpZiAoc291cmNlID09IG51bGxwdHIpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJTb3VyY2UgdGV4dHVy
ZSBpcyBub3QgYSB2YWxpZCB0ZXh0dXJlIG9iamVjdC4iKSk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBpZiAoIUlzVmFsaWRDb3B5VGV4dHVyZVNvdXJjZVRhcmdldChjb250
ZXh0LCBzb3VyY2UtPmdldFRhcmdldCgpKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJTb3VyY2UgdGV4dHVyZSBhIHZhbGlkIHRl
eHR1cmUgdHlwZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBHTGVu
dW0gc291cmNlVGFyZ2V0ID0gc291cmNlLT5nZXRUYXJnZXQoKTsKKyAgICBBU1NFUlQoc291cmNl
VGFyZ2V0ICE9IEdMX1RFWFRVUkVfQ1VCRV9NQVApOworICAgIGlmIChzb3VyY2UtPmdldFdpZHRo
KHNvdXJjZVRhcmdldCwgMCkgPT0gMCB8fCBzb3VyY2UtPmdldEhlaWdodChzb3VyY2VUYXJnZXQs
IDApID09IDApCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAg
ICAgIEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJMZXZlbCAwIG9mIHRoZSBzb3VyY2UgdGV4dHVy
ZSBtdXN0IGJlIGRlZmluZWQuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgaWYgKHggPCAwIHx8IHkgPCAwKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgInggYW5kIHkgY2Fubm90IGJlIG5lZ2F0aXZlLiIp
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICh3aWR0aCA8IDAgfHwg
aGVpZ2h0IDwgMCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfVkFMVUUsICJ3aWR0aCBhbmQgaGVpZ2h0IGNhbm5vdCBiZSBuZWdhdGl2ZS4iKSk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6
ZV90Pih4ICsgd2lkdGgpID4gc291cmNlLT5nZXRXaWR0aChzb3VyY2VUYXJnZXQsIDApIHx8Cisg
ICAgICAgIHN0YXRpY19jYXN0PHNpemVfdD4oeSArIGhlaWdodCkgPiBzb3VyY2UtPmdldEhlaWdo
dChzb3VyY2VUYXJnZXQsIDApKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
CisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiU291cmNlIHRleHR1cmUgbm90
IGxhcmdlIGVub3VnaCB0byBjb3B5IGZyb20uIikpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgY29uc3QgZ2w6OkZvcm1hdCAmc291cmNlRm9ybWF0ID0gc291cmNlLT5nZXRG
b3JtYXQoc291cmNlVGFyZ2V0LCAwKTsKKyAgICBpZiAoIUlzVmFsaWRDb3B5VGV4dHVyZUZvcm1h
dChjb250ZXh0LCBzb3VyY2VGb3JtYXQuZm9ybWF0KSkKKyAgICB7CisgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJT
b3VyY2UgdGV4dHVyZSBpbnRlcm5hbCBmb3JtYXQgaXMgaW52YWxpZC4iKSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBjb25zdCBnbDo6VGV4dHVyZSAqZGVzdCA9IGNvbnRl
eHQtPmdldFRleHR1cmUoZGVzdElkKTsKKyAgICBpZiAoZGVzdCA9PSBudWxscHRyKQorICAgIHsK
KyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZB
TElEX1ZBTFVFLCAiRGVzdGluYXRpb24gdGV4dHVyZSBpcyBub3QgYSB2YWxpZCB0ZXh0dXJlIG9i
amVjdC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIUlzVmFs
aWRDb3B5VGV4dHVyZURlc3RpbmF0aW9uVGFyZ2V0KGNvbnRleHQsIGRlc3QtPmdldFRhcmdldCgp
KSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
VkFMVUUsICJEZXN0aW5hdGlvbiB0ZXh0dXJlIGEgdmFsaWQgdGV4dHVyZSB0eXBlLiIpKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEdMZW51bSBkZXN0VGFyZ2V0ID0gZGVz
dC0+Z2V0VGFyZ2V0KCk7CisgICAgQVNTRVJUKGRlc3RUYXJnZXQgIT0gR0xfVEVYVFVSRV9DVUJF
X01BUCk7CisgICAgaWYgKGRlc3QtPmdldFdpZHRoKHNvdXJjZVRhcmdldCwgMCkgPT0gMCB8fCBk
ZXN0LT5nZXRIZWlnaHQoc291cmNlVGFyZ2V0LCAwKSA9PSAwKQorICAgIHsKKyAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAi
TGV2ZWwgMCBvZiB0aGUgZGVzdGluYXRpb24gdGV4dHVyZSBtdXN0IGJlIGRlZmluZWQuIikpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uc3QgZ2w6OkZvcm1hdCAmZGVz
dEZvcm1hdCA9IGRlc3QtPmdldEZvcm1hdChkZXN0VGFyZ2V0LCAwKTsKKyAgICBpZiAoIUlzVmFs
aWRDb3B5VGV4dHVyZURlc3RpbmF0aW9uRm9ybWF0VHlwZShjb250ZXh0LCBkZXN0Rm9ybWF0LmZv
cm1hdCwgZGVzdEZvcm1hdC50eXBlKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAg
ICAgICAgICAiRGVzdGluYXRpb24gaW50ZXJuYWwgZm9ybWF0IGFuZCB0eXBlIGNvbWJpbmF0aW9u
IGlzIG5vdCB2YWxpZC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBp
ZiAoeG9mZnNldCA8IDAgfHwgeW9mZnNldCA8IDApCisgICAgeworICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAieG9mZnNldCBhbmQgeW9mZnNldCBj
YW5ub3QgYmUgbmVnYXRpdmUuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4oeG9mZnNldCArIHdpZHRoKSA+IGRlc3QtPmdldFdp
ZHRoKGRlc3RUYXJnZXQsIDApIHx8CisgICAgICAgIHN0YXRpY19jYXN0PHNpemVfdD4oeW9mZnNl
dCArIGhlaWdodCkgPiBkZXN0LT5nZXRIZWlnaHQoZGVzdFRhcmdldCwgMCkpCisgICAgeworICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURf
VkFMVUUsICJEZXN0aW5hdGlvbiB0ZXh0dXJlIG5vdCBsYXJnZSBlbm91Z2ggdG8gY29weSB0by4i
KSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRDb3B5VGV4dHVyZUNIUk9NSVVNKENvbnRleHQgKmNv
bnRleHQsIEdMdWludCBzb3VyY2VJZCwgR0x1aW50IGRlc3RJZCkKK3sKKyAgICBpZiAoIWNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5jb3B5Q29tcHJlc3NlZFRleHR1cmUpCisgICAgeworICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdMX0NIUk9NSVVNX2NvcHlfY29tcHJlc3Nl
ZF90ZXh0dXJlIGV4dGVuc2lvbiBub3QgYXZhaWxhYmxlLiIpKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGNvbnN0IGdsOjpUZXh0dXJlICpzb3VyY2UgPSBjb250ZXh0LT5n
ZXRUZXh0dXJlKHNvdXJjZUlkKTsKKyAgICBpZiAoc291cmNlID09IG51bGxwdHIpCisgICAgewor
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFM
SURfVkFMVUUsICJTb3VyY2UgdGV4dHVyZSBpcyBub3QgYSB2YWxpZCB0ZXh0dXJlIG9iamVjdC4i
KSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoc291cmNlLT5nZXRU
YXJnZXQoKSAhPSBHTF9URVhUVVJFXzJEKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiU291cmNlIHRleHR1
cmUgbXVzdCBiZSBvZiB0eXBlIEdMX1RFWFRVUkVfMkQuIikpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgaWYgKHNvdXJjZS0+Z2V0V2lkdGgoR0xfVEVYVFVSRV8yRCwgMCkg
PT0gMCB8fCBzb3VyY2UtPmdldEhlaWdodChHTF9URVhUVVJFXzJELCAwKSA9PSAwKQorICAgIHsK
KyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIlNv
dXJjZSB0ZXh0dXJlIG11c3QgbGV2ZWwgMCBkZWZpbmVkLiIpKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGNvbnN0IGdsOjpGb3JtYXQgJnNvdXJjZUZvcm1hdCA9IHNvdXJj
ZS0+Z2V0Rm9ybWF0KEdMX1RFWFRVUkVfMkQsIDApOworICAgIGlmICghc291cmNlRm9ybWF0Lmlu
Zm8tPmNvbXByZXNzZWQpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAg
ICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiU291cmNlIHRleHR1cmUgbXVz
dCBoYXZlIGEgY29tcHJlc3NlZCBpbnRlcm5hbCBmb3JtYXQuIikpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgY29uc3QgZ2w6OlRleHR1cmUgKmRlc3QgPSBjb250ZXh0LT5n
ZXRUZXh0dXJlKGRlc3RJZCk7CisgICAgaWYgKGRlc3QgPT0gbnVsbHB0cikKKyAgICB7CisgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSwgIkRlc3RpbmF0aW9uIHRleHR1cmUgaXMgbm90IGEgdmFsaWQgdGV4dHVyZSBvYmplY3Qu
IikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGRlc3QtPmdldFRh
cmdldCgpICE9IEdMX1RFWFRVUkVfMkQpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJEZXN0aW5hdGlvbiB0
ZXh0dXJlIG11c3QgYmUgb2YgdHlwZSBHTF9URVhUVVJFXzJELiIpKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIGlmIChkZXN0LT5nZXRJbW11dGFibGVGb3JtYXQoKSkKKyAg
ICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OLCAiRGVzdGluYXRpb24gY2Fubm90IGJlIGltbXV0YWJsZS4iKSk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUNy
ZWF0ZVNoYWRlcihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2gg
KHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1ZFUlRFWF9TSEFERVI6CisgICAgICAgIGNh
c2UgR0xfRlJBR01FTlRfU0hBREVSOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
R0xfQ09NUFVURV9TSEFERVI6CisgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0R0xWZXJzaW9u
KCkuaXNFUzMxKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUJ1ZmZlckRhdGEo
VmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplLAorICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpkYXRhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHVzYWdlKQoreworICAgIGlmIChzaXplIDwgMCkKKyAgICB7CisgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN3aXRjaCAodXNhZ2UpCisgICAgeworICAg
ICAgICBjYXNlIEdMX1NUUkVBTV9EUkFXOgorICAgICAgICBjYXNlIEdMX1NUQVRJQ19EUkFXOgor
ICAgICAgICBjYXNlIEdMX0RZTkFNSUNfRFJBVzoKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2UgR0xfU1RSRUFNX1JFQUQ6CisgICAgICAgIGNhc2UgR0xfU1RSRUFNX0NPUFk6Cisg
ICAgICAgIGNhc2UgR0xfU1RBVElDX1JFQUQ6CisgICAgICAgIGNhc2UgR0xfU1RBVElDX0NPUFk6
CisgICAgICAgIGNhc2UgR0xfRFlOQU1JQ19SRUFEOgorICAgICAgICBjYXNlIEdMX0RZTkFNSUNf
Q09QWToKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8
IDMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghVmFsaWRCdWZmZXJU
YXJnZXQoY29udGV4dCwgdGFyZ2V0KSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgQnVmZmVyICpidWZmZXIgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VGFyZ2V0
QnVmZmVyKHRhcmdldCk7CisKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICB7CisgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0
ZUJ1ZmZlclN1YkRhdGEoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnRwdHIgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBz
aXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpkYXRhKQorewor
ICAgIGlmIChzaXplIDwgMCB8fCBvZmZzZXQgPCAwKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZEJ1ZmZlclRhcmdldChjb250ZXh0LCB0YXJnZXQp
KQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9F
TlVNKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBCdWZmZXIgKmJ1ZmZl
ciA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRUYXJnZXRCdWZmZXIodGFyZ2V0KTsKKworICAg
IGlmICghYnVmZmVyKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIGlmIChidWZmZXItPmlzTWFwcGVkKCkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgLy8gQ2hlY2sgZm9yIHBvc3NpYmxlIG92ZXJmbG93IG9mIHNpemUg
KyBvZmZzZXQKKyAgICBhbmdsZTo6Q2hlY2tlZE51bWVyaWM8c2l6ZV90PiBjaGVja2VkU2l6ZShz
aXplKTsKKyAgICBjaGVja2VkU2l6ZSArPSBvZmZzZXQ7CisgICAgaWYgKCFjaGVja2VkU2l6ZS5J
c1ZhbGlkKCkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9P
VVRfT0ZfTUVNT1JZKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAo
c2l6ZSArIG9mZnNldCA+IGJ1ZmZlci0+Z2V0U2l6ZSgpKQorICAgIHsKKyAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVFbmFi
bGVFeHRlbnNpb25BTkdMRShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xjaGFy
ICpuYW1lKQoreworICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLndlYmdsQ29tcGF0
aWJpbGl0eSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAg
ICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJHTF9BTkdMRV93ZWJnbF9jb21wYXRpYmls
aXR5IGlzIG5vdCBhdmFpbGFibGUuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgY29uc3QgRXh0ZW5zaW9uSW5mb01hcCAmZXh0ZW5zaW9uSW5mb3MgPSBHZXRFeHRlbnNp
b25JbmZvTWFwKCk7CisgICAgYXV0byBleHRlbnNpb24gICAgICAgICAgICAgICAgICAgICAgICAg
PSBleHRlbnNpb25JbmZvcy5maW5kKG5hbWUpOworICAgIGlmIChleHRlbnNpb24gPT0gZXh0ZW5z
aW9uSW5mb3MuZW5kKCkgfHwgIWV4dGVuc2lvbi0+c2Vjb25kLkVuYWJsZWFibGUpCisgICAgewor
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwg
IkV4dGVuc2lvbiAlcyBpcyBub3QgZW5hYmxlYWJsZS4iLCBuYW1lKSk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUFj
dGl2ZVRleHR1cmUoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0ZXh0dXJlKQor
eworICAgIGlmICh0ZXh0dXJlIDwgR0xfVEVYVFVSRTAgfHwKKyAgICAgICAgdGV4dHVyZSA+IEdM
X1RFWFRVUkUwICsgY29udGV4dC0+Z2V0Q2FwcygpLm1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5p
dHMgLSAxKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUF0dGFjaFNoYWRlcihWYWxpZGF0aW9uQ29udGV4dCAq
Y29udGV4dCwgR0x1aW50IHByb2dyYW0sIEdMdWludCBzaGFkZXIpCit7CisgICAgUHJvZ3JhbSAq
cHJvZ3JhbU9iamVjdCA9IEdldFZhbGlkUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFtKTsKKyAgICBp
ZiAoIXByb2dyYW1PYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgU2hhZGVyICpzaGFkZXJPYmplY3QgPSBHZXRWYWxpZFNoYWRlcihjb250ZXh0LCBzaGFk
ZXIpOworICAgIGlmICghc2hhZGVyT2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIHN3aXRjaCAoc2hhZGVyT2JqZWN0LT5nZXRUeXBlKCkpCisgICAgewor
ICAgICAgICBjYXNlIEdMX1ZFUlRFWF9TSEFERVI6CisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
IChwcm9ncmFtT2JqZWN0LT5nZXRBdHRhY2hlZFZlcnRleFNoYWRlcigpKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9GUkFHTUVO
VF9TSEFERVI6CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChwcm9ncmFtT2JqZWN0LT5nZXRB
dHRhY2hlZEZyYWdtZW50U2hhZGVyKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBVVEVfU0hBREVSOgorICAgICAgICB7
CisgICAgICAgICAgICBpZiAocHJvZ3JhbU9iamVjdC0+Z2V0QXR0YWNoZWRDb21wdXRlU2hhZGVy
KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiB9ICAvLyBuYW1lc3BhY2UgZ2wKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlk
YXRpb25FUzIuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzIuaAkod29ya2luZyBjb3B5KQpAQCAtMTgsOSArMTgs
MjEgQEAgY2xhc3MgQ29udGV4dDsKIGNsYXNzIFZhbGlkYXRpb25Db250ZXh0OwogY2xhc3MgVGV4
dHVyZTsKIAotYm9vbCBWYWxpZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVycyhDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBi
b29sIGlzQ29tcHJlc3NlZCwgYm9vbCBpc1N1YkltYWdlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICpwaXhl
bHMpOworYm9vbCBWYWxpZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVycyhDb250ZXh0ICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ29tcHJlc3NlZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1N1YkltYWdlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgYm9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9y
bWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbWFnZVNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcGl4ZWxzKTsKIAog
Ym9vbCBWYWxpZGF0ZUVTMkNvcHlUZXhJbWFnZVBhcmFtZXRlcnMoVmFsaWRhdGlvbkNvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LApAQCAtMzgsOCArNTAsNiBAQCBib29sIFZhbGlkYXRlRVMyQ29weVRleEltYWdlUGFy
YW1ldGVycyhWCiBib29sIFZhbGlkYXRlRVMyVGV4U3RvcmFnZVBhcmFtZXRlcnMoQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xzaXplaSBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZv
cm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKIAotYm9vbCBWYWxpZEVTMlJlYWRGb3Jt
YXRUeXBlKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlKTsKLQog
Ym9vbCBWYWxpZGF0ZURpc2NhcmRGcmFtZWJ1ZmZlckVYVChDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gdGFyZ2V0LCBHTHNpemVpIG51bUF0dGFjaG1lbnRzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKTsKIApAQCAtMTM5LDYgKzE0
OSwxNyBAQCBib29sIFZhbGlkYXRlVGV4SW1hZ2UyRChDb250ZXh0ICpjb250ZXh0CiAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVs
cyk7Citib29sIFZhbGlkYXRlVGV4SW1hZ2UyRFJvYnVzdChDb250ZXh0ICpjb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWln
aHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZv
aWQgKnBpeGVscyk7CiBib29sIFZhbGlkYXRlVGV4U3ViSW1hZ2UyRChDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLApAQCAtMTQ5LDYgKzE3MCwxNyBAQCBib29sIFZh
bGlkYXRlVGV4U3ViSW1hZ2UyRChDb250ZXh0ICpjb250CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5
cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscyk7Citi
b29sIFZhbGlkYXRlVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0x2b2lkICpwaXhlbHMpOwogYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRU
ZXhJbWFnZTJEKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsZXZlbCwKQEAgLTE4Myw2ICsyMTUsMTQ2IEBAIGJvb2wgVmFsaWRhdGVGbHVzaE1hcHBl
ZEJ1ZmZlclJhbmdlRVhUKEMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50cHRyIG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWlwdHIgbGVuZ3RoKTsKIAorYm9vbCBWYWxpZGF0ZUJpbmRVbmlmb3JtTG9jYXRpb25D
SFJPTUlVTShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSk7CisKK2Jvb2wgVmFsaWRhdGVDb3ZlcmFn
ZU1vZHVsYXRpb25DSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gY29tcG9uZW50cyk7
CisKKy8vIENIUk9NSVVNX3BhdGhfcmVuZGVyaW5nCitib29sIFZhbGlkYXRlTWF0cml4KENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSBtYXRyaXhNb2RlLCBjb25zdCBHTGZsb2F0ICptYXRyaXgpOwor
Ym9vbCBWYWxpZGF0ZU1hdHJpeE1vZGUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1hdHJpeE1v
ZGUpOworYm9vbCBWYWxpZGF0ZUdlblBhdGhzKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgcmFu
Z2UpOworYm9vbCBWYWxpZGF0ZURlbGV0ZVBhdGhzKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBm
aXJzdCwgR0xzaXplaSByYW5nZSk7Citib29sIFZhbGlkYXRlUGF0aENvbW1hbmRzKENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUNvbW1hbmRzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTHVieXRlICpjb21tYW5kcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBudW1Db29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBjb29yZFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmNvb3Jk
cyk7Citib29sIFZhbGlkYXRlU2V0UGF0aFBhcmFtZXRlcihDb250ZXh0ICpjb250ZXh0LCBHTHVp
bnQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHZhbHVlKTsKK2Jvb2wgVmFsaWRhdGVHZXRQ
YXRoUGFyYW1ldGVyKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBwYXRoLCBHTGVudW0gcG5hbWUs
IEdMZmxvYXQgKnZhbHVlKTsKK2Jvb2wgVmFsaWRhdGVQYXRoU3RlbmNpbEZ1bmMoQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spOworYm9vbCBWYWxp
ZGF0ZVN0ZW5jaWxGaWxsUGF0aChDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcGF0aCwgR0xlbnVt
IGZpbGxNb2RlLCBHTHVpbnQgbWFzayk7Citib29sIFZhbGlkYXRlU3RlbmNpbFN0cm9rZVBhdGgo
Q29udGV4dCAqY29udGV4dCwgR0x1aW50IHBhdGgsIEdMaW50IHJlZmVyZW5jZSwgR0x1aW50IG1h
c2spOworYm9vbCBWYWxpZGF0ZUNvdmVyUGF0aChDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcGF0
aCwgR0xlbnVtIGNvdmVyTW9kZSk7Citib29sIFZhbGlkYXRlU3RlbmNpbFRoZW5Db3ZlckZpbGxQ
YXRoKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gZmlsbE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
Y292ZXJNb2RlKTsKK2Jvb2wgVmFsaWRhdGVTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aChDb250
ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHJlZmVyZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
Y292ZXJNb2RlKTsKK2Jvb2wgVmFsaWRhdGVJc1BhdGgoQ29udGV4dCAqY29udGV4dCk7Citib29s
IFZhbGlkYXRlQ292ZXJGaWxsUGF0aEluc3RhbmNlZChDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1QYXRocywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7
Citib29sIFZhbGlkYXRlQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkKENvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0aHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBh
dGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJh
c2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1v
ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zv
cm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOworYm9vbCBWYWxpZGF0ZVN0ZW5jaWxGaWxsUGF0aEluc3Rh
bmNlZChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIG51bVBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB2b2lkICpwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IHBhdGhCQXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZmlsbE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKK2Jvb2wgVmFsaWRhdGVTdGVu
Y2lsU3Ryb2tlUGF0aEluc3RhbmNlZChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0aHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRy
YW5zZm9ybVZhbHVlcyk7Citib29sIFZhbGlkYXRlU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5z
dGFuY2VkKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0
aEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBmaWxsTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1W
YWx1ZXMpOworYm9vbCBWYWxpZGF0ZVN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2Vk
KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBudW1QYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBw
YXRoQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCByZWZlcmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0
ICp0cmFuc2Zvcm1WYWx1ZXMpOworYm9vbCBWYWxpZGF0ZUJpbmRGcmFnbWVudElucHV0TG9jYXRp
b24oQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGNoYXIgKm5hbWUpOworYm9vbCBWYWxpZGF0ZVByb2dyYW1QYXRoRnJhZ21lbnRJ
bnB1dEdlbihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBnZW5Nb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBjb21wb25lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpjb2VmZnMpOworCitib29sIFZhbGlkYXRl
Q29weVRleHR1cmVDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHNvdXJjZUlkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IGRlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGRlc3RUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIHVucGFja0ZsaXBZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIHVucGFja1ByZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGJvb2xlYW4gdW5wYWNrVW5tdWx0aXBseUFscGhhKTsKK2Jvb2wgVmFsaWRhdGVDb3B5
U3ViVGV4dHVyZUNIUk9NSVVNKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgc291cmNlSWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgZGVzdElkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgeG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBhY2tGbGlwWSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBhY2tQcmVtdWx0aXBseUFs
cGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFj
a1VubXVsdGlwbHlBbHBoYSk7Citib29sIFZhbGlkYXRlQ29tcHJlc3NlZENvcHlUZXh0dXJlQ0hS
T01JVU0oQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHNvdXJjZUlkLCBHTHVpbnQgZGVzdElkKTsK
KworYm9vbCBWYWxpZGF0ZUNyZWF0ZVNoYWRlcihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlw
ZSk7Citib29sIFZhbGlkYXRlQnVmZmVyRGF0YShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpcHRyIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THZvaWQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdXNhZ2UpOworYm9v
bCBWYWxpZGF0ZUJ1ZmZlclN1YkRhdGEoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnRwdHIgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaXB0ciBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpk
YXRhKTsKKworYm9vbCBWYWxpZGF0ZUVuYWJsZUV4dGVuc2lvbkFOR0xFKFZhbGlkYXRpb25Db250
ZXh0ICpjb250ZXh0LCBjb25zdCBHTGNoYXIgKm5hbWUpOworCitib29sIFZhbGlkYXRlQWN0aXZl
VGV4dHVyZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRleHR1cmUpOworYm9v
bCBWYWxpZGF0ZUF0dGFjaFNoYWRlcihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0x1aW50
IHByb2dyYW0sIEdMdWludCBzaGFkZXIpOworCiB9ICAvLyBuYW1lc3BhY2UgZ2wKIAogI2VuZGlm
IC8vIExJQkFOR0xFX1ZBTElEQVRJT05fRVMyX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMuY3BwCShyZXZpc2lv
biAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRh
dGlvbkVTMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNyw3IEBACiAvLyB2YWxpZGF0aW9u
RVMzLmNwcDogVmFsaWRhdGlvbiBmdW5jdGlvbnMgZm9yIE9wZW5HTCBFUyAzLjAgZW50cnkgcG9p
bnQgcGFyYW1ldGVycwogCiAjaW5jbHVkZSAibGliQU5HTEUvdmFsaWRhdGlvbkVTMy5oIgorCiAj
aW5jbHVkZSAibGliQU5HTEUvdmFsaWRhdGlvbkVTLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvQ29u
dGV4dC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1RleHR1cmUuaCIKQEAgLTE4LDE4NyArMTksMTAg
QEAKICNpbmNsdWRlICJjb21tb24vbWF0aHV0aWwuaCIKICNpbmNsdWRlICJjb21tb24vdXRpbGl0
aWVzLmgiCiAKLW5hbWVzcGFjZSBnbAotewotCi1zdHJ1Y3QgRVMzRm9ybWF0Q29tYmluYXRpb24K
LXsKLSAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQ7Ci0gICAgR0xlbnVtIGZvcm1hdDsKLSAgICBH
TGVudW0gdHlwZTsKLX07Ci0KLWJvb2wgb3BlcmF0b3I8KGNvbnN0IEVTM0Zvcm1hdENvbWJpbmF0
aW9uJiBhLCBjb25zdCBFUzNGb3JtYXRDb21iaW5hdGlvbiYgYikKLXsKLSAgICByZXR1cm4gbWVt
Y21wKCZhLCAmYiwgc2l6ZW9mKEVTM0Zvcm1hdENvbWJpbmF0aW9uKSkgPCAwOwotfQordXNpbmcg
bmFtZXNwYWNlIGFuZ2xlOwogCi10eXBlZGVmIHN0ZDo6c2V0PEVTM0Zvcm1hdENvbWJpbmF0aW9u
PiBFUzNGb3JtYXRDb21iaW5hdGlvblNldDsKLQotc3RhdGljIGlubGluZSB2b2lkIEluc2VydEVT
M0Zvcm1hdENvbWJvKEVTM0Zvcm1hdENvbWJpbmF0aW9uU2V0ICpzZXQsIEdMZW51bSBpbnRlcm5h
bEZvcm1hdCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUpCituYW1lc3BhY2UgZ2wKIHsKLSAg
ICBFUzNGb3JtYXRDb21iaW5hdGlvbiBpbmZvOwotICAgIGluZm8uaW50ZXJuYWxGb3JtYXQgPSBp
bnRlcm5hbEZvcm1hdDsKLSAgICBpbmZvLmZvcm1hdCA9IGZvcm1hdDsKLSAgICBpbmZvLnR5cGUg
PSB0eXBlOwotICAgIHNldC0+aW5zZXJ0KGluZm8pOwotfQotCi1FUzNGb3JtYXRDb21iaW5hdGlv
blNldCYgQnVpbGRFUzNGb3JtYXRTZXQoKQotewotICAgIGF1dG8mIHNldCA9ICpuZXcgRVMzRm9y
bWF0Q29tYmluYXRpb25TZXQ7Ci0KLSAgICAvLyBGb3JtYXQgY29tYmluYXRpb25zIGZyb20gRVMg
My4wLjEgc3BlYywgdGFibGUgMy4yCi0KLSAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgIHwg
SW50ZXJuYWwgZm9ybWF0ICAgICAgfCBGb3JtYXQgICAgICAgICAgICB8IFR5cGUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAotICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg
ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkdCQTgs
ICAgICAgICAgICAgICBHTF9SR0JBLCAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUgICAgICAg
ICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkdCNV9BMSwg
ICAgICAgICAgICBHTF9SR0JBLCAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUgICAgICAgICAg
ICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkdCQTQsICAgICAg
ICAgICAgICBHTF9SR0JBLCAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUgICAgICAgICAgICAg
ICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfU1JHQjhfQUxQSEE4LCAg
ICAgICBHTF9SR0JBLCAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUgICAgICAgICAgICAgICAg
ICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkdCQThfU05PUk0sICAgICAg
ICBHTF9SR0JBLCAgICAgICAgICAgIEdMX0JZVEUgICAgICAgICAgICAgICAgICAgICAgICAgICk7
Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkdCQTQsICAgICAgICAgICAgICBH
TF9SR0JBLCAgICAgICAgICAgIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQgICAgICAgICk7Ci0g
ICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkdCMTBfQTIsICAgICAgICAgICBHTF9S
R0JBLCAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViAgICk7Ci0gICAg
SW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkdCNV9BMSwgICAgICAgICAgICBHTF9SR0JB
LCAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViAgICk7Ci0gICAgSW5z
ZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkdCNV9BMSwgICAgICAgICAgICBHTF9SR0JBLCAg
ICAgICAgICAgIEdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEgICAgICAgICk7Ci0gICAgSW5zZXJ0
RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkdCQTE2RiwgICAgICAgICAgICBHTF9SR0JBLCAgICAg
ICAgICAgIEdMX0hBTEZfRkxPQVQgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMz
Rm9ybWF0Q29tYm8oJnNldCwgR0xfUkdCQTE2RiwgICAgICAgICAgICBHTF9SR0JBLCAgICAgICAg
ICAgIEdMX0hBTEZfRkxPQVRfT0VTICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9y
bWF0Q29tYm8oJnNldCwgR0xfUkdCQTMyRiwgICAgICAgICAgICBHTF9SR0JBLCAgICAgICAgICAg
IEdMX0ZMT0FUICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0
Q29tYm8oJnNldCwgR0xfUkdCQTE2RiwgICAgICAgICAgICBHTF9SR0JBLCAgICAgICAgICAgIEdM
X0ZMT0FUICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29t
Ym8oJnNldCwgR0xfUkdCQThVSSwgICAgICAgICAgICBHTF9SR0JBX0lOVEVHRVIsICAgIEdMX1VO
U0lHTkVEX0JZVEUgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8o
JnNldCwgR0xfUkdCQThJLCAgICAgICAgICAgICBHTF9SR0JBX0lOVEVHRVIsICAgIEdMX0JZVEUg
ICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNl
dCwgR0xfUkdCQTE2VUksICAgICAgICAgICBHTF9SR0JBX0lOVEVHRVIsICAgIEdMX1VOU0lHTkVE
X1NIT1JUICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwg
R0xfUkdCQTE2SSwgICAgICAgICAgICBHTF9SR0JBX0lOVEVHRVIsICAgIEdMX1NIT1JUICAgICAg
ICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xf
UkdCQTMyVUksICAgICAgICAgICBHTF9SR0JBX0lOVEVHRVIsICAgIEdMX1VOU0lHTkVEX0lOVCAg
ICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkdC
QTMySSwgICAgICAgICAgICBHTF9SR0JBX0lOVEVHRVIsICAgIEdMX0lOVCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkdCMTBf
QTJVSSwgICAgICAgICBHTF9SR0JBX0lOVEVHRVIsICAgIEdMX1VOU0lHTkVEX0lOVF8yXzEwXzEw
XzEwX1JFViAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkdCOCwgICAg
ICAgICAgICAgICBHTF9SR0IsICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUgICAgICAgICAg
ICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkdCNTY1LCAgICAg
ICAgICAgICBHTF9SR0IsICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUgICAgICAgICAgICAg
ICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfU1JHQjgsICAgICAgICAg
ICAgICBHTF9SR0IsICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUgICAgICAgICAgICAgICAg
ICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkdCOF9TTk9STSwgICAgICAg
ICBHTF9SR0IsICAgICAgICAgICAgIEdMX0JZVEUgICAgICAgICAgICAgICAgICAgICAgICAgICk7
Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkdCNTY1LCAgICAgICAgICAgICBH
TF9SR0IsICAgICAgICAgICAgIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81ICAgICAgICAgICk7Ci0g
ICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUjExRl9HMTFGX0IxMEYsICAgICBHTF9S
R0IsICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYgICk7Ci0gICAg
SW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkdCOV9FNSwgICAgICAgICAgICBHTF9SR0Is
ICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVF81XzlfOV85X1JFViAgICAgICk7Ci0gICAgSW5z
ZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkdCMTZGLCAgICAgICAgICAgICBHTF9SR0IsICAg
ICAgICAgICAgIEdMX0hBTEZfRkxPQVQgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0
RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkdCMTZGLCAgICAgICAgICAgICBHTF9SR0IsICAgICAg
ICAgICAgIEdMX0hBTEZfRkxPQVRfT0VTICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMz
Rm9ybWF0Q29tYm8oJnNldCwgR0xfUjExRl9HMTFGX0IxMEYsICAgICBHTF9SR0IsICAgICAgICAg
ICAgIEdMX0hBTEZfRkxPQVQgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9y
bWF0Q29tYm8oJnNldCwgR0xfUjExRl9HMTFGX0IxMEYsICAgICBHTF9SR0IsICAgICAgICAgICAg
IEdMX0hBTEZfRkxPQVRfT0VTICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0
Q29tYm8oJnNldCwgR0xfUkdCOV9FNSwgICAgICAgICAgICBHTF9SR0IsICAgICAgICAgICAgIEdM
X0hBTEZfRkxPQVQgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29t
Ym8oJnNldCwgR0xfUkdCOV9FNSwgICAgICAgICAgICBHTF9SR0IsICAgICAgICAgICAgIEdMX0hB
TEZfRkxPQVRfT0VTICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8o
JnNldCwgR0xfUkdCMzJGLCAgICAgICAgICAgICBHTF9SR0IsICAgICAgICAgICAgIEdMX0ZMT0FU
ICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNl
dCwgR0xfUkdCMTZGLCAgICAgICAgICAgICBHTF9SR0IsICAgICAgICAgICAgIEdMX0ZMT0FUICAg
ICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwg
R0xfUjExRl9HMTFGX0IxMEYsICAgICBHTF9SR0IsICAgICAgICAgICAgIEdMX0ZMT0FUICAgICAg
ICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xf
UkdCOV9FNSwgICAgICAgICAgICBHTF9SR0IsICAgICAgICAgICAgIEdMX0ZMT0FUICAgICAgICAg
ICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkdC
OFVJLCAgICAgICAgICAgICBHTF9SR0JfSU5URUdFUiwgICAgIEdMX1VOU0lHTkVEX0JZVEUgICAg
ICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkdCOEks
ICAgICAgICAgICAgICBHTF9SR0JfSU5URUdFUiwgICAgIEdMX0JZVEUgICAgICAgICAgICAgICAg
ICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkdCMTZVSSwg
ICAgICAgICAgICBHTF9SR0JfSU5URUdFUiwgICAgIEdMX1VOU0lHTkVEX1NIT1JUICAgICAgICAg
ICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkdCMTZJLCAgICAg
ICAgICAgICBHTF9SR0JfSU5URUdFUiwgICAgIEdMX1NIT1JUICAgICAgICAgICAgICAgICAgICAg
ICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkdCMzJVSSwgICAgICAg
ICAgICBHTF9SR0JfSU5URUdFUiwgICAgIEdMX1VOU0lHTkVEX0lOVCAgICAgICAgICAgICAgICAg
ICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkdCMzJJLCAgICAgICAgICAg
ICBHTF9SR0JfSU5URUdFUiwgICAgIEdMX0lOVCAgICAgICAgICAgICAgICAgICAgICAgICAgICk7
Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkc4LCAgICAgICAgICAgICAgICBH
TF9SRywgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUgICAgICAgICAgICAgICAgICk7Ci0g
ICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkc4X1NOT1JNLCAgICAgICAgICBHTF9S
RywgICAgICAgICAgICAgIEdMX0JZVEUgICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAg
SW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkcxNkYsICAgICAgICAgICAgICBHTF9SRywg
ICAgICAgICAgICAgIEdMX0hBTEZfRkxPQVQgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5z
ZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkcxNkYsICAgICAgICAgICAgICBHTF9SRywgICAg
ICAgICAgICAgIEdMX0hBTEZfRkxPQVRfT0VTICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0
RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkczMkYsICAgICAgICAgICAgICBHTF9SRywgICAgICAg
ICAgICAgIEdMX0ZMT0FUICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMz
Rm9ybWF0Q29tYm8oJnNldCwgR0xfUkcxNkYsICAgICAgICAgICAgICBHTF9SRywgICAgICAgICAg
ICAgIEdMX0ZMT0FUICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9y
bWF0Q29tYm8oJnNldCwgR0xfUkc4VUksICAgICAgICAgICAgICBHTF9SR19JTlRFR0VSLCAgICAg
IEdMX1VOU0lHTkVEX0JZVEUgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0
Q29tYm8oJnNldCwgR0xfUkc4SSwgICAgICAgICAgICAgICBHTF9SR19JTlRFR0VSLCAgICAgIEdM
X0JZVEUgICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29t
Ym8oJnNldCwgR0xfUkcxNlVJLCAgICAgICAgICAgICBHTF9SR19JTlRFR0VSLCAgICAgIEdMX1VO
U0lHTkVEX1NIT1JUICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8o
JnNldCwgR0xfUkcxNkksICAgICAgICAgICAgICBHTF9SR19JTlRFR0VSLCAgICAgIEdMX1NIT1JU
ICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNl
dCwgR0xfUkczMlVJLCAgICAgICAgICAgICBHTF9SR19JTlRFR0VSLCAgICAgIEdMX1VOU0lHTkVE
X0lOVCAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwg
R0xfUkczMkksICAgICAgICAgICAgICBHTF9SR19JTlRFR0VSLCAgICAgIEdMX0lOVCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xf
UjgsICAgICAgICAgICAgICAgICBHTF9SRUQsICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUg
ICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUjhf
U05PUk0sICAgICAgICAgICBHTF9SRUQsICAgICAgICAgICAgIEdMX0JZVEUgICAgICAgICAgICAg
ICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUjE2Riwg
ICAgICAgICAgICAgICBHTF9SRUQsICAgICAgICAgICAgIEdMX0hBTEZfRkxPQVQgICAgICAgICAg
ICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUjE2RiwgICAg
ICAgICAgICAgICBHTF9SRUQsICAgICAgICAgICAgIEdMX0hBTEZfRkxPQVRfT0VTICAgICAgICAg
ICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUjMyRiwgICAgICAg
ICAgICAgICBHTF9SRUQsICAgICAgICAgICAgIEdMX0ZMT0FUICAgICAgICAgICAgICAgICAgICAg
ICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUjE2RiwgICAgICAgICAg
ICAgICBHTF9SRUQsICAgICAgICAgICAgIEdMX0ZMT0FUICAgICAgICAgICAgICAgICAgICAgICAg
ICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUjhVSSwgICAgICAgICAgICAg
ICBHTF9SRURfSU5URUdFUiwgICAgIEdMX1VOU0lHTkVEX0JZVEUgICAgICAgICAgICAgICAgICk7
Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUjhJLCAgICAgICAgICAgICAgICBH
TF9SRURfSU5URUdFUiwgICAgIEdMX0JZVEUgICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0g
ICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUjE2VUksICAgICAgICAgICAgICBHTF9S
RURfSU5URUdFUiwgICAgIEdMX1VOU0lHTkVEX1NIT1JUICAgICAgICAgICAgICAgICk7Ci0gICAg
SW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUjE2SSwgICAgICAgICAgICAgICBHTF9SRURf
SU5URUdFUiwgICAgIEdMX1NIT1JUICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5z
ZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUjMyVUksICAgICAgICAgICAgICBHTF9SRURfSU5U
RUdFUiwgICAgIEdMX1VOU0lHTkVEX0lOVCAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0
RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUjMySSwgICAgICAgICAgICAgICBHTF9SRURfSU5URUdF
UiwgICAgIEdMX0lOVCAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0KLSAgICAvLyBVbnNp
emVkIGZvcm1hdHMKLSAgICBJbnNlcnRFUzNGb3JtYXRDb21ibygmc2V0LCBHTF9SR0JBLCAgICAg
ICAgICAgICAgIEdMX1JHQkEsICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSAgICAgICAgICAg
ICAgICAgKTsKLSAgICBJbnNlcnRFUzNGb3JtYXRDb21ibygmc2V0LCBHTF9SR0JBLCAgICAgICAg
ICAgICAgIEdMX1JHQkEsICAgICAgICAgICAgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNCAgICAg
ICAgKTsKLSAgICBJbnNlcnRFUzNGb3JtYXRDb21ibygmc2V0LCBHTF9SR0JBLCAgICAgICAgICAg
ICAgIEdMX1JHQkEsICAgICAgICAgICAgR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMSAgICAgICAg
KTsKLSAgICBJbnNlcnRFUzNGb3JtYXRDb21ibygmc2V0LCBHTF9SR0IsICAgICAgICAgICAgICAg
IEdMX1JHQiwgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSAgICAgICAgICAgICAgICAgKTsK
LSAgICBJbnNlcnRFUzNGb3JtYXRDb21ibygmc2V0LCBHTF9SR0IsICAgICAgICAgICAgICAgIEdM
X1JHQiwgICAgICAgICAgICAgR0xfVU5TSUdORURfU0hPUlRfNV82XzUgICAgICAgICAgKTsKLSAg
ICBJbnNlcnRFUzNGb3JtYXRDb21ibygmc2V0LCBHTF9MVU1JTkFOQ0VfQUxQSEEsICAgIEdMX0xV
TUlOQU5DRV9BTFBIQSwgR0xfVU5TSUdORURfQllURSAgICAgICAgICAgICAgICAgKTsKLSAgICBJ
bnNlcnRFUzNGb3JtYXRDb21ibygmc2V0LCBHTF9MVU1JTkFOQ0UsICAgICAgICAgIEdMX0xVTUlO
QU5DRSwgICAgICAgR0xfVU5TSUdORURfQllURSAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNl
cnRFUzNGb3JtYXRDb21ibygmc2V0LCBHTF9BTFBIQSwgICAgICAgICAgICAgIEdMX0FMUEhBLCAg
ICAgICAgICAgR0xfVU5TSUdORURfQllURSAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRF
UzNGb3JtYXRDb21ibygmc2V0LCBHTF9TUkdCX0FMUEhBX0VYVCwgICAgIEdMX1NSR0JfQUxQSEFf
RVhULCAgR0xfVU5TSUdORURfQllURSAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRFUzNG
b3JtYXRDb21ibygmc2V0LCBHTF9TUkdCX0VYVCwgICAgICAgICAgIEdMX1NSR0JfRVhULCAgICAg
ICAgR0xfVU5TSUdORURfQllURSAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRFUzNGb3Jt
YXRDb21ibygmc2V0LCBHTF9SRywgICAgICAgICAgICAgICAgIEdMX1JHLCAgICAgICAgICAgICAg
R0xfVU5TSUdORURfQllURSAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRFUzNGb3JtYXRD
b21ibygmc2V0LCBHTF9SRywgICAgICAgICAgICAgICAgIEdMX1JHLCAgICAgICAgICAgICAgR0xf
RkxPQVQgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRFUzNGb3JtYXRDb21i
bygmc2V0LCBHTF9SRywgICAgICAgICAgICAgICAgIEdMX1JHLCAgICAgICAgICAgICAgR0xfSEFM
Rl9GTE9BVCAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRFUzNGb3JtYXRDb21ibygm
c2V0LCBHTF9SRywgICAgICAgICAgICAgICAgIEdMX1JHLCAgICAgICAgICAgICAgR0xfSEFMRl9G
TE9BVF9PRVMgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRFUzNGb3JtYXRDb21ibygmc2V0
LCBHTF9SRUQsICAgICAgICAgICAgICAgIEdMX1JFRCwgICAgICAgICAgICAgR0xfVU5TSUdORURf
QllURSAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRFUzNGb3JtYXRDb21ibygmc2V0LCBH
TF9SRUQsICAgICAgICAgICAgICAgIEdMX1JFRCwgICAgICAgICAgICAgR0xfRkxPQVQgICAgICAg
ICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRFUzNGb3JtYXRDb21ibygmc2V0LCBHTF9S
RUQsICAgICAgICAgICAgICAgIEdMX1JFRCwgICAgICAgICAgICAgR0xfSEFMRl9GTE9BVCAgICAg
ICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRFUzNGb3JtYXRDb21ibygmc2V0LCBHTF9SRUQs
ICAgICAgICAgICAgICAgIEdMX1JFRCwgICAgICAgICAgICAgR0xfSEFMRl9GTE9BVF9PRVMgICAg
ICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRFUzNGb3JtYXRDb21ibygmc2V0LCBHTF9ERVBUSF9T
VEVOQ0lMLCAgICAgIEdMX0RFUFRIX1NURU5DSUwsICAgR0xfVU5TSUdORURfSU5UXzI0XzggICAg
ICAgICAgICAgKTsKLQotICAgIC8vIERlcHRoIHN0ZW5jaWwgZm9ybWF0cwotICAgIEluc2VydEVT
M0Zvcm1hdENvbWJvKCZzZXQsIEdMX0RFUFRIX0NPTVBPTkVOVDE2LCAgR0xfREVQVEhfQ09NUE9O
RU5ULCBHTF9VTlNJR05FRF9TSE9SVCAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zv
cm1hdENvbWJvKCZzZXQsIEdMX0RFUFRIX0NPTVBPTkVOVDI0LCAgR0xfREVQVEhfQ09NUE9ORU5U
LCBHTF9VTlNJR05FRF9JTlQgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1h
dENvbWJvKCZzZXQsIEdMX0RFUFRIX0NPTVBPTkVOVDE2LCAgR0xfREVQVEhfQ09NUE9ORU5ULCBH
TF9VTlNJR05FRF9JTlQgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENv
bWJvKCZzZXQsIEdMX0RFUFRIX0NPTVBPTkVOVDMyRiwgR0xfREVQVEhfQ09NUE9ORU5ULCBHTF9G
TE9BVCAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJv
KCZzZXQsIEdMX0RFUFRIMjRfU1RFTkNJTDgsICAgR0xfREVQVEhfU1RFTkNJTCwgICBHTF9VTlNJ
R05FRF9JTlRfMjRfOCAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZz
ZXQsIEdMX0RFUFRIMzJGX1NURU5DSUw4LCAgR0xfREVQVEhfU1RFTkNJTCwgICBHTF9GTE9BVF8z
Ml9VTlNJR05FRF9JTlRfMjRfOF9SRVYpOwotCi0gICAgLy8gRnJvbSBHTF9FWFRfc1JHQgotICAg
IEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1NSR0I4X0FMUEhBOF9FWFQsICAgR0xfU1JH
Ql9BTFBIQV9FWFQsIEdMX1VOU0lHTkVEX0JZVEUgICAgICAgICAgICAgICAgICApOwotICAgIElu
c2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1NSR0I4LCAgICAgICAgICAgICAgR0xfU1JHQl9F
WFQsICAgICAgIEdMX1VOU0lHTkVEX0JZVEUgICAgICAgICAgICAgICAgICApOwotCi0gICAgLy8g
RnJvbSBHTF9PRVNfdGV4dHVyZV9mbG9hdAotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQs
IEdMX1JHQkEsICAgICAgICAgICAgICAgR0xfUkdCQSwgICAgICAgICAgICBHTF9GTE9BVCAgICAg
ICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdM
X1JHQiwgICAgICAgICAgICAgICAgR0xfUkdCLCAgICAgICAgICAgICBHTF9GTE9BVCAgICAgICAg
ICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX0xV
TUlOQU5DRV9BTFBIQSwgICAgR0xfTFVNSU5BTkNFX0FMUEhBLCBHTF9GTE9BVCAgICAgICAgICAg
ICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX0xVTUlO
QU5DRSwgICAgICAgICAgR0xfTFVNSU5BTkNFLCAgICAgICBHTF9GTE9BVCAgICAgICAgICAgICAg
ICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX0FMUEhBLCAg
ICAgICAgICAgICAgR0xfQUxQSEEsICAgICAgICAgICBHTF9GTE9BVCAgICAgICAgICAgICAgICAg
ICAgICAgICApOwotCi0gICAgLy8gRnJvbSBHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Ci0gICAg
SW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfTFVNSU5BTkNFX0FMUEhBLCAgICBHTF9MVU1J
TkFOQ0VfQUxQSEEsIEdMX0hBTEZfRkxPQVQgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5z
ZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfTFVNSU5BTkNFX0FMUEhBLCAgICBHTF9MVU1JTkFO
Q0VfQUxQSEEsIEdMX0hBTEZfRkxPQVRfT0VTICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0
RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfTFVNSU5BTkNFLCAgICAgICAgICBHTF9MVU1JTkFOQ0Us
ICAgICAgIEdMX0hBTEZfRkxPQVQgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMz
Rm9ybWF0Q29tYm8oJnNldCwgR0xfTFVNSU5BTkNFLCAgICAgICAgICBHTF9MVU1JTkFOQ0UsICAg
ICAgIEdMX0hBTEZfRkxPQVRfT0VTICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9y
bWF0Q29tYm8oJnNldCwgR0xfQUxQSEEsICAgICAgICAgICAgICBHTF9BTFBIQSwgICAgICAgICAg
IEdMX0hBTEZfRkxPQVQgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0
Q29tYm8oJnNldCwgR0xfQUxQSEEsICAgICAgICAgICAgICBHTF9BTFBIQSwgICAgICAgICAgIEdM
X0hBTEZfRkxPQVRfT0VTICAgICAgICAgICAgICAgICk7Ci0KLSAgICAvLyBGcm9tIEdMX0VYVF90
ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OAotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdM
X0JHUkFfRVhULCAgICAgICAgICAgR0xfQkdSQV9FWFQsICAgICAgICBHTF9VTlNJR05FRF9CWVRF
ICAgICAgICAgICAgICAgICApOwotCi0gICAgLy8gRnJvbSBHTF9FWFRfdGV4dHVyZV9zdG9yYWdl
Ci0gICAgLy8gICAgICAgICAgICAgICAgICAgIHwgSW50ZXJuYWwgZm9ybWF0ICAgICAgICAgIHwg
Rm9ybWF0ICAgICAgICAgICAgfCBUeXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAg
ICAvLyAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg
ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgIElu
c2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX0FMUEhBOF9FWFQsICAgICAgICAgICAgIEdMX0FM
UEhBLCAgICAgICAgICAgR0xfVU5TSUdORURfQllURSAgICAgICAgICAgICAgICAgKTsKLSAgICBJ
bnNlcnRFUzNGb3JtYXRDb21ibygmc2V0LCBHTF9MVU1JTkFOQ0U4X0VYVCwgICAgICAgICBHTF9M
VU1JTkFOQ0UsICAgICAgIEdMX1VOU0lHTkVEX0JZVEUgICAgICAgICAgICAgICAgICk7Ci0gICAg
SW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfTFVNSU5BTkNFOF9BTFBIQThfRVhULCAgR0xf
TFVNSU5BTkNFX0FMUEhBLCBHTF9VTlNJR05FRF9CWVRFICAgICAgICAgICAgICAgICApOwotICAg
IEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX0FMUEhBMzJGX0VYVCwgICAgICAgICAgIEdM
X0FMUEhBLCAgICAgICAgICAgR0xfRkxPQVQgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAg
ICBJbnNlcnRFUzNGb3JtYXRDb21ibygmc2V0LCBHTF9MVU1JTkFOQ0UzMkZfRVhULCAgICAgICBH
TF9MVU1JTkFOQ0UsICAgICAgIEdMX0ZMT0FUICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0g
ICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfTFVNSU5BTkNFX0FMUEhBMzJGX0VYVCwg
R0xfTFVNSU5BTkNFX0FMUEhBLCBHTF9GTE9BVCAgICAgICAgICAgICAgICAgICAgICAgICApOwot
ICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX0FMUEhBMTZGX0VYVCwgICAgICAgICAg
IEdMX0FMUEhBLCAgICAgICAgICAgR0xfSEFMRl9GTE9BVCAgICAgICAgICAgICAgICAgICAgKTsK
LSAgICBJbnNlcnRFUzNGb3JtYXRDb21ibygmc2V0LCBHTF9BTFBIQTE2Rl9FWFQsICAgICAgICAg
ICBHTF9BTFBIQSwgICAgICAgICAgIEdMX0hBTEZfRkxPQVRfT0VTICAgICAgICAgICAgICAgICk7
Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfTFVNSU5BTkNFMTZGX0VYVCwgICAg
ICAgR0xfTFVNSU5BTkNFLCAgICAgICBHTF9IQUxGX0ZMT0FUICAgICAgICAgICAgICAgICAgICAp
OwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX0xVTUlOQU5DRTE2Rl9FWFQsICAg
ICAgIEdMX0xVTUlOQU5DRSwgICAgICAgR0xfSEFMRl9GTE9BVF9PRVMgICAgICAgICAgICAgICAg
KTsKLSAgICBJbnNlcnRFUzNGb3JtYXRDb21ibygmc2V0LCBHTF9MVU1JTkFOQ0VfQUxQSEExNkZf
RVhULCBHTF9MVU1JTkFOQ0VfQUxQSEEsIEdMX0hBTEZfRkxPQVQgICAgICAgICAgICAgICAgICAg
ICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfTFVNSU5BTkNFX0FMUEhBMTZG
X0VYVCwgR0xfTFVNSU5BTkNFX0FMUEhBLCBHTF9IQUxGX0ZMT0FUX09FUyAgICAgICAgICAgICAg
ICApOwotCi0gICAgLy8gRnJvbSBHTF9FWFRfdGV4dHVyZV9zdG9yYWdlIGFuZCBHTF9FWFRfdGV4
dHVyZV9mb3JtYXRfQkdSQTg4ODgKLSAgICBJbnNlcnRFUzNGb3JtYXRDb21ibygmc2V0LCBHTF9C
R1JBOF9FWFQsICAgICAgICAgICAgICBHTF9CR1JBX0VYVCwgICAgICAgIEdMX1VOU0lHTkVEX0JZ
VEUgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xf
QkdSQTRfQU5HTEVYLCAgICAgICAgICAgR0xfQkdSQV9FWFQsICAgICAgICBHTF9VTlNJR05FRF9T
SE9SVF80XzRfNF80X1JFVl9FWFQpOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdM
X0JHUkE0X0FOR0xFWCwgICAgICAgICAgIEdMX0JHUkFfRVhULCAgICAgICAgR0xfVU5TSUdORURf
QllURSAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRFUzNGb3JtYXRDb21ibygmc2V0LCBH
TF9CR1I1X0ExX0FOR0xFWCwgICAgICAgICBHTF9CR1JBX0VYVCwgICAgICAgIEdMX1VOU0lHTkVE
X1NIT1JUXzFfNV81XzVfUkVWX0VYVCk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwg
R0xfQkdSNV9BMV9BTkdMRVgsICAgICAgICAgR0xfQkdSQV9FWFQsICAgICAgICBHTF9VTlNJR05F
RF9CWVRFICAgICAgICAgICAgICAgICApOwotCi0gICAgLy8gRnJvbSBHTF9BTkdMRV9kZXB0aF90
ZXh0dXJlCi0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfREVQVEhfQ09NUE9ORU5U
MzJfT0VTLCAgR0xfREVQVEhfQ09NUE9ORU5ULCBHTF9VTlNJR05FRF9JTlRfMjRfOF9PRVMgICAg
ICAgICApOwotCi0gICAgcmV0dXJuIHNldDsKLX0KIAogc3RhdGljIGJvb2wgVmFsaWRhdGVUZXhJ
bWFnZUZvcm1hdENvbWJpbmF0aW9uKGdsOjpDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gaW50ZXJu
YWxGb3JtYXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlKQogewpAQCAtMjA3LDU1ICszMSwy
MyBAQCBzdGF0aWMgYm9vbCBWYWxpZGF0ZVRleEltYWdlRm9ybWF0Q29tYmluCiAgICAgLy8gZXJy
b3IgaW5zdGVhZCBvZiBhIEdMX0lOVkFMSURfRU5VTSBlcnJvci4gQXMgdGhpcyB2YWxpZGF0aW9u
IGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGluCiAgICAgLy8gdGhlIHZhbGlkYXRpb24gY29kZXBh
dGhzIGZvciBnbFRleEltYWdlMkQvM0QsIHdlIHJlY29yZCBhIEdMX0lOVkFMSURfVkFMVUUgZXJy
b3IuCiAgICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZmb3JtYXRJbmZvID0gZ2w6OkdldElu
dGVybmFsRm9ybWF0SW5mbyhpbnRlcm5hbEZvcm1hdCk7Ci0gICAgaWYgKCFmb3JtYXRJbmZvLnRl
eHR1cmVTdXBwb3J0KGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSwgY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpKSkKKyAgICBpZiAoIWZvcm1hdEluZm8udGV4dHVyZVN1cHBvcnQoY29udGV4dC0+
Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCksIGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSkpCiAgICAg
ewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7
CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIC8vIFRoZSB0eXBlIGFuZCBmb3Jt
YXQgYXJlIHZhbGlkIGlmIGFueSBzdXBwb3J0ZWQgaW50ZXJuYWwgZm9ybWF0IGhhcyB0aGF0IHR5
cGUgYW5kIGZvcm1hdAotICAgIGJvb2wgZm9ybWF0U3VwcG9ydGVkID0gZmFsc2U7Ci0gICAgYm9v
bCB0eXBlU3VwcG9ydGVkID0gZmFsc2U7Ci0KLSAgICBzdGF0aWMgY29uc3QgRVMzRm9ybWF0Q29t
YmluYXRpb25TZXQmIGVzM0Zvcm1hdFNldCA9IEJ1aWxkRVMzRm9ybWF0U2V0KCk7Ci0gICAgZm9y
IChFUzNGb3JtYXRDb21iaW5hdGlvblNldDo6Y29uc3RfaXRlcmF0b3IgaSA9IGVzM0Zvcm1hdFNl
dC5iZWdpbigpOyBpICE9IGVzM0Zvcm1hdFNldC5lbmQoKTsgaSsrKQotICAgIHsKLSAgICAgICAg
aWYgKGktPmZvcm1hdCA9PSBmb3JtYXQgfHwgaS0+dHlwZSA9PSB0eXBlKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJmluZm8gPSBnbDo6R2V0SW50ZXJu
YWxGb3JtYXRJbmZvKGktPmludGVybmFsRm9ybWF0KTsKLSAgICAgICAgICAgIGJvb2wgc3VwcG9y
dGVkID0gaW5mby50ZXh0dXJlU3VwcG9ydChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCksIGNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKSk7Ci0gICAgICAgICAgICBpZiAoc3VwcG9ydGVkICYmIGkt
PnR5cGUgPT0gdHlwZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlU3VwcG9y
dGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChzdXBwb3J0ZWQgJiYg
aS0+Zm9ybWF0ID09IGZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmb3Jt
YXRTdXBwb3J0ZWQgPSB0cnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBFYXJs
eS1vdXQgaWYgYm90aCB0eXBlIGFuZCBmb3JtYXQgYXJlIHN1cHBvcnRlZCBub3cKLSAgICAgICAg
ICAgIGlmICh0eXBlU3VwcG9ydGVkICYmIGZvcm1hdFN1cHBvcnRlZCkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LQotICAgIGlmICghdHlwZVN1cHBvcnRlZCB8fCAhZm9ybWF0U3VwcG9ydGVkKQorICAgIGlmICgh
VmFsaWRFUzNGb3JtYXQoZm9ybWF0KSB8fCAhVmFsaWRFUzNUeXBlKHR5cGUpKQogICAgIHsKLSAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhIHZhbGlk
IGZvcm1hdCBjb21iaW5hdGlvbiB0byBsb2FkIHRleHR1cmUgZGF0YQotICAgIEVTM0Zvcm1hdENv
bWJpbmF0aW9uIHNlYXJjaEZvcm1hdDsKLSAgICBzZWFyY2hGb3JtYXQuaW50ZXJuYWxGb3JtYXQg
PSBpbnRlcm5hbEZvcm1hdDsKLSAgICBzZWFyY2hGb3JtYXQuZm9ybWF0ID0gZm9ybWF0OwotICAg
IHNlYXJjaEZvcm1hdC50eXBlID0gdHlwZTsKLQotICAgIGlmIChlczNGb3JtYXRTZXQuZmluZChz
ZWFyY2hGb3JtYXQpID09IGVzM0Zvcm1hdFNldC5lbmQoKSkKKyAgICBpZiAoIVZhbGlkRVMzRm9y
bWF0Q29tYmluYXRpb24oZm9ybWF0LCB0eXBlLCBpbnRlcm5hbEZvcm1hdCkpCiAgICAgewotICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwor
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0yNzcsMTkgKzY5LDIwIEBAIGJv
b2wgVmFsaWRhdGVFUzNUZXhJbWFnZVBhcmFtZXRlcnNCYXNlKEMKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJvcmRlciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgaW1hZ2VTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwaXhlbHMpCiB7CiAgICAgLy8gVmFsaWRhdGUg
aW1hZ2Ugc2l6ZQogICAgIGlmICghVmFsaWRJbWFnZVNpemVQYXJhbWV0ZXJzKGNvbnRleHQsIHRh
cmdldCwgbGV2ZWwsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBpc1N1YkltYWdlKSkKICAgICB7Ci0g
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgLy8gVmVyaWZ5IHplcm8gYm9yZGVyCiAg
ICAgaWYgKGJvcmRlciAhPSAwKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
QEAgLTI5OCw3ICs5MSw3IEBAIGJvb2wgVmFsaWRhdGVFUzNUZXhJbWFnZVBhcmFtZXRlcnNCYXNl
KEMKICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxHTHNpemVpPjo6bWF4KCkgLSB5b2Zmc2V0
IDwgaGVpZ2h0IHx8CiAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8R0xzaXplaT46Om1heCgp
IC0gem9mZnNldCA8IGRlcHRoKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
QEAgLTMxMCw3ICsxMDMsNyBAQCBib29sIFZhbGlkYXRlRVMzVGV4SW1hZ2VQYXJhbWV0ZXJzQmFz
ZShDCiAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxHTHVpbnQ+KHdpZHRoKSA+IChjYXBzLm1heDJE
VGV4dHVyZVNpemUgPj4gbGV2ZWwpIHx8CiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+
KGhlaWdodCkgPiAoY2Fwcy5tYXgyRFRleHR1cmVTaXplID4+IGxldmVsKSkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkp
OworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFr
OwpAQCAtMzIzLDEzICsxMTYsMTMgQEAgYm9vbCBWYWxpZGF0ZUVTM1RleEltYWdlUGFyYW1ldGVy
c0Jhc2UoQwogICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1o6CiAgICAg
ICAgIGlmICghaXNTdWJJbWFnZSAmJiB3aWR0aCAhPSBoZWlnaHQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChzdGF0
aWNfY2FzdDxHTHVpbnQ+KHdpZHRoKSA+IChjYXBzLm1heEN1YmVNYXBUZXh0dXJlU2l6ZSA+PiBs
ZXZlbCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfQogICAgICAgICBicmVhazsKQEAgLTMzOSw3ICsxMzIsNyBAQCBib29sIFZhbGlkYXRlRVMz
VGV4SW1hZ2VQYXJhbWV0ZXJzQmFzZShDCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+
KGhlaWdodCkgPiAoY2Fwcy5tYXgzRFRleHR1cmVTaXplID4+IGxldmVsKSB8fAogICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8R0x1aW50PihkZXB0aCkgPiAoY2Fwcy5tYXgzRFRleHR1cmVTaXplID4+
IGxldmVsKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtMzQ5LDU2ICsxNDIsNTggQEAgYm9vbCBWYWxpZGF0
ZUVTM1RleEltYWdlUGFyYW1ldGVyc0Jhc2UoQwogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0x1
aW50PihoZWlnaHQpID4gKGNhcHMubWF4MkRUZXh0dXJlU2l6ZSA+PiBsZXZlbCkgfHwKICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PEdMdWludD4oZGVwdGgpID4gY2Fwcy5tYXhBcnJheVRleHR1cmVM
YXllcnMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfQogICAgICAgICBicmVhazsKIAogICAgICAgZGVmYXVsdDoKLSAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSA9IGNvbnRleHQtPmdldFRhcmdl
dFRleHR1cmUoSXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpID8gR0xfVEVYVFVSRV9DVUJF
X01BUCA6IHRhcmdldCk7CiAgICAgaWYgKCF0ZXh0dXJlKQogICAgIHsKLSAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmICh0ZXh0dXJlLT5nZXRJbW11dGFibGVGb3Jt
YXQoKSAmJiAhaXNTdWJJbWFnZSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKICAgICAvLyBWYWxpZGF0ZSB0ZXh0dXJlIGZvcm1hdHMKLSAgICBHTGVudW0gYWN0
dWFsSW50ZXJuYWxGb3JtYXQgPSBpc1N1YkltYWdlID8gdGV4dHVyZS0+Z2V0SW50ZXJuYWxGb3Jt
YXQodGFyZ2V0LCBsZXZlbCkgOiBpbnRlcm5hbGZvcm1hdDsKKyAgICBHTGVudW0gYWN0dWFsSW50
ZXJuYWxGb3JtYXQgPQorICAgICAgICBpc1N1YkltYWdlID8gdGV4dHVyZS0+Z2V0Rm9ybWF0KHRh
cmdldCwgbGV2ZWwpLmFzU2l6ZWQoKSA6IGludGVybmFsZm9ybWF0OwogICAgIGNvbnN0IGdsOjpJ
bnRlcm5hbEZvcm1hdCAmYWN0dWFsRm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdElu
Zm8oYWN0dWFsSW50ZXJuYWxGb3JtYXQpOwogICAgIGlmIChpc0NvbXByZXNzZWQpCiAgICAgewog
ICAgICAgICBpZiAoIWFjdHVhbEZvcm1hdEluZm8uY29tcHJlc3NlZCkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoCisgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcigKICAgICAgICAgICAgICAgICBHTF9JTlZBTElEX0VOVU0sICJp
bnRlcm5hbGZvcm1hdCBpcyBub3QgYSBzdXBwb3J0ZWQgY29tcHJlc3NlZCBpbnRlcm5hbCBmb3Jt
YXQuIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKCFWYWxpZENvbXByZXNzZWRJbWFnZVNpemUoY29udGV4dCwgYWN0dWFsSW50ZXJuYWxGb3Jt
YXQsIHdpZHRoLCBoZWlnaHQpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghYWN0dWFsRm9ybWF0SW5m
by50ZXh0dXJlU3VwcG9ydChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCksIGNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKSkpCisgICAgICAgIGlmICghYWN0dWFsRm9ybWF0SW5mby50ZXh0dXJlU3Vw
cG9ydChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSkpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFM
SURfRU5VTSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAodGFyZ2V0ID09IEdMX1RFWFRVUkVfM0QpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtNDExLDcg
KzIwNiw3IEBAIGJvb2wgVmFsaWRhdGVFUzNUZXhJbWFnZVBhcmFtZXRlcnNCYXNlKEMKIAogICAg
ICAgICBpZiAodGFyZ2V0ID09IEdMX1RFWFRVUkVfM0QgJiYgKGZvcm1hdCA9PSBHTF9ERVBUSF9D
T01QT05FTlQgfHwgZm9ybWF0ID09IEdMX0RFUFRIX1NURU5DSUwpKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAg
LTQyMSw3ICsyMTYsNyBAQCBib29sIFZhbGlkYXRlRVMzVGV4SW1hZ2VQYXJhbWV0ZXJzQmFzZShD
CiAgICAgewogICAgICAgICBpZiAoaXNDb21wcmVzc2VkICE9IGFjdHVhbEZvcm1hdEluZm8uY29t
cHJlc3NlZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KIApAQCAtNDMyLDcgKzIyNyw3IEBAIGJvb2wgVmFsaWRhdGVFUzNUZXhJ
bWFnZVBhcmFtZXRlcnNCYXNlKEMKIAogICAgICAgICBpZiAoeG9mZnNldCA8IDAgfHwgeW9mZnNl
dCA8IDAgfHwgem9mZnNldCA8IDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQogCkBAIC00NDAsNyArMjM1LDcgQEAgYm9vbCBWYWxpZGF0ZUVT
M1RleEltYWdlUGFyYW1ldGVyc0Jhc2UoQwogICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0
czxHTHNpemVpPjo6bWF4KCkgLSB5b2Zmc2V0IDwgaGVpZ2h0IHx8CiAgICAgICAgICAgICBzdGQ6
Om51bWVyaWNfbGltaXRzPEdMc2l6ZWk+OjptYXgoKSAtIHpvZmZzZXQgPCBkZXB0aCkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAgLTQ0
OCw1NCArMjQzLDMyIEBAIGJvb2wgVmFsaWRhdGVFUzNUZXhJbWFnZVBhcmFtZXRlcnNCYXNlKEMK
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PHNpemVfdD4oeW9mZnNldCArIGhlaWdodCkgPiB0ZXh0
dXJlLT5nZXRIZWlnaHQodGFyZ2V0LCBsZXZlbCkgfHwKICAgICAgICAgICAgIHN0YXRpY19jYXN0
PHNpemVfdD4oem9mZnNldCArIGRlcHRoKSA+IHRleHR1cmUtPmdldERlcHRoKHRhcmdldCwgbGV2
ZWwpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICAvLyBDaGVjayBmb3IgcGl4ZWwgdW5wYWNrIGJ1ZmZlciByZWxhdGVk
IEFQSSBlcnJvcnMKLSAgICBnbDo6QnVmZmVyICpwaXhlbFVucGFja0J1ZmZlciA9IGNvbnRleHQt
PmdldFN0YXRlKCkuZ2V0VGFyZ2V0QnVmZmVyKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIpOwotICAg
IGlmIChwaXhlbFVucGFja0J1ZmZlciAhPSBOVUxMKQorICAgIGlmICghVmFsaWRJbWFnZURhdGFT
aXplKGNvbnRleHQsIHRhcmdldCwgd2lkdGgsIGhlaWdodCwgMSwgYWN0dWFsSW50ZXJuYWxGb3Jt
YXQsIHR5cGUsIHBpeGVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZVNpemUp
KQogICAgIHsKLSAgICAgICAgLy8gLi4udGhlIGRhdGEgd291bGQgYmUgdW5wYWNrZWQgZnJvbSB0
aGUgYnVmZmVyIG9iamVjdCBzdWNoIHRoYXQgdGhlIG1lbW9yeSByZWFkcyByZXF1aXJlZAotICAg
ICAgICAvLyB3b3VsZCBleGNlZWQgdGhlIGRhdGEgc3RvcmUgc2l6ZS4KLSAgICAgICAgc2l6ZV90
IHdpZHRoU2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4od2lkdGgpOwotICAgICAgICBzaXplX3Qg
aGVpZ2h0U2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4oaGVpZ2h0KTsKLSAgICAgICAgc2l6ZV90
IGRlcHRoU2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4oZGVwdGgpOwotICAgICAgICBHTGVudW0g
c2l6ZWRGb3JtYXQgPSBHZXRTaXplZEludGVybmFsRm9ybWF0KGFjdHVhbEludGVybmFsRm9ybWF0
LCB0eXBlKTsKLQotICAgICAgICBzaXplX3QgcGl4ZWxCeXRlcyA9IHN0YXRpY19jYXN0PHNpemVf
dD4oZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhzaXplZEZvcm1hdCkucGl4ZWxCeXRlcyk7Ci0K
LSAgICAgICAgaWYgKCFyeDo6SXNVbnNpZ25lZE11bHRpcGxpY2F0aW9uU2FmZSh3aWR0aFNpemUs
IGhlaWdodFNpemUpIHx8Ci0gICAgICAgICAgICAhcng6OklzVW5zaWduZWRNdWx0aXBsaWNhdGlv
blNhZmUod2lkdGhTaXplICogaGVpZ2h0U2l6ZSwgZGVwdGhTaXplKSB8fAotICAgICAgICAgICAg
IXJ4OjpJc1Vuc2lnbmVkTXVsdGlwbGljYXRpb25TYWZlKHdpZHRoU2l6ZSAqIGhlaWdodFNpemUg
KiBkZXB0aFNpemUsIHBpeGVsQnl0ZXMpKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBPdmVy
ZmxvdyBwYXN0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlcgotICAgICAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAm
Zm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oc2l6ZWRGb3JtYXQpOwotICAg
ICAgICBzaXplX3QgY29weUJ5dGVzID0gZm9ybWF0SW5mby5jb21wdXRlQmxvY2tTaXplKHR5cGUs
IHdpZHRoLCBoZWlnaHQpOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gcmVpbnRlcnByZXRfY2Fz
dDxzaXplX3Q+KHBpeGVscyk7Ci0KLSAgICAgICAgaWYgKCFyeDo6SXNVbnNpZ25lZEFkZGl0aW9u
U2FmZShvZmZzZXQsIGNvcHlCeXRlcykgfHwKLSAgICAgICAgICAgICgob2Zmc2V0ICsgY29weUJ5
dGVzKSA+IHN0YXRpY19jYXN0PHNpemVfdD4ocGl4ZWxVbnBhY2tCdWZmZXItPmdldFNpemUoKSkp
KQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBPdmVyZmxvdyBwYXN0IHRoZSBlbmQgb2YgdGhl
IGJ1ZmZlcgotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCisgICAgLy8gQ2hlY2sgZm9yIHBpeGVsIHVucGFj
ayBidWZmZXIgcmVsYXRlZCBBUEkgZXJyb3JzCisgICAgZ2w6OkJ1ZmZlciAqcGl4ZWxVbnBhY2tC
dWZmZXIgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VGFyZ2V0QnVmZmVyKEdMX1BJWEVMX1VO
UEFDS19CVUZGRVIpOworICAgIGlmIChwaXhlbFVucGFja0J1ZmZlciAhPSBudWxscHRyKQorICAg
IHsKICAgICAgICAgLy8gLi4uZGF0YSBpcyBub3QgZXZlbmx5IGRpdmlzaWJsZSBpbnRvIHRoZSBu
dW1iZXIgb2YgYnl0ZXMgbmVlZGVkIHRvIHN0b3JlIGluIG1lbW9yeSBhIGRhdHVtCiAgICAgICAg
IC8vIGluZGljYXRlZCBieSB0eXBlLgogICAgICAgICBpZiAoIWlzQ29tcHJlc3NlZCkKICAgICAg
ICAgeworICAgICAgICAgICAgc2l6ZV90IG9mZnNldCAgICAgICAgICAgID0gcmVpbnRlcnByZXRf
Y2FzdDxzaXplX3Q+KHBpeGVscyk7CiAgICAgICAgICAgICBzaXplX3QgZGF0YUJ5dGVzUGVyUGl4
ZWwgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGdsOjpHZXRUeXBlSW5mbyh0eXBlKS5ieXRlcyk7CiAK
ICAgICAgICAgICAgIGlmICgob2Zmc2V0ICUgZGF0YUJ5dGVzUGVyUGl4ZWwpICE9IDApCiAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cigKKyAgICAgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJSZWFk
cyB3b3VsZCBvdmVyZmxvdyB0aGUgcGl4ZWwgdW5wYWNrIGJ1ZmZlci4iKSk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC01MDMsNyAr
Mjc2LDcgQEAgYm9vbCBWYWxpZGF0ZUVTM1RleEltYWdlUGFyYW1ldGVyc0Jhc2UoQwogICAgICAg
ICAvLyAuLi50aGUgYnVmZmVyIG9iamVjdCdzIGRhdGEgc3RvcmUgaXMgY3VycmVudGx5IG1hcHBl
ZC4KICAgICAgICAgaWYgKHBpeGVsVW5wYWNrQnVmZmVyLT5pc01hcHBlZCgpKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTikpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04sICJQaXhlbCB1bnBhY2sgYnVmZmVyIGlzIG1hcHBlZC4iKSk7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC01MjYsMTcgKzI5OSwxOCBA
QCBib29sIFZhbGlkYXRlRVMzVGV4SW1hZ2UyRFBhcmFtZXRlcnMoQ29uCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYm9yZGVyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBpbWFnZVNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0x2b2lkICpwaXhlbHMpCiB7CiAgICAgaWYgKCFWYWxpZFRleHR1cmUy
RERlc3RpbmF0aW9uVGFyZ2V0KGNvbnRleHQsIHRhcmdldCkpCiAgICAgewotICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKICAgICByZXR1cm4gVmFsaWRhdGVFUzNUZXhJbWFnZVBhcmFtZXRlcnNC
YXNlKGNvbnRleHQsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCBpc0NvbXByZXNzZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1N1YkltYWdl
LCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0
eXBlLCBwaXhlbHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBpbWFnZVNpemUsIHBpeGVscyk7CiB9CiAK
IGJvb2wgVmFsaWRhdGVFUzNUZXhJbWFnZTNEUGFyYW1ldGVycyhDb250ZXh0ICpjb250ZXh0LApA
QCAtNTU0LDExNyArMzI4LDEyNiBAQCBib29sIFZhbGlkYXRlRVMzVGV4SW1hZ2UzRFBhcmFtZXRl
cnMoQ29uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYm9yZGVy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcGl4ZWxzKQogewogICAg
IGlmICghVmFsaWRUZXh0dXJlM0REZXN0aW5hdGlvblRhcmdldChjb250ZXh0LCB0YXJnZXQpKQog
ICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVN
KSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgcmV0dXJuIFZhbGlkYXRlRVMz
VGV4SW1hZ2VQYXJhbWV0ZXJzQmFzZShjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZv
cm1hdCwgaXNDb21wcmVzc2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaXNTdWJJbWFnZSwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhl
aWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRo
LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgYnVmU2l6
ZSwgcGl4ZWxzKTsKIH0KIAogc3RydWN0IEVmZmVjdGl2ZUludGVybmFsRm9ybWF0SW5mbwogewot
ICAgIEdMZW51bSBtRWZmZWN0aXZlRm9ybWF0OwotICAgIEdMZW51bSBtRGVzdEZvcm1hdDsKLSAg
ICBHTHVpbnQgbU1pblJlZEJpdHM7Ci0gICAgR0x1aW50IG1NYXhSZWRCaXRzOwotICAgIEdMdWlu
dCBtTWluR3JlZW5CaXRzOwotICAgIEdMdWludCBtTWF4R3JlZW5CaXRzOwotICAgIEdMdWludCBt
TWluQmx1ZUJpdHM7Ci0gICAgR0x1aW50IG1NYXhCbHVlQml0czsKLSAgICBHTHVpbnQgbU1pbkFs
cGhhQml0czsKLSAgICBHTHVpbnQgbU1heEFscGhhQml0czsKLQotICAgIEVmZmVjdGl2ZUludGVy
bmFsRm9ybWF0SW5mbyhHTGVudW0gZWZmZWN0aXZlRm9ybWF0LCBHTGVudW0gZGVzdEZvcm1hdCwg
R0x1aW50IG1pblJlZEJpdHMsIEdMdWludCBtYXhSZWRCaXRzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgbWluR3JlZW5CaXRzLCBHTHVpbnQgbWF4R3JlZW5CaXRzLCBH
THVpbnQgbWluQmx1ZUJpdHMsIEdMdWludCBtYXhCbHVlQml0cywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IG1pbkFscGhhQml0cywgR0x1aW50IG1heEFscGhhQml0cykK
LSAgICAgICAgOiBtRWZmZWN0aXZlRm9ybWF0KGVmZmVjdGl2ZUZvcm1hdCksIG1EZXN0Rm9ybWF0
KGRlc3RGb3JtYXQpLCBtTWluUmVkQml0cyhtaW5SZWRCaXRzKSwKLSAgICAgICAgICBtTWF4UmVk
Qml0cyhtYXhSZWRCaXRzKSwgbU1pbkdyZWVuQml0cyhtaW5HcmVlbkJpdHMpLCBtTWF4R3JlZW5C
aXRzKG1heEdyZWVuQml0cyksCi0gICAgICAgICAgbU1pbkJsdWVCaXRzKG1pbkJsdWVCaXRzKSwg
bU1heEJsdWVCaXRzKG1heEJsdWVCaXRzKSwgbU1pbkFscGhhQml0cyhtaW5BbHBoYUJpdHMpLAot
ICAgICAgICAgIG1NYXhBbHBoYUJpdHMobWF4QWxwaGFCaXRzKSB7fTsKKyAgICBHTGVudW0gZWZm
ZWN0aXZlRm9ybWF0OworICAgIEdMZW51bSBkZXN0Rm9ybWF0OworICAgIEdMdWludCBtaW5SZWRC
aXRzOworICAgIEdMdWludCBtYXhSZWRCaXRzOworICAgIEdMdWludCBtaW5HcmVlbkJpdHM7Cisg
ICAgR0x1aW50IG1heEdyZWVuQml0czsKKyAgICBHTHVpbnQgbWluQmx1ZUJpdHM7CisgICAgR0x1
aW50IG1heEJsdWVCaXRzOworICAgIEdMdWludCBtaW5BbHBoYUJpdHM7CisgICAgR0x1aW50IG1h
eEFscGhhQml0czsKIH07CiAKLXR5cGVkZWYgc3RkOjp2ZWN0b3I8RWZmZWN0aXZlSW50ZXJuYWxG
b3JtYXRJbmZvPiBFZmZlY3RpdmVJbnRlcm5hbEZvcm1hdExpc3Q7CitzdGF0aWMgYm9vbCBRdWVy
eUVmZmVjdGl2ZUZvcm1hdExpc3QoY29uc3QgSW50ZXJuYWxGb3JtYXQgJnNyY0Zvcm1hdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0Rm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVmZmVjdGl2ZUludGVy
bmFsRm9ybWF0SW5mbyAqbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gKm91dEVmZmVjdGl2ZUZvcm1hdCkKK3sKKyAgICBmb3IgKHNpemVfdCBjdXJGb3JtYXQgPSAw
OyBjdXJGb3JtYXQgPCBzaXplOyArK2N1ckZvcm1hdCkKKyAgICB7CisgICAgICAgIGNvbnN0IEVm
ZmVjdGl2ZUludGVybmFsRm9ybWF0SW5mbyAmZm9ybWF0SW5mbyA9IGxpc3RbY3VyRm9ybWF0XTsK
KyAgICAgICAgaWYgKChmb3JtYXRJbmZvLmRlc3RGb3JtYXQgPT0gdGFyZ2V0Rm9ybWF0KSAmJgor
ICAgICAgICAgICAgKGZvcm1hdEluZm8ubWluUmVkQml0cyA8PSBzcmNGb3JtYXQucmVkQml0cyAm
JgorICAgICAgICAgICAgIGZvcm1hdEluZm8ubWF4UmVkQml0cyA+PSBzcmNGb3JtYXQucmVkQml0
cykgJiYKKyAgICAgICAgICAgIChmb3JtYXRJbmZvLm1pbkdyZWVuQml0cyA8PSBzcmNGb3JtYXQu
Z3JlZW5CaXRzICYmCisgICAgICAgICAgICAgZm9ybWF0SW5mby5tYXhHcmVlbkJpdHMgPj0gc3Jj
Rm9ybWF0LmdyZWVuQml0cykgJiYKKyAgICAgICAgICAgIChmb3JtYXRJbmZvLm1pbkJsdWVCaXRz
IDw9IHNyY0Zvcm1hdC5ibHVlQml0cyAmJgorICAgICAgICAgICAgIGZvcm1hdEluZm8ubWF4Qmx1
ZUJpdHMgPj0gc3JjRm9ybWF0LmJsdWVCaXRzKSAmJgorICAgICAgICAgICAgKGZvcm1hdEluZm8u
bWluQWxwaGFCaXRzIDw9IHNyY0Zvcm1hdC5hbHBoYUJpdHMgJiYKKyAgICAgICAgICAgICBmb3Jt
YXRJbmZvLm1heEFscGhhQml0cyA+PSBzcmNGb3JtYXQuYWxwaGFCaXRzKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgKm91dEVmZmVjdGl2ZUZvcm1hdCA9IGZvcm1hdEluZm8uZWZmZWN0aXZlRm9y
bWF0OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CiAKLXN0YXRp
YyBFZmZlY3RpdmVJbnRlcm5hbEZvcm1hdExpc3QmIEJ1aWxkU2l6ZWRFZmZlY3RpdmVJbnRlcm5h
bEZvcm1hdExpc3QoKQotewotICAgIGF1dG8mIGxpc3QgPSAqbmV3IEVmZmVjdGl2ZUludGVybmFs
Rm9ybWF0TGlzdDsKKyAgICAqb3V0RWZmZWN0aXZlRm9ybWF0ID0gR0xfTk9ORTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CiAKLSAgICAvLyBPcGVuR0wgRVMgMy4wLjMgU3BlY2lmaWNhdGlvbiwgVGFi
bGUgMy4xNywgcGcgMTQxOiBFZmZlY3RpdmUgaW50ZXJuYWwgZm9ybWF0IGNvcmVzcG9uZGluZyB0
byBkZXN0aW5hdGlvbiBpbnRlcm5hbCBmb3JtYXQgYW5kCi0gICAgLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZWFyIHNvdXJjZSBidWZmZXIg
Y29tcG9uZW50IHNpemVzLgotICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU291cmNlIGNoYW5u
ZWwgbWluL21heCBzaXplcyB8Ci0gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVmZmVjdGl2ZSBJbnRlcm5hbCBGb3JtYXQgfCAgTi9BICAgfCAgUiAgIHwgIEcg
ICB8ICBCICAgfCAgQSAgICAgIHwKLSAgICBsaXN0LnB1c2hfYmFjayhFZmZlY3RpdmVJbnRlcm5h
bEZvcm1hdEluZm8oR0xfQUxQSEE4X0VYVCwgICAgICAgICAgICAgIEdMX05PTkUsIDAsICAwLCAw
LCAgMCwgMCwgIDAsIDEsIDgpKTsKLSAgICBsaXN0LnB1c2hfYmFjayhFZmZlY3RpdmVJbnRlcm5h
bEZvcm1hdEluZm8oR0xfUjgsICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsIDEsICA4LCAw
LCAgMCwgMCwgIDAsIDAsIDApKTsKLSAgICBsaXN0LnB1c2hfYmFjayhFZmZlY3RpdmVJbnRlcm5h
bEZvcm1hdEluZm8oR0xfUkc4LCAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsIDEsICA4LCAx
LCAgOCwgMCwgIDAsIDAsIDApKTsKLSAgICBsaXN0LnB1c2hfYmFjayhFZmZlY3RpdmVJbnRlcm5h
bEZvcm1hdEluZm8oR0xfUkdCNTY1LCAgICAgICAgICAgICAgICAgIEdMX05PTkUsIDEsICA1LCAx
LCAgNiwgMSwgIDUsIDAsIDApKTsKLSAgICBsaXN0LnB1c2hfYmFjayhFZmZlY3RpdmVJbnRlcm5h
bEZvcm1hdEluZm8oR0xfUkdCOCwgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsIDYsICA4LCA3
LCAgOCwgNiwgIDgsIDAsIDApKTsKLSAgICBsaXN0LnB1c2hfYmFjayhFZmZlY3RpdmVJbnRlcm5h
bEZvcm1hdEluZm8oR0xfUkdCQTQsICAgICAgICAgICAgICAgICAgIEdMX05PTkUsIDEsICA0LCAx
LCAgNCwgMSwgIDQsIDEsIDQpKTsKLSAgICBsaXN0LnB1c2hfYmFjayhFZmZlY3RpdmVJbnRlcm5h
bEZvcm1hdEluZm8oR0xfUkdCNV9BMSwgICAgICAgICAgICAgICAgIEdMX05PTkUsIDUsICA1LCA1
LCAgNSwgNSwgIDUsIDEsIDEpKTsKLSAgICBsaXN0LnB1c2hfYmFjayhFZmZlY3RpdmVJbnRlcm5h
bEZvcm1hdEluZm8oR0xfUkdCQTgsICAgICAgICAgICAgICAgICAgIEdMX05PTkUsIDUsICA4LCA1
LCAgOCwgNSwgIDgsIDIsIDgpKTsKLSAgICBsaXN0LnB1c2hfYmFjayhFZmZlY3RpdmVJbnRlcm5h
bEZvcm1hdEluZm8oR0xfUkdCMTBfQTIsICAgICAgICAgICAgICAgIEdMX05PTkUsIDksIDEwLCA5
LCAxMCwgOSwgMTAsIDIsIDIpKTsKLQotICAgIHJldHVybiBsaXN0OwotfQotCi1zdGF0aWMgRWZm
ZWN0aXZlSW50ZXJuYWxGb3JtYXRMaXN0JiBCdWlsZFVuc2l6ZWRFZmZlY3RpdmVJbnRlcm5hbEZv
cm1hdExpc3QoKQotewotICAgIGF1dG8mIGxpc3QgPSAqbmV3IEVmZmVjdGl2ZUludGVybmFsRm9y
bWF0TGlzdDsKLQotICAgIC8vIE9wZW5HTCBFUyAzLjAuMyBTcGVjaWZpY2F0aW9uLCBUYWJsZSAz
LjE3LCBwZyAxNDE6IEVmZmVjdGl2ZSBpbnRlcm5hbCBmb3JtYXQgY29yZXNwb25kaW5nIHRvIGRl
c3RpbmF0aW9uIGludGVybmFsIGZvcm1hdCBhbmQKLSAgICAvLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lYXIgc291cmNlIGJ1ZmZlciBjb21w
b25lbnQgc2l6ZXMuCi0gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg
ICAgICBTb3VyY2UgY2hhbm5lbCBtaW4vbWF4IHNpemVzICAgICAgICAgICAgfAotICAgIC8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZmZlY3RpdmUgSW50ZXJuYWwg
Rm9ybWF0IHwgICAgRGVzdCBGb3JtYXQgICAgIHwgICAgIFIgICAgIHwgICAgICBHICAgICB8ICAg
ICAgQiAgICAgfCAgICAgIEEgICAgIHwKLSAgICBsaXN0LnB1c2hfYmFjayhFZmZlY3RpdmVJbnRl
cm5hbEZvcm1hdEluZm8oR0xfQUxQSEE4X0VYVCwgICAgICAgICAgICAgIEdMX0FMUEhBLCAgICAg
ICAgICAgMCwgVUlOVF9NQVgsIDAsIFVJTlRfTUFYLCAwLCBVSU5UX01BWCwgMSwgICAgICAgIDgp
KTsKLSAgICBsaXN0LnB1c2hfYmFjayhFZmZlY3RpdmVJbnRlcm5hbEZvcm1hdEluZm8oR0xfTFVN
SU5BTkNFOF9FWFQsICAgICAgICAgIEdMX0xVTUlOQU5DRSwgICAgICAgMSwgICAgICAgIDgsIDAs
IFVJTlRfTUFYLCAwLCBVSU5UX01BWCwgMCwgVUlOVF9NQVgpKTsKLSAgICBsaXN0LnB1c2hfYmFj
ayhFZmZlY3RpdmVJbnRlcm5hbEZvcm1hdEluZm8oR0xfTFVNSU5BTkNFOF9BTFBIQThfRVhULCAg
IEdMX0xVTUlOQU5DRV9BTFBIQSwgMSwgICAgICAgIDgsIDAsIFVJTlRfTUFYLCAwLCBVSU5UX01B
WCwgMSwgICAgICAgIDgpKTsKLSAgICBsaXN0LnB1c2hfYmFjayhFZmZlY3RpdmVJbnRlcm5hbEZv
cm1hdEluZm8oR0xfUkdCNTY1LCAgICAgICAgICAgICAgICAgIEdMX1JHQiwgICAgICAgICAgICAg
MSwgICAgICAgIDUsIDEsICAgICAgICA2LCAxLCAgICAgICAgNSwgMCwgVUlOVF9NQVgpKTsKLSAg
ICBsaXN0LnB1c2hfYmFjayhFZmZlY3RpdmVJbnRlcm5hbEZvcm1hdEluZm8oR0xfUkdCOCwgICAg
ICAgICAgICAgICAgICAgIEdMX1JHQiwgICAgICAgICAgICAgNiwgICAgICAgIDgsIDcsICAgICAg
ICA4LCA2LCAgICAgICAgOCwgMCwgVUlOVF9NQVgpKTsKLSAgICBsaXN0LnB1c2hfYmFjayhFZmZl
Y3RpdmVJbnRlcm5hbEZvcm1hdEluZm8oR0xfUkdCQTQsICAgICAgICAgICAgICAgICAgIEdMX1JH
QkEsICAgICAgICAgICAgMSwgICAgICAgIDQsIDEsICAgICAgICA0LCAxLCAgICAgICAgNCwgMSwg
ICAgICAgIDQpKTsKLSAgICBsaXN0LnB1c2hfYmFjayhFZmZlY3RpdmVJbnRlcm5hbEZvcm1hdElu
Zm8oR0xfUkdCNV9BMSwgICAgICAgICAgICAgICAgIEdMX1JHQkEsICAgICAgICAgICAgNSwgICAg
ICAgIDUsIDUsICAgICAgICA1LCA1LCAgICAgICAgNSwgMSwgICAgICAgIDEpKTsKLSAgICBsaXN0
LnB1c2hfYmFjayhFZmZlY3RpdmVJbnRlcm5hbEZvcm1hdEluZm8oR0xfUkdCQTgsICAgICAgICAg
ICAgICAgICAgIEdMX1JHQkEsICAgICAgICAgICAgNSwgICAgICAgIDgsIDUsICAgICAgICA4LCA1
LCAgICAgICAgOCwgNSwgICAgICAgIDgpKTsKK2Jvb2wgR2V0U2l6ZWRFZmZlY3RpdmVJbnRlcm5h
bEZvcm1hdEluZm8oY29uc3QgSW50ZXJuYWxGb3JtYXQgJnNyY0Zvcm1hdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICpvdXRFZmZlY3RpdmVGb3JtYXQp
Cit7CisgICAgLy8gT3BlbkdMIEVTIDMuMC4zIFNwZWNpZmljYXRpb24sIFRhYmxlIDMuMTcsIHBn
IDE0MToKKyAgICAvLyBFZmZlY3RpdmUgaW50ZXJuYWwgZm9ybWF0IGNvcmVzcG9uZGluZyB0byBk
ZXN0aW5hdGlvbiBpbnRlcm5hbCBmb3JtYXQgYW5kIGxpbmVhciBzb3VyY2UKKyAgICAvLyBidWZm
ZXIgY29tcG9uZW50IHNpemVzLgorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCBTb3VyY2UgY2hhbm5lbCBtaW4vbWF4IHNpemVzIHwKKyAgICAvLyAgIEVmZmVj
dGl2ZSBJbnRlcm5hbCBGb3JtYXQgICB8ICBOL0EgIHwgIFIgICB8ICBHICAgfCAgQiAgIHwgIEEg
ICAgICB8CisgICAgLy8gY2xhbmctZm9ybWF0IG9mZgorICAgIGNvbnN0ZXhwciBFZmZlY3RpdmVJ
bnRlcm5hbEZvcm1hdEluZm8gbGlzdFtdID0geworICAgICAgICB7IEdMX0FMUEhBOF9FWFQsICAg
ICAgICAgICAgICBHTF9OT05FLCAwLCAgMCwgMCwgIDAsIDAsICAwLCAxLCA4IH0sCisgICAgICAg
IHsgR0xfUjgsICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsIDEsICA4LCAwLCAgMCwgMCwg
IDAsIDAsIDAgfSwKKyAgICAgICAgeyBHTF9SRzgsICAgICAgICAgICAgICAgICAgICAgR0xfTk9O
RSwgMSwgIDgsIDEsICA4LCAwLCAgMCwgMCwgMCB9LAorICAgICAgICB7IEdMX1JHQjU2NSwgICAg
ICAgICAgICAgICAgICBHTF9OT05FLCAxLCAgNSwgMSwgIDYsIDEsICA1LCAwLCAwIH0sCisgICAg
ICAgIHsgR0xfUkdCOCwgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsIDYsICA4LCA3LCAgOCwg
NiwgIDgsIDAsIDAgfSwKKyAgICAgICAgeyBHTF9SR0JBNCwgICAgICAgICAgICAgICAgICAgR0xf
Tk9ORSwgMSwgIDQsIDEsICA0LCAxLCAgNCwgMSwgNCB9LAorICAgICAgICB7IEdMX1JHQjVfQTEs
ICAgICAgICAgICAgICAgICBHTF9OT05FLCA1LCAgNSwgNSwgIDUsIDUsICA1LCAxLCAxIH0sCisg
ICAgICAgIHsgR0xfUkdCQTgsICAgICAgICAgICAgICAgICAgIEdMX05PTkUsIDUsICA4LCA1LCAg
OCwgNSwgIDgsIDIsIDggfSwKKyAgICAgICAgeyBHTF9SR0IxMF9BMiwgICAgICAgICAgICAgICAg
R0xfTk9ORSwgOSwgMTAsIDksIDEwLCA5LCAxMCwgMiwgMiB9LAorICAgIH07CisgICAgLy8gY2xh
bmctZm9ybWF0IG9uCisKKyAgICByZXR1cm4gUXVlcnlFZmZlY3RpdmVGb3JtYXRMaXN0KHNyY0Zv
cm1hdCwgR0xfTk9ORSwgbGlzdCwgQXJyYXlTaXplKGxpc3QpLCBvdXRFZmZlY3RpdmVGb3JtYXQp
OworfQorCitib29sIEdldFVuc2l6ZWRFZmZlY3RpdmVJbnRlcm5hbEZvcm1hdEluZm8oY29uc3Qg
SW50ZXJuYWxGb3JtYXQgJnNyY0Zvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBJbnRlcm5hbEZvcm1hdCAmZGVzdEZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKm91dEVmZmVjdGl2ZUZv
cm1hdCkKK3sKKyAgICBjb25zdGV4cHIgR0x1aW50IHVtYXggPSBVSU5UX01BWDsKKworICAgIC8v
IE9wZW5HTCBFUyAzLjAuMyBTcGVjaWZpY2F0aW9uLCBUYWJsZSAzLjE3LCBwZyAxNDE6CisgICAg
Ly8gRWZmZWN0aXZlIGludGVybmFsIGZvcm1hdCBjb3Jlc3BvbmRpbmcgdG8gZGVzdGluYXRpb24g
aW50ZXJuYWwgZm9ybWF0IGFuZGxpbmVhciBzb3VyY2UgYnVmZmVyCisgICAgLy8gY29tcG9uZW50
IHNpemVzLgorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIFNvdXJjZSBjaGFubmVsIG1pbi9tYXggc2l6ZXMgICB8CisgICAgLy8gICAg
IEVmZmVjdGl2ZSBJbnRlcm5hbCBGb3JtYXQgfCAgIERlc3QgRm9ybWF0ICAgICB8ICAgUiAgIHwg
ICAgRyAgIHwgICAgQiAgIHwgICAgQSAgIHwKKyAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgICAg
Y29uc3RleHByIEVmZmVjdGl2ZUludGVybmFsRm9ybWF0SW5mbyBsaXN0W10gPSB7CisgICAgICAg
IHsgR0xfQUxQSEE4X0VYVCwgICAgICAgICAgICAgR0xfQUxQSEEsICAgICAgICAgICAwLCB1bWF4
LCAwLCB1bWF4LCAwLCB1bWF4LCAxLCAgICA4IH0sCisgICAgICAgIHsgR0xfTFVNSU5BTkNFOF9F
WFQsICAgICAgICAgR0xfTFVNSU5BTkNFLCAgICAgICAxLCAgICA4LCAwLCB1bWF4LCAwLCB1bWF4
LCAwLCB1bWF4IH0sCisgICAgICAgIHsgR0xfTFVNSU5BTkNFOF9BTFBIQThfRVhULCAgR0xfTFVN
SU5BTkNFX0FMUEhBLCAxLCAgICA4LCAwLCB1bWF4LCAwLCB1bWF4LCAxLCAgICA4IH0sCisgICAg
ICAgIHsgR0xfUkdCNTY1LCAgICAgICAgICAgICAgICAgR0xfUkdCLCAgICAgICAgICAgICAxLCAg
ICA1LCAxLCAgICA2LCAxLCAgICA1LCAwLCB1bWF4IH0sCisgICAgICAgIHsgR0xfUkdCOCwgICAg
ICAgICAgICAgICAgICAgR0xfUkdCLCAgICAgICAgICAgICA2LCAgICA4LCA3LCAgICA4LCA2LCAg
ICA4LCAwLCB1bWF4IH0sCisgICAgICAgIHsgR0xfUkdCQTQsICAgICAgICAgICAgICAgICAgR0xf
UkdCQSwgICAgICAgICAgICAxLCAgICA0LCAxLCAgICA0LCAxLCAgICA0LCAxLCAgICA0IH0sCisg
ICAgICAgIHsgR0xfUkdCNV9BMSwgICAgICAgICAgICAgICAgR0xfUkdCQSwgICAgICAgICAgICA1
LCAgICA1LCA1LCAgICA1LCA1LCAgICA1LCAxLCAgICAxIH0sCisgICAgICAgIHsgR0xfUkdCQTgs
ICAgICAgICAgICAgICAgICAgR0xfUkdCQSwgICAgICAgICAgICA1LCAgICA4LCA1LCAgICA4LCA1
LCAgICA4LCA1LCAgICA4IH0sCisgICAgfTsKKyAgICAvLyBjbGFuZy1mb3JtYXQgb24KIAotICAg
IHJldHVybiBsaXN0OworICAgIHJldHVybiBRdWVyeUVmZmVjdGl2ZUZvcm1hdExpc3Qoc3JjRm9y
bWF0LCBkZXN0Rm9ybWF0LmZvcm1hdCwgbGlzdCwgQXJyYXlTaXplKGxpc3QpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0RWZmZWN0aXZlRm9ybWF0KTsKIH0KIAogc3Rh
dGljIGJvb2wgR2V0RWZmZWN0aXZlSW50ZXJuYWxGb3JtYXQoY29uc3QgSW50ZXJuYWxGb3JtYXQg
JnNyY0Zvcm1hdCwgY29uc3QgSW50ZXJuYWxGb3JtYXQgJmRlc3RGb3JtYXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKm91dEVmZmVjdGl2ZUZvcm1hdCkK
IHsKLSAgICBjb25zdCBFZmZlY3RpdmVJbnRlcm5hbEZvcm1hdExpc3QgKmxpc3QgPSBOVUxMOwot
ICAgIEdMZW51bSB0YXJnZXRGb3JtYXQgPSBHTF9OT05FOwotCiAgICAgaWYgKGRlc3RGb3JtYXQu
cGl4ZWxCeXRlcyA+IDApCiAgICAgewotICAgICAgICBzdGF0aWMgY29uc3QgRWZmZWN0aXZlSW50
ZXJuYWxGb3JtYXRMaXN0JiBzaXplZExpc3QgPSBCdWlsZFNpemVkRWZmZWN0aXZlSW50ZXJuYWxG
b3JtYXRMaXN0KCk7Ci0gICAgICAgIGxpc3QgPSAmc2l6ZWRMaXN0OworICAgICAgICByZXR1cm4g
R2V0U2l6ZWRFZmZlY3RpdmVJbnRlcm5hbEZvcm1hdEluZm8oc3JjRm9ybWF0LCBvdXRFZmZlY3Rp
dmVGb3JtYXQpOwogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBzdGF0aWMgY29uc3Qg
RWZmZWN0aXZlSW50ZXJuYWxGb3JtYXRMaXN0JiB1bnNpemVkTGlzdCA9IEJ1aWxkVW5zaXplZEVm
ZmVjdGl2ZUludGVybmFsRm9ybWF0TGlzdCgpOwotICAgICAgICBsaXN0ID0gJnVuc2l6ZWRMaXN0
OwotICAgICAgICB0YXJnZXRGb3JtYXQgPSBkZXN0Rm9ybWF0LmZvcm1hdDsKLSAgICB9Ci0KLSAg
ICBmb3IgKHNpemVfdCBjdXJGb3JtYXQgPSAwOyBjdXJGb3JtYXQgPCBsaXN0LT5zaXplKCk7ICsr
Y3VyRm9ybWF0KQotICAgIHsKLSAgICAgICAgY29uc3QgRWZmZWN0aXZlSW50ZXJuYWxGb3JtYXRJ
bmZvJiBmb3JtYXRJbmZvID0gbGlzdC0+YXQoY3VyRm9ybWF0KTsKLSAgICAgICAgaWYgKChmb3Jt
YXRJbmZvLm1EZXN0Rm9ybWF0ID09IHRhcmdldEZvcm1hdCkgJiYKLSAgICAgICAgICAgIChmb3Jt
YXRJbmZvLm1NaW5SZWRCaXRzICAgPD0gc3JjRm9ybWF0LnJlZEJpdHMgICAmJiBmb3JtYXRJbmZv
Lm1NYXhSZWRCaXRzICAgPj0gc3JjRm9ybWF0LnJlZEJpdHMpICAgJiYKLSAgICAgICAgICAgIChm
b3JtYXRJbmZvLm1NaW5HcmVlbkJpdHMgPD0gc3JjRm9ybWF0LmdyZWVuQml0cyAmJiBmb3JtYXRJ
bmZvLm1NYXhHcmVlbkJpdHMgPj0gc3JjRm9ybWF0LmdyZWVuQml0cykgJiYKLSAgICAgICAgICAg
IChmb3JtYXRJbmZvLm1NaW5CbHVlQml0cyAgPD0gc3JjRm9ybWF0LmJsdWVCaXRzICAmJiBmb3Jt
YXRJbmZvLm1NYXhCbHVlQml0cyAgPj0gc3JjRm9ybWF0LmJsdWVCaXRzKSAgJiYKLSAgICAgICAg
ICAgIChmb3JtYXRJbmZvLm1NaW5BbHBoYUJpdHMgPD0gc3JjRm9ybWF0LmFscGhhQml0cyAmJiBm
b3JtYXRJbmZvLm1NYXhBbHBoYUJpdHMgPj0gc3JjRm9ybWF0LmFscGhhQml0cykpCi0gICAgICAg
IHsKLSAgICAgICAgICAgICpvdXRFZmZlY3RpdmVGb3JtYXQgPSBmb3JtYXRJbmZvLm1FZmZlY3Rp
dmVGb3JtYXQ7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gR2V0VW5zaXplZEVmZmVjdGl2ZUludGVybmFsRm9ybWF0SW5mbyhzcmNGb3JtYXQsIGRl
c3RGb3JtYXQsIG91dEVmZmVjdGl2ZUZvcm1hdCk7CiAgICAgfQotCi0gICAgcmV0dXJuIGZhbHNl
OwogfQogCiBzdHJ1Y3QgQ29weUNvbnZlcnNpb24KQEAgLTY4Myw5ICs0NjYsOSBAQCBzdHJ1Y3Qg
Q29weUNvbnZlcnNpb24KIAogdHlwZWRlZiBzdGQ6OnNldDxDb3B5Q29udmVyc2lvbj4gQ29weUNv
bnZlcnNpb25TZXQ7CiAKLXN0YXRpYyBDb3B5Q29udmVyc2lvblNldCYgQnVpbGRWYWxpZEVTM0Nv
cHlUZXhJbWFnZUNvbWJpbmF0aW9ucygpCitzdGF0aWMgQ29weUNvbnZlcnNpb25TZXQgQnVpbGRW
YWxpZEVTM0NvcHlUZXhJbWFnZUNvbWJpbmF0aW9ucygpCiB7Ci0gICAgYXV0byYgc2V0ID0gKm5l
dyBDb3B5Q29udmVyc2lvblNldDsKKyAgICBDb3B5Q29udmVyc2lvblNldCBzZXQ7CiAKICAgICAv
LyBGcm9tIEVTIDMuMC4xIHNwZWMsIHRhYmxlIDMuMTUKICAgICBzZXQuaW5zZXJ0KENvcHlDb252
ZXJzaW9uKEdMX0FMUEhBLCBHTF9SR0JBKSk7CkBAIC03MTMsNiArNDk2LDcgQEAgc3RhdGljIENv
cHlDb252ZXJzaW9uU2V0JiBCdWlsZFZhbGlkRVMzQwogICAgIHNldC5pbnNlcnQoQ29weUNvbnZl
cnNpb24oR0xfUkcsIEdMX0JHUkFfRVhUKSk7CiAgICAgc2V0Lmluc2VydChDb3B5Q29udmVyc2lv
bihHTF9SR0IsIEdMX0JHUkFfRVhUKSk7CiAgICAgc2V0Lmluc2VydChDb3B5Q29udmVyc2lvbihH
TF9SR0JBLCBHTF9CR1JBX0VYVCkpOworICAgIHNldC5pbnNlcnQoQ29weUNvbnZlcnNpb24oR0xf
QkdSQV9FWFQsIEdMX0JHUkFfRVhUKSk7CiAKICAgICBzZXQuaW5zZXJ0KENvcHlDb252ZXJzaW9u
KEdMX1JFRF9JTlRFR0VSLCBHTF9SRURfSU5URUdFUikpOwogICAgIHNldC5pbnNlcnQoQ29weUNv
bnZlcnNpb24oR0xfUkVEX0lOVEVHRVIsIEdMX1JHX0lOVEVHRVIpKTsKQEAgLTcyOCwzNiArNTEy
LDUwIEBAIHN0YXRpYyBDb3B5Q29udmVyc2lvblNldCYgQnVpbGRWYWxpZEVTM0MKICAgICByZXR1
cm4gc2V0OwogfQogCi1zdGF0aWMgYm9vbCBJc1ZhbGlkRVMzQ29weVRleEltYWdlQ29tYmluYXRp
b24oR0xlbnVtIHRleHR1cmVJbnRlcm5hbEZvcm1hdCwgR0xlbnVtIGZyYW1lQnVmZmVySW50ZXJu
YWxGb3JtYXQsIEdMdWludCByZWFkQnVmZmVySGFuZGxlKQorc3RhdGljIGJvb2wgRXF1YWxPckZp
cnN0WmVybyhHTHVpbnQgZmlyc3QsIEdMdWludCBzZWNvbmQpCit7CisgICAgcmV0dXJuIGZpcnN0
ID09IDAgfHwgZmlyc3QgPT0gc2Vjb25kOworfQorCitzdGF0aWMgYm9vbCBJc1ZhbGlkRVMzQ29w
eVRleEltYWdlQ29tYmluYXRpb24oY29uc3QgRm9ybWF0ICZ0ZXh0dXJlRm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZvcm1hdCAmZnJh
bWVidWZmZXJGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IHJlYWRCdWZmZXJIYW5kbGUpCiB7Ci0gICAgY29uc3QgSW50ZXJuYWxGb3Jt
YXQgJnRleHR1cmVJbnRlcm5hbEZvcm1hdEluZm8gPSBHZXRJbnRlcm5hbEZvcm1hdEluZm8odGV4
dHVyZUludGVybmFsRm9ybWF0KTsKLSAgICBjb25zdCBJbnRlcm5hbEZvcm1hdCAmZnJhbWVidWZm
ZXJJbnRlcm5hbEZvcm1hdEluZm8gPSBHZXRJbnRlcm5hbEZvcm1hdEluZm8oZnJhbWVCdWZmZXJJ
bnRlcm5hbEZvcm1hdCk7CisgICAgY29uc3QgYXV0byAmdGV4dHVyZUZvcm1hdEluZm8gICAgID0g
KnRleHR1cmVGb3JtYXQuaW5mbzsKKyAgICBjb25zdCBhdXRvICZmcmFtZWJ1ZmZlckZvcm1hdElu
Zm8gPSAqZnJhbWVidWZmZXJGb3JtYXQuaW5mbzsKIAotICAgIHN0YXRpYyBjb25zdCBDb3B5Q29u
dmVyc2lvblNldCYgY29udmVyc2lvblNldCA9IEJ1aWxkVmFsaWRFUzNDb3B5VGV4SW1hZ2VDb21i
aW5hdGlvbnMoKTsKLSAgICBpZiAoY29udmVyc2lvblNldC5maW5kKENvcHlDb252ZXJzaW9uKHRl
eHR1cmVJbnRlcm5hbEZvcm1hdEluZm8uZm9ybWF0LCBmcmFtZWJ1ZmZlckludGVybmFsRm9ybWF0
SW5mby5mb3JtYXQpKSAhPSBjb252ZXJzaW9uU2V0LmVuZCgpKQorI3ByYWdtYSBHQ0MgZGlhZ25v
c3RpYyBwdXNoCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZXhpdC10aW1lLWRl
c3RydWN0b3JzIgorICAgIHN0YXRpYyBjb25zdCBDb3B5Q29udmVyc2lvblNldCBjb252ZXJzaW9u
U2V0ID0gQnVpbGRWYWxpZEVTM0NvcHlUZXhJbWFnZUNvbWJpbmF0aW9ucygpOworI3ByYWdtYSBH
Q0MgZGlhZ25vc3RpYyBwb3AKKyAgICBpZiAoY29udmVyc2lvblNldC5maW5kKENvcHlDb252ZXJz
aW9uKHRleHR1cmVGb3JtYXRJbmZvLmZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyRm9ybWF0SW5mby5mb3JtYXQpKSAhPSBjb252ZXJz
aW9uU2V0LmVuZCgpKQogICAgIHsKICAgICAgICAgLy8gU2VjdGlvbiAzLjguNSBvZiB0aGUgR0xF
UyAzLjAuMyBzcGVjIHN0YXRlcyB0aGF0IHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZm9ybWF0cwog
ICAgICAgICAvLyBtdXN0IGJvdGggYmUgc2lnbmVkLCB1bnNpZ25lZCwgb3IgZml4ZWQgcG9pbnQg
YW5kIGJvdGggc291cmNlIGFuZCBkZXN0aW5hdGlvbnMKICAgICAgICAgLy8gbXVzdCBiZSBlaXRo
ZXIgYm90aCBTUkdCIG9yIGJvdGggbm90IFNSR0IuIEVYVF9jb2xvcl9idWZmZXJfZmxvYXQgYWRk
cyBhbGxvd2VkCiAgICAgICAgIC8vIGNvbnZlcnNpb24gYmV0d2VlbiBmaXhlZCBhbmQgZmxvYXRp
bmcgcG9pbnQuCiAKLSAgICAgICAgaWYgKCh0ZXh0dXJlSW50ZXJuYWxGb3JtYXRJbmZvLmNvbG9y
RW5jb2RpbmcgPT0gR0xfU1JHQikgIT0gKGZyYW1lYnVmZmVySW50ZXJuYWxGb3JtYXRJbmZvLmNv
bG9yRW5jb2RpbmcgPT0gR0xfU1JHQikpCisgICAgICAgIGlmICgodGV4dHVyZUZvcm1hdEluZm8u
Y29sb3JFbmNvZGluZyA9PSBHTF9TUkdCKSAhPQorICAgICAgICAgICAgKGZyYW1lYnVmZmVyRm9y
bWF0SW5mby5jb2xvckVuY29kaW5nID09IEdMX1NSR0IpKQogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoKCh0ZXh0dXJlSW50ZXJu
YWxGb3JtYXRJbmZvLmNvbXBvbmVudFR5cGUgPT0gR0xfSU5UKSAgICAgICAgICAhPSAoZnJhbWVi
dWZmZXJJbnRlcm5hbEZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9JTlQgICAgICAgICAp
KSB8fAotICAgICAgICAgICAgKCh0ZXh0dXJlSW50ZXJuYWxGb3JtYXRJbmZvLmNvbXBvbmVudFR5
cGUgPT0gR0xfVU5TSUdORURfSU5UKSAhPSAoZnJhbWVidWZmZXJJbnRlcm5hbEZvcm1hdEluZm8u
Y29tcG9uZW50VHlwZSA9PSBHTF9VTlNJR05FRF9JTlQpKSkKKyAgICAgICAgaWYgKCgodGV4dHVy
ZUZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9JTlQpICE9CisgICAgICAgICAgICAgKGZy
YW1lYnVmZmVyRm9ybWF0SW5mby5jb21wb25lbnRUeXBlID09IEdMX0lOVCkpIHx8CisgICAgICAg
ICAgICAoKHRleHR1cmVGb3JtYXRJbmZvLmNvbXBvbmVudFR5cGUgPT0gR0xfVU5TSUdORURfSU5U
KSAhPQorICAgICAgICAgICAgIChmcmFtZWJ1ZmZlckZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9
PSBHTF9VTlNJR05FRF9JTlQpKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCh0ZXh0dXJlSW50ZXJuYWxGb3JtYXRJbmZvLmNv
bXBvbmVudFR5cGUgPT0gR0xfVU5TSUdORURfTk9STUFMSVpFRCB8fAotICAgICAgICAgICAgIHRl
eHR1cmVJbnRlcm5hbEZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9TSUdORURfTk9STUFM
SVpFRCB8fAotICAgICAgICAgICAgIHRleHR1cmVJbnRlcm5hbEZvcm1hdEluZm8uY29tcG9uZW50
VHlwZSA9PSBHTF9GTE9BVCkgJiYKLSAgICAgICAgICAgICEoZnJhbWVidWZmZXJJbnRlcm5hbEZv
cm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9VTlNJR05FRF9OT1JNQUxJWkVEIHx8Ci0gICAg
ICAgICAgICAgIGZyYW1lYnVmZmVySW50ZXJuYWxGb3JtYXRJbmZvLmNvbXBvbmVudFR5cGUgPT0g
R0xfU0lHTkVEX05PUk1BTElaRUQgfHwKLSAgICAgICAgICAgICAgZnJhbWVidWZmZXJJbnRlcm5h
bEZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9GTE9BVCkpCisgICAgICAgIGlmICgodGV4
dHVyZUZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9VTlNJR05FRF9OT1JNQUxJWkVEIHx8
CisgICAgICAgICAgICAgdGV4dHVyZUZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9TSUdO
RURfTk9STUFMSVpFRCB8fAorICAgICAgICAgICAgIHRleHR1cmVGb3JtYXRJbmZvLmNvbXBvbmVu
dFR5cGUgPT0gR0xfRkxPQVQpICYmCisgICAgICAgICAgICAhKGZyYW1lYnVmZmVyRm9ybWF0SW5m
by5jb21wb25lbnRUeXBlID09IEdMX1VOU0lHTkVEX05PUk1BTElaRUQgfHwKKyAgICAgICAgICAg
ICAgZnJhbWVidWZmZXJGb3JtYXRJbmZvLmNvbXBvbmVudFR5cGUgPT0gR0xfU0lHTkVEX05PUk1B
TElaRUQgfHwKKyAgICAgICAgICAgICAgZnJhbWVidWZmZXJGb3JtYXRJbmZvLmNvbXBvbmVudFR5
cGUgPT0gR0xfRkxPQVQpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KQEAgLTc3OSwxNSArNTc3LDE2IEBAIHN0YXRpYyBib29sIElzVmFsaWRFUzNDb3B5
VGV4SW1hZ2VDb21iaW4KICAgICAgICAgaWYgKHJlYWRCdWZmZXJIYW5kbGUgIT0gMCkKICAgICAg
ICAgewogICAgICAgICAgICAgLy8gTm90IHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyLCB0aGVyZWZv
cmUgdGhlIHJlYWQgYnVmZmVyIG11c3QgYmUgYSB1c2VyLWNyZWF0ZWQgdGV4dHVyZSBvciByZW5k
ZXJidWZmZXIKLSAgICAgICAgICAgIGlmIChmcmFtZWJ1ZmZlckludGVybmFsRm9ybWF0SW5mby5w
aXhlbEJ5dGVzID4gMCkKKyAgICAgICAgICAgIGlmIChmcmFtZWJ1ZmZlckZvcm1hdC5zaXplZCkK
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzb3VyY2VFZmZlY3RpdmVGb3JtYXQgPSAm
ZnJhbWVidWZmZXJJbnRlcm5hbEZvcm1hdEluZm87CisgICAgICAgICAgICAgICAgc291cmNlRWZm
ZWN0aXZlRm9ybWF0ID0gJmZyYW1lYnVmZmVyRm9ybWF0SW5mbzsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAvLyBSZW5kZXJi
dWZmZXJzIGNhbm5vdCBiZSBjcmVhdGVkIHdpdGggYW4gdW5zaXplZCBpbnRlcm5hbCBmb3JtYXQs
IHNvIHRoaXMgbXVzdCBiZSBhbiB1bnNpemVkLWZvcm1hdAogICAgICAgICAgICAgICAgIC8vIHRl
eHR1cmUuIFdlIGNhbiB1c2UgdGhlIHNhbWUgdGFibGUgd2UgdXNlIHdoZW4gY3JlYXRpbmcgdGV4
dHVyZXMgdG8gZ2V0IGl0cyBlZmZlY3RpdmUgc2l6ZWQgZm9ybWF0LgotICAgICAgICAgICAgICAg
IEdMZW51bSBzaXplZEludGVybmFsRm9ybWF0ID0gR2V0U2l6ZWRJbnRlcm5hbEZvcm1hdChmcmFt
ZWJ1ZmZlckludGVybmFsRm9ybWF0SW5mby5mb3JtYXQsIGZyYW1lYnVmZmVySW50ZXJuYWxGb3Jt
YXRJbmZvLnR5cGUpOworICAgICAgICAgICAgICAgIEdMZW51bSBzaXplZEludGVybmFsRm9ybWF0
ID0gR2V0U2l6ZWRJbnRlcm5hbEZvcm1hdChmcmFtZWJ1ZmZlckZvcm1hdEluZm8uZm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmcmFtZWJ1ZmZlckZvcm1hdEluZm8udHlwZSk7CiAgICAgICAgICAgICAgICAg
c291cmNlRWZmZWN0aXZlRm9ybWF0ID0gJkdldEludGVybmFsRm9ybWF0SW5mbyhzaXplZEludGVy
bmFsRm9ybWF0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNzk1LDEwICs1OTQsMTEg
QEAgc3RhdGljIGJvb2wgSXNWYWxpZEVTM0NvcHlUZXhJbWFnZUNvbWJpbgogICAgICAgICB7CiAg
ICAgICAgICAgICAvLyBUaGUgZWZmZWN0aXZlIGludGVybmFsIGZvcm1hdCBtdXN0IGJlIGRlcml2
ZWQgZnJvbSB0aGUgc291cmNlIGZyYW1lYnVmZmVyJ3MgY2hhbm5lbCBzaXplcy4KICAgICAgICAg
ICAgIC8vIFRoaXMgaXMgZG9uZSBpbiBHZXRFZmZlY3RpdmVJbnRlcm5hbEZvcm1hdCBmb3IgbGlu
ZWFyIGJ1ZmZlcnMgKHRhYmxlIDMuMTcpCi0gICAgICAgICAgICBpZiAoZnJhbWVidWZmZXJJbnRl
cm5hbEZvcm1hdEluZm8uY29sb3JFbmNvZGluZyA9PSBHTF9MSU5FQVIpCisgICAgICAgICAgICBp
ZiAoZnJhbWVidWZmZXJGb3JtYXRJbmZvLmNvbG9yRW5jb2RpbmcgPT0gR0xfTElORUFSKQogICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgIEdMZW51bSBlZmZlY3RpdmVGb3JtYXQ7Ci0gICAg
ICAgICAgICAgICAgaWYgKEdldEVmZmVjdGl2ZUludGVybmFsRm9ybWF0KGZyYW1lYnVmZmVySW50
ZXJuYWxGb3JtYXRJbmZvLCB0ZXh0dXJlSW50ZXJuYWxGb3JtYXRJbmZvLCAmZWZmZWN0aXZlRm9y
bWF0KSkKKyAgICAgICAgICAgICAgICBpZiAoR2V0RWZmZWN0aXZlSW50ZXJuYWxGb3JtYXQoZnJh
bWVidWZmZXJGb3JtYXRJbmZvLCB0ZXh0dXJlRm9ybWF0SW5mbywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVmZmVjdGl2ZUZvcm1hdCkpCiAgICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBzb3VyY2VFZmZlY3RpdmVGb3JtYXQgPSAm
R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGVmZmVjdGl2ZUZvcm1hdCk7CiAgICAgICAgICAgICAgICAg
fQpAQCAtODA3LDE0ICs2MDcsMTUgQEAgc3RhdGljIGJvb2wgSXNWYWxpZEVTM0NvcHlUZXhJbWFn
ZUNvbWJpbgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoZnJhbWVidWZmZXJJbnRl
cm5hbEZvcm1hdEluZm8uY29sb3JFbmNvZGluZyA9PSBHTF9TUkdCKQorICAgICAgICAgICAgZWxz
ZSBpZiAoZnJhbWVidWZmZXJGb3JtYXRJbmZvLmNvbG9yRW5jb2RpbmcgPT0gR0xfU1JHQikKICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAvLyBTUkdCIGJ1ZmZlcnMgY2FuIG9ubHkgYmUg
Y29waWVkIHRvIHNpemVkIGZvcm1hdCBkZXN0aW5hdGlvbnMgYWNjb3JkaW5nIHRvIHRhYmxlIDMu
MTgKLSAgICAgICAgICAgICAgICBpZiAoKHRleHR1cmVJbnRlcm5hbEZvcm1hdEluZm8ucGl4ZWxC
eXRlcyA+IDApICYmCi0gICAgICAgICAgICAgICAgICAgIChmcmFtZWJ1ZmZlckludGVybmFsRm9y
bWF0SW5mby5yZWRCaXRzICAgPj0gMSAmJiBmcmFtZWJ1ZmZlckludGVybmFsRm9ybWF0SW5mby5y
ZWRCaXRzICAgPD0gOCkgJiYKLSAgICAgICAgICAgICAgICAgICAgKGZyYW1lYnVmZmVySW50ZXJu
YWxGb3JtYXRJbmZvLmdyZWVuQml0cyA+PSAxICYmIGZyYW1lYnVmZmVySW50ZXJuYWxGb3JtYXRJ
bmZvLmdyZWVuQml0cyA8PSA4KSAmJgotICAgICAgICAgICAgICAgICAgICAoZnJhbWVidWZmZXJJ
bnRlcm5hbEZvcm1hdEluZm8uYmx1ZUJpdHMgID49IDEgJiYgZnJhbWVidWZmZXJJbnRlcm5hbEZv
cm1hdEluZm8uYmx1ZUJpdHMgIDw9IDgpICYmCi0gICAgICAgICAgICAgICAgICAgIChmcmFtZWJ1
ZmZlckludGVybmFsRm9ybWF0SW5mby5hbHBoYUJpdHMgPj0gMSAmJiBmcmFtZWJ1ZmZlckludGVy
bmFsRm9ybWF0SW5mby5hbHBoYUJpdHMgPD0gOCkpCisgICAgICAgICAgICAgICAgaWYgKHRleHR1
cmVGb3JtYXQuc2l6ZWQgJiYKKyAgICAgICAgICAgICAgICAgICAgKGZyYW1lYnVmZmVyRm9ybWF0
SW5mby5yZWRCaXRzID49IDEgJiYgZnJhbWVidWZmZXJGb3JtYXRJbmZvLnJlZEJpdHMgPD0gOCkg
JiYKKyAgICAgICAgICAgICAgICAgICAgKGZyYW1lYnVmZmVyRm9ybWF0SW5mby5ncmVlbkJpdHMg
Pj0gMSAmJgorICAgICAgICAgICAgICAgICAgICAgZnJhbWVidWZmZXJGb3JtYXRJbmZvLmdyZWVu
Qml0cyA8PSA4KSAmJgorICAgICAgICAgICAgICAgICAgICAoZnJhbWVidWZmZXJGb3JtYXRJbmZv
LmJsdWVCaXRzID49IDEgJiYgZnJhbWVidWZmZXJGb3JtYXRJbmZvLmJsdWVCaXRzIDw9IDgpICYm
CisgICAgICAgICAgICAgICAgICAgIChmcmFtZWJ1ZmZlckZvcm1hdEluZm8uYWxwaGFCaXRzID49
IDEgJiYgZnJhbWVidWZmZXJGb3JtYXRJbmZvLmFscGhhQml0cyA8PSA4KSkKICAgICAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHNvdXJjZUVmZmVjdGl2ZUZvcm1hdCA9ICZHZXRJ
bnRlcm5hbEZvcm1hdEluZm8oR0xfU1JHQjhfQUxQSEE4KTsKICAgICAgICAgICAgICAgICB9CkBA
IC04MzAsMjAgKzYzMSwyMCBAQCBzdGF0aWMgYm9vbCBJc1ZhbGlkRVMzQ29weVRleEltYWdlQ29t
YmluCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodGV4dHVyZUludGVy
bmFsRm9ybWF0SW5mby5waXhlbEJ5dGVzID4gMCkKKyAgICAgICAgaWYgKHRleHR1cmVGb3JtYXQu
c2l6ZWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFNlY3Rpb24gMy44LjUgb2YgdGhlIEdM
RVMgMy4wLjMgc3BlYywgcGcgMTM5LCByZXF1aXJlcyB0aGF0LCBpZiB0aGUgZGVzdGluYXRpb24g
Zm9ybWF0IGlzIHNpemVkLAotICAgICAgICAgICAgLy8gY29tcG9uZW50IHNpemVzIG9mIHRoZSBz
b3VyY2UgYW5kIGRlc3RpbmF0aW9uIGZvcm1hdHMgbXVzdCBleGFjdGx5IG1hdGNoCi0gICAgICAg
ICAgICBpZiAodGV4dHVyZUludGVybmFsRm9ybWF0SW5mby5yZWRCaXRzICAgIT0gc291cmNlRWZm
ZWN0aXZlRm9ybWF0LT5yZWRCaXRzICAgfHwKLSAgICAgICAgICAgICAgICB0ZXh0dXJlSW50ZXJu
YWxGb3JtYXRJbmZvLmdyZWVuQml0cyAhPSBzb3VyY2VFZmZlY3RpdmVGb3JtYXQtPmdyZWVuQml0
cyB8fAotICAgICAgICAgICAgICAgIHRleHR1cmVJbnRlcm5hbEZvcm1hdEluZm8uYmx1ZUJpdHMg
ICE9IHNvdXJjZUVmZmVjdGl2ZUZvcm1hdC0+Ymx1ZUJpdHMgIHx8Ci0gICAgICAgICAgICAgICAg
dGV4dHVyZUludGVybmFsRm9ybWF0SW5mby5hbHBoYUJpdHMgIT0gc291cmNlRWZmZWN0aXZlRm9y
bWF0LT5hbHBoYUJpdHMpCisgICAgICAgICAgICAvLyBTZWN0aW9uIDMuOC41IG9mIHRoZSBHTEVT
IDMuMC4zIHNwZWMsIHBnIDEzOSwgcmVxdWlyZXMgdGhhdCwgaWYgdGhlIGRlc3RpbmF0aW9uCisg
ICAgICAgICAgICAvLyBmb3JtYXQgaXMgc2l6ZWQsIGNvbXBvbmVudCBzaXplcyBvZiB0aGUgc291
cmNlIGFuZCBkZXN0aW5hdGlvbiBmb3JtYXRzIG11c3QgZXhhY3RseQorICAgICAgICAgICAgLy8g
bWF0Y2ggaWYgdGhlIGRlc3RpbmF0aW9uIGZvcm1hdCBleGlzdHMuCisgICAgICAgICAgICBpZiAo
IUVxdWFsT3JGaXJzdFplcm8odGV4dHVyZUZvcm1hdEluZm8ucmVkQml0cywgc291cmNlRWZmZWN0
aXZlRm9ybWF0LT5yZWRCaXRzKSB8fAorICAgICAgICAgICAgICAgICFFcXVhbE9yRmlyc3RaZXJv
KHRleHR1cmVGb3JtYXRJbmZvLmdyZWVuQml0cywgc291cmNlRWZmZWN0aXZlRm9ybWF0LT5ncmVl
bkJpdHMpIHx8CisgICAgICAgICAgICAgICAgIUVxdWFsT3JGaXJzdFplcm8odGV4dHVyZUZvcm1h
dEluZm8uYmx1ZUJpdHMsIHNvdXJjZUVmZmVjdGl2ZUZvcm1hdC0+Ymx1ZUJpdHMpIHx8CisgICAg
ICAgICAgICAgICAgIUVxdWFsT3JGaXJzdFplcm8odGV4dHVyZUZvcm1hdEluZm8uYWxwaGFCaXRz
LCBzb3VyY2VFZmZlY3RpdmVGb3JtYXQtPmFscGhhQml0cykpCiAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLQog
ICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gQSBjb252ZXJzaW9uIGZ1bmN0aW9uIGV4aXN0cywgYW5k
IG5vIHJ1bGUgaW4gdGhlIHNwZWNpZmljYXRpb24gaGFzIHByZWNsdWRlZCBjb252ZXJzaW9uCiAg
ICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIHRoZXNlIGZvcm1hdHMuCiAgICAgfQpAQCAt
ODY1LDQ4ICs2NjYsNTAgQEAgYm9vbCBWYWxpZGF0ZUVTM0NvcHlUZXhJbWFnZVBhcmFtZXRlcnNC
YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVp
Z2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJv
cmRlcikKIHsKLSAgICBHTGVudW0gdGV4dHVyZUludGVybmFsRm9ybWF0OworICAgIEZvcm1hdCB0
ZXh0dXJlRm9ybWF0ID0gRm9ybWF0OjpJbnZhbGlkKCk7CiAgICAgaWYgKCFWYWxpZGF0ZUNvcHlU
ZXhJbWFnZVBhcmFtZXRlcnNCYXNlKGNvbnRleHQsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCBpc1N1YkltYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXIsICZ0ZXh0dXJl
SW50ZXJuYWxGb3JtYXQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBib3Jk
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0ZXh0dXJl
Rm9ybWF0KSkKICAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CisgICAgQVNTRVJU
KHRleHR1cmVGb3JtYXQudmFsaWQoKSB8fCAhaXNTdWJJbWFnZSk7CiAKLSAgICBjb25zdCBhdXRv
ICZzdGF0ZSAgICAgICAgICAgICAgICAgID0gY29udGV4dC0+Z2V0U3RhdGUoKTsKLSAgICBjb25z
dCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gc3RhdGUuZ2V0UmVhZEZyYW1lYnVmZmVy
KCk7Ci0gICAgR0x1aW50IHJlYWRGcmFtZWJ1ZmZlcklEICAgICAgICAgICA9IGZyYW1lYnVmZmVy
LT5pZCgpOworICAgIGNvbnN0IGF1dG8gJnN0YXRlICAgICAgICAgICAgPSBjb250ZXh0LT5nZXRH
TFN0YXRlKCk7CisgICAgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IHN0YXRlLmdldFJl
YWRGcmFtZWJ1ZmZlcigpOworICAgIEdMdWludCByZWFkRnJhbWVidWZmZXJJRCAgICAgPSBmcmFt
ZWJ1ZmZlci0+aWQoKTsKIAotICAgIGlmIChmcmFtZWJ1ZmZlci0+Y2hlY2tTdGF0dXMoY29udGV4
dC0+Z2V0RGF0YSgpKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKKyAgICBpZiAoZnJhbWVi
dWZmZXItPmNoZWNrU3RhdHVzKGNvbnRleHQtPmdldENvbnRleHRTdGF0ZSgpKSAhPSBHTF9GUkFN
RUJVRkZFUl9DT01QTEVURSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OKSk7CisgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OKSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAocmVhZEZyYW1lYnVmZmVySUQg
IT0gMCAmJiBmcmFtZWJ1ZmZlci0+Z2V0U2FtcGxlcyhjb250ZXh0LT5nZXREYXRhKCkpICE9IDAp
CisgICAgaWYgKHJlYWRGcmFtZWJ1ZmZlcklEICE9IDAgJiYgZnJhbWVidWZmZXItPmdldFNhbXBs
ZXMoY29udGV4dC0+Z2V0Q29udGV4dFN0YXRlKCkpICE9IDApCiAgICAgewotICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNo
bWVudCAqc291cmNlID0gZnJhbWVidWZmZXItPmdldFJlYWRDb2xvcmJ1ZmZlcigpOwotICAgIEdM
ZW51bSBjb2xvcmJ1ZmZlckludGVybmFsRm9ybWF0ID0gc291cmNlLT5nZXRJbnRlcm5hbEZvcm1h
dCgpOworICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqc291cmNlID0gZnJhbWVidWZm
ZXItPmdldFJlYWRDb2xvcmJ1ZmZlcigpOwogCiAgICAgaWYgKGlzU3ViSW1hZ2UpCiAgICAgewot
ICAgICAgICBpZiAoIUlzVmFsaWRFUzNDb3B5VGV4SW1hZ2VDb21iaW5hdGlvbih0ZXh0dXJlSW50
ZXJuYWxGb3JtYXQsIGNvbG9yYnVmZmVySW50ZXJuYWxGb3JtYXQsCisgICAgICAgIGlmICghSXNW
YWxpZEVTM0NvcHlUZXhJbWFnZUNvbWJpbmF0aW9uKHRleHR1cmVGb3JtYXQsIHNvdXJjZS0+Z2V0
Rm9ybWF0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlYWRGcmFtZWJ1ZmZlcklEKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAg
ICAgaWYgKCFnbDo6SXNWYWxpZEVTM0NvcHlUZXhJbWFnZUNvbWJpbmF0aW9uKGludGVybmFsZm9y
bWF0LCBjb2xvcmJ1ZmZlckludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZEZyYW1lYnVmZmVySUQpKQorICAgICAgICAv
LyBVc2UgZm9ybWF0L3R5cGUgZnJvbSB0aGUgc291cmNlIEZCTy4gKE1pZ2h0IG5vdCBiZSBwZXJm
ZWN0IGZvciBhbGwgY2FzZXM/KQorICAgICAgICBjb25zdCBhdXRvIGZyYW1lYnVmZmVyRm9ybWF0
ID0gc291cmNlLT5nZXRGb3JtYXQoKTsKKyAgICAgICAgRm9ybWF0IGNvcHlGb3JtYXQoaW50ZXJu
YWxmb3JtYXQsIGZyYW1lYnVmZmVyRm9ybWF0LmZvcm1hdCwgZnJhbWVidWZmZXJGb3JtYXQudHlw
ZSk7CisgICAgICAgIGlmICghSXNWYWxpZEVTM0NvcHlUZXhJbWFnZUNvbWJpbmF0aW9uKGNvcHlG
b3JtYXQsIGZyYW1lYnVmZmVyRm9ybWF0LCByZWFkRnJhbWVidWZmZXJJRCkpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAg
fQpAQCAtOTMxLDcgKzczNCw3IEBAIGJvb2wgVmFsaWRhdGVFUzNDb3B5VGV4SW1hZ2UyRFBhcmFt
ZXRlcnMKIHsKICAgICBpZiAoIVZhbGlkVGV4dHVyZTJERGVzdGluYXRpb25UYXJnZXQoY29udGV4
dCwgdGFyZ2V0KSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfRU5VTSkpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX0VOVU0pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtOTU2LDcg
Kzc1OSw3IEBAIGJvb2wgVmFsaWRhdGVFUzNDb3B5VGV4SW1hZ2UzRFBhcmFtZXRlcnMKIHsKICAg
ICBpZiAoIVZhbGlkVGV4dHVyZTNERGVzdGluYXRpb25UYXJnZXQoY29udGV4dCwgdGFyZ2V0KSkK
ICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSkpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0p
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtOTc1LDcgKzc3OCw3IEBAIGJv
b2wgVmFsaWRhdGVFUzNUZXhTdG9yYWdlUGFyYW1ldGVyc0Jhc2UKIHsKICAgICBpZiAod2lkdGgg
PCAxIHx8IGhlaWdodCA8IDEgfHwgZGVwdGggPCAxIHx8IGxldmVscyA8IDEpCiAgICAgewotICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtOTg3LDcgKzc5MCw3IEBAIGJvb2wgVmFsaWRh
dGVFUzNUZXhTdG9yYWdlUGFyYW1ldGVyc0Jhc2UKIAogICAgIGlmIChsZXZlbHMgPiBnbDo6bG9n
MihtYXhEaW0pICsgMSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKQEAgLTEwMDAsNyArODAzLDcgQEAgYm9vbCBWYWxpZGF0ZUVTM1RleFN0b3JhZ2VQYXJhbWV0
ZXJzQmFzZQogICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PEdMdWludD4od2lkdGgpID4gY2Fw
cy5tYXgyRFRleHR1cmVTaXplIHx8CiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0x1aW50
PihoZWlnaHQpID4gY2Fwcy5tYXgyRFRleHR1cmVTaXplKQogICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsK
KyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZB
TFVFKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CkBAIC0xMDEwLDEzICs4MTMsMTMgQEAgYm9vbCBWYWxpZGF0ZUVTM1RleFN0b3JhZ2VQ
YXJhbWV0ZXJzQmFzZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAod2lkdGggIT0gaGVpZ2h0
KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8R0x1aW50
Pih3aWR0aCkgPiBjYXBzLm1heEN1YmVNYXBUZXh0dXJlU2l6ZSkKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVF
KSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQpAQCAtMTAyOCw3ICs4MzEsNyBAQCBib29sIFZhbGlkYXRlRVMzVGV4U3RvcmFn
ZVBhcmFtZXRlcnNCYXNlCiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0x1aW50PihoZWln
aHQpID4gY2Fwcy5tYXgzRFRleHR1cmVTaXplIHx8CiAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8R0x1aW50PihkZXB0aCkgPiBjYXBzLm1heDNEVGV4dHVyZVNpemUpCiAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KQEAgLTEwNDAsNyArODQzLDcgQEAgYm9vbCBWYWxpZGF0ZUVTM1RleFN0
b3JhZ2VQYXJhbWV0ZXJzQmFzZQogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMdWludD4o
aGVpZ2h0KSA+IGNhcHMubWF4MkRUZXh0dXJlU2l6ZSB8fAogICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PEdMdWludD4oZGVwdGgpID4gY2Fwcy5tYXhBcnJheVRleHR1cmVMYXllcnMpCiAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTEwNTQsMjYgKzg1NywyNiBAQCBib29sIFZhbGlk
YXRlRVMzVGV4U3RvcmFnZVBhcmFtZXRlcnNCYXNlCiAgICAgZ2w6OlRleHR1cmUgKnRleHR1cmUg
PSBjb250ZXh0LT5nZXRUYXJnZXRUZXh0dXJlKHRhcmdldCk7CiAgICAgaWYgKCF0ZXh0dXJlIHx8
IHRleHR1cmUtPmlkKCkgPT0gMCkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKICAgICBpZiAodGV4dHVyZS0+Z2V0SW1tdXRhYmxlRm9ybWF0KCkpCiAgICAgewot
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgY29uc3QgZ2w6OkludGVy
bmFsRm9ybWF0ICZmb3JtYXRJbmZvID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhpbnRlcm5h
bGZvcm1hdCk7Ci0gICAgaWYgKCFmb3JtYXRJbmZvLnRleHR1cmVTdXBwb3J0KGNvbnRleHQtPmdl
dENsaWVudFZlcnNpb24oKSwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKSkKKyAgICBpZiAoIWZv
cm1hdEluZm8udGV4dHVyZVN1cHBvcnQoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCks
IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSkpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKICAgICBpZiAoZm9ybWF0SW5mby5waXhlbEJ5dGVzID09IDApCiAgICAgewotICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEwOTAsNyArODkzLDcgQEAgYm9vbCBWYWxpZGF0ZUVT
M1RleFN0b3JhZ2UyRFBhcmFtZXRlcnMoQwogewogICAgIGlmICghVmFsaWRUZXh0dXJlMkRUYXJn
ZXQoY29udGV4dCwgdGFyZ2V0KSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApA
QCAtMTEwOCw3ICs5MTEsNyBAQCBib29sIFZhbGlkYXRlRVMzVGV4U3RvcmFnZTNEUGFyYW1ldGVy
cyhDCiB7CiAgICAgaWYgKCFWYWxpZFRleHR1cmUzRFRhcmdldChjb250ZXh0LCB0YXJnZXQpKQog
ICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVN
KSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMTE4LDkgKzkyMSw5IEBAIGJv
b2wgVmFsaWRhdGVFUzNUZXhTdG9yYWdlM0RQYXJhbWV0ZXJzKEMKIAogYm9vbCBWYWxpZGF0ZUJl
Z2luUXVlcnkoZ2w6OkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpZCkK
IHsKLSAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICBpZiAoY29u
dGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKLSAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJHTEVTIHZlcnNpb24g
PCAzLjAiKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OLCAiR0xFUyB2ZXJzaW9uIDwgMy4wIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCkBAIC0xMTI5LDkgKzkzMiw5IEBAIGJvb2wgVmFsaWRhdGVCZWdpblF1ZXJ5KGds
OjpDb250ZXh0ICpjb24KIAogYm9vbCBWYWxpZGF0ZUVuZFF1ZXJ5KGdsOjpDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdGFyZ2V0KQogewotICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9u
KCkgPCAzKQorICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAg
ICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwgIkdMRVMgdmVyc2lvbiA8IDMuMCIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJHTEVTIHZlcnNpb24gPCAzLjAiKSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTExNDAsMzggKzk0MywzOCBAQCBib29s
IFZhbGlkYXRlRW5kUXVlcnkoZ2w6OkNvbnRleHQgKmNvbnRlCiAKIGJvb2wgVmFsaWRhdGVHZXRR
dWVyeWl2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xp
bnQgKnBhcmFtcykKIHsKLSAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykK
KyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKLSAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJH
TEVTIHZlcnNpb24gPCAzLjAiKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiR0xFUyB2ZXJzaW9uIDwgMy4wIikpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcmV0dXJuIFZhbGlkYXRlR2V0UXVlcnlpdkJhc2Uo
Y29udGV4dCwgdGFyZ2V0LCBwbmFtZSk7CisgICAgcmV0dXJuIFZhbGlkYXRlR2V0UXVlcnlpdkJh
c2UoY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgbnVsbHB0cik7CiB9CiAKIGJvb2wgVmFsaWRhdGVH
ZXRRdWVyeU9iamVjdHVpdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaWQsIEdMZW51bSBwbmFt
ZSwgR0x1aW50ICpwYXJhbXMpCiB7Ci0gICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24o
KSA8IDMpCisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAg
ICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OLCAiR0xFUyB2ZXJzaW9uIDwgMy4wIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkdMRVMgdmVyc2lvbiA8IDMuMCIpKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHJldHVybiBWYWxpZGF0ZUdldFF1ZXJ5
T2JqZWN0VmFsdWVCYXNlKGNvbnRleHQsIGlkLCBwbmFtZSk7CisgICAgcmV0dXJuIFZhbGlkYXRl
R2V0UXVlcnlPYmplY3RWYWx1ZUJhc2UoY29udGV4dCwgaWQsIHBuYW1lLCBudWxscHRyKTsKIH0K
IAogYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCB0ZXh0dXJlLCBHTGludCBsZXZlbCwgR0xpbnQgbGF5ZXIp
CiB7Ci0gICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgaWYgKGNv
bnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7Ci0gICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAobGF5ZXIgPCAwKQogICAgIHsKLSAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTExOTIsMTMgKzk5NSwxMyBAQCBib29sIFZhbGlk
YXRlRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoQ29uCiAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgaWYgKGxldmVsID4gZ2w6OmxvZzIoY2Fwcy5tYXgyRFRleHR1cmVTaXplKSkKICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKHN0
YXRpY19jYXN0PEdMdWludD4obGF5ZXIpID49IGNhcHMubWF4QXJyYXlUZXh0dXJlTGF5ZXJzKQog
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0x
MjA4LDI3ICsxMDExLDI3IEBAIGJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVMYXllcihD
b24KICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAobGV2ZWwgPiBnbDo6bG9nMihj
YXBzLm1heDNEVGV4dHVyZVNpemUpKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZB
TFVFKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8R0x1aW50PihsYXllcikgPj0g
Y2Fwcy5tYXgzRFRleHR1cmVTaXplKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZB
TFVFKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTikpOworICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAKLSAgICAgICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZpbnRlcm5hbEZvcm1hdEluZm8g
PSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKHRleC0+Z2V0SW50ZXJuYWxGb3JtYXQodGV4LT5n
ZXRUYXJnZXQoKSwgbGV2ZWwpKTsKLSAgICAgICAgaWYgKGludGVybmFsRm9ybWF0SW5mby5jb21w
cmVzc2VkKQorICAgICAgICBjb25zdCBhdXRvICZmb3JtYXQgPSB0ZXgtPmdldEZvcm1hdCh0ZXgt
PmdldFRhcmdldCgpLCBsZXZlbCk7CisgICAgICAgIGlmIChmb3JtYXQuaW5mby0+Y29tcHJlc3Nl
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0xMjM2LDgzICsxMDM5LDYgQEAgYm9vbCBWYWxpZGF0ZUZyYW1l
YnVmZmVyVGV4dHVyZUxheWVyKENvbgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
RVMzUmVhZEZvcm1hdFR5cGUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGludGVybmFsRm9ybWF0
LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSkKLXsKLSAgICBjb25zdCBnbDo6SW50ZXJuYWxG
b3JtYXQgJmludGVybmFsRm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oaW50
ZXJuYWxGb3JtYXQpOwotCi0gICAgc3dpdGNoIChmb3JtYXQpCi0gICAgewotICAgICAgY2FzZSBH
TF9SR0JBOgotICAgICAgICBzd2l0Y2ggKHR5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNl
IEdMX1VOU0lHTkVEX0JZVEU6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdM
X1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVjoKLSAgICAgICAgICAgIGlmIChpbnRlcm5hbEZv
cm1hdCAhPSBHTF9SR0IxMF9BMikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBj
YXNlIEdMX0ZMT0FUOgotICAgICAgICAgICAgaWYgKGludGVybmFsRm9ybWF0SW5mby5jb21wb25l
bnRUeXBlICE9IEdMX0ZMT0FUKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEdMX1JHQkFfSU5URUdFUjoKLSAgICAgICAgc3dpdGNoICh0eXBlKQot
ICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9JTlQ6Ci0gICAgICAgICAgICBpZiAoaW50ZXJu
YWxGb3JtYXRJbmZvLmNvbXBvbmVudFR5cGUgIT0gR0xfSU5UKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgotICAgICAgICAgICAgaWYgKGlu
dGVybmFsRm9ybWF0SW5mby5jb21wb25lbnRUeXBlICE9IEdMX1VOU0lHTkVEX0lOVCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9CR1JBX0VY
VDoKLSAgICAgICAgc3dpdGNoICh0eXBlKQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9V
TlNJR05FRF9CWVRFOgotICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF9S
RVZfRVhUOgotICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfMV81XzVfNV9SRVZfRVhU
OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfUkdf
RVhUOgotICAgICAgY2FzZSBHTF9SRURfRVhUOgotICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS50ZXh0dXJlUkcpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgfQotICAgICAgICBzd2l0Y2ggKHR5cGUpCi0gICAgICAgIHsKLSAgICAgICAg
Y2FzZSBHTF9VTlNJR05FRF9CWVRFOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7
Ci0gICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVy
biB0cnVlOwotfQotCiBib29sIFZhbGlkYXRlRVMzUmVuZGVyYnVmZmVyU3RvcmFnZVBhcmFtZXRl
cnMoZ2w6OkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc2FtcGxlcywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQogewpAQCAtMTMyNSw3
ICsxMDUxLDcgQEAgYm9vbCBWYWxpZGF0ZUVTM1JlbmRlcmJ1ZmZlclN0b3JhZ2VQYXJhbQogICAg
IGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZv
cm1hdEluZm8oaW50ZXJuYWxmb3JtYXQpOwogICAgIGlmICgoZm9ybWF0SW5mby5jb21wb25lbnRU
eXBlID09IEdMX1VOU0lHTkVEX0lOVCB8fCBmb3JtYXRJbmZvLmNvbXBvbmVudFR5cGUgPT0gR0xf
SU5UKSAmJiBzYW1wbGVzID4gMCkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKQEAgLTEzMzMsNyArMTA1OSw3IEBAIGJvb2wgVmFsaWRhdGVFUzNSZW5kZXJidWZm
ZXJTdG9yYWdlUGFyYW0KICAgICBjb25zdCBUZXh0dXJlQ2FwcyAmZm9ybWF0Q2FwcyA9IGNvbnRl
eHQtPmdldFRleHR1cmVDYXBzKCkuZ2V0KGludGVybmFsZm9ybWF0KTsKICAgICBpZiAoc3RhdGlj
X2Nhc3Q8R0x1aW50PihzYW1wbGVzKSA+IGZvcm1hdENhcHMuZ2V0TWF4U2FtcGxlcygpKQogICAg
IHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoCisgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKAogICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCiAgICAgICAg
ICAgICAgICAgICAiU2FtcGxlcyBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gbWF4aW11bSBzdXBw
b3J0ZWQgdmFsdWUgZm9yIHRoZSBmb3JtYXQuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0xMzQ1LDkgKzEwNzEsMTAgQEAgYm9vbCBWYWxpZGF0ZUVTM1JlbmRlcmJ1ZmZlclN0b3JhZ2VQ
YXJhbQogYm9vbCBWYWxpZGF0ZUludmFsaWRhdGVGcmFtZWJ1ZmZlcihDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdGFyZ2V0LCBHTHNpemVpIG51bUF0dGFjaG1lbnRzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKQogewotICAgIGlm
IChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgIGlmIChjb250ZXh0LT5nZXRD
bGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIk9wZXJhdGlvbiBvbmx5IHN1cHBvcnRl
ZCBvbiBFUyAzLjAgYW5kIGFib3ZlIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigK
KyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiT3BlcmF0aW9uIG9ubHkg
c3VwcG9ydGVkIG9uIEVTIDMuMCBhbmQgYWJvdmUiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKQEAgLTEzNTcsMTMgKzEwODQsMTMgQEAgYm9vbCBWYWxpZGF0ZUludmFsaWRhdGVG
cmFtZWJ1ZmZlcihDb250ZQogICAgIHsKICAgICAgIGNhc2UgR0xfRFJBV19GUkFNRUJVRkZFUjoK
ICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVI6Ci0gICAgICAgIGRlZmF1bHRGcmFtZWJ1ZmZlciA9
IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0RHJhd0ZyYW1lYnVmZmVyKCktPmlkKCkgPT0gMDsKLSAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdEZyYW1lYnVmZmVyID0gY29udGV4dC0+Z2V0
R0xTdGF0ZSgpLmdldERyYXdGcmFtZWJ1ZmZlcigpLT5pZCgpID09IDA7CisgICAgICAgICAgYnJl
YWs7CiAgICAgICBjYXNlIEdMX1JFQURfRlJBTUVCVUZGRVI6Ci0gICAgICAgIGRlZmF1bHRGcmFt
ZWJ1ZmZlciA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0UmVhZEZyYW1lYnVmZmVyKCktPmlkKCkg
PT0gMDsKLSAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdEZyYW1lYnVmZmVyID0gY29u
dGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFJlYWRGcmFtZWJ1ZmZlcigpLT5pZCgpID09IDA7CisgICAg
ICAgICAgYnJlYWs7CiAgICAgICBkZWZhdWx0OgotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGZyYW1lYnVmZmVyIHRhcmdldCIpKTsK
KyAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJ
bnZhbGlkIGZyYW1lYnVmZmVyIHRhcmdldCIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIApAQCAtMTM3MiwxNiArMTA5OSwxNiBAQCBib29sIFZhbGlkYXRlSW52YWxpZGF0ZUZyYW1l
YnVmZmVyKENvbnRlCiAKIGJvb2wgVmFsaWRhdGVDbGVhckJ1ZmZlcihWYWxpZGF0aW9uQ29udGV4
dCAqY29udGV4dCkKIHsKLSAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykK
KyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKLSAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsK
KyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGNvbnN0IGdsOjpGcmFtZWJ1
ZmZlciAqZmJvID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXREcmF3RnJhbWVidWZmZXIoKTsKLSAg
ICBpZiAoIWZibyB8fCBmYm8tPmNoZWNrU3RhdHVzKGNvbnRleHQtPmdldERhdGEoKSkgIT0gR0xf
RlJBTUVCVUZGRVJfQ09NUExFVEUpCisgICAgaWYgKGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRE
cmF3RnJhbWVidWZmZXIoKS0+Y2hlY2tTdGF0dXMoY29udGV4dC0+Z2V0Q29udGV4dFN0YXRlKCkp
ICE9CisgICAgICAgIEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQogICAgIHsKLSAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04p
KTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9GUkFNRUJV
RkZFUl9PUEVSQVRJT04pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTM5
NywxNSArMTEyNCwxNSBAQCBib29sIFZhbGlkYXRlRHJhd1JhbmdlRWxlbWVudHMoQ29udGV4dCAq
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4UmFuZ2UgKmluZGV4UmFuZ2UpCiB7
Ci0gICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgaWYgKGNvbnRl
eHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7Ci0gICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ29udGV4dCBkb2VzIG5v
dCBzdXBwb3J0IEdMRVMzLiIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sICJDb250ZXh0IGRvZXMgbm90IHN1cHBvcnQgR0xFUzMuIikp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKGVuZCA8IHN0YXJ0KQog
ICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSwgImVuZCA8IHN0YXJ0IikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX1ZBTFVFLCAiZW5kIDwgc3RhcnQiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKQEAgLTE0MTcsNyArMTE0NCw3IEBAIGJvb2wgVmFsaWRhdGVEcmF3UmFuZ2VFbGVt
ZW50cyhDb250ZXh0ICoKICAgICBpZiAoaW5kZXhSYW5nZS0+ZW5kID4gZW5kIHx8IGluZGV4UmFu
Z2UtPnN0YXJ0IDwgc3RhcnQpCiAgICAgewogICAgICAgICAvLyBHTCBzcGVjIHNheXMgdGhhdCBi
ZWhhdmlvciBpbiB0aGlzIGNhc2UgaXMgdW5kZWZpbmVkIC0gZ2VuZXJhdGluZyBhbiBlcnJvciBp
cyBmaW5lLgotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcigKKyAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoCiAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIklu
ZGljZXMgYXJlIG91dCBvZiB0aGUgc3RhcnQsIGVuZCByYW5nZS4iKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CkBAIC0xNDI2LDkgKzExNTMsOSBAQCBib29sIFZhbGlkYXRlRHJhd1Jh
bmdlRWxlbWVudHMoQ29udGV4dCAqCiAKIGJvb2wgVmFsaWRhdGVHZXRVbmlmb3JtdWl2KENvbnRl
eHQgKmNvbnRleHQsIEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0x1aW50KiBwYXJh
bXMpCiB7Ci0gICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgaWYg
KGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7Ci0gICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE0MzcsMTcgKzExNjQsMTcgQEAgYm9vbCBW
YWxpZGF0ZUdldFVuaWZvcm11aXYoQ29udGV4dCAqY29udAogCiBib29sIFZhbGlkYXRlUmVhZEJ1
ZmZlcihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gc3JjKQogewotICAgIGlmIChjb250ZXh0LT5n
ZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZl
cnNpb24oKSA8IDMpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgRnJhbWVidWZmZXIgKnJlYWRGQk8gPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFJlYWRG
cmFtZWJ1ZmZlcigpOworICAgIGNvbnN0IEZyYW1lYnVmZmVyICpyZWFkRkJPID0gY29udGV4dC0+
Z2V0R0xTdGF0ZSgpLmdldFJlYWRGcmFtZWJ1ZmZlcigpOwogCiAgICAgaWYgKHJlYWRGQk8gPT0g
bnVsbHB0cikKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKGdsOjpFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTiwgIk5vIGFjdGl2ZSByZWFkIGZyYW1lYnVmZmVyLiIpKTsKKyAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCAiTm8gYWN0aXZlIHJlYWQgZnJhbWVidWZmZXIuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCkBAIC0xNDU4LDcgKzExODUsNyBAQCBib29sIFZhbGlkYXRlUmVhZEJ1ZmZlcihD
b250ZXh0ICpjb250ZXh0CiAKICAgICBpZiAoc3JjICE9IEdMX0JBQ0sgJiYgKHNyYyA8IEdMX0NP
TE9SX0FUVEFDSE1FTlQwIHx8IHNyYyA+IEdMX0NPTE9SX0FUVEFDSE1FTlQzMSkpCiAgICAgewot
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihnbDo6RXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAi
VW5rbm93biBlbnVtIGZvciAnc3JjJyBpbiBSZWFkQnVmZmVyIikpOworICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihnbDo6RXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiVW5rbm93biBlbnVtIGZv
ciAnc3JjJyBpbiBSZWFkQnVmZmVyIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CkBAIC0xNDY3LDcgKzExOTQsNyBAQCBib29sIFZhbGlkYXRlUmVhZEJ1ZmZlcihDb250ZXh0ICpj
b250ZXh0CiAgICAgICAgIGlmIChzcmMgIT0gR0xfQkFDSykKICAgICAgICAgewogICAgICAgICAg
ICAgY29uc3QgY2hhciAqZXJyb3JNc2cgPSAiJ3NyYycgbXVzdCBiZSBHTF9OT05FIG9yIEdMX0JB
Q0sgd2hlbiByZWFkaW5nIGZyb20gdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIuIjsKLSAgICAgICAg
ICAgIGNvbnRleHQtPnJlY29yZEVycm9yKGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwg
ZXJyb3JNc2cpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKGdsOjpFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTiwgZXJyb3JNc2cpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTE0NzgsNyArMTIwNSw3IEBAIGJvb2wgVmFsaWRhdGVS
ZWFkQnVmZmVyKENvbnRleHQgKmNvbnRleHQKICAgICAgICAgaWYgKGRyYXdCdWZmZXIgPj0gY29u
dGV4dC0+Z2V0Q2FwcygpLm1heERyYXdCdWZmZXJzKQogICAgICAgICB7CiAgICAgICAgICAgICBj
b25zdCBjaGFyICplcnJvck1zZyA9ICInc3JjJyBpcyBncmVhdGVyIHRoYW4gTUFYX0RSQVdfQlVG
RkVSUy4iOwotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZ2w6OkVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCBlcnJvck1zZykpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBlcnJvck1zZykpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtMTQ5NywzMiArMTIyNCw1
NyBAQCBib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleEltYWdlM0QoQ29udGV4CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbWFnZVNpemUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpkYXRhKQogewotICAgIGlmIChjb250
ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRN
YWpvclZlcnNpb24oKSA8IDMpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgaWYgKCFWYWxpZFRleHR1cmVUYXJnZXQoY29udGV4dCwgdGFyZ2V0KSkKKyAg
ICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gVmFsaWRhdGUgaW1hZ2Ug
c2l6ZQorICAgIGlmICghVmFsaWRJbWFnZVNpemVQYXJhbWV0ZXJzKGNvbnRleHQsIHRhcmdldCwg
bGV2ZWwsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmYWxzZSkpCisgICAgeworICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKICAgICBjb25zdCBJbnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9
IEdldEludGVybmFsRm9ybWF0SW5mbyhpbnRlcm5hbGZvcm1hdCk7Ci0gICAgaWYgKGltYWdlU2l6
ZSA8IDAgfHwKLSAgICAgICAgc3RhdGljX2Nhc3Q8R0x1aW50PihpbWFnZVNpemUpICE9Ci0gICAg
ICAgICAgICBmb3JtYXRJbmZvLmNvbXB1dGVCbG9ja1NpemUoR0xfVU5TSUdORURfQllURSwgd2lk
dGgsIGhlaWdodCkpCisgICAgaWYgKCFmb3JtYXRJbmZvLmNvbXByZXNzZWQpCisgICAgeworICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJOb3QgYSB2
YWxpZCBjb21wcmVzc2VkIHRleHR1cmUgZm9ybWF0IikpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgYXV0byBibG9ja1NpemVPckVyciA9CisgICAgICAgIGZvcm1hdEluZm8u
Y29tcHV0ZUNvbXByZXNzZWRJbWFnZVNpemUoR0xfVU5TSUdORURfQllURSwgZ2w6OkV4dGVudHMo
d2lkdGgsIGhlaWdodCwgZGVwdGgpKTsKKyAgICBpZiAoYmxvY2tTaXplT3JFcnIuaXNFcnJvcigp
KQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmIChpbWFnZVNpemUg
PCAwIHx8IHN0YXRpY19jYXN0PEdMdWludD4oaW1hZ2VTaXplKSAhPSBibG9ja1NpemVPckVyci5n
ZXRSZXN1bHQoKSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgLy8g
M0QgdGV4dHVyZSB0YXJnZXQgdmFsaWRhdGlvbgogICAgIGlmICh0YXJnZXQgIT0gR0xfVEVYVFVS
RV8zRCAmJiB0YXJnZXQgIT0gR0xfVEVYVFVSRV8yRF9BUlJBWSkKICAgICB7Ci0gICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKAorICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKICAgICAg
ICAgICAgIEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIk11c3Qgc3BlY2lmeSBhIHZhbGlkIDNEIHRl
eHR1cmUgZGVzdGluYXRpb24gdGFyZ2V0IikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCiAgICAgLy8gdmFsaWRhdGVFUzNUZXhJbWFnZUZvcm1hdCBzZXRzIHRoZSBlcnJvciBjb2Rl
IGlmIHRoZXJlIGlzIGFuIGVycm9yCiAgICAgaWYgKCFWYWxpZGF0ZUVTM1RleEltYWdlM0RQYXJh
bWV0ZXJzKGNvbnRleHQsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB0cnVlLCBmYWxz
ZSwgMCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgd2lk
dGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgR0xfTk9ORSwgR0xfTk9ORSwgZGF0YSkpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIHdpZHRoLCBoZWlnaHQsIGRl
cHRoLCBib3JkZXIsIEdMX05PTkUsIEdMX05PTkUsIC0xLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhKSkKICAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CkBAIC0xNTMyLDkgKzEyODQsOSBAQCBib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleElt
YWdlM0QoQ29udGV4CiAKIGJvb2wgVmFsaWRhdGVCaW5kVmVydGV4QXJyYXkoQ29udGV4dCAqY29u
dGV4dCwgR0x1aW50IGFycmF5KQogewotICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9u
KCkgPCAzKQorICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAg
ICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xNTQzLDkgKzEy
OTUsOSBAQCBib29sIFZhbGlkYXRlQmluZFZlcnRleEFycmF5KENvbnRleHQgKmNvCiAKIGJvb2wg
VmFsaWRhdGVJc1ZlcnRleEFycmF5KENvbnRleHQgKmNvbnRleHQpCiB7Ci0gICAgaWYgKGNvbnRl
eHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1h
am9yVmVyc2lvbigpIDwgMykKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKQEAgLTE1NTgsOSArMTMxMCw5IEBAIGJvb2wgVmFsaWRhdGVQcm9ncmFtQmluYXJ5KENv
bnRleHQgKmNvbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmJpbmFy
eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxlbmd0aCkKIHsKLSAgICBpZiAo
Y29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICBpZiAoY29udGV4dC0+Z2V0Q2xp
ZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIApAQCAtMTU3NCw5ICsxMzI2LDkgQEAgYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1C
aW5hcnkoQ29udGV4dCAqYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICpi
aW5hcnlGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpiaW5hcnkp
CiB7Ci0gICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgaWYgKGNv
bnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7Ci0gICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE1ODUsOSArMTMzNyw5IEBAIGJvb2wgVmFsaWRh
dGVHZXRQcm9ncmFtQmluYXJ5KENvbnRleHQgKmMKIAogYm9vbCBWYWxpZGF0ZVByb2dyYW1QYXJh
bWV0ZXJpKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBwcm9ncmFtLCBHTGVudW0gcG5hbWUsIEdM
aW50IHZhbHVlKQogewotICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQor
ICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgewotICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkNv
bnRleHQgZG9lcyBub3Qgc3VwcG9ydCBHTEVTMy4iKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ29udGV4dCBkb2VzIG5vdCBzdXBw
b3J0IEdMRVMzLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTYwMSwx
NCArMTM1MywxNCBAQCBib29sIFZhbGlkYXRlUHJvZ3JhbVBhcmFtZXRlcmkoQ29udGV4dCAqCiAg
ICAgICAgIGNhc2UgR0xfUFJPR1JBTV9CSU5BUllfUkVUUklFVkFCTEVfSElOVDoKICAgICAgICAg
ICAgIGlmICh2YWx1ZSAhPSBHTF9GQUxTRSAmJiB2YWx1ZSAhPSBHTF9UUlVFKQogICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKAorICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKAogICAgICAgICAgICAgICAgICAg
ICBHTF9JTlZBTElEX1ZBTFVFLCAiSW52YWxpZCB2YWx1ZSwgZXhwZWN0ZWQgR0xfRkFMU0Ugb3Ig
R0xfVFJVRTogJWkiLCB2YWx1ZSkpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZh
bGlkIHBuYW1lOiAweCVYIiwgcG5hbWUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgcG5hbWU6IDB4JVgiLCBwbmFtZSkp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTYyNyw5ICsxMzc5LDkg
QEAgYm9vbCBWYWxpZGF0ZUJsaXRGcmFtZWJ1ZmZlcihDb250ZXh0ICpjbwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGJpdGZpZWxkIG1hc2ssCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBmaWx0ZXIpCiB7Ci0gICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNp
b24oKSA8IDMpCisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykK
ICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE2NDgsNyAr
MTQwMCw3IEBAIGJvb2wgVmFsaWRhdGVDbGVhckJ1ZmZlcml2KFZhbGlkYXRpb25Db24KICAgICAg
ICAgICAgIGlmIChkcmF3YnVmZmVyIDwgMCB8fAogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PEdMdWludD4oZHJhd2J1ZmZlcikgPj0gY29udGV4dC0+Z2V0Q2FwcygpLm1heERyYXdCdWZmZXJz
KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNjU2LDEzICsxNDA4
LDEzIEBAIGJvb2wgVmFsaWRhdGVDbGVhckJ1ZmZlcml2KFZhbGlkYXRpb25Db24KICAgICAgICAg
Y2FzZSBHTF9TVEVOQ0lMOgogICAgICAgICAgICAgaWYgKGRyYXdidWZmZXIgIT0gMCkKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTY4MCwxMyArMTQzMiwxMyBA
QCBib29sIFZhbGlkYXRlQ2xlYXJCdWZmZXJ1aXYoVmFsaWRhdGlvbkNvCiAgICAgICAgICAgICBp
ZiAoZHJhd2J1ZmZlciA8IDAgfHwKICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+
KGRyYXdidWZmZXIpID49IGNvbnRleHQtPmdldENhcHMoKS5tYXhEcmF3QnVmZmVycykKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTcwNCw3ICsxNDU2LDcgQEAg
Ym9vbCBWYWxpZGF0ZUNsZWFyQnVmZmVyZnYoVmFsaWRhdGlvbkNvbgogICAgICAgICAgICAgaWYg
KGRyYXdidWZmZXIgPCAwIHx8CiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0x1aW50Pihk
cmF3YnVmZmVyKSA+PSBjb250ZXh0LT5nZXRDYXBzKCkubWF4RHJhd0J1ZmZlcnMpCiAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTE3MTIsMTMgKzE0NjQsMTMgQEAgYm9v
bCBWYWxpZGF0ZUNsZWFyQnVmZmVyZnYoVmFsaWRhdGlvbkNvbgogICAgICAgICBjYXNlIEdMX0RF
UFRIOgogICAgICAgICAgICAgaWYgKGRyYXdidWZmZXIgIT0gMCkKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVF
KSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTczNiwxMyArMTQ4OCwxMyBAQCBib29sIFZhbGlk
YXRlQ2xlYXJCdWZmZXJmaShWYWxpZGF0aW9uQ29uCiAgICAgICAgIGNhc2UgR0xfREVQVEhfU1RF
TkNJTDoKICAgICAgICAgICAgIGlmIChkcmF3YnVmZmVyICE9IDApCiAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfVkFMVUUpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE3NTEsOSArMTUwMyw5IEBAIGJvb2wgVmFsaWRh
dGVDbGVhckJ1ZmZlcmZpKFZhbGlkYXRpb25Db24KIAogYm9vbCBWYWxpZGF0ZURyYXdCdWZmZXJz
KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNvbnN0IEdMZW51bSAqYnVm
cykKIHsKLSAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICBpZiAo
Y29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKLSAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJDb250ZXh0IGRv
ZXMgbm90IHN1cHBvcnQgR0xFUzMuIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkNvbnRleHQgZG9lcyBub3Qgc3VwcG9ydCBHTEVT
My4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE3NzEsOSArMTUyMyw5
IEBAIGJvb2wgVmFsaWRhdGVDb3B5VGV4U3ViSW1hZ2UzRChDb250ZXh0ICoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KQogewotICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRW
ZXJzaW9uKCkgPCAzKQorICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8
IDMpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xNzkz
LDE3ICsxNTQ1LDQ2IEBAIGJvb2wgVmFsaWRhdGVUZXhJbWFnZTNEKENvbnRleHQgKmNvbnRleHQK
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0x2b2lkICpwaXhlbHMpCiB7Ci0gICAgaWYgKGNvbnRleHQtPmdldENsaWVu
dFZlcnNpb24oKSA8IDMpCisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigp
IDwgMykKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBy
ZXR1cm4gVmFsaWRhdGVFUzNUZXhJbWFnZTNEUGFyYW1ldGVycyhjb250ZXh0LCB0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbGZvcm1hdCwgZmFsc2UsIGZhbHNlLCAwLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3Jk
ZXIsIGZvcm1hdCwgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLCAwLCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIC0x
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVscyk7CiB9
CiAKK2Jvb2wgVmFsaWRhdGVUZXhJbWFnZTNEUm9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgYm9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVs
cykKK3sKKyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQorICAg
IHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghVmFsaWRhdGVS
b2J1c3RFbnRyeVBvaW50KGNvbnRleHQsIGJ1ZlNpemUpKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBWYWxpZGF0ZUVTM1RleEltYWdlM0RQYXJhbWV0
ZXJzKGNvbnRleHQsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCBmYWxzZSwgZmFsc2Us
IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgd2lk
dGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNpemUsIHBpeGVscyk7Cit9CisKIGJvb2wg
VmFsaWRhdGVUZXhTdWJJbWFnZTNEKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbGV2ZWwsCkBAIC0xODE3LDE1ICsxNTk4LDQ1IEBAIGJvb2wgVmFsaWRhdGVUZXhTdWJJbWFn
ZTNEKENvbnRleHQgKmNvbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwaXhlbHMpCiB7Ci0g
ICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgaWYgKGNvbnRleHQt
PmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKICAgICByZXR1cm4gVmFsaWRhdGVFUzNUZXhJbWFnZTNEUGFyYW1l
dGVycyhjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBHTF9OT05FLCBmYWxzZSwgdHJ1ZSwgeG9mZnNl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b2Zmc2V0LCB6
b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgMCwgZm9ybWF0LCB0eXBlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVscyk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsIHBpeGVscyk7Cit9CisKK2Jvb2wgVmFs
aWRhdGVUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHpvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTHZvaWQgKnBpeGVscykKK3sKKyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJz
aW9uKCkgPCAzKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IGlmICghVmFsaWRhdGVSb2J1c3RFbnRyeVBvaW50KGNvbnRleHQsIGJ1ZlNpemUpKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBWYWxpZGF0ZUVTM1Rl
eEltYWdlM0RQYXJhbWV0ZXJzKGNvbnRleHQsIHRhcmdldCwgbGV2ZWwsIEdMX05PTkUsIGZhbHNl
LCB0cnVlLCB4b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCAwLCBmb3JtYXQsIHR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmU2l6ZSwg
cGl4ZWxzKTsKIH0KIAogYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKENvbnRl
eHQgKmNvbnRleHQsCkBAIC0xODQxLDI5ICsxNjUyLDM0IEBAIGJvb2wgVmFsaWRhdGVDb21wcmVz
c2VkVGV4U3ViSW1hZ2UzRChDb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGltYWdlU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHZvaWQgKmRhdGEpCiB7Ci0gICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNp
b24oKSA8IDMpCisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykK
ICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBjb25zdCBJ
bnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9IEdldEludGVybmFsRm9ybWF0SW5mbyhmb3JtYXQp
OwotICAgIGlmIChpbWFnZVNpemUgPCAwIHx8Ci0gICAgICAgIHN0YXRpY19jYXN0PEdMdWludD4o
aW1hZ2VTaXplKSAhPQotICAgICAgICAgICAgZm9ybWF0SW5mby5jb21wdXRlQmxvY2tTaXplKEdM
X1VOU0lHTkVEX0JZVEUsIHdpZHRoLCBoZWlnaHQpKQorICAgIGF1dG8gYmxvY2tTaXplT3JFcnIg
PQorICAgICAgICBmb3JtYXRJbmZvLmNvbXB1dGVDb21wcmVzc2VkSW1hZ2VTaXplKEdMX1VOU0lH
TkVEX0JZVEUsIGdsOjpFeHRlbnRzKHdpZHRoLCBoZWlnaHQsIGRlcHRoKSk7CisgICAgaWYgKGJs
b2NrU2l6ZU9yRXJyLmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKGJsb2NrU2l6ZU9yRXJyLmdldEVycm9yKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIGlmIChpbWFnZVNpemUgPCAwIHx8IHN0YXRpY19jYXN0PEdMdWludD4oaW1hZ2VT
aXplKSAhPSBibG9ja1NpemVPckVyci5nZXRSZXN1bHQoKSkKICAgICB7Ci0gICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKCFkYXRhKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKICAgICByZXR1cm4gVmFsaWRhdGVFUzNUZXhJbWFnZTNEUGFyYW1ldGVycyhj
b250ZXh0LCB0YXJnZXQsIGxldmVsLCBHTF9OT05FLCB0cnVlLCB0cnVlLCAwLCAwLCAwLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQsIGRl
cHRoLCAwLCBHTF9OT05FLCBHTF9OT05FLCBkYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgMCwgR0xfTk9ORSwgR0xf
Tk9ORSwgLTEsIGRhdGEpOwogfQogCiBib29sIFZhbGlkYXRlR2VuUXVlcmllcyhDb250ZXh0ICpj
b250ZXh0LCBHTGludCBuLCBHTHVpbnQgKikKQEAgLTE5MDMsNyArMTcxOSw3IEBAIGJvb2wgVmFs
aWRhdGVEZWxldGVUcmFuc2Zvcm1GZWVkYmFja3MoQ28KICAgICAgICAgaWYgKHRyYW5zZm9ybUZl
ZWRiYWNrICE9IG51bGxwdHIgJiYgdHJhbnNmb3JtRmVlZGJhY2stPmlzQWN0aXZlKCkpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIC8vIEVTIDMuMC40IHNlY3Rpb24gMi4xNS4xIHBhZ2UgODYKLSAg
ICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKAorICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoCiAgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJB
dHRlbXB0IHRvIGRlbGV0ZSBhY3RpdmUgdHJhbnNmb3JtIGZlZWRiYWNrLiIpKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMTkyMyw5ICsxNzM5LDkgQEAgYm9vbCBW
YWxpZGF0ZURlbGV0ZVZlcnRleEFycmF5cyhDb250ZXh0IAogCiBib29sIFZhbGlkYXRlR2VuT3JE
ZWxldGVFUzMoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbikKIHsKLSAgICBpZiAoY29udGV4dC0+
Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JW
ZXJzaW9uKCkgPCAzKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sICJDb250ZXh0IGRvZXMgbm90IHN1cHBvcnQgR0xFUzMuIikp
OworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TiwgIkNvbnRleHQgZG9lcyBub3Qgc3VwcG9ydCBHTEVTMy4iKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAgICAgcmV0dXJuIFZhbGlkYXRlR2VuT3JEZWxldGUoY29udGV4dCwgbik7
CkBAIC0xOTMzLDE0ICsxNzQ5LDE0IEBAIGJvb2wgVmFsaWRhdGVHZW5PckRlbGV0ZUVTMyhDb250
ZXh0ICpjb24KIAogYm9vbCBWYWxpZGF0ZUdlbk9yRGVsZXRlQ291bnRFUzMoQ29udGV4dCAqY29u
dGV4dCwgR0xpbnQgY291bnQpCiB7Ci0gICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24o
KSA8IDMpCisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAg
ICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OLCAiQ29udGV4dCBkb2VzIG5vdCBzdXBwb3J0IEdMRVMzLiIpKTsKKyAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJDb250ZXh0IGRvZXMg
bm90IHN1cHBvcnQgR0xFUzMuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAg
IGlmIChjb3VudCA8IDApCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9JTlZBTElEX1ZBTFVFLCAiY291bnQgPCAwIikpOworICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiY291bnQgPCAwIikpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpAQCAtMTk0OCw5ICsxNzY0LDkg
QEAgYm9vbCBWYWxpZGF0ZUdlbk9yRGVsZXRlQ291bnRFUzMoQ29udGV4dAogCiBib29sIFZhbGlk
YXRlQmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcHJpbWl0
aXZlTW9kZSkKIHsKLSAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAg
ICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKLSAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJDb250
ZXh0IGRvZXMgbm90IHN1cHBvcnQgR0xFUzMuIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkNvbnRleHQgZG9lcyBub3Qgc3VwcG9y
dCBHTEVTMy4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgc3dpdGNoIChw
cmltaXRpdmVNb2RlKQpAQCAtMTk2MSw3MCArMTc3Nyw1NiBAQCBib29sIFZhbGlkYXRlQmVnaW5U
cmFuc2Zvcm1GZWVkYmFjayhDb250CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9F
TlVNLCAiSW52YWxpZCBwcmltaXRpdmUgbW9kZS4iKSk7CisgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIHByaW1pdGl2ZSBtb2Rl
LiIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBUcmFuc2Zvcm1G
ZWVkYmFjayAqdHJhbnNmb3JtRmVlZGJhY2sgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldEN1cnJl
bnRUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIFRyYW5zZm9ybUZlZWRiYWNrICp0cmFuc2Zvcm1G
ZWVkYmFjayA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJh
Y2soKTsKICAgICBBU1NFUlQodHJhbnNmb3JtRmVlZGJhY2sgIT0gbnVsbHB0cik7CiAKICAgICBp
ZiAodHJhbnNmb3JtRmVlZGJhY2stPmlzQWN0aXZlKCkpCiAgICAgewotICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIlRyYW5zZm9ybSBmZWVk
YmFjayBpcyBhbHJlYWR5IGFjdGl2ZS4iKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiVHJhbnNmb3JtIGZlZWRiYWNrIGlzIGFscmVh
ZHkgYWN0aXZlLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJpKENvbnRleHQgKmNvbnRl
eHQsIEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQorYm9vbCBWYWxp
ZGF0ZUdldEJ1ZmZlclBvaW50ZXJ2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdM
ZW51bSBwbmFtZSwgR0x2b2lkICoqcGFyYW1zKQogewotICAgIGlmIChjb250ZXh0LT5nZXRDbGll
bnRWZXJzaW9uKCkgPCAzKQotICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJDb250ZXh0IGRvZXMgbm90IHN1cHBvcnQgR0xFUzMu
IikpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIHJldHVybiBWYWxpZGF0ZUdl
dEJ1ZmZlclBvaW50ZXJ2QmFzZShjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBudWxscHRyLCBwYXJh
bXMpOworfQogCi0gICAgaWYgKCFjb250ZXh0LT5pc1NhbXBsZXIoc2FtcGxlcikpCitib29sIFZh
bGlkYXRlR2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqKnBh
cmFtcykKK3sKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0RW50cnlQb2ludChjb250ZXh0LCBidWZT
aXplKSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAo
IVZhbGlkYXRlU2FtcGxlck9iamVjdFBhcmFtZXRlcihjb250ZXh0LCBwbmFtZSkpCisgICAgaWYg
KCFWYWxpZGF0ZUdldEJ1ZmZlclBvaW50ZXJ2QmFzZShjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBs
ZW5ndGgsIHBhcmFtcykpCiAgICAgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgaWYgKCFWYWxpZGF0ZVRleFBhcmFtUGFyYW1ldGVycyhjb250ZXh0LCBwbmFtZSwgcGFyYW0p
KQorICAgIGlmICghVmFsaWRhdGVSb2J1c3RCdWZmZXJTaXplKGNvbnRleHQsIGJ1ZlNpemUsICps
ZW5ndGgpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICByZXR1cm4g
dHJ1ZTsKLX0KIAotYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJmKENvbnRleHQgKmNvbnRl
eHQsIEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pCi17Ci0gICAg
Ly8gVGhlIG9ubHkgZmxvYXQgcGFyYW1ldGVycyBhcmUgTUlOX0xPRCBhbmQgTUFYX0xPRC4gRm9y
IHRoZXNlIGFueSB2YWx1ZSBpcyBwZXJtaXNzaWJsZSwgc28KLSAgICAvLyBWYWxpZGF0ZVNhbXBs
ZXJQYXJhbWV0ZXJpIGNhbiBiZSB1c2VkIGZvciB2YWxpZGF0aW9uIGhlcmUuCi0gICAgcmV0dXJu
IFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcmkoY29udGV4dCwgc2FtcGxlciwgcG5hbWUsIHN0YXRp
Y19jYXN0PEdMaW50PihwYXJhbSkpOwotfQotCi1ib29sIFZhbGlkYXRlR2V0QnVmZmVyUG9pbnRl
cnYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTHZvaWQg
KipwYXJhbXMpCi17Ci0gICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCi0g
ICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwgIkNvbnRleHQgZG9lcyBub3Qgc3VwcG9ydCBHTEVTMy4iKSk7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gVmFsaWRhdGVHZXRCdWZmZXJQb2ludGVydkJh
c2UoY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgcGFyYW1zKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogYm9vbCBWYWxpZGF0ZVVubWFwQnVmZmVyKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJn
ZXQpCiB7Ci0gICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgaWYg
KGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7Ci0gICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTIwMzcsOSArMTgzOSw5IEBAIGJvb2wgVmFs
aWRhdGVNYXBCdWZmZXJSYW5nZShDb250ZXh0ICpjb24KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpcHRyIGxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJp
dGZpZWxkIGFjY2VzcykKIHsKLSAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwg
MykKKyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsK
LSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04s
ICJDb250ZXh0IGRvZXMgbm90IHN1cHBvcnQgR0xFUzMuIikpOworICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkNvbnRleHQgZG9lcyBub3Qg
c3VwcG9ydCBHTEVTMy4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTIw
NTEsMTMgKzE4NTMsMTU2IEBAIGJvb2wgVmFsaWRhdGVGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlKENv
bnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgbGVuZ3RoKQog
ewotICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgIGlmIChjb250
ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgewotICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkNvbnRleHQgZG9lcyBu
b3Qgc3VwcG9ydCBHTEVTMy4iKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ29udGV4dCBkb2VzIG5vdCBzdXBwb3J0IEdMRVMzLiIp
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHJldHVybiBWYWxpZGF0ZUZs
dXNoTWFwcGVkQnVmZmVyUmFuZ2VCYXNlKGNvbnRleHQsIHRhcmdldCwgb2Zmc2V0LCBsZW5ndGgp
OwogfQogCitib29sIFZhbGlkYXRlSW5kZXhlZFN0YXRlUXVlcnkoVmFsaWRhdGlvbkNvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgpCit7CisgICAgaWYgKGxlbmd0aCkK
KyAgICB7CisgICAgICAgICpsZW5ndGggPSAwOworICAgIH0KKworICAgIEdMZW51bSBuYXRpdmVU
eXBlOworICAgIHVuc2lnbmVkIGludCBudW1QYXJhbXM7CisgICAgaWYgKCFjb250ZXh0LT5nZXRJ
bmRleGVkUXVlcnlQYXJhbWV0ZXJJbmZvKHBuYW1lLCAmbmF0aXZlVHlwZSwgJm51bVBhcmFtcykp
CisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VO
VU0pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGNvbnN0IENhcHMgJmNh
cHMgPSBjb250ZXh0LT5nZXRDYXBzKCk7CisgICAgc3dpdGNoIChwbmFtZSkKKyAgICB7CisgICAg
ICAgIGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TVEFSVDoKKyAgICAgICAgY2Fz
ZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NJWkU6CisgICAgICAgIGNhc2UgR0xfVFJB
TlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HOgorICAgICAgICAgICAgaWYgKGluZGV4ID49
IGNhcHMubWF4VHJhbnNmb3JtRmVlZGJhY2tTZXBhcmF0ZUF0dHJpYnV0ZXMpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfVU5JRk9STV9CVUZGRVJfU1RB
UlQ6CisgICAgICAgIGNhc2UgR0xfVU5JRk9STV9CVUZGRVJfU0laRToKKyAgICAgICAgY2FzZSBH
TF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HOgorICAgICAgICAgICAgaWYgKGluZGV4ID49IGNhcHMu
bWF4VW5pZm9ybUJ1ZmZlckJpbmRpbmdzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBHTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX1NJWkU6CisgICAgICAgIGNh
c2UgR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9DT1VOVDoKKyAgICAgICAgICAgIGlmIChpbmRl
eCA+PSAzdSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0p
KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAobGVuZ3RoKQor
ICAgIHsKKyAgICAgICAgKmxlbmd0aCA9IDE7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgVmFsaWRhdGVHZXRJbnRlZ2VyaV92KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMaW50ICpkYXRhKQoreworICAgIGlmICgh
Y29udGV4dC0+Z2V0R0xWZXJzaW9uKCkuaXNFUzNPckdyZWF0ZXIoKSkKKyAgICB7CisgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ29udGV4
dCBkb2VzIG5vdCBzdXBwb3J0IEdMRVMzLjAiKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgcmV0dXJuIFZhbGlkYXRlSW5kZXhlZFN0YXRlUXVlcnkoY29udGV4dCwgdGFyZ2V0
LCBpbmRleCwgbnVsbHB0cik7Cit9CisKK2Jvb2wgVmFsaWRhdGVHZXRJbnRlZ2VyaV92Um9idXN0
QU5HTEUoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50ICpkYXRhKQoreworICAgIGlmICghY29udGV4dC0+Z2V0R0xWZXJzaW9uKCku
aXNFUzNPckdyZWF0ZXIoKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ29udGV4dCBkb2VzIG5vdCBzdXBwb3J0IEdMRVMz
LjAiKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlkYXRl
Um9idXN0RW50cnlQb2ludChjb250ZXh0LCBidWZTaXplKSkKKyAgICB7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlkYXRlSW5kZXhlZFN0YXRlUXVlcnkoY29u
dGV4dCwgdGFyZ2V0LCBpbmRleCwgbGVuZ3RoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0QnVmZmVyU2l6ZShjb250ZXh0LCBi
dWZTaXplLCAqbGVuZ3RoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdldEludGVnZXI2NGlfdihWYWxp
ZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGlu
dDY0ICpkYXRhKQoreworICAgIGlmICghY29udGV4dC0+Z2V0R0xWZXJzaW9uKCkuaXNFUzNPckdy
ZWF0ZXIoKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAiQ29udGV4dCBkb2VzIG5vdCBzdXBwb3J0IEdMRVMzLjAiKSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIFZhbGlkYXRlSW5kZXhlZFN0
YXRlUXVlcnkoY29udGV4dCwgdGFyZ2V0LCBpbmRleCwgbnVsbHB0cik7Cit9CisKK2Jvb2wgVmFs
aWRhdGVHZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3Ro
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50NjQgKmRhdGEp
Cit7CisgICAgaWYgKCFjb250ZXh0LT5nZXRHTFZlcnNpb24oKS5pc0VTM09yR3JlYXRlcigpKQor
ICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04sICJDb250ZXh0IGRvZXMgbm90IHN1cHBvcnQgR0xFUzMuMCIpKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghVmFsaWRhdGVSb2J1c3RFbnRyeVBvaW50KGNv
bnRleHQsIGJ1ZlNpemUpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIGlmICghVmFsaWRhdGVJbmRleGVkU3RhdGVRdWVyeShjb250ZXh0LCB0YXJnZXQsIGluZGV4
LCBsZW5ndGgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlm
ICghVmFsaWRhdGVSb2J1c3RCdWZmZXJTaXplKGNvbnRleHQsIGJ1ZlNpemUsICpsZW5ndGgpKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOwor
fQorCiB9ICAvLyBuYW1lc3BhY2UgZ2wKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS92YWxpZGF0aW9uRVMzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMuaAkocmV2aXNpb24gMjA3ODA0KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMuaAko
d29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQCBib29sIFZhbGlkYXRlRVMzVGV4SW1hZ2VQ
YXJhbWV0ZXJzQmFzZShWCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBib3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGlt
YWdlU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
dm9pZCAqcGl4ZWxzKTsKIAogYm9vbCBWYWxpZGF0ZUVTM1RleFN0b3JhZ2VQYXJhbWV0ZXJzKENv
bnRleHQgKmNvbnRleHQsCkBAIC01Nyw2ICs1OCw3IEBAIGJvb2wgVmFsaWRhdGVFUzNUZXhJbWFn
ZTJEUGFyYW1ldGVycyhDb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBib3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGltYWdlU2l6
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBp
eGVscyk7CiAKIGJvb2wgVmFsaWRhdGVFUzNUZXhJbWFnZTNEUGFyYW1ldGVycyhDb250ZXh0ICpj
b250ZXh0LApAQCAtNzQsNiArNzYsNyBAQCBib29sIFZhbGlkYXRlRVMzVGV4SW1hZ2UzRFBhcmFt
ZXRlcnMoQ29uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYm9y
ZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcGl4ZWxzKTsKIAog
Ym9vbCBWYWxpZGF0ZUVTM0NvcHlUZXhJbWFnZVBhcmFtZXRlcnNCYXNlKFZhbGlkYXRpb25Db250
ZXh0ICpjb250ZXh0LApAQCAtMTUzLDggKzE1Niw2IEBAIGJvb2wgVmFsaWRhdGVHZXRRdWVyeU9i
amVjdHVpdihDb250ZXh0ICoKIGJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVMYXllcihD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2
ZWwsIEdMaW50IGxheWVyKTsKIAotYm9vbCBWYWxpZEVTM1JlYWRGb3JtYXRUeXBlKENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5
cGUpOwotCiBib29sIFZhbGlkYXRlRVMzUmVuZGVyYnVmZmVyU3RvcmFnZVBhcmFtZXRlcnMoQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xzaXplaSBzYW1wbGVzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwogCkBAIC0yNTIsNiArMjUzLDE4IEBA
IGJvb2wgVmFsaWRhdGVUZXhJbWFnZTNEKENvbnRleHQgKmNvbnRleHQKICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcGl4ZWxzKTsKK2Jv
b2wgVmFsaWRhdGVUZXhJbWFnZTNEUm9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgYm9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
Zm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscyk7CiBi
b29sIFZhbGlkYXRlVGV4U3ViSW1hZ2UzRChDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxldmVsLApAQCAtMjY0LDYgKzI3NywxOSBAQCBib29sIFZhbGlkYXRlVGV4U3ViSW1h
Z2UzRChDb250ZXh0ICpjb250CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9y
bWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscyk7Citib29sIFZhbGlkYXRlVGV4
U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCB6b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVm
U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lk
ICpwaXhlbHMpOwogYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwK
QEAgLTI5MSwxMCArMzE3LDEzIEBAIGJvb2wgVmFsaWRhdGVHZW5PckRlbGV0ZUNvdW50RVMzKENv
bnRleHQKIAogYm9vbCBWYWxpZGF0ZUJlZ2luVHJhbnNmb3JtRmVlZGJhY2soQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHByaW1pdGl2ZU1vZGUpOwogCi1ib29sIFZhbGlkYXRlU2FtcGxlclBhcmFt
ZXRlcmkoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xp
bnQgcGFyYW0pOwotYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJmKENvbnRleHQgKmNvbnRl
eHQsIEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOwotCiBib29s
IFZhbGlkYXRlR2V0QnVmZmVyUG9pbnRlcnYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdl
dCwgR0xlbnVtIHBuYW1lLCBHTHZvaWQgKipwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldEJ1ZmZl
clBvaW50ZXJ2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHZvaWQgKipwYXJhbXMpOwogYm9vbCBW
YWxpZGF0ZVVubWFwQnVmZmVyKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQpOwogYm9v
bCBWYWxpZGF0ZU1hcEJ1ZmZlclJhbmdlKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKQEAgLTMwNiw2ICszMzUsMjcgQEAgYm9vbCBW
YWxpZGF0ZUZsdXNoTWFwcGVkQnVmZmVyUmFuZ2UoQ29udAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnRwdHIgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaXB0ciBsZW5ndGgpOwogCitib29sIFZhbGlkYXRlSW5kZXhlZFN0
YXRlUXVlcnkoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICps
ZW5ndGgpOworYm9vbCBWYWxpZGF0ZUdldEludGVnZXJpX3YoVmFsaWRhdGlvbkNvbnRleHQgKmNv
bnRleHQsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xpbnQgKmRhdGEpOworYm9vbCBW
YWxpZGF0ZUdldEludGVnZXJpX3ZSb2J1c3RBTkdMRShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKmRhdGEpOworYm9vbCBWYWxp
ZGF0ZUdldEludGVnZXI2NGlfdihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dDY0ICpkYXRhKTsKK2Jvb2wgVmFsaWRhdGVHZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShWYWxp
ZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50NjQgKmRhdGEpOwogfSAgLy8gbmFtZXNwYWNlIGdsCiAKICNlbmRpZiAvLyBM
SUJBTkdMRV9WQUxJREFUSU9OX0VTM19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMxLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMzEuY3BwCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMz
MS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NyBAQAorLy8KKy8vIENvcHlyaWdodCAo
YykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8v
IHZhbGlkYXRpb25FUzMxLmNwcDogVmFsaWRhdGlvbiBmdW5jdGlvbnMgZm9yIE9wZW5HTCBFUyAz
LjEgZW50cnkgcG9pbnQgcGFyYW1ldGVycworCisjaW5jbHVkZSAibGliQU5HTEUvdmFsaWRhdGlv
bkVTMzEuaCIKKworI2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHQuaCIKKyNpbmNsdWRlICJsaWJB
TkdMRS92YWxpZGF0aW9uRVMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS92YWxpZGF0aW9uRVMzLmgi
CisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNlIGdsCit7CisKK2Jvb2wgVmFs
aWRhdGVHZXRCb29sZWFuaV92KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMdWlu
dCBpbmRleCwgR0xib29sZWFuICpkYXRhKQoreworICAgIGlmICghY29udGV4dC0+Z2V0R0xWZXJz
aW9uKCkuaXNFUzMxKCkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTiwgIkNvbnRleHQgZG9lcyBub3Qgc3VwcG9ydCBHTEVTMy4x
IikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZGF0ZUlu
ZGV4ZWRTdGF0ZVF1ZXJ5KGNvbnRleHQsIHRhcmdldCwgaW5kZXgsIG51bGxwdHIpKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIFZhbGlkYXRlR2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiAqZGF0YSkKK3sKKyAgICBpZiAo
IWNvbnRleHQtPmdldEdMVmVyc2lvbigpLmlzRVMzMSgpKQorICAgIHsKKyAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJDb250ZXh0IGRvZXMg
bm90IHN1cHBvcnQgR0xFUzMuMSIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIGlmICghVmFsaWRhdGVSb2J1c3RFbnRyeVBvaW50KGNvbnRleHQsIGJ1ZlNpemUpKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghVmFsaWRhdGVJbmRl
eGVkU3RhdGVRdWVyeShjb250ZXh0LCB0YXJnZXQsIGluZGV4LCBsZW5ndGgpKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghVmFsaWRhdGVSb2J1c3RCdWZm
ZXJTaXplKGNvbnRleHQsIGJ1ZlNpemUsICpsZW5ndGgpKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit9ICAvLyBuYW1lc3BhY2Ug
Z2wKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9u
RVMzMS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS92YWxpZGF0aW9uRVMzMS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMzMS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMjggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyB2YWxpZGF0aW9uRVMzMS5oOiBWYWxpZGF0aW9u
IGZ1bmN0aW9ucyBmb3IgT3BlbkdMIEVTIDMuMSBlbnRyeSBwb2ludCBwYXJhbWV0ZXJzCisKKyNp
Zm5kZWYgTElCQU5HTEVfVkFMSURBVElPTl9FUzMxX0hfCisjZGVmaW5lIExJQkFOR0xFX1ZBTElE
QVRJT05fRVMzMV9IXworCisjaW5jbHVkZSA8R0xFUzMvZ2wzMS5oPgorCituYW1lc3BhY2UgZ2wK
K3sKK2NsYXNzIENvbnRleHQ7CisKK2Jvb2wgVmFsaWRhdGVHZXRCb29sZWFuaV92KENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xib29sZWFuICpkYXRhKTsK
K2Jvb2wgVmFsaWRhdGVHZXRCb29sZWFuaV92Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuICpkYXRhKTsKKworfSAgLy8g
bmFtZXNwYWNlIGdsCisKKyNlbmRpZiAgLy8gTElCQU5HTEVfVkFMSURBVElPTl9FUzMxX0hfCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFs
aWRhdGlvbkVTLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcsNiAr
Nyw3IEBACiAvLyB2YWxpZGF0aW9uRVMuaDogVmFsaWRhdGlvbiBmdW5jdGlvbnMgZm9yIGdlbmVy
aWMgT3BlbkdMIEVTIGVudHJ5IHBvaW50IHBhcmFtZXRlcnMKIAogI2luY2x1ZGUgImxpYkFOR0xF
L3ZhbGlkYXRpb25FUy5oIgorCiAjaW5jbHVkZSAibGliQU5HTEUvdmFsaWRhdGlvbkVTMi5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL3ZhbGlkYXRpb25FUzMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9D
b250ZXh0LmgiCkBAIC0yNSw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29tbW9uL21hdGh1dGlsLmgi
CiAjaW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5oIgogCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7
CisKIG5hbWVzcGFjZSBnbAogewogY29uc3QgY2hhciAqZ19FeGNlZWRzTWF4RWxlbWVudEVycm9y
TWVzc2FnZSA9ICJFbGVtZW50IHZhbHVlIGV4Y2VlZHMgbWF4aW11bSBlbGVtZW50IGluZGV4LiI7
CkBAIC0zMyw3ICszNiw3IEBAIG5hbWVzcGFjZQogewogYm9vbCBWYWxpZGF0ZURyYXdBdHRyaWJz
KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGludCBwcmltY291bnQsIEdMaW50IG1heFZl
cnRleCkKIHsKLSAgICBjb25zdCBnbDo6U3RhdGUgJnN0YXRlICAgICA9IGNvbnRleHQtPmdldFN0
YXRlKCk7CisgICAgY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSAgICAgPSBjb250ZXh0LT5nZXRHTFN0
YXRlKCk7CiAgICAgY29uc3QgZ2w6OlByb2dyYW0gKnByb2dyYW0gPSBzdGF0ZS5nZXRQcm9ncmFt
KCk7CiAKICAgICBjb25zdCBWZXJ0ZXhBcnJheSAqdmFvICAgICA9IHN0YXRlLmdldFZlcnRleEFy
cmF5KCk7CkBAIC03NSw3ICs3OCw3IEBAIGJvb2wgVmFsaWRhdGVEcmF3QXR0cmlicyhWYWxpZGF0
aW9uQ29udGUKICAgICAgICAgICAgICAgICAgICAgLy8gZW5vdWdoIGJhY2tpbmcgZGF0YS4KICAg
ICAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYkRhdGFTaXplICsgYXR0cmliT2Zmc2V0ID4gYnVm
ZmVyLT5nZXRTaXplKCkpCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZl
cnRleCBidWZmZXIgaXMgbm90IGJpZyBlbm91Z2ggZm9yIHRoZSBkcmF3IGNhbGwiKSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04Niw3ICs4OSw3IEBAIGJvb2wg
VmFsaWRhdGVEcmF3QXR0cmlicyhWYWxpZGF0aW9uQ29udGUKICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAvLyBUaGlzIGlzIGFuIGFwcGxpY2F0aW9uIGVycm9yIHRoYXQgd291bGQgbm9y
bWFsbHkgcmVzdWx0IGluIGEgY3Jhc2gsCiAgICAgICAgICAgICAgICAgLy8gYnV0IHdlIGNhdGNo
IGl0IGFuZCByZXR1cm4gYW4gZXJyb3IKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcigKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcigK
ICAgICAgICAgICAgICAgICAgICAgR0xfSU5WQUxJRF9PUEVSQVRJT04sICJBbiBlbmFibGVkIHZl
cnRleCBhcnJheSBoYXMgbm8gYnVmZmVyIGFuZCBubyBwb2ludGVyLiIpKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CkBAIC05NiwyMjMzICs5OSw0NjI1IEBA
IGJvb2wgVmFsaWRhdGVEcmF3QXR0cmlicyhWYWxpZGF0aW9uQ29udGUKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQotCi1ib29sIFZhbGlkQ2FwKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjYXApCi17Ci0gICAgc3dpdGNoIChjYXApCi0gICAg
ewotICAgICAgY2FzZSBHTF9DVUxMX0ZBQ0U6Ci0gICAgICBjYXNlIEdMX1BPTFlHT05fT0ZGU0VU
X0ZJTEw6Ci0gICAgICBjYXNlIEdMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRToKLSAgICAgIGNh
c2UgR0xfU0FNUExFX0NPVkVSQUdFOgotICAgICAgY2FzZSBHTF9TQ0lTU09SX1RFU1Q6Ci0gICAg
ICBjYXNlIEdMX1NURU5DSUxfVEVTVDoKLSAgICAgIGNhc2UgR0xfREVQVEhfVEVTVDoKLSAgICAg
IGNhc2UgR0xfQkxFTkQ6Ci0gICAgICBjYXNlIEdMX0RJVEhFUjoKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KLSAgICAgIGNhc2UgR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVg6Ci0gICAg
ICBjYXNlIEdMX1JBU1RFUklaRVJfRElTQ0FSRDoKLSAgICAgICAgcmV0dXJuIChjb250ZXh0LT5n
ZXRDbGllbnRWZXJzaW9uKCkgPj0gMyk7Ci0KLSAgICAgIGNhc2UgR0xfREVCVUdfT1VUUFVUX1NZ
TkNIUk9OT1VTOgotICAgICAgY2FzZSBHTF9ERUJVR19PVVRQVVQ6Ci0gICAgICAgICAgcmV0dXJu
IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kZWJ1ZzsKK2Jvb2wgVmFsaWRSZWFkUGl4ZWxzRm9y
bWF0VHlwZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gZnJhbWVidWZmZXJDb21wb25lbnRUeXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoIChmcmFtZWJ1ZmZlckNvbXBvbmVu
dFR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX05PUk1BTElaRUQ6CisgICAg
ICAgICAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IERvbid0IGFjY2VwdCBCR1JBIGhlcmUuICBTb21l
IGNocm9tZSBpbnRlcm5hbHMgYXBwZWFyIHRvIHRyeSB0byB1c2UKKyAgICAgICAgICAgIC8vIFJl
YWRQaXhlbHMgd2l0aCBCR1JBIGV2ZW4gaWYgdGhlIGV4dGVuc2lvbiBpcyBub3QgcHJlc2VudAor
ICAgICAgICAgICAgcmV0dXJuIChmb3JtYXQgPT0gR0xfUkdCQSAmJiB0eXBlID09IEdMX1VOU0lH
TkVEX0JZVEUpIHx8CisgICAgICAgICAgICAgICAgICAgKGNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5yZWFkRm9ybWF0QkdSQSAmJiBmb3JtYXQgPT0gR0xfQkdSQV9FWFQgJiYKKyAgICAgICAgICAg
ICAgICAgICAgdHlwZSA9PSBHTF9VTlNJR05FRF9CWVRFKTsKKworICAgICAgICBjYXNlIEdMX1NJ
R05FRF9OT1JNQUxJWkVEOgorICAgICAgICAgICAgcmV0dXJuIChmb3JtYXQgPT0gR0xfUkdCQSAm
JiB0eXBlID09IEdMX1VOU0lHTkVEX0JZVEUpOwogCi0gICAgICBkZWZhdWx0OgotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotfQorICAgICAgICBjYXNlIEdMX0lOVDoKKyAgICAgICAgICAg
IHJldHVybiAoZm9ybWF0ID09IEdMX1JHQkFfSU5URUdFUiAmJiB0eXBlID09IEdMX0lOVCk7CiAK
LWJvb2wgVmFsaWRUZXh0dXJlVGFyZ2V0KGNvbnN0IFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdGFyZ2V0KQotewotICAgIHN3aXRjaCAodGFyZ2V0KQotICAgIHsKLSAgICAgIGNh
c2UgR0xfVEVYVFVSRV8yRDoKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUDoKLSAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgorICAgICAgICAg
ICAgcmV0dXJuIChmb3JtYXQgPT0gR0xfUkdCQV9JTlRFR0VSICYmIHR5cGUgPT0gR0xfVU5TSUdO
RURfSU5UKTsKIAotICAgICAgY2FzZSBHTF9URVhUVVJFXzNEOgotICAgICAgY2FzZSBHTF9URVhU
VVJFXzJEX0FSUkFZOgotICAgICAgICByZXR1cm4gKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24o
KSA+PSAzKTsKKyAgICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAgICAgICAgIHJldHVybiAoZm9y
bWF0ID09IEdMX1JHQkEgJiYgdHlwZSA9PSBHTF9GTE9BVCk7CiAKLSAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQogCi1ib29sIFZh
bGlkVGV4dHVyZTJEVGFyZ2V0KGNvbnN0IFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gdGFyZ2V0KQorYm9vbCBWYWxpZENhcChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
Y2FwLCBib29sIHF1ZXJ5T25seSkKIHsKLSAgICBzd2l0Y2ggKHRhcmdldCkKKyAgICBzd2l0Y2gg
KGNhcCkKICAgICB7Ci0gICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoKLSAgICAgICAgY2FzZSBH
TF9URVhUVVJFX0NVQkVfTUFQOgorICAgICAgICAvLyBFWFRfbXVsdGlzYW1wbGVfY29tcGF0aWJp
bGl0eQorICAgICAgICBjYXNlIEdMX01VTFRJU0FNUExFX0VYVDoKKyAgICAgICAgY2FzZSBHTF9T
QU1QTEVfQUxQSEFfVE9fT05FX0VYVDoKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkubXVsdGlzYW1wbGVDb21wYXRpYmlsaXR5OworCisgICAgICAgIGNhc2UgR0xf
Q1VMTF9GQUNFOgorICAgICAgICBjYXNlIEdMX1BPTFlHT05fT0ZGU0VUX0ZJTEw6CisgICAgICAg
IGNhc2UgR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFOgorICAgICAgICBjYXNlIEdMX1NBTVBM
RV9DT1ZFUkFHRToKKyAgICAgICAgY2FzZSBHTF9TQ0lTU09SX1RFU1Q6CisgICAgICAgIGNhc2Ug
R0xfU1RFTkNJTF9URVNUOgorICAgICAgICBjYXNlIEdMX0RFUFRIX1RFU1Q6CisgICAgICAgIGNh
c2UgR0xfQkxFTkQ6CisgICAgICAgIGNhc2UgR0xfRElUSEVSOgogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAKKyAgICAgICAgY2FzZSBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWDoK
KyAgICAgICAgY2FzZSBHTF9SQVNURVJJWkVSX0RJU0NBUkQ6CisgICAgICAgICAgICByZXR1cm4g
KGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpID49IDMpOworCisgICAgICAgIGNhc2Ug
R0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTOgorICAgICAgICBjYXNlIEdMX0RFQlVHX09VVFBV
VDoKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGVidWc7CisK
KyAgICAgICAgY2FzZSBHTF9CSU5EX0dFTkVSQVRFU19SRVNPVVJDRV9DSFJPTUlVTToKKyAgICAg
ICAgICAgIHJldHVybiBxdWVyeU9ubHkgJiYgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmJpbmRH
ZW5lcmF0ZXNSZXNvdXJjZTsKKwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIH0KIAotYm9vbCBWYWxpZFRleHR1cmUzRFRhcmdldChjb25zdCBWYWxp
ZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCkKK2Jvb2wgVmFsaWRhdGVSZWFk
UGl4ZWxzQmFzZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x2b2lkICpwaXhlbHMpCiB7Ci0gICAgc3dpdGNoICh0YXJnZXQpCisgICAg
aWYgKGxlbmd0aCAhPSBudWxscHRyKQogICAgIHsKLSAgICAgICAgY2FzZSBHTF9URVhUVVJFXzNE
OgotICAgICAgICBjYXNlIEdMX1RFWFRVUkVfMkRfQVJSQVk6Ci0gICAgICAgICAgICByZXR1cm4g
KGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA+PSAzKTsKKyAgICAgICAgKmxlbmd0aCA9IDA7
CisgICAgfQogCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIndpZHRoIGFuZCBoZWlnaHQgbXVz
dCBiZSBwb3NpdGl2ZSIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLX0KIAotLy8g
VGhpcyBmdW5jdGlvbiBkaWZmZXJzIGZyb20gVmFsaWRUZXh0dXJlVGFyZ2V0IGluIHRoYXQgdGhl
IHRhcmdldCBtdXN0IGJlCi0vLyB1c2FibGUgYXMgdGhlIGRlc3RpbmF0aW9uIG9mIGEgMkQgb3Bl
cmF0aW9uLS0gc28gYSBjdWJlIGZhY2UgaXMgdmFsaWQsIGJ1dAotLy8gR0xfVEVYVFVSRV9DVUJF
X01BUCBpcyBub3QuCi0vLyBOb3RlOiBkdXBsaWNhdGUgb2YgSXNJbnRlcm5hbFRleHR1cmVUYXJn
ZXQKLWJvb2wgVmFsaWRUZXh0dXJlMkREZXN0aW5hdGlvblRhcmdldChjb25zdCBWYWxpZGF0aW9u
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCkKLXsKLSAgICBzd2l0Y2ggKHRhcmdldCkK
KyAgICBhdXRvIHJlYWRGcmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRSZWFk
RnJhbWVidWZmZXIoKTsKKworICAgIGlmIChyZWFkRnJhbWVidWZmZXItPmNoZWNrU3RhdHVzKGNv
bnRleHQtPmdldENvbnRleHRTdGF0ZSgpKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKICAg
ICB7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfMkQ6Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VC
RV9NQVBfUE9TSVRJVkVfWDoKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElW
RV9YOgotICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1k6Ci0gICAgICBj
YXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWToKLSAgICAgIGNhc2UgR0xfVEVYVFVS
RV9DVUJFX01BUF9QT1NJVElWRV9aOgotICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05F
R0FUSVZFX1o6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9Ci19CiAKLWJvb2wgVmFsaWRUZXh0dXJlM0REZXN0aW5hdGlvblRhcmdldChjb25zdCBWYWxp
ZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCkKLXsKLSAgICBzd2l0Y2ggKHRh
cmdldCkKKyAgICBpZiAocmVhZEZyYW1lYnVmZmVyLT5pZCgpICE9IDAgJiYgcmVhZEZyYW1lYnVm
ZmVyLT5nZXRTYW1wbGVzKGNvbnRleHQtPmdldENvbnRleHRTdGF0ZSgpKSAhPSAwKQogICAgIHsK
LSAgICAgIGNhc2UgR0xfVEVYVFVSRV8zRDoKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRF9BUlJB
WToKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGRlZmF1bHQ6CisgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9Ci19CiAKLWJvb2wgVmFsaWRGcmFtZWJ1ZmZlclRhcmdldChHTGVu
dW0gdGFyZ2V0KQotewotICAgIHN0YXRpY19hc3NlcnQoR0xfRFJBV19GUkFNRUJVRkZFUl9BTkdM
RSA9PSBHTF9EUkFXX0ZSQU1FQlVGRkVSICYmIEdMX1JFQURfRlJBTUVCVUZGRVJfQU5HTEUgPT0g
R0xfUkVBRF9GUkFNRUJVRkZFUiwKLSAgICAgICAgICAgICAgICAgICJBTkdMRSBmcmFtZWJ1ZmZl
ciBlbnVtcyBtdXN0IGVxdWFsIHRoZSBFUzMgZnJhbWVidWZmZXIgZW51bXMuIik7CisgICAgY29u
c3QgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFJl
YWRGcmFtZWJ1ZmZlcigpOworICAgIEFTU0VSVChmcmFtZWJ1ZmZlcik7CiAKLSAgICBzd2l0Y2gg
KHRhcmdldCkKKyAgICBpZiAoZnJhbWVidWZmZXItPmdldFJlYWRCdWZmZXJTdGF0ZSgpID09IEdM
X05PTkUpCiAgICAgewotICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUjogICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgIGNhc2UgR0xfUkVBRF9GUkFNRUJVRkZFUjogcmV0dXJuIHRydWU7Ci0gICAgICBj
YXNlIEdMX0RSQVdfRlJBTUVCVUZGRVI6IHJldHVybiB0cnVlOwotICAgICAgZGVmYXVsdDogICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiUmVhZCBidWZmZXIgaXMgR0xfTk9ORSIpKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLX0KIAotYm9vbCBWYWxpZEJ1ZmZlclRhcmdl
dChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0KQotewotICAgIHN3aXRjaCAo
dGFyZ2V0KQorICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqcmVhZEJ1ZmZlciA9IGZy
YW1lYnVmZmVyLT5nZXRSZWFkQ29sb3JidWZmZXIoKTsKKyAgICBpZiAoIXJlYWRCdWZmZXIpCiAg
ICAgewotICAgICAgY2FzZSBHTF9BUlJBWV9CVUZGRVI6Ci0gICAgICBjYXNlIEdMX0VMRU1FTlRf
QVJSQVlfQlVGRkVSOgotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KIAotICAgICAgY2FzZSBHTF9QSVhFTF9QQUNLX0JVRkZFUjoKLSAgICAgIGNh
c2UgR0xfUElYRUxfVU5QQUNLX0JVRkZFUjoKLSAgICAgICAgICByZXR1cm4gKGNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5waXhlbEJ1ZmZlck9iamVjdCB8fCBjb250ZXh0LT5nZXRDbGllbnRWZXJz
aW9uKCkgPj0gMyk7CisgICAgR0xlbnVtIGN1cnJlbnRGb3JtYXQgICAgICAgICA9IGZyYW1lYnVm
ZmVyLT5nZXRJbXBsZW1lbnRhdGlvbkNvbG9yUmVhZEZvcm1hdCgpOworICAgIEdMZW51bSBjdXJy
ZW50VHlwZSAgICAgICAgICAgPSBmcmFtZWJ1ZmZlci0+Z2V0SW1wbGVtZW50YXRpb25Db2xvclJl
YWRUeXBlKCk7CisgICAgR0xlbnVtIGN1cnJlbnRJbnRlcm5hbEZvcm1hdCA9IHJlYWRCdWZmZXIt
PmdldEZvcm1hdCgpLmFzU2l6ZWQoKTsKIAotICAgICAgY2FzZSBHTF9DT1BZX1JFQURfQlVGRkVS
OgotICAgICAgY2FzZSBHTF9DT1BZX1dSSVRFX0JVRkZFUjoKLSAgICAgIGNhc2UgR0xfVFJBTlNG
T1JNX0ZFRURCQUNLX0JVRkZFUjoKLSAgICAgIGNhc2UgR0xfVU5JRk9STV9CVUZGRVI6Ci0gICAg
ICAgIHJldHVybiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpID49IDMpOworICAgIGNvbnN0
IGdsOjpJbnRlcm5hbEZvcm1hdCAmaW50ZXJuYWxGb3JtYXRJbmZvID0gZ2w6OkdldEludGVybmFs
Rm9ybWF0SW5mbyhjdXJyZW50SW50ZXJuYWxGb3JtYXQpOworICAgIGJvb2wgdmFsaWRGb3JtYXRU
eXBlQ29tYmluYXRpb24gPQorICAgICAgICBWYWxpZFJlYWRQaXhlbHNGb3JtYXRUeXBlKGNvbnRl
eHQsIGludGVybmFsRm9ybWF0SW5mby5jb21wb25lbnRUeXBlLCBmb3JtYXQsIHR5cGUpOwogCi0g
ICAgICBkZWZhdWx0OgorICAgIGlmICghKGN1cnJlbnRGb3JtYXQgPT0gZm9ybWF0ICYmIGN1cnJl
bnRUeXBlID09IHR5cGUpICYmICF2YWxpZEZvcm1hdFR5cGVDb21iaW5hdGlvbikKKyAgICB7Cisg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci19CiAKLWJvb2wgVmFsaWRCdWZmZXJQYXJh
bWV0ZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lKQotewotICAgIGNvbnN0
IEV4dGVuc2lvbnMgJmV4dGVuc2lvbnMgPSBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCk7CisgICAg
Ly8gQ2hlY2sgZm9yIHBpeGVsIHBhY2sgYnVmZmVyIHJlbGF0ZWQgQVBJIGVycm9ycworICAgIGds
OjpCdWZmZXIgKnBpeGVsUGFja0J1ZmZlciA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRUYXJn
ZXRCdWZmZXIoR0xfUElYRUxfUEFDS19CVUZGRVIpOworICAgIGlmIChwaXhlbFBhY2tCdWZmZXIg
IT0gbnVsbHB0ciAmJiBwaXhlbFBhY2tCdWZmZXItPmlzTWFwcGVkKCkpCisgICAgeworICAgICAg
ICAvLyAuLi50aGUgYnVmZmVyIG9iamVjdCdzIGRhdGEgc3RvcmUgaXMgY3VycmVudGx5IG1hcHBl
ZC4KKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04sICJQaXhlbCBwYWNrIGJ1ZmZlciBpcyBtYXBwZWQuIikpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQogCi0gICAgc3dpdGNoIChwbmFtZSkKKyAgICAvLyAuLiAgdGhlIGRhdGEgd291
bGQgYmUgcGFja2VkIHRvIHRoZSBidWZmZXIgb2JqZWN0IHN1Y2ggdGhhdCB0aGUgbWVtb3J5IHdy
aXRlcyByZXF1aXJlZAorICAgIC8vIHdvdWxkIGV4Y2VlZCB0aGUgZGF0YSBzdG9yZSBzaXplLgor
ICAgIEdMZW51bSBzaXplZEludGVybmFsRm9ybWF0ICAgICAgID0gR2V0U2l6ZWRJbnRlcm5hbEZv
cm1hdChmb3JtYXQsIHR5cGUpOworICAgIGNvbnN0IEludGVybmFsRm9ybWF0ICZmb3JtYXRJbmZv
ID0gR2V0SW50ZXJuYWxGb3JtYXRJbmZvKHNpemVkSW50ZXJuYWxGb3JtYXQpOworICAgIGNvbnN0
IGdsOjpFeHRlbnRzIHNpemUod2lkdGgsIGhlaWdodCwgMSk7CisgICAgY29uc3QgYXV0byAmcGFj
ayA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRQYWNrU3RhdGUoKTsKKworICAgIGF1dG8gZW5k
Qnl0ZU9yRXJyID0gZm9ybWF0SW5mby5jb21wdXRlUGFja1VucGFja0VuZEJ5dGUodHlwZSwgc2l6
ZSwgcGFjaywgZmFsc2UpOworICAgIGlmIChlbmRCeXRlT3JFcnIuaXNFcnJvcigpKQogICAgIHsK
LSAgICAgIGNhc2UgR0xfQlVGRkVSX1VTQUdFOgotICAgICAgY2FzZSBHTF9CVUZGRVJfU0laRToK
LSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKGVuZEJ5
dGVPckVyci5nZXRFcnJvcigpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAotICAg
ICAgY2FzZSBHTF9CVUZGRVJfQUNDRVNTX09FUzoKLSAgICAgICAgcmV0dXJuIGV4dGVuc2lvbnMu
bWFwQnVmZmVyOworICAgIHNpemVfdCBlbmRCeXRlID0gZW5kQnl0ZU9yRXJyLmdldFJlc3VsdCgp
OworICAgIGlmIChidWZTaXplID49IDApCisgICAgewogCi0gICAgICBjYXNlIEdMX0JVRkZFUl9N
QVBQRUQ6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoR0xfQlVGRkVSX01BUFBFRCA9PSBHTF9CVUZG
RVJfTUFQUEVEX09FUywgIkdMIGVudW1zIHNob3VsZCBiZSBlcXVhbC4iKTsKLSAgICAgICAgcmV0
dXJuIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPj0gMykgfHwgZXh0ZW5zaW9ucy5tYXBC
dWZmZXIgfHwgZXh0ZW5zaW9ucy5tYXBCdWZmZXJSYW5nZTsKLQotICAgICAgLy8gR0xfQlVGRkVS
X01BUF9QT0lOVEVSIGlzIGEgc3BlY2lhbCBjYXNlLCBhbmQgbWF5IG9ubHkgYmUKLSAgICAgIC8v
IHF1ZXJpZWQgd2l0aCBHZXRCdWZmZXJQb2ludGVydgotICAgICAgY2FzZSBHTF9CVUZGRVJfQUND
RVNTX0ZMQUdTOgotICAgICAgY2FzZSBHTF9CVUZGRVJfTUFQX09GRlNFVDoKLSAgICAgIGNhc2Ug
R0xfQlVGRkVSX01BUF9MRU5HVEg6Ci0gICAgICAgIHJldHVybiAoY29udGV4dC0+Z2V0Q2xpZW50
VmVyc2lvbigpID49IDMpIHx8IGV4dGVuc2lvbnMubWFwQnVmZmVyUmFuZ2U7CisgICAgICAgIGlm
IChzdGF0aWNfY2FzdDxzaXplX3Q+KGJ1ZlNpemUpIDwgZW5kQnl0ZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAgICAgRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sICJidWZTaXplIG11c3QgYmUgYXQgbGVhc3QgJXUgYnl0ZXMuIiwg
ZW5kQnl0ZSkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQog
Ci0gICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHBpeGVsUGFj
a0J1ZmZlciAhPSBudWxscHRyKQorICAgIHsKKyAgICAgICAgQ2hlY2tlZE51bWVyaWM8c2l6ZV90
PiBjaGVja2VkRW5kQnl0ZShlbmRCeXRlKTsKKyAgICAgICAgQ2hlY2tlZE51bWVyaWM8c2l6ZV90
PiBjaGVja2VkT2Zmc2V0KHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihwaXhlbHMpKTsKKyAgICAg
ICAgY2hlY2tlZEVuZEJ5dGUgKz0gY2hlY2tlZE9mZnNldDsKKworICAgICAgICBpZiAoY2hlY2tl
ZEVuZEJ5dGUuVmFsdWVPckRpZSgpID4gc3RhdGljX2Nhc3Q8c2l6ZV90PihwaXhlbFBhY2tCdWZm
ZXItPmdldFNpemUoKSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIE92ZXJmbG93IHBhc3Qg
dGhlIGVuZCBvZiB0aGUgYnVmZmVyCisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigK
KyAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIldyaXRlcyB3b3Vs
ZCBvdmVyZmxvdyB0aGUgcGl4ZWwgcGFjayBidWZmZXIuIikpOworICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CiAgICAgfQotfQogCi1ib29sIFZhbGlkTWlwTGV2ZWwoY29uc3Qg
VmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsKQot
ewotICAgIGNvbnN0IGF1dG8gJmNhcHMgICAgPSBjb250ZXh0LT5nZXRDYXBzKCk7Ci0gICAgc2l6
ZV90IG1heERpbWVuc2lvbiA9IDA7Ci0gICAgc3dpdGNoICh0YXJnZXQpCisgICAgaWYgKGxlbmd0
aCAhPSBudWxscHRyKQogICAgIHsKLSAgICAgICAgY2FzZSBHTF9URVhUVVJFXzJEOgotICAgICAg
ICAgICAgbWF4RGltZW5zaW9uID0gY2Fwcy5tYXgyRFRleHR1cmVTaXplOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVA6Ci0gICAgICBjYXNlIEdMX1RF
WFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWDoKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01B
UF9ORUdBVElWRV9YOgotICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1k6
Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWToKLSAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aOgotICAgICAgY2FzZSBHTF9URVhUVVJFX0NV
QkVfTUFQX05FR0FUSVZFX1o6Ci0gICAgICAgICAgbWF4RGltZW5zaW9uID0gY2Fwcy5tYXhDdWJl
TWFwVGV4dHVyZVNpemU7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVf
M0Q6Ci0gICAgICAgICAgbWF4RGltZW5zaW9uID0gY2Fwcy5tYXgzRFRleHR1cmVTaXplOwotICAg
ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9URVhUVVJFXzJEX0FSUkFZOgotICAgICAgICAg
IG1heERpbWVuc2lvbiA9IGNhcHMubWF4MkRUZXh0dXJlU2l6ZTsKLSAgICAgICAgICBicmVhazsK
LSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIGlmIChlbmRCeXRlID4gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihzdGQ6Om51bWVyaWNfbGltaXRzPEdMc2l6ZWk+OjptYXgoKSkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAg
ICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAibGVuZ3RoIHdvdWxkIG92ZXJmbG93IEdM
c2l6ZWkuIiwgZW5kQnl0ZSkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisKKyAgICAgICAgKmxlbmd0aCA9IHN0YXRpY19jYXN0PEdMc2l6ZWk+KGVuZEJ5dGUpOwogICAg
IH0KIAotICAgIHJldHVybiBsZXZlbCA8PSBnbDo6bG9nMihzdGF0aWNfY2FzdDxpbnQ+KG1heERp
bWVuc2lvbikpOworICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkSW1hZ2VTaXplUGFy
YW1ldGVycyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxldmVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgaXNTdWJJbWFnZSkKK2Jvb2wgVmFsaWRhdGVHZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXJpdkJhc2UoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgpCiB7Ci0gICAgaWYgKGxldmVs
IDwgMCB8fCB3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCB8fCBkZXB0aCA8IDApCisgICAgaWYgKGxl
bmd0aCkKICAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgKmxlbmd0aCA9IDA7
CiAgICAgfQogCi0gICAgLy8gVGV4U3ViSW1hZ2UgcGFyYW1ldGVycyBjYW4gYmUgTlBPVCB3aXRo
b3V0IHRleHR1cmVOUE9UIGV4dGVuc2lvbiwKLSAgICAvLyBhcyBsb25nIGFzIHRoZSBkZXN0aW5h
dGlvbiB0ZXh0dXJlIGlzIFBPVC4KLSAgICBpZiAoIWlzU3ViSW1hZ2UgJiYgIWNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS50ZXh0dXJlTlBPVCAmJgotICAgICAgICAobGV2ZWwgIT0gMCAmJiAoIWds
Ojppc1BvdzIod2lkdGgpIHx8ICFnbDo6aXNQb3cyKGhlaWdodCkgfHwgIWdsOjppc1BvdzIoZGVw
dGgpKSkpCisgICAgaWYgKHRhcmdldCAhPSBHTF9SRU5ERVJCVUZGRVIpCiAgICAgeworICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIHRh
cmdldC4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIVZhbGlk
TWlwTGV2ZWwoY29udGV4dCwgdGFyZ2V0LCBsZXZlbCkpCisgICAgUmVuZGVyYnVmZmVyICpyZW5k
ZXJidWZmZXIgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0Q3VycmVudFJlbmRlcmJ1ZmZlcigp
OworICAgIGlmIChyZW5kZXJidWZmZXIgPT0gbnVsbHB0cikKICAgICB7CisgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiTm8gcmVuZGVyYnVm
ZmVyIGJvdW5kLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHJldHVy
biB0cnVlOwotfQotCi1ib29sIENvbXByZXNzZWRUZXh0dXJlRm9ybWF0UmVxdWlyZXNFeGFjdFNp
emUoR0xlbnVtIGludGVybmFsRm9ybWF0KQotewotICAgIC8vIExpc3Qgb2YgY29tcHJlc3NlZCBm
b3JtYXQgdGhhdCByZXF1aXJlIHRoYXQgdGhlIHRleHR1cmUgc2l6ZSBpcyBzbWFsbGVyIHRoYW4g
b3IgYSBtdWx0aXBsZSBvZgotICAgIC8vIHRoZSBjb21wcmVzc2VkIGJsb2NrIHNpemUuCi0gICAg
c3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAgICBzd2l0Y2ggKHBuYW1lKQogICAgIHsKLSAgICAg
ICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgotICAgICAgICBjYXNlIEdM
X0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgotICAgICAgICBjYXNlIEdMX0NPTVBSRVNT
RURfUkdCQV9TM1RDX0RYVDNfQU5HTEU6Ci0gICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUNV9BTkdMRToKLSAgICAgICAgY2FzZSBHTF9FVEMxX1JHQjhfTE9TU1lfREVDT0RF
X0FOR0xFOgotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGNhc2UgR0xfUkVOREVS
QlVGRkVSX1dJRFRIOgorICAgICAgICBjYXNlIEdMX1JFTkRFUkJVRkZFUl9IRUlHSFQ6CisgICAg
ICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVDoKKyAgICAgICAgY2FzZSBH
TF9SRU5ERVJCVUZGRVJfUkVEX1NJWkU6CisgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0dS
RUVOX1NJWkU6CisgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0JMVUVfU0laRToKKyAgICAg
ICAgY2FzZSBHTF9SRU5ERVJCVUZGRVJfQUxQSEFfU0laRToKKyAgICAgICAgY2FzZSBHTF9SRU5E
RVJCVUZGRVJfREVQVEhfU0laRToKKyAgICAgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVJfU1RFTkNJ
TF9TSVpFOgorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9SRU5ERVJCVUZG
RVJfU0FNUExFU19BTkdMRToKKyAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLmZyYW1lYnVmZmVyTXVsdGlzYW1wbGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEVycm9yKEdMX0lO
VkFMSURfRU5VTSwgIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIGlzIG5vdCBlbmFi
bGVkLiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBicmVhazsKIAogICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiVW5rbm93biBwbmFtZS4iKSk7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorCisgICAgaWYgKGxlbmd0aCkKKyAg
ICB7CisgICAgICAgICpsZW5ndGggPSAxOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZENvbXByZXNzZWRJbWFnZVNpemUoY29uc3QgVmFsaWRhdGlvbkNvbnRleHQgKmNv
bnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3Jt
YXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQpCitib29sIFZhbGlkYXRlR2V0
U2hhZGVyaXZCYXNlKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBzaGFkZXIsIEdMZW51bSBwbmFt
ZSwgR0xzaXplaSAqbGVuZ3RoKQogewotICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmZm9y
bWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oaW50ZXJuYWxGb3JtYXQpOwotICAg
IGlmICghZm9ybWF0SW5mby5jb21wcmVzc2VkKQorICAgIGlmIChsZW5ndGgpCiAgICAgewotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICpsZW5ndGggPSAwOwogICAgIH0KIAotICAgIGlm
ICh3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkKKyAgICBpZiAoR2V0VmFsaWRTaGFkZXIoY29udGV4
dCwgc2hhZGVyKSA9PSBudWxscHRyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIGlmIChDb21wcmVzc2VkVGV4dHVyZUZvcm1hdFJlcXVpcmVzRXhhY3RTaXplKGlu
dGVybmFsRm9ybWF0KSkKKyAgICBzd2l0Y2ggKHBuYW1lKQogICAgIHsKLSAgICAgICAgaWYgKChz
dGF0aWNfY2FzdDxHTHVpbnQ+KHdpZHRoKSA+IGZvcm1hdEluZm8uY29tcHJlc3NlZEJsb2NrV2lk
dGggJiYKLSAgICAgICAgICAgICB3aWR0aCAlIGZvcm1hdEluZm8uY29tcHJlc3NlZEJsb2NrV2lk
dGggIT0gMCkgfHwKLSAgICAgICAgICAgIChzdGF0aWNfY2FzdDxHTHVpbnQ+KGhlaWdodCkgPiBm
b3JtYXRJbmZvLmNvbXByZXNzZWRCbG9ja0hlaWdodCAmJgotICAgICAgICAgICAgIGhlaWdodCAl
IGZvcm1hdEluZm8uY29tcHJlc3NlZEJsb2NrSGVpZ2h0ICE9IDApKQotICAgICAgICB7CisgICAg
ICAgIGNhc2UgR0xfU0hBREVSX1RZUEU6CisgICAgICAgIGNhc2UgR0xfREVMRVRFX1NUQVRVUzoK
KyAgICAgICAgY2FzZSBHTF9DT01QSUxFX1NUQVRVUzoKKyAgICAgICAgY2FzZSBHTF9JTkZPX0xP
R19MRU5HVEg6CisgICAgICAgIGNhc2UgR0xfU0hBREVSX1NPVVJDRV9MRU5HVEg6CisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9M
RU5HVEhfQU5HTEU6CisgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50
cmFuc2xhdGVkU2hhZGVyU291cmNlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElE
X0VOVU0sICJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UgaXMgbm90IGVuYWJsZWQu
IikpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJVbmtub3duIHBuYW1lLiIpKTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQogICAgIH0KIAorICAgIGlmIChsZW5n
dGgpCisgICAgeworICAgICAgICAqbGVuZ3RoID0gMTsKKyAgICB9CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRRdWVyeVR5cGUoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHF1ZXJ5VHlwZSkKK2Jvb2wgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJCYXNlKENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xzaXplaSAqbGVuZ3RoKQogewot
ICAgIHN0YXRpY19hc3NlcnQoR0xfQU5ZX1NBTVBMRVNfUEFTU0VEID09IEdMX0FOWV9TQU1QTEVT
X1BBU1NFRF9FWFQsICJHTCBleHRlbnNpb24gZW51bXMgbm90IGVxdWFsLiIpOwotICAgIHN0YXRp
Y19hc3NlcnQoR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRSA9PSBHTF9BTllfU0FN
UExFU19QQVNTRURfQ09OU0VSVkFUSVZFX0VYVCwgIkdMIGV4dGVuc2lvbiBlbnVtcyBub3QgZXF1
YWwuIik7CisgICAgaWYgKGxlbmd0aCkKKyAgICB7CisgICAgICAgICpsZW5ndGggPSAwOworICAg
IH0KIAotICAgIHN3aXRjaCAocXVlcnlUeXBlKQorICAgIGlmICghVmFsaWRUZXh0dXJlVGFyZ2V0
KGNvbnRleHQsIHRhcmdldCkgJiYgIVZhbGlkVGV4dHVyZUV4dGVybmFsVGFyZ2V0KGNvbnRleHQs
IHRhcmdldCkpCiAgICAgewotICAgICAgY2FzZSBHTF9BTllfU0FNUExFU19QQVNTRUQ6Ci0gICAg
ICBjYXNlIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkU6Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlUSVZFU19XUklU
VEVOOgotICAgICAgICByZXR1cm4gKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA+PSAzKTsK
LSAgICAgIGNhc2UgR0xfVElNRV9FTEFQU0VEX0VYVDoKLSAgICAgICAgICByZXR1cm4gY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmRpc2pvaW50VGltZXJRdWVyeTsKLSAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFs
aWQgdGV4dHVyZSB0YXJnZXQiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci19Ci0K
LVByb2dyYW0gKkdldFZhbGlkUHJvZ3JhbShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaWQpCi17
Ci0gICAgLy8gRVMzIHNwZWMgKHNlY3Rpb24gMi4xMS4xKSAtLSAiQ29tbWFuZHMgdGhhdCBhY2Nl
cHQgc2hhZGVyIG9yIHByb2dyYW0gb2JqZWN0IG5hbWVzIHdpbGwgZ2VuZXJhdGUgdGhlCi0gICAg
Ly8gZXJyb3IgSU5WQUxJRF9WQUxVRSBpZiB0aGUgcHJvdmlkZWQgbmFtZSBpcyBub3QgdGhlIG5h
bWUgb2YgZWl0aGVyIGEgc2hhZGVyIG9yIHByb2dyYW0gb2JqZWN0IGFuZAotICAgIC8vIElOVkFM
SURfT1BFUkFUSU9OIGlmIHRoZSBwcm92aWRlZCBuYW1lIGlkZW50aWZpZXMgYW4gb2JqZWN0IHRo
YXQgaXMgbm90IHRoZSBleHBlY3RlZCB0eXBlLiIKIAotICAgIFByb2dyYW0gKnZhbGlkUHJvZ3Jh
bSA9IGNvbnRleHQtPmdldFByb2dyYW0oaWQpOworICAgIGlmIChjb250ZXh0LT5nZXRUYXJnZXRU
ZXh0dXJlKHRhcmdldCkgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIC8vIFNob3VsZCBvbmx5
IGJlIHBvc3NpYmxlIGZvciBleHRlcm5hbCB0ZXh0dXJlcworICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJObyB0ZXh0dXJlIGJvdW5kLiIpKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAotICAgIGlmICghdmFsaWRQcm9ncmFtKQorICAg
IHN3aXRjaCAocG5hbWUpCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyKGlk
KSkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoCi0gICAgICAg
ICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFeHBlY3RlZCBhIHByb2dyYW0g
bmFtZSwgYnV0IGZvdW5kIGEgc2hhZGVyIG5hbWUiKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxz
ZQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX1ZBTFVFLCAiUHJvZ3JhbSBuYW1lIGlzIG5vdCB2YWxpZCIpKTsKLSAgICAgICAgfQot
ICAgIH0KKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BR19GSUxURVI6CisgICAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9NSU5fRklMVEVSOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9TOgor
ICAgICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9UOgorICAgICAgICAgICAgYnJlYWs7CiAKLSAg
ICByZXR1cm4gdmFsaWRQcm9ncmFtOwotfQorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfVVNBR0Vf
QU5HTEU6CisgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJl
VXNhZ2UpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoCisgICAgICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkdMX0FOR0xF
X3RleHR1cmVfdXNhZ2UgaXMgbm90IGVuYWJsZWQuIikpOworICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwogCi1TaGFkZXIgKkdl
dFZhbGlkU2hhZGVyKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpZCkKLXsKLSAgICAvLyBTZWUg
VmFsaWRQcm9ncmFtIGZvciBzcGVjIGRldGFpbHMuCisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9N
QVhfQU5JU09UUk9QWV9FWFQ6CisgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS50ZXh0dXJlRmlsdGVyQW5pc290cm9waWMpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEVycm9yKEdM
X0lOVkFMSURfRU5VTSwgIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyBpcyBub3Qg
ZW5hYmxlZC4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYnJlYWs7CiAKLSAgICBTaGFkZXIgKnZhbGlkU2hhZGVyID0gY29udGV4
dC0+Z2V0U2hhZGVyKGlkKTsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0lNTVVUQUJMRV9GT1JN
QVQ6CisgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAz
ICYmICFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZVN0b3JhZ2UpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAg
ICAgICAgIEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkdMX0VYVF90ZXh0dXJlX3N0b3JhZ2UgaXMg
bm90IGVuYWJsZWQuIikpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgaWYgKCF2YWxpZFNoYWRlcikKLSAgICB7
Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRQcm9ncmFtKGlkKSkKLSAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoCi0gICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04sICJFeHBlY3RlZCBhIHNoYWRlciBuYW1lLCBidXQgZm91bmQgYSBwcm9n
cmFtIG5hbWUiKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiU2hhZGVy
IG5hbWUgaXMgaW52YWxpZCIpKTsKLSAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1RFWFRVUkVf
V1JBUF9SOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfSU1NVVRBQkxFX0xFVkVMUzoKKyAgICAg
ICAgY2FzZSBHTF9URVhUVVJFX1NXSVpaTEVfUjoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX1NX
SVpaTEVfRzoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX1NXSVpaTEVfQjoKKyAgICAgICAgY2Fz
ZSBHTF9URVhUVVJFX1NXSVpaTEVfQToKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0JBU0VfTEVW
RUw6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfTEVWRUw6CisgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV9NSU5fTE9EOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUFYX0xPRDoKKyAgICAg
ICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfTU9ERToKKyAgICAgICAgY2FzZSBHTF9URVhUVVJF
X0NPTVBBUkVfRlVOQzoKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZl
cnNpb24oKSA8IDMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAicG5hbWUgcmVxdWlyZXMgT3BlbkdMIEVT
IDMuMC4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIlVua25vd24gcG5hbWUuIikp
OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHJldHVybiB2YWxpZFNo
YWRlcjsKKyAgICBpZiAobGVuZ3RoKQorICAgIHsKKyAgICAgICAgKmxlbmd0aCA9IDE7CisgICAg
fQorICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQXR0YWNobWVudFRhcmdldChn
bDo6Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIGF0dGFjaG1lbnQpCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgUGFyYW1UeXBlPgorYm9vbCBWYWxpZGF0ZVRleHR1cmVXcmFwTW9kZVZhbHVlKENvbnRleHQg
KmNvbnRleHQsIFBhcmFtVHlwZSAqcGFyYW1zLCBib29sIGlzRXh0ZXJuYWxUZXh0dXJlVGFyZ2V0
KQogewotICAgIGlmIChhdHRhY2htZW50ID49IEdMX0NPTE9SX0FUVEFDSE1FTlQwX0VYVCAmJiBh
dHRhY2htZW50IDw9IEdMX0NPTE9SX0FUVEFDSE1FTlQxNV9FWFQpCi0gICAgewotICAgICAgICBj
b25zdCB1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50ID0gKGF0dGFjaG1lbnQgLSBHTF9DT0xP
Ul9BVFRBQ0hNRU5UMF9FWFQpOwotCi0gICAgICAgIGlmIChjb2xvckF0dGFjaG1lbnQgPj0gY29u
dGV4dC0+Z2V0Q2FwcygpLm1heENvbG9yQXR0YWNobWVudHMpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlCisgICAgc3dp
dGNoIChDb252ZXJ0VG9HTGVudW0ocGFyYW1zWzBdKSkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAo
YXR0YWNobWVudCkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfREVQVEhfQVRUQUNITUVO
VDoKLSAgICAgICAgICBjYXNlIEdMX1NURU5DSUxfQVRUQUNITUVOVDoKKyAgICAgICAgY2FzZSBH
TF9DTEFNUF9UT19FREdFOgogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBjYXNlIEdM
X0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVDoKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRD
bGllbnRWZXJzaW9uKCkgPCAzKQorICAgICAgICBjYXNlIEdMX1JFUEVBVDoKKyAgICAgICAgY2Fz
ZSBHTF9NSVJST1JFRF9SRVBFQVQ6CisgICAgICAgICAgICBpZiAoaXNFeHRlcm5hbFRleHR1cmVU
YXJnZXQpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgICAgLy8gT0VTX0VHTF9p
bWFnZV9leHRlcm5hbCBzcGVjaWZpZXMgdGhpcyBlcnJvci4KKyAgICAgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgR0xfSU5WQUxJRF9F
TlVNLCAiZXh0ZXJuYWwgdGV4dHVyZXMgb25seSBzdXBwb3J0IENMQU1QX1RPX0VER0Ugd3JhcCBt
b2RlIikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVN
LCAiVW5rbm93biBwYXJhbSB2YWx1ZS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVJl
bmRlcmJ1ZmZlclN0b3JhZ2VQYXJhbWV0ZXJzQmFzZShnbDo6Q29udGV4dCAqY29udGV4dCwgR0xl
bnVtIHRhcmdldCwgR0xzaXplaSBzYW1wbGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0KQordGVtcGxhdGUgPHR5cGVuYW1lIFBhcmFtVHlwZT4KK2Jvb2wgVmFs
aWRhdGVUZXh0dXJlTWluRmlsdGVyVmFsdWUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1UeXBlICpwYXJhbXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNFeHRlcm5hbFRleHR1cmVUYXJnZXQpCiB7Ci0g
ICAgc3dpdGNoICh0YXJnZXQpCisgICAgc3dpdGNoIChDb252ZXJ0VG9HTGVudW0ocGFyYW1zWzBd
KSkKICAgICB7Ci0gICAgICBjYXNlIEdMX1JFTkRFUkJVRkZFUjoKLSAgICAgICAgYnJlYWs7Ci0g
ICAgICBkZWZhdWx0OgotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZB
TElEX0VOVU0pKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICAgICAgY2FzZSBH
TF9ORUFSRVNUOgorICAgICAgICBjYXNlIEdMX0xJTkVBUjoKKyAgICAgICAgICAgIGJyZWFrOwog
Ci0gICAgaWYgKHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwIHx8IHNhbXBsZXMgPCAwKQotICAgIHsK
LSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgICAgICBjYXNlIEdMX05FQVJFU1RfTUlQ
TUFQX05FQVJFU1Q6CisgICAgICAgIGNhc2UgR0xfTElORUFSX01JUE1BUF9ORUFSRVNUOgorICAg
ICAgICBjYXNlIEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUjoKKyAgICAgICAgY2FzZSBHTF9MSU5F
QVJfTUlQTUFQX0xJTkVBUjoKKyAgICAgICAgICAgIGlmIChpc0V4dGVybmFsVGV4dHVyZVRhcmdl
dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBPRVNfRUdMX2ltYWdlX2V4dGVy
bmFsIHNwZWNpZmllcyB0aGlzIGVycm9yLgorICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKAorICAgICAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX0VOVU0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICJleHRlcm5hbCB0ZXh0dXJlcyBvbmx5IHN1cHBvcnQgTkVB
UkVTVCBhbmQgTElORUFSIGZpbHRlcmluZyIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKIAotICAgIGNvbnN0IFRleHR1
cmVDYXBzICZmb3JtYXRDYXBzID0gY29udGV4dC0+Z2V0VGV4dHVyZUNhcHMoKS5nZXQoaW50ZXJu
YWxmb3JtYXQpOwotICAgIGlmICghZm9ybWF0Q2Fwcy5yZW5kZXJhYmxlKQotICAgIHsKLSAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIlVua25vd24gcGFyYW0gdmFsdWUuIikp
OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIC8vIEFOR0xFX2ZyYW1l
YnVmZmVyX211bHRpc2FtcGxlIGRvZXMgbm90IGV4cGxpY2l0bHkgc3RhdGUgdGhhdCB0aGUgaW50
ZXJuYWwgZm9ybWF0IG11c3QgYmUKLSAgICAvLyBzaXplZCBidXQgaXQgZG9lcyBzdGF0ZSB0aGF0
IHRoZSBmb3JtYXQgbXVzdCBiZSBpbiB0aGUgRVMyLjAgc3BlYyB0YWJsZSA0LjUgd2hpY2ggY29u
dGFpbnMKLSAgICAvLyBvbmx5IHNpemVkIGludGVybmFsIGZvcm1hdHMuCi0gICAgY29uc3QgZ2w6
OkludGVybmFsRm9ybWF0ICZmb3JtYXRJbmZvID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhp
bnRlcm5hbGZvcm1hdCk7Ci0gICAgaWYgKGZvcm1hdEluZm8ucGl4ZWxCeXRlcyA9PSAwKQotICAg
IHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CiAKLSAg
ICBpZiAoc3RhdGljX2Nhc3Q8R0x1aW50PihzdGQ6Om1heCh3aWR0aCwgaGVpZ2h0KSkgPiBjb250
ZXh0LT5nZXRDYXBzKCkubWF4UmVuZGVyYnVmZmVyU2l6ZSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBQ
YXJhbVR5cGU+Citib29sIFZhbGlkYXRlVGV4dHVyZU1hZ0ZpbHRlclZhbHVlKENvbnRleHQgKmNv
bnRleHQsIFBhcmFtVHlwZSAqcGFyYW1zKQoreworICAgIHN3aXRjaCAoQ29udmVydFRvR0xlbnVt
KHBhcmFtc1swXSkpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgICAg
IGNhc2UgR0xfTkVBUkVTVDoKKyAgICAgICAgY2FzZSBHTF9MSU5FQVI6CisgICAgICAgICAgICBi
cmVhazsKIAotICAgIEdMdWludCBoYW5kbGUgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFJlbmRl
cmJ1ZmZlcklkKCk7Ci0gICAgaWYgKGhhbmRsZSA9PSAwKQotICAgIHsKLSAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiVW5rbm93biBwYXJhbSB2YWx1ZS4iKSk7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVSZW5kZXJidWZmZXJTdG9yYWdlUGFyYW1ldGVyc0FOR0xFKGdsOjpDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHNpemVpIHNhbXBsZXMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQordGVtcGxhdGUgPHR5cGVuYW1lIFBh
cmFtVHlwZT4KK2Jvb2wgVmFsaWRhdGVUZXh0dXJlQ29tcGFyZU1vZGVWYWx1ZShDb250ZXh0ICpj
b250ZXh0LCBQYXJhbVR5cGUgKnBhcmFtcykKIHsKLSAgICBBU1NFUlQoc2FtcGxlcyA9PSAwIHx8
IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5mcmFtZWJ1ZmZlck11bHRpc2FtcGxlKTsKLQotICAg
IC8vIEFOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIHN0YXRlcyB0aGF0IHRoZSB2YWx1ZSBv
ZiBzYW1wbGVzIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsCi0gICAgLy8gdG8gTUFYX1NBTVBM
RVNfQU5HTEUgKENvbnRleHQ6OmdldENhcHMoKS5tYXhTYW1wbGVzKSBvdGhlcndpc2UgR0xfSU5W
QUxJRF9WQUxVRSBpcwotICAgIC8vIGdlbmVyYXRlZC4KLSAgICBpZiAoc3RhdGljX2Nhc3Q8R0x1
aW50PihzYW1wbGVzKSA+IGNvbnRleHQtPmdldENhcHMoKS5tYXhTYW1wbGVzKQorICAgIC8vIEFj
Y2VwdGFibGUgbW9kZSBwYXJhbWV0ZXJzIGZyb20gR0xFUyAzLjAuMiBzcGVjLCB0YWJsZSAzLjE3
CisgICAgc3dpdGNoIChDb252ZXJ0VG9HTGVudW0ocGFyYW1zWzBdKSkKICAgICB7Ci0gICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICAgICAgY2FzZSBHTF9OT05FOgorICAgICAgICBjYXNl
IEdMX0NPTVBBUkVfUkVGX1RPX1RFWFRVUkU6CisgICAgICAgICAgICBicmVhazsKIAotICAgIC8v
IEFOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIHN0YXRlcyBHTF9PVVRfT0ZfTUVNT1JZIGlz
IGdlbmVyYXRlZCBvbiBhIGZhaWx1cmUgdG8gY3JlYXRlCi0gICAgLy8gdGhlIHNwZWNpZmllZCBz
dG9yYWdlLiBUaGlzIGlzIGRpZmZlcmVudCB0aGFuIEVTIDMuMCBpbiB3aGljaCBhIHNhbXBsZSBu
dW1iZXIgaGlnaGVyCi0gICAgLy8gdGhhbiB0aGUgbWF4aW11bSBzYW1wbGUgbnVtYmVyIHN1cHBv
cnRlZCAgYnkgdGhpcyBmb3JtYXQgZ2VuZXJhdGVzIGEgR0xfSU5WQUxJRF9WQUxVRS4KLSAgICAv
LyBUaGUgVGV4dHVyZUNhcHM6OmdldE1heFNhbXBsZXMgbWV0aG9kIGlzIG9ubHkgZ3VhcmVudGVl
ZCB0byBiZSB2YWxpZCB3aGVuIHRoZSBjb250ZXh0IGlzIEVTMy4KLSAgICBpZiAoY29udGV4dC0+
Z2V0Q2xpZW50VmVyc2lvbigpID49IDMpCi0gICAgewotICAgICAgICBjb25zdCBUZXh0dXJlQ2Fw
cyAmZm9ybWF0Q2FwcyA9IGNvbnRleHQtPmdldFRleHR1cmVDYXBzKCkuZ2V0KGludGVybmFsZm9y
bWF0KTsKLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PEdMdWludD4oc2FtcGxlcykgPiBmb3JtYXRD
YXBzLmdldE1heFNhbXBsZXMoKSkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfT1VUX09GX01FTU9SWSkpOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiVW5r
bm93biBwYXJhbSB2YWx1ZS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KICAgICB9CiAKLSAgICByZXR1cm4gVmFsaWRhdGVSZW5kZXJidWZmZXJTdG9yYWdlUGFyYW1l
dGVyc0Jhc2UoY29udGV4dCwgdGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlclBhcmFtZXRlcnMoZ2w6OkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJn
ZXQsIEdMZW51bSBhdHRhY2htZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBHTHVpbnQgcmVuZGVyYnVm
ZmVyKQordGVtcGxhdGUgPHR5cGVuYW1lIFBhcmFtVHlwZT4KK2Jvb2wgVmFsaWRhdGVUZXh0dXJl
Q29tcGFyZUZ1bmNWYWx1ZShDb250ZXh0ICpjb250ZXh0LCBQYXJhbVR5cGUgKnBhcmFtcykKIHsK
LSAgICBpZiAoIVZhbGlkRnJhbWVidWZmZXJUYXJnZXQodGFyZ2V0KSkKLSAgICB7Ci0gICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9
IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0VGFyZ2V0RnJhbWVidWZmZXIodGFyZ2V0KTsKLQotICAg
IEFTU0VSVChmcmFtZWJ1ZmZlcik7Ci0gICAgaWYgKGZyYW1lYnVmZmVyLT5pZCgpID09IDApCi0g
ICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwgIkNhbm5vdCBjaGFuZ2UgZGVmYXVsdCBGQk8ncyBhdHRhY2htZW50cyIpKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmICghVmFsaWRhdGVBdHRhY2htZW50VGFy
Z2V0KGNvbnRleHQsIGF0dGFjaG1lbnQpKQorICAgIC8vIEFjY2VwdGFibGUgZnVuY3Rpb24gcGFy
YW1ldGVycyBmcm9tIEdMRVMgMy4wLjIgc3BlYywgdGFibGUgMy4xNworICAgIHN3aXRjaCAoQ29u
dmVydFRvR0xlbnVtKHBhcmFtc1swXSkpCiAgICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQorICAgICAgICBjYXNlIEdMX0xFUVVBTDoKKyAgICAgICAgY2FzZSBHTF9HRVFVQUw6Cisg
ICAgICAgIGNhc2UgR0xfTEVTUzoKKyAgICAgICAgY2FzZSBHTF9HUkVBVEVSOgorICAgICAgICBj
YXNlIEdMX0VRVUFMOgorICAgICAgICBjYXNlIEdMX05PVEVRVUFMOgorICAgICAgICBjYXNlIEdM
X0FMV0FZUzoKKyAgICAgICAgY2FzZSBHTF9ORVZFUjoKKyAgICAgICAgICAgIGJyZWFrOwogCi0g
ICAgLy8gW09wZW5HTCBFUyAyLjAuMjVdIFNlY3Rpb24gNC40LjMgcGFnZSAxMTIKLSAgICAvLyBb
T3BlbkdMIEVTIDMuMC4yXSBTZWN0aW9uIDQuNC4yIHBhZ2UgMjAxCi0gICAgLy8gJ3JlbmRlcmJ1
ZmZlcicgbXVzdCBiZSBlaXRoZXIgemVybyBvciB0aGUgbmFtZSBvZiBhbiBleGlzdGluZyByZW5k
ZXJidWZmZXIgb2JqZWN0IG9mCi0gICAgLy8gdHlwZSAncmVuZGVyYnVmZmVydGFyZ2V0Jywgb3Ro
ZXJ3aXNlIGFuIElOVkFMSURfT1BFUkFUSU9OIGVycm9yIGlzIGdlbmVyYXRlZC4KLSAgICBpZiAo
cmVuZGVyYnVmZmVyICE9IDApCi0gICAgewotICAgICAgICBpZiAoIWNvbnRleHQtPmdldFJlbmRl
cmJ1ZmZlcihyZW5kZXJidWZmZXIpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVN
LCAiVW5rbm93biBwYXJhbSB2YWx1ZS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUJs
aXRGcmFtZWJ1ZmZlclBhcmFtZXRlcnMoZ2w6OkNvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzcmNYMCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNyY1kwLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3JjWDEsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBzcmNZMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGRzdFgwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgZHN0WTAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBkc3RYMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGRzdFkxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi
aXRmaWVsZCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGZpbHRlcikKK3RlbXBsYXRlIDx0eXBlbmFtZSBQYXJhbVR5cGU+Citib29sIFZhbGlkYXRl
VGV4UGFyYW1ldGVyQmFzZShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtVHlwZSAqcGFyYW1zKQogewot
ICAgIHN3aXRjaCAoZmlsdGVyKQorICAgIGlmICghVmFsaWRUZXh0dXJlVGFyZ2V0KGNvbnRleHQs
IHRhcmdldCkgJiYgIVZhbGlkVGV4dHVyZUV4dGVybmFsVGFyZ2V0KGNvbnRleHQsIHRhcmdldCkp
CiAgICAgewotICAgICAgY2FzZSBHTF9ORUFSRVNUOgotICAgICAgICBicmVhazsKLSAgICAgIGNh
c2UgR0xfTElORUFSOgotICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIHRleHR1cmUg
dGFyZ2V0IikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKChtYXNr
ICYgfihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUIHwgR0xfREVQ
VEhfQlVGRkVSX0JJVCkpICE9IDApCisgICAgaWYgKGNvbnRleHQtPmdldFRhcmdldFRleHR1cmUo
dGFyZ2V0KSA9PSBudWxscHRyKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAvLyBTaG91bGQgb25seSBiZSBwb3Nz
aWJsZSBmb3IgZXh0ZXJuYWwgdGV4dHVyZXMKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiTm8gdGV4dHVyZSBib3VuZC4iKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAobWFzayA9PSAwKQorICAgIGNvbnN0IEdMc2l6
ZWkgbWluQnVmU2l6ZSA9IDE7CisgICAgaWYgKGJ1ZlNpemUgPj0gMCAmJiBidWZTaXplIDwgbWlu
QnVmU2l6ZSkKICAgICB7Ci0gICAgICAgIC8vIEVTMy4wIHNwZWMsIHNlY3Rpb24gNC4zLjIgc3Bl
Y2lmaWVzIHRoYXQgYSBtYXNrIG9mIHplcm8gaXMgdmFsaWQgYW5kIG5vCi0gICAgICAgIC8vIGJ1
ZmZlcnMgYXJlIGNvcGllZC4KKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAg
ICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgImJ1ZlNpemUgbXVzdCBiZSBhdCBsZWFz
dCAlaS4iLCBtaW5CdWZTaXplKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAg
ICAvLyBFUzMuMCBzcGVjLCBzZWN0aW9uIDQuMy4yIHN0YXRlcyB0aGF0IGxpbmVhciBmaWx0ZXJp
bmcgaXMgb25seSBhdmFpbGFibGUgZm9yIHRoZQotICAgIC8vIGNvbG9yIGJ1ZmZlciwgbGVhdmlu
ZyBvbmx5IG5lYXJlc3QgYmVpbmcgdW5maWx0ZXJlZCBmcm9tIGFib3ZlCi0gICAgaWYgKChtYXNr
ICYgfkdMX0NPTE9SX0JVRkZFUl9CSVQpICE9IDAgJiYgZmlsdGVyICE9IEdMX05FQVJFU1QpCisg
ICAgc3dpdGNoIChwbmFtZSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgY2FzZSBHTF9URVhUVVJFX1dSQVBfUjoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX1NXSVpa
TEVfUjoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX1NXSVpaTEVfRzoKKyAgICAgICAgY2FzZSBH
TF9URVhUVVJFX1NXSVpaTEVfQjoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX1NXSVpaTEVfQToK
KyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0JBU0VfTEVWRUw6CisgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV9NQVhfTEVWRUw6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX01PREU6Cisg
ICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkM6CisgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV9NSU5fTE9EOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUFYX0xPRDoKKyAgICAgICAg
ICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9FTlVNLCAicG5hbWUgcmVxdWlyZXMgT3BlbkdMIEVTIDMuMC4iKSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHRhcmdldCA9
PSBHTF9URVhUVVJFX0VYVEVSTkFMX09FUyAmJgorICAgICAgICAgICAgICAgICFjb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuZWdsSW1hZ2VFeHRlcm5hbEVzc2wzKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRVMzIHRleHR1cmUg
cGFyYW1ldGVycyBhcmUgbm90IGF2YWlsYWJsZSB3aXRob3V0ICIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbF9lc3Ns
My4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAotICAgIGlmIChjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFJlYWRGcmFtZWJ1ZmZlcigp
LT5pZCgpID09IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0RHJhd0ZyYW1lYnVmZmVyKCktPmlkKCkp
CisgICAgc3dpdGNoIChwbmFtZSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1M6CisgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV9XUkFQX1Q6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1I6CisgICAgICAgICAg
ICBpZiAoIVZhbGlkYXRlVGV4dHVyZVdyYXBNb2RlVmFsdWUoY29udGV4dCwgcGFyYW1zLCB0YXJn
ZXQgPT0gR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMpKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwog
Ci0gICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpyZWFkRnJhbWVidWZmZXIgPSBjb250ZXh0LT5n
ZXRTdGF0ZSgpLmdldFJlYWRGcmFtZWJ1ZmZlcigpOwotICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZl
ciAqZHJhd0ZyYW1lYnVmZmVyID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXREcmF3RnJhbWVidWZm
ZXIoKTsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX01JTl9GSUxURVI6CisgICAgICAgICAgICBp
ZiAoIVZhbGlkYXRlVGV4dHVyZU1pbkZpbHRlclZhbHVlKGNvbnRleHQsIHBhcmFtcywgdGFyZ2V0
ID09IEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKIAot
ICAgIGlmICghcmVhZEZyYW1lYnVmZmVyIHx8ICFkcmF3RnJhbWVidWZmZXIpCi0gICAgewotICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0ZSQU1FQlVGRkVSX09Q
RVJBVElPTikpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgICAgICBjYXNlIEdM
X1RFWFRVUkVfTUFHX0ZJTFRFUjoKKyAgICAgICAgICAgIGlmICghVmFsaWRhdGVUZXh0dXJlTWFn
RmlsdGVyVmFsdWUoY29udGV4dCwgcGFyYW1zKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKIAot
ICAgIGlmICghcmVhZEZyYW1lYnVmZmVyLT5jaGVja1N0YXR1cyhjb250ZXh0LT5nZXREYXRhKCkp
KQotICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9G
UkFNRUJVRkZFUl9PUEVSQVRJT04pKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAg
ICAgICAgY2FzZSBHTF9URVhUVVJFX1VTQUdFX0FOR0xFOgorICAgICAgICAgICAgc3dpdGNoIChD
b252ZXJ0VG9HTGVudW0ocGFyYW1zWzBdKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBjYXNlIEdMX05PTkU6CisgICAgICAgICAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRB
Q0hNRU5UX0FOR0xFOgorICAgICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgIGlmICghZHJh
d0ZyYW1lYnVmZmVyLT5jaGVja1N0YXR1cyhjb250ZXh0LT5nZXREYXRhKCkpKQotICAgIHsKLSAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9P
UEVSQVRJT04pKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICAgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX0VOVU0sICJVbmtub3duIHBhcmFtIHZhbHVlLiIpKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7
CiAKLSAgICBpZiAoZHJhd0ZyYW1lYnVmZmVyLT5nZXRTYW1wbGVzKGNvbnRleHQtPmdldERhdGEo
KSkgIT0gMCkKLSAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgICAg
IGNhc2UgR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6CisgICAgICAgICAgICBpZiAoIWNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlRmlsdGVyQW5pc290cm9waWMpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAg
ICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkdMX0VYVF90ZXh0dXJlX2FuaXNvdHJv
cGljIGlzIG5vdCBlbmFibGVkLiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICB9CiAKLSAgICBib29sIHNhbWVCb3VuZHMgPSBzcmNYMCA9PSBkc3RYMCAmJiBz
cmNZMCA9PSBkc3RZMCAmJiBzcmNYMSA9PSBkc3RYMSAmJiBzcmNZMSA9PSBkc3RZMTsKKyAgICAg
ICAgICAgIC8vIHdlIGFzc3VtZSB0aGUgcGFyYW1ldGVyIHBhc3NlZCB0byB0aGlzIHZhbGlkYXRp
b24gbWV0aG9kIGlzIHRydW5jYXRlZCwgbm90IHJvdW5kZWQKKyAgICAgICAgICAgIGlmIChwYXJh
bXNbMF0gPCAxKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJNYXggYW5pc290cm9weSBtdXN0IGJlIGF0
IGxlYXN0IDEuIikpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgaWYgKG1hc2sgJiBHTF9DT0xPUl9CVUZGRVJf
QklUKQotICAgIHsKLSAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqcmVh
ZENvbG9yQnVmZmVyID0gcmVhZEZyYW1lYnVmZmVyLT5nZXRSZWFkQ29sb3JidWZmZXIoKTsKLSAg
ICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqZHJhd0NvbG9yQnVmZmVyID0g
ZHJhd0ZyYW1lYnVmZmVyLT5nZXRGaXJzdENvbG9yYnVmZmVyKCk7Ci0gICAgICAgIGNvbnN0IEV4
dGVuc2lvbnMgJmV4dGVuc2lvbnMgICAgICAgICAgICAgICAgICAgICA9IGNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKTsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX01JTl9MT0Q6CisgICAgICAgIGNh
c2UgR0xfVEVYVFVSRV9NQVhfTE9EOgorICAgICAgICAgICAgLy8gYW55IHZhbHVlIGlzIHBlcm1p
c3NpYmxlCisgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBpZiAocmVhZENvbG9yQnVmZmVy
ICYmIGRyYXdDb2xvckJ1ZmZlcikKLSAgICAgICAgewotICAgICAgICAgICAgR0xlbnVtIHJlYWRJ
bnRlcm5hbEZvcm1hdCA9IHJlYWRDb2xvckJ1ZmZlci0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsKLSAg
ICAgICAgICAgIGNvbnN0IEludGVybmFsRm9ybWF0ICZyZWFkRm9ybWF0SW5mbyA9IEdldEludGVy
bmFsRm9ybWF0SW5mbyhyZWFkSW50ZXJuYWxGb3JtYXQpOworICAgICAgICBjYXNlIEdMX1RFWFRV
UkVfQ09NUEFSRV9NT0RFOgorICAgICAgICAgICAgaWYgKCFWYWxpZGF0ZVRleHR1cmVDb21wYXJl
TW9kZVZhbHVlKGNvbnRleHQsIHBhcmFtcykpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CiAKLSAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGRyYXdidWZmZXJJZHggPSAwOwotICAgICAgICAgICAgICAg
ICBkcmF3YnVmZmVySWR4IDwgZHJhd0ZyYW1lYnVmZmVyLT5nZXREcmF3YnVmZmVyU3RhdGVDb3Vu
dCgpOyArK2RyYXdidWZmZXJJZHgpCisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX0ZV
TkM6CisgICAgICAgICAgICBpZiAoIVZhbGlkYXRlVGV4dHVyZUNvbXBhcmVGdW5jVmFsdWUoY29u
dGV4dCwgcGFyYW1zKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25zdCBGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnQgKmF0dGFjaG1lbnQgPQotICAgICAgICAgICAgICAgICAgICBkcmF3
RnJhbWVidWZmZXItPmdldERyYXdCdWZmZXIoZHJhd2J1ZmZlcklkeCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGF0dGFjaG1lbnQpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZHJhd0ludGVybmFsRm9ybWF0ICAgICAgICAgICAgPSBhdHRhY2htZW50LT5nZXRJ
bnRlcm5hbEZvcm1hdCgpOwotICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRlcm5hbEZvcm1h
dCAmZHJhd0Zvcm1hdEluZm8gPSBHZXRJbnRlcm5hbEZvcm1hdEluZm8oZHJhd0ludGVybmFsRm9y
bWF0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgICAgICAgICAvLyBUaGUgR0wgRVMgMy4wLjIg
c3BlYyAocGcgMTkzKSBzdGF0ZXMgdGhhdDoKLSAgICAgICAgICAgICAgICAgICAgLy8gMSkgSWYg
dGhlIHJlYWQgYnVmZmVyIGlzIGZpeGVkIHBvaW50IGZvcm1hdCwgdGhlIGRyYXcgYnVmZmVyIG11
c3QgYmUgYXMgd2VsbAotICAgICAgICAgICAgICAgICAgICAvLyAyKSBJZiB0aGUgcmVhZCBidWZm
ZXIgaXMgYW4gdW5zaWduZWQgaW50ZWdlciBmb3JtYXQsIHRoZSBkcmF3IGJ1ZmZlciBtdXN0IGJl
IGFzIHdlbGwKLSAgICAgICAgICAgICAgICAgICAgLy8gMykgSWYgdGhlIHJlYWQgYnVmZmVyIGlz
IGEgc2lnbmVkIGludGVnZXIgZm9ybWF0LCB0aGUgZHJhdyBidWZmZXIgbXVzdCBiZSBhcyB3ZWxs
Ci0gICAgICAgICAgICAgICAgICAgIC8vIENoYW5nZXMgd2l0aCBFWFRfY29sb3JfYnVmZmVyX2Zs
b2F0OgotICAgICAgICAgICAgICAgICAgICAvLyBDYXNlIDEpIGlzIGNoYW5nZWQgdG8gZml4ZWQg
cG9pbnQgT1IgZmxvYXRpbmcgcG9pbnQKLSAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHJlYWRD
b21wb25lbnRUeXBlID0gcmVhZEZvcm1hdEluZm8uY29tcG9uZW50VHlwZTsKLSAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGRyYXdDb21wb25lbnRUeXBlID0gZHJhd0Zvcm1hdEluZm8uY29tcG9u
ZW50VHlwZTsKLSAgICAgICAgICAgICAgICAgICAgYm9vbCByZWFkRml4ZWRQb2ludCA9IChyZWFk
Q29tcG9uZW50VHlwZSA9PSBHTF9VTlNJR05FRF9OT1JNQUxJWkVEIHx8Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZENvbXBvbmVudFR5cGUgPT0gR0xfU0lH
TkVEX05PUk1BTElaRUQpOwotICAgICAgICAgICAgICAgICAgICBib29sIGRyYXdGaXhlZFBvaW50
ID0gKGRyYXdDb21wb25lbnRUeXBlID09IEdMX1VOU0lHTkVEX05PUk1BTElaRUQgfHwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3Q29tcG9uZW50VHlwZSA9
PSBHTF9TSUdORURfTk9STUFMSVpFRCk7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9TV0laWkxF
X1I6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9TV0laWkxFX0c6CisgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV9TV0laWkxFX0I6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9TV0laWkxFX0E6Cisg
ICAgICAgICAgICBzd2l0Y2ggKENvbnZlcnRUb0dMZW51bShwYXJhbXNbMF0pKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGNhc2UgR0xfUkVEOgorICAgICAgICAgICAgICAgIGNhc2Ug
R0xfR1JFRU46CisgICAgICAgICAgICAgICAgY2FzZSBHTF9CTFVFOgorICAgICAgICAgICAgICAg
IGNhc2UgR0xfQUxQSEE6CisgICAgICAgICAgICAgICAgY2FzZSBHTF9aRVJPOgorICAgICAgICAg
ICAgICAgIGNhc2UgR0xfT05FOgorICAgICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAg
ICAgICAgICAgICAgICBpZiAoZXh0ZW5zaW9ucy5jb2xvckJ1ZmZlckZsb2F0KQotICAgICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBib29sIHJlYWRGaXhlZE9yRmxv
YXQgPSAocmVhZEZpeGVkUG9pbnQgfHwgcmVhZENvbXBvbmVudFR5cGUgPT0gR0xfRkxPQVQpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkcmF3Rml4ZWRPckZsb2F0ID0gKGRyYXdGaXhl
ZFBvaW50IHx8IGRyYXdDb21wb25lbnRUeXBlID09IEdMX0ZMT0FUKTsKKyAgICAgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX0VOVU0sICJVbmtub3duIHBhcmFtIHZhbHVlLiIpKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWFkRml4ZWRPckZsb2F0ICE9IGRyYXdG
aXhlZE9yRmxvYXQpCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIklmIHRoZSByZWFkIGJ1ZmZlciBjb250YWlucyBmaXhlZC1wb2ludCBvciAiCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0aW5n
LXBvaW50IHZhbHVlcywgdGhlIGRyYXcgYnVmZmVyICIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBhcyB3ZWxsLiIpKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAocmVhZEZpeGVkUG9pbnQgIT0gZHJhd0ZpeGVkUG9pbnQpCi0gICAgICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIklmIHRoZSByZWFkIGJ1ZmZlciBjb250YWlucyBmaXhlZC1wb2ludCAi
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFs
dWVzLCB0aGUgZHJhdyBidWZmZXIgbXVzdCBhcyB3ZWxsLiIpKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICBjYXNl
IEdMX1RFWFRVUkVfQkFTRV9MRVZFTDoKKyAgICAgICAgICAgIGlmIChwYXJhbXNbMF0gPCAwKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfVkFMVUUsICJCYXNlIGxldmVsIG11c3QgYmUgYXQgbGVhc3QgMC4iKSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKHRhcmdldCA9PSBHTF9URVhUVVJFX0VYVEVSTkFMX09FUyAmJiBzdGF0aWNfY2FzdDxHTHVp
bnQ+KHBhcmFtc1swXSkgIT0gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04sICJCYXNlIGxldmVsIG11c3QgYmUgMCBmb3IgZXh0ZXJuYWwgdGV4dHVyZXMuIikp
OworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAgICAgIGlmIChyZWFkQ29tcG9uZW50VHlwZSA9
PSBHTF9VTlNJR05FRF9JTlQgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdDb21wb25l
bnRUeXBlICE9IEdMX1VOU0lHTkVEX0lOVCkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUFYX0xFVkVMOgorICAg
ICAgICAgICAgaWYgKHBhcmFtc1swXSA8IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIk1heCBsZXZl
bCBtdXN0IGJlIGF0IGxlYXN0IDAuIikpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAgICAg
IGlmIChyZWFkQ29tcG9uZW50VHlwZSA9PSBHTF9JTlQgJiYgZHJhd0NvbXBvbmVudFR5cGUgIT0g
R0xfSU5UKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX0VOVU0sICJVbmtub3duIHBuYW1lLiIpKTsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlYWRDb2xvckJ1ZmZlci0+
Z2V0U2FtcGxlcygpID4gMCAmJiAocmVhZEludGVybmFsRm9ybWF0ICE9IGRyYXdJbnRlcm5hbEZv
cm1hdCB8fCAhc2FtZUJvdW5kcykpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBQYXJhbVR5cGU+Citib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRl
ckJhc2UoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgc2FtcGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZT
aXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtVHlwZSAqcGFyYW1z
KQoreworICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCisgICAg
eworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAiQ29udGV4dCBkb2VzIG5vdCBzdXBwb3J0IE9wZW5HTCBFUyAzLjAu
IikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFjb250ZXh0LT5p
c1NhbXBsZXIoc2FtcGxlcikpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIlNhbXBsZXIgaXMgbm90IHZhbGlkLiIpKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGNvbnN0IEdMc2l6ZWkgbWluQnVmU2l6
ZSA9IDE7CisgICAgaWYgKGJ1ZlNpemUgPj0gMCAmJiBidWZTaXplIDwgbWluQnVmU2l6ZSkKKyAg
ICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sICJidWZTaXplIG11c3QgYmUgYXQgbGVhc3QgJWkuIiwgbWluQnVm
U2l6ZSkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3dpdGNoIChwbmFt
ZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1M6CisgICAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9XUkFQX1Q6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1I6CisgICAg
ICAgICAgICBpZiAoIVZhbGlkYXRlVGV4dHVyZVdyYXBNb2RlVmFsdWUoY29udGV4dCwgcGFyYW1z
LCBmYWxzZSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGlmICgocmVh
ZEZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9JTlQgfHwgcmVhZEZvcm1hdEluZm8uY29t
cG9uZW50VHlwZSA9PSBHTF9VTlNJR05FRF9JTlQpICYmIGZpbHRlciA9PSBHTF9MSU5FQVIpCisg
ICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NSU5fRklMVEVSOgorICAgICAgICAgICAgaWYgKCFWYWxp
ZGF0ZVRleHR1cmVNaW5GaWx0ZXJWYWx1ZShjb250ZXh0LCBwYXJhbXMsIGZhbHNlKSkKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgR0xl
bnVtIG1hc2tzW10gPSB7R0xfREVQVEhfQlVGRkVSX0JJVCwgR0xfU1RFTkNJTF9CVUZGRVJfQklU
fTsKLSAgICBHTGVudW0gYXR0YWNobWVudHNbXSA9IHtHTF9ERVBUSF9BVFRBQ0hNRU5ULCBHTF9T
VEVOQ0lMX0FUVEFDSE1FTlR9OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMjsgaSsrKQot
ICAgIHsKLSAgICAgICAgaWYgKG1hc2sgJiBtYXNrc1tpXSkKLSAgICAgICAgewotICAgICAgICAg
ICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqcmVhZEJ1ZmZlciA9IHJlYWRGcmFt
ZWJ1ZmZlci0+Z2V0QXR0YWNobWVudChhdHRhY2htZW50c1tpXSk7Ci0gICAgICAgICAgICBjb25z
dCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICpkcmF3QnVmZmVyID0gZHJhd0ZyYW1lYnVmZmVy
LT5nZXRBdHRhY2htZW50KGF0dGFjaG1lbnRzW2ldKTsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJF
X01BR19GSUxURVI6CisgICAgICAgICAgICBpZiAoIVZhbGlkYXRlVGV4dHVyZU1hZ0ZpbHRlclZh
bHVlKGNvbnRleHQsIHBhcmFtcykpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAg
ICAgIGlmIChyZWFkQnVmZmVyICYmIGRyYXdCdWZmZXIpCisgICAgICAgIGNhc2UgR0xfVEVYVFVS
RV9NSU5fTE9EOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUFYX0xPRDoKKyAgICAgICAgICAg
IC8vIGFueSB2YWx1ZSBpcyBwZXJtaXNzaWJsZQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfTU9ERToKKyAgICAgICAgICAgIGlmICghVmFsaWRh
dGVUZXh0dXJlQ29tcGFyZU1vZGVWYWx1ZShjb250ZXh0LCBwYXJhbXMpKQogICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGlmIChyZWFkQnVmZmVyLT5nZXRJbnRlcm5hbEZvcm1hdCgpICE9
IGRyYXdCdWZmZXItPmdldEludGVybmFsRm9ybWF0KCkpCi0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTikpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAgaWYgKHJlYWRCdWZmZXItPmdldFNh
bXBsZXMoKSA+IDAgJiYgIXNhbWVCb3VuZHMpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TikpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAg
fQorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ09NUEFSRV9GVU5DOgorICAgICAgICAgICAgaWYg
KCFWYWxpZGF0ZVRleHR1cmVDb21wYXJlRnVuY1ZhbHVlKGNvbnRleHQsIHBhcmFtcykpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQot
ICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiVW5rbm93
biBwbmFtZS4iKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJQYXJhbWV0ZXJzKENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSkKK2Jvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFy
YW1ldGVyQmFzZShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBzYW1wbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpICpsZW5ndGgpCiB7Ci0gICAgc3dpdGNoIChwbmFtZSkKKyAgICBpZiAobGVuZ3Ro
KQogICAgIHsKLSAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEOgotICAg
ICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX1NJWkU6Ci0gICAgICBjYXNlIEdMX1ZFUlRF
WF9BVFRSSUJfQVJSQVlfU1RSSURFOgotICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZ
X1RZUEU6Ci0gICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRDoKLSAg
ICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORzoKLSAgICAgIGNh
c2UgR0xfQ1VSUkVOVF9WRVJURVhfQVRUUklCOgotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgKmxlbmd0aCA9IDA7CisgICAgfQogCi0gICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJS
QVlfRElWSVNPUjoKLSAgICAgICAgLy8gRG9uJ3QgdmVyaWZ5IEVTMyBjb250ZXh0IGJlY2F1c2Ug
R0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJU09SX0FOR0xFIHVzZXMKLSAgICAgICAgLy8gdGhl
IHNhbWUgY29uc3RhbnQuCi0gICAgICAgIHN0YXRpY19hc3NlcnQoR0xfVkVSVEVYX0FUVFJJQl9B
UlJBWV9ESVZJU09SID09IEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNPUl9BTkdMRSwKLSAg
ICAgICAgICAgICAgICAgICAgICAiQU5HTEUgZXh0ZW5zaW9uIGVudW1zIG5vdCBlcXVhbCB0byBH
TCBlbnVtcy4iKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGNvbnRleHQtPmdldENs
aWVudE1ham9yVmVyc2lvbigpIDwgMykKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJDb250ZXh0IGRv
ZXMgbm90IHN1cHBvcnQgT3BlbkdMIEVTIDMuMC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CiAKLSAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9JTlRFR0VSOgotICAg
ICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKLSAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Cisg
ICAgaWYgKCFjb250ZXh0LT5pc1NhbXBsZXIoc2FtcGxlcikpCisgICAgeworICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIlNhbXBsZXIgaXMg
bm90IHZhbGlkLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN3aXRj
aCAocG5hbWUpCisgICAgeworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9TOgorICAgICAg
ICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9UOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9S
OgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUjoKKyAgICAgICAgY2FzZSBHTF9U
RVhUVVJFX01BR19GSUxURVI6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NSU5fTE9EOgorICAg
ICAgICBjYXNlIEdMX1RFWFRVUkVfTUFYX0xPRDoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NP
TVBBUkVfTU9ERToKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQzoKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJVbmtub3duIHBuYW1lLiIpKTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CiAKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxl
bmd0aCkKKyAgICB7CisgICAgICAgICpsZW5ndGggPSAxOwogICAgIH0KKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleFBhcmFtUGFyYW1ldGVycyhnbDo6Q29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSkKK2Jvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhB
dHRyaWJCYXNlKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHBvaW50ZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHB1cmVJbnRlZ2VyRW50cnlQb2ludCkK
IHsKLSAgICBzd2l0Y2ggKHBuYW1lKQorICAgIGlmIChsZW5ndGgpCiAgICAgewotICAgICAgY2Fz
ZSBHTF9URVhUVVJFX1dSQVBfUjoKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9TV0laWkxFX1I6Ci0g
ICAgICBjYXNlIEdMX1RFWFRVUkVfU1dJWlpMRV9HOgotICAgICAgY2FzZSBHTF9URVhUVVJFX1NX
SVpaTEVfQjoKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9TV0laWkxFX0E6Ci0gICAgICBjYXNlIEdM
X1RFWFRVUkVfQkFTRV9MRVZFTDoKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfTEVWRUw6Ci0g
ICAgICBjYXNlIEdMX1RFWFRVUkVfQ09NUEFSRV9NT0RFOgotICAgICAgY2FzZSBHTF9URVhUVVJF
X0NPTVBBUkVfRlVOQzoKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9NSU5fTE9EOgotICAgICAgY2Fz
ZSBHTF9URVhUVVJFX01BWF9MT0Q6Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJz
aW9uKCkgPCAzKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgfQotICAgICAgICBicmVhazsKKyAgICAgICAgKmxlbmd0aCA9IDA7CisgICAgfQogCi0gICAg
ICBkZWZhdWx0OiBicmVhazsKKyAgICBpZiAocHVyZUludGVnZXJFbnRyeVBvaW50ICYmIGNvbnRl
eHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKKyAgICB7CisgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJD
b250ZXh0IGRvZXMgbm90IHN1cHBvcnQgT3BlbkdMIEVTIDMuMC4iKSk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBzd2l0Y2ggKHBuYW1lKQorICAgIGlmIChpbmRleCA+PSBj
b250ZXh0LT5nZXRDYXBzKCkubWF4VmVydGV4QXR0cmlidXRlcykKICAgICB7Ci0gICAgICBjYXNl
IEdMX1RFWFRVUkVfV1JBUF9TOgotICAgICAgY2FzZSBHTF9URVhUVVJFX1dSQVBfVDoKLSAgICAg
IGNhc2UgR0xfVEVYVFVSRV9XUkFQX1I6Ci0gICAgICAgIHN3aXRjaCAocGFyYW0pCi0gICAgICAg
IHsKLSAgICAgICAgICBjYXNlIEdMX1JFUEVBVDoKLSAgICAgICAgICBjYXNlIEdMX0NMQU1QX1RP
X0VER0U6Ci0gICAgICAgICAgY2FzZSBHTF9NSVJST1JFRF9SRVBFQVQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoCisgICAg
ICAgICAgICBHTF9JTlZBTElEX1ZBTFVFLCAiaW5kZXggbXVzdCBiZSBsZXNzIHRoYW4gdGhlIHZh
bHVlIG9mIEdMX01BWF9WRVJURVhfQVRUUklCVVRFUy4iKSk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CiAKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9NSU5fRklMVEVSOgotICAgICAgICBz
d2l0Y2ggKHBhcmFtKQorICAgIGlmIChwb2ludGVyKQorICAgIHsKKyAgICAgICAgaWYgKHBuYW1l
ICE9IEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfUE9JTlRFUikKICAgICAgICAgewotICAgICAgICAg
IGNhc2UgR0xfTkVBUkVTVDoKLSAgICAgICAgICBjYXNlIEdMX0xJTkVBUjoKLSAgICAgICAgICBj
YXNlIEdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1Q6Ci0gICAgICAgICAgY2FzZSBHTF9MSU5FQVJf
TUlQTUFQX05FQVJFU1Q6Ci0gICAgICAgICAgY2FzZSBHTF9ORUFSRVNUX01JUE1BUF9MSU5FQVI6
Ci0gICAgICAgICAgY2FzZSBHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUjoKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIlVua25vd24gcG5hbWUuIikpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotCi0gICAg
ICBjYXNlIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUjoKLSAgICAgICAgc3dpdGNoIChwYXJhbSkKKyAg
ICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgc3dpdGNoIChwbmFtZSkKICAgICAgICAgewot
ICAgICAgICAgIGNhc2UgR0xfTkVBUkVTVDoKLSAgICAgICAgICBjYXNlIEdMX0xJTkVBUjoKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEOgorICAgICAgICAgICAgY2FzZSBHTF9W
RVJURVhfQVRUUklCX0FSUkFZX1NJWkU6CisgICAgICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRS
SUJfQVJSQVlfU1RSSURFOgorICAgICAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZ
X1RZUEU6CisgICAgICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpF
RDoKKyAgICAgICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElO
RzoKKyAgICAgICAgICAgIGNhc2UgR0xfQ1VSUkVOVF9WRVJURVhfQVRUUklCOgorICAgICAgICAg
ICAgICAgIGJyZWFrOwogCi0gICAgICBjYXNlIEdMX1RFWFRVUkVfVVNBR0VfQU5HTEU6Ci0gICAg
ICAgIHN3aXRjaCAocGFyYW0pCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX05PTkU6Ci0g
ICAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0FOR0xFOgotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX0RJVklTT1I6
CisgICAgICAgICAgICAgICAgc3RhdGljX2Fzc2VydCgKKyAgICAgICAgICAgICAgICAgICAgR0xf
VkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJU09SID09IEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRElW
SVNPUl9BTkdMRSwKKyAgICAgICAgICAgICAgICAgICAgIkFOR0xFIGV4dGVuc2lvbiBlbnVtcyBu
b3QgZXF1YWwgdG8gR0wgZW51bXMuIik7CisgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdl
dENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAmJgorICAgICAgICAgICAgICAgICAgICAhY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmluc3RhbmNlZEFycmF5cykKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
RU5VTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdM
X1ZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNPUiByZXF1aXJlcyBPcGVuR0wgRVMgIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMy4wIG9yIEdMX0FOR0xF
X2luc3RhbmNlZF9hcnJheXMuIikpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfSU5URUdFUjoKKyAgICAgICAgICAgICAgICBp
ZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNLCAicG5hbWUgcmVxdWlyZXMgT3BlbkdMIEVTIDMuMC4iKSk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiVW5rbm93biBwbmFtZS4iKSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIGJyZWFr
OworICAgIH0KIAotICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVDoKLSAg
ICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZUZpbHRlckFuaXNvdHJv
cGljKQorICAgIGlmIChsZW5ndGgpCisgICAgeworICAgICAgICBpZiAocG5hbWUgPT0gR0xfQ1VS
UkVOVF9WRVJURVhfQVRUUklCKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgICpsZW5ndGggPSA0OwogICAgICAgICB9Ci0KLSAgICAgICAgLy8gd2Ug
YXNzdW1lIHRoZSBwYXJhbWV0ZXIgcGFzc2VkIHRvIHRoaXMgdmFsaWRhdGlvbiBtZXRob2QgaXMg
dHJ1bmNhdGVkLCBub3Qgcm91bmRlZAotICAgICAgICBpZiAocGFyYW0gPCAxKQorICAgICAgICBl
bHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfVkFMVUUpKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICpsZW5ndGggPSAxOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgIH0KIAot
ICAgICAgY2FzZSBHTF9URVhUVVJFX01JTl9MT0Q6Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfTUFY
X0xPRDoKLSAgICAgICAgLy8gYW55IHZhbHVlIGlzIHBlcm1pc3NpYmxlCi0gICAgICAgIHJldHVy
biB0cnVlOworICAgIHJldHVybiB0cnVlOworfQogCi0gICAgICBjYXNlIEdMX1RFWFRVUkVfQ09N
UEFSRV9NT0RFOgotICAgICAgICAvLyBBY2NlcHRhYmxlIG1vZGUgcGFyYW1ldGVycyBmcm9tIEdM
RVMgMy4wLjIgc3BlYywgdGFibGUgMy4xNwotICAgICAgICBzd2l0Y2ggKHBhcmFtKQotICAgICAg
ICB7Ci0gICAgICAgICAgY2FzZSBHTF9OT05FOgotICAgICAgICAgIGNhc2UgR0xfQ09NUEFSRV9S
RUZfVE9fVEVYVFVSRToKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VO
VU0pKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBicmVh
azsKK2Jvb2wgVmFsaWRhdGVHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdkJhc2UoQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBy
b2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB1
bmlmb3JtQmxvY2tJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpICpsZW5ndGgpCit7CisgICAgaWYgKGxlbmd0aCkKKyAgICB7CisgICAgICAgICps
ZW5ndGggPSAwOworICAgIH0KIAotICAgICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQzoK
LSAgICAgICAgLy8gQWNjZXB0YWJsZSBmdW5jdGlvbiBwYXJhbWV0ZXJzIGZyb20gR0xFUyAzLjAu
MiBzcGVjLCB0YWJsZSAzLjE3Ci0gICAgICAgIHN3aXRjaCAocGFyYW0pCi0gICAgICAgIHsKLSAg
ICAgICAgICBjYXNlIEdMX0xFUVVBTDoKLSAgICAgICAgICBjYXNlIEdMX0dFUVVBTDoKLSAgICAg
ICAgICBjYXNlIEdMX0xFU1M6Ci0gICAgICAgICAgY2FzZSBHTF9HUkVBVEVSOgotICAgICAgICAg
IGNhc2UgR0xfRVFVQUw6Ci0gICAgICAgICAgY2FzZSBHTF9OT1RFUVVBTDoKLSAgICAgICAgICBj
YXNlIEdMX0FMV0FZUzoKLSAgICAgICAgICBjYXNlIEdMX05FVkVSOgotICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgIGlmIChjb250ZXh0LT5nZXRDbGll
bnRNYWpvclZlcnNpb24oKSA8IDMpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ29udGV4dCBkb2Vz
IG5vdCBzdXBwb3J0IE9wZW5HTCBFUyAzLjAuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IEdldFZhbGlkUHJvZ3JhbShjb250
ZXh0LCBwcm9ncmFtKTsKKyAgICBpZiAoIXByb2dyYW1PYmplY3QpCisgICAgeworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKHVuaWZvcm1CbG9ja0luZGV4ID49IHByb2dy
YW1PYmplY3QtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja0NvdW50KCkpCisgICAgeworICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfVkFMVUUs
ICJ1bmlmb3JtQmxvY2tJbmRleCBleGNlZWRzIGFjdGl2ZSB1bmlmb3JtIGJsb2NrIGNvdW50LiIp
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN3aXRjaCAocG5hbWUpCisg
ICAgeworICAgICAgICBjYXNlIEdMX1VOSUZPUk1fQkxPQ0tfQklORElORzoKKyAgICAgICAgY2Fz
ZSBHTF9VTklGT1JNX0JMT0NLX0RBVEFfU0laRToKKyAgICAgICAgY2FzZSBHTF9VTklGT1JNX0JM
T0NLX05BTUVfTEVOR1RIOgorICAgICAgICBjYXNlIEdMX1VOSUZPUk1fQkxPQ0tfQUNUSVZFX1VO
SUZPUk1TOgorICAgICAgICBjYXNlIEdMX1VOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1fSU5E
SUNFUzoKKyAgICAgICAgY2FzZSBHTF9VTklGT1JNX0JMT0NLX1JFRkVSRU5DRURfQllfVkVSVEVY
X1NIQURFUjoKKyAgICAgICAgY2FzZSBHTF9VTklGT1JNX0JMT0NLX1JFRkVSRU5DRURfQllfRlJB
R01FTlRfU0hBREVSOgorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIlVu
a25vd24gcG5hbWUuIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IGlmIChsZW5ndGgpCisgICAgeworICAgICAgICBpZiAocG5hbWUgPT0gR0xfVU5JRk9STV9CTE9D
S19BQ1RJVkVfVU5JRk9STV9JTkRJQ0VTKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBV
bmlmb3JtQmxvY2sgJnVuaWZvcm1CbG9jayA9CisgICAgICAgICAgICAgICAgcHJvZ3JhbU9iamVj
dC0+Z2V0VW5pZm9ybUJsb2NrQnlJbmRleCh1bmlmb3JtQmxvY2tJbmRleCk7CisgICAgICAgICAg
ICAqbGVuZ3RoID0gc3RhdGljX2Nhc3Q8R0xzaXplaT4odW5pZm9ybUJsb2NrLm1lbWJlclVuaWZv
cm1JbmRleGVzLnNpemUoKSk7CiAgICAgICAgIH0KLSAgICAgICAgYnJlYWs7CisgICAgICAgIGVs
c2UKKyAgICAgICAgeworICAgICAgICAgICAgKmxlbmd0aCA9IDE7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBhcmFtZXRl
ckJhc2UoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBwb2ludGVyVmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgKm51bVBhcmFtcykKK3sKKyAgICBpZiAobnVtUGFyYW1zKQorICAgIHsKKyAg
ICAgICAgKm51bVBhcmFtcyA9IDA7CisgICAgfQorCisgICAgaWYgKCFWYWxpZEJ1ZmZlclRhcmdl
dChjb250ZXh0LCB0YXJnZXQpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBidWZmZXIgdGFyZ2V0LiIpKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGNvbnN0IEJ1ZmZlciAqYnVmZmVyID0gY29u
dGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFRhcmdldEJ1ZmZlcih0YXJnZXQpOworICAgIGlmICghYnVm
ZmVyKQorICAgIHsKKyAgICAgICAgLy8gQSBudWxsIGJ1ZmZlciBtZWFucyB0aGF0ICIwIiBpcyBi
b3VuZCB0byB0aGUgcmVxdWVzdGVkIGJ1ZmZlciB0YXJnZXQKKyAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJObyBidWZmZXIgYm91bmQuIikp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uc3QgRXh0ZW5zaW9ucyAm
ZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKTsKKworICAgIHN3aXRjaCAocG5h
bWUpCisgICAgeworICAgICAgICBjYXNlIEdMX0JVRkZFUl9VU0FHRToKKyAgICAgICAgY2FzZSBH
TF9CVUZGRVJfU0laRToKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfQlVG
RkVSX0FDQ0VTU19PRVM6CisgICAgICAgICAgICBpZiAoIWV4dGVuc2lvbnMubWFwQnVmZmVyKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAg
ICAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX0VOVU0sICJwbmFtZSByZXF1aXJlcyBP
cGVuR0wgRVMgMy4wIG9yIEdMX09FU19tYXBfYnVmZmVyLiIpKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBjYXNlIEdMX0JVRkZFUl9NQVBQRUQ6CisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KEdMX0JV
RkZFUl9NQVBQRUQgPT0gR0xfQlVGRkVSX01BUFBFRF9PRVMsICJHTCBlbnVtcyBzaG91bGQgYmUg
ZXF1YWwuIik7CisgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9u
KCkgPCAzICYmICFleHRlbnNpb25zLm1hcEJ1ZmZlciAmJgorICAgICAgICAgICAgICAgICFleHRl
bnNpb25zLm1hcEJ1ZmZlclJhbmdlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKAorICAgICAgICAgICAgICAgICAgICBHTF9JTlZBTElE
X0VOVU0sCisgICAgICAgICAgICAgICAgICAgICJwbmFtZSByZXF1aXJlcyBPcGVuR0wgRVMgMy4w
LCBHTF9PRVNfbWFwX2J1ZmZlciBvciBHTF9FWFRfbWFwX2J1ZmZlcl9yYW5nZS4iKSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgY2FzZSBHTF9CVUZGRVJfTUFQX1BPSU5URVI6CisgICAgICAgICAgICBp
ZiAoIXBvaW50ZXJWZXJzaW9uKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX0VO
VU0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICJHTF9CVUZGRVJfTUFQX1BPSU5URVIgY2Fu
IG9ubHkgYmUgcXVlcmllZCB3aXRoIEdldEJ1ZmZlclBvaW50ZXJ2LiIpKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBjYXNlIEdMX0JVRkZFUl9BQ0NFU1NfRkxBR1M6CisgICAgICAgIGNhc2UgR0xfQlVG
RkVSX01BUF9PRkZTRVQ6CisgICAgICAgIGNhc2UgR0xfQlVGRkVSX01BUF9MRU5HVEg6CisgICAg
ICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFleHRl
bnNpb25zLm1hcEJ1ZmZlclJhbmdlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKAorICAgICAgICAgICAgICAgICAgICBHTF9JTlZBTElE
X0VOVU0sICJwbmFtZSByZXF1aXJlcyBPcGVuR0wgRVMgMy4wIG9yIEdMX0VYVF9tYXBfYnVmZmVy
X3JhbmdlLiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiVW5rbm93biBwbmFtZS4i
KSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gQWxsIGJ1ZmZl
ciBwYXJhbWV0ZXIgcXVlcmllcyByZXR1cm4gb25lIHZhbHVlLgorICAgIGlmIChudW1QYXJhbXMp
CisgICAgeworICAgICAgICAqbnVtUGFyYW1zID0gMTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdldEludGVybmFsRm9ybWF0aXZCYXNlKENvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxm
b3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpudW1QYXJhbXMp
Cit7CisgICAgaWYgKG51bVBhcmFtcykKKyAgICB7CisgICAgICAgICpudW1QYXJhbXMgPSAwOwor
ICAgIH0KKworICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCisg
ICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLCAiQ29udGV4dCBkb2VzIG5vdCBzdXBwb3J0IE9wZW5HTCBFUyAz
LjAuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uc3QgVGV4dHVy
ZUNhcHMgJmZvcm1hdENhcHMgPSBjb250ZXh0LT5nZXRUZXh0dXJlQ2FwcygpLmdldChpbnRlcm5h
bGZvcm1hdCk7CisgICAgaWYgKCFmb3JtYXRDYXBzLnJlbmRlcmFibGUpCisgICAgeworICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnRlcm5hbCBm
b3JtYXQgaXMgbm90IHJlbmRlcmFibGUuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgc3dpdGNoICh0YXJnZXQpCisgICAgeworICAgICAgICBjYXNlIEdMX1JFTkRFUkJV
RkZFUjoKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIHRh
cmdldC4iKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGJ1
ZlNpemUgPCAwKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSwgImJ1ZlNpemUgY2Fubm90IGJlIG5lZ2F0aXZlLiIpKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEdMc2l6ZWkgbWF4V3JpdGVQYXJhbXMgPSAwOwor
ICAgIHN3aXRjaCAocG5hbWUpCisgICAgeworICAgICAgICBjYXNlIEdMX05VTV9TQU1QTEVfQ09V
TlRTOgorICAgICAgICAgICAgbWF4V3JpdGVQYXJhbXMgPSAxOworICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgY2FzZSBHTF9TQU1QTEVTOgorICAgICAgICAgICAgbWF4V3JpdGVQYXJhbXMg
PSBzdGF0aWNfY2FzdDxHTHNpemVpPihmb3JtYXRDYXBzLnNhbXBsZUNvdW50cy5zaXplKCkpOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIlVua25vd24gcG5hbWUuIikp
OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChudW1QYXJhbXMp
CisgICAgeworICAgICAgICAvLyBnbEdldEludGVybmFsRm9ybWF0aXYgd2lsbCBub3Qgb3ZlcmZs
b3cgYnVmU2l6ZQorICAgICAgICAqbnVtUGFyYW1zID0gc3RkOjptaW4oYnVmU2l6ZSwgbWF4V3Jp
dGVQYXJhbXMpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit9ICAvLyBhbm9ueW1v
dXMgbmFtZXNwYWNlCisKK2Jvb2wgVmFsaWRUZXh0dXJlVGFyZ2V0KGNvbnN0IFZhbGlkYXRpb25D
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0KQoreworICAgIHN3aXRjaCAodGFyZ2V0KQor
ICAgIHsKKyAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoKKyAgICAgIGNhc2UgR0xfVEVYVFVSRV9D
VUJFX01BUDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgIGNhc2UgR0xfVEVYVFVSRV8z
RDoKKyAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRF9BUlJBWToKKyAgICAgICAgICByZXR1cm4gKGNv
bnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpID49IDMpOworCisgICAgICBkZWZhdWx0Ogor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitib29sIFZhbGlkVGV4dHVyZTJEVGFy
Z2V0KGNvbnN0IFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0KQorewor
ICAgIHN3aXRjaCAodGFyZ2V0KQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFXzJEOgor
ICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVA6CisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
K30KKworYm9vbCBWYWxpZFRleHR1cmUzRFRhcmdldChjb25zdCBWYWxpZGF0aW9uQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHRhcmdldCkKK3sKKyAgICBzd2l0Y2ggKHRhcmdldCkKKyAgICB7Cisg
ICAgICAgIGNhc2UgR0xfVEVYVFVSRV8zRDoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFXzJEX0FS
UkFZOgorICAgICAgICAgICAgcmV0dXJuIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24o
KSA+PSAzKTsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KK30KKworLy8gTW9zdCB0ZXh0dXJlIEdMIGNhbGxzIGFyZSBub3QgY29tcGF0aWJsZSB3
aXRoIGV4dGVybmFsIHRleHR1cmVzLCBzbyB3ZSBoYXZlIGEgc2VwYXJhdGUgdmFsaWRhdGlvbgor
Ly8gZnVuY3Rpb24gZm9yIHVzZSBpbiB0aGUgR0wgY2FsbHMgdGhhdCBkbworYm9vbCBWYWxpZFRl
eHR1cmVFeHRlcm5hbFRhcmdldChjb25zdCBWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIHRhcmdldCkKK3sKKyAgICByZXR1cm4gKHRhcmdldCA9PSBHTF9URVhUVVJFX0VYVEVSTkFM
X09FUykgJiYKKyAgICAgICAgICAgKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lZ2xJbWFnZUV4
dGVybmFsIHx8CisgICAgICAgICAgICBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZWdsU3RyZWFt
Q29uc3VtZXJFeHRlcm5hbCk7Cit9CisKKy8vIFRoaXMgZnVuY3Rpb24gZGlmZmVycyBmcm9tIFZh
bGlkVGV4dHVyZVRhcmdldCBpbiB0aGF0IHRoZSB0YXJnZXQgbXVzdCBiZQorLy8gdXNhYmxlIGFz
IHRoZSBkZXN0aW5hdGlvbiBvZiBhIDJEIG9wZXJhdGlvbi0tIHNvIGEgY3ViZSBmYWNlIGlzIHZh
bGlkLCBidXQKKy8vIEdMX1RFWFRVUkVfQ1VCRV9NQVAgaXMgbm90LgorLy8gTm90ZTogZHVwbGlj
YXRlIG9mIElzSW50ZXJuYWxUZXh0dXJlVGFyZ2V0Citib29sIFZhbGlkVGV4dHVyZTJERGVzdGlu
YXRpb25UYXJnZXQoY29uc3QgVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJn
ZXQpCit7CisgICAgc3dpdGNoICh0YXJnZXQpCisgICAgeworICAgICAgY2FzZSBHTF9URVhUVVJF
XzJEOgorICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1g6CisgICAgICBj
YXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWDoKKyAgICAgIGNhc2UgR0xfVEVYVFVS
RV9DVUJFX01BUF9QT1NJVElWRV9ZOgorICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05F
R0FUSVZFX1k6CisgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWjoKKyAg
ICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aOgorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30K
KworYm9vbCBWYWxpZFRleHR1cmUzRERlc3RpbmF0aW9uVGFyZ2V0KGNvbnN0IFZhbGlkYXRpb25D
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0KQoreworICAgIHN3aXRjaCAodGFyZ2V0KQor
ICAgIHsKKyAgICAgIGNhc2UgR0xfVEVYVFVSRV8zRDoKKyAgICAgIGNhc2UgR0xfVEVYVFVSRV8y
RF9BUlJBWToKKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgVmFsaWRGcmFtZWJ1ZmZlclRhcmdldChH
TGVudW0gdGFyZ2V0KQoreworICAgIHN0YXRpY19hc3NlcnQoR0xfRFJBV19GUkFNRUJVRkZFUl9B
TkdMRSA9PSBHTF9EUkFXX0ZSQU1FQlVGRkVSICYmIEdMX1JFQURfRlJBTUVCVUZGRVJfQU5HTEUg
PT0gR0xfUkVBRF9GUkFNRUJVRkZFUiwKKyAgICAgICAgICAgICAgICAgICJBTkdMRSBmcmFtZWJ1
ZmZlciBlbnVtcyBtdXN0IGVxdWFsIHRoZSBFUzMgZnJhbWVidWZmZXIgZW51bXMuIik7CisKKyAg
ICBzd2l0Y2ggKHRhcmdldCkKKyAgICB7CisgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSOiAgICAg
IHJldHVybiB0cnVlOworICAgICAgY2FzZSBHTF9SRUFEX0ZSQU1FQlVGRkVSOiByZXR1cm4gdHJ1
ZTsKKyAgICAgIGNhc2UgR0xfRFJBV19GUkFNRUJVRkZFUjogcmV0dXJuIHRydWU7CisgICAgICBk
ZWZhdWx0OiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wg
VmFsaWRCdWZmZXJUYXJnZXQoY29uc3QgVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMZW51
bSB0YXJnZXQpCit7CisgICAgc3dpdGNoICh0YXJnZXQpCisgICAgeworICAgICAgY2FzZSBHTF9B
UlJBWV9CVUZGRVI6CisgICAgICBjYXNlIEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSOgorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgICAgY2FzZSBHTF9QSVhFTF9QQUNLX0JVRkZFUjoKKyAgICAg
IGNhc2UgR0xfUElYRUxfVU5QQUNLX0JVRkZFUjoKKyAgICAgICAgICByZXR1cm4gKGNvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5waXhlbEJ1ZmZlck9iamVjdCB8fAorICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPj0gMyk7CisKKyAgICAgIGNhc2UgR0xf
Q09QWV9SRUFEX0JVRkZFUjoKKyAgICAgIGNhc2UgR0xfQ09QWV9XUklURV9CVUZGRVI6CisgICAg
ICBjYXNlIEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVI6CisgICAgICBjYXNlIEdMX1VOSUZP
Uk1fQlVGRkVSOgorICAgICAgICAgIHJldHVybiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJz
aW9uKCkgPj0gMyk7CisKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9Cit9CisKK2Jvb2wgVmFsaWRNaXBMZXZlbChjb25zdCBWYWxpZGF0aW9uQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwpCit7CisgICAgY29uc3QgYXV0byAmY2Fw
cyAgICA9IGNvbnRleHQtPmdldENhcHMoKTsKKyAgICBzaXplX3QgbWF4RGltZW5zaW9uID0gMDsK
KyAgICBzd2l0Y2ggKHRhcmdldCkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoK
KyAgICAgICAgICAgIG1heERpbWVuc2lvbiA9IGNhcHMubWF4MkRUZXh0dXJlU2l6ZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQOgorICAgICAgY2Fz
ZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1g6CisgICAgICBjYXNlIEdMX1RFWFRVUkVf
Q1VCRV9NQVBfTkVHQVRJVkVfWDoKKyAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJ
VElWRV9ZOgorICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1k6CisgICAg
ICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWjoKKyAgICAgIGNhc2UgR0xfVEVY
VFVSRV9DVUJFX01BUF9ORUdBVElWRV9aOgorICAgICAgICAgIG1heERpbWVuc2lvbiA9IGNhcHMu
bWF4Q3ViZU1hcFRleHR1cmVTaXplOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9U
RVhUVVJFXzNEOgorICAgICAgICAgIG1heERpbWVuc2lvbiA9IGNhcHMubWF4M0RUZXh0dXJlU2l6
ZTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRF9BUlJBWToKKyAg
ICAgICAgICBtYXhEaW1lbnNpb24gPSBjYXBzLm1heDJEVGV4dHVyZVNpemU7CisgICAgICAgICAg
YnJlYWs7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgIH0KKworICAgIHJldHVy
biBsZXZlbCA8PSBnbDo6bG9nMihzdGF0aWNfY2FzdDxpbnQ+KG1heERpbWVuc2lvbikpOworfQor
Citib29sIFZhbGlkSW1hZ2VTaXplUGFyYW1ldGVycyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNTdWJJbWFnZSkKK3sKKyAgICBp
ZiAobGV2ZWwgPCAwIHx8IHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwIHx8IGRlcHRoIDwgMCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBUZXhTdWJJbWFnZSBw
YXJhbWV0ZXJzIGNhbiBiZSBOUE9UIHdpdGhvdXQgdGV4dHVyZU5QT1QgZXh0ZW5zaW9uLAorICAg
IC8vIGFzIGxvbmcgYXMgdGhlIGRlc3RpbmF0aW9uIHRleHR1cmUgaXMgUE9ULgorICAgIGlmICgh
aXNTdWJJbWFnZSAmJiAhY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVOUE9UICYmCisg
ICAgICAgIChsZXZlbCAhPSAwICYmICghZ2w6OmlzUG93Mih3aWR0aCkgfHwgIWdsOjppc1BvdzIo
aGVpZ2h0KSB8fCAhZ2w6OmlzUG93MihkZXB0aCkpKSkKKyAgICB7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlkTWlwTGV2ZWwoY29udGV4dCwgdGFyZ2V0LCBs
ZXZlbCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgQ29tcHJlc3NlZFRleHR1cmVGb3JtYXRSZXF1aXJlc0V4YWN0U2l6
ZShHTGVudW0gaW50ZXJuYWxGb3JtYXQpCit7CisgICAgLy8gTGlzdCBvZiBjb21wcmVzc2VkIGZv
cm1hdCB0aGF0IHJlcXVpcmUgdGhhdCB0aGUgdGV4dHVyZSBzaXplIGlzIHNtYWxsZXIgdGhhbiBv
ciBhIG11bHRpcGxlIG9mCisgICAgLy8gdGhlIGNvbXByZXNzZWQgYmxvY2sgc2l6ZS4KKyAgICBz
d2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VE
X1JHQl9TM1RDX0RYVDFfRVhUOgorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RD
X0RYVDFfRVhUOgorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5H
TEU6CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRToKKyAg
ICAgICAgY2FzZSBHTF9FVEMxX1JHQjhfTE9TU1lfREVDT0RFX0FOR0xFOgorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9Cit9CisKK2Jvb2wgVmFsaWRDb21wcmVzc2VkSW1hZ2VTaXplKGNvbnN0IFZhbGlk
YXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KQor
eworICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRl
cm5hbEZvcm1hdEluZm8oaW50ZXJuYWxGb3JtYXQpOworICAgIGlmICghZm9ybWF0SW5mby5jb21w
cmVzc2VkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICh3
aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBpZiAoQ29tcHJlc3NlZFRleHR1cmVGb3JtYXRSZXF1aXJlc0V4YWN0U2l6ZShp
bnRlcm5hbEZvcm1hdCkpCisgICAgeworICAgICAgICBpZiAoKHN0YXRpY19jYXN0PEdMdWludD4o
d2lkdGgpID4gZm9ybWF0SW5mby5jb21wcmVzc2VkQmxvY2tXaWR0aCAmJgorICAgICAgICAgICAg
IHdpZHRoICUgZm9ybWF0SW5mby5jb21wcmVzc2VkQmxvY2tXaWR0aCAhPSAwKSB8fAorICAgICAg
ICAgICAgKHN0YXRpY19jYXN0PEdMdWludD4oaGVpZ2h0KSA+IGZvcm1hdEluZm8uY29tcHJlc3Nl
ZEJsb2NrSGVpZ2h0ICYmCisgICAgICAgICAgICAgaGVpZ2h0ICUgZm9ybWF0SW5mby5jb21wcmVz
c2VkQmxvY2tIZWlnaHQgIT0gMCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlk
SW1hZ2VEYXRhU2l6ZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0ZXh0dXJlVGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwaXhlbHMs
CisgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGltYWdlU2l6ZSkKK3sKKyAgICBnbDo6
QnVmZmVyICpwaXhlbFVucGFja0J1ZmZlciA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRUYXJn
ZXRCdWZmZXIoR0xfUElYRUxfVU5QQUNLX0JVRkZFUik7CisgICAgaWYgKHBpeGVsVW5wYWNrQnVm
ZmVyID09IG51bGxwdHIgJiYgaW1hZ2VTaXplIDwgMCkKKyAgICB7CisgICAgICAgIC8vIENoZWNr
cyBhcmUgbm90IHJlcXVpcmVkCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8v
IC4uLnRoZSBkYXRhIHdvdWxkIGJlIHVucGFja2VkIGZyb20gdGhlIGJ1ZmZlciBvYmplY3Qgc3Vj
aCB0aGF0IHRoZSBtZW1vcnkgcmVhZHMgcmVxdWlyZWQKKyAgICAvLyB3b3VsZCBleGNlZWQgdGhl
IGRhdGEgc3RvcmUgc2l6ZS4KKyAgICBHTGVudW0gc2l6ZWRGb3JtYXQgICAgICAgICAgICAgICAg
ICAgPSBHZXRTaXplZEludGVybmFsRm9ybWF0KGludGVybmFsRm9ybWF0LCB0eXBlKTsKKyAgICBj
b25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3Jt
YXRJbmZvKHNpemVkRm9ybWF0KTsKKyAgICBjb25zdCBnbDo6RXh0ZW50cyBzaXplKHdpZHRoLCBo
ZWlnaHQsIGRlcHRoKTsKKyAgICBjb25zdCBhdXRvICZ1bnBhY2sgPSBjb250ZXh0LT5nZXRHTFN0
YXRlKCkuZ2V0VW5wYWNrU3RhdGUoKTsKKworICAgIGJvb2wgdGFyZ2V0SXMzRCAgID0gdGV4dHVy
ZVRhcmdldCA9PSBHTF9URVhUVVJFXzNEIHx8IHRleHR1cmVUYXJnZXQgPT0gR0xfVEVYVFVSRV8y
RF9BUlJBWTsKKyAgICBhdXRvIGVuZEJ5dGVPckVyciA9IGZvcm1hdEluZm8uY29tcHV0ZVBhY2tV
bnBhY2tFbmRCeXRlKHR5cGUsIHNpemUsIHVucGFjaywgdGFyZ2V0SXMzRCk7CisgICAgaWYgKGVu
ZEJ5dGVPckVyci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihlbmRCeXRlT3JFcnIuZ2V0RXJyb3IoKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBHTHVpbnQgZW5kQnl0ZSA9IGVuZEJ5dGVPckVyci5nZXRSZXN1bHQoKTsKKworICAg
IGlmIChwaXhlbFVucGFja0J1ZmZlcikKKyAgICB7CisgICAgICAgIENoZWNrZWROdW1lcmljPHNp
emVfdD4gY2hlY2tlZEVuZEJ5dGUoZW5kQnl0ZU9yRXJyLmdldFJlc3VsdCgpKTsKKyAgICAgICAg
Q2hlY2tlZE51bWVyaWM8c2l6ZV90PiBjaGVja2VkT2Zmc2V0KHJlaW50ZXJwcmV0X2Nhc3Q8c2l6
ZV90PihwaXhlbHMpKTsKKyAgICAgICAgY2hlY2tlZEVuZEJ5dGUgKz0gY2hlY2tlZE9mZnNldDsK
KworICAgICAgICBpZiAoIWNoZWNrZWRFbmRCeXRlLklzVmFsaWQoKSB8fAorICAgICAgICAgICAg
KGNoZWNrZWRFbmRCeXRlLlZhbHVlT3JEaWUoKSA+IHN0YXRpY19jYXN0PHNpemVfdD4ocGl4ZWxV
bnBhY2tCdWZmZXItPmdldFNpemUoKSkpKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBPdmVy
ZmxvdyBwYXN0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlcgorICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBBU1NF
UlQoaW1hZ2VTaXplID49IDApOworICAgICAgICBpZiAocGl4ZWxzID09IG51bGxwdHIgJiYgaW1h
Z2VTaXplICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KAorICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiaW1hZ2VTaXpl
IG11c3QgYmUgMCBpZiBubyB0ZXh0dXJlIGRhdGEgaXMgcHJvdmlkZWQuIikpOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKGVuZEJ5dGUgPiBzdGF0aWNfY2FzdDxHTHVpbnQ+KGltYWdlU2l6ZSkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAg
ICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiaW1hZ2VTaXplIG11c3QgYmUgYXQg
bGVhc3QgJXUuIiwgZW5kQnl0ZSkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRRdWVyeVR5cGUo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHF1ZXJ5VHlwZSkKK3sKKyAgICBzdGF0aWNf
YXNzZXJ0KEdMX0FOWV9TQU1QTEVTX1BBU1NFRCA9PSBHTF9BTllfU0FNUExFU19QQVNTRURfRVhU
LCAiR0wgZXh0ZW5zaW9uIGVudW1zIG5vdCBlcXVhbC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdM
X0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkUgPT0gR0xfQU5ZX1NBTVBMRVNfUEFTU0VE
X0NPTlNFUlZBVElWRV9FWFQsICJHTCBleHRlbnNpb24gZW51bXMgbm90IGVxdWFsLiIpOworCisg
ICAgc3dpdGNoIChxdWVyeVR5cGUpCisgICAgeworICAgICAgY2FzZSBHTF9BTllfU0FNUExFU19Q
QVNTRUQ6CisgICAgICBjYXNlIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkU6Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUFJJ
TUlUSVZFU19XUklUVEVOOgorICAgICAgICAgIHJldHVybiAoY29udGV4dC0+Z2V0Q2xpZW50TWFq
b3JWZXJzaW9uKCkgPj0gMyk7CisgICAgICBjYXNlIEdMX1RJTUVfRUxBUFNFRF9FWFQ6CisgICAg
ICAgICAgcmV0dXJuIGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kaXNqb2ludFRpbWVyUXVlcnk7
CisgICAgICBjYXNlIEdMX0NPTU1BTkRTX0NPTVBMRVRFRF9DSFJPTUlVTToKKyAgICAgICAgICBy
ZXR1cm4gY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN5bmNRdWVyeTsKKyAgICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK1Byb2dyYW0gKkdldFZhbGlkUHJv
Z3JhbShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGlkKQoreworICAgIC8vIEVT
MyBzcGVjIChzZWN0aW9uIDIuMTEuMSkgLS0gIkNvbW1hbmRzIHRoYXQgYWNjZXB0IHNoYWRlciBv
ciBwcm9ncmFtIG9iamVjdCBuYW1lcyB3aWxsIGdlbmVyYXRlIHRoZQorICAgIC8vIGVycm9yIElO
VkFMSURfVkFMVUUgaWYgdGhlIHByb3ZpZGVkIG5hbWUgaXMgbm90IHRoZSBuYW1lIG9mIGVpdGhl
ciBhIHNoYWRlciBvciBwcm9ncmFtIG9iamVjdCBhbmQKKyAgICAvLyBJTlZBTElEX09QRVJBVElP
TiBpZiB0aGUgcHJvdmlkZWQgbmFtZSBpZGVudGlmaWVzIGFuIG9iamVjdCB0aGF0IGlzIG5vdCB0
aGUgZXhwZWN0ZWQgdHlwZS4iCisKKyAgICBQcm9ncmFtICp2YWxpZFByb2dyYW0gPSBjb250ZXh0
LT5nZXRQcm9ncmFtKGlkKTsKKworICAgIGlmICghdmFsaWRQcm9ncmFtKQorICAgIHsKKyAgICAg
ICAgaWYgKGNvbnRleHQtPmdldFNoYWRlcihpZCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OLCAiRXhwZWN0ZWQgYSBwcm9ncmFtIG5hbWUsIGJ1dCBmb3VuZCBhIHNoYWRlciBuYW1l
IikpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIlByb2dyYW0gbmFtZSBp
cyBub3QgdmFsaWQiKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdmFsaWRQcm9n
cmFtOworfQorCitTaGFkZXIgKkdldFZhbGlkU2hhZGVyKFZhbGlkYXRpb25Db250ZXh0ICpjb250
ZXh0LCBHTHVpbnQgaWQpCit7CisgICAgLy8gU2VlIFZhbGlkUHJvZ3JhbSBmb3Igc3BlYyBkZXRh
aWxzLgorCisgICAgU2hhZGVyICp2YWxpZFNoYWRlciA9IGNvbnRleHQtPmdldFNoYWRlcihpZCk7
CisKKyAgICBpZiAoIXZhbGlkU2hhZGVyKQorICAgIHsKKyAgICAgICAgaWYgKGNvbnRleHQtPmdl
dFByb2dyYW0oaWQpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cigKKyAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkV4cGVjdGVk
IGEgc2hhZGVyIG5hbWUsIGJ1dCBmb3VuZCBhIHByb2dyYW0gbmFtZSIpKTsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJTaGFkZXIgbmFtZSBpcyBpbnZhbGlkIikpOworICAg
ICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHZhbGlkU2hhZGVyOworfQorCitib29sIFZhbGlk
YXRlQXR0YWNobWVudFRhcmdldChnbDo6Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIGF0dGFjaG1l
bnQpCit7CisgICAgaWYgKGF0dGFjaG1lbnQgPj0gR0xfQ09MT1JfQVRUQUNITUVOVDBfRVhUICYm
IGF0dGFjaG1lbnQgPD0gR0xfQ09MT1JfQVRUQUNITUVOVDE1X0VYVCkKKyAgICB7CisgICAgICAg
IGNvbnN0IHVuc2lnbmVkIGludCBjb2xvckF0dGFjaG1lbnQgPSAoYXR0YWNobWVudCAtIEdMX0NP
TE9SX0FUVEFDSE1FTlQwX0VYVCk7CisKKyAgICAgICAgaWYgKGNvbG9yQXR0YWNobWVudCA+PSBj
b250ZXh0LT5nZXRDYXBzKCkubWF4Q29sb3JBdHRhY2htZW50cykKKyAgICAgICAgeworICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7
CisgICAgICAgIHN3aXRjaCAoYXR0YWNobWVudCkKKyAgICAgICAgeworICAgICAgICAgIGNhc2Ug
R0xfREVQVEhfQVRUQUNITUVOVDoKKyAgICAgICAgICBjYXNlIEdMX1NURU5DSUxfQVRUQUNITUVO
VDoKKyAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBjYXNlIEdMX0RFUFRIX1NURU5D
SUxfQVRUQUNITUVOVDoKKyAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkud2ViZ2xDb21wYXRpYmlsaXR5ICYmCisgICAgICAgICAgICAgICAgICBjb250ZXh0LT5nZXRD
bGllbnRNYWpvclZlcnNpb24oKSA8IDMpCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZh
bGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZVBhcmFtZXRlcnNCYXNlKGdsOjpDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHNpemVpIHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCit7CisgICAgc3dpdGNoICh0YXJnZXQpCisgICAgewor
ICAgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVI6CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0p
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICh3aWR0aCA8IDAgfHwg
aGVpZ2h0IDwgMCB8fCBzYW1wbGVzIDwgMCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGNvbnN0IFRleHR1cmVDYXBzICZmb3JtYXRDYXBzID0gY29udGV4dC0+Z2V0
VGV4dHVyZUNhcHMoKS5nZXQoaW50ZXJuYWxmb3JtYXQpOworICAgIGlmICghZm9ybWF0Q2Fwcy5y
ZW5kZXJhYmxlKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9FTlVNKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBB
TkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSBkb2VzIG5vdCBleHBsaWNpdGx5IHN0YXRlIHRo
YXQgdGhlIGludGVybmFsIGZvcm1hdCBtdXN0IGJlCisgICAgLy8gc2l6ZWQgYnV0IGl0IGRvZXMg
c3RhdGUgdGhhdCB0aGUgZm9ybWF0IG11c3QgYmUgaW4gdGhlIEVTMi4wIHNwZWMgdGFibGUgNC41
IHdoaWNoIGNvbnRhaW5zCisgICAgLy8gb25seSBzaXplZCBpbnRlcm5hbCBmb3JtYXRzLgorICAg
IGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZv
cm1hdEluZm8oaW50ZXJuYWxmb3JtYXQpOworICAgIGlmIChmb3JtYXRJbmZvLnBpeGVsQnl0ZXMg
PT0gMCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfRU5VTSkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKHN0YXRp
Y19jYXN0PEdMdWludD4oc3RkOjptYXgod2lkdGgsIGhlaWdodCkpID4gY29udGV4dC0+Z2V0Q2Fw
cygpLm1heFJlbmRlcmJ1ZmZlclNpemUpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBHTHVpbnQgaGFuZGxlID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFJlbmRl
cmJ1ZmZlcklkKCk7CisgICAgaWYgKGhhbmRsZSA9PSAwKQorICAgIHsKKyAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRl
UmVuZGVyYnVmZmVyU3RvcmFnZVBhcmFtZXRlcnNBTkdMRShnbDo6Q29udGV4dCAqY29udGV4dCwg
R0xlbnVtIHRhcmdldCwgR0xzaXplaSBzYW1wbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCkKK3sKKyAgICBBU1NFUlQoc2FtcGxlcyA9PSAwIHx8IGNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5mcmFtZWJ1ZmZlck11bHRpc2FtcGxlKTsKKworICAgIC8vIEFO
R0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIHN0YXRlcyB0aGF0IHRoZSB2YWx1ZSBvZiBzYW1w
bGVzIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsCisgICAgLy8gdG8gTUFYX1NBTVBMRVNfQU5H
TEUgKENvbnRleHQ6OmdldENhcHMoKS5tYXhTYW1wbGVzKSBvdGhlcndpc2UgR0xfSU5WQUxJRF9W
QUxVRSBpcworICAgIC8vIGdlbmVyYXRlZC4KKyAgICBpZiAoc3RhdGljX2Nhc3Q8R0x1aW50Pihz
YW1wbGVzKSA+IGNvbnRleHQtPmdldENhcHMoKS5tYXhTYW1wbGVzKQorICAgIHsKKyAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1w
bGUgc3RhdGVzIEdMX09VVF9PRl9NRU1PUlkgaXMgZ2VuZXJhdGVkIG9uIGEgZmFpbHVyZSB0byBj
cmVhdGUKKyAgICAvLyB0aGUgc3BlY2lmaWVkIHN0b3JhZ2UuIFRoaXMgaXMgZGlmZmVyZW50IHRo
YW4gRVMgMy4wIGluIHdoaWNoIGEgc2FtcGxlIG51bWJlciBoaWdoZXIKKyAgICAvLyB0aGFuIHRo
ZSBtYXhpbXVtIHNhbXBsZSBudW1iZXIgc3VwcG9ydGVkICBieSB0aGlzIGZvcm1hdCBnZW5lcmF0
ZXMgYSBHTF9JTlZBTElEX1ZBTFVFLgorICAgIC8vIFRoZSBUZXh0dXJlQ2Fwczo6Z2V0TWF4U2Ft
cGxlcyBtZXRob2QgaXMgb25seSBndWFyZW50ZWVkIHRvIGJlIHZhbGlkIHdoZW4gdGhlIGNvbnRl
eHQgaXMgRVMzLgorICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA+PSAz
KQorICAgIHsKKyAgICAgICAgY29uc3QgVGV4dHVyZUNhcHMgJmZvcm1hdENhcHMgPSBjb250ZXh0
LT5nZXRUZXh0dXJlQ2FwcygpLmdldChpbnRlcm5hbGZvcm1hdCk7CisgICAgICAgIGlmIChzdGF0
aWNfY2FzdDxHTHVpbnQ+KHNhbXBsZXMpID4gZm9ybWF0Q2Fwcy5nZXRNYXhTYW1wbGVzKCkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX09VVF9P
Rl9NRU1PUlkpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiBWYWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VQYXJhbWV0ZXJzQmFzZShj
b250ZXh0LCB0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsK
K30KKworYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyUGFyYW1ldGVycyhnbDo6
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSByZW5kZXJi
dWZmZXJ0YXJnZXQsIEdMdWludCByZW5kZXJidWZmZXIpCit7CisgICAgaWYgKCFWYWxpZEZyYW1l
YnVmZmVyVGFyZ2V0KHRhcmdldCkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXRHTFN0YXRl
KCkuZ2V0VGFyZ2V0RnJhbWVidWZmZXIodGFyZ2V0KTsKKworICAgIEFTU0VSVChmcmFtZWJ1ZmZl
cik7CisgICAgaWYgKGZyYW1lYnVmZmVyLT5pZCgpID09IDApCisgICAgeworICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCAiQ2Fubm90IGNoYW5nZSBkZWZhdWx0IEZCTydzIGF0dGFjaG1lbnRzIikpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZGF0ZUF0dGFjaG1lbnRUYXJnZXQo
Y29udGV4dCwgYXR0YWNobWVudCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgLy8gW09wZW5HTCBFUyAyLjAuMjVdIFNlY3Rpb24gNC40LjMgcGFnZSAxMTIKKyAg
ICAvLyBbT3BlbkdMIEVTIDMuMC4yXSBTZWN0aW9uIDQuNC4yIHBhZ2UgMjAxCisgICAgLy8gJ3Jl
bmRlcmJ1ZmZlcicgbXVzdCBiZSBlaXRoZXIgemVybyBvciB0aGUgbmFtZSBvZiBhbiBleGlzdGlu
ZyByZW5kZXJidWZmZXIgb2JqZWN0IG9mCisgICAgLy8gdHlwZSAncmVuZGVyYnVmZmVydGFyZ2V0
Jywgb3RoZXJ3aXNlIGFuIElOVkFMSURfT1BFUkFUSU9OIGVycm9yIGlzIGdlbmVyYXRlZC4KKyAg
ICBpZiAocmVuZGVyYnVmZmVyICE9IDApCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPmdl
dFJlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgVmFsaWRhdGVCbGl0RnJhbWVidWZmZXJQYXJhbWV0ZXJzKFZhbGlkYXRpb25Db250
ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgc3JjWDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBz
cmNZMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNyY1gx
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3JjWTEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkc3RYMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRzdFkwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHN0WDEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkc3RZMSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQgbWFzaywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWx0ZXIpCit7CisgICAgc3dpdGNoIChmaWx0
ZXIpCisgICAgeworICAgICAgY2FzZSBHTF9ORUFSRVNUOgorICAgICAgICBicmVhazsKKyAgICAg
IGNhc2UgR0xfTElORUFSOgorICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoKG1hc2sgJiB+KEdMX0NPTE9SX0JVRkZF
Ul9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUKSkgIT0g
MCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
VkFMVUUpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChtYXNrID09
IDApCisgICAgeworICAgICAgICAvLyBFUzMuMCBzcGVjLCBzZWN0aW9uIDQuMy4yIHNwZWNpZmll
cyB0aGF0IGEgbWFzayBvZiB6ZXJvIGlzIHZhbGlkIGFuZCBubworICAgICAgICAvLyBidWZmZXJz
IGFyZSBjb3BpZWQuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBFUzMu
MCBzcGVjLCBzZWN0aW9uIDQuMy4yIHN0YXRlcyB0aGF0IGxpbmVhciBmaWx0ZXJpbmcgaXMgb25s
eSBhdmFpbGFibGUgZm9yIHRoZQorICAgIC8vIGNvbG9yIGJ1ZmZlciwgbGVhdmluZyBvbmx5IG5l
YXJlc3QgYmVpbmcgdW5maWx0ZXJlZCBmcm9tIGFib3ZlCisgICAgaWYgKChtYXNrICYgfkdMX0NP
TE9SX0JVRkZFUl9CSVQpICE9IDAgJiYgZmlsdGVyICE9IEdMX05FQVJFU1QpCisgICAgeworICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uc3QgYXV0byAmZ2xTdGF0ZSAg
ICAgICAgICAgICAgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCk7CisgICAgZ2w6OkZyYW1lYnVmZmVy
ICpyZWFkRnJhbWVidWZmZXIgPSBnbFN0YXRlLmdldFJlYWRGcmFtZWJ1ZmZlcigpOworICAgIGds
OjpGcmFtZWJ1ZmZlciAqZHJhd0ZyYW1lYnVmZmVyID0gZ2xTdGF0ZS5nZXREcmF3RnJhbWVidWZm
ZXIoKTsKKworICAgIGlmICghcmVhZEZyYW1lYnVmZmVyIHx8ICFkcmF3RnJhbWVidWZmZXIpCisg
ICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0ZSQU1F
QlVGRkVSX09QRVJBVElPTikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
aWYgKHJlYWRGcmFtZWJ1ZmZlci0+aWQoKSA9PSBkcmF3RnJhbWVidWZmZXItPmlkKCkpCisgICAg
eworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKHJlYWRGcmFtZWJ1
ZmZlci0+Y2hlY2tTdGF0dXMoY29udGV4dC0+Z2V0Q29udGV4dFN0YXRlKCkpICE9IEdMX0ZSQU1F
QlVGRkVSX0NPTVBMRVRFKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04pKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGlmIChkcmF3RnJhbWVidWZmZXItPmNoZWNrU3RhdHVzKGNvbnRl
eHQtPmdldENvbnRleHRTdGF0ZSgpKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKKyAgICB7
CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRlJBTUVCVUZG
RVJfT1BFUkFUSU9OKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAo
ZHJhd0ZyYW1lYnVmZmVyLT5nZXRTYW1wbGVzKGNvbnRleHQtPmdldENvbnRleHRTdGF0ZSgpKSAh
PSAwKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGJvb2wg
c2FtZUJvdW5kcyA9IHNyY1gwID09IGRzdFgwICYmIHNyY1kwID09IGRzdFkwICYmIHNyY1gxID09
IGRzdFgxICYmIHNyY1kxID09IGRzdFkxOworCisgICAgaWYgKG1hc2sgJiBHTF9DT0xPUl9CVUZG
RVJfQklUKQorICAgIHsKKyAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAq
cmVhZENvbG9yQnVmZmVyID0gcmVhZEZyYW1lYnVmZmVyLT5nZXRSZWFkQ29sb3JidWZmZXIoKTsK
KyAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqZHJhd0NvbG9yQnVmZmVy
ID0gZHJhd0ZyYW1lYnVmZmVyLT5nZXRGaXJzdENvbG9yYnVmZmVyKCk7CisgICAgICAgIGNvbnN0
IEV4dGVuc2lvbnMgJmV4dGVuc2lvbnMgICAgICAgICAgICAgICAgICAgICA9IGNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKTsKKworICAgICAgICBpZiAocmVhZENvbG9yQnVmZmVyICYmIGRyYXdDb2xv
ckJ1ZmZlcikKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgRm9ybWF0ICZyZWFkRm9ybWF0
ID0gcmVhZENvbG9yQnVmZmVyLT5nZXRGb3JtYXQoKTsKKworICAgICAgICAgICAgZm9yIChzaXpl
X3QgZHJhd2J1ZmZlcklkeCA9IDA7CisgICAgICAgICAgICAgICAgIGRyYXdidWZmZXJJZHggPCBk
cmF3RnJhbWVidWZmZXItPmdldERyYXdidWZmZXJTdGF0ZUNvdW50KCk7ICsrZHJhd2J1ZmZlcklk
eCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFj
aG1lbnQgKmF0dGFjaG1lbnQgPQorICAgICAgICAgICAgICAgICAgICBkcmF3RnJhbWVidWZmZXIt
PmdldERyYXdCdWZmZXIoZHJhd2J1ZmZlcklkeCk7CisgICAgICAgICAgICAgICAgaWYgKGF0dGFj
aG1lbnQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb25zdCBGb3Jt
YXQgJmRyYXdGb3JtYXQgPSBhdHRhY2htZW50LT5nZXRGb3JtYXQoKTsKKworICAgICAgICAgICAg
ICAgICAgICAvLyBUaGUgR0wgRVMgMy4wLjIgc3BlYyAocGcgMTkzKSBzdGF0ZXMgdGhhdDoKKyAg
ICAgICAgICAgICAgICAgICAgLy8gMSkgSWYgdGhlIHJlYWQgYnVmZmVyIGlzIGZpeGVkIHBvaW50
IGZvcm1hdCwgdGhlIGRyYXcgYnVmZmVyIG11c3QgYmUgYXMgd2VsbAorICAgICAgICAgICAgICAg
ICAgICAvLyAyKSBJZiB0aGUgcmVhZCBidWZmZXIgaXMgYW4gdW5zaWduZWQgaW50ZWdlciBmb3Jt
YXQsIHRoZSBkcmF3IGJ1ZmZlciBtdXN0IGJlIGFzIHdlbGwKKyAgICAgICAgICAgICAgICAgICAg
Ly8gMykgSWYgdGhlIHJlYWQgYnVmZmVyIGlzIGEgc2lnbmVkIGludGVnZXIgZm9ybWF0LCB0aGUg
ZHJhdyBidWZmZXIgbXVzdCBiZSBhcyB3ZWxsCisgICAgICAgICAgICAgICAgICAgIC8vIENoYW5n
ZXMgd2l0aCBFWFRfY29sb3JfYnVmZmVyX2Zsb2F0OgorICAgICAgICAgICAgICAgICAgICAvLyBD
YXNlIDEpIGlzIGNoYW5nZWQgdG8gZml4ZWQgcG9pbnQgT1IgZmxvYXRpbmcgcG9pbnQKKyAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHJlYWRDb21wb25lbnRUeXBlID0gcmVhZEZvcm1hdC5pbmZv
LT5jb21wb25lbnRUeXBlOworICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHJhd0NvbXBvbmVu
dFR5cGUgPSBkcmF3Rm9ybWF0LmluZm8tPmNvbXBvbmVudFR5cGU7CisgICAgICAgICAgICAgICAg
ICAgIGJvb2wgcmVhZEZpeGVkUG9pbnQgPSAocmVhZENvbXBvbmVudFR5cGUgPT0gR0xfVU5TSUdO
RURfTk9STUFMSVpFRCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlYWRDb21wb25lbnRUeXBlID09IEdMX1NJR05FRF9OT1JNQUxJWkVEKTsKKyAgICAgICAg
ICAgICAgICAgICAgYm9vbCBkcmF3Rml4ZWRQb2ludCA9IChkcmF3Q29tcG9uZW50VHlwZSA9PSBH
TF9VTlNJR05FRF9OT1JNQUxJWkVEIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZHJhd0NvbXBvbmVudFR5cGUgPT0gR0xfU0lHTkVEX05PUk1BTElaRUQpOwor
CisgICAgICAgICAgICAgICAgICAgIGlmIChleHRlbnNpb25zLmNvbG9yQnVmZmVyRmxvYXQpCisg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVhZEZp
eGVkT3JGbG9hdCA9IChyZWFkRml4ZWRQb2ludCB8fCByZWFkQ29tcG9uZW50VHlwZSA9PSBHTF9G
TE9BVCk7CisgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRyYXdGaXhlZE9yRmxvYXQgPSAo
ZHJhd0ZpeGVkUG9pbnQgfHwgZHJhd0NvbXBvbmVudFR5cGUgPT0gR0xfRkxPQVQpOworCisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAocmVhZEZpeGVkT3JGbG9hdCAhPSBkcmF3Rml4ZWRPckZs
b2F0KQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJZiB0
aGUgcmVhZCBidWZmZXIgY29udGFpbnMgZml4ZWQtcG9pbnQgb3IgIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdGluZy1wb2ludCB2
YWx1ZXMsIHRoZSBkcmF3IGJ1ZmZlciAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYXMgd2VsbC4iKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlYWRG
aXhlZFBvaW50ICE9IGRyYXdGaXhlZFBvaW50KQorICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJJZiB0aGUgcmVhZCBidWZmZXIgY29udGFpbnMgZml4ZWQtcG9pbnQgIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlcywgdGhl
IGRyYXcgYnVmZmVyIG11c3QgYXMgd2VsbC4iKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAg
ICBpZiAocmVhZENvbXBvbmVudFR5cGUgPT0gR0xfVU5TSUdORURfSU5UICYmCisgICAgICAgICAg
ICAgICAgICAgICAgICBkcmF3Q29tcG9uZW50VHlwZSAhPSBHTF9VTlNJR05FRF9JTlQpCisgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgICAgICBpZiAocmVhZENvbXBvbmVudFR5cGUgPT0gR0xfSU5UICYmIGRyYXdDb21wb25lbnRU
eXBlICE9IEdMX0lOVCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmIChyZWFkQ29sb3JCdWZmZXItPmdldFNhbXBs
ZXMoKSA+IDAgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICghRm9ybWF0OjpTYW1lU2l6ZWQo
cmVhZEZvcm1hdCwgZHJhd0Zvcm1hdCkgfHwgIXNhbWVCb3VuZHMpKQorICAgICAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAoKHJlYWRGb3JtYXQuaW5mby0+Y29tcG9uZW50VHlw
ZSA9PSBHTF9JTlQgfHwKKyAgICAgICAgICAgICAgICAgcmVhZEZvcm1hdC5pbmZvLT5jb21wb25l
bnRUeXBlID09IEdMX1VOU0lHTkVEX0lOVCkgJiYKKyAgICAgICAgICAgICAgICBmaWx0ZXIgPT0g
R0xfTElORUFSKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgR0xlbnVt
IG1hc2tzW10gPSB7R0xfREVQVEhfQlVGRkVSX0JJVCwgR0xfU1RFTkNJTF9CVUZGRVJfQklUfTsK
KyAgICBHTGVudW0gYXR0YWNobWVudHNbXSA9IHtHTF9ERVBUSF9BVFRBQ0hNRU5ULCBHTF9TVEVO
Q0lMX0FUVEFDSE1FTlR9OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMjsgaSsrKQorICAg
IHsKKyAgICAgICAgaWYgKG1hc2sgJiBtYXNrc1tpXSkKKyAgICAgICAgeworICAgICAgICAgICAg
Y29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqcmVhZEJ1ZmZlciA9IHJlYWRGcmFtZWJ1
ZmZlci0+Z2V0QXR0YWNobWVudChhdHRhY2htZW50c1tpXSk7CisgICAgICAgICAgICBjb25zdCBn
bDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICpkcmF3QnVmZmVyID0gZHJhd0ZyYW1lYnVmZmVyLT5n
ZXRBdHRhY2htZW50KGF0dGFjaG1lbnRzW2ldKTsKKworICAgICAgICAgICAgaWYgKHJlYWRCdWZm
ZXIgJiYgZHJhd0J1ZmZlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoIUZv
cm1hdDo6U2FtZVNpemVkKHJlYWRCdWZmZXItPmdldEZvcm1hdCgpLCBkcmF3QnVmZmVyLT5nZXRG
b3JtYXQoKSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgaWYgKHJlYWRCdWZmZXItPmdldFNhbXBsZXMoKSA+IDAgJiYgIXNhbWVCb3VuZHMpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVSZWFkUGl4ZWxzKFZhbGlk
YXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCisgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQs
CisgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICBHTHZvaWQgKnBp
eGVscykKK3sKKyAgICByZXR1cm4gVmFsaWRhdGVSZWFkUGl4ZWxzQmFzZShjb250ZXh0LCB4LCB5
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIC0xLCBudWxscHRyLCBwaXhlbHMpOworfQor
Citib29sIFZhbGlkYXRlUmVhZFBpeGVsc1JvYnVzdEFOR0xFKFZhbGlkYXRpb25Db250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAq
bGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHZvaWQgKnBpeGVs
cykKK3sKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0RW50cnlQb2ludChjb250ZXh0LCBidWZTaXpl
KSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlk
YXRlUmVhZFBpeGVsc0Jhc2UoY29udGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0
eXBlLCBidWZTaXplLCBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBp
eGVscykpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFW
YWxpZGF0ZVJvYnVzdEJ1ZmZlclNpemUoY29udGV4dCwgYnVmU2l6ZSwgKmxlbmd0aCkpCisgICAg
eworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgVmFsaWRhdGVSZWFkblBpeGVsc0VYVChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqcGl4ZWxzKQoreworICAgIGlm
IChidWZTaXplIDwgMCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfVkFMVUUsICJidWZTaXplIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIiKSk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gVmFsaWRhdGVSZWFk
UGl4ZWxzQmFzZShjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ1
ZlNpemUsIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxz
KTsKK30KKworYm9vbCBWYWxpZGF0ZVJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoVmFsaWRhdGlvbkNv
bnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdm9pZCAqZGF0YSkKK3sKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0RW50cnlQb2ludChj
b250ZXh0LCBidWZTaXplKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBpZiAoIVZhbGlkYXRlUmVhZFBpeGVsc0Jhc2UoY29udGV4dCwgeCwgeSwgd2lkdGgsIGhl
aWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIGRhdGEpKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghVmFsaWRhdGVSb2J1c3RCdWZmZXJT
aXplKGNvbnRleHQsIGJ1ZlNpemUsICpsZW5ndGgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlR2VuUXVl
cmllc0VYVChnbDo6Q29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuKQoreworICAgIGlmICghY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLm9jY2x1c2lvblF1ZXJ5Qm9vbGVhbiAmJgorICAgICAgICAh
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRpc2pvaW50VGltZXJRdWVyeSkKKyAgICB7CisgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiUXVl
cnkgZXh0ZW5zaW9uIG5vdCBlbmFibGVkIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgcmV0dXJuIFZhbGlkYXRlR2VuT3JEZWxldGUoY29udGV4dCwgbik7Cit9CisKK2Jv
b2wgVmFsaWRhdGVEZWxldGVRdWVyaWVzRVhUKGdsOjpDb250ZXh0ICpjb250ZXh0LCBHTHNpemVp
IG4pCit7CisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkub2NjbHVzaW9uUXVlcnlC
b29sZWFuICYmCisgICAgICAgICFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGlzam9pbnRUaW1l
clF1ZXJ5KQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04sICJRdWVyeSBleHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gVmFsaWRhdGVHZW5PckRlbGV0ZShj
b250ZXh0LCBuKTsKK30KKworYm9vbCBWYWxpZGF0ZUJlZ2luUXVlcnlCYXNlKGdsOjpDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaWQpCit7CisgICAgaWYgKCFWYWxpZFF1
ZXJ5VHlwZShjb250ZXh0LCB0YXJnZXQpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBxdWVyeSB0YXJnZXQiKSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoaWQgPT0gMCkKKyAgICB7Cisg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAi
UXVlcnkgaWQgaXMgMCIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8v
IEZyb20gRVhUX29jY2x1c2lvbl9xdWVyeV9ib29sZWFuOiBJZiBCZWdpblF1ZXJ5RVhUIGlzIGNh
bGxlZCB3aXRoIGFuIDxpZD4KKyAgICAvLyBvZiB6ZXJvLCBpZiB0aGUgYWN0aXZlIHF1ZXJ5IG9i
amVjdCBuYW1lIGZvciA8dGFyZ2V0PiBpcyBub24temVybyAoZm9yIHRoZQorICAgIC8vIHRhcmdl
dHMgQU5ZX1NBTVBMRVNfUEFTU0VEX0VYVCBhbmQgQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZB
VElWRV9FWFQsIGlmCisgICAgLy8gdGhlIGFjdGl2ZSBxdWVyeSBmb3IgZWl0aGVyIHRhcmdldCBp
cyBub24temVybyksIGlmIDxpZD4gaXMgdGhlIG5hbWUgb2YgYW4KKyAgICAvLyBleGlzdGluZyBx
dWVyeSBvYmplY3Qgd2hvc2UgdHlwZSBkb2VzIG5vdCBtYXRjaCA8dGFyZ2V0Piwgb3IgaWYgPGlk
PiBpcyB0aGUKKyAgICAvLyBhY3RpdmUgcXVlcnkgb2JqZWN0IG5hbWUgZm9yIGFueSBxdWVyeSB0
eXBlLCB0aGUgZXJyb3IgSU5WQUxJRF9PUEVSQVRJT04gaXMKKyAgICAvLyBnZW5lcmF0ZWQuCisK
KyAgICAvLyBFbnN1cmUgbm8gb3RoZXIgcXVlcmllcyBhcmUgYWN0aXZlCisgICAgLy8gTk9URTog
SWYgb3RoZXIgcXVlcmllcyB0aGFuIG9jY2x1c2lvbiBhcmUgc3VwcG9ydGVkLCB3ZSB3aWxsIG5l
ZWQgdG8gY2hlY2sKKyAgICAvLyBzZXBhcmF0ZWx5IHRoYXQ6CisgICAgLy8gICAgYSkgVGhlIHF1
ZXJ5IElEIHBhc3NlZCBpcyBub3QgdGhlIGN1cnJlbnQgYWN0aXZlIHF1ZXJ5IGZvciBhbnkgdGFy
Z2V0L3R5cGUKKyAgICAvLyAgICBiKSBUaGVyZSBhcmUgbm8gYWN0aXZlIHF1ZXJpZXMgZm9yIHRo
ZSByZXF1ZXN0ZWQgdGFyZ2V0IChhbmQgaW4gdGhlIGNhc2UKKyAgICAvLyAgICAgICBvZiBHTF9B
TllfU0FNUExFU19QQVNTRURfRVhUIGFuZCBHTF9BTllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFU
SVZFX0VYVCwKKyAgICAvLyAgICAgICBubyBxdWVyeSBtYXkgYmUgYWN0aXZlIGZvciBlaXRoZXIg
aWYgZ2xCZWdpblF1ZXJ5IHRhcmdldHMgZWl0aGVyLgorCisgICAgaWYgKGNvbnRleHQtPmdldEdM
U3RhdGUoKS5pc1F1ZXJ5QWN0aXZlKHRhcmdldCkpCisgICAgeworICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIk90aGVyIHF1ZXJ5IGlzIGFj
dGl2ZSIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFF1ZXJ5ICpxdWVy
eU9iamVjdCA9IGNvbnRleHQtPmdldFF1ZXJ5KGlkLCB0cnVlLCB0YXJnZXQpOworCisgICAgLy8g
Y2hlY2sgdGhhdCBuYW1lIHdhcyBvYnRhaW5lZCB3aXRoIGdsR2VuUXVlcmllcworICAgIGlmICgh
cXVlcnlPYmplY3QpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTiwgIkludmFsaWQgcXVlcnkgaWQiKSk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBjaGVjayBmb3IgdHlwZSBtaXNtYXRjaAorICAgIGlm
IChxdWVyeU9iamVjdC0+Z2V0VHlwZSgpICE9IHRhcmdldCkKKyAgICB7CisgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiUXVlcnkgdHlwZSBk
b2VzIG5vdCBtYXRjaCB0YXJnZXQiKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUJlZ2luUXVlcnlFWFQoZ2w6OkNv
bnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpZCkKK3sKKyAgICBpZiAoIWNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5vY2NsdXNpb25RdWVyeUJvb2xlYW4gJiYKKyAgICAgICAg
IWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kaXNqb2ludFRpbWVyUXVlcnkgJiYgIWNvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5zeW5jUXVlcnkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIlF1ZXJ5IGV4dGVuc2lvbiBub3Qg
ZW5hYmxlZCIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBW
YWxpZGF0ZUJlZ2luUXVlcnlCYXNlKGNvbnRleHQsIHRhcmdldCwgaWQpOworfQorCitib29sIFZh
bGlkYXRlRW5kUXVlcnlCYXNlKGdsOjpDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0KQor
eworICAgIGlmICghVmFsaWRRdWVyeVR5cGUoY29udGV4dCwgdGFyZ2V0KSkKKyAgICB7CisgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQg
cXVlcnkgdGFyZ2V0IikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29u
c3QgUXVlcnkgKnF1ZXJ5T2JqZWN0ID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldEFjdGl2ZVF1
ZXJ5KHRhcmdldCk7CisKKyAgICBpZiAocXVlcnlPYmplY3QgPT0gbnVsbHB0cikKKyAgICB7Cisg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAi
UXVlcnkgdGFyZ2V0IG5vdCBhY3RpdmUiKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUVuZFF1ZXJ5RVhUKGdsOjpD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0KQoreworICAgIGlmICghY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLm9jY2x1c2lvblF1ZXJ5Qm9vbGVhbiAmJgorICAgICAgICAhY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmRpc2pvaW50VGltZXJRdWVyeSAmJiAhY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLnN5bmNRdWVyeSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiUXVlcnkgZXh0ZW5zaW9uIG5vdCBlbmFibGVkIikp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIFZhbGlkYXRlRW5k
UXVlcnlCYXNlKGNvbnRleHQsIHRhcmdldCk7Cit9CisKK2Jvb2wgVmFsaWRhdGVRdWVyeUNvdW50
ZXJFWFQoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGlkLCBHTGVudW0gdGFyZ2V0KQoreworICAg
IGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRpc2pvaW50VGltZXJRdWVyeSkKKyAgICB7
CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCAiRGlzam9pbnQgdGltZXIgcXVlcnkgbm90IGVuYWJsZWQiKSk7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBpZiAodGFyZ2V0ICE9IEdMX1RJTUVTVEFNUF9FWFQpCisgICAg
eworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJ
bnZhbGlkIHF1ZXJ5IHRhcmdldCIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIFF1ZXJ5ICpxdWVyeU9iamVjdCA9IGNvbnRleHQtPmdldFF1ZXJ5KGlkLCB0cnVlLCB0YXJn
ZXQpOworICAgIGlmIChxdWVyeU9iamVjdCA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJJbnZhbGlkIHF1
ZXJ5IGlkIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGNvbnRl
eHQtPmdldEdMU3RhdGUoKS5pc1F1ZXJ5QWN0aXZlKHF1ZXJ5T2JqZWN0KSkKKyAgICB7CisgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiUXVl
cnkgaXMgYWN0aXZlIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVHZXRRdWVyeWl2QmFzZShDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgKm51bVBhcmFtcykKK3sK
KyAgICBpZiAobnVtUGFyYW1zKQorICAgIHsKKyAgICAgICAgKm51bVBhcmFtcyA9IDA7CisgICAg
fQorCisgICAgaWYgKCFWYWxpZFF1ZXJ5VHlwZShjb250ZXh0LCB0YXJnZXQpICYmIHRhcmdldCAh
PSBHTF9USU1FU1RBTVBfRVhUKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBxdWVyeSB0eXBlIikpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3dpdGNoIChwbmFtZSkKKyAgICB7CisgICAgICAg
IGNhc2UgR0xfQ1VSUkVOVF9RVUVSWV9FWFQ6CisgICAgICAgICAgICBpZiAodGFyZ2V0ID09IEdM
X1RJTUVTVEFNUF9FWFQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfRU5VTSwg
IkNhbm5vdCB1c2UgY3VycmVudCBxdWVyeSBmb3IgdGltZXN0YW1wIikpOworICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEdMX1FVRVJZX0NPVU5URVJfQklUU19FWFQ6CisgICAgICAgICAgICBpZiAoIWNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5kaXNqb2ludFRpbWVyUXVlcnkgfHwKKyAgICAgICAgICAg
ICAgICAodGFyZ2V0ICE9IEdMX1RJTUVTVEFNUF9FWFQgJiYgdGFyZ2V0ICE9IEdMX1RJTUVfRUxB
UFNFRF9FWFQpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgcG5hbWUiKSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIHBuYW1lIikpOworICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIGlmIChudW1QYXJhbXMpCisgICAgeworICAgICAgICAvLyBB
bGwgcXVlcmllcyByZXR1cm4gb25seSBvbmUgdmFsdWUKKyAgICAgICAgKm51bVBhcmFtcyA9IDE7
CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVHZXRRdWVyeWl2
RVhUKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQg
KnBhcmFtcykKK3sKKyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5vY2NsdXNpb25R
dWVyeUJvb2xlYW4gJiYKKyAgICAgICAgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kaXNqb2lu
dFRpbWVyUXVlcnkgJiYgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zeW5jUXVlcnkpCisgICAg
eworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TiwgIlF1ZXJ5IGV4dGVuc2lvbiBub3QgZW5hYmxlZCIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIHJldHVybiBWYWxpZGF0ZUdldFF1ZXJ5aXZCYXNlKGNvbnRleHQsIHRh
cmdldCwgcG5hbWUsIG51bGxwdHIpOworfQorCitib29sIFZhbGlkYXRlR2V0UXVlcnlpdlJvYnVz
dEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBi
dWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCit7
CisgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEVudHJ5UG9pbnQoY29udGV4dCwgYnVmU2l6ZSkpCisg
ICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZGF0ZUdl
dFF1ZXJ5aXZCYXNlKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIGxlbmd0aCkpCisgICAgeworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEJ1ZmZl
clNpemUoY29udGV4dCwgYnVmU2l6ZSwgKmxlbmd0aCkpCisgICAgeworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVHZXRR
dWVyeU9iamVjdFZhbHVlQmFzZShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaWQsIEdMZW51bSBw
bmFtZSwgR0xzaXplaSAqbnVtUGFyYW1zKQoreworICAgIGlmIChudW1QYXJhbXMpCisgICAgewor
ICAgICAgICAqbnVtUGFyYW1zID0gMDsKKyAgICB9CisKKyAgICBRdWVyeSAqcXVlcnlPYmplY3Qg
PSBjb250ZXh0LT5nZXRRdWVyeShpZCwgZmFsc2UsIEdMX05PTkUpOworCisgICAgaWYgKCFxdWVy
eU9iamVjdCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAiUXVlcnkgZG9lcyBub3QgZXhpc3QiKSk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmlzUXVlcnlB
Y3RpdmUocXVlcnlPYmplY3QpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJRdWVyeSBjdXJyZW50bHkgYWN0aXZlIikpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3dpdGNoIChwbmFtZSkKKyAgICB7
CisgICAgICAgIGNhc2UgR0xfUVVFUllfUkVTVUxUX0VYVDoKKyAgICAgICAgY2FzZSBHTF9RVUVS
WV9SRVNVTFRfQVZBSUxBQkxFX0VYVDoKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X0VOVU0sICJJbnZhbGlkIHBuYW1lIGVudW0iKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgaWYgKG51bVBhcmFtcykKKyAgICB7CisgICAgICAgICpudW1QYXJhbXMg
PSAxOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlR2V0UXVl
cnlPYmplY3RpdkVYVChDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwg
R0xpbnQgKnBhcmFtcykKK3sKKyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kaXNq
b2ludFRpbWVyUXVlcnkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTiwgIlRpbWVyIHF1ZXJ5IGV4dGVuc2lvbiBub3QgZW5hYmxl
ZCIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gVmFsaWRhdGVH
ZXRRdWVyeU9iamVjdFZhbHVlQmFzZShjb250ZXh0LCBpZCwgcG5hbWUsIG51bGxwdHIpOworfQor
Citib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFt
cykKK3sKKyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kaXNqb2ludFRpbWVyUXVl
cnkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTiwgIlRpbWVyIHF1ZXJ5IGV4dGVuc2lvbiBub3QgZW5hYmxlZCIpKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghVmFsaWRhdGVSb2J1c3RFbnRyeVBv
aW50KGNvbnRleHQsIGJ1ZlNpemUpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIGlmICghVmFsaWRhdGVHZXRRdWVyeU9iamVjdFZhbHVlQmFzZShjb250ZXh0LCBp
ZCwgcG5hbWUsIGxlbmd0aCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEJ1ZmZlclNpemUoY29udGV4dCwgYnVmU2l6ZSwgKmxl
bmd0aCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdHVpdkVYVChDb250ZXh0ICpj
b250ZXh0LCBHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMpCit7CisgICAg
aWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGlzam9pbnRUaW1lclF1ZXJ5ICYmCisgICAg
ICAgICFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkub2NjbHVzaW9uUXVlcnlCb29sZWFuICYmICFj
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3luY1F1ZXJ5KQorICAgIHsKKyAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJRdWVyeSBleHRlbnNp
b24gbm90IGVuYWJsZWQiKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0
dXJuIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RWYWx1ZUJhc2UoY29udGV4dCwgaWQsIHBuYW1lLCBu
dWxscHRyKTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUo
Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCAqcGFyYW1zKQoreworICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLmRpc2pvaW50VGltZXJRdWVyeSAmJgorICAgICAgICAhY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLm9jY2x1c2lvblF1ZXJ5Qm9vbGVhbiAmJiAhY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN5
bmNRdWVyeSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAiUXVlcnkgZXh0ZW5zaW9uIG5vdCBlbmFibGVkIikpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEVudHJ5UG9p
bnQoY29udGV4dCwgYnVmU2l6ZSkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgaWYgKCFWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0VmFsdWVCYXNlKGNvbnRleHQsIGlk
LCBwbmFtZSwgbGVuZ3RoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBpZiAoIVZhbGlkYXRlUm9idXN0QnVmZmVyU2l6ZShjb250ZXh0LCBidWZTaXplLCAqbGVu
Z3RoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0aTY0dkVYVChDb250ZXh0ICpj
b250ZXh0LCBHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAqcGFyYW1zKQoreworICAg
IGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRpc2pvaW50VGltZXJRdWVyeSkKKyAgICB7
CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCAiVGltZXIgcXVlcnkgZXh0ZW5zaW9uIG5vdCBlbmFibGVkIikpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIHJldHVybiBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0VmFsdWVCYXNl
KGNvbnRleHQsIGlkLCBwbmFtZSwgbnVsbHB0cik7Cit9CisKK2Jvb2wgVmFsaWRhdGVHZXRRdWVy
eU9iamVjdGk2NHZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludDY0ICpwYXJhbXMpCit7Cisg
ICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGlzam9pbnRUaW1lclF1ZXJ5KQorICAg
IHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04sICJUaW1lciBxdWVyeSBleHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0RW50cnlQb2ludChjb250
ZXh0LCBidWZTaXplKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBpZiAoIVZhbGlkYXRlR2V0UXVlcnlPYmplY3RWYWx1ZUJhc2UoY29udGV4dCwgaWQsIHBuYW1l
LCBsZW5ndGgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlm
ICghVmFsaWRhdGVSb2J1c3RCdWZmZXJTaXplKGNvbnRleHQsIGJ1ZlNpemUsICpsZW5ndGgpKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOwor
fQorCitib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aTY0dkVYVChDb250ZXh0ICpjb250ZXh0
LCBHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0x1aW50NjQgKnBhcmFtcykKK3sKKyAgICBpZiAo
IWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kaXNqb2ludFRpbWVyUXVlcnkpCisgICAgeworICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIlRp
bWVyIHF1ZXJ5IGV4dGVuc2lvbiBub3QgZW5hYmxlZCIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICByZXR1cm4gVmFsaWRhdGVHZXRRdWVyeU9iamVjdFZhbHVlQmFzZShjb250
ZXh0LCBpZCwgcG5hbWUsIG51bGxwdHIpOworfQorCitib29sIFZhbGlkYXRlR2V0UXVlcnlPYmpl
Y3R1aTY0dlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50NjQgKnBhcmFtcykKK3sK
KyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kaXNqb2ludFRpbWVyUXVlcnkpCisg
ICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwgIlRpbWVyIHF1ZXJ5IGV4dGVuc2lvbiBub3QgZW5hYmxlZCIpKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghVmFsaWRhdGVSb2J1c3RFbnRyeVBvaW50KGNv
bnRleHQsIGJ1ZlNpemUpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIGlmICghVmFsaWRhdGVHZXRRdWVyeU9iamVjdFZhbHVlQmFzZShjb250ZXh0LCBpZCwgcG5h
bWUsIGxlbmd0aCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
aWYgKCFWYWxpZGF0ZVJvYnVzdEJ1ZmZlclNpemUoY29udGV4dCwgYnVmU2l6ZSwgKmxlbmd0aCkp
CisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3N0YXRpYyBib29sIFZhbGlkYXRlVW5pZm9ybUNvbW1vbkJhc2UoZ2w6OkNvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
YXJnZXRVbmlmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IExpbmtlZFVuaWZvcm0gKip1bmlmb3JtT3V0KQoreworICAgIGlmIChjb3VudCA8IDApCisgICAg
eworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBnbDo6UHJvZ3JhbSAqcHJvZ3Jh
bSA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRQcm9ncmFtKCk7CisgICAgaWYgKCFwcm9ncmFt
KQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChwcm9n
cmFtLT5pc0lnbm9yZWRVbmlmb3JtTG9jYXRpb24obG9jYXRpb24pKQorICAgIHsKKyAgICAgICAg
Ly8gU2lsZW50bHkgaWdub3JlIHRoZSB1bmlmb3JtIGNvbW1hbmQKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGlmICghcHJvZ3JhbS0+aXNWYWxpZFVuaWZvcm1Mb2NhdGlvbihs
b2NhdGlvbikpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
Y29uc3QgTGlua2VkVW5pZm9ybSAmdW5pZm9ybSA9IHByb2dyYW0tPmdldFVuaWZvcm1CeUxvY2F0
aW9uKGxvY2F0aW9uKTsKKworICAgIC8vIGF0dGVtcHRpbmcgdG8gd3JpdGUgYW4gYXJyYXkgdG8g
YSBub24tYXJyYXkgdW5pZm9ybSBpcyBhbiBJTlZBTElEX09QRVJBVElPTgorICAgIGlmICghdW5p
Zm9ybS5pc0FycmF5KCkgJiYgY291bnQgPiAxKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgICp1bmlmb3JtT3V0ID0gJnVuaWZvcm07CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtKGdsOjpDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gdW5pZm9ybVR5cGUsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50KQoreworICAgIC8v
IENoZWNrIGZvciBFUzMgdW5pZm9ybSBlbnRyeSBwb2ludHMKKyAgICBpZiAoVmFyaWFibGVDb21w
b25lbnRUeXBlKHVuaWZvcm1UeXBlKSA9PSBHTF9VTlNJR05FRF9JTlQgJiYKKyAgICAgICAgY29u
dGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQorICAgIHsKKyAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGNvbnN0IExpbmtlZFVuaWZvcm0gKnVuaWZvcm0gPSBu
dWxscHRyOworICAgIGlmICghVmFsaWRhdGVVbmlmb3JtQ29tbW9uQmFzZShjb250ZXh0LCB1bmlm
b3JtVHlwZSwgbG9jYXRpb24sIGNvdW50LCAmdW5pZm9ybSkpCisgICAgeworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgR0xlbnVtIHRhcmdldEJvb2xUeXBlID0gVmFyaWFibGVC
b29sVmVjdG9yVHlwZSh1bmlmb3JtVHlwZSk7CisgICAgYm9vbCBzYW1wbGVyVW5pZm9ybUNoZWNr
ID0gKElzU2FtcGxlclR5cGUodW5pZm9ybS0+dHlwZSkgJiYgdW5pZm9ybVR5cGUgPT0gR0xfSU5U
KTsKKyAgICBpZiAoIXNhbXBsZXJVbmlmb3JtQ2hlY2sgJiYgdW5pZm9ybVR5cGUgIT0gdW5pZm9y
bS0+dHlwZSAmJiB0YXJnZXRCb29sVHlwZSAhPSB1bmlmb3JtLT50eXBlKQorICAgIHsKKyAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IFZhbGlkYXRlVW5pZm9ybU1hdHJpeChnbDo6Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1hdHJp
eFR5cGUsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSkKK3sKKyAgICAvLyBDaGVjayBmb3IgRVMzIHVu
aWZvcm0gZW50cnkgcG9pbnRzCisgICAgaW50IHJvd3MgPSBWYXJpYWJsZVJvd0NvdW50KG1hdHJp
eFR5cGUpOworICAgIGludCBjb2xzID0gVmFyaWFibGVDb2x1bW5Db3VudChtYXRyaXhUeXBlKTsK
KyAgICBpZiAocm93cyAhPSBjb2xzICYmIGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigp
IDwgMykKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAo
dHJhbnNwb3NlICE9IEdMX0ZBTFNFICYmIGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigp
IDwgMykKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfVkFMVUUpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGNvbnN0IExp
bmtlZFVuaWZvcm0gKnVuaWZvcm0gPSBudWxscHRyOworICAgIGlmICghVmFsaWRhdGVVbmlmb3Jt
Q29tbW9uQmFzZShjb250ZXh0LCBtYXRyaXhUeXBlLCBsb2NhdGlvbiwgY291bnQsICZ1bmlmb3Jt
KSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAodW5pZm9y
bS0+dHlwZSAhPSBtYXRyaXhUeXBlKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlU3RhdGVRdWVyeShW
YWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAqbmF0aXZlVHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqbnVtUGFyYW1zKQoreworICAgIGlm
ICghY29udGV4dC0+Z2V0UXVlcnlQYXJhbWV0ZXJJbmZvKHBuYW1lLCBuYXRpdmVUeXBlLCBudW1Q
YXJhbXMpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBjb25zdCBD
YXBzICZjYXBzID0gY29udGV4dC0+Z2V0Q2FwcygpOworCisgICAgaWYgKHBuYW1lID49IEdMX0RS
QVdfQlVGRkVSMCAmJiBwbmFtZSA8PSBHTF9EUkFXX0JVRkZFUjE1KQorICAgIHsKKyAgICAgICAg
dW5zaWduZWQgaW50IGNvbG9yQXR0YWNobWVudCA9IChwbmFtZSAtIEdMX0RSQVdfQlVGRkVSMCk7
CisKKyAgICAgICAgaWYgKGNvbG9yQXR0YWNobWVudCA+PSBjYXBzLm1heERyYXdCdWZmZXJzKQor
ICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgfQorCisgICAgc3dpdGNoIChwbmFtZSkKKyAgICB7CisgICAgICBjYXNlIEdMX1RFWFRVUkVf
QklORElOR18yRDoKKyAgICAgIGNhc2UgR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQOgorICAg
ICAgY2FzZSBHTF9URVhUVVJFX0JJTkRJTkdfM0Q6CisgICAgICBjYXNlIEdMX1RFWFRVUkVfQklO
RElOR18yRF9BUlJBWToKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1RFWFRVUkVfQklO
RElOR19FWFRFUk5BTF9PRVM6CisgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuZWdsU3RyZWFtQ29uc3VtZXJFeHRlcm5hbCAmJgorICAgICAgICAgICAgICAhY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmVnbEltYWdlRXh0ZXJuYWwpCisgICAgICAgICAgeworICAgICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOZWl0aGVyIE5WX0VHTF9zdHJlYW1f
Y29uc3VtZXJfZXh0ZXJuYWwgbm9yICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwgZXh0ZW5zaW9ucyBlbmFibGVkIikp
OworICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfQorICAgICAgICAgIGJy
ZWFrOworCisgICAgICBjYXNlIEdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRToKKyAg
ICAgIGNhc2UgR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JNQVQ6CisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0UmVhZEZyYW1lYnVmZmVy
KCktPmNoZWNrU3RhdHVzKAorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5nZXRDb250ZXh0
U3RhdGUoKSkgIT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGNvbnN0IEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldEdM
U3RhdGUoKS5nZXRSZWFkRnJhbWVidWZmZXIoKTsKKyAgICAgICAgICAgIEFTU0VSVChmcmFtZWJ1
ZmZlcik7CisKKyAgICAgICAgICAgIGlmIChmcmFtZWJ1ZmZlci0+Z2V0UmVhZEJ1ZmZlclN0YXRl
KCkgPT0gR0xfTk9ORSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIlJlYWQgYnVmZmVyIGlzIEdM
X05PTkUiKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmF0dGFjaG1lbnQgPSBm
cmFtZWJ1ZmZlci0+Z2V0UmVhZENvbG9yYnVmZmVyKCk7CisgICAgICAgICAgICBpZiAoIWF0dGFj
aG1lbnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAg
IGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIC8vIHBuYW1lIGlzIHZhbGlk
LCBidXQgdGhlcmUgYXJlIG5vIHBhcmFtZXRlcnMgdG8gcmV0dXJuCisgICAgaWYgKCpudW1QYXJh
bXMgPT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZVJvYnVzdFN0YXRlUXVlcnkoVmFsaWRhdGlvbkNv
bnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKm5hdGl2ZVR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKm51bVBhcmFtcykKK3sKKyAgICBpZiAo
IVZhbGlkYXRlUm9idXN0RW50cnlQb2ludChjb250ZXh0LCBidWZTaXplKSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlkYXRlU3RhdGVRdWVyeShj
b250ZXh0LCBwbmFtZSwgbmF0aXZlVHlwZSwgbnVtUGFyYW1zKSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0QnVmZmVyU2l6ZShj
b250ZXh0LCBidWZTaXplLCAqbnVtUGFyYW1zKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUNvcHlUZXhJ
bWFnZVBhcmFtZXRlcnNCYXNlKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNTdWJJbWFnZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHlvZmZzZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgem9mZnNldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRm9ybWF0ICp0ZXh0dXJlRm9ybWF0T3V0KQoreworICAgIGlmIChsZXZl
bCA8IDAgfHwgeG9mZnNldCA8IDAgfHwgeW9mZnNldCA8IDAgfHwgem9mZnNldCA8IDAgfHwgd2lk
dGggPCAwIHx8IGhlaWdodCA8IDApCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBpZiAoc3RkOjpudW1lcmljX2xpbWl0czxHTHNpemVpPjo6bWF4KCkgLSB4b2Zmc2V0
IDwgd2lkdGggfHwgc3RkOjpudW1lcmljX2xpbWl0czxHTHNpemVpPjo6bWF4KCkgLSB5b2Zmc2V0
IDwgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYg
KGJvcmRlciAhPSAwKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
aWYgKCFWYWxpZE1pcExldmVsKGNvbnRleHQsIHRhcmdldCwgbGV2ZWwpKQorICAgIHsKKyAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uc3QgYXV0byAmc3RhdGUgICAgPSBjb250
ZXh0LT5nZXRHTFN0YXRlKCk7CisgICAgYXV0byByZWFkRnJhbWVidWZmZXIgPSBzdGF0ZS5nZXRS
ZWFkRnJhbWVidWZmZXIoKTsKKyAgICBpZiAocmVhZEZyYW1lYnVmZmVyLT5jaGVja1N0YXR1cyhj
b250ZXh0LT5nZXRDb250ZXh0U3RhdGUoKSkgIT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpCisg
ICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0ZSQU1F
QlVGRkVSX09QRVJBVElPTikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
aWYgKHJlYWRGcmFtZWJ1ZmZlci0+aWQoKSAhPSAwICYmIHJlYWRGcmFtZWJ1ZmZlci0+Z2V0U2Ft
cGxlcyhjb250ZXh0LT5nZXRDb250ZXh0U3RhdGUoKSkgIT0gMCkKKyAgICB7CisgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAocmVhZEZyYW1lYnVmZmVyLT5nZXRSZWFk
QnVmZmVyU3RhdGUoKSA9PSBHTF9OT05FKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJSZWFkIGJ1ZmZlciBpcyBHTF9OT05F
IikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uc3QgZ2w6OkNhcHMg
JmNhcHMgPSBjb250ZXh0LT5nZXRDYXBzKCk7CisKKyAgICBHTHVpbnQgbWF4RGltZW5zaW9uID0g
MDsKKyAgICBzd2l0Y2ggKHRhcmdldCkKKyAgICB7CisgICAgICBjYXNlIEdMX1RFWFRVUkVfMkQ6
CisgICAgICAgIG1heERpbWVuc2lvbiA9IGNhcHMubWF4MkRUZXh0dXJlU2l6ZTsKKyAgICAgICAg
YnJlYWs7CisKKyAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YOgorICAg
ICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1g6CisgICAgICBjYXNlIEdMX1RF
WFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWToKKyAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01B
UF9ORUdBVElWRV9ZOgorICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1o6
CisgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWjoKKyAgICAgICAgbWF4
RGltZW5zaW9uID0gY2Fwcy5tYXhDdWJlTWFwVGV4dHVyZVNpemU7CisgICAgICAgIGJyZWFrOwor
CisgICAgICBjYXNlIEdMX1RFWFRVUkVfMkRfQVJSQVk6CisgICAgICAgIG1heERpbWVuc2lvbiA9
IGNhcHMubWF4MkRUZXh0dXJlU2l6ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgR0xf
VEVYVFVSRV8zRDoKKyAgICAgICAgbWF4RGltZW5zaW9uID0gY2Fwcy5tYXgzRFRleHR1cmVTaXpl
OworICAgICAgICBicmVhazsKKworICAgICAgZGVmYXVsdDoKKyAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJlID0KKyAgICAgICAgc3RhdGUuZ2V0
VGFyZ2V0VGV4dHVyZShJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkgPyBHTF9URVhUVVJF
X0NVQkVfTUFQIDogdGFyZ2V0KTsKKyAgICBpZiAoIXRleHR1cmUpCisgICAgeworICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKHRleHR1cmUtPmdldEltbXV0YWJsZUZv
cm1hdCgpICYmICFpc1N1YkltYWdlKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9IGdsOjpH
ZXRJbnRlcm5hbEZvcm1hdEluZm8oaW50ZXJuYWxmb3JtYXQpOworCisgICAgaWYgKGZvcm1hdElu
Zm8uZGVwdGhCaXRzID4gMCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBpZiAoZm9ybWF0SW5mby5jb21wcmVzc2VkICYmICFWYWxpZENvbXByZXNzZWRJbWFn
ZVNpemUoY29udGV4dCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpKQorICAgIHsKKyAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChpc1N1YkltYWdlKQorICAg
IHsKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4oeG9mZnNldCArIHdpZHRoKSA+IHRl
eHR1cmUtPmdldFdpZHRoKHRhcmdldCwgbGV2ZWwpIHx8CisgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxzaXplX3Q+KHlvZmZzZXQgKyBoZWlnaHQpID4gdGV4dHVyZS0+Z2V0SGVpZ2h0KHRhcmdldCwg
bGV2ZWwpIHx8CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxzaXplX3Q+KHpvZmZzZXQpID49IHRl
eHR1cmUtPmdldERlcHRoKHRhcmdldCwgbGV2ZWwpKQorICAgICAgICB7CisgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAg
ICAgaWYgKElzQ3ViZU1hcFRleHR1cmVUYXJnZXQodGFyZ2V0KSAmJiB3aWR0aCAhPSBoZWlnaHQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghZm9ybWF0SW5mby50ZXh0dXJlU3VwcG9ydChjb250ZXh0LT5nZXRDbGllbnRN
YWpvclZlcnNpb24oKSwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBpbnQgbWF4TGV2
ZWxEaW1lbnNpb24gPSAobWF4RGltZW5zaW9uID4+IGxldmVsKTsKKyAgICAgICAgaWYgKHN0YXRp
Y19jYXN0PGludD4od2lkdGgpID4gbWF4TGV2ZWxEaW1lbnNpb24gfHwgc3RhdGljX2Nhc3Q8aW50
PihoZWlnaHQpID4gbWF4TGV2ZWxEaW1lbnNpb24pCisgICAgICAgIHsKKyAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICh0ZXh0dXJlRm9ybWF0
T3V0KQorICAgIHsKKyAgICAgICAgKnRleHR1cmVGb3JtYXRPdXQgPSB0ZXh0dXJlLT5nZXRGb3Jt
YXQodGFyZ2V0LCBsZXZlbCk7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMg
Ym9vbCBWYWxpZGF0ZURyYXdCYXNlKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBwcmltY291bnQpCit7CisgICAgc3dpdGNoIChtb2RlKQorICAgIHsKKyAgICAgIGNhc2Ug
R0xfUE9JTlRTOgorICAgICAgY2FzZSBHTF9MSU5FUzoKKyAgICAgIGNhc2UgR0xfTElORV9MT09Q
OgorICAgICAgY2FzZSBHTF9MSU5FX1NUUklQOgorICAgICAgY2FzZSBHTF9UUklBTkdMRVM6Cisg
ICAgICBjYXNlIEdMX1RSSUFOR0xFX1NUUklQOgorICAgICAgY2FzZSBHTF9UUklBTkdMRV9GQU46
CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGlmIChjb3VudCA8IDApCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBjb25zdCBTdGF0ZSAmc3RhdGUgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCk7
CisKKyAgICAvLyBDaGVjayBmb3IgbWFwcGVkIGJ1ZmZlcnMKKyAgICBpZiAoc3RhdGUuaGFzTWFw
cGVkQnVmZmVyKEdMX0FSUkFZX0JVRkZFUikpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gc3RhdGUuZ2V0RHJh
d0ZyYW1lYnVmZmVyKCk7CisgICAgaWYgKGNvbnRleHQtPmdldExpbWl0YXRpb25zKCkubm9TZXBh
cmF0ZVN0ZW5jaWxSZWZzQW5kTWFza3MpCisgICAgeworICAgICAgICBjb25zdCBGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnQgKnN0ZW5jaWxCdWZmZXIgPSBmcmFtZWJ1ZmZlci0+Z2V0U3RlbmNpbGJ1ZmZl
cigpOworICAgICAgICBHTHVpbnQgc3RlbmNpbEJpdHMgICAgICAgICAgICAgICAgICAgICAgICAg
PSBzdGVuY2lsQnVmZmVyID8gc3RlbmNpbEJ1ZmZlci0+Z2V0U3RlbmNpbFNpemUoKSA6IDA7Cisg
ICAgICAgIEdMdWludCBtaW5pbXVtUmVxdWlyZWRTdGVuY2lsTWFzayAgICAgICAgICA9ICgxIDw8
IHN0ZW5jaWxCaXRzKSAtIDE7CisgICAgICAgIGNvbnN0IERlcHRoU3RlbmNpbFN0YXRlICZkZXB0
aFN0ZW5jaWxTdGF0ZSA9IHN0YXRlLmdldERlcHRoU3RlbmNpbFN0YXRlKCk7CisgICAgICAgIGlm
ICgoZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbFdyaXRlbWFzayAmIG1pbmltdW1SZXF1aXJlZFN0
ZW5jaWxNYXNrKSAhPQorICAgICAgICAgICAgICAgIChkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2ls
QmFja1dyaXRlbWFzayAmIG1pbmltdW1SZXF1aXJlZFN0ZW5jaWxNYXNrKSB8fAorICAgICAgICAg
ICAgc3RhdGUuZ2V0U3RlbmNpbFJlZigpICE9IHN0YXRlLmdldFN0ZW5jaWxCYWNrUmVmKCkgfHwK
KyAgICAgICAgICAgIChkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsTWFzayAmIG1pbmltdW1SZXF1
aXJlZFN0ZW5jaWxNYXNrKSAhPQorICAgICAgICAgICAgICAgIChkZXB0aFN0ZW5jaWxTdGF0ZS5z
dGVuY2lsQmFja01hc2sgJiBtaW5pbXVtUmVxdWlyZWRTdGVuY2lsTWFzaykpCisgICAgICAgIHsK
KyAgICAgICAgICAgIC8vIE5vdGU6IHRoZXNlIHNlcGFyYXRlIHZhbHVlcyBhcmUgbm90IHN1cHBv
cnRlZCBpbiBXZWJHTCwgZHVlIHRvIEQzRCdzIGxpbWl0YXRpb25zLiBTZWUKKyAgICAgICAgICAg
IC8vIFNlY3Rpb24gNi4xMCBvZiB0aGUgV2ViR0wgMS4wIHNwZWMKKyAgICAgICAgICAgIEVSUigK
KyAgICAgICAgICAgICAgICAiVGhpcyBBTkdMRSBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBw
b3J0IHNlcGFyYXRlIGZyb250L2JhY2sgc3RlbmNpbCAiCisgICAgICAgICAgICAgICAgIndyaXRl
bWFza3MsIHJlZmVyZW5jZSB2YWx1ZXMsIG9yIHN0ZW5jaWwgbWFzayB2YWx1ZXMuIik7CisgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgaWYg
KGZyYW1lYnVmZmVyLT5jaGVja1N0YXR1cyhjb250ZXh0LT5nZXRDb250ZXh0U3RhdGUoKSkgIT0g
R0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTikpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgZ2w6OlByb2dyYW0gKnByb2dyYW0gPSBzdGF0ZS5n
ZXRQcm9ncmFtKCk7CisgICAgaWYgKCFwcm9ncmFtKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIGlmICghcHJvZ3JhbS0+dmFsaWRhdGVTYW1wbGVycyhOVUxM
LCBjb250ZXh0LT5nZXRDYXBzKCkpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIC8vIFVuaWZvcm0gYnVmZmVyIHZhbGlkYXRpb24KKyAgICBmb3IgKHVuc2ln
bmVkIGludCB1bmlmb3JtQmxvY2tJbmRleCA9IDA7IHVuaWZvcm1CbG9ja0luZGV4IDwgcHJvZ3Jh
bS0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NrQ291bnQoKTsgdW5pZm9ybUJsb2NrSW5kZXgrKykKKyAg
ICB7CisgICAgICAgIGNvbnN0IGdsOjpVbmlmb3JtQmxvY2sgJnVuaWZvcm1CbG9jayA9IHByb2dy
YW0tPmdldFVuaWZvcm1CbG9ja0J5SW5kZXgodW5pZm9ybUJsb2NrSW5kZXgpOworICAgICAgICBH
THVpbnQgYmxvY2tCaW5kaW5nID0gcHJvZ3JhbS0+Z2V0VW5pZm9ybUJsb2NrQmluZGluZyh1bmlm
b3JtQmxvY2tJbmRleCk7CisgICAgICAgIGNvbnN0IE9mZnNldEJpbmRpbmdQb2ludGVyPEJ1ZmZl
cj4gJnVuaWZvcm1CdWZmZXIgPQorICAgICAgICAgICAgc3RhdGUuZ2V0SW5kZXhlZFVuaWZvcm1C
dWZmZXIoYmxvY2tCaW5kaW5nKTsKKworICAgICAgICBpZiAodW5pZm9ybUJ1ZmZlci5nZXQoKSA9
PSBudWxscHRyKQorICAgICAgICB7CisgICAgICAgICAgICAvLyB1bmRlZmluZWQgYmVoYXZpb3Vy
CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgICAgICBFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAiSXQgaXMgdW5k
ZWZpbmVkIGJlaGF2aW91ciB0byBoYXZlIGEgdXNlZCBidXQgdW5ib3VuZCB1bmlmb3JtIGJ1ZmZl
ci4iKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBz
aXplX3QgdW5pZm9ybUJ1ZmZlclNpemUgPSB1bmlmb3JtQnVmZmVyLmdldFNpemUoKTsKKyAgICAg
ICAgaWYgKHVuaWZvcm1CdWZmZXJTaXplID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIC8v
IEJpbmQgdGhlIHdob2xlIGJ1ZmZlci4KKyAgICAgICAgICAgIHVuaWZvcm1CdWZmZXJTaXplID0g
c3RhdGljX2Nhc3Q8c2l6ZV90Pih1bmlmb3JtQnVmZmVyLT5nZXRTaXplKCkpOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKHVuaWZvcm1CdWZmZXJTaXplIDwgdW5pZm9ybUJsb2NrLmRhdGFTaXpl
KQorICAgICAgICB7CisgICAgICAgICAgICAvLyB1bmRlZmluZWQgYmVoYXZpb3VyCisgICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAiSXQgaXMgdW5kZWZpbmVkIGJl
aGF2aW91ciB0byB1c2UgYSB1bmlmb3JtIGJ1ZmZlciB0aGF0IGlzIHRvbyBzbWFsbC4iKSk7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBOby1v
cCBpZiB6ZXJvIGNvdW50CisgICAgcmV0dXJuIChjb3VudCA+IDApOworfQorCitib29sIFZhbGlk
YXRlRHJhd0FycmF5cyhWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZmly
c3QsCisgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBwcmltY291bnQpCit7CisgICAgaWYgKGZpcnN0IDwgMCkKKyAg
ICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUp
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGNvbnN0IFN0YXRlICZzdGF0
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCk7CisgICAg
Z2w6OlRyYW5zZm9ybUZlZWRiYWNrICpjdXJUcmFuc2Zvcm1GZWVkYmFjayA9IHN0YXRlLmdldEN1
cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIGlmIChjdXJUcmFuc2Zvcm1GZWVkYmFjayAm
JiBjdXJUcmFuc2Zvcm1GZWVkYmFjay0+aXNBY3RpdmUoKSAmJiAhY3VyVHJhbnNmb3JtRmVlZGJh
Y2stPmlzUGF1c2VkKCkgJiYKKyAgICAgICAgY3VyVHJhbnNmb3JtRmVlZGJhY2stPmdldFByaW1p
dGl2ZU1vZGUoKSAhPSBtb2RlKQorICAgIHsKKyAgICAgICAgLy8gSXQgaXMgYW4gaW52YWxpZCBv
cGVyYXRpb24gdG8gY2FsbCBEcmF3QXJyYXlzIG9yIERyYXdBcnJheXNJbnN0YW5jZWQgd2l0aCBh
IGRyYXcgbW9kZQorICAgICAgICAvLyB0aGF0IGRvZXMgbm90IG1hdGNoIHRoZSBjdXJyZW50IHRy
YW5zZm9ybSBmZWVkYmFjayBvYmplY3QncyBkcmF3IG1vZGUgKGlmIHRyYW5zZm9ybSBmZWVkYmFj
aworICAgICAgICAvLyBpcyBhY3RpdmUpLCAoMy4wLjIsIHNlY3Rpb24gMi4xNCwgcGcgODYpCisg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlkYXRlRHJhd0Jh
c2UoY29udGV4dCwgbW9kZSwgY291bnQsIHByaW1jb3VudCkpCisgICAgeworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZGF0ZURyYXdBdHRyaWJzKGNvbnRleHQs
IHByaW1jb3VudCwgY291bnQpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlRHJhd0FycmF5c0luc3RhbmNl
ZChDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291
bnQsIEdMc2l6ZWkgcHJpbWNvdW50KQoreworICAgIGlmIChwcmltY291bnQgPCAwKQorICAgIHsK
KyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZGF0ZURyYXdBcnJh
eXMoY29udGV4dCwgbW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIE5vLW9wIGlmIHplcm8gcHJpbWl0aXZl
IGNvdW50CisgICAgcmV0dXJuIChwcmltY291bnQgPiAwKTsKK30KKworc3RhdGljIGJvb2wgVmFs
aWRhdGVEcmF3SW5zdGFuY2VkQU5HTEUoQ29udGV4dCAqY29udGV4dCkKK3sKKyAgICAvLyBWZXJp
ZnkgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGFjdGl2ZSBhdHRyaWJ1dGUgd2l0aCBhIGRpdmlzb3Ig
b2YgemVybworICAgIGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUgPSBjb250ZXh0LT5nZXRHTFN0YXRl
KCk7CisKKyAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbSA9IHN0YXRlLmdldFByb2dyYW0oKTsKKwor
ICAgIGNvbnN0IFZlcnRleEFycmF5ICp2YW8gPSBzdGF0ZS5nZXRWZXJ0ZXhBcnJheSgpOworICAg
IGZvciAoc2l6ZV90IGF0dHJpYnV0ZUluZGV4ID0gMDsgYXR0cmlidXRlSW5kZXggPCBNQVhfVkVS
VEVYX0FUVFJJQlM7IGF0dHJpYnV0ZUluZGV4KyspCisgICAgeworICAgICAgICBjb25zdCBWZXJ0
ZXhBdHRyaWJ1dGUgJmF0dHJpYiA9IHZhby0+Z2V0VmVydGV4QXR0cmlidXRlKGF0dHJpYnV0ZUlu
ZGV4KTsKKyAgICAgICAgaWYgKHByb2dyYW0tPmlzQXR0cmliTG9jYXRpb25BY3RpdmUoYXR0cmli
dXRlSW5kZXgpICYmIGF0dHJpYi5kaXZpc29yID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkFOR0xFX2luc3RhbmNlZF9hcnJheXMgcmVxdWlyZXMgdGhhdCBhdCBsZWFzdCBvbmUg
YWN0aXZlIGF0dHJpYnV0ZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzIGEg
ZGl2aXNvciBvZiB6ZXJvLiIpKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgVmFsaWRh
dGVEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGUs
IEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIHByaW1jb3VudCkKK3sKKyAgICBp
ZiAoIVZhbGlkYXRlRHJhd0luc3RhbmNlZEFOR0xFKGNvbnRleHQpKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBWYWxpZGF0ZURyYXdBcnJheXNJbnN0
YW5jZWQoY29udGV4dCwgbW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOworfQorCitib29s
IFZhbGlkYXRlRHJhd0VsZW1lbnRzKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBwcmltY291bnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIEluZGV4UmFuZ2UgKmluZGV4UmFuZ2VPdXQpCit7CisgICAgc3dpdGNoICh0eXBl
KQorICAgIHsKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgIGNhc2UgR0xfVU5T
SUdORURfU0hPUlQ6CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lO
VDoKKyAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYm
ICFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZWxlbWVudEluZGV4VWludCkKKyAgICAgICAgICB7
CisgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSkpOworICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfQorICAgICAgICAg
IGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgY29uc3QgU3RhdGUgJnN0YXRlID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpOworCisgICAg
Z2w6OlRyYW5zZm9ybUZlZWRiYWNrICpjdXJUcmFuc2Zvcm1GZWVkYmFjayA9IHN0YXRlLmdldEN1
cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIGlmIChjdXJUcmFuc2Zvcm1GZWVkYmFjayAm
JiBjdXJUcmFuc2Zvcm1GZWVkYmFjay0+aXNBY3RpdmUoKSAmJiAhY3VyVHJhbnNmb3JtRmVlZGJh
Y2stPmlzUGF1c2VkKCkpCisgICAgeworICAgICAgICAvLyBJdCBpcyBhbiBpbnZhbGlkIG9wZXJh
dGlvbiB0byBjYWxsIERyYXdFbGVtZW50cywgRHJhd1JhbmdlRWxlbWVudHMgb3IgRHJhd0VsZW1l
bnRzSW5zdGFuY2VkCisgICAgICAgIC8vIHdoaWxlIHRyYW5zZm9ybSBmZWVkYmFjayBpcyBhY3Rp
dmUsICgzLjAuMiwgc2VjdGlvbiAyLjE0LCBwZyA4NikKKyAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIC8vIENoZWNrIGZvciBtYXBwZWQgYnVmZmVycworICAgIGlmIChzdGF0
ZS5oYXNNYXBwZWRCdWZmZXIoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIpKQorICAgIHsKKyAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGNvbnN0IGdsOjpWZXJ0ZXhBcnJheSAq
dmFvID0gc3RhdGUuZ2V0VmVydGV4QXJyYXkoKTsKKyAgICBnbDo6QnVmZmVyICplbGVtZW50QXJy
YXlCdWZmZXIgPSB2YW8tPmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpLmdldCgpOworICAgIGlmICgh
aW5kaWNlcyAmJiAhZWxlbWVudEFycmF5QnVmZmVyKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIGlmIChlbGVtZW50QXJyYXlCdWZmZXIpCisgICAgeworICAg
ICAgICBjb25zdCBnbDo6VHlwZSAmdHlwZUluZm8gPSBnbDo6R2V0VHlwZUluZm8odHlwZSk7CisK
KyAgICAgICAgR0xpbnQ2NCBvZmZzZXQgPSByZWludGVycHJldF9jYXN0PEdMaW50NjQ+KGluZGlj
ZXMpOworICAgICAgICBHTGludDY0IGJ5dGVDb3VudCA9IHN0YXRpY19jYXN0PEdMaW50NjQ+KHR5
cGVJbmZvLmJ5dGVzKSAqIHN0YXRpY19jYXN0PEdMaW50NjQ+KGNvdW50KStvZmZzZXQ7CisKKyAg
ICAgICAgLy8gY2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3dzCisgICAgICAgIGlmIChzdGF0aWNf
Y2FzdDxHTHVpbnQ+KGNvdW50KSA+IChzdGQ6Om51bWVyaWNfbGltaXRzPEdMdWludD46Om1heCgp
IC8gdHlwZUluZm8uYnl0ZXMpIHx8CisgICAgICAgICAgICBieXRlQ291bnQgPiBzdGF0aWNfY2Fz
dDxHTGludDY0PihzdGQ6Om51bWVyaWNfbGltaXRzPEdMdWludD46Om1heCgpKSkKKyAgICAgICAg
eworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfT1VUX09GX01FTU9S
WSkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgLy8g
Q2hlY2sgZm9yIHJlYWRpbmcgcGFzdCB0aGUgZW5kIG9mIHRoZSBib3VuZCBidWZmZXIgb2JqZWN0
CisgICAgICAgIGlmIChieXRlQ291bnQgPiBlbGVtZW50QXJyYXlCdWZmZXItPmdldFNpemUoKSkK
KyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBlbHNlIGlmICghaW5kaWNlcykKKyAgICB7CisgICAgICAgIC8vIENhdGNoIHRo
aXMgcHJvZ3JhbW1pbmcgZXJyb3IgaGVyZQorICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgaWYgKCFWYWxpZGF0ZURyYXdCYXNlKGNvbnRleHQsIG1vZGUsIGNvdW50LCBwcmlt
Y291bnQpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIFVz
ZSBtYXggaW5kZXggdG8gdmFsaWRhdGUgaWYgb3VyIHZlcnRleCBidWZmZXJzIGFyZSBsYXJnZSBl
bm91Z2ggZm9yIHRoZSBwdWxsLgorICAgIC8vIFRPRE86IG9mZmVyIGZhc3QgcGF0aCwgd2l0aCBk
aXNhYmxlZCBpbmRleCB2YWxpZGF0aW9uLgorICAgIC8vIFRPRE86IGFsc28gZGlzYWJsZSBpbmRl
eCBjaGVja2luZyBvbiBiYWNrLWVuZHMgdGhhdCBhcmUgcm9idXN0IHRvIG91dC1vZi1yYW5nZSBh
Y2Nlc3Nlcy4KKyAgICBpZiAoZWxlbWVudEFycmF5QnVmZmVyKQorICAgIHsKKyAgICAgICAgdWlu
dHB0cl90IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihpbmRpY2VzKTsKKyAg
ICAgICAgRXJyb3IgZXJyb3IgPQorICAgICAgICAgICAgZWxlbWVudEFycmF5QnVmZmVyLT5nZXRJ
bmRleFJhbmdlKHR5cGUsIHN0YXRpY19jYXN0PHNpemVfdD4ob2Zmc2V0KSwgY291bnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuaXNQcmltaXRp
dmVSZXN0YXJ0RW5hYmxlZCgpLCBpbmRleFJhbmdlT3V0KTsKKyAgICAgICAgaWYgKGVycm9yLmlz
RXJyb3IoKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoZXJy
b3IpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIGVs
c2UKKyAgICB7CisgICAgICAgICppbmRleFJhbmdlT3V0ID0gQ29tcHV0ZUluZGV4UmFuZ2UodHlw
ZSwgaW5kaWNlcywgY291bnQsIHN0YXRlLmlzUHJpbWl0aXZlUmVzdGFydEVuYWJsZWQoKSk7Cisg
ICAgfQorCisgICAgLy8gSWYgd2UgdXNlIGFuIGluZGV4IGdyZWF0ZXIgdGhhbiBvdXIgbWF4aW11
bSBzdXBwb3J0ZWQgaW5kZXggcmFuZ2UsIHJldHVybiBhbiBlcnJvci4KKyAgICAvLyBUaGUgRVMz
IHNwZWMgZG9lcyBub3Qgc3BlY2lmeSBiZWhhdmlvdXIgaGVyZSwgaXQgaXMgdW5kZWZpbmVkLCBi
dXQgQU5HTEUgc2hvdWxkIGFsd2F5cworICAgIC8vIHJldHVybiBhbiBlcnJvciBpZiBwb3NzaWJs
ZSBoZXJlLgorICAgIGlmIChzdGF0aWNfY2FzdDxHTHVpbnQ2ND4oaW5kZXhSYW5nZU91dC0+ZW5k
KSA+PSBjb250ZXh0LT5nZXRDYXBzKCkubWF4RWxlbWVudEluZGV4KQorICAgIHsKKyAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGdfRXhjZWVk
c01heEVsZW1lbnRFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIGlmICghVmFsaWRhdGVEcmF3QXR0cmlicyhjb250ZXh0LCBwcmltY291bnQsIHN0YXRp
Y19jYXN0PEdMaW50PihpbmRleFJhbmdlT3V0LT52ZXJ0ZXhDb3VudCgpKSkpCisgICAgeworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gTm8gb3AgaWYgdGhlcmUgYXJlIG5v
IHJlYWwgaW5kaWNlcyBpbiB0aGUgaW5kZXggZGF0YSAoYWxsIGFyZSBwcmltaXRpdmUgcmVzdGFy
dCkuCisgICAgcmV0dXJuIChpbmRleFJhbmdlT3V0LT52ZXJ0ZXhJbmRleENvdW50ID4gMCk7Cit9
CisKK2Jvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWQoQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgcHJpbWNvdW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJbmRleFJhbmdlICppbmRleFJhbmdlT3V0KQoreworICAgIGlmIChwcmlt
Y291bnQgPCAwKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYg
KCFWYWxpZGF0ZURyYXdFbGVtZW50cyhjb250ZXh0LCBtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNl
cywgcHJpbWNvdW50LCBpbmRleFJhbmdlT3V0KSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICAvLyBOby1vcCB6ZXJvIHByaW1pdGl2ZSBjb3VudAorICAgIHJldHVy
biAocHJpbWNvdW50ID4gMCk7Cit9CisKK2Jvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5j
ZWRBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgcHJpbWNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEluZGV4UmFuZ2UgKmluZGV4UmFuZ2VPdXQpCit7CisgICAgaWYgKCFWYWxp
ZGF0ZURyYXdJbnN0YW5jZWRBTkdMRShjb250ZXh0KSkKKyAgICB7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWQo
Y29udGV4dCwgbW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMsIHByaW1jb3VudCwgaW5kZXhSYW5n
ZU91dCk7Cit9CisKK2Jvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVCYXNlKENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVsKQorewor
ICAgIGlmICghVmFsaWRGcmFtZWJ1ZmZlclRhcmdldCh0YXJnZXQpKQorICAgIHsKKyAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlkYXRlQXR0YWNobWVudFRhcmdldChj
b250ZXh0LCBhdHRhY2htZW50KSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBpZiAodGV4dHVyZSAhPSAwKQorICAgIHsKKyAgICAgICAgZ2w6OlRleHR1cmUgKnRl
eCA9IGNvbnRleHQtPmdldFRleHR1cmUodGV4dHVyZSk7CisKKyAgICAgICAgaWYgKHRleCA9PSBO
VUxMKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKGxldmVsIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgY29uc3QgZ2w6OkZyYW1lYnVm
ZmVyICpmcmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRUYXJnZXRGcmFtZWJ1
ZmZlcih0YXJnZXQpOworICAgIEFTU0VSVChmcmFtZWJ1ZmZlcik7CisKKyAgICBpZiAoZnJhbWVi
dWZmZXItPmlkKCkgPT0gMCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAor
ICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJDYW5ub3QgY2hhbmdlIGRl
ZmF1bHQgRkJPJ3MgYXR0YWNobWVudHMiKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVy
ZTJEKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0ZXh0YXJnZXQsIEdMdWlu
dCB0ZXh0dXJlLCBHTGludCBsZXZlbCkKK3sKKyAgICAvLyBBdHRhY2htZW50cyBhcmUgcmVxdWly
ZWQgdG8gYmUgYm91bmQgdG8gbGV2ZWwgMCB3aXRob3V0IEVTMyBvciB0aGUgR0xfT0VTX2Zib19y
ZW5kZXJfbWlwbWFwIGV4dGVuc2lvbgorICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZl
cnNpb24oKSA8IDMgJiYgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5mYm9SZW5kZXJNaXBtYXAg
JiYKKyAgICAgICAgbGV2ZWwgIT0gMCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIGlmICghVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVCYXNlKGNvbnRleHQsIHRh
cmdldCwgYXR0YWNobWVudCwgdGV4dHVyZSwgbGV2ZWwpKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIGlmICh0ZXh0dXJlICE9IDApCisgICAgeworICAgICAgICBn
bDo6VGV4dHVyZSAqdGV4ID0gY29udGV4dC0+Z2V0VGV4dHVyZSh0ZXh0dXJlKTsKKyAgICAgICAg
QVNTRVJUKHRleCk7CisKKyAgICAgICAgY29uc3QgZ2w6OkNhcHMgJmNhcHMgPSBjb250ZXh0LT5n
ZXRDYXBzKCk7CisKKyAgICAgICAgc3dpdGNoICh0ZXh0YXJnZXQpCisgICAgICAgIHsKKyAgICAg
ICAgICBjYXNlIEdMX1RFWFRVUkVfMkQ6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
aWYgKGxldmVsID4gZ2w6OmxvZzIoY2Fwcy5tYXgyRFRleHR1cmVTaXplKSkKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAodGV4LT5nZXRUYXJnZXQoKSAhPSBH
TF9URVhUVVJFXzJEKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVf
TUFQX1BPU0lUSVZFX1g6CisgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FU
SVZFX1g6CisgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1k6Cisg
ICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1k6CisgICAgICAgICAg
Y2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1o6CisgICAgICAgICAgY2FzZSBHTF9U
RVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1o6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgaWYgKGxldmVsID4gZ2w6OmxvZzIoY2Fwcy5tYXhDdWJlTWFwVGV4dHVyZVNpemUpKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh0ZXgtPmdldFRhcmdl
dCgpICE9IEdMX1RFWFRVUkVfQ1VCRV9NQVApCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TikpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgIGNhc2UgR0xfVEVY
VFVSRV9TV0laWkxFX1I6Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfU1dJWlpMRV9HOgotICAgICAg
Y2FzZSBHTF9URVhUVVJFX1NXSVpaTEVfQjoKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9TV0laWkxF
X0E6Ci0gICAgICAgIHN3aXRjaCAocGFyYW0pCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdM
X1JFRDoKLSAgICAgICAgICBjYXNlIEdMX0dSRUVOOgotICAgICAgICAgIGNhc2UgR0xfQkxVRToK
LSAgICAgICAgICBjYXNlIEdMX0FMUEhBOgotICAgICAgICAgIGNhc2UgR0xfWkVSTzoKLSAgICAg
ICAgICBjYXNlIEdMX09ORToKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X0VOVU0pKTsKKyAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAg
ICAgYnJlYWs7CiAKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9CQVNFX0xFVkVMOgotICAgICAgY2Fz
ZSBHTF9URVhUVVJFX01BWF9MRVZFTDoKLSAgICAgICAgaWYgKHBhcmFtIDwgMCkKKyAgICAgICAg
Y29uc3QgRm9ybWF0ICZmb3JtYXQgPSB0ZXgtPmdldEZvcm1hdCh0ZXh0YXJnZXQsIGxldmVsKTsK
KyAgICAgICAgaWYgKGZvcm1hdC5pbmZvLT5jb21wcmVzc2VkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0
cnVlOwotCi0gICAgICBkZWZhdWx0OgotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLX0KLQot
Ym9vbCBWYWxpZGF0ZVNhbXBsZXJPYmplY3RQYXJhbWV0ZXIoZ2w6OkNvbnRleHQgKmNvbnRleHQs
IEdMZW51bSBwbmFtZSkKLXsKLSAgICBzd2l0Y2ggKHBuYW1lKQotICAgIHsKLSAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9NSU5fRklMVEVSOgotICAgICAgY2FzZSBHTF9URVhUVVJFX01BR19GSUxURVI6
Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9TOgotICAgICAgY2FzZSBHTF9URVhUVVJFX1dS
QVBfVDoKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1I6Ci0gICAgICBjYXNlIEdMX1RFWFRV
UkVfTUlOX0xPRDoKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfTE9EOgotICAgICAgY2FzZSBH
TF9URVhUVVJFX0NPTVBBUkVfTU9ERToKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX0ZV
TkM6Ci0gICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICBkZWZhdWx0OgotICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVJlYWRQ
aXhlbHMoQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5LAotICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0
LAotICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgR0x2b2lkICpw
aXhlbHMpCitib29sIFZhbGlkYXRlR2V0VW5pZm9ybUJhc2UoQ29udGV4dCAqY29udGV4dCwgR0x1
aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uKQogewotICAgIGlmICh3aWR0aCA8IDAgfHwgaGVp
Z2h0IDwgMCkKLSAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfVkFMVUUsICJ3aWR0aCBhbmQgaGVpZ2h0IG11c3QgYmUgcG9zaXRpdmUiKSk7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIg
PSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFJlYWRGcmFtZWJ1ZmZlcigpOwotICAgIEFTU0VSVChm
cmFtZWJ1ZmZlcik7Ci0KLSAgICBpZiAoZnJhbWVidWZmZXItPmNoZWNrU3RhdHVzKGNvbnRleHQt
PmdldERhdGEoKSkgIT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpCisgICAgaWYgKHByb2dyYW0g
PT0gMCkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFM
SURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIGlmIChjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFJlYWRGcmFtZWJ1ZmZlcigpLT5pZCgp
ICE9IDAgJiYKLSAgICAgICAgZnJhbWVidWZmZXItPmdldFNhbXBsZXMoY29udGV4dC0+Z2V0RGF0
YSgpKSAhPSAwKQorICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gR2V0VmFsaWRQcm9n
cmFtKGNvbnRleHQsIHByb2dyYW0pOworICAgIGlmICghcHJvZ3JhbU9iamVjdCkKICAgICB7Ci0g
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBjb25zdCBGcmFtZWJ1ZmZlckF0
dGFjaG1lbnQgKnJlYWRCdWZmZXIgPSBmcmFtZWJ1ZmZlci0+Z2V0UmVhZENvbG9yYnVmZmVyKCk7
Ci0gICAgaWYgKCFyZWFkQnVmZmVyKQorICAgIGlmICghcHJvZ3JhbU9iamVjdCB8fCAhcHJvZ3Jh
bU9iamVjdC0+aXNMaW5rZWQoKSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBHTGVudW0gY3VycmVudEZvcm1hdCA9IGZyYW1lYnVmZmVyLT5nZXRJbXBs
ZW1lbnRhdGlvbkNvbG9yUmVhZEZvcm1hdCgpOwotICAgIEdMZW51bSBjdXJyZW50VHlwZSA9IGZy
YW1lYnVmZmVyLT5nZXRJbXBsZW1lbnRhdGlvbkNvbG9yUmVhZFR5cGUoKTsKLSAgICBHTGVudW0g
Y3VycmVudEludGVybmFsRm9ybWF0ID0gcmVhZEJ1ZmZlci0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsK
LSAgICBHTHVpbnQgY2xpZW50VmVyc2lvbiA9IGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKTsK
LQotICAgIGJvb2wgdmFsaWRSZWFkRm9ybWF0ID0gKGNsaWVudFZlcnNpb24gPCAzKSA/IFZhbGlk
RVMyUmVhZEZvcm1hdFR5cGUoY29udGV4dCwgZm9ybWF0LCB0eXBlKSA6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRFUzNSZWFkRm9ybWF0VHlw
ZShjb250ZXh0LCBjdXJyZW50SW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSk7Ci0KLSAgICBp
ZiAoIShjdXJyZW50Rm9ybWF0ID09IGZvcm1hdCAmJiBjdXJyZW50VHlwZSA9PSB0eXBlKSAmJiAh
dmFsaWRSZWFkRm9ybWF0KQorICAgIGlmICghcHJvZ3JhbU9iamVjdC0+aXNWYWxpZFVuaWZvcm1M
b2NhdGlvbihsb2NhdGlvbikpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVSZWFkblBpeGVsc0VY
VChDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdm9pZCAqcGl4ZWxzKQorYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1mdihDb250ZXh0ICpj
b250ZXh0LCBHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQqIHBhcmFtcykK
IHsKLSAgICBpZiAoYnVmU2l6ZSA8IDApCi0gICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiYnVmU2l6ZSBtdXN0IGJlIGEgcG9zaXRpdmUg
bnVtYmVyIikpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgR0xlbnVtIHNp
emVkSW50ZXJuYWxGb3JtYXQgPSBHZXRTaXplZEludGVybmFsRm9ybWF0KGZvcm1hdCwgdHlwZSk7
Ci0gICAgY29uc3QgSW50ZXJuYWxGb3JtYXQgJnNpemVkRm9ybWF0SW5mbyA9IEdldEludGVybmFs
Rm9ybWF0SW5mbyhzaXplZEludGVybmFsRm9ybWF0KTsKLQotICAgIEdMc2l6ZWkgb3V0cHV0UGl0
Y2ggPQotICAgICAgICBzaXplZEZvcm1hdEluZm8uY29tcHV0ZVJvd1BpdGNoKHR5cGUsIHdpZHRo
LCBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFBhY2tBbGlnbm1lbnQoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFBhY2tSb3dM
ZW5ndGgoKSk7Ci0gICAgLy8gc2l6ZWQgcXVlcnkgc2FuaXR5IGNoZWNrCi0gICAgaW50IHJlcXVp
cmVkU2l6ZSA9IG91dHB1dFBpdGNoICogaGVpZ2h0OwotICAgIGlmIChyZXF1aXJlZFNpemUgPiBi
dWZTaXplKQotICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJl
dHVybiBWYWxpZGF0ZVJlYWRQaXhlbHMoY29udGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCB0eXBlLCBwaXhlbHMpOworICAgIHJldHVybiBWYWxpZGF0ZUdldFVuaWZvcm1CYXNlKGNv
bnRleHQsIHByb2dyYW0sIGxvY2F0aW9uKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdlblF1ZXJpZXNF
WFQoZ2w6OkNvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbikKK2Jvb2wgVmFsaWRhdGVHZXRVbmlm
b3JtaXYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBH
TGludCogcGFyYW1zKQogewotICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLm9jY2x1
c2lvblF1ZXJ5Qm9vbGVhbiAmJgotICAgICAgICAhY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRp
c2pvaW50VGltZXJRdWVyeSkKLSAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiUXVlcnkgZXh0ZW5zaW9uIG5vdCBlbmFibGVkIikp
OwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIFZhbGlkYXRlR2Vu
T3JEZWxldGUoY29udGV4dCwgbik7CisgICAgcmV0dXJuIFZhbGlkYXRlR2V0VW5pZm9ybUJhc2Uo
Y29udGV4dCwgcHJvZ3JhbSwgbG9jYXRpb24pOwogfQogCi1ib29sIFZhbGlkYXRlRGVsZXRlUXVl
cmllc0VYVChnbDo6Q29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuKQorc3RhdGljIGJvb2wgVmFs
aWRhdGVTaXplZEdldFVuaWZvcm0oQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpICpsZW5ndGgpCiB7Ci0gICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkub2NjbHVzaW9uUXVlcnlCb29sZWFuICYmCi0gICAgICAgICFjb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkuZGlzam9pbnRUaW1lclF1ZXJ5KQorICAgIGlmIChsZW5ndGgpCiAgICAgewotICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIlF1
ZXJ5IGV4dGVuc2lvbiBub3QgZW5hYmxlZCIpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAqbGVuZ3RoID0gMDsKICAgICB9CiAKLSAgICByZXR1cm4gVmFsaWRhdGVHZW5PckRlbGV0
ZShjb250ZXh0LCBuKTsKLX0KLQotYm9vbCBWYWxpZGF0ZUJlZ2luUXVlcnlCYXNlKGdsOjpDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaWQpCi17Ci0gICAgaWYgKCFWYWxp
ZFF1ZXJ5VHlwZShjb250ZXh0LCB0YXJnZXQpKQorICAgIGlmICghVmFsaWRhdGVHZXRVbmlmb3Jt
QmFzZShjb250ZXh0LCBwcm9ncmFtLCBsb2NhdGlvbikpCiAgICAgewotICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIHF1ZXJ5IHRhcmdl
dCIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChpZCA9PSAwKQor
ICAgIGlmIChidWZTaXplIDwgMCkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiUXVlcnkgaWQgaXMgMCIpKTsKKyAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgImJ1ZlNpemUgY2Fu
bm90IGJlIG5lZ2F0aXZlLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IC8vIEZyb20gRVhUX29jY2x1c2lvbl9xdWVyeV9ib29sZWFuOiBJZiBCZWdpblF1ZXJ5RVhUIGlz
IGNhbGxlZCB3aXRoIGFuIDxpZD4KLSAgICAvLyBvZiB6ZXJvLCBpZiB0aGUgYWN0aXZlIHF1ZXJ5
IG9iamVjdCBuYW1lIGZvciA8dGFyZ2V0PiBpcyBub24temVybyAoZm9yIHRoZQotICAgIC8vIHRh
cmdldHMgQU5ZX1NBTVBMRVNfUEFTU0VEX0VYVCBhbmQgQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNF
UlZBVElWRV9FWFQsIGlmCi0gICAgLy8gdGhlIGFjdGl2ZSBxdWVyeSBmb3IgZWl0aGVyIHRhcmdl
dCBpcyBub24temVybyksIGlmIDxpZD4gaXMgdGhlIG5hbWUgb2YgYW4KLSAgICAvLyBleGlzdGlu
ZyBxdWVyeSBvYmplY3Qgd2hvc2UgdHlwZSBkb2VzIG5vdCBtYXRjaCA8dGFyZ2V0Piwgb3IgaWYg
PGlkPiBpcyB0aGUKLSAgICAvLyBhY3RpdmUgcXVlcnkgb2JqZWN0IG5hbWUgZm9yIGFueSBxdWVy
eSB0eXBlLCB0aGUgZXJyb3IgSU5WQUxJRF9PUEVSQVRJT04gaXMKLSAgICAvLyBnZW5lcmF0ZWQu
Ci0KLSAgICAvLyBFbnN1cmUgbm8gb3RoZXIgcXVlcmllcyBhcmUgYWN0aXZlCi0gICAgLy8gTk9U
RTogSWYgb3RoZXIgcXVlcmllcyB0aGFuIG9jY2x1c2lvbiBhcmUgc3VwcG9ydGVkLCB3ZSB3aWxs
IG5lZWQgdG8gY2hlY2sKLSAgICAvLyBzZXBhcmF0ZWx5IHRoYXQ6Ci0gICAgLy8gICAgYSkgVGhl
IHF1ZXJ5IElEIHBhc3NlZCBpcyBub3QgdGhlIGN1cnJlbnQgYWN0aXZlIHF1ZXJ5IGZvciBhbnkg
dGFyZ2V0L3R5cGUKLSAgICAvLyAgICBiKSBUaGVyZSBhcmUgbm8gYWN0aXZlIHF1ZXJpZXMgZm9y
IHRoZSByZXF1ZXN0ZWQgdGFyZ2V0IChhbmQgaW4gdGhlIGNhc2UKLSAgICAvLyAgICAgICBvZiBH
TF9BTllfU0FNUExFU19QQVNTRURfRVhUIGFuZCBHTF9BTllfU0FNUExFU19QQVNTRURfQ09OU0VS
VkFUSVZFX0VYVCwKLSAgICAvLyAgICAgICBubyBxdWVyeSBtYXkgYmUgYWN0aXZlIGZvciBlaXRo
ZXIgaWYgZ2xCZWdpblF1ZXJ5IHRhcmdldHMgZWl0aGVyLgorICAgIGdsOjpQcm9ncmFtICpwcm9n
cmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKKyAgICBBU1NFUlQocHJv
Z3JhbU9iamVjdCk7CiAKLSAgICAvLyBUT0RPKGV3ZWxsKTogSSB0aGluayB0aGlzIG5lZWRzIHRv
IGJlIGNoYW5nZWQgZm9yIHRpbWVyIGFuZCBvY2NsdXNpb24gcXVlcmllcyB0byB3b3JrIGF0IHRo
ZQotICAgIC8vIHNhbWUgdGltZQotICAgIGlmIChjb250ZXh0LT5nZXRTdGF0ZSgpLmlzUXVlcnlB
Y3RpdmUoKSkKKyAgICAvLyBzaXplZCBxdWVyaWVzIC0tIGVuc3VyZSB0aGUgcHJvdmlkZWQgYnVm
ZmVyIGlzIGxhcmdlIGVub3VnaAorICAgIGNvbnN0IExpbmtlZFVuaWZvcm0gJnVuaWZvcm0gPSBw
cm9ncmFtT2JqZWN0LT5nZXRVbmlmb3JtQnlMb2NhdGlvbihsb2NhdGlvbik7CisgICAgc2l6ZV90
IHJlcXVpcmVkQnl0ZXMgPSBWYXJpYWJsZUV4dGVybmFsU2l6ZSh1bmlmb3JtLnR5cGUpOworICAg
IGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KGJ1ZlNpemUpIDwgcmVxdWlyZWRCeXRlcykKICAgICB7
Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCAiT3RoZXIgcXVlcnkgaXMgYWN0aXZlIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiYnVmU2l6ZSBvZiBh
dCBsZWFzdCAldSBpcyByZXF1aXJlZC4iLCByZXF1aXJlZEJ5dGVzKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBRdWVyeSAqcXVlcnlPYmplY3QgPSBjb250ZXh0LT5nZXRR
dWVyeShpZCwgdHJ1ZSwgdGFyZ2V0KTsKLQotICAgIC8vIGNoZWNrIHRoYXQgbmFtZSB3YXMgb2J0
YWluZWQgd2l0aCBnbEdlblF1ZXJpZXMKLSAgICBpZiAoIXF1ZXJ5T2JqZWN0KQorICAgIGlmIChs
ZW5ndGgpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTiwgIkludmFsaWQgcXVlcnkgaWQiKSk7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgLy8gQ2FzdCBpcyBzYWZlIGJlY2F1c2Ugb2YgY29tcGFyaXNvbiB0byBidWZT
aXplLgorICAgICAgICAqbGVuZ3RoID0gc3RhdGljX2Nhc3Q8R0xzaXplaT4ocmVxdWlyZWRCeXRl
cyk7CiAgICAgfQogCi0gICAgLy8gY2hlY2sgZm9yIHR5cGUgbWlzbWF0Y2gKLSAgICBpZiAocXVl
cnlPYmplY3QtPmdldFR5cGUoKSAhPSB0YXJnZXQpCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgVmFsaWRhdGVHZXRuVW5pZm9ybWZ2RVhUKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBwcm9n
cmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCBHTGZsb2F0KiBwYXJhbXMpCit7
CisgICAgcmV0dXJuIFZhbGlkYXRlU2l6ZWRHZXRVbmlmb3JtKGNvbnRleHQsIHByb2dyYW0sIGxv
Y2F0aW9uLCBidWZTaXplLCBudWxscHRyKTsKK30KKworYm9vbCBWYWxpZGF0ZUdldG5Vbmlmb3Jt
aXZFWFQoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGJ1ZlNpemUsIEdMaW50KiBwYXJhbXMpCit7CisgICAgcmV0dXJuIFZhbGlkYXRlU2l6
ZWRHZXRVbmlmb3JtKGNvbnRleHQsIHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBudWxscHRy
KTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKENvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dy
YW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpCit7Cisg
ICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEVudHJ5UG9pbnQoY29udGV4dCwgYnVmU2l6ZSkpCiAgICAg
ewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TiwgIlF1ZXJ5IHR5cGUgZG9lcyBub3QgbWF0Y2ggdGFyZ2V0IikpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCi0gICAgcmV0dXJuIHRydWU7CisgICAgLy8gYnVmU2l6ZSBpcyB2YWxp
ZGF0ZWQgaW4gVmFsaWRhdGVTaXplZEdldFVuaWZvcm0KKyAgICByZXR1cm4gVmFsaWRhdGVTaXpl
ZEdldFVuaWZvcm0oY29udGV4dCwgcHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCk7
CiB9CiAKLWJvb2wgVmFsaWRhdGVCZWdpblF1ZXJ5RVhUKGdsOjpDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gdGFyZ2V0LCBHTHVpbnQgaWQpCitib29sIFZhbGlkYXRlR2V0VW5pZm9ybWl2Um9idXN0
QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
ICpwYXJhbXMpCiB7Ci0gICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkub2NjbHVzaW9u
UXVlcnlCb29sZWFuICYmCi0gICAgICAgICFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGlzam9p
bnRUaW1lclF1ZXJ5KQorICAgIGlmICghVmFsaWRhdGVSb2J1c3RFbnRyeVBvaW50KGNvbnRleHQs
IGJ1ZlNpemUpKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sICJRdWVyeSBleHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICByZXR1cm4gVmFsaWRhdGVCZWdpblF1ZXJ5
QmFzZShjb250ZXh0LCB0YXJnZXQsIGlkKTsKKyAgICAvLyBidWZTaXplIGlzIHZhbGlkYXRlZCBp
biBWYWxpZGF0ZVNpemVkR2V0VW5pZm9ybQorICAgIHJldHVybiBWYWxpZGF0ZVNpemVkR2V0VW5p
Zm9ybShjb250ZXh0LCBwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoKTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZUVuZFF1ZXJ5QmFzZShnbDo6Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRh
cmdldCkKK2Jvb2wgVmFsaWRhdGVHZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dy
YW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpCiB7
Ci0gICAgaWYgKCFWYWxpZFF1ZXJ5VHlwZShjb250ZXh0LCB0YXJnZXQpKQorICAgIGlmICghVmFs
aWRhdGVSb2J1c3RFbnRyeVBvaW50KGNvbnRleHQsIGJ1ZlNpemUpKQogICAgIHsKLSAgICAgICAg
Y29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBxdWVy
eSB0YXJnZXQiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBjb25zdCBR
dWVyeSAqcXVlcnlPYmplY3QgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldEFjdGl2ZVF1ZXJ5KHRh
cmdldCk7Ci0KLSAgICBpZiAocXVlcnlPYmplY3QgPT0gbnVsbHB0cikKKyAgICBpZiAoY29udGV4
dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJRdWVyeSB0YXJnZXQgbm90
IGFjdGl2ZSIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IHJlcXVpcmVzIGF0IGxlYXN0
IE9wZW5HTCBFUyAzLjAuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAg
cmV0dXJuIHRydWU7CisgICAgLy8gYnVmU2l6ZSBpcyB2YWxpZGF0ZWQgaW4gVmFsaWRhdGVTaXpl
ZEdldFVuaWZvcm0KKyAgICByZXR1cm4gVmFsaWRhdGVTaXplZEdldFVuaWZvcm0oY29udGV4dCwg
cHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVF
bmRRdWVyeUVYVChnbDo6Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCkKK2Jvb2wgVmFs
aWRhdGVEaXNjYXJkRnJhbWVidWZmZXJCYXNlKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJn
ZXQsIEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzLCBib29sIGRlZmF1bHRGcmFtZWJ1ZmZl
cikKIHsKLSAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5vY2NsdXNpb25RdWVyeUJv
b2xlYW4gJiYKLSAgICAgICAgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kaXNqb2ludFRpbWVy
UXVlcnkpCisgICAgaWYgKG51bUF0dGFjaG1lbnRzIDwgMCkKICAgICB7Ci0gICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiUXVlcnkgZXh0ZW5z
aW9uIG5vdCBlbmFibGVkIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX1ZBTFVFLCAibnVtQXR0YWNobWVudHMgbXVzdCBub3QgYmUgbGVzcyB0aGFuIHpl
cm8iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICByZXR1cm4gVmFsaWRh
dGVFbmRRdWVyeUJhc2UoY29udGV4dCwgdGFyZ2V0KTsKKyAgICBmb3IgKEdMc2l6ZWkgaSA9IDA7
IGkgPCBudW1BdHRhY2htZW50czsgKytpKQorICAgIHsKKyAgICAgICAgaWYgKGF0dGFjaG1lbnRz
W2ldID49IEdMX0NPTE9SX0FUVEFDSE1FTlQwICYmIGF0dGFjaG1lbnRzW2ldIDw9IEdMX0NPTE9S
X0FUVEFDSE1FTlQzMSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGRlZmF1bHRGcmFtZWJ1
ZmZlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBh
dHRhY2htZW50IHdoZW4gdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIgaXMgYm91bmQiKSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
ZiAoYXR0YWNobWVudHNbaV0gPj0gR0xfQ09MT1JfQVRUQUNITUVOVDAgKyBjb250ZXh0LT5nZXRD
YXBzKCkubWF4Q29sb3JBdHRhY2htZW50cykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVxdWVzdGVkIGNvbG9yIGF0
dGFjaG1lbnQgaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtICIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAic3VwcG9ydGVkIGNvbG9yIGF0dGFjaG1lbnRzIikp
OworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYXR0YWNobWVu
dHNbaV0pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfREVQVEhfQVRUQUNI
TUVOVDoKKyAgICAgICAgICAgICAgY2FzZSBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQ6CisgICAgICAg
ICAgICAgIGNhc2UgR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgICAg
IGlmIChkZWZhdWx0RnJhbWVidWZmZXIpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgIEVy
cm9yKEdMX0lOVkFMSURfRU5VTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZh
bGlkIGF0dGFjaG1lbnQgd2hlbiB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciBpcyBib3VuZCIpKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9DT0xPUjoKKyAgICAg
ICAgICAgICAgY2FzZSBHTF9ERVBUSDoKKyAgICAgICAgICAgICAgY2FzZSBHTF9TVEVOQ0lMOgor
ICAgICAgICAgICAgICAgIGlmICghZGVmYXVsdEZyYW1lYnVmZmVyKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAg
ICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX0VOVU0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiSW52YWxpZCBhdHRhY2htZW50IHdoZW4gdGhlIGRlZmF1bHQgZnJhbWVidWZm
ZXIgaXMgbm90IGJvdW5kIikpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9FTlVNLCAiSW52YWxpZCBhdHRhY2htZW50IikpOworICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUXVlcnlDb3VudGVyRVhUKENvbnRleHQgKmNvbnRl
eHQsIEdMdWludCBpZCwgR0xlbnVtIHRhcmdldCkKK2Jvb2wgVmFsaWRhdGVJbnNlcnRFdmVudE1h
cmtlckVYVChDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFy
a2VyKQogewotICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRpc2pvaW50VGltZXJR
dWVyeSkKKyAgICAvLyBOb3RlIHRoYXQgZGVidWcgbWFya2VyIGNhbGxzIG11c3Qgbm90IHNldCBl
cnJvciBzdGF0ZQorCisgICAgaWYgKGxlbmd0aCA8IDApCiAgICAgewotICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkRpc2pvaW50IHRpbWVy
IHF1ZXJ5IG5vdCBlbmFibGVkIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgaWYgKHRhcmdldCAhPSBHTF9USU1FU1RBTVBfRVhUKQorICAgIGlmIChtYXJrZXIgPT0gbnVs
bHB0cikKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFM
SURfRU5VTSwgIkludmFsaWQgcXVlcnkgdGFyZ2V0IikpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgUXVlcnkgKnF1ZXJ5T2JqZWN0ID0gY29udGV4dC0+Z2V0UXVlcnkoaWQs
IHRydWUsIHRhcmdldCk7Ci0gICAgaWYgKHF1ZXJ5T2JqZWN0ID09IG51bGxwdHIpCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVQdXNoR3JvdXBNYXJrZXJFWFQoQ29udGV4dCAq
Y29udGV4dCwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikKK3sKKyAgICAvLyBO
b3RlIHRoYXQgZGVidWcgbWFya2VyIGNhbGxzIG11c3Qgbm90IHNldCBlcnJvciBzdGF0ZQorCisg
ICAgaWYgKGxlbmd0aCA8IDApCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkludmFsaWQgcXVlcnkgaWQiKSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoY29udGV4dC0+Z2V0U3RhdGUoKS5pc1F1
ZXJ5QWN0aXZlKHF1ZXJ5T2JqZWN0KSkKKyAgICBpZiAobGVuZ3RoID4gMCAmJiBtYXJrZXIgPT0g
bnVsbHB0cikKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAiUXVlcnkgaXMgYWN0aXZlIikpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRRdWVy
eWl2QmFzZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUpCiti
b29sIFZhbGlkYXRlRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMoQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OkRpc3BsYXkgKmRp
c3BsYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OkltYWdl
ICppbWFnZSkKIHsKLSAgICBpZiAoIVZhbGlkUXVlcnlUeXBlKGNvbnRleHQsIHRhcmdldCkgJiYg
dGFyZ2V0ICE9IEdMX1RJTUVTVEFNUF9FWFQpCisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkuZWdsSW1hZ2UgJiYgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lZ2xJbWFnZUV4dGVy
bmFsKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9FTlVNLCAiSW52YWxpZCBxdWVyeSB0eXBlIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgc3dpdGNoIChwbmFtZSkKKyAgICBzd2l0Y2ggKHRhcmdldCkKICAgICB7
Ci0gICAgICAgIGNhc2UgR0xfQ1VSUkVOVF9RVUVSWV9FWFQ6Ci0gICAgICAgICAgICBpZiAodGFy
Z2V0ID09IEdMX1RJTUVTVEFNUF9FWFQpCisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoKKyAg
ICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVnbEltYWdlKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKAotICAgICAgICAg
ICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX0VOVU0sICJDYW5ub3QgdXNlIGN1cnJlbnQgcXVl
cnkgZm9yIHRpbWVzdGFtcCIpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoCisgICAgICAgICAgICAgICAg
ICAgIEdMX0lOVkFMSURfRU5VTSwgIkdMX1RFWFRVUkVfMkQgdGV4dHVyZSB0YXJnZXQgcmVxdWly
ZXMgR0xfT0VTX0VHTF9pbWFnZS4iKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBHTF9RVUVSWV9DT1VOVEVSX0JJVFNfRVhUOgotICAgICAgICAgICAg
aWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGlzam9pbnRUaW1lclF1ZXJ5IHx8Ci0gICAg
ICAgICAgICAgICAgKHRhcmdldCAhPSBHTF9USU1FU1RBTVBfRVhUICYmIHRhcmdldCAhPSBHTF9U
SU1FX0VMQVBTRURfRVhUKSkKKworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfRVhURVJOQUxfT0VT
OgorICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZWdsSW1hZ2VFeHRl
cm5hbCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIHBuYW1lIikpOwotICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcigKKyAgICAgICAgICAgICAgICAgICAgR0xfSU5WQUxJRF9FTlVNLAorICAgICAgICAgICAg
ICAgICAgICAiR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMgdGV4dHVyZSB0YXJnZXQgcmVxdWlyZXMg
R0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbC4iKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBicmVhazsKKwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBwbmFtZSIpKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgImludmFsaWQg
dGV4dHVyZSB0YXJnZXQuIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFZhbGlkYXRlR2V0UXVlcnlpdkVYVChDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCi17
Ci0gICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkub2NjbHVzaW9uUXVlcnlCb29sZWFu
ICYmCi0gICAgICAgICFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGlzam9pbnRUaW1lclF1ZXJ5
KQorICAgIGlmICghZGlzcGxheS0+aXNWYWxpZEltYWdlKGltYWdlKSkKICAgICB7Ci0gICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiUXVlcnkg
ZXh0ZW5zaW9uIG5vdCBlbmFibGVkIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiRUdMIGltYWdlIGlzIG5vdCB2YWxpZC4iKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICByZXR1cm4gVmFsaWRhdGVHZXRRdWVyeWl2
QmFzZShjb250ZXh0LCB0YXJnZXQsIHBuYW1lKTsKLX0KLQotYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5
T2JqZWN0VmFsdWVCYXNlKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpZCwgR0xlbnVtIHBuYW1l
KQotewotICAgIFF1ZXJ5ICpxdWVyeU9iamVjdCA9IGNvbnRleHQtPmdldFF1ZXJ5KGlkLCBmYWxz
ZSwgR0xfTk9ORSk7CisgICAgaWYgKGltYWdlLT5nZXRTYW1wbGVzKCkgPiAwKQorICAgIHsKKyAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgY3JlYXRlIGEgMkQgdGV4
dHVyZSBmcm9tIGEgbXVsdGlzYW1wbGVkIEVHTCBpbWFnZS4iKSk7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CiAKLSAgICBpZiAoIXF1ZXJ5T2JqZWN0KQorICAgIGNvbnN0IFRleHR1cmVD
YXBzICZ0ZXh0dXJlQ2FwcyA9IGNvbnRleHQtPmdldFRleHR1cmVDYXBzKCkuZ2V0KGltYWdlLT5n
ZXRGb3JtYXQoKS5hc1NpemVkKCkpOworICAgIGlmICghdGV4dHVyZUNhcHMudGV4dHVyYWJsZSkK
ICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OLCAiUXVlcnkgZG9lcyBub3QgZXhpc3QiKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiRUdMIGltYWdlIGludGVybmFsIGZvcm1hdCBpcyBub3Qgc3VwcG9ydGVk
IGFzIGEgdGV4dHVyZS4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBp
ZiAoY29udGV4dC0+Z2V0U3RhdGUoKS5pc1F1ZXJ5QWN0aXZlKHF1ZXJ5T2JqZWN0KSkKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVy
U3RvcmFnZU9FUyhDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6SW1h
Z2UgKmltYWdlKQoreworICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVnbEltYWdl
KQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04sICJRdWVyeSBjdXJyZW50bHkgYWN0aXZlIikpOworICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCi0gICAgc3dpdGNoIChwbmFtZSkKKyAgICBzd2l0Y2ggKHRhcmdldCkK
ICAgICB7Ci0gICAgICAgIGNhc2UgR0xfUVVFUllfUkVTVUxUX0VYVDoKLSAgICAgICAgY2FzZSBH
TF9RVUVSWV9SRVNVTFRfQVZBSUxBQkxFX0VYVDoKKyAgICAgICAgY2FzZSBHTF9SRU5ERVJCVUZG
RVI6CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBwbmFt
ZSBlbnVtIikpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNLCAiaW52YWxpZCByZW5kZXJidWZmZXIgdGFyZ2V0LiIpKTsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBWYWxp
ZGF0ZUdldFF1ZXJ5T2JqZWN0aXZFWFQoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGlkLCBHTGVu
dW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkuZGlzam9pbnRUaW1lclF1ZXJ5KQorICAgIGlmICghZGlzcGxheS0+aXNWYWxpZEltYWdl
KGltYWdlKSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAiVGltZXIgcXVlcnkgZXh0ZW5zaW9uIG5vdCBlbmFibGVkIikpOwor
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiRUdM
IGltYWdlIGlzIG5vdCB2YWxpZC4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0g
ICAgcmV0dXJuIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RWYWx1ZUJhc2UoY29udGV4dCwgaWQsIHBu
YW1lKTsKLX0KIAotYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWl2RVhUKENvbnRleHQgKmNv
bnRleHQsIEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBhcmFtcykKLXsKLSAgICBp
ZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kaXNqb2ludFRpbWVyUXVlcnkgJiYKLSAgICAg
ICAgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5vY2NsdXNpb25RdWVyeUJvb2xlYW4pCisgICAg
Y29uc3QgVGV4dHVyZUNhcHMgJnRleHR1cmVDYXBzID0gY29udGV4dC0+Z2V0VGV4dHVyZUNhcHMo
KS5nZXQoaW1hZ2UtPmdldEZvcm1hdCgpLmFzU2l6ZWQoKSk7CisgICAgaWYgKCF0ZXh0dXJlQ2Fw
cy5yZW5kZXJhYmxlKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sICJRdWVyeSBleHRlbnNpb24gbm90IGVuYWJsZWQiKSk7Cisg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKAorICAgICAgICAgICAgR0xfSU5WQUxJ
RF9PUEVSQVRJT04sICJFR0wgaW1hZ2UgaW50ZXJuYWwgZm9ybWF0IGlzIG5vdCBzdXBwb3J0ZWQg
YXMgYSByZW5kZXJidWZmZXIuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAg
IHJldHVybiBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0VmFsdWVCYXNlKGNvbnRleHQsIGlkLCBwbmFt
ZSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0
aTY0dkVYVChDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0xpbnQ2
NCAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUJpbmRWZXJ0ZXhBcnJheUJhc2UoQ29udGV4dCAqY29u
dGV4dCwgR0x1aW50IGFycmF5KQogewotICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LmRpc2pvaW50VGltZXJRdWVyeSkKKyAgICBpZiAoIWNvbnRleHQtPmlzVmVydGV4QXJyYXlHZW5l
cmF0ZWQoYXJyYXkpKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sICJUaW1lciBxdWVyeSBleHRlbnNpb24gbm90IGVuYWJsZWQi
KSk7CisgICAgICAgIC8vIFRoZSBkZWZhdWx0IFZBTyBzaG91bGQgYWx3YXlzIGV4aXN0CisgICAg
ICAgIEFTU0VSVChhcnJheSAhPSAwKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
LSAgICByZXR1cm4gVmFsaWRhdGVHZXRRdWVyeU9iamVjdFZhbHVlQmFzZShjb250ZXh0LCBpZCwg
cG5hbWUpOworCisgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRRdWVyeU9i
amVjdHVpNjR2RVhUKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBH
THVpbnQ2NCAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUxpbmtQcm9ncmFtKENvbnRleHQgKmNvbnRl
eHQsIEdMdWludCBwcm9ncmFtKQogewotICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LmRpc2pvaW50VGltZXJRdWVyeSkKKyAgICBpZiAoY29udGV4dC0+aGFzQWN0aXZlVHJhbnNmb3Jt
RmVlZGJhY2socHJvZ3JhbSkpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIlRpbWVyIHF1ZXJ5IGV4dGVuc2lvbiBub3QgZW5h
YmxlZCIpKTsKKyAgICAgICAgLy8gRVMgMy4wLjQgc2VjdGlvbiAyLjE1IHBhZ2UgOTEKKyAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgbGluayBwcm9ncmFtIHdoaWxl
IHByb2dyYW0gaXMgYXNzb2NpYXRlZCB3aXRoIGFuIGFjdGl2ZSAiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ0cmFuc2Zvcm0gZmVlZGJhY2sgb2JqZWN0LiIpKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICByZXR1cm4gVmFsaWRhdGVHZXRRdWVyeU9iamVj
dFZhbHVlQmFzZShjb250ZXh0LCBpZCwgcG5hbWUpOworICAgIHJldHVybiB0cnVlOwogfQogCi1z
dGF0aWMgYm9vbCBWYWxpZGF0ZVVuaWZvcm1Db21tb25CYXNlKGdsOjpDb250ZXh0ICpjb250ZXh0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0VW5p
Zm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMaW5rZWRV
bmlmb3JtICoqdW5pZm9ybU91dCkKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtQmluYXJ5QmFzZShDb250
ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9n
cmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBiaW5hcnlGb3JtYXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYmluYXJ5LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxlbmd0aCkKIHsKLSAgICBpZiAoY291
bnQgPCAwKQorICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBHZXRWYWxpZFByb2dyYW0oY29u
dGV4dCwgcHJvZ3JhbSk7CisgICAgaWYgKHByb2dyYW1PYmplY3QgPT0gbnVsbHB0cikKICAgICB7
Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGdsOjpQcm9ncmFtICpwcm9ncmFt
ID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRQcm9ncmFtKCk7Ci0gICAgaWYgKCFwcm9ncmFtKQor
ICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEdMZW51bT4gJnByb2dyYW1CaW5hcnlGb3JtYXRzID0gY29u
dGV4dC0+Z2V0Q2FwcygpLnByb2dyYW1CaW5hcnlGb3JtYXRzOworICAgIGlmIChzdGQ6OmZpbmQo
cHJvZ3JhbUJpbmFyeUZvcm1hdHMuYmVnaW4oKSwgcHJvZ3JhbUJpbmFyeUZvcm1hdHMuZW5kKCks
IGJpbmFyeUZvcm1hdCkgPT0KKyAgICAgICAgcHJvZ3JhbUJpbmFyeUZvcm1hdHMuZW5kKCkpCiAg
ICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VO
VU0sICJQcm9ncmFtIGJpbmFyeSBmb3JtYXQgaXMgbm90IHZhbGlkLiIpKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChsb2NhdGlvbiA9PSAtMSkKKyAgICBpZiAoY29u
dGV4dC0+aGFzQWN0aXZlVHJhbnNmb3JtRmVlZGJhY2socHJvZ3JhbSkpCiAgICAgewotICAgICAg
ICAvLyBTaWxlbnRseSBpZ25vcmUgdGhlIHVuaWZvcm0gY29tbWFuZAorICAgICAgICAvLyBFUyAz
LjAuNCBzZWN0aW9uIDIuMTUgcGFnZSA5MQorICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkNhbm5vdCBjaGFuZ2UgcHJvZ3JhbSBiaW5hcnkgd2hpbGUgcHJvZ3JhbSBpcyBhc3Nv
Y2lhdGVkIHdpdGggIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW4gYWN0
aXZlIHRyYW5zZm9ybSBmZWVkYmFjayBvYmplY3QuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgaWYgKCFwcm9ncmFtLT5pc1ZhbGlkVW5pZm9ybUxvY2F0aW9uKGxvY2F0
aW9uKSkKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1CaW5h
cnlCYXNlKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Kmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKmJpbmFy
eUZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpiaW5hcnkp
Cit7CisgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IEdldFZhbGlkUHJvZ3JhbShjb250ZXh0
LCBwcm9ncmFtKTsKKyAgICBpZiAocHJvZ3JhbU9iamVjdCA9PSBudWxscHRyKQogICAgIHsKLSAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGNvbnN0IExpbmtlZFVuaWZvcm0g
JnVuaWZvcm0gPSBwcm9ncmFtLT5nZXRVbmlmb3JtQnlMb2NhdGlvbihsb2NhdGlvbik7Ci0KLSAg
ICAvLyBhdHRlbXB0aW5nIHRvIHdyaXRlIGFuIGFycmF5IHRvIGEgbm9uLWFycmF5IHVuaWZvcm0g
aXMgYW4gSU5WQUxJRF9PUEVSQVRJT04KLSAgICBpZiAoIXVuaWZvcm0uaXNBcnJheSgpICYmIGNv
dW50ID4gMSkKKyAgICBpZiAoIXByb2dyYW1PYmplY3QtPmlzTGlua2VkKCkpCiAgICAgewotICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwor
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwg
IlByb2dyYW0gaXMgbm90IGxpbmtlZC4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKLSAgICAqdW5pZm9ybU91dCA9ICZ1bmlmb3JtOwogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlVW5pZm9ybShnbDo6Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHVuaWZvcm1U
eXBlLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCkKK2Jvb2wgVmFsaWRhdGVVc2VQcm9n
cmFtKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBwcm9ncmFtKQogewotICAgIC8vIENoZWNrIGZv
ciBFUzMgdW5pZm9ybSBlbnRyeSBwb2ludHMKLSAgICBpZiAoVmFyaWFibGVDb21wb25lbnRUeXBl
KHVuaWZvcm1UeXBlKSA9PSBHTF9VTlNJR05FRF9JTlQgJiYgY29udGV4dC0+Z2V0Q2xpZW50VmVy
c2lvbigpIDwgMykKLSAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAg
ICBjb25zdCBMaW5rZWRVbmlmb3JtICp1bmlmb3JtID0gbnVsbHB0cjsKLSAgICBpZiAoIVZhbGlk
YXRlVW5pZm9ybUNvbW1vbkJhc2UoY29udGV4dCwgdW5pZm9ybVR5cGUsIGxvY2F0aW9uLCBjb3Vu
dCwgJnVuaWZvcm0pKQorICAgIGlmIChwcm9ncmFtICE9IDApCiAgICAgewotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQ
cm9ncmFtKHByb2dyYW0pOworICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QpCisgICAgICAgIHsK
KyAgICAgICAgICAgIC8vIEVTIDMuMS4wIHNlY3Rpb24gNy4zIHBhZ2UgNzIKKyAgICAgICAgICAg
IGlmIChjb250ZXh0LT5nZXRTaGFkZXIocHJvZ3JhbSkpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiQXR0ZW1w
dGVkIHRvIHVzZSBhIHNpbmdsZSBzaGFkZXIgaW5zdGVhZCBvZiBhIHNoYWRlciBwcm9ncmFtLiIp
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIlByb2dyYW0gaW52YWxpZC4iKSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGlmICghcHJvZ3JhbU9iamVjdC0+aXNMaW5rZWQoKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJQcm9n
cmFtIG5vdCBsaW5rZWQuIikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CiAgICAgfQotCi0gICAgR0xlbnVtIHRhcmdldEJvb2xUeXBlID0gVmFyaWFibGVCb29sVmVjdG9y
VHlwZSh1bmlmb3JtVHlwZSk7Ci0gICAgYm9vbCBzYW1wbGVyVW5pZm9ybUNoZWNrID0gKElzU2Ft
cGxlclR5cGUodW5pZm9ybS0+dHlwZSkgJiYgdW5pZm9ybVR5cGUgPT0gR0xfSU5UKTsKLSAgICBp
ZiAoIXNhbXBsZXJVbmlmb3JtQ2hlY2sgJiYgdW5pZm9ybVR5cGUgIT0gdW5pZm9ybS0+dHlwZSAm
JiB0YXJnZXRCb29sVHlwZSAhPSB1bmlmb3JtLT50eXBlKQorICAgIGlmIChjb250ZXh0LT5nZXRH
TFN0YXRlKCkuaXNUcmFuc2Zvcm1GZWVkYmFja0FjdGl2ZVVucGF1c2VkKCkpCiAgICAgewotICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwor
ICAgICAgICAvLyBFUyAzLjAuNCBzZWN0aW9uIDIuMTUgcGFnZSA5MQorICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAor
ICAgICAgICAgICAgICAgICAgIkNhbm5vdCBjaGFuZ2UgYWN0aXZlIHByb2dyYW0gd2hpbGUgdHJh
bnNmb3JtIGZlZWRiYWNrIGlzIHVucGF1c2VkLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJp
eChnbDo6Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1hdHJpeFR5cGUsIEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRy
YW5zcG9zZSkKK2Jvb2wgVmFsaWRhdGVDb3B5VGV4SW1hZ2UyRChWYWxpZGF0aW9uQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBib3JkZXIpCiB7Ci0gICAgLy8gQ2hlY2sgZm9yIEVTMyB1bmlmb3JtIGVudHJ5IHBvaW50
cwotICAgIGludCByb3dzID0gVmFyaWFibGVSb3dDb3VudChtYXRyaXhUeXBlKTsKLSAgICBpbnQg
Y29scyA9IFZhcmlhYmxlQ29sdW1uQ291bnQobWF0cml4VHlwZSk7Ci0gICAgaWYgKHJvd3MgIT0g
Y29scyAmJiBjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQotICAgIHsKLSAgICAgICAg
Y29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmICh0cmFuc3Bvc2UgIT0gR0xfRkFMU0Ug
JiYgY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICBpZiAoY29udGV4dC0+Z2V0
Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIHJldHVybiBWYWxpZGF0ZUVTMkNvcHlUZXhJbWFnZVBhcmFtZXRlcnMoY29udGV4dCwg
dGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIGZhbHNlLCAwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIHgsIHksIHdpZHRoLCBoZWlnaHQs
IGJvcmRlcik7CiAgICAgfQogCi0gICAgY29uc3QgTGlua2VkVW5pZm9ybSAqdW5pZm9ybSA9IG51
bGxwdHI7Ci0gICAgaWYgKCFWYWxpZGF0ZVVuaWZvcm1Db21tb25CYXNlKGNvbnRleHQsIG1hdHJp
eFR5cGUsIGxvY2F0aW9uLCBjb3VudCwgJnVuaWZvcm0pKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KKyAgICBBU1NFUlQoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9u
KCkgPT0gMyk7CisgICAgcmV0dXJuIFZhbGlkYXRlRVMzQ29weVRleEltYWdlMkRQYXJhbWV0ZXJz
KGNvbnRleHQsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCBmYWxzZSwgMCwgMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgeCwgeSwgd2lk
dGgsIGhlaWdodCwgYm9yZGVyKTsKK30KIAotICAgIGlmICh1bmlmb3JtLT50eXBlICE9IG1hdHJp
eFR5cGUpCitib29sIFZhbGlkYXRlRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSByZW5kZXJidWZm
ZXJ0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHJl
bmRlcmJ1ZmZlcikKK3sKKyAgICBpZiAoIVZhbGlkRnJhbWVidWZmZXJUYXJnZXQodGFyZ2V0KSB8
fAorICAgICAgICAocmVuZGVyYnVmZmVydGFyZ2V0ICE9IEdMX1JFTkRFUkJVRkZFUiAmJiByZW5k
ZXJidWZmZXIgIT0gMCkpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBWYWxpZGF0ZUZyYW1lYnVmZmVyUmVuZGVyYnVm
ZmVyUGFyYW1ldGVycyhjb250ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmJ1ZmZlcnRhcmdl
dCwgcmVuZGVyYnVmZmVyKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVN0YXRlUXVlcnkoZ2w6OkNvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xlbnVtICpuYXRpdmVUeXBlLCB1bnNpZ25lZCBp
bnQgKm51bVBhcmFtcykKK2Jvb2wgVmFsaWRhdGVEcmF3QnVmZmVyc0Jhc2UoVmFsaWRhdGlvbkNv
bnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgY29uc3QgR0xlbnVtICpidWZzKQogewotICAgIGlm
ICghY29udGV4dC0+Z2V0UXVlcnlQYXJhbWV0ZXJJbmZvKHBuYW1lLCBuYXRpdmVUeXBlLCBudW1Q
YXJhbXMpKQorICAgIC8vIElOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIG4gaXMgbmVnYXRp
dmUgb3IgZ3JlYXRlciB0aGFuIHZhbHVlIG9mIE1BWF9EUkFXX0JVRkZFUlMKKyAgICBpZiAobiA8
IDAgfHwgc3RhdGljX2Nhc3Q8R0x1aW50PihuKSA+IGNvbnRleHQtPmdldENhcHMoKS5tYXhEcmF3
QnVmZmVycykKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfRU5VTSkpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAg
IEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJuIG11c3QgYmUgbm9uLW5lZ2F0aXZlIGFuZCBubyBn
cmVhdGVyIHRoYW4gTUFYX0RSQVdfQlVGRkVSUyIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIGNvbnN0IENhcHMgJmNhcHMgPSBjb250ZXh0LT5nZXRDYXBzKCk7CisgICAg
QVNTRVJUKGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXREcmF3RnJhbWVidWZmZXIoKSk7CisgICAg
R0x1aW50IGZyYW1lQnVmZmVySWQgICAgICA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXREcmF3
RnJhbWVidWZmZXIoKS0+aWQoKTsKKyAgICBHTHVpbnQgbWF4Q29sb3JBdHRhY2htZW50ID0gR0xf
Q09MT1JfQVRUQUNITUVOVDBfRVhUICsgY29udGV4dC0+Z2V0Q2FwcygpLm1heENvbG9yQXR0YWNo
bWVudHM7CiAKLSAgICBpZiAocG5hbWUgPj0gR0xfRFJBV19CVUZGRVIwICYmIHBuYW1lIDw9IEdM
X0RSQVdfQlVGRkVSMTUpCisgICAgLy8gVGhpcyBzaG91bGQgY29tZSBmaXJzdCBiZWZvcmUgdGhl
IGNoZWNrIGZvciB0aGUgZGVmYXVsdCBmcmFtZSBidWZmZXIKKyAgICAvLyBiZWNhdXNlIHdoZW4g
d2Ugc3dpdGNoIHRvIEVTMy4xKywgaW52YWxpZCBlbnVtcyB3aWxsIHJldHVybiBJTlZBTElEX0VO
VU0KKyAgICAvLyByYXRoZXIgdGhhbiBJTlZBTElEX09QRVJBVElPTgorICAgIGZvciAoaW50IGNv
bG9yQXR0YWNobWVudCA9IDA7IGNvbG9yQXR0YWNobWVudCA8IG47IGNvbG9yQXR0YWNobWVudCsr
KQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgaW50IGNvbG9yQXR0YWNobWVudCA9IChwbmFtZSAt
IEdMX0RSQVdfQlVGRkVSMCk7CisgICAgICAgIGNvbnN0IEdMZW51bSBhdHRhY2htZW50ID0gR0xf
Q09MT1JfQVRUQUNITUVOVDBfRVhUICsgY29sb3JBdHRhY2htZW50OwogCi0gICAgICAgIGlmIChj
b2xvckF0dGFjaG1lbnQgPj0gY2Fwcy5tYXhEcmF3QnVmZmVycykKKyAgICAgICAgaWYgKGJ1ZnNb
Y29sb3JBdHRhY2htZW50XSAhPSBHTF9OT05FICYmIGJ1ZnNbY29sb3JBdHRhY2htZW50XSAhPSBH
TF9CQUNLICYmCisgICAgICAgICAgICAoYnVmc1tjb2xvckF0dGFjaG1lbnRdIDwgR0xfQ09MT1Jf
QVRUQUNITUVOVDAgfHwKKyAgICAgICAgICAgICBidWZzW2NvbG9yQXR0YWNobWVudF0gPiBHTF9D
T0xPUl9BVFRBQ0hNRU5UMzEpKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBWYWx1ZSBpbiBi
dWZzIGlzIG5vdCBOT05FLCBCQUNLLCBvciBHTF9DT0xPUl9BVFRBQ0hNRU5UaQorICAgICAgICAg
ICAgLy8gVGhlIDMuMC40IHNwZWMgc2F5cyB0byBnZW5lcmF0ZSBHTF9JTlZBTElEX09QRVJBVElP
TiBoZXJlLCBidXQgdGhpcworICAgICAgICAgICAgLy8gd2FzIGNoYW5nZWQgdG8gR0xfSU5WQUxJ
RF9FTlVNIGluIDMuMSwgd2hpY2ggZEVRUCBhbHNvIGV4cGVjdHMuCisgICAgICAgICAgICAvLyAz
LjEgaXMgc3RpbGwgYSBiaXQgYW1iaWd1b3VzIGFib3V0IHRoZSBlcnJvciwgYnV0IGZ1dHVyZSBz
cGVjcyBhcmUKKyAgICAgICAgICAgIC8vIGV4cGVjdGVkIHRvIGNsYXJpZnkgdGhhdCBHTF9JTlZB
TElEX0VOVU0gaXMgdGhlIGNvcnJlY3QgZXJyb3IuCisgICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGJ1ZmZlciB2YWx1ZSIpKTsK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChi
dWZzW2NvbG9yQXR0YWNobWVudF0gPj0gbWF4Q29sb3JBdHRhY2htZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgICAgICBFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTiwgIkJ1ZmZlciB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gTUFYX0RS
QVdfQlVGRkVSUyIpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg
ICAgICBlbHNlIGlmIChidWZzW2NvbG9yQXR0YWNobWVudF0gIT0gR0xfTk9ORSAmJiBidWZzW2Nv
bG9yQXR0YWNobWVudF0gIT0gYXR0YWNobWVudCAmJgorICAgICAgICAgICAgICAgICBmcmFtZUJ1
ZmZlcklkICE9IDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAvLyBJTlZBTElEX09Q
RVJBVElPTi1HTCBpcyBib3VuZCB0byBidWZmZXIgYW5kIGl0aCBhcmd1bWVudAorICAgICAgICAg
ICAgLy8gaXMgbm90IENPTE9SX0FUVEFDSE1FTlRpIG9yIE5PTkUKKyAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OLCAiSXRoIHZhbHVlIGRvZXMgbm90IG1hdGNoIENPTE9SX0FUVEFDSE1FTlRpIG9yIE5PTkUi
KSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBz
d2l0Y2ggKHBuYW1lKQorICAgIC8vIElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBH
TCBpcyBib3VuZCB0byB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlcgorICAgIC8vIGFuZCBuIGlzIG5v
dCAxIG9yIGJ1ZnMgaXMgYm91bmQgdG8gdmFsdWUgb3RoZXIgdGhhbiBCQUNLIGFuZCBOT05FCisg
ICAgaWYgKGZyYW1lQnVmZmVySWQgPT0gMCkKICAgICB7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVf
QklORElOR18yRDoKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQOgotICAg
ICAgY2FzZSBHTF9URVhUVVJFX0JJTkRJTkdfM0Q6Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQklO
RElOR18yRF9BUlJBWToKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQklO
RElOR19FWFRFUk5BTF9PRVM6Ci0gICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuZWdsU3RyZWFtQ29uc3VtZXJFeHRlcm5hbCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKAotICAgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJ
RF9FTlVNLCAiTlZfRUdMX3N0cmVhbV9jb25zdW1lcl9leHRlcm5hbCBleHRlbnNpb24gbm90IGVu
YWJsZWQiKSk7Ci0gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAg
ICAgICAgYnJlYWs7Ci0KLSAgICAgIGNhc2UgR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9U
WVBFOgotICAgICAgY2FzZSBHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVDoKKyAg
ICAgICAgaWYgKG4gIT0gMSkKICAgICAgICAgewotICAgICAgICAgICAgRnJhbWVidWZmZXIgKmZy
YW1lYnVmZmVyID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRSZWFkRnJhbWVidWZmZXIoKTsKLSAg
ICAgICAgICAgIEFTU0VSVChmcmFtZWJ1ZmZlcik7Ci0gICAgICAgICAgICBpZiAoZnJhbWVidWZm
ZXItPmNoZWNrU3RhdHVzKGNvbnRleHQtPmdldERhdGEoKSkgIT0gR0xfRlJBTUVCVUZGRVJfQ09N
UExFVEUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0
YWNobWVudCAqYXR0YWNobWVudCA9IGZyYW1lYnVmZmVyLT5nZXRSZWFkQ29sb3JidWZmZXIoKTsK
LSAgICAgICAgICAgIGlmICghYXR0YWNobWVudCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwot
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm4gbXVzdCBiZSAxIHdoZW4gR0wgaXMg
Ym91bmQgdG8gdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIiKSk7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KIAotICAgIC8vIHBuYW1lIGlzIHZhbGlkLCBidXQgdGhlcmUgYXJl
IG5vIHBhcmFtZXRlcnMgdG8gcmV0dXJuCi0gICAgaWYgKG51bVBhcmFtcyA9PSAwKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoYnVmc1swXSAhPSBHTF9OT05FICYm
IGJ1ZnNbMF0gIT0gR0xfQkFDSykKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoCisgICAgICAgICAgICAgICAgR0xfSU5WQUxJRF9PUEVSQVRJT04sCisg
ICAgICAgICAgICAgICAgIk9ubHkgTk9ORSBvciBCQUNLIGFyZSB2YWxpZCB2YWx1ZXMgd2hlbiBk
cmF3aW5nIHRvIHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyIikpOworICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVDb3B5VGV4SW1hZ2VQYXJhbWV0ZXJzQmFzZShWYWxpZGF0aW9uQ29udGV4dCAqY29u
dGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVs
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5h
bGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlz
U3ViSW1hZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
eG9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5
b2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHpv
ZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYm9yZGVyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAqdGV4dHVyZUZvcm1hdE91dCkK
LXsKLSAgICBpZiAobGV2ZWwgPCAwIHx8IHhvZmZzZXQgPCAwIHx8IHlvZmZzZXQgPCAwIHx8IHpv
ZmZzZXQgPCAwIHx8IHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwKQotICAgIHsKLSAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKHN0ZDo6bnVtZXJpY19saW1pdHM8R0xzaXplaT46
Om1heCgpIC0geG9mZnNldCA8IHdpZHRoIHx8IHN0ZDo6bnVtZXJpY19saW1pdHM8R0xzaXplaT46
Om1heCgpIC0geW9mZnNldCA8IGhlaWdodCkKK2Jvb2wgVmFsaWRhdGVDb3B5VGV4U3ViSW1hZ2Uy
RChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KQoreworICAgIGlmIChjb250
ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgewotICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIFZhbGlkYXRlRVMyQ29weVRleEltYWdlUGFyYW1ldGVycyhj
b250ZXh0LCB0YXJnZXQsIGxldmVsLCBHTF9OT05FLCB0cnVlLCB4b2Zmc2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvZmZzZXQsIHgsIHksIHdp
ZHRoLCBoZWlnaHQsIDApOwogICAgIH0KIAotICAgIGlmIChib3JkZXIgIT0gMCkKLSAgICB7Ci0g
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICByZXR1cm4gVmFsaWRhdGVFUzNDb3B5VGV4
SW1hZ2UyRFBhcmFtZXRlcnMoY29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgR0xfTk9ORSwgdHJ1ZSwg
eG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eW9mZnNldCwgMCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgMCk7Cit9CiAKLSAgICBpZiAoIVZhbGlk
TWlwTGV2ZWwoY29udGV4dCwgdGFyZ2V0LCBsZXZlbCkpCitib29sIFZhbGlkYXRlR2V0QnVmZmVy
UG9pbnRlcnZCYXNlKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoq
cGFyYW1zKQoreworICAgIGlmIChsZW5ndGgpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgKmxlbmd0aCA9IDA7CiAgICAgfQogCi0gICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVy
ICpmcmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0UmVhZEZyYW1lYnVmZmVyKCk7
Ci0gICAgaWYgKGZyYW1lYnVmZmVyLT5jaGVja1N0YXR1cyhjb250ZXh0LT5nZXREYXRhKCkpICE9
IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQorICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpv
clZlcnNpb24oKSA8IDMgJiYgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5tYXBCdWZmZXIpCiAg
ICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0ZSQU1F
QlVGRkVSX09QRVJBVElPTikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAg
ICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAgICAgICAgICAgIkNv
bnRleHQgZG9lcyBub3Qgc3VwcG9ydCBPcGVuR0wgRVMgMy4wIG9yIEdMX09FU19tYXBfYnVmZmVy
IGlzIG5vdCBlbmFibGVkLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IGNvbnN0IGF1dG8gJnN0YXRlID0gY29udGV4dC0+Z2V0U3RhdGUoKTsKLSAgICBpZiAoc3RhdGUu
Z2V0UmVhZEZyYW1lYnVmZmVyKCktPmlkKCkgIT0gMCAmJiBmcmFtZWJ1ZmZlci0+Z2V0U2FtcGxl
cyhjb250ZXh0LT5nZXREYXRhKCkpICE9IDApCisgICAgaWYgKCFWYWxpZEJ1ZmZlclRhcmdldChj
b250ZXh0LCB0YXJnZXQpKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiQnVmZmVyIHRhcmdldCBub3QgdmFsaWQ6IDB4JVgiLCB0
YXJnZXQpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGNvbnN0IGdsOjpD
YXBzICZjYXBzID0gY29udGV4dC0+Z2V0Q2FwcygpOwotCi0gICAgR0x1aW50IG1heERpbWVuc2lv
biA9IDA7Ci0gICAgc3dpdGNoICh0YXJnZXQpCisgICAgc3dpdGNoIChwbmFtZSkKICAgICB7Ci0g
ICAgICBjYXNlIEdMX1RFWFRVUkVfMkQ6Ci0gICAgICAgIG1heERpbWVuc2lvbiA9IGNhcHMubWF4
MkRUZXh0dXJlU2l6ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9D
VUJFX01BUF9QT1NJVElWRV9YOgotICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FU
SVZFX1g6Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWToKLSAgICAg
IGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZOgotICAgICAgY2FzZSBHTF9URVhU
VVJFX0NVQkVfTUFQX1BPU0lUSVZFX1o6Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBf
TkVHQVRJVkVfWjoKLSAgICAgICAgbWF4RGltZW5zaW9uID0gY2Fwcy5tYXhDdWJlTWFwVGV4dHVy
ZVNpemU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgICBjYXNlIEdMX1RFWFRVUkVfMkRfQVJSQVk6
Ci0gICAgICAgIG1heERpbWVuc2lvbiA9IGNhcHMubWF4MkRUZXh0dXJlU2l6ZTsKLSAgICAgICAg
YnJlYWs7Ci0KLSAgICAgIGNhc2UgR0xfVEVYVFVSRV8zRDoKLSAgICAgICAgbWF4RGltZW5zaW9u
ID0gY2Fwcy5tYXgzRFRleHR1cmVTaXplOwotICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBH
TF9CVUZGRVJfTUFQX1BPSU5URVI6CisgICAgICAgICAgICBicmVhazsKIAotICAgICAgZGVmYXVs
dDoKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIlVua25vd24gcG5hbWUu
IikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGdsOjpUZXh0dXJl
ICp0ZXh0dXJlID0KLSAgICAgICAgc3RhdGUuZ2V0VGFyZ2V0VGV4dHVyZShJc0N1YmVNYXBUZXh0
dXJlVGFyZ2V0KHRhcmdldCkgPyBHTF9URVhUVVJFX0NVQkVfTUFQIDogdGFyZ2V0KTsKLSAgICBp
ZiAoIXRleHR1cmUpCisgICAgLy8gR0xFUyAzLjAgc2VjdGlvbiAyLjEwLjE6ICJBdHRlbXB0cyB0
byBhdHRlbXB0cyB0byBtb2RpZnkgb3IgcXVlcnkgYnVmZmVyIG9iamVjdCBzdGF0ZSBmb3IgYQor
ICAgIC8vIHRhcmdldCBib3VuZCB0byB6ZXJvIGdlbmVyYXRlIGFuIElOVkFMSURfT1BFUkFUSU9O
IGVycm9yLiIKKyAgICAvLyBHTEVTIDMuMSBzZWN0aW9uIDYuNiBleHBsaWNpdGx5IHNwZWNpZmll
cyB0aGlzIGVycm9yLgorICAgIGlmIChjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VGFyZ2V0QnVm
ZmVyKHRhcmdldCkgPT0gbnVsbHB0cikKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJDYW4gbm90
IGdldCBwb2ludGVyIGZvciByZXNlcnZlZCBidWZmZXIgbmFtZSB6ZXJvLiIpKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmICh0ZXh0dXJlLT5nZXRJbW11dGFibGVGb3Jt
YXQoKSAmJiAhaXNTdWJJbWFnZSkKKyAgICBpZiAobGVuZ3RoKQogICAgIHsKLSAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAqbGVuZ3RoID0gMTsKICAgICB9CiAKLSAgICBjb25zdCBn
bDo6SW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZv
KGludGVybmFsZm9ybWF0KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KIAotICAgIGlmIChmb3JtYXRJ
bmZvLmRlcHRoQml0cyA+IDApCitib29sIFZhbGlkYXRlVW5tYXBCdWZmZXJCYXNlKENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSB0YXJnZXQpCit7CisgICAgaWYgKCFWYWxpZEJ1ZmZlclRhcmdldChj
b250ZXh0LCB0YXJnZXQpKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBidWZmZXIgdGFyZ2V0LiIpKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChmb3JtYXRJbmZvLmNvbXByZXNzZWQg
JiYgIVZhbGlkQ29tcHJlc3NlZEltYWdlU2l6ZShjb250ZXh0LCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCkpCi0gICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAg
IEJ1ZmZlciAqYnVmZmVyID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFRhcmdldEJ1ZmZlcih0
YXJnZXQpOwogCi0gICAgaWYgKGlzU3ViSW1hZ2UpCi0gICAgewotICAgICAgICBpZiAoc3RhdGlj
X2Nhc3Q8c2l6ZV90Pih4b2Zmc2V0ICsgd2lkdGgpID4gdGV4dHVyZS0+Z2V0V2lkdGgodGFyZ2V0
LCBsZXZlbCkgfHwKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PHNpemVfdD4oeW9mZnNldCArIGhl
aWdodCkgPiB0ZXh0dXJlLT5nZXRIZWlnaHQodGFyZ2V0LCBsZXZlbCkgfHwKLSAgICAgICAgICAg
IHN0YXRpY19jYXN0PHNpemVfdD4oem9mZnNldCkgPj0gdGV4dHVyZS0+Z2V0RGVwdGgodGFyZ2V0
LCBsZXZlbCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgfQotICAgIH0KLSAgICBlbHNlCisgICAgaWYgKGJ1ZmZlciA9PSBudWxscHRyIHx8ICFidWZm
ZXItPmlzTWFwcGVkKCkpCiAgICAgewotICAgICAgICBpZiAoSXNDdWJlTWFwVGV4dHVyZVRhcmdl
dCh0YXJnZXQpICYmIHdpZHRoICE9IGhlaWdodCkKLSAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFmb3JtYXRJbmZvLnRleHR1
cmVTdXBwb3J0KGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSwgY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpKSkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLQotICAgICAgICBpbnQgbWF4TGV2ZWxEaW1lbnNpb24gPSAobWF4RGltZW5zaW9uID4+IGxl
dmVsKTsKLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4od2lkdGgpID4gbWF4TGV2ZWxEaW1l
bnNpb24gfHwgc3RhdGljX2Nhc3Q8aW50PihoZWlnaHQpID4gbWF4TGV2ZWxEaW1lbnNpb24pCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFM
SURfVkFMVUUpKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQorICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkJ1ZmZl
ciBub3QgbWFwcGVkLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgICp0
ZXh0dXJlRm9ybWF0T3V0ID0gdGV4dHVyZS0+Z2V0SW50ZXJuYWxGb3JtYXQodGFyZ2V0LCBsZXZl
bCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIFZhbGlkYXRlRHJhd0Jhc2Uo
VmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBtb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHByaW1jb3VudCkKK2Jvb2wg
VmFsaWRhdGVNYXBCdWZmZXJSYW5nZUJhc2UoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnRwdHIgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpcHRyIGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xiaXRmaWVsZCBhY2Nlc3MpCiB7Ci0gICAgc3dpdGNoIChtb2RlKQorICAgIGlmICghVmFsaWRC
dWZmZXJUYXJnZXQoY29udGV4dCwgdGFyZ2V0KSkKICAgICB7Ci0gICAgICBjYXNlIEdMX1BPSU5U
UzoKLSAgICAgIGNhc2UgR0xfTElORVM6Ci0gICAgICBjYXNlIEdMX0xJTkVfTE9PUDoKLSAgICAg
IGNhc2UgR0xfTElORV9TVFJJUDoKLSAgICAgIGNhc2UgR0xfVFJJQU5HTEVTOgotICAgICAgY2Fz
ZSBHTF9UUklBTkdMRV9TVFJJUDoKLSAgICAgIGNhc2UgR0xfVFJJQU5HTEVfRkFOOgotICAgICAg
ICBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGJ1ZmZlciB0YXJnZXQuIikpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKGNvdW50IDwgMCkKKyAgICBpZiAob2Zmc2V0
IDwgMCB8fCBsZW5ndGggPCAwKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiSW52YWxpZCBvZmZzZXQgb3IgbGVuZ3RoLiIpKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGNvbnN0IFN0YXRlICZzdGF0ZSA9IGNv
bnRleHQtPmdldFN0YXRlKCk7CisgICAgQnVmZmVyICpidWZmZXIgPSBjb250ZXh0LT5nZXRHTFN0
YXRlKCkuZ2V0VGFyZ2V0QnVmZmVyKHRhcmdldCk7CiAKLSAgICAvLyBDaGVjayBmb3IgbWFwcGVk
IGJ1ZmZlcnMKLSAgICBpZiAoc3RhdGUuaGFzTWFwcGVkQnVmZmVyKEdMX0FSUkFZX0JVRkZFUikp
CisgICAgaWYgKCFidWZmZXIpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkF0dGVtcHRlZCB0byBtYXAgYnVmZmVyIG9i
amVjdCB6ZXJvLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChj
b250ZXh0LT5nZXRMaW1pdGF0aW9ucygpLm5vU2VwYXJhdGVTdGVuY2lsUmVmc0FuZE1hc2tzKQot
ICAgIHsKLSAgICAgICAgY29uc3QgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyICAgICAgICAgICAg
ID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXREcmF3RnJhbWVidWZmZXIoKTsKLSAgICAgICAgY29u
c3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpzdGVuY2lsQnVmZmVyID0gZnJhbWVidWZmZXItPmdl
dFN0ZW5jaWxidWZmZXIoKTsKLSAgICAgICAgR0x1aW50IHN0ZW5jaWxCaXRzICAgICAgICAgICAg
ICAgICAgICAgICAgID0gc3RlbmNpbEJ1ZmZlciA/IHN0ZW5jaWxCdWZmZXItPmdldFN0ZW5jaWxT
aXplKCkgOiAwOwotICAgICAgICBHTHVpbnQgbWluaW11bVJlcXVpcmVkU3RlbmNpbE1hc2sgICAg
ICAgICAgPSAoMSA8PCBzdGVuY2lsQml0cykgLSAxOwotICAgICAgICBjb25zdCBEZXB0aFN0ZW5j
aWxTdGF0ZSAmZGVwdGhTdGVuY2lsU3RhdGUgPSBzdGF0ZS5nZXREZXB0aFN0ZW5jaWxTdGF0ZSgp
OwotICAgICAgICBpZiAoKGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxXcml0ZW1hc2sgJiBtaW5p
bXVtUmVxdWlyZWRTdGVuY2lsTWFzaykgIT0KLSAgICAgICAgICAgICAgICAoZGVwdGhTdGVuY2ls
U3RhdGUuc3RlbmNpbEJhY2tXcml0ZW1hc2sgJiBtaW5pbXVtUmVxdWlyZWRTdGVuY2lsTWFzaykg
fHwKLSAgICAgICAgICAgIHN0YXRlLmdldFN0ZW5jaWxSZWYoKSAhPSBzdGF0ZS5nZXRTdGVuY2ls
QmFja1JlZigpIHx8Ci0gICAgICAgICAgICAoZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbE1hc2sg
JiBtaW5pbXVtUmVxdWlyZWRTdGVuY2lsTWFzaykgIT0KLSAgICAgICAgICAgICAgICAoZGVwdGhT
dGVuY2lsU3RhdGUuc3RlbmNpbEJhY2tNYXNrICYgbWluaW11bVJlcXVpcmVkU3RlbmNpbE1hc2sp
KQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBOb3RlOiB0aGVzZSBzZXBhcmF0ZSB2YWx1ZXMg
YXJlIG5vdCBzdXBwb3J0ZWQgaW4gV2ViR0wsIGR1ZSB0byBEM0QncyBsaW1pdGF0aW9ucy4gU2Vl
Ci0gICAgICAgICAgICAvLyBTZWN0aW9uIDYuMTAgb2YgdGhlIFdlYkdMIDEuMCBzcGVjCi0gICAg
ICAgICAgICBFUlIoCi0gICAgICAgICAgICAgICAgIlRoaXMgQU5HTEUgaW1wbGVtZW50YXRpb24g
ZG9lcyBub3Qgc3VwcG9ydCBzZXBhcmF0ZSBmcm9udC9iYWNrIHN0ZW5jaWwgIgotICAgICAgICAg
ICAgICAgICJ3cml0ZW1hc2tzLCByZWZlcmVuY2UgdmFsdWVzLCBvciBzdGVuY2lsIG1hc2sgdmFs
dWVzLiIpOwotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAg
IH0KKyAgICAvLyBDaGVjayBmb3IgYnVmZmVyIG92ZXJmbG93CisgICAgQ2hlY2tlZE51bWVyaWM8
c2l6ZV90PiBjaGVja2VkT2Zmc2V0KG9mZnNldCk7CisgICAgYXV0byBjaGVja2VkU2l6ZSA9IGNo
ZWNrZWRPZmZzZXQgKyBsZW5ndGg7CiAKLSAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZibyA9
IHN0YXRlLmdldERyYXdGcmFtZWJ1ZmZlcigpOwotICAgIGlmICghZmJvIHx8IGZiby0+Y2hlY2tT
dGF0dXMoY29udGV4dC0+Z2V0RGF0YSgpKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKKyAg
ICBpZiAoIWNoZWNrZWRTaXplLklzVmFsaWQoKSB8fCBjaGVja2VkU2l6ZS5WYWx1ZU9yRGllKCkg
PiBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ1ZmZlci0+Z2V0U2l6ZSgpKSkKICAgICB7Ci0gICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFU
SU9OKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSwgIk1hcHBlZCByYW5nZSBkb2VzIG5vdCBmaXQgaW50byBidWZmZXIg
ZGltZW5zaW9ucy4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBnbDo6
UHJvZ3JhbSAqcHJvZ3JhbSA9IHN0YXRlLmdldFByb2dyYW0oKTsKLSAgICBpZiAoIXByb2dyYW0p
Ci0gICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTikpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIC8vIENoZWNrIGZv
ciBpbnZhbGlkIGJpdHMgaW4gdGhlIG1hc2sKKyAgICBHTGJpdGZpZWxkIGFsbEFjY2Vzc0JpdHMg
PSBHTF9NQVBfUkVBRF9CSVQgfCBHTF9NQVBfV1JJVEVfQklUIHwgR0xfTUFQX0lOVkFMSURBVEVf
UkFOR0VfQklUIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9NQVBfSU5WQUxJ
REFURV9CVUZGRVJfQklUIHwgR0xfTUFQX0ZMVVNIX0VYUExJQ0lUX0JJVCB8CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfTUFQX1VOU1lOQ0hST05JWkVEX0JJVDsKIAotICAgIGlm
ICghcHJvZ3JhbS0+dmFsaWRhdGVTYW1wbGVycyhOVUxMLCBjb250ZXh0LT5nZXRDYXBzKCkpKQor
ICAgIGlmIChhY2Nlc3MgJiB+KGFsbEFjY2Vzc0JpdHMpKQogICAgIHsKLSAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIkludmFsaWQgYWNjZXNz
IGJpdHM6IDB4JVguIiwgYWNjZXNzKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
LSAgICAvLyBVbmlmb3JtIGJ1ZmZlciB2YWxpZGF0aW9uCi0gICAgZm9yICh1bnNpZ25lZCBpbnQg
dW5pZm9ybUJsb2NrSW5kZXggPSAwOyB1bmlmb3JtQmxvY2tJbmRleCA8IHByb2dyYW0tPmdldEFj
dGl2ZVVuaWZvcm1CbG9ja0NvdW50KCk7IHVuaWZvcm1CbG9ja0luZGV4KyspCisgICAgaWYgKGxl
bmd0aCA9PSAwKQogICAgIHsKLSAgICAgICAgY29uc3QgZ2w6OlVuaWZvcm1CbG9jayAmdW5pZm9y
bUJsb2NrID0gcHJvZ3JhbS0+Z2V0VW5pZm9ybUJsb2NrQnlJbmRleCh1bmlmb3JtQmxvY2tJbmRl
eCk7Ci0gICAgICAgIEdMdWludCBibG9ja0JpbmRpbmcgPSBwcm9ncmFtLT5nZXRVbmlmb3JtQmxv
Y2tCaW5kaW5nKHVuaWZvcm1CbG9ja0luZGV4KTsKLSAgICAgICAgY29uc3QgT2Zmc2V0QmluZGlu
Z1BvaW50ZXI8QnVmZmVyPiAmdW5pZm9ybUJ1ZmZlciA9Ci0gICAgICAgICAgICBzdGF0ZS5nZXRJ
bmRleGVkVW5pZm9ybUJ1ZmZlcihibG9ja0JpbmRpbmcpOwotCi0gICAgICAgIGlmICh1bmlmb3Jt
QnVmZmVyLmdldCgpID09IG51bGxwdHIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIHVuZGVm
aW5lZCBiZWhhdmlvdXIKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLCAiSXQgaXMgdW5kZWZpbmVkIGJlaGF2aW91ciB0byBoYXZlIGEg
dXNlZCBidXQgdW5ib3VuZCB1bmlmb3JtIGJ1ZmZlci4iKSk7Ci0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBzaXplX3QgdW5pZm9ybUJ1ZmZlclNpemUgPSB1
bmlmb3JtQnVmZmVyLmdldFNpemUoKTsKLSAgICAgICAgaWYgKHVuaWZvcm1CdWZmZXJTaXplID09
IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIEJpbmQgdGhlIHdob2xlIGJ1ZmZlci4KLSAg
ICAgICAgICAgIHVuaWZvcm1CdWZmZXJTaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pih1bmlmb3Jt
QnVmZmVyLT5nZXRTaXplKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHVuaWZvcm1CdWZm
ZXJTaXplIDwgdW5pZm9ybUJsb2NrLmRhdGFTaXplKQotICAgICAgICB7Ci0gICAgICAgICAgICAv
LyB1bmRlZmluZWQgYmVoYXZpb3VyCi0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkl0IGlzIHVuZGVmaW5lZCBiZWhhdmlvdXIgdG8g
dXNlIGEgdW5pZm9ybSBidWZmZXIgdGhhdCBpcyB0b28gc21hbGwuIikpOwotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQnVmZmVyIG1hcHBpbmcgbGVuZ3RoIGlzIHplcm8u
IikpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgLy8gTm8tb3AgaWYgemVy
byBjb3VudAotICAgIHJldHVybiAoY291bnQgPiAwKTsKLX0KLQotYm9vbCBWYWxpZGF0ZURyYXdB
cnJheXMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVp
IGNvdW50LCBHTHNpemVpIHByaW1jb3VudCkKLXsKLSAgICBpZiAoZmlyc3QgPCAwKQorICAgIGlm
IChidWZmZXItPmlzTWFwcGVkKCkpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQnVmZmVyIGlzIGFscmVhZHkgbWFwcGVkLiIp
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGNvbnN0IFN0YXRlICZzdGF0
ZSA9IGNvbnRleHQtPmdldFN0YXRlKCk7Ci0gICAgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrICpjdXJU
cmFuc2Zvcm1GZWVkYmFjayA9IHN0YXRlLmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpOwot
ICAgIGlmIChjdXJUcmFuc2Zvcm1GZWVkYmFjayAmJiBjdXJUcmFuc2Zvcm1GZWVkYmFjay0+aXNB
Y3RpdmUoKSAmJiAhY3VyVHJhbnNmb3JtRmVlZGJhY2stPmlzUGF1c2VkKCkgJiYKLSAgICAgICAg
Y3VyVHJhbnNmb3JtRmVlZGJhY2stPmdldFByaW1pdGl2ZU1vZGUoKSAhPSBtb2RlKQorICAgIC8v
IENoZWNrIGZvciBpbnZhbGlkIGJpdCBjb21iaW5hdGlvbnMKKyAgICBpZiAoKGFjY2VzcyAmIChH
TF9NQVBfUkVBRF9CSVQgfCBHTF9NQVBfV1JJVEVfQklUKSkgPT0gMCkKICAgICB7Ci0gICAgICAg
IC8vIEl0IGlzIGFuIGludmFsaWQgb3BlcmF0aW9uIHRvIGNhbGwgRHJhd0FycmF5cyBvciBEcmF3
QXJyYXlzSW5zdGFuY2VkIHdpdGggYSBkcmF3IG1vZGUKLSAgICAgICAgLy8gdGhhdCBkb2VzIG5v
dCBtYXRjaCB0aGUgY3VycmVudCB0cmFuc2Zvcm0gZmVlZGJhY2sgb2JqZWN0J3MgZHJhdyBtb2Rl
IChpZiB0cmFuc2Zvcm0gZmVlZGJhY2sKLSAgICAgICAgLy8gaXMgYWN0aXZlKSwgKDMuMC4yLCBz
ZWN0aW9uIDIuMTQsIHBnIDg2KQotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAg
ICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiTmVlZCB0byBtYXAgYnVmZmVy
IGZvciBlaXRoZXIgcmVhZGluZyBvciB3cml0aW5nLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIGlmICghVmFsaWRhdGVEcmF3QmFzZShjb250ZXh0LCBtb2RlLCBjb3Vu
dCwgcHJpbWNvdW50KSkKKyAgICBHTGJpdGZpZWxkIHdyaXRlT25seUJpdHMgPQorICAgICAgICBH
TF9NQVBfSU5WQUxJREFURV9SQU5HRV9CSVQgfCBHTF9NQVBfSU5WQUxJREFURV9CVUZGRVJfQklU
IHwgR0xfTUFQX1VOU1lOQ0hST05JWkVEX0JJVDsKKworICAgIGlmICgoYWNjZXNzICYgR0xfTUFQ
X1JFQURfQklUKSAhPSAwICYmIChhY2Nlc3MgJiB3cml0ZU9ubHlCaXRzKSAhPSAwKQogICAgIHsK
KyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGFjY2VzcyBiaXRz
IHdoZW4gbWFwcGluZyBidWZmZXIgZm9yIHJlYWRpbmc6IDB4JVguIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWNjZXNzKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICBpZiAoIVZhbGlkYXRlRHJhd0F0dHJpYnMoY29udGV4dCwgcHJpbWNvdW50LCBj
b3VudCkpCisgICAgaWYgKChhY2Nlc3MgJiBHTF9NQVBfV1JJVEVfQklUKSA9PSAwICYmIChhY2Nl
c3MgJiBHTF9NQVBfRkxVU0hfRVhQTElDSVRfQklUKSAhPSAwKQogICAgIHsKKyAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoCisgICAgICAgICAgICBHTF9JTlZBTElEX09QRVJBVElP
TiwKKyAgICAgICAgICAgICJUaGUgZXhwbGljaXQgZmx1c2hpbmcgYml0IG1heSBvbmx5IGJlIHNl
dCBpZiB0aGUgYnVmZmVyIGlzIG1hcHBlZCBmb3Igd3JpdGluZy4iKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9Ci0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZURy
YXdBcnJheXNJbnN0YW5jZWQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGUsIEdMaW50IGZp
cnN0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIHByaW1jb3VudCkKK2Jvb2wgVmFsaWRhdGVGbHVz
aE1hcHBlZEJ1ZmZlclJhbmdlQmFzZShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgb2Zmc2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgbGVuZ3RoKQogewotICAgIGlmIChw
cmltY291bnQgPCAwKQorICAgIGlmIChvZmZzZXQgPCAwIHx8IGxlbmd0aCA8IDApCiAgICAgewot
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Cisg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJJbnZh
bGlkIG9mZnNldC9sZW5ndGggcGFyYW1ldGVycy4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBpZiAoIVZhbGlkYXRlRHJhd0FycmF5cyhjb250ZXh0LCBtb2RlLCBmaXJz
dCwgY291bnQsIHByaW1jb3VudCkpCisgICAgaWYgKCFWYWxpZEJ1ZmZlclRhcmdldChjb250ZXh0
LCB0YXJnZXQpKQogICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9FTlVNLCAiSW52YWxpZCBidWZmZXIgdGFyZ2V0LiIpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIC8vIE5vLW9wIGlmIHplcm8gcHJpbWl0aXZlIGNvdW50Ci0g
ICAgcmV0dXJuIChwcmltY291bnQgPiAwKTsKLX0KLQotc3RhdGljIGJvb2wgVmFsaWRhdGVEcmF3
SW5zdGFuY2VkQU5HTEUoQ29udGV4dCAqY29udGV4dCkKLXsKLSAgICAvLyBWZXJpZnkgdGhlcmUg
aXMgYXQgbGVhc3Qgb25lIGFjdGl2ZSBhdHRyaWJ1dGUgd2l0aCBhIGRpdmlzb3Igb2YgemVybwot
ICAgIGNvbnN0IGdsOjpTdGF0ZSYgc3RhdGUgPSBjb250ZXh0LT5nZXRTdGF0ZSgpOworICAgIEJ1
ZmZlciAqYnVmZmVyID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFRhcmdldEJ1ZmZlcih0YXJn
ZXQpOwogCi0gICAgZ2w6OlByb2dyYW0gKnByb2dyYW0gPSBzdGF0ZS5nZXRQcm9ncmFtKCk7Cisg
ICAgaWYgKGJ1ZmZlciA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJBdHRlbXB0ZWQgdG8gZmx1c2ggYnVm
ZmVyIG9iamVjdCB6ZXJvLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAotICAg
IGNvbnN0IFZlcnRleEFycmF5ICp2YW8gPSBzdGF0ZS5nZXRWZXJ0ZXhBcnJheSgpOwotICAgIGZv
ciAoc2l6ZV90IGF0dHJpYnV0ZUluZGV4ID0gMDsgYXR0cmlidXRlSW5kZXggPCBNQVhfVkVSVEVY
X0FUVFJJQlM7IGF0dHJpYnV0ZUluZGV4KyspCisgICAgaWYgKCFidWZmZXItPmlzTWFwcGVkKCkg
fHwgKGJ1ZmZlci0+Z2V0QWNjZXNzRmxhZ3MoKSAmIEdMX01BUF9GTFVTSF9FWFBMSUNJVF9CSVQp
ID09IDApCiAgICAgewotICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiA9IHZh
by0+Z2V0VmVydGV4QXR0cmlidXRlKGF0dHJpYnV0ZUluZGV4KTsKLSAgICAgICAgaWYgKHByb2dy
YW0tPmlzQXR0cmliTG9jYXRpb25BY3RpdmUoYXR0cmlidXRlSW5kZXgpICYmIGF0dHJpYi5kaXZp
c29yID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKAorICAgICAgICAgICAgR0xfSU5W
QUxJRF9PUEVSQVRJT04sICJBdHRlbXB0ZWQgdG8gZmx1c2ggYSBidWZmZXIgbm90IG1hcHBlZCBm
b3IgZXhwbGljaXQgZmx1c2hpbmcuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJB
TkdMRV9pbnN0YW5jZWRfYXJyYXlzIHJlcXVpcmVzIHRoYXQgYXQgbGVhc3Qgb25lIGFjdGl2ZSBh
dHRyaWJ1dGUiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJoYXMgYSBkaXZpc29yIG9mIHplcm8uIikpOwotICAgIHJldHVybiBmYWxzZTsKLX0K
KyAgICAvLyBDaGVjayBmb3IgYnVmZmVyIG92ZXJmbG93CisgICAgQ2hlY2tlZE51bWVyaWM8c2l6
ZV90PiBjaGVja2VkT2Zmc2V0KG9mZnNldCk7CisgICAgYXV0byBjaGVja2VkU2l6ZSA9IGNoZWNr
ZWRPZmZzZXQgKyBsZW5ndGg7CiAKLWJvb2wgVmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkQU5H
TEUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNv
dW50LCBHTHNpemVpIHByaW1jb3VudCkKLXsKLSAgICBpZiAoIVZhbGlkYXRlRHJhd0luc3RhbmNl
ZEFOR0xFKGNvbnRleHQpKQorICAgIGlmICghY2hlY2tlZFNpemUuSXNWYWxpZCgpIHx8CisgICAg
ICAgIGNoZWNrZWRTaXplLlZhbHVlT3JEaWUoKSA+IHN0YXRpY19jYXN0PHNpemVfdD4oYnVmZmVy
LT5nZXRNYXBMZW5ndGgoKSkpCiAgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigK
KyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJGbHVzaGVkIHJhbmdlIGRvZXMg
bm90IGZpdCBpbnRvIGJ1ZmZlciBtYXBwaW5nIGRpbWVuc2lvbnMuIikpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcmV0dXJuIFZhbGlkYXRlRHJhd0FycmF5c0luc3RhbmNl
ZChjb250ZXh0LCBtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHMoVmFsaWRhdGlvbkNvbnRleHQgKmNv
bnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpp
bmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHByaW1jb3VudCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXhSYW5nZSAqaW5kZXhSYW5nZU91dCkKK2Jvb2wg
VmFsaWRhdGVHZW5lcmF0ZU1pcG1hcChDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0KQog
ewotICAgIHN3aXRjaCAodHlwZSkKKyAgICBpZiAoIVZhbGlkVGV4dHVyZVRhcmdldChjb250ZXh0
LCB0YXJnZXQpKQogICAgIHsKLSAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKLSAgICAgIGNh
c2UgR0xfVU5TSUdORURfU0hPUlQ6Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9VTlNJ
R05FRF9JTlQ6Ci0gICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMg
JiYgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbGVtZW50SW5kZXhVaW50KQotICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0p
KTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsK
LSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfRU5VTSkpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX0VOVU0pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGNvbnN0IFN0
YXRlICZzdGF0ZSA9IGNvbnRleHQtPmdldFN0YXRlKCk7CisgICAgVGV4dHVyZSAqdGV4dHVyZSA9
IGNvbnRleHQtPmdldFRhcmdldFRleHR1cmUodGFyZ2V0KTsKIAotICAgIGdsOjpUcmFuc2Zvcm1G
ZWVkYmFjayAqY3VyVHJhbnNmb3JtRmVlZGJhY2sgPSBzdGF0ZS5nZXRDdXJyZW50VHJhbnNmb3Jt
RmVlZGJhY2soKTsKLSAgICBpZiAoY3VyVHJhbnNmb3JtRmVlZGJhY2sgJiYgY3VyVHJhbnNmb3Jt
RmVlZGJhY2stPmlzQWN0aXZlKCkgJiYgIWN1clRyYW5zZm9ybUZlZWRiYWNrLT5pc1BhdXNlZCgp
KQorICAgIGlmICh0ZXh0dXJlID09IG51bGxwdHIpCiAgICAgewotICAgICAgICAvLyBJdCBpcyBh
biBpbnZhbGlkIG9wZXJhdGlvbiB0byBjYWxsIERyYXdFbGVtZW50cywgRHJhd1JhbmdlRWxlbWVu
dHMgb3IgRHJhd0VsZW1lbnRzSW5zdGFuY2VkCi0gICAgICAgIC8vIHdoaWxlIHRyYW5zZm9ybSBm
ZWVkYmFjayBpcyBhY3RpdmUsICgzLjAuMiwgc2VjdGlvbiAyLjE0LCBwZyA4NikKLSAgICAgICAg
Y29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIC8vIENoZWNrIGZvciBtYXBwZWQgYnVm
ZmVycwotICAgIGlmIChzdGF0ZS5oYXNNYXBwZWRCdWZmZXIoR0xfRUxFTUVOVF9BUlJBWV9CVUZG
RVIpKQorICAgIGNvbnN0IEdMdWludCBlZmZlY3RpdmVCYXNlTGV2ZWwgPSB0ZXh0dXJlLT5nZXRU
ZXh0dXJlU3RhdGUoKS5nZXRFZmZlY3RpdmVCYXNlTGV2ZWwoKTsKKworICAgIC8vIFRoaXMgZXJy
b3IgaXNuJ3Qgc3BlbGxlZCBvdXQgaW4gdGhlIHNwZWMgaW4gYSB2ZXJ5IGV4cGxpY2l0IHdheSwg
YnV0IHdlIGludGVycHJldCB0aGUgc3BlYyBzbworICAgIC8vIHRoYXQgb3V0LW9mLXJhbmdlIGJh
c2UgbGV2ZWwgaGFzIGEgbm9uLWNvbG9yLXJlbmRlcmFibGUgLyBub24tdGV4dHVyZS1maWx0ZXJh
YmxlIGZvcm1hdC4KKyAgICBpZiAoZWZmZWN0aXZlQmFzZUxldmVsID49IGdsOjpJTVBMRU1FTlRB
VElPTl9NQVhfVEVYVFVSRV9MRVZFTFMpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgY29uc3QgZ2w6OlZlcnRleEFycmF5ICp2YW8gPSBzdGF0ZS5nZXRW
ZXJ0ZXhBcnJheSgpOwotICAgIGdsOjpCdWZmZXIgKmVsZW1lbnRBcnJheUJ1ZmZlciA9IHZhby0+
Z2V0RWxlbWVudEFycmF5QnVmZmVyKCkuZ2V0KCk7Ci0gICAgaWYgKCFpbmRpY2VzICYmICFlbGVt
ZW50QXJyYXlCdWZmZXIpCisgICAgR0xlbnVtIGJhc2VUYXJnZXQgID0gKHRhcmdldCA9PSBHTF9U
RVhUVVJFX0NVQkVfTUFQKSA/IEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCA6IHRhcmdl
dDsKKyAgICBjb25zdCBhdXRvICZmb3JtYXQgPSB0ZXh0dXJlLT5nZXRGb3JtYXQoYmFzZVRhcmdl
dCwgZWZmZWN0aXZlQmFzZUxldmVsKTsKKyAgICBjb25zdCBUZXh0dXJlQ2FwcyAmZm9ybWF0Q2Fw
cyA9IGNvbnRleHQtPmdldFRleHR1cmVDYXBzKCkuZ2V0KGZvcm1hdC5hc1NpemVkKCkpOworCisg
ICAgLy8gR2VuZXJhdGVNaXBtYXAgc2hvdWxkIG5vdCBnZW5lcmF0ZSBhbiBJTlZBTElEX09QRVJB
VElPTiBmb3IgdGV4dHVyZXMgY3JlYXRlZCB3aXRoCisgICAgLy8gdW5zaXplZCBmb3JtYXRzIG9y
IHRoYXQgYXJlIGNvbG9yIHJlbmRlcmFibGUgYW5kIGZpbHRlcmFibGUuICBTaW5jZSB3ZSBkbyBu
b3QgdHJhY2sgaWYKKyAgICAvLyB0aGUgdGV4dHVyZSB3YXMgY3JlYXRlZCB3aXRoIHNpemVkIG9y
IHVuc2l6ZWQgZm9ybWF0IChvbmx5IHNpemVkIGZvcm1hdHMgYXJlIHN0b3JlZCksCisgICAgLy8g
aXQgaXMgbm90IHBvc3NpYmxlIHRvIG1ha2Ugc3VyZSB0aGUgdGhlIExVTUEgZm9ybWF0cyBjYW4g
Z2VuZXJhdGUgbWlwbWFwcyAodGhleSBzaG91bGQKKyAgICAvLyBiZSBhYmxlIHRvKSBiZWNhdXNl
IHRoZXkgYXJlbid0IGNvbG9yIHJlbmRlcmFibGUuICBTaW1wbHkgZG8gYSBzcGVjaWFsIGNhc2Ug
Zm9yIExVTUEKKyAgICAvLyB0ZXh0dXJlcyBzaW5jZSB0aGV5J3JlIHRoZSBvbmx5IHRleHR1cmUg
Zm9ybWF0IHRoYXQgY2FuIGJlIGNyZWF0ZWQgd2l0aCB1bnNpemVkIGZvcm1hdHMKKyAgICAvLyB0
aGF0IGlzIG5vdCBjb2xvciByZW5kZXJhYmxlLiAgTmV3IHVuc2l6ZWQgZm9ybWF0cyBhcmUgdW5s
aWtlbHkgdG8gYmUgYWRkZWQsIHNpbmNlIEVTMgorICAgIC8vIHdhcyB0aGUgbGFzdCB2ZXJzaW9u
IHRvIHVzZSBhZGQgdGhlbS4KKyAgICBpZiAoZm9ybWF0LmluZm8tPmRlcHRoQml0cyA+IDAgfHwg
Zm9ybWF0LmluZm8tPnN0ZW5jaWxCaXRzID4gMCB8fCAhZm9ybWF0Q2Fwcy5maWx0ZXJhYmxlIHx8
CisgICAgICAgICghZm9ybWF0Q2Fwcy5yZW5kZXJhYmxlICYmICFmb3JtYXQuaW5mby0+aXNMVU1B
KCkpIHx8IGZvcm1hdC5pbmZvLT5jb21wcmVzc2VkKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChlbGVtZW50QXJyYXlCdWZmZXIpCisgICAgLy8g
R0xfRVhUX3NSR0IgZG9lcyBub3Qgc3VwcG9ydCBtaXBtYXAgZ2VuZXJhdGlvbiBvbiBzUkdCIHRl
eHR1cmVzCisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpID09IDIgJiYg
Zm9ybWF0LmluZm8tPmNvbG9yRW5jb2RpbmcgPT0gR0xfU1JHQikKICAgICB7Ci0gICAgICAgIGNv
bnN0IGdsOjpUeXBlICZ0eXBlSW5mbyA9IGdsOjpHZXRUeXBlSW5mbyh0eXBlKTsKLQotICAgICAg
ICBHTGludDY0IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQ2ND4oaW5kaWNlcyk7Ci0g
ICAgICAgIEdMaW50NjQgYnl0ZUNvdW50ID0gc3RhdGljX2Nhc3Q8R0xpbnQ2ND4odHlwZUluZm8u
Ynl0ZXMpICogc3RhdGljX2Nhc3Q8R0xpbnQ2ND4oY291bnQpK29mZnNldDsKLQotICAgICAgICAv
LyBjaGVjayBmb3IgaW50ZWdlciBvdmVyZmxvd3MKLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PEdM
dWludD4oY291bnQpID4gKHN0ZDo6bnVtZXJpY19saW1pdHM8R0x1aW50Pjo6bWF4KCkgLyB0eXBl
SW5mby5ieXRlcykgfHwKLSAgICAgICAgICAgIGJ5dGVDb3VudCA+IHN0YXRpY19jYXN0PEdMaW50
NjQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8R0x1aW50Pjo6bWF4KCkpKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9PVVRfT0ZfTUVNT1JZKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KIAotICAgICAgICAvLyBDaGVjayBmb3IgcmVhZGluZyBwYXN0IHRoZSBlbmQg
b2YgdGhlIGJvdW5kIGJ1ZmZlciBvYmplY3QKLSAgICAgICAgaWYgKGJ5dGVDb3VudCA+IGVsZW1l
bnRBcnJheUJ1ZmZlci0+Z2V0U2l6ZSgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9CisgICAgLy8gTm9uLXBvd2VyIG9mIDIgRVMyIGNoZWNr
CisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZU5QT1QgJiYKKyAgICAg
ICAgKCFpc1BvdzIoc3RhdGljX2Nhc3Q8aW50Pih0ZXh0dXJlLT5nZXRXaWR0aChiYXNlVGFyZ2V0
LCAwKSkpIHx8CisgICAgICAgICAhaXNQb3cyKHN0YXRpY19jYXN0PGludD4odGV4dHVyZS0+Z2V0
SGVpZ2h0KGJhc2VUYXJnZXQsIDApKSkpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNvbnRleHQt
PmdldENsaWVudE1ham9yVmVyc2lvbigpIDw9IDIgJiYKKyAgICAgICAgICAgICAgICh0YXJnZXQg
PT0gR0xfVEVYVFVSRV8yRCB8fCB0YXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01BUCkpOworICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGVsc2UgaWYgKCFpbmRpY2VzKQorCisg
ICAgLy8gQ3ViZSBjb21wbGV0ZW5lc3MgY2hlY2sKKyAgICBpZiAodGFyZ2V0ID09IEdMX1RFWFRV
UkVfQ1VCRV9NQVAgJiYgIXRleHR1cmUtPmdldFRleHR1cmVTdGF0ZSgpLmlzQ3ViZUNvbXBsZXRl
KCkpCiAgICAgewotICAgICAgICAvLyBDYXRjaCB0aGlzIHByb2dyYW1taW5nIGVycm9yIGhlcmUK
LSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
KTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmICghVmFsaWRhdGVE
cmF3QmFzZShjb250ZXh0LCBtb2RlLCBjb3VudCwgcHJpbWNvdW50KSkKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdlbkJ1ZmZlcnMoQ29udGV4dCAqY29udGV4dCwgR0xpbnQg
biwgR0x1aW50ICopCit7CisgICAgcmV0dXJuIFZhbGlkYXRlR2VuT3JEZWxldGUoY29udGV4dCwg
bik7Cit9CisKK2Jvb2wgVmFsaWRhdGVEZWxldGVCdWZmZXJzKENvbnRleHQgKmNvbnRleHQsIEdM
aW50IG4sIGNvbnN0IEdMdWludCAqKQoreworICAgIHJldHVybiBWYWxpZGF0ZUdlbk9yRGVsZXRl
KGNvbnRleHQsIG4pOworfQorCitib29sIFZhbGlkYXRlR2VuRnJhbWVidWZmZXJzKENvbnRleHQg
KmNvbnRleHQsIEdMaW50IG4sIEdMdWludCAqKQoreworICAgIHJldHVybiBWYWxpZGF0ZUdlbk9y
RGVsZXRlKGNvbnRleHQsIG4pOworfQorCitib29sIFZhbGlkYXRlRGVsZXRlRnJhbWVidWZmZXJz
KENvbnRleHQgKmNvbnRleHQsIEdMaW50IG4sIGNvbnN0IEdMdWludCAqKQoreworICAgIHJldHVy
biBWYWxpZGF0ZUdlbk9yRGVsZXRlKGNvbnRleHQsIG4pOworfQorCitib29sIFZhbGlkYXRlR2Vu
UmVuZGVyYnVmZmVycyhDb250ZXh0ICpjb250ZXh0LCBHTGludCBuLCBHTHVpbnQgKikKK3sKKyAg
ICByZXR1cm4gVmFsaWRhdGVHZW5PckRlbGV0ZShjb250ZXh0LCBuKTsKK30KKworYm9vbCBWYWxp
ZGF0ZURlbGV0ZVJlbmRlcmJ1ZmZlcnMoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbiwgY29uc3Qg
R0x1aW50ICopCit7CisgICAgcmV0dXJuIFZhbGlkYXRlR2VuT3JEZWxldGUoY29udGV4dCwgbik7
Cit9CisKK2Jvb2wgVmFsaWRhdGVHZW5UZXh0dXJlcyhDb250ZXh0ICpjb250ZXh0LCBHTGludCBu
LCBHTHVpbnQgKikKK3sKKyAgICByZXR1cm4gVmFsaWRhdGVHZW5PckRlbGV0ZShjb250ZXh0LCBu
KTsKK30KKworYm9vbCBWYWxpZGF0ZURlbGV0ZVRleHR1cmVzKENvbnRleHQgKmNvbnRleHQsIEdM
aW50IG4sIGNvbnN0IEdMdWludCAqKQoreworICAgIHJldHVybiBWYWxpZGF0ZUdlbk9yRGVsZXRl
KGNvbnRleHQsIG4pOworfQorCitib29sIFZhbGlkYXRlR2VuT3JEZWxldGUoQ29udGV4dCAqY29u
dGV4dCwgR0xpbnQgbikKK3sKKyAgICBpZiAobiA8IDApCiAgICAgeworICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAibiA8IDAiKSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CiAKLSAgICAvLyBVc2Ug
bWF4IGluZGV4IHRvIHZhbGlkYXRlIGlmIG91ciB2ZXJ0ZXggYnVmZmVycyBhcmUgbGFyZ2UgZW5v
dWdoIGZvciB0aGUgcHVsbC4KLSAgICAvLyBUT0RPOiBvZmZlciBmYXN0IHBhdGgsIHdpdGggZGlz
YWJsZWQgaW5kZXggdmFsaWRhdGlvbi4KLSAgICAvLyBUT0RPOiBhbHNvIGRpc2FibGUgaW5kZXgg
Y2hlY2tpbmcgb24gYmFjay1lbmRzIHRoYXQgYXJlIHJvYnVzdCB0byBvdXQtb2YtcmFuZ2UgYWNj
ZXNzZXMuCi0gICAgaWYgKGVsZW1lbnRBcnJheUJ1ZmZlcikKK2Jvb2wgVmFsaWRhdGVFbmFibGUo
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNhcCkKK3sKKyAgICBpZiAoIVZhbGlkQ2FwKGNvbnRl
eHQsIGNhcCwgZmFsc2UpKQogICAgIHsKLSAgICAgICAgdWludHB0cl90IG9mZnNldCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihpbmRpY2VzKTsKLSAgICAgICAgRXJyb3IgZXJyb3IgPQot
ICAgICAgICAgICAgZWxlbWVudEFycmF5QnVmZmVyLT5nZXRJbmRleFJhbmdlKHR5cGUsIHN0YXRp
Y19jYXN0PHNpemVfdD4ob2Zmc2V0KSwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGUuaXNQcmltaXRpdmVSZXN0YXJ0RW5hYmxlZCgpLCBp
bmRleFJhbmdlT3V0KTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZXJyb3IpOwotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgY2FwLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KLSAgICBlbHNlCisKKyAgICBpZiAoY29udGV4dC0+Z2V0TGltaXRhdGlvbnMoKS5u
b1NhbXBsZUFscGhhVG9Db3ZlcmFnZVN1cHBvcnQgJiYKKyAgICAgICAgY2FwID09IEdMX1NBTVBM
RV9BTFBIQV9UT19DT1ZFUkFHRSkKICAgICB7Ci0gICAgICAgICppbmRleFJhbmdlT3V0ID0gQ29t
cHV0ZUluZGV4UmFuZ2UodHlwZSwgaW5kaWNlcywgY291bnQsIHN0YXRlLmlzUHJpbWl0aXZlUmVz
dGFydEVuYWJsZWQoKSk7CisgICAgICAgIGNvbnN0IGNoYXIgKmVycm9yTWVzc2FnZSA9ICJDdXJy
ZW50IHJlbmRlcmVyIGRvZXNuJ3Qgc3VwcG9ydCBhbHBoYS10by1jb3ZlcmFnZSI7CisgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBlcnJvck1l
c3NhZ2UpKTsKKworICAgICAgICAvLyBXZSBhbHNvIG91dHB1dCBhbiBlcnJvciBtZXNzYWdlIHRv
IHRoZSBkZWJ1Z2dlciB3aW5kb3cgaWYgdHJhY2luZyBpcyBhY3RpdmUsIHNvIHRoYXQKKyAgICAg
ICAgLy8gZGV2ZWxvcGVycyBjYW4gc2VlIHRoZSBlcnJvciBtZXNzYWdlLgorICAgICAgICBFUlIo
IiVzIiwgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IC8vIElmIHdlIHVzZSBhbiBpbmRleCBncmVhdGVyIHRoYW4gb3VyIG1heGltdW0gc3VwcG9ydGVk
IGluZGV4IHJhbmdlLCByZXR1cm4gYW4gZXJyb3IuCi0gICAgLy8gVGhlIEVTMyBzcGVjIGRvZXMg
bm90IHNwZWNpZnkgYmVoYXZpb3VyIGhlcmUsIGl0IGlzIHVuZGVmaW5lZCwgYnV0IEFOR0xFIHNo
b3VsZCBhbHdheXMKLSAgICAvLyByZXR1cm4gYW4gZXJyb3IgaWYgcG9zc2libGUgaGVyZS4KLSAg
ICBpZiAoc3RhdGljX2Nhc3Q8R0x1aW50NjQ+KGluZGV4UmFuZ2VPdXQtPmVuZCkgPj0gY29udGV4
dC0+Z2V0Q2FwcygpLm1heEVsZW1lbnRJbmRleCkKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBWYWxpZGF0ZURpc2FibGUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNhcCkKK3sKKyAgICBp
ZiAoIVZhbGlkQ2FwKGNvbnRleHQsIGNhcCwgZmFsc2UpKQogICAgIHsKLSAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGdfRXhjZWVkc01heEVs
ZW1lbnRFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBjYXAuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgaWYgKCFWYWxpZGF0ZURyYXdBdHRyaWJzKGNvbnRleHQsIHByaW1jb3Vu
dCwgc3RhdGljX2Nhc3Q8R0xpbnQ+KGluZGV4UmFuZ2VPdXQtPnZlcnRleENvdW50KCkpKSkKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUlzRW5hYmxlZChDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gY2FwKQoreworICAgIGlmICghVmFsaWRDYXAoY29udGV4dCwgY2FwLCB0cnVl
KSkKICAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
RU5VTSwgIkludmFsaWQgY2FwLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIC8vIE5vIG9wIGlmIHRoZXJlIGFyZSBubyByZWFsIGluZGljZXMgaW4gdGhlIGluZGV4IGRh
dGEgKGFsbCBhcmUgcHJpbWl0aXZlIHJlc3RhcnQpLgotICAgIHJldHVybiAoaW5kZXhSYW5nZU91
dC0+dmVydGV4SW5kZXhDb3VudCA+IDApOworICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkKENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIHByaW1jb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSW5kZXhSYW5nZSAqaW5kZXhSYW5nZU91dCkKK2Jvb2wgVmFsaWRhdGVSb2J1c3RFbnRyeVBv
aW50KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTHNpemVpIGJ1ZlNpemUpCiB7Ci0gICAg
aWYgKHByaW1jb3VudCA8IDApCisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkucm9i
dXN0Q2xpZW50TWVtb3J5KQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAg
ICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiR0xfQU5HTEVfcm9idXN0X2Ns
aWVudF9tZW1vcnkgaXMgbm90IGF2YWlsYWJsZS4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBpZiAoIVZhbGlkYXRlRHJhd0VsZW1lbnRzKGNvbnRleHQsIG1vZGUsIGNv
dW50LCB0eXBlLCBpbmRpY2VzLCBwcmltY291bnQsIGluZGV4UmFuZ2VPdXQpKQorICAgIGlmIChi
dWZTaXplIDwgMCkKICAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfVkFMVUUsICJidWZTaXplIGNhbm5vdCBiZSBuZWdhdGl2ZS4iKSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICAvLyBOby1vcCB6ZXJvIHByaW1pdGl2ZSBjb3Vu
dAotICAgIHJldHVybiAocHJpbWNvdW50ID4gMCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShDb250ZXh0ICpjb250ZXh0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgcHJpbWNvdW50
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4UmFuZ2UgKmlu
ZGV4UmFuZ2VPdXQpCitib29sIFZhbGlkYXRlUm9idXN0QnVmZmVyU2l6ZShWYWxpZGF0aW9uQ29u
dGV4dCAqY29udGV4dCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpIG51bVBhcmFtcykKIHsKLSAg
ICBpZiAoIVZhbGlkYXRlRHJhd0luc3RhbmNlZEFOR0xFKGNvbnRleHQpKQorICAgIGlmIChidWZT
aXplIDwgbnVtUGFyYW1zKQogICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIldSBwYXJhbWV0ZXJzIGFyZSByZXF1aXJlZCBidXQgJWkgd2VyZSBwcm92aWRlZC4iLCBu
dW1QYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNpemUpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHJldHVybiBWYWxpZGF0ZURyYXdF
bGVtZW50c0luc3RhbmNlZChjb250ZXh0LCBtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgcHJp
bWNvdW50LCBpbmRleFJhbmdlT3V0KTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZUJhc2UoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdl
dCwgR0xlbnVtIGF0dGFjaG1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwpCitib29sIFZhbGlkYXRlR2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gYXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSAqbnVtUGFyYW1zKQogeworICAgIC8vIE9ubHkgb25lIHBh
cmFtZXRlciBpcyByZXR1cm5lZCBmcm9tIGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyaXYKKyAgICAqbnVtUGFyYW1zID0gMTsKKwogICAgIGlmICghVmFsaWRGcmFtZWJ1ZmZlclRh
cmdldCh0YXJnZXQpKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfRU5VTSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYg
KCFWYWxpZGF0ZUF0dGFjaG1lbnRUYXJnZXQoY29udGV4dCwgYXR0YWNobWVudCkpCisgICAgaW50
IGNsaWVudFZlcnNpb24gPSBjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKTsKKworICAg
IHN3aXRjaCAocG5hbWUpCiAgICAgewotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNh
c2UgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRToKKyAgICAgICAgY2FzZSBH
TF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FOgorICAgICAgICBjYXNlIEdMX0ZS
QU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTDoKKyAgICAgICAgY2FzZSBHTF9GUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRToKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNP
RElORzoKKyAgICAgICAgICAgIGlmIChjbGllbnRWZXJzaW9uIDwgMyAmJiAhY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLnNSR0IpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1JFRF9TSVpFOgorICAgICAgICBjYXNl
IEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfR1JFRU5fU0laRToKKyAgICAgICAgY2FzZSBHTF9G
UkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0JMVUVfU0laRToKKyAgICAgICAgY2FzZSBHTF9GUkFNRUJV
RkZFUl9BVFRBQ0hNRU5UX0FMUEhBX1NJWkU6CisgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9ERVBUSF9TSVpFOgorICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFD
SE1FTlRfU1RFTkNJTF9TSVpFOgorICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1F
TlRfQ09NUE9ORU5UX1RZUEU6CisgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVO
VF9URVhUVVJFX0xBWUVSOgorICAgICAgICAgICAgaWYgKGNsaWVudFZlcnNpb24gPCAzKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAodGV4dHVyZSAhPSAwKQorICAgIC8v
IERldGVybWluZSBpZiB0aGUgYXR0YWNobWVudCBpcyBhIHZhbGlkIGVudW0KKyAgICBzd2l0Y2gg
KGF0dGFjaG1lbnQpCiAgICAgewotICAgICAgICBnbDo6VGV4dHVyZSAqdGV4ID0gY29udGV4dC0+
Z2V0VGV4dHVyZSh0ZXh0dXJlKTsKKyAgICAgICAgY2FzZSBHTF9CQUNLOgorICAgICAgICBjYXNl
IEdMX0ZST05UOgorICAgICAgICBjYXNlIEdMX0RFUFRIOgorICAgICAgICBjYXNlIEdMX1NURU5D
SUw6CisgICAgICAgIGNhc2UgR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAgICAg
ICAgaWYgKGNsaWVudFZlcnNpb24gPCAzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwog
Ci0gICAgICAgIGlmICh0ZXggPT0gTlVMTCkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0RFUFRIX0FUVEFDSE1F
TlQ6CisgICAgICAgIGNhc2UgR0xfU1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgYnJl
YWs7CiAKLSAgICAgICAgaWYgKGxldmVsIDwgMCkKLSAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBp
ZiAoYXR0YWNobWVudCA8IEdMX0NPTE9SX0FUVEFDSE1FTlQwX0VYVCB8fAorICAgICAgICAgICAg
ICAgIChhdHRhY2htZW50IC0gR0xfQ09MT1JfQVRUQUNITUVOVDBfRVhUKSA+PSBjb250ZXh0LT5n
ZXRDYXBzKCkubWF4Q29sb3JBdHRhY2htZW50cykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKICAgICB9CiAKLSAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gY29u
dGV4dC0+Z2V0U3RhdGUoKS5nZXRUYXJnZXRGcmFtZWJ1ZmZlcih0YXJnZXQpOworICAgIGNvbnN0
IEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRUYXJn
ZXRGcmFtZWJ1ZmZlcih0YXJnZXQpOwogICAgIEFTU0VSVChmcmFtZWJ1ZmZlcik7CiAKICAgICBp
ZiAoZnJhbWVidWZmZXItPmlkKCkgPT0gMCkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ2Fubm90IGNoYW5nZSBkZWZhdWx0
IEZCTydzIGF0dGFjaG1lbnRzIikpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAg
ICAgICBpZiAoY2xpZW50VmVyc2lvbiA8IDMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KIAotICAgIHJldHVybiB0cnVlOwotfQorICAgICAg
ICBzd2l0Y2ggKGF0dGFjaG1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgR0xfQkFD
SzoKKyAgICAgICAgICAgIGNhc2UgR0xfREVQVEg6CisgICAgICAgICAgICBjYXNlIEdMX1NURU5D
SUw6CisgICAgICAgICAgICAgICAgYnJlYWs7CiAKLWJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRl
eHR1cmUyRChDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVu
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGV4dGFyZ2V0LCBH
THVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwpCi17Ci0gICAgLy8gQXR0YWNobWVudHMgYXJlIHJl
cXVpcmVkIHRvIGJlIGJvdW5kIHRvIGxldmVsIDAgd2l0aG91dCBFUzMgb3IgdGhlIEdMX09FU19m
Ym9fcmVuZGVyX21pcG1hcCBleHRlbnNpb24KLSAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVy
c2lvbigpIDwgMyAmJiAhY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmZib1JlbmRlck1pcG1hcCAm
JiBsZXZlbCAhPSAwKQorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCiAgICAgewot
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGF0dGFjaG1lbnQgPj0gR0xfQ09MT1Jf
QVRUQUNITUVOVDBfRVhUICYmIGF0dGFjaG1lbnQgPD0gR0xfQ09MT1JfQVRUQUNITUVOVDE1X0VY
VCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gVmFsaWQgYXR0YWNobWVudCBxdWVyeQorICAg
ICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhdHRh
Y2htZW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgR0xfREVQVEhfQVRU
QUNITUVOVDoKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1NURU5DSUxfQVRUQUNITUVOVDoKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRI
X1NURU5DSUxfQVRUQUNITUVOVDoKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFmcmFtZWJ1ZmZl
ci0+aGFzVmFsaWREZXB0aFN0ZW5jaWwoKSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghVmFs
aWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVCYXNlKGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwg
dGV4dHVyZSwgbGV2ZWwpKQorICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqYXR0YWNo
bWVudE9iamVjdCA9IGZyYW1lYnVmZmVyLT5nZXRBdHRhY2htZW50KGF0dGFjaG1lbnQpOworICAg
IGlmIChhdHRhY2htZW50T2JqZWN0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KKyAgICAgICAgQVNTRVJUKGF0dGFjaG1lbnRPYmplY3QtPnR5cGUoKSA9PSBHTF9SRU5ERVJC
VUZGRVIgfHwKKyAgICAgICAgICAgICAgIGF0dGFjaG1lbnRPYmplY3QtPnR5cGUoKSA9PSBHTF9U
RVhUVVJFIHx8CisgICAgICAgICAgICAgICBhdHRhY2htZW50T2JqZWN0LT50eXBlKCkgPT0gR0xf
RlJBTUVCVUZGRVJfREVGQVVMVCk7CisKKyAgICAgICAgc3dpdGNoIChwbmFtZSkKKyAgICAgICAg
eworICAgICAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1F
OgorICAgICAgICAgICAgICAgIGlmIChhdHRhY2htZW50T2JqZWN0LT50eXBlKCkgIT0gR0xfUkVO
REVSQlVGRkVSICYmCisgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRPYmplY3QtPnR5cGUo
KSAhPSBHTF9URVhUVVJFKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgYnJlYWs7CiAKLSAgICBpZiAodGV4dHVyZSAhPSAwKQorICAgICAgICAgICAgY2FzZSBHTF9G
UkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUw6CisgICAgICAgICAgICAgICAgaWYg
KGF0dGFjaG1lbnRPYmplY3QtPnR5cGUoKSAhPSBHTF9URVhUVVJFKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgR0xf
RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0U6CisgICAgICAgICAg
ICAgICAgaWYgKGF0dGFjaG1lbnRPYmplY3QtPnR5cGUoKSAhPSBHTF9URVhUVVJFKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
IGNhc2UgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT01QT05FTlRfVFlQRToKKyAgICAgICAg
ICAgICAgICBpZiAoYXR0YWNobWVudCA9PSBHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQpCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MQVlFUjoK
KyAgICAgICAgICAgICAgICBpZiAoYXR0YWNobWVudE9iamVjdC0+dHlwZSgpICE9IEdMX1RFWFRV
UkUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBlbHNlCiAgICAgewotICAgICAgICBnbDo6VGV4dHVyZSAqdGV4ID0gY29udGV4
dC0+Z2V0VGV4dHVyZSh0ZXh0dXJlKTsKLSAgICAgICAgQVNTRVJUKHRleCk7CisgICAgICAgIC8v
IEVTIDIuMC4yNSBzcGVjIHBnIDEyNyBzdGF0ZXMgdGhhdCBpZiB0aGUgdmFsdWUgb2YgRlJBTUVC
VUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRQorICAgICAgICAvLyBpcyBOT05FLCB0aGVuIHF1
ZXJ5aW5nIGFueSBvdGhlciBwbmFtZSB3aWxsIGdlbmVyYXRlIElOVkFMSURfRU5VTS4KIAotICAg
ICAgICBjb25zdCBnbDo6Q2FwcyAmY2FwcyA9IGNvbnRleHQtPmdldENhcHMoKTsKKyAgICAgICAg
Ly8gRVMgMy4wLjIgc3BlYyBwZyAyMzUgc3RhdGVzIHRoYXQgaWYgdGhlIGF0dGFjaG1lbnQgdHlw
ZSBpcyBub25lLAorICAgICAgICAvLyBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9O
QU1FIHdpbGwgcmV0dXJuIHplcm8gYW5kIGJlIGFuCisgICAgICAgIC8vIElOVkFMSURfT1BFUkFU
SU9OIGZvciBhbGwgb3RoZXIgcG5hbWVzCiAKLSAgICAgICAgc3dpdGNoICh0ZXh0YXJnZXQpCisg
ICAgICAgIHN3aXRjaCAocG5hbWUpCiAgICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRV
UkVfMkQ6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKGxldmVsID4gZ2w6Omxv
ZzIoY2Fwcy5tYXgyRFRleHR1cmVTaXplKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBpZiAodGV4LT5nZXRUYXJnZXQoKSAhPSBHTF9URVhUVVJFXzJEKQorICAg
ICAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFOgorICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FU
VEFDSE1FTlRfT0JKRUNUX05BTUU6CisgICAgICAgICAgICAgICAgaWYgKGNsaWVudFZlcnNpb24g
PCAzKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAg
ICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YOgotICAgICAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YOgotICAgICAgICAgIGNhc2UgR0xfVEVYVFVS
RV9DVUJFX01BUF9QT1NJVElWRV9ZOgotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01B
UF9ORUdBVElWRV9ZOgotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElW
RV9aOgotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aOgotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChsZXZlbCA+IGdsOjpsb2cyKGNhcHMubWF4
Q3ViZU1hcFRleHR1cmVTaXplKSkKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgaWYgKGNsaWVudFZlcnNpb24gPCAzKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwor
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X0VOVU0pKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBpZiAodGV4LT5nZXRUYXJnZXQoKSAhPSBHTF9URVhUVVJF
X0NVQkVfTUFQKQorICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsK
LQotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmaW50ZXJuYWxGb3JtYXRJ
bmZvID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyh0ZXgtPmdldEludGVybmFsRm9ybWF0KHRl
eHRhcmdldCwgbGV2ZWwpKTsKLSAgICAgICAgaWYgKGludGVybmFsRm9ybWF0SW5mby5jb21wcmVz
c2VkKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRVbmlm
b3JtQmFzZShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24p
Citib29sIFZhbGlkYXRlR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RB
TkdMRShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gYXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgKm51bVBhcmFtcykKIHsKLSAgICBpZiAocHJvZ3JhbSA9PSAwKQotICAgIHsK
LSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgZ2w6OlByb2dyYW0gKnByb2dyYW1P
YmplY3QgPSBHZXRWYWxpZFByb2dyYW0oY29udGV4dCwgcHJvZ3JhbSk7Ci0gICAgaWYgKCFwcm9n
cmFtT2JqZWN0KQorICAgIGlmICghVmFsaWRhdGVSb2J1c3RFbnRyeVBvaW50KGNvbnRleHQsIGJ1
ZlNpemUpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmICgh
cHJvZ3JhbU9iamVjdCB8fCAhcHJvZ3JhbU9iamVjdC0+aXNMaW5rZWQoKSkKKyAgICBpZiAoIVZh
bGlkYXRlR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoY29udGV4dCwgdGFyZ2V0
LCBhdHRhY2htZW50LCBwbmFtZSwgbnVtUGFyYW1zKSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIXByb2dyYW1PYmplY3QtPmlzVmFsaWRVbmlmb3Jt
TG9jYXRpb24obG9jYXRpb24pKQorICAgIGlmICghVmFsaWRhdGVSb2J1c3RCdWZmZXJTaXplKGNv
bnRleHQsIGJ1ZlNpemUsICpudW1QYXJhbXMpKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VW5p
Zm9ybWZ2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwg
R0xmbG9hdCogcGFyYW1zKQotewotICAgIHJldHVybiBWYWxpZGF0ZUdldFVuaWZvcm1CYXNlKGNv
bnRleHQsIHByb2dyYW0sIGxvY2F0aW9uKTsKLX0KLQotYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1p
dihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50
KiBwYXJhbXMpCitib29sIFZhbGlkYXRlR2V0QnVmZmVyUGFyYW1ldGVyaXYoVmFsaWRhdGlvbkNv
bnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKIHsKLSAg
ICByZXR1cm4gVmFsaWRhdGVHZXRVbmlmb3JtQmFzZShjb250ZXh0LCBwcm9ncmFtLCBsb2NhdGlv
bik7CisgICAgcmV0dXJuIFZhbGlkYXRlR2V0QnVmZmVyUGFyYW1ldGVyQmFzZShjb250ZXh0LCB0
YXJnZXQsIHBuYW1lLCBmYWxzZSwgbnVsbHB0cik7CiB9CiAKLXN0YXRpYyBib29sIFZhbGlkYXRl
U2l6ZWRHZXRVbmlmb3JtKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBwcm9ncmFtLCBHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBidWZTaXplKQorYm9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBhcmFtZXRl
cml2Um9idXN0QU5HTEUoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVu
Z3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
KnBhcmFtcykKIHsKLSAgICBpZiAoIVZhbGlkYXRlR2V0VW5pZm9ybUJhc2UoY29udGV4dCwgcHJv
Z3JhbSwgbG9jYXRpb24pKQorICAgIGlmICghVmFsaWRhdGVSb2J1c3RFbnRyeVBvaW50KGNvbnRl
eHQsIGJ1ZlNpemUpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IGdsOjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFt
KTsKLSAgICBBU1NFUlQocHJvZ3JhbU9iamVjdCk7CisgICAgaWYgKCFWYWxpZGF0ZUdldEJ1ZmZl
clBhcmFtZXRlckJhc2UoY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgZmFsc2UsIGxlbmd0aCkpCisg
ICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCi0gICAgLy8gc2l6ZWQgcXVlcmll
cyAtLSBlbnN1cmUgdGhlIHByb3ZpZGVkIGJ1ZmZlciBpcyBsYXJnZSBlbm91Z2gKLSAgICBjb25z
dCBMaW5rZWRVbmlmb3JtICZ1bmlmb3JtID0gcHJvZ3JhbU9iamVjdC0+Z2V0VW5pZm9ybUJ5TG9j
YXRpb24obG9jYXRpb24pOwotICAgIHNpemVfdCByZXF1aXJlZEJ5dGVzID0gVmFyaWFibGVFeHRl
cm5hbFNpemUodW5pZm9ybS50eXBlKTsKLSAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihidWZT
aXplKSA8IHJlcXVpcmVkQnl0ZXMpCisgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEJ1ZmZlclNpemUo
Y29udGV4dCwgYnVmU2l6ZSwgKmxlbmd0aCkpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRuVW5p
Zm9ybWZ2RVhUKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlv
biwgR0xzaXplaSBidWZTaXplLCBHTGZsb2F0KiBwYXJhbXMpCi17Ci0gICAgcmV0dXJuIFZhbGlk
YXRlU2l6ZWRHZXRVbmlmb3JtKGNvbnRleHQsIHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplKTsK
LX0KLQotYm9vbCBWYWxpZGF0ZUdldG5Vbmlmb3JtaXZFWFQoQ29udGV4dCAqY29udGV4dCwgR0x1
aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMaW50KiBwYXJh
bXMpCitib29sIFZhbGlkYXRlR2V0QnVmZmVyUGFyYW1ldGVyaTY0dihWYWxpZGF0aW9uQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludDY0ICpwYXJhbXMpCiB7
Ci0gICAgcmV0dXJuIFZhbGlkYXRlU2l6ZWRHZXRVbmlmb3JtKGNvbnRleHQsIHByb2dyYW0sIGxv
Y2F0aW9uLCBidWZTaXplKTsKKyAgICByZXR1cm4gVmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0ZXJC
YXNlKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIGZhbHNlLCBudWxscHRyKTsKIH0KIAotYm9vbCBW
YWxpZGF0ZURpc2NhcmRGcmFtZWJ1ZmZlckJhc2UoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRh
cmdldCwgR0xzaXplaSBudW1BdHRhY2htZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMsIGJvb2wgZGVmYXVsdEZyYW1lYnVm
ZmVyKQorYm9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShWYWxp
ZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQ2NCAqcGFyYW1z
KQogewotICAgIGlmIChudW1BdHRhY2htZW50cyA8IDApCisgICAgaWYgKCFWYWxpZGF0ZVJvYnVz
dEVudHJ5UG9pbnQoY29udGV4dCwgYnVmU2l6ZSkpCiAgICAgewotICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAibnVtQXR0YWNobWVudHMgbXVzdCBu
b3QgYmUgbGVzcyB0aGFuIHplcm8iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
LSAgICBmb3IgKEdMc2l6ZWkgaSA9IDA7IGkgPCBudW1BdHRhY2htZW50czsgKytpKQorICAgIGlm
ICghVmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0ZXJCYXNlKGNvbnRleHQsIHRhcmdldCwgcG5hbWUs
IGZhbHNlLCBsZW5ndGgpKQogICAgIHsKLSAgICAgICAgaWYgKGF0dGFjaG1lbnRzW2ldID49IEdM
X0NPTE9SX0FUVEFDSE1FTlQwICYmIGF0dGFjaG1lbnRzW2ldIDw9IEdMX0NPTE9SX0FUVEFDSE1F
TlQzMSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGRlZmF1bHRGcmFtZWJ1ZmZlcikKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGF0dGFjaG1lbnQgd2hlbiB0aGUgZGVmYXVsdCBmcmFt
ZWJ1ZmZlciBpcyBib3VuZCIpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKLSAgICAgICAgICAgIGlm
IChhdHRhY2htZW50c1tpXSA+PSBHTF9DT0xPUl9BVFRBQ0hNRU5UMCArIGNvbnRleHQtPmdldENh
cHMoKS5tYXhDb2xvckF0dGFjaG1lbnRzKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZXF1ZXN0ZWQgY29sb3IgYXR0
YWNobWVudCBpcyBncmVhdGVyIHRoYW4gdGhlIG1heGltdW0gc3VwcG9ydGVkIGNvbG9yIGF0dGFj
aG1lbnRzIikpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAo
YXR0YWNobWVudHNbaV0pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfREVQ
VEhfQVRUQUNITUVOVDoKLSAgICAgICAgICAgICAgY2FzZSBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQ6
Ci0gICAgICAgICAgICAgIGNhc2UgR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UOgotICAgICAg
ICAgICAgICAgIGlmIChkZWZhdWx0RnJhbWVidWZmZXIpCi0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VO
VU0sICJJbnZhbGlkIGF0dGFjaG1lbnQgd2hlbiB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciBpcyBi
b3VuZCIpKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9DT0xP
UjoKLSAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSDoKLSAgICAgICAgICAgICAgY2FzZSBHTF9T
VEVOQ0lMOgotICAgICAgICAgICAgICAgIGlmICghZGVmYXVsdEZyYW1lYnVmZmVyKQotICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBhdHRhY2htZW50IHdoZW4gdGhlIGRlZmF1bHQg
ZnJhbWVidWZmZXIgaXMgbm90IGJvdW5kIikpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgYXR0YWNobWVudCIpKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICBpZiAoIVZh
bGlkYXRlUm9idXN0QnVmZmVyU2l6ZShjb250ZXh0LCBidWZTaXplLCAqbGVuZ3RoKSkKKyAgICB7
CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZUluc2VydEV2ZW50TWFya2VyRVhUKENvbnRleHQgKmNvbnRleHQsIEdMc2l6
ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpCitib29sIFZhbGlkYXRlR2V0UHJvZ3JhbWl2
KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBwcm9ncmFtLCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkg
Km51bVBhcmFtcykKIHsKLSAgICAvLyBOb3RlIHRoYXQgZGVidWcgbWFya2VyIGNhbGxzIG11c3Qg
bm90IHNldCBlcnJvciBzdGF0ZQorICAgIC8vIEN1cnJlbnRseSwgYWxsIEdldFByb2dyYW1pdiBx
dWVyaWVzIHJldHVybiAxIHBhcmFtZXRlcgorICAgICpudW1QYXJhbXMgPSAxOwogCi0gICAgaWYg
KGxlbmd0aCA8IDApCisgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IEdldFZhbGlkUHJvZ3Jh
bShjb250ZXh0LCBwcm9ncmFtKTsKKyAgICBpZiAoIXByb2dyYW1PYmplY3QpCiAgICAgewogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKG1hcmtlciA9PSBudWxscHRyKQor
ICAgIHN3aXRjaCAocG5hbWUpCiAgICAgewotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IGNhc2UgR0xfREVMRVRFX1NUQVRVUzoKKyAgICAgICAgY2FzZSBHTF9MSU5LX1NUQVRVUzoKKyAg
ICAgICAgY2FzZSBHTF9WQUxJREFURV9TVEFUVVM6CisgICAgICAgIGNhc2UgR0xfSU5GT19MT0df
TEVOR1RIOgorICAgICAgICBjYXNlIEdMX0FUVEFDSEVEX1NIQURFUlM6CisgICAgICAgIGNhc2Ug
R0xfQUNUSVZFX0FUVFJJQlVURVM6CisgICAgICAgIGNhc2UgR0xfQUNUSVZFX0FUVFJJQlVURV9N
QVhfTEVOR1RIOgorICAgICAgICBjYXNlIEdMX0FDVElWRV9VTklGT1JNUzoKKyAgICAgICAgY2Fz
ZSBHTF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIOgorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBHTF9QUk9HUkFNX0JJTkFSWV9MRU5HVEg6CisgICAgICAgICAgICBpZiAoY29u
dGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFjb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkuZ2V0UHJvZ3JhbUJpbmFyeSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlF1ZXJ5aW5nIEdMX1BST0dSQU1fQklOQVJZ
X0xFTkdUSCByZXF1aXJlcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkdMX09FU19nZXRfcHJvZ3JhbV9iaW5hcnkgb3IgRVMgMy4wLiIpKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBjYXNlIEdMX0FDVElWRV9VTklGT1JNX0JMT0NLUzoKKyAgICAgICAgY2FzZSBH
TF9BQ1RJVkVfVU5JRk9STV9CTE9DS19NQVhfTkFNRV9MRU5HVEg6CisgICAgICAgIGNhc2UgR0xf
VFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9NT0RFOgorICAgICAgICBjYXNlIEdMX1RSQU5TRk9S
TV9GRUVEQkFDS19WQVJZSU5HUzoKKyAgICAgICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tf
VkFSWUlOR19NQVhfTEVOR1RIOgorICAgICAgICBjYXNlIEdMX1BST0dSQU1fQklOQVJZX1JFVFJJ
RVZBQkxFX0hJTlQ6CisgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJz
aW9uKCkgPCAzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIlF1ZXJ5aW5nIHJlcXVpcmVzIGF0IGxlYXN0
IEVTIDMuMC4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIlVua25vd24gcGFyYW1l
dGVyIG5hbWUuIikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUHVzaEdyb3VwTWFya2VyRVhUKENvbnRleHQg
KmNvbnRleHQsIEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpCitib29sIFZhbGlk
YXRlR2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgKm51bVBhcmFtcykKIHsKLSAgICAvLyBOb3RlIHRoYXQg
ZGVidWcgbWFya2VyIGNhbGxzIG11c3Qgbm90IHNldCBlcnJvciBzdGF0ZQorICAgIGlmICghVmFs
aWRhdGVSb2J1c3RFbnRyeVBvaW50KGNvbnRleHQsIGJ1ZlNpemUpKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KIAotICAgIGlmIChsZW5ndGggPCAwKQorICAgIGlmICghVmFs
aWRhdGVHZXRQcm9ncmFtaXYoY29udGV4dCwgcHJvZ3JhbSwgcG5hbWUsIG51bVBhcmFtcykpCiAg
ICAgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKGxlbmd0aCA+IDAg
JiYgbWFya2VyID09IG51bGxwdHIpCisgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEJ1ZmZlclNpemUo
Y29udGV4dCwgYnVmU2l6ZSwgKm51bVBhcmFtcykpCiAgICAgewogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQpAQCAtMjMzMCw1NzEgKzQ3MjUsNTA3IEBAIGJvb2wgVmFsaWRhdGVQdXNoR3Jv
dXBNYXJrZXJFWFQoQ29udGV4dCAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5LAorYm9v
bCBWYWxpZGF0ZUdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OkltYWdlICppbWFnZSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKIHsK
LSAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lZ2xJbWFnZSAmJiAhY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmVnbEltYWdlRXh0ZXJuYWwpCi0gICAgewotICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgc3dpdGNoICh0YXJnZXQpCi0gICAgewotICAgICAgICBj
YXNlIEdMX1RFWFRVUkVfMkQ6Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVN
LCAiaW52YWxpZCB0ZXh0dXJlIHRhcmdldC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQorICAgIHJldHVybiBWYWxpZGF0ZUdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2QmFz
ZShjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBudWxscHRyKTsKK30KIAotICAgIGlmICghZGlzcGxh
eS0+aXNWYWxpZEltYWdlKGltYWdlKSkKK2Jvb2wgVmFsaWRhdGVHZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBpZiAoIVZhbGlkYXRlUm9i
dXN0RW50cnlQb2ludChjb250ZXh0LCBidWZTaXplKSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJFR0wgaW1hZ2UgaXMgbm90IHZh
bGlkLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChpbWFnZS0+
Z2V0U2FtcGxlcygpID4gMCkKKyAgICBpZiAoIVZhbGlkYXRlR2V0UmVuZGVyYnVmZmVyUGFyYW1l
dGVyaXZCYXNlKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIGxlbmd0aCkpCiAgICAgewotICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBjcmVhdGUgYSAyRCB0ZXh0dXJl
IGZyb20gYSBtdWx0aXNhbXBsZWQgRUdMIGltYWdlLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIGNvbnN0IFRleHR1cmVDYXBzICZ0ZXh0dXJlQ2FwcyA9IGNvbnRleHQt
PmdldFRleHR1cmVDYXBzKCkuZ2V0KGltYWdlLT5nZXRJbnRlcm5hbEZvcm1hdCgpKTsKLSAgICBp
ZiAoIXRleHR1cmVDYXBzLnRleHR1cmFibGUpCisgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEJ1ZmZl
clNpemUoY29udGV4dCwgYnVmU2l6ZSwgKmxlbmd0aCkpCiAgICAgewotICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIkVHTCBpbWFnZSBpbnRlcm5hbCBmb3JtYXQgaXMgbm90IHN1
cHBvcnRlZCBhcyBhIHRleHR1cmUuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVFR0xJbWFnZVRhcmdldFJlbmRl
cmJ1ZmZlclN0b3JhZ2VPRVMoQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
Z2w6OkltYWdlICppbWFnZSkKK2Jvb2wgVmFsaWRhdGVHZXRTaGFkZXJpdihDb250ZXh0ICpjb250
ZXh0LCBHTHVpbnQgc2hhZGVyLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCiB7Ci0gICAg
aWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZWdsSW1hZ2UpCi0gICAgewotICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgc3dpdGNoICh0YXJnZXQpCi0gICAgewotICAg
ICAgICBjYXNlIEdMX1JFTkRFUkJVRkZFUjoKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZB
TElEX0VOVU0sICJpbnZhbGlkIHJlbmRlcmJ1ZmZlciB0YXJnZXQuIikpOwotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICByZXR1cm4gVmFsaWRhdGVHZXRTaGFkZXJpdkJhc2Uo
Y29udGV4dCwgc2hhZGVyLCBwbmFtZSwgbnVsbHB0cik7Cit9CiAKLSAgICBpZiAoIWRpc3BsYXkt
PmlzVmFsaWRJbWFnZShpbWFnZSkpCitib29sIFZhbGlkYXRlR2V0U2hhZGVyaXZSb2J1c3RBTkdM
RShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IHNoYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVm
U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCit7
CisgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEVudHJ5UG9pbnQoY29udGV4dCwgYnVmU2l6ZSkpCiAg
ICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVF
LCAiRUdMIGltYWdlIGlzIG5vdCB2YWxpZC4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICBjb25zdCBUZXh0dXJlQ2FwcyAmdGV4dHVyZUNhcHMgPSBjb250ZXh0LT5nZXRU
ZXh0dXJlQ2FwcygpLmdldChpbWFnZS0+Z2V0SW50ZXJuYWxGb3JtYXQoKSk7Ci0gICAgaWYgKCF0
ZXh0dXJlQ2Fwcy5yZW5kZXJhYmxlKQorICAgIGlmICghVmFsaWRhdGVHZXRTaGFkZXJpdkJhc2Uo
Y29udGV4dCwgc2hhZGVyLCBwbmFtZSwgbGVuZ3RoKSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKAotICAgICAgICAgICAgR0xfSU5WQUxJRF9PUEVSQVRJT04sICJF
R0wgaW1hZ2UgaW50ZXJuYWwgZm9ybWF0IGlzIG5vdCBzdXBwb3J0ZWQgYXMgYSByZW5kZXJidWZm
ZXIuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLWJvb2wgVmFsaWRhdGVCaW5kVmVydGV4QXJyYXlCYXNlKENvbnRleHQgKmNvbnRleHQs
IEdMdWludCBhcnJheSkKLXsKLSAgICBpZiAoIWNvbnRleHQtPmlzVmVydGV4QXJyYXlHZW5lcmF0
ZWQoYXJyYXkpKQorICAgIGlmICghVmFsaWRhdGVSb2J1c3RCdWZmZXJTaXplKGNvbnRleHQsIGJ1
ZlNpemUsICpsZW5ndGgpKQogICAgIHsKLSAgICAgICAgLy8gVGhlIGRlZmF1bHQgVkFPIHNob3Vs
ZCBhbHdheXMgZXhpc3QKLSAgICAgICAgQVNTRVJUKGFycmF5ICE9IDApOwotICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVMaW5rUHJvZ3JhbShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcHJvZ3JhbSkKK2Jvb2wgVmFs
aWRhdGVHZXRUZXhQYXJhbWV0ZXJmdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBH
TGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcykKIHsKLSAgICBpZiAoY29udGV4dC0+aGFzQWN0
aXZlVHJhbnNmb3JtRmVlZGJhY2socHJvZ3JhbSkpCi0gICAgewotICAgICAgICAvLyBFUyAzLjAu
NCBzZWN0aW9uIDIuMTUgcGFnZSA5MQotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkNhbm5vdCBsaW5rIHByb2dyYW0gd2hpbGUgcHJvZ3JhbSBpcyBhc3NvY2lhdGVkIHdpdGgg
YW4gYWN0aXZlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRyYW5zZm9y
bSBmZWVkYmFjayBvYmplY3QuIikpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAg
IHJldHVybiB0cnVlOworICAgIHJldHVybiBWYWxpZGF0ZUdldFRleFBhcmFtZXRlckJhc2UoY29u
dGV4dCwgdGFyZ2V0LCBwbmFtZSwgbnVsbHB0cik7CiB9CiAKLWJvb2wgVmFsaWRhdGVQcm9ncmFt
QmluYXJ5QmFzZShDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBiaW5hcnlGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9p
ZCAqYmluYXJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxlbmd0aCkK
K2Jvb2wgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBi
dWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xm
bG9hdCAqcGFyYW1zKQogewotICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBHZXRWYWxpZFBy
b2dyYW0oY29udGV4dCwgcHJvZ3JhbSk7Ci0gICAgaWYgKHByb2dyYW1PYmplY3QgPT0gbnVsbHB0
cikKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0RW50cnlQb2ludChjb250ZXh0LCBidWZTaXplKSkK
ICAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBjb25zdCBzdGQ6OnZl
Y3RvcjxHTGVudW0+ICZwcm9ncmFtQmluYXJ5Rm9ybWF0cyA9IGNvbnRleHQtPmdldENhcHMoKS5w
cm9ncmFtQmluYXJ5Rm9ybWF0czsKLSAgICBpZiAoc3RkOjpmaW5kKHByb2dyYW1CaW5hcnlGb3Jt
YXRzLmJlZ2luKCksIHByb2dyYW1CaW5hcnlGb3JtYXRzLmVuZCgpLCBiaW5hcnlGb3JtYXQpID09
Ci0gICAgICAgIHByb2dyYW1CaW5hcnlGb3JtYXRzLmVuZCgpKQorICAgIGlmICghVmFsaWRhdGVH
ZXRUZXhQYXJhbWV0ZXJCYXNlKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIGxlbmd0aCkpCiAgICAg
ewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJQ
cm9ncmFtIGJpbmFyeSBmb3JtYXQgaXMgbm90IHZhbGlkLiIpKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAotICAgIGlmIChjb250ZXh0LT5oYXNBY3RpdmVUcmFuc2Zvcm1GZWVkYmFj
ayhwcm9ncmFtKSkKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0QnVmZmVyU2l6ZShjb250ZXh0LCBi
dWZTaXplLCAqbGVuZ3RoKSkKICAgICB7Ci0gICAgICAgIC8vIEVTIDMuMC40IHNlY3Rpb24gMi4x
NSBwYWdlIDkxCi0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IGNo
YW5nZSBwcm9ncmFtIGJpbmFyeSB3aGlsZSBwcm9ncmFtIGlzIGFzc29jaWF0ZWQgd2l0aCAiCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbiBhY3RpdmUgdHJhbnNmb3JtIGZl
ZWRiYWNrIG9iamVjdC4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1CaW5hcnlCYXNlKENvbnRl
eHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBy
b2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXpl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKmJpbmFyeUZvcm1hdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpiaW5hcnkpCitib29sIFZhbGlk
YXRlR2V0VGV4UGFyYW1ldGVyaXYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xl
bnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQogewotICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3Qg
PSBHZXRWYWxpZFByb2dyYW0oY29udGV4dCwgcHJvZ3JhbSk7Ci0gICAgaWYgKHByb2dyYW1PYmpl
Y3QgPT0gbnVsbHB0cikKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAg
cmV0dXJuIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVyQmFzZShjb250ZXh0LCB0YXJnZXQsIHBuYW1l
LCBudWxscHRyKTsKK30KIAotICAgIGlmICghcHJvZ3JhbU9iamVjdC0+aXNMaW5rZWQoKSkKK2Jv
b2wgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZT
aXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAq
bGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
KnBhcmFtcykKK3sKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0RW50cnlQb2ludChjb250ZXh0LCBi
dWZTaXplKSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAiUHJvZ3JhbSBpcyBub3QgbGlua2VkLiIpKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFZhbGlkYXRl
VXNlUHJvZ3JhbShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcHJvZ3JhbSkKLXsKLSAgICBpZiAo
cHJvZ3JhbSAhPSAwKQorICAgIGlmICghVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJCYXNlKGNvbnRl
eHQsIHRhcmdldCwgcG5hbWUsIGxlbmd0aCkpCiAgICAgewotICAgICAgICBQcm9ncmFtICpwcm9n
cmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKLSAgICAgICAgaWYgKCFw
cm9ncmFtT2JqZWN0KQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBFUyAzLjEuMCBzZWN0aW9u
IDcuMyBwYWdlIDcyCi0gICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyKHByb2dyYW0p
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKAot
ICAgICAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkF0dGVtcHRlZCB0byB1c2UgYSBzaW5nbGUgc2hhZGVyIGluc3Rl
YWQgb2YgYSBzaGFkZXIgcHJvZ3JhbS4iKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJQ
cm9ncmFtIGludmFsaWQuIikpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QtPmlzTGlua2Vk
KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLCAiUHJvZ3JhbSBub3QgbGlua2VkLiIpKTsKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQot
ICAgIGlmIChjb250ZXh0LT5nZXRTdGF0ZSgpLmlzVHJhbnNmb3JtRmVlZGJhY2tBY3RpdmVVbnBh
dXNlZCgpKQorCisgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEJ1ZmZlclNpemUoY29udGV4dCwgYnVm
U2l6ZSwgKmxlbmd0aCkpCiAgICAgewotICAgICAgICAvLyBFUyAzLjAuNCBzZWN0aW9uIDIuMTUg
cGFnZSA5MQotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcigKLSAgICAgICAgICAgIEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OLAotICAgICAgICAgICAgICAgICAgIkNhbm5vdCBjaGFuZ2Ug
YWN0aXZlIHByb2dyYW0gd2hpbGUgdHJhbnNmb3JtIGZlZWRiYWNrIGlzIHVucGF1c2VkLiIpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlQ29weVRleEltYWdlMkQoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsZXZlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYm9yZGVy
KQorYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlcmYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRh
cmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQogewotICAgIGlmIChjb250ZXh0LT5n
ZXRDbGllbnRWZXJzaW9uKCkgPCAzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFZhbGlkYXRlRVMy
Q29weVRleEltYWdlUGFyYW1ldGVycyhjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZv
cm1hdCwgZmFsc2UsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKTsKLSAgICB9CisgICAgcmV0
dXJuIFZhbGlkYXRlVGV4UGFyYW1ldGVyQmFzZShjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCAtMSwg
JnBhcmFtKTsKK30KIAotICAgIEFTU0VSVChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPT0g
Myk7Ci0gICAgcmV0dXJuIFZhbGlkYXRlRVMzQ29weVRleEltYWdlMkRQYXJhbWV0ZXJzKGNvbnRl
eHQsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCBmYWxzZSwgMCwgMCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgeCwgeSwgd2lkdGgsIGhl
aWdodCwgYm9yZGVyKTsKK2Jvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJmdihDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykK
K3sKKyAgICByZXR1cm4gVmFsaWRhdGVUZXhQYXJhbWV0ZXJCYXNlKGNvbnRleHQsIHRhcmdldCwg
cG5hbWUsIC0xLCBwYXJhbXMpOwogfQogCi1ib29sIFZhbGlkYXRlRnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIoQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBhdHRhY2htZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IHJlbmRlcmJ1ZmZlcikKK2Jvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQogewotICAgIGlmICghVmFsaWRGcmFtZWJ1
ZmZlclRhcmdldCh0YXJnZXQpIHx8Ci0gICAgICAgIChyZW5kZXJidWZmZXJ0YXJnZXQgIT0gR0xf
UkVOREVSQlVGRkVSICYmIHJlbmRlcmJ1ZmZlciAhPSAwKSkKKyAgICBpZiAoIVZhbGlkYXRlUm9i
dXN0RW50cnlQb2ludChjb250ZXh0LCBidWZTaXplKSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgcmV0dXJuIFZhbGlkYXRlRnJhbWVidWZmZXJSZW5kZXJidWZmZXJQ
YXJhbWV0ZXJzKGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyYnVmZmVydGFyZ2V0LCBy
ZW5kZXJidWZmZXIpOworICAgIHJldHVybiBWYWxpZGF0ZVRleFBhcmFtZXRlckJhc2UoY29udGV4
dCwgdGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKIH0KIAotYm9vbCBWYWxpZGF0ZURy
YXdCdWZmZXJzQmFzZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBjb25z
dCBHTGVudW0gKmJ1ZnMpCitib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVyaShDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQogewotICAgIC8v
IElOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIG4gaXMgbmVnYXRpdmUgb3IgZ3JlYXRlciB0
aGFuIHZhbHVlIG9mIE1BWF9EUkFXX0JVRkZFUlMKLSAgICBpZiAobiA8IDAgfHwgc3RhdGljX2Nh
c3Q8R0x1aW50PihuKSA+IGNvbnRleHQtPmdldENhcHMoKS5tYXhEcmF3QnVmZmVycykKKyAgICBy
ZXR1cm4gVmFsaWRhdGVUZXhQYXJhbWV0ZXJCYXNlKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIC0x
LCAmcGFyYW0pOworfQorCitib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVyaXYoQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKQor
eworICAgIHJldHVybiBWYWxpZGF0ZVRleFBhcmFtZXRlckJhc2UoY29udGV4dCwgdGFyZ2V0LCBw
bmFtZSwgLTEsIHBhcmFtcyk7Cit9CisKK2Jvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0RW50cnlQ
b2ludChjb250ZXh0LCBidWZTaXplKSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKAotICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIm4gbXVzdCBiZSBub24t
bmVnYXRpdmUgYW5kIG5vIGdyZWF0ZXIgdGhhbiBNQVhfRFJBV19CVUZGRVJTIikpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgQVNTRVJUKGNvbnRleHQtPmdldFN0YXRlKCku
Z2V0RHJhd0ZyYW1lYnVmZmVyKCkpOwotICAgIEdMdWludCBmcmFtZUJ1ZmZlcklkICAgICAgPSBj
b250ZXh0LT5nZXRTdGF0ZSgpLmdldERyYXdGcmFtZWJ1ZmZlcigpLT5pZCgpOwotICAgIEdMdWlu
dCBtYXhDb2xvckF0dGFjaG1lbnQgPSBHTF9DT0xPUl9BVFRBQ0hNRU5UMF9FWFQgKyBjb250ZXh0
LT5nZXRDYXBzKCkubWF4Q29sb3JBdHRhY2htZW50czsKKyAgICByZXR1cm4gVmFsaWRhdGVUZXhQ
YXJhbWV0ZXJCYXNlKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcyk7Cit9
CiAKLSAgICAvLyBUaGlzIHNob3VsZCBjb21lIGZpcnN0IGJlZm9yZSB0aGUgY2hlY2sgZm9yIHRo
ZSBkZWZhdWx0IGZyYW1lIGJ1ZmZlcgotICAgIC8vIGJlY2F1c2Ugd2hlbiB3ZSBzd2l0Y2ggdG8g
RVMzLjErLCBpbnZhbGlkIGVudW1zIHdpbGwgcmV0dXJuIElOVkFMSURfRU5VTQotICAgIC8vIHJh
dGhlciB0aGFuIElOVkFMSURfT1BFUkFUSU9OCi0gICAgZm9yIChpbnQgY29sb3JBdHRhY2htZW50
ID0gMDsgY29sb3JBdHRhY2htZW50IDwgbjsgY29sb3JBdHRhY2htZW50KyspCi0gICAgewotICAg
ICAgICBjb25zdCBHTGVudW0gYXR0YWNobWVudCA9IEdMX0NPTE9SX0FUVEFDSE1FTlQwX0VYVCAr
IGNvbG9yQXR0YWNobWVudDsKK2Jvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVyZnYoQ29u
dGV4dCAqY29udGV4dCwgR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFy
YW1zKQoreworICAgIHJldHVybiBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJCYXNlKGNvbnRl
eHQsIHNhbXBsZXIsIHBuYW1lLCBudWxscHRyKTsKK30KIAotICAgICAgICBpZiAoYnVmc1tjb2xv
ckF0dGFjaG1lbnRdICE9IEdMX05PTkUgJiYgYnVmc1tjb2xvckF0dGFjaG1lbnRdICE9IEdMX0JB
Q0sgJiYKLSAgICAgICAgICAgIChidWZzW2NvbG9yQXR0YWNobWVudF0gPCBHTF9DT0xPUl9BVFRB
Q0hNRU5UMCB8fAotICAgICAgICAgICAgIGJ1ZnNbY29sb3JBdHRhY2htZW50XSA+IEdMX0NPTE9S
X0FUVEFDSE1FTlQzMSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIFZhbHVlIGluIGJ1ZnMg
aXMgbm90IE5PTkUsIEJBQ0ssIG9yIEdMX0NPTE9SX0FUVEFDSE1FTlRpCi0gICAgICAgICAgICAv
LyBUaGUgMy4wLjQgc3BlYyBzYXlzIHRvIGdlbmVyYXRlIEdMX0lOVkFMSURfT1BFUkFUSU9OIGhl
cmUsIGJ1dCB0aGlzCi0gICAgICAgICAgICAvLyB3YXMgY2hhbmdlZCB0byBHTF9JTlZBTElEX0VO
VU0gaW4gMy4xLCB3aGljaCBkRVFQIGFsc28gZXhwZWN0cy4KLSAgICAgICAgICAgIC8vIDMuMSBp
cyBzdGlsbCBhIGJpdCBhbWJpZ3VvdXMgYWJvdXQgdGhlIGVycm9yLCBidXQgZnV0dXJlIHNwZWNz
IGFyZQotICAgICAgICAgICAgLy8gZXhwZWN0ZWQgdG8gY2xhcmlmeSB0aGF0IEdMX0lOVkFMSURf
RU5VTSBpcyB0aGUgY29ycmVjdCBlcnJvci4KLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgYnVmZmVyIHZhbHVlIikpOwotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGJ1ZnNb
Y29sb3JBdHRhY2htZW50XSA+PSBtYXhDb2xvckF0dGFjaG1lbnQpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKAotICAgICAgICAgICAgICAgIEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAiQnVmZmVyIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiBNQVhfRFJBV19C
VUZGRVJTIikpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAg
IGVsc2UgaWYgKGJ1ZnNbY29sb3JBdHRhY2htZW50XSAhPSBHTF9OT05FICYmIGJ1ZnNbY29sb3JB
dHRhY2htZW50XSAhPSBhdHRhY2htZW50ICYmCi0gICAgICAgICAgICAgICAgIGZyYW1lQnVmZmVy
SWQgIT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gSU5WQUxJRF9PUEVSQVRJT04tR0wg
aXMgYm91bmQgdG8gYnVmZmVyIGFuZCBpdGggYXJndW1lbnQKLSAgICAgICAgICAgIC8vIGlzIG5v
dCBDT0xPUl9BVFRBQ0hNRU5UaSBvciBOT05FCi0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcigKLSAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkl0aCB2
YWx1ZSBkb2VzIG5vdCBtYXRjaCBDT0xPUl9BVFRBQ0hNRU5UaSBvciBOT05FIikpOwotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Citib29sIFZhbGlkYXRlR2V0U2FtcGxlclBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc2FtcGxlciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJ1ZlNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVu
Z3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgKnBhcmFtcykKK3sKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0RW50cnlQb2ludChjb250ZXh0
LCBidWZTaXplKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICAv
LyBJTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgR0wgaXMgYm91bmQgdG8gdGhlIGRl
ZmF1bHQgZnJhbWVidWZmZXIKLSAgICAvLyBhbmQgbiBpcyBub3QgMSBvciBidWZzIGlzIGJvdW5k
IHRvIHZhbHVlIG90aGVyIHRoYW4gQkFDSyBhbmQgTk9ORQotICAgIGlmIChmcmFtZUJ1ZmZlcklk
ID09IDApCisgICAgaWYgKCFWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJCYXNlKGNvbnRleHQs
IHNhbXBsZXIsIHBuYW1lLCBsZW5ndGgpKQogICAgIHsKLSAgICAgICAgaWYgKG4gIT0gMSkKLSAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibiBt
dXN0IGJlIDEgd2hlbiBHTCBpcyBib3VuZCB0byB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciIpKTsK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQogCi0gICAgICAgIGlmIChidWZzWzBdICE9IEdMX05PTkUgJiYgYnVmc1swXSAh
PSBHTF9CQUNLKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcigKLSAgICAgICAgICAgICAgICBHTF9JTlZBTElEX09QRVJBVElPTiwKLSAgICAgICAgICAg
ICAgICAiT25seSBOT05FIG9yIEJBQ0sgYXJlIHZhbGlkIHZhbHVlcyB3aGVuIGRyYXdpbmcgdG8g
dGhlIGRlZmF1bHQgZnJhbWVidWZmZXIiKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIH0KKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0QnVmZmVyU2l6ZShjb250ZXh0LCBidWZT
aXplLCAqbGVuZ3RoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNvcHlUZXhTdWJJbWFnZTJEKENvbnRl
eHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdl
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHlvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQpCitib29sIFZhbGlkYXRlR2V0U2FtcGxl
clBhcmFtZXRlcml2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5h
bWUsIEdMaW50ICpwYXJhbXMpCiB7Ci0gICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24o
KSA8IDMpCi0gICAgewotICAgICAgICByZXR1cm4gVmFsaWRhdGVFUzJDb3B5VGV4SW1hZ2VQYXJh
bWV0ZXJzKGNvbnRleHQsIHRhcmdldCwgbGV2ZWwsIEdMX05PTkUsIHRydWUsIHhvZmZzZXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW9mZnNldCwg
eCwgeSwgd2lkdGgsIGhlaWdodCwgMCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIFZhbGlkYXRlRVMz
Q29weVRleEltYWdlMkRQYXJhbWV0ZXJzKGNvbnRleHQsIHRhcmdldCwgbGV2ZWwsIEdMX05PTkUs
IHRydWUsIHhvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHlvZmZzZXQsIDAsIHgsIHksIHdpZHRoLCBoZWlnaHQsIDApOworICAgIHJldHVybiBW
YWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJCYXNlKGNvbnRleHQsIHNhbXBsZXIsIHBuYW1lLCBu
dWxscHRyKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBvaW50ZXJ2QmFzZShDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIHZvaWQgKipwYXJhbXMpCiti
b29sIFZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgc2FtcGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCiB7Ci0gICAgaWYgKCFWYWxpZEJ1ZmZl
clRhcmdldChjb250ZXh0LCB0YXJnZXQpKQorICAgIGlmICghVmFsaWRhdGVSb2J1c3RFbnRyeVBv
aW50KGNvbnRleHQsIGJ1ZlNpemUpKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiQnVmZmVyIHRhcmdldCBub3QgdmFsaWQ6IDB4JVgi
LCB0YXJnZXQpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChwbmFt
ZSAhPSBHTF9CVUZGRVJfTUFQX1BPSU5URVIpCisgICAgaWYgKCFWYWxpZGF0ZUdldFNhbXBsZXJQ
YXJhbWV0ZXJCYXNlKGNvbnRleHQsIHNhbXBsZXIsIHBuYW1lLCBsZW5ndGgpKQogICAgIHsKLSAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAicG5hbWUg
bm90IHZhbGlkOiAweCVYIiwgcG5hbWUpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIEJ1ZmZlciAqYnVmZmVyID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRUYXJnZXRCdWZm
ZXIodGFyZ2V0KTsKLQotICAgIC8vIEdMRVMgMy4wIHNlY3Rpb24gMi4xMC4xOiAiQXR0ZW1wdHMg
dG8gYXR0ZW1wdHMgdG8gbW9kaWZ5IG9yIHF1ZXJ5IGJ1ZmZlciBvYmplY3Qgc3RhdGUgZm9yIGEK
LSAgICAvLyB0YXJnZXQgYm91bmQgdG8gemVybyBnZW5lcmF0ZSBhbiBJTlZBTElEX09QRVJBVElP
TiBlcnJvci4iCi0gICAgLy8gR0xFUyAzLjEgc2VjdGlvbiA2LjYgZXhwbGljaXRseSBzcGVjaWZp
ZXMgdGhpcyBlcnJvci4KLSAgICBpZiAoIWJ1ZmZlcikKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0
QnVmZmVyU2l6ZShjb250ZXh0LCBidWZTaXplLCAqbGVuZ3RoKSkKICAgICB7Ci0gICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKAotICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04sICJDYW4gbm90IGdldCBwb2ludGVyIGZvciByZXNlcnZlZCBidWZmZXIgbmFtZSB6ZXJvLiIp
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlVW5tYXBCdWZmZXJCYXNlKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0
YXJnZXQpCitib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcmYoQ29udGV4dCAqY29udGV4dCwg
R0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSkKIHsKLSAgICBpZiAo
IVZhbGlkQnVmZmVyVGFyZ2V0KGNvbnRleHQsIHRhcmdldCkpCi0gICAgewotICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGJ1ZmZlciB0
YXJnZXQuIikpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIHJldHVybiBWYWxp
ZGF0ZVNhbXBsZXJQYXJhbWV0ZXJCYXNlKGNvbnRleHQsIHNhbXBsZXIsIHBuYW1lLCAtMSwgJnBh
cmFtKTsKK30KIAotICAgIEJ1ZmZlciAqYnVmZmVyID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRU
YXJnZXRCdWZmZXIodGFyZ2V0KTsKK2Jvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyZnYoQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNh
bXBsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQorewor
ICAgIHJldHVybiBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJCYXNlKGNvbnRleHQsIHNhbXBsZXIs
IHBuYW1lLCAtMSwgcGFyYW1zKTsKK30KIAotICAgIGlmIChidWZmZXIgPT0gbnVsbHB0ciB8fCAh
YnVmZmVyLT5pc01hcHBlZCgpKQorYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVz
dEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IHNhbXBsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCit7CisgICAgaWYgKCFW
YWxpZGF0ZVJvYnVzdEVudHJ5UG9pbnQoY29udGV4dCwgYnVmU2l6ZSkpCiAgICAgewotICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkJ1ZmZl
ciBub3QgbWFwcGVkLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHJl
dHVybiB0cnVlOworICAgIHJldHVybiBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJCYXNlKGNvbnRl
eHQsIHNhbXBsZXIsIHBuYW1lLCBidWZTaXplLCBwYXJhbXMpOwogfQogCi1ib29sIFZhbGlkYXRl
TWFwQnVmZmVyUmFuZ2VCYXNlKENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50cHRyIG9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaXB0ciBsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYml0Zmll
bGQgYWNjZXNzKQorYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJpKENvbnRleHQgKmNvbnRl
eHQsIEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQogewotICAgIGlm
ICghVmFsaWRCdWZmZXJUYXJnZXQoY29udGV4dCwgdGFyZ2V0KSkKKyAgICByZXR1cm4gVmFsaWRh
dGVTYW1wbGVyUGFyYW1ldGVyQmFzZShjb250ZXh0LCBzYW1wbGVyLCBwbmFtZSwgLTEsICZwYXJh
bSk7Cit9CisKK2Jvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyaXYoQ29udGV4dCAqY29udGV4
dCwgR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcykKK3sK
KyAgICByZXR1cm4gVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyQmFzZShjb250ZXh0LCBzYW1wbGVy
LCBwbmFtZSwgLTEsIHBhcmFtcyk7Cit9CisKK2Jvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBzYW1wbGVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBp
ZiAoIVZhbGlkYXRlUm9idXN0RW50cnlQb2ludChjb250ZXh0LCBidWZTaXplKSkKICAgICB7Ci0g
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFs
aWQgYnVmZmVyIHRhcmdldC4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAg
ICBpZiAob2Zmc2V0IDwgMCB8fCBsZW5ndGggPCAwKQorICAgIHJldHVybiBWYWxpZGF0ZVNhbXBs
ZXJQYXJhbWV0ZXJCYXNlKGNvbnRleHQsIHNhbXBsZXIsIHBuYW1lLCBidWZTaXplLCBwYXJhbXMp
OworfQorCitib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliZnYoQ29udGV4dCAqY29udGV4dCwg
R0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcykKK3sKKyAgICByZXR1
cm4gVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJCYXNlKGNvbnRleHQsIGluZGV4LCBwbmFtZSwgbnVs
bHB0ciwgZmFsc2UsIGZhbHNlKTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYmZ2
Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcykKK3sKKyAgICBpZiAoIVZhbGlk
YXRlUm9idXN0RW50cnlQb2ludChjb250ZXh0LCBidWZTaXplKSkKICAgICB7Ci0gICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJJbnZhbGlkIG9mZnNl
dCBvciBsZW5ndGguIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgQnVm
ZmVyICpidWZmZXIgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFRhcmdldEJ1ZmZlcih0YXJnZXQp
OwotCi0gICAgaWYgKCFidWZmZXIpCisgICAgaWYgKCFWYWxpZGF0ZUdldFZlcnRleEF0dHJpYkJh
c2UoY29udGV4dCwgaW5kZXgsIHBuYW1lLCBsZW5ndGgsIGZhbHNlLCBmYWxzZSkpCiAgICAgewot
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwg
IkF0dGVtcHRlZCB0byBtYXAgYnVmZmVyIG9iamVjdCB6ZXJvLiIpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIC8vIENoZWNrIGZvciBidWZmZXIgb3ZlcmZsb3cKLSAgICBz
aXplX3Qgb2Zmc2V0U2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4ob2Zmc2V0KTsKLSAgICBzaXpl
X3QgbGVuZ3RoU2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKTsKLQotICAgIGlmICgh
cng6OklzVW5zaWduZWRBZGRpdGlvblNhZmUob2Zmc2V0U2l6ZSwgbGVuZ3RoU2l6ZSkgfHwKLSAg
ICAgICAgb2Zmc2V0U2l6ZSArIGxlbmd0aFNpemUgPiBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ1ZmZl
ci0+Z2V0U2l6ZSgpKSkKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0QnVmZmVyU2l6ZShjb250ZXh0
LCBidWZTaXplLCAqbGVuZ3RoKSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KAotICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIk1hcHBlZCByYW5nZSBkb2Vz
IG5vdCBmaXQgaW50byBidWZmZXIgZGltZW5zaW9ucy4iKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICAvLyBDaGVjayBmb3IgaW52YWxpZCBiaXRzIGluIHRoZSBtYXNrCi0g
ICAgR0xiaXRmaWVsZCBhbGxBY2Nlc3NCaXRzID0gR0xfTUFQX1JFQURfQklUIHwgR0xfTUFQX1dS
SVRFX0JJVCB8IEdMX01BUF9JTlZBTElEQVRFX1JBTkdFX0JJVCB8Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfTUFQX0lOVkFMSURBVEVfQlVGRkVSX0JJVCB8IEdMX01BUF9GTFVT
SF9FWFBMSUNJVF9CSVQgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX01BUF9V
TlNZTkNIUk9OSVpFRF9CSVQ7CisgICAgcmV0dXJuIHRydWU7Cit9CiAKLSAgICBpZiAoYWNjZXNz
ICYgfihhbGxBY2Nlc3NCaXRzKSkKK2Jvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJpdihDb250
ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykK
K3sKKyAgICByZXR1cm4gVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJCYXNlKGNvbnRleHQsIGluZGV4
LCBwbmFtZSwgbnVsbHB0ciwgZmFsc2UsIGZhbHNlKTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFZl
cnRleEF0dHJpYml2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCit7CisgICAg
aWYgKCFWYWxpZGF0ZVJvYnVzdEVudHJ5UG9pbnQoY29udGV4dCwgYnVmU2l6ZSkpCiAgICAgewot
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiSW52
YWxpZCBhY2Nlc3MgYml0czogMHglWC4iLCBhY2Nlc3MpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIGlmIChsZW5ndGggPT0gMCkKKyAgICBpZiAoIVZhbGlkYXRlR2V0VmVy
dGV4QXR0cmliQmFzZShjb250ZXh0LCBpbmRleCwgcG5hbWUsIGxlbmd0aCwgZmFsc2UsIGZhbHNl
KSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OLCAiQnVmZmVyIG1hcHBpbmcgbGVuZ3RoIGlzIHplcm8uIikpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKGJ1ZmZlci0+aXNNYXBwZWQoKSkKKyAgICBp
ZiAoIVZhbGlkYXRlUm9idXN0QnVmZmVyU2l6ZShjb250ZXh0LCBidWZTaXplLCAqbGVuZ3RoKSkK
ICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OLCAiQnVmZmVyIGlzIGFscmVhZHkgbWFwcGVkLiIpKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAotICAgIC8vIENoZWNrIGZvciBpbnZhbGlkIGJpdCBjb21iaW5hdGlvbnMK
LSAgICBpZiAoKGFjY2VzcyAmIChHTF9NQVBfUkVBRF9CSVQgfCBHTF9NQVBfV1JJVEVfQklUKSkg
PT0gMCkKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJp
YlBvaW50ZXJ2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCB2
b2lkICoqcG9pbnRlcikKK3sKKyAgICByZXR1cm4gVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJCYXNl
KGNvbnRleHQsIGluZGV4LCBwbmFtZSwgbnVsbHB0ciwgdHJ1ZSwgZmFsc2UpOworfQorCitib29s
IFZhbGlkYXRlR2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKnBvaW50ZXIpCit7CisgICAgaWYgKCFW
YWxpZGF0ZVJvYnVzdEVudHJ5UG9pbnQoY29udGV4dCwgYnVmU2l6ZSkpCiAgICAgewotICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcigKLSAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OLCAiTmVlZCB0byBtYXAgYnVmZmVyIGZvciBlaXRoZXIgcmVhZGluZyBvciB3cml0aW5n
LiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIEdMYml0ZmllbGQgd3Jp
dGVPbmx5Qml0cyA9Ci0gICAgICAgIEdMX01BUF9JTlZBTElEQVRFX1JBTkdFX0JJVCB8IEdMX01B
UF9JTlZBTElEQVRFX0JVRkZFUl9CSVQgfCBHTF9NQVBfVU5TWU5DSFJPTklaRURfQklUOwotCi0g
ICAgaWYgKChhY2Nlc3MgJiBHTF9NQVBfUkVBRF9CSVQpICE9IDAgJiYgKGFjY2VzcyAmIHdyaXRl
T25seUJpdHMpICE9IDApCisgICAgaWYgKCFWYWxpZGF0ZUdldFZlcnRleEF0dHJpYkJhc2UoY29u
dGV4dCwgaW5kZXgsIHBuYW1lLCBsZW5ndGgsIHRydWUsIGZhbHNlKSkKICAgICB7Ci0gICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBhY2Nlc3MgYml0cyB3aGVuIG1h
cHBpbmcgYnVmZmVyIGZvciByZWFkaW5nOiAweCVYLiIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFjY2VzcykpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgaWYgKChhY2Nlc3MgJiBHTF9NQVBfV1JJVEVfQklUKSA9PSAwICYmIChhY2Nlc3MgJiBHTF9N
QVBfRkxVU0hfRVhQTElDSVRfQklUKSAhPSAwKQorICAgIGlmICghVmFsaWRhdGVSb2J1c3RCdWZm
ZXJTaXplKGNvbnRleHQsIGJ1ZlNpemUsICpsZW5ndGgpKQogICAgIHsKLSAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoCi0gICAgICAgICAgICBHTF9JTlZBTElEX09QRVJBVElPTiwK
LSAgICAgICAgICAgICJUaGUgZXhwbGljaXQgZmx1c2hpbmcgYml0IG1heSBvbmx5IGJlIHNldCBp
ZiB0aGUgYnVmZmVyIGlzIG1hcHBlZCBmb3Igd3JpdGluZy4iKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUZsdXNo
TWFwcGVkQnVmZmVyUmFuZ2VCYXNlKENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBsZW5ndGgpCitib29sIFZhbGlkYXRl
R2V0VmVydGV4QXR0cmliSWl2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgR0xlbnVt
IHBuYW1lLCBHTGludCAqcGFyYW1zKQogewotICAgIGlmIChvZmZzZXQgPCAwIHx8IGxlbmd0aCA8
IDApCisgICAgcmV0dXJuIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliQmFzZShjb250ZXh0LCBpbmRl
eCwgcG5hbWUsIG51bGxwdHIsIGZhbHNlLCB0cnVlKTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFZl
cnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCit7
CisgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEVudHJ5UG9pbnQoY29udGV4dCwgYnVmU2l6ZSkpCiAg
ICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVF
LCAiSW52YWxpZCBvZmZzZXQvbGVuZ3RoIHBhcmFtZXRlcnMuIikpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFWYWxpZEJ1ZmZlclRhcmdldChjb250ZXh0LCB0YXJn
ZXQpKQorICAgIGlmICghVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJCYXNlKGNvbnRleHQsIGluZGV4
LCBwbmFtZSwgbGVuZ3RoLCBmYWxzZSwgdHJ1ZSkpCiAgICAgewotICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGJ1ZmZlciB0YXJnZXQu
IikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgQnVmZmVyICpidWZmZXIg
PSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFRhcmdldEJ1ZmZlcih0YXJnZXQpOwotCi0gICAgaWYg
KGJ1ZmZlciA9PSBudWxscHRyKQorICAgIGlmICghVmFsaWRhdGVSb2J1c3RCdWZmZXJTaXplKGNv
bnRleHQsIGJ1ZlNpemUsICpsZW5ndGgpKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJBdHRlbXB0ZWQgdG8gZmx1c2ggYnVm
ZmVyIG9iamVjdCB6ZXJvLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IGlmICghYnVmZmVyLT5pc01hcHBlZCgpIHx8IChidWZmZXItPmdldEFjY2Vzc0ZsYWdzKCkgJiBH
TF9NQVBfRkxVU0hfRVhQTElDSVRfQklUKSA9PSAwKQorICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliSXVpdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQg
aW5kZXgsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMpCit7CisgICAgcmV0dXJuIFZhbGlk
YXRlR2V0VmVydGV4QXR0cmliQmFzZShjb250ZXh0LCBpbmRleCwgcG5hbWUsIG51bGxwdHIsIGZh
bHNlLCB0cnVlKTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RB
TkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKQoreworICAgIGlmICghVmFs
aWRhdGVSb2J1c3RFbnRyeVBvaW50KGNvbnRleHQsIGJ1ZlNpemUpKQogICAgIHsKLSAgICAgICAg
Y29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoCi0gICAgICAgICAgICBHTF9JTlZBTElEX09QRVJB
VElPTiwgIkF0dGVtcHRlZCB0byBmbHVzaCBhIGJ1ZmZlciBub3QgbWFwcGVkIGZvciBleHBsaWNp
dCBmbHVzaGluZy4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICAvLyBD
aGVjayBmb3IgYnVmZmVyIG92ZXJmbG93Ci0gICAgc2l6ZV90IG9mZnNldFNpemUgPSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KG9mZnNldCk7Ci0gICAgc2l6ZV90IGxlbmd0aFNpemUgPSBzdGF0aWNfY2Fz
dDxzaXplX3Q+KGxlbmd0aCk7CisgICAgaWYgKCFWYWxpZGF0ZUdldFZlcnRleEF0dHJpYkJhc2Uo
Y29udGV4dCwgaW5kZXgsIHBuYW1lLCBsZW5ndGgsIGZhbHNlLCB0cnVlKSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKLSAgICBpZiAoIXJ4OjpJc1Vuc2lnbmVkQWRkaXRp
b25TYWZlKG9mZnNldFNpemUsIGxlbmd0aFNpemUpIHx8Ci0gICAgICAgIG9mZnNldFNpemUgKyBs
ZW5ndGhTaXplID4gc3RhdGljX2Nhc3Q8c2l6ZV90PihidWZmZXItPmdldE1hcExlbmd0aCgpKSkK
KyAgICBpZiAoIVZhbGlkYXRlUm9idXN0QnVmZmVyU2l6ZShjb250ZXh0LCBidWZTaXplLCAqbGVu
Z3RoKSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKAotICAgICAgICAgICAg
RXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIkZsdXNoZWQgcmFuZ2UgZG9lcyBub3QgZml0IGludG8g
YnVmZmVyIG1hcHBpbmcgZGltZW5zaW9ucy4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdlbkJ1ZmZlcnMoQ29u
dGV4dCAqY29udGV4dCwgR0xpbnQgbiwgR0x1aW50ICopCitib29sIFZhbGlkYXRlR2V0QWN0aXZl
VW5pZm9ybUJsb2NraXYoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCiB7Ci0gICAgcmV0dXJuIFZhbGlkYXRlR2VuT3JE
ZWxldGUoY29udGV4dCwgbik7CisgICAgcmV0dXJuIFZhbGlkYXRlR2V0QWN0aXZlVW5pZm9ybUJs
b2NraXZCYXNlKGNvbnRleHQsIHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgbnVs
bHB0cik7CiB9CiAKLWJvb2wgVmFsaWRhdGVEZWxldGVCdWZmZXJzKENvbnRleHQgKmNvbnRleHQs
IEdMaW50IG4sIGNvbnN0IEdMdWludCAqKQorYm9vbCBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm1C
bG9ja2l2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHVuaWZvcm1CbG9ja0lu
ZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKIHsKLSAgICByZXR1cm4gVmFsaWRh
dGVHZW5PckRlbGV0ZShjb250ZXh0LCBuKTsKLX0KKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0RW50
cnlQb2ludChjb250ZXh0LCBidWZTaXplKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CiAKLWJvb2wgVmFsaWRhdGVHZW5GcmFtZWJ1ZmZlcnMoQ29udGV4dCAqY29udGV4dCwg
R0xpbnQgbiwgR0x1aW50ICopCi17Ci0gICAgcmV0dXJuIFZhbGlkYXRlR2VuT3JEZWxldGUoY29u
dGV4dCwgbik7Ci19CisgICAgaWYgKCFWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2QmFz
ZShjb250ZXh0LCBwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUsIGxlbmd0aCkpCisg
ICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCi1ib29sIFZhbGlkYXRlRGVsZXRl
RnJhbWVidWZmZXJzKENvbnRleHQgKmNvbnRleHQsIEdMaW50IG4sIGNvbnN0IEdMdWludCAqKQot
ewotICAgIHJldHVybiBWYWxpZGF0ZUdlbk9yRGVsZXRlKGNvbnRleHQsIG4pOwotfQorICAgIGlm
ICghVmFsaWRhdGVSb2J1c3RCdWZmZXJTaXplKGNvbnRleHQsIGJ1ZlNpemUsICpsZW5ndGgpKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAotYm9vbCBWYWxpZGF0ZUdlblJl
bmRlcmJ1ZmZlcnMoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbiwgR0x1aW50ICopCi17Ci0gICAg
cmV0dXJuIFZhbGlkYXRlR2VuT3JEZWxldGUoY29udGV4dCwgbik7CisgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVEZWxldGVSZW5kZXJidWZmZXJzKENvbnRleHQgKmNvbnRleHQs
IEdMaW50IG4sIGNvbnN0IEdMdWludCAqKQorYm9vbCBWYWxpZGF0ZUdldEludGVybmFsRm9ybWF0
aXYoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50
ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQogewotICAgIHJl
dHVybiBWYWxpZGF0ZUdlbk9yRGVsZXRlKGNvbnRleHQsIG4pOworICAgIHJldHVybiBWYWxpZGF0
ZUdldEludGVybmFsRm9ybWF0aXZCYXNlKGNvbnRleHQsIHRhcmdldCwgaW50ZXJuYWxmb3JtYXQs
IHBuYW1lLCBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIpOwogfQogCi1ib29sIFZhbGlkYXRlR2VuVGV4dHVyZXMoQ29udGV4dCAqY29u
dGV4dCwgR0xpbnQgbiwgR0x1aW50ICopCitib29sIFZhbGlkYXRlR2V0SW50ZXJuYWxGb3JtYXRp
dlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFt
cykKIHsKLSAgICByZXR1cm4gVmFsaWRhdGVHZW5PckRlbGV0ZShjb250ZXh0LCBuKTsKLX0KKyAg
ICBpZiAoIVZhbGlkYXRlUm9idXN0RW50cnlQb2ludChjb250ZXh0LCBidWZTaXplKSkKKyAgICB7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKLWJvb2wgVmFsaWRhdGVEZWxldGVUZXh0
dXJlcyhDb250ZXh0ICpjb250ZXh0LCBHTGludCBuLCBjb25zdCBHTHVpbnQgKikKLXsKLSAgICBy
ZXR1cm4gVmFsaWRhdGVHZW5PckRlbGV0ZShjb250ZXh0LCBuKTsKLX0KKyAgICBpZiAoIVZhbGlk
YXRlR2V0SW50ZXJuYWxGb3JtYXRpdkJhc2UoY29udGV4dCwgdGFyZ2V0LCBpbnRlcm5hbGZvcm1h
dCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQogCi1ib29sIFZhbGlkYXRlR2VuT3JEZWxldGUoQ29udGV4dCAqY29udGV4dCwgR0xp
bnQgbikKLXsKLSAgICBpZiAobiA8IDApCisgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEJ1ZmZlclNp
emUoY29udGV4dCwgYnVmU2l6ZSwgKmxlbmd0aCkpCiAgICAgewotICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAibiA8IDAiKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMuaAko
cmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3ZhbGlkYXRpb25FUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw2ICsxMyw3IEBACiAKICNpbmNs
dWRlIDxHTEVTMi9nbDIuaD4KICNpbmNsdWRlIDxHTEVTMy9nbDMuaD4KKyNpbmNsdWRlIDxHTEVT
My9nbDMxLmg+CiAKIG5hbWVzcGFjZSBlZ2wKIHsKQEAgLTIzLDE5ICsyNCwyMCBAQCBjbGFzcyBJ
bWFnZTsKIG5hbWVzcGFjZSBnbAogewogY2xhc3MgQ29udGV4dDsKK3N0cnVjdCBGb3JtYXQ7CiBj
bGFzcyBQcm9ncmFtOwogY2xhc3MgU2hhZGVyOwogY2xhc3MgVmFsaWRhdGlvbkNvbnRleHQ7CiAK
LWJvb2wgVmFsaWRDYXAoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNhcCk7CiBib29s
IFZhbGlkVGV4dHVyZVRhcmdldChjb25zdCBWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIHRhcmdldCk7CiBib29sIFZhbGlkVGV4dHVyZTJEVGFyZ2V0KGNvbnN0IFZhbGlkYXRpb25D
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0KTsKIGJvb2wgVmFsaWRUZXh0dXJlM0RUYXJn
ZXQoY29uc3QgVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQpOworYm9v
bCBWYWxpZFRleHR1cmVFeHRlcm5hbFRhcmdldChjb25zdCBWYWxpZGF0aW9uQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHRhcmdldCk7CiBib29sIFZhbGlkVGV4dHVyZTJERGVzdGluYXRpb25UYXJn
ZXQoY29uc3QgVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQpOwogYm9v
bCBWYWxpZFRleHR1cmUzRERlc3RpbmF0aW9uVGFyZ2V0KGNvbnN0IFZhbGlkYXRpb25Db250ZXh0
ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0KTsKIGJvb2wgVmFsaWRGcmFtZWJ1ZmZlclRhcmdldChH
TGVudW0gdGFyZ2V0KTsKLWJvb2wgVmFsaWRCdWZmZXJUYXJnZXQoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHRhcmdldCk7Ci1ib29sIFZhbGlkQnVmZmVyUGFyYW1ldGVyKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSk7Citib29sIFZhbGlkQnVmZmVyVGFyZ2V0KGNv
bnN0IFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0KTsKK2Jvb2wgVmFs
aWRCdWZmZXJQYXJhbWV0ZXIoY29uc3QgVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMZW51
bSBwbmFtZSwgR0xzaXplaSAqbnVtUGFyYW1zKTsKIGJvb2wgVmFsaWRNaXBMZXZlbChjb25zdCBW
YWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwpOwog
Ym9vbCBWYWxpZEltYWdlU2l6ZVBhcmFtZXRlcnMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCkBAIC00OCwxNyArNTAs
MjcgQEAgYm9vbCBWYWxpZENvbXByZXNzZWRJbWFnZVNpemUoY29uc3QgVmFsaQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgaGVpZ2h0KTsKK2Jvb2wgVmFsaWRJbWFnZURhdGFTaXplKFZhbGlkYXRp
b25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRleHR1
cmVUYXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFs
Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscywKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgaW1hZ2VTaXplKTsKKwogYm9vbCBWYWxpZFF1ZXJ5VHlwZShjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gcXVlcnlUeXBlKTsKIAogLy8gUmV0dXJucyB2YWxpZCBwcm9n
cmFtIGlmIGlkIGlzIGEgdmFsaWQgcHJvZ3JhbSBuYW1lCiAvLyBFcnJvcnMgSU5WQUxJRF9PUEVS
QVRJT04gaWYgdmFsaWQgc2hhZGVyIGlzIGdpdmVuIGFuZCByZXR1cm5zIE5VTEwKIC8vIEVycm9y
cyBJTlZBTElEX1ZBTFVFIG90aGVyd2lzZSBhbmQgcmV0dXJucyBOVUxMCi1Qcm9ncmFtICpHZXRW
YWxpZFByb2dyYW0oQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGlkKTsKK1Byb2dyYW0gKkdldFZh
bGlkUHJvZ3JhbShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGlkKTsKIAogLy8g
UmV0dXJucyB2YWxpZCBzaGFkZXIgaWYgaWQgaXMgYSB2YWxpZCBzaGFkZXIgbmFtZQogLy8gRXJy
b3JzIElOVkFMSURfT1BFUkFUSU9OIGlmIHZhbGlkIHByb2dyYW0gaXMgZ2l2ZW4gYW5kIHJldHVy
bnMgTlVMTAogLy8gRXJyb3JzIElOVkFMSURfVkFMVUUgb3RoZXJ3aXNlIGFuZCByZXR1cm5zIE5V
TEwKLVNoYWRlciAqR2V0VmFsaWRTaGFkZXIoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGlkKTsK
K1NoYWRlciAqR2V0VmFsaWRTaGFkZXIoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMdWlu
dCBpZCk7CiAKIGJvb2wgVmFsaWRhdGVBdHRhY2htZW50VGFyZ2V0KENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSBhdHRhY2htZW50KTsKIGJvb2wgVmFsaWRhdGVSZW5kZXJidWZmZXJTdG9yYWdlUGFy
YW1ldGVyc0Jhc2UoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xzaXplaSBzYW1w
bGVzLApAQCAtNjksNyArODEsNyBAQCBib29sIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZVBh
cmFtZXRlCiBib29sIFZhbGlkYXRlRnJhbWVidWZmZXJSZW5kZXJidWZmZXJQYXJhbWV0ZXJzKENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcmVuZGVyYnVm
ZmVydGFyZ2V0LCBHTHVpbnQgcmVuZGVyYnVmZmVyKTsKIAotYm9vbCBWYWxpZGF0ZUJsaXRGcmFt
ZWJ1ZmZlclBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVCbGl0RnJh
bWVidWZmZXJQYXJhbWV0ZXJzKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3JjWDAsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzcmNZMCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNyY1gxLApAQCAtODEsMTMgKzkzLDcgQEAgYm9v
bCBWYWxpZGF0ZUJsaXRGcmFtZWJ1ZmZlclBhcmFtZXRlcnMoQwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBtYXNrLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbHRlcik7CiAKLWJvb2wgVmFsaWRhdGVHZXRW
ZXJ0ZXhBdHRyaWJQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSk7Ci0K
LWJvb2wgVmFsaWRhdGVUZXhQYXJhbVBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHBuYW1lLCBHTGludCBwYXJhbSk7Ci0KLWJvb2wgVmFsaWRhdGVTYW1wbGVyT2JqZWN0UGFyYW1l
dGVyKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSk7Ci0KLWJvb2wgVmFsaWRhdGVSZWFk
UGl4ZWxzKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUmVhZFBpeGVscyhWYWxpZGF0
aW9uQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5LAogICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSB3aWR0aCwKQEAgLTk1LDYgKzEwMSwxNiBAQCBib29sIFZhbGlkYXRlUmVhZFBpeGVs
cyhDb250ZXh0ICpjb250ZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0
LAogICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHZvaWQgKnBpeGVscyk7Citib29sIFZhbGlkYXRlUmVhZFBpeGVsc1JvYnVzdEFO
R0xFKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRo
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHZvaWQgKnBpeGVscyk7CiBib29sIFZhbGlkYXRlUmVhZG5QaXhlbHNFWFQo
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCkBAIC0xMDQsNiArMTIwLDE2IEBA
IGJvb2wgVmFsaWRhdGVSZWFkblBpeGVsc0VYVChDb250ZXh0ICpjb24KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x2b2lkICpwaXhl
bHMpOworYm9vbCBWYWxpZGF0ZVJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoVmFsaWRhdGlvbkNvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdm9pZCAqZGF0YSk7CiAKIGJvb2wgVmFsaWRhdGVHZW5RdWVyaWVzRVhUKGdsOjpDb250ZXh0
ICpjb250ZXh0LCBHTHNpemVpIG4pOwogYm9vbCBWYWxpZGF0ZURlbGV0ZVF1ZXJpZXNFWFQoZ2w6
OkNvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbik7CkBAIC0xMTIsMTkgKzEzOCw2MSBAQCBib29s
IFZhbGlkYXRlQmVnaW5RdWVyeUVYVChDb250ZXh0ICpjb250CiBib29sIFZhbGlkYXRlRW5kUXVl
cnlCYXNlKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQpOwogYm9vbCBWYWxpZGF0ZUVu
ZFF1ZXJ5RVhUKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQpOwogYm9vbCBWYWxpZGF0
ZVF1ZXJ5Q291bnRlckVYVChDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaWQsIEdMZW51bSB0YXJn
ZXQpOwotYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5aXZCYXNlKENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSB0YXJnZXQsIEdMZW51bSBwbmFtZSk7Citib29sIFZhbGlkYXRlR2V0UXVlcnlpdkJhc2UoQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpICpudW1Q
YXJhbXMpOwogYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5aXZFWFQoQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVH
ZXRRdWVyeU9iamVjdFZhbHVlQmFzZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBH
TGVudW0gcG5hbWUpOworYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5aXZSb2J1c3RBTkdMRShDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVH
ZXRRdWVyeU9iamVjdFZhbHVlQmFzZShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgKm51bVBhcmFtcyk7CiBib29sIFZhbGlkYXRlR2V0UXVlcnlP
YmplY3RpdkVYVChDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0xp
bnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKENv
bnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgKnBhcmFtcyk7CiBib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aXZFWFQoQ29udGV4
dCAqY29udGV4dCwgR0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMdWludCAqcGFyYW1zKTsKK2Jv
b2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBh
cmFtcyk7CiBib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RpNjR2RVhUKENvbnRleHQgKmNvbnRl
eHQsIEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTGludDY0ICpwYXJhbXMpOworYm9vbCBWYWxp
ZGF0ZUdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3Ro
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50NjQgKnBh
cmFtcyk7CiBib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aTY0dkVYVChDb250ZXh0ICpjb250
ZXh0LCBHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0x1aW50NjQgKnBhcmFtcyk7Citib29sIFZh
bGlkYXRlR2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNp
emUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Kmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50NjQgKnBhcmFtcyk7CiAKIGJvb2wgVmFsaWRhdGVVbmlmb3JtKENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSB1bmlmb3JtVHlwZSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQpOwogYm9v
bCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1hdHJpeFR5
cGUsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSk7CiAKLWJvb2wgVmFsaWRhdGVTdGF0ZVF1ZXJ5KENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xlbnVtICpuYXRpdmVUeXBlLCB1bnNpZ25l
ZCBpbnQgKm51bVBhcmFtcyk7Citib29sIFZhbGlkYXRlU3RhdGVRdWVyeShWYWxpZGF0aW9uQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAqbmF0aXZlVHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCAqbnVtUGFyYW1zKTsKKworYm9vbCBWYWxpZGF0ZVJvYnVz
dFN0YXRlUXVlcnkoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
Km5hdGl2ZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
Km51bVBhcmFtcyk7CiAKIGJvb2wgVmFsaWRhdGVDb3B5VGV4SW1hZ2VQYXJhbWV0ZXJzQmFzZShW
YWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdGFyZ2V0LApAQCAtMTM5LDkgKzIwNywxMyBAQCBib29sIFZhbGlk
YXRlQ29weVRleEltYWdlUGFyYW1ldGVyc0Jhc2UoCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBib3JkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtICp0ZXh0dXJlSW50ZXJuYWxGb3JtYXRPdXQpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdCAqdGV4dHVyZUZvcm1hdE91dCk7
CiAKLWJvb2wgVmFsaWRhdGVEcmF3QXJyYXlzKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtb2Rl
LCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBwcmltY291bnQpOworYm9vbCBW
YWxpZGF0ZURyYXdBcnJheXMoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgcHJpbWNvdW50KTsKIGJvb2wgVmFsaWRhdGVEcmF3QXJy
YXlzSW5zdGFuY2VkKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwg
R0xzaXplaSBjb3VudCwgR0xzaXplaSBwcmltY291bnQpOwogYm9vbCBWYWxpZGF0ZURyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9kZSwgR0xpbnQgZmly
c3QsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgcHJpbWNvdW50KTsKIApAQCAtMTgzLDYgKzI1NSwy
NCBAQCBib29sIFZhbGlkYXRlR2V0VW5pZm9ybWZ2KENvbnRleHQgKmNvbnRlCiBib29sIFZhbGlk
YXRlR2V0VW5pZm9ybWl2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBwcm9ncmFtLCBHTGludCBs
b2NhdGlvbiwgR0xpbnQqIHBhcmFtcyk7CiBib29sIFZhbGlkYXRlR2V0blVuaWZvcm1mdkVYVChD
b250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkg
YnVmU2l6ZSwgR0xmbG9hdCogcGFyYW1zKTsKIGJvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybWl2RVhU
KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXpl
aSBidWZTaXplLCBHTGludCogcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRVbmlmb3JtZnZSb2J1
c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xm
bG9hdCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShDb250
ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVm
U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7
Citib29sIFZhbGlkYXRlR2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKTsKIAogYm9v
bCBWYWxpZGF0ZURpc2NhcmRGcmFtZWJ1ZmZlckJhc2UoQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHRhcmdldCwgR0xzaXplaSBudW1BdHRhY2htZW50cywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMsIGJvb2wgZGVmYXVsdEZyYW1l
YnVmZmVyKTsKQEAgLTIzNSw3ICszMjUsMTEgQEAgYm9vbCBWYWxpZGF0ZUNvcHlUZXhTdWJJbWFn
ZTJEKENvbnRleHQgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lk
dGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQpOwogCi1i
b29sIFZhbGlkYXRlR2V0QnVmZmVyUG9pbnRlcnZCYXNlKENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgdm9pZCAqKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0
QnVmZmVyUG9pbnRlcnZCYXNlKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
b2lkICoqcGFyYW1zKTsKIGJvb2wgVmFsaWRhdGVVbm1hcEJ1ZmZlckJhc2UoQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHRhcmdldCk7CiBib29sIFZhbGlkYXRlTWFwQnVmZmVyUmFuZ2VCYXNlKENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
YXJnZXQsCkBAIC0yNDcsNiArMzQxLDggQEAgYm9vbCBWYWxpZGF0ZUZsdXNoTWFwcGVkQnVmZmVy
UmFuZ2VCYXNlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
cHRyIG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpcHRyIGxlbmd0aCk7CiAKK2Jvb2wgVmFsaWRhdGVHZW5lcmF0ZU1pcG1hcChDb250ZXh0ICpj
b250ZXh0LCBHTGVudW0gdGFyZ2V0KTsKKwogYm9vbCBWYWxpZGF0ZUdlbkJ1ZmZlcnMoQ29udGV4
dCAqY29udGV4dCwgR0xpbnQgbiwgR0x1aW50ICpidWZmZXJzKTsKIGJvb2wgVmFsaWRhdGVEZWxl
dGVCdWZmZXJzKENvbnRleHQgKmNvbnRleHQsIEdMaW50IG4sIGNvbnN0IEdMdWludCAqYnVmZmVy
cyk7CiBib29sIFZhbGlkYXRlR2VuRnJhbWVidWZmZXJzKENvbnRleHQgKmNvbnRleHQsIEdMaW50
IG4sIEdMdWludCAqZnJhbWVidWZmZXJzKTsKQEAgLTI1OCw2ICszNTQsMjA2IEBAIGJvb2wgVmFs
aWRhdGVEZWxldGVUZXh0dXJlcyhDb250ZXh0ICpjb24KIAogYm9vbCBWYWxpZGF0ZUdlbk9yRGVs
ZXRlKENvbnRleHQgKmNvbnRleHQsIEdMaW50IG4pOwogCitib29sIFZhbGlkYXRlRW5hYmxlKENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSBjYXApOworYm9vbCBWYWxpZGF0ZURpc2FibGUoQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIGNhcCk7Citib29sIFZhbGlkYXRlSXNFbmFibGVkKENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSBjYXApOworCitib29sIFZhbGlkYXRlUm9idXN0RW50cnlQb2ludChW
YWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBidWZTaXplKTsKK2Jvb2wgVmFsaWRh
dGVSb2J1c3RCdWZmZXJTaXplKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTHNpemVpIGJ1
ZlNpemUsIEdMc2l6ZWkgbnVtUGFyYW1zKTsKKworYm9vbCBWYWxpZGF0ZUdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcml2KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGF0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgKm51bVBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShWYWxpZGF0aW9uQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKm51bVBhcmFtcyk7
CisKK2Jvb2wgVmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0ZXJpdihWYWxpZGF0aW9uQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRh
dGVHZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKFZhbGlkYXRpb25Db250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOworCitib29sIFZhbGlkYXRlR2V0QnVmZmVyUGFy
YW1ldGVyaTY0dihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludDY0ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBhcmFtZXRl
cmk2NHZSb2J1c3RBTkdMRShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1
ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQ2NCAqcGFyYW1zKTsKKworYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1pdihDb250
ZXh0ICpjb250ZXh0LCBHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHBuYW1lLCBHTHNpemVpICpudW1Q
YXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1pdlJvYnVzdEFOR0xFKENvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dy
YW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpudW1QYXJhbXMpOwor
Citib29sIFZhbGlkYXRlR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYoQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsK
K2Jvb2wgVmFsaWRhdGVHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
KnBhcmFtcyk7CisKK2Jvb2wgVmFsaWRhdGVHZXRTaGFkZXJpdihDb250ZXh0ICpjb250ZXh0LCBH
THVpbnQgc2hhZGVyLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0
ZUdldFNoYWRlcml2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzaGFkZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCAqcGFyYW1zKTsKKworYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFtZXRlcmZ2KENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFy
YW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xmbG9hdCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJpdihDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMp
OworYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCAqcGFyYW1zKTsKKworYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlcmYoQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKK2Jvb2wg
VmFsaWRhdGVUZXhQYXJhbWV0ZXJmdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBH
TGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlVGV4UGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlVGV4
UGFyYW1ldGVyaShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUs
IEdMaW50IHBhcmFtKTsKK2Jvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJpdihDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwor
Ym9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsK
KworYm9vbCBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJmdihDb250ZXh0ICpjb250ZXh0LCBH
THVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOworYm9vbCBWYWxp
ZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNhbXBs
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFNhbXBsZXJQYXJh
bWV0ZXJpdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBH
TGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBzYW1wbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7CisKK2Jv
b2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyZihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgc2Ft
cGxlciwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKK2Jvb2wgVmFsaWRhdGVTYW1wbGVy
UGFyYW1ldGVyZnYoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IHNhbXBsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9h
dCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShD
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBzYW1wbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVTYW1wbGVy
UGFyYW1ldGVyaShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1l
LCBHTGludCBwYXJhbSk7Citib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcml2KENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzYW1wbGVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxp
ZGF0ZVNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNhbXBsZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGlu
dCAqcGFyYW1zKTsKKworYm9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYmZ2KENvbnRleHQgKmNv
bnRleHQsIEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOworYm9v
bCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxl
bmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQg
KnBhcmFtcyk7CisKK2Jvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJpdihDb250ZXh0ICpjb250
ZXh0LCBHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Citib29sIFZh
bGlkYXRlR2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3Ro
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFt
cyk7CisKK2Jvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihDb250ZXh0ICpjb250
ZXh0LCBHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgdm9pZCAqKnBvaW50ZXIpOworYm9vbCBW
YWxpZGF0ZUdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipwb2ludGVyKTsKKworYm9vbCBWYWxpZGF0
ZUdldFZlcnRleEF0dHJpYklpdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMZW51
bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliSWl2
Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7CisKK2Jvb2wgVmFsaWRh
dGVHZXRWZXJ0ZXhBdHRyaWJJdWl2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgR0xl
bnVtIHBuYW1lLCBHTHVpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmli
SXVpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpOworCiti
b29sIFZhbGlkYXRlR2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOworYm9vbCBW
YWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFt
cyk7CisKK2Jvb2wgVmFsaWRhdGVHZXRJbnRlcm5hbEZvcm1hdGl2KENvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0SW50ZXJuYWxGb3Jt
YXRpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBh
cmFtcyk7CisKIC8vIEVycm9yIG1lc3NhZ2VzIHNoYXJlZCBoZXJlIGZvciB1c2UgaW4gdGVzdGlu
Zy4KIGV4dGVybiBjb25zdCBjaGFyICpnX0V4Y2VlZHNNYXhFbGVtZW50RXJyb3JNZXNzYWdlOwog
fSAgLy8gbmFtZXNwYWNlIGdsCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvdmFsaWRhdGlvbkVTX3VuaXR0ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTX3VuaXR0ZXN0LmNwcAkocmV2
aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Zh
bGlkYXRpb25FU191bml0dGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwLDcgKzEwLDcgQEAK
ICNpbmNsdWRlIDxnbW9jay9nbW9jay5oPgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAKLSNp
bmNsdWRlICJsaWJBTkdMRS9EYXRhLmgiCisjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dFN0YXRl
LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvRnJhbWVidWZmZXJJbXBsX21vY2suaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9Qcm9ncmFtSW1wbF9tb2NrLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvVGV4dHVyZUltcGxfbW9jay5oIgpAQCAtMjYsMTkgKzI2LDEy
IEBAIHVzaW5nIHRlc3Rpbmc6OlJldHVybjsKIG5hbWVzcGFjZQogewogCi1jbGFzcyBNb2NrRmFj
dG9yeSA6IHB1YmxpYyBOdWxsRmFjdG9yeQotewotICBwdWJsaWM6Ci0gICAgTU9DS19NRVRIT0Qx
KGNyZWF0ZUZyYW1lYnVmZmVyLCBGcmFtZWJ1ZmZlckltcGwgKihjb25zdCBnbDo6RnJhbWVidWZm
ZXI6OkRhdGEgJikpOwotICAgIE1PQ0tfTUVUSE9EMShjcmVhdGVQcm9ncmFtLCBQcm9ncmFtSW1w
bCAqKGNvbnN0IGdsOjpQcm9ncmFtOjpEYXRhICYpKTsKLSAgICBNT0NLX01FVEhPRDEoY3JlYXRl
VmVydGV4QXJyYXksIFZlcnRleEFycmF5SW1wbCAqKGNvbnN0IGdsOjpWZXJ0ZXhBcnJheTo6RGF0
YSAmKSk7Ci19OwotCiBjbGFzcyBNb2NrVmFsaWRhdGlvbkNvbnRleHQgOiBwdWJsaWMgVmFsaWRh
dGlvbkNvbnRleHQKIHsKICAgcHVibGljOgotICAgIE1vY2tWYWxpZGF0aW9uQ29udGV4dChHTGlu
dCBjbGllbnRWZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdGF0ZSAm
c3RhdGUsCisgICAgTW9ja1ZhbGlkYXRpb25Db250ZXh0KEdMaW50IG1ham9yQ2xpZW50VmVyc2lv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbWlub3JDbGllbnRWZXJzaW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSAqc3RhdGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IENhcHMgJmNhcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRleHR1cmVDYXBzTWFwICZ0ZXh0dXJlQ2FwcywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgRXh0ZW5zaW9ucyAmZXh0ZW5zaW9ucywKQEAgLTQ2LDE4ICszOSwyMCBAQCBjbGFz
cyBNb2NrVmFsaWRhdGlvbkNvbnRleHQgOiBwdWJsaWMgVmFsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IExpbWl0YXRpb25zICZsaW1pdGF0aW9ucywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBza2lwVmFsaWRhdGlvbik7CiAKLSAgICBNT0NLX01FVEhPRDEocmVjb3Jk
RXJyb3IsIHZvaWQoY29uc3QgRXJyb3IgJikpOworICAgIE1PQ0tfTUVUSE9EMShoYW5kbGVFcnJv
ciwgdm9pZChjb25zdCBFcnJvciAmKSk7CiB9OwogCi1Nb2NrVmFsaWRhdGlvbkNvbnRleHQ6Ok1v
Y2tWYWxpZGF0aW9uQ29udGV4dChHTGludCBjbGllbnRWZXJzaW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RhdGUgJnN0YXRlLAorTW9ja1Zh
bGlkYXRpb25Db250ZXh0OjpNb2NrVmFsaWRhdGlvbkNvbnRleHQoR0xpbnQgbWFqb3JDbGllbnRW
ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbWlub3JDbGllbnRWZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU3RhdGUgKnN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgQ2FwcyAmY2FwcywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRleHR1cmVDYXBzTWFwICZ0ZXh0dXJlQ2FwcywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEV4dGVu
c2lvbnMgJmV4dGVuc2lvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBSZXNvdXJjZU1hbmFnZXIgKnJlc291cmNlTWFuYWdlciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExpbWl0YXRpb25zICZs
aW1pdGF0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgc2tpcFZhbGlkYXRpb24pCi0gICAgOiBWYWxpZGF0aW9uQ29udGV4dChjbGllbnRWZXJz
aW9uLAorICAgIDogVmFsaWRhdGlvbkNvbnRleHQobWFqb3JDbGllbnRWZXJzaW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgbWlub3JDbGllbnRWZXJzaW9uLAogICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjYXBzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgdGV4dHVyZUNhcHMsCkBAIC03Nyw3ICs3Miw3IEBAIFRFU1QoVmFsaWRhdGlv
bkVTVGVzdCwgRHJhd0VsZW1lbnRzV2l0aE0KICAgICBhdXRvIHByb2dyYW1JbXBsICAgICA9IE1h
a2VQcm9ncmFtTW9jaygpOwogCiAgICAgLy8gVE9ETyhqbWFkaWxsKTogR2VuZXJhbGl6ZSBzb21l
IG9mIHRoaXMgY29kZSBzbyB3ZSBjYW4gcmUtdXNlIGl0IGZvciBvdGhlciB0ZXN0cy4KLSAgICBO
aWNlTW9jazxNb2NrRmFjdG9yeT4gbW9ja0ZhY3Rvcnk7CisgICAgTmljZU1vY2s8TW9ja0dMRmFj
dG9yeT4gbW9ja0ZhY3Rvcnk7CiAgICAgRVhQRUNUX0NBTEwobW9ja0ZhY3RvcnksIGNyZWF0ZUZy
YW1lYnVmZmVyKF8pKS5XaWxsT25jZShSZXR1cm4oZnJhbWVidWZmZXJJbXBsKSk7CiAgICAgRVhQ
RUNUX0NBTEwobW9ja0ZhY3RvcnksIGNyZWF0ZVByb2dyYW0oXykpLldpbGxPbmNlKFJldHVybihw
cm9ncmFtSW1wbCkpOwogICAgIEVYUEVDVF9DQUxMKG1vY2tGYWN0b3J5LCBjcmVhdGVWZXJ0ZXhB
cnJheShfKSkuV2lsbE9uY2UoUmV0dXJuKG51bGxwdHIpKTsKQEAgLTkyLDEzICs4NywxNCBAQCBU
RVNUKFZhbGlkYXRpb25FU1Rlc3QsIERyYXdFbGVtZW50c1dpdGhNCiAgICAgY2Fwcy5tYXhFbGVt
ZW50SW5kZXggICAgID0gMTAwOwogICAgIGNhcHMubWF4RHJhd0J1ZmZlcnMgICAgICA9IDE7CiAg
ICAgY2Fwcy5tYXhDb2xvckF0dGFjaG1lbnRzID0gMTsKLSAgICBzdGF0ZS5pbml0aWFsaXplKGNh
cHMsIGV4dGVuc2lvbnMsIDMsIGZhbHNlKTsKKyAgICBzdGF0ZS5pbml0aWFsaXplKGNhcHMsIGV4
dGVuc2lvbnMsIDMsIGZhbHNlLCB0cnVlKTsKIAogICAgIE5pY2VNb2NrPE1vY2tUZXh0dXJlSW1w
bD4gKnRleHR1cmVJbXBsID0gbmV3IE5pY2VNb2NrPE1vY2tUZXh0dXJlSW1wbD4oKTsKKyAgICBF
WFBFQ1RfQ0FMTChtb2NrRmFjdG9yeSwgY3JlYXRlVGV4dHVyZShfKSkuV2lsbE9uY2UoUmV0dXJu
KHRleHR1cmVJbXBsKSk7CiAgICAgRVhQRUNUX0NBTEwoKnRleHR1cmVJbXBsLCBzZXRTdG9yYWdl
KF8sIF8sIF8sIF8pKS5XaWxsT25jZShSZXR1cm4oRXJyb3IoR0xfTk9fRVJST1IpKSk7CiAgICAg
RVhQRUNUX0NBTEwoKnRleHR1cmVJbXBsLCBkZXN0cnVjdG9yKCkpLlRpbWVzKDEpLlJldGlyZXNP
blNhdHVyYXRpb24oKTsKIAotICAgIFRleHR1cmUgKnRleHR1cmUgPSBuZXcgVGV4dHVyZSh0ZXh0
dXJlSW1wbCwgMCwgR0xfVEVYVFVSRV8yRCk7CisgICAgVGV4dHVyZSAqdGV4dHVyZSA9IG5ldyBU
ZXh0dXJlKCZtb2NrRmFjdG9yeSwgMCwgR0xfVEVYVFVSRV8yRCk7CiAgICAgdGV4dHVyZS0+YWRk
UmVmKCk7CiAgICAgdGV4dHVyZS0+c2V0U3RvcmFnZShHTF9URVhUVVJFXzJELCAxLCBHTF9SR0JB
OCwgRXh0ZW50cygxLCAxLCAwKSk7CiAKQEAgLTExMiwxMiArMTA4LDEyIEBAIFRFU1QoVmFsaWRh
dGlvbkVTVGVzdCwgRHJhd0VsZW1lbnRzV2l0aE0KICAgICBzdGF0ZS5zZXREcmF3RnJhbWVidWZm
ZXJCaW5kaW5nKGZyYW1lYnVmZmVyKTsKICAgICBzdGF0ZS5zZXRQcm9ncmFtKHByb2dyYW0pOwog
Ci0gICAgTmljZU1vY2s8TW9ja1ZhbGlkYXRpb25Db250ZXh0PiB0ZXN0Q29udGV4dCgzLCBzdGF0
ZSwgY2FwcywgdGV4dHVyZUNhcHMsIGV4dGVuc2lvbnMsIG51bGxwdHIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdGF0aW9ucywgZmFsc2UpOwor
ICAgIE5pY2VNb2NrPE1vY2tWYWxpZGF0aW9uQ29udGV4dD4gdGVzdENvbnRleHQoMywgMCwgJnN0
YXRlLCBjYXBzLCB0ZXh0dXJlQ2FwcywgZXh0ZW5zaW9ucywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIGxpbWl0YXRpb25zLCBmYWxzZSk7
CiAKICAgICAvLyBTZXQgdGhlIGV4cGVjdGF0aW9uIGZvciB0aGUgdmFsaWRhdGlvbiBlcnJvciBo
ZXJlLgogICAgIEVycm9yIGV4cGVjdGVkRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGdfRXhj
ZWVkc01heEVsZW1lbnRFcnJvck1lc3NhZ2UpOwotICAgIEVYUEVDVF9DQUxMKHRlc3RDb250ZXh0
LCByZWNvcmRFcnJvcihleHBlY3RlZEVycm9yKSkuVGltZXMoMSk7CisgICAgRVhQRUNUX0NBTEwo
dGVzdENvbnRleHQsIGhhbmRsZUVycm9yKGV4cGVjdGVkRXJyb3IpKS5UaW1lcygxKTsKIAogICAg
IC8vIENhbGwgb25jZSB3aXRoIG1heGltdW0gaW5kZXgsIGFuZCBvbmNlIHdpdGggYW4gZXhjZXNz
aXZlIGluZGV4LgogICAgIEdMdWludCBpbmRleERhdGFbXSA9IHswLCAxLCBzdGF0aWNfY2FzdDxH
THVpbnQ+KGNhcHMubWF4RWxlbWVudEluZGV4IC0gMSksCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvQnVmZmVySW1wbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9CdWZmZXJJbXBs
LmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9CdWZmZXJJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDkgKzIzLDEy
IEBAIGNsYXNzIEJ1ZmZlckltcGwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgcHVibGljOgogICAg
IHZpcnR1YWwgfkJ1ZmZlckltcGwoKSB7IH0KIAotICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldERh
dGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IHNpemUsIEdMZW51bSB1c2FnZSkgPSAwOwotICAg
IHZpcnR1YWwgZ2w6OkVycm9yIHNldFN1YkRhdGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IHNp
emUsIHNpemVfdCBvZmZzZXQpID0gMDsKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBjb3B5U3ViRGF0
YShCdWZmZXJJbXBsKiBzb3VyY2UsIEdMaW50cHRyIHNvdXJjZU9mZnNldCwgR0xpbnRwdHIgZGVz
dE9mZnNldCwgR0xzaXplaXB0ciBzaXplKSA9IDA7CisgICAgdmlydHVhbCBnbDo6RXJyb3Igc2V0
RGF0YShHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgR0xlbnVt
IHVzYWdlKSAgICAgPSAwOworICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldFN1YkRhdGEoR0xlbnVt
IHRhcmdldCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCBvZmZzZXQpID0g
MDsKKyAgICB2aXJ0dWFsIGdsOjpFcnJvciBjb3B5U3ViRGF0YShCdWZmZXJJbXBsICpzb3VyY2Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgc291cmNlT2Zmc2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIGRlc3RPZmZzZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplKSA9IDA7
CiAgICAgdmlydHVhbCBnbDo6RXJyb3IgbWFwKEdMZW51bSBhY2Nlc3MsIEdMdm9pZCAqKm1hcFB0
cikgPSAwOwogICAgIHZpcnR1YWwgZ2w6OkVycm9yIG1hcFJhbmdlKHNpemVfdCBvZmZzZXQsIHNp
emVfdCBsZW5ndGgsIEdMYml0ZmllbGQgYWNjZXNzLCBHTHZvaWQgKiptYXBQdHIpID0gMDsKICAg
ICB2aXJ0dWFsIGdsOjpFcnJvciB1bm1hcChHTGJvb2xlYW4gKnJlc3VsdCkgPSAwOwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0J1ZmZlckltcGxf
bW9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9CdWZmZXJJbXBsX21vY2suaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0J1ZmZlckltcGxfbW9jay5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMSw4ICsyMSw4IEBAIGNsYXNzIE1vY2tCdWZmZXJJbXBsIDog
cHVibGljIEJ1ZmZlckltcGwKICAgcHVibGljOgogICAgIH5Nb2NrQnVmZmVySW1wbCgpIHsgZGVz
dHJ1Y3RvcigpOyB9CiAKLSAgICBNT0NLX01FVEhPRDMoc2V0RGF0YSwgZ2w6OkVycm9yKGNvbnN0
IHZvaWQqLCBzaXplX3QsIEdMZW51bSkpOwotICAgIE1PQ0tfTUVUSE9EMyhzZXRTdWJEYXRhLCBn
bDo6RXJyb3IoY29uc3Qgdm9pZCosIHNpemVfdCwgc2l6ZV90KSk7CisgICAgTU9DS19NRVRIT0Q0
KHNldERhdGEsIGdsOjpFcnJvcihHTGVudW0sIGNvbnN0IHZvaWQgKiwgc2l6ZV90LCBHTGVudW0p
KTsKKyAgICBNT0NLX01FVEhPRDQoc2V0U3ViRGF0YSwgZ2w6OkVycm9yKEdMZW51bSwgY29uc3Qg
dm9pZCAqLCBzaXplX3QsIHNpemVfdCkpOwogICAgIE1PQ0tfTUVUSE9ENChjb3B5U3ViRGF0YSwg
Z2w6OkVycm9yKEJ1ZmZlckltcGwgKiwgR0xpbnRwdHIsIEdMaW50cHRyLCBHTHNpemVpcHRyKSk7
CiAgICAgTU9DS19NRVRIT0QyKG1hcCwgZ2w6OkVycm9yKEdMZW51bSwgR0x2b2lkICoqKSk7CiAg
ICAgTU9DS19NRVRIT0Q0KG1hcFJhbmdlLCBnbDo6RXJyb3Ioc2l6ZV90LCBzaXplX3QsIEdMYml0
ZmllbGQsIEdMdm9pZCAqKikpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL0NvbnRleHRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvQ29udGV4dEltcGwuY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9Db250ZXh0SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTMgQEAKKy8vCisv
LyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisvLyBDb250ZXh0SW1wbDoKKy8vICAgSW1wbGVtZW50YXRpb24tc3BlY2lmaWMgZnVuY3Rp
b25hbGl0eSBhc3NvY2lhdGVkIHdpdGggYSBHTCBDb250ZXh0LgorLy8KKworI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL0NvbnRleHRJbXBsLmgiCisKK25hbWVzcGFjZSByeAoreworCitDb250
ZXh0SW1wbDo6Q29udGV4dEltcGwoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmc3RhdGUpIDogbVN0
YXRlKHN0YXRlKQoreworfQorCitDb250ZXh0SW1wbDo6fkNvbnRleHRJbXBsKCkKK3sKK30KKwor
dm9pZCBDb250ZXh0SW1wbDo6c3RlbmNpbEZpbGxQYXRoKGNvbnN0IGdsOjpQYXRoICpwYXRoLCBH
TGVudW0gZmlsbE1vZGUsIEdMdWludCBtYXNrKQoreworICAgIFVOUkVBQ0hBQkxFKCk7Cit9CisK
K3ZvaWQgQ29udGV4dEltcGw6OnN0ZW5jaWxTdHJva2VQYXRoKGNvbnN0IGdsOjpQYXRoICpwYXRo
LCBHTGludCByZWZlcmVuY2UsIEdMdWludCBtYXNrKQoreworICAgIFVOUkVBQ0hBQkxFKCk7Cit9
CisKK3ZvaWQgQ29udGV4dEltcGw6OmNvdmVyRmlsbFBhdGgoY29uc3QgZ2w6OlBhdGggKnBhdGgs
IEdMZW51bSBjb3Zlck1vZGUpCit7CisgICAgVU5SRUFDSEFCTEUoKTsKK30KKwordm9pZCBDb250
ZXh0SW1wbDo6Y292ZXJTdHJva2VQYXRoKGNvbnN0IGdsOjpQYXRoICpwYXRoLCBHTGVudW0gY292
ZXJNb2RlKQoreworICAgIFVOUkVBQ0hBQkxFKCk7Cit9CisKK3ZvaWQgQ29udGV4dEltcGw6OnN0
ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aChjb25zdCBnbDo6UGF0aCAqcGF0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSkKK3sK
KyAgICBVTlJFQUNIQUJMRSgpOworfQorCit2b2lkIENvbnRleHRJbXBsOjpzdGVuY2lsVGhlbkNv
dmVyU3Ryb2tlUGF0aChjb25zdCBnbDo6UGF0aCAqcGF0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSkKK3sKKyAg
ICBVTlJFQUNIQUJMRSgpOworfQorCit2b2lkIENvbnRleHRJbXBsOjpjb3ZlckZpbGxQYXRoSW5z
dGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRy
YW5zZm9ybVZhbHVlcykKK3sKKyAgICBVTlJFQUNIQUJMRSgpOworfQorCit2b2lkIENvbnRleHRJ
bXBsOjpjb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGgg
Kj4gJnBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBjb3Zlck1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQoreworICAgIFVOUkVB
Q0hBQkxFKCk7Cit9CisKK3ZvaWQgQ29udGV4dEltcGw6OnN0ZW5jaWxGaWxsUGF0aEluc3RhbmNl
ZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRy
YW5zZm9ybVZhbHVlcykKK3sKKyAgICBVTlJFQUNIQUJMRSgpOworfQorCit2b2lkIENvbnRleHRJ
bXBsOjpzdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0
aCAqPiAmcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCByZWZlcmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQorewor
ICAgIFVOUkVBQ0hBQkxFKCk7Cit9CisKK3ZvaWQgQ29udGV4dEltcGw6OnN0ZW5jaWxUaGVuQ292
ZXJGaWxsUGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGNvdmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQoreworICAgIFVOUkVBQ0hBQkxFKCk7Cit9CisKK3Zv
aWQgQ29udGV4dEltcGw6OnN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkKGNvbnN0
IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZl
cmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNm
b3JtVmFsdWVzKQoreworICAgIFVOUkVBQ0hBQkxFKCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBy
eApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Nv
bnRleHRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL0NvbnRleHRJbXBsLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0NvbnRleHRJbXBsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxNTMgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBDb250ZXh0SW1wbDoKKy8v
ICAgSW1wbGVtZW50YXRpb24tc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSBhc3NvY2lhdGVkIHdpdGgg
YSBHTCBDb250ZXh0LgorLy8KKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9DT05URVhUSU1Q
TF9IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9DT05URVhUSU1QTF9IXworCisjaW5jbHVk
ZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9Db250ZXh0U3RhdGUuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9HTElt
cGxGYWN0b3J5LmgiCisKK25hbWVzcGFjZSBnbAoreworY2xhc3MgUGF0aDsKK30KKworbmFtZXNw
YWNlIHJ4Cit7CitjbGFzcyBDb250ZXh0SW1wbCA6IHB1YmxpYyBHTEltcGxGYWN0b3J5Cit7Cisg
IHB1YmxpYzoKKyAgICBDb250ZXh0SW1wbChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZzdGF0ZSk7
CisgICAgdmlydHVhbCB+Q29udGV4dEltcGwoKTsKKworICAgIHZpcnR1YWwgZ2w6OkVycm9yIGlu
aXRpYWxpemUoKSA9IDA7CisKKyAgICAvLyBGbHVzaCBhbmQgZmluaXNoLgorICAgIHZpcnR1YWwg
Z2w6OkVycm9yIGZsdXNoKCkgPSAwOworICAgIHZpcnR1YWwgZ2w6OkVycm9yIGZpbmlzaCgpID0g
MDsKKworICAgIC8vIERyYXdpbmcgbWV0aG9kcy4KKyAgICB2aXJ0dWFsIGdsOjpFcnJvciBkcmF3
QXJyYXlzKEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCkgPSAwOworICAg
IHZpcnR1YWwgZ2w6OkVycm9yIGRyYXdBcnJheXNJbnN0YW5jZWQoR0xlbnVtIG1vZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBmaXJzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlQ291
bnQpID0gMDsKKworICAgIHZpcnR1YWwgZ2w6OkVycm9yIGRyYXdFbGVtZW50cyhHTGVudW0gbW9k
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4UmFu
Z2UpID0gMDsKKyAgICB2aXJ0dWFsIGdsOjpFcnJvciBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0xl
bnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkgPSAw
OworICAgIHZpcnR1YWwgZ2w6OkVycm9yIGRyYXdSYW5nZUVsZW1lbnRzKEdMZW51bSBtb2RlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZW5kLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpJbmRleFJhbmdl
ICZpbmRleFJhbmdlKSA9IDA7CisKKyAgICAvLyBDSFJPTUlVTV9wYXRoX3JlbmRlcmluZyBwYXRo
IGRyYXdpbmcgbWV0aG9kcy4KKyAgICB2aXJ0dWFsIHZvaWQgc3RlbmNpbEZpbGxQYXRoKGNvbnN0
IGdsOjpQYXRoICpwYXRoLCBHTGVudW0gZmlsbE1vZGUsIEdMdWludCBtYXNrKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc3RlbmNpbFN0cm9rZVBhdGgoY29uc3QgZ2w6OlBhdGggKnBhdGgsIEdMaW50IHJl
ZmVyZW5jZSwgR0x1aW50IG1hc2spOworICAgIHZpcnR1YWwgdm9pZCBjb3ZlckZpbGxQYXRoKGNv
bnN0IGdsOjpQYXRoICpwYXRoLCBHTGVudW0gY292ZXJNb2RlKTsKKyAgICB2aXJ0dWFsIHZvaWQg
Y292ZXJTdHJva2VQYXRoKGNvbnN0IGdsOjpQYXRoICpwYXRoLCBHTGVudW0gY292ZXJNb2RlKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoKGNvbnN0IGdsOjpQYXRo
ICpwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGZpbGxNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gY292ZXJNb2RlKTsKKworICAgIHZpcnR1YWwgdm9pZCBzdGVuY2lsVGhlbkNvdmVyU3Ryb2tl
UGF0aChjb25zdCBnbDo6UGF0aCAqcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSk7CisKKyAgICB2aXJ0dWFsIHZv
aWQgY292ZXJGaWxsUGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAm
cGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNv
dmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOworICAgIHZpcnR1YWwgdm9pZCBjb3ZlclN0
cm9rZVBhdGhJbnN0YW5jZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9k
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFu
c2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RlbmNpbEZp
bGxQYXRoSW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9y
bVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOworICAgIHZpcnR1YWwgdm9pZCBzdGVuY2lsU3Ryb2tl
UGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ss
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFu
c2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOworICAgIHZpcnR1YWwgdm9pZCBzdGVuY2ls
VGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4g
JnBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGNvdmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOworICAgIHZpcnR1YWwgdm9pZCBzdGVuY2lsVGhl
bkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAm
cGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zv
cm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOworCisgICAgLy8gRGV2aWNlIGxv
c3MKKyAgICB2aXJ0dWFsIEdMZW51bSBnZXRSZXNldFN0YXR1cygpID0gMDsKKworICAgIC8vIFZl
bmRvciBhbmQgZGVzY3JpcHRpb24gc3RyaW5ncy4KKyAgICB2aXJ0dWFsIHN0ZDo6c3RyaW5nIGdl
dFZlbmRvclN0cmluZygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6c3RyaW5nIGdldFJl
bmRlcmVyRGVzY3JpcHRpb24oKSBjb25zdCA9IDA7CisKKyAgICAvLyBEZWJ1ZyBtYXJrZXJzLgor
ICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRFdmVudE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3Qg
Y2hhciAqbWFya2VyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHB1c2hHcm91cE1hcmtlcihHTHNp
emVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBv
cEdyb3VwTWFya2VyKCkgPSAwOworCisgICAgLy8gU3RhdGUgc3luYyB3aXRoIGRpcnR5IGJpdHMu
CisgICAgdmlydHVhbCB2b2lkIHN5bmNTdGF0ZShjb25zdCBnbDo6U3RhdGUgJnN0YXRlLCBjb25z
dCBnbDo6U3RhdGU6OkRpcnR5Qml0cyAmZGlydHlCaXRzKSA9IDA7CisKKyAgICAvLyBEaXNqb2lu
dCB0aW1lciBxdWVyaWVzCisgICAgdmlydHVhbCBHTGludCBnZXRHUFVEaXNqb2ludCgpID0gMDsK
KyAgICB2aXJ0dWFsIEdMaW50NjQgZ2V0VGltZXN0YW1wKCkgPSAwOworCisgICAgLy8gQ29udGV4
dCBzd2l0Y2hpbmcKKyAgICB2aXJ0dWFsIHZvaWQgb25NYWtlQ3VycmVudChjb25zdCBnbDo6Q29u
dGV4dFN0YXRlICZkYXRhKSA9IDA7CisKKyAgICAvLyBOYXRpdmUgY2FwYWJpbGl0aWVzLCB1bm1v
ZGlmaWVkIGJ5IGdsOjpDb250ZXh0LgorICAgIHZpcnR1YWwgY29uc3QgZ2w6OkNhcHMgJmdldE5h
dGl2ZUNhcHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBnbDo6VGV4dHVyZUNhcHNN
YXAgJmdldE5hdGl2ZVRleHR1cmVDYXBzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3Qg
Z2w6OkV4dGVuc2lvbnMgJmdldE5hdGl2ZUV4dGVuc2lvbnMoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBjb25zdCBnbDo6TGltaXRhdGlvbnMgJmdldE5hdGl2ZUxpbWl0YXRpb25zKCkgY29uc3Qg
PSAwOworCisgICAgY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZ2V0Q29udGV4dFN0YXRlKCkgeyBy
ZXR1cm4gbVN0YXRlOyB9CisgICAgaW50IGdldENsaWVudE1ham9yVmVyc2lvbigpIGNvbnN0IHsg
cmV0dXJuIG1TdGF0ZS5nZXRDbGllbnRNYWpvclZlcnNpb24oKTsgfQorICAgIGludCBnZXRDbGll
bnRNaW5vclZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtU3RhdGUuZ2V0Q2xpZW50TWlub3JWZXJz
aW9uKCk7IH0KKyAgICBjb25zdCBnbDo6U3RhdGUgJmdldEdMU3RhdGUoKSBjb25zdCB7IHJldHVy
biBtU3RhdGUuZ2V0U3RhdGUoKTsgfQorICAgIGNvbnN0IGdsOjpDYXBzICZnZXRDYXBzKCkgY29u
c3QgeyByZXR1cm4gbVN0YXRlLmdldENhcHMoKTsgfQorICAgIGNvbnN0IGdsOjpUZXh0dXJlQ2Fw
c01hcCAmZ2V0VGV4dHVyZUNhcHMoKSBjb25zdCB7IHJldHVybiBtU3RhdGUuZ2V0VGV4dHVyZUNh
cHMoKTsgfQorICAgIGNvbnN0IGdsOjpFeHRlbnNpb25zICZnZXRFeHRlbnNpb25zKCkgY29uc3Qg
eyByZXR1cm4gbVN0YXRlLmdldEV4dGVuc2lvbnMoKTsgfQorICAgIGNvbnN0IGdsOjpMaW1pdGF0
aW9ucyAmZ2V0TGltaXRhdGlvbnMoKSBjb25zdCB7IHJldHVybiBtU3RhdGUuZ2V0TGltaXRhdGlv
bnMoKTsgfQorCisgIHByb3RlY3RlZDoKKyAgICBjb25zdCBnbDo6Q29udGV4dFN0YXRlICZtU3Rh
dGU7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5E
RVJFUl9DT05URVhUSU1QTF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL0Rpc3BsYXlJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Rpc3BsYXlJbXBsLmgJKHJldmlzaW9u
IDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9EaXNwbGF5SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw3ICsxMyw5IEBACiAjaW5jbHVk
ZSAibGliQU5HTEUvQ2Fwcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0NvbmZpZy5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL0Vycm9yLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvUmVuZGVy
ZXIuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9FR0xJbXBsRmFjdG9yeS5oIgorI2lu
Y2x1ZGUgImxpYkFOR0xFL1N0cmVhbS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1ZlcnNpb24uaCIK
IAogI2luY2x1ZGUgPHNldD4KICNpbmNsdWRlIDx2ZWN0b3I+CkBAIC0zOCw5ICs0MCw5IEBAIGNs
YXNzIFN1cmZhY2VJbXBsOwogY2xhc3MgSW1hZ2VJbXBsOwogc3RydWN0IENvbmZpZ0Rlc2M7CiBj
bGFzcyBEZXZpY2VJbXBsOwotY2xhc3MgU3RyZWFtSW1wbDsKK2NsYXNzIFN0cmVhbVByb2R1Y2Vy
SW1wbDsKIAotY2xhc3MgRGlzcGxheUltcGwgOiBhbmdsZTo6Tm9uQ29weWFibGUKK2NsYXNzIERp
c3BsYXlJbXBsIDogcHVibGljIEVHTEltcGxGYWN0b3J5CiB7CiAgIHB1YmxpYzoKICAgICBEaXNw
bGF5SW1wbCgpOwpAQCAtNDksMzMgKzUxLDEwIEBAIGNsYXNzIERpc3BsYXlJbXBsIDogYW5nbGU6
Ok5vbkNvcHlhYmxlCiAgICAgdmlydHVhbCBlZ2w6OkVycm9yIGluaXRpYWxpemUoZWdsOjpEaXNw
bGF5ICpkaXNwbGF5KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZSgpID0gMDsKIAot
ICAgIHZpcnR1YWwgU3VyZmFjZUltcGwgKmNyZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgZWdsOjpD
b25maWcgKmNvbmZpZ3VyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRy
aWJzKSA9IDA7Ci0gICAgdmlydHVhbCBTdXJmYWNlSW1wbCAqY3JlYXRlUGJ1ZmZlclN1cmZhY2Uo
Y29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMp
ID0gMDsKLSAgICB2aXJ0dWFsIFN1cmZhY2VJbXBsICpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1
ZmZlcihjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgc2hh
cmVIYW5kbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpID0gMDsKLSAgICB2aXJ0
dWFsIFN1cmZhY2VJbXBsICpjcmVhdGVQaXhtYXBTdXJmYWNlKGNvbnN0IGVnbDo6Q29uZmlnICpj
b25maWd1cmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTmF0aXZlUGl4bWFwVHlwZSBuYXRpdmVQaXhtYXAsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykg
PSAwOwotCi0gICAgdmlydHVhbCBJbWFnZUltcGwgKmNyZWF0ZUltYWdlKEVHTGVudW0gdGFyZ2V0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OkltYWdlU2libGluZyAq
YnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0
dHJpYnV0ZU1hcCAmYXR0cmlicykgPSAwOwotCi0gICAgdmlydHVhbCBnbDo6Q29udGV4dCAqY3Jl
YXRlQ29udGV4dChjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkNvbnRleHQgKnNoYXJlQ29udGV4dCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRl
TWFwICZhdHRyaWJzKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIFN0cmVhbUltcGwgKmNyZWF0ZVN0cmVh
bShjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgPSAwOwotCiAgICAgdmlydHVhbCBl
Z2w6OkVycm9yIG1ha2VDdXJyZW50KGVnbDo6U3VyZmFjZSAqZHJhd1N1cmZhY2UsIGVnbDo6U3Vy
ZmFjZSAqcmVhZFN1cmZhY2UsIGdsOjpDb250ZXh0ICpjb250ZXh0KSA9IDA7CiAKLSAgICB2aXJ0
dWFsIGVnbDo6Q29uZmlnU2V0IGdlbmVyYXRlQ29uZmlncygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGVnbDo6Q29uZmlnU2V0IGdlbmVyYXRlQ29uZmlncygpID0gMDsKIAotICAgIHZpcnR1YWwg
Ym9vbCBpc0RldmljZUxvc3QoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHRlc3REZXZp
Y2VMb3N0KCkgPSAwOwogICAgIHZpcnR1YWwgZWdsOjpFcnJvciByZXN0b3JlTG9zdERldmljZSgp
ID0gMDsKIApAQCAtODksNyArNjgsNyBAQCBjbGFzcyBEaXNwbGF5SW1wbCA6IGFuZ2xlOjpOb25D
b3B5YWJsZQogICAgIHZpcnR1YWwgZWdsOjpFcnJvciB3YWl0TmF0aXZlKEVHTGludCBlbmdpbmUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpTdXJmYWNlICpkcmF3U3Vy
ZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OlN1cmZhY2UgKnJl
YWRTdXJmYWNlKSBjb25zdCA9IDA7Ci0KKyAgICB2aXJ0dWFsIGdsOjpWZXJzaW9uIGdldE1heFN1
cHBvcnRlZEVTVmVyc2lvbigpIGNvbnN0ICAgICAgICAgICA9IDA7CiAgICAgY29uc3QgZWdsOjpD
YXBzICZnZXRDYXBzKCkgY29uc3Q7CiAKICAgICB0eXBlZGVmIHN0ZDo6c2V0PGVnbDo6U3VyZmFj
ZSo+IFN1cmZhY2VTZXQ7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvRUdMSW1wbEZhY3RvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRUdMSW1wbEZhY3RvcnkuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
RUdMSW1wbEZhY3RvcnkuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcwIEBACisvLworLy8g
Q29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworLy8gRUdMSW1wbEZhY3RvcnkuaDoKKy8vICAgRmFjdG9yeSBpbnRlcmZhY2UgZm9yIEVHTCBJ
bXBsIG9iamVjdHMuCisvLworCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0VHTElNUExGQUNU
T1JZX0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0VHTElNUExGQUNUT1JZX0hfCisKKyNp
bmNsdWRlICJsaWJBTkdMRS9TdHJlYW0uaCIKKworbmFtZXNwYWNlIGVnbAoreworY2xhc3MgQXR0
cmlidXRlTWFwOworc3RydWN0IENvbmZpZzsKK2NsYXNzIEltYWdlU2libGluZzsKK3N0cnVjdCBT
dXJmYWNlU3RhdGU7Cit9CisKK25hbWVzcGFjZSBnbAoreworY2xhc3MgQ29udGV4dDsKK2NsYXNz
IENvbnRleHRTdGF0ZTsKK30KKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBDb250ZXh0SW1wbDsK
K2NsYXNzIEltYWdlSW1wbDsKK2NsYXNzIFN1cmZhY2VJbXBsOworCitjbGFzcyBFR0xJbXBsRmFj
dG9yeSA6IGFuZ2xlOjpOb25Db3B5YWJsZQoreworICBwdWJsaWM6CisgICAgRUdMSW1wbEZhY3Rv
cnkoKSB7fQorICAgIHZpcnR1YWwgfkVHTEltcGxGYWN0b3J5KCkge30KKworICAgIHZpcnR1YWwg
U3VyZmFjZUltcGwgKmNyZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUg
JnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRl
TWFwICZhdHRyaWJzKSA9IDA7CisgICAgdmlydHVhbCBTdXJmYWNlSW1wbCAqY3JlYXRlUGJ1ZmZl
clN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1
cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSA9IDA7CisgICAgdmlydHVhbCBTdXJmYWNl
SW1wbCAqY3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoY29uc3QgZWdsOjpTdXJmYWNlU3Rh
dGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZl
ciBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgPSAwOworICAg
IHZpcnR1YWwgU3VyZmFjZUltcGwgKmNyZWF0ZVBpeG1hcFN1cmZhY2UoY29uc3QgZWdsOjpTdXJm
YWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1h
cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVn
bDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSA9IDA7CisKKyAgICB2aXJ0dWFsIEltYWdlSW1wbCAq
Y3JlYXRlSW1hZ2UoRUdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVnbDo6SW1hZ2VTaWJsaW5nICpidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSA9IDA7CisKKyAg
ICB2aXJ0dWFsIENvbnRleHRJbXBsICpjcmVhdGVDb250ZXh0KGNvbnN0IGdsOjpDb250ZXh0U3Rh
dGUgJnN0YXRlKSA9IDA7CisKKyAgICB2aXJ0dWFsIFN0cmVhbVByb2R1Y2VySW1wbCAqY3JlYXRl
U3RyZWFtUHJvZHVjZXJEM0RUZXh0dXJlTlYxMigKKyAgICAgICAgZWdsOjpTdHJlYW06OkNvbnN1
bWVyVHlwZSBjb25zdW1lclR5cGUsCisgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZh
dHRyaWJzKSA9IDA7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJB
TkdMRV9SRU5ERVJFUl9FR0xJTVBMRkFDVE9SWV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdC5jcHAJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL0Zvcm1hdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NCBAQAorLy8KKy8vIENv
cHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
Ky8vIEZvcm1hdDoKKy8vICAgQSB1bml2ZXJzYWwgZGVzY3JpcHRpb24gb2YgdGV4dHVyZSBzdG9y
YWdlLiBBY3Jvc3MgbXVsdGlwbGUKKy8vICAgcmVuZGVyZXIgYmFjay1lbmRzLCB0aGVyZSBhcmUg
Y29tbW9uIGZvcm1hdHMgYW5kIHNvbWUgZGlzdGluY3QKKy8vICAgcGVybXV0YXRpb25zLCB0aGlz
IGVudW0gZW5jYXBzdWxhdGVzIHRoZW0gYWxsLgorCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvRm9ybWF0LmgiCisKKyNpbmNsdWRlICJpbWFnZV91dGlsL2NvcHlpbWFnZS5oIgorCit1c2lu
ZyBuYW1lc3BhY2Ugcng7CisKK25hbWVzcGFjZSBhbmdsZQoreworCituYW1lc3BhY2UKK3sKKwor
Y29uc3QgRmFzdENvcHlGdW5jdGlvbk1hcCAmR2V0RmFzdENvcHlGdW5jdGlvbnNNYXAoRm9ybWF0
OjpJRCBmb3JtYXRJRCkKK3sKKyAgICBzd2l0Y2ggKGZvcm1hdElEKQorICAgIHsKKyAgICAgICAg
Y2FzZSBGb3JtYXQ6OklEOjpCOEc4UjhBOF9VTk9STToKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIEZhc3RDb3B5RnVuY3Rpb25NYXAgZmFzdENvcHlNYXA7CisgICAgICAgICAgICBpZiAo
ZmFzdENvcHlNYXAuZW1wdHkoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmYXN0
Q29weU1hcFtnbDo6Rm9ybWF0VHlwZShHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFKV0gPSBDb3B5
QkdSQThUb1JHQkE4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGZhc3RDb3B5
TWFwOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgIHsKKyAgICAgICAgICAg
IHN0YXRpYyBGYXN0Q29weUZ1bmN0aW9uTWFwIGVtcHR5TWFwOworICAgICAgICAgICAgcmV0dXJu
IGVtcHR5TWFwOworICAgICAgICB9CisgICAgfQorfQorCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNw
YWNlCisKK0Zvcm1hdDo6Rm9ybWF0KElEIGlkLAorICAgICAgICAgICAgICAgR0xlbnVtIGdsRm9y
bWF0LAorICAgICAgICAgICAgICAgR0xlbnVtIGZib0Zvcm1hdCwKKyAgICAgICAgICAgICAgIE1p
cEdlbmVyYXRpb25GdW5jdGlvbiBtaXBHZW4sCisgICAgICAgICAgICAgICBDb2xvclJlYWRGdW5j
dGlvbiBjb2xvclJlYWQsCisgICAgICAgICAgICAgICBHTGVudW0gY29tcG9uZW50VHlwZSwKKyAg
ICAgICAgICAgICAgIEdMdWludCByZWRCaXRzLAorICAgICAgICAgICAgICAgR0x1aW50IGdyZWVu
Qml0cywKKyAgICAgICAgICAgICAgIEdMdWludCBibHVlQml0cywKKyAgICAgICAgICAgICAgIEdM
dWludCBhbHBoYUJpdHMsCisgICAgICAgICAgICAgICBHTHVpbnQgZGVwdGhCaXRzLAorICAgICAg
ICAgICAgICAgR0x1aW50IHN0ZW5jaWxCaXRzKQorICAgIDogaWQoaWQpLAorICAgICAgZ2xJbnRl
cm5hbEZvcm1hdChnbEZvcm1hdCksCisgICAgICBmYm9JbXBsZW1lbnRhdGlvbkludGVybmFsRm9y
bWF0KGZib0Zvcm1hdCksCisgICAgICBtaXBHZW5lcmF0aW9uRnVuY3Rpb24obWlwR2VuKSwKKyAg
ICAgIGNvbG9yUmVhZEZ1bmN0aW9uKGNvbG9yUmVhZCksCisgICAgICBmYXN0Q29weUZ1bmN0aW9u
cyhHZXRGYXN0Q29weUZ1bmN0aW9uc01hcChpZCkpLAorICAgICAgY29tcG9uZW50VHlwZShjb21w
b25lbnRUeXBlKSwKKyAgICAgIHJlZEJpdHMocmVkQml0cyksCisgICAgICBncmVlbkJpdHMoZ3Jl
ZW5CaXRzKSwKKyAgICAgIGJsdWVCaXRzKGJsdWVCaXRzKSwKKyAgICAgIGFscGhhQml0cyhhbHBo
YUJpdHMpLAorICAgICAgZGVwdGhCaXRzKGRlcHRoQml0cyksCisgICAgICBzdGVuY2lsQml0cyhz
dGVuY2lsQml0cykKK3sKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRm9ybWF0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Zvcm1h
dC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9Gb3JtYXQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcxIEBACisvLwor
Ly8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisvLworLy8gRm9ybWF0OgorLy8gICBBIHVuaXZlcnNhbCBkZXNjcmlwdGlvbiBvZiB0eXBlZCBH
UFUgc3RvcmFnZS4gQWNyb3NzIG11bHRpcGxlCisvLyAgIHJlbmRlcmVyIGJhY2stZW5kcywgdGhl
cmUgYXJlIGNvbW1vbiBmb3JtYXRzIGFuZCBzb21lIGRpc3RpbmN0CisvLyAgIHBlcm11dGF0aW9u
cywgdGhpcyBlbnVtIGVuY2Fwc3VsYXRlcyB0aGVtIGFsbC4gRm9ybWF0cyBhcHBseSB0bworLy8g
ICB0ZXh0dXJlcywgYnV0IGNvdWxkIGFsc28gYXBwbHkgdG8gYW55IHR5cGVkIGRhdGEuCisKKyNp
Zm5kZWYgTElCQU5HTEVfUkVOREVSRVJfRk9STUFUX0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRF
UkVSX0ZPUk1BVF9IXworCisjaW5jbHVkZSAibGliQU5HTEUvZm9ybWF0dXRpbHMuaCIKKyNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9yZW5kZXJlcl91dGlscy5oIgorCituYW1lc3BhY2UgYW5n
bGUKK3sKKworc3RydWN0IEZvcm1hdCBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQoreworICAg
IGVudW0gY2xhc3MgSUQ7CisKKyAgICBGb3JtYXQoSUQgaWQsCisgICAgICAgICAgIEdMZW51bSBn
bEZvcm1hdCwKKyAgICAgICAgICAgR0xlbnVtIGZib0Zvcm1hdCwKKyAgICAgICAgICAgcng6Ok1p
cEdlbmVyYXRpb25GdW5jdGlvbiBtaXBHZW4sCisgICAgICAgICAgIHJ4OjpDb2xvclJlYWRGdW5j
dGlvbiBjb2xvclJlYWQsCisgICAgICAgICAgIEdMZW51bSBjb21wb25lbnRUeXBlLAorICAgICAg
ICAgICBHTHVpbnQgcmVkQml0cywKKyAgICAgICAgICAgR0x1aW50IGdyZWVuQml0cywKKyAgICAg
ICAgICAgR0x1aW50IGJsdWVCaXRzLAorICAgICAgICAgICBHTHVpbnQgYWxwaGFCaXRzLAorICAg
ICAgICAgICBHTHVpbnQgZGVwdGhCaXRzLAorICAgICAgICAgICBHTHVpbnQgc3RlbmNpbEJpdHMp
OworCisgICAgc3RhdGljIGNvbnN0IEZvcm1hdCAmR2V0KElEIGlkKTsKKworICAgIElEIGlkOwor
CisgICAgLy8gVGhlIGNsb3Nlc3QgbWF0Y2hpbmcgR0wgaW50ZXJuYWwgZm9ybWF0IGZvciB0aGUg
c3RvcmFnZSB0aGlzIGZvcm1hdCB1c2VzLiBOb3RlIHRoYXQgdGhpcworICAgIC8vIG1heSBiZSBh
IGRpZmZlcmVudCBpbnRlcm5hbCBmb3JtYXQgdGhhbiB0aGUgb25lIHRoaXMgQU5HTEUgZm9ybWF0
IGlzIHVzZWQgZm9yLgorICAgIEdMZW51bSBnbEludGVybmFsRm9ybWF0OworCisgICAgLy8gVGhl
IGZvcm1hdCB3ZSBzaG91bGQgcmVwb3J0IHRvIHRoZSBHTCBsYXllciB3aGVuIHF1ZXJ5aW5nIGlt
cGxlbWVudGF0aW9uIGZvcm1hdHMgZnJvbSBhIEZCTy4KKyAgICAvLyBUaGlzIG1pZ2h0IG5vdCBi
ZSB0aGUgc2FtZSBhcyB0aGUgZ2xJbnRlcm5hbEZvcm1hdCwgc2luY2Ugc29tZSBEWEdJIGZvcm1h
dHMgZG9uJ3QgaGF2ZQorICAgIC8vIG1hdGNoaW5nIEdMIGZvcm1hdCBlbnVtcywgbGlrZSBCR1JB
NCwgQkdSNUExIGFuZCBCNUc2UjYuCisgICAgR0xlbnVtIGZib0ltcGxlbWVudGF0aW9uSW50ZXJu
YWxGb3JtYXQ7CisKKyAgICByeDo6TWlwR2VuZXJhdGlvbkZ1bmN0aW9uIG1pcEdlbmVyYXRpb25G
dW5jdGlvbjsKKyAgICByeDo6Q29sb3JSZWFkRnVuY3Rpb24gY29sb3JSZWFkRnVuY3Rpb247CisK
KyAgICAvLyBBIG1hcCBmcm9tIGEgZ2w6OkZvcm1hdFR5cGUgdG8gYSBmYXN0IHBpeGVsIGNvcHkg
ZnVuY3Rpb24gZm9yIHRoaXMgZm9ybWF0LgorICAgIHJ4OjpGYXN0Q29weUZ1bmN0aW9uTWFwIGZh
c3RDb3B5RnVuY3Rpb25zOworCisgICAgR0xlbnVtIGNvbXBvbmVudFR5cGU7CisKKyAgICBHTHVp
bnQgcmVkQml0czsKKyAgICBHTHVpbnQgZ3JlZW5CaXRzOworICAgIEdMdWludCBibHVlQml0czsK
KyAgICBHTHVpbnQgYWxwaGFCaXRzOworICAgIEdMdWludCBkZXB0aEJpdHM7CisgICAgR0x1aW50
IHN0ZW5jaWxCaXRzOworfTsKKworfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCisKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9Gb3JtYXRfSURfYXV0b2dlbi5pbmwiCisKKyNlbmRpZiAgLy8gTElC
QU5HTEVfUkVOREVSRVJfRk9STUFUX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvRm9ybWF0X0lEX2F1dG9nZW4uaW5sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9Gb3JtYXRfSURf
YXV0b2dlbi5pbmwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdF9JRF9hdXRvZ2VuLmlubAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEzOCBAQAorLy8gR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVC4KKy8vIEdl
bmVyYXRlZCBieSBnZW5fYW5nbGVfZm9ybWF0X3RhYmxlLnB5IHVzaW5nIGRhdGEgZnJvbSBhbmds
ZV9mb3JtYXRfZGF0YS5qc29uCisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gQU5HTEUgZm9ybWF0IGVudW1lcmF0aW9u
LgorCituYW1lc3BhY2UgYW5nbGUKK3sKKworZW51bSBjbGFzcyBGb3JtYXQ6OklECit7CisgICAg
Tk9ORSwKKyAgICBBMTZfRkxPQVQsCisgICAgQTMyX0ZMT0FULAorICAgIEE4X1VOT1JNLAorICAg
IEFTVENfMTB4MTBfU1JHQl9CTE9DSywKKyAgICBBU1RDXzEweDEwX1VOT1JNX0JMT0NLLAorICAg
IEFTVENfMTB4NV9TUkdCX0JMT0NLLAorICAgIEFTVENfMTB4NV9VTk9STV9CTE9DSywKKyAgICBB
U1RDXzEweDZfU1JHQl9CTE9DSywKKyAgICBBU1RDXzEweDZfVU5PUk1fQkxPQ0ssCisgICAgQVNU
Q18xMHg4X1NSR0JfQkxPQ0ssCisgICAgQVNUQ18xMHg4X1VOT1JNX0JMT0NLLAorICAgIEFTVENf
MTJ4MTBfU1JHQl9CTE9DSywKKyAgICBBU1RDXzEyeDEwX1VOT1JNX0JMT0NLLAorICAgIEFTVENf
MTJ4MTJfU1JHQl9CTE9DSywKKyAgICBBU1RDXzEyeDEyX1VOT1JNX0JMT0NLLAorICAgIEFTVENf
NHg0X1NSR0JfQkxPQ0ssCisgICAgQVNUQ180eDRfVU5PUk1fQkxPQ0ssCisgICAgQVNUQ181eDRf
U1JHQl9CTE9DSywKKyAgICBBU1RDXzV4NF9VTk9STV9CTE9DSywKKyAgICBBU1RDXzV4NV9TUkdC
X0JMT0NLLAorICAgIEFTVENfNXg1X1VOT1JNX0JMT0NLLAorICAgIEFTVENfNng1X1NSR0JfQkxP
Q0ssCisgICAgQVNUQ182eDVfVU5PUk1fQkxPQ0ssCisgICAgQVNUQ182eDZfU1JHQl9CTE9DSywK
KyAgICBBU1RDXzZ4Nl9VTk9STV9CTE9DSywKKyAgICBBU1RDXzh4NV9TUkdCX0JMT0NLLAorICAg
IEFTVENfOHg1X1VOT1JNX0JMT0NLLAorICAgIEFTVENfOHg2X1NSR0JfQkxPQ0ssCisgICAgQVNU
Q184eDZfVU5PUk1fQkxPQ0ssCisgICAgQVNUQ184eDhfU1JHQl9CTE9DSywKKyAgICBBU1RDXzh4
OF9VTk9STV9CTE9DSywKKyAgICBCNEc0UjRBNF9VTk9STSwKKyAgICBCNUc1UjVBMV9VTk9STSwK
KyAgICBCNUc2UjVfVU5PUk0sCisgICAgQjhHOFI4QThfVU5PUk0sCisgICAgQjhHOFI4WDhfVU5P
Uk0sCisgICAgQkMxX1JHQkFfVU5PUk1fQkxPQ0ssCisgICAgQkMxX1JHQl9VTk9STV9CTE9DSywK
KyAgICBCQzJfUkdCQV9VTk9STV9CTE9DSywKKyAgICBCQzNfUkdCQV9VTk9STV9CTE9DSywKKyAg
ICBEMTZfVU5PUk0sCisgICAgRDI0X1VOT1JNLAorICAgIEQyNF9VTk9STV9TOF9VSU5ULAorICAg
IEQzMl9GTE9BVCwKKyAgICBEMzJfRkxPQVRfUzhYMjRfVUlOVCwKKyAgICBEMzJfVU5PUk0sCisg
ICAgRUFDX1IxMUcxMV9TTk9STV9CTE9DSywKKyAgICBFQUNfUjExRzExX1VOT1JNX0JMT0NLLAor
ICAgIEVBQ19SMTFfU05PUk1fQkxPQ0ssCisgICAgRUFDX1IxMV9VTk9STV9CTE9DSywKKyAgICBF
VEMyX1I4RzhCOEExX1NSR0JfQkxPQ0ssCisgICAgRVRDMl9SOEc4QjhBMV9VTk9STV9CTE9DSywK
KyAgICBFVEMyX1I4RzhCOEE4X1NSR0JfQkxPQ0ssCisgICAgRVRDMl9SOEc4QjhBOF9VTk9STV9C
TE9DSywKKyAgICBFVEMyX1I4RzhCOF9TUkdCX0JMT0NLLAorICAgIEVUQzJfUjhHOEI4X1VOT1JN
X0JMT0NLLAorICAgIEwxNkExNl9GTE9BVCwKKyAgICBMMTZfRkxPQVQsCisgICAgTDMyQTMyX0ZM
T0FULAorICAgIEwzMl9GTE9BVCwKKyAgICBMOEE4X1VOT1JNLAorICAgIEw4X1VOT1JNLAorICAg
IFIxMEcxMEIxMEEyX1VJTlQsCisgICAgUjEwRzEwQjEwQTJfVU5PUk0sCisgICAgUjExRzExQjEw
X0ZMT0FULAorICAgIFIxNkcxNkIxNkExNl9GTE9BVCwKKyAgICBSMTZHMTZCMTZBMTZfU0lOVCwK
KyAgICBSMTZHMTZCMTZBMTZfU05PUk0sCisgICAgUjE2RzE2QjE2QTE2X1VJTlQsCisgICAgUjE2
RzE2QjE2QTE2X1VOT1JNLAorICAgIFIxNkcxNkIxNl9GTE9BVCwKKyAgICBSMTZHMTZCMTZfU0lO
VCwKKyAgICBSMTZHMTZCMTZfU05PUk0sCisgICAgUjE2RzE2QjE2X1VJTlQsCisgICAgUjE2RzE2
QjE2X1VOT1JNLAorICAgIFIxNkcxNl9GTE9BVCwKKyAgICBSMTZHMTZfU0lOVCwKKyAgICBSMTZH
MTZfU05PUk0sCisgICAgUjE2RzE2X1VJTlQsCisgICAgUjE2RzE2X1VOT1JNLAorICAgIFIxNl9G
TE9BVCwKKyAgICBSMTZfU0lOVCwKKyAgICBSMTZfU05PUk0sCisgICAgUjE2X1VJTlQsCisgICAg
UjE2X1VOT1JNLAorICAgIFIzMkczMkIzMkEzMl9GTE9BVCwKKyAgICBSMzJHMzJCMzJBMzJfU0lO
VCwKKyAgICBSMzJHMzJCMzJBMzJfVUlOVCwKKyAgICBSMzJHMzJCMzJfRkxPQVQsCisgICAgUjMy
RzMyQjMyX1NJTlQsCisgICAgUjMyRzMyQjMyX1VJTlQsCisgICAgUjMyRzMyX0ZMT0FULAorICAg
IFIzMkczMl9TSU5ULAorICAgIFIzMkczMl9VSU5ULAorICAgIFIzMl9GTE9BVCwKKyAgICBSMzJf
U0lOVCwKKyAgICBSMzJfVUlOVCwKKyAgICBSNEc0QjRBNF9VTk9STSwKKyAgICBSNUc1QjVBMV9V
Tk9STSwKKyAgICBSNUc2QjVfVU5PUk0sCisgICAgUjhHOEI4QThfU0lOVCwKKyAgICBSOEc4QjhB
OF9TTk9STSwKKyAgICBSOEc4QjhBOF9VSU5ULAorICAgIFI4RzhCOEE4X1VOT1JNLAorICAgIFI4
RzhCOEE4X1VOT1JNX1NSR0IsCisgICAgUjhHOEI4X1NJTlQsCisgICAgUjhHOEI4X1NOT1JNLAor
ICAgIFI4RzhCOF9VSU5ULAorICAgIFI4RzhCOF9VTk9STSwKKyAgICBSOEc4QjhfVU5PUk1fU1JH
QiwKKyAgICBSOEc4X1NJTlQsCisgICAgUjhHOF9TTk9STSwKKyAgICBSOEc4X1VJTlQsCisgICAg
UjhHOF9VTk9STSwKKyAgICBSOF9TSU5ULAorICAgIFI4X1NOT1JNLAorICAgIFI4X1VJTlQsCisg
ICAgUjhfVU5PUk0sCisgICAgUjlHOUI5RTVfU0hBUkVERVhQLAorICAgIFM4X1VJTlQKK307CisK
K30gIC8vIG5hbWVzcGFjZSBhbmdsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdF9hdXRvZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRm9ybWF0X2F1dG9nZW4u
Y3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9Gb3JtYXRfYXV0b2dlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MzY5IEBACisvLyBHRU5FUkFURUQgRklMRSAtIERPIE5PVCBFRElULgorLy8gR2VuZXJhdGVkIGJ5
IGdlbl9hbmdsZV9mb3JtYXRfdGFibGUucHkgdXNpbmcgZGF0YSBmcm9tIGFuZ2xlX2Zvcm1hdF9k
YXRhLmpzb24KKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisvLyBBTkdMRSBGb3JtYXQgdGFibGU6CisvLyAgIFF1ZXJpZXMg
Zm9yIHR5cGVkIGZvcm1hdCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBBTkdMRSBmb3JtYXQgZW51bS4K
KworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdC5oIgorCisjaW5jbHVkZSAiaW1h
Z2VfdXRpbC9jb3B5aW1hZ2UuaCIKKyNpbmNsdWRlICJpbWFnZV91dGlsL2dlbmVyYXRlbWlwLmgi
CisjaW5jbHVkZSAiaW1hZ2VfdXRpbC9sb2FkaW1hZ2UuaCIKKworbmFtZXNwYWNlIGFuZ2xlCit7
CisKKy8vIHN0YXRpYworY29uc3QgRm9ybWF0ICZGb3JtYXQ6OkdldChJRCBpZCkKK3sKKyAgICAv
LyBjbGFuZy1mb3JtYXQgb2ZmCisgICAgc3dpdGNoIChpZCkKKyAgICB7CisgICAgICAgIGNhc2Ug
SUQ6OkExNl9GTE9BVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1h
dCBpbmZvKElEOjpBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfQUxQSEExNkZfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX0FMUEhBMTZGX0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
ZW5lcmF0ZU1pcDxBMTZGPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS
ZWFkQ29sb3I8QTE2RiwgR0xmbG9hdD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwg
MCwgMCwgMTYsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBJRDo6QTMyX0ZMT0FUOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRm9ybWF0IGluZm8oSUQ6OkEzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9BTFBIQTMyRl9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfQUxQSEEzMkZfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdlbmVyYXRlTWlwPEEzMkY+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFJlYWRDb2xvcjxBMzJGLCBHTGZsb2F0PiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLCAwLCAwLCAzMiwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIElEOjpBOF9VTk9STToKKyAgICAgICAgeworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpBOF9VTk9STSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9BTFBIQThfRVhULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX0FMUEhBOF9FWFQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8QTg+LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJlYWRDb2xvcjxBOCwgR0xmbG9hdD4sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCA4LCAwLCAwKTsKKyAgICAgICAgICAgIHJl
dHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OkFTVENfMTB4MTBfU1JHQl9C
TE9DSzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElE
OjpBU1RDXzEweDEwX1NSR0JfQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
QVNUQ18xMHgxMF9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7
CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpB
U1RDXzEweDEwX1VOT1JNX0JMT0NLOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgRm9ybWF0IGluZm8oSUQ6OkFTVENfMTB4MTBfVU5PUk1fQkxPQ0ssCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hS
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdC
QV9BU1RDXzEweDEwX0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpF
RCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAw
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6
OkFTVENfMTB4NV9TUkdCX0JMT0NLOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgRm9ybWF0IGluZm8oSUQ6OkFTVENfMTB4NV9TUkdCX0JMT0NLLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4
NV9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdO
RURfTk9STUFMSVpFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAw
LCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgSUQ6OkFTVENfMTB4NV9VTk9STV9CTE9DSzoKKyAgICAgICAgeworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpBU1RDXzEweDVfVU5PUk1fQkxPQ0ssCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBX0FT
VENfMTB4NV9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09N
UFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVE
X05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwg
MCwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIElEOjpBU1RDXzEweDZfU1JHQl9CTE9DSzoKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpBU1RDXzEweDZfU1JHQl9CTE9DSywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhB
OF9BU1RDXzEweDZfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4Nl9LSFIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIElEOjpBU1RDXzEweDZfVU5PUk1fQkxPQ0s6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QVNUQ18xMHg2X1VOT1JN
X0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNT
RURfUkdCQV9BU1RDXzEweDZfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDZfS0hSLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9VTlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBJRDo6QVNUQ18xMHg4X1NSR0JfQkxPQ0s6CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QVNUQ18xMHg4X1NSR0JfQkxP
Q0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDhfS0hSLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6QVNUQ18xMHg4X1VOT1JNX0JMT0NLOgor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkFTVENf
MTB4OF9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZv
OworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OkFTVENfMTJ4MTBfU1JHQl9CTE9DSzoKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpBU1RDXzEy
eDEwX1NSR0JfQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMF9LSFIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngx
MF9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7CisgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpBU1RDXzEyeDEw
X1VOT1JNX0JMT0NLOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0
IGluZm8oSUQ6OkFTVENfMTJ4MTBfVU5PUk1fQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEy
eDEwX0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwKTsKKyAgICAg
ICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OkFTVENfMTJ4
MTJfU1JHQl9CTE9DSzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1h
dCBpbmZvKElEOjpBU1RDXzEyeDEyX1NSR0JfQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMl9LSFIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9TUkdC
OF9BTFBIQThfQVNUQ18xMngxMl9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
cHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05P
Uk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwg
MCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIElEOjpBU1RDXzEyeDEyX1VOT1JNX0JMT0NLOgorICAgICAgICB7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkFTVENfMTJ4MTJfVU5PUk1fQkxPQ0ssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENf
MTJ4MTJfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBS
RVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURf
Tk9STUFMSVpFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAw
LCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAg
IGNhc2UgSUQ6OkFTVENfNHg0X1NSR0JfQkxPQ0s6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QVNUQ180eDRfU1JHQl9CTE9DSywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9B
U1RDXzR4NF9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09N
UFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9V
TlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBJRDo6QVNUQ180eDRfVU5PUk1fQkxPQ0s6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QVNUQ180eDRfVU5PUk1fQkxPQ0ss
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JB
X0FTVENfNHg0X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9D
T01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05F
RF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAs
IDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBJRDo6QVNUQ181eDRfU1JHQl9CTE9DSzoKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpBU1RDXzV4NF9TUkdCX0JMT0NLLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4
X0FTVENfNXg0X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9D
T01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X1VOU0lHTkVEX05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMCwgMCwgMCwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIElEOjpBU1RDXzV4NF9VTk9STV9CTE9DSzoKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpBU1RDXzV4NF9VTk9STV9CTE9D
SywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1JH
QkFfQVNUQ181eDRfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NF9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lH
TkVEX05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwg
MCwgMCwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIElEOjpBU1RDXzV4NV9TUkdCX0JMT0NLOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkFTVENfNXg1X1NSR0JfQkxPQ0ssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ181eDVfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfVU5TSUdORURfTk9STUFMSVpFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgSUQ6OkFTVENfNXg1X1VOT1JNX0JMT0NLOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkFTVENfNXg1X1VOT1JNX0JM
T0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURf
UkdCQV9BU1RDXzV4NV9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5T
SUdORURfTk9STUFMSVpFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgSUQ6OkFTVENfNng1X1NSR0JfQkxPQ0s6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QVNUQ182eDVfU1JHQl9CTE9DSywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzZ4NV9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hSLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBJRDo6QVNUQ182eDVfVU5PUk1fQkxPQ0s6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QVNUQ182eDVfVU5PUk1f
QkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NF
RF9SR0JBX0FTVENfNng1X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDVfS0hSLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9V
TlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBJRDo6QVNUQ182eDZfU1JHQl9CTE9DSzoKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpBU1RDXzZ4Nl9TUkdCX0JMT0NLLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0FTVENfNng2X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIElEOjpBU1RDXzZ4Nl9VTk9STV9CTE9DSzoKKyAgICAgICAg
eworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpBU1RDXzZ4Nl9VTk9S
TV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVT
U0VEX1JHQkFfQVNUQ182eDZfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4Nl9LSFIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X1VOU0lHTkVEX05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMCwgMCwgMCwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIElEOjpBU1RDXzh4NV9TUkdCX0JMT0NLOgorICAgICAgICB7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkFTVENfOHg1X1NSR0JfQkxPQ0ss
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9TUkdC
OF9BTFBIQThfQVNUQ184eDVfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OkFTVENfOHg1X1VOT1JNX0JMT0NLOgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkFTVENfOHg1X1VO
T1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBS
RVNTRURfUkdCQV9BU1RDXzh4NV9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1X0tIUiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfVU5TSUdORURfTk9STUFMSVpFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgSUQ6OkFTVENfOHg2X1NSR0JfQkxPQ0s6CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QVNUQ184eDZfU1JHQl9CTE9D
SywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1NS
R0I4X0FMUEhBOF9BU1RDXzh4Nl9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6QVNUQ184eDZfVU5PUk1fQkxPQ0s6CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QVNUQ184eDZf
VU5PUk1fQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09N
UFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDZfS0hSLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBJRDo6QVNUQ184eDhfU1JHQl9CTE9DSzoKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpBU1RDXzh4OF9TUkdCX0JM
T0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0FTVENfOHg4X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5m
bzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpBU1RDXzh4OF9VTk9STV9CTE9DSzoKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpBU1RDXzh4
OF9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9D
T01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OF9LSFIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIElEOjpCNEc0UjRBNF9VTk9STToKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpCNEc0UjRBNF9VTk9STSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9CR1JBNF9BTkdMRVgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8QTRSNEc0QjQ+LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxBNFI0RzRCNCwgR0xmbG9hdD4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFM
SVpFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LCA0LCA0LCA0LCAw
LCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
SUQ6OkI1RzVSNUExX1VOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
Rm9ybWF0IGluZm8oSUQ6OkI1RzVSNUExX1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX0JHUjVfQTFfQU5HTEVYLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1JHQjVfQTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR2VuZXJhdGVNaXA8QTFSNUc1QjU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFJlYWRDb2xvcjxBMVI1RzVCNSwgR0xmbG9hdD4sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA1LCA1LCA1LCAxLCAwLCAwKTsKKyAgICAgICAgICAg
IHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OkI1RzZSNV9VTk9STToK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpCNUc2
UjVfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQkdSNTY1
X0FOR0xFWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0I1NjUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8QjVHNlI1
PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8QjVHNlI1
LCBHTGZsb2F0PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJ
R05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUs
IDYsIDUsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBJRDo6QjhHOFI4QThfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QjhHOFI4QThfVU5PUk0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfQkdSQThfRVhULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX0JHUkE4X0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxCOEc4UjhBOD4sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPEI4RzhSOEE4LCBHTGZsb2F0PiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsIDgsIDgsIDgsIDAsIDApOworICAg
ICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6QjhHOFI4
WDhfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5m
byhJRDo6QjhHOFI4WDhfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfQkdSQThfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X0JHUkE4X0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0
ZU1pcDxCOEc4UjhYOD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVh
ZENvbG9yPEI4RzhSOFg4LCBHTGZsb2F0PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDgsIDgsIDgsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6QkMxX1JHQkFfVU5PUk1fQkxPQ0s6CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QkMxX1JHQkFf
VU5PUk1fQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIElEOjpCQzFfUkdCX1VOT1JNX0JMT0NLOgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkJDMV9SR0JfVU5PUk1f
QkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NF
RF9SR0JfUzNUQ19EWFQxX0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9V
TlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBJRDo6QkMyX1JHQkFfVU5PUk1fQkxPQ0s6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QkMyX1JHQkFfVU5PUk1fQkxPQ0ss
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUM19BTkdMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9V
TlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBJRDo6QkMzX1JHQkFfVU5PUk1fQkxPQ0s6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QkMzX1JHQkFfVU5PUk1fQkxPQ0ss
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUNV9BTkdMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9V
TlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBJRDo6RDE2X1VOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkQxNl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9ERVBUSF9DT01QT05FTlQxNiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9ERVBUSF9DT01QT05FTlQxNiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLCAwLCAwLCAwLCAxNiwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIElEOjpEMjRfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6RDI0X1VOT1JNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0RFUFRIX0NPTVBPTkVOVDI0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0RFUFRIX0NPTVBPTkVOVDI0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDI0LCAwKTsKKyAgICAgICAgICAgIHJldHVybiBp
bmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OkQyNF9VTk9STV9TOF9VSU5UOgorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkQyNF9VTk9S
TV9TOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0RFUFRI
MjRfU1RFTkNJTDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfREVQ
VEgyNF9TVEVOQ0lMOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
cHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAyNCwgOCk7
CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpE
MzJfRkxPQVQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5m
byhJRDo6RDMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X0RFUFRIX0NPTVBPTkVOVDMyRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9ERVBUSF9DT01QT05FTlQzMkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
cHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0ZMT0FULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDMyLCAwKTsKKyAg
ICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OkQzMl9G
TE9BVF9TOFgyNF9VSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9y
bWF0IGluZm8oSUQ6OkQzMl9GTE9BVF9TOFgyNF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX0RFUFRIMzJGX1NURU5DSUw4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX0RFUFRIMzJGX1NURU5DSUw4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAw
LCAwLCAzMiwgOCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIElEOjpEMzJfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBGb3JtYXQgaW5mbyhJRDo6RDMyX1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9ERVBUSF9DT01QT05FTlQzMl9PRVMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMCwgMCwgMCwgMCwgMzIsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6RUFDX1IxMUcxMV9TTk9STV9CTE9DSzoKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpFQUNfUjExRzEx
X1NOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NP
TVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9TSUdORURfTk9STUFMSVpFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxMSwgMTEsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBJRDo6RUFDX1IxMUcxMV9VTk9STV9CTE9DSzoKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpFQUNfUjExRzExX1VOT1JN
X0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNT
RURfUkcxMV9FQUMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09N
UFJFU1NFRF9SRzExX0VBQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpF
RCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMSwgMTEsIDAsIDAsIDAs
IDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJ
RDo6RUFDX1IxMV9TTk9STV9CTE9DSzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IEZvcm1hdCBpbmZvKElEOjpFQUNfUjExX1NOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9TSUdORURfUjEx
X0VBQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfU0lHTkVEX05PUk1BTElaRUQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAg
ICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6RUFDX1IxMV9VTk9S
TV9CTE9DSzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZv
KElEOjpFQUNfUjExX1VOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX0NPTVBSRVNTRURfUjExX0VBQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9DT01QUkVTU0VEX1IxMV9FQUMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VO
U0lHTkVEX05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MTEsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBJRDo6RVRDMl9SOEc4QjhBMV9TUkdCX0JMT0NLOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkVUQzJfUjhHOEI4QTFfU1JH
Ql9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVT
U0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFf
RVRDMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LCA4LCA4LCAxLCAwLCAwKTsKKyAgICAgICAg
ICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OkVUQzJfUjhHOEI4
QTFfVU5PUk1fQkxPQ0s6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3Jt
YXQgaW5mbyhJRDo6RVRDMl9SOEc4QjhBMV9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhB
MV9FVEMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNT
RURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VO
U0lHTkVEX05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OCwgOCwgOCwgMSwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIElEOjpFVEMyX1I4RzhCOEE4X1NSR0JfQkxPQ0s6CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6RVRDMl9SOEc4QjhBOF9TUkdC
X0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDgsIDgsIDgsIDgsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6RVRDMl9SOEc4QjhBOF9VTk9STV9CTE9DSzoKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpFVEMyX1I4
RzhCOEE4X1VOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA4LCA4LCA4LCA4LCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgSUQ6OkVUQzJfUjhHOEI4X1NSR0JfQkxPQ0s6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6RVRDMl9SOEc4Qjhf
U1JHQl9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01Q
UkVTU0VEX1NSR0I4X0VUQzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9O
T1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsIDgsIDgs
IDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBJRDo6RVRDMl9SOEc4QjhfVU5PUk1fQkxPQ0s6CisgICAgICAgIHsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6RVRDMl9SOEc4QjhfVU5PUk1fQkxPQ0ssCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0I4X0VU
QzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9S
R0I4X0VUQzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCwgOCwgOCwgMCwgMCwgMCk7CisgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpMMTZBMTZf
RkxPQVQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJ
RDo6TDE2QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X0xVTUlOQU5DRV9BTFBIQTE2Rl9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfTFVNSU5BTkNFX0FMUEhBMTZGX0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxMMTZBMTZGPiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8TDE2QTE2RiwgR0xmbG9hdD4sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfRkxPQVQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMTYsIDAsIDApOworICAgICAgICAgICAgcmV0dXJu
IGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6TDE2X0ZMT0FUOgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkwxNl9GTE9BVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9MVU1JTkFOQ0UxNkZfRVhULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0xVTUlOQU5DRTE2Rl9FWFQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8TDE2Rj4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPEwxNkYsIEdM
ZmxvYXQ+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0ZMT0FULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDApOwor
ICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6TDMy
QTMyX0ZMT0FUOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGlu
Zm8oSUQ6OkwzMkEzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9MVU1JTkFOQ0VfQUxQSEEzMkZfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX0xVTUlOQU5DRV9BTFBIQTMyRl9FWFQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8TDMyQTMyRj4sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPEwzMkEzMkYsIEdMZmxvYXQ+LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0ZMT0FULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDMyLCAwLCAwKTsKKyAgICAgICAgICAgIHJl
dHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OkwzMl9GTE9BVDoKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpMMzJfRkxPQVQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTFVNSU5BTkNFMzJGX0VY
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9MVU1JTkFOQ0UzMkZf
RVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPEwz
MkY+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxMMzJG
LCBHTGZsb2F0PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9GTE9B
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAw
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6
Okw4QThfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQg
aW5mbyhJRDo6TDhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9MVU1JTkFOQ0U4X0FMUEhBOF9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfTFVNSU5BTkNFOF9BTFBIQThfRVhULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPEw4QTg+LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxMOEE4LCBHTGZsb2F0PiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDgsIDAsIDApOworICAgICAgICAg
ICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6TDhfVU5PUk06Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6TDhfVU5P
Uk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTFVNSU5BTkNFOF9F
WFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTFVNSU5BTkNFOF9F
WFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8TDg+
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxMOCwgR0xm
bG9hdD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURf
Tk9STUFMSVpFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAw
LCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAg
IGNhc2UgSUQ6Ok5PTkU6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3Jt
YXQgaW5mbyhJRDo6Tk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIElEOjpSMTBHMTBCMTBBMl9VSU5UOgorICAgICAgICB7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIxMEcxMEIxMEEyX1VJTlQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCMTBfQTJVSSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0IxMF9BMlVJLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIxMEcxMEIxMEEyPiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjEwRzEwQjEwQTIs
IEdMdWludD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdO
RURfSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLCAxMCwgMTAs
IDIsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBJRDo6UjEwRzEwQjEwQTJfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjEwRzEwQjEwQTJfVU5PUk0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCMTBfQTIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfUkdCMTBfQTIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjEwRzEwQjEwQTI+LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMTBHMTBCMTBBMiwgR0xmbG9hdD4sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMCwgMTAsIDEwLCAyLCAwLCAw
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6
OlIxMUcxMUIxMF9GTE9BVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZv
cm1hdCBpbmZvKElEOjpSMTFHMTFCMTBfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfUjExRl9HMTFGX0IxMEYsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfUjExRl9HMTFGX0IxMEYsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjExRzExQjEwRj4sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIxMUcxMUIxMEYsIEdMZmxvYXQ+LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0ZMT0FULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDExLCAxMSwgMTAsIDAsIDAsIDApOworICAgICAgICAgICAg
cmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6UjE2RzE2QjE2QTE2X0ZM
T0FUOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6
OlIxNkcxNkIxNkExNl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9SR0JBMTZGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JH
QkExNkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8
UjE2RzE2QjE2QTE2Rj4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVh
ZENvbG9yPFIxNkcxNkIxNkExNkYsIEdMZmxvYXQ+LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDE2LCAxNiwgMTYsIDE2LCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgSUQ6OlIxNkcxNkIxNkExNl9TSU5UOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIxNkcxNkIxNkExNl9TSU5U
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNkksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2SSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMTZHMTZCMTZBMTZTPiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjE2RzE2QjE2QTE2
UywgR0xpbnQ+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0lOVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNiwgMTYsIDE2LCAxNiwgMCwg
MCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElE
OjpSMTZHMTZCMTZBMTZfU05PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBGb3JtYXQgaW5mbyhJRDo6UjE2RzE2QjE2QTE2X1NOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNl9TTk9STV9FWFQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2X1NOT1JNX0VYVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMTZHMTZCMTZBMTZTPiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjE2RzE2QjE2QTE2Uywg
R0xmbG9hdD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfU0lHTkVE
X05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYsIDE2
LCAxNiwgMTYsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBJRDo6UjE2RzE2QjE2QTE2X1VJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjE2RzE2QjE2QTE2X1VJTlQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2VUksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2VUksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjE2RzE2QjE2QTE2PiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjE2RzE2QjE2QTE2LCBHTHVpbnQ+
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNiwgMTYsIDE2LCAxNiwgMCwg
MCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElE
OjpSMTZHMTZCMTZBMTZfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBGb3JtYXQgaW5mbyhJRDo6UjE2RzE2QjE2QTE2X1VOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNl9FWFQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfUkdCQTE2X0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMTZHMTZCMTZBMTY+LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMTZHMTZCMTZBMTYsIEdMZmxvYXQ+LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYsIDE2LCAxNiwgMTYsIDAs
IDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJ
RDo6UjE2RzE2QjE2X0ZMT0FUOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
Rm9ybWF0IGluZm8oSUQ6OlIxNkcxNkIxNl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9SR0IxNkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfUkdCMTZGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdl
bmVyYXRlTWlwPFIxNkcxNkIxNkY+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJlYWRDb2xvcjxSMTZHMTZCMTZGLCBHTGZsb2F0PiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxNiwgMTYsIDE2LCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OlIxNkcxNkIxNl9TSU5UOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIxNkcxNkIxNl9TSU5ULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQjE2SSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0IxNkksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjE2RzE2QjE2Uz4sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIxNkcxNkIxNlMsIEdMaW50PiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9JTlQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYsIDE2LCAxNiwgMCwgMCwgMCk7CisgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpSMTZHMTZCMTZf
U05PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJ
RDo6UjE2RzE2QjE2X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1JHQjE2X1NOT1JNX0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9SR0IxNl9TTk9STV9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR2VuZXJhdGVNaXA8UjE2RzE2QjE2Uz4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUmVhZENvbG9yPFIxNkcxNkIxNlMsIEdMZmxvYXQ+LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1NJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDE2LCAxNiwgMTYsIDAsIDAsIDApOworICAgICAgICAg
ICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6UjE2RzE2QjE2X1VJ
TlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6
UjE2RzE2QjE2X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
UkdCMTZVSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0IxNlVJ
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIxNkcx
NkIxNj4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIx
NkcxNkIxNiwgR0x1aW50PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9VTlNJR05FRF9JTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYs
IDE2LCAxNiwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIElEOjpSMTZHMTZCMTZfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjE2RzE2QjE2X1VOT1JNLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQjE2X0VYVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0IxNl9FWFQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjE2RzE2QjE2PiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjE2RzE2QjE2LCBHTGZsb2F0PiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVE
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LCAxNiwgMTYsIDAsIDAs
IDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJ
RDo6UjE2RzE2X0ZMT0FUOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9y
bWF0IGluZm8oSUQ6OlIxNkcxNl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9SRzE2RiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9SRzE2RiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1p
cDxSMTZHMTZGPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29s
b3I8UjE2RzE2RiwgR0xmbG9hdD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYsIDE2
LCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgSUQ6OlIxNkcxNl9TSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRm9ybWF0IGluZm8oSUQ6OlIxNkcxNl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX1JHMTZJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX1JHMTZJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdl
bmVyYXRlTWlwPFIxNkcxNlM+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJlYWRDb2xvcjxSMTZHMTZTLCBHTGludD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2
LCAxNiwgMCwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIElEOjpSMTZHMTZfU05PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjE2RzE2X1NOT1JNLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1JHMTZfU05PUk1fRVhULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1JHMTZfU05PUk1fRVhULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIxNkcxNlM+LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMTZHMTZTLCBHTGZsb2F0PiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9TSUdORURfTk9STUFMSVpFRCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNiwgMTYsIDAsIDAsIDAsIDAp
OworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6
UjE2RzE2X1VJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQg
aW5mbyhJRDo6UjE2RzE2X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfUkcxNlVJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JH
MTZVSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxS
MTZHMTY+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxS
MTZHMTYsIEdMdWludD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
VU5TSUdORURfSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LCAx
NiwgMCwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIElEOjpSMTZHMTZfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjE2RzE2X1VOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1JHMTZfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1JHMTZfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdlbmVyYXRlTWlwPFIxNkcxNj4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUmVhZENvbG9yPFIxNkcxNiwgR0xmbG9hdD4sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxNiwgMTYsIDAsIDAsIDAsIDApOworICAgICAgICAgICAg
cmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6UjE2X0ZMT0FUOgorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIxNl9GTE9B
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SMTZGLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1IxNkYsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjE2Rj4sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIxNkYsIEdMZmxvYXQ+LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0ZMT0FULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDE2LCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVy
biBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OlIxNl9TSU5UOgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIxNl9TSU5ULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1IxNkksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjE2SSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMTZTPiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBSZWFkQ29sb3I8UjE2UywgR0xpbnQ+LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxNiwgMCwgMCwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIElEOjpSMTZfU05PUk06CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjE2X1NOT1JNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1IxNl9TTk9STV9FWFQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjE2X1NOT1JNX0VYVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMTZTPiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjE2UywgR0xmbG9hdD4sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfU0lHTkVEX05PUk1BTElaRUQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYsIDAsIDAsIDAsIDAsIDApOworICAg
ICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6UjE2X1VJ
TlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6
UjE2X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjE2VUks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjE2VUksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjE2PiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjE2LCBHTHVpbnQ+LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNiwgMCwgMCwgMCwgMCwgMCk7CisgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpSMTZfVU5P
Uk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6
UjE2X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1IxNl9F
WFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjE2X0VYVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMTY+LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMTYsIEdMZmxvYXQ+
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1B
TElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYsIDAsIDAsIDAs
IDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBJRDo6UjMyRzMyQjMyQTMyX0ZMT0FUOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRm9ybWF0IGluZm8oSUQ6OlIzMkczMkIzMkEzMl9GTE9BVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJGLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX1JHQkEzMkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR2VuZXJhdGVNaXA8UjMyRzMyQjMyQTMyRj4sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIzMkczMkIzMkEzMkYsIEdMZmxvYXQ+LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0ZMT0FULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDMyLCAzMiwgMzIsIDMyLCAwLCAwKTsKKyAgICAgICAg
ICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OlIzMkczMkIzMkEz
Ml9TSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8o
SUQ6OlIzMkczMkIzMkEzMl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1JHQkEzMkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
UkdCQTMySSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1p
cDxSMzJHMzJCMzJBMzJTPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS
ZWFkQ29sb3I8UjMyRzMyQjMyQTMyUywgR0xpbnQ+LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAzMiwgMzIsIDMyLCAzMiwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIElEOjpSMzJHMzJCMzJBMzJfVUlOVDoKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSMzJHMzJCMzJBMzJfVUlOVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJVSSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJVSSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMzJHMzJCMzJBMzI+LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMzJHMzJCMzJBMzIs
IEdMdWludD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdO
RURfSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMyLCAzMiwgMzIs
IDMyLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAg
IGNhc2UgSUQ6OlIzMkczMkIzMl9GTE9BVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSMzJHMzJCMzJfRkxPQVQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfUkdCMzJGLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1JHQjMyRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHZW5lcmF0ZU1pcDxSMzJHMzJCMzJGPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSZWFkQ29sb3I8UjMyRzMyQjMyRiwgR0xmbG9hdD4sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMzIsIDMyLCAzMiwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4g
aW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpSMzJHMzJCMzJfU0lOVDoKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSMzJHMzJCMzJf
U0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0IzMkksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCMzJJLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIzMkczMkIzMlM+LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMzJHMzJCMzJTLCBH
TGludD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfSU5ULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMyLCAzMiwgMzIsIDAsIDAsIDApOwor
ICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6UjMy
RzMyQjMyX1VJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQg
aW5mbyhJRDo6UjMyRzMyQjMyX1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfUkdCMzJVSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9SR0IzMlVJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRl
TWlwPFIzMkczMkIzMj4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVh
ZENvbG9yPFIzMkczMkIzMiwgR0x1aW50PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9VTlNJR05FRF9JTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMzIsIDMyLCAzMiwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIElEOjpSMzJHMzJfRkxPQVQ6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjMyRzMyX0ZMT0FULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHMzJGLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1JHMzJGLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIzMkczMkY+LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMzJHMzJGLCBHTGZsb2F0PiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAzMiwgMzIsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJu
IGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6UjMyRzMyX1NJTlQ6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjMyRzMyX1NJTlQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkczMkksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkczMkksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjMyRzMyUz4sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIzMkczMlMsIEdMaW50PiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9JTlQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMzIsIDMyLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJl
dHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OlIzMkczMl9VSU5UOgorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIzMkczMl9V
SU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHMzJVSSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRzMyVUksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjMyRzMyPiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjMyRzMyLCBHTHVpbnQ+LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMiwgMzIsIDAsIDAsIDAsIDApOwor
ICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6UjMy
X0ZMT0FUOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8o
SUQ6OlIzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9S
MzJGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1IzMkYsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjMyRj4sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIzMkYsIEdMZmxvYXQ+
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0ZMT0FULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMyLCAwLCAwLCAwLCAwLCAwKTsKKyAgICAg
ICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OlIzMl9TSU5U
OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIz
Ml9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1IzMkksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjMySSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMzJTPiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjMyUywgR0xpbnQ+LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0lOVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAzMiwgMCwgMCwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1
cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpSMzJfVUlOVDoKKyAgICAgICAg
eworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSMzJfVUlOVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SMzJVSSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SMzJVSSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMzI+LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMzIsIEdMdWludD4sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMyLCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVy
biBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OlI0RzRCNEE0X1VOT1JNOgorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlI0RzRCNEE0
X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFI0RzRCNEE0PiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjRHNEI0QTQsIEdMZmxv
YXQ+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05P
Uk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNCwgNCwgNCwg
NCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIElEOjpSNUc1QjVBMV9VTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IEZvcm1hdCBpbmZvKElEOjpSNUc1QjVBMV9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9SR0I1X0ExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1JHQjVfQTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR2VuZXJhdGVNaXA8UjVHNUI1QTE+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJlYWRDb2xvcjxSNUc1QjVBMSwgR0xmbG9hdD4sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA1LCA1LCA1LCAxLCAwLCAwKTsKKyAgICAgICAgICAgIHJl
dHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OlI1RzZCNV9VTk9STToKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSNUc2QjVf
VU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCNTY1LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQjU2NSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSNUc2QjU+LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSNUc2QjUsIEdMZmxvYXQ+
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1B
TElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNSwgNiwgNSwgMCwg
MCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IElEOjpSOEc4QjhBOF9TSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
Rm9ybWF0IGluZm8oSUQ6OlI4RzhCOEE4X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfUkdCQThJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1JHQkE4SSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5l
cmF0ZU1pcDxSOEc4QjhBOFM+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJlYWRDb2xvcjxSOEc4QjhBOFMsIEdMaW50PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9JTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OCwgOCwgOCwgOCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIElEOjpSOEc4QjhBOF9TTk9STToKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSOEc4QjhBOF9TTk9STSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOF9TTk9STSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOF9TTk9STSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4QjhBOFM+LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSOEc4QjhBOFMsIEdMZmxvYXQ+LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1NJR05FRF9OT1JNQUxJWkVE
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsIDgsIDgsIDgsIDAsIDAp
OworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6
UjhHOEI4QThfVUlOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1h
dCBpbmZvKElEOjpSOEc4QjhBOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX1JHQkE4VUksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfUkdCQThVSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0
ZU1pcDxSOEc4QjhBOD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVh
ZENvbG9yPFI4RzhCOEE4LCBHTHVpbnQ+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX1VOU0lHTkVEX0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA4LCA4LCA4LCA4LCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgSUQ6OlI4RzhCOEE4X1VOT1JNOgorICAgICAgICB7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlI4RzhCOEE4X1VOT1JNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFI4RzhCOEE4PiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjhHOEI4QTgsIEdMZmxvYXQ+LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCwgOCwgOCwgOCwgMCwgMCk7CisgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpSOEc4QjhB
OF9VTk9STV9TUkdCOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0
IGluZm8oSUQ6OlI4RzhCOEE4X1VOT1JNX1NSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfU1JHQjhfQUxQSEE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1NSR0I4X0FMUEhBOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4QjhBOD4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUmVhZENvbG9yPFI4RzhCOEE4LCBHTGZsb2F0PiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsIDgsIDgsIDgsIDAsIDApOworICAgICAgICAg
ICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6UjhHOEI4X1NJTlQ6
CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjhH
OEI4X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCOEks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCOEksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjhHOEI4Uz4sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFI4RzhCOFMsIEdMaW50
PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9JTlQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCwgOCwgOCwgMCwgMCwgMCk7CisgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpSOEc4QjhfU05P
Uk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6
UjhHOEI4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JH
QjhfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCOF9T
Tk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxS
OEc4QjhTPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8
UjhHOEI4UywgR0xmbG9hdD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfU0lHTkVEX05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOCwgOCwgOCwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIElEOjpSOEc4QjhfVUlOVDoKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSOEc4QjhfVUlOVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0I4VUksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfUkdCOFVJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdlbmVyYXRlTWlwPFI4RzhCOD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUmVhZENvbG9yPFI4RzhCOCwgR0x1aW50PiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOCwgOCwgOCwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5m
bzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpSOEc4QjhfVU5PUk06CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjhHOEI4X1VOT1JNLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQjgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCOCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4Qjg+LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSOEc4QjgsIEdMZmxvYXQ+LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCwgOCwgOCwgMCwgMCwgMCk7CisgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpSOEc4Qjhf
VU5PUk1fU1JHQjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBp
bmZvKElEOjpSOEc4QjhfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9TUkdCOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9TUkdCOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1p
cDxSOEc4Qjg+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xv
cjxSOEc4QjgsIEdMZmxvYXQ+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOCwgOCwgOCwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIElEOjpSOEc4X1NJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjhHOF9TSU5ULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1JHOEksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfUkc4SSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHZW5lcmF0ZU1pcDxSOEc4Uz4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUmVhZENvbG9yPFI4RzhTLCBHTGludD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgs
IDgsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBJRDo6UjhHOF9TTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSOEc4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX1JHOF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9SRzhfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR2VuZXJhdGVNaXA8UjhHOFM+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJlYWRDb2xvcjxSOEc4UywgR0xmbG9hdD4sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfU0lHTkVEX05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOCwgOCwgMCwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4g
aW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpSOEc4X1VJTlQ6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjhHOF9VSU5ULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHOFVJLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHOFVJLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFI4Rzg+LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSOEc4LCBHTHVpbnQ+LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA4LCA4LCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVy
biBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OlI4RzhfVU5PUk06CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjhHOF9VTk9STSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRzgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkc4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFI4Rzg+LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSOEc4LCBHTGZsb2F0PiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsIDgsIDAsIDAsIDAsIDApOworICAgICAgICAg
ICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6UjhfU0lOVDoKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSOF9TSU5U
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1I4SSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SOEksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjhTPiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjhTLCBHTGludD4sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDgsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6UjhfU05PUk06CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjhfU05PUk0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjhfU05PUk0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfUjhfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjhTPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSZWFkQ29sb3I8UjhTLCBHTGZsb2F0PiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9TSUdORURfTk9STUFMSVpFRCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA4LCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVy
biBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OlI4X1VJTlQ6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjhfVUlOVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SOFVJLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1I4VUksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR2VuZXJhdGVNaXA8Ujg+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFJlYWRDb2xvcjxSOCwgR0x1aW50PiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOCwgMCwgMCwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpSOF9VTk9STToKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSOF9VTk9STSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SOCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9SOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHZW5lcmF0ZU1pcDxSOD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmVhZENvbG9yPFI4LCBHTGZsb2F0PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDgsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6UjlHOUI5RTVfU0hBUkVERVhQOgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlI5RzlCOUU1X1NIQVJF
REVYUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0I5X0U1LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQjlfRTUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjlHOUI5RTU+LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSOUc5QjlFNSwgR0xm
bG9hdD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfRkxPQVQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOSwgOSwgOSwgMCwgMCwgMCk7Cisg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpTOF9V
SU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6
OlM4X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfU1RFTkNJ
TF9JTkRFWDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfU1RFTkNJ
TF9JTkRFWDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCA4KTsKKyAgICAgICAgICAg
IHJldHVybiBpbmZvOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgLy8gY2xhbmct
Zm9ybWF0IG9uCisKKyAgICBzdGF0aWMgY29uc3QgRm9ybWF0IG5vbmVJbmZvKElEOjpOT05FLCBH
TF9OT05FLCBHTF9OT05FLCBudWxscHRyLCBudWxscHRyLCBHTF9OT05FLCAwLCAwLCAwLCAwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCk7CisgICAgcmV0dXJuIG5vbmVJ
bmZvOworfQorCit9ICAvLyBuYW1lc3BhY2UgYW5nbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9GcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3RJ
bXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL0ZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdEltcGwuaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRnJhbWVi
dWZmZXJBdHRhY2htZW50T2JqZWN0SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUg
QEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisvLyBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3RJbXBsLmg6CisvLyAg
IENvbW1vbiBhbmNlbnN0b3IgZm9yIGFsbCBpbXBsZW1lbnRhdGlvbnMgb2YgRkJPIGF0dGFjaGFi
bGUtb2JqZWN0cy4KKy8vICAgVGhpcyBtZWFucyBTdXJmYWNlcywgVGV4dHVyZXMgYW5kIFJlbmRl
cmJ1ZmZlcnMuCisvLworCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0ZSQU1FQlVGRkVSX0FU
VEFDSE1FTlRfT0JKRUNUX0lNUExfSF8KKyNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfRlJBTUVC
VUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfSU1QTF9IXworCisjaW5jbHVkZSAibGliQU5HTEUvRnJh
bWVidWZmZXJBdHRhY2htZW50LmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRPYmplY3RJbXBsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCit7CisgIHB1Ymxp
YzoKKyAgICBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3RJbXBsKCkge30KKyAgICB2aXJ0dWFs
IH5GcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3RJbXBsKCkge30KKworICAgIHZpcnR1YWwgZ2w6
OkVycm9yIGdldEF0dGFjaG1lbnRSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0
YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQgKipydE91
dCkKKyAgICB7CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiZ2V0QXR0YWNobWVudFJlbmRlclRhcmdldCBub3Qgc3Vw
cG9ydGVkLiIpOworICAgIH0KK307CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8v
IExJQkFOR0xFX1JFTkRFUkVSX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX0lNUExfSF8K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9GcmFt
ZWJ1ZmZlckltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvRnJhbWVidWZmZXJJbXBsLmgJKHJldmlzaW9uIDIwNzgwNCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9GcmFtZWJ1ZmZl
ckltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMjcgKzI4LDI3IEBAIG5hbWVzcGFjZSByeAog
Y2xhc3MgRnJhbWVidWZmZXJJbXBsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiB7CiAgIHB1YmxpYzoK
LSAgICBleHBsaWNpdCBGcmFtZWJ1ZmZlckltcGwoY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEYXRh
ICZkYXRhKSA6IG1EYXRhKGRhdGEpIHsgfQorICAgIGV4cGxpY2l0IEZyYW1lYnVmZmVySW1wbChj
b25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUpIDogbVN0YXRlKHN0YXRlKSB7fQogICAg
IHZpcnR1YWwgfkZyYW1lYnVmZmVySW1wbCgpIHsgfQogCiAgICAgdmlydHVhbCBnbDo6RXJyb3Ig
ZGlzY2FyZChzaXplX3QgY291bnQsIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpID0gMDsKICAg
ICB2aXJ0dWFsIGdsOjpFcnJvciBpbnZhbGlkYXRlKHNpemVfdCBjb3VudCwgY29uc3QgR0xlbnVt
ICphdHRhY2htZW50cykgPSAwOwogICAgIHZpcnR1YWwgZ2w6OkVycm9yIGludmFsaWRhdGVTdWIo
c2l6ZV90IGNvdW50LCBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzLCBjb25zdCBnbDo6UmVjdGFu
Z2xlICZhcmVhKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBjbGVhcihjb25zdCBnbDo6
RGF0YSAmZGF0YSwgR0xiaXRmaWVsZCBtYXNrKSA9IDA7Ci0gICAgdmlydHVhbCBnbDo6RXJyb3Ig
Y2xlYXJCdWZmZXJmdihjb25zdCBnbDo6RGF0YSAmZGF0YSwKKyAgICB2aXJ0dWFsIGdsOjpFcnJv
ciBjbGVhcihDb250ZXh0SW1wbCAqY29udGV4dCwgR0xiaXRmaWVsZCBtYXNrKSA9IDA7CisgICAg
dmlydHVhbCBnbDo6RXJyb3IgY2xlYXJCdWZmZXJmdihDb250ZXh0SW1wbCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBidWZmZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWVzKSA9IDA7Ci0g
ICAgdmlydHVhbCBnbDo6RXJyb3IgY2xlYXJCdWZmZXJ1aXYoY29uc3QgZ2w6OkRhdGEgJmRhdGEs
CisgICAgdmlydHVhbCBnbDo6RXJyb3IgY2xlYXJCdWZmZXJ1aXYoQ29udGV4dEltcGwgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWVz
KSA9IDA7Ci0gICAgdmlydHVhbCBnbDo6RXJyb3IgY2xlYXJCdWZmZXJpdihjb25zdCBnbDo6RGF0
YSAmZGF0YSwKKyAgICB2aXJ0dWFsIGdsOjpFcnJvciBjbGVhckJ1ZmZlcml2KENvbnRleHRJbXBs
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1
ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZm
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFs
dWVzKSA9IDA7Ci0gICAgdmlydHVhbCBnbDo6RXJyb3IgY2xlYXJCdWZmZXJmaShjb25zdCBnbDo6
RGF0YSAmZGF0YSwKKyAgICB2aXJ0dWFsIGdsOjpFcnJvciBjbGVhckJ1ZmZlcmZpKENvbnRleHRJ
bXBsICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRyYXdi
dWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGRlcHRo
LApAQCAtNTYsMTkgKzU2LDI2IEBAIGNsYXNzIEZyYW1lYnVmZmVySW1wbCA6IGFuZ2xlOjpOb25D
b3B5YWIKIAogICAgIHZpcnR1YWwgR0xlbnVtIGdldEltcGxlbWVudGF0aW9uQ29sb3JSZWFkRm9y
bWF0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgR0xlbnVtIGdldEltcGxlbWVudGF0aW9uQ29s
b3JSZWFkVHlwZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciByZWFkUGl4ZWxz
KGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmFyZWEsIEdMZW51
bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZvaWQgKnBpeGVscykgY29uc3QgPSAwOwotCi0gICAg
dmlydHVhbCBnbDo6RXJyb3IgYmxpdChjb25zdCBnbDo6U3RhdGUgJnN0YXRlLCBjb25zdCBnbDo6
UmVjdGFuZ2xlICZzb3VyY2VBcmVhLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZkZXN0QXJlYSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQgbWFzaywgR0xlbnVtIGZpbHRlciwg
Y29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2VGcmFtZWJ1ZmZlcikgPSAwOworICAgIHZpcnR1
YWwgZ2w6OkVycm9yIHJlYWRQaXhlbHMoQ29udGV4dEltcGwgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZhcmVhLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x2b2lkICpwaXhlbHMpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgZ2w6OkVy
cm9yIGJsaXQoQ29udGV4dEltcGwgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmZGVzdEFyZWEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGJpdGZpZWxkIG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZmlsdGVyKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2hlY2tTdGF0dXMoKSBjb25zdCA9
IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3luY1N0YXRlKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6
RGlydHlCaXRzICZkaXJ0eUJpdHMpID0gMDsKIAotICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6
RGF0YSAmZ2V0RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1EYXRhOyB9CisgICAgY29uc3QgZ2w6OkZy
YW1lYnVmZmVyU3RhdGUgJmdldFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbVN0YXRlOyB9CiAKICAg
cHJvdGVjdGVkOgotICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGF0YSAmbURhdGE7CisgICAg
Y29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJm1TdGF0ZTsKIH07CiAKIH0KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9GcmFtZWJ1ZmZlckltcGxf
bW9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9GcmFtZWJ1ZmZlckltcGxfbW9jay5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRnJhbWVidWZmZXJJ
bXBsX21vY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjAsMzIgKzIwLDI3IEBAIG5hbWVzcGFjZSBy
eAogY2xhc3MgTW9ja0ZyYW1lYnVmZmVySW1wbCA6IHB1YmxpYyByeDo6RnJhbWVidWZmZXJJbXBs
CiB7CiAgIHB1YmxpYzoKLSAgICBNb2NrRnJhbWVidWZmZXJJbXBsKCkgOiByeDo6RnJhbWVidWZm
ZXJJbXBsKGdsOjpGcmFtZWJ1ZmZlcjo6RGF0YSgpKSB7fQorICAgIE1vY2tGcmFtZWJ1ZmZlcklt
cGwoKSA6IHJ4OjpGcmFtZWJ1ZmZlckltcGwoZ2w6OkZyYW1lYnVmZmVyU3RhdGUoKSkge30KICAg
ICB2aXJ0dWFsIH5Nb2NrRnJhbWVidWZmZXJJbXBsKCkgeyBkZXN0cm95KCk7IH0KIAogICAgIE1P
Q0tfTUVUSE9EMihkaXNjYXJkLCBnbDo6RXJyb3Ioc2l6ZV90LCBjb25zdCBHTGVudW0gKikpOwog
ICAgIE1PQ0tfTUVUSE9EMihpbnZhbGlkYXRlLCBnbDo6RXJyb3Ioc2l6ZV90LCBjb25zdCBHTGVu
dW0gKikpOwogICAgIE1PQ0tfTUVUSE9EMyhpbnZhbGlkYXRlU3ViLCBnbDo6RXJyb3Ioc2l6ZV90
LCBjb25zdCBHTGVudW0gKiwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmKSk7CiAKLSAgICBNT0NLX01F
VEhPRDIoY2xlYXIsIGdsOjpFcnJvcihjb25zdCBnbDo6RGF0YSAmLCBHTGJpdGZpZWxkKSk7Ci0g
ICAgTU9DS19NRVRIT0Q0KGNsZWFyQnVmZmVyZnYsIGdsOjpFcnJvcihjb25zdCBnbDo6RGF0YSAm
LCBHTGVudW0sIEdMaW50LCBjb25zdCBHTGZsb2F0ICopKTsKLSAgICBNT0NLX01FVEhPRDQoY2xl
YXJCdWZmZXJ1aXYsIGdsOjpFcnJvcihjb25zdCBnbDo6RGF0YSAmLCBHTGVudW0sIEdMaW50LCBj
b25zdCBHTHVpbnQgKikpOwotICAgIE1PQ0tfTUVUSE9ENChjbGVhckJ1ZmZlcml2LCBnbDo6RXJy
b3IoY29uc3QgZ2w6OkRhdGEgJiwgR0xlbnVtLCBHTGludCwgY29uc3QgR0xpbnQgKikpOwotICAg
IE1PQ0tfTUVUSE9ENShjbGVhckJ1ZmZlcmZpLCBnbDo6RXJyb3IoY29uc3QgZ2w6OkRhdGEgJiwg
R0xlbnVtLCBHTGludCwgR0xmbG9hdCwgR0xpbnQpKTsKKyAgICBNT0NLX01FVEhPRDIoY2xlYXIs
IGdsOjpFcnJvcihDb250ZXh0SW1wbCAqLCBHTGJpdGZpZWxkKSk7CisgICAgTU9DS19NRVRIT0Q0
KGNsZWFyQnVmZmVyZnYsIGdsOjpFcnJvcihDb250ZXh0SW1wbCAqLCBHTGVudW0sIEdMaW50LCBj
b25zdCBHTGZsb2F0ICopKTsKKyAgICBNT0NLX01FVEhPRDQoY2xlYXJCdWZmZXJ1aXYsIGdsOjpF
cnJvcihDb250ZXh0SW1wbCAqLCBHTGVudW0sIEdMaW50LCBjb25zdCBHTHVpbnQgKikpOworICAg
IE1PQ0tfTUVUSE9ENChjbGVhckJ1ZmZlcml2LCBnbDo6RXJyb3IoQ29udGV4dEltcGwgKiwgR0xl
bnVtLCBHTGludCwgY29uc3QgR0xpbnQgKikpOworICAgIE1PQ0tfTUVUSE9ENShjbGVhckJ1ZmZl
cmZpLCBnbDo6RXJyb3IoQ29udGV4dEltcGwgKiwgR0xlbnVtLCBHTGludCwgR0xmbG9hdCwgR0xp
bnQpKTsKIAogICAgIE1PQ0tfQ09OU1RfTUVUSE9EMChnZXRJbXBsZW1lbnRhdGlvbkNvbG9yUmVh
ZEZvcm1hdCwgR0xlbnVtKCkpOwogICAgIE1PQ0tfQ09OU1RfTUVUSE9EMChnZXRJbXBsZW1lbnRh
dGlvbkNvbG9yUmVhZFR5cGUsIEdMZW51bSgpKTsKLSAgICBNT0NLX0NPTlNUX01FVEhPRDUoCi0g
ICAgICAgIHJlYWRQaXhlbHMsCi0gICAgICAgIGdsOjpFcnJvcihjb25zdCBnbDo6U3RhdGUgJiwg
Y29uc3QgZ2w6OlJlY3RhbmdsZSAmLCBHTGVudW0sIEdMZW51bSwgR0x2b2lkICopKTsKLQotICAg
IE1PQ0tfTUVUSE9ENihibGl0LAotICAgICAgICAgICAgICAgICBnbDo6RXJyb3IoY29uc3QgZ2w6
OlN0YXRlICYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xl
ICYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICYsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJpdGZpZWxkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZy
YW1lYnVmZmVyICopKTsKKyAgICBNT0NLX0NPTlNUX01FVEhPRDUocmVhZFBpeGVscywKKyAgICAg
ICAgICAgICAgICAgICAgICAgZ2w6OkVycm9yKENvbnRleHRJbXBsICosIGNvbnN0IGdsOjpSZWN0
YW5nbGUgJiwgR0xlbnVtLCBHTGVudW0sIEdMdm9pZCAqKSk7CisKKyAgICBNT0NLX01FVEhPRDUo
CisgICAgICAgIGJsaXQsCisgICAgICAgIGdsOjpFcnJvcihDb250ZXh0SW1wbCAqLCBjb25zdCBn
bDo6UmVjdGFuZ2xlICYsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJiwgR0xiaXRmaWVsZCwgR0xlbnVt
KSk7CiAKICAgICBNT0NLX0NPTlNUX01FVEhPRDAoY2hlY2tTdGF0dXMsIGJvb2woKSk7CiAKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9HTEltcGxG
YWN0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL0dMSW1wbEZhY3RvcnkuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvR0xJbXBsRmFjdG9yeS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsODggQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBHTEltcGxGYWN0b3J5Lmg6
CisvLyAgIEZhY3RvcnkgaW50ZXJmYWNlIGZvciBPcGVuR0wgRVMgSW1wbCBvYmplY3RzLgorLy8K
KworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9HTElNUExGQUNUT1JZX0hfCisjZGVmaW5lIExJ
QkFOR0xFX1JFTkRFUkVSX0dMSU1QTEZBQ1RPUllfSF8KKworI2luY2x1ZGUgPHZlY3Rvcj4KKwor
I2luY2x1ZGUgImFuZ2xlX2dsLmgiCisjaW5jbHVkZSAibGliQU5HTEUvRnJhbWVidWZmZXIuaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9Qcm9ncmFtLmgiCisjaW5jbHVkZSAibGliQU5HTEUvU2hhZGVy
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvVHJhbnNmb3JtRmVlZGJhY2suaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9WZXJ0ZXhBcnJheS5oIgorCituYW1lc3BhY2UgZ2wKK3sKK2NsYXNzIENvbnRleHRT
dGF0ZTsKK30KKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBCdWZmZXJJbXBsOworY2xhc3MgQ29t
cGlsZXJJbXBsOworY2xhc3MgQ29udGV4dEltcGw7CitjbGFzcyBGZW5jZU5WSW1wbDsKK2NsYXNz
IEZlbmNlU3luY0ltcGw7CitjbGFzcyBGcmFtZWJ1ZmZlckltcGw7CitjbGFzcyBQYXRoSW1wbDsK
K2NsYXNzIFByb2dyYW1JbXBsOworY2xhc3MgUXVlcnlJbXBsOworY2xhc3MgUmVuZGVyYnVmZmVy
SW1wbDsKK2NsYXNzIFNhbXBsZXJJbXBsOworY2xhc3MgU2hhZGVySW1wbDsKK2NsYXNzIFRleHR1
cmVJbXBsOworY2xhc3MgVHJhbnNmb3JtRmVlZGJhY2tJbXBsOworY2xhc3MgVmVydGV4QXJyYXlJ
bXBsOworCitjbGFzcyBHTEltcGxGYWN0b3J5IDogYW5nbGU6Ok5vbkNvcHlhYmxlCit7CisgIHB1
YmxpYzoKKyAgICBHTEltcGxGYWN0b3J5KCkge30KKyAgICB2aXJ0dWFsIH5HTEltcGxGYWN0b3J5
KCkge30KKworICAgIC8vIFNoYWRlciBjcmVhdGlvbgorICAgIHZpcnR1YWwgQ29tcGlsZXJJbXBs
ICpjcmVhdGVDb21waWxlcigpID0gMDsKKyAgICB2aXJ0dWFsIFNoYWRlckltcGwgKmNyZWF0ZVNo
YWRlcihjb25zdCBnbDo6U2hhZGVyU3RhdGUgJmRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIFByb2dy
YW1JbXBsICpjcmVhdGVQcm9ncmFtKGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJmRhdGEpID0gMDsK
KworICAgIC8vIEZyYW1lYnVmZmVyIGNyZWF0aW9uCisgICAgdmlydHVhbCBGcmFtZWJ1ZmZlcklt
cGwgKmNyZWF0ZUZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZkYXRhKSA9
IDA7CisKKyAgICAvLyBUZXh0dXJlIGNyZWF0aW9uCisgICAgdmlydHVhbCBUZXh0dXJlSW1wbCAq
Y3JlYXRlVGV4dHVyZShjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZzdGF0ZSkgPSAwOworCisgICAg
Ly8gUmVuZGVyYnVmZmVyIGNyZWF0aW9uCisgICAgdmlydHVhbCBSZW5kZXJidWZmZXJJbXBsICpj
cmVhdGVSZW5kZXJidWZmZXIoKSA9IDA7CisKKyAgICAvLyBCdWZmZXIgY3JlYXRpb24KKyAgICB2
aXJ0dWFsIEJ1ZmZlckltcGwgKmNyZWF0ZUJ1ZmZlcigpID0gMDsKKworICAgIC8vIFZlcnRleCBB
cnJheSBjcmVhdGlvbgorICAgIHZpcnR1YWwgVmVydGV4QXJyYXlJbXBsICpjcmVhdGVWZXJ0ZXhB
cnJheShjb25zdCBnbDo6VmVydGV4QXJyYXlTdGF0ZSAmZGF0YSkgPSAwOworCisgICAgLy8gUXVl
cnkgYW5kIEZlbmNlIGNyZWF0aW9uCisgICAgdmlydHVhbCBRdWVyeUltcGwgKmNyZWF0ZVF1ZXJ5
KEdMZW51bSB0eXBlKSA9IDA7CisgICAgdmlydHVhbCBGZW5jZU5WSW1wbCAqY3JlYXRlRmVuY2VO
VigpID0gMDsKKyAgICB2aXJ0dWFsIEZlbmNlU3luY0ltcGwgKmNyZWF0ZUZlbmNlU3luYygpID0g
MDsKKworICAgIC8vIFRyYW5zZm9ybSBGZWVkYmFjayBjcmVhdGlvbgorICAgIHZpcnR1YWwgVHJh
bnNmb3JtRmVlZGJhY2tJbXBsICpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygKKyAgICAgICAgY29u
c3QgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrU3RhdGUgJnN0YXRlKSA9IDA7CisKKyAgICAvLyBTYW1w
bGVyIG9iamVjdCBjcmVhdGlvbgorICAgIHZpcnR1YWwgU2FtcGxlckltcGwgKmNyZWF0ZVNhbXBs
ZXIoKSA9IDA7CisKKyAgICB2aXJ0dWFsIHN0ZDo6dmVjdG9yPFBhdGhJbXBsICo+IGNyZWF0ZVBh
dGhzKEdMc2l6ZWkgcmFuZ2UpID0gMDsKK307CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5k
aWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX0dMSU1QTEZBQ1RPUllfSF8KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9JbXBsRmFjdG9yeS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9J
bXBsRmFjdG9yeS5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvSW1wbEZhY3RvcnkuaAkobm9uZXhpc3RlbnQpCkBAIC0x
LDc1ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBJbXBsRmFjdG9yeS5oOgotLy8gICBGYWN0b3J5IGlu
dGVyZmFjZSBmb3IgSW1wbCBvYmplY3RzLgotLy8KLQotI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJF
Ul9JTVBMRkFDVE9SWV9IXwotI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9JTVBMRkFDVE9SWV9I
XwotCi0jaW5jbHVkZSAibGliQU5HTEUvRnJhbWVidWZmZXIuaCIKLSNpbmNsdWRlICJsaWJBTkdM
RS9Qcm9ncmFtLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvU2hhZGVyLmgiCi0jaW5jbHVkZSAibGli
QU5HTEUvVmVydGV4QXJyYXkuaCIKLQotbmFtZXNwYWNlIHJ4Ci17Ci1jbGFzcyBCdWZmZXJJbXBs
OwotY2xhc3MgQ29tcGlsZXJJbXBsOwotY2xhc3MgRmVuY2VOVkltcGw7Ci1jbGFzcyBGZW5jZVN5
bmNJbXBsOwotY2xhc3MgRnJhbWVidWZmZXJJbXBsOwotY2xhc3MgUHJvZ3JhbUltcGw7Ci1jbGFz
cyBRdWVyeUltcGw7Ci1jbGFzcyBSZW5kZXJidWZmZXJJbXBsOwotY2xhc3MgU2FtcGxlckltcGw7
Ci1jbGFzcyBTaGFkZXJJbXBsOwotY2xhc3MgVGV4dHVyZUltcGw7Ci1jbGFzcyBUcmFuc2Zvcm1G
ZWVkYmFja0ltcGw7Ci1jbGFzcyBWZXJ0ZXhBcnJheUltcGw7Ci1jbGFzcyBTdHJlYW1JbXBsOwot
Ci1jbGFzcyBJbXBsRmFjdG9yeSA6IGFuZ2xlOjpOb25Db3B5YWJsZQotewotICBwdWJsaWM6Ci0g
ICAgSW1wbEZhY3RvcnkoKSB7fQotICAgIHZpcnR1YWwgfkltcGxGYWN0b3J5KCkge30KLQotICAg
IC8vIFNoYWRlciBjcmVhdGlvbgotICAgIHZpcnR1YWwgQ29tcGlsZXJJbXBsICpjcmVhdGVDb21w
aWxlcigpID0gMDsKLSAgICB2aXJ0dWFsIFNoYWRlckltcGwgKmNyZWF0ZVNoYWRlcihjb25zdCBn
bDo6U2hhZGVyOjpEYXRhICZkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCBQcm9ncmFtSW1wbCAqY3Jl
YXRlUHJvZ3JhbShjb25zdCBnbDo6UHJvZ3JhbTo6RGF0YSAmZGF0YSkgPSAwOwotCi0gICAgLy8g
RnJhbWVidWZmZXIgY3JlYXRpb24KLSAgICB2aXJ0dWFsIEZyYW1lYnVmZmVySW1wbCAqY3JlYXRl
RnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEYXRhICZkYXRhKSA9IDA7Ci0KLSAg
ICAvLyBUZXh0dXJlIGNyZWF0aW9uCi0gICAgdmlydHVhbCBUZXh0dXJlSW1wbCAqY3JlYXRlVGV4
dHVyZShHTGVudW0gdGFyZ2V0KSA9IDA7Ci0KLSAgICAvLyBSZW5kZXJidWZmZXIgY3JlYXRpb24K
LSAgICB2aXJ0dWFsIFJlbmRlcmJ1ZmZlckltcGwgKmNyZWF0ZVJlbmRlcmJ1ZmZlcigpID0gMDsK
LQotICAgIC8vIEJ1ZmZlciBjcmVhdGlvbgotICAgIHZpcnR1YWwgQnVmZmVySW1wbCAqY3JlYXRl
QnVmZmVyKCkgPSAwOwotCi0gICAgLy8gVmVydGV4IEFycmF5IGNyZWF0aW9uCi0gICAgdmlydHVh
bCBWZXJ0ZXhBcnJheUltcGwgKmNyZWF0ZVZlcnRleEFycmF5KGNvbnN0IGdsOjpWZXJ0ZXhBcnJh
eTo6RGF0YSAmZGF0YSkgPSAwOwotCi0gICAgLy8gUXVlcnkgYW5kIEZlbmNlIGNyZWF0aW9uCi0g
ICAgdmlydHVhbCBRdWVyeUltcGwgKmNyZWF0ZVF1ZXJ5KEdMZW51bSB0eXBlKSA9IDA7Ci0gICAg
dmlydHVhbCBGZW5jZU5WSW1wbCAqY3JlYXRlRmVuY2VOVigpID0gMDsKLSAgICB2aXJ0dWFsIEZl
bmNlU3luY0ltcGwgKmNyZWF0ZUZlbmNlU3luYygpID0gMDsKLQotICAgIC8vIFRyYW5zZm9ybSBG
ZWVkYmFjayBjcmVhdGlvbgotICAgIHZpcnR1YWwgVHJhbnNmb3JtRmVlZGJhY2tJbXBsICpjcmVh
dGVUcmFuc2Zvcm1GZWVkYmFjaygpID0gMDsKLQotICAgIC8vIFNhbXBsZXIgb2JqZWN0IGNyZWF0
aW9uCi0gICAgdmlydHVhbCBTYW1wbGVySW1wbCAqY3JlYXRlU2FtcGxlcigpID0gMDsKLX07Ci0K
LX0KLQotI2VuZGlmIC8vIExJQkFOR0xFX1JFTkRFUkVSX0lNUExGQUNUT1JZX0hfCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvSW5kZXhSYW5nZUNh
Y2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvSW5kZXhSYW5nZUNhY2hlLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0luZGV4UmFuZ2VDYWNo
ZS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMTQgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAo
YykgMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8v
IEluZGV4UmFuZ2VDYWNoZS5jcHA6IERlZmluZXMgdGhlIHJ4OjpJbmRleFJhbmdlQ2FjaGUgY2xh
c3Mgd2hpY2ggc3RvcmVzIGluZm9ybWF0aW9uIGFib3V0Ci0vLyByYW5nZXMgb2YgaW5kaWNlcy4K
LQotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0luZGV4UmFuZ2VDYWNoZS5oIgotI2luY2x1
ZGUgImxpYkFOR0xFL2Zvcm1hdHV0aWxzLmgiCi0KLSNpbmNsdWRlICJjb21tb24vZGVidWcuaCIK
LQotbmFtZXNwYWNlIHJ4Ci17Ci0KLXRlbXBsYXRlIDxjbGFzcyBJbmRleFR5cGU+Ci1zdGF0aWMg
UmFuZ2VVSSBDb21wdXRlVHlwZWRSYW5nZShjb25zdCBJbmRleFR5cGUgKmluZGljZXMsIEdMc2l6
ZWkgY291bnQpCi17Ci0gICAgdW5zaWduZWQgaW50IG1pbkluZGV4ID0gaW5kaWNlc1swXTsKLSAg
ICB1bnNpZ25lZCBpbnQgbWF4SW5kZXggPSBpbmRpY2VzWzBdOwotCi0gICAgZm9yIChHTHNpemVp
IGkgPSAxOyBpIDwgY291bnQ7IGkrKykKLSAgICB7Ci0gICAgICAgIGlmIChtaW5JbmRleCA+IGlu
ZGljZXNbaV0pIG1pbkluZGV4ID0gaW5kaWNlc1tpXTsKLSAgICAgICAgaWYgKG1heEluZGV4IDwg
aW5kaWNlc1tpXSkgbWF4SW5kZXggPSBpbmRpY2VzW2ldOwotICAgIH0KLQotICAgIHJldHVybiBS
YW5nZVVJKG1pbkluZGV4LCBtYXhJbmRleCk7Ci19Ci0KLVJhbmdlVUkgSW5kZXhSYW5nZUNhY2hl
OjpDb21wdXRlUmFuZ2UoR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgR0xzaXpl
aSBjb3VudCkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpCi0gICAgewotICAgICAgY2FzZSBHTF9VTlNJ
R05FRF9CWVRFOgotICAgICAgICByZXR1cm4gQ29tcHV0ZVR5cGVkUmFuZ2Uoc3RhdGljX2Nhc3Q8
Y29uc3QgR0x1Ynl0ZSo+KGluZGljZXMpLCBjb3VudCk7Ci0gICAgICBjYXNlIEdMX1VOU0lHTkVE
X0lOVDoKLSAgICAgICAgcmV0dXJuIENvbXB1dGVUeXBlZFJhbmdlKHN0YXRpY19jYXN0PGNvbnN0
IEdMdWludCo+KGluZGljZXMpLCBjb3VudCk7Ci0gICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JU
OgotICAgICAgICByZXR1cm4gQ29tcHV0ZVR5cGVkUmFuZ2Uoc3RhdGljX2Nhc3Q8Y29uc3QgR0x1
c2hvcnQqPihpbmRpY2VzKSwgY291bnQpOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgVU5SRUFD
SEFCTEUoKTsKLSAgICAgICAgcmV0dXJuIFJhbmdlVUkoKTsKLSAgICB9Ci19Ci0KLXZvaWQgSW5k
ZXhSYW5nZUNhY2hlOjphZGRSYW5nZShHTGVudW0gdHlwZSwgdW5zaWduZWQgaW50IG9mZnNldCwg
R0xzaXplaSBjb3VudCwgY29uc3QgUmFuZ2VVSSAmcmFuZ2UpCi17Ci0gICAgbUluZGV4UmFuZ2VD
YWNoZVtJbmRleFJhbmdlKHR5cGUsIG9mZnNldCwgY291bnQpXSA9IHJhbmdlOwotfQotCi12b2lk
IEluZGV4UmFuZ2VDYWNoZTo6aW52YWxpZGF0ZVJhbmdlKHVuc2lnbmVkIGludCBvZmZzZXQsIHVu
c2lnbmVkIGludCBzaXplKQotewotICAgIHVuc2lnbmVkIGludCBpbnZhbGlkYXRlU3RhcnQgPSBv
ZmZzZXQ7Ci0gICAgdW5zaWduZWQgaW50IGludmFsaWRhdGVFbmQgPSBvZmZzZXQgKyBzaXplOwot
Ci0gICAgSW5kZXhSYW5nZU1hcDo6aXRlcmF0b3IgaSA9IG1JbmRleFJhbmdlQ2FjaGUuYmVnaW4o
KTsKLSAgICB3aGlsZSAoaSAhPSBtSW5kZXhSYW5nZUNhY2hlLmVuZCgpKQotICAgIHsKLSAgICAg
ICAgdW5zaWduZWQgaW50IHJhbmdlU3RhcnQgPSBpLT5maXJzdC5vZmZzZXQ7Ci0gICAgICAgIHVu
c2lnbmVkIGludCByYW5nZUVuZCA9IGktPmZpcnN0Lm9mZnNldCArIChnbDo6R2V0VHlwZUluZm8o
aS0+Zmlyc3QudHlwZSkuYnl0ZXMgKiBpLT5maXJzdC5jb3VudCk7Ci0KLSAgICAgICAgaWYgKGlu
dmFsaWRhdGVFbmQgPCByYW5nZVN0YXJ0IHx8IGludmFsaWRhdGVTdGFydCA+IHJhbmdlRW5kKQot
ICAgICAgICB7Ci0gICAgICAgICAgICArK2k7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAg
ICAgICB7Ci0gICAgICAgICAgICBtSW5kZXhSYW5nZUNhY2hlLmVyYXNlKGkrKyk7Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLWJvb2wgSW5kZXhSYW5nZUNhY2hlOjpmaW5kUmFuZ2UoR0xlbnVtIHR5
cGUsIHVuc2lnbmVkIGludCBvZmZzZXQsIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJhbmdlVUkgKm91dFJhbmdlKSBjb25zdAotewotICAgIEluZGV4UmFu
Z2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGkgPSBtSW5kZXhSYW5nZUNhY2hlLmZpbmQoSW5kZXhSYW5n
ZSh0eXBlLCBvZmZzZXQsIGNvdW50KSk7Ci0gICAgaWYgKGkgIT0gbUluZGV4UmFuZ2VDYWNoZS5l
bmQoKSkKLSAgICB7Ci0gICAgICAgIGlmIChvdXRSYW5nZSkgICAgICAgICpvdXRSYW5nZSA9IGkt
PnNlY29uZDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0g
ICAgICAgIGlmIChvdXRSYW5nZSkgICAgICAgICpvdXRSYW5nZSA9IFJhbmdlVUkoMCwgMCk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLXZvaWQgSW5kZXhSYW5nZUNhY2hlOjpj
bGVhcigpCi17Ci0gICAgbUluZGV4UmFuZ2VDYWNoZS5jbGVhcigpOwotfQotCi1JbmRleFJhbmdl
Q2FjaGU6OkluZGV4UmFuZ2U6OkluZGV4UmFuZ2UoKQotICAgIDogdHlwZShHTF9OT05FKSwgb2Zm
c2V0KDApLCBjb3VudCgwKQotewotfQotCi1JbmRleFJhbmdlQ2FjaGU6OkluZGV4UmFuZ2U6Oklu
ZGV4UmFuZ2UoR0xlbnVtIHR5cCwgaW50cHRyX3Qgb2ZmLCBHTHNpemVpIGMpCi0gICAgOiB0eXBl
KHR5cCksIG9mZnNldChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG9mZikpLCBjb3VudChjKQot
ewotfQotCi1ib29sIEluZGV4UmFuZ2VDYWNoZTo6SW5kZXhSYW5nZTo6b3BlcmF0b3I8KGNvbnN0
IEluZGV4UmFuZ2UmIHJocykgY29uc3QKLXsKLSAgICBpZiAodHlwZSAhPSByaHMudHlwZSkgcmV0
dXJuIHR5cGUgPCByaHMudHlwZTsKLSAgICBpZiAob2Zmc2V0ICE9IHJocy5vZmZzZXQpIHJldHVy
biBvZmZzZXQgPCByaHMub2Zmc2V0OwotICAgIHJldHVybiBjb3VudCA8IHJocy5jb3VudDsKLX0K
LQotfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L0luZGV4UmFuZ2VDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9JbmRleFJhbmdlQ2FjaGUuaAkocmV2aXNpb24gMjA3ODA0
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0luZGV4
UmFuZ2VDYWNoZS5oCShub25leGlzdGVudCkKQEAgLTEsNTMgKzAsMCBAQAotLy8KLS8vIENvcHly
aWdodCAoYykgMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8v
Ci0KLS8vIEluZGV4UmFuZ2VDYWNoZS5oOiBEZWZpbmVzIHRoZSByeDo6SW5kZXhSYW5nZUNhY2hl
IGNsYXNzIHdoaWNoIHN0b3JlcyBpbmZvcm1hdGlvbiBhYm91dAotLy8gcmFuZ2VzIG9mIGluZGlj
ZXMuCi0KLSNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfSU5ERVhSQU5HRUNBQ0hFX0hfCi0jZGVm
aW5lIExJQkFOR0xFX1JFTkRFUkVSX0lOREVYUkFOR0VDQUNIRV9IXwotCi0jaW5jbHVkZSAiY29t
bW9uL2FuZ2xldXRpbHMuaCIKLSNpbmNsdWRlICJjb21tb24vbWF0aHV0aWwuaCIKLQotI2luY2x1
ZGUgImFuZ2xlX2dsLmgiCi0KLSNpbmNsdWRlIDxtYXA+Ci0KLW5hbWVzcGFjZSByeAotewotCi1j
bGFzcyBJbmRleFJhbmdlQ2FjaGUKLXsKLSAgcHVibGljOgotICAgIHZvaWQgYWRkUmFuZ2UoR0xl
bnVtIHR5cGUsIHVuc2lnbmVkIGludCBvZmZzZXQsIEdMc2l6ZWkgY291bnQsIGNvbnN0IFJhbmdl
VUkgJnJhbmdlKTsKLSAgICBib29sIGZpbmRSYW5nZShHTGVudW0gdHlwZSwgdW5zaWduZWQgaW50
IG9mZnNldCwgR0xzaXplaSBjb3VudCwgUmFuZ2VVSSAqcmFuZ2VPdXQpIGNvbnN0OwotCi0gICAg
dm9pZCBpbnZhbGlkYXRlUmFuZ2UodW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IHNp
emUpOwotICAgIHZvaWQgY2xlYXIoKTsKLQotICAgIHN0YXRpYyBSYW5nZVVJIENvbXB1dGVSYW5n
ZShHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbmRpY2VzLCBHTHNpemVpIGNvdW50KTsKLQot
ICBwcml2YXRlOgotICAgIHN0cnVjdCBJbmRleFJhbmdlCi0gICAgewotICAgICAgICBHTGVudW0g
dHlwZTsKLSAgICAgICAgdW5zaWduZWQgaW50IG9mZnNldDsKLSAgICAgICAgR0xzaXplaSBjb3Vu
dDsKLQotICAgICAgICBJbmRleFJhbmdlKCk7Ci0gICAgICAgIEluZGV4UmFuZ2UoR0xlbnVtIHR5
cGUsIGludHB0cl90IG9mZnNldCwgR0xzaXplaSBjb3VudCk7Ci0KLSAgICAgICAgYm9vbCBvcGVy
YXRvcjwoY29uc3QgSW5kZXhSYW5nZSYgcmhzKSBjb25zdDsKLSAgICB9OwotCi0gICAgdHlwZWRl
ZiBzdGQ6Om1hcDxJbmRleFJhbmdlLCBSYW5nZVVJPiBJbmRleFJhbmdlTWFwOwotICAgIEluZGV4
UmFuZ2VNYXAgbUluZGV4UmFuZ2VDYWNoZTsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIExJQkFOR0xF
X1JFTkRFUkVSX0lOREVYUkFOR0VDQUNIRV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1BhdGhJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1BhdGhJbXBsLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L1BhdGhJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBAQAorLy8KKy8vIENvcHly
aWdodCAoYykgMjAwMi0yMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKworLy8gUGF0aEltcGwuaDogRGVmaW5lcyB0aGUgUGF0aCBpbXBsZW1lbnRhdGlvbiBp
bnRlcmZhY2UgZm9yCisvLyBDSFJPTUlVTV9wYXRoX3JlbmRlcmluZyBwYXRoIG9iamVjdHMuCisK
KyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfUEFUSElNUExfSF8KKyNkZWZpbmUgTElCQU5HTEVf
UkVOREVSRVJfUEFUSElNUExfSF8KKworI2luY2x1ZGUgImFuZ2xlX2dsLmgiCisjaW5jbHVkZSAi
Y29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9FcnJvci5oIgorCituYW1l
c3BhY2UgcngKK3sKKworY2xhc3MgUGF0aEltcGwgOiBhbmdsZTo6Tm9uQ29weWFibGUKK3sKKyAg
cHVibGljOgorICAgIHZpcnR1YWwgflBhdGhJbXBsKCkge30KKworICAgIHZpcnR1YWwgZ2w6OkVy
cm9yIHNldENvbW1hbmRzKEdMc2l6ZWkgbnVtQ29tbWFuZHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSAqY29tbWFuZHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1Db29yZHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGNvb3JkVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB2b2lkICpjb29yZHMpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBz
ZXRQYXRoUGFyYW1ldGVyKEdMZW51bSBwbmFtZSwgR0xmbG9hdCB2YWx1ZSkgPSAwOworfTsKKwor
fSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfUEFUSElN
UExfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9Qcm9ncmFtSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL1Byb2dyYW1JbXBsLmNwcAkocmV2aXNpb24gMjA3ODA0KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1Byb2dyYW1J
bXBsLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDE1NiArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0
IChjKSAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQot
Ly8gUHJvZ3JhbUQzRC5jcHA6IERlZmluZXMgdGhlIHJ4OjpQcm9ncmFtRDNEIGNsYXNzIHdoaWNo
IGltcGxlbWVudHMgcng6OlByb2dyYW1JbXBsLgotCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvUHJvZ3JhbUltcGwuaCIKLQotI2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKLQotbmFt
ZXNwYWNlIHJ4Ci17Ci0KLUxpbmtSZXN1bHQ6OkxpbmtSZXN1bHQoYm9vbCBsaW5rU3VjY2Vzcywg
Y29uc3QgZ2w6OkVycm9yICZlcnJvcikKLSAgICA6IGxpbmtTdWNjZXNzKGxpbmtTdWNjZXNzKSwK
LSAgICAgIGVycm9yKGVycm9yKQotewotfQotCi1Qcm9ncmFtSW1wbDo6flByb2dyYW1JbXBsKCkK
LXsKLSAgICAvLyBFbnN1cmUgdGhhdCByZXNldCB3YXMgY2FsbGVkIGJ5IHRoZSBpbmhlcml0ZWQg
Y2xhc3MgZHVyaW5nIGRlc3RydWN0aW9uCi0gICAgQVNTRVJUKG1Vbmlmb3JtSW5kZXguc2l6ZSgp
ID09IDApOwotfQotCi1nbDo6TGlua2VkVW5pZm9ybSAqUHJvZ3JhbUltcGw6OmdldFVuaWZvcm1C
eUxvY2F0aW9uKEdMaW50IGxvY2F0aW9uKSBjb25zdAotewotICAgIEFTU0VSVChsb2NhdGlvbiA+
PSAwICYmIHN0YXRpY19jYXN0PHNpemVfdD4obG9jYXRpb24pIDwgbVVuaWZvcm1JbmRleC5zaXpl
KCkpOwotICAgIHJldHVybiBtVW5pZm9ybXNbbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uaW5kZXhd
OwotfQotCi1nbDo6TGlua2VkVW5pZm9ybSAqUHJvZ3JhbUltcGw6OmdldFVuaWZvcm1CeU5hbWUo
Y29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0Ci17Ci0gICAgZm9yIChzaXplX3QgdW5pZm9y
bUluZGV4ID0gMDsgdW5pZm9ybUluZGV4IDwgbVVuaWZvcm1zLnNpemUoKTsgdW5pZm9ybUluZGV4
KyspCi0gICAgewotICAgICAgICBpZiAobVVuaWZvcm1zW3VuaWZvcm1JbmRleF0tPm5hbWUgPT0g
bmFtZSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1Vbmlmb3Jtc1t1bmlmb3JtSW5k
ZXhdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLWdsOjpVbmlm
b3JtQmxvY2sgKlByb2dyYW1JbXBsOjpnZXRVbmlmb3JtQmxvY2tCeUluZGV4KEdMdWludCBibG9j
a0luZGV4KSBjb25zdAotewotICAgIEFTU0VSVChibG9ja0luZGV4IDwgbVVuaWZvcm1CbG9ja3Mu
c2l6ZSgpKTsKLSAgICByZXR1cm4gbVVuaWZvcm1CbG9ja3NbYmxvY2tJbmRleF07Ci19Ci0KLUdM
aW50IFByb2dyYW1JbXBsOjpnZXRVbmlmb3JtTG9jYXRpb24oY29uc3Qgc3RkOjpzdHJpbmcgJm5h
bWUpIGNvbnN0Ci17Ci0gICAgc2l6ZV90IHN1YnNjcmlwdCA9IEdMX0lOVkFMSURfSU5ERVg7Ci0g
ICAgc3RkOjpzdHJpbmcgYmFzZU5hbWUgPSBnbDo6UGFyc2VVbmlmb3JtTmFtZShuYW1lLCAmc3Vi
c2NyaXB0KTsKLQotICAgIHVuc2lnbmVkIGludCBudW1Vbmlmb3JtcyA9IG1Vbmlmb3JtSW5kZXgu
c2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgaW50IGxvY2F0aW9uID0gMDsgbG9jYXRpb24gPCBu
dW1Vbmlmb3JtczsgbG9jYXRpb24rKykKLSAgICB7Ci0gICAgICAgIGlmIChtVW5pZm9ybUluZGV4
W2xvY2F0aW9uXS5uYW1lID09IGJhc2VOYW1lKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25z
dCBpbnQgaW5kZXggPSBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5pbmRleDsKLSAgICAgICAgICAg
IGNvbnN0IGJvb2wgaXNBcnJheSA9IG1Vbmlmb3Jtc1tpbmRleF0tPmlzQXJyYXkoKTsKLQotICAg
ICAgICAgICAgaWYgKChpc0FycmF5ICYmIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQg
PT0gc3Vic2NyaXB0KSB8fAotICAgICAgICAgICAgICAgIChzdWJzY3JpcHQgPT0gR0xfSU5WQUxJ
RF9JTkRFWCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9u
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIC0xOwotfQot
Ci1HTHVpbnQgUHJvZ3JhbUltcGw6OmdldFVuaWZvcm1JbmRleChjb25zdCBzdGQ6OnN0cmluZyAm
bmFtZSkgY29uc3QKLXsKLSAgICBzaXplX3Qgc3Vic2NyaXB0ID0gR0xfSU5WQUxJRF9JTkRFWDsK
LSAgICBzdGQ6OnN0cmluZyBiYXNlTmFtZSA9IGdsOjpQYXJzZVVuaWZvcm1OYW1lKG5hbWUsICZz
dWJzY3JpcHQpOwotCi0gICAgLy8gVGhlIGFwcCBpcyBub3QgYWxsb3dlZCB0byBzcGVjaWZ5IGFy
cmF5IGluZGljZXMgb3RoZXIgdGhhbiAwIGZvciBhcnJheXMgb2YgYmFzaWMgdHlwZXMKLSAgICBp
ZiAoc3Vic2NyaXB0ICE9IDAgJiYgc3Vic2NyaXB0ICE9IEdMX0lOVkFMSURfSU5ERVgpCi0gICAg
ewotICAgICAgICByZXR1cm4gR0xfSU5WQUxJRF9JTkRFWDsKLSAgICB9Ci0KLSAgICB1bnNpZ25l
ZCBpbnQgbnVtVW5pZm9ybXMgPSBtVW5pZm9ybXMuc2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQg
aW50IGluZGV4ID0gMDsgaW5kZXggPCBudW1Vbmlmb3JtczsgaW5kZXgrKykKLSAgICB7Ci0gICAg
ICAgIGlmIChtVW5pZm9ybXNbaW5kZXhdLT5uYW1lID09IGJhc2VOYW1lKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAobVVuaWZvcm1zW2luZGV4XS0+aXNBcnJheSgpIHx8IHN1YnNjcmlwdCA9
PSBHTF9JTlZBTElEX0lOREVYKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVy
biBpbmRleDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBH
TF9JTlZBTElEX0lOREVYOwotfQotCi1HTHVpbnQgUHJvZ3JhbUltcGw6OmdldFVuaWZvcm1CbG9j
a0luZGV4KGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25zdAotewotICAgIHNpemVfdCBzdWJz
Y3JpcHQgPSBHTF9JTlZBTElEX0lOREVYOwotICAgIHN0ZDo6c3RyaW5nIGJhc2VOYW1lID0gZ2w6
OlBhcnNlVW5pZm9ybU5hbWUobmFtZSwgJnN1YnNjcmlwdCk7Ci0KLSAgICB1bnNpZ25lZCBpbnQg
bnVtVW5pZm9ybUJsb2NrcyA9IG1Vbmlmb3JtQmxvY2tzLnNpemUoKTsKLSAgICBmb3IgKHVuc2ln
bmVkIGludCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRleCA8IG51bVVuaWZvcm1CbG9ja3M7IGJs
b2NrSW5kZXgrKykKLSAgICB7Ci0gICAgICAgIGNvbnN0IGdsOjpVbmlmb3JtQmxvY2sgJnVuaWZv
cm1CbG9jayA9ICptVW5pZm9ybUJsb2Nrc1tibG9ja0luZGV4XTsKLSAgICAgICAgaWYgKHVuaWZv
cm1CbG9jay5uYW1lID09IGJhc2VOYW1lKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBi
b29sIGFycmF5RWxlbWVudFplcm8gPSAoc3Vic2NyaXB0ID09IEdMX0lOVkFMSURfSU5ERVggJiYg
dW5pZm9ybUJsb2NrLmVsZW1lbnRJbmRleCA9PSAwKTsKLSAgICAgICAgICAgIGlmIChzdWJzY3Jp
cHQgPT0gdW5pZm9ybUJsb2NrLmVsZW1lbnRJbmRleCB8fCBhcnJheUVsZW1lbnRaZXJvKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBibG9ja0luZGV4OwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIEdMX0lOVkFMSURfSU5ERVg7Ci19
Ci0KLXZvaWQgUHJvZ3JhbUltcGw6OnJlc2V0KCkKLXsKLSAgICBzdGQ6OmZpbGwobVNlbWFudGlj
SW5kZXgsIG1TZW1hbnRpY0luZGV4ICsgQXJyYXlTaXplKG1TZW1hbnRpY0luZGV4KSwgLTEpOwot
ICAgIFNhZmVEZWxldGVDb250YWluZXIobVVuaWZvcm1zKTsKLSAgICBtVW5pZm9ybUluZGV4LmNs
ZWFyKCk7Ci0gICAgU2FmZURlbGV0ZUNvbnRhaW5lcihtVW5pZm9ybUJsb2Nrcyk7Ci0gICAgbVRy
YW5zZm9ybUZlZWRiYWNrTGlua2VkVmFyeWluZ3MuY2xlYXIoKTsKLX0KLQotdm9pZCBQcm9ncmFt
SW1wbDo6c2V0U2hhZGVyQXR0cmlidXRlKHNpemVfdCBpbmRleCwgY29uc3Qgc2g6OkF0dHJpYnV0
ZSAmYXR0cmliKQotewotICAgIGlmIChtU2hhZGVyQXR0cmlidXRlcy5zaXplKCkgPD0gaW5kZXgp
Ci0gICAgewotICAgICAgICBtU2hhZGVyQXR0cmlidXRlcy5yZXNpemUoaW5kZXggKyAxKTsKLSAg
ICB9Ci0gICAgbVNoYWRlckF0dHJpYnV0ZXNbaW5kZXhdID0gYXR0cmliOwotfQotCi12b2lkIFBy
b2dyYW1JbXBsOjpzZXRTaGFkZXJBdHRyaWJ1dGUoc2l6ZV90IGluZGV4LCBHTGVudW0gdHlwZSwg
R0xlbnVtIHByZWNpc2lvbiwgY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsIEdMaW50IHNpemUsIGlu
dCBsb2NhdGlvbikKLXsKLSAgICBpZiAobVNoYWRlckF0dHJpYnV0ZXMuc2l6ZSgpIDw9IGluZGV4
KQotICAgIHsKLSAgICAgICAgbVNoYWRlckF0dHJpYnV0ZXMucmVzaXplKGluZGV4ICsgMSk7Ci0g
ICAgfQotICAgIG1TaGFkZXJBdHRyaWJ1dGVzW2luZGV4XS50eXBlID0gdHlwZTsKLSAgICBtU2hh
ZGVyQXR0cmlidXRlc1tpbmRleF0ucHJlY2lzaW9uID0gcHJlY2lzaW9uOwotICAgIG1TaGFkZXJB
dHRyaWJ1dGVzW2luZGV4XS5uYW1lID0gbmFtZTsKLSAgICBtU2hhZGVyQXR0cmlidXRlc1tpbmRl
eF0uYXJyYXlTaXplID0gc2l6ZTsKLSAgICBtU2hhZGVyQXR0cmlidXRlc1tpbmRleF0ubG9jYXRp
b24gPSBsb2NhdGlvbjsKLX0KLQotfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL1Byb2dyYW1JbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1Byb2dyYW1JbXBsLmgJKHJldmlz
aW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9Qcm9ncmFtSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNCwxMCArMTQsMTQgQEAKICNp
bmNsdWRlICJsaWJBTkdMRS9Db25zdGFudHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Qcm9ncmFt
LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvU2hhZGVyLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvUmVuZGVyZXIuaCIKIAogI2luY2x1ZGUgPG1hcD4KIAorbmFtZXNwYWNlIHNoCit7Citz
dHJ1Y3QgQmxvY2tNZW1iZXJJbmZvOworfQorCiBuYW1lc3BhY2UgcngKIHsKIApAQCAtMzIsMTQg
KzM2LDE0IEBAIHN0cnVjdCBMaW5rUmVzdWx0CiBjbGFzcyBQcm9ncmFtSW1wbCA6IGFuZ2xlOjpO
b25Db3B5YWJsZQogewogICBwdWJsaWM6Ci0gICAgUHJvZ3JhbUltcGwoY29uc3QgZ2w6OlByb2dy
YW06OkRhdGEgJmRhdGEpIDogbURhdGEoZGF0YSkge30KKyAgICBQcm9ncmFtSW1wbChjb25zdCBn
bDo6UHJvZ3JhbVN0YXRlICZzdGF0ZSkgOiBtU3RhdGUoc3RhdGUpIHt9CiAgICAgdmlydHVhbCB+
UHJvZ3JhbUltcGwoKSB7fQogCiAgICAgdmlydHVhbCBMaW5rUmVzdWx0IGxvYWQoZ2w6OkluZm9M
b2cgJmluZm9Mb2csIGdsOjpCaW5hcnlJbnB1dFN0cmVhbSAqc3RyZWFtKSA9IDA7CiAgICAgdmly
dHVhbCBnbDo6RXJyb3Igc2F2ZShnbDo6QmluYXJ5T3V0cHV0U3RyZWFtICpzdHJlYW0pID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0QmluYXJ5UmV0cmlldmFibGVIaW50KGJvb2wgcmV0cmlldmFi
bGUpID0gMDsKIAotICAgIHZpcnR1YWwgTGlua1Jlc3VsdCBsaW5rKGNvbnN0IGdsOjpEYXRhICZk
YXRhLCBnbDo6SW5mb0xvZyAmaW5mb0xvZykgPSAwOworICAgIHZpcnR1YWwgTGlua1Jlc3VsdCBs
aW5rKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsIGdsOjpJbmZvTG9nICZpbmZvTG9nKSA9
IDA7CiAgICAgdmlydHVhbCBHTGJvb2xlYW4gdmFsaWRhdGUoY29uc3QgZ2w6OkNhcHMgJmNhcHMs
IGdsOjpJbmZvTG9nICppbmZvTG9nKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0VW5pZm9y
bTFmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikgPSAw
OwpAQCAtNzUsOSArNzksMTUgQEAgY2xhc3MgUHJvZ3JhbUltcGwgOiBhbmdsZTo6Tm9uQ29weWFi
bGUKICAgICAvLyBSZXR1cm5zIGZhbHNlIGZvciBpbmFjdGl2ZSBtZW1iZXJzLgogICAgIHZpcnR1
YWwgYm9vbCBnZXRVbmlmb3JtQmxvY2tNZW1iZXJJbmZvKGNvbnN0IHN0ZDo6c3RyaW5nICZtZW1i
ZXJVbmlmb3JtTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaDo6QmxvY2tNZW1iZXJJbmZvICptZW1iZXJJbmZvT3V0KSBjb25zdCA9IDA7CisgICAgLy8g
Q0hST01JVU1fcGF0aF9yZW5kZXJpbmcKKyAgICAvLyBTZXQgcGFyYW1ldGVycyB0byBjb250cm9s
IGZyYWdtZW50IHNoYWRlciBpbnB1dCB2YXJpYWJsZSBpbnRlcnBvbGF0aW9uCisgICAgdmlydHVh
bCB2b2lkIHNldFBhdGhGcmFnbWVudElucHV0R2VuKGNvbnN0IHN0ZDo6c3RyaW5nICZpbnB1dE5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBnZW5N
b2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBjb21w
b25lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICpjb2VmZnMpID0gMDsKIAogICBwcm90ZWN0ZWQ6Ci0gICAgY29uc3QgZ2w6OlByb2dy
YW06OkRhdGEgJm1EYXRhOworICAgIGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJm1TdGF0ZTsKIH07
CiAKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9Qcm9ncmFtSW1wbF9tb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1Byb2dyYW1JbXBsX21vY2suaAkocmV2aXNpb24gMjA3
ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1By
b2dyYW1JbXBsX21vY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjAsMTQgKzIwLDE0IEBAIG5hbWVz
cGFjZSByeAogY2xhc3MgTW9ja1Byb2dyYW1JbXBsIDogcHVibGljIHJ4OjpQcm9ncmFtSW1wbAog
ewogICBwdWJsaWM6Ci0gICAgTW9ja1Byb2dyYW1JbXBsKCkgOiBQcm9ncmFtSW1wbChnbDo6UHJv
Z3JhbTo6RGF0YSgpKSB7fQorICAgIE1vY2tQcm9ncmFtSW1wbCgpIDogUHJvZ3JhbUltcGwoZ2w6
OlByb2dyYW1TdGF0ZSgpKSB7fQogICAgIHZpcnR1YWwgfk1vY2tQcm9ncmFtSW1wbCgpIHsgZGVz
dHJveSgpOyB9CiAKICAgICBNT0NLX01FVEhPRDIobG9hZCwgTGlua1Jlc3VsdChnbDo6SW5mb0xv
ZyAmLCBnbDo6QmluYXJ5SW5wdXRTdHJlYW0gKikpOwogICAgIE1PQ0tfTUVUSE9EMShzYXZlLCBn
bDo6RXJyb3IoZ2w6OkJpbmFyeU91dHB1dFN0cmVhbSAqKSk7CiAgICAgTU9DS19NRVRIT0QxKHNl
dEJpbmFyeVJldHJpZXZhYmxlSGludCwgdm9pZChib29sKSk7CiAKLSAgICBNT0NLX01FVEhPRDIo
bGluaywgTGlua1Jlc3VsdChjb25zdCBnbDo6RGF0YSAmLCBnbDo6SW5mb0xvZyAmKSk7CisgICAg
TU9DS19NRVRIT0QyKGxpbmssIExpbmtSZXN1bHQoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmLCBn
bDo6SW5mb0xvZyAmKSk7CiAgICAgTU9DS19NRVRIT0QyKHZhbGlkYXRlLCBHTGJvb2xlYW4oY29u
c3QgZ2w6OkNhcHMgJiwgZ2w6OkluZm9Mb2cgKikpOwogCiAgICAgTU9DS19NRVRIT0QzKHNldFVu
aWZvcm0xZnYsIHZvaWQoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQgKikpOwpAQCAtNTYs
NiArNTYsOCBAQCBjbGFzcyBNb2NrUHJvZ3JhbUltcGwgOiBwdWJsaWMgcng6OlByb2dyCiAgICAg
TU9DS19NRVRIT0QyKHNldFVuaWZvcm1CbG9ja0JpbmRpbmcsIHZvaWQoR0x1aW50LCBHTHVpbnQp
KTsKICAgICBNT0NLX0NPTlNUX01FVEhPRDIoZ2V0VW5pZm9ybUJsb2NrU2l6ZSwgYm9vbChjb25z
dCBzdGQ6OnN0cmluZyAmLCBzaXplX3QgKikpOwogICAgIE1PQ0tfQ09OU1RfTUVUSE9EMihnZXRV
bmlmb3JtQmxvY2tNZW1iZXJJbmZvLCBib29sKGNvbnN0IHN0ZDo6c3RyaW5nICYsIHNoOjpCbG9j
a01lbWJlckluZm8gKikpOworICAgIE1PQ0tfTUVUSE9ENChzZXRQYXRoRnJhZ21lbnRJbnB1dEdl
biwKKyAgICAgICAgICAgICAgICAgdm9pZChjb25zdCBzdGQ6OnN0cmluZyAmLCBHTGVudW0sIEdM
aW50LCBjb25zdCBHTGZsb2F0ICopKTsKIAogICAgIE1PQ0tfTUVUSE9EMChkZXN0cm95LCB2b2lk
KCkpOwogfTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9SZW5kZXJidWZmZXJJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvUmVuZGVyYnVmZmVySW1wbC5jcHAJKHJldmlz
aW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9SZW5kZXJidWZmZXJJbXBsLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDIxICswLDAgQEAK
LS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCi0vLwotCi0vLyBSZW5kZXJidWZmZXJJbXBsLmg6IEltcGxlbWVudHMgdGhlIHNo
YXJlZCBtZXRob2RzIG9mIHRoZSBhYnN0cmFjdCBjbGFzcyBnbDo6UmVuZGVyYnVmZmVySW1wbAot
Ci0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvUmVuZGVyYnVmZmVySW1wbC5oIgotCi1uYW1l
c3BhY2UgcngKLXsKLVJlbmRlcmJ1ZmZlckltcGw6OlJlbmRlcmJ1ZmZlckltcGwoKQotewotfQot
Ci1SZW5kZXJidWZmZXJJbXBsOjp+UmVuZGVyYnVmZmVySW1wbCgpCi17Ci19Ci0KLX0KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9SZW5kZXJidWZm
ZXJJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL1JlbmRlcmJ1ZmZlckltcGwuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1JlbmRlcmJ1ZmZlcklt
cGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTIsNyArMTIsNyBAQAogI2luY2x1ZGUgImFuZ2xlX2ds
LmgiCiAjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9F
cnJvci5oIgotI2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5oIgorI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0ZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdEltcGwu
aCIKIAogbmFtZXNwYWNlIGVnbAogewpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL1JlbmRlcmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvUmVuZGVyZXIuY3BwCShyZXZpc2lv
biAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvUmVuZGVyZXIuY3BwCShub25leGlzdGVudCkKQEAgLTEsNjIgKzAsMCBAQAotLy8KLS8vIENv
cHlyaWdodCAoYykgMjAxMi0yMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgotLy8KLQotLy8gUmVuZGVyZXIuY3BwOiBJbXBsZW1lbnRzIEVHTCBkZXBlbmRlbmNpZXMg
Zm9yIGNyZWF0aW5nIGFuZCBkZXN0cm95aW5nIFJlbmRlcmVyIGluc3RhbmNlcy4KLQotI2luY2x1
ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9BdHRyaWJ1dGVNYXAu
aCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9SZW5kZXJlci5oIgotCi0jaW5jbHVkZSA8
RUdML2VnbGV4dC5oPgotCi1uYW1lc3BhY2UgcngKLXsKLVJlbmRlcmVyOjpSZW5kZXJlcigpIDog
bUNhcHNJbml0aWFsaXplZChmYWxzZSkKLXsKLX0KLQotUmVuZGVyZXI6On5SZW5kZXJlcigpCi17
Ci19Ci0KLXZvaWQgUmVuZGVyZXI6OmVuc3VyZUNhcHNJbml0aWFsaXplZCgpIGNvbnN0Ci17Ci0g
ICAgaWYgKCFtQ2Fwc0luaXRpYWxpemVkKQotICAgIHsKLSAgICAgICAgZ2VuZXJhdGVDYXBzKCZt
Q2FwcywgJm1UZXh0dXJlQ2FwcywgJm1FeHRlbnNpb25zLCAmbUxpbWl0YXRpb25zKTsKLSAgICAg
ICAgbUNhcHNJbml0aWFsaXplZCA9IHRydWU7Ci0gICAgfQotfQotCi1jb25zdCBnbDo6Q2FwcyAm
UmVuZGVyZXI6OmdldFJlbmRlcmVyQ2FwcygpIGNvbnN0Ci17Ci0gICAgZW5zdXJlQ2Fwc0luaXRp
YWxpemVkKCk7Ci0KLSAgICByZXR1cm4gbUNhcHM7Ci19Ci0KLWNvbnN0IGdsOjpUZXh0dXJlQ2Fw
c01hcCAmUmVuZGVyZXI6OmdldFJlbmRlcmVyVGV4dHVyZUNhcHMoKSBjb25zdAotewotICAgIGVu
c3VyZUNhcHNJbml0aWFsaXplZCgpOwotCi0gICAgcmV0dXJuIG1UZXh0dXJlQ2FwczsKLX0KLQot
Y29uc3QgZ2w6OkV4dGVuc2lvbnMgJlJlbmRlcmVyOjpnZXRSZW5kZXJlckV4dGVuc2lvbnMoKSBj
b25zdAotewotICAgIGVuc3VyZUNhcHNJbml0aWFsaXplZCgpOwotCi0gICAgcmV0dXJuIG1FeHRl
bnNpb25zOwotfQotCi1jb25zdCBnbDo6TGltaXRhdGlvbnMgJlJlbmRlcmVyOjpnZXRSZW5kZXJl
ckxpbWl0YXRpb25zKCkgY29uc3QKLXsKLSAgICBlbnN1cmVDYXBzSW5pdGlhbGl6ZWQoKTsKLQot
ICAgIHJldHVybiBtTGltaXRhdGlvbnM7Ci19Ci0KLX0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9SZW5kZXJlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9SZW5kZXJlci5oCShy
ZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvUmVuZGVyZXIuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDEyMSArMCwwIEBACi0vLwot
Ly8gQ29weXJpZ2h0IChjKSAyMDEyLTIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCi0vLwotCi0vLyBSZW5kZXJlci5oOiBEZWZpbmVzIGEgYmFjay1lbmQgc3BlY2lm
aWMgY2xhc3MgdGhhdCBoaWRlcyB0aGUgZGV0YWlscyBvZiB0aGUKLS8vIGltcGxlbWVudGF0aW9u
LXNwZWNpZmljIHJlbmRlcmVyLgotCi0jaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX1JFTkRFUkVS
X0hfCi0jZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX1JFTkRFUkVSX0hfCi0KLSNpbmNsdWRlICJs
aWJBTkdMRS9DYXBzLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvRXJyb3IuaCIKLSNpbmNsdWRlICJs
aWJBTkdMRS9GcmFtZWJ1ZmZlci5oIgotI2luY2x1ZGUgImxpYkFOR0xFL1N0YXRlLmgiCi0jaW5j
bHVkZSAibGliQU5HTEUvVW5pZm9ybS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMu
aCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9JbXBsRmFjdG9yeS5oIgotI2luY2x1ZGUg
ImNvbW1vbi9tYXRodXRpbC5oIgotCi0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0KLSNpbmNsdWRlIDxF
R0wvZWdsLmg+Ci0KLW5hbWVzcGFjZSBlZ2wKLXsKLWNsYXNzIEF0dHJpYnV0ZU1hcDsKLWNsYXNz
IERpc3BsYXk7Ci1jbGFzcyBTdXJmYWNlOwotfQotCi1uYW1lc3BhY2UgcngKLXsKLXN0cnVjdCBU
cmFuc2xhdGVkSW5kZXhEYXRhOwotc3RydWN0IFNvdXJjZUluZGV4RGF0YTsKLXN0cnVjdCBXb3Jr
YXJvdW5kc0QzRDsKLWNsYXNzIERpc3BsYXlJbXBsOwotCi1jbGFzcyBSZW5kZXJlciA6IHB1Ymxp
YyBJbXBsRmFjdG9yeQotewotICBwdWJsaWM6Ci0gICAgUmVuZGVyZXIoKTsKLSAgICB2aXJ0dWFs
IH5SZW5kZXJlcigpOwotCi0gICAgdmlydHVhbCBnbDo6RXJyb3IgZmx1c2goKSA9IDA7Ci0gICAg
dmlydHVhbCBnbDo6RXJyb3IgZmluaXNoKCkgPSAwOwotCi0gICAgdmlydHVhbCBnbDo6RXJyb3Ig
ZHJhd0FycmF5cyhjb25zdCBnbDo6RGF0YSAmZGF0YSwgR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0
LCBHTHNpemVpIGNvdW50KSA9IDA7Ci0gICAgdmlydHVhbCBnbDo6RXJyb3IgZHJhd0FycmF5c0lu
c3RhbmNlZChjb25zdCBnbDo6RGF0YSAmZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgZmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZUNvdW50KSA9IDA7Ci0KLSAgICB2aXJ0dWFs
IGdsOjpFcnJvciBkcmF3RWxlbWVudHMoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkgPSAwOwotICAgIHZpcnR1YWwg
Z2w6OkVycm9yIGRyYXdFbGVtZW50c0luc3RhbmNlZChjb25zdCBnbDo6RGF0YSAmZGF0YSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZv
aWQgKmluZGljZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgaW5zdGFuY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkgPSAwOwotICAgIHZpcnR1
YWwgZ2w6OkVycm9yIGRyYXdSYW5nZUVsZW1lbnRzKGNvbnN0IGdsOjpEYXRhICZkYXRhLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZW5kLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpJbmRleFJhbmdlICZpbmRl
eFJhbmdlKSA9IDA7Ci0KLSAgICAvLyBsb3N0IGRldmljZQotICAgIC8vVE9ETyhqbWFkaWxsKTog
aW52ZXN0aWdhdGUgaWYgdGhpcyBzdHVmZiBpcyBuZWNlc3NhcnkgaW4gR0wKLSAgICB2aXJ0dWFs
IHZvaWQgbm90aWZ5RGV2aWNlTG9zdCgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNEZXZpY2VM
b3N0KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCB0ZXN0RGV2aWNlTG9zdCgpID0gMDsK
LSAgICB2aXJ0dWFsIGJvb2wgdGVzdERldmljZVJlc2V0dGFibGUoKSA9IDA7Ci0KLSAgICB2aXJ0
dWFsIHN0ZDo6c3RyaW5nIGdldFZlbmRvclN0cmluZygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFs
IHN0ZDo6c3RyaW5nIGdldFJlbmRlcmVyRGVzY3JpcHRpb24oKSBjb25zdCA9IDA7Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIg
Km1hcmtlcikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwdXNoR3JvdXBNYXJrZXIoR0xzaXplaSBs
ZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwb3BHcm91
cE1hcmtlcigpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBzeW5jU3RhdGUoY29uc3QgZ2w6OlN0
YXRlICZzdGF0ZSwgY29uc3QgZ2w6OlN0YXRlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykgPSAwOwot
Ci0gICAgLy8gRGlzam9pbnQgdGltZXIgcXVlcmllcwotICAgIHZpcnR1YWwgR0xpbnQgZ2V0R1BV
RGlzam9pbnQoKSA9IDA7Ci0gICAgdmlydHVhbCBHTGludDY0IGdldFRpbWVzdGFtcCgpID0gMDsK
LQotICAgIC8vIENvbnRleHQgc3dpdGNoaW5nCi0gICAgdmlydHVhbCB2b2lkIG9uTWFrZUN1cnJl
bnQoY29uc3QgZ2w6OkRhdGEgJmRhdGEpID0gMDsKLQotICAgIC8vIFJlbmRlcmVyIGNhcGFiaWxp
dGllcwotICAgIGNvbnN0IGdsOjpDYXBzICZnZXRSZW5kZXJlckNhcHMoKSBjb25zdDsKLSAgICBj
b25zdCBnbDo6VGV4dHVyZUNhcHNNYXAgJmdldFJlbmRlcmVyVGV4dHVyZUNhcHMoKSBjb25zdDsK
LSAgICBjb25zdCBnbDo6RXh0ZW5zaW9ucyAmZ2V0UmVuZGVyZXJFeHRlbnNpb25zKCkgY29uc3Q7
Ci0gICAgY29uc3QgZ2w6OkxpbWl0YXRpb25zICZnZXRSZW5kZXJlckxpbWl0YXRpb25zKCkgY29u
c3Q7Ci0KLSAgcHJpdmF0ZToKLSAgICB2b2lkIGVuc3VyZUNhcHNJbml0aWFsaXplZCgpIGNvbnN0
OwotICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZUNhcHMoZ2w6OkNhcHMgKm91dENhcHMsIGdsOjpU
ZXh0dXJlQ2Fwc01hcCogb3V0VGV4dHVyZUNhcHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnbDo6RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdsOjpMaW1pdGF0aW9ucyAqb3V0TGltaXRhdGlvbnMpIGNvbnN0ID0gMDsKLQot
ICAgIG11dGFibGUgYm9vbCBtQ2Fwc0luaXRpYWxpemVkOwotICAgIG11dGFibGUgZ2w6OkNhcHMg
bUNhcHM7Ci0gICAgbXV0YWJsZSBnbDo6VGV4dHVyZUNhcHNNYXAgbVRleHR1cmVDYXBzOwotICAg
IG11dGFibGUgZ2w6OkV4dGVuc2lvbnMgbUV4dGVuc2lvbnM7Ci0gICAgbXV0YWJsZSBnbDo6TGlt
aXRhdGlvbnMgbUxpbWl0YXRpb25zOwotfTsKLQotfQotI2VuZGlmIC8vIExJQkFOR0xFX1JFTkRF
UkVSX1JFTkRFUkVSX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvU2hhZGVySW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9TaGFkZXJJbXBsLmgJKHJldmlzaW9uIDIwNzgw
NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9TaGFk
ZXJJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4LDIxICsxOCwyMSBAQCBuYW1lc3BhY2UgcngK
IGNsYXNzIFNoYWRlckltcGwgOiBhbmdsZTo6Tm9uQ29weWFibGUKIHsKICAgcHVibGljOgotICAg
IFNoYWRlckltcGwoY29uc3QgZ2w6OlNoYWRlcjo6RGF0YSAmZGF0YSkgOiBtRGF0YShkYXRhKSB7
fQorICAgIFNoYWRlckltcGwoY29uc3QgZ2w6OlNoYWRlclN0YXRlICZkYXRhKSA6IG1EYXRhKGRh
dGEpIHt9CiAgICAgdmlydHVhbCB+U2hhZGVySW1wbCgpIHsgfQogCiAgICAgLy8gUmV0dXJucyBh
ZGRpdGlvbmFsIFNoQ29tcGlsZSBvcHRpb25zLgotICAgIHZpcnR1YWwgaW50IHByZXBhcmVTb3Vy
Y2VBbmRSZXR1cm5PcHRpb25zKHN0ZDo6c3RyaW5nc3RyZWFtICpzb3VyY2VTdHJlYW0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgKnNv
dXJjZVBhdGgpID0gMDsKKyAgICB2aXJ0dWFsIFNoQ29tcGlsZU9wdGlvbnMgcHJlcGFyZVNvdXJj
ZUFuZFJldHVybk9wdGlvbnMoc3RkOjpzdHJpbmdzdHJlYW0gKnNvdXJjZVN0cmVhbSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
OjpzdHJpbmcgKnNvdXJjZVBhdGgpID0gMDsKICAgICAvLyBSZXR1cm5zIHN1Y2Nlc3MgZm9yIGNv
bXBpbGluZyBvbiB0aGUgZHJpdmVyLiBSZXR1cm5zIHN1Y2Nlc3MuCiAgICAgdmlydHVhbCBib29s
IHBvc3RUcmFuc2xhdGVDb21waWxlKGdsOjpDb21waWxlciAqY29tcGlsZXIsIHN0ZDo6c3RyaW5n
ICppbmZvTG9nKSA9IDA7CiAKICAgICB2aXJ0dWFsIHN0ZDo6c3RyaW5nIGdldERlYnVnSW5mbygp
IGNvbnN0ID0gMDsKIAotICAgIGNvbnN0IGdsOjpTaGFkZXI6OkRhdGEgJmdldERhdGEoKSBjb25z
dCB7IHJldHVybiBtRGF0YTsgfQorICAgIGNvbnN0IGdsOjpTaGFkZXJTdGF0ZSAmZ2V0RGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1EYXRhOyB9CiAKICAgcHJvdGVjdGVkOgotICAgIGNvbnN0IGdsOjpT
aGFkZXI6OkRhdGEgJm1EYXRhOworICAgIGNvbnN0IGdsOjpTaGFkZXJTdGF0ZSAmbURhdGE7CiB9
OwogCiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvU3RyZWFtSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9TdHJlYW1JbXBsLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9TdHJlYW1JbXBsLmgJ
KG5vbmV4aXN0ZW50KQpAQCAtMSwyNSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDE2
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gU3RyZWFt
SW1wbC5oOiBEZWZpbmVzIHRoZSBhYnN0cmFjdCByeDo6U3RyZWFtSW1wbCBjbGFzcy4KLQotI2lm
bmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9TVFJFQU1JTVBMX0hfCi0jZGVmaW5lIExJQkFOR0xFX1JF
TkRFUkVSX1NUUkVBTUlNUExfSF8KLQotI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCi0K
LW5hbWVzcGFjZSByeAotewotCi1jbGFzcyBTdHJlYW1JbXBsIDogYW5nbGU6Ok5vbkNvcHlhYmxl
Ci17Ci0gIHB1YmxpYzoKLSAgICBleHBsaWNpdCBTdHJlYW1JbXBsKCkge30KLSAgICB2aXJ0dWFs
IH5TdHJlYW1JbXBsKCkge30KLX07Ci19ICAvLyBuYW1lc3BhY2UgcngKLQotI2VuZGlmICAvLyBM
SUJBTkdMRV9SRU5ERVJFUl9TVFJFQU1JTVBMX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvU3RyZWFtUHJvZHVjZXJJbXBsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1N0cmVh
bVByb2R1Y2VySW1wbC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9TdHJlYW1Qcm9kdWNlckltcGwuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDM5IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gU3RyZWFtUHJvZHVjZXJJbXBs
Lmg6IERlZmluZXMgdGhlIGFic3RyYWN0IHJ4OjpTdHJlYW1Qcm9kdWNlckltcGwgY2xhc3MuCisK
KyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfU1RSRUFNUFJPRFVDRVJJTVBMX0hfCisjZGVmaW5l
IExJQkFOR0xFX1JFTkRFUkVSX1NUUkVBTVBST0RVQ0VSSU1QTF9IXworCisjaW5jbHVkZSAiY29t
bW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9TdHJlYW0uaCIKKworbmFtZXNw
YWNlIHJ4Cit7CisKK2NsYXNzIFN0cmVhbVByb2R1Y2VySW1wbCA6IGFuZ2xlOjpOb25Db3B5YWJs
ZQoreworICBwdWJsaWM6CisgICAgZXhwbGljaXQgU3RyZWFtUHJvZHVjZXJJbXBsKCkge30KKyAg
ICB2aXJ0dWFsIH5TdHJlYW1Qcm9kdWNlckltcGwoKSB7fQorCisgICAgLy8gVmFsaWRhdGVzIHRo
ZSBhYmlsaXR5IGZvciB0aGUgcHJvZHVjZXIgdG8gYWNjZXB0IGFuIGFyYml0cmFyeSBwb2ludGVy
IHRvIGEgZnJhbWUuIEFsbAorICAgIC8vIHBvaW50ZXJzIHNob3VsZCBiZSB2YWxpZGF0ZWQgdGhy
b3VnaCB0aGlzIGZ1bmN0aW9uIGJlZm9yZSBiZWluZyB1c2VkIHRvIHByb2R1Y2UgYSBmcmFtZS4K
KyAgICB2aXJ0dWFsIGVnbDo6RXJyb3IgdmFsaWRhdGVEM0ROVjEyVGV4dHVyZSh2b2lkICpwb2lu
dGVyKSBjb25zdCA9IDA7CisKKyAgICAvLyBDb25zdHJ1Y3RzIGEgZnJhbWUgZnJvbSBhbiBhcmJp
dHJhcnkgZXh0ZXJuYWwgcG9pbnRlciB0aGF0IHBvaW50cyB0byBwcm9kdWNlciBzcGVjaWZpYyBm
cmFtZQorICAgIC8vIGRhdGEuIFJlcGxhY2VzIHRoZSBpbnRlcm5hbCBmcmFtZSB3aXRoIHRoZSBu
ZXcgb25lLgorICAgIHZpcnR1YWwgdm9pZCBwb3N0RDNETlYxMlRleHR1cmUodm9pZCAqcG9pbnRl
ciwgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnV0ZXMpID0gMDsKKworICAgIC8vIFJl
dHVybnMgYW4gT3BlbkdMIHRleHR1cmUgaW50ZXJwcmV0YXRpb24gb2Ygc29tZSBmcmFtZSBhdHRy
aWJ1dGVzIGZvciB0aGUgcHVycG9zZSBvZgorICAgIC8vIGNvbnN0cnVjdGluZyBhbiBPcGVuR0wg
dGV4dHVyZSBmcm9tIGEgZnJhbWUuIERlcGVuZGluZyBvbiB0aGUgcHJvZHVjZXIgYW5kIGNvbnN1
bWVyLCBzb21lCisgICAgLy8gZnJhbWVzIG1heSBoYXZlIG11bHRpcGxlICJwbGFuZXMiIHdpdGgg
ZGlmZmVyZW50IE9wZW5HTCB0ZXh0dXJlIHJlcHJlc2VudGF0aW9ucy4KKyAgICB2aXJ0dWFsIGVn
bDo6U3RyZWFtOjpHTFRleHR1cmVEZXNjcmlwdGlvbiBnZXRHTEZyYW1lRGVzY3JpcHRpb24oaW50
IHBsYW5lSW5kZXgpID0gMDsKK307Cit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBM
SUJBTkdMRV9SRU5ERVJFUl9TVFJFQU1QUk9EVUNFUklNUExfSF8KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9TdXJmYWNlSW1wbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1N1
cmZhY2VJbXBsLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1N1cmZhY2VJbXBsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTEsNyArMTEsNyBAQAogbmFtZXNwYWNlIHJ4CiB7CiAKLVN1cmZhY2VJbXBsOjpTdXJmYWNl
SW1wbCgpCitTdXJmYWNlSW1wbDo6U3VyZmFjZUltcGwoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUg
JnN0YXRlKSA6IG1TdGF0ZShzdGF0ZSkKIHsKIH0KIApAQCAtMTksNCArMTksNCBAQCBTdXJmYWNl
SW1wbDo6flN1cmZhY2VJbXBsKCkKIHsKIH0KIAotfQorfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvU3VyZmFjZUlt
cGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvU3VyZmFjZUltcGwuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1N1cmZhY2VJbXBsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTksMzUgKzksNDQgQEAKICNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfU1VSRkFD
RUlNUExfSF8KICNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfU1VSRkFDRUlNUExfSF8KIAorI2lu
Y2x1ZGUgPEVHTC9lZ2wuaD4KKyNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisKICNpbmNsdWRlICJj
b21tb24vYW5nbGV1dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0Vycm9yLmgiCi0jaW5jbHVk
ZSAibGliQU5HTEUvRnJhbWVidWZmZXIuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZl
ckF0dGFjaG1lbnQuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9GcmFtZWJ1ZmZlckF0
dGFjaG1lbnRPYmplY3RJbXBsLmgiCisKK25hbWVzcGFjZSBnbAoreworY2xhc3MgRnJhbWVidWZm
ZXJTdGF0ZTsKK30KIAogbmFtZXNwYWNlIGVnbAogewogY2xhc3MgRGlzcGxheTsKIHN0cnVjdCBD
b25maWc7CitzdHJ1Y3QgU3VyZmFjZVN0YXRlOwogfQogCiBuYW1lc3BhY2UgcngKIHsKLQogY2xh
c3MgRnJhbWVidWZmZXJJbXBsOwogCiBjbGFzcyBTdXJmYWNlSW1wbCA6IHB1YmxpYyBGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRPYmplY3RJbXBsCiB7CiAgIHB1YmxpYzoKLSAgICBTdXJmYWNlSW1wbCgp
OworICAgIFN1cmZhY2VJbXBsKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdXJmYWNlU3RhdGUp
OwogICAgIHZpcnR1YWwgflN1cmZhY2VJbXBsKCk7CiAKICAgICB2aXJ0dWFsIGVnbDo6RXJyb3Ig
aW5pdGlhbGl6ZSgpID0gMDsKLSAgICB2aXJ0dWFsIEZyYW1lYnVmZmVySW1wbCAqY3JlYXRlRGVm
YXVsdEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGF0YSAmZGF0YSkgPSAwOwor
ICAgIHZpcnR1YWwgRnJhbWVidWZmZXJJbXBsICpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoY29u
c3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJnN0YXRlKSA9IDA7CiAgICAgdmlydHVhbCBlZ2w6OkVy
cm9yIHN3YXAoKSA9IDA7CiAgICAgdmlydHVhbCBlZ2w6OkVycm9yIHBvc3RTdWJCdWZmZXIoRUdM
aW50IHgsIEVHTGludCB5LCBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpID0gMDsKICAgICB2
aXJ0dWFsIGVnbDo6RXJyb3IgcXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFKEVHTGludCBhdHRyaWJ1
dGUsIHZvaWQgKip2YWx1ZSkgPSAwOwogICAgIHZpcnR1YWwgZWdsOjpFcnJvciBiaW5kVGV4SW1h
Z2UoZ2w6OlRleHR1cmUgKnRleHR1cmUsIEVHTGludCBidWZmZXIpID0gMDsKICAgICB2aXJ0dWFs
IGVnbDo6RXJyb3IgcmVsZWFzZVRleEltYWdlKEVHTGludCBidWZmZXIpID0gMDsKKyAgICB2aXJ0
dWFsIGVnbDo6RXJyb3IgZ2V0U3luY1ZhbHVlcyhFR0x1aW50NjRLSFIgKnVzdCwgRUdMdWludDY0
S0hSICptc2MsIEVHTHVpbnQ2NEtIUiAqc2JjKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFN3
YXBJbnRlcnZhbChFR0xpbnQgaW50ZXJ2YWwpID0gMDsKIAogICAgIC8vIHdpZHRoIGFuZCBoZWln
aHQgY2FuIGNoYW5nZSB3aXRoIGNsaWVudCB3aW5kb3cgcmVzaXppbmcKQEAgLTQ2LDYgKzU1LDkg
QEAgY2xhc3MgU3VyZmFjZUltcGwgOiBwdWJsaWMgRnJhbWVidWZmZXJBdAogCiAgICAgdmlydHVh
bCBFR0xpbnQgaXNQb3N0U3ViQnVmZmVyU3VwcG9ydGVkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgRUdMaW50IGdldFN3YXBCZWhhdmlvcigpIGNvbnN0ID0gMDsKKworICBwcm90ZWN0ZWQ6Cisg
ICAgY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJm1TdGF0ZTsKIH07CiAKIH0KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9UZXh0dXJlSW1wbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL1RleHR1cmVJbXBsLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvVGV4dHVyZUltcGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNTAgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFRleHR1cmVJbXBsLmNwcDogRGVmaW5l
cyB0aGUgYWJzdHJhY3Qgcng6OlRleHR1cmVJbXBsIGNsYXNzZXMuCisKKyNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9UZXh0dXJlSW1wbC5oIgorCituYW1lc3BhY2UgcngKK3sKKworVGV4dHVy
ZUltcGw6OlRleHR1cmVJbXBsKGNvbnN0IGdsOjpUZXh0dXJlU3RhdGUgJnN0YXRlKSA6IG1TdGF0
ZShzdGF0ZSkKK3sKK30KKworVGV4dHVyZUltcGw6On5UZXh0dXJlSW1wbCgpCit7Cit9CisKK2ds
OjpFcnJvciBUZXh0dXJlSW1wbDo6Y29weVRleHR1cmUoR0xlbnVtIGludGVybmFsRm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tGbGlwWSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1VubXVsdGlwbHlBbHBo
YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlRleHR1cmUg
KnNvdXJjZSkKK3sKKyAgICBVTlJFQUNIQUJMRSgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sICJDSFJPTUlVTV9jb3B5X3RleHR1cmUgZXhwb3NlZCBidXQgbm90
IGltcGxlbWVudGVkLiIpOworfQorCitnbDo6RXJyb3IgVGV4dHVyZUltcGw6OmNvcHlTdWJUZXh0
dXJlKGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrRmxpcFksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrUHJlbXVsdGlwbHlBbHBo
YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tVbm11
bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpUZXh0dXJlICpzb3VyY2UpCit7CisgICAgVU5SRUFDSEFCTEUoKTsKKyAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ0hST01JVU1fY29weV90ZXh0dXJlIGV4
cG9zZWQgYnV0IG5vdCBpbXBsZW1lbnRlZC4iKTsKK30KKworZ2w6OkVycm9yIFRleHR1cmVJbXBs
Ojpjb3B5Q29tcHJlc3NlZFRleHR1cmUoY29uc3QgZ2w6OlRleHR1cmUgKnNvdXJjZSkKK3sKKyAg
ICBVTlJFQUNIQUJMRSgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04sCisgICAgICAgICAgICAgICAgICAgICAiQ0hST01JVU1fY29weV9jb21wcmVzc2VkX3RleHR1
cmUgZXhwb3NlZCBidXQgbm90IGltcGxlbWVudGVkLiIpOworfQorfQpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1RleHR1cmVJbXBsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1Rl
eHR1cmVJbXBsLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9UZXh0dXJlSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NCw4ICsxNCwxMCBAQAogI2luY2x1ZGUgImFuZ2xlX2dsLmgiCiAjaW5jbHVkZSAiY29tbW9uL2Fu
Z2xldXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9FcnJvci5oIgotI2luY2x1ZGUgImxpYkFO
R0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0ltYWdlSW5k
ZXguaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9TdHJlYW0uaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9U
ZXh0dXJlLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvRnJhbWVidWZmZXJBdHRhY2ht
ZW50T2JqZWN0SW1wbC5oIgogCiBuYW1lc3BhY2UgZWdsCiB7CkBAIC00MCwxMCArNDIsOCBAQCBu
YW1lc3BhY2UgcngKIGNsYXNzIFRleHR1cmVJbXBsIDogcHVibGljIEZyYW1lYnVmZmVyQXR0YWNo
bWVudE9iamVjdEltcGwKIHsKICAgcHVibGljOgotICAgIFRleHR1cmVJbXBsKCkge30KLSAgICB2
aXJ0dWFsIH5UZXh0dXJlSW1wbCgpIHt9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0VXNhZ2UoR0xl
bnVtIHVzYWdlKSA9IDA7CisgICAgVGV4dHVyZUltcGwoY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAm
c3RhdGUpOworICAgIHZpcnR1YWwgflRleHR1cmVJbXBsKCk7CiAKICAgICB2aXJ0dWFsIGdsOjpF
cnJvciBzZXRJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIEdMZW51bSBpbnRlcm5h
bEZvcm1hdCwgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0
eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFj
a1N0YXRlICZ1bnBhY2ssIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgPSAwOwpAQCAtNjAsMTQgKzYw
LDQwIEBAIGNsYXNzIFRleHR1cmVJbXBsIDogcHVibGljIEZyYW1lYnVmZmVyQXQKICAgICB2aXJ0
dWFsIGdsOjpFcnJvciBjb3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBj
b25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VB
cmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVi
dWZmZXIgKnNvdXJjZSkgPSAwOwogCisgICAgdmlydHVhbCBnbDo6RXJyb3IgY29weVRleHR1cmUo
R0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5w
YWNrRmxpcFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tQ
cmVtdWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
dW5wYWNrVW5tdWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpUZXh0dXJlICpzb3VyY2UpOworICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNvcHlT
dWJUZXh0dXJlKGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja0ZsaXBZLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrUHJlbXVsdGlwbHlB
bHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1Vu
bXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6VGV4dHVyZSAqc291cmNlKTsKKworICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNvcHlDb21w
cmVzc2VkVGV4dHVyZShjb25zdCBnbDo6VGV4dHVyZSAqc291cmNlKTsKKwogICAgIHZpcnR1YWwg
Z2w6OkVycm9yIHNldFN0b3JhZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVscywgR0xlbnVt
IGludGVybmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSkgPSAwOwogCiAgICAgdmly
dHVhbCBnbDo6RXJyb3Igc2V0RUdMSW1hZ2VUYXJnZXQoR0xlbnVtIHRhcmdldCwgZWdsOjpJbWFn
ZSAqaW1hZ2UpID0gMDsKIAotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGdlbmVyYXRlTWlwbWFwcyhj
b25zdCBnbDo6VGV4dHVyZVN0YXRlICZ0ZXh0dXJlU3RhdGUpID0gMDsKKyAgICB2aXJ0dWFsIGds
OjpFcnJvciBzZXRJbWFnZUV4dGVybmFsKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OlN0cmVhbSAqc3RyZWFtLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpTdHJlYW06OkdMVGV4dHVyZURl
c2NyaXB0aW9uICZkZXNjKSA9IDA7CisKKyAgICB2aXJ0dWFsIGdsOjpFcnJvciBnZW5lcmF0ZU1p
cG1hcCgpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRCYXNlTGV2ZWwoR0x1aW50IGJhc2VM
ZXZlbCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGJpbmRUZXhJbWFnZShlZ2w6OlN1cmZhY2Ug
KnN1cmZhY2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZVRleEltYWdlKCkgPSAwOwor
CisgICAgdmlydHVhbCB2b2lkIHN5bmNTdGF0ZShjb25zdCBnbDo6VGV4dHVyZTo6RGlydHlCaXRz
ICZkaXJ0eUJpdHMpID0gMDsKKworICBwcm90ZWN0ZWQ6CisgICAgY29uc3QgZ2w6OlRleHR1cmVT
dGF0ZSAmbVN0YXRlOwogfTsKIAogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL1RleHR1cmVJbXBsX21vY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvVGV4dHVyZUltcGxfbW9j
ay5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvVGV4dHVyZUltcGxfbW9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOSwy
MiArMTksMzcgQEAgbmFtZXNwYWNlIHJ4CiBjbGFzcyBNb2NrVGV4dHVyZUltcGwgOiBwdWJsaWMg
VGV4dHVyZUltcGwKIHsKICAgcHVibGljOgorICAgIE1vY2tUZXh0dXJlSW1wbCgpIDogVGV4dHVy
ZUltcGwoZ2w6OlRleHR1cmVTdGF0ZShHTF9URVhUVVJFXzJEKSkge30KICAgICB2aXJ0dWFsIH5N
b2NrVGV4dHVyZUltcGwoKSB7IGRlc3RydWN0b3IoKTsgfQotICAgIE1PQ0tfTUVUSE9EMShzZXRV
c2FnZSwgdm9pZChHTGVudW0pKTsKICAgICBNT0NLX01FVEhPRDgoc2V0SW1hZ2UsIGdsOjpFcnJv
cihHTGVudW0sIHNpemVfdCwgR0xlbnVtLCBjb25zdCBnbDo6RXh0ZW50cyAmLCBHTGVudW0sIEdM
ZW51bSwgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJiwgY29uc3QgdWludDhfdCAqKSk7CiAg
ICAgTU9DS19NRVRIT0Q3KHNldFN1YkltYWdlLCBnbDo6RXJyb3IoR0xlbnVtLCBzaXplX3QsIGNv
bnN0IGdsOjpCb3ggJiwgR0xlbnVtLCBHTGVudW0sIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRl
ICYsIGNvbnN0IHVpbnQ4X3QgKikpOwogICAgIE1PQ0tfTUVUSE9ENyhzZXRDb21wcmVzc2VkSW1h
Z2UsIGdsOjpFcnJvcihHTGVudW0sIHNpemVfdCwgR0xlbnVtLCBjb25zdCBnbDo6RXh0ZW50cyAm
LCBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmLCBzaXplX3QsIGNvbnN0IHVpbnQ4X3QgKikp
OwogICAgIE1PQ0tfTUVUSE9ENyhzZXRDb21wcmVzc2VkU3ViSW1hZ2UsIGdsOjpFcnJvcihHTGVu
dW0sIHNpemVfdCwgY29uc3QgZ2w6OkJveCAmLCBHTGVudW0sIGNvbnN0IGdsOjpQaXhlbFVucGFj
a1N0YXRlICYsIHNpemVfdCwgY29uc3QgdWludDhfdCAqKSk7CiAgICAgTU9DS19NRVRIT0Q1KGNv
cHlJbWFnZSwgZ2w6OkVycm9yKEdMZW51bSwgc2l6ZV90LCBjb25zdCBnbDo6UmVjdGFuZ2xlICYs
IEdMZW51bSwgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICopKTsKICAgICBNT0NLX01FVEhPRDUoY29w
eVN1YkltYWdlLCBnbDo6RXJyb3IoR0xlbnVtLCBzaXplX3QsIGNvbnN0IGdsOjpPZmZzZXQgJiwg
Y29uc3QgZ2w6OlJlY3RhbmdsZSAmLCBjb25zdCBnbDo6RnJhbWVidWZmZXIgKikpOworICAgIE1P
Q0tfTUVUSE9ENihjb3B5VGV4dHVyZSwgZ2w6OkVycm9yKEdMZW51bSwgR0xlbnVtLCBib29sLCBi
b29sLCBib29sLCBjb25zdCBnbDo6VGV4dHVyZSAqKSk7CisgICAgTU9DS19NRVRIT0Q2KGNvcHlT
dWJUZXh0dXJlLAorICAgICAgICAgICAgICAgICBnbDo6RXJyb3IoY29uc3QgZ2w6Ok9mZnNldCAm
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OlRleHR1cmUgKikpOworICAgIE1PQ0tfTUVUSE9EMShjb3B5
Q29tcHJlc3NlZFRleHR1cmUsIGdsOjpFcnJvcihjb25zdCBnbDo6VGV4dHVyZSAqc291cmNlKSk7
CiAgICAgTU9DS19NRVRIT0Q0KHNldFN0b3JhZ2UsIGdsOjpFcnJvcihHTGVudW0sIHNpemVfdCwg
R0xlbnVtLCBjb25zdCBnbDo6RXh0ZW50cyAmKSk7CisgICAgTU9DS19NRVRIT0QzKHNldEltYWdl
RXh0ZXJuYWwsCisgICAgICAgICAgICAgICAgIGdsOjpFcnJvcihHTGVudW0sIGVnbDo6U3RyZWFt
ICosIGNvbnN0IGVnbDo6U3RyZWFtOjpHTFRleHR1cmVEZXNjcmlwdGlvbiAmKSk7CiAgICAgTU9D
S19NRVRIT0QyKHNldEVHTEltYWdlVGFyZ2V0LCBnbDo6RXJyb3IoR0xlbnVtLCBlZ2w6OkltYWdl
ICopKTsKLSAgICBNT0NLX01FVEhPRDEoZ2VuZXJhdGVNaXBtYXBzLCBnbDo6RXJyb3IoY29uc3Qg
Z2w6OlRleHR1cmVTdGF0ZSAmKSk7CisgICAgTU9DS19NRVRIT0QwKGdlbmVyYXRlTWlwbWFwLCBn
bDo6RXJyb3IoKSk7CiAgICAgTU9DS19NRVRIT0QxKGJpbmRUZXhJbWFnZSwgdm9pZChlZ2w6OlN1
cmZhY2UgKikpOwogICAgIE1PQ0tfTUVUSE9EMChyZWxlYXNlVGV4SW1hZ2UsIHZvaWQodm9pZCkp
OwogCiAgICAgTU9DS19NRVRIT0QyKGdldEF0dGFjaG1lbnRSZW5kZXJUYXJnZXQsIGdsOjpFcnJv
cihjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50OjpUYXJnZXQgJiwgRnJhbWVidWZmZXJB
dHRhY2htZW50UmVuZGVyVGFyZ2V0ICoqKSk7CiAKKyAgICBNT0NLX01FVEhPRDEoc2V0QmFzZUxl
dmVsLCB2b2lkKEdMdWludCkpOworCisgICAgTU9DS19NRVRIT0QxKHN5bmNTdGF0ZSwgdm9pZChj
b25zdCBnbDo6VGV4dHVyZTo6RGlydHlCaXRzICYpKTsKKwogICAgIE1PQ0tfTUVUSE9EMChkZXN0
cnVjdG9yLCB2b2lkKCkpOwogfTsKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL1RyYW5zZm9ybUZlZWRiYWNrSW1wbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9UcmFuc2Zvcm1G
ZWVkYmFja0ltcGwuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1RyYW5zZm9ybUZlZWRiYWNrSW1wbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xOCw2ICsxOCw3IEBAIG5hbWVzcGFjZSByeAogY2xhc3MgVHJhbnNmb3JtRmVl
ZGJhY2tJbXBsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiB7CiAgIHB1YmxpYzoKKyAgICBUcmFuc2Zv
cm1GZWVkYmFja0ltcGwoY29uc3QgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrU3RhdGUgJnN0YXRlKSA6
IG1TdGF0ZShzdGF0ZSkge30KICAgICB2aXJ0dWFsIH5UcmFuc2Zvcm1GZWVkYmFja0ltcGwoKSB7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCBiZWdpbihHTGVudW0gcHJpbWl0aXZlTW9kZSkgPSAwOwpA
QCAtMjcsNiArMjgsOSBAQCBjbGFzcyBUcmFuc2Zvcm1GZWVkYmFja0ltcGwgOiBhbmdsZTo6Tm9u
CiAKICAgICB2aXJ0dWFsIHZvaWQgYmluZEdlbmVyaWNCdWZmZXIoY29uc3QgQmluZGluZ1BvaW50
ZXI8Z2w6OkJ1ZmZlcj4gJmJpbmRpbmcpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYmluZEluZGV4
ZWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBPZmZzZXRCaW5kaW5nUG9pbnRlcjxnbDo6QnVm
ZmVyPiAmYmluZGluZykgPSAwOworCisgIHByb3RlY3RlZDoKKyAgICBjb25zdCBnbDo6VHJhbnNm
b3JtRmVlZGJhY2tTdGF0ZSAmbVN0YXRlOwogfTsKIAogfQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1RyYW5zZm9ybUZlZWRiYWNrSW1wbF9tb2Nr
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL1RyYW5zZm9ybUZlZWRiYWNrSW1wbF9tb2NrLmgJKHJldmlzaW9uIDIwNzgwNCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9UcmFuc2Zvcm1G
ZWVkYmFja0ltcGxfbW9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw2ICsxOSwxMCBAQCBuYW1l
c3BhY2UgcngKIGNsYXNzIE1vY2tUcmFuc2Zvcm1GZWVkYmFja0ltcGwgOiBwdWJsaWMgVHJhbnNm
b3JtRmVlZGJhY2tJbXBsCiB7CiAgIHB1YmxpYzoKKyAgICBNb2NrVHJhbnNmb3JtRmVlZGJhY2tJ
bXBsKGNvbnN0IGdsOjpUcmFuc2Zvcm1GZWVkYmFja1N0YXRlICZzdGF0ZSkKKyAgICAgICAgOiBU
cmFuc2Zvcm1GZWVkYmFja0ltcGwoc3RhdGUpCisgICAgeworICAgIH0KICAgICB+TW9ja1RyYW5z
Zm9ybUZlZWRiYWNrSW1wbCgpIHsgZGVzdHJ1Y3RvcigpOyB9CiAKICAgICBNT0NLX01FVEhPRDEo
YmVnaW4sIHZvaWQoR0xlbnVtIHByaW1pdGl2ZU1vZGUpKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9WZXJ0ZXhBcnJheUltcGwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvVmVy
dGV4QXJyYXlJbXBsLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9WZXJ0ZXhBcnJheUltcGwuaAkod29ya2luZyBjb3B5
KQpAQCAtMTksMTEgKzE5LDExIEBAIG5hbWVzcGFjZSByeAogY2xhc3MgVmVydGV4QXJyYXlJbXBs
IDogYW5nbGU6Ok5vbkNvcHlhYmxlCiB7CiAgIHB1YmxpYzoKLSAgICBWZXJ0ZXhBcnJheUltcGwo
Y29uc3QgZ2w6OlZlcnRleEFycmF5OjpEYXRhICZkYXRhKSA6IG1EYXRhKGRhdGEpIHsgfQorICAg
IFZlcnRleEFycmF5SW1wbChjb25zdCBnbDo6VmVydGV4QXJyYXlTdGF0ZSAmZGF0YSkgOiBtRGF0
YShkYXRhKSB7fQogICAgIHZpcnR1YWwgflZlcnRleEFycmF5SW1wbCgpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBzeW5jU3RhdGUoY29uc3QgZ2w6OlZlcnRleEFycmF5OjpEaXJ0eUJpdHMgJmRpcnR5
Qml0cykge30KICAgcHJvdGVjdGVkOgotICAgIGNvbnN0IGdsOjpWZXJ0ZXhBcnJheTo6RGF0YSAm
bURhdGE7CisgICAgY29uc3QgZ2w6OlZlcnRleEFycmF5U3RhdGUgJm1EYXRhOwogfTsKIAogfQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1dvcmth
cm91bmRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL1dvcmthcm91bmRzLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9Xb3JrYXJvdW5kcy5oCShub25l
eGlzdGVudCkKQEAgLTEsNzQgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxNCBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIGFuZ2xldHlwZXMu
aDogV29ya2Fyb3VuZHMgZm9yIGRyaXZlciBidWdzIGFuZCBvdGhlciBpc3N1ZXMuCi0KLSNpZm5k
ZWYgTElCQU5HTEVfUkVOREVSRVJfV09SS0FST1VORFNfSF8KLSNkZWZpbmUgTElCQU5HTEVfUkVO
REVSRVJfV09SS0FST1VORFNfSF8KLQotLy8gVE9ETyhqbWFkaWxsLHptbyxnZW9mZmxhbmcpOiBt
YWtlIGEgd29ya2Fyb3VuZHMgbGlicmFyeSB0aGF0IGNhbiBvcGVyYXRlCi0vLyBpbmRlcGVuZGVu
dCBvZiBBTkdMRSdzIHJlbmRlcmVyLiBXb3JrYXJvdW5kcyBzaG91bGQgYWxzbyBiZSBhY2Nlc3Np
YmxlCi0vLyBvdXRzaWRlIG9mIHRoZSBSZW5kZXJlci4KLQotbmFtZXNwYWNlIHJ4Ci17Ci0KLXN0
cnVjdCBEM0RDb21waWxlcldvcmthcm91bmRzIDogYW5nbGU6Ok5vbkNvcHlhYmxlCi17Ci0gICAg
RDNEQ29tcGlsZXJXb3JrYXJvdW5kcygpCi0gICAgICAgIDogc2tpcE9wdGltaXphdGlvbihmYWxz
ZSksCi0gICAgICAgICAgdXNlTWF4T3B0aW1pemF0aW9uKGZhbHNlKSwKLSAgICAgICAgICBlbmFi
bGVJRUVFU3RyaWN0bmVzcyhmYWxzZSkKLSAgICB7fQotCi0gICAgdm9pZCByZXNldCgpCi0gICAg
ewotICAgICAgICBza2lwT3B0aW1pemF0aW9uID0gZmFsc2U7Ci0gICAgICAgIHVzZU1heE9wdGlt
aXphdGlvbiA9IGZhbHNlOwotICAgICAgICBlbmFibGVJRUVFU3RyaWN0bmVzcyA9IGZhbHNlOwot
ICAgIH0KLQotICAgIGJvb2wgc2tpcE9wdGltaXphdGlvbjsKLSAgICBib29sIHVzZU1heE9wdGlt
aXphdGlvbjsKLQotICAgIC8vIElFRUUgc3RyaWN0bmVzcyBuZWVkcyB0byBiZSBlbmFibGVkIGZv
ciBOQU5zIHRvIHdvcmsuCi0gICAgYm9vbCBlbmFibGVJRUVFU3RyaWN0bmVzczsKLX07Ci0KLXN0
cnVjdCBXb3JrYXJvdW5kcwotewotICAgIFdvcmthcm91bmRzKCkKLSAgICAgICAgOiBtcnRQZXJm
V29ya2Fyb3VuZChmYWxzZSksCi0gICAgICAgICAgc2V0RGF0YUZhc3RlclRoYW5JbWFnZVVwbG9h
ZChmYWxzZSksCi0gICAgICAgICAgemVyb01heExvZFdvcmthcm91bmQoZmFsc2UpLAotICAgICAg
ICAgIHVzZUluc3RhbmNlZFBvaW50U3ByaXRlRW11bGF0aW9uKGZhbHNlKQotICAgIHt9Ci0KLSAg
ICAvLyBPbiBzb21lIHN5c3RlbXMsIGhhdmluZyBleHRyYSByZW5kZXJ0YXJnZXRzIHRoYW4gbmVj
ZXNzYXJ5IHNsb3dzIGRvd24gdGhlIHNoYWRlci4KLSAgICAvLyBXZSBjYW4gZml4IHRoaXMgYnkg
b3B0aW1pemluZyB0aG9zZSBvdXQgb2YgdGhlIHNoYWRlci4gQXQgdGhlIHNhbWUgdGltZSwgd2Ug
Y2FuCi0gICAgLy8gd29yayBhcm91bmQgYSBidWcgb24gc29tZSBuVmlkaWEgZHJpdmVycyB0aGF0
IHRoZXkgaWdub3JlICJudWxsIiByZW5kZXIgdGFyZ2V0cwotICAgIC8vIGluIEQzRDExLCBieSBj
b21wYWN0aW5nIHRoZSBhY3RpdmUgY29sb3IgYXR0YWNobWVudHMgbGlzdCB0byBvbWl0IG51bGwg
ZW50cmllcy4KLSAgICBib29sIG1ydFBlcmZXb3JrYXJvdW5kOwotCi0gICAgYm9vbCBzZXREYXRh
RmFzdGVyVGhhbkltYWdlVXBsb2FkOwotCi0gICAgLy8gU29tZSByZW5kZXJlcnMgY2FuJ3QgZGlz
YWJsZSBtaXBtYXBzIG9uIGEgbWlwbWFwcGVkIHRleHR1cmUgKGkuZS4gc29sZWx5IHNhbXBsZSBm
cm9tIGxldmVsIHplcm8sIGFuZCBpZ25vcmUgdGhlIG90aGVyIGxldmVscykuCi0gICAgLy8gRDNE
MTEgRmVhdHVyZSBMZXZlbCAxMCsgZG9lcyB0aGlzIGJ5IHNldHRpbmcgTWF4TE9EIHRvIDAuMGYg
aW4gdGhlIFNhbXBsZXIgc3RhdGUuIEQzRDkgc2V0cyBEM0RTQU1QX01JUEZJTFRFUiB0byBEM0RU
RVhGX05PTkUuCi0gICAgLy8gVGhlcmUgaXMgbm8gZXF1aXZhbGVudCB0byB0aGlzIGluIEQzRDEx
IEZlYXR1cmUgTGV2ZWwgOV8zLgotICAgIC8vIFRoaXMgY2F1c2VzIHByb2JsZW1zIHdoZW4gKGZv
ciBleGFtcGxlKSBhbiBhcHBsaWNhdGlvbiBjcmVhdGVzIGEgbWlwbWFwcGVkIHRleHR1cmUyRCwg
YnV0IHNldHMgR0xfVEVYVFVSRV9NSU5fRklMVEVSIHRvIEdMX05FQVJFU1QgKGkuZSBkaXNhYmxl
cyBtaXBtYXBzKS4KLSAgICAvLyBUbyB3b3JrIGFyb3VuZCB0aGlzLCBEM0QxMSBGTDlfMyBoYXMg
dG8gY3JlYXRlIHR3byBjb3BpZXMgb2YgdGhlIHRleHR1cmUuIFRoZSB0ZXh0dXJlcycgbGV2ZWwg
emVyb3MgYXJlIGlkZW50aWNhbCwgYnV0IG9ubHkgb25lIHRleHR1cmUgaGFzIG1pcHMuCi0gICAg
Ym9vbCB6ZXJvTWF4TG9kV29ya2Fyb3VuZDsKLQotICAgIC8vIFNvbWUgcmVuZGVyZXJzIGRvIG5v
dCBzdXBwb3J0IEdlb21ldHJ5IFNoYWRlcnMgc28gdGhlIEdlb21ldHJ5IFNoYWRlci1iYXNlZAot
ICAgIC8vIFBvaW50U3ByaXRlIGVtdWxhdGlvbiB3aWxsIG5vdCB3b3JrLgotICAgIC8vIFRvIHdv
cmsgYXJvdW5kIHRoaXMsIEQzRDExIEZMOV8zIGhhcyB0byB1c2UgYSBkaWZmZXJlbnQgcG9pbnRz
cHJpdGUKLSAgICAvLyBlbXVsYXRpb24gdGhhdCBpcyBpbXBsZW1lbnRlZCB1c2luZyBpbnN0YW5j
ZWQgcXVhZHMuCi0gICAgYm9vbCB1c2VJbnN0YW5jZWRQb2ludFNwcml0ZUVtdWxhdGlvbjsKLX07
Ci0KLX0KLQotI2VuZGlmIC8vIExJQkFOR0xFX1JFTkRFUkVSX1dPUktBUk9VTkRTX0hfCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvYW5nbGVfZm9y
bWF0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9hbmdsZV9mb3JtYXQucHkJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2FuZ2xlX2Zvcm1hdC5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisjIS91c3IvYmluL3B5dGhvbgorIyBDb3B5cmlnaHQg
MjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisjCisjIGFuZ2xlX2Zv
cm1hdC5weToKKyMgIFV0aWxzIGZvciBBTkdMRSBmb3JtYXRzLgorCitpbXBvcnQganNvbgoraW1w
b3J0IG9zCisKK2RlZiByZWplY3RfZHVwbGljYXRlX2tleXMocGFpcnMpOgorICAgIGZvdW5kX2tl
eXMgPSB7fQorICAgIGZvciBrZXksIHZhbHVlIGluIHBhaXJzOgorICAgICAgICBpZiBrZXkgaW4g
Zm91bmRfa2V5czoKKyAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZHVwbGljYXRlIGtleTog
JXIiICUgKGtleSwpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICBmb3VuZF9rZXlzW2tleV0g
PSB2YWx1ZQorICAgIHJldHVybiBmb3VuZF9rZXlzCisKK2RlZiBsb2FkX2pzb24ocGF0aCk6Cisg
ICAgd2l0aCBvcGVuKHBhdGgpIGFzIG1hcF9maWxlOgorICAgICAgICBmaWxlX2RhdGEgPSBtYXBf
ZmlsZS5yZWFkKCkKKyAgICAgICAgbWFwX2ZpbGUuY2xvc2UoKQorICAgICAgICByZXR1cm4ganNv
bi5sb2FkcyhmaWxlX2RhdGEsIG9iamVjdF9wYWlyc19ob29rPXJlamVjdF9kdXBsaWNhdGVfa2V5
cykKKworZGVmIGxvYWRfZm9yd2FyZF90YWJsZShwYXRoKToKKyAgICBwYWlycyA9IGxvYWRfanNv
bihwYXRoKQorICAgIHJlamVjdF9kdXBsaWNhdGVfa2V5cyhwYWlycykKKyAgICByZXR1cm4geyBn
bDogYW5nbGUgZm9yIGdsLCBhbmdsZSBpbiBwYWlycyB9CisKK2RlZiBsb2FkX2ludmVyc2VfdGFi
bGUocGF0aCk6CisgICAgcGFpcnMgPSBsb2FkX2pzb24ocGF0aCkKKyAgICByZWplY3RfZHVwbGlj
YXRlX2tleXMocGFpcnMpCisgICAgcmV0dXJuIHsgYW5nbGU6IGdsIGZvciBnbCwgYW5nbGUgaW4g
cGFpcnMgfQorCitkZWYgbG9hZF93aXRoX292ZXJyaWRlKG92ZXJyaWRlX3BhdGgpOgorICAgIG1h
cF9wYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLnJlYWxwYXRoKF9f
ZmlsZV9fKSksICdhbmdsZV9mb3JtYXRfbWFwLmpzb24nKQorICAgIHJlc3VsdHMgPSBsb2FkX2Zv
cndhcmRfdGFibGUobWFwX3BhdGgpCisgICAgb3ZlcnJpZGVzID0gbG9hZF9qc29uKG92ZXJyaWRl
X3BhdGgpCisKKyAgICBmb3IgaywgdiBpbiBvdmVycmlkZXMuaXRlcml0ZW1zKCk6CisgICAgICAg
IHJlc3VsdHNba10gPSB2CisKKyAgICByZXR1cm4gcmVzdWx0cwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2FuZ2xlX2Zvcm1hdF9kYXRhLmpzb24K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2FuZ2xlX2Zvcm1hdF9kYXRhLmpzb24JKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2FuZ2xlX2Zvcm1hdF9kYXRhLmpzb24J
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMSBAQAoreworICAiQjVHNlI1X1VOT1JNIjogewor
ICAgICJmYm9JbXBsZW1lbnRhdGlvbkludGVybmFsRm9ybWF0IjogIkdMX1JHQjU2NSIKKyAgfSwK
KyAgIkI1RzVSNUExX1VOT1JNIjogeworICAgICJmYm9JbXBsZW1lbnRhdGlvbkludGVybmFsRm9y
bWF0IjogIkdMX1JHQjVfQTEiLAorICAgICJjaGFubmVsU3RydWN0IjogIkExUjVHNUI1IgorICB9
LAorICAiQjhHOFI4WDhfVU5PUk0iOiB7CisgICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfQkdS
QThfRVhUIiwKKyAgICAiY2hhbm5lbFN0cnVjdCI6ICJCOEc4UjhYOCIKKyAgfSwKKyAgIlI5RzlC
OUU1X1NIQVJFREVYUCI6IHsKKyAgICAiY29tcG9uZW50VHlwZSI6ICAiZmxvYXQiLAorICAgICJj
aGFubmVsU3RydWN0IjogICJSOUc5QjlFNSIKKyAgfSwKKyAgIkI0RzRSNEE0X1VOT1JNIjogewor
ICAgICJmYm9JbXBsZW1lbnRhdGlvbkludGVybmFsRm9ybWF0IjogIkdMX1JHQkE0IiwKKyAgICAi
Y2hhbm5lbFN0cnVjdCI6ICAiQTRSNEc0QjQiCisgIH0KK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9hbmdsZV9mb3JtYXRfbWFwLmpzb24KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2FuZ2xlX2Zvcm1hdF9tYXAuanNvbgkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvYW5nbGVfZm9ybWF0X21hcC5qc29uCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTI3IEBACitbCisgIFsgIkdMX0FMUEhBMTZGX0VYVCIsICJB
MTZfRkxPQVQiIF0sCisgIFsgIkdMX0FMUEhBMzJGX0VYVCIsICJBMzJfRkxPQVQiIF0sCisgIFsg
IkdMX0FMUEhBOF9FWFQiLCAiQThfVU5PUk0iIF0sCisgIFsgIkdMX0JHUjU2NV9BTkdMRVgiLCAi
QjVHNlI1X1VOT1JNIiBdLAorICBbICJHTF9CR1I1X0ExX0FOR0xFWCIsICJCNUc1UjVBMV9VTk9S
TSIgXSwKKyAgWyAiR0xfQkdSQTRfQU5HTEVYIiwgIkI0RzRSNEE0X1VOT1JNIiBdLAorICBbICJH
TF9CR1JBOF9FWFQiLCAiQjhHOFI4QThfVU5PUk0iIF0sCisgIFsgIkdMX0JHUlg4X0FOR0xFWCIs
ICJCOEc4UjhYOF9VTk9STSIgXSwKKyAgWyAiR0xfQ09NUFJFU1NFRF9SMTFfRUFDIiwgIkVBQ19S
MTFfVU5PUk1fQkxPQ0siIF0sCisgIFsgIkdMX0NPTVBSRVNTRURfUkcxMV9FQUMiLCAiRUFDX1Ix
MUcxMV9VTk9STV9CTE9DSyIgXSwKKyAgWyAiR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIiLCAiRVRD
Ml9SOEc4QjhfVU5PUk1fQkxPQ0siIF0sCisgIFsgIkdMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRI
Uk9VR0hfQUxQSEExX0VUQzIiLCAiRVRDMl9SOEc4QjhBMV9VTk9STV9CTE9DSyIgXSwKKyAgWyAi
R0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQyIsICJFVEMyX1I4RzhCOEE4X1VOT1JNX0JMT0NL
IiBdLAorICBbICJHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCIsICJCQzFfUkdCQV9V
Tk9STV9CTE9DSyIgXSwKKyAgWyAiR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRSIs
ICJCQzJfUkdCQV9VTk9STV9CTE9DSyIgXSwKKyAgWyAiR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUNV9BTkdMRSIsICJCQzNfUkdCQV9VTk9STV9CTE9DSyIgXSwKKyAgWyAiR0xfQ09NUFJFU1NF
RF9SR0JBX0FTVENfNHg0X0tIUiIsICJBU1RDXzR4NF9VTk9STV9CTE9DSyIgXSwKKyAgWyAiR0xf
Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUiIsICJBU1RDXzV4NF9VTk9STV9CTE9DSyIgXSwK
KyAgWyAiR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1X0tIUiIsICJBU1RDXzV4NV9VTk9STV9C
TE9DSyIgXSwKKyAgWyAiR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUiIsICJBU1RDXzZ4
NV9VTk9STV9CTE9DSyIgXSwKKyAgWyAiR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUiIs
ICJBU1RDXzZ4Nl9VTk9STV9CTE9DSyIgXSwKKyAgWyAiR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENf
OHg1X0tIUiIsICJBU1RDXzh4NV9VTk9STV9CTE9DSyIgXSwKKyAgWyAiR0xfQ09NUFJFU1NFRF9S
R0JBX0FTVENfOHg2X0tIUiIsICJBU1RDXzh4Nl9VTk9STV9CTE9DSyIgXSwKKyAgWyAiR0xfQ09N
UFJFU1NFRF9SR0JBX0FTVENfOHg4X0tIUiIsICJBU1RDXzh4OF9VTk9STV9CTE9DSyIgXSwKKyAg
WyAiR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFIiLCAiQVNUQ18xMHg1X1VOT1JNX0JM
T0NLIiBdLAorICBbICJHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2X0tIUiIsICJBU1RDXzEw
eDZfVU5PUk1fQkxPQ0siIF0sCisgIFsgIkdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDhfS0hS
IiwgIkFTVENfMTB4OF9VTk9STV9CTE9DSyIgXSwKKyAgWyAiR0xfQ09NUFJFU1NFRF9SR0JBX0FT
VENfMTB4MTBfS0hSIiwgIkFTVENfMTB4MTBfVU5PUk1fQkxPQ0siIF0sCisgIFsgIkdMX0NPTVBS
RVNTRURfUkdCQV9BU1RDXzEyeDEwX0tIUiIsICJBU1RDXzEyeDEwX1VOT1JNX0JMT0NLIiBdLAor
ICBbICJHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMl9LSFIiLCAiQVNUQ18xMngxMl9VTk9S
TV9CTE9DSyIgXSwKKyAgWyAiR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCIsICJCQzFf
UkdCX1VOT1JNX0JMT0NLIiBdLAorICBbICJHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDIiwg
IkVBQ19SMTFfU05PUk1fQkxPQ0siIF0sCisgIFsgIkdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFf
RUFDIiwgIkVBQ19SMTFHMTFfU05PUk1fQkxPQ0siIF0sCisgIFsgIkdMX0NPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfNHg0X0tIUiIsICJBU1RDXzR4NF9TUkdCX0JMT0NLIiBdLAorICBbICJH
TF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFIiLCAiQVNUQ181eDRfU1JHQl9C
TE9DSyIgXSwKKyAgWyAiR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDVfS0hSIiwg
IkFTVENfNXg1X1NSR0JfQkxPQ0siIF0sCisgIFsgIkdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4
X0FTVENfNng1X0tIUiIsICJBU1RDXzZ4NV9TUkdCX0JMT0NLIiBdLAorICBbICJHTF9DT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFIiLCAiQVNUQ182eDZfU1JHQl9CTE9DSyIgXSwK
KyAgWyAiR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSIiwgIkFTVENfOHg1
X1NSR0JfQkxPQ0siIF0sCisgIFsgIkdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2
X0tIUiIsICJBU1RDXzh4Nl9TUkdCX0JMT0NLIiBdLAorICBbICJHTF9DT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzh4OF9LSFIiLCAiQVNUQ184eDhfU1JHQl9CTE9DSyIgXSwKKyAgWyAiR0xf
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1X0tIUiIsICJBU1RDXzEweDVfU1JHQl9C
TE9DSyIgXSwKKyAgWyAiR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUiIs
ICJBU1RDXzEweDZfU1JHQl9CTE9DSyIgXSwKKyAgWyAiR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ18xMHg4X0tIUiIsICJBU1RDXzEweDhfU1JHQl9CTE9DSyIgXSwKKyAgWyAiR0xfQ09N
UFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFIiLCAiQVNUQ18xMHgxMF9TUkdCX0JM
T0NLIiBdLAorICBbICJHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tIUiIs
ICJBU1RDXzEyeDEwX1NSR0JfQkxPQ0siIF0sCisgIFsgIkdMX0NPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfMTJ4MTJfS0hSIiwgIkFTVENfMTJ4MTJfU1JHQl9CTE9DSyIgXSwKKyAgWyAiR0xf
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMiLCAiRVRDMl9SOEc4QjhBOF9TUkdCX0JM
T0NLIiBdLAorICBbICJHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIiLCAiRVRDMl9SOEc4QjhfU1JH
Ql9CTE9DSyIgXSwKKyAgWyAiR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEEx
X0VUQzIiLCAiRVRDMl9SOEc4QjhBMV9TUkdCX0JMT0NLIiBdLAorICBbICJHTF9ERVBUSDI0X1NU
RU5DSUw4IiwgIkQyNF9VTk9STV9TOF9VSU5UIiBdLAorICBbICJHTF9ERVBUSDMyRl9TVEVOQ0lM
OCIsICJEMzJfRkxPQVRfUzhYMjRfVUlOVCIgXSwKKyAgWyAiR0xfREVQVEhfQ09NUE9ORU5UMTYi
LCAiRDE2X1VOT1JNIiBdLAorICBbICJHTF9ERVBUSF9DT01QT05FTlQyNCIsICJEMjRfVU5PUk0i
IF0sCisgIFsgIkdMX0RFUFRIX0NPTVBPTkVOVDMyRiIsICJEMzJfRkxPQVQiIF0sCisgIFsgIkdM
X0RFUFRIX0NPTVBPTkVOVDMyX09FUyIsICJEMzJfVU5PUk0iIF0sCisgIFsgIkdMX0VUQzFfUkdC
OF9PRVMiLCAiTk9ORSIgXSwKKyAgWyAiR0xfRVRDMV9SR0I4X0xPU1NZX0RFQ09ERV9BTkdMRSIs
ICJOT05FIiBdLAorICBbICJHTF9MVU1JTkFOQ0UxNkZfRVhUIiwgIkwxNl9GTE9BVCIgXSwKKyAg
WyAiR0xfTFVNSU5BTkNFMzJGX0VYVCIsICJMMzJfRkxPQVQiIF0sCisgIFsgIkdMX0xVTUlOQU5D
RThfQUxQSEE4X0VYVCIsICJMOEE4X1VOT1JNIiBdLAorICBbICJHTF9MVU1JTkFOQ0U4X0VYVCIs
ICJMOF9VTk9STSIgXSwKKyAgWyAiR0xfTFVNSU5BTkNFX0FMUEhBMTZGX0VYVCIsICJMMTZBMTZf
RkxPQVQiIF0sCisgIFsgIkdMX0xVTUlOQU5DRV9BTFBIQTMyRl9FWFQiLCAiTDMyQTMyX0ZMT0FU
IiBdLAorICBbICJHTF9OT05FIiwgIk5PTkUiIF0sCisgIFsgIkdMX1IxMUZfRzExRl9CMTBGIiwg
IlIxMUcxMUIxMF9GTE9BVCIgXSwKKyAgWyAiR0xfUjE2RiIsICJSMTZfRkxPQVQiIF0sCisgIFsg
IkdMX1IxNkkiLCAiUjE2X1NJTlQiIF0sCisgIFsgIkdMX1IxNlVJIiwgIlIxNl9VSU5UIiBdLAor
ICBbICJHTF9SMzJGIiwgIlIzMl9GTE9BVCIgXSwKKyAgWyAiR0xfUjMySSIsICJSMzJfU0lOVCIg
XSwKKyAgWyAiR0xfUjMyVUkiLCAiUjMyX1VJTlQiIF0sCisgIFsgIkdMX1I4IiwgIlI4X1VOT1JN
IiBdLAorICBbICJHTF9SOEkiLCAiUjhfU0lOVCIgXSwKKyAgWyAiR0xfUjhVSSIsICJSOF9VSU5U
IiBdLAorICBbICJHTF9SOF9TTk9STSIsICJSOF9TTk9STSIgXSwKKyAgWyAiR0xfUkcxNkYiLCAi
UjE2RzE2X0ZMT0FUIiBdLAorICBbICJHTF9SRzE2SSIsICJSMTZHMTZfU0lOVCIgXSwKKyAgWyAi
R0xfUkcxNlVJIiwgIlIxNkcxNl9VSU5UIiBdLAorICBbICJHTF9SRzMyRiIsICJSMzJHMzJfRkxP
QVQiIF0sCisgIFsgIkdMX1JHMzJJIiwgIlIzMkczMl9TSU5UIiBdLAorICBbICJHTF9SRzMyVUki
LCAiUjMyRzMyX1VJTlQiIF0sCisgIFsgIkdMX1JHOCIsICJSOEc4X1VOT1JNIiBdLAorICBbICJH
TF9SRzhJIiwgIlI4RzhfU0lOVCIgXSwKKyAgWyAiR0xfUkc4VUkiLCAiUjhHOF9VSU5UIiBdLAor
ICBbICJHTF9SRzhfU05PUk0iLCAiUjhHOF9TTk9STSIgXSwKKyAgWyAiR0xfUkdCIiwgIlI4RzhC
OF9VTk9STSIgXSwKKyAgWyAiR0xfUkdCMTBfQTIiLCAiUjEwRzEwQjEwQTJfVU5PUk0iIF0sCisg
IFsgIkdMX1JHQjEwX0EyVUkiLCAiUjEwRzEwQjEwQTJfVUlOVCIgXSwKKyAgWyAiR0xfUkdCMTZG
IiwgIlIxNkcxNkIxNl9GTE9BVCIgXSwKKyAgWyAiR0xfUkdCMTZJIiwgIlIxNkcxNkIxNl9TSU5U
IiBdLAorICBbICJHTF9SR0IxNlVJIiwgIlIxNkcxNkIxNl9VSU5UIiBdLAorICBbICJHTF9SR0Iz
MkYiLCAiUjMyRzMyQjMyX0ZMT0FUIiBdLAorICBbICJHTF9SR0IzMkkiLCAiUjMyRzMyQjMyX1NJ
TlQiIF0sCisgIFsgIkdMX1JHQjMyVUkiLCAiUjMyRzMyQjMyX1VJTlQiIF0sCisgIFsgIkdMX1JH
QjU2NSIsICJSNUc2QjVfVU5PUk0iIF0sCisgIFsgIkdMX1JHQjVfQTEiLCAiUjVHNUI1QTFfVU5P
Uk0iIF0sCisgIFsgIkdMX1JHQjgiLCAiUjhHOEI4X1VOT1JNIiBdLAorICBbICJHTF9SR0I4SSIs
ICJSOEc4QjhfU0lOVCIgXSwKKyAgWyAiR0xfUkdCOFVJIiwgIlI4RzhCOF9VSU5UIiBdLAorICBb
ICJHTF9SR0I4X1NOT1JNIiwgIlI4RzhCOF9TTk9STSIgXSwKKyAgWyAiR0xfUkdCOV9FNSIsICJS
OUc5QjlFNV9TSEFSRURFWFAiIF0sCisgIFsgIkdMX1JHQkEiLCAiUjhHOEI4QThfVU5PUk0iIF0s
CisgIFsgIkdMX1JHQkExNkYiLCAiUjE2RzE2QjE2QTE2X0ZMT0FUIiBdLAorICBbICJHTF9SR0JB
MTZJIiwgIlIxNkcxNkIxNkExNl9TSU5UIiBdLAorICBbICJHTF9SR0JBMTZVSSIsICJSMTZHMTZC
MTZBMTZfVUlOVCIgXSwKKyAgWyAiR0xfUkdCQTMyRiIsICJSMzJHMzJCMzJBMzJfRkxPQVQiIF0s
CisgIFsgIkdMX1JHQkEzMkkiLCAiUjMyRzMyQjMyQTMyX1NJTlQiIF0sCisgIFsgIkdMX1JHQkEz
MlVJIiwgIlIzMkczMkIzMkEzMl9VSU5UIiBdLAorICBbICJHTF9SR0JBNCIsICJSNEc0QjRBNF9V
Tk9STSIgXSwKKyAgWyAiR0xfUkdCQTgiLCAiUjhHOEI4QThfVU5PUk0iIF0sCisgIFsgIkdMX1JH
QkE4SSIsICJSOEc4QjhBOF9TSU5UIiBdLAorICBbICJHTF9SR0JBOFVJIiwgIlI4RzhCOEE4X1VJ
TlQiIF0sCisgIFsgIkdMX1JHQkE4X1NOT1JNIiwgIlI4RzhCOEE4X1NOT1JNIiBdLAorICBbICJH
TF9TUkdCOCIsICJSOEc4QjhfVU5PUk1fU1JHQiIgXSwKKyAgWyAiR0xfU1JHQjhfQUxQSEE4Iiwg
IlI4RzhCOEE4X1VOT1JNX1NSR0IiIF0sCisgIFsgIkdMX1NURU5DSUxfSU5ERVg4IiwgIlM4X1VJ
TlQiIF0sCisgIFsgIkdMX1IxNl9FWFQiLCAiUjE2X1VOT1JNIiBdLAorICBbICJHTF9SRzE2X0VY
VCIsICJSMTZHMTZfVU5PUk0iIF0sCisgIFsgIkdMX1JHQjE2X0VYVCIsICJSMTZHMTZCMTZfVU5P
Uk0iIF0sCisgIFsgIkdMX1JHQkExNl9FWFQiLCAiUjE2RzE2QjE2QTE2X1VOT1JNIiBdLAorICBb
ICJHTF9SMTZfU05PUk1fRVhUIiwgIlIxNl9TTk9STSIgXSwKKyAgWyAiR0xfUkcxNl9TTk9STV9F
WFQiLCAiUjE2RzE2X1NOT1JNIiBdLAorICBbICJHTF9SR0IxNl9TTk9STV9FWFQiLCAiUjE2RzE2
QjE2X1NOT1JNIiBdLAorICBbICJHTF9SR0JBMTZfU05PUk1fRVhUIiwgIlIxNkcxNkIxNkExNl9T
Tk9STSIgXQorXQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dlbl9hbmdsZV9mb3JtYXRfdGFibGUucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dlbl9hbmdsZV9mb3JtYXRfdGFi
bGUucHkJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dlbl9hbmdsZV9mb3JtYXRfdGFibGUucHkJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwyNzMgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisjIENvcHlyaWdodCAyMDE2IFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyMKKyMgZ2VuX2FuZ2xlX2Zvcm1hdF90
YWJsZS5weToKKyMgIENvZGUgZ2VuZXJhdGlvbiBmb3IgQU5HTEUgZm9ybWF0IG1hcC4KKyMKKwor
aW1wb3J0IGFuZ2xlX2Zvcm1hdAorZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZQoraW1wb3J0IGpz
b24KK2ltcG9ydCBtYXRoCitpbXBvcnQgcHByaW50CitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKKwor
dGVtcGxhdGVfYXV0b2dlbl9oID0gIiIiLy8gR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVC4K
Ky8vIEdlbmVyYXRlZCBieSBnZW5fYW5nbGVfZm9ybWF0X3RhYmxlLnB5IHVzaW5nIGRhdGEgZnJv
bSBhbmdsZV9mb3JtYXRfZGF0YS5qc29uCisvLworLy8gQ29weXJpZ2h0IHtjb3B5cmlnaHRfeWVh
cn0gVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gQU5HTEUg
Zm9ybWF0IGVudW1lcmF0aW9uLgorCituYW1lc3BhY2UgYW5nbGUKK3t7CisKK2VudW0gY2xhc3Mg
Rm9ybWF0OjpJRAore3sKK3thbmdsZV9mb3JtYXRfZW51bX0KK319OworCit9fSAgLy8gbmFtZXNw
YWNlIGFuZ2xlCisiIiIKKwordGVtcGxhdGVfYXV0b2dlbl9jcHAgPSAiIiIvLyBHRU5FUkFURUQg
RklMRSAtIERPIE5PVCBFRElULgorLy8gR2VuZXJhdGVkIGJ5IGdlbl9hbmdsZV9mb3JtYXRfdGFi
bGUucHkgdXNpbmcgZGF0YSBmcm9tIGFuZ2xlX2Zvcm1hdF9kYXRhLmpzb24KKy8vCisvLyBDb3B5
cmlnaHQge2NvcHlyaWdodF95ZWFyfSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vCisvLyBBTkdMRSBGb3JtYXQgdGFibGU6CisvLyAgIFF1ZXJpZXMgZm9yIHR5cGVk
IGZvcm1hdCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBBTkdMRSBmb3JtYXQgZW51bS4KKworI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdC5oIgorCisjaW5jbHVkZSAiaW1hZ2VfdXRpbC9j
b3B5aW1hZ2UuaCIKKyNpbmNsdWRlICJpbWFnZV91dGlsL2dlbmVyYXRlbWlwLmgiCisjaW5jbHVk
ZSAiaW1hZ2VfdXRpbC9sb2FkaW1hZ2UuaCIKKworbmFtZXNwYWNlIGFuZ2xlCit7eworCisvLyBz
dGF0aWMKK2NvbnN0IEZvcm1hdCAmRm9ybWF0OjpHZXQoSUQgaWQpCit7eworICAgIC8vIGNsYW5n
LWZvcm1hdCBvZmYKKyAgICBzd2l0Y2ggKGlkKQorICAgIHt7Cit7YW5nbGVfZm9ybWF0X2luZm9f
Y2FzZXN9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgfX0KKyAgICAvLyBjbGFuZy1mb3JtYXQgb24KKworICAgIHN0
YXRpYyBjb25zdCBGb3JtYXQgbm9uZUluZm8oSUQ6Ok5PTkUsIEdMX05PTkUsIEdMX05PTkUsIG51
bGxwdHIsIG51bGxwdHIsIEdMX05PTkUsIDAsIDAsIDAsIDAsIDAsIDApOworICAgIHJldHVybiBu
b25lSW5mbzsKK319CisKK319ICAvLyBuYW1lc3BhY2UgYW5nbGUKKyIiIgorCitkZWYgZ2V0X2No
YW5uZWxfc3RydWN0KGFuZ2xlX2Zvcm1hdCk6CisgICAgaWYgJ2JpdHMnIG5vdCBpbiBhbmdsZV9m
b3JtYXQgb3IgYW5nbGVfZm9ybWF0WydiaXRzJ10gaXMgTm9uZToKKyAgICAgICAgcmV0dXJuIE5v
bmUKKyAgICBpZiAnQkxPQ0snIGluIGFuZ2xlX2Zvcm1hdFsnaWQnXToKKyAgICAgICAgcmV0dXJu
IE5vbmUKKyAgICBiaXRzID0gYW5nbGVfZm9ybWF0WydiaXRzJ10KKyAgICBpZiAnRCcgaW4gYml0
cyBvciAnUycgaW4gYml0czoKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGlmICdjaGFubmVs
U3RydWN0JyBpbiBhbmdsZV9mb3JtYXQ6CisgICAgICAgIHJldHVybiBhbmdsZV9mb3JtYXRbJ2No
YW5uZWxTdHJ1Y3QnXQorCisgICAgc3RydWN0X25hbWUgPSAnJworICAgIGZvciBjaGFubmVsIGlu
IGFuZ2xlX2Zvcm1hdFsnY2hhbm5lbHMnXToKKyAgICAgICAgaWYgY2hhbm5lbCA9PSAncic6Cisg
ICAgICAgICAgICBzdHJ1Y3RfbmFtZSArPSAnUnt9Jy5mb3JtYXQoYml0c1snUiddKQorICAgICAg
ICBpZiBjaGFubmVsID09ICdnJzoKKyAgICAgICAgICAgIHN0cnVjdF9uYW1lICs9ICdHe30nLmZv
cm1hdChiaXRzWydHJ10pCisgICAgICAgIGlmIGNoYW5uZWwgPT0gJ2InOgorICAgICAgICAgICAg
c3RydWN0X25hbWUgKz0gJ0J7fScuZm9ybWF0KGJpdHNbJ0InXSkKKyAgICAgICAgaWYgY2hhbm5l
bCA9PSAnYSc6CisgICAgICAgICAgICBzdHJ1Y3RfbmFtZSArPSAnQXt9Jy5mb3JtYXQoYml0c1sn
QSddKQorICAgICAgICBpZiBjaGFubmVsID09ICdsJzoKKyAgICAgICAgICAgIHN0cnVjdF9uYW1l
ICs9ICdMe30nLmZvcm1hdChiaXRzWydMJ10pCisgICAgaWYgYW5nbGVfZm9ybWF0Wydjb21wb25l
bnRUeXBlJ10gPT0gJ2Zsb2F0JzoKKyAgICAgICAgc3RydWN0X25hbWUgKz0gJ0YnCisgICAgaWYg
YW5nbGVfZm9ybWF0Wydjb21wb25lbnRUeXBlJ10gPT0gJ2ludCcgb3IgYW5nbGVfZm9ybWF0Wydj
b21wb25lbnRUeXBlJ10gPT0gJ3Nub3JtJzoKKyAgICAgICAgc3RydWN0X25hbWUgKz0gJ1MnCisg
ICAgcmV0dXJuIHN0cnVjdF9uYW1lCisKK2RlZiBnZXRfbWlwX2dlbmVyYXRpb25fZnVuY3Rpb24o
YW5nbGVfZm9ybWF0KToKKyAgICBjaGFubmVsX3N0cnVjdCA9IGdldF9jaGFubmVsX3N0cnVjdChh
bmdsZV9mb3JtYXQpCisgICAgaWYgY2hhbm5lbF9zdHJ1Y3QgPT0gTm9uZSBvciAiQkxPQ0siIGlu
IGFuZ2xlX2Zvcm1hdFsiaWQiXToKKyAgICAgICAgcmV0dXJuICdudWxscHRyJworICAgIHJldHVy
biAnR2VuZXJhdGVNaXA8JyArIGNoYW5uZWxfc3RydWN0ICsgJz4nCisKK2RlZiBnZXRfY29sb3Jf
cmVhZF9mdW5jdGlvbihhbmdsZV9mb3JtYXQpOgorICAgIGNoYW5uZWxfc3RydWN0ID0gZ2V0X2No
YW5uZWxfc3RydWN0KGFuZ2xlX2Zvcm1hdCkKKyAgICBpZiBjaGFubmVsX3N0cnVjdCA9PSBOb25l
OgorICAgICAgICByZXR1cm4gJ251bGxwdHInCisgICAgY29tcG9uZW50X3R5cGVfbWFwID0gewor
ICAgICAgICAndWludCc6ICdHTHVpbnQnLAorICAgICAgICAnaW50JzogJ0dMaW50JywKKyAgICAg
ICAgJ3Vub3JtJzogJ0dMZmxvYXQnLAorICAgICAgICAnc25vcm0nOiAnR0xmbG9hdCcsCisgICAg
ICAgICdmbG9hdCc6ICdHTGZsb2F0JworICAgIH0KKyAgICByZXR1cm4gJ1JlYWRDb2xvcjwnICsg
Y2hhbm5lbF9zdHJ1Y3QgKyAnLCAnKyBjb21wb25lbnRfdHlwZV9tYXBbYW5nbGVfZm9ybWF0Wydj
b21wb25lbnRUeXBlJ11dICsgJz4nCisKK2Zvcm1hdF9lbnRyeV90ZW1wbGF0ZSA9ICIiIntzcGFj
ZX17ewore3NwYWNlfSAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OntpZH0sCit7c3Bh
Y2V9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Z2xJbnRlcm5hbEZvcm1hdH0sCit7c3Bh
Y2V9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmJvSW1wbGVtZW50YXRpb25JbnRlcm5h
bEZvcm1hdH0sCit7c3BhY2V9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bWlwR2VuZXJh
dGlvbkZ1bmN0aW9ufSwKK3tzcGFjZX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjb2xv
clJlYWRGdW5jdGlvbn0sCit7c3BhY2V9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bmFt
ZWRDb21wb25lbnRUeXBlfSwKK3tzcGFjZX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtS
fSwge0d9LCB7Qn0sIHtBfSwge0R9LCB7U30pOwore3NwYWNlfSAgICByZXR1cm4gaW5mbzsKK3tz
cGFjZX19fQorIiIiCisKK2RlZiBnZXRfY29tcG9uZW50X3R5cGUoZm9ybWF0X2lkKToKKyAgICBp
ZiAiU05PUk0iIGluIGZvcm1hdF9pZDoKKyAgICAgICAgcmV0dXJuICJzbm9ybSIKKyAgICBlbGlm
ICJVTk9STSIgaW4gZm9ybWF0X2lkOgorICAgICAgICByZXR1cm4gInVub3JtIgorICAgIGVsaWYg
IkZMT0FUIiBpbiBmb3JtYXRfaWQ6CisgICAgICAgIHJldHVybiAiZmxvYXQiCisgICAgZWxpZiAi
VUlOVCIgaW4gZm9ybWF0X2lkOgorICAgICAgICByZXR1cm4gInVpbnQiCisgICAgZWxpZiAiU0lO
VCIgaW4gZm9ybWF0X2lkOgorICAgICAgICByZXR1cm4gImludCIKKyAgICBlbGlmIGZvcm1hdF9p
ZCA9PSAiTk9ORSI6CisgICAgICAgIHJldHVybiAibm9uZSIKKyAgICBlbGlmICJTUkdCIiBpbiBm
b3JtYXRfaWQ6CisgICAgICAgIHJldHVybiAidW5vcm0iCisgICAgZWxzZToKKyAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcigiVW5rbm93biBjb21wb25lbnQgdHlwZSBmb3IgIiArIGZvcm1hdF9pZCkK
KworZGVmIGdldF9jaGFubmVsX3Rva2Vucyhmb3JtYXRfaWQpOgorICAgIHIgPSByZS5jb21waWxl
KHInKFtBQkRHTFJTXVtcZF0rKScpCisgICAgcmV0dXJuIGZpbHRlcihyLm1hdGNoLCByLnNwbGl0
KGZvcm1hdF9pZCkpCisKK2RlZiBnZXRfY2hhbm5lbHMoZm9ybWF0X2lkKToKKyAgICBjaGFubmVs
cyA9ICcnCisgICAgdG9rZW5zID0gZ2V0X2NoYW5uZWxfdG9rZW5zKGZvcm1hdF9pZCkKKyAgICBp
ZiBsZW4odG9rZW5zKSA9PSAwOgorICAgICAgICByZXR1cm4gTm9uZQorICAgIGZvciB0b2tlbiBp
biB0b2tlbnM6CisgICAgICAgIGNoYW5uZWxzICs9IHRva2VuWzBdLmxvd2VyKCkKKworICAgIHJl
dHVybiBjaGFubmVscworCitkZWYgZ2V0X2JpdHMoZm9ybWF0X2lkKToKKyAgICBiaXRzID0ge30K
KyAgICB0b2tlbnMgPSBnZXRfY2hhbm5lbF90b2tlbnMoZm9ybWF0X2lkKQorICAgIGlmIGxlbih0
b2tlbnMpID09IDA6CisgICAgICAgIHJldHVybiBOb25lCisgICAgZm9yIHRva2VuIGluIHRva2Vu
czoKKyAgICAgICAgYml0c1t0b2tlblswXV0gPSBpbnQodG9rZW5bMTpdKQorICAgIHJldHVybiBi
aXRzCisKK2RlZiBnZXRfbmFtZWRfY29tcG9uZW50X3R5cGUoY29tcG9uZW50X3R5cGUpOgorICAg
IGlmIGNvbXBvbmVudF90eXBlID09ICJzbm9ybSI6CisgICAgICAgIHJldHVybiAiR0xfU0lHTkVE
X05PUk1BTElaRUQiCisgICAgZWxpZiBjb21wb25lbnRfdHlwZSA9PSAidW5vcm0iOgorICAgICAg
ICByZXR1cm4gIkdMX1VOU0lHTkVEX05PUk1BTElaRUQiCisgICAgZWxpZiBjb21wb25lbnRfdHlw
ZSA9PSAiZmxvYXQiOgorICAgICAgICByZXR1cm4gIkdMX0ZMT0FUIgorICAgIGVsaWYgY29tcG9u
ZW50X3R5cGUgPT0gInVpbnQiOgorICAgICAgICByZXR1cm4gIkdMX1VOU0lHTkVEX0lOVCIKKyAg
ICBlbGlmIGNvbXBvbmVudF90eXBlID09ICJpbnQiOgorICAgICAgICByZXR1cm4gIkdMX0lOVCIK
KyAgICBlbGlmIGNvbXBvbmVudF90eXBlID09ICJub25lIjoKKyAgICAgICAgcmV0dXJuICJHTF9O
T05FIgorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVua25vd24gY29tcG9u
ZW50IHR5cGUgZm9yICIgKyBjb21wb25lbnRfdHlwZSkKKworZGVmIGpzb25fdG9fdGFibGVfZGF0
YShmb3JtYXRfaWQsIGpzb24sIGFuZ2xlX3RvX2dsKToKKworICAgIHRhYmxlX2RhdGEgPSAiIgor
CisgICAgcGFyc2VkID0geworICAgICAgICAic3BhY2UiOiAiICAgICAgICAiLAorICAgICAgICAi
aWQiOiBmb3JtYXRfaWQsCisgICAgfQorCisgICAgZm9yIGssIHYgaW4ganNvbi5pdGVyaXRlbXMo
KToKKyAgICAgICAgcGFyc2VkW2tdID0gdgorCisgICAgaWYgImdsSW50ZXJuYWxGb3JtYXQiIG5v
dCBpbiBwYXJzZWQ6CisgICAgICAgIHBhcnNlZFsiZ2xJbnRlcm5hbEZvcm1hdCJdID0gYW5nbGVf
dG9fZ2xbZm9ybWF0X2lkXQorCisgICAgaWYgImZib0ltcGxlbWVudGF0aW9uSW50ZXJuYWxGb3Jt
YXQiIG5vdCBpbiBwYXJzZWQ6CisgICAgICAgIHBhcnNlZFsiZmJvSW1wbGVtZW50YXRpb25JbnRl
cm5hbEZvcm1hdCJdID0gcGFyc2VkWyJnbEludGVybmFsRm9ybWF0Il0KKworICAgIGlmICJjb21w
b25lbnRUeXBlIiBub3QgaW4gcGFyc2VkOgorICAgICAgICBwYXJzZWRbImNvbXBvbmVudFR5cGUi
XSA9IGdldF9jb21wb25lbnRfdHlwZShmb3JtYXRfaWQpCisKKyAgICBpZiAiY2hhbm5lbHMiIG5v
dCBpbiBwYXJzZWQ6CisgICAgICAgIHBhcnNlZFsiY2hhbm5lbHMiXSA9IGdldF9jaGFubmVscyhm
b3JtYXRfaWQpCisKKyAgICBpZiAiYml0cyIgbm90IGluIHBhcnNlZDoKKyAgICAgICAgcGFyc2Vk
WyJiaXRzIl0gPSBnZXRfYml0cyhmb3JtYXRfaWQpCisKKyAgICAjIERlcml2ZWQgdmFsdWVzLgor
ICAgIHBhcnNlZFsibWlwR2VuZXJhdGlvbkZ1bmN0aW9uIl0gPSBnZXRfbWlwX2dlbmVyYXRpb25f
ZnVuY3Rpb24ocGFyc2VkKQorICAgIHBhcnNlZFsiY29sb3JSZWFkRnVuY3Rpb24iXSA9IGdldF9j
b2xvcl9yZWFkX2Z1bmN0aW9uKHBhcnNlZCkKKworICAgIGZvciBjaGFubmVsIGluICJBQkRHTFJT
IjoKKyAgICAgICAgaWYgcGFyc2VkWyJiaXRzIl0gIT0gTm9uZSBhbmQgY2hhbm5lbCBpbiBwYXJz
ZWRbImJpdHMiXToKKyAgICAgICAgICAgIHBhcnNlZFtjaGFubmVsXSA9IHBhcnNlZFsiYml0cyJd
W2NoYW5uZWxdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwYXJzZWRbY2hhbm5lbF0gPSAi
MCIKKworICAgIHBhcnNlZFsibmFtZWRDb21wb25lbnRUeXBlIl0gPSBnZXRfbmFtZWRfY29tcG9u
ZW50X3R5cGUocGFyc2VkWyJjb21wb25lbnRUeXBlIl0pCisKKyAgICByZXR1cm4gZm9ybWF0X2Vu
dHJ5X3RlbXBsYXRlLmZvcm1hdCgqKnBhcnNlZCkKKworZGVmIHBhcnNlX2pzb25faW50b19hbmds
ZV9mb3JtYXRfc3dpdGNoX3N0cmluZyhhbGxfYW5nbGUsIGpzb25fZGF0YSwgYW5nbGVfdG9fZ2wp
OgorICAgIHRhYmxlX2RhdGEgPSAnJworICAgIGZvciBmb3JtYXRfaWQgaW4gc29ydGVkKGFsbF9h
bmdsZSk6CisgICAgICAgIGZvcm1hdF9pbmZvID0ganNvbl9kYXRhW2Zvcm1hdF9pZF0gaWYgZm9y
bWF0X2lkIGluIGpzb25fZGF0YSBlbHNlIHt9CisgICAgICAgIHRhYmxlX2RhdGEgKz0gJyAgICAg
ICAgY2FzZSBJRDo6JyArIGZvcm1hdF9pZCArICc6XG4nCisgICAgICAgIHRhYmxlX2RhdGEgKz0g
anNvbl90b190YWJsZV9kYXRhKGZvcm1hdF9pZCwgZm9ybWF0X2luZm8sIGFuZ2xlX3RvX2dsKQor
CisgICAgcmV0dXJuIHRhYmxlX2RhdGEKKworZGVmIGdlbl9lbnVtX3N0cmluZyhhbGxfYW5nbGUp
OgorICAgIGVudW1fZGF0YSA9ICcgICAgTk9ORScKKyAgICBmb3IgZm9ybWF0X2lkIGluIHNvcnRl
ZChhbGxfYW5nbGUpOgorICAgICAgICBpZiBmb3JtYXRfaWQgPT0gJ05PTkUnOgorICAgICAgICAg
ICAgY29udGludWUKKyAgICAgICAgZW51bV9kYXRhICs9ICcsXG4gICAgJyArIGZvcm1hdF9pZAor
ICAgIHJldHVybiBlbnVtX2RhdGEKKworZ2xfdG9fYW5nbGUgPSBhbmdsZV9mb3JtYXQubG9hZF9m
b3J3YXJkX3RhYmxlKCdhbmdsZV9mb3JtYXRfbWFwLmpzb24nKQorYW5nbGVfdG9fZ2wgPSBhbmds
ZV9mb3JtYXQubG9hZF9pbnZlcnNlX3RhYmxlKCdhbmdsZV9mb3JtYXRfbWFwLmpzb24nKQoranNv
bl9kYXRhID0gYW5nbGVfZm9ybWF0LmxvYWRfanNvbignYW5nbGVfZm9ybWF0X2RhdGEuanNvbicp
CithbGxfYW5nbGUgPSBhbmdsZV90b19nbC5rZXlzKCkKKworYW5nbGVfZm9ybWF0X2Nhc2VzID0g
cGFyc2VfanNvbl9pbnRvX2FuZ2xlX2Zvcm1hdF9zd2l0Y2hfc3RyaW5nKAorICAgIGFsbF9hbmds
ZSwganNvbl9kYXRhLCBhbmdsZV90b19nbCkKK291dHB1dF9jcHAgPSB0ZW1wbGF0ZV9hdXRvZ2Vu
X2NwcC5mb3JtYXQoCisgICAgY29weXJpZ2h0X3llYXI9ZGF0ZS50b2RheSgpLnllYXIsCisgICAg
YW5nbGVfZm9ybWF0X2luZm9fY2FzZXM9YW5nbGVfZm9ybWF0X2Nhc2VzKQord2l0aCBvcGVuKCdG
b3JtYXRfYXV0b2dlbi5jcHAnLCAnd3QnKSBhcyBvdXRfZmlsZToKKyAgICBvdXRfZmlsZS53cml0
ZShvdXRwdXRfY3BwKQorICAgIG91dF9maWxlLmNsb3NlKCkKKworZW51bV9kYXRhID0gZ2VuX2Vu
dW1fc3RyaW5nKGFsbF9hbmdsZSkKK291dHB1dF9oID0gdGVtcGxhdGVfYXV0b2dlbl9oLmZvcm1h
dCgKKyAgICBjb3B5cmlnaHRfeWVhcj1kYXRlLnRvZGF5KCkueWVhciwKKyAgICBhbmdsZV9mb3Jt
YXRfZW51bT1lbnVtX2RhdGEpCit3aXRoIG9wZW4oJ0Zvcm1hdF9JRF9hdXRvZ2VuLmlubCcsICd3
dCcpIGFzIG91dF9maWxlOgorICAgIG91dF9maWxlLndyaXRlKG91dHB1dF9oKQorICAgIG91dF9m
aWxlLmNsb3NlKCkKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nZW5fbG9hZF9mdW5jdGlvbnNfdGFibGUucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dlbl9sb2FkX2Z1bmN0aW9u
c190YWJsZS5weQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2VuX2xvYWRfZnVuY3Rpb25zX3RhYmxlLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTkxIEBACisjIS91c3IvYmluL3B5dGhvbgorIyBDb3B5cmlnaHQgMjAx
NSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisjCisjIGdlbl9sb2FkX2Z1
bmN0aW9uc190YWJsZS5weToKKyMgIENvZGUgZ2VuZXJhdGlvbiBmb3IgdGhlIGxvYWQgZnVuY3Rp
b24gdGFibGVzIHVzZWQgZm9yIHRleHR1cmUgZm9ybWF0cworIworCitpbXBvcnQganNvbiwgc3lz
Citmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRlCisKK3N5cy5wYXRoLmFwcGVuZCgnLi4vLi4nKQor
aW1wb3J0IGFuZ2xlX2Zvcm1hdAorCit0ZW1wbGF0ZSA9ICIiIi8vIEdFTkVSQVRFRCBGSUxFIC0g
RE8gTk9UIEVESVQuCisvLyBHZW5lcmF0ZWQgYnkgZ2VuX2xvYWRfZnVuY3Rpb25zX3RhYmxlLnB5
IHVzaW5nIGRhdGEgZnJvbSBsb2FkX2Z1bmN0aW9uc19kYXRhLmpzb24KKy8vCisvLyBDb3B5cmln
aHQge2NvcHlyaWdodF95ZWFyfSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisvLyBsb2FkX2Z1bmN0aW9uc190YWJsZToKKy8vICAgQ29udGFpbnMgdGhlIEdldExv
YWRGdW5jdGlvbnNNYXAgZm9yIHRleHR1cmVfZm9ybWF0X3V0aWwuaAorLy8KKworI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2xvYWRfZnVuY3Rpb25zX3RhYmxlLmgiCisKKyNpbmNsdWRlICJp
bWFnZV91dGlsL2NvcHlpbWFnZS5oIgorI2luY2x1ZGUgImltYWdlX3V0aWwvZ2VuZXJhdGVtaXAu
aCIKKyNpbmNsdWRlICJpbWFnZV91dGlsL2xvYWRpbWFnZS5oIgorCit1c2luZyBuYW1lc3BhY2Ug
cng7CisKK25hbWVzcGFjZSBhbmdsZQore3sKKworbmFtZXNwYWNlCit7eworCisvLyBFUzMgaW1h
Z2UgbG9hZGluZyBmdW5jdGlvbnMgdmFyeSBiYXNlZCBvbjoKKy8vICAgIC0gdGhlIEdMIGludGVy
bmFsIGZvcm1hdCAoc3VwcGxpZWQgdG8gZ2xUZXgqSW1hZ2UqRCkKKy8vICAgIC0gdGhlIEdMIGRh
dGEgdHlwZSBnaXZlbiAoc3VwcGxpZWQgdG8gZ2xUZXgqSW1hZ2UqRCkKKy8vICAgIC0gdGhlIHRh
cmdldCBEWEdJX0ZPUk1BVCB0aGF0IHRoZSBpbWFnZSB3aWxsIGJlIGxvYWRlZCBpbnRvICh3aGlj
aCBpcyBjaG9zZW4gYmFzZWQgb24gdGhlIEQzRAorLy8gICAgZGV2aWNlJ3MgY2FwYWJpbGl0aWVz
KQorLy8gVGhpcyBtYXAgdHlwZSBkZXRlcm1pbmVzIHdoaWNoIGxvYWRpbmcgZnVuY3Rpb24gdG8g
dXNlLCBiYXNlZCBvbiB0aGVzZSB0aHJlZSBwYXJhbWV0ZXJzLgorLy8gU291cmNlIGZvcm1hdHMg
YW5kIHR5cGVzIGFyZSB0YWtlbiBmcm9tIFRhYmxlcyAzLjIgYW5kIDMuMyBvZiB0aGUgRVMgMyBz
cGVjLgordm9pZCBVbmltcGxlbWVudGVkTG9hZEZ1bmN0aW9uKHNpemVfdCB3aWR0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0
cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1
dERlcHRoUGl0Y2gpCit7eworICAgIFVOSU1QTEVNRU5URUQoKTsKK319CisKK3ZvaWQgVW5yZWFj
aGFibGVMb2FkRnVuY3Rpb24oc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
ZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQore3sKKyAgICBVTlJFQUNIQUJMRSgp
OworfX0KKwore2xvYWRfZnVuY3Rpb25zX2RhdGF9fX0gIC8vIG5hbWVzcGFjZQorCitMb2FkRnVu
Y3Rpb25NYXAgR2V0TG9hZEZ1bmN0aW9uc01hcChHTGVudW0ge2ludGVybmFsX2Zvcm1hdH0sIEZv
cm1hdDo6SUQge2FuZ2xlX2Zvcm1hdH0pCit7eworICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAg
ICBzd2l0Y2ggKHtpbnRlcm5hbF9mb3JtYXR9KQorICAgIHt7Cit7c3dpdGNoX2RhdGF9CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgIHt7CisgICAgICAgICAgICBzdGF0aWMgTG9hZEZ1bmN0aW9u
TWFwIGVtcHR5TG9hZEZ1bmN0aW9uc01hcDsKKyAgICAgICAgICAgIHJldHVybiBlbXB0eUxvYWRG
dW5jdGlvbnNNYXA7CisgICAgICAgIH19CisgICAgfX0KKyAgICAvLyBjbGFuZy1mb3JtYXQgb24K
KworfX0gIC8vIEdldExvYWRGdW5jdGlvbnNNYXAKKworfX0gIC8vIG5hbWVzcGFjZSBhbmdsZQor
IiIiCisKK2ludGVybmFsX2Zvcm1hdF9wYXJhbSA9ICdpbnRlcm5hbEZvcm1hdCcKK2FuZ2xlX2Zv
cm1hdF9wYXJhbSA9ICdhbmdsZUZvcm1hdCcKK2FuZ2xlX2Zvcm1hdF91bmtub3duID0gJ05PTkUn
CisKK2RlZiBsb2FkX2Z1bmN0aW9uc19uYW1lKGludGVybmFsX2Zvcm1hdCwgYW5nbGVfZm9ybWF0
KToKKyAgICByZXR1cm4gaW50ZXJuYWxfZm9ybWF0WzM6XSArICJfdG9fIiArIGFuZ2xlX2Zvcm1h
dAorCitkZWYgdW5rbm93bl9mdW5jX25hbWUoaW50ZXJuYWxfZm9ybWF0KToKKyAgICByZXR1cm4g
bG9hZF9mdW5jdGlvbnNfbmFtZShpbnRlcm5hbF9mb3JtYXQsICJkZWZhdWx0IikKKworZGVmIGdl
dF9sb2FkX2Z1bmMoZnVuY19uYW1lLCB0eXBlX2Z1bmN0aW9ucyk6CisgICAgc25pcHBldCA9ICJM
b2FkSW1hZ2VGdW5jdGlvbkluZm8gIiArIGZ1bmNfbmFtZSArICIoR0xlbnVtIHR5cGUpXG4iCisg
ICAgc25pcHBldCArPSAie1xuIgorICAgIHNuaXBwZXQgKz0gIiAgICBzd2l0Y2ggKHR5cGUpXG4i
CisgICAgc25pcHBldCArPSAiICAgIHtcbiIKKyAgICBmb3IgZ2xfdHlwZSwgbG9hZF9mdW5jdGlv
biBpbiBzb3J0ZWQodHlwZV9mdW5jdGlvbnMuaXRlcml0ZW1zKCkpOgorICAgICAgICBzbmlwcGV0
ICs9ICIgICAgICAgIGNhc2UgIiArIGdsX3R5cGUgKyAiOlxuIgorICAgICAgICByZXF1aXJlc0Nv
bnZlcnNpb24gPSBzdHIoJ0xvYWRUb05hdGl2ZTwnIG5vdCBpbiBsb2FkX2Z1bmN0aW9uKS5sb3dl
cigpCisgICAgICAgIHNuaXBwZXQgKz0gIiAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8oIiArIGxvYWRfZnVuY3Rpb24gKyAiLCAiICsgcmVxdWlyZXNDb252ZXJzaW9uICsg
Iik7XG4iCisgICAgc25pcHBldCArPSAiICAgICAgICBkZWZhdWx0OlxuIgorICAgIHNuaXBwZXQg
Kz0gIiAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7XG4iCisgICAgc25pcHBldCArPSAiICAgICAg
ICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlv
biwgdHJ1ZSk7XG4iCisgICAgc25pcHBldCArPSAiICAgIH1cbiIKKyAgICBzbmlwcGV0ICs9ICJ9
XG4iCisgICAgc25pcHBldCArPSAiXG4iCisKKyAgICByZXR1cm4gc25pcHBldAorCitkZWYgZ2V0
X3Vua25vd25fbG9hZF9mdW5jKGFuZ2xlX3RvX3R5cGVfbWFwLCBpbnRlcm5hbF9mb3JtYXQpOgor
ICAgIGFzc2VydCBhbmdsZV9mb3JtYXRfdW5rbm93biBpbiBhbmdsZV90b190eXBlX21hcAorICAg
IHJldHVybiBnZXRfbG9hZF9mdW5jKHVua25vd25fZnVuY19uYW1lKGludGVybmFsX2Zvcm1hdCks
IGFuZ2xlX3RvX3R5cGVfbWFwW2FuZ2xlX2Zvcm1hdF91bmtub3duXSkKKworZGVmIHBhcnNlX2pz
b24oanNvbl9kYXRhKToKKyAgICB0YWJsZV9kYXRhID0gJycKKyAgICBsb2FkX2Z1bmN0aW9uc19k
YXRhID0gJycKKyAgICBmb3IgaW50ZXJuYWxfZm9ybWF0LCBhbmdsZV90b190eXBlX21hcCBpbiBz
b3J0ZWQoanNvbl9kYXRhLml0ZXJpdGVtcygpKToKKworICAgICAgICBzID0gJyAgICAgICAgJwor
CisgICAgICAgIHRhYmxlX2RhdGEgKz0gcyArICdjYXNlICcgKyBpbnRlcm5hbF9mb3JtYXQgKyAn
OlxuJworCisgICAgICAgIGRvX3N3aXRjaCA9IGxlbihhbmdsZV90b190eXBlX21hcCkgPiAxIG9y
IGFuZ2xlX3RvX3R5cGVfbWFwLmtleXMoKVswXSAhPSBhbmdsZV9mb3JtYXRfdW5rbm93bgorCisg
ICAgICAgIGlmIGRvX3N3aXRjaDoKKyAgICAgICAgICAgIHRhYmxlX2RhdGEgKz0gcyArICd7XG4n
CisgICAgICAgICAgICBzICs9ICcgICAgJworICAgICAgICAgICAgdGFibGVfZGF0YSArPSBzICsg
J3N3aXRjaCAoJyArIGFuZ2xlX2Zvcm1hdF9wYXJhbSArICcpXG4nCisgICAgICAgICAgICB0YWJs
ZV9kYXRhICs9IHMgKyAne1xuJworICAgICAgICAgICAgcyArPSAnICAgICcKKworICAgICAgICBm
b3IgYW5nbGVfZm9ybWF0LCB0eXBlX2Z1bmN0aW9ucyBpbiBzb3J0ZWQoYW5nbGVfdG9fdHlwZV9t
YXAuaXRlcml0ZW1zKCkpOgorCisgICAgICAgICAgICBpZiBhbmdsZV9mb3JtYXQgPT0gYW5nbGVf
Zm9ybWF0X3Vua25vd246CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAg
ZnVuY19uYW1lID0gbG9hZF9mdW5jdGlvbnNfbmFtZShpbnRlcm5hbF9mb3JtYXQsIGFuZ2xlX2Zv
cm1hdCkKKworICAgICAgICAgICAgIyBNYWluIGNhc2Ugc3RhdGVtZW50cworICAgICAgICAgICAg
dGFibGVfZGF0YSArPSBzICsgJ2Nhc2UgRm9ybWF0OjpJRDo6JyArIGFuZ2xlX2Zvcm1hdCArICc6
XG4nCisgICAgICAgICAgICB0YWJsZV9kYXRhICs9IHMgKyAnICAgIHJldHVybiAnICsgZnVuY19u
YW1lICsgJztcbicKKworICAgICAgICAgICAgaWYgYW5nbGVfZm9ybWF0X3Vua25vd24gaW4gYW5n
bGVfdG9fdHlwZV9tYXA6CisgICAgICAgICAgICAgICAgZm9yIGdsX3R5cGUsIGxvYWRfZnVuY3Rp
b24gaW4gYW5nbGVfdG9fdHlwZV9tYXBbYW5nbGVfZm9ybWF0X3Vua25vd25dLml0ZXJpdGVtcygp
OgorICAgICAgICAgICAgICAgICAgICBpZiBnbF90eXBlIG5vdCBpbiB0eXBlX2Z1bmN0aW9uczoK
KyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVfZnVuY3Rpb25zW2dsX3R5cGVdID0gbG9hZF9m
dW5jdGlvbgorCisgICAgICAgICAgICBsb2FkX2Z1bmN0aW9uc19kYXRhICs9IGdldF9sb2FkX2Z1
bmMoZnVuY19uYW1lLCB0eXBlX2Z1bmN0aW9ucykKKworICAgICAgICBpZiBkb19zd2l0Y2g6Cisg
ICAgICAgICAgICB0YWJsZV9kYXRhICs9IHMgKyAnZGVmYXVsdDpcbicKKworICAgICAgICBpZiBh
bmdsZV9mb3JtYXRfdW5rbm93biBpbiBhbmdsZV90b190eXBlX21hcDoKKyAgICAgICAgICAgIHRh
YmxlX2RhdGEgKz0gcyArICcgICAgcmV0dXJuICcgKyB1bmtub3duX2Z1bmNfbmFtZShpbnRlcm5h
bF9mb3JtYXQpICsgJztcbicKKyAgICAgICAgICAgIGxvYWRfZnVuY3Rpb25zX2RhdGEgKz0gZ2V0
X3Vua25vd25fbG9hZF9mdW5jKGFuZ2xlX3RvX3R5cGVfbWFwLCBpbnRlcm5hbF9mb3JtYXQpCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICB0YWJsZV9kYXRhICs9IHMgKyAnICAgIGJyZWFrO1xu
JworCisgICAgICAgIGlmIGRvX3N3aXRjaDoKKyAgICAgICAgICAgIHMgPSBzWzQ6XQorICAgICAg
ICAgICAgdGFibGVfZGF0YSArPSBzICsgJ31cbicKKyAgICAgICAgICAgIHMgPSBzWzQ6XQorICAg
ICAgICAgICAgdGFibGVfZGF0YSArPSBzICsgJ31cbicKKworICAgIHJldHVybiB0YWJsZV9kYXRh
LCBsb2FkX2Z1bmN0aW9uc19kYXRhCisKK2pzb25fZGF0YSA9IGFuZ2xlX2Zvcm1hdC5sb2FkX2pz
b24oJ2xvYWRfZnVuY3Rpb25zX2RhdGEuanNvbicpCisKK3N3aXRjaF9kYXRhLCBsb2FkX2Z1bmN0
aW9uc19kYXRhID0gcGFyc2VfanNvbihqc29uX2RhdGEpCitvdXRwdXQgPSB0ZW1wbGF0ZS5mb3Jt
YXQoaW50ZXJuYWxfZm9ybWF0ID0gaW50ZXJuYWxfZm9ybWF0X3BhcmFtLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIGFuZ2xlX2Zvcm1hdCA9IGFuZ2xlX2Zvcm1hdF9wYXJhbSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBzd2l0Y2hfZGF0YSA9IHN3aXRjaF9kYXRhLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIGxvYWRfZnVuY3Rpb25zX2RhdGEgPSBsb2FkX2Z1bmN0aW9uc19kYXRhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlyaWdodF95ZWFyID0gZGF0ZS50b2RheSgpLnll
YXIpCisKK3dpdGggb3BlbignbG9hZF9mdW5jdGlvbnNfdGFibGVfYXV0b2dlbi5jcHAnLCAnd3Qn
KSBhcyBvdXRfZmlsZToKKyAgICBvdXRfZmlsZS53cml0ZShvdXRwdXQpCisgICAgb3V0X2ZpbGUu
Y2xvc2UoKQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dlbmVyYXRlX25ld19yZW5kZXJlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2VuZXJhdGVfbmV3X3JlbmRlcmVyLnB5
CShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2VuZXJhdGVfbmV3X3JlbmRlcmVyLnB5CShub25leGlzdGVudCkKQEAgLTEs
MjU4ICswLDAgQEAKLSMhL3Vzci9iaW4vcHl0aG9uCi0jCi0jIENvcHlyaWdodCAoYykgMjAxNSBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCi0jIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0jCi0jIGdlbmVyYXRlX25ld19y
ZW5kZXJlci5weToKLSMgICBVdGlsaXR5IHNjcmlwdCB0byBnZW5lcmF0ZSBzdHVicyBmb3IgYSBu
ZXcgUmVuZGVyZXIgY2xhc3MuCi0jICAgVXNhZ2U6IGdlbmVyYXRlX25ld19yZW5kZXJlci5weSA8
cmVuZGVyZXIgbmFtZT4gPHJlbmRlcmVyIHN1ZmZpeD4KLSMgICAgIFJlbmRlcmVyIG5hbWUgaXMg
dGhlIGZvbGRlciBmb3IgdGhlIHJlbmRlcmVyIHN1YmRpcmVjdG9yeQotIyAgICAgUmVuZGVyZXIg
c3VmZml4IGlzIHRoZSBhYmJyZXZpYXRpb24gdG8gYXBwZW5kIGFmdGVyIHRoZSBjbGFzcyBuYW1l
cy4KLSMKLSMgVGhlIHNjcmlwdCBpcyBmYWlybHkgcm9idXN0IGJ1dCBtYXkgbm90IHdvcmsgZm9y
IGFsbCBuZXcgbWV0aG9kcyBvcgotIyBvdGhlciB1bmV4cGVjdGVkIGZlYXR1cmVzLiBJdCBleHBl
Y3RzIHRoYXQgYWJzdHJhY3QgbWV0aG9kcyBhcmUgYWxsCi0jIGdyb3VwZWQgYWZ0ZXIgdGhlIHB1
YmxpYyBkZXN0cnVjdG9yIG9yIGFmdGVyIHRoZSBwcml2YXRlCi0jIERJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTiBtYWNyby4KLQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgcmUKLWltcG9y
dCBzdHJpbmcKLQotaWYgbGVuKHN5cy5hcmd2KSA8IDM6Ci0gICAgcHJpbnQoJ1VzYWdlOiAnICsg
c3lzLmFyZ3ZbMF0gKyAnIDxyZW5kZXJlciBuYW1lPiA8cmVuZGVyZXIgc3VmZml4PicpCi0KLXJl
bmRlcmVyX25hbWUgPSBzeXMuYXJndlsxXQotcmVuZGVyZXJfc3VmZml4ID0gc3lzLmFyZ3ZbMl0K
LQotIyBlbnN1cmUgc3ViZGlyIGV4aXN0cwotaWYgbm90IG9zLnBhdGguaXNkaXIocmVuZGVyZXJf
bmFtZSk6Ci0gICAgb3MubWtkaXIocmVuZGVyZXJfbmFtZSkKLQotaW1wbF9jbGFzc2VzID0gWwot
ICAgICdCdWZmZXInLAotICAgICdDb21waWxlcicsCi0gICAgJ0Rpc3BsYXknLAotICAgICdGZW5j
ZU5WJywKLSAgICAnRmVuY2VTeW5jJywKLSAgICAnRnJhbWVidWZmZXInLAotICAgICdQcm9ncmFt
JywKLSAgICAnUXVlcnknLAotICAgICdSZW5kZXJidWZmZXInLAotICAgICdSZW5kZXJlcicsCi0g
ICAgJ1NoYWRlcicsCi0gICAgJ1N1cmZhY2UnLAotICAgICdUZXh0dXJlJywKLSAgICAnVHJhbnNm
b3JtRmVlZGJhY2snLAotICAgICdWZXJ0ZXhBcnJheScsCi1dCi0KLWhfZmlsZV90ZW1wbGF0ZSA9
ICIiIi8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KLS8vCi0KLS8vICRUeXBlZEltcGwuaDogRGVmaW5lcyB0aGUgY2xhc3MgaW50ZXJm
YWNlIGZvciAkVHlwZWRJbXBsLgotCi0jaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSXyR7UmVuZGVy
ZXJOYW1lQ2Fwc31fJHtUeXBlZEltcGxDYXBzfV9IXwotI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJF
Ul8ke1JlbmRlcmVyTmFtZUNhcHN9XyR7VHlwZWRJbXBsQ2Fwc31fSF8KLQotI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyLyRCYXNlSW1wbC5oIgotCi1uYW1lc3BhY2UgcngKLXsKLQotY2xhc3Mg
JFR5cGVkSW1wbCA6IHB1YmxpYyAkQmFzZUltcGwKLXsKLSAgcHVibGljOgotICAgICRUeXBlZElt
cGwoJENvbnN0cnVjdG9yUGFyYW1zKTsKLSAgICB+JFR5cGVkSW1wbCgpIG92ZXJyaWRlOwotJElt
cGxNZXRob2REZWNsYXJhdGlvbnMkUHJpdmF0ZUltcGxNZXRob2REZWNsYXJhdGlvbnN9OwotCi19
Ci0KLSNlbmRpZiAvLyBMSUJBTkdMRV9SRU5ERVJFUl8ke1JlbmRlcmVyTmFtZUNhcHN9XyR7VHlw
ZWRJbXBsQ2Fwc31fSF8KLSIiIgotCi1jcHBfZmlsZV90ZW1wbGF0ZSA9ICIiIi8vCi0vLyBDb3B5
cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0K
LS8vICRUeXBlZEltcGwuY3BwOiBJbXBsZW1lbnRzIHRoZSBjbGFzcyBtZXRob2RzIGZvciAkVHlw
ZWRJbXBsLgotCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvJFJlbmRlcmVyTmFtZS8kVHlw
ZWRJbXBsLmgiCi0KLSNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKLQotbmFtZXNwYWNlIHJ4Ci17
Ci0KLSRUeXBlZEltcGw6OiRUeXBlZEltcGwoJENvbnN0cnVjdG9yUGFyYW1zKQotICAgIDogJEJh
c2VJbXBsKCRCYXNlQ29udHJ1Y3RvckFyZ3MpCi17fQotCi0kVHlwZWRJbXBsOjp+JFR5cGVkSW1w
bCgpCi17fQotJEltcGxNZXRob2REZWZpbml0aW9ucwotfQotIiIiCi0KLWRlZiBnZW5lcmF0ZV9p
bXBsX2RlY2xhcmF0aW9uKGltcGxfc3R1Yik6Ci0gICAgIyBlbnN1cmUgdGhlIHdyYXBwZWQgbGlu
ZXMgYXJlIGFsaWduZWQgdmVydGljYWxseQotICAgIHRlbXAgPSByZS5zdWIocidcbiAgICAgICAg
JywgJ1xuJywgaW1wbF9zdHViKQotICAgIHJldHVybiB0ZW1wICsgJyBvdmVycmlkZTtcbicKLQot
ZGVmIGdlbmVyYXRlX2ltcGxfZGVmaW5pdGlvbihpbXBsX3N0dWIsIHR5cGVkX2ltcGwpOgotICAg
IGZ1bmN0aW9uX3NpZ25hdHVyZSA9IGltcGxfc3R1Yi5zdHJpcCgpCi0KLSAgICAjIHN0cmlwIGNv
bW1lbnRzCi0gICAgZnVuY3Rpb25fc2lnbmF0dXJlID0gcmUuc3ViKHInXC9cL1teXG5dKlxuJywg
JycsIGZ1bmN0aW9uX3NpZ25hdHVyZSkuc3RyaXAoKQotCi0gICAgcHJvZyA9IHJlLmNvbXBpbGUo
cideKC4rWyBcKlwmXSkoW14gXChcKlwmXStcKCknKQotICAgIHJldHVybl92YWx1ZSA9IHByb2cu
bWF0Y2goZnVuY3Rpb25fc2lnbmF0dXJlKS5ncm91cCgxKQotCi0gICAgIyBlbnN1cmUgdGhlIHdy
YXBwZWQgbGluZXMgYXJlIGFsaWduZWQgdmVydGljYWxseQotICAgIHNwYWNlcyA9ICcgJyAqIGxl
bih0eXBlZF9pbXBsKQotICAgIGZ1bmN0aW9uX3NpZ25hdHVyZSA9IHJlLnN1YihyJ1xuICAgICAg
ICAgICcsICdcbicgKyBzcGFjZXMsIGZ1bmN0aW9uX3NpZ25hdHVyZSkKLQotICAgICMgYWRkIGNs
YXNzIHNjb3BpbmcKLSAgICBmdW5jdGlvbl9zaWduYXR1cmUgPSBwcm9nLnN1YihyJ1wxJyArIHR5
cGVkX2ltcGwgKyByJzo6XDInLCBmdW5jdGlvbl9zaWduYXR1cmUpCi0gICAgZnVuY3Rpb25fc2ln
bmF0dXJlICs9ICdcbicKLQotICAgIHJldHVybl9zdGF0ZW1lbnQgPSAnJwotICAgIHJldHVybl90
eXBlID0gcmV0dXJuX3ZhbHVlLnN0cmlwKCkKLQotICAgIGlmIHJldHVybl90eXBlICE9ICd2b2lk
JzoKLSAgICAgICAgIyBzcGVjaWFsaXplZCByZXR1cm4gdmFsdWVzIGZvciBFcnJvcnMsIHBvaW50
ZXJzLCBldGMKLSAgICAgICAgaWYgcmV0dXJuX3R5cGUgPT0gJ2dsOjpFcnJvcic6Ci0gICAgICAg
ICAgICByZXR1cm5fc3RhdGVtZW50ID0gJyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTtcbicKLSAgICAgICAgZWxpZiByZXR1cm5fdHlwZSA9PSAnZWdsOjpFcnJvcic6
Ci0gICAgICAgICAgICByZXR1cm5fc3RhdGVtZW50ID0gJyAgICByZXR1cm4gZWdsOjpFcnJvcihF
R0xfQkFEX0FDQ0VTUyk7XG4nCi0gICAgICAgIGVsaWYgcmV0dXJuX3R5cGUgPT0gJ0xpbmtSZXN1
bHQnOgotICAgICAgICAgICAgcmV0dXJuX3N0YXRlbWVudCA9ICcgICAgcmV0dXJuIExpbmtSZXN1
bHQoZmFsc2UsIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpO1xuJwotICAgICAgICBl
bGlmIHJlLnNlYXJjaChyJ1tcKlwmXSQnLCByZXR1cm5fdHlwZSk6Ci0gICAgICAgICAgICByZXR1
cm5fc3RhdGVtZW50ID0gJyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8JyArIHJldHVybl90eXBlICsg
Jz4oMCk7XG4nCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm5fc3RhdGVtZW50ID0g
JyAgICByZXR1cm4gJyArIHJldHVybl90eXBlICsgJygpO1xuJwotCi0gICAgYm9keSA9ICd7XG4n
ICsgJyAgICBVTklNUExFTUVOVEVEKCk7XG4nICsgcmV0dXJuX3N0YXRlbWVudCArJ31cbicKLQot
ICAgIHJldHVybiAnXG4nICsgZnVuY3Rpb25fc2lnbmF0dXJlICsgYm9keQotCi1kZWYgZ2V0X2Nv
bnN0cnVjdG9yX2FyZ3MoY29uc3RydWN0b3IpOgotICAgIHBhcmFtcyA9IHJlLnNlYXJjaChyJ1wo
KC4qKVwpJywgY29uc3RydWN0b3IpLmdyb3VwKDEpCi0gICAgYXJncyA9ICcsICcuam9pbihyZS5m
aW5kYWxsKHInW15cd10/KFx3KykoPzpcLHwkKScsIHBhcmFtcykpCi0gICAgcmV0dXJuIHBhcmFt
cywgYXJncwotCi1kZWYgcGFyc2VfaW1wbF9oZWFkZXIoYmFzZV9pbXBsKToKLSAgICBpbXBsX2hf
ZmlsZV9wYXRoID0gYmFzZV9pbXBsICsgJy5oJwotICAgIGltcGxfaF9maWxlID0gb3BlbihpbXBs
X2hfZmlsZV9wYXRoLCAncicpCi0KLSAgICAjIGV4dHJhY3QgaW1wbCBzdHVicwotICAgIGNvcHkg
PSBGYWxzZQotICAgIGNvcHlfcHJpdmF0ZSA9IEZhbHNlCi0gICAgaW1wbF9zdHVicyA9ICcnCi0g
ICAgcHJpdmF0ZV9pbXBsX3N0dWJzID0gJycKLSAgICBjb25zdHJ1Y3RvciA9IGJhc2VfaW1wbCAr
ICcoKSB7fScKLSAgICBmb3IgbGluZSBpbiBpbXBsX2hfZmlsZToKLSAgICAgICAgY2xlYW5fbGlu
ZSA9IGxpbmUuc3RyaXAoKQotCi0gICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKHInXig/OmV4cGxp
Y2l0ICk/KCcgKyBiYXNlX2ltcGwgKyByJ1woW15cKV0qXCkpJywgY2xlYW5fbGluZSk7Ci0gICAg
ICAgIGlmIG1hdGNoOgotICAgICAgICAgICAgY29uc3RydWN0b3IgPSBtYXRjaC5ncm91cCgxKQot
Ci0gICAgICAgICMgYmVnaW4gY2FwdHVyZSB3aGVuIHJlYWRpbmcgdGhlIGRlc3RydWN0b3IuCi0g
ICAgICAgICMgYmVnaW4gY2FwdHVyZSBhbHNvIGluIHRoZSBwcml2YXRlIHNjb3BlIChhIGZldyBz
cGVjaWFsIGNhc2VzKQotICAgICAgICAjIGVuZCBjYXB0dXJlIHdoZW4gd2UgcmVhY2ggYSBub24t
dmlydHVhbCBmdW5jdGlvbiwgb3IgZGlmZmVyZW50IHNjb3BlLgotICAgICAgICBpZiAnficgKyBi
YXNlX2ltcGwgaW4gY2xlYW5fbGluZToKLSAgICAgICAgICAgIGNvcHkgPSBUcnVlCi0gICAgICAg
ICAgICBjb3B5X3ByaXZhdGUgPSBGYWxzZQotICAgICAgICBlbGlmICdwcml2YXRlOicgaW4gY2xl
YW5fbGluZToKLSAgICAgICAgICAgIGNvcHkgPSBGYWxzZQotICAgICAgICAgICAgY29weV9wcml2
YXRlID0gVHJ1ZQotICAgICAgICBlbGlmICc7JyBpbiBjbGVhbl9saW5lIGFuZCAnID0gMCcgbm90
IGluIGNsZWFuX2xpbmU6Ci0gICAgICAgICAgICBjb3B5ID0gRmFsc2UKLSAgICAgICAgICAgIGNv
cHlfcHJpdmF0ZSA9IEZhbHNlCi0gICAgICAgIGVsaWYgJ30nIGluIGNsZWFuX2xpbmUgb3IgJ3By
b3RlY3RlZDonIGluIGNsZWFuX2xpbmUgb3IgJ3ByaXZhdGU6JyBpbiBjbGVhbl9saW5lOgotICAg
ICAgICAgICAgY29weSA9IEZhbHNlCi0gICAgICAgICAgICBjb3B5X3ByaXZhdGUgPSBGYWxzZQot
ICAgICAgICBlbGlmIGNvcHk6Ci0gICAgICAgICAgICBpbXBsX3N0dWJzICs9IGxpbmUKLSAgICAg
ICAgZWxpZiBjb3B5X3ByaXZhdGU6Ci0gICAgICAgICAgICBwcml2YXRlX2ltcGxfc3R1YnMgKz0g
bGluZQotCi0gICAgaW1wbF9oX2ZpbGUuY2xvc2UoKQotCi0gICAgcmV0dXJuIGltcGxfc3R1YnMs
IHByaXZhdGVfaW1wbF9zdHVicywgY29uc3RydWN0b3IKLQotZm9yIGltcGxfY2xhc3MgaW4gaW1w
bF9jbGFzc2VzOgotCi0gICAgYmFzZV9pbXBsID0gaW1wbF9jbGFzcwotCi0gICAgIyBzcGVjaWFs
IGNhc2UgZm9yIFJlbmRlcmVyCi0gICAgaWYgaW1wbF9jbGFzcyAhPSAnUmVuZGVyZXInOgotICAg
ICAgICBiYXNlX2ltcGwgKz0gJ0ltcGwnCi0KLSAgICB0eXBlZF9pbXBsID0gaW1wbF9jbGFzcyAr
IHJlbmRlcmVyX3N1ZmZpeAotCi0gICAgaF9maWxlX3BhdGggPSBvcy5wYXRoLmpvaW4ocmVuZGVy
ZXJfbmFtZSwgdHlwZWRfaW1wbCArICcuaCcpCi0gICAgY3BwX2ZpbGVfcGF0aCA9IG9zLnBhdGgu
am9pbihyZW5kZXJlcl9uYW1lLCB0eXBlZF9pbXBsICsgJy5jcHAnKQotCi0gICAgaF9maWxlID0g
b3BlbihoX2ZpbGVfcGF0aCwgJ3cnKQotICAgIGNwcF9maWxlID0gb3BlbihjcHBfZmlsZV9wYXRo
LCAndycpCi0KLSAgICAjIGV4dHJhY3QgaW1wbCBzdHVicwotICAgIGltcGxfc3R1YnMsIHByaXZh
dGVfaW1wbF9zdHVicywgY29uc3RydWN0b3IgPSBwYXJzZV9pbXBsX2hlYWRlcihiYXNlX2ltcGwp
Ci0KLSAgICAjIG1vcmUgc3BlY2lhbCBjYXNlIGZvciBSZW5kZXJlcgotICAgICMgVE9ETyhqbWFk
aWxsKTogZ2VuZXJhbCBjYXNlIGZvciBiYXNlIGNsYXNzZXMKLSAgICBpZiBpbXBsX2NsYXNzID09
ICdSZW5kZXJlcic6Ci0gICAgICAgIGJhc2VfaW1wbF9zdHVicywgYmFzZV9wcml2YXRlX2ltcGxf
c3R1YnMsIGJhc2VfY29uc3RydWN0b3IgPSBwYXJzZV9pbXBsX2hlYWRlcignSW1wbEZhY3Rvcnkn
KQotICAgICAgICBpbXBsX3N0dWJzICs9IGJhc2VfaW1wbF9zdHVicwotICAgICAgICBwcml2YXRl
X2ltcGxfc3R1YnMgKz0gYmFzZV9wcml2YXRlX2ltcGxfc3R1YnMKLQotICAgIGltcGxfbWV0aG9k
X2RlY2xhcmF0aW9ucyA9ICcnCi0gICAgaW1wbF9tZXRob2RfZGVmaW5pdGlvbnMgPSAnJwotICAg
IHByaXZhdGVfaW1wbF9tZXRob2RfZGVjbGFyYXRpb25zID0gJycKLQotICAgIGZvciBpbXBsX3N0
dWIgaW4gaW1wbF9zdHVicy5zcGxpdCgnID0gMDtcbicpOgotICAgICAgICAjIHVzZSAndmlydHVh
bCcgdG8gaWRlbnRpZnkgdGhlIHN0cmluZ3Mgd2l0aCBmdW5jdGlvbnMKLSAgICAgICAgaWYgJ3Zp
cnR1YWwnIGluIGltcGxfc3R1YjoKLSAgICAgICAgICAgIHRlbXAgPSByZS5zdWIocid2aXJ0dWFs
ICcsICcnLCBpbXBsX3N0dWIpCi0gICAgICAgICAgICBpbXBsX21ldGhvZF9kZWNsYXJhdGlvbnMg
Kz0gZ2VuZXJhdGVfaW1wbF9kZWNsYXJhdGlvbih0ZW1wKQotICAgICAgICAgICAgaW1wbF9tZXRo
b2RfZGVmaW5pdGlvbnMgKz0gZ2VuZXJhdGVfaW1wbF9kZWZpbml0aW9uKHRlbXAsIHR5cGVkX2lt
cGwpCi0KLSAgICBmb3IgaW1wbF9zdHViIGluIHByaXZhdGVfaW1wbF9zdHVicy5zcGxpdCgnID0g
MDtcbicpOgotICAgICAgICAjIHVzZSAndmlydHVhbCcgdG8gaWRlbnRpZnkgdGhlIHN0cmluZ3Mg
d2l0aCBmdW5jdGlvbnMKLSAgICAgICAgaWYgJ3ZpcnR1YWwnIGluIGltcGxfc3R1YjoKLSAgICAg
ICAgICAgIHRlbXAgPSByZS5zdWIocid2aXJ0dWFsICcsICcnLCBpbXBsX3N0dWIpCi0gICAgICAg
ICAgICBwcml2YXRlX2ltcGxfbWV0aG9kX2RlY2xhcmF0aW9ucyArPSBnZW5lcmF0ZV9pbXBsX2Rl
Y2xhcmF0aW9uKHRlbXApCi0gICAgICAgICAgICBpbXBsX21ldGhvZF9kZWZpbml0aW9ucyArPSBn
ZW5lcmF0ZV9pbXBsX2RlZmluaXRpb24odGVtcCwgdHlwZWRfaW1wbCkKLQotICAgIGNvbnN0cnVj
dG9yX3BhcmFtcywgYmFzZV9jb25zdHJ1Y3Rvcl9hcmdzID0gZ2V0X2NvbnN0cnVjdG9yX2FyZ3Mo
Y29uc3RydWN0b3IpCi0KLSAgICBpZiBwcml2YXRlX2ltcGxfbWV0aG9kX2RlY2xhcmF0aW9uczoK
LSAgICAgICAgcHJpdmF0ZV9pbXBsX21ldGhvZF9kZWNsYXJhdGlvbnMgPSAiXG4gIHByaXZhdGU6
XG4iICsgcHJpdmF0ZV9pbXBsX21ldGhvZF9kZWNsYXJhdGlvbnMKLQotICAgIHN1YnN0aXR1dGlv
bnMgPSB7Ci0gICAgICAgICdCYXNlSW1wbCc6IGJhc2VfaW1wbCwKLSAgICAgICAgJ1R5cGVkSW1w
bCc6IHR5cGVkX2ltcGwsCi0gICAgICAgICdUeXBlZEltcGxDYXBzJzogdHlwZWRfaW1wbC51cHBl
cigpLAotICAgICAgICAnUmVuZGVyZXJOYW1lJzogcmVuZGVyZXJfbmFtZSwKLSAgICAgICAgJ1Jl
bmRlcmVyTmFtZUNhcHMnOiByZW5kZXJlcl9uYW1lLnVwcGVyKCksCi0gICAgICAgICdJbXBsTWV0
aG9kRGVjbGFyYXRpb25zJzogaW1wbF9tZXRob2RfZGVjbGFyYXRpb25zLAotICAgICAgICAnSW1w
bE1ldGhvZERlZmluaXRpb25zJzogaW1wbF9tZXRob2RfZGVmaW5pdGlvbnMsCi0gICAgICAgICdD
b25zdHJ1Y3RvclBhcmFtcyc6IGNvbnN0cnVjdG9yX3BhcmFtcywKLSAgICAgICAgJ0Jhc2VDb250
cnVjdG9yQXJncyc6IGJhc2VfY29uc3RydWN0b3JfYXJncywKLSAgICAgICAgJ1ByaXZhdGVJbXBs
TWV0aG9kRGVjbGFyYXRpb25zJzogcHJpdmF0ZV9pbXBsX21ldGhvZF9kZWNsYXJhdGlvbnMsCi0g
ICAgfQotCi0gICAgaF9maWxlLndyaXRlKHN0cmluZy5UZW1wbGF0ZShoX2ZpbGVfdGVtcGxhdGUp
LnN1YnN0aXR1dGUoc3Vic3RpdHV0aW9ucykpCi0gICAgY3BwX2ZpbGUud3JpdGUoc3RyaW5nLlRl
bXBsYXRlKGNwcF9maWxlX3RlbXBsYXRlKS5zdWJzdGl0dXRlKHN1YnN0aXR1dGlvbnMpKQotCi0g
ICAgaF9maWxlLmNsb3NlKCkKLSAgICBjcHBfZmlsZS5jbG9zZSgpCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbG9hZF9mdW5jdGlvbnNfZGF0YS5q
c29uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9sb2FkX2Z1bmN0aW9uc19kYXRhLmpzb24JKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2xvYWRfZnVuY3Rpb25zX2Rh
dGEuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2MiBAQAoreworICAiR0xfUkc4X1NO
T1JNIjogeworICAgICJSOEc4X1NOT1JNIjogeworICAgICAgIkdMX0JZVEUiOiAiTG9hZFRvTmF0
aXZlPEdMYnl0ZSwgMj4iCisgICAgfQorICB9LAorICAiR0xfU1JHQjgiOiB7CisgICAgIlI4RzhC
OEE4X1VOT1JNX1NSR0IiOiB7CisgICAgICAiR0xfVU5TSUdORURfQllURSI6ICJMb2FkVG9OYXRp
dmUzVG80PEdMdWJ5dGUsIDB4RkY+IgorICAgIH0KKyAgfSwKKyAgIkdMX1JHQkE4SSI6IHsKKyAg
ICAiUjhHOEI4QThfU0lOVCI6IHsKKyAgICAgICJHTF9CWVRFIjogIkxvYWRUb05hdGl2ZTxHTGJ5
dGUsIDQ+IgorICAgIH0KKyAgfSwKKyAgIkdMX1I4X1NOT1JNIjogeworICAgICJSOF9TTk9STSI6
IHsKKyAgICAgICJHTF9CWVRFIjogIkxvYWRUb05hdGl2ZTxHTGJ5dGUsIDE+IgorICAgIH0KKyAg
fSwKKyAgIkdMX1JHQkE4X1NOT1JNIjogeworICAgICJSOEc4QjhBOF9TTk9STSI6IHsKKyAgICAg
ICJHTF9CWVRFIjogIkxvYWRUb05hdGl2ZTxHTGJ5dGUsIDQ+IgorICAgIH0KKyAgfSwKKyAgIkdM
X1IxNkkiOiB7CisgICAgIlIxNl9TSU5UIjogeworICAgICAgIkdMX1NIT1JUIjogIkxvYWRUb05h
dGl2ZTxHTHNob3J0LCAxPiIKKyAgICB9CisgIH0sCisgICJHTF9DT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9FVEMyX0VBQyI6IHsKKyAgICAiUjhHOEI4QThfVU5PUk1fU1JHQiI6IHsKKyAgICAgICJH
TF9VTlNJR05FRF9CWVRFIjogIkxvYWRFVEMyU1JHQkE4VG9TUkdCQTgiCisgICAgfQorICB9LAor
ICAiR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiI6IHsKKyAgICAi
UjhHOEI4QThfVU5PUk0iOiB7CisgICAgICAiR0xfVU5TSUdORURfQllURSI6ICJMb2FkRVRDMlJH
QjhBMVRvUkdCQTgiCisgICAgfQorICB9LAorICAiR0xfUkdCMzJVSSI6IHsKKyAgICAiUjMyRzMy
QjMyQTMyX1VJTlQiOiB7CisgICAgICAiR0xfVU5TSUdORURfSU5UIjogIkxvYWRUb05hdGl2ZTNU
bzQ8R0x1aW50LCAweDAwMDAwMDAxPiIKKyAgICB9CisgIH0sCisgICJHTF9BTFBIQTMyRl9FWFQi
OiB7CisgICAgIk5PTkUiOiB7CisgICAgICAiR0xfRkxPQVQiOiAiTG9hZEEzMkZUb1JHQkEzMkYi
CisgICAgfQorICB9LAorICAiR0xfUjE2VUkiOiB7CisgICAgIlIxNl9VSU5UIjogeworICAgICAg
IkdMX1VOU0lHTkVEX1NIT1JUIjogIkxvYWRUb05hdGl2ZTxHTHVzaG9ydCwgMT4iCisgICAgfQor
ICB9LAorICAiR0xfUkdCOV9FNSI6IHsKKyAgICAiUjlHOUI5RTVfU0hBUkVERVhQIjogeworICAg
ICAgIkdMX0hBTEZfRkxPQVQiOiAiTG9hZFJHQjE2RlRvUkdCOUU1IiwKKyAgICAgICJHTF9VTlNJ
R05FRF9JTlRfNV85XzlfOV9SRVYiOiAiTG9hZFRvTmF0aXZlPEdMdWludCwgMT4iLAorICAgICAg
IkdMX0ZMT0FUIjogIkxvYWRSR0IzMkZUb1JHQjlFNSIsCisgICAgICAiR0xfSEFMRl9GTE9BVF9P
RVMiOiAiTG9hZFJHQjE2RlRvUkdCOUU1IgorICAgIH0KKyAgfSwKKyAgIkdMX0NPTVBSRVNTRURf
UjExX0VBQyI6IHsKKyAgICAiUjhfVU5PUk0iOiB7CisgICAgICAiR0xfVU5TSUdORURfQllURSI6
ICJMb2FkRUFDUjExVG9SOCIKKyAgICB9CisgIH0sCisgICJHTF9SR0JBMzJVSSI6IHsKKyAgICAi
UjMyRzMyQjMyQTMyX1VJTlQiOiB7CisgICAgICAiR0xfVU5TSUdORURfSU5UIjogIkxvYWRUb05h
dGl2ZTxHTHVpbnQsIDQ+IgorICAgIH0KKyAgfSwKKyAgIkdMX1JHOFVJIjogeworICAgICJSOEc4
X1VJTlQiOiB7CisgICAgICAiR0xfVU5TSUdORURfQllURSI6ICJMb2FkVG9OYXRpdmU8R0x1Ynl0
ZSwgMj4iCisgICAgfQorICB9LAorICAiR0xfTFVNSU5BTkNFMzJGX0VYVCI6IHsKKyAgICAiTk9O
RSI6IHsKKyAgICAgICJHTF9GTE9BVCI6ICJMb2FkTDMyRlRvUkdCQTMyRiIKKyAgICB9CisgIH0s
CisgICJHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiI6IHsKKyAg
ICAiUjhHOEI4QThfVU5PUk1fU1JHQiI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkxv
YWRFVEMyU1JHQjhBMVRvUkdCQTgiCisgICAgfQorICB9LAorICAiR0xfUjE2RiI6IHsKKyAgICAi
UjE2X0ZMT0FUIjogeworICAgICAgIkdMX0hBTEZfRkxPQVQiOiAiTG9hZFRvTmF0aXZlPEdMaGFs
ZiwgMT4iLAorICAgICAgIkdMX0ZMT0FUIjogIkxvYWQzMkZUbzE2RjwxPiIsCisgICAgICAiR0xf
SEFMRl9GTE9BVF9PRVMiOiAiTG9hZFRvTmF0aXZlPEdMaGFsZiwgMT4iCisgICAgfQorICB9LAor
ICAiR0xfUkdCQThVSSI6IHsKKyAgICAiUjhHOEI4QThfVUlOVCI6IHsKKyAgICAgICJHTF9VTlNJ
R05FRF9CWVRFIjogIkxvYWRUb05hdGl2ZTxHTHVieXRlLCA0PiIKKyAgICB9CisgIH0sCisgICJH
TF9CR1JBNF9BTkdMRVgiOiB7CisgICAgIk5PTkUiOiB7CisgICAgICAiR0xfVU5TSUdORURfU0hP
UlRfNF80XzRfNF9SRVZfRVhUIjogIkxvYWRSR0JBNFRvUkdCQTgiLAorICAgICAgIkdMX1VOU0lH
TkVEX0JZVEUiOiAiTG9hZFRvTmF0aXZlPEdMdWJ5dGUsIDQ+IgorICAgIH0KKyAgfSwKKyAgIkdM
X1JHQkExNkYiOiB7CisgICAgIlIxNkcxNkIxNkExNl9GTE9BVCI6IHsKKyAgICAgICJHTF9IQUxG
X0ZMT0FUIjogIkxvYWRUb05hdGl2ZTxHTGhhbGYsIDQ+IiwKKyAgICAgICJHTF9GTE9BVCI6ICJM
b2FkMzJGVG8xNkY8ND4iLAorICAgICAgIkdMX0hBTEZfRkxPQVRfT0VTIjogIkxvYWRUb05hdGl2
ZTxHTGhhbGYsIDQ+IgorICAgIH0KKyAgfSwKKyAgIkdMX0xVTUlOQU5DRThfRVhUIjogeworICAg
ICJOT05FIjogeworICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiTG9hZEw4VG9SR0JBOCIKKyAg
ICB9CisgIH0sCisgICJHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFIjogeworICAg
ICJOT05FIjogeworICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiTG9hZENvbXByZXNzZWRUb05h
dGl2ZTw0LCA0LCAxNj4iCisgICAgfQorICB9LAorICAiR0xfUkdCIjogeworICAgICJOT05FIjog
eworICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24iLAor
ICAgICAgIkdMX1VOU0lHTkVEX1NIT1JUXzVfNl81IjogIlVucmVhY2hhYmxlTG9hZEZ1bmN0aW9u
IgorICAgIH0KKyAgfSwKKyAgIkdMX1JHQjVfQTEiOiB7CisgICAgIlI4RzhCOEE4X1VOT1JNIjog
eworICAgICAgIkdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViI6ICJMb2FkUkdCMTBBMlRv
UkdCQTgiLAorICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiTG9hZFRvTmF0aXZlPEdMdWJ5dGUs
IDQ+IiwKKyAgICAgICJHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xIjogIkxvYWRSR0I1QTFUb1JH
QkE4IgorICAgIH0sCisgICAgIkI1RzVSNUExX1VOT1JNIjogeworICAgICAgIkdMX1VOU0lHTkVE
X0lOVF8yXzEwXzEwXzEwX1JFViI6ICJMb2FkUkdCMTBBMlRvQkdSNUExIiwKKyAgICAgICJHTF9V
TlNJR05FRF9CWVRFIjogIkxvYWRSR0JBOFRvQkdSNUExIiwKKyAgICAgICJHTF9VTlNJR05FRF9T
SE9SVF81XzVfNV8xIjogIkxvYWRSR0I1QTFUb0ExUkdCNSIKKyAgICB9CisgIH0sCisgICJHTF9S
R0IxNlVJIjogeworICAgICJSMTZHMTZCMTZBMTZfVUlOVCI6IHsKKyAgICAgICJHTF9VTlNJR05F
RF9TSE9SVCI6ICJMb2FkVG9OYXRpdmUzVG80PEdMdXNob3J0LCAweDAwMDE+IgorICAgIH0KKyAg
fSwKKyAgIkdMX0JHUkFfRVhUIjogeworICAgICJOT05FIjogeworICAgICAgIkdMX1VOU0lHTkVE
X0JZVEUiOiAiVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24iCisgICAgfQorICB9LAorICAiR0xfQ09N
UFJFU1NFRF9SR0I4X0VUQzIiOiB7CisgICAgIlI4RzhCOEE4X1VOT1JNIjogeworICAgICAgIkdM
X1VOU0lHTkVEX0JZVEUiOiAiTG9hZEVUQzJSR0I4VG9SR0JBOCIKKyAgICB9CisgIH0sCisgICJH
TF9SR0JBMzJGIjogeworICAgICJSMzJHMzJCMzJBMzJfRkxPQVQiOiB7CisgICAgICAiR0xfRkxP
QVQiOiAiTG9hZFRvTmF0aXZlPEdMZmxvYXQsIDQ+IgorICAgIH0KKyAgfSwKKyAgIkdMX1JHQkEz
MkkiOiB7CisgICAgIlIzMkczMkIzMkEzMl9TSU5UIjogeworICAgICAgIkdMX0lOVCI6ICJMb2Fk
VG9OYXRpdmU8R0xpbnQsIDQ+IgorICAgIH0KKyAgfSwKKyAgIkdMX0xVTUlOQU5DRThfQUxQSEE4
X0VYVCI6IHsKKyAgICAiTk9ORSI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkxvYWRM
QThUb1JHQkE4IgorICAgIH0KKyAgfSwKKyAgIkdMX1JHOCI6IHsKKyAgICAiUjhHOF9VTk9STSI6
IHsKKyAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkxvYWRUb05hdGl2ZTxHTHVieXRlLCAyPiIK
KyAgICB9CisgIH0sCisgICJHTF9SR0IxMF9BMiI6IHsKKyAgICAiUjEwRzEwQjEwQTJfVU5PUk0i
OiB7CisgICAgICAiR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWIjogIkxvYWRUb05hdGl2
ZTxHTHVpbnQsIDE+IgorICAgIH0KKyAgfSwKKyAgIkdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFf
RUFDIjogeworICAgICJSOEc4X1NOT1JNIjogeworICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAi
TG9hZEVBQ1JHMTFTVG9SRzgiCisgICAgfQorICB9LAorICAiR0xfREVQVEhfQ09NUE9ORU5UMTYi
OiB7CisgICAgIkQxNl9VTk9STSI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9JTlQiOiAiTG9hZFIz
MlRvUjE2IiwKKyAgICAgICJHTF9VTlNJR05FRF9TSE9SVCI6ICJMb2FkVG9OYXRpdmU8R0x1c2hv
cnQsIDE+IgorICAgIH0KKyAgfSwKKyAgIkdMX1JHQjMySSI6IHsKKyAgICAiUjMyRzMyQjMyQTMy
X1NJTlQiOiB7CisgICAgICAiR0xfSU5UIjogIkxvYWRUb05hdGl2ZTNUbzQ8R0xpbnQsIDB4MDAw
MDAwMDE+IgorICAgIH0KKyAgfSwKKyAgIkdMX1I4IjogeworICAgICJSOF9VTk9STSI6IHsKKyAg
ICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkxvYWRUb05hdGl2ZTxHTHVieXRlLCAxPiIKKyAgICB9
CisgIH0sCisgICJHTF9SR0IzMkYiOiB7CisgICAgIlIzMkczMkIzMkEzMl9GTE9BVCI6IHsKKyAg
ICAgICJHTF9GTE9BVCI6ICJMb2FkVG9OYXRpdmUzVG80PEdMZmxvYXQsIGdsOjpGbG9hdDMyT25l
PiIKKyAgICB9CisgIH0sCisgICJHTF9SMTFGX0cxMUZfQjEwRiI6IHsKKyAgICAiUjExRzExQjEw
X0ZMT0FUIjogeworICAgICAgIkdMX1VOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYiOiAiTG9h
ZFRvTmF0aXZlPEdMdWludCwgMT4iLAorICAgICAgIkdMX0hBTEZfRkxPQVQiOiAiTG9hZFJHQjE2
RlRvUkcxMUIxMEYiLAorICAgICAgIkdMX0ZMT0FUIjogIkxvYWRSR0IzMkZUb1JHMTFCMTBGIiwK
KyAgICAgICJHTF9IQUxGX0ZMT0FUX09FUyI6ICJMb2FkUkdCMTZGVG9SRzExQjEwRiIKKyAgICB9
CisgIH0sCisgICJHTF9SR0I4IjogeworICAgICJSOEc4QjhBOF9VTk9STSI6IHsKKyAgICAgICJH
TF9VTlNJR05FRF9CWVRFIjogIkxvYWRUb05hdGl2ZTNUbzQ8R0x1Ynl0ZSwgMHhGRj4iCisgICAg
fQorICB9LAorICAiR0xfTFVNSU5BTkNFX0FMUEhBIjogeworICAgICJSMTZHMTZCMTZBMTZfRkxP
QVQiOiB7CisgICAgICAiR0xfSEFMRl9GTE9BVCI6ICJMb2FkTEExNkZUb1JHQkExNkYiLAorICAg
ICAgIkdMX0hBTEZfRkxPQVRfT0VTIjogIkxvYWRMQTE2RlRvUkdCQTE2RiIKKyAgICB9LAorICAg
ICJOT05FIjogeworICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiVW5yZWFjaGFibGVMb2FkRnVu
Y3Rpb24iCisgICAgfSwKKyAgICAiUjMyRzMyQjMyQTMyX0ZMT0FUIjogeworICAgICAgIkdMX0ZM
T0FUIjogIkxvYWRMQTMyRlRvUkdCQTMyRiIKKyAgICB9CisgIH0sCisgICJHTF9SR0JBMTZJIjog
eworICAgICJSMTZHMTZCMTZBMTZfU0lOVCI6IHsKKyAgICAgICJHTF9TSE9SVCI6ICJMb2FkVG9O
YXRpdmU8R0xzaG9ydCwgND4iCisgICAgfQorICB9LAorICAiR0xfUjhJIjogeworICAgICJSOF9T
SU5UIjogeworICAgICAgIkdMX0JZVEUiOiAiTG9hZFRvTmF0aXZlPEdMYnl0ZSwgMT4iCisgICAg
fQorICB9LAorICAiR0xfUkdCOF9TTk9STSI6IHsKKyAgICAiUjhHOEI4QThfU05PUk0iOiB7Cisg
ICAgICAiR0xfQllURSI6ICJMb2FkVG9OYXRpdmUzVG80PEdMYnl0ZSwgMHg3Rj4iCisgICAgfQor
ICB9LAorICAiR0xfUkczMkYiOiB7CisgICAgIlIzMkczMl9GTE9BVCI6IHsKKyAgICAgICJHTF9G
TE9BVCI6ICJMb2FkVG9OYXRpdmU8R0xmbG9hdCwgMj4iCisgICAgfQorICB9LAorICAiR0xfREVQ
VEhfQ09NUE9ORU5UMzJGIjogeworICAgICJEMzJfRkxPQVQiOiB7CisgICAgICAiR0xfRkxPQVQi
OiAiTG9hZEQzMkZUb0QzMkYiCisgICAgfQorICB9LAorICAiR0xfUkczMkkiOiB7CisgICAgIlIz
MkczMl9TSU5UIjogeworICAgICAgIkdMX0lOVCI6ICJMb2FkVG9OYXRpdmU8R0xpbnQsIDI+Igor
ICAgIH0KKyAgfSwKKyAgIkdMX0FMUEhBOF9FWFQiOiB7CisgICAgIkE4X1VOT1JNIjogeworICAg
ICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiTG9hZFRvTmF0aXZlPEdMdWJ5dGUsIDE+IgorICAgIH0s
CisgICAgIlI4RzhCOEE4X1VOT1JNIjogeworICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiTG9h
ZEE4VG9SR0JBOCIKKyAgICB9CisgIH0sCisgICJHTF9SRzMyVUkiOiB7CisgICAgIlIzMkczMl9V
SU5UIjogeworICAgICAgIkdMX1VOU0lHTkVEX0lOVCI6ICJMb2FkVG9OYXRpdmU8R0x1aW50LCAy
PiIKKyAgICB9CisgIH0sCisgICJHTF9SR0JBMTZVSSI6IHsKKyAgICAiUjE2RzE2QjE2QTE2X1VJ
TlQiOiB7CisgICAgICAiR0xfVU5TSUdORURfU0hPUlQiOiAiTG9hZFRvTmF0aXZlPEdMdXNob3J0
LCA0PiIKKyAgICB9CisgIH0sCisgICJHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDIjogewor
ICAgICJSOEc4QjhBOF9VTk9STSI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkxvYWRF
VEMyUkdCQThUb1JHQkE4IgorICAgIH0KKyAgfSwKKyAgIkdMX1JHQjhJIjogeworICAgICJSOEc4
QjhBOF9TSU5UIjogeworICAgICAgIkdMX0JZVEUiOiAiTG9hZFRvTmF0aXZlM1RvNDxHTGJ5dGUs
IDB4MDE+IgorICAgIH0KKyAgfSwKKyAgIkdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMiI6IHsKKyAg
ICAiUjhHOEI4QThfVU5PUk1fU1JHQiI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkxv
YWRFVEMyU1JHQjhUb1JHQkE4IgorICAgIH0KKyAgfSwKKyAgIkdMX0RFUFRIMzJGX1NURU5DSUw4
IjogeworICAgICJEMzJfRkxPQVRfUzhYMjRfVUlOVCI6IHsKKyAgICAgICJHTF9GTE9BVF8zMl9V
TlNJR05FRF9JTlRfMjRfOF9SRVYiOiAiTG9hZEQzMkZTOFgyNFRvRDMyRlM4WDI0IgorICAgIH0K
KyAgfSwKKyAgIkdMX1JHOEkiOiB7CisgICAgIlI4RzhfU0lOVCI6IHsKKyAgICAgICJHTF9CWVRF
IjogIkxvYWRUb05hdGl2ZTxHTGJ5dGUsIDI+IgorICAgIH0KKyAgfSwKKyAgIkdMX1IzMlVJIjog
eworICAgICJSMzJfVUlOVCI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9JTlQiOiAiTG9hZFRvTmF0
aXZlPEdMdWludCwgMT4iCisgICAgfQorICB9LAorICAiR0xfQkdSNV9BMV9BTkdMRVgiOiB7Cisg
ICAgIk5PTkUiOiB7CisgICAgICAiR0xfVU5TSUdORURfQllURSI6ICJMb2FkVG9OYXRpdmU8R0x1
Ynl0ZSwgND4iLAorICAgICAgIkdMX1VOU0lHTkVEX1NIT1JUXzFfNV81XzVfUkVWX0VYVCI6ICJM
b2FkUkdCNUExVG9SR0JBOCIKKyAgICB9CisgIH0sCisgICJHTF9CR1I1NjVfQU5HTEVYIjogewor
ICAgICJCNUc2UjVfVU5PUk0iOiB7CisgICAgICAiR0xfVU5TSUdORURfU0hPUlRfNV82XzUiOiAi
TG9hZFJHQjU2NVRvQkdSNTY1IiwKKyAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkxvYWRUb05h
dGl2ZTxHTHVzaG9ydCwgMT4iCisgICAgfQorICB9LAorICAiR0xfQ09NUFJFU1NFRF9SRzExX0VB
QyI6IHsKKyAgICAiUjhHOF9VTk9STSI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkxv
YWRFQUNSRzExVG9SRzgiCisgICAgfQorICB9LAorICAiR0xfU1JHQjhfQUxQSEE4IjogeworICAg
ICJSOEc4QjhBOF9VTk9STV9TUkdCIjogeworICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiTG9h
ZFRvTmF0aXZlPEdMdWJ5dGUsIDQ+IgorICAgIH0KKyAgfSwKKyAgIkdMX0xVTUlOQU5DRV9BTFBI
QTE2Rl9FWFQiOiB7CisgICAgIk5PTkUiOiB7CisgICAgICAiR0xfSEFMRl9GTE9BVCI6ICJMb2Fk
TEExNkZUb1JHQkExNkYiLAorICAgICAgIkdMX0hBTEZfRkxPQVRfT0VTIjogIkxvYWRMQTE2RlRv
UkdCQTE2RiIKKyAgICB9CisgIH0sCisgICJHTF9SR0JBIjogeworICAgICJOT05FIjogeworICAg
ICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24iLAorICAgICAg
IkdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQiOiAiVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24iLAor
ICAgICAgIkdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEiOiAiVW5yZWFjaGFibGVMb2FkRnVuY3Rp
b24iCisgICAgfQorICB9LAorICAiR0xfREVQVEgyNF9TVEVOQ0lMOCI6IHsKKyAgICAiRDI0X1VO
T1JNX1M4X1VJTlQiOiB7CisgICAgICAiR0xfVU5TSUdORURfSU5UXzI0XzgiOiAiTG9hZFIzMlRv
UjI0RzgiCisgICAgfQorICB9LAorICAiR0xfUkdCMTZJIjogeworICAgICJSMTZHMTZCMTZBMTZf
U0lOVCI6IHsKKyAgICAgICJHTF9TSE9SVCI6ICJMb2FkVG9OYXRpdmUzVG80PEdMc2hvcnQsIDB4
MDAwMT4iCisgICAgfQorICB9LAorICAiR0xfUjhVSSI6IHsKKyAgICAiUjhfVUlOVCI6IHsKKyAg
ICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkxvYWRUb05hdGl2ZTxHTHVieXRlLCAxPiIKKyAgICB9
CisgIH0sCisgICJHTF9BTFBIQSI6IHsKKyAgICAiUjE2RzE2QjE2QTE2X0ZMT0FUIjogeworICAg
ICAgIkdMX0hBTEZfRkxPQVQiOiAiTG9hZEExNkZUb1JHQkExNkYiLAorICAgICAgIkdMX0hBTEZf
RkxPQVRfT0VTIjogIkxvYWRBMTZGVG9SR0JBMTZGIgorICAgIH0sCisgICAgIk5PTkUiOiB7Cisg
ICAgICAiR0xfVU5TSUdORURfQllURSI6ICJVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiIKKyAgICB9
LAorICAgICJSMzJHMzJCMzJBMzJfRkxPQVQiOiB7CisgICAgICAiR0xfRkxPQVQiOiAiTG9hZEEz
MkZUb1JHQkEzMkYiCisgICAgfQorICB9LAorICAiR0xfUkdCMTZGIjogeworICAgICJSMTZHMTZC
MTZBMTZfRkxPQVQiOiB7CisgICAgICAiR0xfSEFMRl9GTE9BVCI6ICJMb2FkVG9OYXRpdmUzVG80
PEdMaGFsZiwgZ2w6OkZsb2F0MTZPbmU+IiwKKyAgICAgICJHTF9GTE9BVCI6ICJMb2FkUkdCMzJG
VG9SR0JBMTZGIiwKKyAgICAgICJHTF9IQUxGX0ZMT0FUX09FUyI6ICJMb2FkVG9OYXRpdmUzVG80
PEdMaGFsZiwgZ2w6OkZsb2F0MTZPbmU+IgorICAgIH0KKyAgfSwKKyAgIkdMX0NPTVBSRVNTRURf
U0lHTkVEX1IxMV9FQUMiOiB7CisgICAgIlI4X1NOT1JNIjogeworICAgICAgIkdMX1VOU0lHTkVE
X0JZVEUiOiAiTG9hZEVBQ1IxMVNUb1I4IgorICAgIH0KKyAgfSwKKyAgIkdMX0NPTVBSRVNTRURf
UkdCX1MzVENfRFhUMV9FWFQiOiB7CisgICAgIk5PTkUiOiB7CisgICAgICAiR0xfVU5TSUdORURf
QllURSI6ICJMb2FkQ29tcHJlc3NlZFRvTmF0aXZlPDQsIDQsIDg+IgorICAgIH0KKyAgfSwKKyAg
IkdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUIjogeworICAgICJOT05FIjogeworICAg
ICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiTG9hZENvbXByZXNzZWRUb05hdGl2ZTw0LCA0LCA4PiIK
KyAgICB9CisgIH0sCisgICJHTF9TVEVOQ0lMX0lOREVYOCI6IHsKKyAgICAiTk9ORSI6IHsKKyAg
ICAgICJHTF9VTlNJR05FRF9CWVRFIjogIlVuaW1wbGVtZW50ZWRMb2FkRnVuY3Rpb24iCisgICAg
fQorICB9LAorICAiR0xfTFVNSU5BTkNFX0FMUEhBMzJGX0VYVCI6IHsKKyAgICAiTk9ORSI6IHsK
KyAgICAgICJHTF9GTE9BVCI6ICJMb2FkTEEzMkZUb1JHQkEzMkYiCisgICAgfQorICB9LAorICAi
R0xfUkdCOFVJIjogeworICAgICJSOEc4QjhBOF9VSU5UIjogeworICAgICAgIkdMX1VOU0lHTkVE
X0JZVEUiOiAiTG9hZFRvTmF0aXZlM1RvNDxHTHVieXRlLCAweDAxPiIKKyAgICB9CisgIH0sCisg
ICJHTF9ERVBUSF9DT01QT05FTlQyNCI6IHsKKyAgICAiRDI0X1VOT1JNX1M4X1VJTlQiOiB7Cisg
ICAgICAiR0xfVU5TSUdORURfSU5UIjogIkxvYWRSMzJUb1IyNEc4IgorICAgIH0KKyAgfSwKKyAg
IkdMX1IzMkkiOiB7CisgICAgIlIzMl9TSU5UIjogeworICAgICAgIkdMX0lOVCI6ICJMb2FkVG9O
YXRpdmU8R0xpbnQsIDE+IgorICAgIH0KKyAgfSwKKyAgIkdMX0RFUFRIX0NPTVBPTkVOVDMyX09F
UyI6IHsKKyAgICAiTk9ORSI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9JTlQiOiAiTG9hZFIzMlRv
UjI0RzgiCisgICAgfQorICB9LAorICAiR0xfUjMyRiI6IHsKKyAgICAiUjMyX0ZMT0FUIjogewor
ICAgICAgIkdMX0ZMT0FUIjogIkxvYWRUb05hdGl2ZTxHTGZsb2F0LCAxPiIKKyAgICB9CisgIH0s
CisgICJHTF9SRzE2RiI6IHsKKyAgICAiUjE2RzE2X0ZMT0FUIjogeworICAgICAgIkdMX0hBTEZf
RkxPQVQiOiAiTG9hZFRvTmF0aXZlPEdMaGFsZiwgMj4iLAorICAgICAgIkdMX0ZMT0FUIjogIkxv
YWQzMkZUbzE2RjwyPiIsCisgICAgICAiR0xfSEFMRl9GTE9BVF9PRVMiOiAiTG9hZFRvTmF0aXZl
PEdMaGFsZiwgMj4iCisgICAgfQorICB9LAorICAiR0xfUkdCNTY1IjogeworICAgICJSOEc4QjhB
OF9VTk9STSI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkxvYWRUb05hdGl2ZTNUbzQ8
R0x1Ynl0ZSwgMHhGRj4iLAorICAgICAgIkdMX1VOU0lHTkVEX1NIT1JUXzVfNl81IjogIkxvYWRS
NUc2QjVUb1JHQkE4IgorICAgIH0sCisgICAgIkI1RzZSNV9VTk9STSI6IHsKKyAgICAgICJHTF9V
TlNJR05FRF9CWVRFIjogIkxvYWRSR0I4VG9CR1I1NjUiLAorICAgICAgIkdMX1VOU0lHTkVEX1NI
T1JUXzVfNl81IjogIkxvYWRUb05hdGl2ZTxHTHVzaG9ydCwgMT4iCisgICAgfQorICB9LAorICAi
R0xfTFVNSU5BTkNFMTZGX0VYVCI6IHsKKyAgICAiTk9ORSI6IHsKKyAgICAgICJHTF9IQUxGX0ZM
T0FUIjogIkxvYWRMMTZGVG9SR0JBMTZGIiwKKyAgICAgICJHTF9IQUxGX0ZMT0FUX09FUyI6ICJM
b2FkTDE2RlRvUkdCQTE2RiIKKyAgICB9CisgIH0sCisgICJHTF9SRzE2VUkiOiB7CisgICAgIlIx
NkcxNl9VSU5UIjogeworICAgICAgIkdMX1VOU0lHTkVEX1NIT1JUIjogIkxvYWRUb05hdGl2ZTxH
THVzaG9ydCwgMj4iCisgICAgfQorICB9LAorICAiR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
M19BTkdMRSI6IHsKKyAgICAiTk9ORSI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkxv
YWRDb21wcmVzc2VkVG9OYXRpdmU8NCwgNCwgMTY+IgorICAgIH0KKyAgfSwKKyAgIkdMX1JHMTZJ
IjogeworICAgICJSMTZHMTZfU0lOVCI6IHsKKyAgICAgICJHTF9TSE9SVCI6ICJMb2FkVG9OYXRp
dmU8R0xzaG9ydCwgMj4iCisgICAgfQorICB9LAorICAiR0xfQkdSQThfRVhUIjogeworICAgICJO
T05FIjogeworICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiTG9hZFRvTmF0aXZlPEdMdWJ5dGUs
IDQ+IgorICAgIH0KKyAgfSwKKyAgIkdMX0FMUEhBMTZGX0VYVCI6IHsKKyAgICAiTk9ORSI6IHsK
KyAgICAgICJHTF9IQUxGX0ZMT0FUIjogIkxvYWRBMTZGVG9SR0JBMTZGIiwKKyAgICAgICJHTF9I
QUxGX0ZMT0FUX09FUyI6ICJMb2FkQTE2RlRvUkdCQTE2RiIKKyAgICB9CisgIH0sCisgICJHTF9S
R0JBNCI6IHsKKyAgICAiUjhHOEI4QThfVU5PUk0iOiB7CisgICAgICAiR0xfVU5TSUdORURfQllU
RSI6ICJMb2FkVG9OYXRpdmU8R0x1Ynl0ZSwgND4iLAorICAgICAgIkdMX1VOU0lHTkVEX1NIT1JU
XzRfNF80XzQiOiAiTG9hZFJHQkE0VG9SR0JBOCIKKyAgICB9LAorICAgICJCNEc0UjRBNF9VTk9S
TSI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkxvYWRSR0JBOFRvQkdSQTQiLAorICAg
ICAgIkdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQiOiAiTG9hZFJHQkE0VG9BUkdCNCIKKyAgICB9
CisgIH0sCisgICJHTF9SR0JBOCI6IHsKKyAgICAiUjhHOEI4QThfVU5PUk0iOiB7CisgICAgICAi
R0xfVU5TSUdORURfQllURSI6ICJMb2FkVG9OYXRpdmU8R0x1Ynl0ZSwgND4iCisgICAgfQorICB9
LAorICAiR0xfTFVNSU5BTkNFIjogeworICAgICJSMTZHMTZCMTZBMTZfRkxPQVQiOiB7CisgICAg
ICAiR0xfSEFMRl9GTE9BVCI6ICJMb2FkTDE2RlRvUkdCQTE2RiIsCisgICAgICAiR0xfSEFMRl9G
TE9BVF9PRVMiOiAiTG9hZEwxNkZUb1JHQkExNkYiCisgICAgfSwKKyAgICAiTk9ORSI6IHsKKyAg
ICAgICJHTF9VTlNJR05FRF9CWVRFIjogIlVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uIgorICAgIH0s
CisgICAgIlIzMkczMkIzMkEzMl9GTE9BVCI6IHsKKyAgICAgICJHTF9GTE9BVCI6ICJMb2FkTDMy
RlRvUkdCQTMyRiIKKyAgICB9CisgIH0sCisgICJHTF9SR0IxMF9BMlVJIjogeworICAgICJSMTBH
MTBCMTBBMl9VSU5UIjogeworICAgICAgIkdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViI6
ICJMb2FkVG9OYXRpdmU8R0x1aW50LCAxPiIKKyAgICB9CisgIH0sCisgICJHTF9FVEMxX1JHQjhf
T0VTIjogeworICAgICJSOEc4QjhBOF9VTk9STSI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9CWVRF
IjogIkxvYWRFVEMxUkdCOFRvUkdCQTgiCisgICAgfQorICB9LAorICAiR0xfRVRDMV9SR0I4X0xP
U1NZX0RFQ09ERV9BTkdMRSI6IHsKKyAgICAiQkMxX1JHQl9VTk9STV9CTE9DSyI6IHsKKyAgICAg
ICJHTF9VTlNJR05FRF9CWVRFIjogIkxvYWRFVEMxUkdCOFRvQkMxIgorICAgIH0KKyAgfSwKKyAg
IkdMX1IxNl9FWFQiOiB7CisgICAgIlIxNl9VTk9STSI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9T
SE9SVCI6ICJMb2FkVG9OYXRpdmU8R0x1c2hvcnQsIDE+IgorICAgIH0KKyAgfSwKKyAgIkdMX1JH
MTZfRVhUIjogeworICAgICJSMTZHMTZfVU5PUk0iOiB7CisgICAgICAiR0xfVU5TSUdORURfU0hP
UlQiOiAiTG9hZFRvTmF0aXZlPEdMdXNob3J0LCAyPiIKKyAgICB9CisgIH0sCisgICJHTF9SR0Ix
Nl9FWFQiOiB7CisgICAgIlIxNkcxNkIxNkExNl9VTk9STSI6IHsKKyAgICAgICJHTF9VTlNJR05F
RF9TSE9SVCI6ICJMb2FkVG9OYXRpdmUzVG80PEdMdXNob3J0LCAweEZGRkY+IgorICAgIH0KKyAg
fSwKKyAgIkdMX1JHQkExNl9FWFQiOiB7CisgICAgIlIxNkcxNkIxNkExNl9VTk9STSI6IHsKKyAg
ICAgICJHTF9VTlNJR05FRF9TSE9SVCI6ICJMb2FkVG9OYXRpdmU8R0x1c2hvcnQsIDQ+IgorICAg
IH0KKyAgfSwKKyAgIkdMX1IxNl9TTk9STV9FWFQiOiB7CisgICAgIlIxNl9TTk9STSI6IHsKKyAg
ICAgICJHTF9TSE9SVCI6ICJMb2FkVG9OYXRpdmU8R0x1c2hvcnQsIDE+IgorICAgIH0KKyAgfSwK
KyAgIkdMX1JHMTZfU05PUk1fRVhUIjogeworICAgICJSMTZHMTZfU05PUk0iOiB7CisgICAgICAi
R0xfU0hPUlQiOiAiTG9hZFRvTmF0aXZlPEdMdXNob3J0LCAyPiIKKyAgICB9CisgIH0sCisgICJH
TF9SR0IxNl9TTk9STV9FWFQiOiB7CisgICAgIlIxNkcxNkIxNkExNl9TTk9STSI6IHsKKyAgICAg
ICJHTF9TSE9SVCI6ICJMb2FkVG9OYXRpdmUzVG80PEdMdXNob3J0LCAweDdGRkY+IgorICAgIH0K
KyAgfSwKKyAgIkdMX1JHQkExNl9TTk9STV9FWFQiOiB7CisgICAgIlIxNkcxNkIxNkExNl9TTk9S
TSI6IHsKKyAgICAgICJHTF9TSE9SVCI6ICJMb2FkVG9OYXRpdmU8R0x1c2hvcnQsIDQ+IgorICAg
IH0KKyAgfQorfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2xvYWRfZnVuY3Rpb25zX3RhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2xvYWRfZnVuY3Rpb25zX3RhYmxlLmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2xvYWRfZnVuY3Rpb25zX3RhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwy
MiBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKy8vIGxvYWRfZnVuY3Rpb25zX3RhYmxlOgorLy8gICBDb250YWlucyBs
b2FkIGZ1bmN0aW9ucyB0YWJsZSBkZXBlbmRpbmcgb24gaW50ZXJuYWwgZm9ybWF0IGFuZCBBTkdM
RSBmb3JtYXQuCisvLworCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0xPQURGVU5DVElPTlNU
QUJMRV9IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9MT0FERlVOQ1RJT05TVEFCTEVfSF8K
KworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdC5oIgorCituYW1lc3BhY2UgYW5n
bGUKK3sKKworcng6OkxvYWRGdW5jdGlvbk1hcCBHZXRMb2FkRnVuY3Rpb25zTWFwKEdMZW51bSBp
bnRlcm5hbEZvcm1hdCwgRm9ybWF0OjpJRCBhbmdsZUZvcm1hdCk7CisKK30gIC8vIG5hbWVzcGFj
ZSBhbmdsZQorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX0xPQURGVU5DVElPTlNUQUJM
RV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2xvYWRfZnVuY3Rpb25zX3RhYmxlX2F1dG9nZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9sb2FkX2Z1bmN0aW9uc190YWJs
ZV9hdXRvZ2VuLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvbG9hZF9mdW5jdGlvbnNfdGFibGVfYXV0b2dlbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwyMzExIEBACisvLyBHRU5FUkFURUQgRklMRSAtIERPIE5P
VCBFRElULgorLy8gR2VuZXJhdGVkIGJ5IGdlbl9sb2FkX2Z1bmN0aW9uc190YWJsZS5weSB1c2lu
ZyBkYXRhIGZyb20gbG9hZF9mdW5jdGlvbnNfZGF0YS5qc29uCisvLworLy8gQ29weXJpZ2h0IDIw
MTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gbG9hZF9m
dW5jdGlvbnNfdGFibGU6CisvLyAgIENvbnRhaW5zIHRoZSBHZXRMb2FkRnVuY3Rpb25zTWFwIGZv
ciB0ZXh0dXJlX2Zvcm1hdF91dGlsLmgKKy8vCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9sb2FkX2Z1bmN0aW9uc190YWJsZS5oIgorCisjaW5jbHVkZSAiaW1hZ2VfdXRpbC9jb3B5aW1h
Z2UuaCIKKyNpbmNsdWRlICJpbWFnZV91dGlsL2dlbmVyYXRlbWlwLmgiCisjaW5jbHVkZSAiaW1h
Z2VfdXRpbC9sb2FkaW1hZ2UuaCIKKwordXNpbmcgbmFtZXNwYWNlIHJ4OworCituYW1lc3BhY2Ug
YW5nbGUKK3sKKworbmFtZXNwYWNlCit7CisKKy8vIEVTMyBpbWFnZSBsb2FkaW5nIGZ1bmN0aW9u
cyB2YXJ5IGJhc2VkIG9uOgorLy8gICAgLSB0aGUgR0wgaW50ZXJuYWwgZm9ybWF0IChzdXBwbGll
ZCB0byBnbFRleCpJbWFnZSpEKQorLy8gICAgLSB0aGUgR0wgZGF0YSB0eXBlIGdpdmVuIChzdXBw
bGllZCB0byBnbFRleCpJbWFnZSpEKQorLy8gICAgLSB0aGUgdGFyZ2V0IERYR0lfRk9STUFUIHRo
YXQgdGhlIGltYWdlIHdpbGwgYmUgbG9hZGVkIGludG8gKHdoaWNoIGlzIGNob3NlbiBiYXNlZCBv
biB0aGUgRDNECisvLyAgICBkZXZpY2UncyBjYXBhYmlsaXRpZXMpCisvLyBUaGlzIG1hcCB0eXBl
IGRldGVybWluZXMgd2hpY2ggbG9hZGluZyBmdW5jdGlvbiB0byB1c2UsIGJhc2VkIG9uIHRoZXNl
IHRocmVlIHBhcmFtZXRlcnMuCisvLyBTb3VyY2UgZm9ybWF0cyBhbmQgdHlwZXMgYXJlIHRha2Vu
IGZyb20gVGFibGVzIDMuMiBhbmQgMy4zIG9mIHRoZSBFUyAzIHNwZWMuCit2b2lkIFVuaW1wbGVt
ZW50ZWRMb2FkRnVuY3Rpb24oc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qg
KmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1Bp
dGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0
Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAg
ICBVTklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24oc2l6
ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
b3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRw
dXREZXB0aFBpdGNoKQoreworICAgIFVOUkVBQ0hBQkxFKCk7Cit9CisKK0xvYWRJbWFnZUZ1bmN0
aW9uSW5mbyBBTFBIQV90b19SMTZHMTZCMTZBMTZfRkxPQVQoR0xlbnVtIHR5cGUpCit7CisgICAg
c3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUOgorICAgICAg
ICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkQTE2RlRvUkdCQTE2RiwgdHJ1
ZSk7CisgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6CisgICAgICAgICAgICByZXR1cm4g
TG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRBMTZGVG9SR0JBMTZGLCB0cnVlKTsKKyAgICAgICAg
Y2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0
aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQor
CitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gQUxQSEFfdG9fUjMyRzMyQjMyQTMyX0ZMT0FUKEdMZW51
bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfRkxP
QVQ6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRBMzJGVG9S
R0JBMzJGLCB0cnVlKTsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAg
ICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwg
dHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAg
ICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5j
dGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gQUxQSEFfdG9f
ZGVmYXVsdChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAg
ICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVu
Y3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZElt
YWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9
CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBBTFBIQTE2Rl9FWFRfdG9fZGVmYXVsdChHTGVudW0g
dHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX0hBTEZf
RkxPQVQ6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRBMTZG
VG9SR0JBMTZGLCB0cnVlKTsKKyAgICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUX09FUzoKKyAgICAg
ICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZEExNkZUb1JHQkExNkYsIHRy
dWUpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAg
ICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rp
b24sIHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIEFMUEhBMzJGX0VY
VF90b19kZWZhdWx0KEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7Cisg
ICAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rp
b25JbmZvKExvYWRBMzJGVG9SR0JBMzJGLCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rp
b25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJ
bWFnZUZ1bmN0aW9uSW5mbyBBTFBIQThfRVhUX3RvX0E4X1VOT1JNKEdMZW51bSB0eXBlKQorewor
ICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToK
KyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdM
dWJ5dGUsIDE+LCBmYWxzZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNo
YWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8gQUxQSEE4X0VYVF90b19SOEc4QjhBOF9VTk9STShHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0
Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAg
ICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRBOFRvUkdCQTgsIHRydWUpOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAg
IHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRy
dWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIEJHUjU2NV9BTkdMRVhfdG9f
QjVHNlI1X1VOT1JNKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7Cisg
ICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdXNob3J0LCAxPiwgZmFsc2UpOworICAgICAg
ICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81OgorICAgICAgICAgICAgcmV0dXJuIExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbyhMb2FkUkdCNTY1VG9CR1I1NjUsIHRydWUpOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0K
K30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIEJHUjVfQTFfQU5HTEVYX3RvX2RlZmF1bHQoR0xl
bnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9V
TlNJR05FRF9CWVRFOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhM
b2FkVG9OYXRpdmU8R0x1Ynl0ZSwgND4sIGZhbHNlKTsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05F
RF9TSE9SVF8xXzVfNV81X1JFVl9FWFQ6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVu
Y3Rpb25JbmZvKExvYWRSR0I1QTFUb1JHQkE4LCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVu
Y3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xv
YWRJbWFnZUZ1bmN0aW9uSW5mbyBCR1JBNF9BTkdMRVhfdG9fZGVmYXVsdChHTGVudW0gdHlwZSkK
K3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZ
VEU6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2
ZTxHTHVieXRlLCA0PiwgZmFsc2UpOworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzRf
NF80XzRfUkVWX0VYVDoKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8o
TG9hZFJHQkE0VG9SR0JBOCwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhV
bnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5j
dGlvbkluZm8gQkdSQThfRVhUX3RvX2RlZmF1bHQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNo
ICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAg
ICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1Ynl0ZSwgND4s
IGZhbHNlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1
bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBCR1JBX0VY
VF90b19kZWZhdWx0KEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7Cisg
ICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAg
IH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIENPTVBSRVNTRURfUjExX0VBQ190b19SOF9V
Tk9STShHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBj
YXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rp
b25JbmZvKExvYWRFQUNSMTFUb1I4LCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25J
bmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFn
ZUZ1bmN0aW9uSW5mbyBDT01QUkVTU0VEX1JHMTFfRUFDX3RvX1I4RzhfVU5PUk0oR0xlbnVtIHR5
cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05F
RF9CWVRFOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkRUFD
UkcxMVRvUkc4LCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hB
QkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hh
YmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5m
byBDT01QUkVTU0VEX1JHQjhfRVRDMl90b19SOEc4QjhBOF9VTk9STShHTGVudW0gdHlwZSkKK3sK
KyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6
CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRFVEMyUkdCOFRv
UkdCQTgsIHRydWUpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUo
KTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVM
b2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIENP
TVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzJfdG9fUjhHOEI4QThfVU5PUk0o
R0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBH
TF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5m
byhMb2FkRVRDMlJHQjhBMVRvUkdCQTgsIHRydWUpOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlv
bkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZElt
YWdlRnVuY3Rpb25JbmZvIENPTVBSRVNTRURfUkdCQThfRVRDMl9FQUNfdG9fUjhHOEI4QThfVU5P
Uk0oR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2Fz
ZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9u
SW5mbyhMb2FkRVRDMlJHQkE4VG9SR0JBOCwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0
aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8gQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFRfdG9fZGVmYXVs
dChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNl
IEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25J
bmZvKExvYWRDb21wcmVzc2VkVG9OYXRpdmU8NCwgNCwgOD4sIHRydWUpOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0K
K30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5H
TEVfdG9fZGVmYXVsdChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgewor
ICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICByZXR1cm4gTG9hZElt
YWdlRnVuY3Rpb25JbmZvKExvYWRDb21wcmVzc2VkVG9OYXRpdmU8NCwgNCwgMTY+LCB0cnVlKTsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAg
ICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0
cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBDT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQ1X0FOR0xFX3RvX2RlZmF1bHQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0
eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAg
cmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkQ29tcHJlc3NlZFRvTmF0aXZlPDQsIDQs
IDE2PiwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxv
YWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gQ09N
UFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVF90b19kZWZhdWx0KEdMZW51bSB0eXBlKQoreworICAg
IHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAg
ICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZENvbXByZXNzZWRUb05h
dGl2ZTw0LCA0LCA4PiwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJF
QUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJl
YWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlv
bkluZm8gQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQ190b19SOF9TTk9STShHTGVudW0gdHlwZSkK
K3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZ
VEU6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRFQUNSMTFT
VG9SOCwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxv
YWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gQ09N
UFJFU1NFRF9TSUdORURfUkcxMV9FQUNfdG9fUjhHOF9TTk9STShHTGVudW0gdHlwZSkKK3sKKyAg
ICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6Cisg
ICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRFQUNSRzExU1RvUkc4
LCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1
bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBDT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQ190b19SOEc4QjhBOF9VTk9STV9TUkdCKEdMZW51bSB0
eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVU5TSUdO
RURfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZEVU
QzJTUkdCQThUb1NSR0JBOCwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhV
bnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5j
dGlvbkluZm8gQ09NUFJFU1NFRF9TUkdCOF9FVEMyX3RvX1I4RzhCOEE4X1VOT1JNX1NSR0IoR0xl
bnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9V
TlNJR05FRF9CWVRFOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhM
b2FkRVRDMlNSR0I4VG9SR0JBOCwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5m
byhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VG
dW5jdGlvbkluZm8gQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzJfdG9f
UjhHOEI4QThfVU5PUk1fU1JHQihHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisg
ICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICByZXR1cm4g
TG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRFVEMyU1JHQjhBMVRvUkdCQTgsIHRydWUpOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJl
dHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUp
OworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIERFUFRIMjRfU1RFTkNJTDhfdG9f
RDI0X1VOT1JNX1M4X1VJTlQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAg
IHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfMjRfODoKKyAgICAgICAgICAgIHJldHVy
biBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFIzMlRvUjI0RzgsIHRydWUpOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAg
IH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIERFUFRIMzJGX1NURU5DSUw4X3RvX0QzMl9G
TE9BVF9TOFgyNF9VSU5UKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7
CisgICAgICAgIGNhc2UgR0xfRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWOgorICAgICAg
ICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkRDMyRlM4WDI0VG9EMzJGUzhY
MjQsIHRydWUpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsK
KyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2Fk
RnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIERFUFRI
X0NPTVBPTkVOVDE2X3RvX0QxNl9VTk9STShHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5
cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKKyAgICAgICAgICAgIHJl
dHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFIzMlRvUjE2LCB0cnVlKTsKKyAgICAgICAg
Y2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdXNob3J0LCAxPiwgZmFsc2UpOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0K
K30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIERFUFRIX0NPTVBPTkVOVDI0X3RvX0QyNF9VTk9S
TV9TOF9VSU5UKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAg
ICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1
bmN0aW9uSW5mbyhMb2FkUjMyVG9SMjRHOCwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0
aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8gREVQVEhfQ09NUE9ORU5UMzJGX3RvX0QzMl9GTE9BVChHTGVudW0g
dHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX0ZMT0FU
OgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkRDMyRlRvRDMy
RiwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRG
dW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gREVQVEhf
Q09NUE9ORU5UMzJfT0VTX3RvX2RlZmF1bHQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0
eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6CisgICAgICAgICAgICBy
ZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRSMzJUb1IyNEc4LCB0cnVlKTsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1
cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsK
KyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBFVEMxX1JHQjhfTE9TU1lfREVDT0RF
X0FOR0xFX3RvX0JDMV9SR0JfVU5PUk1fQkxPQ0soR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNo
ICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAg
ICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkRVRDMVJHQjhUb0JDMSwgdHJ1ZSk7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAg
ICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwg
dHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gRVRDMV9SR0I4X09FU190
b19SOEc4QjhBOF9VTk9STShHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAg
eworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICByZXR1cm4gTG9h
ZEltYWdlRnVuY3Rpb25JbmZvKExvYWRFVEMxUkdCOFRvUkdCQTgsIHRydWUpOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAg
IH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIExVTUlOQU5DRV90b19SMTZHMTZCMTZBMTZf
RkxPQVQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAg
Y2FzZSBHTF9IQUxGX0ZMT0FUOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9u
SW5mbyhMb2FkTDE2RlRvUkdCQTE2RiwgdHJ1ZSk7CisgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9B
VF9PRVM6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRMMTZG
VG9SR0JBMTZGLCB0cnVlKTsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAg
ICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlv
biwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRG
dW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gTFVNSU5B
TkNFX3RvX1IzMkczMkIzMkEzMl9GTE9BVChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5
cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX0ZMT0FUOgorICAgICAgICAgICAgcmV0dXJuIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkTDMyRlRvUkdCQTMyRiwgdHJ1ZSk7CisgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlv
bkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKwor
TG9hZEltYWdlRnVuY3Rpb25JbmZvIExVTUlOQU5DRV90b19kZWZhdWx0KEdMZW51bSB0eXBlKQor
eworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllU
RToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVM
b2FkRnVuY3Rpb24sIHRydWUpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFj
aGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25J
bmZvIExVTUlOQU5DRTE2Rl9FWFRfdG9fZGVmYXVsdChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0
Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVQ6CisgICAgICAgICAg
ICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRMMTZGVG9SR0JBMTZGLCB0cnVlKTsK
KyAgICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUX09FUzoKKyAgICAgICAgICAgIHJldHVybiBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8oTG9hZEwxNkZUb1JHQkExNkYsIHRydWUpOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0K
K30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIExVTUlOQU5DRTMyRl9FWFRfdG9fZGVmYXVsdChH
TGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdM
X0ZMT0FUOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkTDMy
RlRvUkdCQTMyRiwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNo
YWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8gTFVNSU5BTkNFOF9BTFBIQThfRVhUX3RvX2RlZmF1bHQoR0xlbnVtIHR5cGUpCit7CisgICAg
c3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAg
ICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkTEE4VG9SR0JBOCwgdHJ1
ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAg
ICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlv
biwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gTFVNSU5BTkNFOF9F
WFRfdG9fZGVmYXVsdChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgewor
ICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICByZXR1cm4gTG9hZElt
YWdlRnVuY3Rpb25JbmZvKExvYWRMOFRvUkdCQTgsIHRydWUpOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKwor
TG9hZEltYWdlRnVuY3Rpb25JbmZvIExVTUlOQU5DRV9BTFBIQV90b19SMTZHMTZCMTZBMTZfRkxP
QVQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2Fz
ZSBHTF9IQUxGX0ZMT0FUOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5m
byhMb2FkTEExNkZUb1JHQkExNkYsIHRydWUpOworICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVRf
T0VTOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkTEExNkZU
b1JHQkExNkYsIHRydWUpOworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAg
ICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9u
LCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1
bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBMVU1JTkFO
Q0VfQUxQSEFfdG9fUjMyRzMyQjMyQTMyX0ZMT0FUKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRj
aCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICByZXR1
cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRMQTMyRlRvUkdCQTMyRiwgdHJ1ZSk7CisgICAg
ICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0K
K30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIExVTUlOQU5DRV9BTFBIQV90b19kZWZhdWx0KEdM
ZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xf
VU5TSUdORURfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8o
VW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlv
bkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZElt
YWdlRnVuY3Rpb25JbmZvIExVTUlOQU5DRV9BTFBIQTE2Rl9FWFRfdG9fZGVmYXVsdChHTGVudW0g
dHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX0hBTEZf
RkxPQVQ6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRMQTE2
RlRvUkdCQTE2RiwgdHJ1ZSk7CisgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6CisgICAg
ICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRMQTE2RlRvUkdCQTE2Riwg
dHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAg
ICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5j
dGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gTFVNSU5BTkNF
X0FMUEhBMzJGX0VYVF90b19kZWZhdWx0KEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlw
ZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICByZXR1cm4gTG9h
ZEltYWdlRnVuY3Rpb25JbmZvKExvYWRMQTMyRlRvUkdCQTMyRiwgdHJ1ZSk7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAg
fQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gUjExRl9HMTFGX0IxMEZfdG9fUjExRzExQjEw
X0ZMT0FUKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAg
IGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZv
KExvYWRSR0IzMkZUb1JHMTFCMTBGLCB0cnVlKTsKKyAgICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FU
OgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkUkdCMTZGVG9S
RzExQjEwRiwgdHJ1ZSk7CisgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6CisgICAgICAg
ICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRSR0IxNkZUb1JHMTFCMTBGLCB0
cnVlKTsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWOgorICAg
ICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1aW50
LCAxPiwgZmFsc2UpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUo
KTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVM
b2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIFIx
NkZfdG9fUjE2X0ZMT0FUKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7
CisgICAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVu
Y3Rpb25JbmZvKExvYWQzMkZUbzE2RjwxPiwgdHJ1ZSk7CisgICAgICAgIGNhc2UgR0xfSEFMRl9G
TE9BVDoKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0
aXZlPEdMaGFsZiwgMT4sIGZhbHNlKTsKKyAgICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUX09FUzoK
KyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdM
aGFsZiwgMT4sIGZhbHNlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hB
QkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hh
YmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5m
byBSMTZJX3RvX1IxNl9TSU5UKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAg
ICB7CisgICAgICAgIGNhc2UgR0xfU0hPUlQ6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdl
RnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTHNob3J0LCAxPiwgZmFsc2UpOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAg
IH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIFIxNlVJX3RvX1IxNl9VSU5UKEdMZW51bSB0
eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVU5TSUdO
RURfU0hPUlQ6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRU
b05hdGl2ZTxHTHVzaG9ydCwgMT4sIGZhbHNlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25J
bmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFn
ZUZ1bmN0aW9uSW5mbyBSMTZfRVhUX3RvX1IxNl9VTk9STShHTGVudW0gdHlwZSkKK3sKKyAgICBz
d2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOgorICAg
ICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1c2hv
cnQsIDE+LCBmYWxzZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJM
RSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJs
ZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8g
UjE2X1NOT1JNX0VYVF90b19SMTZfU05PUk0oR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0
eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9TSE9SVDoKKyAgICAgICAgICAgIHJldHVybiBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdXNob3J0LCAxPiwgZmFsc2UpOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAg
IHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRy
dWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIFIzMkZfdG9fUjMyX0ZMT0FU
KEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2Ug
R0xfRkxPQVQ6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRU
b05hdGl2ZTxHTGZsb2F0LCAxPiwgZmFsc2UpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdl
RnVuY3Rpb25JbmZvIFIzMklfdG9fUjMyX1NJTlQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNo
ICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9JTlQ6CisgICAgICAgICAgICByZXR1cm4g
TG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTGludCwgMT4sIGZhbHNlKTsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBy
ZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVl
KTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBSMzJVSV90b19SMzJfVUlOVChH
TGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdM
X1VOU0lHTkVEX0lOVDoKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8o
TG9hZFRvTmF0aXZlPEdMdWludCwgMT4sIGZhbHNlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rp
b25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJ
bWFnZUZ1bmN0aW9uSW5mbyBSOF90b19SOF9VTk9STShHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0
Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAg
ICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTHVieXRlLCAx
PiwgZmFsc2UpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsK
KyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2Fk
RnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIFI4SV90
b19SOF9TSU5UKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAg
ICAgIGNhc2UgR0xfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8oTG9hZFRvTmF0aXZlPEdMYnl0ZSwgMT4sIGZhbHNlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVu
Y3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xv
YWRJbWFnZUZ1bmN0aW9uSW5mbyBSOFVJX3RvX1I4X1VJTlQoR0xlbnVtIHR5cGUpCit7CisgICAg
c3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAg
ICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1Ynl0
ZSwgMT4sIGZhbHNlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxl
TG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBS
OF9TTk9STV90b19SOF9TTk9STShHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisg
ICAgeworICAgICAgICBjYXNlIEdMX0JZVEU6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdl
RnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTGJ5dGUsIDE+LCBmYWxzZSk7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAg
fQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gUkcxNkZfdG9fUjE2RzE2X0ZMT0FUKEdMZW51
bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfRkxP
QVQ6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWQzMkZUbzE2
RjwyPiwgdHJ1ZSk7CisgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVDoKKyAgICAgICAgICAgIHJl
dHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMaGFsZiwgMj4sIGZhbHNl
KTsKKyAgICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUX09FUzoKKyAgICAgICAgICAgIHJldHVybiBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMaGFsZiwgMj4sIGZhbHNlKTsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBy
ZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVl
KTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBSRzE2SV90b19SMTZHMTZfU0lO
VChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNl
IEdMX1NIT1JUOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2Fk
VG9OYXRpdmU8R0xzaG9ydCwgMj4sIGZhbHNlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25J
bmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFn
ZUZ1bmN0aW9uSW5mbyBSRzE2VUlfdG9fUjE2RzE2X1VJTlQoR0xlbnVtIHR5cGUpCit7CisgICAg
c3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAg
ICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdXNo
b3J0LCAyPiwgZmFsc2UpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFi
bGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZv
IFJHMTZfRVhUX3RvX1IxNkcxNl9VTk9STShHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5
cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOgorICAgICAgICAgICAg
cmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1c2hvcnQsIDI+LCBm
YWxzZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAg
ICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5j
dGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gUkcxNl9TTk9S
TV9FWFRfdG9fUjE2RzE2X1NOT1JNKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkK
KyAgICB7CisgICAgICAgIGNhc2UgR0xfU0hPUlQ6CisgICAgICAgICAgICByZXR1cm4gTG9hZElt
YWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTHVzaG9ydCwgMj4sIGZhbHNlKTsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1
cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsK
KyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBSRzMyRl90b19SMzJHMzJfRkxPQVQo
R0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBH
TF9GTE9BVDoKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRv
TmF0aXZlPEdMZmxvYXQsIDI+LCBmYWxzZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5m
byhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VG
dW5jdGlvbkluZm8gUkczMklfdG9fUjMyRzMyX1NJTlQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dp
dGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9JTlQ6CisgICAgICAgICAgICByZXR1
cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTGludCwgMj4sIGZhbHNlKTsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAg
ICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0
cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBSRzMyVUlfdG9fUjMyRzMy
X1VJTlQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAg
Y2FzZSBHTF9VTlNJR05FRF9JTlQ6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rp
b25JbmZvKExvYWRUb05hdGl2ZTxHTHVpbnQsIDI+LCBmYWxzZSk7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQor
CitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gUkc4X3RvX1I4RzhfVU5PUk0oR0xlbnVtIHR5cGUpCit7
CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRF
OgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8
R0x1Ynl0ZSwgMj4sIGZhbHNlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVh
Y2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9u
SW5mbyBSRzhJX3RvX1I4RzhfU0lOVChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUp
CisgICAgeworICAgICAgICBjYXNlIEdMX0JZVEU6CisgICAgICAgICAgICByZXR1cm4gTG9hZElt
YWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTGJ5dGUsIDI+LCBmYWxzZSk7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJu
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7Cisg
ICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gUkc4VUlfdG9fUjhHOF9VSU5UKEdMZW51
bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVU5T
SUdORURfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9h
ZFRvTmF0aXZlPEdMdWJ5dGUsIDI+LCBmYWxzZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9u
SW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1h
Z2VGdW5jdGlvbkluZm8gUkc4X1NOT1JNX3RvX1I4RzhfU05PUk0oR0xlbnVtIHR5cGUpCit7Cisg
ICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9CWVRFOgorICAgICAgICAg
ICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0xieXRlLCAyPiwg
ZmFsc2UpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVu
Y3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIFJHQl90b19k
ZWZhdWx0KEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAg
IGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgICAgICBjYXNlIEdM
X1VOU0lHTkVEX1NIT1JUXzVfNl81OgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0
aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQor
CitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gUkdCMTBfQTJfdG9fUjEwRzEwQjEwQTJfVU5PUk0oR0xl
bnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9V
TlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVY6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdl
RnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTHVpbnQsIDE+LCBmYWxzZSk7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAg
fQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gUkdCMTBfQTJVSV90b19SMTBHMTBCMTBBMl9V
SU5UKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWOgorICAgICAgICAgICAgcmV0dXJuIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1aW50LCAxPiwgZmFsc2UpOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJl
dHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUp
OworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIFJHQjE2Rl90b19SMTZHMTZCMTZB
MTZfRkxPQVQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAg
ICAgY2FzZSBHTF9GTE9BVDoKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8oTG9hZFJHQjMyRlRvUkdCQTE2RiwgdHJ1ZSk7CisgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9B
VDoKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZl
M1RvNDxHTGhhbGYsIGdsOjpGbG9hdDE2T25lPiwgdHJ1ZSk7CisgICAgICAgIGNhc2UgR0xfSEFM
Rl9GTE9BVF9PRVM6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExv
YWRUb05hdGl2ZTNUbzQ8R0xoYWxmLCBnbDo6RmxvYXQxNk9uZT4sIHRydWUpOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAg
IH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIFJHQjE2SV90b19SMTZHMTZCMTZBMTZfU0lO
VChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNl
IEdMX1NIT1JUOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2Fk
VG9OYXRpdmUzVG80PEdMc2hvcnQsIDB4MDAwMT4sIHRydWUpOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKwor
TG9hZEltYWdlRnVuY3Rpb25JbmZvIFJHQjE2VUlfdG9fUjE2RzE2QjE2QTE2X1VJTlQoR0xlbnVt
IHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJ
R05FRF9TSE9SVDoKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9h
ZFRvTmF0aXZlM1RvNDxHTHVzaG9ydCwgMHgwMDAxPiwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQor
CitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gUkdCMTZfRVhUX3RvX1IxNkcxNkIxNkExNl9VTk9STShH
TGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdM
X1VOU0lHTkVEX1NIT1JUOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5m
byhMb2FkVG9OYXRpdmUzVG80PEdMdXNob3J0LCAweEZGRkY+LCB0cnVlKTsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9h
ZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9
Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBSR0IxNl9TTk9STV9FWFRfdG9fUjE2RzE2QjE2
QTE2X1NOT1JNKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAg
ICAgIGNhc2UgR0xfU0hPUlQ6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25J
bmZvKExvYWRUb05hdGl2ZTNUbzQ8R0x1c2hvcnQsIDB4N0ZGRj4sIHRydWUpOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAg
IH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIFJHQjMyRl90b19SMzJHMzJCMzJBMzJfRkxP
QVQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2Fz
ZSBHTF9GTE9BVDoKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9h
ZFRvTmF0aXZlM1RvNDxHTGZsb2F0LCBnbDo6RmxvYXQzMk9uZT4sIHRydWUpOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAg
IH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIFJHQjMySV90b19SMzJHMzJCMzJBMzJfU0lO
VChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNl
IEdMX0lOVDoKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRv
TmF0aXZlM1RvNDxHTGludCwgMHgwMDAwMDAwMT4sIHRydWUpOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKwor
TG9hZEltYWdlRnVuY3Rpb25JbmZvIFJHQjMyVUlfdG9fUjMyRzMyQjMyQTMyX1VJTlQoR0xlbnVt
IHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJ
R05FRF9JTlQ6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRU
b05hdGl2ZTNUbzQ8R0x1aW50LCAweDAwMDAwMDAxPiwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQor
CitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gUkdCNTY1X3RvX0I1RzZSNV9VTk9STShHTGVudW0gdHlw
ZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVE
X0JZVEU6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRSR0I4
VG9CR1I1NjUsIHRydWUpOworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81Ogor
ICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1
c2hvcnQsIDE+LCBmYWxzZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNo
YWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8gUkdCNTY1X3RvX1I4RzhCOEE4X1VOT1JNKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAo
dHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAg
IHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlM1RvNDxHTHVieXRlLCAw
eEZGPiwgdHJ1ZSk7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNV82XzU6CisgICAg
ICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRSNUc2QjVUb1JHQkE4LCB0
cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAg
ICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0
aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBSR0I1X0ExX3Rv
X0I1RzVSNUExX1VOT1JNKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7
CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8oTG9hZFJHQkE4VG9CR1I1QTEsIHRydWUpOworICAgICAgICBjYXNl
IEdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVjoKKyAgICAgICAgICAgIHJldHVybiBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8oTG9hZFJHQjEwQTJUb0JHUjVBMSwgdHJ1ZSk7CisgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8oTG9hZFJHQjVBMVRvQTFSR0I1LCB0cnVlKTsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZElt
YWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9
CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBSR0I1X0ExX3RvX1I4RzhCOEE4X1VOT1JNKEdMZW51
bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVU5T
SUdORURfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9h
ZFRvTmF0aXZlPEdMdWJ5dGUsIDQ+LCBmYWxzZSk7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURf
SU5UXzJfMTBfMTBfMTBfUkVWOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9u
SW5mbyhMb2FkUkdCMTBBMlRvUkdCQTgsIHRydWUpOworICAgICAgICBjYXNlIEdMX1VOU0lHTkVE
X1NIT1JUXzVfNV81XzE6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZv
KExvYWRSR0I1QTFUb1JHQkE4LCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZv
KFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1
bmN0aW9uSW5mbyBSR0I4X3RvX1I4RzhCOEE4X1VOT1JNKEdMZW51bSB0eXBlKQoreworICAgIHN3
aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAg
ICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlM1RvNDxHTHVi
eXRlLCAweEZGPiwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNo
YWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8gUkdCOElfdG9fUjhHOEI4QThfU0lOVChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5
cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX0JZVEU6CisgICAgICAgICAgICByZXR1cm4gTG9h
ZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTNUbzQ8R0xieXRlLCAweDAxPiwgdHJ1ZSk7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAg
ICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwg
dHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gUkdCOFVJX3RvX1I4RzhC
OEE4X1VJTlQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1
bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmUzVG80PEdMdWJ5dGUsIDB4MDE+LCB0cnVlKTsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1
cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsK
KyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBSR0I4X1NOT1JNX3RvX1I4RzhCOEE4
X1NOT1JNKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAg
IGNhc2UgR0xfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8o
TG9hZFRvTmF0aXZlM1RvNDxHTGJ5dGUsIDB4N0Y+LCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdl
RnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisK
K0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBSR0I5X0U1X3RvX1I5RzlCOUU1X1NIQVJFREVYUChHTGVu
dW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX0ZM
T0FUOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkUkdCMzJG
VG9SR0I5RTUsIHRydWUpOworICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVQ6CisgICAgICAgICAg
ICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRSR0IxNkZUb1JHQjlFNSwgdHJ1ZSk7
CisgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6CisgICAgICAgICAgICByZXR1cm4gTG9h
ZEltYWdlRnVuY3Rpb25JbmZvKExvYWRSR0IxNkZUb1JHQjlFNSwgdHJ1ZSk7CisgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfSU5UXzVfOV85XzlfUkVWOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1aW50LCAxPiwgZmFsc2UpOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVy
biBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOwor
ICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIFJHQkFfdG9fZGVmYXVsdChHTGVudW0g
dHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lH
TkVEX0JZVEU6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVh
Y2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9S
VF80XzRfNF80OgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJl
YWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hP
UlRfNV81XzVfMToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5y
ZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdl
RnVuY3Rpb25JbmZvIFJHQkExNkZfdG9fUjE2RzE2QjE2QTE2X0ZMT0FUKEdMZW51bSB0eXBlKQor
eworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAg
ICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWQzMkZUbzE2Rjw0PiwgdHJ1
ZSk7CisgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVDoKKyAgICAgICAgICAgIHJldHVybiBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMaGFsZiwgND4sIGZhbHNlKTsKKyAgICAg
ICAgY2FzZSBHTF9IQUxGX0ZMT0FUX09FUzoKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMaGFsZiwgND4sIGZhbHNlKTsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9h
ZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9
Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBSR0JBMTZJX3RvX1IxNkcxNkIxNkExNl9TSU5U
KEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2Ug
R0xfU0hPUlQ6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRU
b05hdGl2ZTxHTHNob3J0LCA0PiwgZmFsc2UpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdl
RnVuY3Rpb25JbmZvIFJHQkExNlVJX3RvX1IxNkcxNkIxNkExNl9VSU5UKEdMZW51bSB0eXBlKQor
eworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hP
UlQ6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2
ZTxHTHVzaG9ydCwgND4sIGZhbHNlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVu
cmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0
aW9uSW5mbyBSR0JBMTZfRVhUX3RvX1IxNkcxNkIxNkExNl9VTk9STShHTGVudW0gdHlwZSkKK3sK
KyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JU
OgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8
R0x1c2hvcnQsIDQ+LCBmYWxzZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJF
QUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJl
YWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlv
bkluZm8gUkdCQTE2X1NOT1JNX0VYVF90b19SMTZHMTZCMTZBMTZfU05PUk0oR0xlbnVtIHR5cGUp
Cit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9TSE9SVDoKKyAg
ICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdXNo
b3J0LCA0PiwgZmFsc2UpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFi
bGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZv
IFJHQkEzMkZfdG9fUjMyRzMyQjMyQTMyX0ZMT0FUKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRj
aCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICByZXR1
cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTGZsb2F0LCA0PiwgZmFsc2Up
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
ICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24s
IHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIFJHQkEzMklfdG9fUjMy
RzMyQjMyQTMyX1NJTlQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsK
KyAgICAgICAgY2FzZSBHTF9JTlQ6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rp
b25JbmZvKExvYWRUb05hdGl2ZTxHTGludCwgND4sIGZhbHNlKTsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdl
RnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisK
K0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBSR0JBMzJVSV90b19SMzJHMzJCMzJBMzJfVUlOVChHTGVu
dW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VO
U0lHTkVEX0lOVDoKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9h
ZFRvTmF0aXZlPEdMdWludCwgND4sIGZhbHNlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25J
bmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFn
ZUZ1bmN0aW9uSW5mbyBSR0JBNF90b19CNEc0UjRBNF9VTk9STShHTGVudW0gdHlwZSkKK3sKKyAg
ICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6Cisg
ICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRSR0JBOFRvQkdSQTQs
IHRydWUpOworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQ6CisgICAgICAg
ICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRSR0JBNFRvQVJHQjQsIHRydWUp
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
ICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24s
IHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIFJHQkE0X3RvX1I4RzhC
OEE4X1VOT1JNKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAg
ICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdWJ5dGUsIDQ+LCBmYWxzZSk7CisgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNDoKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8oTG9hZFJHQkE0VG9SR0JBOCwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQor
CitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gUkdCQThfdG9fUjhHOEI4QThfVU5PUk0oR0xlbnVtIHR5
cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05F
RF9CWVRFOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9O
YXRpdmU8R0x1Ynl0ZSwgND4sIGZhbHNlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZv
KFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1
bmN0aW9uSW5mbyBSR0JBOElfdG9fUjhHOEI4QThfU0lOVChHTGVudW0gdHlwZSkKK3sKKyAgICBz
d2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX0JZVEU6CisgICAgICAgICAgICBy
ZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTGJ5dGUsIDQ+LCBmYWxz
ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAg
ICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlv
biwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gUkdCQThVSV90b19S
OEc4QjhBOF9VSU5UKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7Cisg
ICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdWJ5dGUsIDQ+LCBmYWxzZSk7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJu
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7Cisg
ICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gUkdCQThfU05PUk1fdG9fUjhHOEI4QThf
U05PUk0oR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAg
Y2FzZSBHTF9CWVRFOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhM
b2FkVG9OYXRpdmU8R0xieXRlLCA0PiwgZmFsc2UpOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlv
bkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZElt
YWdlRnVuY3Rpb25JbmZvIFNSR0I4X3RvX1I4RzhCOEE4X1VOT1JNX1NSR0IoR0xlbnVtIHR5cGUp
Cit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9C
WVRFOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRp
dmUzVG80PEdMdWJ5dGUsIDB4RkY+LCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25J
bmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFn
ZUZ1bmN0aW9uSW5mbyBTUkdCOF9BTFBIQThfdG9fUjhHOEI4QThfVU5PUk1fU1JHQihHTGVudW0g
dHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lH
TkVEX0JZVEU6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRU
b05hdGl2ZTxHTHVieXRlLCA0PiwgZmFsc2UpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdl
RnVuY3Rpb25JbmZvIFNURU5DSUxfSU5ERVg4X3RvX2RlZmF1bHQoR0xlbnVtIHR5cGUpCit7Cisg
ICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgor
ICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbmltcGxlbWVudGVkTG9h
ZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hB
QkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hh
YmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCitM
b2FkRnVuY3Rpb25NYXAgR2V0TG9hZEZ1bmN0aW9uc01hcChHTGVudW0gaW50ZXJuYWxGb3JtYXQs
IEZvcm1hdDo6SUQgYW5nbGVGb3JtYXQpCit7CisgICAgLy8gY2xhbmctZm9ybWF0IG9mZgorICAg
IHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisgICAgeworICAgICAgICBjYXNlIEdMX0FMUEhBOgor
ICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2X0ZMT0FUOgor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gQUxQSEFfdG9fUjE2RzE2QjE2QTE2X0ZMT0FUOwor
ICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjMyRzMyQjMyQTMyX0ZMT0FUOgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gQUxQSEFfdG9fUjMyRzMyQjMyQTMyX0ZMT0FUOworICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBBTFBIQV90
b19kZWZhdWx0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQUxQ
SEExNkZfRVhUOgorICAgICAgICAgICAgcmV0dXJuIEFMUEhBMTZGX0VYVF90b19kZWZhdWx0Owor
ICAgICAgICBjYXNlIEdMX0FMUEhBMzJGX0VYVDoKKyAgICAgICAgICAgIHJldHVybiBBTFBIQTMy
Rl9FWFRfdG9fZGVmYXVsdDsKKyAgICAgICAgY2FzZSBHTF9BTFBIQThfRVhUOgorICAgICAgICB7
CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6QThfVU5PUk06CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBBTFBIQThfRVhUX3RvX0E4X1VOT1JNOworICAgICAgICAgICAgICAgIGNhc2UgRm9y
bWF0OjpJRDo6UjhHOEI4QThfVU5PUk06CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBBTFBI
QThfRVhUX3RvX1I4RzhCOEE4X1VOT1JNOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGNhc2UgR0xfQkdSNTY1X0FOR0xFWDoKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChh
bmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6
SUQ6OkI1RzZSNV9VTk9STToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJHUjU2NV9BTkdM
RVhfdG9fQjVHNlI1X1VOT1JNOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2Ug
R0xfQkdSNV9BMV9BTkdMRVg6CisgICAgICAgICAgICByZXR1cm4gQkdSNV9BMV9BTkdMRVhfdG9f
ZGVmYXVsdDsKKyAgICAgICAgY2FzZSBHTF9CR1JBNF9BTkdMRVg6CisgICAgICAgICAgICByZXR1
cm4gQkdSQTRfQU5HTEVYX3RvX2RlZmF1bHQ7CisgICAgICAgIGNhc2UgR0xfQkdSQThfRVhUOgor
ICAgICAgICAgICAgcmV0dXJuIEJHUkE4X0VYVF90b19kZWZhdWx0OworICAgICAgICBjYXNlIEdM
X0JHUkFfRVhUOgorICAgICAgICAgICAgcmV0dXJuIEJHUkFfRVhUX3RvX2RlZmF1bHQ7CisgICAg
ICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SMTFfRUFDOgorICAgICAgICB7CisgICAgICAgICAgICBz
d2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2Ug
Rm9ybWF0OjpJRDo6UjhfVU5PUk06CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBDT01QUkVT
U0VEX1IxMV9FQUNfdG9fUjhfVU5PUk07CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBHTF9DT01QUkVTU0VEX1JHMTFfRUFDOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0
Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9y
bWF0OjpJRDo6UjhHOF9VTk9STToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENPTVBSRVNT
RURfUkcxMV9FQUNfdG9fUjhHOF9VTk9STTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCOF9FVEMyOgorICAgICAgICB7CisgICAgICAgICAgICBz
d2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2Ug
Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk06CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBD
T01QUkVTU0VEX1JHQjhfRVRDMl90b19SOEc4QjhBOF9VTk9STTsKKyAgICAgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEEx
X0VUQzI6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpSOEc4QjhBOF9VTk9S
TToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9V
R0hfQUxQSEExX0VUQzJfdG9fUjhHOEI4QThfVU5PUk07CisgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk06CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBDT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDX3RvX1I4RzhCOEE4X1VOT1JNOwor
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1Mz
VENfRFhUMV9FWFQ6CisgICAgICAgICAgICByZXR1cm4gQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
MV9FWFRfdG9fZGVmYXVsdDsKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19E
WFQzX0FOR0xFOgorICAgICAgICAgICAgcmV0dXJuIENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNf
QU5HTEVfdG9fZGVmYXVsdDsKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19E
WFQ1X0FOR0xFOgorICAgICAgICAgICAgcmV0dXJuIENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVf
QU5HTEVfdG9fZGVmYXVsdDsKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RY
VDFfRVhUOgorICAgICAgICAgICAgcmV0dXJuIENPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFRf
dG9fZGVmYXVsdDsKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDOgor
ICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjhfU05PUk06CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBDT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDX3RvX1I4X1NOT1JNOwor
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TSUdORURf
UkcxMV9FQUM6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpSOEc4X1NOT1JN
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUNf
dG9fUjhHOF9TTk9STTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDOgorICAgICAgICB7CisgICAgICAgICAgICBz
d2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2Ug
Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk1fU1JHQjoKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDX3RvX1I4RzhCOEE4X1VOT1JNX1NS
R0I7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NS
R0I4X0VUQzI6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpSOEc4QjhBOF9V
Tk9STV9TUkdCOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ09NUFJFU1NFRF9TUkdCOF9F
VEMyX3RvX1I4RzhCOEE4X1VOT1JNX1NSR0I7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMjoKKyAg
ICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VOT1JNX1NSR0I6Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBDT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9B
TFBIQTFfRVRDMl90b19SOEc4QjhBOF9VTk9STV9TUkdCOworICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIGNhc2UgR0xfREVQVEgyNF9TVEVOQ0lMODoKKyAgICAgICAgeworICAgICAgICAg
ICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBj
YXNlIEZvcm1hdDo6SUQ6OkQyNF9VTk9STV9TOF9VSU5UOgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gREVQVEgyNF9TVEVOQ0lMOF90b19EMjRfVU5PUk1fUzhfVUlOVDsKKyAgICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0RFUFRIMzJGX1NURU5DSUw4OgorICAgICAgICB7
CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6RDMyX0ZMT0FUX1M4WDI0X1VJTlQ6CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBERVBUSDMyRl9TVEVOQ0lMOF90b19EMzJfRkxPQVRfUzhYMjRf
VUlOVDsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBP
TkVOVDE2OgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6RDE2X1VOT1JNOgor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gREVQVEhfQ09NUE9ORU5UMTZfdG9fRDE2X1VOT1JN
OworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5U
MjQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpEMjRfVU5PUk1fUzhfVUlO
VDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERFUFRIX0NPTVBPTkVOVDI0X3RvX0QyNF9V
Tk9STV9TOF9VSU5UOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfREVQ
VEhfQ09NUE9ORU5UMzJGOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9y
bWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6RDMy
X0ZMT0FUOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gREVQVEhfQ09NUE9ORU5UMzJGX3Rv
X0QzMl9GTE9BVDsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0RFUFRI
X0NPTVBPTkVOVDMyX09FUzoKKyAgICAgICAgICAgIHJldHVybiBERVBUSF9DT01QT05FTlQzMl9P
RVNfdG9fZGVmYXVsdDsKKyAgICAgICAgY2FzZSBHTF9FVEMxX1JHQjhfTE9TU1lfREVDT0RFX0FO
R0xFOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6QkMxX1JHQl9VTk9STV9C
TE9DSzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVUQzFfUkdCOF9MT1NTWV9ERUNPREVf
QU5HTEVfdG9fQkMxX1JHQl9VTk9STV9CTE9DSzsKKyAgICAgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBjYXNlIEdMX0VUQzFfUkdCOF9PRVM6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRj
aCAoYW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3Jt
YXQ6OklEOjpSOEc4QjhBOF9VTk9STToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVUQzFf
UkdCOF9PRVNfdG9fUjhHOEI4QThfVU5PUk07CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBHTF9MVU1JTkFOQ0U6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5n
bGVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklE
OjpSMTZHMTZCMTZBMTZfRkxPQVQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBMVU1JTkFO
Q0VfdG9fUjE2RzE2QjE2QTE2X0ZMT0FUOworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJ
RDo6UjMyRzMyQjMyQTMyX0ZMT0FUOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTFVNSU5B
TkNFX3RvX1IzMkczMkIzMkEzMl9GTE9BVDsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gTFVNSU5BTkNFX3RvX2RlZmF1bHQ7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0UxNkZfRVhUOgorICAgICAg
ICAgICAgcmV0dXJuIExVTUlOQU5DRTE2Rl9FWFRfdG9fZGVmYXVsdDsKKyAgICAgICAgY2FzZSBH
TF9MVU1JTkFOQ0UzMkZfRVhUOgorICAgICAgICAgICAgcmV0dXJuIExVTUlOQU5DRTMyRl9FWFRf
dG9fZGVmYXVsdDsKKyAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U4X0FMUEhBOF9FWFQ6CisgICAg
ICAgICAgICByZXR1cm4gTFVNSU5BTkNFOF9BTFBIQThfRVhUX3RvX2RlZmF1bHQ7CisgICAgICAg
IGNhc2UgR0xfTFVNSU5BTkNFOF9FWFQ6CisgICAgICAgICAgICByZXR1cm4gTFVNSU5BTkNFOF9F
WFRfdG9fZGVmYXVsdDsKKyAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpSMTZHMTZCMTZBMTZfRkxPQVQ6CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBMVU1JTkFOQ0VfQUxQSEFfdG9fUjE2RzE2QjE2QTE2X0ZMT0FU
OworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjMyRzMyQjMyQTMyX0ZMT0FUOgor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gTFVNSU5BTkNFX0FMUEhBX3RvX1IzMkczMkIzMkEz
Ml9GTE9BVDsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gTFVNSU5BTkNFX0FMUEhBX3RvX2RlZmF1bHQ7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEExNkZfRVhUOgorICAgICAgICAgICAg
cmV0dXJuIExVTUlOQU5DRV9BTFBIQTE2Rl9FWFRfdG9fZGVmYXVsdDsKKyAgICAgICAgY2FzZSBH
TF9MVU1JTkFOQ0VfQUxQSEEzMkZfRVhUOgorICAgICAgICAgICAgcmV0dXJuIExVTUlOQU5DRV9B
TFBIQTMyRl9FWFRfdG9fZGVmYXVsdDsKKyAgICAgICAgY2FzZSBHTF9SMTFGX0cxMUZfQjEwRjoK
KyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlIxMUcxMUIxMF9GTE9BVDoKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFIxMUZfRzExRl9CMTBGX3RvX1IxMUcxMUIxMF9GTE9B
VDsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1IxNkY6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpSMTZfRkxPQVQ6CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBSMTZGX3RvX1IxNl9GTE9BVDsKKyAgICAgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBjYXNlIEdMX1IxNkk6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVG
b3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpS
MTZfU0lOVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFIxNklfdG9fUjE2X1NJTlQ7Cisg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SMTZVSToKKyAgICAgICAgewor
ICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlIxNl9VSU5UOgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gUjE2VUlfdG9fUjE2X1VJTlQ7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBHTF9SMTZfRVhUOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9y
bWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjE2
X1VOT1JNOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gUjE2X0VYVF90b19SMTZfVU5PUk07
CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SMTZfU05PUk1fRVhUOgor
ICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjE2X1NOT1JNOgorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gUjE2X1NOT1JNX0VYVF90b19SMTZfU05PUk07CisgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SMzJGOgorICAgICAgICB7CisgICAgICAgICAg
ICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNh
c2UgRm9ybWF0OjpJRDo6UjMyX0ZMT0FUOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gUjMy
Rl90b19SMzJfRkxPQVQ7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9S
MzJJOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjMyX1NJTlQ6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBSMzJJX3RvX1IzMl9TSU5UOworICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGNhc2UgR0xfUjMyVUk6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3
aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBG
b3JtYXQ6OklEOjpSMzJfVUlOVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFIzMlVJX3Rv
X1IzMl9VSU5UOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUjg6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpSOF9VTk9STToKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIFI4X3RvX1I4X1VOT1JNOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGNhc2UgR0xfUjhJOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xl
Rm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6
UjhfU0lOVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFI4SV90b19SOF9TSU5UOworICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUjhVSToKKyAgICAgICAgeworICAg
ICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBjYXNlIEZvcm1hdDo6SUQ6OlI4X1VJTlQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBSOFVJX3RvX1I4X1VJTlQ7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBH
TF9SOF9TTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlI4X1NOT1JN
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gUjhfU05PUk1fdG9fUjhfU05PUk07CisgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SRzE2RjoKKyAgICAgICAgeworICAg
ICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBjYXNlIEZvcm1hdDo6SUQ6OlIxNkcxNl9GTE9BVDoKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIFJHMTZGX3RvX1IxNkcxNl9GTE9BVDsKKyAgICAgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBjYXNlIEdMX1JHMTZJOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xl
Rm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6
UjE2RzE2X1NJTlQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBSRzE2SV90b19SMTZHMTZf
U0lOVDsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHMTZVSToKKyAg
ICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlIxNkcxNl9VSU5UOgorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gUkcxNlVJX3RvX1IxNkcxNl9VSU5UOworICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGNhc2UgR0xfUkcxNl9FWFQ6CisgICAgICAgIHsKKyAgICAgICAgICAg
IHN3aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2Fz
ZSBGb3JtYXQ6OklEOjpSMTZHMTZfVU5PUk06CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBS
RzE2X0VYVF90b19SMTZHMTZfVU5PUk07CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBHTF9SRzE2X1NOT1JNX0VYVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChh
bmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6
SUQ6OlIxNkcxNl9TTk9STToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJHMTZfU05PUk1f
RVhUX3RvX1IxNkcxNl9TTk9STTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNl
IEdMX1JHMzJGOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjMyRzMyX0ZM
T0FUOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gUkczMkZfdG9fUjMyRzMyX0ZMT0FUOwor
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkczMkk6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpSMzJHMzJfU0lOVDoKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIFJHMzJJX3RvX1IzMkczMl9TSU5UOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGNhc2UgR0xfUkczMlVJOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFu
Z2xlRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJ
RDo6UjMyRzMyX1VJTlQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBSRzMyVUlfdG9fUjMy
RzMyX1VJTlQ7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SRzg6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpSOEc4X1VOT1JNOgorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gUkc4X3RvX1I4RzhfVU5PUk07CisgICAgICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBHTF9SRzhJOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2gg
KGFuZ2xlRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0
OjpJRDo6UjhHOF9TSU5UOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gUkc4SV90b19SOEc4
X1NJTlQ7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SRzhVSToKKyAg
ICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlI4RzhfVUlOVDoKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIFJHOFVJX3RvX1I4RzhfVUlOVDsKKyAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBjYXNlIEdMX1JHOF9TTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3dp
dGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZv
cm1hdDo6SUQ6OlI4RzhfU05PUk06CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBSRzhfU05P
Uk1fdG9fUjhHOF9TTk9STTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdM
X1JHQjoKKyAgICAgICAgICAgIHJldHVybiBSR0JfdG9fZGVmYXVsdDsKKyAgICAgICAgY2FzZSBH
TF9SR0IxMF9BMjoKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlIxMEcxMEIx
MEEyX1VOT1JNOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gUkdCMTBfQTJfdG9fUjEwRzEw
QjEwQTJfVU5PUk07CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0Ix
MF9BMlVJOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjEwRzEwQjEwQTJf
VUlOVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJHQjEwX0EyVUlfdG9fUjEwRzEwQjEw
QTJfVUlOVDsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHQjE2RjoK
KyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlIxNkcxNkIxNkExNl9GTE9BVDoK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJHQjE2Rl90b19SMTZHMTZCMTZBMTZfRkxPQVQ7
CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0IxNkk6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpSMTZHMTZCMTZBMTZfU0lOVDoKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFJHQjE2SV90b19SMTZHMTZCMTZBMTZfU0lOVDsKKyAgICAgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHQjE2VUk6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgY2FzZSBGb3JtYXQ6OklEOjpSMTZHMTZCMTZBMTZfVUlOVDoKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIFJHQjE2VUlfdG9fUjE2RzE2QjE2QTE2X1VJTlQ7CisgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0IxNl9FWFQ6CisgICAgICAgIHsKKyAgICAgICAgICAg
IHN3aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2Fz
ZSBGb3JtYXQ6OklEOjpSMTZHMTZCMTZBMTZfVU5PUk06CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBSR0IxNl9FWFRfdG9fUjE2RzE2QjE2QTE2X1VOT1JNOworICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGNhc2UgR0xfUkdCMTZfU05PUk1fRVhUOgorICAgICAgICB7CisgICAgICAg
ICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGNhc2UgRm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2X1NOT1JNOgorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gUkdCMTZfU05PUk1fRVhUX3RvX1IxNkcxNkIxNkExNl9TTk9STTsKKyAgICAgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHQjMyRjoKKyAgICAgICAgeworICAgICAg
ICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBjYXNlIEZvcm1hdDo6SUQ6OlIzMkczMkIzMkEzMl9GTE9BVDoKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIFJHQjMyRl90b19SMzJHMzJCMzJBMzJfRkxPQVQ7CisgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0IzMkk6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3
aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBG
b3JtYXQ6OklEOjpSMzJHMzJCMzJBMzJfU0lOVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFJHQjMySV90b19SMzJHMzJCMzJBMzJfU0lOVDsKKyAgICAgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBjYXNlIEdMX1JHQjMyVUk6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5n
bGVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklE
OjpSMzJHMzJCMzJBMzJfVUlOVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJHQjMyVUlf
dG9fUjMyRzMyQjMyQTMyX1VJTlQ7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBHTF9SR0I1NjU6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpCNUc2UjVf
VU5PUk06CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBSR0I1NjVfdG9fQjVHNlI1X1VOT1JN
OworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk06CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBSR0I1NjVfdG9fUjhHOEI4QThfVU5PUk07CisgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0I1X0ExOgorICAgICAgICB7CisgICAg
ICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGNhc2UgRm9ybWF0OjpJRDo6QjVHNVI1QTFfVU5PUk06CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBSR0I1X0ExX3RvX0I1RzVSNUExX1VOT1JNOworICAgICAgICAgICAgICAgIGNhc2Ug
Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk06CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBS
R0I1X0ExX3RvX1I4RzhCOEE4X1VOT1JNOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGNhc2UgR0xfUkdCODoKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1h
dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlI4RzhC
OEE4X1VOT1JNOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gUkdCOF90b19SOEc4QjhBOF9V
Tk9STTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHQjhJOgorICAg
ICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjhHOEI4QThfU0lOVDoKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFJHQjhJX3RvX1I4RzhCOEE4X1NJTlQ7CisgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0I4VUk6CisgICAgICAgIHsKKyAgICAgICAgICAg
IHN3aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2Fz
ZSBGb3JtYXQ6OklEOjpSOEc4QjhBOF9VSU5UOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
UkdCOFVJX3RvX1I4RzhCOEE4X1VJTlQ7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBHTF9SR0I4X1NOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xl
Rm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6
UjhHOEI4QThfU05PUk06CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBSR0I4X1NOT1JNX3Rv
X1I4RzhCOEE4X1NOT1JNOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xf
UkdCOV9FNToKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlI5RzlCOUU1X1NI
QVJFREVYUDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJHQjlfRTVfdG9fUjlHOUI5RTVf
U0hBUkVERVhQOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCQToK
KyAgICAgICAgICAgIHJldHVybiBSR0JBX3RvX2RlZmF1bHQ7CisgICAgICAgIGNhc2UgR0xfUkdC
QTE2RjoKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlIxNkcxNkIxNkExNl9G
TE9BVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJHQkExNkZfdG9fUjE2RzE2QjE2QTE2
X0ZMT0FUOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCQTE2SToK
KyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlIxNkcxNkIxNkExNl9TSU5UOgor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gUkdCQTE2SV90b19SMTZHMTZCMTZBMTZfU0lOVDsK
KyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHQkExNlVJOgorICAgICAg
ICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2X1VJTlQ6CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBSR0JBMTZVSV90b19SMTZHMTZCMTZBMTZfVUlOVDsKKyAgICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHQkExNl9FWFQ6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpSMTZHMTZCMTZBMTZfVU5PUk06CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBSR0JBMTZfRVhUX3RvX1IxNkcxNkIxNkExNl9VTk9STTsKKyAgICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHQkExNl9TTk9STV9FWFQ6CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpSMTZHMTZCMTZBMTZfU05PUk06CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBSR0JBMTZfU05PUk1fRVhUX3RvX1IxNkcxNkIxNkExNl9T
Tk9STTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHQkEzMkY6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpSMzJHMzJCMzJBMzJfRkxPQVQ6Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBSR0JBMzJGX3RvX1IzMkczMkIzMkEzMl9GTE9BVDsK
KyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHQkEzMkk6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpSMzJHMzJCMzJBMzJfU0lOVDoKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFJHQkEzMklfdG9fUjMyRzMyQjMyQTMyX1NJTlQ7CisgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0JBMzJVSToKKyAgICAgICAgeworICAg
ICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBjYXNlIEZvcm1hdDo6SUQ6OlIzMkczMkIzMkEzMl9VSU5UOgorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gUkdCQTMyVUlfdG9fUjMyRzMyQjMyQTMyX1VJTlQ7CisgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0JBNDoKKyAgICAgICAgeworICAgICAgICAgICAg
c3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNl
IEZvcm1hdDo6SUQ6OkI0RzRSNEE0X1VOT1JNOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
UkdCQTRfdG9fQjRHNFI0QTRfVU5PUk07CisgICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklE
OjpSOEc4QjhBOF9VTk9STToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJHQkE0X3RvX1I4
RzhCOEE4X1VOT1JNOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdC
QTg6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpSOEc4QjhBOF9VTk9STToK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJHQkE4X3RvX1I4RzhCOEE4X1VOT1JNOworICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCQThJOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjhHOEI4QThfU0lOVDoKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIFJHQkE4SV90b19SOEc4QjhBOF9TSU5UOworICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIGNhc2UgR0xfUkdCQThVSToKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNo
IChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1h
dDo6SUQ6OlI4RzhCOEE4X1VJTlQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBSR0JBOFVJ
X3RvX1I4RzhCOEE4X1VJTlQ7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBH
TF9SR0JBOF9TTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1h
dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlI4RzhC
OEE4X1NOT1JNOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gUkdCQThfU05PUk1fdG9fUjhH
OEI4QThfU05PUk07CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9TUkdC
ODoKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VOT1JNX1NS
R0I6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTUkdCOF90b19SOEc4QjhBOF9VTk9STV9T
UkdCOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfU1JHQjhfQUxQSEE4
OgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk1fU1JH
QjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNSR0I4X0FMUEhBOF90b19SOEc4QjhBOF9V
Tk9STV9TUkdCOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfU1RFTkNJ
TF9JTkRFWDg6CisgICAgICAgICAgICByZXR1cm4gU1RFTkNJTF9JTkRFWDhfdG9fZGVmYXVsdDsK
KworICAgICAgICBkZWZhdWx0OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgTG9hZEZ1
bmN0aW9uTWFwIGVtcHR5TG9hZEZ1bmN0aW9uc01hcDsKKyAgICAgICAgICAgIHJldHVybiBlbXB0
eUxvYWRGdW5jdGlvbnNNYXA7CisgICAgICAgIH0KKyAgICB9CisgICAgLy8gY2xhbmctZm9ybWF0
IG9uCisKK30gIC8vIEdldExvYWRGdW5jdGlvbnNNYXAKKworfSAgLy8gbmFtZXNwYWNlIGFuZ2xl
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvcmVu
ZGVyZXJfdXRpbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9yZW5kZXJlcl91dGlscy5jcHAJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3JlbmRlcmVyX3V0
aWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI3NSBAQAorLy8KKy8vIENvcHlyaWdo
dCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIHJl
bmRlcmVyX3V0aWxzOgorLy8gICBIZWxwZXIgbWV0aG9kcyBwZXJ0YWluaW5nIHRvIG1vc3Qgb3Ig
YWxsIGJhY2stZW5kcy4KKy8vCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9yZW5kZXJl
cl91dGlscy5oIgorCisjaW5jbHVkZSAiaW1hZ2VfdXRpbC9jb3B5aW1hZ2UuaCIKKyNpbmNsdWRl
ICJpbWFnZV91dGlsL2ltYWdlZm9ybWF0cy5oIgorCisjaW5jbHVkZSAibGliQU5HTEUvZm9ybWF0
dXRpbHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9Gb3JtYXQuaCIKKworI2luY2x1
ZGUgPHN0cmluZy5oPgorCituYW1lc3BhY2UgcngKK3sKKworbmFtZXNwYWNlCit7Cit0eXBlZGVm
IHN0ZDo6cGFpcjxnbDo6Rm9ybWF0VHlwZSwgQ29sb3JXcml0ZUZ1bmN0aW9uPiBGb3JtYXRXcml0
ZUZ1bmN0aW9uUGFpcjsKK3R5cGVkZWYgc3RkOjptYXA8Z2w6OkZvcm1hdFR5cGUsIENvbG9yV3Jp
dGVGdW5jdGlvbj4gRm9ybWF0V3JpdGVGdW5jdGlvbk1hcDsKKworc3RhdGljIGlubGluZSB2b2lk
IEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKEZvcm1hdFdyaXRlRnVuY3Rpb25NYXAg
Km1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENvbG9yV3JpdGVGdW5jdGlvbiB3cml0ZUZ1bmMpCit7Cisg
ICAgbWFwLT5pbnNlcnQoRm9ybWF0V3JpdGVGdW5jdGlvblBhaXIoZ2w6OkZvcm1hdFR5cGUoZm9y
bWF0LCB0eXBlKSwgd3JpdGVGdW5jKSk7Cit9CisKK3N0YXRpYyBGb3JtYXRXcml0ZUZ1bmN0aW9u
TWFwIEJ1aWxkRm9ybWF0V3JpdGVGdW5jdGlvbk1hcCgpCit7CisgICAgdXNpbmcgbmFtZXNwYWNl
IGFuZ2xlOyAgLy8gIEZvciBpbWFnZSB3cml0aW5nIGZ1bmN0aW9ucworCisgICAgRm9ybWF0V3Jp
dGVGdW5jdGlvbk1hcCBtYXA7CisKKyAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgICAgLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZvcm1hdCAgICAgICAgICAgICAgIHwg
VHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb2xvciB3cml0ZSBmdW5jdGlvbiAg
ICAgICAgICAgICB8CisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwg
R0xfUkdCQSwgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICAg
IFdyaXRlQ29sb3I8UjhHOEI4QTgsIEdMZmxvYXQ+ICAgICApOworICAgIEluc2VydEZvcm1hdFdy
aXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHQkEsICAgICAgICAgICAgICAgR0xfQllURSwg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFI4RzhCOEE4UywgR0xmbG9hdD4g
ICAgKTsKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SR0JB
LCAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQsICAgICAgICAgV3JpdGVD
b2xvcjxSNEc0QjRBNCwgR0xmbG9hdD4gICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5j
dGlvbk1hcHBpbmcoJm1hcCwgR0xfUkdCQSwgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9TSE9S
VF81XzVfNV8xLCAgICAgICAgIFdyaXRlQ29sb3I8UjVHNUI1QTEsIEdMZmxvYXQ+ICAgICApOwor
ICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHQkEsICAgICAg
ICAgICAgICAgR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWLCAgICBXcml0ZUNvbG9yPFIx
MEcxMEIxMEEyLCBHTGZsb2F0PiAgKTsKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFw
cGluZygmbWFwLCBHTF9SR0JBLCAgICAgICAgICAgICAgIEdMX0ZMT0FULCAgICAgICAgICAgICAg
ICAgICAgICAgICAgV3JpdGVDb2xvcjxSMzJHMzJCMzJBMzJGLCBHTGZsb2F0Pik7CisgICAgSW5z
ZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkdCQSwgICAgICAgICAgICAg
ICBHTF9IQUxGX0ZMT0FULCAgICAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjE2RzE2QjE2
QTE2RiwgR0xmbG9hdD4pOworICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZt
YXAsIEdMX1JHQkEsICAgICAgICAgICAgICAgR0xfSEFMRl9GTE9BVF9PRVMsICAgICAgICAgICAg
ICAgICBXcml0ZUNvbG9yPFIxNkcxNkIxNkExNkYsIEdMZmxvYXQ+KTsKKyAgICBJbnNlcnRGb3Jt
YXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9TSE9SVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFIxNkcxNkIx
NkExNiwgR0xmbG9hdD4pOworICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZt
YXAsIEdMX1JHQkEsIEdMX1NIT1JULCBXcml0ZUNvbG9yPFIxNkcxNkIxNkExNlMsIEdMZmxvYXQ+
KTsKKworICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHQkFf
SU5URUdFUiwgICAgICAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAgICBXcml0ZUNv
bG9yPFI4RzhCOEE4LCBHTHVpbnQ+ICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0
aW9uTWFwcGluZygmbWFwLCBHTF9SR0JBX0lOVEVHRVIsICAgICAgIEdMX0JZVEUsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSOEc4QjhBOFMsIEdMaW50PiAgICAgICk7Cisg
ICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkdCQV9JTlRFR0VS
LCAgICAgICBHTF9VTlNJR05FRF9TSE9SVCwgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjE2
RzE2QjE2QTE2LCBHTHVpbnQ+ICApOworICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBw
aW5nKCZtYXAsIEdMX1JHQkFfSU5URUdFUiwgICAgICAgR0xfU0hPUlQsICAgICAgICAgICAgICAg
ICAgICAgICAgICBXcml0ZUNvbG9yPFIxNkcxNkIxNkExNlMsIEdMaW50PiAgKTsKKyAgICBJbnNl
cnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SR0JBX0lOVEVHRVIsICAgICAg
IEdMX1VOU0lHTkVEX0lOVCwgICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSMzJHMzJCMzJB
MzIsIEdMdWludD4gICk7CisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1h
cCwgR0xfUkdCQV9JTlRFR0VSLCAgICAgICBHTF9JTlQsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdyaXRlQ29sb3I8UjMyRzMyQjMyQTMyUywgR0xpbnQ+ICApOworICAgIEluc2VydEZvcm1h
dFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHQkFfSU5URUdFUiwgICAgICAgR0xfVU5T
SUdORURfSU5UXzJfMTBfMTBfMTBfUkVWLCAgICBXcml0ZUNvbG9yPFIxMEcxMEIxMEEyLCBHTHVp
bnQ+ICAgKTsKKworICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdM
X1JHQiwgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAgICBX
cml0ZUNvbG9yPFI4RzhCOCwgR0xmbG9hdD4gICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRXcml0
ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SR0IsICAgICAgICAgICAgICAgIEdMX0JZVEUsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSOEc4QjhTLCBHTGZsb2F0PiAgICAg
ICk7CisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkdCLCAg
ICAgICAgICAgICAgICBHTF9VTlNJR05FRF9TSE9SVF81XzZfNSwgICAgICAgICAgIFdyaXRlQ29s
b3I8UjVHNkI1LCBHTGZsb2F0PiAgICAgICApOworICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rp
b25NYXBwaW5nKCZtYXAsIEdMX1JHQiwgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5UXzEw
Rl8xMUZfMTFGX1JFViwgICBXcml0ZUNvbG9yPFIxMUcxMUIxMEYsIEdMZmxvYXQ+ICAgKTsKKyAg
ICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SR0IsICAgICAgICAg
ICAgICAgIEdMX1VOU0lHTkVEX0lOVF81XzlfOV85X1JFViwgICAgICAgV3JpdGVDb2xvcjxSOUc5
QjlFNSwgR0xmbG9hdD4gICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBp
bmcoJm1hcCwgR0xfUkdCLCAgICAgICAgICAgICAgICBHTF9GTE9BVCwgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdyaXRlQ29sb3I8UjMyRzMyQjMyRiwgR0xmbG9hdD4gICApOworICAgIEluc2Vy
dEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHQiwgICAgICAgICAgICAgICAg
R0xfSEFMRl9GTE9BVCwgICAgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFIxNkcxNkIxNkYs
IEdMZmxvYXQ+ICAgKTsKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFw
LCBHTF9SR0IsICAgICAgICAgICAgICAgIEdMX0hBTEZfRkxPQVRfT0VTLCAgICAgICAgICAgICAg
ICAgV3JpdGVDb2xvcjxSMTZHMTZCMTZGLCBHTGZsb2F0PiAgICk7CisgICAgSW5zZXJ0Rm9ybWF0
V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkdCLCBHTF9VTlNJR05FRF9TSE9SVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFIxNkcxNkIxNiwg
R0xmbG9hdD4pOworICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdM
X1JHQiwgR0xfU0hPUlQsIFdyaXRlQ29sb3I8UjE2RzE2QjE2UywgR0xmbG9hdD4pOworCisgICAg
SW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkdCX0lOVEVHRVIsICAg
ICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjhHOEI4
LCBHTHVpbnQ+ICAgICAgICApOworICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5n
KCZtYXAsIEdMX1JHQl9JTlRFR0VSLCAgICAgICAgR0xfQllURSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXcml0ZUNvbG9yPFI4RzhCOFMsIEdMaW50PiAgICAgICAgKTsKKyAgICBJbnNlcnRG
b3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SR0JfSU5URUdFUiwgICAgICAgIEdM
X1VOU0lHTkVEX1NIT1JULCAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSMTZHMTZCMTYsIEdM
dWludD4gICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwg
R0xfUkdCX0lOVEVHRVIsICAgICAgICBHTF9TSE9SVCwgICAgICAgICAgICAgICAgICAgICAgICAg
IFdyaXRlQ29sb3I8UjE2RzE2QjE2UywgR0xpbnQ+ICAgICApOworICAgIEluc2VydEZvcm1hdFdy
aXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHQl9JTlRFR0VSLCAgICAgICAgR0xfVU5TSUdO
RURfSU5ULCAgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFIzMkczMkIzMiwgR0x1aW50PiAg
ICAgKTsKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SR0Jf
SU5URUdFUiwgICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVD
b2xvcjxSMzJHMzJCMzJTLCBHTGludD4gICAgICk7CisKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1
bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SRywgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZ
VEUsICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSOEc4LCBHTGZsb2F0PiAgICAgICAgICk7
CisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkcsICAgICAg
ICAgICAgICAgICBHTF9CWVRFLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8
UjhHOFMsIEdMZmxvYXQ+ICAgICAgICApOworICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25N
YXBwaW5nKCZtYXAsIEdMX1JHLCAgICAgICAgICAgICAgICAgR0xfRkxPQVQsICAgICAgICAgICAg
ICAgICAgICAgICAgICBXcml0ZUNvbG9yPFIzMkczMkYsIEdMZmxvYXQ+ICAgICAgKTsKKyAgICBJ
bnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SRywgICAgICAgICAgICAg
ICAgIEdMX0hBTEZfRkxPQVQsICAgICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSMTZHMTZG
LCBHTGZsb2F0PiAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmco
Jm1hcCwgR0xfUkcsICAgICAgICAgICAgICAgICBHTF9IQUxGX0ZMT0FUX09FUywgICAgICAgICAg
ICAgICAgIFdyaXRlQ29sb3I8UjE2RzE2RiwgR0xmbG9hdD4gICAgICApOworICAgIEluc2VydEZv
cm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHLCBHTF9VTlNJR05FRF9TSE9SVCwg
V3JpdGVDb2xvcjxSMTZHMTYsIEdMZmxvYXQ+KTsKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0
aW9uTWFwcGluZygmbWFwLCBHTF9SRywgR0xfU0hPUlQsIFdyaXRlQ29sb3I8UjE2RzE2UywgR0xm
bG9hdD4pOworCisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xf
UkdfSU5URUdFUiwgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICAgIFdy
aXRlQ29sb3I8UjhHOCwgR0x1aW50PiAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdFdyaXRl
RnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHX0lOVEVHRVIsICAgICAgICAgR0xfQllURSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFI4RzhTLCBHTGludD4gICAgICAgICAg
KTsKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SR19JTlRF
R0VSLCAgICAgICAgIEdMX1VOU0lHTkVEX1NIT1JULCAgICAgICAgICAgICAgICAgV3JpdGVDb2xv
cjxSMTZHMTYsIEdMdWludD4gICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlv
bk1hcHBpbmcoJm1hcCwgR0xfUkdfSU5URUdFUiwgICAgICAgICBHTF9TSE9SVCwgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjE2RzE2UywgR0xpbnQ+ICAgICAgICApOworICAg
IEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHX0lOVEVHRVIsICAg
ICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFIzMkcz
MiwgR0x1aW50PiAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGlu
ZygmbWFwLCBHTF9SR19JTlRFR0VSLCAgICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV3JpdGVDb2xvcjxSMzJHMzJTLCBHTGludD4gICAgICAgICk7CisKKyAgICBJbnNl
cnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SRUQsICAgICAgICAgICAgICAg
IEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSOCwgR0xmbG9h
dD4gICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1h
cCwgR0xfUkVELCAgICAgICAgICAgICAgICBHTF9CWVRFLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdyaXRlQ29sb3I8UjhTLCBHTGZsb2F0PiAgICAgICAgICApOworICAgIEluc2VydEZvcm1h
dFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JFRCwgICAgICAgICAgICAgICAgR0xfRkxP
QVQsICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFIzMkYsIEdMZmxvYXQ+ICAg
ICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9S
RUQsICAgICAgICAgICAgICAgIEdMX0hBTEZfRkxPQVQsICAgICAgICAgICAgICAgICAgICAgV3Jp
dGVDb2xvcjxSMTZGLCBHTGZsb2F0PiAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVG
dW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkVELCAgICAgICAgICAgICAgICBHTF9IQUxGX0ZMT0FU
X09FUywgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjE2RiwgR0xmbG9hdD4gICAgICAgICAp
OworICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JFRCwgR0xf
VU5TSUdORURfU0hPUlQsIFdyaXRlQ29sb3I8UjE2LCBHTGZsb2F0Pik7CisgICAgSW5zZXJ0Rm9y
bWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkVELCBHTF9TSE9SVCwgV3JpdGVDb2xv
cjxSMTZTLCBHTGZsb2F0Pik7CisKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGlu
ZygmbWFwLCBHTF9SRURfSU5URUdFUiwgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAg
ICAgICAgICAgV3JpdGVDb2xvcjxSOCwgR0x1aW50PiAgICAgICAgICAgICk7CisgICAgSW5zZXJ0
Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkVEX0lOVEVHRVIsICAgICAgICBH
TF9CWVRFLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjhTLCBHTGludD4g
ICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAs
IEdMX1JFRF9JTlRFR0VSLCAgICAgICAgR0xfVU5TSUdORURfU0hPUlQsICAgICAgICAgICAgICAg
ICBXcml0ZUNvbG9yPFIxNiwgR0x1aW50PiAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRX
cml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SRURfSU5URUdFUiwgICAgICAgIEdMX1NIT1JU
LCAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSMTZTLCBHTGludD4gICAgICAg
ICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkVE
X0lOVEVHRVIsICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICAgICAgICAgICAgIFdyaXRl
Q29sb3I8UjMyLCBHTHVpbnQ+ICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdFdyaXRlRnVu
Y3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JFRF9JTlRFR0VSLCAgICAgICAgR0xfSU5ULCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFIzMlMsIEdMaW50PiAgICAgICAgICAgKTsK
KworICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX0xVTUlOQU5D
RV9BTFBIQSwgICAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9y
PEw4QTgsIEdMZmxvYXQ+ICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9u
TWFwcGluZygmbWFwLCBHTF9MVU1JTkFOQ0UsICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAg
ICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxMOCwgR0xmbG9hdD4gICAgICAgICAgICk7CisgICAg
SW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfQUxQSEEsICAgICAgICAg
ICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8QTgsIEdM
ZmxvYXQ+ICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5n
KCZtYXAsIEdMX0xVTUlOQU5DRV9BTFBIQSwgICAgR0xfRkxPQVQsICAgICAgICAgICAgICAgICAg
ICAgICAgICBXcml0ZUNvbG9yPEwzMkEzMkYsIEdMZmxvYXQ+ICAgICAgKTsKKyAgICBJbnNlcnRG
b3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9MVU1JTkFOQ0UsICAgICAgICAgIEdM
X0ZMT0FULCAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxMMzJGLCBHTGZsb2F0
PiAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwg
R0xfQUxQSEEsICAgICAgICAgICAgICBHTF9GTE9BVCwgICAgICAgICAgICAgICAgICAgICAgICAg
IFdyaXRlQ29sb3I8QTMyRiwgR0xmbG9hdD4gICAgICAgICApOworICAgIEluc2VydEZvcm1hdFdy
aXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX0xVTUlOQU5DRV9BTFBIQSwgICAgR0xfSEFMRl9G
TE9BVCwgICAgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPEwxNkExNkYsIEdMZmxvYXQ+ICAg
ICAgKTsKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9MVU1J
TkFOQ0VfQUxQSEEsICAgIEdMX0hBTEZfRkxPQVRfT0VTLCAgICAgICAgICAgICAgICAgV3JpdGVD
b2xvcjxMMTZBMTZGLCBHTGZsb2F0PiAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5j
dGlvbk1hcHBpbmcoJm1hcCwgR0xfTFVNSU5BTkNFLCAgICAgICAgICBHTF9IQUxGX0ZMT0FULCAg
ICAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8TDE2RiwgR0xmbG9hdD4gICAgICAgICApOwor
ICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX0xVTUlOQU5DRSwg
ICAgICAgICAgR0xfSEFMRl9GTE9BVF9PRVMsICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPEwx
NkYsIEdMZmxvYXQ+ICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFw
cGluZygmbWFwLCBHTF9BTFBIQSwgICAgICAgICAgICAgIEdMX0hBTEZfRkxPQVQsICAgICAgICAg
ICAgICAgICAgICAgV3JpdGVDb2xvcjxBMTZGLCBHTGZsb2F0PiAgICAgICAgICk7CisgICAgSW5z
ZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfQUxQSEEsICAgICAgICAgICAg
ICBHTF9IQUxGX0ZMT0FUX09FUywgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8QTE2RiwgR0xm
bG9hdD4gICAgICAgICApOworCisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmco
Jm1hcCwgR0xfQkdSQV9FWFQsICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAg
ICAgICAgIFdyaXRlQ29sb3I8QjhHOFI4QTgsIEdMZmxvYXQ+ICAgICApOworICAgIEluc2VydEZv
cm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX0JHUkFfRVhULCAgICAgICAgICAgR0xf
VU5TSUdORURfU0hPUlRfNF80XzRfNF9SRVZfRVhULCBXcml0ZUNvbG9yPEE0UjRHNEI0LCBHTGZs
b2F0PiAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBH
TF9CR1JBX0VYVCwgICAgICAgICAgIEdMX1VOU0lHTkVEX1NIT1JUXzFfNV81XzVfUkVWX0VYVCwg
V3JpdGVDb2xvcjxBMVI1RzVCNSwgR0xmbG9hdD4gICAgICk7CisKKyAgICBJbnNlcnRGb3JtYXRX
cml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9TUkdCX0VYVCwgICAgICAgICAgIEdMX1VOU0lH
TkVEX0JZVEUsICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSOEc4QjgsIEdMZmxvYXQ+ICAg
ICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfU1JH
Ql9BTFBIQV9FWFQsICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICAgIFdyaXRl
Q29sb3I8UjhHOEI4QTgsIEdMZmxvYXQ+ICAgICApOworCisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVG
dW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCwgICAg
R0xfVU5TSUdORURfQllURSwgICAgIE5VTEwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp
OworICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNT
RURfUkdCQV9TM1RDX0RYVDFfRVhULCAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICBOVUxMICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9u
TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFLCBHTF9VTlNJ
R05FRF9CWVRFLCAgICAgTlVMTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAg
SW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUNV9BTkdMRSwgR0xfVU5TSUdORURfQllURSwgICAgIE5VTEwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICApOworCisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBp
bmcoJm1hcCwgR0xfREVQVEhfQ09NUE9ORU5ULCAgICBHTF9VTlNJR05FRF9TSE9SVCwgICAgICAg
ICAgICAgICAgIE5VTEwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgIEluc2Vy
dEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX0RFUFRIX0NPTVBPTkVOVCwgICAg
R0xfVU5TSUdORURfSU5ULCAgICAgICAgICAgICAgICAgICBOVUxMICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFw
LCBHTF9ERVBUSF9DT01QT05FTlQsICAgIEdMX0ZMT0FULCAgICAgICAgICAgICAgICAgICAgICAg
ICAgTlVMTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisKKyAgICBJbnNlcnRGb3Jt
YXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9TVEVOQ0lMLCAgICAgICAgICAgIEdMX1VO
U0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgICAgTlVMTCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICk7CisKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBH
TF9ERVBUSF9TVEVOQ0lMLCAgICAgIEdMX1VOU0lHTkVEX0lOVF8yNF84LCAgICAgICAgICAgICAg
TlVMTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0V3Jp
dGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfREVQVEhfU1RFTkNJTCwgICAgICBHTF9GTE9BVF8z
Ml9VTlNJR05FRF9JTlRfMjRfOF9SRVYsIE5VTEwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICApOworICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorCisgICAgcmV0dXJuIG1hcDsKK30KK30gIC8v
IGFub255bW91cyBuYW1lc3BhY2UKKworUGFja1BpeGVsc1BhcmFtczo6UGFja1BpeGVsc1BhcmFt
cygpCisgICAgOiBmb3JtYXQoR0xfTk9ORSksIHR5cGUoR0xfTk9ORSksIG91dHB1dFBpdGNoKDAp
LCBwYWNrQnVmZmVyKG51bGxwdHIpLCBvZmZzZXQoMCkKK3sKK30KKworUGFja1BpeGVsc1BhcmFt
czo6UGFja1BpeGVsc1BhcmFtcyhjb25zdCBnbDo6UmVjdGFuZ2xlICZhcmVhSW4sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXRJbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGVJbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IG91dHB1dFBpdGNoSW4sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFBhY2tTdGF0ZSAmcGFja0luLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0SW4pCisgICAg
OiBhcmVhKGFyZWFJbiksCisgICAgICBmb3JtYXQoZm9ybWF0SW4pLAorICAgICAgdHlwZSh0eXBl
SW4pLAorICAgICAgb3V0cHV0UGl0Y2gob3V0cHV0UGl0Y2hJbiksCisgICAgICBwYWNrQnVmZmVy
KHBhY2tJbi5waXhlbEJ1ZmZlci5nZXQoKSksCisgICAgICBwYWNrKHBhY2tJbi5hbGlnbm1lbnQs
IHBhY2tJbi5yZXZlcnNlUm93T3JkZXIpLAorICAgICAgb2Zmc2V0KG9mZnNldEluKQoreworfQor
Cit2b2lkIFBhY2tQaXhlbHMoY29uc3QgUGFja1BpeGVsc1BhcmFtcyAmcGFyYW1zLAorICAgICAg
ICAgICAgICAgIGNvbnN0IGFuZ2xlOjpGb3JtYXQgJnNvdXJjZUZvcm1hdCwKKyAgICAgICAgICAg
ICAgICBpbnQgaW5wdXRQaXRjaEluLAorICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNv
dXJjZUluLAorICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmRlc3RXaXRob3V0T2Zmc2V0KQorewor
ICAgIHVpbnQ4X3QgKmRlc3RXaXRoT2Zmc2V0ID0gZGVzdFdpdGhvdXRPZmZzZXQgKyBwYXJhbXMu
b2Zmc2V0OworCisgICAgY29uc3QgdWludDhfdCAqc291cmNlID0gc291cmNlSW47CisgICAgaW50
IGlucHV0UGl0Y2ggICAgICAgID0gaW5wdXRQaXRjaEluOworCisgICAgaWYgKHBhcmFtcy5wYWNr
LnJldmVyc2VSb3dPcmRlcikKKyAgICB7CisgICAgICAgIHNvdXJjZSArPSBpbnB1dFBpdGNoICog
KHBhcmFtcy5hcmVhLmhlaWdodCAtIDEpOworICAgICAgICBpbnB1dFBpdGNoID0gLWlucHV0UGl0
Y2g7CisgICAgfQorCisgICAgY29uc3QgYXV0byAmc291cmNlR0xJbmZvID0gZ2w6OkdldEludGVy
bmFsRm9ybWF0SW5mbyhzb3VyY2VGb3JtYXQuZ2xJbnRlcm5hbEZvcm1hdCk7CisKKyAgICBpZiAo
c291cmNlR0xJbmZvLmZvcm1hdCA9PSBwYXJhbXMuZm9ybWF0ICYmIHNvdXJjZUdMSW5mby50eXBl
ID09IHBhcmFtcy50eXBlKQorICAgIHsKKyAgICAgICAgLy8gRGlyZWN0IGNvcHkgcG9zc2libGUK
KyAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBwYXJhbXMuYXJlYS5oZWlnaHQ7ICsreSkKKyAg
ICAgICAgeworICAgICAgICAgICAgbWVtY3B5KGRlc3RXaXRoT2Zmc2V0ICsgeSAqIHBhcmFtcy5v
dXRwdXRQaXRjaCwgc291cmNlICsgeSAqIGlucHV0UGl0Y2gsCisgICAgICAgICAgICAgICAgICAg
cGFyYW1zLmFyZWEud2lkdGggKiBzb3VyY2VHTEluZm8ucGl4ZWxCeXRlcyk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzb3VyY2VHTEluZm8ucGl4ZWxC
eXRlcyA+IDApOworCisgICAgZ2w6OkZvcm1hdFR5cGUgZm9ybWF0VHlwZShwYXJhbXMuZm9ybWF0
LCBwYXJhbXMudHlwZSk7CisgICAgQ29sb3JDb3B5RnVuY3Rpb24gZmFzdENvcHlGdW5jID0KKyAg
ICAgICAgR2V0RmFzdENvcHlGdW5jdGlvbihzb3VyY2VGb3JtYXQuZmFzdENvcHlGdW5jdGlvbnMs
IGZvcm1hdFR5cGUpOworICAgIEdMZW51bSBzaXplZERlc3RJbnRlcm5hbEZvcm1hdCA9IGdsOjpH
ZXRTaXplZEludGVybmFsRm9ybWF0KGZvcm1hdFR5cGUuZm9ybWF0LCBmb3JtYXRUeXBlLnR5cGUp
OworICAgIGNvbnN0IGF1dG8gJmRlc3RGb3JtYXRJbmZvICAgICA9IGdsOjpHZXRJbnRlcm5hbEZv
cm1hdEluZm8oc2l6ZWREZXN0SW50ZXJuYWxGb3JtYXQpOworCisgICAgaWYgKGZhc3RDb3B5RnVu
YykKKyAgICB7CisgICAgICAgIC8vIEZhc3QgY29weSBpcyBwb3NzaWJsZSB0aHJvdWdoIHNvbWUg
c3BlY2lhbCBmdW5jdGlvbgorICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IHBhcmFtcy5hcmVh
LmhlaWdodDsgKyt5KQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8
IHBhcmFtcy5hcmVhLndpZHRoOyArK3gpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
dWludDhfdCAqZGVzdCA9CisgICAgICAgICAgICAgICAgICAgIGRlc3RXaXRoT2Zmc2V0ICsgeSAq
IHBhcmFtcy5vdXRwdXRQaXRjaCArIHggKiBkZXN0Rm9ybWF0SW5mby5waXhlbEJ5dGVzOworICAg
ICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNyYyA9IHNvdXJjZSArIHkgKiBpbnB1dFBpdGNo
ICsgeCAqIHNvdXJjZUdMSW5mby5waXhlbEJ5dGVzOworCisgICAgICAgICAgICAgICAgZmFzdENv
cHlGdW5jKHNyYywgZGVzdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIENvbG9yV3JpdGVGdW5jdGlvbiBjb2xvcldyaXRlRnVuY3Rpb24g
PSBHZXRDb2xvcldyaXRlRnVuY3Rpb24oZm9ybWF0VHlwZSk7CisKKyAgICAvLyBNYXhpbXVtIHNp
emUgb2YgYW55IENvbG9yPFQ+IHR5cGUgdXNlZC4KKyAgICB1aW50OF90IHRlbXBbMTZdOworICAg
IHN0YXRpY19hc3NlcnQoc2l6ZW9mKHRlbXApID49IHNpemVvZihnbDo6Q29sb3JGKSAmJiBzaXpl
b2YodGVtcCkgPj0gc2l6ZW9mKGdsOjpDb2xvclVJKSAmJgorICAgICAgICAgICAgICAgICAgICAg
IHNpemVvZih0ZW1wKSA+PSBzaXplb2YoZ2w6OkNvbG9ySSksCisgICAgICAgICAgICAgICAgICAi
VW5leHBlY3RlZCBzaXplIG9mIGdsOjpDb2xvciBzdHJ1Y3QuIik7CisKKyAgICBjb25zdCBhdXRv
ICZjb2xvclJlYWRGdW5jdGlvbiA9IHNvdXJjZUZvcm1hdC5jb2xvclJlYWRGdW5jdGlvbjsKKwor
ICAgIGZvciAoaW50IHkgPSAwOyB5IDwgcGFyYW1zLmFyZWEuaGVpZ2h0OyArK3kpCisgICAgewor
ICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHBhcmFtcy5hcmVhLndpZHRoOyArK3gpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHVpbnQ4X3QgKmRlc3QgICAgICA9IGRlc3RXaXRoT2Zmc2V0ICsg
eSAqIHBhcmFtcy5vdXRwdXRQaXRjaCArIHggKiBkZXN0Rm9ybWF0SW5mby5waXhlbEJ5dGVzOwor
ICAgICAgICAgICAgY29uc3QgdWludDhfdCAqc3JjID0gc291cmNlICsgeSAqIGlucHV0UGl0Y2gg
KyB4ICogc291cmNlR0xJbmZvLnBpeGVsQnl0ZXM7CisKKyAgICAgICAgICAgIC8vIHJlYWRGdW5j
IGFuZCB3cml0ZUZ1bmMgd2lsbCBiZSB1c2luZyB0aGUgc2FtZSB0eXBlIG9mIGNvbG9yLCBDb3B5
VGV4SW1hZ2UKKyAgICAgICAgICAgIC8vIHdpbGwgbm90IGFsbG93IHRoZSBjb3B5IG90aGVyd2lz
ZS4KKyAgICAgICAgICAgIGNvbG9yUmVhZEZ1bmN0aW9uKHNyYywgdGVtcCk7CisgICAgICAgICAg
ICBjb2xvcldyaXRlRnVuY3Rpb24odGVtcCwgZGVzdCk7CisgICAgICAgIH0KKyAgICB9Cit9CisK
K0NvbG9yV3JpdGVGdW5jdGlvbiBHZXRDb2xvcldyaXRlRnVuY3Rpb24oY29uc3QgZ2w6OkZvcm1h
dFR5cGUgJmZvcm1hdFR5cGUpCit7CisgICAgc3RhdGljIGNvbnN0IEZvcm1hdFdyaXRlRnVuY3Rp
b25NYXAgZm9ybWF0VHlwZU1hcCA9IEJ1aWxkRm9ybWF0V3JpdGVGdW5jdGlvbk1hcCgpOworICAg
IGF1dG8gaXRlciA9IGZvcm1hdFR5cGVNYXAuZmluZChmb3JtYXRUeXBlKTsKKyAgICBBU1NFUlQo
aXRlciAhPSBmb3JtYXRUeXBlTWFwLmVuZCgpKTsKKyAgICBpZiAoaXRlciAhPSBmb3JtYXRUeXBl
TWFwLmVuZCgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGl0ZXItPnNlY29uZDsKKyAgICB9Cisg
ICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorfQorCitDb2xv
ckNvcHlGdW5jdGlvbiBHZXRGYXN0Q29weUZ1bmN0aW9uKGNvbnN0IEZhc3RDb3B5RnVuY3Rpb25N
YXAgJmZhc3RDb3B5RnVuY3Rpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6Rm9ybWF0VHlwZSAmZm9ybWF0VHlwZSkKK3sKKyAgICBhdXRvIGl0ZXIg
PSBmYXN0Q29weUZ1bmN0aW9ucy5maW5kKGZvcm1hdFR5cGUpOworICAgIHJldHVybiAoaXRlciAh
PSBmYXN0Q29weUZ1bmN0aW9ucy5lbmQoKSkgPyBpdGVyLT5zZWNvbmQgOiBudWxscHRyOworfQor
Cit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9yZW5kZXJlcl91dGlscy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9yZW5kZXJlcl91dGlscy5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9yZW5kZXJlcl91dGlscy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA0IEBACisv
LworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworLy8gcmVuZGVyZXJfdXRpbHM6CisvLyAgIEhlbHBlciBtZXRob2RzIHBlcnRhaW5p
bmcgdG8gbW9zdCBvciBhbGwgYmFjay1lbmRzLgorLy8KKworI2lmbmRlZiBMSUJBTkdMRV9SRU5E
RVJFUl9SRU5ERVJFUl9VVElMU19IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9SRU5ERVJF
Ul9VVElMU19IXworCisjaW5jbHVkZSA8Y3N0ZGludD4KKworI2luY2x1ZGUgPG1hcD4KKworI2lu
Y2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMuaCIKKworbmFtZXNwYWNlIGFuZ2xlCit7CitzdHJ1
Y3QgRm9ybWF0OworfQorCituYW1lc3BhY2UgZ2wKK3sKK3N0cnVjdCBGb3JtYXRUeXBlOworc3Ry
dWN0IEludGVybmFsRm9ybWF0OworfQorCituYW1lc3BhY2UgcngKK3sKKwordXNpbmcgTWlwR2Vu
ZXJhdGlvbkZ1bmN0aW9uID0gdm9pZCAoKikoc2l6ZV90IHNvdXJjZVdpZHRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNvdXJjZUhlaWdodCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzb3VyY2VEZXB0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNvdXJj
ZURhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc291
cmNlUm93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgc291cmNlRGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQ4X3QgKmRlc3REYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGRlc3RSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBkZXN0RGVwdGhQaXRjaCk7CisKK3R5cGVkZWYgdm9pZCAoKkNvbG9y
UmVhZEZ1bmN0aW9uKShjb25zdCB1aW50OF90ICpzb3VyY2UsIHVpbnQ4X3QgKmRlc3QpOwordHlw
ZWRlZiB2b2lkICgqQ29sb3JXcml0ZUZ1bmN0aW9uKShjb25zdCB1aW50OF90ICpzb3VyY2UsIHVp
bnQ4X3QgKmRlc3QpOwordHlwZWRlZiB2b2lkICgqQ29sb3JDb3B5RnVuY3Rpb24pKGNvbnN0IHVp
bnQ4X3QgKnNvdXJjZSwgdWludDhfdCAqZGVzdCk7CisKK3R5cGVkZWYgc3RkOjptYXA8Z2w6OkZv
cm1hdFR5cGUsIENvbG9yQ29weUZ1bmN0aW9uPiBGYXN0Q29weUZ1bmN0aW9uTWFwOworCitzdHJ1
Y3QgUGFja1BpeGVsc1BhcmFtcworeworICAgIFBhY2tQaXhlbHNQYXJhbXMoKTsKKyAgICBQYWNr
UGl4ZWxzUGFyYW1zKGNvbnN0IGdsOjpSZWN0YW5nbGUgJmFyZWEsCisgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgb3V0cHV0UGl0Y2gsCisgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6UGl4ZWxQYWNrU3RhdGUgJnBhY2ssCisgICAgICAgICAgICAgICAgICAg
ICBwdHJkaWZmX3Qgb2Zmc2V0KTsKKworICAgIGdsOjpSZWN0YW5nbGUgYXJlYTsKKyAgICBHTGVu
dW0gZm9ybWF0OworICAgIEdMZW51bSB0eXBlOworICAgIEdMdWludCBvdXRwdXRQaXRjaDsKKyAg
ICBnbDo6QnVmZmVyICpwYWNrQnVmZmVyOworICAgIGdsOjpQaXhlbFBhY2tTdGF0ZSBwYWNrOwor
ICAgIHB0cmRpZmZfdCBvZmZzZXQ7Cit9OworCit2b2lkIFBhY2tQaXhlbHMoY29uc3QgUGFja1Bp
eGVsc1BhcmFtcyAmcGFyYW1zLAorICAgICAgICAgICAgICAgIGNvbnN0IGFuZ2xlOjpGb3JtYXQg
JnNvdXJjZUZvcm1hdCwKKyAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwKKyAgICAgICAg
ICAgICAgICBjb25zdCB1aW50OF90ICpzb3VyY2UsCisgICAgICAgICAgICAgICAgdWludDhfdCAq
ZGVzdGluYXRpb24pOworCitDb2xvcldyaXRlRnVuY3Rpb24gR2V0Q29sb3JXcml0ZUZ1bmN0aW9u
KGNvbnN0IGdsOjpGb3JtYXRUeXBlICZmb3JtYXRUeXBlKTsKK0NvbG9yQ29weUZ1bmN0aW9uIEdl
dEZhc3RDb3B5RnVuY3Rpb24oY29uc3QgRmFzdENvcHlGdW5jdGlvbk1hcCAmZmFzdENvcHlGdW5j
dGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpG
b3JtYXRUeXBlICZmb3JtYXRUeXBlKTsKKwordXNpbmcgTG9hZEltYWdlRnVuY3Rpb24gPSB2b2lk
ICgqKShzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBk
ZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAq
aW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJv
d1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRE
ZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpv
dXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRS
b3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1
dERlcHRoUGl0Y2gpOworCitzdHJ1Y3QgTG9hZEltYWdlRnVuY3Rpb25JbmZvCit7CisgICAgTG9h
ZEltYWdlRnVuY3Rpb25JbmZvKCkgOiBsb2FkRnVuY3Rpb24obnVsbHB0ciksIHJlcXVpcmVzQ29u
dmVyc2lvbihmYWxzZSkge30KKyAgICBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZEltYWdlRnVu
Y3Rpb24gbG9hZEZ1bmN0aW9uLCBib29sIHJlcXVpcmVzQ29udmVyc2lvbikKKyAgICAgICAgOiBs
b2FkRnVuY3Rpb24obG9hZEZ1bmN0aW9uKSwgcmVxdWlyZXNDb252ZXJzaW9uKHJlcXVpcmVzQ29u
dmVyc2lvbikKKyAgICB7CisgICAgfQorCisgICAgTG9hZEltYWdlRnVuY3Rpb24gbG9hZEZ1bmN0
aW9uOworICAgIGJvb2wgcmVxdWlyZXNDb252ZXJzaW9uOworfTsKKwordXNpbmcgTG9hZEZ1bmN0
aW9uTWFwID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvICgqKShHTGVudW0pOworCit9ICAvLyBuYW1l
c3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9SRU5ERVJFUl9VVElMU19I
XwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9CdWZmZXJEM0QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvQnVmZmVyRDNELmNwcAkocmV2aXNpb24gMjA3ODA0KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9CdWZm
ZXJEM0QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNyArMTIwLDcgQEAgU3RhdGljVmVydGV4
QnVmZmVySW50ZXJmYWNlICpCdWZmZXJEM0Q6OgogICAgIH0KIAogICAgIC8vIENhY2hlIHNpemUg
bGltaXRpbmc6IENsZWFuLXVwIHRocmVzaG9sZCBpcyBmb3VyIHRpbWVzIHRoZSBiYXNlIGJ1ZmZl
ciBzaXplLCB3aXRoIGEgbWluaW11bS4KLSAgICBBU1NFUlQoSXNVbnNpZ25lZE11bHRpcGxpY2F0
aW9uU2FmZShnZXRTaXplKCksIHN0YXRpY19jYXN0PHNpemVfdD4oNHUpKSk7CisgICAgQVNTRVJU
KGdldFNpemUoKSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLyA0dSk7CiAg
ICAgc2l6ZV90IHNpemVUaHJlc2hvbGQgPSBzdGQ6Om1heChnZXRTaXplKCkgKiA0dSwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PigweDEwMDB1KSk7CiAKICAgICAvLyBJZiB3ZSdyZSBwYXN0IHRoZSB0aHJl
c2hvbGQsIGNsZWFyIHRoZSBidWZmZXIgY2FjaGUuIE5vdGUgdGhhdCB0aGlzIHdpbGwgcmVsZWFz
ZSBidWZmZXJzCkBAIC0xNzksMTEgKzE3OSw3IEBAIGdsOjpFcnJvciBCdWZmZXJEM0Q6OmdldElu
ZGV4UmFuZ2UoR0xlbnUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6Oklu
ZGV4UmFuZ2UgKm91dFJhbmdlKQogewogICAgIGNvbnN0IHVpbnQ4X3QgKmRhdGEgPSBudWxscHRy
OwotICAgIGdsOjpFcnJvciBlcnJvciA9IGdldERhdGEoJmRhdGEpOwotICAgIGlmIChlcnJvci5p
c0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xF
X1RSWShnZXREYXRhKCZkYXRhKSk7CiAKICAgICAqb3V0UmFuZ2UgPSBnbDo6Q29tcHV0ZUluZGV4
UmFuZ2UodHlwZSwgZGF0YSArIG9mZnNldCwgY291bnQsIHByaW1pdGl2ZVJlc3RhcnRFbmFibGVk
KTsKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRGlzcGxheUQzRC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9EaXNwbGF5RDNELmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9EaXNwbGF5RDNELmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOCw2ICs4LDggQEAKIAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9EaXNwbGF5RDNELmgiCiAKKyNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisKICNpbmNsdWRlICJs
aWJBTkdMRS9Db250ZXh0LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvQ29uZmlnLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvRGlzcGxheS5oIgpAQCAtMTksOCArMjEsNiBAQAogI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2QzZC9Td2FwQ2hhaW5EM0QuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvRGV2aWNlRDNELmgiCiAKLSNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+Ci0KICNpZiBk
ZWZpbmVkIChBTkdMRV9FTkFCTEVfRDNEOSkKICMgICBpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkOS9SZW5kZXJlcjkuaCIKICNlbmRpZiAvLyBBTkdMRV9FTkFCTEVfRDNEOQpAQCAt
MTYyLDU1ICsxNjIsMzQgQEAgRGlzcGxheUQzRDo6RGlzcGxheUQzRCgpIDogbVJlbmRlcmVyKG51
bAogewogfQogCi0KLVN1cmZhY2VJbXBsICpEaXNwbGF5RDNEOjpjcmVhdGVXaW5kb3dTdXJmYWNl
KGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAorU3VyZmFjZUltcGwgKkRpc3BsYXlE
M0Q6OmNyZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpD
b25maWcgKmNvbmZpZ3VyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRy
aWJzKQogewogICAgIEFTU0VSVChtUmVuZGVyZXIgIT0gbnVsbHB0cik7Ci0KLSAgICBFR0xpbnQg
d2lkdGggICAgICAgPSBzdGF0aWNfY2FzdDxFR0xpbnQ+KGF0dHJpYnMuZ2V0KEVHTF9XSURUSCwg
MCkpOwotICAgIEVHTGludCBoZWlnaHQgICAgICA9IHN0YXRpY19jYXN0PEVHTGludD4oYXR0cmli
cy5nZXQoRUdMX0hFSUdIVCwgMCkpOwotICAgIEVHTGludCBmaXhlZFNpemUgICA9IHN0YXRpY19j
YXN0PEVHTGludD4oYXR0cmlicy5nZXQoRUdMX0ZJWEVEX1NJWkVfQU5HTEUsIEVHTF9GQUxTRSkp
OwotICAgIEVHTGludCBvcmllbnRhdGlvbiA9IHN0YXRpY19jYXN0PEVHTGludD4oYXR0cmlicy5n
ZXQoRUdMX1NVUkZBQ0VfT1JJRU5UQVRJT05fQU5HTEUsIDApKTsKLSAgICBFR0xpbnQgZGlyZWN0
Q29tcG9zaXRpb24gPQotICAgICAgICBzdGF0aWNfY2FzdDxFR0xpbnQ+KGF0dHJpYnMuZ2V0KEVH
TF9ESVJFQ1RfQ09NUE9TSVRJT05fQU5HTEUsIEVHTF9GQUxTRSkpOwotCi0gICAgaWYgKCFmaXhl
ZFNpemUpCi0gICAgewotICAgICAgICB3aWR0aCA9IC0xOwotICAgICAgICBoZWlnaHQgPSAtMTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gU3VyZmFjZUQzRDo6Y3JlYXRlRnJvbVdpbmRvdyhtUmVuZGVy
ZXIsIG1EaXNwbGF5LCBjb25maWd1cmF0aW9uLCB3aW5kb3csIGZpeGVkU2l6ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RDb21wb3NpdGlvbiwgd2lkdGgs
IGhlaWdodCwgb3JpZW50YXRpb24pOworICAgIHJldHVybiBuZXcgV2luZG93U3VyZmFjZUQzRChz
dGF0ZSwgbVJlbmRlcmVyLCBtRGlzcGxheSwgY29uZmlndXJhdGlvbiwgd2luZG93LCBhdHRyaWJz
KTsKIH0KIAotU3VyZmFjZUltcGwgKkRpc3BsYXlEM0Q6OmNyZWF0ZVBidWZmZXJTdXJmYWNlKGNv
bnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAorU3VyZmFjZUltcGwgKkRpc3BsYXlEM0Q6
OmNyZWF0ZVBidWZmZXJTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNv
bmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKIHsKICAgICBBU1NF
UlQobVJlbmRlcmVyICE9IG51bGxwdHIpOwotCi0gICAgRUdMaW50IHdpZHRoICA9IHN0YXRpY19j
YXN0PEVHTGludD4oYXR0cmlicy5nZXQoRUdMX1dJRFRILCAwKSk7Ci0gICAgRUdMaW50IGhlaWdo
dCA9IHN0YXRpY19jYXN0PEVHTGludD4oYXR0cmlicy5nZXQoRUdMX0hFSUdIVCwgMCkpOwotCi0g
ICAgcmV0dXJuIFN1cmZhY2VEM0Q6OmNyZWF0ZU9mZnNjcmVlbihtUmVuZGVyZXIsIG1EaXNwbGF5
LCBjb25maWd1cmF0aW9uLCBudWxscHRyLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICByZXR1cm4gbmV3
IFBidWZmZXJTdXJmYWNlRDNEKHN0YXRlLCBtUmVuZGVyZXIsIG1EaXNwbGF5LCBjb25maWd1cmF0
aW9uLCBudWxscHRyLCBhdHRyaWJzKTsKIH0KIAotU3VyZmFjZUltcGwgKkRpc3BsYXlEM0Q6OmNy
ZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0
aW9uLAorU3VyZmFjZUltcGwgKkRpc3BsYXlEM0Q6OmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVm
ZmVyKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29u
ZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgc2hhcmVIYW5kbGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1
dGVNYXAgJmF0dHJpYnMpCiB7CiAgICAgQVNTRVJUKG1SZW5kZXJlciAhPSBudWxscHRyKTsKLQot
ICAgIEVHTGludCB3aWR0aCAgPSBzdGF0aWNfY2FzdDxFR0xpbnQ+KGF0dHJpYnMuZ2V0KEVHTF9X
SURUSCwgMCkpOwotICAgIEVHTGludCBoZWlnaHQgPSBzdGF0aWNfY2FzdDxFR0xpbnQ+KGF0dHJp
YnMuZ2V0KEVHTF9IRUlHSFQsIDApKTsKLQotICAgIHJldHVybiBTdXJmYWNlRDNEOjpjcmVhdGVP
ZmZzY3JlZW4oCi0gICAgICAgIG1SZW5kZXJlciwgbURpc3BsYXksIGNvbmZpZ3VyYXRpb24sIHNo
YXJlSGFuZGxlLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICByZXR1cm4gbmV3IFBidWZmZXJTdXJmYWNl
RDNEKHN0YXRlLCBtUmVuZGVyZXIsIG1EaXNwbGF5LCBjb25maWd1cmF0aW9uLCBzaGFyZUhhbmRs
ZSwgYXR0cmlicyk7CiB9CiAKLVN1cmZhY2VJbXBsICpEaXNwbGF5RDNEOjpjcmVhdGVQaXhtYXBT
dXJmYWNlKGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAorU3VyZmFjZUltcGwgKkRp
c3BsYXlEM0Q6OmNyZWF0ZVBpeG1hcFN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0
YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
ZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOYXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRl
TWFwICZhdHRyaWJzKQogewpAQCAtMjMwLDE4ICsyMDksMTggQEAgZWdsOjpFcnJvciBEaXNwbGF5
RDNEOjpnZXREZXZpY2UoRGV2aWNlSQogICAgIHJldHVybiBtUmVuZGVyZXItPmdldEVHTERldmlj
ZShkZXZpY2UpOwogfQogCi1nbDo6Q29udGV4dCAqRGlzcGxheUQzRDo6Y3JlYXRlQ29udGV4dChj
b25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OkNvbnRleHQgKnNoYXJlQ29udGV4dCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJz
KQorQ29udGV4dEltcGwgKkRpc3BsYXlEM0Q6OmNyZWF0ZUNvbnRleHQoY29uc3QgZ2w6OkNvbnRl
eHRTdGF0ZSAmc3RhdGUpCiB7CiAgICAgQVNTRVJUKG1SZW5kZXJlciAhPSBudWxscHRyKTsKLSAg
ICByZXR1cm4gbmV3IGdsOjpDb250ZXh0KGNvbmZpZywgc2hhcmVDb250ZXh0LCBtUmVuZGVyZXIs
IGF0dHJpYnMpOworICAgIHJldHVybiBtUmVuZGVyZXItPmNyZWF0ZUNvbnRleHQoc3RhdGUpOwog
fQogCi1TdHJlYW1JbXBsICpEaXNwbGF5RDNEOjpjcmVhdGVTdHJlYW0oY29uc3QgZWdsOjpBdHRy
aWJ1dGVNYXAgJmF0dHJpYnMpCitTdHJlYW1Qcm9kdWNlckltcGwgKkRpc3BsYXlEM0Q6OmNyZWF0
ZVN0cmVhbVByb2R1Y2VyRDNEVGV4dHVyZU5WMTIoCisgICAgZWdsOjpTdHJlYW06OkNvbnN1bWVy
VHlwZSBjb25zdW1lclR5cGUsCisgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMp
CiB7CiAgICAgQVNTRVJUKG1SZW5kZXJlciAhPSBudWxscHRyKTsKLSAgICByZXR1cm4gbVJlbmRl
cmVyLT5jcmVhdGVTdHJlYW0oYXR0cmlicyk7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Y3JlYXRl
U3RyZWFtUHJvZHVjZXJEM0RUZXh0dXJlTlYxMihjb25zdW1lclR5cGUsIGF0dHJpYnMpOwogfQog
CiBlZ2w6OkVycm9yIERpc3BsYXlEM0Q6Om1ha2VDdXJyZW50KGVnbDo6U3VyZmFjZSAqZHJhd1N1
cmZhY2UsIGVnbDo6U3VyZmFjZSAqcmVhZFN1cmZhY2UsIGdsOjpDb250ZXh0ICpjb250ZXh0KQpA
QCAtMjUzLDEyICsyMzIsNyBAQCBlZ2w6OkVycm9yIERpc3BsYXlEM0Q6OmluaXRpYWxpemUoZWds
OjpECiB7CiAgICAgQVNTRVJUKG1SZW5kZXJlciA9PSBudWxscHRyICYmIGRpc3BsYXkgIT0gbnVs
bHB0cik7CiAgICAgbURpc3BsYXkgPSBkaXNwbGF5OwotICAgIGVnbDo6RXJyb3IgZXJyb3IgPSBD
cmVhdGVSZW5kZXJlckQzRChkaXNwbGF5LCAmbVJlbmRlcmVyKTsKLSAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KLQorICAgIEFOR0xF
X1RSWShDcmVhdGVSZW5kZXJlckQzRChkaXNwbGF5LCAmbVJlbmRlcmVyKSk7CiAgICAgcmV0dXJu
IGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwogfQogCkBAIC0yNjcsMTggKzI0MSwxMiBAQCB2b2lk
IERpc3BsYXlEM0Q6OnRlcm1pbmF0ZSgpCiAgICAgU2FmZURlbGV0ZShtUmVuZGVyZXIpOwogfQog
Ci1lZ2w6OkNvbmZpZ1NldCBEaXNwbGF5RDNEOjpnZW5lcmF0ZUNvbmZpZ3MoKSBjb25zdAorZWds
OjpDb25maWdTZXQgRGlzcGxheUQzRDo6Z2VuZXJhdGVDb25maWdzKCkKIHsKICAgICBBU1NFUlQo
bVJlbmRlcmVyICE9IG51bGxwdHIpOwogICAgIHJldHVybiBtUmVuZGVyZXItPmdlbmVyYXRlQ29u
ZmlncygpOwogfQogCi1ib29sIERpc3BsYXlEM0Q6OmlzRGV2aWNlTG9zdCgpIGNvbnN0Ci17Ci0g
ICAgQVNTRVJUKG1SZW5kZXJlciAhPSBudWxscHRyKTsKLSAgICByZXR1cm4gbVJlbmRlcmVyLT5p
c0RldmljZUxvc3QoKTsKLX0KLQogYm9vbCBEaXNwbGF5RDNEOjp0ZXN0RGV2aWNlTG9zdCgpCiB7
CiAgICAgQVNTRVJUKG1SZW5kZXJlciAhPSBudWxscHRyKTsKQEAgLTMyMCw3ICsyODgsNyBAQCBl
Z2w6OkVycm9yIERpc3BsYXlEM0Q6OnJlc3RvcmVMb3N0RGV2aWNlCiAKIGJvb2wgRGlzcGxheUQz
RDo6aXNWYWxpZE5hdGl2ZVdpbmRvdyhFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdykgY29uc3QK
IHsKLSAgICByZXR1cm4gTmF0aXZlV2luZG93Ojppc1ZhbGlkTmF0aXZlV2luZG93KHdpbmRvdyk7
CisgICAgcmV0dXJuIG1SZW5kZXJlci0+aXNWYWxpZE5hdGl2ZVdpbmRvdyh3aW5kb3cpOwogfQog
CiB2b2lkIERpc3BsYXlEM0Q6OmdlbmVyYXRlRXh0ZW5zaW9ucyhlZ2w6OkRpc3BsYXlFeHRlbnNp
b25zICpvdXRFeHRlbnNpb25zKSBjb25zdApAQCAtMzQ0LDEyICszMTIsMTcgQEAgdm9pZCBEaXNw
bGF5RDNEOjpnZW5lcmF0ZUNhcHMoZWdsOjpDYXBzIAogICAgIC8vIERpc3BsYXkgbXVzdCBiZSBp
bml0aWFsaXplZCB0byBnZW5lcmF0ZSBjYXBzCiAgICAgQVNTRVJUKG1SZW5kZXJlciAhPSBudWxs
cHRyKTsKIAotICAgIG91dENhcHMtPnRleHR1cmVOUE9UID0gbVJlbmRlcmVyLT5nZXRSZW5kZXJl
ckV4dGVuc2lvbnMoKS50ZXh0dXJlTlBPVDsKKyAgICBvdXRDYXBzLT50ZXh0dXJlTlBPVCA9IG1S
ZW5kZXJlci0+Z2V0TmF0aXZlRXh0ZW5zaW9ucygpLnRleHR1cmVOUE9UOwogfQogCiBlZ2w6OkVy
cm9yIERpc3BsYXlEM0Q6OndhaXRDbGllbnQoKSBjb25zdAogewotICAgIC8vIFVuaW1wbGVtZW50
ZWQgYXMgaXQgaXMgYSBub29wIG9uIEQzRAorICAgIGZvciAoYXV0byAmc3VyZmFjZSA6IGdldFN1
cmZhY2VTZXQoKSkKKyAgICB7CisgICAgICAgIFN1cmZhY2VEM0QgKnN1cmZhY2VEM0QgPSBHZXRJ
bXBsQXM8U3VyZmFjZUQzRD4oc3VyZmFjZSk7CisgICAgICAgIHN1cmZhY2VEM0QtPmNoZWNrRm9y
T3V0T2ZEYXRlU3dhcENoYWluKCk7CisgICAgfQorCiAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdM
X1NVQ0NFU1MpOwogfQogCkBAIC0zNTcsNyArMzMwLDI0IEBAIGVnbDo6RXJyb3IgRGlzcGxheUQz
RDo6d2FpdE5hdGl2ZShFR0xpbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
Z2w6OlN1cmZhY2UgKmRyYXdTdXJmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVnbDo6U3VyZmFjZSAqcmVhZFN1cmZhY2UpIGNvbnN0CiB7Ci0gICAgLy8gVW5pbXBsZW1l
bnRlZCBhcyBpdCBpcyBhIG5vb3Agb24gRDNECisgICAgaWYgKGRyYXdTdXJmYWNlICE9IG51bGxw
dHIpCisgICAgeworICAgICAgICBTdXJmYWNlRDNEICpkcmF3U3VyZmFjZUQzRCA9IEdldEltcGxB
czxTdXJmYWNlRDNEPihkcmF3U3VyZmFjZSk7CisgICAgICAgIGRyYXdTdXJmYWNlRDNELT5jaGVj
a0Zvck91dE9mRGF0ZVN3YXBDaGFpbigpOworICAgIH0KKworICAgIGlmIChyZWFkU3VyZmFjZSAh
PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgU3VyZmFjZUQzRCAqcmVhZHVyZmFjZUQzRCA9IEdl
dEltcGxBczxTdXJmYWNlRDNEPihyZWFkU3VyZmFjZSk7CisgICAgICAgIHJlYWR1cmZhY2VEM0Qt
PmNoZWNrRm9yT3V0T2ZEYXRlU3dhcENoYWluKCk7CisgICAgfQorCiAgICAgcmV0dXJuIGVnbDo6
RXJyb3IoRUdMX1NVQ0NFU1MpOwogfQorCitnbDo6VmVyc2lvbiBEaXNwbGF5RDNEOjpnZXRNYXhT
dXBwb3J0ZWRFU1ZlcnNpb24oKSBjb25zdAoreworICAgIHJldHVybiBtUmVuZGVyZXItPmdldE1h
eFN1cHBvcnRlZEVTVmVyc2lvbigpOwogfQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRGlzcGxheUQz
RC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvRGlzcGxheUQzRC5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0Rpc3BsYXlEM0QuaAkod29y
a2luZyBjb3B5KQpAQCAtMjUsMTUgKzI1LDE5IEBAIGNsYXNzIERpc3BsYXlEM0QgOiBwdWJsaWMg
RGlzcGxheUltcGwKICAgICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlKCkgb3ZlcnJpZGU7CiAKICAg
ICAvLyBTdXJmYWNlIGNyZWF0aW9uCi0gICAgU3VyZmFjZUltcGwgKmNyZWF0ZVdpbmRvd1N1cmZh
Y2UoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCisgICAgU3VyZmFjZUltcGwgKmNy
ZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1
cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2ZVdp
bmRvd1R5cGUgd2luZG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKLSAgICBTdXJmYWNlSW1w
bCAqY3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24s
CisgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBidWZmZXJTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFj
ZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsK
LSAgICBTdXJmYWNlSW1wbCAqY3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoY29uc3QgZWds
OjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCisgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBidWZmZXJG
cm9tQ2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcg
KmNvbmZpZ3VyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVHTENsaWVudEJ1ZmZlciBzaGFyZUhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJp
YnMpIG92ZXJyaWRlOwotICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQaXhtYXBTdXJmYWNlKGNvbnN0
IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAorICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQaXht
YXBTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYXRpdmVQaXhtYXBUeXBlIG5h
dGl2ZVBpeG1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBl
Z2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CiAKQEAgLTQxLDE3ICs0NSwxNiBA
QCBjbGFzcyBEaXNwbGF5RDNEIDogcHVibGljIERpc3BsYXlJbXBsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlZ2w6OkltYWdlU2libGluZyAqYnVmZmVyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOwogCi0g
ICAgZ2w6OkNvbnRleHQgKmNyZWF0ZUNvbnRleHQoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Q29udGV4dCAqc2hhcmVD
b250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmli
dXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKKyAgICBDb250ZXh0SW1wbCAqY3JlYXRlQ29udGV4
dChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZzdGF0ZSkgb3ZlcnJpZGU7CiAKLSAgICBTdHJlYW1J
bXBsICpjcmVhdGVTdHJlYW0oY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJy
aWRlOworICAgIFN0cmVhbVByb2R1Y2VySW1wbCAqY3JlYXRlU3RyZWFtUHJvZHVjZXJEM0RUZXh0
dXJlTlYxMigKKyAgICAgICAgZWdsOjpTdHJlYW06OkNvbnN1bWVyVHlwZSBjb25zdW1lclR5cGUs
CisgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKIAog
ICAgIGVnbDo6RXJyb3IgbWFrZUN1cnJlbnQoZWdsOjpTdXJmYWNlICpkcmF3U3VyZmFjZSwgZWds
OjpTdXJmYWNlICpyZWFkU3VyZmFjZSwgZ2w6OkNvbnRleHQgKmNvbnRleHQpIG92ZXJyaWRlOwog
Ci0gICAgZWdsOjpDb25maWdTZXQgZ2VuZXJhdGVDb25maWdzKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgZWdsOjpDb25maWdTZXQgZ2VuZXJhdGVDb25maWdzKCkgb3ZlcnJpZGU7CiAKLSAgICBib29s
IGlzRGV2aWNlTG9zdCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgdGVzdERldmljZUxvc3Qo
KSBvdmVycmlkZTsKICAgICBlZ2w6OkVycm9yIHJlc3RvcmVMb3N0RGV2aWNlKCkgb3ZlcnJpZGU7
CiAKQEAgLTY1LDYgKzY4LDcgQEAgY2xhc3MgRGlzcGxheUQzRCA6IHB1YmxpYyBEaXNwbGF5SW1w
bAogICAgIGVnbDo6RXJyb3Igd2FpdE5hdGl2ZShFR0xpbnQgZW5naW5lLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICBlZ2w6OlN1cmZhY2UgKmRyYXdTdXJmYWNlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBlZ2w6OlN1cmZhY2UgKnJlYWRTdXJmYWNlKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBnbDo6VmVyc2lvbiBnZXRNYXhTdXBwb3J0ZWRFU1ZlcnNpb24oKSBjb25zdCBvdmVycmlkZTsK
IAogICBwcml2YXRlOgogICAgIHZvaWQgZ2VuZXJhdGVFeHRlbnNpb25zKGVnbDo6RGlzcGxheUV4
dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9EeW5hbWljSExTTC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9EeW5hbWljSExTTC5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRHluYW1pY0hMU0wuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MDIsOCArNDAyLDggQEAgdm9pZCBEeW5hbWljSExTTDo6Z2VuZXJh
dGVWYXJ5aW5nTGlua0hMUwogICAgIGxpbmtTdHJlYW0gPDwgIn07XG4iOwogfQogCi1ib29sIER5
bmFtaWNITFNMOjpnZW5lcmF0ZVNoYWRlckxpbmtITFNMKGNvbnN0IGdsOjpEYXRhICZkYXRhLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UHJvZ3Jh
bTo6RGF0YSAmcHJvZ3JhbURhdGEsCitib29sIER5bmFtaWNITFNMOjpnZW5lcmF0ZVNoYWRlckxp
bmtITFNMKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJnByb2dyYW1EYXRh
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQcm9ncmFt
RDNETWV0YWRhdGEgJnByb2dyYW1NZXRhZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVmFyeWluZ1BhY2tpbmcgJnZhcnlpbmdQYWNraW5nLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyAqcGl4ZWxI
TFNMLApAQCAtNDM0LDkgKzQzNCw5IEBAIGJvb2wgRHluYW1pY0hMU0w6OmdlbmVyYXRlU2hhZGVy
TGlua0hMU0wKICAgICBpZiAodXNlSW5zdGFuY2VkUG9pbnRTcHJpdGVFbXVsYXRpb24pCiAgICAg
ewogICAgICAgICB2ZXJ0ZXhTdHJlYW0gPDwgInN0YXRpYyBmbG9hdCBtaW5Qb2ludFNpemUgPSAi
Ci0gICAgICAgICAgICAgICAgICAgICA8PCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGEuY2Fwcy0+bWlu
QWxpYXNlZFBvaW50U2l6ZSkgPDwgIi4wZjtcbiIKKyAgICAgICAgICAgICAgICAgICAgIDw8IHN0
YXRpY19jYXN0PGludD4oZGF0YS5nZXRDYXBzKCkubWluQWxpYXNlZFBvaW50U2l6ZSkgPDwgIi4w
ZjtcbiIKICAgICAgICAgICAgICAgICAgICAgIDw8ICJzdGF0aWMgZmxvYXQgbWF4UG9pbnRTaXpl
ID0gIgotICAgICAgICAgICAgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8aW50PihkYXRhLmNhcHMt
Pm1heEFsaWFzZWRQb2ludFNpemUpIDw8ICIuMGY7XG4iOworICAgICAgICAgICAgICAgICAgICAg
PDwgc3RhdGljX2Nhc3Q8aW50PihkYXRhLmdldENhcHMoKS5tYXhBbGlhc2VkUG9pbnRTaXplKSA8
PCAiLjBmO1xuIjsKICAgICB9CiAKICAgICAvLyBBZGQgc3R1YiBzdHJpbmcgdG8gYmUgcmVwbGFj
ZWQgd2hlbiBzaGFkZXIgaXMgZHluYW1pY2FsbHkgZGVmaW5lZCBieSBpdHMgbGF5b3V0CkBAIC03
MjAsNyArNzIwLDkgQEAgYm9vbCBEeW5hbWljSExTTDo6Z2VuZXJhdGVTaGFkZXJMaW5rSExTTAog
ICAgICAgICBBU1NFUlQoIXZhcnlpbmcuaXNCdWlsdEluKCkgJiYgIXZhcnlpbmcuaXNTdHJ1Y3Qo
KSk7CiAKICAgICAgICAgLy8gRG9uJ3QgcmVmZXJlbmNlIFZTLW9ubHkgdHJhbnNmb3JtIGZlZWRi
YWNrIHZhcnlpbmdzIGluIHRoZSBQUy4KLSAgICAgICAgaWYgKHJlZ2lzdGVySW5mby5wYWNrZWRW
YXJ5aW5nLT52ZXJ0ZXhPbmx5KQorICAgICAgICAvLyBUT0RPOiBDb25zaWRlciB1cGRhdGluZyB0
aGUgZnJhZ21lbnQgc2hhZGVyJ3MgdmFyeWluZ3Mgd2l0aCBhIHBhcmFtZXRlciBzaWduYWxpbmcg
dGhhdCBhCisgICAgICAgIC8vIHZhcnlpbmcgaXMgb25seSB1c2VkIGluIHRoZSB2ZXJ0ZXggc2hh
ZGVyIGluIE1lcmdlVmFyeWluZ3MKKyAgICAgICAgaWYgKHBhY2tlZFZhcnlpbmcudmVydGV4T25s
eSB8fCAoIXZhcnlpbmcuc3RhdGljVXNlICYmICFwYWNrZWRWYXJ5aW5nLmlzU3RydWN0RmllbGQo
KSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBwaXhlbFN0cmVhbSA8PCAiICAg
ICI7CkBAIC04MjUsOCArODI3LDggQEAgc3RkOjpzdHJpbmcgRHluYW1pY0hMU0w6OmdlbmVyYXRl
R2VvbWV0cgogfQogCiBzdGQ6OnN0cmluZyBEeW5hbWljSExTTDo6Z2VuZXJhdGVHZW9tZXRyeVNo
YWRlckhMU0woZ2w6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RGF0YSAmZGF0
YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6UHJvZ3JhbTo6RGF0YSAmcHJvZ3JhbURhdGEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAm
ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9ncmFtRGF0YSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sIHVzZVZpZXdTY2Fs
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyAmcHJlYW1ibGVTdHJpbmcpIGNvbnN0CiB7CkBAIC05MDMsMTAgKzkw
NSwxMCBAQCBzdGQ6OnN0cmluZyBEeW5hbWljSExTTDo6Z2VuZXJhdGVHZW9tZXRyCiAgICAgICAg
ICAgICAgICAgICAgICAgICAifTtcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKICAg
ICAgICAgICAgICAgICAgICAgICAgICJzdGF0aWMgZmxvYXQgbWluUG9pbnRTaXplID0gIgotICAg
ICAgICAgICAgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8aW50PihkYXRhLmNhcHMtPm1pbkFsaWFz
ZWRQb2ludFNpemUpCisgICAgICAgICAgICAgICAgICAgICA8PCBzdGF0aWNfY2FzdDxpbnQ+KGRh
dGEuZ2V0Q2FwcygpLm1pbkFsaWFzZWRQb2ludFNpemUpCiAgICAgICAgICAgICAgICAgICAgICA8
PCAiLjBmO1xuIgogICAgICAgICAgICAgICAgICAgICAgICAgInN0YXRpYyBmbG9hdCBtYXhQb2lu
dFNpemUgPSAiCi0gICAgICAgICAgICAgICAgICAgICA8PCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGEu
Y2Fwcy0+bWF4QWxpYXNlZFBvaW50U2l6ZSkgPDwgIi4wZjtcbiIKKyAgICAgICAgICAgICAgICAg
ICAgIDw8IHN0YXRpY19jYXN0PGludD4oZGF0YS5nZXRDYXBzKCkubWF4QWxpYXNlZFBvaW50U2l6
ZSkgPDwgIi4wZjtcbiIKICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiI7CiAgICAgfQogCkBA
IC0xMDI5LDggKzEwMzEsOCBAQCBzdGQ6OnN0cmluZyBEeW5hbWljSExTTDo6Z2VuZXJhdGVBdHRy
aWJ1CiAgICAgcmV0dXJuIGF0dHJpYlN0cmluZzsKIH0KIAotdm9pZCBEeW5hbWljSExTTDo6Z2V0
UGl4ZWxTaGFkZXJPdXRwdXRLZXkoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbTo6RGF0YSAmcHJv
Z3JhbURhdGEsCit2b2lkIER5bmFtaWNITFNMOjpnZXRQaXhlbFNoYWRlck91dHB1dEtleShjb25z
dCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3JhbURhdGEsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQcm9ncmFtRDNETWV0YWRh
dGEgJm1ldGFkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjp2ZWN0b3I8UGl4ZWxTaGFkZXJPdXRwdXRWYXJpYWJsZT4gKm91dFBpeGVsU2hhZGVyS2V5
KQogewpAQCAtMTAzOSw3ICsxMDQxLDcgQEAgdm9pZCBEeW5hbWljSExTTDo6Z2V0UGl4ZWxTaGFk
ZXJPdXRwdXRLZQogICAgIC8vIC0gd2l0aCBhIDIuMCBjb250ZXh0LCB0aGUgb3V0cHV0IGNvbG9y
IGlzIGJyb2FkY2FzdCB0byBhbGwgY2hhbm5lbHMKICAgICBib29sIGJyb2FkY2FzdCA9IG1ldGFk
YXRhLnVzZXNCcm9hZGNhc3QoZGF0YSk7CiAgICAgY29uc3QgdW5zaWduZWQgaW50IG51bVJlbmRl
clRhcmdldHMgPQotICAgICAgICAoYnJvYWRjYXN0IHx8IG1ldGFkYXRhLnVzZXNNdWx0aXBsZUZy
YWdtZW50T3V0cygpID8gZGF0YS5jYXBzLT5tYXhEcmF3QnVmZmVycyA6IDEpOworICAgICAgICAo
YnJvYWRjYXN0IHx8IG1ldGFkYXRhLnVzZXNNdWx0aXBsZUZyYWdtZW50T3V0cygpID8gZGF0YS5n
ZXRDYXBzKCkubWF4RHJhd0J1ZmZlcnMgOiAxKTsKIAogICAgIGlmIChtZXRhZGF0YS5nZXRNYWpv
clNoYWRlclZlcnNpb24oKSA8IDMwMCkKICAgICB7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0R5bmFtaWNITFNMLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9EeW5h
bWljSExTTC5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0R5bmFtaWNITFNMLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDcgKzMwLDYgQEAgbmFtZXNwYWNlIGdsCiBjbGFzcyBJbmZvTG9nOwogc3RydWN0IFZhcmlh
YmxlTG9jYXRpb247CiBzdHJ1Y3QgVmVydGV4QXR0cmlidXRlOwotc3RydWN0IERhdGE7CiB9CiAK
IG5hbWVzcGFjZSByeApAQCAtNjIsOCArNjEsOCBAQCBjbGFzcyBEeW5hbWljSExTTCA6IGFuZ2xl
OjpOb25Db3B5YWJsZQogICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxQaXhlbFNoYWRlck91dHB1
dFZhcmlhYmxlPiAmb3V0cHV0VmFyaWFibGVzLAogICAgICAgICBib29sIHVzZXNGcmFnRGVwdGgs
CiAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEdMZW51bT4gJm91dHB1dExheW91dCkgY29uc3Q7
Ci0gICAgYm9vbCBnZW5lcmF0ZVNoYWRlckxpbmtITFNMKGNvbnN0IGdsOjpEYXRhICZkYXRhLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbTo6RGF0YSAm
cHJvZ3JhbURhdGEsCisgICAgYm9vbCBnZW5lcmF0ZVNoYWRlckxpbmtITFNMKGNvbnN0IGdsOjpD
b250ZXh0U3RhdGUgJmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpQcm9ncmFtU3RhdGUgJnByb2dyYW1EYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBQcm9ncmFtRDNETWV0YWRhdGEgJnByb2dyYW1NZXRhZGF0YSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmFyeWluZ1BhY2tpbmcgJnZhcnlpbmdQ
YWNraW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyAqcGl4
ZWxITFNMLApAQCAtNzIsMTMgKzcxLDEzIEBAIGNsYXNzIER5bmFtaWNITFNMIDogYW5nbGU6Ok5v
bkNvcHlhYmxlCiAgICAgc3RkOjpzdHJpbmcgZ2VuZXJhdGVHZW9tZXRyeVNoYWRlclByZWFtYmxl
KGNvbnN0IFZhcnlpbmdQYWNraW5nICZ2YXJ5aW5nUGFja2luZykgY29uc3Q7CiAKICAgICBzdGQ6
OnN0cmluZyBnZW5lcmF0ZUdlb21ldHJ5U2hhZGVySExTTChnbDo6UHJpbWl0aXZlVHlwZSBwcmlt
aXRpdmVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpEYXRhICZkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpQcm9ncmFtOjpEYXRhICZwcm9ncmFtRGF0YSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Q29udGV4dFN0YXRlICZk
YXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpQcm9ncmFtU3RhdGUgJnByb2dyYW1EYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wgdXNlVmlld1NjYWxlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZwcmVhbWJsZVN0
cmluZykgY29uc3Q7CiAKLSAgICB2b2lkIGdldFBpeGVsU2hhZGVyT3V0cHV0S2V5KGNvbnN0IGds
OjpEYXRhICZkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OlByb2dyYW06OkRhdGEgJnByb2dyYW1EYXRhLAorICAgIHZvaWQgZ2V0UGl4ZWxTaGFkZXJPdXRw
dXRLZXkoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJnByb2dyYW1EYXRhLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHJvZ3JhbUQzRE1ldGFkYXRhICZtZXRh
ZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPFBpeGVs
U2hhZGVyT3V0cHV0VmFyaWFibGU+ICpvdXRQaXhlbFNoYWRlcktleSk7CiAKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRnJhbWVidWZmZXJE
M0QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvRnJhbWVidWZmZXJEM0QuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0ZyYW1lYnVm
ZmVyRDNELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMsNiArMTMsNyBAQAogI2luY2x1ZGUgImxp
YkFOR0xFL0ZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRnJhbWVidWZmZXJBdHRh
Y2htZW50LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvU3VyZmFjZS5oIgorI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL0NvbnRleHRJbXBsLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
ZDNkL1JlbmRlcmVyRDNELmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRl
cmJ1ZmZlckQzRC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5kZXJUYXJn
ZXREM0QuaCIKQEAgLTg1LDcgKzg2LDcgQEAgQ2xlYXJQYXJhbWV0ZXJzIEdldENsZWFyUGFyYW1l
dGVycyhjb25zdAogCiB9CiAKLUZyYW1lYnVmZmVyRDNEOjpGcmFtZWJ1ZmZlckQzRChjb25zdCBn
bDo6RnJhbWVidWZmZXI6OkRhdGEgJmRhdGEsIFJlbmRlcmVyRDNEICpyZW5kZXJlcikKK0ZyYW1l
YnVmZmVyRDNEOjpGcmFtZWJ1ZmZlckQzRChjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmZGF0
YSwgUmVuZGVyZXJEM0QgKnJlbmRlcmVyKQogICAgIDogRnJhbWVidWZmZXJJbXBsKGRhdGEpLCBt
UmVuZGVyZXIocmVuZGVyZXIpCiB7CiB9CkBAIC05NCwyMCArOTUsMTkgQEAgRnJhbWVidWZmZXJE
M0Q6On5GcmFtZWJ1ZmZlckQzRCgpCiB7CiB9CiAKLWdsOjpFcnJvciBGcmFtZWJ1ZmZlckQzRDo6
Y2xlYXIoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIEdMYml0ZmllbGQgbWFzaykKK2dsOjpFcnJvciBG
cmFtZWJ1ZmZlckQzRDo6Y2xlYXIoQ29udGV4dEltcGwgKmNvbnRleHQsIEdMYml0ZmllbGQgbWFz
aykKIHsKLSAgICBjb25zdCBnbDo6U3RhdGUgJnN0YXRlID0gKmRhdGEuc3RhdGU7Ci0gICAgQ2xl
YXJQYXJhbWV0ZXJzIGNsZWFyUGFyYW1zID0gR2V0Q2xlYXJQYXJhbWV0ZXJzKHN0YXRlLCBtYXNr
KTsKLSAgICByZXR1cm4gY2xlYXIoZGF0YSwgY2xlYXJQYXJhbXMpOworICAgIENsZWFyUGFyYW1l
dGVycyBjbGVhclBhcmFtcyA9IEdldENsZWFyUGFyYW1ldGVycyhjb250ZXh0LT5nZXRHTFN0YXRl
KCksIG1hc2spOworICAgIHJldHVybiBjbGVhckltcGwoY29udGV4dCwgY2xlYXJQYXJhbXMpOwog
fQogCi1nbDo6RXJyb3IgRnJhbWVidWZmZXJEM0Q6OmNsZWFyQnVmZmVyZnYoY29uc3QgZ2w6OkRh
dGEgJmRhdGEsCitnbDo6RXJyb3IgRnJhbWVidWZmZXJEM0Q6OmNsZWFyQnVmZmVyZnYoQ29udGV4
dEltcGwgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBkcmF3YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKnZhbHVlcykKIHsKICAgICAvLyBnbENsZWFyQnVmZmVyZnYgY2FuIGJl
IGNhbGxlZCB0byBjbGVhciB0aGUgY29sb3IgYnVmZmVyIG9yIGRlcHRoIGJ1ZmZlcgotICAgIENs
ZWFyUGFyYW1ldGVycyBjbGVhclBhcmFtcyA9IEdldENsZWFyUGFyYW1ldGVycygqZGF0YS5zdGF0
ZSwgMCk7CisgICAgQ2xlYXJQYXJhbWV0ZXJzIGNsZWFyUGFyYW1zID0gR2V0Q2xlYXJQYXJhbWV0
ZXJzKGNvbnRleHQtPmdldEdMU3RhdGUoKSwgMCk7CiAKICAgICBpZiAoYnVmZmVyID09IEdMX0NP
TE9SKQogICAgIHsKQEAgLTEyNSwxNiArMTI1LDE2IEBAIGdsOjpFcnJvciBGcmFtZWJ1ZmZlckQz
RDo6Y2xlYXJCdWZmZXJmdigKICAgICAgICAgY2xlYXJQYXJhbXMuZGVwdGhDbGVhclZhbHVlID0g
dmFsdWVzWzBdOwogICAgIH0KIAotICAgIHJldHVybiBjbGVhcihkYXRhLCBjbGVhclBhcmFtcyk7
CisgICAgcmV0dXJuIGNsZWFySW1wbChjb250ZXh0LCBjbGVhclBhcmFtcyk7CiB9CiAKLWdsOjpF
cnJvciBGcmFtZWJ1ZmZlckQzRDo6Y2xlYXJCdWZmZXJ1aXYoY29uc3QgZ2w6OkRhdGEgJmRhdGEs
CitnbDo6RXJyb3IgRnJhbWVidWZmZXJEM0Q6OmNsZWFyQnVmZmVydWl2KENvbnRleHRJbXBsICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBk
cmF3YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTHVpbnQgKnZhbHVlcykKIHsKICAgICAvLyBnbENsZWFyQnVmZmVydWl2IGNhbiBvbmx5IGJl
IGNhbGxlZCB0byBjbGVhciBhIGNvbG9yIGJ1ZmZlcgotICAgIENsZWFyUGFyYW1ldGVycyBjbGVh
clBhcmFtcyA9IEdldENsZWFyUGFyYW1ldGVycygqZGF0YS5zdGF0ZSwgMCk7CisgICAgQ2xlYXJQ
YXJhbWV0ZXJzIGNsZWFyUGFyYW1zID0gR2V0Q2xlYXJQYXJhbWV0ZXJzKGNvbnRleHQtPmdldEdM
U3RhdGUoKSwgMCk7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBBcnJheVNpemUo
Y2xlYXJQYXJhbXMuY2xlYXJDb2xvcik7IGkrKykKICAgICB7CiAgICAgICAgIGNsZWFyUGFyYW1z
LmNsZWFyQ29sb3JbaV0gPSAoZHJhd2J1ZmZlciA9PSBzdGF0aWNfY2FzdDxpbnQ+KGkpKTsKQEAg
LTE0MiwxNiArMTQyLDE2IEBAIGdsOjpFcnJvciBGcmFtZWJ1ZmZlckQzRDo6Y2xlYXJCdWZmZXJ1
aXYKICAgICBjbGVhclBhcmFtcy5jb2xvclVJQ2xlYXJWYWx1ZSA9IGdsOjpDb2xvclVJKHZhbHVl
c1swXSwgdmFsdWVzWzFdLCB2YWx1ZXNbMl0sIHZhbHVlc1szXSk7CiAgICAgY2xlYXJQYXJhbXMu
Y29sb3JDbGVhclR5cGUgPSBHTF9VTlNJR05FRF9JTlQ7CiAKLSAgICByZXR1cm4gY2xlYXIoZGF0
YSwgY2xlYXJQYXJhbXMpOworICAgIHJldHVybiBjbGVhckltcGwoY29udGV4dCwgY2xlYXJQYXJh
bXMpOwogfQogCi1nbDo6RXJyb3IgRnJhbWVidWZmZXJEM0Q6OmNsZWFyQnVmZmVyaXYoY29uc3Qg
Z2w6OkRhdGEgJmRhdGEsCitnbDo6RXJyb3IgRnJhbWVidWZmZXJEM0Q6OmNsZWFyQnVmZmVyaXYo
Q29udGV4dEltcGwgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBkcmF3YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZXMpCiB7CiAgICAgLy8gZ2xDbGVhckJ1ZmZlcml2IGNh
biBiZSBjYWxsZWQgdG8gY2xlYXIgdGhlIGNvbG9yIGJ1ZmZlciBvciBzdGVuY2lsIGJ1ZmZlcgot
ICAgIENsZWFyUGFyYW1ldGVycyBjbGVhclBhcmFtcyA9IEdldENsZWFyUGFyYW1ldGVycygqZGF0
YS5zdGF0ZSwgMCk7CisgICAgQ2xlYXJQYXJhbWV0ZXJzIGNsZWFyUGFyYW1zID0gR2V0Q2xlYXJQ
YXJhbWV0ZXJzKGNvbnRleHQtPmdldEdMU3RhdGUoKSwgMCk7CiAKICAgICBpZiAoYnVmZmVyID09
IEdMX0NPTE9SKQogICAgIHsKQEAgLTE2OSwyOCArMTY5LDI4IEBAIGdsOjpFcnJvciBGcmFtZWJ1
ZmZlckQzRDo6Y2xlYXJCdWZmZXJpdigKICAgICAgICAgY2xlYXJQYXJhbXMuc3RlbmNpbENsZWFy
VmFsdWUgPSB2YWx1ZXNbMV07CiAgICAgfQogCi0gICAgcmV0dXJuIGNsZWFyKGRhdGEsIGNsZWFy
UGFyYW1zKTsKKyAgICByZXR1cm4gY2xlYXJJbXBsKGNvbnRleHQsIGNsZWFyUGFyYW1zKTsKIH0K
IAotZ2w6OkVycm9yIEZyYW1lYnVmZmVyRDNEOjpjbGVhckJ1ZmZlcmZpKGNvbnN0IGdsOjpEYXRh
ICZkYXRhLAorZ2w6OkVycm9yIEZyYW1lYnVmZmVyRDNEOjpjbGVhckJ1ZmZlcmZpKENvbnRleHRJ
bXBsICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgZHJhd2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGZsb2F0IGRlcHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHN0ZW5jaWwpCiB7CiAgICAgLy8gZ2xDbGVhckJ1ZmZlcmZpIGNhbiBvbmx5IGJlIGNhbGxl
ZCB0byBjbGVhciBhIGRlcHRoIHN0ZW5jaWwgYnVmZmVyCi0gICAgQ2xlYXJQYXJhbWV0ZXJzIGNs
ZWFyUGFyYW1zICAgPSBHZXRDbGVhclBhcmFtZXRlcnMoKmRhdGEuc3RhdGUsIDApOworICAgIENs
ZWFyUGFyYW1ldGVycyBjbGVhclBhcmFtcyAgID0gR2V0Q2xlYXJQYXJhbWV0ZXJzKGNvbnRleHQt
PmdldEdMU3RhdGUoKSwgMCk7CiAgICAgY2xlYXJQYXJhbXMuY2xlYXJEZXB0aCA9IHRydWU7CiAg
ICAgY2xlYXJQYXJhbXMuZGVwdGhDbGVhclZhbHVlID0gZGVwdGg7CiAgICAgY2xlYXJQYXJhbXMu
Y2xlYXJTdGVuY2lsID0gdHJ1ZTsKICAgICBjbGVhclBhcmFtcy5zdGVuY2lsQ2xlYXJWYWx1ZSA9
IHN0ZW5jaWw7CiAKLSAgICByZXR1cm4gY2xlYXIoZGF0YSwgY2xlYXJQYXJhbXMpOworICAgIHJl
dHVybiBjbGVhckltcGwoY29udGV4dCwgY2xlYXJQYXJhbXMpOwogfQogCiBHTGVudW0gRnJhbWVi
dWZmZXJEM0Q6OmdldEltcGxlbWVudGF0aW9uQ29sb3JSZWFkRm9ybWF0KCkgY29uc3QKIHsKLSAg
ICBjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICpyZWFkQXR0YWNobWVudCA9IG1EYXRh
LmdldFJlYWRBdHRhY2htZW50KCk7CisgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVu
dCAqcmVhZEF0dGFjaG1lbnQgPSBtU3RhdGUuZ2V0UmVhZEF0dGFjaG1lbnQoKTsKIAogICAgIGlm
IChyZWFkQXR0YWNobWVudCA9PSBudWxscHRyKQogICAgIHsKQEAgLTIwNywxMiArMjA3LDEyIEBA
IEdMZW51bSBGcmFtZWJ1ZmZlckQzRDo6Z2V0SW1wbGVtZW50YXRpb24KICAgICBHTGVudW0gaW1w
bGVtZW50YXRpb25Gb3JtYXQgPSBnZXRSZW5kZXJUYXJnZXRJbXBsZW1lbnRhdGlvbkZvcm1hdChh
dHRhY2htZW50UmVuZGVyVGFyZ2V0KTsKICAgICBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJmlt
cGxlbWVudGF0aW9uRm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oaW1wbGVt
ZW50YXRpb25Gb3JtYXQpOwogCi0gICAgcmV0dXJuIGltcGxlbWVudGF0aW9uRm9ybWF0SW5mby5m
b3JtYXQ7CisgICAgcmV0dXJuIGltcGxlbWVudGF0aW9uRm9ybWF0SW5mby5nZXRSZWFkUGl4ZWxz
Rm9ybWF0KCk7CiB9CiAKIEdMZW51bSBGcmFtZWJ1ZmZlckQzRDo6Z2V0SW1wbGVtZW50YXRpb25D
b2xvclJlYWRUeXBlKCkgY29uc3QKIHsKLSAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2ht
ZW50ICpyZWFkQXR0YWNobWVudCA9IG1EYXRhLmdldFJlYWRBdHRhY2htZW50KCk7CisgICAgY29u
c3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqcmVhZEF0dGFjaG1lbnQgPSBtU3RhdGUuZ2V0
UmVhZEF0dGFjaG1lbnQoKTsKIAogICAgIGlmIChyZWFkQXR0YWNobWVudCA9PSBudWxscHRyKQog
ICAgIHsKQEAgLTIyOSw1NiArMjI5LDY3IEBAIEdMZW51bSBGcmFtZWJ1ZmZlckQzRDo6Z2V0SW1w
bGVtZW50YXRpb24KICAgICBHTGVudW0gaW1wbGVtZW50YXRpb25Gb3JtYXQgPSBnZXRSZW5kZXJU
YXJnZXRJbXBsZW1lbnRhdGlvbkZvcm1hdChhdHRhY2htZW50UmVuZGVyVGFyZ2V0KTsKICAgICBj
b25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJmltcGxlbWVudGF0aW9uRm9ybWF0SW5mbyA9IGdsOjpH
ZXRJbnRlcm5hbEZvcm1hdEluZm8oaW1wbGVtZW50YXRpb25Gb3JtYXQpOwogCi0gICAgcmV0dXJu
IGltcGxlbWVudGF0aW9uRm9ybWF0SW5mby50eXBlOworICAgIHJldHVybiBpbXBsZW1lbnRhdGlv
bkZvcm1hdEluZm8uZ2V0UmVhZFBpeGVsc1R5cGUoKTsKIH0KIAotZ2w6OkVycm9yIEZyYW1lYnVm
ZmVyRDNEOjpyZWFkUGl4ZWxzKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpSZWN0
YW5nbGUgJmFyZWEsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZvaWQgKnBpeGVscykg
Y29uc3QKK2dsOjpFcnJvciBGcmFtZWJ1ZmZlckQzRDo6cmVhZFBpeGVscyhDb250ZXh0SW1wbCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
UmVjdGFuZ2xlICZhcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x2b2lkICpwaXhl
bHMpIGNvbnN0CiB7Ci0gICAgY29uc3QgZ2w6OlBpeGVsUGFja1N0YXRlICZwYWNrU3RhdGUgPSBz
dGF0ZS5nZXRQYWNrU3RhdGUoKTsKKyAgICBjb25zdCBnbDo6UGl4ZWxQYWNrU3RhdGUgJnBhY2tT
dGF0ZSA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRQYWNrU3RhdGUoKTsKIAogICAgIEdMZW51
bSBzaXplZEludGVybmFsRm9ybWF0ID0gZ2w6OkdldFNpemVkSW50ZXJuYWxGb3JtYXQoZm9ybWF0
LCB0eXBlKTsKICAgICBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJnNpemVkRm9ybWF0SW5mbyA9
IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oc2l6ZWRJbnRlcm5hbEZvcm1hdCk7Ci0gICAgR0x1
aW50IG91dHB1dFBpdGNoID0KLSAgICAgICAgc2l6ZWRGb3JtYXRJbmZvLmNvbXB1dGVSb3dQaXRj
aCh0eXBlLCBhcmVhLndpZHRoLCBwYWNrU3RhdGUuYWxpZ25tZW50LCBwYWNrU3RhdGUucm93TGVu
Z3RoKTsKLSAgICBHTHNpemVpIG91dHB1dFNraXBCeXRlcyA9IHNpemVkRm9ybWF0SW5mby5jb21w
dXRlU2tpcFBpeGVscygKLSAgICAgICAgb3V0cHV0UGl0Y2gsIDAsIDAsIHBhY2tTdGF0ZS5za2lw
Um93cywgcGFja1N0YXRlLnNraXBQaXhlbHMpOworCisgICAgR0x1aW50IG91dHB1dFBpdGNoID0g
MDsKKyAgICBBTkdMRV9UUllfUkVTVUxUKAorICAgICAgICBzaXplZEZvcm1hdEluZm8uY29tcHV0
ZVJvd1BpdGNoKHR5cGUsIGFyZWEud2lkdGgsIHBhY2tTdGF0ZS5hbGlnbm1lbnQsIHBhY2tTdGF0
ZS5yb3dMZW5ndGgpLAorICAgICAgICBvdXRwdXRQaXRjaCk7CisgICAgR0x1aW50IG91dHB1dFNr
aXBCeXRlcyA9IDA7CisgICAgQU5HTEVfVFJZX1JFU1VMVChzaXplZEZvcm1hdEluZm8uY29tcHV0
ZVNraXBCeXRlcyhvdXRwdXRQaXRjaCwgMCwgcGFja1N0YXRlLCBmYWxzZSksCisgICAgICAgICAg
ICAgICAgICAgICBvdXRwdXRTa2lwQnl0ZXMpOwogCiAgICAgcmV0dXJuIHJlYWRQaXhlbHNJbXBs
KGFyZWEsIGZvcm1hdCwgdHlwZSwgb3V0cHV0UGl0Y2gsIHBhY2tTdGF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90ICo+KHBpeGVscykgKyBvdXRw
dXRTa2lwQnl0ZXMpOwogfQogCi1nbDo6RXJyb3IgRnJhbWVidWZmZXJEM0Q6OmJsaXQoY29uc3Qg
Z2w6OlN0YXRlICZzdGF0ZSwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwgY29uc3Qg
Z2w6OlJlY3RhbmdsZSAmZGVzdEFyZWEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xiaXRmaWVsZCBtYXNrLCBHTGVudW0gZmlsdGVyLCBjb25zdCBnbDo6RnJhbWVidWZmZXIgKnNv
dXJjZUZyYW1lYnVmZmVyKQorZ2w6OkVycm9yIEZyYW1lYnVmZmVyRDNEOjpibGl0KENvbnRleHRJ
bXBsICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpS
ZWN0YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OlJlY3RhbmdsZSAmZGVzdEFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xiaXRmaWVsZCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBmaWx0ZXIpCiB7CisgICAgY29uc3QgYXV0byAmZ2xTdGF0ZSAgICAgICAgICAgICAgICAgICAg
ICA9IGNvbnRleHQtPmdldEdMU3RhdGUoKTsKKyAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKnNv
dXJjZUZyYW1lYnVmZmVyID0gZ2xTdGF0ZS5nZXRSZWFkRnJhbWVidWZmZXIoKTsKICAgICBib29s
IGJsaXRSZW5kZXJUYXJnZXQgPSBmYWxzZTsKLSAgICBpZiAoKG1hc2sgJiBHTF9DT0xPUl9CVUZG
RVJfQklUKSAmJgotICAgICAgICBzb3VyY2VGcmFtZWJ1ZmZlci0+Z2V0UmVhZENvbG9yYnVmZmVy
KCkgIT0gbnVsbHB0ciAmJgotICAgICAgICBtRGF0YS5nZXRGaXJzdENvbG9yQXR0YWNobWVudCgp
ICE9IG51bGxwdHIpCisgICAgaWYgKChtYXNrICYgR0xfQ09MT1JfQlVGRkVSX0JJVCkgJiYgc291
cmNlRnJhbWVidWZmZXItPmdldFJlYWRDb2xvcmJ1ZmZlcigpICE9IG51bGxwdHIgJiYKKyAgICAg
ICAgbVN0YXRlLmdldEZpcnN0Q29sb3JBdHRhY2htZW50KCkgIT0gbnVsbHB0cikKICAgICB7CiAg
ICAgICAgIGJsaXRSZW5kZXJUYXJnZXQgPSB0cnVlOwogICAgIH0KIAogICAgIGJvb2wgYmxpdFN0
ZW5jaWwgPSBmYWxzZTsKLSAgICBpZiAoKG1hc2sgJiBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpICYm
Ci0gICAgICAgIHNvdXJjZUZyYW1lYnVmZmVyLT5nZXRTdGVuY2lsYnVmZmVyKCkgIT0gbnVsbHB0
ciAmJgotICAgICAgICBtRGF0YS5nZXRTdGVuY2lsQXR0YWNobWVudCgpICE9IG51bGxwdHIpCisg
ICAgaWYgKChtYXNrICYgR0xfU1RFTkNJTF9CVUZGRVJfQklUKSAmJiBzb3VyY2VGcmFtZWJ1ZmZl
ci0+Z2V0U3RlbmNpbGJ1ZmZlcigpICE9IG51bGxwdHIgJiYKKyAgICAgICAgbVN0YXRlLmdldFN0
ZW5jaWxBdHRhY2htZW50KCkgIT0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIGJsaXRTdGVuY2ls
ID0gdHJ1ZTsKICAgICB9CiAKICAgICBib29sIGJsaXREZXB0aCA9IGZhbHNlOwotICAgIGlmICgo
bWFzayAmIEdMX0RFUFRIX0JVRkZFUl9CSVQpICYmCi0gICAgICAgIHNvdXJjZUZyYW1lYnVmZmVy
LT5nZXREZXB0aGJ1ZmZlcigpICE9IG51bGxwdHIgJiYKLSAgICAgICAgbURhdGEuZ2V0RGVwdGhB
dHRhY2htZW50KCkgIT0gbnVsbHB0cikKKyAgICBpZiAoKG1hc2sgJiBHTF9ERVBUSF9CVUZGRVJf
QklUKSAmJiBzb3VyY2VGcmFtZWJ1ZmZlci0+Z2V0RGVwdGhidWZmZXIoKSAhPSBudWxscHRyICYm
CisgICAgICAgIG1TdGF0ZS5nZXREZXB0aEF0dGFjaG1lbnQoKSAhPSBudWxscHRyKQogICAgIHsK
ICAgICAgICAgYmxpdERlcHRoID0gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAoYmxpdFJlbmRlclRh
cmdldCB8fCBibGl0RGVwdGggfHwgYmxpdFN0ZW5jaWwpCiAgICAgewotICAgICAgICBjb25zdCBn
bDo6UmVjdGFuZ2xlICpzY2lzc29yID0gc3RhdGUuaXNTY2lzc29yVGVzdEVuYWJsZWQoKSA/ICZz
dGF0ZS5nZXRTY2lzc29yKCkgOiBOVUxMOwotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBibGl0
KHNvdXJjZUFyZWEsIGRlc3RBcmVhLCBzY2lzc29yLCBibGl0UmVuZGVyVGFyZ2V0LCBibGl0RGVw
dGgsIGJsaXRTdGVuY2lsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciwg
c291cmNlRnJhbWVidWZmZXIpOworICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICpzY2lzc29y
ID0KKyAgICAgICAgICAgIGdsU3RhdGUuaXNTY2lzc29yVGVzdEVuYWJsZWQoKSA/ICZnbFN0YXRl
LmdldFNjaXNzb3IoKSA6IG51bGxwdHI7CisgICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGJsaXRJ
bXBsKHNvdXJjZUFyZWEsIGRlc3RBcmVhLCBzY2lzc29yLCBibGl0UmVuZGVyVGFyZ2V0LCBibGl0
RGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsaXRTdGVuY2lsLCBm
aWx0ZXIsIHNvdXJjZUZyYW1lYnVmZmVyKTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGVycm9yOwpAQCAtMjkyLDM0ICszMDMsMjAg
QEAgYm9vbCBGcmFtZWJ1ZmZlckQzRDo6Y2hlY2tTdGF0dXMoKSBjb25zdAogewogICAgIC8vIGlm
IHdlIGhhdmUgYm90aCBhIGRlcHRoIGFuZCBzdGVuY2lsIGJ1ZmZlciwgdGhleSBtdXN0IHJlZmVy
IHRvIHRoZSBzYW1lIG9iamVjdAogICAgIC8vIHNpbmNlIHdlIG9ubHkgc3VwcG9ydCBwYWNrZWRf
ZGVwdGhfc3RlbmNpbCBhbmQgbm90IHNlcGFyYXRlIGRlcHRoIGFuZCBzdGVuY2lsCi0gICAgaWYg
KG1EYXRhLmdldERlcHRoQXR0YWNobWVudCgpICE9IG51bGxwdHIgJiYgbURhdGEuZ2V0U3RlbmNp
bEF0dGFjaG1lbnQoKSAhPSBudWxscHRyICYmCi0gICAgICAgIG1EYXRhLmdldERlcHRoU3RlbmNp
bEF0dGFjaG1lbnQoKSA9PSBudWxscHRyKQorICAgIGlmIChtU3RhdGUuZ2V0RGVwdGhBdHRhY2ht
ZW50KCkgIT0gbnVsbHB0ciAmJiBtU3RhdGUuZ2V0U3RlbmNpbEF0dGFjaG1lbnQoKSAhPSBudWxs
cHRyICYmCisgICAgICAgIG1TdGF0ZS5nZXREZXB0aFN0ZW5jaWxBdHRhY2htZW50KCkgPT0gbnVs
bHB0cikKICAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICAvLyBEM0Qx
MSBkb2VzIG5vdCBhbGxvdyBmb3Igb3ZlcmxhcHBpbmcgUmVuZGVyVGFyZ2V0Vmlld3MsIHNvIGVu
c3VyZSB1bmlxdWVuZXNzCi0gICAgY29uc3QgYXV0byAmY29sb3JBdHRhY2htZW50cyA9IG1EYXRh
LmdldENvbG9yQXR0YWNobWVudHMoKTsKLSAgICBmb3IgKHNpemVfdCBjb2xvckF0dGFjaG1lbnQg
PSAwOyBjb2xvckF0dGFjaG1lbnQgPCBjb2xvckF0dGFjaG1lbnRzLnNpemUoKTsgY29sb3JBdHRh
Y2htZW50KyspCisgICAgLy8gRDNEMTEgZG9lcyBub3QgYWxsb3cgZm9yIG92ZXJsYXBwaW5nIFJl
bmRlclRhcmdldFZpZXdzCisgICAgaWYgKCFtU3RhdGUuY29sb3JBdHRhY2htZW50c0FyZVVuaXF1
ZUltYWdlcygpKQogICAgIHsKLSAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVu
dCAmYXR0YWNobWVudCA9IGNvbG9yQXR0YWNobWVudHNbY29sb3JBdHRhY2htZW50XTsKLSAgICAg
ICAgaWYgKGF0dGFjaG1lbnQuaXNBdHRhY2hlZCgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBm
b3IgKHNpemVfdCBwcmV2Q29sb3JBdHRhY2htZW50ID0gMDsgcHJldkNvbG9yQXR0YWNobWVudCA8
IGNvbG9yQXR0YWNobWVudDsgcHJldkNvbG9yQXR0YWNobWVudCsrKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgJnByZXZBdHRh
Y2htZW50ID0gY29sb3JBdHRhY2htZW50c1twcmV2Q29sb3JBdHRhY2htZW50XTsKLSAgICAgICAg
ICAgICAgICBpZiAocHJldkF0dGFjaG1lbnQuaXNBdHRhY2hlZCgpICYmCi0gICAgICAgICAgICAg
ICAgICAgIChhdHRhY2htZW50LmlkKCkgPT0gcHJldkF0dGFjaG1lbnQuaWQoKSAmJgotICAgICAg
ICAgICAgICAgICAgICAgYXR0YWNobWVudC50eXBlKCkgPT0gcHJldkF0dGFjaG1lbnQudHlwZSgp
KSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAogICAgIC8vIEQzRCByZXF1aXJlcyBhbGwgcmVuZGVyIHRhcmdl
dHMgdG8gaGF2ZSB0aGUgc2FtZSBkaW1lbnNpb25zLgotICAgIGlmICghbURhdGEuYXR0YWNobWVu
dHNIYXZlU2FtZURpbWVuc2lvbnMoKSkKKyAgICBpZiAoIW1TdGF0ZS5hdHRhY2htZW50c0hhdmVT
YW1lRGltZW5zaW9ucygpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAg
LTM1NCw4ICszNTEsOCBAQCB2b2lkIEZyYW1lYnVmZmVyRDNEOjpzeW5jU3RhdGUoY29uc3QgZ2w6
CiAgICAgLy8gRG9lcyBub3QgYWN0dWFsbHkgZnJlZSBtZW1vcnkKICAgICBnbDo6QXR0YWNobWVu
dExpc3QgY29sb3JBdHRhY2htZW50c0ZvclJlbmRlcjsKIAotICAgIGNvbnN0IGF1dG8gJmNvbG9y
QXR0YWNobWVudHMgPSBtRGF0YS5nZXRDb2xvckF0dGFjaG1lbnRzKCk7Ci0gICAgY29uc3QgYXV0
byAmZHJhd0J1ZmZlclN0YXRlcyA9IG1EYXRhLmdldERyYXdCdWZmZXJTdGF0ZXMoKTsKKyAgICBj
b25zdCBhdXRvICZjb2xvckF0dGFjaG1lbnRzID0gbVN0YXRlLmdldENvbG9yQXR0YWNobWVudHMo
KTsKKyAgICBjb25zdCBhdXRvICZkcmF3QnVmZmVyU3RhdGVzID0gbVN0YXRlLmdldERyYXdCdWZm
ZXJTdGF0ZXMoKTsKICAgICBjb25zdCBhdXRvICZ3b3JrYXJvdW5kcyAgICAgID0gbVJlbmRlcmVy
LT5nZXRXb3JrYXJvdW5kcygpOwogCiAgICAgZm9yIChzaXplX3QgYXR0YWNobWVudEluZGV4ID0g
MDsgYXR0YWNobWVudEluZGV4IDwgY29sb3JBdHRhY2htZW50cy5zaXplKCk7ICsrYXR0YWNobWVu
dEluZGV4KQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9GcmFtZWJ1ZmZlckQzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRnJhbWVidWZmZXJEM0QuaAkocmV2aXNp
b24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9GcmFtZWJ1ZmZlckQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw2ICsxMiw3IEBA
CiAjaW5jbHVkZSA8dmVjdG9yPgogI2luY2x1ZGUgPGNzdGRpbnQ+CiAKKyNpbmNsdWRlICJjb21t
b24vQ29sb3IuaCIKICNpbmNsdWRlICJjb21tb24vT3B0aW9uYWwuaCIKICNpbmNsdWRlICJsaWJB
TkdMRS9hbmdsZXR5cGVzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvRnJhbWVidWZm
ZXJJbXBsLmgiCkBAIC01NywyMyArNTgsMjMgQEAgc3RydWN0IENsZWFyUGFyYW1ldGVycwogY2xh
c3MgRnJhbWVidWZmZXJEM0QgOiBwdWJsaWMgRnJhbWVidWZmZXJJbXBsCiB7CiAgIHB1YmxpYzoK
LSAgICBGcmFtZWJ1ZmZlckQzRChjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRhdGEgJmRhdGEsIFJl
bmRlcmVyRDNEICpyZW5kZXJlcik7CisgICAgRnJhbWVidWZmZXJEM0QoY29uc3QgZ2w6OkZyYW1l
YnVmZmVyU3RhdGUgJmRhdGEsIFJlbmRlcmVyRDNEICpyZW5kZXJlcik7CiAgICAgdmlydHVhbCB+
RnJhbWVidWZmZXJEM0QoKTsKIAotICAgIGdsOjpFcnJvciBjbGVhcihjb25zdCBnbDo6RGF0YSAm
ZGF0YSwgR0xiaXRmaWVsZCBtYXNrKSBvdmVycmlkZTsKLSAgICBnbDo6RXJyb3IgY2xlYXJCdWZm
ZXJmdihjb25zdCBnbDo6RGF0YSAmZGF0YSwKKyAgICBnbDo6RXJyb3IgY2xlYXIoQ29udGV4dElt
cGwgKmltcGwsIEdMYml0ZmllbGQgbWFzaykgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGNsZWFy
QnVmZmVyZnYoQ29udGV4dEltcGwgKmltcGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVm
ZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlcykg
b3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIGNsZWFyQnVmZmVydWl2KGNvbnN0IGdsOjpEYXRhICZk
YXRhLAorICAgIGdsOjpFcnJvciBjbGVhckJ1ZmZlcnVpdihDb250ZXh0SW1wbCAqaW1wbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgZHJhd2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZXMpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBjbGVh
ckJ1ZmZlcml2KGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAgIGdsOjpFcnJvciBjbGVhckJ1ZmZl
cml2KENvbnRleHRJbXBsICppbXBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHJhd2J1ZmZlciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWVzKSBvdmVycmlk
ZTsKLSAgICBnbDo6RXJyb3IgY2xlYXJCdWZmZXJmaShjb25zdCBnbDo6RGF0YSAmZGF0YSwKKyAg
ICBnbDo6RXJyb3IgY2xlYXJCdWZmZXJmaShDb250ZXh0SW1wbCAqaW1wbCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGRyYXdidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9h
dCBkZXB0aCwKQEAgLTgxLDEwICs4MiwxNyBAQCBjbGFzcyBGcmFtZWJ1ZmZlckQzRCA6IHB1Ymxp
YyBGcmFtZWJ1ZmZlCiAKICAgICBHTGVudW0gZ2V0SW1wbGVtZW50YXRpb25Db2xvclJlYWRGb3Jt
YXQoKSBjb25zdCBvdmVycmlkZTsKICAgICBHTGVudW0gZ2V0SW1wbGVtZW50YXRpb25Db2xvclJl
YWRUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIHJlYWRQaXhlbHMoY29uc3Qg
Z2w6OlN0YXRlICZzdGF0ZSwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmYXJlYSwgR0xlbnVtIGZvcm1h
dCwgR0xlbnVtIHR5cGUsIEdMdm9pZCAqcGl4ZWxzKSBjb25zdCBvdmVycmlkZTsKLQotICAgIGds
OjpFcnJvciBibGl0KGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpSZWN0YW5nbGUg
JnNvdXJjZUFyZWEsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRlc3RBcmVhLAotICAgICAgICAgICAg
ICAgICAgIEdMYml0ZmllbGQgbWFzaywgR0xlbnVtIGZpbHRlciwgY29uc3QgZ2w6OkZyYW1lYnVm
ZmVyICpzb3VyY2VGcmFtZWJ1ZmZlcikgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHJlYWRQaXhl
bHMoQ29udGV4dEltcGwgKmltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OlJlY3RhbmdsZSAmYXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0
LAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdm9pZCAqcGl4ZWxzKSBjb25zdCBvdmVycmlkZTsKKworICAgIGdsOjpFcnJv
ciBibGl0KENvbnRleHRJbXBsICppbXBsLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpS
ZWN0YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3Rh
bmdsZSAmZGVzdEFyZWEsCisgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBtYXNrLAorICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBmaWx0ZXIpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBjaGVj
a1N0YXR1cygpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC05Myw3ICsxMDEsNyBAQCBjbGFzcyBGcmFt
ZWJ1ZmZlckQzRCA6IHB1YmxpYyBGcmFtZWJ1ZmZlCiAgICAgY29uc3QgZ2w6OkF0dGFjaG1lbnRM
aXN0ICZnZXRDb2xvckF0dGFjaG1lbnRzRm9yUmVuZGVyKCkgY29uc3Q7CiAKICAgcHJpdmF0ZToK
LSAgICB2aXJ0dWFsIGdsOjpFcnJvciBjbGVhcihjb25zdCBnbDo6RGF0YSAmZGF0YSwgY29uc3Qg
Q2xlYXJQYXJhbWV0ZXJzICZjbGVhclBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgZ2w6OkVycm9y
IGNsZWFySW1wbChDb250ZXh0SW1wbCAqaW1wbCwgY29uc3QgQ2xlYXJQYXJhbWV0ZXJzICZjbGVh
clBhcmFtcykgPSAwOwogCiAgICAgdmlydHVhbCBnbDo6RXJyb3IgcmVhZFBpeGVsc0ltcGwoY29u
c3QgZ2w6OlJlY3RhbmdsZSAmYXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZm9ybWF0LApAQCAtMTAyLDkgKzExMCwxNCBAQCBjbGFzcyBGcmFtZWJ1ZmZl
ckQzRCA6IHB1YmxpYyBGcmFtZWJ1ZmZlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OlBpeGVsUGFja1N0YXRlICZwYWNrLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnBpeGVscykgY29uc3QgPSAwOwogCi0gICAgdmly
dHVhbCBnbDo6RXJyb3IgYmxpdChjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLCBjb25z
dCBnbDo6UmVjdGFuZ2xlICZkZXN0QXJlYSwgY29uc3QgZ2w6OlJlY3RhbmdsZSAqc2Npc3NvciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYmxpdFJlbmRlclRhcmdldCwgYm9vbCBi
bGl0RGVwdGgsIGJvb2wgYmxpdFN0ZW5jaWwsIEdMZW51bSBmaWx0ZXIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZUZyYW1lYnVmZmVyKSA9
IDA7CisgICAgdmlydHVhbCBnbDo6RXJyb3IgYmxpdEltcGwoY29uc3QgZ2w6OlJlY3RhbmdsZSAm
c291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVj
dGFuZ2xlICZkZXN0QXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6UmVjdGFuZ2xlICpzY2lzc29yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgYmxpdFJlbmRlclRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGJsaXREZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGJsaXRTdGVu
Y2lsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWx0ZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2VG
cmFtZWJ1ZmZlcikgPSAwOwogCiAgICAgdmlydHVhbCBHTGVudW0gZ2V0UmVuZGVyVGFyZ2V0SW1w
bGVtZW50YXRpb25Gb3JtYXQoUmVuZGVyVGFyZ2V0RDNEICpyZW5kZXJUYXJnZXQpIGNvbnN0ID0g
MDsKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9ITFNMQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvSExTTENvbXBpbGVyLmNwcAkocmV2aXNpb24g
MjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9ITFNMQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNyArMTM2LDggQEAg
Z2w6OkVycm9yIEhMU0xDb21waWxlcjo6aW5pdGlhbGl6ZSgpCiAKICAgICBpZiAoIW1EM0RDb21w
aWxlck1vZHVsZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04sICJObyBEM0QgY29tcGlsZXIgbW9kdWxlIGZvdW5kIC0gYWJvcnRpbmchXG4iKTsK
KyAgICAgICAgRVJSKCJEM0QgY29tcGlsZXIgbW9kdWxlIG5vdCBmb3VuZC4iKTsKKyAgICAgICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRDNEIGNvbXBpbGVyIG1vZHVsZSBu
b3QgZm91bmQuIik7CiAgICAgfQogCiAgICAgbUQzRENvbXBpbGVGdW5jID0gcmVpbnRlcnByZXRf
Y2FzdDxwRDNEQ29tcGlsZT4oR2V0UHJvY0FkZHJlc3MobUQzRENvbXBpbGVyTW9kdWxlLCAiRDNE
Q29tcGlsZSIpKTsKQEAgLTE1NSw3ICsxNTYsNyBAQCBnbDo6RXJyb3IgSExTTENvbXBpbGVyOjpp
bml0aWFsaXplKCkKIAogICAgIGlmIChtRDNEQ29tcGlsZUZ1bmMgPT0gbnVsbHB0cikKICAgICB7
Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFcnJvciBm
aW5kaW5nIEQzRENvbXBpbGUgZW50cnkgcG9pbnQiKTsKKyAgICAgICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9PVVRfT0ZfTUVNT1JZLCAiRXJyb3IgZmluZGluZyBEM0RDb21waWxlIGVudHJ5IHBvaW50
LiIpOwogICAgIH0KIAogICAgIG1Jbml0aWFsaXplZCA9IHRydWU7CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0ltYWdlRDNELmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9JbWFnZUQzRC5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0ltYWdlRDNELmgJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDcgKzUxLDExIEBAIGNsYXNzIEltYWdlRDNEIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAKICAg
ICB2aXJ0dWFsIGJvb2wgcmVkZWZpbmUoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9y
bWF0LCBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwgYm9vbCBmb3JjZVJlbGVhc2UpID0gMDsKIAot
ICAgIHZpcnR1YWwgZ2w6OkVycm9yIGxvYWREYXRhKGNvbnN0IGdsOjpCb3ggJmFyZWEsIGNvbnN0
IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICpp
bnB1dCkgPSAwOworICAgIHZpcnR1YWwgZ2w6OkVycm9yIGxvYWREYXRhKGNvbnN0IGdsOjpCb3gg
JmFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5w
YWNrU3RhdGUgJnVucGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbnB1dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGFwcGx5U2tpcEltYWdlcykgPSAw
OwogICAgIHZpcnR1YWwgZ2w6OkVycm9yIGxvYWRDb21wcmVzc2VkRGF0YShjb25zdCBnbDo6Qm94
ICZhcmVhLCBjb25zdCB2b2lkICppbnB1dCkgPSAwOwogCiAgICAgdmlydHVhbCBnbDo6RXJyb3Ig
c2V0TWFuYWdlZFN1cmZhY2UyRChUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwgaW50IGxldmVsKSB7
IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOyB9OwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9OYXRpdmVXaW5kb3dEM0QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvTmF0aXZlV2luZG93RDNELmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL05hdGl2ZVdpbmRvd0QzRC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMyBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAx
NiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIE5hdGl2
ZVdpbmRvd0QzRC5jcHA6IERlZmluZXMgTmF0aXZlV2luZG93RDNELCBhIGNsYXNzIGZvciBtYW5h
Z2luZyBhbmQgcGVyZm9ybWluZyBvcGVyYXRpb25zIG9uCisvLyBhbiBFR0xOYXRpdmVXaW5kb3dU
eXBlIGZvciB0aGUgRDNEIHJlbmRlcmVycy4KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2QzZC9OYXRpdmVXaW5kb3dEM0QuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK05hdGl2ZVdpbmRv
d0QzRDo6TmF0aXZlV2luZG93RDNEKEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KSA6IG1XaW5k
b3cod2luZG93KQoreworfQorCitOYXRpdmVXaW5kb3dEM0Q6On5OYXRpdmVXaW5kb3dEM0QoKQor
eworfQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvTmF0aXZlV2luZG93RDNELmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9OYXRp
dmVXaW5kb3dEM0QuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL05hdGl2ZVdpbmRvd0QzRC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMzggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBOYXRpdmVXaW5kb3dEM0QuaDog
RGVmaW5lcyBOYXRpdmVXaW5kb3dEM0QsIGEgY2xhc3MgZm9yIG1hbmFnaW5nIGFuZCBwZXJmb3Jt
aW5nIG9wZXJhdGlvbnMgb24gYW4KKy8vIEVHTE5hdGl2ZVdpbmRvd1R5cGUgZm9yIHRoZSBEM0Qg
cmVuZGVyZXJzLgorCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9OQVRJVkVXSU5ET1dE
M0RfSF8KKyNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfRDNEX05BVElWRVdJTkRPV0QzRF9IXwor
CisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisjaW5jbHVkZSAiY29tbW9uL3BsYXRmb3JtLmgi
CisKKyNpbmNsdWRlIDxFR0wvZWdscGxhdGZvcm0uaD4KKyNpbmNsdWRlICJsaWJBTkdMRS9Db25m
aWcuaCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBOYXRpdmVXaW5kb3dEM0QgOiBhbmdsZTo6
Tm9uQ29weWFibGUKK3sKKyAgcHVibGljOgorICAgIE5hdGl2ZVdpbmRvd0QzRChFR0xOYXRpdmVX
aW5kb3dUeXBlIHdpbmRvdyk7CisgICAgdmlydHVhbCB+TmF0aXZlV2luZG93RDNEKCk7CisKKyAg
ICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZSgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0Q2xp
ZW50UmVjdChMUFJFQ1QgcmVjdCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0ljb25p
YygpIGNvbnN0ID0gMDsKKworICAgIGlubGluZSBFR0xOYXRpdmVXaW5kb3dUeXBlIGdldE5hdGl2
ZVdpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1XaW5kb3c7IH0KKworICBwcml2YXRlOgorICAgIEVH
TE5hdGl2ZVdpbmRvd1R5cGUgbVdpbmRvdzsKK307Cit9ICAvLyBuYW1lc3BhY2UgcngKKworI2Vu
ZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfTkFUSVZFV0lORE9XRDNEX0hfCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1Byb2dyYW1E
M0QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvUHJvZ3JhbUQzRC5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvUHJvZ3JhbUQzRC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzLDYgKzEzLDcgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9G
cmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5o
IgogI2luY2x1ZGUgImxpYkFOR0xFL1Byb2dyYW0uaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9Vbmlm
b3JtLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvVmVydGV4QXJyYXkuaCIKICNpbmNsdWRlICJsaWJB
TkdMRS9mZWF0dXJlcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9EeW5hbWlj
SExTTC5oIgpAQCAtMzc2LDE2ICszNzcsMTQgQEAgRDNEVmFyeWluZzo6RDNEVmFyeWluZyhjb25z
dCBzdGQ6OnN0cmluZwogCiAvLyBQcm9ncmFtRDNETWV0YWRhdGEgSW1wbGVtZW50YXRpb24KIAot
UHJvZ3JhbUQzRE1ldGFkYXRhOjpQcm9ncmFtRDNETWV0YWRhdGEoaW50IHJlbmRlcmVyTWFqb3JT
aGFkZXJNb2RlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZzaGFkZXJNb2RlbFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgdXNlc0luc3RhbmNlZFBvaW50U3ByaXRlRW11bGF0aW9uLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1c2VzVmlld1NjYWxl
LAorUHJvZ3JhbUQzRE1ldGFkYXRhOjpQcm9ncmFtRDNETWV0YWRhdGEoUmVuZGVyZXJEM0QgKnJl
bmRlcmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hh
ZGVyRDNEICp2ZXJ0ZXhTaGFkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBTaGFkZXJEM0QgKmZyYWdtZW50U2hhZGVyKQotICAgIDogbVJlbmRlcmVyTWFq
b3JTaGFkZXJNb2RlbChyZW5kZXJlck1ham9yU2hhZGVyTW9kZWwpLAotICAgICAgbVNoYWRlck1v
ZGVsU3VmZml4KHNoYWRlck1vZGVsU3VmZml4KSwKLSAgICAgIG1Vc2VzSW5zdGFuY2VkUG9pbnRT
cHJpdGVFbXVsYXRpb24odXNlc0luc3RhbmNlZFBvaW50U3ByaXRlRW11bGF0aW9uKSwKLSAgICAg
IG1Vc2VzVmlld1NjYWxlKHVzZXNWaWV3U2NhbGUpLAorICAgIDogbVJlbmRlcmVyTWFqb3JTaGFk
ZXJNb2RlbChyZW5kZXJlci0+Z2V0TWFqb3JTaGFkZXJNb2RlbCgpKSwKKyAgICAgIG1TaGFkZXJN
b2RlbFN1ZmZpeChyZW5kZXJlci0+Z2V0U2hhZGVyTW9kZWxTdWZmaXgoKSksCisgICAgICBtVXNl
c0luc3RhbmNlZFBvaW50U3ByaXRlRW11bGF0aW9uKAorICAgICAgICAgIHJlbmRlcmVyLT5nZXRX
b3JrYXJvdW5kcygpLnVzZUluc3RhbmNlZFBvaW50U3ByaXRlRW11bGF0aW9uKSwKKyAgICAgIG1V
c2VzVmlld1NjYWxlKHJlbmRlcmVyLT5wcmVzZW50UGF0aEZhc3RFbmFibGVkKCkpLAogICAgICAg
bVZlcnRleFNoYWRlcih2ZXJ0ZXhTaGFkZXIpLAogICAgICAgbUZyYWdtZW50U2hhZGVyKGZyYWdt
ZW50U2hhZGVyKQogewpAQCAtMzk2LDEyICszOTUsMTIgQEAgaW50IFByb2dyYW1EM0RNZXRhZGF0
YTo6Z2V0UmVuZGVyZXJNYWpvcgogICAgIHJldHVybiBtUmVuZGVyZXJNYWpvclNoYWRlck1vZGVs
OwogfQogCi1ib29sIFByb2dyYW1EM0RNZXRhZGF0YTo6dXNlc0Jyb2FkY2FzdChjb25zdCBnbDo6
RGF0YSAmZGF0YSkgY29uc3QKK2Jvb2wgUHJvZ3JhbUQzRE1ldGFkYXRhOjp1c2VzQnJvYWRjYXN0
KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIChtRnJh
Z21lbnRTaGFkZXItPnVzZXNGcmFnQ29sb3IoKSAmJiBkYXRhLmNsaWVudFZlcnNpb24gPCAzKTsK
KyAgICByZXR1cm4gKG1GcmFnbWVudFNoYWRlci0+dXNlc0ZyYWdDb2xvcigpICYmIGRhdGEuZ2V0
Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKTsKIH0KIAotYm9vbCBQcm9ncmFtRDNETWV0YWRhdGE6
OnVzZXNGcmFnRGVwdGgoY29uc3QgZ2w6OlByb2dyYW06OkRhdGEgJnByb2dyYW1EYXRhKSBjb25z
dAorYm9vbCBQcm9ncmFtRDNETWV0YWRhdGE6OnVzZXNGcmFnRGVwdGgoKSBjb25zdAogewogICAg
IHJldHVybiBtRnJhZ21lbnRTaGFkZXItPnVzZXNGcmFnRGVwdGgoKTsKIH0KQEAgLTQyMyw3ICs0
MjIsOCBAQCBib29sIFByb2dyYW1EM0RNZXRhZGF0YTo6dXNlc1BvaW50U2l6ZSgpCiAKIGJvb2wg
UHJvZ3JhbUQzRE1ldGFkYXRhOjp1c2VzSW5zZXJ0ZWRQb2ludENvb3JkVmFsdWUoKSBjb25zdAog
ewotICAgIHJldHVybiAhdXNlc1BvaW50U2l6ZSgpICYmIHVzZXNQb2ludENvb3JkKCkgJiYgbVJl
bmRlcmVyTWFqb3JTaGFkZXJNb2RlbCA+PSA0OworICAgIHJldHVybiAoIXVzZXNQb2ludFNpemUo
KSB8fCAhbVVzZXNJbnN0YW5jZWRQb2ludFNwcml0ZUVtdWxhdGlvbikgJiYgdXNlc1BvaW50Q29v
cmQoKSAmJgorICAgICAgICAgICBtUmVuZGVyZXJNYWpvclNoYWRlck1vZGVsID49IDQ7CiB9CiAK
IGJvb2wgUHJvZ3JhbUQzRE1ldGFkYXRhOjp1c2VzVmlld1NjYWxlKCkgY29uc3QKQEAgLTQzMywx
MyArNDMzLDEyIEBAIGJvb2wgUHJvZ3JhbUQzRE1ldGFkYXRhOjp1c2VzVmlld1NjYWxlKCkKIAog
Ym9vbCBQcm9ncmFtRDNETWV0YWRhdGE6OmFkZHNQb2ludENvb3JkVG9WZXJ0ZXhTaGFkZXIoKSBj
b25zdAogewotICAgIC8vIEluc3RhbmNlZCBQb2ludFNwcml0ZSBlbXVsYXRpb24gcmVxdWlyZXMg
dGhhdCBnbF9Qb2ludENvb3JkIGlzIHByZXNlbnQgaW4gdGhlIHZlcnRleCBzaGFkZXIKKyAgICAv
LyBQb2ludFNwcml0ZSBlbXVsYXRpb24gcmVxdWlyZXNzIHRoYXQgZ2xfUG9pbnRDb29yZCBpcyBw
cmVzZW50IGluIHRoZSB2ZXJ0ZXggc2hhZGVyCiAgICAgLy8gVlNfT1VUUFVUIHN0cnVjdHVyZSB0
byBlbnN1cmUgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBnZW5lcmF0ZWQgUFNfSU5QVVQgb2YgdGhl
IHBpeGVsIHNoYWRlci4KLSAgICAvLyBHZW9tZXRyeVNoYWRlciBQb2ludFNwcml0ZSBlbXVsYXRp
b24gZG9lcyBub3QgcmVxdWlyZSB0aGlzIGFkZGl0aW9uYWwgZW50cnkgYmVjYXVzZSB0aGUKLSAg
ICAvLyBHU19PVVRQVVQgb2YgdGhlIEdlb21ldHJ5IHNoYWRlciBjb250YWlucyB0aGUgcG9pbnRD
b29yZCB2YWx1ZSBhbmQgYWxyZWFkeSBtYXRjaGVzIHRoZQotICAgIC8vIFBTX0lOUFVUIG9mIHRo
ZSBnZW5lcmF0ZWQgcGl4ZWwgc2hhZGVyLiBUaGUgR2VvbWV0cnkgU2hhZGVyIHBvaW50IHNwcml0
ZSBpbXBsZW1lbnRhdGlvbiBuZWVkcwotICAgIC8vIGdsX1BvaW50U2l6ZSB0byBiZSBpbiBWU19P
VVRQVVQgYW5kIEdTX0lOUFVULiBJbnN0YW5jZWQgcG9pbnQgc3ByaXRlcyBkb2Vzbid0IG5lZWQK
LSAgICAvLyBnbF9Qb2ludFNpemUgaW4gVlNfT1VUUFVULgorICAgIC8vIEV2ZW4gd2l0aCBhIGdl
b21ldHJ5IHNoYWRlciwgdGhlIGFwcCBjYW4gcmVuZGVyIHRyaWFuZ2xlcyBvciBsaW5lcyBhbmQg
cmVmZXJlbmNlCisgICAgLy8gZ2xfUG9pbnRDb29yZCBpbiB0aGUgZnJhZ21lbnQgc2hhZGVyLCBy
ZXF1aXJpbmcgdXMgdG8gcHJvdmlkZSBhIGR1bW15IHZhbHVlLiBGb3IKKyAgICAvLyBzaW1wbGlj
aXR5LCB3ZSBhbHdheXMgYWRkIHRoaXMgdG8gdGhlIHZlcnRleCBzaGFkZXIgd2hlbiB0aGUgZnJh
Z21lbnQgc2hhZGVyCisgICAgLy8gcmVmZXJlbmNlcyBnbF9Qb2ludENvb3JkLCBldmVuIGlmIHdl
IGNvdWxkIHNraXAgaXQgaW4gdGhlIGdlb21ldHJ5IHNoYWRlci4KICAgICByZXR1cm4gKG1Vc2Vz
SW5zdGFuY2VkUG9pbnRTcHJpdGVFbXVsYXRpb24gJiYgdXNlc1BvaW50Q29vcmQoKSkgfHwKICAg
ICAgICAgICAgdXNlc0luc2VydGVkUG9pbnRDb29yZFZhbHVlKCk7CiB9CkBAIC01NjAsOCArNTU5
LDggQEAgUHJvZ3JhbUQzRDo6U2FtcGxlcjo6U2FtcGxlcigpIDogYWN0aXZlKAogCiB1bnNpZ25l
ZCBpbnQgUHJvZ3JhbUQzRDo6bUN1cnJlbnRTZXJpYWwgPSAxOwogCi1Qcm9ncmFtRDNEOjpQcm9n
cmFtRDNEKGNvbnN0IGdsOjpQcm9ncmFtOjpEYXRhICZkYXRhLCBSZW5kZXJlckQzRCAqcmVuZGVy
ZXIpCi0gICAgOiBQcm9ncmFtSW1wbChkYXRhKSwKK1Byb2dyYW1EM0Q6OlByb2dyYW1EM0QoY29u
c3QgZ2w6OlByb2dyYW1TdGF0ZSAmc3RhdGUsIFJlbmRlcmVyRDNEICpyZW5kZXJlcikKKyAgICA6
IFByb2dyYW1JbXBsKHN0YXRlKSwKICAgICAgIG1SZW5kZXJlcihyZW5kZXJlciksCiAgICAgICBt
RHluYW1pY0hMU0woTlVMTCksCiAgICAgICBtR2VvbWV0cnlFeGVjdXRhYmxlcyhnbDo6UFJJTUlU
SVZFX1RZUEVfTUFYLCBudWxscHRyKSwKQEAgLTc4NCw3ICs3ODMsNyBAQCBMaW5rUmVzdWx0IFBy
b2dyYW1EM0Q6OmxvYWQoZ2w6OkluZm9Mb2cgCiAgICAgICAgIHJldHVybiBMaW5rUmVzdWx0KGZh
bHNlLCBnbDo6RXJyb3IoR0xfTk9fRVJST1IpKTsKICAgICB9CiAKLSAgICBjb25zdCBhdXRvICZs
aW5rZWRVbmlmb3JtcyA9IG1EYXRhLmdldFVuaWZvcm1zKCk7CisgICAgY29uc3QgYXV0byAmbGlu
a2VkVW5pZm9ybXMgPSBtU3RhdGUuZ2V0VW5pZm9ybXMoKTsKICAgICBBU1NFUlQobUQzRFVuaWZv
cm1zLmVtcHR5KCkpOwogICAgIGZvciAodW5zaWduZWQgaW50IHVuaWZvcm1JbmRleCA9IDA7IHVu
aWZvcm1JbmRleCA8IHVuaWZvcm1Db3VudDsgdW5pZm9ybUluZGV4KyspCiAgICAgewpAQCAtODcz
LDcgKzg3Miw3IEBAIExpbmtSZXN1bHQgUHJvZ3JhbUQzRDo6bG9hZChnbDo6SW5mb0xvZyAKIAog
ICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBtUmVuZGVyZXItPmxvYWRFeGVjdXRhYmxlKAogICAg
ICAgICAgICAgdmVydGV4U2hhZGVyRnVuY3Rpb24sIHZlcnRleFNoYWRlclNpemUsIFNIQURFUl9W
RVJURVgsIG1TdHJlYW1PdXRWYXJ5aW5ncywKLSAgICAgICAgICAgIChtRGF0YS5nZXRUcmFuc2Zv
cm1GZWVkYmFja0J1ZmZlck1vZGUoKSA9PSBHTF9TRVBBUkFURV9BVFRSSUJTKSwgJnNoYWRlckV4
ZWN1dGFibGUpOworICAgICAgICAgICAgKG1TdGF0ZS5nZXRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZl
ck1vZGUoKSA9PSBHTF9TRVBBUkFURV9BVFRSSUJTKSwgJnNoYWRlckV4ZWN1dGFibGUpOwogICAg
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4g
TGlua1Jlc3VsdChmYWxzZSwgZXJyb3IpOwpAQCAtOTEyLDcgKzkxMSw3IEBAIExpbmtSZXN1bHQg
UHJvZ3JhbUQzRDo6bG9hZChnbDo6SW5mb0xvZyAKIAogICAgICAgICBnbDo6RXJyb3IgZXJyb3Ig
PSBtUmVuZGVyZXItPmxvYWRFeGVjdXRhYmxlKAogICAgICAgICAgICAgcGl4ZWxTaGFkZXJGdW5j
dGlvbiwgcGl4ZWxTaGFkZXJTaXplLCBTSEFERVJfUElYRUwsIG1TdHJlYW1PdXRWYXJ5aW5ncywK
LSAgICAgICAgICAgIChtRGF0YS5nZXRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUoKSA9PSBH
TF9TRVBBUkFURV9BVFRSSUJTKSwgJnNoYWRlckV4ZWN1dGFibGUpOworICAgICAgICAgICAgKG1T
dGF0ZS5nZXRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUoKSA9PSBHTF9TRVBBUkFURV9BVFRS
SUJTKSwgJnNoYWRlckV4ZWN1dGFibGUpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gTGlua1Jlc3VsdChmYWxzZSwgZXJyb3IpOwpA
QCAtOTQxLDcgKzk0MCw3IEBAIExpbmtSZXN1bHQgUHJvZ3JhbUQzRDo6bG9hZChnbDo6SW5mb0xv
ZyAKICAgICAgICAgfQogCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmdlb21ldHJ5U2hh
ZGVyRnVuY3Rpb24gPSBiaW5hcnkgKyBzdHJlYW0tPm9mZnNldCgpOwotICAgICAgICBib29sIHNw
bGl0QXR0cmlicyAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKG1EYXRhLmdldFRyYW5zZm9y
bUZlZWRiYWNrQnVmZmVyTW9kZSgpID09IEdMX1NFUEFSQVRFX0FUVFJJQlMpOworICAgICAgICBi
b29sIHNwbGl0QXR0cmlicyAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKG1TdGF0ZS5nZXRU
cmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUoKSA9PSBHTF9TRVBBUkFURV9BVFRSSUJTKTsKIAog
ICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBtUmVuZGVyZXItPmxvYWRFeGVjdXRhYmxlKAogICAg
ICAgICAgICAgZ2VvbWV0cnlTaGFkZXJGdW5jdGlvbiwgZ2VvbWV0cnlTaGFkZXJTaXplLCBTSEFE
RVJfR0VPTUVUUlksIG1TdHJlYW1PdXRWYXJ5aW5ncywKQEAgLTEwMDMsOCArMTAwMiw4IEBAIGds
OjpFcnJvciBQcm9ncmFtRDNEOjpzYXZlKGdsOjpCaW5hcnlPdXQKICAgICBmb3IgKGNvbnN0IEQz
RFVuaWZvcm0gKnVuaWZvcm0gOiBtRDNEVW5pZm9ybXMpCiAgICAgewogICAgICAgICAvLyBUeXBl
LCBuYW1lIGFuZCBhcnJheVNpemUgYXJlIHJlZHVuZGFudCwgc28gYXJlbid0IHN0b3JlZCBpbiB0
aGUgYmluYXJ5LgotICAgICAgICBzdHJlYW0tPndyaXRlSW50KHVuaWZvcm0tPnBzUmVnaXN0ZXJJ
bmRleCk7Ci0gICAgICAgIHN0cmVhbS0+d3JpdGVJbnQodW5pZm9ybS0+dnNSZWdpc3RlckluZGV4
KTsKKyAgICAgICAgc3RyZWFtLT53cml0ZUludE9yTmVnT25lKHVuaWZvcm0tPnBzUmVnaXN0ZXJJ
bmRleCk7CisgICAgICAgIHN0cmVhbS0+d3JpdGVJbnRPck5lZ09uZSh1bmlmb3JtLT52c1JlZ2lz
dGVySW5kZXgpOwogICAgICAgICBzdHJlYW0tPndyaXRlSW50KHVuaWZvcm0tPnJlZ2lzdGVyQ291
bnQpOwogICAgICAgICBzdHJlYW0tPndyaXRlSW50KHVuaWZvcm0tPnJlZ2lzdGVyRWxlbWVudCk7
CiAgICAgfQpAQCAtMTAxMiw4ICsxMDExLDggQEAgZ2w6OkVycm9yIFByb2dyYW1EM0Q6OnNhdmUo
Z2w6OkJpbmFyeU91dAogICAgIHN0cmVhbS0+d3JpdGVJbnQobUQzRFVuaWZvcm1CbG9ja3Muc2l6
ZSgpKTsKICAgICBmb3IgKGNvbnN0IEQzRFVuaWZvcm1CbG9jayAmdW5pZm9ybUJsb2NrIDogbUQz
RFVuaWZvcm1CbG9ja3MpCiAgICAgewotICAgICAgICBzdHJlYW0tPndyaXRlSW50KHVuaWZvcm1C
bG9jay5wc1JlZ2lzdGVySW5kZXgpOwotICAgICAgICBzdHJlYW0tPndyaXRlSW50KHVuaWZvcm1C
bG9jay52c1JlZ2lzdGVySW5kZXgpOworICAgICAgICBzdHJlYW0tPndyaXRlSW50T3JOZWdPbmUo
dW5pZm9ybUJsb2NrLnBzUmVnaXN0ZXJJbmRleCk7CisgICAgICAgIHN0cmVhbS0+d3JpdGVJbnRP
ck5lZ09uZSh1bmlmb3JtQmxvY2sudnNSZWdpc3RlckluZGV4KTsKICAgICB9CiAKICAgICBzdHJl
YW0tPndyaXRlSW50KG1TdHJlYW1PdXRWYXJ5aW5ncy5zaXplKCkpOwpAQCAtMTA2MCw3ICsxMDU5
LDcgQEAgZ2w6OkVycm9yIFByb2dyYW1EM0Q6OnNhdmUoZ2w6OkJpbmFyeU91dAogCiAgICAgICAg
IGZvciAoc2l6ZV90IGlucHV0SW5kZXggPSAwOyBpbnB1dEluZGV4IDwgaW5wdXRMYXlvdXQuc2l6
ZSgpOyBpbnB1dEluZGV4KyspCiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0cmVhbS0+d3JpdGVJ
bnQoaW5wdXRMYXlvdXRbaW5wdXRJbmRleF0pOworICAgICAgICAgICAgc3RyZWFtLT53cml0ZUlu
dChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGlucHV0TGF5b3V0W2lucHV0SW5kZXhdKSk7CiAg
ICAgICAgIH0KIAogICAgICAgICBzaXplX3QgdmVydGV4U2hhZGVyU2l6ZSA9IHZlcnRleEV4ZWN1
dGFibGUtPnNoYWRlckV4ZWN1dGFibGUoKS0+Z2V0TGVuZ3RoKCk7CkBAIC0xMTYxLDcgKzExNjAs
NyBAQCBnbDo6RXJyb3IgUHJvZ3JhbUQzRDo6Z2V0UGl4ZWxFeGVjdXRhYmxlCiAKICAgICBnbDo6
RXJyb3IgZXJyb3IgPSBtUmVuZGVyZXItPmNvbXBpbGVUb0V4ZWN1dGFibGUoCiAgICAgICAgICpj
dXJyZW50SW5mb0xvZywgZmluYWxQaXhlbEhMU0wsIFNIQURFUl9QSVhFTCwgbVN0cmVhbU91dFZh
cnlpbmdzLAotICAgICAgICAobURhdGEuZ2V0VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlKCkg
PT0gR0xfU0VQQVJBVEVfQVRUUklCUyksIG1QaXhlbFdvcmthcm91bmRzLAorICAgICAgICAobVN0
YXRlLmdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9kZSgpID09IEdMX1NFUEFSQVRFX0FUVFJJ
QlMpLCBtUGl4ZWxXb3JrYXJvdW5kcywKICAgICAgICAgJnBpeGVsRXhlY3V0YWJsZSk7CiAgICAg
aWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7CkBAIC0xMjAwLDcgKzExOTksNyBAQCBnbDo6RXJy
b3IgUHJvZ3JhbUQzRDo6Z2V0VmVydGV4RXhlY3V0YWJsCiAKICAgICAvLyBHZW5lcmF0ZSBuZXcg
ZHluYW1pYyBsYXlvdXQgd2l0aCBhdHRyaWJ1dGUgY29udmVyc2lvbnMKICAgICBzdGQ6OnN0cmlu
ZyBmaW5hbFZlcnRleEhMU0wgPSBtRHluYW1pY0hMU0wtPmdlbmVyYXRlVmVydGV4U2hhZGVyRm9y
SW5wdXRMYXlvdXQoCi0gICAgICAgIG1WZXJ0ZXhITFNMLCBpbnB1dExheW91dCwgbURhdGEuZ2V0
QXR0cmlidXRlcygpKTsKKyAgICAgICAgbVZlcnRleEhMU0wsIGlucHV0TGF5b3V0LCBtU3RhdGUu
Z2V0QXR0cmlidXRlcygpKTsKIAogICAgIC8vIEdlbmVyYXRlIG5ldyB2ZXJ0ZXggZXhlY3V0YWJs
ZQogICAgIFNoYWRlckV4ZWN1dGFibGVEM0QgKnZlcnRleEV4ZWN1dGFibGUgPSBOVUxMOwpAQCAt
MTIxMCw3ICsxMjA5LDcgQEAgZ2w6OkVycm9yIFByb2dyYW1EM0Q6OmdldFZlcnRleEV4ZWN1dGFi
bAogCiAgICAgZ2w6OkVycm9yIGVycm9yID0gbVJlbmRlcmVyLT5jb21waWxlVG9FeGVjdXRhYmxl
KAogICAgICAgICAqY3VycmVudEluZm9Mb2csIGZpbmFsVmVydGV4SExTTCwgU0hBREVSX1ZFUlRF
WCwgbVN0cmVhbU91dFZhcnlpbmdzLAotICAgICAgICAobURhdGEuZ2V0VHJhbnNmb3JtRmVlZGJh
Y2tCdWZmZXJNb2RlKCkgPT0gR0xfU0VQQVJBVEVfQVRUUklCUyksIG1WZXJ0ZXhXb3JrYXJvdW5k
cywKKyAgICAgICAgKG1TdGF0ZS5nZXRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUoKSA9PSBH
TF9TRVBBUkFURV9BVFRSSUJTKSwgbVZlcnRleFdvcmthcm91bmRzLAogICAgICAgICAmdmVydGV4
RXhlY3V0YWJsZSk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7CkBAIC0xMjMzLDcg
KzEyMzIsNyBAQCBnbDo6RXJyb3IgUHJvZ3JhbUQzRDo6Z2V0VmVydGV4RXhlY3V0YWJsCiAgICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKLWdsOjpFcnJvciBQcm9ncmFtRDNE
OjpnZXRHZW9tZXRyeUV4ZWN1dGFibGVGb3JQcmltaXRpdmVUeXBlKGNvbnN0IGdsOjpEYXRhICZk
YXRhLAorZ2w6OkVycm9yIFByb2dyYW1EM0Q6OmdldEdlb21ldHJ5RXhlY3V0YWJsZUZvclByaW1p
dGl2ZVR5cGUoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkcmF3TW9k
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoYWRlckV4ZWN1dGFibGVEM0QgKipvdXRFeGVjdXRhYmxlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkluZm9M
b2cgKmluZm9Mb2cpCkBAIC0xMjYxLDcgKzEyNjAsNyBAQCBnbDo6RXJyb3IgUHJvZ3JhbUQzRDo6
Z2V0R2VvbWV0cnlFeGVjdXRhCiAgICAgfQogCiAgICAgc3RkOjpzdHJpbmcgZ2VvbWV0cnlITFNM
ID0gbUR5bmFtaWNITFNMLT5nZW5lcmF0ZUdlb21ldHJ5U2hhZGVySExTTCgKLSAgICAgICAgZ2Vv
bWV0cnlTaGFkZXJUeXBlLCBkYXRhLCBtRGF0YSwgbVJlbmRlcmVyLT5wcmVzZW50UGF0aEZhc3RF
bmFibGVkKCksCisgICAgICAgIGdlb21ldHJ5U2hhZGVyVHlwZSwgZGF0YSwgbVN0YXRlLCBtUmVu
ZGVyZXItPnByZXNlbnRQYXRoRmFzdEVuYWJsZWQoKSwKICAgICAgICAgbUdlb21ldHJ5U2hhZGVy
UHJlYW1ibGUpOwogCiAgICAgZ2w6OkluZm9Mb2cgdGVtcEluZm9Mb2c7CkBAIC0xMjY5LDcgKzEy
NjgsNyBAQCBnbDo6RXJyb3IgUHJvZ3JhbUQzRDo6Z2V0R2VvbWV0cnlFeGVjdXRhCiAKICAgICBn
bDo6RXJyb3IgZXJyb3IgPSBtUmVuZGVyZXItPmNvbXBpbGVUb0V4ZWN1dGFibGUoCiAgICAgICAg
ICpjdXJyZW50SW5mb0xvZywgZ2VvbWV0cnlITFNMLCBTSEFERVJfR0VPTUVUUlksIG1TdHJlYW1P
dXRWYXJ5aW5ncywKLSAgICAgICAgKG1EYXRhLmdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9k
ZSgpID09IEdMX1NFUEFSQVRFX0FUVFJJQlMpLCBEM0RDb21waWxlcldvcmthcm91bmRzKCksCisg
ICAgICAgIChtU3RhdGUuZ2V0VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlKCkgPT0gR0xfU0VQ
QVJBVEVfQVRUUklCUyksIEQzRENvbXBpbGVyV29ya2Fyb3VuZHMoKSwKICAgICAgICAgJm1HZW9t
ZXRyeUV4ZWN1dGFibGVzW2dlb21ldHJ5U2hhZGVyVHlwZV0pOwogCiAgICAgaWYgKCFpbmZvTG9n
ICYmIGVycm9yLmlzRXJyb3IoKSkKQEAgLTEyODYsMTAgKzEyODUsMTAgQEAgZ2w6OkVycm9yIFBy
b2dyYW1EM0Q6OmdldEdlb21ldHJ5RXhlY3V0YQogICAgIHJldHVybiBlcnJvcjsKIH0KIAotTGlu
a1Jlc3VsdCBQcm9ncmFtRDNEOjpjb21waWxlUHJvZ3JhbUV4ZWN1dGFibGVzKGNvbnN0IGdsOjpE
YXRhICZkYXRhLCBnbDo6SW5mb0xvZyAmaW5mb0xvZykKK0xpbmtSZXN1bHQgUHJvZ3JhbUQzRDo6
Y29tcGlsZVByb2dyYW1FeGVjdXRhYmxlcyhjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLCBn
bDo6SW5mb0xvZyAmaW5mb0xvZykKIHsKICAgICBjb25zdCBnbDo6SW5wdXRMYXlvdXQgJmRlZmF1
bHRJbnB1dExheW91dCA9Ci0gICAgICAgIEdldERlZmF1bHRJbnB1dExheW91dEZyb21TaGFkZXIo
bURhdGEuZ2V0QXR0YWNoZWRWZXJ0ZXhTaGFkZXIoKSk7CisgICAgICAgIEdldERlZmF1bHRJbnB1
dExheW91dEZyb21TaGFkZXIobVN0YXRlLmdldEF0dGFjaGVkVmVydGV4U2hhZGVyKCkpOwogICAg
IFNoYWRlckV4ZWN1dGFibGVEM0QgKmRlZmF1bHRWZXJ0ZXhFeGVjdXRhYmxlID0gTlVMTDsKICAg
ICBnbDo6RXJyb3IgZXJyb3IgPQogICAgICAgICBnZXRWZXJ0ZXhFeGVjdXRhYmxlRm9ySW5wdXRM
YXlvdXQoZGVmYXVsdElucHV0TGF5b3V0LCAmZGVmYXVsdFZlcnRleEV4ZWN1dGFibGUsICZpbmZv
TG9nKTsKQEAgLTEzMTQsNyArMTMxMyw3IEBAIExpbmtSZXN1bHQgUHJvZ3JhbUQzRDo6Y29tcGls
ZVByb2dyYW1FeGUKICAgICAgICAgZ2V0R2VvbWV0cnlFeGVjdXRhYmxlRm9yUHJpbWl0aXZlVHlw
ZShkYXRhLCBHTF9QT0lOVFMsICZwb2ludEdTLCAmaW5mb0xvZyk7CiAgICAgfQogCi0gICAgY29u
c3QgU2hhZGVyRDNEICp2ZXJ0ZXhTaGFkZXJEM0QgPSBHZXRJbXBsQXM8U2hhZGVyRDNEPihtRGF0
YS5nZXRBdHRhY2hlZFZlcnRleFNoYWRlcigpKTsKKyAgICBjb25zdCBTaGFkZXJEM0QgKnZlcnRl
eFNoYWRlckQzRCA9IEdldEltcGxBczxTaGFkZXJEM0Q+KG1TdGF0ZS5nZXRBdHRhY2hlZFZlcnRl
eFNoYWRlcigpKTsKIAogICAgIGlmICh1c2VzR2VvbWV0cnlTaGFkZXIoR0xfUE9JTlRTKSAmJiBw
b2ludEdTKQogICAgIHsKQEAgLTEzMzQsNyArMTMzMyw3IEBAIExpbmtSZXN1bHQgUHJvZ3JhbUQz
RDo6Y29tcGlsZVByb2dyYW1FeGUKICAgICBpZiAoZGVmYXVsdFBpeGVsRXhlY3V0YWJsZSkKICAg
ICB7CiAgICAgICAgIGNvbnN0IFNoYWRlckQzRCAqZnJhZ21lbnRTaGFkZXJEM0QgPQotICAgICAg
ICAgICAgR2V0SW1wbEFzPFNoYWRlckQzRD4obURhdGEuZ2V0QXR0YWNoZWRGcmFnbWVudFNoYWRl
cigpKTsKKyAgICAgICAgICAgIEdldEltcGxBczxTaGFkZXJEM0Q+KG1TdGF0ZS5nZXRBdHRhY2hl
ZEZyYWdtZW50U2hhZGVyKCkpOwogICAgICAgICBmcmFnbWVudFNoYWRlckQzRC0+YXBwZW5kRGVi
dWdJbmZvKGRlZmF1bHRQaXhlbEV4ZWN1dGFibGUtPmdldERlYnVnSW5mbygpKTsKICAgICB9CiAK
QEAgLTEzNDMsMjMgKzEzNDIsMjMgQEAgTGlua1Jlc3VsdCBQcm9ncmFtRDNEOjpjb21waWxlUHJv
Z3JhbUV4ZQogICAgIHJldHVybiBMaW5rUmVzdWx0KGxpbmtTdWNjZXNzLCBnbDo6RXJyb3IoR0xf
Tk9fRVJST1IpKTsKIH0KIAotTGlua1Jlc3VsdCBQcm9ncmFtRDNEOjpsaW5rKGNvbnN0IGdsOjpE
YXRhICZkYXRhLCBnbDo6SW5mb0xvZyAmaW5mb0xvZykKK0xpbmtSZXN1bHQgUHJvZ3JhbUQzRDo6
bGluayhjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLCBnbDo6SW5mb0xvZyAmaW5mb0xvZykK
IHsKICAgICByZXNldCgpOwogCi0gICAgY29uc3QgZ2w6OlNoYWRlciAqdmVydGV4U2hhZGVyICAg
PSBtRGF0YS5nZXRBdHRhY2hlZFZlcnRleFNoYWRlcigpOwotICAgIGNvbnN0IGdsOjpTaGFkZXIg
KmZyYWdtZW50U2hhZGVyID0gbURhdGEuZ2V0QXR0YWNoZWRGcmFnbWVudFNoYWRlcigpOworICAg
IGNvbnN0IGdsOjpTaGFkZXIgKnZlcnRleFNoYWRlciAgID0gbVN0YXRlLmdldEF0dGFjaGVkVmVy
dGV4U2hhZGVyKCk7CisgICAgY29uc3QgZ2w6OlNoYWRlciAqZnJhZ21lbnRTaGFkZXIgPSBtU3Rh
dGUuZ2V0QXR0YWNoZWRGcmFnbWVudFNoYWRlcigpOwogCiAgICAgY29uc3QgU2hhZGVyRDNEICp2
ZXJ0ZXhTaGFkZXJEM0QgICA9IEdldEltcGxBczxTaGFkZXJEM0Q+KHZlcnRleFNoYWRlcik7CiAg
ICAgY29uc3QgU2hhZGVyRDNEICpmcmFnbWVudFNoYWRlckQzRCA9IEdldEltcGxBczxTaGFkZXJE
M0Q+KGZyYWdtZW50U2hhZGVyKTsKIAotICAgIG1TYW1wbGVyc1ZTLnJlc2l6ZShkYXRhLmNhcHMt
Pm1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzKTsKLSAgICBtU2FtcGxlcnNQUy5yZXNpemUoZGF0
YS5jYXBzLT5tYXhUZXh0dXJlSW1hZ2VVbml0cyk7CisgICAgbVNhbXBsZXJzVlMucmVzaXplKGRh
dGEuZ2V0Q2FwcygpLm1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzKTsKKyAgICBtU2FtcGxlcnNQ
Uy5yZXNpemUoZGF0YS5nZXRDYXBzKCkubWF4VGV4dHVyZUltYWdlVW5pdHMpOwogCiAgICAgdmVy
dGV4U2hhZGVyRDNELT5nZW5lcmF0ZVdvcmthcm91bmRzKCZtVmVydGV4V29ya2Fyb3VuZHMpOwog
ICAgIGZyYWdtZW50U2hhZGVyRDNELT5nZW5lcmF0ZVdvcmthcm91bmRzKCZtUGl4ZWxXb3JrYXJv
dW5kcyk7CiAKLSAgICBpZiAobVJlbmRlcmVyLT5nZXRSZW5kZXJlckxpbWl0YXRpb25zKCkubm9G
cm9udEZhY2luZ1N1cHBvcnQpCisgICAgaWYgKG1SZW5kZXJlci0+Z2V0TmF0aXZlTGltaXRhdGlv
bnMoKS5ub0Zyb250RmFjaW5nU3VwcG9ydCkKICAgICB7CiAgICAgICAgIGlmIChmcmFnbWVudFNo
YWRlckQzRC0+dXNlc0Zyb250RmFjaW5nKCkpCiAgICAgICAgIHsKQEAgLTEzNjksMjUgKzEzNjgs
MjIgQEAgTGlua1Jlc3VsdCBQcm9ncmFtRDNEOjpsaW5rKGNvbnN0IGdsOjpEYQogICAgIH0KIAog
ICAgIHN0ZDo6dmVjdG9yPFBhY2tlZFZhcnlpbmc+IHBhY2tlZFZhcnlpbmdzID0KLSAgICAgICAg
TWVyZ2VWYXJ5aW5ncygqdmVydGV4U2hhZGVyLCAqZnJhZ21lbnRTaGFkZXIsIG1EYXRhLmdldFRy
YW5zZm9ybUZlZWRiYWNrVmFyeWluZ05hbWVzKCkpOworICAgICAgICBNZXJnZVZhcnlpbmdzKCp2
ZXJ0ZXhTaGFkZXIsICpmcmFnbWVudFNoYWRlciwgbVN0YXRlLmdldFRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZ05hbWVzKCkpOwogCiAgICAgLy8gTWFwIHRoZSB2YXJ5aW5ncyB0byB0aGUgcmVnaXN0
ZXIgZmlsZQotICAgIFZhcnlpbmdQYWNraW5nIHZhcnlpbmdQYWNraW5nKGRhdGEuY2Fwcy0+bWF4
VmFyeWluZ1ZlY3RvcnMpOworICAgIFZhcnlpbmdQYWNraW5nIHZhcnlpbmdQYWNraW5nKGRhdGEu
Z2V0Q2FwcygpLm1heFZhcnlpbmdWZWN0b3JzKTsKICAgICBpZiAoIXZhcnlpbmdQYWNraW5nLnBh
Y2tWYXJ5aW5ncyhpbmZvTG9nLCBwYWNrZWRWYXJ5aW5ncywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtRGF0YS5nZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdOYW1lcygp
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU3RhdGUuZ2V0VHJhbnNm
b3JtRmVlZGJhY2tWYXJ5aW5nTmFtZXMoKSkpCiAgICAgewogICAgICAgICByZXR1cm4gTGlua1Jl
c3VsdChmYWxzZSwgZ2w6OkVycm9yKEdMX05PX0VSUk9SKSk7CiAgICAgfQogCi0gICAgUHJvZ3Jh
bUQzRE1ldGFkYXRhIG1ldGFkYXRhKG1SZW5kZXJlci0+Z2V0TWFqb3JTaGFkZXJNb2RlbCgpLCBt
UmVuZGVyZXItPmdldFNoYWRlck1vZGVsU3VmZml4KCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVzZXNJbnN0YW5jZWRQb2ludFNwcml0ZUVtdWxhdGlvbigpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtUmVuZGVyZXItPnByZXNlbnRQYXRoRmFzdEVuYWJsZWQo
KSwgdmVydGV4U2hhZGVyRDNELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFn
bWVudFNoYWRlckQzRCk7CisgICAgUHJvZ3JhbUQzRE1ldGFkYXRhIG1ldGFkYXRhKG1SZW5kZXJl
ciwgdmVydGV4U2hhZGVyRDNELCBmcmFnbWVudFNoYWRlckQzRCk7CiAKICAgICB2YXJ5aW5nUGFj
a2luZy5lbmFibGVCdWlsdGlucyhTSEFERVJfVkVSVEVYLCBtZXRhZGF0YSk7CiAgICAgdmFyeWlu
Z1BhY2tpbmcuZW5hYmxlQnVpbHRpbnMoU0hBREVSX1BJWEVMLCBtZXRhZGF0YSk7CiAKLSAgICBp
ZiAoc3RhdGljX2Nhc3Q8R0x1aW50Pih2YXJ5aW5nUGFja2luZy5nZXRSZWdpc3RlckNvdW50KCkp
ID4gZGF0YS5jYXBzLT5tYXhWYXJ5aW5nVmVjdG9ycykKKyAgICBpZiAoc3RhdGljX2Nhc3Q8R0x1
aW50Pih2YXJ5aW5nUGFja2luZy5nZXRSZWdpc3RlckNvdW50KCkpID4gZGF0YS5nZXRDYXBzKCku
bWF4VmFyeWluZ1ZlY3RvcnMpCiAgICAgewogICAgICAgICBpbmZvTG9nIDw8ICJObyB2YXJ5aW5n
IHJlZ2lzdGVycyBsZWZ0IHRvIHN1cHBvcnQgZ2xfRnJhZ0Nvb3JkL2dsX1BvaW50Q29vcmQiOwog
ICAgICAgICByZXR1cm4gTGlua1Jlc3VsdChmYWxzZSwgZ2w6OkVycm9yKEdMX05PX0VSUk9SKSk7
CkBAIC0xMzk3LDIxICsxMzkzLDIxIEBAIExpbmtSZXN1bHQgUHJvZ3JhbUQzRDo6bGluayhjb25z
dCBnbDo6RGEKICAgICAvLyBXZSBjYW4gZmFpbCBoZXJlIGJlY2F1c2Ugd2UgdXNlIG9uZSBzZW1h
bnRpYyBwZXIgR0xTTCB2YXJ5aW5nLiBEM0QxMSBjYW4gcGFjayB2YXJ5aW5ncwogICAgIC8vIGlu
dGVsbGlnZW50bHksIGJ1dCBEM0Q5IGFzc3VtZXMgb25lIHNlbWFudGljIHBlciByZWdpc3Rlci4K
ICAgICBpZiAobVJlbmRlcmVyLT5nZXRSZW5kZXJlckNsYXNzKCkgPT0gUkVOREVSRVJfRDNEOSAm
JgotICAgICAgICB2YXJ5aW5nUGFja2luZy5nZXRNYXhTZW1hbnRpY0luZGV4KCkgPiBkYXRhLmNh
cHMtPm1heFZhcnlpbmdWZWN0b3JzKQorICAgICAgICB2YXJ5aW5nUGFja2luZy5nZXRNYXhTZW1h
bnRpY0luZGV4KCkgPiBkYXRhLmdldENhcHMoKS5tYXhWYXJ5aW5nVmVjdG9ycykKICAgICB7CiAg
ICAgICAgIGluZm9Mb2cgPDwgIkNhbm5vdCBwYWNrIHRoZXNlIHZhcnlpbmdzIG9uIEQzRDkuIjsK
ICAgICAgICAgcmV0dXJuIExpbmtSZXN1bHQoZmFsc2UsIGdsOjpFcnJvcihHTF9OT19FUlJPUikp
OwogICAgIH0KIAotICAgIGlmICghbUR5bmFtaWNITFNMLT5nZW5lcmF0ZVNoYWRlckxpbmtITFNM
KGRhdGEsIG1EYXRhLCBtZXRhZGF0YSwgdmFyeWluZ1BhY2tpbmcsICZtUGl4ZWxITFNMLAorICAg
IGlmICghbUR5bmFtaWNITFNMLT5nZW5lcmF0ZVNoYWRlckxpbmtITFNMKGRhdGEsIG1TdGF0ZSwg
bWV0YWRhdGEsIHZhcnlpbmdQYWNraW5nLCAmbVBpeGVsSExTTCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbVZlcnRleEhMU0wpKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIExpbmtSZXN1bHQoZmFsc2UsIGdsOjpFcnJvcihHTF9OT19FUlJPUikpOwogICAg
IH0KIAogICAgIG1Vc2VzUG9pbnRTaXplID0gdmVydGV4U2hhZGVyRDNELT51c2VzUG9pbnRTaXpl
KCk7Ci0gICAgbUR5bmFtaWNITFNMLT5nZXRQaXhlbFNoYWRlck91dHB1dEtleShkYXRhLCBtRGF0
YSwgbWV0YWRhdGEsICZtUGl4ZWxTaGFkZXJLZXkpOwotICAgIG1Vc2VzRnJhZ0RlcHRoID0gbWV0
YWRhdGEudXNlc0ZyYWdEZXB0aChtRGF0YSk7CisgICAgbUR5bmFtaWNITFNMLT5nZXRQaXhlbFNo
YWRlck91dHB1dEtleShkYXRhLCBtU3RhdGUsIG1ldGFkYXRhLCAmbVBpeGVsU2hhZGVyS2V5KTsK
KyAgICBtVXNlc0ZyYWdEZXB0aCA9IG1ldGFkYXRhLnVzZXNGcmFnRGVwdGgoKTsKIAogICAgIC8v
IENhY2hlIGlmIHdlIHVzZSBmbGF0IHNoYWRpbmcKICAgICBtVXNlc0ZsYXRJbnRlcnBvbGF0aW9u
ID0gZmFsc2U7CkBAIC0xNDM3LDcgKzE0MzMsMTIgQEAgTGlua1Jlc3VsdCBQcm9ncmFtRDNEOjps
aW5rKGNvbnN0IGdsOjpEYQogICAgIGdhdGhlclRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3ModmFy
eWluZ1BhY2tpbmcpOwogCiAgICAgTGlua1Jlc3VsdCByZXN1bHQgPSBjb21waWxlUHJvZ3JhbUV4
ZWN1dGFibGVzKGRhdGEsIGluZm9Mb2cpOwotICAgIGlmIChyZXN1bHQuZXJyb3IuaXNFcnJvcigp
IHx8ICFyZXN1bHQubGlua1N1Y2Nlc3MpCisgICAgaWYgKHJlc3VsdC5lcnJvci5pc0Vycm9yKCkp
CisgICAgeworICAgICAgICBpbmZvTG9nIDw8IHJlc3VsdC5lcnJvci5nZXRNZXNzYWdlKCk7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIGVsc2UgaWYgKCFyZXN1bHQubGlua1N1
Y2Nlc3MpCiAgICAgewogICAgICAgICBpbmZvTG9nIDw8ICJGYWlsZWQgdG8gY3JlYXRlIEQzRCBz
aGFkZXJzLiI7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0xNDU2LDcgKzE0NTcsNyBAQCBH
TGJvb2xlYW4gUHJvZ3JhbUQzRDo6dmFsaWRhdGUoY29uc3QgZ2w6CiAKIHZvaWQgUHJvZ3JhbUQz
RDo6aW5pdFVuaWZvcm1CbG9ja0luZm8oKQogewotICAgIGNvbnN0IGdsOjpTaGFkZXIgKnZlcnRl
eFNoYWRlciA9IG1EYXRhLmdldEF0dGFjaGVkVmVydGV4U2hhZGVyKCk7CisgICAgY29uc3QgZ2w6
OlNoYWRlciAqdmVydGV4U2hhZGVyID0gbVN0YXRlLmdldEF0dGFjaGVkVmVydGV4U2hhZGVyKCk7
CiAKICAgICBmb3IgKGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9jayAmdmVydGV4QmxvY2sgOiB2ZXJ0
ZXhTaGFkZXItPmdldEludGVyZmFjZUJsb2NrcygpKQogICAgIHsKQEAgLTE0NzAsNyArMTQ3MSw3
IEBAIHZvaWQgUHJvZ3JhbUQzRDo6aW5pdFVuaWZvcm1CbG9ja0luZm8oKQogICAgICAgICBtQmxv
Y2tEYXRhU2l6ZXNbdmVydGV4QmxvY2submFtZV0gPSBkYXRhU2l6ZTsKICAgICB9CiAKLSAgICBj
b25zdCBnbDo6U2hhZGVyICpmcmFnbWVudFNoYWRlciA9IG1EYXRhLmdldEF0dGFjaGVkRnJhZ21l
bnRTaGFkZXIoKTsKKyAgICBjb25zdCBnbDo6U2hhZGVyICpmcmFnbWVudFNoYWRlciA9IG1TdGF0
ZS5nZXRBdHRhY2hlZEZyYWdtZW50U2hhZGVyKCk7CiAKICAgICBmb3IgKGNvbnN0IHNoOjpJbnRl
cmZhY2VCbG9jayAmZnJhZ21lbnRCbG9jayA6IGZyYWdtZW50U2hhZGVyLT5nZXRJbnRlcmZhY2VC
bG9ja3MoKSkKICAgICB7CkBAIC0xNDkwLDEwICsxNDkxLDEwIEBAIHZvaWQgUHJvZ3JhbUQzRDo6
YXNzaWduVW5pZm9ybUJsb2NrUmVnaXMKICAgICBtRDNEVW5pZm9ybUJsb2Nrcy5jbGVhcigpOwog
CiAgICAgLy8gQXNzaWduIHJlZ2lzdGVycyBhbmQgdXBkYXRlIHNpemVzLgotICAgIGNvbnN0IFNo
YWRlckQzRCAqdmVydGV4U2hhZGVyRDNEICAgPSBHZXRJbXBsQXM8U2hhZGVyRDNEPihtRGF0YS5n
ZXRBdHRhY2hlZFZlcnRleFNoYWRlcigpKTsKLSAgICBjb25zdCBTaGFkZXJEM0QgKmZyYWdtZW50
U2hhZGVyRDNEID0gR2V0SW1wbEFzPFNoYWRlckQzRD4obURhdGEuZ2V0QXR0YWNoZWRGcmFnbWVu
dFNoYWRlcigpKTsKKyAgICBjb25zdCBTaGFkZXJEM0QgKnZlcnRleFNoYWRlckQzRCAgID0gR2V0
SW1wbEFzPFNoYWRlckQzRD4obVN0YXRlLmdldEF0dGFjaGVkVmVydGV4U2hhZGVyKCkpOworICAg
IGNvbnN0IFNoYWRlckQzRCAqZnJhZ21lbnRTaGFkZXJEM0QgPSBHZXRJbXBsQXM8U2hhZGVyRDNE
PihtU3RhdGUuZ2V0QXR0YWNoZWRGcmFnbWVudFNoYWRlcigpKTsKIAotICAgIGZvciAoY29uc3Qg
Z2w6OlVuaWZvcm1CbG9jayAmdW5pZm9ybUJsb2NrIDogbURhdGEuZ2V0VW5pZm9ybUJsb2Nrcygp
KQorICAgIGZvciAoY29uc3QgZ2w6OlVuaWZvcm1CbG9jayAmdW5pZm9ybUJsb2NrIDogbVN0YXRl
LmdldFVuaWZvcm1CbG9ja3MoKSkKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGludCB1bmlmb3Jt
QmxvY2tFbGVtZW50ID0gdW5pZm9ybUJsb2NrLmlzQXJyYXkgPyB1bmlmb3JtQmxvY2suYXJyYXlF
bGVtZW50IDogMDsKIApAQCAtMTU2MSw5ICsxNTYyLDkgQEAgZ2w6OkVycm9yIFByb2dyYW1EM0Q6
OmFwcGx5VW5pZm9ybXMoR0xlbgogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwog
fQogCi1nbDo6RXJyb3IgUHJvZ3JhbUQzRDo6YXBwbHlVbmlmb3JtQnVmZmVycyhjb25zdCBnbDo6
RGF0YSAmZGF0YSkKK2dsOjpFcnJvciBQcm9ncmFtRDNEOjphcHBseVVuaWZvcm1CdWZmZXJzKGNv
bnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEpCiB7Ci0gICAgaWYgKG1EYXRhLmdldFVuaWZvcm1C
bG9ja3MoKS5lbXB0eSgpKQorICAgIGlmIChtU3RhdGUuZ2V0VW5pZm9ybUJsb2NrcygpLmVtcHR5
KCkpCiAgICAgewogICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKICAgICB9
CkBAIC0xNTg0LDcgKzE1ODUsNyBAQCBnbDo6RXJyb3IgUHJvZ3JhbUQzRDo6YXBwbHlVbmlmb3Jt
QnVmZmVyCiAgICAgICAgICB1bmlmb3JtQmxvY2tJbmRleCsrKQogICAgIHsKICAgICAgICAgY29u
c3QgRDNEVW5pZm9ybUJsb2NrICZ1bmlmb3JtQmxvY2sgPSBtRDNEVW5pZm9ybUJsb2Nrc1t1bmlm
b3JtQmxvY2tJbmRleF07Ci0gICAgICAgIEdMdWludCBibG9ja0JpbmRpbmcgICAgICAgICAgICAg
ICAgID0gbURhdGEuZ2V0VW5pZm9ybUJsb2NrQmluZGluZyh1bmlmb3JtQmxvY2tJbmRleCk7Cisg
ICAgICAgIEdMdWludCBibG9ja0JpbmRpbmcgICAgICAgICAgICAgICAgID0gbVN0YXRlLmdldFVu
aWZvcm1CbG9ja0JpbmRpbmcodW5pZm9ybUJsb2NrSW5kZXgpOwogCiAgICAgICAgIC8vIFVubmVj
ZXNzYXJ5IHRvIGFwcGx5IGFuIHVucmVmZXJlbmNlZCBzdGFuZGFyZCBvciBzaGFyZWQgVUJPCiAg
ICAgICAgIGlmICghdW5pZm9ybUJsb2NrLnZlcnRleFN0YXRpY1VzZSgpICYmICF1bmlmb3JtQmxv
Y2suZnJhZ21lbnRTdGF0aWNVc2UoKSkKQEAgLTE1OTUsNyArMTU5Niw3IEBAIGdsOjpFcnJvciBQ
cm9ncmFtRDNEOjphcHBseVVuaWZvcm1CdWZmZXIKICAgICAgICAgaWYgKHVuaWZvcm1CbG9jay52
ZXJ0ZXhTdGF0aWNVc2UoKSkKICAgICAgICAgewogICAgICAgICAgICAgdW5zaWduZWQgaW50IHJl
Z2lzdGVySW5kZXggPSB1bmlmb3JtQmxvY2sudnNSZWdpc3RlckluZGV4IC0gcmVzZXJ2ZWRCdWZm
ZXJzSW5WUzsKLSAgICAgICAgICAgIEFTU0VSVChyZWdpc3RlckluZGV4IDwgZGF0YS5jYXBzLT5t
YXhWZXJ0ZXhVbmlmb3JtQmxvY2tzKTsKKyAgICAgICAgICAgIEFTU0VSVChyZWdpc3RlckluZGV4
IDwgZGF0YS5nZXRDYXBzKCkubWF4VmVydGV4VW5pZm9ybUJsb2Nrcyk7CiAKICAgICAgICAgICAg
IGlmIChtVmVydGV4VUJPQ2FjaGUuc2l6ZSgpIDw9IHJlZ2lzdGVySW5kZXgpCiAgICAgICAgICAg
ICB7CkBAIC0xNjA5LDcgKzE2MTAsNyBAQCBnbDo6RXJyb3IgUHJvZ3JhbUQzRDo6YXBwbHlVbmlm
b3JtQnVmZmVyCiAgICAgICAgIGlmICh1bmlmb3JtQmxvY2suZnJhZ21lbnRTdGF0aWNVc2UoKSkK
ICAgICAgICAgewogICAgICAgICAgICAgdW5zaWduZWQgaW50IHJlZ2lzdGVySW5kZXggPSB1bmlm
b3JtQmxvY2sucHNSZWdpc3RlckluZGV4IC0gcmVzZXJ2ZWRCdWZmZXJzSW5GUzsKLSAgICAgICAg
ICAgIEFTU0VSVChyZWdpc3RlckluZGV4IDwgZGF0YS5jYXBzLT5tYXhGcmFnbWVudFVuaWZvcm1C
bG9ja3MpOworICAgICAgICAgICAgQVNTRVJUKHJlZ2lzdGVySW5kZXggPCBkYXRhLmdldENhcHMo
KS5tYXhGcmFnbWVudFVuaWZvcm1CbG9ja3MpOwogCiAgICAgICAgICAgICBpZiAobUZyYWdtZW50
VUJPQ2FjaGUuc2l6ZSgpIDw9IHJlZ2lzdGVySW5kZXgpCiAgICAgICAgICAgICB7CkBAIC0xNzcy
LDcgKzE3NzMsNyBAQCB2b2lkIFByb2dyYW1EM0Q6OnNldFVuaWZvcm1CbG9ja0JpbmRpbmcoCiB2
b2lkIFByb2dyYW1EM0Q6OmRlZmluZVVuaWZvcm1zQW5kQXNzaWduUmVnaXN0ZXJzKCkKIHsKICAg
ICBEM0RVbmlmb3JtTWFwIHVuaWZvcm1NYXA7Ci0gICAgY29uc3QgZ2w6OlNoYWRlciAqdmVydGV4
U2hhZGVyID0gbURhdGEuZ2V0QXR0YWNoZWRWZXJ0ZXhTaGFkZXIoKTsKKyAgICBjb25zdCBnbDo6
U2hhZGVyICp2ZXJ0ZXhTaGFkZXIgPSBtU3RhdGUuZ2V0QXR0YWNoZWRWZXJ0ZXhTaGFkZXIoKTsK
ICAgICBmb3IgKGNvbnN0IHNoOjpVbmlmb3JtICZ2ZXJ0ZXhVbmlmb3JtIDogdmVydGV4U2hhZGVy
LT5nZXRVbmlmb3JtcygpKQogCiAgICAgewpAQCAtMTc4Miw3ICsxNzgzLDcgQEAgdm9pZCBQcm9n
cmFtRDNEOjpkZWZpbmVVbmlmb3Jtc0FuZEFzc2lnbgogICAgICAgICB9CiAgICAgfQogCi0gICAg
Y29uc3QgZ2w6OlNoYWRlciAqZnJhZ21lbnRTaGFkZXIgPSBtRGF0YS5nZXRBdHRhY2hlZEZyYWdt
ZW50U2hhZGVyKCk7CisgICAgY29uc3QgZ2w6OlNoYWRlciAqZnJhZ21lbnRTaGFkZXIgPSBtU3Rh
dGUuZ2V0QXR0YWNoZWRGcmFnbWVudFNoYWRlcigpOwogICAgIGZvciAoY29uc3Qgc2g6OlVuaWZv
cm0gJmZyYWdtZW50VW5pZm9ybSA6IGZyYWdtZW50U2hhZGVyLT5nZXRVbmlmb3JtcygpKQogICAg
IHsKICAgICAgICAgaWYgKGZyYWdtZW50VW5pZm9ybS5zdGF0aWNVc2UpCkBAIC0xNzkyLDcgKzE3
OTMsNyBAQCB2b2lkIFByb2dyYW1EM0Q6OmRlZmluZVVuaWZvcm1zQW5kQXNzaWduCiAgICAgfQog
CiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgRDNEVW5pZm9ybSBsaXN0IHRvIG1pcnJvciB0aGUgaW5k
ZXhpbmcgb2YgdGhlIEdMIGxheWVyLgotICAgIGZvciAoY29uc3QgZ2w6OkxpbmtlZFVuaWZvcm0g
JmdsVW5pZm9ybSA6IG1EYXRhLmdldFVuaWZvcm1zKCkpCisgICAgZm9yIChjb25zdCBnbDo6TGlu
a2VkVW5pZm9ybSAmZ2xVbmlmb3JtIDogbVN0YXRlLmdldFVuaWZvcm1zKCkpCiAgICAgewogICAg
ICAgICBpZiAoIWdsVW5pZm9ybS5pc0luRGVmYXVsdEJsb2NrKCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKQEAgLTE5MzYsNyArMTkzNyw3IEBAIHZvaWQgUHJvZ3JhbUQzRDo6c2V0VW5pZm9ybShH
TGludCBsb2NhdGkKICAgICBEM0RVbmlmb3JtICp0YXJnZXRVbmlmb3JtID0gZ2V0RDNEVW5pZm9y
bUZyb21Mb2NhdGlvbihsb2NhdGlvbik7CiAKICAgICB1bnNpZ25lZCBpbnQgZWxlbWVudENvdW50
ID0gdGFyZ2V0VW5pZm9ybS0+ZWxlbWVudENvdW50KCk7Ci0gICAgdW5zaWduZWQgaW50IGFycmF5
RWxlbWVudCA9IG1EYXRhLmdldFVuaWZvcm1Mb2NhdGlvbnMoKVtsb2NhdGlvbl0uZWxlbWVudDsK
KyAgICB1bnNpZ25lZCBpbnQgYXJyYXlFbGVtZW50ID0gbVN0YXRlLmdldFVuaWZvcm1Mb2NhdGlv
bnMoKVtsb2NhdGlvbl0uZWxlbWVudDsKICAgICB1bnNpZ25lZCBpbnQgY291bnQgICAgICAgID0g
c3RkOjptaW4oZWxlbWVudENvdW50IC0gYXJyYXlFbGVtZW50LCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBpbnQ+KGNvdW50SW4pKTsKIAogICAgIGlmICh0YXJnZXRVbmlmb3JtLT50eXBlID09IHRhcmdl
dFVuaWZvcm1UeXBlKQpAQCAtMjAxNiw3ICsyMDE3LDcgQEAgdm9pZCBQcm9ncmFtRDNEOjpzZXRV
bmlmb3JtTWF0cml4ZnYoR0xpbgogICAgIEQzRFVuaWZvcm0gKnRhcmdldFVuaWZvcm0gPSBnZXRE
M0RVbmlmb3JtRnJvbUxvY2F0aW9uKGxvY2F0aW9uKTsKIAogICAgIHVuc2lnbmVkIGludCBlbGVt
ZW50Q291bnQgPSB0YXJnZXRVbmlmb3JtLT5lbGVtZW50Q291bnQoKTsKLSAgICB1bnNpZ25lZCBp
bnQgYXJyYXlFbGVtZW50ID0gbURhdGEuZ2V0VW5pZm9ybUxvY2F0aW9ucygpW2xvY2F0aW9uXS5l
bGVtZW50OworICAgIHVuc2lnbmVkIGludCBhcnJheUVsZW1lbnQgPSBtU3RhdGUuZ2V0VW5pZm9y
bUxvY2F0aW9ucygpW2xvY2F0aW9uXS5lbGVtZW50OwogICAgIHVuc2lnbmVkIGludCBjb3VudCAg
ICAgICAgPSBzdGQ6Om1pbihlbGVtZW50Q291bnQgLSBhcnJheUVsZW1lbnQsIHN0YXRpY19jYXN0
PHVuc2lnbmVkIGludD4oY291bnRJbikpOwogCiAgICAgY29uc3QgdW5zaWduZWQgaW50IHRhcmdl
dE1hdHJpeFN0cmlkZSA9ICg0ICogcm93cyk7CkBAIC0yMDc5LDggKzIwODAsOCBAQCB2b2lkIFBy
b2dyYW1EM0Q6OmFzc2lnbkFsbFNhbXBsZXJSZWdpc3RlCiB2b2lkIFByb2dyYW1EM0Q6OmFzc2ln
blNhbXBsZXJSZWdpc3RlcnMoRDNEVW5pZm9ybSAqZDNkVW5pZm9ybSkKIHsKICAgICBBU1NFUlQo
ZDNkVW5pZm9ybS0+aXNTYW1wbGVyKCkpOwotICAgIGNvbnN0IFNoYWRlckQzRCAqdmVydGV4U2hh
ZGVyRDNEICAgPSBHZXRJbXBsQXM8U2hhZGVyRDNEPihtRGF0YS5nZXRBdHRhY2hlZFZlcnRleFNo
YWRlcigpKTsKLSAgICBjb25zdCBTaGFkZXJEM0QgKmZyYWdtZW50U2hhZGVyRDNEID0gR2V0SW1w
bEFzPFNoYWRlckQzRD4obURhdGEuZ2V0QXR0YWNoZWRGcmFnbWVudFNoYWRlcigpKTsKKyAgICBj
b25zdCBTaGFkZXJEM0QgKnZlcnRleFNoYWRlckQzRCAgID0gR2V0SW1wbEFzPFNoYWRlckQzRD4o
bVN0YXRlLmdldEF0dGFjaGVkVmVydGV4U2hhZGVyKCkpOworICAgIGNvbnN0IFNoYWRlckQzRCAq
ZnJhZ21lbnRTaGFkZXJEM0QgPSBHZXRJbXBsQXM8U2hhZGVyRDNEPihtU3RhdGUuZ2V0QXR0YWNo
ZWRGcmFnbWVudFNoYWRlcigpKTsKICAgICBBU1NFUlQodmVydGV4U2hhZGVyRDNELT5oYXNVbmlm
b3JtKGQzZFVuaWZvcm0pIHx8IGZyYWdtZW50U2hhZGVyRDNELT5oYXNVbmlmb3JtKGQzZFVuaWZv
cm0pKTsKICAgICBpZiAodmVydGV4U2hhZGVyRDNELT5oYXNVbmlmb3JtKGQzZFVuaWZvcm0pKQog
ICAgIHsKQEAgLTIxNzEsMTEgKzIxNzIsMTEgQEAgdW5zaWduZWQgaW50IFByb2dyYW1EM0Q6Omlz
c3VlU2VyaWFsKCkKIAogdm9pZCBQcm9ncmFtRDNEOjppbml0QXR0cmliTG9jYXRpb25zVG9EM0RT
ZW1hbnRpYygpCiB7Ci0gICAgY29uc3QgZ2w6OlNoYWRlciAqdmVydGV4U2hhZGVyID0gbURhdGEu
Z2V0QXR0YWNoZWRWZXJ0ZXhTaGFkZXIoKTsKKyAgICBjb25zdCBnbDo6U2hhZGVyICp2ZXJ0ZXhT
aGFkZXIgPSBtU3RhdGUuZ2V0QXR0YWNoZWRWZXJ0ZXhTaGFkZXIoKTsKICAgICBBU1NFUlQodmVy
dGV4U2hhZGVyICE9IG51bGxwdHIpOwogCiAgICAgLy8gSW5pdCBzZW1hbnRpYyBpbmRleAotICAg
IGZvciAoY29uc3Qgc2g6OkF0dHJpYnV0ZSAmYXR0cmlidXRlIDogbURhdGEuZ2V0QXR0cmlidXRl
cygpKQorICAgIGZvciAoY29uc3Qgc2g6OkF0dHJpYnV0ZSAmYXR0cmlidXRlIDogbVN0YXRlLmdl
dEF0dHJpYnV0ZXMoKSkKICAgICB7CiAgICAgICAgIGludCBkM2RTZW1hbnRpYyA9IHZlcnRleFNo
YWRlci0+Z2V0U2VtYW50aWNJbmRleChhdHRyaWJ1dGUubmFtZSk7CiAgICAgICAgIGludCByZWdD
b3VudCAgICA9IGdsOjpWYXJpYWJsZVJlZ2lzdGVyQ291bnQoYXR0cmlidXRlLnR5cGUpOwpAQCAt
MjE5Miw3ICsyMTkzLDcgQEAgdm9pZCBQcm9ncmFtRDNEOjp1cGRhdGVDYWNoZWRJbnB1dExheW91
dAogICAgIG1DYWNoZWRJbnB1dExheW91dC5jbGVhcigpOwogICAgIGNvbnN0IGF1dG8gJnZlcnRl
eEF0dHJpYnV0ZXMgPSBzdGF0ZS5nZXRWZXJ0ZXhBcnJheSgpLT5nZXRWZXJ0ZXhBdHRyaWJ1dGVz
KCk7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGludCBsb2NhdGlvbkluZGV4IDogYW5nbGU6Okl0ZXJh
dGVCaXRTZXQobURhdGEuZ2V0QWN0aXZlQXR0cmliTG9jYXRpb25zTWFzaygpKSkKKyAgICBmb3Ig
KHVuc2lnbmVkIGludCBsb2NhdGlvbkluZGV4IDogYW5nbGU6Okl0ZXJhdGVCaXRTZXQobVN0YXRl
LmdldEFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2soKSkpCiAgICAgewogICAgICAgICBpbnQgZDNk
U2VtYW50aWMgPSBtQXR0cmliTG9jYXRpb25Ub0QzRFNlbWFudGljW2xvY2F0aW9uSW5kZXhdOwog
CkBAIC0yMjE5LDcgKzIyMjAsNyBAQCB2b2lkIFByb2dyYW1EM0Q6OmdhdGhlclRyYW5zZm9ybUZl
ZWRiYWNrCiAgICAgLy8gR2F0aGVyIHRoZSBsaW5rZWQgdmFyeWluZ3MgdGhhdCBhcmUgdXNlZCBm
b3IgdHJhbnNmb3JtIGZlZWRiYWNrLCB0aGV5IHNob3VsZCBhbGwgZXhpc3QuCiAgICAgbVN0cmVh
bU91dFZhcnlpbmdzLmNsZWFyKCk7CiAKLSAgICBjb25zdCBhdXRvICZ0ZlZhcnlpbmdOYW1lcyA9
IG1EYXRhLmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ05hbWVzKCk7CisgICAgY29uc3QgYXV0
byAmdGZWYXJ5aW5nTmFtZXMgPSBtU3RhdGUuZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nTmFt
ZXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGludCBvdXRwdXRTbG90ID0gMDsgb3V0cHV0U2xvdCA8
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4odGZWYXJ5aW5nTmFtZXMuc2l6ZSgpKTsKICAgICAg
ICAgICsrb3V0cHV0U2xvdCkKICAgICB7CkBAIC0yMjc2LDcgKzIyNzcsNyBAQCB2b2lkIFByb2dy
YW1EM0Q6OmdhdGhlclRyYW5zZm9ybUZlZWRiYWNrCiAKIEQzRFVuaWZvcm0gKlByb2dyYW1EM0Q6
OmdldEQzRFVuaWZvcm1Gcm9tTG9jYXRpb24oR0xpbnQgbG9jYXRpb24pCiB7Ci0gICAgcmV0dXJu
IG1EM0RVbmlmb3Jtc1ttRGF0YS5nZXRVbmlmb3JtTG9jYXRpb25zKClbbG9jYXRpb25dLmluZGV4
XTsKKyAgICByZXR1cm4gbUQzRFVuaWZvcm1zW21TdGF0ZS5nZXRVbmlmb3JtTG9jYXRpb25zKClb
bG9jYXRpb25dLmluZGV4XTsKIH0KIAogYm9vbCBQcm9ncmFtRDNEOjpnZXRVbmlmb3JtQmxvY2tT
aXplKGNvbnN0IHN0ZDo6c3RyaW5nICZibG9ja05hbWUsIHNpemVfdCAqc2l6ZU91dCkgY29uc3QK
QEAgLTIzMDgsNCArMjMwOSwxMyBAQCBib29sIFByb2dyYW1EM0Q6OmdldFVuaWZvcm1CbG9ja01l
bWJlckluCiAgICAgKm1lbWJlckluZm9PdXQgPSBpbmZvSXRlci0+c2Vjb25kOwogICAgIHJldHVy
biB0cnVlOwogfQorCit2b2lkIFByb2dyYW1EM0Q6OnNldFBhdGhGcmFnbWVudElucHV0R2VuKGNv
bnN0IHN0ZDo6c3RyaW5nICZpbnB1dE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBnZW5Nb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBjb21wb25lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpjb2VmZnMpCit7CisgICAgVU5SRUFDSEFC
TEUoKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1Byb2dyYW1EM0QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1Byb2dy
YW1EM0QuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9Qcm9ncmFtRDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTk3
LDE5ICs5NywxNiBAQCBzdHJ1Y3QgRDNEVmFyeWluZyBmaW5hbAogICAgIHVuc2lnbmVkIGludCBv
dXRwdXRTbG90OwogfTsKIAotY2xhc3MgUHJvZ3JhbUQzRE1ldGFkYXRhIDogYW5nbGU6Ok5vbkNv
cHlhYmxlCitjbGFzcyBQcm9ncmFtRDNETWV0YWRhdGEgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFi
bGUKIHsKICAgcHVibGljOgotICAgIFByb2dyYW1EM0RNZXRhZGF0YShpbnQgcmVuZGVyZXJNYWpv
clNoYWRlck1vZGVsLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAm
c2hhZGVyTW9kZWxTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdXNlc0luc3Rh
bmNlZFBvaW50U3ByaXRlRW11bGF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICBib29sIHVz
ZXNWaWV3U2NhbGUsCisgICAgUHJvZ3JhbUQzRE1ldGFkYXRhKFJlbmRlcmVyRDNEICpyZW5kZXJl
ciwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hhZGVyRDNEICp2ZXJ0ZXhTaGFkZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoYWRlckQzRCAqZnJhZ21lbnRTaGFkZXIp
OwogCiAgICAgaW50IGdldFJlbmRlcmVyTWFqb3JTaGFkZXJNb2RlbCgpIGNvbnN0OwotICAgIGJv
b2wgdXNlc0Jyb2FkY2FzdChjb25zdCBnbDo6RGF0YSAmZGF0YSkgY29uc3Q7Ci0gICAgYm9vbCB1
c2VzRnJhZ0RlcHRoKGNvbnN0IGdsOjpQcm9ncmFtOjpEYXRhICZwcm9ncmFtRGF0YSkgY29uc3Q7
CisgICAgYm9vbCB1c2VzQnJvYWRjYXN0KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEpIGNv
bnN0OworICAgIGJvb2wgdXNlc0ZyYWdEZXB0aCgpIGNvbnN0OwogICAgIGJvb2wgdXNlc1BvaW50
Q29vcmQoKSBjb25zdDsKICAgICBib29sIHVzZXNGcmFnQ29vcmQoKSBjb25zdDsKICAgICBib29s
IHVzZXNQb2ludFNpemUoKSBjb25zdDsKQEAgLTEzNCw3ICsxMzEsNyBAQCBjbGFzcyBQcm9ncmFt
RDNETWV0YWRhdGEgOiBhbmdsZTo6Tm9uQ29wCiBjbGFzcyBQcm9ncmFtRDNEIDogcHVibGljIFBy
b2dyYW1JbXBsCiB7CiAgIHB1YmxpYzoKLSAgICBQcm9ncmFtRDNEKGNvbnN0IGdsOjpQcm9ncmFt
OjpEYXRhICZkYXRhLCBSZW5kZXJlckQzRCAqcmVuZGVyZXIpOworICAgIFByb2dyYW1EM0QoY29u
c3QgZ2w6OlByb2dyYW1TdGF0ZSAmZGF0YSwgUmVuZGVyZXJEM0QgKnJlbmRlcmVyKTsKICAgICB2
aXJ0dWFsIH5Qcm9ncmFtRDNEKCk7CiAKICAgICBjb25zdCBzdGQ6OnZlY3RvcjxQaXhlbFNoYWRl
ck91dHB1dFZhcmlhYmxlPiAmZ2V0UGl4ZWxTaGFkZXJLZXkoKSB7IHJldHVybiBtUGl4ZWxTaGFk
ZXJLZXk7IH0KQEAgLTE2MywyMSArMTYwLDI1IEBAIGNsYXNzIFByb2dyYW1EM0QgOiBwdWJsaWMg
UHJvZ3JhbUltcGwKICAgICBnbDo6RXJyb3IgZ2V0VmVydGV4RXhlY3V0YWJsZUZvcklucHV0TGF5
b3V0KGNvbnN0IGdsOjpJbnB1dExheW91dCAmaW5wdXRMYXlvdXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJFeGVjdXRhYmxlRDNEICoqb3V0
RXhlY3R1YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdsOjpJbmZvTG9nICppbmZvTG9nKTsKLSAgICBnbDo6RXJyb3IgZ2V0R2VvbWV0cnlFeGVj
dXRhYmxlRm9yUHJpbWl0aXZlVHlwZShjb25zdCBnbDo6RGF0YSAmZGF0YSwKKyAgICBnbDo6RXJy
b3IgZ2V0R2VvbWV0cnlFeGVjdXRhYmxlRm9yUHJpbWl0aXZlVHlwZShjb25zdCBnbDo6Q29udGV4
dFN0YXRlICZkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBkcmF3TW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJFeGVjdXRhYmxlRDNEICoqb3V0RXhlY3V0YWJs
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
bDo6SW5mb0xvZyAqaW5mb0xvZyk7CiAKLSAgICBMaW5rUmVzdWx0IGxpbmsoY29uc3QgZ2w6OkRh
dGEgJmRhdGEsIGdsOjpJbmZvTG9nICZpbmZvTG9nKSBvdmVycmlkZTsKKyAgICBMaW5rUmVzdWx0
IGxpbmsoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwgZ2w6OkluZm9Mb2cgJmluZm9Mb2cp
IG92ZXJyaWRlOwogICAgIEdMYm9vbGVhbiB2YWxpZGF0ZShjb25zdCBnbDo6Q2FwcyAmY2Fwcywg
Z2w6OkluZm9Mb2cgKmluZm9Mb2cpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBnZXRVbmlmb3JtQmxv
Y2tTaXplKGNvbnN0IHN0ZDo6c3RyaW5nICZibG9ja05hbWUsIHNpemVfdCAqc2l6ZU91dCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBnZXRVbmlmb3JtQmxvY2tNZW1iZXJJbmZvKGNvbnN0IHN0
ZDo6c3RyaW5nICZtZW1iZXJVbmlmb3JtTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2g6OkJsb2NrTWVtYmVySW5mbyAqbWVtYmVySW5mb091dCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzZXRQYXRoRnJhZ21lbnRJbnB1dEdlbihjb25zdCBzdGQ6OnN0cmluZyAm
aW5wdXROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGdlbk1v
ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBjb21wb25lbnRzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqY29lZmZzKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZVVuaWZvcm1TdG9yYWdlKCk7CiAgICAgZ2w6
OkVycm9yIGFwcGx5VW5pZm9ybXMoR0xlbnVtIGRyYXdNb2RlKTsKLSAgICBnbDo6RXJyb3IgYXBw
bHlVbmlmb3JtQnVmZmVycyhjb25zdCBnbDo6RGF0YSAmZGF0YSk7CisgICAgZ2w6OkVycm9yIGFw
cGx5VW5pZm9ybUJ1ZmZlcnMoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSk7CiAgICAgdm9p
ZCBkaXJ0eUFsbFVuaWZvcm1zKCk7CiAKICAgICB2b2lkIHNldFVuaWZvcm0xZnYoR0xpbnQgbG9j
YXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpOwpAQCAtMzQwLDcgKzM0MSw3
IEBAIGNsYXNzIFByb2dyYW1EM0QgOiBwdWJsaWMgUHJvZ3JhbUltcGwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0VW5pZm9ybVR5cGUpOwogCi0gICAgTGlua1Jlc3VsdCBjb21w
aWxlUHJvZ3JhbUV4ZWN1dGFibGVzKGNvbnN0IGdsOjpEYXRhICZkYXRhLCBnbDo6SW5mb0xvZyAm
aW5mb0xvZyk7CisgICAgTGlua1Jlc3VsdCBjb21waWxlUHJvZ3JhbUV4ZWN1dGFibGVzKGNvbnN0
IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsIGdsOjpJbmZvTG9nICZpbmZvTG9nKTsKIAogICAgIHZv
aWQgZ2F0aGVyVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhjb25zdCBWYXJ5aW5nUGFja2luZyAm
dmFyeWluZ3MpOwogICAgIEQzRFVuaWZvcm0gKmdldEQzRFVuaWZvcm1CeU5hbWUoY29uc3Qgc3Rk
OjpzdHJpbmcgJm5hbWUpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9SZW5kZXJidWZmZXJEM0QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyYnVmZmVy
RDNELmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5kZXJidWZmZXJEM0QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00OCw3ICs0OCw3IEBAIGdsOjpFcnJvciBSZW5kZXJidWZmZXJEM0Q6OnNldFN0b3JhZ2VN
dWwKICAgICAvLyB0aGUgc3BlY2lmaWVkIHN0b3JhZ2UuCiAgICAgLy8gQmVjYXVzZSBFUyAzLjAg
YWxyZWFkeSBrbm93cyB0aGUgZXhhY3QgbnVtYmVyIG9mIHN1cHBvcnRlZCBzYW1wbGVzLCBpdCB3
b3VsZCBhbHJlYWR5IGhhdmUgYmVlbgogICAgIC8vIHZhbGlkYXRlZCBhbmQgZ2VuZXJhdGVkIEdM
X0lOVkFMSURfVkFMVUUuCi0gICAgY29uc3QgZ2w6OlRleHR1cmVDYXBzICZmb3JtYXRDYXBzID0g
bVJlbmRlcmVyLT5nZXRSZW5kZXJlclRleHR1cmVDYXBzKCkuZ2V0KGNyZWF0aW9uRm9ybWF0KTsK
KyAgICBjb25zdCBnbDo6VGV4dHVyZUNhcHMgJmZvcm1hdENhcHMgPSBtUmVuZGVyZXItPmdldE5h
dGl2ZVRleHR1cmVDYXBzKCkuZ2V0KGNyZWF0aW9uRm9ybWF0KTsKICAgICBpZiAoc2FtcGxlcyA+
IGZvcm1hdENhcHMuZ2V0TWF4U2FtcGxlcygpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiUmVuZGVyYnVmZmVyIGZvcm1hdCBkb2VzIG5vdCBzdXBw
b3J0ICV1IHNhbXBsZXMsICV1IGlzIHRoZSBtYXhpbXVtLiIsCkBAIC01NiwxOSArNTYsMTQgQEAg
Z2w6OkVycm9yIFJlbmRlcmJ1ZmZlckQzRDo6c2V0U3RvcmFnZU11bAogICAgIH0KIAogICAgIFJl
bmRlclRhcmdldEQzRCAqbmV3UlQgPSBOVUxMOwotICAgIGdsOjpFcnJvciBlcnJvciA9Ci0gICAg
ICAgIG1SZW5kZXJlci0+Y3JlYXRlUmVuZGVyVGFyZ2V0KHN0YXRpY19jYXN0PGludD4od2lkdGgp
LCBzdGF0aWNfY2FzdDxpbnQ+KGhlaWdodCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0aW9uRm9ybWF0LCBzdGF0aWNfY2FzdDxHTHNpemVpPihzYW1wbGVzKSwg
Jm5ld1JUKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkobVJlbmRlcmVyLT5jcmVhdGVSZW5kZXJUYXJn
ZXQoc3RhdGljX2Nhc3Q8aW50Pih3aWR0aCksIHN0YXRpY19jYXN0PGludD4oaGVpZ2h0KSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRpb25Gb3JtYXQs
IHN0YXRpY19jYXN0PEdMc2l6ZWk+KHNhbXBsZXMpLCAmbmV3UlQpKTsKIAogICAgIFNhZmVEZWxl
dGUobVJlbmRlclRhcmdldCk7CiAgICAgbUltYWdlICAgICAgICA9IG51bGxwdHI7CiAgICAgbVJl
bmRlclRhcmdldCA9IG5ld1JUOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7
CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBSZW5kZXJidWZmZXJE
M0Q6OnNldFN0b3JhZ2VFR0xJbWFnZVRhcmdldChlZ2w6OkltYWdlICppbWFnZSkKQEAgLTc2LDcg
KzcxLDcgQEAgZ2w6OkVycm9yIFJlbmRlcmJ1ZmZlckQzRDo6c2V0U3RvcmFnZUVHTAogICAgIG1J
bWFnZSA9IEdldEltcGxBczxFR0xJbWFnZUQzRD4oaW1hZ2UpOwogICAgIFNhZmVEZWxldGUobVJl
bmRlclRhcmdldCk7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICBy
ZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFJlbmRlcmJ1ZmZlckQzRDo6Z2V0
UmVuZGVyVGFyZ2V0KFJlbmRlclRhcmdldEQzRCAqKm91dFJlbmRlclRhcmdldCkKQEAgLTg4LDcg
KzgzLDcgQEAgZ2w6OkVycm9yIFJlbmRlcmJ1ZmZlckQzRDo6Z2V0UmVuZGVyVGFyZwogICAgIGVs
c2UKICAgICB7CiAgICAgICAgICpvdXRSZW5kZXJUYXJnZXQgPSBtUmVuZGVyVGFyZ2V0OwotICAg
ICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlcmVyRDNELmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlcmVyRDNE
LmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5kZXJlckQzRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
LDYgKzE1LDcgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL0ZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRnJhbWVidWZmZXJB
dHRhY2htZW50LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvVGV4dHVyZUltcGwuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvQnVmZmVyRDNELmgiCiAjaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvZDNkL0RldmljZUQzRC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9EaXNwbGF5RDNELmgiCkBAIC0yOCwyMyArMjksMTMgQEAKIG5hbWVzcGFjZSBy
eAogewogCi1uYW1lc3BhY2UKLXsKLS8vIElmIHdlIHJlcXVlc3QgYSBzY3JhdGNoIGJ1ZmZlciBy
ZXF1ZXN0aW5nIGEgc21hbGxlciBzaXplIHRoaXMgbWFueSB0aW1lcywKLS8vIHJlbGVhc2UgYW5k
IHJlY3JlYXRlIHRoZSBzY3JhdGNoIGJ1ZmZlci4gVGhpcyBlbnN1cmVzIHdlIGRvbid0IGhhdmUg
YQotLy8gZGVnZW5lcmF0ZSBjYXNlIHdoZXJlIHdlIGFyZSBzdHVjayBob2dnaW5nIG1lbW9yeS4K
LWNvbnN0IGludCBTY3JhdGNoTWVtb3J5QnVmZmVyTGlmZXRpbWUgPSAxMDAwOwotCi19ICAvLyBh
bm9ueW1vdXMgbmFtZXNwYWNlCi0KIFJlbmRlcmVyRDNEOjpSZW5kZXJlckQzRChlZ2w6OkRpc3Bs
YXkgKmRpc3BsYXkpCiAgICAgOiBtRGlzcGxheShkaXNwbGF5KSwKLSAgICAgIG1EZXZpY2VMb3N0
KGZhbHNlKSwKLSAgICAgIG1Bbm5vdGF0b3IobnVsbHB0ciksCiAgICAgICBtUHJlc2VudFBhdGhG
YXN0RW5hYmxlZChmYWxzZSksCi0gICAgICBtU2NyYXRjaE1lbW9yeUJ1ZmZlclJlc2V0Q291bnRl
cigwKSwKKyAgICAgIG1DYXBzSW5pdGlhbGl6ZWQoZmFsc2UpLAogICAgICAgbVdvcmthcm91bmRz
SW5pdGlhbGl6ZWQoZmFsc2UpLAotICAgICAgbURpc2pvaW50KGZhbHNlKQorICAgICAgbURpc2pv
aW50KGZhbHNlKSwKKyAgICAgIG1EZXZpY2VMb3N0KGZhbHNlKQogewogfQogCkBAIC01NSwxOTcg
KzQ2LDIwIEBAIFJlbmRlcmVyRDNEOjp+UmVuZGVyZXJEM0QoKQogCiB2b2lkIFJlbmRlcmVyRDNE
OjpjbGVhbnVwKCkKIHsKLSAgICBtU2NyYXRjaE1lbW9yeUJ1ZmZlci5yZXNpemUoMCk7CiAgICAg
Zm9yIChhdXRvICZpbmNvbXBsZXRlVGV4dHVyZSA6IG1JbmNvbXBsZXRlVGV4dHVyZXMpCiAgICAg
ewogICAgICAgICBpbmNvbXBsZXRlVGV4dHVyZS5zZWNvbmQuc2V0KG51bGxwdHIpOwogICAgIH0K
ICAgICBtSW5jb21wbGV0ZVRleHR1cmVzLmNsZWFyKCk7Ci0KLSAgICBpZiAobUFubm90YXRvciAh
PSBudWxscHRyKQotICAgIHsKLSAgICAgICAgZ2w6OlVuaW5pdGlhbGl6ZURlYnVnQW5ub3RhdGlv
bnMoKTsKLSAgICAgICAgU2FmZURlbGV0ZShtQW5ub3RhdG9yKTsKLSAgICB9Ci19Ci0KLVNhbXBs
ZXJJbXBsICpSZW5kZXJlckQzRDo6Y3JlYXRlU2FtcGxlcigpCi17Ci0gICAgcmV0dXJuIG5ldyBT
YW1wbGVyRDNEKCk7Ci19Ci0KLWdsOjpFcnJvciBSZW5kZXJlckQzRDo6ZHJhd0FycmF5cyhjb25z
dCBnbDo6RGF0YSAmZGF0YSwgR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50
KQotewotICAgIHJldHVybiBnZW5lcmljRHJhd0FycmF5cyhkYXRhLCBtb2RlLCBmaXJzdCwgY291
bnQsIDApOwotfQotCi1nbDo6RXJyb3IgUmVuZGVyZXJEM0Q6OmRyYXdBcnJheXNJbnN0YW5jZWQo
Y29uc3QgZ2w6OkRhdGEgJmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIG1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgZmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlQ291bnQpCi17Ci0gICAgcmV0dXJuIGdlbmVyaWNE
cmF3QXJyYXlzKGRhdGEsIG1vZGUsIGZpcnN0LCBjb3VudCwgaW5zdGFuY2VDb3VudCk7Ci19Ci0K
LWdsOjpFcnJvciBSZW5kZXJlckQzRDo6ZHJhd0VsZW1lbnRzKGNvbnN0IGdsOjpEYXRhICZkYXRh
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkK
LXsKLSAgICByZXR1cm4gZ2VuZXJpY0RyYXdFbGVtZW50cyhkYXRhLCBtb2RlLCBjb3VudCwgdHlw
ZSwgaW5kaWNlcywgMCwgaW5kZXhSYW5nZSk7Ci19Ci0KLWdsOjpFcnJvciBSZW5kZXJlckQzRDo6
ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKGNvbnN0IGdsOjpEYXRhICZkYXRhLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmlu
ZGljZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGluc3RhbmNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpJbmRleFJhbmdlICZpbmRleFJhbmdlKQotewotICAgIHJldHVybiBnZW5l
cmljRHJhd0VsZW1lbnRzKGRhdGEsIG1vZGUsIGNvdW50LCB0eXBlLCBpbmRpY2VzLCBpbnN0YW5j
ZXMsIGluZGV4UmFuZ2UpOwotfQotCi1nbDo6RXJyb3IgUmVuZGVyZXJEM0Q6OmRyYXdSYW5nZUVs
ZW1lbnRzKGNvbnN0IGdsOjpEYXRhICZkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IHN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgZW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkKLXsKLSAgICBy
ZXR1cm4gZ2VuZXJpY0RyYXdFbGVtZW50cyhkYXRhLCBtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNl
cywgMCwgaW5kZXhSYW5nZSk7Ci19Ci0KLWdsOjpFcnJvciBSZW5kZXJlckQzRDo6Z2VuZXJpY0Ry
YXdFbGVtZW50cyhjb25zdCBnbDo6RGF0YSAmZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5n
ZSAmaW5kZXhSYW5nZSkKLXsKLSAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbSA9IGRhdGEuc3RhdGUt
PmdldFByb2dyYW0oKTsKLSAgICBBU1NFUlQocHJvZ3JhbSAhPSBudWxscHRyKTsKLSAgICBQcm9n
cmFtRDNEICpwcm9ncmFtRDNEID0gR2V0SW1wbEFzPFByb2dyYW1EM0Q+KHByb2dyYW0pOwotICAg
IGJvb2wgdXNlc1BvaW50U2l6ZSAgICAgPSBwcm9ncmFtRDNELT51c2VzUG9pbnRTaXplKCk7Ci0K
LSAgICBwcm9ncmFtRDNELT51cGRhdGVTYW1wbGVyTWFwcGluZygpOwotCi0gICAgQU5HTEVfVFJZ
KGdlbmVyYXRlU3dpenpsZXMoZGF0YSkpOwotCi0gICAgaWYgKCFhcHBseVByaW1pdGl2ZVR5cGUo
bW9kZSwgY291bnQsIHVzZXNQb2ludFNpemUpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7Ci0gICAgfQotCi0gICAgQU5HTEVfVFJZKHVwZGF0ZVN0YXRlKGRhdGEsIG1vZGUp
KTsKLQotICAgIFRyYW5zbGF0ZWRJbmRleERhdGEgaW5kZXhJbmZvOwotICAgIGluZGV4SW5mby5p
bmRleFJhbmdlID0gaW5kZXhSYW5nZTsKLQotICAgIEFOR0xFX1RSWShhcHBseUluZGV4QnVmZmVy
KGRhdGEsIGluZGljZXMsIGNvdW50LCBtb2RlLCB0eXBlLCAmaW5kZXhJbmZvKSk7Ci0KLSAgICBh
cHBseVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVycygqZGF0YS5zdGF0ZSk7Ci0gICAgLy8gVHJhbnNm
b3JtIGZlZWRiYWNrIGlzIG5vdCBhbGxvd2VkIGZvciBEcmF3RWxlbWVudHMsIHRoaXMgZXJyb3Ig
c2hvdWxkIGhhdmUgYmVlbiBjYXVnaHQgYXQgdGhlIEFQSSB2YWxpZGF0aW9uCi0gICAgLy8gbGF5
ZXIuCi0gICAgQVNTRVJUKCFkYXRhLnN0YXRlLT5pc1RyYW5zZm9ybUZlZWRiYWNrQWN0aXZlVW5w
YXVzZWQoKSk7Ci0KLSAgICBzaXplX3QgdmVydGV4Q291bnQgPSBpbmRleEluZm8uaW5kZXhSYW5n
ZS52ZXJ0ZXhDb3VudCgpOwotICAgIEFOR0xFX1RSWShhcHBseVZlcnRleEJ1ZmZlcigqZGF0YS5z
dGF0ZSwgbW9kZSwgc3RhdGljX2Nhc3Q8R0xzaXplaT4oaW5kZXhJbmZvLmluZGV4UmFuZ2Uuc3Rh
cnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHNpemVp
Pih2ZXJ0ZXhDb3VudCksIGluc3RhbmNlcywgJmluZGV4SW5mbykpOwotICAgIEFOR0xFX1RSWShh
cHBseVRleHR1cmVzKGRhdGEpKTsKLSAgICBBTkdMRV9UUlkoYXBwbHlTaGFkZXJzKGRhdGEsIG1v
ZGUpKTsKLSAgICBBTkdMRV9UUlkocHJvZ3JhbUQzRC0+YXBwbHlVbmlmb3JtQnVmZmVycyhkYXRh
KSk7Ci0KLSAgICBpZiAoIXNraXBEcmF3KGRhdGEsIG1vZGUpKQotICAgIHsKLSAgICAgICAgQU5H
TEVfVFJZKGRyYXdFbGVtZW50c0ltcGwoZGF0YSwgaW5kZXhJbmZvLCBtb2RlLCBjb3VudCwgdHlw
ZSwgaW5kaWNlcywgaW5zdGFuY2VzKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGdsOjpOb0Vycm9y
KCk7CiB9CiAKLWdsOjpFcnJvciBSZW5kZXJlckQzRDo6Z2VuZXJpY0RyYXdBcnJheXMoY29uc3Qg
Z2w6OkRhdGEgJmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBtb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBmaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBpbnN0YW5jZXMpCi17Ci0gICAgZ2w6OlByb2dyYW0gKnByb2dyYW0gPSBkYXRhLnN0YXRl
LT5nZXRQcm9ncmFtKCk7Ci0gICAgQVNTRVJUKHByb2dyYW0gIT0gbnVsbHB0cik7Ci0gICAgUHJv
Z3JhbUQzRCAqcHJvZ3JhbUQzRCA9IEdldEltcGxBczxQcm9ncmFtRDNEPihwcm9ncmFtKTsKLSAg
ICBib29sIHVzZXNQb2ludFNpemUgICAgID0gcHJvZ3JhbUQzRC0+dXNlc1BvaW50U2l6ZSgpOwot
Ci0gICAgcHJvZ3JhbUQzRC0+dXBkYXRlU2FtcGxlck1hcHBpbmcoKTsKLQotICAgIEFOR0xFX1RS
WShnZW5lcmF0ZVN3aXp6bGVzKGRhdGEpKTsKLSAgICBpZiAoIWFwcGx5UHJpbWl0aXZlVHlwZSht
b2RlLCBjb3VudCwgdXNlc1BvaW50U2l6ZSkpCi0gICAgewotICAgICAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKLSAgICB9Ci0KLSAgICBBTkdMRV9UUlkodXBkYXRlU3RhdGUoZGF0YSwgbW9kZSkp
OwotICAgIEFOR0xFX1RSWShhcHBseVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVycygqZGF0YS5zdGF0
ZSkpOwotICAgIEFOR0xFX1RSWShhcHBseVZlcnRleEJ1ZmZlcigqZGF0YS5zdGF0ZSwgbW9kZSwg
Zmlyc3QsIGNvdW50LCBpbnN0YW5jZXMsIG51bGxwdHIpKTsKLSAgICBBTkdMRV9UUlkoYXBwbHlU
ZXh0dXJlcyhkYXRhKSk7Ci0gICAgQU5HTEVfVFJZKGFwcGx5U2hhZGVycyhkYXRhLCBtb2RlKSk7
Ci0gICAgQU5HTEVfVFJZKHByb2dyYW1EM0QtPmFwcGx5VW5pZm9ybUJ1ZmZlcnMoZGF0YSkpOwot
Ci0gICAgaWYgKCFza2lwRHJhdyhkYXRhLCBtb2RlKSkKLSAgICB7Ci0gICAgICAgIEFOR0xFX1RS
WShkcmF3QXJyYXlzSW1wbChkYXRhLCBtb2RlLCBmaXJzdCwgY291bnQsIGluc3RhbmNlcykpOwot
Ci0gICAgICAgIGlmIChkYXRhLnN0YXRlLT5pc1RyYW5zZm9ybUZlZWRiYWNrQWN0aXZlVW5wYXVz
ZWQoKSkKLSAgICAgICAgewotICAgICAgICAgICAgQU5HTEVfVFJZKG1hcmtUcmFuc2Zvcm1GZWVk
YmFja1VzYWdlKGRhdGEpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBnbDo6Tm9F
cnJvcigpOwotfQotCi1nbDo6RXJyb3IgUmVuZGVyZXJEM0Q6OmdlbmVyYXRlU3dpenpsZXMoY29u
c3QgZ2w6OkRhdGEgJmRhdGEsIGdsOjpTYW1wbGVyVHlwZSB0eXBlKQotewotICAgIFByb2dyYW1E
M0QgKnByb2dyYW1EM0QgPSBHZXRJbXBsQXM8UHJvZ3JhbUQzRD4oZGF0YS5zdGF0ZS0+Z2V0UHJv
Z3JhbSgpKTsKLQotICAgIHVuc2lnbmVkIGludCBzYW1wbGVyUmFuZ2UgPSBwcm9ncmFtRDNELT5n
ZXRVc2VkU2FtcGxlclJhbmdlKHR5cGUpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7
IGkgPCBzYW1wbGVyUmFuZ2U7IGkrKykKLSAgICB7Ci0gICAgICAgIEdMZW51bSB0ZXh0dXJlVHlw
ZSA9IHByb2dyYW1EM0QtPmdldFNhbXBsZXJUZXh0dXJlVHlwZSh0eXBlLCBpKTsKLSAgICAgICAg
R0xpbnQgdGV4dHVyZVVuaXQgPSBwcm9ncmFtRDNELT5nZXRTYW1wbGVyTWFwcGluZyh0eXBlLCBp
LCAqZGF0YS5jYXBzKTsKLSAgICAgICAgaWYgKHRleHR1cmVVbml0ICE9IC0xKQotICAgICAgICB7
Ci0gICAgICAgICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSA9IGRhdGEuc3RhdGUtPmdldFNhbXBs
ZXJUZXh0dXJlKHRleHR1cmVVbml0LCB0ZXh0dXJlVHlwZSk7Ci0gICAgICAgICAgICBBU1NFUlQo
dGV4dHVyZSk7Ci0gICAgICAgICAgICBpZiAodGV4dHVyZS0+Z2V0VGV4dHVyZVN0YXRlKCkuc3dp
enpsZVJlcXVpcmVkKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQU5HTEVfVFJZ
KGdlbmVyYXRlU3dpenpsZSh0ZXh0dXJlKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKLX0KLQotZ2w6OkVycm9yIFJlbmRlcmVy
RDNEOjpnZW5lcmF0ZVN3aXp6bGVzKGNvbnN0IGdsOjpEYXRhICZkYXRhKQotewotICAgIEFOR0xF
X1RSWShnZW5lcmF0ZVN3aXp6bGVzKGRhdGEsIGdsOjpTQU1QTEVSX1ZFUlRFWCkpOwotICAgIEFO
R0xFX1RSWShnZW5lcmF0ZVN3aXp6bGVzKGRhdGEsIGdsOjpTQU1QTEVSX1BJWEVMKSk7Ci0gICAg
cmV0dXJuIGdsOjpOb0Vycm9yKCk7Ci19Ci0KLXVuc2lnbmVkIGludCBSZW5kZXJlckQzRDo6R2V0
QmxlbmRTYW1wbGVNYXNrKGNvbnN0IGdsOjpEYXRhICZkYXRhLCBpbnQgc2FtcGxlcykKK3Vuc2ln
bmVkIGludCBSZW5kZXJlckQzRDo6R2V0QmxlbmRTYW1wbGVNYXNrKGNvbnN0IGdsOjpDb250ZXh0
U3RhdGUgJmRhdGEsIGludCBzYW1wbGVzKQogeworICAgIGNvbnN0IGF1dG8gJmdsU3RhdGUgPSBk
YXRhLmdldFN0YXRlKCk7CiAgICAgdW5zaWduZWQgaW50IG1hc2sgPSAwOwotICAgIGlmIChkYXRh
LnN0YXRlLT5pc1NhbXBsZUNvdmVyYWdlRW5hYmxlZCgpKQorICAgIGlmIChnbFN0YXRlLmlzU2Ft
cGxlQ292ZXJhZ2VFbmFibGVkKCkpCiAgICAgewotICAgICAgICBHTGNsYW1wZiBjb3ZlcmFnZVZh
bHVlID0gZGF0YS5zdGF0ZS0+Z2V0U2FtcGxlQ292ZXJhZ2VWYWx1ZSgpOworICAgICAgICBHTGNs
YW1wZiBjb3ZlcmFnZVZhbHVlID0gZ2xTdGF0ZS5nZXRTYW1wbGVDb3ZlcmFnZVZhbHVlKCk7CiAg
ICAgICAgIGlmIChjb3ZlcmFnZVZhbHVlICE9IDApCiAgICAgICAgIHsKICAgICAgICAgICAgIGZs
b2F0IHRocmVzaG9sZCA9IDAuNWY7CkBAIC0yNjIsNyArNzYsNyBAQCB1bnNpZ25lZCBpbnQgUmVu
ZGVyZXJEM0Q6OkdldEJsZW5kU2FtcGxlCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAg
ICAgICBib29sIGNvdmVyYWdlSW52ZXJ0ID0gZGF0YS5zdGF0ZS0+Z2V0U2FtcGxlQ292ZXJhZ2VJ
bnZlcnQoKTsKKyAgICAgICAgYm9vbCBjb3ZlcmFnZUludmVydCA9IGdsU3RhdGUuZ2V0U2FtcGxl
Q292ZXJhZ2VJbnZlcnQoKTsKICAgICAgICAgaWYgKGNvdmVyYWdlSW52ZXJ0KQogICAgICAgICB7
CiAgICAgICAgICAgICBtYXNrID0gfm1hc2s7CkBAIC0yNzYsMjYgKzkwLDE5IEBAIHVuc2lnbmVk
IGludCBSZW5kZXJlckQzRDo6R2V0QmxlbmRTYW1wbGUKICAgICByZXR1cm4gbWFzazsKIH0KIAot
Ly8gQXBwbGllcyB0aGUgc2hhZGVycyBhbmQgc2hhZGVyIGNvbnN0YW50cyB0byB0aGUgRGlyZWN0
M0QgZGV2aWNlCi1nbDo6RXJyb3IgUmVuZGVyZXJEM0Q6OmFwcGx5U2hhZGVycyhjb25zdCBnbDo6
RGF0YSAmZGF0YSwgR0xlbnVtIGRyYXdNb2RlKQotewotICAgIGdsOjpQcm9ncmFtICpwcm9ncmFt
ID0gZGF0YS5zdGF0ZS0+Z2V0UHJvZ3JhbSgpOwotICAgIFByb2dyYW1EM0QgKnByb2dyYW1EM0Qg
PSBHZXRJbXBsQXM8UHJvZ3JhbUQzRD4ocHJvZ3JhbSk7Ci0gICAgcHJvZ3JhbUQzRC0+dXBkYXRl
Q2FjaGVkSW5wdXRMYXlvdXQoKmRhdGEuc3RhdGUpOwotCi0gICAgQU5HTEVfVFJZKGFwcGx5U2hh
ZGVyc0ltcGwoZGF0YSwgZHJhd01vZGUpKTsKLQotICAgIHJldHVybiBwcm9ncmFtRDNELT5hcHBs
eVVuaWZvcm1zKGRyYXdNb2RlKTsKLX0KLQogLy8gRm9yIGVhY2ggRGlyZWN0M0Qgc2FtcGxlciBv
ZiBlaXRoZXIgdGhlIHBpeGVsIG9yIHZlcnRleCBzdGFnZSwKIC8vIGxvb2tzIHVwIHRoZSBjb3Jy
ZXNwb25kaW5nIE9wZW5HTCB0ZXh0dXJlIGltYWdlIHVuaXQgYW5kIHRleHR1cmUgdHlwZSwKIC8v
IGFuZCBzZXRzIHRoZSB0ZXh0dXJlIGFuZCBpdHMgYWRkcmVzc2luZy9maWx0ZXJpbmcgc3RhdGUg
KG9yIE5VTEwgd2hlbiBpbmFjdGl2ZSkuCiAvLyBTYW1wbGVyIG1hcHBpbmcgbmVlZHMgdG8gYmUg
dXAtdG8tZGF0ZSBvbiB0aGUgcHJvZ3JhbSBvYmplY3QgYmVmb3JlIHRoaXMgaXMgY2FsbGVkLgot
Z2w6OkVycm9yIFJlbmRlcmVyRDNEOjphcHBseVRleHR1cmVzKGNvbnN0IGdsOjpEYXRhICZkYXRh
LCBnbDo6U2FtcGxlclR5cGUgc2hhZGVyVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlclRleHR1cmVBcnJheSAmZnJhbWVidWZmZXJUZXh0
dXJlcywgc2l6ZV90IGZyYW1lYnVmZmVyVGV4dHVyZUNvdW50KQotewotICAgIFByb2dyYW1EM0Qg
KnByb2dyYW1EM0QgPSBHZXRJbXBsQXM8UHJvZ3JhbUQzRD4oZGF0YS5zdGF0ZS0+Z2V0UHJvZ3Jh
bSgpKTsKK2dsOjpFcnJvciBSZW5kZXJlckQzRDo6YXBwbHlUZXh0dXJlcyhHTEltcGxGYWN0b3J5
ICppbXBsRmFjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsOjpTYW1wbGVyVHlwZSBzaGFkZXJUeXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEZyYW1lYnVmZmVyVGV4dHVyZUFycmF5ICZmcmFtZWJ1ZmZl
clRleHR1cmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBm
cmFtZWJ1ZmZlclRleHR1cmVDb3VudCkKK3sKKyAgICBjb25zdCBhdXRvICZnbFN0YXRlICAgID0g
ZGF0YS5nZXRTdGF0ZSgpOworICAgIGNvbnN0IGF1dG8gJmNhcHMgICAgICAgPSBkYXRhLmdldENh
cHMoKTsKKyAgICBQcm9ncmFtRDNEICpwcm9ncmFtRDNEID0gR2V0SW1wbEFzPFByb2dyYW1EM0Q+
KGdsU3RhdGUuZ2V0UHJvZ3JhbSgpKTsKIAogICAgIEFTU0VSVCghcHJvZ3JhbUQzRC0+aXNTYW1w
bGVyTWFwcGluZ0RpcnR5KCkpOwogCkBAIC0zMDMsMTkgKzExMCwxOSBAQCBnbDo6RXJyb3IgUmVu
ZGVyZXJEM0Q6OmFwcGx5VGV4dHVyZXMoY29uCiAgICAgZm9yICh1bnNpZ25lZCBpbnQgc2FtcGxl
ckluZGV4ID0gMDsgc2FtcGxlckluZGV4IDwgc2FtcGxlclJhbmdlOyBzYW1wbGVySW5kZXgrKykK
ICAgICB7CiAgICAgICAgIEdMZW51bSB0ZXh0dXJlVHlwZSA9IHByb2dyYW1EM0QtPmdldFNhbXBs
ZXJUZXh0dXJlVHlwZShzaGFkZXJUeXBlLCBzYW1wbGVySW5kZXgpOwotICAgICAgICBHTGludCB0
ZXh0dXJlVW5pdCA9IHByb2dyYW1EM0QtPmdldFNhbXBsZXJNYXBwaW5nKHNoYWRlclR5cGUsIHNh
bXBsZXJJbmRleCwgKmRhdGEuY2Fwcyk7CisgICAgICAgIEdMaW50IHRleHR1cmVVbml0ICA9IHBy
b2dyYW1EM0QtPmdldFNhbXBsZXJNYXBwaW5nKHNoYWRlclR5cGUsIHNhbXBsZXJJbmRleCwgY2Fw
cyk7CiAgICAgICAgIGlmICh0ZXh0dXJlVW5pdCAhPSAtMSkKICAgICAgICAgewotICAgICAgICAg
ICAgZ2w6OlRleHR1cmUgKnRleHR1cmUgPSBkYXRhLnN0YXRlLT5nZXRTYW1wbGVyVGV4dHVyZSh0
ZXh0dXJlVW5pdCwgdGV4dHVyZVR5cGUpOworICAgICAgICAgICAgZ2w6OlRleHR1cmUgKnRleHR1
cmUgPSBnbFN0YXRlLmdldFNhbXBsZXJUZXh0dXJlKHRleHR1cmVVbml0LCB0ZXh0dXJlVHlwZSk7
CiAgICAgICAgICAgICBBU1NFUlQodGV4dHVyZSk7CiAKLSAgICAgICAgICAgIGdsOjpTYW1wbGVy
ICpzYW1wbGVyT2JqZWN0ID0gZGF0YS5zdGF0ZS0+Z2V0U2FtcGxlcih0ZXh0dXJlVW5pdCk7Cisg
ICAgICAgICAgICBnbDo6U2FtcGxlciAqc2FtcGxlck9iamVjdCA9IGdsU3RhdGUuZ2V0U2FtcGxl
cih0ZXh0dXJlVW5pdCk7CiAKICAgICAgICAgICAgIGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJnNh
bXBsZXJTdGF0ZSA9CiAgICAgICAgICAgICAgICAgc2FtcGxlck9iamVjdCA/IHNhbXBsZXJPYmpl
Y3QtPmdldFNhbXBsZXJTdGF0ZSgpIDogdGV4dHVyZS0+Z2V0U2FtcGxlclN0YXRlKCk7CiAKICAg
ICAgICAgICAgIC8vIFRPRE86IHN0ZDo6YmluYXJ5X3NlYXJjaCBtYXkgYmVjb21lIHVuYXZhaWxh
YmxlIHVzaW5nIG9sZGVyIHZlcnNpb25zIG9mIEdDQwotICAgICAgICAgICAgaWYgKHRleHR1cmUt
PmlzU2FtcGxlckNvbXBsZXRlKHNhbXBsZXJTdGF0ZSwgZGF0YSkgJiYKKyAgICAgICAgICAgIGlm
ICh0ZXh0dXJlLT5nZXRUZXh0dXJlU3RhdGUoKS5pc1NhbXBsZXJDb21wbGV0ZShzYW1wbGVyU3Rh
dGUsIGRhdGEpICYmCiAgICAgICAgICAgICAgICAgIXN0ZDo6YmluYXJ5X3NlYXJjaChmcmFtZWJ1
ZmZlclRleHR1cmVzLmJlZ2luKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmcmFtZWJ1ZmZlclRleHR1cmVzLmJlZ2luKCkgKyBmcmFtZWJ1ZmZlclRleHR1cmVDb3VudCwg
dGV4dHVyZSkpCiAgICAgICAgICAgICB7CkBAIC0zMjUsNyArMTMyLDcgQEAgZ2w6OkVycm9yIFJl
bmRlcmVyRDNEOjphcHBseVRleHR1cmVzKGNvbgogICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgIC8vIFRleHR1cmUgaXMgbm90IHNhbXBsZXIgY29tcGxldGUg
b3IgaXQgaXMgaW4gdXNlIGJ5IHRoZSBmcmFtZWJ1ZmZlci4gIEJpbmQgdGhlIGluY29tcGxldGUg
dGV4dHVyZS4KLSAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZSAqaW5jb21wbGV0ZVRleHR1cmUg
PSBnZXRJbmNvbXBsZXRlVGV4dHVyZSh0ZXh0dXJlVHlwZSk7CisgICAgICAgICAgICAgICAgZ2w6
OlRleHR1cmUgKmluY29tcGxldGVUZXh0dXJlID0gZ2V0SW5jb21wbGV0ZVRleHR1cmUoaW1wbEZh
Y3RvcnksIHRleHR1cmVUeXBlKTsKIAogICAgICAgICAgICAgICAgIEFOR0xFX1RSWShzZXRTYW1w
bGVyU3RhdGUoc2hhZGVyVHlwZSwgc2FtcGxlckluZGV4LCBpbmNvbXBsZXRlVGV4dHVyZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY29tcGxldGVUZXh0dXJl
LT5nZXRTYW1wbGVyU3RhdGUoKSkpOwpAQCAtMzQwLDI2ICsxNDcsMjggQEAgZ2w6OkVycm9yIFJl
bmRlcmVyRDNEOjphcHBseVRleHR1cmVzKGNvbgogICAgIH0KIAogICAgIC8vIFNldCBhbGwgdGhl
IHJlbWFpbmluZyB0ZXh0dXJlcyB0byBOVUxMCi0gICAgc2l6ZV90IHNhbXBsZXJDb3VudCA9IChz
aGFkZXJUeXBlID09IGdsOjpTQU1QTEVSX1BJWEVMKSA/IGRhdGEuY2Fwcy0+bWF4VGV4dHVyZUlt
YWdlVW5pdHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDogZGF0YS5jYXBzLT5tYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0czsKKyAg
ICBzaXplX3Qgc2FtcGxlckNvdW50ID0gKHNoYWRlclR5cGUgPT0gZ2w6OlNBTVBMRVJfUElYRUwp
ID8gY2Fwcy5tYXhUZXh0dXJlSW1hZ2VVbml0cworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYXBzLm1heFZlcnRleFRleHR1cmVJ
bWFnZVVuaXRzOwogICAgIGNsZWFyVGV4dHVyZXMoc2hhZGVyVHlwZSwgc2FtcGxlclJhbmdlLCBz
YW1wbGVyQ291bnQpOwogCiAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJv
ciBSZW5kZXJlckQzRDo6YXBwbHlUZXh0dXJlcyhjb25zdCBnbDo6RGF0YSAmZGF0YSkKK2dsOjpF
cnJvciBSZW5kZXJlckQzRDo6YXBwbHlUZXh0dXJlcyhHTEltcGxGYWN0b3J5ICppbXBsRmFjdG9y
eSwgY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSkKIHsKICAgICBGcmFtZWJ1ZmZlclRleHR1
cmVBcnJheSBmcmFtZWJ1ZmZlclRleHR1cmVzOwogICAgIHNpemVfdCBmcmFtZWJ1ZmZlclNlcmlh
bENvdW50ID0gZ2V0Qm91bmRGcmFtZWJ1ZmZlclRleHR1cmVzKGRhdGEsICZmcmFtZWJ1ZmZlclRl
eHR1cmVzKTsKIAotICAgIEFOR0xFX1RSWShhcHBseVRleHR1cmVzKGRhdGEsIGdsOjpTQU1QTEVS
X1ZFUlRFWCwgZnJhbWVidWZmZXJUZXh0dXJlcywgZnJhbWVidWZmZXJTZXJpYWxDb3VudCkpOwot
ICAgIEFOR0xFX1RSWShhcHBseVRleHR1cmVzKGRhdGEsIGdsOjpTQU1QTEVSX1BJWEVMLCBmcmFt
ZWJ1ZmZlclRleHR1cmVzLCBmcmFtZWJ1ZmZlclNlcmlhbENvdW50KSk7CisgICAgQU5HTEVfVFJZ
KGFwcGx5VGV4dHVyZXMoaW1wbEZhY3RvcnksIGRhdGEsIGdsOjpTQU1QTEVSX1ZFUlRFWCwgZnJh
bWVidWZmZXJUZXh0dXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZl
clNlcmlhbENvdW50KSk7CisgICAgQU5HTEVfVFJZKGFwcGx5VGV4dHVyZXMoaW1wbEZhY3Rvcnks
IGRhdGEsIGdsOjpTQU1QTEVSX1BJWEVMLCBmcmFtZWJ1ZmZlclRleHR1cmVzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyU2VyaWFsQ291bnQpKTsKICAgICByZXR1cm4g
Z2w6Ok5vRXJyb3IoKTsKIH0KIAotYm9vbCBSZW5kZXJlckQzRDo6c2tpcERyYXcoY29uc3QgZ2w6
OkRhdGEgJmRhdGEsIEdMZW51bSBkcmF3TW9kZSkKK2Jvb2wgUmVuZGVyZXJEM0Q6OnNraXBEcmF3
KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsIEdMZW51bSBkcmF3TW9kZSkKIHsKLSAgICBj
b25zdCBnbDo6U3RhdGUgJnN0YXRlID0gKmRhdGEuc3RhdGU7CisgICAgY29uc3QgZ2w6OlN0YXRl
ICZzdGF0ZSA9IGRhdGEuZ2V0U3RhdGUoKTsKIAogICAgIGlmIChkcmF3TW9kZSA9PSBHTF9QT0lO
VFMpCiAgICAgewpAQCAtMzg5LDkgKzE5OCw5IEBAIGJvb2wgUmVuZGVyZXJEM0Q6OnNraXBEcmF3
KGNvbnN0IGdsOjpEYXQKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWdsOjpFcnJvciBSZW5kZXJl
ckQzRDo6bWFya1RyYW5zZm9ybUZlZWRiYWNrVXNhZ2UoY29uc3QgZ2w6OkRhdGEgJmRhdGEpCitn
bDo6RXJyb3IgUmVuZGVyZXJEM0Q6Om1hcmtUcmFuc2Zvcm1GZWVkYmFja1VzYWdlKGNvbnN0IGds
OjpDb250ZXh0U3RhdGUgJmRhdGEpCiB7Ci0gICAgY29uc3QgZ2w6OlRyYW5zZm9ybUZlZWRiYWNr
ICp0cmFuc2Zvcm1GZWVkYmFjayA9IGRhdGEuc3RhdGUtPmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVk
YmFjaygpOworICAgIGNvbnN0IGdsOjpUcmFuc2Zvcm1GZWVkYmFjayAqdHJhbnNmb3JtRmVlZGJh
Y2sgPSBkYXRhLmdldFN0YXRlKCkuZ2V0Q3VycmVudFRyYW5zZm9ybUZlZWRiYWNrKCk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFuc2Zvcm1GZWVkYmFjay0+Z2V0SW5kZXhlZEJ1ZmZl
ckNvdW50KCk7IGkrKykKICAgICB7CiAgICAgICAgIGNvbnN0IE9mZnNldEJpbmRpbmdQb2ludGVy
PGdsOjpCdWZmZXI+ICZiaW5kaW5nID0gdHJhbnNmb3JtRmVlZGJhY2stPmdldEluZGV4ZWRCdWZm
ZXIoaSk7CkBAIC00MDUsMTEgKzIxNCwxMiBAQCBnbDo6RXJyb3IgUmVuZGVyZXJEM0Q6Om1hcmtU
cmFuc2Zvcm1GZWVkCiAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLXNpemVfdCBSZW5k
ZXJlckQzRDo6Z2V0Qm91bmRGcmFtZWJ1ZmZlclRleHR1cmVzKGNvbnN0IGdsOjpEYXRhICZkYXRh
LCBGcmFtZWJ1ZmZlclRleHR1cmVBcnJheSAqb3V0VGV4dHVyZUFycmF5KQorc2l6ZV90IFJlbmRl
cmVyRDNEOjpnZXRCb3VuZEZyYW1lYnVmZmVyVGV4dHVyZXMoY29uc3QgZ2w6OkNvbnRleHRTdGF0
ZSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZyYW1lYnVmZmVyVGV4dHVyZUFycmF5ICpvdXRUZXh0dXJlQXJyYXkpCiB7CiAgICAgc2l6ZV90
IHRleHR1cmVDb3VudCA9IDA7CiAKLSAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKmRyYXdGcmFt
ZWJ1ZmZlciA9IGRhdGEuc3RhdGUtPmdldERyYXdGcmFtZWJ1ZmZlcigpOworICAgIGNvbnN0IGds
OjpGcmFtZWJ1ZmZlciAqZHJhd0ZyYW1lYnVmZmVyID0gZGF0YS5nZXRTdGF0ZSgpLmdldERyYXdG
cmFtZWJ1ZmZlcigpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZHJhd0ZyYW1lYnVmZmVy
LT5nZXROdW1Db2xvckJ1ZmZlcnMoKTsgaSsrKQogICAgIHsKICAgICAgICAgY29uc3QgZ2w6OkZy
YW1lYnVmZmVyQXR0YWNobWVudCAqYXR0YWNobWVudCA9IGRyYXdGcmFtZWJ1ZmZlci0+Z2V0Q29s
b3JidWZmZXIoaSk7CkBAIC00MzAsNyArMjQwLDcgQEAgc2l6ZV90IFJlbmRlcmVyRDNEOjpnZXRC
b3VuZEZyYW1lYnVmZmVyVAogICAgIHJldHVybiB0ZXh0dXJlQ291bnQ7CiB9CiAKLWdsOjpUZXh0
dXJlICpSZW5kZXJlckQzRDo6Z2V0SW5jb21wbGV0ZVRleHR1cmUoR0xlbnVtIHR5cGUpCitnbDo6
VGV4dHVyZSAqUmVuZGVyZXJEM0Q6OmdldEluY29tcGxldGVUZXh0dXJlKEdMSW1wbEZhY3Rvcnkg
KmltcGxGYWN0b3J5LCBHTGVudW0gdHlwZSkKIHsKICAgICBpZiAobUluY29tcGxldGVUZXh0dXJl
cy5maW5kKHR5cGUpID09IG1JbmNvbXBsZXRlVGV4dHVyZXMuZW5kKCkpCiAgICAgewpAQCAtNDM5
LDExICsyNDksMTMgQEAgZ2w6OlRleHR1cmUgKlJlbmRlcmVyRDNEOjpnZXRJbmNvbXBsZXRlVAog
ICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSB1bnBhY2soMSwgMCk7CiAgICAgICAg
IGNvbnN0IGdsOjpCb3ggYXJlYSgwLCAwLCAwLCAxLCAxLCAxKTsKIAorICAgICAgICAvLyBJZiBh
IHRleHR1cmUgaXMgZXh0ZXJuYWwgdXNlIGEgMkQgdGV4dHVyZSBmb3IgdGhlIGluY29tcGxldGUg
dGV4dHVyZQorICAgICAgICBHTGVudW0gY3JlYXRlVHlwZSA9ICh0eXBlID09IEdMX1RFWFRVUkVf
RVhURVJOQUxfT0VTKSA/IEdMX1RFWFRVUkVfMkQgOiB0eXBlOworCiAgICAgICAgIC8vIFNraXAg
dGhlIEFQSSBsYXllciB0byBhdm9pZCBuZWVkaW5nIHRvIHBhc3MgdGhlIENvbnRleHQgYW5kIG1l
c3Mgd2l0aCBkaXJ0eSBiaXRzLgogICAgICAgICBnbDo6VGV4dHVyZSAqdCA9Ci0gICAgICAgICAg
ICBuZXcgZ2w6OlRleHR1cmUoY3JlYXRlVGV4dHVyZSh0eXBlKSwgc3RkOjpudW1lcmljX2xpbWl0
czxHTHVpbnQ+OjptYXgoKSwgdHlwZSk7Ci0gICAgICAgIHQtPnNldFN0b3JhZ2UodHlwZSwgMSwg
R0xfUkdCQTgsIGNvbG9yU2l6ZSk7Ci0KKyAgICAgICAgICAgIG5ldyBnbDo6VGV4dHVyZShpbXBs
RmFjdG9yeSwgc3RkOjpudW1lcmljX2xpbWl0czxHTHVpbnQ+OjptYXgoKSwgY3JlYXRlVHlwZSk7
CisgICAgICAgIHQtPnNldFN0b3JhZ2UoY3JlYXRlVHlwZSwgMSwgR0xfUkdCQTgsIGNvbG9yU2l6
ZSk7CiAgICAgICAgIGlmICh0eXBlID09IEdMX1RFWFRVUkVfQ1VCRV9NQVApCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGZvciAoR0xlbnVtIGZhY2UgPSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lU
SVZFX1g7IGZhY2UgPD0gR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aOyBmYWNlKyspCkBA
IC00NTQsMjQgKzI2NiwzOCBAQCBnbDo6VGV4dHVyZSAqUmVuZGVyZXJEM0Q6OmdldEluY29tcGxl
dGVUCiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICB0LT5n
ZXRJbXBsZW1lbnRhdGlvbigpLT5zZXRTdWJJbWFnZSh0eXBlLCAwLCBhcmVhLCBHTF9SR0JBOCwg
R0xfVU5TSUdORURfQllURSwgdW5wYWNrLAorICAgICAgICAgICAgdC0+Z2V0SW1wbGVtZW50YXRp
b24oKS0+c2V0U3ViSW1hZ2UoY3JlYXRlVHlwZSwgMCwgYXJlYSwgR0xfUkdCQTgsIEdMX1VOU0lH
TkVEX0JZVEUsIHVucGFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbG9yKTsKICAgICAgICAgfQotCiAgICAgICAgIG1JbmNvbXBsZXRlVGV4dHVy
ZXNbdHlwZV0uc2V0KHQpOwogICAgIH0KIAogICAgIHJldHVybiBtSW5jb21wbGV0ZVRleHR1cmVz
W3R5cGVdLmdldCgpOwogfQogCi1ib29sIFJlbmRlcmVyRDNEOjppc0RldmljZUxvc3QoKSBjb25z
dAorR0xlbnVtIFJlbmRlcmVyRDNEOjpnZXRSZXNldFN0YXR1cygpCiB7Ci0gICAgcmV0dXJuIG1E
ZXZpY2VMb3N0OworICAgIGlmICghbURldmljZUxvc3QpCisgICAgeworICAgICAgICBpZiAodGVz
dERldmljZUxvc3QoKSkKKyAgICAgICAgeworICAgICAgICAgICAgbURldmljZUxvc3QgPSB0cnVl
OworICAgICAgICAgICAgbm90aWZ5RGV2aWNlTG9zdCgpOworICAgICAgICAgICAgcmV0dXJuIEdM
X1VOS05PV05fQ09OVEVYVF9SRVNFVF9FWFQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIEdM
X05PX0VSUk9SOworICAgIH0KKworICAgIGlmICh0ZXN0RGV2aWNlUmVzZXR0YWJsZSgpKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEdMX05PX0VSUk9SOworICAgIH0KKworICAgIHJldHVybiBHTF9V
TktOT1dOX0NPTlRFWFRfUkVTRVRfRVhUOwogfQogCiB2b2lkIFJlbmRlcmVyRDNEOjpub3RpZnlE
ZXZpY2VMb3N0KCkKIHsKLSAgICBtRGV2aWNlTG9zdCA9IHRydWU7CiAgICAgbURpc3BsYXktPm5v
dGlmeURldmljZUxvc3QoKTsKIH0KIApAQCAtNDg5LDYzICszMTUsNiBAQCBzdGQ6OnN0cmluZyBS
ZW5kZXJlckQzRDo6Z2V0VmVuZG9yU3RyaW5nCiAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCIiKTsK
IH0KIAotZ2w6OkVycm9yIFJlbmRlcmVyRDNEOjpnZXRTY3JhdGNoTWVtb3J5QnVmZmVyKHNpemVf
dCByZXF1ZXN0ZWRTaXplLCBNZW1vcnlCdWZmZXIgKipidWZmZXJPdXQpCi17Ci0gICAgaWYgKG1T
Y3JhdGNoTWVtb3J5QnVmZmVyLnNpemUoKSA9PSByZXF1ZXN0ZWRTaXplKQotICAgIHsKLSAgICAg
ICAgbVNjcmF0Y2hNZW1vcnlCdWZmZXJSZXNldENvdW50ZXIgPSBTY3JhdGNoTWVtb3J5QnVmZmVy
TGlmZXRpbWU7Ci0gICAgICAgICpidWZmZXJPdXQgPSAmbVNjcmF0Y2hNZW1vcnlCdWZmZXI7Ci0g
ICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwotICAgIH0KLQotICAgIGlmICht
U2NyYXRjaE1lbW9yeUJ1ZmZlci5zaXplKCkgPiByZXF1ZXN0ZWRTaXplKQotICAgIHsKLSAgICAg
ICAgbVNjcmF0Y2hNZW1vcnlCdWZmZXJSZXNldENvdW50ZXItLTsKLSAgICB9Ci0KLSAgICBpZiAo
bVNjcmF0Y2hNZW1vcnlCdWZmZXJSZXNldENvdW50ZXIgPD0gMCB8fCBtU2NyYXRjaE1lbW9yeUJ1
ZmZlci5zaXplKCkgPCByZXF1ZXN0ZWRTaXplKQotICAgIHsKLSAgICAgICAgbVNjcmF0Y2hNZW1v
cnlCdWZmZXIucmVzaXplKDApOwotICAgICAgICBpZiAoIW1TY3JhdGNoTWVtb3J5QnVmZmVyLnJl
c2l6ZShyZXF1ZXN0ZWRTaXplKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGFsbG9jYXRlIGludGVybmFsIGJ1ZmZl
ci4iKTsKLSAgICAgICAgfQotICAgICAgICBtU2NyYXRjaE1lbW9yeUJ1ZmZlclJlc2V0Q291bnRl
ciA9IFNjcmF0Y2hNZW1vcnlCdWZmZXJMaWZldGltZTsKLSAgICB9Ci0KLSAgICBBU1NFUlQobVNj
cmF0Y2hNZW1vcnlCdWZmZXIuc2l6ZSgpID49IHJlcXVlc3RlZFNpemUpOwotCi0gICAgKmJ1ZmZl
ck91dCA9ICZtU2NyYXRjaE1lbW9yeUJ1ZmZlcjsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05P
X0VSUk9SKTsKLX0KLQotdm9pZCBSZW5kZXJlckQzRDo6aW5zZXJ0RXZlbnRNYXJrZXIoR0xzaXpl
aSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikKLXsKLSAgICBzdGQ6OnZlY3Rvcjx3Y2hhcl90
PiB3Y3N0cmluZyAobGVuZ3RoICsgMSk7Ci0gICAgc2l6ZV90IGNvbnZlcnRlZENoYXJzID0gMDsK
LSAgICBlcnJub190IGVyciA9IG1ic3Rvd2NzX3MoJmNvbnZlcnRlZENoYXJzLCB3Y3N0cmluZy5k
YXRhKCksIGxlbmd0aCArIDEsIG1hcmtlciwgX1RSVU5DQVRFKTsKLSAgICBpZiAoZXJyID09IDAp
Ci0gICAgewotICAgICAgICBnZXRBbm5vdGF0b3IoKS0+c2V0TWFya2VyKHdjc3RyaW5nLmRhdGEo
KSk7Ci0gICAgfQotfQotCi12b2lkIFJlbmRlcmVyRDNEOjpwdXNoR3JvdXBNYXJrZXIoR0xzaXpl
aSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikKLXsKLSAgICBzdGQ6OnZlY3Rvcjx3Y2hhcl90
PiB3Y3N0cmluZyhsZW5ndGggKyAxKTsKLSAgICBzaXplX3QgY29udmVydGVkQ2hhcnMgPSAwOwot
ICAgIGVycm5vX3QgZXJyID0gbWJzdG93Y3NfcygmY29udmVydGVkQ2hhcnMsIHdjc3RyaW5nLmRh
dGEoKSwgbGVuZ3RoICsgMSwgbWFya2VyLCBfVFJVTkNBVEUpOwotICAgIGlmIChlcnIgPT0gMCkK
LSAgICB7Ci0gICAgICAgIGdldEFubm90YXRvcigpLT5iZWdpbkV2ZW50KHdjc3RyaW5nLmRhdGEo
KSk7Ci0gICAgfQotfQotCi12b2lkIFJlbmRlcmVyRDNEOjpwb3BHcm91cE1hcmtlcigpCi17Ci0g
ICAgZ2V0QW5ub3RhdG9yKCktPmVuZEV2ZW50KCk7Ci19Ci0KIHZvaWQgUmVuZGVyZXJEM0Q6OnNl
dEdQVURpc2pvaW50KCkKIHsKICAgICBtRGlzam9pbnQgPSB0cnVlOwpAQCAtNTY3LDIwICszMzYs
MzcgQEAgR0xpbnQ2NCBSZW5kZXJlckQzRDo6Z2V0VGltZXN0YW1wKCkKICAgICByZXR1cm4gMDsK
IH0KIAotdm9pZCBSZW5kZXJlckQzRDo6b25NYWtlQ3VycmVudChjb25zdCBnbDo6RGF0YSAmZGF0
YSkKK3ZvaWQgUmVuZGVyZXJEM0Q6OmVuc3VyZUNhcHNJbml0aWFsaXplZCgpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtQ2Fwc0luaXRpYWxpemVkKQorICAgIHsKKyAgICAgICAgZ2VuZXJhdGVDYXBzKCZt
TmF0aXZlQ2FwcywgJm1OYXRpdmVUZXh0dXJlQ2FwcywgJm1OYXRpdmVFeHRlbnNpb25zLCAmbU5h
dGl2ZUxpbWl0YXRpb25zKTsKKyAgICAgICAgbUNhcHNJbml0aWFsaXplZCA9IHRydWU7CisgICAg
fQorfQorCitjb25zdCBnbDo6Q2FwcyAmUmVuZGVyZXJEM0Q6OmdldE5hdGl2ZUNhcHMoKSBjb25z
dAogeworICAgIGVuc3VyZUNhcHNJbml0aWFsaXplZCgpOworICAgIHJldHVybiBtTmF0aXZlQ2Fw
czsKIH0KIAotdm9pZCBSZW5kZXJlckQzRDo6aW5pdGlhbGl6ZURlYnVnQW5ub3RhdG9yKCkKK2Nv
bnN0IGdsOjpUZXh0dXJlQ2Fwc01hcCAmUmVuZGVyZXJEM0Q6OmdldE5hdGl2ZVRleHR1cmVDYXBz
KCkgY29uc3QKIHsKLSAgICBjcmVhdGVBbm5vdGF0b3IoKTsKLSAgICBBU1NFUlQobUFubm90YXRv
cik7Ci0gICAgZ2w6OkluaXRpYWxpemVEZWJ1Z0Fubm90YXRpb25zKG1Bbm5vdGF0b3IpOworICAg
IGVuc3VyZUNhcHNJbml0aWFsaXplZCgpOworICAgIHJldHVybiBtTmF0aXZlVGV4dHVyZUNhcHM7
CiB9CiAKLWdsOjpEZWJ1Z0Fubm90YXRvciAqUmVuZGVyZXJEM0Q6OmdldEFubm90YXRvcigpCitj
b25zdCBnbDo6RXh0ZW5zaW9ucyAmUmVuZGVyZXJEM0Q6OmdldE5hdGl2ZUV4dGVuc2lvbnMoKSBj
b25zdAogewotICAgIEFTU0VSVChtQW5ub3RhdG9yKTsKLSAgICByZXR1cm4gbUFubm90YXRvcjsK
KyAgICBlbnN1cmVDYXBzSW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbU5hdGl2ZUV4dGVuc2lv
bnM7CiB9CisKK2NvbnN0IGdsOjpMaW1pdGF0aW9ucyAmUmVuZGVyZXJEM0Q6OmdldE5hdGl2ZUxp
bWl0YXRpb25zKCkgY29uc3QKK3sKKyAgICBlbnN1cmVDYXBzSW5pdGlhbGl6ZWQoKTsKKyAgICBy
ZXR1cm4gbU5hdGl2ZUxpbWl0YXRpb25zOworfQorCiB9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVy
ZXJEM0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL1JlbmRlcmVyRDNELmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyZXJEM0Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMTEsMTQgKzExLDEzIEBACiAKICNpbmNsdWRlICJjb21tb24v
ZGVidWcuaCIKICNpbmNsdWRlICJjb21tb24vTWVtb3J5QnVmZmVyLmgiCi0jaW5jbHVkZSAibGli
QU5HTEUvRGF0YS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHRTdGF0ZS5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL0RldmljZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL2Zvcm1hdHV0aWxzLmgi
Ci0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvUmVuZGVyZXIuaCIKICNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9kM2QvVmVydGV4RGF0YU1hbmFnZXIuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9kM2QvZm9ybWF0dXRpbHNEM0QuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvV29ya2Fyb3VuZHNEM0QuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvTmF0aXZlV2luZG93LmgiCisjaW5jbHVkZSAibGliQU5HTEUvVmVyc2lvbi5oIgog
CiAvL0ZJWE1FKGptYWRpbGwpOiBzdGQ6OmFycmF5IGlzIGN1cnJlbnRseSBwcm9oaWJpdGVkIGJ5
IENocm9taXVtIHN0eWxlIGd1aWRlCiAjaW5jbHVkZSA8YXJyYXk+CkBAIC0zMCw3ICsyOSw3IEBA
IGNsYXNzIENvbmZpZ1NldDsKIAogbmFtZXNwYWNlIGdsCiB7Ci1jbGFzcyBEZWJ1Z0Fubm90YXRv
cjsKK2NsYXNzIEZyYW1lYnVmZmVyU3RhdGU7CiBjbGFzcyBJbmZvTG9nOwogY2xhc3MgVGV4dHVy
ZTsKIHN0cnVjdCBMaW5rZWRWYXJ5aW5nOwpAQCAtMzgsMTcgKzM3LDIxIEBAIHN0cnVjdCBMaW5r
ZWRWYXJ5aW5nOwogCiBuYW1lc3BhY2UgcngKIHsKK2NsYXNzIENvbnRleHRJbXBsOwogc3RydWN0
IEQzRFVuaWZvcm07CiBzdHJ1Y3QgRDNEVmFyeWluZzsKIGNsYXNzIERldmljZUQzRDsKIGNsYXNz
IEVHTEltYWdlRDNEOworY2xhc3MgRnJhbWVidWZmZXJJbXBsOwogY2xhc3MgSW1hZ2VEM0Q7CiBj
bGFzcyBJbmRleEJ1ZmZlcjsKK2NsYXNzIE5hdGl2ZVdpbmRvd0QzRDsKIGNsYXNzIFByb2dyYW1E
M0Q7CiBjbGFzcyBSZW5kZXJUYXJnZXREM0Q7CiBjbGFzcyBTaGFkZXJFeGVjdXRhYmxlRDNEOwog
Y2xhc3MgU3dhcENoYWluRDNEOwogY2xhc3MgVGV4dHVyZVN0b3JhZ2U7CitzdHJ1Y3QgVHJhbnNs
YXRlZEluZGV4RGF0YTsKIGNsYXNzIFVuaWZvcm1TdG9yYWdlRDNEOwogY2xhc3MgVmVydGV4QnVm
ZmVyOwogCkBAIC03Niw3ICs3OSw3IEBAIGVudW0gUmVuZGVyZXJDbGFzcwogfTsKIAogLy8gVXNl
ZnVsIGZvciB1bml0IHRlc3RpbmcKLWNsYXNzIEJ1ZmZlckZhY3RvcnlEM0QKK2NsYXNzIEJ1ZmZl
ckZhY3RvcnlEM0QgOiBhbmdsZTo6Tm9uQ29weWFibGUKIHsKICAgcHVibGljOgogICAgIEJ1ZmZl
ckZhY3RvcnlEM0QoKSB7fQpAQCAtOTYsNyArOTksNyBAQCBjbGFzcyBCdWZmZXJGYWN0b3J5RDNE
CiAKIHVzaW5nIEF0dHJpYkluZGV4QXJyYXkgPSBzdGQ6OmFycmF5PGludCwgZ2w6Ok1BWF9WRVJU
RVhfQVRUUklCUz47CiAKLWNsYXNzIFJlbmRlcmVyRDNEIDogcHVibGljIFJlbmRlcmVyLCBwdWJs
aWMgQnVmZmVyRmFjdG9yeUQzRAorY2xhc3MgUmVuZGVyZXJEM0QgOiBwdWJsaWMgQnVmZmVyRmFj
dG9yeUQzRAogewogICBwdWJsaWM6CiAgICAgZXhwbGljaXQgUmVuZGVyZXJEM0QoZWdsOjpEaXNw
bGF5ICpkaXNwbGF5KTsKQEAgLTEwNCw0MiArMTA3LDEyIEBAIGNsYXNzIFJlbmRlcmVyRDNEIDog
cHVibGljIFJlbmRlcmVyLCBwdWIKIAogICAgIHZpcnR1YWwgZWdsOjpFcnJvciBpbml0aWFsaXpl
KCkgPSAwOwogCi0gICAgdmlydHVhbCBlZ2w6OkNvbmZpZ1NldCBnZW5lcmF0ZUNvbmZpZ3MoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBlZ2w6OkNvbmZpZ1NldCBnZW5lcmF0ZUNvbmZpZ3MoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlRGlzcGxheUV4dGVuc2lvbnMoZWdsOjpEaXNw
bGF5RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucykgY29uc3QgPSAwOwogCi0gICAgZ2w6OkVycm9y
IGRyYXdBcnJheXMoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIEdMZW51bSBtb2RlLCBHTGludCBmaXJz
dCwgR0xzaXplaSBjb3VudCkgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIGRyYXdBcnJheXNJbnN0
YW5jZWQoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIG1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgZmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlQ291
bnQpIG92ZXJyaWRlOwotCi0gICAgZ2w6OkVycm9yIGRyYXdFbGVtZW50cyhjb25zdCBnbDo6RGF0
YSAmZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2
b2lkICppbmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4
UmFuZ2UgJmluZGV4UmFuZ2UpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBkcmF3RWxlbWVudHNJ
bnN0YW5jZWQoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gbW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
dm9pZCAqaW5kaWNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgaW5zdGFuY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBkcmF3
UmFuZ2VFbGVtZW50cyhjb25zdCBnbDo6RGF0YSAmZGF0YSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIG1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBzdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGVu
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgQ29udGV4dEltcGwgKmNyZWF0ZUNvbnRleHQoY29uc3QgZ2w6OkNvbnRl
eHRTdGF0ZSAmc3RhdGUpID0gMDsKIAotICAgIGJvb2wgaXNEZXZpY2VMb3N0KCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgc3RkOjpzdHJpbmcgZ2V0VmVuZG9yU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0KLSAgICBTYW1wbGVySW1wbCAqY3JlYXRlU2FtcGxlcigpIG92ZXJyaWRlOworICAgIHN0ZDo6
c3RyaW5nIGdldFZlbmRvclN0cmluZygpIGNvbnN0OwogCiAgICAgdmlydHVhbCBpbnQgZ2V0TWlu
b3JTaGFkZXJNb2RlbCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6c3RyaW5nIGdldFNo
YWRlck1vZGVsU3VmZml4KCkgY29uc3QgPSAwOwpAQCAtMTQ3LDQzICsxMjAsMjggQEAgY2xhc3Mg
UmVuZGVyZXJEM0QgOiBwdWJsaWMgUmVuZGVyZXIsIHB1YgogICAgIC8vIERpcmVjdDNEIFNwZWNp
ZmljIG1ldGhvZHMKICAgICB2aXJ0dWFsIERldmljZUlkZW50aWZpZXIgZ2V0QWRhcHRlcklkZW50
aWZpZXIoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIFN3YXBDaGFpbkQzRCAqY3JlYXRlU3dh
cENoYWluKE5hdGl2ZVdpbmRvdyBuYXRpdmVXaW5kb3csCisgICAgdmlydHVhbCBib29sIGlzVmFs
aWROYXRpdmVXaW5kb3coRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3cpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIE5hdGl2ZVdpbmRvd0QzRCAqY3JlYXRlTmF0aXZlV2luZG93KEVHTE5hdGl2ZVdp
bmRvd1R5cGUgd2luZG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRy
aWJzKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFN3YXBDaGFpbkQzRCAqY3JlYXRlU3dhcENo
YWluKE5hdGl2ZVdpbmRvd0QzRCAqbmF0aXZlV2luZG93LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSEFORExFIHNoYXJlSGFuZGxlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJhY2tCdWZmZXJGb3JtYXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVwdGhCdWZmZXJG
b3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQg
b3JpZW50YXRpb24pID0gMDsKIAotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGdlbmVyYXRlU3dpenps
ZShnbDo6VGV4dHVyZSAqdGV4dHVyZSkgPSAwOwogICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldFNh
bXBsZXJTdGF0ZShnbDo6U2FtcGxlclR5cGUgdHlwZSwgaW50IGluZGV4LCBnbDo6VGV4dHVyZSAq
dGV4dHVyZSwgY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmc2FtcGxlcikgPSAwOwogICAgIHZpcnR1
YWwgZ2w6OkVycm9yIHNldFRleHR1cmUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsIGludCBpbmRleCwg
Z2w6OlRleHR1cmUgKnRleHR1cmUpID0gMDsKIAotICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldFVu
aWZvcm1CdWZmZXJzKGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAgIHZpcnR1YWwgZ2w6OkVycm9y
IHNldFVuaWZvcm1CdWZmZXJzKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8R0xpbnQ+
ICZ2ZXJ0ZXhVbmlmb3JtQnVmZmVycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxHTGludD4gJmZyYWdtZW50VW5pZm9ybUJ1ZmZlcnMp
ID0gMDsKIAotICAgIHZpcnR1YWwgZ2w6OkVycm9yIHVwZGF0ZVN0YXRlKGNvbnN0IGdsOjpEYXRh
ICZkYXRhLCBHTGVudW0gZHJhd01vZGUpID0gMDsKLQotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGFw
cGx5UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVCdWZmZXIpID0gMDsK
ICAgICB2aXJ0dWFsIGdsOjpFcnJvciBhcHBseVVuaWZvcm1zKGNvbnN0IFByb2dyYW1EM0QgJnBy
b2dyYW1EM0QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHJh
d01vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZl
Y3RvcjxEM0RVbmlmb3JtICo+ICZ1bmlmb3JtQXJyYXkpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wg
YXBwbHlQcmltaXRpdmVUeXBlKEdMZW51bSBwcmltaXRpdmVUeXBlLCBHTHNpemVpIGVsZW1lbnRD
b3VudCwgYm9vbCB1c2VzUG9pbnRTaXplKSA9IDA7Ci0gICAgdmlydHVhbCBnbDo6RXJyb3IgYXBw
bHlWZXJ0ZXhCdWZmZXIoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBmaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZWRJbmRleERhdGEgKmluZGV4SW5mbykgPSAwOwot
ICAgIHZpcnR1YWwgZ2w6OkVycm9yIGFwcGx5SW5kZXhCdWZmZXIoY29uc3QgZ2w6OkRhdGEgJmRh
dGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQg
KmluZGljZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1v
ZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZWRJbmRleERh
dGEgKmluZGV4SW5mbykgPSAwOwotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGFwcGx5VHJhbnNmb3Jt
RmVlZGJhY2tCdWZmZXJzKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUpID0gMDsKIAotICAgIHZpcnR1
YWwgdW5zaWduZWQgaW50IGdldFJlc2VydmVkVmVydGV4VW5pZm9ybVZlY3RvcnMoKSBjb25zdCA9
IDA7Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0UmVzZXJ2ZWRGcmFnbWVudFVuaWZvcm1W
ZWN0b3JzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFJlc2VydmVk
VmVydGV4VW5pZm9ybUJ1ZmZlcnMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBp
bnQgZ2V0UmVzZXJ2ZWRGcmFnbWVudFVuaWZvcm1CdWZmZXJzKCkgY29uc3QgPSAwOwogCkBAIC0y
MDEsNiArMTU5LDIxIEBAIGNsYXNzIFJlbmRlcmVyRDNEIDogcHVibGljIFJlbmRlcmVyLCBwdWIK
ICAgICB2aXJ0dWFsIGdsOjpFcnJvciBjb3B5SW1hZ2UyREFycmF5KGNvbnN0IGdsOjpGcmFtZWJ1
ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZVJlY3QsIEdMZW51
bSBkZXN0Rm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsIEdMaW50
IGxldmVsKSA9IDA7CiAKKyAgICB2aXJ0dWFsIGdsOjpFcnJvciBjb3B5VGV4dHVyZShjb25zdCBn
bDo6VGV4dHVyZSAqc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHNvdXJjZUxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpSZWN0YW5nbGUgJnNvdXJjZVJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGRlc3RGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBkZXN0TGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCB1bnBhY2tGbGlwWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIHVucGFja1ByZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCB1bnBhY2tVbm11bHRpcGx5QWxwaGEpID0gMDsKKyAgICB2aXJ0dWFs
IGdsOjpFcnJvciBjb3B5Q29tcHJlc3NlZFRleHR1cmUoY29uc3QgZ2w6OlRleHR1cmUgKnNvdXJj
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc291
cmNlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRl
eHR1cmVTdG9yYWdlICpzdG9yYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBkZXN0TGV2ZWwpID0gMDsKKwogICAgIC8vIFJlbmRlclRhcmdldCBj
cmVhdGlvbgogICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNyZWF0ZVJlbmRlclRhcmdldChpbnQgd2lk
dGgsIGludCBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgc2FtcGxlcywgUmVuZGVyVGFy
Z2V0RDNEICoqb3V0UlQpID0gMDsKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBjcmVhdGVSZW5kZXJU
YXJnZXRDb3B5KFJlbmRlclRhcmdldEQzRCAqc291cmNlLCBSZW5kZXJUYXJnZXREM0QgKipvdXRS
VCkgPSAwOwpAQCAtMjI0LDEwICsxOTcsMTQgQEAgY2xhc3MgUmVuZGVyZXJEM0QgOiBwdWJsaWMg
UmVuZGVyZXIsIHB1YgogICAgIC8vIEltYWdlIG9wZXJhdGlvbnMKICAgICB2aXJ0dWFsIEltYWdl
RDNEICpjcmVhdGVJbWFnZSgpID0gMDsKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBnZW5lcmF0ZU1p
cG1hcChJbWFnZUQzRCAqZGVzdCwgSW1hZ2VEM0QgKnNvdXJjZSkgPSAwOwotICAgIHZpcnR1YWwg
Z2w6OkVycm9yIGdlbmVyYXRlTWlwbWFwc1VzaW5nRDNEKFRleHR1cmVTdG9yYWdlICpzdG9yYWdl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpUZXh0dXJlU3RhdGUgJnRleHR1cmVTdGF0ZSkgPSAwOworICAgIHZpcnR1YWwgZ2w6OkVycm9y
IGdlbmVyYXRlTWlwbWFwVXNpbmdEM0QoVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VGV4dHVyZVN0
YXRlICZ0ZXh0dXJlU3RhdGUpID0gMDsKICAgICB2aXJ0dWFsIFRleHR1cmVTdG9yYWdlICpjcmVh
dGVUZXh0dXJlU3RvcmFnZTJEKFN3YXBDaGFpbkQzRCAqc3dhcENoYWluKSA9IDA7Ci0gICAgdmly
dHVhbCBUZXh0dXJlU3RvcmFnZSAqY3JlYXRlVGV4dHVyZVN0b3JhZ2VFR0xJbWFnZShFR0xJbWFn
ZUQzRCAqZWdsSW1hZ2UpID0gMDsKKyAgICB2aXJ0dWFsIFRleHR1cmVTdG9yYWdlICpjcmVhdGVU
ZXh0dXJlU3RvcmFnZUVHTEltYWdlKEVHTEltYWdlRDNEICplZ2xJbWFnZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlclRhcmdl
dEQzRCAqcmVuZGVyVGFyZ2V0RDNEKSA9IDA7CisgICAgdmlydHVhbCBUZXh0dXJlU3RvcmFnZSAq
Y3JlYXRlVGV4dHVyZVN0b3JhZ2VFeHRlcm5hbCgKKyAgICAgICAgZWdsOjpTdHJlYW0gKnN0cmVh
bSwKKyAgICAgICAgY29uc3QgZWdsOjpTdHJlYW06OkdMVGV4dHVyZURlc2NyaXB0aW9uICZkZXNj
KSA9IDA7CiAgICAgdmlydHVhbCBUZXh0dXJlU3RvcmFnZSAqY3JlYXRlVGV4dHVyZVN0b3JhZ2Uy
RChHTGVudW0gaW50ZXJuYWxmb3JtYXQsIGJvb2wgcmVuZGVyVGFyZ2V0LCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwgaW50IGxldmVscywgYm9vbCBoaW50TGV2ZWxaZXJvT25seSkgPSAw
OwogICAgIHZpcnR1YWwgVGV4dHVyZVN0b3JhZ2UgKmNyZWF0ZVRleHR1cmVTdG9yYWdlQ3ViZShH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIGJvb2wgcmVuZGVyVGFyZ2V0LCBpbnQgc2l6ZSwgaW50IGxl
dmVscywgYm9vbCBoaW50TGV2ZWxaZXJvT25seSkgPSAwOwogICAgIHZpcnR1YWwgVGV4dHVyZVN0
b3JhZ2UgKmNyZWF0ZVRleHR1cmVTdG9yYWdlM0QoR0xlbnVtIGludGVybmFsZm9ybWF0LCBib29s
IHJlbmRlclRhcmdldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVw
dGgsIGludCBsZXZlbHMpID0gMDsKQEAgLTIzOSwyNCArMjE2LDE5IEBAIGNsYXNzIFJlbmRlcmVy
RDNEIDogcHVibGljIFJlbmRlcmVyLCBwdWIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdGluYXRpb25Gb3JtYXQsIEdMZW51bSBzb3VyY2VQ
aXhlbHNUeXBlLCBjb25zdCBnbDo6Qm94ICZkZXN0QXJlYSkgPSAwOwogCiAgICAgLy8gRGV2aWNl
IGxvc3QKLSAgICB2b2lkIG5vdGlmeURldmljZUxvc3QoKSBvdmVycmlkZTsKKyAgICBHTGVudW0g
Z2V0UmVzZXRTdGF0dXMoKTsKKyAgICB2b2lkIG5vdGlmeURldmljZUxvc3QoKTsKICAgICB2aXJ0
dWFsIGJvb2wgcmVzZXREZXZpY2UoKSA9IDA7CisgICAgdmlydHVhbCBib29sIHRlc3REZXZpY2VM
b3N0KCkgICAgICAgPSAwOworICAgIHZpcnR1YWwgYm9vbCB0ZXN0RGV2aWNlUmVzZXR0YWJsZSgp
ID0gMDsKKwogICAgIHZpcnR1YWwgUmVuZGVyZXJDbGFzcyBnZXRSZW5kZXJlckNsYXNzKCkgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCAqZ2V0RDNERGV2aWNlKCkgPSAwOwogCi0gICAgZ2w6
OkVycm9yIGdldFNjcmF0Y2hNZW1vcnlCdWZmZXIoc2l6ZV90IHJlcXVlc3RlZFNpemUsIE1lbW9y
eUJ1ZmZlciAqKmJ1ZmZlck91dCk7Ci0KLSAgICAvLyBFWFRfZGVidWdfbWFya2VyCi0gICAgdm9p
ZCBpbnNlcnRFdmVudE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKSBv
dmVycmlkZTsKLSAgICB2b2lkIHB1c2hHcm91cE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3Qg
Y2hhciAqbWFya2VyKSBvdmVycmlkZTsKLSAgICB2b2lkIHBvcEdyb3VwTWFya2VyKCkgb3ZlcnJp
ZGU7Ci0KICAgICB2b2lkIHNldEdQVURpc2pvaW50KCk7CiAKLSAgICBHTGludCBnZXRHUFVEaXNq
b2ludCgpIG92ZXJyaWRlOwotICAgIEdMaW50NjQgZ2V0VGltZXN0YW1wKCkgb3ZlcnJpZGU7Ci0K
LSAgICB2b2lkIG9uTWFrZUN1cnJlbnQoY29uc3QgZ2w6OkRhdGEgJmRhdGEpIG92ZXJyaWRlOwor
ICAgIEdMaW50IGdldEdQVURpc2pvaW50KCk7CisgICAgR0xpbnQ2NCBnZXRUaW1lc3RhbXAoKTsK
IAogICAgIC8vIEluIEQzRDExLCBmYXN0ZXIgdGhhbiBjYWxsaW5nIHNldFRleHR1cmUgYSBqaWxs
aW9uIHRpbWVzCiAgICAgdmlydHVhbCBnbDo6RXJyb3IgY2xlYXJUZXh0dXJlcyhnbDo6U2FtcGxl
clR5cGUgc2FtcGxlclR5cGUsIHNpemVfdCByYW5nZVN0YXJ0LCBzaXplX3QgcmFuZ2VFbmQpID0g
MDsKQEAgLTI2Niw4NyArMjM4LDcyIEBAIGNsYXNzIFJlbmRlcmVyRDNEIDogcHVibGljIFJlbmRl
cmVyLCBwdWIKICAgICBib29sIHByZXNlbnRQYXRoRmFzdEVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtUHJlc2VudFBhdGhGYXN0RW5hYmxlZDsgfQogCiAgICAgLy8gU3RyZWFtIGNyZWF0aW9uCi0g
ICAgdmlydHVhbCBTdHJlYW1JbXBsICpjcmVhdGVTdHJlYW0oY29uc3QgZWdsOjpBdHRyaWJ1dGVN
YXAgJmF0dHJpYnMpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmVhbVByb2R1Y2VySW1wbCAqY3JlYXRl
U3RyZWFtUHJvZHVjZXJEM0RUZXh0dXJlTlYxMigKKyAgICAgICAgZWdsOjpTdHJlYW06OkNvbnN1
bWVyVHlwZSBjb25zdW1lclR5cGUsCisgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZh
dHRyaWJzKSA9IDA7CisKKyAgICBjb25zdCBnbDo6Q2FwcyAmZ2V0TmF0aXZlQ2FwcygpIGNvbnN0
OworICAgIGNvbnN0IGdsOjpUZXh0dXJlQ2Fwc01hcCAmZ2V0TmF0aXZlVGV4dHVyZUNhcHMoKSBj
b25zdDsKKyAgICBjb25zdCBnbDo6RXh0ZW5zaW9ucyAmZ2V0TmF0aXZlRXh0ZW5zaW9ucygpIGNv
bnN0OworICAgIGNvbnN0IGdsOjpMaW1pdGF0aW9ucyAmZ2V0TmF0aXZlTGltaXRhdGlvbnMoKSBj
b25zdDsKKworICAgIC8vIE5lY2Vzc2FyeSBoYWNrIGZvciBkZWZhdWx0IGZyYW1lYnVmZmVycyBp
biBEM0QuCisgICAgdmlydHVhbCBGcmFtZWJ1ZmZlckltcGwgKmNyZWF0ZURlZmF1bHRGcmFtZWJ1
ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUpID0gMDsKKworICAgIHZpcnR1
YWwgZ2w6OlZlcnNpb24gZ2V0TWF4U3VwcG9ydGVkRVNWZXJzaW9uKCkgY29uc3QgPSAwOwogCiAg
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgZ2V0TFVJRChMVUlEICphZGFwdGVyTHVpZCkg
Y29uc3QgPSAwOwotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGFwcGx5U2hhZGVyc0ltcGwoY29uc3Qg
Z2w6OkRhdGEgJmRhdGEsIEdMZW51bSBkcmF3TW9kZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBn
ZW5lcmF0ZUNhcHMoZ2w6OkNhcHMgKm91dENhcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnbDo6VGV4dHVyZUNhcHNNYXAgKm91dFRleHR1cmVDYXBzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2w6OkV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnbDo6TGltaXRhdGlvbnMgKm91dExpbWl0YXRpb25zKSBjb25z
dCA9IDA7CiAKICAgICB2b2lkIGNsZWFudXAoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVB
bm5vdGF0b3IoKSA9IDA7Ci0KLSAgICBzdGF0aWMgdW5zaWduZWQgaW50IEdldEJsZW5kU2FtcGxl
TWFzayhjb25zdCBnbDo6RGF0YSAmZGF0YSwgaW50IHNhbXBsZXMpOworICAgIHN0YXRpYyB1bnNp
Z25lZCBpbnQgR2V0QmxlbmRTYW1wbGVNYXNrKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEs
IGludCBzYW1wbGVzKTsKICAgICAvLyBkaXJ0eVBvaW50ZXIgaXMgYSBzcGVjaWFsIHZhbHVlIHRo
YXQgd2lsbCBtYWtlIHRoZSBjb21wYXJpc29uIHdpdGggYW55IHZhbGlkIHBvaW50ZXIgZmFpbCBh
bmQgZm9yY2UgdGhlIHJlbmRlcmVyIHRvIHJlLWFwcGx5IHRoZSBzdGF0ZS4KIAotICAgIGVnbDo6
RGlzcGxheSAqbURpc3BsYXk7Ci0gICAgYm9vbCBtRGV2aWNlTG9zdDsKKyAgICBnbDo6RXJyb3Ig
YXBwbHlUZXh0dXJlcyhHTEltcGxGYWN0b3J5ICppbXBsRmFjdG9yeSwgY29uc3QgZ2w6OkNvbnRl
eHRTdGF0ZSAmZGF0YSk7CisgICAgYm9vbCBza2lwRHJhdyhjb25zdCBnbDo6Q29udGV4dFN0YXRl
ICZkYXRhLCBHTGVudW0gZHJhd01vZGUpOworICAgIGdsOjpFcnJvciBtYXJrVHJhbnNmb3JtRmVl
ZGJhY2tVc2FnZShjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhKTsKIAotICAgIHZvaWQgaW5p
dGlhbGl6ZURlYnVnQW5ub3RhdG9yKCk7Ci0gICAgZ2w6OkRlYnVnQW5ub3RhdG9yICptQW5ub3Rh
dG9yOworICAgIGVnbDo6RGlzcGxheSAqbURpc3BsYXk7CiAKICAgICBib29sIG1QcmVzZW50UGF0
aEZhc3RFbmFibGVkOwogCiAgIHByaXZhdGU6Ci0gICAgZ2w6OkVycm9yIGdlbmVyaWNEcmF3QXJy
YXlzKGNvbnN0IGdsOjpEYXRhICZkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gbW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZmly
c3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzKTsKLQotICAgIGds
OjpFcnJvciBnZW5lcmljRHJhd0VsZW1lbnRzKGNvbnN0IGdsOjpEYXRhICZkYXRhLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgaW5zdGFuY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpJbmRleFJhbmdlICZpbmRleFJhbmdlKTsKLQotICAgIHZpcnR1YWwgZ2w6OkVy
cm9yIGRyYXdBcnJheXNJbXBsKGNvbnN0IGdsOjpEYXRhICZkYXRhLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHN0YXJ0VmVydGV4LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMpID0gMDsKLSAgICB2aXJ0dWFsIGdsOjpFcnJv
ciBkcmF3RWxlbWVudHNJbXBsKGNvbnN0IGdsOjpEYXRhICZkYXRhLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHJhbnNsYXRlZEluZGV4RGF0YSAmaW5kZXhJ
bmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNl
cykgPSAwOworICAgIHZvaWQgZW5zdXJlQ2Fwc0luaXRpYWxpemVkKCkgY29uc3Q7CiAKLSAgICAv
L0ZJWE1FKGptYWRpbGwpOiBzdGQ6OmFycmF5IGlzIGN1cnJlbnRseSBwcm9oaWJpdGVkIGJ5IENo
cm9taXVtIHN0eWxlIGd1aWRlCiAgICAgdHlwZWRlZiBzdGQ6OmFycmF5PGdsOjpUZXh0dXJlKiwg
Z2w6OklNUExFTUVOVEFUSU9OX01BWF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UUz4gRnJhbWVidWZm
ZXJUZXh0dXJlQXJyYXk7CiAKLSAgICBnbDo6RXJyb3IgZ2VuZXJhdGVTd2l6emxlcyhjb25zdCBn
bDo6RGF0YSAmZGF0YSwgZ2w6OlNhbXBsZXJUeXBlIHR5cGUpOwotICAgIGdsOjpFcnJvciBnZW5l
cmF0ZVN3aXp6bGVzKGNvbnN0IGdsOjpEYXRhICZkYXRhKTsKLQotICAgIGdsOjpFcnJvciBhcHBs
eVN0YXRlKGNvbnN0IGdsOjpEYXRhICZkYXRhLCBHTGVudW0gZHJhd01vZGUpOwotICAgIGdsOjpF
cnJvciBhcHBseVNoYWRlcnMoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIEdMZW51bSBkcmF3TW9kZSk7
Ci0gICAgZ2w6OkVycm9yIGFwcGx5VGV4dHVyZXMoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIGdsOjpT
YW1wbGVyVHlwZSBzaGFkZXJUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEZyYW1lYnVmZmVyVGV4dHVyZUFycmF5ICZmcmFtZWJ1ZmZlclRleHR1cmVzLCBzaXplX3QgZnJh
bWVidWZmZXJUZXh0dXJlQ291bnQpOwotICAgIGdsOjpFcnJvciBhcHBseVRleHR1cmVzKGNvbnN0
IGdsOjpEYXRhICZkYXRhKTsKLQotICAgIGJvb2wgc2tpcERyYXcoY29uc3QgZ2w6OkRhdGEgJmRh
dGEsIEdMZW51bSBkcmF3TW9kZSk7Ci0gICAgZ2w6OkVycm9yIG1hcmtUcmFuc2Zvcm1GZWVkYmFj
a1VzYWdlKGNvbnN0IGdsOjpEYXRhICZkYXRhKTsKLQotICAgIHNpemVfdCBnZXRCb3VuZEZyYW1l
YnVmZmVyVGV4dHVyZXMoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIEZyYW1lYnVmZmVyVGV4dHVyZUFy
cmF5ICpvdXRUZXh0dXJlQXJyYXkpOwotICAgIGdsOjpUZXh0dXJlICpnZXRJbmNvbXBsZXRlVGV4
dHVyZShHTGVudW0gdHlwZSk7Ci0KLSAgICBnbDo6RGVidWdBbm5vdGF0b3IgKmdldEFubm90YXRv
cigpOworICAgIGdsOjpFcnJvciBhcHBseVRleHR1cmVzKEdMSW1wbEZhY3RvcnkgKmltcGxGYWN0
b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpDb250ZXh0U3RhdGUg
JmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlNhbXBsZXJUeXBlIHNoYWRl
clR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRnJhbWVidWZmZXJUZXh0
dXJlQXJyYXkgJmZyYW1lYnVmZmVyVGV4dHVyZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGZyYW1lYnVmZmVyVGV4dHVyZUNvdW50KTsKKworICAgIHNpemVfdCBnZXRCb3Vu
ZEZyYW1lYnVmZmVyVGV4dHVyZXMoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lYnVmZmVyVGV4dHVyZUFycmF5
ICpvdXRUZXh0dXJlQXJyYXkpOworICAgIGdsOjpUZXh0dXJlICpnZXRJbmNvbXBsZXRlVGV4dHVy
ZShHTEltcGxGYWN0b3J5ICppbXBsRmFjdG9yeSwgR0xlbnVtIHR5cGUpOwogCiAgICAgdmlydHVh
bCBXb3JrYXJvdW5kc0QzRCBnZW5lcmF0ZVdvcmthcm91bmRzKCkgY29uc3QgPSAwOwogCisgICAg
bXV0YWJsZSBib29sIG1DYXBzSW5pdGlhbGl6ZWQ7CisgICAgbXV0YWJsZSBnbDo6Q2FwcyBtTmF0
aXZlQ2FwczsKKyAgICBtdXRhYmxlIGdsOjpUZXh0dXJlQ2Fwc01hcCBtTmF0aXZlVGV4dHVyZUNh
cHM7CisgICAgbXV0YWJsZSBnbDo6RXh0ZW5zaW9ucyBtTmF0aXZlRXh0ZW5zaW9uczsKKyAgICBt
dXRhYmxlIGdsOjpMaW1pdGF0aW9ucyBtTmF0aXZlTGltaXRhdGlvbnM7CisKICAgICBnbDo6VGV4
dHVyZU1hcCBtSW5jb21wbGV0ZVRleHR1cmVzOwotICAgIE1lbW9yeUJ1ZmZlciBtU2NyYXRjaE1l
bW9yeUJ1ZmZlcjsKLSAgICB1bnNpZ25lZCBpbnQgbVNjcmF0Y2hNZW1vcnlCdWZmZXJSZXNldENv
dW50ZXI7CiAKICAgICBtdXRhYmxlIGJvb2wgbVdvcmthcm91bmRzSW5pdGlhbGl6ZWQ7CiAgICAg
bXV0YWJsZSBXb3JrYXJvdW5kc0QzRCBtV29ya2Fyb3VuZHM7CiAKICAgICBib29sIG1EaXNqb2lu
dDsKKyAgICBib29sIG1EZXZpY2VMb3N0OwogfTsKIAotfQorfSAgLy8gbmFtZXNwYWNlIHJ4CiAK
ICNlbmRpZiAvLyBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfUkVOREVSRVJEM0RfSF8KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvU2hhZGVyRDNE
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL1NoYWRlckQzRC5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvU2hhZGVyRDNELmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDAsOSArNDAsMzMgQEAgY29uc3QgY2hhciAqR2V0U2hhZGVyVHlw
ZVN0cmluZyhHTGVudW0gdAogbmFtZXNwYWNlIHJ4CiB7CiAKLVNoYWRlckQzRDo6U2hhZGVyRDNE
KGNvbnN0IGdsOjpTaGFkZXI6OkRhdGEgJmRhdGEpIDogU2hhZGVySW1wbChkYXRhKQorU2hhZGVy
RDNEOjpTaGFkZXJEM0QoY29uc3QgZ2w6OlNoYWRlclN0YXRlICZkYXRhLCBjb25zdCBXb3JrYXJv
dW5kc0QzRCAmd29ya2Fyb3VuZHMpCisgICAgOiBTaGFkZXJJbXBsKGRhdGEpLCBtQWRkaXRpb25h
bE9wdGlvbnMoMCkKIHsKICAgICB1bmNvbXBpbGUoKTsKKworICAgIGlmICh3b3JrYXJvdW5kcy5l
eHBhbmRJbnRlZ2VyUG93RXhwcmVzc2lvbnMpCisgICAgeworICAgICAgICBtQWRkaXRpb25hbE9w
dGlvbnMgfD0gU0hfRVhQQU5EX1NFTEVDVF9ITFNMX0lOVEVHRVJfUE9XX0VYUFJFU1NJT05TOwor
ICAgIH0KKworICAgIGlmICh3b3JrYXJvdW5kcy5nZXREaW1lbnNpb25zSWdub3Jlc0Jhc2VMZXZl
bCkKKyAgICB7CisgICAgICAgIG1BZGRpdGlvbmFsT3B0aW9ucyB8PSBTSF9ITFNMX0dFVF9ESU1F
TlNJT05TX0lHTk9SRVNfQkFTRV9MRVZFTDsKKyAgICB9CisKKyAgICBpZiAod29ya2Fyb3VuZHMu
cHJlQWRkVGV4ZWxGZXRjaE9mZnNldHMpCisgICAgeworICAgICAgICBtQWRkaXRpb25hbE9wdGlv
bnMgfD0gU0hfUkVXUklURV9URVhFTEZFVENIT0ZGU0VUX1RPX1RFWEVMRkVUQ0g7CisgICAgfQor
ICAgIGlmICh3b3JrYXJvdW5kcy5yZXdyaXRlVW5hcnlNaW51c09wZXJhdG9yKQorICAgIHsKKyAg
ICAgICAgbUFkZGl0aW9uYWxPcHRpb25zIHw9IFNIX1JFV1JJVEVfSU5URUdFUl9VTkFSWV9NSU5V
U19PUEVSQVRPUjsKKyAgICB9CisgICAgaWYgKHdvcmthcm91bmRzLmVtdWxhdGVJc25hbkZsb2F0
KQorICAgIHsKKyAgICAgICAgbUFkZGl0aW9uYWxPcHRpb25zIHw9IFNIX0VNVUxBVEVfSVNOQU5f
RkxPQVRfRlVOQ1RJT047CisgICAgfQogfQogCiBTaGFkZXJEM0Q6On5TaGFkZXJEM0QoKQpAQCAt
MTE3LDEyICsxNDEsMTIgQEAgU2hTaGFkZXJPdXRwdXQgU2hhZGVyRDNEOjpnZXRDb21waWxlck91
dAogICAgIHJldHVybiBtQ29tcGlsZXJPdXRwdXRUeXBlOwogfQogCi1pbnQgU2hhZGVyRDNEOjpw
cmVwYXJlU291cmNlQW5kUmV0dXJuT3B0aW9ucyhzdGQ6OnN0cmluZ3N0cmVhbSAqc2hhZGVyU291
cmNlU3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjpzdHJpbmcgKnNvdXJjZVBhdGgpCitTaENvbXBpbGVPcHRpb25zIFNoYWRlckQzRDo6cHJl
cGFyZVNvdXJjZUFuZFJldHVybk9wdGlvbnMoc3RkOjpzdHJpbmdzdHJlYW0gKnNoYWRlclNvdXJj
ZVN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6OnN0cmluZyAqc291cmNlUGF0aCkKIHsKICAgICB1bmNvbXBpbGUoKTsK
IAotICAgIGludCBhZGRpdGlvbmFsT3B0aW9ucyA9IDA7CisgICAgU2hDb21waWxlT3B0aW9ucyBh
ZGRpdGlvbmFsT3B0aW9ucyA9IDA7CiAKICAgICBjb25zdCBzdGQ6OnN0cmluZyAmc291cmNlID0g
bURhdGEuZ2V0U291cmNlKCk7CiAKQEAgLTEzNSw2ICsxNTksOCBAQCBpbnQgU2hhZGVyRDNEOjpw
cmVwYXJlU291cmNlQW5kUmV0dXJuT3B0CiAgICAgfQogI2VuZGlmCiAKKyAgICBhZGRpdGlvbmFs
T3B0aW9ucyB8PSBtQWRkaXRpb25hbE9wdGlvbnM7CisKICAgICAqc2hhZGVyU291cmNlU3RyZWFt
IDw8IHNvdXJjZTsKICAgICByZXR1cm4gYWRkaXRpb25hbE9wdGlvbnM7CiB9CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1NoYWRlckQzRC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvU2hhZGVyRDNELmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvU2hhZGVyRDNELmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE5LDE2ICsxOSwxNyBAQCBjbGFzcyBEeW5hbWljSExTTDsKIGNsYXNzIFJlbmRl
cmVyRDNEOwogc3RydWN0IEQzRENvbXBpbGVyV29ya2Fyb3VuZHM7CiBzdHJ1Y3QgRDNEVW5pZm9y
bTsKK3N0cnVjdCBXb3JrYXJvdW5kc0QzRDsKIAogY2xhc3MgU2hhZGVyRDNEIDogcHVibGljIFNo
YWRlckltcGwKIHsKICAgcHVibGljOgotICAgIFNoYWRlckQzRChjb25zdCBnbDo6U2hhZGVyOjpE
YXRhICZkYXRhKTsKKyAgICBTaGFkZXJEM0QoY29uc3QgZ2w6OlNoYWRlclN0YXRlICZkYXRhLCBj
b25zdCBXb3JrYXJvdW5kc0QzRCAmd29ya2Fyb3VuZHMpOwogICAgIHZpcnR1YWwgflNoYWRlckQz
RCgpOwogCiAgICAgLy8gU2hhZGVySW1wbCBpbXBsZW1lbnRhdGlvbgotICAgIGludCBwcmVwYXJl
U291cmNlQW5kUmV0dXJuT3B0aW9ucyhzdGQ6OnN0cmluZ3N0cmVhbSAqc291cmNlU3RyZWFtLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyAqc291cmNl
UGF0aCkgb3ZlcnJpZGU7CisgICAgU2hDb21waWxlT3B0aW9ucyBwcmVwYXJlU291cmNlQW5kUmV0
dXJuT3B0aW9ucyhzdGQ6OnN0cmluZ3N0cmVhbSAqc291cmNlU3RyZWFtLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgKnNvdXJj
ZVBhdGgpIG92ZXJyaWRlOwogICAgIGJvb2wgcG9zdFRyYW5zbGF0ZUNvbXBpbGUoZ2w6OkNvbXBp
bGVyICpjb21waWxlciwgc3RkOjpzdHJpbmcgKmluZm9Mb2cpIG92ZXJyaWRlOwogICAgIHN0ZDo6
c3RyaW5nIGdldERlYnVnSW5mbygpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC03Niw3ICs3Nyw4IEBA
IGNsYXNzIFNoYWRlckQzRCA6IHB1YmxpYyBTaGFkZXJJbXBsCiAgICAgbXV0YWJsZSBzdGQ6OnN0
cmluZyBtRGVidWdJbmZvOwogICAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCB1bnNpZ25lZCBpbnQ+
IG1Vbmlmb3JtUmVnaXN0ZXJNYXA7CiAgICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHVuc2lnbmVk
IGludD4gbUludGVyZmFjZUJsb2NrUmVnaXN0ZXJNYXA7CisgICAgU2hDb21waWxlT3B0aW9ucyBt
QWRkaXRpb25hbE9wdGlvbnM7CiB9OwotfQorfSAgLy8gbmFtZXNwYWNlIHJ4CiAKICNlbmRpZiAg
Ly8gTElCQU5HTEVfUkVOREVSRVJfRDNEX1NIQURFUkQzRF9IXwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9TdXJmYWNlRDNELmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL1N1cmZhY2VEM0QuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1N1cmZhY2VEM0QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMSw1NyArMjEsMzkgQEAKIG5hbWVzcGFjZSByeAogewogCi1TdXJmYWNlRDNE
ICpTdXJmYWNlRDNEOjpjcmVhdGVPZmZzY3JlZW4oUmVuZGVyZXJEM0QgKnJlbmRlcmVyLCBlZ2w6
OkRpc3BsYXkgKmRpc3BsYXksIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcsIEVHTENsaWVudEJ1
ZmZlciBzaGFyZUhhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpCi17Ci0gICAgcmV0dXJuIG5ldyBTdXJmYWNl
RDNEKHJlbmRlcmVyLCBkaXNwbGF5LCBjb25maWcsIHdpZHRoLCBoZWlnaHQsIEVHTF9UUlVFLCAw
LCBFR0xfRkFMU0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlSGFuZGxlLCBOVUxM
KTsKLX0KLQotU3VyZmFjZUQzRCAqU3VyZmFjZUQzRDo6Y3JlYXRlRnJvbVdpbmRvdyhSZW5kZXJl
ckQzRCAqcmVuZGVyZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVnbDo6RGlzcGxheSAqZGlzcGxheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBmaXhlZFNpemUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBkaXJlY3RDb21wb3Np
dGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IHdp
ZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgaGVp
Z2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgb3Jp
ZW50YXRpb24pCi17Ci0gICAgcmV0dXJuIG5ldyBTdXJmYWNlRDNEKHJlbmRlcmVyLCBkaXNwbGF5
LCBjb25maWcsIHdpZHRoLCBoZWlnaHQsIGZpeGVkU2l6ZSwgb3JpZW50YXRpb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIGRpcmVjdENvbXBvc2l0aW9uLCBzdGF0aWNfY2FzdDxFR0xDbGll
bnRCdWZmZXI+KDApLCB3aW5kb3cpOwotfQotCi1TdXJmYWNlRDNEOjpTdXJmYWNlRDNEKFJlbmRl
cmVyRDNEICpyZW5kZXJlciwKK1N1cmZhY2VEM0Q6OlN1cmZhY2VEM0QoY29uc3QgZWdsOjpTdXJm
YWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJlckQzRCAqcmVu
ZGVyZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSwKICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZywKLSAgICAgICAg
ICAgICAgICAgICAgICAgRUdMaW50IHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICBFR0xp
bnQgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgZml4ZWRTaXplLAotICAg
ICAgICAgICAgICAgICAgICAgICBFR0xpbnQgb3JpZW50YXRpb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgIEVHTGludCBkaXJlY3RDb21wb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
RUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCiAgICAgICAgICAgICAgICAgICAgICAgIEVHTENs
aWVudEJ1ZmZlciBzaGFyZUhhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgRUdMTmF0aXZl
V2luZG93VHlwZSB3aW5kb3cpCi0gICAgOiBTdXJmYWNlSW1wbCgpLAorICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKKyAgICA6IFN1cmZhY2VJ
bXBsKHN0YXRlKSwKICAgICAgIG1SZW5kZXJlcihyZW5kZXJlciksCiAgICAgICBtRGlzcGxheShk
aXNwbGF5KSwKLSAgICAgIG1GaXhlZFNpemUoZml4ZWRTaXplID09IEVHTF9UUlVFKSwKLSAgICAg
IG1PcmllbnRhdGlvbihvcmllbnRhdGlvbiksCisgICAgICBtRml4ZWRTaXplKHdpbmRvdyA9PSBu
dWxscHRyIHx8IGF0dHJpYnMuZ2V0KEVHTF9GSVhFRF9TSVpFX0FOR0xFLCBFR0xfRkFMU0UpID09
IEVHTF9UUlVFKSwKKyAgICAgIG1PcmllbnRhdGlvbihzdGF0aWNfY2FzdDxFR0xpbnQ+KGF0dHJp
YnMuZ2V0KEVHTF9TVVJGQUNFX09SSUVOVEFUSU9OX0FOR0xFLCAwKSkpLAogICAgICAgbVJlbmRl
clRhcmdldEZvcm1hdChjb25maWctPnJlbmRlclRhcmdldEZvcm1hdCksCiAgICAgICBtRGVwdGhT
dGVuY2lsRm9ybWF0KGNvbmZpZy0+ZGVwdGhTdGVuY2lsRm9ybWF0KSwKICAgICAgIG1Td2FwQ2hh
aW4obnVsbHB0ciksCiAgICAgICBtU3dhcEludGVydmFsRGlydHkodHJ1ZSksCi0gICAgICBtTmF0
aXZlV2luZG93KHdpbmRvdywgY29uZmlnLCBkaXJlY3RDb21wb3NpdGlvbiA9PSBFR0xfVFJVRSks
Ci0gICAgICBtV2lkdGgod2lkdGgpLAotICAgICAgbUhlaWdodChoZWlnaHQpLAorICAgICAgbU5h
dGl2ZVdpbmRvdyhyZW5kZXJlci0+Y3JlYXRlTmF0aXZlV2luZG93KHdpbmRvdywgY29uZmlnLCBh
dHRyaWJzKSksCisgICAgICBtV2lkdGgoc3RhdGljX2Nhc3Q8RUdMaW50PihhdHRyaWJzLmdldChF
R0xfV0lEVEgsIDApKSksCisgICAgICBtSGVpZ2h0KHN0YXRpY19jYXN0PEVHTGludD4oYXR0cmli
cy5nZXQoRUdMX0hFSUdIVCwgMCkpKSwKICAgICAgIG1Td2FwSW50ZXJ2YWwoMSksCiAgICAgICBt
U2hhcmVIYW5kbGUocmVpbnRlcnByZXRfY2FzdDxIQU5ETEUgKj4oc2hhcmVIYW5kbGUpKQogewor
ICAgIGlmICh3aW5kb3cgIT0gbnVsbHB0ciAmJiAhbUZpeGVkU2l6ZSkKKyAgICB7CisgICAgICAg
IG1XaWR0aCAgPSAtMTsKKyAgICAgICAgbUhlaWdodCA9IC0xOworICAgIH0KIH0KIAogU3VyZmFj
ZUQzRDo6flN1cmZhY2VEM0QoKQogewogICAgIHJlbGVhc2VTd2FwQ2hhaW4oKTsKKyAgICBTYWZl
RGVsZXRlKG1OYXRpdmVXaW5kb3cpOwogfQogCiB2b2lkIFN1cmZhY2VEM0Q6OnJlbGVhc2VTd2Fw
Q2hhaW4oKQpAQCAtODEsOSArNjMsOSBAQCB2b2lkIFN1cmZhY2VEM0Q6OnJlbGVhc2VTd2FwQ2hh
aW4oKQogCiBlZ2w6OkVycm9yIFN1cmZhY2VEM0Q6OmluaXRpYWxpemUoKQogewotICAgIGlmICht
TmF0aXZlV2luZG93LmdldE5hdGl2ZVdpbmRvdygpKQorICAgIGlmIChtTmF0aXZlV2luZG93LT5n
ZXROYXRpdmVXaW5kb3coKSkKICAgICB7Ci0gICAgICAgIGlmICghbU5hdGl2ZVdpbmRvdy5pbml0
aWFsaXplKCkpCisgICAgICAgIGlmICghbU5hdGl2ZVdpbmRvdy0+aW5pdGlhbGl6ZSgpKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX1NVUkZBQ0UpOwog
ICAgICAgICB9CkBAIC05OCw5ICs4MCw5IEBAIGVnbDo6RXJyb3IgU3VyZmFjZUQzRDo6aW5pdGlh
bGl6ZSgpCiAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwogfQogCi1GcmFtZWJ1
ZmZlckltcGwgKlN1cmZhY2VEM0Q6OmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6
RnJhbWVidWZmZXI6OkRhdGEgJmRhdGEpCitGcmFtZWJ1ZmZlckltcGwgKlN1cmZhY2VEM0Q6OmNy
ZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmZGF0YSkK
IHsKLSAgICByZXR1cm4gbVJlbmRlcmVyLT5jcmVhdGVGcmFtZWJ1ZmZlcihkYXRhKTsKKyAgICBy
ZXR1cm4gbVJlbmRlcmVyLT5jcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoZGF0YSk7CiB9CiAKIGVn
bDo6RXJyb3IgU3VyZmFjZUQzRDo6YmluZFRleEltYWdlKGdsOjpUZXh0dXJlICosIEVHTGludCkK
QEAgLTExMyw2ICs5NSwxMSBAQCBlZ2w6OkVycm9yIFN1cmZhY2VEM0Q6OnJlbGVhc2VUZXhJbWFn
ZShFCiAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwogfQogCitlZ2w6OkVycm9y
IFN1cmZhY2VEM0Q6OmdldFN5bmNWYWx1ZXMoRUdMdWludDY0S0hSICp1c3QsIEVHTHVpbnQ2NEtI
UiAqbXNjLCBFR0x1aW50NjRLSFIgKnNiYykKK3sKKyAgICByZXR1cm4gbVN3YXBDaGFpbi0+Z2V0
U3luY1ZhbHVlcyh1c3QsIG1zYywgc2JjKTsKK30KKwogZWdsOjpFcnJvciBTdXJmYWNlRDNEOjpy
ZXNldFN3YXBDaGFpbigpCiB7CiAgICAgQVNTRVJUKCFtU3dhcENoYWluKTsKQEAgLTEyMyw3ICsx
MTAsNyBAQCBlZ2w6OkVycm9yIFN1cmZhY2VEM0Q6OnJlc2V0U3dhcENoYWluKCkKICAgICBpZiAo
IW1GaXhlZFNpemUpCiAgICAgewogICAgICAgICBSRUNUIHdpbmRvd1JlY3Q7Ci0gICAgICAgIGlm
ICghbU5hdGl2ZVdpbmRvdy5nZXRDbGllbnRSZWN0KCZ3aW5kb3dSZWN0KSkKKyAgICAgICAgaWYg
KCFtTmF0aXZlV2luZG93LT5nZXRDbGllbnRSZWN0KCZ3aW5kb3dSZWN0KSkKICAgICAgICAgewog
ICAgICAgICAgICAgQVNTRVJUKGZhbHNlKTsKIApAQCAtMjQ3LDExICsyMzQsMTEgQEAgYm9vbCBT
dXJmYWNlRDNEOjpjaGVja0Zvck91dE9mRGF0ZVN3YXBDaAogICAgIGludCBjbGllbnRXaWR0aCA9
IGdldFdpZHRoKCk7CiAgICAgaW50IGNsaWVudEhlaWdodCA9IGdldEhlaWdodCgpOwogICAgIGJv
b2wgc2l6ZURpcnR5ID0gZmFsc2U7Ci0gICAgaWYgKCFtRml4ZWRTaXplICYmICFtTmF0aXZlV2lu
ZG93LmlzSWNvbmljKCkpCisgICAgaWYgKCFtRml4ZWRTaXplICYmICFtTmF0aXZlV2luZG93LT5p
c0ljb25pYygpKQogICAgIHsKICAgICAgICAgLy8gVGhlIHdpbmRvdyBpcyBhdXRvbWF0aWNhbGx5
IHJlc2l6ZWQgdG8gMTUweDIyIHdoZW4gaXQncyBtaW5pbWl6ZWQsIGJ1dCB0aGUgc3dhcGNoYWlu
IHNob3VsZG4ndCBiZSByZXNpemVkCiAgICAgICAgIC8vIGJlY2F1c2UgdGhhdCdzIG5vdCBhIHVz
ZWZ1bCBzaXplIHRvIHJlbmRlciB0by4KLSAgICAgICAgaWYgKCFtTmF0aXZlV2luZG93LmdldENs
aWVudFJlY3QoJmNsaWVudCkpCisgICAgICAgIGlmICghbU5hdGl2ZVdpbmRvdy0+Z2V0Q2xpZW50
UmVjdCgmY2xpZW50KSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGZhbHNlKTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM1Myw0ICszNDAsMzggQEAgZ2w6OkVycm9yIFN1
cmZhY2VEM0Q6OmdldEF0dGFjaG1lbnRSZW5kZQogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9f
RVJST1IpOwogfQogCitXaW5kb3dTdXJmYWNlRDNEOjpXaW5kb3dTdXJmYWNlRDNEKGNvbnN0IGVn
bDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUmVuZGVyZXJEM0QgKnJlbmRlcmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKKyAg
ICA6IFN1cmZhY2VEM0Qoc3RhdGUsIHJlbmRlcmVyLCBkaXNwbGF5LCBjb25maWcsIHdpbmRvdywg
c3RhdGljX2Nhc3Q8RUdMQ2xpZW50QnVmZmVyPigwKSwgYXR0cmlicykKK3sKK30KKworV2luZG93
U3VyZmFjZUQzRDo6fldpbmRvd1N1cmZhY2VEM0QoKQorewogfQorCitQYnVmZmVyU3VyZmFjZUQz
RDo6UGJ1ZmZlclN1cmZhY2VEM0QoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlcmVyRDNEICpyZW5kZXJlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3Bs
YXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25m
aWcgKmNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGll
bnRCdWZmZXIgc2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCisgICAgOiBTdXJmYWNlRDNEKHN0
YXRlLAorICAgICAgICAgICAgICAgICByZW5kZXJlciwKKyAgICAgICAgICAgICAgICAgZGlzcGxh
eSwKKyAgICAgICAgICAgICAgICAgY29uZmlnLAorICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxFR0xOYXRpdmVXaW5kb3dUeXBlPigwKSwKKyAgICAgICAgICAgICAgICAgc2hhcmVIYW5kbGUs
CisgICAgICAgICAgICAgICAgIGF0dHJpYnMpCit7Cit9CisKK1BidWZmZXJTdXJmYWNlRDNEOjp+
UGJ1ZmZlclN1cmZhY2VEM0QoKQoreworfQorCit9ICAvLyBuYW1lc3BhY2UgcmMKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvU3VyZmFjZUQz
RC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvU3VyZmFjZUQzRC5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1N1cmZhY2VEM0QuaAkod29y
a2luZyBjb3B5KQpAQCAtMTAsNyArMTAsNyBAQAogI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9E
M0RfU1VSRkFDRUQzRF9IXwogCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvU3VyZmFjZUlt
cGwuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvTmF0aXZlV2luZG93
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL05hdGl2ZVdpbmRvd0QzRC5oIgog
CiBuYW1lc3BhY2UgZWdsCiB7CkBAIC0yNSwyOCArMjUsMTggQEAgY2xhc3MgUmVuZGVyZXJEM0Q7
CiBjbGFzcyBTdXJmYWNlRDNEIDogcHVibGljIFN1cmZhY2VJbXBsCiB7CiAgIHB1YmxpYzoKLSAg
ICBzdGF0aWMgU3VyZmFjZUQzRCAqY3JlYXRlRnJvbVdpbmRvdyhSZW5kZXJlckQzRCAqcmVuZGVy
ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpEaXNwbGF5
ICpkaXNwbGF5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGVnbDo6Q29uZmlnICpjb25maWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRUdMaW50IGZpeGVkU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFR0xpbnQgZGlyZWN0Q29tcG9zaXRpb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IHdpZHRoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBoZWlnaHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IG9yaWVudGF0aW9uKTsKLSAgICBzdGF0
aWMgU3VyZmFjZUQzRCAqY3JlYXRlT2Zmc2NyZWVuKFJlbmRlcmVyRDNEICpyZW5kZXJlciwgZWds
OjpEaXNwbGF5ICpkaXNwbGF5LCBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIHNoYXJlSGFuZGxl
LCBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpOwogICAgIH5TdXJmYWNlRDNEKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCByZWxlYXNlU3dhcENoYWluKCk7CiAKICAgICBlZ2w6OkVycm9yIGluaXRp
YWxpemUoKSBvdmVycmlkZTsKLSAgICBGcmFtZWJ1ZmZlckltcGwgKmNyZWF0ZURlZmF1bHRGcmFt
ZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRhdGEgJmRhdGEpIG92ZXJyaWRlOworICAg
IEZyYW1lYnVmZmVySW1wbCAqY3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFt
ZWJ1ZmZlclN0YXRlICZzdGF0ZSkgb3ZlcnJpZGU7CiAKICAgICBlZ2w6OkVycm9yIHN3YXAoKSBv
dmVycmlkZTsKICAgICBlZ2w6OkVycm9yIHBvc3RTdWJCdWZmZXIoRUdMaW50IHgsIEVHTGludCB5
LCBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpIG92ZXJyaWRlOwogICAgIGVnbDo6RXJyb3Ig
cXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFKEVHTGludCBhdHRyaWJ1dGUsIHZvaWQgKip2YWx1ZSkg
b3ZlcnJpZGU7CiAgICAgZWdsOjpFcnJvciBiaW5kVGV4SW1hZ2UoZ2w6OlRleHR1cmUgKnRleHR1
cmUsIEVHTGludCBidWZmZXIpIG92ZXJyaWRlOwogICAgIGVnbDo6RXJyb3IgcmVsZWFzZVRleElt
YWdlKEVHTGludCBidWZmZXIpIG92ZXJyaWRlOworICAgIGVnbDo6RXJyb3IgZ2V0U3luY1ZhbHVl
cyhFR0x1aW50NjRLSFIgKnVzdCwgRUdMdWludDY0S0hSICptc2MsIEVHTHVpbnQ2NEtIUiAqc2Jj
KSBvdmVycmlkZTsKICAgICB2b2lkIHNldFN3YXBJbnRlcnZhbChFR0xpbnQgaW50ZXJ2YWwpIG92
ZXJyaWRlOwogCiAgICAgRUdMaW50IGdldFdpZHRoKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC02Niwx
NyArNTYsMTQgQEAgY2xhc3MgU3VyZmFjZUQzRCA6IHB1YmxpYyBTdXJmYWNlSW1wbAogICAgIGds
OjpFcnJvciBnZXRBdHRhY2htZW50UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0
dGFjaG1lbnQ6OlRhcmdldCAmdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZyYW1lYnVmZmVyQXR0YWNobWVudFJlbmRlclRhcmdldCAqKnJ0T3V0KSBvdmVy
cmlkZTsKIAotICBwcml2YXRlOgotICAgIFN1cmZhY2VEM0QoUmVuZGVyZXJEM0QgKnJlbmRlcmVy
LAorICBwcm90ZWN0ZWQ6CisgICAgU3VyZmFjZUQzRChjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAm
c3RhdGUsCisgICAgICAgICAgICAgICBSZW5kZXJlckQzRCAqcmVuZGVyZXIsCiAgICAgICAgICAg
ICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXksCiAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNv
bmZpZyAqY29uZmlnLAotICAgICAgICAgICAgICAgRUdMaW50IHdpZHRoLAotICAgICAgICAgICAg
ICAgRUdMaW50IGhlaWdodCwKLSAgICAgICAgICAgICAgIEVHTGludCBmaXhlZFNpemUsCi0gICAg
ICAgICAgICAgICBFR0xpbnQgb3JpZW50YXRpb24sCi0gICAgICAgICAgICAgICBFR0xpbnQgZGly
ZWN0Q29tcG9zaXRpb24sCisgICAgICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRv
dywKICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBzaGFyZUhhbmRsZSwKLSAgICAgICAg
ICAgICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KTsKKyAgICAgICAgICAgICAgIGNvbnN0
IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKTsKIAogICAgIGVnbDo6RXJyb3Igc3dhcFJlY3Qo
RUdMaW50IHgsIEVHTGludCB5LCBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpOwogICAgIGVn
bDo6RXJyb3IgcmVzZXRTd2FwQ2hhaW4oaW50IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZm
ZXJIZWlnaHQpOwpAQCAtOTQsNyArODEsNyBAQCBjbGFzcyBTdXJmYWNlRDNEIDogcHVibGljIFN1
cmZhY2VJbXBsCiAgICAgU3dhcENoYWluRDNEICptU3dhcENoYWluOwogICAgIGJvb2wgbVN3YXBJ
bnRlcnZhbERpcnR5OwogCi0gICAgTmF0aXZlV2luZG93IG1OYXRpdmVXaW5kb3c7ICAgLy8gSGFu
ZGxlciBmb3IgdGhlIFdpbmRvdyB0aGF0IHRoZSBzdXJmYWNlIGlzIGNyZWF0ZWQgZm9yLgorICAg
IE5hdGl2ZVdpbmRvd0QzRCAqbU5hdGl2ZVdpbmRvdzsgIC8vIEhhbmRsZXIgZm9yIHRoZSBXaW5k
b3cgdGhhdCB0aGUgc3VyZmFjZSBpcyBjcmVhdGVkIGZvci4KICAgICBFR0xpbnQgbVdpZHRoOwog
ICAgIEVHTGludCBtSGVpZ2h0OwogCkBAIC0xMDMsNyArOTAsMzAgQEAgY2xhc3MgU3VyZmFjZUQz
RCA6IHB1YmxpYyBTdXJmYWNlSW1wbAogICAgIEhBTkRMRSBtU2hhcmVIYW5kbGU7CiB9OwogCitj
bGFzcyBXaW5kb3dTdXJmYWNlRDNEIDogcHVibGljIFN1cmZhY2VEM0QKK3sKKyAgcHVibGljOgor
ICAgIFdpbmRvd1N1cmZhY2VEM0QoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAg
ICAgICAgICAgICAgICAgICAgUmVuZGVyZXJEM0QgKnJlbmRlcmVyLAorICAgICAgICAgICAgICAg
ICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5LAorICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
ZWdsOjpDb25maWcgKmNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2ZVdpbmRv
d1R5cGUgd2luZG93LAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVN
YXAgJmF0dHJpYnMpOworICAgIH5XaW5kb3dTdXJmYWNlRDNEKCkgb3ZlcnJpZGU7Cit9OwogCi19
CitjbGFzcyBQYnVmZmVyU3VyZmFjZUQzRCA6IHB1YmxpYyBTdXJmYWNlRDNECit7CisgIHB1Ymxp
YzoKKyAgICBQYnVmZmVyU3VyZmFjZUQzRChjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUs
CisgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyZXJEM0QgKnJlbmRlcmVyLAorICAgICAgICAg
ICAgICAgICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSwKKyAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgIEVHTENs
aWVudEJ1ZmZlciBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6
OkF0dHJpYnV0ZU1hcCAmYXR0cmlicyk7CisgICAgflBidWZmZXJTdXJmYWNlRDNEKCkgb3ZlcnJp
ZGU7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcngKIAogI2VuZGlmIC8vIExJQkFOR0xFX1JFTkRF
UkVSX0QzRF9TVVJGQUNFRDNEX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL1N3YXBDaGFpbkQzRC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvU3dhcENoYWluRDNE
LmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvU3dhcENoYWluRDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTEyLDEy
ICsxMiwxMSBAQAogCiAjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CiAjaW5jbHVkZSA8RUdML2VnbC5o
PgorI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KIAogI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxz
LmgiCiAjaW5jbHVkZSAiY29tbW9uL3BsYXRmb3JtLmgiCi0KLS8vIFRPRE86IG1vdmUgb3V0IG9m
IEQzRDExCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL05hdGl2ZVdpbmRv
dy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0Vycm9yLmgiCiAKICNpZiAhZGVmaW5lZChBTkdMRV9G
T1JDRV9WU1lOQ19PRkYpCiAjZGVmaW5lIEFOR0xFX0ZPUkNFX1ZTWU5DX09GRiAwCkBAIC0zMCw4
ICsyOSwxMCBAQCBjbGFzcyBSZW5kZXJUYXJnZXREM0Q7CiBjbGFzcyBTd2FwQ2hhaW5EM0QgOiBh
bmdsZTo6Tm9uQ29weWFibGUKIHsKICAgcHVibGljOgotICAgIFN3YXBDaGFpbkQzRChyeDo6TmF0
aXZlV2luZG93IG5hdGl2ZVdpbmRvdywgSEFORExFIHNoYXJlSGFuZGxlLCBHTGVudW0gYmFja0J1
ZmZlckZvcm1hdCwgR0xlbnVtIGRlcHRoQnVmZmVyRm9ybWF0KQotICAgICAgICA6IG1OYXRpdmVX
aW5kb3cobmF0aXZlV2luZG93KSwgbU9mZnNjcmVlblJlbmRlclRhcmdldEZvcm1hdChiYWNrQnVm
ZmVyRm9ybWF0KSwgbURlcHRoQnVmZmVyRm9ybWF0KGRlcHRoQnVmZmVyRm9ybWF0KSwgbVNoYXJl
SGFuZGxlKHNoYXJlSGFuZGxlKQorICAgIFN3YXBDaGFpbkQzRChIQU5ETEUgc2hhcmVIYW5kbGUs
IEdMZW51bSBiYWNrQnVmZmVyRm9ybWF0LCBHTGVudW0gZGVwdGhCdWZmZXJGb3JtYXQpCisgICAg
ICAgIDogbU9mZnNjcmVlblJlbmRlclRhcmdldEZvcm1hdChiYWNrQnVmZmVyRm9ybWF0KSwKKyAg
ICAgICAgICBtRGVwdGhCdWZmZXJGb3JtYXQoZGVwdGhCdWZmZXJGb3JtYXQpLAorICAgICAgICAg
IG1TaGFyZUhhbmRsZShzaGFyZUhhbmRsZSkKICAgICB7CiAgICAgfQogCkBAIC00NSwxNCArNDYs
MTUgQEAgY2xhc3MgU3dhcENoYWluRDNEIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgdmlydHVh
bCBSZW5kZXJUYXJnZXREM0QgKmdldENvbG9yUmVuZGVyVGFyZ2V0KCkgPSAwOwogICAgIHZpcnR1
YWwgUmVuZGVyVGFyZ2V0RDNEICpnZXREZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQoKSA9IDA7CiAK
LSAgICBHTGVudW0gR2V0UmVuZGVyVGFyZ2V0SW50ZXJuYWxGb3JtYXQoKSBjb25zdCB7IHJldHVy
biBtT2Zmc2NyZWVuUmVuZGVyVGFyZ2V0Rm9ybWF0OyB9Ci0gICAgR0xlbnVtIEdldERlcHRoQnVm
ZmVySW50ZXJuYWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtRGVwdGhCdWZmZXJGb3JtYXQ7IH0K
KyAgICBHTGVudW0gZ2V0UmVuZGVyVGFyZ2V0SW50ZXJuYWxGb3JtYXQoKSBjb25zdCB7IHJldHVy
biBtT2Zmc2NyZWVuUmVuZGVyVGFyZ2V0Rm9ybWF0OyB9CisgICAgR0xlbnVtIGdldERlcHRoQnVm
ZmVySW50ZXJuYWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtRGVwdGhCdWZmZXJGb3JtYXQ7IH0K
IAogICAgIEhBTkRMRSBnZXRTaGFyZUhhbmRsZSgpIHsgcmV0dXJuIG1TaGFyZUhhbmRsZTsgfQog
ICAgIHZpcnR1YWwgdm9pZCAqZ2V0S2V5ZWRNdXRleCgpID0gMDsKIAorICAgIHZpcnR1YWwgZWds
OjpFcnJvciBnZXRTeW5jVmFsdWVzKEVHTHVpbnQ2NEtIUiAqdXN0LCBFR0x1aW50NjRLSFIgKm1z
YywgRUdMdWludDY0S0hSICpzYmMpID0gMDsKKwogICBwcm90ZWN0ZWQ6Ci0gICAgcng6Ok5hdGl2
ZVdpbmRvdyBtTmF0aXZlV2luZG93OyAgLy8gSGFuZGxlciBmb3IgdGhlIFdpbmRvdyB0aGF0IHRo
ZSBzdXJmYWNlIGlzIGNyZWF0ZWQgZm9yLgogICAgIGNvbnN0IEdMZW51bSBtT2Zmc2NyZWVuUmVu
ZGVyVGFyZ2V0Rm9ybWF0OwogICAgIGNvbnN0IEdMZW51bSBtRGVwdGhCdWZmZXJGb3JtYXQ7CiAK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
VGV4dHVyZUQzRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9UZXh0dXJlRDNELmNwcAkocmV2aXNpb24gMjA3ODA0KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9UZXh0
dXJlRDNELmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTIgKzQ2LDcgQEAgZ2w6OkVycm9yIEdl
dFVucGFja1BvaW50ZXIoY29uc3QgZ2w6OlBpeAogICAgICAgICBCdWZmZXJEM0QgKmJ1ZmZlckQz
RCA9IEdldEltcGxBczxCdWZmZXJEM0Q+KHBpeGVsQnVmZmVyKTsKICAgICAgICAgQVNTRVJUKGJ1
ZmZlckQzRCk7CiAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmJ1ZmZlckRhdGEgPSBOVUxMOwotICAg
ICAgICBnbDo6RXJyb3IgZXJyb3IgPSBidWZmZXJEM0QtPmdldERhdGEoJmJ1ZmZlckRhdGEpOwot
ICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gZXJyb3I7Ci0gICAgICAgIH0KLQorICAgICAgICBBTkdMRV9UUlkoYnVmZmVyRDNELT5nZXRE
YXRhKCZidWZmZXJEYXRhKSk7CiAgICAgICAgICpwb2ludGVyT3V0ID0gYnVmZmVyRGF0YSArIG9m
ZnNldDsKICAgICB9CiAgICAgZWxzZQpAQCAtNzUsMTIgKzcwLDEzIEBAIGJvb2wgSXNSZW5kZXJU
YXJnZXRVc2FnZShHTGVudW0gdXNhZ2UpCiAKIH0KIAotVGV4dHVyZUQzRDo6VGV4dHVyZUQzRChS
ZW5kZXJlckQzRCAqcmVuZGVyZXIpCi0gICAgOiBtUmVuZGVyZXIocmVuZGVyZXIpLAotICAgICAg
bVVzYWdlKEdMX05PTkUpLAorVGV4dHVyZUQzRDo6VGV4dHVyZUQzRChjb25zdCBnbDo6VGV4dHVy
ZVN0YXRlICZzdGF0ZSwgUmVuZGVyZXJEM0QgKnJlbmRlcmVyKQorICAgIDogVGV4dHVyZUltcGwo
c3RhdGUpLAorICAgICAgbVJlbmRlcmVyKHJlbmRlcmVyKSwKICAgICAgIG1EaXJ0eUltYWdlcyh0
cnVlKSwKICAgICAgIG1JbW11dGFibGUoZmFsc2UpLAotICAgICAgbVRleFN0b3JhZ2UoTlVMTCkK
KyAgICAgIG1UZXhTdG9yYWdlKG51bGxwdHIpLAorICAgICAgbUJhc2VMZXZlbCgwKQogewogfQog
CkBAIC05MSwyNSArODcsMzQgQEAgVGV4dHVyZUQzRDo6flRleHR1cmVEM0QoKQogZ2w6OkVycm9y
IFRleHR1cmVEM0Q6OmdldE5hdGl2ZVRleHR1cmUoVGV4dHVyZVN0b3JhZ2UgKipvdXRTdG9yYWdl
KQogewogICAgIC8vIGVuc3VyZSB0aGUgdW5kZXJseWluZyB0ZXh0dXJlIGlzIGNyZWF0ZWQKLSAg
ICBnbDo6RXJyb3IgZXJyb3IgPSBpbml0aWFsaXplU3RvcmFnZShmYWxzZSk7Ci0gICAgaWYgKGVy
cm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAg
QU5HTEVfVFJZKGluaXRpYWxpemVTdG9yYWdlKGZhbHNlKSk7CiAKICAgICBpZiAobVRleFN0b3Jh
Z2UpCiAgICAgewotICAgICAgICBlcnJvciA9IHVwZGF0ZVN0b3JhZ2UoKTsKLSAgICAgICAgaWYg
KGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwot
ICAgICAgICB9CisgICAgICAgIEFOR0xFX1RSWSh1cGRhdGVTdG9yYWdlKCkpOwogICAgIH0KIAog
ICAgIEFTU0VSVChvdXRTdG9yYWdlKTsKIAogICAgICpvdXRTdG9yYWdlID0gbVRleFN0b3JhZ2U7
Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vy
cm9yKCk7Cit9CisKK0dMaW50IFRleHR1cmVEM0Q6OmdldExldmVsWmVyb1dpZHRoKCkgY29uc3QK
K3sKKyAgICBBU1NFUlQoZ2w6OkNvdW50TGVhZGluZ1plcm9zKHN0YXRpY19jYXN0PHVpbnQzMl90
PihnZXRCYXNlTGV2ZWxXaWR0aCgpKSkgPiBnZXRCYXNlTGV2ZWwoKSk7CisgICAgcmV0dXJuIGdl
dEJhc2VMZXZlbFdpZHRoKCkgPDwgbUJhc2VMZXZlbDsKK30KKworR0xpbnQgVGV4dHVyZUQzRDo6
Z2V0TGV2ZWxaZXJvSGVpZ2h0KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZ2w6OkNvdW50TGVhZGlu
Z1plcm9zKHN0YXRpY19jYXN0PHVpbnQzMl90PihnZXRCYXNlTGV2ZWxIZWlnaHQoKSkpID4gZ2V0
QmFzZUxldmVsKCkpOworICAgIHJldHVybiBnZXRCYXNlTGV2ZWxIZWlnaHQoKSA8PCBtQmFzZUxl
dmVsOworfQorCitHTGludCBUZXh0dXJlRDNEOjpnZXRMZXZlbFplcm9EZXB0aCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGdldEJhc2VMZXZlbERlcHRoKCk7CiB9CiAKIEdMaW50IFRleHR1cmVEM0Q6
OmdldEJhc2VMZXZlbFdpZHRoKCkgY29uc3QKQEAgLTE3NywzMyArMTgyLDI0IEBAIGdsOjpFcnJv
ciBUZXh0dXJlRDNEOjpzZXRJbWFnZUltcGwoY29uc3QKICAgICAvLyBXZSBubyBsb25nZXIgbmVl
ZCB0aGUgIkdMZW51bSBmb3JtYXQiIHBhcmFtZXRlciB0byBUZXhJbWFnZSB0byBkZXRlcm1pbmUg
d2hhdCBkYXRhIGZvcm1hdCAicGl4ZWxzIiBjb250YWlucy4KICAgICAvLyBGcm9tIG91ciBpbWFn
ZSBpbnRlcm5hbCBmb3JtYXQgd2Uga25vdyBob3cgbWFueSBjaGFubmVscyB0byBleHBlY3QsIGFu
ZCAidHlwZSIgZ2l2ZXMgdGhlIGZvcm1hdCBvZiBwaXhlbCdzIGNvbXBvbmVudHMuCiAgICAgY29u
c3QgdWludDhfdCAqcGl4ZWxEYXRhID0gTlVMTDsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBHZXRV
bnBhY2tQb2ludGVyKHVucGFjaywgcGl4ZWxzLCBsYXllck9mZnNldCwgJnBpeGVsRGF0YSk7Ci0g
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAg
ICB9CisgICAgQU5HTEVfVFJZKEdldFVucGFja1BvaW50ZXIodW5wYWNrLCBwaXhlbHMsIGxheWVy
T2Zmc2V0LCAmcGl4ZWxEYXRhKSk7CiAKICAgICBpZiAocGl4ZWxEYXRhICE9IG51bGxwdHIpCiAg
ICAgewogICAgICAgICBpZiAoc2hvdWxkVXNlU2V0RGF0YShpbWFnZSkpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGVycm9yID0gbVRleFN0b3JhZ2UtPnNldERhdGEoaW5kZXgsIGltYWdlLCBOVUxM
LCB0eXBlLCB1bnBhY2ssIHBpeGVsRGF0YSk7CisgICAgICAgICAgICBBTkdMRV9UUlkobVRleFN0
b3JhZ2UtPnNldERhdGEoaW5kZXgsIGltYWdlLCBOVUxMLCB0eXBlLCB1bnBhY2ssIHBpeGVsRGF0
YSkpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewogICAgICAgICAgICAgZ2w6
OkJveCBmdWxsSW1hZ2VBcmVhKDAsIDAsIDAsIGltYWdlLT5nZXRXaWR0aCgpLCBpbWFnZS0+Z2V0
SGVpZ2h0KCksIGltYWdlLT5nZXREZXB0aCgpKTsKLSAgICAgICAgICAgIGVycm9yID0gaW1hZ2Ut
PmxvYWREYXRhKGZ1bGxJbWFnZUFyZWEsIHVucGFjaywgdHlwZSwgcGl4ZWxEYXRhKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgIEFOR0xFX1RSWShpbWFnZS0+bG9hZERhdGEo
ZnVsbEltYWdlQXJlYSwgdW5wYWNrLCB0eXBlLCBwaXhlbERhdGEsIGluZGV4LmlzM0QoKSkpOwog
ICAgICAgICB9CiAKICAgICAgICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKICAgICB9CiAKLSAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
IH0KIAogZ2w6OkVycm9yIFRleHR1cmVEM0Q6OnN1YkltYWdlKGNvbnN0IGdsOjpJbWFnZUluZGV4
ICZpbmRleCwgY29uc3QgZ2w6OkJveCAmYXJlYSwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUs
CkBAIC0yMTEsMTEgKzIwNyw3IEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEOjpzdWJJbWFnZShjb25z
dCBnbDoKIHsKICAgICAvLyBDUFUgcmVhZGJhY2sgJiBjb3B5IHdoZXJlIGRpcmVjdCBHUFUgY29w
eSBpcyBub3Qgc3VwcG9ydGVkCiAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxEYXRhID0gTlVMTDsK
LSAgICBnbDo6RXJyb3IgZXJyb3IgPSBHZXRVbnBhY2tQb2ludGVyKHVucGFjaywgcGl4ZWxzLCBs
YXllck9mZnNldCwgJnBpeGVsRGF0YSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKEdldFVucGFja1Bv
aW50ZXIodW5wYWNrLCBwaXhlbHMsIGxheWVyT2Zmc2V0LCAmcGl4ZWxEYXRhKSk7CiAKICAgICBp
ZiAocGl4ZWxEYXRhICE9IE5VTEwpCiAgICAgewpAQCAtMjI3LDE4ICsyMTksOCBAQCBnbDo6RXJy
b3IgVGV4dHVyZUQzRDo6c3ViSW1hZ2UoY29uc3QgZ2w6CiAgICAgICAgICAgICByZXR1cm4gbVRl
eFN0b3JhZ2UtPnNldERhdGEoaW5kZXgsIGltYWdlLCAmYXJlYSwgdHlwZSwgdW5wYWNrLCBwaXhl
bERhdGEpOwogICAgICAgICB9CiAKLSAgICAgICAgZXJyb3IgPSBpbWFnZS0+bG9hZERhdGEoYXJl
YSwgdW5wYWNrLCB0eXBlLCBwaXhlbERhdGEpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigp
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KLQotICAg
ICAgICBlcnJvciA9IGNvbW1pdFJlZ2lvbihpbmRleCwgYXJlYSk7Ci0gICAgICAgIGlmIChlcnJv
ci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAg
ICAgfQotCisgICAgICAgIEFOR0xFX1RSWShpbWFnZS0+bG9hZERhdGEoYXJlYSwgdW5wYWNrLCB0
eXBlLCBwaXhlbERhdGEsIGluZGV4LmlzM0QoKSkpOworICAgICAgICBBTkdMRV9UUlkoY29tbWl0
UmVnaW9uKGluZGV4LCBhcmVhKSk7CiAgICAgICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7CiAgICAg
fQogCkBAIC0yNTAsMjYgKzIzMiwyMyBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRDo6c2V0Q29tcHJl
c3NlZEltYWdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB1aW50OF90ICpwaXhlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdHJkaWZmX3QgbGF5ZXJPZmZzZXQpCiB7CisgICAgSW1hZ2VEM0QgKmltYWdl
ID0gZ2V0SW1hZ2UoaW5kZXgpOworICAgIEFTU0VSVChpbWFnZSk7CisKKyAgICBpZiAoaW1hZ2Ut
PmdldFdpZHRoKCkgPT0gMCB8fCBpbWFnZS0+Z2V0SGVpZ2h0KCkgPT0gMCB8fCBpbWFnZS0+Z2V0
RGVwdGgoKSA9PSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CisgICAg
fQorCiAgICAgLy8gV2Ugbm8gbG9uZ2VyIG5lZWQgdGhlICJHTGVudW0gZm9ybWF0IiBwYXJhbWV0
ZXIgdG8gVGV4SW1hZ2UgdG8gZGV0ZXJtaW5lIHdoYXQgZGF0YSBmb3JtYXQgInBpeGVscyIgY29u
dGFpbnMuCiAgICAgLy8gRnJvbSBvdXIgaW1hZ2UgaW50ZXJuYWwgZm9ybWF0IHdlIGtub3cgaG93
IG1hbnkgY2hhbm5lbHMgdG8gZXhwZWN0LCBhbmQgInR5cGUiIGdpdmVzIHRoZSBmb3JtYXQgb2Yg
cGl4ZWwncyBjb21wb25lbnRzLgogICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVsRGF0YSA9IE5VTEw7
Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gR2V0VW5wYWNrUG9pbnRlcih1bnBhY2ssIHBpeGVscywg
bGF5ZXJPZmZzZXQsICZwaXhlbERhdGEpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAg
ewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShHZXRVbnBhY2tQ
b2ludGVyKHVucGFjaywgcGl4ZWxzLCBsYXllck9mZnNldCwgJnBpeGVsRGF0YSkpOwogCiAgICAg
aWYgKHBpeGVsRGF0YSAhPSBOVUxMKQogICAgIHsKLSAgICAgICAgSW1hZ2VEM0QgKmltYWdlID0g
Z2V0SW1hZ2UoaW5kZXgpOwotICAgICAgICBBU1NFUlQoaW1hZ2UpOwotCiAgICAgICAgIGdsOjpC
b3ggZnVsbEltYWdlQXJlYSgwLCAwLCAwLCBpbWFnZS0+Z2V0V2lkdGgoKSwgaW1hZ2UtPmdldEhl
aWdodCgpLCBpbWFnZS0+Z2V0RGVwdGgoKSk7Ci0gICAgICAgIGVycm9yID0gaW1hZ2UtPmxvYWRD
b21wcmVzc2VkRGF0YShmdWxsSW1hZ2VBcmVhLCBwaXhlbERhdGEpOwotICAgICAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAg
ICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKGltYWdlLT5sb2FkQ29tcHJlc3NlZERhdGEoZnVsbElt
YWdlQXJlYSwgcGl4ZWxEYXRhKSk7CiAKICAgICAgICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKICAg
ICB9CkBAIC0yODIsMjIgKzI2MSwxNCBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRDo6c3ViSW1hZ2VD
b21wcmVzc2VkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRp
ZmZfdCBsYXllck9mZnNldCkKIHsKICAgICBjb25zdCB1aW50OF90ICpwaXhlbERhdGEgPSBOVUxM
OwotICAgIGdsOjpFcnJvciBlcnJvciA9IEdldFVucGFja1BvaW50ZXIodW5wYWNrLCBwaXhlbHMs
IGxheWVyT2Zmc2V0LCAmcGl4ZWxEYXRhKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkoR2V0VW5wYWNr
UG9pbnRlcih1bnBhY2ssIHBpeGVscywgbGF5ZXJPZmZzZXQsICZwaXhlbERhdGEpKTsKIAogICAg
IGlmIChwaXhlbERhdGEgIT0gTlVMTCkKICAgICB7CiAgICAgICAgIEltYWdlRDNEICppbWFnZSA9
IGdldEltYWdlKGluZGV4KTsKICAgICAgICAgQVNTRVJUKGltYWdlKTsKIAotICAgICAgICBlcnJv
ciA9IGltYWdlLT5sb2FkQ29tcHJlc3NlZERhdGEoYXJlYSwgcGl4ZWxEYXRhKTsKLSAgICAgICAg
aWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9y
OwotICAgICAgICB9CisgICAgICAgIEFOR0xFX1RSWShpbWFnZS0+bG9hZENvbXByZXNzZWREYXRh
KGFyZWEsIHBpeGVsRGF0YSkpOwogCiAgICAgICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7CiAgICAg
fQpAQCAtMzM0LDE4ICszMDUsMTcgQEAgZ2w6OkVycm9yIFRleHR1cmVEM0Q6OmZhc3RVbnBhY2tQ
aXhlbHMoYwogCiAgICAgdWludHB0cl90IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90PihwaXhlbHMpOwogCi0gICAgZ2w6OkVycm9yIGVycm9yID0gbVJlbmRlcmVyLT5mYXN0Q29w
eUJ1ZmZlclRvVGV4dHVyZSh1bnBhY2ssIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4ob2Zmc2V0
KSwgZGVzdFJlbmRlclRhcmdldCwgc2l6ZWRJbnRlcm5hbEZvcm1hdCwgdHlwZSwgZGVzdEFyZWEp
OwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7
Ci0gICAgfQorICAgIEFOR0xFX1RSWShtUmVuZGVyZXItPmZhc3RDb3B5QnVmZmVyVG9UZXh0dXJl
KHVucGFjaywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihvZmZzZXQpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RSZW5kZXJUYXJnZXQsIHNp
emVkSW50ZXJuYWxGb3JtYXQsIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVzdEFyZWEpKTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
Tk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBHTGludCBUZXh0dXJl
RDNEOjpjcmVhdGlvbkxldmVscyhHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXpl
aSBkZXB0aCkgY29uc3QKIHsKLSAgICBpZiAoKGdsOjppc1BvdzIod2lkdGgpICYmIGdsOjppc1Bv
dzIoaGVpZ2h0KSAmJiBnbDo6aXNQb3cyKGRlcHRoKSkgfHwgbVJlbmRlcmVyLT5nZXRSZW5kZXJl
ckV4dGVuc2lvbnMoKS50ZXh0dXJlTlBPVCkKKyAgICBpZiAoKGdsOjppc1BvdzIod2lkdGgpICYm
IGdsOjppc1BvdzIoaGVpZ2h0KSAmJiBnbDo6aXNQb3cyKGRlcHRoKSkgfHwKKyAgICAgICAgbVJl
bmRlcmVyLT5nZXROYXRpdmVFeHRlbnNpb25zKCkudGV4dHVyZU5QT1QpCiAgICAgewogICAgICAg
ICAvLyBNYXhpbXVtIG51bWJlciBvZiBsZXZlbHMKICAgICAgICAgcmV0dXJuIGdsOjpsb2cyKHN0
ZDo6bWF4KHN0ZDo6bWF4KHdpZHRoLCBoZWlnaHQpLCBkZXB0aCkpICsgMTsKQEAgLTM1NywxMSAr
MzI3LDYgQEAgR0xpbnQgVGV4dHVyZUQzRDo6Y3JlYXRpb25MZXZlbHMoR0xzaXplaQogICAgIH0K
IH0KIAotaW50IFRleHR1cmVEM0Q6Om1pcExldmVscygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGds
Ojpsb2cyKHN0ZDo6bWF4KHN0ZDo6bWF4KGdldEJhc2VMZXZlbFdpZHRoKCksIGdldEJhc2VMZXZl
bEhlaWdodCgpKSwgZ2V0QmFzZUxldmVsRGVwdGgoKSkpICsgMTsKLX0KLQogVGV4dHVyZVN0b3Jh
Z2UgKlRleHR1cmVEM0Q6OmdldFN0b3JhZ2UoKQogewogICAgIEFTU0VSVChtVGV4U3RvcmFnZSk7
CkBAIC0zNzAsNzIgKzMzNSw2MCBAQCBUZXh0dXJlU3RvcmFnZSAqVGV4dHVyZUQzRDo6Z2V0U3Rv
cmFnZSgpCiAKIEltYWdlRDNEICpUZXh0dXJlRDNEOjpnZXRCYXNlTGV2ZWxJbWFnZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGdldEltYWdlKGdldEltYWdlSW5kZXgoMCwgMCkpOworICAgIGlmICht
QmFzZUxldmVsID49IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFMpCisgICAg
eworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIGdldEltYWdlKGdl
dEltYWdlSW5kZXgobUJhc2VMZXZlbCwgMCkpOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUQzRDo6
Z2VuZXJhdGVNaXBtYXBzKGNvbnN0IGdsOjpUZXh0dXJlU3RhdGUgJnRleHR1cmVTdGF0ZSkKK2ds
OjpFcnJvciBUZXh0dXJlRDNEOjpzZXRJbWFnZUV4dGVybmFsKEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OlN0cmVhbSAqc3RyZWFtLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpTdHJlYW06
OkdMVGV4dHVyZURlc2NyaXB0aW9uICZkZXNjKQogewotICAgIEdMaW50IG1pcENvdW50ID0gbWlw
TGV2ZWxzKCk7CisgICAgLy8gT25seSBleHRlcm5hbCBpbWFnZXMgY2FuIGFjY2VwdCBleHRlcm5h
bCB0ZXh0dXJlcworICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7Cit9CiAKLSAgICBpZiAobWlwQ291bnQgPT0gMSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOyAvLyBuby1vcAotICAgIH0KK2ds
OjpFcnJvciBUZXh0dXJlRDNEOjpnZW5lcmF0ZU1pcG1hcCgpCit7CisgICAgY29uc3QgR0x1aW50
IGJhc2VMZXZlbCA9IG1TdGF0ZS5nZXRFZmZlY3RpdmVCYXNlTGV2ZWwoKTsKKyAgICBjb25zdCBH
THVpbnQgbWF4TGV2ZWwgPSBtU3RhdGUuZ2V0TWlwbWFwTWF4TGV2ZWwoKTsKKyAgICBBU1NFUlQo
bWF4TGV2ZWwgPiBiYXNlTGV2ZWwpOyAgLy8gU2hvdWxkIGJlIGNoZWNrZWQgYmVmb3JlIGNhbGxp
bmcgdGhpcy4KKyAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKGJhc2VMZXZlbCk7CiAKICAg
ICBpZiAobVRleFN0b3JhZ2UgJiYgbVJlbmRlcmVyLT5nZXRXb3JrYXJvdW5kcygpLnplcm9NYXhM
b2RXb3JrYXJvdW5kKQogICAgIHsKICAgICAgICAgLy8gU3dpdGNoIHRvIHVzaW5nIHRoZSBtaXBt
YXBwZWQgdGV4dHVyZS4KICAgICAgICAgVGV4dHVyZVN0b3JhZ2UgKnRleHR1cmVTdG9yYWdlID0g
TlVMTDsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gZ2V0TmF0aXZlVGV4dHVyZSgmdGV4dHVy
ZVN0b3JhZ2UpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KLQotICAgICAgICBlcnJvciA9IHRleHR1
cmVTdG9yYWdlLT51c2VMZXZlbFplcm9Xb3JrYXJvdW5kVGV4dHVyZShmYWxzZSk7Ci0gICAgICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJv
cjsKLSAgICAgICAgfQorICAgICAgICBBTkdMRV9UUlkoZ2V0TmF0aXZlVGV4dHVyZSgmdGV4dHVy
ZVN0b3JhZ2UpKTsKKyAgICAgICAgQU5HTEVfVFJZKHRleHR1cmVTdG9yYWdlLT51c2VMZXZlbFpl
cm9Xb3JrYXJvdW5kVGV4dHVyZShmYWxzZSkpOwogICAgIH0KIAogICAgIC8vIFNldCB1cCBwcm9w
ZXIgbWlwbWFwIGNoYWluIGluIG91ciBJbWFnZSBhcnJheS4KLSAgICBpbml0TWlwbWFwc0ltYWdl
cygpOworICAgIGluaXRNaXBtYXBJbWFnZXMoKTsKIAogICAgIGlmIChtVGV4U3RvcmFnZSAmJiBt
VGV4U3RvcmFnZS0+c3VwcG9ydHNOYXRpdmVNaXBtYXBGdW5jdGlvbigpKQogICAgIHsKLSAgICAg
ICAgZ2w6OkVycm9yIGVycm9yID0gdXBkYXRlU3RvcmFnZSgpOwotICAgICAgICBpZiAoZXJyb3Iu
aXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAg
IH0KKyAgICAgICAgQU5HTEVfVFJZKHVwZGF0ZVN0b3JhZ2UoKSk7CiAKICAgICAgICAgLy8gR2Vu
ZXJhdGUgdGhlIG1pcG1hcCBjaGFpbiB1c2luZyB0aGUgYWQtaG9jIERpcmVjdFggZnVuY3Rpb24u
Ci0gICAgICAgIGVycm9yID0gbVJlbmRlcmVyLT5nZW5lcmF0ZU1pcG1hcHNVc2luZ0QzRChtVGV4
U3RvcmFnZSwgdGV4dHVyZVN0YXRlKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9CisgICAgICAgIEFO
R0xFX1RSWShtUmVuZGVyZXItPmdlbmVyYXRlTWlwbWFwVXNpbmdEM0QobVRleFN0b3JhZ2UsIG1T
dGF0ZSkpOwogICAgIH0KICAgICBlbHNlCiAgICAgewogICAgICAgICAvLyBHZW5lcmF0ZSB0aGUg
bWlwbWFwIGNoYWluLCBvbmUgbGV2ZWwgYXQgYSB0aW1lLgotICAgICAgICBnbDo6RXJyb3IgZXJy
b3IgPSBnZW5lcmF0ZU1pcG1hcHNVc2luZ0ltYWdlcygpOwotICAgICAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0K
KyAgICAgICAgQU5HTEVfVFJZKGdlbmVyYXRlTWlwbWFwVXNpbmdJbWFnZXMobWF4TGV2ZWwpKTsK
ICAgICB9CiAKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotZ2w6OkVy
cm9yIFRleHR1cmVEM0Q6OmdlbmVyYXRlTWlwbWFwc1VzaW5nSW1hZ2VzKCkKK2dsOjpFcnJvciBU
ZXh0dXJlRDNEOjpnZW5lcmF0ZU1pcG1hcFVzaW5nSW1hZ2VzKGNvbnN0IEdMdWludCBtYXhMZXZl
bCkKIHsKLSAgICBHTGludCBtaXBDb3VudCA9IG1pcExldmVscygpOwotCiAgICAgLy8gV2Uga25v
dyB0aGF0IGFsbCBsYXllcnMgaGF2ZSB0aGUgc2FtZSBkaW1lbnNpb24sIGZvciB0aGUgdGV4dHVy
ZSB0byBiZSBjb21wbGV0ZQotICAgIEdMaW50IGxheWVyQ291bnQgPSBzdGF0aWNfY2FzdDxHTGlu
dD4oZ2V0TGF5ZXJDb3VudCgwKSk7CisgICAgR0xpbnQgbGF5ZXJDb3VudCA9IHN0YXRpY19jYXN0
PEdMaW50PihnZXRMYXllckNvdW50KG1CYXNlTGV2ZWwpKTsKIAogICAgIC8vIFdoZW4gbWFraW5n
IG1pcG1hcHMgd2l0aCB0aGUgc2V0RGF0YSB3b3JrYXJvdW5kIGVuYWJsZWQsIHRoZSB0ZXh0dXJl
IHN0b3JhZ2UgaGFzCiAgICAgLy8gdGhlIGltYWdlIGRhdGEgYWxyZWFkeS4gRm9yIG5vbi1yZW5k
ZXItdGFyZ2V0IHN0b3JhZ2UsIHdlIGhhdmUgdG8gcHVsbCBpdCBvdXQgaW50bwpAQCAtNDQ3LDIz
ICs0MDAsMTUgQEAgZ2w6OkVycm9yIFRleHR1cmVEM0Q6OmdlbmVyYXRlTWlwbWFwc1VzaQogICAg
ICAgICAgICAgLy8gQ29weSBmcm9tIHRoZSBzdG9yYWdlIG1pcCAwIHRvIEltYWdlIG1pcCAwCiAg
ICAgICAgICAgICBmb3IgKEdMaW50IGxheWVyID0gMDsgbGF5ZXIgPCBsYXllckNvdW50OyArK2xh
eWVyKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsOjpJbWFnZUluZGV4IHNyY0lu
ZGV4ID0gZ2V0SW1hZ2VJbmRleCgwLCBsYXllcik7CisgICAgICAgICAgICAgICAgZ2w6OkltYWdl
SW5kZXggc3JjSW5kZXggPSBnZXRJbWFnZUluZGV4KG1CYXNlTGV2ZWwsIGxheWVyKTsKIAogICAg
ICAgICAgICAgICAgIEltYWdlRDNEICppbWFnZSA9IGdldEltYWdlKHNyY0luZGV4KTsKLSAgICAg
ICAgICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBpbWFnZS0+Y29weUZyb21UZXhTdG9yYWdlKHNy
Y0luZGV4LCBtVGV4U3RvcmFnZSk7Ci0gICAgICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3Io
KSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsK
LSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgQU5HTEVfVFJZKGltYWdlLT5jb3B5
RnJvbVRleFN0b3JhZ2Uoc3JjSW5kZXgsIG1UZXhTdG9yYWdlKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBnbDo6RXJyb3Ig
ZXJyb3IgPSB1cGRhdGVTdG9yYWdlKCk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigp
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIEFOR0xFX1RSWSh1cGRhdGVTdG9yYWdlKCkpOwogICAgICAgICB9
CiAgICAgfQogCkBAIC00NzYsNyArNDIxLDcgQEAgZ2w6OkVycm9yIFRleHR1cmVEM0Q6OmdlbmVy
YXRlTWlwbWFwc1VzaQogCiAgICAgZm9yIChHTGludCBsYXllciA9IDA7IGxheWVyIDwgbGF5ZXJD
b3VudDsgKytsYXllcikKICAgICB7Ci0gICAgICAgIGZvciAoR0xpbnQgbWlwID0gMTsgbWlwIDwg
bWlwQ291bnQ7ICsrbWlwKQorICAgICAgICBmb3IgKEdMdWludCBtaXAgPSBtQmFzZUxldmVsICsg
MTsgbWlwIDw9IG1heExldmVsOyArK21pcCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJU
KGdldExheWVyQ291bnQobWlwKSA9PSBsYXllckNvdW50KTsKIApAQCAtNDg2LDIwICs0MzEsMTIg
QEAgZ2w6OkVycm9yIFRleHR1cmVEM0Q6OmdlbmVyYXRlTWlwbWFwc1VzaQogICAgICAgICAgICAg
aWYgKHJlbmRlcmFibGVTdG9yYWdlKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIC8v
IEdQVS1zaWRlIG1pcG1hcHBpbmcKLSAgICAgICAgICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBt
VGV4U3RvcmFnZS0+Z2VuZXJhdGVNaXBtYXAoc291cmNlSW5kZXgsIGRlc3RJbmRleCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgQU5HTEVfVFJZKG1UZXhTdG9yYWdlLT5nZW5lcmF0ZU1pcG1hcChzb3VyY2VJbmRl
eCwgZGVzdEluZGV4KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgLy8gQ1BVLXNpZGUgbWlwbWFwcGluZwotICAgICAgICAg
ICAgICAgIGdsOjpFcnJvciBlcnJvciA9IG1SZW5kZXJlci0+Z2VuZXJhdGVNaXBtYXAoZ2V0SW1h
Z2UoZGVzdEluZGV4KSwgZ2V0SW1hZ2Uoc291cmNlSW5kZXgpKTsKLSAgICAgICAgICAgICAgICBp
ZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBBTkdM
RV9UUlkobVJlbmRlcmVyLT5nZW5lcmF0ZU1pcG1hcChnZXRJbWFnZShkZXN0SW5kZXgpLCBnZXRJ
bWFnZShzb3VyY2VJbmRleCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAg
LTUwOSw3ICs0NDYsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRDo6Z2VuZXJhdGVNaXBtYXBzVXNp
CiAgICAgICAgIHVwZGF0ZVN0b3JhZ2UoKTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogYm9vbCBUZXh0
dXJlRDNEOjppc0Jhc2VJbWFnZVplcm9TaXplKCkgY29uc3QKQEAgLTUzMSw3ICs0NjgsNyBAQCBi
b29sIFRleHR1cmVEM0Q6OmlzQmFzZUltYWdlWmVyb1NpemUoKSBjCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAotICAgIGlmIChiYXNlSW1hZ2UtPmdldFRhcmdldCgpID09IEdMX1RFWFRV
UkVfMkRfQVJSQVkgJiYgZ2V0TGF5ZXJDb3VudCgwKSA8PSAwKQorICAgIGlmIChiYXNlSW1hZ2Ut
PmdldFRhcmdldCgpID09IEdMX1RFWFRVUkVfMkRfQVJSQVkgJiYgZ2V0TGF5ZXJDb3VudChnZXRC
YXNlTGV2ZWwoKSkgPD0gMCkKICAgICB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAg
LTU0MSwxMSArNDc4LDcgQEAgYm9vbCBUZXh0dXJlRDNEOjppc0Jhc2VJbWFnZVplcm9TaXplKCkg
YwogCiBnbDo6RXJyb3IgVGV4dHVyZUQzRDo6ZW5zdXJlUmVuZGVyVGFyZ2V0KCkKIHsKLSAgICBn
bDo6RXJyb3IgZXJyb3IgPSBpbml0aWFsaXplU3RvcmFnZSh0cnVlKTsKLSAgICBpZiAoZXJyb3Iu
aXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdM
RV9UUlkoaW5pdGlhbGl6ZVN0b3JhZ2UodHJ1ZSkpOwogCiAgICAgaWYgKCFpc0Jhc2VJbWFnZVpl
cm9TaXplKCkpCiAgICAgewpAQCAtNTUzLDEzICs0ODYsOSBAQCBnbDo6RXJyb3IgVGV4dHVyZUQz
RDo6ZW5zdXJlUmVuZGVyVGFyZ2V0CiAgICAgICAgIGlmICghbVRleFN0b3JhZ2UtPmlzUmVuZGVy
VGFyZ2V0KCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIFRleHR1cmVTdG9yYWdlICpuZXdSZW5k
ZXJUYXJnZXRTdG9yYWdlID0gTlVMTDsKLSAgICAgICAgICAgIGVycm9yID0gY3JlYXRlQ29tcGxl
dGVTdG9yYWdlKHRydWUsICZuZXdSZW5kZXJUYXJnZXRTdG9yYWdlKTsKLSAgICAgICAgICAgIGlm
IChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGVycm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgQU5HTEVfVFJZKGNyZWF0ZUNvbXBs
ZXRlU3RvcmFnZSh0cnVlLCAmbmV3UmVuZGVyVGFyZ2V0U3RvcmFnZSkpOwogCi0gICAgICAgICAg
ICBlcnJvciA9IG1UZXhTdG9yYWdlLT5jb3B5VG9TdG9yYWdlKG5ld1JlbmRlclRhcmdldFN0b3Jh
Z2UpOworICAgICAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gbVRleFN0b3JhZ2UtPmNvcHlUb1N0
b3JhZ2UobmV3UmVuZGVyVGFyZ2V0U3RvcmFnZSk7CiAgICAgICAgICAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIFNhZmVEZWxldGUobmV3UmVu
ZGVyVGFyZ2V0U3RvcmFnZSk7CkBAIC01NzUsNyArNTA0LDcgQEAgZ2w6OkVycm9yIFRleHR1cmVE
M0Q6OmVuc3VyZVJlbmRlclRhcmdldAogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGds
OjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGJv
b2wgVGV4dHVyZUQzRDo6Y2FuQ3JlYXRlUmVuZGVyVGFyZ2V0Rm9ySW1hZ2UoY29uc3QgZ2w6Oklt
YWdlSW5kZXggJmluZGV4KSBjb25zdApAQCAtNTkxLDE2ICs1MjAsMTEgQEAgZ2w6OkVycm9yIFRl
eHR1cmVEM0Q6OmNvbW1pdFJlZ2lvbihjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGlzVmFs
aWRJbmRleChpbmRleCkpOwogICAgICAgICBJbWFnZUQzRCAqaW1hZ2UgPSBnZXRJbWFnZShpbmRl
eCk7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGltYWdlLT5jb3B5VG9TdG9yYWdlKG1UZXhT
dG9yYWdlLCBpbmRleCwgcmVnaW9uKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9Ci0KKyAgICAgICAg
QU5HTEVfVFJZKGltYWdlLT5jb3B5VG9TdG9yYWdlKG1UZXhTdG9yYWdlLCBpbmRleCwgcmVnaW9u
KSk7CiAgICAgICAgIGltYWdlLT5tYXJrQ2xlYW4oKTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6
OkVycm9yIFRleHR1cmVEM0Q6OmdldEF0dGFjaG1lbnRSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkZy
YW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQsCkBAIC02MTIsOCArNTM2LDM2IEBA
IGdsOjpFcnJvciBUZXh0dXJlRDNEOjpnZXRBdHRhY2htZW50UmVuZGUKICAgICByZXR1cm4gZXJy
b3I7CiB9CiAKLVRleHR1cmVEM0RfMkQ6OlRleHR1cmVEM0RfMkQoUmVuZGVyZXJEM0QgKnJlbmRl
cmVyKQotICAgIDogVGV4dHVyZUQzRChyZW5kZXJlcikKK3ZvaWQgVGV4dHVyZUQzRDo6c2V0QmFz
ZUxldmVsKEdMdWludCBiYXNlTGV2ZWwpCit7CisgICAgY29uc3QgaW50IG9sZFN0b3JhZ2VXaWR0
aCAgPSBzdGQ6Om1heCgxLCBnZXRMZXZlbFplcm9XaWR0aCgpKTsKKyAgICBjb25zdCBpbnQgb2xk
U3RvcmFnZUhlaWdodCA9IHN0ZDo6bWF4KDEsIGdldExldmVsWmVyb0hlaWdodCgpKTsKKyAgICBj
b25zdCBpbnQgb2xkU3RvcmFnZURlcHRoICA9IHN0ZDo6bWF4KDEsIGdldExldmVsWmVyb0RlcHRo
KCkpOworICAgIGNvbnN0IGludCBvbGRTdG9yYWdlRm9ybWF0ID0gZ2V0QmFzZUxldmVsSW50ZXJu
YWxGb3JtYXQoKTsKKyAgICBtQmFzZUxldmVsICAgICAgICAgICAgICAgICA9IGJhc2VMZXZlbDsK
KworICAgIC8vIFdoZW4gdGhlIGJhc2UgbGV2ZWwgY2hhbmdlcywgdGhlIHRleHR1cmUgc3RvcmFn
ZSBtaWdodCBub3QgYmUgdmFsaWQgYW55bW9yZSwgc2luY2UgaXQgY291bGQKKyAgICAvLyBoYXZl
IGJlZW4gY3JlYXRlZCBiYXNlZCBvbiB0aGUgZGltZW5zaW9ucyBvZiB0aGUgcHJldmlvdXMgc3Bl
Y2lmaWVkIGxldmVsIHJhbmdlLgorICAgIGNvbnN0IGludCBuZXdTdG9yYWdlV2lkdGggID0gc3Rk
OjptYXgoMSwgZ2V0TGV2ZWxaZXJvV2lkdGgoKSk7CisgICAgY29uc3QgaW50IG5ld1N0b3JhZ2VI
ZWlnaHQgPSBzdGQ6Om1heCgxLCBnZXRMZXZlbFplcm9IZWlnaHQoKSk7CisgICAgY29uc3QgaW50
IG5ld1N0b3JhZ2VEZXB0aCA9IHN0ZDo6bWF4KDEsIGdldExldmVsWmVyb0RlcHRoKCkpOworICAg
IGNvbnN0IGludCBuZXdTdG9yYWdlRm9ybWF0ID0gZ2V0QmFzZUxldmVsSW50ZXJuYWxGb3JtYXQo
KTsKKyAgICBpZiAobVRleFN0b3JhZ2UgJiYKKyAgICAgICAgKG5ld1N0b3JhZ2VXaWR0aCAhPSBv
bGRTdG9yYWdlV2lkdGggfHwgbmV3U3RvcmFnZUhlaWdodCAhPSBvbGRTdG9yYWdlSGVpZ2h0IHx8
CisgICAgICAgICBuZXdTdG9yYWdlRGVwdGggIT0gb2xkU3RvcmFnZURlcHRoIHx8IG5ld1N0b3Jh
Z2VGb3JtYXQgIT0gb2xkU3RvcmFnZUZvcm1hdCkpCisgICAgeworICAgICAgICBtYXJrQWxsSW1h
Z2VzRGlydHkoKTsKKyAgICAgICAgU2FmZURlbGV0ZShtVGV4U3RvcmFnZSk7CisgICAgfQorfQor
Cit2b2lkIFRleHR1cmVEM0Q6OnN5bmNTdGF0ZShjb25zdCBnbDo6VGV4dHVyZTo6RGlydHlCaXRz
ICZkaXJ0eUJpdHMpCit7CisgICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBVc2UgZGlydHkgYml0cwor
fQorCitUZXh0dXJlRDNEXzJEOjpUZXh0dXJlRDNEXzJEKGNvbnN0IGdsOjpUZXh0dXJlU3RhdGUg
JnN0YXRlLCBSZW5kZXJlckQzRCAqcmVuZGVyZXIpCisgICAgOiBUZXh0dXJlRDNEKHN0YXRlLCBy
ZW5kZXJlcikKIHsKICAgICBtRUdMSW1hZ2VUYXJnZXQgPSBmYWxzZTsKICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFM7ICsraSkKQEAg
LTcxMCwxOSArNjYyLDEyIEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEXzJEOjpzZXRJbWFnZShHTGVu
dW0KICAgICB7CiAgICAgICAgIC8vIFdpbGwgdHJ5IHRvIGNyZWF0ZSBSVCBzdG9yYWdlIGlmIGl0
IGRvZXMgbm90IGV4aXN0CiAgICAgICAgIFJlbmRlclRhcmdldEQzRCAqZGVzdFJlbmRlclRhcmdl
dCA9IE5VTEw7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGdldFJlbmRlclRhcmdldChpbmRl
eCwgJmRlc3RSZW5kZXJUYXJnZXQpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5H
TEVfVFJZKGdldFJlbmRlclRhcmdldChpbmRleCwgJmRlc3RSZW5kZXJUYXJnZXQpKTsKIAogICAg
ICAgICBnbDo6Qm94IGRlc3RBcmVhKDAsIDAsIDAsIGdldFdpZHRoKGxldmVsKSwgZ2V0SGVpZ2h0
KGxldmVsKSwgMSk7CiAKLSAgICAgICAgZXJyb3IgPSBmYXN0VW5wYWNrUGl4ZWxzKHVucGFjaywg
cGl4ZWxzLCBkZXN0QXJlYSwgc2l6ZWRJbnRlcm5hbEZvcm1hdCwgdHlwZSwgZGVzdFJlbmRlclRh
cmdldCk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBBTkdMRV9UUlkoZmFzdFVucGFj
a1BpeGVscyh1bnBhY2ssIHBpeGVscywgZGVzdEFyZWEsIHNpemVkSW50ZXJuYWxGb3JtYXQsIHR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RSZW5kZXJUYXJnZXQp
KTsKIAogICAgICAgICAvLyBFbnN1cmUgd2UgZG9uJ3Qgb3ZlcndyaXRlIG91ciBuZXdseSBpbml0
aWFsaXplZCBkYXRhCiAgICAgICAgIG1JbWFnZUFycmF5W2xldmVsXS0+bWFya0NsZWFuKCk7CkBA
IC03MzIsMTQgKzY3NywxMCBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF8yRDo6c2V0SW1hZ2UoR0xl
bnVtCiAKICAgICBpZiAoIWZhc3RVbnBhY2tlZCkKICAgICB7Ci0gICAgICAgIGdsOjpFcnJvciBl
cnJvciA9IHNldEltYWdlSW1wbChpbmRleCwgdHlwZSwgdW5wYWNrLCBwaXhlbHMsIDApOwotICAg
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
ZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKHNldEltYWdlSW1wbChpbmRleCwg
dHlwZSwgdW5wYWNrLCBwaXhlbHMsIDApKTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9y
IFRleHR1cmVEM0RfMkQ6OnNldFN1YkltYWdlKEdMZW51bSB0YXJnZXQsCkBAIC03NTcsMTIgKzY5
OCw3IEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEXzJEOjpzZXRTdWJJbWFnZShHTGUKICAgICBpZiAo
aXNGYXN0VW5wYWNrYWJsZSh1bnBhY2ssIGdldEludGVybmFsRm9ybWF0KGxldmVsKSkgJiYgaXNM
ZXZlbENvbXBsZXRlKGxldmVsKSkKICAgICB7CiAgICAgICAgIFJlbmRlclRhcmdldEQzRCAqcmVu
ZGVyVGFyZ2V0ID0gTlVMTDsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gZ2V0UmVuZGVyVGFy
Z2V0KGluZGV4LCAmcmVuZGVyVGFyZ2V0KTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9Ci0KKyAgICAg
ICAgQU5HTEVfVFJZKGdldFJlbmRlclRhcmdldChpbmRleCwgJnJlbmRlclRhcmdldCkpOwogICAg
ICAgICBBU1NFUlQoIW1JbWFnZUFycmF5W2xldmVsXS0+aXNEaXJ0eSgpKTsKIAogICAgICAgICBy
ZXR1cm4gZmFzdFVucGFja1BpeGVscyh1bnBhY2ssIHBpeGVscywgYXJlYSwgZ2V0SW50ZXJuYWxG
b3JtYXQobGV2ZWwpLCB0eXBlLCByZW5kZXJUYXJnZXQpOwpAQCAtNzk2LDExICs3MzIsNyBAQCBn
bDo6RXJyb3IgVGV4dHVyZUQzRF8yRDo6c2V0Q29tcHJlc3NlZFN1CiAgICAgQVNTRVJUKHRhcmdl
dCA9PSBHTF9URVhUVVJFXzJEICYmIGFyZWEuZGVwdGggPT0gMSAmJiBhcmVhLnogPT0gMCk7CiAK
ICAgICBnbDo6SW1hZ2VJbmRleCBpbmRleCA9IGdsOjpJbWFnZUluZGV4OjpNYWtlMkQoc3RhdGlj
X2Nhc3Q8R0xpbnQ+KGxldmVsKSk7Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gVGV4dHVyZUQzRDo6
c3ViSW1hZ2VDb21wcmVzc2VkKGluZGV4LCBhcmVhLCBmb3JtYXQsIHVucGFjaywgcGl4ZWxzLCAw
KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9y
OwotICAgIH0KKyAgICBBTkdMRV9UUlkoVGV4dHVyZUQzRDo6c3ViSW1hZ2VDb21wcmVzc2VkKGlu
ZGV4LCBhcmVhLCBmb3JtYXQsIHVucGFjaywgcGl4ZWxzLCAwKSk7CiAKICAgICByZXR1cm4gY29t
bWl0UmVnaW9uKGluZGV4LCBhcmVhKTsKIH0KQEAgLTgyNSwzMSArNzU3LDE4IEBAIGdsOjpFcnJv
ciBUZXh0dXJlRDNEXzJEOjpjb3B5SW1hZ2UoR0xlbnUKICAgICAvLyBzbyB3ZSBzaG91bGQgdXNl
IHRoZSBub24tcmVuZGVyaW5nIGNvcHkgcGF0aC4KICAgICBpZiAoIWNhbkNyZWF0ZVJlbmRlclRh
cmdldEZvckltYWdlKGluZGV4KSB8fCBtUmVuZGVyZXItPmdldFdvcmthcm91bmRzKCkuemVyb01h
eExvZFdvcmthcm91bmQpCiAgICAgewotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBtSW1hZ2VB
cnJheVtsZXZlbF0tPmNvcHlGcm9tRnJhbWVidWZmZXIoZGVzdE9mZnNldCwgc291cmNlQXJlYSwg
c291cmNlKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9Ci0KKyAgICAgICAgQU5HTEVfVFJZKG1JbWFn
ZUFycmF5W2xldmVsXS0+Y29weUZyb21GcmFtZWJ1ZmZlcihkZXN0T2Zmc2V0LCBzb3VyY2VBcmVh
LCBzb3VyY2UpKTsKICAgICAgICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKICAgICB9CiAgICAgZWxz
ZQogICAgIHsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gZW5zdXJlUmVuZGVyVGFyZ2V0KCk7
Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBlcnJvcjsKLSAgICAgICAgfQotCisgICAgICAgIEFOR0xFX1RSWShlbnN1cmVSZW5kZXJU
YXJnZXQoKSk7CiAgICAgICAgIG1JbWFnZUFycmF5W2xldmVsXS0+bWFya0NsZWFuKCk7CiAKICAg
ICAgICAgaWYgKHNvdXJjZUFyZWEud2lkdGggIT0gMCAmJiBzb3VyY2VBcmVhLmhlaWdodCAhPSAw
ICYmIGlzVmFsaWRMZXZlbChsZXZlbCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGVycm9yID0g
bVJlbmRlcmVyLT5jb3B5SW1hZ2UyRChzb3VyY2UsIHNvdXJjZUFyZWEsIGludGVybmFsRm9ybWF0
LCBkZXN0T2Zmc2V0LCBtVGV4U3RvcmFnZSwgbGV2ZWwpOwotICAgICAgICAgICAgaWYgKGVycm9y
LmlzRXJyb3IoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7
Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBBTkdMRV9UUlkobVJlbmRlcmVyLT5jb3B5SW1h
Z2UyRChzb3VyY2UsIHNvdXJjZUFyZWEsIGludGVybmFsRm9ybWF0LCBkZXN0T2Zmc2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVRleFN0b3JhZ2UsIGxl
dmVsKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTg3NCw0MyArNzkzLDEwMiBAQCBnbDo6RXJy
b3IgVGV4dHVyZUQzRF8yRDo6Y29weVN1YkltYWdlKEdMCiAgICAgLy8gc28gd2Ugc2hvdWxkIHVz
ZSB0aGUgbm9uLXJlbmRlcmluZyBjb3B5IHBhdGguCiAgICAgaWYgKCFjYW5DcmVhdGVSZW5kZXJU
YXJnZXRGb3JJbWFnZShpbmRleCkgfHwgbVJlbmRlcmVyLT5nZXRXb3JrYXJvdW5kcygpLnplcm9N
YXhMb2RXb3JrYXJvdW5kKQogICAgIHsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gbUltYWdl
QXJyYXlbbGV2ZWxdLT5jb3B5RnJvbUZyYW1lYnVmZmVyKGRlc3RPZmZzZXQsIHNvdXJjZUFyZWEs
IHNvdXJjZSk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQotCisgICAgICAgIEFOR0xFX1RSWShtSW1h
Z2VBcnJheVtsZXZlbF0tPmNvcHlGcm9tRnJhbWVidWZmZXIoZGVzdE9mZnNldCwgc291cmNlQXJl
YSwgc291cmNlKSk7CiAgICAgICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7CiAgICAgfQogICAgIGVs
c2UKICAgICB7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGVuc3VyZVJlbmRlclRhcmdldCgp
OwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKGVuc3VyZVJlbmRlclRh
cmdldCgpKTsKIAogICAgICAgICBpZiAoaXNWYWxpZExldmVsKGxldmVsKSkKICAgICAgICAgewot
ICAgICAgICAgICAgZXJyb3IgPSB1cGRhdGVTdG9yYWdlTGV2ZWwobGV2ZWwpOwotICAgICAgICAg
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGVycm9yID0gbVJlbmRl
cmVyLT5jb3B5SW1hZ2UyRChzb3VyY2UsIHNvdXJjZUFyZWEsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhnZXRCYXNl
TGV2ZWxJbnRlcm5hbEZvcm1hdCgpKS5mb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVzdE9mZnNldCwgbVRleFN0b3JhZ2UsIGxldmVsKTsKLSAgICAg
ICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgQU5HTEVfVFJZKHVw
ZGF0ZVN0b3JhZ2VMZXZlbChsZXZlbCkpOworICAgICAgICAgICAgQU5HTEVfVFJZKG1SZW5kZXJl
ci0+Y29weUltYWdlMkQoCisgICAgICAgICAgICAgICAgc291cmNlLCBzb3VyY2VBcmVhLCBnbDo6
R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGdldEJhc2VMZXZlbEludGVybmFsRm9ybWF0KCkpLmZvcm1h
dCwKKyAgICAgICAgICAgICAgICBkZXN0T2Zmc2V0LCBtVGV4U3RvcmFnZSwgbGV2ZWwpKTsKICAg
ICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQog
CitnbDo6RXJyb3IgVGV4dHVyZUQzRF8yRDo6Y29weVRleHR1cmUoR0xlbnVtIGludGVybmFsRm9y
bWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrRmxpcFksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tQcmVtdWx0aXBs
eUFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNr
VW5tdWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpUZXh0dXJlICpzb3VyY2UpCit7CisgICAgR0xlbnVtIHNvdXJjZVRhcmdldCA9IHNv
dXJjZS0+Z2V0VGFyZ2V0KCk7CisgICAgR0xpbnQgc291cmNlTGV2ZWwgICA9IDA7CisKKyAgICBH
TGludCBkZXN0TGV2ZWwgPSAwOworCisgICAgR0xlbnVtIHNpemVkSW50ZXJuYWxGb3JtYXQgPSBn
bDo6R2V0U2l6ZWRJbnRlcm5hbEZvcm1hdChpbnRlcm5hbEZvcm1hdCwgdHlwZSk7CisgICAgZ2w6
OkV4dGVudHMgc2l6ZShzdGF0aWNfY2FzdDxpbnQ+KHNvdXJjZS0+Z2V0V2lkdGgoc291cmNlVGFy
Z2V0LCBzb3VyY2VMZXZlbCkpLAorICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50
Pihzb3VyY2UtPmdldEhlaWdodChzb3VyY2VUYXJnZXQsIHNvdXJjZUxldmVsKSksIDEpOworICAg
IHJlZGVmaW5lSW1hZ2UoZGVzdExldmVsLCBzaXplZEludGVybmFsRm9ybWF0LCBzaXplLCBmYWxz
ZSk7CisKKyAgICBBU1NFUlQoY2FuQ3JlYXRlUmVuZGVyVGFyZ2V0Rm9ySW1hZ2UoZ2w6OkltYWdl
SW5kZXg6Ok1ha2UyRChkZXN0TGV2ZWwpKSk7CisKKyAgICBBTkdMRV9UUlkoZW5zdXJlUmVuZGVy
VGFyZ2V0KCkpOworICAgIEFTU0VSVChpc1ZhbGlkTGV2ZWwoZGVzdExldmVsKSk7CisgICAgQU5H
TEVfVFJZKHVwZGF0ZVN0b3JhZ2VMZXZlbChkZXN0TGV2ZWwpKTsKKworICAgIGdsOjpSZWN0YW5n
bGUgc291cmNlUmVjdCgwLCAwLCBzaXplLndpZHRoLCBzaXplLmhlaWdodCk7CisgICAgZ2w6Ok9m
ZnNldCBkZXN0T2Zmc2V0KDAsIDAsIDApOworICAgIEFOR0xFX1RSWShtUmVuZGVyZXItPmNvcHlU
ZXh0dXJlKHNvdXJjZSwgc291cmNlTGV2ZWwsIHNvdXJjZVJlY3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhzaXplZEludGVy
bmFsRm9ybWF0KS5mb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVzdE9mZnNldCwgbVRleFN0b3JhZ2UsIGRlc3RMZXZlbCwgdW5wYWNrRmxpcFksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwgdW5w
YWNrVW5tdWx0aXBseUFscGhhKSk7CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKK30KKwor
Z2w6OkVycm9yIFRleHR1cmVEM0RfMkQ6OmNvcHlTdWJUZXh0dXJlKGNvbnN0IGdsOjpPZmZzZXQg
JmRlc3RPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIHVucGFja0ZsaXBZLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1VubXVsdGlwbHlBbHBoYSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VGV4dHVy
ZSAqc291cmNlKQoreworICAgIEdMaW50IHNvdXJjZUxldmVsID0gMDsKKyAgICBHTGludCBkZXN0
TGV2ZWwgICA9IDA7CisKKyAgICBBU1NFUlQoY2FuQ3JlYXRlUmVuZGVyVGFyZ2V0Rm9ySW1hZ2Uo
Z2w6OkltYWdlSW5kZXg6Ok1ha2UyRChkZXN0TGV2ZWwpKSk7CisKKyAgICBBTkdMRV9UUlkoZW5z
dXJlUmVuZGVyVGFyZ2V0KCkpOworICAgIEFTU0VSVChpc1ZhbGlkTGV2ZWwoZGVzdExldmVsKSk7
CisgICAgQU5HTEVfVFJZKHVwZGF0ZVN0b3JhZ2VMZXZlbChkZXN0TGV2ZWwpKTsKKworICAgIEFO
R0xFX1RSWShtUmVuZGVyZXItPmNvcHlUZXh0dXJlKHNvdXJjZSwgc291cmNlTGV2ZWwsIHNvdXJj
ZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkdldEludGVy
bmFsRm9ybWF0SW5mbyhnZXRCYXNlTGV2ZWxJbnRlcm5hbEZvcm1hdCgpKS5mb3JtYXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdE9mZnNldCwgbVRleFN0b3JhZ2Us
IGRlc3RMZXZlbCwgdW5wYWNrRmxpcFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwgdW5wYWNrVW5tdWx0aXBseUFscGhhKSk7CisK
KyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKK30KKworZ2w6OkVycm9yIFRleHR1cmVEM0RfMkQ6
OmNvcHlDb21wcmVzc2VkVGV4dHVyZShjb25zdCBnbDo6VGV4dHVyZSAqc291cmNlKQoreworICAg
IEdMZW51bSBzb3VyY2VUYXJnZXQgPSBzb3VyY2UtPmdldFRhcmdldCgpOworICAgIEdMaW50IHNv
dXJjZUxldmVsICAgPSAwOworCisgICAgR0xpbnQgZGVzdExldmVsID0gMDsKKworICAgIEdMZW51
bSBzaXplZEludGVybmFsRm9ybWF0ID0gc291cmNlLT5nZXRGb3JtYXQoc291cmNlVGFyZ2V0LCBz
b3VyY2VMZXZlbCkuYXNTaXplZCgpOworICAgIGdsOjpFeHRlbnRzIHNpemUoc3RhdGljX2Nhc3Q8
aW50Pihzb3VyY2UtPmdldFdpZHRoKHNvdXJjZVRhcmdldCwgc291cmNlTGV2ZWwpKSwKKyAgICAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oc291cmNlLT5nZXRIZWlnaHQoc291cmNl
VGFyZ2V0LCBzb3VyY2VMZXZlbCkpLCAxKTsKKyAgICByZWRlZmluZUltYWdlKGRlc3RMZXZlbCwg
c2l6ZWRJbnRlcm5hbEZvcm1hdCwgc2l6ZSwgZmFsc2UpOworCisgICAgQU5HTEVfVFJZKGluaXRp
YWxpemVTdG9yYWdlKGZhbHNlKSk7CisgICAgQVNTRVJUKG1UZXhTdG9yYWdlKTsKKworICAgIEFO
R0xFX1RSWShtUmVuZGVyZXItPmNvcHlDb21wcmVzc2VkVGV4dHVyZShzb3VyY2UsIHNvdXJjZUxl
dmVsLCBtVGV4U3RvcmFnZSwgZGVzdExldmVsKSk7CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3Io
KTsKK30KKwogZ2w6OkVycm9yIFRleHR1cmVEM0RfMkQ6OnNldFN0b3JhZ2UoR0xlbnVtIHRhcmdl
dCwgc2l6ZV90IGxldmVscywgR0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50
cyAmc2l6ZSkKIHsKICAgICBBU1NFUlQoR0xfVEVYVFVSRV8yRCAmJiBzaXplLmRlcHRoID09IDEp
OwpAQCAtOTI5LDcgKzkwNyw3IEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEXzJEOjpzZXRTdG9yYWdl
KEdMZW4KICAgICB9CiAKICAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IFZlcmlmeSBzdG9yYWdlIGNy
ZWF0aW9uIGhhZCBubyBlcnJvcnMKLSAgICBib29sIHJlbmRlclRhcmdldCA9IElzUmVuZGVyVGFy
Z2V0VXNhZ2UobVVzYWdlKTsKKyAgICBib29sIHJlbmRlclRhcmdldCAgICAgICA9IElzUmVuZGVy
VGFyZ2V0VXNhZ2UobVN0YXRlLmdldFVzYWdlKCkpOwogICAgIFRleHR1cmVTdG9yYWdlICpzdG9y
YWdlID0gbVJlbmRlcmVyLT5jcmVhdGVUZXh0dXJlU3RvcmFnZTJEKAogICAgICAgICBpbnRlcm5h
bEZvcm1hdCwgcmVuZGVyVGFyZ2V0LCBzaXplLndpZHRoLCBzaXplLmhlaWdodCwgc3RhdGljX2Nh
c3Q8aW50PihsZXZlbHMpLCBmYWxzZSk7CiAKQEAgLTk0MCwxNiArOTE4LDExIEBAIGdsOjpFcnJv
ciBUZXh0dXJlRDNEXzJEOjpzZXRTdG9yYWdlKEdMZW4KICAgICAgICAgcmV0dXJuIGVycm9yOwog
ICAgIH0KIAotICAgIGVycm9yID0gdXBkYXRlU3RvcmFnZSgpOwotCi0gICAgaWYgKGVycm9yLmlz
RXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVf
VFJZKHVwZGF0ZVN0b3JhZ2UoKSk7CiAKICAgICBtSW1tdXRhYmxlID0gdHJ1ZTsKIAotICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwog
fQogCiB2b2lkIFRleHR1cmVEM0RfMkQ6OmJpbmRUZXhJbWFnZShlZ2w6OlN1cmZhY2UgKnN1cmZh
Y2UpCkBAIC05OTEsOSArOTY0LDkgQEAgZ2w6OkVycm9yIFRleHR1cmVEM0RfMkQ6OnNldEVHTElt
YWdlVGFyZwogICAgIEVHTEltYWdlRDNEICplZ2xJbWFnZWQzZCA9IEdldEltcGxBczxFR0xJbWFn
ZUQzRD4oaW1hZ2UpOwogCiAgICAgLy8gU2V0IHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBiYXNlIG1p
cCBsZXZlbCBmcm9tIHRoZSBFR0wgaW1hZ2UKLSAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSBp
bWFnZS0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsKKyAgICBjb25zdCBhdXRvICZmb3JtYXQgPSBpbWFn
ZS0+Z2V0Rm9ybWF0KCk7CiAgICAgZ2w6OkV4dGVudHMgc2l6ZShzdGF0aWNfY2FzdDxpbnQ+KGlt
YWdlLT5nZXRXaWR0aCgpKSwgc3RhdGljX2Nhc3Q8aW50PihpbWFnZS0+Z2V0SGVpZ2h0KCkpLCAx
KTsKLSAgICByZWRlZmluZUltYWdlKDAsIGludGVybmFsZm9ybWF0LCBzaXplLCB0cnVlKTsKKyAg
ICByZWRlZmluZUltYWdlKDAsIGZvcm1hdC5hc1NpemVkKCksIHNpemUsIHRydWUpOwogCiAgICAg
Ly8gQ2xlYXIgYWxsIG90aGVyIGltYWdlcy4KICAgICBmb3IgKHNpemVfdCBsZXZlbCA9IDE7IGxl
dmVsIDwgQXJyYXlTaXplKG1JbWFnZUFycmF5KTsgbGV2ZWwrKykKQEAgLTEwMDQsMjEgKzk3Nywy
NiBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF8yRDo6c2V0RUdMSW1hZ2VUYXJnCiAgICAgU2FmZURl
bGV0ZShtVGV4U3RvcmFnZSk7CiAgICAgbUltYWdlQXJyYXlbMF0tPm1hcmtDbGVhbigpOwogCi0g
ICAgbVRleFN0b3JhZ2UgICAgID0gbVJlbmRlcmVyLT5jcmVhdGVUZXh0dXJlU3RvcmFnZUVHTElt
YWdlKGVnbEltYWdlZDNkKTsKKyAgICAvLyBQYXNzIGluIHRoZSBSZW5kZXJUYXJnZXREM0QgaGVy
ZTogY3JlYXRlVGV4dHVyZVN0b3JhZ2UgY2FuJ3QgZ2VuZXJhdGUgYW4gZXJyb3IuCisgICAgUmVu
ZGVyVGFyZ2V0RDNEICpyZW5kZXJUYXJnZXREM0QgPSBudWxscHRyOworICAgIEFOR0xFX1RSWShl
Z2xJbWFnZWQzZC0+Z2V0UmVuZGVyVGFyZ2V0KCZyZW5kZXJUYXJnZXREM0QpKTsKKworICAgIG1U
ZXhTdG9yYWdlICAgICA9IG1SZW5kZXJlci0+Y3JlYXRlVGV4dHVyZVN0b3JhZ2VFR0xJbWFnZShl
Z2xJbWFnZWQzZCwgcmVuZGVyVGFyZ2V0RDNEKTsKICAgICBtRUdMSW1hZ2VUYXJnZXQgPSB0cnVl
OwogCiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKLXZvaWQgVGV4dHVy
ZUQzRF8yRDo6aW5pdE1pcG1hcHNJbWFnZXMoKQordm9pZCBUZXh0dXJlRDNEXzJEOjppbml0TWlw
bWFwSW1hZ2VzKCkKIHsKLSAgICAvLyBQdXJnZSBhcnJheSBsZXZlbHMgMSB0aHJvdWdoIHEgYW5k
IHJlc2V0IHRoZW0gdG8gcmVwcmVzZW50IHRoZSBnZW5lcmF0ZWQgbWlwbWFwIGxldmVscy4KLSAg
ICBpbnQgbGV2ZWxDb3VudCA9IG1pcExldmVscygpOwotICAgIGZvciAoaW50IGxldmVsID0gMTsg
bGV2ZWwgPCBsZXZlbENvdW50OyBsZXZlbCsrKQorICAgIGNvbnN0IEdMdWludCBiYXNlTGV2ZWwg
PSBtU3RhdGUuZ2V0RWZmZWN0aXZlQmFzZUxldmVsKCk7CisgICAgY29uc3QgR0x1aW50IG1heExl
dmVsICA9IG1TdGF0ZS5nZXRNaXBtYXBNYXhMZXZlbCgpOworICAgIC8vIFB1cmdlIGFycmF5IGxl
dmVscyBiYXNlTGV2ZWwgKyAxIHRocm91Z2ggcSBhbmQgcmVzZXQgdGhlbSB0byByZXByZXNlbnQg
dGhlIGdlbmVyYXRlZCBtaXBtYXAKKyAgICAvLyBsZXZlbHMuCisgICAgZm9yIChHTHVpbnQgbGV2
ZWwgPSBiYXNlTGV2ZWwgKyAxOyBsZXZlbCA8PSBtYXhMZXZlbDsgbGV2ZWwrKykKICAgICB7Ci0g
ICAgICAgIGdsOjpFeHRlbnRzIGxldmVsU2l6ZShzdGQ6Om1heChnZXRCYXNlTGV2ZWxXaWR0aCgp
ID4+IGxldmVsLCAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4KGdl
dEJhc2VMZXZlbEhlaWdodCgpID4+IGxldmVsLCAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDEpOworICAgICAgICBnbDo6RXh0ZW50cyBsZXZlbFNpemUoc3RkOjptYXgoZ2V0TGV2
ZWxaZXJvV2lkdGgoKSA+PiBsZXZlbCwgMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6Om1heChnZXRMZXZlbFplcm9IZWlnaHQoKSA+PiBsZXZlbCwgMSksIDEpOwogCiAgICAg
ICAgIHJlZGVmaW5lSW1hZ2UobGV2ZWwsIGdldEJhc2VMZXZlbEludGVybmFsRm9ybWF0KCksIGxl
dmVsU2l6ZSwgZmFsc2UpOwogICAgIH0KQEAgLTEwMjksMTcgKzEwMDcsOCBAQCBnbDo6RXJyb3Ig
VGV4dHVyZUQzRF8yRDo6Z2V0UmVuZGVyVGFyZ2V0CiAgICAgQVNTRVJUKCFpbmRleC5oYXNMYXll
cigpKTsKIAogICAgIC8vIGVuc3VyZSB0aGUgdW5kZXJseWluZyB0ZXh0dXJlIGlzIGNyZWF0ZWQK
LSAgICBnbDo6RXJyb3IgZXJyb3IgPSBlbnN1cmVSZW5kZXJUYXJnZXQoKTsKLSAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KLQotICAg
IGVycm9yID0gdXBkYXRlU3RvcmFnZUxldmVsKGluZGV4Lm1pcEluZGV4KTsKLSAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBB
TkdMRV9UUlkoZW5zdXJlUmVuZGVyVGFyZ2V0KCkpOworICAgIEFOR0xFX1RSWSh1cGRhdGVTdG9y
YWdlTGV2ZWwoaW5kZXgubWlwSW5kZXgpKTsKIAogICAgIHJldHVybiBtVGV4U3RvcmFnZS0+Z2V0
UmVuZGVyVGFyZ2V0KGluZGV4LCBvdXRSVCk7CiB9CkBAIC0xMDU2LDEwICsxMDI1LDggQEAgYm9v
bCBUZXh0dXJlRDNEXzJEOjppc0xldmVsQ29tcGxldGUoaW50IAogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKLSAgICBjb25zdCBJbWFnZUQzRCAqYmFzZUltYWdlID0gZ2V0QmFzZUxldmVs
SW1hZ2UoKTsKLQotICAgIEdMc2l6ZWkgd2lkdGggPSBiYXNlSW1hZ2UtPmdldFdpZHRoKCk7Ci0g
ICAgR0xzaXplaSBoZWlnaHQgPSBiYXNlSW1hZ2UtPmdldEhlaWdodCgpOworICAgIEdMc2l6ZWkg
d2lkdGggID0gZ2V0TGV2ZWxaZXJvV2lkdGgoKTsKKyAgICBHTHNpemVpIGhlaWdodCA9IGdldExl
dmVsWmVyb0hlaWdodCgpOwogCiAgICAgaWYgKHdpZHRoIDw9IDAgfHwgaGVpZ2h0IDw9IDApCiAg
ICAgewpAQCAtMTA2NywxNSArMTAzNCwxNSBAQCBib29sIFRleHR1cmVEM0RfMkQ6OmlzTGV2ZWxD
b21wbGV0ZShpbnQgCiAgICAgfQogCiAgICAgLy8gVGhlIGJhc2UgaW1hZ2UgbGV2ZWwgaXMgY29t
cGxldGUgaWYgdGhlIHdpZHRoIGFuZCBoZWlnaHQgYXJlIHBvc2l0aXZlCi0gICAgaWYgKGxldmVs
ID09IDApCisgICAgaWYgKGxldmVsID09IHN0YXRpY19jYXN0PGludD4oZ2V0QmFzZUxldmVsKCkp
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgQVNTRVJUKGxldmVs
ID49IDEgJiYgbGV2ZWwgPD0gKGludClBcnJheVNpemUobUltYWdlQXJyYXkpICYmIG1JbWFnZUFy
cmF5W2xldmVsXSAhPSBOVUxMKTsKKyAgICBBU1NFUlQobGV2ZWwgPj0gMCAmJiBsZXZlbCA8PSAo
aW50KUFycmF5U2l6ZShtSW1hZ2VBcnJheSkgJiYgbUltYWdlQXJyYXlbbGV2ZWxdICE9IG51bGxw
dHIpOwogICAgIEltYWdlRDNEICppbWFnZSA9IG1JbWFnZUFycmF5W2xldmVsXTsKIAotICAgIGlm
IChpbWFnZS0+Z2V0SW50ZXJuYWxGb3JtYXQoKSAhPSBiYXNlSW1hZ2UtPmdldEludGVybmFsRm9y
bWF0KCkpCisgICAgaWYgKGltYWdlLT5nZXRJbnRlcm5hbEZvcm1hdCgpICE9IGdldEJhc2VMZXZl
bEludGVybmFsRm9ybWF0KCkpCiAgICAgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpA
QCAtMTEwOCwyMSArMTA3NSwxNyBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF8yRDo6aW5pdGlhbGl6
ZVN0b3JhCiAgICAgfQogCiAgICAgLy8gZG8gbm90IGF0dGVtcHQgdG8gY3JlYXRlIHN0b3JhZ2Ug
Zm9yIG5vbmV4aXN0YW50IGRhdGEKLSAgICBpZiAoIWlzTGV2ZWxDb21wbGV0ZSgwKSkKKyAgICBp
ZiAoIWlzTGV2ZWxDb21wbGV0ZShnZXRCYXNlTGV2ZWwoKSkpCiAgICAgewogICAgICAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKICAgICB9CiAKLSAgICBib29sIGNyZWF0ZVJlbmRl
clRhcmdldCA9IChyZW5kZXJUYXJnZXQgfHwgSXNSZW5kZXJUYXJnZXRVc2FnZShtVXNhZ2UpKTsK
KyAgICBib29sIGNyZWF0ZVJlbmRlclRhcmdldCA9IChyZW5kZXJUYXJnZXQgfHwgSXNSZW5kZXJU
YXJnZXRVc2FnZShtU3RhdGUuZ2V0VXNhZ2UoKSkpOwogCiAgICAgVGV4dHVyZVN0b3JhZ2UgKnN0
b3JhZ2UgPSBOVUxMOwotICAgIGdsOjpFcnJvciBlcnJvciA9IGNyZWF0ZUNvbXBsZXRlU3RvcmFn
ZShjcmVhdGVSZW5kZXJUYXJnZXQsICZzdG9yYWdlKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigp
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkoY3Jl
YXRlQ29tcGxldGVTdG9yYWdlKGNyZWF0ZVJlbmRlclRhcmdldCwgJnN0b3JhZ2UpKTsKIAotICAg
IGVycm9yID0gc2V0Q29tcGxldGVUZXhTdG9yYWdlKHN0b3JhZ2UpOworICAgIGdsOjpFcnJvciBl
cnJvciA9IHNldENvbXBsZXRlVGV4U3RvcmFnZShzdG9yYWdlKTsKICAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQogICAgIHsKICAgICAgICAgU2FmZURlbGV0ZShzdG9yYWdlKTsKQEAgLTExMzIsMTkg
KzEwOTUsMTUgQEAgZ2w6OkVycm9yIFRleHR1cmVEM0RfMkQ6OmluaXRpYWxpemVTdG9yYQogICAg
IEFTU0VSVChtVGV4U3RvcmFnZSk7CiAKICAgICAvLyBmbHVzaCBpbWFnZSBkYXRhIHRvIHRoZSBz
dG9yYWdlCi0gICAgZXJyb3IgPSB1cGRhdGVTdG9yYWdlKCk7Ci0gICAgaWYgKGVycm9yLmlzRXJy
b3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZ
KHVwZGF0ZVN0b3JhZ2UoKSk7CiAKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsK
IH0KIAogZ2w6OkVycm9yIFRleHR1cmVEM0RfMkQ6OmNyZWF0ZUNvbXBsZXRlU3RvcmFnZShib29s
IHJlbmRlclRhcmdldCwgVGV4dHVyZVN0b3JhZ2UgKipvdXRUZXhTdG9yYWdlKSBjb25zdAogewot
ICAgIEdMc2l6ZWkgd2lkdGggPSBnZXRCYXNlTGV2ZWxXaWR0aCgpOwotICAgIEdMc2l6ZWkgaGVp
Z2h0ID0gZ2V0QmFzZUxldmVsSGVpZ2h0KCk7CisgICAgR0xzaXplaSB3aWR0aCAgICAgICAgID0g
Z2V0TGV2ZWxaZXJvV2lkdGgoKTsKKyAgICBHTHNpemVpIGhlaWdodCAgICAgICAgPSBnZXRMZXZl
bFplcm9IZWlnaHQoKTsKICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQgPSBnZXRCYXNlTGV2ZWxJ
bnRlcm5hbEZvcm1hdCgpOwogCiAgICAgQVNTRVJUKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwKTsK
QEAgLTExNzYsMTEgKzExMzUsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF8yRDo6c2V0Q29tcGxl
dGVUZXhTCiAgICAgewogICAgICAgICBmb3IgKGludCBsZXZlbCA9IDA7IGxldmVsIDwgbmV3Q29t
cGxldGVUZXhTdG9yYWdlLT5nZXRMZXZlbENvdW50KCk7IGxldmVsKyspCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGdsOjpFcnJvciBlcnJvciA9IG1JbWFnZUFycmF5W2xldmVsXS0+c2V0TWFuYWdl
ZFN1cmZhY2UyRChuZXdDb21wbGV0ZVRleFN0b3JhZ2UsIGxldmVsKTsKLSAgICAgICAgICAgIGlm
IChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGVycm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgQU5HTEVfVFJZKG1JbWFnZUFycmF5
W2xldmVsXS0+c2V0TWFuYWdlZFN1cmZhY2UyRChuZXdDb21wbGV0ZVRleFN0b3JhZ2UsIGxldmVs
KSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTExODksNyArMTE0NCw3IEBAIGdsOjpFcnJvciBU
ZXh0dXJlRDNEXzJEOjpzZXRDb21wbGV0ZVRleFMKIAogICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7
CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFRleHR1cmVEM0RfMkQ6OnVwZGF0ZVN0b3JhZ2UoKQpA
QCAtMTIwMCwxNSArMTE1NSwxMSBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF8yRDo6dXBkYXRlU3Rv
cmFnZSgpCiAgICAgewogICAgICAgICBpZiAobUltYWdlQXJyYXlbbGV2ZWxdLT5pc0RpcnR5KCkg
JiYgaXNMZXZlbENvbXBsZXRlKGxldmVsKSkKICAgICAgICAgewotICAgICAgICAgICAgZ2w6OkVy
cm9yIGVycm9yID0gdXBkYXRlU3RvcmFnZUxldmVsKGxldmVsKTsKLSAgICAgICAgICAgIGlmIChl
cnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVy
cm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgQU5HTEVfVFJZKHVwZGF0ZVN0b3JhZ2VM
ZXZlbChsZXZlbCkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBU
ZXh0dXJlRDNEXzJEOjp1cGRhdGVTdG9yYWdlTGV2ZWwoaW50IGxldmVsKQpAQCAtMTIyMCwxNCAr
MTE3MSwxMCBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF8yRDo6dXBkYXRlU3RvcmFnZUxlCiAgICAg
ewogICAgICAgICBnbDo6SW1hZ2VJbmRleCBpbmRleCA9IGdsOjpJbWFnZUluZGV4OjpNYWtlMkQo
bGV2ZWwpOwogICAgICAgICBnbDo6Qm94IHJlZ2lvbigwLCAwLCAwLCBnZXRXaWR0aChsZXZlbCks
IGdldEhlaWdodChsZXZlbCksIDEpOwotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBjb21taXRS
ZWdpb24oaW5kZXgsIHJlZ2lvbik7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBBTkdM
RV9UUlkoY29tbWl0UmVnaW9uKGluZGV4LCByZWdpb24pKTsKICAgICB9CiAKLSAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAog
dm9pZCBUZXh0dXJlRDNEXzJEOjpyZWRlZmluZUltYWdlKHNpemVfdCBsZXZlbCwKQEAgLTEyMzgs
OCArMTE4NSw4IEBAIHZvaWQgVGV4dHVyZUQzRF8yRDo6cmVkZWZpbmVJbWFnZShzaXplX3QKICAg
ICBBU1NFUlQoc2l6ZS5kZXB0aCA9PSAxKTsKIAogICAgIC8vIElmIHRoZXJlIGN1cnJlbnRseSBp
cyBhIGNvcnJlc3BvbmRpbmcgc3RvcmFnZSB0ZXh0dXJlIGltYWdlLCBpdCBoYXMgdGhlc2UgcGFy
YW1ldGVycwotICAgIGNvbnN0IGludCBzdG9yYWdlV2lkdGggPSBzdGQ6Om1heCgxLCBnZXRCYXNl
TGV2ZWxXaWR0aCgpID4+IGxldmVsKTsKLSAgICBjb25zdCBpbnQgc3RvcmFnZUhlaWdodCA9IHN0
ZDo6bWF4KDEsIGdldEJhc2VMZXZlbEhlaWdodCgpID4+IGxldmVsKTsKKyAgICBjb25zdCBpbnQg
c3RvcmFnZVdpZHRoICAgICA9IHN0ZDo6bWF4KDEsIGdldExldmVsWmVyb1dpZHRoKCkgPj4gbGV2
ZWwpOworICAgIGNvbnN0IGludCBzdG9yYWdlSGVpZ2h0ICAgID0gc3RkOjptYXgoMSwgZ2V0TGV2
ZWxaZXJvSGVpZ2h0KCkgPj4gbGV2ZWwpOwogICAgIGNvbnN0IEdMZW51bSBzdG9yYWdlRm9ybWF0
ID0gZ2V0QmFzZUxldmVsSW50ZXJuYWxGb3JtYXQoKTsKIAogICAgIG1JbWFnZUFycmF5W2xldmVs
XS0+cmVkZWZpbmUoR0xfVEVYVFVSRV8yRCwgaW50ZXJuYWxmb3JtYXQsIHNpemUsIGZvcmNlUmVs
ZWFzZSk7CkBAIC0xMjYxLDEzICsxMjA4LDggQEAgdm9pZCBUZXh0dXJlRDNEXzJEOjpyZWRlZmlu
ZUltYWdlKHNpemVfdAogICAgICAgICAgICAgc2l6ZS5oZWlnaHQgIT0gc3RvcmFnZUhlaWdodCB8
fAogICAgICAgICAgICAgaW50ZXJuYWxmb3JtYXQgIT0gc3RvcmFnZUZvcm1hdCkgICAvLyBEaXNj
YXJkIG1pc21hdGNoZWQgc3RvcmFnZQogICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFM7IGkrKykK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtSW1hZ2VBcnJheVtpXS0+bWFya0RpcnR5
KCk7Ci0gICAgICAgICAgICB9Ci0KKyAgICAgICAgICAgIG1hcmtBbGxJbWFnZXNEaXJ0eSgpOwog
ICAgICAgICAgICAgU2FmZURlbGV0ZShtVGV4U3RvcmFnZSk7Ci0gICAgICAgICAgICBtRGlydHlJ
bWFnZXMgPSB0cnVlOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMjkyLDggKzEyMzQsMTcgQEAg
Ym9vbCBUZXh0dXJlRDNEXzJEOjppc1ZhbGlkSW5kZXgoY29uc3QgZwogICAgICAgICAgICAgaW5k
ZXgubWlwSW5kZXggPj0gMCAmJiBpbmRleC5taXBJbmRleCA8IG1UZXhTdG9yYWdlLT5nZXRMZXZl
bENvdW50KCkpOwogfQogCi1UZXh0dXJlRDNEX0N1YmU6OlRleHR1cmVEM0RfQ3ViZShSZW5kZXJl
ckQzRCAqcmVuZGVyZXIpCi0gICAgOiBUZXh0dXJlRDNEKHJlbmRlcmVyKQordm9pZCBUZXh0dXJl
RDNEXzJEOjptYXJrQWxsSW1hZ2VzRGlydHkoKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZ2w6OklNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUzsgaSsrKQorICAgIHsKKyAg
ICAgICAgbUltYWdlQXJyYXlbaV0tPm1hcmtEaXJ0eSgpOworICAgIH0KKyAgICBtRGlydHlJbWFn
ZXMgPSB0cnVlOworfQorCitUZXh0dXJlRDNEX0N1YmU6OlRleHR1cmVEM0RfQ3ViZShjb25zdCBn
bDo6VGV4dHVyZVN0YXRlICZzdGF0ZSwgUmVuZGVyZXJEM0QgKnJlbmRlcmVyKQorICAgIDogVGV4
dHVyZUQzRChzdGF0ZSwgcmVuZGVyZXIpCiB7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA2OyBp
KyspCiAgICAgewpAQCAtMTQwMiwxMiArMTM1Myw3IEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEX0N1
YmU6OnNldENvbXByZXNzZWQKIAogICAgIGdsOjpJbWFnZUluZGV4IGluZGV4ID0gZ2w6OkltYWdl
SW5kZXg6Ok1ha2VDdWJlKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0xpbnQ+KGxldmVsKSk7CiAKLSAg
ICBnbDo6RXJyb3IgZXJyb3IgPSBUZXh0dXJlRDNEOjpzdWJJbWFnZUNvbXByZXNzZWQoaW5kZXgs
IGFyZWEsIGZvcm1hdCwgdW5wYWNrLCBwaXhlbHMsIDApOwotICAgIGlmIChlcnJvci5pc0Vycm9y
KCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQotCisgICAgQU5HTEVfVFJZ
KFRleHR1cmVEM0Q6OnN1YkltYWdlQ29tcHJlc3NlZChpbmRleCwgYXJlYSwgZm9ybWF0LCB1bnBh
Y2ssIHBpeGVscywgMCkpOwogICAgIHJldHVybiBjb21taXRSZWdpb24oaW5kZXgsIGFyZWEpOwog
fQogCkBAIC0xNDMyLDM0ICsxMzc4LDIxIEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEX0N1YmU6OmNv
cHlJbWFnZShHTGUKICAgICAvLyBzbyB3ZSBzaG91bGQgdXNlIHRoZSBub24tcmVuZGVyaW5nIGNv
cHkgcGF0aC4KICAgICBpZiAoIWNhbkNyZWF0ZVJlbmRlclRhcmdldEZvckltYWdlKGluZGV4KSB8
fCBtUmVuZGVyZXItPmdldFdvcmthcm91bmRzKCkuemVyb01heExvZFdvcmthcm91bmQpCiAgICAg
ewotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPQotICAgICAgICAgICAgbUltYWdlQXJyYXlbZmFj
ZUluZGV4XVtsZXZlbF0tPmNvcHlGcm9tRnJhbWVidWZmZXIoZGVzdE9mZnNldCwgc291cmNlQXJl
YSwgc291cmNlKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9Ci0KKyAgICAgICAgQU5HTEVfVFJZKAor
ICAgICAgICAgICAgbUltYWdlQXJyYXlbZmFjZUluZGV4XVtsZXZlbF0tPmNvcHlGcm9tRnJhbWVi
dWZmZXIoZGVzdE9mZnNldCwgc291cmNlQXJlYSwgc291cmNlKSk7CiAgICAgICAgIG1EaXJ0eUlt
YWdlcyA9IHRydWU7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGdsOjpFcnJvciBl
cnJvciA9IGVuc3VyZVJlbmRlclRhcmdldCgpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigp
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KLQorICAg
ICAgICBBTkdMRV9UUlkoZW5zdXJlUmVuZGVyVGFyZ2V0KCkpOwogICAgICAgICBtSW1hZ2VBcnJh
eVtmYWNlSW5kZXhdW2xldmVsXS0+bWFya0NsZWFuKCk7CiAKICAgICAgICAgQVNTRVJUKHNpemUu
d2lkdGggPT0gc2l6ZS5oZWlnaHQpOwogCiAgICAgICAgIGlmIChzaXplLndpZHRoID4gMCAmJiBp
c1ZhbGlkRmFjZUxldmVsKGZhY2VJbmRleCwgbGV2ZWwpKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBlcnJvciA9IG1SZW5kZXJlci0+Y29weUltYWdlQ3ViZShzb3VyY2UsIHNvdXJjZUFyZWEsIGlu
dGVybmFsRm9ybWF0LCBkZXN0T2Zmc2V0LCBtVGV4U3RvcmFnZSwgdGFyZ2V0LCBsZXZlbCk7Ci0g
ICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFOR0xFX1RS
WShtUmVuZGVyZXItPmNvcHlJbWFnZUN1YmUoc291cmNlLCBzb3VyY2VBcmVhLCBpbnRlcm5hbEZv
cm1hdCwgZGVzdE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbVRleFN0b3JhZ2UsIHRhcmdldCwgbGV2ZWwpKTsKICAgICAgICAgfQogICAgIH0K
IApAQCAtMTQ5MiwyNiArMTQyNSwxMyBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF9DdWJlOjpjb3B5
U3ViSW1hZ2UoCiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJv
ciA9IGVuc3VyZVJlbmRlclRhcmdldCgpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KLQorICAgICAg
ICBBTkdMRV9UUlkoZW5zdXJlUmVuZGVyVGFyZ2V0KCkpOwogICAgICAgICBpZiAoaXNWYWxpZEZh
Y2VMZXZlbChmYWNlSW5kZXgsIGxldmVsKSkKICAgICAgICAgewotICAgICAgICAgICAgZXJyb3Ig
PSB1cGRhdGVTdG9yYWdlRmFjZUxldmVsKGZhY2VJbmRleCwgbGV2ZWwpOwotICAgICAgICAgICAg
aWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGVycm9yID0gbVJlbmRlcmVy
LT5jb3B5SW1hZ2VDdWJlKHNvdXJjZSwgc291cmNlQXJlYSwgZ2w6OkdldEludGVybmFsRm9ybWF0
SW5mbyhnZXRCYXNlTGV2ZWxJbnRlcm5hbEZvcm1hdCgpKS5mb3JtYXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0T2Zmc2V0LCBtVGV4U3RvcmFnZSwg
dGFyZ2V0LCBsZXZlbCk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIEFOR0xFX1RSWSh1cGRhdGVTdG9yYWdlRmFjZUxldmVsKGZhY2VJbmRleCwgbGV2
ZWwpKTsKKyAgICAgICAgICAgIEFOR0xFX1RSWShtUmVuZGVyZXItPmNvcHlJbWFnZUN1YmUoCisg
ICAgICAgICAgICAgICAgc291cmNlLCBzb3VyY2VBcmVhLCBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJ
bmZvKGdldEJhc2VMZXZlbEludGVybmFsRm9ybWF0KCkpLmZvcm1hdCwKKyAgICAgICAgICAgICAg
ICBkZXN0T2Zmc2V0LCBtVGV4U3RvcmFnZSwgdGFyZ2V0LCBsZXZlbCkpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC0xNTQxLDcgKzE0NjEsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF9DdWJlOjpz
ZXRTdG9yYWdlKEdMCiAgICAgfQogCiAgICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBWZXJpZnkgc3Rv
cmFnZSBjcmVhdGlvbiBoYWQgbm8gZXJyb3JzCi0gICAgYm9vbCByZW5kZXJUYXJnZXQgPSBJc1Jl
bmRlclRhcmdldFVzYWdlKG1Vc2FnZSk7CisgICAgYm9vbCByZW5kZXJUYXJnZXQgPSBJc1JlbmRl
clRhcmdldFVzYWdlKG1TdGF0ZS5nZXRVc2FnZSgpKTsKIAogICAgIFRleHR1cmVTdG9yYWdlICpz
dG9yYWdlID0gbVJlbmRlcmVyLT5jcmVhdGVUZXh0dXJlU3RvcmFnZUN1YmUoCiAgICAgICAgIGlu
dGVybmFsRm9ybWF0LCByZW5kZXJUYXJnZXQsIHNpemUud2lkdGgsIHN0YXRpY19jYXN0PGludD4o
bGV2ZWxzKSwgZmFsc2UpOwpAQCAtMTU1MywxNiArMTQ3MywxMSBAQCBnbDo6RXJyb3IgVGV4dHVy
ZUQzRF9DdWJlOjpzZXRTdG9yYWdlKEdMCiAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICB9CiAK
LSAgICBlcnJvciA9IHVwZGF0ZVN0b3JhZ2UoKTsKLQotICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
Ci0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWSh1cGRh
dGVTdG9yYWdlKCkpOwogCiAgICAgbUltbXV0YWJsZSA9IHRydWU7CiAKLSAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogLy8g
VGVzdHMgZm9yIGN1YmUgdGV4dHVyZSBjb21wbGV0ZW5lc3MuIFtPcGVuR0wgRVMgMi4wLjI0XSBz
ZWN0aW9uIDMuNy4xMCBwYWdlIDgxLgpAQCAtMTU3OSw3ICsxNDk0LDcgQEAgYm9vbCBUZXh0dXJl
RDNEX0N1YmU6OmlzQ3ViZUNvbXBsZXRlKCkgYwogCiAgICAgZm9yIChpbnQgZmFjZUluZGV4ID0g
MTsgZmFjZUluZGV4IDwgNjsgZmFjZUluZGV4KyspCiAgICAgewotICAgICAgICBjb25zdCBJbWFn
ZUQzRCAmZmFjZUJhc2VJbWFnZSA9ICptSW1hZ2VBcnJheVtmYWNlSW5kZXhdWzBdOworICAgICAg
ICBjb25zdCBJbWFnZUQzRCAmZmFjZUJhc2VJbWFnZSA9ICptSW1hZ2VBcnJheVtmYWNlSW5kZXhd
W2dldEJhc2VMZXZlbCgpXTsKIAogICAgICAgICBpZiAoZmFjZUJhc2VJbWFnZS5nZXRXaWR0aCgp
ICAgICAgICAgICE9IGJhc2VXaWR0aCAgfHwKICAgICAgICAgICAgIGZhY2VCYXNlSW1hZ2UuZ2V0
SGVpZ2h0KCkgICAgICAgICAhPSBiYXNlSGVpZ2h0IHx8CkBAIC0xNjAyLDE3ICsxNTE3LDE5IEBA
IHZvaWQgVGV4dHVyZUQzRF9DdWJlOjpyZWxlYXNlVGV4SW1hZ2UoKQogICAgIFVOUkVBQ0hBQkxF
KCk7CiB9CiAKLQotdm9pZCBUZXh0dXJlRDNEX0N1YmU6OmluaXRNaXBtYXBzSW1hZ2VzKCkKK3Zv
aWQgVGV4dHVyZUQzRF9DdWJlOjppbml0TWlwbWFwSW1hZ2VzKCkKIHsKLSAgICAvLyBQdXJnZSBh
cnJheSBsZXZlbHMgMSB0aHJvdWdoIHEgYW5kIHJlc2V0IHRoZW0gdG8gcmVwcmVzZW50IHRoZSBn
ZW5lcmF0ZWQgbWlwbWFwIGxldmVscy4KLSAgICBpbnQgbGV2ZWxDb3VudCA9IG1pcExldmVscygp
OworICAgIGNvbnN0IEdMdWludCBiYXNlTGV2ZWwgPSBtU3RhdGUuZ2V0RWZmZWN0aXZlQmFzZUxl
dmVsKCk7CisgICAgY29uc3QgR0x1aW50IG1heExldmVsICA9IG1TdGF0ZS5nZXRNaXBtYXBNYXhM
ZXZlbCgpOworICAgIC8vIFB1cmdlIGFycmF5IGxldmVscyBiYXNlTGV2ZWwgKyAxIHRocm91Z2gg
cSBhbmQgcmVzZXQgdGhlbSB0byByZXByZXNlbnQgdGhlIGdlbmVyYXRlZCBtaXBtYXAKKyAgICAv
LyBsZXZlbHMuCiAgICAgZm9yIChpbnQgZmFjZUluZGV4ID0gMDsgZmFjZUluZGV4IDwgNjsgZmFj
ZUluZGV4KyspCiAgICAgewotICAgICAgICBmb3IgKGludCBsZXZlbCA9IDE7IGxldmVsIDwgbGV2
ZWxDb3VudDsgbGV2ZWwrKykKKyAgICAgICAgZm9yIChHTHVpbnQgbGV2ZWwgPSBiYXNlTGV2ZWwg
KyAxOyBsZXZlbCA8PSBtYXhMZXZlbDsgbGV2ZWwrKykKICAgICAgICAgewotICAgICAgICAgICAg
aW50IGZhY2VMZXZlbFNpemUgPSAoc3RkOjptYXgobUltYWdlQXJyYXlbZmFjZUluZGV4XVswXS0+
Z2V0V2lkdGgoKSA+PiBsZXZlbCwgMSkpOwotICAgICAgICAgICAgcmVkZWZpbmVJbWFnZShmYWNl
SW5kZXgsIGxldmVsLCBtSW1hZ2VBcnJheVtmYWNlSW5kZXhdWzBdLT5nZXRJbnRlcm5hbEZvcm1h
dCgpLAorICAgICAgICAgICAgaW50IGZhY2VMZXZlbFNpemUgPQorICAgICAgICAgICAgICAgIChz
dGQ6Om1heChtSW1hZ2VBcnJheVtmYWNlSW5kZXhdW2Jhc2VMZXZlbF0tPmdldFdpZHRoKCkgPj4g
KGxldmVsIC0gYmFzZUxldmVsKSwgMSkpOworICAgICAgICAgICAgcmVkZWZpbmVJbWFnZShmYWNl
SW5kZXgsIGxldmVsLCBtSW1hZ2VBcnJheVtmYWNlSW5kZXhdW2Jhc2VMZXZlbF0tPmdldEludGVy
bmFsRm9ybWF0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpFeHRlbnRzKGZhY2VM
ZXZlbFNpemUsIGZhY2VMZXZlbFNpemUsIDEpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE2MjMs
MTcgKzE1NDAsOCBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF9DdWJlOjpnZXRSZW5kZXJUYXJnCiAg
ICAgQVNTRVJUKGdsOjpJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KGluZGV4LnR5cGUpKTsKIAogICAg
IC8vIGVuc3VyZSB0aGUgdW5kZXJseWluZyB0ZXh0dXJlIGlzIGNyZWF0ZWQKLSAgICBnbDo6RXJy
b3IgZXJyb3IgPSBlbnN1cmVSZW5kZXJUYXJnZXQoKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigp
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KLQotICAgIGVycm9yID0gdXBk
YXRlU3RvcmFnZUZhY2VMZXZlbChpbmRleC5sYXllckluZGV4LCBpbmRleC5taXBJbmRleCk7Ci0g
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAg
ICB9CisgICAgQU5HTEVfVFJZKGVuc3VyZVJlbmRlclRhcmdldCgpKTsKKyAgICBBTkdMRV9UUlko
dXBkYXRlU3RvcmFnZUZhY2VMZXZlbChpbmRleC5sYXllckluZGV4LCBpbmRleC5taXBJbmRleCkp
OwogCiAgICAgcmV0dXJuIG1UZXhTdG9yYWdlLT5nZXRSZW5kZXJUYXJnZXQoaW5kZXgsIG91dFJU
KTsKIH0KQEAgLTE2NDMsMjUgKzE1NTEsMjEgQEAgZ2w6OkVycm9yIFRleHR1cmVEM0RfQ3ViZTo6
aW5pdGlhbGl6ZVN0bwogICAgIC8vIE9ubHkgaW5pdGlhbGl6ZSB0aGUgZmlyc3QgdGltZSB0aGlz
IHRleHR1cmUgaXMgdXNlZCBhcyBhIHJlbmRlciB0YXJnZXQgb3Igc2hhZGVyIHJlc291cmNlCiAg
ICAgaWYgKG1UZXhTdG9yYWdlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9O
T19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogICAgIH0KIAogICAgIC8v
IGRvIG5vdCBhdHRlbXB0IHRvIGNyZWF0ZSBzdG9yYWdlIGZvciBub25leGlzdGFudCBkYXRhCi0g
ICAgaWYgKCFpc0ZhY2VMZXZlbENvbXBsZXRlKDAsIDApKQorICAgIGlmICghaXNGYWNlTGV2ZWxD
b21wbGV0ZSgwLCBnZXRCYXNlTGV2ZWwoKSkpCiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQog
Ci0gICAgYm9vbCBjcmVhdGVSZW5kZXJUYXJnZXQgPSAocmVuZGVyVGFyZ2V0IHx8IElzUmVuZGVy
VGFyZ2V0VXNhZ2UobVVzYWdlKSk7CisgICAgYm9vbCBjcmVhdGVSZW5kZXJUYXJnZXQgPSAocmVu
ZGVyVGFyZ2V0IHx8IElzUmVuZGVyVGFyZ2V0VXNhZ2UobVN0YXRlLmdldFVzYWdlKCkpKTsKIAog
ICAgIFRleHR1cmVTdG9yYWdlICpzdG9yYWdlID0gTlVMTDsKLSAgICBnbDo6RXJyb3IgZXJyb3Ig
PSBjcmVhdGVDb21wbGV0ZVN0b3JhZ2UoY3JlYXRlUmVuZGVyVGFyZ2V0LCAmc3RvcmFnZSk7Ci0g
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAg
ICB9CisgICAgQU5HTEVfVFJZKGNyZWF0ZUNvbXBsZXRlU3RvcmFnZShjcmVhdGVSZW5kZXJUYXJn
ZXQsICZzdG9yYWdlKSk7CiAKLSAgICBlcnJvciA9IHNldENvbXBsZXRlVGV4U3RvcmFnZShzdG9y
YWdlKTsKKyAgICBnbDo6RXJyb3IgZXJyb3IgPSBzZXRDb21wbGV0ZVRleFN0b3JhZ2Uoc3RvcmFn
ZSk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7CiAgICAgICAgIFNhZmVEZWxldGUo
c3RvcmFnZSk7CkBAIC0xNjcxLDE4ICsxNTc1LDE0IEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEX0N1
YmU6OmluaXRpYWxpemVTdG8KICAgICBBU1NFUlQobVRleFN0b3JhZ2UpOwogCiAgICAgLy8gZmx1
c2ggaW1hZ2UgZGF0YSB0byB0aGUgc3RvcmFnZQotICAgIGVycm9yID0gdXBkYXRlU3RvcmFnZSgp
OwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7
Ci0gICAgfQorICAgIEFOR0xFX1RSWSh1cGRhdGVTdG9yYWdlKCkpOwogCi0gICAgcmV0dXJuIGds
OjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGds
OjpFcnJvciBUZXh0dXJlRDNEX0N1YmU6OmNyZWF0ZUNvbXBsZXRlU3RvcmFnZShib29sIHJlbmRl
clRhcmdldCwgVGV4dHVyZVN0b3JhZ2UgKipvdXRUZXhTdG9yYWdlKSBjb25zdAogewotICAgIEdM
c2l6ZWkgc2l6ZSA9IGdldEJhc2VMZXZlbFdpZHRoKCk7CisgICAgR0xzaXplaSBzaXplID0gZ2V0
TGV2ZWxaZXJvV2lkdGgoKTsKIAogICAgIEFTU0VSVChzaXplID4gMCk7CiAKQEAgLTE3MTgsMTEg
KzE2MTgsOCBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF9DdWJlOjpzZXRDb21wbGV0ZVRlCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGZvciAoaW50IGxldmVsID0gMDsgbGV2ZWwgPCBuZXdDb21wbGV0
ZVRleFN0b3JhZ2UtPmdldExldmVsQ291bnQoKTsgbGV2ZWwrKykKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBtSW1hZ2VBcnJheVtmYWNlSW5kZXhdW2xl
dmVsXS0+c2V0TWFuYWdlZFN1cmZhY2VDdWJlKG5ld0NvbXBsZXRlVGV4U3RvcmFnZSwgZmFjZUlu
ZGV4LCBsZXZlbCk7Ci0gICAgICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgQU5HTEVfVFJZKG1JbWFnZUFycmF5W2ZhY2VJbmRl
eF1bbGV2ZWxdLT5zZXRNYW5hZ2VkU3VyZmFjZUN1YmUoCisgICAgICAgICAgICAgICAgICAgIG5l
d0NvbXBsZXRlVGV4U3RvcmFnZSwgZmFjZUluZGV4LCBsZXZlbCkpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfQpAQCAtMTc0NCwxNiArMTY0MSwxMiBAQCBnbDo6RXJyb3IgVGV4dHVy
ZUQzRF9DdWJlOjp1cGRhdGVTdG9yYWdlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtSW1h
Z2VBcnJheVtmYWNlXVtsZXZlbF0tPmlzRGlydHkoKSAmJiBpc0ZhY2VMZXZlbENvbXBsZXRlKGZh
Y2UsIGxldmVsKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbDo6RXJyb3IgZXJy
b3IgPSB1cGRhdGVTdG9yYWdlRmFjZUxldmVsKGZhY2UsIGxldmVsKTsKLSAgICAgICAgICAgICAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBB
TkdMRV9UUlkodXBkYXRlU3RvcmFnZUZhY2VMZXZlbChmYWNlLCBsZXZlbCkpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJP
Uik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGJvb2wgVGV4dHVyZUQzRF9DdWJl
Ojppc1ZhbGlkRmFjZUxldmVsKGludCBmYWNlSW5kZXgsIGludCBsZXZlbCkgY29uc3QKQEAgLTE3
NjMsMTYgKzE2NTYsMjEgQEAgYm9vbCBUZXh0dXJlRDNEX0N1YmU6OmlzVmFsaWRGYWNlTGV2ZWwo
aQogCiBib29sIFRleHR1cmVEM0RfQ3ViZTo6aXNGYWNlTGV2ZWxDb21wbGV0ZShpbnQgZmFjZUlu
ZGV4LCBpbnQgbGV2ZWwpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGxldmVsID49IDAgJiYgZmFjZUlu
ZGV4IDwgNiAmJiBsZXZlbCA8IChpbnQpQXJyYXlTaXplKG1JbWFnZUFycmF5W2ZhY2VJbmRleF0p
ICYmIG1JbWFnZUFycmF5W2ZhY2VJbmRleF1bbGV2ZWxdICE9IE5VTEwpOworICAgIGlmIChnZXRC
YXNlTGV2ZWwoKSA+PSBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBBU1NFUlQobGV2ZWwgPj0gMCAm
JiBmYWNlSW5kZXggPCA2ICYmIGxldmVsIDwgKGludClBcnJheVNpemUobUltYWdlQXJyYXlbZmFj
ZUluZGV4XSkgJiYKKyAgICAgICAgICAgbUltYWdlQXJyYXlbZmFjZUluZGV4XVtsZXZlbF0gIT0g
bnVsbHB0cik7CiAKICAgICBpZiAoaXNJbW11dGFibGUoKSkKICAgICB7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAotICAgIGludCBiYXNlU2l6ZSA9IGdldEJhc2VMZXZlbFdpZHRoKCk7
CisgICAgaW50IGxldmVsWmVyb1NpemUgPSBnZXRMZXZlbFplcm9XaWR0aCgpOwogCi0gICAgaWYg
KGJhc2VTaXplIDw9IDApCisgICAgaWYgKGxldmVsWmVyb1NpemUgPD0gMCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xNzkzLDcgKzE2OTEsNyBAQCBib29sIFRleHR1
cmVEM0RfQ3ViZTo6aXNGYWNlTGV2ZWxDb21wbGV0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICBpZiAoZmFjZUxldmVsSW1hZ2UtPmdldFdpZHRoKCkgIT0gc3RkOjptYXgoMSwg
YmFzZVNpemUgPj4gbGV2ZWwpKQorICAgIGlmIChmYWNlTGV2ZWxJbWFnZS0+Z2V0V2lkdGgoKSAh
PSBzdGQ6Om1heCgxLCBsZXZlbFplcm9TaXplID4+IGxldmVsKSkKICAgICB7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CkBAIC0xODE2LDIxICsxNzE0LDE3IEBAIGdsOjpFcnJvciBUZXh0
dXJlRDNEX0N1YmU6OnVwZGF0ZVN0b3JhZ2UKICAgICAgICAgR0xlbnVtIGZhY2VUYXJnZXQgPSBn
bDo6TGF5ZXJJbmRleFRvQ3ViZU1hcFRleHR1cmVUYXJnZXQoZmFjZUluZGV4KTsKICAgICAgICAg
Z2w6OkltYWdlSW5kZXggaW5kZXggPSBnbDo6SW1hZ2VJbmRleDo6TWFrZUN1YmUoZmFjZVRhcmdl
dCwgbGV2ZWwpOwogICAgICAgICBnbDo6Qm94IHJlZ2lvbigwLCAwLCAwLCBpbWFnZS0+Z2V0V2lk
dGgoKSwgaW1hZ2UtPmdldEhlaWdodCgpLCAxKTsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0g
Y29tbWl0UmVnaW9uKGluZGV4LCByZWdpb24pOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigp
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KKyAgICAg
ICAgQU5HTEVfVFJZKGNvbW1pdFJlZ2lvbihpbmRleCwgcmVnaW9uKSk7CiAgICAgfQogCi0gICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7
CiB9CiAKIHZvaWQgVGV4dHVyZUQzRF9DdWJlOjpyZWRlZmluZUltYWdlKGludCBmYWNlSW5kZXgs
IEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIGNvbnN0IGdsOjpFeHRlbnRzICZz
aXplKQogewogICAgIC8vIElmIHRoZXJlIGN1cnJlbnRseSBpcyBhIGNvcnJlc3BvbmRpbmcgc3Rv
cmFnZSB0ZXh0dXJlIGltYWdlLCBpdCBoYXMgdGhlc2UgcGFyYW1ldGVycwotICAgIGNvbnN0IGlu
dCBzdG9yYWdlV2lkdGggPSBzdGQ6Om1heCgxLCBnZXRCYXNlTGV2ZWxXaWR0aCgpID4+IGxldmVs
KTsKLSAgICBjb25zdCBpbnQgc3RvcmFnZUhlaWdodCA9IHN0ZDo6bWF4KDEsIGdldEJhc2VMZXZl
bEhlaWdodCgpID4+IGxldmVsKTsKKyAgICBjb25zdCBpbnQgc3RvcmFnZVdpZHRoICAgICA9IHN0
ZDo6bWF4KDEsIGdldExldmVsWmVyb1dpZHRoKCkgPj4gbGV2ZWwpOworICAgIGNvbnN0IGludCBz
dG9yYWdlSGVpZ2h0ICAgID0gc3RkOjptYXgoMSwgZ2V0TGV2ZWxaZXJvSGVpZ2h0KCkgPj4gbGV2
ZWwpOwogICAgIGNvbnN0IEdMZW51bSBzdG9yYWdlRm9ybWF0ID0gZ2V0QmFzZUxldmVsSW50ZXJu
YWxGb3JtYXQoKTsKIAogICAgIG1JbWFnZUFycmF5W2ZhY2VJbmRleF1bbGV2ZWxdLT5yZWRlZmlu
ZShHTF9URVhUVVJFX0NVQkVfTUFQLCBpbnRlcm5hbGZvcm1hdCwgc2l6ZSwgZmFsc2UpOwpAQCAt
MTg0NCwxNyArMTczOCw4IEBAIHZvaWQgVGV4dHVyZUQzRF9DdWJlOjpyZWRlZmluZUltYWdlKGlu
dCAKICAgICAgICAgICAgIHNpemUuaGVpZ2h0ICE9IHN0b3JhZ2VIZWlnaHQgfHwKICAgICAgICAg
ICAgIGludGVybmFsZm9ybWF0ICE9IHN0b3JhZ2VGb3JtYXQpICAgLy8gRGlzY2FyZCBtaXNtYXRj
aGVkIHN0b3JhZ2UKICAgICAgICAgewotICAgICAgICAgICAgZm9yIChpbnQgZGlydHlMZXZlbCA9
IDA7IGRpcnR5TGV2ZWwgPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTOyBk
aXJ0eUxldmVsKyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQgZGly
dHlGYWNlID0gMDsgZGlydHlGYWNlIDwgNjsgZGlydHlGYWNlKyspCi0gICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICBtSW1hZ2VBcnJheVtkaXJ0eUZhY2VdW2RpcnR5TGV2ZWxd
LT5tYXJrRGlydHkoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KKyAgICAg
ICAgICAgIG1hcmtBbGxJbWFnZXNEaXJ0eSgpOwogICAgICAgICAgICAgU2FmZURlbGV0ZShtVGV4
U3RvcmFnZSk7Ci0KLSAgICAgICAgICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7CiAgICAgICAgIH0K
ICAgICB9CiB9CkBAIC0xODc2LDggKzE3NjEsMjAgQEAgYm9vbCBUZXh0dXJlRDNEX0N1YmU6Omlz
VmFsaWRJbmRleChjb25zdAogICAgICAgICAgICAgaW5kZXgubWlwSW5kZXggPj0gMCAmJiBpbmRl
eC5taXBJbmRleCA8IG1UZXhTdG9yYWdlLT5nZXRMZXZlbENvdW50KCkpOwogfQogCi1UZXh0dXJl
RDNEXzNEOjpUZXh0dXJlRDNEXzNEKFJlbmRlcmVyRDNEICpyZW5kZXJlcikKLSAgICA6IFRleHR1
cmVEM0QocmVuZGVyZXIpCit2b2lkIFRleHR1cmVEM0RfQ3ViZTo6bWFya0FsbEltYWdlc0RpcnR5
KCkKK3sKKyAgICBmb3IgKGludCBkaXJ0eUxldmVsID0gMDsgZGlydHlMZXZlbCA8IGdsOjpJTVBM
RU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFM7IGRpcnR5TGV2ZWwrKykKKyAgICB7CisgICAg
ICAgIGZvciAoaW50IGRpcnR5RmFjZSA9IDA7IGRpcnR5RmFjZSA8IDY7IGRpcnR5RmFjZSsrKQor
ICAgICAgICB7CisgICAgICAgICAgICBtSW1hZ2VBcnJheVtkaXJ0eUZhY2VdW2RpcnR5TGV2ZWxd
LT5tYXJrRGlydHkoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBtRGlydHlJbWFnZXMgPSB0cnVl
OworfQorCitUZXh0dXJlRDNEXzNEOjpUZXh0dXJlRDNEXzNEKGNvbnN0IGdsOjpUZXh0dXJlU3Rh
dGUgJnN0YXRlLCBSZW5kZXJlckQzRCAqcmVuZGVyZXIpCisgICAgOiBUZXh0dXJlRDNEKHN0YXRl
LCByZW5kZXJlcikKIHsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGdsOjpJTVBMRU1FTlRBVElP
Tl9NQVhfVEVYVFVSRV9MRVZFTFM7ICsraSkKICAgICB7CkBAIC0xOTgyLDIzICsxODc5LDE2IEBA
IGdsOjpFcnJvciBUZXh0dXJlRDNEXzNEOjpzZXRJbWFnZShHTGVudW0KICAgICBnbDo6SW1hZ2VJ
bmRleCBpbmRleCA9IGdsOjpJbWFnZUluZGV4OjpNYWtlM0QobGV2ZWwpOwogCiAgICAgLy8gQXR0
ZW1wdCBhIGZhc3QgZ3B1IGNvcHkgb2YgdGhlIHBpeGVsIGRhdGEgdG8gdGhlIHN1cmZhY2UgaWYg
dGhlIGFwcCBib3VuZCBhbiB1bnBhY2sgYnVmZmVyCi0gICAgaWYgKGlzRmFzdFVucGFja2FibGUo
dW5wYWNrLCBzaXplZEludGVybmFsRm9ybWF0KSAmJiAhc2l6ZS5lbXB0eSgpKQorICAgIGlmIChp
c0Zhc3RVbnBhY2thYmxlKHVucGFjaywgc2l6ZWRJbnRlcm5hbEZvcm1hdCkgJiYgIXNpemUuZW1w
dHkoKSAmJiBpc0xldmVsQ29tcGxldGUobGV2ZWwpKQogICAgIHsKICAgICAgICAgLy8gV2lsbCB0
cnkgdG8gY3JlYXRlIFJUIHN0b3JhZ2UgaWYgaXQgZG9lcyBub3QgZXhpc3QKICAgICAgICAgUmVu
ZGVyVGFyZ2V0RDNEICpkZXN0UmVuZGVyVGFyZ2V0ID0gTlVMTDsKLSAgICAgICAgZ2w6OkVycm9y
IGVycm9yID0gZ2V0UmVuZGVyVGFyZ2V0KGluZGV4LCAmZGVzdFJlbmRlclRhcmdldCk7Ci0gICAg
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBl
cnJvcjsKLSAgICAgICAgfQorICAgICAgICBBTkdMRV9UUlkoZ2V0UmVuZGVyVGFyZ2V0KGluZGV4
LCAmZGVzdFJlbmRlclRhcmdldCkpOwogCiAgICAgICAgIGdsOjpCb3ggZGVzdEFyZWEoMCwgMCwg
MCwgZ2V0V2lkdGgobGV2ZWwpLCBnZXRIZWlnaHQobGV2ZWwpLCBnZXREZXB0aChsZXZlbCkpOwog
Ci0gICAgICAgIGVycm9yID0gZmFzdFVucGFja1BpeGVscyh1bnBhY2ssIHBpeGVscywgZGVzdEFy
ZWEsIHNpemVkSW50ZXJuYWxGb3JtYXQsIHR5cGUsIGRlc3RSZW5kZXJUYXJnZXQpOwotICAgICAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJy
b3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKGZhc3RVbnBhY2tQaXhlbHModW5wYWNr
LCBwaXhlbHMsIGRlc3RBcmVhLCBzaXplZEludGVybmFsRm9ybWF0LCB0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0UmVuZGVyVGFyZ2V0KSk7CiAKICAgICAgICAg
Ly8gRW5zdXJlIHdlIGRvbid0IG92ZXJ3cml0ZSBvdXIgbmV3bHkgaW5pdGlhbGl6ZWQgZGF0YQog
ICAgICAgICBtSW1hZ2VBcnJheVtsZXZlbF0tPm1hcmtDbGVhbigpOwpAQCAtMjAwOCwxMSArMTg5
OCw3IEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEXzNEOjpzZXRJbWFnZShHTGVudW0KIAogICAgIGlm
ICghZmFzdFVucGFja2VkKQogICAgIHsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gc2V0SW1h
Z2VJbXBsKGluZGV4LCB0eXBlLCB1bnBhY2ssIHBpeGVscywgMCk7Ci0gICAgICAgIGlmIChlcnJv
ci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAg
ICAgfQorICAgICAgICBBTkdMRV9UUlkoc2V0SW1hZ2VJbXBsKGluZGV4LCB0eXBlLCB1bnBhY2ss
IHBpeGVscywgMCkpOwogICAgIH0KIAogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1Ip
OwpAQCAtMjAzMiwxNSArMTkxOCwxMCBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF8zRDo6c2V0U3Vi
SW1hZ2UoR0xlCiAgICAgZ2w6OkltYWdlSW5kZXggaW5kZXggPSBnbDo6SW1hZ2VJbmRleDo6TWFr
ZTNEKGxldmVsKTsKIAogICAgIC8vIEF0dGVtcHQgYSBmYXN0IGdwdSBjb3B5IG9mIHRoZSBwaXhl
bCBkYXRhIHRvIHRoZSBzdXJmYWNlIGlmIHRoZSBhcHAgYm91bmQgYW4gdW5wYWNrIGJ1ZmZlcgot
ICAgIGlmIChpc0Zhc3RVbnBhY2thYmxlKHVucGFjaywgZ2V0SW50ZXJuYWxGb3JtYXQobGV2ZWwp
KSkKKyAgICBpZiAoaXNGYXN0VW5wYWNrYWJsZSh1bnBhY2ssIGdldEludGVybmFsRm9ybWF0KGxl
dmVsKSkgJiYgaXNMZXZlbENvbXBsZXRlKGxldmVsKSkKICAgICB7CiAgICAgICAgIFJlbmRlclRh
cmdldEQzRCAqZGVzdFJlbmRlclRhcmdldCA9IE5VTEw7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJv
ciA9IGdldFJlbmRlclRhcmdldChpbmRleCwgJmRlc3RSZW5kZXJUYXJnZXQpOwotICAgICAgICBp
ZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7
Ci0gICAgICAgIH0KLQorICAgICAgICBBTkdMRV9UUlkoZ2V0UmVuZGVyVGFyZ2V0KGluZGV4LCAm
ZGVzdFJlbmRlclRhcmdldCkpOwogICAgICAgICBBU1NFUlQoIW1JbWFnZUFycmF5W2xldmVsXS0+
aXNEaXJ0eSgpKTsKIAogICAgICAgICByZXR1cm4gZmFzdFVucGFja1BpeGVscyh1bnBhY2ssIHBp
eGVscywgYXJlYSwgZ2V0SW50ZXJuYWxGb3JtYXQobGV2ZWwpLCB0eXBlLCBkZXN0UmVuZGVyVGFy
Z2V0KTsKQEAgLTIwNzUsMTIgKzE5NTYsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF8zRDo6c2V0
Q29tcHJlc3NlZFN1CiAgICAgQVNTRVJUKHRhcmdldCA9PSBHTF9URVhUVVJFXzNEKTsKIAogICAg
IGdsOjpJbWFnZUluZGV4IGluZGV4ID0gZ2w6OkltYWdlSW5kZXg6Ok1ha2UzRChzdGF0aWNfY2Fz
dDxHTGludD4obGV2ZWwpKTsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBUZXh0dXJlRDNEOjpzdWJJ
bWFnZUNvbXByZXNzZWQoaW5kZXgsIGFyZWEsIGZvcm1hdCwgdW5wYWNrLCBwaXhlbHMsIDApOwot
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0g
ICAgfQotCisgICAgQU5HTEVfVFJZKFRleHR1cmVEM0Q6OnN1YkltYWdlQ29tcHJlc3NlZChpbmRl
eCwgYXJlYSwgZm9ybWF0LCB1bnBhY2ssIHBpeGVscywgMCkpOwogICAgIHJldHVybiBjb21taXRS
ZWdpb24oaW5kZXgsIGFyZWEpOwogfQogCkBAIC0yMTA0LDM3ICsxOTgwLDE4IEBAIGdsOjpFcnJv
ciBUZXh0dXJlRDNEXzNEOjpjb3B5U3ViSW1hZ2UoR0wKIAogICAgIGlmIChjYW5DcmVhdGVSZW5k
ZXJUYXJnZXRGb3JJbWFnZShpbmRleCkpCiAgICAgewotICAgICAgICBnbDo6RXJyb3IgZXJyb3Ig
PSBtSW1hZ2VBcnJheVtsZXZlbF0tPmNvcHlGcm9tRnJhbWVidWZmZXIoZGVzdE9mZnNldCwgc291
cmNlQXJlYSwgc291cmNlKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9Ci0KKyAgICAgICAgQU5HTEVf
VFJZKG1JbWFnZUFycmF5W2xldmVsXS0+Y29weUZyb21GcmFtZWJ1ZmZlcihkZXN0T2Zmc2V0LCBz
b3VyY2VBcmVhLCBzb3VyY2UpKTsKICAgICAgICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKICAgICB9
CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gZW5zdXJlUmVuZGVy
VGFyZ2V0KCk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQotCisgICAgICAgIEFOR0xFX1RSWShlbnN1
cmVSZW5kZXJUYXJnZXQoKSk7CiAgICAgICAgIGlmIChpc1ZhbGlkTGV2ZWwobGV2ZWwpKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBlcnJvciA9IHVwZGF0ZVN0b3JhZ2VMZXZlbChsZXZlbCk7Ci0g
ICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZXJyb3Ig
PSBtUmVuZGVyZXItPmNvcHlJbWFnZTNEKHNvdXJjZSwgc291cmNlQXJlYSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZv
KGdldEJhc2VMZXZlbEludGVybmFsRm9ybWF0KCkpLmZvcm1hdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0T2Zmc2V0LCBtVGV4U3RvcmFnZSwgbGV2ZWwp
OwotICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBBTkdM
RV9UUlkodXBkYXRlU3RvcmFnZUxldmVsKGxldmVsKSk7CisgICAgICAgICAgICBBTkdMRV9UUlko
bVJlbmRlcmVyLT5jb3B5SW1hZ2UzRCgKKyAgICAgICAgICAgICAgICBzb3VyY2UsIHNvdXJjZUFy
ZWEsIGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oZ2V0QmFzZUxldmVsSW50ZXJuYWxGb3JtYXQo
KSkuZm9ybWF0LAorICAgICAgICAgICAgICAgIGRlc3RPZmZzZXQsIG1UZXhTdG9yYWdlLCBsZXZl
bCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yMTU5LDcgKzIwMTYsNyBAQCBnbDo6RXJyb3Ig
VGV4dHVyZUQzRF8zRDo6c2V0U3RvcmFnZShHTGVuCiAgICAgfQogCiAgICAgLy8gVE9ETyhnZW9m
ZmxhbmcpOiBWZXJpZnkgc3RvcmFnZSBjcmVhdGlvbiBoYWQgbm8gZXJyb3JzCi0gICAgYm9vbCBy
ZW5kZXJUYXJnZXQgPSBJc1JlbmRlclRhcmdldFVzYWdlKG1Vc2FnZSk7CisgICAgYm9vbCByZW5k
ZXJUYXJnZXQgPSBJc1JlbmRlclRhcmdldFVzYWdlKG1TdGF0ZS5nZXRVc2FnZSgpKTsKICAgICBU
ZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSA9CiAgICAgICAgIG1SZW5kZXJlci0+Y3JlYXRlVGV4dHVy
ZVN0b3JhZ2UzRChpbnRlcm5hbEZvcm1hdCwgcmVuZGVyVGFyZ2V0LCBzaXplLndpZHRoLCBzaXpl
LmhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUu
ZGVwdGgsIHN0YXRpY19jYXN0PGludD4obGV2ZWxzKSk7CkBAIC0yMTcxLDE2ICsyMDI4LDExIEBA
IGdsOjpFcnJvciBUZXh0dXJlRDNEXzNEOjpzZXRTdG9yYWdlKEdMZW4KICAgICAgICAgcmV0dXJu
IGVycm9yOwogICAgIH0KIAotICAgIGVycm9yID0gdXBkYXRlU3RvcmFnZSgpOwotCi0gICAgaWYg
KGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Cisg
ICAgQU5HTEVfVFJZKHVwZGF0ZVN0b3JhZ2UoKSk7CiAKICAgICBtSW1tdXRhYmxlID0gdHJ1ZTsK
IAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9F
cnJvcigpOwogfQogCiB2b2lkIFRleHR1cmVEM0RfM0Q6OmJpbmRUZXhJbWFnZShlZ2w6OlN1cmZh
Y2UgKnN1cmZhY2UpCkBAIC0yMTkzLDE2ICsyMDQ1LDE3IEBAIHZvaWQgVGV4dHVyZUQzRF8zRDo6
cmVsZWFzZVRleEltYWdlKCkKICAgICBVTlJFQUNIQUJMRSgpOwogfQogCi0KLXZvaWQgVGV4dHVy
ZUQzRF8zRDo6aW5pdE1pcG1hcHNJbWFnZXMoKQordm9pZCBUZXh0dXJlRDNEXzNEOjppbml0TWlw
bWFwSW1hZ2VzKCkKIHsKLSAgICAvLyBQdXJnZSBhcnJheSBsZXZlbHMgMSB0aHJvdWdoIHEgYW5k
IHJlc2V0IHRoZW0gdG8gcmVwcmVzZW50IHRoZSBnZW5lcmF0ZWQgbWlwbWFwIGxldmVscy4KLSAg
ICBpbnQgbGV2ZWxDb3VudCA9IG1pcExldmVscygpOwotICAgIGZvciAoaW50IGxldmVsID0gMTsg
bGV2ZWwgPCBsZXZlbENvdW50OyBsZXZlbCsrKQotICAgIHsKLSAgICAgICAgZ2w6OkV4dGVudHMg
bGV2ZWxTaXplKHN0ZDo6bWF4KGdldEJhc2VMZXZlbFdpZHRoKCkgPj4gbGV2ZWwsIDEpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXgoZ2V0QmFzZUxldmVsSGVpZ2h0KCkg
Pj4gbGV2ZWwsIDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXgoZ2V0
QmFzZUxldmVsRGVwdGgoKSA+PiBsZXZlbCwgMSkpOworICAgIGNvbnN0IEdMdWludCBiYXNlTGV2
ZWwgPSBtU3RhdGUuZ2V0RWZmZWN0aXZlQmFzZUxldmVsKCk7CisgICAgY29uc3QgR0x1aW50IG1h
eExldmVsICA9IG1TdGF0ZS5nZXRNaXBtYXBNYXhMZXZlbCgpOworICAgIC8vIFB1cmdlIGFycmF5
IGxldmVscyBiYXNlTGV2ZWwgKyAxIHRocm91Z2ggcSBhbmQgcmVzZXQgdGhlbSB0byByZXByZXNl
bnQgdGhlIGdlbmVyYXRlZCBtaXBtYXAKKyAgICAvLyBsZXZlbHMuCisgICAgZm9yIChHTHVpbnQg
bGV2ZWwgPSBiYXNlTGV2ZWwgKyAxOyBsZXZlbCA8PSBtYXhMZXZlbDsgbGV2ZWwrKykKKyAgICB7
CisgICAgICAgIGdsOjpFeHRlbnRzIGxldmVsU2l6ZShzdGQ6Om1heChnZXRMZXZlbFplcm9XaWR0
aCgpID4+IGxldmVsLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4
KGdldExldmVsWmVyb0hlaWdodCgpID4+IGxldmVsLCAxKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6bWF4KGdldExldmVsWmVyb0RlcHRoKCkgPj4gbGV2ZWwsIDEpKTsKICAg
ICAgICAgcmVkZWZpbmVJbWFnZShsZXZlbCwgZ2V0QmFzZUxldmVsSW50ZXJuYWxGb3JtYXQoKSwg
bGV2ZWxTaXplKTsKICAgICB9CiB9CkBAIC0yMjEwLDI3ICsyMDYzLDE1IEBAIHZvaWQgVGV4dHVy
ZUQzRF8zRDo6aW5pdE1pcG1hcHNJbWFnZXMoKQogZ2w6OkVycm9yIFRleHR1cmVEM0RfM0Q6Omdl
dFJlbmRlclRhcmdldChjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsIFJlbmRlclRhcmdldEQz
RCAqKm91dFJUKQogewogICAgIC8vIGVuc3VyZSB0aGUgdW5kZXJseWluZyB0ZXh0dXJlIGlzIGNy
ZWF0ZWQKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBlbnN1cmVSZW5kZXJUYXJnZXQoKTsKLSAgICBp
ZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0K
KyAgICBBTkdMRV9UUlkoZW5zdXJlUmVuZGVyVGFyZ2V0KCkpOwogCiAgICAgaWYgKGluZGV4Lmhh
c0xheWVyKCkpCiAgICAgewotICAgICAgICBlcnJvciA9IHVwZGF0ZVN0b3JhZ2UoKTsKLSAgICAg
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVy
cm9yOwotICAgICAgICB9CisgICAgICAgIEFOR0xFX1RSWSh1cGRhdGVTdG9yYWdlKCkpOwogICAg
IH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBlcnJvciA9IHVwZGF0ZVN0b3JhZ2VMZXZlbChp
bmRleC5taXBJbmRleCk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBBTkdMRV9UUlko
dXBkYXRlU3RvcmFnZUxldmVsKGluZGV4Lm1pcEluZGV4KSk7CiAgICAgfQogCiAgICAgcmV0dXJu
IG1UZXhTdG9yYWdlLT5nZXRSZW5kZXJUYXJnZXQoaW5kZXgsIG91dFJUKTsKQEAgLTIyNDUsMjEg
KzIwODYsMTcgQEAgZ2w6OkVycm9yIFRleHR1cmVEM0RfM0Q6OmluaXRpYWxpemVTdG9yYQogICAg
IH0KIAogICAgIC8vIGRvIG5vdCBhdHRlbXB0IHRvIGNyZWF0ZSBzdG9yYWdlIGZvciBub25leGlz
dGFudCBkYXRhCi0gICAgaWYgKCFpc0xldmVsQ29tcGxldGUoMCkpCisgICAgaWYgKCFpc0xldmVs
Q29tcGxldGUoZ2V0QmFzZUxldmVsKCkpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9OT19FUlJPUik7CiAgICAgfQogCi0gICAgYm9vbCBjcmVhdGVSZW5kZXJUYXJnZXQgPSAo
cmVuZGVyVGFyZ2V0IHx8IElzUmVuZGVyVGFyZ2V0VXNhZ2UobVVzYWdlKSk7CisgICAgYm9vbCBj
cmVhdGVSZW5kZXJUYXJnZXQgPSAocmVuZGVyVGFyZ2V0IHx8IElzUmVuZGVyVGFyZ2V0VXNhZ2Uo
bVN0YXRlLmdldFVzYWdlKCkpKTsKIAogICAgIFRleHR1cmVTdG9yYWdlICpzdG9yYWdlID0gTlVM
TDsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBjcmVhdGVDb21wbGV0ZVN0b3JhZ2UoY3JlYXRlUmVu
ZGVyVGFyZ2V0LCAmc3RvcmFnZSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKGNyZWF0ZUNvbXBsZXRl
U3RvcmFnZShjcmVhdGVSZW5kZXJUYXJnZXQsICZzdG9yYWdlKSk7CiAKLSAgICBlcnJvciA9IHNl
dENvbXBsZXRlVGV4U3RvcmFnZShzdG9yYWdlKTsKKyAgICBnbDo6RXJyb3IgZXJyb3IgPSBzZXRD
b21wbGV0ZVRleFN0b3JhZ2Uoc3RvcmFnZSk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAg
ICB7CiAgICAgICAgIFNhZmVEZWxldGUoc3RvcmFnZSk7CkBAIC0yMjY5LDIwICsyMTA2LDE2IEBA
IGdsOjpFcnJvciBUZXh0dXJlRDNEXzNEOjppbml0aWFsaXplU3RvcmEKICAgICBBU1NFUlQobVRl
eFN0b3JhZ2UpOwogCiAgICAgLy8gZmx1c2ggaW1hZ2UgZGF0YSB0byB0aGUgc3RvcmFnZQotICAg
IGVycm9yID0gdXBkYXRlU3RvcmFnZSgpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAg
ewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWSh1cGRhdGVTdG9y
YWdlKCkpOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJu
IGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlRDNEXzNEOjpjcmVhdGVDb21w
bGV0ZVN0b3JhZ2UoYm9vbCByZW5kZXJUYXJnZXQsIFRleHR1cmVTdG9yYWdlICoqb3V0U3RvcmFn
ZSkgY29uc3QKIHsKLSAgICBHTHNpemVpIHdpZHRoID0gZ2V0QmFzZUxldmVsV2lkdGgoKTsKLSAg
ICBHTHNpemVpIGhlaWdodCA9IGdldEJhc2VMZXZlbEhlaWdodCgpOwotICAgIEdMc2l6ZWkgZGVw
dGggPSBnZXRCYXNlTGV2ZWxEZXB0aCgpOworICAgIEdMc2l6ZWkgd2lkdGggICAgICAgICA9IGdl
dExldmVsWmVyb1dpZHRoKCk7CisgICAgR0xzaXplaSBoZWlnaHQgICAgICAgID0gZ2V0TGV2ZWxa
ZXJvSGVpZ2h0KCk7CisgICAgR0xzaXplaSBkZXB0aCAgICAgICAgID0gZ2V0TGV2ZWxaZXJvRGVw
dGgoKTsKICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQgPSBnZXRCYXNlTGV2ZWxJbnRlcm5hbEZv
cm1hdCgpOwogCiAgICAgQVNTRVJUKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwICYmIGRlcHRoID4g
MCk7CkBAIC0yMzA1LDcgKzIxMzgsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF8zRDo6c2V0Q29t
cGxldGVUZXhTCiAgICAgLy8gV2UgZG8gbm90IHN1cHBvcnQgbWFuYWdlZCAzRCBzdG9yYWdlLCBh
cyB0aGF0IGlzIEQzRDkvRVMyLW9ubHkKICAgICBBU1NFUlQoIW1UZXhTdG9yYWdlLT5pc01hbmFn
ZWQoKSk7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4g
Z2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFRleHR1cmVEM0RfM0Q6OnVwZGF0ZVN0b3Jh
Z2UoKQpAQCAtMjMxNiwxNSArMjE0OSwxMSBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF8zRDo6dXBk
YXRlU3RvcmFnZSgpCiAgICAgewogICAgICAgICBpZiAobUltYWdlQXJyYXlbbGV2ZWxdLT5pc0Rp
cnR5KCkgJiYgaXNMZXZlbENvbXBsZXRlKGxldmVsKSkKICAgICAgICAgewotICAgICAgICAgICAg
Z2w6OkVycm9yIGVycm9yID0gdXBkYXRlU3RvcmFnZUxldmVsKGxldmVsKTsKLSAgICAgICAgICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIGVycm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgQU5HTEVfVFJZKHVwZGF0ZVN0
b3JhZ2VMZXZlbChsZXZlbCkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGJvb2wg
VGV4dHVyZUQzRF8zRDo6aXNWYWxpZExldmVsKGludCBsZXZlbCkgY29uc3QKQEAgLTIzNDEsMTYg
KzIxNzAsMTYgQEAgYm9vbCBUZXh0dXJlRDNEXzNEOjppc0xldmVsQ29tcGxldGUoaW50IAogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBHTHNpemVpIHdpZHRoID0gZ2V0QmFzZUxl
dmVsV2lkdGgoKTsKLSAgICBHTHNpemVpIGhlaWdodCA9IGdldEJhc2VMZXZlbEhlaWdodCgpOwot
ICAgIEdMc2l6ZWkgZGVwdGggPSBnZXRCYXNlTGV2ZWxEZXB0aCgpOworICAgIEdMc2l6ZWkgd2lk
dGggID0gZ2V0TGV2ZWxaZXJvV2lkdGgoKTsKKyAgICBHTHNpemVpIGhlaWdodCA9IGdldExldmVs
WmVyb0hlaWdodCgpOworICAgIEdMc2l6ZWkgZGVwdGggID0gZ2V0TGV2ZWxaZXJvRGVwdGgoKTsK
IAogICAgIGlmICh3aWR0aCA8PSAwIHx8IGhlaWdodCA8PSAwIHx8IGRlcHRoIDw9IDApCiAgICAg
ewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKGxldmVsID09IDApCisg
ICAgaWYgKGxldmVsID09IHN0YXRpY19jYXN0PGludD4oZ2V0QmFzZUxldmVsKCkpKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjM5NCwyOCArMjIyMywyNCBAQCBnbDo6
RXJyb3IgVGV4dHVyZUQzRF8zRDo6dXBkYXRlU3RvcmFnZUxlCiAgICAgewogICAgICAgICBnbDo6
SW1hZ2VJbmRleCBpbmRleCA9IGdsOjpJbWFnZUluZGV4OjpNYWtlM0QobGV2ZWwpOwogICAgICAg
ICBnbDo6Qm94IHJlZ2lvbigwLCAwLCAwLCBnZXRXaWR0aChsZXZlbCksIGdldEhlaWdodChsZXZl
bCksIGdldERlcHRoKGxldmVsKSk7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGNvbW1pdFJl
Z2lvbihpbmRleCwgcmVnaW9uKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9CisgICAgICAgIEFOR0xF
X1RSWShjb21taXRSZWdpb24oaW5kZXgsIHJlZ2lvbikpOwogICAgIH0KIAotICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiB2
b2lkIFRleHR1cmVEM0RfM0Q6OnJlZGVmaW5lSW1hZ2UoR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRl
cm5hbGZvcm1hdCwgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUpCiB7CiAgICAgLy8gSWYgdGhlcmUg
Y3VycmVudGx5IGlzIGEgY29ycmVzcG9uZGluZyBzdG9yYWdlIHRleHR1cmUgaW1hZ2UsIGl0IGhh
cyB0aGVzZSBwYXJhbWV0ZXJzCi0gICAgY29uc3QgaW50IHN0b3JhZ2VXaWR0aCA9IHN0ZDo6bWF4
KDEsIGdldEJhc2VMZXZlbFdpZHRoKCkgPj4gbGV2ZWwpOwotICAgIGNvbnN0IGludCBzdG9yYWdl
SGVpZ2h0ID0gc3RkOjptYXgoMSwgZ2V0QmFzZUxldmVsSGVpZ2h0KCkgPj4gbGV2ZWwpOwotICAg
IGNvbnN0IGludCBzdG9yYWdlRGVwdGggPSBzdGQ6Om1heCgxLCBnZXRCYXNlTGV2ZWxEZXB0aCgp
ID4+IGxldmVsKTsKLSAgICBjb25zdCBHTGVudW0gc3RvcmFnZUZvcm1hdCA9IGdldEJhc2VMZXZl
bEludGVybmFsRm9ybWF0KCk7CisgICAgY29uc3QgaW50IHN0b3JhZ2VXaWR0aCAgPSBzdGQ6Om1h
eCgxLCBnZXRMZXZlbFplcm9XaWR0aCgpID4+IGxldmVsKTsKKyAgICBjb25zdCBpbnQgc3RvcmFn
ZUhlaWdodCA9IHN0ZDo6bWF4KDEsIGdldExldmVsWmVyb0hlaWdodCgpID4+IGxldmVsKTsKKyAg
ICBjb25zdCBpbnQgc3RvcmFnZURlcHRoICA9IHN0ZDo6bWF4KDEsIGdldExldmVsWmVyb0RlcHRo
KCkgPj4gbGV2ZWwpOwogCiAgICAgbUltYWdlQXJyYXlbbGV2ZWxdLT5yZWRlZmluZShHTF9URVhU
VVJFXzNELCBpbnRlcm5hbGZvcm1hdCwgc2l6ZSwgZmFsc2UpOwogCiAgICAgaWYgKG1UZXhTdG9y
YWdlKQogICAgIHsKKyAgICAgICAgY29uc3QgR0xlbnVtIHN0b3JhZ2VGb3JtYXQgPSBnZXRCYXNl
TGV2ZWxJbnRlcm5hbEZvcm1hdCgpOwogICAgICAgICBjb25zdCBpbnQgc3RvcmFnZUxldmVscyA9
IG1UZXhTdG9yYWdlLT5nZXRMZXZlbENvdW50KCk7CiAKICAgICAgICAgaWYgKChsZXZlbCA+PSBz
dG9yYWdlTGV2ZWxzICYmIHN0b3JhZ2VMZXZlbHMgIT0gMCkgfHwKQEAgLTI0MjQsMTMgKzIyNDks
OCBAQCB2b2lkIFRleHR1cmVEM0RfM0Q6OnJlZGVmaW5lSW1hZ2UoR0xpbnQgCiAgICAgICAgICAg
ICBzaXplLmRlcHRoICE9IHN0b3JhZ2VEZXB0aCB8fAogICAgICAgICAgICAgaW50ZXJuYWxmb3Jt
YXQgIT0gc3RvcmFnZUZvcm1hdCkgICAvLyBEaXNjYXJkIG1pc21hdGNoZWQgc3RvcmFnZQogICAg
ICAgICB7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGdsOjpJTVBMRU1FTlRBVElP
Tl9NQVhfVEVYVFVSRV9MRVZFTFM7IGkrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBtSW1hZ2VBcnJheVtpXS0+bWFya0RpcnR5KCk7Ci0gICAgICAgICAgICB9Ci0KKyAgICAgICAg
ICAgIG1hcmtBbGxJbWFnZXNEaXJ0eSgpOwogICAgICAgICAgICAgU2FmZURlbGV0ZShtVGV4U3Rv
cmFnZSk7Ci0gICAgICAgICAgICBtRGlydHlJbWFnZXMgPSB0cnVlOwogICAgICAgICB9CiAgICAg
fQogfQpAQCAtMjQ1Myw4ICsyMjczLDIzIEBAIGJvb2wgVGV4dHVyZUQzRF8zRDo6aXNWYWxpZElu
ZGV4KGNvbnN0IGcKICAgICAgICAgICAgIGluZGV4Lm1pcEluZGV4ID49IDAgJiYgaW5kZXgubWlw
SW5kZXggPCBtVGV4U3RvcmFnZS0+Z2V0TGV2ZWxDb3VudCgpKTsKIH0KIAotVGV4dHVyZUQzRF8y
REFycmF5OjpUZXh0dXJlRDNEXzJEQXJyYXkoUmVuZGVyZXJEM0QgKnJlbmRlcmVyKQotICAgIDog
VGV4dHVyZUQzRChyZW5kZXJlcikKK3ZvaWQgVGV4dHVyZUQzRF8zRDo6bWFya0FsbEltYWdlc0Rp
cnR5KCkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhf
VEVYVFVSRV9MRVZFTFM7IGkrKykKKyAgICB7CisgICAgICAgIG1JbWFnZUFycmF5W2ldLT5tYXJr
RGlydHkoKTsKKyAgICB9CisgICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKK30KKworR0xpbnQgVGV4
dHVyZUQzRF8zRDo6Z2V0TGV2ZWxaZXJvRGVwdGgoKSBjb25zdAoreworICAgIEFTU0VSVChnbDo6
Q291bnRMZWFkaW5nWmVyb3Moc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdldEJhc2VMZXZlbERlcHRo
KCkpKSA+IGdldEJhc2VMZXZlbCgpKTsKKyAgICByZXR1cm4gZ2V0QmFzZUxldmVsRGVwdGgoKSA8
PCBnZXRCYXNlTGV2ZWwoKTsKK30KKworVGV4dHVyZUQzRF8yREFycmF5OjpUZXh0dXJlRDNEXzJE
QXJyYXkoY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmc3RhdGUsIFJlbmRlcmVyRDNEICpyZW5kZXJl
cikKKyAgICA6IFRleHR1cmVEM0Qoc3RhdGUsIHJlbmRlcmVyKQogewogICAgIGZvciAoaW50IGxl
dmVsID0gMDsgbGV2ZWwgPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTOyAr
K2xldmVsKQogICAgIHsKQEAgLTI1MzgsMjEgKzIzNzMsMTkgQEAgZ2w6OkVycm9yIFRleHR1cmVE
M0RfMkRBcnJheTo6c2V0SW1hZ2UoRwogICAgIHJlZGVmaW5lSW1hZ2UobGV2ZWwsIHNpemVkSW50
ZXJuYWxGb3JtYXQsIHNpemUpOwogCiAgICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZmb3Jt
YXRJbmZvID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhzaXplZEludGVybmFsRm9ybWF0KTsK
LSAgICBHTHNpemVpIGlucHV0RGVwdGhQaXRjaCA9IGZvcm1hdEluZm8uY29tcHV0ZURlcHRoUGl0
Y2goCi0gICAgICAgIHR5cGUsIHNpemUud2lkdGgsIHNpemUuaGVpZ2h0LCB1bnBhY2suYWxpZ25t
ZW50LCB1bnBhY2sucm93TGVuZ3RoLCB1bnBhY2suaW1hZ2VIZWlnaHQpOworICAgIEdMc2l6ZWkg
aW5wdXREZXB0aFBpdGNoICAgICAgICAgICAgICA9IDA7CisgICAgQU5HTEVfVFJZX1JFU1VMVChm
b3JtYXRJbmZvLmNvbXB1dGVEZXB0aFBpdGNoKHR5cGUsIHNpemUud2lkdGgsIHNpemUuaGVpZ2h0
LCB1bnBhY2suYWxpZ25tZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnBhY2sucm93TGVuZ3RoLCB1bnBhY2suaW1hZ2VIZWlnaHQpLAorICAg
ICAgICAgICAgICAgICAgICAgaW5wdXREZXB0aFBpdGNoKTsKIAogICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgc2l6ZS5kZXB0aDsgaSsrKQogICAgIHsKICAgICAgICAgY29uc3QgcHRyZGlmZl90IGxh
eWVyT2Zmc2V0ID0gKGlucHV0RGVwdGhQaXRjaCAqIGkpOwogICAgICAgICBnbDo6SW1hZ2VJbmRl
eCBpbmRleCA9IGdsOjpJbWFnZUluZGV4OjpNYWtlMkRBcnJheShsZXZlbCwgaSk7Ci0gICAgICAg
IGdsOjpFcnJvciBlcnJvciA9IHNldEltYWdlSW1wbChpbmRleCwgdHlwZSwgdW5wYWNrLCBwaXhl
bHMsIGxheWVyT2Zmc2V0KTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9CisgICAgICAgIEFOR0xFX1RS
WShzZXRJbWFnZUltcGwoaW5kZXgsIHR5cGUsIHVucGFjaywgcGl4ZWxzLCBsYXllck9mZnNldCkp
OwogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVy
biBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZUQzRF8yREFycmF5OjpzZXRT
dWJJbWFnZShHTGVudW0gdGFyZ2V0LApAQCAtMjU2Niw4ICsyMzk5LDEwIEBAIGdsOjpFcnJvciBU
ZXh0dXJlRDNEXzJEQXJyYXk6OnNldFN1YkltYWcKICAgICBBU1NFUlQodGFyZ2V0ID09IEdMX1RF
WFRVUkVfMkRfQVJSQVkpOwogICAgIEdMaW50IGxldmVsICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IHN0YXRpY19jYXN0PEdMaW50PihpbWFnZUxldmVsKTsKICAgICBjb25zdCBnbDo6SW50ZXJu
YWxGb3JtYXQgJmZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGdldEludGVy
bmFsRm9ybWF0KGxldmVsKSk7Ci0gICAgR0xzaXplaSBpbnB1dERlcHRoUGl0Y2ggPSBmb3JtYXRJ
bmZvLmNvbXB1dGVEZXB0aFBpdGNoKAotICAgICAgICB0eXBlLCBhcmVhLndpZHRoLCBhcmVhLmhl
aWdodCwgdW5wYWNrLmFsaWdubWVudCwgdW5wYWNrLnJvd0xlbmd0aCwgdW5wYWNrLmltYWdlSGVp
Z2h0KTsKKyAgICBHTHNpemVpIGlucHV0RGVwdGhQaXRjaCAgICAgICAgICAgICAgPSAwOworICAg
IEFOR0xFX1RSWV9SRVNVTFQoZm9ybWF0SW5mby5jb21wdXRlRGVwdGhQaXRjaCh0eXBlLCBhcmVh
LndpZHRoLCBhcmVhLmhlaWdodCwgdW5wYWNrLmFsaWdubWVudCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5wYWNrLnJvd0xlbmd0aCwgdW5wYWNr
LmltYWdlSGVpZ2h0KSwKKyAgICAgICAgICAgICAgICAgICAgIGlucHV0RGVwdGhQaXRjaCk7CiAK
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZWEuZGVwdGg7IGkrKykKICAgICB7CkBAIC0yNTc3
LDE0ICsyNDEyLDExIEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEXzJEQXJyYXk6OnNldFN1YkltYWcK
ICAgICAgICAgZ2w6OkJveCBsYXllckFyZWEoYXJlYS54LCBhcmVhLnksIDAsIGFyZWEud2lkdGgs
IGFyZWEuaGVpZ2h0LCAxKTsKIAogICAgICAgICBnbDo6SW1hZ2VJbmRleCBpbmRleCA9IGdsOjpJ
bWFnZUluZGV4OjpNYWtlMkRBcnJheShsZXZlbCwgbGF5ZXIpOwotICAgICAgICBnbDo6RXJyb3Ig
ZXJyb3IgPSBUZXh0dXJlRDNEOjpzdWJJbWFnZShpbmRleCwgbGF5ZXJBcmVhLCBmb3JtYXQsIHR5
cGUsIHVucGFjaywgcGl4ZWxzLCBsYXllck9mZnNldCk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQor
ICAgICAgICBBTkdMRV9UUlkoCisgICAgICAgICAgICBUZXh0dXJlRDNEOjpzdWJJbWFnZShpbmRl
eCwgbGF5ZXJBcmVhLCBmb3JtYXQsIHR5cGUsIHVucGFjaywgcGl4ZWxzLCBsYXllck9mZnNldCkp
OwogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVy
biBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZUQzRF8yREFycmF5OjpzZXRD
b21wcmVzc2VkSW1hZ2UoR0xlbnVtIHRhcmdldCwKQEAgLTI2MDIsMjIgKzI0MzQsMjAgQEAgZ2w6
OkVycm9yIFRleHR1cmVEM0RfMkRBcnJheTo6c2V0Q29tcHJlcwogICAgIHJlZGVmaW5lSW1hZ2Uo
bGV2ZWwsIGludGVybmFsRm9ybWF0LCBzaXplKTsKIAogICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZv
cm1hdCAmZm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oaW50ZXJuYWxGb3Jt
YXQpOwotICAgIEdMc2l6ZWkgaW5wdXREZXB0aFBpdGNoID0KLSAgICAgICAgZm9ybWF0SW5mby5j
b21wdXRlRGVwdGhQaXRjaChHTF9VTlNJR05FRF9CWVRFLCBzaXplLndpZHRoLCBzaXplLmhlaWdo
dCwgMSwgMCwgMCk7CisgICAgR0xzaXplaSBpbnB1dERlcHRoUGl0Y2ggICAgICAgICAgICAgID0g
MDsKKyAgICBBTkdMRV9UUllfUkVTVUxUKAorICAgICAgICBmb3JtYXRJbmZvLmNvbXB1dGVEZXB0
aFBpdGNoKEdMX1VOU0lHTkVEX0JZVEUsIHNpemUud2lkdGgsIHNpemUuaGVpZ2h0LCAxLCAwLCAw
KSwKKyAgICAgICAgaW5wdXREZXB0aFBpdGNoKTsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
c2l6ZS5kZXB0aDsgaSsrKQogICAgIHsKICAgICAgICAgY29uc3QgcHRyZGlmZl90IGxheWVyT2Zm
c2V0ID0gKGlucHV0RGVwdGhQaXRjaCAqIGkpOwogCiAgICAgICAgIGdsOjpJbWFnZUluZGV4IGlu
ZGV4ID0gZ2w6OkltYWdlSW5kZXg6Ok1ha2UyREFycmF5KGxldmVsLCBpKTsKLSAgICAgICAgZ2w6
OkVycm9yIGVycm9yID0gc2V0Q29tcHJlc3NlZEltYWdlSW1wbChpbmRleCwgdW5wYWNrLCBwaXhl
bHMsIGxheWVyT2Zmc2V0KTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9CisgICAgICAgIEFOR0xFX1RS
WShzZXRDb21wcmVzc2VkSW1hZ2VJbXBsKGluZGV4LCB1bnBhY2ssIHBpeGVscywgbGF5ZXJPZmZz
ZXQpKTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICBy
ZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFRleHR1cmVEM0RfMkRBcnJheTo6
c2V0Q29tcHJlc3NlZFN1YkltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3Qg
Z2w6OkJveCAmYXJlYSwgR0xlbnVtIGZvcm1hdCwKQEAgLTI2MjYsOCArMjQ1NiwxMCBAQCBnbDo6
RXJyb3IgVGV4dHVyZUQzRF8yREFycmF5OjpzZXRDb21wcmVzCiAgICAgQVNTRVJUKHRhcmdldCA9
PSBHTF9URVhUVVJFXzJEX0FSUkFZKTsKIAogICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAm
Zm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oZm9ybWF0KTsKLSAgICBHTHNp
emVpIGlucHV0RGVwdGhQaXRjaCA9Ci0gICAgICAgIGZvcm1hdEluZm8uY29tcHV0ZURlcHRoUGl0
Y2goR0xfVU5TSUdORURfQllURSwgYXJlYS53aWR0aCwgYXJlYS5oZWlnaHQsIDEsIDAsIDApOwor
ICAgIEdMc2l6ZWkgaW5wdXREZXB0aFBpdGNoICAgICAgICAgICAgICA9IDA7CisgICAgQU5HTEVf
VFJZX1JFU1VMVCgKKyAgICAgICAgZm9ybWF0SW5mby5jb21wdXRlRGVwdGhQaXRjaChHTF9VTlNJ
R05FRF9CWVRFLCBhcmVhLndpZHRoLCBhcmVhLmhlaWdodCwgMSwgMCwgMCksCisgICAgICAgIGlu
cHV0RGVwdGhQaXRjaCk7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZWEuZGVwdGg7IGkr
KykKICAgICB7CkBAIC0yNjM3LDE3ICsyNDY5LDkgQEAgZ2w6OkVycm9yIFRleHR1cmVEM0RfMkRB
cnJheTo6c2V0Q29tcHJlcwogICAgICAgICBnbDo6Qm94IGxheWVyQXJlYShhcmVhLngsIGFyZWEu
eSwgMCwgYXJlYS53aWR0aCwgYXJlYS5oZWlnaHQsIDEpOwogCiAgICAgICAgIGdsOjpJbWFnZUlu
ZGV4IGluZGV4ID0gZ2w6OkltYWdlSW5kZXg6Ok1ha2UyREFycmF5KHN0YXRpY19jYXN0PEdMaW50
PihsZXZlbCksIGxheWVyKTsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gVGV4dHVyZUQzRDo6
c3ViSW1hZ2VDb21wcmVzc2VkKGluZGV4LCBsYXllckFyZWEsIGZvcm1hdCwgdW5wYWNrLCBwaXhl
bHMsIGxheWVyT2Zmc2V0KTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9Ci0KLSAgICAgICAgZXJyb3Ig
PSBjb21taXRSZWdpb24oaW5kZXgsIGxheWVyQXJlYSk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQor
ICAgICAgICBBTkdMRV9UUlkoCisgICAgICAgICAgICBUZXh0dXJlRDNEOjpzdWJJbWFnZUNvbXBy
ZXNzZWQoaW5kZXgsIGxheWVyQXJlYSwgZm9ybWF0LCB1bnBhY2ssIHBpeGVscywgbGF5ZXJPZmZz
ZXQpKTsKKyAgICAgICAgQU5HTEVfVFJZKGNvbW1pdFJlZ2lvbihpbmRleCwgbGF5ZXJBcmVhKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CkBAIC0yNjc0LDM3
ICsyNDk4LDIxIEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEXzJEQXJyYXk6OmNvcHlTdWJJbWEKICAg
ICBpZiAoY2FuQ3JlYXRlUmVuZGVyVGFyZ2V0Rm9ySW1hZ2UoaW5kZXgpKQogICAgIHsKICAgICAg
ICAgZ2w6Ok9mZnNldCBkZXN0TGF5ZXJPZmZzZXQoZGVzdE9mZnNldC54LCBkZXN0T2Zmc2V0Lnks
IDApOwotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBtSW1hZ2VBcnJheVtsZXZlbF1bZGVzdE9m
ZnNldC56XS0+Y29weUZyb21GcmFtZWJ1ZmZlcihkZXN0TGF5ZXJPZmZzZXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNvdXJjZUFyZWEsIHNvdXJjZSk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQot
CisgICAgICAgIEFOR0xFX1RSWShtSW1hZ2VBcnJheVtsZXZlbF1bZGVzdE9mZnNldC56XS0+Y29w
eUZyb21GcmFtZWJ1ZmZlcihkZXN0TGF5ZXJPZmZzZXQsIHNvdXJjZUFyZWEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzb3VyY2UpKTsKICAgICAgICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKICAgICB9CiAgICAg
ZWxzZQogICAgIHsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gZW5zdXJlUmVuZGVyVGFyZ2V0
KCk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBBTkdMRV9UUlkoZW5zdXJlUmVuZGVy
VGFyZ2V0KCkpOwogCiAgICAgICAgIGlmIChpc1ZhbGlkTGV2ZWwobGV2ZWwpKQogICAgICAgICB7
Ci0gICAgICAgICAgICBlcnJvciA9IHVwZGF0ZVN0b3JhZ2VMZXZlbChsZXZlbCk7Ci0gICAgICAg
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IHJldHVybiBlcnJvcjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZXJyb3IgPSBtUmVu
ZGVyZXItPmNvcHlJbWFnZTJEQXJyYXkoc291cmNlLCBzb3VyY2VBcmVhLCBnbDo6R2V0SW50ZXJu
YWxGb3JtYXRJbmZvKGdldEludGVybmFsRm9ybWF0KDApKS5mb3JtYXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0T2Zmc2V0LCBtVGV4U3RvcmFn
ZSwgbGV2ZWwpOwotICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAgICB9CisgICAgICAg
ICAgICBBTkdMRV9UUlkodXBkYXRlU3RvcmFnZUxldmVsKGxldmVsKSk7CisgICAgICAgICAgICBB
TkdMRV9UUlkobVJlbmRlcmVyLT5jb3B5SW1hZ2UyREFycmF5KAorICAgICAgICAgICAgICAgIHNv
dXJjZSwgc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJ
bmZvKGdldEludGVybmFsRm9ybWF0KGdldEJhc2VMZXZlbCgpKSkuZm9ybWF0LCBkZXN0T2Zmc2V0
LAorICAgICAgICAgICAgICAgIG1UZXhTdG9yYWdlLCBsZXZlbCkpOwogICAgICAgICB9CiAgICAg
fQogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwpAQCAtMjczOCw3ICsyNTQ2LDcg
QEAgZ2w6OkVycm9yIFRleHR1cmVEM0RfMkRBcnJheTo6c2V0U3RvcmFnZQogICAgIH0KIAogICAg
IC8vIFRPRE8oZ2VvZmZsYW5nKTogVmVyaWZ5IHN0b3JhZ2UgY3JlYXRpb24gaGFkIG5vIGVycm9y
cwotICAgIGJvb2wgcmVuZGVyVGFyZ2V0ID0gSXNSZW5kZXJUYXJnZXRVc2FnZShtVXNhZ2UpOwor
ICAgIGJvb2wgcmVuZGVyVGFyZ2V0ID0gSXNSZW5kZXJUYXJnZXRVc2FnZShtU3RhdGUuZ2V0VXNh
Z2UoKSk7CiAgICAgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UgPQogICAgICAgICBtUmVuZGVyZXIt
PmNyZWF0ZVRleHR1cmVTdG9yYWdlMkRBcnJheShpbnRlcm5hbEZvcm1hdCwgcmVuZGVyVGFyZ2V0
LCBzaXplLndpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplLmhlaWdodCwgc2l6ZS5kZXB0aCwgc3RhdGljX2Nhc3Q8aW50PihsZXZlbHMpKTsK
QEAgLTI3NTAsMTYgKzI1NTgsMTEgQEAgZ2w6OkVycm9yIFRleHR1cmVEM0RfMkRBcnJheTo6c2V0
U3RvcmFnZQogICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgfQogCi0gICAgZXJyb3IgPSB1cGRh
dGVTdG9yYWdlKCk7Ci0KLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkodXBkYXRlU3RvcmFnZSgpKTsKIAog
ICAgIG1JbW11dGFibGUgPSB0cnVlOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJP
Uik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIHZvaWQgVGV4dHVyZUQzRF8yREFy
cmF5OjpiaW5kVGV4SW1hZ2UoZWdsOjpTdXJmYWNlICpzdXJmYWNlKQpAQCAtMjc3MiwxOCArMjU3
NSwyMCBAQCB2b2lkIFRleHR1cmVEM0RfMkRBcnJheTo6cmVsZWFzZVRleEltYWdlCiAgICAgVU5S
RUFDSEFCTEUoKTsKIH0KIAotCi12b2lkIFRleHR1cmVEM0RfMkRBcnJheTo6aW5pdE1pcG1hcHNJ
bWFnZXMoKQordm9pZCBUZXh0dXJlRDNEXzJEQXJyYXk6OmluaXRNaXBtYXBJbWFnZXMoKQogewot
ICAgIGludCBiYXNlV2lkdGggPSBnZXRCYXNlTGV2ZWxXaWR0aCgpOwotICAgIGludCBiYXNlSGVp
Z2h0ID0gZ2V0QmFzZUxldmVsSGVpZ2h0KCk7Ci0gICAgaW50IGJhc2VEZXB0aCA9IGdldExheWVy
Q291bnQoMCk7CisgICAgY29uc3QgR0x1aW50IGJhc2VMZXZlbCA9IG1TdGF0ZS5nZXRFZmZlY3Rp
dmVCYXNlTGV2ZWwoKTsKKyAgICBjb25zdCBHTHVpbnQgbWF4TGV2ZWwgID0gbVN0YXRlLmdldE1p
cG1hcE1heExldmVsKCk7CisgICAgaW50IGJhc2VXaWR0aCAgICAgPSBnZXRMZXZlbFplcm9XaWR0
aCgpOworICAgIGludCBiYXNlSGVpZ2h0ICAgID0gZ2V0TGV2ZWxaZXJvSGVpZ2h0KCk7CisgICAg
aW50IGJhc2VEZXB0aCAgICAgPSBnZXRMYXllckNvdW50KGdldEJhc2VMZXZlbCgpKTsKICAgICBH
TGVudW0gYmFzZUZvcm1hdCA9IGdldEJhc2VMZXZlbEludGVybmFsRm9ybWF0KCk7CiAKLSAgICAv
LyBQdXJnZSBhcnJheSBsZXZlbHMgMSB0aHJvdWdoIHEgYW5kIHJlc2V0IHRoZW0gdG8gcmVwcmVz
ZW50IHRoZSBnZW5lcmF0ZWQgbWlwbWFwIGxldmVscy4KLSAgICBpbnQgbGV2ZWxDb3VudCA9IG1p
cExldmVscygpOwotICAgIGZvciAoaW50IGxldmVsID0gMTsgbGV2ZWwgPCBsZXZlbENvdW50OyBs
ZXZlbCsrKQorICAgIC8vIFB1cmdlIGFycmF5IGxldmVscyBiYXNlTGV2ZWwgKyAxIHRocm91Z2gg
cSBhbmQgcmVzZXQgdGhlbSB0byByZXByZXNlbnQgdGhlIGdlbmVyYXRlZCBtaXBtYXAKKyAgICAv
LyBsZXZlbHMuCisgICAgZm9yIChHTHVpbnQgbGV2ZWwgPSBiYXNlTGV2ZWwgKyAxdTsgbGV2ZWwg
PD0gbWF4TGV2ZWw7IGxldmVsKyspCiAgICAgeworICAgICAgICBBU1NFUlQoKGJhc2VXaWR0aCA+
PiBsZXZlbCkgPiAwIHx8IChiYXNlSGVpZ2h0ID4+IGxldmVsKSA+IDApOwogICAgICAgICBnbDo6
RXh0ZW50cyBsZXZlbExheWVyU2l6ZShzdGQ6Om1heChiYXNlV2lkdGggPj4gbGV2ZWwsIDEpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1heChiYXNlSGVpZ2h0ID4+
IGxldmVsLCAxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZURlcHRo
KTsKQEAgLTI3OTQsMTggKzI1OTksOCBAQCB2b2lkIFRleHR1cmVEM0RfMkRBcnJheTo6aW5pdE1p
cG1hcHNJbWFnCiBnbDo6RXJyb3IgVGV4dHVyZUQzRF8yREFycmF5OjpnZXRSZW5kZXJUYXJnZXQo
Y29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4LCBSZW5kZXJUYXJnZXREM0QgKipvdXRSVCkKIHsK
ICAgICAvLyBlbnN1cmUgdGhlIHVuZGVybHlpbmcgdGV4dHVyZSBpcyBjcmVhdGVkCi0gICAgZ2w6
OkVycm9yIGVycm9yID0gZW5zdXJlUmVuZGVyVGFyZ2V0KCk7Ci0gICAgaWYgKGVycm9yLmlzRXJy
b3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Ci0KLSAgICBlcnJvciA9
IHVwZGF0ZVN0b3JhZ2VMZXZlbChpbmRleC5taXBJbmRleCk7Ci0gICAgaWYgKGVycm9yLmlzRXJy
b3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Ci0KKyAgICBBTkdMRV9U
UlkoZW5zdXJlUmVuZGVyVGFyZ2V0KCkpOworICAgIEFOR0xFX1RSWSh1cGRhdGVTdG9yYWdlTGV2
ZWwoaW5kZXgubWlwSW5kZXgpKTsKICAgICByZXR1cm4gbVRleFN0b3JhZ2UtPmdldFJlbmRlclRh
cmdldChpbmRleCwgb3V0UlQpOwogfQogCkBAIC0yODE0LDI1ICsyNjA5LDIxIEBAIGdsOjpFcnJv
ciBUZXh0dXJlRDNEXzJEQXJyYXk6OmluaXRpYWxpemUKICAgICAvLyBPbmx5IGluaXRpYWxpemUg
dGhlIGZpcnN0IHRpbWUgdGhpcyB0ZXh0dXJlIGlzIHVzZWQgYXMgYSByZW5kZXIgdGFyZ2V0IG9y
IHNoYWRlciByZXNvdXJjZQogICAgIGlmIChtVGV4U3RvcmFnZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3Io
KTsKICAgICB9CiAKICAgICAvLyBkbyBub3QgYXR0ZW1wdCB0byBjcmVhdGUgc3RvcmFnZSBmb3Ig
bm9uZXhpc3RhbnQgZGF0YQotICAgIGlmICghaXNMZXZlbENvbXBsZXRlKDApKQorICAgIGlmICgh
aXNMZXZlbENvbXBsZXRlKGdldEJhc2VMZXZlbCgpKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAg
ICB9CiAKLSAgICBib29sIGNyZWF0ZVJlbmRlclRhcmdldCA9IChyZW5kZXJUYXJnZXQgfHwgSXNS
ZW5kZXJUYXJnZXRVc2FnZShtVXNhZ2UpKTsKKyAgICBib29sIGNyZWF0ZVJlbmRlclRhcmdldCA9
IChyZW5kZXJUYXJnZXQgfHwgSXNSZW5kZXJUYXJnZXRVc2FnZShtU3RhdGUuZ2V0VXNhZ2UoKSkp
OwogCi0gICAgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UgPSBOVUxMOwotICAgIGdsOjpFcnJvciBl
cnJvciA9IGNyZWF0ZUNvbXBsZXRlU3RvcmFnZShjcmVhdGVSZW5kZXJUYXJnZXQsICZzdG9yYWdl
KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9y
OwotICAgIH0KKyAgICBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSA9IG51bGxwdHI7CisgICAgQU5H
TEVfVFJZKGNyZWF0ZUNvbXBsZXRlU3RvcmFnZShjcmVhdGVSZW5kZXJUYXJnZXQsICZzdG9yYWdl
KSk7CiAKLSAgICBlcnJvciA9IHNldENvbXBsZXRlVGV4U3RvcmFnZShzdG9yYWdlKTsKKyAgICBn
bDo6RXJyb3IgZXJyb3IgPSBzZXRDb21wbGV0ZVRleFN0b3JhZ2Uoc3RvcmFnZSk7CiAgICAgaWYg
KGVycm9yLmlzRXJyb3IoKSkKICAgICB7CiAgICAgICAgIFNhZmVEZWxldGUoc3RvcmFnZSk7CkBA
IC0yODQyLDIwICsyNjMzLDE2IEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEXzJEQXJyYXk6OmluaXRp
YWxpemUKICAgICBBU1NFUlQobVRleFN0b3JhZ2UpOwogCiAgICAgLy8gZmx1c2ggaW1hZ2UgZGF0
YSB0byB0aGUgc3RvcmFnZQotICAgIGVycm9yID0gdXBkYXRlU3RvcmFnZSgpOwotICAgIGlmIChl
cnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAg
IEFOR0xFX1RSWSh1cGRhdGVTdG9yYWdlKCkpOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9O
T19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0
dXJlRDNEXzJEQXJyYXk6OmNyZWF0ZUNvbXBsZXRlU3RvcmFnZShib29sIHJlbmRlclRhcmdldCwg
VGV4dHVyZVN0b3JhZ2UgKipvdXRTdG9yYWdlKSBjb25zdAogewotICAgIEdMc2l6ZWkgd2lkdGgg
PSBnZXRCYXNlTGV2ZWxXaWR0aCgpOwotICAgIEdMc2l6ZWkgaGVpZ2h0ID0gZ2V0QmFzZUxldmVs
SGVpZ2h0KCk7Ci0gICAgR0xzaXplaSBkZXB0aCA9IGdldExheWVyQ291bnQoMCk7CisgICAgR0xz
aXplaSB3aWR0aCAgICAgICAgID0gZ2V0TGV2ZWxaZXJvV2lkdGgoKTsKKyAgICBHTHNpemVpIGhl
aWdodCAgICAgICAgPSBnZXRMZXZlbFplcm9IZWlnaHQoKTsKKyAgICBHTHNpemVpIGRlcHRoICAg
ICAgICAgPSBnZXRMYXllckNvdW50KGdldEJhc2VMZXZlbCgpKTsKICAgICBHTGVudW0gaW50ZXJu
YWxGb3JtYXQgPSBnZXRCYXNlTGV2ZWxJbnRlcm5hbEZvcm1hdCgpOwogCiAgICAgQVNTRVJUKHdp
ZHRoID4gMCAmJiBoZWlnaHQgPiAwICYmIGRlcHRoID4gMCk7CkBAIC0yODY2LDcgKzI2NTMsNyBA
QCBnbDo6RXJyb3IgVGV4dHVyZUQzRF8yREFycmF5OjpjcmVhdGVDb21wCiAgICAgLy8gVE9ETyhn
ZW9mZmxhbmcpOiBWZXJpZnkgc3RvcmFnZSBjcmVhdGlvbiBzdWNjZWVkcwogICAgICpvdXRTdG9y
YWdlID0gbVJlbmRlcmVyLT5jcmVhdGVUZXh0dXJlU3RvcmFnZTJEQXJyYXkoaW50ZXJuYWxGb3Jt
YXQsIHJlbmRlclRhcmdldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGxldmVscyk7CiAKLSAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
IH0KIAogZ2w6OkVycm9yIFRleHR1cmVEM0RfMkRBcnJheTo6c2V0Q29tcGxldGVUZXhTdG9yYWdl
KFRleHR1cmVTdG9yYWdlICpuZXdDb21wbGV0ZVRleFN0b3JhZ2UpCkBAIC0yODc4LDcgKzI2NjUs
NyBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF8yREFycmF5OjpzZXRDb21wbGV0CiAgICAgLy8gV2Ug
ZG8gbm90IHN1cHBvcnQgbWFuYWdlZCAyRCBhcnJheSBzdG9yYWdlLCBhcyBtYW5hZ2VkIHN0b3Jh
Z2UgaXMgRVMyL0QzRDkgb25seQogICAgIEFTU0VSVCghbVRleFN0b3JhZ2UtPmlzTWFuYWdlZCgp
KTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZUQzRF8yREFycmF5Ojp1cGRhdGVTdG9y
YWdlKCkKQEAgLTI4ODksMTUgKzI2NzYsMTEgQEAgZ2w6OkVycm9yIFRleHR1cmVEM0RfMkRBcnJh
eTo6dXBkYXRlU3RvcgogICAgIHsKICAgICAgICAgaWYgKGlzTGV2ZWxDb21wbGV0ZShsZXZlbCkp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGdsOjpFcnJvciBlcnJvciA9IHVwZGF0ZVN0b3JhZ2VM
ZXZlbChsZXZlbCk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIEFOR0xFX1RSWSh1cGRhdGVTdG9yYWdlTGV2ZWwobGV2ZWwpKTsKICAgICAgICAgfQog
ICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBn
bDo6Tm9FcnJvcigpOwogfQogCiBib29sIFRleHR1cmVEM0RfMkRBcnJheTo6aXNWYWxpZExldmVs
KGludCBsZXZlbCkgY29uc3QKQEAgLTI5MTQsMjEgKzI2OTcsMjkgQEAgYm9vbCBUZXh0dXJlRDNE
XzJEQXJyYXk6OmlzTGV2ZWxDb21wbGV0ZQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
LSAgICBHTHNpemVpIHdpZHRoID0gZ2V0QmFzZUxldmVsV2lkdGgoKTsKLSAgICBHTHNpemVpIGhl
aWdodCA9IGdldEJhc2VMZXZlbEhlaWdodCgpOwotICAgIEdMc2l6ZWkgbGF5ZXJzID0gZ2V0TGF5
ZXJDb3VudCgwKTsKKyAgICBHTHNpemVpIHdpZHRoICA9IGdldExldmVsWmVyb1dpZHRoKCk7Cisg
ICAgR0xzaXplaSBoZWlnaHQgPSBnZXRMZXZlbFplcm9IZWlnaHQoKTsKIAotICAgIGlmICh3aWR0
aCA8PSAwIHx8IGhlaWdodCA8PSAwIHx8IGxheWVycyA8PSAwKQorICAgIGlmICh3aWR0aCA8PSAw
IHx8IGhlaWdodCA8PSAwKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIGlmIChsZXZlbCA9PSAwKQorICAgIC8vIExheWVycyBjaGVjayBuZWVkcyB0byBoYXBwZW4g
YWZ0ZXIgdGhlIGFib3ZlIGNoZWNrcywgb3RoZXJ3aXNlIG91dC1vZi1yYW5nZSBiYXNlIGxldmVs
IG1heSBiZQorICAgIC8vIHF1ZXJpZWQuCisgICAgR0xzaXplaSBsYXllcnMgPSBnZXRMYXllckNv
dW50KGdldEJhc2VMZXZlbCgpKTsKKworICAgIGlmIChsYXllcnMgPD0gMCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAobGV2ZWwgPT0gc3RhdGljX2Nhc3Q8
aW50PihnZXRCYXNlTGV2ZWwoKSkpCiAgICAgewogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKLSAgICBpZiAoZ2V0SW50ZXJuYWxGb3JtYXQobGV2ZWwpICE9IGdldEludGVybmFsRm9ybWF0
KDApKQorICAgIGlmIChnZXRJbnRlcm5hbEZvcm1hdChsZXZlbCkgIT0gZ2V0SW50ZXJuYWxGb3Jt
YXQoZ2V0QmFzZUxldmVsKCkpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
QEAgLTI5NjgsMTEgKzI3NTksNyBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF8yREFycmF5Ojp1cGRh
dGVTdG9yCiAgICAgICAgIHsKICAgICAgICAgICAgIGdsOjpJbWFnZUluZGV4IGluZGV4ID0gZ2w6
OkltYWdlSW5kZXg6Ok1ha2UyREFycmF5KGxldmVsLCBsYXllcik7CiAgICAgICAgICAgICBnbDo6
Qm94IHJlZ2lvbigwLCAwLCAwLCBnZXRXaWR0aChsZXZlbCksIGdldEhlaWdodChsZXZlbCksIDEp
OwotICAgICAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gY29tbWl0UmVnaW9uKGluZGV4LCByZWdp
b24pOwotICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBB
TkdMRV9UUlkoY29tbWl0UmVnaW9uKGluZGV4LCByZWdpb24pKTsKICAgICAgICAgfQogICAgIH0K
IApAQCAtMjk5NiwxMCArMjc4MywxNCBAQCB2b2lkIFRleHR1cmVEM0RfMkRBcnJheTo6ZGVsZXRl
SW1hZ2VzKCkKIHZvaWQgVGV4dHVyZUQzRF8yREFycmF5OjpyZWRlZmluZUltYWdlKEdMaW50IGxl
dmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplKQogewog
ICAgIC8vIElmIHRoZXJlIGN1cnJlbnRseSBpcyBhIGNvcnJlc3BvbmRpbmcgc3RvcmFnZSB0ZXh0
dXJlIGltYWdlLCBpdCBoYXMgdGhlc2UgcGFyYW1ldGVycwotICAgIGNvbnN0IGludCBzdG9yYWdl
V2lkdGggPSBzdGQ6Om1heCgxLCBnZXRCYXNlTGV2ZWxXaWR0aCgpID4+IGxldmVsKTsKLSAgICBj
b25zdCBpbnQgc3RvcmFnZUhlaWdodCA9IHN0ZDo6bWF4KDEsIGdldEJhc2VMZXZlbEhlaWdodCgp
ID4+IGxldmVsKTsKLSAgICBjb25zdCBpbnQgc3RvcmFnZURlcHRoID0gZ2V0TGF5ZXJDb3VudCgw
KTsKLSAgICBjb25zdCBHTGVudW0gc3RvcmFnZUZvcm1hdCA9IGdldEJhc2VMZXZlbEludGVybmFs
Rm9ybWF0KCk7CisgICAgY29uc3QgaW50IHN0b3JhZ2VXaWR0aCAgPSBzdGQ6Om1heCgxLCBnZXRM
ZXZlbFplcm9XaWR0aCgpID4+IGxldmVsKTsKKyAgICBjb25zdCBpbnQgc3RvcmFnZUhlaWdodCA9
IHN0ZDo6bWF4KDEsIGdldExldmVsWmVyb0hlaWdodCgpID4+IGxldmVsKTsKKyAgICBjb25zdCBH
THVpbnQgYmFzZUxldmVsICA9IGdldEJhc2VMZXZlbCgpOworICAgIGludCBzdG9yYWdlRGVwdGgg
PSAwOworICAgIGlmIChiYXNlTGV2ZWwgPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVf
TEVWRUxTKQorICAgIHsKKyAgICAgICAgc3RvcmFnZURlcHRoID0gZ2V0TGF5ZXJDb3VudChiYXNl
TGV2ZWwpOworICAgIH0KIAogICAgIC8vIE9ubHkgcmVhbGxvY2F0ZSB0aGUgbGF5ZXJzIGlmIHRo
ZSBzaXplIGRvZXNuJ3QgbWF0Y2gKICAgICBpZiAoc2l6ZS5kZXB0aCAhPSBtTGF5ZXJDb3VudHNb
bGV2ZWxdKQpAQCAtMzAzMiw2ICsyODIzLDcgQEAgdm9pZCBUZXh0dXJlRDNEXzJEQXJyYXk6OnJl
ZGVmaW5lSW1hZ2UoRwogCiAgICAgaWYgKG1UZXhTdG9yYWdlKQogICAgIHsKKyAgICAgICAgY29u
c3QgR0xlbnVtIHN0b3JhZ2VGb3JtYXQgPSBnZXRCYXNlTGV2ZWxJbnRlcm5hbEZvcm1hdCgpOwog
ICAgICAgICBjb25zdCBpbnQgc3RvcmFnZUxldmVscyA9IG1UZXhTdG9yYWdlLT5nZXRMZXZlbENv
dW50KCk7CiAKICAgICAgICAgaWYgKChsZXZlbCA+PSBzdG9yYWdlTGV2ZWxzICYmIHN0b3JhZ2VM
ZXZlbHMgIT0gMCkgfHwKQEAgLTMwNDAsMTcgKzI4MzIsOCBAQCB2b2lkIFRleHR1cmVEM0RfMkRB
cnJheTo6cmVkZWZpbmVJbWFnZShHCiAgICAgICAgICAgICBzaXplLmRlcHRoICE9IHN0b3JhZ2VE
ZXB0aCB8fAogICAgICAgICAgICAgaW50ZXJuYWxmb3JtYXQgIT0gc3RvcmFnZUZvcm1hdCkgICAv
LyBEaXNjYXJkIG1pc21hdGNoZWQgc3RvcmFnZQogICAgICAgICB7Ci0gICAgICAgICAgICBmb3Ig
KGludCBkaXJ0eUxldmVsID0gMDsgZGlydHlMZXZlbCA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhf
VEVYVFVSRV9MRVZFTFM7IGRpcnR5TGV2ZWwrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBmb3IgKGludCBkaXJ0eUxheWVyID0gMDsgZGlydHlMYXllciA8IG1MYXllckNvdW50c1tk
aXJ0eUxldmVsXTsgZGlydHlMYXllcisrKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgbUltYWdlQXJyYXlbZGlydHlMZXZlbF1bZGlydHlMYXllcl0tPm1hcmtEaXJ0eSgp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZGVsZXRl
IG1UZXhTdG9yYWdlOwotICAgICAgICAgICAgbVRleFN0b3JhZ2UgPSBOVUxMOwotICAgICAgICAg
ICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKKyAgICAgICAgICAgIG1hcmtBbGxJbWFnZXNEaXJ0eSgp
OworICAgICAgICAgICAgU2FmZURlbGV0ZShtVGV4U3RvcmFnZSk7CiAgICAgICAgIH0KICAgICB9
CiB9CkBAIC0zMDgzLDQgKzI4NjYsMjIxIEBAIGJvb2wgVGV4dHVyZUQzRF8yREFycmF5Ojppc1Zh
bGlkSW5kZXgoY28KICAgICByZXR1cm4gKCFpbmRleC5oYXNMYXllcigpIHx8IChpbmRleC5sYXll
ckluZGV4ID49IDAgJiYgaW5kZXgubGF5ZXJJbmRleCA8IG1MYXllckNvdW50c1tpbmRleC5taXBJ
bmRleF0pKTsKIH0KIAordm9pZCBUZXh0dXJlRDNEXzJEQXJyYXk6Om1hcmtBbGxJbWFnZXNEaXJ0
eSgpCit7CisgICAgZm9yIChpbnQgZGlydHlMZXZlbCA9IDA7IGRpcnR5TGV2ZWwgPCBnbDo6SU1Q
TEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTOyBkaXJ0eUxldmVsKyspCisgICAgeworICAg
ICAgICBmb3IgKGludCBkaXJ0eUxheWVyID0gMDsgZGlydHlMYXllciA8IG1MYXllckNvdW50c1tk
aXJ0eUxldmVsXTsgZGlydHlMYXllcisrKQorICAgICAgICB7CisgICAgICAgICAgICBtSW1hZ2VB
cnJheVtkaXJ0eUxldmVsXVtkaXJ0eUxheWVyXS0+bWFya0RpcnR5KCk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKK30KKworVGV4dHVyZUQzRF9FeHRlcm5hbDo6
VGV4dHVyZUQzRF9FeHRlcm5hbChjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZzdGF0ZSwgUmVuZGVy
ZXJEM0QgKnJlbmRlcmVyKQorICAgIDogVGV4dHVyZUQzRChzdGF0ZSwgcmVuZGVyZXIpCit7Cit9
CisKK1RleHR1cmVEM0RfRXh0ZXJuYWw6On5UZXh0dXJlRDNEX0V4dGVybmFsKCkKK3sKKyAgICBT
YWZlRGVsZXRlKG1UZXhTdG9yYWdlKTsKK30KKworSW1hZ2VEM0QgKlRleHR1cmVEM0RfRXh0ZXJu
YWw6OmdldEltYWdlKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCkgY29uc3QKK3sKKyAgICBV
TlJFQUNIQUJMRSgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitHTHNpemVpIFRleHR1cmVE
M0RfRXh0ZXJuYWw6OmdldExheWVyQ291bnQoaW50IGxldmVsKSBjb25zdAoreworICAgIHJldHVy
biAxOworfQorCitnbDo6RXJyb3IgVGV4dHVyZUQzRF9FeHRlcm5hbDo6c2V0SW1hZ2UoR0xlbnVt
IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
aW1hZ2VMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykKK3sKKyAg
ICAvLyBJbWFnZSBzZXR0aW5nIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGV4dGVybmFsIGltYWdlcwor
ICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7Cit9CisKK2dsOjpFcnJvciBUZXh0dXJlRDNEX0V4dGVybmFsOjpzZXRTdWJJbWFnZShH
TGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBpbWFnZUxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpCb3ggJmFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBp
eGVscykKK3sKKyAgICBVTlJFQUNIQUJMRSgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgVGV4dHVyZUQzRF9FeHRlcm5hbDo6c2V0
Q29tcHJlc3NlZEltYWdlKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZUxldmVsLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3Jt
YXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpFeHRlbnRzICZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW1h
Z2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB1aW50OF90ICpwaXhlbHMpCit7CisgICAgVU5SRUFDSEFCTEUoKTsKKyAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIFRleHR1
cmVEM0RfRXh0ZXJuYWw6OnNldENvbXByZXNzZWRTdWJJbWFnZShHTGVudW0gdGFyZ2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
bGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpCb3ggJmFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0
YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBpbWFnZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykKK3sKKyAgICBV
TlJFQUNIQUJMRSgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OworfQorCitnbDo6RXJyb3IgVGV4dHVyZUQzRF9FeHRlcm5hbDo6Y29weUltYWdlKEdMZW51bSB0
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBp
bWFnZUxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKQorewor
ICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7Cit9CisKK2dsOjpFcnJvciBUZXh0dXJlRDNEX0V4dGVybmFsOjpjb3B5U3ViSW1hZ2Uo
R0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGltYWdlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFy
ZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpGcmFtZWJ1ZmZlciAqc291cmNlKQoreworICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBUZXh0dXJl
RDNEX0V4dGVybmFsOjpzZXRTdG9yYWdlKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWxzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNp
emUpCit7CisgICAgVU5SRUFDSEFCTEUoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIFRleHR1cmVEM0RfRXh0ZXJuYWw6OnNldElt
YWdlRXh0ZXJuYWwoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVnbDo6U3RyZWFtICpzdHJlYW0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OlN0cmVhbTo6R0xUZXh0
dXJlRGVzY3JpcHRpb24gJmRlc2MpCit7CisgICAgQVNTRVJUKHRhcmdldCA9PSBHTF9URVhUVVJF
X0VYVEVSTkFMX09FUyk7CisKKyAgICBTYWZlRGVsZXRlKG1UZXhTdG9yYWdlKTsKKworICAgIC8v
IElmIHRoZSBzdHJlYW0gaXMgbnVsbCwgdGhlIGV4dGVybmFsIGltYWdlIGlzIHVuYm91bmQgYW5k
IHdlIHJlbGVhc2UgdGhlIHN0b3JhZ2UKKyAgICBpZiAoc3RyZWFtICE9IG51bGxwdHIpCisgICAg
eworICAgICAgICBtVGV4U3RvcmFnZSA9IG1SZW5kZXJlci0+Y3JlYXRlVGV4dHVyZVN0b3JhZ2VF
eHRlcm5hbChzdHJlYW0sIGRlc2MpOworICAgIH0KKworICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
Tk9fRVJST1IpOworfQorCit2b2lkIFRleHR1cmVEM0RfRXh0ZXJuYWw6OmJpbmRUZXhJbWFnZShl
Z2w6OlN1cmZhY2UgKnN1cmZhY2UpCit7CisgICAgVU5SRUFDSEFCTEUoKTsKK30KKwordm9pZCBU
ZXh0dXJlRDNEX0V4dGVybmFsOjpyZWxlYXNlVGV4SW1hZ2UoKQoreworICAgIFVOUkVBQ0hBQkxF
KCk7Cit9CisKK2dsOjpFcnJvciBUZXh0dXJlRDNEX0V4dGVybmFsOjpzZXRFR0xJbWFnZVRhcmdl
dChHTGVudW0gdGFyZ2V0LCBlZ2w6OkltYWdlICppbWFnZSkKK3sKKyAgICBFR0xJbWFnZUQzRCAq
ZWdsSW1hZ2VkM2QgPSBHZXRJbXBsQXM8RUdMSW1hZ2VEM0Q+KGltYWdlKTsKKworICAgIC8vIFBh
c3MgaW4gdGhlIFJlbmRlclRhcmdldEQzRCBoZXJlOiBjcmVhdGVUZXh0dXJlU3RvcmFnZSBjYW4n
dCBnZW5lcmF0ZSBhbiBlcnJvci4KKyAgICBSZW5kZXJUYXJnZXREM0QgKnJlbmRlclRhcmdldEQz
RCA9IG51bGxwdHI7CisgICAgQU5HTEVfVFJZKGVnbEltYWdlZDNkLT5nZXRSZW5kZXJUYXJnZXQo
JnJlbmRlclRhcmdldEQzRCkpOworCisgICAgU2FmZURlbGV0ZShtVGV4U3RvcmFnZSk7CisgICAg
bVRleFN0b3JhZ2UgPSBtUmVuZGVyZXItPmNyZWF0ZVRleHR1cmVTdG9yYWdlRUdMSW1hZ2UoZWds
SW1hZ2VkM2QsIHJlbmRlclRhcmdldEQzRCk7CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
K30KKwordm9pZCBUZXh0dXJlRDNEX0V4dGVybmFsOjppbml0TWlwbWFwSW1hZ2VzKCkKK3sKKyAg
ICBVTlJFQUNIQUJMRSgpOworfQorCitnbDo6RXJyb3IgVGV4dHVyZUQzRF9FeHRlcm5hbDo6Z2V0
UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwgUmVuZGVyVGFyZ2V0RDNE
ICoqb3V0UlQpCit7CisgICAgVU5SRUFDSEFCTEUoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworYm9vbCBUZXh0dXJlRDNEX0V4dGVybmFsOjppc0lt
YWdlQ29tcGxldGUoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4KSBjb25zdAoreworICAgIHJl
dHVybiAoaW5kZXgubWlwSW5kZXggPT0gMCkgPyAobVRleFN0b3JhZ2UgIT0gbnVsbHB0cikgOiBm
YWxzZTsKK30KKworZ2w6OkVycm9yIFRleHR1cmVEM0RfRXh0ZXJuYWw6OmluaXRpYWxpemVTdG9y
YWdlKGJvb2wgcmVuZGVyVGFyZ2V0KQoreworICAgIC8vIFRleHR1cmUgc3RvcmFnZSBpcyBjcmVh
dGVkIHdoZW4gYW4gZXh0ZXJuYWwgaW1hZ2UgaXMgYm91bmQKKyAgICBBU1NFUlQobVRleFN0b3Jh
Z2UpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworfQorCitnbDo6RXJyb3Ig
VGV4dHVyZUQzRF9FeHRlcm5hbDo6Y3JlYXRlQ29tcGxldGVTdG9yYWdlKGJvb2wgcmVuZGVyVGFy
Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUZXh0dXJlU3RvcmFnZSAqKm91dFRleFN0b3JhZ2UpIGNvbnN0Cit7CisgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKK30KKworZ2w6OkVycm9y
IFRleHR1cmVEM0RfRXh0ZXJuYWw6OnNldENvbXBsZXRlVGV4U3RvcmFnZShUZXh0dXJlU3RvcmFn
ZSAqbmV3Q29tcGxldGVUZXhTdG9yYWdlKQoreworICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Cit9CisKK2dsOjpFcnJvciBUZXh0dXJlRDNEX0V4
dGVybmFsOjp1cGRhdGVTdG9yYWdlKCkKK3sKKyAgICAvLyBUZXh0dXJlIHN0b3JhZ2UgZG9lcyBu
b3QgbmVlZCB0byBiZSB1cGRhdGVkIHNpbmNlIGl0IGlzIGFscmVhZHkgbG9hZGVkIHdpdGggdGhl
IGxhdGVzdAorICAgIC8vIGV4dGVybmFsIGltYWdlCisgICAgQVNTRVJUKG1UZXhTdG9yYWdlKTsK
KyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKK30KKworZ2w6OkltYWdlSW5kZXhJ
dGVyYXRvciBUZXh0dXJlRDNEX0V4dGVybmFsOjppbWFnZUl0ZXJhdG9yKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZ2w6OkltYWdlSW5kZXhJdGVyYXRvcjo6TWFrZTJEKDAsIG1UZXhTdG9yYWdlLT5n
ZXRMZXZlbENvdW50KCkpOworfQorCitnbDo6SW1hZ2VJbmRleCBUZXh0dXJlRDNEX0V4dGVybmFs
OjpnZXRJbWFnZUluZGV4KEdMaW50IG1pcCwgR0xpbnQgLypsYXllciovKSBjb25zdAoreworICAg
IC8vICJsYXllciIgZG9lcyBub3QgYXBwbHkgdG8gMkQgVGV4dHVyZXMuCisgICAgcmV0dXJuIGds
OjpJbWFnZUluZGV4OjpNYWtlMkQobWlwKTsKK30KKworYm9vbCBUZXh0dXJlRDNEX0V4dGVybmFs
Ojppc1ZhbGlkSW5kZXgoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4KSBjb25zdAoreworICAg
IHJldHVybiAobVRleFN0b3JhZ2UgJiYgaW5kZXgudHlwZSA9PSBHTF9URVhUVVJFX0VYVEVSTkFM
X09FUyAmJiBpbmRleC5taXBJbmRleCA9PSAwKTsKK30KKwordm9pZCBUZXh0dXJlRDNEX0V4dGVy
bmFsOjptYXJrQWxsSW1hZ2VzRGlydHkoKQoreworICAgIFVOUkVBQ0hBQkxFKCk7CiB9Cit9ICAv
LyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvVGV4dHVyZUQzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVGV4dHVyZUQzRC5oCShyZXZpc2lv
biAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL1RleHR1cmVEM0QuaAkod29ya2luZyBjb3B5KQpAQCAtMTIsNiArMTIsNyBAQAogI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1RleHR1cmVJbXBsLmgiCiAjaW5jbHVkZSAibGliQU5H
TEUvYW5nbGV0eXBlcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0NvbnN0YW50cy5oIgorI2luY2x1
ZGUgImxpYkFOR0xFL1N0cmVhbS5oIgogCiBuYW1lc3BhY2UgZ2wKIHsKQEAgLTI5LDEyICszMCwx
MSBAQCBjbGFzcyBUZXh0dXJlU3RvcmFnZTsKIGNsYXNzIFRleHR1cmVEM0QgOiBwdWJsaWMgVGV4
dHVyZUltcGwKIHsKICAgcHVibGljOgotICAgIFRleHR1cmVEM0QoUmVuZGVyZXJEM0QgKnJlbmRl
cmVyKTsKKyAgICBUZXh0dXJlRDNEKGNvbnN0IGdsOjpUZXh0dXJlU3RhdGUgJmRhdGEsIFJlbmRl
cmVyRDNEICpyZW5kZXJlcik7CiAgICAgdmlydHVhbCB+VGV4dHVyZUQzRCgpOwogCiAgICAgZ2w6
OkVycm9yIGdldE5hdGl2ZVRleHR1cmUoVGV4dHVyZVN0b3JhZ2UgKipvdXRTdG9yYWdlKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBzZXRVc2FnZShHTGVudW0gdXNhZ2UpIHsgbVVzYWdlID0gdXNhZ2U7
IH0KICAgICBib29sIGhhc0RpcnR5SW1hZ2VzKCkgY29uc3QgeyByZXR1cm4gbURpcnR5SW1hZ2Vz
OyB9CiAgICAgdm9pZCByZXNldERpcnR5KCkgeyBtRGlydHlJbWFnZXMgPSBmYWxzZTsgfQogCkBA
IC00Myw3ICs0Myw2IEBAIGNsYXNzIFRleHR1cmVEM0QgOiBwdWJsaWMgVGV4dHVyZUltcGwKIAog
ICAgIEdMaW50IGdldEJhc2VMZXZlbFdpZHRoKCkgY29uc3Q7CiAgICAgR0xpbnQgZ2V0QmFzZUxl
dmVsSGVpZ2h0KCkgY29uc3Q7Ci0gICAgR0xpbnQgZ2V0QmFzZUxldmVsRGVwdGgoKSBjb25zdDsK
ICAgICBHTGVudW0gZ2V0QmFzZUxldmVsSW50ZXJuYWxGb3JtYXQoKSBjb25zdDsKIAogICAgIGJv
b2wgaXNJbW11dGFibGUoKSBjb25zdCB7IHJldHVybiBtSW1tdXRhYmxlOyB9CkBAIC01OCwxMyAr
NTcsMjAgQEAgY2xhc3MgVGV4dHVyZUQzRCA6IHB1YmxpYyBUZXh0dXJlSW1wbAogICAgIHZpcnR1
YWwgZ2w6OkltYWdlSW5kZXggZ2V0SW1hZ2VJbmRleChHTGludCBtaXAsIEdMaW50IGxheWVyKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzVmFsaWRJbmRleChjb25zdCBnbDo6SW1hZ2VJ
bmRleCAmaW5kZXgpIGNvbnN0ID0gMDsKIAotICAgIGdsOjpFcnJvciBnZW5lcmF0ZU1pcG1hcHMo
Y29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmdGV4dHVyZVN0YXRlKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIGdsOjpFcnJvciBzZXRJbWFnZUV4dGVybmFsKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OlN0cmVhbSAqc3RyZWFtLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpTdHJlYW06OkdMVGV4
dHVyZURlc2NyaXB0aW9uICZkZXNjKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgZ2VuZXJhdGVN
aXBtYXAoKSBvdmVycmlkZTsKICAgICBUZXh0dXJlU3RvcmFnZSAqZ2V0U3RvcmFnZSgpOwogICAg
IEltYWdlRDNEICpnZXRCYXNlTGV2ZWxJbWFnZSgpIGNvbnN0OwogCiAgICAgZ2w6OkVycm9yIGdl
dEF0dGFjaG1lbnRSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6
VGFyZ2V0ICZ0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RnJhbWVidWZmZXJBdHRhY2htZW50UmVuZGVyVGFyZ2V0ICoqcnRPdXQpIG92ZXJyaWRlOwogCisg
ICAgdm9pZCBzZXRCYXNlTGV2ZWwoR0x1aW50IGJhc2VMZXZlbCkgb3ZlcnJpZGU7CisKKyAgICB2
b2lkIHN5bmNTdGF0ZShjb25zdCBnbDo6VGV4dHVyZTo6RGlydHlCaXRzICZkaXJ0eUJpdHMpIG92
ZXJyaWRlOworCiAgIHByb3RlY3RlZDoKICAgICBnbDo6RXJyb3Igc2V0SW1hZ2VJbXBsKGNvbnN0
IGdsOjpJbWFnZUluZGV4ICZpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0eXBlLApAQCAtODMsOSArODksMTIgQEAgY2xhc3MgVGV4dHVyZUQzRCA6IHB1YmxpYyBUZXh0
dXJlSW1wbAogICAgIGdsOjpFcnJvciBmYXN0VW5wYWNrUGl4ZWxzKGNvbnN0IGdsOjpQaXhlbFVu
cGFja1N0YXRlICZ1bnBhY2ssIGNvbnN0IHVpbnQ4X3QgKnBpeGVscywgY29uc3QgZ2w6OkJveCAm
ZGVzdEFyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNpemVkSW50
ZXJuYWxGb3JtYXQsIEdMZW51bSB0eXBlLCBSZW5kZXJUYXJnZXREM0QgKmRlc3RSZW5kZXJUYXJn
ZXQpOwogCisgICAgR0xpbnQgZ2V0TGV2ZWxaZXJvV2lkdGgoKSBjb25zdDsKKyAgICBHTGludCBn
ZXRMZXZlbFplcm9IZWlnaHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEdMaW50IGdldExldmVsWmVy
b0RlcHRoKCkgY29uc3Q7CisKICAgICBHTGludCBjcmVhdGlvbkxldmVscyhHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCkgY29uc3Q7Ci0gICAgaW50IG1pcExldmVs
cygpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBpbml0TWlwbWFwc0ltYWdlcygpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgaW5pdE1pcG1hcEltYWdlcygpID0gMDsKICAgICBib29sIGlzQmFzZUlt
YWdlWmVyb1NpemUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZUNvbXBsZXRlKGNv
bnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCkgY29uc3QgPSAwOwogCkBAIC05Niw5ICsxMDUsMTMg
QEAgY2xhc3MgVGV4dHVyZUQzRCA6IHB1YmxpYyBUZXh0dXJlSW1wbAogICAgIHZpcnR1YWwgZ2w6
OkVycm9yIHNldENvbXBsZXRlVGV4U3RvcmFnZShUZXh0dXJlU3RvcmFnZSAqbmV3Q29tcGxldGVU
ZXhTdG9yYWdlKSA9IDA7CiAgICAgZ2w6OkVycm9yIGNvbW1pdFJlZ2lvbihjb25zdCBnbDo6SW1h
Z2VJbmRleCAmaW5kZXgsIGNvbnN0IGdsOjpCb3ggJnJlZ2lvbik7CiAKLSAgICBSZW5kZXJlckQz
RCAqbVJlbmRlcmVyOworICAgIEdMdWludCBnZXRCYXNlTGV2ZWwoKSBjb25zdCB7IHJldHVybiBt
QmFzZUxldmVsOyB9OwogCi0gICAgR0xlbnVtIG1Vc2FnZTsKKyAgICB2aXJ0dWFsIHZvaWQgbWFy
a0FsbEltYWdlc0RpcnR5KCkgPSAwOworCisgICAgR0xpbnQgZ2V0QmFzZUxldmVsRGVwdGgoKSBj
b25zdDsKKworICAgIFJlbmRlcmVyRDNEICptUmVuZGVyZXI7CiAKICAgICBib29sIG1EaXJ0eUlt
YWdlczsKIApAQCAtMTEyLDEzICsxMjUsMTUgQEAgY2xhc3MgVGV4dHVyZUQzRCA6IHB1YmxpYyBU
ZXh0dXJlSW1wbAogCiAgICAgYm9vbCBzaG91bGRVc2VTZXREYXRhKGNvbnN0IEltYWdlRDNEICpp
bWFnZSkgY29uc3Q7CiAKLSAgICBnbDo6RXJyb3IgZ2VuZXJhdGVNaXBtYXBzVXNpbmdJbWFnZXMo
KTsKKyAgICBnbDo6RXJyb3IgZ2VuZXJhdGVNaXBtYXBVc2luZ0ltYWdlcyhjb25zdCBHTHVpbnQg
bWF4TGV2ZWwpOworCisgICAgR0x1aW50IG1CYXNlTGV2ZWw7CiB9OwogCiBjbGFzcyBUZXh0dXJl
RDNEXzJEIDogcHVibGljIFRleHR1cmVEM0QKIHsKICAgcHVibGljOgotICAgIFRleHR1cmVEM0Rf
MkQoUmVuZGVyZXJEM0QgKnJlbmRlcmVyKTsKKyAgICBUZXh0dXJlRDNEXzJEKGNvbnN0IGdsOjpU
ZXh0dXJlU3RhdGUgJmRhdGEsIFJlbmRlcmVyRDNEICpyZW5kZXJlcik7CiAgICAgdmlydHVhbCB+
VGV4dHVyZUQzRF8yRCgpOwogCiAgICAgdmlydHVhbCBJbWFnZUQzRCAqZ2V0SW1hZ2UoaW50IGxl
dmVsLCBpbnQgbGF5ZXIpIGNvbnN0OwpAQCAtMTQ1LDYgKzE2MCwyMCBAQCBjbGFzcyBUZXh0dXJl
RDNEXzJEIDogcHVibGljIFRleHR1cmVEM0QKICAgICBnbDo6RXJyb3IgY29weVN1YkltYWdlKEdM
ZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwg
Y29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKSBvdmVycmlkZTsKIAorICAgIGdsOjpF
cnJvciBjb3B5VGV4dHVyZShHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVu
cGFja0ZsaXBZLAorICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1ByZW11bHRp
cGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrVW5tdWx0aXBs
eUFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VGV4dHVyZSAqc291
cmNlKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgY29weVN1YlRleHR1cmUoY29uc3QgZ2w6Ok9m
ZnNldCAmZGVzdE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCB1bnBhY2tGbGlwWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tQ
cmVtdWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFj
a1VubXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OlRleHR1cmUgKnNvdXJjZSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGNvcHlDb21wcmVzc2Vk
VGV4dHVyZShjb25zdCBnbDo6VGV4dHVyZSAqc291cmNlKSBvdmVycmlkZTsKKwogICAgIGdsOjpF
cnJvciBzZXRTdG9yYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbHMsIEdMZW51bSBpbnRl
cm5hbEZvcm1hdCwgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUpIG92ZXJyaWRlOwogCiAgICAgdmly
dHVhbCB2b2lkIGJpbmRUZXhJbWFnZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpOwpAQCAtMTU4LDEz
ICsxODcsMTYgQEAgY2xhc3MgVGV4dHVyZUQzRF8yRCA6IHB1YmxpYyBUZXh0dXJlRDNECiAgICAg
dmlydHVhbCBnbDo6SW1hZ2VJbmRleCBnZXRJbWFnZUluZGV4KEdMaW50IG1pcCwgR0xpbnQgbGF5
ZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkSW5kZXgoY29uc3QgZ2w6OkltYWdl
SW5kZXggJmluZGV4KSBjb25zdDsKIAorICBwcm90ZWN0ZWQ6CisgICAgdm9pZCBtYXJrQWxsSW1h
Z2VzRGlydHkoKSBvdmVycmlkZTsKKwogICBwcml2YXRlOgogICAgIHZpcnR1YWwgZ2w6OkVycm9y
IGluaXRpYWxpemVTdG9yYWdlKGJvb2wgcmVuZGVyVGFyZ2V0KTsKICAgICB2aXJ0dWFsIGdsOjpF
cnJvciBjcmVhdGVDb21wbGV0ZVN0b3JhZ2UoYm9vbCByZW5kZXJUYXJnZXQsIFRleHR1cmVTdG9y
YWdlICoqb3V0VGV4U3RvcmFnZSkgY29uc3Q7CiAgICAgdmlydHVhbCBnbDo6RXJyb3Igc2V0Q29t
cGxldGVUZXhTdG9yYWdlKFRleHR1cmVTdG9yYWdlICpuZXdDb21wbGV0ZVRleFN0b3JhZ2UpOwog
CiAgICAgdmlydHVhbCBnbDo6RXJyb3IgdXBkYXRlU3RvcmFnZSgpOwotICAgIHZpcnR1YWwgdm9p
ZCBpbml0TWlwbWFwc0ltYWdlcygpOworICAgIHZpcnR1YWwgdm9pZCBpbml0TWlwbWFwSW1hZ2Vz
KCk7CiAKICAgICBib29sIGlzVmFsaWRMZXZlbChpbnQgbGV2ZWwpIGNvbnN0OwogICAgIGJvb2wg
aXNMZXZlbENvbXBsZXRlKGludCBsZXZlbCkgY29uc3Q7CkBAIC0xODQsNyArMjE2LDcgQEAgY2xh
c3MgVGV4dHVyZUQzRF8yRCA6IHB1YmxpYyBUZXh0dXJlRDNECiBjbGFzcyBUZXh0dXJlRDNEX0N1
YmUgOiBwdWJsaWMgVGV4dHVyZUQzRAogewogICBwdWJsaWM6Ci0gICAgVGV4dHVyZUQzRF9DdWJl
KFJlbmRlcmVyRDNEICpyZW5kZXJlcik7CisgICAgVGV4dHVyZUQzRF9DdWJlKGNvbnN0IGdsOjpU
ZXh0dXJlU3RhdGUgJmRhdGEsIFJlbmRlcmVyRDNEICpyZW5kZXJlcik7CiAgICAgdmlydHVhbCB+
VGV4dHVyZUQzRF9DdWJlKCk7CiAKICAgICB2aXJ0dWFsIEltYWdlRDNEICpnZXRJbWFnZShpbnQg
bGV2ZWwsIGludCBsYXllcikgY29uc3Q7CkBAIC0xOTMsNyArMjI1LDYgQEAgY2xhc3MgVGV4dHVy
ZUQzRF9DdWJlIDogcHVibGljIFRleHR1cmVEMwogCiAgICAgdmlydHVhbCBib29sIGhhc0RpcnR5
SW1hZ2VzKCkgY29uc3QgeyByZXR1cm4gbURpcnR5SW1hZ2VzOyB9CiAgICAgdmlydHVhbCB2b2lk
IHJlc2V0RGlydHkoKSB7IG1EaXJ0eUltYWdlcyA9IGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lk
IHNldFVzYWdlKEdMZW51bSB1c2FnZSkgeyBtVXNhZ2UgPSB1c2FnZTsgfQogCiAgICAgR0xlbnVt
IGdldEludGVybmFsRm9ybWF0KEdMaW50IGxldmVsLCBHTGludCBsYXllcikgY29uc3Q7CiAgICAg
Ym9vbCBpc0RlcHRoKEdMaW50IGxldmVsLCBHTGludCBsYXllcikgY29uc3Q7CkBAIC0yMjYsMTMg
KzI1NywxNiBAQCBjbGFzcyBUZXh0dXJlRDNEX0N1YmUgOiBwdWJsaWMgVGV4dHVyZUQzCiAgICAg
dmlydHVhbCBnbDo6SW1hZ2VJbmRleCBnZXRJbWFnZUluZGV4KEdMaW50IG1pcCwgR0xpbnQgbGF5
ZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkSW5kZXgoY29uc3QgZ2w6OkltYWdl
SW5kZXggJmluZGV4KSBjb25zdDsKIAorICBwcm90ZWN0ZWQ6CisgICAgdm9pZCBtYXJrQWxsSW1h
Z2VzRGlydHkoKSBvdmVycmlkZTsKKwogICBwcml2YXRlOgogICAgIHZpcnR1YWwgZ2w6OkVycm9y
IGluaXRpYWxpemVTdG9yYWdlKGJvb2wgcmVuZGVyVGFyZ2V0KTsKICAgICB2aXJ0dWFsIGdsOjpF
cnJvciBjcmVhdGVDb21wbGV0ZVN0b3JhZ2UoYm9vbCByZW5kZXJUYXJnZXQsIFRleHR1cmVTdG9y
YWdlICoqb3V0VGV4U3RvcmFnZSkgY29uc3Q7CiAgICAgdmlydHVhbCBnbDo6RXJyb3Igc2V0Q29t
cGxldGVUZXhTdG9yYWdlKFRleHR1cmVTdG9yYWdlICpuZXdDb21wbGV0ZVRleFN0b3JhZ2UpOwog
CiAgICAgdmlydHVhbCBnbDo6RXJyb3IgdXBkYXRlU3RvcmFnZSgpOwotICAgIHZpcnR1YWwgdm9p
ZCBpbml0TWlwbWFwc0ltYWdlcygpOworICAgIHZvaWQgaW5pdE1pcG1hcEltYWdlcygpIG92ZXJy
aWRlOwogCiAgICAgYm9vbCBpc1ZhbGlkRmFjZUxldmVsKGludCBmYWNlSW5kZXgsIGludCBsZXZl
bCkgY29uc3Q7CiAgICAgYm9vbCBpc0ZhY2VMZXZlbENvbXBsZXRlKGludCBmYWNlSW5kZXgsIGlu
dCBsZXZlbCkgY29uc3Q7CkBAIC0yNDgsNyArMjgyLDcgQEAgY2xhc3MgVGV4dHVyZUQzRF9DdWJl
IDogcHVibGljIFRleHR1cmVEMwogY2xhc3MgVGV4dHVyZUQzRF8zRCA6IHB1YmxpYyBUZXh0dXJl
RDNECiB7CiAgIHB1YmxpYzoKLSAgICBUZXh0dXJlRDNEXzNEKFJlbmRlcmVyRDNEICpyZW5kZXJl
cik7CisgICAgVGV4dHVyZUQzRF8zRChjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZkYXRhLCBSZW5k
ZXJlckQzRCAqcmVuZGVyZXIpOwogICAgIHZpcnR1YWwgflRleHR1cmVEM0RfM0QoKTsKIAogICAg
IHZpcnR1YWwgSW1hZ2VEM0QgKmdldEltYWdlKGludCBsZXZlbCwgaW50IGxheWVyKSBjb25zdDsK
QEAgLTI4OSwxMyArMzIzLDE3IEBAIGNsYXNzIFRleHR1cmVEM0RfM0QgOiBwdWJsaWMgVGV4dHVy
ZUQzRAogICAgIHZpcnR1YWwgZ2w6OkltYWdlSW5kZXggZ2V0SW1hZ2VJbmRleChHTGludCBtaXAs
IEdMaW50IGxheWVyKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZEluZGV4KGNvbnN0
IGdsOjpJbWFnZUluZGV4ICZpbmRleCkgY29uc3Q7CiAKKyAgcHJvdGVjdGVkOgorICAgIHZvaWQg
bWFya0FsbEltYWdlc0RpcnR5KCkgb3ZlcnJpZGU7CisgICAgR0xpbnQgZ2V0TGV2ZWxaZXJvRGVw
dGgoKSBjb25zdCBvdmVycmlkZTsKKwogICBwcml2YXRlOgogICAgIHZpcnR1YWwgZ2w6OkVycm9y
IGluaXRpYWxpemVTdG9yYWdlKGJvb2wgcmVuZGVyVGFyZ2V0KTsKICAgICB2aXJ0dWFsIGdsOjpF
cnJvciBjcmVhdGVDb21wbGV0ZVN0b3JhZ2UoYm9vbCByZW5kZXJUYXJnZXQsIFRleHR1cmVTdG9y
YWdlICoqb3V0U3RvcmFnZSkgY29uc3Q7CiAgICAgdmlydHVhbCBnbDo6RXJyb3Igc2V0Q29tcGxl
dGVUZXhTdG9yYWdlKFRleHR1cmVTdG9yYWdlICpuZXdDb21wbGV0ZVRleFN0b3JhZ2UpOwogCiAg
ICAgdmlydHVhbCBnbDo6RXJyb3IgdXBkYXRlU3RvcmFnZSgpOwotICAgIHZpcnR1YWwgdm9pZCBp
bml0TWlwbWFwc0ltYWdlcygpOworICAgIHZvaWQgaW5pdE1pcG1hcEltYWdlcygpIG92ZXJyaWRl
OwogCiAgICAgYm9vbCBpc1ZhbGlkTGV2ZWwoaW50IGxldmVsKSBjb25zdDsKICAgICBib29sIGlz
TGV2ZWxDb21wbGV0ZShpbnQgbGV2ZWwpIGNvbnN0OwpAQCAtMzEwLDcgKzM0OCw3IEBAIGNsYXNz
IFRleHR1cmVEM0RfM0QgOiBwdWJsaWMgVGV4dHVyZUQzRAogY2xhc3MgVGV4dHVyZUQzRF8yREFy
cmF5IDogcHVibGljIFRleHR1cmVEM0QKIHsKICAgcHVibGljOgotICAgIFRleHR1cmVEM0RfMkRB
cnJheShSZW5kZXJlckQzRCAqcmVuZGVyZXIpOworICAgIFRleHR1cmVEM0RfMkRBcnJheShjb25z
dCBnbDo6VGV4dHVyZVN0YXRlICZkYXRhLCBSZW5kZXJlckQzRCAqcmVuZGVyZXIpOwogICAgIHZp
cnR1YWwgflRleHR1cmVEM0RfMkRBcnJheSgpOwogCiAgICAgdmlydHVhbCBJbWFnZUQzRCAqZ2V0
SW1hZ2UoaW50IGxldmVsLCBpbnQgbGF5ZXIpIGNvbnN0OwpAQCAtMzUwLDEzICszODgsMTYgQEAg
Y2xhc3MgVGV4dHVyZUQzRF8yREFycmF5IDogcHVibGljIFRleHR1cgogICAgIHZpcnR1YWwgZ2w6
OkltYWdlSW5kZXggZ2V0SW1hZ2VJbmRleChHTGludCBtaXAsIEdMaW50IGxheWVyKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZEluZGV4KGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRl
eCkgY29uc3Q7CiAKKyAgcHJvdGVjdGVkOgorICAgIHZvaWQgbWFya0FsbEltYWdlc0RpcnR5KCkg
b3ZlcnJpZGU7CisKICAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBpbml0aWFsaXpl
U3RvcmFnZShib29sIHJlbmRlclRhcmdldCk7CiAgICAgdmlydHVhbCBnbDo6RXJyb3IgY3JlYXRl
Q29tcGxldGVTdG9yYWdlKGJvb2wgcmVuZGVyVGFyZ2V0LCBUZXh0dXJlU3RvcmFnZSAqKm91dFN0
b3JhZ2UpIGNvbnN0OwogICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldENvbXBsZXRlVGV4U3RvcmFn
ZShUZXh0dXJlU3RvcmFnZSAqbmV3Q29tcGxldGVUZXhTdG9yYWdlKTsKIAogICAgIHZpcnR1YWwg
Z2w6OkVycm9yIHVwZGF0ZVN0b3JhZ2UoKTsKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdE1pcG1hcHNJ
bWFnZXMoKTsKKyAgICB2b2lkIGluaXRNaXBtYXBJbWFnZXMoKSBvdmVycmlkZTsKIAogICAgIGJv
b2wgaXNWYWxpZExldmVsKGludCBsZXZlbCkgY29uc3Q7CiAgICAgYm9vbCBpc0xldmVsQ29tcGxl
dGUoaW50IGxldmVsKSBjb25zdDsKQEAgLTM3NCw2ICs0MTUsOTEgQEAgY2xhc3MgVGV4dHVyZUQz
RF8yREFycmF5IDogcHVibGljIFRleHR1cgogICAgIEltYWdlRDNEICoqbUltYWdlQXJyYXlbZ2w6
OklNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMU107CiB9OwogCitjbGFzcyBUZXh0dXJl
RDNEX0V4dGVybmFsIDogcHVibGljIFRleHR1cmVEM0QKK3sKKyAgcHVibGljOgorICAgIFRleHR1
cmVEM0RfRXh0ZXJuYWwoY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmZGF0YSwgUmVuZGVyZXJEM0Qg
KnJlbmRlcmVyKTsKKyAgICB+VGV4dHVyZUQzRF9FeHRlcm5hbCgpIG92ZXJyaWRlOworCisgICAg
SW1hZ2VEM0QgKmdldEltYWdlKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgR0xzaXplaSBnZXRMYXllckNvdW50KGludCBsZXZlbCkgY29uc3Qgb3ZlcnJp
ZGU7CisKKyAgICBnbDo6RXJyb3Igc2V0SW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
aW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRz
ICZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3Igc2V0U3ViSW1hZ2Uo
R0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZhcmVhLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVs
VW5wYWNrU3RhdGUgJnVucGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlu
dDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBzZXRDb21wcmVzc2VkSW1h
Z2UoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5h
bEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRl
bnRzICZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBp
eGVsVW5wYWNrU3RhdGUgJnVucGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBpbWFnZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBzZXRDb21wcmVzc2Vk
U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpCb3ggJmFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBpbWFnZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9y
IGNvcHlJbWFnZShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291
cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKSBv
dmVycmlkZTsKKyAgICBnbDo6RXJyb3IgY29weVN1YkltYWdlKEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKSBvdmVycmlkZTsKKwor
ICAgIGdsOjpFcnJvciBzZXRTdG9yYWdlKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGxldmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
aW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVu
dHMgJnNpemUpIG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIHNldEltYWdlRXh0ZXJuYWwoR0xl
bnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OlN0cmVhbSAq
c3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6U3RyZWFt
OjpHTFRleHR1cmVEZXNjcmlwdGlvbiAmZGVzYykgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGJpbmRU
ZXhJbWFnZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpIG92ZXJyaWRlOworICAgIHZvaWQgcmVsZWFz
ZVRleEltYWdlKCkgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJyb3Igc2V0RUdMSW1hZ2VUYXJnZXQo
R0xlbnVtIHRhcmdldCwgZWdsOjpJbWFnZSAqaW1hZ2UpIG92ZXJyaWRlOworCisgICAgZ2w6OkVy
cm9yIGdldFJlbmRlclRhcmdldChjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsIFJlbmRlclRh
cmdldEQzRCAqKm91dFJUKSBvdmVycmlkZTsKKworICAgIGdsOjpJbWFnZUluZGV4SXRlcmF0b3Ig
aW1hZ2VJdGVyYXRvcigpIGNvbnN0IG92ZXJyaWRlOworICAgIGdsOjpJbWFnZUluZGV4IGdldElt
YWdlSW5kZXgoR0xpbnQgbWlwLCBHTGludCBsYXllcikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9v
bCBpc1ZhbGlkSW5kZXgoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4KSBjb25zdCBvdmVycmlk
ZTsKKworICBwcm90ZWN0ZWQ6CisgICAgdm9pZCBtYXJrQWxsSW1hZ2VzRGlydHkoKSBvdmVycmlk
ZTsKKworICBwcml2YXRlOgorICAgIGdsOjpFcnJvciBpbml0aWFsaXplU3RvcmFnZShib29sIHJl
bmRlclRhcmdldCkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGNyZWF0ZUNvbXBsZXRlU3RvcmFn
ZShib29sIHJlbmRlclRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRleHR1cmVTdG9yYWdlICoqb3V0VGV4U3RvcmFnZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgZ2w6
OkVycm9yIHNldENvbXBsZXRlVGV4U3RvcmFnZShUZXh0dXJlU3RvcmFnZSAqbmV3Q29tcGxldGVU
ZXhTdG9yYWdlKSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciB1cGRhdGVTdG9yYWdlKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBpbml0TWlwbWFwSW1hZ2VzKCkgb3ZlcnJpZGU7CisKKyAgICBib29s
IGlzSW1hZ2VDb21wbGV0ZShjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgpIGNvbnN0IG92ZXJy
aWRlOworfTsKIH0KIAogI2VuZGlmIC8vIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9URVhUVVJFRDNE
X0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL1RleHR1cmVTdG9yYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1RleHR1cmVTdG9yYWdlLmNwcAkocmV2aXNp
b24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9UZXh0dXJlU3RvcmFnZS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwzOSArMCwwIEBA
Ci0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBUZXh0dXJlU3RvcmFnZS5jcHA6IFNoYXJlZCBtZW1i
ZXJzIG9mIGFic3RyYWN0IHJ4OjpUZXh0dXJlU3RvcmFnZSBjbGFzcy4KLQotI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL2QzZC9UZXh0dXJlU3RvcmFnZS5oIgotI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL2QzZC9UZXh0dXJlRDNELmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
ZDNkL1JlbmRlclRhcmdldEQzRC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1JlbmRl
cmVyLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvUmVuZGVyYnVmZmVyLmgiCi0jaW5jbHVkZSAibGli
QU5HTEUvVGV4dHVyZS5oIgotCi0jaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCi0jaW5jbHVkZSAi
Y29tbW9uL21hdGh1dGlsLmgiCi0KLW5hbWVzcGFjZSByeAotewotCi1UZXh0dXJlU3RvcmFnZTo6
VGV4dHVyZVN0b3JhZ2UoKQotICAgIDogbUZpcnN0UmVuZGVyVGFyZ2V0U2VyaWFsKDApLAotICAg
ICAgbVJlbmRlclRhcmdldFNlcmlhbHNMYXllclN0cmlkZSgwKQote30KLQotdm9pZCBUZXh0dXJl
U3RvcmFnZTo6aW5pdGlhbGl6ZVNlcmlhbHModW5zaWduZWQgaW50IHJ0U2VyaWFsc1RvUmVzZXJ2
ZSwgdW5zaWduZWQgaW50IHJ0U2VyaWFsc0xheWVyU3RyaWRlKQotewotICAgIG1GaXJzdFJlbmRl
clRhcmdldFNlcmlhbCA9IFJlbmRlclRhcmdldEQzRDo6aXNzdWVTZXJpYWxzKHJ0U2VyaWFsc1Rv
UmVzZXJ2ZSk7Ci0gICAgbVJlbmRlclRhcmdldFNlcmlhbHNMYXllclN0cmlkZSA9IHJ0U2VyaWFs
c0xheWVyU3RyaWRlOwotfQotCi11bnNpZ25lZCBpbnQgVGV4dHVyZVN0b3JhZ2U6OmdldFJlbmRl
clRhcmdldFNlcmlhbChjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgpIGNvbnN0Ci17Ci0gICAg
dW5zaWduZWQgaW50IGxheWVyT2Zmc2V0ID0gKGluZGV4Lmhhc0xheWVyKCkgPyAoc3RhdGljX2Nh
c3Q8dW5zaWduZWQgaW50PihpbmRleC5sYXllckluZGV4KSAqIG1SZW5kZXJUYXJnZXRTZXJpYWxz
TGF5ZXJTdHJpZGUpIDogMCk7Ci0gICAgcmV0dXJuIG1GaXJzdFJlbmRlclRhcmdldFNlcmlhbCAr
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oaW5kZXgubWlwSW5kZXgpICsgbGF5ZXJPZmZzZXQ7
Ci19Ci0KLX0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvVHJhbnNmb3JtRmVlZGJhY2tEM0QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVHJhbnNmb3JtRmVlZGJh
Y2tEM0QuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1RyYW5zZm9ybUZlZWRiYWNrRDNELmNwcAkobm9uZXhp
c3RlbnQpCkBAIC0xLDQ2ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNCBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQot
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIFRyYW5zZm9ybUZlZWRiYWNr
RDNELmNwcCBpcyBhIG5vLW9wIGltcGxlbWVudGF0aW9uIGZvciBib3RoIHRoZSBEM0Q5IGFuZCBE
M0QxMSByZW5kZXJlcnMuCi0KLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvVHJhbnNm
b3JtRmVlZGJhY2tEM0QuaCIKLQotbmFtZXNwYWNlIHJ4Ci17Ci0KLVRyYW5zZm9ybUZlZWRiYWNr
RDNEOjpUcmFuc2Zvcm1GZWVkYmFja0QzRCgpCi17Ci19Ci0KLVRyYW5zZm9ybUZlZWRiYWNrRDNE
Ojp+VHJhbnNmb3JtRmVlZGJhY2tEM0QoKQotewotfQotCi12b2lkIFRyYW5zZm9ybUZlZWRiYWNr
RDNEOjpiZWdpbihHTGVudW0gcHJpbWl0aXZlTW9kZSkKLXsKLX0KLQotdm9pZCBUcmFuc2Zvcm1G
ZWVkYmFja0QzRDo6ZW5kKCkKLXsKLX0KLQotdm9pZCBUcmFuc2Zvcm1GZWVkYmFja0QzRDo6cGF1
c2UoKQotewotfQotCi12b2lkIFRyYW5zZm9ybUZlZWRiYWNrRDNEOjpyZXN1bWUoKQotewotfQot
Ci12b2lkIFRyYW5zZm9ybUZlZWRiYWNrRDNEOjpiaW5kR2VuZXJpY0J1ZmZlcihjb25zdCBCaW5k
aW5nUG9pbnRlcjxnbDo6QnVmZmVyPiAmYmluZGluZykKLXsKLX0KLQotdm9pZCBUcmFuc2Zvcm1G
ZWVkYmFja0QzRDo6YmluZEluZGV4ZWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBPZmZzZXRC
aW5kaW5nUG9pbnRlcjxnbDo6QnVmZmVyPiAmYmluZGluZykKLXsKLX0KLQotfQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9UcmFuc2Zvcm1G
ZWVkYmFja0QzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvVHJhbnNmb3JtRmVlZGJhY2tEM0QuaAkocmV2aXNpb24gMjA3
ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9UcmFuc2Zvcm1GZWVkYmFja0QzRC5oCShub25leGlzdGVudCkKQEAgLTEsMzUgKzAsMCBAQAot
Ly8KLS8vIENvcHlyaWdodCAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgotLy8KLQotLy8gVHJhbnNmb3JtRmVlZGJhY2tEM0QuaDogSW1wbGVtZW50cyB0aGUgYWJz
dHJhY3Qgcng6OlRyYW5zZm9ybUZlZWRiYWNrSW1wbCBjbGFzcy4KLQotI2lmbmRlZiBMSUJBTkdM
RV9SRU5ERVJFUl9EM0RfVFJBTlNGT1JNRkVFREJBQ0tEM0RfSF8KLSNkZWZpbmUgTElCQU5HTEVf
UkVOREVSRVJfRDNEX1RSQU5TRk9STUZFRURCQUNLRDNEX0hfCi0KLSNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9UcmFuc2Zvcm1GZWVkYmFja0ltcGwuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9h
bmdsZXR5cGVzLmgiCi0KLW5hbWVzcGFjZSByeAotewotCi1jbGFzcyBUcmFuc2Zvcm1GZWVkYmFj
a0QzRCA6IHB1YmxpYyBUcmFuc2Zvcm1GZWVkYmFja0ltcGwKLXsKLSAgcHVibGljOgotICAgIFRy
YW5zZm9ybUZlZWRiYWNrRDNEKCk7Ci0gICAgdmlydHVhbCB+VHJhbnNmb3JtRmVlZGJhY2tEM0Qo
KTsKLQotICAgIHZvaWQgYmVnaW4oR0xlbnVtIHByaW1pdGl2ZU1vZGUpIG92ZXJyaWRlOwotICAg
IHZvaWQgZW5kKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwYXVzZSgpIG92ZXJyaWRlOwotICAgIHZv
aWQgcmVzdW1lKCkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGJpbmRHZW5lcmljQnVmZmVyKGNvbnN0
IEJpbmRpbmdQb2ludGVyPGdsOjpCdWZmZXI+ICZiaW5kaW5nKSBvdmVycmlkZTsKLSAgICB2b2lk
IGJpbmRJbmRleGVkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgT2Zmc2V0QmluZGluZ1BvaW50
ZXI8Z2w6OkJ1ZmZlcj4gJmJpbmRpbmcpIG92ZXJyaWRlOwotfTsKLQotfQotCi0jZW5kaWYgLy8g
TElCQU5HTEVfUkVOREVSRVJfRDNEX1RSQU5TRk9STUZFRURCQUNLRDNEX0hfCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1ZhcnlpbmdQYWNr
aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL1ZhcnlpbmdQYWNraW5nLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9WYXJ5aW5n
UGFja2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NywzMyArMjY3LDM3IEBAIGJvb2wgVmFy
eWluZ1BhY2tpbmc6OnBhY2tWYXJ5aW5ncyhnbDo6SW4KICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICB9CiAKKyAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwogICAgICAgICBmb3IgKGNv
bnN0IFBhY2tlZFZhcnlpbmcgJnBhY2tlZFZhcnlpbmcgOiBwYWNrZWRWYXJ5aW5ncykKICAgICAg
ICAgewogICAgICAgICAgICAgY29uc3QgYXV0byAmdmFyeWluZyA9ICpwYWNrZWRWYXJ5aW5nLnZh
cnlpbmc7CiAKICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0cmFuc2Zvcm0gZmVlZGJhY2sgdmFy
eWluZ3MgYXJlbid0IG9wdGltaXplZCBvdXQuCi0gICAgICAgICAgICBpZiAodW5pcXVlVmFyeWlu
Z05hbWVzLmNvdW50KHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ05hbWUpID09IDApCisgICAgICAg
ICAgICBpZiAodW5pcXVlVmFyeWluZ05hbWVzLmNvdW50KHRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
Z05hbWUpID4gMCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBib29sIGZvdW5kID0g
ZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ05hbWUg
PT0gdmFyeWluZy5uYW1lKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKCFwYWNrVmFyeWluZyhwYWNrZWRWYXJ5aW5nKSkKLSAgICAgICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICAgICAgaW5mb0xvZyA8PCAiQ291bGQgbm90IHBhY2sgdmFyeWlu
ZyAiIDw8IHZhcnlpbmcubmFtZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAg
ICAgICBmb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoIWZvdW5kKQorICAgICAgICAgICAgaWYgKHRy
YW5zZm9ybUZlZWRiYWNrVmFyeWluZ05hbWUgPT0gdmFyeWluZy5uYW1lKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGlmICghcGFja1ZhcnlpbmcocGFja2VkVmFyeWluZykpCiAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpbmZvTG9nIDw8ICJUcmFuc2Zvcm0g
ZmVlZGJhY2sgdmFyeWluZyAiIDw8IHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ05hbWUKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGRvZXMgbm90IGV4aXN0IGluIHRoZSB2ZXJ0ZXgg
c2hhZGVyLiI7CisgICAgICAgICAgICAgICAgICAgIGluZm9Mb2cgPDwgIkNvdWxkIG5vdCBwYWNr
IHZhcnlpbmcgIiA8PCB2YXJ5aW5nLm5hbWU7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7
CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKworICAg
ICAgICBpZiAoIWZvdW5kKQorICAgICAgICB7CisgICAgICAgICAgICBpbmZvTG9nIDw8ICJUcmFu
c2Zvcm0gZmVlZGJhY2sgdmFyeWluZyAiIDw8IHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ05hbWUK
KyAgICAgICAgICAgICAgICAgICAgPDwgIiBkb2VzIG5vdCBleGlzdCBpbiB0aGUgdmVydGV4IHNo
YWRlci4iOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgfQogCiAg
ICAgLy8gU29ydCB0aGUgcGFja2VkIHJlZ2lzdGVyIGxpc3QKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVmVydGV4QnVmZmVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL1ZlcnRleEJ1ZmZlci5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVmVydGV4QnVmZmVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTYwLDcgKzE2MCw5IEBAIGdsOjpFcnJvciBTdHJlYW1pbmdWZXJ0ZXhC
dWZmZXJJbnRlcmZhY2UKICAgICBBTkdMRV9UUllfUkVTVUxUKGdldFNwYWNlUmVxdWlyZWQoYXR0
cmliLCBjb3VudCwgaW5zdGFuY2VzKSwgc3BhY2VSZXF1aXJlZCk7CiAKICAgICAvLyBQcm90ZWN0
IGFnYWluc3QgaW50ZWdlciBvdmVyZmxvdwotICAgIGlmICghSXNVbnNpZ25lZEFkZGl0aW9uU2Fm
ZShtV3JpdGVQb3NpdGlvbiwgc3BhY2VSZXF1aXJlZCkpCisgICAgYW5nbGU6OkNoZWNrZWROdW1l
cmljPHVuc2lnbmVkIGludD4gY2hlY2tlZFBvc2l0aW9uKG1Xcml0ZVBvc2l0aW9uKTsKKyAgICBj
aGVja2VkUG9zaXRpb24gKz0gc3BhY2VSZXF1aXJlZDsKKyAgICBpZiAoIWNoZWNrZWRQb3NpdGlv
bi5Jc1ZhbGlkKCkpCiAgICAgewogICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9N
RU1PUlksICJJbnRlcm5hbCBlcnJvciwgbmV3IHZlcnRleCBidWZmZXIgd3JpdGUgcG9zaXRpb24g
d291bGQgb3ZlcmZsb3cuIik7CiAgICAgfQpAQCAtMTg5LDExICsxOTEsMTEgQEAgZ2w6OkVycm9y
IFN0cmVhbWluZ1ZlcnRleEJ1ZmZlckludGVyZmFjZQogICAgIEFOR0xFX1RSWV9SRVNVTFQobUZh
Y3RvcnktPmdldFZlcnRleFNwYWNlUmVxdWlyZWQoYXR0cmliLCBjb3VudCwgaW5zdGFuY2VzKSwg
cmVxdWlyZWRTcGFjZSk7CiAKICAgICAvLyBBbGlnbiB0byAxNi1ieXRlIGJvdW5kYXJ5Ci0gICAg
dW5zaWduZWQgaW50IGFsaWduZWRSZXF1aXJlZFNwYWNlID0gcm91bmRVcChyZXF1aXJlZFNwYWNl
LCAxNnUpOworICAgIGF1dG8gYWxpZ25lZFJlcXVpcmVkU3BhY2UgPSByeDo6Q2hlY2tlZFJvdW5k
VXAocmVxdWlyZWRTcGFjZSwgMTZ1KTsKKyAgICBhbGlnbmVkUmVxdWlyZWRTcGFjZSArPSBtUmVz
ZXJ2ZWRTcGFjZTsKIAogICAgIC8vIFByb3RlY3QgYWdhaW5zdCBpbnRlZ2VyIG92ZXJmbG93Ci0g
ICAgaWYgKCFJc1Vuc2lnbmVkQWRkaXRpb25TYWZlKG1SZXNlcnZlZFNwYWNlLCBhbGlnbmVkUmVx
dWlyZWRTcGFjZSkgfHwKLSAgICAgICAgYWxpZ25lZFJlcXVpcmVkU3BhY2UgPCByZXF1aXJlZFNw
YWNlKQorICAgIGlmICghYWxpZ25lZFJlcXVpcmVkU3BhY2UuSXNWYWxpZCgpKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICJVbmFibGUgdG8gcmVzZXJ2ZSAldSBleHRyYSBieXRlcyBpbiBpbnRlcm5hbCB2
ZXJ0ZXggYnVmZmVyLCAiCkBAIC0yMDEsNyArMjAzLDcgQEAgZ2w6OkVycm9yIFN0cmVhbWluZ1Zl
cnRleEJ1ZmZlckludGVyZmFjZQogICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkU3Bh
Y2UpOwogICAgIH0KIAotICAgIG1SZXNlcnZlZFNwYWNlICs9IGFsaWduZWRSZXF1aXJlZFNwYWNl
OworICAgIG1SZXNlcnZlZFNwYWNlID0gYWxpZ25lZFJlcXVpcmVkU3BhY2UuVmFsdWVPckRpZSgp
OwogCiAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1ZlcnRleERhdGFNYW5hZ2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL1ZlcnRleERhdGFNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9WZXJ0ZXhEYXRhTWFu
YWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDggQEAKICNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyZXJEM0QuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvVmVydGV4QnVmZmVyLmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKwogbmFt
ZXNwYWNlIHJ4CiB7CiBuYW1lc3BhY2UKQEAgLTExOCwyNyArMTIwLDE2IEBAIFRyYW5zbGF0ZWRB
dHRyaWJ1dGU6OlRyYW5zbGF0ZWRBdHRyaWJ1dGUKIAogZ2w6OkVycm9yT3JSZXN1bHQ8dW5zaWdu
ZWQgaW50PiBUcmFuc2xhdGVkQXR0cmlidXRlOjpjb21wdXRlT2Zmc2V0KEdMaW50IHN0YXJ0VmVy
dGV4KSBjb25zdAogewotICAgIHVuc2lnbmVkIGludCBvZmZzZXQgPSBiYXNlT2Zmc2V0OwotICAg
IGlmICh1c2VzRmlyc3RWZXJ0ZXhPZmZzZXQpCisgICAgaWYgKCF1c2VzRmlyc3RWZXJ0ZXhPZmZz
ZXQpCiAgICAgewotICAgICAgICB1bnNpZ25lZCBpbnQgc3RhcnRWZXJ0ZXhVbnNpZ25lZCA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc3RhcnRWZXJ0ZXgpOworICAgICAgICByZXR1cm4gYmFz
ZU9mZnNldDsKKyAgICB9CiAKLSAgICAgICAgaWYgKCFJc1Vuc2lnbmVkTXVsdGlwbGljYXRpb25T
YWZlKHN0cmlkZSwgc3RhcnRWZXJ0ZXhVbnNpZ25lZCkpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJNdWx0aXBsaWNhdGlvbiBvdmVyZmxvdyBpbiBUcmFuc2xhdGVkQXR0cmli
dXRlOjpjb21wdXRlT2Zmc2V0Iik7Ci0gICAgICAgIH0KKyAgICBDaGVja2VkTnVtZXJpYzx1bnNp
Z25lZCBpbnQ+IG9mZnNldDsKIAotICAgICAgICB1bnNpZ25lZCBpbnQgc3RyaWRlT2Zmc2V0ID0g
c3RyaWRlICogc3RhcnRWZXJ0ZXhVbnNpZ25lZDsKLSAgICAgICAgaWYgKCFJc1Vuc2lnbmVkQWRk
aXRpb25TYWZlKG9mZnNldCwgc3RyaWRlT2Zmc2V0KSkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkFkZGl0aW9uIG92ZXJmbG93IGluIFRyYW5zbGF0ZWRBdHRyaWJ1dGU6OmNv
bXB1dGVPZmZzZXQiKTsKLSAgICAgICAgfQotCi0gICAgICAgIG9mZnNldCArPSBzdHJpZGVPZmZz
ZXQ7Ci0gICAgfQotICAgIHJldHVybiBvZmZzZXQ7CisgICAgb2Zmc2V0ID0gYmFzZU9mZnNldCAr
IHN0cmlkZSAqIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc3RhcnRWZXJ0ZXgpOworICAgIEFO
R0xFX1RSWV9DSEVDS0VEX01BVEgob2Zmc2V0KTsKKyAgICByZXR1cm4gb2Zmc2V0LlZhbHVlT3JE
aWUoKTsKIH0KIAogVmVydGV4U3RvcmFnZVR5cGUgQ2xhc3NpZnlBdHRyaWJ1dGVTdG9yYWdlKGNv
bnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYikKQEAgLTM1MSw3ICszNDIsMTAgQEAgZ2w6
OkVycm9yIFZlcnRleERhdGFNYW5hZ2VyOjpTdG9yZVN0YXRpYwogCiAgICAgVmVydGV4QnVmZmVy
ICp2ZXJ0ZXhCdWZmZXIgPSBzdGF0aWNCdWZmZXItPmdldFZlcnRleEJ1ZmZlcigpOwogCi0gICAg
aWYgKCFJc1Vuc2lnbmVkQWRkaXRpb25TYWZlKHN0cmVhbU9mZnNldCwgZmlyc3RFbGVtZW50T2Zm
c2V0KSkKKyAgICBDaGVja2VkTnVtZXJpYzx1bnNpZ25lZCBpbnQ+IGNoZWNrZWRPZmZzZXQoc3Ry
ZWFtT2Zmc2V0KTsKKyAgICBjaGVja2VkT2Zmc2V0ICs9IGZpcnN0RWxlbWVudE9mZnNldDsKKwor
ICAgIGlmICghY2hlY2tlZE9mZnNldC5Jc1ZhbGlkKCkpCiAgICAgewogICAgICAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICJJbnRlZ2VyIG92ZXJmbG93IGluIFZlcnRleERhdGFNYW5hZ2VyOjpTdG9yZVN0YXRpY0F0dHJp
YiIpOwpAQCAtMzc1LDcgKzM2OSw3IEBAIGdsOjpFcnJvciBWZXJ0ZXhEYXRhTWFuYWdlcjo6c3Rv
cmVEeW5hbWkKICAgICBHTHNpemVpIGluc3RhbmNlcykKIHsKICAgICAvLyBJbnN0YW50aWF0aW5n
IHRoaXMgY2xhc3Mgd2lsbCBlbnN1cmUgdGhlIHN0cmVhbWluZyBidWZmZXIgaXMgbmV2ZXIgbGVm
dCBtYXBwZWQuCi0gICAgY2xhc3MgU3RyZWFtaW5nQnVmZmVyVW5tYXBwZXIgZmluYWwgOiBhbmds
ZTo6Tm9uQ29weWFibGUKKyAgICBjbGFzcyBTdHJlYW1pbmdCdWZmZXJVbm1hcHBlciBmaW5hbCA6
IE5vbkNvcHlhYmxlCiAgICAgewogICAgICAgcHVibGljOgogICAgICAgICBTdHJlYW1pbmdCdWZm
ZXJVbm1hcHBlcihTdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UgKnN0cmVhbWluZ0J1ZmZl
cikKQEAgLTM5MywxNCArMzg3LDE0IEBAIGdsOjpFcnJvciBWZXJ0ZXhEYXRhTWFuYWdlcjo6c3Rv
cmVEeW5hbWkKICAgICBTdHJlYW1pbmdCdWZmZXJVbm1hcHBlciBsb2NhbFVubWFwcGVyKG1TdHJl
YW1pbmdCdWZmZXIpOwogCiAgICAgLy8gUmVzZXJ2ZSB0aGUgcmVxdWlyZWQgc3BhY2UgZm9yIHRo
ZSBkeW5hbWljIGJ1ZmZlcnMuCi0gICAgZm9yIChhdXRvIGF0dHJpYkluZGV4IDogYW5nbGU6Okl0
ZXJhdGVCaXRTZXQoZHluYW1pY0F0dHJpYnNNYXNrKSkKKyAgICBmb3IgKGF1dG8gYXR0cmliSW5k
ZXggOiBJdGVyYXRlQml0U2V0KGR5bmFtaWNBdHRyaWJzTWFzaykpCiAgICAgewogICAgICAgICBj
b25zdCBhdXRvICZkeW5hbWljQXR0cmliID0gKCp0cmFuc2xhdGVkQXR0cmlicylbYXR0cmliSW5k
ZXhdOwogICAgICAgICBBTkdMRV9UUlkocmVzZXJ2ZVNwYWNlRm9yQXR0cmliKGR5bmFtaWNBdHRy
aWIsIGNvdW50LCBpbnN0YW5jZXMpKTsKICAgICB9CiAKICAgICAvLyBTdG9yZSBkeW5hbWljIGF0
dHJpYnV0ZXMKLSAgICBmb3IgKGF1dG8gYXR0cmliSW5kZXggOiBhbmdsZTo6SXRlcmF0ZUJpdFNl
dChkeW5hbWljQXR0cmlic01hc2spKQorICAgIGZvciAoYXV0byBhdHRyaWJJbmRleCA6IEl0ZXJh
dGVCaXRTZXQoZHluYW1pY0F0dHJpYnNNYXNrKSkKICAgICB7CiAgICAgICAgIGF1dG8gKmR5bmFt
aWNBdHRyaWIgPSAmKCp0cmFuc2xhdGVkQXR0cmlicylbYXR0cmliSW5kZXhdOwogICAgICAgICBB
TkdMRV9UUlkoc3RvcmVEeW5hbWljQXR0cmliKGR5bmFtaWNBdHRyaWIsIHN0YXJ0LCBjb3VudCwg
aW5zdGFuY2VzKSk7CkBAIC00MTQsNyArNDA4LDcgQEAgdm9pZCBWZXJ0ZXhEYXRhTWFuYWdlcjo6
UHJvbW90ZUR5bmFtaWNBdAogICAgIGNvbnN0IGdsOjpBdHRyaWJ1dGVzTWFzayAmZHluYW1pY0F0
dHJpYnNNYXNrLAogICAgIEdMc2l6ZWkgY291bnQpCiB7Ci0gICAgZm9yIChhdXRvIGF0dHJpYklu
ZGV4IDogYW5nbGU6Okl0ZXJhdGVCaXRTZXQoZHluYW1pY0F0dHJpYnNNYXNrKSkKKyAgICBmb3Ig
KGF1dG8gYXR0cmliSW5kZXggOiBJdGVyYXRlQml0U2V0KGR5bmFtaWNBdHRyaWJzTWFzaykpCiAg
ICAgewogICAgICAgICBjb25zdCBhdXRvICZkeW5hbWljQXR0cmliID0gdHJhbnNsYXRlZEF0dHJp
YnNbYXR0cmliSW5kZXhdOwogICAgICAgICBnbDo6QnVmZmVyICpidWZmZXIgPSBkeW5hbWljQXR0
cmliLmF0dHJpYnV0ZS0+YnVmZmVyLmdldCgpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9Xb3JrYXJvdW5kc0QzRC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvV29y
a2Fyb3VuZHNEM0QuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9Xb3JrYXJvdW5kc0QzRC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNywzNSArMTcsMjIgQEAgbmFtZXNwYWNlIHJ4CiB7CiBzdHJ1Y3QgRDNEQ29tcGls
ZXJXb3JrYXJvdW5kcwogewotICAgIEQzRENvbXBpbGVyV29ya2Fyb3VuZHMoKQotICAgICAgICA6
IHNraXBPcHRpbWl6YXRpb24oZmFsc2UpLCB1c2VNYXhPcHRpbWl6YXRpb24oZmFsc2UpLCBlbmFi
bGVJRUVFU3RyaWN0bmVzcyhmYWxzZSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBza2lwT3B0
aW1pemF0aW9uOwotICAgIGJvb2wgdXNlTWF4T3B0aW1pemF0aW9uOworICAgIGJvb2wgc2tpcE9w
dGltaXphdGlvbiAgID0gZmFsc2U7CisgICAgYm9vbCB1c2VNYXhPcHRpbWl6YXRpb24gPSBmYWxz
ZTsKIAogICAgIC8vIElFRUUgc3RyaWN0bmVzcyBuZWVkcyB0byBiZSBlbmFibGVkIGZvciBOQU5z
IHRvIHdvcmsuCi0gICAgYm9vbCBlbmFibGVJRUVFU3RyaWN0bmVzczsKKyAgICBib29sIGVuYWJs
ZUlFRUVTdHJpY3RuZXNzID0gZmFsc2U7CiB9OwogCiBzdHJ1Y3QgV29ya2Fyb3VuZHNEM0QKIHsK
LSAgICBXb3JrYXJvdW5kc0QzRCgpCi0gICAgICAgIDogbXJ0UGVyZldvcmthcm91bmQoZmFsc2Up
LAotICAgICAgICAgIHNldERhdGFGYXN0ZXJUaGFuSW1hZ2VVcGxvYWQoZmFsc2UpLAotICAgICAg
ICAgIHplcm9NYXhMb2RXb3JrYXJvdW5kKGZhbHNlKSwKLSAgICAgICAgICB1c2VJbnN0YW5jZWRQ
b2ludFNwcml0ZUVtdWxhdGlvbihmYWxzZSkKLSAgICB7Ci0gICAgfQotCiAgICAgLy8gT24gc29t
ZSBzeXN0ZW1zLCBoYXZpbmcgZXh0cmEgcmVuZGVydGFyZ2V0cyB0aGFuIG5lY2Vzc2FyeSBzbG93
cyBkb3duIHRoZSBzaGFkZXIuCiAgICAgLy8gV2UgY2FuIGZpeCB0aGlzIGJ5IG9wdGltaXppbmcg
dGhvc2Ugb3V0IG9mIHRoZSBzaGFkZXIuIEF0IHRoZSBzYW1lIHRpbWUsIHdlIGNhbgogICAgIC8v
IHdvcmsgYXJvdW5kIGEgYnVnIG9uIHNvbWUgblZpZGlhIGRyaXZlcnMgdGhhdCB0aGV5IGlnbm9y
ZSAibnVsbCIgcmVuZGVyIHRhcmdldHMKICAgICAvLyBpbiBEM0QxMSwgYnkgY29tcGFjdGluZyB0
aGUgYWN0aXZlIGNvbG9yIGF0dGFjaG1lbnRzIGxpc3QgdG8gb21pdCBudWxsIGVudHJpZXMuCi0g
ICAgYm9vbCBtcnRQZXJmV29ya2Fyb3VuZDsKKyAgICBib29sIG1ydFBlcmZXb3JrYXJvdW5kID0g
ZmFsc2U7CiAKLSAgICBib29sIHNldERhdGFGYXN0ZXJUaGFuSW1hZ2VVcGxvYWQ7CisgICAgYm9v
bCBzZXREYXRhRmFzdGVyVGhhbkltYWdlVXBsb2FkID0gZmFsc2U7CiAKICAgICAvLyBTb21lIHJl
bmRlcmVycyBjYW4ndCBkaXNhYmxlIG1pcG1hcHMgb24gYSBtaXBtYXBwZWQgdGV4dHVyZSAoaS5l
LiBzb2xlbHkgc2FtcGxlIGZyb20gbGV2ZWwKICAgICAvLyB6ZXJvLCBhbmQgaWdub3JlIHRoZSBv
dGhlciBsZXZlbHMpLiBEM0QxMSBGZWF0dXJlIExldmVsIDEwKyBkb2VzIHRoaXMgYnkgc2V0dGlu
ZyBNYXhMT0QgdG8KQEAgLTU0LDEzICs0MSw2MSBAQCBzdHJ1Y3QgV29ya2Fyb3VuZHNEM0QKICAg
ICAvLyBhcHBsaWNhdGlvbiBjcmVhdGVzIGEgbWlwbWFwcGVkIHRleHR1cmUyRCwgYnV0IHNldHMg
R0xfVEVYVFVSRV9NSU5fRklMVEVSIHRvIEdMX05FQVJFU1QKICAgICAvLyAoaS5lIGRpc2FibGVz
IG1pcG1hcHMpLiBUbyB3b3JrIGFyb3VuZCB0aGlzLCBEM0QxMSBGTDlfMyBoYXMgdG8gY3JlYXRl
IHR3byBjb3BpZXMgb2YgdGhlCiAgICAgLy8gdGV4dHVyZS4gVGhlIHRleHR1cmVzJyBsZXZlbCB6
ZXJvcyBhcmUgaWRlbnRpY2FsLCBidXQgb25seSBvbmUgdGV4dHVyZSBoYXMgbWlwcy4KLSAgICBi
b29sIHplcm9NYXhMb2RXb3JrYXJvdW5kOworICAgIGJvb2wgemVyb01heExvZFdvcmthcm91bmQg
PSBmYWxzZTsKIAogICAgIC8vIFNvbWUgcmVuZGVyZXJzIGRvIG5vdCBzdXBwb3J0IEdlb21ldHJ5
IFNoYWRlcnMgc28gdGhlIEdlb21ldHJ5IFNoYWRlci1iYXNlZCBQb2ludFNwcml0ZQogICAgIC8v
IGVtdWxhdGlvbiB3aWxsIG5vdCB3b3JrLiBUbyB3b3JrIGFyb3VuZCB0aGlzLCBEM0QxMSBGTDlf
MyBoYXMgdG8gdXNlIGEgZGlmZmVyZW50IHBvaW50c3ByaXRlCiAgICAgLy8gZW11bGF0aW9uIHRo
YXQgaXMgaW1wbGVtZW50ZWQgdXNpbmcgaW5zdGFuY2VkIHF1YWRzLgotICAgIGJvb2wgdXNlSW5z
dGFuY2VkUG9pbnRTcHJpdGVFbXVsYXRpb247CisgICAgYm9vbCB1c2VJbnN0YW5jZWRQb2ludFNw
cml0ZUVtdWxhdGlvbiA9IGZhbHNlOworCisgICAgLy8gQSBidWcgZml4ZWQgaW4gTlZJRElBIGRy
aXZlciB2ZXJzaW9uIDM0Ny44OCA8IHggPD0gMzY4LjgxIHRyaWdnZXJzIGEgVERSIHdoZW4gdXNp
bmcKKyAgICAvLyBDb3B5U3VicmVzb3VyY2VSZWdpb24gZnJvbSBhIHN0YWdpbmcgdGV4dHVyZSB0
byBhIGRlcHRoL3N0ZW5jaWwgaW4gRDNEMTEuIFRoZSB3b3JrYXJvdW5kCisgICAgLy8gaXMgdG8g
dXNlIFVwZGF0ZVN1YnJlc291cmNlIHRvIHRyaWdnZXIgYW4gZXh0cmEgY29weS4gV2UgZGlzYWJs
ZSB0aGlzIHdvcmthcm91bmQgb24gbmV3ZXIKKyAgICAvLyBOVklESUEgZHJpdmVyIHZlcnNpb25z
IGJlY2F1c2Ugb2YgYSBzZWNvbmQgZHJpdmVyIGJ1ZyBwcmVzZW50IHdpdGggdGhlIHdvcmthcm91
bmQgZW5hYmxlZC4KKyAgICAvLyAoU2VlOiBodHRwOi8vYW5nbGVidWcuY29tLzE0NTIpCisgICAg
Ym9vbCBkZXB0aFN0ZW5jaWxCbGl0RXh0cmFDb3B5ID0gZmFsc2U7CisKKyAgICAvLyBUaGUgSExT
TCBvcHRpbWl6ZXIgaGFzIGEgYnVnIHdpdGggb3B0aW1pemluZyAicG93IiBpbiBjZXJ0YWluIGlu
dGVnZXItdmFsdWVkIGV4cHJlc3Npb25zLgorICAgIC8vIFdlIGNhbiB3b3JrIGFyb3VuZCB0aGlz
IGJ5IGV4cGFuZGluZyB0aGUgcG93IGludG8gYSBzZXJpZXMgb2YgbXVsdGlwbGllcyBpZiB3ZSdy
ZSBydW5uaW5nCisgICAgLy8gdW5kZXIgdGhlIGFmZmVjdGVkIGNvbXBpbGVyLgorICAgIGJvb2wg
ZXhwYW5kSW50ZWdlclBvd0V4cHJlc3Npb25zID0gZmFsc2U7CisKKyAgICAvLyBOVklESUEgZHJp
dmVycyBzb21ldGltZXMgd3JpdGUgb3V0LW9mLW9yZGVyIHJlc3VsdHMgdG8gU3RyZWFtT3V0IGJ1
ZmZlcnMgd2hlbiB0cmFuc2Zvcm0KKyAgICAvLyBmZWVkYmFjayBpcyB1c2VkIHRvIHJlcGVhdGVk
bHkgd3JpdGUgdG8gdGhlIHNhbWUgYnVmZmVyIHBvc2l0aW9ucy4KKyAgICBib29sIGZsdXNoQWZ0
ZXJFbmRpbmdUcmFuc2Zvcm1GZWVkYmFjayA9IGZhbHNlOworCisgICAgLy8gU29tZSBkcml2ZXJz
IChOVklESUEpIGRvIG5vdCB0YWtlIGludG8gYWNjb3VudCB0aGUgYmFzZSBsZXZlbCBvZiB0aGUg
dGV4dHVyZSBpbiB0aGUgcmVzdWx0cworICAgIC8vIG9mIHRoZSBITFNMIEdldERpbWVuc2lvbnMg
YnVpbHRpbi4KKyAgICBib29sIGdldERpbWVuc2lvbnNJZ25vcmVzQmFzZUxldmVsID0gZmFsc2U7
CisKKyAgICAvLyBPbiBzb21lIEludGVsIGRyaXZlcnMsIEhMU0wncyBmdW5jdGlvbiB0ZXh0dXJl
LkxvYWQgcmV0dXJucyAwIHdoZW4gdGhlIHBhcmFtZXRlciBMb2NhdGlvbgorICAgIC8vIGlzIG5l
Z2F0aXZlLCBldmVuIGlmIHRoZSBzdW0gb2YgT2Zmc2V0IGFuZCBMb2NhdGlvbiBpcyBpbiByYW5n
ZS4gVGhpcyBtYXkgY2F1c2UgZXJyb3JzIHdoZW4KKyAgICAvLyB0cmFuc2xhdGluZyBHTFNMJ3Mg
ZnVuY3Rpb24gdGV4ZWxGZXRjaE9mZnNldCBpbnRvIHRleHR1cmUuTG9hZCwgYXMgaXQgaXMgdmFs
aWQgZm9yCisgICAgLy8gdGV4ZWxGZXRjaE9mZnNldCB0byB1c2UgbmVnYXRpdmUgdGV4dHVyZSBj
b29yZGluYXRlcyBhcyBpdHMgcGFyYW1ldGVyIFAgd2hlbiB0aGUgc3VtIG9mIFAKKyAgICAvLyBh
bmQgT2Zmc2V0IGlzIGluIHJhbmdlLiBUbyB3b3JrIGFyb3VuZCB0aGlzLCB3ZSB0cmFuc2xhdGUg
dGV4ZWxGZXRjaE9mZnNldCBpbnRvIHRleGVsRmV0Y2gKKyAgICAvLyBieSBhZGRpbmcgT2Zmc2V0
IGRpcmVjdGx5IHRvIExvY2F0aW9uIGJlZm9yZSByZWFkaW5nIHRoZSB0ZXh0dXJlLgorICAgIGJv
b2wgcHJlQWRkVGV4ZWxGZXRjaE9mZnNldHMgPSBmYWxzZTsKKworICAgIC8vIE9uIHNvbWUgQU1E
IGRyaXZlcnMsIDF4MSBhbmQgMngyIG1pcHMgb2YgZGVwdGgvc3RlbmNpbCB0ZXh0dXJlcyBhcmVu
J3Qgc2FtcGxlZCBjb3JyZWN0bHkuCisgICAgLy8gV2UgY2FuIHdvcmsgYXJvdW5kIHRoaXMgYnVn
IGJ5IGRvaW5nIGFuIGludGVybmFsIGJsaXQgdG8gYSB0ZW1wb3Jhcnkgc2luZ2xlLWNoYW5uZWwg
dGV4dHVyZQorICAgIC8vIGJlZm9yZSB3ZSBzYW1wbGUuCisgICAgYm9vbCBlbXVsYXRlVGlueVN0
ZW5jaWxUZXh0dXJlcyA9IGZhbHNlOworCisgICAgLy8gSW4gSW50ZWwgZHJpdmVyLCB0aGUgZGF0
YSB3aXRoIGZvcm1hdCBEWEdJX0ZPUk1BVF9CNUc2UjVfVU5PUk0gd2lsbCBiZSBwYXJzZWQgaW5j
b3JyZWN0bHkuCisgICAgLy8gVGhpcyB3b3JrYXJvdWQgd2lsbCBkaXNhYmxlIEI1RzZSNSBzdXBw
b3J0IHdoZW4gaXQncyBJbnRlbCBkcml2ZXIuIEJ5IGRlZmF1bHQsIGl0IHdpbGwgdXNlCisgICAg
Ly8gUjhHOEI4QTggZm9ybWF0LgorICAgIGJvb2wgZGlzYWJsZUI1RzZSNVN1cHBvcnQgPSBmYWxz
ZTsKKworICAgIC8vIE9uIHNvbWUgSW50ZWwgZHJpdmVycywgZXZhbHVhdGluZyB1bmFyeSBtaW51
cyBvcGVyYXRvciBvbiBpbnRlZ2VyIG1heSBnZXQgd3JvbmcgYW5zd2VyIGluCisgICAgLy8gdmVy
dGV4IHNoYWRlcnMuIFRvIHdvcmsgYXJvdW5kIHRoaXMgYnVnLCB3ZSB0cmFuc2xhdGUgLShpbnQp
IGludG8gfihpbnQpKzEuCisgICAgYm9vbCByZXdyaXRlVW5hcnlNaW51c09wZXJhdG9yID0gZmFs
c2U7CisKKyAgICAvLyBPbiBzb21lIEludGVsIGRyaXZlcnMsIHVzaW5nIGlzbmFuKCkgb24gaGln
aHAgZmxvYXQgd2lsbCBnZXQgd3JvbmcgYW5zd2VyLiBUbyB3b3JrIGFyb3VuZAorICAgIC8vIHRo
aXMgYnVnLCB3ZSB1c2UgYW4gZXhwcmVzc2lvbiB0byBlbXVsYXRlIGZ1bmN0aW9uIGlzbmFuKCku
IFRyYWNraW5nIGJ1ZzoKKyAgICAvLyBodHRwczovL2NyYnVnLmNvbS82NTA1NDcKKyAgICBib29s
IGVtdWxhdGVJc25hbkZsb2F0ID0gZmFsc2U7CiB9OwotfQorCit9ICAvLyBuYW1lc3BhY2UgcngK
IAogI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfV09SS0FST1VORFNEM0RfSF8KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvY29w
eWltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2NvcHlpbWFnZS5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvY29weWltYWdl
LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDIyICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMp
IDIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBj
b3B5aW1hZ2UuY3BwOiBEZWZpbmVzIGltYWdlIGNvcHlpbmcgZnVuY3Rpb25zCi0KLSNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvY29weWltYWdlLmgiCi0KLW5hbWVzcGFjZSByeAotewot
Ci12b2lkIENvcHlCR1JBOFRvUkdCQTgoY29uc3QgdWludDhfdCAqc291cmNlLCB1aW50OF90ICpk
ZXN0KQotewotICAgIHVpbnQzMl90IGFyZ2IgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
MzJfdCo+KHNvdXJjZSk7Ci0gICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihkZXN0KSA9
IChhcmdiICYgMHhGRjAwRkYwMCkgfCAgICAgICAvLyBLZWVwIGFscGhhIGFuZCBncmVlbgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXJnYiAmIDB4MDBGRjAwMDAp
ID4+IDE2IHwgLy8gTW92ZSByZWQgdG8gYmx1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoYXJnYiAmIDB4MDAwMDAwRkYpIDw8IDE2OyAgLy8gTW92ZSBibHVlIHRv
IHJlZAotfQotCi19CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2NvcHlpbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvY29weWltYWdlLmgJKHJldmlzaW9uIDIw
NzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvY29weWltYWdlLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNSArMCwwIEBACi0vLwotLy8gQ29w
eXJpZ2h0IChjKSAyMDEzLTIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCi0vLwotCi0vLyBjb3B5aW1hZ2UuaDogRGVmaW5lcyBpbWFnZSBjb3B5aW5nIGZ1bmN0aW9u
cwotCi0jaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9DT1BZSU1BR0VfSF8KLSNkZWZpbmUg
TElCQU5HTEVfUkVOREVSRVJfRDNEX0NPUFlJTUFHRV9IXwotCi0jaW5jbHVkZSAiY29tbW9uL21h
dGh1dGlsLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvYW5nbGV0eXBlcy5oIgotCi0jaW5jbHVkZSA8
c3RkaW50Lmg+Ci0KLW5hbWVzcGFjZSByeAotewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgc291cmNl
VHlwZSwgdHlwZW5hbWUgY29sb3JEYXRhVHlwZT4KLXZvaWQgUmVhZENvbG9yKGNvbnN0IHVpbnQ4
X3QgKnNvdXJjZSwgdWludDhfdCAqZGVzdCk7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBkZXN0VHlw
ZSwgdHlwZW5hbWUgY29sb3JEYXRhVHlwZT4KLXZvaWQgV3JpdGVDb2xvcihjb25zdCB1aW50OF90
ICpzb3VyY2UsIHVpbnQ4X3QgKmRlc3QpOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgc291cmNlVHlw
ZSwgdHlwZW5hbWUgZGVzdFR5cGUsIHR5cGVuYW1lIGNvbG9yRGF0YVR5cGU+Ci12b2lkIENvcHlQ
aXhlbChjb25zdCB1aW50OF90ICpzb3VyY2UsIHVpbnQ4X3QgKmRlc3QpOwotCi12b2lkIENvcHlC
R1JBOFRvUkdCQTgoY29uc3QgdWludDhfdCAqc291cmNlLCB1aW50OF90ICpkZXN0KTsKLQotfQot
Ci0jaW5jbHVkZSAiY29weWltYWdlLmlubCIKLQotI2VuZGlmIC8vIExJQkFOR0xFX1JFTkRFUkVS
X0QzRF9DT1BZSU1BR0VfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvY29weWltYWdlLmlubAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2NvcHlpbWFnZS5pbmwJKHJl
dmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvY29weWltYWdlLmlubAkobm9uZXhpc3RlbnQpCkBAIC0xLDMyICswLDAgQEAK
LS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCi0vLwotCi0vLyBjb3B5aW1hZ2UuaW5sOiBEZWZpbmVzIGltYWdlIGNvcHlpbmcg
ZnVuY3Rpb25zCi0KLW5hbWVzcGFjZSByeAotewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgc291cmNl
VHlwZSwgdHlwZW5hbWUgY29sb3JEYXRhVHlwZT4KLWlubGluZSB2b2lkIFJlYWRDb2xvcihjb25z
dCB1aW50OF90ICpzb3VyY2UsIHVpbnQ4X3QgKmRlc3QpCi17Ci0gICAgc291cmNlVHlwZTo6cmVh
ZENvbG9yKHJlaW50ZXJwcmV0X2Nhc3Q8Z2w6OkNvbG9yPGNvbG9yRGF0YVR5cGU+Kj4oZGVzdCks
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc291cmNlVHlwZSo+KHNvdXJjZSkpOwotfQotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgZGVzdFR5cGUsIHR5cGVuYW1lIGNvbG9yRGF0YVR5cGU+Ci1pbmxpbmUg
dm9pZCBXcml0ZUNvbG9yKGNvbnN0IHVpbnQ4X3QgKnNvdXJjZSwgdWludDhfdCAqZGVzdCkKLXsK
LSAgICBkZXN0VHlwZTo6d3JpdGVDb2xvcihyZWludGVycHJldF9jYXN0PGRlc3RUeXBlKj4oZGVz
dCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ2w6OkNvbG9yPGNvbG9yRGF0YVR5cGU+Kj4oc291
cmNlKSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBzb3VyY2VUeXBlLCB0eXBlbmFtZSBkZXN0
VHlwZSwgdHlwZW5hbWUgY29sb3JEYXRhVHlwZT4KLWlubGluZSB2b2lkIENvcHlQaXhlbChjb25z
dCB1aW50OF90ICpzb3VyY2UsIHVpbnQ4X3QgKmRlc3QpCi17Ci0gICAgY29sb3JEYXRhVHlwZSB0
ZW1wOwotICAgIFJlYWRDb2xvcjxzb3VyY2VUeXBlLCBjb2xvckRhdGFUeXBlPihzb3VyY2UsICZ0
ZW1wKTsKLSAgICBXcml0ZUNvbG9yPGRlc3RUeXBlLCBjb2xvckRhdGFUeXBlPigmdGVtcCwgZGVz
dCk7Ci19Ci0KLX0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZm9ybWF0dXRpbHNEM0QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZm9ybWF0dXRpbHNEM0QuY3Bw
CShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2Zvcm1hdHV0aWxzRDNELmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDE0
NyArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gZm9ybWF0dXRpbHM5LmNwcDogUXVlcmllcyBm
b3IgR0wgaW1hZ2UgZm9ybWF0cyBhbmQgdGhlaXIgdHJhbnNsYXRpb25zIHRvIEQzRAotLy8gZm9y
bWF0cy4KLQotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9mb3JtYXR1dGlsc0QzRC5o
IgotCi0jaW5jbHVkZSA8bWFwPgotCi0jaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCi0jaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2ltYWdlZm9ybWF0cy5oIgotI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2QzZC9jb3B5aW1hZ2UuaCIKLQotbmFtZXNwYWNlIHJ4Ci17Ci0KLXR5cGVk
ZWYgc3RkOjpwYWlyPEdMZW51bSwgR0xlbnVtPiBGb3JtYXRUeXBlUGFpcjsKLXR5cGVkZWYgc3Rk
OjpwYWlyPEZvcm1hdFR5cGVQYWlyLCBDb2xvcldyaXRlRnVuY3Rpb24+IEZvcm1hdFdyaXRlRnVu
Y3Rpb25QYWlyOwotdHlwZWRlZiBzdGQ6Om1hcDxGb3JtYXRUeXBlUGFpciwgQ29sb3JXcml0ZUZ1
bmN0aW9uPiBGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwOwotCi1zdGF0aWMgaW5saW5lIHZvaWQgSW5z
ZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoRm9ybWF0V3JpdGVGdW5jdGlvbk1hcCAqbWFw
LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvcldyaXRlRnVuY3Rpb24gd3JpdGVGdW5jKQot
ewotICAgIG1hcC0+aW5zZXJ0KEZvcm1hdFdyaXRlRnVuY3Rpb25QYWlyKEZvcm1hdFR5cGVQYWly
KGZvcm1hdCwgdHlwZSksIHdyaXRlRnVuYykpOwotfQotCi1zdGF0aWMgRm9ybWF0V3JpdGVGdW5j
dGlvbk1hcCBCdWlsZEZvcm1hdFdyaXRlRnVuY3Rpb25NYXAoKQotewotICAgIEZvcm1hdFdyaXRl
RnVuY3Rpb25NYXAgbWFwOwotCi0gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8IEZvcm1hdCAgICAgICAgICAgICAgIHwgVHlwZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCBDb2xvciB3cml0ZSBmdW5jdGlvbiAgICAgICAgICAgICB8Ci0gICAgSW5zZXJ0Rm9y
bWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkdCQSwgICAgICAgICAgICAgICBHTF9V
TlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjhHOEI4QTgsIEdMZmxv
YXQ+ICAgICApOwotICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdM
X1JHQkEsICAgICAgICAgICAgICAgR0xfQllURSwgICAgICAgICAgICAgICAgICAgICAgICAgICBX
cml0ZUNvbG9yPFI4RzhCOEE4UywgR0xmbG9hdD4gICAgKTsKLSAgICBJbnNlcnRGb3JtYXRXcml0
ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SR0JBLCAgICAgICAgICAgICAgIEdMX1VOU0lHTkVE
X1NIT1JUXzRfNF80XzQsICAgICAgICAgV3JpdGVDb2xvcjxSNEc0QjRBNCwgR0xmbG9hdD4gICAg
ICk7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkdCQSwg
ICAgICAgICAgICAgICBHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xLCAgICAgICAgIFdyaXRlQ29s
b3I8UjVHNUI1QTEsIEdMZmxvYXQ+ICAgICApOwotICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rp
b25NYXBwaW5nKCZtYXAsIEdMX1JHQkEsICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5UXzJf
MTBfMTBfMTBfUkVWLCAgICBXcml0ZUNvbG9yPFIxMEcxMEIxMEEyLCBHTGZsb2F0PiAgKTsKLSAg
ICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SR0JBLCAgICAgICAg
ICAgICAgIEdMX0ZMT0FULCAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSMzJH
MzJCMzJBMzJGLCBHTGZsb2F0Pik7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBp
bmcoJm1hcCwgR0xfUkdCQSwgICAgICAgICAgICAgICBHTF9IQUxGX0ZMT0FULCAgICAgICAgICAg
ICAgICAgICAgIFdyaXRlQ29sb3I8UjE2RzE2QjE2QTE2RiwgR0xmbG9hdD4pOwotICAgIEluc2Vy
dEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHQkEsICAgICAgICAgICAgICAg
R0xfSEFMRl9GTE9BVF9PRVMsICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFIxNkcxNkIxNkEx
NkYsIEdMZmxvYXQ+KTsKLQotICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZt
YXAsIEdMX1JHQkFfSU5URUdFUiwgICAgICAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAg
ICAgICBXcml0ZUNvbG9yPFI4RzhCOEE4LCBHTHVpbnQ+ICAgICAgKTsKLSAgICBJbnNlcnRGb3Jt
YXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SR0JBX0lOVEVHRVIsICAgICAgIEdMX0JZ
VEUsICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSOEc4QjhBOFMsIEdMaW50
PiAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xf
UkdCQV9JTlRFR0VSLCAgICAgICBHTF9VTlNJR05FRF9TSE9SVCwgICAgICAgICAgICAgICAgIFdy
aXRlQ29sb3I8UjE2RzE2QjE2QTE2LCBHTHVpbnQ+ICApOwotICAgIEluc2VydEZvcm1hdFdyaXRl
RnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHQkFfSU5URUdFUiwgICAgICAgR0xfU0hPUlQsICAg
ICAgICAgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFIxNkcxNkIxNkExNlMsIEdMaW50PiAg
KTsKLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SR0JBX0lO
VEVHRVIsICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgICAgICAgICAgICAgV3JpdGVDb2xv
cjxSMzJHMzJCMzJBMzIsIEdMdWludD4gICk7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlv
bk1hcHBpbmcoJm1hcCwgR0xfUkdCQV9JTlRFR0VSLCAgICAgICBHTF9JTlQsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjMyRzMyQjMyQTMyUywgR0xpbnQ+ICApOwotICAg
IEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHQkFfSU5URUdFUiwg
ICAgICAgR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWLCAgICBXcml0ZUNvbG9yPFIxMEcx
MEIxMEEyLCBHTHVpbnQ+ICAgKTsKLQotICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBw
aW5nKCZtYXAsIEdMX1JHQiwgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgICAgICAg
ICAgICAgICAgICBXcml0ZUNvbG9yPFI4RzhCOCwgR0xmbG9hdD4gICAgICAgKTsKLSAgICBJbnNl
cnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SR0IsICAgICAgICAgICAgICAg
IEdMX0JZVEUsICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSOEc4QjhTLCBH
TGZsb2F0PiAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1h
cCwgR0xfUkdCLCAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9TSE9SVF81XzZfNSwgICAgICAg
ICAgIFdyaXRlQ29sb3I8UjVHNkI1LCBHTGZsb2F0PiAgICAgICApOwotICAgIEluc2VydEZvcm1h
dFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHQiwgICAgICAgICAgICAgICAgR0xfVU5T
SUdORURfSU5UXzEwRl8xMUZfMTFGX1JFViwgICBXcml0ZUNvbG9yPFIxMUcxMUIxMEYsIEdMZmxv
YXQ+ICAgKTsKLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9S
R0IsICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVF81XzlfOV85X1JFViwgICAgICAgV3Jp
dGVDb2xvcjxSOUc5QjlFNSwgR0xmbG9hdD4gICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVG
dW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkdCLCAgICAgICAgICAgICAgICBHTF9GTE9BVCwgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjMyRzMyQjMyRiwgR0xmbG9hdD4gICAp
OwotICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHQiwgICAg
ICAgICAgICAgICAgR0xfSEFMRl9GTE9BVCwgICAgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9y
PFIxNkcxNkIxNkYsIEdMZmxvYXQ+ICAgKTsKLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9u
TWFwcGluZygmbWFwLCBHTF9SR0IsICAgICAgICAgICAgICAgIEdMX0hBTEZfRkxPQVRfT0VTLCAg
ICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSMTZHMTZCMTZGLCBHTGZsb2F0PiAgICk7Ci0KLSAg
ICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SR0JfSU5URUdFUiwg
ICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSOEc4
QjgsIEdMdWludD4gICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBp
bmcoJm1hcCwgR0xfUkdCX0lOVEVHRVIsICAgICAgICBHTF9CWVRFLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdyaXRlQ29sb3I8UjhHOEI4UywgR0xpbnQ+ICAgICAgICApOwotICAgIEluc2Vy
dEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHQl9JTlRFR0VSLCAgICAgICAg
R0xfVU5TSUdORURfU0hPUlQsICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFIxNkcxNkIxNiwg
R0x1aW50PiAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFw
LCBHTF9SR0JfSU5URUdFUiwgICAgICAgIEdMX1NIT1JULCAgICAgICAgICAgICAgICAgICAgICAg
ICAgV3JpdGVDb2xvcjxSMTZHMTZCMTZTLCBHTGludD4gICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0
V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkdCX0lOVEVHRVIsICAgICAgICBHTF9VTlNJ
R05FRF9JTlQsICAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjMyRzMyQjMyLCBHTHVpbnQ+
ICAgICApOwotICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JH
Ql9JTlRFR0VSLCAgICAgICAgR0xfSU5ULCAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0
ZUNvbG9yPFIzMkczMkIzMlMsIEdMaW50PiAgICAgKTsKLQotICAgIEluc2VydEZvcm1hdFdyaXRl
RnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHLCAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURf
QllURSwgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFI4RzgsIEdMZmxvYXQ+ICAgICAgICAg
KTsKLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SRywgICAg
ICAgICAgICAgICAgIEdMX0JZVEUsICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVDb2xv
cjxSOEc4UywgR0xmbG9hdD4gICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlv
bk1hcHBpbmcoJm1hcCwgR0xfUkcsICAgICAgICAgICAgICAgICBHTF9GTE9BVCwgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjMyRzMyRiwgR0xmbG9hdD4gICAgICApOwotICAg
IEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHLCAgICAgICAgICAg
ICAgICAgR0xfSEFMRl9GTE9BVCwgICAgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFIxNkcx
NkYsIEdMZmxvYXQ+ICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGlu
ZygmbWFwLCBHTF9SRywgICAgICAgICAgICAgICAgIEdMX0hBTEZfRkxPQVRfT0VTLCAgICAgICAg
ICAgICAgICAgV3JpdGVDb2xvcjxSMTZHMTZGLCBHTGZsb2F0PiAgICAgICk7Ci0KLSAgICBJbnNl
cnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SR19JTlRFR0VSLCAgICAgICAg
IEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSOEc4LCBHTHVp
bnQ+ICAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1h
cCwgR0xfUkdfSU5URUdFUiwgICAgICAgICBHTF9CWVRFLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdyaXRlQ29sb3I8UjhHOFMsIEdMaW50PiAgICAgICAgICApOwotICAgIEluc2VydEZvcm1h
dFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHX0lOVEVHRVIsICAgICAgICAgR0xfVU5T
SUdORURfU0hPUlQsICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFIxNkcxNiwgR0x1aW50PiAg
ICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9S
R19JTlRFR0VSLCAgICAgICAgIEdMX1NIT1JULCAgICAgICAgICAgICAgICAgICAgICAgICAgV3Jp
dGVDb2xvcjxSMTZHMTZTLCBHTGludD4gICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVG
dW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkdfSU5URUdFUiwgICAgICAgICBHTF9VTlNJR05FRF9J
TlQsICAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjMyRzMyLCBHTHVpbnQ+ICAgICAgICAp
OwotICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHX0lOVEVH
RVIsICAgICAgICAgR0xfSU5ULCAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9y
PFIzMkczMlMsIEdMaW50PiAgICAgICAgKTsKLQotICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rp
b25NYXBwaW5nKCZtYXAsIEdMX1JFRCwgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwg
ICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFI4LCBHTGZsb2F0PiAgICAgICAgICAgKTsKLSAg
ICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SRUQsICAgICAgICAg
ICAgICAgIEdMX0JZVEUsICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSOFMs
IEdMZmxvYXQ+ICAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBp
bmcoJm1hcCwgR0xfUkVELCAgICAgICAgICAgICAgICBHTF9GTE9BVCwgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdyaXRlQ29sb3I8UjMyRiwgR0xmbG9hdD4gICAgICAgICApOwotICAgIEluc2Vy
dEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JFRCwgICAgICAgICAgICAgICAg
R0xfSEFMRl9GTE9BVCwgICAgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFIxNkYsIEdMZmxv
YXQ+ICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFw
LCBHTF9SRUQsICAgICAgICAgICAgICAgIEdMX0hBTEZfRkxPQVRfT0VTLCAgICAgICAgICAgICAg
ICAgV3JpdGVDb2xvcjxSMTZGLCBHTGZsb2F0PiAgICAgICAgICk7Ci0KLSAgICBJbnNlcnRGb3Jt
YXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SRURfSU5URUdFUiwgICAgICAgIEdMX1VO
U0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSOCwgR0x1aW50PiAgICAg
ICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xf
UkVEX0lOVEVHRVIsICAgICAgICBHTF9CWVRFLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFdy
aXRlQ29sb3I8UjhTLCBHTGludD4gICAgICAgICAgICApOwotICAgIEluc2VydEZvcm1hdFdyaXRl
RnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JFRF9JTlRFR0VSLCAgICAgICAgR0xfVU5TSUdORURf
U0hPUlQsICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFIxNiwgR0x1aW50PiAgICAgICAgICAg
KTsKLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SRURfSU5U
RUdFUiwgICAgICAgIEdMX1NIT1JULCAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVDb2xv
cjxSMTZTLCBHTGludD4gICAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlv
bk1hcHBpbmcoJm1hcCwgR0xfUkVEX0lOVEVHRVIsICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAg
ICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjMyLCBHTHVpbnQ+ICAgICAgICAgICApOwotICAg
IEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JFRF9JTlRFR0VSLCAg
ICAgICAgR0xfSU5ULCAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFIzMlMs
IEdMaW50PiAgICAgICAgICAgKTsKLQotICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBw
aW5nKCZtYXAsIEdMX0xVTUlOQU5DRV9BTFBIQSwgICAgR0xfVU5TSUdORURfQllURSwgICAgICAg
ICAgICAgICAgICBXcml0ZUNvbG9yPEw4QTgsIEdMZmxvYXQ+ICAgICAgICAgKTsKLSAgICBJbnNl
cnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9MVU1JTkFOQ0UsICAgICAgICAg
IEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxMOCwgR0xmbG9h
dD4gICAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1h
cCwgR0xfQUxQSEEsICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAg
ICAgIFdyaXRlQ29sb3I8QTgsIEdMZmxvYXQ+ICAgICAgICAgICApOwotICAgIEluc2VydEZvcm1h
dFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX0xVTUlOQU5DRV9BTFBIQSwgICAgR0xfRkxP
QVQsICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPEwzMkEzMkYsIEdMZmxvYXQ+
ICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9M
VU1JTkFOQ0UsICAgICAgICAgIEdMX0ZMT0FULCAgICAgICAgICAgICAgICAgICAgICAgICAgV3Jp
dGVDb2xvcjxMMzJGLCBHTGZsb2F0PiAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVG
dW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfQUxQSEEsICAgICAgICAgICAgICBHTF9GTE9BVCwgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8QTMyRiwgR0xmbG9hdD4gICAgICAgICAp
OwotICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX0xVTUlOQU5D
RV9BTFBIQSwgICAgR0xfSEFMRl9GTE9BVCwgICAgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9y
PEwxNkExNkYsIEdMZmxvYXQ+ICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9u
TWFwcGluZygmbWFwLCBHTF9MVU1JTkFOQ0VfQUxQSEEsICAgIEdMX0hBTEZfRkxPQVRfT0VTLCAg
ICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxMMTZBMTZGLCBHTGZsb2F0PiAgICAgICk7Ci0gICAg
SW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfTFVNSU5BTkNFLCAgICAg
ICAgICBHTF9IQUxGX0ZMT0FULCAgICAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8TDE2Riwg
R0xmbG9hdD4gICAgICAgICApOwotICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5n
KCZtYXAsIEdMX0xVTUlOQU5DRSwgICAgICAgICAgR0xfSEFMRl9GTE9BVF9PRVMsICAgICAgICAg
ICAgICAgICBXcml0ZUNvbG9yPEwxNkYsIEdMZmxvYXQ+ICAgICAgICAgKTsKLSAgICBJbnNlcnRG
b3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9BTFBIQSwgICAgICAgICAgICAgIEdM
X0hBTEZfRkxPQVQsICAgICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxBMTZGLCBHTGZsb2F0
PiAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwg
R0xfQUxQSEEsICAgICAgICAgICAgICBHTF9IQUxGX0ZMT0FUX09FUywgICAgICAgICAgICAgICAg
IFdyaXRlQ29sb3I8QTE2RiwgR0xmbG9hdD4gICAgICAgICApOwotCi0gICAgSW5zZXJ0Rm9ybWF0
V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfQkdSQV9FWFQsICAgICAgICAgICBHTF9VTlNJ
R05FRF9CWVRFLCAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8QjhHOFI4QTgsIEdMZmxvYXQ+
ICAgICApOwotICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX0JH
UkFfRVhULCAgICAgICAgICAgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF9SRVZfRVhULCBXcml0
ZUNvbG9yPEE0UjRHNEI0LCBHTGZsb2F0PiAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1
bmN0aW9uTWFwcGluZygmbWFwLCBHTF9CR1JBX0VYVCwgICAgICAgICAgIEdMX1VOU0lHTkVEX1NI
T1JUXzFfNV81XzVfUkVWX0VYVCwgV3JpdGVDb2xvcjxBMVI1RzVCNSwgR0xmbG9hdD4gICAgICk7
Ci0KLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9TUkdCX0VY
VCwgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgICAgV3JpdGVDb2xv
cjxSOEc4QjgsIEdMZmxvYXQ+ICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlv
bk1hcHBpbmcoJm1hcCwgR0xfU1JHQl9BTFBIQV9FWFQsICAgICBHTF9VTlNJR05FRF9CWVRFLCAg
ICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjhHOEI4QTgsIEdMZmxvYXQ+ICAgICApOwotCi0g
ICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9S
R0JfUzNUQ19EWFQxX0VYVCwgICAgR0xfVU5TSUdORURfQllURSwgICAgIE5VTEwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBw
aW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCAgIEdMX1VOU0lHTkVE
X0JZVEUsICAgICBOVUxMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNl
cnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNU
Q19EWFQzX0FOR0xFLCBHTF9VTlNJR05FRF9CWVRFLCAgICAgTlVMTCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1h
cCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRSwgR0xfVU5TSUdORURfQllURSwg
ICAgIE5VTEwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwotCi0gICAgSW5zZXJ0Rm9y
bWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfREVQVEhfQ09NUE9ORU5ULCAgICBHTF9V
TlNJR05FRF9TSE9SVCwgICAgICAgICAgICAgICAgIE5VTEwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICApOwotICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdM
X0RFUFRIX0NPTVBPTkVOVCwgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgICAgICAgICAgICBO
VUxMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRXcml0
ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9ERVBUSF9DT01QT05FTlQsICAgIEdMX0ZMT0FULCAg
ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICk7Ci0KLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9TVEVO
Q0lMLCAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgICAgTlVMTCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0KLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1
bmN0aW9uTWFwcGluZygmbWFwLCBHTF9ERVBUSF9TVEVOQ0lMLCAgICAgIEdMX1VOU0lHTkVEX0lO
VF8yNF84LCAgICAgICAgICAgICAgTlVMTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7
Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfREVQVEhfU1RF
TkNJTCwgICAgICBHTF9GTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVYsIE5VTEwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICApOwotCi0gICAgcmV0dXJuIG1hcDsKLX0KLQotQ29sb3JX
cml0ZUZ1bmN0aW9uIEdldENvbG9yV3JpdGVGdW5jdGlvbihHTGVudW0gZm9ybWF0LCBHTGVudW0g
dHlwZSkKLXsKLSAgICBzdGF0aWMgY29uc3QgRm9ybWF0V3JpdGVGdW5jdGlvbk1hcCBmb3JtYXRU
eXBlTWFwID0gQnVpbGRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwKCk7Ci0gICAgRm9ybWF0V3JpdGVG
dW5jdGlvbk1hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGZvcm1hdFR5cGVNYXAuZmluZChGb3Jt
YXRUeXBlUGFpcihmb3JtYXQsIHR5cGUpKTsKLSAgICBBU1NFUlQoaXRlciAhPSBmb3JtYXRUeXBl
TWFwLmVuZCgpKTsKLSAgICBpZiAoaXRlciAhPSBmb3JtYXRUeXBlTWFwLmVuZCgpKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGl0ZXItPnNlY29uZDsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotfQotCi19CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Zvcm1hdHV0aWxzRDNELmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9mb3JtYXR1dGlsc0QzRC5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Zvcm1hdHV0aWxzRDNELmgJKHdvcmtp
bmcgY29weSkKQEAgLTE1LDI0ICsxNSwxOCBAQAogI2luY2x1ZGUgPGNzdGRkZWY+CiAjaW5jbHVk
ZSA8c3RkaW50Lmg+CiAKLW5hbWVzcGFjZSByeAoteworI2luY2x1ZGUgPG1hcD4KIAotdHlwZWRl
ZiB2b2lkICgqTWlwR2VuZXJhdGlvbkZ1bmN0aW9uKShzaXplX3Qgc291cmNlV2lkdGgsIHNpemVf
dCBzb3VyY2VIZWlnaHQsIHNpemVfdCBzb3VyY2VEZXB0aCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqc291cmNlRGF0YSwgc2l6ZV90IHNvdXJj
ZVJvd1BpdGNoLCBzaXplX3Qgc291cmNlRGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDhfdCAqZGVzdERhdGEsIHNpemVfdCBkZXN0Um93UGl0Y2gs
IHNpemVfdCBkZXN0RGVwdGhQaXRjaCk7Ci0KLXR5cGVkZWYgdm9pZCAoKkxvYWRJbWFnZUZ1bmN0
aW9uKShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlu
cHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNp
emVfdCBvdXRwdXREZXB0aFBpdGNoKTsKK25hbWVzcGFjZSBnbAoreworc3RydWN0IEZvcm1hdFR5
cGU7Cit9CiAKK25hbWVzcGFjZSByeAorewogdHlwZWRlZiB2b2lkICgqSW5pdGlhbGl6ZVRleHR1
cmVEYXRhRnVuY3Rpb24pKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRo
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qg
Km91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7
CiAKLXR5cGVkZWYgdm9pZCAoKkNvbG9yUmVhZEZ1bmN0aW9uKShjb25zdCB1aW50OF90ICpzb3Vy
Y2UsIHVpbnQ4X3QgKmRlc3QpOwotdHlwZWRlZiB2b2lkICgqQ29sb3JXcml0ZUZ1bmN0aW9uKShj
b25zdCB1aW50OF90ICpzb3VyY2UsIHVpbnQ4X3QgKmRlc3QpOwotdHlwZWRlZiB2b2lkICgqQ29s
b3JDb3B5RnVuY3Rpb24pKGNvbnN0IHVpbnQ4X3QgKnNvdXJjZSwgdWludDhfdCAqZGVzdCk7Ci0K
IHR5cGVkZWYgdm9pZCAoKlZlcnRleENvcHlGdW5jdGlvbikoY29uc3QgdWludDhfdCAqaW5wdXQs
IHNpemVfdCBzdHJpZGUsIHNpemVfdCBjb3VudCwgdWludDhfdCAqb3V0cHV0KTsKIAogZW51bSBW
ZXJ0ZXhDb252ZXJzaW9uVHlwZQpAQCAtNDIsOSArMzYsNiBAQCBlbnVtIFZlcnRleENvbnZlcnNp
b25UeXBlCiAgICAgVkVSVEVYX0NPTlZFUlRfR1BVID0gMiwKICAgICBWRVJURVhfQ09OVkVSVF9C
T1RIID0gMwogfTsKLQotQ29sb3JXcml0ZUZ1bmN0aW9uIEdldENvbG9yV3JpdGVGdW5jdGlvbihH
TGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSk7Ci0KLX0KK30gIC8vIG5hbWVzcGFjZSByeAogCiAj
ZW5kaWYgLy8gTElCQU5HTEVfUkVOREVSRVJfRDNEX0ZPUk1BVFVUSUxTRDNEX0hfCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2dlbmVyYXRl
bWlwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9nZW5lcmF0ZW1pcC5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2dlbmVyYXRlbWlwLmgJ
KG5vbmV4aXN0ZW50KQpAQCAtMSwyOCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAy
LTIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBn
ZW5lcmF0ZW1pcC5oOiBEZWZpbmVzIHRoZSBHZW5lcmF0ZU1pcCBmdW5jdGlvbiwgdGVtcGxhdGVk
IG9uIHRoZSBmb3JtYXQKLS8vIHR5cGUgb2YgdGhlIGltYWdlIGZvciB3aGljaCBtaXAgbGV2ZWxz
IGFyZSBiZWluZyBnZW5lcmF0ZWQuCi0KLSNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfRDNEX0dF
TkVSQVRFTUlQX0hfCi0jZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9HRU5FUkFURU1JUF9I
XwotCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2ltYWdlZm9ybWF0cy5oIgotI2lu
Y2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMuaCIKLQotbmFtZXNwYWNlIHJ4Ci17Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQgR2VuZXJhdGVNaXAoc2l6ZV90IHNvdXJjZVdp
ZHRoLCBzaXplX3Qgc291cmNlSGVpZ2h0LCBzaXplX3Qgc291cmNlRGVwdGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzb3VyY2VEYXRhLCBzaXplX3Qgc291cmNlUm93
UGl0Y2gsIHNpemVfdCBzb3VyY2VEZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAg
dWludDhfdCAqZGVzdERhdGEsIHNpemVfdCBkZXN0Um93UGl0Y2gsIHNpemVfdCBkZXN0RGVwdGhQ
aXRjaCk7Ci0KLX0KLQotI2luY2x1ZGUgImdlbmVyYXRlbWlwLmlubCIKLQotI2VuZGlmIC8vIExJ
QkFOR0xFX1JFTkRFUkVSX0QzRF9HRU5FUkFURU1JUF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9nZW5lcmF0ZW1pcC5pbmwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9nZW5lcmF0ZW1pcC5pbmwJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZ2VuZXJhdGVtaXAuaW5sCShub25leGlz
dGVudCkKQEAgLTEsMjY2ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBnZW5lcmF0ZW1pcC5p
bmw6IERlZmluZXMgdGhlIEdlbmVyYXRlTWlwIGZ1bmN0aW9uLCB0ZW1wbGF0ZWQgb24gdGhlIGZv
cm1hdAotLy8gdHlwZSBvZiB0aGUgaW1hZ2UgZm9yIHdoaWNoIG1pcCBsZXZlbHMgYXJlIGJlaW5n
IGdlbmVyYXRlZC4KLQotI2luY2x1ZGUgImNvbW1vbi9tYXRodXRpbC5oIgotCi1uYW1lc3BhY2Ug
cngKLXsKLQotbmFtZXNwYWNlIHByaXYKLXsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdGF0
aWMgaW5saW5lIFQgKkdldFBpeGVsKHVpbnQ4X3QgKmRhdGEsIHNpemVfdCB4LCBzaXplX3QgeSwg
c2l6ZV90IHosIHNpemVfdCByb3dQaXRjaCwgc2l6ZV90IGRlcHRoUGl0Y2gpCi17Ci0gICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KGRhdGEgKyAoeCAqIHNpemVvZihUKSkgKyAoeSAqIHJv
d1BpdGNoKSArICh6ICogZGVwdGhQaXRjaCkpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
LXN0YXRpYyBpbmxpbmUgY29uc3QgVCAqR2V0UGl4ZWwoY29uc3QgdWludDhfdCAqZGF0YSwgc2l6
ZV90IHgsIHNpemVfdCB5LCBzaXplX3Qgeiwgc2l6ZV90IHJvd1BpdGNoLCBzaXplX3QgZGVwdGhQ
aXRjaCkKLXsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4oZGF0YSArICh4
ICogc2l6ZW9mKFQpKSArICh5ICogcm93UGl0Y2gpICsgKHogKiBkZXB0aFBpdGNoKSk7Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RhdGljIHZvaWQgR2VuZXJhdGVNaXBfWShzaXplX3Qg
c291cmNlV2lkdGgsIHNpemVfdCBzb3VyY2VIZWlnaHQsIHNpemVfdCBzb3VyY2VEZXB0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqc291cmNlRGF0YSwgc2l6ZV90
IHNvdXJjZVJvd1BpdGNoLCBzaXplX3Qgc291cmNlRGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGRlc3RXaWR0aCwgc2l6ZV90IGRlc3RIZWlnaHQsIHNpemVfdCBk
ZXN0RGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmRlc3REYXRhLCBz
aXplX3QgZGVzdFJvd1BpdGNoLCBzaXplX3QgZGVzdERlcHRoUGl0Y2gpCi17Ci0gICAgQVNTRVJU
KHNvdXJjZVdpZHRoID09IDEpOwotICAgIEFTU0VSVChzb3VyY2VIZWlnaHQgPiAxKTsKLSAgICBB
U1NFUlQoc291cmNlRGVwdGggPT0gMSk7Ci0KLSAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGRl
c3RIZWlnaHQ7IHkrKykKLSAgICB7Ci0gICAgICAgIGNvbnN0IFQgKnNyYzAgPSBHZXRQaXhlbDxU
Pihzb3VyY2VEYXRhLCAwLCB5ICogMiwgMCwgc291cmNlUm93UGl0Y2gsIHNvdXJjZURlcHRoUGl0
Y2gpOwotICAgICAgICBjb25zdCBUICpzcmMxID0gR2V0UGl4ZWw8VD4oc291cmNlRGF0YSwgMCwg
eSAqIDIgKyAxLCAwLCBzb3VyY2VSb3dQaXRjaCwgc291cmNlRGVwdGhQaXRjaCk7Ci0gICAgICAg
IFQgKmRzdCA9IEdldFBpeGVsPFQ+KGRlc3REYXRhLCAwLCB5LCAwLCBkZXN0Um93UGl0Y2gsIGRl
c3REZXB0aFBpdGNoKTsKLQotICAgICAgICBUOjphdmVyYWdlKGRzdCwgc3JjMCwgc3JjMSk7Ci0g
ICAgfQotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0YXRpYyB2b2lkIEdlbmVyYXRlTWlw
X1goc2l6ZV90IHNvdXJjZVdpZHRoLCBzaXplX3Qgc291cmNlSGVpZ2h0LCBzaXplX3Qgc291cmNl
RGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNvdXJjZURh
dGEsIHNpemVfdCBzb3VyY2VSb3dQaXRjaCwgc2l6ZV90IHNvdXJjZURlcHRoUGl0Y2gsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXN0V2lkdGgsIHNpemVfdCBkZXN0SGVpZ2h0
LCBzaXplX3QgZGVzdERlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpk
ZXN0RGF0YSwgc2l6ZV90IGRlc3RSb3dQaXRjaCwgc2l6ZV90IGRlc3REZXB0aFBpdGNoKQotewot
ICAgIEFTU0VSVChzb3VyY2VXaWR0aCA+IDEpOwotICAgIEFTU0VSVChzb3VyY2VIZWlnaHQgPT0g
MSk7Ci0gICAgQVNTRVJUKHNvdXJjZURlcHRoID09IDEpOwotCi0gICAgZm9yIChzaXplX3QgeCA9
IDA7IHggPCBkZXN0V2lkdGg7IHgrKykKLSAgICB7Ci0gICAgICAgIGNvbnN0IFQgKnNyYzAgPSBH
ZXRQaXhlbDxUPihzb3VyY2VEYXRhLCB4ICogMiwgMCwgMCwgc291cmNlUm93UGl0Y2gsIHNvdXJj
ZURlcHRoUGl0Y2gpOwotICAgICAgICBjb25zdCBUICpzcmMxID0gR2V0UGl4ZWw8VD4oc291cmNl
RGF0YSwgeCAqIDIgKyAxLCAwLCAwLCBzb3VyY2VSb3dQaXRjaCwgc291cmNlRGVwdGhQaXRjaCk7
Ci0gICAgICAgIFQgKmRzdCA9IEdldFBpeGVsPFQ+KGRlc3REYXRhLCB4LCAwLCAwLCBkZXN0Um93
UGl0Y2gsIGRlc3REZXB0aFBpdGNoKTsKLQotICAgICAgICBUOjphdmVyYWdlKGRzdCwgc3JjMCwg
c3JjMSk7Ci0gICAgfQotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0YXRpYyB2b2lkIEdl
bmVyYXRlTWlwX1ooc2l6ZV90IHNvdXJjZVdpZHRoLCBzaXplX3Qgc291cmNlSGVpZ2h0LCBzaXpl
X3Qgc291cmNlRGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qg
KnNvdXJjZURhdGEsIHNpemVfdCBzb3VyY2VSb3dQaXRjaCwgc2l6ZV90IHNvdXJjZURlcHRoUGl0
Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXN0V2lkdGgsIHNpemVfdCBk
ZXN0SGVpZ2h0LCBzaXplX3QgZGVzdERlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50OF90ICpkZXN0RGF0YSwgc2l6ZV90IGRlc3RSb3dQaXRjaCwgc2l6ZV90IGRlc3REZXB0aFBp
dGNoKQotewotICAgIEFTU0VSVChzb3VyY2VXaWR0aCA9PSAxKTsKLSAgICBBU1NFUlQoc291cmNl
SGVpZ2h0ID09IDEpOwotICAgIEFTU0VSVChzb3VyY2VEZXB0aCA+IDEpOwotCi0gICAgZm9yIChz
aXplX3QgeiA9IDA7IHogPCBkZXN0RGVwdGg7IHorKykKLSAgICB7Ci0gICAgICAgIGNvbnN0IFQg
KnNyYzAgPSBHZXRQaXhlbDxUPihzb3VyY2VEYXRhLCAwLCAwLCB6ICogMiwgc291cmNlUm93UGl0
Y2gsIHNvdXJjZURlcHRoUGl0Y2gpOwotICAgICAgICBjb25zdCBUICpzcmMxID0gR2V0UGl4ZWw8
VD4oc291cmNlRGF0YSwgMCwgMCwgeiAqIDIgKyAxLCBzb3VyY2VSb3dQaXRjaCwgc291cmNlRGVw
dGhQaXRjaCk7Ci0gICAgICAgIFQgKmRzdCA9IEdldFBpeGVsPFQ+KGRlc3REYXRhLCAwLCAwLCB6
LCBkZXN0Um93UGl0Y2gsIGRlc3REZXB0aFBpdGNoKTsKLQotICAgICAgICBUOjphdmVyYWdlKGRz
dCwgc3JjMCwgc3JjMSk7Ci0gICAgfQotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0YXRp
YyB2b2lkIEdlbmVyYXRlTWlwX1hZKHNpemVfdCBzb3VyY2VXaWR0aCwgc2l6ZV90IHNvdXJjZUhl
aWdodCwgc2l6ZV90IHNvdXJjZURlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgdWludDhfdCAqc291cmNlRGF0YSwgc2l6ZV90IHNvdXJjZVJvd1BpdGNoLCBzaXplX3Qgc291
cmNlRGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXN0V2lk
dGgsIHNpemVfdCBkZXN0SGVpZ2h0LCBzaXplX3QgZGVzdERlcHRoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDhfdCAqZGVzdERhdGEsIHNpemVfdCBkZXN0Um93UGl0Y2gsIHNpemVf
dCBkZXN0RGVwdGhQaXRjaCkKLXsKLSAgICBBU1NFUlQoc291cmNlV2lkdGggPiAxKTsKLSAgICBB
U1NFUlQoc291cmNlSGVpZ2h0ID4gMSk7Ci0gICAgQVNTRVJUKHNvdXJjZURlcHRoID09IDEpOwot
Ci0gICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBkZXN0SGVpZ2h0OyB5KyspCi0gICAgewotICAg
ICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IGRlc3RXaWR0aDsgeCsrKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBjb25zdCBUICpzcmMwID0gR2V0UGl4ZWw8VD4oc291cmNlRGF0YSwgeCAqIDIs
IHkgKiAyLCAwLCBzb3VyY2VSb3dQaXRjaCwgc291cmNlRGVwdGhQaXRjaCk7Ci0gICAgICAgICAg
ICBjb25zdCBUICpzcmMxID0gR2V0UGl4ZWw8VD4oc291cmNlRGF0YSwgeCAqIDIsIHkgKiAyICsg
MSwgMCwgc291cmNlUm93UGl0Y2gsIHNvdXJjZURlcHRoUGl0Y2gpOwotICAgICAgICAgICAgY29u
c3QgVCAqc3JjMiA9IEdldFBpeGVsPFQ+KHNvdXJjZURhdGEsIHggKiAyICsgMSwgeSAqIDIsIDAs
IHNvdXJjZVJvd1BpdGNoLCBzb3VyY2VEZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIGNvbnN0IFQg
KnNyYzMgPSBHZXRQaXhlbDxUPihzb3VyY2VEYXRhLCB4ICogMiArIDEsIHkgKiAyICsgMSwgMCwg
c291cmNlUm93UGl0Y2gsIHNvdXJjZURlcHRoUGl0Y2gpOwotICAgICAgICAgICAgVCAqZHN0ID0g
R2V0UGl4ZWw8VD4oZGVzdERhdGEsIHgsIHksIDAsIGRlc3RSb3dQaXRjaCwgZGVzdERlcHRoUGl0
Y2gpOwotCi0gICAgICAgICAgICBUIHRtcDAsIHRtcDE7Ci0KLSAgICAgICAgICAgIFQ6OmF2ZXJh
Z2UoJnRtcDAsIHNyYzAsIHNyYzEpOwotICAgICAgICAgICAgVDo6YXZlcmFnZSgmdG1wMSwgc3Jj
Miwgc3JjMyk7Ci0gICAgICAgICAgICBUOjphdmVyYWdlKGRzdCwgJnRtcDAsICZ0bXAxKTsKLSAg
ICAgICAgfQotICAgIH0KLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdGF0aWMgdm9pZCBH
ZW5lcmF0ZU1pcF9ZWihzaXplX3Qgc291cmNlV2lkdGgsIHNpemVfdCBzb3VyY2VIZWlnaHQsIHNp
emVfdCBzb3VyY2VEZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4
X3QgKnNvdXJjZURhdGEsIHNpemVfdCBzb3VyY2VSb3dQaXRjaCwgc2l6ZV90IHNvdXJjZURlcHRo
UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVzdFdpZHRoLCBzaXpl
X3QgZGVzdEhlaWdodCwgc2l6ZV90IGRlc3REZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQ4X3QgKmRlc3REYXRhLCBzaXplX3QgZGVzdFJvd1BpdGNoLCBzaXplX3QgZGVzdERl
cHRoUGl0Y2gpCi17Ci0gICAgQVNTRVJUKHNvdXJjZVdpZHRoID09IDEpOwotICAgIEFTU0VSVChz
b3VyY2VIZWlnaHQgPiAxKTsKLSAgICBBU1NFUlQoc291cmNlRGVwdGggPiAxKTsKLQotICAgIGZv
ciAoc2l6ZV90IHogPSAwOyB6IDwgZGVzdERlcHRoOyB6KyspCi0gICAgewotICAgICAgICBmb3Ig
KHNpemVfdCB5ID0gMDsgeSA8IGRlc3RIZWlnaHQ7IHkrKykKLSAgICAgICAgewotICAgICAgICAg
ICAgY29uc3QgVCAqc3JjMCA9IEdldFBpeGVsPFQ+KHNvdXJjZURhdGEsIDAsIHkgKiAyLCB6ICog
Miwgc291cmNlUm93UGl0Y2gsIHNvdXJjZURlcHRoUGl0Y2gpOwotICAgICAgICAgICAgY29uc3Qg
VCAqc3JjMSA9IEdldFBpeGVsPFQ+KHNvdXJjZURhdGEsIDAsIHkgKiAyLCB6ICogMiArIDEsIHNv
dXJjZVJvd1BpdGNoLCBzb3VyY2VEZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIGNvbnN0IFQgKnNy
YzIgPSBHZXRQaXhlbDxUPihzb3VyY2VEYXRhLCAwLCB5ICogMiArIDEsIHogKiAyLCBzb3VyY2VS
b3dQaXRjaCwgc291cmNlRGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICBjb25zdCBUICpzcmMzID0g
R2V0UGl4ZWw8VD4oc291cmNlRGF0YSwgMCwgeSAqIDIgKyAxLCB6ICogMiArIDEsIHNvdXJjZVJv
d1BpdGNoLCBzb3VyY2VEZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIFQgKmRzdCA9IEdldFBpeGVs
PFQ+KGRlc3REYXRhLCAwLCB5LCB6LCBkZXN0Um93UGl0Y2gsIGRlc3REZXB0aFBpdGNoKTsKLQot
ICAgICAgICAgICAgVCB0bXAwLCB0bXAxOwotCi0gICAgICAgICAgICBUOjphdmVyYWdlKCZ0bXAw
LCBzcmMwLCBzcmMxKTsKLSAgICAgICAgICAgIFQ6OmF2ZXJhZ2UoJnRtcDEsIHNyYzIsIHNyYzMp
OwotICAgICAgICAgICAgVDo6YXZlcmFnZShkc3QsICZ0bXAwLCAmdG1wMSk7Ci0gICAgICAgIH0K
LSAgICB9Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RhdGljIHZvaWQgR2VuZXJhdGVN
aXBfWFooc2l6ZV90IHNvdXJjZVdpZHRoLCBzaXplX3Qgc291cmNlSGVpZ2h0LCBzaXplX3Qgc291
cmNlRGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzb3Vy
Y2VEYXRhLCBzaXplX3Qgc291cmNlUm93UGl0Y2gsIHNpemVfdCBzb3VyY2VEZXB0aFBpdGNoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlc3RXaWR0aCwgc2l6ZV90IGRlc3RI
ZWlnaHQsIHNpemVfdCBkZXN0RGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
OF90ICpkZXN0RGF0YSwgc2l6ZV90IGRlc3RSb3dQaXRjaCwgc2l6ZV90IGRlc3REZXB0aFBpdGNo
KQotewotICAgIEFTU0VSVChzb3VyY2VXaWR0aCA+IDEpOwotICAgIEFTU0VSVChzb3VyY2VIZWln
aHQgPT0gMSk7Ci0gICAgQVNTRVJUKHNvdXJjZURlcHRoID4gMSk7Ci0KLSAgICBmb3IgKHNpemVf
dCB6ID0gMDsgeiA8IGRlc3REZXB0aDsgeisrKQotICAgIHsKLSAgICAgICAgZm9yIChzaXplX3Qg
eCA9IDA7IHggPCBkZXN0V2lkdGg7IHgrKykKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3Qg
VCAqc3JjMCA9IEdldFBpeGVsPFQ+KHNvdXJjZURhdGEsIHggKiAyLCAwLCB6ICogMiwgc291cmNl
Um93UGl0Y2gsIHNvdXJjZURlcHRoUGl0Y2gpOwotICAgICAgICAgICAgY29uc3QgVCAqc3JjMSA9
IEdldFBpeGVsPFQ+KHNvdXJjZURhdGEsIHggKiAyLCAwLCB6ICogMiArIDEsIHNvdXJjZVJvd1Bp
dGNoLCBzb3VyY2VEZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIGNvbnN0IFQgKnNyYzIgPSBHZXRQ
aXhlbDxUPihzb3VyY2VEYXRhLCB4ICogMiArIDEsIDAsIHogKiAyLCBzb3VyY2VSb3dQaXRjaCwg
c291cmNlRGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICBjb25zdCBUICpzcmMzID0gR2V0UGl4ZWw8
VD4oc291cmNlRGF0YSwgeCAqIDIgKyAxLCAwLCB6ICogMiArIDEsIHNvdXJjZVJvd1BpdGNoLCBz
b3VyY2VEZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIFQgKmRzdCA9IEdldFBpeGVsPFQ+KGRlc3RE
YXRhLCB4LCAwLCB6LCBkZXN0Um93UGl0Y2gsIGRlc3REZXB0aFBpdGNoKTsKLQotICAgICAgICAg
ICAgVCB0bXAwLCB0bXAxOwotCi0gICAgICAgICAgICBUOjphdmVyYWdlKCZ0bXAwLCBzcmMwLCBz
cmMxKTsKLSAgICAgICAgICAgIFQ6OmF2ZXJhZ2UoJnRtcDEsIHNyYzIsIHNyYzMpOwotICAgICAg
ICAgICAgVDo6YXZlcmFnZShkc3QsICZ0bXAwLCAmdG1wMSk7Ci0gICAgICAgIH0KLSAgICB9Ci19
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RhdGljIHZvaWQgR2VuZXJhdGVNaXBfWFlaKHNp
emVfdCBzb3VyY2VXaWR0aCwgc2l6ZV90IHNvdXJjZUhlaWdodCwgc2l6ZV90IHNvdXJjZURlcHRo
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNvdXJjZURhdGEs
IHNpemVfdCBzb3VyY2VSb3dQaXRjaCwgc2l6ZV90IHNvdXJjZURlcHRoUGl0Y2gsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlc3RXaWR0aCwgc2l6ZV90IGRlc3RIZWlnaHQs
IHNpemVfdCBkZXN0RGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAq
ZGVzdERhdGEsIHNpemVfdCBkZXN0Um93UGl0Y2gsIHNpemVfdCBkZXN0RGVwdGhQaXRjaCkKLXsK
LSAgICBBU1NFUlQoc291cmNlV2lkdGggPiAxKTsKLSAgICBBU1NFUlQoc291cmNlSGVpZ2h0ID4g
MSk7Ci0gICAgQVNTRVJUKHNvdXJjZURlcHRoID4gMSk7Ci0KLSAgICBmb3IgKHNpemVfdCB6ID0g
MDsgeiA8IGRlc3REZXB0aDsgeisrKQotICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgeSA9IDA7
IHkgPCBkZXN0SGVpZ2h0OyB5KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90
IHggPSAwOyB4IDwgZGVzdFdpZHRoOyB4KyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgY29uc3QgVCAqc3JjMCA9IEdldFBpeGVsPFQ+KHNvdXJjZURhdGEsIHggKiAyLCB5ICogMiwg
eiAqIDIsIHNvdXJjZVJvd1BpdGNoLCBzb3VyY2VEZXB0aFBpdGNoKTsKLSAgICAgICAgICAgICAg
ICBjb25zdCBUICpzcmMxID0gR2V0UGl4ZWw8VD4oc291cmNlRGF0YSwgeCAqIDIsIHkgKiAyLCB6
ICogMiArIDEsIHNvdXJjZVJvd1BpdGNoLCBzb3VyY2VEZXB0aFBpdGNoKTsKLSAgICAgICAgICAg
ICAgICBjb25zdCBUICpzcmMyID0gR2V0UGl4ZWw8VD4oc291cmNlRGF0YSwgeCAqIDIsIHkgKiAy
ICsgMSwgeiAqIDIsIHNvdXJjZVJvd1BpdGNoLCBzb3VyY2VEZXB0aFBpdGNoKTsKLSAgICAgICAg
ICAgICAgICBjb25zdCBUICpzcmMzID0gR2V0UGl4ZWw8VD4oc291cmNlRGF0YSwgeCAqIDIsIHkg
KiAyICsgMSwgeiAqIDIgKyAxLCBzb3VyY2VSb3dQaXRjaCwgc291cmNlRGVwdGhQaXRjaCk7Ci0g
ICAgICAgICAgICAgICAgY29uc3QgVCAqc3JjNCA9IEdldFBpeGVsPFQ+KHNvdXJjZURhdGEsIHgg
KiAyICsgMSwgeSAqIDIsIHogKiAyLCBzb3VyY2VSb3dQaXRjaCwgc291cmNlRGVwdGhQaXRjaCk7
Ci0gICAgICAgICAgICAgICAgY29uc3QgVCAqc3JjNSA9IEdldFBpeGVsPFQ+KHNvdXJjZURhdGEs
IHggKiAyICsgMSwgeSAqIDIsIHogKiAyICsgMSwgc291cmNlUm93UGl0Y2gsIHNvdXJjZURlcHRo
UGl0Y2gpOwotICAgICAgICAgICAgICAgIGNvbnN0IFQgKnNyYzYgPSBHZXRQaXhlbDxUPihzb3Vy
Y2VEYXRhLCB4ICogMiArIDEsIHkgKiAyICsgMSwgeiAqIDIsIHNvdXJjZVJvd1BpdGNoLCBzb3Vy
Y2VEZXB0aFBpdGNoKTsKLSAgICAgICAgICAgICAgICBjb25zdCBUICpzcmM3ID0gR2V0UGl4ZWw8
VD4oc291cmNlRGF0YSwgeCAqIDIgKyAxLCB5ICogMiArIDEsIHogKiAyICsgMSwgc291cmNlUm93
UGl0Y2gsIHNvdXJjZURlcHRoUGl0Y2gpOwotICAgICAgICAgICAgICAgIFQgKmRzdCA9IEdldFBp
eGVsPFQ+KGRlc3REYXRhLCB4LCB5LCB6LCBkZXN0Um93UGl0Y2gsIGRlc3REZXB0aFBpdGNoKTsK
LQotICAgICAgICAgICAgICAgIFQgdG1wMCwgdG1wMSwgdG1wMiwgdG1wMywgdG1wNCwgdG1wNTsK
LQotICAgICAgICAgICAgICAgIFQ6OmF2ZXJhZ2UoJnRtcDAsIHNyYzAsIHNyYzEpOwotICAgICAg
ICAgICAgICAgIFQ6OmF2ZXJhZ2UoJnRtcDEsIHNyYzIsIHNyYzMpOwotICAgICAgICAgICAgICAg
IFQ6OmF2ZXJhZ2UoJnRtcDIsIHNyYzQsIHNyYzUpOwotICAgICAgICAgICAgICAgIFQ6OmF2ZXJh
Z2UoJnRtcDMsIHNyYzYsIHNyYzcpOwotCi0gICAgICAgICAgICAgICAgVDo6YXZlcmFnZSgmdG1w
NCwgJnRtcDAsICZ0bXAxKTsKLSAgICAgICAgICAgICAgICBUOjphdmVyYWdlKCZ0bXA1LCAmdG1w
MiwgJnRtcDMpOwotCi0gICAgICAgICAgICAgICAgVDo6YXZlcmFnZShkc3QsICZ0bXA0LCAmdG1w
NSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLQotdHlwZWRlZiB2b2lk
ICgqTWlwR2VuZXJhdGlvbkZ1bmN0aW9uKShzaXplX3Qgc291cmNlV2lkdGgsIHNpemVfdCBzb3Vy
Y2VIZWlnaHQsIHNpemVfdCBzb3VyY2VEZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgdWludDhfdCAqc291cmNlRGF0YSwgc2l6ZV90IHNvdXJjZVJvd1Bp
dGNoLCBzaXplX3Qgc291cmNlRGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGRlc3RXaWR0aCwgc2l6ZV90IGRlc3RIZWlnaHQsIHNpemVfdCBk
ZXN0RGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qg
KmRlc3REYXRhLCBzaXplX3QgZGVzdFJvd1BpdGNoLCBzaXplX3QgZGVzdERlcHRoUGl0Y2gpOwot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0YXRpYyBNaXBHZW5lcmF0aW9uRnVuY3Rpb24gR2V0
TWlwR2VuZXJhdGlvbkZ1bmN0aW9uKHNpemVfdCBzb3VyY2VXaWR0aCwgc2l6ZV90IHNvdXJjZUhl
aWdodCwgc2l6ZV90IHNvdXJjZURlcHRoKQotewotICAgIHVpbnQ4X3QgaW5kZXggPSAoKHNvdXJj
ZVdpZHRoID4gMSkgID8gMSA6IDApIHwKLSAgICAgICAgICAgICAgICAgICAgKChzb3VyY2VIZWln
aHQgPiAxKSA/IDIgOiAwKSB8Ci0gICAgICAgICAgICAgICAgICAgICgoc291cmNlRGVwdGggPiAx
KSAgPyA0IDogMCk7Ci0KLSAgICBzd2l0Y2ggKGluZGV4KQotICAgIHsKLSAgICAgIGNhc2UgMDog
cmV0dXJuIE5VTEw7Ci0gICAgICBjYXNlIDE6IHJldHVybiBHZW5lcmF0ZU1pcF9YPFQ+OyAgIC8v
IFcgeCAxIHggMQotICAgICAgY2FzZSAyOiByZXR1cm4gR2VuZXJhdGVNaXBfWTxUPjsgICAvLyAx
IHggSCB4IDEKLSAgICAgIGNhc2UgMzogcmV0dXJuIEdlbmVyYXRlTWlwX1hZPFQ+OyAgLy8gVyB4
IEggeCAxCi0gICAgICBjYXNlIDQ6IHJldHVybiBHZW5lcmF0ZU1pcF9aPFQ+OyAgIC8vIDEgeCAx
IHggRAotICAgICAgY2FzZSA1OiByZXR1cm4gR2VuZXJhdGVNaXBfWFo8VD47ICAvLyBXIHggMSB4
IEQKLSAgICAgIGNhc2UgNjogcmV0dXJuIEdlbmVyYXRlTWlwX1laPFQ+OyAgLy8gMSB4IEggeCBE
Ci0gICAgICBjYXNlIDc6IHJldHVybiBHZW5lcmF0ZU1pcF9YWVo8VD47IC8vIFcgeCBIIHggRAot
ICAgIH0KLQotICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLX0KLQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZCBHZW5lcmF0ZU1pcChzaXplX3Qgc291
cmNlV2lkdGgsIHNpemVfdCBzb3VyY2VIZWlnaHQsIHNpemVfdCBzb3VyY2VEZXB0aCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNvdXJjZURhdGEsIHNpemVfdCBzb3Vy
Y2VSb3dQaXRjaCwgc2l6ZV90IHNvdXJjZURlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAg
ICAgICB1aW50OF90ICpkZXN0RGF0YSwgc2l6ZV90IGRlc3RSb3dQaXRjaCwgc2l6ZV90IGRlc3RE
ZXB0aFBpdGNoKQotewotICAgIHNpemVfdCBtaXBXaWR0aCA9IHN0ZDo6bWF4PHNpemVfdD4oMSwg
c291cmNlV2lkdGggPj4gMSk7Ci0gICAgc2l6ZV90IG1pcEhlaWdodCA9IHN0ZDo6bWF4PHNpemVf
dD4oMSwgc291cmNlSGVpZ2h0ID4+IDEpOwotICAgIHNpemVfdCBtaXBEZXB0aCA9IHN0ZDo6bWF4
PHNpemVfdD4oMSwgc291cmNlRGVwdGggPj4gMSk7Ci0KLSAgICBwcml2OjpNaXBHZW5lcmF0aW9u
RnVuY3Rpb24gZ2VuZXJhdGlvbkZ1bmN0aW9uID0gcHJpdjo6R2V0TWlwR2VuZXJhdGlvbkZ1bmN0
aW9uPFQ+KHNvdXJjZVdpZHRoLCBzb3VyY2VIZWlnaHQsIHNvdXJjZURlcHRoKTsKLSAgICBBU1NF
UlQoZ2VuZXJhdGlvbkZ1bmN0aW9uICE9IE5VTEwpOwotCi0gICAgZ2VuZXJhdGlvbkZ1bmN0aW9u
KHNvdXJjZVdpZHRoLCBzb3VyY2VIZWlnaHQsIHNvdXJjZURlcHRoLCBzb3VyY2VEYXRhLCBzb3Vy
Y2VSb3dQaXRjaCwgc291cmNlRGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgbWlw
V2lkdGgsIG1pcEhlaWdodCwgbWlwRGVwdGgsIGRlc3REYXRhLCBkZXN0Um93UGl0Y2gsIGRlc3RE
ZXB0aFBpdGNoKTsKLX0KLQotfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9pbWFnZWZvcm1hdHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2ltYWdlZm9ybWF0cy5o
CShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2ltYWdlZm9ybWF0cy5oCShub25leGlzdGVudCkKQEAgLTEsMTk5OSAr
MCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDEzLTIwMTUgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBpbWFnZWZvcm1hdHMuaDogRGVmaW5lcyBp
bWFnZSBmb3JtYXQgdHlwZXMgd2l0aCBmdW5jdGlvbnMgZm9yIG1pcCBnZW5lcmF0aW9uCi0vLyBh
bmQgY29weWluZy4KLQotI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfSU1BR0VGT1JNQVRT
X0hfCi0jZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9JTUFHRUZPUk1BVFNfSF8KLQotI2lu
Y2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMuaCIKLQotI2luY2x1ZGUgImNvbW1vbi9tYXRodXRp
bC5oIgotCi1uYW1lc3BhY2UgcngKLXsKLQotLy8gU2V2ZXJhbCBzdHJ1Y3R1cmVzIHNoYXJlIGZ1
bmN0aW9uYWxpdHkgZm9yIHJlYWRpbmcsIHdyaXRpbmcgb3IgbWlwbWFwcGluZyBidXQgdGhlIGxh
eW91dAotLy8gbXVzdCBtYXRjaCB0aGUgdGV4dHVyZSBmb3JtYXQgd2hpY2ggdGhlIHN0cnVjdHVy
ZSByZXByZXNlbnRzLiBJZiBjb2xsYXBzaW5nIG9yIHR5cGVkZWZpbmcKLS8vIHN0cnVjdHMgaW4g
dGhpcyBoZWFkZXIsIG1ha2Ugc3VyZSB0aGUgZnVuY3Rpb25hbGl0eSBhbmQgbWVtb3J5IGxheW91
dCBpcyBleGFjdGx5IHRoZSBzYW1lLgotCi1zdHJ1Y3QgTDgKLXsKLSAgICB1bnNpZ25lZCBjaGFy
IEw7Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBM
OCAqc3JjKQotICAgIHsKLSAgICAgICAgY29uc3QgZmxvYXQgbHVtID0gZ2w6Om5vcm1hbGl6ZWRU
b0Zsb2F0KHNyYy0+TCk7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBsdW07Ci0gICAgICAgIGRzdC0+
Z3JlZW4gPSBsdW07Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSBsdW07Ci0gICAgICAgIGRzdC0+YWxw
aGEgPSAxLjBmOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoTDggKmRzdCwg
Y29uc3QgZ2w6OkNvbG9yRiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5MID0gZ2w6OmZsb2F0
VG9Ob3JtYWxpemVkPHVuc2lnbmVkIGNoYXI+KChzcmMtPnJlZCArIHNyYy0+Z3JlZW4gKyBzcmMt
PmJsdWUpIC8gMy4wZik7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgYXZlcmFnZShMOCAqZHN0
LCBjb25zdCBMOCAqc3JjMSwgY29uc3QgTDggKnNyYzIpCi0gICAgewotICAgICAgICBkc3QtPkwg
PSBnbDo6YXZlcmFnZShzcmMxLT5MLCBzcmMyLT5MKTsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgUjgK
LXsKLSAgICB1bnNpZ25lZCBjaGFyIFI7Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6
OkNvbG9yRiAqZHN0LCBjb25zdCBSOCAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9
IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPlIpOwotICAgICAgICBkc3QtPmdyZWVuID0gMC4w
ZjsKLSAgICAgICAgZHN0LT5ibHVlICA9IDAuMGY7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSAxLjBm
OwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JVSSAqZHN0LCBj
b25zdCBSOCAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKLSAgICAg
ICAgZHN0LT5ncmVlbiA9IDA7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSAwOwotICAgICAgICBkc3Qt
PmFscGhhID0gMTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFI4ICpkc3Qs
IGNvbnN0IGdsOjpDb2xvckYgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IGdsOjpmbG9h
dFRvTm9ybWFsaXplZDx1bnNpZ25lZCBjaGFyPihzcmMtPnJlZCk7Ci0gICAgfQotCi0gICAgc3Rh
dGljIHZvaWQgd3JpdGVDb2xvcihSOCAqZHN0LCBjb25zdCBnbDo6Q29sb3JVSSAqc3JjKQotICAg
IHsKLSAgICAgICAgZHN0LT5SID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oc3JjLT5yZWQp
OwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjggKmRzdCwgY29uc3QgUjggKnNy
YzEsIGNvbnN0IFI4ICpzcmMyKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6OmF2ZXJhZ2Uo
c3JjMS0+Uiwgc3JjMi0+Uik7Ci0gICAgfQotfTsKLQotc3RydWN0IEE4Ci17Ci0gICAgdW5zaWdu
ZWQgY2hhciBBOwotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwg
Y29uc3QgQTggKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVkICAgPSAwLjBmOwotICAgICAg
ICBkc3QtPmdyZWVuID0gMC4wZjsKLSAgICAgICAgZHN0LT5ibHVlICA9IDAuMGY7Ci0gICAgICAg
IGRzdC0+YWxwaGEgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5BKTsKLSAgICB9Ci0KLSAg
ICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKEE4ICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykK
LSAgICB7Ci0gICAgICAgIGRzdC0+QSA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1bnNpZ25lZCBj
aGFyPihzcmMtPmFscGhhKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKEE4ICpk
c3QsIGNvbnN0IEE4ICpzcmMxLCBjb25zdCBBOCAqc3JjMikKLSAgICB7Ci0gICAgICAgIGRzdC0+
QSA9IGdsOjphdmVyYWdlKHNyYzEtPkEsIHNyYzItPkEpOwotICAgIH0KLX07Ci0KLXN0cnVjdCBM
OEE4Ci17Ci0gICAgdW5zaWduZWQgY2hhciBMOwotICAgIHVuc2lnbmVkIGNoYXIgQTsKLQotICAg
IHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IEw4QTggKnNyYykK
LSAgICB7Ci0gICAgICAgIGNvbnN0IGZsb2F0IGx1bSA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChz
cmMtPkwpOwotICAgICAgICBkc3QtPnJlZCAgID0gbHVtOwotICAgICAgICBkc3QtPmdyZWVuID0g
bHVtOwotICAgICAgICBkc3QtPmJsdWUgID0gbHVtOwotICAgICAgICBkc3QtPmFscGhhID0gZ2w6
Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+QSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3Jp
dGVDb2xvcihMOEE4ICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKLSAgICB7Ci0gICAgICAg
IGRzdC0+TCA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1bnNpZ25lZCBjaGFyPigoc3JjLT5yZWQg
KyBzcmMtPmdyZWVuICsgc3JjLT5ibHVlKSAvIDMuMGYpOwotICAgICAgICBkc3QtPkEgPSBnbDo6
ZmxvYXRUb05vcm1hbGl6ZWQ8dW5zaWduZWQgY2hhcj4oc3JjLT5hbHBoYSk7Ci0gICAgfQotCi0g
ICAgc3RhdGljIHZvaWQgYXZlcmFnZShMOEE4ICpkc3QsIGNvbnN0IEw4QTggKnNyYzEsIGNvbnN0
IEw4QTggKnNyYzIpCi0gICAgewotICAgICAgICAqKHVuc2lnbmVkIHNob3J0Kilkc3QgPSAoKCgq
KHVuc2lnbmVkIHNob3J0KilzcmMxIF4gKih1bnNpZ25lZCBzaG9ydCopc3JjMikgJiAweEZFRkUp
ID4+IDEpICsgKCoodW5zaWduZWQgc2hvcnQqKXNyYzEgJiAqKHVuc2lnbmVkIHNob3J0KilzcmMy
KTsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgQThMOAotewotICAgIHVuc2lnbmVkIGNoYXIgQTsKLSAg
ICB1bnNpZ25lZCBjaGFyIEw7Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9y
RiAqZHN0LCBjb25zdCBBOEw4ICpzcmMpCi0gICAgewotICAgICAgICBjb25zdCBmbG9hdCBsdW0g
PSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5MKTsKLSAgICAgICAgZHN0LT5yZWQgICA9IGx1
bTsKLSAgICAgICAgZHN0LT5ncmVlbiA9IGx1bTsKLSAgICAgICAgZHN0LT5ibHVlICA9IGx1bTsK
LSAgICAgICAgZHN0LT5hbHBoYSA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkEpOwotICAg
IH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoQThMOCAqZHN0LCBjb25zdCBnbDo6Q29s
b3JGICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPkwgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8
dW5zaWduZWQgY2hhcj4oKHNyYy0+cmVkICsgc3JjLT5ncmVlbiArIHNyYy0+Ymx1ZSkgLyAzLjBm
KTsKLSAgICAgICAgZHN0LT5BID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPHVuc2lnbmVkIGNoYXI+
KHNyYy0+YWxwaGEpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoQThMOCAqZHN0
LCBjb25zdCBBOEw4ICpzcmMxLCBjb25zdCBBOEw4ICpzcmMyKQotICAgIHsKLSAgICAgICAgKih1
bnNpZ25lZCBzaG9ydCopZHN0ID0gKCgoKih1bnNpZ25lZCBzaG9ydCopc3JjMSBeICoodW5zaWdu
ZWQgc2hvcnQqKXNyYzIpICYgMHhGRUZFKSA+PiAxKSArICgqKHVuc2lnbmVkIHNob3J0KilzcmMx
ICYgKih1bnNpZ25lZCBzaG9ydCopc3JjMik7Ci0gICAgfQotfTsKLQotc3RydWN0IFI4RzgKLXsK
LSAgICB1bnNpZ25lZCBjaGFyIFI7Ci0gICAgdW5zaWduZWQgY2hhciBHOwotCi0gICAgc3RhdGlj
IHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjhHOCAqc3JjKQotICAgIHsK
LSAgICAgICAgZHN0LT5yZWQgICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPlIpOwotICAg
ICAgICBkc3QtPmdyZWVuID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Ryk7Ci0gICAgICAg
IGRzdC0+Ymx1ZSAgPSAwLjBmOwotICAgICAgICBkc3QtPmFscGhhID0gMS4wZjsKLSAgICB9Ci0K
LSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yVUkgKmRzdCwgY29uc3QgUjhHOCAq
c3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKLSAgICAgICAgZHN0LT5n
cmVlbiA9IHNyYy0+RzsKLSAgICAgICAgZHN0LT5ibHVlICA9IDA7Ci0gICAgICAgIGRzdC0+YWxw
aGEgPSAxOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjhHOCAqZHN0LCBj
b25zdCBnbDo6Q29sb3JGICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6ZmxvYXRU
b05vcm1hbGl6ZWQ8dW5zaWduZWQgY2hhcj4oc3JjLT5yZWQpOwotICAgICAgICBkc3QtPkcgPSBn
bDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dW5zaWduZWQgY2hhcj4oc3JjLT5ncmVlbik7Ci0gICAgfQot
Ci0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSOEc4ICpkc3QsIGNvbnN0IGdsOjpDb2xvclVJ
ICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
PihzcmMtPnJlZCk7Ci0gICAgICAgIGRzdC0+RyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KHNyYy0+Z3JlZW4pOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjhHOCAqZHN0
LCBjb25zdCBSOEc4ICpzcmMxLCBjb25zdCBSOEc4ICpzcmMyKQotICAgIHsKLSAgICAgICAgKih1
bnNpZ25lZCBzaG9ydCopZHN0ID0gKCgoKih1bnNpZ25lZCBzaG9ydCopc3JjMSBeICoodW5zaWdu
ZWQgc2hvcnQqKXNyYzIpICYgMHhGRUZFKSA+PiAxKSArICgqKHVuc2lnbmVkIHNob3J0KilzcmMx
ICYgKih1bnNpZ25lZCBzaG9ydCopc3JjMik7Ci0gICAgfQotfTsKLQotc3RydWN0IFI4RzhCOAot
ewotICAgIHVuc2lnbmVkIGNoYXIgUjsKLSAgICB1bnNpZ25lZCBjaGFyIEc7Ci0gICAgdW5zaWdu
ZWQgY2hhciBCOwotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwg
Y29uc3QgUjhHOEI4ICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1h
bGl6ZWRUb0Zsb2F0KHNyYy0+Uik7Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSBnbDo6bm9ybWFsaXpl
ZFRvRmxvYXQoc3JjLT5HKTsKLSAgICAgICAgZHN0LT5ibHVlICA9IGdsOjpub3JtYWxpemVkVG9G
bG9hdChzcmMtPkIpOwotICAgICAgICBkc3QtPmFscGhhID0gMS4wZjsKLSAgICB9Ci0KLSAgICBz
dGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yVUkgKmRzdCwgY29uc3QgUjhHOEI4ICpzcmMp
Ci0gICAgewotICAgICAgICBkc3QtPnJlZCAgID0gc3JjLT5SOwotICAgICAgICBkc3QtPmdyZWVu
ID0gc3JjLT5HOwotICAgICAgICBkc3QtPmJsdWUgID0gc3JjLT5HOwotICAgICAgICBkc3QtPmFs
cGhhID0gMTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFI4RzhCOCAqZHN0
LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6Zmxv
YXRUb05vcm1hbGl6ZWQ8dW5zaWduZWQgY2hhcj4oc3JjLT5yZWQpOwotICAgICAgICBkc3QtPkcg
PSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dW5zaWduZWQgY2hhcj4oc3JjLT5ncmVlbik7Ci0gICAg
ICAgIGRzdC0+QiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1bnNpZ25lZCBjaGFyPihzcmMtPmJs
dWUpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjhHOEI4ICpkc3QsIGNv
bnN0IGdsOjpDb2xvclVJICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBjaGFyPihzcmMtPnJlZCk7Ci0gICAgICAgIGRzdC0+RyA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXI+KHNyYy0+Z3JlZW4pOwotICAgICAgICBkc3QtPkIgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBjaGFyPihzcmMtPmJsdWUpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGF2
ZXJhZ2UoUjhHOEI4ICpkc3QsIGNvbnN0IFI4RzhCOCAqc3JjMSwgY29uc3QgUjhHOEI4ICpzcmMy
KQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Uiwgc3JjMi0+Uik7
Ci0gICAgICAgIGRzdC0+RyA9IGdsOjphdmVyYWdlKHNyYzEtPkcsIHNyYzItPkcpOwotICAgICAg
ICBkc3QtPkIgPSBnbDo6YXZlcmFnZShzcmMxLT5CLCBzcmMyLT5CKTsKLSAgICB9Ci19OwotCi1z
dHJ1Y3QgQjhHOFI4Ci17Ci0gICAgdW5zaWduZWQgY2hhciBCOwotICAgIHVuc2lnbmVkIGNoYXIg
RzsKLSAgICB1bnNpZ25lZCBjaGFyIFI7Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6
OkNvbG9yRiAqZHN0LCBjb25zdCBCOEc4UjggKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVk
ICAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5SKTsKLSAgICAgICAgZHN0LT5ncmVlbiA9
IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkcpOwotICAgICAgICBkc3QtPmJsdWUgID0gZ2w6
Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Qik7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSAxLjBmOwot
ICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JVSSAqZHN0LCBjb25z
dCBCOEc4UjggKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBzcmMtPlI7Ci0gICAg
ICAgIGRzdC0+Z3JlZW4gPSBzcmMtPkc7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSBzcmMtPkc7Ci0g
ICAgICAgIGRzdC0+YWxwaGEgPSAxOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29s
b3IoQjhHOFI4ICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKLSAgICB7Ci0gICAgICAgIGRz
dC0+UiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1bnNpZ25lZCBjaGFyPihzcmMtPnJlZCk7Ci0g
ICAgICAgIGRzdC0+RyA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1bnNpZ25lZCBjaGFyPihzcmMt
PmdyZWVuKTsKLSAgICAgICAgZHN0LT5CID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPHVuc2lnbmVk
IGNoYXI+KHNyYy0+Ymx1ZSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihC
OEc4UjggKmRzdCwgY29uc3QgZ2w6OkNvbG9yVUkgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+
UiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHNyYy0+cmVkKTsKLSAgICAgICAgZHN0LT5H
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oc3JjLT5ncmVlbik7Ci0gICAgICAgIGRzdC0+
QiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHNyYy0+Ymx1ZSk7Ci0gICAgfQotCi0gICAg
c3RhdGljIHZvaWQgYXZlcmFnZShCOEc4UjggKmRzdCwgY29uc3QgQjhHOFI4ICpzcmMxLCBjb25z
dCBCOEc4UjggKnNyYzIpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6YXZlcmFnZShzcmMx
LT5SLCBzcmMyLT5SKTsKLSAgICAgICAgZHN0LT5HID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Rywgc3Jj
Mi0+Ryk7Ci0gICAgICAgIGRzdC0+QiA9IGdsOjphdmVyYWdlKHNyYzEtPkIsIHNyYzItPkIpOwot
ICAgIH0KLX07Ci0KLXN0cnVjdCBSNUc2QjUKLXsKLSAgICAvLyBPcGVuR0wgRVMgMi4wLjI1IHNw
ZWMgU2VjdGlvbiAzLjYuMjogIkNvbXBvbmVudHMgYXJlIHBhY2tlZCB3aXRoIHRoZSBmaXJzdCBj
b21wb25lbnQgaW4gdGhlIG1vc3Qgc2lnbmlmaWNhbnQKLSAgICAvLyBiaXRzIG9mIHRoZSBiaXRm
aWVsZCwgYW5kIHN1Y2Nlc3NpdmUgY29tcG9uZW50IG9jY3VweWluZyBwcm9ncmVzc2l2ZWx5IGxl
c3Mgc2lnbmlmaWNhbnQgbG9jYXRpb25zIgotICAgIHVuc2lnbmVkIHNob3J0IFJHQjsKLQotICAg
IHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFI1RzZCNSAqc3Jj
KQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdDw1Pihn
bDo6Z2V0U2hpZnRlZERhdGE8NSwgMTE+KHNyYy0+UkdCKSk7Ci0gICAgICAgIGRzdC0+Z3JlZW4g
PSBnbDo6bm9ybWFsaXplZFRvRmxvYXQ8Nj4oZ2w6OmdldFNoaWZ0ZWREYXRhPDYsICA1PihzcmMt
PlJHQikpOwotICAgICAgICBkc3QtPmJsdWUgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0PDU+KGds
OjpnZXRTaGlmdGVkRGF0YTw1LCAgMD4oc3JjLT5SR0IpKTsKLSAgICAgICAgZHN0LT5hbHBoYSA9
IDEuMGY7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSNUc2QjUgKmRzdCwg
Y29uc3QgZ2w6OkNvbG9yRiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5SR0IgPSBnbDo6c2hp
ZnREYXRhPDUsIDExPihnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8NSwgdW5zaWduZWQgc2hvcnQ+KHNy
Yy0+cmVkKSkgICB8Ci0gICAgICAgICAgICAgICAgICAgZ2w6OnNoaWZ0RGF0YTw2LCAgNT4oZ2w6
OmZsb2F0VG9Ob3JtYWxpemVkPDYsIHVuc2lnbmVkIHNob3J0PihzcmMtPmdyZWVuKSkgfAotICAg
ICAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NSwgIDA+KGdsOjpmbG9hdFRvTm9ybWFsaXpl
ZDw1LCB1bnNpZ25lZCBzaG9ydD4oc3JjLT5ibHVlKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZv
aWQgYXZlcmFnZShSNUc2QjUgKmRzdCwgY29uc3QgUjVHNkI1ICpzcmMxLCBjb25zdCBSNUc2QjUg
KnNyYzIpCi0gICAgewotICAgICAgICBkc3QtPlJHQiA9IGdsOjpzaGlmdERhdGE8NSwgMTE+KGds
OjphdmVyYWdlKGdsOjpnZXRTaGlmdGVkRGF0YTw1LCAxMT4oc3JjMS0+UkdCKSwgZ2w6OmdldFNo
aWZ0ZWREYXRhPDUsIDExPihzcmMyLT5SR0IpKSkgfAotICAgICAgICAgICAgICAgICAgIGdsOjpz
aGlmdERhdGE8NiwgIDU+KGdsOjphdmVyYWdlKGdsOjpnZXRTaGlmdGVkRGF0YTw2LCAgNT4oc3Jj
MS0+UkdCKSwgZ2w6OmdldFNoaWZ0ZWREYXRhPDYsICA1PihzcmMyLT5SR0IpKSkgfAotICAgICAg
ICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NSwgIDA+KGdsOjphdmVyYWdlKGdsOjpnZXRTaGlm
dGVkRGF0YTw1LCAgMD4oc3JjMS0+UkdCKSwgZ2w6OmdldFNoaWZ0ZWREYXRhPDUsICAwPihzcmMy
LT5SR0IpKSk7Ci0gICAgfQotfTsKLQotc3RydWN0IEE4UjhHOEI4Ci17Ci0gICAgdW5zaWduZWQg
Y2hhciBBOwotICAgIHVuc2lnbmVkIGNoYXIgUjsKLSAgICB1bnNpZ25lZCBjaGFyIEc7Ci0gICAg
dW5zaWduZWQgY2hhciBCOwotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYg
KmRzdCwgY29uc3QgQThSOEc4QjggKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBn
bDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5SKTsKLSAgICAgICAgZHN0LT5ncmVlbiA9IGdsOjpu
b3JtYWxpemVkVG9GbG9hdChzcmMtPkcpOwotICAgICAgICBkc3QtPmJsdWUgID0gZ2w6Om5vcm1h
bGl6ZWRUb0Zsb2F0KHNyYy0+Qik7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSBnbDo6bm9ybWFsaXpl
ZFRvRmxvYXQoc3JjLT5BKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6
OkNvbG9yVUkgKmRzdCwgY29uc3QgQThSOEc4QjggKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+
cmVkICAgPSBzcmMtPlI7Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSBzcmMtPkc7Ci0gICAgICAgIGRz
dC0+Ymx1ZSAgPSBzcmMtPkI7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSBzcmMtPkE7Ci0gICAgfQot
Ci0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihBOFI4RzhCOCAqZHN0LCBjb25zdCBnbDo6Q29s
b3JGICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8
dW5zaWduZWQgY2hhcj4oc3JjLT5yZWQpOwotICAgICAgICBkc3QtPkcgPSBnbDo6ZmxvYXRUb05v
cm1hbGl6ZWQ8dW5zaWduZWQgY2hhcj4oc3JjLT5ncmVlbik7Ci0gICAgICAgIGRzdC0+QiA9IGds
OjpmbG9hdFRvTm9ybWFsaXplZDx1bnNpZ25lZCBjaGFyPihzcmMtPmJsdWUpOwotICAgICAgICBk
c3QtPkEgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dW5zaWduZWQgY2hhcj4oc3JjLT5hbHBoYSk7
Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihBOFI4RzhCOCAqZHN0LCBjb25z
dCBnbDo6Q29sb3JVSSAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcj4oc3JjLT5yZWQpOwotICAgICAgICBkc3QtPkcgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyPihzcmMtPmdyZWVuKTsKLSAgICAgICAgZHN0LT5CID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcj4oc3JjLT5ibHVlKTsKLSAgICAgICAgZHN0LT5BID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcj4oc3JjLT5hbHBoYSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgYXZl
cmFnZShBOFI4RzhCOCAqZHN0LCBjb25zdCBBOFI4RzhCOCAqc3JjMSwgY29uc3QgQThSOEc4Qjgg
KnNyYzIpCi0gICAgewotICAgICAgICAqKHVuc2lnbmVkIGludCopZHN0ID0gKCgoKih1bnNpZ25l
ZCBpbnQqKXNyYzEgXiAqKHVuc2lnbmVkIGludCopc3JjMikgJiAweEZFRkVGRUZFKSA+PiAxKSAr
ICgqKHVuc2lnbmVkIGludCopc3JjMSAmICoodW5zaWduZWQgaW50KilzcmMyKTsKLSAgICB9Ci19
OwotCi1zdHJ1Y3QgUjhHOEI4QTgKLXsKLSAgICB1bnNpZ25lZCBjaGFyIFI7Ci0gICAgdW5zaWdu
ZWQgY2hhciBHOwotICAgIHVuc2lnbmVkIGNoYXIgQjsKLSAgICB1bnNpZ25lZCBjaGFyIEE7Ci0K
LSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSOEc4QjhB
OCAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9IGdsOjpub3JtYWxpemVkVG9GbG9h
dChzcmMtPlIpOwotICAgICAgICBkc3QtPmdyZWVuID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNy
Yy0+Ryk7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5C
KTsKLSAgICAgICAgZHN0LT5hbHBoYSA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkEpOwot
ICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JVSSAqZHN0LCBjb25z
dCBSOEc4QjhBOCAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKLSAg
ICAgICAgZHN0LT5ncmVlbiA9IHNyYy0+RzsKLSAgICAgICAgZHN0LT5ibHVlICA9IHNyYy0+QjsK
LSAgICAgICAgZHN0LT5hbHBoYSA9IHNyYy0+QTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3
cml0ZUNvbG9yKFI4RzhCOEE4ICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKLSAgICB7Ci0g
ICAgICAgIGRzdC0+UiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1bnNpZ25lZCBjaGFyPihzcmMt
PnJlZCk7Ci0gICAgICAgIGRzdC0+RyA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1bnNpZ25lZCBj
aGFyPihzcmMtPmdyZWVuKTsKLSAgICAgICAgZHN0LT5CID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVk
PHVuc2lnbmVkIGNoYXI+KHNyYy0+Ymx1ZSk7Ci0gICAgICAgIGRzdC0+QSA9IGdsOjpmbG9hdFRv
Tm9ybWFsaXplZDx1bnNpZ25lZCBjaGFyPihzcmMtPmFscGhhKTsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgdm9pZCB3cml0ZUNvbG9yKFI4RzhCOEE4ICpkc3QsIGNvbnN0IGdsOjpDb2xvclVJICpzcmMp
Ci0gICAgewotICAgICAgICBkc3QtPlIgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzcmMt
PnJlZCk7Ci0gICAgICAgIGRzdC0+RyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHNyYy0+
Z3JlZW4pOwotICAgICAgICBkc3QtPkIgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzcmMt
PmJsdWUpOwotICAgICAgICBkc3QtPkEgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzcmMt
PmFscGhhKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFI4RzhCOEE4ICpkc3Qs
IGNvbnN0IFI4RzhCOEE4ICpzcmMxLCBjb25zdCBSOEc4QjhBOCAqc3JjMikKLSAgICB7Ci0gICAg
ICAgICoodW5zaWduZWQgaW50Kilkc3QgPSAoKCgqKHVuc2lnbmVkIGludCopc3JjMSBeICoodW5z
aWduZWQgaW50KilzcmMyKSAmIDB4RkVGRUZFRkUpID4+IDEpICsgKCoodW5zaWduZWQgaW50Kilz
cmMxICYgKih1bnNpZ25lZCBpbnQqKXNyYzIpOwotICAgIH0KLX07Ci0KLXN0cnVjdCBCOEc4UjhB
OAotewotICAgIHVuc2lnbmVkIGNoYXIgQjsKLSAgICB1bnNpZ25lZCBjaGFyIEc7Ci0gICAgdW5z
aWduZWQgY2hhciBSOwotICAgIHVuc2lnbmVkIGNoYXIgQTsKLQotICAgIHN0YXRpYyB2b2lkIHJl
YWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IEI4RzhSOEE4ICpzcmMpCi0gICAgewotICAg
ICAgICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7Ci0gICAgICAg
IGRzdC0+Z3JlZW4gPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5HKTsKLSAgICAgICAgZHN0
LT5ibHVlICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkIpOwotICAgICAgICBkc3QtPmFs
cGhhID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+QSk7Ci0gICAgfQotCi0gICAgc3RhdGlj
IHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvclVJICpkc3QsIGNvbnN0IEI4RzhSOEE4ICpzcmMpCi0g
ICAgewotICAgICAgICBkc3QtPnJlZCAgID0gc3JjLT5SOwotICAgICAgICBkc3QtPmdyZWVuID0g
c3JjLT5HOwotICAgICAgICBkc3QtPmJsdWUgID0gc3JjLT5COwotICAgICAgICBkc3QtPmFscGhh
ID0gc3JjLT5BOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoQjhHOFI4QTgg
KmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6
OmZsb2F0VG9Ob3JtYWxpemVkPHVuc2lnbmVkIGNoYXI+KHNyYy0+cmVkKTsKLSAgICAgICAgZHN0
LT5HID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPHVuc2lnbmVkIGNoYXI+KHNyYy0+Z3JlZW4pOwot
ICAgICAgICBkc3QtPkIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dW5zaWduZWQgY2hhcj4oc3Jj
LT5ibHVlKTsKLSAgICAgICAgZHN0LT5BID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPHVuc2lnbmVk
IGNoYXI+KHNyYy0+YWxwaGEpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3Io
QjhHOFI4QTggKmRzdCwgY29uc3QgZ2w6OkNvbG9yVUkgKnNyYykKLSAgICB7Ci0gICAgICAgIGRz
dC0+UiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHNyYy0+cmVkKTsKLSAgICAgICAgZHN0
LT5HID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oc3JjLT5ncmVlbik7Ci0gICAgICAgIGRz
dC0+QiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHNyYy0+Ymx1ZSk7Ci0gICAgICAgIGRz
dC0+QSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHNyYy0+YWxwaGEpOwotICAgIH0KLQot
ICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoQjhHOFI4QTggKmRzdCwgY29uc3QgQjhHOFI4QTggKnNy
YzEsIGNvbnN0IEI4RzhSOEE4ICpzcmMyKQotICAgIHsKLSAgICAgICAgKih1bnNpZ25lZCBpbnQq
KWRzdCA9ICgoKCoodW5zaWduZWQgaW50KilzcmMxIF4gKih1bnNpZ25lZCBpbnQqKXNyYzIpICYg
MHhGRUZFRkVGRSkgPj4gMSkgKyAoKih1bnNpZ25lZCBpbnQqKXNyYzEgJiAqKHVuc2lnbmVkIGlu
dCopc3JjMik7Ci0gICAgfQotfTsKLQotc3RydWN0IEI4RzhSOFg4Ci17Ci0gICAgdW5zaWduZWQg
Y2hhciBCOwotICAgIHVuc2lnbmVkIGNoYXIgRzsKLSAgICB1bnNpZ25lZCBjaGFyIFI7Ci0gICAg
dW5zaWduZWQgY2hhciBYOwotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYg
KmRzdCwgY29uc3QgQjhHOFI4WDggKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVkID0gZ2w6
Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSBnbDo6bm9y
bWFsaXplZFRvRmxvYXQoc3JjLT5HKTsKLSAgICAgICAgZHN0LT5ibHVlID0gZ2w6Om5vcm1hbGl6
ZWRUb0Zsb2F0KHNyYy0+Qik7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSAxLjBmOwotICAgIH0KLQot
ICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JVSSAqZHN0LCBjb25zdCBCOEc4UjhY
OCAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgPSBzcmMtPlI7Ci0gICAgICAgIGRzdC0+
Z3JlZW4gPSBzcmMtPkc7Ci0gICAgICAgIGRzdC0+Ymx1ZSA9IHNyYy0+QjsKLSAgICAgICAgZHN0
LT5hbHBoYSA9IDE7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihCOEc4UjhY
OCAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBn
bDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dW5zaWduZWQgY2hhcj4oc3JjLT5yZWQpOwotICAgICAgICBk
c3QtPkcgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dW5zaWduZWQgY2hhcj4oc3JjLT5ncmVlbik7
Ci0gICAgICAgIGRzdC0+QiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1bnNpZ25lZCBjaGFyPihz
cmMtPmJsdWUpOwotICAgICAgICBkc3QtPlggPSAyNTU7Ci0gICAgfQotCi0gICAgc3RhdGljIHZv
aWQgd3JpdGVDb2xvcihCOEc4UjhYOCAqZHN0LCBjb25zdCBnbDo6Q29sb3JVSSAqc3JjKQotICAg
IHsKLSAgICAgICAgZHN0LT5SID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oc3JjLT5yZWQp
OwotICAgICAgICBkc3QtPkcgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzcmMtPmdyZWVu
KTsKLSAgICAgICAgZHN0LT5CID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oc3JjLT5ibHVl
KTsKLSAgICAgICAgZHN0LT5YID0gMjU1OwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGF2ZXJh
Z2UoQjhHOFI4WDggKmRzdCwgY29uc3QgQjhHOFI4WDggKnNyYzEsIGNvbnN0IEI4RzhSOFg4ICpz
cmMyKQotICAgIHsKLSAgICAgICAgKih1bnNpZ25lZCBpbnQqKWRzdCA9ICgoKCoodW5zaWduZWQg
aW50KilzcmMxIF4gKih1bnNpZ25lZCBpbnQqKXNyYzIpICYgMHhGRUZFRkVGRSkgPj4gMSkgKyAo
Kih1bnNpZ25lZCBpbnQqKXNyYzEgJiAqKHVuc2lnbmVkIGludCopc3JjMik7Ci0gICAgICAgIGRz
dC0+WCA9IDI1NTsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgQTFSNUc1QjUKLXsKLSAgICB1bnNpZ25l
ZCBzaG9ydCBBUkdCOwotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRz
dCwgY29uc3QgQTFSNUc1QjUgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSBnbDo6
bm9ybWFsaXplZFRvRmxvYXQ8MT4oZ2w6OmdldFNoaWZ0ZWREYXRhPDEsIDE1PihzcmMtPkFSR0Ip
KTsKLSAgICAgICAgZHN0LT5yZWQgICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdDw1PihnbDo6Z2V0
U2hpZnRlZERhdGE8NSwgMTA+KHNyYy0+QVJHQikpOwotICAgICAgICBkc3QtPmdyZWVuID0gZ2w6
Om5vcm1hbGl6ZWRUb0Zsb2F0PDU+KGdsOjpnZXRTaGlmdGVkRGF0YTw1LCAgNT4oc3JjLT5BUkdC
KSk7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQ8NT4oZ2w6Omdl
dFNoaWZ0ZWREYXRhPDUsICAwPihzcmMtPkFSR0IpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9p
ZCB3cml0ZUNvbG9yKEExUjVHNUI1ICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKLSAgICB7
Ci0gICAgICAgIGRzdC0+QVJHQiA9IGdsOjpzaGlmdERhdGE8MSwgMTU+KGdsOjpmbG9hdFRvTm9y
bWFsaXplZDwxLCB1bnNpZ25lZCBzaG9ydD4oc3JjLT5hbHBoYSkpIHwKLSAgICAgICAgICAgICAg
ICAgICAgZ2w6OnNoaWZ0RGF0YTw1LCAxMD4oZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPDUsIHVuc2ln
bmVkIHNob3J0PihzcmMtPnJlZCkpICAgfAotICAgICAgICAgICAgICAgICAgICBnbDo6c2hpZnRE
YXRhPDUsICA1PihnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8NSwgdW5zaWduZWQgc2hvcnQ+KHNyYy0+
Z3JlZW4pKSB8Ci0gICAgICAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NSwgIDA+KGdsOjpm
bG9hdFRvTm9ybWFsaXplZDw1LCB1bnNpZ25lZCBzaG9ydD4oc3JjLT5ibHVlKSk7Ci0gICAgfQot
Ci0gICAgc3RhdGljIHZvaWQgYXZlcmFnZShBMVI1RzVCNSAqZHN0LCBjb25zdCBBMVI1RzVCNSAq
c3JjMSwgY29uc3QgQTFSNUc1QjUgKnNyYzIpCi0gICAgewotICAgICAgICBkc3QtPkFSR0IgPSBn
bDo6c2hpZnREYXRhPDEsIDE1PihnbDo6YXZlcmFnZShnbDo6Z2V0U2hpZnRlZERhdGE8MSwgMTU+
KHNyYzEtPkFSR0IpLCBnbDo6Z2V0U2hpZnRlZERhdGE8MSwgMTU+KHNyYzItPkFSR0IpKSkgfAot
ICAgICAgICAgICAgICAgICAgICBnbDo6c2hpZnREYXRhPDUsIDEwPihnbDo6YXZlcmFnZShnbDo6
Z2V0U2hpZnRlZERhdGE8NSwgMTA+KHNyYzEtPkFSR0IpLCBnbDo6Z2V0U2hpZnRlZERhdGE8NSwg
MTA+KHNyYzItPkFSR0IpKSkgfAotICAgICAgICAgICAgICAgICAgICBnbDo6c2hpZnREYXRhPDUs
ICA1PihnbDo6YXZlcmFnZShnbDo6Z2V0U2hpZnRlZERhdGE8NSwgIDU+KHNyYzEtPkFSR0IpLCBn
bDo6Z2V0U2hpZnRlZERhdGE8NSwgIDU+KHNyYzItPkFSR0IpKSkgfAotICAgICAgICAgICAgICAg
ICAgICBnbDo6c2hpZnREYXRhPDUsICAwPihnbDo6YXZlcmFnZShnbDo6Z2V0U2hpZnRlZERhdGE8
NSwgIDA+KHNyYzEtPkFSR0IpLCBnbDo6Z2V0U2hpZnRlZERhdGE8NSwgIDA+KHNyYzItPkFSR0Ip
KSk7Ci0gICAgfQotfTsKLQotc3RydWN0IFI1RzVCNUExCi17Ci0gICAgLy8gT3BlbkdMIEVTIDIu
MC4yNSBzcGVjIFNlY3Rpb24gMy42LjI6ICJDb21wb25lbnRzIGFyZSBwYWNrZWQgd2l0aCB0aGUg
Zmlyc3QgY29tcG9uZW50IGluIHRoZSBtb3N0IHNpZ25pZmljYW50Ci0gICAgLy8gYml0cyBvZiB0
aGUgYml0ZmllbGQsIGFuZCBzdWNjZXNzaXZlIGNvbXBvbmVudCBvY2N1cHlpbmcgcHJvZ3Jlc3Np
dmVseSBsZXNzIHNpZ25pZmljYW50IGxvY2F0aW9ucyIKLSAgICB1bnNpZ25lZCBzaG9ydCBSR0JB
OwotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjVH
NUI1QTEgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRv
RmxvYXQ8NT4oZ2w6OmdldFNoaWZ0ZWREYXRhPDUsIDExPihzcmMtPlJHQkEpKTsKLSAgICAgICAg
ZHN0LT5ncmVlbiA9IGdsOjpub3JtYWxpemVkVG9GbG9hdDw1PihnbDo6Z2V0U2hpZnRlZERhdGE8
NSwgIDY+KHNyYy0+UkdCQSkpOwotICAgICAgICBkc3QtPmJsdWUgID0gZ2w6Om5vcm1hbGl6ZWRU
b0Zsb2F0PDU+KGdsOjpnZXRTaGlmdGVkRGF0YTw1LCAgMT4oc3JjLT5SR0JBKSk7Ci0gICAgICAg
IGRzdC0+YWxwaGEgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQ8MT4oZ2w6OmdldFNoaWZ0ZWREYXRh
PDEsICAwPihzcmMtPlJHQkEpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9y
KFI1RzVCNUExICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKLSAgICB7Ci0gICAgICAgIGRz
dC0+UkdCQSA9IGdsOjpzaGlmdERhdGE8NSwgMTE+KGdsOjpmbG9hdFRvTm9ybWFsaXplZDw1LCB1
bnNpZ25lZCBzaG9ydD4oc3JjLT5yZWQpKSAgIHwKLSAgICAgICAgICAgICAgICAgICAgZ2w6OnNo
aWZ0RGF0YTw1LCAgNj4oZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPDUsIHVuc2lnbmVkIHNob3J0Pihz
cmMtPmdyZWVuKSkgfAotICAgICAgICAgICAgICAgICAgICBnbDo6c2hpZnREYXRhPDUsICAxPihn
bDo6ZmxvYXRUb05vcm1hbGl6ZWQ8NSwgdW5zaWduZWQgc2hvcnQ+KHNyYy0+Ymx1ZSkpICB8Ci0g
ICAgICAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8MSwgIDA+KGdsOjpmbG9hdFRvTm9ybWFs
aXplZDwxLCB1bnNpZ25lZCBzaG9ydD4oc3JjLT5hbHBoYSkpOwotICAgIH0KLQotICAgIHN0YXRp
YyB2b2lkIGF2ZXJhZ2UoUjVHNUI1QTEgKmRzdCwgY29uc3QgUjVHNUI1QTEgKnNyYzEsIGNvbnN0
IFI1RzVCNUExICpzcmMyKQotICAgIHsKLSAgICAgICAgZHN0LT5SR0JBID0gZ2w6OnNoaWZ0RGF0
YTw1LCAxMT4oZ2w6OmF2ZXJhZ2UoZ2w6OmdldFNoaWZ0ZWREYXRhPDUsIDExPihzcmMxLT5SR0JB
KSwgZ2w6OmdldFNoaWZ0ZWREYXRhPDUsIDExPihzcmMyLT5SR0JBKSkpIHwKLSAgICAgICAgICAg
ICAgICAgICAgZ2w6OnNoaWZ0RGF0YTw1LCAgNj4oZ2w6OmF2ZXJhZ2UoZ2w6OmdldFNoaWZ0ZWRE
YXRhPDUsICA2PihzcmMxLT5SR0JBKSwgZ2w6OmdldFNoaWZ0ZWREYXRhPDUsICA2PihzcmMyLT5S
R0JBKSkpIHwKLSAgICAgICAgICAgICAgICAgICAgZ2w6OnNoaWZ0RGF0YTw1LCAgMT4oZ2w6OmF2
ZXJhZ2UoZ2w6OmdldFNoaWZ0ZWREYXRhPDUsICAxPihzcmMxLT5SR0JBKSwgZ2w6OmdldFNoaWZ0
ZWREYXRhPDUsICAxPihzcmMyLT5SR0JBKSkpIHwKLSAgICAgICAgICAgICAgICAgICAgZ2w6OnNo
aWZ0RGF0YTwxLCAgMD4oZ2w6OmF2ZXJhZ2UoZ2w6OmdldFNoaWZ0ZWREYXRhPDEsICAwPihzcmMx
LT5SR0JBKSwgZ2w6OmdldFNoaWZ0ZWREYXRhPDEsICAwPihzcmMyLT5SR0JBKSkpOwotICAgIH0K
LX07Ci0KLXN0cnVjdCBSNEc0QjRBNAotewotICAgIC8vIE9wZW5HTCBFUyAyLjAuMjUgc3BlYyBT
ZWN0aW9uIDMuNi4yOiAiQ29tcG9uZW50cyBhcmUgcGFja2VkIHdpdGggdGhlIGZpcnN0IGNvbXBv
bmVudCBpbiB0aGUgbW9zdCBzaWduaWZpY2FudAotICAgIC8vIGJpdHMgb2YgdGhlIGJpdGZpZWxk
LCBhbmQgc3VjY2Vzc2l2ZSBjb21wb25lbnQgb2NjdXB5aW5nIHByb2dyZXNzaXZlbHkgbGVzcyBz
aWduaWZpY2FudCBsb2NhdGlvbnMiCi0gICAgdW5zaWduZWQgc2hvcnQgUkdCQTsKLQotICAgIHN0
YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFI0RzRCNEE0ICpzcmMp
Ci0gICAgewotICAgICAgICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0PDQ+KGds
OjpnZXRTaGlmdGVkRGF0YTw0LCAxMj4oc3JjLT5SR0JBKSk7Ci0gICAgICAgIGRzdC0+Z3JlZW4g
PSBnbDo6bm9ybWFsaXplZFRvRmxvYXQ8ND4oZ2w6OmdldFNoaWZ0ZWREYXRhPDQsICA4PihzcmMt
PlJHQkEpKTsKLSAgICAgICAgZHN0LT5ibHVlICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdDw0Pihn
bDo6Z2V0U2hpZnRlZERhdGE8NCwgIDQ+KHNyYy0+UkdCQSkpOwotICAgICAgICBkc3QtPmFscGhh
ID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0PDQ+KGdsOjpnZXRTaGlmdGVkRGF0YTw0LCAgMD4oc3Jj
LT5SR0JBKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSNEc0QjRBNCAq
ZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPlJHQkEgPSBn
bDo6c2hpZnREYXRhPDQsIDEyPihnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8NCwgdW5zaWduZWQgc2hv
cnQ+KHNyYy0+cmVkKSkgIHwKLSAgICAgICAgICAgICAgICAgICAgZ2w6OnNoaWZ0RGF0YTw0LCAg
OD4oZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPDQsIHVuc2lnbmVkIHNob3J0PihzcmMtPmdyZWVuKSkg
fAotICAgICAgICAgICAgICAgICAgICBnbDo6c2hpZnREYXRhPDQsICA0PihnbDo6ZmxvYXRUb05v
cm1hbGl6ZWQ8NCwgdW5zaWduZWQgc2hvcnQ+KHNyYy0+Ymx1ZSkpICAgfAotICAgICAgICAgICAg
ICAgICAgICBnbDo6c2hpZnREYXRhPDQsICAwPihnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8NCwgdW5z
aWduZWQgc2hvcnQ+KHNyYy0+YWxwaGEpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhdmVy
YWdlKFI0RzRCNEE0ICpkc3QsIGNvbnN0IFI0RzRCNEE0ICpzcmMxLCBjb25zdCBSNEc0QjRBNCAq
c3JjMikKLSAgICB7Ci0gICAgICAgIGRzdC0+UkdCQSA9IGdsOjpzaGlmdERhdGE8NCwgMTI+KGds
OjphdmVyYWdlKGdsOjpnZXRTaGlmdGVkRGF0YTw0LCAxMj4oc3JjMS0+UkdCQSksIGdsOjpnZXRT
aGlmdGVkRGF0YTw0LCAxMj4oc3JjMi0+UkdCQSkpKSB8Ci0gICAgICAgICAgICAgICAgICAgIGds
OjpzaGlmdERhdGE8NCwgIDg+KGdsOjphdmVyYWdlKGdsOjpnZXRTaGlmdGVkRGF0YTw0LCAgOD4o
c3JjMS0+UkdCQSksIGdsOjpnZXRTaGlmdGVkRGF0YTw0LCAgOD4oc3JjMi0+UkdCQSkpKSB8Ci0g
ICAgICAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NCwgIDQ+KGdsOjphdmVyYWdlKGdsOjpn
ZXRTaGlmdGVkRGF0YTw0LCAgND4oc3JjMS0+UkdCQSksIGdsOjpnZXRTaGlmdGVkRGF0YTw0LCAg
ND4oc3JjMi0+UkdCQSkpKSB8Ci0gICAgICAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NCwg
IDA+KGdsOjphdmVyYWdlKGdsOjpnZXRTaGlmdGVkRGF0YTw0LCAgMD4oc3JjMS0+UkdCQSksIGds
OjpnZXRTaGlmdGVkRGF0YTw0LCAgMD4oc3JjMi0+UkdCQSkpKTsKLSAgICB9Ci19OwotCi1zdHJ1
Y3QgQTRSNEc0QjQKLXsKLSAgICB1bnNpZ25lZCBzaG9ydCBBUkdCOwotCi0gICAgc3RhdGljIHZv
aWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgQTRSNEc0QjQgKnNyYykKLSAgICB7
Ci0gICAgICAgIGRzdC0+YWxwaGEgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQ8ND4oZ2w6OmdldFNo
aWZ0ZWREYXRhPDQsIDEyPihzcmMtPkFSR0IpKTsKLSAgICAgICAgZHN0LT5yZWQgICA9IGdsOjpu
b3JtYWxpemVkVG9GbG9hdDw0PihnbDo6Z2V0U2hpZnRlZERhdGE8NCwgIDg+KHNyYy0+QVJHQikp
OwotICAgICAgICBkc3QtPmdyZWVuID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0PDQ+KGdsOjpnZXRT
aGlmdGVkRGF0YTw0LCAgND4oc3JjLT5BUkdCKSk7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSBnbDo6
bm9ybWFsaXplZFRvRmxvYXQ8ND4oZ2w6OmdldFNoaWZ0ZWREYXRhPDQsICAwPihzcmMtPkFSR0Ip
KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKEE0UjRHNEI0ICpkc3QsIGNv
bnN0IGdsOjpDb2xvckYgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+QVJHQiA9IGdsOjpzaGlm
dERhdGE8NCwgMTI+KGdsOjpmbG9hdFRvTm9ybWFsaXplZDw0LCB1bnNpZ25lZCBzaG9ydD4oc3Jj
LT5hbHBoYSkpICB8Ci0gICAgICAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NCwgIDg+KGds
OjpmbG9hdFRvTm9ybWFsaXplZDw0LCB1bnNpZ25lZCBzaG9ydD4oc3JjLT5yZWQpKSB8Ci0gICAg
ICAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NCwgIDQ+KGdsOjpmbG9hdFRvTm9ybWFsaXpl
ZDw0LCB1bnNpZ25lZCBzaG9ydD4oc3JjLT5ncmVlbikpICAgfAotICAgICAgICAgICAgICAgICAg
ICBnbDo6c2hpZnREYXRhPDQsICAwPihnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8NCwgdW5zaWduZWQg
c2hvcnQ+KHNyYy0+Ymx1ZSkpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoQTRS
NEc0QjQgKmRzdCwgY29uc3QgQTRSNEc0QjQgKnNyYzEsIGNvbnN0IEE0UjRHNEI0ICpzcmMyKQot
ICAgIHsKLSAgICAgICAgZHN0LT5BUkdCID0gZ2w6OnNoaWZ0RGF0YTw0LCAxMj4oZ2w6OmF2ZXJh
Z2UoZ2w6OmdldFNoaWZ0ZWREYXRhPDQsIDEyPihzcmMxLT5BUkdCKSwgZ2w6OmdldFNoaWZ0ZWRE
YXRhPDQsIDEyPihzcmMyLT5BUkdCKSkpIHwKLSAgICAgICAgICAgICAgICAgICAgZ2w6OnNoaWZ0
RGF0YTw0LCAgOD4oZ2w6OmF2ZXJhZ2UoZ2w6OmdldFNoaWZ0ZWREYXRhPDQsICA4PihzcmMxLT5B
UkdCKSwgZ2w6OmdldFNoaWZ0ZWREYXRhPDQsICA4PihzcmMyLT5BUkdCKSkpIHwKLSAgICAgICAg
ICAgICAgICAgICAgZ2w6OnNoaWZ0RGF0YTw0LCAgND4oZ2w6OmF2ZXJhZ2UoZ2w6OmdldFNoaWZ0
ZWREYXRhPDQsICA0PihzcmMxLT5BUkdCKSwgZ2w6OmdldFNoaWZ0ZWREYXRhPDQsICA0PihzcmMy
LT5BUkdCKSkpIHwKLSAgICAgICAgICAgICAgICAgICAgZ2w6OnNoaWZ0RGF0YTw0LCAgMD4oZ2w6
OmF2ZXJhZ2UoZ2w6OmdldFNoaWZ0ZWREYXRhPDQsICAwPihzcmMxLT5BUkdCKSwgZ2w6OmdldFNo
aWZ0ZWREYXRhPDQsICAwPihzcmMyLT5BUkdCKSkpOwotICAgIH0KLX07Ci0KLXN0cnVjdCBSMTYK
LXsKLSAgICB1bnNpZ25lZCBzaG9ydCBSOwotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGds
OjpDb2xvckYgKmRzdCwgY29uc3QgUjE2ICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPnJlZCAg
ID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSAw
LjBmOwotICAgICAgICBkc3QtPmJsdWUgID0gMC4wZjsKLSAgICAgICAgZHN0LT5hbHBoYSA9IDEu
MGY7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvclVJICpkc3Qs
IGNvbnN0IFIxNiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKLSAg
ICAgICAgZHN0LT5ncmVlbiA9IDA7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSAwOwotICAgICAgICBk
c3QtPmFscGhhID0gMTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIxNiAq
ZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6
ZmxvYXRUb05vcm1hbGl6ZWQ8dW5zaWduZWQgc2hvcnQ+KHNyYy0+cmVkKTsKLSAgICB9Ci0KLSAg
ICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIxNiAqZHN0LCBjb25zdCBnbDo6Q29sb3JVSSAqc3Jj
KQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KHNy
Yy0+cmVkKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFIxNiAqZHN0LCBjb25z
dCBSMTYgKnNyYzEsIGNvbnN0IFIxNiAqc3JjMikKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IGds
OjphdmVyYWdlKHNyYzEtPlIsIHNyYzItPlIpOwotICAgIH0KLX07Ci0KLXN0cnVjdCBSMTZHMTYK
LXsKLSAgICB1bnNpZ25lZCBzaG9ydCBSOwotICAgIHVuc2lnbmVkIHNob3J0IEc7Ci0KLSAgICBz
dGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMTZHMTYgKnNyYykK
LSAgICB7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5S
KTsKLSAgICAgICAgZHN0LT5ncmVlbiA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkcpOwot
ICAgICAgICBkc3QtPmJsdWUgID0gMC4wZjsKLSAgICAgICAgZHN0LT5hbHBoYSA9IDEuMGY7Ci0g
ICAgfQotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvclVJICpkc3QsIGNvbnN0
IFIxNkcxNiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgPSBzcmMtPlI7Ci0gICAgICAg
IGRzdC0+Z3JlZW4gPSBzcmMtPkc7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSAwOwotICAgICAgICBk
c3QtPmFscGhhID0gMTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIxNkcx
NiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBn
bDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dW5zaWduZWQgc2hvcnQ+KHNyYy0+cmVkKTsKLSAgICAgICAg
ZHN0LT5HID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPHVuc2lnbmVkIHNob3J0PihzcmMtPmdyZWVu
KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIxNkcxNiAqZHN0LCBjb25z
dCBnbDo6Q29sb3JVSSAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQgc2hvcnQ+KHNyYy0+cmVkKTsKLSAgICAgICAgZHN0LT5HID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQgc2hvcnQ+KHNyYy0+Z3JlZW4pOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGF2
ZXJhZ2UoUjE2RzE2ICpkc3QsIGNvbnN0IFIxNkcxNiAqc3JjMSwgY29uc3QgUjE2RzE2ICpzcmMy
KQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Uiwgc3JjMi0+Uik7
Ci0gICAgICAgIGRzdC0+RyA9IGdsOjphdmVyYWdlKHNyYzEtPkcsIHNyYzItPkcpOwotICAgIH0K
LX07Ci0KLXN0cnVjdCBSMTZHMTZCMTYKLXsKLSAgICB1bnNpZ25lZCBzaG9ydCBSOwotICAgIHVu
c2lnbmVkIHNob3J0IEc7Ci0gICAgdW5zaWduZWQgc2hvcnQgQjsKLQotICAgIHN0YXRpYyB2b2lk
IHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIxNkcxNkIxNiAqc3JjKQotICAgIHsK
LSAgICAgICAgZHN0LT5yZWQgICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPlIpOwotICAg
ICAgICBkc3QtPmdyZWVuID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Ryk7Ci0gICAgICAg
IGRzdC0+Ymx1ZSAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5CKTsKLSAgICAgICAgZHN0
LT5hbHBoYSA9IDEuMGY7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpD
b2xvclVJICpkc3QsIGNvbnN0IFIxNkcxNkIxNiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5y
ZWQgICA9IHNyYy0+UjsKLSAgICAgICAgZHN0LT5ncmVlbiA9IHNyYy0+RzsKLSAgICAgICAgZHN0
LT5ibHVlICA9IHNyYy0+QjsKLSAgICAgICAgZHN0LT5hbHBoYSA9IDE7Ci0gICAgfQotCi0gICAg
c3RhdGljIHZvaWQgd3JpdGVDb2xvcihSMTZHMTZCMTYgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAq
c3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPHVuc2ln
bmVkIHNob3J0PihzcmMtPnJlZCk7Ci0gICAgICAgIGRzdC0+RyA9IGdsOjpmbG9hdFRvTm9ybWFs
aXplZDx1bnNpZ25lZCBzaG9ydD4oc3JjLT5ncmVlbik7Ci0gICAgICAgIGRzdC0+QiA9IGdsOjpm
bG9hdFRvTm9ybWFsaXplZDx1bnNpZ25lZCBzaG9ydD4oc3JjLT5ibHVlKTsKLSAgICB9Ci0KLSAg
ICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIxNkcxNkIxNiAqZHN0LCBjb25zdCBnbDo6Q29sb3JV
SSAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hv
cnQ+KHNyYy0+cmVkKTsKLSAgICAgICAgZHN0LT5HID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hv
cnQ+KHNyYy0+Z3JlZW4pOwotICAgICAgICBkc3QtPkIgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBz
aG9ydD4oc3JjLT5ibHVlKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFIxNkcx
NkIxNiAqZHN0LCBjb25zdCBSMTZHMTZCMTYgKnNyYzEsIGNvbnN0IFIxNkcxNkIxNiAqc3JjMikK
LSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IGdsOjphdmVyYWdlKHNyYzEtPlIsIHNyYzItPlIpOwot
ICAgICAgICBkc3QtPkcgPSBnbDo6YXZlcmFnZShzcmMxLT5HLCBzcmMyLT5HKTsKLSAgICAgICAg
ZHN0LT5CID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Qiwgc3JjMi0+Qik7Ci0gICAgfQotfTsKLQotc3Ry
dWN0IFIxNkcxNkIxNkExNgotewotICAgIHVuc2lnbmVkIHNob3J0IFI7Ci0gICAgdW5zaWduZWQg
c2hvcnQgRzsKLSAgICB1bnNpZ25lZCBzaG9ydCBCOwotICAgIHVuc2lnbmVkIHNob3J0IEE7Ci0K
LSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMTZHMTZC
MTZBMTYgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRv
RmxvYXQoc3JjLT5SKTsKLSAgICAgICAgZHN0LT5ncmVlbiA9IGdsOjpub3JtYWxpemVkVG9GbG9h
dChzcmMtPkcpOwotICAgICAgICBkc3QtPmJsdWUgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNy
Yy0+Qik7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5B
KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yVUkgKmRzdCwg
Y29uc3QgUjE2RzE2QjE2QTE2ICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPnJlZCAgID0gc3Jj
LT5SOwotICAgICAgICBkc3QtPmdyZWVuID0gc3JjLT5HOwotICAgICAgICBkc3QtPmJsdWUgID0g
c3JjLT5COwotICAgICAgICBkc3QtPmFscGhhID0gc3JjLT5BOwotICAgIH0KLQotICAgIHN0YXRp
YyB2b2lkIHdyaXRlQ29sb3IoUjE2RzE2QjE2QTE2ICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNy
YykKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1bnNpZ25l
ZCBzaG9ydD4oc3JjLT5yZWQpOwotICAgICAgICBkc3QtPkcgPSBnbDo6ZmxvYXRUb05vcm1hbGl6
ZWQ8dW5zaWduZWQgc2hvcnQ+KHNyYy0+Z3JlZW4pOwotICAgICAgICBkc3QtPkIgPSBnbDo6Zmxv
YXRUb05vcm1hbGl6ZWQ8dW5zaWduZWQgc2hvcnQ+KHNyYy0+Ymx1ZSk7Ci0gICAgICAgIGRzdC0+
QSA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1bnNpZ25lZCBzaG9ydD4oc3JjLT5hbHBoYSk7Ci0g
ICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSMTZHMTZCMTZBMTYgKmRzdCwgY29u
c3QgZ2w6OkNvbG9yVUkgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkIHNob3J0PihzcmMtPnJlZCk7Ci0gICAgICAgIGRzdC0+RyA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkIHNob3J0PihzcmMtPmdyZWVuKTsKLSAgICAgICAgZHN0LT5CID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQgc2hvcnQ+KHNyYy0+Ymx1ZSk7Ci0gICAgICAgIGRzdC0+QSA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkIHNob3J0PihzcmMtPmFscGhhKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9p
ZCBhdmVyYWdlKFIxNkcxNkIxNkExNiAqZHN0LCBjb25zdCBSMTZHMTZCMTZBMTYgKnNyYzEsIGNv
bnN0IFIxNkcxNkIxNkExNiAqc3JjMikKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IGdsOjphdmVy
YWdlKHNyYzEtPlIsIHNyYzItPlIpOwotICAgICAgICBkc3QtPkcgPSBnbDo6YXZlcmFnZShzcmMx
LT5HLCBzcmMyLT5HKTsKLSAgICAgICAgZHN0LT5CID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Qiwgc3Jj
Mi0+Qik7Ci0gICAgICAgIGRzdC0+QSA9IGdsOjphdmVyYWdlKHNyYzEtPkEsIHNyYzItPkEpOwot
ICAgIH0KLX07Ci0KLXN0cnVjdCBSMzIKLXsKLSAgICB1bnNpZ25lZCBpbnQgUjsKLQotICAgIHN0
YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIzMiAqc3JjKQotICAg
IHsKLSAgICAgICAgZHN0LT5yZWQgICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPlIpOwot
ICAgICAgICBkc3QtPmdyZWVuID0gMC4wZjsKLSAgICAgICAgZHN0LT5ibHVlICA9IDAuMGY7Ci0g
ICAgICAgIGRzdC0+YWxwaGEgPSAxLjBmOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHJlYWRD
b2xvcihnbDo6Q29sb3JVSSAqZHN0LCBjb25zdCBSMzIgKnNyYykKLSAgICB7Ci0gICAgICAgIGRz
dC0+cmVkICAgPSBzcmMtPlI7Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSAwOwotICAgICAgICBkc3Qt
PmJsdWUgID0gMDsKLSAgICAgICAgZHN0LT5hbHBoYSA9IDE7Ci0gICAgfQotCi0gICAgc3RhdGlj
IHZvaWQgd3JpdGVDb2xvcihSMzIgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQotICAgIHsK
LSAgICAgICAgZHN0LT5SID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPHVuc2lnbmVkIGludD4oc3Jj
LT5yZWQpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjMyICpkc3QsIGNv
bnN0IGdsOjpDb2xvclVJICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBpbnQ+KHNyYy0+cmVkKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhdmVy
YWdlKFIzMiAqZHN0LCBjb25zdCBSMzIgKnNyYzEsIGNvbnN0IFIzMiAqc3JjMikKLSAgICB7Ci0g
ICAgICAgIGRzdC0+UiA9IGdsOjphdmVyYWdlKHNyYzEtPlIsIHNyYzItPlIpOwotICAgIH0KLX07
Ci0KLXN0cnVjdCBSMzJHMzIKLXsKLSAgICB1bnNpZ25lZCBpbnQgUjsKLSAgICB1bnNpZ25lZCBp
bnQgRzsKLQotICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0
IFIzMkczMiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9IGdsOjpub3JtYWxpemVk
VG9GbG9hdChzcmMtPlIpOwotICAgICAgICBkc3QtPmdyZWVuID0gZ2w6Om5vcm1hbGl6ZWRUb0Zs
b2F0KHNyYy0+Ryk7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSAwLjBmOwotICAgICAgICBkc3QtPmFs
cGhhID0gMS4wZjsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9y
VUkgKmRzdCwgY29uc3QgUjMyRzMyICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPnJlZCAgID0g
c3JjLT5SOwotICAgICAgICBkc3QtPmdyZWVuID0gc3JjLT5HOwotICAgICAgICBkc3QtPmJsdWUg
ID0gMDsKLSAgICAgICAgZHN0LT5hbHBoYSA9IDE7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQg
d3JpdGVDb2xvcihSMzJHMzIgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQotICAgIHsKLSAg
ICAgICAgZHN0LT5SID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPHVuc2lnbmVkIGludD4oc3JjLT5y
ZWQpOwotICAgICAgICBkc3QtPkcgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dW5zaWduZWQgaW50
PihzcmMtPmdyZWVuKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIzMkcz
MiAqZHN0LCBjb25zdCBnbDo6Q29sb3JVSSAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihzcmMtPnJlZCk7Ci0gICAgICAgIGRzdC0+RyA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc3JjLT5ncmVlbik7Ci0gICAgfQotCi0gICAgc3RhdGlj
IHZvaWQgYXZlcmFnZShSMzJHMzIgKmRzdCwgY29uc3QgUjMyRzMyICpzcmMxLCBjb25zdCBSMzJH
MzIgKnNyYzIpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6YXZlcmFnZShzcmMxLT5SLCBz
cmMyLT5SKTsKLSAgICAgICAgZHN0LT5HID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Rywgc3JjMi0+Ryk7
Ci0gICAgfQotfTsKLQotc3RydWN0IFIzMkczMkIzMgotewotICAgIHVuc2lnbmVkIGludCBSOwot
ICAgIHVuc2lnbmVkIGludCBHOwotICAgIHVuc2lnbmVkIGludCBCOwotCi0gICAgc3RhdGljIHZv
aWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjMyRzMyQjMyICpzcmMpCi0gICAg
ewotICAgICAgICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7Ci0g
ICAgICAgIGRzdC0+Z3JlZW4gPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5HKTsKLSAgICAg
ICAgZHN0LT5ibHVlICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkIpOwotICAgICAgICBk
c3QtPmFscGhhID0gMS4wZjsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6
OkNvbG9yVUkgKmRzdCwgY29uc3QgUjMyRzMyQjMyICpzcmMpCi0gICAgewotICAgICAgICBkc3Qt
PnJlZCAgID0gc3JjLT5SOwotICAgICAgICBkc3QtPmdyZWVuID0gc3JjLT5HOwotICAgICAgICBk
c3QtPmJsdWUgID0gc3JjLT5COwotICAgICAgICBkc3QtPmFscGhhID0gMTsKLSAgICB9Ci0KLSAg
ICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIzMkczMkIzMiAqZHN0LCBjb25zdCBnbDo6Q29sb3JG
ICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dW5z
aWduZWQgaW50PihzcmMtPnJlZCk7Ci0gICAgICAgIGRzdC0+RyA9IGdsOjpmbG9hdFRvTm9ybWFs
aXplZDx1bnNpZ25lZCBpbnQ+KHNyYy0+Z3JlZW4pOwotICAgICAgICBkc3QtPkIgPSBnbDo6Zmxv
YXRUb05vcm1hbGl6ZWQ8dW5zaWduZWQgaW50PihzcmMtPmJsdWUpOwotICAgIH0KLQotICAgIHN0
YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjMyRzMyQjMyICpkc3QsIGNvbnN0IGdsOjpDb2xvclVJICpz
cmMpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHNy
Yy0+cmVkKTsKLSAgICAgICAgZHN0LT5HID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihzcmMt
PmdyZWVuKTsKLSAgICAgICAgZHN0LT5CID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihzcmMt
PmJsdWUpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjMyRzMyQjMyICpkc3Qs
IGNvbnN0IFIzMkczMkIzMiAqc3JjMSwgY29uc3QgUjMyRzMyQjMyICpzcmMyKQotICAgIHsKLSAg
ICAgICAgZHN0LT5SID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Uiwgc3JjMi0+Uik7Ci0gICAgICAgIGRz
dC0+RyA9IGdsOjphdmVyYWdlKHNyYzEtPkcsIHNyYzItPkcpOwotICAgICAgICBkc3QtPkIgPSBn
bDo6YXZlcmFnZShzcmMxLT5CLCBzcmMyLT5CKTsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgUjMyRzMy
QjMyQTMyCi17Ci0gICAgdW5zaWduZWQgaW50IFI7Ci0gICAgdW5zaWduZWQgaW50IEc7Ci0gICAg
dW5zaWduZWQgaW50IEI7Ci0gICAgdW5zaWduZWQgaW50IEE7Ci0KLSAgICBzdGF0aWMgdm9pZCBy
ZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMzJHMzJCMzJBMzIgKnNyYykKLSAgICB7
Ci0gICAgICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5SKTsKLSAg
ICAgICAgZHN0LT5ncmVlbiA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkcpOwotICAgICAg
ICBkc3QtPmJsdWUgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Qik7Ci0gICAgICAgIGRz
dC0+YWxwaGEgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5BKTsKLSAgICB9Ci0KLSAgICBz
dGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yVUkgKmRzdCwgY29uc3QgUjMyRzMyQjMyQTMy
ICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPnJlZCAgID0gc3JjLT5SOwotICAgICAgICBkc3Qt
PmdyZWVuID0gc3JjLT5HOwotICAgICAgICBkc3QtPmJsdWUgID0gc3JjLT5COwotICAgICAgICBk
c3QtPmFscGhhID0gc3JjLT5BOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3Io
UjMyRzMyQjMyQTMyICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKLSAgICB7Ci0gICAgICAg
IGRzdC0+UiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1bnNpZ25lZCBpbnQ+KHNyYy0+cmVkKTsK
LSAgICAgICAgZHN0LT5HID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPHVuc2lnbmVkIGludD4oc3Jj
LT5ncmVlbik7Ci0gICAgICAgIGRzdC0+QiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1bnNpZ25l
ZCBpbnQ+KHNyYy0+Ymx1ZSk7Ci0gICAgICAgIGRzdC0+QSA9IGdsOjpmbG9hdFRvTm9ybWFsaXpl
ZDx1bnNpZ25lZCBpbnQ+KHNyYy0+YWxwaGEpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdy
aXRlQ29sb3IoUjMyRzMyQjMyQTMyICpkc3QsIGNvbnN0IGdsOjpDb2xvclVJICpzcmMpCi0gICAg
ewotICAgICAgICBkc3QtPlIgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHNyYy0+cmVkKTsK
LSAgICAgICAgZHN0LT5HID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihzcmMtPmdyZWVuKTsK
LSAgICAgICAgZHN0LT5CID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihzcmMtPmJsdWUpOwot
ICAgICAgICBkc3QtPkEgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHNyYy0+YWxwaGEpOwot
ICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjMyRzMyQjMyQTMyICpkc3QsIGNvbnN0
IFIzMkczMkIzMkEzMiAqc3JjMSwgY29uc3QgUjMyRzMyQjMyQTMyICpzcmMyKQotICAgIHsKLSAg
ICAgICAgZHN0LT5SID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Uiwgc3JjMi0+Uik7Ci0gICAgICAgIGRz
dC0+RyA9IGdsOjphdmVyYWdlKHNyYzEtPkcsIHNyYzItPkcpOwotICAgICAgICBkc3QtPkIgPSBn
bDo6YXZlcmFnZShzcmMxLT5CLCBzcmMyLT5CKTsKLSAgICAgICAgZHN0LT5BID0gZ2w6OmF2ZXJh
Z2Uoc3JjMS0+QSwgc3JjMi0+QSk7Ci0gICAgfQotfTsKLQotc3RydWN0IFI4UwotewotICAgIGNo
YXIgUjsKLQotICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0
IFI4UyAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9IGdsOjpub3JtYWxpemVkVG9G
bG9hdChzcmMtPlIpOwotICAgICAgICBkc3QtPmdyZWVuID0gMC4wZjsKLSAgICAgICAgZHN0LT5i
bHVlICA9IDAuMGY7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSAxLjBmOwotICAgIH0KLQotICAgIHN0
YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JJICpkc3QsIGNvbnN0IFI4UyAqc3JjKQotICAg
IHsKLSAgICAgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKLSAgICAgICAgZHN0LT5ncmVlbiA9IDA7
Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSAwOwotICAgICAgICBkc3QtPmFscGhhID0gMTsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFI4UyAqZHN0LCBjb25zdCBnbDo6Q29sb3JG
ICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8Y2hh
cj4oc3JjLT5yZWQpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjhTICpk
c3QsIGNvbnN0IGdsOjpDb2xvckkgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IHN0YXRp
Y19jYXN0PGNoYXI+KHNyYy0+cmVkKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhdmVyYWdl
KFI4UyAqZHN0LCBjb25zdCBSOFMgKnNyYzEsIGNvbnN0IFI4UyAqc3JjMikKLSAgICB7Ci0gICAg
ICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PGNoYXI+KGdsOjphdmVyYWdlKHNyYzEtPlIsIHNyYzIt
PlIpKTsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgUjhHOFMKLXsKLSAgICBjaGFyIFI7Ci0gICAgY2hh
ciBHOwotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3Qg
UjhHOFMgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRv
RmxvYXQoc3JjLT5SKTsKLSAgICAgICAgZHN0LT5ncmVlbiA9IGdsOjpub3JtYWxpemVkVG9GbG9h
dChzcmMtPkcpOwotICAgICAgICBkc3QtPmJsdWUgID0gMC4wZjsKLSAgICAgICAgZHN0LT5hbHBo
YSA9IDEuMGY7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckkg
KmRzdCwgY29uc3QgUjhHOFMgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBzcmMt
PlI7Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSBzcmMtPkc7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSAw
OwotICAgICAgICBkc3QtPmFscGhhID0gMTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0
ZUNvbG9yKFI4RzhTICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKLSAgICB7Ci0gICAgICAg
IGRzdC0+UiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDxjaGFyPihzcmMtPnJlZCk7Ci0gICAgICAg
IGRzdC0+RyA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDxjaGFyPihzcmMtPmdyZWVuKTsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFI4RzhTICpkc3QsIGNvbnN0IGdsOjpDb2xv
ckkgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PGNoYXI+KHNyYy0+
cmVkKTsKLSAgICAgICAgZHN0LT5HID0gc3RhdGljX2Nhc3Q8Y2hhcj4oc3JjLT5ncmVlbik7Ci0g
ICAgfQotCi0gICAgc3RhdGljIHZvaWQgYXZlcmFnZShSOEc4UyAqZHN0LCBjb25zdCBSOEc4UyAq
c3JjMSwgY29uc3QgUjhHOFMgKnNyYzIpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBzdGF0aWNf
Y2FzdDxjaGFyPihnbDo6YXZlcmFnZShzcmMxLT5SLCBzcmMyLT5SKSk7Ci0gICAgICAgIGRzdC0+
RyA9IHN0YXRpY19jYXN0PGNoYXI+KGdsOjphdmVyYWdlKHNyYzEtPkcsIHNyYzItPkcpKTsKLSAg
ICB9Ci19OwotCi1zdHJ1Y3QgUjhHOEI4UwotewotICAgIGNoYXIgUjsKLSAgICBjaGFyIEc7Ci0g
ICAgY2hhciBCOwotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwg
Y29uc3QgUjhHOEI4UyAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9IGdsOjpub3Jt
YWxpemVkVG9GbG9hdChzcmMtPlIpOwotICAgICAgICBkc3QtPmdyZWVuID0gZ2w6Om5vcm1hbGl6
ZWRUb0Zsb2F0KHNyYy0+Ryk7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSBnbDo6bm9ybWFsaXplZFRv
RmxvYXQoc3JjLT5CKTsKLSAgICAgICAgZHN0LT5hbHBoYSA9IDEuMGY7Ci0gICAgfQotCi0gICAg
c3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckkgKmRzdCwgY29uc3QgUjhHOEI4UyAqc3Jj
KQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKLSAgICAgICAgZHN0LT5ncmVl
biA9IHNyYy0+RzsKLSAgICAgICAgZHN0LT5ibHVlICA9IHNyYy0+QjsKLSAgICAgICAgZHN0LT5h
bHBoYSA9IDE7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSOEc4QjhTICpk
c3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IGdsOjpm
bG9hdFRvTm9ybWFsaXplZDxjaGFyPihzcmMtPnJlZCk7Ci0gICAgICAgIGRzdC0+RyA9IGdsOjpm
bG9hdFRvTm9ybWFsaXplZDxjaGFyPihzcmMtPmdyZWVuKTsKLSAgICAgICAgZHN0LT5CID0gZ2w6
OmZsb2F0VG9Ob3JtYWxpemVkPGNoYXI+KHNyYy0+Ymx1ZSk7Ci0gICAgfQotCi0gICAgc3RhdGlj
IHZvaWQgd3JpdGVDb2xvcihSOEc4QjhTICpkc3QsIGNvbnN0IGdsOjpDb2xvckkgKnNyYykKLSAg
ICB7Ci0gICAgICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PGNoYXI+KHNyYy0+cmVkKTsKLSAgICAg
ICAgZHN0LT5HID0gc3RhdGljX2Nhc3Q8Y2hhcj4oc3JjLT5ncmVlbik7Ci0gICAgICAgIGRzdC0+
QiA9IHN0YXRpY19jYXN0PGNoYXI+KHNyYy0+Ymx1ZSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZv
aWQgYXZlcmFnZShSOEc4QjhTICpkc3QsIGNvbnN0IFI4RzhCOFMgKnNyYzEsIGNvbnN0IFI4RzhC
OFMgKnNyYzIpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBzdGF0aWNfY2FzdDxjaGFyPihnbDo6
YXZlcmFnZShzcmMxLT5SLCBzcmMyLT5SKSk7Ci0gICAgICAgIGRzdC0+RyA9IHN0YXRpY19jYXN0
PGNoYXI+KGdsOjphdmVyYWdlKHNyYzEtPkcsIHNyYzItPkcpKTsKLSAgICAgICAgZHN0LT5CID0g
c3RhdGljX2Nhc3Q8Y2hhcj4oZ2w6OmF2ZXJhZ2Uoc3JjMS0+Qiwgc3JjMi0+QikpOwotICAgIH0K
LX07Ci0KLXN0cnVjdCBSOEc4QjhBOFMKLXsKLSAgICBjaGFyIFI7Ci0gICAgY2hhciBHOwotICAg
IGNoYXIgQjsKLSAgICBjaGFyIEE7Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNv
bG9yRiAqZHN0LCBjb25zdCBSOEc4QjhBOFMgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVk
ICAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5SKTsKLSAgICAgICAgZHN0LT5ncmVlbiA9
IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkcpOwotICAgICAgICBkc3QtPmJsdWUgID0gZ2w6
Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Qik7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSBnbDo6bm9y
bWFsaXplZFRvRmxvYXQoc3JjLT5BKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFkQ29s
b3IoZ2w6OkNvbG9ySSAqZHN0LCBjb25zdCBSOEc4QjhBOFMgKnNyYykKLSAgICB7Ci0gICAgICAg
IGRzdC0+cmVkICAgPSBzcmMtPlI7Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSBzcmMtPkc7Ci0gICAg
ICAgIGRzdC0+Ymx1ZSAgPSBzcmMtPkI7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSBzcmMtPkE7Ci0g
ICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSOEc4QjhBOFMgKmRzdCwgY29uc3Qg
Z2w6OkNvbG9yRiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6OmZsb2F0VG9Ob3Jt
YWxpemVkPGNoYXI+KHNyYy0+cmVkKTsKLSAgICAgICAgZHN0LT5HID0gZ2w6OmZsb2F0VG9Ob3Jt
YWxpemVkPGNoYXI+KHNyYy0+Z3JlZW4pOwotICAgICAgICBkc3QtPkIgPSBnbDo6ZmxvYXRUb05v
cm1hbGl6ZWQ8Y2hhcj4oc3JjLT5ibHVlKTsKLSAgICAgICAgZHN0LT5BID0gZ2w6OmZsb2F0VG9O
b3JtYWxpemVkPGNoYXI+KHNyYy0+YWxwaGEpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdy
aXRlQ29sb3IoUjhHOEI4QThTICpkc3QsIGNvbnN0IGdsOjpDb2xvckkgKnNyYykKLSAgICB7Ci0g
ICAgICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PGNoYXI+KHNyYy0+cmVkKTsKLSAgICAgICAgZHN0
LT5HID0gc3RhdGljX2Nhc3Q8Y2hhcj4oc3JjLT5ncmVlbik7Ci0gICAgICAgIGRzdC0+QiA9IHN0
YXRpY19jYXN0PGNoYXI+KHNyYy0+Ymx1ZSk7Ci0gICAgICAgIGRzdC0+QSA9IHN0YXRpY19jYXN0
PGNoYXI+KHNyYy0+YWxwaGEpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjhH
OEI4QThTICpkc3QsIGNvbnN0IFI4RzhCOEE4UyAqc3JjMSwgY29uc3QgUjhHOEI4QThTICpzcmMy
KQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gc3RhdGljX2Nhc3Q8Y2hhcj4oZ2w6OmF2ZXJhZ2Uo
c3JjMS0+Uiwgc3JjMi0+UikpOwotICAgICAgICBkc3QtPkcgPSBzdGF0aWNfY2FzdDxjaGFyPihn
bDo6YXZlcmFnZShzcmMxLT5HLCBzcmMyLT5HKSk7Ci0gICAgICAgIGRzdC0+QiA9IHN0YXRpY19j
YXN0PGNoYXI+KGdsOjphdmVyYWdlKHNyYzEtPkIsIHNyYzItPkIpKTsKLSAgICAgICAgZHN0LT5B
ID0gc3RhdGljX2Nhc3Q8Y2hhcj4oZ2w6OmF2ZXJhZ2Uoc3JjMS0+QSwgc3JjMi0+QSkpOwotICAg
IH0KLX07Ci0KLXN0cnVjdCBSMTZTCi17Ci0gICAgc2hvcnQgUjsKLQotICAgIHN0YXRpYyB2b2lk
IHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIxNlMgKnNyYykKLSAgICB7Ci0gICAg
ICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5SKTsKLSAgICAgICAg
ZHN0LT5ncmVlbiA9IDAuMGY7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSAwLjBmOwotICAgICAgICBk
c3QtPmFscGhhID0gMS4wZjsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6
OkNvbG9ySSAqZHN0LCBjb25zdCBSMTZTICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPnJlZCAg
ID0gc3JjLT5SOwotICAgICAgICBkc3QtPmdyZWVuID0gMDsKLSAgICAgICAgZHN0LT5ibHVlICA9
IDA7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSAxOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdy
aXRlQ29sb3IoUjE2UyAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCi0gICAgewotICAgICAg
ICBkc3QtPlIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8c2hvcnQ+KHNyYy0+cmVkKTsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIxNlMgKmRzdCwgY29uc3QgZ2w6OkNvbG9y
SSAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KHNyYy0+
cmVkKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFIxNlMgKmRzdCwgY29uc3Qg
UjE2UyAqc3JjMSwgY29uc3QgUjE2UyAqc3JjMikKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IGds
OjphdmVyYWdlKHNyYzEtPlIsIHNyYzItPlIpOwotICAgIH0KLX07Ci0KLXN0cnVjdCBSMTZHMTZT
Ci17Ci0gICAgc2hvcnQgUjsKLSAgICBzaG9ydCBHOwotCi0gICAgc3RhdGljIHZvaWQgcmVhZENv
bG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjE2RzE2UyAqc3JjKQotICAgIHsKLSAgICAgICAg
ZHN0LT5yZWQgICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPlIpOwotICAgICAgICBkc3Qt
PmdyZWVuID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Ryk7Ci0gICAgICAgIGRzdC0+Ymx1
ZSAgPSAwLjBmOwotICAgICAgICBkc3QtPmFscGhhID0gMS4wZjsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9ySSAqZHN0LCBjb25zdCBSMTZHMTZTICpzcmMpCi0g
ICAgewotICAgICAgICBkc3QtPnJlZCAgID0gc3JjLT5SOwotICAgICAgICBkc3QtPmdyZWVuID0g
c3JjLT5HOwotICAgICAgICBkc3QtPmJsdWUgID0gMDsKLSAgICAgICAgZHN0LT5hbHBoYSA9IDE7
Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSMTZHMTZTICpkc3QsIGNvbnN0
IGdsOjpDb2xvckYgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IGdsOjpmbG9hdFRvTm9y
bWFsaXplZDxzaG9ydD4oc3JjLT5yZWQpOwotICAgICAgICBkc3QtPkcgPSBnbDo6ZmxvYXRUb05v
cm1hbGl6ZWQ8c2hvcnQ+KHNyYy0+Z3JlZW4pOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdy
aXRlQ29sb3IoUjE2RzE2UyAqZHN0LCBjb25zdCBnbDo6Q29sb3JJICpzcmMpCi0gICAgewotICAg
ICAgICBkc3QtPlIgPSBzdGF0aWNfY2FzdDxzaG9ydD4oc3JjLT5yZWQpOwotICAgICAgICBkc3Qt
PkcgPSBzdGF0aWNfY2FzdDxzaG9ydD4oc3JjLT5ncmVlbik7Ci0gICAgfQotCi0gICAgc3RhdGlj
IHZvaWQgYXZlcmFnZShSMTZHMTZTICpkc3QsIGNvbnN0IFIxNkcxNlMgKnNyYzEsIGNvbnN0IFIx
NkcxNlMgKnNyYzIpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6YXZlcmFnZShzcmMxLT5S
LCBzcmMyLT5SKTsKLSAgICAgICAgZHN0LT5HID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Rywgc3JjMi0+
Ryk7Ci0gICAgfQotfTsKLQotc3RydWN0IFIxNkcxNkIxNlMKLXsKLSAgICBzaG9ydCBSOwotICAg
IHNob3J0IEc7Ci0gICAgc2hvcnQgQjsKLQotICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6
Q29sb3JGICpkc3QsIGNvbnN0IFIxNkcxNkIxNlMgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+
cmVkICAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5SKTsKLSAgICAgICAgZHN0LT5ncmVl
biA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkcpOwotICAgICAgICBkc3QtPmJsdWUgID0g
Z2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Qik7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSAxLjBm
OwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JJICpkc3QsIGNv
bnN0IFIxNkcxNkIxNlMgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBzcmMtPlI7
Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSBzcmMtPkc7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSBzcmMt
PkI7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSAxOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdy
aXRlQ29sb3IoUjE2RzE2QjE2UyAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCi0gICAgewot
ICAgICAgICBkc3QtPlIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8c2hvcnQ+KHNyYy0+cmVkKTsK
LSAgICAgICAgZHN0LT5HID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPHNob3J0PihzcmMtPmdyZWVu
KTsKLSAgICAgICAgZHN0LT5CID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPHNob3J0PihzcmMtPmJs
dWUpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjE2RzE2QjE2UyAqZHN0
LCBjb25zdCBnbDo6Q29sb3JJICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBzdGF0aWNf
Y2FzdDxzaG9ydD4oc3JjLT5yZWQpOwotICAgICAgICBkc3QtPkcgPSBzdGF0aWNfY2FzdDxzaG9y
dD4oc3JjLT5ncmVlbik7Ci0gICAgICAgIGRzdC0+QiA9IHN0YXRpY19jYXN0PHNob3J0PihzcmMt
PmJsdWUpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjE2RzE2QjE2UyAqZHN0
LCBjb25zdCBSMTZHMTZCMTZTICpzcmMxLCBjb25zdCBSMTZHMTZCMTZTICpzcmMyKQotICAgIHsK
LSAgICAgICAgZHN0LT5SID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Uiwgc3JjMi0+Uik7Ci0gICAgICAg
IGRzdC0+RyA9IGdsOjphdmVyYWdlKHNyYzEtPkcsIHNyYzItPkcpOwotICAgICAgICBkc3QtPkIg
PSBnbDo6YXZlcmFnZShzcmMxLT5CLCBzcmMyLT5CKTsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgUjE2
RzE2QjE2QTE2UwotewotICAgIHNob3J0IFI7Ci0gICAgc2hvcnQgRzsKLSAgICBzaG9ydCBCOwot
ICAgIHNob3J0IEE7Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0
LCBjb25zdCBSMTZHMTZCMTZBMTZTICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPnJlZCAgID0g
Z2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSBnbDo6
bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5HKTsKLSAgICAgICAgZHN0LT5ibHVlICA9IGdsOjpub3Jt
YWxpemVkVG9GbG9hdChzcmMtPkIpOwotICAgICAgICBkc3QtPmFscGhhID0gZ2w6Om5vcm1hbGl6
ZWRUb0Zsb2F0KHNyYy0+QSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGds
OjpDb2xvckkgKmRzdCwgY29uc3QgUjE2RzE2QjE2QTE2UyAqc3JjKQotICAgIHsKLSAgICAgICAg
ZHN0LT5yZWQgICA9IHNyYy0+UjsKLSAgICAgICAgZHN0LT5ncmVlbiA9IHNyYy0+RzsKLSAgICAg
ICAgZHN0LT5ibHVlICA9IHNyYy0+QjsKLSAgICAgICAgZHN0LT5hbHBoYSA9IHNyYy0+QTsKLSAg
ICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIxNkcxNkIxNkExNlMgKmRzdCwgY29u
c3QgZ2w6OkNvbG9yRiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6OmZsb2F0VG9O
b3JtYWxpemVkPHNob3J0PihzcmMtPnJlZCk7Ci0gICAgICAgIGRzdC0+RyA9IGdsOjpmbG9hdFRv
Tm9ybWFsaXplZDxzaG9ydD4oc3JjLT5ncmVlbik7Ci0gICAgICAgIGRzdC0+QiA9IGdsOjpmbG9h
dFRvTm9ybWFsaXplZDxzaG9ydD4oc3JjLT5ibHVlKTsKLSAgICAgICAgZHN0LT5BID0gZ2w6OmZs
b2F0VG9Ob3JtYWxpemVkPHNob3J0PihzcmMtPmFscGhhKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMg
dm9pZCB3cml0ZUNvbG9yKFIxNkcxNkIxNkExNlMgKmRzdCwgY29uc3QgZ2w6OkNvbG9ySSAqc3Jj
KQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KHNyYy0+cmVkKTsK
LSAgICAgICAgZHN0LT5HID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KHNyYy0+Z3JlZW4pOwotICAgICAg
ICBkc3QtPkIgPSBzdGF0aWNfY2FzdDxzaG9ydD4oc3JjLT5ibHVlKTsKLSAgICAgICAgZHN0LT5B
ID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KHNyYy0+YWxwaGEpOwotICAgIH0KLQotICAgIHN0YXRpYyB2
b2lkIGF2ZXJhZ2UoUjE2RzE2QjE2QTE2UyAqZHN0LCBjb25zdCBSMTZHMTZCMTZBMTZTICpzcmMx
LCBjb25zdCBSMTZHMTZCMTZBMTZTICpzcmMyKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6
OmF2ZXJhZ2Uoc3JjMS0+Uiwgc3JjMi0+Uik7Ci0gICAgICAgIGRzdC0+RyA9IGdsOjphdmVyYWdl
KHNyYzEtPkcsIHNyYzItPkcpOwotICAgICAgICBkc3QtPkIgPSBnbDo6YXZlcmFnZShzcmMxLT5C
LCBzcmMyLT5CKTsKLSAgICAgICAgZHN0LT5BID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+QSwgc3JjMi0+
QSk7Ci0gICAgfQotfTsKLQotc3RydWN0IFIzMlMKLXsKLSAgICBpbnQgUjsKLQotICAgIHN0YXRp
YyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIzMlMgKnNyYykKLSAgICB7
Ci0gICAgICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5SKTsKLSAg
ICAgICAgZHN0LT5ncmVlbiA9IDAuMGY7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSAwLjBmOwotICAg
ICAgICBkc3QtPmFscGhhID0gMS4wZjsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFkQ29s
b3IoZ2w6OkNvbG9ySSAqZHN0LCBjb25zdCBSMzJTICpzcmMpCi0gICAgewotICAgICAgICBkc3Qt
PnJlZCAgID0gc3JjLT5SOwotICAgICAgICBkc3QtPmdyZWVuID0gMDsKLSAgICAgICAgZHN0LT5i
bHVlICA9IDA7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSAxOwotICAgIH0KLQotICAgIHN0YXRpYyB2
b2lkIHdyaXRlQ29sb3IoUjMyUyAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCi0gICAgewot
ICAgICAgICBkc3QtPlIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8aW50PihzcmMtPnJlZCk7Ci0g
ICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSMzJTICpkc3QsIGNvbnN0IGdsOjpD
b2xvckkgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PGludD4oc3Jj
LT5yZWQpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjMyUyAqZHN0LCBjb25z
dCBSMzJTICpzcmMxLCBjb25zdCBSMzJTICpzcmMyKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0g
Z2w6OmF2ZXJhZ2Uoc3JjMS0+Uiwgc3JjMi0+Uik7Ci0gICAgfQotfTsKLQotc3RydWN0IFIzMkcz
MlMKLXsKLSAgICBpbnQgUjsKLSAgICBpbnQgRzsKLQotICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xv
cihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIzMkczMlMgKnNyYykKLSAgICB7Ci0gICAgICAgIGRz
dC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5SKTsKLSAgICAgICAgZHN0LT5n
cmVlbiA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkcpOwotICAgICAgICBkc3QtPmJsdWUg
ID0gMC4wZjsKLSAgICAgICAgZHN0LT5hbHBoYSA9IDEuMGY7Ci0gICAgfQotCi0gICAgc3RhdGlj
IHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckkgKmRzdCwgY29uc3QgUjMyRzMyUyAqc3JjKQotICAg
IHsKLSAgICAgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKLSAgICAgICAgZHN0LT5ncmVlbiA9IHNy
Yy0+RzsKLSAgICAgICAgZHN0LT5ibHVlICA9IDA7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSAxOwot
ICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjMyRzMyUyAqZHN0LCBjb25zdCBn
bDo6Q29sb3JGICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6ZmxvYXRUb05vcm1h
bGl6ZWQ8aW50PihzcmMtPnJlZCk7Ci0gICAgICAgIGRzdC0+RyA9IGdsOjpmbG9hdFRvTm9ybWFs
aXplZDxpbnQ+KHNyYy0+Z3JlZW4pOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29s
b3IoUjMyRzMyUyAqZHN0LCBjb25zdCBnbDo6Q29sb3JJICpzcmMpCi0gICAgewotICAgICAgICBk
c3QtPlIgPSBzdGF0aWNfY2FzdDxpbnQ+KHNyYy0+cmVkKTsKLSAgICAgICAgZHN0LT5HID0gc3Rh
dGljX2Nhc3Q8aW50PihzcmMtPmdyZWVuKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhdmVy
YWdlKFIzMkczMlMgKmRzdCwgY29uc3QgUjMyRzMyUyAqc3JjMSwgY29uc3QgUjMyRzMyUyAqc3Jj
MikKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IGdsOjphdmVyYWdlKHNyYzEtPlIsIHNyYzItPlIp
OwotICAgICAgICBkc3QtPkcgPSBnbDo6YXZlcmFnZShzcmMxLT5HLCBzcmMyLT5HKTsKLSAgICB9
Ci19OwotCi1zdHJ1Y3QgUjMyRzMyQjMyUwotewotICAgIGludCBSOwotICAgIGludCBHOwotICAg
IGludCBCOwotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29u
c3QgUjMyRzMyQjMyUyAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9IGdsOjpub3Jt
YWxpemVkVG9GbG9hdChzcmMtPlIpOwotICAgICAgICBkc3QtPmdyZWVuID0gZ2w6Om5vcm1hbGl6
ZWRUb0Zsb2F0KHNyYy0+Ryk7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSBnbDo6bm9ybWFsaXplZFRv
RmxvYXQoc3JjLT5CKTsKLSAgICAgICAgZHN0LT5hbHBoYSA9IDEuMGY7Ci0gICAgfQotCi0gICAg
c3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckkgKmRzdCwgY29uc3QgUjMyRzMyQjMyUyAq
c3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKLSAgICAgICAgZHN0LT5n
cmVlbiA9IHNyYy0+RzsKLSAgICAgICAgZHN0LT5ibHVlICA9IHNyYy0+QjsKLSAgICAgICAgZHN0
LT5hbHBoYSA9IDE7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSMzJHMzJC
MzJTICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9
IGdsOjpmbG9hdFRvTm9ybWFsaXplZDxpbnQ+KHNyYy0+cmVkKTsKLSAgICAgICAgZHN0LT5HID0g
Z2w6OmZsb2F0VG9Ob3JtYWxpemVkPGludD4oc3JjLT5ncmVlbik7Ci0gICAgICAgIGRzdC0+QiA9
IGdsOjpmbG9hdFRvTm9ybWFsaXplZDxpbnQ+KHNyYy0+Ymx1ZSk7Ci0gICAgfQotCi0gICAgc3Rh
dGljIHZvaWQgd3JpdGVDb2xvcihSMzJHMzJCMzJTICpkc3QsIGNvbnN0IGdsOjpDb2xvckkgKnNy
YykKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PGludD4oc3JjLT5yZWQpOwot
ICAgICAgICBkc3QtPkcgPSBzdGF0aWNfY2FzdDxpbnQ+KHNyYy0+Z3JlZW4pOwotICAgICAgICBk
c3QtPkIgPSBzdGF0aWNfY2FzdDxpbnQ+KHNyYy0+Ymx1ZSk7Ci0gICAgfQotCi0gICAgc3RhdGlj
IHZvaWQgYXZlcmFnZShSMzJHMzJCMzJTICpkc3QsIGNvbnN0IFIzMkczMkIzMlMgKnNyYzEsIGNv
bnN0IFIzMkczMkIzMlMgKnNyYzIpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6YXZlcmFn
ZShzcmMxLT5SLCBzcmMyLT5SKTsKLSAgICAgICAgZHN0LT5HID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+
Rywgc3JjMi0+Ryk7Ci0gICAgICAgIGRzdC0+QiA9IGdsOjphdmVyYWdlKHNyYzEtPkIsIHNyYzIt
PkIpOwotICAgIH0KLX07Ci0KLXN0cnVjdCBSMzJHMzJCMzJBMzJTCi17Ci0gICAgaW50IFI7Ci0g
ICAgaW50IEc7Ci0gICAgaW50IEI7Ci0gICAgaW50IEE7Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFk
Q29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMzJHMzJCMzJBMzJTICpzcmMpCi0gICAgewot
ICAgICAgICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7Ci0gICAg
ICAgIGRzdC0+Z3JlZW4gPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5HKTsKLSAgICAgICAg
ZHN0LT5ibHVlICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkIpOwotICAgICAgICBkc3Qt
PmFscGhhID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+QSk7Ci0gICAgfQotCi0gICAgc3Rh
dGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckkgKmRzdCwgY29uc3QgUjMyRzMyQjMyQTMyUyAq
c3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKLSAgICAgICAgZHN0LT5n
cmVlbiA9IHNyYy0+RzsKLSAgICAgICAgZHN0LT5ibHVlICA9IHNyYy0+QjsKLSAgICAgICAgZHN0
LT5hbHBoYSA9IHNyYy0+QTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIz
MkczMkIzMkEzMlMgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQotICAgIHsKLSAgICAgICAg
ZHN0LT5SID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPGludD4oc3JjLT5yZWQpOwotICAgICAgICBk
c3QtPkcgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8aW50PihzcmMtPmdyZWVuKTsKLSAgICAgICAg
ZHN0LT5CID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPGludD4oc3JjLT5ibHVlKTsKLSAgICAgICAg
ZHN0LT5BID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPGludD4oc3JjLT5hbHBoYSk7Ci0gICAgfQot
Ci0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSMzJHMzJCMzJBMzJTICpkc3QsIGNvbnN0IGds
OjpDb2xvckkgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PGludD4o
c3JjLT5yZWQpOwotICAgICAgICBkc3QtPkcgPSBzdGF0aWNfY2FzdDxpbnQ+KHNyYy0+Z3JlZW4p
OwotICAgICAgICBkc3QtPkIgPSBzdGF0aWNfY2FzdDxpbnQ+KHNyYy0+Ymx1ZSk7Ci0gICAgICAg
IGRzdC0+QSA9IHN0YXRpY19jYXN0PGludD4oc3JjLT5hbHBoYSk7Ci0gICAgfQotCi0gICAgc3Rh
dGljIHZvaWQgYXZlcmFnZShSMzJHMzJCMzJBMzJTICpkc3QsIGNvbnN0IFIzMkczMkIzMkEzMlMg
KnNyYzEsIGNvbnN0IFIzMkczMkIzMkEzMlMgKnNyYzIpCi0gICAgewotICAgICAgICBkc3QtPlIg
PSBnbDo6YXZlcmFnZShzcmMxLT5SLCBzcmMyLT5SKTsKLSAgICAgICAgZHN0LT5HID0gZ2w6OmF2
ZXJhZ2Uoc3JjMS0+Rywgc3JjMi0+Ryk7Ci0gICAgICAgIGRzdC0+QiA9IGdsOjphdmVyYWdlKHNy
YzEtPkIsIHNyYzItPkIpOwotICAgICAgICBkc3QtPkEgPSBnbDo6YXZlcmFnZShzcmMxLT5BLCBz
cmMyLT5BKTsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgQTE2QjE2RzE2UjE2RgotewotICAgIHVuc2ln
bmVkIHNob3J0IEE7Ci0gICAgdW5zaWduZWQgc2hvcnQgUjsKLSAgICB1bnNpZ25lZCBzaG9ydCBH
OwotICAgIHVuc2lnbmVkIHNob3J0IEI7Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6
OkNvbG9yRiAqZHN0LCBjb25zdCBBMTZCMTZHMTZSMTZGICpzcmMpCi0gICAgewotICAgICAgICBk
c3QtPnJlZCAgID0gZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoc3JjLT5SKTsKLSAgICAgICAgZHN0LT5n
cmVlbiA9IGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNyYy0+Ryk7Ci0gICAgICAgIGRzdC0+Ymx1ZSAg
PSBnbDo6ZmxvYXQxNlRvRmxvYXQzMihzcmMtPkIpOwotICAgICAgICBkc3QtPmFscGhhID0gZ2w6
OmZsb2F0MTZUb0Zsb2F0MzIoc3JjLT5BKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0
ZUNvbG9yKEExNkIxNkcxNlIxNkYgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQotICAgIHsK
LSAgICAgICAgZHN0LT5SID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTYoc3JjLT5yZWQpOwotICAgICAg
ICBkc3QtPkcgPSBnbDo6ZmxvYXQzMlRvRmxvYXQxNihzcmMtPmdyZWVuKTsKLSAgICAgICAgZHN0
LT5CID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTYoc3JjLT5ibHVlKTsKLSAgICAgICAgZHN0LT5BID0g
Z2w6OmZsb2F0MzJUb0Zsb2F0MTYoc3JjLT5hbHBoYSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZv
aWQgYXZlcmFnZShBMTZCMTZHMTZSMTZGICpkc3QsIGNvbnN0IEExNkIxNkcxNlIxNkYgKnNyYzEs
IGNvbnN0IEExNkIxNkcxNlIxNkYgKnNyYzIpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6
YXZlcmFnZUhhbGZGbG9hdChzcmMxLT5SLCBzcmMyLT5SKTsKLSAgICAgICAgZHN0LT5HID0gZ2w6
OmF2ZXJhZ2VIYWxmRmxvYXQoc3JjMS0+Rywgc3JjMi0+Ryk7Ci0gICAgICAgIGRzdC0+QiA9IGds
OjphdmVyYWdlSGFsZkZsb2F0KHNyYzEtPkIsIHNyYzItPkIpOwotICAgICAgICBkc3QtPkEgPSBn
bDo6YXZlcmFnZUhhbGZGbG9hdChzcmMxLT5BLCBzcmMyLT5BKTsKLSAgICB9Ci19OwotCi1zdHJ1
Y3QgUjE2RzE2QjE2QTE2RgotewotICAgIHVuc2lnbmVkIHNob3J0IFI7Ci0gICAgdW5zaWduZWQg
c2hvcnQgRzsKLSAgICB1bnNpZ25lZCBzaG9ydCBCOwotICAgIHVuc2lnbmVkIHNob3J0IEE7Ci0K
LSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMTZHMTZC
MTZBMTZGICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPnJlZCAgID0gZ2w6OmZsb2F0MTZUb0Zs
b2F0MzIoc3JjLT5SKTsKLSAgICAgICAgZHN0LT5ncmVlbiA9IGdsOjpmbG9hdDE2VG9GbG9hdDMy
KHNyYy0+Ryk7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSBnbDo6ZmxvYXQxNlRvRmxvYXQzMihzcmMt
PkIpOwotICAgICAgICBkc3QtPmFscGhhID0gZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoc3JjLT5BKTsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIxNkcxNkIxNkExNkYgKmRzdCwg
Y29uc3QgZ2w6OkNvbG9yRiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6OmZsb2F0
MzJUb0Zsb2F0MTYoc3JjLT5yZWQpOwotICAgICAgICBkc3QtPkcgPSBnbDo6ZmxvYXQzMlRvRmxv
YXQxNihzcmMtPmdyZWVuKTsKLSAgICAgICAgZHN0LT5CID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTYo
c3JjLT5ibHVlKTsKLSAgICAgICAgZHN0LT5BID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTYoc3JjLT5h
bHBoYSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgYXZlcmFnZShSMTZHMTZCMTZBMTZGICpk
c3QsIGNvbnN0IFIxNkcxNkIxNkExNkYgKnNyYzEsIGNvbnN0IFIxNkcxNkIxNkExNkYgKnNyYzIp
Ci0gICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6YXZlcmFnZUhhbGZGbG9hdChzcmMxLT5SLCBz
cmMyLT5SKTsKLSAgICAgICAgZHN0LT5HID0gZ2w6OmF2ZXJhZ2VIYWxmRmxvYXQoc3JjMS0+Rywg
c3JjMi0+Ryk7Ci0gICAgICAgIGRzdC0+QiA9IGdsOjphdmVyYWdlSGFsZkZsb2F0KHNyYzEtPkIs
IHNyYzItPkIpOwotICAgICAgICBkc3QtPkEgPSBnbDo6YXZlcmFnZUhhbGZGbG9hdChzcmMxLT5B
LCBzcmMyLT5BKTsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgUjE2RgotewotICAgIHVuc2lnbmVkIHNo
b3J0IFI7Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25z
dCBSMTZGICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPnJlZCAgID0gZ2w6OmZsb2F0MTZUb0Zs
b2F0MzIoc3JjLT5SKTsKLSAgICAgICAgZHN0LT5ncmVlbiA9IDAuMGY7Ci0gICAgICAgIGRzdC0+
Ymx1ZSAgPSAwLjBmOwotICAgICAgICBkc3QtPmFscGhhID0gMS4wZjsKLSAgICB9Ci0KLSAgICBz
dGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIxNkYgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQot
ICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTYoc3JjLT5yZWQpOwot
ICAgIH0KLSAgICAKLSAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFIxNkYgKmRzdCwgY29uc3QgUjE2
RiAqc3JjMSwgY29uc3QgUjE2RiAqc3JjMikKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IGdsOjph
dmVyYWdlSGFsZkZsb2F0KHNyYzEtPlIsIHNyYzItPlIpOwotICAgIH0KLX07Ci0KLXN0cnVjdCBB
MTZGCi17Ci0gICAgdW5zaWduZWQgc2hvcnQgQTsKLQotICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xv
cihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IEExNkYgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+
cmVkICAgPSAwLjBmOwotICAgICAgICBkc3QtPmdyZWVuID0gMC4wZjsKLSAgICAgICAgZHN0LT5i
bHVlICA9IDAuMGY7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSBnbDo6ZmxvYXQxNlRvRmxvYXQzMihz
cmMtPkEpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoQTE2RiAqZHN0LCBj
b25zdCBnbDo6Q29sb3JGICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPkEgPSBnbDo6ZmxvYXQz
MlRvRmxvYXQxNihzcmMtPmFscGhhKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhdmVyYWdl
KEExNkYgKmRzdCwgY29uc3QgQTE2RiAqc3JjMSwgY29uc3QgQTE2RiAqc3JjMikKLSAgICB7Ci0g
ICAgICAgIGRzdC0+QSA9IGdsOjphdmVyYWdlSGFsZkZsb2F0KHNyYzEtPkEsIHNyYzItPkEpOwot
ICAgIH0KLX07Ci0KLXN0cnVjdCBMMTZGCi17Ci0gICAgdW5zaWduZWQgc2hvcnQgTDsKLQotICAg
IHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IEwxNkYgKnNyYykK
LSAgICB7Ci0gICAgICAgIGZsb2F0IGx1bSA9IGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNyYy0+TCk7
Ci0gICAgICAgIGRzdC0+cmVkICAgPSBsdW07Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSBsdW07Ci0g
ICAgICAgIGRzdC0+Ymx1ZSAgPSBsdW07Ci0gICAgICAgIGRzdC0+YWxwaGEgPSAxLjBmOwotICAg
IH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoTDE2RiAqZHN0LCBjb25zdCBnbDo6Q29s
b3JGICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPkwgPSBnbDo6ZmxvYXQzMlRvRmxvYXQxNigo
c3JjLT5yZWQgKyBzcmMtPmdyZWVuICsgc3JjLT5ibHVlKSAvIDMuMGYpOwotICAgIH0KLQotICAg
IHN0YXRpYyB2b2lkIGF2ZXJhZ2UoTDE2RiAqZHN0LCBjb25zdCBMMTZGICpzcmMxLCBjb25zdCBM
MTZGICpzcmMyKQotICAgIHsKLSAgICAgICAgZHN0LT5MID0gZ2w6OmF2ZXJhZ2VIYWxmRmxvYXQo
c3JjMS0+TCwgc3JjMi0+TCk7Ci0gICAgfQotfTsKLQotc3RydWN0IEwxNkExNkYKLXsKLSAgICB1
bnNpZ25lZCBzaG9ydCBMOwotICAgIHVuc2lnbmVkIHNob3J0IEE7Ci0KLSAgICBzdGF0aWMgdm9p
ZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBMMTZBMTZGICpzcmMpCi0gICAgewot
ICAgICAgICBmbG9hdCBsdW0gPSBnbDo6ZmxvYXQxNlRvRmxvYXQzMihzcmMtPkwpOwotICAgICAg
ICBkc3QtPnJlZCAgID0gbHVtOwotICAgICAgICBkc3QtPmdyZWVuID0gbHVtOwotICAgICAgICBk
c3QtPmJsdWUgID0gbHVtOwotICAgICAgICBkc3QtPmFscGhhID0gZ2w6OmZsb2F0MTZUb0Zsb2F0
MzIoc3JjLT5BKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKEwxNkExNkYg
KmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5MID0gZ2w6
OmZsb2F0MzJUb0Zsb2F0MTYoKHNyYy0+cmVkICsgc3JjLT5ncmVlbiArIHNyYy0+Ymx1ZSkgLyAz
LjBmKTsKLSAgICAgICAgZHN0LT5BID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTYoc3JjLT5hbHBoYSk7
Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgYXZlcmFnZShMMTZBMTZGICpkc3QsIGNvbnN0IEwx
NkExNkYgKnNyYzEsIGNvbnN0IEwxNkExNkYgKnNyYzIpCi0gICAgewotICAgICAgICBkc3QtPkwg
PSBnbDo6YXZlcmFnZUhhbGZGbG9hdChzcmMxLT5MLCBzcmMyLT5MKTsKLSAgICAgICAgZHN0LT5B
ID0gZ2w6OmF2ZXJhZ2VIYWxmRmxvYXQoc3JjMS0+QSwgc3JjMi0+QSk7Ci0gICAgfQotfTsKLQot
c3RydWN0IFIxNkcxNkYKLXsKLSAgICB1bnNpZ25lZCBzaG9ydCBSOwotICAgIHVuc2lnbmVkIHNo
b3J0IEc7Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25z
dCBSMTZHMTZGICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPnJlZCAgID0gZ2w6OmZsb2F0MTZU
b0Zsb2F0MzIoc3JjLT5SKTsKLSAgICAgICAgZHN0LT5ncmVlbiA9IGdsOjpmbG9hdDE2VG9GbG9h
dDMyKHNyYy0+Ryk7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSAwLjBmOwotICAgICAgICBkc3QtPmFs
cGhhID0gMS4wZjsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIxNkcxNkYg
KmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6
OmZsb2F0MzJUb0Zsb2F0MTYoc3JjLT5yZWQpOwotICAgICAgICBkc3QtPkcgPSBnbDo6ZmxvYXQz
MlRvRmxvYXQxNihzcmMtPmdyZWVuKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhdmVyYWdl
KFIxNkcxNkYgKmRzdCwgY29uc3QgUjE2RzE2RiAqc3JjMSwgY29uc3QgUjE2RzE2RiAqc3JjMikK
LSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IGdsOjphdmVyYWdlSGFsZkZsb2F0KHNyYzEtPlIsIHNy
YzItPlIpOwotICAgICAgICBkc3QtPkcgPSBnbDo6YXZlcmFnZUhhbGZGbG9hdChzcmMxLT5HLCBz
cmMyLT5HKTsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgUjE2RzE2QjE2RgotewotICAgIHVuc2lnbmVk
IHNob3J0IFI7Ci0gICAgdW5zaWduZWQgc2hvcnQgRzsKLSAgICB1bnNpZ25lZCBzaG9ydCBCOwot
Ci0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjE2RzE2
QjE2RiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9IGdsOjpmbG9hdDE2VG9GbG9h
dDMyKHNyYy0+Uik7Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSBnbDo6ZmxvYXQxNlRvRmxvYXQzMihz
cmMtPkcpOwotICAgICAgICBkc3QtPmJsdWUgID0gZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoc3JjLT5C
KTsKLSAgICAgICAgZHN0LT5hbHBoYSA9IDEuMGY7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQg
d3JpdGVDb2xvcihSMTZHMTZCMTZGICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKLSAgICB7
Ci0gICAgICAgIGRzdC0+UiA9IGdsOjpmbG9hdDMyVG9GbG9hdDE2KHNyYy0+cmVkKTsKLSAgICAg
ICAgZHN0LT5HID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTYoc3JjLT5ncmVlbik7Ci0gICAgICAgIGRz
dC0+QiA9IGdsOjpmbG9hdDMyVG9GbG9hdDE2KHNyYy0+Ymx1ZSk7Ci0gICAgfQotCi0gICAgc3Rh
dGljIHZvaWQgYXZlcmFnZShSMTZHMTZCMTZGICpkc3QsIGNvbnN0IFIxNkcxNkIxNkYgKnNyYzEs
IGNvbnN0IFIxNkcxNkIxNkYgKnNyYzIpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6YXZl
cmFnZUhhbGZGbG9hdChzcmMxLT5SLCBzcmMyLT5SKTsKLSAgICAgICAgZHN0LT5HID0gZ2w6OmF2
ZXJhZ2VIYWxmRmxvYXQoc3JjMS0+Rywgc3JjMi0+Ryk7Ci0gICAgICAgIGRzdC0+QiA9IGdsOjph
dmVyYWdlSGFsZkZsb2F0KHNyYzEtPkIsIHNyYzItPkIpOwotICAgIH0KLX07Ci0KLXN0cnVjdCBB
MzJCMzJHMzJSMzJGCi17Ci0gICAgZmxvYXQgQTsKLSAgICBmbG9hdCBSOwotICAgIGZsb2F0IEc7
Ci0gICAgZmxvYXQgQjsKLQotICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpk
c3QsIGNvbnN0IEEzMkIzMkczMlIzMkYgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVkICAg
PSBzcmMtPlI7Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSBzcmMtPkc7Ci0gICAgICAgIGRzdC0+Ymx1
ZSAgPSBzcmMtPkI7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSBzcmMtPkE7Ci0gICAgfQotCi0gICAg
c3RhdGljIHZvaWQgd3JpdGVDb2xvcihBMzJCMzJHMzJSMzJGICpkc3QsIGNvbnN0IGdsOjpDb2xv
ckYgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IHNyYy0+cmVkOwotICAgICAgICBkc3Qt
PkcgPSBzcmMtPmdyZWVuOwotICAgICAgICBkc3QtPkIgPSBzcmMtPmJsdWU7Ci0gICAgICAgIGRz
dC0+QSA9IHNyYy0+YWxwaGE7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgYXZlcmFnZShBMzJC
MzJHMzJSMzJGICpkc3QsIGNvbnN0IEEzMkIzMkczMlIzMkYgKnNyYzEsIGNvbnN0IEEzMkIzMkcz
MlIzMkYgKnNyYzIpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6YXZlcmFnZShzcmMxLT5S
LCBzcmMyLT5SKTsKLSAgICAgICAgZHN0LT5HID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Rywgc3JjMi0+
Ryk7Ci0gICAgICAgIGRzdC0+QiA9IGdsOjphdmVyYWdlKHNyYzEtPkIsIHNyYzItPkIpOwotICAg
ICAgICBkc3QtPkEgPSBnbDo6YXZlcmFnZShzcmMxLT5BLCBzcmMyLT5BKTsKLSAgICB9Ci19Owot
Ci1zdHJ1Y3QgUjMyRzMyQjMyQTMyRgotewotICAgIGZsb2F0IFI7Ci0gICAgZmxvYXQgRzsKLSAg
ICBmbG9hdCBCOwotICAgIGZsb2F0IEE7Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6
OkNvbG9yRiAqZHN0LCBjb25zdCBSMzJHMzJCMzJBMzJGICpzcmMpCi0gICAgewotICAgICAgICBk
c3QtPnJlZCAgID0gc3JjLT5SOwotICAgICAgICBkc3QtPmdyZWVuID0gc3JjLT5HOwotICAgICAg
ICBkc3QtPmJsdWUgID0gc3JjLT5COwotICAgICAgICBkc3QtPmFscGhhID0gc3JjLT5BOwotICAg
IH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjMyRzMyQjMyQTMyRiAqZHN0LCBjb25z
dCBnbDo6Q29sb3JGICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBzcmMtPnJlZDsKLSAg
ICAgICAgZHN0LT5HID0gc3JjLT5ncmVlbjsKLSAgICAgICAgZHN0LT5CID0gc3JjLT5ibHVlOwot
ICAgICAgICBkc3QtPkEgPSBzcmMtPmFscGhhOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGF2
ZXJhZ2UoUjMyRzMyQjMyQTMyRiAqZHN0LCBjb25zdCBSMzJHMzJCMzJBMzJGICpzcmMxLCBjb25z
dCBSMzJHMzJCMzJBMzJGICpzcmMyKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6OmF2ZXJh
Z2Uoc3JjMS0+Uiwgc3JjMi0+Uik7Ci0gICAgICAgIGRzdC0+RyA9IGdsOjphdmVyYWdlKHNyYzEt
PkcsIHNyYzItPkcpOwotICAgICAgICBkc3QtPkIgPSBnbDo6YXZlcmFnZShzcmMxLT5CLCBzcmMy
LT5CKTsKLSAgICAgICAgZHN0LT5BID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+QSwgc3JjMi0+QSk7Ci0g
ICAgfQotfTsKLQotc3RydWN0IFIzMkYKLXsKLSAgICBmbG9hdCBSOwotCi0gICAgc3RhdGljIHZv
aWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjMyRiAqc3JjKQotICAgIHsKLSAg
ICAgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKLSAgICAgICAgZHN0LT5ncmVlbiA9IDAuMGY7Ci0g
ICAgICAgIGRzdC0+Ymx1ZSAgPSAwLjBmOwotICAgICAgICBkc3QtPmFscGhhID0gMS4wZjsKLSAg
ICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIzMkYgKmRzdCwgY29uc3QgZ2w6OkNv
bG9yRiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gc3JjLT5yZWQ7Ci0gICAgfQotCi0g
ICAgc3RhdGljIHZvaWQgYXZlcmFnZShSMzJGICpkc3QsIGNvbnN0IFIzMkYgKnNyYzEsIGNvbnN0
IFIzMkYgKnNyYzIpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6YXZlcmFnZShzcmMxLT5S
LCBzcmMyLT5SKTsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgQTMyRgotewotICAgIGZsb2F0IEE7Ci0K
LSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBBMzJGICpz
cmMpCi0gICAgewotICAgICAgICBkc3QtPnJlZCAgID0gMC4wZjsKLSAgICAgICAgZHN0LT5ncmVl
biA9IDAuMGY7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSAwLjBmOwotICAgICAgICBkc3QtPmFscGhh
ID0gc3JjLT5BOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoQTMyRiAqZHN0
LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPkEgPSBzcmMtPmFs
cGhhOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoQTMyRiAqZHN0LCBjb25zdCBB
MzJGICpzcmMxLCBjb25zdCBBMzJGICpzcmMyKQotICAgIHsKLSAgICAgICAgZHN0LT5BID0gZ2w6
OmF2ZXJhZ2Uoc3JjMS0+QSwgc3JjMi0+QSk7Ci0gICAgfQotfTsKLQotc3RydWN0IEwzMkYKLXsK
LSAgICBmbG9hdCBMOwotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRz
dCwgY29uc3QgTDMyRiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9IHNyYy0+TDsK
LSAgICAgICAgZHN0LT5ncmVlbiA9IHNyYy0+TDsKLSAgICAgICAgZHN0LT5ibHVlICA9IHNyYy0+
TDsKLSAgICAgICAgZHN0LT5hbHBoYSA9IDEuMGY7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQg
d3JpdGVDb2xvcihMMzJGICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKLSAgICB7Ci0gICAg
ICAgIGRzdC0+TCA9IChzcmMtPnJlZCArIHNyYy0+Z3JlZW4gKyBzcmMtPmJsdWUpIC8gMy4wZjsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKEwzMkYgKmRzdCwgY29uc3QgTDMyRiAq
c3JjMSwgY29uc3QgTDMyRiAqc3JjMikKLSAgICB7Ci0gICAgICAgIGRzdC0+TCA9IGdsOjphdmVy
YWdlKHNyYzEtPkwsIHNyYzItPkwpOwotICAgIH0KLX07Ci0KLXN0cnVjdCBMMzJBMzJGCi17Ci0g
ICAgZmxvYXQgTDsKLSAgICBmbG9hdCBBOwotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGds
OjpDb2xvckYgKmRzdCwgY29uc3QgTDMyQTMyRiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5y
ZWQgICA9IHNyYy0+TDsKLSAgICAgICAgZHN0LT5ncmVlbiA9IHNyYy0+TDsKLSAgICAgICAgZHN0
LT5ibHVlICA9IHNyYy0+TDsKLSAgICAgICAgZHN0LT5hbHBoYSA9IHNyYy0+QTsKLSAgICB9Ci0K
LSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKEwzMkEzMkYgKmRzdCwgY29uc3QgZ2w6OkNvbG9y
RiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5MID0gKHNyYy0+cmVkICsgc3JjLT5ncmVlbiAr
IHNyYy0+Ymx1ZSkgLyAzLjBmOwotICAgICAgICBkc3QtPkEgPSBzcmMtPmFscGhhOwotICAgIH0K
LQotICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoTDMyQTMyRiAqZHN0LCBjb25zdCBMMzJBMzJGICpz
cmMxLCBjb25zdCBMMzJBMzJGICpzcmMyKQotICAgIHsKLSAgICAgICAgZHN0LT5MID0gZ2w6OmF2
ZXJhZ2Uoc3JjMS0+TCwgc3JjMi0+TCk7Ci0gICAgICAgIGRzdC0+QSA9IGdsOjphdmVyYWdlKHNy
YzEtPkEsIHNyYzItPkEpOwotICAgIH0KLX07Ci0KLXN0cnVjdCBSMzJHMzJGCi17Ci0gICAgZmxv
YXQgUjsKLSAgICBmbG9hdCBHOwotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xv
ckYgKmRzdCwgY29uc3QgUjMyRzMyRiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9
IHNyYy0+UjsKLSAgICAgICAgZHN0LT5ncmVlbiA9IHNyYy0+RzsKLSAgICAgICAgZHN0LT5ibHVl
ICA9IDAuMGY7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSAxLjBmOwotICAgIH0KLQotICAgIHN0YXRp
YyB2b2lkIHdyaXRlQ29sb3IoUjMyRzMyRiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCi0g
ICAgewotICAgICAgICBkc3QtPlIgPSBzcmMtPnJlZDsKLSAgICAgICAgZHN0LT5HID0gc3JjLT5n
cmVlbjsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFIzMkczMkYgKmRzdCwgY29u
c3QgUjMyRzMyRiAqc3JjMSwgY29uc3QgUjMyRzMyRiAqc3JjMikKLSAgICB7Ci0gICAgICAgIGRz
dC0+UiA9IGdsOjphdmVyYWdlKHNyYzEtPlIsIHNyYzItPlIpOwotICAgICAgICBkc3QtPkcgPSBn
bDo6YXZlcmFnZShzcmMxLT5HLCBzcmMyLT5HKTsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgUjMyRzMy
QjMyRgotewotICAgIGZsb2F0IFI7Ci0gICAgZmxvYXQgRzsKLSAgICBmbG9hdCBCOwotCi0gICAg
c3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjMyRzMyQjMyRiAq
c3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKLSAgICAgICAgZHN0LT5n
cmVlbiA9IHNyYy0+RzsKLSAgICAgICAgZHN0LT5ibHVlICA9IHNyYy0+QjsKLSAgICAgICAgZHN0
LT5hbHBoYSA9IDEuMGY7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSMzJH
MzJCMzJGICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+
UiA9IHNyYy0+cmVkOwotICAgICAgICBkc3QtPkcgPSBzcmMtPmdyZWVuOwotICAgICAgICBkc3Qt
PkIgPSBzcmMtPmJsdWU7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgYXZlcmFnZShSMzJHMzJC
MzJGICpkc3QsIGNvbnN0IFIzMkczMkIzMkYgKnNyYzEsIGNvbnN0IFIzMkczMkIzMkYgKnNyYzIp
Ci0gICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6YXZlcmFnZShzcmMxLT5SLCBzcmMyLT5SKTsK
LSAgICAgICAgZHN0LT5HID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Rywgc3JjMi0+Ryk7Ci0gICAgICAg
IGRzdC0+QiA9IGdsOjphdmVyYWdlKHNyYzEtPkIsIHNyYzItPkIpOwotICAgIH0KLX07Ci0KLXN0
cnVjdCBSMTBHMTBCMTBBMgotewotICAgIHVuc2lnbmVkIGludCBSIDogMTA7Ci0gICAgdW5zaWdu
ZWQgaW50IEcgOiAxMDsKLSAgICB1bnNpZ25lZCBpbnQgQiA6IDEwOwotICAgIHVuc2lnbmVkIGlu
dCBBIDogMjsKLQotICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNv
bnN0IFIxMEcxMEIxMEEyICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPnJlZCAgID0gZ2w6Om5v
cm1hbGl6ZWRUb0Zsb2F0PDEwPihzcmMtPlIpOwotICAgICAgICBkc3QtPmdyZWVuID0gZ2w6Om5v
cm1hbGl6ZWRUb0Zsb2F0PDEwPihzcmMtPkcpOwotICAgICAgICBkc3QtPmJsdWUgID0gZ2w6Om5v
cm1hbGl6ZWRUb0Zsb2F0PDEwPihzcmMtPkIpOwotICAgICAgICBkc3QtPmFscGhhID0gZ2w6Om5v
cm1hbGl6ZWRUb0Zsb2F0PCAyPihzcmMtPkEpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHJl
YWRDb2xvcihnbDo6Q29sb3JVSSAqZHN0LCBjb25zdCBSMTBHMTBCMTBBMiAqc3JjKQotICAgIHsK
LSAgICAgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKLSAgICAgICAgZHN0LT5ncmVlbiA9IHNyYy0+
RzsKLSAgICAgICAgZHN0LT5ibHVlICA9IHNyYy0+QjsKLSAgICAgICAgZHN0LT5hbHBoYSA9IHNy
Yy0+QTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIxMEcxMEIxMEEyICpk
c3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IGdsOjpm
bG9hdFRvTm9ybWFsaXplZDwxMCwgdW5zaWduZWQgaW50PihzcmMtPnJlZCk7Ci0gICAgICAgIGRz
dC0+RyA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDwxMCwgdW5zaWduZWQgaW50PihzcmMtPmdyZWVu
KTsKLSAgICAgICAgZHN0LT5CID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPDEwLCB1bnNpZ25lZCBp
bnQ+KHNyYy0+Ymx1ZSk7Ci0gICAgICAgIGRzdC0+QSA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDwg
MiwgdW5zaWduZWQgaW50PihzcmMtPmFscGhhKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3
cml0ZUNvbG9yKFIxMEcxMEIxMEEyICpkc3QsIGNvbnN0IGdsOjpDb2xvclVJICpzcmMpCi0gICAg
ewotICAgICAgICBkc3QtPlIgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHNyYy0+cmVkKTsK
LSAgICAgICAgZHN0LT5HID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihzcmMtPmdyZWVuKTsK
LSAgICAgICAgZHN0LT5CID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihzcmMtPmJsdWUpOwot
ICAgICAgICBkc3QtPkEgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHNyYy0+YWxwaGEpOwot
ICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjEwRzEwQjEwQTIgKmRzdCwgY29uc3Qg
UjEwRzEwQjEwQTIgKnNyYzEsIGNvbnN0IFIxMEcxMEIxMEEyICpzcmMyKQotICAgIHsKLSAgICAg
ICAgZHN0LT5SID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Uiwgc3JjMi0+Uik7Ci0gICAgICAgIGRzdC0+
RyA9IGdsOjphdmVyYWdlKHNyYzEtPkcsIHNyYzItPkcpOwotICAgICAgICBkc3QtPkIgPSBnbDo6
YXZlcmFnZShzcmMxLT5CLCBzcmMyLT5CKTsKLSAgICAgICAgZHN0LT5BID0gZ2w6OmF2ZXJhZ2Uo
c3JjMS0+QSwgc3JjMi0+QSk7Ci0gICAgfQotfTsKLQotc3RydWN0IFI5RzlCOUU1Ci17Ci0gICAg
dW5zaWduZWQgaW50IFIgOiA5OwotICAgIHVuc2lnbmVkIGludCBHIDogOTsKLSAgICB1bnNpZ25l
ZCBpbnQgQiA6IDk7Ci0gICAgdW5zaWduZWQgaW50IEUgOiA1OwotCi0gICAgc3RhdGljIHZvaWQg
cmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjlHOUI5RTUgKnNyYykKLSAgICB7Ci0g
ICAgICAgIGdsOjpjb252ZXJ0OTk5RTV0b1JHQkZsb2F0cyhnbDo6Yml0Q2FzdDx1bnNpZ25lZCBp
bnQ+KCpzcmMpLCAmZHN0LT5yZWQsICZkc3QtPmdyZWVuLCAmZHN0LT5ibHVlKTsKLSAgICAgICAg
ZHN0LT5hbHBoYSA9IDEuMGY7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihS
OUc5QjlFNSAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCi0gICAgewotICAgICAgICAqcmVp
bnRlcnByZXRfY2FzdDx1bnNpZ25lZCBpbnQqPihkc3QpID0gZ2w6OmNvbnZlcnRSR0JGbG9hdHNU
bzk5OUU1KHNyYy0+cmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYy0+Z3JlZW4sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3JjLT5ibHVlKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhdmVyYWdl
KFI5RzlCOUU1ICpkc3QsIGNvbnN0IFI5RzlCOUU1ICpzcmMxLCBjb25zdCBSOUc5QjlFNSAqc3Jj
MikKLSAgICB7Ci0gICAgICAgIGZsb2F0IHIxLCBnMSwgYjE7Ci0gICAgICAgIGdsOjpjb252ZXJ0
OTk5RTV0b1JHQkZsb2F0cygqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBpbnQqPihz
cmMxKSwgJnIxLCAmZzEsICZiMSk7Ci0KLSAgICAgICAgZmxvYXQgcjIsIGcyLCBiMjsKLSAgICAg
ICAgZ2w6OmNvbnZlcnQ5OTlFNXRvUkdCRmxvYXRzKCpyZWludGVycHJldF9jYXN0PGNvbnN0IHVu
c2lnbmVkIGludCo+KHNyYzIpLCAmcjIsICZnMiwgJmIyKTsKLQotICAgICAgICAqcmVpbnRlcnBy
ZXRfY2FzdDx1bnNpZ25lZCBpbnQqPihkc3QpID0gZ2w6OmNvbnZlcnRSR0JGbG9hdHNUbzk5OUU1
KGdsOjphdmVyYWdlKHIxLCByMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OmF2ZXJhZ2UoZzEs
IGcyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6YXZlcmFnZShiMSwgYjIpKTsKLSAgICB9Ci19
OwotCi1zdHJ1Y3QgUjExRzExQjEwRgotewotICAgIHVuc2lnbmVkIGludCBSIDogMTE7Ci0gICAg
dW5zaWduZWQgaW50IEcgOiAxMTsKLSAgICB1bnNpZ25lZCBpbnQgQiA6IDEwOwotCi0gICAgc3Rh
dGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjExRzExQjEwRiAqc3Jj
KQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9IGdsOjpmbG9hdDExVG9GbG9hdDMyKHNyYy0+
Uik7Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSBnbDo6ZmxvYXQxMVRvRmxvYXQzMihzcmMtPkcpOwot
ICAgICAgICBkc3QtPmJsdWUgID0gZ2w6OmZsb2F0MTBUb0Zsb2F0MzIoc3JjLT5CKTsKLSAgICAg
ICAgZHN0LT5hbHBoYSA9IDEuMGY7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xv
cihSMTFHMTFCMTBGICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKLSAgICB7Ci0gICAgICAg
IGRzdC0+UiA9IGdsOjpmbG9hdDMyVG9GbG9hdDExKHNyYy0+cmVkKTsKLSAgICAgICAgZHN0LT5H
ID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTEoc3JjLT5ncmVlbik7Ci0gICAgICAgIGRzdC0+QiA9IGds
OjpmbG9hdDMyVG9GbG9hdDEwKHNyYy0+Ymx1ZSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQg
YXZlcmFnZShSMTFHMTFCMTBGICpkc3QsIGNvbnN0IFIxMUcxMUIxMEYgKnNyYzEsIGNvbnN0IFIx
MUcxMUIxMEYgKnNyYzIpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6YXZlcmFnZUZsb2F0
MTEoc3JjMS0+Uiwgc3JjMi0+Uik7Ci0gICAgICAgIGRzdC0+RyA9IGdsOjphdmVyYWdlRmxvYXQx
MShzcmMxLT5HLCBzcmMyLT5HKTsKLSAgICAgICAgZHN0LT5CID0gZ2w6OmF2ZXJhZ2VGbG9hdDEw
KHNyYzEtPkIsIHNyYzItPkIpOwotICAgIH0KLX07Ci0KLX0KLQotI2VuZGlmIC8vIExJQkFOR0xF
X1JFTkRFUkVSX0QzRF9JTUFHRUZPUk1BVFNfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvbG9hZGltYWdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2xvYWRp
bWFnZS5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvbG9hZGltYWdlLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0x
LDY5NyArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDEzLTIwMTUgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBsb2FkaW1hZ2UuY3BwOiBEZWZp
bmVzIGltYWdlIGxvYWRpbmcgZnVuY3Rpb25zLgotCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2xvYWRpbWFnZS5oIgotCi1uYW1lc3BhY2UgcngKLXsKLQotdm9pZCBMb2FkQThUb1JH
QkE4KHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6
ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQs
IHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCi17Ci0gICAg
Zm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQotICAgIHsKLSAgICAgICAgZm9yIChz
aXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKLSAgICAgICAgewotICAgICAgICAgICAgY29u
c3QgdWludDhfdCAqc291cmNlID0gT2Zmc2V0RGF0YVBvaW50ZXI8dWludDhfdD4oaW5wdXQsIHks
IHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICB1aW50MzJf
dCAqZGVzdCA9IE9mZnNldERhdGFQb2ludGVyPHVpbnQzMl90PihvdXRwdXQsIHksIHosIG91dHB1
dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IHgg
PSAwOyB4IDwgd2lkdGg7IHgrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBkZXN0
W3hdID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHNvdXJjZVt4XSkgPDwgMjQ7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgTG9hZEE4VG9CR1JBOChzaXplX3Qgd2lk
dGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICBjb25z
dCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRo
UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0
Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQotewotICAgIC8vIFNhbWUgYXMgbG9h
ZGluZyB0byBSR0JBCi0gICAgTG9hZEE4VG9SR0JBOCh3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgaW5w
dXQsIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCwgb3V0cHV0LCBvdXRwdXRSb3dQaXRj
aCwgb3V0cHV0RGVwdGhQaXRjaCk7Ci19Ci0KLXZvaWQgTG9hZEEzMkZUb1JHQkEzMkYoc2l6ZV90
IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlu
cHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBz
aXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQotewotICAgIGZv
ciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6
ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0
IGZsb2F0ICpzb3VyY2UgPSBPZmZzZXREYXRhUG9pbnRlcjxmbG9hdD4oaW5wdXQsIHksIHosIGlu
cHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICBmbG9hdCAqZGVzdCA9
IE9mZnNldERhdGFQb2ludGVyPGZsb2F0PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBv
dXRwdXREZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lk
dGg7IHgrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0g
PSAwLjBmOwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IDAuMGY7Ci0gICAgICAg
ICAgICAgICAgZGVzdFs0ICogeCArIDJdID0gMC4wZjsKLSAgICAgICAgICAgICAgICBkZXN0WzQg
KiB4ICsgM10gPSBzb3VyY2VbeF07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19
Ci0KLXZvaWQgTG9hZEExNkZUb1JHQkExNkYoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBz
aXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0
LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNp
emVfdCBvdXRwdXREZXB0aFBpdGNoKQotewotICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVw
dGg7IHorKykKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5
KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IHVpbnQxNl90ICpzb3VyY2UgPSBPZmZz
ZXREYXRhUG9pbnRlcjx1aW50MTZfdD4oaW5wdXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0
RGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICB1aW50MTZfdCAqZGVzdCA9IE9mZnNldERhdGFQb2lu
dGVyPHVpbnQxNl90PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBp
dGNoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSAwOwotICAgICAg
ICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IDA7Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICog
eCArIDJdID0gMDsKLSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10gPSBzb3VyY2VbeF07
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgTG9hZEw4VG9SR0JB
OChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAg
ICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVf
dCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBz
aXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQotewotICAgIGZv
ciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6
ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0
IHVpbnQ4X3QgKnNvdXJjZSA9IE9mZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+KGlucHV0LCB5LCB6
LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgdWludDhfdCAq
ZGVzdCA9IE9mZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93
UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7
IHggPCB3aWR0aDsgeCsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHVpbnQ4X3Qg
c291cmNlVmFsID0gc291cmNlW3hdOwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSA9
IHNvdXJjZVZhbDsKLSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSBzb3VyY2VWYWw7
Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDJdID0gc291cmNlVmFsOwotICAgICAgICAg
ICAgICAgIGRlc3RbNCAqIHggKyAzXSA9IDB4RkY7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9Ci19Ci0KLXZvaWQgTG9hZEw4VG9CR1JBOChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWln
aHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1
dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAg
ICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVf
dCBvdXRwdXREZXB0aFBpdGNoKQotewotICAgIC8vIFNhbWUgYXMgbG9hZGluZyB0byBSR0JBCi0g
ICAgTG9hZEw4VG9SR0JBOCh3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgaW5wdXQsIGlucHV0Um93UGl0
Y2gsIGlucHV0RGVwdGhQaXRjaCwgb3V0cHV0LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQ
aXRjaCk7Ci19Ci0KLXZvaWQgTG9hZEwzMkZUb1JHQkEzMkYoc2l6ZV90IHdpZHRoLCBzaXplX3Qg
aGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4
X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwK
LSAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93
UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQotewotICAgIGZvciAoc2l6ZV90IHogPSAw
OyB6IDwgZGVwdGg7IHorKykKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwg
aGVpZ2h0OyB5KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IGZsb2F0ICpzb3VyY2Ug
PSBPZmZzZXREYXRhUG9pbnRlcjxmbG9hdD4oaW5wdXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlu
cHV0RGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICBmbG9hdCAqZGVzdCA9IE9mZnNldERhdGFQb2lu
dGVyPGZsb2F0PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNo
KTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSBzb3VyY2VbeF07Ci0g
ICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gc291cmNlW3hdOwotICAgICAgICAgICAg
ICAgIGRlc3RbNCAqIHggKyAyXSA9IHNvdXJjZVt4XTsKLSAgICAgICAgICAgICAgICBkZXN0WzQg
KiB4ICsgM10gPSAxLjBmOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi12
b2lkIExvYWRMMTZGVG9SR0JBMTZGKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90
IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6
ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qg
b3V0cHV0RGVwdGhQaXRjaCkKLXsKLSAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6
KyspCi0gICAgewotICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCB1aW50MTZfdCAqc291cmNlID0gT2Zmc2V0RGF0
YVBvaW50ZXI8dWludDE2X3Q+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRo
UGl0Y2gpOwotICAgICAgICAgICAgdWludDE2X3QgKmRlc3QgPSBPZmZzZXREYXRhUG9pbnRlcjx1
aW50MTZfdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7
Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gc291cmNlW3hdOwotICAg
ICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IHNvdXJjZVt4XTsKLSAgICAgICAgICAgICAg
ICBkZXN0WzQgKiB4ICsgMl0gPSBzb3VyY2VbeF07Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICog
eCArIDNdID0gZ2w6OkZsb2F0MTZPbmU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9
Ci19Ci0KLXZvaWQgTG9hZExBOFRvUkdCQTgoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBz
aXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBz
aXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAg
ICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBv
dXRwdXREZXB0aFBpdGNoKQotewotICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHor
KykKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNvdXJjZSA9IE9mZnNldERhdGFQ
b2ludGVyPHVpbnQ4X3Q+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0
Y2gpOwotICAgICAgICAgICAgdWludDhfdCAqZGVzdCA9IE9mZnNldERhdGFQb2ludGVyPHVpbnQ4
X3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOwotICAg
ICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSA9IHNvdXJjZVsyICogeCArIDBdOwot
ICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IHNvdXJjZVsyICogeCArIDBdOwotICAg
ICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IHNvdXJjZVsyICogeCArIDBdOwotICAgICAg
ICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSA9IHNvdXJjZVsyICogeCArIDFdOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIExvYWRMQThUb0JHUkE4KHNpemVfdCB3
aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICBj
b25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERl
cHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91
dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKLXsKLSAgICAvLyBTYW1lIGFz
IGxvYWRpbmcgdG8gUkdCQQotICAgIExvYWRMQThUb1JHQkE4KHdpZHRoLCBoZWlnaHQsIGRlcHRo
LCBpbnB1dCwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoLCBvdXRwdXQsIG91dHB1dFJv
d1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKLX0KLQotdm9pZCBMb2FkTEEzMkZUb1JHQkEzMkYo
c2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNp
emVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpv
dXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCi17
Ci0gICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQotICAgIHsKLSAgICAgICAg
Zm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKLSAgICAgICAgewotICAgICAgICAg
ICAgY29uc3QgZmxvYXQgKnNvdXJjZSA9IE9mZnNldERhdGFQb2ludGVyPGZsb2F0PihpbnB1dCwg
eSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIGZsb2F0
ICpkZXN0ID0gT2Zmc2V0RGF0YVBvaW50ZXI8ZmxvYXQ+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93
UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7
IHggPCB3aWR0aDsgeCsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGRlc3RbNCAq
IHggKyAwXSA9IHNvdXJjZVsyICogeCArIDBdOwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHgg
KyAxXSA9IHNvdXJjZVsyICogeCArIDBdOwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAy
XSA9IHNvdXJjZVsyICogeCArIDBdOwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSA9
IHNvdXJjZVsyICogeCArIDFdOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQot
Ci12b2lkIExvYWRMQTE2RlRvUkdCQTE2RihzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNp
emVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0
LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBz
aXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKLXsKLSAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRl
cHRoOyB6KyspCi0gICAgewotICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsg
eSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCB1aW50MTZfdCAqc291cmNlID0gT2Zm
c2V0RGF0YVBvaW50ZXI8dWludDE2X3Q+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1
dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgdWludDE2X3QgKmRlc3QgPSBPZmZzZXREYXRhUG9p
bnRlcjx1aW50MTZfdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQ
aXRjaCk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gc291cmNlWzIg
KiB4ICsgMF07Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gc291cmNlWzIgKiB4
ICsgMF07Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDJdID0gc291cmNlWzIgKiB4ICsg
MF07Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDNdID0gc291cmNlWzIgKiB4ICsgMV07
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgTG9hZFJHQjhUb0JH
Ulg4KHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBz
aXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0
cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQotewot
ICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKLSAgICB7Ci0gICAgICAgIGZv
ciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnN0IHVpbnQ4X3QgKnNvdXJjZSA9IE9mZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+KGlucHV0
LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgdWlu
dDhfdCAqZGVzdCA9IE9mZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+KG91dHB1dCwgeSwgeiwgb3V0
cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgZm9yIChzaXplX3Qg
eCA9IDA7IHggPCB3aWR0aDsgeCsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGRl
c3RbNCAqIHggKyAwXSA9IHNvdXJjZVt4ICogMyArIDJdOwotICAgICAgICAgICAgICAgIGRlc3Rb
NCAqIHggKyAxXSA9IHNvdXJjZVt4ICogMyArIDFdOwotICAgICAgICAgICAgICAgIGRlc3RbNCAq
IHggKyAyXSA9IHNvdXJjZVt4ICogMyArIDBdOwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHgg
KyAzXSA9IDB4RkY7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQg
TG9hZFJHOFRvQkdSWDgoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgs
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRS
b3dQaXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgdWlu
dDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBp
dGNoKQotewotICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKLSAgICB7Ci0g
ICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNvdXJjZSA9IE9mZnNldERhdGFQb2ludGVyPHVpbnQ4
X3Q+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOwotICAgICAg
ICAgICAgdWludDhfdCAqZGVzdCA9IE9mZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+KG91dHB1dCwg
eSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgZm9y
IChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGRlc3RbNCAqIHggKyAwXSA9IDB4MDA7Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICog
eCArIDFdID0gc291cmNlW3ggKiAyICsgMV07Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICogeCAr
IDJdID0gc291cmNlW3ggKiAyICsgMF07Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDNd
ID0gMHhGRjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBMb2Fk
UjhUb0JHUlg4KHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRj
aCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICB1aW50OF90ICpv
dXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCi17
Ci0gICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQotICAgIHsKLSAgICAgICAg
Zm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKLSAgICAgICAgewotICAgICAgICAg
ICAgY29uc3QgdWludDhfdCAqc291cmNlID0gT2Zmc2V0RGF0YVBvaW50ZXI8dWludDhfdD4oaW5w
dXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICB1
aW50OF90ICpkZXN0ID0gT2Zmc2V0RGF0YVBvaW50ZXI8dWludDhfdD4ob3V0cHV0LCB5LCB6LCBv
dXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICBmb3IgKHNpemVf
dCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ZGVzdFs0ICogeCArIDBdID0gMHgwMDsKLSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0g
PSAweDAwOwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IHNvdXJjZVt4XTsKLSAg
ICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10gPSAweEZGOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgfQotfQotCi12b2lkIExvYWRSNUc2QjVUb0JHUkE4KHNpemVfdCB3aWR0aCwg
c2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRo
UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91
dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKLXsKLSAgICBmb3IgKHNpemVf
dCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCi0gICAgewotICAgICAgICBmb3IgKHNpemVfdCB5ID0g
MDsgeSA8IGhlaWdodDsgeSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCB1aW50MTZf
dCAqc291cmNlID0gT2Zmc2V0RGF0YVBvaW50ZXI8dWludDE2X3Q+KGlucHV0LCB5LCB6LCBpbnB1
dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgdWludDhfdCAqZGVzdCA9
IE9mZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gs
IG91dHB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3
aWR0aDsgeCsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHVpbnQxNl90IHJnYiA9
IHNvdXJjZVt4XTsKLSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSBzdGF0aWNfY2Fz
dDx1aW50OF90PigoKHJnYiAmIDB4MDAxRikgPDwgMykgfCAoKHJnYiAmIDB4MDAxRikgPj4gMikp
OwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KCgocmdiICYgMHgwN0UwKSA+PiAzKSB8ICgocmdiICYgMHgwN0UwKSA+PiA5KSk7Ci0gICAgICAg
ICAgICAgICAgZGVzdFs0ICogeCArIDJdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oKChyZ2IgJiAw
eEY4MDApID4+IDgpIHwgKChyZ2IgJiAweEY4MDApID4+IDEzKSk7Ci0gICAgICAgICAgICAgICAg
ZGVzdFs0ICogeCArIDNdID0gMHhGRjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LX0KLQotdm9pZCBMb2FkUjVHNkI1VG9SR0JBOChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQs
IHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5w
dXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAg
ICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwg
c2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCi17Ci0gICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBk
ZXB0aDsgeisrKQotICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7
IHkrKykKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgdWludDE2X3QgKnNvdXJjZSA9IE9m
ZnNldERhdGFQb2ludGVyPHVpbnQxNl90PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5w
dXREZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIHVpbnQ4X3QgKmRlc3QgPSBPZmZzZXREYXRhUG9p
bnRlcjx1aW50OF90PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBp
dGNoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB1aW50MTZfdCByZ2IgPSBzb3VyY2VbeF07Ci0g
ICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oKChy
Z2IgJiAweEY4MDApID4+IDgpIHwgKChyZ2IgJiAweEY4MDApID4+IDEzKSk7Ci0gICAgICAgICAg
ICAgICAgZGVzdFs0ICogeCArIDFdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oKChyZ2IgJiAweDA3
RTApID4+IDMpIHwgKChyZ2IgJiAweDA3RTApID4+IDkpKTsKLSAgICAgICAgICAgICAgICBkZXN0
WzQgKiB4ICsgMl0gPSBzdGF0aWNfY2FzdDx1aW50OF90PigoKHJnYiAmIDB4MDAxRikgPDwgMykg
fCAoKHJnYiAmIDB4MDAxRikgPj4gMikpOwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAz
XSA9IDB4RkY7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgTG9h
ZFJHQkE4VG9CR1JBOChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwK
LSAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0
Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAg
dWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0
aFBpdGNoKQotewotICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKLSAgICB7
Ci0gICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90ICpzb3VyY2UgPSBPZmZzZXREYXRhUG9pbnRlcjx1
aW50MzJfdD4oaW5wdXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7Ci0g
ICAgICAgICAgICB1aW50MzJfdCAqZGVzdCA9IE9mZnNldERhdGFQb2ludGVyPHVpbnQzMl90Pihv
dXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKLSAgICAgICAg
ICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICB1aW50MzJfdCByZ2JhID0gc291cmNlW3hdOwotICAgICAgICAgICAgICAg
IGRlc3RbeF0gPSAoQU5HTEVfUk9UTChyZ2JhLCAxNikgJiAweDAwZmYwMGZmKSB8IChyZ2JhICYg
MHhmZjAwZmYwMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQg
TG9hZFJHQkE0VG9BUkdCNChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0
aCwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlu
cHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAg
ICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXRE
ZXB0aFBpdGNoKQotewotICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKLSAg
ICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnN0IHVpbnQxNl90ICpzb3VyY2UgPSBPZmZzZXREYXRhUG9pbnRl
cjx1aW50MTZfdD4oaW5wdXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7
Ci0gICAgICAgICAgICB1aW50MTZfdCAqZGVzdCA9IE9mZnNldERhdGFQb2ludGVyPHVpbnQxNl90
PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKLSAgICAg
ICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBkZXN0W3hdID0gQU5HTEVfUk9UUjE2KHNvdXJjZVt4XSwgNCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgTG9hZFJHQkE0VG9CR1JB
OChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNp
emVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0
cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQotewot
ICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKLSAgICB7Ci0gICAgICAgIGZv
ciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnN0IHVpbnQxNl90ICpzb3VyY2UgPSBPZmZzZXREYXRhUG9pbnRlcjx1aW50MTZfdD4oaW5w
dXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICB1
aW50OF90ICpkZXN0ID0gT2Zmc2V0RGF0YVBvaW50ZXI8dWludDhfdD4ob3V0cHV0LCB5LCB6LCBv
dXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICBmb3IgKHNpemVf
dCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
dWludDE2X3QgcmdiYSA9IHNvdXJjZVt4XTsKLSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsg
MF0gPSBzdGF0aWNfY2FzdDx1aW50OF90PigoKHJnYmEgJiAweDAwRjApIDw8IDApIHwgKChyZ2Jh
ICYgMHgwMEYwKSA+PiA0KSk7Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gc3Rh
dGljX2Nhc3Q8dWludDhfdD4oKChyZ2JhICYgMHgwRjAwKSA+PiA0KSB8ICgocmdiYSAmIDB4MEYw
MCkgPj4gOCkpOwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KCgocmdiYSAmIDB4RjAwMCkgPj4gOCkgfCAoKHJnYmEgJiAweEYwMDApID4+IDEy
KSk7Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDNdID0gc3RhdGljX2Nhc3Q8dWludDhf
dD4oKChyZ2JhICYgMHgwMDBGKSA8PCA0KSB8ICgocmdiYSAmIDB4MDAwRikgPj4gMCkpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIExvYWRSR0JBNFRvUkdCQTgo
c2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXpl
X3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1
dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKLXsKLSAg
ICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCi0gICAgewotICAgICAgICBmb3Ig
KHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBj
b25zdCB1aW50MTZfdCAqc291cmNlID0gT2Zmc2V0RGF0YVBvaW50ZXI8dWludDE2X3Q+KGlucHV0
LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgdWlu
dDhfdCAqZGVzdCA9IE9mZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+KG91dHB1dCwgeSwgeiwgb3V0
cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgZm9yIChzaXplX3Qg
eCA9IDA7IHggPCB3aWR0aDsgeCsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHVp
bnQxNl90IHJnYmEgPSBzb3VyY2VbeF07Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDBd
ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oKChyZ2JhICYgMHhGMDAwKSA+PiA4KSB8ICgocmdiYSAm
IDB4RjAwMCkgPj4gMTIpKTsKLSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSBzdGF0
aWNfY2FzdDx1aW50OF90PigoKHJnYmEgJiAweDBGMDApID4+IDQpIHwgKChyZ2JhICYgMHgwRjAw
KSA+PiA4KSk7Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDJdID0gc3RhdGljX2Nhc3Q8
dWludDhfdD4oKChyZ2JhICYgMHgwMEYwKSA8PCAwKSB8ICgocmdiYSAmIDB4MDBGMCkgPj4gNCkp
OwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KCgocmdiYSAmIDB4MDAwRikgPDwgNCkgfCAoKHJnYmEgJiAweDAwMEYpID4+IDApKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBMb2FkQkdSQTRUb0JHUkE4KHNp
emVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90
IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQs
IHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCi17Ci0gICAg
Zm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQotICAgIHsKLSAgICAgICAgZm9yIChz
aXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKLSAgICAgICAgewotICAgICAgICAgICAgY29u
c3QgdWludDE2X3QgKnNvdXJjZSA9IE9mZnNldERhdGFQb2ludGVyPHVpbnQxNl90PihpbnB1dCwg
eSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIHVpbnQ4
X3QgKmRlc3QgPSBPZmZzZXREYXRhUG9pbnRlcjx1aW50OF90PihvdXRwdXQsIHksIHosIG91dHB1
dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IHgg
PSAwOyB4IDwgd2lkdGg7IHgrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB1aW50
MTZfdCBiZ3JhID0gc291cmNlW3hdOwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSA9
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCgoYmdyYSAmIDB4RjAwMCkgPj4gOCkgfCAoKGJncmEgJiAw
eEYwMDApID4+IDEyKSk7Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gc3RhdGlj
X2Nhc3Q8dWludDhfdD4oKChiZ3JhICYgMHgwRjAwKSA+PiA0KSB8ICgoYmdyYSAmIDB4MEYwMCkg
Pj4gOCkpOwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KCgoYmdyYSAmIDB4MDBGMCkgPDwgMCkgfCAoKGJncmEgJiAweDAwRjApID4+IDQpKTsK
LSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10gPSBzdGF0aWNfY2FzdDx1aW50OF90Pigo
KGJncmEgJiAweDAwMEYpIDw8IDQpIHwgKChiZ3JhICYgMHgwMDBGKSA+PiAwKSk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgTG9hZFJHQjVBMVRvQTFSR0I1KHNp
emVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXpl
X3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0
cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQotewot
ICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKLSAgICB7Ci0gICAgICAgIGZv
ciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnN0IHVpbnQxNl90ICpzb3VyY2UgPSBPZmZzZXREYXRhUG9pbnRlcjx1aW50MTZfdD4oaW5w
dXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICB1
aW50MTZfdCAqZGVzdCA9IE9mZnNldERhdGFQb2ludGVyPHVpbnQxNl90PihvdXRwdXQsIHksIHos
IG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIGZvciAoc2l6
ZV90IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBkZXN0W3hdID0gQU5HTEVfUk9UUjE2KHNvdXJjZVt4XSwgMSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgTG9hZFJHQjVBMVRvQkdSQTgoc2l6ZV90IHdpZHRo
LCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlucHV0RGVw
dGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qg
b3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQotewotICAgIGZvciAoc2l6
ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IHkg
PSAwOyB5IDwgaGVpZ2h0OyB5KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IHVpbnQx
Nl90ICpzb3VyY2UgPSBPZmZzZXREYXRhUG9pbnRlcjx1aW50MTZfdD4oaW5wdXQsIHksIHosIGlu
cHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICB1aW50OF90ICpkZXN0
ID0gT2Zmc2V0RGF0YVBvaW50ZXI8dWludDhfdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRj
aCwgb3V0cHV0RGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8
IHdpZHRoOyB4KyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdWludDE2X3Qgcmdi
YSA9IHNvdXJjZVt4XTsKLSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSBzdGF0aWNf
Y2FzdDx1aW50OF90PigoKHJnYmEgJiAweDAwM0UpIDw8IDIpIHwgKChyZ2JhICYgMHgwMDNFKSA+
PiAzKSk7Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oKChyZ2JhICYgMHgwN0MwKSA+PiAzKSB8ICgocmdiYSAmIDB4MDdDMCkgPj4gOCkpOwot
ICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCgo
cmdiYSAmIDB4RjgwMCkgPj4gOCkgfCAoKHJnYmEgJiAweEY4MDApID4+IDEzKSk7Ci0gICAgICAg
ICAgICAgICAgZGVzdFs0ICogeCArIDNdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oKHJnYmEgJiAw
eDAwMDEpID8gMHhGRiA6IDApOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQot
Ci12b2lkIExvYWRSR0I1QTFUb1JHQkE4KHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6
ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwg
c2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXpl
X3Qgb3V0cHV0RGVwdGhQaXRjaCkKLXsKLSAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRo
OyB6KyspCi0gICAgewotICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsr
KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCB1aW50MTZfdCAqc291cmNlID0gT2Zmc2V0
RGF0YVBvaW50ZXI8dWludDE2X3Q+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERl
cHRoUGl0Y2gpOwotICAgICAgICAgICAgdWludDhfdCAqZGVzdCA9IE9mZnNldERhdGFQb2ludGVy
PHVpbnQ4X3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gp
OwotICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHVpbnQxNl90IHJnYmEgPSBzb3VyY2VbeF07Ci0gICAg
ICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oKChyZ2Jh
ICYgMHhGODAwKSA+PiA4KSB8ICgocmdiYSAmIDB4RjgwMCkgPj4gMTMpKTsKLSAgICAgICAgICAg
ICAgICBkZXN0WzQgKiB4ICsgMV0gPSBzdGF0aWNfY2FzdDx1aW50OF90PigoKHJnYmEgJiAweDA3
QzApID4+IDMpIHwgKChyZ2JhICYgMHgwN0MwKSA+PiA4KSk7Ci0gICAgICAgICAgICAgICAgZGVz
dFs0ICogeCArIDJdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oKChyZ2JhICYgMHgwMDNFKSA8PCAy
KSB8ICgocmdiYSAmIDB4MDAzRSkgPj4gMykpOwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHgg
KyAzXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KChyZ2JhICYgMHgwMDAxKSA/IDB4RkYgOiAwKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBMb2FkQkdSNUExVG9C
R1JBOChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNo
LCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90
ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gp
Ci17Ci0gICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQotICAgIHsKLSAgICAg
ICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKLSAgICAgICAgewotICAgICAg
ICAgICAgY29uc3QgdWludDE2X3QgKnNvdXJjZSA9IE9mZnNldERhdGFQb2ludGVyPHVpbnQxNl90
PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKLSAgICAgICAg
ICAgIHVpbnQ4X3QgKmRlc3QgPSBPZmZzZXREYXRhUG9pbnRlcjx1aW50OF90PihvdXRwdXQsIHks
IHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIGZvciAo
c2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICB1aW50MTZfdCBiZ3JhID0gc291cmNlW3hdOwotICAgICAgICAgICAgICAgIGRlc3RbNCAq
IHggKyAwXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCgoYmdyYSAmIDB4RjgwMCkgPj4gOCkgfCAo
KGJncmEgJiAweEY4MDApID4+IDEzKSk7Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDFd
ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oKChiZ3JhICYgMHgwN0MwKSA+PiAzKSB8ICgoYmdyYSAm
IDB4MDdDMCkgPj4gOCkpOwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KCgoYmdyYSAmIDB4MDAzRSkgPDwgMikgfCAoKGJncmEgJiAweDAwM0Up
ID4+IDMpKTsKLSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10gPSBzdGF0aWNfY2FzdDx1
aW50OF90PigoYmdyYSAmIDB4MDAwMSkgPyAweEZGIDogMCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgTG9hZFJHQjEwQTJUb1JHQkE4KHNpemVfdCB3aWR0aCwg
c2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0
aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qg
b3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQotewotICAgIGZvciAoc2l6
ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IHkg
PSAwOyB5IDwgaGVpZ2h0OyB5KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IHVpbnQz
Ml90ICpzb3VyY2UgPSBPZmZzZXREYXRhUG9pbnRlcjx1aW50MzJfdD4oaW5wdXQsIHksIHosIGlu
cHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICB1aW50OF90ICpkZXN0
ID0gT2Zmc2V0RGF0YVBvaW50ZXI8dWludDhfdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRj
aCwgb3V0cHV0RGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8
IHdpZHRoOyB4KyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdWludDMyX3Qgcmdi
YSA9IHNvdXJjZVt4XTsKLSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSBzdGF0aWNf
Y2FzdDx1aW50OF90PigocmdiYSAmIDB4MDAwMDAzRkYpID4+ICAyKTsKLSAgICAgICAgICAgICAg
ICBkZXN0WzQgKiB4ICsgMV0gPSBzdGF0aWNfY2FzdDx1aW50OF90PigocmdiYSAmIDB4MDAwRkZD
MDApID4+IDEyKTsKLSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMl0gPSBzdGF0aWNfY2Fz
dDx1aW50OF90PigocmdiYSAmIDB4M0ZGMDAwMDApID4+IDIyKTsKLSAgICAgICAgICAgICAgICBk
ZXN0WzQgKiB4ICsgM10gPSBzdGF0aWNfY2FzdDx1aW50OF90PigoKHJnYmEgJiAweEMwMDAwMDAw
KSA+PiAzMCkgKiAweDU1KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQot
dm9pZCBMb2FkUkdCMTZGVG9SR0I5RTUoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXpl
X3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwg
c2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAg
ICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6
ZV90IG91dHB1dERlcHRoUGl0Y2gpCi17Ci0gICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0
aDsgeisrKQotICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkr
KykKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgdWludDE2X3QgKnNvdXJjZSA9IE9mZnNl
dERhdGFQb2ludGVyPHVpbnQxNl90PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXRE
ZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIHVpbnQzMl90ICpkZXN0ID0gT2Zmc2V0RGF0YVBvaW50
ZXI8dWludDMyX3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0
Y2gpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGRlc3RbeF0gPSBnbDo6Y29udmVydFJHQkZsb2F0
c1RvOTk5RTUoZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoc291cmNlW3ggKiAzICsgMF0pLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OmZsb2F0
MTZUb0Zsb2F0MzIoc291cmNlW3ggKiAzICsgMV0pLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoc291cmNl
W3ggKiAzICsgMl0pKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9p
ZCBMb2FkUkdCMzJGVG9SR0I5RTUoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3Qg
ZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6
ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAg
ICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90
IG91dHB1dERlcHRoUGl0Y2gpCi17Ci0gICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsg
eisrKQotICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykK
LSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgZmxvYXQgKnNvdXJjZSA9IE9mZnNldERhdGFQ
b2ludGVyPGZsb2F0PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNo
KTsKLSAgICAgICAgICAgIHVpbnQzMl90ICpkZXN0ID0gT2Zmc2V0RGF0YVBvaW50ZXI8dWludDMy
X3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOwotICAg
ICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGRlc3RbeF0gPSBnbDo6Y29udmVydFJHQkZsb2F0c1RvOTk5RTUo
c291cmNlW3ggKiAzICsgMF0sIHNvdXJjZVt4ICogMyArIDFdLCBzb3VyY2VbeCAqIDMgKyAyXSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgTG9hZFJHQjE2RlRv
UkcxMUIxMEYoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRS
b3dQaXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXRE
ZXB0aFBpdGNoKQotewotICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKLSAg
ICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnN0IHVpbnQxNl90ICpzb3VyY2UgPSBPZmZzZXREYXRhUG9pbnRl
cjx1aW50MTZfdD4oaW5wdXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7
Ci0gICAgICAgICAgICB1aW50MzJfdCAqZGVzdCA9IE9mZnNldERhdGFQb2ludGVyPHVpbnQzMl90
PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKLSAgICAg
ICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBkZXN0W3hdID0gKGdsOjpmbG9hdDMyVG9GbG9hdDExKGdsOjpmbG9h
dDE2VG9GbG9hdDMyKHNvdXJjZVt4ICogMyArIDBdKSkgPDwgIDApIHwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGdsOjpmbG9hdDMyVG9GbG9hdDExKGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNv
dXJjZVt4ICogMyArIDFdKSkgPDwgMTEpIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGds
OjpmbG9hdDMyVG9GbG9hdDEwKGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNvdXJjZVt4ICogMyArIDJd
KSkgPDwgMjIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIExv
YWRSR0IzMkZUb1JHMTFCMTBGKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRl
cHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6
ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXpl
X3Qgb3V0cHV0RGVwdGhQaXRjaCkKLXsKLSAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRo
OyB6KyspCi0gICAgewotICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsr
KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBmbG9hdCAqc291cmNlID0gT2Zmc2V0RGF0
YVBvaW50ZXI8ZmxvYXQ+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0
Y2gpOwotICAgICAgICAgICAgdWludDMyX3QgKmRlc3QgPSBPZmZzZXREYXRhUG9pbnRlcjx1aW50
MzJfdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7Ci0g
ICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgZGVzdFt4XSA9IChnbDo6ZmxvYXQzMlRvRmxvYXQxMShzb3Vy
Y2VbeCAqIDMgKyAwXSkgPDwgIDApIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGdsOjpm
bG9hdDMyVG9GbG9hdDExKHNvdXJjZVt4ICogMyArIDFdKSA8PCAxMSkgfAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAoZ2w6OmZsb2F0MzJUb0Zsb2F0MTAoc291cmNlW3ggKiAzICsgMl0pIDw8
IDIyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBMb2FkRzhS
MjRUb1IyNEc4KHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQ
aXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICB1aW50
OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0
Y2gpCi17Ci0gICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQotICAgIHsKLSAg
ICAgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKLSAgICAgICAgewotICAg
ICAgICAgICAgY29uc3QgdWludDMyX3QgKnNvdXJjZSA9IE9mZnNldERhdGFQb2ludGVyPHVpbnQz
Ml90PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKLSAgICAg
ICAgICAgIHVpbnQzMl90ICpkZXN0ID0gT2Zmc2V0RGF0YVBvaW50ZXI8dWludDMyX3Q+KG91dHB1
dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAg
Zm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIHVpbnQzMl90IGQgPSBzb3VyY2VbeF0gPj4gODsKLSAgICAgICAgICAgICAgICB1
aW50OF90ICBzID0gc291cmNlW3hdICYgMHhGRjsKLSAgICAgICAgICAgICAgICBkZXN0W3hdID0g
ZCB8IChzIDw8IDI0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9p
ZCBMb2FkUkdCMzJGVG9SR0JBMTZGKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90
IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBz
aXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6
ZV90IG91dHB1dERlcHRoUGl0Y2gpCi17Ci0gICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0
aDsgeisrKQotICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkr
KykKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgZmxvYXQgKnNvdXJjZSA9IE9mZnNldERh
dGFQb2ludGVyPGZsb2F0PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBp
dGNoKTsKLSAgICAgICAgICAgIHVpbnQxNl90ICpkZXN0ID0gT2Zmc2V0RGF0YVBvaW50ZXI8dWlu
dDE2X3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOwot
ICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGRlc3RbeCAqIDQgKyAwXSA9IGdsOjpmbG9hdDMyVG9GbG9h
dDE2KHNvdXJjZVt4ICogMyArIDBdKTsKLSAgICAgICAgICAgICAgICBkZXN0W3ggKiA0ICsgMV0g
PSBnbDo6ZmxvYXQzMlRvRmxvYXQxNihzb3VyY2VbeCAqIDMgKyAxXSk7Ci0gICAgICAgICAgICAg
ICAgZGVzdFt4ICogNCArIDJdID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTYoc291cmNlW3ggKiAzICsg
Ml0pOwotICAgICAgICAgICAgICAgIGRlc3RbeCAqIDQgKyAzXSA9IGdsOjpGbG9hdDE2T25lOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIExvYWRSMzJUb1IxNihz
aXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlu
cHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90
IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKLXsKLSAgICBmb3IgKHNp
emVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCi0gICAgewotICAgICAgICBmb3IgKHNpemVfdCB5
ID0gMDsgeSA8IGhlaWdodDsgeSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCB1aW50
MzJfdCAqc291cmNlID0gT2Zmc2V0RGF0YVBvaW50ZXI8dWludDMyX3Q+KGlucHV0LCB5LCB6LCBp
bnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgdWludDE2X3QgKmRl
c3QgPSBPZmZzZXREYXRhUG9pbnRlcjx1aW50MTZfdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQ
aXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsg
eCA8IHdpZHRoOyB4KyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZGVzdFt4XSA9
IHNvdXJjZVt4XSA+PiAxNjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQot
dm9pZCBMb2FkUjMyVG9SMjRHOChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBk
ZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBp
bnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAg
ICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERl
cHRoUGl0Y2gpCi17Ci0gICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQotICAg
IHsKLSAgICAgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKLSAgICAgICAg
ewotICAgICAgICAgICAgY29uc3QgdWludDMyX3QgKnNvdXJjZSA9IE9mZnNldERhdGFQb2ludGVy
PHVpbnQzMl90PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsK
LSAgICAgICAgICAgIHVpbnQzMl90ICpkZXN0ID0gT2Zmc2V0RGF0YVBvaW50ZXI8dWludDMyX3Q+
KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOwotCi0gICAg
ICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgZGVzdFt4XSA9IHNvdXJjZVt4XSA+PiA4OwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgfQotfQotCi19CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2xvYWRpbWFnZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvbG9hZGltYWdl
LmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvbG9hZGltYWdlLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMDEgKzAs
MCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxMy0yMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gbG9hZGltYWdlLmg6IERlZmluZXMgaW1hZ2Ug
bG9hZGluZyBmdW5jdGlvbnMKLQotI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfTE9BRElN
QUdFX0hfCi0jZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9MT0FESU1BR0VfSF8KLQotI2lu
Y2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMuaCIKLQotI2luY2x1ZGUgPHN0ZGludC5oPgotCi1u
YW1lc3BhY2UgcngKLXsKLQotdm9pZCBMb2FkQThUb1JHQkE4KHNpemVfdCB3aWR0aCwgc2l6ZV90
IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qg
KmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAg
ICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwg
c2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOwotCi12b2lkIExvYWRBOFRvQkdSQTgoc2l6ZV90IHdp
ZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgY29u
c3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0
aFBpdGNoLAotICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1
dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7Ci0KLXZvaWQgTG9hZEE4VG9CR1JB
OF9TU0UyKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1Bp
dGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBp
dGNoKTsKLQotdm9pZCBMb2FkQTMyRlRvUkdCQTMyRihzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWln
aHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAq
aW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAg
ICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRj
aCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOwotCi12b2lkIExvYWRBMTZGVG9SR0JBMTZGKHNp
emVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVf
dCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1
dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7Ci0KLXZv
aWQgTG9hZEw4VG9SR0JBOChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0
aCwKLSAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0
Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgdWlu
dDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBp
dGNoKTsKLQotdm9pZCBMb2FkTDhUb0JHUkE4KHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwg
c2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBz
aXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAg
ICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91
dHB1dERlcHRoUGl0Y2gpOwotCi12b2lkIExvYWRMMzJGVG9SR0JBMzJGKHNpemVfdCB3aWR0aCwg
c2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRo
UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91
dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7Ci0KLXZvaWQgTG9hZEwxNkZU
b1JHQkExNkYoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQ
aXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBp
dGNoKTsKLQotdm9pZCBMb2FkTEE4VG9SR0JBOChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQs
IHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQs
IHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAg
ICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90
IG91dHB1dERlcHRoUGl0Y2gpOwotCi12b2lkIExvYWRMQThUb0JHUkE4KHNpemVfdCB3aWR0aCwg
c2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICBjb25zdCB1
aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0
Y2gsCi0gICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJv
d1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7Ci0KLXZvaWQgTG9hZExBMzJGVG9SR0JB
MzJGKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNo
LCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgdWludDhf
dCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNo
KTsKLQotdm9pZCBMb2FkTEExNkZUb1JHQkExNkYoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0
LCBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpp
bnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAg
ICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRj
aCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOwotCi12b2lkIExvYWRSR0I4VG9CR1JYOChzaXpl
X3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlu
cHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6
ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7Ci0KLXZvaWQgTG9h
ZFJHOFRvQkdSWDgoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0g
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQ
aXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgdWludDhf
dCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNo
KTsKLQotdm9pZCBMb2FkUjhUb0JHUlg4KHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6
ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXpl
X3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAg
ICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1
dERlcHRoUGl0Y2gpOwotCi12b2lkIExvYWRSNUc2QjVUb0JHUkE4KHNpemVfdCB3aWR0aCwgc2l6
ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0
Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1
dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7Ci0KLXZvaWQgTG9hZFI1RzZCNVRv
UkdCQTgoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRj
aCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgdWludDhf
dCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNo
KTsKLQotdm9pZCBMb2FkUkdCQThUb0JHUkE4X1NTRTIoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVp
Z2h0LCBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50
OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRw
dXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOwotCi12b2lkIExvYWRSR0JBOFRv
QkdSQTgoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNo
LCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qg
Km91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7
Ci0KLXZvaWQgTG9hZFJHQkE0VG9BUkdCNChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNp
emVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwg
c2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAg
ICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVf
dCBvdXRwdXREZXB0aFBpdGNoKTsKLQotdm9pZCBMb2FkUkdCQTRUb0JHUkE4KHNpemVfdCB3aWR0
aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlucHV0RGVw
dGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBv
dXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOwotCi12b2lkIExvYWRSR0JB
NFRvUkdCQTgoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1Bp
dGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4
X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRj
aCk7Ci0KLXZvaWQgTG9hZEJHUkE0VG9CR1JBOChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQs
IHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1
dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAg
ICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNp
emVfdCBvdXRwdXREZXB0aFBpdGNoKTsKLQotdm9pZCBMb2FkUkdCNUExVG9BMVJHQjUoc2l6ZV90
IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBp
bnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQs
IHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOwotCi12b2lk
IExvYWRSR0I1QTFUb0JHUkE4KHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRl
cHRoLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90
IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0
cHV0RGVwdGhQaXRjaCk7Ci0KLXZvaWQgTG9hZFJHQjVBMVRvUkdCQTgoc2l6ZV90IHdpZHRoLCBz
aXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQ
aXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0
cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKLQotdm9pZCBMb2FkQkdSNUEx
VG9CR1JBOChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1Bp
dGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICB1aW50
OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0
Y2gpOwotCi12b2lkIExvYWRSR0IxMEEyVG9SR0JBOChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWln
aHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qg
KmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1Bp
dGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7Ci0KLXZvaWQgTG9hZFJHQjE2RlRvUkdCOUU1
KHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gs
IHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4
X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRj
aCk7Ci0KLXZvaWQgTG9hZFJHQjMyRlRvUkdCOUU1KHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdo
dCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAq
aW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0
Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKLQotdm9pZCBMb2FkUkdCMTZGVG9SRzExQjEw
RihzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNo
LCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0
Y2gpOwotCi12b2lkIExvYWRSR0IzMkZUb1JHMTFCMTBGKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhl
aWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50
OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1
dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7Ci0KLXZvaWQgTG9hZEc4UjI0VG9S
MjRHOChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gs
IHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAq
b3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIHR5cGUsIHNpemVfdCBjb21wb25lbnRDb3VudD4KLWlubGlu
ZSB2b2lkIExvYWRUb05hdGl2ZShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBk
ZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6
ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVf
dCBvdXRwdXREZXB0aFBpdGNoKTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIHR5cGUsIHVpbnQzMl90
IGZvdXJ0aENvbXBvbmVudEJpdHM+Ci1pbmxpbmUgdm9pZCBMb2FkVG9OYXRpdmUzVG80KHNpemVf
dCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNp
emVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4
X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRj
aCk7Ci0KLXRlbXBsYXRlIDxzaXplX3QgY29tcG9uZW50Q291bnQ+Ci1pbmxpbmUgdm9pZCBMb2Fk
MzJGVG8xNkYoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJv
d1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVw
dGhQaXRjaCk7Ci0KLXZvaWQgTG9hZFJHQjMyRlRvUkdCQTE2RihzaXplX3Qgd2lkdGgsIHNpemVf
dCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0
Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0
cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKLQotdGVtcGxhdGUgPHNpemVf
dCBibG9ja1dpZHRoLCBzaXplX3QgYmxvY2tIZWlnaHQsIHNpemVfdCBibG9ja1NpemU+Ci1pbmxp
bmUgdm9pZCBMb2FkQ29tcHJlc3NlZFRvTmF0aXZlKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdo
dCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRo
UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1
dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7Ci0KLXZv
aWQgTG9hZFIzMlRvUjE2KHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRo
LAotICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJv
d1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgdWludDhf
dCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNo
KTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIHR5cGUsIHVpbnQzMl90IGZpcnN0Qml0cywgdWludDMy
X3Qgc2Vjb25kQml0cywgdWludDMyX3QgdGhpcmRCaXRzLCB1aW50MzJfdCBmb3VydGhCaXRzPgot
aW5saW5lIHZvaWQgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhKHNpemVfdCB3aWR0aCwgc2l6ZV90
IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0
RGVwdGhQaXRjaCk7Ci0KLXZvaWQgTG9hZFIzMlRvUjI0Rzgoc2l6ZV90IHdpZHRoLCBzaXplX3Qg
aGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qg
KmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAg
ICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gs
IHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxp
bmUgVCAqT2Zmc2V0RGF0YVBvaW50ZXIodWludDhfdCAqZGF0YSwgc2l6ZV90IHksIHNpemVfdCB6
LCBzaXplX3Qgcm93UGl0Y2gsIHNpemVfdCBkZXB0aFBpdGNoKTsKLQotdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1pbmxpbmUgY29uc3QgVCAqT2Zmc2V0RGF0YVBvaW50ZXIoY29uc3QgdWludDhfdCAq
ZGF0YSwgc2l6ZV90IHksIHNpemVfdCB6LCBzaXplX3Qgcm93UGl0Y2gsIHNpemVfdCBkZXB0aFBp
dGNoKTsKLQotfQotCi0jaW5jbHVkZSAibG9hZGltYWdlLmlubCIKLQotI2VuZGlmIC8vIExJQkFO
R0xFX1JFTkRFUkVSX0QzRF9MT0FESU1BR0VfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvbG9hZGltYWdlLmlubAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2xvYWRp
bWFnZS5pbmwJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvbG9hZGltYWdlLmlubAkobm9uZXhpc3RlbnQpCkBAIC0x
LDE1NiArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDE0LTIwMTUgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAiY29tbW9uL21hdGh1
dGlsLmgiCi0KLW5hbWVzcGFjZSByeAotewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGlu
ZSBUICpPZmZzZXREYXRhUG9pbnRlcih1aW50OF90ICpkYXRhLCBzaXplX3QgeSwgc2l6ZV90IHos
IHNpemVfdCByb3dQaXRjaCwgc2l6ZV90IGRlcHRoUGl0Y2gpCi17Ci0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8VCo+KGRhdGEgKyAoeSAqIHJvd1BpdGNoKSArICh6ICogZGVwdGhQaXRjaCkp
OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBjb25zdCBUICpPZmZzZXREYXRh
UG9pbnRlcihjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3QgeSwgc2l6ZV90IHosIHNpemVfdCBy
b3dQaXRjaCwgc2l6ZV90IGRlcHRoUGl0Y2gpCi17Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgVCo+KGRhdGEgKyAoeSAqIHJvd1BpdGNoKSArICh6ICogZGVwdGhQaXRjaCkpOwot
fQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgdHlwZSwgc2l6ZV90IGNvbXBvbmVudENvdW50PgotaW5s
aW5lIHZvaWQgTG9hZFRvTmF0aXZlKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90
IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBz
aXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6
ZV90IG91dHB1dERlcHRoUGl0Y2gpCi17Ci0gICAgY29uc3Qgc2l6ZV90IHJvd1NpemUgPSB3aWR0
aCAqIHNpemVvZih0eXBlKSAqIGNvbXBvbmVudENvdW50OwotICAgIGNvbnN0IHNpemVfdCBsYXll
clNpemUgPSByb3dTaXplICogaGVpZ2h0OwotICAgIGNvbnN0IHNpemVfdCBpbWFnZVNpemUgPSBs
YXllclNpemUgKiBkZXB0aDsKLQotICAgIGlmIChsYXllclNpemUgPT0gaW5wdXREZXB0aFBpdGNo
ICYmIGxheWVyU2l6ZSA9PSBvdXRwdXREZXB0aFBpdGNoKQotICAgIHsKLSAgICAgICAgQVNTRVJU
KHJvd1NpemUgPT0gaW5wdXRSb3dQaXRjaCAmJiByb3dTaXplID09IG91dHB1dFJvd1BpdGNoKTsK
LSAgICAgICAgbWVtY3B5KG91dHB1dCwgaW5wdXQsIGltYWdlU2l6ZSk7Ci0gICAgfQotICAgIGVs
c2UgaWYgKHJvd1NpemUgPT0gaW5wdXRSb3dQaXRjaCAmJiByb3dTaXplID09IG91dHB1dFJvd1Bp
dGNoKQotICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCB0eXBlICpzb3VyY2UgPSBPZmZzZXREYXRhUG9p
bnRlcjx0eXBlPihpbnB1dCwgMCwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsK
LSAgICAgICAgICAgIHR5cGUgKmRlc3QgPSBPZmZzZXREYXRhUG9pbnRlcjx0eXBlPihvdXRwdXQs
IDAsIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKLQotICAgICAgICAgICAg
bWVtY3B5KGRlc3QsIHNvdXJjZSwgbGF5ZXJTaXplKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBl
bHNlCi0gICAgewotICAgICAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5Kysp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29uc3QgdHlwZSAqc291cmNlID0gT2Zm
c2V0RGF0YVBvaW50ZXI8dHlwZT4oaW5wdXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVw
dGhQaXRjaCk7Ci0gICAgICAgICAgICAgICAgdHlwZSAqZGVzdCA9IE9mZnNldERhdGFQb2ludGVy
PHR5cGU+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOwot
ICAgICAgICAgICAgICAgIG1lbWNweShkZXN0LCBzb3VyY2UsIHdpZHRoICogc2l6ZW9mKHR5cGUp
ICogY29tcG9uZW50Q291bnQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgdHlwZSwgdWludDMyX3QgZm91cnRoQ29tcG9uZW50Qml0cz4K
LWlubGluZSB2b2lkIExvYWRUb05hdGl2ZTNUbzQoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0
LCBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4
X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0
cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQotewotICAgIGNvbnN0IHR5cGUg
Zm91cnRoVmFsdWUgPSBnbDo6Yml0Q2FzdDx0eXBlPihmb3VydGhDb21wb25lbnRCaXRzKTsKLQot
ICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKLSAgICB7Ci0gICAgICAgIGZv
ciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnN0IHR5cGUgKnNvdXJjZSA9IE9mZnNldERhdGFQb2ludGVyPHR5cGU+KGlucHV0LCB5LCB6
LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgdHlwZSAqZGVz
dCA9IE9mZnNldERhdGFQb2ludGVyPHR5cGU+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gs
IG91dHB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3
aWR0aDsgeCsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGRlc3RbeCAqIDQgKyAw
XSA9IHNvdXJjZVt4ICogMyArIDBdOwotICAgICAgICAgICAgICAgIGRlc3RbeCAqIDQgKyAxXSA9
IHNvdXJjZVt4ICogMyArIDFdOwotICAgICAgICAgICAgICAgIGRlc3RbeCAqIDQgKyAyXSA9IHNv
dXJjZVt4ICogMyArIDJdOwotICAgICAgICAgICAgICAgIGRlc3RbeCAqIDQgKyAzXSA9IGZvdXJ0
aFZhbHVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi10ZW1wbGF0ZSA8
c2l6ZV90IGNvbXBvbmVudENvdW50PgotaW5saW5lIHZvaWQgTG9hZDMyRlRvMTZGKHNpemVfdCB3
aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlu
cHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQs
IHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCi17Ci0gICAg
Y29uc3Qgc2l6ZV90IGVsZW1lbnRXaWR0aCA9IGNvbXBvbmVudENvdW50ICogd2lkdGg7Ci0KLSAg
ICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCi0gICAgewotICAgICAgICBmb3Ig
KHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBj
b25zdCBmbG9hdCAqc291cmNlID0gT2Zmc2V0RGF0YVBvaW50ZXI8ZmxvYXQ+KGlucHV0LCB5LCB6
LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgdWludDE2X3Qg
KmRlc3QgPSBPZmZzZXREYXRhUG9pbnRlcjx1aW50MTZfdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRS
b3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7Ci0KLSAgICAgICAgICAgIGZvciAoc2l6ZV90IHgg
PSAwOyB4IDwgZWxlbWVudFdpZHRoOyB4KyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgZGVzdFt4XSA9IGdsOjpmbG9hdDMyVG9GbG9hdDE2KHNvdXJjZVt4XSk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXRlbXBsYXRlIDxzaXplX3QgYmxvY2tXaWR0aCwg
c2l6ZV90IGJsb2NrSGVpZ2h0LCBzaXplX3QgYmxvY2tTaXplPgotaW5saW5lIHZvaWQgTG9hZENv
bXByZXNzZWRUb05hdGl2ZShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5w
dXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRw
dXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCi17Ci0gICAgY29uc3Qgc2l6ZV90
IGNvbHVtbnMgPSAod2lkdGggKyAoYmxvY2tXaWR0aCAtIDEpKSAvIGJsb2NrV2lkdGg7Ci0gICAg
Y29uc3Qgc2l6ZV90IHJvd3MgPSAoaGVpZ2h0ICsgKGJsb2NrSGVpZ2h0IC0gMSkpIC8gYmxvY2tI
ZWlnaHQ7Ci0KLSAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyArK3opCi0gICAgewot
ICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IHJvd3M7ICsreSkKLSAgICAgICAgewotICAg
ICAgICAgICAgY29uc3QgdWludDhfdCAqc291cmNlID0gT2Zmc2V0RGF0YVBvaW50ZXI8dWludDhf
dD4oaW5wdXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7Ci0gICAgICAg
ICAgICB1aW50OF90ICpkZXN0ID0gT2Zmc2V0RGF0YVBvaW50ZXI8dWludDhfdD4ob3V0cHV0LCB5
LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICBtZW1j
cHkoZGVzdCwgc291cmNlLCBjb2x1bW5zICogYmxvY2tTaXplKTsKLSAgICAgICAgfQotICAgIH0K
LX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIHR5cGUsIHVpbnQzMl90IGZpcnN0Qml0cywgdWludDMy
X3Qgc2Vjb25kQml0cywgdWludDMyX3QgdGhpcmRCaXRzLCB1aW50MzJfdCBmb3VydGhCaXRzPgot
aW5saW5lIHZvaWQgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhKHNpemVfdCB3aWR0aCwgc2l6ZV90
IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0
RGVwdGhQaXRjaCkKLXsKLSAgICB0eXBlIHdyaXRlVmFsdWVzWzRdID0KLSAgICB7Ci0gICAgICAg
IGdsOjpiaXRDYXN0PHR5cGU+KGZpcnN0Qml0cyksCi0gICAgICAgIGdsOjpiaXRDYXN0PHR5cGU+
KHNlY29uZEJpdHMpLAotICAgICAgICBnbDo6Yml0Q2FzdDx0eXBlPih0aGlyZEJpdHMpLAotICAg
ICAgICBnbDo6Yml0Q2FzdDx0eXBlPihmb3VydGhCaXRzKSwKLSAgICB9OwotCi0gICAgZm9yIChz
aXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQotICAgIHsKLSAgICAgICAgZm9yIChzaXplX3Qg
eSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZSAqZGVz
dFJvdyA9IE9mZnNldERhdGFQb2ludGVyPHR5cGU+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0
Y2gsIG91dHB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHgg
PCB3aWR0aDsgeCsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGUqIGRlc3RQ
aXhlbCA9IGRlc3RSb3cgKyB4ICogNDsKLQotICAgICAgICAgICAgICAgIC8vIFRoaXMgY291bGQg
cG90ZW50aWFsbHkgYmUgb3B0aW1pemVkIGJ5IGdlbmVyYXRpbmcgYW4gZW50aXJlIHJvdyBvZiBp
bml0aWFsaXphdGlvbgotICAgICAgICAgICAgICAgIC8vIGRhdGEgYW5kIGNvcHlpbmcgcm93IGJ5
IHJvdyBpbnN0ZWFkIG9mIHBpeGVsIGJ5IHBpeGVsLgotICAgICAgICAgICAgICAgIG1lbWNweShk
ZXN0UGl4ZWwsIHdyaXRlVmFsdWVzLCBzaXplb2YodHlwZSkgKiA0KTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KLX0KLQotfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9sb2FkaW1hZ2VTU0UyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2xvYWRp
bWFnZVNTRTIuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2xvYWRpbWFnZVNTRTIuY3BwCShub25leGlzdGVu
dCkKQEAgLTEsMTI1ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNSBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIGxvYWRpbWFnZVNT
RTIuY3BwOiBEZWZpbmVzIGltYWdlIGxvYWRpbmcgZnVuY3Rpb25zLiBJdCdzCi0vLyBpbiBhIHNl
cGFyYXRlZCBmaWxlIGZvciBHQ0MsIHdoaWNoIGNhbiBlbmFibGUgU1NFIHVzYWdlIG9ubHkgcGVy
LWZpbGUsCi0vLyBub3QgZm9yIGNvZGUgYmxvY2tzIHRoYXQgdXNlIFNTRTIgZXhwbGljaXRseS4K
LQotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9sb2FkaW1hZ2UuaCIKLQotI2luY2x1
ZGUgImNvbW1vbi9wbGF0Zm9ybS5oIgotCi0jaWZkZWYgQU5HTEVfVVNFX1NTRQotI2luY2x1ZGUg
PGVtbWludHJpbi5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSByeAotewotCi12b2lkIExvYWRBOFRv
QkdSQThfU1NFMihzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRS
b3dQaXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVw
dGhQaXRjaCkKLXsKLSNpZiBkZWZpbmVkKEFOR0xFX1VTRV9TU0UpCi0gICAgX19tMTI4aSB6ZXJv
V2lkZSA9IF9tbV9zZXR6ZXJvX3NpMTI4KCk7Ci0KLSAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8
IGRlcHRoOyB6KyspCi0gICAgewotICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdo
dDsgeSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCB1aW50OF90ICpzb3VyY2UgPSBP
ZmZzZXREYXRhUG9pbnRlcjx1aW50OF90PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5w
dXREZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIHVpbnQzMl90ICpkZXN0ID0gT2Zmc2V0RGF0YVBv
aW50ZXI8dWludDMyX3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRo
UGl0Y2gpOwotCi0gICAgICAgICAgICBzaXplX3QgeCA9IDA7Ci0KLSAgICAgICAgICAgIC8vIE1h
a2Ugb3V0cHV0IHdyaXRlcyBhbGlnbmVkCi0gICAgICAgICAgICBmb3IgKDsgKChyZWludGVycHJl
dF9jYXN0PGludHB0cl90PigmZGVzdFt4XSkgJiAweEYpICE9IDAgJiYgeCA8IHdpZHRoKTsgeCsr
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGRlc3RbeF0gPSBzdGF0aWNfY2FzdDx1
aW50MzJfdD4oc291cmNlW3hdKSA8PCAyNDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
Zm9yICg7IHggKyA3IDwgd2lkdGg7IHggKz0gOCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBfX20xMjhpIHNvdXJjZURhdGEgPSBfbW1fbG9hZGxfZXBpNjQocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBfX20xMjhpKj4oJnNvdXJjZVt4XSkpOwotICAgICAgICAgICAgICAgIC8vIEludGVy
bGVhdmUgZWFjaCBieXRlIHRvIDE2Yml0LCBtYWtlIHRoZSBsb3dlciBieXRlIHRvIHplcm8KLSAg
ICAgICAgICAgICAgICBzb3VyY2VEYXRhID0gX21tX3VucGFja2xvX2VwaTgoemVyb1dpZGUsIHNv
dXJjZURhdGEpOwotICAgICAgICAgICAgICAgIC8vIEludGVybGVhdmUgZWFjaCAxNmJpdCB0byAz
MmJpdCwgbWFrZSB0aGUgbG93ZXIgMTZiaXQgdG8gemVybwotICAgICAgICAgICAgICAgIF9fbTEy
OGkgbG8gPSBfbW1fdW5wYWNrbG9fZXBpMTYoemVyb1dpZGUsIHNvdXJjZURhdGEpOwotICAgICAg
ICAgICAgICAgIF9fbTEyOGkgaGkgPSBfbW1fdW5wYWNraGlfZXBpMTYoemVyb1dpZGUsIHNvdXJj
ZURhdGEpOwotCi0gICAgICAgICAgICAgICAgX21tX3N0b3JlX3NpMTI4KHJlaW50ZXJwcmV0X2Nh
c3Q8X19tMTI4aSo+KCZkZXN0W3hdKSwgbG8pOwotICAgICAgICAgICAgICAgIF9tbV9zdG9yZV9z
aTEyOChyZWludGVycHJldF9jYXN0PF9fbTEyOGkqPigmZGVzdFt4ICsgNF0pLCBoaSk7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgcmVtYWluZGVyCi0gICAgICAg
ICAgICBmb3IgKDsgeCA8IHdpZHRoOyB4KyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgZGVzdFt4XSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pihzb3VyY2VbeF0pIDw8IDI0OwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotI2Vsc2UKLSAgICAvLyBFbnN1cmUgdGhhdCB0
aGlzIGZ1bmN0aW9uIGlzIHJlcG9ydGVkIGFzIG5vdCBpbXBsZW1lbnRlZCBmb3IgQVJNIGJ1aWxk
cyBiZWNhdXNlCi0gICAgLy8gdGhlIGluc3RydWN0aW9ucyBiZWxvdyBhcmUgbm90IHByZXNlbnQg
Zm9yIHRoYXQgYXJjaGl0ZWN0dXJlLgotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm47
Ci0jZW5kaWYKLX0KLQotdm9pZCBMb2FkUkdCQThUb0JHUkE4X1NTRTIoc2l6ZV90IHdpZHRoLCBz
aXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERl
cHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNp
emVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCi17Ci0jaWYgZGVm
aW5lZChBTkdMRV9VU0VfU1NFKQotICAgIF9fbTEyOGkgYnJNYXNrID0gX21tX3NldDFfZXBpMzIo
MHgwMGZmMDBmZik7Ci0KLSAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCi0g
ICAgewotICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBjb25zdCB1aW50MzJfdCAqc291cmNlID0gT2Zmc2V0RGF0YVBvaW50
ZXI8dWludDMyX3Q+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gp
OwotICAgICAgICAgICAgdWludDMyX3QgKmRlc3QgPSBPZmZzZXREYXRhUG9pbnRlcjx1aW50MzJf
dD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7Ci0KLSAg
ICAgICAgICAgIHNpemVfdCB4ID0gMDsKLQotICAgICAgICAgICAgLy8gTWFrZSBvdXRwdXQgd3Jp
dGVzIGFsaWduZWQKLSAgICAgICAgICAgIGZvciAoOyAoKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRy
X3Q+KCZkZXN0W3hdKSAmIDE1KSAhPSAwKSAmJiB4IDwgd2lkdGg7IHgrKykKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICB1aW50MzJfdCByZ2JhID0gc291cmNlW3hdOwotICAgICAgICAg
ICAgICAgIGRlc3RbeF0gPSAoQU5HTEVfUk9UTChyZ2JhLCAxNikgJiAweDAwZmYwMGZmKSB8IChy
Z2JhICYgMHhmZjAwZmYwMCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZvciAoOyB4
ICsgMyA8IHdpZHRoOyB4ICs9IDQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgX19t
MTI4aSBzb3VyY2VEYXRhID0gX21tX2xvYWR1X3NpMTI4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
X19tMTI4aSo+KCZzb3VyY2VbeF0pKTsKLSAgICAgICAgICAgICAgICAvLyBNYXNrIG91dCBnIGFu
ZCBhLCB3aGljaCBkb24ndCBjaGFuZ2UKLSAgICAgICAgICAgICAgICBfX20xMjhpIGdhQ29tcG9u
ZW50cyA9IF9tbV9hbmRub3Rfc2kxMjgoYnJNYXNrLCBzb3VyY2VEYXRhKTsKLSAgICAgICAgICAg
ICAgICAvLyBNYXNrIG91dCBiIGFuZCByCi0gICAgICAgICAgICAgICAgX19tMTI4aSBickNvbXBv
bmVudHMgPSBfbW1fYW5kX3NpMTI4KHNvdXJjZURhdGEsIGJyTWFzayk7Ci0gICAgICAgICAgICAg
ICAgLy8gU3dhcCBiIGFuZCByCi0gICAgICAgICAgICAgICAgX19tMTI4aSBiclN3YXBwZWQgPSBf
bW1fc2h1ZmZsZWhpX2VwaTE2KF9tbV9zaHVmZmxlbG9fZXBpMTYoYnJDb21wb25lbnRzLCBfTU1f
U0hVRkZMRSgyLCAzLCAwLCAxKSksIF9NTV9TSFVGRkxFKDIsIDMsIDAsIDEpKTsKLSAgICAgICAg
ICAgICAgICBfX20xMjhpIHJlc3VsdCA9IF9tbV9vcl9zaTEyOChnYUNvbXBvbmVudHMsIGJyU3dh
cHBlZCk7Ci0gICAgICAgICAgICAgICAgX21tX3N0b3JlX3NpMTI4KHJlaW50ZXJwcmV0X2Nhc3Q8
X19tMTI4aSo+KCZkZXN0W3hdKSwgcmVzdWx0KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgLy8gUGVyZm9ybSBsZWZ0b3ZlciB3cml0ZXMKLSAgICAgICAgICAgIGZvciAoOyB4IDwgd2lk
dGg7IHgrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB1aW50MzJfdCByZ2JhID0g
c291cmNlW3hdOwotICAgICAgICAgICAgICAgIGRlc3RbeF0gPSAoQU5HTEVfUk9UTChyZ2JhLCAx
NikgJiAweDAwZmYwMGZmKSB8IChyZ2JhICYgMHhmZjAwZmYwMCk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9Ci0jZWxzZQotICAgIC8vIEVuc3VyZSB0aGF0IHRoaXMgZnVuY3Rpb24g
aXMgcmVwb3J0ZWQgYXMgbm90IGltcGxlbWVudGVkIGZvciBBUk0gYnVpbGRzIGJlY2F1c2UKLSAg
ICAvLyB0aGUgaW5zdHJ1Y3Rpb25zIGJlbG93IGFyZSBub3QgcHJlc2VudCBmb3IgdGhhdCBhcmNo
aXRlY3R1cmUuCi0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybjsKLSNlbmRpZgotfQot
Ci19Ci0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvbG9hZGltYWdlX2V0Yy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9sb2FkaW1hZ2VfZXRjLmNwcAkocmV2aXNp
b24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9sb2FkaW1hZ2VfZXRjLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDE1MDQgKzAsMCBA
QAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxMy0yMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gbG9hZGltYWdlX2V0Yy5jcHA6IERlY29kZXMgRVRD
IGFuZCBFQUMgZW5jb2RlZCB0ZXh0dXJlcy4KLQotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2QzZC9sb2FkaW1hZ2VfZXRjLmgiCi0KLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
bG9hZGltYWdlLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2ltYWdlZm9ybWF0
cy5oIgotCi1uYW1lc3BhY2UgcngKLXsKLW5hbWVzcGFjZQotewotLy8gVGFibGUgMy4xNy4yIHNv
cnRlZCBhY2NvcmRpbmcgdG8gdGFibGUgMy4xNy4zCi0vLyBjbGFuZy1mb3JtYXQgb2ZmCi1zdGF0
aWMgY29uc3QgaW50IGludGVuc2l0eU1vZGlmaWVyRGVmYXVsdFtdWzRdID0KLXsKLSAgICB7ICAy
LCAgIDgsICAtMiwgICAtOCB9LAotICAgIHsgIDUsICAxNywgIC01LCAgLTE3IH0sCi0gICAgeyAg
OSwgIDI5LCAgLTksICAtMjkgfSwKLSAgICB7IDEzLCAgNDIsIC0xMywgIC00MiB9LAotICAgIHsg
MTgsICA2MCwgLTE4LCAgLTYwIH0sCi0gICAgeyAyNCwgIDgwLCAtMjQsICAtODAgfSwKLSAgICB7
IDMzLCAxMDYsIC0zMywgLTEwNiB9LAotICAgIHsgNDcsIDE4MywgLTQ3LCAtMTgzIH0sCi19Owot
Ly8gY2xhbmctZm9ybWF0IG9uCi0KLS8vIFRhYmxlIEMuMTIsIGludGVuc2l0eSBtb2RpZmllciBm
b3Igbm9uIG9wYXF1ZSBwdW5jaHRocm91Z2ggYWxwaGEKLS8vIGNsYW5nLWZvcm1hdCBvZmYKLXN0
YXRpYyBjb25zdCBpbnQgaW50ZW5zaXR5TW9kaWZpZXJOb25PcGFxdWVbXVs0XSA9Ci17Ci0gICAg
eyAwLCAgIDgsIDAsICAgLTggfSwKLSAgICB7IDAsICAxNywgMCwgIC0xNyB9LAotICAgIHsgMCwg
IDI5LCAwLCAgLTI5IH0sCi0gICAgeyAwLCAgNDIsIDAsICAtNDIgfSwKLSAgICB7IDAsICA2MCwg
MCwgIC02MCB9LAotICAgIHsgMCwgIDgwLCAwLCAgLTgwIH0sCi0gICAgeyAwLCAxMDYsIDAsIC0x
MDYgfSwKLSAgICB7IDAsIDE4MywgMCwgLTE4MyB9LAotfTsKLS8vIGNsYW5nLWZvcm1hdCBvbgot
Ci1zdHJ1Y3QgRVRDMkJsb2NrCi17Ci0gICAgLy8gRGVjb2RlcyB1bnNpZ25lZCBzaW5nbGUgb3Ig
ZHVhbCBjaGFubmVsIGJsb2NrIHRvIGJ5dGVzCi0gICAgdm9pZCBkZWNvZGVBc1NpbmdsZUNoYW5u
ZWwodWludDhfdCAqZGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVz
dFBpeGVsU3RyaWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXN0
Um93UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1NpZ25lZCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgNCAmJiAoeSArIGop
IDwgaDsgaisrKQotICAgICAgICB7Ci0gICAgICAgICAgICB1aW50OF90ICpyb3cgPSBkZXN0ICsg
KGogKiBkZXN0Um93UGl0Y2gpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA0
ICYmICh4ICsgaSkgPCB3OyBpKyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdWlu
dDhfdCAqcGl4ZWwgPSByb3cgKyAoaSAqIGRlc3RQaXhlbFN0cmlkZSk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGlzU2lnbmVkKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
KnBpeGVsID0gY2xhbXBTQnl0ZShnZXRTaW5nbGVDaGFubmVsKGksIGosIGlzU2lnbmVkKSk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICpwaXhlbCA9IGNsYW1wQnl0ZShnZXRTaW5nbGVDaGFubmVs
KGksIGosIGlzU2lnbmVkKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgLy8gRGVjb2RlcyBSR0IgYmxvY2sgdG8gcmdiYTgKLSAgICB2
b2lkIGRlY29kZUFzUkdCKHVpbnQ4X3QgKmRlc3QsCi0gICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgeCwKLSAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB5LAotICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IHcsCi0gICAgICAgICAgICAgICAgICAgICBzaXplX3QgaCwKLSAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBkZXN0Um93UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICBjb25z
dCB1aW50OF90IGFscGhhVmFsdWVzWzRdWzRdLAotICAgICAgICAgICAgICAgICAgICAgYm9vbCBw
dW5jaFRocm91Z2hBbHBoYSkgY29uc3QKLSAgICB7Ci0gICAgICAgIGJvb2wgb3BhcXVlQml0ICAg
ICAgICAgICAgICAgICAgPSB1LmlkaHQubW9kZS5pZG0uZGlmZmJpdDsKLSAgICAgICAgYm9vbCBu
b25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSA9IHB1bmNoVGhyb3VnaEFscGhhICYmICFvcGFxdWVC
aXQ7Ci0gICAgICAgIC8vIFNlbGVjdCBtb2RlCi0gICAgICAgIGlmICh1LmlkaHQubW9kZS5pZG0u
ZGlmZmJpdCB8fCBwdW5jaFRocm91Z2hBbHBoYSkKLSAgICAgICAgewotICAgICAgICAgICAgY29u
c3QgYXV0byAmYmxvY2sgPSB1LmlkaHQubW9kZS5pZG0uY29sb3JzLmRpZmY7Ci0gICAgICAgICAg
ICBpbnQgciAgICAgICAgICAgICA9IChibG9jay5SICsgYmxvY2suZFIpOwotICAgICAgICAgICAg
aW50IGcgICAgICAgICAgICAgPSAoYmxvY2suRyArIGJsb2NrLmRHKTsKLSAgICAgICAgICAgIGlu
dCBiID0gKGJsb2NrLkIgKyBibG9jay5kQik7Ci0gICAgICAgICAgICBpZiAociA8IDAgfHwgciA+
IDMxKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGRlY29kZVRCbG9jayhkZXN0LCB4
LCB5LCB3LCBoLCBkZXN0Um93UGl0Y2gsIGFscGhhVmFsdWVzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBlbHNlIGlmIChnIDwgMCB8fCBnID4gMzEpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgZGVjb2RlSEJsb2NrKGRlc3QsIHgsIHksIHcsIGgsIGRlc3RSb3dQaXRjaCwg
YWxwaGFWYWx1ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbk9wYXF1ZVB1bmNo
VGhyb3VnaEFscGhhKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGIgPCAw
IHx8IGIgPiAzMSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBkZWNvZGVQbGFuYXJC
bG9jayhkZXN0LCB4LCB5LCB3LCBoLCBkZXN0Um93UGl0Y2gsIGFscGhhVmFsdWVzKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBkZWNvZGVEaWZmZXJlbnRpYWxCbG9jayhkZXN0LCB4LCB5LCB3LCBoLCBkZXN0Um93UGl0Y2gs
IGFscGhhVmFsdWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5v
bk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhhKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
ICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlY29kZUluZGl2aWR1YWxCbG9jayhk
ZXN0LCB4LCB5LCB3LCBoLCBkZXN0Um93UGl0Y2gsIGFscGhhVmFsdWVzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhhKTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIC8vIFRyYW5zY29kZXMgUkdCIGJsb2NrIHRvIEJDMQotICAgIHZv
aWQgdHJhbnNjb2RlQXNCQzEodWludDhfdCAqZGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCB4LAotICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHksCi0gICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgdywKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBo
LAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCBhbHBoYVZhbHVlc1s0XVs0
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHVuY2hUaHJvdWdoQWxwaGEpIGNvbnN0
Ci0gICAgewotICAgICAgICBib29sIG9wYXF1ZUJpdCAgICAgICAgICAgICAgICAgID0gdS5pZGh0
Lm1vZGUuaWRtLmRpZmZiaXQ7Ci0gICAgICAgIGJvb2wgbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxw
aGEgPSBwdW5jaFRocm91Z2hBbHBoYSAmJiAhb3BhcXVlQml0OwotICAgICAgICAvLyBTZWxlY3Qg
bW9kZQotICAgICAgICBpZiAodS5pZGh0Lm1vZGUuaWRtLmRpZmZiaXQgfHwgcHVuY2hUaHJvdWdo
QWxwaGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IGF1dG8gJmJsb2NrID0gdS5pZGh0
Lm1vZGUuaWRtLmNvbG9ycy5kaWZmOwotICAgICAgICAgICAgaW50IHIgICAgICAgICAgICAgPSAo
YmxvY2suUiArIGJsb2NrLmRSKTsKLSAgICAgICAgICAgIGludCBnICAgICAgICAgICAgID0gKGJs
b2NrLkcgKyBibG9jay5kRyk7Ci0gICAgICAgICAgICBpbnQgYiA9IChibG9jay5CICsgYmxvY2su
ZEIpOwotICAgICAgICAgICAgaWYgKHIgPCAwIHx8IHIgPiAzMSkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICB0cmFuc2NvZGVUQmxvY2tUb0JDMShkZXN0LCB4LCB5LCB3LCBoLCBhbHBo
YVZhbHVlcywgbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZWxzZSBpZiAoZyA8IDAgfHwgZyA+IDMxKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIHRyYW5zY29kZUhCbG9ja1RvQkMxKGRlc3QsIHgsIHksIHcsIGgsIGFscGhhVmFs
dWVzLCBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBlbHNlIGlmIChiIDwgMCB8fCBiID4gMzEpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgdHJhbnNjb2RlUGxhbmFyQmxvY2tUb0JDMShkZXN0LCB4LCB5LCB3LCBoLCBhbHBoYVZh
bHVlcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgdHJhbnNjb2RlRGlmZmVyZW50aWFsQmxvY2tUb0JDMShkZXN0LCB4LCB5
LCB3LCBoLCBhbHBoYVZhbHVlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhhKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRyYW5zY29k
ZUluZGl2aWR1YWxCbG9ja1RvQkMxKGRlc3QsIHgsIHksIHcsIGgsIGFscGhhVmFsdWVzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uT3BhcXVlUHVuY2hUaHJv
dWdoQWxwaGEpOwotICAgICAgICB9Ci0gICAgfQotCi0gIHByaXZhdGU6Ci0gICAgdW5pb24KLSAg
ICB7Ci0gICAgICAgIC8vIEluZGl2aWR1YWwsIGRpZmZlcmVudGlhbCwgSCBhbmQgVCBtb2Rlcwot
ICAgICAgICBzdHJ1Y3QKLSAgICAgICAgewotICAgICAgICAgICAgdW5pb24KLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAvLyBJbmRpdmlkdWFsIGFuZCBkaWZmZXJlbnRpYWwgbW9kZXMK
LSAgICAgICAgICAgICAgICBzdHJ1Y3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgIHVuaW9uCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCAgLy8gSW5kaXZpZHVhbCBjb2xvcnMKLSAgICAgICAgICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIFIyIDogNDsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIFIxIDogNDsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEcyIDogNDsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEcxIDogNDsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBjaGFyIEIyIDogNDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyIEIxIDogNDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gaW5kaXY7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgIC8vIERpZmZlcmVudGlhbCBjb2xvcnMK
LSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aWduZWQgY2hhciBkUiA6IDM7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
Y2hhciBSIDogNTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduZWQgY2hhciBkRyA6
IDM7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBHIDogNTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduZWQgY2hhciBkQiA6IDM7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBCIDogNTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZGlmZjsKLSAgICAgICAgICAgICAgICAgICAgfSBjb2xvcnM7Ci0gICAgICAgICAg
ICAgICAgICAgIGJvb2wgZmxpcGJpdCA6IDE7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgZGlm
ZmJpdCA6IDE7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY3cyIDogMzsKLSAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjdzEgOiAzOwotICAgICAgICAgICAgICAg
IH0gaWRtOwotICAgICAgICAgICAgICAgIC8vIFQgbW9kZQotICAgICAgICAgICAgICAgIHN0cnVj
dAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gQnl0ZSAxCi0gICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgVFIxYiA6IDI7Ci0gICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGNoYXIgVGR1bW15QiA6IDE7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGNoYXIgVFIxYSA6IDI7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgVGR1
bW15QSA6IDM7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEJ5dGUgMgotICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBjaGFyIFRCMSA6IDQ7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGNoYXIgVEcxIDogNDsKLSAgICAgICAgICAgICAgICAgICAgLy8gQnl0ZSAzCi0gICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGNoYXIgVEcyIDogNDsKLSAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgY2hhciBUUjIgOiA0OwotICAgICAgICAgICAgICAgICAgICAvLyBCeXRlIDQKLSAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBUZGIgOiAxOwotICAgICAgICAgICAgICAgICAg
ICBib29sIFRmbGlwYml0IDogMTsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBU
ZGEgOiAyOwotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIFRCMiA6IDQ7Ci0gICAg
ICAgICAgICAgICAgfSB0bTsKLSAgICAgICAgICAgICAgICAvLyBIIG1vZGUKLSAgICAgICAgICAg
ICAgICBzdHJ1Y3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEJ5
dGUgMQotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEhHMWEgOiAzOwotICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEhSMSA6IDQ7Ci0gICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGNoYXIgSGR1bW15QSA6IDE7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEJ5dGUg
MgotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEhCMWIgOiAyOwotICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEhkdW1teUMgOiAxOwotICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyIEhCMWEgOiAxOwotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBj
aGFyIEhHMWIgOiAxOwotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEhkdW1teUIg
OiAzOwotICAgICAgICAgICAgICAgICAgICAvLyBCeXRlIDMKLSAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgY2hhciBIRzJhIDogMzsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciBIUjIgOiA0OwotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEhCMWMgOiAxOwot
ICAgICAgICAgICAgICAgICAgICAvLyBCeXRlIDQKLSAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgY2hhciBIZGIgOiAxOwotICAgICAgICAgICAgICAgICAgICBib29sIEhmbGlwYml0IDogMTsK
LSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBIZGEgOiAxOwotICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBjaGFyIEhCMiA6IDQ7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGNoYXIgSEcyYiA6IDE7Ci0gICAgICAgICAgICAgICAgfSBobTsKLSAgICAgICAgICAgIH0g
bW9kZTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWxJbmRleE1TQlsyXTsKLSAgICAg
ICAgICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWxJbmRleExTQlsyXTsKLSAgICAgICAgfSBpZGh0Owot
ICAgICAgICAvLyBwbGFuYXIgbW9kZQotICAgICAgICBzdHJ1Y3QKLSAgICAgICAgewotICAgICAg
ICAgICAgLy8gQnl0ZSAxCi0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEdPMSA6IDE7Ci0gICAg
ICAgICAgICB1bnNpZ25lZCBjaGFyIFJPIDogNjsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIg
UGR1bW15QSA6IDE7Ci0gICAgICAgICAgICAvLyBCeXRlIDIKLSAgICAgICAgICAgIHVuc2lnbmVk
IGNoYXIgQk8xIDogMTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgR08yIDogNjsKLSAgICAg
ICAgICAgIHVuc2lnbmVkIGNoYXIgUGR1bW15QiA6IDE7Ci0gICAgICAgICAgICAvLyBCeXRlIDMK
LSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgQk8zYSA6IDI7Ci0gICAgICAgICAgICB1bnNpZ25l
ZCBjaGFyIFBkdW1teUQgOiAxOwotICAgICAgICAgICAgdW5zaWduZWQgY2hhciBCTzIgOiAyOwot
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciBQZHVtbXlDIDogMzsKLSAgICAgICAgICAgIC8vIEJ5
dGUgNAotICAgICAgICAgICAgdW5zaWduZWQgY2hhciBSSDIgOiAxOwotICAgICAgICAgICAgYm9v
bCBQZmxpcGJpdCA6IDE7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyIFJIMSA6IDU7Ci0gICAg
ICAgICAgICB1bnNpZ25lZCBjaGFyIEJPM2IgOiAxOwotICAgICAgICAgICAgLy8gQnl0ZSA1Ci0g
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEJIYSA6IDE7Ci0gICAgICAgICAgICB1bnNpZ25lZCBj
aGFyIEdIIDogNzsKLSAgICAgICAgICAgIC8vIEJ5dGUgNgotICAgICAgICAgICAgdW5zaWduZWQg
Y2hhciBSVmEgOiAzOwotICAgICAgICAgICAgdW5zaWduZWQgY2hhciBCSGIgOiA1OwotICAgICAg
ICAgICAgLy8gQnl0ZSA3Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEdWYSA6IDU7Ci0gICAg
ICAgICAgICB1bnNpZ25lZCBjaGFyIFJWYiA6IDM7Ci0gICAgICAgICAgICAvLyBCeXRlIDgKLSAg
ICAgICAgICAgIHVuc2lnbmVkIGNoYXIgQlYgOiA2OwotICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciBHVmIgOiAyOwotICAgICAgICB9IHBibGs7Ci0gICAgICAgIC8vIFNpbmdsZSBjaGFubmVsIGJs
b2NrCi0gICAgICAgIHN0cnVjdAotICAgICAgICB7Ci0gICAgICAgICAgICB1bmlvbgotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgdXM7Ci0gICAgICAgICAgICAg
ICAgc2lnbmVkIGNoYXIgczsKLSAgICAgICAgICAgIH0gYmFzZV9jb2Rld29yZDsKLSAgICAgICAg
ICAgIHVuc2lnbmVkIGNoYXIgdGFibGVfaW5kZXggOiA0OwotICAgICAgICAgICAgdW5zaWduZWQg
Y2hhciBtdWx0aXBsaWVyIDogNDsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbWMxIDogMjsK
LSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbWIgOiAzOwotICAgICAgICAgICAgdW5zaWduZWQg
Y2hhciBtYSA6IDM7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG1mMSA6IDE7Ci0gICAgICAg
ICAgICB1bnNpZ25lZCBjaGFyIG1lIDogMzsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbWQg
OiAzOwotICAgICAgICAgICAgdW5zaWduZWQgY2hhciBtYzIgOiAxOwotICAgICAgICAgICAgdW5z
aWduZWQgY2hhciBtaCA6IDM7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG1nIDogMzsKLSAg
ICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbWYyIDogMjsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNo
YXIgbWsxIDogMjsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbWogOiAzOwotICAgICAgICAg
ICAgdW5zaWduZWQgY2hhciBtaSA6IDM7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG1uMSA6
IDE7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG1tIDogMzsKLSAgICAgICAgICAgIHVuc2ln
bmVkIGNoYXIgbWwgOiAzOwotICAgICAgICAgICAgdW5zaWduZWQgY2hhciBtazIgOiAxOwotICAg
ICAgICAgICAgdW5zaWduZWQgY2hhciBtcCA6IDM7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFy
IG1vIDogMzsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbW4yIDogMjsKLSAgICAgICAgfSBz
Y2JsazsKLSAgICB9IHU7Ci0KLSAgICBzdGF0aWMgdW5zaWduZWQgY2hhciBjbGFtcEJ5dGUoaW50
IHZhbHVlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KGdsOjpjbGFtcCh2YWx1ZSwgMCwgMjU1KSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHNpZ25lZCBj
aGFyIGNsYW1wU0J5dGUoaW50IHZhbHVlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PHNpZ25lZCBjaGFyPihnbDo6Y2xhbXAodmFsdWUsIC0xMjgsIDEyNykpOwotICAgIH0KLQot
ICAgIHN0YXRpYyBSOEc4QjhBOCBjcmVhdGVSR0JBKGludCByZWQsIGludCBncmVlbiwgaW50IGJs
dWUsIGludCBhbHBoYSkKLSAgICB7Ci0gICAgICAgIFI4RzhCOEE4IHJnYmE7Ci0gICAgICAgIHJn
YmEuUiA9IGNsYW1wQnl0ZShyZWQpOwotICAgICAgICByZ2JhLkcgPSBjbGFtcEJ5dGUoZ3JlZW4p
OwotICAgICAgICByZ2JhLkIgPSBjbGFtcEJ5dGUoYmx1ZSk7Ci0gICAgICAgIHJnYmEuQSA9IGNs
YW1wQnl0ZShhbHBoYSk7Ci0gICAgICAgIHJldHVybiByZ2JhOwotICAgIH0KLQotICAgIHN0YXRp
YyBSOEc4QjhBOCBjcmVhdGVSR0JBKGludCByZWQsIGludCBncmVlbiwgaW50IGJsdWUpCi0gICAg
ewotICAgICAgICByZXR1cm4gY3JlYXRlUkdCQShyZWQsIGdyZWVuLCBibHVlLCAyNTUpOwotICAg
IH0KLQotICAgIHN0YXRpYyBpbnQgZXh0ZW5kXzR0bzhiaXRzKGludCB4KSB7IHJldHVybiAoeCA8
PCA0KSB8IHg7IH0KLSAgICBzdGF0aWMgaW50IGV4dGVuZF81dG84Yml0cyhpbnQgeCkgeyByZXR1
cm4gKHggPDwgMykgfCAoeCA+PiAyKTsgfQotICAgIHN0YXRpYyBpbnQgZXh0ZW5kXzZ0bzhiaXRz
KGludCB4KSB7IHJldHVybiAoeCA8PCAyKSB8ICh4ID4+IDQpOyB9Ci0gICAgc3RhdGljIGludCBl
eHRlbmRfN3RvOGJpdHMoaW50IHgpIHsgcmV0dXJuICh4IDw8IDEpIHwgKHggPj4gNik7IH0KLQot
ICAgIHZvaWQgZGVjb2RlSW5kaXZpZHVhbEJsb2NrKHVpbnQ4X3QgKmRlc3QsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHcs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlc3RSb3dQaXRjaCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB1aW50OF90IGFscGhhVmFsdWVzWzRdWzRdLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpIGNv
bnN0Ci0gICAgewotICAgICAgICBjb25zdCBhdXRvICZibG9jayA9IHUuaWRodC5tb2RlLmlkbS5j
b2xvcnMuaW5kaXY7Ci0gICAgICAgIGludCByMSAgICAgICAgICAgID0gZXh0ZW5kXzR0bzhiaXRz
KGJsb2NrLlIxKTsKLSAgICAgICAgaW50IGcxICAgICAgICAgICAgPSBleHRlbmRfNHRvOGJpdHMo
YmxvY2suRzEpOwotICAgICAgICBpbnQgYjEgICAgICAgICAgICA9IGV4dGVuZF80dG84Yml0cyhi
bG9jay5CMSk7Ci0gICAgICAgIGludCByMiAgICAgICAgICAgID0gZXh0ZW5kXzR0bzhiaXRzKGJs
b2NrLlIyKTsKLSAgICAgICAgaW50IGcyICAgICAgICAgICAgPSBleHRlbmRfNHRvOGJpdHMoYmxv
Y2suRzIpOwotICAgICAgICBpbnQgYjIgPSBleHRlbmRfNHRvOGJpdHMoYmxvY2suQjIpOwotICAg
ICAgICBkZWNvZGVJbmRpdmlkdWFsT3JEaWZmZXJlbnRpYWxCbG9jayhkZXN0LCB4LCB5LCB3LCBo
LCBkZXN0Um93UGl0Y2gsIHIxLCBnMSwgYjEsIHIyLCBnMiwgYjIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhVmFsdWVzLCBub25PcGFxdWVQdW5jaFRo
cm91Z2hBbHBoYSk7Ci0gICAgfQotCi0gICAgdm9pZCBkZWNvZGVEaWZmZXJlbnRpYWxCbG9jayh1
aW50OF90ICpkZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB3LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgZGVzdFJvd1BpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dWludDhfdCBhbHBoYVZhbHVlc1s0XVs0XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpIGNvbnN0Ci0gICAgewotICAgICAg
ICBjb25zdCBhdXRvICZibG9jayA9IHUuaWRodC5tb2RlLmlkbS5jb2xvcnMuZGlmZjsKLSAgICAg
ICAgaW50IGIxICAgICAgICAgICAgPSBleHRlbmRfNXRvOGJpdHMoYmxvY2suQik7Ci0gICAgICAg
IGludCBnMSAgICAgICAgICAgID0gZXh0ZW5kXzV0bzhiaXRzKGJsb2NrLkcpOwotICAgICAgICBp
bnQgcjEgICAgICAgICAgICA9IGV4dGVuZF81dG84Yml0cyhibG9jay5SKTsKLSAgICAgICAgaW50
IHIyICAgICAgICAgICAgPSBleHRlbmRfNXRvOGJpdHMoYmxvY2suUiArIGJsb2NrLmRSKTsKLSAg
ICAgICAgaW50IGcyICAgICAgICAgICAgPSBleHRlbmRfNXRvOGJpdHMoYmxvY2suRyArIGJsb2Nr
LmRHKTsKLSAgICAgICAgaW50IGIyID0gZXh0ZW5kXzV0bzhiaXRzKGJsb2NrLkIgKyBibG9jay5k
Qik7Ci0gICAgICAgIGRlY29kZUluZGl2aWR1YWxPckRpZmZlcmVudGlhbEJsb2NrKGRlc3QsIHgs
IHksIHcsIGgsIGRlc3RSb3dQaXRjaCwgcjEsIGcxLCBiMSwgcjIsIGcyLCBiMiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFWYWx1ZXMsIG5vbk9wYXF1
ZVB1bmNoVGhyb3VnaEFscGhhKTsKLSAgICB9Ci0KLSAgICB2b2lkIGRlY29kZUluZGl2aWR1YWxP
ckRpZmZlcmVudGlhbEJsb2NrKHVpbnQ4X3QgKmRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB5LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHcsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXN0Um93UGl0Y2gsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcjEsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZzEsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgYjEsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgcjIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgZzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgYjIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB1aW50OF90IGFscGhhVmFsdWVzWzRdWzRdLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBub25PcGFxdWVQdW5jaFRocm91
Z2hBbHBoYSkgY29uc3QKLSAgICB7Ci0gICAgICAgIGNvbnN0IGF1dG8gaW50ZW5zaXR5TW9kaWZp
ZXIgPQotICAgICAgICAgICAgbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEgPyBpbnRlbnNpdHlN
b2RpZmllck5vbk9wYXF1ZSA6IGludGVuc2l0eU1vZGlmaWVyRGVmYXVsdDsKLQotICAgICAgICBS
OEc4QjhBOCBzdWJibG9ja0NvbG9yczBbNF07Ci0gICAgICAgIFI4RzhCOEE4IHN1YmJsb2NrQ29s
b3JzMVs0XTsKLSAgICAgICAgZm9yIChzaXplX3QgbW9kaWZpZXJJZHggPSAwOyBtb2RpZmllcklk
eCA8IDQ7IG1vZGlmaWVySWR4KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IGludCBp
MSAgICAgICAgICAgICAgICAgPSBpbnRlbnNpdHlNb2RpZmllclt1LmlkaHQubW9kZS5pZG0uY3cx
XVttb2RpZmllcklkeF07Ci0gICAgICAgICAgICBzdWJibG9ja0NvbG9yczBbbW9kaWZpZXJJZHhd
ID0gY3JlYXRlUkdCQShyMSArIGkxLCBnMSArIGkxLCBiMSArIGkxKTsKLQotICAgICAgICAgICAg
Y29uc3QgaW50IGkyICAgICAgICAgICAgICAgICA9IGludGVuc2l0eU1vZGlmaWVyW3UuaWRodC5t
b2RlLmlkbS5jdzJdW21vZGlmaWVySWR4XTsKLSAgICAgICAgICAgIHN1YmJsb2NrQ29sb3JzMVtt
b2RpZmllcklkeF0gPSBjcmVhdGVSR0JBKHIyICsgaTIsIGcyICsgaTIsIGIyICsgaTIpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKHUuaWRodC5tb2RlLmlkbS5mbGlwYml0KQotICAgICAgICB7
Ci0gICAgICAgICAgICB1aW50OF90ICpjdXJQaXhlbCA9IGRlc3Q7Ci0gICAgICAgICAgICBmb3Ig
KHNpemVfdCBqID0gMDsgaiA8IDIgJiYgKHkgKyBqKSA8IGg7IGorKykKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBSOEc4QjhBOCAqcm93ID0gcmVpbnRlcnByZXRfY2FzdDxSOEc4QjhB
OCAqPihjdXJQaXhlbCk7Ci0gICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA0
ICYmICh4ICsgaSkgPCB3OyBpKyspCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICByb3dbaV0gICA9IHN1YmJsb2NrQ29sb3JzMFtnZXRJbmRleChpLCBqKV07Ci0gICAgICAg
ICAgICAgICAgICAgIHJvd1tpXS5BID0gYWxwaGFWYWx1ZXNbal1baV07Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGN1clBpeGVsICs9IGRlc3RSb3dQaXRjaDsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAyOyBqIDwgNCAmJiAoeSArIGopIDwg
aDsgaisrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFI4RzhCOEE4ICpyb3cgPSBy
ZWludGVycHJldF9jYXN0PFI4RzhCOEE4ICo+KGN1clBpeGVsKTsKLSAgICAgICAgICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IDQgJiYgKHggKyBpKSA8IHc7IGkrKykKLSAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJvd1tpXSAgID0gc3ViYmxvY2tDb2xvcnMxW2dl
dEluZGV4KGksIGopXTsKLSAgICAgICAgICAgICAgICAgICAgcm93W2ldLkEgPSBhbHBoYVZhbHVl
c1tqXVtpXTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY3VyUGl4ZWwgKz0g
ZGVzdFJvd1BpdGNoOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgewotICAgICAgICAgICAgdWludDhfdCAqY3VyUGl4ZWwgPSBkZXN0OwotICAgICAgICAg
ICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCA0ICYmICh5ICsgaikgPCBoOyBqKyspCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgUjhHOEI4QTggKnJvdyA9IHJlaW50ZXJwcmV0X2Nhc3Q8
UjhHOEI4QTggKj4oY3VyUGl4ZWwpOwotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgMiAmJiAoeCArIGkpIDwgdzsgaSsrKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgcm93W2ldICAgPSBzdWJibG9ja0NvbG9yczBbZ2V0SW5kZXgoaSwgaildOwot
ICAgICAgICAgICAgICAgICAgICByb3dbaV0uQSA9IGFscGhhVmFsdWVzW2pdW2ldOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMjsgaSA8IDQgJiYg
KHggKyBpKSA8IHc7IGkrKykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IHJvd1tpXSAgID0gc3ViYmxvY2tDb2xvcnMxW2dldEluZGV4KGksIGopXTsKLSAgICAgICAgICAg
ICAgICAgICAgcm93W2ldLkEgPSBhbHBoYVZhbHVlc1tqXVtpXTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgY3VyUGl4ZWwgKz0gZGVzdFJvd1BpdGNoOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgICAgIGlmIChub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSkKLSAg
ICAgICAgewotICAgICAgICAgICAgZGVjb2RlUHVuY2hUaHJvdWdoQWxwaGFCbG9jayhkZXN0LCB4
LCB5LCB3LCBoLCBkZXN0Um93UGl0Y2gpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCBk
ZWNvZGVUQmxvY2sodWludDhfdCAqZGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
eCwKLSAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeSwKLSAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgdywKLSAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaCwKLSAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgZGVzdFJvd1BpdGNoLAotICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHVpbnQ4X3QgYWxwaGFWYWx1ZXNbNF1bNF0sCi0gICAgICAgICAgICAgICAgICAgICAgYm9v
bCBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSkgY29uc3QKLSAgICB7Ci0gICAgICAgIC8vIFRh
YmxlIEMuOCwgZGlzdGFuY2UgaW5kZXggZm9yIFQgYW5kIEggbW9kZXMKLSAgICAgICAgY29uc3Qg
YXV0byAmYmxvY2sgPSB1LmlkaHQubW9kZS50bTsKLQotICAgICAgICBpbnQgcjEgPSBleHRlbmRf
NHRvOGJpdHMoYmxvY2suVFIxYSA8PCAyIHwgYmxvY2suVFIxYik7Ci0gICAgICAgIGludCBnMSA9
IGV4dGVuZF80dG84Yml0cyhibG9jay5URzEpOwotICAgICAgICBpbnQgYjEgPSBleHRlbmRfNHRv
OGJpdHMoYmxvY2suVEIxKTsKLSAgICAgICAgaW50IHIyID0gZXh0ZW5kXzR0bzhiaXRzKGJsb2Nr
LlRSMik7Ci0gICAgICAgIGludCBnMiA9IGV4dGVuZF80dG84Yml0cyhibG9jay5URzIpOwotICAg
ICAgICBpbnQgYjIgPSBleHRlbmRfNHRvOGJpdHMoYmxvY2suVEIyKTsKLQotICAgICAgICBzdGF0
aWMgaW50IGRpc3RhbmNlWzhdID0gezMsIDYsIDExLCAxNiwgMjMsIDMyLCA0MSwgNjR9OwotICAg
ICAgICBjb25zdCBpbnQgZCAgICAgICAgICAgID0gZGlzdGFuY2VbYmxvY2suVGRhIDw8IDEgfCBi
bG9jay5UZGJdOwotCi0gICAgICAgIGNvbnN0IFI4RzhCOEE4IHBhaW50Q29sb3JzWzRdID0gewot
ICAgICAgICAgICAgY3JlYXRlUkdCQShyMSwgZzEsIGIxKSwgY3JlYXRlUkdCQShyMiArIGQsIGcy
ICsgZCwgYjIgKyBkKSwgY3JlYXRlUkdCQShyMiwgZzIsIGIyKSwKLSAgICAgICAgICAgIGNyZWF0
ZVJHQkEocjIgLSBkLCBnMiAtIGQsIGIyIC0gZCksCi0gICAgICAgIH07Ci0KLSAgICAgICAgdWlu
dDhfdCAqY3VyUGl4ZWwgPSBkZXN0OwotICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IDQg
JiYgKHkgKyBqKSA8IGg7IGorKykKLSAgICAgICAgewotICAgICAgICAgICAgUjhHOEI4QTggKnJv
dyA9IHJlaW50ZXJwcmV0X2Nhc3Q8UjhHOEI4QTggKj4oY3VyUGl4ZWwpOwotICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCA0ICYmICh4ICsgaSkgPCB3OyBpKyspCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgcm93W2ldICAgPSBwYWludENvbG9yc1tnZXRJbmRleChpLCBq
KV07Ci0gICAgICAgICAgICAgICAgcm93W2ldLkEgPSBhbHBoYVZhbHVlc1tqXVtpXTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGN1clBpeGVsICs9IGRlc3RSb3dQaXRjaDsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmIChub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSkKLSAgICAgICAgewot
ICAgICAgICAgICAgZGVjb2RlUHVuY2hUaHJvdWdoQWxwaGFCbG9jayhkZXN0LCB4LCB5LCB3LCBo
LCBkZXN0Um93UGl0Y2gpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCBkZWNvZGVIQmxv
Y2sodWludDhfdCAqZGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeCwKLSAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgeSwKLSAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
dywKLSAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaCwKLSAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgZGVzdFJvd1BpdGNoLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4
X3QgYWxwaGFWYWx1ZXNbNF1bNF0sCi0gICAgICAgICAgICAgICAgICAgICAgYm9vbCBub25PcGFx
dWVQdW5jaFRocm91Z2hBbHBoYSkgY29uc3QKLSAgICB7Ci0gICAgICAgIC8vIFRhYmxlIEMuOCwg
ZGlzdGFuY2UgaW5kZXggZm9yIFQgYW5kIEggbW9kZXMKLSAgICAgICAgY29uc3QgYXV0byAmYmxv
Y2sgPSB1LmlkaHQubW9kZS5obTsKLQotICAgICAgICBpbnQgcjEgPSBleHRlbmRfNHRvOGJpdHMo
YmxvY2suSFIxKTsKLSAgICAgICAgaW50IGcxID0gZXh0ZW5kXzR0bzhiaXRzKGJsb2NrLkhHMWEg
PDwgMSB8IGJsb2NrLkhHMWIpOwotICAgICAgICBpbnQgYjEgPSBleHRlbmRfNHRvOGJpdHMoYmxv
Y2suSEIxYSA8PCAzIHwgYmxvY2suSEIxYiA8PCAxIHwgYmxvY2suSEIxYyk7Ci0gICAgICAgIGlu
dCByMiA9IGV4dGVuZF80dG84Yml0cyhibG9jay5IUjIpOwotICAgICAgICBpbnQgZzIgPSBleHRl
bmRfNHRvOGJpdHMoYmxvY2suSEcyYSA8PCAxIHwgYmxvY2suSEcyYik7Ci0gICAgICAgIGludCBi
MiA9IGV4dGVuZF80dG84Yml0cyhibG9jay5IQjIpOwotCi0gICAgICAgIHN0YXRpYyBjb25zdCBp
bnQgZGlzdGFuY2VbOF0gPSB7MywgNiwgMTEsIDE2LCAyMywgMzIsIDQxLCA2NH07Ci0gICAgICAg
IGNvbnN0IGludCBkID0gZGlzdGFuY2VbKGJsb2NrLkhkYSA8PCAyKSB8IChibG9jay5IZGIgPDwg
MSkgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocjEgPDwgMTYgfCBnMSA8PCA4
IHwgYjEpID49IChyMiA8PCAxNiB8IGcyIDw8IDggfCBiMikgPyAxIDogMCldOwotCi0gICAgICAg
IGNvbnN0IFI4RzhCOEE4IHBhaW50Q29sb3JzWzRdID0gewotICAgICAgICAgICAgY3JlYXRlUkdC
QShyMSArIGQsIGcxICsgZCwgYjEgKyBkKSwgY3JlYXRlUkdCQShyMSAtIGQsIGcxIC0gZCwgYjEg
LSBkKSwKLSAgICAgICAgICAgIGNyZWF0ZVJHQkEocjIgKyBkLCBnMiArIGQsIGIyICsgZCksIGNy
ZWF0ZVJHQkEocjIgLSBkLCBnMiAtIGQsIGIyIC0gZCksCi0gICAgICAgIH07Ci0KLSAgICAgICAg
dWludDhfdCAqY3VyUGl4ZWwgPSBkZXN0OwotICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8
IDQgJiYgKHkgKyBqKSA8IGg7IGorKykKLSAgICAgICAgewotICAgICAgICAgICAgUjhHOEI4QTgg
KnJvdyA9IHJlaW50ZXJwcmV0X2Nhc3Q8UjhHOEI4QTggKj4oY3VyUGl4ZWwpOwotICAgICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA0ICYmICh4ICsgaSkgPCB3OyBpKyspCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgcm93W2ldICAgPSBwYWludENvbG9yc1tnZXRJbmRleChp
LCBqKV07Ci0gICAgICAgICAgICAgICAgcm93W2ldLkEgPSBhbHBoYVZhbHVlc1tqXVtpXTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGN1clBpeGVsICs9IGRlc3RSb3dQaXRjaDsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmIChub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSkKLSAgICAgICAg
ewotICAgICAgICAgICAgZGVjb2RlUHVuY2hUaHJvdWdoQWxwaGFCbG9jayhkZXN0LCB4LCB5LCB3
LCBoLCBkZXN0Um93UGl0Y2gpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCBkZWNvZGVQ
bGFuYXJCbG9jayh1aW50OF90ICpkZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCB3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcGl0Y2gsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90IGFscGhhVmFsdWVzWzRdWzRdKSBjb25z
dAotICAgIHsKLSAgICAgICAgaW50IHJvID0gZXh0ZW5kXzZ0bzhiaXRzKHUucGJsay5STyk7Ci0g
ICAgICAgIGludCBnbyA9IGV4dGVuZF83dG84Yml0cyh1LnBibGsuR08xIDw8IDYgfCB1LnBibGsu
R08yKTsKLSAgICAgICAgaW50IGJvID0KLSAgICAgICAgICAgIGV4dGVuZF82dG84Yml0cyh1LnBi
bGsuQk8xIDw8IDUgfCB1LnBibGsuQk8yIDw8IDMgfCB1LnBibGsuQk8zYSA8PCAxIHwgdS5wYmxr
LkJPM2IpOwotICAgICAgICBpbnQgcmggPSBleHRlbmRfNnRvOGJpdHModS5wYmxrLlJIMSA8PCAx
IHwgdS5wYmxrLlJIMik7Ci0gICAgICAgIGludCBnaCA9IGV4dGVuZF83dG84Yml0cyh1LnBibGsu
R0gpOwotICAgICAgICBpbnQgYmggPSBleHRlbmRfNnRvOGJpdHModS5wYmxrLkJIYSA8PCA1IHwg
dS5wYmxrLkJIYik7Ci0gICAgICAgIGludCBydiA9IGV4dGVuZF82dG84Yml0cyh1LnBibGsuUlZh
IDw8IDMgfCB1LnBibGsuUlZiKTsKLSAgICAgICAgaW50IGd2ID0gZXh0ZW5kXzd0bzhiaXRzKHUu
cGJsay5HVmEgPDwgMiB8IHUucGJsay5HVmIpOwotICAgICAgICBpbnQgYnYgPSBleHRlbmRfNnRv
OGJpdHModS5wYmxrLkJWKTsKLQotICAgICAgICB1aW50OF90ICpjdXJQaXhlbCA9IGRlc3Q7Ci0g
ICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgNCAmJiAoeSArIGopIDwgaDsgaisrKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBSOEc4QjhBOCAqcm93ID0gcmVpbnRlcnByZXRfY2FzdDxSOEc4
QjhBOCAqPihjdXJQaXhlbCk7Ci0KLSAgICAgICAgICAgIGludCByeSA9IHN0YXRpY19jYXN0PGlu
dD4oaikgKiAocnYgLSBybykgKyAyOwotICAgICAgICAgICAgaW50IGd5ID0gc3RhdGljX2Nhc3Q8
aW50PihqKSAqIChndiAtIGdvKSArIDI7Ci0gICAgICAgICAgICBpbnQgYnkgPSBzdGF0aWNfY2Fz
dDxpbnQ+KGopICogKGJ2IC0gYm8pICsgMjsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgNCAmJiAoeCArIGkpIDwgdzsgaSsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIHJvd1tpXSA9IGNyZWF0ZVJHQkEoKChzdGF0aWNfY2FzdDxpbnQ+KGkpICogKHJoIC0gcm8p
ICsgcnkpID4+IDIpICsgcm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
KHN0YXRpY19jYXN0PGludD4oaSkgKiAoZ2ggLSBnbykgKyBneSkgPj4gMikgKyBnbywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoc3RhdGljX2Nhc3Q8aW50PihpKSAqIChi
aCAtIGJvKSArIGJ5KSA+PiAyKSArIGJvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYWxwaGFWYWx1ZXNbal1baV0pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY3Vy
UGl4ZWwgKz0gcGl0Y2g7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBJbmRleCBmb3IgaW5k
aXZpZHVhbCwgZGlmZmVyZW50aWFsLCBIIGFuZCBUIG1vZGVzCi0gICAgc2l6ZV90IGdldEluZGV4
KHNpemVfdCB4LCBzaXplX3QgeSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHNpemVfdCBiaXRJbmRl
eCAgPSB4ICogNCArIHk7Ci0gICAgICAgIHNpemVfdCBiaXRPZmZzZXQgPSBiaXRJbmRleCAmIDc7
Ci0gICAgICAgIHNpemVfdCBsc2IgICAgICAgPSAodS5pZGh0LnBpeGVsSW5kZXhMU0JbMSAtIChi
aXRJbmRleCA+PiAzKV0gPj4gYml0T2Zmc2V0KSAmIDE7Ci0gICAgICAgIHNpemVfdCBtc2IgPSAo
dS5pZGh0LnBpeGVsSW5kZXhNU0JbMSAtIChiaXRJbmRleCA+PiAzKV0gPj4gYml0T2Zmc2V0KSAm
IDE7Ci0gICAgICAgIHJldHVybiAobXNiIDw8IDEpIHwgbHNiOwotICAgIH0KLQotICAgIHZvaWQg
ZGVjb2RlUHVuY2hUaHJvdWdoQWxwaGFCbG9jayh1aW50OF90ICpkZXN0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCB3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGRlc3RSb3dQaXRjaCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHVpbnQ4X3QgKmN1clBpeGVsID0g
ZGVzdDsKLSAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCA0ICYmICh5ICsgaikgPCBoOyBq
KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIFI4RzhCOEE4ICpyb3cgPSByZWludGVycHJldF9j
YXN0PFI4RzhCOEE4ICo+KGN1clBpeGVsKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgNCAmJiAoeCArIGkpIDwgdzsgaSsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGlmIChnZXRJbmRleChpLCBqKSA9PSAyKSAgLy8gIG1zYiA9PSAxICYmIGxzYiA9PSAwCi0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByb3dbaV0gPSBjcmVhdGVSR0JB
KDAsIDAsIDAsIDApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGN1clBpeGVsICs9IGRlc3RSb3dQaXRjaDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHVp
bnQxNl90IFJHQjhUb1JHQjU2NShjb25zdCBSOEc4QjhBOCAmcmdiYSkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiAoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHJnYmEuUiA+PiAzKSA8PCAxMSkg
fAotICAgICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVpbnQxNl90PihyZ2JhLkcgPj4gMikgPDwg
NSkgfAotICAgICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVpbnQxNl90PihyZ2JhLkIgPj4gMykg
PDwgMCk7Ci0gICAgfQotCi0gICAgdWludDMyX3QgbWF0Y2hCQzFCaXRzKGNvbnN0IFI4RzhCOEE4
ICpyZ2JhLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSOEc4QjhBOCAmbWluQ29s
b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFI4RzhCOEE4ICZtYXhDb2xvciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBvcGFxdWUpIGNvbnN0Ci0gICAgewotICAg
ICAgICAvLyBQcm9qZWN0IGVhY2ggcGl4ZWwgb24gdGhlIChtYXhDb2xvciwgbWluQ29sb3IpIGxp
bmUgdG8gZGVjaWRlIHdoaWNoCi0gICAgICAgIC8vIEJDMSBjb2RlIHRvIGFzc2lnbiB0byBpdC4K
LQotICAgICAgICB1aW50OF90IGRlY29kZWRDb2xvcnNbMl1bM10gPSB7e21heENvbG9yLlIsIG1h
eENvbG9yLkcsIG1heENvbG9yLkJ9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAge21pbkNvbG9yLlIsIG1pbkNvbG9yLkcsIG1pbkNvbG9yLkJ9fTsKLQotICAgICAgICBp
bnQgZGlyZWN0aW9uWzNdOwotICAgICAgICBmb3IgKGludCBjaCA9IDA7IGNoIDwgMzsgY2grKykK
LSAgICAgICAgewotICAgICAgICAgICAgZGlyZWN0aW9uW2NoXSA9IGRlY29kZWRDb2xvcnNbMF1b
Y2hdIC0gZGVjb2RlZENvbG9yc1sxXVtjaF07Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgc3Rv
cHNbMl07Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjsgaSsrKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBzdG9wc1tpXSA9IGRlY29kZWRDb2xvcnNbaV1bMF0gKiBkaXJlY3Rpb25bMF0g
KyBkZWNvZGVkQ29sb3JzW2ldWzFdICogZGlyZWN0aW9uWzFdICsKLSAgICAgICAgICAgICAgICAg
ICAgICAgZGVjb2RlZENvbG9yc1tpXVsyXSAqIGRpcmVjdGlvblsyXTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHVpbnQzMl90IGJpdHMgPSAwOwotICAgICAgICBpZiAob3BhcXVlKQotICAgICAgICB7
Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMTU7IGkgPj0gMDsgaS0tKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIC8vIEluIG9wYXF1ZSBtb2RlLCB0aGUgY29kZSBpcyBmcm9tIDAg
dG8gMy4KLQotICAgICAgICAgICAgICAgIGJpdHMgPDw9IDI7Ci0gICAgICAgICAgICAgICAgY29u
c3QgaW50IGRvdCA9Ci0gICAgICAgICAgICAgICAgICAgIHJnYmFbaV0uUiAqIGRpcmVjdGlvblsw
XSArIHJnYmFbaV0uRyAqIGRpcmVjdGlvblsxXSArIHJnYmFbaV0uQiAqIGRpcmVjdGlvblsyXTsK
LSAgICAgICAgICAgICAgICBjb25zdCBpbnQgZmFjdG9yID0gZ2w6OmNsYW1wKAotICAgICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KAotICAgICAgICAgICAgICAgICAgICAgICAgKHN0
YXRpY19jYXN0PGZsb2F0Pihkb3QgLSBzdG9wc1sxXSkgLyAoc3RvcHNbMF0gLSBzdG9wc1sxXSkp
ICogMyArIDAuNWYpLAotICAgICAgICAgICAgICAgICAgICAwLCAzKTsKLSAgICAgICAgICAgICAg
ICBzd2l0Y2ggKGZhY3RvcikKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IGNhc2UgMDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJpdHMgfD0gMTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDE6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBiaXRzIHw9IDM7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgICAgICAgICAgICAg
Yml0cyB8PSAyOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJpdHMgfD0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNl
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAxNTsgaSA+PSAwOyBpLS0pCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gSW4gbm9uLW9wYXF1ZSBtb2RlLCAzIGlz
IGZvciB0cmFucGFyZW50IHBpeGVscy4KLQotICAgICAgICAgICAgICAgIGJpdHMgPDw9IDI7Ci0g
ICAgICAgICAgICAgICAgaWYgKDAgPT0gcmdiYVtpXS5BKQotICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgYml0cyB8PSAzOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBjb25z
dCBpbnQgZG90ID0gcmdiYVtpXS5SICogZGlyZWN0aW9uWzBdICsgcmdiYVtpXS5HICogZGlyZWN0
aW9uWzFdICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJnYmFbaV0uQiAq
IGRpcmVjdGlvblsyXTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IGZhY3RvciA9IGds
OjpjbGFtcCgKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHN0YXRpY19jYXN0PGZsb2F0Pihkb3QgLSBzdG9wc1sx
XSkgLyAoc3RvcHNbMF0gLSBzdG9wc1sxXSkpICogMiArCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMC41ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAwLCAyKTsKLSAgICAgICAgICAg
ICAgICAgICAgc3dpdGNoIChmYWN0b3IpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgMDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRz
IHw9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0cyB8PSAy
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSAyOgotICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBiaXRzIHw9IDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gYml0czsKLSAgICB9Ci0KLSAg
ICB2b2lkIHBhY2tCQzEodm9pZCAqYmMxLAotICAgICAgICAgICAgICAgICBjb25zdCBSOEc4QjhB
OCAqcmdiYSwKLSAgICAgICAgICAgICAgICAgY29uc3QgUjhHOEI4QTggJm1pbkNvbG9yLAotICAg
ICAgICAgICAgICAgICBjb25zdCBSOEc4QjhBOCAmbWF4Q29sb3IsCi0gICAgICAgICAgICAgICAg
IGJvb2wgb3BhcXVlKSBjb25zdAotICAgIHsKLSAgICAgICAgdWludDMyX3QgYml0czsKLSAgICAg
ICAgdWludDE2X3QgbWF4MTYgPSBSR0I4VG9SR0I1NjUobWF4Q29sb3IpOwotICAgICAgICB1aW50
MTZfdCBtaW4xNiA9IFJHQjhUb1JHQjU2NShtaW5Db2xvcik7Ci0gICAgICAgIGlmIChtYXgxNiAh
PSBtaW4xNikKLSAgICAgICAgewotICAgICAgICAgICAgLy8gRmluZCB0aGUgYmVzdCBCQzEgY29k
ZSBmb3IgZWFjaCBwaXhlbAotICAgICAgICAgICAgYml0cyA9IG1hdGNoQkMxQml0cyhyZ2JhLCBt
aW5Db2xvciwgbWF4Q29sb3IsIG9wYXF1ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAg
ICAgICB7Ci0gICAgICAgICAgICAvLyBTYW1lIGNvbG9ycywgQkMxIGluZGV4IDAgaXMgdGhlIGNv
bG9yIGluIGJvdGggb3BhcXVlIGFuZCB0cmFuc3BhcmVudCBtb2RlCi0gICAgICAgICAgICBiaXRz
ID0gMDsKLSAgICAgICAgICAgIC8vIEJDMSBpbmRleCAzIGlzIHRyYW5zcGFyZW50Ci0gICAgICAg
ICAgICBpZiAoIW9wYXF1ZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IDE2OyBpKyspCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICBpZiAoMCA9PSByZ2JhW2ldLkEpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJpdHMgfD0gKDMgPDwgKGkgKiAyKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAobWF4MTYgPCBtaW4xNikKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjpzd2Fw
KG1heDE2LCBtaW4xNik7Ci0KLSAgICAgICAgICAgIHVpbnQzMl90IHhvck1hc2sgPSAwOwotICAg
ICAgICAgICAgaWYgKG9wYXF1ZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBJ
biBvcGFxdWUgbW9kZSBzd2l0Y2hpbmcgdGhlIHR3byBjb2xvcnMgaXMgZG9pbmcgdGhlCi0gICAg
ICAgICAgICAgICAgLy8gZm9sbG93aW5nIGNvZGUgc3dhcHM6IDAgPC0+IDEgYW5kIDIgPC0+IDMu
IFRoaXMgaXMKLSAgICAgICAgICAgICAgICAvLyBlcXVpdmFsZW50IHRvIGZsaXBwaW5nIHRoZSBm
aXJzdCBiaXQgb2YgZWFjaCBjb2RlCi0gICAgICAgICAgICAgICAgLy8gKDUgPSAwYjAxMDEpCi0g
ICAgICAgICAgICAgICAgeG9yTWFzayA9IDB4NTU1NTU1NTU7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gSW4gdHJhbnNw
YXJlbnQgbW9kZSBzd2l0Y2hpbmcgdGhlIGNvbG9ycyBpcyBkb2luZyB0aGUKLSAgICAgICAgICAg
ICAgICAvLyBmb2xsb3dpbmcgY29kZSBzd2FwOiAwIDwtPiAxLiAweEEgc2VsZWN0cyB0aGUgc2Vj
b25kIGJpdCBvZgotICAgICAgICAgICAgICAgIC8vIGVhY2ggY29kZSwgYml0cyA+PiAxIHNlbGVj
dHMgdGhlIGZpcnN0IGJpdCBvZiB0aGUgY29kZSB3aGVuCi0gICAgICAgICAgICAgICAgLy8gdGhl
IHNlY29uZHMgYml0IGlzIHNldCAoY2FzZSAyIGFuZCAzKS4gV2UgaW52ZXJ0IGFsbCB0aGUKLSAg
ICAgICAgICAgICAgICAvLyBub24tc2VsZWN0ZWQgYml0cywgdGhhdCBpcyB0aGUgZmlyc3QgYml0
IHdoZW4gdGhlIGNvZGUgaXMKLSAgICAgICAgICAgICAgICAvLyAwIG9yIDEuCi0gICAgICAgICAg
ICAgICAgeG9yTWFzayA9IH4oKGJpdHMgPj4gMSkgfCAweEFBQUFBQUFBKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGJpdHMgXj0geG9yTWFzazsKLSAgICAgICAgfQotCi0gICAgICAgIHN0
cnVjdCBCQzFCbG9jawotICAgICAgICB7Ci0gICAgICAgICAgICB1aW50MTZfdCBjb2xvcjA7Ci0g
ICAgICAgICAgICB1aW50MTZfdCBjb2xvcjE7Ci0gICAgICAgICAgICB1aW50MzJfdCBiaXRzOwot
ICAgICAgICB9OwotCi0gICAgICAgIC8vIEVuY29kZSB0aGUgb3BhcXVlbmVzcyBpbiB0aGUgb3Jk
ZXIgb2YgdGhlIHR3byBCQzEgY29sb3JzCi0gICAgICAgIEJDMUJsb2NrICpkZXN0ID0gcmVpbnRl
cnByZXRfY2FzdDxCQzFCbG9jayAqPihiYzEpOwotICAgICAgICBpZiAob3BhcXVlKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBkZXN0LT5jb2xvcjAgPSBtYXgxNjsKLSAgICAgICAgICAgIGRlc3Qt
PmNvbG9yMSA9IG1pbjE2OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAg
ICAgICAgICAgZGVzdC0+Y29sb3IwID0gbWluMTY7Ci0gICAgICAgICAgICBkZXN0LT5jb2xvcjEg
PSBtYXgxNjsKLSAgICAgICAgfQotICAgICAgICBkZXN0LT5iaXRzID0gYml0czsKLSAgICB9Ci0K
LSAgICB2b2lkIHRyYW5zY29kZUluZGl2aWR1YWxCbG9ja1RvQkMxKHVpbnQ4X3QgKmRlc3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB5LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgYWxwaGFWYWx1ZXNbNF1bNF0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhh
KSBjb25zdAotICAgIHsKLSAgICAgICAgY29uc3QgYXV0byAmYmxvY2sgPSB1LmlkaHQubW9kZS5p
ZG0uY29sb3JzLmluZGl2OwotICAgICAgICBpbnQgcjEgICAgICAgICAgICA9IGV4dGVuZF80dG84
Yml0cyhibG9jay5SMSk7Ci0gICAgICAgIGludCBnMSAgICAgICAgICAgID0gZXh0ZW5kXzR0bzhi
aXRzKGJsb2NrLkcxKTsKLSAgICAgICAgaW50IGIxICAgICAgICAgICAgPSBleHRlbmRfNHRvOGJp
dHMoYmxvY2suQjEpOwotICAgICAgICBpbnQgcjIgICAgICAgICAgICA9IGV4dGVuZF80dG84Yml0
cyhibG9jay5SMik7Ci0gICAgICAgIGludCBnMiAgICAgICAgICAgID0gZXh0ZW5kXzR0bzhiaXRz
KGJsb2NrLkcyKTsKLSAgICAgICAgaW50IGIyID0gZXh0ZW5kXzR0bzhiaXRzKGJsb2NrLkIyKTsK
LSAgICAgICAgdHJhbnNjb2RlSW5kaXZpZHVhbE9yRGlmZmVyZW50aWFsQmxvY2tUb0JDMShkZXN0
LCB4LCB5LCB3LCBoLCByMSwgZzEsIGIxLCByMiwgZzIsIGIyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhVmFsdWVzLCBub25PcGFxdWVQ
dW5jaFRocm91Z2hBbHBoYSk7Ci0gICAgfQotCi0gICAgdm9pZCB0cmFuc2NvZGVEaWZmZXJlbnRp
YWxCbG9ja1RvQkMxKHVpbnQ4X3QgKmRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCB4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IHcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
aW50OF90IGFscGhhVmFsdWVzWzRdWzRdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhhKSBjb25zdAotICAgIHsK
LSAgICAgICAgY29uc3QgYXV0byAmYmxvY2sgPSB1LmlkaHQubW9kZS5pZG0uY29sb3JzLmRpZmY7
Ci0gICAgICAgIGludCBiMSAgICAgICAgICAgID0gZXh0ZW5kXzV0bzhiaXRzKGJsb2NrLkIpOwot
ICAgICAgICBpbnQgZzEgICAgICAgICAgICA9IGV4dGVuZF81dG84Yml0cyhibG9jay5HKTsKLSAg
ICAgICAgaW50IHIxICAgICAgICAgICAgPSBleHRlbmRfNXRvOGJpdHMoYmxvY2suUik7Ci0gICAg
ICAgIGludCByMiAgICAgICAgICAgID0gZXh0ZW5kXzV0bzhiaXRzKGJsb2NrLlIgKyBibG9jay5k
Uik7Ci0gICAgICAgIGludCBnMiAgICAgICAgICAgID0gZXh0ZW5kXzV0bzhiaXRzKGJsb2NrLkcg
KyBibG9jay5kRyk7Ci0gICAgICAgIGludCBiMiA9IGV4dGVuZF81dG84Yml0cyhibG9jay5CICsg
YmxvY2suZEIpOwotICAgICAgICB0cmFuc2NvZGVJbmRpdmlkdWFsT3JEaWZmZXJlbnRpYWxCbG9j
a1RvQkMxKGRlc3QsIHgsIHksIHcsIGgsIHIxLCBnMSwgYjEsIHIyLCBnMiwgYjIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFWYWx1ZXMs
IG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhhKTsKLSAgICB9Ci0KLSAgICB2b2lkIGRlY29kZVN1
YmJsb2NrKFI4RzhCOEE4ICpyZ2JhQmxvY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgeCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB5LAotICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IHcsCi0gICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgYWxwaGFWYWx1ZXNbNF1bNF0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGZsaXBiaXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3Qgc3ViYmxvY2tJZHgsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBS
OEc4QjhBOCBzdWJibG9ja0NvbG9yc1syXVs0XSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHNpemVf
dCBkeEJlZ2luID0gMDsKLSAgICAgICAgc2l6ZV90IGR4RW5kICAgPSA0OwotICAgICAgICBzaXpl
X3QgZHlCZWdpbiA9IHN1YmJsb2NrSWR4ICogMjsKLSAgICAgICAgc2l6ZV90IGR5RW5kID0gZHlC
ZWdpbiArIDI7Ci0gICAgICAgIGlmICghZmxpcGJpdCkKLSAgICAgICAgewotICAgICAgICAgICAg
c3RkOjpzd2FwKGR4QmVnaW4sIGR5QmVnaW4pOwotICAgICAgICAgICAgc3RkOjpzd2FwKGR4RW5k
LCBkeUVuZCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKHNpemVfdCBqID0gZHlCZWdpbjsg
aiA8IGR5RW5kICYmICh5ICsgaikgPCBoOyBqKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIFI4
RzhCOEE4ICpyb3cgPSAmcmdiYUJsb2NrW2ogKiA0XTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSBkeEJlZ2luOyBpIDwgZHhFbmQgJiYgKHggKyBpKSA8IHc7IGkrKykKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBjb25zdCBzaXplX3QgcGl4ZWxJbmRleCA9IGdldEluZGV4KGks
IGopOwotICAgICAgICAgICAgICAgIHJvd1tpXSAgICAgICAgICAgICAgICAgID0gc3ViYmxvY2tD
b2xvcnNbc3ViYmxvY2tJZHhdW3BpeGVsSW5kZXhdOwotICAgICAgICAgICAgICAgIHJvd1tpXS5B
ICAgICAgICAgICAgICAgID0gYWxwaGFWYWx1ZXNbal1baV07Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHNlbGVjdEVuZFBvaW50UENBKGNvbnN0IFI4RzhCOEE4
ICpwaXhlbHMsIFI4RzhCOEE4ICptaW5Db2xvciwgUjhHOEI4QTggKm1heENvbG9yKSBjb25zdAot
ICAgIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBrTnVtUGl4ZWxzID0gMTY7Ci0KLSAgICAg
ICAgLy8gZGV0ZXJtaW5lIGNvbG9yIGRpc3RyaWJ1dGlvbgotICAgICAgICBpbnQgbXVbM10sIG1p
blszXSwgbWF4WzNdOwotICAgICAgICBmb3IgKGludCBjaCA9IDA7IGNoIDwgMzsgY2grKykKLSAg
ICAgICAgewotICAgICAgICAgICAgaW50IG11diwgbWludiwgbWF4djsKLQotICAgICAgICAgICAg
bXV2ID0gbWludiA9IG1heHYgPSAoJnBpeGVsc1swXS5SKVtjaF07Ci0gICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMTsgaSA8IGtOdW1QaXhlbHM7IGkrKykKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBtdXYgKz0gKCZwaXhlbHNbaV0uUilbY2hdOwotICAgICAgICAgICAgICAgIG1p
bnYgPSBzdGQ6Om1pbjxpbnQ+KG1pbnYsICgmcGl4ZWxzW2ldLlIpW2NoXSk7Ci0gICAgICAgICAg
ICAgICAgbWF4diA9IHN0ZDo6bWF4PGludD4obWF4diwgKCZwaXhlbHNbaV0uUilbY2hdKTsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgbXVbY2hdICA9IChtdXYgKyBrTnVtUGl4ZWxzIC8g
MikgLyBrTnVtUGl4ZWxzOwotICAgICAgICAgICAgbWluW2NoXSA9IG1pbnY7Ci0gICAgICAgICAg
ICBtYXhbY2hdID0gbWF4djsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGRldGVybWluZSBjb3Zh
cmlhbmNlIG1hdHJpeAotICAgICAgICBpbnQgY292WzZdID0gezAsIDAsIDAsIDAsIDAsIDB9Owot
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtOdW1QaXhlbHM7IGkrKykKLSAgICAgICAg
ewotICAgICAgICAgICAgaW50IHIgPSBwaXhlbHNbaV0uUiAtIG11WzBdOwotICAgICAgICAgICAg
aW50IGcgPSBwaXhlbHNbaV0uRyAtIG11WzFdOwotICAgICAgICAgICAgaW50IGIgPSBwaXhlbHNb
aV0uQiAtIG11WzJdOwotCi0gICAgICAgICAgICBjb3ZbMF0gKz0gciAqIHI7Ci0gICAgICAgICAg
ICBjb3ZbMV0gKz0gciAqIGc7Ci0gICAgICAgICAgICBjb3ZbMl0gKz0gciAqIGI7Ci0gICAgICAg
ICAgICBjb3ZbM10gKz0gZyAqIGc7Ci0gICAgICAgICAgICBjb3ZbNF0gKz0gZyAqIGI7Ci0gICAg
ICAgICAgICBjb3ZbNV0gKz0gYiAqIGI7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBQb3dlciBp
dGVyYXRpb24gYWxnb3JpdGhtIHRvIGdldCB0aGUgZWlnZW52YWx1ZXMgYW5kIGVpZ2VudmVjdG9y
Ci0KLSAgICAgICAgLy8gU3RhcnRzIHdpdGggZGlhZ29uYWwgdmVjdG9yCi0gICAgICAgIGZsb2F0
IHZmciA9IHN0YXRpY19jYXN0PGZsb2F0PihtYXhbMF0gLSBtaW5bMF0pOwotICAgICAgICBmbG9h
dCB2ZmcgPSBzdGF0aWNfY2FzdDxmbG9hdD4obWF4WzFdIC0gbWluWzFdKTsKLSAgICAgICAgZmxv
YXQgdmZiID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heFsyXSAtIG1pblsyXSk7Ci0gICAgICAgIGZs
b2F0IGVpZ2VudmFsdWU7Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBrUG93ZXJJdGVy
YXRpb25zID0gNDsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrUG93ZXJJdGVyYXRp
b25zOyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0IHIgPSB2ZnIgKiBjb3ZbMF0g
KyB2ZmcgKiBjb3ZbMV0gKyB2ZmIgKiBjb3ZbMl07Ci0gICAgICAgICAgICBmbG9hdCBnID0gdmZy
ICogY292WzFdICsgdmZnICogY292WzNdICsgdmZiICogY292WzRdOwotICAgICAgICAgICAgZmxv
YXQgYiA9IHZmciAqIGNvdlsyXSArIHZmZyAqIGNvdls0XSArIHZmYiAqIGNvdls1XTsKLQotICAg
ICAgICAgICAgdmZyID0gcjsKLSAgICAgICAgICAgIHZmZyA9IGc7Ci0gICAgICAgICAgICB2ZmIg
PSBiOwotCi0gICAgICAgICAgICBlaWdlbnZhbHVlID0gc3FydChyICogciArIGcgKiBnICsgYiAq
IGIpOwotICAgICAgICAgICAgaWYgKGVpZ2VudmFsdWUgPiAwKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGZsb2F0IGludk5vcm0gPSAxLjBmIC8gZWlnZW52YWx1ZTsKLSAgICAgICAg
ICAgICAgICB2ZnIgKj0gaW52Tm9ybTsKLSAgICAgICAgICAgICAgICB2ZmcgKj0gaW52Tm9ybTsK
LSAgICAgICAgICAgICAgICB2ZmIgKj0gaW52Tm9ybTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotCi0gICAgICAgIGludCB2ciwgdmcsIHZiOwotCi0gICAgICAgIHN0YXRpYyBjb25zdCBmbG9h
dCBrRGVmYXVsdEx1bWluYW5jZVRocmVzaG9sZCA9IDQuMGYgKiAyNTU7Ci0gICAgICAgIHN0YXRp
YyBjb25zdCBmbG9hdCBrUXVhbnRpemVSYW5nZSA9IDUxMi4wZjsKLSAgICAgICAgaWYgKGVpZ2Vu
dmFsdWUgPCBrRGVmYXVsdEx1bWluYW5jZVRocmVzaG9sZCkgIC8vIHRvbyBzbWFsbCwgZGVmYXVs
dCB0byBsdW1pbmFuY2UKLSAgICAgICAgewotICAgICAgICAgICAgLy8gTHVtaW5hbmNlIHdlaWdo
dHMgZGVmaW5lZCBieSBJVFUtUiBSZWNvbW1lbmRhdGlvbiBCVC42MDEsIHNjYWxlZCBieSAxMDAw
Ci0gICAgICAgICAgICB2ciA9IDI5OTsKLSAgICAgICAgICAgIHZnID0gNTg3OwotICAgICAgICAg
ICAgdmIgPSAxMTQ7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAg
ICAgICAvLyBGcm9tIHRoZSBlaWdlbnZhbHVlIGFuZCBlaWdlbnZlY3RvciwgY2hvb3NlIHRoZSBh
eGlzIHRvIHByb2plY3QKLSAgICAgICAgICAgIC8vIGNvbG9ycyBvbi4gV2hlbiBwcm9qZWN0aW5n
IGNvbG9ycyB3ZSB3YW50IHRvIGRvIGludGVnZXIgY29tcHV0YXRpb25zCi0gICAgICAgICAgICAv
LyBmb3Igc3BlZWQsIHNvIHdlIG5vcm1hbGl6ZSB0aGUgZWlnZW52ZWN0b3IgdG8gdGhlIFswLCA1
MTJdIHJhbmdlLgotICAgICAgICAgICAgZmxvYXQgbWFnbiA9IHN0ZDo6bWF4KHN0ZDo6bWF4KHN0
ZDo6YWJzKHZmciksIHN0ZDo6YWJzKHZmZykpLCBzdGQ6OmFicyh2ZmIpKTsKLSAgICAgICAgICAg
IG1hZ24gICAgICAgPSBrUXVhbnRpemVSYW5nZSAvIG1hZ247Ci0gICAgICAgICAgICB2ciAgICAg
ICAgID0gc3RhdGljX2Nhc3Q8aW50Pih2ZnIgKiBtYWduKTsKLSAgICAgICAgICAgIHZnICAgICAg
ICAgPSBzdGF0aWNfY2FzdDxpbnQ+KHZmZyAqIG1hZ24pOwotICAgICAgICAgICAgdmIgICAgICAg
ICA9IHN0YXRpY19jYXN0PGludD4odmZiICogbWFnbik7Ci0gICAgICAgIH0KLQotICAgICAgICAv
LyBQaWNrIGNvbG9ycyBhdCBleHRyZW1lIHBvaW50cwotICAgICAgICBpbnQgbWluRCAgICAgICAg
PSBwaXhlbHNbMF0uUiAqIHZyICsgcGl4ZWxzWzBdLkcgKiB2ZyArIHBpeGVsc1swXS5CICogdmI7
Ci0gICAgICAgIGludCBtYXhEICAgICAgICA9IG1pbkQ7Ci0gICAgICAgIHNpemVfdCBtaW5JbmRl
eCA9IDA7Ci0gICAgICAgIHNpemVfdCBtYXhJbmRleCA9IDA7Ci0gICAgICAgIGZvciAoc2l6ZV90
IGkgPSAxOyBpIDwga051bVBpeGVsczsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQg
ZG90ID0gcGl4ZWxzW2ldLlIgKiB2ciArIHBpeGVsc1tpXS5HICogdmcgKyBwaXhlbHNbaV0uQiAq
IHZiOwotICAgICAgICAgICAgaWYgKGRvdCA8IG1pbkQpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgbWluRCAgICAgPSBkb3Q7Ci0gICAgICAgICAgICAgICAgbWluSW5kZXggPSBpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGRvdCA+IG1heEQpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgbWF4RCAgICAgPSBkb3Q7Ci0gICAgICAgICAgICAgICAgbWF4SW5k
ZXggPSBpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgKm1pbkNvbG9yID0g
cGl4ZWxzW21pbkluZGV4XTsKLSAgICAgICAgKm1heENvbG9yID0gcGl4ZWxzW21heEluZGV4XTsK
LSAgICB9Ci0KLSAgICB2b2lkIHRyYW5zY29kZUluZGl2aWR1YWxPckRpZmZlcmVudGlhbEJsb2Nr
VG9CQzEodWludDhfdCAqZGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB5LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByMSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGcx
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgYjEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCByMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGcyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgYjIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgYWxwaGFWYWx1ZXNbNF1bNF0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbm9u
T3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpIGNvbnN0Ci0gICAgewotICAgICAgICAvLyBBIEJDMSBi
bG9jayBoYXMgMiBlbmRwb2ludHMsIHBpeGVscyBpcyBlbmNvZGVkIGFzIGxpbmVhcgotICAgICAg
ICAvLyBpbnRlcnBvbGF0aW9ucyBvZiB0aGVtLiBBIEVUQzEvRVRDMiBpbmRpdmlkdWFsIG9yIGRp
ZmZlcmVudGlhbCBibG9jawotICAgICAgICAvLyBoYXMgMiBzdWJibG9ja3MuIEVhY2ggc3ViYmxv
Y2sgaGFzIG9uZSBjb2xvciBhbmQgYSBtb2RpZmllci4gV2UKLSAgICAgICAgLy8gc2VsZWN0IGF4
aXMgYnkgcHJpbmNpcGFsIGNvbXBvbmVudCBhbmFseXNpcyAoUENBKSB0byB1c2UgYXMKLSAgICAg
ICAgLy8gb3VyIHR3byBCQzEgZW5kcG9pbnRzIGFuZCB0aGVuIG1hcCBwaXhlbHMgdG8gQkMxIGJ5
IHByb2plY3Rpbmcgb24gdGhlCi0gICAgICAgIC8vIGxpbmUgYmV0d2VlbiB0aGUgdHdvIGVuZHBv
aW50cyBhbmQgY2hvb3NpbmcgdGhlIHJpZ2h0IGZyYWN0aW9uLgotICAgICAgICAvLwotICAgICAg
ICAvLyBJbiB0aGUgZnV0dXJlLCB3ZSBoYXZlIGEgcG90ZW50aWFsIGltcHJvdmVtZW50cyB0byB0
aGlzIGFsZ29yaXRobS4KLSAgICAgICAgLy8gMS4gV2UgZG9uJ3QgYWN0dWFsbHkgbmVlZCB0byBk
ZWNvZGUgRVRDIGJsb2NrcyB0byBSR0JzLiBJbnN0ZWFkLAotICAgICAgICAvLyAgICB0aGUgc3Vi
YmxvY2sgY29sb3JzIGFuZCBwaXhlbCBpbmRpY2VzIGFscmVheSBjb250YWlucyBlbm91Z2gKLSAg
ICAgICAgLy8gICAgaW5mb3JtYXRpb24gZm9yIHRyYW5zY29kZS4gQSBkaXJlY3QgbWFwcGluZyB3
b3VsZCBiZSBtb3JlCi0gICAgICAgIC8vICAgIGVmZmljaWVudCBoZXJlLgotCi0gICAgICAgIGNv
bnN0IGF1dG8gaW50ZW5zaXR5TW9kaWZpZXIgPQotICAgICAgICAgICAgbm9uT3BhcXVlUHVuY2hU
aHJvdWdoQWxwaGEgPyBpbnRlbnNpdHlNb2RpZmllck5vbk9wYXF1ZSA6IGludGVuc2l0eU1vZGlm
aWVyRGVmYXVsdDsKLQotICAgICAgICAvLyBDb21wdXRlIHRoZSBjb2xvcnMgdGhhdCBwaXhlbHMg
Y2FuIGhhdmUgaW4gZWFjaCBzdWJibG9jayBib3RoIGZvcgotICAgICAgICAvLyB0aGUgZGVjb2Rp
bmcgb2YgdGhlIFJHQkEgZGF0YSBhbmQgQkMxIGVuY29kaW5nCi0gICAgICAgIFI4RzhCOEE4IHN1
YmJsb2NrQ29sb3JzWzJdWzRdOwotICAgICAgICBmb3IgKHNpemVfdCBtb2RpZmllcklkeCA9IDA7
IG1vZGlmaWVySWR4IDwgNDsgbW9kaWZpZXJJZHgrKykKLSAgICAgICAgewotICAgICAgICAgICAg
Y29uc3QgaW50IGkxICAgICAgICAgICAgICAgICAgID0gaW50ZW5zaXR5TW9kaWZpZXJbdS5pZGh0
Lm1vZGUuaWRtLmN3MV1bbW9kaWZpZXJJZHhdOwotICAgICAgICAgICAgc3ViYmxvY2tDb2xvcnNb
MF1bbW9kaWZpZXJJZHhdID0gY3JlYXRlUkdCQShyMSArIGkxLCBnMSArIGkxLCBiMSArIGkxKTsK
LQotICAgICAgICAgICAgY29uc3QgaW50IGkyICAgICAgICAgICAgICAgICAgID0gaW50ZW5zaXR5
TW9kaWZpZXJbdS5pZGh0Lm1vZGUuaWRtLmN3Ml1bbW9kaWZpZXJJZHhdOwotICAgICAgICAgICAg
c3ViYmxvY2tDb2xvcnNbMV1bbW9kaWZpZXJJZHhdID0gY3JlYXRlUkdCQShyMiArIGkyLCBnMiAr
IGkyLCBiMiArIGkyKTsKLSAgICAgICAgfQotCi0gICAgICAgIFI4RzhCOEE4IHJnYmFCbG9ja1sx
Nl07Ci0gICAgICAgIC8vIERlY29kZSB0aGUgYmxvY2sgaW4gcmdiYUJsb2NrLgotICAgICAgICBm
b3IgKHNpemVfdCBibG9ja0lkeCA9IDA7IGJsb2NrSWR4IDwgMjsgYmxvY2tJZHgrKykKLSAgICAg
ICAgewotICAgICAgICAgICAgZGVjb2RlU3ViYmxvY2socmdiYUJsb2NrLCB4LCB5LCB3LCBoLCBh
bHBoYVZhbHVlcywgdS5pZGh0Lm1vZGUuaWRtLmZsaXBiaXQsIGJsb2NrSWR4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3ViYmxvY2tDb2xvcnMpOwotICAgICAgICB9Ci0gICAgICAgIGlm
IChub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSkKLSAgICAgICAgewotICAgICAgICAgICAgZGVj
b2RlUHVuY2hUaHJvdWdoQWxwaGFCbG9jayhyZWludGVycHJldF9jYXN0PHVpbnQ4X3QgKj4ocmdi
YUJsb2NrKSwgeCwgeSwgdywgaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZW9mKFI4RzhCOEE4KSAqIDQpOwotICAgICAgICB9Ci0KLSAgICAgICAgUjhHOEI4
QTggbWluQ29sb3IsIG1heENvbG9yOwotICAgICAgICBzZWxlY3RFbmRQb2ludFBDQShyZ2JhQmxv
Y2ssICZtaW5Db2xvciwgJm1heENvbG9yKTsKLQotICAgICAgICBwYWNrQkMxKGRlc3QsIHJnYmFC
bG9jaywgbWluQ29sb3IsIG1heENvbG9yLCAhbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpOwot
ICAgIH0KLQotICAgIHZvaWQgdHJhbnNjb2RlVEJsb2NrVG9CQzEodWludDhfdCAqZGVzdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCBhbHBoYVZhbHVlc1s0XVs0XSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxw
aGEpIGNvbnN0Ci0gICAgewotICAgICAgICAvLyBUT0RPIChtZ29uZyk6IFdpbGwgYmUgaW1wbGVt
ZW50ZWQgc29vbgotICAgICAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgfQotCi0gICAgdm9pZCB0
cmFuc2NvZGVIQmxvY2tUb0JDMSh1aW50OF90ICpkZXN0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB3LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB1aW50OF90IGFscGhhVmFsdWVzWzRdWzRdLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIC8vIFRPRE8gKG1nb25nKTogV2lsbCBiZSBpbXBsZW1lbnRlZCBzb29uCi0gICAgICAg
IFVOSU1QTEVNRU5URUQoKTsKLSAgICB9Ci0KLSAgICB2b2lkIHRyYW5zY29kZVBsYW5hckJsb2Nr
VG9CQzEodWludDhfdCAqZGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB5LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgYWxwaGFWYWx1ZXNbNF1bNF0pIGNvbnN0Ci0gICAg
ewotICAgICAgICAvLyBUT0RPIChtZ29uZyk6IFdpbGwgYmUgaW1wbGVtZW50ZWQgc29vbgotICAg
ICAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgfQotCi0gICAgLy8gU2luZ2xlIGNoYW5uZWwgdXRp
bGl0eSBmdW5jdGlvbnMKLSAgICBpbnQgZ2V0U2luZ2xlQ2hhbm5lbChzaXplX3QgeCwgc2l6ZV90
IHksIGJvb2wgaXNTaWduZWQpIGNvbnN0Ci0gICAgewotICAgICAgICBpbnQgY29kZXdvcmQgPSBp
c1NpZ25lZCA/IHUuc2NibGsuYmFzZV9jb2Rld29yZC5zIDogdS5zY2Jsay5iYXNlX2NvZGV3b3Jk
LnVzOwotICAgICAgICByZXR1cm4gY29kZXdvcmQgKyBnZXRTaW5nbGVDaGFubmVsTW9kaWZpZXIo
eCwgeSkgKiB1LnNjYmxrLm11bHRpcGxpZXI7Ci0gICAgfQotCi0gICAgaW50IGdldFNpbmdsZUNo
YW5uZWxJbmRleChzaXplX3QgeCwgc2l6ZV90IHkpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NF
UlQoeCA8IDQgJiYgeSA8IDQpOwotCi0gICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKLSAgICAg
ICAgc3dpdGNoICh4ICogNCArIHkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNhc2UgMDogcmV0
dXJuIHUuc2NibGsubWE7Ci0gICAgICAgICAgICBjYXNlIDE6IHJldHVybiB1LnNjYmxrLm1iOwot
ICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gdS5zY2Jsay5tYzEgPDwgMSB8IHUuc2NibGsubWMy
OwotICAgICAgICAgICAgY2FzZSAzOiByZXR1cm4gdS5zY2Jsay5tZDsKLSAgICAgICAgICAgIGNh
c2UgNDogcmV0dXJuIHUuc2NibGsubWU7Ci0gICAgICAgICAgICBjYXNlIDU6IHJldHVybiB1LnNj
YmxrLm1mMSA8PCAyIHwgdS5zY2Jsay5tZjI7Ci0gICAgICAgICAgICBjYXNlIDY6IHJldHVybiB1
LnNjYmxrLm1nOwotICAgICAgICAgICAgY2FzZSA3OiByZXR1cm4gdS5zY2Jsay5taDsKLSAgICAg
ICAgICAgIGNhc2UgODogcmV0dXJuIHUuc2NibGsubWk7Ci0gICAgICAgICAgICBjYXNlIDk6IHJl
dHVybiB1LnNjYmxrLm1qOwotICAgICAgICAgICAgY2FzZSAxMDogcmV0dXJuIHUuc2NibGsubWsx
IDw8IDEgfCB1LnNjYmxrLm1rMjsKLSAgICAgICAgICAgIGNhc2UgMTE6IHJldHVybiB1LnNjYmxr
Lm1sOwotICAgICAgICAgICAgY2FzZSAxMjogcmV0dXJuIHUuc2NibGsubW07Ci0gICAgICAgICAg
ICBjYXNlIDEzOiByZXR1cm4gdS5zY2Jsay5tbjEgPDwgMiB8IHUuc2NibGsubW4yOwotICAgICAg
ICAgICAgY2FzZSAxNDogcmV0dXJuIHUuc2NibGsubW87Ci0gICAgICAgICAgICBjYXNlIDE1OiBy
ZXR1cm4gdS5zY2Jsay5tcDsKLSAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7IHJl
dHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvbgotICAgIH0KLQot
ICAgIGludCBnZXRTaW5nbGVDaGFubmVsTW9kaWZpZXIoc2l6ZV90IHgsIHNpemVfdCB5KSBjb25z
dAotICAgIHsKLSAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgotICAgICAgICBzdGF0aWMgY29u
c3QgaW50IG1vZGlmaWVyVGFibGVbMTZdWzhdID0KLSAgICAgICAgewotICAgICAgICAgICAgeyAt
MywgLTYsICAtOSwgLTE1LCAyLCA1LCA4LCAxNCB9LAotICAgICAgICAgICAgeyAtMywgLTcsIC0x
MCwgLTEzLCAyLCA2LCA5LCAxMiB9LAotICAgICAgICAgICAgeyAtMiwgLTUsICAtOCwgLTEzLCAx
LCA0LCA3LCAxMiB9LAotICAgICAgICAgICAgeyAtMiwgLTQsICAtNiwgLTEzLCAxLCAzLCA1LCAx
MiB9LAotICAgICAgICAgICAgeyAtMywgLTYsICAtOCwgLTEyLCAyLCA1LCA3LCAxMSB9LAotICAg
ICAgICAgICAgeyAtMywgLTcsICAtOSwgLTExLCAyLCA2LCA4LCAxMCB9LAotICAgICAgICAgICAg
eyAtNCwgLTcsICAtOCwgLTExLCAzLCA2LCA3LCAxMCB9LAotICAgICAgICAgICAgeyAtMywgLTUs
ICAtOCwgLTExLCAyLCA0LCA3LCAxMCB9LAotICAgICAgICAgICAgeyAtMiwgLTYsICAtOCwgLTEw
LCAxLCA1LCA3LCAgOSB9LAotICAgICAgICAgICAgeyAtMiwgLTUsICAtOCwgLTEwLCAxLCA0LCA3
LCAgOSB9LAotICAgICAgICAgICAgeyAtMiwgLTQsICAtOCwgLTEwLCAxLCAzLCA3LCAgOSB9LAot
ICAgICAgICAgICAgeyAtMiwgLTUsICAtNywgLTEwLCAxLCA0LCA2LCAgOSB9LAotICAgICAgICAg
ICAgeyAtMywgLTQsICAtNywgLTEwLCAyLCAzLCA2LCAgOSB9LAotICAgICAgICAgICAgeyAtMSwg
LTIsICAtMywgLTEwLCAwLCAxLCAyLCAgOSB9LAotICAgICAgICAgICAgeyAtNCwgLTYsICAtOCwg
IC05LCAzLCA1LCA3LCAgOCB9LAotICAgICAgICAgICAgeyAtMywgLTUsICAtNywgIC05LCAyLCA0
LCA2LCAgOCB9Ci0gICAgICAgIH07Ci0gICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvbgotCi0gICAg
ICAgIHJldHVybiBtb2RpZmllclRhYmxlW3Uuc2NibGsudGFibGVfaW5kZXhdW2dldFNpbmdsZUNo
YW5uZWxJbmRleCh4LCB5KV07Ci0gICAgfQotfTsKLQotLy8gY2xhbmctZm9ybWF0IG9mZgotc3Rh
dGljIGNvbnN0IHVpbnQ4X3QgRGVmYXVsdEVUQ0FscGhhVmFsdWVzWzRdWzRdID0KLXsKLSAgICB7
IDI1NSwgMjU1LCAyNTUsIDI1NSB9LAotICAgIHsgMjU1LCAyNTUsIDI1NSwgMjU1IH0sCi0gICAg
eyAyNTUsIDI1NSwgMjU1LCAyNTUgfSwKLSAgICB7IDI1NSwgMjU1LCAyNTUsIDI1NSB9LAotfTsK
LS8vIGNsYW5nLWZvcm1hdCBvbgotCi12b2lkIExvYWRSMTFFQUNUb1I4KHNpemVfdCB3aWR0aCwK
LSAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwK
LSAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCi0gICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgIHVpbnQ4
X3QgKm91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAot
ICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAg
ICAgICAgICAgYm9vbCBpc1NpZ25lZCkKLXsKLSAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRl
cHRoOyB6KyspCi0gICAgewotICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsg
eSArPSA0KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBFVEMyQmxvY2sgKnNvdXJjZVJv
dyA9Ci0gICAgICAgICAgICAgICAgT2Zmc2V0RGF0YVBvaW50ZXI8RVRDMkJsb2NrPihpbnB1dCwg
eSAvIDQsIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICB1
aW50OF90ICpkZXN0Um93ID0KLSAgICAgICAgICAgICAgICBPZmZzZXREYXRhUG9pbnRlcjx1aW50
OF90PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKLQot
ICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCArPSA0KQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGNvbnN0IEVUQzJCbG9jayAqc291cmNlQmxvY2sgPSBz
b3VyY2VSb3cgKyAoeCAvIDQpOwotICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmRlc3RQaXhlbHMg
ICAgICAgICAgPSBkZXN0Um93ICsgeDsKLQotICAgICAgICAgICAgICAgIHNvdXJjZUJsb2NrLT5k
ZWNvZGVBc1NpbmdsZUNoYW5uZWwoZGVzdFBpeGVscywgeCwgeSwgd2lkdGgsIGhlaWdodCwgMSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1
dFJvd1BpdGNoLCBpc1NpZ25lZCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19
Ci0KLXZvaWQgTG9hZFJHMTFFQUNUb1JHOChzaXplX3Qgd2lkdGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgs
Ci0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpv
dXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAotICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoLAotICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaXNTaWduZWQpCi17Ci0gICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBk
ZXB0aDsgeisrKQotICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7
IHkgKz0gNCkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgRVRDMkJsb2NrICpzb3VyY2VS
b3cgPQotICAgICAgICAgICAgICAgIE9mZnNldERhdGFQb2ludGVyPEVUQzJCbG9jaz4oaW5wdXQs
IHkgLyA0LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAg
dWludDhfdCAqZGVzdFJvdyA9Ci0gICAgICAgICAgICAgICAgT2Zmc2V0RGF0YVBvaW50ZXI8dWlu
dDhfdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7Ci0K
LSAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHggKz0gNCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICB1aW50OF90ICpkZXN0UGl4ZWxzUmVkICAgICAgICAg
ID0gZGVzdFJvdyArICh4ICogMik7Ci0gICAgICAgICAgICAgICAgY29uc3QgRVRDMkJsb2NrICpz
b3VyY2VCbG9ja1JlZCA9IHNvdXJjZVJvdyArICh4IC8gMik7Ci0gICAgICAgICAgICAgICAgc291
cmNlQmxvY2tSZWQtPmRlY29kZUFzU2luZ2xlQ2hhbm5lbChkZXN0UGl4ZWxzUmVkLCB4LCB5LCB3
aWR0aCwgaGVpZ2h0LCAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3V0cHV0Um93UGl0Y2gsIGlzU2lnbmVkKTsKLQotICAgICAgICAgICAg
ICAgIHVpbnQ4X3QgKmRlc3RQaXhlbHNHcmVlbiAgICAgICAgICA9IGRlc3RQaXhlbHNSZWQgKyAx
OwotICAgICAgICAgICAgICAgIGNvbnN0IEVUQzJCbG9jayAqc291cmNlQmxvY2tHcmVlbiA9IHNv
dXJjZUJsb2NrUmVkICsgMTsKLSAgICAgICAgICAgICAgICBzb3VyY2VCbG9ja0dyZWVuLT5kZWNv
ZGVBc1NpbmdsZUNoYW5uZWwoZGVzdFBpeGVsc0dyZWVuLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCAy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvdXRwdXRSb3dQaXRjaCwgaXNTaWduZWQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfQotfQotCi12b2lkIExvYWRFVEMyUkdCOFRvUkdCQTgoc2l6ZV90IHdpZHRoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qg
KmlucHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgb3V0cHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHB1bmNo
dGhyb3VnaEFscGhhKQotewotICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykK
LSAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5ICs9IDQpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IEVUQzJCbG9jayAqc291cmNlUm93ID0KLSAgICAg
ICAgICAgICAgICBPZmZzZXREYXRhUG9pbnRlcjxFVEMyQmxvY2s+KGlucHV0LCB5IC8gNCwgeiwg
aW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIHVpbnQ4X3QgKmRl
c3RSb3cgPQotICAgICAgICAgICAgICAgIE9mZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+KG91dHB1
dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOwotCi0gICAgICAgICAg
ICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4ICs9IDQpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgY29uc3QgRVRDMkJsb2NrICpzb3VyY2VCbG9jayA9IHNvdXJjZVJvdyAr
ICh4IC8gNCk7Ci0gICAgICAgICAgICAgICAgdWludDhfdCAqZGVzdFBpeGVscyAgICAgICAgICA9
IGRlc3RSb3cgKyAoeCAqIDQpOwotCi0gICAgICAgICAgICAgICAgc291cmNlQmxvY2stPmRlY29k
ZUFzUkdCKGRlc3RQaXhlbHMsIHgsIHksIHdpZHRoLCBoZWlnaHQsIG91dHB1dFJvd1BpdGNoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0RVRDQWxwaGFW
YWx1ZXMsIHB1bmNodGhyb3VnaEFscGhhKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLX0KLQotdm9pZCBMb2FkRVRDMlJHQjhUb0JDMShzaXplX3Qgd2lkdGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAotICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAg
ICB1aW50OF90ICpvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRS
b3dQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gs
Ci0gICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHVuY2h0aHJvdWdoQWxwaGEpCi17Ci0gICAg
Zm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQotICAgIHsKLSAgICAgICAgZm9yIChz
aXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkgKz0gNCkKLSAgICAgICAgewotICAgICAgICAgICAg
Y29uc3QgRVRDMkJsb2NrICpzb3VyY2VSb3cgPQotICAgICAgICAgICAgICAgIE9mZnNldERhdGFQ
b2ludGVyPEVUQzJCbG9jaz4oaW5wdXQsIHkgLyA0LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERl
cHRoUGl0Y2gpOwotICAgICAgICAgICAgdWludDhfdCAqZGVzdFJvdyA9Ci0gICAgICAgICAgICAg
ICAgT2Zmc2V0RGF0YVBvaW50ZXI8dWludDhfdD4ob3V0cHV0LCB5IC8gNCwgeiwgb3V0cHV0Um93
UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOwotCi0gICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0g
MDsgeCA8IHdpZHRoOyB4ICs9IDQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29u
c3QgRVRDMkJsb2NrICpzb3VyY2VCbG9jayA9IHNvdXJjZVJvdyArICh4IC8gNCk7Ci0gICAgICAg
ICAgICAgICAgdWludDhfdCAqZGVzdFBpeGVscyAgICAgICAgICA9IGRlc3RSb3cgKyAoeCAqIDIp
OwotCi0gICAgICAgICAgICAgICAgc291cmNlQmxvY2stPnRyYW5zY29kZUFzQkMxKGRlc3RQaXhl
bHMsIHgsIHksIHdpZHRoLCBoZWlnaHQsIERlZmF1bHRFVENBbHBoYVZhbHVlcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVuY2h0aHJvdWdoQWxwaGEpOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIExvYWRFVEMyUkdCQThU
b1JHQkE4KHNpemVfdCB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhl
aWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4
X3QgKm91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1Bp
dGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzcmdiKQotewotICAgIHVpbnQ4X3QgZGVj
b2RlZEFscGhhVmFsdWVzWzRdWzRdOwotCi0gICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0
aDsgeisrKQotICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkg
Kz0gNCkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgRVRDMkJsb2NrICpzb3VyY2VSb3cg
PQotICAgICAgICAgICAgICAgIE9mZnNldERhdGFQb2ludGVyPEVUQzJCbG9jaz4oaW5wdXQsIHkg
LyA0LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgdWlu
dDhfdCAqZGVzdFJvdyA9Ci0gICAgICAgICAgICAgICAgT2Zmc2V0RGF0YVBvaW50ZXI8dWludDhf
dD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7Ci0KLSAg
ICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHggKz0gNCkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBjb25zdCBFVEMyQmxvY2sgKnNvdXJjZUJsb2NrQWxwaGEg
PSBzb3VyY2VSb3cgKyAoeCAvIDIpOwotICAgICAgICAgICAgICAgIHNvdXJjZUJsb2NrQWxwaGEt
PmRlY29kZUFzU2luZ2xlQ2hhbm5lbCgKLSAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDx1aW50OF90ICo+KGRlY29kZWRBbHBoYVZhbHVlcyksIHgsIHksIHdpZHRoLCBoZWlnaHQs
IDEsIDQsCi0gICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKLQotICAgICAgICAgICAgICAgIHVp
bnQ4X3QgKmRlc3RQaXhlbHMgICAgICAgICAgICAgPSBkZXN0Um93ICsgKHggKiA0KTsKLSAgICAg
ICAgICAgICAgICBjb25zdCBFVEMyQmxvY2sgKnNvdXJjZUJsb2NrUkdCID0gc291cmNlQmxvY2tB
bHBoYSArIDE7Ci0gICAgICAgICAgICAgICAgc291cmNlQmxvY2tSR0ItPmRlY29kZUFzUkdCKGRl
c3RQaXhlbHMsIHgsIHksIHdpZHRoLCBoZWlnaHQsIG91dHB1dFJvd1BpdGNoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVkQWxwaGFWYWx1ZXMsIGZh
bHNlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotfSAgLy8gYW5vbnlt
b3VzIG5hbWVzcGFjZQotCi12b2lkIExvYWRFVEMxUkdCOFRvUkdCQTgoc2l6ZV90IHdpZHRoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVp
bnQ4X3QgKmlucHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1Bp
dGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKLXsKLSAgICBMb2FkRVRDMlJHQjhUb1JHQkE4KHdp
ZHRoLCBoZWlnaHQsIGRlcHRoLCBpbnB1dCwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNo
LCBvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0
RGVwdGhQaXRjaCwgZmFsc2UpOwotfQotCi12b2lkIExvYWRFVEMxUkdCOFRvQkMxKHNpemVfdCB3
aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
aW50OF90ICppbnB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0
Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
b3V0cHV0RGVwdGhQaXRjaCkKLXsKLSAgICBMb2FkRVRDMlJHQjhUb0JDMSh3aWR0aCwgaGVpZ2h0
LCBkZXB0aCwgaW5wdXQsIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCwgb3V0cHV0LAot
ICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoLCBm
YWxzZSk7Ci19Ci0KLXZvaWQgTG9hZEVBQ1IxMVRvUjgoc2l6ZV90IHdpZHRoLAotICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVw
dGgsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAotICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0
LAotICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCi0gICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQotewotICAgIExvYWRSMTFFQUNUb1I4
KHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBpbnB1dCwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBp
dGNoLCBvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERl
cHRoUGl0Y2gsIGZhbHNlKTsKLX0KLQotdm9pZCBMb2FkRUFDUjExU1RvUjgoc2l6ZV90IHdpZHRo
LAotICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKLSAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlu
cHV0LAotICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCi0gICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAg
ICAgdWludDhfdCAqb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJv
d1BpdGNoLAotICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCi17
Ci0gICAgTG9hZFIxMUVBQ1RvUjgod2lkdGgsIGhlaWdodCwgZGVwdGgsIGlucHV0LCBpbnB1dFJv
d1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gsIG91dHB1dCwKLSAgICAgICAgICAgICAgICAgICBvdXRw
dXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCwgdHJ1ZSk7Ci19Ci0KLXZvaWQgTG9hZEVBQ1JH
MTFUb1JHOChzaXplX3Qgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdo
dCwKLSAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGlucHV0Um93UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQ
aXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAotICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQotewotICAgIExvYWRSRzExRUFDVG9SRzgod2lkdGgs
IGhlaWdodCwgZGVwdGgsIGlucHV0LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gsIG91
dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBp
dGNoLCBmYWxzZSk7Ci19Ci0KLXZvaWQgTG9hZEVBQ1JHMTFTVG9SRzgoc2l6ZV90IHdpZHRoLAot
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qg
KmlucHV0LAotICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgb3V0cHV0Um93UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRE
ZXB0aFBpdGNoKQotewotICAgIExvYWRSRzExRUFDVG9SRzgod2lkdGgsIGhlaWdodCwgZGVwdGgs
IGlucHV0LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gsIG91dHB1dCwKLSAgICAgICAg
ICAgICAgICAgICAgIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoLCB0cnVlKTsKLX0K
LQotdm9pZCBMb2FkRVRDMlJHQjhUb1JHQkE4KHNpemVfdCB3aWR0aCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgb3V0cHV0Um93UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1
dERlcHRoUGl0Y2gpCi17Ci0gICAgTG9hZEVUQzJSR0I4VG9SR0JBOCh3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCwgaW5wdXQsIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCwgb3V0cHV0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gsIGZh
bHNlKTsKLX0KLQotdm9pZCBMb2FkRVRDMlNSR0I4VG9SR0JBOChzaXplX3Qgd2lkdGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlu
dDhfdCAqaW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1Bp
dGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCi17Ci0gICAgTG9hZEVUQzJSR0I4VG9SR0JB
OCh3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgaW5wdXQsIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQ
aXRjaCwgb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0Um93UGl0Y2gsIG91
dHB1dERlcHRoUGl0Y2gsIGZhbHNlKTsKLX0KLQotdm9pZCBMb2FkRVRDMlJHQjhBMVRvUkdCQTgo
c2l6ZV90IHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhf
dCAqb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1Bp
dGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gp
Ci17Ci0gICAgTG9hZEVUQzJSR0I4VG9SR0JBOCh3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgaW5wdXQs
IGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCwgb3V0cHV0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gsIHRydWUpOwotfQotCi12
b2lkIExvYWRFVEMyU1JHQjhBMVRvUkdCQTgoc2l6ZV90IHdpZHRoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qg
KmlucHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNo
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKLXsKLSAgICBMb2FkRVRDMlJHQjhU
b1JHQkE4KHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBpbnB1dCwgaW5wdXRSb3dQaXRjaCwgaW5wdXRE
ZXB0aFBpdGNoLCBvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRSb3dQaXRj
aCwgb3V0cHV0RGVwdGhQaXRjaCwgdHJ1ZSk7Ci19Ci0KLXZvaWQgTG9hZEVUQzJSR0JBOFRvUkdC
QTgoc2l6ZV90IHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAq
b3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQotewot
ICAgIExvYWRFVEMyUkdCQThUb1JHQkE4KHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBpbnB1dCwgaW5w
dXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoLCBvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gsIGZhbHNlKTsKLX0KLQotdm9p
ZCBMb2FkRVRDMlNSR0JBOFRvU1JHQkE4KHNpemVfdCB3aWR0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpp
bnB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCi17Ci0gICAgTG9hZEVUQzJSR0JBOFRv
UkdCQTgod2lkdGgsIGhlaWdodCwgZGVwdGgsIGlucHV0LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERl
cHRoUGl0Y2gsIG91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRSb3dQaXRj
aCwgb3V0cHV0RGVwdGhQaXRjaCwgdHJ1ZSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSByeApJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9sb2Fk
aW1hZ2VfZXRjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9sb2FkaW1hZ2VfZXRjLmgJKHJldmlzaW9uIDIwNzgwNCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvbG9hZGlt
YWdlX2V0Yy5oCShub25leGlzdGVudCkKQEAgLTEsMTQwICswLDAgQEAKLS8vCi0vLyBDb3B5cmln
aHQgKGMpIDIwMTMtMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
LS8vCi0KLS8vIGxvYWRpbWFnZV9ldGMuaDogRGVjb2RlcyBFVEMgYW5kIEVBQyBlbmNvZGVkIHRl
eHR1cmVzLgotCi0jaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9MT0FESU1BR0VfRVRDX0hf
Ci0jZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9MT0FESU1BR0VfRVRDX0hfCi0KLSNpbmNs
dWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgiCi0KLSNpbmNsdWRlIDxzdGRpbnQuaD4KLQotbmFt
ZXNwYWNlIHJ4Ci17Ci0KLXZvaWQgTG9hZEVUQzFSR0I4VG9SR0JBOChzaXplX3Qgd2lkdGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlu
dDhfdCAqaW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0
Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKLQotdm9pZCBMb2FkRVRDMVJHQjhUb0JDMShzaXpl
X3Qgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCi0gICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgdWludDhfdCAqaW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJv
d1BpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAot
ICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IG91dHB1dERlcHRoUGl0Y2gpOwotCi12b2lkIExvYWRFQUNSMTFUb1I4KHNpemVfdCB3aWR0
aCwKLSAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKLSAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1
dCwKLSAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCi0gICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgIHVp
bnQ4X3QgKm91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNo
LAotICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7Ci0KLXZvaWQg
TG9hZEVBQ1IxMVNUb1I4KHNpemVfdCB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCi0gICAgICAgICAg
ICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKLSAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBpbnB1dFJvd1BpdGNoLAotICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVw
dGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKLSAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKLQotdm9pZCBMb2FkRUFDUkcxMVRvUkc4KHNpemVf
dCB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAotICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
aW50OF90ICppbnB1dCwKLSAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRj
aCwKLSAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgb3V0cHV0Um93UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1
dERlcHRoUGl0Y2gpOwotCi12b2lkIExvYWRFQUNSRzExU1RvUkc4KHNpemVfdCB3aWR0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpp
bnB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCi0gICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IG91dHB1dFJvd1BpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVw
dGhQaXRjaCk7Ci0KLXZvaWQgTG9hZEVUQzJSR0I4VG9SR0JBOChzaXplX3Qgd2lkdGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhf
dCAqaW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBvdXRwdXREZXB0aFBpdGNoKTsKLQotdm9pZCBMb2FkRVRDMlNSR0I4VG9SR0JBOChzaXpl
X3Qgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBpbnB1dFJvd1BpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5w
dXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOwotCi12b2lkIExv
YWRFVEMyUkdCOEExVG9SR0JBOChzaXplX3Qgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRl
cHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgb3V0cHV0RGVwdGhQaXRjaCk7Ci0KLXZvaWQgTG9hZEVUQzJTUkdCOEExVG9SR0JBOChzaXpl
X3Qgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
OF90ICpvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJv
d1BpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBp
dGNoKTsKLQotdm9pZCBMb2FkRVRDMlJHQkE4VG9SR0JBOChzaXplX3Qgd2lkdGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhf
dCAqaW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNo
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOwotCi12b2lkIExvYWRFVEMyU1JHQkE4VG9TUkdC
QTgoc2l6ZV90IHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWln
aHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDhfdCAqb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBv
dXRwdXRSb3dQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0
RGVwdGhQaXRjaCk7Ci19Ci0KLSNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfRDNEX0xPQURJ
TUFHRV9FVENfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkOS9CbGl0OS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0JsaXQ5LmNwcAkocmV2aXNp
b24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2Q5L0JsaXQ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDEzICsxNDUsNyBA
QCBnbDo6RXJyb3IgQmxpdDk6OnNldFNoYWRlcihTaGFkZXJJZCBzb3VyCiAgICAgewogICAgICAg
ICBjb25zdCBCWVRFKiBzaGFkZXJDb2RlID0gZ19zaGFkZXJDb2RlW3NvdXJjZV07CiAgICAgICAg
IHNpemVfdCBzaGFkZXJTaXplID0gZ19zaGFkZXJTaXplW3NvdXJjZV07Ci0KLSAgICAgICAgZ2w6
OkVycm9yIGVycm9yID0gKG1SZW5kZXJlci0+KmNyZWF0ZVNoYWRlcikocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBEV09SRCo+KHNoYWRlckNvZGUpLCBzaGFkZXJTaXplLCAmc2hhZGVyKTsKLSAgICAg
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVy
cm9yOwotICAgICAgICB9Ci0KKyAgICAgICAgQU5HTEVfVFJZKChtUmVuZGVyZXItPipjcmVhdGVT
aGFkZXIpKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRFdPUkQqPihzaGFkZXJDb2RlKSwgc2hhZGVy
U2l6ZSwgJnNoYWRlcikpOwogICAgICAgICBtQ29tcGlsZWRTaGFkZXJzW3NvdXJjZV0gPSBzaGFk
ZXI7CiAgICAgfQogCkBAIC0xOTAsMTggKzE4NCwxMCBAQCBSRUNUIEJsaXQ5OjpnZXRTdXJmYWNl
UmVjdChJRGlyZWN0M0RTdXJmCiAKIGdsOjpFcnJvciBCbGl0OTo6Ym94RmlsdGVyKElEaXJlY3Qz
RFN1cmZhY2U5ICpzb3VyY2UsIElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0KQogewotICAgIGdsOjpF
cnJvciBlcnJvciA9IGluaXRpYWxpemUoKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkoaW5pdGlhbGl6
ZSgpKTsKIAogICAgIElEaXJlY3QzRFRleHR1cmU5ICp0ZXh0dXJlID0gTlVMTDsKLSAgICBlcnJv
ciA9IGNvcHlTdXJmYWNlVG9UZXh0dXJlKHNvdXJjZSwgZ2V0U3VyZmFjZVJlY3Qoc291cmNlKSwg
JnRleHR1cmUpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1
cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShjb3B5U3VyZmFjZVRvVGV4dHVyZShzb3Vy
Y2UsIGdldFN1cmZhY2VSZWN0KHNvdXJjZSksICZ0ZXh0dXJlKSk7CiAKICAgICBJRGlyZWN0M0RE
ZXZpY2U5ICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwogCkBAIC0yMzAsMjEgKzIx
NiwxMyBAQCBnbDo6RXJyb3IgQmxpdDk6OmJveEZpbHRlcihJRGlyZWN0M0RTdXJmCiAKIGdsOjpF
cnJvciBCbGl0OTo6Y29weTJEKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIGNv
bnN0IFJFQ1QgJnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0LCBjb25zdCBnbDo6T2Zmc2V0
ICZkZXN0T2Zmc2V0LCBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwgR0xpbnQgbGV2ZWwpCiB7Ci0g
ICAgZ2w6OkVycm9yIGVycm9yID0gaW5pdGlhbGl6ZSgpOwotICAgIGlmIChlcnJvci5pc0Vycm9y
KCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShp
bml0aWFsaXplKCkpOwogCiAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqY29s
b3JidWZmZXIgPSBmcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXIoMCk7CiAgICAgQVNTRVJUKGNv
bG9yYnVmZmVyKTsKIAogICAgIFJlbmRlclRhcmdldDkgKnJlbmRlclRhcmdldDkgPSBudWxscHRy
OwotICAgIGVycm9yID0gY29sb3JidWZmZXItPmdldFJlbmRlclRhcmdldCgmcmVuZGVyVGFyZ2V0
OSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJv
cjsKLSAgICB9CisgICAgQU5HTEVfVFJZKGNvbG9yYnVmZmVyLT5nZXRSZW5kZXJUYXJnZXQoJnJl
bmRlclRhcmdldDkpKTsKICAgICBBU1NFUlQocmVuZGVyVGFyZ2V0OSk7CiAKICAgICBJRGlyZWN0
M0RTdXJmYWNlOSAqc291cmNlID0gcmVuZGVyVGFyZ2V0OS0+Z2V0U3VyZmFjZSgpOwpAQCAtMjUy
LDcgKzIzMCw3IEBAIGdsOjpFcnJvciBCbGl0OTo6Y29weTJEKGNvbnN0IGdsOjpGcmFtZWIKIAog
ICAgIElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0U3VyZmFjZSA9IE5VTEw7CiAgICAgVGV4dHVyZVN0
b3JhZ2U5ICpzdG9yYWdlOSAgICAgID0gR2V0QXM8VGV4dHVyZVN0b3JhZ2U5PihzdG9yYWdlKTsK
LSAgICBlcnJvciA9IHN0b3JhZ2U5LT5nZXRTdXJmYWNlTGV2ZWwoR0xfVEVYVFVSRV8yRCwgbGV2
ZWwsIHRydWUsICZkZXN0U3VyZmFjZSk7CisgICAgZ2w6OkVycm9yIGVycm9yID0gc3RvcmFnZTkt
PmdldFN1cmZhY2VMZXZlbChHTF9URVhUVVJFXzJELCBsZXZlbCwgdHJ1ZSwgJmRlc3RTdXJmYWNl
KTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKICAgICAgICAgU2FmZVJlbGVhc2Uo
c291cmNlKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkOS9CdWZmZXI5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQnVmZmVyOS5jcHAJKHJldmlz
aW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkOS9CdWZmZXI5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNyBA
QCBCdWZmZXI5Ojp+QnVmZmVyOSgpCiAgICAgbVNpemUgPSAwOwogfQogCi1nbDo6RXJyb3IgQnVm
ZmVyOTo6c2V0RGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSwgR0xlbnVtIHVzYWdl
KQorZ2w6OkVycm9yIEJ1ZmZlcjk6OnNldERhdGEoR0xlbnVtIC8qdGFyZ2V0Ki8sIGNvbnN0IHZv
aWQgKmRhdGEsIHNpemVfdCBzaXplLCBHTGVudW0gdXNhZ2UpCiB7CiAgICAgaWYgKHNpemUgPiBt
TWVtb3J5LnNpemUoKSkKICAgICB7CkBAIC01MSw3ICs1MSw3IEBAIGdsOjpFcnJvciBCdWZmZXI5
OjpnZXREYXRhKGNvbnN0IHVpbnQ4X3QKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9S
KTsKIH0KIAotZ2w6OkVycm9yIEJ1ZmZlcjk6OnNldFN1YkRhdGEoY29uc3Qgdm9pZCogZGF0YSwg
c2l6ZV90IHNpemUsIHNpemVfdCBvZmZzZXQpCitnbDo6RXJyb3IgQnVmZmVyOTo6c2V0U3ViRGF0
YShHTGVudW0gLyp0YXJnZXQqLywgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIHNpemVf
dCBvZmZzZXQpCiB7CiAgICAgaWYgKG9mZnNldCArIHNpemUgPiBtTWVtb3J5LnNpemUoKSkKICAg
ICB7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDkvQnVmZmVyOS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9CdWZmZXI5LmgJKHJldmlzaW9uIDIwNzgw
NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkOS9CdWZmZXI5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEzICsyOSwxNiBAQCBjbGFzcyBC
dWZmZXI5IDogcHVibGljIEJ1ZmZlckQzRAogICAgIGdsOjpFcnJvciBnZXREYXRhKGNvbnN0IHVp
bnQ4X3QgKipvdXREYXRhKSBvdmVycmlkZTsKIAogICAgIC8vIEJ1ZmZlckltcGwgaW1wbGVtZW50
YXRpb24KLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBzZXREYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNp
emVfdCBzaXplLCBHTGVudW0gdXNhZ2UpOwotICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldFN1YkRh
dGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCBvZmZzZXQpOwotICAgIHZp
cnR1YWwgZ2w6OkVycm9yIGNvcHlTdWJEYXRhKEJ1ZmZlckltcGwqIHNvdXJjZSwgR0xpbnRwdHIg
c291cmNlT2Zmc2V0LCBHTGludHB0ciBkZXN0T2Zmc2V0LCBHTHNpemVpcHRyIHNpemUpOwotICAg
IHZpcnR1YWwgZ2w6OkVycm9yIG1hcChHTGVudW0gYWNjZXNzLCBHTHZvaWQgKiptYXBQdHIpOwot
ICAgIHZpcnR1YWwgZ2w6OkVycm9yIG1hcFJhbmdlKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5n
dGgsIEdMYml0ZmllbGQgYWNjZXNzLCBHTHZvaWQgKiptYXBQdHIpOwotICAgIHZpcnR1YWwgZ2w6
OkVycm9yIHVubWFwKEdMYm9vbGVhbiAqcmVzdWx0KTsKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBt
YXJrVHJhbnNmb3JtRmVlZGJhY2tVc2FnZSgpOworICAgIGdsOjpFcnJvciBzZXREYXRhKEdMZW51
bSB0YXJnZXQsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCBHTGVudW0gdXNhZ2UpIG92
ZXJyaWRlOworICAgIGdsOjpFcnJvciBzZXRTdWJEYXRhKEdMZW51bSB0YXJnZXQsIGNvbnN0IHZv
aWQgKmRhdGEsIHNpemVfdCBzaXplLCBzaXplX3Qgb2Zmc2V0KSBvdmVycmlkZTsKKyAgICBnbDo6
RXJyb3IgY29weVN1YkRhdGEoQnVmZmVySW1wbCAqc291cmNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludHB0ciBzb3VyY2VPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50cHRyIGRlc3RPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlw
dHIgc2l6ZSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIG1hcChHTGVudW0gYWNjZXNzLCBHTHZv
aWQgKiptYXBQdHIpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBtYXBSYW5nZShzaXplX3Qgb2Zm
c2V0LCBzaXplX3QgbGVuZ3RoLCBHTGJpdGZpZWxkIGFjY2VzcywgR0x2b2lkICoqbWFwUHRyKSBv
dmVycmlkZTsKKyAgICBnbDo6RXJyb3IgdW5tYXAoR0xib29sZWFuICpyZXN1bHQpIG92ZXJyaWRl
OworICAgIGdsOjpFcnJvciBtYXJrVHJhbnNmb3JtRmVlZGJhY2tVc2FnZSgpIG92ZXJyaWRlOwog
CiAgIHByaXZhdGU6CiAgICAgTWVtb3J5QnVmZmVyIG1NZW1vcnk7CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQ29udGV4dDkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkOS9Db250ZXh0OS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0NvbnRleHQ5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI1OCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIENvbnRleHQ5Ogor
Ly8gICBEM0Q5LXNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgYXNzb2NpYXRlZCB3aXRoIGEgR0wgQ29u
dGV4dC4KKy8vCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9Db250ZXh0
OS5oIgorCisjaW5jbHVkZSAiY29tbW9uL3N0cmluZ191dGlscy5oIgorI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2QzZC9Db21waWxlckQzRC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL2QzZC9TaGFkZXJEM0QuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvUHJv
Z3JhbUQzRC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5kZXJidWZmZXJE
M0QuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvU2FtcGxlckQzRC5oIgorI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9UZXh0dXJlRDNELmgiCisjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQnVmZmVyOS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2Q5L0ZlbmNlOS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2Q5L0ZyYW1lYnVmZmVyOS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2Q5L1F1ZXJ5OS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1JlbmRl
cmVyOS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1N0YXRlTWFuYWdl
cjkuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9WZXJ0ZXhBcnJheTku
aCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK0NvbnRleHQ5OjpDb250ZXh0OShjb25zdCBnbDo6Q29u
dGV4dFN0YXRlICZzdGF0ZSwgUmVuZGVyZXI5ICpyZW5kZXJlcikKKyAgICA6IENvbnRleHRJbXBs
KHN0YXRlKSwgbVJlbmRlcmVyKHJlbmRlcmVyKQoreworfQorCitDb250ZXh0OTo6fkNvbnRleHQ5
KCkKK3sKK30KKworZ2w6OkVycm9yIENvbnRleHQ5Ojppbml0aWFsaXplKCkKK3sKKyAgICByZXR1
cm4gZ2w6Ok5vRXJyb3IoKTsKK30KKworQ29tcGlsZXJJbXBsICpDb250ZXh0OTo6Y3JlYXRlQ29t
cGlsZXIoKQoreworICAgIHJldHVybiBuZXcgQ29tcGlsZXJEM0QoU0hfSExTTF8zXzBfT1VUUFVU
KTsKK30KKworU2hhZGVySW1wbCAqQ29udGV4dDk6OmNyZWF0ZVNoYWRlcihjb25zdCBnbDo6U2hh
ZGVyU3RhdGUgJmRhdGEpCit7CisgICAgcmV0dXJuIG5ldyBTaGFkZXJEM0QoZGF0YSwgbVJlbmRl
cmVyLT5nZXRXb3JrYXJvdW5kcygpKTsKK30KKworUHJvZ3JhbUltcGwgKkNvbnRleHQ5OjpjcmVh
dGVQcm9ncmFtKGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJmRhdGEpCit7CisgICAgcmV0dXJuIG5l
dyBQcm9ncmFtRDNEKGRhdGEsIG1SZW5kZXJlcik7Cit9CisKK0ZyYW1lYnVmZmVySW1wbCAqQ29u
dGV4dDk6OmNyZWF0ZUZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZkYXRh
KQoreworICAgIHJldHVybiBuZXcgRnJhbWVidWZmZXI5KGRhdGEsIG1SZW5kZXJlcik7Cit9CisK
K1RleHR1cmVJbXBsICpDb250ZXh0OTo6Y3JlYXRlVGV4dHVyZShjb25zdCBnbDo6VGV4dHVyZVN0
YXRlICZzdGF0ZSkKK3sKKyAgICBzd2l0Y2ggKHN0YXRlLmdldFRhcmdldCgpKQorICAgIHsKKyAg
ICAgICAgY2FzZSBHTF9URVhUVVJFXzJEOgorICAgICAgICAgICAgcmV0dXJuIG5ldyBUZXh0dXJl
RDNEXzJEKHN0YXRlLCBtUmVuZGVyZXIpOworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9N
QVA6CisgICAgICAgICAgICByZXR1cm4gbmV3IFRleHR1cmVEM0RfQ3ViZShzdGF0ZSwgbVJlbmRl
cmVyKTsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0VYVEVSTkFMX09FUzoKKyAgICAgICAgICAg
IHJldHVybiBuZXcgVGV4dHVyZUQzRF9FeHRlcm5hbChzdGF0ZSwgbVJlbmRlcmVyKTsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgfQorICAgIHJldHVy
biBudWxscHRyOworfQorCitSZW5kZXJidWZmZXJJbXBsICpDb250ZXh0OTo6Y3JlYXRlUmVuZGVy
YnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbmV3IFJlbmRlcmJ1ZmZlckQzRChtUmVuZGVyZXIpOwor
fQorCitCdWZmZXJJbXBsICpDb250ZXh0OTo6Y3JlYXRlQnVmZmVyKCkKK3sKKyAgICByZXR1cm4g
bmV3IEJ1ZmZlcjkobVJlbmRlcmVyKTsKK30KKworVmVydGV4QXJyYXlJbXBsICpDb250ZXh0OTo6
Y3JlYXRlVmVydGV4QXJyYXkoY29uc3QgZ2w6OlZlcnRleEFycmF5U3RhdGUgJmRhdGEpCit7Cisg
ICAgcmV0dXJuIG5ldyBWZXJ0ZXhBcnJheTkoZGF0YSk7Cit9CisKK1F1ZXJ5SW1wbCAqQ29udGV4
dDk6OmNyZWF0ZVF1ZXJ5KEdMZW51bSB0eXBlKQoreworICAgIHJldHVybiBuZXcgUXVlcnk5KG1S
ZW5kZXJlciwgdHlwZSk7Cit9CisKK0ZlbmNlTlZJbXBsICpDb250ZXh0OTo6Y3JlYXRlRmVuY2VO
VigpCit7CisgICAgcmV0dXJuIG5ldyBGZW5jZU5WOShtUmVuZGVyZXIpOworfQorCitGZW5jZVN5
bmNJbXBsICpDb250ZXh0OTo6Y3JlYXRlRmVuY2VTeW5jKCkKK3sKKyAgICAvLyBEM0Q5IGRvZXNu
J3Qgc3VwcG9ydCBFUyAzLjAgYW5kIGl0cyBzeW5jIG9iamVjdHMuCisgICAgVU5SRUFDSEFCTEUo
KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworVHJhbnNmb3JtRmVlZGJhY2tJbXBsICpDb250
ZXh0OTo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soY29uc3QgZ2w6OlRyYW5zZm9ybUZlZWRiYWNr
U3RhdGUgJnN0YXRlKQoreworICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK1NhbXBsZXJJbXBsICpDb250ZXh0OTo6Y3JlYXRlU2FtcGxlcigpCit7CisgICAgcmV0
dXJuIG5ldyBTYW1wbGVyRDNEKCk7Cit9CisKK3N0ZDo6dmVjdG9yPFBhdGhJbXBsICo+IENvbnRl
eHQ5OjpjcmVhdGVQYXRocyhHTHNpemVpKQoreworICAgIHJldHVybiBzdGQ6OnZlY3RvcjxQYXRo
SW1wbCAqPigpOworfQorCitnbDo6RXJyb3IgQ29udGV4dDk6OmZsdXNoKCkKK3sKKyAgICByZXR1
cm4gbVJlbmRlcmVyLT5mbHVzaCgpOworfQorCitnbDo6RXJyb3IgQ29udGV4dDk6OmZpbmlzaCgp
Cit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+ZmluaXNoKCk7Cit9CisKK2dsOjpFcnJvciBDb250
ZXh0OTo6ZHJhd0FycmF5cyhHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQp
Cit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2VuZXJpY0RyYXdBcnJheXModGhpcywgbW9kZSwg
Zmlyc3QsIGNvdW50LCAwKTsKK30KKworZ2w6OkVycm9yIENvbnRleHQ5OjpkcmF3QXJyYXlzSW5z
dGFuY2VkKEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBpbnN0YW5jZUNvdW50KQoreworICAgIHJldHVybiBtUmVuZGVyZXItPmdlbmVyaWNE
cmF3QXJyYXlzKHRoaXMsIG1vZGUsIGZpcnN0LCBjb3VudCwgaW5zdGFuY2VDb3VudCk7Cit9CisK
K2dsOjpFcnJvciBDb250ZXh0OTo6ZHJhd0VsZW1lbnRzKEdMZW51bSBtb2RlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpCit7CisgICAgcmV0dXJuIG1S
ZW5kZXJlci0+Z2VuZXJpY0RyYXdFbGVtZW50cyh0aGlzLCBtb2RlLCBjb3VudCwgdHlwZSwgaW5k
aWNlcywgMCwgaW5kZXhSYW5nZSk7Cit9CisKK2dsOjpFcnJvciBDb250ZXh0OTo6ZHJhd0VsZW1l
bnRzSW5zdGFuY2VkKEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5n
ZSkKK3sKKyAgICByZXR1cm4gbVJlbmRlcmVyLT5nZW5lcmljRHJhd0VsZW1lbnRzKHRoaXMsIG1v
ZGUsIGNvdW50LCB0eXBlLCBpbmRpY2VzLCBpbnN0YW5jZXMsIGluZGV4UmFuZ2UpOworfQorCitn
bDo6RXJyb3IgQ29udGV4dDk6OmRyYXdSYW5nZUVsZW1lbnRzKEdMZW51bSBtb2RlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBlbmQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpJbmRleFJhbmdlICZpbmRleFJhbmdlKQorewor
ICAgIHJldHVybiBtUmVuZGVyZXItPmdlbmVyaWNEcmF3RWxlbWVudHModGhpcywgbW9kZSwgY291
bnQsIHR5cGUsIGluZGljZXMsIDAsIGluZGV4UmFuZ2UpOworfQorCitHTGVudW0gQ29udGV4dDk6
OmdldFJlc2V0U3RhdHVzKCkKK3sKKyAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXRSZXNldFN0YXR1
cygpOworfQorCitzdGQ6OnN0cmluZyBDb250ZXh0OTo6Z2V0VmVuZG9yU3RyaW5nKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXRWZW5kb3JTdHJpbmcoKTsKK30KKworc3RkOjpz
dHJpbmcgQ29udGV4dDk6OmdldFJlbmRlcmVyRGVzY3JpcHRpb24oKSBjb25zdAoreworICAgIHJl
dHVybiBtUmVuZGVyZXItPmdldFJlbmRlcmVyRGVzY3JpcHRpb24oKTsKK30KKwordm9pZCBDb250
ZXh0OTo6aW5zZXJ0RXZlbnRNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtl
cikKK3sKKyAgICBhdXRvIG9wdGlvbmFsU3RyaW5nID0gYW5nbGU6OldpZGVuU3RyaW5nKHN0YXRp
Y19jYXN0PHNpemVfdD4obGVuZ3RoKSwgbWFya2VyKTsKKyAgICBpZiAob3B0aW9uYWxTdHJpbmcu
dmFsaWQoKSkKKyAgICB7CisgICAgICAgIG1SZW5kZXJlci0+Z2V0QW5ub3RhdG9yKCktPnNldE1h
cmtlcihvcHRpb25hbFN0cmluZy52YWx1ZSgpLmRhdGEoKSk7CisgICAgfQorfQorCit2b2lkIENv
bnRleHQ5OjpwdXNoR3JvdXBNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtl
cikKK3sKKyAgICBhdXRvIG9wdGlvbmFsU3RyaW5nID0gYW5nbGU6OldpZGVuU3RyaW5nKHN0YXRp
Y19jYXN0PHNpemVfdD4obGVuZ3RoKSwgbWFya2VyKTsKKyAgICBpZiAob3B0aW9uYWxTdHJpbmcu
dmFsaWQoKSkKKyAgICB7CisgICAgICAgIG1SZW5kZXJlci0+Z2V0QW5ub3RhdG9yKCktPmJlZ2lu
RXZlbnQob3B0aW9uYWxTdHJpbmcudmFsdWUoKS5kYXRhKCkpOworICAgIH0KK30KKwordm9pZCBD
b250ZXh0OTo6cG9wR3JvdXBNYXJrZXIoKQoreworICAgIG1SZW5kZXJlci0+Z2V0QW5ub3RhdG9y
KCktPmVuZEV2ZW50KCk7Cit9CisKK3ZvaWQgQ29udGV4dDk6OnN5bmNTdGF0ZShjb25zdCBnbDo6
U3RhdGUgJnN0YXRlLCBjb25zdCBnbDo6U3RhdGU6OkRpcnR5Qml0cyAmZGlydHlCaXRzKQorewor
ICAgIG1SZW5kZXJlci0+Z2V0U3RhdGVNYW5hZ2VyKCktPnN5bmNTdGF0ZShzdGF0ZSwgZGlydHlC
aXRzKTsKK30KKworR0xpbnQgQ29udGV4dDk6OmdldEdQVURpc2pvaW50KCkKK3sKKyAgICByZXR1
cm4gbVJlbmRlcmVyLT5nZXRHUFVEaXNqb2ludCgpOworfQorCitHTGludDY0IENvbnRleHQ5Ojpn
ZXRUaW1lc3RhbXAoKQoreworICAgIHJldHVybiBtUmVuZGVyZXItPmdldFRpbWVzdGFtcCgpOwor
fQorCit2b2lkIENvbnRleHQ5Ojpvbk1ha2VDdXJyZW50KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUg
JmRhdGEpCit7Cit9CisKK2NvbnN0IGdsOjpDYXBzICZDb250ZXh0OTo6Z2V0TmF0aXZlQ2Fwcygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0TmF0aXZlQ2FwcygpOworfQorCitj
b25zdCBnbDo6VGV4dHVyZUNhcHNNYXAgJkNvbnRleHQ5OjpnZXROYXRpdmVUZXh0dXJlQ2Fwcygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0TmF0aXZlVGV4dHVyZUNhcHMoKTsK
K30KKworY29uc3QgZ2w6OkV4dGVuc2lvbnMgJkNvbnRleHQ5OjpnZXROYXRpdmVFeHRlbnNpb25z
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXROYXRpdmVFeHRlbnNpb25zKCk7
Cit9CisKK2NvbnN0IGdsOjpMaW1pdGF0aW9ucyAmQ29udGV4dDk6OmdldE5hdGl2ZUxpbWl0YXRp
b25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXROYXRpdmVMaW1pdGF0aW9u
cygpOworfQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9Db250ZXh0OS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
OS9Db250ZXh0OS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9Db250ZXh0OS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTI2IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gQ29udGV4dDk6CisvLyAgIEQzRDktc3BlY2lm
aWMgZnVuY3Rpb25hbGl0eSBhc3NvY2lhdGVkIHdpdGggYSBHTCBDb250ZXh0LgorLy8KKworI2lm
bmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEOV9DT05URVhUOV9IXworI2RlZmluZSBMSUJB
TkdMRV9SRU5ERVJFUl9EM0RfRDNEOV9DT05URVhUOV9IXworCisjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvQ29udGV4dEltcGwuaCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJl
cjk7CisKK2NsYXNzIENvbnRleHQ5IDogcHVibGljIENvbnRleHRJbXBsCit7CisgIHB1YmxpYzoK
KyAgICBDb250ZXh0OShjb25zdCBnbDo6Q29udGV4dFN0YXRlICZzdGF0ZSwgUmVuZGVyZXI5ICpy
ZW5kZXJlcik7CisgICAgfkNvbnRleHQ5KCkgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJyb3IgaW5p
dGlhbGl6ZSgpIG92ZXJyaWRlOworCisgICAgLy8gU2hhZGVyIGNyZWF0aW9uCisgICAgQ29tcGls
ZXJJbXBsICpjcmVhdGVDb21waWxlcigpIG92ZXJyaWRlOworICAgIFNoYWRlckltcGwgKmNyZWF0
ZVNoYWRlcihjb25zdCBnbDo6U2hhZGVyU3RhdGUgJmRhdGEpIG92ZXJyaWRlOworICAgIFByb2dy
YW1JbXBsICpjcmVhdGVQcm9ncmFtKGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJmRhdGEpIG92ZXJy
aWRlOworCisgICAgLy8gRnJhbWVidWZmZXIgY3JlYXRpb24KKyAgICBGcmFtZWJ1ZmZlckltcGwg
KmNyZWF0ZUZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZkYXRhKSBvdmVy
cmlkZTsKKworICAgIC8vIFRleHR1cmUgY3JlYXRpb24KKyAgICBUZXh0dXJlSW1wbCAqY3JlYXRl
VGV4dHVyZShjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZzdGF0ZSkgb3ZlcnJpZGU7CisKKyAgICAv
LyBSZW5kZXJidWZmZXIgY3JlYXRpb24KKyAgICBSZW5kZXJidWZmZXJJbXBsICpjcmVhdGVSZW5k
ZXJidWZmZXIoKSBvdmVycmlkZTsKKworICAgIC8vIEJ1ZmZlciBjcmVhdGlvbgorICAgIEJ1ZmZl
ckltcGwgKmNyZWF0ZUJ1ZmZlcigpIG92ZXJyaWRlOworCisgICAgLy8gVmVydGV4IEFycmF5IGNy
ZWF0aW9uCisgICAgVmVydGV4QXJyYXlJbXBsICpjcmVhdGVWZXJ0ZXhBcnJheShjb25zdCBnbDo6
VmVydGV4QXJyYXlTdGF0ZSAmZGF0YSkgb3ZlcnJpZGU7CisKKyAgICAvLyBRdWVyeSBhbmQgRmVu
Y2UgY3JlYXRpb24KKyAgICBRdWVyeUltcGwgKmNyZWF0ZVF1ZXJ5KEdMZW51bSB0eXBlKSBvdmVy
cmlkZTsKKyAgICBGZW5jZU5WSW1wbCAqY3JlYXRlRmVuY2VOVigpIG92ZXJyaWRlOworICAgIEZl
bmNlU3luY0ltcGwgKmNyZWF0ZUZlbmNlU3luYygpIG92ZXJyaWRlOworCisgICAgLy8gVHJhbnNm
b3JtIEZlZWRiYWNrIGNyZWF0aW9uCisgICAgVHJhbnNmb3JtRmVlZGJhY2tJbXBsICpjcmVhdGVU
cmFuc2Zvcm1GZWVkYmFjaygKKyAgICAgICAgY29uc3QgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrU3Rh
dGUgJnN0YXRlKSBvdmVycmlkZTsKKworICAgIC8vIFNhbXBsZXIgb2JqZWN0IGNyZWF0aW9uCisg
ICAgU2FtcGxlckltcGwgKmNyZWF0ZVNhbXBsZXIoKSBvdmVycmlkZTsKKworICAgIC8vIFBhdGgg
b2JqZWN0IGNyZWF0aW9uCisgICAgc3RkOjp2ZWN0b3I8UGF0aEltcGwgKj4gY3JlYXRlUGF0aHMo
R0xzaXplaSkgb3ZlcnJpZGU7CisKKyAgICAvLyBGbHVzaCBhbmQgZmluaXNoLgorICAgIGdsOjpF
cnJvciBmbHVzaCgpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBmaW5pc2goKSBvdmVycmlkZTsK
KworICAgIC8vIERyYXdpbmcgbWV0aG9kcy4KKyAgICBnbDo6RXJyb3IgZHJhd0FycmF5cyhHTGVu
dW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpIG92ZXJyaWRlOworICAgIGdsOjpF
cnJvciBkcmF3QXJyYXlzSW5zdGFuY2VkKEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBpbnN0YW5jZUNvdW50KSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBkcmF3RWxl
bWVudHMoR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkgb3ZlcnJpZGU7Cisg
ICAgZ2w6OkVycm9yIGRyYXdFbGVtZW50c0luc3RhbmNlZChHTGVudW0gbW9kZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpIG92ZXJy
aWRlOworICAgIGdsOjpFcnJvciBkcmF3UmFuZ2VFbGVtZW50cyhHTGVudW0gbW9kZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpp
bmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhS
YW5nZSAmaW5kZXhSYW5nZSkgb3ZlcnJpZGU7CisKKyAgICAvLyBEZXZpY2UgbG9zcworICAgIEdM
ZW51bSBnZXRSZXNldFN0YXR1cygpIG92ZXJyaWRlOworCisgICAgLy8gVmVuZG9yIGFuZCBkZXNj
cmlwdGlvbiBzdHJpbmdzLgorICAgIHN0ZDo6c3RyaW5nIGdldFZlbmRvclN0cmluZygpIGNvbnN0
IG92ZXJyaWRlOworICAgIHN0ZDo6c3RyaW5nIGdldFJlbmRlcmVyRGVzY3JpcHRpb24oKSBjb25z
dCBvdmVycmlkZTsKKworICAgIC8vIERlYnVnIG1hcmtlcnMuCisgICAgdm9pZCBpbnNlcnRFdmVu
dE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHB1c2hHcm91cE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2Vy
KSBvdmVycmlkZTsKKyAgICB2b2lkIHBvcEdyb3VwTWFya2VyKCkgb3ZlcnJpZGU7CisKKyAgICAv
LyBTdGF0ZSBzeW5jIHdpdGggZGlydHkgYml0cy4KKyAgICB2b2lkIHN5bmNTdGF0ZShjb25zdCBn
bDo6U3RhdGUgJnN0YXRlLCBjb25zdCBnbDo6U3RhdGU6OkRpcnR5Qml0cyAmZGlydHlCaXRzKSBv
dmVycmlkZTsKKworICAgIC8vIERpc2pvaW50IHRpbWVyIHF1ZXJpZXMKKyAgICBHTGludCBnZXRH
UFVEaXNqb2ludCgpIG92ZXJyaWRlOworICAgIEdMaW50NjQgZ2V0VGltZXN0YW1wKCkgb3ZlcnJp
ZGU7CisKKyAgICAvLyBDb250ZXh0IHN3aXRjaGluZworICAgIHZvaWQgb25NYWtlQ3VycmVudChj
b25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhKSBvdmVycmlkZTsKKworICAgIC8vIENhcHMgcXVl
cmllcworICAgIGNvbnN0IGdsOjpDYXBzICZnZXROYXRpdmVDYXBzKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgY29uc3QgZ2w6OlRleHR1cmVDYXBzTWFwICZnZXROYXRpdmVUZXh0dXJlQ2FwcygpIGNv
bnN0IG92ZXJyaWRlOworICAgIGNvbnN0IGdsOjpFeHRlbnNpb25zICZnZXROYXRpdmVFeHRlbnNp
b25zKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgZ2w6OkxpbWl0YXRpb25zICZnZXROYXRp
dmVMaW1pdGF0aW9ucygpIGNvbnN0IG92ZXJyaWRlOworCisgIHByaXZhdGU6CisgICAgUmVuZGVy
ZXI5ICptUmVuZGVyZXI7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBM
SUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEOV9DT05URVhUOV9IXwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0ZyYW1lYnVmZmVyOS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2Q5L0ZyYW1lYnVmZmVyOS5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9GcmFt
ZWJ1ZmZlcjkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03LDIxICs3LDI0IEBACiAvLyBGcmFtZWJ1
ZmZlcjkuY3BwOiBJbXBsZW1lbnRzIHRoZSBGcmFtZWJ1ZmZlcjkgY2xhc3MuCiAKICNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9GcmFtZWJ1ZmZlcjkuaCIKLSNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9mb3JtYXR1dGlsczkuaCIKLSNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkOS9UZXh0dXJlU3RvcmFnZTkuaCIKLSNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkOS9SZW5kZXJlcjkuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkOS9yZW5kZXJlcjlfdXRpbHMuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkOS9SZW5kZXJUYXJnZXQ5LmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvZDNkL1RleHR1cmVEM0QuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5o
IgorCiAjaW5jbHVkZSAibGliQU5HTEUvRnJhbWVidWZmZXIuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9GcmFtZWJ1ZmZlckF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9UZXh0dXJlLmgi
CisjaW5jbHVkZSAibGliQU5HTEUvZm9ybWF0dXRpbHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9Db250ZXh0SW1wbC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3JlbmRl
cmVyX3V0aWxzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1RleHR1cmVEM0Qu
aCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9SZW5kZXJlcjkuaCIKKyNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9SZW5kZXJUYXJnZXQ5LmgiCisjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvVGV4dHVyZVN0b3JhZ2U5LmgiCisjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvZm9ybWF0dXRpbHM5LmgiCisjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvcmVuZGVyZXI5X3V0aWxzLmgiCiAKIG5hbWVz
cGFjZSByeAogewogCi1GcmFtZWJ1ZmZlcjk6OkZyYW1lYnVmZmVyOShjb25zdCBnbDo6RnJhbWVi
dWZmZXI6OkRhdGEgJmRhdGEsIFJlbmRlcmVyOSAqcmVuZGVyZXIpCitGcmFtZWJ1ZmZlcjk6OkZy
YW1lYnVmZmVyOShjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmZGF0YSwgUmVuZGVyZXI5ICpy
ZW5kZXJlcikKICAgICA6IEZyYW1lYnVmZmVyRDNEKGRhdGEsIHJlbmRlcmVyKSwgbVJlbmRlcmVy
KHJlbmRlcmVyKQogewogICAgIEFTU0VSVChtUmVuZGVyZXIgIT0gbnVsbHB0cik7CkBAIC01Miwy
MyArNTUsMjUgQEAgZ2w6OkVycm9yIEZyYW1lYnVmZmVyOTo6aW52YWxpZGF0ZVN1YihzaQogICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi1nbDo6RXJyb3IgRnJhbWVidWZm
ZXI5OjpjbGVhcihjb25zdCBnbDo6RGF0YSAmZGF0YSwgY29uc3QgQ2xlYXJQYXJhbWV0ZXJzICZj
bGVhclBhcmFtcykKK2dsOjpFcnJvciBGcmFtZWJ1ZmZlcjk6OmNsZWFySW1wbChDb250ZXh0SW1w
bCAqY29udGV4dCwgY29uc3QgQ2xlYXJQYXJhbWV0ZXJzICZjbGVhclBhcmFtcykKIHsKLSAgICBj
b25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICpjb2xvckF0dGFjaG1lbnQgPSBtRGF0YS5n
ZXRDb2xvckF0dGFjaG1lbnQoMCk7Ci0gICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVu
dCAqZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG1EYXRhLmdldERlcHRoT3JTdGVuY2lsQXR0YWNo
bWVudCgpOworICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmNvbG9yQXR0YWNo
bWVudCAgICAgICAgPSBtU3RhdGUuZ2V0Q29sb3JBdHRhY2htZW50KDApOworICAgIGNvbnN0IGds
OjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBtU3RhdGUu
Z2V0RGVwdGhPclN0ZW5jaWxBdHRhY2htZW50KCk7CiAKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBt
UmVuZGVyZXItPmFwcGx5UmVuZGVyVGFyZ2V0KGNvbG9yQXR0YWNobWVudCwgZGVwdGhTdGVuY2ls
QXR0YWNobWVudCk7CisgICAgZ2w6OkVycm9yIGVycm9yID0KKyAgICAgICAgbVJlbmRlcmVyLT5h
cHBseVJlbmRlclRhcmdldChjb250ZXh0LCBjb2xvckF0dGFjaG1lbnQsIGRlcHRoU3RlbmNpbEF0
dGFjaG1lbnQpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewogICAgICAgICByZXR1
cm4gZXJyb3I7CiAgICAgfQogCi0gICAgZmxvYXQgbmVhclogPSBkYXRhLnN0YXRlLT5nZXROZWFy
UGxhbmUoKTsKLSAgICBmbG9hdCBmYXJaID0gZGF0YS5zdGF0ZS0+Z2V0RmFyUGxhbmUoKTsKLSAg
ICBtUmVuZGVyZXItPnNldFZpZXdwb3J0KGRhdGEuY2FwcywgZGF0YS5zdGF0ZS0+Z2V0Vmlld3Bv
cnQoKSwgbmVhclosIGZhclosIEdMX1RSSUFOR0xFUywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGEuc3RhdGUtPmdldFJhc3Rlcml6ZXJTdGF0ZSgpLmZyb250RmFjZSwgdHJ1ZSk7Cisg
ICAgY29uc3QgZ2w6OlN0YXRlICZnbFN0YXRlID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpOworICAg
IGZsb2F0IG5lYXJaICAgICAgICAgICAgICA9IGdsU3RhdGUuZ2V0TmVhclBsYW5lKCk7CisgICAg
ZmxvYXQgZmFyWiA9IGdsU3RhdGUuZ2V0RmFyUGxhbmUoKTsKKyAgICBtUmVuZGVyZXItPnNldFZp
ZXdwb3J0KGdsU3RhdGUuZ2V0Vmlld3BvcnQoKSwgbmVhclosIGZhclosIEdMX1RSSUFOR0xFUywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsU3RhdGUuZ2V0UmFzdGVyaXplclN0YXRlKCku
ZnJvbnRGYWNlLCB0cnVlKTsKIAotICAgIG1SZW5kZXJlci0+c2V0U2Npc3NvclJlY3RhbmdsZShk
YXRhLnN0YXRlLT5nZXRTY2lzc29yKCksIGRhdGEuc3RhdGUtPmlzU2Npc3NvclRlc3RFbmFibGVk
KCkpOworICAgIG1SZW5kZXJlci0+c2V0U2Npc3NvclJlY3RhbmdsZShnbFN0YXRlLmdldFNjaXNz
b3IoKSwgZ2xTdGF0ZS5pc1NjaXNzb3JUZXN0RW5hYmxlZCgpKTsKIAogICAgIHJldHVybiBtUmVu
ZGVyZXItPmNsZWFyKGNsZWFyUGFyYW1zLCBjb2xvckF0dGFjaG1lbnQsIGRlcHRoU3RlbmNpbEF0
dGFjaG1lbnQpOwogfQpAQCAtODIsNyArODcsNyBAQCBnbDo6RXJyb3IgRnJhbWVidWZmZXI5Ojpy
ZWFkUGl4ZWxzSW1wbChjCiB7CiAgICAgQVNTRVJUKHBhY2sucGl4ZWxCdWZmZXIuZ2V0KCkgPT0g
bnVsbHB0cik7CiAKLSAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICpjb2xvcmJ1
ZmZlciA9IG1EYXRhLmdldENvbG9yQXR0YWNobWVudCgwKTsKKyAgICBjb25zdCBnbDo6RnJhbWVi
dWZmZXJBdHRhY2htZW50ICpjb2xvcmJ1ZmZlciA9IG1TdGF0ZS5nZXRDb2xvckF0dGFjaG1lbnQo
MCk7CiAgICAgQVNTRVJUKGNvbG9yYnVmZmVyKTsKIAogICAgIFJlbmRlclRhcmdldDkgKnJlbmRl
clRhcmdldCA9IG51bGxwdHI7CkBAIC0xODMsNzIgKzE4OCwyNCBAQCBnbDo6RXJyb3IgRnJhbWVi
dWZmZXI5OjpyZWFkUGl4ZWxzSW1wbChjCiAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VU
X09GX01FTU9SWSwgIkZhaWxlZCB0byBsb2NrIGludGVybmFsIHJlbmRlciB0YXJnZXQuIik7CiAg
ICAgfQogCi0gICAgdWludDhfdCAqc291cmNlOwotICAgIGludCBpbnB1dFBpdGNoOwotICAgIGlm
IChwYWNrLnJldmVyc2VSb3dPcmRlcikKLSAgICB7Ci0gICAgICAgIHNvdXJjZSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDhfdCo+KGxvY2sucEJpdHMpICsgbG9jay5QaXRjaCAqIChyZWN0LmJvdHRv
bSAtIHJlY3QudG9wIC0gMSk7Ci0gICAgICAgIGlucHV0UGl0Y2ggPSAtbG9jay5QaXRjaDsKLSAg
ICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4obG9jay5wQml0cyk7Ci0gICAgICAgIGlucHV0UGl0Y2ggPSBsb2NrLlBpdGNoOwot
ICAgIH0KKyAgICB1aW50OF90ICpzb3VyY2UgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QgKj4o
bG9jay5wQml0cyk7CisgICAgaW50IGlucHV0UGl0Y2ggID0gbG9jay5QaXRjaDsKIAogICAgIGNv
bnN0IGQzZDk6OkQzREZvcm1hdCAmZDNkRm9ybWF0SW5mbyA9IGQzZDk6OkdldEQzREZvcm1hdElu
Zm8oZGVzYy5Gb3JtYXQpOwotICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmc291cmNlRm9y
bWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oZDNkRm9ybWF0SW5mby5pbnRlcm5h
bEZvcm1hdCk7Ci0gICAgaWYgKHNvdXJjZUZvcm1hdEluZm8uZm9ybWF0ID09IGZvcm1hdCAmJiBz
b3VyY2VGb3JtYXRJbmZvLnR5cGUgPT0gdHlwZSkKLSAgICB7Ci0gICAgICAgIC8vIERpcmVjdCBj
b3B5IHBvc3NpYmxlCi0gICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgcmVjdC5ib3R0b20gLSBy
ZWN0LnRvcDsgeSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBtZW1jcHkocGl4ZWxzICsgeSAq
IG91dHB1dFBpdGNoLCBzb3VyY2UgKyB5ICogaW5wdXRQaXRjaCwgKHJlY3QucmlnaHQgLSByZWN0
LmxlZnQpICogc291cmNlRm9ybWF0SW5mby5waXhlbEJ5dGVzKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICBlbHNlCi0gICAgewotICAgICAgICBjb25zdCBkM2Q5OjpEM0RGb3JtYXQgJnNvdXJjZUQz
REZvcm1hdEluZm8gPSBkM2Q5OjpHZXREM0RGb3JtYXRJbmZvKGRlc2MuRm9ybWF0KTsKLSAgICAg
ICAgQ29sb3JDb3B5RnVuY3Rpb24gZmFzdENvcHlGdW5jID0gc291cmNlRDNERm9ybWF0SW5mby5n
ZXRGYXN0Q29weUZ1bmN0aW9uKGZvcm1hdCwgdHlwZSk7Ci0KLSAgICAgICAgR0xlbnVtIHNpemVk
RGVzdEludGVybmFsRm9ybWF0ID0gZ2w6OkdldFNpemVkSW50ZXJuYWxGb3JtYXQoZm9ybWF0LCB0
eXBlKTsKLSAgICAgICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZkZXN0Rm9ybWF0SW5mbyA9
IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oc2l6ZWREZXN0SW50ZXJuYWxGb3JtYXQpOwotCi0g
ICAgICAgIGlmIChmYXN0Q29weUZ1bmMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIEZhc3Qg
Y29weSBpcyBwb3NzaWJsZSB0aHJvdWdoIHNvbWUgc3BlY2lhbCBmdW5jdGlvbgotICAgICAgICAg
ICAgZm9yIChpbnQgeSA9IDA7IHkgPCByZWN0LmJvdHRvbSAtIHJlY3QudG9wOyB5KyspCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCByZWN0LnJpZ2h0
IC0gcmVjdC5sZWZ0OyB4KyspCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICB1aW50OF90ICpkZXN0ID0gcGl4ZWxzICsgeSAqIG91dHB1dFBpdGNoICsgeCAqIGRlc3RGb3Jt
YXRJbmZvLnBpeGVsQnl0ZXM7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNy
YyA9IHNvdXJjZSArIHkgKiBpbnB1dFBpdGNoICsgeCAqIHNvdXJjZUZvcm1hdEluZm8ucGl4ZWxC
eXRlczsKKyAgICBnbDo6Rm9ybWF0VHlwZSBmb3JtYXRUeXBlKGZvcm1hdCwgdHlwZSk7CiAKLSAg
ICAgICAgICAgICAgICAgICAgZmFzdENvcHlGdW5jKHNyYywgZGVzdCk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewot
ICAgICAgICAgICAgQ29sb3JSZWFkRnVuY3Rpb24gY29sb3JSZWFkRnVuY3Rpb24gPSBzb3VyY2VE
M0RGb3JtYXRJbmZvLmNvbG9yUmVhZEZ1bmN0aW9uOwotICAgICAgICAgICAgQ29sb3JXcml0ZUZ1
bmN0aW9uIGNvbG9yV3JpdGVGdW5jdGlvbiA9IEdldENvbG9yV3JpdGVGdW5jdGlvbihmb3JtYXQs
IHR5cGUpOworICAgIC8vIFRPRE8oam1hZGlsbCk6IE1heWJlIHdlIGNhbiBhdm9pZCBhIGNvcHkg
b2YgcGFjayBwYXJhbWV0ZXJzIGhlcmU/CisgICAgUGFja1BpeGVsc1BhcmFtcyBwYWNrUGFyYW1z
OworICAgIHBhY2tQYXJhbXMuYXJlYS54ICAgICAgPSByZWN0LmxlZnQ7CisgICAgcGFja1BhcmFt
cy5hcmVhLnkgICAgICA9IHJlY3QudG9wOworICAgIHBhY2tQYXJhbXMuYXJlYS53aWR0aCAgPSBy
ZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0OworICAgIHBhY2tQYXJhbXMuYXJlYS5oZWlnaHQgPSByZWN0
LmJvdHRvbSAtIHJlY3QudG9wOworICAgIHBhY2tQYXJhbXMuZm9ybWF0ICAgICAgPSBmb3JtYXQ7
CisgICAgcGFja1BhcmFtcy50eXBlICAgICAgICA9IHR5cGU7CisgICAgcGFja1BhcmFtcy5vdXRw
dXRQaXRjaCA9IHN0YXRpY19jYXN0PEdMdWludD4ob3V0cHV0UGl0Y2gpOworICAgIHBhY2tQYXJh
bXMucGFjayAgICAgICAgPSBwYWNrOwogCi0gICAgICAgICAgICB1aW50OF90IHRlbXBbc2l6ZW9m
KGdsOjpDb2xvckYpXTsKLSAgICAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgcmVjdC5ib3R0
b20gLSByZWN0LnRvcDsgeSsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZvciAo
aW50IHggPSAwOyB4IDwgcmVjdC5yaWdodCAtIHJlY3QubGVmdDsgeCsrKQotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqZGVzdCA9IHBpeGVscyArIHkgKiBv
dXRwdXRQaXRjaCArIHggKiBkZXN0Rm9ybWF0SW5mby5waXhlbEJ5dGVzOwotICAgICAgICAgICAg
ICAgICAgICBjb25zdCB1aW50OF90ICpzcmMgPSBzb3VyY2UgKyB5ICogaW5wdXRQaXRjaCArIHgg
KiBzb3VyY2VGb3JtYXRJbmZvLnBpeGVsQnl0ZXM7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8g
cmVhZEZ1bmMgYW5kIHdyaXRlRnVuYyB3aWxsIGJlIHVzaW5nIHRoZSBzYW1lIHR5cGUgb2YgY29s
b3IsIENvcHlUZXhJbWFnZQotICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIG5vdCBhbGxvdyB0
aGUgY29weSBvdGhlcndpc2UuCi0gICAgICAgICAgICAgICAgICAgIGNvbG9yUmVhZEZ1bmN0aW9u
KHNyYywgdGVtcCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbG9yV3JpdGVGdW5jdGlvbih0ZW1w
LCBkZXN0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9CisgICAgUGFja1BpeGVscyhwYWNrUGFyYW1zLCAqZDNkRm9ybWF0SW5mby5pbmZvLCBpbnB1
dFBpdGNoLCBzb3VyY2UsIHBpeGVscyk7CiAKICAgICBzeXN0ZW1TdXJmYWNlLT5VbmxvY2tSZWN0
KCk7CiAgICAgU2FmZVJlbGVhc2Uoc3lzdGVtU3VyZmFjZSk7CkBAIC0yNTYsOSArMjEzLDE0IEBA
IGdsOjpFcnJvciBGcmFtZWJ1ZmZlcjk6OnJlYWRQaXhlbHNJbXBsKGMKICAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotZ2w6OkVycm9yIEZyYW1lYnVmZmVyOTo6YmxpdChj
b25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZkZXN0
QXJlYSwgY29uc3QgZ2w6OlJlY3RhbmdsZSAqc2Npc3NvciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBibGl0UmVuZGVyVGFyZ2V0LCBib29sIGJsaXREZXB0aCwgYm9vbCBibGl0
U3RlbmNpbCwgR0xlbnVtIGZpbHRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2VGcmFtZWJ1ZmZlcikKK2dsOjpFcnJvciBGcmFtZWJ1
ZmZlcjk6OmJsaXRJbXBsKGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZkZXN0QXJlYSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgKnNj
aXNzb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGJsaXRSZW5kZXJU
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGJsaXREZXB0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYmxpdFN0ZW5jaWwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsdGVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2VGcmFtZWJ1
ZmZlcikKIHsKICAgICBBU1NFUlQoZmlsdGVyID09IEdMX05FQVJFU1QpOwogCkBAIC0yODAsNyAr
MjQyLDcgQEAgZ2w6OkVycm9yIEZyYW1lYnVmZmVyOTo6YmxpdChjb25zdCBnbDo6UgogICAgICAg
ICB9CiAgICAgICAgIEFTU0VSVChyZWFkUmVuZGVyVGFyZ2V0KTsKIAotICAgICAgICBjb25zdCBn
bDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICpkcmF3QnVmZmVyID0gbURhdGEuZ2V0Q29sb3JBdHRh
Y2htZW50KDApOworICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICpkcmF3
QnVmZmVyID0gbVN0YXRlLmdldENvbG9yQXR0YWNobWVudCgwKTsKICAgICAgICAgQVNTRVJUKGRy
YXdCdWZmZXIpOwogCiAgICAgICAgIFJlbmRlclRhcmdldDkgKmRyYXdSZW5kZXJUYXJnZXQgPSBu
dWxscHRyOwpAQCAtNDA2LDcgKzM2OCw3IEBAIGdsOjpFcnJvciBGcmFtZWJ1ZmZlcjk6OmJsaXQo
Y29uc3QgZ2w6OlIKICAgICAgICAgfQogICAgICAgICBBU1NFUlQocmVhZERlcHRoU3RlbmNpbCk7
CiAKLSAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqZHJhd0J1ZmZlciA9
IG1EYXRhLmdldERlcHRoT3JTdGVuY2lsQXR0YWNobWVudCgpOworICAgICAgICBjb25zdCBnbDo6
RnJhbWVidWZmZXJBdHRhY2htZW50ICpkcmF3QnVmZmVyID0gbVN0YXRlLmdldERlcHRoT3JTdGVu
Y2lsQXR0YWNobWVudCgpOwogICAgICAgICBBU1NFUlQoZHJhd0J1ZmZlcik7CiAKICAgICAgICAg
UmVuZGVyVGFyZ2V0OSAqZHJhd0RlcHRoU3RlbmNpbCA9IG51bGxwdHI7CkBAIC00NDIsNyArNDA0
LDcgQEAgR0xlbnVtIEZyYW1lYnVmZmVyOTo6Z2V0UmVuZGVyVGFyZ2V0SW1wbAogewogICAgIFJl
bmRlclRhcmdldDkgKnJlbmRlclRhcmdldDkgPSBHZXRBczxSZW5kZXJUYXJnZXQ5PihyZW5kZXJU
YXJnZXQpOwogICAgIGNvbnN0IGQzZDk6OkQzREZvcm1hdCAmZDNkRm9ybWF0SW5mbyA9IGQzZDk6
OkdldEQzREZvcm1hdEluZm8ocmVuZGVyVGFyZ2V0OS0+Z2V0RDNERm9ybWF0KCkpOwotICAgIHJl
dHVybiBkM2RGb3JtYXRJbmZvLmludGVybmFsRm9ybWF0OworICAgIHJldHVybiBkM2RGb3JtYXRJ
bmZvLmluZm8tPmdsSW50ZXJuYWxGb3JtYXQ7CiB9CiAKLX0KK30gIC8vIG5hbWVzcGFjZSByeApJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2Q5L0ZyYW1lYnVmZmVyOS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9GcmFtZWJ1ZmZlcjkuaAkocmV2aXNpb24g
MjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2Q5L0ZyYW1lYnVmZmVyOS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw3ICsxOCw3IEBA
IGNsYXNzIFJlbmRlcmVyOTsKIGNsYXNzIEZyYW1lYnVmZmVyOSA6IHB1YmxpYyBGcmFtZWJ1ZmZl
ckQzRAogewogICBwdWJsaWM6Ci0gICAgRnJhbWVidWZmZXI5KGNvbnN0IGdsOjpGcmFtZWJ1ZmZl
cjo6RGF0YSAmZGF0YSwgUmVuZGVyZXI5ICpyZW5kZXJlcik7CisgICAgRnJhbWVidWZmZXI5KGNv
bnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZkYXRhLCBSZW5kZXJlcjkgKnJlbmRlcmVyKTsKICAg
ICB2aXJ0dWFsIH5GcmFtZWJ1ZmZlcjkoKTsKIAogICAgIGdsOjpFcnJvciBkaXNjYXJkKHNpemVf
dCBjb3VudCwgY29uc3QgR0xlbnVtICphdHRhY2htZW50cykgb3ZlcnJpZGU7CkBAIC0yNiw3ICsy
Niw3IEBAIGNsYXNzIEZyYW1lYnVmZmVyOSA6IHB1YmxpYyBGcmFtZWJ1ZmZlckQKICAgICBnbDo6
RXJyb3IgaW52YWxpZGF0ZVN1YihzaXplX3QgY291bnQsIGNvbnN0IEdMZW51bSAqYXR0YWNobWVu
dHMsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmFyZWEpIG92ZXJyaWRlOwogCiAgIHByaXZhdGU6Ci0g
ICAgZ2w6OkVycm9yIGNsZWFyKGNvbnN0IGdsOjpEYXRhICZkYXRhLCBjb25zdCBDbGVhclBhcmFt
ZXRlcnMgJmNsZWFyUGFyYW1zKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgY2xlYXJJbXBsKENv
bnRleHRJbXBsICpjb250ZXh0LCBjb25zdCBDbGVhclBhcmFtZXRlcnMgJmNsZWFyUGFyYW1zKSBv
dmVycmlkZTsKIAogICAgIGdsOjpFcnJvciByZWFkUGl4ZWxzSW1wbChjb25zdCBnbDo6UmVjdGFu
Z2xlICZhcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LApA
QCAtMzUsOSArMzUsMTQgQEAgY2xhc3MgRnJhbWVidWZmZXI5IDogcHVibGljIEZyYW1lYnVmZmVy
RAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxQYWNrU3RhdGUg
JnBhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnBpeGVscykgY29u
c3Qgb3ZlcnJpZGU7CiAKLSAgICBnbDo6RXJyb3IgYmxpdChjb25zdCBnbDo6UmVjdGFuZ2xlICZz
b3VyY2VBcmVhLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZkZXN0QXJlYSwgY29uc3QgZ2w6OlJlY3Rh
bmdsZSAqc2Npc3NvciwKLSAgICAgICAgICAgICAgICAgICBib29sIGJsaXRSZW5kZXJUYXJnZXQs
IGJvb2wgYmxpdERlcHRoLCBib29sIGJsaXRTdGVuY2lsLCBHTGVudW0gZmlsdGVyLAotICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlRnJhbWVidWZmZXIpIG92
ZXJyaWRlOworICAgIGdsOjpFcnJvciBibGl0SW1wbChjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3Vy
Y2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZkZXN0
QXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAqc2Npc3Nv
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBibGl0UmVuZGVyVGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGJsaXREZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBibGl0U3RlbmNpbCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbHRlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2VGcmFt
ZWJ1ZmZlcikgb3ZlcnJpZGU7CiAKICAgICBHTGVudW0gZ2V0UmVuZGVyVGFyZ2V0SW1wbGVtZW50
YXRpb25Gb3JtYXQoUmVuZGVyVGFyZ2V0RDNEICpyZW5kZXJUYXJnZXQpIGNvbnN0IG92ZXJyaWRl
OwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDkvSW1hZ2U5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvSW1hZ2U5LmNwcAkocmV2aXNpb24gMjA3
ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2Q5L0ltYWdlOS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgZ2w6OkVy
cm9yIEltYWdlOTo6Z2VuZXJhdGVNaXAoSURpcmVjdDNEUwogICAgIEFTU0VSVChzb3VyY2VEZXNj
LkhlaWdodCA9PSAxIHx8IHNvdXJjZURlc2MuSGVpZ2h0IC8gMiA9PSBkZXN0RGVzYy5IZWlnaHQp
OwogCiAgICAgY29uc3QgZDNkOTo6RDNERm9ybWF0ICZkM2RGb3JtYXRJbmZvID0gZDNkOTo6R2V0
RDNERm9ybWF0SW5mbyhzb3VyY2VEZXNjLkZvcm1hdCk7Ci0gICAgQVNTRVJUKGQzZEZvcm1hdElu
Zm8ubWlwR2VuZXJhdGlvbkZ1bmN0aW9uICE9IE5VTEwpOworICAgIEFTU0VSVChkM2RGb3JtYXRJ
bmZvLmluZm8tPm1pcEdlbmVyYXRpb25GdW5jdGlvbiAhPSBOVUxMKTsKIAogICAgIEQzRExPQ0tF
RF9SRUNUIHNvdXJjZUxvY2tlZCA9IHswfTsKICAgICByZXN1bHQgPSBzb3VyY2VTdXJmYWNlLT5M
b2NrUmVjdCgmc291cmNlTG9ja2VkLCBOVUxMLCBEM0RMT0NLX1JFQURPTkxZKTsKQEAgLTg1LDgg
Kzg1LDggQEAgZ2w6OkVycm9yIEltYWdlOTo6Z2VuZXJhdGVNaXAoSURpcmVjdDNEUwogCiAgICAg
QVNTRVJUKHNvdXJjZURhdGEgJiYgZGVzdERhdGEpOwogCi0gICAgZDNkRm9ybWF0SW5mby5taXBH
ZW5lcmF0aW9uRnVuY3Rpb24oc291cmNlRGVzYy5XaWR0aCwgc291cmNlRGVzYy5IZWlnaHQsIDEs
IHNvdXJjZURhdGEsIHNvdXJjZUxvY2tlZC5QaXRjaCwgMCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZXN0RGF0YSwgZGVzdExvY2tlZC5QaXRjaCwgMCk7CisgICAg
ZDNkRm9ybWF0SW5mby5pbmZvLT5taXBHZW5lcmF0aW9uRnVuY3Rpb24oc291cmNlRGVzYy5XaWR0
aCwgc291cmNlRGVzYy5IZWlnaHQsIDEsIHNvdXJjZURhdGEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlTG9ja2VkLlBpdGNoLCAwLCBkZXN0RGF0
YSwgZGVzdExvY2tlZC5QaXRjaCwgMCk7CiAKICAgICBkZXN0U3VyZmFjZS0+VW5sb2NrUmVjdCgp
OwogICAgIHNvdXJjZVN1cmZhY2UtPlVubG9ja1JlY3QoKTsKQEAgLTQ3MywxNSArNDczLDIzIEBA
IGdsOjpFcnJvciBJbWFnZTk6OmNvcHlUb1N1cmZhY2UoSURpcmVjdDMKIAogLy8gU3RvcmUgdGhl
IHBpeGVsIHJlY3RhbmdsZSBkZXNpZ25hdGVkIGJ5IHhvZmZzZXQseW9mZnNldCx3aWR0aCxoZWln
aHQgd2l0aCBwaXhlbHMgc3RvcmVkIGFzIGZvcm1hdC90eXBlIGF0IGlucHV0CiAvLyBpbnRvIHRo
ZSB0YXJnZXQgcGl4ZWwgcmVjdGFuZ2xlLgotZ2w6OkVycm9yIEltYWdlOTo6bG9hZERhdGEoY29u
c3QgZ2w6OkJveCAmYXJlYSwgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywgR0xl
bnVtIHR5cGUsIGNvbnN0IHZvaWQgKmlucHV0KQorZ2w6OkVycm9yIEltYWdlOTo6bG9hZERhdGEo
Y29uc3QgZ2w6OkJveCAmYXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmlucHV0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhcHBseVNraXBJbWFnZXMpCiB7CiAg
ICAgLy8gM0QgdGV4dHVyZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIEQzRDkgYmFja2VuZC4K
ICAgICBBU1NFUlQoYXJlYS56ID09IDAgJiYgYXJlYS5kZXB0aCA9PSAxKTsKIAogICAgIGNvbnN0
IGdsOjpJbnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdElu
Zm8obUludGVybmFsRm9ybWF0KTsKLSAgICBHTHNpemVpIGlucHV0Um93UGl0Y2ggPSBmb3JtYXRJ
bmZvLmNvbXB1dGVSb3dQaXRjaCh0eXBlLCBhcmVhLndpZHRoLCB1bnBhY2suYWxpZ25tZW50LCB1
bnBhY2sucm93TGVuZ3RoKTsKLSAgICBHTHNpemVpIGlucHV0U2tpcEJ5dGVzID0gZm9ybWF0SW5m
by5jb21wdXRlU2tpcFBpeGVscyhpbnB1dFJvd1BpdGNoLCAwLCB1bnBhY2suc2tpcEltYWdlcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnBhY2suc2tpcFJvd3MsIHVucGFjay5za2lwUGl4ZWxzKTsKKyAgICBHTHVpbnQgaW5wdXRS
b3dQaXRjaCAgICAgICAgICAgICAgICAgPSAwOworICAgIEFOR0xFX1RSWV9SRVNVTFQoCisgICAg
ICAgIGZvcm1hdEluZm8uY29tcHV0ZVJvd1BpdGNoKHR5cGUsIGFyZWEud2lkdGgsIHVucGFjay5h
bGlnbm1lbnQsIHVucGFjay5yb3dMZW5ndGgpLAorICAgICAgICBpbnB1dFJvd1BpdGNoKTsKKyAg
ICBBU1NFUlQoIWFwcGx5U2tpcEltYWdlcyk7CisgICAgQVNTRVJUKHVucGFjay5za2lwUGl4ZWxz
ID09IDApOworICAgIEFTU0VSVCh1bnBhY2suc2tpcFJvd3MgPT0gMCk7CiAKICAgICBjb25zdCBk
M2Q5OjpUZXh0dXJlRm9ybWF0ICZkM2RGb3JtYXRJbmZvID0gZDNkOTo6R2V0VGV4dHVyZUZvcm1h
dEluZm8obUludGVybmFsRm9ybWF0KTsKICAgICBBU1NFUlQoZDNkRm9ybWF0SW5mby5sb2FkRnVu
Y3Rpb24gIT0gTlVMTCk7CkBAIC01MDAsOSArNTA4LDggQEAgZ2w6OkVycm9yIEltYWdlOTo6bG9h
ZERhdGEoY29uc3QgZ2w6OkJveAogICAgIH0KIAogICAgIGQzZEZvcm1hdEluZm8ubG9hZEZ1bmN0
aW9uKGFyZWEud2lkdGgsIGFyZWEuaGVpZ2h0LCBhcmVhLmRlcHRoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihpbnB1dCkg
KyBpbnB1dFNraXBCeXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFJv
d1BpdGNoLCAwLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QgKj4obG9ja2VkLnBCaXRzKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NrZWQuUGl0Y2gsIDApOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihp
bnB1dCksIGlucHV0Um93UGl0Y2gsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDx1aW50OF90ICo+KGxvY2tlZC5wQml0cyksIGxvY2tlZC5QaXRjaCwg
MCk7CiAKICAgICB1bmxvY2soKTsKIApAQCAtNTE1LDkgKzUyMiwxMSBAQCBnbDo6RXJyb3IgSW1h
Z2U5Ojpsb2FkQ29tcHJlc3NlZERhdGEoY29uCiAgICAgQVNTRVJUKGFyZWEueiA9PSAwICYmIGFy
ZWEuZGVwdGggPT0gMSk7CiAKICAgICBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJmZvcm1hdElu
Zm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKG1JbnRlcm5hbEZvcm1hdCk7Ci0gICAgR0xz
aXplaSBpbnB1dFJvd1BpdGNoID0gZm9ybWF0SW5mby5jb21wdXRlUm93UGl0Y2goR0xfVU5TSUdO
RURfQllURSwgYXJlYS53aWR0aCwgMSwgMCk7Ci0gICAgR0xzaXplaSBpbnB1dERlcHRoUGl0Y2gg
PQotICAgICAgICBmb3JtYXRJbmZvLmNvbXB1dGVEZXB0aFBpdGNoKEdMX1VOU0lHTkVEX0JZVEUs
IGFyZWEud2lkdGgsIGFyZWEuaGVpZ2h0LCAxLCAwLCAwKTsKKyAgICBHTHNpemVpIGlucHV0Um93
UGl0Y2ggICAgICAgICAgICAgICAgPSAwOworICAgIEFOR0xFX1RSWV9SRVNVTFQoZm9ybWF0SW5m
by5jb21wdXRlUm93UGl0Y2goR0xfVU5TSUdORURfQllURSwgYXJlYS53aWR0aCwgMSwgMCksIGlu
cHV0Um93UGl0Y2gpOworICAgIEdMc2l6ZWkgaW5wdXREZXB0aFBpdGNoID0gMDsKKyAgICBBTkdM
RV9UUllfUkVTVUxUKGZvcm1hdEluZm8uY29tcHV0ZURlcHRoUGl0Y2goYXJlYS5oZWlnaHQsIDAs
IGlucHV0RGVwdGhQaXRjaCksCisgICAgICAgICAgICAgICAgICAgICBpbnB1dERlcHRoUGl0Y2gp
OwogCiAgICAgY29uc3QgZDNkOTo6VGV4dHVyZUZvcm1hdCAmZDNkOUZvcm1hdEluZm8gPSBkM2Q5
OjpHZXRUZXh0dXJlRm9ybWF0SW5mbyhtSW50ZXJuYWxGb3JtYXQpOwogCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvSW1hZ2U5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2Q5L0ltYWdlOS5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvSW1hZ2U5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQyLDggKzQyLDEyIEBAIGNsYXNzIEltYWdlOSA6IHB1YmxpYyBJbWFnZUQz
RAogICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldE1hbmFnZWRTdXJmYWNlQ3ViZShUZXh0dXJlU3Rv
cmFnZSAqc3RvcmFnZSwgaW50IGZhY2UsIGludCBsZXZlbCk7CiAgICAgdmlydHVhbCBnbDo6RXJy
b3IgY29weVRvU3RvcmFnZShUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwgY29uc3QgZ2w6OkltYWdl
SW5kZXggJmluZGV4LCBjb25zdCBnbDo6Qm94ICZyZWdpb24pOwogCi0gICAgdmlydHVhbCBnbDo6
RXJyb3IgbG9hZERhdGEoY29uc3QgZ2w6OkJveCAmYXJlYSwgY29uc3QgZ2w6OlBpeGVsVW5wYWNr
U3RhdGUgJnVucGFjaywgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKmlucHV0KTsKLSAgICB2aXJ0
dWFsIGdsOjpFcnJvciBsb2FkQ29tcHJlc3NlZERhdGEoY29uc3QgZ2w6OkJveCAmYXJlYSwgY29u
c3Qgdm9pZCAqaW5wdXQpOworICAgIGdsOjpFcnJvciBsb2FkRGF0YShjb25zdCBnbDo6Qm94ICZh
cmVhLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAm
dW5wYWNrLAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgYXBwbHlTa2lwSW1hZ2VzKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgbG9hZENvbXByZXNz
ZWREYXRhKGNvbnN0IGdsOjpCb3ggJmFyZWEsIGNvbnN0IHZvaWQgKmlucHV0KSBvdmVycmlkZTsK
IAogICAgIGdsOjpFcnJvciBjb3B5RnJvbVRleFN0b3JhZ2UoY29uc3QgZ2w6OkltYWdlSW5kZXgg
JmltYWdlSW5kZXgsIFRleHR1cmVTdG9yYWdlICpzb3VyY2UpIG92ZXJyaWRlOwogICAgIGdsOjpF
cnJvciBjb3B5RnJvbUZyYW1lYnVmZmVyKGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDkvSW5kZXhCdWZmZXI5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvSW5kZXhCdWZmZXI5LmNwcAkocmV2aXNp
b24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2Q5L0luZGV4QnVmZmVyOS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQw
LDcgQEAgZ2w6OkVycm9yIEluZGV4QnVmZmVyOTo6aW5pdGlhbGl6ZSh1bnNpZwogICAgICAgICB9
CiAgICAgICAgIGVsc2UgaWYgKGluZGV4VHlwZSA9PSBHTF9VTlNJR05FRF9JTlQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIEFTU0VSVChtUmVuZGVyZXItPmdldFJlbmRlcmVyRXh0ZW5zaW9ucygp
LmVsZW1lbnRJbmRleFVpbnQpOworICAgICAgICAgICAgQVNTRVJUKG1SZW5kZXJlci0+Z2V0TmF0
aXZlRXh0ZW5zaW9ucygpLmVsZW1lbnRJbmRleFVpbnQpOwogICAgICAgICAgICAgZm9ybWF0ID0g
RDNERk1UX0lOREVYMzI7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2Q5L05hdGl2ZVdpbmRvdzkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9OYXRpdmVXaW5kb3c5LmNwcAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDkvTmF0aXZlV2luZG93OS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
OSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIE5hdGl2ZVdpbmRvdzkuY3BwOiBEZWZpbmVzIE5hdGl2
ZVdpbmRvdzksIGEgY2xhc3MgZm9yIG1hbmFnaW5nIGFuZAorLy8gcGVyZm9ybWluZyBvcGVyYXRp
b25zIG9uIGFuIEVHTE5hdGl2ZVdpbmRvd1R5cGUgZm9yIHRoZSBEM0Q5IHJlbmRlcmVyLgorCisj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvTmF0aXZlV2luZG93OS5oIgorCitu
YW1lc3BhY2UgcngKK3sKK05hdGl2ZVdpbmRvdzk6Ok5hdGl2ZVdpbmRvdzkoRUdMTmF0aXZlV2lu
ZG93VHlwZSB3aW5kb3cpIDogTmF0aXZlV2luZG93RDNEKHdpbmRvdykKK3sKK30KKworYm9vbCBO
YXRpdmVXaW5kb3c5Ojppbml0aWFsaXplKCkKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBOYXRpdmVXaW5kb3c5OjpnZXRDbGllbnRSZWN0KExQUkVDVCByZWN0KSBjb25zdAoreworICAg
IHJldHVybiBHZXRDbGllbnRSZWN0KGdldE5hdGl2ZVdpbmRvdygpLCByZWN0KSA9PSBUUlVFOwor
fQorCitib29sIE5hdGl2ZVdpbmRvdzk6OmlzSWNvbmljKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
SXNJY29uaWMoZ2V0TmF0aXZlV2luZG93KCkpID09IFRSVUU7Cit9CisKKy8vIHN0YXRpYworYm9v
bCBOYXRpdmVXaW5kb3c5OjpJc1ZhbGlkTmF0aXZlV2luZG93KEVHTE5hdGl2ZVdpbmRvd1R5cGUg
d2luZG93KQoreworICAgIHJldHVybiBJc1dpbmRvdyh3aW5kb3cpID09IFRSVUU7Cit9CisKK30g
IC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2Q5L05hdGl2ZVdpbmRvdzkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvTmF0aXZl
V2luZG93OS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9OYXRpdmVXaW5kb3c5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwzNSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIE5hdGl2ZVdpbmRvdzkuaDogRGVm
aW5lcyBOYXRpdmVXaW5kb3c5LCBhIGNsYXNzIGZvciBtYW5hZ2luZyBhbmQKKy8vIHBlcmZvcm1p
bmcgb3BlcmF0aW9ucyBvbiBhbiBFR0xOYXRpdmVXaW5kb3dUeXBlIGZvciB0aGUgRDNEOSByZW5k
ZXJlci4KKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEOV9OQVRJVkVXSU5ET1c5
X0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9EM0Q5X05BVElWRVdJTkRPVzlfSF8K
KworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorI2luY2x1ZGUgImNvbW1vbi9wbGF0Zm9ybS5o
IgorCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL05hdGl2ZVdpbmRvd0QzRC5oIgor
CituYW1lc3BhY2UgcngKK3sKKworY2xhc3MgTmF0aXZlV2luZG93OSA6IHB1YmxpYyBOYXRpdmVX
aW5kb3dEM0QKK3sKKyAgcHVibGljOgorICAgIGV4cGxpY2l0IE5hdGl2ZVdpbmRvdzkoRUdMTmF0
aXZlV2luZG93VHlwZSB3aW5kb3cpOworCisgICAgYm9vbCBpbml0aWFsaXplKCkgb3ZlcnJpZGU7
CisgICAgYm9vbCBnZXRDbGllbnRSZWN0KExQUkVDVCByZWN0KSBjb25zdCBvdmVycmlkZTsKKyAg
ICBib29sIGlzSWNvbmljKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBzdGF0aWMgYm9vbCBJc1Zh
bGlkTmF0aXZlV2luZG93KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KTsKK307CisKK30gIC8v
IG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9EM0Q5X05B
VElWRVdJTkRPVzlfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkOS9RdWVyeTkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9RdWVyeTkuY3BwCShy
ZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDkvUXVlcnk5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMjAgKzMw
LDI1IEBAIFF1ZXJ5OTo6flF1ZXJ5OSgpCiAKIGdsOjpFcnJvciBRdWVyeTk6OmJlZ2luKCkKIHsK
LSAgICBpZiAobVF1ZXJ5ID09IE5VTEwpCisgICAgRDNEUVVFUllUWVBFIGQzZFF1ZXJ5VHlwZSA9
IGdsX2QzZDk6OkNvbnZlcnRRdWVyeVR5cGUoZ2V0VHlwZSgpKTsKKyAgICBpZiAobVF1ZXJ5ID09
IG51bGxwdHIpCiAgICAgewotICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1SZW5kZXJlci0+Z2V0
RGV2aWNlKCktPkNyZWF0ZVF1ZXJ5KEQzRFFVRVJZVFlQRV9PQ0NMVVNJT04sICZtUXVlcnkpOwor
ICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCktPkNyZWF0ZVF1
ZXJ5KGQzZFF1ZXJ5VHlwZSwgJm1RdWVyeSk7CiAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
LCAiSW50ZXJuYWwgcXVlcnkgY3JlYXRpb24gZmFpbGVkLCByZXN1bHQ6IDB4JVguIiwgcmVzdWx0
KTsKICAgICAgICAgfQogICAgIH0KIAotICAgIEhSRVNVTFQgcmVzdWx0ID0gbVF1ZXJ5LT5Jc3N1
ZShEM0RJU1NVRV9CRUdJTik7Ci0gICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKLSAgICBp
ZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgaWYgKGQzZFF1ZXJ5VHlwZSAhPSBEM0RRVUVSWVRZUEVf
RVZFTlQpCiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlks
ICJGYWlsZWQgdG8gYmVnaW4gaW50ZXJuYWwgcXVlcnksIHJlc3VsdDogMHglWC4iLCByZXN1bHQp
OworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1RdWVyeS0+SXNzdWUoRDNESVNTVUVfQkVHSU4p
OworICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgICAgICBpZiAoRkFJTEVE
KHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VU
X09GX01FTU9SWSwgIkZhaWxlZCB0byBiZWdpbiBpbnRlcm5hbCBxdWVyeSwgcmVzdWx0OiAweCVY
LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCk7CisgICAgICAgIH0KICAg
ICB9CiAKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKQEAgLTEzMywyNiArMTM4
LDQwIEBAIGdsOjpFcnJvciBRdWVyeTk6OnRlc3RRdWVyeSgpCiAgICAgewogICAgICAgICBBU1NF
UlQobVF1ZXJ5KTsKIAotICAgICAgICBEV09SRCBudW1QaXhlbHMgPSAwOwotCi0gICAgICAgIEhS
RVNVTFQgaHJlcyA9IG1RdWVyeS0+R2V0RGF0YSgmbnVtUGl4ZWxzLCBzaXplb2YoRFdPUkQpLCBE
M0RHRVREQVRBX0ZMVVNIKTsKLSAgICAgICAgaWYgKGhyZXMgPT0gU19PSykKKyAgICAgICAgSFJF
U1VMVCByZXN1bHQgPSBTX09LOworICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKSkKICAgICAgICAg
ewotICAgICAgICAgICAgbVF1ZXJ5RmluaXNoZWQgPSB0cnVlOworICAgICAgICAgICAgY2FzZSBH
TF9BTllfU0FNUExFU19QQVNTRURfRVhUOgorICAgICAgICAgICAgY2FzZSBHTF9BTllfU0FNUExF
U19QQVNTRURfQ09OU0VSVkFUSVZFX0VYVDoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBEV09SRCBudW1QaXhlbHMgPSAwOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1RdWVyeS0+
R2V0RGF0YSgmbnVtUGl4ZWxzLCBzaXplb2YobnVtUGl4ZWxzKSwgRDNER0VUREFUQV9GTFVTSCk7
CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBTX09LKQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgbVF1ZXJ5RmluaXNoZWQgPSB0cnVlOworICAgICAgICAgICAg
ICAgICAgICBtUmVzdWx0ICAgICAgICA9IChudW1QaXhlbHMgPiAwKSA/IEdMX1RSVUUgOiBHTF9G
QUxTRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIHN3aXRjaCAoZ2V0VHlwZSgpKQorICAgICAgICAgICAgY2Fz
ZSBHTF9DT01NQU5EU19DT01QTEVURURfQ0hST01JVU06CiAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgIGNhc2UgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0VYVDoKLSAgICAgICAgICAgICAgY2Fz
ZSBHTF9BTllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFX0VYVDoKLSAgICAgICAgICAgICAg
ICBtUmVzdWx0ID0gKG51bVBpeGVscyA+IDApID8gR0xfVFJVRSA6IEdMX0ZBTFNFOworICAgICAg
ICAgICAgICAgIEJPT0wgY29tcGxldGVkID0gRkFMU0U7CisgICAgICAgICAgICAgICAgcmVzdWx0
ID0gbVF1ZXJ5LT5HZXREYXRhKCZjb21wbGV0ZWQsIHNpemVvZihjb21wbGV0ZWQpLCBEM0RHRVRE
QVRBX0ZMVVNIKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFNfT0spCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtUXVlcnlGaW5pc2hlZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgIG1SZXN1bHQgICAgICAgID0gKGNvbXBsZXRlZCA9PSBUUlVFKSA/
IEdMX1RSVUUgOiBHTF9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChk
M2Q5Ojppc0RldmljZUxvc3RFcnJvcihocmVzKSkKKworICAgICAgICBpZiAoZDNkOTo6aXNEZXZp
Y2VMb3N0RXJyb3IocmVzdWx0KSkKICAgICAgICAgewogICAgICAgICAgICAgbVJlbmRlcmVyLT5u
b3RpZnlEZXZpY2VMb3N0KCk7CiAgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9P
Rl9NRU1PUlksICJGYWlsZWQgdG8gdGVzdCBnZXQgcXVlcnkgcmVzdWx0LCBkZXZpY2UgaXMgbG9z
dC4iKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkOS9SZW5kZXJUYXJnZXQ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvUmVuZGVyVGFyZ2V0OS5j
cHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkOS9SZW5kZXJUYXJnZXQ5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTMwLDcgKzEzMCw4IEBAIEdMc2l6ZWkgU3VyZmFjZVJlbmRlclRhcmdldDk6OmdldERlcHRo
KCkKIAogR0xlbnVtIFN1cmZhY2VSZW5kZXJUYXJnZXQ5OjpnZXRJbnRlcm5hbEZvcm1hdCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIChtRGVwdGggPyBtU3dhcENoYWluLT5HZXREZXB0aEJ1ZmZlcklu
dGVybmFsRm9ybWF0KCkgOiBtU3dhcENoYWluLT5HZXRSZW5kZXJUYXJnZXRJbnRlcm5hbEZvcm1h
dCgpKTsKKyAgICByZXR1cm4gKG1EZXB0aCA/IG1Td2FwQ2hhaW4tPmdldERlcHRoQnVmZmVySW50
ZXJuYWxGb3JtYXQoKQorICAgICAgICAgICAgICAgICAgIDogbVN3YXBDaGFpbi0+Z2V0UmVuZGVy
VGFyZ2V0SW50ZXJuYWxGb3JtYXQoKSk7CiB9CiAKIEdMc2l6ZWkgU3VyZmFjZVJlbmRlclRhcmdl
dDk6OmdldFNhbXBsZXMoKSBjb25zdApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1JlbmRlcmVyOS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1Jl
bmRlcmVyOS5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9SZW5kZXJlcjkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMywxMSArMjMsMTMgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9SZW5kZXJidWZmZXIu
aCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9CbGl0OS5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0J1ZmZlcjkuaCIKKyNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkOS9Db250ZXh0OS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2Q5L0ZlbmNlOS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2Q5L2Zvcm1hdHV0aWxzOS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2Q5L0ZyYW1lYnVmZmVyOS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5
L0ltYWdlOS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0luZGV4QnVm
ZmVyOS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L05hdGl2ZVdpbmRv
dzkuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9RdWVyeTkuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9yZW5kZXJlcjlfdXRpbHMuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9SZW5kZXJUYXJnZXQ5LmgiCkBAIC00
NSw3ICs0Nyw2IEBACiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1NoYWRlckQzRC5o
IgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9TdXJmYWNlRDNELmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1RleHR1cmVEM0QuaCIKLSNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9kM2QvVHJhbnNmb3JtRmVlZGJhY2tEM0QuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9TdGF0ZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1N1cmZhY2UuaCIKICNpbmNsdWRlICJsaWJB
TkdMRS9UZXh0dXJlLmgiCkBAIC0xMzEsNyArMTMyLDcgQEAgUmVuZGVyZXI5OjpSZW5kZXJlcjko
ZWdsOjpEaXNwbGF5ICpkaXNwbAogICAgIG1BcHBsaWVkUGl4ZWxTaGFkZXIgPSBOVUxMOwogICAg
IG1BcHBsaWVkUHJvZ3JhbVNlcmlhbCA9IDA7CiAKLSAgICBpbml0aWFsaXplRGVidWdBbm5vdGF0
b3IoKTsKKyAgICBnbDo6SW5pdGlhbGl6ZURlYnVnQW5ub3RhdGlvbnMoJm1Bbm5vdGF0b3IpOwog
CiAgICAgbUVHTERldmljZSA9IG51bGxwdHI7CiB9CkBAIC0xNTQsNiArMTU1LDggQEAgdm9pZCBS
ZW5kZXJlcjk6OnJlbGVhc2UoKQogewogICAgIFJlbmRlcmVyRDNEOjpjbGVhbnVwKCk7CiAKKyAg
ICBnbDo6VW5pbml0aWFsaXplRGVidWdBbm5vdGF0aW9ucygpOworCiAgICAgbVRyYW5zbGF0ZWRB
dHRyaWJDYWNoZS5jbGVhcigpOwogCiAgICAgcmVsZWFzZURldmljZVJlc291cmNlcygpOwpAQCAt
MzQ2LDcgKzM0OSw3IEBAIHZvaWQgUmVuZGVyZXI5Ojppbml0aWFsaXplRGV2aWNlKCkKICAgICAg
ICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfUE9JTlRTSVpFX01BWCwgMHgzRjgwMDAw
MCk7ICAgLy8gMS4wZgogICAgIH0KIAotICAgIGNvbnN0IGdsOjpDYXBzICZyZW5kZXJlckNhcHMg
PSBnZXRSZW5kZXJlckNhcHMoKTsKKyAgICBjb25zdCBnbDo6Q2FwcyAmcmVuZGVyZXJDYXBzID0g
Z2V0TmF0aXZlQ2FwcygpOwogCiAgICAgbUN1clZlcnRleFNhbXBsZXJTdGF0ZXMucmVzaXplKHJl
bmRlcmVyQ2Fwcy5tYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyk7CiAgICAgbUN1clBpeGVsU2Ft
cGxlclN0YXRlcy5yZXNpemUocmVuZGVyZXJDYXBzLm1heFRleHR1cmVJbWFnZVVuaXRzKTsKQEAg
LTM2Niw3ICszNjksOSBAQCB2b2lkIFJlbmRlcmVyOTo6aW5pdGlhbGl6ZURldmljZSgpCiAgICAg
bVZlcnRleERhdGFNYW5hZ2VyID0gbmV3IFZlcnRleERhdGFNYW5hZ2VyKHRoaXMpOwogICAgIG1J
bmRleERhdGFNYW5hZ2VyID0gbmV3IEluZGV4RGF0YU1hbmFnZXIodGhpcywgZ2V0UmVuZGVyZXJD
bGFzcygpKTsKIAotICAgIG1UcmFuc2xhdGVkQXR0cmliQ2FjaGUucmVzaXplKGdldFJlbmRlcmVy
Q2FwcygpLm1heFZlcnRleEF0dHJpYnV0ZXMpOworICAgIG1UcmFuc2xhdGVkQXR0cmliQ2FjaGUu
cmVzaXplKGdldE5hdGl2ZUNhcHMoKS5tYXhWZXJ0ZXhBdHRyaWJ1dGVzKTsKKworICAgIG1TdGF0
ZU1hbmFnZXIuaW5pdGlhbGl6ZSgpOwogfQogCiBEM0RQUkVTRU5UX1BBUkFNRVRFUlMgUmVuZGVy
ZXI5OjpnZXREZWZhdWx0UHJlc2VudFBhcmFtZXRlcnMoKQpAQCAtMzkxLDcgKzM5Niw3IEBAIEQz
RFBSRVNFTlRfUEFSQU1FVEVSUyBSZW5kZXJlcjk6OmdldERlZmEKICAgICByZXR1cm4gcHJlc2Vu
dFBhcmFtZXRlcnM7CiB9CiAKLWVnbDo6Q29uZmlnU2V0IFJlbmRlcmVyOTo6Z2VuZXJhdGVDb25m
aWdzKCkgY29uc3QKK2VnbDo6Q29uZmlnU2V0IFJlbmRlcmVyOTo6Z2VuZXJhdGVDb25maWdzKCkK
IHsKICAgICBzdGF0aWMgY29uc3QgR0xlbnVtIGNvbG9yQnVmZmVyRm9ybWF0c1tdID0KICAgICB7
CkBAIC00MTAsOCArNDE1LDggQEAgZWdsOjpDb25maWdTZXQgUmVuZGVyZXI5OjpnZW5lcmF0ZUNv
bmZpZwogICAgICAgICBHTF9ERVBUSF9DT01QT05FTlQxNiwKICAgICB9OwogCi0gICAgY29uc3Qg
Z2w6OkNhcHMgJnJlbmRlcmVyQ2FwcyA9IGdldFJlbmRlcmVyQ2FwcygpOwotICAgIGNvbnN0IGds
OjpUZXh0dXJlQ2Fwc01hcCAmcmVuZGVyZXJUZXh0dXJlQ2FwcyA9IGdldFJlbmRlcmVyVGV4dHVy
ZUNhcHMoKTsKKyAgICBjb25zdCBnbDo6Q2FwcyAmcmVuZGVyZXJDYXBzICAgICAgICAgICAgICAg
ICAgPSBnZXROYXRpdmVDYXBzKCk7CisgICAgY29uc3QgZ2w6OlRleHR1cmVDYXBzTWFwICZyZW5k
ZXJlclRleHR1cmVDYXBzID0gZ2V0TmF0aXZlVGV4dHVyZUNhcHMoKTsKIAogICAgIEQzRERJU1BM
QVlNT0RFIGN1cnJlbnREaXNwbGF5TW9kZTsKICAgICBtRDNkOS0+R2V0QWRhcHRlckRpc3BsYXlN
b2RlKG1BZGFwdGVyLCAmY3VycmVudERpc3BsYXlNb2RlKTsKQEAgLTUyNCw5ICs1MjksNyBAQCB2
b2lkIFJlbmRlcmVyOTo6Z2VuZXJhdGVEaXNwbGF5RXh0ZW5zaW9uCiAgICAgb3V0RXh0ZW5zaW9u
cy0+cXVlcnlTdXJmYWNlUG9pbnRlciA9IHRydWU7CiAgICAgb3V0RXh0ZW5zaW9ucy0+d2luZG93
Rml4ZWRTaXplICAgICA9IHRydWU7CiAgICAgb3V0RXh0ZW5zaW9ucy0+cG9zdFN1YkJ1ZmZlciAg
ICAgICA9IHRydWU7Ci0gICAgb3V0RXh0ZW5zaW9ucy0+Y3JlYXRlQ29udGV4dCAgICAgICA9IHRy
dWU7CiAgICAgb3V0RXh0ZW5zaW9ucy0+ZGV2aWNlUXVlcnkgICAgICAgICA9IHRydWU7Ci0gICAg
b3V0RXh0ZW5zaW9ucy0+Y3JlYXRlQ29udGV4dE5vRXJyb3IgPSB0cnVlOwogCiAgICAgb3V0RXh0
ZW5zaW9ucy0+aW1hZ2UgICAgICAgICAgICAgICA9IHRydWU7CiAgICAgb3V0RXh0ZW5zaW9ucy0+
aW1hZ2VCYXNlICAgICAgICAgICA9IHRydWU7CkBAIC02NTUsMTkgKzY1OCwzMSBAQCBnbDo6RXJy
b3IgUmVuZGVyZXI5OjpmaW5pc2goKQogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1Ip
OwogfQogCi1Td2FwQ2hhaW5EM0QgKlJlbmRlcmVyOTo6Y3JlYXRlU3dhcENoYWluKE5hdGl2ZVdp
bmRvdyBuYXRpdmVXaW5kb3csCitib29sIFJlbmRlcmVyOTo6aXNWYWxpZE5hdGl2ZVdpbmRvdyhF
R0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdykgY29uc3QKK3sKKyAgICByZXR1cm4gTmF0aXZlV2lu
ZG93OTo6SXNWYWxpZE5hdGl2ZVdpbmRvdyh3aW5kb3cpOworfQorCitOYXRpdmVXaW5kb3dEM0Qg
KlJlbmRlcmVyOTo6Y3JlYXRlTmF0aXZlV2luZG93KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBl
Z2w6OkNvbmZpZyAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmKSBjb25zdAoreworICAgIHJldHVybiBuZXcg
TmF0aXZlV2luZG93OSh3aW5kb3cpOworfQorCitTd2FwQ2hhaW5EM0QgKlJlbmRlcmVyOTo6Y3Jl
YXRlU3dhcENoYWluKE5hdGl2ZVdpbmRvd0QzRCAqbmF0aXZlV2luZG93LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEUgc2hhcmVIYW5kbGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBiYWNrQnVmZmVyRm9ybWF0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVwdGhC
dWZmZXJGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVH
TGludCBvcmllbnRhdGlvbikKIHsKLSAgICByZXR1cm4gbmV3IFN3YXBDaGFpbjkodGhpcywgbmF0
aXZlV2luZG93LCBzaGFyZUhhbmRsZSwgYmFja0J1ZmZlckZvcm1hdCwgZGVwdGhCdWZmZXJGb3Jt
YXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWVudGF0aW9uKTsKKyAgICByZXR1cm4g
bmV3IFN3YXBDaGFpbjkodGhpcywgR2V0QXM8TmF0aXZlV2luZG93OT4obmF0aXZlV2luZG93KSwg
c2hhcmVIYW5kbGUsIGJhY2tCdWZmZXJGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlcHRoQnVmZmVyRm9ybWF0LCBvcmllbnRhdGlvbik7CiB9CiAKLUNvbXBpbGVySW1wbCAqUmVu
ZGVyZXI5OjpjcmVhdGVDb21waWxlcigpCitDb250ZXh0SW1wbCAqUmVuZGVyZXI5OjpjcmVhdGVD
b250ZXh0KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJnN0YXRlKQogewotICAgIHJldHVybiBuZXcg
Q29tcGlsZXJEM0QoU0hfSExTTF8zXzBfT1VUUFVUKTsKKyAgICByZXR1cm4gbmV3IENvbnRleHQ5
KHN0YXRlLCB0aGlzKTsKIH0KIAogdm9pZCAqUmVuZGVyZXI5OjpnZXREM0REZXZpY2UoKQpAQCAt
NzM5LDM5ICs3NTQsOSBAQCBJbmRleEJ1ZmZlciAqUmVuZGVyZXI5OjpjcmVhdGVJbmRleEJ1ZmZl
CiAgICAgcmV0dXJuIG5ldyBJbmRleEJ1ZmZlcjkodGhpcyk7CiB9CiAKLUJ1ZmZlckltcGwgKlJl
bmRlcmVyOTo6Y3JlYXRlQnVmZmVyKCkKLXsKLSAgICByZXR1cm4gbmV3IEJ1ZmZlcjkodGhpcyk7
Ci19Ci0KLVZlcnRleEFycmF5SW1wbCAqUmVuZGVyZXI5OjpjcmVhdGVWZXJ0ZXhBcnJheShjb25z
dCBnbDo6VmVydGV4QXJyYXk6OkRhdGEgJmRhdGEpCi17Ci0gICAgcmV0dXJuIG5ldyBWZXJ0ZXhB
cnJheTkoZGF0YSk7Ci19Ci0KLVF1ZXJ5SW1wbCAqUmVuZGVyZXI5OjpjcmVhdGVRdWVyeShHTGVu
dW0gdHlwZSkKLXsKLSAgICByZXR1cm4gbmV3IFF1ZXJ5OSh0aGlzLCB0eXBlKTsKLX0KLQotRmVu
Y2VOVkltcGwgKlJlbmRlcmVyOTo6Y3JlYXRlRmVuY2VOVigpCi17Ci0gICAgcmV0dXJuIG5ldyBG
ZW5jZU5WOSh0aGlzKTsKLX0KLQotRmVuY2VTeW5jSW1wbCAqUmVuZGVyZXI5OjpjcmVhdGVGZW5j
ZVN5bmMoKQotewotICAgIC8vIFJlbmRlcmVyOSBkb2Vzbid0IHN1cHBvcnQgRVMgMy4wIGFuZCBp
dHMgc3luYyBvYmplY3RzLgotICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgcmV0dXJuIE5VTEw7Ci19
Ci0KLVRyYW5zZm9ybUZlZWRiYWNrSW1wbCogUmVuZGVyZXI5OjpjcmVhdGVUcmFuc2Zvcm1GZWVk
YmFjaygpCi17Ci0gICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1GZWVkYmFja0QzRCgpOwotfQotCi1T
dHJlYW1JbXBsICpSZW5kZXJlcjk6OmNyZWF0ZVN0cmVhbShjb25zdCBlZ2w6OkF0dHJpYnV0ZU1h
cCAmYXR0cmlicykKK1N0cmVhbVByb2R1Y2VySW1wbCAqUmVuZGVyZXI5OjpjcmVhdGVTdHJlYW1Q
cm9kdWNlckQzRFRleHR1cmVOVjEyKAorICAgIGVnbDo6U3RyZWFtOjpDb25zdW1lclR5cGUgY29u
c3VtZXJUeXBlLAorICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQogewogICAg
IC8vIFN0cmVhbXMgYXJlIG5vdCBzdXBwb3J0ZWQgdW5kZXIgRDNEOQogICAgIFVOUkVBQ0hBQkxF
KCk7CkBAIC03OTIsMTMgKzc3Nyw2IEBAIGdsOjpFcnJvciBSZW5kZXJlcjk6OmZhc3RDb3B5QnVm
ZmVyVG9UZXgKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0K
IAotZ2w6OkVycm9yIFJlbmRlcmVyOTo6Z2VuZXJhdGVTd2l6emxlKGdsOjpUZXh0dXJlICp0ZXh0
dXJlKQotewotICAgIC8vIFN3aXp6bGVkIHRleHR1cmVzIGFyZSBub3QgYXZhaWxhYmxlIGluIEVT
MiBvciBEM0Q5Ci0gICAgVU5SRUFDSEFCTEUoKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKLX0KLQogZ2w6OkVycm9yIFJlbmRlcmVyOTo6c2V0U2FtcGxlclN0
YXRlKGdsOjpTYW1wbGVyVHlwZSB0eXBlLCBpbnQgaW5kZXgsIGdsOjpUZXh0dXJlICp0ZXh0dXJl
LCBjb25zdCBnbDo6U2FtcGxlclN0YXRlICZzYW1wbGVyU3RhdGUpCiB7CiAgICAgQ3VyU2FtcGxl
clN0YXRlICZhcHBsaWVkU2FtcGxlciA9ICh0eXBlID09IGdsOjpTQU1QTEVSX1BJWEVMKSA/IG1D
dXJQaXhlbFNhbXBsZXJTdGF0ZXNbaW5kZXhdCkBAIC04MzgsOSArODE2LDExIEBAIGdsOjpFcnJv
ciBSZW5kZXJlcjk6OnNldFNhbXBsZXJTdGF0ZShnbDoKICAgICAgICAgbURldmljZS0+U2V0U2Ft
cGxlclN0YXRlKGQzZFNhbXBsZXIsIEQzRFNBTVBfTUlQRklMVEVSLCBkM2RNaXBGaWx0ZXIpOwog
ICAgICAgICBtRGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUoZDNkU2FtcGxlciwgRDNEU0FNUF9NQVhN
SVBMRVZFTCwgYmFzZUxldmVsKTsKICAgICAgICAgbURldmljZS0+U2V0U2FtcGxlclN0YXRlKGQz
ZFNhbXBsZXIsIEQzRFNBTVBfTUlQTUFQTE9EQklBUywgc3RhdGljX2Nhc3Q8RFdPUkQ+KGxvZEJp
YXMpKTsKLSAgICAgICAgaWYgKGdldFJlbmRlcmVyRXh0ZW5zaW9ucygpLnRleHR1cmVGaWx0ZXJB
bmlzb3Ryb3BpYykKKyAgICAgICAgaWYgKGdldE5hdGl2ZUV4dGVuc2lvbnMoKS50ZXh0dXJlRmls
dGVyQW5pc290cm9waWMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1EZXZpY2UtPlNldFNhbXBs
ZXJTdGF0ZShkM2RTYW1wbGVyLCBEM0RTQU1QX01BWEFOSVNPVFJPUFksIChEV09SRClzYW1wbGVy
U3RhdGUubWF4QW5pc290cm9weSk7CisgICAgICAgICAgICBEV09SRCBtYXhBbmlzb3Ryb3B5ID0K
KyAgICAgICAgICAgICAgICBzdGQ6Om1pbihtRGV2aWNlQ2Fwcy5NYXhBbmlzb3Ryb3B5LCBzdGF0
aWNfY2FzdDxEV09SRD4oc2FtcGxlclN0YXRlLm1heEFuaXNvdHJvcHkpKTsKKyAgICAgICAgICAg
IG1EZXZpY2UtPlNldFNhbXBsZXJTdGF0ZShkM2RTYW1wbGVyLCBEM0RTQU1QX01BWEFOSVNPVFJP
UFksIG1heEFuaXNvdHJvcHkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC04OTksNTcgKzg3OSw0
NSBAQCBnbDo6RXJyb3IgUmVuZGVyZXI5OjpzZXRUZXh0dXJlKGdsOjpTYW1wCiAgICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKLWdsOjpFcnJvciBSZW5kZXJlcjk6OnNldFVu
aWZvcm1CdWZmZXJzKGNvbnN0IGdsOjpEYXRhICYvKmRhdGEqLywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEdMaW50PiAmLyp2ZXJ0ZXhV
bmlmb3JtQnVmZmVycyovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8R0xpbnQ+ICYvKmZyYWdtZW50VW5pZm9ybUJ1ZmZlcnMqLykKK2ds
OjpFcnJvciBSZW5kZXJlcjk6OnNldFVuaWZvcm1CdWZmZXJzKGNvbnN0IGdsOjpDb250ZXh0U3Rh
dGUgJiAvKmRhdGEqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6dmVjdG9yPEdMaW50PiAmIC8qdmVydGV4VW5pZm9ybUJ1ZmZlcnMqLywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEdMaW50
PiAmIC8qZnJhZ21lbnRVbmlmb3JtQnVmZmVycyovKQogewogICAgIC8vIE5vIGVmZmVjdCBpbiBF
UzIvRDNEOQogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi12b2lkIFJl
bmRlcmVyOTo6c3luY1N0YXRlKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpTdGF0
ZTo6RGlydHlCaXRzICZiaXRtYXNrKQorZ2w6OkVycm9yIFJlbmRlcmVyOTo6dXBkYXRlU3RhdGUo
Q29udGV4dDkgKmNvbnRleHQsIEdMZW51bSBkcmF3TW9kZSkKIHsKLSAgICBtU3RhdGVNYW5hZ2Vy
LnN5bmNTdGF0ZShzdGF0ZSwgYml0bWFzayk7Ci19CisgICAgY29uc3QgYXV0byAmZGF0YSA9IGNv
bnRleHQtPmdldENvbnRleHRTdGF0ZSgpOworICAgIGNvbnN0IGF1dG8gJmdsU3RhdGUgPSBkYXRh
LmdldFN0YXRlKCk7CiAKLWdsOjpFcnJvciBSZW5kZXJlcjk6OnVwZGF0ZVN0YXRlKGNvbnN0IGds
OjpEYXRhICZkYXRhLCBHTGVudW0gZHJhd01vZGUpCi17CiAgICAgLy8gQXBwbGllcyB0aGUgcmVu
ZGVyIHRhcmdldCBzdXJmYWNlLCBkZXB0aCBzdGVuY2lsIHN1cmZhY2UsIHZpZXdwb3J0IHJlY3Rh
bmdsZSBhbmQKICAgICAvLyBzY2lzc29yIHJlY3RhbmdsZSB0byB0aGUgcmVuZGVyZXIKLSAgICBj
b25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyT2JqZWN0ID0gZGF0YS5zdGF0ZS0+Z2V0
RHJhd0ZyYW1lYnVmZmVyKCk7Ci0gICAgQVNTRVJUKGZyYW1lYnVmZmVyT2JqZWN0ICYmIGZyYW1l
YnVmZmVyT2JqZWN0LT5jaGVja1N0YXR1cyhkYXRhKSA9PSBHTF9GUkFNRUJVRkZFUl9DT01QTEVU
RSk7CisgICAgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IGdsU3RhdGUuZ2V0RHJhd0Zy
YW1lYnVmZmVyKCk7CisgICAgQVNTRVJUKGZyYW1lYnVmZmVyICYmICFmcmFtZWJ1ZmZlci0+aGFz
QW55RGlydHlCaXQoKSAmJiBmcmFtZWJ1ZmZlci0+Y29tcGxldGUoZGF0YSkpOwogCi0gICAgZ2w6
OkVycm9yIGVycm9yID0gYXBwbHlSZW5kZXJUYXJnZXQoZnJhbWVidWZmZXJPYmplY3QpOwotICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAg
fQorICAgIEFOR0xFX1RSWShhcHBseVJlbmRlclRhcmdldChjb250ZXh0LCBmcmFtZWJ1ZmZlcikp
OwogCiAgICAgLy8gU2V0dGluZyB2aWV3cG9ydCBzdGF0ZQotICAgIHNldFZpZXdwb3J0KGRhdGEu
Y2FwcywgZGF0YS5zdGF0ZS0+Z2V0Vmlld3BvcnQoKSwgZGF0YS5zdGF0ZS0+Z2V0TmVhclBsYW5l
KCksCi0gICAgICAgICAgICAgICAgZGF0YS5zdGF0ZS0+Z2V0RmFyUGxhbmUoKSwgZHJhd01vZGUs
IGRhdGEuc3RhdGUtPmdldFJhc3Rlcml6ZXJTdGF0ZSgpLmZyb250RmFjZSwKLSAgICAgICAgICAg
ICAgICBmYWxzZSk7CisgICAgc2V0Vmlld3BvcnQoZ2xTdGF0ZS5nZXRWaWV3cG9ydCgpLCBnbFN0
YXRlLmdldE5lYXJQbGFuZSgpLCBnbFN0YXRlLmdldEZhclBsYW5lKCksIGRyYXdNb2RlLAorICAg
ICAgICAgICAgICAgIGdsU3RhdGUuZ2V0UmFzdGVyaXplclN0YXRlKCkuZnJvbnRGYWNlLCBmYWxz
ZSk7CiAKICAgICAvLyBTZXR0aW5nIHNjaXNzb3JzIHN0YXRlCi0gICAgc2V0U2Npc3NvclJlY3Rh
bmdsZShkYXRhLnN0YXRlLT5nZXRTY2lzc29yKCksIGRhdGEuc3RhdGUtPmlzU2Npc3NvclRlc3RF
bmFibGVkKCkpOworICAgIHNldFNjaXNzb3JSZWN0YW5nbGUoZ2xTdGF0ZS5nZXRTY2lzc29yKCks
IGdsU3RhdGUuaXNTY2lzc29yVGVzdEVuYWJsZWQoKSk7CiAKICAgICAvLyBTZXR0aW5nIGJsZW5k
LCBkZXB0aCBzdGVuY2lsLCBhbmQgcmFzdGVyaXplciBzdGF0ZXMKLSAgICBpbnQgc2FtcGxlcyAg
ICAgICAgICAgICAgICAgICAgPSBmcmFtZWJ1ZmZlck9iamVjdC0+Z2V0U2FtcGxlcyhkYXRhKTsK
LSAgICBnbDo6UmFzdGVyaXplclN0YXRlIHJhc3Rlcml6ZXIgPSBkYXRhLnN0YXRlLT5nZXRSYXN0
ZXJpemVyU3RhdGUoKTsKKyAgICBpbnQgc2FtcGxlcyAgICAgICAgICAgICAgICAgICAgPSBmcmFt
ZWJ1ZmZlci0+Z2V0U2FtcGxlcyhkYXRhKTsKKyAgICBnbDo6UmFzdGVyaXplclN0YXRlIHJhc3Rl
cml6ZXIgPSBnbFN0YXRlLmdldFJhc3Rlcml6ZXJTdGF0ZSgpOwogICAgIHJhc3Rlcml6ZXIucG9p
bnREcmF3TW9kZSAgICAgICA9IChkcmF3TW9kZSA9PSBHTF9QT0lOVFMpOwogICAgIHJhc3Rlcml6
ZXIubXVsdGlTYW1wbGUgICAgICAgICA9IChzYW1wbGVzICE9IDApOwogCiAgICAgdW5zaWduZWQg
aW50IG1hc2sgPSBHZXRCbGVuZFNhbXBsZU1hc2soZGF0YSwgc2FtcGxlcyk7Ci0gICAgZXJyb3Ig
ICAgICAgICAgICAgPSBzZXRCbGVuZERlcHRoUmFzdGVyU3RhdGVzKGRhdGEsIG1hc2spOwotCi0g
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAg
ICB9CisgICAgQU5HTEVfVFJZKHNldEJsZW5kRGVwdGhSYXN0ZXJTdGF0ZXMoZGF0YSwgbWFzaykp
OwogCiAgICAgbVN0YXRlTWFuYWdlci5yZXNldERpcnR5Qml0cygpOwogCi0gICAgcmV0dXJuIGVy
cm9yOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiB2b2lkIFJlbmRlcmVyOTo6c2V0
U2Npc3NvclJlY3RhbmdsZShjb25zdCBnbDo6UmVjdGFuZ2xlICZzY2lzc29yLCBib29sIGVuYWJs
ZWQpCkBAIC05NTcsMjcgKzkyNSwyOCBAQCB2b2lkIFJlbmRlcmVyOTo6c2V0U2Npc3NvclJlY3Rh
bmdsZShjb25zCiAgICAgbVN0YXRlTWFuYWdlci5zZXRTY2lzc29yU3RhdGUoc2Npc3NvciwgZW5h
YmxlZCk7CiB9CiAKLWdsOjpFcnJvciBSZW5kZXJlcjk6OnNldEJsZW5kRGVwdGhSYXN0ZXJTdGF0
ZXMoY29uc3QgZ2w6OkRhdGEgJmdsRGF0YSwgR0xlbnVtIGRyYXdNb2RlKQorZ2w6OkVycm9yIFJl
bmRlcmVyOTo6c2V0QmxlbmREZXB0aFJhc3RlclN0YXRlcyhjb25zdCBnbDo6Q29udGV4dFN0YXRl
ICZnbERhdGEsIEdMZW51bSBkcmF3TW9kZSkKIHsKLSAgICBpbnQgc2FtcGxlcyAgICAgICAgICAg
ICAgICAgICAgPSBnbERhdGEuc3RhdGUtPmdldERyYXdGcmFtZWJ1ZmZlcigpLT5nZXRTYW1wbGVz
KGdsRGF0YSk7Ci0gICAgZ2w6OlJhc3Rlcml6ZXJTdGF0ZSByYXN0ZXJpemVyID0gZ2xEYXRhLnN0
YXRlLT5nZXRSYXN0ZXJpemVyU3RhdGUoKTsKKyAgICBjb25zdCBhdXRvICZnbFN0YXRlICA9IGds
RGF0YS5nZXRTdGF0ZSgpOworICAgIGF1dG8gZHJhd0ZyYW1lYnVmZmVyID0gZ2xTdGF0ZS5nZXRE
cmF3RnJhbWVidWZmZXIoKTsKKyAgICBBU1NFUlQoIWRyYXdGcmFtZWJ1ZmZlci0+aGFzQW55RGly
dHlCaXQoKSk7CisgICAgaW50IHNhbXBsZXMgICAgICAgICAgICAgICAgICAgID0gZHJhd0ZyYW1l
YnVmZmVyLT5nZXRTYW1wbGVzKGdsRGF0YSk7CisgICAgZ2w6OlJhc3Rlcml6ZXJTdGF0ZSByYXN0
ZXJpemVyID0gZ2xTdGF0ZS5nZXRSYXN0ZXJpemVyU3RhdGUoKTsKICAgICByYXN0ZXJpemVyLnBv
aW50RHJhd01vZGUgICAgICAgPSAoZHJhd01vZGUgPT0gR0xfUE9JTlRTKTsKICAgICByYXN0ZXJp
emVyLm11bHRpU2FtcGxlICAgICAgICAgPSAoc2FtcGxlcyAhPSAwKTsKIAogICAgIHVuc2lnbmVk
IGludCBtYXNrID0gR2V0QmxlbmRTYW1wbGVNYXNrKGdsRGF0YSwgc2FtcGxlcyk7Ci0gICAgcmV0
dXJuIG1TdGF0ZU1hbmFnZXIuc2V0QmxlbmREZXB0aFJhc3RlclN0YXRlcygqZ2xEYXRhLnN0YXRl
LCBtYXNrKTsKKyAgICByZXR1cm4gbVN0YXRlTWFuYWdlci5zZXRCbGVuZERlcHRoUmFzdGVyU3Rh
dGVzKGdsU3RhdGUsIG1hc2spOwogfQogCi12b2lkIFJlbmRlcmVyOTo6c2V0Vmlld3BvcnQoY29u
c3QgZ2w6OkNhcHMgKmNhcHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OlJlY3RhbmdsZSAmdmlld3BvcnQsCit2b2lkIFJlbmRlcmVyOTo6c2V0Vmlld3BvcnQoY29uc3Qg
Z2w6OlJlY3RhbmdsZSAmdmlld3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxv
YXQgek5lYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgekZhciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHJhd01vZGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGZyb250RmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGlnbm9yZVZpZXdwb3J0KQogewotICAgIG1TdGF0ZU1hbmFnZXIuc2V0Vmlld3BvcnRT
dGF0ZShjYXBzLCB2aWV3cG9ydCwgek5lYXIsIHpGYXIsIGRyYXdNb2RlLCBmcm9udEZhY2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZVZpZXdwb3J0KTsKKyAgICBt
U3RhdGVNYW5hZ2VyLnNldFZpZXdwb3J0U3RhdGUodmlld3BvcnQsIHpOZWFyLCB6RmFyLCBkcmF3
TW9kZSwgZnJvbnRGYWNlLCBpZ25vcmVWaWV3cG9ydCk7CiB9CiAKIGJvb2wgUmVuZGVyZXI5Ojph
cHBseVByaW1pdGl2ZVR5cGUoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIGJvb2wgdXNlc1Bv
aW50U2l6ZSkKQEAgLTEwMjAsOCArOTg5LDkgQEAgYm9vbCBSZW5kZXJlcjk6OmFwcGx5UHJpbWl0
aXZlVHlwZShHTGVudQogICAgIHJldHVybiBtUHJpbWl0aXZlQ291bnQgPiAwOwogfQogCi0KLWds
OjpFcnJvciBSZW5kZXJlcjk6OmdldE51bGxDb2xvcmJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZm
ZXJBdHRhY2htZW50ICpkZXB0aGJ1ZmZlciwgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVu
dCAqKm91dENvbG9yQnVmZmVyKQorZ2w6OkVycm9yIFJlbmRlcmVyOTo6Z2V0TnVsbENvbG9yYnVm
ZmVyKEdMSW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmRlcHRoYnVm
ZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpG
cmFtZWJ1ZmZlckF0dGFjaG1lbnQgKipvdXRDb2xvckJ1ZmZlcikKIHsKICAgICBBU1NFUlQoZGVw
dGhidWZmZXIpOwogCkBAIC0xMDQwLDcgKzEwMTAsNyBAQCBnbDo6RXJyb3IgUmVuZGVyZXI5Ojpn
ZXROdWxsQ29sb3JidWZmZXIoCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBnbDo6UmVuZGVyYnVm
ZmVyICpudWxsUmVuZGVyYnVmZmVyID0gbmV3IGdsOjpSZW5kZXJidWZmZXIoY3JlYXRlUmVuZGVy
YnVmZmVyKCksIDApOworICAgIGdsOjpSZW5kZXJidWZmZXIgKm51bGxSZW5kZXJidWZmZXIgPSBu
ZXcgZ2w6OlJlbmRlcmJ1ZmZlcihpbXBsRmFjdG9yeS0+Y3JlYXRlUmVuZGVyYnVmZmVyKCksIDAp
OwogICAgIGdsOjpFcnJvciBlcnJvciA9IG51bGxSZW5kZXJidWZmZXItPnNldFN0b3JhZ2UoR0xf
Tk9ORSwgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
CiAgICAgewpAQCAtMTA3MCw3ICsxMDQwLDggQEAgZ2w6OkVycm9yIFJlbmRlcmVyOTo6Z2V0TnVs
bENvbG9yYnVmZmVyKAogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi1n
bDo6RXJyb3IgUmVuZGVyZXI5OjphcHBseVJlbmRlclRhcmdldChjb25zdCBnbDo6RnJhbWVidWZm
ZXJBdHRhY2htZW50ICpjb2xvckF0dGFjaG1lbnQsCitnbDo6RXJyb3IgUmVuZGVyZXI5OjphcHBs
eVJlbmRlclRhcmdldChHTEltcGxGYWN0b3J5ICppbXBsRmFjdG9yeSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQg
KmNvbG9yQXR0YWNobWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQp
CiB7CiAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqcmVuZGVyQXR0YWNobWVu
dCA9IGNvbG9yQXR0YWNobWVudDsKQEAgLTEwODAsNyArMTA1MSw3IEBAIGdsOjpFcnJvciBSZW5k
ZXJlcjk6OmFwcGx5UmVuZGVyVGFyZ2V0KGMKICAgICAvLyB0byBrZWVwIHRoZSBEM0QgcnVudGlt
ZSBoYXBweS4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgcG9zc2libGUgaWYgZGVwdGggdGV4dHVyaW5n
LgogICAgIGlmIChyZW5kZXJBdHRhY2htZW50ID09IG51bGxwdHIpCiAgICAgewotICAgICAgICBl
cnJvciA9IGdldE51bGxDb2xvcmJ1ZmZlcihkZXB0aFN0ZW5jaWxBdHRhY2htZW50LCAmcmVuZGVy
QXR0YWNobWVudCk7CisgICAgICAgIGVycm9yID0gZ2V0TnVsbENvbG9yYnVmZmVyKGltcGxGYWN0
b3J5LCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50LCAmcmVuZGVyQXR0YWNobWVudCk7CiAgICAgICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBlcnJv
cjsKQEAgLTExNzQsOSArMTE0NSwxMSBAQCBnbDo6RXJyb3IgUmVuZGVyZXI5OjphcHBseVJlbmRl
clRhcmdldChjCiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKLWdsOjpF
cnJvciBSZW5kZXJlcjk6OmFwcGx5UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAq
ZnJhbWVidWZmZXIpCitnbDo6RXJyb3IgUmVuZGVyZXI5OjphcHBseVJlbmRlclRhcmdldChHTElt
cGxGYWN0b3J5ICppbXBsRmFjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIpCiB7Ci0gICAgcmV0dXJu
IGFwcGx5UmVuZGVyVGFyZ2V0KGZyYW1lYnVmZmVyLT5nZXRDb2xvcmJ1ZmZlcigwKSwgZnJhbWVi
dWZmZXItPmdldERlcHRoT3JTdGVuY2lsYnVmZmVyKCkpOworICAgIHJldHVybiBhcHBseVJlbmRl
clRhcmdldChpbXBsRmFjdG9yeSwgZnJhbWVidWZmZXItPmdldENvbG9yYnVmZmVyKDApLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlci0+Z2V0RGVwdGhPclN0ZW5jaWxi
dWZmZXIoKSk7CiB9CiAKIGdsOjpFcnJvciBSZW5kZXJlcjk6OmFwcGx5VmVydGV4QnVmZmVyKGNv
bnN0IGdsOjpTdGF0ZSAmc3RhdGUsCkBAIC0xMTk3LDE0ICsxMTcwLDE0IEBAIGdsOjpFcnJvciBS
ZW5kZXJlcjk6OmFwcGx5VmVydGV4QnVmZmVyKGMKIH0KIAogLy8gQXBwbGllcyB0aGUgaW5kaWNl
cyBhbmQgZWxlbWVudCBhcnJheSBiaW5kaW5ncyB0byB0aGUgRGlyZWN0M0QgOSBkZXZpY2UKLWds
OjpFcnJvciBSZW5kZXJlcjk6OmFwcGx5SW5kZXhCdWZmZXIoY29uc3QgZ2w6OkRhdGEgJmRhdGEs
CitnbDo6RXJyb3IgUmVuZGVyZXI5OjphcHBseUluZGV4QnVmZmVyKGNvbnN0IGdsOjpDb250ZXh0
U3RhdGUgJmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMdm9pZCAqaW5kaWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGVkSW5k
ZXhEYXRhICppbmRleEluZm8pCiB7Ci0gICAgZ2w6OlZlcnRleEFycmF5ICp2YW8gICAgICAgICAg
ID0gZGF0YS5zdGF0ZS0+Z2V0VmVydGV4QXJyYXkoKTsKKyAgICBnbDo6VmVydGV4QXJyYXkgKnZh
byAgICAgICAgICAgPSBkYXRhLmdldFN0YXRlKCkuZ2V0VmVydGV4QXJyYXkoKTsKICAgICBnbDo6
QnVmZmVyICplbGVtZW50QXJyYXlCdWZmZXIgPSB2YW8tPmdldEVsZW1lbnRBcnJheUJ1ZmZlcigp
LmdldCgpOwogICAgIGdsOjpFcnJvciBlcnJvciA9IG1JbmRleERhdGFNYW5hZ2VyLT5wcmVwYXJl
SW5kZXhEYXRhKHR5cGUsIGNvdW50LCBlbGVtZW50QXJyYXlCdWZmZXIsIGluZGljZXMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5k
ZXhJbmZvLCBmYWxzZSk7CkBAIC0xMjMzLDEzICsxMjA2LDEzIEBAIGdsOjpFcnJvciBSZW5kZXJl
cjk6OmFwcGx5VHJhbnNmb3JtRmVlZGIKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9S
KTsKIH0KIAotZ2w6OkVycm9yIFJlbmRlcmVyOTo6ZHJhd0FycmF5c0ltcGwoY29uc3QgZ2w6OkRh
dGEgJmRhdGEsCitnbDo6RXJyb3IgUmVuZGVyZXI5OjpkcmF3QXJyYXlzSW1wbChjb25zdCBnbDo6
Q29udGV4dFN0YXRlICZkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBz
dGFydFZlcnRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3Rh
bmNlcykKIHsKLSAgICBBU1NFUlQoIWRhdGEuc3RhdGUtPmlzVHJhbnNmb3JtRmVlZGJhY2tBY3Rp
dmVVbnBhdXNlZCgpKTsKKyAgICBBU1NFUlQoIWRhdGEuZ2V0U3RhdGUoKS5pc1RyYW5zZm9ybUZl
ZWRiYWNrQWN0aXZlVW5wYXVzZWQoKSk7CiAKICAgICBzdGFydFNjZW5lKCk7CiAKQEAgLTEyNzgs
NyArMTI1MSw3IEBAIGdsOjpFcnJvciBSZW5kZXJlcjk6OmRyYXdBcnJheXNJbXBsKGNvbnMKICAg
ICB9CiB9CiAKLWdsOjpFcnJvciBSZW5kZXJlcjk6OmRyYXdFbGVtZW50c0ltcGwoY29uc3QgZ2w6
OkRhdGEgJmRhdGEsCitnbDo6RXJyb3IgUmVuZGVyZXI5OjpkcmF3RWxlbWVudHNJbXBsKGNvbnN0
IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRyYW5zbGF0ZWRJbmRleERhdGEgJmluZGV4SW5mbywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCkBAIC0xMjkwLDcgKzEyNjMsNyBA
QCBnbDo6RXJyb3IgUmVuZGVyZXI5OjpkcmF3RWxlbWVudHNJbXBsKGNvCiAKICAgICBpbnQgbWlu
SW5kZXggPSBzdGF0aWNfY2FzdDxpbnQ+KGluZGV4SW5mby5pbmRleFJhbmdlLnN0YXJ0KTsKIAot
ICAgIGdsOjpWZXJ0ZXhBcnJheSAqdmFvICAgICAgICAgICA9IGRhdGEuc3RhdGUtPmdldFZlcnRl
eEFycmF5KCk7CisgICAgZ2w6OlZlcnRleEFycmF5ICp2YW8gICAgICAgICAgID0gZGF0YS5nZXRT
dGF0ZSgpLmdldFZlcnRleEFycmF5KCk7CiAgICAgZ2w6OkJ1ZmZlciAqZWxlbWVudEFycmF5QnVm
ZmVyID0gdmFvLT5nZXRFbGVtZW50QXJyYXlCdWZmZXIoKS5nZXQoKTsKIAogICAgIGlmIChtb2Rl
ID09IEdMX1BPSU5UUykKQEAgLTEzMzIsNyArMTMwNSw3IEBAIGdsOjpFcnJvciBSZW5kZXJlcjk6
OmRyYXdMaW5lTG9vcChHTHNpemUKIAogICAgIHVuc2lnbmVkIGludCBzdGFydEluZGV4ID0gMDsK
IAotICAgIGlmIChnZXRSZW5kZXJlckV4dGVuc2lvbnMoKS5lbGVtZW50SW5kZXhVaW50KQorICAg
IGlmIChnZXROYXRpdmVFeHRlbnNpb25zKCkuZWxlbWVudEluZGV4VWludCkKICAgICB7CiAgICAg
ICAgIGlmICghbUxpbmVMb29wSUIpCiAgICAgICAgIHsKQEAgLTE1NzYsNyArMTU0OSw3IEBAIGds
OjpFcnJvciBSZW5kZXJlcjk6OmdldENvdW50aW5nSUIoc2l6ZV8KICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KLSAgICBlbHNlIGlmIChnZXRSZW5kZXJlckV4dGVuc2lvbnMoKS5lbGVt
ZW50SW5kZXhVaW50KQorICAgIGVsc2UgaWYgKGdldE5hdGl2ZUV4dGVuc2lvbnMoKS5lbGVtZW50
SW5kZXhVaW50KQogICAgIHsKICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IHNwYWNlTmVlZGVk
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihjb3VudCkgKiBzaXplb2YodW5zaWduZWQgaW50
KTsKIApAQCAtMTYxNSwyNSArMTU4OCwxOSBAQCBnbDo6RXJyb3IgUmVuZGVyZXI5OjpnZXRDb3Vu
dGluZ0lCKHNpemVfCiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKLWds
OjpFcnJvciBSZW5kZXJlcjk6OmFwcGx5U2hhZGVyc0ltcGwoY29uc3QgZ2w6OkRhdGEgJmRhdGEs
IEdMZW51bSAvKmRyYXdNb2RlKi8pCitnbDo6RXJyb3IgUmVuZGVyZXI5OjphcHBseVNoYWRlcnMo
Y29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwgR0xlbnVtIGRyYXdNb2RlKQogewotICAgIFBy
b2dyYW1EM0QgKnByb2dyYW1EM0QgID0gR2V0SW1wbEFzPFByb2dyYW1EM0Q+KGRhdGEuc3RhdGUt
PmdldFByb2dyYW0oKSk7CisgICAgUHJvZ3JhbUQzRCAqcHJvZ3JhbUQzRCA9IEdldEltcGxBczxQ
cm9ncmFtRDNEPihkYXRhLmdldFN0YXRlKCkuZ2V0UHJvZ3JhbSgpKTsKKyAgICBwcm9ncmFtRDNE
LT51cGRhdGVDYWNoZWRJbnB1dExheW91dChkYXRhLmdldFN0YXRlKCkpOworCiAgICAgY29uc3Qg
YXV0byAmaW5wdXRMYXlvdXQgPSBwcm9ncmFtRDNELT5nZXRDYWNoZWRJbnB1dExheW91dCgpOwog
CiAgICAgU2hhZGVyRXhlY3V0YWJsZUQzRCAqdmVydGV4RXhlID0gTlVMTDsKLSAgICBnbDo6RXJy
b3IgZXJyb3IgPSBwcm9ncmFtRDNELT5nZXRWZXJ0ZXhFeGVjdXRhYmxlRm9ySW5wdXRMYXlvdXQo
aW5wdXRMYXlvdXQsICZ2ZXJ0ZXhFeGUsIG51bGxwdHIpOwotICAgIGlmIChlcnJvci5pc0Vycm9y
KCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShw
cm9ncmFtRDNELT5nZXRWZXJ0ZXhFeGVjdXRhYmxlRm9ySW5wdXRMYXlvdXQoaW5wdXRMYXlvdXQs
ICZ2ZXJ0ZXhFeGUsIG51bGxwdHIpKTsKIAotICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZHJh
d0ZyYW1lYnVmZmVyID0gZGF0YS5zdGF0ZS0+Z2V0RHJhd0ZyYW1lYnVmZmVyKCk7CisgICAgY29u
c3QgZ2w6OkZyYW1lYnVmZmVyICpkcmF3RnJhbWVidWZmZXIgPSBkYXRhLmdldFN0YXRlKCkuZ2V0
RHJhd0ZyYW1lYnVmZmVyKCk7CiAgICAgU2hhZGVyRXhlY3V0YWJsZUQzRCAqcGl4ZWxFeGUgPSBO
VUxMOwotICAgIGVycm9yID0gcHJvZ3JhbUQzRC0+Z2V0UGl4ZWxFeGVjdXRhYmxlRm9yRnJhbWVi
dWZmZXIoZHJhd0ZyYW1lYnVmZmVyLCAmcGl4ZWxFeGUpOwotICAgIGlmIChlcnJvci5pc0Vycm9y
KCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShw
cm9ncmFtRDNELT5nZXRQaXhlbEV4ZWN1dGFibGVGb3JGcmFtZWJ1ZmZlcihkcmF3RnJhbWVidWZm
ZXIsICZwaXhlbEV4ZSkpOwogCiAgICAgSURpcmVjdDNEVmVydGV4U2hhZGVyOSAqdmVydGV4U2hh
ZGVyID0gKHZlcnRleEV4ZSA/IEdldEFzPFNoYWRlckV4ZWN1dGFibGU5Pih2ZXJ0ZXhFeGUpLT5n
ZXRWZXJ0ZXhTaGFkZXIoKSA6IG51bGxwdHIpOwogICAgIElEaXJlY3QzRFBpeGVsU2hhZGVyOSAq
cGl4ZWxTaGFkZXIgPSAocGl4ZWxFeGUgPyBHZXRBczxTaGFkZXJFeGVjdXRhYmxlOT4ocGl4ZWxF
eGUpLT5nZXRQaXhlbFNoYWRlcigpIDogbnVsbHB0cik7CkBAIC0xNjYzLDcgKzE2MzAsNyBAQCBn
bDo6RXJyb3IgUmVuZGVyZXI5OjphcHBseVNoYWRlcnNJbXBsKGNvCiAgICAgICAgIG1BcHBsaWVk
UHJvZ3JhbVNlcmlhbCA9IHByb2dyYW1TZXJpYWw7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIHByb2dyYW1EM0QtPmFwcGx5VW5pZm9ybXMo
ZHJhd01vZGUpOwogfQogCiBnbDo6RXJyb3IgUmVuZGVyZXI5OjphcHBseVVuaWZvcm1zKGNvbnN0
IFByb2dyYW1EM0QgJnByb2dyYW1EM0QsCkBAIC0xNjgyLDYgKzE2NDksNyBAQCBnbDo6RXJyb3Ig
UmVuZGVyZXI5OjphcHBseVVuaWZvcm1zKGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIGNh
c2UgR0xfU0FNUExFUl8yRDoKICAgICAgICAgICAgIGNhc2UgR0xfU0FNUExFUl9DVUJFOgorICAg
ICAgICAgICAgY2FzZSBHTF9TQU1QTEVSX0VYVEVSTkFMX09FUzoKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgR0xfQk9PTDoKICAgICAgICAgICAgIGNhc2UgR0xfQk9P
TF9WRUMyOgpAQCAtMTgyMywxNyArMTc5MSwyNiBAQCBnbDo6RXJyb3IgUmVuZGVyZXI5OjpjbGVh
cihjb25zdCBDbGVhclBhCiAgICAgICAgIFJlbmRlclRhcmdldDkgKmNvbG9yUmVuZGVyVGFyZ2V0
OSA9IEdldEFzPFJlbmRlclRhcmdldDk+KGNvbG9yUmVuZGVyVGFyZ2V0KTsKICAgICAgICAgQVNT
RVJUKGNvbG9yUmVuZGVyVGFyZ2V0OSk7CiAKLSAgICAgICAgY29uc3QgZ2w6OkludGVybmFsRm9y
bWF0ICZmb3JtYXRJbmZvID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhjb2xvckJ1ZmZlci0+
Z2V0SW50ZXJuYWxGb3JtYXQoKSk7CisgICAgICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAm
Zm9ybWF0SW5mbyA9ICpjb2xvckJ1ZmZlci0+Z2V0Rm9ybWF0KCkuaW5mbzsKICAgICAgICAgY29u
c3QgZDNkOTo6RDNERm9ybWF0ICZkM2RGb3JtYXRJbmZvID0gZDNkOTo6R2V0RDNERm9ybWF0SW5m
byhjb2xvclJlbmRlclRhcmdldDktPmdldEQzREZvcm1hdCgpKTsKIAotICAgICAgICBjb2xvciA9
IEQzRENPTE9SX0FSR0IoZ2w6OnVub3JtPDg+KChmb3JtYXRJbmZvLmFscGhhQml0cyA9PSAwICYm
IGQzZEZvcm1hdEluZm8uYWxwaGFCaXRzID4gMCkgPyAxLjBmIDogY2xlYXJQYXJhbXMuY29sb3JG
Q2xlYXJWYWx1ZS5hbHBoYSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6dW5v
cm08OD4oKGZvcm1hdEluZm8ucmVkQml0cyAgID09IDAgJiYgZDNkRm9ybWF0SW5mby5yZWRCaXRz
ICAgPiAwKSA/IDAuMGYgOiBjbGVhclBhcmFtcy5jb2xvckZDbGVhclZhbHVlLnJlZCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6dW5vcm08OD4oKGZvcm1hdEluZm8uZ3JlZW5C
aXRzID09IDAgJiYgZDNkRm9ybWF0SW5mby5ncmVlbkJpdHMgPiAwKSA/IDAuMGYgOiBjbGVhclBh
cmFtcy5jb2xvckZDbGVhclZhbHVlLmdyZWVuKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdsOjp1bm9ybTw4PigoZm9ybWF0SW5mby5ibHVlQml0cyAgPT0gMCAmJiBkM2RGb3JtYXRJ
bmZvLmJsdWVCaXRzICA+IDApID8gMC4wZiA6IGNsZWFyUGFyYW1zLmNvbG9yRkNsZWFyVmFsdWUu
Ymx1ZSkpOworICAgICAgICBjb2xvciA9CisgICAgICAgICAgICBEM0RDT0xPUl9BUkdCKGdsOjp1
bm9ybTw4PigoZm9ybWF0SW5mby5hbHBoYUJpdHMgPT0gMCAmJiBkM2RGb3JtYXRJbmZvLmFscGhh
Qml0cyA+IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAx
LjBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjbGVhclBh
cmFtcy5jb2xvckZDbGVhclZhbHVlLmFscGhhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2w6OnVub3JtPDg+KChmb3JtYXRJbmZvLnJlZEJpdHMgPT0gMCAmJiBkM2RGb3JtYXRJbmZvLnJl
ZEJpdHMgPiAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8g
MC4wZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2xlYXJQ
YXJhbXMuY29sb3JGQ2xlYXJWYWx1ZS5yZWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBn
bDo6dW5vcm08OD4oKGZvcm1hdEluZm8uZ3JlZW5CaXRzID09IDAgJiYgZDNkRm9ybWF0SW5mby5n
cmVlbkJpdHMgPiAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID8gMC4wZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2xl
YXJQYXJhbXMuY29sb3JGQ2xlYXJWYWx1ZS5ncmVlbiksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdsOjp1bm9ybTw4PigoZm9ybWF0SW5mby5ibHVlQml0cyA9PSAwICYmIGQzZEZvcm1hdElu
Zm8uYmx1ZUJpdHMgPiAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID8gMC4wZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDog
Y2xlYXJQYXJhbXMuY29sb3JGQ2xlYXJWYWx1ZS5ibHVlKSk7CiAKLSAgICAgICAgaWYgKChmb3Jt
YXRJbmZvLnJlZEJpdHMgICA+IDAgJiYgIWNsZWFyUGFyYW1zLmNvbG9yTWFza1JlZCkgfHwKKyAg
ICAgICAgaWYgKChmb3JtYXRJbmZvLnJlZEJpdHMgPiAwICYmICFjbGVhclBhcmFtcy5jb2xvck1h
c2tSZWQpIHx8CiAgICAgICAgICAgICAoZm9ybWF0SW5mby5ncmVlbkJpdHMgPiAwICYmICFjbGVh
clBhcmFtcy5jb2xvck1hc2tHcmVlbikgfHwKLSAgICAgICAgICAgIChmb3JtYXRJbmZvLmJsdWVC
aXRzICA+IDAgJiYgIWNsZWFyUGFyYW1zLmNvbG9yTWFza0JsdWUpIHx8CisgICAgICAgICAgICAo
Zm9ybWF0SW5mby5ibHVlQml0cyA+IDAgJiYgIWNsZWFyUGFyYW1zLmNvbG9yTWFza0JsdWUpIHx8
CiAgICAgICAgICAgICAoZm9ybWF0SW5mby5hbHBoYUJpdHMgPiAwICYmICFjbGVhclBhcmFtcy5j
b2xvck1hc2tBbHBoYSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIG5lZWRNYXNrZWRDb2xvckNs
ZWFyID0gdHJ1ZTsKQEAgLTIwNzAsMTkgKzIwNDcsNyBAQCB2b2lkIFJlbmRlcmVyOTo6cmVsZWFz
ZURldmljZVJlc291cmNlcygpCiBib29sIFJlbmRlcmVyOTo6dGVzdERldmljZUxvc3QoKQogewog
ICAgIEhSRVNVTFQgc3RhdHVzID0gZ2V0RGV2aWNlU3RhdHVzQ29kZSgpOwotICAgIGJvb2wgaXNM
b3N0ID0gRkFJTEVEKHN0YXR1cyk7Ci0KLSAgICBpZiAoaXNMb3N0KQotICAgIHsKLSAgICAgICAg
Ly8gZW5zdXJlIHdlIG5vdGUgdGhlIGRldmljZSBsb3NzIC0tCi0gICAgICAgIC8vIHdlJ2xsIHBy
b2JhYmx5IGdldCB0aGlzIGRvbmUgYWdhaW4gYnkgbm90aWZ5RGV2aWNlTG9zdAotICAgICAgICAv
LyBidXQgYmVzdCB0byByZW1lbWJlciBpdCEKLSAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGRvbid0
IHdhbnQgdG8gY2xlYXIgdGhlIGRldmljZSBsb3NzIHN0YXR1cyBoZXJlCi0gICAgICAgIC8vIC0t
IHRoaXMgbmVlZHMgdG8gYmUgZG9uZSBieSByZXNldERldmljZQotICAgICAgICBtRGV2aWNlTG9z
dCA9IHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGlzTG9zdDsKKyAgICByZXR1cm4gRkFJTEVE
KHN0YXR1cyk7CiB9CiAKIEhSRVNVTFQgUmVuZGVyZXI5OjpnZXREZXZpY2VTdGF0dXNDb2RlKCkK
QEAgLTIxODUsOCArMjE1MCw2IEBAIGJvb2wgUmVuZGVyZXI5OjpyZXNldERldmljZSgpCiAgICAg
ICAgIGluaXRpYWxpemVEZXZpY2UoKTsKICAgICB9CiAKLSAgICBtRGV2aWNlTG9zdCA9IGZhbHNl
OwotCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTIzNjQsMTEgKzIzMjcsMzUgQEAgZ2w6OkVy
cm9yIFJlbmRlcmVyOTo6Y29weUltYWdlMkRBcnJheShjbwogICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCitnbDo6RXJyb3IgUmVuZGVyZXI5Ojpjb3B5VGV4
dHVyZShjb25zdCBnbDo6VGV4dHVyZSAqc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgc291cmNlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VSZWN0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBkZXN0TGV2ZWwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIHVucGFja0ZsaXBZLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tVbm11bHRpcGx5QWxwaGEpCit7CisgICAgVU5JTVBM
RU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwor
fQorCitnbDo6RXJyb3IgUmVuZGVyZXI5Ojpjb3B5Q29tcHJlc3NlZFRleHR1cmUoY29uc3QgZ2w6
OlRleHR1cmUgKnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBzb3VyY2VMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkZXN0TGV2ZWwpCit7CisgICAgVU5JTVBMRU1F
TlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQor
CiBnbDo6RXJyb3IgUmVuZGVyZXI5OjpjcmVhdGVSZW5kZXJUYXJnZXQoaW50IHdpZHRoLCBpbnQg
aGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIHNhbXBsZXMsIFJlbmRlclRhcmdldEQzRCAq
Km91dFJUKQogewogICAgIGNvbnN0IGQzZDk6OlRleHR1cmVGb3JtYXQgJmQzZDlGb3JtYXRJbmZv
ID0gZDNkOTo6R2V0VGV4dHVyZUZvcm1hdEluZm8oZm9ybWF0KTsKIAotICAgIGNvbnN0IGdsOjpU
ZXh0dXJlQ2FwcyAmdGV4dHVyZUNhcHMgPSBnZXRSZW5kZXJlclRleHR1cmVDYXBzKCkuZ2V0KGZv
cm1hdCk7CisgICAgY29uc3QgZ2w6OlRleHR1cmVDYXBzICZ0ZXh0dXJlQ2FwcyA9IGdldE5hdGl2
ZVRleHR1cmVDYXBzKCkuZ2V0KGZvcm1hdCk7CiAgICAgR0x1aW50IHN1cHBvcnRlZFNhbXBsZXMg
PSB0ZXh0dXJlQ2Fwcy5nZXROZWFyZXN0U2FtcGxlcyhzYW1wbGVzKTsKIAogICAgIElEaXJlY3Qz
RFRleHR1cmU5ICp0ZXh0dXJlICAgICAgPSBudWxscHRyOwpAQCAtMjQ1NywyMSArMjQ0NCw2IEBA
IGdsOjpFcnJvciBSZW5kZXJlcjk6OmNyZWF0ZVJlbmRlclRhcmdldEMKICAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotRnJhbWVidWZmZXJJbXBsICpSZW5kZXJlcjk6OmNy
ZWF0ZUZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGF0YSAmZGF0YSkKLXsKLSAg
ICByZXR1cm4gbmV3IEZyYW1lYnVmZmVyOShkYXRhLCB0aGlzKTsKLX0KLQotU2hhZGVySW1wbCAq
UmVuZGVyZXI5OjpjcmVhdGVTaGFkZXIoY29uc3QgZ2w6OlNoYWRlcjo6RGF0YSAmZGF0YSkKLXsK
LSAgICByZXR1cm4gbmV3IFNoYWRlckQzRChkYXRhKTsKLX0KLQotUHJvZ3JhbUltcGwgKlJlbmRl
cmVyOTo6Y3JlYXRlUHJvZ3JhbShjb25zdCBnbDo6UHJvZ3JhbTo6RGF0YSAmZGF0YSkKLXsKLSAg
ICByZXR1cm4gbmV3IFByb2dyYW1EM0QoZGF0YSwgdGhpcyk7Ci19Ci0KIGdsOjpFcnJvciBSZW5k
ZXJlcjk6OmxvYWRFeGVjdXRhYmxlKGNvbnN0IHZvaWQgKmZ1bmN0aW9uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNoYWRlclR5cGUgdHlwZSwKQEAgLTI2NzcsOCArMjY0OSw4IEBA
IGdsOjpFcnJvciBSZW5kZXJlcjk6OmdlbmVyYXRlTWlwbWFwKEltYWcKICAgICByZXR1cm4gSW1h
Z2U5OjpnZW5lcmF0ZU1pcG1hcChkc3Q5LCBzcmM5KTsKIH0KIAotZ2w6OkVycm9yIFJlbmRlcmVy
OTo6Z2VuZXJhdGVNaXBtYXBzVXNpbmdEM0QoVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VGV4dHVy
ZVN0YXRlICZ0ZXh0dXJlU3RhdGUpCitnbDo6RXJyb3IgUmVuZGVyZXI5OjpnZW5lcmF0ZU1pcG1h
cFVzaW5nRDNEKFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZ0ZXh0dXJlU3Rh
dGUpCiB7CiAgICAgVU5SRUFDSEFCTEUoKTsKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VS
Uk9SKTsKQEAgLTI2OTAsOSArMjY2MiwxOCBAQCBUZXh0dXJlU3RvcmFnZSAqUmVuZGVyZXI5Ojpj
cmVhdGVUZXh0dXJlCiAgICAgcmV0dXJuIG5ldyBUZXh0dXJlU3RvcmFnZTlfMkQodGhpcywgc3dh
cENoYWluOSk7CiB9CiAKLVRleHR1cmVTdG9yYWdlICpSZW5kZXJlcjk6OmNyZWF0ZVRleHR1cmVT
dG9yYWdlRUdMSW1hZ2UoRUdMSW1hZ2VEM0QgKmVnbEltYWdlKQorVGV4dHVyZVN0b3JhZ2UgKlJl
bmRlcmVyOTo6Y3JlYXRlVGV4dHVyZVN0b3JhZ2VFR0xJbWFnZShFR0xJbWFnZUQzRCAqZWdsSW1h
Z2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJlbmRlclRhcmdldEQzRCAqcmVuZGVyVGFyZ2V0RDNEKQoreworICAgIHJldHVybiBuZXcg
VGV4dHVyZVN0b3JhZ2U5X0VHTEltYWdlKHRoaXMsIGVnbEltYWdlLCBHZXRBczxSZW5kZXJUYXJn
ZXQ5PihyZW5kZXJUYXJnZXREM0QpKTsKK30KKworVGV4dHVyZVN0b3JhZ2UgKlJlbmRlcmVyOTo6
Y3JlYXRlVGV4dHVyZVN0b3JhZ2VFeHRlcm5hbCgKKyAgICBlZ2w6OlN0cmVhbSAqc3RyZWFtLAor
ICAgIGNvbnN0IGVnbDo6U3RyZWFtOjpHTFRleHR1cmVEZXNjcmlwdGlvbiAmZGVzYykKIHsKLSAg
ICByZXR1cm4gbmV3IFRleHR1cmVTdG9yYWdlOV9FR0xJbWFnZSh0aGlzLCBlZ2xJbWFnZSk7Cisg
ICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBUZXh0dXJlU3Rv
cmFnZSAqUmVuZGVyZXI5OjpjcmVhdGVUZXh0dXJlU3RvcmFnZTJEKEdMZW51bSBpbnRlcm5hbGZv
cm1hdCwgYm9vbCByZW5kZXJUYXJnZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBp
bnQgbGV2ZWxzLCBib29sIGhpbnRMZXZlbFplcm9Pbmx5KQpAQCAtMjcyMSwyNCArMjcwMiw2IEBA
IFRleHR1cmVTdG9yYWdlICpSZW5kZXJlcjk6OmNyZWF0ZVRleHR1cmUKICAgICByZXR1cm4gTlVM
TDsKIH0KIAotVGV4dHVyZUltcGwgKlJlbmRlcmVyOTo6Y3JlYXRlVGV4dHVyZShHTGVudW0gdGFy
Z2V0KQotewotICAgIHN3aXRjaCh0YXJnZXQpCi0gICAgewotICAgICAgY2FzZSBHTF9URVhUVVJF
XzJEOiAgICAgICByZXR1cm4gbmV3IFRleHR1cmVEM0RfMkQodGhpcyk7Ci0gICAgICBjYXNlIEdM
X1RFWFRVUkVfQ1VCRV9NQVA6IHJldHVybiBuZXcgVGV4dHVyZUQzRF9DdWJlKHRoaXMpOwotICAg
ICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgIH0KLQotICAg
IHJldHVybiBOVUxMOwotfQotCi1SZW5kZXJidWZmZXJJbXBsICpSZW5kZXJlcjk6OmNyZWF0ZVJl
bmRlcmJ1ZmZlcigpCi17Ci0gICAgUmVuZGVyYnVmZmVyRDNEICpyZW5kZXJidWZmZXIgPSBuZXcg
UmVuZGVyYnVmZmVyRDNEKHRoaXMpOwotICAgIHJldHVybiByZW5kZXJidWZmZXI7Ci19Ci0KIGJv
b2wgUmVuZGVyZXI5OjpnZXRMVUlEKExVSUQgKmFkYXB0ZXJMdWlkKSBjb25zdAogewogICAgIGFk
YXB0ZXJMdWlkLT5IaWdoUGFydCA9IDA7CkBAIC0yODA5LDExICsyNzcyLDYgQEAgV29ya2Fyb3Vu
ZHNEM0QgUmVuZGVyZXI5OjpnZW5lcmF0ZVdvcmthcgogICAgIHJldHVybiBkM2Q5OjpHZW5lcmF0
ZVdvcmthcm91bmRzKCk7CiB9CiAKLXZvaWQgUmVuZGVyZXI5OjpjcmVhdGVBbm5vdGF0b3IoKQot
ewotICAgIG1Bbm5vdGF0b3IgPSBuZXcgRGVidWdBbm5vdGF0b3I5KCk7Ci19Ci0KIGdsOjpFcnJv
ciBSZW5kZXJlcjk6OmNsZWFyVGV4dHVyZXMoZ2w6OlNhbXBsZXJUeXBlIHNhbXBsZXJUeXBlLCBz
aXplX3QgcmFuZ2VTdGFydCwgc2l6ZV90IHJhbmdlRW5kKQogewogICAgIC8vIFRPRE8oam1hZGls
bCk6IGZhc3RlciB3YXk/CkBAIC0yODU2LDQgKzI4MTQsMTAzIEBAIFJlbmRlcmVyOTo6Q3VyU2Ft
cGxlclN0YXRlOjpDdXJTYW1wbGVyU3QKIHsKIH0KIAorZ2w6OkVycm9yIFJlbmRlcmVyOTo6Z2Vu
ZXJpY0RyYXdFbGVtZW50cyhDb250ZXh0OSAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhS
YW5nZSkKK3sKKyAgICBjb25zdCBhdXRvICZkYXRhICAgICA9IGNvbnRleHQtPmdldENvbnRleHRT
dGF0ZSgpOworICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgp
LmdldFByb2dyYW0oKTsKKyAgICBBU1NFUlQocHJvZ3JhbSAhPSBudWxscHRyKTsKKyAgICBQcm9n
cmFtRDNEICpwcm9ncmFtRDNEID0gR2V0SW1wbEFzPFByb2dyYW1EM0Q+KHByb2dyYW0pOworICAg
IGJvb2wgdXNlc1BvaW50U2l6ZSAgICAgPSBwcm9ncmFtRDNELT51c2VzUG9pbnRTaXplKCk7CisK
KyAgICBwcm9ncmFtRDNELT51cGRhdGVTYW1wbGVyTWFwcGluZygpOworCisgICAgaWYgKCFhcHBs
eVByaW1pdGl2ZVR5cGUobW9kZSwgY291bnQsIHVzZXNQb2ludFNpemUpKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CisgICAgfQorCisgICAgQU5HTEVfVFJZKHVwZGF0ZVN0
YXRlKGNvbnRleHQsIG1vZGUpKTsKKworICAgIFRyYW5zbGF0ZWRJbmRleERhdGEgaW5kZXhJbmZv
OworICAgIGluZGV4SW5mby5pbmRleFJhbmdlID0gaW5kZXhSYW5nZTsKKworICAgIEFOR0xFX1RS
WShhcHBseUluZGV4QnVmZmVyKGRhdGEsIGluZGljZXMsIGNvdW50LCBtb2RlLCB0eXBlLCAmaW5k
ZXhJbmZvKSk7CisKKyAgICBhcHBseVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVycyhkYXRhLmdldFN0
YXRlKCkpOworICAgIC8vIFRyYW5zZm9ybSBmZWVkYmFjayBpcyBub3QgYWxsb3dlZCBmb3IgRHJh
d0VsZW1lbnRzLCB0aGlzIGVycm9yIHNob3VsZCBoYXZlIGJlZW4gY2F1Z2h0IGF0IHRoZQorICAg
IC8vIEFQSSB2YWxpZGF0aW9uCisgICAgLy8gbGF5ZXIuCisgICAgQVNTRVJUKCFkYXRhLmdldFN0
YXRlKCkuaXNUcmFuc2Zvcm1GZWVkYmFja0FjdGl2ZVVucGF1c2VkKCkpOworCisgICAgc2l6ZV90
IHZlcnRleENvdW50ID0gaW5kZXhJbmZvLmluZGV4UmFuZ2UudmVydGV4Q291bnQoKTsKKyAgICBB
TkdMRV9UUlkoYXBwbHlWZXJ0ZXhCdWZmZXIoZGF0YS5nZXRTdGF0ZSgpLCBtb2RlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHNpemVpPihpbmRleEluZm8u
aW5kZXhSYW5nZS5zdGFydCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PEdMc2l6ZWk+KHZlcnRleENvdW50KSwgaW5zdGFuY2VzLCAmaW5kZXhJbmZvKSk7Cisg
ICAgQU5HTEVfVFJZKGFwcGx5VGV4dHVyZXMoY29udGV4dCwgZGF0YSkpOworICAgIEFOR0xFX1RS
WShhcHBseVNoYWRlcnMoZGF0YSwgbW9kZSkpOworICAgIEFOR0xFX1RSWShwcm9ncmFtRDNELT5h
cHBseVVuaWZvcm1CdWZmZXJzKGRhdGEpKTsKKworICAgIGlmICghc2tpcERyYXcoZGF0YSwgbW9k
ZSkpCisgICAgeworICAgICAgICBBTkdMRV9UUlkoZHJhd0VsZW1lbnRzSW1wbChkYXRhLCBpbmRl
eEluZm8sIG1vZGUsIGNvdW50LCB0eXBlLCBpbmRpY2VzLCBpbnN0YW5jZXMpKTsKKyAgICB9CisK
KyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKK30KKworZ2w6OkVycm9yIFJlbmRlcmVyOTo6Z2Vu
ZXJpY0RyYXdBcnJheXMoQ29udGV4dDkgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzKQoreworICAgIGNvbnN0IGF1dG8gJmRhdGEgICAgID0g
Y29udGV4dC0+Z2V0Q29udGV4dFN0YXRlKCk7CisgICAgZ2w6OlByb2dyYW0gKnByb2dyYW0gPSBj
b250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0UHJvZ3JhbSgpOworICAgIEFTU0VSVChwcm9ncmFtICE9
IG51bGxwdHIpOworICAgIFByb2dyYW1EM0QgKnByb2dyYW1EM0QgPSBHZXRJbXBsQXM8UHJvZ3Jh
bUQzRD4ocHJvZ3JhbSk7CisgICAgYm9vbCB1c2VzUG9pbnRTaXplICAgICA9IHByb2dyYW1EM0Qt
PnVzZXNQb2ludFNpemUoKTsKKworICAgIHByb2dyYW1EM0QtPnVwZGF0ZVNhbXBsZXJNYXBwaW5n
KCk7CisKKyAgICBpZiAoIWFwcGx5UHJpbWl0aXZlVHlwZShtb2RlLCBjb3VudCwgdXNlc1BvaW50
U2l6ZSkpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKKyAgICB9CisKKyAg
ICBBTkdMRV9UUlkodXBkYXRlU3RhdGUoY29udGV4dCwgbW9kZSkpOworICAgIEFOR0xFX1RSWShh
cHBseVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVycyhkYXRhLmdldFN0YXRlKCkpKTsKKyAgICBBTkdM
RV9UUlkoYXBwbHlWZXJ0ZXhCdWZmZXIoZGF0YS5nZXRTdGF0ZSgpLCBtb2RlLCBmaXJzdCwgY291
bnQsIGluc3RhbmNlcywgbnVsbHB0cikpOworICAgIEFOR0xFX1RSWShhcHBseVRleHR1cmVzKGNv
bnRleHQsIGRhdGEpKTsKKyAgICBBTkdMRV9UUlkoYXBwbHlTaGFkZXJzKGRhdGEsIG1vZGUpKTsK
KyAgICBBTkdMRV9UUlkocHJvZ3JhbUQzRC0+YXBwbHlVbmlmb3JtQnVmZmVycyhkYXRhKSk7CisK
KyAgICBpZiAoIXNraXBEcmF3KGRhdGEsIG1vZGUpKQorICAgIHsKKyAgICAgICAgQU5HTEVfVFJZ
KGRyYXdBcnJheXNJbXBsKGRhdGEsIG1vZGUsIGZpcnN0LCBjb3VudCwgaW5zdGFuY2VzKSk7CisK
KyAgICAgICAgaWYgKGRhdGEuZ2V0U3RhdGUoKS5pc1RyYW5zZm9ybUZlZWRiYWNrQWN0aXZlVW5w
YXVzZWQoKSkKKyAgICAgICAgeworICAgICAgICAgICAgQU5HTEVfVFJZKG1hcmtUcmFuc2Zvcm1G
ZWVkYmFja1VzYWdlKGRhdGEpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOworfQorCitGcmFtZWJ1ZmZlckltcGwgKlJlbmRlcmVyOTo6Y3JlYXRlRGVmYXVs
dEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZzdGF0ZSkKK3sKKyAgICBy
ZXR1cm4gbmV3IEZyYW1lYnVmZmVyOShzdGF0ZSwgdGhpcyk7Cit9CisKK2dsOjpWZXJzaW9uIFJl
bmRlcmVyOTo6Z2V0TWF4U3VwcG9ydGVkRVNWZXJzaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
Z2w6OlZlcnNpb24oMiwgMCk7CiB9CisKK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1JlbmRlcmVy
OS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkOS9SZW5kZXJlcjkuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1JlbmRlcmVy
OS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBAIGNsYXNzIEF0dHJpYnV0ZU1hcDsK
IG5hbWVzcGFjZSByeAogewogY2xhc3MgQmxpdDk7CitjbGFzcyBDb250ZXh0OTsKIGNsYXNzIElu
ZGV4RGF0YU1hbmFnZXI7CiBjbGFzcyBQcm9ncmFtRDNEOwogY2xhc3MgU3RyZWFtaW5nSW5kZXhC
dWZmZXJJbnRlcmZhY2U7CkBAIC02OCwyNCArNjksMjkgQEAgY2xhc3MgUmVuZGVyZXI5IDogcHVi
bGljIFJlbmRlcmVyRDNECiAgICAgdmlydHVhbCB+UmVuZGVyZXI5KCk7CiAKICAgICBlZ2w6OkVy
cm9yIGluaXRpYWxpemUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVzZXREZXZpY2Uo
KTsKKyAgICBib29sIHJlc2V0RGV2aWNlKCkgb3ZlcnJpZGU7CiAKLSAgICBlZ2w6OkNvbmZpZ1Nl
dCBnZW5lcmF0ZUNvbmZpZ3MoKSBjb25zdCBvdmVycmlkZTsKKyAgICBlZ2w6OkNvbmZpZ1NldCBn
ZW5lcmF0ZUNvbmZpZ3MoKSBvdmVycmlkZTsKICAgICB2b2lkIGdlbmVyYXRlRGlzcGxheUV4dGVu
c2lvbnMoZWdsOjpEaXNwbGF5RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucykgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIHN0YXJ0U2NlbmUoKTsKICAgICB2b2lkIGVuZFNjZW5lKCk7CiAKLSAg
ICBnbDo6RXJyb3IgZmx1c2goKSBvdmVycmlkZTsKLSAgICBnbDo6RXJyb3IgZmluaXNoKCkgb3Zl
cnJpZGU7CisgICAgZ2w6OkVycm9yIGZsdXNoKCk7CisgICAgZ2w6OkVycm9yIGZpbmlzaCgpOwog
Ci0gICAgU3dhcENoYWluRDNEICpjcmVhdGVTd2FwQ2hhaW4oTmF0aXZlV2luZG93IG5hdGl2ZVdp
bmRvdywKKyAgICBib29sIGlzVmFsaWROYXRpdmVXaW5kb3coRUdMTmF0aXZlV2luZG93VHlwZSB3
aW5kb3cpIGNvbnN0IG92ZXJyaWRlOworICAgIE5hdGl2ZVdpbmRvd0QzRCAqY3JlYXRlTmF0aXZl
V2luZG93KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0
dHJpYnMpIGNvbnN0IG92ZXJyaWRlOworCisgICAgU3dhcENoYWluRDNEICpjcmVhdGVTd2FwQ2hh
aW4oTmF0aXZlV2luZG93RDNEICpuYXRpdmVXaW5kb3csCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSEFORExFIHNoYXJlSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBiYWNrQnVmZmVyRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBkZXB0aEJ1ZmZlckZvcm1hdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFR0xpbnQgb3JpZW50YXRpb24pIG92ZXJyaWRlOwogCi0gICAgQ29t
cGlsZXJJbXBsICpjcmVhdGVDb21waWxlcigpIG92ZXJyaWRlOworICAgIENvbnRleHRJbXBsICpj
cmVhdGVDb250ZXh0KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJnN0YXRlKSBvdmVycmlkZTsKIAog
ICAgIGdsOjpFcnJvciBhbGxvY2F0ZUV2ZW50UXVlcnkoSURpcmVjdDNEUXVlcnk5ICoqb3V0UXVl
cnkpOwogICAgIHZvaWQgZnJlZUV2ZW50UXVlcnkoSURpcmVjdDNEUXVlcnk5KiBxdWVyeSk7CkBA
IC05NSw5OCArMTAxLDEyOSBAQCBjbGFzcyBSZW5kZXJlcjkgOiBwdWJsaWMgUmVuZGVyZXJEM0QK
ICAgICBnbDo6RXJyb3IgY3JlYXRlUGl4ZWxTaGFkZXIoY29uc3QgRFdPUkQgKmZ1bmN0aW9uLCBz
aXplX3QgbGVuZ3RoLCBJRGlyZWN0M0RQaXhlbFNoYWRlcjkgKipvdXRTaGFkZXIpOwogICAgIEhS
RVNVTFQgY3JlYXRlVmVydGV4QnVmZmVyKFVJTlQgTGVuZ3RoLCBEV09SRCBVc2FnZSwgSURpcmVj
dDNEVmVydGV4QnVmZmVyOSAqKnBwVmVydGV4QnVmZmVyKTsKICAgICBIUkVTVUxUIGNyZWF0ZUlu
ZGV4QnVmZmVyKFVJTlQgTGVuZ3RoLCBEV09SRCBVc2FnZSwgRDNERk9STUFUIEZvcm1hdCwgSURp
cmVjdDNESW5kZXhCdWZmZXI5ICoqcHBJbmRleEJ1ZmZlcik7Ci0gICAgdmlydHVhbCBnbDo6RXJy
b3IgZ2VuZXJhdGVTd2l6emxlKGdsOjpUZXh0dXJlICp0ZXh0dXJlKTsKLSAgICB2aXJ0dWFsIGds
OjpFcnJvciBzZXRTYW1wbGVyU3RhdGUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsIGludCBpbmRleCwg
Z2w6OlRleHR1cmUgKnRleHR1cmUsIGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJnNhbXBsZXIpOwot
ICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldFRleHR1cmUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsIGlu
dCBpbmRleCwgZ2w6OlRleHR1cmUgKnRleHR1cmUpOworICAgIGdsOjpFcnJvciBzZXRTYW1wbGVy
U3RhdGUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZSAq
dGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpTYW1wbGVy
U3RhdGUgJnNhbXBsZXIpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBzZXRUZXh0dXJlKGdsOjpT
YW1wbGVyVHlwZSB0eXBlLCBpbnQgaW5kZXgsIGdsOjpUZXh0dXJlICp0ZXh0dXJlKSBvdmVycmlk
ZTsKIAotICAgIGdsOjpFcnJvciBzZXRVbmlmb3JtQnVmZmVycyhjb25zdCBnbDo6RGF0YSAmZGF0
YSwKKyAgICBnbDo6RXJyb3Igc2V0VW5pZm9ybUJ1ZmZlcnMoY29uc3QgZ2w6OkNvbnRleHRTdGF0
ZSAmZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0
b3I8R0xpbnQ+ICZ2ZXJ0ZXhVbmlmb3JtQnVmZmVycywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8R0xpbnQ+ICZmcmFnbWVudFVuaWZvcm1CdWZmZXJz
KSBvdmVycmlkZTsKIAotICAgIGdsOjpFcnJvciB1cGRhdGVTdGF0ZShjb25zdCBnbDo6RGF0YSAm
ZGF0YSwgR0xlbnVtIGRyYXdNb2RlKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgdXBkYXRlU3Rh
dGUoQ29udGV4dDkgKmNvbnRleHQsIEdMZW51bSBkcmF3TW9kZSk7CiAKICAgICB2b2lkIHNldFNj
aXNzb3JSZWN0YW5nbGUoY29uc3QgZ2w6OlJlY3RhbmdsZSAmc2Npc3NvciwgYm9vbCBlbmFibGVk
KTsKLSAgICB2b2lkIHNldFZpZXdwb3J0KGNvbnN0IGdsOjpDYXBzICpjYXBzLAotICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmdmlld3BvcnQsCisgICAgdm9pZCBzZXRW
aWV3cG9ydChjb25zdCBnbDo6UmVjdGFuZ2xlICZ2aWV3cG9ydCwKICAgICAgICAgICAgICAgICAg
ICAgIGZsb2F0IHpOZWFyLAogICAgICAgICAgICAgICAgICAgICAgZmxvYXQgekZhciwKICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBkcmF3TW9kZSwKICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBmcm9udEZhY2UsCiAgICAgICAgICAgICAgICAgICAgICBib29sIGlnbm9yZVZpZXdwb3J0
KTsKIAotICAgIGdsOjpFcnJvciBhcHBseVJlbmRlclRhcmdldChjb25zdCBnbDo6RnJhbWVidWZm
ZXIgKmZyYW1lQnVmZmVyKSBvdmVycmlkZTsKLSAgICBnbDo6RXJyb3IgYXBwbHlSZW5kZXJUYXJn
ZXQoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqY29sb3JBdHRhY2htZW50LAorICAg
IGdsOjpFcnJvciBhcHBseVJlbmRlclRhcmdldChHTEltcGxGYWN0b3J5ICppbXBsRmFjdG9yeSwg
Y29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZUJ1ZmZlcik7CisgICAgZ2w6OkVycm9yIGFwcGx5
UmVuZGVyVGFyZ2V0KEdMSW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICpjb2xvckF0
dGFjaG1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnQgKmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQpOwogICAgIGdsOjpFcnJv
ciBhcHBseVVuaWZvcm1zKGNvbnN0IFByb2dyYW1EM0QgJnByb2dyYW1EM0QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGRyYXdNb2RlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEQzRFVuaWZvcm0gKj4gJnVuaWZvcm1BcnJheSkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGFwcGx5UHJpbWl0aXZlVHlwZShHTGVudW0gcHJpbWl0
aXZlVHlwZSwgR0xzaXplaSBlbGVtZW50Q291bnQsIGJvb2wgdXNlc1BvaW50U2l6ZSk7Ci0gICAg
dmlydHVhbCBnbDo6RXJyb3IgYXBwbHlWZXJ0ZXhCdWZmZXIoY29uc3QgZ2w6OlN0YXRlICZzdGF0
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBmaXJzdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZWRJbmRleERh
dGEgKmluZGV4SW5mbyk7Ci0gICAgZ2w6OkVycm9yIGFwcGx5SW5kZXhCdWZmZXIoY29uc3QgZ2w6
OkRhdGEgJmRhdGEsCisgICAgYm9vbCBhcHBseVByaW1pdGl2ZVR5cGUoR0xlbnVtIHByaW1pdGl2
ZVR5cGUsIEdMc2l6ZWkgZWxlbWVudENvdW50LCBib29sIHVzZXNQb2ludFNpemUpOworICAgIGds
OjpFcnJvciBhcHBseVZlcnRleEJ1ZmZlcihjb25zdCBnbDo6U3RhdGUgJnN0YXRlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgZmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgaW5zdGFuY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGVk
SW5kZXhEYXRhICppbmRleEluZm8pOworICAgIGdsOjpFcnJvciBhcHBseUluZGV4QnVmZmVyKGNv
bnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1v
ZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRlZEluZGV4RGF0YSAqaW5kZXhJbmZvKSBv
dmVycmlkZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGVkSW5kZXhE
YXRhICppbmRleEluZm8pOwogCi0gICAgZ2w6OkVycm9yIGFwcGx5VHJhbnNmb3JtRmVlZGJhY2tC
dWZmZXJzKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBh
cHBseVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVycyhjb25zdCBnbDo6U3RhdGUgJnN0YXRlKTsKIAog
ICAgIGdsOjpFcnJvciBjbGVhcihjb25zdCBDbGVhclBhcmFtZXRlcnMgJmNsZWFyUGFyYW1zLAog
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICpjb2xv
ckJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNo
bWVudCAqZGVwdGhTdGVuY2lsQnVmZmVyKTsKIAotICAgIHZpcnR1YWwgdm9pZCBtYXJrQWxsU3Rh
dGVEaXJ0eSgpOworICAgIHZvaWQgbWFya0FsbFN0YXRlRGlydHkoKTsKIAogICAgIC8vIGxvc3Qg
ZGV2aWNlCiAgICAgYm9vbCB0ZXN0RGV2aWNlTG9zdCgpIG92ZXJyaWRlOwotICAgIGJvb2wgdGVz
dERldmljZVJlc2V0dGFibGUoKSBvdmVycmlkZTsKKyAgICBib29sIHRlc3REZXZpY2VSZXNldHRh
YmxlKCk7CiAKICAgICBWZW5kb3JJRCBnZXRWZW5kb3JJZCgpIGNvbnN0OwotICAgIHN0ZDo6c3Ry
aW5nIGdldFJlbmRlcmVyRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6OnN0
cmluZyBnZXRSZW5kZXJlckRlc2NyaXB0aW9uKCkgY29uc3Q7CiAgICAgRGV2aWNlSWRlbnRpZmll
ciBnZXRBZGFwdGVySWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgSURpcmVjdDNE
RGV2aWNlOSAqZ2V0RGV2aWNlKCkgeyByZXR1cm4gbURldmljZTsgfQogICAgIHZvaWQgKmdldEQz
RERldmljZSgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0UmVzZXJ2
ZWRWZXJ0ZXhVbmlmb3JtVmVjdG9ycygpIGNvbnN0OwotICAgIHZpcnR1YWwgdW5zaWduZWQgaW50
IGdldFJlc2VydmVkRnJhZ21lbnRVbmlmb3JtVmVjdG9ycygpIGNvbnN0OwotICAgIHZpcnR1YWwg
dW5zaWduZWQgaW50IGdldFJlc2VydmVkVmVydGV4VW5pZm9ybUJ1ZmZlcnMoKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRSZXNlcnZlZEZyYWdtZW50VW5pZm9ybUJ1ZmZlcnMo
KSBjb25zdDsKKyAgICB1bnNpZ25lZCBpbnQgZ2V0UmVzZXJ2ZWRWZXJ0ZXhVbmlmb3JtVmVjdG9y
cygpIGNvbnN0OworICAgIHVuc2lnbmVkIGludCBnZXRSZXNlcnZlZEZyYWdtZW50VW5pZm9ybVZl
Y3RvcnMoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBpbnQgZ2V0UmVzZXJ2ZWRWZXJ0ZXhVbmlmb3Jt
QnVmZmVycygpIGNvbnN0IG92ZXJyaWRlOworICAgIHVuc2lnbmVkIGludCBnZXRSZXNlcnZlZEZy
YWdtZW50VW5pZm9ybUJ1ZmZlcnMoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgZ2V0U2hh
cmVIYW5kbGVTdXBwb3J0KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGludCBnZXRNYWpvclNoYWRl
ck1vZGVsKCkgY29uc3Q7CisgICAgaW50IGdldE1ham9yU2hhZGVyTW9kZWwoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBpbnQgZ2V0TWlub3JTaGFkZXJNb2RlbCgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHN0ZDo6c3RyaW5nIGdldFNoYWRlck1vZGVsU3VmZml4KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICBEV09SRCBnZXRDYXBzRGVjbFR5cGVzKCkgY29uc3Q7CiAKICAgICAvLyBQaXhlbCBvcGVyYXRp
b25zCi0gICAgdmlydHVhbCBnbDo6RXJyb3IgY29weUltYWdlMkQoY29uc3QgZ2w6OkZyYW1lYnVm
ZmVyICpmcmFtZWJ1ZmZlciwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlUmVjdCwgR0xlbnVt
IGRlc3RGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
Ok9mZnNldCAmZGVzdE9mZnNldCwgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsIEdMaW50IGxldmVs
KTsKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBjb3B5SW1hZ2VDdWJlKGNvbnN0IGdsOjpGcmFtZWJ1
ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZVJlY3QsIEdMZW51
bSBkZXN0Rm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6Ok9mZnNldCAmZGVzdE9mZnNldCwgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsIEdMZW51bSB0
YXJnZXQsIEdMaW50IGxldmVsKTsKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBjb3B5SW1hZ2UzRChj
b25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZz
b3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LCBUZXh0dXJlU3RvcmFnZSAqc3Rv
cmFnZSwgR0xpbnQgbGV2ZWwpOwotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNvcHlJbWFnZTJEQXJy
YXkoY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwgY29uc3QgZ2w6OlJlY3Rhbmds
ZSAmc291cmNlUmVjdCwgR0xlbnVtIGRlc3RGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LCBUZXh0dXJlU3Rv
cmFnZSAqc3RvcmFnZSwgR0xpbnQgbGV2ZWwpOworICAgIGdsOjpFcnJvciBjb3B5SW1hZ2UyRChj
b25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VSZWN0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZGVzdEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4
dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxl
dmVsKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgY29weUltYWdlQ3ViZShjb25zdCBnbDo6RnJh
bWVidWZmZXIgKmZyYW1lYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpSZWN0YW5nbGUgJnNvdXJjZVJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGRlc3RGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
Ok9mZnNldCAmZGVzdE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJl
U3RvcmFnZSAqc3RvcmFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsKSBvdmVycmlkZTsK
KyAgICBnbDo6RXJyb3IgY29weUltYWdlM0QoY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1
ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291
cmNlUmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RGb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9y
IGNvcHlJbWFnZTJEQXJyYXkoY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VS
ZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0Rm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZz
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVN0b3JhZ2UgKnN0b3Jh
Z2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwpIG92ZXJyaWRl
OworCisgICAgZ2w6OkVycm9yIGNvcHlUZXh0dXJlKGNvbnN0IGdsOjpUZXh0dXJlICpzb3VyY2Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNvdXJjZUxldmVsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VSZWN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdEZvcm1hdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGRlc3RMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBh
Y2tGbGlwWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tQcmVtdWx0aXBs
eUFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1VubXVsdGlwbHlB
bHBoYSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGNvcHlDb21wcmVzc2VkVGV4dHVyZShjb25z
dCBnbDo6VGV4dHVyZSAqc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgc291cmNlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGRlc3RMZXZlbCkgb3ZlcnJpZGU7CiAKICAgICAvLyBSZW5kZXJUYXJnZXQg
Y3JlYXRpb24KLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBjcmVhdGVSZW5kZXJUYXJnZXQoaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIHNhbXBsZXMsIFJlbmRlclRh
cmdldEQzRCAqKm91dFJUKTsKKyAgICBnbDo6RXJyb3IgY3JlYXRlUmVuZGVyVGFyZ2V0KGludCB3
aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBoZWlnaHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUmVuZGVyVGFyZ2V0RDNEICoqb3V0UlQpIG92ZXJyaWRlOwogICAgIGds
OjpFcnJvciBjcmVhdGVSZW5kZXJUYXJnZXRDb3B5KFJlbmRlclRhcmdldEQzRCAqc291cmNlLCBS
ZW5kZXJUYXJnZXREM0QgKipvdXRSVCkgb3ZlcnJpZGU7CiAKLSAgICAvLyBGcmFtZWJ1ZmZlciBj
cmVhdGlvbgotICAgIEZyYW1lYnVmZmVySW1wbCAqY3JlYXRlRnJhbWVidWZmZXIoY29uc3QgZ2w6
OkZyYW1lYnVmZmVyOjpEYXRhICZkYXRhKSBvdmVycmlkZTsKLQotICAgIC8vIFNoYWRlciBjcmVh
dGlvbgotICAgIFNoYWRlckltcGwgKmNyZWF0ZVNoYWRlcihjb25zdCBnbDo6U2hhZGVyOjpEYXRh
ICZkYXRhKSBvdmVycmlkZTsKLSAgICBQcm9ncmFtSW1wbCAqY3JlYXRlUHJvZ3JhbShjb25zdCBn
bDo6UHJvZ3JhbTo6RGF0YSAmZGF0YSkgb3ZlcnJpZGU7Ci0KICAgICAvLyBTaGFkZXIgb3BlcmF0
aW9ucwogICAgIGdsOjpFcnJvciBsb2FkRXhlY3V0YWJsZShjb25zdCB2b2lkICpmdW5jdGlvbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCwKQEAgLTIwNCw0OCAr
MjQxLDU3IEBAIGNsYXNzIFJlbmRlcmVyOSA6IHB1YmxpYyBSZW5kZXJlckQzRAogICAgIFVuaWZv
cm1TdG9yYWdlRDNEICpjcmVhdGVVbmlmb3JtU3RvcmFnZShzaXplX3Qgc3RvcmFnZVNpemUpIG92
ZXJyaWRlOwogCiAgICAgLy8gSW1hZ2Ugb3BlcmF0aW9ucwotICAgIHZpcnR1YWwgSW1hZ2VEM0Qg
KmNyZWF0ZUltYWdlKCk7CisgICAgSW1hZ2VEM0QgKmNyZWF0ZUltYWdlKCkgb3ZlcnJpZGU7CiAg
ICAgZ2w6OkVycm9yIGdlbmVyYXRlTWlwbWFwKEltYWdlRDNEICpkZXN0LCBJbWFnZUQzRCAqc291
cmNlKSBvdmVycmlkZTsKLSAgICBnbDo6RXJyb3IgZ2VuZXJhdGVNaXBtYXBzVXNpbmdEM0QoVGV4
dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpUZXh0dXJlU3RhdGUgJnRleHR1cmVTdGF0ZSkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBUZXh0dXJlU3RvcmFnZSAqY3JlYXRlVGV4dHVyZVN0b3JhZ2UyRChTd2FwQ2hhaW5E
M0QgKnN3YXBDaGFpbik7Ci0gICAgVGV4dHVyZVN0b3JhZ2UgKmNyZWF0ZVRleHR1cmVTdG9yYWdl
RUdMSW1hZ2UoRUdMSW1hZ2VEM0QgKmVnbEltYWdlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFRl
eHR1cmVTdG9yYWdlICpjcmVhdGVUZXh0dXJlU3RvcmFnZTJEKEdMZW51bSBpbnRlcm5hbGZvcm1h
dCwgYm9vbCByZW5kZXJUYXJnZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBpbnQg
bGV2ZWxzLCBib29sIGhpbnRMZXZlbFplcm9Pbmx5KTsKLSAgICB2aXJ0dWFsIFRleHR1cmVTdG9y
YWdlICpjcmVhdGVUZXh0dXJlU3RvcmFnZUN1YmUoR0xlbnVtIGludGVybmFsZm9ybWF0LCBib29s
IHJlbmRlclRhcmdldCwgaW50IHNpemUsIGludCBsZXZlbHMsIGJvb2wgaGludExldmVsWmVyb09u
bHkpOwotICAgIHZpcnR1YWwgVGV4dHVyZVN0b3JhZ2UgKmNyZWF0ZVRleHR1cmVTdG9yYWdlM0Qo
R0xlbnVtIGludGVybmFsZm9ybWF0LCBib29sIHJlbmRlclRhcmdldCwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIGludCBsZXZlbHMpOwotICAgIHZpcnR1YWwg
VGV4dHVyZVN0b3JhZ2UgKmNyZWF0ZVRleHR1cmVTdG9yYWdlMkRBcnJheShHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIGJvb2wgcmVuZGVyVGFyZ2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCwgR0xzaXplaSBkZXB0aCwgaW50IGxldmVscyk7Ci0KLSAgICAvLyBUZXh0dXJlIGNyZWF0aW9u
Ci0gICAgdmlydHVhbCBUZXh0dXJlSW1wbCAqY3JlYXRlVGV4dHVyZShHTGVudW0gdGFyZ2V0KTsK
LQotICAgIC8vIFJlbmRlcmJ1ZmZlciBjcmVhdGlvbgotICAgIHZpcnR1YWwgUmVuZGVyYnVmZmVy
SW1wbCAqY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgZ2w6OkVycm9yIGdlbmVyYXRlTWlwbWFw
VXNpbmdEM0QoVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmdGV4dHVyZVN0YXRlKSBvdmVy
cmlkZTsKKyAgICBUZXh0dXJlU3RvcmFnZSAqY3JlYXRlVGV4dHVyZVN0b3JhZ2UyRChTd2FwQ2hh
aW5EM0QgKnN3YXBDaGFpbikgb3ZlcnJpZGU7CisgICAgVGV4dHVyZVN0b3JhZ2UgKmNyZWF0ZVRl
eHR1cmVTdG9yYWdlRUdMSW1hZ2UoRUdMSW1hZ2VEM0QgKmVnbEltYWdlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlclRhcmdldEQzRCAqcmVu
ZGVyVGFyZ2V0RDNEKSBvdmVycmlkZTsKKyAgICBUZXh0dXJlU3RvcmFnZSAqY3JlYXRlVGV4dHVy
ZVN0b3JhZ2VFeHRlcm5hbCgKKyAgICAgICAgZWdsOjpTdHJlYW0gKnN0cmVhbSwKKyAgICAgICAg
Y29uc3QgZWdsOjpTdHJlYW06OkdMVGV4dHVyZURlc2NyaXB0aW9uICZkZXNjKSBvdmVycmlkZTsK
KyAgICBUZXh0dXJlU3RvcmFnZSAqY3JlYXRlVGV4dHVyZVN0b3JhZ2UyRChHTGVudW0gaW50ZXJu
YWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCByZW5kZXJUYXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgbGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgaGludExldmVsWmVyb09ubHkpIG92ZXJyaWRlOworICAgIFRleHR1cmVTdG9y
YWdlICpjcmVhdGVUZXh0dXJlU3RvcmFnZUN1YmUoR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZW5kZXJUYXJn
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZXZl
bHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGhp
bnRMZXZlbFplcm9Pbmx5KSBvdmVycmlkZTsKKyAgICBUZXh0dXJlU3RvcmFnZSAqY3JlYXRlVGV4
dHVyZVN0b3JhZ2UzRChHTGVudW0gaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZW5kZXJUYXJnZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRlcHRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZXZlbHMpIG92ZXJyaWRl
OworICAgIFRleHR1cmVTdG9yYWdlICpjcmVhdGVUZXh0dXJlU3RvcmFnZTJEQXJyYXkoR0xlbnVt
IGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCByZW5kZXJUYXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRlcHRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxldmVscykgb3Zl
cnJpZGU7CiAKICAgICAvLyBCdWZmZXIgY3JlYXRpb24KLSAgICB2aXJ0dWFsIEJ1ZmZlckltcGwg
KmNyZWF0ZUJ1ZmZlcigpOwotICAgIHZpcnR1YWwgVmVydGV4QnVmZmVyICpjcmVhdGVWZXJ0ZXhC
dWZmZXIoKTsKLSAgICB2aXJ0dWFsIEluZGV4QnVmZmVyICpjcmVhdGVJbmRleEJ1ZmZlcigpOwot
Ci0gICAgLy8gVmVydGV4IEFycmF5IGNyZWF0aW9uCi0gICAgVmVydGV4QXJyYXlJbXBsICpjcmVh
dGVWZXJ0ZXhBcnJheShjb25zdCBnbDo6VmVydGV4QXJyYXk6OkRhdGEgJmRhdGEpIG92ZXJyaWRl
OwotCi0gICAgLy8gUXVlcnkgYW5kIEZlbmNlIGNyZWF0aW9uCi0gICAgdmlydHVhbCBRdWVyeUlt
cGwgKmNyZWF0ZVF1ZXJ5KEdMZW51bSB0eXBlKTsKLSAgICB2aXJ0dWFsIEZlbmNlTlZJbXBsICpj
cmVhdGVGZW5jZU5WKCk7Ci0gICAgdmlydHVhbCBGZW5jZVN5bmNJbXBsICpjcmVhdGVGZW5jZVN5
bmMoKTsKLQotICAgIC8vIFRyYW5zZm9ybSBGZWVkYmFjayBjcmVhdGlvbgotICAgIHZpcnR1YWwg
VHJhbnNmb3JtRmVlZGJhY2tJbXBsKiBjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIFZl
cnRleEJ1ZmZlciAqY3JlYXRlVmVydGV4QnVmZmVyKCkgb3ZlcnJpZGU7CisgICAgSW5kZXhCdWZm
ZXIgKmNyZWF0ZUluZGV4QnVmZmVyKCkgb3ZlcnJpZGU7CiAKICAgICAvLyBTdHJlYW0gQ3JlYXRp
b24KLSAgICBTdHJlYW1JbXBsICpjcmVhdGVTdHJlYW0oY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAg
JmF0dHJpYnMpIG92ZXJyaWRlOworICAgIFN0cmVhbVByb2R1Y2VySW1wbCAqY3JlYXRlU3RyZWFt
UHJvZHVjZXJEM0RUZXh0dXJlTlYxMigKKyAgICAgICAgZWdsOjpTdHJlYW06OkNvbnN1bWVyVHlw
ZSBjb25zdW1lclR5cGUsCisgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJz
KSBvdmVycmlkZTsKIAogICAgIC8vIEJ1ZmZlci10by10ZXh0dXJlIGFuZCBUZXh0dXJlLXRvLWJ1
ZmZlciBjb3BpZXMKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGYXN0Q29weUJ1ZmZlclRvVGV4
dHVyZShHTGVudW0gaW50ZXJuYWxGb3JtYXQpIGNvbnN0OwotICAgIHZpcnR1YWwgZ2w6OkVycm9y
IGZhc3RDb3B5QnVmZmVyVG9UZXh0dXJlKGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBh
Y2ssIHVuc2lnbmVkIGludCBvZmZzZXQsIFJlbmRlclRhcmdldEQzRCAqZGVzdFJlbmRlclRhcmdl
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
ZGVzdGluYXRpb25Gb3JtYXQsIEdMZW51bSBzb3VyY2VQaXhlbHNUeXBlLCBjb25zdCBnbDo6Qm94
ICZkZXN0QXJlYSk7Ci0KLSAgICB2b2lkIHN5bmNTdGF0ZShjb25zdCBnbDo6U3RhdGUgJnN0YXRl
LCBjb25zdCBnbDo6U3RhdGU6OkRpcnR5Qml0cyAmYml0bWFzaykgb3ZlcnJpZGU7CisgICAgYm9v
bCBzdXBwb3J0c0Zhc3RDb3B5QnVmZmVyVG9UZXh0dXJlKEdMZW51bSBpbnRlcm5hbEZvcm1hdCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGZhc3RDb3B5QnVmZmVyVG9UZXh0dXJlKGNv
bnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFJlbmRlclRhcmdldEQzRCAqZGVzdFJlbmRlclRhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RpbmF0aW9uRm9y
bWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc291cmNl
UGl4ZWxzVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OkJveCAmZGVzdEFyZWEpIG92ZXJyaWRlOwogCiAgICAgLy8gRDNEOS1yZW5kZXJlciBzcGVj
aWZpYyBtZXRob2RzCiAgICAgZ2w6OkVycm9yIGJveEZpbHRlcihJRGlyZWN0M0RTdXJmYWNlOSAq
c291cmNlLCBJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdCk7CkBAIC0yNjcsMjQgKzMxMyw0NyBAQCBj
bGFzcyBSZW5kZXJlcjkgOiBwdWJsaWMgUmVuZGVyZXJEM0QKIAogICAgIGVnbDo6RXJyb3IgZ2V0
RUdMRGV2aWNlKERldmljZUltcGwgKipkZXZpY2UpIG92ZXJyaWRlOwogCisgICAgU3RhdGVNYW5h
Z2VyOSAqZ2V0U3RhdGVNYW5hZ2VyKCkgeyByZXR1cm4gJm1TdGF0ZU1hbmFnZXI7IH0KKworICAg
IGdsOjpFcnJvciBnZW5lcmljRHJhd0FycmF5cyhDb250ZXh0OSAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGluc3RhbmNlcyk7CisKKyAgICBnbDo6RXJyb3IgZ2VuZXJpY0RyYXdFbGVtZW50cyhDb250ZXh0
OSAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9k
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSk7CisK
KyAgICAvLyBOZWNlc3NhcnkgaGFjayBmb3IgZGVmYXVsdCBmcmFtZWJ1ZmZlcnMgaW4gRDNELgor
ICAgIEZyYW1lYnVmZmVySW1wbCAqY3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpG
cmFtZWJ1ZmZlclN0YXRlICZzdGF0ZSkgb3ZlcnJpZGU7CisKKyAgICBEZWJ1Z0Fubm90YXRvcjkg
KmdldEFubm90YXRvcigpIHsgcmV0dXJuICZtQW5ub3RhdG9yOyB9CisKKyAgICBnbDo6VmVyc2lv
biBnZXRNYXhTdXBwb3J0ZWRFU1ZlcnNpb24oKSBjb25zdCBvdmVycmlkZTsKKwogICBwcm90ZWN0
ZWQ6Ci0gICAgdm9pZCBjcmVhdGVBbm5vdGF0b3IoKSBvdmVycmlkZTsKICAgICBnbDo6RXJyb3Ig
Y2xlYXJUZXh0dXJlcyhnbDo6U2FtcGxlclR5cGUgc2FtcGxlclR5cGUsIHNpemVfdCByYW5nZVN0
YXJ0LCBzaXplX3QgcmFuZ2VFbmQpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBhcHBseVNoYWRl
cnNJbXBsKGNvbnN0IGdsOjpEYXRhICZkYXRhLCBHTGVudW0gZHJhd01vZGUpIG92ZXJyaWRlOwog
CiAgIHByaXZhdGU6Ci0gICAgZ2w6OkVycm9yIGRyYXdBcnJheXNJbXBsKGNvbnN0IGdsOjpEYXRh
ICZkYXRhLAorICAgIGdsOjpFcnJvciBkcmF3QXJyYXlzSW1wbChjb25zdCBnbDo6Q29udGV4dFN0
YXRlICZkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3RhcnRWZXJ0ZXgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzKSBvdmVycmlkZTsKLSAgICBnbDo6RXJyb3IgZHJhd0Vs
ZW1lbnRzSW1wbChjb25zdCBnbDo6RGF0YSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBpbnN0YW5jZXMpOworICAgIGdsOjpFcnJvciBkcmF3RWxlbWVudHNJbXBs
KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVHJhbnNsYXRlZEluZGV4RGF0YSAmaW5kZXhJbmZvLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpp
bmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2Vz
KSBvdmVycmlkZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3Rh
bmNlcyk7CisKKyAgICBnbDo6RXJyb3IgYXBwbHlTaGFkZXJzKGNvbnN0IGdsOjpDb250ZXh0U3Rh
dGUgJmRhdGEsIEdMZW51bSBkcmF3TW9kZSk7CiAKICAgICB2b2lkIGdlbmVyYXRlQ2FwcyhnbDo6
Q2FwcyAqb3V0Q2FwcywgZ2w6OlRleHR1cmVDYXBzTWFwICpvdXRUZXh0dXJlQ2FwcywKICAgICAg
ICAgICAgICAgICAgICAgICBnbDo6RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucywKQEAgLTI5Miw3
ICszNjEsNyBAQCBjbGFzcyBSZW5kZXJlcjkgOiBwdWJsaWMgUmVuZGVyZXJEM0QKIAogICAgIFdv
cmthcm91bmRzRDNEIGdlbmVyYXRlV29ya2Fyb3VuZHMoKSBjb25zdCBvdmVycmlkZTsKIAotICAg
IGdsOjpFcnJvciBzZXRCbGVuZERlcHRoUmFzdGVyU3RhdGVzKGNvbnN0IGdsOjpEYXRhICZnbERh
dGEsIEdMZW51bSBkcmF3TW9kZSk7CisgICAgZ2w6OkVycm9yIHNldEJsZW5kRGVwdGhSYXN0ZXJT
dGF0ZXMoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZ2xEYXRhLCBHTGVudW0gZHJhd01vZGUpOwog
CiAgICAgdm9pZCByZWxlYXNlKCk7CiAKQEAgLTMwNSw3ICszNzQsOSBAQCBjbGFzcyBSZW5kZXJl
cjkgOiBwdWJsaWMgUmVuZGVyZXJEM0QKIAogICAgIGdsOjpFcnJvciBnZXRDb3VudGluZ0lCKHNp
emVfdCBjb3VudCwgU3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2UgKipvdXRJQik7CiAKLSAgICBn
bDo6RXJyb3IgZ2V0TnVsbENvbG9yYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1l
bnQgKmRlcHRoYnVmZmVyLCBjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICoqb3V0Q29s
b3JCdWZmZXIpOworICAgIGdsOjpFcnJvciBnZXROdWxsQ29sb3JidWZmZXIoR0xJbXBsRmFjdG9y
eSAqaW1wbEZhY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICpkZXB0aGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKipvdXRDb2xv
ckJ1ZmZlcik7CiAKICAgICBEM0RQT09MIGdldEJ1ZmZlclBvb2woRFdPUkQgdXNhZ2UpIGNvbnN0
OwogCkBAIC0zOTgsNyArNDY5LDEwIEBAIGNsYXNzIFJlbmRlcmVyOSA6IHB1YmxpYyBSZW5kZXJl
ckQzRAogCiAgICAgRGV2aWNlRDNEICptRUdMRGV2aWNlOwogICAgIHN0ZDo6dmVjdG9yPFRyYW5z
bGF0ZWRBdHRyaWJ1dGU+IG1UcmFuc2xhdGVkQXR0cmliQ2FjaGU7CisKKyAgICBEZWJ1Z0Fubm90
YXRvcjkgbUFubm90YXRvcjsKIH07CiAKLX0KK30gIC8vIG5hbWVzcGFjZSByeAorCiAjZW5kaWYg
Ly8gTElCQU5HTEVfUkVOREVSRVJfRDNEX0QzRDlfUkVOREVSRVI5X0hfCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvU3RhdGVNYW5h
Z2VyOS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1N0YXRlTWFuYWdlcjkuY3BwCShyZXZpc2lvbiAyMDc4MDQp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDkvU3RhdGVNYW5hZ2VyOS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4LDcgKzE4LDggQEAgbmFt
ZXNwYWNlIHJ4CiB7CiAKIFN0YXRlTWFuYWdlcjk6OlN0YXRlTWFuYWdlcjkoUmVuZGVyZXI5ICpy
ZW5kZXJlcjkpCi0gICAgOiBtQ3VyQmxlbmRTdGF0ZSgpLAorICAgIDogbVVzaW5nWmVyb0NvbG9y
TWFza1dvcmthcm91bmQoZmFsc2UpLAorICAgICAgbUN1ckJsZW5kU3RhdGUoKSwKICAgICAgIG1D
dXJCbGVuZENvbG9yKDAsIDAsIDAsIDApLAogICAgICAgbUN1clNhbXBsZU1hc2soMCksCiAgICAg
ICBtQ3VyUmFzdGVyU3RhdGUoKSwKQEAgLTY3LDYgKzY4LDExIEBAIFN0YXRlTWFuYWdlcjk6On5T
dGF0ZU1hbmFnZXI5KCkKIHsKIH0KIAordm9pZCBTdGF0ZU1hbmFnZXI5Ojppbml0aWFsaXplKCkK
K3sKKyAgICBtVXNpbmdaZXJvQ29sb3JNYXNrV29ya2Fyb3VuZCA9IG1SZW5kZXJlcjktPmdldFZl
bmRvcklkKCkgPT0gVkVORE9SX0lEX0FNRDsKK30KKwogdm9pZCBTdGF0ZU1hbmFnZXI5Ojpmb3Jj
ZVNldEJsZW5kU3RhdGUoKQogewogICAgIG1EaXJ0eUJpdHMgfD0gbUJsZW5kU3RhdGVEaXJ0eUJp
dHM7CkBAIC0xMjUsNiArMTMxLDEyIEBAIHZvaWQgU3RhdGVNYW5hZ2VyOTo6c3luY1N0YXRlKGNv
bnN0IGdsOjoKICAgICAgICAgICAgICAgICAgICAgLy8gQmxlbmRDb2xvciBhbmQgZnVuY3MgYW5k
IGVxdWF0aW9ucyBoYXMgdG8gYmUgc2V0IGlmIGJsZW5kIGlzIGVuYWJsZWQKICAgICAgICAgICAg
ICAgICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0JMRU5EX0NPTE9SKTsKICAgICAgICAg
ICAgICAgICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0JMRU5EX0ZVTkNTX0VRVUFUSU9O
Uyk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGNvbG9yIG1hc2sgbWF5IGhhdmUgdG8g
YmUgdXBkYXRlZCBpZiB0aGUgYmxlbmQgc3RhdGUgY2hhbmdlcworICAgICAgICAgICAgICAgICAg
ICBpZiAobVVzaW5nWmVyb0NvbG9yTWFza1dvcmthcm91bmQpCisgICAgICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9DT0xP
Ul9NQVNLKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRf
QkxFTkRfRlVOQ1M6CkBAIC0xMzgsNiArMTUwLDEyIEBAIHZvaWQgU3RhdGVNYW5hZ2VyOTo6c3lu
Y1N0YXRlKGNvbnN0IGdsOjoKICAgICAgICAgICAgICAgICAgICAgbURpcnR5Qml0cy5zZXQoRElS
VFlfQklUX0JMRU5EX0ZVTkNTX0VRVUFUSU9OUyk7CiAgICAgICAgICAgICAgICAgICAgIC8vIEJs
ZW5kQ29sb3IgZGVwZW5kcyBvbiB0aGUgdmFsdWVzIG9mIGJsZW5kIGZ1bmNzCiAgICAgICAgICAg
ICAgICAgICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9CTEVORF9DT0xPUik7CisKKyAgICAg
ICAgICAgICAgICAgICAgLy8gVGhlIGNvbG9yIG1hc2sgbWF5IGhhdmUgdG8gYmUgdXBkYXRlZCBp
ZiB0aGUgYmxlbmQgZnVuY3MgY2hhbmdlCisgICAgICAgICAgICAgICAgICAgIGlmIChtVXNpbmda
ZXJvQ29sb3JNYXNrV29ya2Fyb3VuZCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0NPTE9SX01BU0spOworICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQpAQCAtMTQ4LDYgKzE2NiwxMiBAQCB2b2lkIFN0YXRlTWFuYWdl
cjk6OnN5bmNTdGF0ZShjb25zdCBnbDo6CiAgICAgICAgICAgICAgICAgICAgIGJsZW5kU3RhdGUu
YmxlbmRFcXVhdGlvbkFscGhhICE9IG1DdXJCbGVuZFN0YXRlLmJsZW5kRXF1YXRpb25BbHBoYSkK
ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIG1EaXJ0eUJpdHMuc2V0KERJ
UlRZX0JJVF9CTEVORF9GVU5DU19FUVVBVElPTlMpOworCisgICAgICAgICAgICAgICAgICAgIC8v
IFRoZSBjb2xvciBtYXNrIG1heSBoYXZlIHRvIGJlIHVwZGF0ZWQgaWYgdGhlIGJsZW5kIGZ1bmNz
IGNoYW5nZQorICAgICAgICAgICAgICAgICAgICBpZiAobVVzaW5nWmVyb0NvbG9yTWFza1dvcmth
cm91bmQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1E
aXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9DT0xPUl9NQVNLKTsKKyAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KQEAgLTE2Nyw2ICsxOTEsMTQgQEAgdm9pZCBTdGF0ZU1hbmFnZXI5OjpzeW5jU3RhdGUoY29u
c3QgZ2w6OgogICAgICAgICAgICAgICAgICAgICBibGVuZFN0YXRlLmNvbG9yTWFza0FscGhhICE9
IG1DdXJCbGVuZFN0YXRlLmNvbG9yTWFza0FscGhhKQogICAgICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0NPTE9SX01BU0spOworCisg
ICAgICAgICAgICAgICAgICAgIC8vIFRoZSBjb2xvciBtYXNrIGNhbiBjYXVzZSB0aGUgYmxlbmQg
c3RhdGUgdG8gZ2V0IG91dCBvZiBzeW5jIHdoZW4gdXNpbmcgdGhlCisgICAgICAgICAgICAgICAg
ICAgIC8vIHplcm8gY29sb3IgbWFzayB3b3JrYXJvdW5kCisgICAgICAgICAgICAgICAgICAgIGlm
IChtVXNpbmdaZXJvQ29sb3JNYXNrV29ya2Fyb3VuZCkKKyAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0JMRU5EX0VO
QUJMRUQpOworICAgICAgICAgICAgICAgICAgICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklU
X0JMRU5EX0ZVTkNTX0VRVUFUSU9OUyk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC00NDEs
OCArNDczLDcgQEAgZ2w6OkVycm9yIFN0YXRlTWFuYWdlcjk6OnNldEJsZW5kRGVwdGhSYQogICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi12b2lkIFN0YXRlTWFuYWdlcjk6
OnNldFZpZXdwb3J0U3RhdGUoY29uc3QgZ2w6OkNhcHMgKmNhcHMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmdmlld3BvcnQsCit2b2lk
IFN0YXRlTWFuYWdlcjk6OnNldFZpZXdwb3J0U3RhdGUoY29uc3QgZ2w6OlJlY3RhbmdsZSAmdmll
d3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgek5lYXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgekZhciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHJhd01vZGUsCkBAIC02OTgs
NiArNzI5LDcgQEAgdm9pZCBTdGF0ZU1hbmFnZXI5OjpzZXRTdGVuY2lsVGVzdEVuYWJsZQogICAg
IGlmIChzdGVuY2lsVGVzdEVuYWJsZWQgJiYgbUN1clN0ZW5jaWxTaXplID4gMCkKICAgICB7CiAg
ICAgICAgIG1SZW5kZXJlcjktPmdldERldmljZSgpLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TVEVO
Q0lMRU5BQkxFLCBUUlVFKTsKKyAgICAgICAgbVJlbmRlcmVyOS0+Z2V0RGV2aWNlKCktPlNldFJl
bmRlclN0YXRlKEQzRFJTX1RXT1NJREVEU1RFTkNJTE1PREUsIFRSVUUpOwogICAgIH0KICAgICBl
bHNlCiAgICAgewpAQCAtODAwLDQyICs4MzIsNTIgQEAgdm9pZCBTdGF0ZU1hbmFnZXI5OjpzZXRD
b2xvck1hc2soY29uc3QgZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBh
bHBoYSkKIHsKICAgICAvLyBTZXQgdGhlIGNvbG9yIG1hc2sKLSAgICBib29sIHplcm9Db2xvck1h
c2tBbGxvd2VkID0gbVJlbmRlcmVyOS0+Z2V0VmVuZG9ySWQoKSAhPSBWRU5ET1JfSURfQU1EOwot
ICAgIC8vIEFwcGFyZW50bHkgc29tZSBBVEkgY2FyZHMgaGF2ZSBhIGJ1ZyB3aGVyZSBhIGRyYXcg
d2l0aCBhIHplcm8gY29sb3IKLSAgICAvLyB3cml0ZSBtYXNrIGNhbiBjYXVzZSBsYXRlciBkcmF3
cyB0byBoYXZlIGluY29ycmVjdCByZXN1bHRzLiBJbnN0ZWFkLAotICAgIC8vIHNldCBhIG5vbnpl
cm8gY29sb3Igd3JpdGUgbWFzayBidXQgbW9kaWZ5IHRoZSBibGVuZCBzdGF0ZSBzbyB0aGF0IG5v
Ci0gICAgLy8gZHJhd2luZyBpcyBkb25lLgotICAgIC8vIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20v
cC9hbmdsZXByb2plY3QvaXNzdWVzL2RldGFpbD9pZD0xNjkKLQotICAgIGNvbnN0IGdsOjpGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnQgKmF0dGFjaG1lbnQgPSBmcmFtZWJ1ZmZlci0+Z2V0Rmlyc3RDb2xv
cmJ1ZmZlcigpOwotICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCAgICAgICAgICAgICAgICAgICAg
ICAgPSBhdHRhY2htZW50ID8gYXR0YWNobWVudC0+Z2V0SW50ZXJuYWxGb3JtYXQoKSA6IEdMX05P
TkU7CiAKLSAgICBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBnbDo6R2V0
SW50ZXJuYWxGb3JtYXRJbmZvKGludGVybmFsRm9ybWF0KTsKKyAgICBjb25zdCBhdXRvICphdHRh
Y2htZW50ID0gZnJhbWVidWZmZXItPmdldEZpcnN0Q29sb3JidWZmZXIoKTsKKyAgICBjb25zdCBh
dXRvICZmb3JtYXQgICAgID0gYXR0YWNobWVudCA/IGF0dGFjaG1lbnQtPmdldEZvcm1hdCgpIDog
Z2w6OkZvcm1hdDo6SW52YWxpZCgpOwogCiAgICAgRFdPUkQgY29sb3JNYXNrID0gZ2xfZDNkOTo6
Q29udmVydENvbG9yTWFzaygKLSAgICAgICAgZm9ybWF0SW5mby5yZWRCaXRzID4gMCAmJiByZWQs
IGZvcm1hdEluZm8uZ3JlZW5CaXRzID4gMCAmJiBncmVlbiwKLSAgICAgICAgZm9ybWF0SW5mby5i
bHVlQml0cyA+IDAgJiYgYmx1ZSwgZm9ybWF0SW5mby5hbHBoYUJpdHMgPiAwICYmIGFscGhhKTsK
KyAgICAgICAgZm9ybWF0LmluZm8tPnJlZEJpdHMgPiAwICYmIHJlZCwgZm9ybWF0LmluZm8tPmdy
ZWVuQml0cyA+IDAgJiYgZ3JlZW4sCisgICAgICAgIGZvcm1hdC5pbmZvLT5ibHVlQml0cyA+IDAg
JiYgYmx1ZSwgZm9ybWF0LmluZm8tPmFscGhhQml0cyA+IDAgJiYgYWxwaGEpOwogCi0gICAgaWYg
KGNvbG9yTWFzayA9PSAwICYmICF6ZXJvQ29sb3JNYXNrQWxsb3dlZCkKKyAgICAvLyBBcHBhcmVu
dGx5IHNvbWUgQVRJIGNhcmRzIGhhdmUgYSBidWcgd2hlcmUgYSBkcmF3IHdpdGggYSB6ZXJvIGNv
bG9yIHdyaXRlIG1hc2sgY2FuIGNhdXNlCisgICAgLy8gbGF0ZXIgZHJhd3MgdG8gaGF2ZSBpbmNv
cnJlY3QgcmVzdWx0cy4gSW5zdGVhZCwgc2V0IGEgbm9uemVybyBjb2xvciB3cml0ZSBtYXNrIGJ1
dCBtb2RpZnkgdGhlCisgICAgLy8gYmxlbmQgc3RhdGUgc28gdGhhdCBubyBkcmF3aW5nIGlzIGRv
bmUuCisgICAgLy8gaHR0cDovL2FuZ2xlYnVnLmNvbS8xNjkKKyAgICBpZiAoY29sb3JNYXNrID09
IDAgJiYgbVVzaW5nWmVyb0NvbG9yTWFza1dvcmthcm91bmQpCiAgICAgewogICAgICAgICBJRGly
ZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBtUmVuZGVyZXI5LT5nZXREZXZpY2UoKTsKICAgICAgICAg
Ly8gRW5hYmxlIGdyZWVuIGNoYW5uZWwsIGJ1dCBzZXQgYmxlbmRpbmcgc28gbm90aGluZyB3aWxs
IGJlIGRyYXduLgogICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0NPTE9SV1JJ
VEVFTkFCTEUsIEQzRENPTE9SV1JJVEVFTkFCTEVfR1JFRU4pOworCiAgICAgICAgIGRldmljZS0+
U2V0UmVuZGVyU3RhdGUoRDNEUlNfQUxQSEFCTEVOREVOQUJMRSwgVFJVRSk7CiAKICAgICAgICAg
ZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TUkNCTEVORCwgRDNEQkxFTkRfWkVSTyk7CiAg
ICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfREVTVEJMRU5ELCBEM0RCTEVORF9P
TkUpOwogICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0JMRU5ET1AsIEQzREJM
RU5ET1BfQUREKTsKKworICAgICAgICBtQ3VyQmxlbmRTdGF0ZS5jb2xvck1hc2tSZWQgICA9IGZh
bHNlOworICAgICAgICBtQ3VyQmxlbmRTdGF0ZS5jb2xvck1hc2tHcmVlbiA9IHRydWU7CisgICAg
ICAgIG1DdXJCbGVuZFN0YXRlLmNvbG9yTWFza0JsdWUgID0gZmFsc2U7CisgICAgICAgIG1DdXJC
bGVuZFN0YXRlLmNvbG9yTWFza0FscGhhID0gZmFsc2U7CisKKyAgICAgICAgbUN1ckJsZW5kU3Rh
dGUuYmxlbmQgICAgICAgICAgICAgID0gdHJ1ZTsKKyAgICAgICAgbUN1ckJsZW5kU3RhdGUuc291
cmNlQmxlbmRSR0IgICAgID0gR0xfWkVSTzsKKyAgICAgICAgbUN1ckJsZW5kU3RhdGUuc291cmNl
QmxlbmRBbHBoYSAgID0gR0xfWkVSTzsKKyAgICAgICAgbUN1ckJsZW5kU3RhdGUuZGVzdEJsZW5k
UkdCICAgICAgID0gR0xfT05FOworICAgICAgICBtQ3VyQmxlbmRTdGF0ZS5kZXN0QmxlbmRBbHBo
YSAgICAgPSBHTF9PTkU7CisgICAgICAgIG1DdXJCbGVuZFN0YXRlLmJsZW5kRXF1YXRpb25SR0Ig
ICA9IEdMX0ZVTkNfQUREOworICAgICAgICBtQ3VyQmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9uQWxw
aGEgPSBHTF9GVU5DX0FERDsKICAgICB9CiAgICAgZWxzZQogICAgIHsKICAgICAgICAgbVJlbmRl
cmVyOS0+Z2V0RGV2aWNlKCktPlNldFJlbmRlclN0YXRlKEQzRFJTX0NPTE9SV1JJVEVFTkFCTEUs
IGNvbG9yTWFzayk7Ci0gICAgfQogCi0gICAgbUN1ckJsZW5kU3RhdGUuY29sb3JNYXNrUmVkICAg
PSByZWQ7Ci0gICAgbUN1ckJsZW5kU3RhdGUuY29sb3JNYXNrR3JlZW4gPSBncmVlbjsKLSAgICBt
Q3VyQmxlbmRTdGF0ZS5jb2xvck1hc2tCbHVlICA9IGJsdWU7Ci0gICAgbUN1ckJsZW5kU3RhdGUu
Y29sb3JNYXNrQWxwaGEgPSBhbHBoYTsKKyAgICAgICAgbUN1ckJsZW5kU3RhdGUuY29sb3JNYXNr
UmVkICAgPSByZWQ7CisgICAgICAgIG1DdXJCbGVuZFN0YXRlLmNvbG9yTWFza0dyZWVuID0gZ3Jl
ZW47CisgICAgICAgIG1DdXJCbGVuZFN0YXRlLmNvbG9yTWFza0JsdWUgID0gYmx1ZTsKKyAgICAg
ICAgbUN1ckJsZW5kU3RhdGUuY29sb3JNYXNrQWxwaGEgPSBhbHBoYTsKKyAgICB9CiB9CiAKIHZv
aWQgU3RhdGVNYW5hZ2VyOTo6c2V0U2FtcGxlTWFzayh1bnNpZ25lZCBpbnQgc2FtcGxlTWFzaykK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkOS9TdGF0ZU1hbmFnZXI5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1N0YXRlTWFuYWdlcjkuaAkocmV2aXNp
b24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2Q5L1N0YXRlTWFuYWdlcjkuaAkod29ya2luZyBjb3B5KQpAQCAtMTAsNyArMTAs
NyBAQAogI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9EM0Q5X1NUQVRFTUFOQUdFUjlfSF8KIAog
I2luY2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9EYXRh
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dFN0YXRlLmgiCiAjaW5jbHVkZSAibGliQU5H
TEUvU3RhdGUuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyZXJEM0Qu
aCIKIApAQCAtMzksMTIgKzM5LDEzIEBAIGNsYXNzIFN0YXRlTWFuYWdlcjkgZmluYWwgOiBhbmds
ZTo6Tm9uQ28KICAgICBTdGF0ZU1hbmFnZXI5KFJlbmRlcmVyOSAqcmVuZGVyZXI5KTsKICAgICB+
U3RhdGVNYW5hZ2VyOSgpOwogCisgICAgdm9pZCBpbml0aWFsaXplKCk7CisKICAgICB2b2lkIHN5
bmNTdGF0ZShjb25zdCBnbDo6U3RhdGUgJnN0YXRlLCBjb25zdCBnbDo6U3RhdGU6OkRpcnR5Qml0
cyAmZGlydHlCaXRzKTsKIAogICAgIGdsOjpFcnJvciBzZXRCbGVuZERlcHRoUmFzdGVyU3RhdGVz
KGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSwgdW5zaWduZWQgaW50IHNhbXBsZU1hc2spOwogICAg
IHZvaWQgc2V0U2Npc3NvclN0YXRlKGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNjaXNzb3IsIGJvb2wg
ZW5hYmxlZCk7Ci0gICAgdm9pZCBzZXRWaWV3cG9ydFN0YXRlKGNvbnN0IGdsOjpDYXBzICpjYXBz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZ2aWV3cG9y
dCwKKyAgICB2b2lkIHNldFZpZXdwb3J0U3RhdGUoY29uc3QgZ2w6OlJlY3RhbmdsZSAmdmlld3Bv
cnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHpOZWFyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbG9hdCB6RmFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZHJhd01vZGUsCkBAIC0xNTYsNiArMTU3LDggQEAgY2xhc3MgU3RhdGVNYW5hZ2VyOSBmaW5h
bCA6IGFuZ2xlOjpOb25DbwogCiAgICAgdHlwZWRlZiBzdGQ6OmJpdHNldDxESVJUWV9CSVRfTUFY
PiBEaXJ0eUJpdHM7CiAKKyAgICBib29sIG1Vc2luZ1plcm9Db2xvck1hc2tXb3JrYXJvdW5kOwor
CiAgICAgLy8gQ3VycmVudGx5IGFwcGxpZWQgYmxlbmQgc3RhdGUKICAgICBnbDo6QmxlbmRTdGF0
ZSBtQ3VyQmxlbmRTdGF0ZTsKICAgICBnbDo6Q29sb3JGIG1DdXJCbGVuZENvbG9yOwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1N3
YXBDaGFpbjkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9Td2FwQ2hhaW45LmNwcAkocmV2aXNpb24gMjA3ODA0
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2Q5L1N3YXBDaGFpbjkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05LDYgKzksNyBAQAogI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1N3YXBDaGFpbjkuaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9yZW5kZXJlcjlfdXRpbHMuaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9mb3JtYXR1dGlsczkuaCIKKyNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkOS9OYXRpdmVXaW5kb3c5LmgiCiAjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDkvUmVuZGVyZXI5LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvZmVh
dHVyZXMuaCIKIApAQCAtMTYsMTYgKzE3LDE3IEBAIG5hbWVzcGFjZSByeAogewogCiBTd2FwQ2hh
aW45OjpTd2FwQ2hhaW45KFJlbmRlcmVyOSAqcmVuZGVyZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgIE5hdGl2ZVdpbmRvdyBuYXRpdmVXaW5kb3csCisgICAgICAgICAgICAgICAgICAgICAgIE5h
dGl2ZVdpbmRvdzkgKm5hdGl2ZVdpbmRvdywKICAgICAgICAgICAgICAgICAgICAgICAgSEFORExF
IHNoYXJlSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYmFja0J1ZmZlckZv
cm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlcHRoQnVmZmVyRm9ybWF0LAog
ICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgb3JpZW50YXRpb24pCi0gICAgOiBTd2FwQ2hh
aW5EM0QobmF0aXZlV2luZG93LCBzaGFyZUhhbmRsZSwgYmFja0J1ZmZlckZvcm1hdCwgZGVwdGhC
dWZmZXJGb3JtYXQpLAorICAgIDogU3dhcENoYWluRDNEKHNoYXJlSGFuZGxlLCBiYWNrQnVmZmVy
Rm9ybWF0LCBkZXB0aEJ1ZmZlckZvcm1hdCksCiAgICAgICBtUmVuZGVyZXIocmVuZGVyZXIpLAog
ICAgICAgbVdpZHRoKC0xKSwKICAgICAgIG1IZWlnaHQoLTEpLAogICAgICAgbVN3YXBJbnRlcnZh
bCgtMSksCisgICAgICBtTmF0aXZlV2luZG93KG5hdGl2ZVdpbmRvdyksCiAgICAgICBtU3dhcENo
YWluKG51bGxwdHIpLAogICAgICAgbUJhY2tCdWZmZXIobnVsbHB0ciksCiAgICAgICBtUmVuZGVy
VGFyZ2V0KG51bGxwdHIpLApAQCAtNTAsNyArNTIsNyBAQCB2b2lkIFN3YXBDaGFpbjk6OnJlbGVh
c2UoKQogICAgIFNhZmVSZWxlYXNlKG1SZW5kZXJUYXJnZXQpOwogICAgIFNhZmVSZWxlYXNlKG1P
ZmZzY3JlZW5UZXh0dXJlKTsKIAotICAgIGlmIChtTmF0aXZlV2luZG93LmdldE5hdGl2ZVdpbmRv
dygpKQorICAgIGlmIChtTmF0aXZlV2luZG93LT5nZXROYXRpdmVXaW5kb3coKSkKICAgICB7CiAg
ICAgICAgIG1TaGFyZUhhbmRsZSA9IE5VTEw7CiAgICAgfQpAQCAtMTA0LDcgKzEwNiw3IEBAIEVH
TGludCBTd2FwQ2hhaW45OjpyZXNldChpbnQgYmFja2J1ZmZlclcKICAgICBTYWZlUmVsZWFzZSht
RGVwdGhTdGVuY2lsKTsKIAogICAgIEhBTkRMRSAqcFNoYXJlSGFuZGxlID0gTlVMTDsKLSAgICBp
ZiAoIW1OYXRpdmVXaW5kb3cuZ2V0TmF0aXZlV2luZG93KCkgJiYgbVJlbmRlcmVyLT5nZXRTaGFy
ZUhhbmRsZVN1cHBvcnQoKSkKKyAgICBpZiAoIW1OYXRpdmVXaW5kb3ctPmdldE5hdGl2ZVdpbmRv
dygpICYmIG1SZW5kZXJlci0+Z2V0U2hhcmVIYW5kbGVTdXBwb3J0KCkpCiAgICAgewogICAgICAg
ICBwU2hhcmVIYW5kbGUgPSAmbVNoYXJlSGFuZGxlOwogICAgIH0KQEAgLTE2Myw3ICsxNjUsNyBA
QCBFR0xpbnQgU3dhcENoYWluOTo6cmVzZXQoaW50IGJhY2tidWZmZXJXCiAKICAgICAvLyBEb24n
dCBjcmVhdGUgYSBzd2FwY2hhaW4gZm9yIE5VTExSRUYgZGV2aWNlcwogICAgIEQzRERFVlRZUEUg
ZGV2aWNlVHlwZSA9IG1SZW5kZXJlci0+Z2V0RDNEOURldmljZVR5cGUoKTsKLSAgICBFR0xOYXRp
dmVXaW5kb3dUeXBlIHdpbmRvdyA9IG1OYXRpdmVXaW5kb3cuZ2V0TmF0aXZlV2luZG93KCk7Cisg
ICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3cgPSBtTmF0aXZlV2luZG93LT5nZXROYXRpdmVX
aW5kb3coKTsKICAgICBpZiAod2luZG93ICYmIGRldmljZVR5cGUgIT0gRDNEREVWVFlQRV9OVUxM
UkVGKQogICAgIHsKICAgICAgICAgRDNEUFJFU0VOVF9QQVJBTUVURVJTIHByZXNlbnRQYXJhbWV0
ZXJzID0gezB9OwpAQCAtMzMzLDcgKzMzNSw3IEBAIEVHTGludCBTd2FwQ2hhaW45Ojpzd2FwUmVj
dChFR0xpbnQgeCwgRUcKICAgICAvLyBPbiBXaW5kb3dzIDggc3lzdGVtcywgSURpcmVjdDNEU3dh
cENoYWluOTo6UHJlc2VudCBzb21ldGltZXMgcmV0dXJucyAweDg4NzYwODczIHdoZW4gdGhlIHdp
bmRvd3MgaXMKICAgICAvLyBpbiB0aGUgcHJvY2VzcyBvZiBlbnRlcmluZy9leGl0aW5nIGZ1bGxz
Y3JlZW4uIFRoaXMgY29kZSBkb2Vzbid0IHNlZW0gdG8gaGF2ZSBhbnkgZG9jdW1lbnRhdGlvbi4g
IFRoZQogICAgIC8vIGRldmljZSBhcHBlYXJzIHRvIGJlIG9rIGFmdGVyIGVtaXR0aW5nIHRoaXMg
ZXJyb3Igc28gc2ltcGx5IHJldHVybiBhIGZhaWx1cmUgdG8gc3dhcC4KLSAgICBpZiAocmVzdWx0
ID09IDB4ODg3NjA4NzMpCisgICAgaWYgKHJlc3VsdCA9PSBzdGF0aWNfY2FzdDxIUkVTVUxUPigw
eDg4NzYwODczKSkKICAgICB7CiAgICAgICAgIHJldHVybiBFR0xfQkFEX01BVENIOwogICAgIH0K
QEAgLTM5NSw2ICszOTcsMTIgQEAgdm9pZCAqU3dhcENoYWluOTo6Z2V0S2V5ZWRNdXRleCgpCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK2VnbDo6RXJyb3IgU3dhcENoYWluOTo6Z2V0U3luY1Zh
bHVlcyhFR0x1aW50NjRLSFIgKnVzdCwgRUdMdWludDY0S0hSICptc2MsIEVHTHVpbnQ2NEtIUiAq
c2JjKQoreworICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JB
RF9TVVJGQUNFKTsKK30KKwogdm9pZCBTd2FwQ2hhaW45OjpyZWNyZWF0ZSgpCiB7CiAgICAgaWYg
KCFtU3dhcENoYWluKQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2Q5L1N3YXBDaGFpbjkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvU3dhcENoYWluOS5o
CShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDkvU3dhcENoYWluOS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNSwx
MyArMTUsMTQgQEAKIAogbmFtZXNwYWNlIHJ4CiB7CitjbGFzcyBOYXRpdmVXaW5kb3c5OwogY2xh
c3MgUmVuZGVyZXI5OwogCiBjbGFzcyBTd2FwQ2hhaW45IDogcHVibGljIFN3YXBDaGFpbkQzRAog
ewogICBwdWJsaWM6CiAgICAgU3dhcENoYWluOShSZW5kZXJlcjkgKnJlbmRlcmVyLAotICAgICAg
ICAgICAgICAgTmF0aXZlV2luZG93IG5hdGl2ZVdpbmRvdywKKyAgICAgICAgICAgICAgIE5hdGl2
ZVdpbmRvdzkgKm5hdGl2ZVdpbmRvdywKICAgICAgICAgICAgICAgIEhBTkRMRSBzaGFyZUhhbmRs
ZSwKICAgICAgICAgICAgICAgIEdMZW51bSBiYWNrQnVmZmVyRm9ybWF0LAogICAgICAgICAgICAg
ICAgR0xlbnVtIGRlcHRoQnVmZmVyRm9ybWF0LApAQCAtNDUsNiArNDYsOCBAQCBjbGFzcyBTd2Fw
Q2hhaW45IDogcHVibGljIFN3YXBDaGFpbkQzRAogCiAgICAgdm9pZCAqZ2V0S2V5ZWRNdXRleCgp
IG92ZXJyaWRlOwogCisgICAgZWdsOjpFcnJvciBnZXRTeW5jVmFsdWVzKEVHTHVpbnQ2NEtIUiAq
dXN0LCBFR0x1aW50NjRLSFIgKm1zYywgRUdMdWludDY0S0hSICpzYmMpIG92ZXJyaWRlOworCiAg
IHByaXZhdGU6CiAgICAgdm9pZCByZWxlYXNlKCk7CiAKQEAgLTUzLDYgKzU2LDggQEAgY2xhc3Mg
U3dhcENoYWluOSA6IHB1YmxpYyBTd2FwQ2hhaW5EM0QKICAgICBFR0xpbnQgbUhlaWdodDsKICAg
ICBFR0xpbnQgbVN3YXBJbnRlcnZhbDsKIAorICAgIE5hdGl2ZVdpbmRvdzkgKm1OYXRpdmVXaW5k
b3c7CisKICAgICBJRGlyZWN0M0RTd2FwQ2hhaW45ICptU3dhcENoYWluOwogICAgIElEaXJlY3Qz
RFN1cmZhY2U5ICptQmFja0J1ZmZlcjsKICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqbVJlbmRlclRh
cmdldDsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkOS9UZXh0dXJlU3RvcmFnZTkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9UZXh0dXJlU3RvcmFn
ZTkuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvVGV4dHVyZVN0b3JhZ2U5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTA3LDcgKzEwNyw3IEBAIFRleHR1cmVTdG9yYWdlOV8yRDo6VGV4dHVyZVN0b3Jh
Z2U5XzJEKFIKICAgICBtVGV4dHVyZSA9IHN1cmZhY2VUZXh0dXJlOwogICAgIG1NaXBMZXZlbHMg
PSBzdXJmYWNlVGV4dHVyZS0+R2V0TGV2ZWxDb3VudCgpOwogCi0gICAgbUludGVybmFsRm9ybWF0
ID0gc3dhcGNoYWluLT5HZXRSZW5kZXJUYXJnZXRJbnRlcm5hbEZvcm1hdCgpOworICAgIG1JbnRl
cm5hbEZvcm1hdCA9IHN3YXBjaGFpbi0+Z2V0UmVuZGVyVGFyZ2V0SW50ZXJuYWxGb3JtYXQoKTsK
IAogICAgIEQzRFNVUkZBQ0VfREVTQyBzdXJmYWNlRGVzYzsKICAgICBzdXJmYWNlVGV4dHVyZS0+
R2V0TGV2ZWxEZXNjKDAsICZzdXJmYWNlRGVzYyk7CkBAIC0zMDUsMTQgKzMwNSwxMSBAQCBnbDo6
RXJyb3IgVGV4dHVyZVN0b3JhZ2U5XzJEOjpjb3B5VG9TdG9yCiAgICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9OT19FUlJPUik7CiB9CiAKLVRleHR1cmVTdG9yYWdlOV9FR0xJbWFnZTo6VGV4dHVyZVN0
b3JhZ2U5X0VHTEltYWdlKFJlbmRlcmVyOSAqcmVuZGVyZXIsIEVHTEltYWdlRDNEICppbWFnZSkK
K1RleHR1cmVTdG9yYWdlOV9FR0xJbWFnZTo6VGV4dHVyZVN0b3JhZ2U5X0VHTEltYWdlKFJlbmRl
cmVyOSAqcmVuZGVyZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFR0xJbWFnZUQzRCAqaW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJUYXJnZXQ5ICpyZW5kZXJUYXJnZXQ5KQog
ICAgIDogVGV4dHVyZVN0b3JhZ2U5KHJlbmRlcmVyLCBEM0RVU0FHRV9SRU5ERVJUQVJHRVQpLCBt
SW1hZ2UoaW1hZ2UpCiB7Ci0gICAgUmVuZGVyVGFyZ2V0RDNEICpyZW5kZXJUYXJnZXREM0QgPSBu
dWxscHRyOwotICAgIG1JbWFnZS0+Z2V0UmVuZGVyVGFyZ2V0KCZyZW5kZXJUYXJnZXREM0QpOwot
Ci0gICAgUmVuZGVyVGFyZ2V0OSAqcmVuZGVyVGFyZ2V0OSA9IEdldEFzPFJlbmRlclRhcmdldDk+
KHJlbmRlclRhcmdldEQzRCk7Ci0KICAgICBtSW50ZXJuYWxGb3JtYXQgPSByZW5kZXJUYXJnZXQ5
LT5nZXRJbnRlcm5hbEZvcm1hdCgpOwogICAgIG1UZXh0dXJlRm9ybWF0ICA9IHJlbmRlclRhcmdl
dDktPmdldEQzREZvcm1hdCgpOwogICAgIG1UZXh0dXJlV2lkdGggICA9IHJlbmRlclRhcmdldDkt
PmdldFdpZHRoKCk7CkBAIC00MzQsNyArNDMxLDcgQEAgVGV4dHVyZVN0b3JhZ2U5X0N1YmU6OlRl
eHR1cmVTdG9yYWdlOV9DdQogICAgIDogVGV4dHVyZVN0b3JhZ2U5KHJlbmRlcmVyLCBHZXRUZXh0
dXJlVXNhZ2UoaW50ZXJuYWxmb3JtYXQsIHJlbmRlclRhcmdldCkpCiB7CiAgICAgbVRleHR1cmUg
PSBOVUxMOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgQ1VCRV9GQUNFX0NPVU5UOyArK2kpCisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBDVUJFX0ZBQ0VfQ09VTlQ7ICsraSkKICAgICB7CiAg
ICAgICAgIG1SZW5kZXJUYXJnZXRbaV0gPSBOVUxMOwogICAgIH0KQEAgLTQ1NSw3ICs0NTIsNyBA
QCBUZXh0dXJlU3RvcmFnZTlfQ3ViZTo6flRleHR1cmVTdG9yYWdlOV9DCiB7CiAgICAgU2FmZVJl
bGVhc2UobVRleHR1cmUpOwogCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBDVUJFX0ZBQ0VfQ09V
TlQ7ICsraSkKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IENVQkVfRkFDRV9DT1VOVDsgKytp
KQogICAgIHsKICAgICAgICAgU2FmZURlbGV0ZShtUmVuZGVyVGFyZ2V0W2ldKTsKICAgICB9CkBA
IC00OTksNyArNDk2LDcgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlOV9DdWJlOjpnZXRSZW5k
ZQogewogICAgIEFTU0VSVChvdXRSVCk7CiAgICAgQVNTRVJUKGluZGV4Lm1pcEluZGV4ID09IDAp
OwotICAgIEFTU0VSVChpbmRleC5sYXllckluZGV4ID49IDAgJiYgaW5kZXgubGF5ZXJJbmRleCA8
IENVQkVfRkFDRV9DT1VOVCk7CisgICAgQVNTRVJUKGluZGV4LmxheWVySW5kZXggPj0gMCAmJiBz
dGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4LmxheWVySW5kZXgpIDwgQ1VCRV9GQUNFX0NPVU5UKTsK
IAogICAgIGlmIChtUmVuZGVyVGFyZ2V0W2luZGV4LmxheWVySW5kZXhdID09IE5VTEwgJiYgaXNS
ZW5kZXJUYXJnZXQoKSkKICAgICB7CkBAIC01ODYsNyArNTgzLDcgQEAgZ2w6OkVycm9yIFRleHR1
cmVTdG9yYWdlOV9DdWJlOjpjb3B5VG9TdAogICAgIFRleHR1cmVTdG9yYWdlOV9DdWJlICpkZXN0
OSA9IEdldEFzPFRleHR1cmVTdG9yYWdlOV9DdWJlPihkZXN0U3RvcmFnZSk7CiAKICAgICBpbnQg
bGV2ZWxzID0gZ2V0TGV2ZWxDb3VudCgpOwotICAgIGZvciAoaW50IGYgPSAwOyBmIDwgQ1VCRV9G
QUNFX0NPVU5UOyBmKyspCisgICAgZm9yIChpbnQgZiA9IDA7IGYgPCBzdGF0aWNfY2FzdDxpbnQ+
KENVQkVfRkFDRV9DT1VOVCk7IGYrKykKICAgICB7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbGV2ZWxzOyBpKyspCiAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9UZXh0dXJlU3RvcmFnZTkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDkvVGV4dHVyZVN0b3JhZ2U5LmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9UZXh0dXJlU3RvcmFn
ZTkuaAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQCBjbGFzcyBUZXh0dXJlU3RvcmFn
ZTlfMkQgOiBwdWJsaWMgVGV4dHVyCiBjbGFzcyBUZXh0dXJlU3RvcmFnZTlfRUdMSW1hZ2UgZmlu
YWwgOiBwdWJsaWMgVGV4dHVyZVN0b3JhZ2U5CiB7CiAgIHB1YmxpYzoKLSAgICBUZXh0dXJlU3Rv
cmFnZTlfRUdMSW1hZ2UoUmVuZGVyZXI5ICpyZW5kZXJlciwgRUdMSW1hZ2VEM0QgKmltYWdlKTsK
KyAgICBUZXh0dXJlU3RvcmFnZTlfRUdMSW1hZ2UoUmVuZGVyZXI5ICpyZW5kZXJlciwgRUdMSW1h
Z2VEM0QgKmltYWdlLCBSZW5kZXJUYXJnZXQ5ICpyZW5kZXJUYXJnZXQ5KTsKICAgICB+VGV4dHVy
ZVN0b3JhZ2U5X0VHTEltYWdlKCkgb3ZlcnJpZGU7CiAKICAgICBnbDo6RXJyb3IgZ2V0U3VyZmFj
ZUxldmVsKEdMZW51bSB0YXJnZXQsCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvVmVydGV4QXJyYXk5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1Zl
cnRleEFycmF5OS5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvVmVydGV4QXJyYXk5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE5LDEwICsxOSw3IEBAIGNsYXNzIFJlbmRlcmVyOTsKIGNsYXNzIFZlcnRleEFy
cmF5OSA6IHB1YmxpYyBWZXJ0ZXhBcnJheUltcGwKIHsKICAgcHVibGljOgotICAgIFZlcnRleEFy
cmF5OShjb25zdCBnbDo6VmVydGV4QXJyYXk6OkRhdGEgJmRhdGEpCi0gICAgICAgIDogVmVydGV4
QXJyYXlJbXBsKGRhdGEpCi0gICAgewotICAgIH0KKyAgICBWZXJ0ZXhBcnJheTkoY29uc3QgZ2w6
OlZlcnRleEFycmF5U3RhdGUgJmRhdGEpIDogVmVydGV4QXJyYXlJbXBsKGRhdGEpIHt9CiAKICAg
ICB2aXJ0dWFsIH5WZXJ0ZXhBcnJheTkoKSB7IH0KIH07CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvZm9ybWF0dXRpbHM5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDkvZm9ybWF0dXRpbHM5LmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L2Zvcm1hdHV0
aWxzOS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcsMTIgKzcsMTYgQEAKIC8vIGZvcm1hdHV0aWxz
OS5jcHA6IFF1ZXJpZXMgZm9yIEdMIGltYWdlIGZvcm1hdHMgYW5kIHRoZWlyIHRyYW5zbGF0aW9u
cyB0byBEM0Q5CiAvLyBmb3JtYXRzLgogCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNk
L2NvcHlpbWFnZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L2Zvcm1h
dHV0aWxzOS5oIgorCisjaW5jbHVkZSAiaW1hZ2VfdXRpbC9jb3B5aW1hZ2UuaCIKKyNpbmNsdWRl
ICJpbWFnZV91dGlsL2dlbmVyYXRlbWlwLmgiCisjaW5jbHVkZSAiaW1hZ2VfdXRpbC9sb2FkaW1h
Z2UuaCIKKwogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1JlbmRlcmVyOS5o
IgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3ZlcnRleGNvbnZlcnNpb24u
aCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZ2VuZXJhdGVtaXAuaCIKLSNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvbG9hZGltYWdlLmgiCisKK3VzaW5nIG5hbWVzcGFj
ZSBhbmdsZTsKIAogbmFtZXNwYWNlIHJ4CiB7CkBAIC0yMywzMyArMjcsNiBAQCBuYW1lc3BhY2Ug
ZDNkOQogY29uc3QgRDNERk9STUFUIEQzREZNVF9JTlRaID0gKChEM0RGT1JNQVQpKE1BS0VGT1VS
Q0MoJ0knLCAnTicsICdUJywgJ1onKSkpOwogY29uc3QgRDNERk9STUFUIEQzREZNVF9OVUxMID0g
KChEM0RGT1JNQVQpKE1BS0VGT1VSQ0MoJ04nLCAnVScsICdMJywgJ0wnKSkpOwogCi1zdHJ1Y3Qg
RDNEOUZhc3RDb3B5Rm9ybWF0Ci17Ci0gICAgR0xlbnVtIGRlc3RGb3JtYXQ7Ci0gICAgR0xlbnVt
IGRlc3RUeXBlOwotICAgIENvbG9yQ29weUZ1bmN0aW9uIGNvcHlGdW5jdGlvbjsKLQotICAgIEQz
RDlGYXN0Q29weUZvcm1hdChHTGVudW0gZGVzdEZvcm1hdCwgR0xlbnVtIGRlc3RUeXBlLCBDb2xv
ckNvcHlGdW5jdGlvbiBjb3B5RnVuY3Rpb24pCi0gICAgICAgIDogZGVzdEZvcm1hdChkZXN0Rm9y
bWF0KSwgZGVzdFR5cGUoZGVzdFR5cGUpLCBjb3B5RnVuY3Rpb24oY29weUZ1bmN0aW9uKQotICAg
IHsgfQotCi0gICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgRDNEOUZhc3RDb3B5Rm9ybWF0JiBvdGhl
cikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtZW1jbXAodGhpcywgJm90aGVyLCBzaXpl
b2YoRDNEOUZhc3RDb3B5Rm9ybWF0KSkgPCAwOwotICAgIH0KLX07Ci0KLXR5cGVkZWYgc3RkOjpt
dWx0aW1hcDxEM0RGT1JNQVQsIEQzRDlGYXN0Q29weUZvcm1hdD4gRDNEOUZhc3RDb3B5TWFwOwot
Ci1zdGF0aWMgRDNEOUZhc3RDb3B5TWFwIEJ1aWxkRmFzdENvcHlNYXAoKQotewotICAgIEQzRDlG
YXN0Q29weU1hcCBtYXA7Ci0KLSAgICBtYXAuaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKEQzREZNVF9B
OFI4RzhCOCwgRDNEOUZhc3RDb3B5Rm9ybWF0KEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIENv
cHlCR1JBOFRvUkdCQTgpKSk7Ci0KLSAgICByZXR1cm4gbWFwOwotfQotCiAvLyBBIG1hcCB0byBk
ZXRlcm1pbmUgdGhlIHBpeGVsIHNpemUgYW5kIG1pcCBnZW5lcmF0aW9uIGZ1bmN0aW9uIG9mIGEg
Z2l2ZW4gRDNEIGZvcm1hdAogdHlwZWRlZiBzdGQ6Om1hcDxEM0RGT1JNQVQsIEQzREZvcm1hdD4g
RDNEOUZvcm1hdEluZm9NYXA7CiAKQEAgLTY0LDI0ICs0MSwyMyBAQCBEM0RGb3JtYXQ6OkQzREZv
cm1hdCgpCiAgICAgICBsdW1pbmFuY2VCaXRzKDApLAogICAgICAgZGVwdGhCaXRzKDApLAogICAg
ICAgc3RlbmNpbEJpdHMoMCksCi0gICAgICBpbnRlcm5hbEZvcm1hdChHTF9OT05FKSwKLSAgICAg
IG1pcEdlbmVyYXRpb25GdW5jdGlvbihOVUxMKSwKLSAgICAgIGNvbG9yUmVhZEZ1bmN0aW9uKE5V
TEwpLAotICAgICAgZmFzdENvcHlGdW5jdGlvbnMoKQorICAgICAgaW5mbyhudWxscHRyKQogewog
fQogCi1Db2xvckNvcHlGdW5jdGlvbiBEM0RGb3JtYXQ6OmdldEZhc3RDb3B5RnVuY3Rpb24oR0xl
bnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUpIGNvbnN0Ci17Ci0gICAgRmFzdENvcHlGdW5jdGlvbk1h
cDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGZhc3RDb3B5RnVuY3Rpb25zLmZpbmQoc3RkOjptYWtl
X3BhaXIoZm9ybWF0LCB0eXBlKSk7Ci0gICAgcmV0dXJuIChpdGVyICE9IGZhc3RDb3B5RnVuY3Rp
b25zLmVuZCgpKSA/IGl0ZXItPnNlY29uZCA6IE5VTEw7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9p
ZCBJbnNlcnREM0RGb3JtYXRJbmZvKEQzRDlGb3JtYXRJbmZvTWFwICptYXAsIEQzREZPUk1BVCBm
b3JtYXQsIEdMdWludCBiaXRzLCBHTHVpbnQgYmxvY2tXaWR0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBibG9ja0hlaWdodCwgR0x1aW50IHJlZEJpdHMs
IEdMdWludCBncmVlbkJpdHMsIEdMdWludCBibHVlQml0cywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBhbHBoYUJpdHMsIEdMdWludCBsdW1CaXRzLCBHTHVp
bnQgZGVwdGhCaXRzLCBHTHVpbnQgc3RlbmNpbEJpdHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIE1pcEdlbmVyYXRpb25GdW5j
dGlvbiBtaXBGdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29s
b3JSZWFkRnVuY3Rpb24gY29sb3JSZWFkRnVuYykKK3N0YXRpYyBpbmxpbmUgdm9pZCBJbnNlcnRE
M0RGb3JtYXRJbmZvKEQzRDlGb3JtYXRJbmZvTWFwICptYXAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEM0RGT1JNQVQgZm9ybWF0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJpdHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgYmxvY2tXaWR0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBibG9ja0hlaWdodCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCByZWRCaXRzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGdyZWVuQml0cywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBibHVlQml0cywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBhbHBoYUJpdHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbHVtQml0cywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBkZXB0aEJpdHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RlbmNpbEJpdHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQ6OklEIGZvcm1hdElEKQogewogICAgIEQz
REZvcm1hdCBpbmZvOwogICAgIGluZm8ucGl4ZWxCeXRlcyA9IGJpdHMgLyA4OwpAQCAtOTQsNTMg
KzcwLDQ4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBJbnNlcnREM0RGb3JtYXRJbmZvKEQKICAgICBp
bmZvLmx1bWluYW5jZUJpdHMgPSBsdW1CaXRzOwogICAgIGluZm8uZGVwdGhCaXRzID0gZGVwdGhC
aXRzOwogICAgIGluZm8uc3RlbmNpbEJpdHMgPSBzdGVuY2lsQml0czsKLSAgICBpbmZvLmludGVy
bmFsRm9ybWF0ID0gaW50ZXJuYWxGb3JtYXQ7Ci0gICAgaW5mby5taXBHZW5lcmF0aW9uRnVuY3Rp
b24gPSBtaXBGdW5jOwotICAgIGluZm8uY29sb3JSZWFkRnVuY3Rpb24gPSBjb2xvclJlYWRGdW5j
OwotCi0gICAgc3RhdGljIGNvbnN0IEQzRDlGYXN0Q29weU1hcCBmYXN0Q29weU1hcCA9IEJ1aWxk
RmFzdENvcHlNYXAoKTsKLSAgICBzdGQ6OnBhaXI8RDNEOUZhc3RDb3B5TWFwOjpjb25zdF9pdGVy
YXRvciwgRDNEOUZhc3RDb3B5TWFwOjpjb25zdF9pdGVyYXRvcj4gZmFzdENvcHlJdGVyID0gZmFz
dENvcHlNYXAuZXF1YWxfcmFuZ2UoZm9ybWF0KTsKLSAgICBmb3IgKEQzRDlGYXN0Q29weU1hcDo6
Y29uc3RfaXRlcmF0b3IgaSA9IGZhc3RDb3B5SXRlci5maXJzdDsgaSAhPSBmYXN0Q29weUl0ZXIu
c2Vjb25kOyBpKyspCi0gICAgewotICAgICAgICBpbmZvLmZhc3RDb3B5RnVuY3Rpb25zLmluc2Vy
dChzdGQ6Om1ha2VfcGFpcihzdGQ6Om1ha2VfcGFpcihpLT5zZWNvbmQuZGVzdEZvcm1hdCwgaS0+
c2Vjb25kLmRlc3RUeXBlKSwgaS0+c2Vjb25kLmNvcHlGdW5jdGlvbikpOwotICAgIH0KKyAgICBp
bmZvLmluZm8gICAgICAgICAgPSAmRm9ybWF0OjpHZXQoZm9ybWF0SUQpOwogCiAgICAgbWFwLT5p
bnNlcnQoc3RkOjptYWtlX3BhaXIoZm9ybWF0LCBpbmZvKSk7CiB9CiAKIHN0YXRpYyBEM0Q5Rm9y
bWF0SW5mb01hcCBCdWlsZEQzRDlGb3JtYXRJbmZvTWFwKCkKIHsKKyAgICB1c2luZyBuYW1lc3Bh
Y2UgYW5nbGU7ICAvLyBGb3IgaW1hZ2UgcmVhZGluZyBhbmQgbWlwbWFwIGdlbmVyYXRpb24gZnVu
Y3Rpb25zCisKICAgICBEM0Q5Rm9ybWF0SW5mb01hcCBtYXA7CiAKLSAgICAvLyAgICAgICAgICAg
ICAgICAgICAgICAgfCBEM0RGT1JNQVQgICAgICAgICAgIHwgUyAgfFcgfEggfCBSIHwgRyB8IEIg
fCBBIHwgTCB8IEQgfCBTIHwgSW50ZXJuYWwgZm9ybWF0ICAgICAgICAgICAgICAgICAgIHwgTWlw
IGdlbmVyYXRpb24gZnVuY3Rpb24gICB8IENvbG9yIHJlYWQgZnVuY3Rpb24gICAgICAgICAgICAg
fAotICAgIEluc2VydEQzREZvcm1hdEluZm8oJm1hcCwgRDNERk1UX05VTEwsICAgICAgICAgICAg
MCwgMCwgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsIEdMX05PTkUsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICBOVUxMICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEQzREZvcm1hdEluZm8oJm1hcCwgRDNE
Rk1UX1VOS05PV04sICAgICAgICAgMCwgMCwgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAs
IEdMX05PTkUsICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICAgICAgICAgICAgICAg
ICAgICAgICBOVUxMICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwotCi0gICAgSW5zZXJ0
RDNERm9ybWF0SW5mbygmbWFwLCBEM0RGTVRfTDgsICAgICAgICAgICAgICA4LCAxLCAxLCAgMCwg
IDAsICAwLCAgMCwgIDgsICAwLCAgMCwgR0xfTFVNSU5BTkNFOF9FWFQsICAgICAgICAgICAgICAg
ICAgR2VuZXJhdGVNaXA8TDg+LCAgICAgICAgICAgIFJlYWRDb2xvcjxMOCwgR0xmbG9hdD4gICAg
ICAgICAgICk7Ci0gICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RGTVRfQTgsICAgICAg
ICAgICAgICA4LCAxLCAxLCAgMCwgIDAsICAwLCAgOCwgIDAsICAwLCAgMCwgR0xfQUxQSEE4X0VY
VCwgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8QTg+LCAgICAgICAgICAgIFJlYWRD
b2xvcjxBOCwgR0xmbG9hdD4gICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RDNERm9ybWF0SW5mbygm
bWFwLCBEM0RGTVRfQThMOCwgICAgICAgICAgIDE2LCAxLCAxLCAgMCwgIDAsICAwLCAgOCwgIDgs
ICAwLCAgMCwgR0xfTFVNSU5BTkNFOF9BTFBIQThfRVhULCAgICAgICAgICAgR2VuZXJhdGVNaXA8
QThMOD4sICAgICAgICAgIFJlYWRDb2xvcjxBOEw4LCBHTGZsb2F0PiAgICAgICAgICk7Ci0gICAg
SW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RGTVRfQTRSNEc0QjQsICAgICAgIDE2LCAxLCAx
LCAgNCwgIDQsICA0LCAgNCwgIDAsICAwLCAgMCwgR0xfQkdSQTRfQU5HTEVYLCAgICAgICAgICAg
ICAgICAgICAgR2VuZXJhdGVNaXA8QTRSNEc0QjQ+LCAgICAgIFJlYWRDb2xvcjxBNFI0RzRCNCwg
R0xmbG9hdD4gICAgICk7Ci0gICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RGTVRfQTFS
NUc1QjUsICAgICAgIDE2LCAxLCAxLCAgNSwgIDUsICA1LCAgMSwgIDAsICAwLCAgMCwgR0xfQkdS
NV9BMV9BTkdMRVgsICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8QTFSNUc1QjU+LCAgICAg
IFJlYWRDb2xvcjxBMVI1RzVCNSwgR0xmbG9hdD4gICAgICk7Ci0gICAgSW5zZXJ0RDNERm9ybWF0
SW5mbygmbWFwLCBEM0RGTVRfUjVHNkI1LCAgICAgICAgIDE2LCAxLCAxLCAgNSwgIDYsICA1LCAg
MCwgIDAsICAwLCAgMCwgR0xfUkdCNTY1LCAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJh
dGVNaXA8UjVHNkI1PiwgICAgICAgIFJlYWRDb2xvcjxSNUc2QjUsIEdMZmxvYXQ+ICAgICAgICk7
Ci0gICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RGTVRfWDhSOEc4QjgsICAgICAgIDMy
LCAxLCAxLCAgOCwgIDgsICA4LCAgMCwgIDAsICAwLCAgMCwgR0xfQkdSQThfRVhULCAgICAgICAg
ICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8QjhHOFI4WDg+LCAgICAgIFJlYWRDb2xvcjxCOEc4
UjhYOCwgR0xmbG9hdD4gICAgICk7Ci0gICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RG
TVRfQThSOEc4QjgsICAgICAgIDMyLCAxLCAxLCAgOCwgIDgsICA4LCAgOCwgIDAsICAwLCAgMCwg
R0xfQkdSQThfRVhULCAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8QjhHOFI4QTg+
LCAgICAgIFJlYWRDb2xvcjxCOEc4UjhBOCwgR0xmbG9hdD4gICAgICk7Ci0gICAgSW5zZXJ0RDNE
Rm9ybWF0SW5mbygmbWFwLCBEM0RGTVRfUjE2RiwgICAgICAgICAgIDE2LCAxLCAxLCAxNiwgIDAs
ICAwLCAgMCwgIDAsICAwLCAgMCwgR0xfUjE2Rl9FWFQsICAgICAgICAgICAgICAgICAgICAgICAg
R2VuZXJhdGVNaXA8UjE2Rj4sICAgICAgICAgIFJlYWRDb2xvcjxSMTZGLCBHTGZsb2F0PiAgICAg
ICAgICk7Ci0gICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RGTVRfRzE2UjE2RiwgICAg
ICAgIDMyLCAxLCAxLCAxNiwgMTYsICAwLCAgMCwgIDAsICAwLCAgMCwgR0xfUkcxNkZfRVhULCAg
ICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjE2RzE2Rj4sICAgICAgIFJlYWRDb2xv
cjxSMTZHMTZGLCBHTGZsb2F0PiAgICAgICk7Ci0gICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFw
LCBEM0RGTVRfQTE2QjE2RzE2UjE2RiwgIDY0LCAxLCAxLCAxNiwgMTYsIDE2LCAxNiwgIDAsICAw
LCAgMCwgR0xfUkdCQTE2Rl9FWFQsICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjE2
RzE2QjE2QTE2Rj4sIFJlYWRDb2xvcjxSMTZHMTZCMTZBMTZGLCBHTGZsb2F0Pik7Ci0gICAgSW5z
ZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RGTVRfUjMyRiwgICAgICAgICAgIDMyLCAxLCAxLCAz
MiwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgR0xfUjMyRl9FWFQsICAgICAgICAgICAgICAgICAg
ICAgICAgR2VuZXJhdGVNaXA8UjMyRj4sICAgICAgICAgIFJlYWRDb2xvcjxSMzJGLCBHTGZsb2F0
PiAgICAgICAgICk7Ci0gICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RGTVRfRzMyUjMy
RiwgICAgICAgIDY0LCAxLCAxLCAzMiwgMzIsICAwLCAgMCwgIDAsICAwLCAgMCwgR0xfUkczMkZf
RVhULCAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjMyRzMyRj4sICAgICAgIFJl
YWRDb2xvcjxSMzJHMzJGLCBHTGZsb2F0PiAgICAgICk7Ci0gICAgSW5zZXJ0RDNERm9ybWF0SW5m
bygmbWFwLCBEM0RGTVRfQTMyQjMyRzMyUjMyRiwgMTI4LCAxLCAxLCAzMiwgMzIsIDMyLCAzMiwg
IDAsICAwLCAgMCwgR0xfUkdCQTMyRl9FWFQsICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVN
aXA8UjMyRzMyQjMyQTMyRj4sIFJlYWRDb2xvcjxSMzJHMzJCMzJBMzJGLCBHTGZsb2F0Pik7Ci0K
LSAgICBJbnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9EMTYsICAgICAgICAgICAgMTYs
IDEsIDEsICAwLCAgMCwgIDAsICAwLCAgMCwgMTYsICAwLCBHTF9ERVBUSF9DT01QT05FTlQxNiwg
ICAgICAgICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgTlVMTCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZN
VF9EMjRTOCwgICAgICAgICAgMzIsIDEsIDEsICAwLCAgMCwgIDAsICAwLCAgMCwgMjQsICA4LCBH
TF9ERVBUSDI0X1NURU5DSUw4X09FUywgICAgICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAg
ICAgICAgTlVMTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnREM0RG
b3JtYXRJbmZvKCZtYXAsIEQzREZNVF9EMjRYOCwgICAgICAgICAgMzIsIDEsIDEsICAwLCAgMCwg
IDAsICAwLCAgMCwgMjQsICAwLCBHTF9ERVBUSF9DT01QT05FTlQxNiwgICAgICAgICAgICAgICBO
VUxMLCAgICAgICAgICAgICAgICAgICAgICAgTlVMTCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKTsKLSAgICBJbnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9EMzIsICAgICAgICAg
ICAgMzIsIDEsIDEsICAwLCAgMCwgIDAsICAwLCAgMCwgMzIsICAwLCBHTF9ERVBUSF9DT01QT05F
TlQzMl9PRVMsICAgICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgTlVMTCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKTsKLQotICAgIEluc2VydEQzREZvcm1hdEluZm8oJm1h
cCwgRDNERk1UX0lOVFosICAgICAgICAgICAzMiwgMSwgMSwgIDAsICAwLCAgMCwgIDAsICAwLCAy
NCwgIDgsIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTLCAgICAgICAgICAgIE5VTEwsICAgICAgICAg
ICAgICAgICAgICAgICBOVUxMICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwotCi0gICAg
SW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RGTVRfRFhUMSwgICAgICAgICAgIDY0LCA0LCA0
LCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
MV9FWFQsICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgIE5VTEwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RGTVRfRFhU
MywgICAgICAgICAgMTI4LCA0LCA0LCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgR0xfQ09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRSwgTlVMTCwgICAgICAgICAgICAgICAgICAgICAg
IE5VTEwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RDNERm9ybWF0
SW5mbygmbWFwLCBEM0RGTVRfRFhUNSwgICAgICAgICAgMTI4LCA0LCA0LCAgMCwgIDAsICAwLCAg
MCwgIDAsICAwLCAgMCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRSwgTlVMTCwg
ICAgICAgICAgICAgICAgICAgICAgIE5VTEwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7
CisgICAgLy8gY2xhbmctZm9ybWF0IG9mZgorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICB8
IEQzREZPUk1BVCAgICAgICAgICAgfCBTICB8VyB8SCB8IFIgfCBHIHwgQiB8IEEgfCBMIHwgRCB8
IFMgfCBBTkdMRSBmb3JtYXQgICAgICAgICAgICAgICAgICAgfAorICAgIEluc2VydEQzREZvcm1h
dEluZm8oJm1hcCwgRDNERk1UX05VTEwsICAgICAgICAgICAgMCwgMCwgMCwgIDAsICAwLCAgMCwg
IDAsICAwLCAgMCwgIDAsIEZvcm1hdDo6SUQ6Ok5PTkUgICAgICAgICAgICAgICAgKTsKKyAgICBJ
bnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9VTktOT1dOLCAgICAgICAgIDAsIDAsIDAs
ICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCBGb3JtYXQ6OklEOjpOT05FICAgICAgICAgICAg
ICAgICk7CisKKyAgICBJbnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9MOCwgICAgICAg
ICAgICAgIDgsIDEsIDEsICAwLCAgMCwgIDAsICAwLCAgOCwgIDAsICAwLCBGb3JtYXQ6OklEOjpM
OF9VTk9STSAgICAgICAgICAgICk7CisgICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RG
TVRfQTgsICAgICAgICAgICAgICA4LCAxLCAxLCAgMCwgIDAsICAwLCAgOCwgIDAsICAwLCAgMCwg
Rm9ybWF0OjpJRDo6QThfVU5PUk0gICAgICAgICAgICApOworICAgIEluc2VydEQzREZvcm1hdElu
Zm8oJm1hcCwgRDNERk1UX0E4TDgsICAgICAgICAgICAxNiwgMSwgMSwgIDAsICAwLCAgMCwgIDgs
ICA4LCAgMCwgIDAsIEZvcm1hdDo6SUQ6Okw4QThfVU5PUk0gICAgICAgICAgKTsKKyAgICBJbnNl
cnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9BNFI0RzRCNCwgICAgICAgMTYsIDEsIDEsICA0
LCAgNCwgIDQsICA0LCAgMCwgIDAsICAwLCBGb3JtYXQ6OklEOjpCNEc0UjRBNF9VTk9STSAgICAg
ICk7CisgICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RGTVRfQTFSNUc1QjUsICAgICAg
IDE2LCAxLCAxLCAgNSwgIDUsICA1LCAgMSwgIDAsICAwLCAgMCwgRm9ybWF0OjpJRDo6QjVHNVI1
QTFfVU5PUk0gICAgICApOworICAgIEluc2VydEQzREZvcm1hdEluZm8oJm1hcCwgRDNERk1UX1I1
RzZCNSwgICAgICAgICAxNiwgMSwgMSwgIDUsICA2LCAgNSwgIDAsICAwLCAgMCwgIDAsIEZvcm1h
dDo6SUQ6OlI1RzZCNV9VTk9STSAgICAgICAgKTsKKyAgICBJbnNlcnREM0RGb3JtYXRJbmZvKCZt
YXAsIEQzREZNVF9YOFI4RzhCOCwgICAgICAgMzIsIDEsIDEsICA4LCAgOCwgIDgsICAwLCAgMCwg
IDAsICAwLCBGb3JtYXQ6OklEOjpCOEc4UjhYOF9VTk9STSAgICAgICk7CisgICAgSW5zZXJ0RDNE
Rm9ybWF0SW5mbygmbWFwLCBEM0RGTVRfQThSOEc4QjgsICAgICAgIDMyLCAxLCAxLCAgOCwgIDgs
ICA4LCAgOCwgIDAsICAwLCAgMCwgRm9ybWF0OjpJRDo6QjhHOFI4QThfVU5PUk0gICAgICApOwor
ICAgIEluc2VydEQzREZvcm1hdEluZm8oJm1hcCwgRDNERk1UX1IxNkYsICAgICAgICAgICAxNiwg
MSwgMSwgMTYsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsIEZvcm1hdDo6SUQ6OlIxNl9GTE9BVCAg
ICAgICAgICAgKTsKKyAgICBJbnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9HMTZSMTZG
LCAgICAgICAgMzIsIDEsIDEsIDE2LCAxNiwgIDAsICAwLCAgMCwgIDAsICAwLCBGb3JtYXQ6OklE
OjpSMTZHMTZfRkxPQVQgICAgICAgICk7CisgICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBE
M0RGTVRfQTE2QjE2RzE2UjE2RiwgIDY0LCAxLCAxLCAxNiwgMTYsIDE2LCAxNiwgIDAsICAwLCAg
MCwgRm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2X0ZMT0FUICApOworICAgIEluc2VydEQzREZvcm1h
dEluZm8oJm1hcCwgRDNERk1UX1IzMkYsICAgICAgICAgICAzMiwgMSwgMSwgMzIsICAwLCAgMCwg
IDAsICAwLCAgMCwgIDAsIEZvcm1hdDo6SUQ6OlIzMl9GTE9BVCAgICAgICAgICAgKTsKKyAgICBJ
bnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9HMzJSMzJGLCAgICAgICAgNjQsIDEsIDEs
IDMyLCAzMiwgIDAsICAwLCAgMCwgIDAsICAwLCBGb3JtYXQ6OklEOjpSMzJHMzJfRkxPQVQgICAg
ICAgICk7CisgICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RGTVRfQTMyQjMyRzMyUjMy
RiwgMTI4LCAxLCAxLCAzMiwgMzIsIDMyLCAzMiwgIDAsICAwLCAgMCwgRm9ybWF0OjpJRDo6UjMy
RzMyQjMyQTMyX0ZMT0FUICApOworCisgICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RG
TVRfRDE2LCAgICAgICAgICAgIDE2LCAxLCAxLCAgMCwgIDAsICAwLCAgMCwgIDAsIDE2LCAgMCwg
Rm9ybWF0OjpJRDo6RDE2X1VOT1JNICAgICAgICAgICApOworICAgIEluc2VydEQzREZvcm1hdElu
Zm8oJm1hcCwgRDNERk1UX0QyNFM4LCAgICAgICAgICAzMiwgMSwgMSwgIDAsICAwLCAgMCwgIDAs
ICAwLCAyNCwgIDgsIEZvcm1hdDo6SUQ6OkQyNF9VTk9STV9TOF9VSU5UICAgKTsKKyAgICBJbnNl
cnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9EMjRYOCwgICAgICAgICAgMzIsIDEsIDEsICAw
LCAgMCwgIDAsICAwLCAgMCwgMjQsICAwLCBGb3JtYXQ6OklEOjpEMTZfVU5PUk0gICAgICAgICAg
ICk7CisgICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RGTVRfRDMyLCAgICAgICAgICAg
IDMyLCAxLCAxLCAgMCwgIDAsICAwLCAgMCwgIDAsIDMyLCAgMCwgRm9ybWF0OjpJRDo6RDMyX1VO
T1JNICAgICAgICAgICApOworCisgICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RGTVRf
SU5UWiwgICAgICAgICAgIDMyLCAxLCAxLCAgMCwgIDAsICAwLCAgMCwgIDAsIDI0LCAgOCwgRm9y
bWF0OjpJRDo6RDI0X1VOT1JNX1M4X1VJTlQgICApOworCisgICAgSW5zZXJ0RDNERm9ybWF0SW5m
bygmbWFwLCBEM0RGTVRfRFhUMSwgICAgICAgICAgIDY0LCA0LCA0LCAgMCwgIDAsICAwLCAgMCwg
IDAsICAwLCAgMCwgRm9ybWF0OjpJRDo6QkMxX1JHQkFfVU5PUk1fQkxPQ0spOworICAgIEluc2Vy
dEQzREZvcm1hdEluZm8oJm1hcCwgRDNERk1UX0RYVDMsICAgICAgICAgIDEyOCwgNCwgNCwgIDAs
ICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsIEZvcm1hdDo6SUQ6OkJDMl9SR0JBX1VOT1JNX0JMT0NL
KTsKKyAgICBJbnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9EWFQ1LCAgICAgICAgICAx
MjgsIDQsIDQsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCBGb3JtYXQ6OklEOjpCQzNfUkdC
QV9VTk9STV9CTE9DSyk7CisgICAgLy8gY2xhbmctZm9ybWF0IG9uCiAKICAgICByZXR1cm4gbWFw
OwogfQpAQCAtMTY3LDYgKzEzOCw4IEBAIHR5cGVkZWYgc3RkOjptYXA8R0xpbnQsIEluaXRpYWxp
emVUZXh0dXIKIAogc3RhdGljIEludGVybmFsRm9ybWF0SW5pdGlhbHplck1hcCBCdWlsZEludGVy
bmFsRm9ybWF0SW5pdGlhbHplck1hcCgpCiB7CisgICAgdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOyAg
Ly8gRm9yIGltYWdlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucworCiAgICAgSW50ZXJuYWxGb3Jt
YXRJbml0aWFsemVyTWFwIG1hcDsKIAogICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbml0
aWFsemVyUGFpcihHTF9SR0IxNkYsIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTGhhbGYsICAg
MHgwMDAwLCAgICAgMHgwMDAwLCAgICAgMHgwMDAwLCAgICAgZ2w6OkZsb2F0MTZPbmU+KSk7CkBA
IC0xNzUsMjggKzE0OCw2IEBAIHN0YXRpYyBJbnRlcm5hbEZvcm1hdEluaXRpYWx6ZXJNYXAgQnVp
bGQKICAgICByZXR1cm4gbWFwOwogfQogCi0vLyBFYWNoIEdMIGludGVybmFsIGZvcm1hdCBjb3Jy
ZXNwb25kcyB0byBvbmUgRDNEIGZvcm1hdCBhbmQgZGF0YSBsb2FkaW5nIGZ1bmN0aW9uLgotLy8g
RHVlIHRvIG5vdCBhbGwgZm9ybWF0cyBiZWluZyBhdmFpbGFibGUgYWxsIHRoZSB0aW1lLCBzb21l
IG9mIHRoZSBmdW5jdGlvbi9mb3JtYXQgdHlwZXMgYXJlIHdyYXBwZWQKLS8vIGluIHRlbXBsYXRl
cyB0aGF0IHBlcmZvcm0gZm9ybWF0IHN1cHBvcnQgcXVlcmllcyBvbiBhIFJlbmRlcmVyOSBvYmpl
Y3Qgd2hpY2ggaXMgc3VwcGxpZWQKLS8vIHdoZW4gcmVxdWVzdGluZyB0aGUgZnVuY3Rpb24gb3Ig
Zm9ybWF0LgotCi10eXBlZGVmIGJvb2woKkZhbGxiYWNrUHJlZGljYXRlRnVuY3Rpb24pKCk7Ci0K
LXRlbXBsYXRlIDxGYWxsYmFja1ByZWRpY2F0ZUZ1bmN0aW9uIHByZWQsIExvYWRJbWFnZUZ1bmN0
aW9uIHByZWZlcmVkLCBMb2FkSW1hZ2VGdW5jdGlvbiBmYWxsYmFjaz4KLXN0YXRpYyB2b2lkIEZh
bGxiYWNrTG9hZChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0
Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXRE
ZXB0aFBpdGNoKQotewotICAgIGlmIChwcmVkKCkpCi0gICAgewotICAgICAgICBwcmVmZXJlZCh3
aWR0aCwgaGVpZ2h0LCBkZXB0aCwgaW5wdXQsIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRj
aCwgb3V0cHV0LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7Ci0gICAgfQotICAg
IGVsc2UKLSAgICB7Ci0gICAgICAgIGZhbGxiYWNrKHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBpbnB1
dCwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoLCBvdXRwdXQsIG91dHB1dFJvd1BpdGNo
LCBvdXRwdXREZXB0aFBpdGNoKTsKLSAgICB9Ci19Ci0KIHN0YXRpYyB2b2lkIFVucmVhY2hhYmxl
TG9hZChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93
UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXRE
ZXB0aFBpdGNoKQpAQCAtMjMzLDggKzE4NCwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgSW5zZXJ0
RDNEOUZvcm1hdEluZm8oCiAKIHN0YXRpYyBEM0Q5Rm9ybWF0TWFwIEJ1aWxkRDNEOUZvcm1hdE1h
cCgpCiB7CisgICAgdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOyAgLy8gRm9yIGltYWdlIGxvYWRpbmcg
ZnVuY3Rpb25zCisKICAgICBEM0Q5Rm9ybWF0TWFwIG1hcDsKIAorICAgIC8vIGNsYW5nLWZvcm1h
dCBvZmYKICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgfCBJbnRlcm5hbCBmb3JtYXQgICAg
ICAgICAgICAgICAgICAgICB8IFRleHR1cmUgZm9ybWF0ICAgICAgfCBSZW5kZXIgZm9ybWF0ICAg
ICAgICB8IExvYWQgZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgSW5z
ZXJ0RDNEOUZvcm1hdEluZm8oJm1hcCwgR0xfTk9ORSwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEQzREZNVF9OVUxMLCAgICAgICAgICBEM0RGTVRfTlVMTCwgICAgICAgICAgIFVucmVhY2hh
YmxlTG9hZCAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKIApAQCAtMjY4LDExICsyMjIsMTEg
QEAgc3RhdGljIEQzRDlGb3JtYXRNYXAgQnVpbGREM0Q5Rm9ybWF0TWFwKAogICAgIEluc2VydEQz
RDlGb3JtYXRJbmZvKCZtYXAsIEdMX0xVTUlOQU5DRTE2Rl9FWFQsICAgICAgICAgICAgICAgICBE
M0RGTVRfQTE2QjE2RzE2UjE2RiwgRDNERk1UX1VOS05PV04sICAgICAgICBMb2FkTDE2RlRvUkdC
QTE2RiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgSW5zZXJ0RDNEOUZvcm1hdEluZm8o
Jm1hcCwgR0xfTFVNSU5BTkNFX0FMUEhBMTZGX0VYVCwgICAgICAgICAgIEQzREZNVF9BMTZCMTZH
MTZSMTZGLCBEM0RGTVRfVU5LTk9XTiwgICAgICAgIExvYWRMQTE2RlRvUkdCQTE2RiAgICAgICAg
ICAgICAgICAgICAgICAgKTsKIAotICAgIEluc2VydEQzRDlGb3JtYXRJbmZvKCZtYXAsIEdMX0FM
UEhBOF9FWFQsICAgICAgICAgICAgICAgICAgICAgICBEM0RGTVRfQThSOEc4QjgsICAgICAgRDNE
Rk1UX0E4UjhHOEI4LCAgICAgICBGYWxsYmFja0xvYWQ8Z2w6OnN1cHBvcnRzU1NFMiwgTG9hZEE4
VG9CR1JBOF9TU0UyLCBMb2FkQThUb0JHUkE4Pik7CisgICAgSW5zZXJ0RDNEOUZvcm1hdEluZm8o
Jm1hcCwgR0xfQUxQSEE4X0VYVCwgICAgICAgICAgICAgICAgICAgICAgIEQzREZNVF9BOFI4RzhC
OCwgICAgICBEM0RGTVRfQThSOEc4QjgsICAgICAgIExvYWRBOFRvQkdSQTggICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKTsKIAogICAgIEluc2VydEQzRDlGb3JtYXRJbmZvKCZtYXAsIEdMX1JH
QjhfT0VTLCAgICAgICAgICAgICAgICAgICAgICAgICBEM0RGTVRfWDhSOEc4QjgsICAgICAgRDNE
Rk1UX1g4UjhHOEI4LCAgICAgICBMb2FkUkdCOFRvQkdSWDggICAgICAgICAgICAgICAgICAgICAg
ICAgICApOwogICAgIEluc2VydEQzRDlGb3JtYXRJbmZvKCZtYXAsIEdMX1JHQjU2NSwgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEM0RGTVRfWDhSOEc4QjgsICAgICAgRDNERk1UX1g4UjhHOEI4
LCAgICAgICBMb2FkUjVHNkI1VG9CR1JBOCAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAg
IEluc2VydEQzRDlGb3JtYXRJbmZvKCZtYXAsIEdMX1JHQkE4X09FUywgICAgICAgICAgICAgICAg
ICAgICAgICBEM0RGTVRfQThSOEc4QjgsICAgICAgRDNERk1UX0E4UjhHOEI4LCAgICAgICBGYWxs
YmFja0xvYWQ8Z2w6OnN1cHBvcnRzU1NFMiwgTG9hZFJHQkE4VG9CR1JBOF9TU0UyLCBMb2FkUkdC
QThUb0JHUkE4Pik7CisgICAgSW5zZXJ0RDNEOUZvcm1hdEluZm8oJm1hcCwgR0xfUkdCQThfT0VT
LCAgICAgICAgICAgICAgICAgICAgICAgIEQzREZNVF9BOFI4RzhCOCwgICAgICBEM0RGTVRfQThS
OEc4QjgsICAgICAgIExvYWRSR0JBOFRvQkdSQTggICAgICAgICAgICAgICAgICAgICAgICAgICk7
CiAgICAgSW5zZXJ0RDNEOUZvcm1hdEluZm8oJm1hcCwgR0xfUkdCQTQsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEQzREZNVF9BOFI4RzhCOCwgICAgICBEM0RGTVRfQThSOEc4QjgsICAgICAg
IExvYWRSR0JBNFRvQkdSQTggICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgSW5zZXJ0
RDNEOUZvcm1hdEluZm8oJm1hcCwgR0xfUkdCNV9BMSwgICAgICAgICAgICAgICAgICAgICAgICAg
IEQzREZNVF9BOFI4RzhCOCwgICAgICBEM0RGTVRfQThSOEc4QjgsICAgICAgIExvYWRSR0I1QTFU
b0JHUkE4ICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgSW5zZXJ0RDNEOUZvcm1hdElu
Zm8oJm1hcCwgR0xfUjhfRVhULCAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzREZNVF9YOFI4
RzhCOCwgICAgICBEM0RGTVRfWDhSOEc4QjgsICAgICAgIExvYWRSOFRvQkdSWDggICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICk7CkBAIC0yOTEsNiArMjQ1LDcgQEAgc3RhdGljIEQzRDlGb3Jt
YXRNYXAgQnVpbGREM0Q5Rm9ybWF0TWFwKAogICAgIC8vIHRoZW4gY2hhbmdpbmcgdGhlIGZvcm1h
dCBhbmQgbG9hZGluZyBmdW5jdGlvbiBhcHByb3ByaWF0ZWx5LgogICAgIEluc2VydEQzRDlGb3Jt
YXRJbmZvKCZtYXAsIEdMX0xVTUlOQU5DRThfRVhULCAgICAgICAgICAgICAgICAgICBEM0RGTVRf
TDgsICAgICAgICAgICAgRDNERk1UX1VOS05PV04sICAgICAgICBMb2FkVG9OYXRpdmU8R0x1Ynl0
ZSwgMT4gICAgICAgICAgICAgICAgICApOwogICAgIEluc2VydEQzRDlGb3JtYXRJbmZvKCZtYXAs
IEdMX0xVTUlOQU5DRThfQUxQSEE4X0VYVCwgICAgICAgICAgICBEM0RGTVRfQThMOCwgICAgICAg
ICAgRDNERk1UX1VOS05PV04sICAgICAgICBMb2FkVG9OYXRpdmU8R0x1Ynl0ZSwgMj4gICAgICAg
ICAgICAgICAgICApOworICAgIC8vIGNsYW5nLWZvcm1hdCBvbgogCiAgICAgcmV0dXJuIG1hcDsK
IH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkOS9mb3JtYXR1dGlsczkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvZm9ybWF0dXRpbHM5LmgJKHJldmlz
aW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkOS9mb3JtYXR1dGlsczkuaAkod29ya2luZyBjb3B5KQpAQCAtMTUsNiArMTUs
OCBAQAogI2luY2x1ZGUgImNvbW1vbi9wbGF0Zm9ybS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL2Fu
Z2xldHlwZXMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgorI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L3JlbmRlcmVyX3V0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2Zvcm1h
dHV0aWxzRDNELmgiCiAKIG5hbWVzcGFjZSByeApAQCAtMjUsOCArMjcsNiBAQCBjbGFzcyBSZW5k
ZXJlcjk7CiBuYW1lc3BhY2UgZDNkOQogewogCi10eXBlZGVmIHN0ZDo6bWFwPHN0ZDo6cGFpcjxH
TGVudW0sIEdMZW51bT4sIENvbG9yQ29weUZ1bmN0aW9uPiBGYXN0Q29weUZ1bmN0aW9uTWFwOwot
CiBzdHJ1Y3QgRDNERm9ybWF0CiB7CiAgICAgRDNERm9ybWF0KCk7CkBAIC00NCwxNCArNDQsOSBA
QCBzdHJ1Y3QgRDNERm9ybWF0CiAgICAgR0x1aW50IGRlcHRoQml0czsKICAgICBHTHVpbnQgc3Rl
bmNpbEJpdHM7CiAKLSAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQ7Ci0KLSAgICBNaXBHZW5lcmF0
aW9uRnVuY3Rpb24gbWlwR2VuZXJhdGlvbkZ1bmN0aW9uOwotICAgIENvbG9yUmVhZEZ1bmN0aW9u
IGNvbG9yUmVhZEZ1bmN0aW9uOwotCi0gICAgRmFzdENvcHlGdW5jdGlvbk1hcCBmYXN0Q29weUZ1
bmN0aW9uczsKLSAgICBDb2xvckNvcHlGdW5jdGlvbiBnZXRGYXN0Q29weUZ1bmN0aW9uKEdMZW51
bSBmb3JtYXQsIEdMZW51bSB0eXBlKSBjb25zdDsKKyAgICBjb25zdCBhbmdsZTo6Rm9ybWF0ICpp
bmZvOwogfTsKKwogY29uc3QgRDNERm9ybWF0ICZHZXREM0RGb3JtYXRJbmZvKEQzREZPUk1BVCBm
b3JtYXQpOwogCiBzdHJ1Y3QgVmVydGV4Rm9ybWF0CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvcmVuZGVyZXI5X3V0aWxzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDkvcmVuZGVyZXI5X3V0aWxzLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3JlbmRl
cmVyOV91dGlscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NCw2ICsyNjQsMjEgQEAgdm9pZCBD
b252ZXJ0TWluRmlsdGVyKEdMZW51bSBtaW5GaWx0ZXIsIAogICAgIH0KIH0KIAorRDNEUVVFUllU
WVBFIENvbnZlcnRRdWVyeVR5cGUoR0xlbnVtIHF1ZXJ5VHlwZSkKK3sKKyAgICBzd2l0Y2ggKHF1
ZXJ5VHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0VYVDoK
KyAgICAgICAgY2FzZSBHTF9BTllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFX0VYVDoKKyAg
ICAgICAgICAgIHJldHVybiBEM0RRVUVSWVRZUEVfT0NDTFVTSU9OOworICAgICAgICBjYXNlIEdM
X0NPTU1BTkRTX0NPTVBMRVRFRF9DSFJPTUlVTToKKyAgICAgICAgICAgIHJldHVybiBEM0RRVUVS
WVRZUEVfRVZFTlQ7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEQzRFFVRVJZVFlQRT4oMCk7CisgICAg
fQorfQorCiBEM0RNVUxUSVNBTVBMRV9UWVBFIEdldE11bHRpc2FtcGxlVHlwZShHTHVpbnQgc2Ft
cGxlcykKIHsKICAgICByZXR1cm4gKHNhbXBsZXMgPiAxKSA/IHN0YXRpY19jYXN0PEQzRE1VTFRJ
U0FNUExFX1RZUEU+KHNhbXBsZXMpIDogRDNETVVMVElTQU1QTEVfTk9ORTsKQEAgLTI5MSw3ICsz
MDYsNyBAQCBHTHNpemVpIEdldFNhbXBsZXNDb3VudChEM0RNVUxUSVNBTVBMRV9UCiAKIGJvb2wg
SXNGb3JtYXRDaGFubmVsRXF1aXZhbGVudChEM0RGT1JNQVQgZDNkZm9ybWF0LCBHTGVudW0gZm9y
bWF0KQogewotICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCA9IGQzZDk6OkdldEQzREZvcm1hdElu
Zm8oZDNkZm9ybWF0KS5pbnRlcm5hbEZvcm1hdDsKKyAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQg
ID0gZDNkOTo6R2V0RDNERm9ybWF0SW5mbyhkM2Rmb3JtYXQpLmluZm8tPmdsSW50ZXJuYWxGb3Jt
YXQ7CiAgICAgR0xlbnVtIGNvbnZlcnRlZEZvcm1hdCA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdElu
Zm8oaW50ZXJuYWxGb3JtYXQpLmZvcm1hdDsKICAgICByZXR1cm4gY29udmVydGVkRm9ybWF0ID09
IGZvcm1hdDsKIH0KQEAgLTU3NSwxMCArNTkwLDEwIEBAIHZvaWQgR2VuZXJhdGVDYXBzKElEaXJl
Y3QzRDkgKmQzZDksCiAgICAgZXh0ZW5zaW9ucy0+Y29sb3JCdWZmZXJGbG9hdCA9IGZhbHNlOwog
ICAgIGV4dGVuc2lvbnMtPmRlYnVnTWFya2VyID0gdHJ1ZTsKICAgICBleHRlbnNpb25zLT5lZ2xJ
bWFnZSAgICAgICAgICAgICAgID0gdHJ1ZTsKKyAgICBleHRlbnNpb25zLT5lZ2xJbWFnZUV4dGVy
bmFsICAgICAgID0gdHJ1ZTsKICAgICBleHRlbnNpb25zLT51bnBhY2tTdWJpbWFnZSAgICAgICAg
ID0gdHJ1ZTsKICAgICBleHRlbnNpb25zLT5wYWNrU3ViaW1hZ2UgICAgICAgICAgID0gdHJ1ZTsK
LSAgICBleHRlbnNpb25zLT52ZXJ0ZXhBcnJheU9iamVjdCAgICAgID0gdHJ1ZTsKLSAgICBleHRl
bnNpb25zLT5ub0Vycm9yICAgICAgICAgICAgICAgID0gdHJ1ZTsKKyAgICBleHRlbnNpb25zLT5z
eW5jUXVlcnkgICAgICAgICAgICAgID0gZXh0ZW5zaW9ucy0+ZmVuY2U7CiAKICAgICAvLyBEM0Q5
IGhhcyBubyBjb25jZXB0IG9mIHNlcGFyYXRlIG1hc2tzIGFuZCByZWZzIGZvciBmcm9udCBhbmQg
YmFjayBmYWNlcyBpbiB0aGUgZGVwdGggc3RlbmNpbAogICAgIC8vIHN0YXRlLgpAQCAtNjMxLDkg
KzY0NiwxMyBAQCBXb3JrYXJvdW5kc0QzRCBHZW5lcmF0ZVdvcmthcm91bmRzKCkKICAgICB3b3Jr
YXJvdW5kcy5tcnRQZXJmV29ya2Fyb3VuZCA9IHRydWU7CiAgICAgd29ya2Fyb3VuZHMuc2V0RGF0
YUZhc3RlclRoYW5JbWFnZVVwbG9hZCA9IGZhbHNlOwogICAgIHdvcmthcm91bmRzLnVzZUluc3Rh
bmNlZFBvaW50U3ByaXRlRW11bGF0aW9uID0gZmFsc2U7CisKKyAgICAvLyBUT0RPKGptYWRpbGwp
OiBEaXNhYmxlIHdvcmthcm91bmQgd2hlbiB3ZSBoYXZlIGEgZml4ZWQgY29tcGlsZXIgRExMLgor
ICAgIHdvcmthcm91bmRzLmV4cGFuZEludGVnZXJQb3dFeHByZXNzaW9ucyA9IHRydWU7CisKICAg
ICByZXR1cm4gd29ya2Fyb3VuZHM7CiB9CiAKLX0KK30gIC8vIG5hbWVzcGFjZSBkM2Q5CiAKLX0K
K30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3JlbmRlcmVyOV91dGlscy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9y
ZW5kZXJlcjlfdXRpbHMuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3JlbmRlcmVyOV91dGlscy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMCw3ICsxMCw3IEBACiAjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVS
X0QzRF9EM0Q5X1JFTkRFUkVSOVVUSUxTX0hfCiAjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0Qz
RF9EM0Q5X1JFTkRFUkVSOVVUSUxTX0hfCiAKLSNpbmNsdWRlICJsaWJBTkdMRS9hbmdsZXR5cGVz
LmgiCisjaW5jbHVkZSAiY29tbW9uL0NvbG9yLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvQ2Fwcy5o
IgogI2luY2x1ZGUgImxpYkFOR0xFL0Vycm9yLmgiCiAKQEAgLTM5LDYgKzM5LDcgQEAgRFdPUkQg
Q29udmVydENvbG9yTWFzayhib29sIHJlZCwgYm9vbCBncgogRDNEVEVYVFVSRUZJTFRFUlRZUEUg
Q29udmVydE1hZ0ZpbHRlcihHTGVudW0gbWFnRmlsdGVyLCBmbG9hdCBtYXhBbmlzb3Ryb3B5KTsK
IHZvaWQgQ29udmVydE1pbkZpbHRlcihHTGVudW0gbWluRmlsdGVyLCBEM0RURVhUVVJFRklMVEVS
VFlQRSAqZDNkTWluRmlsdGVyLCBEM0RURVhUVVJFRklMVEVSVFlQRSAqZDNkTWlwRmlsdGVyLAog
ICAgICAgICAgICAgICAgICAgICAgIGZsb2F0ICpkM2RMb2RCaWFzLCBmbG9hdCBtYXhBbmlzb3Ry
b3B5LCBzaXplX3QgYmFzZUxldmVsKTsKK0QzRFFVRVJZVFlQRSBDb252ZXJ0UXVlcnlUeXBlKEdM
ZW51bSBxdWVyeVR5cGUpOwogCiBEM0RNVUxUSVNBTVBMRV9UWVBFIEdldE11bHRpc2FtcGxlVHlw
ZShHTHVpbnQgc2FtcGxlcyk7CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQmxpdDExLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0JsaXQx
MS5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQmxpdDExLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTIsMTYgKzEyLDI5IEBACiAKICNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgogI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmgiCisjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclRhcmdldDExLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFfdXRpbHMuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZm9ybWF0dXRpbHMxMS5oIgorI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZS5oIgog
I2luY2x1ZGUgInRoaXJkX3BhcnR5L3RyYWNlX2V2ZW50L3RyYWNlX2V2ZW50LmgiCiAKK25hbWVz
cGFjZSByeAoreworCituYW1lc3BhY2UKK3sKKworLy8gSW5jbHVkZSBpbmxpbmUgc2hhZGVycyBp
biB0aGUgYW5vbnltb3VzIG5hbWVzcGFjZSB0byBtYWtlIHN1cmUgbm8gc3ltYm9scyBhcmUgZXhw
b3J0ZWQKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21w
aWxlZC9wYXNzdGhyb3VnaDJkMTF2cy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdoZGVwdGgyZDExcHMuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhy
b3VnaHJnYmEyZDExcHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
c2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYmFwcmVtdWx0aXBseTJkMTFwcy5oIgorI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0
aHJvdWdocmdiYXVubXVsdGlwbHkyZDExcHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYmEyZHVpMTFwcy5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bh
c3N0aHJvdWdocmdiYTJkaTExcHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYjJkMTFwcy5oIgorI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdo
cmdicHJlbXVsdGlwbHkyZDExcHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYnVubXVsdGlwbHkyZDExcHMuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9w
YXNzdGhyb3VnaHJnYjJkdWkxMXBzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2IyZGkxMXBzLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91
Z2hyZzJkMTFwcy5oIgpAQCAtNTAsNiArNjMsMTEgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaGx1bTNkMTFwcy5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bh
c3N0aHJvdWdobHVtYWxwaGEzZDExcHMuaCIKIAorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Jlc29sdmVkZXB0aDExX3BzLmgiCisjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcmVzb2x2ZWRl
cHRoc3RlbmNpbDExX3BzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L3NoYWRlcnMvY29tcGlsZWQvcmVzb2x2ZWRlcHRoc3RlbmNpbDExX3ZzLmgiCisjaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcmVzb2x2ZXN0ZW5j
aWwxMV9wcy5oIgorCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRl
cnMvY29tcGlsZWQvc3dpenpsZWYyZHBzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvc3dpenpsZWkyZHBzLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvc3dpenpsZXVpMmRwcy5o
IgpAQCAtNjAsNjIgKzc4LDMyMyBAQAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9zaGFkZXJzL2NvbXBpbGVkL3N3aXp6bGVpMmRhcnJheXBzLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvc3dpenpsZXVpMmRhcnJh
eXBzLmgiCiAKLW5hbWVzcGFjZSByeAordm9pZCBTdHJldGNoZWRCbGl0TmVhcmVzdF9Sb3dCeVJv
dyhjb25zdCBnbDo6Qm94ICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6Qm94ICZkZXN0QXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmY2xpcHBlZERlc3RBcmVhLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc291cmNlU2l6
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJj
ZVJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgZGVzdFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgcGl4ZWxTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
aW50OF90ICpzb3VyY2VEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50OF90ICpkZXN0RGF0YSkKK3sKKyAgICBpbnQgc3JjSGVpZ2h0U3ViT25lID0gKHNvdXJjZUFy
ZWEuaGVpZ2h0IC0gMSk7CisgICAgc2l6ZV90IGNvcHlTaXplICAgICA9IHBpeGVsU2l6ZSAqIGRl
c3RBcmVhLndpZHRoOworICAgIHNpemVfdCBzcmNPZmZzZXQgICAgPSBzb3VyY2VBcmVhLnggKiBw
aXhlbFNpemU7CisgICAgc2l6ZV90IGRlc3RPZmZzZXQgICA9IGRlc3RBcmVhLnggKiBwaXhlbFNp
emU7CisKKyAgICBmb3IgKGludCB5ID0gY2xpcHBlZERlc3RBcmVhLnk7IHkgPCBjbGlwcGVkRGVz
dEFyZWEueSArIGNsaXBwZWREZXN0QXJlYS5oZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIGZs
b2F0IHlQZXJjID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHkgLSBkZXN0QXJlYS55KSAvIChkZXN0QXJl
YS5oZWlnaHQgLSAxKTsKKworICAgICAgICAvLyBJbnRlcnBvbGF0ZSB1c2luZyB0aGUgb3JpZ2lu
YWwgc291cmNlIHJlY3RhbmdsZSB0byBkZXRlcm1pbmUgd2hpY2ggcm93IHRvIHNhbXBsZSBmcm9t
CisgICAgICAgIC8vIHdoaWxlIGNsYW1waW5nIHRvIHRoZSBlZGdlcworICAgICAgICB1bnNpZ25l
ZCBpbnQgcmVhZFJvdyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oCisgICAgICAgICAgICBn
bDo6Y2xhbXAoc291cmNlQXJlYS55ICsgZmxvb3IoeVBlcmMgKiBzcmNIZWlnaHRTdWJPbmUgKyAw
LjVmKSwgMCwgc3JjSGVpZ2h0U3ViT25lKSk7CisgICAgICAgIHVuc2lnbmVkIGludCB3cml0ZVJv
dyA9IHk7CisKKyAgICAgICAgY29uc3QgdWludDhfdCAqc291cmNlUm93ID0gc291cmNlRGF0YSAr
IHJlYWRSb3cgKiBzb3VyY2VSb3dQaXRjaCArIHNyY09mZnNldDsKKyAgICAgICAgdWludDhfdCAq
ZGVzdFJvdyAgICAgICAgID0gZGVzdERhdGEgKyB3cml0ZVJvdyAqIGRlc3RSb3dQaXRjaCArIGRl
c3RPZmZzZXQ7CisgICAgICAgIG1lbWNweShkZXN0Um93LCBzb3VyY2VSb3csIGNvcHlTaXplKTsK
KyAgICB9Cit9CisKK3ZvaWQgU3RyZXRjaGVkQmxpdE5lYXJlc3RfUGl4ZWxCeVBpeGVsKGNvbnN0
IGdsOjpCb3ggJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6Qm94ICZkZXN0QXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmNsaXBwZWREZXN0QXJlYSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzb3Vy
Y2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IHNvdXJjZVJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IGRlc3RSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB0cmRpZmZfdCByZWFkT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHdyaXRlT2Zmc2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNvcHlTaXplLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNyY1BpeGVsU3RyaWRlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlc3RQaXhlbFN0cmlkZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNvdXJj
ZURhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpk
ZXN0RGF0YSkKK3sKKyAgICBhdXRvIHhNYXggPSBjbGlwcGVkRGVzdEFyZWEueCArIGNsaXBwZWRE
ZXN0QXJlYS53aWR0aDsKKyAgICBhdXRvIHlNYXggPSBjbGlwcGVkRGVzdEFyZWEueSArIGNsaXBw
ZWREZXN0QXJlYS5oZWlnaHQ7CisKKyAgICBmb3IgKGludCB3cml0ZVJvdyA9IGNsaXBwZWREZXN0
QXJlYS55OyB3cml0ZVJvdyA8IHlNYXg7IHdyaXRlUm93KyspCisgICAgeworICAgICAgICAvLyBJ
bnRlcnBvbGF0ZSB1c2luZyB0aGUgb3JpZ2luYWwgc291cmNlIHJlY3RhbmdsZSB0byBkZXRlcm1p
bmUgd2hpY2ggcm93IHRvIHNhbXBsZSBmcm9tCisgICAgICAgIC8vIHdoaWxlIGNsYW1waW5nIHRv
IHRoZSBlZGdlcworICAgICAgICBmbG9hdCB5UGVyYyAgICA9IHN0YXRpY19jYXN0PGZsb2F0Pih3
cml0ZVJvdyAtIGRlc3RBcmVhLnkpIC8gKGRlc3RBcmVhLmhlaWdodCAtIDEpOworICAgICAgICBm
bG9hdCB5Um91bmRlZCA9IGZsb29yKHlQZXJjICogKHNvdXJjZUFyZWEuaGVpZ2h0IC0gMSkgKyAw
LjVmKTsKKyAgICAgICAgdW5zaWduZWQgaW50IHJlYWRSb3cgPQorICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgaW50PihnbDo6Y2xhbXAoc291cmNlQXJlYS55ICsgeVJvdW5kZWQsIDAs
IHNvdXJjZVNpemUuaGVpZ2h0IC0gMSkpOworCisgICAgICAgIGZvciAoaW50IHdyaXRlQ29sdW1u
ID0gY2xpcHBlZERlc3RBcmVhLng7IHdyaXRlQ29sdW1uIDwgeE1heDsgd3JpdGVDb2x1bW4rKykK
KyAgICAgICAgeworICAgICAgICAgICAgLy8gSW50ZXJwb2xhdGUgdGhlIG9yaWdpbmFsIHNvdXJj
ZSByZWN0YW5nbGUgdG8gZGV0ZXJtaW5lIHdoaWNoIGNvbHVtbiB0byBzYW1wbGUKKyAgICAgICAg
ICAgIC8vIGZyb20gd2hpbGUgY2xhbXBpbmcgdG8gdGhlIGVkZ2VzCisgICAgICAgICAgICBmbG9h
dCB4UGVyYyAgICA9IHN0YXRpY19jYXN0PGZsb2F0Pih3cml0ZUNvbHVtbiAtIGRlc3RBcmVhLngp
IC8gKGRlc3RBcmVhLndpZHRoIC0gMSk7CisgICAgICAgICAgICBmbG9hdCB4Um91bmRlZCA9IGZs
b29yKHhQZXJjICogKHNvdXJjZUFyZWEud2lkdGggLSAxKSArIDAuNWYpOworICAgICAgICAgICAg
dW5zaWduZWQgaW50IHJlYWRDb2x1bW4gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KAorICAg
ICAgICAgICAgICAgIGdsOjpjbGFtcChzb3VyY2VBcmVhLnggKyB4Um91bmRlZCwgMCwgc291cmNl
U2l6ZS5oZWlnaHQgLSAxKSk7CisKKyAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNvdXJjZVBp
eGVsID0KKyAgICAgICAgICAgICAgICBzb3VyY2VEYXRhICsgcmVhZFJvdyAqIHNvdXJjZVJvd1Bp
dGNoICsgcmVhZENvbHVtbiAqIHNyY1BpeGVsU3RyaWRlICsgcmVhZE9mZnNldDsKKworICAgICAg
ICAgICAgdWludDhfdCAqZGVzdFBpeGVsID0KKyAgICAgICAgICAgICAgICBkZXN0RGF0YSArIHdy
aXRlUm93ICogZGVzdFJvd1BpdGNoICsgd3JpdGVDb2x1bW4gKiBkZXN0UGl4ZWxTdHJpZGUgKyB3
cml0ZU9mZnNldDsKKworICAgICAgICAgICAgbWVtY3B5KGRlc3RQaXhlbCwgc291cmNlUGl4ZWws
IGNvcHlTaXplKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBTdHJldGNoZWRCbGl0TmVh
cmVzdChjb25zdCBnbDo6Qm94ICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6Qm94ICZkZXN0QXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OlJlY3RhbmdsZSAmY2xpcFJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpFeHRlbnRzICZzb3VyY2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgc291cmNlUm93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBkZXN0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRp
ZmZfdCByZWFkT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgd3Jp
dGVPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb3B5U2l6ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNyY1BpeGVsU3RyaWRlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgZGVzdFBpeGVsU3RyaWRlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB1aW50OF90ICpzb3VyY2VEYXRhLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50OF90ICpkZXN0RGF0YSkKIHsKKyAgICBnbDo6UmVjdGFuZ2xlIGNsaXBwZWRE
ZXN0QXJlYShkZXN0QXJlYS54LCBkZXN0QXJlYS55LCBkZXN0QXJlYS53aWR0aCwgZGVzdEFyZWEu
aGVpZ2h0KTsKKyAgICBnbDo6Q2xpcFJlY3RhbmdsZShjbGlwcGVkRGVzdEFyZWEsIGNsaXBSZWN0
LCAmY2xpcHBlZERlc3RBcmVhKTsKIAotbmFtZXNwYWNlCisgICAgLy8gRGV0ZXJtaW5lIGlmIGVu
dGlyZSByb3dzIGNhbiBiZSBjb3BpZWQgYXQgb25jZSBpbnN0ZWFkIG9mIGVhY2ggaW5kaXZpZHVh
bCBwaXhlbC4gVGhlcmUKKyAgICAvLyBtdXN0IGJlIG5vIG91dCBvZiBib3VuZHMgbG9va3Vwcywg
d2hvbGUgcm93cyBjb3BpZXMsIGFuZCBubyBzY2FsZS4KKyAgICBpZiAoc291cmNlQXJlYS53aWR0
aCA9PSBjbGlwcGVkRGVzdEFyZWEud2lkdGggJiYgc291cmNlQXJlYS54ID49IDAgJiYKKyAgICAg
ICAgc291cmNlQXJlYS54ICsgc291cmNlQXJlYS53aWR0aCA8PSBzb3VyY2VTaXplLndpZHRoICYm
IGNvcHlTaXplID09IHNyY1BpeGVsU3RyaWRlICYmCisgICAgICAgIGNvcHlTaXplID09IGRlc3RQ
aXhlbFN0cmlkZSkKKyAgICB7CisgICAgICAgIFN0cmV0Y2hlZEJsaXROZWFyZXN0X1Jvd0J5Um93
KHNvdXJjZUFyZWEsIGRlc3RBcmVhLCBjbGlwcGVkRGVzdEFyZWEsIHNvdXJjZVNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVJvd1BpdGNoLCBkZXN0Um93
UGl0Y2gsIHNyY1BpeGVsU3RyaWRlLCBzb3VyY2VEYXRhLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXN0RGF0YSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAg
ICAgIFN0cmV0Y2hlZEJsaXROZWFyZXN0X1BpeGVsQnlQaXhlbChzb3VyY2VBcmVhLCBkZXN0QXJl
YSwgY2xpcHBlZERlc3RBcmVhLCBzb3VyY2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc291cmNlUm93UGl0Y2gsIGRlc3RSb3dQaXRjaCwgcmVhZE9mZnNl
dCwgd3JpdGVPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb3B5U2l6ZSwgc3JjUGl4ZWxTdHJpZGUsIGRlc3RQaXhlbFN0cmlkZSwgc291cmNlRGF0YSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3REYXRhKTsKKyAg
ICB9Cit9CisKK3VzaW5nIERlcHRoU3RlbmNpbExvYWRlciA9IHZvaWQoY29uc3QgZmxvYXQgKiwg
dWludDhfdCAqKTsKKwordm9pZCBMb2FkRGVwdGgxNihjb25zdCBmbG9hdCAqc291cmNlLCB1aW50
OF90ICpkZXN0KQoreworICAgIHVpbnQzMl90IGNvbnZlcnRlZERlcHRoID0gZ2w6OmZsb2F0VG9O
b3JtYWxpemVkPDE2LCB1aW50MzJfdD4oc291cmNlWzBdKTsKKyAgICBtZW1jcHkoZGVzdCwgJmNv
bnZlcnRlZERlcHRoLCAydSk7Cit9CisKK3ZvaWQgTG9hZERlcHRoMjQoY29uc3QgZmxvYXQgKnNv
dXJjZSwgdWludDhfdCAqZGVzdCkKK3sKKyAgICB1aW50MzJfdCBjb252ZXJ0ZWREZXB0aCA9IGds
OjpmbG9hdFRvTm9ybWFsaXplZDwyNCwgdWludDMyX3Q+KHNvdXJjZVswXSk7CisgICAgbWVtY3B5
KGRlc3QsICZjb252ZXJ0ZWREZXB0aCwgM3UpOworfQorCit2b2lkIExvYWRTdGVuY2lsSGVscGVy
KGNvbnN0IGZsb2F0ICpzb3VyY2UsIHVpbnQ4X3QgKmRlc3QpCiB7CisgICAgdWludDMyX3QgY29u
dmVydGVkU3RlbmNpbCA9IGdsOjpnZXRTaGlmdGVkRGF0YTw4LCAwPihzdGF0aWNfY2FzdDx1aW50
MzJfdD4oc291cmNlWzFdKSk7CisgICAgbWVtY3B5KGRlc3QsICZjb252ZXJ0ZWRTdGVuY2lsLCAx
dSk7Cit9CiAKLURYR0lfRk9STUFUIEdldFRleHR1cmVGb3JtYXQoSUQzRDExUmVzb3VyY2UgKnJl
c291cmNlKQordm9pZCBMb2FkU3RlbmNpbDgoY29uc3QgZmxvYXQgKnNvdXJjZSwgdWludDhfdCAq
ZGVzdCkKIHsKLSAgICBJRDNEMTFUZXh0dXJlMkQgKnRleHR1cmUgPSBkM2QxMTo6RHluYW1pY0Nh
c3RDb21PYmplY3Q8SUQzRDExVGV4dHVyZTJEPihyZXNvdXJjZSk7Ci0gICAgaWYgKCF0ZXh0dXJl
KQorICAgIC8vIFNURU5DSUxfSU5ERVg4IGlzIGltcGxlbWVudGVkIHdpdGggRDI0UzgsIHdpdGgg
dGhlIGRlcHRoIGJpdHMgdW51c2VkLiBXcml0ZXMgemVybyBmb3Igc2FmZXR5LgorICAgIGZsb2F0
IHplcm8gPSAwLjBmOworICAgIExvYWREZXB0aDI0KCZ6ZXJvLCAmZGVzdFswXSk7CisgICAgTG9h
ZFN0ZW5jaWxIZWxwZXIoc291cmNlLCAmZGVzdFszXSk7Cit9CisKK3ZvaWQgTG9hZERlcHRoMjRT
dGVuY2lsOChjb25zdCBmbG9hdCAqc291cmNlLCB1aW50OF90ICpkZXN0KQoreworICAgIExvYWRE
ZXB0aDI0KHNvdXJjZSwgJmRlc3RbMF0pOworICAgIExvYWRTdGVuY2lsSGVscGVyKHNvdXJjZSwg
JmRlc3RbM10pOworfQorCit2b2lkIExvYWREZXB0aDMyRihjb25zdCBmbG9hdCAqc291cmNlLCB1
aW50OF90ICpkZXN0KQoreworICAgIG1lbWNweShkZXN0LCBzb3VyY2UsIHNpemVvZihmbG9hdCkp
OworfQorCit2b2lkIExvYWREZXB0aDMyRlN0ZW5jaWw4KGNvbnN0IGZsb2F0ICpzb3VyY2UsIHVp
bnQ4X3QgKmRlc3QpCit7CisgICAgTG9hZERlcHRoMzJGKHNvdXJjZSwgJmRlc3RbMF0pOworICAg
IExvYWRTdGVuY2lsSGVscGVyKHNvdXJjZSwgJmRlc3RbNF0pOworfQorCit0ZW1wbGF0ZSA8RGVw
dGhTdGVuY2lsTG9hZGVyIGxvYWRlcj4KK3ZvaWQgQ29weURlcHRoU3RlbmNpbChjb25zdCBnbDo6
Qm94ICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmRl
c3RBcmVhLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmNsaXBw
ZWREZXN0QXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc291
cmNlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlUm93UGl0
Y2gsCisgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRlc3RSb3dQaXRjaCwKKyAg
ICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3QgcmVhZE9mZnNldCwKKyAgICAgICAgICAgICAg
ICAgICAgICBwdHJkaWZmX3Qgd3JpdGVPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGNvcHlTaXplLAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzcmNQaXhlbFN0cmlk
ZSwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVzdFBpeGVsU3RyaWRlLAorICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNvdXJjZURhdGEsCisgICAgICAgICAgICAg
ICAgICAgICAgdWludDhfdCAqZGVzdERhdGEpCit7CisgICAgLy8gTm8gc3RyZXRjaGluZyBvciBz
dWJyZWdpb25zIGFyZSBzdXBwb3J0ZWQsIG9ubHkgZnVsbCBibGl0cy4KKyAgICBBU1NFUlQoc291
cmNlQXJlYSA9PSBkZXN0QXJlYSk7CisgICAgQVNTRVJUKHNvdXJjZVNpemUud2lkdGggPT0gc291
cmNlQXJlYS53aWR0aCAmJiBzb3VyY2VTaXplLmhlaWdodCA9PSBzb3VyY2VBcmVhLmhlaWdodCAm
JgorICAgICAgICAgICBzb3VyY2VTaXplLmRlcHRoID09IDEpOworICAgIEFTU0VSVChjbGlwcGVk
RGVzdEFyZWEud2lkdGggPT0gc291cmNlU2l6ZS53aWR0aCAmJgorICAgICAgICAgICBjbGlwcGVk
RGVzdEFyZWEuaGVpZ2h0ID09IHNvdXJjZVNpemUuaGVpZ2h0KTsKKyAgICBBU1NFUlQocmVhZE9m
ZnNldCA9PSAwICYmIHdyaXRlT2Zmc2V0ID09IDApOworICAgIEFTU0VSVChkZXN0QXJlYS54ID09
IDAgJiYgZGVzdEFyZWEueSA9PSAwKTsKKworICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IGRl
c3RBcmVhLmhlaWdodDsgKytyb3cpCiAgICAgewotICAgICAgICByZXR1cm4gRFhHSV9GT1JNQVRf
VU5LTk9XTjsKLSAgICB9CisgICAgICAgIGZvciAoaW50IGNvbHVtbiA9IDA7IGNvbHVtbiA8IGRl
c3RBcmVhLndpZHRoOyArK2NvbHVtbikKKyAgICAgICAgeworICAgICAgICAgICAgcHRyZGlmZl90
IG9mZnNldCAgICAgICAgID0gcm93ICogc291cmNlUm93UGl0Y2ggKyBjb2x1bW4gKiBzcmNQaXhl
bFN0cmlkZTsKKyAgICAgICAgICAgIGNvbnN0IGZsb2F0ICpzb3VyY2VQaXhlbCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgZmxvYXQgKj4oc291cmNlRGF0YSArIG9mZnNldCk7CiAKLSAgICBEM0Qx
MV9URVhUVVJFMkRfREVTQyBkZXNjOwotICAgIHRleHR1cmUtPkdldERlc2MoJmRlc2MpOworICAg
ICAgICAgICAgdWludDhfdCAqZGVzdFBpeGVsID0gZGVzdERhdGEgKyByb3cgKiBkZXN0Um93UGl0
Y2ggKyBjb2x1bW4gKiBkZXN0UGl4ZWxTdHJpZGU7CiAKLSAgICBTYWZlUmVsZWFzZSh0ZXh0dXJl
KTsKKyAgICAgICAgICAgIGxvYWRlcihzb3VyY2VQaXhlbCwgZGVzdFBpeGVsKTsKKyAgICAgICAg
fQorICAgIH0KK30KIAotICAgIHJldHVybiBkZXNjLkZvcm1hdDsKK3ZvaWQgRGVwdGgzMkZTdGVu
Y2lsOFRvRGVwdGgzMkYoY29uc3QgZmxvYXQgKnNvdXJjZSwgZmxvYXQgKmRlc3QpCit7CisgICAg
KmRlc3QgPSAqc291cmNlOwogfQogCi1JRDNEMTFSZXNvdXJjZSAqQ3JlYXRlU3RhZ2luZ1RleHR1
cmUoSUQzRDExRGV2aWNlICpkZXZpY2UsIElEM0QxMURldmljZUNvbnRleHQgKmNvbnRleHQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUQzRDExUmVzb3VyY2UgKnNvdXJj
ZSwgdW5zaWduZWQgaW50IHN1YnJlc291cmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLCB1bnNpZ25lZCBpbnQgY3B1QWNjZXNz
RmxhZ3MpCit2b2lkIERlcHRoMjRTdGVuY2lsOFRvRGVwdGgzMkYoY29uc3QgdWludDMyX3QgKnNv
dXJjZSwgZmxvYXQgKmRlc3QpCiB7Ci0gICAgRDNEMTFfVEVYVFVSRTJEX0RFU0Mgc3RhZ2luZ0Rl
c2M7Ci0gICAgc3RhZ2luZ0Rlc2MuV2lkdGggPSBzaXplLndpZHRoOwotICAgIHN0YWdpbmdEZXNj
LkhlaWdodCA9IHNpemUuaGVpZ2h0OwotICAgIHN0YWdpbmdEZXNjLk1pcExldmVscyA9IDE7Ci0g
ICAgc3RhZ2luZ0Rlc2MuQXJyYXlTaXplID0gMTsKLSAgICBzdGFnaW5nRGVzYy5Gb3JtYXQgPSBH
ZXRUZXh0dXJlRm9ybWF0KHNvdXJjZSk7Ci0gICAgc3RhZ2luZ0Rlc2MuU2FtcGxlRGVzYy5Db3Vu
dCA9IDE7Ci0gICAgc3RhZ2luZ0Rlc2MuU2FtcGxlRGVzYy5RdWFsaXR5ID0gMDsKLSAgICBzdGFn
aW5nRGVzYy5Vc2FnZSA9IEQzRDExX1VTQUdFX1NUQUdJTkc7Ci0gICAgc3RhZ2luZ0Rlc2MuQ1BV
QWNjZXNzRmxhZ3MgPSBjcHVBY2Nlc3NGbGFnczsKLSAgICBzdGFnaW5nRGVzYy5NaXNjRmxhZ3Mg
PSAwOwotICAgIHN0YWdpbmdEZXNjLkJpbmRGbGFncyA9IDA7CisgICAgdWludDMyX3Qgbm9ybURl
cHRoID0gc291cmNlWzBdICYgMHgwMEZGRkZGRjsKKyAgICBmbG9hdCBmbG9hdERlcHRoICAgPSBn
bDo6bm9ybWFsaXplZFRvRmxvYXQ8MjQ+KG5vcm1EZXB0aCk7CisgICAgKmRlc3QgICAgICAgICAg
ICAgID0gZmxvYXREZXB0aDsKK30KKwordm9pZCBCbGl0RDI0UzhUb0QzMkYoY29uc3QgZ2w6OkJv
eCAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmRlc3RB
cmVhLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmY2xpcHBlZERl
c3RBcmVhLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNvdXJjZVNp
emUsCisgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlUm93UGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGVzdFJvd1BpdGNoLAorICAgICAgICAg
ICAgICAgICAgICAgcHRyZGlmZl90IHJlYWRPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICBw
dHJkaWZmX3Qgd3JpdGVPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY29weVNp
emUsCisgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc3JjUGl4ZWxTdHJpZGUsCisgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgZGVzdFBpeGVsU3RyaWRlLAorICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgdWludDhfdCAqc291cmNlRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgIHVpbnQ4
X3QgKmRlc3REYXRhKQoreworICAgIC8vIE5vIHN0cmV0Y2hpbmcgb3Igc3VicmVnaW9ucyBhcmUg
c3VwcG9ydGVkLCBvbmx5IGZ1bGwgYmxpdHMuCisgICAgQVNTRVJUKHNvdXJjZUFyZWEgPT0gZGVz
dEFyZWEpOworICAgIEFTU0VSVChzb3VyY2VTaXplLndpZHRoID09IHNvdXJjZUFyZWEud2lkdGgg
JiYgc291cmNlU2l6ZS5oZWlnaHQgPT0gc291cmNlQXJlYS5oZWlnaHQgJiYKKyAgICAgICAgICAg
c291cmNlU2l6ZS5kZXB0aCA9PSAxKTsKKyAgICBBU1NFUlQoY2xpcHBlZERlc3RBcmVhLndpZHRo
ID09IHNvdXJjZVNpemUud2lkdGggJiYKKyAgICAgICAgICAgY2xpcHBlZERlc3RBcmVhLmhlaWdo
dCA9PSBzb3VyY2VTaXplLmhlaWdodCk7CisgICAgQVNTRVJUKHJlYWRPZmZzZXQgPT0gMCAmJiB3
cml0ZU9mZnNldCA9PSAwKTsKKyAgICBBU1NFUlQoZGVzdEFyZWEueCA9PSAwICYmIGRlc3RBcmVh
LnkgPT0gMCk7CiAKLSAgICBJRDNEMTFUZXh0dXJlMkQgKnN0YWdpbmdUZXh0dXJlID0gbnVsbHB0
cjsKLSAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlVGV4dHVyZTJEKCZzdGFnaW5n
RGVzYywgbnVsbHB0ciwgJnN0YWdpbmdUZXh0dXJlKTsKLSAgICBpZiAoRkFJTEVEKHJlc3VsdCkp
CisgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgZGVzdEFyZWEuaGVpZ2h0OyArK3JvdykKICAg
ICB7Ci0gICAgICAgIEVSUigiRmFpbGVkIHRvIGNyZWF0ZSBzdGFnaW5nIHRleHR1cmUgZm9yIGRl
cHRoIHN0ZW5jaWwgYmxpdC4gSFJFU1VMVDogMHglWC4iLCByZXN1bHQpOwotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgZm9yIChpbnQgY29sdW1uID0gMDsgY29sdW1uIDwgZGVzdEFy
ZWEud2lkdGg7ICsrY29sdW1uKQorICAgICAgICB7CisgICAgICAgICAgICBwdHJkaWZmX3Qgb2Zm
c2V0ICAgICAgICAgICAgPSByb3cgKiBzb3VyY2VSb3dQaXRjaCArIGNvbHVtbiAqIHNyY1BpeGVs
U3RyaWRlOworICAgICAgICAgICAgY29uc3QgdWludDMyX3QgKnNvdXJjZVBpeGVsID0gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCAqPihzb3VyY2VEYXRhICsgb2Zmc2V0KTsKKworICAg
ICAgICAgICAgZmxvYXQgKmRlc3RQaXhlbCA9CisgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDxmbG9hdCAqPihkZXN0RGF0YSArIHJvdyAqIGRlc3RSb3dQaXRjaCArIGNvbHVtbiAqIGRl
c3RQaXhlbFN0cmlkZSk7CisKKyAgICAgICAgICAgIERlcHRoMjRTdGVuY2lsOFRvRGVwdGgzMkYo
c291cmNlUGl4ZWwsIGRlc3RQaXhlbCk7CisgICAgICAgIH0KICAgICB9Cit9CiAKLSAgICBjb250
ZXh0LT5Db3B5U3VicmVzb3VyY2VSZWdpb24oc3RhZ2luZ1RleHR1cmUsIDAsIDAsIDAsIDAsIHNv
dXJjZSwgc3VicmVzb3VyY2UsIG51bGxwdHIpOwordm9pZCBCbGl0RDMyRlM4VG9EMzJGKGNvbnN0
IGdsOjpCb3ggJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJv
eCAmZGVzdEFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAm
Y2xpcHBlZERlc3RBcmVhLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRz
ICZzb3VyY2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VS
b3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGVzdFJvd1BpdGNo
LAorICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCByZWFkT2Zmc2V0LAorICAgICAgICAg
ICAgICAgICAgICAgIHB0cmRpZmZfdCB3cml0ZU9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgY29weVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNyY1BpeGVs
U3RyaWRlLAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXN0UGl4ZWxTdHJpZGUsCisg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqc291cmNlRGF0YSwKKyAgICAgICAg
ICAgICAgICAgICAgICB1aW50OF90ICpkZXN0RGF0YSkKK3sKKyAgICAvLyBObyBzdHJldGNoaW5n
IG9yIHN1YnJlZ2lvbnMgYXJlIHN1cHBvcnRlZCwgb25seSBmdWxsIGJsaXRzLgorICAgIEFTU0VS
VChzb3VyY2VBcmVhID09IGRlc3RBcmVhKTsKKyAgICBBU1NFUlQoc291cmNlU2l6ZS53aWR0aCA9
PSBzb3VyY2VBcmVhLndpZHRoICYmIHNvdXJjZVNpemUuaGVpZ2h0ID09IHNvdXJjZUFyZWEuaGVp
Z2h0ICYmCisgICAgICAgICAgIHNvdXJjZVNpemUuZGVwdGggPT0gMSk7CisgICAgQVNTRVJUKGNs
aXBwZWREZXN0QXJlYS53aWR0aCA9PSBzb3VyY2VTaXplLndpZHRoICYmCisgICAgICAgICAgIGNs
aXBwZWREZXN0QXJlYS5oZWlnaHQgPT0gc291cmNlU2l6ZS5oZWlnaHQpOworICAgIEFTU0VSVChy
ZWFkT2Zmc2V0ID09IDAgJiYgd3JpdGVPZmZzZXQgPT0gMCk7CisgICAgQVNTRVJUKGRlc3RBcmVh
LnggPT0gMCAmJiBkZXN0QXJlYS55ID09IDApOworCisgICAgZm9yIChpbnQgcm93ID0gMDsgcm93
IDwgZGVzdEFyZWEuaGVpZ2h0OyArK3JvdykKKyAgICB7CisgICAgICAgIGZvciAoaW50IGNvbHVt
biA9IDA7IGNvbHVtbiA8IGRlc3RBcmVhLndpZHRoOyArK2NvbHVtbikKKyAgICAgICAgeworICAg
ICAgICAgICAgcHRyZGlmZl90IG9mZnNldCAgICAgICAgID0gcm93ICogc291cmNlUm93UGl0Y2gg
KyBjb2x1bW4gKiBzcmNQaXhlbFN0cmlkZTsKKyAgICAgICAgICAgIGNvbnN0IGZsb2F0ICpzb3Vy
Y2VQaXhlbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQgKj4oc291cmNlRGF0YSArIG9m
ZnNldCk7CisgICAgICAgICAgICBmbG9hdCAqZGVzdFBpeGVsID0KKyAgICAgICAgICAgICAgICBy
ZWludGVycHJldF9jYXN0PGZsb2F0ICo+KGRlc3REYXRhICsgcm93ICogZGVzdFJvd1BpdGNoICsg
Y29sdW1uICogZGVzdFBpeGVsU3RyaWRlKTsKKworICAgICAgICAgICAgRGVwdGgzMkZTdGVuY2ls
OFRvRGVwdGgzMkYoc291cmNlUGl4ZWwsIGRlc3RQaXhlbCk7CisgICAgICAgIH0KKyAgICB9Cit9
CiAKLSAgICByZXR1cm4gc3RhZ2luZ1RleHR1cmU7CitCbGl0MTE6OkJsaXRDb252ZXJ0RnVuY3Rp
b24gKkdldENvcHlEZXB0aFN0ZW5jaWxGdW5jdGlvbihHTGVudW0gaW50ZXJuYWxGb3JtYXQpCit7
CisgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfREVQ
VEhfQ09NUE9ORU5UMTY6CisgICAgICAgICAgICByZXR1cm4gJkNvcHlEZXB0aFN0ZW5jaWw8TG9h
ZERlcHRoMTY+OworICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDI0OgorICAgICAgICAg
ICAgcmV0dXJuICZDb3B5RGVwdGhTdGVuY2lsPExvYWREZXB0aDI0PjsKKyAgICAgICAgY2FzZSBH
TF9ERVBUSF9DT01QT05FTlQzMkY6CisgICAgICAgICAgICByZXR1cm4gJkNvcHlEZXB0aFN0ZW5j
aWw8TG9hZERlcHRoMzJGPjsKKyAgICAgICAgY2FzZSBHTF9TVEVOQ0lMX0lOREVYODoKKyAgICAg
ICAgICAgIHJldHVybiAmQ29weURlcHRoU3RlbmNpbDxMb2FkU3RlbmNpbDg+OworICAgICAgICBj
YXNlIEdMX0RFUFRIMjRfU1RFTkNJTDg6CisgICAgICAgICAgICByZXR1cm4gJkNvcHlEZXB0aFN0
ZW5jaWw8TG9hZERlcHRoMjRTdGVuY2lsOD47CisgICAgICAgIGNhc2UgR0xfREVQVEgzMkZfU1RF
TkNJTDg6CisgICAgICAgICAgICByZXR1cm4gJkNvcHlEZXB0aFN0ZW5jaWw8TG9hZERlcHRoMzJG
U3RlbmNpbDg+OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KIH0KIAotaW5saW5lIHZvaWQgR2Vu
ZXJhdGVWZXJ0ZXhDb29yZHMoY29uc3QgZ2w6OkJveCAmc291cmNlQXJlYSwgY29uc3QgZ2w6OkV4
dGVudHMgJnNvdXJjZVNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6Qm94ICZkZXN0QXJlYSwgY29uc3QgZ2w6OkV4dGVudHMgJmRlc3RTaXplLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgKngxLCBmbG9hdCAqeTEsIGZsb2F0ICp4
MiwgZmxvYXQgKnkyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgKnUx
LCBmbG9hdCAqdjEsIGZsb2F0ICp1MiwgZmxvYXQgKnYyKQoraW5saW5lIHZvaWQgR2VuZXJhdGVW
ZXJ0ZXhDb29yZHMoY29uc3QgZ2w6OkJveCAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzb3VyY2VTaXplLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmZGVzdEFyZWEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmZGVzdFNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCAqeDEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbG9hdCAqeTEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbG9hdCAqeDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9h
dCAqeTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCAqdTEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCAqdjEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbG9hdCAqdTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmbG9hdCAqdjIpCiB7CiAgICAgKngxID0gKGRlc3RBcmVhLnggLyBmbG9hdChkZXN0U2l6
ZS53aWR0aCkpICogMi4wZiAtIDEuMGY7CiAgICAgKnkxID0gKChkZXN0U2l6ZS5oZWlnaHQgLSBk
ZXN0QXJlYS55IC0gZGVzdEFyZWEuaGVpZ2h0KSAvIGZsb2F0KGRlc3RTaXplLmhlaWdodCkpICog
Mi4wZiAtIDEuMGY7CkBAIC0xMjgsMzcgKzQwNyw0OSBAQCBpbmxpbmUgdm9pZCBHZW5lcmF0ZVZl
cnRleENvb3Jkcyhjb25zdCBnCiAgICAgKnYyID0gKHNvdXJjZUFyZWEueSArIHNvdXJjZUFyZWEu
aGVpZ2h0KSAvIGZsb2F0KHNvdXJjZVNpemUuaGVpZ2h0KTsKIH0KIAotdm9pZCBXcml0ZTJEVmVy
dGljZXMoY29uc3QgZ2w6OkJveCAmc291cmNlQXJlYSwgY29uc3QgZ2w6OkV4dGVudHMgJnNvdXJj
ZVNpemUsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZkZXN0QXJlYSwgY29u
c3QgZ2w6OkV4dGVudHMgJmRlc3RTaXplLAotICAgICAgICAgICAgICAgICAgICAgdm9pZCAqb3V0
VmVydGljZXMsIHVuc2lnbmVkIGludCAqb3V0U3RyaWRlLCB1bnNpZ25lZCBpbnQgKm91dFZlcnRl
eENvdW50LAordm9pZCBXcml0ZTJEVmVydGljZXMoY29uc3QgZ2w6OkJveCAmc291cmNlQXJlYSwK
KyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzb3VyY2VTaXplLAorICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmZGVzdEFyZWEsCisgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmZGVzdFNpemUsCisgICAgICAgICAgICAgICAgICAg
ICB2b2lkICpvdXRWZXJ0aWNlcywKKyAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAq
b3V0U3RyaWRlLAorICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpvdXRWZXJ0ZXhD
b3VudCwKICAgICAgICAgICAgICAgICAgICAgIEQzRDExX1BSSU1JVElWRV9UT1BPTE9HWSAqb3V0
VG9wb2xvZ3kpCiB7CiAgICAgZmxvYXQgeDEsIHkxLCB4MiwgeTIsIHUxLCB2MSwgdTIsIHYyOwot
ICAgIEdlbmVyYXRlVmVydGV4Q29vcmRzKHNvdXJjZUFyZWEsIHNvdXJjZVNpemUsIGRlc3RBcmVh
LCBkZXN0U2l6ZSwgJngxLCAmeTEsICZ4MiwgJnkyLCAmdTEsICZ2MSwgJnUyLCAmdjIpOworICAg
IEdlbmVyYXRlVmVydGV4Q29vcmRzKHNvdXJjZUFyZWEsIHNvdXJjZVNpemUsIGRlc3RBcmVhLCBk
ZXN0U2l6ZSwgJngxLCAmeTEsICZ4MiwgJnkyLCAmdTEsICZ2MSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAmdTIsICZ2Mik7CiAKLSAgICBkM2QxMTo6UG9zaXRpb25UZXhDb29yZFZlcnRleCAq
dmVydGljZXMgPSBzdGF0aWNfY2FzdDxkM2QxMTo6UG9zaXRpb25UZXhDb29yZFZlcnRleCo+KG91
dFZlcnRpY2VzKTsKKyAgICBkM2QxMTo6UG9zaXRpb25UZXhDb29yZFZlcnRleCAqdmVydGljZXMg
PQorICAgICAgICBzdGF0aWNfY2FzdDxkM2QxMTo6UG9zaXRpb25UZXhDb29yZFZlcnRleCAqPihv
dXRWZXJ0aWNlcyk7CiAKICAgICBkM2QxMTo6U2V0UG9zaXRpb25UZXhDb29yZFZlcnRleCgmdmVy
dGljZXNbMF0sIHgxLCB5MSwgdTEsIHYyKTsKICAgICBkM2QxMTo6U2V0UG9zaXRpb25UZXhDb29y
ZFZlcnRleCgmdmVydGljZXNbMV0sIHgxLCB5MiwgdTEsIHYxKTsKICAgICBkM2QxMTo6U2V0UG9z
aXRpb25UZXhDb29yZFZlcnRleCgmdmVydGljZXNbMl0sIHgyLCB5MSwgdTIsIHYyKTsKICAgICBk
M2QxMTo6U2V0UG9zaXRpb25UZXhDb29yZFZlcnRleCgmdmVydGljZXNbM10sIHgyLCB5MiwgdTIs
IHYxKTsKIAotICAgICpvdXRTdHJpZGUgPSBzaXplb2YoZDNkMTE6OlBvc2l0aW9uVGV4Q29vcmRW
ZXJ0ZXgpOworICAgICpvdXRTdHJpZGUgICAgICA9IHNpemVvZihkM2QxMTo6UG9zaXRpb25UZXhD
b29yZFZlcnRleCk7CiAgICAgKm91dFZlcnRleENvdW50ID0gNDsKLSAgICAqb3V0VG9wb2xvZ3kg
PSBEM0RfUFJJTUlUSVZFX1RPUE9MT0dZX1RSSUFOR0xFU1RSSVA7CisgICAgKm91dFRvcG9sb2d5
ICAgID0gRDNEX1BSSU1JVElWRV9UT1BPTE9HWV9UUklBTkdMRVNUUklQOwogfQogCi12b2lkIFdy
aXRlM0RWZXJ0aWNlcyhjb25zdCBnbDo6Qm94ICZzb3VyY2VBcmVhLCBjb25zdCBnbDo6RXh0ZW50
cyAmc291cmNlU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmRlc3RB
cmVhLCBjb25zdCBnbDo6RXh0ZW50cyAmZGVzdFNpemUsCi0gICAgICAgICAgICAgICAgICAgICB2
b2lkICpvdXRWZXJ0aWNlcywgdW5zaWduZWQgaW50ICpvdXRTdHJpZGUsIHVuc2lnbmVkIGludCAq
b3V0VmVydGV4Q291bnQsCit2b2lkIFdyaXRlM0RWZXJ0aWNlcyhjb25zdCBnbDo6Qm94ICZzb3Vy
Y2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNvdXJjZVNp
emUsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZkZXN0QXJlYSwKKyAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZkZXN0U2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgIHZvaWQgKm91dFZlcnRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50ICpvdXRTdHJpZGUsCisgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKm91
dFZlcnRleENvdW50LAogICAgICAgICAgICAgICAgICAgICAgRDNEMTFfUFJJTUlUSVZFX1RPUE9M
T0dZICpvdXRUb3BvbG9neSkKIHsKICAgICBBU1NFUlQoc291cmNlU2l6ZS5kZXB0aCA+IDAgJiYg
ZGVzdFNpemUuZGVwdGggPiAwKTsKIAogICAgIGZsb2F0IHgxLCB5MSwgeDIsIHkyLCB1MSwgdjEs
IHUyLCB2MjsKLSAgICBHZW5lcmF0ZVZlcnRleENvb3Jkcyhzb3VyY2VBcmVhLCBzb3VyY2VTaXpl
LCBkZXN0QXJlYSwgZGVzdFNpemUsICZ4MSwgJnkxLCAmeDIsICZ5MiwgJnUxLCAmdjEsICZ1Miwg
JnYyKTsKKyAgICBHZW5lcmF0ZVZlcnRleENvb3Jkcyhzb3VyY2VBcmVhLCBzb3VyY2VTaXplLCBk
ZXN0QXJlYSwgZGVzdFNpemUsICZ4MSwgJnkxLCAmeDIsICZ5MiwgJnUxLCAmdjEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgJnUyLCAmdjIpOwogCi0gICAgZDNkMTE6OlBvc2l0aW9uTGF5ZXJU
ZXhDb29yZDNEVmVydGV4ICp2ZXJ0aWNlcyA9IHN0YXRpY19jYXN0PGQzZDExOjpQb3NpdGlvbkxh
eWVyVGV4Q29vcmQzRFZlcnRleCo+KG91dFZlcnRpY2VzKTsKKyAgICBkM2QxMTo6UG9zaXRpb25M
YXllclRleENvb3JkM0RWZXJ0ZXggKnZlcnRpY2VzID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8ZDNk
MTE6OlBvc2l0aW9uTGF5ZXJUZXhDb29yZDNEVmVydGV4ICo+KG91dFZlcnRpY2VzKTsKIAogICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgZGVzdFNpemUuZGVwdGg7IGkrKykKICAgICB7CkBAIC0xNzMs
MjQgKzQ2NCwzOCBAQCB2b2lkIFdyaXRlM0RWZXJ0aWNlcyhjb25zdCBnbDo6Qm94ICZzb3VyCiAg
ICAgICAgIGQzZDExOjpTZXRQb3NpdGlvbkxheWVyVGV4Q29vcmQzRFZlcnRleCgmdmVydGljZXNb
aSAqIDYgKyA1XSwgeDIsIHkxLCBpLCB1MiwgdjIsIHJlYWREZXB0aCk7CiAgICAgfQogCi0gICAg
Km91dFN0cmlkZSA9IHNpemVvZihkM2QxMTo6UG9zaXRpb25MYXllclRleENvb3JkM0RWZXJ0ZXgp
OworICAgICpvdXRTdHJpZGUgICAgICA9IHNpemVvZihkM2QxMTo6UG9zaXRpb25MYXllclRleENv
b3JkM0RWZXJ0ZXgpOwogICAgICpvdXRWZXJ0ZXhDb3VudCA9IGRlc3RTaXplLmRlcHRoICogNjsK
LSAgICAqb3V0VG9wb2xvZ3kgPSBEM0RfUFJJTUlUSVZFX1RPUE9MT0dZX1RSSUFOR0xFTElTVDsK
KyAgICAqb3V0VG9wb2xvZ3kgICAgPSBEM0RfUFJJTUlUSVZFX1RPUE9MT0dZX1RSSUFOR0xFTElT
VDsKIH0KIAotaW5saW5lIHVuc2lnbmVkIGludCBHZXRTd2l6emxlSW5kZXgoR0xlbnVtIHN3aXp6
bGUpCit1bnNpZ25lZCBpbnQgR2V0U3dpenpsZUluZGV4KEdMZW51bSBzd2l6emxlKQogewogICAg
IHVuc2lnbmVkIGludCBjb2xvckluZGV4ID0gMDsKIAogICAgIHN3aXRjaCAoc3dpenpsZSkKICAg
ICB7Ci0gICAgICBjYXNlIEdMX1JFRDogICBjb2xvckluZGV4ID0gMDsgYnJlYWs7Ci0gICAgICBj
YXNlIEdMX0dSRUVOOiBjb2xvckluZGV4ID0gMTsgYnJlYWs7Ci0gICAgICBjYXNlIEdMX0JMVUU6
ICBjb2xvckluZGV4ID0gMjsgYnJlYWs7Ci0gICAgICBjYXNlIEdMX0FMUEhBOiBjb2xvckluZGV4
ID0gMzsgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1pFUk86ICBjb2xvckluZGV4ID0gNDsgYnJlYWs7
Ci0gICAgICBjYXNlIEdMX09ORTogICBjb2xvckluZGV4ID0gNTsgYnJlYWs7Ci0gICAgICBkZWZh
dWx0OiAgICAgICBVTlJFQUNIQUJMRSgpOyAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfUkVEOgor
ICAgICAgICAgICAgY29sb3JJbmRleCA9IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBHTF9HUkVFTjoKKyAgICAgICAgICAgIGNvbG9ySW5kZXggPSAxOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgR0xfQkxVRToKKyAgICAgICAgICAgIGNvbG9ySW5kZXggPSAy
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfQUxQSEE6CisgICAgICAgICAg
ICBjb2xvckluZGV4ID0gMzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1pF
Uk86CisgICAgICAgICAgICBjb2xvckluZGV4ID0gNDsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEdMX09ORToKKyAgICAgICAgICAgIGNvbG9ySW5kZXggPSA1OworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgcmV0dXJuIGNvbG9ySW5kZXg7CkBAIC0y
MTMsMjAgKzUxOCwzMiBAQCBEM0QxMV9CTEVORF9ERVNDIEdldEFscGhhTWFza0JsZW5kU3RhdGVE
CiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKLUQzRDExX0lOUFVUX0VMRU1FTlRfREVTQyBxdWFkMkRM
YXlvdXRbXSA9Ci17Ci0gICAgeyAiUE9TSVRJT04iLCAwLCBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxP
QVQsIDAsIDAsIEQzRDExX0lOUFVUX1BFUl9WRVJURVhfREFUQSwgMCB9LAotICAgIHsgIlRFWENP
T1JEIiwgMCwgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULCAwLCA4LCBEM0QxMV9JTlBVVF9QRVJf
VkVSVEVYX0RBVEEsIDAgfSwKK0QzRDExX0lOUFVUX0VMRU1FTlRfREVTQyBxdWFkMkRMYXlvdXRb
XSA9IHsKKyAgICB7IlBPU0lUSU9OIiwgMCwgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULCAwLCAw
LCBEM0QxMV9JTlBVVF9QRVJfVkVSVEVYX0RBVEEsIDB9LAorICAgIHsiVEVYQ09PUkQiLCAwLCBE
WEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQsIDAsIDgsIEQzRDExX0lOUFVUX1BFUl9WRVJURVhfREFU
QSwgMH0sCiB9OwogCi1EM0QxMV9JTlBVVF9FTEVNRU5UX0RFU0MgcXVhZDNETGF5b3V0W10gPQot
ewotICAgIHsgIlBPU0lUSU9OIiwgMCwgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULCAwLCAwLCBE
M0QxMV9JTlBVVF9QRVJfVkVSVEVYX0RBVEEsIDAgfSwKLSAgICB7ICJMQVlFUiIsIDAsIERYR0lf
Rk9STUFUX1IzMl9VSU5ULCAwLCA4LCBEM0QxMV9JTlBVVF9QRVJfVkVSVEVYX0RBVEEsIDAgfSwK
LSAgICB7ICJURVhDT09SRCIsIDAsIERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVCwgMCwgMTIs
IEQzRDExX0lOUFVUX1BFUl9WRVJURVhfREFUQSwgMCB9LAorRDNEMTFfSU5QVVRfRUxFTUVOVF9E
RVNDIHF1YWQzRExheW91dFtdID0geworICAgIHsiUE9TSVRJT04iLCAwLCBEWEdJX0ZPUk1BVF9S
MzJHMzJfRkxPQVQsIDAsIDAsIEQzRDExX0lOUFVUX1BFUl9WRVJURVhfREFUQSwgMH0sCisgICAg
eyJMQVlFUiIsIDAsIERYR0lfRk9STUFUX1IzMl9VSU5ULCAwLCA4LCBEM0QxMV9JTlBVVF9QRVJf
VkVSVEVYX0RBVEEsIDB9LAorICAgIHsiVEVYQ09PUkQiLCAwLCBEWEdJX0ZPUk1BVF9SMzJHMzJC
MzJfRkxPQVQsIDAsIDEyLCBEM0QxMV9JTlBVVF9QRVJfVkVSVEVYX0RBVEEsIDB9LAogfTsKIAot
fSAvLyBuYW1lc3BhY2UKK0RYR0lfRk9STUFUIEdldFN0ZW5jaWxTUlZGb3JtYXQoY29uc3QgZDNk
MTE6OkZvcm1hdCAmZm9ybWF0U2V0KQoreworICAgIHN3aXRjaCAoZm9ybWF0U2V0LnRleEZvcm1h
dCkKKyAgICB7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzhYMjRfVFlQRUxFU1M6Cisg
ICAgICAgICAgICByZXR1cm4gRFhHSV9GT1JNQVRfWDMyX1RZUEVMRVNTX0c4WDI0X1VJTlQ7Cisg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjI0RzhfVFlQRUxFU1M6CisgICAgICAgICAgICByZXR1
cm4gRFhHSV9GT1JNQVRfWDI0X1RZUEVMRVNTX0c4X1VJTlQ7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIERYR0lfRk9STUFU
X1VOS05PV047CisgICAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UKIAogQmxpdDExOjpCbGl0MTEo
UmVuZGVyZXIxMSAqcmVuZGVyZXIpCiAgICAgOiBtUmVuZGVyZXIocmVuZGVyZXIpLApAQCAtMjU0
LDcgKzU3MSwxOSBAQCBCbGl0MTE6OkJsaXQxMShSZW5kZXJlcjExICpyZW5kZXJlcikKICAgICAg
IG1RdWFkM0RWUyhnX1ZTX1Bhc3N0aHJvdWdoM0QsIEFycmF5U2l6ZShnX1ZTX1Bhc3N0aHJvdWdo
M0QpLCAiQmxpdDExIDNEIHZlcnRleCBzaGFkZXIiKSwKICAgICAgIG1RdWFkM0RHUyhnX0dTX1Bh
c3N0aHJvdWdoM0QsIEFycmF5U2l6ZShnX0dTX1Bhc3N0aHJvdWdoM0QpLCAiQmxpdDExIDNEIGdl
b21ldHJ5IHNoYWRlciIpLAogICAgICAgbUFscGhhTWFza0JsZW5kU3RhdGUoR2V0QWxwaGFNYXNr
QmxlbmRTdGF0ZURlc2MoKSwgIkJsaXQxMSBBbHBoYSBNYXNrIEJsZW5kIiksCi0gICAgICBtU3dp
enpsZUNCKG51bGxwdHIpCisgICAgICBtU3dpenpsZUNCKG51bGxwdHIpLAorICAgICAgbVJlc29s
dmVEZXB0aFN0ZW5jaWxWUyhnX1ZTX1Jlc29sdmVEZXB0aFN0ZW5jaWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFycmF5U2l6ZShnX1ZTX1Jlc29sdmVEZXB0aFN0ZW5jaWwpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiQmxpdDExOjptUmVzb2x2ZURlcHRoU3RlbmNpbFZT
IiksCisgICAgICBtUmVzb2x2ZURlcHRoUFMoZ19QU19SZXNvbHZlRGVwdGgsIEFycmF5U2l6ZShn
X1BTX1Jlc29sdmVEZXB0aCksICJCbGl0MTE6Om1SZXNvbHZlRGVwdGhQUyIpLAorICAgICAgbVJl
c29sdmVEZXB0aFN0ZW5jaWxQUyhnX1BTX1Jlc29sdmVEZXB0aFN0ZW5jaWwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFycmF5U2l6ZShnX1BTX1Jlc29sdmVEZXB0aFN0ZW5jaWwpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmxpdDExOjptUmVzb2x2ZURlcHRoU3RlbmNp
bFBTIiksCisgICAgICBtUmVzb2x2ZVN0ZW5jaWxQUyhnX1BTX1Jlc29sdmVTdGVuY2lsLAorICAg
ICAgICAgICAgICAgICAgICAgICAgQXJyYXlTaXplKGdfUFNfUmVzb2x2ZVN0ZW5jaWwpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIkJsaXQxMTo6bVJlc29sdmVTdGVuY2lsUFMiKSwKKyAgICAg
IG1TdGVuY2lsU1JWKG51bGxwdHIpLAorICAgICAgbVJlc29sdmVkRGVwdGhTdGVuY2lsUlRWaWV3
KG51bGxwdHIpCiB7CiB9CiAKQEAgLTI3MSw2ICs2MDAsNyBAQCBCbGl0MTE6On5CbGl0MTEoKQog
ICAgIG1RdWFkM0RHUy5yZWxlYXNlKCk7CiAKICAgICBjbGVhclNoYWRlck1hcCgpOworICAgIHJl
bGVhc2VSZXNvbHZlRGVwdGhTdGVuY2lsUmVzb3VyY2VzKCk7CiB9CiAKIGdsOjpFcnJvciBCbGl0
MTE6OmluaXRSZXNvdXJjZXMoKQpAQCAtMjg5LDExICs2MTksMTEgQEAgZ2w6OkVycm9yIEJsaXQx
MTo6aW5pdFJlc291cmNlcygpCiAgICAgdmJEZXNjLkJ5dGVXaWR0aCA9CiAgICAgICAgIHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGludD4oc3RkOjptYXgoc2l6ZW9mKGQzZDExOjpQb3NpdGlvbkxheWVy
VGV4Q29vcmQzRFZlcnRleCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZW9mKGQzZDExOjpQb3NpdGlvblRleENvb3JkVmVydGV4KSkgKgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDYgKiBtUmVuZGVyZXItPmdldFJlbmRlcmVyQ2Fwcygp
Lm1heDNEVGV4dHVyZVNpemUpOwotICAgIHZiRGVzYy5Vc2FnZSA9IEQzRDExX1VTQUdFX0RZTkFN
SUM7Ci0gICAgdmJEZXNjLkJpbmRGbGFncyA9IEQzRDExX0JJTkRfVkVSVEVYX0JVRkZFUjsKLSAg
ICB2YkRlc2MuQ1BVQWNjZXNzRmxhZ3MgPSBEM0QxMV9DUFVfQUNDRVNTX1dSSVRFOwotICAgIHZi
RGVzYy5NaXNjRmxhZ3MgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYg
KiBtUmVuZGVyZXItPmdldE5hdGl2ZUNhcHMoKS5tYXgzRFRleHR1cmVTaXplKTsKKyAgICB2YkRl
c2MuVXNhZ2UgICAgICAgICAgICAgICA9IEQzRDExX1VTQUdFX0RZTkFNSUM7CisgICAgdmJEZXNj
LkJpbmRGbGFncyAgICAgICAgICAgPSBEM0QxMV9CSU5EX1ZFUlRFWF9CVUZGRVI7CisgICAgdmJE
ZXNjLkNQVUFjY2Vzc0ZsYWdzICAgICAgPSBEM0QxMV9DUFVfQUNDRVNTX1dSSVRFOworICAgIHZi
RGVzYy5NaXNjRmxhZ3MgICAgICAgICAgID0gMDsKICAgICB2YkRlc2MuU3RydWN0dXJlQnl0ZVN0
cmlkZSA9IDA7CiAKICAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZUJ1ZmZlcigmdmJEZXNjLCBu
dWxscHRyLCAmbVZlcnRleEJ1ZmZlcik7CkBAIC0zMDcsMTkgKzYzNywxOSBAQCBnbDo6RXJyb3Ig
QmxpdDExOjppbml0UmVzb3VyY2VzKCkKICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1WZXJ0ZXhC
dWZmZXIsICJCbGl0MTEgdmVydGV4IGJ1ZmZlciIpOwogCiAgICAgRDNEMTFfU0FNUExFUl9ERVND
IHBvaW50U2FtcGxlckRlc2M7Ci0gICAgcG9pbnRTYW1wbGVyRGVzYy5GaWx0ZXIgPSBEM0QxMV9G
SUxURVJfTUlOX01BR19QT0lOVF9NSVBfTElORUFSOwotICAgIHBvaW50U2FtcGxlckRlc2MuQWRk
cmVzc1UgPSBEM0QxMV9URVhUVVJFX0FERFJFU1NfQ0xBTVA7Ci0gICAgcG9pbnRTYW1wbGVyRGVz
Yy5BZGRyZXNzViA9IEQzRDExX1RFWFRVUkVfQUREUkVTU19DTEFNUDsKLSAgICBwb2ludFNhbXBs
ZXJEZXNjLkFkZHJlc3NXID0gRDNEMTFfVEVYVFVSRV9BRERSRVNTX0NMQU1QOwotICAgIHBvaW50
U2FtcGxlckRlc2MuTWlwTE9EQmlhcyA9IDAuMGY7Ci0gICAgcG9pbnRTYW1wbGVyRGVzYy5NYXhB
bmlzb3Ryb3B5ID0gMDsKKyAgICBwb2ludFNhbXBsZXJEZXNjLkZpbHRlciAgICAgICAgID0gRDNE
MTFfRklMVEVSX01JTl9NQUdfUE9JTlRfTUlQX0xJTkVBUjsKKyAgICBwb2ludFNhbXBsZXJEZXNj
LkFkZHJlc3NVICAgICAgID0gRDNEMTFfVEVYVFVSRV9BRERSRVNTX0NMQU1QOworICAgIHBvaW50
U2FtcGxlckRlc2MuQWRkcmVzc1YgICAgICAgPSBEM0QxMV9URVhUVVJFX0FERFJFU1NfQ0xBTVA7
CisgICAgcG9pbnRTYW1wbGVyRGVzYy5BZGRyZXNzVyAgICAgICA9IEQzRDExX1RFWFRVUkVfQURE
UkVTU19DTEFNUDsKKyAgICBwb2ludFNhbXBsZXJEZXNjLk1pcExPREJpYXMgICAgID0gMC4wZjsK
KyAgICBwb2ludFNhbXBsZXJEZXNjLk1heEFuaXNvdHJvcHkgID0gMDsKICAgICBwb2ludFNhbXBs
ZXJEZXNjLkNvbXBhcmlzb25GdW5jID0gRDNEMTFfQ09NUEFSSVNPTl9ORVZFUjsKICAgICBwb2lu
dFNhbXBsZXJEZXNjLkJvcmRlckNvbG9yWzBdID0gMC4wZjsKICAgICBwb2ludFNhbXBsZXJEZXNj
LkJvcmRlckNvbG9yWzFdID0gMC4wZjsKICAgICBwb2ludFNhbXBsZXJEZXNjLkJvcmRlckNvbG9y
WzJdID0gMC4wZjsKICAgICBwb2ludFNhbXBsZXJEZXNjLkJvcmRlckNvbG9yWzNdID0gMC4wZjsK
LSAgICBwb2ludFNhbXBsZXJEZXNjLk1pbkxPRCA9IDAuMGY7Ci0gICAgcG9pbnRTYW1wbGVyRGVz
Yy5NYXhMT0QgPSBGTFRfTUFYOworICAgIHBvaW50U2FtcGxlckRlc2MuTWluTE9EICAgICAgICAg
PSAwLjBmOworICAgIHBvaW50U2FtcGxlckRlc2MuTWF4TE9EICAgICAgICAgPSBGTFRfTUFYOwog
CiAgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVTYW1wbGVyU3RhdGUoJnBvaW50U2FtcGxlckRl
c2MsICZtUG9pbnRTYW1wbGVyKTsKICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwpAQCAt
MzMyLDE5ICs2NjIsMTkgQEAgZ2w6OkVycm9yIEJsaXQxMTo6aW5pdFJlc291cmNlcygpCiAgICAg
ZDNkMTE6OlNldERlYnVnTmFtZShtUG9pbnRTYW1wbGVyLCAiQmxpdDExIHBvaW50IHNhbXBsZXIi
KTsKIAogICAgIEQzRDExX1NBTVBMRVJfREVTQyBsaW5lYXJTYW1wbGVyRGVzYzsKLSAgICBsaW5l
YXJTYW1wbGVyRGVzYy5GaWx0ZXIgPSBEM0QxMV9GSUxURVJfTUlOX01BR19NSVBfTElORUFSOwot
ICAgIGxpbmVhclNhbXBsZXJEZXNjLkFkZHJlc3NVID0gRDNEMTFfVEVYVFVSRV9BRERSRVNTX0NM
QU1QOwotICAgIGxpbmVhclNhbXBsZXJEZXNjLkFkZHJlc3NWID0gRDNEMTFfVEVYVFVSRV9BRERS
RVNTX0NMQU1QOwotICAgIGxpbmVhclNhbXBsZXJEZXNjLkFkZHJlc3NXID0gRDNEMTFfVEVYVFVS
RV9BRERSRVNTX0NMQU1QOwotICAgIGxpbmVhclNhbXBsZXJEZXNjLk1pcExPREJpYXMgPSAwLjBm
OwotICAgIGxpbmVhclNhbXBsZXJEZXNjLk1heEFuaXNvdHJvcHkgPSAwOworICAgIGxpbmVhclNh
bXBsZXJEZXNjLkZpbHRlciAgICAgICAgID0gRDNEMTFfRklMVEVSX01JTl9NQUdfTUlQX0xJTkVB
UjsKKyAgICBsaW5lYXJTYW1wbGVyRGVzYy5BZGRyZXNzVSAgICAgICA9IEQzRDExX1RFWFRVUkVf
QUREUkVTU19DTEFNUDsKKyAgICBsaW5lYXJTYW1wbGVyRGVzYy5BZGRyZXNzViAgICAgICA9IEQz
RDExX1RFWFRVUkVfQUREUkVTU19DTEFNUDsKKyAgICBsaW5lYXJTYW1wbGVyRGVzYy5BZGRyZXNz
VyAgICAgICA9IEQzRDExX1RFWFRVUkVfQUREUkVTU19DTEFNUDsKKyAgICBsaW5lYXJTYW1wbGVy
RGVzYy5NaXBMT0RCaWFzICAgICA9IDAuMGY7CisgICAgbGluZWFyU2FtcGxlckRlc2MuTWF4QW5p
c290cm9weSAgPSAwOwogICAgIGxpbmVhclNhbXBsZXJEZXNjLkNvbXBhcmlzb25GdW5jID0gRDNE
MTFfQ09NUEFSSVNPTl9ORVZFUjsKICAgICBsaW5lYXJTYW1wbGVyRGVzYy5Cb3JkZXJDb2xvclsw
XSA9IDAuMGY7CiAgICAgbGluZWFyU2FtcGxlckRlc2MuQm9yZGVyQ29sb3JbMV0gPSAwLjBmOwog
ICAgIGxpbmVhclNhbXBsZXJEZXNjLkJvcmRlckNvbG9yWzJdID0gMC4wZjsKICAgICBsaW5lYXJT
YW1wbGVyRGVzYy5Cb3JkZXJDb2xvclszXSA9IDAuMGY7Ci0gICAgbGluZWFyU2FtcGxlckRlc2Mu
TWluTE9EID0gMC4wZjsKLSAgICBsaW5lYXJTYW1wbGVyRGVzYy5NYXhMT0QgPSBGTFRfTUFYOwor
ICAgIGxpbmVhclNhbXBsZXJEZXNjLk1pbkxPRCAgICAgICAgID0gMC4wZjsKKyAgICBsaW5lYXJT
YW1wbGVyRGVzYy5NYXhMT0QgICAgICAgICA9IEZMVF9NQVg7CiAKICAgICByZXN1bHQgPSBkZXZp
Y2UtPkNyZWF0ZVNhbXBsZXJTdGF0ZSgmbGluZWFyU2FtcGxlckRlc2MsICZtTGluZWFyU2FtcGxl
cik7CiAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKQEAgLTM1OCwxNCArNjg4LDE0IEBA
IGdsOjpFcnJvciBCbGl0MTE6OmluaXRSZXNvdXJjZXMoKQogCiAgICAgLy8gVXNlIGEgcmFzdGVy
aXplciBzdGF0ZSB0aGF0IHdpbGwgbm90IGN1bGwgc28gdGhhdCBpbnZlcnRlZCBxdWFkcyB3aWxs
IG5vdCBiZSBjdWxsZWQKICAgICBEM0QxMV9SQVNURVJJWkVSX0RFU0MgcmFzdGVyRGVzYzsKLSAg
ICByYXN0ZXJEZXNjLkZpbGxNb2RlID0gRDNEMTFfRklMTF9TT0xJRDsKLSAgICByYXN0ZXJEZXNj
LkN1bGxNb2RlID0gRDNEMTFfQ1VMTF9OT05FOworICAgIHJhc3RlckRlc2MuRmlsbE1vZGUgICAg
ICAgICAgICAgID0gRDNEMTFfRklMTF9TT0xJRDsKKyAgICByYXN0ZXJEZXNjLkN1bGxNb2RlICAg
ICAgICAgICAgICA9IEQzRDExX0NVTExfTk9ORTsKICAgICByYXN0ZXJEZXNjLkZyb250Q291bnRl
ckNsb2Nrd2lzZSA9IEZBTFNFOwotICAgIHJhc3RlckRlc2MuRGVwdGhCaWFzID0gMDsKLSAgICBy
YXN0ZXJEZXNjLlNsb3BlU2NhbGVkRGVwdGhCaWFzID0gMC4wZjsKLSAgICByYXN0ZXJEZXNjLkRl
cHRoQmlhc0NsYW1wID0gMC4wZjsKLSAgICByYXN0ZXJEZXNjLkRlcHRoQ2xpcEVuYWJsZSA9IFRS
VUU7Ci0gICAgcmFzdGVyRGVzYy5NdWx0aXNhbXBsZUVuYWJsZSA9IEZBTFNFOworICAgIHJhc3Rl
ckRlc2MuRGVwdGhCaWFzICAgICAgICAgICAgID0gMDsKKyAgICByYXN0ZXJEZXNjLlNsb3BlU2Nh
bGVkRGVwdGhCaWFzICA9IDAuMGY7CisgICAgcmFzdGVyRGVzYy5EZXB0aEJpYXNDbGFtcCAgICAg
ICAgPSAwLjBmOworICAgIHJhc3RlckRlc2MuRGVwdGhDbGlwRW5hYmxlICAgICAgID0gVFJVRTsK
KyAgICByYXN0ZXJEZXNjLk11bHRpc2FtcGxlRW5hYmxlICAgICA9IEZBTFNFOwogICAgIHJhc3Rl
ckRlc2MuQW50aWFsaWFzZWRMaW5lRW5hYmxlID0gRkFMU0U7CiAKICAgICByYXN0ZXJEZXNjLlNj
aXNzb3JFbmFibGUgPSBUUlVFOwpAQCAtMzkzLDIwICs3MjMsMjAgQEAgZ2w6OkVycm9yIEJsaXQx
MTo6aW5pdFJlc291cmNlcygpCiAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtU2Npc3NvckRpc2Fi
bGVkUmFzdGVyaXplclN0YXRlLCAiQmxpdDExIG5vIHNjaXNzb3JpbmcgcmFzdGVyaXplciBzdGF0
ZSIpOwogCiAgICAgRDNEMTFfREVQVEhfU1RFTkNJTF9ERVNDIGRlcHRoU3RlbmNpbERlc2M7Ci0g
ICAgZGVwdGhTdGVuY2lsRGVzYy5EZXB0aEVuYWJsZSA9IHRydWU7Ci0gICAgZGVwdGhTdGVuY2ls
RGVzYy5EZXB0aFdyaXRlTWFzayA9IEQzRDExX0RFUFRIX1dSSVRFX01BU0tfQUxMOwotICAgIGRl
cHRoU3RlbmNpbERlc2MuRGVwdGhGdW5jID0gRDNEMTFfQ09NUEFSSVNPTl9BTFdBWVM7Ci0gICAg
ZGVwdGhTdGVuY2lsRGVzYy5TdGVuY2lsRW5hYmxlID0gRkFMU0U7Ci0gICAgZGVwdGhTdGVuY2ls
RGVzYy5TdGVuY2lsUmVhZE1hc2sgPSBEM0QxMV9ERUZBVUxUX1NURU5DSUxfUkVBRF9NQVNLOwot
ICAgIGRlcHRoU3RlbmNpbERlc2MuU3RlbmNpbFdyaXRlTWFzayA9IEQzRDExX0RFRkFVTFRfU1RF
TkNJTF9XUklURV9NQVNLOwotICAgIGRlcHRoU3RlbmNpbERlc2MuRnJvbnRGYWNlLlN0ZW5jaWxG
YWlsT3AgPSBEM0QxMV9TVEVOQ0lMX09QX0tFRVA7CisgICAgZGVwdGhTdGVuY2lsRGVzYy5EZXB0
aEVuYWJsZSAgICAgICAgICAgICAgICAgID0gdHJ1ZTsKKyAgICBkZXB0aFN0ZW5jaWxEZXNjLkRl
cHRoV3JpdGVNYXNrICAgICAgICAgICAgICAgPSBEM0QxMV9ERVBUSF9XUklURV9NQVNLX0FMTDsK
KyAgICBkZXB0aFN0ZW5jaWxEZXNjLkRlcHRoRnVuYyAgICAgICAgICAgICAgICAgICAgPSBEM0Qx
MV9DT01QQVJJU09OX0FMV0FZUzsKKyAgICBkZXB0aFN0ZW5jaWxEZXNjLlN0ZW5jaWxFbmFibGUg
ICAgICAgICAgICAgICAgPSBGQUxTRTsKKyAgICBkZXB0aFN0ZW5jaWxEZXNjLlN0ZW5jaWxSZWFk
TWFzayAgICAgICAgICAgICAgPSBEM0QxMV9ERUZBVUxUX1NURU5DSUxfUkVBRF9NQVNLOworICAg
IGRlcHRoU3RlbmNpbERlc2MuU3RlbmNpbFdyaXRlTWFzayAgICAgICAgICAgICA9IEQzRDExX0RF
RkFVTFRfU1RFTkNJTF9XUklURV9NQVNLOworICAgIGRlcHRoU3RlbmNpbERlc2MuRnJvbnRGYWNl
LlN0ZW5jaWxGYWlsT3AgICAgICA9IEQzRDExX1NURU5DSUxfT1BfS0VFUDsKICAgICBkZXB0aFN0
ZW5jaWxEZXNjLkZyb250RmFjZS5TdGVuY2lsRGVwdGhGYWlsT3AgPSBEM0QxMV9TVEVOQ0lMX09Q
X0tFRVA7Ci0gICAgZGVwdGhTdGVuY2lsRGVzYy5Gcm9udEZhY2UuU3RlbmNpbFBhc3NPcCA9IEQz
RDExX1NURU5DSUxfT1BfS0VFUDsKLSAgICBkZXB0aFN0ZW5jaWxEZXNjLkZyb250RmFjZS5TdGVu
Y2lsRnVuYyA9IEQzRDExX0NPTVBBUklTT05fQUxXQVlTOwotICAgIGRlcHRoU3RlbmNpbERlc2Mu
QmFja0ZhY2UuU3RlbmNpbEZhaWxPcCA9IEQzRDExX1NURU5DSUxfT1BfS0VFUDsKLSAgICBkZXB0
aFN0ZW5jaWxEZXNjLkJhY2tGYWNlLlN0ZW5jaWxEZXB0aEZhaWxPcCA9IEQzRDExX1NURU5DSUxf
T1BfS0VFUDsKLSAgICBkZXB0aFN0ZW5jaWxEZXNjLkJhY2tGYWNlLlN0ZW5jaWxQYXNzT3AgPSBE
M0QxMV9TVEVOQ0lMX09QX0tFRVA7Ci0gICAgZGVwdGhTdGVuY2lsRGVzYy5CYWNrRmFjZS5TdGVu
Y2lsRnVuYyA9IEQzRDExX0NPTVBBUklTT05fQUxXQVlTOworICAgIGRlcHRoU3RlbmNpbERlc2Mu
RnJvbnRGYWNlLlN0ZW5jaWxQYXNzT3AgICAgICA9IEQzRDExX1NURU5DSUxfT1BfS0VFUDsKKyAg
ICBkZXB0aFN0ZW5jaWxEZXNjLkZyb250RmFjZS5TdGVuY2lsRnVuYyAgICAgICAgPSBEM0QxMV9D
T01QQVJJU09OX0FMV0FZUzsKKyAgICBkZXB0aFN0ZW5jaWxEZXNjLkJhY2tGYWNlLlN0ZW5jaWxG
YWlsT3AgICAgICAgPSBEM0QxMV9TVEVOQ0lMX09QX0tFRVA7CisgICAgZGVwdGhTdGVuY2lsRGVz
Yy5CYWNrRmFjZS5TdGVuY2lsRGVwdGhGYWlsT3AgID0gRDNEMTFfU1RFTkNJTF9PUF9LRUVQOwor
ICAgIGRlcHRoU3RlbmNpbERlc2MuQmFja0ZhY2UuU3RlbmNpbFBhc3NPcCAgICAgICA9IEQzRDEx
X1NURU5DSUxfT1BfS0VFUDsKKyAgICBkZXB0aFN0ZW5jaWxEZXNjLkJhY2tGYWNlLlN0ZW5jaWxG
dW5jICAgICAgICAgPSBEM0QxMV9DT01QQVJJU09OX0FMV0FZUzsKIAogICAgIHJlc3VsdCA9IGRl
dmljZS0+Q3JlYXRlRGVwdGhTdGVuY2lsU3RhdGUoJmRlcHRoU3RlbmNpbERlc2MsICZtRGVwdGhT
dGVuY2lsU3RhdGUpOwogICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CkBAIC00MTksMTEg
Kzc0OSwxMSBAQCBnbDo6RXJyb3IgQmxpdDExOjppbml0UmVzb3VyY2VzKCkKICAgICBkM2QxMTo6
U2V0RGVidWdOYW1lKG1EZXB0aFN0ZW5jaWxTdGF0ZSwgIkJsaXQxMSBkZXB0aCBzdGVuY2lsIHN0
YXRlIik7CiAKICAgICBEM0QxMV9CVUZGRVJfREVTQyBzd2l6emxlQnVmZmVyRGVzYzsKLSAgICBz
d2l6emxlQnVmZmVyRGVzYy5CeXRlV2lkdGggPSBzaXplb2YodW5zaWduZWQgaW50KSAqIDQ7Ci0g
ICAgc3dpenpsZUJ1ZmZlckRlc2MuVXNhZ2UgPSBEM0QxMV9VU0FHRV9EWU5BTUlDOwotICAgIHN3
aXp6bGVCdWZmZXJEZXNjLkJpbmRGbGFncyA9IEQzRDExX0JJTkRfQ09OU1RBTlRfQlVGRkVSOwot
ICAgIHN3aXp6bGVCdWZmZXJEZXNjLkNQVUFjY2Vzc0ZsYWdzID0gRDNEMTFfQ1BVX0FDQ0VTU19X
UklURTsKLSAgICBzd2l6emxlQnVmZmVyRGVzYy5NaXNjRmxhZ3MgPSAwOworICAgIHN3aXp6bGVC
dWZmZXJEZXNjLkJ5dGVXaWR0aCAgICAgICAgICAgPSBzaXplb2YodW5zaWduZWQgaW50KSAqIDQ7
CisgICAgc3dpenpsZUJ1ZmZlckRlc2MuVXNhZ2UgICAgICAgICAgICAgICA9IEQzRDExX1VTQUdF
X0RZTkFNSUM7CisgICAgc3dpenpsZUJ1ZmZlckRlc2MuQmluZEZsYWdzICAgICAgICAgICA9IEQz
RDExX0JJTkRfQ09OU1RBTlRfQlVGRkVSOworICAgIHN3aXp6bGVCdWZmZXJEZXNjLkNQVUFjY2Vz
c0ZsYWdzICAgICAgPSBEM0QxMV9DUFVfQUNDRVNTX1dSSVRFOworICAgIHN3aXp6bGVCdWZmZXJE
ZXNjLk1pc2NGbGFncyAgICAgICAgICAgPSAwOwogICAgIHN3aXp6bGVCdWZmZXJEZXNjLlN0cnVj
dHVyZUJ5dGVTdHJpZGUgPSAwOwogCiAgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVCdWZmZXIo
JnN3aXp6bGVCdWZmZXJEZXNjLCBudWxscHRyLCAmbVN3aXp6bGVDQik7CkBAIC00NTUsMTI5ICs3
ODUsMjAzIEBAIHZvaWQgQmxpdDExOjpmcmVlUmVzb3VyY2VzKCkKIH0KIAogLy8gc3RhdGljCi1C
bGl0MTE6OkJsaXRTaGFkZXJUeXBlIEJsaXQxMTo6R2V0QmxpdFNoYWRlclR5cGUoR0xlbnVtIGRl
c3RpbmF0aW9uRm9ybWF0LCBib29sIGlzU2lnbmVkLCBTaGFkZXJEaW1lbnNpb24gZGltZW5zaW9u
KQorQmxpdDExOjpCbGl0U2hhZGVyVHlwZSBCbGl0MTE6OkdldEJsaXRTaGFkZXJUeXBlKEdMZW51
bSBkZXN0aW5hdGlvbkZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGlzU2lnbmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1Vu
bXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTaGFkZXJEaW1lbnNpb24gZGltZW5zaW9uKQogewogICAgIGlmIChkaW1lbnNpb24g
PT0gU0hBREVSXzNEKQogICAgIHsKKyAgICAgICAgQVNTRVJUKCF1bnBhY2tQcmVtdWx0aXBseUFs
cGhhICYmICF1bnBhY2tVbm11bHRpcGx5QWxwaGEpOworCiAgICAgICAgIGlmIChpc1NpZ25lZCkK
ICAgICAgICAgewogICAgICAgICAgICAgc3dpdGNoIChkZXN0aW5hdGlvbkZvcm1hdCkKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBHTF9SR0JBX0lOVEVHRVI6IHJldHVybiBCTElU
U0hBREVSXzNEX1JHQkFJOwotICAgICAgICAgICAgICBjYXNlIEdMX1JHQl9JTlRFR0VSOiAgcmV0
dXJuIEJMSVRTSEFERVJfM0RfUkdCSTsKLSAgICAgICAgICAgICAgY2FzZSBHTF9SR19JTlRFR0VS
OiAgIHJldHVybiBCTElUU0hBREVSXzNEX1JHSTsKLSAgICAgICAgICAgICAgY2FzZSBHTF9SRURf
SU5URUdFUjogIHJldHVybiBCTElUU0hBREVSXzNEX1JJOwotICAgICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IEJMSVRTSEFERVJfSU5WQUxJRDsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQkFfSU5URUdF
UjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJMSVRTSEFERVJfM0RfUkdCQUk7CisgICAg
ICAgICAgICAgICAgY2FzZSBHTF9SR0JfSU5URUdFUjoKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEJMSVRTSEFERVJfM0RfUkdCSTsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1JHX0lOVEVH
RVI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBCTElUU0hBREVSXzNEX1JHSTsKKyAgICAg
ICAgICAgICAgICBjYXNlIEdMX1JFRF9JTlRFR0VSOgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gQkxJVFNIQURFUl8zRF9SSTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gQkxJ
VFNIQURFUl9JTlZBTElEOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UK
ICAgICAgICAgewogICAgICAgICAgICAgc3dpdGNoIChkZXN0aW5hdGlvbkZvcm1hdCkKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBHTF9SR0JBOiAgICAgICAgICAgICByZXR1cm4g
QkxJVFNIQURFUl8zRF9SR0JBRjsKLSAgICAgICAgICAgICAgY2FzZSBHTF9SR0JBX0lOVEVHRVI6
ICAgICByZXR1cm4gQkxJVFNIQURFUl8zRF9SR0JBVUk7Ci0gICAgICAgICAgICAgIGNhc2UgR0xf
QkdSQV9FWFQ6ICAgICAgICAgcmV0dXJuIEJMSVRTSEFERVJfM0RfQkdSQUY7Ci0gICAgICAgICAg
ICAgIGNhc2UgR0xfUkdCOiAgICAgICAgICAgICAgcmV0dXJuIEJMSVRTSEFERVJfM0RfUkdCRjsK
LSAgICAgICAgICAgICAgY2FzZSBHTF9SR0JfSU5URUdFUjogICAgICByZXR1cm4gQkxJVFNIQURF
Ul8zRF9SR0JVSTsKLSAgICAgICAgICAgICAgY2FzZSBHTF9SRzogICAgICAgICAgICAgICByZXR1
cm4gQkxJVFNIQURFUl8zRF9SR0Y7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfUkdfSU5URUdFUjog
ICAgICAgcmV0dXJuIEJMSVRTSEFERVJfM0RfUkdVSTsKLSAgICAgICAgICAgICAgY2FzZSBHTF9S
RUQ6ICAgICAgICAgICAgICByZXR1cm4gQkxJVFNIQURFUl8zRF9SRjsKLSAgICAgICAgICAgICAg
Y2FzZSBHTF9SRURfSU5URUdFUjogICAgICByZXR1cm4gQkxJVFNIQURFUl8zRF9SVUk7Ci0gICAg
ICAgICAgICAgIGNhc2UgR0xfQUxQSEE6ICAgICAgICAgICAgcmV0dXJuIEJMSVRTSEFERVJfM0Rf
QUxQSEE7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFOiAgICAgICAgcmV0dXJuIEJM
SVRTSEFERVJfM0RfTFVNQTsKLSAgICAgICAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6
ICByZXR1cm4gQkxJVFNIQURFUl8zRF9MVU1BQUxQSEE7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
QkxJVFNIQURFUl9JTlZBTElEOworICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdCQToKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEJMSVRTSEFERVJfM0RfUkdCQUY7CisgICAgICAgICAgICAg
ICAgY2FzZSBHTF9SR0JBX0lOVEVHRVI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBCTElU
U0hBREVSXzNEX1JHQkFVSTsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0JHUkFfRVhUOgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gQkxJVFNIQURFUl8zRF9CR1JBRjsKKyAgICAgICAgICAg
ICAgICBjYXNlIEdMX1JHQjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJMSVRTSEFERVJf
M0RfUkdCRjsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQl9JTlRFR0VSOgorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gQkxJVFNIQURFUl8zRF9SR0JVSTsKKyAgICAgICAgICAgICAgICBj
YXNlIEdMX1JHOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQkxJVFNIQURFUl8zRF9SR0Y7
CisgICAgICAgICAgICAgICAgY2FzZSBHTF9SR19JTlRFR0VSOgorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gQkxJVFNIQURFUl8zRF9SR1VJOworICAgICAgICAgICAgICAgIGNhc2UgR0xfUkVE
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQkxJVFNIQURFUl8zRF9SRjsKKyAgICAgICAg
ICAgICAgICBjYXNlIEdMX1JFRF9JTlRFR0VSOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
QkxJVFNIQURFUl8zRF9SVUk7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9BTFBIQToKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEJMSVRTSEFERVJfM0RfQUxQSEE7CisgICAgICAgICAgICAg
ICAgY2FzZSBHTF9MVU1JTkFOQ0U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBCTElUU0hB
REVSXzNEX0xVTUE7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBCTElUU0hBREVSXzNEX0xVTUFBTFBIQTsKKyAgICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gQkxJVFNIQURFUl9JTlZBTElEOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgaWYgKGlzU2lnbmVkKQogICAgIHsKKyAg
ICAgICAgQVNTRVJUKCF1bnBhY2tQcmVtdWx0aXBseUFscGhhICYmICF1bnBhY2tVbm11bHRpcGx5
QWxwaGEpOworCiAgICAgICAgIHN3aXRjaCAoZGVzdGluYXRpb25Gb3JtYXQpCiAgICAgICAgIHsK
LSAgICAgICAgICBjYXNlIEdMX1JHQkFfSU5URUdFUjogcmV0dXJuIEJMSVRTSEFERVJfMkRfUkdC
QUk7Ci0gICAgICAgICAgY2FzZSBHTF9SR0JfSU5URUdFUjogIHJldHVybiBCTElUU0hBREVSXzJE
X1JHQkk7Ci0gICAgICAgICAgY2FzZSBHTF9SR19JTlRFR0VSOiAgIHJldHVybiBCTElUU0hBREVS
XzJEX1JHSTsKLSAgICAgICAgICBjYXNlIEdMX1JFRF9JTlRFR0VSOiAgcmV0dXJuIEJMSVRTSEFE
RVJfMkRfUkk7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
Ci0gICAgICAgICAgICByZXR1cm4gQkxJVFNIQURFUl9JTlZBTElEOworICAgICAgICAgICAgY2Fz
ZSBHTF9SR0JBX0lOVEVHRVI6CisgICAgICAgICAgICAgICAgcmV0dXJuIEJMSVRTSEFERVJfMkRf
UkdCQUk7CisgICAgICAgICAgICBjYXNlIEdMX1JHQl9JTlRFR0VSOgorICAgICAgICAgICAgICAg
IHJldHVybiBCTElUU0hBREVSXzJEX1JHQkk7CisgICAgICAgICAgICBjYXNlIEdMX1JHX0lOVEVH
RVI6CisgICAgICAgICAgICAgICAgcmV0dXJuIEJMSVRTSEFERVJfMkRfUkdJOworICAgICAgICAg
ICAgY2FzZSBHTF9SRURfSU5URUdFUjoKKyAgICAgICAgICAgICAgICByZXR1cm4gQkxJVFNIQURF
Ul8yRF9SSTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gQkxJVFNIQURFUl9JTlZBTElEOwogICAgICAg
ICB9CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoZGVzdGluYXRpb25G
b3JtYXQpCisgICAgICAgIGlmICh1bnBhY2tQcmVtdWx0aXBseUFscGhhICE9IHVucGFja1VubXVs
dGlwbHlBbHBoYSkKICAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfUkdCQTogICAgICAgICAg
ICAgcmV0dXJuIEJMSVRTSEFERVJfMkRfUkdCQUY7Ci0gICAgICAgICAgY2FzZSBHTF9SR0JBX0lO
VEVHRVI6ICAgICByZXR1cm4gQkxJVFNIQURFUl8yRF9SR0JBVUk7Ci0gICAgICAgICAgY2FzZSBH
TF9CR1JBX0VYVDogICAgICAgICByZXR1cm4gQkxJVFNIQURFUl8yRF9CR1JBRjsKLSAgICAgICAg
ICBjYXNlIEdMX1JHQjogICAgICAgICAgICAgIHJldHVybiBCTElUU0hBREVSXzJEX1JHQkY7Ci0g
ICAgICAgICAgY2FzZSBHTF9SR0JfSU5URUdFUjogICAgICByZXR1cm4gQkxJVFNIQURFUl8yRF9S
R0JVSTsKLSAgICAgICAgICBjYXNlIEdMX1JHOiAgICAgICAgICAgICAgIHJldHVybiBCTElUU0hB
REVSXzJEX1JHRjsKLSAgICAgICAgICBjYXNlIEdMX1JHX0lOVEVHRVI6ICAgICAgIHJldHVybiBC
TElUU0hBREVSXzJEX1JHVUk7Ci0gICAgICAgICAgY2FzZSBHTF9SRUQ6ICAgICAgICAgICAgICBy
ZXR1cm4gQkxJVFNIQURFUl8yRF9SRjsKLSAgICAgICAgICBjYXNlIEdMX1JFRF9JTlRFR0VSOiAg
ICAgIHJldHVybiBCTElUU0hBREVSXzJEX1JVSTsKLSAgICAgICAgICBjYXNlIEdMX0FMUEhBOiAg
ICAgICAgICAgIHJldHVybiBCTElUU0hBREVSXzJEX0FMUEhBOwotICAgICAgICAgIGNhc2UgR0xf
TFVNSU5BTkNFOiAgICAgICAgcmV0dXJuIEJMSVRTSEFERVJfMkRfTFVNQTsKLSAgICAgICAgICBj
YXNlIEdMX0xVTUlOQU5DRV9BTFBIQTogIHJldHVybiBCTElUU0hBREVSXzJEX0xVTUFBTFBIQTsK
LSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAg
ICAgIHJldHVybiBCTElUU0hBREVSX0lOVkFMSUQ7CisgICAgICAgICAgICBzd2l0Y2ggKGRlc3Rp
bmF0aW9uRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdC
QToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVucGFja1ByZW11bHRpcGx5QWxwaGEgPyBC
TElUU0hBREVSXzJEX1JHQkFGX1BSRU1VTFRJUExZCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogQkxJVFNIQURFUl8yRF9SR0JBRl9VTk1VTFRJUExZ
OworICAgICAgICAgICAgICAgIGNhc2UgR0xfQkdSQV9FWFQ6CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiB1bnBhY2tQcmVtdWx0aXBseUFscGhhID8gQkxJVFNIQURFUl8yRF9CR1JBRl9QUkVN
VUxUSVBMWQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6IEJMSVRTSEFERVJfMkRfQkdSQUZfVU5NVUxUSVBMWTsKKyAgICAgICAgICAgICAgICBjYXNl
IEdMX1JHQjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVucGFja1ByZW11bHRpcGx5QWxw
aGEgPyBCTElUU0hBREVSXzJEX1JHQkZfUFJFTVVMVElQTFkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBCTElUU0hBREVSXzJEX1JHQkZfVU5NVUxU
SVBMWTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBVTlJF
QUNIQUJMRSgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gQkxJVFNIQURFUl9JTlZBTElE
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAg
ICAgICAgICAgc3dpdGNoIChkZXN0aW5hdGlvbkZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBCTElU
U0hBREVSXzJEX1JHQkFGOworICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdCQV9JTlRFR0VSOgor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gQkxJVFNIQURFUl8yRF9SR0JBVUk7CisgICAgICAg
ICAgICAgICAgY2FzZSBHTF9CR1JBX0VYVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJM
SVRTSEFERVJfMkRfQkdSQUY7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9SR0I6CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBCTElUU0hBREVSXzJEX1JHQkY7CisgICAgICAgICAgICAgICAg
Y2FzZSBHTF9SR0JfSU5URUdFUjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJMSVRTSEFE
RVJfMkRfUkdCVUk7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9SRzoKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEJMSVRTSEFERVJfMkRfUkdGOworICAgICAgICAgICAgICAgIGNhc2UgR0xf
UkdfSU5URUdFUjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJMSVRTSEFERVJfMkRfUkdV
STsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1JFRDoKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEJMSVRTSEFERVJfMkRfUkY7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9SRURfSU5URUdF
UjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJMSVRTSEFERVJfMkRfUlVJOworICAgICAg
ICAgICAgICAgIGNhc2UgR0xfQUxQSEE6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBCTElU
U0hBREVSXzJEX0FMUEhBOworICAgICAgICAgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFOgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gQkxJVFNIQURFUl8yRF9MVU1BOworICAgICAgICAgICAg
ICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
QkxJVFNIQURFUl8yRF9MVU1BQUxQSEE7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEJMSVRTSEFERVJfSU5WQUxJRDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIH0K
IAogLy8gc3RhdGljCi1CbGl0MTE6OlN3aXp6bGVTaGFkZXJUeXBlIEJsaXQxMTo6R2V0U3dpenps
ZVNoYWRlclR5cGUoR0xlbnVtIHR5cGUsIEQzRDExX1NSVl9ESU1FTlNJT04gZGltZW5zaW9uYWxp
dHkpCitCbGl0MTE6OlN3aXp6bGVTaGFkZXJUeXBlIEJsaXQxMTo6R2V0U3dpenpsZVNoYWRlclR5
cGUoR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRDNEMTFfU1JWX0RJTUVOU0lPTiBkaW1lbnNpb25hbGl0eSkKIHsKICAg
ICBzd2l0Y2ggKGRpbWVuc2lvbmFsaXR5KQogICAgIHsKLSAgICAgIGNhc2UgRDNEMTFfU1JWX0RJ
TUVOU0lPTl9URVhUVVJFMkQ6Ci0gICAgICAgIHN3aXRjaCAodHlwZSkKLSAgICAgICAgewotICAg
ICAgICAgIGNhc2UgR0xfRkxPQVQ6ICAgICAgICByZXR1cm4gU1dJWlpMRVNIQURFUl8yRF9GTE9B
VDsKLSAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDogcmV0dXJuIFNXSVpaTEVTSEFERVJf
MkRfVUlOVDsKLSAgICAgICAgICBjYXNlIEdMX0lOVDogICAgICAgICAgcmV0dXJuIFNXSVpaTEVT
SEFERVJfMkRfSU5UOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBVTlJFQUNIQUJM
RSgpOwotICAgICAgICAgICAgcmV0dXJuIFNXSVpaTEVTSEFERVJfSU5WQUxJRDsKLSAgICAgICAg
fQotICAgICAgY2FzZSBEM0QxMV9TUlZfRElNRU5TSU9OX1RFWFRVUkVDVUJFOgotICAgICAgICBz
d2l0Y2ggKHR5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX0ZMT0FUOiAgICAgICAg
cmV0dXJuIFNXSVpaTEVTSEFERVJfQ1VCRV9GTE9BVDsKLSAgICAgICAgICBjYXNlIEdMX1VOU0lH
TkVEX0lOVDogcmV0dXJuIFNXSVpaTEVTSEFERVJfQ1VCRV9VSU5UOwotICAgICAgICAgIGNhc2Ug
R0xfSU5UOiAgICAgICAgICByZXR1cm4gU1dJWlpMRVNIQURFUl9DVUJFX0lOVDsKLSAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgIHJldHVy
biBTV0laWkxFU0hBREVSX0lOVkFMSUQ7Ci0gICAgICAgIH0KLSAgICAgIGNhc2UgRDNEMTFfU1JW
X0RJTUVOU0lPTl9URVhUVVJFM0Q6Ci0gICAgICAgIHN3aXRjaCAodHlwZSkKLSAgICAgICAgewot
ICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6ICAgICAgICByZXR1cm4gU1dJWlpMRVNIQURFUl8zRF9G
TE9BVDsKLSAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDogcmV0dXJuIFNXSVpaTEVTSEFE
RVJfM0RfVUlOVDsKLSAgICAgICAgICBjYXNlIEdMX0lOVDogICAgICAgICAgcmV0dXJuIFNXSVpa
TEVTSEFERVJfM0RfSU5UOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOwotICAgICAgICAgICAgcmV0dXJuIFNXSVpaTEVTSEFERVJfSU5WQUxJRDsKLSAgICAg
ICAgfQotICAgICAgY2FzZSBEM0QxMV9TUlZfRElNRU5TSU9OX1RFWFRVUkUyREFSUkFZOgotICAg
ICAgICBzd2l0Y2ggKHR5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX0ZMT0FUOiAg
ICAgICAgcmV0dXJuIFNXSVpaTEVTSEFERVJfQVJSQVlfRkxPQVQ7Ci0gICAgICAgICAgY2FzZSBH
TF9VTlNJR05FRF9JTlQ6IHJldHVybiBTV0laWkxFU0hBREVSX0FSUkFZX1VJTlQ7Ci0gICAgICAg
ICAgY2FzZSBHTF9JTlQ6ICAgICAgICAgIHJldHVybiBTV0laWkxFU0hBREVSX0FSUkFZX0lOVDsK
LSAgICAgICAgICBkZWZhdWx0OgorICAgICAgICBjYXNlIEQzRDExX1NSVl9ESU1FTlNJT05fVEVY
VFVSRTJEOgorICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTV0la
WkxFU0hBREVSXzJEX0ZMT0FUOworICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5U
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gU1dJWlpMRVNIQURFUl8yRF9VSU5UOworICAg
ICAgICAgICAgICAgIGNhc2UgR0xfSU5UOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gU1dJ
WlpMRVNIQURFUl8yRF9JTlQ7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNXSVpa
TEVTSEFERVJfSU5WQUxJRDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgY2FzZSBEM0QxMV9TUlZf
RElNRU5TSU9OX1RFWFRVUkVDVUJFOgorICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBTV0laWkxFU0hBREVSX0NVQkVfRkxPQVQ7CisgICAgICAgICAgICAgICAgY2Fz
ZSBHTF9VTlNJR05FRF9JTlQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTV0laWkxFU0hB
REVSX0NVQkVfVUlOVDsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0lOVDoKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIFNXSVpaTEVTSEFERVJfQ1VCRV9JTlQ7CisgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIFNXSVpaTEVTSEFERVJfSU5WQUxJRDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBEM0QxMV9TUlZfRElNRU5TSU9OX1RFWFRVUkUzRDoKKyAgICAgICAgICAgIHN3
aXRjaCAodHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0ZMT0FU
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gU1dJWlpMRVNIQURFUl8zRF9GTE9BVDsKKyAg
ICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIFNXSVpaTEVTSEFERVJfM0RfVUlOVDsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0lO
VDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNXSVpaTEVTSEFERVJfM0RfSU5UOworICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTV0laWkxFU0hBREVSX0lOVkFMSUQ7CisgICAg
ICAgICAgICB9CisgICAgICAgIGNhc2UgRDNEMTFfU1JWX0RJTUVOU0lPTl9URVhUVVJFMkRBUlJB
WToKKyAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBjYXNlIEdMX0ZMT0FUOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gU1dJWlpMRVNI
QURFUl9BUlJBWV9GTE9BVDsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNXSVpaTEVTSEFERVJfQVJSQVlfVUlOVDsKKyAg
ICAgICAgICAgICAgICBjYXNlIEdMX0lOVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNX
SVpaTEVTSEFERVJfQVJSQVlfSU5UOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBT
V0laWkxFU0hBREVSX0lOVkFMSUQ7CisgICAgICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAgICAgICAgcmV0dXJuIFNXSVpaTEVTSEFE
RVJfSU5WQUxJRDsKLSAgICAgICAgfQotICAgICAgZGVmYXVsdDoKLSAgICAgICAgVU5SRUFDSEFC
TEUoKTsKLSAgICAgICAgcmV0dXJuIFNXSVpaTEVTSEFERVJfSU5WQUxJRDsKICAgICB9CiB9CiAK
QEAgLTU4OCwxNyArOTkyLDE3IEBAIEJsaXQxMTo6U2hhZGVyU3VwcG9ydCBCbGl0MTE6OmdldFNo
YWRlclMKIAogICAgIGlmIChzaGFkZXIuZGltZW5zaW9uID09IFNIQURFUl8yRCkKICAgICB7Ci0g
ICAgICAgIHN1cHBvcnQuaW5wdXRMYXlvdXQgPSBtUXVhZDJESUwucmVzb2x2ZShkZXZpY2UpOwot
ICAgICAgICBzdXBwb3J0LnZlcnRleFNoYWRlciA9IG1RdWFkMkRWUy5yZXNvbHZlKGRldmljZSk7
Ci0gICAgICAgIHN1cHBvcnQuZ2VvbWV0cnlTaGFkZXIgPSBudWxscHRyOworICAgICAgICBzdXBw
b3J0LmlucHV0TGF5b3V0ICAgICAgICAgPSBtUXVhZDJESUwucmVzb2x2ZShkZXZpY2UpOworICAg
ICAgICBzdXBwb3J0LnZlcnRleFNoYWRlciAgICAgICAgPSBtUXVhZDJEVlMucmVzb2x2ZShkZXZp
Y2UpOworICAgICAgICBzdXBwb3J0Lmdlb21ldHJ5U2hhZGVyICAgICAgPSBudWxscHRyOwogICAg
ICAgICBzdXBwb3J0LnZlcnRleFdyaXRlRnVuY3Rpb24gPSBXcml0ZTJEVmVydGljZXM7CiAgICAg
fQogICAgIGVsc2UKICAgICB7CiAgICAgICAgIEFTU0VSVChzaGFkZXIuZGltZW5zaW9uID09IFNI
QURFUl8zRCk7Ci0gICAgICAgIHN1cHBvcnQuaW5wdXRMYXlvdXQgPSBtUXVhZDNESUwucmVzb2x2
ZShkZXZpY2UpOwotICAgICAgICBzdXBwb3J0LnZlcnRleFNoYWRlciA9IG1RdWFkM0RWUy5yZXNv
bHZlKGRldmljZSk7Ci0gICAgICAgIHN1cHBvcnQuZ2VvbWV0cnlTaGFkZXIgPSBtUXVhZDNER1Mu
cmVzb2x2ZShkZXZpY2UpOworICAgICAgICBzdXBwb3J0LmlucHV0TGF5b3V0ICAgICAgICAgPSBt
UXVhZDNESUwucmVzb2x2ZShkZXZpY2UpOworICAgICAgICBzdXBwb3J0LnZlcnRleFNoYWRlciAg
ICAgICAgPSBtUXVhZDNEVlMucmVzb2x2ZShkZXZpY2UpOworICAgICAgICBzdXBwb3J0Lmdlb21l
dHJ5U2hhZGVyICAgICAgPSBtUXVhZDNER1MucmVzb2x2ZShkZXZpY2UpOwogICAgICAgICBzdXBw
b3J0LnZlcnRleFdyaXRlRnVuY3Rpb24gPSBXcml0ZTNEVmVydGljZXM7CiAgICAgfQogCkBAIC02
MDgsMTYgKzEwMTIsOSBAQCBCbGl0MTE6OlNoYWRlclN1cHBvcnQgQmxpdDExOjpnZXRTaGFkZXJT
CiBnbDo6RXJyb3IgQmxpdDExOjpzd2l6emxlVGV4dHVyZShJRDNEMTFTaGFkZXJSZXNvdXJjZVZp
ZXcgKnNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMVJlbmRl
clRhcmdldFZpZXcgKmRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6RXh0ZW50cyAmc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBzd2l6emxlUmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHN3aXp6bGVHcmVlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBz
d2l6emxlQmx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzd2l6
emxlQWxwaGEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6U3dp
enpsZVN0YXRlICZzd2l6emxlVGFyZ2V0KQogewotICAgIGdsOjpFcnJvciBlcnJvciA9IGluaXRS
ZXNvdXJjZXMoKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkoaW5pdFJlc291cmNlcygpKTsKIAogICAg
IEhSRVNVTFQgcmVzdWx0OwogICAgIElEM0QxMURldmljZUNvbnRleHQgKmRldmljZUNvbnRleHQg
PSBtUmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKTsKQEAgLTYyNSw4ICsxMDIyLDcgQEAgZ2w6
OkVycm9yIEJsaXQxMTo6c3dpenpsZVRleHR1cmUoSUQzRDExUwogICAgIEQzRDExX1NIQURFUl9S
RVNPVVJDRV9WSUVXX0RFU0Mgc291cmNlU1JWRGVzYzsKICAgICBzb3VyY2UtPkdldERlc2MoJnNv
dXJjZVNSVkRlc2MpOwogCi0gICAgY29uc3QgZDNkMTE6OkRYR0lGb3JtYXQgJmR4Z2lGb3JtYXRJ
bmZvID0gZDNkMTE6OkdldERYR0lGb3JtYXRJbmZvKHNvdXJjZVNSVkRlc2MuRm9ybWF0KTsKLSAg
ICBHTGVudW0gY29tcG9uZW50VHlwZSA9IGR4Z2lGb3JtYXRJbmZvLmNvbXBvbmVudFR5cGU7Cisg
ICAgR0xlbnVtIGNvbXBvbmVudFR5cGUgPSBkM2QxMTo6R2V0Q29tcG9uZW50VHlwZShzb3VyY2VT
UlZEZXNjLkZvcm1hdCk7CiAgICAgaWYgKGNvbXBvbmVudFR5cGUgPT0gR0xfTk9ORSkKICAgICB7
CiAgICAgICAgIC8vIFdlJ3JlIHN3aXp6bGluZyB0aGUgZGVwdGggY29tcG9uZW50IG9mIGEgZGVw
dGgtc3RlbmNpbCB0ZXh0dXJlLgpAQCAtNjQ3LDQ2ICsxMDQzLDQ1IEBAIGdsOjpFcnJvciBCbGl0
MTE6OnN3aXp6bGVUZXh0dXJlKElEM0QxMVMKICAgICBHTGVudW0gc2hhZGVyVHlwZSA9IEdMX05P
TkU7CiAgICAgc3dpdGNoIChjb21wb25lbnRUeXBlKQogICAgIHsKLSAgICAgIGNhc2UgR0xfVU5T
SUdORURfTk9STUFMSVpFRDoKLSAgICAgIGNhc2UgR0xfU0lHTkVEX05PUk1BTElaRUQ6Ci0gICAg
ICBjYXNlIEdMX0ZMT0FUOgotICAgICAgICBzaGFkZXJUeXBlID0gR0xfRkxPQVQ7Ci0gICAgICAg
IGJyZWFrOwotICAgICAgY2FzZSBHTF9JTlQ6Ci0gICAgICAgIHNoYWRlclR5cGUgPSBHTF9JTlQ7
Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6Ci0gICAgICAgIHNo
YWRlclR5cGUgPSBHTF9VTlNJR05FRF9JTlQ7Ci0gICAgICAgIGJyZWFrOwotICAgICAgZGVmYXVs
dDoKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
R0xfVU5TSUdORURfTk9STUFMSVpFRDoKKyAgICAgICAgY2FzZSBHTF9TSUdORURfTk9STUFMSVpF
RDoKKyAgICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAgICAgICAgIHNoYWRlclR5cGUgPSBHTF9G
TE9BVDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX0lOVDoKKyAgICAgICAg
ICAgIHNoYWRlclR5cGUgPSBHTF9JTlQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBHTF9VTlNJR05FRF9JTlQ6CisgICAgICAgICAgICBzaGFkZXJUeXBlID0gR0xfVU5TSUdORURf
SU5UOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY29uc3QgU2hh
ZGVyICpzaGFkZXIgPSBudWxscHRyOwotICAgIGVycm9yID0gZ2V0U3dpenpsZVNoYWRlcihzaGFk
ZXJUeXBlLCBzb3VyY2VTUlZEZXNjLlZpZXdEaW1lbnNpb24sICZzaGFkZXIpOwotICAgIGlmIChl
cnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAg
IEFOR0xFX1RSWShnZXRTd2l6emxlU2hhZGVyKHNoYWRlclR5cGUsIHNvdXJjZVNSVkRlc2MuVmll
d0RpbWVuc2lvbiwgJnNoYWRlcikpOwogCiAgICAgLy8gU2V0IHZlcnRpY2VzCiAgICAgRDNEMTFf
TUFQUEVEX1NVQlJFU09VUkNFIG1hcHBlZFJlc291cmNlOwogICAgIHJlc3VsdCA9IGRldmljZUNv
bnRleHQtPk1hcChtVmVydGV4QnVmZmVyLCAwLCBEM0QxMV9NQVBfV1JJVEVfRElTQ0FSRCwgMCwg
Jm1hcHBlZFJlc291cmNlKTsKICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgewotICAgICAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8gbWFwIGludGVy
bmFsIHZlcnRleCBidWZmZXIgZm9yIHN3aXp6bGUsIEhSRVNVTFQ6IDB4JVguIiwgcmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICJGYWlsZWQgdG8gbWFwIGludGVybmFsIHZlcnRleCBidWZmZXIgZm9yIHN3
aXp6bGUsIEhSRVNVTFQ6IDB4JVguIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQp
OwogICAgIH0KIAogICAgIGNvbnN0IFNoYWRlclN1cHBvcnQgJnN1cHBvcnQgPSBnZXRTaGFkZXJT
dXBwb3J0KCpzaGFkZXIpOwogCi0gICAgVUlOVCBzdHJpZGUgPSAwOwotICAgIFVJTlQgc3RhcnRJ
ZHggPSAwOworICAgIFVJTlQgc3RyaWRlICAgID0gMDsKKyAgICBVSU5UIHN0YXJ0SWR4ICA9IDA7
CiAgICAgVUlOVCBkcmF3Q291bnQgPSAwOwogICAgIEQzRDExX1BSSU1JVElWRV9UT1BPTE9HWSB0
b3BvbG9neTsKIAogICAgIGdsOjpCb3ggYXJlYSgwLCAwLCAwLCBzaXplLndpZHRoLCBzaXplLmhl
aWdodCwgc2l6ZS5kZXB0aCk7Ci0gICAgc3VwcG9ydC52ZXJ0ZXhXcml0ZUZ1bmN0aW9uKGFyZWEs
IHNpemUsIGFyZWEsIHNpemUsIG1hcHBlZFJlc291cmNlLnBEYXRhLCAmc3RyaWRlLCAmZHJhd0Nv
dW50LCAmdG9wb2xvZ3kpOworICAgIHN1cHBvcnQudmVydGV4V3JpdGVGdW5jdGlvbihhcmVhLCBz
aXplLCBhcmVhLCBzaXplLCBtYXBwZWRSZXNvdXJjZS5wRGF0YSwgJnN0cmlkZSwgJmRyYXdDb3Vu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRvcG9sb2d5KTsKIAogICAgIGRl
dmljZUNvbnRleHQtPlVubWFwKG1WZXJ0ZXhCdWZmZXIsIDApOwogCkBAIC02OTQsMTQgKzEwODks
MTYgQEAgZ2w6OkVycm9yIEJsaXQxMTo6c3dpenpsZVRleHR1cmUoSUQzRDExUwogICAgIHJlc3Vs
dCA9IGRldmljZUNvbnRleHQtPk1hcChtU3dpenpsZUNCLCAwLCBEM0QxMV9NQVBfV1JJVEVfRElT
Q0FSRCwgMCwgJm1hcHBlZFJlc291cmNlKTsKICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAg
ewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8g
bWFwIGludGVybmFsIGNvbnN0YW50IGJ1ZmZlciBmb3Igc3dpenpsZSwgSFJFU1VMVDogMHglWC4i
LCByZXN1bHQpOworICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBtYXAgaW50ZXJuYWwgY29uc3RhbnQg
YnVmZmVyIGZvciBzd2l6emxlLCBIUkVTVUxUOiAweCVYLiIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0KTsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBpbnQgKnN3aXp6bGVJbmRpY2Vz
ID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBpbnQqPihtYXBwZWRSZXNvdXJjZS5wRGF0YSk7
Ci0gICAgc3dpenpsZUluZGljZXNbMF0gPSBHZXRTd2l6emxlSW5kZXgoc3dpenpsZVJlZCk7Ci0g
ICAgc3dpenpsZUluZGljZXNbMV0gPSBHZXRTd2l6emxlSW5kZXgoc3dpenpsZUdyZWVuKTsKLSAg
ICBzd2l6emxlSW5kaWNlc1syXSA9IEdldFN3aXp6bGVJbmRleChzd2l6emxlQmx1ZSk7Ci0gICAg
c3dpenpsZUluZGljZXNbM10gPSBHZXRTd2l6emxlSW5kZXgoc3dpenpsZUFscGhhKTsKKyAgICB1
bnNpZ25lZCBpbnQgKnN3aXp6bGVJbmRpY2VzID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBp
bnQgKj4obWFwcGVkUmVzb3VyY2UucERhdGEpOworICAgIHN3aXp6bGVJbmRpY2VzWzBdICAgICAg
ICAgICAgPSBHZXRTd2l6emxlSW5kZXgoc3dpenpsZVRhcmdldC5zd2l6emxlUmVkKTsKKyAgICBz
d2l6emxlSW5kaWNlc1sxXSAgICAgICAgICAgID0gR2V0U3dpenpsZUluZGV4KHN3aXp6bGVUYXJn
ZXQuc3dpenpsZUdyZWVuKTsKKyAgICBzd2l6emxlSW5kaWNlc1syXSAgICAgICAgICAgID0gR2V0
U3dpenpsZUluZGV4KHN3aXp6bGVUYXJnZXQuc3dpenpsZUJsdWUpOworICAgIHN3aXp6bGVJbmRp
Y2VzWzNdICAgICAgICAgICAgPSBHZXRTd2l6emxlSW5kZXgoc3dpenpsZVRhcmdldC5zd2l6emxl
QWxwaGEpOwogCiAgICAgZGV2aWNlQ29udGV4dC0+VW5tYXAobVN3aXp6bGVDQiwgMCk7CiAKQEAg
LTczNSw4ICsxMTMyLDggQEAgZ2w6OkVycm9yIEJsaXQxMTo6c3dpenpsZVRleHR1cmUoSUQzRDEx
UwogICAgIEQzRDExX1ZJRVdQT1JUIHZpZXdwb3J0OwogICAgIHZpZXdwb3J0LlRvcExlZnRYID0g
MDsKICAgICB2aWV3cG9ydC5Ub3BMZWZ0WSA9IDA7Ci0gICAgdmlld3BvcnQuV2lkdGggPSBzdGF0
aWNfY2FzdDxGTE9BVD4oc2l6ZS53aWR0aCk7Ci0gICAgdmlld3BvcnQuSGVpZ2h0ID0gc3RhdGlj
X2Nhc3Q8RkxPQVQ+KHNpemUuaGVpZ2h0KTsKKyAgICB2aWV3cG9ydC5XaWR0aCAgICA9IHN0YXRp
Y19jYXN0PEZMT0FUPihzaXplLndpZHRoKTsKKyAgICB2aWV3cG9ydC5IZWlnaHQgICA9IHN0YXRp
Y19jYXN0PEZMT0FUPihzaXplLmhlaWdodCk7CiAgICAgdmlld3BvcnQuTWluRGVwdGggPSAwLjBm
OwogICAgIHZpZXdwb3J0Lk1heERlcHRoID0gMS4wZjsKICAgICBkZXZpY2VDb250ZXh0LT5SU1Nl
dFZpZXdwb3J0cygxLCAmdmlld3BvcnQpOwpAQCAtNzUzLDcgKzExNTAsNyBAQCBnbDo6RXJyb3Ig
QmxpdDExOjpzd2l6emxlVGV4dHVyZShJRDNEMTFTCiAgICAgLy8gVW5iaW5kIHRleHR1cmVzIGFu
ZCByZW5kZXIgdGFyZ2V0cyBhbmQgdmVydGV4IGJ1ZmZlcgogICAgIHN0YXRlTWFuYWdlci0+c2V0
U2hhZGVyUmVzb3VyY2UoZ2w6OlNBTVBMRVJfUElYRUwsIDAsIG51bGxwdHIpOwogCi0gICAgVUlO
VCB6ZXJvID0gMDsKKyAgICBVSU5UIHplcm8gICAgICAgICAgICAgICAgICAgICAgPSAwOwogICAg
IElEM0QxMUJ1ZmZlciAqY29uc3QgbnVsbEJ1ZmZlciA9IG51bGxwdHI7CiAgICAgZGV2aWNlQ29u
dGV4dC0+SUFTZXRWZXJ0ZXhCdWZmZXJzKDAsIDEsICZudWxsQnVmZmVyLCAmemVybywgJnplcm8p
OwogCkBAIC03NzEsMTMgKzExNjgsMTEgQEAgZ2w6OkVycm9yIEJsaXQxMTo6Y29weVRleHR1cmUo
SUQzRDExU2hhZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3Rh
bmdsZSAqc2Npc3NvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0
Rm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbHRlciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbWFza09mZkFscGhhKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBtYXNrT2ZmQWxwaGEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIHVucGFja1ByZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIHVucGFja1VubXVsdGlwbHlBbHBoYSkKIHsKLSAgICBnbDo6
RXJyb3IgZXJyb3IgPSBpbml0UmVzb3VyY2VzKCk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKGluaXRS
ZXNvdXJjZXMoKSk7CiAKICAgICBIUkVTVUxUIHJlc3VsdDsKICAgICBJRDNEMTFEZXZpY2VDb250
ZXh0ICpkZXZpY2VDb250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CkBAIC03
ODcsMjEgKzExODIsMTggQEAgZ2w6OkVycm9yIEJsaXQxMTo6Y29weVRleHR1cmUoSUQzRDExU2hh
ZAogICAgIEQzRDExX1NIQURFUl9SRVNPVVJDRV9WSUVXX0RFU0Mgc291cmNlU1JWRGVzYzsKICAg
ICBzb3VyY2UtPkdldERlc2MoJnNvdXJjZVNSVkRlc2MpOwogCi0gICAgY29uc3QgZDNkMTE6OkRY
R0lGb3JtYXQgJmR4Z2lGb3JtYXRJbmZvID0gZDNkMTE6OkdldERYR0lGb3JtYXRJbmZvKHNvdXJj
ZVNSVkRlc2MuRm9ybWF0KTsKLSAgICBHTGVudW0gY29tcG9uZW50VHlwZSAgICAgICAgICAgICAg
ICAgICAgPSBkeGdpRm9ybWF0SW5mby5jb21wb25lbnRUeXBlOworICAgIEdMZW51bSBjb21wb25l
bnRUeXBlID0gZDNkMTE6OkdldENvbXBvbmVudFR5cGUoc291cmNlU1JWRGVzYy5Gb3JtYXQpOwog
CiAgICAgQVNTRVJUKGNvbXBvbmVudFR5cGUgIT0gR0xfTk9ORSk7CiAgICAgQVNTRVJUKGNvbXBv
bmVudFR5cGUgIT0gR0xfU0lHTkVEX05PUk1BTElaRUQpOwogICAgIGJvb2wgaXNTaWduZWQgPSAo
Y29tcG9uZW50VHlwZSA9PSBHTF9JTlQpOwogCi0gICAgU2hhZGVyRGltZW5zaW9uIGRpbWVuc2lv
biA9IChzb3VyY2VTUlZEZXNjLlZpZXdEaW1lbnNpb24gPT0gRDNEMTFfU1JWX0RJTUVOU0lPTl9U
RVhUVVJFM0QpID8gU0hBREVSXzNEIDogU0hBREVSXzJEOworICAgIFNoYWRlckRpbWVuc2lvbiBk
aW1lbnNpb24gPQorICAgICAgICAoc291cmNlU1JWRGVzYy5WaWV3RGltZW5zaW9uID09IEQzRDEx
X1NSVl9ESU1FTlNJT05fVEVYVFVSRTNEKSA/IFNIQURFUl8zRCA6IFNIQURFUl8yRDsKIAogICAg
IGNvbnN0IFNoYWRlciAqc2hhZGVyID0gbnVsbHB0cjsKLSAgICBlcnJvciA9IGdldEJsaXRTaGFk
ZXIoZGVzdEZvcm1hdCwgaXNTaWduZWQsIGRpbWVuc2lvbiwgJnNoYWRlcik7Ci0gICAgaWYgKGVy
cm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAg
QU5HTEVfVFJZKGdldEJsaXRTaGFkZXIoZGVzdEZvcm1hdCwgaXNTaWduZWQsIHVucGFja1ByZW11
bHRpcGx5QWxwaGEsIHVucGFja1VubXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkaW1lbnNpb24sICZzaGFkZXIpKTsKIAogICAgIGNvbnN0IFNoYWRlclN1cHBvcnQg
JnN1cHBvcnQgPSBnZXRTaGFkZXJTdXBwb3J0KCpzaGFkZXIpOwogCkBAIC04MTAsMTEgKzEyMDIs
MTMgQEAgZ2w6OkVycm9yIEJsaXQxMTo6Y29weVRleHR1cmUoSUQzRDExU2hhZAogICAgIHJlc3Vs
dCA9IGRldmljZUNvbnRleHQtPk1hcChtVmVydGV4QnVmZmVyLCAwLCBEM0QxMV9NQVBfV1JJVEVf
RElTQ0FSRCwgMCwgJm1hcHBlZFJlc291cmNlKTsKICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAg
ICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQg
dG8gbWFwIGludGVybmFsIHZlcnRleCBidWZmZXIgZm9yIHRleHR1cmUgY29weSwgSFJFU1VMVDog
MHglWC4iLCByZXN1bHQpOworICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1P
UlksCisgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBtYXAgaW50ZXJuYWwgdmVy
dGV4IGJ1ZmZlciBmb3IgdGV4dHVyZSBjb3B5LCBIUkVTVUxUOiAweCVYLiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0KTsKICAgICB9CiAKLSAgICBVSU5UIHN0cmlkZSA9IDA7Ci0g
ICAgVUlOVCBzdGFydElkeCA9IDA7CisgICAgVUlOVCBzdHJpZGUgICAgPSAwOworICAgIFVJTlQg
c3RhcnRJZHggID0gMDsKICAgICBVSU5UIGRyYXdDb3VudCA9IDA7CiAgICAgRDNEMTFfUFJJTUlU
SVZFX1RPUE9MT0dZIHRvcG9sb2d5OwogCkBAIC04NDIsOSArMTIzNiw5IEBAIGdsOjpFcnJvciBC
bGl0MTE6OmNvcHlUZXh0dXJlKElEM0QxMVNoYWQKICAgICBpZiAoc2Npc3NvcikKICAgICB7CiAg
ICAgICAgIEQzRDExX1JFQ1Qgc2Npc3NvclJlY3Q7Ci0gICAgICAgIHNjaXNzb3JSZWN0LmxlZnQg
PSBzY2lzc29yLT54OwotICAgICAgICBzY2lzc29yUmVjdC5yaWdodCA9IHNjaXNzb3ItPnggKyBz
Y2lzc29yLT53aWR0aDsKLSAgICAgICAgc2Npc3NvclJlY3QudG9wID0gc2Npc3Nvci0+eTsKKyAg
ICAgICAgc2Npc3NvclJlY3QubGVmdCAgID0gc2Npc3Nvci0+eDsKKyAgICAgICAgc2Npc3NvclJl
Y3QucmlnaHQgID0gc2Npc3Nvci0+eCArIHNjaXNzb3ItPndpZHRoOworICAgICAgICBzY2lzc29y
UmVjdC50b3AgICAgPSBzY2lzc29yLT55OwogICAgICAgICBzY2lzc29yUmVjdC5ib3R0b20gPSBz
Y2lzc29yLT55ICsgc2Npc3Nvci0+aGVpZ2h0OwogCiAgICAgICAgIGRldmljZUNvbnRleHQtPlJT
U2V0U2Npc3NvclJlY3RzKDEsICZzY2lzc29yUmVjdCk7CkBAIC04NzQsOCArMTI2OCw4IEBAIGds
OjpFcnJvciBCbGl0MTE6OmNvcHlUZXh0dXJlKElEM0QxMVNoYWQKICAgICBEM0QxMV9WSUVXUE9S
VCB2aWV3cG9ydDsKICAgICB2aWV3cG9ydC5Ub3BMZWZ0WCA9IDA7CiAgICAgdmlld3BvcnQuVG9w
TGVmdFkgPSAwOwotICAgIHZpZXdwb3J0LldpZHRoID0gc3RhdGljX2Nhc3Q8RkxPQVQ+KGRlc3RT
aXplLndpZHRoKTsKLSAgICB2aWV3cG9ydC5IZWlnaHQgPSBzdGF0aWNfY2FzdDxGTE9BVD4oZGVz
dFNpemUuaGVpZ2h0KTsKKyAgICB2aWV3cG9ydC5XaWR0aCAgICA9IHN0YXRpY19jYXN0PEZMT0FU
PihkZXN0U2l6ZS53aWR0aCk7CisgICAgdmlld3BvcnQuSGVpZ2h0ICAgPSBzdGF0aWNfY2FzdDxG
TE9BVD4oZGVzdFNpemUuaGVpZ2h0KTsKICAgICB2aWV3cG9ydC5NaW5EZXB0aCA9IDAuMGY7CiAg
ICAgdmlld3BvcnQuTWF4RGVwdGggPSAxLjBmOwogICAgIGRldmljZUNvbnRleHQtPlJTU2V0Vmll
d3BvcnRzKDEsICZ2aWV3cG9ydCk7CkBAIC04ODcsMTIgKzEyODEsMTYgQEAgZ2w6OkVycm9yIEJs
aXQxMTo6Y29weVRleHR1cmUoSUQzRDExU2hhZAogICAgIElEM0QxMVNhbXBsZXJTdGF0ZSAqc2Ft
cGxlciA9IG51bGxwdHI7CiAgICAgc3dpdGNoIChmaWx0ZXIpCiAgICAgewotICAgICAgY2FzZSBH
TF9ORUFSRVNUOiBzYW1wbGVyID0gbVBvaW50U2FtcGxlcjsgIGJyZWFrOwotICAgICAgY2FzZSBH
TF9MSU5FQVI6ICBzYW1wbGVyID0gbUxpbmVhclNhbXBsZXI7IGJyZWFrOworICAgICAgICBjYXNl
IEdMX05FQVJFU1Q6CisgICAgICAgICAgICBzYW1wbGVyID0gbVBvaW50U2FtcGxlcjsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX0xJTkVBUjoKKyAgICAgICAgICAgIHNhbXBs
ZXIgPSBtTGluZWFyU2FtcGxlcjsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICBkZWZhdWx0
OgotICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09V
VF9PRl9NRU1PUlksICJJbnRlcm5hbCBlcnJvciwgdW5rbm93biBibGl0IGZpbHRlciBtb2RlLiIp
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkludGVybmFsIGVycm9yLCB1
bmtub3duIGJsaXQgZmlsdGVyIG1vZGUuIik7CiAgICAgfQogICAgIGRldmljZUNvbnRleHQtPlBT
U2V0U2FtcGxlcnMoMCwgMSwgJnNhbXBsZXIpOwogCkBAIC05MDIsMzMgKzEzMDAsMzggQEAgZ2w6
OkVycm9yIEJsaXQxMTo6Y29weVRleHR1cmUoSUQzRDExU2hhZAogICAgIC8vIFVuYmluZCB0ZXh0
dXJlcyBhbmQgcmVuZGVyIHRhcmdldHMgYW5kIHZlcnRleCBidWZmZXIKICAgICBzdGF0ZU1hbmFn
ZXItPnNldFNoYWRlclJlc291cmNlKGdsOjpTQU1QTEVSX1BJWEVMLCAwLCBudWxscHRyKTsKIAot
ICAgIFVJTlQgemVybyA9IDA7CisgICAgVUlOVCB6ZXJvICAgICAgICAgICAgICAgICAgICAgID0g
MDsKICAgICBJRDNEMTFCdWZmZXIgKmNvbnN0IG51bGxCdWZmZXIgPSBudWxscHRyOwogICAgIGRl
dmljZUNvbnRleHQtPklBU2V0VmVydGV4QnVmZmVycygwLCAxLCAmbnVsbEJ1ZmZlciwgJnplcm8s
ICZ6ZXJvKTsKIAogICAgIG1SZW5kZXJlci0+bWFya0FsbFN0YXRlRGlydHkoKTsKIAotICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwog
fQogCi1nbDo6RXJyb3IgQmxpdDExOjpjb3B5U3RlbmNpbChJRDNEMTFSZXNvdXJjZSAqc291cmNl
LCB1bnNpZ25lZCBpbnQgc291cmNlU3VicmVzb3VyY2UsIGNvbnN0IGdsOjpCb3ggJnNvdXJjZUFy
ZWEsIGNvbnN0IGdsOjpFeHRlbnRzICZzb3VyY2VTaXplLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSUQzRDExUmVzb3VyY2UgKmRlc3QsIHVuc2lnbmVkIGludCBkZXN0U3VicmVzb3Vy
Y2UsIGNvbnN0IGdsOjpCb3ggJmRlc3RBcmVhLCBjb25zdCBnbDo6RXh0ZW50cyAmZGVzdFNpemUs
CitnbDo6RXJyb3IgQmxpdDExOjpjb3B5U3RlbmNpbChjb25zdCBUZXh0dXJlSGVscGVyMTEgJnNv
dXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VT
dWJyZXNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3gg
JnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0
ZW50cyAmc291cmNlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRl
eHR1cmVIZWxwZXIxMSAmZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBkZXN0U3VicmVzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6Qm94ICZkZXN0QXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpFeHRlbnRzICZkZXN0U2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpSZWN0YW5nbGUgKnNjaXNzb3IpCiB7Ci0gICAgcmV0dXJuIGNvcHlEZXB0aFN0
ZW5jaWwoc291cmNlLCBzb3VyY2VTdWJyZXNvdXJjZSwgc291cmNlQXJlYSwgc291cmNlU2l6ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0LCBkZXN0U3VicmVzb3VyY2UsIGRlc3RB
cmVhLCBkZXN0U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lzc29yLCB0cnVl
KTsKKyAgICByZXR1cm4gY29weURlcHRoU3RlbmNpbEltcGwoc291cmNlLCBzb3VyY2VTdWJyZXNv
dXJjZSwgc291cmNlQXJlYSwgc291cmNlU2l6ZSwgZGVzdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVzdFN1YnJlc291cmNlLCBkZXN0QXJlYSwgZGVzdFNpemUsIHNjaXNzb3Is
IHRydWUpOwogfQogCi1nbDo6RXJyb3IgQmxpdDExOjpjb3B5RGVwdGgoSUQzRDExU2hhZGVyUmVz
b3VyY2VWaWV3ICpzb3VyY2UsIGNvbnN0IGdsOjpCb3ggJnNvdXJjZUFyZWEsIGNvbnN0IGdsOjpF
eHRlbnRzICZzb3VyY2VTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMURl
cHRoU3RlbmNpbFZpZXcgKmRlc3QsIGNvbnN0IGdsOjpCb3ggJmRlc3RBcmVhLCBjb25zdCBnbDo6
RXh0ZW50cyAmZGVzdFNpemUsCitnbDo6RXJyb3IgQmxpdDExOjpjb3B5RGVwdGgoSUQzRDExU2hh
ZGVyUmVzb3VyY2VWaWV3ICpzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OkJveCAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6RXh0ZW50cyAmc291cmNlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
RDNEMTFEZXB0aFN0ZW5jaWxWaWV3ICpkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpCb3ggJmRlc3RBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpFeHRlbnRzICZkZXN0U2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6UmVjdGFuZ2xlICpzY2lzc29yKQogewotICAgIGdsOjpFcnJvciBlcnJvciA9IGlu
aXRSZXNvdXJjZXMoKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkoaW5pdFJlc291cmNlcygpKTsKIAog
ICAgIEhSRVNVTFQgcmVzdWx0OwogICAgIElEM0QxMURldmljZUNvbnRleHQgKmRldmljZUNvbnRl
eHQgPSBtUmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKTsKQEAgLTkzOCwxNiArMTM0MSwxOCBA
QCBnbDo6RXJyb3IgQmxpdDExOjpjb3B5RGVwdGgoSUQzRDExU2hhZGVyCiAgICAgcmVzdWx0ID0g
ZGV2aWNlQ29udGV4dC0+TWFwKG1WZXJ0ZXhCdWZmZXIsIDAsIEQzRDExX01BUF9XUklURV9ESVND
QVJELCAwLCAmbWFwcGVkUmVzb3VyY2UpOwogICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBt
YXAgaW50ZXJuYWwgdmVydGV4IGJ1ZmZlciBmb3IgdGV4dHVyZSBjb3B5LCBIUkVTVUxUOiAweCVY
LiIsIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIG1hcCBpbnRlcm5hbCB2ZXJ0ZXgg
YnVmZmVyIGZvciB0ZXh0dXJlIGNvcHksIEhSRVNVTFQ6IDB4JVguIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICByZXN1bHQpOwogICAgIH0KIAotICAgIFVJTlQgc3RyaWRlID0gMDsKLSAgICBV
SU5UIHN0YXJ0SWR4ID0gMDsKKyAgICBVSU5UIHN0cmlkZSAgICA9IDA7CisgICAgVUlOVCBzdGFy
dElkeCAgPSAwOwogICAgIFVJTlQgZHJhd0NvdW50ID0gMDsKICAgICBEM0QxMV9QUklNSVRJVkVf
VE9QT0xPR1kgdG9wb2xvZ3k7CiAKLSAgICBXcml0ZTJEVmVydGljZXMoc291cmNlQXJlYSwgc291
cmNlU2l6ZSwgZGVzdEFyZWEsIGRlc3RTaXplLCBtYXBwZWRSZXNvdXJjZS5wRGF0YSwKLSAgICAg
ICAgICAgICAgICAgICAgJnN0cmlkZSwgJmRyYXdDb3VudCwgJnRvcG9sb2d5KTsKKyAgICBXcml0
ZTJEVmVydGljZXMoc291cmNlQXJlYSwgc291cmNlU2l6ZSwgZGVzdEFyZWEsIGRlc3RTaXplLCBt
YXBwZWRSZXNvdXJjZS5wRGF0YSwgJnN0cmlkZSwKKyAgICAgICAgICAgICAgICAgICAgJmRyYXdD
b3VudCwgJnRvcG9sb2d5KTsKIAogICAgIGRldmljZUNvbnRleHQtPlVubWFwKG1WZXJ0ZXhCdWZm
ZXIsIDApOwogCkBAIC05NjEsOSArMTM2Niw5IEBAIGdsOjpFcnJvciBCbGl0MTE6OmNvcHlEZXB0
aChJRDNEMTFTaGFkZXIKICAgICBpZiAoc2Npc3NvcikKICAgICB7CiAgICAgICAgIEQzRDExX1JF
Q1Qgc2Npc3NvclJlY3Q7Ci0gICAgICAgIHNjaXNzb3JSZWN0LmxlZnQgPSBzY2lzc29yLT54Owot
ICAgICAgICBzY2lzc29yUmVjdC5yaWdodCA9IHNjaXNzb3ItPnggKyBzY2lzc29yLT53aWR0aDsK
LSAgICAgICAgc2Npc3NvclJlY3QudG9wID0gc2Npc3Nvci0+eTsKKyAgICAgICAgc2Npc3NvclJl
Y3QubGVmdCAgID0gc2Npc3Nvci0+eDsKKyAgICAgICAgc2Npc3NvclJlY3QucmlnaHQgID0gc2Np
c3Nvci0+eCArIHNjaXNzb3ItPndpZHRoOworICAgICAgICBzY2lzc29yUmVjdC50b3AgICAgPSBz
Y2lzc29yLT55OwogICAgICAgICBzY2lzc29yUmVjdC5ib3R0b20gPSBzY2lzc29yLT55ICsgc2Np
c3Nvci0+aGVpZ2h0OwogCiAgICAgICAgIGRldmljZUNvbnRleHQtPlJTU2V0U2Npc3NvclJlY3Rz
KDEsICZzY2lzc29yUmVjdCk7CkBAIC05NzQsNyArMTM3OSw3IEBAIGdsOjpFcnJvciBCbGl0MTE6
OmNvcHlEZXB0aChJRDNEMTFTaGFkZXIKICAgICAgICAgZGV2aWNlQ29udGV4dC0+UlNTZXRTdGF0
ZShtU2Npc3NvckRpc2FibGVkUmFzdGVyaXplclN0YXRlKTsKICAgICB9CiAKLSAgICBJRDNEMTFE
ZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisgICAgSUQzRDExRGV2aWNl
ICpkZXZpY2UgICAgICAgICA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CiAgICAgSUQzRDExVmVy
dGV4U2hhZGVyICpxdWFkMkRWUyA9IG1RdWFkMkRWUy5yZXNvbHZlKGRldmljZSk7CiAgICAgaWYg
KHF1YWQyRFZTID09IG51bGxwdHIpCiAgICAgewpAQCAtMTAwMCw4ICsxNDA1LDggQEAgZ2w6OkVy
cm9yIEJsaXQxMTo6Y29weURlcHRoKElEM0QxMVNoYWRlcgogICAgIEQzRDExX1ZJRVdQT1JUIHZp
ZXdwb3J0OwogICAgIHZpZXdwb3J0LlRvcExlZnRYID0gMDsKICAgICB2aWV3cG9ydC5Ub3BMZWZ0
WSA9IDA7Ci0gICAgdmlld3BvcnQuV2lkdGggPSBzdGF0aWNfY2FzdDxGTE9BVD4oZGVzdFNpemUu
d2lkdGgpOwotICAgIHZpZXdwb3J0LkhlaWdodCA9IHN0YXRpY19jYXN0PEZMT0FUPihkZXN0U2l6
ZS5oZWlnaHQpOworICAgIHZpZXdwb3J0LldpZHRoICAgID0gc3RhdGljX2Nhc3Q8RkxPQVQ+KGRl
c3RTaXplLndpZHRoKTsKKyAgICB2aWV3cG9ydC5IZWlnaHQgICA9IHN0YXRpY19jYXN0PEZMT0FU
PihkZXN0U2l6ZS5oZWlnaHQpOwogICAgIHZpZXdwb3J0Lk1pbkRlcHRoID0gMC4wZjsKICAgICB2
aWV3cG9ydC5NYXhEZXB0aCA9IDEuMGY7CiAgICAgZGV2aWNlQ29udGV4dC0+UlNTZXRWaWV3cG9y
dHMoMSwgJnZpZXdwb3J0KTsKQEAgLTEwMTgsNyArMTQyMyw3IEBAIGdsOjpFcnJvciBCbGl0MTE6
OmNvcHlEZXB0aChJRDNEMTFTaGFkZXIKICAgICAvLyBVbmJpbmQgdGV4dHVyZXMgYW5kIHJlbmRl
ciB0YXJnZXRzIGFuZCB2ZXJ0ZXggYnVmZmVyCiAgICAgc3RhdGVNYW5hZ2VyLT5zZXRTaGFkZXJS
ZXNvdXJjZShnbDo6U0FNUExFUl9QSVhFTCwgMCwgbnVsbHB0cik7CiAKLSAgICBVSU5UIHplcm8g
PSAwOworICAgIFVJTlQgemVybyAgICAgICAgICAgICAgICAgICAgICA9IDA7CiAgICAgSUQzRDEx
QnVmZmVyICpjb25zdCBudWxsQnVmZmVyID0gbnVsbHB0cjsKICAgICBkZXZpY2VDb250ZXh0LT5J
QVNldFZlcnRleEJ1ZmZlcnMoMCwgMSwgJm51bGxCdWZmZXIsICZ6ZXJvLCAmemVybyk7CiAKQEAg
LTEwMjcsNTYgKzE0MzIsNTEgQEAgZ2w6OkVycm9yIEJsaXQxMTo6Y29weURlcHRoKElEM0QxMVNo
YWRlcgogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi1nbDo6RXJyb3Ig
QmxpdDExOjpjb3B5RGVwdGhTdGVuY2lsKElEM0QxMVJlc291cmNlICpzb3VyY2UsIHVuc2lnbmVk
IGludCBzb3VyY2VTdWJyZXNvdXJjZSwgY29uc3QgZ2w6OkJveCAmc291cmNlQXJlYSwgY29uc3Qg
Z2w6OkV4dGVudHMgJnNvdXJjZVNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIElEM0QxMVJlc291cmNlICpkZXN0LCB1bnNpZ25lZCBpbnQgZGVzdFN1YnJlc291cmNlLCBj
b25zdCBnbDo6Qm94ICZkZXN0QXJlYSwgY29uc3QgZ2w6OkV4dGVudHMgJmRlc3RTaXplLAorZ2w6
OkVycm9yIEJsaXQxMTo6Y29weURlcHRoU3RlbmNpbChjb25zdCBUZXh0dXJlSGVscGVyMTEgJnNv
dXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNv
dXJjZVN1YnJlc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6Qm94ICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6RXh0ZW50cyAmc291cmNlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVGV4dHVyZUhlbHBlcjExICZkZXN0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGVzdFN1YnJlc291cmNlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZkZXN0QXJlYSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJmRlc3RT
aXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFu
Z2xlICpzY2lzc29yKQogewotICAgIHJldHVybiBjb3B5RGVwdGhTdGVuY2lsKHNvdXJjZSwgc291
cmNlU3VicmVzb3VyY2UsIHNvdXJjZUFyZWEsIHNvdXJjZVNpemUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVzdCwgZGVzdFN1YnJlc291cmNlLCBkZXN0QXJlYSwgZGVzdFNpemUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Npc3NvciwgZmFsc2UpOworICAgIHJldHVybiBj
b3B5RGVwdGhTdGVuY2lsSW1wbChzb3VyY2UsIHNvdXJjZVN1YnJlc291cmNlLCBzb3VyY2VBcmVh
LCBzb3VyY2VTaXplLCBkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0
U3VicmVzb3VyY2UsIGRlc3RBcmVhLCBkZXN0U2l6ZSwgc2Npc3NvciwgZmFsc2UpOwogfQogCi1n
bDo6RXJyb3IgQmxpdDExOjpjb3B5RGVwdGhTdGVuY2lsKElEM0QxMVJlc291cmNlICpzb3VyY2Us
IHVuc2lnbmVkIGludCBzb3VyY2VTdWJyZXNvdXJjZSwgY29uc3QgZ2w6OkJveCAmc291cmNlQXJl
YSwgY29uc3QgZ2w6OkV4dGVudHMgJnNvdXJjZVNpemUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIElEM0QxMVJlc291cmNlICpkZXN0LCB1bnNpZ25lZCBpbnQgZGVzdFN1YnJl
c291cmNlLCBjb25zdCBnbDo6Qm94ICZkZXN0QXJlYSwgY29uc3QgZ2w6OkV4dGVudHMgJmRlc3RT
aXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFu
Z2xlICpzY2lzc29yLCBib29sIHN0ZW5jaWxPbmx5KQotewotICAgIGdsOjpFcnJvciBlcnJvciA9
IGluaXRSZXNvdXJjZXMoKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGVycm9yOwotICAgIH0KLQotICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJl
bmRlcmVyLT5nZXREZXZpY2UoKTsKLSAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpkZXZpY2VDb250
ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CitnbDo6RXJyb3IgQmxpdDExOjpj
b3B5RGVwdGhTdGVuY2lsSW1wbChjb25zdCBUZXh0dXJlSGVscGVyMTEgJnNvdXJjZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VTdWJy
ZXNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpCb3ggJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6RXh0ZW50cyAmc291cmNlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFRleHR1cmVIZWxwZXIxMSAmZGVzdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkZXN0U3VicmVzb3VyY2Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZk
ZXN0QXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpFeHRlbnRzICZkZXN0U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgKnNjaXNzb3IsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIHN0ZW5jaWxPbmx5KQoreworICAgIGF1dG8gc3JjRFhHSUZv
cm1hdCAgICAgICAgID0gc291cmNlLmdldEZvcm1hdCgpOworICAgIGNvbnN0IGF1dG8gJnNyY1Np
emVJbmZvICAgID0gZDNkMTE6OkdldERYR0lGb3JtYXRTaXplSW5mbyhzcmNEWEdJRm9ybWF0KTsK
KyAgICB1bnNpZ25lZCBpbnQgc3JjUGl4ZWxTaXplICA9IHNyY1NpemVJbmZvLnBpeGVsQnl0ZXM7
CisgICAgdW5zaWduZWQgaW50IGNvcHlPZmZzZXQgICAgPSAwOworICAgIHVuc2lnbmVkIGludCBj
b3B5U2l6ZSAgICAgID0gc3JjUGl4ZWxTaXplOworICAgIGF1dG8gZGVzdERYR0lGb3JtYXQgICAg
ICAgID0gZGVzdC5nZXRGb3JtYXQoKTsKKyAgICBjb25zdCBhdXRvICZkZXN0U2l6ZUluZm8gICA9
IGQzZDExOjpHZXREWEdJRm9ybWF0U2l6ZUluZm8oZGVzdERYR0lGb3JtYXQpOworICAgIHVuc2ln
bmVkIGludCBkZXN0UGl4ZWxTaXplID0gZGVzdFNpemVJbmZvLnBpeGVsQnl0ZXM7CiAKLSAgICBJ
RDNEMTFSZXNvdXJjZSAqc291cmNlU3RhZ2luZyA9IENyZWF0ZVN0YWdpbmdUZXh0dXJlKGRldmlj
ZSwgZGV2aWNlQ29udGV4dCwgc291cmNlLCBzb3VyY2VTdWJyZXNvdXJjZSwgc291cmNlU2l6ZSwg
RDNEMTFfQ1BVX0FDQ0VTU19SRUFEKTsKLSAgICAvLyBIQUNLOiBDcmVhdGUgdGhlIGRlc3RpbmF0
aW9uIHN0YWdpbmcgYnVmZmVyIGFzIGEgcmVhZC93cml0ZSB0ZXh0dXJlIHNvIElEM0QxMURldmlj
Q29udGV4dDo6VXBkYXRlU3VicmVzb3VyY2UgY2FuIGJlIGNhbGxlZAotICAgIC8vICAgICAgIHVz
aW5nIGl0J3MgbWFwcGVkIGRhdGEgYXMgYSBzb3VyY2UKLSAgICBJRDNEMTFSZXNvdXJjZSAqZGVz
dFN0YWdpbmcgPSBDcmVhdGVTdGFnaW5nVGV4dHVyZShkZXZpY2UsIGRldmljZUNvbnRleHQsIGRl
c3QsIGRlc3RTdWJyZXNvdXJjZSwgZGVzdFNpemUsIEQzRDExX0NQVV9BQ0NFU1NfUkVBRCB8IEQz
RDExX0NQVV9BQ0NFU1NfV1JJVEUpOwotCi0gICAgaWYgKCFzb3VyY2VTdGFnaW5nIHx8ICFkZXN0
U3RhZ2luZykKLSAgICB7Ci0gICAgICAgIFNhZmVSZWxlYXNlKHNvdXJjZVN0YWdpbmcpOwotICAg
ICAgICBTYWZlUmVsZWFzZShkZXN0U3RhZ2luZyk7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBjcmVhdGUgaW50ZXJuYWwgc3RhZ2luZyB0ZXh0
dXJlcyBmb3IgZGVwdGggc3RlbmNpbCBibGl0LiIpOwotICAgIH0KKyAgICBBU1NFUlQoc3JjRFhH
SUZvcm1hdCA9PSBkZXN0RFhHSUZvcm1hdCB8fCBkZXN0RFhHSUZvcm1hdCA9PSBEWEdJX0ZPUk1B
VF9SMzJfVFlQRUxFU1MpOwogCi0gICAgRFhHSV9GT1JNQVQgZm9ybWF0ID0gR2V0VGV4dHVyZUZv
cm1hdChzb3VyY2UpOwotICAgIEFTU0VSVChmb3JtYXQgPT0gR2V0VGV4dHVyZUZvcm1hdChkZXN0
KSk7Ci0KLSAgICBjb25zdCBkM2QxMTo6RFhHSUZvcm1hdFNpemUgJmR4Z2lGb3JtYXRTaXplSW5m
byA9IGQzZDExOjpHZXREWEdJRm9ybWF0U2l6ZUluZm8oZm9ybWF0KTsKLSAgICB1bnNpZ25lZCBp
bnQgcGl4ZWxTaXplICAgICAgICAgICAgICAgICAgICAgICAgICA9IGR4Z2lGb3JtYXRTaXplSW5m
by5waXhlbEJ5dGVzOwotICAgIHVuc2lnbmVkIGludCBjb3B5T2Zmc2V0ID0gMDsKLSAgICB1bnNp
Z25lZCBpbnQgY29weVNpemUgPSBwaXhlbFNpemU7CiAgICAgaWYgKHN0ZW5jaWxPbmx5KQogICAg
IHsKLSAgICAgICAgY29uc3QgZDNkMTE6OkRYR0lGb3JtYXQgJmR4Z2lGb3JtYXRJbmZvID0gZDNk
MTE6OkdldERYR0lGb3JtYXRJbmZvKGZvcm1hdCk7CisgICAgICAgIGNvbnN0IGF1dG8gJnNyY0Zv
cm1hdCA9IHNvdXJjZS5nZXRGb3JtYXRTZXQoKS5mb3JtYXQ7CiAKICAgICAgICAgLy8gU3RlbmNp
bCBjaGFubmVsIHNob3VsZCBiZSByaWdodCBhZnRlciB0aGUgZGVwdGggY2hhbm5lbC4gU29tZSB2
aWV3cyB0byBkZXB0aC9zdGVuY2lsCiAgICAgICAgIC8vIHJlc291cmNlcyBoYXZlIHJlZCBjaGFu
bmVsIGZvciBkZXB0aCwgaW4gd2hpY2ggY2FzZSB0aGUgZGVwdGggY2hhbm5lbCBiaXQgd2lkdGgg
aXMgaW4KICAgICAgICAgLy8gcmVkQml0cy4KLSAgICAgICAgQVNTRVJUKChkeGdpRm9ybWF0SW5m
by5yZWRCaXRzICE9IDApICE9IChkeGdpRm9ybWF0SW5mby5kZXB0aEJpdHMgIT0gMCkpOwotICAg
ICAgICBHTHVpbnQgZGVwdGhCaXRzID0gZHhnaUZvcm1hdEluZm8ucmVkQml0cyArIGR4Z2lGb3Jt
YXRJbmZvLmRlcHRoQml0czsKKyAgICAgICAgQVNTRVJUKChzcmNGb3JtYXQucmVkQml0cyAhPSAw
KSAhPSAoc3JjRm9ybWF0LmRlcHRoQml0cyAhPSAwKSk7CisgICAgICAgIEdMdWludCBkZXB0aEJp
dHMgPSBzcmNGb3JtYXQucmVkQml0cyArIHNyY0Zvcm1hdC5kZXB0aEJpdHM7CiAgICAgICAgIC8v
IEtub3duIGZvcm1hdHMgaGF2ZSBlaXRoZXIgMjQgb3IgMzIgYml0cyBvZiBkZXB0aC4KICAgICAg
ICAgQVNTRVJUKGRlcHRoQml0cyA9PSAyNCB8fCBkZXB0aEJpdHMgPT0gMzIpOwogICAgICAgICBj
b3B5T2Zmc2V0ID0gZGVwdGhCaXRzIC8gODsKQEAgLTEwODUsMTIzICsxNDg1LDE3NCBAQCBnbDo6
RXJyb3IgQmxpdDExOjpjb3B5RGVwdGhTdGVuY2lsKElEM0QxCiAgICAgICAgIGNvcHlTaXplID0g
MTsKICAgICB9CiAKKyAgICBpZiAoc3JjRFhHSUZvcm1hdCAhPSBkZXN0RFhHSUZvcm1hdCkKKyAg
ICB7CisgICAgICAgIGlmIChzcmNEWEdJRm9ybWF0ID09IERYR0lfRk9STUFUX1IyNEc4X1RZUEVM
RVNTKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoc291cmNlQXJlYSA9PSBkZXN0QXJl
YSAmJiBzb3VyY2VTaXplID09IGRlc3RTaXplICYmIHNjaXNzb3IgPT0gbnVsbHB0cik7CisgICAg
ICAgICAgICByZXR1cm4gY29weUFuZENvbnZlcnQoc291cmNlLCBzb3VyY2VTdWJyZXNvdXJjZSwg
c291cmNlQXJlYSwgc291cmNlU2l6ZSwgZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZXN0U3VicmVzb3VyY2UsIGRlc3RBcmVhLCBkZXN0U2l6ZSwgc2Npc3NvciwgY29w
eU9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5T2Zmc2V0LCBj
b3B5U2l6ZSwgc3JjUGl4ZWxTaXplLCBkZXN0UGl4ZWxTaXplLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEJsaXREMjRTOFRvRDMyRik7CisgICAgICAgIH0KKyAgICAgICAgQVNT
RVJUKHNyY0RYR0lGb3JtYXQgPT0gRFhHSV9GT1JNQVRfUjMyRzhYMjRfVFlQRUxFU1MpOworICAg
ICAgICByZXR1cm4gY29weUFuZENvbnZlcnQoc291cmNlLCBzb3VyY2VTdWJyZXNvdXJjZSwgc291
cmNlQXJlYSwgc291cmNlU2l6ZSwgZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlc3RTdWJyZXNvdXJjZSwgZGVzdEFyZWEsIGRlc3RTaXplLCBzY2lzc29yLCBjb3B5T2Zmc2V0
LCBjb3B5T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weVNpemUsIHNy
Y1BpeGVsU2l6ZSwgZGVzdFBpeGVsU2l6ZSwgQmxpdEQzMkZTOFRvRDMyRik7CisgICAgfQorCisg
ICAgcmV0dXJuIGNvcHlBbmRDb252ZXJ0KHNvdXJjZSwgc291cmNlU3VicmVzb3VyY2UsIHNvdXJj
ZUFyZWEsIHNvdXJjZVNpemUsIGRlc3QsIGRlc3RTdWJyZXNvdXJjZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVzdEFyZWEsIGRlc3RTaXplLCBzY2lzc29yLCBjb3B5T2Zmc2V0LCBjb3B5
T2Zmc2V0LCBjb3B5U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjUGl4ZWxTaXpl
LCBkZXN0UGl4ZWxTaXplLCBTdHJldGNoZWRCbGl0TmVhcmVzdCk7Cit9CisKK2dsOjpFcnJvciBC
bGl0MTE6OmNvcHlBbmRDb252ZXJ0SW1wbChjb25zdCBUZXh0dXJlSGVscGVyMTEgJnNvdXJjZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNl
U3VicmVzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OkJveCAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6RXh0ZW50cyAmc291cmNlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUZXh0dXJlSGVscGVyMTEgJmRlc3RTdGFnaW5nLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmRlc3RBcmVhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZk
ZXN0U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
UmVjdGFuZ2xlICpzY2lzc29yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCByZWFkT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCB3cml0ZU9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgY29weVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IHNyY1BpeGVsU3RyaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBkZXN0UGl4ZWxTdHJpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQmxpdENvbnZlcnRGdW5jdGlvbiAqY29udmVydEZ1bmN0aW9uKQoreworICAgIEFO
R0xFX1RSWShpbml0UmVzb3VyY2VzKCkpOworCisgICAgSUQzRDExRGV2aWNlICpkZXZpY2UgICAg
ICAgICAgICAgICA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisgICAgSUQzRDExRGV2aWNlQ29u
dGV4dCAqZGV2aWNlQ29udGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpOworCisg
ICAgVGV4dHVyZUhlbHBlcjExIHNvdXJjZVN0YWdpbmc7CisgICAgQU5HTEVfVFJZX1JFU1VMVChD
cmVhdGVTdGFnaW5nVGV4dHVyZShHTF9URVhUVVJFXzJELCBzb3VyY2UuZ2V0Rm9ybWF0U2V0KCks
IHNvdXJjZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
dGFnaW5nQWNjZXNzOjpSRUFELCBkZXZpY2UpLAorICAgICAgICAgICAgICAgICAgICAgc291cmNl
U3RhZ2luZyk7CisKKyAgICBkZXZpY2VDb250ZXh0LT5Db3B5U3VicmVzb3VyY2VSZWdpb24oc291
cmNlU3RhZ2luZy5nZXRSZXNvdXJjZSgpLCAwLCAwLCAwLCAwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UuZ2V0UmVzb3VyY2UoKSwgc291cmNlU3VicmVz
b3VyY2UsIG51bGxwdHIpOworCiAgICAgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIHNvdXJjZU1h
cHBpbmc7Ci0gICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2VDb250ZXh0LT5NYXAoc291cmNlU3Rh
Z2luZywgMCwgRDNEMTFfTUFQX1JFQUQsIDAsICZzb3VyY2VNYXBwaW5nKTsKKyAgICBIUkVTVUxU
IHJlc3VsdCA9CisgICAgICAgIGRldmljZUNvbnRleHQtPk1hcChzb3VyY2VTdGFnaW5nLmdldFJl
c291cmNlKCksIDAsIEQzRDExX01BUF9SRUFELCAwLCAmc291cmNlTWFwcGluZyk7CiAgICAgaWYg
KEZBSUxFRChyZXN1bHQpKQogICAgIHsKLSAgICAgICAgU2FmZVJlbGVhc2Uoc291cmNlU3RhZ2lu
Zyk7Ci0gICAgICAgIFNhZmVSZWxlYXNlKGRlc3RTdGFnaW5nKTsKLSAgICAgICAgcmV0dXJuIGds
OjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIG1hcCBpbnRlcm5hbCBzb3VyY2Ug
c3RhZ2luZyB0ZXh0dXJlIGZvciBkZXB0aCBzdGVuY2lsIGJsaXQsIEhSRVNVTFQ6IDB4JVguIiwg
cmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGdsOjpFcnJvcigKKyAgICAgICAgICAgIEdMX09VVF9P
Rl9NRU1PUlksCisgICAgICAgICAgICAiRmFpbGVkIHRvIG1hcCBpbnRlcm5hbCBzb3VyY2Ugc3Rh
Z2luZyB0ZXh0dXJlIGZvciBkZXB0aCBzdGVuY2lsIGJsaXQsIEhSRVNVTFQ6IDB4JVguIiwKKyAg
ICAgICAgICAgIHJlc3VsdCk7CiAgICAgfQogCiAgICAgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNF
IGRlc3RNYXBwaW5nOwotICAgIHJlc3VsdCA9IGRldmljZUNvbnRleHQtPk1hcChkZXN0U3RhZ2lu
ZywgMCwgRDNEMTFfTUFQX1dSSVRFLCAwLCAmZGVzdE1hcHBpbmcpOworICAgIHJlc3VsdCA9IGRl
dmljZUNvbnRleHQtPk1hcChkZXN0U3RhZ2luZy5nZXRSZXNvdXJjZSgpLCAwLCBEM0QxMV9NQVBf
V1JJVEUsIDAsICZkZXN0TWFwcGluZyk7CiAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgIHsK
LSAgICAgICAgZGV2aWNlQ29udGV4dC0+VW5tYXAoc291cmNlU3RhZ2luZywgMCk7Ci0gICAgICAg
IFNhZmVSZWxlYXNlKHNvdXJjZVN0YWdpbmcpOwotICAgICAgICBTYWZlUmVsZWFzZShkZXN0U3Rh
Z2luZyk7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxl
ZCB0byBtYXAgaW50ZXJuYWwgZGVzdGluYXRpb24gc3RhZ2luZyB0ZXh0dXJlIGZvciBkZXB0aCBz
dGVuY2lsIGJsaXQsIEhSRVNVTFQ6IDB4JVguIiwgcmVzdWx0KTsKKyAgICAgICAgZGV2aWNlQ29u
dGV4dC0+VW5tYXAoc291cmNlU3RhZ2luZy5nZXRSZXNvdXJjZSgpLCAwKTsKKyAgICAgICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICJGYWlsZWQgdG8gbWFwIGludGVybmFsIGRlc3RpbmF0aW9uIHN0YWdpbmcgdGV4dHVyZSBmb3Ig
ZGVwdGggc3RlbmNpbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgImJsaXQsIEhSRVNVTFQ6
IDB4JVguIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpOwogICAgIH0KIAotICAg
IGdsOjpSZWN0YW5nbGUgY2xpcHBlZERlc3RBcmVhKGRlc3RBcmVhLngsIGRlc3RBcmVhLnksIGRl
c3RBcmVhLndpZHRoLCBkZXN0QXJlYS5oZWlnaHQpOwotCiAgICAgLy8gQ2xpcCBkZXN0IGFyZWEg
dG8gdGhlIGRlc3RpbmF0aW9uIHNpemUKLSAgICBnbDo6Q2xpcFJlY3RhbmdsZShjbGlwcGVkRGVz
dEFyZWEsIGdsOjpSZWN0YW5nbGUoMCwgMCwgZGVzdFNpemUud2lkdGgsIGRlc3RTaXplLmhlaWdo
dCksICZjbGlwcGVkRGVzdEFyZWEpOworICAgIGdsOjpSZWN0YW5nbGUgY2xpcFJlY3QgPSBnbDo6
UmVjdGFuZ2xlKDAsIDAsIGRlc3RTaXplLndpZHRoLCBkZXN0U2l6ZS5oZWlnaHQpOwogCiAgICAg
Ly8gQ2xpcCBkZXN0IGFyZWEgdG8gdGhlIHNjaXNzb3IKICAgICBpZiAoc2Npc3NvcikKICAgICB7
Ci0gICAgICAgIGdsOjpDbGlwUmVjdGFuZ2xlKGNsaXBwZWREZXN0QXJlYSwgKnNjaXNzb3IsICZj
bGlwcGVkRGVzdEFyZWEpOworICAgICAgICBnbDo6Q2xpcFJlY3RhbmdsZShjbGlwUmVjdCwgKnNj
aXNzb3IsICZjbGlwUmVjdCk7CiAgICAgfQogCi0gICAgLy8gRGV0ZXJtaW5lIGlmIGVudGlyZSBy
b3dzIGNhbiBiZSBjb3BpZWQgYXQgb25jZSBpbnN0ZWFkIG9mIGVhY2ggaW5kaXZpZHVhbCBwaXhl
bCwgcmVxdWlyZXMgdGhhdCB0aGVyZSBpcwotICAgIC8vIG5vIG91dCBvZiBib3VuZHMgbG9va3Vw
cyByZXF1aXJlZCwgdGhlIGVudGlyZSBwaXhlbCBpcyBjb3BpZWQgYW5kIG5vIHN0cmV0Y2hpbmcK
LSAgICBib29sIHdob2xlUm93Q29weSA9IHNvdXJjZUFyZWEud2lkdGggPT0gY2xpcHBlZERlc3RB
cmVhLndpZHRoICYmCi0gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VBcmVhLnggPj0gMCAm
JiBzb3VyY2VBcmVhLnggKyBzb3VyY2VBcmVhLndpZHRoIDw9IHNvdXJjZVNpemUud2lkdGggJiYK
LSAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlTaXplID09IHBpeGVsU2l6ZTsKLQotICAgIGZv
ciAoaW50IHkgPSBjbGlwcGVkRGVzdEFyZWEueTsgeSA8IGNsaXBwZWREZXN0QXJlYS55ICsgY2xp
cHBlZERlc3RBcmVhLmhlaWdodDsgeSsrKQotICAgIHsKLSAgICAgICAgZmxvYXQgeVBlcmMgPSBz
dGF0aWNfY2FzdDxmbG9hdD4oeSAtIGRlc3RBcmVhLnkpIC8gKGRlc3RBcmVhLmhlaWdodCAtIDEp
OwotCi0gICAgICAgIC8vIEludGVycG9sYXRlIHVzaW5nIHRoZSBvcmlnaW5hbCBzb3VyY2UgcmVj
dGFuZ2xlIHRvIGRldGVybWluZSB3aGljaCByb3cgdG8gc2FtcGxlIGZyb20gd2hpbGUgY2xhbXBp
bmcgdG8gdGhlIGVkZ2VzCi0gICAgICAgIHVuc2lnbmVkIGludCByZWFkUm93ID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQgaW50PihnbDo6Y2xhbXAoc291cmNlQXJlYS55ICsgZmxvb3IoeVBlcmMgKiAo
c291cmNlQXJlYS5oZWlnaHQgLSAxKSArIDAuNWYpLCAwLCBzb3VyY2VTaXplLmhlaWdodCAtIDEp
KTsKLSAgICAgICAgdW5zaWduZWQgaW50IHdyaXRlUm93ID0geTsKLQotICAgICAgICBpZiAod2hv
bGVSb3dDb3B5KQotICAgICAgICB7Ci0gICAgICAgICAgICB2b2lkICpzb3VyY2VSb3cgPSByZWlu
dGVycHJldF9jYXN0PGNoYXIqPihzb3VyY2VNYXBwaW5nLnBEYXRhKSArCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWFkUm93ICogc291cmNlTWFwcGluZy5Sb3dQaXRjaCArCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VBcmVhLnggKiBwaXhlbFNpemU7Ci0KLSAg
ICAgICAgICAgIHZvaWQgKmRlc3RSb3cgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihkZXN0TWFw
cGluZy5wRGF0YSkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlUm93ICogZGVz
dE1hcHBpbmcuUm93UGl0Y2ggKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RBcmVh
LnggKiBwaXhlbFNpemU7Ci0KLSAgICAgICAgICAgIG1lbWNweShkZXN0Um93LCBzb3VyY2VSb3cs
IHBpeGVsU2l6ZSAqIGRlc3RBcmVhLndpZHRoKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGZvciAoaW50IHggPSBjbGlwcGVkRGVzdEFyZWEueDsgeCA8
IGNsaXBwZWREZXN0QXJlYS54ICsgY2xpcHBlZERlc3RBcmVhLndpZHRoOyB4KyspCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgeFBlcmMgPSBzdGF0aWNfY2FzdDxmbG9hdD4o
eCAtIGRlc3RBcmVhLngpIC8gKGRlc3RBcmVhLndpZHRoIC0gMSk7CisgICAgY29udmVydEZ1bmN0
aW9uKHNvdXJjZUFyZWEsIGRlc3RBcmVhLCBjbGlwUmVjdCwgc291cmNlU2l6ZSwgc291cmNlTWFw
cGluZy5Sb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgZGVzdE1hcHBpbmcuUm93UGl0Y2gs
IHJlYWRPZmZzZXQsIHdyaXRlT2Zmc2V0LCBjb3B5U2l6ZSwgc3JjUGl4ZWxTdHJpZGUsCisgICAg
ICAgICAgICAgICAgICAgIGRlc3RQaXhlbFN0cmlkZSwgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCAqPihzb3VyY2VNYXBwaW5nLnBEYXRhKSwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8dWludDhfdCAqPihkZXN0TWFwcGluZy5wRGF0YSkpOworCisgICAgZGV2aWNlQ29udGV4dC0+
VW5tYXAoc291cmNlU3RhZ2luZy5nZXRSZXNvdXJjZSgpLCAwKTsKKyAgICBkZXZpY2VDb250ZXh0
LT5Vbm1hcChkZXN0U3RhZ2luZy5nZXRSZXNvdXJjZSgpLCAwKTsKKworICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOworfQorCitnbDo6RXJyb3IgQmxpdDExOjpjb3B5QW5kQ29udmVydChjb25zdCBU
ZXh0dXJlSGVscGVyMTEgJnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBzb3VyY2VTdWJyZXNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc291cmNlU2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRleHR1cmVIZWxwZXIxMSAmZGVzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkZXN0U3VicmVzb3VyY2Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZkZXN0QXJl
YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZk
ZXN0U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0
YW5nbGUgKnNjaXNzb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
cmVhZE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB3cml0
ZU9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb3B5U2l6
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzcmNQaXhlbFN0cmlk
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXN0UGl4ZWxTdHJp
ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCbGl0Q29udmVydEZ1bmN0aW9u
ICpjb252ZXJ0RnVuY3Rpb24pCit7CisgICAgQU5HTEVfVFJZKGluaXRSZXNvdXJjZXMoKSk7CiAK
LSAgICAgICAgICAgICAgICAvLyBJbnRlcnBvbGF0ZSB0aGUgb3JpZ2luYWwgc291cmNlIHJlY3Rh
bmdsZSB0byBkZXRlcm1pbmUgd2hpY2ggY29sdW1uIHRvIHNhbXBsZSBmcm9tIHdoaWxlIGNsYW1w
aW5nIHRvIHRoZSBlZGdlcwotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCByZWFkQ29sdW1u
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihnbDo6Y2xhbXAoc291cmNlQXJlYS54ICsgZmxv
b3IoeFBlcmMgKiAoc291cmNlQXJlYS53aWR0aCAtIDEpICsgMC41ZiksIDAsIHNvdXJjZVNpemUu
d2lkdGggLSAxKSk7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHdyaXRlQ29sdW1uID0g
eDsKLQotICAgICAgICAgICAgICAgIHZvaWQgKnNvdXJjZVBpeGVsID0gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4oc291cmNlTWFwcGluZy5wRGF0YSkgKwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVhZFJvdyAqIHNvdXJjZU1hcHBpbmcuUm93UGl0Y2ggKwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZENvbHVtbiAqIHBpeGVsU2l6ZSArCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5T2Zmc2V0OwotCi0gICAgICAgICAg
ICAgICAgdm9pZCAqZGVzdFBpeGVsID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGVzdE1hcHBp
bmcucERhdGEpICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZVJvdyAq
IGRlc3RNYXBwaW5nLlJvd1BpdGNoICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3cml0ZUNvbHVtbiAqIHBpeGVsU2l6ZSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29weU9mZnNldDsKKyAgICBJRDNEMTFEZXZpY2UgKmRldmljZSAgICAgICAgICAgICAg
ID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKyAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpkZXZp
Y2VDb250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CiAKLSAgICAgICAgICAg
ICAgICBtZW1jcHkoZGVzdFBpeGVsLCBzb3VyY2VQaXhlbCwgY29weVNpemUpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9CisgICAgLy8gSEFDSzogQ3JlYXRlIHRoZSBkZXN0aW5hdGlvbiBzdGFn
aW5nIGJ1ZmZlciBhcyBhIHJlYWQvd3JpdGUgdGV4dHVyZSBzbworICAgIC8vIElEM0QxMURldmlj
Q29udGV4dDo6VXBkYXRlU3VicmVzb3VyY2UgY2FuIGJlIGNhbGxlZAorICAgIC8vICAgICAgIHVz
aW5nIGl0J3MgbWFwcGVkIGRhdGEgYXMgYSBzb3VyY2UKKyAgICBUZXh0dXJlSGVscGVyMTEgZGVz
dFN0YWdpbmc7CisgICAgQU5HTEVfVFJZX1JFU1VMVChDcmVhdGVTdGFnaW5nVGV4dHVyZShHTF9U
RVhUVVJFXzJELCBkZXN0LmdldEZvcm1hdFNldCgpLCBkZXN0U2l6ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YWdpbmdBY2Nlc3M6OlJFQURfV1JJVEUsIGRl
dmljZSksCisgICAgICAgICAgICAgICAgICAgICBkZXN0U3RhZ2luZyk7CisKKyAgICBkZXZpY2VD
b250ZXh0LT5Db3B5U3VicmVzb3VyY2VSZWdpb24oZGVzdFN0YWdpbmcuZ2V0UmVzb3VyY2UoKSwg
MCwgMCwgMCwgMCwgZGVzdC5nZXRSZXNvdXJjZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXN0U3VicmVzb3VyY2UsIG51bGxwdHIpOworCisgICAgY29weUFu
ZENvbnZlcnRJbXBsKHNvdXJjZSwgc291cmNlU3VicmVzb3VyY2UsIHNvdXJjZUFyZWEsIHNvdXJj
ZVNpemUsIGRlc3RTdGFnaW5nLCBkZXN0QXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgZGVz
dFNpemUsIHNjaXNzb3IsIHJlYWRPZmZzZXQsIHdyaXRlT2Zmc2V0LCBjb3B5U2l6ZSwgc3JjUGl4
ZWxTdHJpZGUsCisgICAgICAgICAgICAgICAgICAgICAgIGRlc3RQaXhlbFN0cmlkZSwgY29udmVy
dEZ1bmN0aW9uKTsKKworICAgIC8vIFdvcmsgYXJvdW5kIHRpbWVvdXRzL1REUnMgaW4gb2xkZXIg
TlZJRElBIGRyaXZlcnMuCisgICAgaWYgKG1SZW5kZXJlci0+Z2V0V29ya2Fyb3VuZHMoKS5kZXB0
aFN0ZW5jaWxCbGl0RXh0cmFDb3B5KQorICAgIHsKKyAgICAgICAgRDNEMTFfTUFQUEVEX1NVQlJF
U09VUkNFIG1hcHBlZDsKKyAgICAgICAgZGV2aWNlQ29udGV4dC0+TWFwKGRlc3RTdGFnaW5nLmdl
dFJlc291cmNlKCksIDAsIEQzRDExX01BUF9SRUFELCAwLCAmbWFwcGVkKTsKKyAgICAgICAgZGV2
aWNlQ29udGV4dC0+VXBkYXRlU3VicmVzb3VyY2UoZGVzdC5nZXRSZXNvdXJjZSgpLCBkZXN0U3Vi
cmVzb3VyY2UsIG51bGxwdHIsIG1hcHBlZC5wRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWFwcGVkLlJvd1BpdGNoLCBtYXBwZWQuRGVwdGhQaXRjaCk7Cisg
ICAgICAgIGRldmljZUNvbnRleHQtPlVubWFwKGRlc3RTdGFnaW5nLmdldFJlc291cmNlKCksIDAp
OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBkZXZpY2VDb250ZXh0LT5Db3B5U3Vi
cmVzb3VyY2VSZWdpb24oZGVzdC5nZXRSZXNvdXJjZSgpLCBkZXN0U3VicmVzb3VyY2UsIDAsIDAs
IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0U3Rh
Z2luZy5nZXRSZXNvdXJjZSgpLCAwLCBudWxscHRyKTsKICAgICB9CiAKLSAgICAvLyBIQUNLOiBV
c2UgSUQzRDExRGV2aWNDb250ZXh0OjpVcGRhdGVTdWJyZXNvdXJjZSB3aGljaCBjYXVzZXMgYW4g
ZXh0cmEgY29weSBjb21wYXJlZCB0byBJRDNEMTFEZXZpY0NvbnRleHQ6OkNvcHlTdWJyZXNvdXJj
ZVJlZ2lvbgotICAgIC8vICAgICAgIGFjY29yZGluZyB0byBNU0ROLgotICAgIGRldmljZUNvbnRl
eHQtPlVwZGF0ZVN1YnJlc291cmNlKGRlc3QsIGRlc3RTdWJyZXNvdXJjZSwgbnVsbHB0ciwgZGVz
dE1hcHBpbmcucERhdGEsIGRlc3RNYXBwaW5nLlJvd1BpdGNoLCBkZXN0TWFwcGluZy5EZXB0aFBp
dGNoKTsKLQotICAgIGRldmljZUNvbnRleHQtPlVubWFwKHNvdXJjZVN0YWdpbmcsIDApOwotICAg
IGRldmljZUNvbnRleHQtPlVubWFwKGRlc3RTdGFnaW5nLCAwKTsKLQotICAgIC8vIFRPRE86IERl
dGVybWluZSB3aHkgdGhpcyBjYWxsIHRvIElEM0QxMURldmljQ29udGV4dDo6Q29weVN1YnJlc291
cmNlUmVnaW9uIGNhdXNlcyBhIFREUiB0aW1lb3V0IG9uIHNvbWUKLSAgICAvLyAgICAgICBzeXN0
ZW1zIHdoZW4gY2FsbGVkIHJlcGVhdGVkbHkuCi0gICAgLy8gZGV2aWNlQ29udGV4dC0+Q29weVN1
YnJlc291cmNlUmVnaW9uKGRlc3QsIGRlc3RTdWJyZXNvdXJjZSwgMCwgMCwgMCwgZGVzdFN0YWdp
bmcsIDAsIG51bGxwdHIpOwotCi0gICAgU2FmZVJlbGVhc2Uoc291cmNlU3RhZ2luZyk7Ci0gICAg
U2FmZVJlbGVhc2UoZGVzdFN0YWdpbmcpOwotCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19F
UlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLXZvaWQgQmxpdDExOjphZGRC
bGl0U2hhZGVyVG9NYXAoQmxpdFNoYWRlclR5cGUgYmxpdFNoYWRlclR5cGUsIFNoYWRlckRpbWVu
c2lvbiBkaW1lbnNpb24sIElEM0QxMVBpeGVsU2hhZGVyICpwcykKK3ZvaWQgQmxpdDExOjphZGRC
bGl0U2hhZGVyVG9NYXAoQmxpdFNoYWRlclR5cGUgYmxpdFNoYWRlclR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNoYWRlckRpbWVuc2lvbiBkaW1lbnNpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMVBpeGVsU2hhZGVyICpwcykKIHsKICAgICBB
U1NFUlQobUJsaXRTaGFkZXJNYXAuZmluZChibGl0U2hhZGVyVHlwZSkgPT0gbUJsaXRTaGFkZXJN
YXAuZW5kKCkpOwogICAgIEFTU0VSVChwcyk7CiAKICAgICBTaGFkZXIgc2hhZGVyOwotICAgIHNo
YWRlci5kaW1lbnNpb24gPSBkaW1lbnNpb247CisgICAgc2hhZGVyLmRpbWVuc2lvbiAgID0gZGlt
ZW5zaW9uOwogICAgIHNoYWRlci5waXhlbFNoYWRlciA9IHBzOwogCiAgICAgbUJsaXRTaGFkZXJN
YXBbYmxpdFNoYWRlclR5cGVdID0gc2hhZGVyOwogfQogCi12b2lkIEJsaXQxMTo6YWRkU3dpenps
ZVNoYWRlclRvTWFwKFN3aXp6bGVTaGFkZXJUeXBlIHN3aXp6bGVTaGFkZXJUeXBlLCBTaGFkZXJE
aW1lbnNpb24gZGltZW5zaW9uLCBJRDNEMTFQaXhlbFNoYWRlciAqcHMpCit2b2lkIEJsaXQxMTo6
YWRkU3dpenpsZVNoYWRlclRvTWFwKFN3aXp6bGVTaGFkZXJUeXBlIHN3aXp6bGVTaGFkZXJUeXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJEaW1lbnNpb24gZGlt
ZW5zaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFQaXhlbFNo
YWRlciAqcHMpCiB7CiAgICAgQVNTRVJUKG1Td2l6emxlU2hhZGVyTWFwLmZpbmQoc3dpenpsZVNo
YWRlclR5cGUpID09IG1Td2l6emxlU2hhZGVyTWFwLmVuZCgpKTsKICAgICBBU1NFUlQocHMpOwog
CiAgICAgU2hhZGVyIHNoYWRlcjsKLSAgICBzaGFkZXIuZGltZW5zaW9uID0gZGltZW5zaW9uOwor
ICAgIHNoYWRlci5kaW1lbnNpb24gICA9IGRpbWVuc2lvbjsKICAgICBzaGFkZXIucGl4ZWxTaGFk
ZXIgPSBwczsKIAogICAgIG1Td2l6emxlU2hhZGVyTWFwW3N3aXp6bGVTaGFkZXJUeXBlXSA9IHNo
YWRlcjsKQEAgLTEyMjIsOSArMTY3MywxNSBAQCB2b2lkIEJsaXQxMTo6Y2xlYXJTaGFkZXJNYXAo
KQogICAgIG1Td2l6emxlU2hhZGVyTWFwLmNsZWFyKCk7CiB9CiAKLWdsOjpFcnJvciBCbGl0MTE6
OmdldEJsaXRTaGFkZXIoR0xlbnVtIGRlc3RGb3JtYXQsIGJvb2wgaXNTaWduZWQsIFNoYWRlckRp
bWVuc2lvbiBkaW1lbnNpb24sIGNvbnN0IFNoYWRlciAqKnNoYWRlcikKK2dsOjpFcnJvciBCbGl0
MTE6OmdldEJsaXRTaGFkZXIoR0xlbnVtIGRlc3RGb3JtYXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgaXNTaWduZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCB1bnBhY2tVbm11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNoYWRlckRpbWVuc2lvbiBkaW1lbnNpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFNoYWRlciAqKnNoYWRlcikKIHsKLSAgICBCbGl0U2hhZGVy
VHlwZSBibGl0U2hhZGVyVHlwZSA9IEdldEJsaXRTaGFkZXJUeXBlKGRlc3RGb3JtYXQsIGlzU2ln
bmVkLCBkaW1lbnNpb24pOworICAgIEJsaXRTaGFkZXJUeXBlIGJsaXRTaGFkZXJUeXBlID0gR2V0
QmxpdFNoYWRlclR5cGUoZGVzdEZvcm1hdCwgaXNTaWduZWQsIHVucGFja1ByZW11bHRpcGx5QWxw
aGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnBhY2tVbm11bHRpcGx5QWxwaGEsIGRpbWVuc2lvbik7CiAKICAgICBpZiAoYmxpdFNoYWRl
clR5cGUgPT0gQkxJVFNIQURFUl9JTlZBTElEKQogICAgIHsKQEAgLTEyNDQsMTA1ICsxNzAxLDE5
OSBAQCBnbDo6RXJyb3IgQmxpdDExOjpnZXRCbGl0U2hhZGVyKEdMZW51bSBkCiAKICAgICBzd2l0
Y2ggKGJsaXRTaGFkZXJUeXBlKQogICAgIHsKLSAgICAgIGNhc2UgQkxJVFNIQURFUl8yRF9SR0JB
RjoKLSAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfMkQs
IGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUkdCQTJELCAiQmxpdDEx
IDJEIFJHQkEgcGl4ZWwgc2hhZGVyIikpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgQkxJ
VFNIQURFUl8yRF9CR1JBRjoKLSAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFwKGJsaXRTaGFkZXJU
eXBlLCBTSEFERVJfMkQsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdo
UkdCQTJELCAiQmxpdDExIDJEIEJHUkEgcGl4ZWwgc2hhZGVyIikpOwotICAgICAgICBicmVhazsK
LSAgICAgIGNhc2UgQkxJVFNIQURFUl8yRF9SR0JGOgotICAgICAgICBhZGRCbGl0U2hhZGVyVG9N
YXAoYmxpdFNoYWRlclR5cGUsIFNIQURFUl8yRCwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdf
UFNfUGFzc3Rocm91Z2hSR0IyRCwgIkJsaXQxMSAyRCBSR0IgcGl4ZWwgc2hhZGVyIikpOwotICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgQkxJVFNIQURFUl8yRF9SR0Y6Ci0gICAgICAgIGFkZEJs
aXRTaGFkZXJUb01hcChibGl0U2hhZGVyVHlwZSwgU0hBREVSXzJELCBkM2QxMTo6Q29tcGlsZVBT
KGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJHMkQsICJCbGl0MTEgMkQgUkcgcGl4ZWwgc2hhZGVy
IikpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgQkxJVFNIQURFUl8yRF9SRjoKLSAgICAg
ICAgYWRkQmxpdFNoYWRlclRvTWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfMkQsIGQzZDExOjpD
b21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUjJELCAiQmxpdDExIDJEIFIgcGl4ZWwg
c2hhZGVyIikpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgQkxJVFNIQURFUl8yRF9BTFBI
QToKLSAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfMkQs
IGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUkdCQTJELCAiQmxpdDEx
IDJEIGFscGhhIHBpeGVsIHNoYWRlciIpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEJM
SVRTSEFERVJfMkRfTFVNQToKLSAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFwKGJsaXRTaGFkZXJU
eXBlLCBTSEFERVJfMkQsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdo
THVtMkQsICJCbGl0MTEgMkQgbHVtIHBpeGVsIHNoYWRlciIpKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgICBjYXNlIEJMSVRTSEFERVJfMkRfTFVNQUFMUEhBOgotICAgICAgICBhZGRCbGl0U2hhZGVy
VG9NYXAoYmxpdFNoYWRlclR5cGUsIFNIQURFUl8yRCwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2Us
IGdfUFNfUGFzc3Rocm91Z2hMdW1BbHBoYTJELCAiQmxpdDExIDJEIGx1bWluYW5jZSBhbHBoYSBw
aXhlbCBzaGFkZXIiKSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBCTElUU0hBREVSXzJE
X1JHQkFVSToKLSAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFE
RVJfMkQsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUkdCQTJEVUks
ICJCbGl0MTEgMkQgUkdCQSBVSSBwaXhlbCBzaGFkZXIiKSk7Ci0gICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSBCTElUU0hBREVSXzJEX1JHQkFJOgotICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAo
YmxpdFNoYWRlclR5cGUsIFNIQURFUl8yRCwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNf
UGFzc3Rocm91Z2hSR0JBMkRJLCAiQmxpdDExIDJEIFJHQkEgSSBwaXhlbCBzaGFkZXIiKSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBCTElUU0hBREVSXzJEX1JHQlVJOgotICAgICAgICBh
ZGRCbGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRlclR5cGUsIFNIQURFUl8yRCwgZDNkMTE6OkNvbXBp
bGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSR0IyRFVJLCAiQmxpdDExIDJEIFJHQiBVSSBw
aXhlbCBzaGFkZXIiKSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBCTElUU0hBREVSXzJE
X1JHQkk6Ci0gICAgICAgIGFkZEJsaXRTaGFkZXJUb01hcChibGl0U2hhZGVyVHlwZSwgU0hBREVS
XzJELCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJHQjJESSwgIkJs
aXQxMSAyRCBSR0IgSSBwaXhlbCBzaGFkZXIiKSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBCTElUU0hBREVSXzJEX1JHVUk6Ci0gICAgICAgIGFkZEJsaXRTaGFkZXJUb01hcChibGl0U2hh
ZGVyVHlwZSwgU0hBREVSXzJELCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhy
b3VnaFJHMkRVSSwgIkJsaXQxMSAyRCBSRyBVSSBwaXhlbCBzaGFkZXIiKSk7Ci0gICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBCTElUU0hBREVSXzJEX1JHSToKLSAgICAgICAgYWRkQmxpdFNoYWRl
clRvTWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfMkQsIGQzZDExOjpDb21waWxlUFMoZGV2aWNl
LCBnX1BTX1Bhc3N0aHJvdWdoUkcyREksICJCbGl0MTEgMkQgUkcgSSBwaXhlbCBzaGFkZXIiKSk7
Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBCTElUU0hBREVSXzJEX1JVSToKLSAgICAgICAg
YWRkQmxpdFNoYWRlclRvTWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfMkQsIGQzZDExOjpDb21w
aWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUjJEVUksICJCbGl0MTEgMkQgUiBVSSBwaXhl
bCBzaGFkZXIiKSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBCTElUU0hBREVSXzJEX1JJ
OgotICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRlclR5cGUsIFNIQURFUl8yRCwg
ZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSMkRJLCAiQmxpdDExIDJE
IFIgSSBwaXhlbCBzaGFkZXIiKSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBCTElUU0hB
REVSXzNEX1JHQkFGOgotICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRlclR5cGUs
IFNIQURFUl8zRCwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSR0JB
M0QsICJCbGl0MTEgM0QgUkdCQSBwaXhlbCBzaGFkZXIiKSk7Ci0gICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSBCTElUU0hBREVSXzNEX1JHQkFVSToKLSAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFw
KGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfM0QsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BT
X1Bhc3N0aHJvdWdoUkdCQTNEVUksICJCbGl0MTEgM0QgVUkgUkdCQSBwaXhlbCBzaGFkZXIiKSk7
Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBCTElUU0hBREVSXzNEX1JHQkFJOgotICAgICAg
ICBhZGRCbGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRlclR5cGUsIFNIQURFUl8zRCwgZDNkMTE6OkNv
bXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSR0JBM0RJLCAiQmxpdDExIDNEIEkgUkdC
QSBwaXhlbCBzaGFkZXIiKSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBCTElUU0hBREVS
XzNEX0JHUkFGOgotICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRlclR5cGUsIFNI
QURFUl8zRCwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSR0JBM0Qs
ICJCbGl0MTEgM0QgQkdSQSBwaXhlbCBzaGFkZXIiKSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSBCTElUU0hBREVSXzNEX1JHQkY6Ci0gICAgICAgIGFkZEJsaXRTaGFkZXJUb01hcChibGl0
U2hhZGVyVHlwZSwgU0hBREVSXzNELCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNz
dGhyb3VnaFJHQjNELCAiQmxpdDExIDNEIFJHQiBwaXhlbCBzaGFkZXIiKSk7Ci0gICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBCTElUU0hBREVSXzNEX1JHQlVJOgotICAgICAgICBhZGRCbGl0U2hh
ZGVyVG9NYXAoYmxpdFNoYWRlclR5cGUsIFNIQURFUl8zRCwgZDNkMTE6OkNvbXBpbGVQUyhkZXZp
Y2UsIGdfUFNfUGFzc3Rocm91Z2hSR0IzRFVJLCAiQmxpdDExIDNEIFJHQiBVSSBwaXhlbCBzaGFk
ZXIiKSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBCTElUU0hBREVSXzNEX1JHQkk6Ci0g
ICAgICAgIGFkZEJsaXRTaGFkZXJUb01hcChibGl0U2hhZGVyVHlwZSwgU0hBREVSXzNELCBkM2Qx
MTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJHQjNESSwgIkJsaXQxMSAzRCBS
R0IgSSBwaXhlbCBzaGFkZXIiKSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBCTElUU0hB
REVSXzNEX1JHRjoKLSAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFwKGJsaXRTaGFkZXJUeXBlLCBT
SEFERVJfM0QsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUkczRCwg
IkJsaXQxMSAzRCBSRyBwaXhlbCBzaGFkZXIiKSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBCTElUU0hBREVSXzNEX1JHVUk6Ci0gICAgICAgIGFkZEJsaXRTaGFkZXJUb01hcChibGl0U2hh
ZGVyVHlwZSwgU0hBREVSXzNELCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhy
b3VnaFJHM0RVSSwgIkJsaXQxMSAzRCBSRyBVSSBwaXhlbCBzaGFkZXIiKSk7Ci0gICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBCTElUU0hBREVSXzNEX1JHSToKLSAgICAgICAgYWRkQmxpdFNoYWRl
clRvTWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfM0QsIGQzZDExOjpDb21waWxlUFMoZGV2aWNl
LCBnX1BTX1Bhc3N0aHJvdWdoUkczREksICJCbGl0MTEgM0QgUkcgSSBwaXhlbCBzaGFkZXIiKSk7
Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBCTElUU0hBREVSXzNEX1JGOgotICAgICAgICBh
ZGRCbGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRlclR5cGUsIFNIQURFUl8zRCwgZDNkMTE6OkNvbXBp
bGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSM0QsICJCbGl0MTEgM0QgUiBwaXhlbCBzaGFk
ZXIiKSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBCTElUU0hBREVSXzNEX1JVSToKLSAg
ICAgICAgYWRkQmxpdFNoYWRlclRvTWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfM0QsIGQzZDEx
OjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUjNEVUksICJCbGl0MTEgM0QgUiBV
SSBwaXhlbCBzaGFkZXIiKSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBCTElUU0hBREVS
XzNEX1JJOgotICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRlclR5cGUsIFNIQURF
Ul8zRCwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSM0RJLCAiQmxp
dDExIDNEIFIgSSBwaXhlbCBzaGFkZXIiKSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBC
TElUU0hBREVSXzNEX0FMUEhBOgotICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRl
clR5cGUsIFNIQURFUl8zRCwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91
Z2hSR0JBM0QsICJCbGl0MTEgM0QgYWxwaGEgcGl4ZWwgc2hhZGVyIikpOwotICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgQkxJVFNIQURFUl8zRF9MVU1BOgotICAgICAgICBhZGRCbGl0U2hhZGVy
VG9NYXAoYmxpdFNoYWRlclR5cGUsIFNIQURFUl8zRCwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2Us
IGdfUFNfUGFzc3Rocm91Z2hMdW0zRCwgIkJsaXQxMSAzRCBsdW1pbmFuY2UgcGl4ZWwgc2hhZGVy
IikpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgQkxJVFNIQURFUl8zRF9MVU1BQUxQSEE6
Ci0gICAgICAgIGFkZEJsaXRTaGFkZXJUb01hcChibGl0U2hhZGVyVHlwZSwgU0hBREVSXzNELCBk
M2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaEx1bUFscGhhM0QsICJCbGl0
MTEgM0QgbHVtaW5hbmNlIGFscGhhIHBpeGVsIHNoYWRlciIpKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgICBkZWZhdWx0OgotICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiSW50ZXJuYWwgZXJyb3IiKTsKKyAgICAgICAg
Y2FzZSBCTElUU0hBREVSXzJEX1JHQkFGOgorICAgICAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFw
KAorICAgICAgICAgICAgICAgIGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfMkQsCisgICAgICAgICAg
ICAgICAgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSR0JBMkQsICJC
bGl0MTEgMkQgUkdCQSBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBCTElUU0hBREVSXzJEX1JHQkFGX1BSRU1VTFRJUExZOgorICAgICAgICAgICAgYWRk
QmxpdFNoYWRlclRvTWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfMkQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91
Z2hSR0JBUHJlbXVsdGlwbHkyRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJCbGl0MTEgMkQgUkdCQSBwcmVtdWx0aXBseSBwaXhlbCBzaGFkZXIiKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBCTElUU0hBREVSXzJEX1JHQkFGX1VO
TVVMVElQTFk6CisgICAgICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRlclR5cGUs
IFNIQURFUl8yRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkM2QxMTo6Q29tcGls
ZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJHQkFVbm11bHRpcGx5MkQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmxpdDExIDJEIFJHQkEgdW5t
dWx0aXBseSBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBCTElUU0hBREVSXzJEX0JHUkFGOgorICAgICAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFwKAor
ICAgICAgICAgICAgICAgIGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfMkQsCisgICAgICAgICAgICAg
ICAgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSR0JBMkQsICJCbGl0
MTEgMkQgQkdSQSBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBCTElUU0hBREVSXzJEX0JHUkFGX1BSRU1VTFRJUExZOgorICAgICAgICAgICAgYWRkQmxp
dFNoYWRlclRvTWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfMkQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hS
R0JBUHJlbXVsdGlwbHkyRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJCbGl0MTEgMkQgQkdSQSBwcmVtdWx0aXBseSBwaXhlbCBzaGFkZXIiKSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBCTElUU0hBREVSXzJEX0JHUkFGX1VOTVVM
VElQTFk6CisgICAgICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRlclR5cGUsIFNI
QURFUl8yRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkM2QxMTo6Q29tcGlsZVBT
KGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJHQkFVbm11bHRpcGx5MkQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmxpdDExIDJEIEJHUkEgdW5tdWx0
aXBseSBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBC
TElUU0hBREVSXzJEX1JHQkY6CisgICAgICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAoCisgICAg
ICAgICAgICAgICAgYmxpdFNoYWRlclR5cGUsIFNIQURFUl8yRCwKKyAgICAgICAgICAgICAgICBk
M2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJHQjJELCAiQmxpdDExIDJE
IFJHQiBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBC
TElUU0hBREVSXzJEX1JHQkZfUFJFTVVMVElQTFk6CisgICAgICAgICAgICBhZGRCbGl0U2hhZGVy
VG9NYXAoYmxpdFNoYWRlclR5cGUsIFNIQURFUl8yRCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJHQlByZW11
bHRpcGx5MkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiQmxpdDExIDJEIFJHQiBwcmVtdWx0aXBseSBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBCTElUU0hBREVSXzJEX1JHQkZfVU5NVUxUSVBMWToKKyAg
ICAgICAgICAgIGFkZEJsaXRTaGFkZXJUb01hcChibGl0U2hhZGVyVHlwZSwgU0hBREVSXzJELAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBn
X1BTX1Bhc3N0aHJvdWdoUkdCVW5tdWx0aXBseTJELAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkJsaXQxMSAyRCBSR0IgdW5tdWx0aXBseSBwaXhlbCBz
aGFkZXIiKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBCTElUU0hBREVSXzJE
X1JHRjoKKyAgICAgICAgICAgIGFkZEJsaXRTaGFkZXJUb01hcCgKKyAgICAgICAgICAgICAgICBi
bGl0U2hhZGVyVHlwZSwgU0hBREVSXzJELAorICAgICAgICAgICAgICAgIGQzZDExOjpDb21waWxl
UFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUkcyRCwgIkJsaXQxMSAyRCBSRyBwaXhlbCBzaGFk
ZXIiKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBCTElUU0hBREVSXzJEX1JG
OgorICAgICAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFwKAorICAgICAgICAgICAgICAgIGJsaXRT
aGFkZXJUeXBlLCBTSEFERVJfMkQsCisgICAgICAgICAgICAgICAgZDNkMTE6OkNvbXBpbGVQUyhk
ZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSMkQsICJCbGl0MTEgMkQgUiBwaXhlbCBzaGFkZXIiKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBCTElUU0hBREVSXzJEX0FMUEhBOgor
ICAgICAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFwKAorICAgICAgICAgICAgICAgIGJsaXRTaGFk
ZXJUeXBlLCBTSEFERVJfMkQsCisgICAgICAgICAgICAgICAgZDNkMTE6OkNvbXBpbGVQUyhkZXZp
Y2UsIGdfUFNfUGFzc3Rocm91Z2hSR0JBMkQsICJCbGl0MTEgMkQgYWxwaGEgcGl4ZWwgc2hhZGVy
IikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQkxJVFNIQURFUl8yRF9MVU1B
OgorICAgICAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFwKAorICAgICAgICAgICAgICAgIGJsaXRT
aGFkZXJUeXBlLCBTSEFERVJfMkQsCisgICAgICAgICAgICAgICAgZDNkMTE6OkNvbXBpbGVQUyhk
ZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hMdW0yRCwgIkJsaXQxMSAyRCBsdW0gcGl4ZWwgc2hhZGVy
IikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQkxJVFNIQURFUl8yRF9MVU1B
QUxQSEE6CisgICAgICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRlclR5cGUsIFNI
QURFUl8yRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkM2QxMTo6Q29tcGlsZVBT
KGRldmljZSwgZ19QU19QYXNzdGhyb3VnaEx1bUFscGhhMkQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmxpdDExIDJEIGx1bWluYW5jZSBhbHBoYSBw
aXhlbCBzaGFkZXIiKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBCTElUU0hB
REVSXzJEX1JHQkFVSToKKyAgICAgICAgICAgIGFkZEJsaXRTaGFkZXJUb01hcChibGl0U2hhZGVy
VHlwZSwgU0hBREVSXzJELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQzZDExOjpD
b21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUkdCQTJEVUksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmxpdDExIDJEIFJHQkEgVUkgcGl4
ZWwgc2hhZGVyIikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQkxJVFNIQURF
Ul8yRF9SR0JBSToKKyAgICAgICAgICAgIGFkZEJsaXRTaGFkZXJUb01hcCgKKyAgICAgICAgICAg
ICAgICBibGl0U2hhZGVyVHlwZSwgU0hBREVSXzJELAorICAgICAgICAgICAgICAgIGQzZDExOjpD
b21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUkdCQTJESSwgIkJsaXQxMSAyRCBSR0JB
IEkgcGl4ZWwgc2hhZGVyIikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQkxJ
VFNIQURFUl8yRF9SR0JVSToKKyAgICAgICAgICAgIGFkZEJsaXRTaGFkZXJUb01hcCgKKyAgICAg
ICAgICAgICAgICBibGl0U2hhZGVyVHlwZSwgU0hBREVSXzJELAorICAgICAgICAgICAgICAgIGQz
ZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUkdCMkRVSSwgIkJsaXQxMSAy
RCBSR0IgVUkgcGl4ZWwgc2hhZGVyIikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgQkxJVFNIQURFUl8yRF9SR0JJOgorICAgICAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFwKAor
ICAgICAgICAgICAgICAgIGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfMkQsCisgICAgICAgICAgICAg
ICAgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSR0IyREksICJCbGl0
MTEgMkQgUkdCIEkgcGl4ZWwgc2hhZGVyIikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgQkxJVFNIQURFUl8yRF9SR1VJOgorICAgICAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFw
KAorICAgICAgICAgICAgICAgIGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfMkQsCisgICAgICAgICAg
ICAgICAgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSRzJEVUksICJC
bGl0MTEgMkQgUkcgVUkgcGl4ZWwgc2hhZGVyIikpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQkxJVFNIQURFUl8yRF9SR0k6CisgICAgICAgICAgICBhZGRCbGl0U2hhZGVyVG9N
YXAoCisgICAgICAgICAgICAgICAgYmxpdFNoYWRlclR5cGUsIFNIQURFUl8yRCwKKyAgICAgICAg
ICAgICAgICBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJHMkRJLCAi
QmxpdDExIDJEIFJHIEkgcGl4ZWwgc2hhZGVyIikpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQkxJVFNIQURFUl8yRF9SVUk6CisgICAgICAgICAgICBhZGRCbGl0U2hhZGVyVG9N
YXAoCisgICAgICAgICAgICAgICAgYmxpdFNoYWRlclR5cGUsIFNIQURFUl8yRCwKKyAgICAgICAg
ICAgICAgICBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFIyRFVJLCAi
QmxpdDExIDJEIFIgVUkgcGl4ZWwgc2hhZGVyIikpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQkxJVFNIQURFUl8yRF9SSToKKyAgICAgICAgICAgIGFkZEJsaXRTaGFkZXJUb01h
cCgKKyAgICAgICAgICAgICAgICBibGl0U2hhZGVyVHlwZSwgU0hBREVSXzJELAorICAgICAgICAg
ICAgICAgIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUjJESSwgIkJs
aXQxMSAyRCBSIEkgcGl4ZWwgc2hhZGVyIikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgQkxJVFNIQURFUl8zRF9SR0JBRjoKKyAgICAgICAgICAgIGFkZEJsaXRTaGFkZXJUb01h
cCgKKyAgICAgICAgICAgICAgICBibGl0U2hhZGVyVHlwZSwgU0hBREVSXzNELAorICAgICAgICAg
ICAgICAgIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUkdCQTNELCAi
QmxpdDExIDNEIFJHQkEgcGl4ZWwgc2hhZGVyIikpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQkxJVFNIQURFUl8zRF9SR0JBVUk6CisgICAgICAgICAgICBhZGRCbGl0U2hhZGVy
VG9NYXAoYmxpdFNoYWRlclR5cGUsIFNIQURFUl8zRCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJHQkEzRFVJ
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJsaXQx
MSAzRCBVSSBSR0JBIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEJMSVRTSEFERVJfM0RfUkdCQUk6CisgICAgICAgICAgICBhZGRCbGl0U2hhZGVyVG9N
YXAoCisgICAgICAgICAgICAgICAgYmxpdFNoYWRlclR5cGUsIFNIQURFUl8zRCwKKyAgICAgICAg
ICAgICAgICBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJHQkEzREks
ICJCbGl0MTEgM0QgSSBSR0JBIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEJMSVRTSEFERVJfM0RfQkdSQUY6CisgICAgICAgICAgICBhZGRCbGl0U2hh
ZGVyVG9NYXAoCisgICAgICAgICAgICAgICAgYmxpdFNoYWRlclR5cGUsIFNIQURFUl8zRCwKKyAg
ICAgICAgICAgICAgICBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJH
QkEzRCwgIkJsaXQxMSAzRCBCR1JBIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEJMSVRTSEFERVJfM0RfUkdCRjoKKyAgICAgICAgICAgIGFkZEJsaXRT
aGFkZXJUb01hcCgKKyAgICAgICAgICAgICAgICBibGl0U2hhZGVyVHlwZSwgU0hBREVSXzNELAor
ICAgICAgICAgICAgICAgIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdo
UkdCM0QsICJCbGl0MTEgM0QgUkdCIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEJMSVRTSEFERVJfM0RfUkdCVUk6CisgICAgICAgICAgICBhZGRCbGl0
U2hhZGVyVG9NYXAoCisgICAgICAgICAgICAgICAgYmxpdFNoYWRlclR5cGUsIFNIQURFUl8zRCwK
KyAgICAgICAgICAgICAgICBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3Vn
aFJHQjNEVUksICJCbGl0MTEgM0QgUkdCIFVJIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEJMSVRTSEFERVJfM0RfUkdCSToKKyAgICAgICAgICAgIGFk
ZEJsaXRTaGFkZXJUb01hcCgKKyAgICAgICAgICAgICAgICBibGl0U2hhZGVyVHlwZSwgU0hBREVS
XzNELAorICAgICAgICAgICAgICAgIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0
aHJvdWdoUkdCM0RJLCAiQmxpdDExIDNEIFJHQiBJIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEJMSVRTSEFERVJfM0RfUkdGOgorICAgICAgICAgICAg
YWRkQmxpdFNoYWRlclRvTWFwKAorICAgICAgICAgICAgICAgIGJsaXRTaGFkZXJUeXBlLCBTSEFE
RVJfM0QsCisgICAgICAgICAgICAgICAgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFz
c3Rocm91Z2hSRzNELCAiQmxpdDExIDNEIFJHIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEJMSVRTSEFERVJfM0RfUkdVSToKKyAgICAgICAgICAgIGFk
ZEJsaXRTaGFkZXJUb01hcCgKKyAgICAgICAgICAgICAgICBibGl0U2hhZGVyVHlwZSwgU0hBREVS
XzNELAorICAgICAgICAgICAgICAgIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0
aHJvdWdoUkczRFVJLCAiQmxpdDExIDNEIFJHIFVJIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEJMSVRTSEFERVJfM0RfUkdJOgorICAgICAgICAgICAg
YWRkQmxpdFNoYWRlclRvTWFwKAorICAgICAgICAgICAgICAgIGJsaXRTaGFkZXJUeXBlLCBTSEFE
RVJfM0QsCisgICAgICAgICAgICAgICAgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFz
c3Rocm91Z2hSRzNESSwgIkJsaXQxMSAzRCBSRyBJIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEJMSVRTSEFERVJfM0RfUkY6CisgICAgICAgICAgICBh
ZGRCbGl0U2hhZGVyVG9NYXAoCisgICAgICAgICAgICAgICAgYmxpdFNoYWRlclR5cGUsIFNIQURF
Ul8zRCwKKyAgICAgICAgICAgICAgICBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNz
dGhyb3VnaFIzRCwgIkJsaXQxMSAzRCBSIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEJMSVRTSEFERVJfM0RfUlVJOgorICAgICAgICAgICAgYWRkQmxp
dFNoYWRlclRvTWFwKAorICAgICAgICAgICAgICAgIGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfM0Qs
CisgICAgICAgICAgICAgICAgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91
Z2hSM0RVSSwgIkJsaXQxMSAzRCBSIFVJIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEJMSVRTSEFERVJfM0RfUkk6CisgICAgICAgICAgICBhZGRCbGl0
U2hhZGVyVG9NYXAoCisgICAgICAgICAgICAgICAgYmxpdFNoYWRlclR5cGUsIFNIQURFUl8zRCwK
KyAgICAgICAgICAgICAgICBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3Vn
aFIzREksICJCbGl0MTEgM0QgUiBJIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEJMSVRTSEFERVJfM0RfQUxQSEE6CisgICAgICAgICAgICBhZGRCbGl0
U2hhZGVyVG9NYXAoCisgICAgICAgICAgICAgICAgYmxpdFNoYWRlclR5cGUsIFNIQURFUl8zRCwK
KyAgICAgICAgICAgICAgICBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3Vn
aFJHQkEzRCwgIkJsaXQxMSAzRCBhbHBoYSBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBCTElUU0hBREVSXzNEX0xVTUE6CisgICAgICAgICAgICBhZGRC
bGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRlclR5cGUsIFNIQURFUl8zRCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3Vn
aEx1bTNELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IkJsaXQxMSAzRCBsdW1pbmFuY2UgcGl4ZWwgc2hhZGVyIikpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgQkxJVFNIQURFUl8zRF9MVU1BQUxQSEE6CisgICAgICAgICAgICBhZGRC
bGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRlclR5cGUsIFNIQURFUl8zRCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3Vn
aEx1bUFscGhhM0QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiQmxpdDExIDNEIGx1bWluYW5jZSBhbHBoYSBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiSW50
ZXJuYWwgZXJyb3IiKTsKICAgICB9CiAKICAgICBibGl0U2hhZGVySXQgPSBtQmxpdFNoYWRlck1h
cC5maW5kKGJsaXRTaGFkZXJUeXBlKTsKQEAgLTEzNTEsNyArMTkwMiw5IEBAIGdsOjpFcnJvciBC
bGl0MTE6OmdldEJsaXRTaGFkZXIoR0xlbnVtIGQKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05P
X0VSUk9SKTsKIH0KIAotZ2w6OkVycm9yIEJsaXQxMTo6Z2V0U3dpenpsZVNoYWRlcihHTGVudW0g
dHlwZSwgRDNEMTFfU1JWX0RJTUVOU0lPTiB2aWV3RGltZW5zaW9uLCBjb25zdCBTaGFkZXIgKipz
aGFkZXIpCitnbDo6RXJyb3IgQmxpdDExOjpnZXRTd2l6emxlU2hhZGVyKEdMZW51bSB0eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0QxMV9TUlZfRElNRU5TSU9OIHZp
ZXdEaW1lbnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNo
YWRlciAqKnNoYWRlcikKIHsKICAgICBTd2l6emxlU2hhZGVyVHlwZSBzd2l6emxlU2hhZGVyVHlw
ZSA9IEdldFN3aXp6bGVTaGFkZXJUeXBlKHR5cGUsIHZpZXdEaW1lbnNpb24pOwogCkBAIC0xMzc0
LDUxICsxOTI3LDMwOCBAQCBnbDo6RXJyb3IgQmxpdDExOjpnZXRTd2l6emxlU2hhZGVyKEdMZW51
CiAKICAgICBzd2l0Y2ggKHN3aXp6bGVTaGFkZXJUeXBlKQogICAgIHsKLSAgICAgIGNhc2UgU1dJ
WlpMRVNIQURFUl8yRF9GTE9BVDoKLSAgICAgICAgYWRkU3dpenpsZVNoYWRlclRvTWFwKHN3aXp6
bGVTaGFkZXJUeXBlLCBTSEFERVJfMkQsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1N3
aXp6bGVGMkQsICJCbGl0MTEgMkQgRiBzd2l6emxlIHBpeGVsIHNoYWRlciIpKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgICBjYXNlIFNXSVpaTEVTSEFERVJfMkRfVUlOVDoKLSAgICAgICAgYWRkU3dp
enpsZVNoYWRlclRvTWFwKHN3aXp6bGVTaGFkZXJUeXBlLCBTSEFERVJfMkQsIGQzZDExOjpDb21w
aWxlUFMoZGV2aWNlLCBnX1BTX1N3aXp6bGVVSTJELCAiQmxpdDExIDJEIFVJIHN3aXp6bGUgcGl4
ZWwgc2hhZGVyIikpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgU1dJWlpMRVNIQURFUl8y
RF9JTlQ6Ci0gICAgICAgIGFkZFN3aXp6bGVTaGFkZXJUb01hcChzd2l6emxlU2hhZGVyVHlwZSwg
U0hBREVSXzJELCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19Td2l6emxlSTJELCAiQmxp
dDExIDJEIEkgc3dpenpsZSBwaXhlbCBzaGFkZXIiKSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSBTV0laWkxFU0hBREVSX0NVQkVfRkxPQVQ6Ci0gICAgICAgIGFkZFN3aXp6bGVTaGFkZXJU
b01hcChzd2l6emxlU2hhZGVyVHlwZSwgU0hBREVSXzNELCBkM2QxMTo6Q29tcGlsZVBTKGRldmlj
ZSwgZ19QU19Td2l6emxlRjJEQXJyYXksICJCbGl0MTEgMkQgQ3ViZSBGIHN3aXp6bGUgcGl4ZWwg
c2hhZGVyIikpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgU1dJWlpMRVNIQURFUl9DVUJF
X1VJTlQ6Ci0gICAgICAgIGFkZFN3aXp6bGVTaGFkZXJUb01hcChzd2l6emxlU2hhZGVyVHlwZSwg
U0hBREVSXzNELCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19Td2l6emxlVUkyREFycmF5
LCAiQmxpdDExIDJEIEN1YmUgVUkgc3dpenpsZSBwaXhlbCBzaGFkZXIiKSk7Ci0gICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBTV0laWkxFU0hBREVSX0NVQkVfSU5UOgotICAgICAgICBhZGRTd2l6
emxlU2hhZGVyVG9NYXAoc3dpenpsZVNoYWRlclR5cGUsIFNIQURFUl8zRCwgZDNkMTE6OkNvbXBp
bGVQUyhkZXZpY2UsIGdfUFNfU3dpenpsZUkyREFycmF5LCAiQmxpdDExIDJEIEN1YmUgSSBzd2l6
emxlIHBpeGVsIHNoYWRlciIpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIFNXSVpaTEVT
SEFERVJfM0RfRkxPQVQ6Ci0gICAgICAgIGFkZFN3aXp6bGVTaGFkZXJUb01hcChzd2l6emxlU2hh
ZGVyVHlwZSwgU0hBREVSXzNELCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19Td2l6emxl
RjNELCAiQmxpdDExIDNEIEYgc3dpenpsZSBwaXhlbCBzaGFkZXIiKSk7Ci0gICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBTV0laWkxFU0hBREVSXzNEX1VJTlQ6Ci0gICAgICAgIGFkZFN3aXp6bGVT
aGFkZXJUb01hcChzd2l6emxlU2hhZGVyVHlwZSwgU0hBREVSXzNELCBkM2QxMTo6Q29tcGlsZVBT
KGRldmljZSwgZ19QU19Td2l6emxlVUkzRCwgIkJsaXQxMSAzRCBVSSBzd2l6emxlIHBpeGVsIHNo
YWRlciIpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIFNXSVpaTEVTSEFERVJfM0RfSU5U
OgotICAgICAgICBhZGRTd2l6emxlU2hhZGVyVG9NYXAoc3dpenpsZVNoYWRlclR5cGUsIFNIQURF
Ul8zRCwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfU3dpenpsZUkzRCwgIkJsaXQxMSAz
RCBJIHN3aXp6bGUgcGl4ZWwgc2hhZGVyIikpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ug
U1dJWlpMRVNIQURFUl9BUlJBWV9GTE9BVDoKLSAgICAgICAgYWRkU3dpenpsZVNoYWRlclRvTWFw
KHN3aXp6bGVTaGFkZXJUeXBlLCBTSEFERVJfM0QsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBn
X1BTX1N3aXp6bGVGMkRBcnJheSwgIkJsaXQxMSAyRCBBcnJheSBGIHN3aXp6bGUgcGl4ZWwgc2hh
ZGVyIikpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgU1dJWlpMRVNIQURFUl9BUlJBWV9V
SU5UOgotICAgICAgICBhZGRTd2l6emxlU2hhZGVyVG9NYXAoc3dpenpsZVNoYWRlclR5cGUsIFNI
QURFUl8zRCwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfU3dpenpsZVVJMkRBcnJheSwg
IkJsaXQxMSAyRCBBcnJheSBVSSBzd2l6emxlIHBpeGVsIHNoYWRlciIpKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIFNXSVpaTEVTSEFERVJfQVJSQVlfSU5UOgotICAgICAgICBhZGRTd2l6
emxlU2hhZGVyVG9NYXAoc3dpenpsZVNoYWRlclR5cGUsIFNIQURFUl8zRCwgZDNkMTE6OkNvbXBp
bGVQUyhkZXZpY2UsIGdfUFNfU3dpenpsZUkyREFycmF5LCAiQmxpdDExIDJEIEFycmF5IEkgc3dp
enpsZSBwaXhlbCBzaGFkZXIiKSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTiwgIkludGVybmFsIGVycm9yIik7CisgICAgICAgIGNhc2UgU1dJWlpMRVNIQURF
Ul8yRF9GTE9BVDoKKyAgICAgICAgICAgIGFkZFN3aXp6bGVTaGFkZXJUb01hcCgKKyAgICAgICAg
ICAgICAgICBzd2l6emxlU2hhZGVyVHlwZSwgU0hBREVSXzJELAorICAgICAgICAgICAgICAgIGQz
ZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1N3aXp6bGVGMkQsICJCbGl0MTEgMkQgRiBzd2l6
emxlIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNX
SVpaTEVTSEFERVJfMkRfVUlOVDoKKyAgICAgICAgICAgIGFkZFN3aXp6bGVTaGFkZXJUb01hcCgK
KyAgICAgICAgICAgICAgICBzd2l6emxlU2hhZGVyVHlwZSwgU0hBREVSXzJELAorICAgICAgICAg
ICAgICAgIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1N3aXp6bGVVSTJELCAiQmxpdDEx
IDJEIFVJIHN3aXp6bGUgcGl4ZWwgc2hhZGVyIikpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgU1dJWlpMRVNIQURFUl8yRF9JTlQ6CisgICAgICAgICAgICBhZGRTd2l6emxlU2hh
ZGVyVG9NYXAoCisgICAgICAgICAgICAgICAgc3dpenpsZVNoYWRlclR5cGUsIFNIQURFUl8yRCwK
KyAgICAgICAgICAgICAgICBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19Td2l6emxlSTJE
LCAiQmxpdDExIDJEIEkgc3dpenpsZSBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBTV0laWkxFU0hBREVSX0NVQkVfRkxPQVQ6CisgICAgICAgICAgICBh
ZGRTd2l6emxlU2hhZGVyVG9NYXAoc3dpenpsZVNoYWRlclR5cGUsIFNIQURFUl8zRCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19Q
U19Td2l6emxlRjJEQXJyYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiQmxpdDExIDJEIEN1YmUgRiBzd2l6emxlIHBpeGVsIHNoYWRlciIpKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNXSVpaTEVTSEFERVJfQ1VCRV9VSU5U
OgorICAgICAgICAgICAgYWRkU3dpenpsZVNoYWRlclRvTWFwKHN3aXp6bGVTaGFkZXJUeXBlLCBT
SEFERVJfM0QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDNkMTE6OkNvbXBp
bGVQUyhkZXZpY2UsIGdfUFNfU3dpenpsZVVJMkRBcnJheSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCbGl0MTEgMkQgQ3ViZSBVSSBzd2l6emxl
IHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNXSVpa
TEVTSEFERVJfQ1VCRV9JTlQ6CisgICAgICAgICAgICBhZGRTd2l6emxlU2hhZGVyVG9NYXAoc3dp
enpsZVNoYWRlclR5cGUsIFNIQURFUl8zRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19Td2l6emxlSTJEQXJyYXksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmxpdDExIDJE
IEN1YmUgSSBzd2l6emxlIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFNXSVpaTEVTSEFERVJfM0RfRkxPQVQ6CisgICAgICAgICAgICBhZGRTd2l6emxl
U2hhZGVyVG9NYXAoCisgICAgICAgICAgICAgICAgc3dpenpsZVNoYWRlclR5cGUsIFNIQURFUl8z
RCwKKyAgICAgICAgICAgICAgICBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19Td2l6emxl
RjNELCAiQmxpdDExIDNEIEYgc3dpenpsZSBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBTV0laWkxFU0hBREVSXzNEX1VJTlQ6CisgICAgICAgICAgICBh
ZGRTd2l6emxlU2hhZGVyVG9NYXAoCisgICAgICAgICAgICAgICAgc3dpenpsZVNoYWRlclR5cGUs
IFNIQURFUl8zRCwKKyAgICAgICAgICAgICAgICBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19Q
U19Td2l6emxlVUkzRCwgIkJsaXQxMSAzRCBVSSBzd2l6emxlIHBpeGVsIHNoYWRlciIpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNXSVpaTEVTSEFERVJfM0RfSU5UOgorICAg
ICAgICAgICAgYWRkU3dpenpsZVNoYWRlclRvTWFwKAorICAgICAgICAgICAgICAgIHN3aXp6bGVT
aGFkZXJUeXBlLCBTSEFERVJfM0QsCisgICAgICAgICAgICAgICAgZDNkMTE6OkNvbXBpbGVQUyhk
ZXZpY2UsIGdfUFNfU3dpenpsZUkzRCwgIkJsaXQxMSAzRCBJIHN3aXp6bGUgcGl4ZWwgc2hhZGVy
IikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1dJWlpMRVNIQURFUl9BUlJB
WV9GTE9BVDoKKyAgICAgICAgICAgIGFkZFN3aXp6bGVTaGFkZXJUb01hcChzd2l6emxlU2hhZGVy
VHlwZSwgU0hBREVSXzNELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQzZDEx
OjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1N3aXp6bGVGMkRBcnJheSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCbGl0MTEgMkQgQXJyYXkgRiBz
d2l6emxlIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFNXSVpaTEVTSEFERVJfQVJSQVlfVUlOVDoKKyAgICAgICAgICAgIGFkZFN3aXp6bGVTaGFkZXJU
b01hcChzd2l6emxlU2hhZGVyVHlwZSwgU0hBREVSXzNELAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1N3aXp6bGVVSTJEQXJy
YXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
QmxpdDExIDJEIEFycmF5IFVJIHN3aXp6bGUgcGl4ZWwgc2hhZGVyIikpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgU1dJWlpMRVNIQURFUl9BUlJBWV9JTlQ6CisgICAgICAgICAg
ICBhZGRTd2l6emxlU2hhZGVyVG9NYXAoc3dpenpsZVNoYWRlclR5cGUsIFNIQURFUl8zRCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwg
Z19QU19Td2l6emxlSTJEQXJyYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiQmxpdDExIDJEIEFycmF5IEkgc3dpenpsZSBwaXhlbCBzaGFkZXIi
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OLCAiSW50ZXJuYWwgZXJyb3IiKTsKICAgICB9CiAKICAgICBzd2l6emxlU2hhZGVySXQg
PSBtU3dpenpsZVNoYWRlck1hcC5maW5kKHN3aXp6bGVTaGFkZXJUeXBlKTsKICAgICBBU1NFUlQo
c3dpenpsZVNoYWRlckl0ICE9IG1Td2l6emxlU2hhZGVyTWFwLmVuZCgpKTsKICAgICAqc2hhZGVy
ID0gJnN3aXp6bGVTaGFkZXJJdC0+c2Vjb25kOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9f
RVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworfQorCitnbDo6RXJyb3JPclJlc3Vs
dDxUZXh0dXJlSGVscGVyMTE+IEJsaXQxMTo6cmVzb2x2ZURlcHRoKFJlbmRlclRhcmdldDExICpk
ZXB0aCkKK3sKKyAgICBjb25zdCBhdXRvICZleHRlbnRzICAgICAgICAgID0gZGVwdGgtPmdldEV4
dGVudHMoKTsKKyAgICBJRDNEMTFEZXZpY2UgKmRldmljZSAgICAgICAgID0gbVJlbmRlcmVyLT5n
ZXREZXZpY2UoKTsKKyAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpjb250ZXh0ID0gbVJlbmRlcmVy
LT5nZXREZXZpY2VDb250ZXh0KCk7CisKKyAgICBBTkdMRV9UUlkoaW5pdFJlc29sdmVEZXB0aFN0
ZW5jaWwoZXh0ZW50cykpOworCisgICAgLy8gTm90aWZ5IHRoZSBSZW5kZXJlciB0aGF0IGFsbCBz
dGF0ZSBzaG91bGQgYmUgaW52YWxpZGF0ZWQuCisgICAgbVJlbmRlcmVyLT5tYXJrQWxsU3RhdGVE
aXJ0eSgpOworCisgICAgLy8gQXBwbHkgdGhlIG5lY2Vzc2FyeSBzdGF0ZSBjaGFuZ2VzIHRvIHRo
ZSBEM0QxMSBpbW1lZGlhdGUgZGV2aWNlIGNvbnRleHQuCisgICAgY29udGV4dC0+SUFTZXRJbnB1
dExheW91dChudWxscHRyKTsKKyAgICBjb250ZXh0LT5JQVNldFByaW1pdGl2ZVRvcG9sb2d5KEQz
RDExX1BSSU1JVElWRV9UT1BPTE9HWV9UUklBTkdMRUxJU1QpOworICAgIGNvbnRleHQtPlZTU2V0
U2hhZGVyKG1SZXNvbHZlRGVwdGhTdGVuY2lsVlMucmVzb2x2ZShkZXZpY2UpLCBudWxscHRyLCAw
KTsKKyAgICBjb250ZXh0LT5HU1NldFNoYWRlcihudWxscHRyLCBudWxscHRyLCAwKTsKKyAgICBj
b250ZXh0LT5SU1NldFN0YXRlKG51bGxwdHIpOworICAgIGNvbnRleHQtPk9NU2V0RGVwdGhTdGVu
Y2lsU3RhdGUobnVsbHB0ciwgMHhGRkZGRkZGRik7CisgICAgY29udGV4dC0+T01TZXRSZW5kZXJU
YXJnZXRzKDEsICZtUmVzb2x2ZWREZXB0aFN0ZW5jaWxSVFZpZXcsIG51bGxwdHIpOworICAgIGNv
bnRleHQtPk9NU2V0QmxlbmRTdGF0ZShudWxscHRyLCBudWxscHRyLCAweEZGRkZGRkYpOworCisg
ICAgLy8gU2V0IHRoZSB2aWV3cG9ydAorICAgIEQzRDExX1ZJRVdQT1JUIHZpZXdwb3J0OworICAg
IHZpZXdwb3J0LlRvcExlZnRYID0gMDsKKyAgICB2aWV3cG9ydC5Ub3BMZWZ0WSA9IDA7CisgICAg
dmlld3BvcnQuV2lkdGggICAgPSBzdGF0aWNfY2FzdDxGTE9BVD4oZXh0ZW50cy53aWR0aCk7Cisg
ICAgdmlld3BvcnQuSGVpZ2h0ICAgPSBzdGF0aWNfY2FzdDxGTE9BVD4oZXh0ZW50cy5oZWlnaHQp
OworICAgIHZpZXdwb3J0Lk1pbkRlcHRoID0gMC4wZjsKKyAgICB2aWV3cG9ydC5NYXhEZXB0aCA9
IDEuMGY7CisgICAgY29udGV4dC0+UlNTZXRWaWV3cG9ydHMoMSwgJnZpZXdwb3J0KTsKKworICAg
IElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqcGl4ZWxWaWV3c1tdID0ge2RlcHRoLT5nZXRTaGFk
ZXJSZXNvdXJjZVZpZXcoKX07CisKKyAgICBjb250ZXh0LT5QU1NldFNoYWRlclJlc291cmNlcygw
LCAxLCBwaXhlbFZpZXdzKTsKKworICAgIGNvbnRleHQtPlBTU2V0U2hhZGVyKG1SZXNvbHZlRGVw
dGhQUy5yZXNvbHZlKGRldmljZSksIG51bGxwdHIsIDApOworCisgICAgLy8gVHJpZ2dlciB0aGUg
YmxpdCBvbiB0aGUgR1BVLgorICAgIGNvbnRleHQtPkRyYXcoNiwgMCk7CisKKyAgICBnbDo6Qm94
IGNvcHlCb3goMCwgMCwgMCwgZXh0ZW50cy53aWR0aCwgZXh0ZW50cy5oZWlnaHQsIDEpOworCisg
ICAgY29uc3QgYXV0byAmY29weUZ1bmN0aW9uID0gR2V0Q29weURlcHRoU3RlbmNpbEZ1bmN0aW9u
KGRlcHRoLT5nZXRJbnRlcm5hbEZvcm1hdCgpKTsKKyAgICBjb25zdCBhdXRvICZkc0Zvcm1hdFNl
dCAgPSBkZXB0aC0+Z2V0Rm9ybWF0U2V0KCk7CisgICAgY29uc3QgYXV0byAmZHNEeGdpSW5mbyAg
ID0gZDNkMTE6OkdldERYR0lGb3JtYXRTaXplSW5mbyhkc0Zvcm1hdFNldC50ZXhGb3JtYXQpOwor
CisgICAgSUQzRDExVGV4dHVyZTJEICpkZXN0VGV4ID0gbnVsbHB0cjsKKworICAgIEQzRDExX1RF
WFRVUkUyRF9ERVNDIGRlc3REZXNjOworICAgIGRlc3REZXNjLldpZHRoICAgICAgICAgICAgICA9
IGV4dGVudHMud2lkdGg7CisgICAgZGVzdERlc2MuSGVpZ2h0ICAgICAgICAgICAgID0gZXh0ZW50
cy5oZWlnaHQ7CisgICAgZGVzdERlc2MuTWlwTGV2ZWxzICAgICAgICAgID0gMTsKKyAgICBkZXN0
RGVzYy5BcnJheVNpemUgICAgICAgICAgPSAxOworICAgIGRlc3REZXNjLkZvcm1hdCAgICAgICAg
ICAgICA9IGRzRm9ybWF0U2V0LnRleEZvcm1hdDsKKyAgICBkZXN0RGVzYy5TYW1wbGVEZXNjLkNv
dW50ICAgPSAxOworICAgIGRlc3REZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7CisgICAgZGVz
dERlc2MuVXNhZ2UgICAgICAgICAgICAgID0gRDNEMTFfVVNBR0VfREVGQVVMVDsKKyAgICBkZXN0
RGVzYy5CaW5kRmxhZ3MgICAgICAgICAgPSBEM0QxMV9CSU5EX1NIQURFUl9SRVNPVVJDRTsKKyAg
ICBkZXN0RGVzYy5DUFVBY2Nlc3NGbGFncyAgICAgPSAwOworICAgIGRlc3REZXNjLk1pc2NGbGFn
cyAgICAgICAgICA9IDA7CisKKyAgICBIUkVTVUxUIGhyID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJl
MkQoJmRlc3REZXNjLCBudWxscHRyLCAmZGVzdFRleCk7CisgICAgaWYgKEZBSUxFRChocikpCisg
ICAgeworICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJFcnJvciBj
cmVhdGluZyBkZXB0aCByZXNvbHZlIGRlc3QgdGV4dHVyZS4iKTsKKyAgICB9CisgICAgZDNkMTE6
OlNldERlYnVnTmFtZShkZXN0VGV4LCAicmVzb2x2ZURlcHRoRGVzdCIpOworCisgICAgVGV4dHVy
ZUhlbHBlcjExIGRlc3QgPSBUZXh0dXJlSGVscGVyMTE6Ok1ha2VBbmRQb3NzZXNzMkQoZGVzdFRl
eCwgZGVwdGgtPmdldEZvcm1hdFNldCgpKTsKKyAgICBBTkdMRV9UUlkoY29weUFuZENvbnZlcnQo
bVJlc29sdmVkRGVwdGhTdGVuY2lsLCAwLCBjb3B5Qm94LCBleHRlbnRzLCBkZXN0LCAwLCBjb3B5
Qm94LCBleHRlbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLCAwLCAw
LCAwLCA4LCBkc0R4Z2lJbmZvLnBpeGVsQnl0ZXMsIGNvcHlGdW5jdGlvbikpOworICAgIHJldHVy
biBkZXN0OworfQorCitnbDo6RXJyb3IgQmxpdDExOjppbml0UmVzb2x2ZURlcHRoU3RlbmNpbChj
b25zdCBnbDo6RXh0ZW50cyAmZXh0ZW50cykKK3sKKyAgICAvLyBDaGVjayBpZiB3ZSBuZWVkIHRv
IHJlY3JlYXRlIGRlcHRoIHN0ZW5jaWwgdmlldworICAgIGlmIChtUmVzb2x2ZWREZXB0aFN0ZW5j
aWwudmFsaWQoKSAmJiBleHRlbnRzID09IG1SZXNvbHZlZERlcHRoU3RlbmNpbC5nZXRFeHRlbnRz
KCkpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKKyAgICB9CisKKyAgICBp
ZiAobVJlc29sdmVkRGVwdGhTdGVuY2lsLnZhbGlkKCkpCisgICAgeworICAgICAgICByZWxlYXNl
UmVzb2x2ZURlcHRoU3RlbmNpbFJlc291cmNlcygpOworICAgIH0KKworICAgIGNvbnN0IGF1dG8g
JmZvcm1hdFNldCA9IGQzZDExOjpGb3JtYXQ6OkdldChHTF9SRzMyRiwgbVJlbmRlcmVyLT5nZXRS
ZW5kZXJlcjExRGV2aWNlQ2FwcygpKTsKKworICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIHRleHR1
cmVEZXNjOworICAgIHRleHR1cmVEZXNjLldpZHRoICAgICAgICAgICAgICA9IGV4dGVudHMud2lk
dGg7CisgICAgdGV4dHVyZURlc2MuSGVpZ2h0ICAgICAgICAgICAgID0gZXh0ZW50cy5oZWlnaHQ7
CisgICAgdGV4dHVyZURlc2MuTWlwTGV2ZWxzICAgICAgICAgID0gMTsKKyAgICB0ZXh0dXJlRGVz
Yy5BcnJheVNpemUgICAgICAgICAgPSAxOworICAgIHRleHR1cmVEZXNjLkZvcm1hdCAgICAgICAg
ICAgICA9IGZvcm1hdFNldC50ZXhGb3JtYXQ7CisgICAgdGV4dHVyZURlc2MuU2FtcGxlRGVzYy5D
b3VudCAgID0gMTsKKyAgICB0ZXh0dXJlRGVzYy5TYW1wbGVEZXNjLlF1YWxpdHkgPSAwOworICAg
IHRleHR1cmVEZXNjLlVzYWdlICAgICAgICAgICAgICA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7Cisg
ICAgdGV4dHVyZURlc2MuQmluZEZsYWdzICAgICAgICAgID0gRDNEMTFfQklORF9SRU5ERVJfVEFS
R0VUOworICAgIHRleHR1cmVEZXNjLkNQVUFjY2Vzc0ZsYWdzICAgICA9IDA7CisgICAgdGV4dHVy
ZURlc2MuTWlzY0ZsYWdzICAgICAgICAgID0gMDsKKworICAgIElEM0QxMURldmljZSAqZGV2aWNl
ID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAgIElEM0QxMVRleHR1cmUyRCAqcmVzb2x2
ZWREZXB0aFN0ZW5jaWwgPSBudWxscHRyOworICAgIEhSRVNVTFQgaHIgPSBkZXZpY2UtPkNyZWF0
ZVRleHR1cmUyRCgmdGV4dHVyZURlc2MsIG51bGxwdHIsICZyZXNvbHZlZERlcHRoU3RlbmNpbCk7
CisgICAgaWYgKEZBSUxFRChocikpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8gYWxsb2NhdGUgcmVzb2x2ZWQgZGVwdGggc3RlbmNp
bCB0ZXh0dXJlIik7CisgICAgfQorICAgIGQzZDExOjpTZXREZWJ1Z05hbWUocmVzb2x2ZWREZXB0
aFN0ZW5jaWwsICJCbGl0MTE6Om1SZXNvbHZlZERlcHRoU3RlbmNpbCIpOworCisgICAgQVNTRVJU
KG1SZXNvbHZlZERlcHRoU3RlbmNpbFJUVmlldyA9PSBudWxscHRyKTsKKyAgICBociA9CisgICAg
ICAgIGRldmljZS0+Q3JlYXRlUmVuZGVyVGFyZ2V0VmlldyhyZXNvbHZlZERlcHRoU3RlbmNpbCwg
bnVsbHB0ciwgJm1SZXNvbHZlZERlcHRoU3RlbmNpbFJUVmlldyk7CisgICAgaWYgKEZBSUxFRCho
cikpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBhbGxvY2F0ZSBCbGl0MTE6Om1SZXNv
bHZlZERlcHRoU3RlbmNpbFJUVmlldyIpOworICAgIH0KKyAgICBkM2QxMTo6U2V0RGVidWdOYW1l
KG1SZXNvbHZlZERlcHRoU3RlbmNpbFJUVmlldywgIkJsaXQxMTo6bVJlc29sdmVkRGVwdGhTdGVu
Y2lsUlRWaWV3Iik7CisKKyAgICBtUmVzb2x2ZWREZXB0aFN0ZW5jaWwgPSBUZXh0dXJlSGVscGVy
MTE6Ok1ha2VBbmRQb3NzZXNzMkQocmVzb2x2ZWREZXB0aFN0ZW5jaWwsIGZvcm1hdFNldCk7CisK
KyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKK30KKworZ2w6OkVycm9yT3JSZXN1bHQ8VGV4dHVy
ZUhlbHBlcjExPiBCbGl0MTE6OnJlc29sdmVTdGVuY2lsKFJlbmRlclRhcmdldDExICpkZXB0aFN0
ZW5jaWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBhbHNvRGVwdGgpCit7CisgICAgY29uc3QgYXV0byAmZXh0ZW50cyA9IGRl
cHRoU3RlbmNpbC0+Z2V0RXh0ZW50cygpOworCisgICAgQU5HTEVfVFJZKGluaXRSZXNvbHZlRGVw
dGhTdGVuY2lsKGV4dGVudHMpKTsKKworICAgIElEM0QxMURldmljZSAqZGV2aWNlICAgICAgICAg
PSBtUmVuZGVyZXItPmdldERldmljZSgpOworICAgIElEM0QxMURldmljZUNvbnRleHQgKmNvbnRl
eHQgPSBtUmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKTsKKworICAgIElEM0QxMVJlc291cmNl
ICpzdGVuY2lsUmVzb3VyY2UgPSBkZXB0aFN0ZW5jaWwtPmdldFRleHR1cmUoKTsKKworICAgIC8v
IENoZWNrIGlmIHdlIG5lZWQgdG8gcmUtY3JlYXRlIHRoZSBzdGVuY2lsIFNSVi4KKyAgICBpZiAo
bVN0ZW5jaWxTUlYpCisgICAgeworICAgICAgICBJRDNEMTFSZXNvdXJjZSAqcHJpb3JSZXNvdXJj
ZSA9IG51bGxwdHI7CisgICAgICAgIG1TdGVuY2lsU1JWLT5HZXRSZXNvdXJjZSgmcHJpb3JSZXNv
dXJjZSk7CisKKyAgICAgICAgaWYgKHN0ZW5jaWxSZXNvdXJjZSAhPSBwcmlvclJlc291cmNlKQor
ICAgICAgICB7CisgICAgICAgICAgICBTYWZlUmVsZWFzZShtU3RlbmNpbFNSVik7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBpZiAoIW1TdGVuY2lsU1JWKQorICAgIHsKKyAgICAgICAgRDNEMTFf
U0hBREVSX1JFU09VUkNFX1ZJRVdfREVTQyBzclZpZXdEZXNjOworICAgICAgICBzclZpZXdEZXNj
LkZvcm1hdCAgICAgICAgPSBHZXRTdGVuY2lsU1JWRm9ybWF0KGRlcHRoU3RlbmNpbC0+Z2V0Rm9y
bWF0U2V0KCkpOworICAgICAgICBzclZpZXdEZXNjLlZpZXdEaW1lbnNpb24gPSBEM0QxMV9TUlZf
RElNRU5TSU9OX1RFWFRVUkUyRE1TOworCisgICAgICAgIEhSRVNVTFQgaHIgPSBkZXZpY2UtPkNy
ZWF0ZVNoYWRlclJlc291cmNlVmlldyhzdGVuY2lsUmVzb3VyY2UsICZzclZpZXdEZXNjLCAmbVN0
ZW5jaWxTUlYpOworICAgICAgICBpZiAoRkFJTEVEKGhyKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRXJyb3IgY3JlYXRpbmcgQmxp
dDExIHN0ZW5jaWwgU1JWIik7CisgICAgICAgIH0KKyAgICAgICAgZDNkMTE6OlNldERlYnVnTmFt
ZShtU3RlbmNpbFNSViwgIkJsaXQxMTo6bVN0ZW5jaWxTUlYiKTsKKyAgICB9CisKKyAgICAvLyBO
b3RpZnkgdGhlIFJlbmRlcmVyIHRoYXQgYWxsIHN0YXRlIHNob3VsZCBiZSBpbnZhbGlkYXRlZC4K
KyAgICBtUmVuZGVyZXItPm1hcmtBbGxTdGF0ZURpcnR5KCk7CisKKyAgICAvLyBBcHBseSB0aGUg
bmVjZXNzYXJ5IHN0YXRlIGNoYW5nZXMgdG8gdGhlIEQzRDExIGltbWVkaWF0ZSBkZXZpY2UgY29u
dGV4dC4KKyAgICBjb250ZXh0LT5JQVNldElucHV0TGF5b3V0KG51bGxwdHIpOworICAgIGNvbnRl
eHQtPklBU2V0UHJpbWl0aXZlVG9wb2xvZ3koRDNEMTFfUFJJTUlUSVZFX1RPUE9MT0dZX1RSSUFO
R0xFTElTVCk7CisgICAgY29udGV4dC0+VlNTZXRTaGFkZXIobVJlc29sdmVEZXB0aFN0ZW5jaWxW
Uy5yZXNvbHZlKGRldmljZSksIG51bGxwdHIsIDApOworICAgIGNvbnRleHQtPkdTU2V0U2hhZGVy
KG51bGxwdHIsIG51bGxwdHIsIDApOworICAgIGNvbnRleHQtPlJTU2V0U3RhdGUobnVsbHB0cik7
CisgICAgY29udGV4dC0+T01TZXREZXB0aFN0ZW5jaWxTdGF0ZShudWxscHRyLCAweEZGRkZGRkZG
KTsKKyAgICBjb250ZXh0LT5PTVNldFJlbmRlclRhcmdldHMoMSwgJm1SZXNvbHZlZERlcHRoU3Rl
bmNpbFJUVmlldywgbnVsbHB0cik7CisgICAgY29udGV4dC0+T01TZXRCbGVuZFN0YXRlKG51bGxw
dHIsIG51bGxwdHIsIDB4RkZGRkZGRik7CisKKyAgICAvLyBTZXQgdGhlIHZpZXdwb3J0CisgICAg
RDNEMTFfVklFV1BPUlQgdmlld3BvcnQ7CisgICAgdmlld3BvcnQuVG9wTGVmdFggPSAwOworICAg
IHZpZXdwb3J0LlRvcExlZnRZID0gMDsKKyAgICB2aWV3cG9ydC5XaWR0aCAgICA9IHN0YXRpY19j
YXN0PEZMT0FUPihleHRlbnRzLndpZHRoKTsKKyAgICB2aWV3cG9ydC5IZWlnaHQgICA9IHN0YXRp
Y19jYXN0PEZMT0FUPihleHRlbnRzLmhlaWdodCk7CisgICAgdmlld3BvcnQuTWluRGVwdGggPSAw
LjBmOworICAgIHZpZXdwb3J0Lk1heERlcHRoID0gMS4wZjsKKyAgICBjb250ZXh0LT5SU1NldFZp
ZXdwb3J0cygxLCAmdmlld3BvcnQpOworCisgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpw
aXhlbFZpZXdzW10gPSB7CisgICAgICAgIGRlcHRoU3RlbmNpbC0+Z2V0U2hhZGVyUmVzb3VyY2VW
aWV3KCksIG1TdGVuY2lsU1JWLAorICAgIH07CisKKyAgICBjb250ZXh0LT5QU1NldFNoYWRlclJl
c291cmNlcygwLCAyLCBwaXhlbFZpZXdzKTsKKworICAgIC8vIFJlc29sdmluZyB0aGUgZGVwdGgg
YnVmZmVyIHdvcmtzIGJ5IHNhbXBsaW5nIHRoZSBkZXB0aCBpbiB0aGUgc2hhZGVyIHVzaW5nIGEg
U1JWLCB0aGVuCisgICAgLy8gd3JpdGluZyB0byB0aGUgcmVzb2x2ZWQgZGVwdGggYnVmZmVyIHVz
aW5nIFNWX0RlcHRoLiBXZSBjYW4ndCB1c2UgdGhpcyBtZXRob2QgZm9yIHN0ZW5jaWwKKyAgICAv
LyBiZWNhdXNlIFNWX1N0ZW5jaWxSZWYgaXNuJ3Qgc3VwcG9ydGVkIHVudGlsIEhMU0wgNS4xL0Qz
RDExLjMuCisgICAgaWYgKGFsc29EZXB0aCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPlBTU2V0
U2hhZGVyKG1SZXNvbHZlRGVwdGhTdGVuY2lsUFMucmVzb2x2ZShkZXZpY2UpLCBudWxscHRyLCAw
KTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgY29udGV4dC0+UFNTZXRTaGFkZXIo
bVJlc29sdmVTdGVuY2lsUFMucmVzb2x2ZShkZXZpY2UpLCBudWxscHRyLCAwKTsKKyAgICB9CisK
KyAgICAvLyBUcmlnZ2VyIHRoZSBibGl0IG9uIHRoZSBHUFUuCisgICAgY29udGV4dC0+RHJhdyg2
LCAwKTsKKworICAgIGdsOjpCb3ggY29weUJveCgwLCAwLCAwLCBleHRlbnRzLndpZHRoLCBleHRl
bnRzLmhlaWdodCwgMSk7CisKKyAgICBUZXh0dXJlSGVscGVyMTEgZGVzdDsKKyAgICBBTkdMRV9U
UllfUkVTVUxUKENyZWF0ZVN0YWdpbmdUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIGRlcHRoU3RlbmNp
bC0+Z2V0Rm9ybWF0U2V0KCksIGV4dGVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTdGFnaW5nQWNjZXNzOjpSRUFEX1dSSVRFLCBkZXZpY2UpLAorICAgICAg
ICAgICAgICAgICAgICAgZGVzdCk7CisKKyAgICBjb25zdCBhdXRvICZjb3B5RnVuY3Rpb24gPSBH
ZXRDb3B5RGVwdGhTdGVuY2lsRnVuY3Rpb24oZGVwdGhTdGVuY2lsLT5nZXRJbnRlcm5hbEZvcm1h
dCgpKTsKKyAgICBjb25zdCBhdXRvICZkc0Zvcm1hdFNldCAgPSBkZXB0aFN0ZW5jaWwtPmdldEZv
cm1hdFNldCgpOworICAgIGNvbnN0IGF1dG8gJmRzRHhnaUluZm8gICA9IGQzZDExOjpHZXREWEdJ
Rm9ybWF0U2l6ZUluZm8oZHNGb3JtYXRTZXQudGV4Rm9ybWF0KTsKKworICAgIEFOR0xFX1RSWShj
b3B5QW5kQ29udmVydEltcGwobVJlc29sdmVkRGVwdGhTdGVuY2lsLCAwLCBjb3B5Qm94LCBleHRl
bnRzLCBkZXN0LCBjb3B5Qm94LCBleHRlbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0ciwgMCwgMCwgMCwgOHUsIGRzRHhnaUluZm8ucGl4ZWxCeXRlcywgY29weUZ1
bmN0aW9uKSk7CisKKyAgICAvLyBSZXR1cm4gdGhlIHJlc29sdmVkIGRlcHRoIHRleHR1cmUsIHdo
aWNoIHRoZSBjYWxsZXIgbXVzdCBSZWxlYXNlLgorICAgIHJldHVybiBkZXN0OwogfQogCit2b2lk
IEJsaXQxMTo6cmVsZWFzZVJlc29sdmVEZXB0aFN0ZW5jaWxSZXNvdXJjZXMoKQoreworICAgIFNh
ZmVSZWxlYXNlKG1TdGVuY2lsU1JWKTsKKyAgICBTYWZlUmVsZWFzZShtUmVzb2x2ZWREZXB0aFN0
ZW5jaWxSVFZpZXcpOwogfQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQmxpdDExLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9CbGl0MTEuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9CbGl0MTEuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsOCArMjYsMTAgQEAgY2xhc3MgQmxpdDExIDogYW5nbGU6Ok5vbkNvcHlh
YmxlCiAgICAgZXhwbGljaXQgQmxpdDExKFJlbmRlcmVyMTEgKnJlbmRlcmVyKTsKICAgICB+Qmxp
dDExKCk7CiAKLSAgICBnbDo6RXJyb3Igc3dpenpsZVRleHR1cmUoSUQzRDExU2hhZGVyUmVzb3Vy
Y2VWaWV3ICpzb3VyY2UsIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKmRlc3QsIGNvbnN0IGdsOjpF
eHRlbnRzICZzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3dpenps
ZVJlZCwgR0xlbnVtIHN3aXp6bGVHcmVlbiwgR0xlbnVtIHN3aXp6bGVCbHVlLCBHTGVudW0gc3dp
enpsZUFscGhhKTsKKyAgICBnbDo6RXJyb3Igc3dpenpsZVRleHR1cmUoSUQzRDExU2hhZGVyUmVz
b3VyY2VWaWV3ICpzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMVJl
bmRlclRhcmdldFZpZXcgKmRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpFeHRlbnRzICZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6U3dpenpsZVN0YXRlICZzd2l6emxlVGFyZ2V0KTsKIAogICAgIGdsOjpFcnJvciBjb3B5VGV4
dHVyZShJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNvdXJjZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OkJveCAmc291cmNlQXJlYSwKQEAgLTM4LDI3ICs0MCw2OSBAQCBj
bGFzcyBCbGl0MTEgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAqc2Npc3NvciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGRlc3RGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBm
aWx0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbWFza09mZkFscGhhKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBtYXNrT2ZmQWxwaGEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCB1bnBhY2tVbm11bHRpcGx5QWxwaGEpOwogCi0gICAgZ2w6OkVycm9y
IGNvcHlTdGVuY2lsKElEM0QxMVJlc291cmNlICpzb3VyY2UsIHVuc2lnbmVkIGludCBzb3VyY2VT
dWJyZXNvdXJjZSwgY29uc3QgZ2w6OkJveCAmc291cmNlQXJlYSwgY29uc3QgZ2w6OkV4dGVudHMg
JnNvdXJjZVNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMVJlc291cmNlICpk
ZXN0LCB1bnNpZ25lZCBpbnQgZGVzdFN1YnJlc291cmNlLCBjb25zdCBnbDo6Qm94ICZkZXN0QXJl
YSwgY29uc3QgZ2w6OkV4dGVudHMgJmRlc3RTaXplLAorICAgIGdsOjpFcnJvciBjb3B5U3RlbmNp
bChjb25zdCBUZXh0dXJlSGVscGVyMTEgJnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IHNvdXJjZVN1YnJlc291cmNlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6Qm94ICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6RXh0ZW50cyAmc291cmNlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVGV4dHVyZUhlbHBlcjExICZkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgZGVzdFN1YnJlc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6Qm94ICZkZXN0QXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OkV4dGVudHMgJmRlc3RTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6UmVjdGFuZ2xlICpzY2lzc29yKTsKIAotICAgIGdsOjpFcnJvciBjb3B5RGVwdGgoSUQz
RDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzb3VyY2UsIGNvbnN0IGdsOjpCb3ggJnNvdXJjZUFyZWEs
IGNvbnN0IGdsOjpFeHRlbnRzICZzb3VyY2VTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAg
SUQzRDExRGVwdGhTdGVuY2lsVmlldyAqZGVzdCwgY29uc3QgZ2w6OkJveCAmZGVzdEFyZWEsIGNv
bnN0IGdsOjpFeHRlbnRzICZkZXN0U2l6ZSwKKyAgICBnbDo6RXJyb3IgY29weURlcHRoKElEM0Qx
MVNoYWRlclJlc291cmNlVmlldyAqc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OkJveCAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpFeHRlbnRzICZzb3VyY2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgSUQzRDExRGVw
dGhTdGVuY2lsVmlldyAqZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpC
b3ggJmRlc3RBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMg
JmRlc3RTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAq
c2Npc3Nvcik7CiAKLSAgICBnbDo6RXJyb3IgY29weURlcHRoU3RlbmNpbChJRDNEMTFSZXNvdXJj
ZSAqc291cmNlLCB1bnNpZ25lZCBpbnQgc291cmNlU3VicmVzb3VyY2UsIGNvbnN0IGdsOjpCb3gg
JnNvdXJjZUFyZWEsIGNvbnN0IGdsOjpFeHRlbnRzICZzb3VyY2VTaXplLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIElEM0QxMVJlc291cmNlICpkZXN0LCB1bnNpZ25lZCBpbnQgZGVz
dFN1YnJlc291cmNlLCBjb25zdCBnbDo6Qm94ICZkZXN0QXJlYSwgY29uc3QgZ2w6OkV4dGVudHMg
JmRlc3RTaXplLAorICAgIGdsOjpFcnJvciBjb3B5RGVwdGhTdGVuY2lsKGNvbnN0IFRleHR1cmVI
ZWxwZXIxMSAmc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCBzb3VyY2VTdWJyZXNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6Qm94ICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpFeHRlbnRzICZzb3VyY2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRleHR1cmVIZWxwZXIxMSAmZGVzdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGVzdFN1YnJlc291cmNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmRlc3RBcmVhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZkZXN0U2l6ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICpzY2lzc29yKTsKIAorICAg
IGdsOjpFcnJvck9yUmVzdWx0PFRleHR1cmVIZWxwZXIxMT4gcmVzb2x2ZURlcHRoKFJlbmRlclRh
cmdldDExICpkZXB0aCk7CisKKyAgICBnbDo6RXJyb3JPclJlc3VsdDxUZXh0dXJlSGVscGVyMTE+
IHJlc29sdmVTdGVuY2lsKFJlbmRlclRhcmdldDExICpkZXB0aFN0ZW5jaWwsIGJvb2wgYWxzb0Rl
cHRoKTsKKworICAgIHVzaW5nIEJsaXRDb252ZXJ0RnVuY3Rpb24gPSB2b2lkKGNvbnN0IGdsOjpC
b3ggJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OkJveCAmZGVzdEFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmY2xpcFJlY3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNvdXJjZVNpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZVJvd1BpdGNoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkZXN0Um93
UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHJl
YWRPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90
IHdyaXRlT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBjb3B5U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
c3JjUGl4ZWxTdHJpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGRlc3RQaXhlbFN0cmlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB1aW50OF90ICpzb3VyY2VEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQ4X3QgKmRlc3REYXRhKTsKKwogICBwcml2YXRlOgogICAgIGVudW0gQmxp
dFNoYWRlclR5cGUKICAgICB7CiAgICAgICAgIEJMSVRTSEFERVJfSU5WQUxJRCwKICAgICAgICAg
QkxJVFNIQURFUl8yRF9SR0JBRiwKKyAgICAgICAgQkxJVFNIQURFUl8yRF9SR0JBRl9QUkVNVUxU
SVBMWSwKKyAgICAgICAgQkxJVFNIQURFUl8yRF9SR0JBRl9VTk1VTFRJUExZLAogICAgICAgICBC
TElUU0hBREVSXzJEX0JHUkFGLAorICAgICAgICBCTElUU0hBREVSXzJEX0JHUkFGX1BSRU1VTFRJ
UExZLAorICAgICAgICBCTElUU0hBREVSXzJEX0JHUkFGX1VOTVVMVElQTFksCiAgICAgICAgIEJM
SVRTSEFERVJfMkRfUkdCRiwKKyAgICAgICAgQkxJVFNIQURFUl8yRF9SR0JGX1BSRU1VTFRJUExZ
LAorICAgICAgICBCTElUU0hBREVSXzJEX1JHQkZfVU5NVUxUSVBMWSwKICAgICAgICAgQkxJVFNI
QURFUl8yRF9SR0YsCiAgICAgICAgIEJMSVRTSEFERVJfMkRfUkYsCiAgICAgICAgIEJMSVRTSEFE
RVJfMkRfQUxQSEEsCkBAIC0xMDcsOSArMTUxLDEzIEBAIGNsYXNzIEJsaXQxMSA6IGFuZ2xlOjpO
b25Db3B5YWJsZQogICAgICAgICBTV0laWkxFU0hBREVSX0FSUkFZX0lOVCwKICAgICB9OwogCi0g
ICAgdHlwZWRlZiB2b2lkICgqV3JpdGVWZXJ0ZXhGdW5jdGlvbikoY29uc3QgZ2w6OkJveCAmc291
cmNlQXJlYSwgY29uc3QgZ2w6OkV4dGVudHMgJnNvdXJjZVNpemUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmZGVzdEFyZWEsIGNvbnN0IGds
OjpFeHRlbnRzICZkZXN0U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2b2lkICpvdXRWZXJ0aWNlcywgdW5zaWduZWQgaW50ICpvdXRTdHJpZGUsIHVuc2lnbmVk
IGludCAqb3V0VmVydGV4Q291bnQsCisgICAgdHlwZWRlZiB2b2lkICgqV3JpdGVWZXJ0ZXhGdW5j
dGlvbikoY29uc3QgZ2w6OkJveCAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc291cmNlU2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZkZXN0QXJlYSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50
cyAmZGVzdFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9p
ZCAqb3V0VmVydGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50ICpvdXRTdHJpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50ICpvdXRWZXJ0ZXhDb3VudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEM0QxMV9QUklNSVRJVkVfVE9QT0xPR1kgKm91dFRvcG9s
b2d5KTsKIAogICAgIGVudW0gU2hhZGVyRGltZW5zaW9uCkBAIC0xMzcsMjEgKzE4NSw3NiBAQCBj
bGFzcyBCbGl0MTEgOiBhbmdsZTo6Tm9uQ29weWFibGUKIAogICAgIFNoYWRlclN1cHBvcnQgZ2V0
U2hhZGVyU3VwcG9ydChjb25zdCBTaGFkZXIgJnNoYWRlcik7CiAKLSAgICBzdGF0aWMgQmxpdFNo
YWRlclR5cGUgR2V0QmxpdFNoYWRlclR5cGUoR0xlbnVtIGRlc3RpbmF0aW9uRm9ybWF0LCBib29s
IGlzU2lnbmVkLCBTaGFkZXJEaW1lbnNpb24gZGltZW5zaW9uKTsKKyAgICBzdGF0aWMgQmxpdFNo
YWRlclR5cGUgR2V0QmxpdFNoYWRlclR5cGUoR0xlbnVtIGRlc3RpbmF0aW9uRm9ybWF0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzU2lnbmVkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1By
ZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgdW5wYWNrVW5tdWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTaGFkZXJEaW1lbnNpb24gZGltZW5zaW9uKTsKICAgICBzdGF0
aWMgU3dpenpsZVNoYWRlclR5cGUgR2V0U3dpenpsZVNoYWRlclR5cGUoR0xlbnVtIHR5cGUsIEQz
RDExX1NSVl9ESU1FTlNJT04gZGltZW5zaW9uYWxpdHkpOwogCi0gICAgZ2w6OkVycm9yIGNvcHlE
ZXB0aFN0ZW5jaWwoSUQzRDExUmVzb3VyY2UgKnNvdXJjZSwgdW5zaWduZWQgaW50IHNvdXJjZVN1
YnJlc291cmNlLCBjb25zdCBnbDo6Qm94ICZzb3VyY2VBcmVhLCBjb25zdCBnbDo6RXh0ZW50cyAm
c291cmNlU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFSZXNvdXJj
ZSAqZGVzdCwgdW5zaWduZWQgaW50IGRlc3RTdWJyZXNvdXJjZSwgY29uc3QgZ2w6OkJveCAmZGVz
dEFyZWEsIGNvbnN0IGdsOjpFeHRlbnRzICZkZXN0U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICpzY2lzc29yLCBib29sIHN0ZW5jaWxPbmx5
KTsKLQotICAgIHZvaWQgYWRkQmxpdFNoYWRlclRvTWFwKEJsaXRTaGFkZXJUeXBlIGJsaXRTaGFk
ZXJUeXBlLCBTaGFkZXJEaW1lbnNpb24gZGltZW5zaW9uLCBJRDNEMTFQaXhlbFNoYWRlciAqcHMp
OwotCi0gICAgZ2w6OkVycm9yIGdldEJsaXRTaGFkZXIoR0xlbnVtIGRlc3RGb3JtYXQsIGJvb2wg
aXNTaWduZWQsIFNoYWRlckRpbWVuc2lvbiBkaW1lbnNpb24sIGNvbnN0IFNoYWRlciAqKnNoYWRl
ck91dCk7Ci0gICAgZ2w6OkVycm9yIGdldFN3aXp6bGVTaGFkZXIoR0xlbnVtIHR5cGUsIEQzRDEx
X1NSVl9ESU1FTlNJT04gdmlld0RpbWVuc2lvbiwgY29uc3QgU2hhZGVyICoqc2hhZGVyT3V0KTsK
LQotICAgIHZvaWQgYWRkU3dpenpsZVNoYWRlclRvTWFwKFN3aXp6bGVTaGFkZXJUeXBlIHN3aXp6
bGVTaGFkZXJUeXBlLCBTaGFkZXJEaW1lbnNpb24gZGltZW5zaW9uLCBJRDNEMTFQaXhlbFNoYWRl
ciAqcHMpOworICAgIGdsOjpFcnJvciBjb3B5RGVwdGhTdGVuY2lsSW1wbChjb25zdCBUZXh0dXJl
SGVscGVyMTEgJnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50IHNvdXJjZVN1YnJlc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6Qm94ICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc291cmNlU2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGV4dHVyZUhlbHBlcjExICZkZXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGVzdFN1YnJlc291
cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZk
ZXN0QXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4
dGVudHMgJmRlc3RTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6UmVjdGFuZ2xlICpzY2lzc29yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIHN0ZW5jaWxPbmx5KTsKKworICAgIGdsOjpFcnJvciBjb3B5QW5kQ29udmVydElt
cGwoY29uc3QgVGV4dHVyZUhlbHBlcjExICZzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlU3VicmVzb3VyY2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZzb3VyY2VBcmVhLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNvdXJjZVNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXh0dXJlSGVscGVyMTEgJmRl
c3RTdGFnaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJv
eCAmZGVzdEFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
RXh0ZW50cyAmZGVzdFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6UmVjdGFuZ2xlICpzY2lzc29yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IHJlYWRPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgd3JpdGVPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgY29weVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc3Jj
UGl4ZWxTdHJpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVz
dFBpeGVsU3RyaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmxpdENvbnZl
cnRGdW5jdGlvbiAqY29udmVydEZ1bmN0aW9uKTsKKworICAgIGdsOjpFcnJvciBjb3B5QW5kQ29u
dmVydChjb25zdCBUZXh0dXJlSGVscGVyMTEgJnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZVN1YnJlc291cmNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc291cmNlU2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVGV4dHVyZUhlbHBlcjExICZkZXN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGVzdFN1YnJlc291cmNlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZkZXN0QXJlYSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJmRlc3RTaXplLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICpzY2lzc29yLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVhZE9mZnNldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IHdyaXRlT2Zmc2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgY29weVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBzcmNQaXhlbFN0cmlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGRlc3RQaXhlbFN0cmlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmxpdENv
bnZlcnRGdW5jdGlvbiAqY29udmVydEZ1bmN0aW9uKTsKKworICAgIHZvaWQgYWRkQmxpdFNoYWRl
clRvTWFwKEJsaXRTaGFkZXJUeXBlIGJsaXRTaGFkZXJUeXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNoYWRlckRpbWVuc2lvbiBkaW1lbnNpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSUQzRDExUGl4ZWxTaGFkZXIgKnBzKTsKKworICAgIGdsOjpFcnJvciBnZXRCbGl0
U2hhZGVyKEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaXNTaWduZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tQcmVt
dWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrVW5t
dWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlckRpbWVuc2lv
biBkaW1lbnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hhZGVyICoq
c2hhZGVyT3V0KTsKKyAgICBnbDo6RXJyb3IgZ2V0U3dpenpsZVNoYWRlcihHTGVudW0gdHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0QxMV9TUlZfRElNRU5TSU9OIHZpZXdE
aW1lbnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hhZGVyICoq
c2hhZGVyT3V0KTsKKworICAgIHZvaWQgYWRkU3dpenpsZVNoYWRlclRvTWFwKFN3aXp6bGVTaGFk
ZXJUeXBlIHN3aXp6bGVTaGFkZXJUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNoYWRlckRpbWVuc2lvbiBkaW1lbnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSUQzRDExUGl4ZWxTaGFkZXIgKnBzKTsKIAogICAgIHZvaWQgY2xlYXJTaGFkZXJNYXAoKTsK
KyAgICB2b2lkIHJlbGVhc2VSZXNvbHZlRGVwdGhTdGVuY2lsUmVzb3VyY2VzKCk7CisgICAgZ2w6
OkVycm9yIGluaXRSZXNvbHZlRGVwdGhTdGVuY2lsKGNvbnN0IGdsOjpFeHRlbnRzICZleHRlbnRz
KTsKIAogICAgIFJlbmRlcmVyMTEgKm1SZW5kZXJlcjsKIApAQCAtMTc3LDggKzI4MCwxNiBAQCBj
bGFzcyBCbGl0MTEgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBkM2QxMTo6TGF6eUJsZW5kU3Rh
dGUgbUFscGhhTWFza0JsZW5kU3RhdGU7CiAKICAgICBJRDNEMTFCdWZmZXIgKm1Td2l6emxlQ0I7
CisKKyAgICBkM2QxMTo6TGF6eVNoYWRlcjxJRDNEMTFWZXJ0ZXhTaGFkZXI+IG1SZXNvbHZlRGVw
dGhTdGVuY2lsVlM7CisgICAgZDNkMTE6OkxhenlTaGFkZXI8SUQzRDExUGl4ZWxTaGFkZXI+IG1S
ZXNvbHZlRGVwdGhQUzsKKyAgICBkM2QxMTo6TGF6eVNoYWRlcjxJRDNEMTFQaXhlbFNoYWRlcj4g
bVJlc29sdmVEZXB0aFN0ZW5jaWxQUzsKKyAgICBkM2QxMTo6TGF6eVNoYWRlcjxJRDNEMTFQaXhl
bFNoYWRlcj4gbVJlc29sdmVTdGVuY2lsUFM7CisgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3
ICptU3RlbmNpbFNSVjsKKyAgICBUZXh0dXJlSGVscGVyMTEgbVJlc29sdmVkRGVwdGhTdGVuY2ls
OworICAgIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKm1SZXNvbHZlZERlcHRoU3RlbmNpbFJUVmll
dzsKIH07CiAKLX0KK30gIC8vIG5hbWVzcGFjZSByeAogCi0jZW5kaWYgICAvLyBMSUJBTkdMRV9S
RU5ERVJFUl9EM0RfRDNEMTFfQkxJVDExX0hfCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVS
X0QzRF9EM0QxMV9CTElUMTFfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQnVmZmVyMTEuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQnVm
ZmVyMTEuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0J1ZmZlcjExLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTEsNiArMTEsNyBAQAogI2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgImNvbW1v
bi9NZW1vcnlCdWZmZXIuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9yZW5kZXJlcl91
dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9JbmRleERhdGFNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1ZlcnRleERhdGFNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlcmVyMTEuaCIKQEAg
LTM5LDMxICs0MCwxMCBAQCBlbnVtIGNsYXNzIENvcHlSZXN1bHQKIAogfSAgLy8gYW5vbnltb3Vz
IG5hbWVzcGFjZQogCi1QYWNrUGl4ZWxzUGFyYW1zOjpQYWNrUGl4ZWxzUGFyYW1zKCkKLSAgICA6
IGZvcm1hdChHTF9OT05FKSwgdHlwZShHTF9OT05FKSwgb3V0cHV0UGl0Y2goMCksIHBhY2tCdWZm
ZXIobnVsbHB0ciksIG9mZnNldCgwKQotewotfQotCi1QYWNrUGl4ZWxzUGFyYW1zOjpQYWNrUGl4
ZWxzUGFyYW1zKGNvbnN0IGdsOjpSZWN0YW5nbGUgJmFyZWFJbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdEluLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHlwZUluLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgb3V0cHV0UGl0Y2hJbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OlBpeGVsUGFja1N0YXRlICZwYWNrSW4sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBvZmZzZXRJbikKLSAgICA6IGFyZWEoYXJl
YUluKSwKLSAgICAgIGZvcm1hdChmb3JtYXRJbiksCi0gICAgICB0eXBlKHR5cGVJbiksCi0gICAg
ICBvdXRwdXRQaXRjaChvdXRwdXRQaXRjaEluKSwKLSAgICAgIHBhY2tCdWZmZXIocGFja0luLnBp
eGVsQnVmZmVyLmdldCgpKSwKLSAgICAgIHBhY2socGFja0luLmFsaWdubWVudCwgcGFja0luLnJl
dmVyc2VSb3dPcmRlciksCi0gICAgICBvZmZzZXQob2Zmc2V0SW4pCi17Ci19Ci0KIG5hbWVzcGFj
ZSBnbF9kM2QxMQogewogCi1EM0QxMV9NQVAgR2V0RDNETWFwVHlwZUZyb21CaXRzKEdMYml0Zmll
bGQgYWNjZXNzKQorRDNEMTFfTUFQIEdldEQzRE1hcFR5cGVGcm9tQml0cyhCdWZmZXJVc2FnZSB1
c2FnZSwgR0xiaXRmaWVsZCBhY2Nlc3MpCiB7CiAgICAgYm9vbCByZWFkQml0ICA9ICgoYWNjZXNz
ICYgR0xfTUFQX1JFQURfQklUKSAhPSAwKTsKICAgICBib29sIHdyaXRlQml0ID0gKChhY2Nlc3Mg
JiBHTF9NQVBfV1JJVEVfQklUKSAhPSAwKTsKQEAgLTc5LDcgKzU5LDggQEAgRDNEMTFfTUFQIEdl
dEQzRE1hcFR5cGVGcm9tQml0cyhHTGJpdGZpZQogICAgIH0KICAgICBlbHNlIGlmICh3cml0ZUJp
dCAmJiAhcmVhZEJpdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBEM0QxMV9NQVBfV1JJVEU7Cisg
ICAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgdW5pZm9ybSBzdG9yYWdlIC0gd2Ugb25seSBhbGxv
dyBmdWxsIGJ1ZmZlciB1cGRhdGVzLgorICAgICAgICByZXR1cm4gdXNhZ2UgPT0gQlVGRkVSX1VT
QUdFX1VOSUZPUk0gPyBEM0QxMV9NQVBfV1JJVEVfRElTQ0FSRCA6IEQzRDExX01BUF9XUklURTsK
ICAgICB9CiAgICAgZWxzZSBpZiAod3JpdGVCaXQgJiYgcmVhZEJpdCkKICAgICB7CkBAIC0xMDgs
NyArODksNyBAQCBjbGFzcyBCdWZmZXIxMTo6QnVmZmVyU3RvcmFnZSA6IGFuZ2xlOjpOCiAgICAg
c2l6ZV90IGdldFNpemUoKSBjb25zdCB7IHJldHVybiBtQnVmZmVyU2l6ZTsgfQogICAgIHZvaWQg
c2V0RGF0YVJldmlzaW9uKERhdGFSZXZpc2lvbiByZXYpIHsgbVJldmlzaW9uID0gcmV2OyB9CiAK
LSAgICB2aXJ0dWFsIGJvb2wgaXNNYXBwYWJsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNNYXBwYWJsZShHTGJpdGZpZWxkIGFjY2VzcykgY29uc3QgPSAwOwogCiAgICAgdmlydHVh
bCBnbDo6RXJyb3JPclJlc3VsdDxDb3B5UmVzdWx0PiBjb3B5RnJvbVN0b3JhZ2UoQnVmZmVyU3Rv
cmFnZSAqc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBzb3VyY2VPZmZzZXQsCkBAIC0xMzgsMTAgKzExOSwxMiBA
QCBjbGFzcyBCdWZmZXIxMTo6QnVmZmVyU3RvcmFnZSA6IGFuZ2xlOjpOCiBjbGFzcyBCdWZmZXIx
MTo6TmF0aXZlU3RvcmFnZSA6IHB1YmxpYyBCdWZmZXIxMTo6QnVmZmVyU3RvcmFnZQogewogICBw
dWJsaWM6Ci0gICAgTmF0aXZlU3RvcmFnZShSZW5kZXJlcjExICpyZW5kZXJlciwgQnVmZmVyVXNh
Z2UgdXNhZ2UsIGNvbnN0IE5vdGlmaWNhdGlvblNldCAqb25TdG9yYWdlQ2hhbmdlZCk7CisgICAg
TmF0aXZlU3RvcmFnZShSZW5kZXJlcjExICpyZW5kZXJlciwKKyAgICAgICAgICAgICAgICAgIEJ1
ZmZlclVzYWdlIHVzYWdlLAorICAgICAgICAgICAgICAgICAgY29uc3QgYW5nbGU6OkJyb2FkY2Fz
dENoYW5uZWwgKm9uU3RvcmFnZUNoYW5nZWQpOwogICAgIH5OYXRpdmVTdG9yYWdlKCkgb3ZlcnJp
ZGU7CiAKLSAgICBib29sIGlzTWFwcGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtVXNh
Z2UgPT0gQlVGRkVSX1VTQUdFX1NUQUdJTkc7IH0KKyAgICBib29sIGlzTWFwcGFibGUoR0xiaXRm
aWVsZCBhY2Nlc3MpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgSUQzRDExQnVmZmVyICpnZXROYXRp
dmVTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gbU5hdGl2ZVN0b3JhZ2U7IH0KICAgICBnbDo6RXJy
b3JPclJlc3VsdDxDb3B5UmVzdWx0PiBjb3B5RnJvbVN0b3JhZ2UoQnVmZmVyU3RvcmFnZSAqc291
cmNlLApAQCAtMTU2LDE0ICsxMzksMTggQEAgY2xhc3MgQnVmZmVyMTE6Ok5hdGl2ZVN0b3JhZ2Ug
OiBwdWJsaWMgQgogICAgICAgICAgICAgICAgICAgdWludDhfdCAqKm1hcFBvaW50ZXJPdXQpIG92
ZXJyaWRlOwogICAgIHZvaWQgdW5tYXAoKSBvdmVycmlkZTsKIAorICAgIGdsOjpFcnJvck9yUmVz
dWx0PElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqPiBnZXRTUlZGb3JGb3JtYXQoRFhHSV9GT1JN
QVQgc3J2Rm9ybWF0KTsKKwogICBwcml2YXRlOgotICAgIHN0YXRpYyB2b2lkIGZpbGxCdWZmZXJE
ZXNjKEQzRDExX0JVRkZFUl9ERVNDICpidWZmZXJEZXNjLAorICAgIHN0YXRpYyB2b2lkIEZpbGxC
dWZmZXJEZXNjKEQzRDExX0JVRkZFUl9ERVNDICpidWZmZXJEZXNjLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJlbmRlcmVyMTEgKnJlbmRlcmVyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEJ1ZmZlclVzYWdlIHVzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBidWZmZXJTaXplKTsKKyAgICB2b2lkIGNsZWFyU1JWcygpOwog
CiAgICAgSUQzRDExQnVmZmVyICptTmF0aXZlU3RvcmFnZTsKLSAgICBjb25zdCBOb3RpZmljYXRp
b25TZXQgKm1PblN0b3JhZ2VDaGFuZ2VkOworICAgIGNvbnN0IGFuZ2xlOjpCcm9hZGNhc3RDaGFu
bmVsICptT25TdG9yYWdlQ2hhbmdlZDsKKyAgICBzdGQ6Om1hcDxEWEdJX0ZPUk1BVCwgSUQzRDEx
U2hhZGVyUmVzb3VyY2VWaWV3ICo+IG1CdWZmZXJSZXNvdXJjZVZpZXdzOwogfTsKIAogLy8gQSBl
bXVsYXRlZCBpbmRleGVkIGJ1ZmZlciBzdG9yYWdlIHJlcHJlc2VudHMgYW4gdW5kZXJseWluZyBE
M0QxMSBidWZmZXIgZm9yIGRhdGEKQEAgLTE3NSw3ICsxNjIsNyBAQCBjbGFzcyBCdWZmZXIxMTo6
RW11bGF0ZWRJbmRleGVkU3RvcmFnZSA6CiAgICAgRW11bGF0ZWRJbmRleGVkU3RvcmFnZShSZW5k
ZXJlcjExICpyZW5kZXJlcik7CiAgICAgfkVtdWxhdGVkSW5kZXhlZFN0b3JhZ2UoKSBvdmVycmlk
ZTsKIAotICAgIGJvb2wgaXNNYXBwYWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KKyAgICBib29sIGlzTWFwcGFibGUoR0xiaXRmaWVsZCBhY2Nlc3MpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIGdsOjpFcnJvck9yUmVzdWx0PElEM0QxMUJ1ZmZlciAq
PiBnZXROYXRpdmVTdG9yYWdlKFNvdXJjZUluZGV4RGF0YSAqaW5kZXhJbmZvLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRyYW5z
bGF0ZWRBdHRyaWJ1dGUgJmF0dHJpYnV0ZSwKQEAgLTIwOCw3ICsxOTUsNyBAQCBjbGFzcyBCdWZm
ZXIxMTo6UGFja1N0b3JhZ2UgOiBwdWJsaWMgQnVmCiAgICAgZXhwbGljaXQgUGFja1N0b3JhZ2Uo
UmVuZGVyZXIxMSAqcmVuZGVyZXIpOwogICAgIH5QYWNrU3RvcmFnZSgpIG92ZXJyaWRlOwogCi0g
ICAgYm9vbCBpc01hcHBhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IGJvb2wgaXNNYXBwYWJsZShHTGJpdGZpZWxkIGFjY2VzcykgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIGdsOjpFcnJvck9yUmVzdWx0PENvcHlSZXN1bHQ+IGNvcHlGcm9tU3Rv
cmFnZShCdWZmZXJTdG9yYWdlICpzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzb3VyY2VPZmZzZXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLApAQCAtMjQz
LDcgKzIzMCw3IEBAIGNsYXNzIEJ1ZmZlcjExOjpTeXN0ZW1NZW1vcnlTdG9yYWdlIDogcHUKICAg
ICBleHBsaWNpdCBTeXN0ZW1NZW1vcnlTdG9yYWdlKFJlbmRlcmVyMTEgKnJlbmRlcmVyKTsKICAg
ICB+U3lzdGVtTWVtb3J5U3RvcmFnZSgpIG92ZXJyaWRlIHt9CiAKLSAgICBib29sIGlzTWFwcGFi
bGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc01hcHBhYmxl
KEdMYml0ZmllbGQgYWNjZXNzKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAg
Z2w6OkVycm9yT3JSZXN1bHQ8Q29weVJlc3VsdD4gY29weUZyb21TdG9yYWdlKEJ1ZmZlclN0b3Jh
Z2UgKnNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IHNvdXJjZU9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCkBAIC0yNjcsMTAgKzI1NCwxMSBAQCBC
dWZmZXIxMTo6QnVmZmVyMTEoUmVuZGVyZXIxMSAqcmVuZGVyZXIpCiAgICAgICBtUmVuZGVyZXIo
cmVuZGVyZXIpLAogICAgICAgbVNpemUoMCksCiAgICAgICBtTWFwcGVkU3RvcmFnZShudWxscHRy
KSwKLSAgICAgIG1CdWZmZXJTdG9yYWdlcyhCVUZGRVJfVVNBR0VfQ09VTlQsIG51bGxwdHIpLAor
ICAgICAgbUJ1ZmZlclN0b3JhZ2VzKHt9KSwKKyAgICAgIG1EZWFsbG9jVGhyZXNob2xkcyh7fSks
CisgICAgICBtSWRsZW5lc3Moe30pLAogICAgICAgbUNvbnN0YW50QnVmZmVyU3RvcmFnZUFkZGl0
aW9uYWxTaXplKDApLAotICAgICAgbU1heENvbnN0YW50QnVmZmVyTHJ1Q291bnQoMCksCi0gICAg
ICBtUmVhZFVzYWdlQ291bnQoMCkKKyAgICAgIG1NYXhDb25zdGFudEJ1ZmZlckxydUNvdW50KDAp
CiB7CiB9CiAKQEAgLTI4OSwxMCArMjc3LDEwIEBAIEJ1ZmZlcjExOjp+QnVmZmVyMTEoKQogICAg
IG1SZW5kZXJlci0+b25CdWZmZXJEZWxldGUodGhpcyk7CiB9CiAKLWdsOjpFcnJvciBCdWZmZXIx
MTo6c2V0RGF0YShjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgR0xlbnVtIHVzYWdlKQor
Z2w6OkVycm9yIEJ1ZmZlcjExOjpzZXREYXRhKEdMZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQgKmRh
dGEsIHNpemVfdCBzaXplLCBHTGVudW0gdXNhZ2UpCiB7CiAgICAgdXBkYXRlRDNEQnVmZmVyVXNh
Z2UodXNhZ2UpOwotICAgIEFOR0xFX1RSWShzZXRTdWJEYXRhKGRhdGEsIHNpemUsIDApKTsKKyAg
ICBBTkdMRV9UUlkoc2V0U3ViRGF0YSh0YXJnZXQsIGRhdGEsIHNpemUsIDApKTsKICAgICByZXR1
cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIApAQCAtMzAxLDggKzI4OSw2IEBAIGdsOjpFcnJvciBCdWZm
ZXIxMTo6Z2V0RGF0YShjb25zdCB1aW50OF8KICAgICBTeXN0ZW1NZW1vcnlTdG9yYWdlICpzeXN0
ZW1NZW1vcnlTdG9yYWdlID0gbnVsbHB0cjsKICAgICBBTkdMRV9UUllfUkVTVUxUKGdldFN5c3Rl
bU1lbW9yeVN0b3JhZ2UoKSwgc3lzdGVtTWVtb3J5U3RvcmFnZSk7CiAKLSAgICBtUmVhZFVzYWdl
Q291bnQgPSAwOwotCiAgICAgQVNTRVJUKHN5c3RlbU1lbW9yeVN0b3JhZ2UtPmdldFNpemUoKSA+
PSBtU2l6ZSk7CiAKICAgICAqb3V0RGF0YSA9IHN5c3RlbU1lbW9yeVN0b3JhZ2UtPmdldFN5c3Rl
bUNvcHkoKS0+ZGF0YSgpOwpAQCAtMzE2LDE2ICszMDIsMjAgQEAgZ2w6OkVycm9yT3JSZXN1bHQ8
QnVmZmVyMTE6OlN5c3RlbU1lbW9yeQogICAgIHJldHVybiBHZXRBczxTeXN0ZW1NZW1vcnlTdG9y
YWdlPihzdG9yYWdlKTsKIH0KIAotZ2w6OkVycm9yIEJ1ZmZlcjExOjpzZXRTdWJEYXRhKGNvbnN0
IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCBzaXplX3Qgb2Zmc2V0KQorZ2w6OkVycm9yIEJ1ZmZl
cjExOjpzZXRTdWJEYXRhKEdMZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBz
aXplLCBzaXplX3Qgb2Zmc2V0KQogewogICAgIHNpemVfdCByZXF1aXJlZFNpemUgPSBzaXplICsg
b2Zmc2V0OwogCiAgICAgaWYgKGRhdGEgJiYgc2l6ZSA+IDApCiAgICAgewogICAgICAgICAvLyBV
c2Ugc3lzdGVtIG1lbW9yeSBzdG9yYWdlIGZvciBkeW5hbWljIGJ1ZmZlcnMuCi0KKyAgICAgICAg
Ly8gVHJ5IHVzaW5nIGEgY29uc3RhbnQgc3RvcmFnZSBmb3IgY29uc3RhbnQgYnVmZmVycwogICAg
ICAgICBCdWZmZXJTdG9yYWdlICp3cml0ZUJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgICAgIGlmIChz
dXBwb3J0c0RpcmVjdEJpbmRpbmcoKSkKKyAgICAgICAgaWYgKHRhcmdldCA9PSBHTF9VTklGT1JN
X0JVRkZFUiAmJiBvZmZzZXQgPT0gMCAmJiBzaXplID49IG1TaXplKQorICAgICAgICB7CisgICAg
ICAgICAgICBBTkdMRV9UUllfUkVTVUxUKGdldEJ1ZmZlclN0b3JhZ2UoQlVGRkVSX1VTQUdFX1VO
SUZPUk0pLCB3cml0ZUJ1ZmZlcik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoc3VwcG9y
dHNEaXJlY3RCaW5kaW5nKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFOR0xFX1RSWV9SRVNV
TFQoZ2V0U3RhZ2luZ1N0b3JhZ2UoKSwgd3JpdGVCdWZmZXIpOwogICAgICAgICB9CkBAIC0zODAs
MTEgKzM3MCwxMiBAQCBnbDo6RXJyb3IgQnVmZmVyMTE6OmNvcHlTdWJEYXRhKEJ1ZmZlckltCiAK
ICAgICAvLyBJZiBjb3B5aW5nIHRvL2Zyb20gYSBwaXhlbCBwYWNrIGJ1ZmZlciwgd2UgbXVzdCBo
YXZlIGEgc3RhZ2luZyBvcgogICAgIC8vIHBhY2sgYnVmZmVyIHBhcnRuZXIsIGJlY2F1c2Ugb3Ro
ZXIgbmF0aXZlIGJ1ZmZlcnMgY2FuJ3QgYmUgbWFwcGVkCi0gICAgaWYgKGNvcHlEZXN0LT5nZXRV
c2FnZSgpID09IEJVRkZFUl9VU0FHRV9QSVhFTF9QQUNLICYmICFjb3B5U291cmNlLT5pc01hcHBh
YmxlKCkpCisgICAgaWYgKGNvcHlEZXN0LT5nZXRVc2FnZSgpID09IEJVRkZFUl9VU0FHRV9QSVhF
TF9QQUNLICYmICFjb3B5U291cmNlLT5pc01hcHBhYmxlKEdMX01BUF9SRUFEX0JJVCkpCiAgICAg
ewogICAgICAgICBBTkdMRV9UUllfUkVTVUxUKHNvdXJjZUJ1ZmZlci0+Z2V0U3RhZ2luZ1N0b3Jh
Z2UoKSwgY29weVNvdXJjZSk7CiAgICAgfQotICAgIGVsc2UgaWYgKGNvcHlTb3VyY2UtPmdldFVz
YWdlKCkgPT0gQlVGRkVSX1VTQUdFX1BJWEVMX1BBQ0sgJiYgIWNvcHlEZXN0LT5pc01hcHBhYmxl
KCkpCisgICAgZWxzZSBpZiAoY29weVNvdXJjZS0+Z2V0VXNhZ2UoKSA9PSBCVUZGRVJfVVNBR0Vf
UElYRUxfUEFDSyAmJgorICAgICAgICAgICAgICFjb3B5RGVzdC0+aXNNYXBwYWJsZShHTF9NQVBf
V1JJVEVfQklUKSkKICAgICB7CiAgICAgICAgIEFOR0xFX1RSWV9SRVNVTFQoZ2V0U3RhZ2luZ1N0
b3JhZ2UoKSwgY29weURlc3QpOwogICAgIH0KQEAgLTQ5MSwzMSArNDgyLDY1IEBAIGdsOjpFcnJv
ciBCdWZmZXIxMTo6bWFya1RyYW5zZm9ybUZlZWRiYWMKICAgICByZXR1cm4gZ2w6Ok5vRXJyb3Io
KTsKIH0KIAotZ2w6OkVycm9yIEJ1ZmZlcjExOjptYXJrQnVmZmVyVXNhZ2UoKQordm9pZCBCdWZm
ZXIxMTo6dXBkYXRlRGVhbGxvY1RocmVzaG9sZChCdWZmZXJVc2FnZSB1c2FnZSkKIHsKLSAgICBt
UmVhZFVzYWdlQ291bnQrKzsKKyAgICAvLyBUaGUgZm9sbG93aW5nIHN0cmF0ZWd5IHdhcyB0dW5l
ZCBvbiB0aGUgT29ydCBvbmxpbmUgYmVuY2htYXJrIChodHRwOi8vb29ydG9ubGluZS5nbC8pCisg
ICAgLy8gYXMgd2VsbCBhcyBhIGN1c3RvbSBtaWNyb2JlbmNobWFyayAoSW5kZXhDb252ZXJzaW9u
UGVyZlRlc3QuUnVuL2luZGV4X3JhbmdlX2QzZDExKQorCisgICAgLy8gRmlyc3QgcmVhZGJhY2s6
IDggdW5tb2RpZmllZCB1c2VzIGJlZm9yZSB3ZSBmcmVlIGJ1ZmZlciBtZW1vcnkuCisgICAgLy8g
QWZ0ZXIgdGhhdCwgZG91YmxlIHRoZSB0aHJlc2hvbGQgZWFjaCB0aW1lIHVudGlsIHdlIHJlYWNo
IHRoZSBtYXguCisgICAgaWYgKG1EZWFsbG9jVGhyZXNob2xkc1t1c2FnZV0gPT0gMCkKKyAgICB7
CisgICAgICAgIG1EZWFsbG9jVGhyZXNob2xkc1t1c2FnZV0gPSA4OworICAgIH0KKyAgICBlbHNl
IGlmIChtRGVhbGxvY1RocmVzaG9sZHNbdXNhZ2VdIDwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZCBpbnQ+OjptYXgoKSAvIDJ1KQorICAgIHsKKyAgICAgICAgbURlYWxsb2NUaHJlc2hvbGRz
W3VzYWdlXSAqPSAydTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbURlYWxsb2NU
aHJlc2hvbGRzW3VzYWdlXSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pjo6bWF4
KCk7CisgICAgfQorfQogCi0gICAgLy8gRnJlZSB0aGUgc3lzdGVtIG1lbW9yeSBzdG9yYWdlIGlm
IHdlIGRlY2lkZSBpdCBpc24ndCBiZWluZyB1c2VkIHZlcnkgb2Z0ZW4uCi0gICAgY29uc3QgdW5z
aWduZWQgaW50IHVzYWdlTGltaXQgPSA1OworLy8gRnJlZSB0aGUgc3RvcmFnZSBpZiB3ZSBkZWNp
ZGUgaXQgaXNuJ3QgYmVpbmcgdXNlZCB2ZXJ5IG9mdGVuLgorZ2w6OkVycm9yIEJ1ZmZlcjExOjpj
aGVja0ZvckRlYWxsb2NhdGlvbihCdWZmZXJVc2FnZSB1c2FnZSkKK3sKKyAgICBtSWRsZW5lc3Nb
dXNhZ2VdKys7CiAKLSAgICBCdWZmZXJTdG9yYWdlIComc3lzTWVtVXNhZ2UgPSBtQnVmZmVyU3Rv
cmFnZXNbQlVGRkVSX1VTQUdFX1NZU1RFTV9NRU1PUlldOwotICAgIGlmIChtUmVhZFVzYWdlQ291
bnQgPiB1c2FnZUxpbWl0ICYmIHN5c01lbVVzYWdlICE9IG51bGxwdHIpCisgICAgQnVmZmVyU3Rv
cmFnZSAqJnN0b3JhZ2UgPSBtQnVmZmVyU3RvcmFnZXNbdXNhZ2VdOworICAgIGlmIChzdG9yYWdl
ICE9IG51bGxwdHIgJiYgbUlkbGVuZXNzW3VzYWdlXSA+IG1EZWFsbG9jVGhyZXNob2xkc1t1c2Fn
ZV0pCiAgICAgewogICAgICAgICBCdWZmZXJTdG9yYWdlICpsYXRlc3RTdG9yYWdlID0gbnVsbHB0
cjsKICAgICAgICAgQU5HTEVfVFJZX1JFU1VMVChnZXRMYXRlc3RCdWZmZXJTdG9yYWdlKCksIGxh
dGVzdFN0b3JhZ2UpOwotICAgICAgICBpZiAobGF0ZXN0U3RvcmFnZSAhPSBzeXNNZW1Vc2FnZSkK
KyAgICAgICAgaWYgKGxhdGVzdFN0b3JhZ2UgIT0gc3RvcmFnZSkKICAgICAgICAgewotICAgICAg
ICAgICAgU2FmZURlbGV0ZShzeXNNZW1Vc2FnZSk7CisgICAgICAgICAgICBTYWZlRGVsZXRlKHN0
b3JhZ2UpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9
CiAKLWdsOjpFcnJvck9yUmVzdWx0PElEM0QxMUJ1ZmZlciAqPiBCdWZmZXIxMTo6Z2V0QnVmZmVy
KEJ1ZmZlclVzYWdlIHVzYWdlKQorZ2w6OkVycm9yIEJ1ZmZlcjExOjptYXJrQnVmZmVyVXNhZ2Uo
QnVmZmVyVXNhZ2UgdXNhZ2UpCiB7Ci0gICAgQU5HTEVfVFJZKG1hcmtCdWZmZXJVc2FnZSgpKTsK
KyAgICBtSWRsZW5lc3NbdXNhZ2VdID0gMDsKKworICAgIGlmICh1c2FnZSAhPSBCVUZGRVJfVVNB
R0VfU1lTVEVNX01FTU9SWSkKKyAgICB7CisgICAgICAgIEFOR0xFX1RSWShjaGVja0ZvckRlYWxs
b2NhdGlvbihCVUZGRVJfVVNBR0VfU1lTVEVNX01FTU9SWSkpOworICAgIH0KKworICAgIGlmICh1
c2FnZSAhPSBCVUZGRVJfVVNBR0VfU1RBR0lORykKKyAgICB7CisgICAgICAgIEFOR0xFX1RSWShj
aGVja0ZvckRlYWxsb2NhdGlvbihCVUZGRVJfVVNBR0VfU1RBR0lORykpOworICAgIH0KIAorICAg
IHJldHVybiBnbDo6Tm9FcnJvcigpOworfQorCitnbDo6RXJyb3JPclJlc3VsdDxJRDNEMTFCdWZm
ZXIgKj4gQnVmZmVyMTE6OmdldEJ1ZmZlcihCdWZmZXJVc2FnZSB1c2FnZSkKK3sKICAgICBCdWZm
ZXJTdG9yYWdlICpzdG9yYWdlID0gbnVsbHB0cjsKICAgICBBTkdMRV9UUllfUkVTVUxUKGdldEJ1
ZmZlclN0b3JhZ2UodXNhZ2UpLCBzdG9yYWdlKTsKICAgICByZXR1cm4gR2V0QXM8TmF0aXZlU3Rv
cmFnZT4oc3RvcmFnZSktPmdldE5hdGl2ZVN0b3JhZ2UoKTsKQEAgLTUyOCw4ICs1NTMsNiBAQCBn
bDo6RXJyb3JPclJlc3VsdDxJRDNEMTFCdWZmZXIgKj4gQnVmZmVyCiB7CiAgICAgQVNTRVJUKGlu
ZGV4SW5mbyk7CiAKLSAgICBBTkdMRV9UUlkobWFya0J1ZmZlclVzYWdlKCkpOwotCiAgICAgQnVm
ZmVyU3RvcmFnZSAqdW50eXBlZFN0b3JhZ2UgPSBudWxscHRyOwogICAgIEFOR0xFX1RSWV9SRVNV
TFQoZ2V0QnVmZmVyU3RvcmFnZShCVUZGRVJfVVNBR0VfRU1VTEFURURfSU5ERVhFRF9WRVJURVgp
LCB1bnR5cGVkU3RvcmFnZSk7CiAKQEAgLTU0NCwxMSArNTY3LDkgQEAgZ2w6OkVycm9yT3JSZXN1
bHQ8SUQzRDExQnVmZmVyICo+IEJ1ZmZlcgogCiBnbDo6RXJyb3JPclJlc3VsdDxJRDNEMTFCdWZm
ZXIgKj4gQnVmZmVyMTE6OmdldENvbnN0YW50QnVmZmVyUmFuZ2UoR0xpbnRwdHIgb2Zmc2V0LCBH
THNpemVpcHRyIHNpemUpCiB7Ci0gICAgQU5HTEVfVFJZKG1hcmtCdWZmZXJVc2FnZSgpKTsKLQog
ICAgIEJ1ZmZlclN0b3JhZ2UgKmJ1ZmZlclN0b3JhZ2UgPSBudWxscHRyOwogCi0gICAgaWYgKG9m
ZnNldCA9PSAwKQorICAgIGlmIChvZmZzZXQgPT0gMCB8fCBtUmVuZGVyZXItPmdldFJlbmRlcmVy
MTFEZXZpY2VDYXBzKCkuc3VwcG9ydHNDb25zdGFudEJ1ZmZlck9mZnNldHMpCiAgICAgewogICAg
ICAgICBBTkdMRV9UUllfUkVTVUxUKGdldEJ1ZmZlclN0b3JhZ2UoQlVGRkVSX1VTQUdFX1VOSUZP
Uk0pLCBidWZmZXJTdG9yYWdlKTsKICAgICB9CkBAIC01NjQsNDIgKzU4NSw4IEBAIGdsOjpFcnJv
ck9yUmVzdWx0PElEM0QxMVNoYWRlclJlc291cmNlVmkKIHsKICAgICBCdWZmZXJTdG9yYWdlICpz
dG9yYWdlID0gbnVsbHB0cjsKICAgICBBTkdMRV9UUllfUkVTVUxUKGdldEJ1ZmZlclN0b3JhZ2Uo
QlVGRkVSX1VTQUdFX1BJWEVMX1VOUEFDSyksIHN0b3JhZ2UpOwotICAgIElEM0QxMUJ1ZmZlciAq
YnVmZmVyID0gR2V0QXM8TmF0aXZlU3RvcmFnZT4oc3RvcmFnZSktPmdldE5hdGl2ZVN0b3JhZ2Uo
KTsKLQotICAgIGF1dG8gYnVmZmVyU1JWSXQgPSBtQnVmZmVyUmVzb3VyY2VWaWV3cy5maW5kKHNy
dkZvcm1hdCk7Ci0KLSAgICBpZiAoYnVmZmVyU1JWSXQgIT0gbUJ1ZmZlclJlc291cmNlVmlld3Mu
ZW5kKCkpCi0gICAgewotICAgICAgICBpZiAoYnVmZmVyU1JWSXQtPnNlY29uZC5maXJzdCA9PSBi
dWZmZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBidWZmZXJTUlZJdC0+c2Vjb25k
LnNlY29uZDsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAg
IC8vIFRoZSB1bmRlcmx5aW5nIGJ1ZmZlciBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgU1JWIHdhcyBj
cmVhdGVkOiByZWNyZWF0ZSB0aGUgU1JWLgotICAgICAgICAgICAgU2FmZVJlbGVhc2UoYnVmZmVy
U1JWSXQtPnNlY29uZC5zZWNvbmQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgSUQzRDExRGV2
aWNlICpkZXZpY2UgICAgICAgICAgICAgICAgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwotICAg
IElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqYnVmZmVyU1JWID0gbnVsbHB0cjsKLQotICAgIGNv
bnN0IGQzZDExOjpEWEdJRm9ybWF0U2l6ZSAmZHhnaUZvcm1hdEluZm8gPSBkM2QxMTo6R2V0RFhH
SUZvcm1hdFNpemVJbmZvKHNydkZvcm1hdCk7Ci0KLSAgICBEM0QxMV9TSEFERVJfUkVTT1VSQ0Vf
VklFV19ERVNDIGJ1ZmZlclNSVkRlc2M7Ci0gICAgYnVmZmVyU1JWRGVzYy5CdWZmZXIuRWxlbWVu
dE9mZnNldCA9IDA7Ci0gICAgYnVmZmVyU1JWRGVzYy5CdWZmZXIuRWxlbWVudFdpZHRoID0KLSAg
ICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihtU2l6ZSkgLyBkeGdpRm9ybWF0SW5mby5w
aXhlbEJ5dGVzOwotICAgIGJ1ZmZlclNSVkRlc2MuVmlld0RpbWVuc2lvbiAgICAgICAgPSBEM0Qx
MV9TUlZfRElNRU5TSU9OX0JVRkZFUjsKLSAgICBidWZmZXJTUlZEZXNjLkZvcm1hdCAgICAgICAg
ICAgICAgID0gc3J2Rm9ybWF0OwotCi0gICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0
ZVNoYWRlclJlc291cmNlVmlldyhidWZmZXIsICZidWZmZXJTUlZEZXNjLCAmYnVmZmVyU1JWKTsK
LSAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKHJlc3VsdCk7Ci0gICAgQVNTRVJUKFNVQ0NF
RURFRChyZXN1bHQpKTsKLQotICAgIG1CdWZmZXJSZXNvdXJjZVZpZXdzW3NydkZvcm1hdF0gPSBC
dWZmZXJTUlZQYWlyKGJ1ZmZlciwgYnVmZmVyU1JWKTsKLQotICAgIHJldHVybiBidWZmZXJTUlY7
CisgICAgTmF0aXZlU3RvcmFnZSAqbmF0aXZlU3RvcmFnZSA9IEdldEFzPE5hdGl2ZVN0b3JhZ2U+
KHN0b3JhZ2UpOworICAgIHJldHVybiBuYXRpdmVTdG9yYWdlLT5nZXRTUlZGb3JGb3JtYXQoc3J2
Rm9ybWF0KTsKIH0KIAogZ2w6OkVycm9yIEJ1ZmZlcjExOjpwYWNrUGl4ZWxzKGNvbnN0IGdsOjpG
cmFtZWJ1ZmZlckF0dGFjaG1lbnQgJnJlYWRBdHRhY2htZW50LApAQCAtNjQ4LDEyICs2MzUsMTQg
QEAgZ2w6OkVycm9yT3JSZXN1bHQ8QnVmZmVyMTE6OkJ1ZmZlclN0b3JhZwogICAgIH0KIAogICAg
IEFOR0xFX1RSWSh1cGRhdGVCdWZmZXJTdG9yYWdlKG5ld1N0b3JhZ2UsIDAsIG1TaXplKSk7Cisg
ICAgQU5HTEVfVFJZKG1hcmtCdWZmZXJVc2FnZSh1c2FnZSkpOwogCiAgICAgcmV0dXJuIG5ld1N0
b3JhZ2U7CiB9CiAKLUJ1ZmZlcjExOjpCdWZmZXJTdG9yYWdlICpCdWZmZXIxMTo6YWxsb2NhdGVT
dG9yYWdlKEJ1ZmZlclVzYWdlIHVzYWdlKSBjb25zdAorQnVmZmVyMTE6OkJ1ZmZlclN0b3JhZ2Ug
KkJ1ZmZlcjExOjphbGxvY2F0ZVN0b3JhZ2UoQnVmZmVyVXNhZ2UgdXNhZ2UpCiB7CisgICAgdXBk
YXRlRGVhbGxvY1RocmVzaG9sZCh1c2FnZSk7CiAgICAgc3dpdGNoICh1c2FnZSkKICAgICB7CiAg
ICAgICAgIGNhc2UgQlVGRkVSX1VTQUdFX1BJWEVMX1BBQ0s6CkBAIC02NjMsNyArNjUyLDcgQEAg
QnVmZmVyMTE6OkJ1ZmZlclN0b3JhZ2UgKkJ1ZmZlcjExOjphbGxvYwogICAgICAgICBjYXNlIEJV
RkZFUl9VU0FHRV9FTVVMQVRFRF9JTkRFWEVEX1ZFUlRFWDoKICAgICAgICAgICAgIHJldHVybiBu
ZXcgRW11bGF0ZWRJbmRleGVkU3RvcmFnZShtUmVuZGVyZXIpOwogICAgICAgICBjYXNlIEJVRkZF
Ul9VU0FHRV9WRVJURVhfT1JfVFJBTlNGT1JNX0ZFRURCQUNLOgotICAgICAgICAgICAgcmV0dXJu
IG5ldyBOYXRpdmVTdG9yYWdlKG1SZW5kZXJlciwgdXNhZ2UsICZtRGlyZWN0QnVmZmVyRGlydHlD
YWxsYmFja3MpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVTdG9yYWdlKG1SZW5kZXJl
ciwgdXNhZ2UsICZtRGlyZWN0QnJvYWRjYXN0Q2hhbm5lbCk7CiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZVN0b3JhZ2UobVJlbmRlcmVyLCB1c2FnZSwgbnVs
bHB0cik7CiAgICAgfQpAQCAtNzI0LDYgKzcxMyw3IEBAIGdsOjpFcnJvck9yUmVzdWx0PEJ1ZmZl
cjExOjpCdWZmZXJTdG9yYWcKICAgICB9CiAKICAgICBBTkdMRV9UUlkodXBkYXRlQnVmZmVyU3Rv
cmFnZShuZXdTdG9yYWdlLCBvZmZzZXQsIHNpemUpKTsKKyAgICBBTkdMRV9UUlkobWFya0J1ZmZl
clVzYWdlKEJVRkZFUl9VU0FHRV9VTklGT1JNKSk7CiAgICAgcmV0dXJuIG5ld1N0b3JhZ2U7CiB9
CiAKQEAgLTc0MSw3ICs3MzEsNyBAQCBnbDo6RXJyb3IgQnVmZmVyMTE6OnVwZGF0ZUJ1ZmZlclN0
b3JhZ2UoCiAgICAgICAgIC8vIGRhdGEgZGlyZWN0bHkuIElmIHdlJ3JlIGFscmVhZHkgdXNpbmcg
YSBzdGFnaW5nIGJ1ZmZlciB3ZSdyZSBmaW5lLgogICAgICAgICBpZiAobGF0ZXN0QnVmZmVyLT5n
ZXRVc2FnZSgpICE9IEJVRkZFUl9VU0FHRV9TVEFHSU5HICYmCiAgICAgICAgICAgICBzdG9yYWdl
LT5nZXRVc2FnZSgpICE9IEJVRkZFUl9VU0FHRV9TVEFHSU5HICYmCi0gICAgICAgICAgICAoIWxh
dGVzdEJ1ZmZlci0+aXNNYXBwYWJsZSgpIHx8ICFzdG9yYWdlLT5pc01hcHBhYmxlKCkpKQorICAg
ICAgICAgICAgKCFsYXRlc3RCdWZmZXItPmlzTWFwcGFibGUoR0xfTUFQX1JFQURfQklUKSB8fCAh
c3RvcmFnZS0+aXNNYXBwYWJsZShHTF9NQVBfV1JJVEVfQklUKSkpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIE5hdGl2ZVN0b3JhZ2UgKnN0YWdpbmdCdWZmZXIgPSBudWxscHRyOwogICAgICAgICAg
ICAgQU5HTEVfVFJZX1JFU1VMVChnZXRTdGFnaW5nU3RvcmFnZSgpLCBzdGFnaW5nQnVmZmVyKTsK
QEAgLTgxOSw3ICs4MDksNyBAQCB2b2lkIEJ1ZmZlcjExOjppbml0aWFsaXplU3RhdGljRGF0YSgp
CiAgICAgQnVmZmVyRDNEOjppbml0aWFsaXplU3RhdGljRGF0YSgpOwogCiAgICAgLy8gTm90aWZ5
IHdoZW4gc3RhdGljIGRhdGEgY2hhbmdlcy4KLSAgICBtU3RhdGljQnVmZmVyRGlydHlDYWxsYmFj
a3Muc2lnbmFsKCk7CisgICAgbVN0YXRpY0Jyb2FkY2FzdENoYW5uZWwuc2lnbmFsKCk7CiB9CiAK
IHZvaWQgQnVmZmVyMTE6OmludmFsaWRhdGVTdGF0aWNEYXRhKCkKQEAgLTgyNywyOCArODE3LDIw
IEBAIHZvaWQgQnVmZmVyMTE6OmludmFsaWRhdGVTdGF0aWNEYXRhKCkKICAgICBCdWZmZXJEM0Q6
OmludmFsaWRhdGVTdGF0aWNEYXRhKCk7CiAKICAgICAvLyBOb3RpZnkgd2hlbiBzdGF0aWMgZGF0
YSBjaGFuZ2VzLgotICAgIG1TdGF0aWNCdWZmZXJEaXJ0eUNhbGxiYWNrcy5zaWduYWwoKTsKKyAg
ICBtU3RhdGljQnJvYWRjYXN0Q2hhbm5lbC5zaWduYWwoKTsKIH0KIAotdm9pZCBCdWZmZXIxMTo6
YWRkU3RhdGljQnVmZmVyRGlydHlDYWxsYmFjayhjb25zdCBOb3RpZmljYXRpb25DYWxsYmFjayAq
Y2FsbGJhY2spCithbmdsZTo6QnJvYWRjYXN0Q2hhbm5lbCAqQnVmZmVyMTE6OmdldFN0YXRpY0Jy
b2FkY2FzdENoYW5uZWwoKQogewotICAgIG1TdGF0aWNCdWZmZXJEaXJ0eUNhbGxiYWNrcy5hZGQo
Y2FsbGJhY2spOworICAgIHJldHVybiAmbVN0YXRpY0Jyb2FkY2FzdENoYW5uZWw7CiB9CiAKLXZv
aWQgQnVmZmVyMTE6OnJlbW92ZVN0YXRpY0J1ZmZlckRpcnR5Q2FsbGJhY2soY29uc3QgTm90aWZp
Y2F0aW9uQ2FsbGJhY2sgKmNhbGxiYWNrKQorYW5nbGU6OkJyb2FkY2FzdENoYW5uZWwgKkJ1ZmZl
cjExOjpnZXREaXJlY3RCcm9hZGNhc3RDaGFubmVsKCkKIHsKLSAgICBtU3RhdGljQnVmZmVyRGly
dHlDYWxsYmFja3MucmVtb3ZlKGNhbGxiYWNrKTsKKyAgICByZXR1cm4gJm1EaXJlY3RCcm9hZGNh
c3RDaGFubmVsOwogfQogCi12b2lkIEJ1ZmZlcjExOjphZGREaXJlY3RCdWZmZXJEaXJ0eUNhbGxi
YWNrKGNvbnN0IE5vdGlmaWNhdGlvbkNhbGxiYWNrICpjYWxsYmFjaykKLXsKLSAgICBtRGlyZWN0
QnVmZmVyRGlydHlDYWxsYmFja3MuYWRkKGNhbGxiYWNrKTsKLX0KLQotdm9pZCBCdWZmZXIxMTo6
cmVtb3ZlRGlyZWN0QnVmZmVyRGlydHlDYWxsYmFjayhjb25zdCBOb3RpZmljYXRpb25DYWxsYmFj
ayAqY2FsbGJhY2spCi17Ci0gICAgbURpcmVjdEJ1ZmZlckRpcnR5Q2FsbGJhY2tzLnJlbW92ZShj
YWxsYmFjayk7Ci19CisvLyBCdWZmZXIxMTo6QnVmZmVyU3RvcmFnZSBpbXBsZW1lbnRhdGlvbgog
CiBCdWZmZXIxMTo6QnVmZmVyU3RvcmFnZTo6QnVmZmVyU3RvcmFnZShSZW5kZXJlcjExICpyZW5k
ZXJlciwgQnVmZmVyVXNhZ2UgdXNhZ2UpCiAgICAgOiBtUmVuZGVyZXIocmVuZGVyZXIpLCBtUmV2
aXNpb24oMCksIG1Vc2FnZSh1c2FnZSksIG1CdWZmZXJTaXplKDApCkBAIC04NTcsNyArODM5LDcg
QEAgQnVmZmVyMTE6OkJ1ZmZlclN0b3JhZ2U6OkJ1ZmZlclN0b3JhZ2UoUgogCiBnbDo6RXJyb3Ig
QnVmZmVyMTE6OkJ1ZmZlclN0b3JhZ2U6OnNldERhdGEoY29uc3QgdWludDhfdCAqZGF0YSwgc2l6
ZV90IG9mZnNldCwgc2l6ZV90IHNpemUpCiB7Ci0gICAgQVNTRVJUKGlzTWFwcGFibGUoKSk7Cisg
ICAgQVNTRVJUKGlzTWFwcGFibGUoR0xfTUFQX1dSSVRFX0JJVCkpOwogCiAgICAgdWludDhfdCAq
d3JpdGVQb2ludGVyID0gbnVsbHB0cjsKICAgICBBTkdMRV9UUlkobWFwKG9mZnNldCwgc2l6ZSwg
R0xfTUFQX1dSSVRFX0JJVCwgJndyaXRlUG9pbnRlcikpOwpAQCAtODY5LDkgKzg1MSwxMSBAQCBn
bDo6RXJyb3IgQnVmZmVyMTE6OkJ1ZmZlclN0b3JhZ2U6OnNldERhCiAgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CiB9CiAKKy8vIEJ1ZmZlcjExOjpOYXRpdmVTdG9yYWdlIGltcGxlbWVudGF0aW9u
CisKIEJ1ZmZlcjExOjpOYXRpdmVTdG9yYWdlOjpOYXRpdmVTdG9yYWdlKFJlbmRlcmVyMTEgKnJl
bmRlcmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyVXNh
Z2UgdXNhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBO
b3RpZmljYXRpb25TZXQgKm9uU3RvcmFnZUNoYW5nZWQpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBhbmdsZTo6QnJvYWRjYXN0Q2hhbm5lbCAqb25TdG9yYWdl
Q2hhbmdlZCkKICAgICA6IEJ1ZmZlclN0b3JhZ2UocmVuZGVyZXIsIHVzYWdlKSwgbU5hdGl2ZVN0
b3JhZ2UobnVsbHB0ciksIG1PblN0b3JhZ2VDaGFuZ2VkKG9uU3RvcmFnZUNoYW5nZWQpCiB7CiB9
CkBAIC04NzksNiArODYzLDE4IEBAIEJ1ZmZlcjExOjpOYXRpdmVTdG9yYWdlOjpOYXRpdmVTdG9y
YWdlKFIKIEJ1ZmZlcjExOjpOYXRpdmVTdG9yYWdlOjp+TmF0aXZlU3RvcmFnZSgpCiB7CiAgICAg
U2FmZVJlbGVhc2UobU5hdGl2ZVN0b3JhZ2UpOworICAgIGNsZWFyU1JWcygpOworfQorCitib29s
IEJ1ZmZlcjExOjpOYXRpdmVTdG9yYWdlOjppc01hcHBhYmxlKEdMYml0ZmllbGQgYWNjZXNzKSBj
b25zdAoreworICAgIGlmICgoYWNjZXNzICYgR0xfTUFQX1JFQURfQklUKSAhPSAwKQorICAgIHsK
KyAgICAgICAgLy8gUmVhZCBpcyBtb3JlIGV4Y2x1c2l2ZSB0aGFuIHdyaXRlIG1hcHBhYmlsaXR5
LgorICAgICAgICByZXR1cm4gKG1Vc2FnZSA9PSBCVUZGRVJfVVNBR0VfU1RBR0lORyk7CisgICAg
fQorICAgIEFTU0VSVCgoYWNjZXNzICYgR0xfTUFQX1dSSVRFX0JJVCkgIT0gMCk7CisgICAgcmV0
dXJuIChtVXNhZ2UgPT0gQlVGRkVSX1VTQUdFX1NUQUdJTkcgfHwgbVVzYWdlID09IEJVRkZFUl9V
U0FHRV9VTklGT1JNKTsKIH0KIAogLy8gUmV0dXJucyB0cnVlIGlmIGl0IHJlY3JlYXRlcyB0aGUg
ZGlyZWN0IGJ1ZmZlcgpAQCAtODkzLDQ1ICs4ODksNDIgQEAgZ2w6OkVycm9yT3JSZXN1bHQ8Q29w
eVJlc3VsdD4gQnVmZmVyMTE6OgogICAgIGJvb2wgY3JlYXRlQnVmZmVyICAgPSAhbU5hdGl2ZVN0
b3JhZ2UgfHwgbUJ1ZmZlclNpemUgPCByZXF1aXJlZFNpemU7CiAKICAgICAvLyAoUmUpaW5pdGlh
bGl6ZSBEM0QgYnVmZmVyIGlmIG5lZWRlZAorICAgIGJvb2wgcHJlc2VydmVEYXRhID0gKGRlc3RP
ZmZzZXQgPiAwKTsKICAgICBpZiAoY3JlYXRlQnVmZmVyKQogICAgIHsKLSAgICAgICAgYm9vbCBw
cmVzZXJ2ZURhdGEgPSAoZGVzdE9mZnNldCA+IDApOwogICAgICAgICByZXNpemUocmVxdWlyZWRT
aXplLCBwcmVzZXJ2ZURhdGEpOwogICAgIH0KIAorICAgIHNpemVfdCBjbGFtcGVkU2l6ZSA9IHNp
emU7CisgICAgaWYgKG1Vc2FnZSA9PSBCVUZGRVJfVVNBR0VfVU5JRk9STSkKKyAgICB7CisgICAg
ICAgIGNsYW1wZWRTaXplID0gc3RkOjptaW4oY2xhbXBlZFNpemUsIG1CdWZmZXJTaXplIC0gZGVz
dE9mZnNldCk7CisgICAgfQorCiAgICAgaWYgKHNvdXJjZS0+Z2V0VXNhZ2UoKSA9PSBCVUZGRVJf
VVNBR0VfUElYRUxfUEFDSyB8fAogICAgICAgICBzb3VyY2UtPmdldFVzYWdlKCkgPT0gQlVGRkVS
X1VTQUdFX1NZU1RFTV9NRU1PUlkpCiAgICAgewotICAgICAgICBBU1NFUlQoc291cmNlLT5pc01h
cHBhYmxlKCkpOworICAgICAgICBBU1NFUlQoc291cmNlLT5pc01hcHBhYmxlKEdMX01BUF9SRUFE
X0JJVCkgJiYgaXNNYXBwYWJsZShHTF9NQVBfV1JJVEVfQklUKSk7CiAKLSAgICAgICAgdWludDhf
dCAqc291cmNlUG9pbnRlciA9IG51bGxwdHI7Ci0gICAgICAgIEFOR0xFX1RSWShzb3VyY2UtPm1h
cChzb3VyY2VPZmZzZXQsIHNpemUsIEdMX01BUF9SRUFEX0JJVCwgJnNvdXJjZVBvaW50ZXIpKTsK
KyAgICAgICAgLy8gVW5pZm9ybSBidWZmZXJzIG11c3QgYmUgbWFwcGVkIHdpdGggd3JpdGUvZGlz
Y2FyZC4KKyAgICAgICAgQVNTRVJUKCEocHJlc2VydmVEYXRhICYmIG1Vc2FnZSA9PSBCVUZGRVJf
VVNBR0VfVU5JRk9STSkpOwogCi0gICAgICAgIEQzRDExX01BUFBFRF9TVUJSRVNPVVJDRSBtYXBw
ZWRSZXNvdXJjZTsKLSAgICAgICAgSFJFU1VMVCBociA9IGNvbnRleHQtPk1hcChtTmF0aXZlU3Rv
cmFnZSwgMCwgRDNEMTFfTUFQX1dSSVRFLCAwLCAmbWFwcGVkUmVzb3VyY2UpOwotICAgICAgICBB
U1NFUlQoU1VDQ0VFREVEKGhyKSk7Ci0gICAgICAgIGlmIChGQUlMRUQoaHIpKQotICAgICAgICB7
Ci0gICAgICAgICAgICBzb3VyY2UtPnVubWFwKCk7Ci0gICAgICAgICAgICByZXR1cm4gZ2w6OkVy
cm9yKAotICAgICAgICAgICAgICAgIEdMX09VVF9PRl9NRU1PUlksCi0gICAgICAgICAgICAgICAg
IkZhaWxlZCB0byBtYXAgbmF0aXZlIHN0b3JhZ2UgaW4gQnVmZmVyMTE6Ok5hdGl2ZVN0b3JhZ2U6
OmNvcHlGcm9tU3RvcmFnZSIpOwotICAgICAgICB9CisgICAgICAgIHVpbnQ4X3QgKnNvdXJjZVBv
aW50ZXIgPSBudWxscHRyOworICAgICAgICBBTkdMRV9UUlkoc291cmNlLT5tYXAoc291cmNlT2Zm
c2V0LCBjbGFtcGVkU2l6ZSwgR0xfTUFQX1JFQURfQklULCAmc291cmNlUG9pbnRlcikpOwogCi0g
ICAgICAgIHVpbnQ4X3QgKmRlc3RQb2ludGVyID0gc3RhdGljX2Nhc3Q8dWludDhfdCAqPihtYXBw
ZWRSZXNvdXJjZS5wRGF0YSkgKyBkZXN0T2Zmc2V0OworICAgICAgICB1aW50OF90ICpkZXN0UG9p
bnRlciA9IG51bGxwdHI7CisgICAgICAgIEFOR0xFX1RSWShtYXAoZGVzdE9mZnNldCwgY2xhbXBl
ZFNpemUsIEdMX01BUF9XUklURV9CSVQsICZkZXN0UG9pbnRlcikpOwogCi0gICAgICAgIC8vIE9m
ZnNldCBib3VuZHMgYXJlIHZhbGlkYXRlZCBhdCB0aGUgQVBJIGxheWVyCi0gICAgICAgIEFTU0VS
VChzb3VyY2VPZmZzZXQgKyBzaXplIDw9IGRlc3RPZmZzZXQgKyBtQnVmZmVyU2l6ZSk7Ci0gICAg
ICAgIG1lbWNweShkZXN0UG9pbnRlciwgc291cmNlUG9pbnRlciwgc2l6ZSk7CisgICAgICAgIG1l
bWNweShkZXN0UG9pbnRlciwgc291cmNlUG9pbnRlciwgY2xhbXBlZFNpemUpOwogCi0gICAgICAg
IGNvbnRleHQtPlVubWFwKG1OYXRpdmVTdG9yYWdlLCAwKTsKKyAgICAgICAgdW5tYXAoKTsKICAg
ICAgICAgc291cmNlLT51bm1hcCgpOwogICAgIH0KICAgICBlbHNlCiAgICAgewogICAgICAgICBE
M0QxMV9CT1ggc3JjQm94OwogICAgICAgICBzcmNCb3gubGVmdCAgID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQgaW50Pihzb3VyY2VPZmZzZXQpOwotICAgICAgICBzcmNCb3gucmlnaHQgID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgaW50Pihzb3VyY2VPZmZzZXQgKyBzaXplKTsKKyAgICAgICAgc3JjQm94
LnJpZ2h0ICA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc291cmNlT2Zmc2V0ICsgY2xhbXBl
ZFNpemUpOwogICAgICAgICBzcmNCb3gudG9wICAgID0gMDsKICAgICAgICAgc3JjQm94LmJvdHRv
bSA9IDE7CiAgICAgICAgIHNyY0JveC5mcm9udCAgPSAwOwpAQCAtOTUyLDcgKzk0NSw3IEBAIGds
OjpFcnJvciBCdWZmZXIxMTo6TmF0aXZlU3RvcmFnZTo6cmVzaXoKICAgICBJRDNEMTFEZXZpY2VD
b250ZXh0ICpjb250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CiAKICAgICBE
M0QxMV9CVUZGRVJfREVTQyBidWZmZXJEZXNjOwotICAgIGZpbGxCdWZmZXJEZXNjKCZidWZmZXJE
ZXNjLCBtUmVuZGVyZXIsIG1Vc2FnZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihzaXplKSk7
CisgICAgRmlsbEJ1ZmZlckRlc2MoJmJ1ZmZlckRlc2MsIG1SZW5kZXJlciwgbVVzYWdlLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHNpemUpKTsKIAogICAgIElEM0QxMUJ1ZmZlciAqbmV3QnVm
ZmVyOwogICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVCdWZmZXIoJmJ1ZmZlckRl
c2MsIG51bGxwdHIsICZuZXdCdWZmZXIpOwpAQCAtOTg3LDYgKzk4MCw5IEBAIGdsOjpFcnJvciBC
dWZmZXIxMTo6TmF0aXZlU3RvcmFnZTo6cmVzaXoKIAogICAgIG1CdWZmZXJTaXplID0gYnVmZmVy
RGVzYy5CeXRlV2lkdGg7CiAKKyAgICAvLyBGcmVlIHRoZSBTUlZzLgorICAgIGNsZWFyU1JWcygp
OworCiAgICAgLy8gTm90aWZ5IHRoYXQgdGhlIHN0b3JhZ2UgaGFzIGNoYW5nZWQuCiAgICAgaWYg
KG1PblN0b3JhZ2VDaGFuZ2VkKQogICAgIHsKQEAgLTk5Niw3ICs5OTIsOCBAQCBnbDo6RXJyb3Ig
QnVmZmVyMTE6Ok5hdGl2ZVN0b3JhZ2U6OnJlc2l6CiAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7
CiB9CiAKLXZvaWQgQnVmZmVyMTE6Ok5hdGl2ZVN0b3JhZ2U6OmZpbGxCdWZmZXJEZXNjKEQzRDEx
X0JVRkZFUl9ERVNDICpidWZmZXJEZXNjLAorLy8gc3RhdGljCit2b2lkIEJ1ZmZlcjExOjpOYXRp
dmVTdG9yYWdlOjpGaWxsQnVmZmVyRGVzYyhEM0QxMV9CVUZGRVJfREVTQyAqYnVmZmVyRGVzYywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlcmVyMTEg
KnJlbmRlcmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QnVmZmVyVXNhZ2UgdXNhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgYnVmZmVyU2l6ZSkKQEAgLTEwNDUsOSArMTA0MiwxMiBAQCB2
b2lkIEJ1ZmZlcjExOjpOYXRpdmVTdG9yYWdlOjpmaWxsQnVmZmVyCiAgICAgICAgICAgICAvLyBD
b25zdGFudCBidWZmZXJzIG11c3QgYmUgb2YgYSBsaW1pdGVkIHNpemUsIGFuZCBhbGlnbmVkIHRv
IDE2IGJ5dGUgYm91bmRhcmllcwogICAgICAgICAgICAgLy8gRm9yIG91ciBwdXJwb3NlcyB3ZSBp
Z25vcmUgYW55IGJ1ZmZlciBkYXRhIHBhc3QgdGhlIG1heGltdW0gY29uc3RhbnQgYnVmZmVyIHNp
emUKICAgICAgICAgICAgIGJ1ZmZlckRlc2MtPkJ5dGVXaWR0aCA9IHJvdW5kVXAoYnVmZmVyRGVz
Yy0+Qnl0ZVdpZHRoLCAxNnUpOworCisgICAgICAgICAgICAvLyBOb3RlOiBpdCBzZWVtcyB0aGF0
IEQzRDExIGFsbG93cyBsYXJnZXIgYnVmZmVycyBvbiBzb21lIHBsYXRmb3JtcywgYnV0IG5vdCBh
bGwuCisgICAgICAgICAgICAvLyAoV2luZG93cyAxMCBzZWVtcyB0byBhbGxvdyBsYXJnZXIgY29u
c3RhbnQgYnVmZmVycywgYnV0IG5vdCBXaW5kb3dzIDcpCiAgICAgICAgICAgICBidWZmZXJEZXNj
LT5CeXRlV2lkdGggPQogICAgICAgICAgICAgICAgIHN0ZDo6bWluPFVJTlQ+KGJ1ZmZlckRlc2Mt
PkJ5dGVXaWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxV
SU5UPihyZW5kZXJlci0+Z2V0UmVuZGVyZXJDYXBzKCkubWF4VW5pZm9ybUJsb2NrU2l6ZSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PFVJTlQ+KHJlbmRlcmVy
LT5nZXROYXRpdmVDYXBzKCkubWF4VW5pZm9ybUJsb2NrU2l6ZSkpOwogICAgICAgICAgICAgYnJl
YWs7CiAKICAgICAgICAgZGVmYXVsdDoKQEAgLTEwNjAsMTEgKzEwNjAsMTEgQEAgZ2w6OkVycm9y
IEJ1ZmZlcjExOjpOYXRpdmVTdG9yYWdlOjptYXAocwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBhY2Nlc3MsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50OF90ICoqbWFwUG9pbnRlck91dCkKIHsKLSAgICBBU1NFUlQo
bVVzYWdlID09IEJVRkZFUl9VU0FHRV9TVEFHSU5HKTsKKyAgICBBU1NFUlQoaXNNYXBwYWJsZShh
Y2Nlc3MpKTsKIAogICAgIEQzRDExX01BUFBFRF9TVUJSRVNPVVJDRSBtYXBwZWRSZXNvdXJjZTsK
ICAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpjb250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VD
b250ZXh0KCk7Ci0gICAgRDNEMTFfTUFQIGQzZE1hcFR5cGUgICAgICAgICA9IGdsX2QzZDExOjpH
ZXREM0RNYXBUeXBlRnJvbUJpdHMoYWNjZXNzKTsKKyAgICBEM0QxMV9NQVAgZDNkTWFwVHlwZSAg
ICAgICAgID0gZ2xfZDNkMTE6OkdldEQzRE1hcFR5cGVGcm9tQml0cyhtVXNhZ2UsIGFjY2Vzcyk7
CiAgICAgVUlOVCBkM2RNYXBGbGFnICAgICAgICAgICAgICA9ICgoYWNjZXNzICYgR0xfTUFQX1VO
U1lOQ0hST05JWkVEX0JJVCkgIT0gMCA/IEQzRDExX01BUF9GTEFHX0RPX05PVF9XQUlUIDogMCk7
CiAKICAgICBIUkVTVUxUIHJlc3VsdCA9IGNvbnRleHQtPk1hcChtTmF0aXZlU3RvcmFnZSwgMCwg
ZDNkTWFwVHlwZSwgZDNkTWFwRmxhZywgJm1hcHBlZFJlc291cmNlKTsKQEAgLTEwODEsMTEgKzEw
ODEsNTYgQEAgZ2w6OkVycm9yIEJ1ZmZlcjExOjpOYXRpdmVTdG9yYWdlOjptYXAocwogCiB2b2lk
IEJ1ZmZlcjExOjpOYXRpdmVTdG9yYWdlOjp1bm1hcCgpCiB7Ci0gICAgQVNTRVJUKG1Vc2FnZSA9
PSBCVUZGRVJfVVNBR0VfU1RBR0lORyk7CisgICAgQVNTRVJUKGlzTWFwcGFibGUoR0xfTUFQX1dS
SVRFX0JJVCkgfHwgaXNNYXBwYWJsZShHTF9NQVBfUkVBRF9CSVQpKTsKICAgICBJRDNEMTFEZXZp
Y2VDb250ZXh0ICpjb250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CiAgICAg
Y29udGV4dC0+VW5tYXAobU5hdGl2ZVN0b3JhZ2UsIDApOwogfQogCitnbDo6RXJyb3JPclJlc3Vs
dDxJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKj4gQnVmZmVyMTE6Ok5hdGl2ZVN0b3JhZ2U6Omdl
dFNSVkZvckZvcm1hdCgKKyAgICBEWEdJX0ZPUk1BVCBzcnZGb3JtYXQpCit7CisgICAgYXV0byBi
dWZmZXJTUlZJdCA9IG1CdWZmZXJSZXNvdXJjZVZpZXdzLmZpbmQoc3J2Rm9ybWF0KTsKKworICAg
IGlmIChidWZmZXJTUlZJdCAhPSBtQnVmZmVyUmVzb3VyY2VWaWV3cy5lbmQoKSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBidWZmZXJTUlZJdC0+c2Vjb25kOworICAgIH0KKworICAgIElEM0QxMURl
dmljZSAqZGV2aWNlICAgICAgICAgICAgICAgID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKyAg
ICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKmJ1ZmZlclNSViA9IG51bGxwdHI7CisKKyAgICBj
b25zdCBkM2QxMTo6RFhHSUZvcm1hdFNpemUgJmR4Z2lGb3JtYXRJbmZvID0gZDNkMTE6OkdldERY
R0lGb3JtYXRTaXplSW5mbyhzcnZGb3JtYXQpOworCisgICAgRDNEMTFfU0hBREVSX1JFU09VUkNF
X1ZJRVdfREVTQyBidWZmZXJTUlZEZXNjOworICAgIGJ1ZmZlclNSVkRlc2MuQnVmZmVyLkVsZW1l
bnRPZmZzZXQgPSAwOworICAgIGJ1ZmZlclNSVkRlc2MuQnVmZmVyLkVsZW1lbnRXaWR0aCAgPSBz
dGF0aWNfY2FzdDxVSU5UPihtQnVmZmVyU2l6ZSkgLyBkeGdpRm9ybWF0SW5mby5waXhlbEJ5dGVz
OworICAgIGJ1ZmZlclNSVkRlc2MuVmlld0RpbWVuc2lvbiAgICAgICAgPSBEM0QxMV9TUlZfRElN
RU5TSU9OX0JVRkZFUjsKKyAgICBidWZmZXJTUlZEZXNjLkZvcm1hdCAgICAgICAgICAgICAgID0g
c3J2Rm9ybWF0OworCisgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVNoYWRlclJl
c291cmNlVmlldyhtTmF0aXZlU3RvcmFnZSwgJmJ1ZmZlclNSVkRlc2MsICZidWZmZXJTUlYpOwor
ICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICJFcnJvciBjcmVhdGluZyBidWZmZXIgU1JWIGluIEJ1ZmZlcjEx
OjpOYXRpdmVTdG9yYWdlOjpnZXRTUlZGb3JGb3JtYXQiKTsKKyAgICB9CisKKyAgICBtQnVmZmVy
UmVzb3VyY2VWaWV3c1tzcnZGb3JtYXRdID0gYnVmZmVyU1JWOworCisgICAgcmV0dXJuIGJ1ZmZl
clNSVjsKK30KKwordm9pZCBCdWZmZXIxMTo6TmF0aXZlU3RvcmFnZTo6Y2xlYXJTUlZzKCkKK3sK
KyAgICBmb3IgKGF1dG8gJnNydiA6IG1CdWZmZXJSZXNvdXJjZVZpZXdzKQorICAgIHsKKyAgICAg
ICAgU2FmZVJlbGVhc2Uoc3J2LnNlY29uZCk7CisgICAgfQorICAgIG1CdWZmZXJSZXNvdXJjZVZp
ZXdzLmNsZWFyKCk7Cit9CisKKy8vIEJ1ZmZlcjExOjpFbXVsYXRlZEluZGV4U3RvcmFnZSBpbXBs
ZW1lbnRhdGlvbgorCiBCdWZmZXIxMTo6RW11bGF0ZWRJbmRleGVkU3RvcmFnZTo6RW11bGF0ZWRJ
bmRleGVkU3RvcmFnZShSZW5kZXJlcjExICpyZW5kZXJlcikKICAgICA6IEJ1ZmZlclN0b3JhZ2Uo
cmVuZGVyZXIsIEJVRkZFUl9VU0FHRV9FTVVMQVRFRF9JTkRFWEVEX1ZFUlRFWCksIG1OYXRpdmVT
dG9yYWdlKG51bGxwdHIpCiB7CkBAIC0xMjIwLDcgKzEyNjUsNyBAQCBnbDo6RXJyb3JPclJlc3Vs
dDxDb3B5UmVzdWx0PiBCdWZmZXIxMTo6CiAgICAgc2l6ZV90IHNpemUsCiAgICAgc2l6ZV90IGRl
c3RPZmZzZXQpCiB7Ci0gICAgQVNTRVJUKHNvdXJjZS0+aXNNYXBwYWJsZSgpKTsKKyAgICBBU1NF
UlQoc291cmNlLT5pc01hcHBhYmxlKEdMX01BUF9SRUFEX0JJVCkpOwogICAgIHVpbnQ4X3QgKnNv
dXJjZURhdGEgPSBudWxscHRyOwogICAgIEFOR0xFX1RSWShzb3VyY2UtPm1hcChzb3VyY2VPZmZz
ZXQsIHNpemUsIEdMX01BUF9SRUFEX0JJVCwgJnNvdXJjZURhdGEpKTsKICAgICBBU1NFUlQoZGVz
dE9mZnNldCArIHNpemUgPD0gbU1lbW9yeUJ1ZmZlci5zaXplKCkpOwpAQCAtMTI1OCw2ICsxMzAz
LDggQEAgdm9pZCBCdWZmZXIxMTo6RW11bGF0ZWRJbmRleGVkU3RvcmFnZTo6dQogICAgIC8vIE5v
LW9wCiB9CiAKKy8vIEJ1ZmZlcjExOjpQYWNrU3RvcmFnZSBpbXBsZW1lbnRhdGlvbgorCiBCdWZm
ZXIxMTo6UGFja1N0b3JhZ2U6OlBhY2tTdG9yYWdlKFJlbmRlcmVyMTEgKnJlbmRlcmVyKQogICAg
IDogQnVmZmVyU3RvcmFnZShyZW5kZXJlciwgQlVGRkVSX1VTQUdFX1BJWEVMX1BBQ0spLCBtU3Rh
Z2luZ1RleHR1cmUoKSwgbURhdGFNb2RpZmllZChmYWxzZSkKIHsKQEAgLTEyNzIsOSArMTMxOSwx
NiBAQCBnbDo6RXJyb3JPclJlc3VsdDxDb3B5UmVzdWx0PiBCdWZmZXIxMTo6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXN0T2Zmc2V0KQogewotICAgIC8v
IFdlIGNvcHkgdGhyb3VnaCBhIHN0YWdpbmcgYnVmZmVyIHdoZW4gZHJhd2luZyB3aXRoIGEgcGFj
ayBidWZmZXIsCi0gICAgLy8gb3IgZm9yIG90aGVyIGNhc2VzIHdoZXJlIHdlIGFjY2VzcyB0aGUg
cGFjayBidWZmZXIKLSAgICBVTlJFQUNIQUJMRSgpOworICAgIEFOR0xFX1RSWShmbHVzaFF1ZXVl
ZFBhY2tDb21tYW5kKCkpOworCisgICAgLy8gV2UgY29weSB0aHJvdWdoIGEgc3RhZ2luZyBidWZm
ZXIgd2hlbiBkcmF3aW5nIHdpdGggYSBwYWNrIGJ1ZmZlciwgb3IgZm9yIG90aGVyIGNhc2VzIHdo
ZXJlIHdlCisgICAgLy8gYWNjZXNzIHRoZSBwYWNrIGJ1ZmZlcgorICAgIEFTU0VSVChzb3VyY2Ut
PmlzTWFwcGFibGUoR0xfTUFQX1JFQURfQklUKSAmJiBzb3VyY2UtPmdldFVzYWdlKCkgPT0gQlVG
RkVSX1VTQUdFX1NUQUdJTkcpOworICAgIHVpbnQ4X3QgKnNvdXJjZURhdGEgPSBudWxscHRyOwor
ICAgIEFOR0xFX1RSWShzb3VyY2UtPm1hcChzb3VyY2VPZmZzZXQsIHNpemUsIEdMX01BUF9SRUFE
X0JJVCwgJnNvdXJjZURhdGEpKTsKKyAgICBBU1NFUlQoZGVzdE9mZnNldCArIHNpemUgPD0gbU1l
bW9yeUJ1ZmZlci5zaXplKCkpOworICAgIG1lbWNweShtTWVtb3J5QnVmZmVyLmRhdGEoKSArIGRl
c3RPZmZzZXQsIHNvdXJjZURhdGEsIHNpemUpOworICAgIHNvdXJjZS0+dW5tYXAoKTsKICAgICBy
ZXR1cm4gQ29weVJlc3VsdDo6Tk9UX1JFQ1JFQVRFRDsKIH0KIApAQCAtMTMyOSw3ICsxMzgzLDcg
QEAgZ2w6OkVycm9yIEJ1ZmZlcjExOjpQYWNrU3RvcmFnZTo6cGFja1BpeAogCiAgICAgdW5zaWdu
ZWQgaW50IHNyY1N1YnJlc291cmNlID0gcmVuZGVyVGFyZ2V0LT5nZXRTdWJyZXNvdXJjZUluZGV4
KCk7CiAgICAgVGV4dHVyZUhlbHBlcjExIHNyY1RleHR1cmUgPQotICAgICAgICBUZXh0dXJlSGVs
cGVyMTE6Ok1ha2VBbmRSZWZlcmVuY2UocmVuZGVyVGFyZ2V0UmVzb3VyY2UsIHJlbmRlclRhcmdl
dC0+Z2V0QU5HTEVGb3JtYXQoKSk7CisgICAgICAgIFRleHR1cmVIZWxwZXIxMTo6TWFrZUFuZFJl
ZmVyZW5jZShyZW5kZXJUYXJnZXRSZXNvdXJjZSwgcmVuZGVyVGFyZ2V0LT5nZXRGb3JtYXRTZXQo
KSk7CiAKICAgICBtUXVldWVkUGFja0NvbW1hbmQucmVzZXQobmV3IFBhY2tQaXhlbHNQYXJhbXMo
cGFyYW1zKSk7CiAKQEAgLTEzMzcsMTAgKzEzOTEsMTAgQEAgZ2w6OkVycm9yIEJ1ZmZlcjExOjpQ
YWNrU3RvcmFnZTo6cGFja1BpeAogICAgIGlmICghbVN0YWdpbmdUZXh0dXJlLmdldFJlc291cmNl
KCkgfHwgbVN0YWdpbmdUZXh0dXJlLmdldEZvcm1hdCgpICE9IHNyY1RleHR1cmUuZ2V0Rm9ybWF0
KCkgfHwKICAgICAgICAgbVN0YWdpbmdUZXh0dXJlLmdldEV4dGVudHMoKSAhPSBzcmNUZXh0dXJl
U2l6ZSkKICAgICB7Ci0gICAgICAgIEFOR0xFX1RSWV9SRVNVTFQoQ3JlYXRlU3RhZ2luZ1RleHR1
cmUoc3JjVGV4dHVyZS5nZXRUZXh0dXJlVHlwZSgpLCBzcmNUZXh0dXJlLmdldEZvcm1hdCgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1RleHR1cmUu
Z2V0QU5HTEVGb3JtYXQoKSwgc3JjVGV4dHVyZVNpemUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbVJlbmRlcmVyLT5nZXREZXZpY2UoKSksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgbVN0YWdpbmdUZXh0dXJlKTsKKyAgICAgICAgQU5HTEVfVFJZX1JF
U1VMVCgKKyAgICAgICAgICAgIENyZWF0ZVN0YWdpbmdUZXh0dXJlKHNyY1RleHR1cmUuZ2V0VGV4
dHVyZVR5cGUoKSwgc3JjVGV4dHVyZS5nZXRGb3JtYXRTZXQoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNyY1RleHR1cmVTaXplLCBTdGFnaW5nQWNjZXNzOjpSRUFELCBtUmVu
ZGVyZXItPmdldERldmljZSgpKSwKKyAgICAgICAgICAgIG1TdGFnaW5nVGV4dHVyZSk7CiAgICAg
fQogCiAgICAgLy8gUmVhZFBpeGVscyBmcm9tIG11bHRpc2FtcGxlZCBGQk9zIGlzbid0IHN1cHBv
cnRlZCBpbiBjdXJyZW50IEdMCkBAIC0xMzgyLDYgKzE0MzYsOCBAQCBnbDo6RXJyb3IgQnVmZmVy
MTE6OlBhY2tTdG9yYWdlOjpmbHVzaFF1CiAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAK
Ky8vIEJ1ZmZlcjExOjpTeXN0ZW1NZW1vcnlTdG9yYWdlIGltcGxlbWVudGF0aW9uCisKIEJ1ZmZl
cjExOjpTeXN0ZW1NZW1vcnlTdG9yYWdlOjpTeXN0ZW1NZW1vcnlTdG9yYWdlKFJlbmRlcmVyMTEg
KnJlbmRlcmVyKQogICAgIDogQnVmZmVyMTE6OkJ1ZmZlclN0b3JhZ2UocmVuZGVyZXIsIEJVRkZF
Ul9VU0FHRV9TWVNURU1fTUVNT1JZKQogewpAQCAtMTM5Miw3ICsxNDQ4LDcgQEAgZ2w6OkVycm9y
T3JSZXN1bHQ8Q29weVJlc3VsdD4gQnVmZmVyMTE6OgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlc3RPZmZzZXQpCiB7Ci0gICAg
QVNTRVJUKHNvdXJjZS0+aXNNYXBwYWJsZSgpKTsKKyAgICBBU1NFUlQoc291cmNlLT5pc01hcHBh
YmxlKEdMX01BUF9SRUFEX0JJVCkpOwogICAgIHVpbnQ4X3QgKnNvdXJjZURhdGEgPSBudWxscHRy
OwogICAgIEFOR0xFX1RSWShzb3VyY2UtPm1hcChzb3VyY2VPZmZzZXQsIHNpemUsIEdMX01BUF9S
RUFEX0JJVCwgJnNvdXJjZURhdGEpKTsKICAgICBBU1NFUlQoZGVzdE9mZnNldCArIHNpemUgPD0g
bVN5c3RlbUNvcHkuc2l6ZSgpKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQnVmZmVyMTEuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0J1ZmZl
cjExLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQnVmZmVyMTEuaAkod29ya2luZyBjb3B5KQpAQCAt
OSwxMSArOSwxMiBAQAogI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfQlVGRkVS
MTFfSF8KICNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfRDNEX0QzRDExX0JVRkZFUjExX0hfCiAK
KyNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDxtYXA+CiAKICNpbmNsdWRlICJsaWJBTkdMRS9h
bmdsZXR5cGVzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL0J1ZmZlckQzRC5o
IgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxz
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvc2lnbmFsX3V0aWxzLmgiCiAKIG5hbWVzcGFjZSBnbAog
ewpAQCAtMjIsNiArMjMsNyBAQCBjbGFzcyBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ7CiAKIG5hbWVz
cGFjZSByeAogeworc3RydWN0IFBhY2tQaXhlbHNQYXJhbXM7CiBjbGFzcyBSZW5kZXJlcjExOwog
c3RydWN0IFNvdXJjZUluZGV4RGF0YTsKIHN0cnVjdCBUcmFuc2xhdGVkQXR0cmlidXRlOwpAQCAt
NDAsMjEgKzQyLDYgQEAgZW51bSBCdWZmZXJVc2FnZQogICAgIEJVRkZFUl9VU0FHRV9DT1VOVCwK
IH07CiAKLXN0cnVjdCBQYWNrUGl4ZWxzUGFyYW1zCi17Ci0gICAgUGFja1BpeGVsc1BhcmFtcygp
OwotICAgIFBhY2tQaXhlbHNQYXJhbXMoY29uc3QgZ2w6OlJlY3RhbmdsZSAmYXJlYSwgR0xlbnVt
IGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMdWludCBvdXRwdXRQaXRjaCwKLSAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpQaXhlbFBhY2tTdGF0ZSAmcGFjaywgcHRyZGlmZl90IG9mZnNldCk7
Ci0KLSAgICBnbDo6UmVjdGFuZ2xlIGFyZWE7Ci0gICAgR0xlbnVtIGZvcm1hdDsKLSAgICBHTGVu
dW0gdHlwZTsKLSAgICBHTHVpbnQgb3V0cHV0UGl0Y2g7Ci0gICAgZ2w6OkJ1ZmZlciAqcGFja0J1
ZmZlcjsKLSAgICBnbDo6UGl4ZWxQYWNrU3RhdGUgcGFjazsKLSAgICBwdHJkaWZmX3Qgb2Zmc2V0
OwotfTsKLQogdHlwZWRlZiBzaXplX3QgRGF0YVJldmlzaW9uOwogCiBjbGFzcyBCdWZmZXIxMSA6
IHB1YmxpYyBCdWZmZXJEM0QKQEAgLTgyLDggKzY5LDggQEAgY2xhc3MgQnVmZmVyMTEgOiBwdWJs
aWMgQnVmZmVyRDNECiAgICAgdm9pZCBpbnZhbGlkYXRlU3RhdGljRGF0YSgpIG92ZXJyaWRlOwog
CiAgICAgLy8gQnVmZmVySW1wbCBpbXBsZW1lbnRhdGlvbgotICAgIGdsOjpFcnJvciBzZXREYXRh
KGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCBHTGVudW0gdXNhZ2UpIG92ZXJyaWRlOwot
ICAgIGdsOjpFcnJvciBzZXRTdWJEYXRhKGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCBz
aXplX3Qgb2Zmc2V0KSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3Igc2V0RGF0YShHTGVudW0gdGFy
Z2V0LCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgR0xlbnVtIHVzYWdlKSBvdmVycmlk
ZTsKKyAgICBnbDo6RXJyb3Igc2V0U3ViRGF0YShHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkICpk
YXRhLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG9mZnNldCkgb3ZlcnJpZGU7CiAgICAgZ2w6OkVycm9y
IGNvcHlTdWJEYXRhKEJ1ZmZlckltcGwgKnNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnRwdHIgc291cmNlT2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dHB0ciBkZXN0T2Zmc2V0LApAQCAtOTMsMTQgKzgwLDExIEBAIGNsYXNzIEJ1ZmZlcjExIDogcHVi
bGljIEJ1ZmZlckQzRAogICAgIGdsOjpFcnJvciB1bm1hcChHTGJvb2xlYW4gKnJlc3VsdCkgb3Zl
cnJpZGU7CiAgICAgZ2w6OkVycm9yIG1hcmtUcmFuc2Zvcm1GZWVkYmFja1VzYWdlKCkgb3ZlcnJp
ZGU7CiAKLSAgICAvLyBXZSB1c2UgdHdvIHNldCBvZiBkaXJ0eSBjYWxsYmFja3MgZm9yIHR3byBl
dmVudHMuIFN0YXRpYyBidWZmZXJzIGFyZSBtYXJrZWQgZGlydHkgd2hlbmV2ZXIKLSAgICAvLyB0
aGUgZGF0YSBpcyBjaGFuZ2VkLCBiZWNhdXNlIHRoZXkgbXVzdCBiZSByZS10cmFuc2xhdGVkLiBE
aXJlY3QgYnVmZmVycyBvbmx5IG5lZWQgdG8gYmUKKyAgICAvLyBXZSB1c2UgdHdvIHNldCBvZiBk
aXJ0eSBldmVudHMuIFN0YXRpYyBidWZmZXJzIGFyZSBtYXJrZWQgZGlydHkgd2hlbmV2ZXIKKyAg
ICAvLyBkYXRhIGNoYW5nZXMsIGJlY2F1c2UgdGhleSBtdXN0IGJlIHJlLXRyYW5zbGF0ZWQuIERp
cmVjdCBidWZmZXJzIG9ubHkgbmVlZCB0byBiZQogICAgIC8vIHVwZGF0ZWQgd2hlbiB0aGUgdW5k
ZXJseWluZyBJRDNEMTFCdWZmZXIgcG9pbnRlciBjaGFuZ2VzIC0gaG9wZWZ1bGx5IGZhciBsZXNz
IG9mdGVuLgotICAgIHZvaWQgYWRkU3RhdGljQnVmZmVyRGlydHlDYWxsYmFjayhjb25zdCBOb3Rp
ZmljYXRpb25DYWxsYmFjayAqY2FsbGJhY2spOwotICAgIHZvaWQgcmVtb3ZlU3RhdGljQnVmZmVy
RGlydHlDYWxsYmFjayhjb25zdCBOb3RpZmljYXRpb25DYWxsYmFjayAqY2FsbGJhY2spOwotCi0g
ICAgdm9pZCBhZGREaXJlY3RCdWZmZXJEaXJ0eUNhbGxiYWNrKGNvbnN0IE5vdGlmaWNhdGlvbkNh
bGxiYWNrICpjYWxsYmFjayk7Ci0gICAgdm9pZCByZW1vdmVEaXJlY3RCdWZmZXJEaXJ0eUNhbGxi
YWNrKGNvbnN0IE5vdGlmaWNhdGlvbkNhbGxiYWNrICpjYWxsYmFjayk7CisgICAgYW5nbGU6OkJy
b2FkY2FzdENoYW5uZWwgKmdldFN0YXRpY0Jyb2FkY2FzdENoYW5uZWwoKTsKKyAgICBhbmdsZTo6
QnJvYWRjYXN0Q2hhbm5lbCAqZ2V0RGlyZWN0QnJvYWRjYXN0Q2hhbm5lbCgpOwogCiAgIHByaXZh
dGU6CiAgICAgY2xhc3MgQnVmZmVyU3RvcmFnZTsKQEAgLTExNyw3ICsxMDEsNyBAQCBjbGFzcyBC
dWZmZXIxMSA6IHB1YmxpYyBCdWZmZXJEM0QKICAgICAgICAgdW5zaWduZWQgaW50IGxydUNvdW50
OwogICAgIH07CiAKLSAgICBnbDo6RXJyb3IgbWFya0J1ZmZlclVzYWdlKCk7CisgICAgZ2w6OkVy
cm9yIG1hcmtCdWZmZXJVc2FnZShCdWZmZXJVc2FnZSB1c2FnZSk7CiAgICAgZ2w6OkVycm9yT3JS
ZXN1bHQ8TmF0aXZlU3RvcmFnZSAqPiBnZXRTdGFnaW5nU3RvcmFnZSgpOwogICAgIGdsOjpFcnJv
ck9yUmVzdWx0PFBhY2tTdG9yYWdlICo+IGdldFBhY2tTdG9yYWdlKCk7CiAgICAgZ2w6OkVycm9y
T3JSZXN1bHQ8U3lzdGVtTWVtb3J5U3RvcmFnZSAqPiBnZXRTeXN0ZW1NZW1vcnlTdG9yYWdlKCk7
CkBAIC0xMjksMTQgKzExMywyMiBAQCBjbGFzcyBCdWZmZXIxMSA6IHB1YmxpYyBCdWZmZXJEM0QK
ICAgICBnbDo6RXJyb3JPclJlc3VsdDxCdWZmZXJTdG9yYWdlICo+IGdldENvbnN0YW50QnVmZmVy
UmFuZ2VTdG9yYWdlKEdMaW50cHRyIG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgc2l6
ZSk7CiAKLSAgICBCdWZmZXJTdG9yYWdlICphbGxvY2F0ZVN0b3JhZ2UoQnVmZmVyVXNhZ2UgdXNh
Z2UpIGNvbnN0OworICAgIEJ1ZmZlclN0b3JhZ2UgKmFsbG9jYXRlU3RvcmFnZShCdWZmZXJVc2Fn
ZSB1c2FnZSk7CisgICAgdm9pZCB1cGRhdGVEZWFsbG9jVGhyZXNob2xkKEJ1ZmZlclVzYWdlIHVz
YWdlKTsKKworICAgIC8vIEZyZWUgdGhlIHN0b3JhZ2UgaWYgd2UgZGVjaWRlIGl0IGlzbid0IGJl
aW5nIHVzZWQgdmVyeSBvZnRlbi4KKyAgICBnbDo6RXJyb3IgY2hlY2tGb3JEZWFsbG9jYXRpb24o
QnVmZmVyVXNhZ2UgdXNhZ2UpOwogCiAgICAgUmVuZGVyZXIxMSAqbVJlbmRlcmVyOwogICAgIHNp
emVfdCBtU2l6ZTsKIAogICAgIEJ1ZmZlclN0b3JhZ2UgKm1NYXBwZWRTdG9yYWdlOwogCi0gICAg
c3RkOjp2ZWN0b3I8QnVmZmVyU3RvcmFnZSAqPiBtQnVmZmVyU3RvcmFnZXM7CisgICAgc3RkOjph
cnJheTxCdWZmZXJTdG9yYWdlICosIEJVRkZFUl9VU0FHRV9DT1VOVD4gbUJ1ZmZlclN0b3JhZ2Vz
OworCisgICAgLy8gVGhlc2UgdHdvIGFycmF5cyBhcmUgdXNlZCB0byB0cmFjayB3aGVuIHRvIGZy
ZWUgdW51c2VkIHN0b3JhZ2UuCisgICAgc3RkOjphcnJheTx1bnNpZ25lZCBpbnQsIEJVRkZFUl9V
U0FHRV9DT1VOVD4gbURlYWxsb2NUaHJlc2hvbGRzOworICAgIHN0ZDo6YXJyYXk8dW5zaWduZWQg
aW50LCBCVUZGRVJfVVNBR0VfQ09VTlQ+IG1JZGxlbmVzczsKIAogICAgIC8vIENhY2hlIG9mIEQz
RDExIGNvbnN0YW50IGJ1ZmZlciBmb3Igc3BlY2lmaWMgcmFuZ2VzIG9mIGJ1ZmZlciBkYXRhLgog
ICAgIC8vIFRoaXMgaXMgdXNlZCB0byBlbXVsYXRlIFVCTyByYW5nZXMgb24gMTEuMCBkZXZpY2Vz
LgpAQCAtMTQ2LDEzICsxMzgsOCBAQCBjbGFzcyBCdWZmZXIxMSA6IHB1YmxpYyBCdWZmZXJEM0QK
ICAgICBzaXplX3QgbUNvbnN0YW50QnVmZmVyU3RvcmFnZUFkZGl0aW9uYWxTaXplOwogICAgIHVu
c2lnbmVkIGludCBtTWF4Q29uc3RhbnRCdWZmZXJMcnVDb3VudDsKIAotICAgIHR5cGVkZWYgc3Rk
OjpwYWlyPElEM0QxMUJ1ZmZlciAqLCBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKj4gQnVmZmVy
U1JWUGFpcjsKLSAgICBzdGQ6Om1hcDxEWEdJX0ZPUk1BVCwgQnVmZmVyU1JWUGFpcj4gbUJ1ZmZl
clJlc291cmNlVmlld3M7Ci0KLSAgICB1bnNpZ25lZCBpbnQgbVJlYWRVc2FnZUNvdW50OwotCi0g
ICAgTm90aWZpY2F0aW9uU2V0IG1TdGF0aWNCdWZmZXJEaXJ0eUNhbGxiYWNrczsKLSAgICBOb3Rp
ZmljYXRpb25TZXQgbURpcmVjdEJ1ZmZlckRpcnR5Q2FsbGJhY2tzOworICAgIGFuZ2xlOjpCcm9h
ZGNhc3RDaGFubmVsIG1TdGF0aWNCcm9hZGNhc3RDaGFubmVsOworICAgIGFuZ2xlOjpCcm9hZGNh
c3RDaGFubmVsIG1EaXJlY3RCcm9hZGNhc3RDaGFubmVsOwogfTsKIAogfSAgLy8gbmFtZXNwYWNl
IHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL0NsZWFyMTEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQ2xlYXIxMS5jcHAJKHJldmlzaW9u
IDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvQ2xlYXIxMS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw3ICsxOTYsOCBA
QCBDbGVhcjExOjp+Q2xlYXIxMSgpCiAgICAgU2FmZVJlbGVhc2UobVJhc3Rlcml6ZXJTdGF0ZSk7
CiB9CiAKLWdsOjpFcnJvciBDbGVhcjExOjpjbGVhckZyYW1lYnVmZmVyKGNvbnN0IENsZWFyUGFy
YW1ldGVycyAmY2xlYXJQYXJhbXMsIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGF0YSAmZmJvRGF0
YSkKK2dsOjpFcnJvciBDbGVhcjExOjpjbGVhckZyYW1lYnVmZmVyKGNvbnN0IENsZWFyUGFyYW1l
dGVycyAmY2xlYXJQYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmZmJvRGF0YSkKIHsKICAgICBjb25zdCBhdXRvICZj
b2xvckF0dGFjaG1lbnRzID0gZmJvRGF0YS5nZXRDb2xvckF0dGFjaG1lbnRzKCk7CiAgICAgY29u
c3QgYXV0byAmZHJhd0J1ZmZlclN0YXRlcyA9IGZib0RhdGEuZ2V0RHJhd0J1ZmZlclN0YXRlcygp
OwpAQCAtMjc0LDIzICsyNzUsMjAgQEAgZ2w6OkVycm9yIENsZWFyMTE6OmNsZWFyRnJhbWVidWZm
ZXIoY29ucwogICAgICAgICAgICAgZHJhd0J1ZmZlclN0YXRlc1tjb2xvckF0dGFjaG1lbnRJbmRl
eF0gIT0gR0xfTk9ORSkKICAgICAgICAgewogICAgICAgICAgICAgUmVuZGVyVGFyZ2V0MTEgKnJl
bmRlclRhcmdldCA9IG51bGxwdHI7Ci0gICAgICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBhdHRh
Y2htZW50LmdldFJlbmRlclRhcmdldCgmcmVuZGVyVGFyZ2V0KTsKLSAgICAgICAgICAgIGlmIChl
cnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVy
cm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgQU5HTEVfVFJZKGF0dGFjaG1lbnQuZ2V0
UmVuZGVyVGFyZ2V0KCZyZW5kZXJUYXJnZXQpKTsKIAotICAgICAgICAgICAgY29uc3QgZ2w6Oklu
dGVybmFsRm9ybWF0ICZmb3JtYXRJbmZvID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhhdHRh
Y2htZW50LmdldEludGVybmFsRm9ybWF0KCkpOworICAgICAgICAgICAgY29uc3QgZ2w6OkludGVy
bmFsRm9ybWF0ICZmb3JtYXRJbmZvID0gKmF0dGFjaG1lbnQuZ2V0Rm9ybWF0KCkuaW5mbzsKIAog
ICAgICAgICAgICAgaWYgKGNsZWFyUGFyYW1zLmNvbG9yQ2xlYXJUeXBlID09IEdMX0ZMT0FUICYm
Ci0gICAgICAgICAgICAgICAgIShmb3JtYXRJbmZvLmNvbXBvbmVudFR5cGUgPT0gR0xfRkxPQVQg
fHwgZm9ybWF0SW5mby5jb21wb25lbnRUeXBlID09IEdMX1VOU0lHTkVEX05PUk1BTElaRUQgfHwg
Zm9ybWF0SW5mby5jb21wb25lbnRUeXBlID09IEdMX1NJR05FRF9OT1JNQUxJWkVEKSkKKyAgICAg
ICAgICAgICAgICAhKGZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9GTE9BVCB8fAorICAg
ICAgICAgICAgICAgICAgZm9ybWF0SW5mby5jb21wb25lbnRUeXBlID09IEdMX1VOU0lHTkVEX05P
Uk1BTElaRUQgfHwKKyAgICAgICAgICAgICAgICAgIGZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9
PSBHTF9TSUdORURfTk9STUFMSVpFRCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
RVJSKAotICAgICAgICAgICAgICAgICAgICAiSXQgaXMgdW5kZWZpbmVkIGJlaGF2aW91ciB0byBj
bGVhciBhIHJlbmRlciBidWZmZXIgd2hpY2ggaXMgbm90IG5vcm1hbGl6ZWQgIgorICAgICAgICAg
ICAgICAgIEVSUigiSXQgaXMgdW5kZWZpbmVkIGJlaGF2aW91ciB0byBjbGVhciBhIHJlbmRlciBi
dWZmZXIgd2hpY2ggaXMgbm90IG5vcm1hbGl6ZWQgIgogICAgICAgICAgICAgICAgICAgICAiZml4
ZWQgcG9pbnQgb3IgZmxvYXRpbmctIgogICAgICAgICAgICAgICAgICAgICAicG9pbnQgdG8gZmxv
YXRpbmcgcG9pbnQgdmFsdWVzIChjb2xvciBhdHRhY2htZW50ICV1IGhhcyBpbnRlcm5hbCBmb3Jt
YXQgIgogICAgICAgICAgICAgICAgICAgICAiMHglWCkuIiwKLSAgICAgICAgICAgICAgICAgICAg
Y29sb3JBdHRhY2htZW50SW5kZXgsIGF0dGFjaG1lbnQuZ2V0SW50ZXJuYWxGb3JtYXQoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbG9yQXR0YWNobWVudEluZGV4LCBhdHRhY2htZW50LmdldEZv
cm1hdCgpLmFzU2l6ZWQoKSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICgoZm9y
bWF0SW5mby5yZWRCaXRzID09IDAgfHwgIWNsZWFyUGFyYW1zLmNvbG9yTWFza1JlZCkgJiYKQEAg
LTMwMSwxMCArMjk5LDEyIEBAIGdsOjpFcnJvciBDbGVhcjExOjpjbGVhckZyYW1lYnVmZmVyKGNv
bnMKICAgICAgICAgICAgICAgICAvLyBFdmVyeSBjaGFubmVsIGVpdGhlciBkb2VzIG5vdCBleGlz
dCBpbiB0aGUgcmVuZGVyIHRhcmdldCBvciBpcyBtYXNrZWQgb3V0CiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICgoIShtUmVuZGVy
ZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCkuc3VwcG9ydHNDbGVhclZpZXcpICYmIG5lZWRT
Y2lzc29yZWRDbGVhcikgfHwgY2xlYXJQYXJhbXMuY29sb3JDbGVhclR5cGUgIT0gR0xfRkxPQVQg
fHwKLSAgICAgICAgICAgICAgICAgICAgIChmb3JtYXRJbmZvLnJlZEJpdHMgICA+IDAgJiYgIWNs
ZWFyUGFyYW1zLmNvbG9yTWFza1JlZCkgICB8fAorICAgICAgICAgICAgZWxzZSBpZiAoKCEobVJl
bmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpLnN1cHBvcnRzQ2xlYXJWaWV3KSAmJgor
ICAgICAgICAgICAgICAgICAgICAgIG5lZWRTY2lzc29yZWRDbGVhcikgfHwKKyAgICAgICAgICAg
ICAgICAgICAgIGNsZWFyUGFyYW1zLmNvbG9yQ2xlYXJUeXBlICE9IEdMX0ZMT0FUIHx8CisgICAg
ICAgICAgICAgICAgICAgICAoZm9ybWF0SW5mby5yZWRCaXRzID4gMCAmJiAhY2xlYXJQYXJhbXMu
Y29sb3JNYXNrUmVkKSB8fAogICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdEluZm8uZ3JlZW5C
aXRzID4gMCAmJiAhY2xlYXJQYXJhbXMuY29sb3JNYXNrR3JlZW4pIHx8Ci0gICAgICAgICAgICAg
ICAgICAgICAoZm9ybWF0SW5mby5ibHVlQml0cyAgPiAwICYmICFjbGVhclBhcmFtcy5jb2xvck1h
c2tCbHVlKSB8fAorICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdEluZm8uYmx1ZUJpdHMgPiAw
ICYmICFjbGVhclBhcmFtcy5jb2xvck1hc2tCbHVlKSB8fAogICAgICAgICAgICAgICAgICAgICAg
KGZvcm1hdEluZm8uYWxwaGFCaXRzID4gMCAmJiAhY2xlYXJQYXJhbXMuY29sb3JNYXNrQWxwaGEp
KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIC8vIEEgbWFza2VkIGNsZWFyIGlzIHJl
cXVpcmVkLCBvciBhIHNjaXNzb3JlZCBjbGVhciBpcyByZXF1aXJlZCBhbmQgSUQzRDExRGV2aWNl
Q29udGV4dDE6OkNsZWFyVmlldyBpcyB1bmF2YWlsYWJsZQpAQCAtMzI3LDIwICszMjcsMjYgQEAg
Z2w6OkVycm9yIENsZWFyMTE6OmNsZWFyRnJhbWVidWZmZXIoY29ucwogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJJbnRlcm5hbCByZW5kZXIg
dGFyZ2V0IHZpZXcgcG9pbnRlciB1bmV4cGVjdGVkbHkgbnVsbC4iKTsKICAgICAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgICAgICBjb25zdCBhdXRvICZkeGdpRm9ybWF0SW5mbyA9IGQzZDEx
OjpHZXREWEdJRm9ybWF0SW5mbygKLSAgICAgICAgICAgICAgICAgICAgZDNkMTE6OkdldEFOR0xF
Rm9ybWF0U2V0KHJlbmRlclRhcmdldC0+Z2V0QU5HTEVGb3JtYXQoKSkucnR2Rm9ybWF0KTsKKyAg
ICAgICAgICAgICAgICBjb25zdCBhdXRvICZuYXRpdmVGb3JtYXQgPSByZW5kZXJUYXJnZXQtPmdl
dEZvcm1hdFNldCgpLmZvcm1hdDsKIAogICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBh
Y3R1YWwgZm9ybWF0IGhhcyBhIGNoYW5uZWwgdGhhdCB0aGUgaW50ZXJuYWwgZm9ybWF0IGRvZXMg
bm90IGFuZCBzZXQgdGhlbSB0byB0aGUKICAgICAgICAgICAgICAgICAvLyBkZWZhdWx0IHZhbHVl
cwotICAgICAgICAgICAgICAgIGZsb2F0IGNsZWFyVmFsdWVzWzRdID0KLSAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgICgoZm9ybWF0SW5mby5yZWRCaXRzICAgPT0gMCAmJiBk
eGdpRm9ybWF0SW5mby5yZWRCaXRzICAgPiAwKSA/IDAuMGYgOiBjbGVhclBhcmFtcy5jb2xvckZD
bGVhclZhbHVlLnJlZCksCi0gICAgICAgICAgICAgICAgICAgICgoZm9ybWF0SW5mby5ncmVlbkJp
dHMgPT0gMCAmJiBkeGdpRm9ybWF0SW5mby5ncmVlbkJpdHMgPiAwKSA/IDAuMGYgOiBjbGVhclBh
cmFtcy5jb2xvckZDbGVhclZhbHVlLmdyZWVuKSwKLSAgICAgICAgICAgICAgICAgICAgKChmb3Jt
YXRJbmZvLmJsdWVCaXRzICA9PSAwICYmIGR4Z2lGb3JtYXRJbmZvLmJsdWVCaXRzICA+IDApID8g
MC4wZiA6IGNsZWFyUGFyYW1zLmNvbG9yRkNsZWFyVmFsdWUuYmx1ZSksCi0gICAgICAgICAgICAg
ICAgICAgICgoZm9ybWF0SW5mby5hbHBoYUJpdHMgPT0gMCAmJiBkeGdpRm9ybWF0SW5mby5hbHBo
YUJpdHMgPiAwKSA/IDEuMGYgOiBjbGVhclBhcmFtcy5jb2xvckZDbGVhclZhbHVlLmFscGhhKSwK
KyAgICAgICAgICAgICAgICBmbG9hdCBjbGVhclZhbHVlc1s0XSA9IHsKKyAgICAgICAgICAgICAg
ICAgICAgKChmb3JtYXRJbmZvLnJlZEJpdHMgPT0gMCAmJiBuYXRpdmVGb3JtYXQucmVkQml0cyA+
IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgPyAwLjBmCisgICAgICAgICAgICAgICAgICAg
ICAgICAgOiBjbGVhclBhcmFtcy5jb2xvckZDbGVhclZhbHVlLnJlZCksCisgICAgICAgICAgICAg
ICAgICAgICgoZm9ybWF0SW5mby5ncmVlbkJpdHMgPT0gMCAmJiBuYXRpdmVGb3JtYXQuZ3JlZW5C
aXRzID4gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICA/IDAuMGYKKyAgICAgICAgICAgICAg
ICAgICAgICAgICA6IGNsZWFyUGFyYW1zLmNvbG9yRkNsZWFyVmFsdWUuZ3JlZW4pLAorICAgICAg
ICAgICAgICAgICAgICAoKGZvcm1hdEluZm8uYmx1ZUJpdHMgPT0gMCAmJiBuYXRpdmVGb3JtYXQu
Ymx1ZUJpdHMgPiAwKQorICAgICAgICAgICAgICAgICAgICAgICAgID8gMC4wZgorICAgICAgICAg
ICAgICAgICAgICAgICAgIDogY2xlYXJQYXJhbXMuY29sb3JGQ2xlYXJWYWx1ZS5ibHVlKSwKKyAg
ICAgICAgICAgICAgICAgICAgKChmb3JtYXRJbmZvLmFscGhhQml0cyA9PSAwICYmIG5hdGl2ZUZv
cm1hdC5hbHBoYUJpdHMgPiAwKQorICAgICAgICAgICAgICAgICAgICAgICAgID8gMS4wZgorICAg
ICAgICAgICAgICAgICAgICAgICAgIDogY2xlYXJQYXJhbXMuY29sb3JGQ2xlYXJWYWx1ZS5hbHBo
YSksCiAgICAgICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgICAgIGlmIChkeGdpRm9ybWF0
SW5mby5hbHBoYUJpdHMgPT0gMSkKKyAgICAgICAgICAgICAgICBpZiAoZm9ybWF0SW5mby5hbHBo
YUJpdHMgPT0gMSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFNv
bWUgZHJpdmVycyBkbyBub3QgY29ycmVjdGx5IGhhbmRsZSBjYWxsaW5nIENsZWFyKCkgb24gYSBm
b3JtYXQgd2l0aCAxLWJpdCBhbHBoYS4KICAgICAgICAgICAgICAgICAgICAgLy8gVGhleSBjYW4g
aW5jb3JyZWN0bHkgcm91bmQgYWxsIG5vbi16ZXJvIHZhbHVlcyB1cCB0byAxLjBmLiBOb3RlIHRo
YXQgV0FSUCBkb2VzIG5vdCBkbyB0aGlzLgpAQCAtMzc1LDE2ICszODEsMTIgQEAgZ2w6OkVycm9y
IENsZWFyMTE6OmNsZWFyRnJhbWVidWZmZXIoY29ucwogICAgICAgICBBU1NFUlQoYXR0YWNobWVu
dCAhPSBudWxscHRyKTsKIAogICAgICAgICBSZW5kZXJUYXJnZXQxMSAqcmVuZGVyVGFyZ2V0ID0g
bnVsbHB0cjsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gYXR0YWNobWVudC0+Z2V0UmVuZGVy
VGFyZ2V0KCZyZW5kZXJUYXJnZXQpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5H
TEVfVFJZKGF0dGFjaG1lbnQtPmdldFJlbmRlclRhcmdldCgmcmVuZGVyVGFyZ2V0KSk7CiAKLSAg
ICAgICAgY29uc3QgYXV0byAmZHhnaUZvcm1hdEluZm8gPSBkM2QxMTo6R2V0RFhHSUZvcm1hdElu
Zm8oCi0gICAgICAgICAgICBkM2QxMTo6R2V0QU5HTEVGb3JtYXRTZXQocmVuZGVyVGFyZ2V0LT5n
ZXRBTkdMRUZvcm1hdCgpKS5kc3ZGb3JtYXQpOworICAgICAgICBjb25zdCBhdXRvICZuYXRpdmVG
b3JtYXQgPSByZW5kZXJUYXJnZXQtPmdldEZvcm1hdFNldCgpLmZvcm1hdDsKIAotICAgICAgICB1
bnNpZ25lZCBpbnQgc3RlbmNpbFVubWFza2VkID0gKHN0ZW5jaWxBdHRhY2htZW50ICE9IG51bGxw
dHIpID8gKDEgPDwgZHhnaUZvcm1hdEluZm8uc3RlbmNpbEJpdHMpIC0gMSA6IDA7CisgICAgICAg
IHVuc2lnbmVkIGludCBzdGVuY2lsVW5tYXNrZWQgPQorICAgICAgICAgICAgKHN0ZW5jaWxBdHRh
Y2htZW50ICE9IG51bGxwdHIpID8gKDEgPDwgbmF0aXZlRm9ybWF0LnN0ZW5jaWxCaXRzKSAtIDEg
OiAwOwogICAgICAgICBib29sIG5lZWRNYXNrZWRTdGVuY2lsQ2xlYXIgPSBjbGVhclBhcmFtcy5j
bGVhclN0ZW5jaWwgJiYgKGNsZWFyUGFyYW1zLnN0ZW5jaWxXcml0ZU1hc2sgJiBzdGVuY2lsVW5t
YXNrZWQpICE9IHN0ZW5jaWxVbm1hc2tlZDsKIAogICAgICAgICBpZiAobmVlZFNjaXNzb3JlZENs
ZWFyIHx8IG5lZWRNYXNrZWRTdGVuY2lsQ2xlYXIpCkBAIC00MDgsMTI5ICs0MTAsMTM5IEBAIGds
OjpFcnJvciBDbGVhcjExOjpjbGVhckZyYW1lYnVmZmVyKGNvbnMKICAgICAgICAgfQogICAgIH0K
IAotICAgIGlmIChtYXNrZWRDbGVhclJlbmRlclRhcmdldHMuc2l6ZSgpID4gMCB8fCBtYXNrZWRD
bGVhckRlcHRoU3RlbmNpbCkKKyAgICBpZiAobWFza2VkQ2xlYXJSZW5kZXJUYXJnZXRzLmVtcHR5
KCkgJiYgIW1hc2tlZENsZWFyRGVwdGhTdGVuY2lsKQogICAgIHsKLSAgICAgICAgLy8gVG8gY2xl
YXIgdGhlIHJlbmRlciB0YXJnZXRzIGFuZCBkZXB0aCBzdGVuY2lsIGluIG9uZSBwYXNzOgotICAg
ICAgICAvLwotICAgICAgICAvLyBSZW5kZXIgYSBxdWFkIGNsaXBwZWQgdG8gdGhlIHNjaXNzb3Ig
cmVjdGFuZ2xlIHdoaWNoIGRyYXdzIHRoZSBjbGVhciBjb2xvciBhbmQgYSBibGVuZAotICAgICAg
ICAvLyBzdGF0ZSB0aGF0IHdpbGwgcGVyZm9ybSB0aGUgcmVxdWlyZWQgY29sb3IgbWFza2luZy4K
LSAgICAgICAgLy8KLSAgICAgICAgLy8gVGhlIHF1YWQncyBkZXB0aCBpcyBlcXVhbCB0byB0aGUg
ZGVwdGggY2xlYXIgdmFsdWUgd2l0aCBhIGRlcHRoIHN0ZW5jaWwgc3RhdGUgdGhhdAotICAgICAg
ICAvLyB3aWxsIGVuYWJsZSBvciBkaXNhYmxlIGRlcHRoIHRlc3Qvd3JpdGVzIGlmIHRoZSBkZXB0
aCBidWZmZXIgc2hvdWxkIGJlIGNsZWFyZWQgb3Igbm90LgotICAgICAgICAvLwotICAgICAgICAv
LyBUaGUgcmFzdGVyaXplciBzdGF0ZSdzIHN0ZW5jaWwgaXMgc2V0IHRvIGFsd2F5cyBwYXNzIG9y
IGZhaWwgYmFzZWQgb24gaWYgdGhlIHN0ZW5jaWwKLSAgICAgICAgLy8gc2hvdWxkIGJlIGNsZWFy
ZWQgb3Igbm90IHdpdGggYSBzdGVuY2lsIHdyaXRlIG1hc2sgb2YgdGhlIHN0ZW5jaWwgY2xlYXIg
dmFsdWUuCi0gICAgICAgIC8vCi0gICAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0gICAgICAgIC8vCi0gICAgICAgIC8vIEx1Y2tpbHksIHRoZSBnbCBzcGVjIChFUyAzLjAu
MiBwZyAxODMpIHN0YXRlcyB0aGF0IHRoZSByZXN1bHRzIG9mIGNsZWFyaW5nIGEgcmVuZGVyLQot
ICAgICAgICAvLyBidWZmZXIgdGhhdCBpcyBub3Qgbm9ybWFsaXplZCBmaXhlZCBwb2ludCBvciBm
bG9hdGluZyBwb2ludCB3aXRoIGZsb2F0aW5nIHBvaW50IHZhbHVlcwotICAgICAgICAvLyBhcmUg
dW5kZWZpbmVkIHNvIHdlIGNhbiBqdXN0IHdyaXRlIGZsb2F0cyB0byB0aGVtIGFuZCBEM0QxMSB3
aWxsIGJpdCBjYXN0IHRoZW0gdG8KLSAgICAgICAgLy8gaW50ZWdlcnMuCi0gICAgICAgIC8vCi0g
ICAgICAgIC8vIEFsc28sIHdlIGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgYXR0ZW1wdGluZyB0
byBjbGVhciBhIG5vcm1hbGl6ZWQgZml4ZWQvZmxvYXRpbmcgcG9pbnQKLSAgICAgICAgLy8gYnVm
ZmVyIHdpdGggaW50ZWdlciB2YWx1ZXMgYmVjYXVzZSB0aGVyZSBpcyBubyBnbCBBUEkgY2FsbCB3
aGljaCB3b3VsZCBhbGxvdyBpdCwKLSAgICAgICAgLy8gZ2xDbGVhckJ1ZmZlciogY2FsbHMgb25s
eSBjbGVhciBhIHNpbmdsZSByZW5kZXJidWZmZXIgYXQgYSB0aW1lIHdoaWNoIGlzIHZlcmlmaWVk
IHRvCi0gICAgICAgIC8vIGJlIGEgY29tcGF0aWJsZSBjbGVhciB0eXBlLgotCi0gICAgICAgIC8v
IEJpbmQgYWxsIHRoZSByZW5kZXIgdGFyZ2V0cyB3aGljaCBuZWVkIGNsZWFyaW5nCi0gICAgICAg
IEFTU0VSVChtYXNrZWRDbGVhclJlbmRlclRhcmdldHMuc2l6ZSgpIDw9IG1SZW5kZXJlci0+Z2V0
UmVuZGVyZXJDYXBzKCkubWF4RHJhd0J1ZmZlcnMpOwotICAgICAgICBzdGQ6OnZlY3RvcjxJRDNE
MTFSZW5kZXJUYXJnZXRWaWV3Kj4gcnR2cyhtYXNrZWRDbGVhclJlbmRlclRhcmdldHMuc2l6ZSgp
KTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBtYXNrZWRDbGVhclJlbmRl
clRhcmdldHMuc2l6ZSgpOyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIFJlbmRlclRhcmdl
dDExICpyZW5kZXJUYXJnZXQgPSBtYXNrZWRDbGVhclJlbmRlclRhcmdldHNbaV0ucmVuZGVyVGFy
Z2V0OwotICAgICAgICAgICAgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqcnR2ID0gcmVuZGVyVGFy
Z2V0LT5nZXRSZW5kZXJUYXJnZXRWaWV3KCk7Ci0gICAgICAgICAgICBpZiAoIXJ0dikKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1P
UlksICJJbnRlcm5hbCByZW5kZXIgdGFyZ2V0IHZpZXcgcG9pbnRlciB1bmV4cGVjdGVkbHkgbnVs
bC4iKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CisgICAg
fQogCi0gICAgICAgICAgICBydHZzW2ldID0gcnR2OwotICAgICAgICB9Ci0gICAgICAgIElEM0Qx
MURlcHRoU3RlbmNpbFZpZXcgKmRzdiA9IG1hc2tlZENsZWFyRGVwdGhTdGVuY2lsID8gbWFza2Vk
Q2xlYXJEZXB0aFN0ZW5jaWwtPmdldERlcHRoU3RlbmNpbFZpZXcoKSA6IG51bGxwdHI7CisgICAg
Ly8gVG8gY2xlYXIgdGhlIHJlbmRlciB0YXJnZXRzIGFuZCBkZXB0aCBzdGVuY2lsIGluIG9uZSBw
YXNzOgorICAgIC8vCisgICAgLy8gUmVuZGVyIGEgcXVhZCBjbGlwcGVkIHRvIHRoZSBzY2lzc29y
IHJlY3RhbmdsZSB3aGljaCBkcmF3cyB0aGUgY2xlYXIgY29sb3IgYW5kIGEgYmxlbmQKKyAgICAv
LyBzdGF0ZSB0aGF0IHdpbGwgcGVyZm9ybSB0aGUgcmVxdWlyZWQgY29sb3IgbWFza2luZy4KKyAg
ICAvLworICAgIC8vIFRoZSBxdWFkJ3MgZGVwdGggaXMgZXF1YWwgdG8gdGhlIGRlcHRoIGNsZWFy
IHZhbHVlIHdpdGggYSBkZXB0aCBzdGVuY2lsIHN0YXRlIHRoYXQKKyAgICAvLyB3aWxsIGVuYWJs
ZSBvciBkaXNhYmxlIGRlcHRoIHRlc3Qvd3JpdGVzIGlmIHRoZSBkZXB0aCBidWZmZXIgc2hvdWxk
IGJlIGNsZWFyZWQgb3Igbm90LgorICAgIC8vCisgICAgLy8gVGhlIHJhc3Rlcml6ZXIgc3RhdGUn
cyBzdGVuY2lsIGlzIHNldCB0byBhbHdheXMgcGFzcyBvciBmYWlsIGJhc2VkIG9uIGlmIHRoZSBz
dGVuY2lsCisgICAgLy8gc2hvdWxkIGJlIGNsZWFyZWQgb3Igbm90IHdpdGggYSBzdGVuY2lsIHdy
aXRlIG1hc2sgb2YgdGhlIHN0ZW5jaWwgY2xlYXIgdmFsdWUuCisgICAgLy8KKyAgICAvLyA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vCisgICAgLy8gTHVja2lseSwgdGhlIGds
IHNwZWMgKEVTIDMuMC4yIHBnIDE4Mykgc3RhdGVzIHRoYXQgdGhlIHJlc3VsdHMgb2YgY2xlYXJp
bmcgYSByZW5kZXItCisgICAgLy8gYnVmZmVyIHRoYXQgaXMgbm90IG5vcm1hbGl6ZWQgZml4ZWQg
cG9pbnQgb3IgZmxvYXRpbmcgcG9pbnQgd2l0aCBmbG9hdGluZyBwb2ludCB2YWx1ZXMKKyAgICAv
LyBhcmUgdW5kZWZpbmVkIHNvIHdlIGNhbiBqdXN0IHdyaXRlIGZsb2F0cyB0byB0aGVtIGFuZCBE
M0QxMSB3aWxsIGJpdCBjYXN0IHRoZW0gdG8KKyAgICAvLyBpbnRlZ2Vycy4KKyAgICAvLworICAg
IC8vIEFsc28sIHdlIGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgYXR0ZW1wdGluZyB0byBjbGVh
ciBhIG5vcm1hbGl6ZWQgZml4ZWQvZmxvYXRpbmcgcG9pbnQKKyAgICAvLyBidWZmZXIgd2l0aCBp
bnRlZ2VyIHZhbHVlcyBiZWNhdXNlIHRoZXJlIGlzIG5vIGdsIEFQSSBjYWxsIHdoaWNoIHdvdWxk
IGFsbG93IGl0LAorICAgIC8vIGdsQ2xlYXJCdWZmZXIqIGNhbGxzIG9ubHkgY2xlYXIgYSBzaW5n
bGUgcmVuZGVyYnVmZmVyIGF0IGEgdGltZSB3aGljaCBpcyB2ZXJpZmllZCB0bworICAgIC8vIGJl
IGEgY29tcGF0aWJsZSBjbGVhciB0eXBlLgogCi0gICAgICAgIElEM0QxMUJsZW5kU3RhdGUgKmJs
ZW5kU3RhdGUgPSBnZXRCbGVuZFN0YXRlKG1hc2tlZENsZWFyUmVuZGVyVGFyZ2V0cyk7Ci0gICAg
ICAgIGNvbnN0IEZMT0FUIGJsZW5kRmFjdG9yc1s0XSA9IHsgMS4wZiwgMS4wZiwgMS4wZiwgMS4w
ZiB9OwotICAgICAgICBjb25zdCBVSU5UIHNhbXBsZU1hc2sgPSAweEZGRkZGRkZGOwotCi0gICAg
ICAgIElEM0QxMURlcHRoU3RlbmNpbFN0YXRlICpkc1N0YXRlID0gZ2V0RGVwdGhTdGVuY2lsU3Rh
dGUoY2xlYXJQYXJhbXMpOwotICAgICAgICBjb25zdCBVSU5UIHN0ZW5jaWxDbGVhciA9IGNsZWFy
UGFyYW1zLnN0ZW5jaWxDbGVhclZhbHVlICYgMHhGRjsKLQotICAgICAgICAvLyBTZXQgdGhlIHZl
cnRpY2VzCi0gICAgICAgIFVJTlQgdmVydGV4U3RyaWRlID0gMDsKLSAgICAgICAgY29uc3QgVUlO
VCBzdGFydElkeCA9IDA7Ci0gICAgICAgIENsZWFyU2hhZGVyICpzaGFkZXIgPSBudWxscHRyOwot
ICAgICAgICBEM0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwcGVkUmVzb3VyY2U7Ci0gICAgICAg
IEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlQ29udGV4dC0+TWFwKG1WZXJ0ZXhCdWZmZXIsIDAsIEQz
RDExX01BUF9XUklURV9ESVNDQVJELCAwLCAmbWFwcGVkUmVzb3VyY2UpOwotICAgICAgICBpZiAo
RkFJTEVEKHJlc3VsdCkpCisgICAgLy8gQmluZCBhbGwgdGhlIHJlbmRlciB0YXJnZXRzIHdoaWNo
IG5lZWQgY2xlYXJpbmcKKyAgICBBU1NFUlQobWFza2VkQ2xlYXJSZW5kZXJUYXJnZXRzLnNpemUo
KSA8PSBtUmVuZGVyZXItPmdldE5hdGl2ZUNhcHMoKS5tYXhEcmF3QnVmZmVycyk7CisgICAgc3Rk
Ojp2ZWN0b3I8SUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqPiBydHZzKG1hc2tlZENsZWFyUmVuZGVy
VGFyZ2V0cy5zaXplKCkpOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbWFza2Vk
Q2xlYXJSZW5kZXJUYXJnZXRzLnNpemUoKTsgaSsrKQorICAgIHsKKyAgICAgICAgUmVuZGVyVGFy
Z2V0MTEgKnJlbmRlclRhcmdldCA9IG1hc2tlZENsZWFyUmVuZGVyVGFyZ2V0c1tpXS5yZW5kZXJU
YXJnZXQ7CisgICAgICAgIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKnJ0diAgPSByZW5kZXJUYXJn
ZXQtPmdldFJlbmRlclRhcmdldFZpZXcoKTsKKyAgICAgICAgaWYgKCFydHYpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0
byBtYXAgaW50ZXJuYWwgbWFza2VkIGNsZWFyIHZlcnRleCBidWZmZXIsIEhSRVNVTFQ6IDB4JVgu
IiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9S
WSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludGVybmFsIHJlbmRlciB0YXJnZXQg
dmlldyBwb2ludGVyIHVuZXhwZWN0ZWRseSBudWxsLiIpOwogICAgICAgICB9CiAKLSAgICAgICAg
Y29uc3QgZ2w6OlJlY3RhbmdsZSAqc2Npc3NvclB0ciA9IGNsZWFyUGFyYW1zLnNjaXNzb3JFbmFi
bGVkID8gJmNsZWFyUGFyYW1zLnNjaXNzb3IgOiBudWxscHRyOwotICAgICAgICBzd2l0Y2ggKGNs
ZWFyUGFyYW1zLmNvbG9yQ2xlYXJUeXBlKQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9G
TE9BVDoKLSAgICAgICAgICAgIEFwcGx5VmVydGljZXMoZnJhbWVidWZmZXJTaXplLCBzY2lzc29y
UHRyLCBjbGVhclBhcmFtcy5jb2xvckZDbGVhclZhbHVlLCBjbGVhclBhcmFtcy5kZXB0aENsZWFy
VmFsdWUsIG1hcHBlZFJlc291cmNlLnBEYXRhKTsKKyAgICAgICAgcnR2c1tpXSA9IHJ0djsKKyAg
ICB9CisgICAgSUQzRDExRGVwdGhTdGVuY2lsVmlldyAqZHN2ID0KKyAgICAgICAgbWFza2VkQ2xl
YXJEZXB0aFN0ZW5jaWwgPyBtYXNrZWRDbGVhckRlcHRoU3RlbmNpbC0+Z2V0RGVwdGhTdGVuY2ls
VmlldygpIDogbnVsbHB0cjsKKworICAgIElEM0QxMUJsZW5kU3RhdGUgKmJsZW5kU3RhdGUgPSBn
ZXRCbGVuZFN0YXRlKG1hc2tlZENsZWFyUmVuZGVyVGFyZ2V0cyk7CisgICAgY29uc3QgRkxPQVQg
YmxlbmRGYWN0b3JzWzRdICA9IHsxLjBmLCAxLjBmLCAxLjBmLCAxLjBmfTsKKyAgICBjb25zdCBV
SU5UIHNhbXBsZU1hc2sgICAgICAgID0gMHhGRkZGRkZGRjsKKworICAgIElEM0QxMURlcHRoU3Rl
bmNpbFN0YXRlICpkc1N0YXRlID0gZ2V0RGVwdGhTdGVuY2lsU3RhdGUoY2xlYXJQYXJhbXMpOwor
ICAgIGNvbnN0IFVJTlQgc3RlbmNpbENsZWFyICAgICAgICAgID0gY2xlYXJQYXJhbXMuc3RlbmNp
bENsZWFyVmFsdWUgJiAweEZGOworCisgICAgLy8gU2V0IHRoZSB2ZXJ0aWNlcworICAgIFVJTlQg
dmVydGV4U3RyaWRlICAgPSAwOworICAgIGNvbnN0IFVJTlQgc3RhcnRJZHggPSAwOworICAgIENs
ZWFyU2hhZGVyICpzaGFkZXIgPSBudWxscHRyOworICAgIEQzRDExX01BUFBFRF9TVUJSRVNPVVJD
RSBtYXBwZWRSZXNvdXJjZTsKKyAgICBIUkVTVUxUIHJlc3VsdCA9CisgICAgICAgIGRldmljZUNv
bnRleHQtPk1hcChtVmVydGV4QnVmZmVyLCAwLCBEM0QxMV9NQVBfV1JJVEVfRElTQ0FSRCwgMCwg
Jm1hcHBlZFJlc291cmNlKTsKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAgICAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIkZhaWxlZCB0byBtYXAgaW50ZXJuYWwgbWFza2VkIGNsZWFyIHZlcnRleCBidWZmZXIs
IEhSRVNVTFQ6IDB4JVguIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpOworICAg
IH0KKworICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgKnNjaXNzb3JQdHIgPSBjbGVhclBhcmFtcy5z
Y2lzc29yRW5hYmxlZCA/ICZjbGVhclBhcmFtcy5zY2lzc29yIDogbnVsbHB0cjsKKyAgICBzd2l0
Y2ggKGNsZWFyUGFyYW1zLmNvbG9yQ2xlYXJUeXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9G
TE9BVDoKKyAgICAgICAgICAgIEFwcGx5VmVydGljZXMoZnJhbWVidWZmZXJTaXplLCBzY2lzc29y
UHRyLCBjbGVhclBhcmFtcy5jb2xvckZDbGVhclZhbHVlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBjbGVhclBhcmFtcy5kZXB0aENsZWFyVmFsdWUsIG1hcHBlZFJlc291cmNlLnBEYXRhKTsK
ICAgICAgICAgICAgIHZlcnRleFN0cmlkZSA9IHNpemVvZihkM2QxMTo6UG9zaXRpb25EZXB0aENv
bG9yVmVydGV4PGZsb2F0Pik7Ci0gICAgICAgICAgICBzaGFkZXIgPSBtRmxvYXRDbGVhclNoYWRl
cjsKKyAgICAgICAgICAgIHNoYWRlciAgICAgICA9IG1GbG9hdENsZWFyU2hhZGVyOwogICAgICAg
ICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKLSAgICAgICAg
ICAgIEFwcGx5VmVydGljZXMoZnJhbWVidWZmZXJTaXplLCBzY2lzc29yUHRyLCBjbGVhclBhcmFt
cy5jb2xvclVJQ2xlYXJWYWx1ZSwgY2xlYXJQYXJhbXMuZGVwdGhDbGVhclZhbHVlLCBtYXBwZWRS
ZXNvdXJjZS5wRGF0YSk7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgorICAgICAgICAg
ICAgQXBwbHlWZXJ0aWNlcyhmcmFtZWJ1ZmZlclNpemUsIHNjaXNzb3JQdHIsIGNsZWFyUGFyYW1z
LmNvbG9yVUlDbGVhclZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclBhcmFt
cy5kZXB0aENsZWFyVmFsdWUsIG1hcHBlZFJlc291cmNlLnBEYXRhKTsKICAgICAgICAgICAgIHZl
cnRleFN0cmlkZSA9IHNpemVvZihkM2QxMTo6UG9zaXRpb25EZXB0aENvbG9yVmVydGV4PHVuc2ln
bmVkIGludD4pOwotICAgICAgICAgICAgc2hhZGVyID0gbVVpbnRDbGVhclNoYWRlcjsKKyAgICAg
ICAgICAgIHNoYWRlciAgICAgICA9IG1VaW50Q2xlYXJTaGFkZXI7CiAgICAgICAgICAgICBicmVh
azsKIAotICAgICAgICAgIGNhc2UgR0xfSU5UOgotICAgICAgICAgICAgQXBwbHlWZXJ0aWNlcyhm
cmFtZWJ1ZmZlclNpemUsIHNjaXNzb3JQdHIsIGNsZWFyUGFyYW1zLmNvbG9ySUNsZWFyVmFsdWUs
IGNsZWFyUGFyYW1zLmRlcHRoQ2xlYXJWYWx1ZSwgbWFwcGVkUmVzb3VyY2UucERhdGEpOworICAg
ICAgICBjYXNlIEdMX0lOVDoKKyAgICAgICAgICAgIEFwcGx5VmVydGljZXMoZnJhbWVidWZmZXJT
aXplLCBzY2lzc29yUHRyLCBjbGVhclBhcmFtcy5jb2xvcklDbGVhclZhbHVlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBjbGVhclBhcmFtcy5kZXB0aENsZWFyVmFsdWUsIG1hcHBlZFJlc291
cmNlLnBEYXRhKTsKICAgICAgICAgICAgIHZlcnRleFN0cmlkZSA9IHNpemVvZihkM2QxMTo6UG9z
aXRpb25EZXB0aENvbG9yVmVydGV4PGludD4pOwotICAgICAgICAgICAgc2hhZGVyID0gbUludENs
ZWFyU2hhZGVyOworICAgICAgICAgICAgc2hhZGVyICAgICAgID0gbUludENsZWFyU2hhZGVyOwog
ICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBkZWZhdWx0OgorICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9CisgICAgfQogCi0gICAgICAgIGRldmljZUNvbnRleHQtPlVubWFwKG1WZXJ0ZXhCdWZmZXIs
IDApOworICAgIGRldmljZUNvbnRleHQtPlVubWFwKG1WZXJ0ZXhCdWZmZXIsIDApOwogCi0gICAg
ICAgIC8vIFNldCB0aGUgdmlld3BvcnQgdG8gYmUgdGhlIHNhbWUgc2l6ZSBhcyB0aGUgZnJhbWVi
dWZmZXIKLSAgICAgICAgRDNEMTFfVklFV1BPUlQgdmlld3BvcnQ7Ci0gICAgICAgIHZpZXdwb3J0
LlRvcExlZnRYID0gMDsKLSAgICAgICAgdmlld3BvcnQuVG9wTGVmdFkgPSAwOwotICAgICAgICB2
aWV3cG9ydC5XaWR0aCA9IHN0YXRpY19jYXN0PEZMT0FUPihmcmFtZWJ1ZmZlclNpemUud2lkdGgp
OwotICAgICAgICB2aWV3cG9ydC5IZWlnaHQgPSBzdGF0aWNfY2FzdDxGTE9BVD4oZnJhbWVidWZm
ZXJTaXplLmhlaWdodCk7Ci0gICAgICAgIHZpZXdwb3J0Lk1pbkRlcHRoID0gMDsKLSAgICAgICAg
dmlld3BvcnQuTWF4RGVwdGggPSAxOwotICAgICAgICBkZXZpY2VDb250ZXh0LT5SU1NldFZpZXdw
b3J0cygxLCAmdmlld3BvcnQpOwotCi0gICAgICAgIC8vIEFwcGx5IHN0YXRlCi0gICAgICAgIGRl
dmljZUNvbnRleHQtPk9NU2V0QmxlbmRTdGF0ZShibGVuZFN0YXRlLCBibGVuZEZhY3RvcnMsIHNh
bXBsZU1hc2spOwotICAgICAgICBkZXZpY2VDb250ZXh0LT5PTVNldERlcHRoU3RlbmNpbFN0YXRl
KGRzU3RhdGUsIHN0ZW5jaWxDbGVhcik7Ci0gICAgICAgIGRldmljZUNvbnRleHQtPlJTU2V0U3Rh
dGUobVJhc3Rlcml6ZXJTdGF0ZSk7Ci0KLSAgICAgICAgLy8gQXBwbHkgc2hhZGVycwotICAgICAg
ICBkZXZpY2VDb250ZXh0LT5JQVNldElucHV0TGF5b3V0KHNoYWRlci0+aW5wdXRMYXlvdXQtPnJl
c29sdmUoZGV2aWNlKSk7Ci0gICAgICAgIGRldmljZUNvbnRleHQtPlZTU2V0U2hhZGVyKHNoYWRl
ci0+dmVydGV4U2hhZGVyLnJlc29sdmUoZGV2aWNlKSwgbnVsbHB0ciwgMCk7Ci0gICAgICAgIGRl
dmljZUNvbnRleHQtPlBTU2V0U2hhZGVyKHNoYWRlci0+cGl4ZWxTaGFkZXIucmVzb2x2ZShkZXZp
Y2UpLCBudWxscHRyLCAwKTsKLSAgICAgICAgZGV2aWNlQ29udGV4dC0+R1NTZXRTaGFkZXIobnVs
bHB0ciwgbnVsbHB0ciwgMCk7Ci0KLSAgICAgICAgLy8gQXBwbHkgdmVydGV4IGJ1ZmZlcgotICAg
ICAgICBkZXZpY2VDb250ZXh0LT5JQVNldFZlcnRleEJ1ZmZlcnMoMCwgMSwgJm1WZXJ0ZXhCdWZm
ZXIsICZ2ZXJ0ZXhTdHJpZGUsICZzdGFydElkeCk7Ci0gICAgICAgIGRldmljZUNvbnRleHQtPklB
U2V0UHJpbWl0aXZlVG9wb2xvZ3koRDNEX1BSSU1JVElWRV9UT1BPTE9HWV9UUklBTkdMRVNUUklQ
KTsKLQotICAgICAgICAvLyBBcHBseSByZW5kZXIgdGFyZ2V0cwotICAgICAgICBtUmVuZGVyZXIt
PmdldFN0YXRlTWFuYWdlcigpLT5zZXRPbmVUaW1lUmVuZGVyVGFyZ2V0cyhydHZzLCBkc3YpOwor
ICAgIC8vIFNldCB0aGUgdmlld3BvcnQgdG8gYmUgdGhlIHNhbWUgc2l6ZSBhcyB0aGUgZnJhbWVi
dWZmZXIKKyAgICBEM0QxMV9WSUVXUE9SVCB2aWV3cG9ydDsKKyAgICB2aWV3cG9ydC5Ub3BMZWZ0
WCA9IDA7CisgICAgdmlld3BvcnQuVG9wTGVmdFkgPSAwOworICAgIHZpZXdwb3J0LldpZHRoICAg
ID0gc3RhdGljX2Nhc3Q8RkxPQVQ+KGZyYW1lYnVmZmVyU2l6ZS53aWR0aCk7CisgICAgdmlld3Bv
cnQuSGVpZ2h0ICAgPSBzdGF0aWNfY2FzdDxGTE9BVD4oZnJhbWVidWZmZXJTaXplLmhlaWdodCk7
CisgICAgdmlld3BvcnQuTWluRGVwdGggPSAwOworICAgIHZpZXdwb3J0Lk1heERlcHRoID0gMTsK
KyAgICBkZXZpY2VDb250ZXh0LT5SU1NldFZpZXdwb3J0cygxLCAmdmlld3BvcnQpOworCisgICAg
Ly8gQXBwbHkgc3RhdGUKKyAgICBkZXZpY2VDb250ZXh0LT5PTVNldEJsZW5kU3RhdGUoYmxlbmRT
dGF0ZSwgYmxlbmRGYWN0b3JzLCBzYW1wbGVNYXNrKTsKKyAgICBkZXZpY2VDb250ZXh0LT5PTVNl
dERlcHRoU3RlbmNpbFN0YXRlKGRzU3RhdGUsIHN0ZW5jaWxDbGVhcik7CisgICAgZGV2aWNlQ29u
dGV4dC0+UlNTZXRTdGF0ZShtUmFzdGVyaXplclN0YXRlKTsKKworICAgIC8vIEFwcGx5IHNoYWRl
cnMKKyAgICBkZXZpY2VDb250ZXh0LT5JQVNldElucHV0TGF5b3V0KHNoYWRlci0+aW5wdXRMYXlv
dXQtPnJlc29sdmUoZGV2aWNlKSk7CisgICAgZGV2aWNlQ29udGV4dC0+VlNTZXRTaGFkZXIoc2hh
ZGVyLT52ZXJ0ZXhTaGFkZXIucmVzb2x2ZShkZXZpY2UpLCBudWxscHRyLCAwKTsKKyAgICBkZXZp
Y2VDb250ZXh0LT5QU1NldFNoYWRlcihzaGFkZXItPnBpeGVsU2hhZGVyLnJlc29sdmUoZGV2aWNl
KSwgbnVsbHB0ciwgMCk7CisgICAgZGV2aWNlQ29udGV4dC0+R1NTZXRTaGFkZXIobnVsbHB0ciwg
bnVsbHB0ciwgMCk7CisKKyAgICAvLyBBcHBseSB2ZXJ0ZXggYnVmZmVyCisgICAgZGV2aWNlQ29u
dGV4dC0+SUFTZXRWZXJ0ZXhCdWZmZXJzKDAsIDEsICZtVmVydGV4QnVmZmVyLCAmdmVydGV4U3Ry
aWRlLCAmc3RhcnRJZHgpOworICAgIGRldmljZUNvbnRleHQtPklBU2V0UHJpbWl0aXZlVG9wb2xv
Z3koRDNEX1BSSU1JVElWRV9UT1BPTE9HWV9UUklBTkdMRVNUUklQKTsKKworICAgIC8vIEFwcGx5
IHJlbmRlciB0YXJnZXRzCisgICAgbVJlbmRlcmVyLT5nZXRTdGF0ZU1hbmFnZXIoKS0+c2V0T25l
VGltZVJlbmRlclRhcmdldHMocnR2cywgZHN2KTsKIAotICAgICAgICAvLyBEcmF3IHRoZSBjbGVh
ciBxdWFkCi0gICAgICAgIGRldmljZUNvbnRleHQtPkRyYXcoNCwgMCk7CisgICAgLy8gRHJhdyB0
aGUgY2xlYXIgcXVhZAorICAgIGRldmljZUNvbnRleHQtPkRyYXcoNCwgMCk7CiAKLSAgICAgICAg
Ly8gQ2xlYW4gdXAKLSAgICAgICAgbVJlbmRlcmVyLT5tYXJrQWxsU3RhdGVEaXJ0eSgpOwotICAg
IH0KKyAgICAvLyBDbGVhbiB1cAorICAgIG1SZW5kZXJlci0+bWFya0FsbFN0YXRlRGlydHkoKTsK
IAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9F
cnJvcigpOwogfQogCiBJRDNEMTFCbGVuZFN0YXRlICpDbGVhcjExOjpnZXRCbGVuZFN0YXRlKGNv
bnN0IHN0ZDo6dmVjdG9yPE1hc2tlZFJlbmRlclRhcmdldD4mIHJ0cykKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQ2xlYXIxMS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvQ2xlYXIxMS5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0NsZWFyMTEuaAko
d29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsOCBAQCBjbGFzcyBDbGVhcjExIDogYW5nbGU6Ok5v
bkNvcHlhYmxlCiAgICAgfkNsZWFyMTEoKTsKIAogICAgIC8vIENsZWFycyB0aGUgZnJhbWVidWZm
ZXIgd2l0aCB0aGUgc3VwcGxpZWQgY2xlYXIgcGFyYW1ldGVycywgYXNzdW1lcyB0aGF0IHRoZSBm
cmFtZWJ1ZmZlciBpcyBjdXJyZW50bHkgYXBwbGllZC4KLSAgICBnbDo6RXJyb3IgY2xlYXJGcmFt
ZWJ1ZmZlcihjb25zdCBDbGVhclBhcmFtZXRlcnMgJmNsZWFyUGFyYW1zLCBjb25zdCBnbDo6RnJh
bWVidWZmZXI6OkRhdGEgJmZib0RhdGEpOworICAgIGdsOjpFcnJvciBjbGVhckZyYW1lYnVmZmVy
KGNvbnN0IENsZWFyUGFyYW1ldGVycyAmY2xlYXJQYXJhbXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJmZib0RhdGEpOwogCiAgIHBy
aXZhdGU6CiAgICAgc3RydWN0IE1hc2tlZFJlbmRlclRhcmdldApJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Db250ZXh0MTEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvQ29udGV4dDExLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0NvbnRleHQxMS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNzAgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAx
NiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBDb250ZXh0
MTE6CisvLyAgIEQzRDExLXNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgYXNzb2NpYXRlZCB3aXRoIGEg
R0wgQ29udGV4dC4KKy8vCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
Q29udGV4dDExLmgiCisKKyNpbmNsdWRlICJjb21tb24vc3RyaW5nX3V0aWxzLmgiCisjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL0NvbXBpbGVyRDNELmgiCisjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvZDNkL1NoYWRlckQzRC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2QzZC9Qcm9ncmFtRDNELmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRl
cmJ1ZmZlckQzRC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9TYW1wbGVyRDNE
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1RleHR1cmVEM0QuaCIKKyNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQnVmZmVyMTEuaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvRmVuY2UxMS5oIgorI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9GcmFtZWJ1ZmZlcjExLmgiCisjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlcmVyMTEuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvU3RhdGVNYW5hZ2VyMTEuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvVHJhbnNmb3JtRmVlZGJhY2sxMS5oIgorI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9WZXJ0ZXhBcnJheTExLmgiCisKK25hbWVzcGFjZSByeAorewor
CitDb250ZXh0MTE6OkNvbnRleHQxMShjb25zdCBnbDo6Q29udGV4dFN0YXRlICZzdGF0ZSwgUmVu
ZGVyZXIxMSAqcmVuZGVyZXIpCisgICAgOiBDb250ZXh0SW1wbChzdGF0ZSksIG1SZW5kZXJlcihy
ZW5kZXJlcikKK3sKK30KKworQ29udGV4dDExOjp+Q29udGV4dDExKCkKK3sKK30KKworZ2w6OkVy
cm9yIENvbnRleHQxMTo6aW5pdGlhbGl6ZSgpCit7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7
Cit9CisKK0NvbXBpbGVySW1wbCAqQ29udGV4dDExOjpjcmVhdGVDb21waWxlcigpCit7CisgICAg
aWYgKG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKS5mZWF0dXJlTGV2ZWwgPD0g
RDNEX0ZFQVRVUkVfTEVWRUxfOV8zKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBDb21waWxl
ckQzRChTSF9ITFNMXzRfMF9GTDlfM19PVVRQVVQpOworICAgIH0KKyAgICBlbHNlCisgICAgewor
ICAgICAgICByZXR1cm4gbmV3IENvbXBpbGVyRDNEKFNIX0hMU0xfNF8xX09VVFBVVCk7CisgICAg
fQorfQorCitTaGFkZXJJbXBsICpDb250ZXh0MTE6OmNyZWF0ZVNoYWRlcihjb25zdCBnbDo6U2hh
ZGVyU3RhdGUgJmRhdGEpCit7CisgICAgcmV0dXJuIG5ldyBTaGFkZXJEM0QoZGF0YSwgbVJlbmRl
cmVyLT5nZXRXb3JrYXJvdW5kcygpKTsKK30KKworUHJvZ3JhbUltcGwgKkNvbnRleHQxMTo6Y3Jl
YXRlUHJvZ3JhbShjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZkYXRhKQoreworICAgIHJldHVybiBu
ZXcgUHJvZ3JhbUQzRChkYXRhLCBtUmVuZGVyZXIpOworfQorCitGcmFtZWJ1ZmZlckltcGwgKkNv
bnRleHQxMTo6Y3JlYXRlRnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJmRh
dGEpCit7CisgICAgcmV0dXJuIG5ldyBGcmFtZWJ1ZmZlcjExKGRhdGEsIG1SZW5kZXJlcik7Cit9
CisKK1RleHR1cmVJbXBsICpDb250ZXh0MTE6OmNyZWF0ZVRleHR1cmUoY29uc3QgZ2w6OlRleHR1
cmVTdGF0ZSAmc3RhdGUpCit7CisgICAgc3dpdGNoIChzdGF0ZS5nZXRUYXJnZXQoKSkKKyAgICB7
CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoKKyAgICAgICAgICAgIHJldHVybiBuZXcgVGV4
dHVyZUQzRF8yRChzdGF0ZSwgbVJlbmRlcmVyKTsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NV
QkVfTUFQOgorICAgICAgICAgICAgcmV0dXJuIG5ldyBUZXh0dXJlRDNEX0N1YmUoc3RhdGUsIG1S
ZW5kZXJlcik7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8zRDoKKyAgICAgICAgICAgIHJldHVy
biBuZXcgVGV4dHVyZUQzRF8zRChzdGF0ZSwgbVJlbmRlcmVyKTsKKyAgICAgICAgY2FzZSBHTF9U
RVhUVVJFXzJEX0FSUkFZOgorICAgICAgICAgICAgcmV0dXJuIG5ldyBUZXh0dXJlRDNEXzJEQXJy
YXkoc3RhdGUsIG1SZW5kZXJlcik7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9FWFRFUk5BTF9P
RVM6CisgICAgICAgICAgICByZXR1cm4gbmV3IFRleHR1cmVEM0RfRXh0ZXJuYWwoc3RhdGUsIG1S
ZW5kZXJlcik7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgIH0KKworICAgIHJldHVybiBudWxscHRyOworfQorCitSZW5kZXJidWZmZXJJbXBsICpDb250
ZXh0MTE6OmNyZWF0ZVJlbmRlcmJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG5ldyBSZW5kZXJidWZm
ZXJEM0QobVJlbmRlcmVyKTsKK30KKworQnVmZmVySW1wbCAqQ29udGV4dDExOjpjcmVhdGVCdWZm
ZXIoKQoreworICAgIEJ1ZmZlcjExICpidWZmZXIgPSBuZXcgQnVmZmVyMTEobVJlbmRlcmVyKTsK
KyAgICBtUmVuZGVyZXItPm9uQnVmZmVyQ3JlYXRlKGJ1ZmZlcik7CisgICAgcmV0dXJuIGJ1ZmZl
cjsKK30KKworVmVydGV4QXJyYXlJbXBsICpDb250ZXh0MTE6OmNyZWF0ZVZlcnRleEFycmF5KGNv
bnN0IGdsOjpWZXJ0ZXhBcnJheVN0YXRlICZkYXRhKQoreworICAgIHJldHVybiBuZXcgVmVydGV4
QXJyYXkxMShkYXRhKTsKK30KKworUXVlcnlJbXBsICpDb250ZXh0MTE6OmNyZWF0ZVF1ZXJ5KEdM
ZW51bSB0eXBlKQoreworICAgIHJldHVybiBuZXcgUXVlcnkxMShtUmVuZGVyZXIsIHR5cGUpOwor
fQorCitGZW5jZU5WSW1wbCAqQ29udGV4dDExOjpjcmVhdGVGZW5jZU5WKCkKK3sKKyAgICByZXR1
cm4gbmV3IEZlbmNlTlYxMShtUmVuZGVyZXIpOworfQorCitGZW5jZVN5bmNJbXBsICpDb250ZXh0
MTE6OmNyZWF0ZUZlbmNlU3luYygpCit7CisgICAgcmV0dXJuIG5ldyBGZW5jZVN5bmMxMShtUmVu
ZGVyZXIpOworfQorCitUcmFuc2Zvcm1GZWVkYmFja0ltcGwgKkNvbnRleHQxMTo6Y3JlYXRlVHJh
bnNmb3JtRmVlZGJhY2soY29uc3QgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrU3RhdGUgJnN0YXRlKQor
eworICAgIHJldHVybiBuZXcgVHJhbnNmb3JtRmVlZGJhY2sxMShzdGF0ZSwgbVJlbmRlcmVyKTsK
K30KKworU2FtcGxlckltcGwgKkNvbnRleHQxMTo6Y3JlYXRlU2FtcGxlcigpCit7CisgICAgcmV0
dXJuIG5ldyBTYW1wbGVyRDNEKCk7Cit9CisKK3N0ZDo6dmVjdG9yPFBhdGhJbXBsICo+IENvbnRl
eHQxMTo6Y3JlYXRlUGF0aHMoR0xzaXplaSkKK3sKKyAgICByZXR1cm4gc3RkOjp2ZWN0b3I8UGF0
aEltcGwgKj4oKTsKK30KKworZ2w6OkVycm9yIENvbnRleHQxMTo6Zmx1c2goKQoreworICAgIHJl
dHVybiBtUmVuZGVyZXItPmZsdXNoKCk7Cit9CisKK2dsOjpFcnJvciBDb250ZXh0MTE6OmZpbmlz
aCgpCit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+ZmluaXNoKCk7Cit9CisKK2dsOjpFcnJvciBD
b250ZXh0MTE6OmRyYXdBcnJheXMoR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNv
dW50KQoreworICAgIHJldHVybiBtUmVuZGVyZXItPmdlbmVyaWNEcmF3QXJyYXlzKHRoaXMsIG1v
ZGUsIGZpcnN0LCBjb3VudCwgMCk7Cit9CisKK2dsOjpFcnJvciBDb250ZXh0MTE6OmRyYXdBcnJh
eXNJbnN0YW5jZWQoR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGluc3RhbmNlQ291bnQpCit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+
Z2VuZXJpY0RyYXdBcnJheXModGhpcywgbW9kZSwgZmlyc3QsIGNvdW50LCBpbnN0YW5jZUNvdW50
KTsKK30KKworZ2w6OkVycm9yIENvbnRleHQxMTo6ZHJhd0VsZW1lbnRzKEdMZW51bSBtb2RlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpJbmRleFJhbmdlICZpbmRleFJhbmdlKQorewor
ICAgIHJldHVybiBtUmVuZGVyZXItPmdlbmVyaWNEcmF3RWxlbWVudHModGhpcywgbW9kZSwgY291
bnQsIHR5cGUsIGluZGljZXMsIDAsIGluZGV4UmFuZ2UpOworfQorCitnbDo6RXJyb3IgQ29udGV4
dDExOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Oklu
ZGV4UmFuZ2UgJmluZGV4UmFuZ2UpCit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2VuZXJpY0Ry
YXdFbGVtZW50cyh0aGlzLCBtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgaW5zdGFuY2VzLCBp
bmRleFJhbmdlKTsKK30KKworZ2w6OkVycm9yIENvbnRleHQxMTo6ZHJhd1JhbmdlRWxlbWVudHMo
R0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
ZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRp
Y2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Oklu
ZGV4UmFuZ2UgJmluZGV4UmFuZ2UpCit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2VuZXJpY0Ry
YXdFbGVtZW50cyh0aGlzLCBtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgMCwgaW5kZXhSYW5n
ZSk7Cit9CisKK0dMZW51bSBDb250ZXh0MTE6OmdldFJlc2V0U3RhdHVzKCkKK3sKKyAgICByZXR1
cm4gbVJlbmRlcmVyLT5nZXRSZXNldFN0YXR1cygpOworfQorCitzdGQ6OnN0cmluZyBDb250ZXh0
MTE6OmdldFZlbmRvclN0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0
VmVuZG9yU3RyaW5nKCk7Cit9CisKK3N0ZDo6c3RyaW5nIENvbnRleHQxMTo6Z2V0UmVuZGVyZXJE
ZXNjcmlwdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0UmVuZGVyZXJE
ZXNjcmlwdGlvbigpOworfQorCit2b2lkIENvbnRleHQxMTo6aW5zZXJ0RXZlbnRNYXJrZXIoR0xz
aXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikKK3sKKyAgICBhdXRvIG9wdGlvbmFsU3Ry
aW5nID0gYW5nbGU6OldpZGVuU3RyaW5nKHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSwgbWFy
a2VyKTsKKyAgICBpZiAob3B0aW9uYWxTdHJpbmcudmFsaWQoKSkKKyAgICB7CisgICAgICAgIG1S
ZW5kZXJlci0+Z2V0QW5ub3RhdG9yKCktPnNldE1hcmtlcihvcHRpb25hbFN0cmluZy52YWx1ZSgp
LmRhdGEoKSk7CisgICAgfQorfQorCit2b2lkIENvbnRleHQxMTo6cHVzaEdyb3VwTWFya2VyKEdM
c2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpCit7CisgICAgYXV0byBvcHRpb25hbFN0
cmluZyA9IGFuZ2xlOjpXaWRlblN0cmluZyhzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCksIG1h
cmtlcik7CisgICAgaWYgKG9wdGlvbmFsU3RyaW5nLnZhbGlkKCkpCisgICAgeworICAgICAgICBt
UmVuZGVyZXItPmdldEFubm90YXRvcigpLT5iZWdpbkV2ZW50KG9wdGlvbmFsU3RyaW5nLnZhbHVl
KCkuZGF0YSgpKTsKKyAgICB9Cit9CisKK3ZvaWQgQ29udGV4dDExOjpwb3BHcm91cE1hcmtlcigp
Cit7CisgICAgbVJlbmRlcmVyLT5nZXRBbm5vdGF0b3IoKS0+ZW5kRXZlbnQoKTsKK30KKwordm9p
ZCBDb250ZXh0MTE6OnN5bmNTdGF0ZShjb25zdCBnbDo6U3RhdGUgJnN0YXRlLCBjb25zdCBnbDo6
U3RhdGU6OkRpcnR5Qml0cyAmZGlydHlCaXRzKQoreworICAgIG1SZW5kZXJlci0+Z2V0U3RhdGVN
YW5hZ2VyKCktPnN5bmNTdGF0ZShzdGF0ZSwgZGlydHlCaXRzKTsKK30KKworR0xpbnQgQ29udGV4
dDExOjpnZXRHUFVEaXNqb2ludCgpCit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0R1BVRGlz
am9pbnQoKTsKK30KKworR0xpbnQ2NCBDb250ZXh0MTE6OmdldFRpbWVzdGFtcCgpCit7CisgICAg
cmV0dXJuIG1SZW5kZXJlci0+Z2V0VGltZXN0YW1wKCk7Cit9CisKK3ZvaWQgQ29udGV4dDExOjpv
bk1ha2VDdXJyZW50KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEpCit7CisgICAgbVJlbmRl
cmVyLT5nZXRTdGF0ZU1hbmFnZXIoKS0+b25NYWtlQ3VycmVudChkYXRhKTsKK30KKworY29uc3Qg
Z2w6OkNhcHMgJkNvbnRleHQxMTo6Z2V0TmF0aXZlQ2FwcygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1SZW5kZXJlci0+Z2V0TmF0aXZlQ2FwcygpOworfQorCitjb25zdCBnbDo6VGV4dHVyZUNhcHNN
YXAgJkNvbnRleHQxMTo6Z2V0TmF0aXZlVGV4dHVyZUNhcHMoKSBjb25zdAoreworICAgIHJldHVy
biBtUmVuZGVyZXItPmdldE5hdGl2ZVRleHR1cmVDYXBzKCk7Cit9CisKK2NvbnN0IGdsOjpFeHRl
bnNpb25zICZDb250ZXh0MTE6OmdldE5hdGl2ZUV4dGVuc2lvbnMoKSBjb25zdAoreworICAgIHJl
dHVybiBtUmVuZGVyZXItPmdldE5hdGl2ZUV4dGVuc2lvbnMoKTsKK30KKworY29uc3QgZ2w6Okxp
bWl0YXRpb25zICZDb250ZXh0MTE6OmdldE5hdGl2ZUxpbWl0YXRpb25zKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbVJlbmRlcmVyLT5nZXROYXRpdmVMaW1pdGF0aW9ucygpOworfQorCit9ICAvLyBu
YW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvQ29udGV4dDExLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Db250ZXh0MTEuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL0NvbnRleHQxMS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTI4
IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworLy8gQ29udGV4dDExOgorLy8gICBEM0QxMS1zcGVjaWZpYyBmdW5jdGlv
bmFsaXR5IGFzc29jaWF0ZWQgd2l0aCBhIEdMIENvbnRleHQuCisvLworCisjaWZuZGVmIExJQkFO
R0xFX1JFTkRFUkVSX0QzRF9EM0QxMV9DT05URVhUMTFfSF8KKyNkZWZpbmUgTElCQU5HTEVfUkVO
REVSRVJfRDNEX0QzRDExX0NPTlRFWFQxMV9IXworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvQ29udGV4dEltcGwuaCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJlcjExOwor
CitjbGFzcyBDb250ZXh0MTEgOiBwdWJsaWMgQ29udGV4dEltcGwKK3sKKyAgcHVibGljOgorICAg
IENvbnRleHQxMShjb25zdCBnbDo6Q29udGV4dFN0YXRlICZzdGF0ZSwgUmVuZGVyZXIxMSAqcmVu
ZGVyZXIpOworICAgIH5Db250ZXh0MTEoKSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBpbml0
aWFsaXplKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBTaGFkZXIgY3JlYXRpb24KKyAgICBDb21waWxl
ckltcGwgKmNyZWF0ZUNvbXBpbGVyKCkgb3ZlcnJpZGU7CisgICAgU2hhZGVySW1wbCAqY3JlYXRl
U2hhZGVyKGNvbnN0IGdsOjpTaGFkZXJTdGF0ZSAmZGF0YSkgb3ZlcnJpZGU7CisgICAgUHJvZ3Jh
bUltcGwgKmNyZWF0ZVByb2dyYW0oY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmZGF0YSkgb3ZlcnJp
ZGU7CisKKyAgICAvLyBGcmFtZWJ1ZmZlciBjcmVhdGlvbgorICAgIEZyYW1lYnVmZmVySW1wbCAq
Y3JlYXRlRnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJmRhdGEpIG92ZXJy
aWRlOworCisgICAgLy8gVGV4dHVyZSBjcmVhdGlvbgorICAgIFRleHR1cmVJbXBsICpjcmVhdGVU
ZXh0dXJlKGNvbnN0IGdsOjpUZXh0dXJlU3RhdGUgJnN0YXRlKSBvdmVycmlkZTsKKworICAgIC8v
IFJlbmRlcmJ1ZmZlciBjcmVhdGlvbgorICAgIFJlbmRlcmJ1ZmZlckltcGwgKmNyZWF0ZVJlbmRl
cmJ1ZmZlcigpIG92ZXJyaWRlOworCisgICAgLy8gQnVmZmVyIGNyZWF0aW9uCisgICAgQnVmZmVy
SW1wbCAqY3JlYXRlQnVmZmVyKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBWZXJ0ZXggQXJyYXkgY3Jl
YXRpb24KKyAgICBWZXJ0ZXhBcnJheUltcGwgKmNyZWF0ZVZlcnRleEFycmF5KGNvbnN0IGdsOjpW
ZXJ0ZXhBcnJheVN0YXRlICZkYXRhKSBvdmVycmlkZTsKKworICAgIC8vIFF1ZXJ5IGFuZCBGZW5j
ZSBjcmVhdGlvbgorICAgIFF1ZXJ5SW1wbCAqY3JlYXRlUXVlcnkoR0xlbnVtIHR5cGUpIG92ZXJy
aWRlOworICAgIEZlbmNlTlZJbXBsICpjcmVhdGVGZW5jZU5WKCkgb3ZlcnJpZGU7CisgICAgRmVu
Y2VTeW5jSW1wbCAqY3JlYXRlRmVuY2VTeW5jKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBUcmFuc2Zv
cm0gRmVlZGJhY2sgY3JlYXRpb24KKyAgICBUcmFuc2Zvcm1GZWVkYmFja0ltcGwgKmNyZWF0ZVRy
YW5zZm9ybUZlZWRiYWNrKAorICAgICAgICBjb25zdCBnbDo6VHJhbnNmb3JtRmVlZGJhY2tTdGF0
ZSAmc3RhdGUpIG92ZXJyaWRlOworCisgICAgLy8gU2FtcGxlciBvYmplY3QgY3JlYXRpb24KKyAg
ICBTYW1wbGVySW1wbCAqY3JlYXRlU2FtcGxlcigpIG92ZXJyaWRlOworCisgICAgLy8gUGF0aCBv
YmplY3QgY3JlYXRpb24uCisgICAgc3RkOjp2ZWN0b3I8UGF0aEltcGwgKj4gY3JlYXRlUGF0aHMo
R0xzaXplaSkgb3ZlcnJpZGU7CisKKyAgICAvLyBGbHVzaCBhbmQgZmluaXNoLgorICAgIGdsOjpF
cnJvciBmbHVzaCgpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBmaW5pc2goKSBvdmVycmlkZTsK
KworICAgIC8vIERyYXdpbmcgbWV0aG9kcy4KKyAgICBnbDo6RXJyb3IgZHJhd0FycmF5cyhHTGVu
dW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpIG92ZXJyaWRlOworICAgIGdsOjpF
cnJvciBkcmF3QXJyYXlzSW5zdGFuY2VkKEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBpbnN0YW5jZUNvdW50KSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBkcmF3RWxl
bWVudHMoR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkgb3ZlcnJpZGU7Cisg
ICAgZ2w6OkVycm9yIGRyYXdFbGVtZW50c0luc3RhbmNlZChHTGVudW0gbW9kZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpIG92ZXJy
aWRlOworICAgIGdsOjpFcnJvciBkcmF3UmFuZ2VFbGVtZW50cyhHTGVudW0gbW9kZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpp
bmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhS
YW5nZSAmaW5kZXhSYW5nZSkgb3ZlcnJpZGU7CisKKyAgICAvLyBEZXZpY2UgbG9zcworICAgIEdM
ZW51bSBnZXRSZXNldFN0YXR1cygpIG92ZXJyaWRlOworCisgICAgLy8gVmVuZG9yIGFuZCBkZXNj
cmlwdGlvbiBzdHJpbmdzLgorICAgIHN0ZDo6c3RyaW5nIGdldFZlbmRvclN0cmluZygpIGNvbnN0
IG92ZXJyaWRlOworICAgIHN0ZDo6c3RyaW5nIGdldFJlbmRlcmVyRGVzY3JpcHRpb24oKSBjb25z
dCBvdmVycmlkZTsKKworICAgIC8vIERlYnVnIG1hcmtlcnMuCisgICAgdm9pZCBpbnNlcnRFdmVu
dE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHB1c2hHcm91cE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2Vy
KSBvdmVycmlkZTsKKyAgICB2b2lkIHBvcEdyb3VwTWFya2VyKCkgb3ZlcnJpZGU7CisKKyAgICAv
LyBTdGF0ZSBzeW5jIHdpdGggZGlydHkgYml0cy4KKyAgICB2b2lkIHN5bmNTdGF0ZShjb25zdCBn
bDo6U3RhdGUgJnN0YXRlLCBjb25zdCBnbDo6U3RhdGU6OkRpcnR5Qml0cyAmZGlydHlCaXRzKSBv
dmVycmlkZTsKKworICAgIC8vIERpc2pvaW50IHRpbWVyIHF1ZXJpZXMKKyAgICBHTGludCBnZXRH
UFVEaXNqb2ludCgpIG92ZXJyaWRlOworICAgIEdMaW50NjQgZ2V0VGltZXN0YW1wKCkgb3ZlcnJp
ZGU7CisKKyAgICAvLyBDb250ZXh0IHN3aXRjaGluZworICAgIHZvaWQgb25NYWtlQ3VycmVudChj
b25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhKSBvdmVycmlkZTsKKworICAgIC8vIENhcHMgcXVl
cmllcworICAgIGNvbnN0IGdsOjpDYXBzICZnZXROYXRpdmVDYXBzKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgY29uc3QgZ2w6OlRleHR1cmVDYXBzTWFwICZnZXROYXRpdmVUZXh0dXJlQ2FwcygpIGNv
bnN0IG92ZXJyaWRlOworICAgIGNvbnN0IGdsOjpFeHRlbnNpb25zICZnZXROYXRpdmVFeHRlbnNp
b25zKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgZ2w6OkxpbWl0YXRpb25zICZnZXROYXRp
dmVMaW1pdGF0aW9ucygpIGNvbnN0IG92ZXJyaWRlOworCisgICAgUmVuZGVyZXIxMSAqZ2V0UmVu
ZGVyZXIoKSBjb25zdCB7IHJldHVybiBtUmVuZGVyZXI7IH0KKworICBwcml2YXRlOgorICAgIFJl
bmRlcmVyMTEgKm1SZW5kZXJlcjsKK307CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYg
IC8vIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9EM0QxMV9DT05URVhUMTFfSF8KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvRGVidWdB
bm5vdGF0b3IxMS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9EZWJ1Z0Fubm90YXRvcjExLmNwcAkocmV2aXNp
b24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9EZWJ1Z0Fubm90YXRvcjExLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgs
NyArNjgsNyBAQCB2b2lkIERlYnVnQW5ub3RhdG9yMTE6OnNldE1hcmtlcihjb25zdCB3CiBib29s
IERlYnVnQW5ub3RhdG9yMTE6OmdldFN0YXR1cygpCiB7CiAjaWYgZGVmaW5lZChBTkdMRV9FTkFC
TEVfV0lORE9XU19TVE9SRSkKLSNpZiAoTlRERElfVkVSU0lPTiA9PSBOVERESV9XSU4xMCkKKyAg
ICBzdGF0aWNfYXNzZXJ0KE5URERJX1ZFUlNJT04gPj0gTlRERElfV0lOMTAsICJHZXRTdGF0dXMg
b25seSB3b3JrcyBvbiBXaW4xMCBhbmQgYWJvdmUiKTsKICAgICBpbml0aWFsaXplRGV2aWNlKCk7
CiAKICAgICBpZiAobVVzZXJEZWZpbmVkQW5ub3RhdGlvbiAhPSBudWxscHRyKQpAQCAtNzcsMzgg
Kzc3LDYgQEAgYm9vbCBEZWJ1Z0Fubm90YXRvcjExOjpnZXRTdGF0dXMoKQogICAgIH0KIAogICAg
IHJldHVybiB0cnVlOyAgLy8gRGVmYXVsdCBpZiBpbml0aWFsaXplRGV2aWNlKCkgZmFpbGVkCi0j
ZWxpZiBkZWZpbmVkKF9ERUJVRykKLSAgICBzdGF0aWMgYm9vbCB1bmRlckNhcHR1cmUgPSB0cnVl
OwotCi0gICAgLy8gSUQzRFVzZXJEZWZpbmVkQW5ub3RhdGlvbjo6R2V0U3RhdHVzIGRvZXNuJ3Qg
d29yayB3aXRoIHRoZSBHcmFwaGljcyBEaWFnbm9zdGljcyB0b29scyBpbgotICAgIC8vIFdpbmRv
d3MgOC4xL1Zpc3VhbCBTdHVkaW8gMjAxMy4gV2UgY2FuIHVzZSBJRFhHcmFwaGljc0FuYWx5c2lz
LCB0aG91Z2guCi0gICAgLy8gVGhlIGNhbGwgdG8gR2V0RGVidWdJbnRlcmZhY2UxIG9ubHkgc3Vj
Y2VlZHMgaWYgdGhlIGFwcCBpcyB1bmRlciBjYXB0dXJlLgotICAgIC8vIFRoaXMgc2hvdWxkIG9u
bHkgYmUgY2FsbGVkIGluIERFQlVHIG1vZGUuCi0gICAgLy8gSWYgYW4gYXBwIGxpbmtzIGFnYWlu
c3QgRFhHSUdldERlYnVnSW50ZXJmYWNlMSBpbiByZWxlYXNlIG1vZGUgdGhlbiBpdCB3aWxsIGZh
aWwgV2luZG93cwotICAgIC8vIFN0b3JlIGluZ2VzdGlvbiBjaGVja3MuCi0KLSAgICAvLyBDYWNo
ZSB0aGUgcmVzdWx0IHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIERYR0lHZXREZWJ1
Z0ludGVyZmFjZTEKLSAgICBzdGF0aWMgYm9vbCB0cmllZElEWEdyYXBoaWNzQW5hbHlzaXMgPSBm
YWxzZTsKLQotICAgIGlmICghdHJpZWRJRFhHcmFwaGljc0FuYWx5c2lzKQotICAgIHsKLSAgICAg
ICAgSURYR3JhcGhpY3NBbmFseXNpcyAqZ3JhcGhpY3NBbmFseXNpcyA9IG51bGxwdHI7Ci0KLSAg
ICAgICAgSFJFU1VMVCByZXN1bHQgPSBEWEdJR2V0RGVidWdJbnRlcmZhY2UxKDAsIElJRF9QUFZf
QVJHUygmZ3JhcGhpY3NBbmFseXNpcykpOwotICAgICAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHVuZGVyQ2FwdHVyZSA9IChncmFwaGljc0FuYWx5c2lz
ICE9IG51bGxwdHIpOwotICAgICAgICB9Ci0KLSAgICAgICAgU2FmZVJlbGVhc2UoZ3JhcGhpY3NB
bmFseXNpcyk7Ci0gICAgICAgIHRyaWVkSURYR3JhcGhpY3NBbmFseXNpcyA9IHRydWU7Ci0gICAg
fQotCi0gICAgcmV0dXJuIHVuZGVyQ2FwdHVyZTsKLSNlbHNlCi0gICAgLy8gV2UgY2FuJ3QgZGV0
ZWN0IEdldFN0YXR1cygpIG9uIHJlbGVhc2UgV2luUlQgOC4xIGJ1aWxkcywgc28gYWx3YXlzIHJl
dHVybiB0cnVlLgotICAgIHJldHVybiB0cnVlOwotI2VuZGlmICAvLyAoTlRERElfVkVSU0lPTiA9
PSBOVERESV9XSU4xMCkgb3IgX0RFQlVHCiAjZWxzZQogICAgIC8vIFdlIGNhbid0IGRldGVjdCBH
ZXRTdGF0dXMoKSBvbiBkZXNrdG9wIEFOR0xFIGJ1aWxkcyBzbyBhbHdheXMgcmV0dXJuIHRydWUu
CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ZlbmNlMTEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvRmVuY2Ux
MS5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvRmVuY2UxMS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0LDYgKzE0LDggQEAKIG5hbWVzcGFjZSByeAogewogCitzdGF0aWMgY29uc3QgaW50IGtEZXZp
Y2VMb3N0Q2hlY2tQZXJpb2QgPSA2NDsKKwogLy8KIC8vIFRlbXBsYXRlIGhlbHBlcnMgZm9yIHNl
dCBhbmQgdGVzdCBvcGVyYXRpb25zLgogLy8KQEAgLTUwLDEwICs1Miw2IEBAIGdsOjpFcnJvciBG
ZW5jZVRlc3RIZWxwZXIoRmVuY2VDbGFzcyAqZmUKICAgICB7CiAgICAgICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBnZXQgcXVlcnkgZGF0YSwgcmVzdWx0
OiAweCVYLiIsIHJlc3VsdCk7CiAgICAgfQotICAgIGVsc2UgaWYgKGZlbmNlLT5tUmVuZGVyZXIt
PmlzRGV2aWNlTG9zdCgpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRf
T0ZfTUVNT1JZLCAiRGV2aWNlIHdhcyBsb3N0IHdoaWxlIHF1ZXJ5aW5nIHJlc3VsdCBvZiBhbiBl
dmVudCBxdWVyeS4iKTsKLSAgICB9CiAKICAgICBBU1NFUlQocmVzdWx0ID09IFNfT0sgfHwgcmVz
dWx0ID09IFNfRkFMU0UpOwogICAgICpvdXRGaW5pc2hlZCA9ICgocmVzdWx0ID09IFNfT0spID8g
R0xfVFJVRSA6IEdMX0ZBTFNFKTsKQEAgLTg5LDE4ICs4NywyMyBAQCBnbDo6RXJyb3IgRmVuY2VO
VjExOjp0ZXN0KEdMYm9vbGVhbiAqb3V0CiBnbDo6RXJyb3IgRmVuY2VOVjExOjpmaW5pc2goKQog
ewogICAgIEdMYm9vbGVhbiBmaW5pc2hlZCA9IEdMX0ZBTFNFOworCisgICAgaW50IGxvb3BDb3Vu
dCA9IDA7CiAgICAgd2hpbGUgKGZpbmlzaGVkICE9IEdMX1RSVUUpCiAgICAgewotICAgICAgICBn
bDo6RXJyb3IgZXJyb3IgPSBGZW5jZVRlc3RIZWxwZXIodGhpcywgdHJ1ZSwgJmZpbmlzaGVkKTsK
LSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICAgICAgbG9vcENvdW50Kys7CisgICAg
ICAgIEFOR0xFX1RSWShGZW5jZVRlc3RIZWxwZXIodGhpcywgdHJ1ZSwgJmZpbmlzaGVkKSk7CisK
KyAgICAgICAgaWYgKGxvb3BDb3VudCAlIGtEZXZpY2VMb3N0Q2hlY2tQZXJpb2QgPT0gMCAmJiBt
UmVuZGVyZXItPnRlc3REZXZpY2VMb3N0KCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBlcnJvcjsKKyAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRldmljZSB3YXMgbG9zdCB3aGlsZSBxdWVy
eWluZyByZXN1bHQgb2YgYW4gZXZlbnQgcXVlcnkuIik7CiAgICAgICAgIH0KIAogICAgICAgICBT
Y2hlZHVsZVlpZWxkKCk7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJP
Uik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIC8vCkBAIC0xNzYsOCArMTc5LDEw
IEBAIGdsOjpFcnJvciBGZW5jZVN5bmMxMTo6Y2xpZW50V2FpdChHTGJpdGYKICAgICBMT05HTE9O
RyB0aW1lb3V0SW5TZWNvbmRzID0gc3RhdGljX2Nhc3Q8TE9OR0xPTkc+KHRpbWVvdXQpICogc3Rh
dGljX2Nhc3Q8TE9OR0xPTkc+KDEwMDAwMDBsbCk7CiAgICAgTE9OR0xPTkcgZW5kQ291bnRlciA9
IGN1cnJlbnRDb3VudGVyLlF1YWRQYXJ0ICsgbUNvdW50ZXJGcmVxdWVuY3kgKiB0aW1lb3V0SW5T
ZWNvbmRzOwogCisgICAgaW50IGxvb3BDb3VudCA9IDA7CiAgICAgd2hpbGUgKGN1cnJlbnRDb3Vu
dGVyLlF1YWRQYXJ0IDwgZW5kQ291bnRlciAmJiAhcmVzdWx0KQogICAgIHsKKyAgICAgICAgbG9v
cENvdW50Kys7CiAgICAgICAgIFNjaGVkdWxlWWllbGQoKTsKICAgICAgICAgc3VjY2VzcyA9IFF1
ZXJ5UGVyZm9ybWFuY2VDb3VudGVyKCZjdXJyZW50Q291bnRlcik7CiAgICAgICAgIFVOVVNFRF9B
U1NFUlRJT05fVkFSSUFCTEUoc3VjY2Vzcyk7CkBAIC0xODksNiArMTk0LDEzIEBAIGdsOjpFcnJv
ciBGZW5jZVN5bmMxMTo6Y2xpZW50V2FpdChHTGJpdGYKICAgICAgICAgICAgICpvdXRSZXN1bHQg
PSBHTF9XQUlUX0ZBSUxFRDsKICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICAgICAgfQor
CisgICAgICAgIGlmICgobG9vcENvdW50ICUga0RldmljZUxvc3RDaGVja1BlcmlvZCkgPT0gMCAm
JiBtUmVuZGVyZXItPnRlc3REZXZpY2VMb3N0KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgICpv
dXRSZXN1bHQgPSBHTF9XQUlUX0ZBSUxFRDsKKyAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfT1VUX09GX01FTU9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRldmljZSB3
YXMgbG9zdCB3aGlsZSBxdWVyeWluZyByZXN1bHQgb2YgYW4gZXZlbnQgcXVlcnkuIik7CisgICAg
ICAgIH0KICAgICB9CiAKICAgICBpZiAoY3VycmVudENvdW50ZXIuUXVhZFBhcnQgPj0gZW5kQ291
bnRlcikKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvRnJhbWVidWZmZXIxMS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9GcmFtZWJ1ZmZlcjEx
LmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9GcmFtZWJ1ZmZlcjExLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjIsMTIgKzIyLDE0IEBACiAjaW5jbHVkZSAibGliQU5HTEUvRnJhbWVidWZmZXJBdHRh
Y2htZW50LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvVGV4dHVyZS5oIgogCit1c2luZyBuYW1lc3Bh
Y2UgYW5nbGU7CisKIG5hbWVzcGFjZSByeAogewogCiBuYW1lc3BhY2UKIHsKLWdsOjpFcnJvciBJ
bnZhbGlkYXRlQXR0YWNobWVudFN3aXp6bGVzKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1l
bnQgKmF0dGFjaG1lbnQpCitnbDo6RXJyb3IgTWFya0F0dGFjaG1lbnRzRGlydHkoY29uc3QgZ2w6
OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqYXR0YWNobWVudCkKIHsKICAgICBpZiAoYXR0YWNobWVu
dCAmJiBhdHRhY2htZW50LT50eXBlKCkgPT0gR0xfVEVYVFVSRSkKICAgICB7CkBAIC0zNiwyNyAr
MzgsMjMgQEAgZ2w6OkVycm9yIEludmFsaWRhdGVBdHRhY2htZW50U3dpenpsZXMoYwogICAgICAg
ICBUZXh0dXJlRDNEICp0ZXh0dXJlRDNEID0gR2V0SW1wbEFzPFRleHR1cmVEM0Q+KHRleHR1cmUp
OwogCiAgICAgICAgIFRleHR1cmVTdG9yYWdlICp0ZXhTdG9yYWdlID0gbnVsbHB0cjsKLSAgICAg
ICAgZ2w6OkVycm9yIGVycm9yID0gdGV4dHVyZUQzRC0+Z2V0TmF0aXZlVGV4dHVyZSgmdGV4U3Rv
cmFnZSk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBBTkdMRV9UUlkodGV4dHVyZUQz
RC0+Z2V0TmF0aXZlVGV4dHVyZSgmdGV4U3RvcmFnZSkpOwogCiAgICAgICAgIGlmICh0ZXhTdG9y
YWdlKQogICAgICAgICB7CiAgICAgICAgICAgICBUZXh0dXJlU3RvcmFnZTExICp0ZXhTdG9yYWdl
MTEgPSBHZXRBczxUZXh0dXJlU3RvcmFnZTExPih0ZXhTdG9yYWdlKTsKICAgICAgICAgICAgIEFT
U0VSVCh0ZXhTdG9yYWdlMTEpOwogCi0gICAgICAgICAgICB0ZXhTdG9yYWdlMTEtPmludmFsaWRh
dGVTd2l6emxlQ2FjaGVMZXZlbChhdHRhY2htZW50LT5taXBMZXZlbCgpKTsKKyAgICAgICAgICAg
IHRleFN0b3JhZ2UxMS0+bWFya0xldmVsRGlydHkoYXR0YWNobWVudC0+bWlwTGV2ZWwoKSk7CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAg
ICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogdm9pZCBVcGRhdGVDYWNoZWRSZW5kZXJUYXJn
ZXQoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqYXR0YWNobWVudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJlbmRlclRhcmdldDExIComY2FjaGVkUmVuZGVyVGFyZ2V0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTm90aWZpY2F0aW9uQ2FsbGJh
Y2sgJmNhbGxiYWNrRnVuYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYW5uZWxC
aW5kaW5nICpjaGFubmVsQmluZGluZykKIHsKICAgICBSZW5kZXJUYXJnZXQxMSAqbmV3UmVuZGVy
VGFyZ2V0ID0gbnVsbHB0cjsKICAgICBpZiAoYXR0YWNobWVudCkKQEAgLTY1LDkxICs2Myw1MyBA
QCB2b2lkIFVwZGF0ZUNhY2hlZFJlbmRlclRhcmdldChjb25zdCBnbDo6CiAgICAgfQogICAgIGlm
IChuZXdSZW5kZXJUYXJnZXQgIT0gY2FjaGVkUmVuZGVyVGFyZ2V0KQogICAgIHsKLSAgICAgICAg
aWYgKGNhY2hlZFJlbmRlclRhcmdldCkKLSAgICAgICAgewotICAgICAgICAgICAgY2FjaGVkUmVu
ZGVyVGFyZ2V0LT5yZW1vdmVEaXJ0eUNhbGxiYWNrKCZjYWxsYmFja0Z1bmMpOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKG5ld1JlbmRlclRhcmdldCkKLSAgICAgICAgewotICAgICAgICAgICAg
bmV3UmVuZGVyVGFyZ2V0LT5hZGREaXJ0eUNhbGxiYWNrKCZjYWxsYmFja0Z1bmMpOwotICAgICAg
ICB9Ci0KKyAgICAgICAgYXV0byBjaGFubmVsID0gKG5ld1JlbmRlclRhcmdldCA/IG5ld1JlbmRl
clRhcmdldC0+Z2V0QnJvYWRjYXN0Q2hhbm5lbCgpIDogbnVsbHB0cik7CisgICAgICAgIGNoYW5u
ZWxCaW5kaW5nLT5iaW5kKGNoYW5uZWwpOwogICAgICAgICBjYWNoZWRSZW5kZXJUYXJnZXQgPSBu
ZXdSZW5kZXJUYXJnZXQ7CiAgICAgfQogfQogfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi1G
cmFtZWJ1ZmZlcjExOjpGcmFtZWJ1ZmZlcjExKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGF0YSAm
ZGF0YSwgUmVuZGVyZXIxMSAqcmVuZGVyZXIpCi0gICAgOiBGcmFtZWJ1ZmZlckQzRChkYXRhLCBy
ZW5kZXJlciksIG1SZW5kZXJlcihyZW5kZXJlciksIG1DYWNoZWREZXB0aFN0ZW5jaWxSZW5kZXJU
YXJnZXQobnVsbHB0cikKK0ZyYW1lYnVmZmVyMTE6OkZyYW1lYnVmZmVyMTEoY29uc3QgZ2w6OkZy
YW1lYnVmZmVyU3RhdGUgJmRhdGEsIFJlbmRlcmVyMTEgKnJlbmRlcmVyKQorICAgIDogRnJhbWVi
dWZmZXJEM0QoZGF0YSwgcmVuZGVyZXIpLAorICAgICAgbVJlbmRlcmVyKHJlbmRlcmVyKSwKKyAg
ICAgIG1DYWNoZWREZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQobnVsbHB0ciksCisgICAgICBtRGVw
dGhTdGVuY2lsUmVuZGVyVGFyZ2V0RGlydHkodGhpcywgZ2w6OklNUExFTUVOVEFUSU9OX01BWF9G
UkFNRUJVRkZFUl9BVFRBQ0hNRU5UUykKIHsKICAgICBBU1NFUlQobVJlbmRlcmVyICE9IG51bGxw
dHIpOwogICAgIG1DYWNoZWRDb2xvclJlbmRlclRhcmdldHMuZmlsbChudWxscHRyKTsKICAgICBm
b3IgKHNpemVfdCBjb2xvckluZGV4ID0gMDsgY29sb3JJbmRleCA8IGRhdGEuZ2V0Q29sb3JBdHRh
Y2htZW50cygpLnNpemUoKTsgKytjb2xvckluZGV4KQogICAgIHsKLSAgICAgICAgYXV0byBjYWxs
YmFjayA9IFt0aGlzLCBjb2xvckluZGV4XSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMt
Pm1hcmtDb2xvclJlbmRlclRhcmdldERpcnR5KGNvbG9ySW5kZXgpOwotICAgICAgICB9OwotICAg
ICAgICBtQ29sb3JSZW5kZXJUYXJnZXRzRGlydHkucHVzaF9iYWNrKGNhbGxiYWNrKTsKKyAgICAg
ICAgbUNvbG9yUmVuZGVyVGFyZ2V0c0RpcnR5LnB1c2hfYmFjaygKKyAgICAgICAgICAgIENoYW5u
ZWxCaW5kaW5nKHRoaXMsIHN0YXRpY19jYXN0PFNpZ25hbFRva2VuPihjb2xvckluZGV4KSkpOwog
ICAgIH0KLSAgICBtRGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0RGlydHkgPSBbdGhpc10oKQotICAg
IHsKLSAgICAgICAgdGhpcy0+bWFya0RlcHRoU3RlbmNpbFJlbmRlclRhcmdldERpcnR5KCk7Ci0g
ICAgfTsKIH0KIAogRnJhbWVidWZmZXIxMTo6fkZyYW1lYnVmZmVyMTEoKQogewotICAgIGZvciAo
c2l6ZV90IGNvbG9ySW5kZXggPSAwOyBjb2xvckluZGV4IDwgbUNhY2hlZENvbG9yUmVuZGVyVGFy
Z2V0cy5zaXplKCk7ICsrY29sb3JJbmRleCkKLSAgICB7Ci0gICAgICAgIGF1dG8gKmNvbG9yUmVu
ZGVyVGFyZ2V0ID0gbUNhY2hlZENvbG9yUmVuZGVyVGFyZ2V0c1tjb2xvckluZGV4XTsKLSAgICAg
ICAgaWYgKGNvbG9yUmVuZGVyVGFyZ2V0KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb2xvclJl
bmRlclRhcmdldC0+cmVtb3ZlRGlydHlDYWxsYmFjaygmbUNvbG9yUmVuZGVyVGFyZ2V0c0RpcnR5
W2NvbG9ySW5kZXhdKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAobUNhY2hlZERlcHRoU3Rl
bmNpbFJlbmRlclRhcmdldCkKLSAgICB7Ci0gICAgICAgIG1DYWNoZWREZXB0aFN0ZW5jaWxSZW5k
ZXJUYXJnZXQtPnJlbW92ZURpcnR5Q2FsbGJhY2soJm1EZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXRE
aXJ0eSk7Ci0gICAgfQogfQogCi1nbDo6RXJyb3IgRnJhbWVidWZmZXIxMTo6aW52YWxpZGF0ZVN3
aXp6bGVzKCkgY29uc3QKK2dsOjpFcnJvciBGcmFtZWJ1ZmZlcjExOjptYXJrQXR0YWNobWVudHNE
aXJ0eSgpIGNvbnN0CiB7Ci0gICAgZm9yIChjb25zdCBhdXRvICZjb2xvckF0dGFjaG1lbnQgOiBt
RGF0YS5nZXRDb2xvckF0dGFjaG1lbnRzKCkpCisgICAgZm9yIChjb25zdCBhdXRvICZjb2xvckF0
dGFjaG1lbnQgOiBtU3RhdGUuZ2V0Q29sb3JBdHRhY2htZW50cygpKQogICAgIHsKICAgICAgICAg
aWYgKGNvbG9yQXR0YWNobWVudC5pc0F0dGFjaGVkKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGdsOjpFcnJvciBlcnJvciA9IEludmFsaWRhdGVBdHRhY2htZW50U3dpenpsZXMoJmNvbG9yQXR0
YWNobWVudCk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIEFOR0xFX1RSWShNYXJrQXR0YWNobWVudHNEaXJ0eSgmY29sb3JBdHRhY2htZW50KSk7CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBJbnZhbGlkYXRlQXR0YWNo
bWVudFN3aXp6bGVzKG1EYXRhLmdldERlcHRoQXR0YWNobWVudCgpKTsKLSAgICBpZiAoZXJyb3Iu
aXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KLQotICAgIGVy
cm9yID0gSW52YWxpZGF0ZUF0dGFjaG1lbnRTd2l6emxlcyhtRGF0YS5nZXRTdGVuY2lsQXR0YWNo
bWVudCgpKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkoTWFya0F0dGFjaG1lbnRzRGlydHkobVN0YXRl
LmdldERlcHRoQXR0YWNobWVudCgpKSk7CisgICAgQU5HTEVfVFJZKE1hcmtBdHRhY2htZW50c0Rp
cnR5KG1TdGF0ZS5nZXRTdGVuY2lsQXR0YWNobWVudCgpKSk7CiAKLSAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVy
cm9yIEZyYW1lYnVmZmVyMTE6OmNsZWFyKGNvbnN0IGdsOjpEYXRhICZkYXRhLCBjb25zdCBDbGVh
clBhcmFtZXRlcnMgJmNsZWFyUGFyYW1zKQorZ2w6OkVycm9yIEZyYW1lYnVmZmVyMTE6OmNsZWFy
SW1wbChDb250ZXh0SW1wbCAqY29udGV4dCwgY29uc3QgQ2xlYXJQYXJhbWV0ZXJzICZjbGVhclBh
cmFtcykKIHsKICAgICBDbGVhcjExICpjbGVhcmVyID0gbVJlbmRlcmVyLT5nZXRDbGVhcmVyKCk7
Ci0gICAgZ2w6OkVycm9yIGVycm9yKEdMX05PX0VSUk9SKTsKIAotICAgIGNvbnN0IGdsOjpGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnQgKmNvbG9yQXR0YWNobWVudCA9IG1EYXRhLmdldEZpcnN0Q29sb3JB
dHRhY2htZW50KCk7CisgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqY29sb3JB
dHRhY2htZW50ID0gbVN0YXRlLmdldEZpcnN0Q29sb3JBdHRhY2htZW50KCk7CiAgICAgaWYgKGNs
ZWFyUGFyYW1zLnNjaXNzb3JFbmFibGVkID09IHRydWUgJiYgY29sb3JBdHRhY2htZW50ICE9IG51
bGxwdHIgJiYKICAgICAgICAgVXNlUHJlc2VudFBhdGhGYXN0KG1SZW5kZXJlciwgY29sb3JBdHRh
Y2htZW50KSkKICAgICB7CkBAIC0xNjEsMjUgKzEyMSwxNiBAQCBnbDo6RXJyb3IgRnJhbWVidWZm
ZXIxMTo6Y2xlYXIoY29uc3QgZ2w6CiAgICAgICAgIHByZXNlbnRQYXRoRmFzdENsZWFyUGFyYW1z
LnNjaXNzb3IueSAgICAgICA9IGZyYW1lYnVmZmVyU2l6ZS5oZWlnaHQgLQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZW50UGF0aEZhc3RDbGVhclBh
cmFtcy5zY2lzc29yLnkgLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcmVzZW50UGF0aEZhc3RDbGVhclBhcmFtcy5zY2lzc29yLmhlaWdodDsKLSAgICAg
ICAgZXJyb3IgPSBjbGVhcmVyLT5jbGVhckZyYW1lYnVmZmVyKHByZXNlbnRQYXRoRmFzdENsZWFy
UGFyYW1zLCBtRGF0YSk7CisgICAgICAgIEFOR0xFX1RSWShjbGVhcmVyLT5jbGVhckZyYW1lYnVm
ZmVyKHByZXNlbnRQYXRoRmFzdENsZWFyUGFyYW1zLCBtU3RhdGUpKTsKICAgICB9CiAgICAgZWxz
ZQogICAgIHsKLSAgICAgICAgZXJyb3IgPSBjbGVhcmVyLT5jbGVhckZyYW1lYnVmZmVyKGNsZWFy
UGFyYW1zLCBtRGF0YSk7CisgICAgICAgIEFOR0xFX1RSWShjbGVhcmVyLT5jbGVhckZyYW1lYnVm
ZmVyKGNsZWFyUGFyYW1zLCBtU3RhdGUpKTsKICAgICB9CiAKLSAgICBpZiAoZXJyb3IuaXNFcnJv
cigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlko
bWFya0F0dGFjaG1lbnRzRGlydHkoKSk7CiAKLSAgICBlcnJvciA9IGludmFsaWRhdGVTd2l6emxl
cygpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJy
b3I7Ci0gICAgfQotCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0
dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBGcmFtZWJ1ZmZlcjExOjppbnZhbGlk
YXRlKHNpemVfdCBjb3VudCwgY29uc3QgR0xlbnVtICphdHRhY2htZW50cykKQEAgLTE5OSw3ICsx
NTAsNyBAQCBnbDo6RXJyb3IgRnJhbWVidWZmZXIxMTo6aW52YWxpZGF0ZUJhc2UoCiAgICAgaWYg
KCFkZXZpY2VDb250ZXh0MSkKICAgICB7CiAgICAgICAgIC8vIERpc2NhcmRWaWV3KCkgaXMgb25s
eSBzdXBwb3J0ZWQgb24gSUQzRDExRGV2aWNlQ29udGV4dDEKLSAgICAgICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogICAgIH0K
IAogICAgIGJvb2wgZm91bmREZXB0aCA9IGZhbHNlOwpAQCAtMjI4LDM3ICsxNzksMTAgQEAgZ2w6
OkVycm9yIEZyYW1lYnVmZmVyMTE6OmludmFsaWRhdGVCYXNlKAogICAgICAgICAgICAgICAgIEFT
U0VSVCgoYXR0YWNobWVudHNbaV0gPj0gR0xfQ09MT1JfQVRUQUNITUVOVDAgJiYgYXR0YWNobWVu
dHNbaV0gPD0gR0xfQ09MT1JfQVRUQUNITUVOVDE1KSB8fAogICAgICAgICAgICAgICAgICAgICAg
ICAoYXR0YWNobWVudHNbaV0gPT0gR0xfQ09MT1IpKTsKIAotICAgICAgICAgICAgICAgIFJlbmRl
clRhcmdldDExICpyZW5kZXJUYXJnZXQgPSBudWxscHRyOwotICAgICAgICAgICAgICAgIElEM0Qx
MVZpZXcgKmNvbG9yVmlldyA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgZ2w6OkVycm9yIGVy
cm9yKEdMX05PX0VSUk9SKTsKLSAgICAgICAgICAgICAgICBzaXplX3QgY29sb3JBdHRhY2htZW50
SUQgPSAwOwotCi0gICAgICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnRzW2ldID09IEdMX0NPTE9S
KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgY29sb3JBdHRhY2htZW50
SUQgPSAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBjb2xvckF0dGFjaG1lbnRJRCA9IGF0dGFj
aG1lbnRzW2ldIC0gR0xfQ09MT1JfQVRUQUNITUVOVDA7Ci0gICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgaWYgKG1EYXRhLmdldENvbG9yQXR0YWNobWVudChzdGF0aWNfY2FzdDx1
bnNpZ25lZCBpbnQ+KGNvbG9yQXR0YWNobWVudElEKSkpCi0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICBlcnJvciA9IG1EYXRhLmdldENvbG9yQXR0YWNobWVudChzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBpbnQ+KGNvbG9yQXR0YWNobWVudElEKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLT5nZXRSZW5kZXJUYXJnZXQoJnJlbmRlclRhcmdldCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGNvbG9yVmlldyA9IHJlbmRlclRhcmdldC0+Z2V0
UmVuZGVyVGFyZ2V0VmlldygpOwotCi0gICAgICAgICAgICAgICAgICAgIGlmIChjb2xvclZpZXcg
IT0gbnVsbHB0cikKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAg
ICAgZGV2aWNlQ29udGV4dDEtPkRpc2NhcmRWaWV3KGNvbG9yVmlldyk7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KKyAgICAgICAgICAgICAgICBzaXplX3QgY29s
b3JJbmRleCA9CisgICAgICAgICAgICAgICAgICAgIChhdHRhY2htZW50c1tpXSA9PSBHTF9DT0xP
UiA/IDB1IDogKGF0dGFjaG1lbnRzW2ldIC0gR0xfQ09MT1JfQVRUQUNITUVOVDApKTsKKyAgICAg
ICAgICAgICAgICBhdXRvIGNvbG9yQXR0YWNobWVudCA9IG1TdGF0ZS5nZXRDb2xvckF0dGFjaG1l
bnQoY29sb3JJbmRleCk7CisgICAgICAgICAgICAgICAgQU5HTEVfVFJZKGludmFsaWRhdGVBdHRh
Y2htZW50KGNvbG9yQXR0YWNobWVudCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CkBAIC0yNzUsNyArMTk5LDcgQEAgZ2w6OkVycm9yIEZyYW1lYnVm
ZmVyMTE6OmludmFsaWRhdGVCYXNlKAogICAgICAgICBkaXNjYXJkRGVwdGggPSBmb3VuZERlcHRo
OwogCiAgICAgICAgIC8vIERvbid0IGJvdGhlciBkaXNjYXJkaW5nIHRoZSBzdGVuY2lsIGJ1ZmZl
ciBpZiB0aGUgZGVwdGggYnVmZmVyIHdpbGwgYWxyZWFkeSBkbyBpdAotICAgICAgICBkaXNjYXJk
U3RlbmNpbCA9IGZvdW5kU3RlbmNpbCAmJiAoIWRpc2NhcmREZXB0aCB8fCBtRGF0YS5nZXREZXB0
aEF0dGFjaG1lbnQoKSA9PSBudWxscHRyKTsKKyAgICAgICAgZGlzY2FyZFN0ZW5jaWwgPSBmb3Vu
ZFN0ZW5jaWwgJiYgKCFkaXNjYXJkRGVwdGggfHwgbVN0YXRlLmdldERlcHRoQXR0YWNobWVudCgp
ID09IG51bGxwdHIpOwogICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtMjgzLDU3ICsyMDcsNDYg
QEAgZ2w6OkVycm9yIEZyYW1lYnVmZmVyMTE6OmludmFsaWRhdGVCYXNlKAogICAgICAgICAvLyBh
dHRhY2htZW50cyBsaXN0IGRvZXMgbm90IGluY2x1ZGUgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5U
IG9yIGJvdGggREVQVEhfQVRUQUNITUVOVCBhbmQKICAgICAgICAgLy8gU1RFTkNJTF9BVFRBQ0hN
RU5ULCB0aGVuIG9ubHkgdGhlIHNwZWNpZmllZCBwb3J0aW9uIG9mIGV2ZXJ5IHBpeGVsIGluIHRo
ZSBzdWJyZWdpb24gb2YgcGl4ZWxzCiAgICAgICAgIC8vIG9mIHRoZSBERVBUSF9TVEVOQ0lMIGJ1
ZmZlciBtYXkgYmUgaW52YWxpZGF0ZWQsIGFuZCB0aGUgb3RoZXIgcG9ydGlvbiBtdXN0IGJlIHBy
ZXNlcnZlZC4KLSAgICAgICAgZGlzY2FyZERlcHRoID0gKGZvdW5kRGVwdGggJiYgZm91bmRTdGVu
Y2lsKSB8fCAoZm91bmREZXB0aCAmJiAobURhdGEuZ2V0U3RlbmNpbEF0dGFjaG1lbnQoKSA9PSBu
dWxscHRyKSk7Ci0gICAgICAgIGRpc2NhcmRTdGVuY2lsID0gKGZvdW5kU3RlbmNpbCAmJiAobURh
dGEuZ2V0RGVwdGhBdHRhY2htZW50KCkgPT0gbnVsbHB0cikpOworICAgICAgICBkaXNjYXJkRGVw
dGggPSAoZm91bmREZXB0aCAmJiBmb3VuZFN0ZW5jaWwpIHx8CisgICAgICAgICAgICAgICAgICAg
ICAgIChmb3VuZERlcHRoICYmIChtU3RhdGUuZ2V0U3RlbmNpbEF0dGFjaG1lbnQoKSA9PSBudWxs
cHRyKSk7CisgICAgICAgIGRpc2NhcmRTdGVuY2lsID0gKGZvdW5kU3RlbmNpbCAmJiAobVN0YXRl
LmdldERlcHRoQXR0YWNobWVudCgpID09IG51bGxwdHIpKTsKICAgICB9CiAKLSAgICBpZiAoZGlz
Y2FyZERlcHRoICYmIG1EYXRhLmdldERlcHRoQXR0YWNobWVudCgpKQorICAgIGlmIChkaXNjYXJk
RGVwdGggJiYgbVN0YXRlLmdldERlcHRoQXR0YWNobWVudCgpKQogICAgIHsKLSAgICAgICAgUmVu
ZGVyVGFyZ2V0MTEgKnJlbmRlclRhcmdldCA9IG51bGxwdHI7Ci0gICAgICAgIElEM0QxMVZpZXcg
KmRlcHRoVmlldyA9IG51bGxwdHI7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvcihHTF9OT19FUlJP
Uik7Ci0KLSAgICAgICAgZXJyb3IgPSBtRGF0YS5nZXREZXB0aEF0dGFjaG1lbnQoKS0+Z2V0UmVu
ZGVyVGFyZ2V0KCZyZW5kZXJUYXJnZXQpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KLQotICAgICAg
ICBkZXB0aFZpZXcgPSByZW5kZXJUYXJnZXQtPmdldERlcHRoU3RlbmNpbFZpZXcoKTsKLQotICAg
ICAgICBpZiAoZGVwdGhWaWV3ICE9IG51bGxwdHIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRl
dmljZUNvbnRleHQxLT5EaXNjYXJkVmlldyhkZXB0aFZpZXcpOwotICAgICAgICB9CisgICAgICAg
IEFOR0xFX1RSWShpbnZhbGlkYXRlQXR0YWNobWVudChtU3RhdGUuZ2V0RGVwdGhBdHRhY2htZW50
KCkpKTsKICAgICB9CiAKLSAgICBpZiAoZGlzY2FyZFN0ZW5jaWwgJiYgbURhdGEuZ2V0U3RlbmNp
bEF0dGFjaG1lbnQoKSkKKyAgICBpZiAoZGlzY2FyZFN0ZW5jaWwgJiYgbVN0YXRlLmdldFN0ZW5j
aWxBdHRhY2htZW50KCkpCiAgICAgewotICAgICAgICBSZW5kZXJUYXJnZXQxMSAqcmVuZGVyVGFy
Z2V0ID0gbnVsbHB0cjsKLSAgICAgICAgSUQzRDExVmlldyAqc3RlbmNpbFZpZXcgPSBudWxscHRy
OwotICAgICAgICBnbDo6RXJyb3IgZXJyb3IoR0xfTk9fRVJST1IpOwotCi0gICAgICAgIGVycm9y
ID0gbURhdGEuZ2V0U3RlbmNpbEF0dGFjaG1lbnQoKS0+Z2V0UmVuZGVyVGFyZ2V0KCZyZW5kZXJU
YXJnZXQpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGVuY2lsVmlldyA9IHJl
bmRlclRhcmdldC0+Z2V0RGVwdGhTdGVuY2lsVmlldygpOwotCi0gICAgICAgIGlmIChzdGVuY2ls
VmlldyAhPSBudWxscHRyKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZXZpY2VDb250ZXh0MS0+
RGlzY2FyZFZpZXcoc3RlbmNpbFZpZXcpOwotICAgICAgICB9CisgICAgICAgIEFOR0xFX1RSWShp
bnZhbGlkYXRlQXR0YWNobWVudChtU3RhdGUuZ2V0U3RlbmNpbEF0dGFjaG1lbnQoKSkpOwogICAg
IH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgRnJhbWVidWZmZXIxMTo6aW52YWxpZGF0ZVN1Yihz
aXplX3QsIGNvbnN0IEdMZW51bSAqLCBjb25zdCBnbDo6UmVjdGFuZ2xlICYpCiB7CiAgICAgLy8g
QSBuby1vcCBpbXBsZW1lbnRhdGlvbiBjb25mb3JtcyB0byB0aGUgc3BlYywgc28gZG9uJ3QgY2Fs
bCBVTklNUExFTUVOVEVEKCkKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAg
ICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKK30KKworZ2w6OkVycm9yIEZyYW1lYnVmZmVyMTE6Omlu
dmFsaWRhdGVBdHRhY2htZW50KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmF0dGFj
aG1lbnQpIGNvbnN0Cit7CisgICAgSUQzRDExRGV2aWNlQ29udGV4dDEgKmRldmljZUNvbnRleHQx
ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0MUlmU3VwcG9ydGVkKCk7CisgICAgQVNTRVJU
KGRldmljZUNvbnRleHQxKTsKKyAgICBBU1NFUlQoYXR0YWNobWVudCAmJiBhdHRhY2htZW50LT5p
c0F0dGFjaGVkKCkpOworCisgICAgUmVuZGVyVGFyZ2V0MTEgKnJlbmRlclRhcmdldCA9IG51bGxw
dHI7CisgICAgQU5HTEVfVFJZKGF0dGFjaG1lbnQtPmdldFJlbmRlclRhcmdldCgmcmVuZGVyVGFy
Z2V0KSk7CisgICAgSUQzRDExVmlldyAqdmlldyA9IHJlbmRlclRhcmdldC0+Z2V0UmVuZGVyVGFy
Z2V0VmlldygpOworCisgICAgaWYgKHZpZXcgIT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIGRl
dmljZUNvbnRleHQxLT5EaXNjYXJkVmlldyh2aWV3KTsKKyAgICB9CisKKyAgICByZXR1cm4gZ2w6
Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIEZyYW1lYnVmZmVyMTE6OnJlYWRQaXhlbHNJbXBs
KGNvbnN0IGdsOjpSZWN0YW5nbGUgJmFyZWEsCkBAIC0zNDMsMTkgKzI1NiwxMiBAQCBnbDo6RXJy
b3IgRnJhbWVidWZmZXIxMTo6cmVhZFBpeGVsc0ltcGwoCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsUGFja1N0YXRlICZwYWNrLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnBpeGVscykgY29uc3QK
IHsKLSAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICpyZWFkQXR0YWNobWVudCA9
IG1EYXRhLmdldFJlYWRBdHRhY2htZW50KCk7CisgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0
YWNobWVudCAqcmVhZEF0dGFjaG1lbnQgPSBtU3RhdGUuZ2V0UmVhZEF0dGFjaG1lbnQoKTsKICAg
ICBBU1NFUlQocmVhZEF0dGFjaG1lbnQpOwogCiAgICAgZ2w6OkJ1ZmZlciAqcGFja0J1ZmZlciA9
IHBhY2sucGl4ZWxCdWZmZXIuZ2V0KCk7CiAgICAgaWYgKHBhY2tCdWZmZXIgIT0gbnVsbHB0cikK
ICAgICB7Ci0gICAgICAgIGlmIChwYWNrLnJvd0xlbmd0aCAhPSAwIHx8IHBhY2suc2tpcFJvd3Mg
IT0gMCB8fCBwYWNrLnNraXBQaXhlbHMgIT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgVU5J
TVBMRU1FTlRFRCgpOwotICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVuaW1wbGVtZW50ZWQgcGl4
ZWwgc3RvcmUgcGFyYW1ldGVycyBpbiByZWFkUGl4ZWxzSW1wbCIpOwotICAgICAgICB9Ci0KICAg
ICAgICAgQnVmZmVyMTEgKnBhY2tCdWZmZXJTdG9yYWdlID0gR2V0SW1wbEFzPEJ1ZmZlcjExPihw
YWNrQnVmZmVyKTsKICAgICAgICAgUGFja1BpeGVsc1BhcmFtcyBwYWNrUGFyYW1zKGFyZWEsIGZv
cm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0x1aW50PihvdXRwdXRQaXRjaCksIHBhY2ssCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHB0cmRpZmZf
dD4ocGl4ZWxzKSk7CkBAIC0zNjcsOSArMjczLDE0IEBAIGdsOjpFcnJvciBGcmFtZWJ1ZmZlcjEx
OjpyZWFkUGl4ZWxzSW1wbCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8R0x1aW50PihvdXRwdXRQaXRjaCksIHBhY2ssIHBpeGVscyk7CiB9CiAK
LWdsOjpFcnJvciBGcmFtZWJ1ZmZlcjExOjpibGl0KGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJj
ZUFyZWEsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRlc3RBcmVhLCBjb25zdCBnbDo6UmVjdGFuZ2xl
ICpzY2lzc29yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBibGl0UmVuZGVy
VGFyZ2V0LCBib29sIGJsaXREZXB0aCwgYm9vbCBibGl0U3RlbmNpbCwgR0xlbnVtIGZpbHRlciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291
cmNlRnJhbWVidWZmZXIpCitnbDo6RXJyb3IgRnJhbWVidWZmZXIxMTo6YmxpdEltcGwoY29uc3Qg
Z2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZkZXN0QXJlYSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICpzY2lzc29yLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYmxpdFJlbmRlclRhcmdldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGJsaXREZXB0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGJsaXRTdGVuY2lsLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBmaWx0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2VGcmFtZWJ1ZmZlcikKIHsKICAgICBp
ZiAoYmxpdFJlbmRlclRhcmdldCkKICAgICB7CkBAIC0zNzcsMTUgKzI4OCwxMSBAQCBnbDo6RXJy
b3IgRnJhbWVidWZmZXIxMTo6YmxpdChjb25zdCBnbDo6CiAgICAgICAgIEFTU0VSVChyZWFkQnVm
ZmVyKTsKIAogICAgICAgICBSZW5kZXJUYXJnZXREM0QgKnJlYWRSZW5kZXJUYXJnZXQgPSBudWxs
cHRyOwotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSByZWFkQnVmZmVyLT5nZXRSZW5kZXJUYXJn
ZXQoJnJlYWRSZW5kZXJUYXJnZXQpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5H
TEVfVFJZKHJlYWRCdWZmZXItPmdldFJlbmRlclRhcmdldCgmcmVhZFJlbmRlclRhcmdldCkpOwog
ICAgICAgICBBU1NFUlQocmVhZFJlbmRlclRhcmdldCk7CiAKLSAgICAgICAgY29uc3QgYXV0byAm
Y29sb3JBdHRhY2htZW50cyA9IG1EYXRhLmdldENvbG9yQXR0YWNobWVudHMoKTsKLSAgICAgICAg
Y29uc3QgYXV0byAmZHJhd0J1ZmZlclN0YXRlcyA9IG1EYXRhLmdldERyYXdCdWZmZXJTdGF0ZXMo
KTsKKyAgICAgICAgY29uc3QgYXV0byAmY29sb3JBdHRhY2htZW50cyA9IG1TdGF0ZS5nZXRDb2xv
ckF0dGFjaG1lbnRzKCk7CisgICAgICAgIGNvbnN0IGF1dG8gJmRyYXdCdWZmZXJTdGF0ZXMgPSBt
U3RhdGUuZ2V0RHJhd0J1ZmZlclN0YXRlcygpOwogCiAgICAgICAgIGZvciAoc2l6ZV90IGNvbG9y
QXR0YWNobWVudCA9IDA7IGNvbG9yQXR0YWNobWVudCA8IGNvbG9yQXR0YWNobWVudHMuc2l6ZSgp
OyBjb2xvckF0dGFjaG1lbnQrKykKICAgICAgICAgewpAQCAtMzk1LDExICszMDIsNyBAQCBnbDo6
RXJyb3IgRnJhbWVidWZmZXIxMTo6YmxpdChjb25zdCBnbDo6CiAgICAgICAgICAgICAgICAgZHJh
d0J1ZmZlclN0YXRlc1tjb2xvckF0dGFjaG1lbnRdICE9IEdMX05PTkUpCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgUmVuZGVyVGFyZ2V0RDNEICpkcmF3UmVuZGVyVGFyZ2V0ID0gbnVs
bHB0cjsKLSAgICAgICAgICAgICAgICBlcnJvciA9IGRyYXdCdWZmZXIuZ2V0UmVuZGVyVGFyZ2V0
KCZkcmF3UmVuZGVyVGFyZ2V0KTsKLSAgICAgICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigp
KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwot
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBBTkdMRV9UUlkoZHJhd0J1ZmZlci5n
ZXRSZW5kZXJUYXJnZXQoJmRyYXdSZW5kZXJUYXJnZXQpKTsKICAgICAgICAgICAgICAgICBBU1NF
UlQoZHJhd1JlbmRlclRhcmdldCk7CiAKICAgICAgICAgICAgICAgICBjb25zdCBib29sIGludmVy
dENvbG9yU291cmNlICAgPSBVc2VQcmVzZW50UGF0aEZhc3QobVJlbmRlcmVyLCByZWFkQnVmZmVy
KTsKQEAgLTQyMCwxMyArMzIzLDkgQEAgZ2w6OkVycm9yIEZyYW1lYnVmZmVyMTE6OmJsaXQoY29u
c3QgZ2w6OgogICAgICAgICAgICAgICAgICAgICBhY3R1YWxEZXN0QXJlYS5oZWlnaHQgICAgICAg
ICAgICAgID0gLWRlc3RBcmVhLmhlaWdodDsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgICAgICBlcnJvciA9IG1SZW5kZXJlci0+YmxpdFJlbmRlcmJ1ZmZlclJlY3QoYWN0dWFsU291
cmNlQXJlYSwgYWN0dWFsRGVzdEFyZWEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRSZW5kZXJUYXJnZXQsIGRyYXdSZW5kZXJUYXJn
ZXQsIGZpbHRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2Npc3NvciwgYmxpdFJlbmRlclRhcmdldCwgZmFsc2UsIGZhbHNlKTsKLSAg
ICAgICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBBTkdMRV9UUlkobVJlbmRlcmVyLT5ibGl0UmVuZGVyYnVmZmVyUmVjdCgKKyAg
ICAgICAgICAgICAgICAgICAgYWN0dWFsU291cmNlQXJlYSwgYWN0dWFsRGVzdEFyZWEsIHJlYWRS
ZW5kZXJUYXJnZXQsIGRyYXdSZW5kZXJUYXJnZXQsIGZpbHRlciwKKyAgICAgICAgICAgICAgICAg
ICAgc2Npc3NvciwgYmxpdFJlbmRlclRhcmdldCwgZmFsc2UsIGZhbHNlKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9CkBAIC00MzcsNTggKzMzNiw0MiBAQCBnbDo6RXJyb3IgRnJh
bWVidWZmZXIxMTo6YmxpdChjb25zdCBnbDo6CiAgICAgICAgIEFTU0VSVChyZWFkQnVmZmVyKTsK
IAogICAgICAgICBSZW5kZXJUYXJnZXREM0QgKnJlYWRSZW5kZXJUYXJnZXQgPSBudWxscHRyOwot
ICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSByZWFkQnVmZmVyLT5nZXRSZW5kZXJUYXJnZXQoJnJl
YWRSZW5kZXJUYXJnZXQpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZ
KHJlYWRCdWZmZXItPmdldFJlbmRlclRhcmdldCgmcmVhZFJlbmRlclRhcmdldCkpOwogICAgICAg
ICBBU1NFUlQocmVhZFJlbmRlclRhcmdldCk7CiAKLSAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVm
ZmVyQXR0YWNobWVudCAqZHJhd0J1ZmZlciA9IG1EYXRhLmdldERlcHRoT3JTdGVuY2lsQXR0YWNo
bWVudCgpOworICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICpkcmF3QnVm
ZmVyID0gbVN0YXRlLmdldERlcHRoT3JTdGVuY2lsQXR0YWNobWVudCgpOwogICAgICAgICBBU1NF
UlQoZHJhd0J1ZmZlcik7CiAKICAgICAgICAgUmVuZGVyVGFyZ2V0RDNEICpkcmF3UmVuZGVyVGFy
Z2V0ID0gbnVsbHB0cjsKLSAgICAgICAgZXJyb3IgPSBkcmF3QnVmZmVyLT5nZXRSZW5kZXJUYXJn
ZXQoJmRyYXdSZW5kZXJUYXJnZXQpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5H
TEVfVFJZKGRyYXdCdWZmZXItPmdldFJlbmRlclRhcmdldCgmZHJhd1JlbmRlclRhcmdldCkpOwog
ICAgICAgICBBU1NFUlQoZHJhd1JlbmRlclRhcmdldCk7CiAKLSAgICAgICAgZXJyb3IgPSBtUmVu
ZGVyZXItPmJsaXRSZW5kZXJidWZmZXJSZWN0KHNvdXJjZUFyZWEsIGRlc3RBcmVhLCByZWFkUmVu
ZGVyVGFyZ2V0LCBkcmF3UmVuZGVyVGFyZ2V0LCBmaWx0ZXIsIHNjaXNzb3IsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgYmxpdERlcHRoLCBi
bGl0U3RlbmNpbCk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGdsOjpFcnJv
ciBlcnJvciA9IGludmFsaWRhdGVTd2l6emxlcygpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
Ci0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgIEFOR0xFX1RSWShtUmVuZGVy
ZXItPmJsaXRSZW5kZXJidWZmZXJSZWN0KHNvdXJjZUFyZWEsIGRlc3RBcmVhLCByZWFkUmVuZGVy
VGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkcmF3UmVuZGVyVGFyZ2V0LCBmaWx0ZXIsIHNjaXNzb3IsIGZhbHNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGl0RGVwdGgsIGJsaXRTdGVu
Y2lsKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAg
QU5HTEVfVFJZKG1hcmtBdHRhY2htZW50c0RpcnR5KCkpOworICAgIHJldHVybiBnbDo6Tm9FcnJv
cigpOwogfQogCiBHTGVudW0gRnJhbWVidWZmZXIxMTo6Z2V0UmVuZGVyVGFyZ2V0SW1wbGVtZW50
YXRpb25Gb3JtYXQoUmVuZGVyVGFyZ2V0RDNEICpyZW5kZXJUYXJnZXQpIGNvbnN0CiB7CiAgICAg
UmVuZGVyVGFyZ2V0MTEgKnJlbmRlclRhcmdldDExID0gR2V0QXM8UmVuZGVyVGFyZ2V0MTE+KHJl
bmRlclRhcmdldCk7Ci0gICAgcmV0dXJuIGQzZDExOjpHZXRBTkdMRUZvcm1hdFNldChyZW5kZXJU
YXJnZXQxMS0+Z2V0QU5HTEVGb3JtYXQoKSkuZ2xJbnRlcm5hbEZvcm1hdDsKKyAgICByZXR1cm4g
cmVuZGVyVGFyZ2V0MTEtPmdldEZvcm1hdFNldCgpLmZvcm1hdC5mYm9JbXBsZW1lbnRhdGlvbklu
dGVybmFsRm9ybWF0OwogfQogCiB2b2lkIEZyYW1lYnVmZmVyMTE6OnVwZGF0ZUNvbG9yUmVuZGVy
VGFyZ2V0KHNpemVfdCBjb2xvckluZGV4KQogewotICAgIFVwZGF0ZUNhY2hlZFJlbmRlclRhcmdl
dChtRGF0YS5nZXRDb2xvckF0dGFjaG1lbnQoY29sb3JJbmRleCksCisgICAgVXBkYXRlQ2FjaGVk
UmVuZGVyVGFyZ2V0KG1TdGF0ZS5nZXRDb2xvckF0dGFjaG1lbnQoY29sb3JJbmRleCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1DYWNoZWRDb2xvclJlbmRlclRhcmdldHNbY29sb3JJ
bmRleF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Db2xvclJlbmRlclRhcmdldHNE
aXJ0eVtjb2xvckluZGV4XSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtQ29sb3JS
ZW5kZXJUYXJnZXRzRGlydHlbY29sb3JJbmRleF0pOwogfQogCiB2b2lkIEZyYW1lYnVmZmVyMTE6
OnVwZGF0ZURlcHRoU3RlbmNpbFJlbmRlclRhcmdldCgpCiB7Ci0gICAgVXBkYXRlQ2FjaGVkUmVu
ZGVyVGFyZ2V0KG1EYXRhLmdldERlcHRoT3JTdGVuY2lsQXR0YWNobWVudCgpLCBtQ2FjaGVkRGVw
dGhTdGVuY2lsUmVuZGVyVGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRGVw
dGhTdGVuY2lsUmVuZGVyVGFyZ2V0RGlydHkpOworICAgIFVwZGF0ZUNhY2hlZFJlbmRlclRhcmdl
dChtU3RhdGUuZ2V0RGVwdGhPclN0ZW5jaWxBdHRhY2htZW50KCksIG1DYWNoZWREZXB0aFN0ZW5j
aWxSZW5kZXJUYXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtRGVwdGhTdGVu
Y2lsUmVuZGVyVGFyZ2V0RGlydHkpOwogfQogCiB2b2lkIEZyYW1lYnVmZmVyMTE6OnN5bmNTdGF0
ZShjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRpcnR5Qml0cyAmZGlydHlCaXRzKQpAQCAtNDk4LDcg
KzM4MSw3IEBAIHZvaWQgRnJhbWVidWZmZXIxMTo6c3luY1N0YXRlKGNvbnN0IGdsOjoKICAgICBj
b25zdCBhdXRvICZtZXJnZWREaXJ0eUJpdHMgPSBkaXJ0eUJpdHMgfCBtSW50ZXJuYWxEaXJ0eUJp
dHM7CiAgICAgbUludGVybmFsRGlydHlCaXRzLnJlc2V0KCk7CiAKLSAgICBmb3IgKGF1dG8gZGly
dHlCaXQgOiBhbmdsZTo6SXRlcmF0ZUJpdFNldChtZXJnZWREaXJ0eUJpdHMpKQorICAgIGZvciAo
YXV0byBkaXJ0eUJpdCA6IEl0ZXJhdGVCaXRTZXQobWVyZ2VkRGlydHlCaXRzKSkKICAgICB7CiAg
ICAgICAgIHN3aXRjaCAoZGlydHlCaXQpCiAgICAgICAgIHsKQEAgLTUyNywxNyArNDEwLDE5IEBA
IHZvaWQgRnJhbWVidWZmZXIxMTo6c3luY1N0YXRlKGNvbnN0IGdsOjoKICAgICBGcmFtZWJ1ZmZl
ckQzRDo6c3luY1N0YXRlKGRpcnR5Qml0cyk7CiB9CiAKLXZvaWQgRnJhbWVidWZmZXIxMTo6bWFy
a0NvbG9yUmVuZGVyVGFyZ2V0RGlydHkoc2l6ZV90IGNvbG9ySW5kZXgpCi17Ci0gICAgbUludGVy
bmFsRGlydHlCaXRzLnNldChnbDo6RnJhbWVidWZmZXI6OkRJUlRZX0JJVF9DT0xPUl9BVFRBQ0hN
RU5UXzAgKyBjb2xvckluZGV4KTsKLSAgICBtQ2FjaGVkQ29sb3JSZW5kZXJUYXJnZXRzW2NvbG9y
SW5kZXhdID0gbnVsbHB0cjsKLX0KLQotdm9pZCBGcmFtZWJ1ZmZlcjExOjptYXJrRGVwdGhTdGVu
Y2lsUmVuZGVyVGFyZ2V0RGlydHkoKQordm9pZCBGcmFtZWJ1ZmZlcjExOjpzaWduYWwoU2lnbmFs
VG9rZW4gdG9rZW4pCiB7Ci0gICAgLy8gU3RlbmNpbCBpcyByZWR1bmRhbnQgaW4gdGhpcyBjYXNl
LgotICAgIG1JbnRlcm5hbERpcnR5Qml0cy5zZXQoZ2w6OkZyYW1lYnVmZmVyOjpESVJUWV9CSVRf
REVQVEhfQVRUQUNITUVOVCk7Ci0gICAgbUNhY2hlZERlcHRoU3RlbmNpbFJlbmRlclRhcmdldCA9
IG51bGxwdHI7CisgICAgaWYgKHRva2VuID09IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfRlJBTUVC
VUZGRVJfQVRUQUNITUVOVFMpCisgICAgeworICAgICAgICAvLyBTdGVuY2lsIGlzIHJlZHVuZGFu
dCBpbiB0aGlzIGNhc2UuCisgICAgICAgIG1JbnRlcm5hbERpcnR5Qml0cy5zZXQoZ2w6OkZyYW1l
YnVmZmVyOjpESVJUWV9CSVRfREVQVEhfQVRUQUNITUVOVCk7CisgICAgICAgIG1DYWNoZWREZXB0
aFN0ZW5jaWxSZW5kZXJUYXJnZXQgPSBudWxscHRyOworICAgIH0KKyAgICBlbHNlCisgICAgewor
ICAgICAgICBtSW50ZXJuYWxEaXJ0eUJpdHMuc2V0KGdsOjpGcmFtZWJ1ZmZlcjo6RElSVFlfQklU
X0NPTE9SX0FUVEFDSE1FTlRfMCArIHRva2VuKTsKKyAgICAgICAgbUNhY2hlZENvbG9yUmVuZGVy
VGFyZ2V0c1t0b2tlbl0gPSBudWxscHRyOworICAgIH0KIH0KIAogYm9vbCBGcmFtZWJ1ZmZlcjEx
OjpoYXNBbnlJbnRlcm5hbERpcnR5Qml0KCkgY29uc3QKQEAgLTU0NSwxMCArNDMwLDkgQEAgYm9v
bCBGcmFtZWJ1ZmZlcjExOjpoYXNBbnlJbnRlcm5hbERpcnR5QgogICAgIHJldHVybiBtSW50ZXJu
YWxEaXJ0eUJpdHMuYW55KCk7CiB9CiAKLXZvaWQgRnJhbWVidWZmZXIxMTo6c3luY0ludGVybmFs
U3RhdGUoKSBjb25zdAordm9pZCBGcmFtZWJ1ZmZlcjExOjpzeW5jSW50ZXJuYWxTdGF0ZSgpCiB7
Ci0gICAgLy8gVE9ETyhqbWFkaWxsKTogQ2xlYW4gdXAgdGhpcyBoYWNrLgotICAgIGNvbnN0X2Nh
c3Q8RnJhbWVidWZmZXIxMSAqPih0aGlzKS0+c3luY1N0YXRlKGdsOjpGcmFtZWJ1ZmZlcjo6RGly
dHlCaXRzKCkpOworICAgIHN5bmNTdGF0ZShnbDo6RnJhbWVidWZmZXI6OkRpcnR5Qml0cygpKTsK
IH0KIAogfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ZyYW1lYnVmZmVyMTEuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL0ZyYW1lYnVmZmVyMTEuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9GcmFtZWJ1ZmZlcjExLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExLDE1ICsxMSwxNiBAQAogCiAjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZDNkL0ZyYW1lYnVmZmVyRDNELmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFfdXRpbHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9zaWdu
YWxfdXRpbHMuaCIKIAogbmFtZXNwYWNlIHJ4CiB7CiBjbGFzcyBSZW5kZXJlcjExOwogCi1jbGFz
cyBGcmFtZWJ1ZmZlcjExIDogcHVibGljIEZyYW1lYnVmZmVyRDNECitjbGFzcyBGcmFtZWJ1ZmZl
cjExIDogcHVibGljIEZyYW1lYnVmZmVyRDNELCBwdWJsaWMgYW5nbGU6OlNpZ25hbFJlY2VpdmVy
CiB7CiAgIHB1YmxpYzoKLSAgICBGcmFtZWJ1ZmZlcjExKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6
RGF0YSAmZGF0YSwgUmVuZGVyZXIxMSAqcmVuZGVyZXIpOworICAgIEZyYW1lYnVmZmVyMTEoY29u
c3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJmRhdGEsIFJlbmRlcmVyMTEgKnJlbmRlcmVyKTsKICAg
ICB2aXJ0dWFsIH5GcmFtZWJ1ZmZlcjExKCk7CiAKICAgICBnbDo6RXJyb3IgZGlzY2FyZChzaXpl
X3QgY291bnQsIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpIG92ZXJyaWRlOwpAQCAtMjcsNyAr
MjgsNyBAQCBjbGFzcyBGcmFtZWJ1ZmZlcjExIDogcHVibGljIEZyYW1lYnVmZmVyCiAgICAgZ2w6
OkVycm9yIGludmFsaWRhdGVTdWIoc2l6ZV90IGNvdW50LCBjb25zdCBHTGVudW0gKmF0dGFjaG1l
bnRzLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZhcmVhKSBvdmVycmlkZTsKIAogICAgIC8vIEludmFs
aWRhdGUgdGhlIGNhY2hlZCBzd2l6emxlcyBvZiBhbGwgYm91bmQgdGV4dHVyZSBhdHRhY2htZW50
cy4KLSAgICBnbDo6RXJyb3IgaW52YWxpZGF0ZVN3aXp6bGVzKCkgY29uc3Q7CisgICAgZ2w6OkVy
cm9yIG1hcmtBdHRhY2htZW50c0RpcnR5KCkgY29uc3Q7CiAKICAgICB2b2lkIHN5bmNTdGF0ZShj
b25zdCBnbDo6RnJhbWVidWZmZXI6OkRpcnR5Qml0cyAmZGlydHlCaXRzKSBvdmVycmlkZTsKIApA
QCAtNDAsMTUgKzQxLDEzIEBAIGNsYXNzIEZyYW1lYnVmZmVyMTEgOiBwdWJsaWMgRnJhbWVidWZm
ZXIKICAgICAgICAgcmV0dXJuIG1DYWNoZWREZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQ7CiAgICAg
fQogCi0gICAgdm9pZCBtYXJrQ29sb3JSZW5kZXJUYXJnZXREaXJ0eShzaXplX3QgY29sb3JJbmRl
eCk7Ci0gICAgdm9pZCBtYXJrRGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0RGlydHkoKTsKLQogICAg
IGJvb2wgaGFzQW55SW50ZXJuYWxEaXJ0eUJpdCgpIGNvbnN0OwotICAgIC8vIFRPRE8oam1hZGls
bCk6IG1ha2UgdGhpcyBub24tY29uc3QKLSAgICB2b2lkIHN5bmNJbnRlcm5hbFN0YXRlKCkgY29u
c3Q7CisgICAgdm9pZCBzeW5jSW50ZXJuYWxTdGF0ZSgpOworCisgICAgdm9pZCBzaWduYWwoYW5n
bGU6OlNpZ25hbFRva2VuIHRva2VuKSBvdmVycmlkZTsKIAogICBwcml2YXRlOgotICAgIGdsOjpF
cnJvciBjbGVhcihjb25zdCBnbDo6RGF0YSAmZGF0YSwgY29uc3QgQ2xlYXJQYXJhbWV0ZXJzICZj
bGVhclBhcmFtcykgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGNsZWFySW1wbChDb250ZXh0SW1w
bCAqY29udGV4dCwgY29uc3QgQ2xlYXJQYXJhbWV0ZXJzICZjbGVhclBhcmFtcykgb3ZlcnJpZGU7
CiAKICAgICBnbDo6RXJyb3IgcmVhZFBpeGVsc0ltcGwoY29uc3QgZ2w6OlJlY3RhbmdsZSAmYXJl
YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKQEAgLTU3LDEx
ICs1NiwxNyBAQCBjbGFzcyBGcmFtZWJ1ZmZlcjExIDogcHVibGljIEZyYW1lYnVmZmVyCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFBhY2tTdGF0ZSAmcGFjaywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcGl4ZWxzKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIGdsOjpFcnJvciBibGl0KGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFy
ZWEsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRlc3RBcmVhLCBjb25zdCBnbDo6UmVjdGFuZ2xlICpz
Y2lzc29yLAotICAgICAgICAgICAgICAgICAgIGJvb2wgYmxpdFJlbmRlclRhcmdldCwgYm9vbCBi
bGl0RGVwdGgsIGJvb2wgYmxpdFN0ZW5jaWwsIEdMZW51bSBmaWx0ZXIsCi0gICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2VGcmFtZWJ1ZmZlcikgb3ZlcnJpZGU7
CisgICAgZ2w6OkVycm9yIGJsaXRJbXBsKGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEs
CisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRlc3RBcmVhLAor
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICpzY2lzc29yLAorICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGJsaXRSZW5kZXJUYXJnZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgYmxpdERlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICBib29sIGJs
aXRTdGVuY2lsLAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsdGVyLAorICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZUZyYW1lYnVmZmVy
KSBvdmVycmlkZTsKIAogICAgIGdsOjpFcnJvciBpbnZhbGlkYXRlQmFzZShzaXplX3QgY291bnQs
IGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMsIGJvb2wgdXNlRVhUQmVoYXZpb3IpIGNvbnN0Owor
ICAgIGdsOjpFcnJvciBpbnZhbGlkYXRlQXR0YWNobWVudChjb25zdCBnbDo6RnJhbWVidWZmZXJB
dHRhY2htZW50ICphdHRhY2htZW50KSBjb25zdDsKIAogICAgIEdMZW51bSBnZXRSZW5kZXJUYXJn
ZXRJbXBsZW1lbnRhdGlvbkZvcm1hdChSZW5kZXJUYXJnZXREM0QgKnJlbmRlclRhcmdldCkgY29u
c3Qgb3ZlcnJpZGU7CiAKQEAgLTcyLDggKzc3LDggQEAgY2xhc3MgRnJhbWVidWZmZXIxMSA6IHB1
YmxpYyBGcmFtZWJ1ZmZlcgogICAgIFJlbmRlclRhcmdldEFycmF5IG1DYWNoZWRDb2xvclJlbmRl
clRhcmdldHM7CiAgICAgUmVuZGVyVGFyZ2V0MTEgKm1DYWNoZWREZXB0aFN0ZW5jaWxSZW5kZXJU
YXJnZXQ7CiAKLSAgICBzdGQ6OnZlY3RvcjxOb3RpZmljYXRpb25DYWxsYmFjaz4gbUNvbG9yUmVu
ZGVyVGFyZ2V0c0RpcnR5OwotICAgIE5vdGlmaWNhdGlvbkNhbGxiYWNrIG1EZXB0aFN0ZW5jaWxS
ZW5kZXJUYXJnZXREaXJ0eTsKKyAgICBzdGQ6OnZlY3RvcjxhbmdsZTo6Q2hhbm5lbEJpbmRpbmc+
IG1Db2xvclJlbmRlclRhcmdldHNEaXJ0eTsKKyAgICBhbmdsZTo6Q2hhbm5lbEJpbmRpbmcgbURl
cHRoU3RlbmNpbFJlbmRlclRhcmdldERpcnR5OwogCiAgICAgZ2w6OkZyYW1lYnVmZmVyOjpEaXJ0
eUJpdHMgbUludGVybmFsRGlydHlCaXRzOwogfTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvSW1hZ2UxMS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9JbWFnZTExLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9JbWFnZTExLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTAsMTQgKzUwLDEwIEBAIGdsOjpFcnJvciBJbWFnZTExOjpnZW5lcmF0ZU1p
cG1hcChJbWFnZTEKICAgICBBU1NFUlQoc3JjLT5nZXRIZWlnaHQoKSA9PSAxIHx8IHNyYy0+Z2V0
SGVpZ2h0KCkgLyAyID09IGRlc3QtPmdldEhlaWdodCgpKTsKIAogICAgIEQzRDExX01BUFBFRF9T
VUJSRVNPVVJDRSBkZXN0TWFwcGVkOwotICAgIGdsOjpFcnJvciBlcnJvciA9IGRlc3QtPm1hcChE
M0QxMV9NQVBfV1JJVEUsICZkZXN0TWFwcGVkKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkoZGVzdC0+
bWFwKEQzRDExX01BUF9XUklURSwgJmRlc3RNYXBwZWQpKTsKIAogICAgIEQzRDExX01BUFBFRF9T
VUJSRVNPVVJDRSBzcmNNYXBwZWQ7Ci0gICAgZXJyb3IgPSBzcmMtPm1hcChEM0QxMV9NQVBfUkVB
RCwgJnNyY01hcHBlZCk7CisgICAgZ2w6OkVycm9yIGVycm9yID0gc3JjLT5tYXAoRDNEMTFfTUFQ
X1JFQUQsICZzcmNNYXBwZWQpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewogICAg
ICAgICBkZXN0LT51bm1hcCgpOwpAQCAtNjcsOCArNjMsOCBAQCBnbDo6RXJyb3IgSW1hZ2UxMTo6
Z2VuZXJhdGVNaXBtYXAoSW1hZ2UxCiAgICAgY29uc3QgdWludDhfdCAqc291cmNlRGF0YSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNyY01hcHBlZC5wRGF0YSk7CiAgICAgdWlu
dDhfdCAqZGVzdERhdGEgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkZXN0TWFwcGVkLnBE
YXRhKTsKIAotICAgIGF1dG8gbWlwR2VuZXJhdGlvbkZ1bmN0aW9uID0gZDNkMTE6OkdldFRleHR1
cmVGb3JtYXRJbmZvKHNyYy0+Z2V0SW50ZXJuYWxGb3JtYXQoKSwgcmVuZGVyZXJDYXBzKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXRTZXQtPm1pcEdlbmVyYXRp
b25GdW5jdGlvbjsKKyAgICBhdXRvIG1pcEdlbmVyYXRpb25GdW5jdGlvbiA9CisgICAgICAgIGQz
ZDExOjpGb3JtYXQ6OkdldChzcmMtPmdldEludGVybmFsRm9ybWF0KCksIHJlbmRlcmVyQ2Fwcyku
Zm9ybWF0Lm1pcEdlbmVyYXRpb25GdW5jdGlvbjsKICAgICBtaXBHZW5lcmF0aW9uRnVuY3Rpb24o
c3JjLT5nZXRXaWR0aCgpLCBzcmMtPmdldEhlaWdodCgpLCBzcmMtPmdldERlcHRoKCksIHNvdXJj
ZURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY01hcHBlZC5Sb3dQaXRjaCwgc3Jj
TWFwcGVkLkRlcHRoUGl0Y2gsIGRlc3REYXRhLCBkZXN0TWFwcGVkLlJvd1BpdGNoLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZXN0TWFwcGVkLkRlcHRoUGl0Y2gpOwpAQCAtNzgsNyArNzQs
NyBAQCBnbDo6RXJyb3IgSW1hZ2UxMTo6Z2VuZXJhdGVNaXBtYXAoSW1hZ2UxCiAKICAgICBkZXN0
LT5tYXJrRGlydHkoKTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAg
IHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBib29sIEltYWdlMTE6OmlzRGlydHkoKSBjb25z
dApAQCAtOTAsNyArODYsNyBAQCBib29sIEltYWdlMTE6OmlzRGlydHkoKSBjb25zdAogICAgIGlm
IChtRGlydHkgJiYgIW1TdGFnaW5nVGV4dHVyZSAmJiAhbVJlY292ZXJGcm9tU3RvcmFnZSkKICAg
ICB7CiAgICAgICAgIGNvbnN0IFJlbmRlcmVyMTFEZXZpY2VDYXBzICZkZXZpY2VDYXBzID0gbVJl
bmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpOwotICAgICAgICBjb25zdCBhdXRvICZm
b3JtYXRJbmZvID0gZDNkMTE6OkdldFRleHR1cmVGb3JtYXRJbmZvKG1JbnRlcm5hbEZvcm1hdCwg
ZGV2aWNlQ2Fwcyk7CisgICAgICAgIGNvbnN0IGF1dG8gJmZvcm1hdEluZm8gICAgICAgICAgICAg
ICAgID0gZDNkMTE6OkZvcm1hdDo6R2V0KG1JbnRlcm5hbEZvcm1hdCwgZGV2aWNlQ2Fwcyk7CiAg
ICAgICAgIGlmIChmb3JtYXRJbmZvLmRhdGFJbml0aWFsaXplckZ1bmN0aW9uID09IG51bGxwdHIp
CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExMywyNiArMTA5LDE0
IEBAIGdsOjpFcnJvciBJbWFnZTExOjpjb3B5VG9TdG9yYWdlKFRleHR1cmUKICAgICBpZiAoYXR0
ZW1wdFRvUmVsZWFzZVN0YWdpbmdUZXh0dXJlKQogICAgIHsKICAgICAgICAgLy8gSWYgYW5vdGhl
ciBpbWFnZSBpcyByZWx5aW5nIG9uIHRoaXMgU3RvcmFnZSBmb3IgaXRzIGRhdGEsIHRoZW4gd2Ug
bXVzdCBsZXQgaXQgcmVjb3ZlciBpdHMgZGF0YSBiZWZvcmUgd2Ugb3ZlcndyaXRlIGl0LgotICAg
ICAgICBnbDo6RXJyb3IgZXJyb3IgPSBzdG9yYWdlMTEtPnJlbGVhc2VBc3NvY2lhdGVkSW1hZ2Uo
aW5kZXgsIHRoaXMpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKHN0
b3JhZ2UxMS0+cmVsZWFzZUFzc29jaWF0ZWRJbWFnZShpbmRleCwgdGhpcykpOwogICAgIH0KIAog
ICAgIElEM0QxMVJlc291cmNlICpzdGFnaW5nVGV4dHVyZSA9IE5VTEw7CiAgICAgdW5zaWduZWQg
aW50IHN0YWdpbmdTdWJyZXNvdXJjZUluZGV4ID0gMDsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBn
ZXRTdGFnaW5nVGV4dHVyZSgmc3RhZ2luZ1RleHR1cmUsICZzdGFnaW5nU3VicmVzb3VyY2VJbmRl
eCk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJv
cjsKLSAgICB9Ci0KLSAgICBlcnJvciA9IHN0b3JhZ2UxMS0+dXBkYXRlU3VicmVzb3VyY2VMZXZl
bChzdGFnaW5nVGV4dHVyZSwgc3RhZ2luZ1N1YnJlc291cmNlSW5kZXgsIGluZGV4LCByZWdpb24p
OwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7
Ci0gICAgfQorICAgIEFOR0xFX1RSWShnZXRTdGFnaW5nVGV4dHVyZSgmc3RhZ2luZ1RleHR1cmUs
ICZzdGFnaW5nU3VicmVzb3VyY2VJbmRleCkpOworICAgIEFOR0xFX1RSWSgKKyAgICAgICAgc3Rv
cmFnZTExLT51cGRhdGVTdWJyZXNvdXJjZUxldmVsKHN0YWdpbmdUZXh0dXJlLCBzdGFnaW5nU3Vi
cmVzb3VyY2VJbmRleCwgaW5kZXgsIHJlZ2lvbikpOwogCiAgICAgLy8gT25jZSB0aGUgaW1hZ2Ug
ZGF0YSBoYXMgYmVlbiBjb3BpZWQgaW50byB0aGUgU3RvcmFnZSwgd2UgY2FuIHJlbGVhc2UgaXQg
bG9jYWxseS4KICAgICBpZiAoYXR0ZW1wdFRvUmVsZWFzZVN0YWdpbmdUZXh0dXJlKQpAQCAtMTQ0
LDcgKzEyOCw3IEBAIGdsOjpFcnJvciBJbWFnZTExOjpjb3B5VG9TdG9yYWdlKFRleHR1cmUKICAg
ICAgICAgbUFzc29jaWF0ZWRJbWFnZUluZGV4ID0gaW5kZXg7CiAgICAgfQogCi0gICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAK
IGJvb2wgSW1hZ2UxMTo6aXNBc3NvY2lhdGVkU3RvcmFnZVZhbGlkKFRleHR1cmVTdG9yYWdlMTEq
IHRleHR1cmVTdG9yYWdlKSBjb25zdApAQCAtMTU2LDExICsxNDAsNyBAQCBnbDo6RXJyb3IgSW1h
Z2UxMTo6cmVjb3ZlckZyb21Bc3NvY2lhdGVkCiB7CiAgICAgaWYgKG1SZWNvdmVyRnJvbVN0b3Jh
Z2UpCiAgICAgewotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBjcmVhdGVTdGFnaW5nVGV4dHVy
ZSgpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKGNyZWF0ZVN0YWdp
bmdUZXh0dXJlKCkpOwogCiAgICAgICAgIGJvb2wgdGV4dHVyZVN0b3JhZ2VDb3JyZWN0ID0gbUFz
c29jaWF0ZWRTdG9yYWdlLT5pc0Fzc29jaWF0ZWRJbWFnZVZhbGlkKG1Bc3NvY2lhdGVkSW1hZ2VJ
bmRleCwgdGhpcyk7CiAKQEAgLTE3MiwxMiArMTUyLDggQEAgZ2w6OkVycm9yIEltYWdlMTE6OnJl
Y292ZXJGcm9tQXNzb2NpYXRlZAogICAgICAgICB7CiAgICAgICAgICAgICAvLyBDb3B5U3ViUmVz
b3VyY2UgZnJvbSB0aGUgU3RvcmFnZSB0byB0aGUgU3RhZ2luZyB0ZXh0dXJlCiAgICAgICAgICAg
ICBnbDo6Qm94IHJlZ2lvbigwLCAwLCAwLCBtV2lkdGgsIG1IZWlnaHQsIG1EZXB0aCk7Ci0gICAg
ICAgICAgICBlcnJvciA9IG1Bc3NvY2lhdGVkU3RvcmFnZS0+Y29weVN1YnJlc291cmNlTGV2ZWwo
bVN0YWdpbmdUZXh0dXJlLCBtU3RhZ2luZ1N1YnJlc291cmNlLCBtQXNzb2NpYXRlZEltYWdlSW5k
ZXgsIHJlZ2lvbik7Ci0gICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgICAgIH0KLQorICAg
ICAgICAgICAgQU5HTEVfVFJZKG1Bc3NvY2lhdGVkU3RvcmFnZS0+Y29weVN1YnJlc291cmNlTGV2
ZWwobVN0YWdpbmdUZXh0dXJlLCBtU3RhZ2luZ1N1YnJlc291cmNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUFzc29jaWF0
ZWRJbWFnZUluZGV4LCByZWdpb24pKTsKICAgICAgICAgICAgIG1SZWNvdmVyZWRGcm9tU3RvcmFn
ZUNvdW50ICs9IDE7CiAgICAgICAgIH0KIApAQCAtMTg1LDcgKzE2MSw3IEBAIGdsOjpFcnJvciBJ
bWFnZTExOjpyZWNvdmVyRnJvbUFzc29jaWF0ZWQKICAgICAgICAgZGlzYXNzb2NpYXRlU3RvcmFn
ZSgpOwogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJl
dHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiB2b2lkIEltYWdlMTE6OmRpc2Fzc29jaWF0ZVN0b3Jh
Z2UoKQpAQCAtMjIwLDEwICsxOTYsMTAgQEAgYm9vbCBJbWFnZTExOjpyZWRlZmluZShHTGVudW0g
dGFyZ2V0LCBHTAogICAgICAgICBtVGFyZ2V0ID0gdGFyZ2V0OwogCiAgICAgICAgIC8vIGNvbXB1
dGUgdGhlIGQzZCBmb3JtYXQgdGhhdCB3aWxsIGJlIHVzZWQKLSAgICAgICAgY29uc3QgZDNkMTE6
OlRleHR1cmVGb3JtYXQgJmZvcm1hdEluZm8gPQotICAgICAgICAgICAgZDNkMTE6OkdldFRleHR1
cmVGb3JtYXRJbmZvKGludGVybmFsZm9ybWF0LCBtUmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZp
Y2VDYXBzKCkpOwotICAgICAgICBtRFhHSUZvcm1hdCA9IGZvcm1hdEluZm8uZm9ybWF0U2V0LT50
ZXhGb3JtYXQ7Ci0gICAgICAgIG1SZW5kZXJhYmxlID0gKGZvcm1hdEluZm8uZm9ybWF0U2V0LT5y
dHZGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTik7CisgICAgICAgIGNvbnN0IGQzZDExOjpG
b3JtYXQgJmZvcm1hdEluZm8gPQorICAgICAgICAgICAgZDNkMTE6OkZvcm1hdDo6R2V0KGludGVy
bmFsZm9ybWF0LCBtUmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCkpOworICAgICAg
ICBtRFhHSUZvcm1hdCA9IGZvcm1hdEluZm8udGV4Rm9ybWF0OworICAgICAgICBtUmVuZGVyYWJs
ZSA9IChmb3JtYXRJbmZvLnJ0dkZvcm1hdCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dOKTsKIAogICAg
ICAgICByZWxlYXNlU3RhZ2luZ1RleHR1cmUoKTsKICAgICAgICAgbURpcnR5ID0gKGZvcm1hdElu
Zm8uZGF0YUluaXRpYWxpemVyRnVuY3Rpb24gIT0gTlVMTCk7CkBAIC0yNDUsMjcgKzIyMSwzNCBA
QCBEWEdJX0ZPUk1BVCBJbWFnZTExOjpnZXREWEdJRm9ybWF0KCkgY29uCiAKIC8vIFN0b3JlIHRo
ZSBwaXhlbCByZWN0YW5nbGUgZGVzaWduYXRlZCBieSB4b2Zmc2V0LHlvZmZzZXQsd2lkdGgsaGVp
Z2h0IHdpdGggcGl4ZWxzIHN0b3JlZCBhcyBmb3JtYXQvdHlwZSBhdCBpbnB1dAogLy8gaW50byB0
aGUgdGFyZ2V0IHBpeGVsIHJlY3RhbmdsZS4KLWdsOjpFcnJvciBJbWFnZTExOjpsb2FkRGF0YShj
b25zdCBnbDo6Qm94ICZhcmVhLCBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBH
TGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqaW5wdXQpCitnbDo6RXJyb3IgSW1hZ2UxMTo6bG9hZERh
dGEoY29uc3QgZ2w6OkJveCAmYXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQg
KmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYXBwbHlTa2lwSW1hZ2Vz
KQogewogICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9IGdsOjpHZXRJ
bnRlcm5hbEZvcm1hdEluZm8obUludGVybmFsRm9ybWF0KTsKLSAgICBHTHNpemVpIGlucHV0Um93
UGl0Y2ggPSBmb3JtYXRJbmZvLmNvbXB1dGVSb3dQaXRjaCh0eXBlLCBhcmVhLndpZHRoLCB1bnBh
Y2suYWxpZ25tZW50LCB1bnBhY2sucm93TGVuZ3RoKTsKLSAgICBHTHNpemVpIGlucHV0RGVwdGhQ
aXRjaCA9IGZvcm1hdEluZm8uY29tcHV0ZURlcHRoUGl0Y2goCi0gICAgICAgIHR5cGUsIGFyZWEu
d2lkdGgsIGFyZWEuaGVpZ2h0LCB1bnBhY2suYWxpZ25tZW50LCB1bnBhY2sucm93TGVuZ3RoLCB1
bnBhY2suaW1hZ2VIZWlnaHQpOwotICAgIEdMc2l6ZWkgaW5wdXRTa2lwQnl0ZXMgPSBmb3JtYXRJ
bmZvLmNvbXB1dGVTa2lwUGl4ZWxzKAotICAgICAgICBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRo
UGl0Y2gsIHVucGFjay5za2lwSW1hZ2VzLCB1bnBhY2suc2tpcFJvd3MsIHVucGFjay5za2lwUGl4
ZWxzKTsKKyAgICBHTHVpbnQgaW5wdXRSb3dQaXRjaCAgICAgICAgICAgICAgICAgPSAwOworICAg
IEFOR0xFX1RSWV9SRVNVTFQoCisgICAgICAgIGZvcm1hdEluZm8uY29tcHV0ZVJvd1BpdGNoKHR5
cGUsIGFyZWEud2lkdGgsIHVucGFjay5hbGlnbm1lbnQsIHVucGFjay5yb3dMZW5ndGgpLAorICAg
ICAgICBpbnB1dFJvd1BpdGNoKTsKKyAgICBHTHVpbnQgaW5wdXREZXB0aFBpdGNoID0gMDsKKyAg
ICBBTkdMRV9UUllfUkVTVUxUKGZvcm1hdEluZm8uY29tcHV0ZURlcHRoUGl0Y2goYXJlYS5oZWln
aHQsIHVucGFjay5pbWFnZUhlaWdodCwgaW5wdXRSb3dQaXRjaCksCisgICAgICAgICAgICAgICAg
ICAgICBpbnB1dERlcHRoUGl0Y2gpOworICAgIEdMdWludCBpbnB1dFNraXBCeXRlcyA9IDA7Cisg
ICAgQU5HTEVfVFJZX1JFU1VMVCgKKyAgICAgICAgZm9ybWF0SW5mby5jb21wdXRlU2tpcEJ5dGVz
KGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCwgdW5wYWNrLCBhcHBseVNraXBJbWFnZXMp
LAorICAgICAgICBpbnB1dFNraXBCeXRlcyk7CiAKICAgICBjb25zdCBkM2QxMTo6RFhHSUZvcm1h
dFNpemUgJmR4Z2lGb3JtYXRJbmZvID0gZDNkMTE6OkdldERYR0lGb3JtYXRTaXplSW5mbyhtRFhH
SUZvcm1hdCk7CiAgICAgR0x1aW50IG91dHB1dFBpeGVsU2l6ZSA9IGR4Z2lGb3JtYXRJbmZvLnBp
eGVsQnl0ZXM7CiAKLSAgICBjb25zdCBkM2QxMTo6VGV4dHVyZUZvcm1hdCAmZDNkRm9ybWF0SW5m
byA9IGQzZDExOjpHZXRUZXh0dXJlRm9ybWF0SW5mbyhtSW50ZXJuYWxGb3JtYXQsIG1SZW5kZXJl
ci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKSk7Ci0gICAgTG9hZEltYWdlRnVuY3Rpb24gbG9h
ZEZ1bmN0aW9uID0gZDNkRm9ybWF0SW5mby5sb2FkRnVuY3Rpb25zLmF0KHR5cGUpLmxvYWRGdW5j
dGlvbjsKKyAgICBjb25zdCBkM2QxMTo6Rm9ybWF0ICZkM2RGb3JtYXRJbmZvID0KKyAgICAgICAg
ZDNkMTE6OkZvcm1hdDo6R2V0KG1JbnRlcm5hbEZvcm1hdCwgbVJlbmRlcmVyLT5nZXRSZW5kZXJl
cjExRGV2aWNlQ2FwcygpKTsKKyAgICBMb2FkSW1hZ2VGdW5jdGlvbiBsb2FkRnVuY3Rpb24gPSBk
M2RGb3JtYXRJbmZvLmxvYWRGdW5jdGlvbnModHlwZSkubG9hZEZ1bmN0aW9uOwogCiAgICAgRDNE
MTFfTUFQUEVEX1NVQlJFU09VUkNFIG1hcHBlZEltYWdlOwotICAgIGdsOjpFcnJvciBlcnJvciA9
IG1hcChEM0QxMV9NQVBfV1JJVEUsICZtYXBwZWRJbWFnZSk7Ci0gICAgaWYgKGVycm9yLmlzRXJy
b3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZ
KG1hcChEM0QxMV9NQVBfV1JJVEUsICZtYXBwZWRJbWFnZSkpOwogCiAgICAgdWludDhfdCAqb2Zm
c2V0TWFwcGVkRGF0YSA9IChyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihtYXBwZWRJbWFnZS5w
RGF0YSkgKyAoYXJlYS55ICogbWFwcGVkSW1hZ2UuUm93UGl0Y2ggKyBhcmVhLnggKiBvdXRwdXRQ
aXhlbFNpemUgKyBhcmVhLnogKiBtYXBwZWRJbWFnZS5EZXB0aFBpdGNoKSk7CiAgICAgbG9hZEZ1
bmN0aW9uKGFyZWEud2lkdGgsIGFyZWEuaGVpZ2h0LCBhcmVhLmRlcHRoLApAQCAtMjc0LDE1ICsy
NTcsMTYgQEAgZ2w6OkVycm9yIEltYWdlMTE6OmxvYWREYXRhKGNvbnN0IGdsOjpCbwogCiAgICAg
dW5tYXAoKTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVy
biBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgSW1hZ2UxMTo6bG9hZENvbXByZXNzZWRE
YXRhKGNvbnN0IGdsOjpCb3ggJmFyZWEsIGNvbnN0IHZvaWQgKmlucHV0KQogewogICAgIGNvbnN0
IGdsOjpJbnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdElu
Zm8obUludGVybmFsRm9ybWF0KTsKLSAgICBHTHNpemVpIGlucHV0Um93UGl0Y2ggPSBmb3JtYXRJ
bmZvLmNvbXB1dGVSb3dQaXRjaChHTF9VTlNJR05FRF9CWVRFLCBhcmVhLndpZHRoLCAxLCAwKTsK
LSAgICBHTHNpemVpIGlucHV0RGVwdGhQaXRjaCA9Ci0gICAgICAgIGZvcm1hdEluZm8uY29tcHV0
ZURlcHRoUGl0Y2goR0xfVU5TSUdORURfQllURSwgYXJlYS53aWR0aCwgYXJlYS5oZWlnaHQsIDEs
IDAsIDApOworICAgIEdMc2l6ZWkgaW5wdXRSb3dQaXRjaCAgICAgICAgICAgICAgICA9IDA7Cisg
ICAgQU5HTEVfVFJZX1JFU1VMVChmb3JtYXRJbmZvLmNvbXB1dGVSb3dQaXRjaChHTF9VTlNJR05F
RF9CWVRFLCBhcmVhLndpZHRoLCAxLCAwKSwgaW5wdXRSb3dQaXRjaCk7CisgICAgR0xzaXplaSBp
bnB1dERlcHRoUGl0Y2ggPSAwOworICAgIEFOR0xFX1RSWV9SRVNVTFQoZm9ybWF0SW5mby5jb21w
dXRlRGVwdGhQaXRjaChhcmVhLmhlaWdodCwgMCwgaW5wdXRSb3dQaXRjaCksIGlucHV0RGVwdGhQ
aXRjaCk7CiAKICAgICBjb25zdCBkM2QxMTo6RFhHSUZvcm1hdFNpemUgJmR4Z2lGb3JtYXRJbmZv
ID0gZDNkMTE6OkdldERYR0lGb3JtYXRTaXplSW5mbyhtRFhHSUZvcm1hdCk7CiAgICAgR0x1aW50
IG91dHB1dFBpeGVsU2l6ZSA9IGR4Z2lGb3JtYXRJbmZvLnBpeGVsQnl0ZXM7CkBAIC0yOTIsMTUg
KzI3NiwxMiBAQCBnbDo6RXJyb3IgSW1hZ2UxMTo6bG9hZENvbXByZXNzZWREYXRhKGNvCiAgICAg
QVNTRVJUKGFyZWEueCAlIG91dHB1dEJsb2NrV2lkdGggPT0gMCk7CiAgICAgQVNTRVJUKGFyZWEu
eSAlIG91dHB1dEJsb2NrSGVpZ2h0ID09IDApOwogCi0gICAgY29uc3QgZDNkMTE6OlRleHR1cmVG
b3JtYXQgJmQzZEZvcm1hdEluZm8gPSBkM2QxMTo6R2V0VGV4dHVyZUZvcm1hdEluZm8obUludGVy
bmFsRm9ybWF0LCBtUmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCkpOwotICAgIExv
YWRJbWFnZUZ1bmN0aW9uIGxvYWRGdW5jdGlvbiA9IGQzZEZvcm1hdEluZm8ubG9hZEZ1bmN0aW9u
cy5hdChHTF9VTlNJR05FRF9CWVRFKS5sb2FkRnVuY3Rpb247CisgICAgY29uc3QgZDNkMTE6OkZv
cm1hdCAmZDNkRm9ybWF0SW5mbyA9CisgICAgICAgIGQzZDExOjpGb3JtYXQ6OkdldChtSW50ZXJu
YWxGb3JtYXQsIG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKSk7CisgICAgTG9h
ZEltYWdlRnVuY3Rpb24gbG9hZEZ1bmN0aW9uID0gZDNkRm9ybWF0SW5mby5sb2FkRnVuY3Rpb25z
KEdMX1VOU0lHTkVEX0JZVEUpLmxvYWRGdW5jdGlvbjsKIAogICAgIEQzRDExX01BUFBFRF9TVUJS
RVNPVVJDRSBtYXBwZWRJbWFnZTsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBtYXAoRDNEMTFfTUFQ
X1dSSVRFLCAmbWFwcGVkSW1hZ2UpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewot
ICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShtYXAoRDNEMTFfTUFQ
X1dSSVRFLCAmbWFwcGVkSW1hZ2UpKTsKIAogICAgIHVpbnQ4X3QqIG9mZnNldE1hcHBlZERhdGEg
PSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihtYXBwZWRJbWFnZS5wRGF0YSkgKyAoKGFyZWEu
eSAvIG91dHB1dEJsb2NrSGVpZ2h0KSAqIG1hcHBlZEltYWdlLlJvd1BpdGNoICsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChhcmVhLnggLyBvdXRwdXRCbG9ja1dpZHRoKSAqIG91dHB1dFBpeGVsU2l6ZSAr
CkBAIC0zMTIsNyArMjkzLDcgQEAgZ2w6OkVycm9yIEltYWdlMTE6OmxvYWRDb21wcmVzc2VkRGF0
YShjbwogCiAgICAgdW5tYXAoKTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1Ip
OworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgSW1hZ2UxMTo6Y29w
eUZyb21UZXhTdG9yYWdlKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbWFnZUluZGV4LCBUZXh0dXJl
U3RvcmFnZSAqc291cmNlKQpAQCAtMzIwLDE1ICszMDEsMTEgQEAgZ2w6OkVycm9yIEltYWdlMTE6
OmNvcHlGcm9tVGV4U3RvcmFnZShjbwogICAgIFRleHR1cmVTdG9yYWdlMTEgKnN0b3JhZ2UxMSA9
IEdldEFzPFRleHR1cmVTdG9yYWdlMTE+KHNvdXJjZSk7CiAKICAgICBJRDNEMTFSZXNvdXJjZSAq
cmVzb3VyY2UgPSBudWxscHRyOwotICAgIGdsOjpFcnJvciBlcnJvciA9IHN0b3JhZ2UxMS0+Z2V0
UmVzb3VyY2UoJnJlc291cmNlKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkoc3RvcmFnZTExLT5nZXRS
ZXNvdXJjZSgmcmVzb3VyY2UpKTsKIAogICAgIFVJTlQgc3VicmVzb3VyY2VJbmRleCAgICAgICAg
ID0gc3RvcmFnZTExLT5nZXRTdWJyZXNvdXJjZUluZGV4KGltYWdlSW5kZXgpOwogICAgIFRleHR1
cmVIZWxwZXIxMSB0ZXh0dXJlSGVscGVyID0KLSAgICAgICAgVGV4dHVyZUhlbHBlcjExOjpNYWtl
QW5kUmVmZXJlbmNlKHJlc291cmNlLCBzdG9yYWdlMTEtPmdldEFOR0xFRm9ybWF0KCkpOworICAg
ICAgICBUZXh0dXJlSGVscGVyMTE6Ok1ha2VBbmRSZWZlcmVuY2UocmVzb3VyY2UsIHN0b3JhZ2Ux
MS0+Z2V0Rm9ybWF0U2V0KCkpOwogCiAgICAgZ2w6OkJveCBzb3VyY2VCb3goMCwgMCwgMCwgbVdp
ZHRoLCBtSGVpZ2h0LCBtRGVwdGgpOwogICAgIHJldHVybiBjb3B5V2l0aG91dENvbnZlcnNpb24o
Z2w6Ok9mZnNldCgpLCBzb3VyY2VCb3gsIHRleHR1cmVIZWxwZXIsIHN1YnJlc291cmNlSW5kZXgp
OwpAQCAtMzQxLDIzICszMTgsMjAgQEAgZ2w6OkVycm9yIEltYWdlMTE6OmNvcHlGcm9tRnJhbWVi
dWZmZXIoYwogICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKnNyY0F0dGFjaG1l
bnQgPSBzb3VyY2VGQk8tPmdldFJlYWRDb2xvcmJ1ZmZlcigpOwogICAgIEFTU0VSVChzcmNBdHRh
Y2htZW50KTsKIAotICAgIGNvbnN0IGF1dG8gJmQzZDExRm9ybWF0ID0gZDNkMTE6OkdldFRleHR1
cmVGb3JtYXRJbmZvKHNyY0F0dGFjaG1lbnQtPmdldEludGVybmFsRm9ybWF0KCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVJlbmRl
cmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpKTsKKyAgICBHTGVudW0gc291cmNlSW50ZXJu
YWxGb3JtYXQgPSBzcmNBdHRhY2htZW50LT5nZXRGb3JtYXQoKS5hc1NpemVkKCk7CisgICAgY29u
c3QgYXV0byAmZDNkMTFGb3JtYXQgPQorICAgICAgICBkM2QxMTo6Rm9ybWF0OjpHZXQoc291cmNl
SW50ZXJuYWxGb3JtYXQsIG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKSk7CiAK
LSAgICBpZiAoZDNkMTFGb3JtYXQuZm9ybWF0U2V0LT50ZXhGb3JtYXQgPT0gbURYR0lGb3JtYXQp
CisgICAgaWYgKGQzZDExRm9ybWF0LnRleEZvcm1hdCA9PSBtRFhHSUZvcm1hdCAmJiBzb3VyY2VJ
bnRlcm5hbEZvcm1hdCA9PSBtSW50ZXJuYWxGb3JtYXQpCiAgICAgewogICAgICAgICBSZW5kZXJU
YXJnZXREM0QgKnJlbmRlclRhcmdldCA9IG51bGxwdHI7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJv
ciA9IHNyY0F0dGFjaG1lbnQtPmdldFJlbmRlclRhcmdldCgmcmVuZGVyVGFyZ2V0KTsKLSAgICAg
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVy
cm9yOwotICAgICAgICB9CisgICAgICAgIEFOR0xFX1RSWShzcmNBdHRhY2htZW50LT5nZXRSZW5k
ZXJUYXJnZXQoJnJlbmRlclRhcmdldCkpOwogCiAgICAgICAgIFJlbmRlclRhcmdldDExICpydDEx
ID0gR2V0QXM8UmVuZGVyVGFyZ2V0MTE+KHJlbmRlclRhcmdldCk7CiAgICAgICAgIEFTU0VSVChy
dDExLT5nZXRUZXh0dXJlKCkpOwogCiAgICAgICAgIFRleHR1cmVIZWxwZXIxMSB0ZXh0dXJlSGVs
cGVyID0KLSAgICAgICAgICAgIFRleHR1cmVIZWxwZXIxMTo6TWFrZUFuZFJlZmVyZW5jZShydDEx
LT5nZXRUZXh0dXJlKCksIHJ0MTEtPmdldEFOR0xFRm9ybWF0KCkpOworICAgICAgICAgICAgVGV4
dHVyZUhlbHBlcjExOjpNYWtlQW5kUmVmZXJlbmNlKHJ0MTEtPmdldFRleHR1cmUoKSwgcnQxMS0+
Z2V0Rm9ybWF0U2V0KCkpOwogICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlU3ViUmVzb3VyY2Ug
PSBydDExLT5nZXRTdWJyZXNvdXJjZUluZGV4KCk7CiAKICAgICAgICAgZ2w6OkJveCBzb3VyY2VC
b3goc291cmNlQXJlYS54LCBzb3VyY2VBcmVhLnksIDAsIHNvdXJjZUFyZWEud2lkdGgsIHNvdXJj
ZUFyZWEuaGVpZ2h0LCAxKTsKQEAgLTM2NywxMSArMzQxLDcgQEAgZ2w6OkVycm9yIEltYWdlMTE6
OmNvcHlGcm9tRnJhbWVidWZmZXIoYwogICAgIC8vIFRoaXMgZm9ybWF0IHJlcXVpcmVzIGNvbnZl
cnNpb24sIHNvIHdlIG11c3QgY29weSB0aGUgdGV4dHVyZSB0byBzdGFnaW5nIGFuZCBtYW51YWxs
eSBjb252ZXJ0CiAgICAgLy8gdmlhIHJlYWRQaXhlbHMKICAgICBEM0QxMV9NQVBQRURfU1VCUkVT
T1VSQ0UgbWFwcGVkSW1hZ2U7Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gbWFwKEQzRDExX01BUF9X
UklURSwgJm1hcHBlZEltYWdlKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkobWFwKEQzRDExX01BUF9X
UklURSwgJm1hcHBlZEltYWdlKSk7CiAKICAgICAvLyBkZXRlcm1pbmUgdGhlIG9mZnNldCBjb29y
ZGluYXRlIGludG8gdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlcgogICAgIGNvbnN0IGF1dG8gJmR4Z2lG
b3JtYXRJbmZvID0gZDNkMTE6OkdldERYR0lGb3JtYXRTaXplSW5mbyhtRFhHSUZvcm1hdCk7CkBA
IC0zODEsMTEgKzM1MSwzMyBAQCBnbDo6RXJyb3IgSW1hZ2UxMTo6Y29weUZyb21GcmFtZWJ1ZmZl
cihjCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBlZEltYWdlLlJvd1BpdGNoICogZGVz
dE9mZnNldC55ICsgcm93T2Zmc2V0ICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdE9m
ZnNldC56ICogbWFwcGVkSW1hZ2UuRGVwdGhQaXRjaDsKIAotICAgIGNvbnN0IGdsOjpJbnRlcm5h
bEZvcm1hdCAmZm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8obUludGVybmFs
Rm9ybWF0KTsKLQotICAgIGVycm9yID0gbVJlbmRlcmVyLT5yZWFkRnJvbUF0dGFjaG1lbnQoKnNy
Y0F0dGFjaG1lbnQsIHNvdXJjZUFyZWEsIGZvcm1hdEluZm8uZm9ybWF0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0SW5mby50eXBlLCBtYXBwZWRJbWFn
ZS5Sb3dQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGds
OjpQaXhlbFBhY2tTdGF0ZSgpLCBkYXRhT2Zmc2V0KTsKKyAgICBjb25zdCBnbDo6SW50ZXJuYWxG
b3JtYXQgJmRlc3RGb3JtYXRJbmZvID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhtSW50ZXJu
YWxGb3JtYXQpOworICAgIGNvbnN0IGF1dG8gJmRlc3REM0QxMUZvcm1hdCA9CisgICAgICAgIGQz
ZDExOjpGb3JtYXQ6OkdldChtSW50ZXJuYWxGb3JtYXQsIG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIx
MURldmljZUNhcHMoKSk7CisKKyAgICBhdXRvIGxvYWRGdW5jdGlvbiA9IGRlc3REM0QxMUZvcm1h
dC5sb2FkRnVuY3Rpb25zKGRlc3RGb3JtYXRJbmZvLnR5cGUpOworICAgIGdsOjpFcnJvciBlcnJv
ciAgID0gZ2w6Ok5vRXJyb3IoKTsKKyAgICBpZiAobG9hZEZ1bmN0aW9uLnJlcXVpcmVzQ29udmVy
c2lvbikKKyAgICB7CisgICAgICAgIHNpemVfdCBidWZmZXJTaXplID0gZGVzdEZvcm1hdEluZm8u
cGl4ZWxCeXRlcyAqIHNvdXJjZUFyZWEud2lkdGggKiBzb3VyY2VBcmVhLmhlaWdodDsKKyAgICAg
ICAgTWVtb3J5QnVmZmVyICptZW1vcnlCdWZmZXIgPSBudWxscHRyOworICAgICAgICBtUmVuZGVy
ZXItPmdldFNjcmF0Y2hNZW1vcnlCdWZmZXIoYnVmZmVyU2l6ZSwgJm1lbW9yeUJ1ZmZlcik7Cisg
ICAgICAgIEdMdWludCBtZW1vcnlCdWZmZXJSb3dQaXRjaCA9IGRlc3RGb3JtYXRJbmZvLnBpeGVs
Qnl0ZXMgKiBzb3VyY2VBcmVhLndpZHRoOworCisgICAgICAgIGVycm9yID0gbVJlbmRlcmVyLT5y
ZWFkRnJvbUF0dGFjaG1lbnQoKnNyY0F0dGFjaG1lbnQsIHNvdXJjZUFyZWEsIGRlc3RGb3JtYXRJ
bmZvLmZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZXN0Rm9ybWF0SW5mby50eXBlLCBtZW1vcnlCdWZmZXJSb3dQaXRjaCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6UGl4ZWxQYWNrU3RhdGUoKSwg
bWVtb3J5QnVmZmVyLT5kYXRhKCkpOworCisgICAgICAgIGxvYWRGdW5jdGlvbi5sb2FkRnVuY3Rp
b24oc291cmNlQXJlYS53aWR0aCwgc291cmNlQXJlYS5oZWlnaHQsIDEsIG1lbW9yeUJ1ZmZlci0+
ZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeUJ1ZmZlclJv
d1BpdGNoLCAwLCBkYXRhT2Zmc2V0LCBtYXBwZWRJbWFnZS5Sb3dQaXRjaCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtYXBwZWRJbWFnZS5EZXB0aFBpdGNoKTsKKyAgICB9Cisg
ICAgZWxzZQorICAgIHsKKyAgICAgICAgZXJyb3IgPSBtUmVuZGVyZXItPnJlYWRGcm9tQXR0YWNo
bWVudCgqc3JjQXR0YWNobWVudCwgc291cmNlQXJlYSwgZGVzdEZvcm1hdEluZm8uZm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RGb3JtYXRJ
bmZvLnR5cGUsIG1hcHBlZEltYWdlLlJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdsOjpQaXhlbFBhY2tTdGF0ZSgpLCBkYXRhT2Zmc2V0KTsK
KyAgICB9CiAKICAgICB1bm1hcCgpOwogICAgIG1EaXJ0eSA9IHRydWU7CkBAIC00MDEsMTEgKzM5
Myw3IEBAIGdsOjpFcnJvciBJbWFnZTExOjpjb3B5V2l0aG91dENvbnZlcnNpb24KICAgICAvLyBO
byBjb252ZXJzaW9uIG5lZWRlZC0tIHVzZSBjb3B5YmFjayBmYXN0cGF0aAogICAgIElEM0QxMVJl
c291cmNlICpzdGFnaW5nVGV4dHVyZSAgICAgICA9IG51bGxwdHI7CiAgICAgdW5zaWduZWQgaW50
IHN0YWdpbmdTdWJyZXNvdXJjZUluZGV4ID0gMDsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBnZXRT
dGFnaW5nVGV4dHVyZSgmc3RhZ2luZ1RleHR1cmUsICZzdGFnaW5nU3VicmVzb3VyY2VJbmRleCk7
Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsK
LSAgICB9CisgICAgQU5HTEVfVFJZKGdldFN0YWdpbmdUZXh0dXJlKCZzdGFnaW5nVGV4dHVyZSwg
JnN0YWdpbmdTdWJyZXNvdXJjZUluZGV4KSk7CiAKICAgICBJRDNEMTFEZXZpY2UgKmRldmljZSAg
ICAgICAgICAgICAgID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKICAgICBJRDNEMTFEZXZpY2VD
b250ZXh0ICpkZXZpY2VDb250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CkBA
IC00NzAsMjAgKzQ1OCwxNiBAQCBnbDo6RXJyb3IgSW1hZ2UxMTo6Y29weVdpdGhvdXRDb252ZXJz
aW9uCiAgICAgfQogCiAgICAgbURpcnR5ID0gdHJ1ZTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIElt
YWdlMTE6OmdldFN0YWdpbmdUZXh0dXJlKElEM0QxMVJlc291cmNlICoqb3V0U3RhZ2luZ1RleHR1
cmUsIHVuc2lnbmVkIGludCAqb3V0U3VicmVzb3VyY2VJbmRleCkKIHsKLSAgICBnbDo6RXJyb3Ig
ZXJyb3IgPSBjcmVhdGVTdGFnaW5nVGV4dHVyZSgpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
Ci0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShjcmVh
dGVTdGFnaW5nVGV4dHVyZSgpKTsKIAogICAgICpvdXRTdGFnaW5nVGV4dHVyZSA9IG1TdGFnaW5n
VGV4dHVyZTsKICAgICAqb3V0U3VicmVzb3VyY2VJbmRleCA9IG1TdGFnaW5nU3VicmVzb3VyY2U7
Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vy
cm9yKCk7CiB9CiAKIHZvaWQgSW1hZ2UxMTo6cmVsZWFzZVN0YWdpbmdUZXh0dXJlKCkKQEAgLTUy
Nyw3ICs1MTEsOCBAQCBnbDo6RXJyb3IgSW1hZ2UxMTo6Y3JlYXRlU3RhZ2luZ1RleHR1cmUoCiAg
ICAgICAgIGRlc2MuQ1BVQWNjZXNzRmxhZ3MgPSBEM0QxMV9DUFVfQUNDRVNTX1JFQUQgfCBEM0Qx
MV9DUFVfQUNDRVNTX1dSSVRFOwogICAgICAgICBkZXNjLk1pc2NGbGFncyA9IDA7CiAKLSAgICAg
ICAgaWYgKGQzZDExOjpHZXRUZXh0dXJlRm9ybWF0SW5mbyhtSW50ZXJuYWxGb3JtYXQsIG1SZW5k
ZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKSkuZGF0YUluaXRpYWxpemVyRnVuY3Rpb24g
IT0gTlVMTCkKKyAgICAgICAgaWYgKGQzZDExOjpGb3JtYXQ6OkdldChtSW50ZXJuYWxGb3JtYXQs
IG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKSkKKyAgICAgICAgICAgICAgICAu
ZGF0YUluaXRpYWxpemVyRnVuY3Rpb24gIT0gTlVMTCkKICAgICAgICAgewogICAgICAgICAgICAg
c3RkOjp2ZWN0b3I8RDNEMTFfU1VCUkVTT1VSQ0VfREFUQT4gaW5pdGlhbERhdGE7CiAgICAgICAg
ICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxCWVRFPj4gdGV4dHVyZURhdGE7CkBAIC01Njcs
NyArNTUyLDggQEAgZ2w6OkVycm9yIEltYWdlMTE6OmNyZWF0ZVN0YWdpbmdUZXh0dXJlKAogICAg
ICAgICBkZXNjLkNQVUFjY2Vzc0ZsYWdzID0gRDNEMTFfQ1BVX0FDQ0VTU19SRUFEIHwgRDNEMTFf
Q1BVX0FDQ0VTU19XUklURTsKICAgICAgICAgZGVzYy5NaXNjRmxhZ3MgPSAwOwogCi0gICAgICAg
IGlmIChkM2QxMTo6R2V0VGV4dHVyZUZvcm1hdEluZm8obUludGVybmFsRm9ybWF0LCBtUmVuZGVy
ZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCkpLmRhdGFJbml0aWFsaXplckZ1bmN0aW9uICE9
IE5VTEwpCisgICAgICAgIGlmIChkM2QxMTo6Rm9ybWF0OjpHZXQobUludGVybmFsRm9ybWF0LCBt
UmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCkpCisgICAgICAgICAgICAgICAgLmRh
dGFJbml0aWFsaXplckZ1bmN0aW9uICE9IE5VTEwpCiAgICAgICAgIHsKICAgICAgICAgICAgIHN0
ZDo6dmVjdG9yPEQzRDExX1NVQlJFU09VUkNFX0RBVEE+IGluaXRpYWxEYXRhOwogICAgICAgICAg
ICAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8QllURT4+IHRleHR1cmVEYXRhOwpAQCAtNjAyLDE5
ICs1ODgsMTEgQEAgZ2w6OkVycm9yIEltYWdlMTE6OmNyZWF0ZVN0YWdpbmdUZXh0dXJlKAogZ2w6
OkVycm9yIEltYWdlMTE6Om1hcChEM0QxMV9NQVAgbWFwVHlwZSwgRDNEMTFfTUFQUEVEX1NVQlJF
U09VUkNFICptYXApCiB7CiAgICAgLy8gV2UgbXVzdCByZWNvdmVyIGZyb20gdGhlIFRleHR1cmVT
dG9yYWdlIGlmIG5lY2Vzc2FyeSwgZXZlbiBmb3IgRDNEMTFfTUFQX1dSSVRFLgotICAgIGdsOjpF
cnJvciBlcnJvciA9IHJlY292ZXJGcm9tQXNzb2NpYXRlZFN0b3JhZ2UoKTsKLSAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBB
TkdMRV9UUlkocmVjb3ZlckZyb21Bc3NvY2lhdGVkU3RvcmFnZSgpKTsKIAogICAgIElEM0QxMVJl
c291cmNlICpzdGFnaW5nVGV4dHVyZSA9IE5VTEw7CiAgICAgdW5zaWduZWQgaW50IHN1YnJlc291
cmNlSW5kZXggPSAwOwotICAgIGVycm9yID0gZ2V0U3RhZ2luZ1RleHR1cmUoJnN0YWdpbmdUZXh0
dXJlLCAmc3VicmVzb3VyY2VJbmRleCk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKGdldFN0YWdpbmdU
ZXh0dXJlKCZzdGFnaW5nVGV4dHVyZSwgJnN1YnJlc291cmNlSW5kZXgpKTsKIAogICAgIElEM0Qx
MURldmljZUNvbnRleHQgKmRldmljZUNvbnRleHQgPSBtUmVuZGVyZXItPmdldERldmljZUNvbnRl
eHQoKTsKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9JbWFnZTExLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9JbWFnZTExLmgJKHJldmlzaW9u
IDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvSW1hZ2UxMS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw4ICs0NSwxMiBAQCBj
bGFzcyBJbWFnZTExIDogcHVibGljIEltYWdlRDNECiAKICAgICBEWEdJX0ZPUk1BVCBnZXREWEdJ
Rm9ybWF0KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBsb2FkRGF0YShjb25zdCBn
bDo6Qm94ICZhcmVhLCBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBHTGVudW0g
dHlwZSwgY29uc3Qgdm9pZCAqaW5wdXQpOwotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGxvYWRDb21w
cmVzc2VkRGF0YShjb25zdCBnbDo6Qm94ICZhcmVhLCBjb25zdCB2b2lkICppbnB1dCk7CisgICAg
Z2w6OkVycm9yIGxvYWREYXRhKGNvbnN0IGdsOjpCb3ggJmFyZWEsCisgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lk
ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhcHBseVNraXBJbWFnZXMpIG92
ZXJyaWRlOworICAgIGdsOjpFcnJvciBsb2FkQ29tcHJlc3NlZERhdGEoY29uc3QgZ2w6OkJveCAm
YXJlYSwgY29uc3Qgdm9pZCAqaW5wdXQpIG92ZXJyaWRlOwogCiAgICAgZ2w6OkVycm9yIGNvcHlG
cm9tVGV4U3RvcmFnZShjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW1hZ2VJbmRleCwgVGV4dHVyZVN0
b3JhZ2UgKnNvdXJjZSkgb3ZlcnJpZGU7CiAgICAgZ2w6OkVycm9yIGNvcHlGcm9tRnJhbWVidWZm
ZXIoY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvSW5wdXRMYXlvdXRDYWNoZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9JbnB1dExheW91dENhY2hlLmNwcAkocmV2aXNpb24gMjA3ODA0KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9JbnB1dExheW91dENhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMsNiArMTMsNyBAQAog
I2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Qcm9ncmFt
LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvVmVydGV4QXR0cmlidXRlLmgiCisjaW5jbHVkZSAibGli
QU5HTEUvVmVydGV4QXJyYXkuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvSW5k
ZXhEYXRhTWFuYWdlci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9Qcm9ncmFt
RDNELmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1ZlcnRleERhdGFNYW5hZ2Vy
LmgiCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL05hdGl2ZVdpbmRvdzExLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9OYXRpdmVXaW5kb3cxMS5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvTmF0aXZlV2luZG93MTEuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDM3IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gTmF0aXZlV2luZG93MTEuaDogRGVmaW5lcyBO
YXRpdmVXaW5kb3cxMSwgYSBjbGFzcyBmb3IgbWFuYWdpbmcgYW5kIHBlcmZvcm1pbmcgb3BlcmF0
aW9ucyBvbiBhbgorLy8gRUdMTmF0aXZlV2luZG93VHlwZSBmb3IgdGhlIEQzRDExIHJlbmRlcmVy
LgorCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9EM0QxMV9OQVRJVkVXSU5ET1cxMV9I
XworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfTkFUSVZFV0lORE9XMTFfSF8K
KworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorI2luY2x1ZGUgImNvbW1vbi9wbGF0Zm9ybS5o
IgorCisjaW5jbHVkZSAibGliQU5HTEUvQ29uZmlnLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvZDNkL05hdGl2ZVdpbmRvd0QzRC5oIgorCituYW1lc3BhY2UgcngKK3sKKworY2xhc3Mg
TmF0aXZlV2luZG93MTEgOiBwdWJsaWMgTmF0aXZlV2luZG93RDNECit7CisgIHB1YmxpYzoKKyAg
ICBOYXRpdmVXaW5kb3cxMShFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdykgOiBOYXRpdmVXaW5k
b3dEM0Qod2luZG93KSB7fQorCisgICAgdmlydHVhbCBIUkVTVUxUIGNyZWF0ZVN3YXBDaGFpbihJ
RDNEMTFEZXZpY2UgKmRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IElEWEdJRmFjdG9yeSAqZmFjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVJTlQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5U
IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEWEdJU3dhcENo
YWluICoqc3dhcENoYWluKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENoYW5nZSgpID0g
MDsKK307Cit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJF
Ul9EM0RfRDNEMTFfTkFUSVZFV0lORE9XMTFfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvTmF0aXZlV2luZG93LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9OYXRpdmVXaW5kb3cuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9OYXRpdmVXaW5kb3cu
aAkobm9uZXhpc3RlbnQpCkBAIC0xLDkxICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIw
MTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBOYXRp
dmVXaW5kb3cuaDogRGVmaW5lcyBOYXRpdmVXaW5kb3csIGEgY2xhc3MgZm9yIG1hbmFnaW5nIGFu
ZAotLy8gcGVyZm9ybWluZyBvcGVyYXRpb25zIG9uIGFuIEVHTE5hdGl2ZVdpbmRvd1R5cGUuCi0v
LyBJdCBpcyB1c2VkIGZvciBIV05EIChEZXNrdG9wIFdpbmRvd3MpIGFuZCBJSW5zcGVjdGFibGUg
b2JqZWN0cwotLy8oV2luZG93cyBTdG9yZSBBcHBsaWNhdGlvbnMpLgotCi0jaWZuZGVmIExJQkFO
R0xFX1JFTkRFUkVSX0QzRF9EM0QxMV9OQVRJVkVXSU5ET1dfSF8KLSNkZWZpbmUgTElCQU5HTEVf
UkVOREVSRVJfRDNEX0QzRDExX05BVElWRVdJTkRPV19IXwotCi0jaW5jbHVkZSAiY29tbW9uL2Rl
YnVnLmgiCi0jaW5jbHVkZSAiY29tbW9uL3BsYXRmb3JtLmgiCi0KLSNpbmNsdWRlIDxFR0wvZWds
cGxhdGZvcm0uaD4KLSNpbmNsdWRlICJsaWJBTkdMRS9Db25maWcuaCIKLQotLy8gRFhHSVN3YXBD
aGFpbiBhbmQgRFhHSUZhY3RvcnkgYXJlIHR5cGVkZWYnZCB0byBzcGVjaWZpYyByZXF1aXJlZAot
Ly8gdHlwZXMuIFRoZSBIV05EIE5hdGl2ZVdpbmRvdyBpbXBsZW1lbnRhdGlvbiByZXF1aXJlcyBJ
RFhHSVN3YXBDaGFpbgotLy8gYW5kIElEWEdJRmFjdG9yeSBhbmQgdGhlIFdpbmRvd3MgU3RvcmUg
TmF0aXZlV2luZG93Ci0vLyBpbXBsZW1lbnRhdGlvbiByZXF1aXJlcyBJRFhHSVN3YXBDaGFpbjEg
YW5kIElEWEdJRmFjdG9yeTIuCi0jaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfV0lORE9XU19TVE9S
RSkKLXR5cGVkZWYgSURYR0lTd2FwQ2hhaW4xIERYR0lTd2FwQ2hhaW47Ci10eXBlZGVmIElEWEdJ
RmFjdG9yeTIgRFhHSUZhY3Rvcnk7Ci0KLSNpbmNsdWRlIDx3cmwuaD4KLSNpbmNsdWRlIDx3cmwv
d3JhcHBlcnMvY29yZXdyYXBwZXJzLmg+Ci0jaW5jbHVkZSA8d2luZG93cy5hcHBsaWNhdGlvbm1v
ZGVsLmNvcmUuaD4KLSNpbmNsdWRlIDxtZW1vcnk+Ci0KLW5hbWVzcGFjZSByeAotewotY2xhc3Mg
SW5zcGVjdGFibGVOYXRpdmVXaW5kb3c7Ci19Ci0KLXVzaW5nIG5hbWVzcGFjZSBNaWNyb3NvZnQ6
OldSTDsKLXVzaW5nIG5hbWVzcGFjZSBNaWNyb3NvZnQ6OldSTDo6V3JhcHBlcnM7Ci0KLSNlbHNl
Ci10eXBlZGVmIElEWEdJU3dhcENoYWluIERYR0lTd2FwQ2hhaW47Ci10eXBlZGVmIElEWEdJRmFj
dG9yeSBEWEdJRmFjdG9yeTsKLSNlbmRpZgotCi10eXBlZGVmIGludGVyZmFjZSBJRENvbXBvc2l0
aW9uRGV2aWNlIElEQ29tcG9zaXRpb25EZXZpY2U7Ci10eXBlZGVmIGludGVyZmFjZSBJRENvbXBv
c2l0aW9uVGFyZ2V0IElEQ29tcG9zaXRpb25UYXJnZXQ7Ci10eXBlZGVmIGludGVyZmFjZSBJRENv
bXBvc2l0aW9uVmlzdWFsIElEQ29tcG9zaXRpb25WaXN1YWw7Ci0KLW5hbWVzcGFjZSByeAotewot
Ci1jbGFzcyBOYXRpdmVXaW5kb3cKLXsKLSAgcHVibGljOgotICAgIGV4cGxpY2l0IE5hdGl2ZVdp
bmRvdyhFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBkaXJlY3RDb21wb3NpdGlvbik7Ci0KLSAgICB+TmF0aXZlV2luZG93KCk7Ci0gICAgYm9v
bCBpbml0aWFsaXplKCk7Ci0gICAgYm9vbCBnZXRDbGllbnRSZWN0KExQUkVDVCByZWN0KTsKLSAg
ICBib29sIGlzSWNvbmljKCk7Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxpZE5hdGl2ZVdpbmRvdyhF
R0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdyk7Ci0KLSAgICBIUkVTVUxUIGNyZWF0ZVN3YXBDaGFp
bihJRDNEMTFEZXZpY2UqIGRldmljZSwgRFhHSUZhY3RvcnkqIGZhY3RvcnksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVQgZm9ybWF0LCBVSU5UIHdpZHRoLCBVSU5UIGhl
aWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJU3dhcENoYWluKiogc3dhcENo
YWluKTsKLQotICAgIGlubGluZSBFR0xOYXRpdmVXaW5kb3dUeXBlIGdldE5hdGl2ZVdpbmRvdygp
IGNvbnN0IHsgcmV0dXJuIG1XaW5kb3c7IH0KLQotICAgIHZvaWQgY29tbWl0Q2hhbmdlKCk7Ci0K
LSAgcHJpdmF0ZToKLSAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIG1XaW5kb3c7Ci0KLSAgICBib29s
IG1EaXJlY3RDb21wb3NpdGlvbjsKLSAgICBJRENvbXBvc2l0aW9uRGV2aWNlICptRGV2aWNlOwot
ICAgIElEQ29tcG9zaXRpb25UYXJnZXQgKm1Db21wb3NpdGlvblRhcmdldDsKLSAgICBJRENvbXBv
c2l0aW9uVmlzdWFsICptVmlzdWFsOwotICAgIGNvbnN0IGVnbDo6Q29uZmlnICptQ29uZmlnOwot
I2lmIGRlZmluZWQoQU5HTEVfRU5BQkxFX1dJTkRPV1NfU1RPUkUpCi0gICAgc3RkOjpzaGFyZWRf
cHRyPEluc3BlY3RhYmxlTmF0aXZlV2luZG93PiBtSW1wbDsKLSNlbmRpZgotCi19OwotCi19Ci0K
LSNlbmRpZiAvLyBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfTkFUSVZFV0lORE9XX0hfCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL1BpeGVsVHJhbnNmZXIxMS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9QaXhlbFRyYW5zZmVyMTEuY3Bw
CShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL1BpeGVsVHJhbnNmZXIxMS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE5Niw4ICsxOTYsOSBAQCBnbDo6RXJyb3IgUGl4ZWxUcmFuc2ZlcjExOjpjb3B5QnVmZmVy
VG9UCiAgICAgR0xlbnVtIHVuc2l6ZWRGb3JtYXQgPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZv
KGRlc3RpbmF0aW9uRm9ybWF0KS5mb3JtYXQ7CiAgICAgR0xlbnVtIHNvdXJjZUZvcm1hdCA9IGds
OjpHZXRTaXplZEludGVybmFsRm9ybWF0KHVuc2l6ZWRGb3JtYXQsIHNvdXJjZVBpeGVsc1R5cGUp
OwogCi0gICAgY29uc3QgZDNkMTE6OlRleHR1cmVGb3JtYXQgJnNvdXJjZUZvcm1hdEluZm8gPSBk
M2QxMTo6R2V0VGV4dHVyZUZvcm1hdEluZm8oc291cmNlRm9ybWF0LCBtUmVuZGVyZXItPmdldFJl
bmRlcmVyMTFEZXZpY2VDYXBzKCkpOwotICAgIERYR0lfRk9STUFUIHNydkZvcm1hdCA9IHNvdXJj
ZUZvcm1hdEluZm8uZm9ybWF0U2V0LT5zcnZGb3JtYXQ7CisgICAgY29uc3QgZDNkMTE6OkZvcm1h
dCAmc291cmNlRm9ybWF0SW5mbyA9CisgICAgICAgIGQzZDExOjpGb3JtYXQ6OkdldChzb3VyY2VG
b3JtYXQsIG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKSk7CisgICAgRFhHSV9G
T1JNQVQgc3J2Rm9ybWF0ID0gc291cmNlRm9ybWF0SW5mby5zcnZGb3JtYXQ7CiAgICAgQVNTRVJU
KHNydkZvcm1hdCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dOKTsKICAgICBCdWZmZXIxMSAqYnVmZmVy
U3RvcmFnZTExID0gR2V0QXM8QnVmZmVyMTE+KHNvdXJjZUJ1ZmZlci5nZXRJbXBsZW1lbnRhdGlv
bigpKTsKICAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKmJ1ZmZlclNSViA9IG51bGxwdHI7
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL1F1ZXJ5MTEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUXVlcnkxMS5jcHAJKHJldmlzaW9uIDIw
NzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvUXVlcnkxMS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcsMTIgKzcsMTMgQEAKIC8v
IFF1ZXJ5MTEuY3BwOiBEZWZpbmVzIHRoZSByeDo6UXVlcnkxMSBjbGFzcyB3aGljaCBpbXBsZW1l
bnRzIHJ4OjpRdWVyeUltcGwuCiAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvUXVlcnkxMS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5k
ZXJlcjExLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVy
MTFfdXRpbHMuaCIKLSNpbmNsdWRlICJjb21tb24vdXRpbGl0aWVzLmgiCiAKICNpbmNsdWRlIDxH
TEVTMi9nbDJleHQuaD4KIAorI2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKKyNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyZXIxMS5oIgorI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxzLmgiCisKIG5hbWVzcGFj
ZQogewogCkBAIC0zMyw2ICszNCw5IEBAIEdMdWludDY0IE1lcmdlUXVlcnlSZXN1bHRzKEdMZW51
bSB0eXBlLCAKICAgICAgICAgY2FzZSBHTF9USU1FU1RBTVBfRVhUOgogICAgICAgICAgICAgcmV0
dXJuIG5ld1Jlc3VsdDsKIAorICAgICAgICBjYXNlIEdMX0NPTU1BTkRTX0NPTVBMRVRFRF9DSFJP
TUlVTToKKyAgICAgICAgICAgIHJldHVybiBuZXdSZXN1bHQ7CisKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTky
LDE3ICs5NiwxMSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGdsOjpFcnJvciBRdWVyeTExOjpn
ZXRSZXN1bHRCYXNlKFQgKnBhcmFtcykKIHsKICAgICBBU1NFUlQobUFjdGl2ZVF1ZXJ5LT5xdWVy
eSA9PSBudWxscHRyKTsKLQotICAgIGdsOjpFcnJvciBlcnJvciA9IGZsdXNoKHRydWUpOwotICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAg
fQotCisgICAgQU5HTEVfVFJZKGZsdXNoKHRydWUpKTsKICAgICBBU1NFUlQobVBlbmRpbmdRdWVy
aWVzLmVtcHR5KCkpOwogICAgICpwYXJhbXMgPSBzdGF0aWNfY2FzdDxUPihtUmVzdWx0U3VtKTsK
IAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9F
cnJvcigpOwogfQogCiBnbDo6RXJyb3IgUXVlcnkxMTo6Z2V0UmVzdWx0KEdMaW50ICpwYXJhbXMp
CkBAIC0xMjcsMTQgKzEyNSwxMCBAQCBnbDo6RXJyb3IgUXVlcnkxMTo6Z2V0UmVzdWx0KEdMdWlu
dDY0ICpwCiAKIGdsOjpFcnJvciBRdWVyeTExOjppc1Jlc3VsdEF2YWlsYWJsZShib29sICphdmFp
bGFibGUpCiB7Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gZmx1c2goZmFsc2UpOwotICAgIGlmIChl
cnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAg
IEFOR0xFX1RSWShmbHVzaChmYWxzZSkpOwogCiAgICAgKmF2YWlsYWJsZSA9IG1QZW5kaW5nUXVl
cmllcy5lbXB0eSgpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJl
dHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgUXVlcnkxMTo6cGF1c2UoKQpAQCAt
MTQyLDkgKzEzNiwxMCBAQCBnbDo6RXJyb3IgUXVlcnkxMTo6cGF1c2UoKQogICAgIGlmIChtQWN0
aXZlUXVlcnktPnF1ZXJ5ICE9IG51bGxwdHIpCiAgICAgewogICAgICAgICBJRDNEMTFEZXZpY2VD
b250ZXh0ICpjb250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CisgICAgICAg
IEdMZW51bSBxdWVyeVR5cGUgICAgICAgICAgICAgPSBnZXRUeXBlKCk7CiAKICAgICAgICAgLy8g
SWYgd2UgYXJlIGRvaW5nIHRpbWUgZWxhcHNlZCBxdWVyeSB0aGUgZW5kIHRpbWVzdGFtcAotICAg
ICAgICBpZiAoZ2V0VHlwZSgpID09IEdMX1RJTUVfRUxBUFNFRF9FWFQpCisgICAgICAgIGlmIChx
dWVyeVR5cGUgPT0gR0xfVElNRV9FTEFQU0VEX0VYVCkKICAgICAgICAgewogICAgICAgICAgICAg
Y29udGV4dC0+RW5kKG1BY3RpdmVRdWVyeS0+ZW5kVGltZXN0YW1wKTsKICAgICAgICAgfQpAQCAt
MTYyLDE0ICsxNTcsMTMgQEAgZ2w6OkVycm9yIFF1ZXJ5MTE6OnJlc3VtZSgpCiB7CiAgICAgaWYg
KG1BY3RpdmVRdWVyeS0+cXVlcnkgPT0gbnVsbHB0cikKICAgICB7Ci0gICAgICAgIGdsOjpFcnJv
ciBlcnJvciA9IGZsdXNoKGZhbHNlKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9CisgICAgICAgIEFO
R0xFX1RSWShmbHVzaChmYWxzZSkpOworCisgICAgICAgIEdMZW51bSBxdWVyeVR5cGUgICAgICAg
ICA9IGdldFR5cGUoKTsKKyAgICAgICAgRDNEMTFfUVVFUlkgZDNkUXVlcnlUeXBlID0gZ2xfZDNk
MTE6OkNvbnZlcnRRdWVyeVR5cGUocXVlcnlUeXBlKTsKIAogICAgICAgICBEM0QxMV9RVUVSWV9E
RVNDIHF1ZXJ5RGVzYzsKLSAgICAgICAgcXVlcnlEZXNjLlF1ZXJ5ICAgICA9IGdsX2QzZDExOjpD
b252ZXJ0UXVlcnlUeXBlKGdldFR5cGUoKSk7CisgICAgICAgIHF1ZXJ5RGVzYy5RdWVyeSAgICAg
PSBkM2RRdWVyeVR5cGU7CiAgICAgICAgIHF1ZXJ5RGVzYy5NaXNjRmxhZ3MgPSAwOwogCiAgICAg
ICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKQEAgLTE4
Miw3ICsxNzYsNyBAQCBnbDo6RXJyb3IgUXVlcnkxMTo6cmVzdW1lKCkKICAgICAgICAgfQogCiAg
ICAgICAgIC8vIElmIHdlIGFyZSBkb2luZyB0aW1lIGVsYXBzZWQgd2UgYWxzbyBuZWVkIGEgcXVl
cnkgdG8gYWN0dWFsbHkgcXVlcnkgdGhlIHRpbWVzdGFtcAotICAgICAgICBpZiAoZ2V0VHlwZSgp
ID09IEdMX1RJTUVfRUxBUFNFRF9FWFQpCisgICAgICAgIGlmIChxdWVyeVR5cGUgPT0gR0xfVElN
RV9FTEFQU0VEX0VYVCkKICAgICAgICAgewogICAgICAgICAgICAgRDNEMTFfUVVFUllfREVTQyBk
ZXNjOwogICAgICAgICAgICAgZGVzYy5RdWVyeSAgICAgPSBEM0QxMV9RVUVSWV9USU1FU1RBTVA7
CkBAIC0yMDMsMTAgKzE5NywxMyBAQCBnbDo6RXJyb3IgUXVlcnkxMTo6cmVzdW1lKCkKIAogICAg
ICAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpjb250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VD
b250ZXh0KCk7CiAKLSAgICAgICAgY29udGV4dC0+QmVnaW4obUFjdGl2ZVF1ZXJ5LT5xdWVyeSk7
CisgICAgICAgIGlmIChkM2RRdWVyeVR5cGUgIT0gRDNEMTFfUVVFUllfRVZFTlQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGNvbnRleHQtPkJlZ2luKG1BY3RpdmVRdWVyeS0+cXVlcnkpOworICAg
ICAgICB9CiAKICAgICAgICAgLy8gSWYgd2UgYXJlIGRvaW5nIHRpbWUgZWxhcHNlZCwgcXVlcnkg
dGhlIGJlZ2luIHRpbWVzdGFtcAotICAgICAgICBpZiAoZ2V0VHlwZSgpID09IEdMX1RJTUVfRUxB
UFNFRF9FWFQpCisgICAgICAgIGlmIChxdWVyeVR5cGUgPT0gR0xfVElNRV9FTEFQU0VEX0VYVCkK
ICAgICAgICAgewogICAgICAgICAgICAgY29udGV4dC0+RW5kKG1BY3RpdmVRdWVyeS0+YmVnaW5U
aW1lc3RhbXApOwogICAgICAgICB9CkBAIC0yMjMsMTEgKzIyMCw3IEBAIGdsOjpFcnJvciBRdWVy
eTExOjpmbHVzaChib29sIGZvcmNlKQogCiAgICAgICAgIGRvCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGdsOjpFcnJvciBlcnJvciA9IHRlc3RRdWVyeShxdWVyeSk7Ci0gICAgICAgICAgICBpZiAo
ZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBl
cnJvcjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFOR0xFX1RSWSh0ZXN0UXVlcnkocXVl
cnkpKTsKICAgICAgICAgICAgIGlmICghcXVlcnktPmZpbmlzaGVkICYmICFmb3JjZSkKICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsK
QEAgLTIzOCw3ICsyMzEsNyBAQCBnbDo6RXJyb3IgUXVlcnkxMTo6Zmx1c2goYm9vbCBmb3JjZSkK
ICAgICAgICAgbVBlbmRpbmdRdWVyaWVzLnBvcF9mcm9udCgpOwogICAgIH0KIAotICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQog
CiBnbDo6RXJyb3IgUXVlcnkxMTo6dGVzdFF1ZXJ5KFF1ZXJ5U3RhdGUgKnF1ZXJ5U3RhdGUpCkBA
IC0zMzEsOSArMzI0LDE0IEBAIGdsOjpFcnJvciBRdWVyeTExOjp0ZXN0UXVlcnkoUXVlcnlTdGF0
ZSAKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRpY19hc3NlcnQoc2l6ZW9mKFVJTlQ2NCkgPT0gc2l6ZW9mKHVuc2lnbmVkIGxvbmcgbG9uZyks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEM0QgVUlOVDY0IGlzbid0
IDY0IGJpdHMiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyeDo6SXNVbnNpZ25lZE11
bHRpcGxpY2F0aW9uU2FmZShlbmRUaW1lIC0gYmVnaW5UaW1lLCAxMDAwMDAwMDAwdWxsKSkKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkNoZWNrZWROdW1lcmljPFVJTlQ2ND4gY2hl
Y2tlZFRpbWUoZW5kVGltZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkVGltZSAt
PSBiZWdpblRpbWU7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkVGltZSAqPSAxMDAw
MDAwMDAwdWxsOworICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZFRpbWUgLz0gdGltZVN0
YXRzLkZyZXF1ZW5jeTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGVja2VkVGltZS5J
c1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbVJlc3VsdCA9ICgoZW5kVGltZSAtIGJlZ2luVGltZSkgKiAxMDAwMDAwMDAwdWxs
KSAvIHRpbWVTdGF0cy5GcmVxdWVuY3k7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVJl
c3VsdCA9IGNoZWNrZWRUaW1lLlZhbHVlT3JEaWUoKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAg
IHsKQEAgLTM1OCw2ICszNTYsMjggQEAgZ2w6OkVycm9yIFF1ZXJ5MTE6OnRlc3RRdWVyeShRdWVy
eVN0YXRlIAogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgICAg
IGNhc2UgR0xfQ09NTUFORFNfQ09NUExFVEVEX0NIUk9NSVVNOgorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIEFTU0VSVChxdWVyeVN0YXRlLT5xdWVyeSk7CisgICAgICAgICAgICAgICAg
Qk9PTCBjb21wbGV0ZWQgPSAwOworICAgICAgICAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0KKyAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+R2V0RGF0YShxdWVyeVN0YXRlLT5xdWVyeSwgJmNv
bXBsZXRlZCwgc2l6ZW9mKGNvbXBsZXRlZCksIDApOworICAgICAgICAgICAgICAgIGlmIChGQUlM
RUQocmVzdWx0KSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiRmFpbGVkIHRvIGdldCB0aGUgZGF0YSBvZiBhbiBpbnRlcm5hbCBxdWVyeSwg
cmVzdWx0OiAweCVYLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09
IFNfT0spCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBxdWVyeVN0YXRl
LT5maW5pc2hlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjb21wbGV0ZWQg
PT0gVFJVRSk7CisgICAgICAgICAgICAgICAgICAgIG1SZXN1bHQgPSAoY29tcGxldGVkID09IFRS
VUUpID8gR0xfVFJVRSA6IEdMX0ZBTFNFOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zNzAsNyArMzkwLDcgQEAgZ2w6
OkVycm9yIFF1ZXJ5MTE6OnRlc3RRdWVyeShRdWVyeVN0YXRlIAogICAgICAgICB9CiAgICAgfQog
Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vy
cm9yKCk7CiB9CiAKLX0KK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJTdGF0ZUNhY2hl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclN0YXRlQ2FjaGUuY3BwCShyZXZpc2lvbiAyMDc4MDQp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL1JlbmRlclN0YXRlQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzYsNyArNDM2LDgg
QEAgZ2w6OkVycm9yIFJlbmRlclN0YXRlQ2FjaGU6OmdldFNhbXBsZXJTdAogICAgICAgICBzYW1w
bGVyRGVzYy5BZGRyZXNzViA9IGdsX2QzZDExOjpDb252ZXJ0VGV4dHVyZVdyYXAoc2FtcGxlclN0
YXRlLndyYXBUKTsKICAgICAgICAgc2FtcGxlckRlc2MuQWRkcmVzc1cgPSBnbF9kM2QxMTo6Q29u
dmVydFRleHR1cmVXcmFwKHNhbXBsZXJTdGF0ZS53cmFwUik7CiAgICAgICAgIHNhbXBsZXJEZXNj
Lk1pcExPREJpYXMgPSAwOwotICAgICAgICBzYW1wbGVyRGVzYy5NYXhBbmlzb3Ryb3B5ID0gc3Rh
dGljX2Nhc3Q8VUlOVD4oc2FtcGxlclN0YXRlLm1heEFuaXNvdHJvcHkpOworICAgICAgICBzYW1w
bGVyRGVzYy5NYXhBbmlzb3Ryb3B5ID0KKyAgICAgICAgICAgIGdsX2QzZDExOjpDb252ZXJ0TWF4
QW5pc290cm9weShzYW1wbGVyU3RhdGUubWF4QW5pc290cm9weSwgbURldmljZS0+R2V0RmVhdHVy
ZUxldmVsKCkpOwogICAgICAgICBzYW1wbGVyRGVzYy5Db21wYXJpc29uRnVuYyA9IGdsX2QzZDEx
OjpDb252ZXJ0Q29tcGFyaXNvbihzYW1wbGVyU3RhdGUuY29tcGFyZUZ1bmMpOwogICAgICAgICBz
YW1wbGVyRGVzYy5Cb3JkZXJDb2xvclswXSA9IDAuMGY7CiAgICAgICAgIHNhbXBsZXJEZXNjLkJv
cmRlckNvbG9yWzFdID0gMC4wZjsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyVGFyZ2V0MTEuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvUmVuZGVyVGFyZ2V0MTEuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclRhcmdldDEx
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgsNyArMTgsOSBAQAogbmFtZXNwYWNlIHJ4CiB7CiAK
LXN0YXRpYyBib29sIGdldFRleHR1cmVQcm9wZXJ0aWVzKElEM0QxMVJlc291cmNlICpyZXNvdXJj
ZSwgdW5zaWduZWQgaW50ICptaXBMZXZlbHMsIHVuc2lnbmVkIGludCAqc2FtcGxlcykKK25hbWVz
cGFjZQoreworYm9vbCBHZXRUZXh0dXJlUHJvcGVydGllcyhJRDNEMTFSZXNvdXJjZSAqcmVzb3Vy
Y2UsIHVuc2lnbmVkIGludCAqbWlwTGV2ZWxzLCB1bnNpZ25lZCBpbnQgKnNhbXBsZXMpCiB7CiAg
ICAgSUQzRDExVGV4dHVyZTFEICp0ZXh0dXJlMUQgPSBkM2QxMTo6RHluYW1pY0Nhc3RDb21PYmpl
Y3Q8SUQzRDExVGV4dHVyZTFEPihyZXNvdXJjZSk7CiAgICAgaWYgKHRleHR1cmUxRCkKQEAgLTYy
LDcgKzY0LDcgQEAgc3RhdGljIGJvb2wgZ2V0VGV4dHVyZVByb3BlcnRpZXMoSUQzRDExUgogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIHVuc2lnbmVkIGludCBnZXRSVFZTdWJyZXNvdXJj
ZUluZGV4KElEM0QxMVJlc291cmNlICpyZXNvdXJjZSwgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAq
dmlldykKK3Vuc2lnbmVkIGludCBHZXRSVFZTdWJyZXNvdXJjZUluZGV4KElEM0QxMVJlc291cmNl
ICpyZXNvdXJjZSwgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqdmlldykKIHsKICAgICBEM0QxMV9S
RU5ERVJfVEFSR0VUX1ZJRVdfREVTQyBydHZEZXNjOwogICAgIHZpZXctPkdldERlc2MoJnJ0dkRl
c2MpOwpAQCAtNzIsNTggKzc0LDU4IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0UlRWU3VicmVz
b3VyY2VJbmQKIAogICAgIHN3aXRjaCAocnR2RGVzYy5WaWV3RGltZW5zaW9uKQogICAgIHsKLSAg
ICAgIGNhc2UgRDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJFMUQ6Ci0gICAgICAgIG1pcFNsaWNl
ID0gcnR2RGVzYy5UZXh0dXJlMUQuTWlwU2xpY2U7Ci0gICAgICAgIGFycmF5U2xpY2UgPSAwOwot
ICAgICAgICBicmVhazsKLQotICAgICAgY2FzZSBEM0QxMV9SVFZfRElNRU5TSU9OX1RFWFRVUkUx
REFSUkFZOgotICAgICAgICBtaXBTbGljZSA9IHJ0dkRlc2MuVGV4dHVyZTFEQXJyYXkuTWlwU2xp
Y2U7Ci0gICAgICAgIGFycmF5U2xpY2UgPSBydHZEZXNjLlRleHR1cmUxREFycmF5LkZpcnN0QXJy
YXlTbGljZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGNhc2UgRDNEMTFfUlRWX0RJTUVOU0lP
Tl9URVhUVVJFMkQ6Ci0gICAgICAgIG1pcFNsaWNlID0gcnR2RGVzYy5UZXh0dXJlMkQuTWlwU2xp
Y2U7Ci0gICAgICAgIGFycmF5U2xpY2UgPSAwOwotICAgICAgICBicmVhazsKLQotICAgICAgY2Fz
ZSBEM0QxMV9SVFZfRElNRU5TSU9OX1RFWFRVUkUyREFSUkFZOgotICAgICAgICBtaXBTbGljZSA9
IHJ0dkRlc2MuVGV4dHVyZTJEQXJyYXkuTWlwU2xpY2U7Ci0gICAgICAgIGFycmF5U2xpY2UgPSBy
dHZEZXNjLlRleHR1cmUyREFycmF5LkZpcnN0QXJyYXlTbGljZTsKLSAgICAgICAgYnJlYWs7Ci0K
LSAgICAgIGNhc2UgRDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJFMkRNUzoKLSAgICAgICAgbWlw
U2xpY2UgPSAwOwotICAgICAgICBhcnJheVNsaWNlID0gMDsKLSAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgIGNhc2UgRDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJFMkRNU0FSUkFZOgotICAgICAgICBt
aXBTbGljZSA9IDA7Ci0gICAgICAgIGFycmF5U2xpY2UgPSBydHZEZXNjLlRleHR1cmUyRE1TQXJy
YXkuRmlyc3RBcnJheVNsaWNlOwotICAgICAgICBicmVhazsKLQotICAgICAgY2FzZSBEM0QxMV9S
VFZfRElNRU5TSU9OX1RFWFRVUkUzRDoKLSAgICAgICAgbWlwU2xpY2UgPSBydHZEZXNjLlRleHR1
cmUzRC5NaXBTbGljZTsKLSAgICAgICAgYXJyYXlTbGljZSA9IDA7Ci0gICAgICAgIGJyZWFrOwot
Ci0gICAgICBjYXNlIEQzRDExX1JUVl9ESU1FTlNJT05fVU5LTk9XTjoKLSAgICAgIGNhc2UgRDNE
MTFfUlRWX0RJTUVOU0lPTl9CVUZGRVI6Ci0gICAgICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTFEOgor
ICAgICAgICAgICAgbWlwU2xpY2UgICA9IHJ0dkRlc2MuVGV4dHVyZTFELk1pcFNsaWNlOworICAg
ICAgICAgICAgYXJyYXlTbGljZSA9IDA7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBj
YXNlIEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTFEQVJSQVk6CisgICAgICAgICAgICBtaXBT
bGljZSAgID0gcnR2RGVzYy5UZXh0dXJlMURBcnJheS5NaXBTbGljZTsKKyAgICAgICAgICAgIGFy
cmF5U2xpY2UgPSBydHZEZXNjLlRleHR1cmUxREFycmF5LkZpcnN0QXJyYXlTbGljZTsKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJF
MkQ6CisgICAgICAgICAgICBtaXBTbGljZSAgID0gcnR2RGVzYy5UZXh0dXJlMkQuTWlwU2xpY2U7
CisgICAgICAgICAgICBhcnJheVNsaWNlID0gMDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2UgRDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJFMkRBUlJBWToKKyAgICAgICAgICAg
IG1pcFNsaWNlICAgPSBydHZEZXNjLlRleHR1cmUyREFycmF5Lk1pcFNsaWNlOworICAgICAgICAg
ICAgYXJyYXlTbGljZSA9IHJ0dkRlc2MuVGV4dHVyZTJEQXJyYXkuRmlyc3RBcnJheVNsaWNlOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBEM0QxMV9SVFZfRElNRU5TSU9OX1RF
WFRVUkUyRE1TOgorICAgICAgICAgICAgbWlwU2xpY2UgICA9IDA7CisgICAgICAgICAgICBhcnJh
eVNsaWNlID0gMDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRDNEMTFfUlRW
X0RJTUVOU0lPTl9URVhUVVJFMkRNU0FSUkFZOgorICAgICAgICAgICAgbWlwU2xpY2UgICA9IDA7
CisgICAgICAgICAgICBhcnJheVNsaWNlID0gcnR2RGVzYy5UZXh0dXJlMkRNU0FycmF5LkZpcnN0
QXJyYXlTbGljZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRDNEMTFfUlRW
X0RJTUVOU0lPTl9URVhUVVJFM0Q6CisgICAgICAgICAgICBtaXBTbGljZSAgID0gcnR2RGVzYy5U
ZXh0dXJlM0QuTWlwU2xpY2U7CisgICAgICAgICAgICBhcnJheVNsaWNlID0gMDsKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRDNEMTFfUlRWX0RJTUVOU0lPTl9VTktOT1dOOgor
ICAgICAgICBjYXNlIEQzRDExX1JUVl9ESU1FTlNJT05fQlVGRkVSOgorICAgICAgICAgICAgVU5J
TVBMRU1FTlRFRCgpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBicmVhazsKICAgICB9CiAKICAg
ICB1bnNpZ25lZCBpbnQgbWlwTGV2ZWxzLCBzYW1wbGVzOwotICAgIGdldFRleHR1cmVQcm9wZXJ0
aWVzKHJlc291cmNlLCAgJm1pcExldmVscywgJnNhbXBsZXMpOworICAgIEdldFRleHR1cmVQcm9w
ZXJ0aWVzKHJlc291cmNlLCAmbWlwTGV2ZWxzLCAmc2FtcGxlcyk7CiAKICAgICByZXR1cm4gRDNE
MTFDYWxjU3VicmVzb3VyY2UobWlwU2xpY2UsIGFycmF5U2xpY2UsIG1pcExldmVscyk7CiB9CiAK
LXN0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0RFNWU3VicmVzb3VyY2VJbmRleChJRDNEMTFSZXNvdXJj
ZSAqcmVzb3VyY2UsIElEM0QxMURlcHRoU3RlbmNpbFZpZXcgKnZpZXcpCit1bnNpZ25lZCBpbnQg
R2V0RFNWU3VicmVzb3VyY2VJbmRleChJRDNEMTFSZXNvdXJjZSAqcmVzb3VyY2UsIElEM0QxMURl
cHRoU3RlbmNpbFZpZXcgKnZpZXcpCiB7CiAgICAgRDNEMTFfREVQVEhfU1RFTkNJTF9WSUVXX0RF
U0MgZHN2RGVzYzsKICAgICB2aWV3LT5HZXREZXNjKCZkc3ZEZXNjKTsKQEAgLTEzMyw3NiArMTM1
LDgwIEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0RFNWU3VicmVzb3VyY2VJbmQKIAogICAgIHN3
aXRjaCAoZHN2RGVzYy5WaWV3RGltZW5zaW9uKQogICAgIHsKLSAgICAgIGNhc2UgRDNEMTFfRFNW
X0RJTUVOU0lPTl9URVhUVVJFMUQ6Ci0gICAgICAgIG1pcFNsaWNlID0gZHN2RGVzYy5UZXh0dXJl
MUQuTWlwU2xpY2U7Ci0gICAgICAgIGFycmF5U2xpY2UgPSAwOwotICAgICAgICBicmVhazsKLQot
ICAgICAgY2FzZSBEM0QxMV9EU1ZfRElNRU5TSU9OX1RFWFRVUkUxREFSUkFZOgotICAgICAgICBt
aXBTbGljZSA9IGRzdkRlc2MuVGV4dHVyZTFEQXJyYXkuTWlwU2xpY2U7Ci0gICAgICAgIGFycmF5
U2xpY2UgPSBkc3ZEZXNjLlRleHR1cmUxREFycmF5LkZpcnN0QXJyYXlTbGljZTsKLSAgICAgICAg
YnJlYWs7Ci0KLSAgICAgIGNhc2UgRDNEMTFfRFNWX0RJTUVOU0lPTl9URVhUVVJFMkQ6Ci0gICAg
ICAgIG1pcFNsaWNlID0gZHN2RGVzYy5UZXh0dXJlMkQuTWlwU2xpY2U7Ci0gICAgICAgIGFycmF5
U2xpY2UgPSAwOwotICAgICAgICBicmVhazsKLQotICAgICAgY2FzZSBEM0QxMV9EU1ZfRElNRU5T
SU9OX1RFWFRVUkUyREFSUkFZOgotICAgICAgICBtaXBTbGljZSA9IGRzdkRlc2MuVGV4dHVyZTJE
QXJyYXkuTWlwU2xpY2U7Ci0gICAgICAgIGFycmF5U2xpY2UgPSBkc3ZEZXNjLlRleHR1cmUyREFy
cmF5LkZpcnN0QXJyYXlTbGljZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGNhc2UgRDNEMTFf
RFNWX0RJTUVOU0lPTl9URVhUVVJFMkRNUzoKLSAgICAgICAgbWlwU2xpY2UgPSAwOwotICAgICAg
ICBhcnJheVNsaWNlID0gMDsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGNhc2UgRDNEMTFfRFNW
X0RJTUVOU0lPTl9URVhUVVJFMkRNU0FSUkFZOgotICAgICAgICBtaXBTbGljZSA9IDA7Ci0gICAg
ICAgIGFycmF5U2xpY2UgPSBkc3ZEZXNjLlRleHR1cmUyRE1TQXJyYXkuRmlyc3RBcnJheVNsaWNl
OwotICAgICAgICBicmVhazsKLQotICAgICAgY2FzZSBEM0QxMV9EU1ZfRElNRU5TSU9OX1VOS05P
V046Ci0gICAgICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEQzRDExX0RTVl9ESU1FTlNJT05fVEVYVFVSRTFEOgorICAgICAgICAgICAgbWlwU2xpY2Ug
ICA9IGRzdkRlc2MuVGV4dHVyZTFELk1pcFNsaWNlOworICAgICAgICAgICAgYXJyYXlTbGljZSA9
IDA7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEQzRDExX0RTVl9ESU1FTlNJ
T05fVEVYVFVSRTFEQVJSQVk6CisgICAgICAgICAgICBtaXBTbGljZSAgID0gZHN2RGVzYy5UZXh0
dXJlMURBcnJheS5NaXBTbGljZTsKKyAgICAgICAgICAgIGFycmF5U2xpY2UgPSBkc3ZEZXNjLlRl
eHR1cmUxREFycmF5LkZpcnN0QXJyYXlTbGljZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2UgRDNEMTFfRFNWX0RJTUVOU0lPTl9URVhUVVJFMkQ6CisgICAgICAgICAgICBtaXBT
bGljZSAgID0gZHN2RGVzYy5UZXh0dXJlMkQuTWlwU2xpY2U7CisgICAgICAgICAgICBhcnJheVNs
aWNlID0gMDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRDNEMTFfRFNWX0RJ
TUVOU0lPTl9URVhUVVJFMkRBUlJBWToKKyAgICAgICAgICAgIG1pcFNsaWNlICAgPSBkc3ZEZXNj
LlRleHR1cmUyREFycmF5Lk1pcFNsaWNlOworICAgICAgICAgICAgYXJyYXlTbGljZSA9IGRzdkRl
c2MuVGV4dHVyZTJEQXJyYXkuRmlyc3RBcnJheVNsaWNlOworICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgY2FzZSBEM0QxMV9EU1ZfRElNRU5TSU9OX1RFWFRVUkUyRE1TOgorICAgICAgICAg
ICAgbWlwU2xpY2UgICA9IDA7CisgICAgICAgICAgICBhcnJheVNsaWNlID0gMDsKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRDNEMTFfRFNWX0RJTUVOU0lPTl9URVhUVVJFMkRN
U0FSUkFZOgorICAgICAgICAgICAgbWlwU2xpY2UgICA9IDA7CisgICAgICAgICAgICBhcnJheVNs
aWNlID0gZHN2RGVzYy5UZXh0dXJlMkRNU0FycmF5LkZpcnN0QXJyYXlTbGljZTsKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRDNEMTFfRFNWX0RJTUVOU0lPTl9VTktOT1dOOgor
ICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBicmVh
azsKICAgICB9CiAKICAgICB1bnNpZ25lZCBpbnQgbWlwTGV2ZWxzLCBzYW1wbGVzOwotICAgIGdl
dFRleHR1cmVQcm9wZXJ0aWVzKHJlc291cmNlLCAmbWlwTGV2ZWxzLCAmc2FtcGxlcyk7CisgICAg
R2V0VGV4dHVyZVByb3BlcnRpZXMocmVzb3VyY2UsICZtaXBMZXZlbHMsICZzYW1wbGVzKTsKIAog
ICAgIHJldHVybiBEM0QxMUNhbGNTdWJyZXNvdXJjZShtaXBTbGljZSwgYXJyYXlTbGljZSwgbWlw
TGV2ZWxzKTsKIH0KIAotUmVuZGVyVGFyZ2V0MTE6OlJlbmRlclRhcmdldDExKGQzZDExOjpBTkdM
RUZvcm1hdCBhbmdsZUZvcm1hdCkgOiBtQU5HTEVGb3JtYXQoYW5nbGVGb3JtYXQpCitHTGVudW0g
R2V0U3VyZmFjZVJURm9ybWF0KGJvb2wgZGVwdGgsIFN3YXBDaGFpbjExICpzd2FwQ2hhaW4pCiB7
CisgICAgcmV0dXJuIChkZXB0aCA/IHN3YXBDaGFpbi0+Z2V0RGVwdGhCdWZmZXJJbnRlcm5hbEZv
cm1hdCgpCisgICAgICAgICAgICAgICAgICA6IHN3YXBDaGFpbi0+Z2V0UmVuZGVyVGFyZ2V0SW50
ZXJuYWxGb3JtYXQoKSk7CiB9CiAKLVJlbmRlclRhcmdldDExOjp+UmVuZGVyVGFyZ2V0MTEoKQor
Y29uc3QgZDNkMTE6OkZvcm1hdCAmR2V0U3VyZmFjZUZvcm1hdFNldChib29sIGRlcHRoLCBTd2Fw
Q2hhaW4xMSAqc3dhcENoYWluLCBSZW5kZXJlcjExICpyZW5kZXJlcikKIHsKLSAgICBzaWduYWxE
aXJ0eSgpOworICAgIHJldHVybiBkM2QxMTo6Rm9ybWF0OjpHZXQoR2V0U3VyZmFjZVJURm9ybWF0
KGRlcHRoLCBzd2FwQ2hhaW4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVy
ZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCkpOwogfQogCi12b2lkIFJlbmRlclRhcmdldDEx
OjphZGREaXJ0eUNhbGxiYWNrKGNvbnN0IE5vdGlmaWNhdGlvbkNhbGxiYWNrICpjYWxsYmFjaykK
K30gIC8vIGFub255bW91cyBuYW1lc3BhY2UKKworUmVuZGVyVGFyZ2V0MTE6OlJlbmRlclRhcmdl
dDExKGNvbnN0IGQzZDExOjpGb3JtYXQgJmZvcm1hdFNldCkgOiBtRm9ybWF0U2V0KGZvcm1hdFNl
dCkKIHsKLSAgICBtRGlydHlDYWxsYmFja3MuYWRkKGNhbGxiYWNrKTsKIH0KIAotdm9pZCBSZW5k
ZXJUYXJnZXQxMTo6cmVtb3ZlRGlydHlDYWxsYmFjayhjb25zdCBOb3RpZmljYXRpb25DYWxsYmFj
ayAqY2FsbGJhY2spCitSZW5kZXJUYXJnZXQxMTo6flJlbmRlclRhcmdldDExKCkKIHsKLSAgICBt
RGlydHlDYWxsYmFja3MucmVtb3ZlKGNhbGxiYWNrKTsKKyAgICBzaWduYWxEaXJ0eSgpOwogfQog
CiB2b2lkIFJlbmRlclRhcmdldDExOjpzaWduYWxEaXJ0eSgpCiB7Ci0gICAgbURpcnR5Q2FsbGJh
Y2tzLnNpZ25hbCgpOworICAgIG1Ccm9hZGNhc3RDaGFubmVsLnNpZ25hbCgpOwogCi0gICAgLy8g
Q2xlYXIgdGhlIHNpZ25hbCBsaXN0LiBXZSBjYW4ndCBkbyB0aGlzIGluIHRoZSBjYWxsYmFjayBi
ZWNhdXNlIGl0IG11dGF0ZXMgdGhlIGl0ZXJhdG9yLgotICAgIG1EaXJ0eUNhbGxiYWNrcy5jbGVh
cigpOworICAgIC8vIENsZWFyIHRoZSBsaXN0LiBXZSBjYW4ndCBkbyB0aGlzIGluIHRoZSByZWNl
aXZlciBiZWNhdXNlIGl0IHdvdWxkIG11dGF0ZSBkdXJpbmcgaXRlcmF0aW9uLgorICAgIG1Ccm9h
ZGNhc3RDaGFubmVsLnJlc2V0KCk7CiB9CiAKIFRleHR1cmVSZW5kZXJUYXJnZXQxMTo6VGV4dHVy
ZVJlbmRlclRhcmdldDExKElEM0QxMVJlbmRlclRhcmdldFZpZXcgKnJ0diwKQEAgLTIxMCwxMiAr
MjE2LDEyIEBAIFRleHR1cmVSZW5kZXJUYXJnZXQxMTo6VGV4dHVyZVJlbmRlclRhcmcKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMVNoYWRlclJlc291
cmNlVmlldyAqc3J2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpibGl0U1JWLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDNkMTE6OkFOR0xFRm9ybWF0
IGFuZ2xlRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZDNkMTE6OkZvcm1hdCAmZm9ybWF0U2V0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcykKLSAg
ICA6IFJlbmRlclRhcmdldDExKGFuZ2xlRm9ybWF0KSwKKyAgICA6IFJlbmRlclRhcmdldDExKGZv
cm1hdFNldCksCiAgICAgICBtV2lkdGgod2lkdGgpLAogICAgICAgbUhlaWdodChoZWlnaHQpLAog
ICAgICAgbURlcHRoKGRlcHRoKSwKQEAgLTI1MCwyMSArMjU2LDIxIEBAIFRleHR1cmVSZW5kZXJU
YXJnZXQxMTo6VGV4dHVyZVJlbmRlclRhcmcKIAogICAgIGlmIChtUmVuZGVyVGFyZ2V0ICYmIG1U
ZXh0dXJlKQogICAgIHsKLSAgICAgICAgbVN1YnJlc291cmNlSW5kZXggPSBnZXRSVFZTdWJyZXNv
dXJjZUluZGV4KG1UZXh0dXJlLCBtUmVuZGVyVGFyZ2V0KTsKKyAgICAgICAgbVN1YnJlc291cmNl
SW5kZXggPSBHZXRSVFZTdWJyZXNvdXJjZUluZGV4KG1UZXh0dXJlLCBtUmVuZGVyVGFyZ2V0KTsK
ICAgICB9Ci0gICAgQVNTRVJUKG1BTkdMRUZvcm1hdCAhPSBkM2QxMTo6QU5HTEVfRk9STUFUX05P
TkUgfHwgbVdpZHRoID09IDAgfHwgbUhlaWdodCA9PSAwKTsKKyAgICBBU1NFUlQobUZvcm1hdFNl
dC5mb3JtYXQuaWQgIT0gYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUgfHwgbVdpZHRoID09IDAgfHwg
bUhlaWdodCA9PSAwKTsKIH0KIAogVGV4dHVyZVJlbmRlclRhcmdldDExOjpUZXh0dXJlUmVuZGVy
VGFyZ2V0MTEoSUQzRDExRGVwdGhTdGVuY2lsVmlldyAqZHN2LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSUQzRDExUmVzb3VyY2UgKnJlc291cmNlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUQzRDExU2hhZGVyUmVz
b3VyY2VWaWV3ICpzcnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkM2QxMTo6QU5HTEVGb3JtYXQgYW5nbGVGb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkM2QxMTo6Rm9ybWF0
ICZmb3JtYXRTZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGRlcHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzKQotICAgIDogUmVuZGVyVGFyZ2V0MTEoYW5n
bGVGb3JtYXQpLAorICAgIDogUmVuZGVyVGFyZ2V0MTEoZm9ybWF0U2V0KSwKICAgICAgIG1XaWR0
aCh3aWR0aCksCiAgICAgICBtSGVpZ2h0KGhlaWdodCksCiAgICAgICBtRGVwdGgoZGVwdGgpLApA
QCAtMjk0LDkgKzMwMCw5IEBAIFRleHR1cmVSZW5kZXJUYXJnZXQxMTo6VGV4dHVyZVJlbmRlclRh
cmcKIAogICAgIGlmIChtRGVwdGhTdGVuY2lsICYmIG1UZXh0dXJlKQogICAgIHsKLSAgICAgICAg
bVN1YnJlc291cmNlSW5kZXggPSBnZXREU1ZTdWJyZXNvdXJjZUluZGV4KG1UZXh0dXJlLCBtRGVw
dGhTdGVuY2lsKTsKKyAgICAgICAgbVN1YnJlc291cmNlSW5kZXggPSBHZXREU1ZTdWJyZXNvdXJj
ZUluZGV4KG1UZXh0dXJlLCBtRGVwdGhTdGVuY2lsKTsKICAgICB9Ci0gICAgQVNTRVJUKG1BTkdM
RUZvcm1hdCAhPSBkM2QxMTo6QU5HTEVfRk9STUFUX05PTkUgfHwgbVdpZHRoID09IDAgfHwgbUhl
aWdodCA9PSAwKTsKKyAgICBBU1NFUlQobUZvcm1hdFNldC5mb3JtYXQuaWQgIT0gYW5nbGU6OkZv
cm1hdDo6SUQ6Ok5PTkUgfHwgbVdpZHRoID09IDAgfHwgbUhlaWdodCA9PSAwKTsKIH0KIAogVGV4
dHVyZVJlbmRlclRhcmdldDExOjp+VGV4dHVyZVJlbmRlclRhcmdldDExKCkKQEAgLTM2NiwxNiAr
MzcyLDExIEBAIHVuc2lnbmVkIGludCBUZXh0dXJlUmVuZGVyVGFyZ2V0MTE6OmdldFMKIFN1cmZh
Y2VSZW5kZXJUYXJnZXQxMTo6U3VyZmFjZVJlbmRlclRhcmdldDExKFN3YXBDaGFpbjExICpzd2Fw
Q2hhaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5k
ZXJlcjExICpyZW5kZXJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgZGVwdGgpCi0gICAgOiBSZW5kZXJUYXJnZXQxMShkM2QxMTo6QU5HTEVfRk9S
TUFUX05PTkUpLCAgLy8gZm9ybWF0IHdpbGwgYmUgZGV0ZXJtaW5lZCBpbiBjb25zdHJ1Y3RvciBi
b2R5CisgICAgOiBSZW5kZXJUYXJnZXQxMShHZXRTdXJmYWNlRm9ybWF0U2V0KGRlcHRoLCBzd2Fw
Q2hhaW4sIHJlbmRlcmVyKSksCiAgICAgICBtU3dhcENoYWluKHN3YXBDaGFpbiksCi0gICAgICBt
UmVuZGVyZXIocmVuZGVyZXIpLAogICAgICAgbURlcHRoKGRlcHRoKQogewogICAgIEFTU0VSVCht
U3dhcENoYWluKTsKLQotICAgIG1BTkdMRUZvcm1hdCA9IGQzZDExOjpHZXRUZXh0dXJlRm9ybWF0
SW5mbyhnZXRJbnRlcm5hbEZvcm1hdEludGVybmFsKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNh
cHMoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdFNldC0+Zm9ybWF0OwogfQogCiBT
dXJmYWNlUmVuZGVyVGFyZ2V0MTE6On5TdXJmYWNlUmVuZGVyVGFyZ2V0MTEoKQpAQCAtMzk5LDEy
ICs0MDAsNyBAQCBHTHNpemVpIFN1cmZhY2VSZW5kZXJUYXJnZXQxMTo6Z2V0RGVwdGgoCiAKIEdM
ZW51bSBTdXJmYWNlUmVuZGVyVGFyZ2V0MTE6OmdldEludGVybmFsRm9ybWF0KCkgY29uc3QKIHsK
LSAgICByZXR1cm4gZ2V0SW50ZXJuYWxGb3JtYXRJbnRlcm5hbCgpOwotfQotCi1HTGVudW0gU3Vy
ZmFjZVJlbmRlclRhcmdldDExOjpnZXRJbnRlcm5hbEZvcm1hdEludGVybmFsKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gKG1EZXB0aCA/IG1Td2FwQ2hhaW4tPkdldERlcHRoQnVmZmVySW50ZXJuYWxG
b3JtYXQoKSA6IG1Td2FwQ2hhaW4tPkdldFJlbmRlclRhcmdldEludGVybmFsRm9ybWF0KCkpOwor
ICAgIHJldHVybiBHZXRTdXJmYWNlUlRGb3JtYXQobURlcHRoLCBtU3dhcENoYWluKTsKIH0KIAog
R0xzaXplaSBTdXJmYWNlUmVuZGVyVGFyZ2V0MTE6OmdldFNhbXBsZXMoKSBjb25zdApAQCAtNDQ1
LDQgKzQ0MSw0IEBAIHVuc2lnbmVkIGludCBTdXJmYWNlUmVuZGVyVGFyZ2V0MTE6OmdldFMKICAg
ICByZXR1cm4gMDsKIH0KIAotfQorfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclRhcmdl
dDExLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJUYXJnZXQxMS5oCShyZXZpc2lvbiAyMDc4MDQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L1JlbmRlclRhcmdldDExLmgJKHdvcmtpbmcgY29weSkKQEAgLTExLDkgKzExLDkgQEAKICNkZWZp
bmUgTElCQU5HTEVfUkVOREVSRVJfRDNEX0QzRDExX1JFTkRFUlRBUkdFVDExX0hfCiAKICNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyVGFyZ2V0RDNELmgiCi0jaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlLmgiCiAKLSNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvcmVuZGVyZXIxMV91dGlscy5oIgor
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJs
ZS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3NpZ25hbF91dGlscy5oIgogCiBuYW1lc3BhY2UgcngK
IHsKQEAgLTIzLDcgKzIzLDcgQEAgY2xhc3MgUmVuZGVyZXIxMTsKIGNsYXNzIFJlbmRlclRhcmdl
dDExIDogcHVibGljIFJlbmRlclRhcmdldEQzRAogewogICBwdWJsaWM6Ci0gICAgUmVuZGVyVGFy
Z2V0MTEoZDNkMTE6OkFOR0xFRm9ybWF0IGFuZ2xlRm9ybWF0KTsKKyAgICBSZW5kZXJUYXJnZXQx
MShjb25zdCBkM2QxMTo6Rm9ybWF0ICZmb3JtYXRTZXQpOwogICAgIHZpcnR1YWwgflJlbmRlclRh
cmdldDExKCk7CiAKICAgICB2aXJ0dWFsIElEM0QxMVJlc291cmNlICpnZXRUZXh0dXJlKCkgY29u
c3QgPSAwOwpAQCAtMzQsMTUgKzM0LDE0IEBAIGNsYXNzIFJlbmRlclRhcmdldDExIDogcHVibGlj
IFJlbmRlclRhcmcKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFN1YnJlc291cmNlSW5k
ZXgoKSBjb25zdCA9IDA7CiAKLSAgICB2b2lkIGFkZERpcnR5Q2FsbGJhY2soY29uc3QgTm90aWZp
Y2F0aW9uQ2FsbGJhY2sgKmNhbGxiYWNrKTsKLSAgICB2b2lkIHJlbW92ZURpcnR5Q2FsbGJhY2so
Y29uc3QgTm90aWZpY2F0aW9uQ2FsbGJhY2sgKmNhbGxiYWNrKTsKICAgICB2b2lkIHNpZ25hbERp
cnR5KCkgb3ZlcnJpZGU7CisgICAgYW5nbGU6OkJyb2FkY2FzdENoYW5uZWwgKmdldEJyb2FkY2Fz
dENoYW5uZWwoKSB7IHJldHVybiAmbUJyb2FkY2FzdENoYW5uZWw7IH0KIAotICAgIGQzZDExOjpB
TkdMRUZvcm1hdCBnZXRBTkdMRUZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1BTkdMRUZvcm1hdDsg
fQorICAgIGNvbnN0IGQzZDExOjpGb3JtYXQgJmdldEZvcm1hdFNldCgpIGNvbnN0IHsgcmV0dXJu
IG1Gb3JtYXRTZXQ7IH0KIAogICBwcm90ZWN0ZWQ6Ci0gICAgTm90aWZpY2F0aW9uU2V0IG1EaXJ0
eUNhbGxiYWNrczsKLSAgICBkM2QxMTo6QU5HTEVGb3JtYXQgbUFOR0xFRm9ybWF0OworICAgIGFu
Z2xlOjpCcm9hZGNhc3RDaGFubmVsIG1Ccm9hZGNhc3RDaGFubmVsOworICAgIGNvbnN0IGQzZDEx
OjpGb3JtYXQgJm1Gb3JtYXRTZXQ7CiB9OwogCiBjbGFzcyBUZXh0dXJlUmVuZGVyVGFyZ2V0MTEg
OiBwdWJsaWMgUmVuZGVyVGFyZ2V0MTEKQEAgLTU0LDcgKzUzLDcgQEAgY2xhc3MgVGV4dHVyZVJl
bmRlclRhcmdldDExIDogcHVibGljIFJlbgogICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNE
MTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNydiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgSUQz
RDExU2hhZGVyUmVzb3VyY2VWaWV3ICpibGl0U1JWLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGQzZDEx
OjpBTkdMRUZvcm1hdCBhbmdsZUZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZDNkMTE6OkZvcm1hdCAmZm9ybWF0U2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCwKQEAgLTYzLDcgKzYyLDcg
QEAgY2xhc3MgVGV4dHVyZVJlbmRlclRhcmdldDExIDogcHVibGljIFJlbgogICAgICAgICAgICAg
ICAgICAgICAgICAgICBJRDNEMTFSZXNvdXJjZSAqcmVzb3VyY2UsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc3J2LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIGQzZDExOjpBTkdMRUZvcm1hdCBhbmdsZUZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZDNkMTE6OkZvcm1hdCAmZm9ybWF0U2V0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCwKQEAgLTEy
MywxNSArMTIyLDEwIEBAIGNsYXNzIFN1cmZhY2VSZW5kZXJUYXJnZXQxMSA6IHB1YmxpYyBSZW4K
ICAgICB1bnNpZ25lZCBpbnQgZ2V0U3VicmVzb3VyY2VJbmRleCgpIGNvbnN0IG92ZXJyaWRlOwog
CiAgIHByaXZhdGU6Ci0gICAgLy8gVGhlIGludGVybmFsIHZlcnNpb25zIG9mIHRoZSBmdW5jdGlv
bnMgYXJlIG5lZWRlZCBzbyB0aGF0IHRoZXkgY2FuIGJlIHNhZmVseSBjYWxsZWQKLSAgICAvLyBm
cm9tIHRoZSBjb25zdHJ1Y3Rvci4KLSAgICBHTGVudW0gZ2V0SW50ZXJuYWxGb3JtYXRJbnRlcm5h
bCgpIGNvbnN0OwotCiAgICAgU3dhcENoYWluMTEgKm1Td2FwQ2hhaW47Ci0gICAgUmVuZGVyZXIx
MSAqbVJlbmRlcmVyOwogICAgIGJvb2wgbURlcHRoOwogfTsKIAotfQorfSAgLy8gbmFtZXNwYWNl
IHJ4CiAKICNlbmRpZiAvLyBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfUkVOREVSVEFSR0VU
MTFfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvUmVuZGVyZXIxMS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmNwcAko
cmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOSw2
ICs5LDcgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyZXIx
MS5oIgogCiAjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgorI2luY2x1ZGUgPGlvbWFuaXA+CiAjaW5j
bHVkZSA8c3N0cmVhbT4KICNpbmNsdWRlIDx2ZXJzaW9uaGVscGVycy5oPgogCkBAIC0yMSwxMCAr
MjIsMTMgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1lbnQuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9oaXN0b2dyYW1fbWFjcm9zLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
UHJvZ3JhbS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3JlbmRlcmVyX3V0aWxzLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL0NvbXBpbGVyRDNELmgiCisjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL0Rpc3BsYXlEM0QuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvQmxpdDExLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL0J1ZmZlcjExLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL0NsZWFyMTEuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
Q29udGV4dDExLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lf
c3VwcG9ydF90YWJsZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9G
ZW5jZTExLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2Zvcm1hdHV0
aWxzMTEuaCIKQEAgLTM2LDEwICs0MCwxMSBAQAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL1JlbmRlclRhcmdldDExLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL1NoYWRlckV4ZWN1dGFibGUxMS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9TdHJlYW0xMS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9TdHJlYW1Qcm9kdWNlck5WMTIuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvU3dhcENoYWluMTEuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfdGFibGUuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvVGV4dHVyZVN0b3JhZ2UxMS5oIgorI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9UcmFuc2Zvcm1GZWVkYmFjazExLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1RyaW0xMS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9WZXJ0ZXhBcnJheTExLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL1ZlcnRleEJ1ZmZlcjExLmgiCkBAIC01MiwxMiArNTcsMTcgQEAKICNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvU2hhZGVyRDNELmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZDNkL1N1cmZhY2VEM0QuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvVGV4dHVyZUQzRC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9U
cmFuc2Zvcm1GZWVkYmFja0QzRC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9W
ZXJ0ZXhEYXRhTWFuYWdlci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1N0YXRlLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvU3VyZmFjZS5oIgogI2luY2x1ZGUgInRoaXJkX3BhcnR5L3RyYWNlX2V2ZW50
L3RyYWNlX2V2ZW50LmgiCiAKKyNpZmRlZiBBTkdMRV9FTkFCTEVfV0lORE9XU19TVE9SRQorI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW5ydC9OYXRpdmVXaW5kb3cxMVdp
blJULmgiCisjZWxzZQorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW4z
Mi9OYXRpdmVXaW5kb3cxMVdpbjMyLmgiCisjZW5kaWYKKwogLy8gSW5jbHVkZSB0aGUgRDNEOSBk
ZWJ1ZyBhbm5vdGF0b3IgaGVhZGVyIGZvciB1c2UgYnkgdGhlIGRlc2t0b3AgRDNEMTEgcmVuZGVy
ZXIKIC8vIGJlY2F1c2UgdGhlIEQzRDExIGludGVyZmFjZSBtZXRob2QgSUQzRFVzZXJEZWZpbmVk
QW5ub3RhdGlvbjo6R2V0U3RhdHVzCiAvLyBkb2Vzbid0IHdvcmsgd2l0aCB0aGUgR3JhcGhpY3Mg
RGlhZ25vc3RpY3MgdG9vbHMgaW4gVmlzdWFsIFN0dWRpbyAyMDEzLgpAQCAtMzc4LDYgKzM4OCwx
MSBAQCBpbnQgR2V0V3JhcEJpdHMoR0xlbnVtIHdyYXApCiAgICAgfQogfQogCisvLyBJZiB3ZSBy
ZXF1ZXN0IGEgc2NyYXRjaCBidWZmZXIgcmVxdWVzdGluZyBhIHNtYWxsZXIgc2l6ZSB0aGlzIG1h
bnkgdGltZXMsCisvLyByZWxlYXNlIGFuZCByZWNyZWF0ZSB0aGUgc2NyYXRjaCBidWZmZXIuIFRo
aXMgZW5zdXJlcyB3ZSBkb24ndCBoYXZlIGEKKy8vIGRlZ2VuZXJhdGUgY2FzZSB3aGVyZSB3ZSBh
cmUgc3R1Y2sgaG9nZ2luZyBtZW1vcnkuCitjb25zdCBpbnQgU2NyYXRjaE1lbW9yeUJ1ZmZlckxp
ZmV0aW1lID0gMTAwMDsKKwogfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCiBSZW5kZXJlcjEx
OjpSZW5kZXJlcjExKGVnbDo6RGlzcGxheSAqZGlzcGxheSkKQEAgLTM4NSw3ICs0MDAsOSBAQCBS
ZW5kZXJlcjExOjpSZW5kZXJlcjExKGVnbDo6RGlzcGxheSAqZGlzCiAgICAgICBtU3RhdGVDYWNo
ZSh0aGlzKSwKICAgICAgIG1TdGF0ZU1hbmFnZXIodGhpcyksCiAgICAgICBtTGFzdEhpc3RvZ3Jh
bVVwZGF0ZVRpbWUoQU5HTEVQbGF0Zm9ybUN1cnJlbnQoKS0+bW9ub3RvbmljYWxseUluY3JlYXNp
bmdUaW1lKCkpLAotICAgICAgbURlYnVnKG51bGxwdHIpCisgICAgICBtRGVidWcobnVsbHB0ciks
CisgICAgICBtU2NyYXRjaE1lbW9yeUJ1ZmZlclJlc2V0Q291bnRlcigwKSwKKyAgICAgIG1Bbm5v
dGF0b3IobnVsbHB0cikKIHsKICAgICBtVmVydGV4RGF0YU1hbmFnZXIgPSBOVUxMOwogICAgIG1J
bmRleERhdGFNYW5hZ2VyID0gTlVMTDsKQEAgLTQyOSw3ICs0NDYsNyBAQCBSZW5kZXJlcjExOjpS
ZW5kZXJlcjExKGVnbDo6RGlzcGxheSAqZGlzCiAgICAgbUFwcGxpZWRHZW9tZXRyeVNoYWRlciA9
IE5VTEw7CiAgICAgbUFwcGxpZWRQaXhlbFNoYWRlciA9IE5VTEw7CiAKLSAgICBtQXBwbGllZE51
bVhGQkJpbmRpbmdzID0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSk7CisgICAgbUFwcGxpZWRURk9i
amVjdCA9IGFuZ2xlOjpEaXJ0eVBvaW50ZXI7CiAKICAgICBaZXJvTWVtb3J5KCZtQWRhcHRlckRl
c2NyaXB0aW9uLCBzaXplb2YobUFkYXB0ZXJEZXNjcmlwdGlvbikpOwogCkBAIC01MDcsNyArNTI0
LDE4IEBAIFJlbmRlcmVyMTE6OlJlbmRlcmVyMTEoZWdsOjpEaXNwbGF5ICpkaXMKICAgICAgICAg
bVByZXNlbnRQYXRoRmFzdEVuYWJsZWQgPSBmYWxzZTsKICAgICB9CiAKLSAgICBpbml0aWFsaXpl
RGVidWdBbm5vdGF0b3IoKTsKKy8vIFRoZSBEM0QxMSByZW5kZXJlciBtdXN0IGNob29zZSB0aGUg
RDNEOSBkZWJ1ZyBhbm5vdGF0b3IgYmVjYXVzZSB0aGUgRDNEMTEgaW50ZXJmYWNlCisvLyBtZXRo
b2QgSUQzRFVzZXJEZWZpbmVkQW5ub3RhdGlvbjo6R2V0U3RhdHVzIG9uIGRlc2t0b3AgYnVpbGRz
IGRvZXNuJ3Qgd29yayB3aXRoIHRoZSBHcmFwaGljcworLy8gRGlhZ25vc3RpY3MgdG9vbHMgaW4g
VmlzdWFsIFN0dWRpbyAyMDEzLgorLy8gVGhlIEQzRDkgYW5ub3RhdG9yIHdvcmtzIHByb3Blcmx5
IGZvciBib3RoIEQzRDExIGFuZCBEM0Q5LgorLy8gSW5jb3JyZWN0IHN0YXR1cyByZXBvcnRpbmcg
Y2FuIGNhdXNlIEFOR0xFIHRvIGxvZyB1bm5lY2Vzc2FyeSBkZWJ1ZyBldmVudHMuCisjaWZkZWYg
QU5HTEVfRU5BQkxFX0QzRDkKKyAgICBtQW5ub3RhdG9yID0gbmV3IERlYnVnQW5ub3RhdG9yOSgp
OworI2Vsc2UKKyAgICBtQW5ub3RhdG9yID0gbmV3IERlYnVnQW5ub3RhdG9yMTEoKTsKKyNlbmRp
ZgorICAgIEFTU0VSVChtQW5ub3RhdG9yKTsKKyAgICBnbDo6SW5pdGlhbGl6ZURlYnVnQW5ub3Rh
dGlvbnMobUFubm90YXRvcik7CiB9CiAKIFJlbmRlcmVyMTE6On5SZW5kZXJlcjExKCkKQEAgLTUy
MywxMSArNTUxLDcgQEAgZWdsOjpFcnJvciBSZW5kZXJlcjExOjppbml0aWFsaXplKCkKIHsKICAg
ICBIUkVTVUxUIHJlc3VsdCA9IFNfT0s7CiAKLSAgICBlZ2w6OkVycm9yIGVycm9yID0gaW5pdGlh
bGl6ZUQzRERldmljZSgpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAg
ICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShpbml0aWFsaXplRDNERGV2aWNl
KCkpOwogCiAjaWYgIWRlZmluZWQoQU5HTEVfRU5BQkxFX1dJTkRPV1NfU1RPUkUpCiAjaWYgIUFO
R0xFX1NLSVBfRFhHSV8xXzJfQ0hFQ0sKQEAgLTc0OSwxMSArNzczLDcgQEAgZWdsOjpFcnJvciBS
ZW5kZXJlcjExOjppbml0aWFsaXplRDNERGV2aQogICAgIHsKICAgICAgICAgLy8gV2Ugc2hvdWxk
IHVzZSB0aGUgaW5wdXR0ZWQgRDNEMTEgZGV2aWNlIGluc3RlYWQKICAgICAgICAgdm9pZCAqZGV2
aWNlICAgICA9IG51bGxwdHI7Ci0gICAgICAgIGVnbDo6RXJyb3IgZXJyb3IgPSBtRUdMRGV2aWNl
LT5nZXREZXZpY2UoJmRldmljZSk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBBTkdM
RV9UUlkobUVHTERldmljZS0+Z2V0RGV2aWNlKCZkZXZpY2UpKTsKIAogICAgICAgICBJRDNEMTFE
ZXZpY2UgKmQzZERldmljZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SUQzRDExRGV2aWNlICo+KGRldmlj
ZSk7CiAgICAgICAgIGlmIChGQUlMRUQoZDNkRGV2aWNlLT5HZXREZXZpY2VSZW1vdmVkUmVhc29u
KCkpKQpAQCAtODE4LDcgKzgzOCw3IEBAIHZvaWQgUmVuZGVyZXIxMTo6aW5pdGlhbGl6ZURldmlj
ZSgpCiAgICAgQVNTRVJUKCFtUGl4ZWxUcmFuc2Zlcik7CiAgICAgbVBpeGVsVHJhbnNmZXIgPSBu
ZXcgUGl4ZWxUcmFuc2ZlcjExKHRoaXMpOwogCi0gICAgY29uc3QgZ2w6OkNhcHMgJnJlbmRlcmVy
Q2FwcyA9IGdldFJlbmRlcmVyQ2FwcygpOworICAgIGNvbnN0IGdsOjpDYXBzICZyZW5kZXJlckNh
cHMgPSBnZXROYXRpdmVDYXBzKCk7CiAKICAgICBtU3RhdGVNYW5hZ2VyLmluaXRpYWxpemUocmVu
ZGVyZXJDYXBzKTsKIApAQCAtODU3LDYgKzg3NywxOCBAQCB2b2lkIFJlbmRlcmVyMTE6OnBvcHVs
YXRlUmVuZGVyZXIxMURldmljCiB7CiAgICAgSFJFU1VMVCBociA9IFNfT0s7CiAKKyAgICBMQVJH
RV9JTlRFR0VSIHZlcnNpb247CisgICAgaHIgPSBtRHhnaUFkYXB0ZXItPkNoZWNrSW50ZXJmYWNl
U3VwcG9ydChfX3V1aWRvZihJRFhHSURldmljZSksICZ2ZXJzaW9uKTsKKyAgICBpZiAoRkFJTEVE
KGhyKSkKKyAgICB7CisgICAgICAgIG1SZW5kZXJlcjExRGV2aWNlQ2Fwcy5kcml2ZXJWZXJzaW9u
LnJlc2V0KCk7CisgICAgICAgIEVSUigiRXJyb3IgcXVlcnlpbmcgZHJpdmVyIHZlcnNpb24gZnJv
bSBEWEdJIEFkYXB0ZXIuIik7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1SZW5k
ZXJlcjExRGV2aWNlQ2Fwcy5kcml2ZXJWZXJzaW9uID0gdmVyc2lvbjsKKyAgICB9CisKICAgICBp
ZiAobURldmljZUNvbnRleHQxKQogICAgIHsKICAgICAgICAgRDNEMTFfRkVBVFVSRV9EQVRBX0Qz
RDExX09QVElPTlMgZDNkMTFPcHRpb25zOwpAQCAtODY4LDExICs5MDAsMTkgQEAgdm9pZCBSZW5k
ZXJlcjExOjpwb3B1bGF0ZVJlbmRlcmVyMTFEZXZpYwogICAgICAgICB9CiAgICAgfQogCi0gICAg
aHIgPSBtRGV2aWNlLT5DaGVja0Zvcm1hdFN1cHBvcnQoRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JN
LCAmKG1SZW5kZXJlcjExRGV2aWNlQ2Fwcy5CNUc2UjVzdXBwb3J0KSk7Ci0gICAgaWYgKEZBSUxF
RChocikpCisgICAgaWYgKGdldFdvcmthcm91bmRzKCkuZGlzYWJsZUI1RzZSNVN1cHBvcnQpCiAg
ICAgewogICAgICAgICBtUmVuZGVyZXIxMURldmljZUNhcHMuQjVHNlI1c3VwcG9ydCA9IDA7CiAg
ICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGhyID0gbURldmljZS0+Q2hlY2tGb3JtYXRT
dXBwb3J0KERYR0lfRk9STUFUX0I1RzZSNV9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJihtUmVuZGVyZXIxMURldmljZUNhcHMuQjVHNlI1c3VwcG9ydCkp
OworICAgICAgICBpZiAoRkFJTEVEKGhyKSkKKyAgICAgICAgeworICAgICAgICAgICAgbVJlbmRl
cmVyMTFEZXZpY2VDYXBzLkI1RzZSNXN1cHBvcnQgPSAwOworICAgICAgICB9CisgICAgfQogCiAg
ICAgaHIgPSBtRGV2aWNlLT5DaGVja0Zvcm1hdFN1cHBvcnQoRFhHSV9GT1JNQVRfQjRHNFI0QTRf
VU5PUk0sICYobVJlbmRlcmVyMTFEZXZpY2VDYXBzLkI0RzRSNEE0c3VwcG9ydCkpOwogICAgIGlm
IChGQUlMRUQoaHIpKQpAQCAtODkxLDcgKzkzMSw3IEBAIHZvaWQgUmVuZGVyZXIxMTo6cG9wdWxh
dGVSZW5kZXJlcjExRGV2aWMKICAgICBTYWZlUmVsZWFzZShkeGdpQWRhcHRlcjIpOwogfQogCi1l
Z2w6OkNvbmZpZ1NldCBSZW5kZXJlcjExOjpnZW5lcmF0ZUNvbmZpZ3MoKSBjb25zdAorZWdsOjpD
b25maWdTZXQgUmVuZGVyZXIxMTo6Z2VuZXJhdGVDb25maWdzKCkKIHsKICAgICBzdGQ6OnZlY3Rv
cjxHTGVudW0+IGNvbG9yQnVmZmVyRm9ybWF0czsKIApAQCAtOTE5LDggKzk1OSw4IEBAIGVnbDo6
Q29uZmlnU2V0IFJlbmRlcmVyMTE6OmdlbmVyYXRlQ29uZmkKICAgICAgICAgR0xfREVQVEhfQ09N
UE9ORU5UMTYsCiAgICAgfTsKIAotICAgIGNvbnN0IGdsOjpDYXBzICZyZW5kZXJlckNhcHMgPSBn
ZXRSZW5kZXJlckNhcHMoKTsKLSAgICBjb25zdCBnbDo6VGV4dHVyZUNhcHNNYXAgJnJlbmRlcmVy
VGV4dHVyZUNhcHMgPSBnZXRSZW5kZXJlclRleHR1cmVDYXBzKCk7CisgICAgY29uc3QgZ2w6OkNh
cHMgJnJlbmRlcmVyQ2FwcyAgICAgICAgICAgICAgICAgID0gZ2V0TmF0aXZlQ2FwcygpOworICAg
IGNvbnN0IGdsOjpUZXh0dXJlQ2Fwc01hcCAmcmVuZGVyZXJUZXh0dXJlQ2FwcyA9IGdldE5hdGl2
ZVRleHR1cmVDYXBzKCk7CiAKICAgICBjb25zdCBFR0xpbnQgb3B0aW1hbFN1cmZhY2VPcmllbnRh
dGlvbiA9CiAgICAgICAgIG1QcmVzZW50UGF0aEZhc3RFbmFibGVkID8gMCA6IEVHTF9TVVJGQUNF
X09SSUVOVEFUSU9OX0lOVkVSVF9ZX0FOR0xFOwpAQCAtOTQ4LDYgKzk4OCw3IEBAIGVnbDo6Q29u
ZmlnU2V0IFJlbmRlcmVyMTE6OmdlbmVyYXRlQ29uZmkKICAgICAgICAgICAgICAgICBnbDo6R2V0
SW50ZXJuYWxGb3JtYXRJbmZvKGNvbG9yQnVmZmVySW50ZXJuYWxGb3JtYXQpOwogICAgICAgICAg
ICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZkZXB0aFN0ZW5jaWxCdWZmZXJGb3JtYXRJbmZv
ID0KICAgICAgICAgICAgICAgICBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGRlcHRoU3RlbmNp
bEJ1ZmZlckludGVybmFsRm9ybWF0KTsKKyAgICAgICAgICAgIGNvbnN0IGdsOjpWZXJzaW9uICZt
YXhWZXJzaW9uID0gZ2V0TWF4U3VwcG9ydGVkRVNWZXJzaW9uKCk7CiAKICAgICAgICAgICAgIGVn
bDo6Q29uZmlnIGNvbmZpZzsKICAgICAgICAgICAgIGNvbmZpZy5yZW5kZXJUYXJnZXRGb3JtYXQg
PSBjb2xvckJ1ZmZlckludGVybmFsRm9ybWF0OwpAQCAtOTY1LDE1ICsxMDA2LDIyIEBAIGVnbDo6
Q29uZmlnU2V0IFJlbmRlcmVyMTE6OmdlbmVyYXRlQ29uZmkKICAgICAgICAgICAgIGNvbmZpZy5j
b2xvckJ1ZmZlclR5cGUgPSBFR0xfUkdCX0JVRkZFUjsKICAgICAgICAgICAgIGNvbmZpZy5jb25m
aWdDYXZlYXQgICAgPSBFR0xfTk9ORTsKICAgICAgICAgICAgIGNvbmZpZy5jb25maWdJRCAgICAg
ICAgPSBzdGF0aWNfY2FzdDxFR0xpbnQ+KGNvbmZpZ3Muc2l6ZSgpICsgMSk7Ci0gICAgICAgICAg
ICAvLyBDYW4gb25seSBzdXBwb3J0IGEgY29uZm9ybWFudCBFUzIgd2l0aCBmZWF0dXJlIGxldmVs
IGdyZWF0ZXIgdGhhbiAxMC4wLgotICAgICAgICAgICAgY29uZmlnLmNvbmZvcm1hbnQgPSAobVJl
bmRlcmVyMTFEZXZpY2VDYXBzLmZlYXR1cmVMZXZlbCA+PSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8w
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAoRUdMX09QRU5HTF9FUzJf
QklUIHwgRUdMX09QRU5HTF9FUzNfQklUX0tIUikKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDogMDsKIAogICAgICAgICAgICAgLy8gUHJlc2VudFBhdGhGYXN0IG1heSBub3Qg
YmUgY29uZm9ybWFudAotICAgICAgICAgICAgaWYgKG1QcmVzZW50UGF0aEZhc3RFbmFibGVkKQor
ICAgICAgICAgICAgY29uZmlnLmNvbmZvcm1hbnQgPSAwOworICAgICAgICAgICAgaWYgKCFtUHJl
c2VudFBhdGhGYXN0RW5hYmxlZCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25m
aWcuY29uZm9ybWFudCA9IDA7CisgICAgICAgICAgICAgICAgLy8gQ2FuIG9ubHkgc3VwcG9ydCBh
IGNvbmZvcm1hbnQgRVMyIHdpdGggZmVhdHVyZSBsZXZlbCBncmVhdGVyIHRoYW4gMTAuMC4KKyAg
ICAgICAgICAgICAgICBpZiAobVJlbmRlcmVyMTFEZXZpY2VDYXBzLmZlYXR1cmVMZXZlbCA+PSBE
M0RfRkVBVFVSRV9MRVZFTF8xMF8wKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgY29uZmlnLmNvbmZvcm1hbnQgfD0gRUdMX09QRU5HTF9FUzJfQklUOworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFdlIGNhbiBvbmx5IHN1cHBvcnQgY29uZm9y
bWFudCBFUzMgb24gRkwgMTAuMSsKKyAgICAgICAgICAgICAgICBpZiAobWF4VmVyc2lvbi5tYWpv
ciA+PSAzKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29uZmlnLmNv
bmZvcm1hbnQgfD0gRUdMX09QRU5HTF9FUzNfQklUX0tIUjsKKyAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGNvbmZpZy5kZXB0aFNpemUgICAgICAgICA9IGRl
cHRoU3RlbmNpbEJ1ZmZlckZvcm1hdEluZm8uZGVwdGhCaXRzOwpAQCAtOTg3LDExICsxMDM1LDE0
IEBAIGVnbDo6Q29uZmlnU2V0IFJlbmRlcmVyMTE6OmdlbmVyYXRlQ29uZmkKICAgICAgICAgICAg
IGNvbmZpZy5uYXRpdmVSZW5kZXJhYmxlICA9IEVHTF9GQUxTRTsKICAgICAgICAgICAgIGNvbmZp
Zy5uYXRpdmVWaXN1YWxJRCAgICA9IDA7CiAgICAgICAgICAgICBjb25maWcubmF0aXZlVmlzdWFs
VHlwZSAgPSBFR0xfTk9ORTsKLSAgICAgICAgICAgIC8vIENhbid0IHN1cHBvcnQgRVMzIGF0IGFs
bCB3aXRob3V0IGZlYXR1cmUgbGV2ZWwgMTAuMAotICAgICAgICAgICAgY29uZmlnLnJlbmRlcmFi
bGVUeXBlID0KLSAgICAgICAgICAgICAgICBFR0xfT1BFTkdMX0VTMl9CSVQgfCAoKG1SZW5kZXJl
cjExRGV2aWNlQ2Fwcy5mZWF0dXJlTGV2ZWwgPj0gRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMCkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gRUdMX09QRU5HTF9FUzNf
QklUX0tIUgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwKTsK
KworICAgICAgICAgICAgLy8gQ2FuJ3Qgc3VwcG9ydCBFUzMgYXQgYWxsIHdpdGhvdXQgZmVhdHVy
ZSBsZXZlbCAxMC4xCisgICAgICAgICAgICBjb25maWcucmVuZGVyYWJsZVR5cGUgPSBFR0xfT1BF
TkdMX0VTMl9CSVQ7CisgICAgICAgICAgICBpZiAobWF4VmVyc2lvbi5tYWpvciA+PSAzKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbmZpZy5yZW5kZXJhYmxlVHlwZSB8PSBFR0xf
T1BFTkdMX0VTM19CSVRfS0hSOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBjb25maWcu
c2FtcGxlQnVmZmVycyAgICAgICAgID0gMDsgIC8vIEZJWE1FOiBlbnVtZXJhdGUgbXVsdGktc2Ft
cGxpbmcKICAgICAgICAgICAgIGNvbmZpZy5zYW1wbGVzICAgICAgICAgICAgICAgPSAwOwogICAg
ICAgICAgICAgY29uZmlnLnN0ZW5jaWxTaXplICAgICAgICAgICA9IGRlcHRoU3RlbmNpbEJ1ZmZl
ckZvcm1hdEluZm8uc3RlbmNpbEJpdHM7CkBAIC0xMDMwLDIyICsxMDgxLDI4IEBAIHZvaWQgUmVu
ZGVyZXIxMTo6Z2VuZXJhdGVEaXNwbGF5RXh0ZW5zaW8KICAgICAvLyBEM0QxMSBkb2VzIG5vdCBz
dXBwb3J0IHByZXNlbnQgd2l0aCBkaXJ0eSByZWN0YW5nbGVzIHVudGlsIERYR0kgMS4yLgogICAg
IG91dEV4dGVuc2lvbnMtPnBvc3RTdWJCdWZmZXIgPSBtUmVuZGVyZXIxMURldmljZUNhcHMuc3Vw
cG9ydHNEWEdJMV8yOwogCi0gICAgb3V0RXh0ZW5zaW9ucy0+Y3JlYXRlQ29udGV4dCA9IHRydWU7
Ci0KICAgICBvdXRFeHRlbnNpb25zLT5kZXZpY2VRdWVyeSA9IHRydWU7CiAKLSAgICBvdXRFeHRl
bnNpb25zLT5jcmVhdGVDb250ZXh0Tm9FcnJvciA9IHRydWU7Ci0KICAgICBvdXRFeHRlbnNpb25z
LT5pbWFnZSAgICAgICAgICAgICAgICAgPSB0cnVlOwogICAgIG91dEV4dGVuc2lvbnMtPmltYWdl
QmFzZSAgICAgICAgICAgICA9IHRydWU7CiAgICAgb3V0RXh0ZW5zaW9ucy0+Z2xUZXh0dXJlMkRJ
bWFnZSAgICAgID0gdHJ1ZTsKICAgICBvdXRFeHRlbnNpb25zLT5nbFRleHR1cmVDdWJlbWFwSW1h
Z2UgPSB0cnVlOwogICAgIG91dEV4dGVuc2lvbnMtPmdsUmVuZGVyYnVmZmVySW1hZ2UgICA9IHRy
dWU7CiAKLSAgICBvdXRFeHRlbnNpb25zLT5zdHJlYW0gPSB0cnVlOworICAgIG91dEV4dGVuc2lv
bnMtPnN0cmVhbSAgICAgICAgICAgICAgICAgICAgID0gdHJ1ZTsKKyAgICBvdXRFeHRlbnNpb25z
LT5zdHJlYW1Db25zdW1lckdMVGV4dHVyZSAgICA9IHRydWU7CisgICAgb3V0RXh0ZW5zaW9ucy0+
c3RyZWFtQ29uc3VtZXJHTFRleHR1cmVZVVYgPSB0cnVlOworICAgIC8vIE5vdCBhbGwgRDNEMTEg
ZGV2aWNlcyBzdXBwb3J0IE5WMTIgdGV4dHVyZXMKKyAgICBpZiAoZ2V0TlYxMlRleHR1cmVTdXBw
b3J0KCkpCisgICAgeworICAgICAgICBvdXRFeHRlbnNpb25zLT5zdHJlYW1Qcm9kdWNlckQzRFRl
eHR1cmVOVjEyID0gdHJ1ZTsKKyAgICB9CiAKICAgICBvdXRFeHRlbnNpb25zLT5mbGV4aWJsZVN1
cmZhY2VDb21wYXRpYmlsaXR5ID0gdHJ1ZTsKICAgICBvdXRFeHRlbnNpb25zLT5kaXJlY3RDb21w
b3NpdGlvbiAgICAgICAgICAgID0gISFtRENvbXBNb2R1bGU7CisKKyAgICAvLyBnZXRTeW5jVmFs
dWVzIHJlcXVpcmVzIGRpcmVjdCBjb21wb3NpdGlvbi4KKyAgICBvdXRFeHRlbnNpb25zLT5nZXRT
eW5jVmFsdWVzID0gb3V0RXh0ZW5zaW9ucy0+ZGlyZWN0Q29tcG9zaXRpb247CiB9CiAKIGdsOjpF
cnJvciBSZW5kZXJlcjExOjpmbHVzaCgpCkBAIC0xMDczLDExICsxMTMwLDE1IEBAIGdsOjpFcnJv
ciBSZW5kZXJlcjExOjpmaW5pc2goKQogICAgIH0KIAogICAgIG1EZXZpY2VDb250ZXh0LT5FbmQo
bVN5bmNRdWVyeSk7Ci0gICAgbURldmljZUNvbnRleHQtPkZsdXNoKCk7CiAKKyAgICB1bnNpZ25l
ZCBpbnQgYXR0ZW1wdCA9IDA7CiAgICAgZG8KICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IG1EZXZp
Y2VDb250ZXh0LT5HZXREYXRhKG1TeW5jUXVlcnksIE5VTEwsIDAsIEQzRDExX0FTWU5DX0dFVERB
VEFfRE9OT1RGTFVTSCk7CisgICAgICAgIHVuc2lnbmVkIGludCBmbHVzaEZyZXF1ZW5jeSA9IDEw
MDsKKyAgICAgICAgVUlOVCBmbGFncyA9IChhdHRlbXB0ICUgZmx1c2hGcmVxdWVuY3kgPT0gMCkg
PyAwIDogRDNEMTFfQVNZTkNfR0VUREFUQV9ET05PVEZMVVNIOworICAgICAgICBhdHRlbXB0Kys7
CisKKyAgICAgICAgcmVzdWx0ID0gbURldmljZUNvbnRleHQtPkdldERhdGEobVN5bmNRdWVyeSwg
TlVMTCwgMCwgZmxhZ3MpOwogICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0
byBnZXQgZXZlbnQgcXVlcnkgZGF0YSwgcmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7CkBAIC0xMDk3
LDI2ICsxMTU4LDM3IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpmaW5pc2goKQogICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi1Td2FwQ2hhaW5EM0QgKlJlbmRlcmVyMTE6
OmNyZWF0ZVN3YXBDaGFpbihOYXRpdmVXaW5kb3cgbmF0aXZlV2luZG93LAorYm9vbCBSZW5kZXJl
cjExOjppc1ZhbGlkTmF0aXZlV2luZG93KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KSBjb25z
dAoreworI2lmZGVmIEFOR0xFX0VOQUJMRV9XSU5ET1dTX1NUT1JFCisgICAgcmV0dXJuIE5hdGl2
ZVdpbmRvdzExV2luUlQ6OklzVmFsaWROYXRpdmVXaW5kb3cod2luZG93KTsKKyNlbHNlCisgICAg
cmV0dXJuIE5hdGl2ZVdpbmRvdzExV2luMzI6OklzVmFsaWROYXRpdmVXaW5kb3cod2luZG93KTsK
KyNlbmRpZgorfQorCitOYXRpdmVXaW5kb3dEM0QgKlJlbmRlcmVyMTE6OmNyZWF0ZU5hdGl2ZVdp
bmRvdyhFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0
dHJpYnV0ZU1hcCAmYXR0cmlicykgY29uc3QKK3sKKyNpZmRlZiBBTkdMRV9FTkFCTEVfV0lORE9X
U19TVE9SRQorICAgIFVOVVNFRF9WQVJJQUJMRShhdHRyaWJzKTsKKyAgICByZXR1cm4gbmV3IE5h
dGl2ZVdpbmRvdzExV2luUlQod2luZG93LCBjb25maWctPmFscGhhU2l6ZSA+IDApOworI2Vsc2UK
KyAgICByZXR1cm4gbmV3IE5hdGl2ZVdpbmRvdzExV2luMzIoCisgICAgICAgIHdpbmRvdywgY29u
ZmlnLT5hbHBoYVNpemUgPiAwLAorICAgICAgICBhdHRyaWJzLmdldChFR0xfRElSRUNUX0NPTVBP
U0lUSU9OX0FOR0xFLCBFR0xfRkFMU0UpID09IEVHTF9UUlVFKTsKKyNlbmRpZgorfQorCitTd2Fw
Q2hhaW5EM0QgKlJlbmRlcmVyMTE6OmNyZWF0ZVN3YXBDaGFpbihOYXRpdmVXaW5kb3dEM0QgKm5h
dGl2ZVdpbmRvdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhB
TkRMRSBzaGFyZUhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBiYWNrQnVmZmVyRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGRlcHRoQnVmZmVyRm9ybWF0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IG9yaWVudGF0aW9uKQogewotICAgIHJl
dHVybiBuZXcgU3dhcENoYWluMTEodGhpcywgbmF0aXZlV2luZG93LCBzaGFyZUhhbmRsZSwgYmFj
a0J1ZmZlckZvcm1hdCwgZGVwdGhCdWZmZXJGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICBvcmllbnRhdGlvbik7Ci19Ci0KLUNvbXBpbGVySW1wbCAqUmVuZGVyZXIxMTo6Y3JlYXRl
Q29tcGlsZXIoKQotewotICAgIGlmIChtUmVuZGVyZXIxMURldmljZUNhcHMuZmVhdHVyZUxldmVs
IDw9IEQzRF9GRUFUVVJFX0xFVkVMXzlfMykKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgQ29t
cGlsZXJEM0QoU0hfSExTTF80XzBfRkw5XzNfT1VUUFVUKTsKLSAgICB9Ci0gICAgZWxzZQotICAg
IHsKLSAgICAgICAgcmV0dXJuIG5ldyBDb21waWxlckQzRChTSF9ITFNMXzRfMV9PVVRQVVQpOwot
ICAgIH0KKyAgICByZXR1cm4gbmV3IFN3YXBDaGFpbjExKHRoaXMsIEdldEFzPE5hdGl2ZVdpbmRv
dzExPihuYXRpdmVXaW5kb3cpLCBzaGFyZUhhbmRsZSwgYmFja0J1ZmZlckZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlcHRoQnVmZmVyRm9ybWF0LCBvcmllbnRhdGlvbik7CiB9
CiAKIHZvaWQgKlJlbmRlcmVyMTE6OmdldEQzRERldmljZSgpCkBAIC0xMTMyLDI5ICsxMjA0LDQ5
IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpnZW5lcmF0ZVN3aXp6bGUoZ2wKICAgICAgICAgQVNT
RVJUKHRleHR1cmVEM0QpOwogCiAgICAgICAgIFRleHR1cmVTdG9yYWdlICp0ZXhTdG9yYWdlID0g
bnVsbHB0cjsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gdGV4dHVyZUQzRC0+Z2V0TmF0aXZl
VGV4dHVyZSgmdGV4U3RvcmFnZSk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBBTkdM
RV9UUlkodGV4dHVyZUQzRC0+Z2V0TmF0aXZlVGV4dHVyZSgmdGV4U3RvcmFnZSkpOwogCiAgICAg
ICAgIGlmICh0ZXhTdG9yYWdlKQogICAgICAgICB7CiAgICAgICAgICAgICBUZXh0dXJlU3RvcmFn
ZTExICpzdG9yYWdlMTEgPSBHZXRBczxUZXh0dXJlU3RvcmFnZTExPih0ZXhTdG9yYWdlKTsKICAg
ICAgICAgICAgIGNvbnN0IGdsOjpUZXh0dXJlU3RhdGUgJnRleHR1cmVTdGF0ZSA9IHRleHR1cmUt
PmdldFRleHR1cmVTdGF0ZSgpOwotICAgICAgICAgICAgZXJyb3IgPQotICAgICAgICAgICAgICAg
IHN0b3JhZ2UxMS0+Z2VuZXJhdGVTd2l6emxlcyh0ZXh0dXJlU3RhdGUuc3dpenpsZVJlZCwgdGV4
dHVyZVN0YXRlLnN3aXp6bGVHcmVlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGV4dHVyZVN0YXRlLnN3aXp6bGVCbHVlLCB0ZXh0dXJlU3RhdGUuc3dpenps
ZUFscGhhKTsKLSAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgICAgICAgICBB
TkdMRV9UUlkoc3RvcmFnZTExLT5nZW5lcmF0ZVN3aXp6bGVzKHRleHR1cmVTdGF0ZS5nZXRTd2l6
emxlU3RhdGUoKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9OT19FUlJPUik7Cit9CisKK2dsOjpFcnJvciBSZW5kZXJlcjExOjpnZW5lcmF0ZVN3aXp6bGVz
KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsIGdsOjpTYW1wbGVyVHlwZSB0eXBlKQorewor
ICAgIFByb2dyYW1EM0QgKnByb2dyYW1EM0QgPSBHZXRJbXBsQXM8UHJvZ3JhbUQzRD4oZGF0YS5n
ZXRTdGF0ZSgpLmdldFByb2dyYW0oKSk7CisKKyAgICB1bnNpZ25lZCBpbnQgc2FtcGxlclJhbmdl
ID0gcHJvZ3JhbUQzRC0+Z2V0VXNlZFNhbXBsZXJSYW5nZSh0eXBlKTsKKworICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgc2FtcGxlclJhbmdlOyBpKyspCisgICAgeworICAgICAgICBH
TGVudW0gdGV4dHVyZVR5cGUgPSBwcm9ncmFtRDNELT5nZXRTYW1wbGVyVGV4dHVyZVR5cGUodHlw
ZSwgaSk7CisgICAgICAgIEdMaW50IHRleHR1cmVVbml0ICA9IHByb2dyYW1EM0QtPmdldFNhbXBs
ZXJNYXBwaW5nKHR5cGUsIGksIGRhdGEuZ2V0Q2FwcygpKTsKKyAgICAgICAgaWYgKHRleHR1cmVV
bml0ICE9IC0xKQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSA9
IGRhdGEuZ2V0U3RhdGUoKS5nZXRTYW1wbGVyVGV4dHVyZSh0ZXh0dXJlVW5pdCwgdGV4dHVyZVR5
cGUpOworICAgICAgICAgICAgQVNTRVJUKHRleHR1cmUpOworICAgICAgICAgICAgaWYgKHRleHR1
cmUtPmdldFRleHR1cmVTdGF0ZSgpLnN3aXp6bGVSZXF1aXJlZCgpKQogICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgICAgICBBTkdMRV9UUlko
Z2VuZXJhdGVTd2l6emxlKHRleHR1cmUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOwogfQogCitnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Z2VuZXJhdGVTd2l6emxlcyhj
b25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhKQoreworICAgIEFOR0xFX1RSWShnZW5lcmF0ZVN3
aXp6bGVzKGRhdGEsIGdsOjpTQU1QTEVSX1ZFUlRFWCkpOworICAgIEFOR0xFX1RSWShnZW5lcmF0
ZVN3aXp6bGVzKGRhdGEsIGdsOjpTQU1QTEVSX1BJWEVMKSk7CisgICAgcmV0dXJuIGdsOjpOb0Vy
cm9yKCk7Cit9CiBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6c2V0U2FtcGxlclN0YXRlKGdsOjpTYW1w
bGVyVHlwZSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
aW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJl
ICp0ZXh0dXJlLApAQCAtMTE2NCwxMSArMTI1Niw3IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpz
ZXRTYW1wbGVyU3RhdGUoZ2wKICAgICBUZXh0dXJlRDNEICp0ZXh0dXJlRDNEID0gR2V0SW1wbEFz
PFRleHR1cmVEM0Q+KHRleHR1cmUpOwogCiAgICAgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UgPSBu
dWxscHRyOwotICAgIGdsOjpFcnJvciBlcnJvciA9IHRleHR1cmVEM0QtPmdldE5hdGl2ZVRleHR1
cmUoJnN0b3JhZ2UpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICBy
ZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWSh0ZXh0dXJlRDNELT5nZXROYXRpdmVU
ZXh0dXJlKCZzdG9yYWdlKSk7CiAKICAgICAvLyBTdG9yYWdlIHNob3VsZCBleGlzdCwgdGV4dHVy
ZSBzaG91bGQgYmUgY29tcGxldGUKICAgICBBU1NFUlQoc3RvcmFnZSk7CkBAIC0xMTgwLDE3ICsx
MjY4LDEzIEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpzZXRTYW1wbGVyU3RhdGUoZ2wKIAogICAg
IGlmICh0eXBlID09IGdsOjpTQU1QTEVSX1BJWEVMKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHN0
YXRpY19jYXN0PHVuc2lnbmVkIGludD4oaW5kZXgpIDwgZ2V0UmVuZGVyZXJDYXBzKCkubWF4VGV4
dHVyZUltYWdlVW5pdHMpOworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50
PihpbmRleCkgPCBnZXROYXRpdmVDYXBzKCkubWF4VGV4dHVyZUltYWdlVW5pdHMpOwogCiAgICAg
ICAgIGlmIChtRm9yY2VTZXRQaXhlbFNhbXBsZXJTdGF0ZXNbaW5kZXhdIHx8CiAgICAgICAgICAg
ICBtZW1jbXAoJnNhbXBsZXJTdGF0ZSwgJm1DdXJQaXhlbFNhbXBsZXJTdGF0ZXNbaW5kZXhdLCBz
aXplb2YoZ2w6OlNhbXBsZXJTdGF0ZSkpICE9IDApCiAgICAgICAgIHsKICAgICAgICAgICAgIElE
M0QxMVNhbXBsZXJTdGF0ZSAqZHhTYW1wbGVyU3RhdGUgPSBOVUxMOwotICAgICAgICAgICAgZXJy
b3IgPSBtU3RhdGVDYWNoZS5nZXRTYW1wbGVyU3RhdGUoc2FtcGxlclN0YXRlLCAmZHhTYW1wbGVy
U3RhdGUpOwotICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAgICB9CisgICAgICAgICAg
ICBBTkdMRV9UUlkobVN0YXRlQ2FjaGUuZ2V0U2FtcGxlclN0YXRlKHNhbXBsZXJTdGF0ZSwgJmR4
U2FtcGxlclN0YXRlKSk7CiAKICAgICAgICAgICAgIEFTU0VSVChkeFNhbXBsZXJTdGF0ZSAhPSBO
VUxMKTsKICAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5QU1NldFNhbXBsZXJzKGluZGV4LCAx
LCAmZHhTYW1wbGVyU3RhdGUpOwpAQCAtMTIwNCwxNyArMTI4OCwxMyBAQCBnbDo6RXJyb3IgUmVu
ZGVyZXIxMTo6c2V0U2FtcGxlclN0YXRlKGdsCiAgICAgfQogICAgIGVsc2UgaWYgKHR5cGUgPT0g
Z2w6OlNBTVBMRVJfVkVSVEVYKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVu
c2lnbmVkIGludD4oaW5kZXgpIDwgZ2V0UmVuZGVyZXJDYXBzKCkubWF4VmVydGV4VGV4dHVyZUlt
YWdlVW5pdHMpOworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihpbmRl
eCkgPCBnZXROYXRpdmVDYXBzKCkubWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMpOwogCiAgICAg
ICAgIGlmIChtRm9yY2VTZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzW2luZGV4XSB8fAogICAgICAgICAg
ICAgbWVtY21wKCZzYW1wbGVyU3RhdGUsICZtQ3VyVmVydGV4U2FtcGxlclN0YXRlc1tpbmRleF0s
IHNpemVvZihnbDo6U2FtcGxlclN0YXRlKSkgIT0gMCkKICAgICAgICAgewogICAgICAgICAgICAg
SUQzRDExU2FtcGxlclN0YXRlICpkeFNhbXBsZXJTdGF0ZSA9IE5VTEw7Ci0gICAgICAgICAgICBl
cnJvciA9IG1TdGF0ZUNhY2hlLmdldFNhbXBsZXJTdGF0ZShzYW1wbGVyU3RhdGUsICZkeFNhbXBs
ZXJTdGF0ZSk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIEFOR0xFX1RSWShtU3RhdGVDYWNoZS5nZXRTYW1wbGVyU3RhdGUoc2FtcGxlclN0YXRlLCAm
ZHhTYW1wbGVyU3RhdGUpKTsKIAogICAgICAgICAgICAgQVNTRVJUKGR4U2FtcGxlclN0YXRlICE9
IE5VTEwpOwogICAgICAgICAgICAgbURldmljZUNvbnRleHQtPlZTU2V0U2FtcGxlcnMoaW5kZXgs
IDEsICZkeFNhbXBsZXJTdGF0ZSk7CkBAIC0xMjMxLDcgKzEzMTEsNyBAQCBnbDo6RXJyb3IgUmVu
ZGVyZXIxMTo6c2V0U2FtcGxlclN0YXRlKGdsCiAgICAgQVNTRVJUKG1ldGFkYXRhICE9IG51bGxw
dHIpOwogICAgIG1ldGFkYXRhLT51cGRhdGUoaW5kZXgsICp0ZXh0dXJlKTsKIAotICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQog
CiBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6c2V0VGV4dHVyZShnbDo6U2FtcGxlclR5cGUgdHlwZSwg
aW50IGluZGV4LCBnbDo6VGV4dHVyZSAqdGV4dHVyZSkKQEAgLTEyNDMsMjYgKzEzMjMsMTQgQEAg
Z2w6OkVycm9yIFJlbmRlcmVyMTE6OnNldFRleHR1cmUoZ2w6OlNhbQogICAgICAgICBUZXh0dXJl
RDNEICp0ZXh0dXJlSW1wbCA9IEdldEltcGxBczxUZXh0dXJlRDNEPih0ZXh0dXJlKTsKIAogICAg
ICAgICBUZXh0dXJlU3RvcmFnZSAqdGV4U3RvcmFnZSA9IG51bGxwdHI7Ci0gICAgICAgIGdsOjpF
cnJvciBlcnJvciA9IHRleHR1cmVJbXBsLT5nZXROYXRpdmVUZXh0dXJlKCZ0ZXhTdG9yYWdlKTsK
LSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIGVycm9yOwotICAgICAgICB9CisgICAgICAgIEFOR0xFX1RSWSh0ZXh0dXJlSW1wbC0+Z2V0
TmF0aXZlVGV4dHVyZSgmdGV4U3RvcmFnZSkpOwogCiAgICAgICAgIC8vIFRleHR1cmUgc2hvdWxk
IGJlIGNvbXBsZXRlIGFuZCBoYXZlIGEgc3RvcmFnZQogICAgICAgICBBU1NFUlQodGV4U3RvcmFn
ZSk7CiAKICAgICAgICAgVGV4dHVyZVN0b3JhZ2UxMSAqc3RvcmFnZTExID0gR2V0QXM8VGV4dHVy
ZVN0b3JhZ2UxMT4odGV4U3RvcmFnZSk7CiAKLSAgICAgICAgLy8gTWFrZSBzdXJlIHRvIGFkZCB0
aGUgbGV2ZWwgb2Zmc2V0IGZvciBvdXIgdGlueSBjb21wcmVzc2VkIHRleHR1cmUgd29ya2Fyb3Vu
ZAotICAgICAgICBnbDo6VGV4dHVyZVN0YXRlIHRleHR1cmVTdGF0ZSA9IHRleHR1cmUtPmdldFRl
eHR1cmVTdGF0ZSgpOwotICAgICAgICB0ZXh0dXJlU3RhdGUuYmFzZUxldmVsICs9IHN0b3JhZ2Ux
MS0+Z2V0VG9wTGV2ZWwoKTsKLQotICAgICAgICBlcnJvciA9IHN0b3JhZ2UxMS0+Z2V0U1JWKHRl
eHR1cmVTdGF0ZSwgJnRleHR1cmVTUlYpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAg
QU5HTEVfVFJZKHN0b3JhZ2UxMS0+Z2V0U1JWKHRleHR1cmUtPmdldFRleHR1cmVTdGF0ZSgpLCAm
dGV4dHVyZVNSVikpOwogCiAgICAgICAgIC8vIElmIHdlIGdldCBOVUxMIGJhY2sgZnJvbSBnZXRT
UlYgaGVyZSwgc29tZXRoaW5nIHdlbnQgd3JvbmcgaW4gdGhlIHRleHR1cmUgY2xhc3MgYW5kIHdl
J3JlIHVuZXhwZWN0ZWRseQogICAgICAgICAvLyBtaXNzaW5nIHRoZSBzaGFkZXIgcmVzb3VyY2Ug
dmlldwpAQCAtMTI3MSwxNSArMTMzOSwxNyBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6c2V0VGV4
dHVyZShnbDo6U2FtCiAgICAgICAgIHRleHR1cmVJbXBsLT5yZXNldERpcnR5KCk7CiAgICAgfQog
Ci0gICAgQVNTRVJUKCh0eXBlID09IGdsOjpTQU1QTEVSX1BJWEVMICYmIHN0YXRpY19jYXN0PHVu
c2lnbmVkIGludD4oaW5kZXgpIDwgZ2V0UmVuZGVyZXJDYXBzKCkubWF4VGV4dHVyZUltYWdlVW5p
dHMpIHx8Ci0gICAgICAgICAgICh0eXBlID09IGdsOjpTQU1QTEVSX1ZFUlRFWCAmJiBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBpbnQ+KGluZGV4KSA8IGdldFJlbmRlcmVyQ2FwcygpLm1heFZlcnRleFRl
eHR1cmVJbWFnZVVuaXRzKSk7CisgICAgQVNTRVJUKCh0eXBlID09IGdsOjpTQU1QTEVSX1BJWEVM
ICYmCisgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGluZGV4KSA8IGdldE5h
dGl2ZUNhcHMoKS5tYXhUZXh0dXJlSW1hZ2VVbml0cykgfHwKKyAgICAgICAgICAgKHR5cGUgPT0g
Z2w6OlNBTVBMRVJfVkVSVEVYICYmCisgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBp
bnQ+KGluZGV4KSA8IGdldE5hdGl2ZUNhcHMoKS5tYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cykp
OwogCiAgICAgbVN0YXRlTWFuYWdlci5zZXRTaGFkZXJSZXNvdXJjZSh0eXBlLCBpbmRleCwgdGV4
dHVyZVNSVik7CiAKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotZ2w6
OkVycm9yIFJlbmRlcmVyMTE6OnNldFVuaWZvcm1CdWZmZXJzKGNvbnN0IGdsOjpEYXRhICZkYXRh
LAorZ2w6OkVycm9yIFJlbmRlcmVyMTE6OnNldFVuaWZvcm1CdWZmZXJzKGNvbnN0IGdsOjpDb250
ZXh0U3RhdGUgJmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8R0xpbnQ+ICZ2ZXJ0ZXhVbmlmb3JtQnVmZmVycywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxHTGludD4g
JmZyYWdtZW50VW5pZm9ybUJ1ZmZlcnMpCiB7CkBAIC0xMjkzLDY1ICsxMzYzLDUyIEBAIGdsOjpF
cnJvciBSZW5kZXJlcjExOjpzZXRVbmlmb3JtQnVmZmVycygKICAgICAgICAgfQogCiAgICAgICAg
IGNvbnN0IE9mZnNldEJpbmRpbmdQb2ludGVyPGdsOjpCdWZmZXI+ICZ1bmlmb3JtQnVmZmVyID0K
LSAgICAgICAgICAgIGRhdGEuc3RhdGUtPmdldEluZGV4ZWRVbmlmb3JtQnVmZmVyKGJpbmRpbmcp
OworICAgICAgICAgICAgZGF0YS5nZXRTdGF0ZSgpLmdldEluZGV4ZWRVbmlmb3JtQnVmZmVyKGJp
bmRpbmcpOwogICAgICAgICBHTGludHB0ciB1bmlmb3JtQnVmZmVyT2Zmc2V0ID0gdW5pZm9ybUJ1
ZmZlci5nZXRPZmZzZXQoKTsKICAgICAgICAgR0xzaXplaXB0ciB1bmlmb3JtQnVmZmVyU2l6ZSA9
IHVuaWZvcm1CdWZmZXIuZ2V0U2l6ZSgpOwogCi0gICAgICAgIGlmICh1bmlmb3JtQnVmZmVyLmdl
dCgpICE9IG51bGxwdHIpCisgICAgICAgIGlmICh1bmlmb3JtQnVmZmVyLmdldCgpID09IG51bGxw
dHIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAg
ICAgQnVmZmVyMTEgKmJ1ZmZlclN0b3JhZ2UgICAgICA9IEdldEltcGxBczxCdWZmZXIxMT4odW5p
Zm9ybUJ1ZmZlci5nZXQoKSk7CisgICAgICAgIElEM0QxMUJ1ZmZlciAqY29uc3RhbnRCdWZmZXIg
PSBudWxscHRyOworCisgICAgICAgIEFOR0xFX1RSWV9SRVNVTFQoCisgICAgICAgICAgICBidWZm
ZXJTdG9yYWdlLT5nZXRDb25zdGFudEJ1ZmZlclJhbmdlKHVuaWZvcm1CdWZmZXJPZmZzZXQsIHVu
aWZvcm1CdWZmZXJTaXplKSwKKyAgICAgICAgICAgIGNvbnN0YW50QnVmZmVyKTsKKworICAgICAg
ICBpZiAoIWNvbnN0YW50QnVmZmVyKQogICAgICAgICB7Ci0gICAgICAgICAgICBCdWZmZXIxMSAq
YnVmZmVyU3RvcmFnZSA9IEdldEltcGxBczxCdWZmZXIxMT4odW5pZm9ybUJ1ZmZlci5nZXQoKSk7
Ci0gICAgICAgICAgICBJRDNEMTFCdWZmZXIgKmNvbnN0YW50QnVmZmVyOworICAgICAgICAgICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRXJyb3IgcmV0cmlldmluZyBjb25z
dGFudCBidWZmZXIiKTsKKyAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAobVJlbmRlcmVyMTFE
ZXZpY2VDYXBzLnN1cHBvcnRzQ29uc3RhbnRCdWZmZXJPZmZzZXRzKQorICAgICAgICBpZiAobUN1
cnJlbnRDb25zdGFudEJ1ZmZlclZTW3VuaWZvcm1CdWZmZXJJbmRleF0gIT0gYnVmZmVyU3RvcmFn
ZS0+Z2V0U2VyaWFsKCkgfHwKKyAgICAgICAgICAgIG1DdXJyZW50Q29uc3RhbnRCdWZmZXJWU09m
ZnNldFt1bmlmb3JtQnVmZmVySW5kZXhdICE9IHVuaWZvcm1CdWZmZXJPZmZzZXQgfHwKKyAgICAg
ICAgICAgIG1DdXJyZW50Q29uc3RhbnRCdWZmZXJWU1NpemVbdW5pZm9ybUJ1ZmZlckluZGV4XSAh
PSB1bmlmb3JtQnVmZmVyU2l6ZSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1SZW5kZXJl
cjExRGV2aWNlQ2Fwcy5zdXBwb3J0c0NvbnN0YW50QnVmZmVyT2Zmc2V0cyAmJiB1bmlmb3JtQnVm
ZmVyU2l6ZSAhPSAwKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVy
T3JFcnJvciA9IGJ1ZmZlclN0b3JhZ2UtPmdldEJ1ZmZlcihCVUZGRVJfVVNBR0VfVU5JRk9STSk7
Ci0gICAgICAgICAgICAgICAgaWYgKGJ1ZmZlck9yRXJyb3IuaXNFcnJvcigpKQotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlck9yRXJyb3IuZ2V0RXJy
b3IoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY29uc3RhbnRCdWZmZXIg
PSBidWZmZXJPckVycm9yLmdldFJlc3VsdCgpOworICAgICAgICAgICAgICAgIFVJTlQgZmlyc3RD
b25zdGFudCA9IDAsIG51bUNvbnN0YW50cyA9IDA7CisgICAgICAgICAgICAgICAgQ2FsY3VsYXRl
Q29uc3RhbnRCdWZmZXJQYXJhbXModW5pZm9ybUJ1ZmZlck9mZnNldCwgdW5pZm9ybUJ1ZmZlclNp
emUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZpcnN0
Q29uc3RhbnQsICZudW1Db25zdGFudHMpOworICAgICAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0
MS0+VlNTZXRDb25zdGFudEJ1ZmZlcnMxKAorICAgICAgICAgICAgICAgICAgICBnZXRSZXNlcnZl
ZFZlcnRleFVuaWZvcm1CdWZmZXJzKCkgKworICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgaW50Pih1bmlmb3JtQnVmZmVySW5kZXgpLAorICAgICAgICAgICAgICAg
ICAgICAxLCAmY29uc3RhbnRCdWZmZXIsICZmaXJzdENvbnN0YW50LCAmbnVtQ29uc3RhbnRzKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBhdXRvIGJ1ZmZlck9yRXJyb3IgPQotICAgICAgICAgICAgICAgICAgICBidWZmZXJT
dG9yYWdlLT5nZXRDb25zdGFudEJ1ZmZlclJhbmdlKHVuaWZvcm1CdWZmZXJPZmZzZXQsIHVuaWZv
cm1CdWZmZXJTaXplKTsKLSAgICAgICAgICAgICAgICBpZiAoYnVmZmVyT3JFcnJvci5pc0Vycm9y
KCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnVmZmVy
T3JFcnJvci5nZXRFcnJvcigpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBj
b25zdGFudEJ1ZmZlciA9IGJ1ZmZlck9yRXJyb3IuZ2V0UmVzdWx0KCk7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIGlmICghY29uc3RhbnRCdWZmZXIpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAg
ICAgICAgICBtRGV2aWNlQ29udGV4dC0+VlNTZXRDb25zdGFudEJ1ZmZlcnMoCisgICAgICAgICAg
ICAgICAgICAgIGdldFJlc2VydmVkVmVydGV4VW5pZm9ybUJ1ZmZlcnMoKSArCisgICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHVuaWZvcm1CdWZmZXJJbmRl
eCksCisgICAgICAgICAgICAgICAgICAgIDEsICZjb25zdGFudEJ1ZmZlcik7CiAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIGlmIChtQ3VycmVudENvbnN0YW50QnVmZmVyVlNbdW5pZm9ybUJ1
ZmZlckluZGV4XSAhPSBidWZmZXJTdG9yYWdlLT5nZXRTZXJpYWwoKSB8fAotICAgICAgICAgICAg
ICAgIG1DdXJyZW50Q29uc3RhbnRCdWZmZXJWU09mZnNldFt1bmlmb3JtQnVmZmVySW5kZXhdICE9
IHVuaWZvcm1CdWZmZXJPZmZzZXQgfHwKLSAgICAgICAgICAgICAgICBtQ3VycmVudENvbnN0YW50
QnVmZmVyVlNTaXplW3VuaWZvcm1CdWZmZXJJbmRleF0gIT0gdW5pZm9ybUJ1ZmZlclNpemUpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKG1SZW5kZXJlcjExRGV2aWNlQ2Fwcy5z
dXBwb3J0c0NvbnN0YW50QnVmZmVyT2Zmc2V0cyAmJiB1bmlmb3JtQnVmZmVyU2l6ZSAhPSAwKQot
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgVUlOVCBmaXJzdENvbnN0YW50
ID0gMCwgbnVtQ29uc3RhbnRzID0gMDsKLSAgICAgICAgICAgICAgICAgICAgQ2FsY3VsYXRlQ29u
c3RhbnRCdWZmZXJQYXJhbXModW5pZm9ybUJ1ZmZlck9mZnNldCwgdW5pZm9ybUJ1ZmZlclNpemUs
ICZmaXJzdENvbnN0YW50LCAmbnVtQ29uc3RhbnRzKTsKLSAgICAgICAgICAgICAgICAgICAgbURl
dmljZUNvbnRleHQxLT5WU1NldENvbnN0YW50QnVmZmVyczEoCi0gICAgICAgICAgICAgICAgICAg
ICAgICBnZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1CdWZmZXJzKCkgKwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4odW5pZm9ybUJ1ZmZlckluZGV4
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIDEsICZjb25zdGFudEJ1ZmZlciwgJmZpcnN0Q29u
c3RhbnQsICZudW1Db25zdGFudHMpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBtRGV2aWNlQ29u
dGV4dC0+VlNTZXRDb25zdGFudEJ1ZmZlcnMoCi0gICAgICAgICAgICAgICAgICAgICAgICBnZXRS
ZXNlcnZlZFZlcnRleFVuaWZvcm1CdWZmZXJzKCkgKwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4odW5pZm9ybUJ1ZmZlckluZGV4KSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIDEsICZjb25zdGFudEJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgbUN1cnJlbnRDb25zdGFudEJ1ZmZlclZTW3VuaWZvcm1CdWZm
ZXJJbmRleF0gPSBidWZmZXJTdG9yYWdlLT5nZXRTZXJpYWwoKTsKLSAgICAgICAgICAgICAgICBt
Q3VycmVudENvbnN0YW50QnVmZmVyVlNPZmZzZXRbdW5pZm9ybUJ1ZmZlckluZGV4XSA9IHVuaWZv
cm1CdWZmZXJPZmZzZXQ7Ci0gICAgICAgICAgICAgICAgbUN1cnJlbnRDb25zdGFudEJ1ZmZlclZT
U2l6ZVt1bmlmb3JtQnVmZmVySW5kZXhdID0gdW5pZm9ybUJ1ZmZlclNpemU7Ci0gICAgICAgICAg
ICB9CisgICAgICAgICAgICBtQ3VycmVudENvbnN0YW50QnVmZmVyVlNbdW5pZm9ybUJ1ZmZlcklu
ZGV4XSAgICAgICA9IGJ1ZmZlclN0b3JhZ2UtPmdldFNlcmlhbCgpOworICAgICAgICAgICAgbUN1
cnJlbnRDb25zdGFudEJ1ZmZlclZTT2Zmc2V0W3VuaWZvcm1CdWZmZXJJbmRleF0gPSB1bmlmb3Jt
QnVmZmVyT2Zmc2V0OworICAgICAgICAgICAgbUN1cnJlbnRDb25zdGFudEJ1ZmZlclZTU2l6ZVt1
bmlmb3JtQnVmZmVySW5kZXhdICAgPSB1bmlmb3JtQnVmZmVyU2l6ZTsKICAgICAgICAgfQogICAg
IH0KIApAQCAtMTM2NSwxMjUgKzE0MjIsOTcgQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OnNldFVu
aWZvcm1CdWZmZXJzKAogICAgICAgICB9CiAKICAgICAgICAgY29uc3QgT2Zmc2V0QmluZGluZ1Bv
aW50ZXI8Z2w6OkJ1ZmZlcj4gJnVuaWZvcm1CdWZmZXIgPQotICAgICAgICAgICAgZGF0YS5zdGF0
ZS0+Z2V0SW5kZXhlZFVuaWZvcm1CdWZmZXIoYmluZGluZyk7CisgICAgICAgICAgICBkYXRhLmdl
dFN0YXRlKCkuZ2V0SW5kZXhlZFVuaWZvcm1CdWZmZXIoYmluZGluZyk7CiAgICAgICAgIEdMaW50
cHRyIHVuaWZvcm1CdWZmZXJPZmZzZXQgPSB1bmlmb3JtQnVmZmVyLmdldE9mZnNldCgpOwogICAg
ICAgICBHTHNpemVpcHRyIHVuaWZvcm1CdWZmZXJTaXplID0gdW5pZm9ybUJ1ZmZlci5nZXRTaXpl
KCk7CiAKLSAgICAgICAgaWYgKHVuaWZvcm1CdWZmZXIuZ2V0KCkgIT0gbnVsbHB0cikKKyAgICAg
ICAgaWYgKHVuaWZvcm1CdWZmZXIuZ2V0KCkgPT0gbnVsbHB0cikKKyAgICAgICAgeworICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBCdWZmZXIxMSAqYnVmZmVyU3Rv
cmFnZSAgICAgID0gR2V0SW1wbEFzPEJ1ZmZlcjExPih1bmlmb3JtQnVmZmVyLmdldCgpKTsKKyAg
ICAgICAgSUQzRDExQnVmZmVyICpjb25zdGFudEJ1ZmZlciA9IG51bGxwdHI7CisKKyAgICAgICAg
QU5HTEVfVFJZX1JFU1VMVCgKKyAgICAgICAgICAgIGJ1ZmZlclN0b3JhZ2UtPmdldENvbnN0YW50
QnVmZmVyUmFuZ2UodW5pZm9ybUJ1ZmZlck9mZnNldCwgdW5pZm9ybUJ1ZmZlclNpemUpLAorICAg
ICAgICAgICAgY29uc3RhbnRCdWZmZXIpOworCisgICAgICAgIGlmICghY29uc3RhbnRCdWZmZXIp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIEJ1ZmZlcjExICpidWZmZXJTdG9yYWdlID0gR2V0SW1w
bEFzPEJ1ZmZlcjExPih1bmlmb3JtQnVmZmVyLmdldCgpKTsKLSAgICAgICAgICAgIElEM0QxMUJ1
ZmZlciAqY29uc3RhbnRCdWZmZXI7CisgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09V
VF9PRl9NRU1PUlksICJFcnJvciByZXRyaWV2aW5nIGNvbnN0YW50IGJ1ZmZlciIpOworICAgICAg
ICB9CiAKLSAgICAgICAgICAgIGlmIChtUmVuZGVyZXIxMURldmljZUNhcHMuc3VwcG9ydHNDb25z
dGFudEJ1ZmZlck9mZnNldHMpCisgICAgICAgIGlmIChtQ3VycmVudENvbnN0YW50QnVmZmVyUFNb
dW5pZm9ybUJ1ZmZlckluZGV4XSAhPSBidWZmZXJTdG9yYWdlLT5nZXRTZXJpYWwoKSB8fAorICAg
ICAgICAgICAgbUN1cnJlbnRDb25zdGFudEJ1ZmZlclBTT2Zmc2V0W3VuaWZvcm1CdWZmZXJJbmRl
eF0gIT0gdW5pZm9ybUJ1ZmZlck9mZnNldCB8fAorICAgICAgICAgICAgbUN1cnJlbnRDb25zdGFu
dEJ1ZmZlclBTU2l6ZVt1bmlmb3JtQnVmZmVySW5kZXhdICE9IHVuaWZvcm1CdWZmZXJTaXplKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAobVJlbmRlcmVyMTFEZXZpY2VDYXBzLnN1cHBvcnRz
Q29uc3RhbnRCdWZmZXJPZmZzZXRzICYmIHVuaWZvcm1CdWZmZXJTaXplICE9IDApCiAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgYXV0byBidWZmZXJPckVycm9yID0gYnVmZmVyU3RvcmFn
ZS0+Z2V0QnVmZmVyKEJVRkZFUl9VU0FHRV9VTklGT1JNKTsKLSAgICAgICAgICAgICAgICBpZiAo
YnVmZmVyT3JFcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gYnVmZmVyT3JFcnJvci5nZXRFcnJvcigpOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBjb25zdGFudEJ1ZmZlciA9IGJ1ZmZlck9yRXJyb3IuZ2V0UmVz
dWx0KCk7CisgICAgICAgICAgICAgICAgVUlOVCBmaXJzdENvbnN0YW50ID0gMCwgbnVtQ29uc3Rh
bnRzID0gMDsKKyAgICAgICAgICAgICAgICBDYWxjdWxhdGVDb25zdGFudEJ1ZmZlclBhcmFtcyh1
bmlmb3JtQnVmZmVyT2Zmc2V0LCB1bmlmb3JtQnVmZmVyU2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlyc3RDb25zdGFudCwgJm51bUNvbnN0YW50
cyk7CisgICAgICAgICAgICAgICAgbURldmljZUNvbnRleHQxLT5QU1NldENvbnN0YW50QnVmZmVy
czEoCisgICAgICAgICAgICAgICAgICAgIGdldFJlc2VydmVkRnJhZ21lbnRVbmlmb3JtQnVmZmVy
cygpICsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4o
dW5pZm9ybUJ1ZmZlckluZGV4KSwKKyAgICAgICAgICAgICAgICAgICAgMSwgJmNvbnN0YW50QnVm
ZmVyLCAmZmlyc3RDb25zdGFudCwgJm51bUNvbnN0YW50cyk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYXV0byBidWZmZXJP
ckVycm9yID0KLSAgICAgICAgICAgICAgICAgICAgYnVmZmVyU3RvcmFnZS0+Z2V0Q29uc3RhbnRC
dWZmZXJSYW5nZSh1bmlmb3JtQnVmZmVyT2Zmc2V0LCB1bmlmb3JtQnVmZmVyU2l6ZSk7Ci0gICAg
ICAgICAgICAgICAgaWYgKGJ1ZmZlck9yRXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlck9yRXJyb3IuZ2V0RXJyb3IoKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY29uc3RhbnRCdWZmZXIgPSBidWZm
ZXJPckVycm9yLmdldFJlc3VsdCgpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAo
IWNvbnN0YW50QnVmZmVyKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgICAgICAgICAgbURldmljZUNvbnRl
eHQtPlBTU2V0Q29uc3RhbnRCdWZmZXJzKAorICAgICAgICAgICAgICAgICAgICBnZXRSZXNlcnZl
ZEZyYWdtZW50VW5pZm9ybUJ1ZmZlcnMoKSArCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHVuaWZvcm1CdWZmZXJJbmRleCksCisgICAgICAgICAgICAg
ICAgICAgIDEsICZjb25zdGFudEJ1ZmZlcik7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IGlmIChtQ3VycmVudENvbnN0YW50QnVmZmVyUFNbdW5pZm9ybUJ1ZmZlckluZGV4XSAhPSBidWZm
ZXJTdG9yYWdlLT5nZXRTZXJpYWwoKSB8fAotICAgICAgICAgICAgICAgIG1DdXJyZW50Q29uc3Rh
bnRCdWZmZXJQU09mZnNldFt1bmlmb3JtQnVmZmVySW5kZXhdICE9IHVuaWZvcm1CdWZmZXJPZmZz
ZXQgfHwKLSAgICAgICAgICAgICAgICBtQ3VycmVudENvbnN0YW50QnVmZmVyUFNTaXplW3VuaWZv
cm1CdWZmZXJJbmRleF0gIT0gdW5pZm9ybUJ1ZmZlclNpemUpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgaWYgKG1SZW5kZXJlcjExRGV2aWNlQ2Fwcy5zdXBwb3J0c0NvbnN0YW50QnVm
ZmVyT2Zmc2V0cyAmJiB1bmlmb3JtQnVmZmVyU2l6ZSAhPSAwKQotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgVUlOVCBmaXJzdENvbnN0YW50ID0gMCwgbnVtQ29uc3RhbnRz
ID0gMDsKLSAgICAgICAgICAgICAgICAgICAgQ2FsY3VsYXRlQ29uc3RhbnRCdWZmZXJQYXJhbXMo
dW5pZm9ybUJ1ZmZlck9mZnNldCwgdW5pZm9ybUJ1ZmZlclNpemUsICZmaXJzdENvbnN0YW50LCAm
bnVtQ29uc3RhbnRzKTsKLSAgICAgICAgICAgICAgICAgICAgbURldmljZUNvbnRleHQxLT5QU1Nl
dENvbnN0YW50QnVmZmVyczEoCi0gICAgICAgICAgICAgICAgICAgICAgICBnZXRSZXNlcnZlZEZy
YWdtZW50VW5pZm9ybUJ1ZmZlcnMoKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgaW50Pih1bmlmb3JtQnVmZmVySW5kZXgpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgMSwgJmNvbnN0YW50QnVmZmVyLCAmZmlyc3RDb25zdGFudCwgJm51bUNvbnN0
YW50cyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5QU1NldENvbnN0
YW50QnVmZmVycygKLSAgICAgICAgICAgICAgICAgICAgICAgIGdldFJlc2VydmVkRnJhZ21lbnRV
bmlmb3JtQnVmZmVycygpICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBpbnQ+KHVuaWZvcm1CdWZmZXJJbmRleCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAxLCAmY29uc3RhbnRCdWZmZXIpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgIG1DdXJyZW50Q29uc3RhbnRCdWZmZXJQU1t1bmlmb3JtQnVmZmVySW5kZXhdID0gYnVm
ZmVyU3RvcmFnZS0+Z2V0U2VyaWFsKCk7Ci0gICAgICAgICAgICAgICAgbUN1cnJlbnRDb25zdGFu
dEJ1ZmZlclBTT2Zmc2V0W3VuaWZvcm1CdWZmZXJJbmRleF0gPSB1bmlmb3JtQnVmZmVyT2Zmc2V0
OwotICAgICAgICAgICAgICAgIG1DdXJyZW50Q29uc3RhbnRCdWZmZXJQU1NpemVbdW5pZm9ybUJ1
ZmZlckluZGV4XSA9IHVuaWZvcm1CdWZmZXJTaXplOwotICAgICAgICAgICAgfQorICAgICAgICAg
ICAgbUN1cnJlbnRDb25zdGFudEJ1ZmZlclBTW3VuaWZvcm1CdWZmZXJJbmRleF0gICAgICAgPSBi
dWZmZXJTdG9yYWdlLT5nZXRTZXJpYWwoKTsKKyAgICAgICAgICAgIG1DdXJyZW50Q29uc3RhbnRC
dWZmZXJQU09mZnNldFt1bmlmb3JtQnVmZmVySW5kZXhdID0gdW5pZm9ybUJ1ZmZlck9mZnNldDsK
KyAgICAgICAgICAgIG1DdXJyZW50Q29uc3RhbnRCdWZmZXJQU1NpemVbdW5pZm9ybUJ1ZmZlcklu
ZGV4XSAgID0gdW5pZm9ybUJ1ZmZlclNpemU7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0K
IAotZ2w6OkVycm9yIFJlbmRlcmVyMTE6OnVwZGF0ZVN0YXRlKGNvbnN0IGdsOjpEYXRhICZkYXRh
LCBHTGVudW0gZHJhd01vZGUpCitnbDo6RXJyb3IgUmVuZGVyZXIxMTo6dXBkYXRlU3RhdGUoY29u
c3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwgR0xlbnVtIGRyYXdNb2RlKQogeworICAgIGNvbnN0
IGF1dG8gJmdsU3RhdGUgPSBkYXRhLmdldFN0YXRlKCk7CisKICAgICAvLyBBcHBsaWVzIHRoZSBy
ZW5kZXIgdGFyZ2V0IHN1cmZhY2UsIGRlcHRoIHN0ZW5jaWwgc3VyZmFjZSwgdmlld3BvcnQgcmVj
dGFuZ2xlIGFuZAogICAgIC8vIHNjaXNzb3IgcmVjdGFuZ2xlIHRvIHRoZSByZW5kZXJlcgotICAg
IGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXJPYmplY3QgPSBkYXRhLnN0YXRlLT5n
ZXREcmF3RnJhbWVidWZmZXIoKTsKLSAgICBBU1NFUlQoZnJhbWVidWZmZXJPYmplY3QgJiYgZnJh
bWVidWZmZXJPYmplY3QtPmNoZWNrU3RhdHVzKGRhdGEpID09IEdMX0ZSQU1FQlVGRkVSX0NPTVBM
RVRFKTsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBhcHBseVJlbmRlclRhcmdldChmcmFtZWJ1ZmZl
ck9iamVjdCk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBlcnJvcjsKLSAgICB9CisgICAgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IGdsU3Rh
dGUuZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7CisgICAgQVNTRVJUKGZyYW1lYnVmZmVyICYmICFmcmFt
ZWJ1ZmZlci0+aGFzQW55RGlydHlCaXQoKSAmJiBmcmFtZWJ1ZmZlci0+Y29tcGxldGUoZGF0YSkp
OworICAgIEFOR0xFX1RSWShhcHBseVJlbmRlclRhcmdldChmcmFtZWJ1ZmZlcikpOwogCiAgICAg
Ly8gU2V0IHRoZSBwcmVzZW50IHBhdGggc3RhdGUKLSAgICBjb25zdCBib29sIHByZXNlbnRQYXRo
RmFzdEFjdGl2ZSA9Ci0gICAgICAgIFVzZVByZXNlbnRQYXRoRmFzdCh0aGlzLCBmcmFtZWJ1ZmZl
ck9iamVjdC0+Z2V0Rmlyc3RDb2xvcmJ1ZmZlcigpKTsKLSAgICBtU3RhdGVNYW5hZ2VyLnVwZGF0
ZVByZXNlbnRQYXRoKHByZXNlbnRQYXRoRmFzdEFjdGl2ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyT2JqZWN0LT5nZXRGaXJzdENvbG9yYnVmZmVyKCkp
OworICAgIGF1dG8gZmlyc3RDb2xvckF0dGFjaG1lbnQgICAgICAgID0gZnJhbWVidWZmZXItPmdl
dEZpcnN0Q29sb3JidWZmZXIoKTsKKyAgICBjb25zdCBib29sIHByZXNlbnRQYXRoRmFzdEFjdGl2
ZSA9IFVzZVByZXNlbnRQYXRoRmFzdCh0aGlzLCBmaXJzdENvbG9yQXR0YWNobWVudCk7CisgICAg
bVN0YXRlTWFuYWdlci51cGRhdGVQcmVzZW50UGF0aChwcmVzZW50UGF0aEZhc3RBY3RpdmUsIGZp
cnN0Q29sb3JBdHRhY2htZW50KTsKIAogICAgIC8vIFNldHRpbmcgdmlld3BvcnQgc3RhdGUKLSAg
ICBtU3RhdGVNYW5hZ2VyLnNldFZpZXdwb3J0KGRhdGEuY2FwcywgZGF0YS5zdGF0ZS0+Z2V0Vmll
d3BvcnQoKSwgZGF0YS5zdGF0ZS0+Z2V0TmVhclBsYW5lKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkYXRhLnN0YXRlLT5nZXRGYXJQbGFuZSgpKTsKKyAgICBtU3RhdGVNYW5hZ2Vy
LnNldFZpZXdwb3J0KCZkYXRhLmdldENhcHMoKSwgZ2xTdGF0ZS5nZXRWaWV3cG9ydCgpLCBnbFN0
YXRlLmdldE5lYXJQbGFuZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xTdGF0
ZS5nZXRGYXJQbGFuZSgpKTsKIAogICAgIC8vIFNldHRpbmcgc2Npc3NvciBzdGF0ZQotICAgIG1T
dGF0ZU1hbmFnZXIuc2V0U2Npc3NvclJlY3RhbmdsZShkYXRhLnN0YXRlLT5nZXRTY2lzc29yKCks
IGRhdGEuc3RhdGUtPmlzU2Npc3NvclRlc3RFbmFibGVkKCkpOworICAgIG1TdGF0ZU1hbmFnZXIu
c2V0U2Npc3NvclJlY3RhbmdsZShnbFN0YXRlLmdldFNjaXNzb3IoKSwgZ2xTdGF0ZS5pc1NjaXNz
b3JUZXN0RW5hYmxlZCgpKTsKIAogICAgIC8vIEFwcGx5aW5nIHJhc3Rlcml6ZXIgc3RhdGUgdG8g
RDNEMTEgZGV2aWNlCi0gICAgaW50IHNhbXBsZXMgICAgICAgICAgICAgICAgICAgID0gZnJhbWVi
dWZmZXJPYmplY3QtPmdldFNhbXBsZXMoZGF0YSk7Ci0gICAgZ2w6OlJhc3Rlcml6ZXJTdGF0ZSBy
YXN0ZXJpemVyID0gZGF0YS5zdGF0ZS0+Z2V0UmFzdGVyaXplclN0YXRlKCk7CisgICAgaW50IHNh
bXBsZXMgICAgICAgICAgICAgICAgICAgID0gZnJhbWVidWZmZXItPmdldFNhbXBsZXMoZGF0YSk7
CisgICAgZ2w6OlJhc3Rlcml6ZXJTdGF0ZSByYXN0ZXJpemVyID0gZ2xTdGF0ZS5nZXRSYXN0ZXJp
emVyU3RhdGUoKTsKICAgICByYXN0ZXJpemVyLnBvaW50RHJhd01vZGUgICAgICAgPSAoZHJhd01v
ZGUgPT0gR0xfUE9JTlRTKTsKICAgICByYXN0ZXJpemVyLm11bHRpU2FtcGxlICAgICAgICAgPSAo
c2FtcGxlcyAhPSAwKTsKIAotICAgIGVycm9yID0gbVN0YXRlTWFuYWdlci5zZXRSYXN0ZXJpemVy
U3RhdGUocmFzdGVyaXplcik7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKG1TdGF0ZU1hbmFnZXIuc2V0
UmFzdGVyaXplclN0YXRlKHJhc3Rlcml6ZXIpKTsKIAogICAgIC8vIFNldHRpbmcgYmxlbmQgc3Rh
dGUKICAgICB1bnNpZ25lZCBpbnQgbWFzayA9IEdldEJsZW5kU2FtcGxlTWFzayhkYXRhLCBzYW1w
bGVzKTsKLSAgICBlcnJvciA9IG1TdGF0ZU1hbmFnZXIuc2V0QmxlbmRTdGF0ZShmcmFtZWJ1ZmZl
ck9iamVjdCwgZGF0YS5zdGF0ZS0+Z2V0QmxlbmRTdGF0ZSgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGEuc3RhdGUtPmdldEJsZW5kQ29sb3IoKSwgbWFzayk7
Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsK
LSAgICB9CisgICAgQU5HTEVfVFJZKG1TdGF0ZU1hbmFnZXIuc2V0QmxlbmRTdGF0ZShmcmFtZWJ1
ZmZlciwgZ2xTdGF0ZS5nZXRCbGVuZFN0YXRlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnbFN0YXRlLmdldEJsZW5kQ29sb3IoKSwgbWFzaykpOwogCiAgICAg
Ly8gU2V0dGluZyBkZXB0aCBzdGVuY2lsIHN0YXRlCi0gICAgZXJyb3IgPSBtU3RhdGVNYW5hZ2Vy
LnNldERlcHRoU3RlbmNpbFN0YXRlKCpkYXRhLnN0YXRlKTsKLSAgICByZXR1cm4gZXJyb3I7Ci19
CisgICAgQU5HTEVfVFJZKG1TdGF0ZU1hbmFnZXIuc2V0RGVwdGhTdGVuY2lsU3RhdGUoZ2xTdGF0
ZSkpOwogCi12b2lkIFJlbmRlcmVyMTE6OnN5bmNTdGF0ZShjb25zdCBnbDo6U3RhdGUgJnN0YXRl
LCBjb25zdCBnbDo6U3RhdGU6OkRpcnR5Qml0cyAmYml0bWFzaykKLXsKLSAgICBtU3RhdGVNYW5h
Z2VyLnN5bmNTdGF0ZShzdGF0ZSwgYml0bWFzayk7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7
CiB9CiAKIGJvb2wgUmVuZGVyZXIxMTo6YXBwbHlQcmltaXRpdmVUeXBlKEdMZW51bSBtb2RlLCBH
THNpemVpIGNvdW50LCBib29sIHVzZXNQb2ludFNpemUpCkBAIC0xNTI0LDcgKzE1NTMsNyBAQCBi
b29sIFJlbmRlcmVyMTE6OmFwcGx5UHJpbWl0aXZlVHlwZShHTGVuCiAgICAgcmV0dXJuIGNvdW50
ID49IG1pbkNvdW50OwogfQogCi1nbDo6RXJyb3IgUmVuZGVyZXIxMTo6YXBwbHlSZW5kZXJUYXJn
ZXQoY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlcikKK2dsOjpFcnJvciBSZW5kZXJl
cjExOjphcHBseVJlbmRlclRhcmdldChnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyKQogewog
ICAgIHJldHVybiBtU3RhdGVNYW5hZ2VyLnN5bmNGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7CiB9
CkBAIC0xNTM5LDE4ICsxNTY4LDEwIEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjphcHBseVZlcnRl
eEJ1ZmZlcigKICAgICBjb25zdCBhdXRvICZ2ZXJ0ZXhBcnJheSA9IHN0YXRlLmdldFZlcnRleEFy
cmF5KCk7CiAgICAgYXV0byAqdmVydGV4QXJyYXkxMSAgICAgPSBHZXRJbXBsQXM8VmVydGV4QXJy
YXkxMT4odmVydGV4QXJyYXkpOwogCi0gICAgZ2w6OkVycm9yIGVycm9yID0gdmVydGV4QXJyYXkx
MS0+dXBkYXRlRGlydHlBbmREeW5hbWljQXR0cmlicyhtVmVydGV4RGF0YU1hbmFnZXIsIHN0YXRl
LCBmaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvdW50LCBpbnN0YW5jZXMpOwotICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RS
WSh2ZXJ0ZXhBcnJheTExLT51cGRhdGVEaXJ0eUFuZER5bmFtaWNBdHRyaWJzKG1WZXJ0ZXhEYXRh
TWFuYWdlciwgc3RhdGUsIGZpcnN0LCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZXMpKTsKIAotICAgIGVycm9y
ID0gbVN0YXRlTWFuYWdlci51cGRhdGVDdXJyZW50VmFsdWVBdHRyaWJzKHN0YXRlLCBtVmVydGV4
RGF0YU1hbmFnZXIpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICBy
ZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShtU3RhdGVNYW5hZ2VyLnVwZGF0ZUN1
cnJlbnRWYWx1ZUF0dHJpYnMoc3RhdGUsIG1WZXJ0ZXhEYXRhTWFuYWdlcikpOwogCiAgICAgLy8g
SWYgaW5kZXggaW5mb3JtYXRpb24gaXMgcGFzc2VkLCBtYXJrIGl0IHdpdGggdGhlIGN1cnJlbnQg
Y2hhbmdlZCBzdGF0dXMuCiAgICAgaWYgKGluZGV4SW5mbykKQEAgLTE1ODAsMzUgKzE2MDEsMjYg
QEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmFwcGx5VmVydGV4QnVmZmVyKAogICAgIHJldHVybiBn
bDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgUmVuZGVyZXIxMTo6YXBwbHlJbmRleEJ1ZmZl
cihjb25zdCBnbDo6RGF0YSAmZGF0YSwKK2dsOjpFcnJvciBSZW5kZXJlcjExOjphcHBseUluZGV4
QnVmZmVyKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRyYW5zbGF0ZWRJbmRleERhdGEgKmluZGV4SW5mbykKIHsKLSAgICBn
bDo6VmVydGV4QXJyYXkgKnZhbyAgICAgICAgICAgPSBkYXRhLnN0YXRlLT5nZXRWZXJ0ZXhBcnJh
eSgpOworICAgIGNvbnN0IGF1dG8gJmdsU3RhdGUgICAgICAgICAgICA9IGRhdGEuZ2V0U3RhdGUo
KTsKKyAgICBnbDo6VmVydGV4QXJyYXkgKnZhbyAgICAgICAgICAgPSBnbFN0YXRlLmdldFZlcnRl
eEFycmF5KCk7CiAgICAgZ2w6OkJ1ZmZlciAqZWxlbWVudEFycmF5QnVmZmVyID0gdmFvLT5nZXRF
bGVtZW50QXJyYXlCdWZmZXIoKS5nZXQoKTsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPQotICAgICAg
ICBtSW5kZXhEYXRhTWFuYWdlci0+cHJlcGFyZUluZGV4RGF0YSh0eXBlLCBjb3VudCwgZWxlbWVu
dEFycmF5QnVmZmVyLCBpbmRpY2VzLCBpbmRleEluZm8sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGEuc3RhdGUtPmlzUHJpbWl0aXZlUmVzdGFydEVuYWJs
ZWQoKSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBl
cnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKG1JbmRleERhdGFNYW5hZ2VyLT5wcmVwYXJlSW5k
ZXhEYXRhKHR5cGUsIGNvdW50LCBlbGVtZW50QXJyYXlCdWZmZXIsIGluZGljZXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5mbywgZ2xT
dGF0ZS5pc1ByaW1pdGl2ZVJlc3RhcnRFbmFibGVkKCkpKTsKIAotICAgIElEM0QxMUJ1ZmZlciAq
YnVmZmVyID0gTlVMTDsKKyAgICBJRDNEMTFCdWZmZXIgKmJ1ZmZlciA9IG51bGxwdHI7CiAgICAg
RFhHSV9GT1JNQVQgYnVmZmVyRm9ybWF0ID0gKGluZGV4SW5mby0+aW5kZXhUeXBlID09IEdMX1VO
U0lHTkVEX0lOVCkgPyBEWEdJX0ZPUk1BVF9SMzJfVUlOVCA6IERYR0lfRk9STUFUX1IxNl9VSU5U
OwogCiAgICAgaWYgKGluZGV4SW5mby0+c3RvcmFnZSkKICAgICB7CiAgICAgICAgIEJ1ZmZlcjEx
ICpzdG9yYWdlID0gR2V0QXM8QnVmZmVyMTE+KGluZGV4SW5mby0+c3RvcmFnZSk7Ci0gICAgICAg
IGF1dG8gaW5kZXhPckVycm9yID0gc3RvcmFnZS0+Z2V0QnVmZmVyKEJVRkZFUl9VU0FHRV9JTkRF
WCk7Ci0gICAgICAgIGlmIChpbmRleE9yRXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gaW5kZXhPckVycm9yLmdldEVycm9yKCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgYnVmZmVyID0gaW5kZXhPckVycm9yLmdldFJlc3VsdCgpOworICAgICAgICBBTkdMRV9UUllf
UkVTVUxUKHN0b3JhZ2UtPmdldEJ1ZmZlcihCVUZGRVJfVVNBR0VfSU5ERVgpLCBidWZmZXIpOwog
ICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtMTYyNyw5MCArMTYzOSw1NSBAQCBnbDo6RXJyb3Ig
UmVuZGVyZXIxMTo6YXBwbHlJbmRleEJ1ZmZlcihjCiAgICAgICAgIG1BcHBsaWVkSUJDaGFuZ2Vk
ID0gdHJ1ZTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAg
ICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmFwcGx5
VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUpCitnbDo6RXJy
b3IgUmVuZGVyZXIxMTo6YXBwbHlUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnMoY29uc3QgZ2w6OkNv
bnRleHRTdGF0ZSAmZGF0YSkKIHsKLSAgICBzaXplX3QgbnVtWEZCQmluZGluZ3MgPSAwOwotICAg
IGJvb2wgcmVxdWlyZXNVcGRhdGUgPSBmYWxzZTsKKyAgICBjb25zdCBhdXRvICZzdGF0ZSA9IGRh
dGEuZ2V0U3RhdGUoKTsKIAotICAgIGlmIChzdGF0ZS5pc1RyYW5zZm9ybUZlZWRiYWNrQWN0aXZl
VW5wYXVzZWQoKSkKKyAgICAvLyBJZiB0cmFuc2Zvcm0gZmVlZGJhY2sgaXMgbm90IGFjdGl2ZSwg
dW5iaW5kIGFsbCBidWZmZXJzCisgICAgaWYgKCFzdGF0ZS5pc1RyYW5zZm9ybUZlZWRiYWNrQWN0
aXZlVW5wYXVzZWQoKSkKICAgICB7Ci0gICAgICAgIGNvbnN0IGdsOjpUcmFuc2Zvcm1GZWVkYmFj
ayAqdHJhbnNmb3JtRmVlZGJhY2sgPSBzdGF0ZS5nZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJhY2so
KTsKLSAgICAgICAgbnVtWEZCQmluZGluZ3MgPSB0cmFuc2Zvcm1GZWVkYmFjay0+Z2V0SW5kZXhl
ZEJ1ZmZlckNvdW50KCk7Ci0gICAgICAgIEFTU0VSVChudW1YRkJCaW5kaW5ncyA8PSBnbDo6SU1Q
TEVNRU5UQVRJT05fTUFYX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJTKTsKLQotICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVhGQkJpbmRpbmdzOyBpKyspCisgICAgICAgIGlmICht
QXBwbGllZFRGT2JqZWN0ICE9IDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IE9mZnNl
dEJpbmRpbmdQb2ludGVyPGdsOjpCdWZmZXI+ICZiaW5kaW5nID0gdHJhbnNmb3JtRmVlZGJhY2st
PmdldEluZGV4ZWRCdWZmZXIoaSk7Ci0KLSAgICAgICAgICAgIElEM0QxMUJ1ZmZlciAqZDNkQnVm
ZmVyID0gbnVsbHB0cjsKLSAgICAgICAgICAgIGlmIChiaW5kaW5nLmdldCgpICE9IG51bGxwdHIp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQnVmZmVyMTEgKnN0b3JhZ2UgPSBHZXRJ
bXBsQXM8QnVmZmVyMTE+KGJpbmRpbmcuZ2V0KCkpOwotICAgICAgICAgICAgICAgIGF1dG8gYnVm
ZmVyT3JFcnJvciA9IHN0b3JhZ2UtPmdldEJ1ZmZlcihCVUZGRVJfVVNBR0VfVkVSVEVYX09SX1RS
QU5TRk9STV9GRUVEQkFDSyk7Ci0gICAgICAgICAgICAgICAgaWYgKGJ1ZmZlck9yRXJyb3IuaXNF
cnJvcigpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1
ZmZlck9yRXJyb3IuZ2V0RXJyb3IoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgZDNkQnVmZmVyID0gYnVmZmVyT3JFcnJvci5nZXRSZXN1bHQoKTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgLy8gVE9ETzogbUFwcGxpZWRURkJ1ZmZlcnMgYW5kIGZyaWVuZHMgc2hv
dWxkIGFsc28gYmUga2VwdCBpbiBhIHZlY3Rvci4KLSAgICAgICAgICAgIGlmIChkM2RCdWZmZXIg
IT0gbUFwcGxpZWRURkJ1ZmZlcnNbaV0gfHwgYmluZGluZy5nZXRPZmZzZXQoKSAhPSBtQXBwbGll
ZFRGT2Zmc2V0c1tpXSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXF1aXJlc1Vw
ZGF0ZSA9IHRydWU7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBtRGV2aWNlQ29udGV4dC0+
U09TZXRUYXJnZXRzKDAsIG51bGxwdHIsIG51bGxwdHIpOworICAgICAgICAgICAgbUFwcGxpZWRU
Rk9iamVjdCA9IDA7CiAgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAg
ICAgfQogCi0gICAgaWYgKHJlcXVpcmVzVXBkYXRlIHx8IG51bVhGQkJpbmRpbmdzICE9IG1BcHBs
aWVkTnVtWEZCQmluZGluZ3MpCisgICAgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrICp0cmFuc2Zvcm1G
ZWVkYmFjayA9IHN0YXRlLmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIFRyYW5z
Zm9ybUZlZWRiYWNrMTEgKnRyYW5zZm9ybUZlZWRiYWNrMTEgPSBHZXRJbXBsQXM8VHJhbnNmb3Jt
RmVlZGJhY2sxMT4odHJhbnNmb3JtRmVlZGJhY2spOworICAgIHVpbnRwdHJfdCB0cmFuc2Zvcm1G
ZWVkYmFja0lkICAgICAgICAgICAgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odHJhbnNm
b3JtRmVlZGJhY2sxMSk7CisgICAgaWYgKG1BcHBsaWVkVEZPYmplY3QgPT0gdHJhbnNmb3JtRmVl
ZGJhY2tJZCAmJiAhdHJhbnNmb3JtRmVlZGJhY2sxMS0+aXNEaXJ0eSgpKQogICAgIHsKLSAgICAg
ICAgY29uc3QgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrICp0cmFuc2Zvcm1GZWVkYmFjayA9IHN0YXRl
LmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG51bVhGQkJpbmRpbmdzOyArK2kpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0
IE9mZnNldEJpbmRpbmdQb2ludGVyPGdsOjpCdWZmZXI+ICZiaW5kaW5nID0gdHJhbnNmb3JtRmVl
ZGJhY2stPmdldEluZGV4ZWRCdWZmZXIoaSk7Ci0gICAgICAgICAgICBpZiAoYmluZGluZy5nZXQo
KSAhPSBudWxscHRyKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEJ1ZmZlcjExICpz
dG9yYWdlID0gR2V0SW1wbEFzPEJ1ZmZlcjExPihiaW5kaW5nLmdldCgpKTsKLSAgICAgICAgICAg
ICAgICBhdXRvIGJ1ZmZlck9yRXJyb3IgPSBzdG9yYWdlLT5nZXRCdWZmZXIoQlVGRkVSX1VTQUdF
X1ZFUlRFWF9PUl9UUkFOU0ZPUk1fRkVFREJBQ0spOwotICAgICAgICAgICAgICAgIGlmIChidWZm
ZXJPckVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBidWZmZXJPckVycm9yLmdldEVycm9yKCk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIElEM0QxMUJ1ZmZlciAqZDNkQnVmZmVyID0gYnVmZmVyT3JFcnJvci5n
ZXRSZXN1bHQoKTsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CisgICAgfQogCi0gICAg
ICAgICAgICAgICAgbUN1cnJlbnREM0RPZmZzZXRzW2ldID0gKG1BcHBsaWVkVEZCdWZmZXJzW2ld
ICE9IGQzZEJ1ZmZlciB8fCBtQXBwbGllZFRGT2Zmc2V0c1tpXSAhPSBiaW5kaW5nLmdldE9mZnNl
dCgpKSA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8VUlOVD4oYmluZGluZy5nZXRPZmZzZXQoKSkgOiAtMTsKLSAgICAgICAgICAgICAgICBtQXBw
bGllZFRGQnVmZmVyc1tpXSA9IGQzZEJ1ZmZlcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtQXBwbGllZFRGQnVmZmVyc1tp
XSAgPSBudWxscHRyOwotICAgICAgICAgICAgICAgIG1DdXJyZW50RDNET2Zmc2V0c1tpXSA9IDA7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtQXBwbGllZFRGT2Zmc2V0c1tpXSA9IGJpbmRp
bmcuZ2V0T2Zmc2V0KCk7Ci0gICAgICAgIH0KKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxJRDNEMTFC
dWZmZXIgKj4gKnNvQnVmZmVycyA9IG51bGxwdHI7CisgICAgQU5HTEVfVFJZX1JFU1VMVCh0cmFu
c2Zvcm1GZWVkYmFjazExLT5nZXRTT0J1ZmZlcnMoKSwgc29CdWZmZXJzKTsKKyAgICBjb25zdCBz
dGQ6OnZlY3RvcjxVSU5UPiAmc29PZmZzZXRzID0gdHJhbnNmb3JtRmVlZGJhY2sxMS0+Z2V0U09C
dWZmZXJPZmZzZXRzKCk7CiAKLSAgICAgICAgbUFwcGxpZWROdW1YRkJCaW5kaW5ncyA9IG51bVhG
QkJpbmRpbmdzOworICAgIG1EZXZpY2VDb250ZXh0LT5TT1NldFRhcmdldHModHJhbnNmb3JtRmVl
ZGJhY2sxMS0+Z2V0TnVtU09CdWZmZXJzKCksIHNvQnVmZmVycy0+ZGF0YSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc29PZmZzZXRzLmRhdGEoKSk7CiAKLSAgICAgICAgbURl
dmljZUNvbnRleHQtPlNPU2V0VGFyZ2V0cyhzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG51bVhG
QkJpbmRpbmdzKSwgbUFwcGxpZWRURkJ1ZmZlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbUN1cnJlbnREM0RPZmZzZXRzKTsKLSAgICB9CisgICAgbUFwcGxpZWRURk9i
amVjdCA9IHRyYW5zZm9ybUZlZWRiYWNrSWQ7CisgICAgdHJhbnNmb3JtRmVlZGJhY2sxMS0+b25B
cHBseSgpOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJu
IGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJvciBSZW5kZXJlcjExOjpkcmF3QXJyYXlzSW1w
bChjb25zdCBnbDo6RGF0YSAmZGF0YSwKK2dsOjpFcnJvciBSZW5kZXJlcjExOjpkcmF3QXJyYXlz
SW1wbChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHN0YXJ0VmVydGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBpbnN0YW5jZXMpCiB7Ci0gICAgUHJvZ3JhbUQzRCAqcHJvZ3JhbUQzRCA9
IEdldEltcGxBczxQcm9ncmFtRDNEPihkYXRhLnN0YXRlLT5nZXRQcm9ncmFtKCkpOworICAgIGNv
bnN0IGF1dG8gJmdsU3RhdGUgICAgPSBkYXRhLmdldFN0YXRlKCk7CisgICAgUHJvZ3JhbUQzRCAq
cHJvZ3JhbUQzRCA9IEdldEltcGxBczxQcm9ncmFtRDNEPihnbFN0YXRlLmdldFByb2dyYW0oKSk7
CiAKLSAgICBpZiAocHJvZ3JhbUQzRC0+dXNlc0dlb21ldHJ5U2hhZGVyKG1vZGUpICYmIGRhdGEu
c3RhdGUtPmlzVHJhbnNmb3JtRmVlZGJhY2tBY3RpdmVVbnBhdXNlZCgpKQorICAgIGlmIChwcm9n
cmFtRDNELT51c2VzR2VvbWV0cnlTaGFkZXIobW9kZSkgJiYgZ2xTdGF0ZS5pc1RyYW5zZm9ybUZl
ZWRiYWNrQWN0aXZlVW5wYXVzZWQoKSkKICAgICB7CiAgICAgICAgIC8vIFNpbmNlIHdlIHVzZSBh
IGdlb21ldHJ5IGlmLWFuZC1vbmx5LWlmIHdlIHJld3JpdGUgdmVydGV4IHN0cmVhbXMsIHRyYW5z
Zm9ybSBmZWVkYmFjawogICAgICAgICAvLyB3b24ndCBnZXQgdGhlIGNvcnJlY3Qgb3V0cHV0LiBU
byB3b3JrIGFyb3VuZCB0aGlzLCBkcmF3IHdpdGggKm9ubHkqIHRoZSBzdHJlYW0gb3V0CkBAIC0x
NzI4LDE0ICsxNzA1LDExIEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpkcmF3QXJyYXlzSW1wbChj
b24KICAgICAgICAgfQogCiAgICAgICAgIHJ4OjpTaGFkZXJFeGVjdXRhYmxlRDNEICpwaXhlbEV4
ZSA9IG51bGxwdHI7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IHByb2dyYW1EM0QtPmdldFBp
eGVsRXhlY3V0YWJsZUZvckZyYW1lYnVmZmVyKGRhdGEuc3RhdGUtPmdldERyYXdGcmFtZWJ1ZmZl
cigpLCAmcGl4ZWxFeGUpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZ
KAorICAgICAgICAgICAgcHJvZ3JhbUQzRC0+Z2V0UGl4ZWxFeGVjdXRhYmxlRm9yRnJhbWVidWZm
ZXIoZ2xTdGF0ZS5nZXREcmF3RnJhbWVidWZmZXIoKSwgJnBpeGVsRXhlKSk7CiAKICAgICAgICAg
Ly8gU2tpcCB0aGUgZHJhdyBjYWxsIGlmIHJhc3Rlcml6ZXIgZGlzY2FyZCBpcyBlbmFibGVkIChv
ciBubyBmcmFnbWVudCBzaGFkZXIpLgotICAgICAgICBpZiAoIXBpeGVsRXhlIHx8IGRhdGEuc3Rh
dGUtPmdldFJhc3Rlcml6ZXJTdGF0ZSgpLnJhc3Rlcml6ZXJEaXNjYXJkKQorICAgICAgICBpZiAo
IXBpeGVsRXhlIHx8IGdsU3RhdGUuZ2V0UmFzdGVyaXplclN0YXRlKCkucmFzdGVyaXplckRpc2Nh
cmQpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1Ip
OwogICAgICAgICB9CkBAIC0xNzQ2LDEyICsxNzIwLDggQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6
OmRyYXdBcnJheXNJbXBsKGNvbgogCiAgICAgICAgIC8vIFJldHJpZXZlIHRoZSBnZW9tZXRyeSBz
aGFkZXIuCiAgICAgICAgIHJ4OjpTaGFkZXJFeGVjdXRhYmxlRDNEICpnZW9tZXRyeUV4ZSA9IG51
bGxwdHI7Ci0gICAgICAgIGVycm9yID0KLSAgICAgICAgICAgIHByb2dyYW1EM0QtPmdldEdlb21l
dHJ5RXhlY3V0YWJsZUZvclByaW1pdGl2ZVR5cGUoZGF0YSwgbW9kZSwgJmdlb21ldHJ5RXhlLCBu
dWxscHRyKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9CisgICAgICAgIEFOR0xFX1RSWSgKKyAgICAg
ICAgICAgIHByb2dyYW1EM0QtPmdldEdlb21ldHJ5RXhlY3V0YWJsZUZvclByaW1pdGl2ZVR5cGUo
ZGF0YSwgbW9kZSwgJmdlb21ldHJ5RXhlLCBudWxscHRyKSk7CiAKICAgICAgICAgSUQzRDExR2Vv
bWV0cnlTaGFkZXIgKmdlb21ldHJ5U2hhZGVyID0KICAgICAgICAgICAgIChnZW9tZXRyeUV4ZSA/
IEdldEFzPFNoYWRlckV4ZWN1dGFibGUxMT4oZ2VvbWV0cnlFeGUpLT5nZXRHZW9tZXRyeVNoYWRl
cigpIDogTlVMTCk7CkBAIC0xNzk3LDEzICsxNzY3LDggQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6
OmRyYXdBcnJheXNJbXBsKGNvbgogICAgICAgICAgICAgLy8gb2Zmc2V0cy4KICAgICAgICAgICAg
IGZvciAoR0xzaXplaSBpID0gMDsgaSA8IGluc3RhbmNlczsgaSsrKQogICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGdsOjpFcnJvciBlcnJvciA9Ci0gICAgICAgICAgICAgICAgICAgIG1J
bnB1dExheW91dENhY2hlLnVwZGF0ZVZlcnRleE9mZnNldHNGb3JQb2ludFNwcml0ZXNFbXVsYXRp
b24oc3RhcnRWZXJ0ZXgsIGkpOwotICAgICAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0g
ICAgICAgICAgICAgICAgfQotCisgICAgICAgICAgICAgICAgQU5HTEVfVFJZKAorICAgICAgICAg
ICAgICAgICAgICBtSW5wdXRMYXlvdXRDYWNoZS51cGRhdGVWZXJ0ZXhPZmZzZXRzRm9yUG9pbnRT
cHJpdGVzRW11bGF0aW9uKHN0YXJ0VmVydGV4LCBpKSk7CiAgICAgICAgICAgICAgICAgbURldmlj
ZUNvbnRleHQtPkRyYXdJbmRleGVkSW5zdGFuY2VkKDYsIGNvdW50LCAwLCAwLCAwKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpAQCAtMTgyOCw3ICsxNzkzLDcgQEAgZ2w6OkVycm9yIFJlbmRl
cmVyMTE6OmRyYXdBcnJheXNJbXBsKGNvbgogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJS
T1IpOwogfQogCi1nbDo6RXJyb3IgUmVuZGVyZXIxMTo6ZHJhd0VsZW1lbnRzSW1wbChjb25zdCBn
bDo6RGF0YSAmZGF0YSwKK2dsOjpFcnJvciBSZW5kZXJlcjExOjpkcmF3RWxlbWVudHNJbXBsKGNv
bnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUcmFuc2xhdGVkSW5kZXhEYXRhICZpbmRleEluZm8sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCkBAIC0xODQ4LDcgKzE4
MTMsNyBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6ZHJhd0VsZW1lbnRzSW1wbChjCiAgICAgICAg
IHJldHVybiBkcmF3VHJpYW5nbGVGYW4oZGF0YSwgY291bnQsIHR5cGUsIGluZGljZXMsIG1pbklu
ZGV4LCBpbnN0YW5jZXMpOwogICAgIH0KIAotICAgIGNvbnN0IFByb2dyYW1EM0QgKnByb2dyYW1E
M0QgPSBHZXRJbXBsQXM8UHJvZ3JhbUQzRD4oZGF0YS5zdGF0ZS0+Z2V0UHJvZ3JhbSgpKTsKKyAg
ICBjb25zdCBQcm9ncmFtRDNEICpwcm9ncmFtRDNEID0gR2V0SW1wbEFzPFByb2dyYW1EM0Q+KGRh
dGEuZ2V0U3RhdGUoKS5nZXRQcm9ncmFtKCkpOwogICAgIGlmIChpbnN0YW5jZXMgPiAwKQogICAg
IHsKICAgICAgICAgaWYgKG1vZGUgPT0gR0xfUE9JTlRTICYmIHByb2dyYW1EM0QtPnVzZXNJbnN0
YW5jZWRQb2ludFNwcml0ZUVtdWxhdGlvbigpKQpAQCAtMTg2NCwxMyArMTgyOSw4IEBAIGdsOjpF
cnJvciBSZW5kZXJlcjExOjpkcmF3RWxlbWVudHNJbXBsKGMKICAgICAgICAgICAgIC8vIG9mZnNl
dHMuCiAgICAgICAgICAgICBmb3IgKEdMc2l6ZWkgaSA9IDA7IGkgPCBpbnN0YW5jZXM7IGkrKykK
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPQotICAgICAg
ICAgICAgICAgICAgICBtSW5wdXRMYXlvdXRDYWNoZS51cGRhdGVWZXJ0ZXhPZmZzZXRzRm9yUG9p
bnRTcHJpdGVzRW11bGF0aW9uKG1pbkluZGV4LCBpKTsKLSAgICAgICAgICAgICAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLQorICAgICAgICAgICAgICAgIEFOR0xFX1RS
WSgKKyAgICAgICAgICAgICAgICAgICAgbUlucHV0TGF5b3V0Q2FjaGUudXBkYXRlVmVydGV4T2Zm
c2V0c0ZvclBvaW50U3ByaXRlc0VtdWxhdGlvbihtaW5JbmRleCwgaSkpOwogICAgICAgICAgICAg
ICAgIG1EZXZpY2VDb250ZXh0LT5EcmF3SW5kZXhlZEluc3RhbmNlZCg2LCBlbGVtZW50c1RvUmVu
ZGVyLCAwLCAwLCAwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTkwMywxNCArMTg2
MywxNSBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6ZHJhd0VsZW1lbnRzSW1wbChjCiAgICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKLWdsOjpFcnJvciBSZW5kZXJlcjExOjpk
cmF3TGluZUxvb3AoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCitnbDo6RXJyb3IgUmVuZGVyZXIxMTo6
ZHJhd0xpbmVMb29wKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTHZvaWQgKmluZGV4UG9pbnRlciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVHJhbnNsYXRlZEluZGV4RGF0YSAqaW5kZXhJbmZvLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5zdGFuY2VzKQogewotICAgIGds
OjpWZXJ0ZXhBcnJheSAqdmFvICAgICAgICAgICA9IGRhdGEuc3RhdGUtPmdldFZlcnRleEFycmF5
KCk7CisgICAgY29uc3QgYXV0byAmZ2xTdGF0ZSAgICAgICAgICAgID0gZGF0YS5nZXRTdGF0ZSgp
OworICAgIGdsOjpWZXJ0ZXhBcnJheSAqdmFvICAgICAgICAgICA9IGdsU3RhdGUuZ2V0VmVydGV4
QXJyYXkoKTsKICAgICBnbDo6QnVmZmVyICplbGVtZW50QXJyYXlCdWZmZXIgPSB2YW8tPmdldEVs
ZW1lbnRBcnJheUJ1ZmZlcigpLmdldCgpOwogCiAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzID0g
aW5kZXhQb2ludGVyOwpAQCAtMTkyMiwxMSArMTg4Myw3IEBAIGdsOjpFcnJvciBSZW5kZXJlcjEx
OjpkcmF3TGluZUxvb3AoY29uc3QKICAgICAgICAgaW50cHRyX3Qgb2Zmc2V0ID0gcmVpbnRlcnBy
ZXRfY2FzdDxpbnRwdHJfdD4oaW5kaWNlcyk7CiAKICAgICAgICAgY29uc3QgdWludDhfdCAqYnVm
ZmVyRGF0YSA9IE5VTEw7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IHN0b3JhZ2UtPmdldERh
dGEoJmJ1ZmZlckRhdGEpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZ
KHN0b3JhZ2UtPmdldERhdGEoJmJ1ZmZlckRhdGEpKTsKIAogICAgICAgICBpbmRpY2VzID0gYnVm
ZmVyRGF0YSArIG9mZnNldDsKICAgICB9CkBAIC0xOTUxLDMzICsxOTA4LDIxIEBAIGdsOjpFcnJv
ciBSZW5kZXJlcjExOjpkcmF3TGluZUxvb3AoY29uc3QKICAgICB9CiAKICAgICBHZXRMaW5lTG9v
cEluZGljZXMoaW5kaWNlcywgdHlwZSwgc3RhdGljX2Nhc3Q8R0x1aW50Pihjb3VudCksCi0gICAg
ICAgICAgICAgICAgICAgICAgIGRhdGEuc3RhdGUtPmlzUHJpbWl0aXZlUmVzdGFydEVuYWJsZWQo
KSwgJm1TY3JhdGNoSW5kZXhEYXRhQnVmZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgZ2xT
dGF0ZS5pc1ByaW1pdGl2ZVJlc3RhcnRFbmFibGVkKCksICZtU2NyYXRjaEluZGV4RGF0YUJ1ZmZl
cik7CiAKICAgICB1bnNpZ25lZCBpbnQgc3BhY2VOZWVkZWQgPQogICAgICAgICBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBpbnQ+KHNpemVvZihHTHVpbnQpICogbVNjcmF0Y2hJbmRleERhdGFCdWZmZXIu
c2l6ZSgpKTsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBtTGluZUxvb3BJQi0+cmVzZXJ2ZUJ1ZmZl
clNwYWNlKHNwYWNlTmVlZGVkLCBHTF9VTlNJR05FRF9JTlQpOwotICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RS
WShtTGluZUxvb3BJQi0+cmVzZXJ2ZUJ1ZmZlclNwYWNlKHNwYWNlTmVlZGVkLCBHTF9VTlNJR05F
RF9JTlQpKTsKIAogICAgIHZvaWQqIG1hcHBlZE1lbW9yeSA9IE5VTEw7CiAgICAgdW5zaWduZWQg
aW50IG9mZnNldDsKLSAgICBlcnJvciA9IG1MaW5lTG9vcElCLT5tYXBCdWZmZXIoc3BhY2VOZWVk
ZWQsICZtYXBwZWRNZW1vcnksICZvZmZzZXQpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0g
ICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShtTGluZUxv
b3BJQi0+bWFwQnVmZmVyKHNwYWNlTmVlZGVkLCAmbWFwcGVkTWVtb3J5LCAmb2Zmc2V0KSk7CiAK
ICAgICAvLyBDb3B5IG92ZXIgdGhlIGNvbnZlcnRlZCBpbmRleCBkYXRhLgogICAgIG1lbWNweSht
YXBwZWRNZW1vcnksICZtU2NyYXRjaEluZGV4RGF0YUJ1ZmZlclswXSwKICAgICAgICAgICAgc2l6
ZW9mKEdMdWludCkgKiBtU2NyYXRjaEluZGV4RGF0YUJ1ZmZlci5zaXplKCkpOwogCi0gICAgZXJy
b3IgPSBtTGluZUxvb3BJQi0+dW5tYXBCdWZmZXIoKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigp
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkobUxp
bmVMb29wSUItPnVubWFwQnVmZmVyKCkpOwogCiAgICAgSW5kZXhCdWZmZXIxMSAqaW5kZXhCdWZm
ZXIgPSBHZXRBczxJbmRleEJ1ZmZlcjExPihtTGluZUxvb3BJQi0+Z2V0SW5kZXhCdWZmZXIoKSk7
CiAgICAgSUQzRDExQnVmZmVyICpkM2RJbmRleEJ1ZmZlciA9IGluZGV4QnVmZmVyLT5nZXRCdWZm
ZXIoKTsKQEAgLTIwMDQsMTcgKzE5NDksMTcgQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmRyYXdM
aW5lTG9vcChjb25zdAogICAgICAgICBtRGV2aWNlQ29udGV4dC0+RHJhd0luZGV4ZWQoaW5kZXhD
b3VudCwgMCwgYmFzZVZlcnRleExvY2F0aW9uKTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVy
cm9yIFJlbmRlcmVyMTE6OmRyYXdUcmlhbmdsZUZhbihjb25zdCBnbDo6RGF0YSAmZGF0YSwKK2ds
OjpFcnJvciBSZW5kZXJlcjExOjpkcmF3VHJpYW5nbGVGYW4oY29uc3QgZ2w6OkNvbnRleHRTdGF0
ZSAmZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBj
b3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5k
aWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1pbkluZGV4
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5zdGFuY2VzKQog
ewotICAgIGdsOjpWZXJ0ZXhBcnJheSAqdmFvICAgICAgICAgICA9IGRhdGEuc3RhdGUtPmdldFZl
cnRleEFycmF5KCk7CisgICAgZ2w6OlZlcnRleEFycmF5ICp2YW8gICAgICAgICAgID0gZGF0YS5n
ZXRTdGF0ZSgpLmdldFZlcnRleEFycmF5KCk7CiAgICAgZ2w6OkJ1ZmZlciAqZWxlbWVudEFycmF5
QnVmZmVyID0gdmFvLT5nZXRFbGVtZW50QXJyYXlCdWZmZXIoKS5nZXQoKTsKIAogICAgIGNvbnN0
IEdMdm9pZCAqaW5kZXhQb2ludGVyID0gaW5kaWNlczsKQEAgLTIwMjYsMTEgKzE5NzEsNyBAQCBn
bDo6RXJyb3IgUmVuZGVyZXIxMTo6ZHJhd1RyaWFuZ2xlRmFuKGNvCiAgICAgICAgIGludHB0cl90
IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluZGljZXMpOwogCiAgICAgICAg
IGNvbnN0IHVpbnQ4X3QgKmJ1ZmZlckRhdGEgPSBOVUxMOwotICAgICAgICBnbDo6RXJyb3IgZXJy
b3IgPSBzdG9yYWdlLT5nZXREYXRhKCZidWZmZXJEYXRhKTsKLSAgICAgICAgaWYgKGVycm9yLmlz
RXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9
CisgICAgICAgIEFOR0xFX1RSWShzdG9yYWdlLT5nZXREYXRhKCZidWZmZXJEYXRhKSk7CiAKICAg
ICAgICAgaW5kZXhQb2ludGVyID0gYnVmZmVyRGF0YSArIG9mZnNldDsKICAgICB9CkBAIC0yMDU2
LDMyICsxOTk3LDIwIEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpkcmF3VHJpYW5nbGVGYW4oY28K
ICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGNy
ZWF0ZSBhIHNjcmF0Y2ggaW5kZXggYnVmZmVyIGZvciBHTF9UUklBTkdMRV9GQU4sIHRvbyBtYW55
IGluZGljZXMgcmVxdWlyZWQuIik7CiAgICAgfQogCi0gICAgR2V0VHJpRmFuSW5kaWNlcyhpbmRl
eFBvaW50ZXIsIHR5cGUsIGNvdW50LCBkYXRhLnN0YXRlLT5pc1ByaW1pdGl2ZVJlc3RhcnRFbmFi
bGVkKCksCisgICAgR2V0VHJpRmFuSW5kaWNlcyhpbmRleFBvaW50ZXIsIHR5cGUsIGNvdW50LCBk
YXRhLmdldFN0YXRlKCkuaXNQcmltaXRpdmVSZXN0YXJ0RW5hYmxlZCgpLAogICAgICAgICAgICAg
ICAgICAgICAgJm1TY3JhdGNoSW5kZXhEYXRhQnVmZmVyKTsKIAogICAgIGNvbnN0IHVuc2lnbmVk
IGludCBzcGFjZU5lZWRlZCA9CiAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4obVNj
cmF0Y2hJbmRleERhdGFCdWZmZXIuc2l6ZSgpICogc2l6ZW9mKHVuc2lnbmVkIGludCkpOwotICAg
IGdsOjpFcnJvciBlcnJvciA9IG1UcmlhbmdsZUZhbklCLT5yZXNlcnZlQnVmZmVyU3BhY2Uoc3Bh
Y2VOZWVkZWQsIEdMX1VOU0lHTkVEX0lOVCk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKG1Ucmlhbmds
ZUZhbklCLT5yZXNlcnZlQnVmZmVyU3BhY2Uoc3BhY2VOZWVkZWQsIEdMX1VOU0lHTkVEX0lOVCkp
OwogCiAgICAgdm9pZCAqbWFwcGVkTWVtb3J5ID0gbnVsbHB0cjsKICAgICB1bnNpZ25lZCBpbnQg
b2Zmc2V0OwotICAgIGVycm9yID0gbVRyaWFuZ2xlRmFuSUItPm1hcEJ1ZmZlcihzcGFjZU5lZWRl
ZCwgJm1hcHBlZE1lbW9yeSwgJm9mZnNldCk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKG1Ucmlhbmds
ZUZhbklCLT5tYXBCdWZmZXIoc3BhY2VOZWVkZWQsICZtYXBwZWRNZW1vcnksICZvZmZzZXQpKTsK
IAogICAgIG1lbWNweShtYXBwZWRNZW1vcnksICZtU2NyYXRjaEluZGV4RGF0YUJ1ZmZlclswXSwg
c3BhY2VOZWVkZWQpOwogCi0gICAgZXJyb3IgPSBtVHJpYW5nbGVGYW5JQi0+dW5tYXBCdWZmZXIo
KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9y
OwotICAgIH0KKyAgICBBTkdMRV9UUlkobVRyaWFuZ2xlRmFuSUItPnVubWFwQnVmZmVyKCkpOwog
CiAgICAgSW5kZXhCdWZmZXIxMSAqaW5kZXhCdWZmZXIgPSBHZXRBczxJbmRleEJ1ZmZlcjExPiht
VHJpYW5nbGVGYW5JQi0+Z2V0SW5kZXhCdWZmZXIoKSk7CiAgICAgSUQzRDExQnVmZmVyICpkM2RJ
bmRleEJ1ZmZlciA9IGluZGV4QnVmZmVyLT5nZXRCdWZmZXIoKTsKQEAgLTIxMDcsNzcgKzIwMzYs
NzEgQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmRyYXdUcmlhbmdsZUZhbihjbwogICAgICAgICBt
RGV2aWNlQ29udGV4dC0+RHJhd0luZGV4ZWQoaW5kZXhDb3VudCwgMCwgLW1pbkluZGV4KTsKICAg
ICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6
Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmFwcGx5U2hhZGVyc0ltcGwo
Y29uc3QgZ2w6OkRhdGEgJmRhdGEsIEdMZW51bSBkcmF3TW9kZSkKK2dsOjpFcnJvciBSZW5kZXJl
cjExOjphcHBseVNoYWRlcnMoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwgR0xlbnVtIGRy
YXdNb2RlKQogewotICAgIFByb2dyYW1EM0QgKnByb2dyYW1EM0QgID0gR2V0SW1wbEFzPFByb2dy
YW1EM0Q+KGRhdGEuc3RhdGUtPmdldFByb2dyYW0oKSk7CisgICAgY29uc3QgYXV0byAmZ2xTdGF0
ZSAgICA9IGRhdGEuZ2V0U3RhdGUoKTsKKyAgICBQcm9ncmFtRDNEICpwcm9ncmFtRDNEID0gR2V0
SW1wbEFzPFByb2dyYW1EM0Q+KGdsU3RhdGUuZ2V0UHJvZ3JhbSgpKTsKKyAgICBwcm9ncmFtRDNE
LT51cGRhdGVDYWNoZWRJbnB1dExheW91dChnbFN0YXRlKTsKKwogICAgIGNvbnN0IGF1dG8gJmlu
cHV0TGF5b3V0ID0gcHJvZ3JhbUQzRC0+Z2V0Q2FjaGVkSW5wdXRMYXlvdXQoKTsKIAotICAgIFNo
YWRlckV4ZWN1dGFibGVEM0QgKnZlcnRleEV4ZSA9IE5VTEw7Ci0gICAgZ2w6OkVycm9yIGVycm9y
ID0gcHJvZ3JhbUQzRC0+Z2V0VmVydGV4RXhlY3V0YWJsZUZvcklucHV0TGF5b3V0KGlucHV0TGF5
b3V0LCAmdmVydGV4RXhlLCBudWxscHRyKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBTaGFkZXJFeGVjdXRhYmxlRDNE
ICp2ZXJ0ZXhFeGUgPSBudWxscHRyOworICAgIEFOR0xFX1RSWShwcm9ncmFtRDNELT5nZXRWZXJ0
ZXhFeGVjdXRhYmxlRm9ySW5wdXRMYXlvdXQoaW5wdXRMYXlvdXQsICZ2ZXJ0ZXhFeGUsIG51bGxw
dHIpKTsKIAotICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZHJhd0ZyYW1lYnVmZmVyID0gZGF0
YS5zdGF0ZS0+Z2V0RHJhd0ZyYW1lYnVmZmVyKCk7Ci0gICAgU2hhZGVyRXhlY3V0YWJsZUQzRCAq
cGl4ZWxFeGUgPSBOVUxMOwotICAgIGVycm9yID0gcHJvZ3JhbUQzRC0+Z2V0UGl4ZWxFeGVjdXRh
YmxlRm9yRnJhbWVidWZmZXIoZHJhd0ZyYW1lYnVmZmVyLCAmcGl4ZWxFeGUpOwotICAgIGlmIChl
cnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAg
IGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZHJhd0ZyYW1lYnVmZmVyID0gZ2xTdGF0ZS5nZXREcmF3
RnJhbWVidWZmZXIoKTsKKyAgICBTaGFkZXJFeGVjdXRhYmxlRDNEICpwaXhlbEV4ZSAgICAgICAg
ICA9IG51bGxwdHI7CisgICAgQU5HTEVfVFJZKHByb2dyYW1EM0QtPmdldFBpeGVsRXhlY3V0YWJs
ZUZvckZyYW1lYnVmZmVyKGRyYXdGcmFtZWJ1ZmZlciwgJnBpeGVsRXhlKSk7CiAKICAgICBTaGFk
ZXJFeGVjdXRhYmxlRDNEICpnZW9tZXRyeUV4ZSA9IG51bGxwdHI7Ci0gICAgZXJyb3IgPQotICAg
ICAgICBwcm9ncmFtRDNELT5nZXRHZW9tZXRyeUV4ZWN1dGFibGVGb3JQcmltaXRpdmVUeXBlKGRh
dGEsIGRyYXdNb2RlLCAmZ2VvbWV0cnlFeGUsIG51bGxwdHIpOwotICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RS
WSgKKyAgICAgICAgcHJvZ3JhbUQzRC0+Z2V0R2VvbWV0cnlFeGVjdXRhYmxlRm9yUHJpbWl0aXZl
VHlwZShkYXRhLCBkcmF3TW9kZSwgJmdlb21ldHJ5RXhlLCBudWxscHRyKSk7CiAKLSAgICBJRDNE
MTFWZXJ0ZXhTaGFkZXIgKnZlcnRleFNoYWRlciA9ICh2ZXJ0ZXhFeGUgPyBHZXRBczxTaGFkZXJF
eGVjdXRhYmxlMTE+KHZlcnRleEV4ZSktPmdldFZlcnRleFNoYWRlcigpIDogTlVMTCk7CisgICAg
SUQzRDExVmVydGV4U2hhZGVyICp2ZXJ0ZXhTaGFkZXIgPQorICAgICAgICAodmVydGV4RXhlID8g
R2V0QXM8U2hhZGVyRXhlY3V0YWJsZTExPih2ZXJ0ZXhFeGUpLT5nZXRWZXJ0ZXhTaGFkZXIoKSA6
IG51bGxwdHIpOwogCi0gICAgSUQzRDExUGl4ZWxTaGFkZXIgKnBpeGVsU2hhZGVyID0gTlVMTDsK
KyAgICBJRDNEMTFQaXhlbFNoYWRlciAqcGl4ZWxTaGFkZXIgPSBudWxscHRyOwogICAgIC8vIFNr
aXAgcGl4ZWwgc2hhZGVyIGlmIHdlJ3JlIGRvaW5nIHJhc3Rlcml6ZXIgZGlzY2FyZC4KLSAgICBi
b29sIHJhc3Rlcml6ZXJEaXNjYXJkID0gZGF0YS5zdGF0ZS0+Z2V0UmFzdGVyaXplclN0YXRlKCku
cmFzdGVyaXplckRpc2NhcmQ7CisgICAgYm9vbCByYXN0ZXJpemVyRGlzY2FyZCA9IGdsU3RhdGUu
Z2V0UmFzdGVyaXplclN0YXRlKCkucmFzdGVyaXplckRpc2NhcmQ7CiAgICAgaWYgKCFyYXN0ZXJp
emVyRGlzY2FyZCkKICAgICB7Ci0gICAgICAgIHBpeGVsU2hhZGVyID0gKHBpeGVsRXhlID8gR2V0
QXM8U2hhZGVyRXhlY3V0YWJsZTExPihwaXhlbEV4ZSktPmdldFBpeGVsU2hhZGVyKCkgOiBOVUxM
KTsKKyAgICAgICAgcGl4ZWxTaGFkZXIgPSAocGl4ZWxFeGUgPyBHZXRBczxTaGFkZXJFeGVjdXRh
YmxlMTE+KHBpeGVsRXhlKS0+Z2V0UGl4ZWxTaGFkZXIoKSA6IG51bGxwdHIpOwogICAgIH0KIAot
ICAgIElEM0QxMUdlb21ldHJ5U2hhZGVyICpnZW9tZXRyeVNoYWRlciA9IE5VTEw7Ci0gICAgYm9v
bCB0cmFuc2Zvcm1GZWVkYmFja0FjdGl2ZSA9IGRhdGEuc3RhdGUtPmlzVHJhbnNmb3JtRmVlZGJh
Y2tBY3RpdmVVbnBhdXNlZCgpOworICAgIElEM0QxMUdlb21ldHJ5U2hhZGVyICpnZW9tZXRyeVNo
YWRlciA9IG51bGxwdHI7CisgICAgYm9vbCB0cmFuc2Zvcm1GZWVkYmFja0FjdGl2ZSAgICAgICAg
ID0gZ2xTdGF0ZS5pc1RyYW5zZm9ybUZlZWRiYWNrQWN0aXZlVW5wYXVzZWQoKTsKICAgICBpZiAo
dHJhbnNmb3JtRmVlZGJhY2tBY3RpdmUpCiAgICAgewotICAgICAgICBnZW9tZXRyeVNoYWRlciA9
ICh2ZXJ0ZXhFeGUgPyBHZXRBczxTaGFkZXJFeGVjdXRhYmxlMTE+KHZlcnRleEV4ZSktPmdldFN0
cmVhbU91dFNoYWRlcigpIDogTlVMTCk7CisgICAgICAgIGdlb21ldHJ5U2hhZGVyID0KKyAgICAg
ICAgICAgICh2ZXJ0ZXhFeGUgPyBHZXRBczxTaGFkZXJFeGVjdXRhYmxlMTE+KHZlcnRleEV4ZSkt
PmdldFN0cmVhbU91dFNoYWRlcigpIDogbnVsbHB0cik7CiAgICAgfQogICAgIGVsc2UKICAgICB7
Ci0gICAgICAgIGdlb21ldHJ5U2hhZGVyID0gKGdlb21ldHJ5RXhlID8gR2V0QXM8U2hhZGVyRXhl
Y3V0YWJsZTExPihnZW9tZXRyeUV4ZSktPmdldEdlb21ldHJ5U2hhZGVyKCkgOiBOVUxMKTsKKyAg
ICAgICAgZ2VvbWV0cnlTaGFkZXIgPQorICAgICAgICAgICAgKGdlb21ldHJ5RXhlID8gR2V0QXM8
U2hhZGVyRXhlY3V0YWJsZTExPihnZW9tZXRyeUV4ZSktPmdldEdlb21ldHJ5U2hhZGVyKCkgOiBu
dWxscHRyKTsKICAgICB9CiAKICAgICBib29sIGRpcnR5VW5pZm9ybXMgPSBmYWxzZTsKIAogICAg
IGlmIChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odmVydGV4U2hhZGVyKSAhPSBtQXBwbGll
ZFZlcnRleFNoYWRlcikKICAgICB7Ci0gICAgICAgIG1EZXZpY2VDb250ZXh0LT5WU1NldFNoYWRl
cih2ZXJ0ZXhTaGFkZXIsIE5VTEwsIDApOworICAgICAgICBtRGV2aWNlQ29udGV4dC0+VlNTZXRT
aGFkZXIodmVydGV4U2hhZGVyLCBudWxscHRyLCAwKTsKICAgICAgICAgbUFwcGxpZWRWZXJ0ZXhT
aGFkZXIgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odmVydGV4U2hhZGVyKTsKICAgICAg
ICAgZGlydHlVbmlmb3JtcyA9IHRydWU7CiAgICAgfQogCiAgICAgaWYgKHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90PihnZW9tZXRyeVNoYWRlcikgIT0gbUFwcGxpZWRHZW9tZXRyeVNoYWRlcikK
ICAgICB7Ci0gICAgICAgIG1EZXZpY2VDb250ZXh0LT5HU1NldFNoYWRlcihnZW9tZXRyeVNoYWRl
ciwgTlVMTCwgMCk7CisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5HU1NldFNoYWRlcihnZW9tZXRy
eVNoYWRlciwgbnVsbHB0ciwgMCk7CiAgICAgICAgIG1BcHBsaWVkR2VvbWV0cnlTaGFkZXIgPSBy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZ2VvbWV0cnlTaGFkZXIpOwogICAgICAgICBkaXJ0
eVVuaWZvcm1zID0gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAocmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KHBpeGVsU2hhZGVyKSAhPSBtQXBwbGllZFBpeGVsU2hhZGVyKQogICAgIHsKLSAgICAg
ICAgbURldmljZUNvbnRleHQtPlBTU2V0U2hhZGVyKHBpeGVsU2hhZGVyLCBOVUxMLCAwKTsKKyAg
ICAgICAgbURldmljZUNvbnRleHQtPlBTU2V0U2hhZGVyKHBpeGVsU2hhZGVyLCBudWxscHRyLCAw
KTsKICAgICAgICAgbUFwcGxpZWRQaXhlbFNoYWRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90PihwaXhlbFNoYWRlcik7CiAgICAgICAgIGRpcnR5VW5pZm9ybXMgPSB0cnVlOwogICAgIH0K
QEAgLTIxODcsNyArMjExMCw3IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjphcHBseVNoYWRlcnNJ
bXBsKGMKICAgICAgICAgcHJvZ3JhbUQzRC0+ZGlydHlBbGxVbmlmb3JtcygpOwogICAgIH0KIAot
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBwcm9ncmFtRDNE
LT5hcHBseVVuaWZvcm1zKGRyYXdNb2RlKTsKIH0KIAogZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmFw
cGx5VW5pZm9ybXMoY29uc3QgUHJvZ3JhbUQzRCAmcHJvZ3JhbUQzRCwKQEAgLTIzNzEsOCArMjI5
NCw4IEBAIHZvaWQgUmVuZGVyZXIxMTo6U2FtcGxlck1ldGFkYXRhRDNEMTE6OmkKIAogdm9pZCBS
ZW5kZXJlcjExOjpTYW1wbGVyTWV0YWRhdGFEM0QxMTo6dXBkYXRlKHVuc2lnbmVkIGludCBzYW1w
bGVySW5kZXgsIGNvbnN0IGdsOjpUZXh0dXJlICZ0ZXh0dXJlKQogewotICAgIHVuc2lnbmVkIGlu
dCBiYXNlTGV2ZWwgPSB0ZXh0dXJlLmdldEJhc2VMZXZlbCgpOwotICAgIEdMZW51bSBpbnRlcm5h
bEZvcm1hdCA9IHRleHR1cmUuZ2V0SW50ZXJuYWxGb3JtYXQodGV4dHVyZS5nZXRUYXJnZXQoKSwg
dGV4dHVyZS5nZXRCYXNlTGV2ZWwoKSk7CisgICAgdW5zaWduZWQgaW50IGJhc2VMZXZlbCA9IHRl
eHR1cmUuZ2V0VGV4dHVyZVN0YXRlKCkuZ2V0RWZmZWN0aXZlQmFzZUxldmVsKCk7CisgICAgR0xl
bnVtIHNpemVkRm9ybWF0ICAgICA9IHRleHR1cmUuZ2V0Rm9ybWF0KHRleHR1cmUuZ2V0VGFyZ2V0
KCksIGJhc2VMZXZlbCkuYXNTaXplZCgpOwogICAgIGlmIChtU2FtcGxlck1ldGFkYXRhW3NhbXBs
ZXJJbmRleF0uYmFzZUxldmVsICE9IHN0YXRpY19jYXN0PGludD4oYmFzZUxldmVsKSkKICAgICB7
CiAgICAgICAgIG1TYW1wbGVyTWV0YWRhdGFbc2FtcGxlckluZGV4XS5iYXNlTGV2ZWwgPSBzdGF0
aWNfY2FzdDxpbnQ+KGJhc2VMZXZlbCk7CkBAIC0yMzg1LDcgKzIzMDgsNyBAQCB2b2lkIFJlbmRl
cmVyMTE6OlNhbXBsZXJNZXRhZGF0YUQzRDExOjp1CiAgICAgYm9vbCBuZWVkSW50ZWdlclRleHR1
cmVNZXRhZGF0YSA9IGZhbHNlOwogICAgIC8vIGludGVybmFsRm9ybWF0Qml0cyA9PSAwIG1lYW5z
IGEgMzItYml0IHRleHR1cmUgaW4gdGhlIGNhc2Ugb2YgaW50ZWdlciB0ZXh0dXJlcy4KICAgICBp
bnQgaW50ZXJuYWxGb3JtYXRCaXRzID0gMDsKLSAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQor
ICAgIHN3aXRjaCAoc2l6ZWRGb3JtYXQpCiAgICAgewogICAgICAgICBjYXNlIEdMX1JHQkEzMkk6
CiAgICAgICAgIGNhc2UgR0xfUkdCQTMyVUk6CkBAIC0yNTI0LDEzICsyNDQ3LDcgQEAgdm9pZCBS
ZW5kZXJlcjExOjptYXJrQWxsU3RhdGVEaXJ0eSgpCiAgICAgbUFwcGxpZWRHZW9tZXRyeVNoYWRl
ciA9IGFuZ2xlOjpEaXJ0eVBvaW50ZXI7CiAgICAgbUFwcGxpZWRQaXhlbFNoYWRlciAgICA9IGFu
Z2xlOjpEaXJ0eVBvaW50ZXI7CiAKLSAgICBtQXBwbGllZE51bVhGQkJpbmRpbmdzID0gc3RhdGlj
X2Nhc3Q8c2l6ZV90PigtMSk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGdsOjpJTVBM
RU1FTlRBVElPTl9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUlM7IGkrKykKLSAgICB7Ci0g
ICAgICAgIG1BcHBsaWVkVEZCdWZmZXJzW2ldID0gTlVMTDsKLSAgICAgICAgbUFwcGxpZWRURk9m
ZnNldHNbaV0gPSAwOwotICAgIH0KKyAgICBtQXBwbGllZFRGT2JqZWN0ID0gYW5nbGU6OkRpcnR5
UG9pbnRlcjsKIAogICAgIG1lbXNldCgmbUFwcGxpZWRWZXJ0ZXhDb25zdGFudHMsIDAsIHNpemVv
ZihkeF9WZXJ0ZXhDb25zdGFudHMxMSkpOwogICAgIG1lbXNldCgmbUFwcGxpZWRQaXhlbENvbnN0
YW50cywgMCwgc2l6ZW9mKGR4X1BpeGVsQ29uc3RhbnRzMTEpKTsKQEAgLTI1NzksMjQgKzI0OTYs
MTggQEAgYm9vbCBSZW5kZXJlcjExOjp0ZXN0RGV2aWNlTG9zdCgpCiB7CiAgICAgYm9vbCBpc0xv
c3QgPSBmYWxzZTsKIAorICAgIGlmICghbURldmljZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKwogICAgIC8vIEdldFJlbW92ZWRSZWFzb24gaXMgdXNlZCB0byB0ZXN0IGlm
IHRoZSBkZXZpY2UgaXMgcmVtb3ZlZAogICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+R2V0
RGV2aWNlUmVtb3ZlZFJlYXNvbigpOwogICAgIGlzTG9zdCA9IGQzZDExOjppc0RldmljZUxvc3RF
cnJvcihyZXN1bHQpOwogCiAgICAgaWYgKGlzTG9zdCkKICAgICB7Ci0gICAgICAgIC8vIExvZyBl
cnJvciBpZiB0aGlzIGlzIGEgbmV3IGRldmljZSBsb3N0IGV2ZW50Ci0gICAgICAgIGlmIChtRGV2
aWNlTG9zdCA9PSBmYWxzZSkKLSAgICAgICAgewotICAgICAgICAgICAgRVJSKCJUaGUgRDNEMTEg
ZGV2aWNlIHdhcyByZW1vdmVkOiAweCUwOFgiLCByZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgLy8gZW5zdXJlIHdlIG5vdGUgdGhlIGRldmljZSBsb3NzIC0tCi0gICAgICAgIC8vIHdlJ2xs
IHByb2JhYmx5IGdldCB0aGlzIGRvbmUgYWdhaW4gYnkgbm90aWZ5RGV2aWNlTG9zdAotICAgICAg
ICAvLyBidXQgYmVzdCB0byByZW1lbWJlciBpdCEKLSAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGRv
bid0IHdhbnQgdG8gY2xlYXIgdGhlIGRldmljZSBsb3NzIHN0YXR1cyBoZXJlCi0gICAgICAgIC8v
IC0tIHRoaXMgbmVlZHMgdG8gYmUgZG9uZSBieSByZXNldERldmljZQotICAgICAgICBtRGV2aWNl
TG9zdCA9IHRydWU7CisgICAgICAgIEVSUigiVGhlIEQzRDExIGRldmljZSB3YXMgcmVtb3ZlZDog
MHglMDhYIiwgcmVzdWx0KTsKICAgICB9CiAKICAgICByZXR1cm4gaXNMb3N0OwpAQCAtMjY0Miw2
ICsyNTUzLDE0IEBAIHZvaWQgUmVuZGVyZXIxMTo6cmVsZWFzZSgpCiB7CiAgICAgUmVuZGVyZXJE
M0Q6OmNsZWFudXAoKTsKIAorICAgIG1TY3JhdGNoTWVtb3J5QnVmZmVyLnJlc2l6ZSgwKTsKKwor
ICAgIGlmIChtQW5ub3RhdG9yICE9IG51bGxwdHIpCisgICAgeworICAgICAgICBnbDo6VW5pbml0
aWFsaXplRGVidWdBbm5vdGF0aW9ucygpOworICAgICAgICBTYWZlRGVsZXRlKG1Bbm5vdGF0b3Ip
OworICAgIH0KKwogICAgIHJlbGVhc2VEZXZpY2VSZXNvdXJjZXMoKTsKIAogICAgIGlmICghbUNy
ZWF0ZWRXaXRoRGV2aWNlRVhUKQpAQCAtMjcwMSw4ICsyNjIwLDYgQEAgYm9vbCBSZW5kZXJlcjEx
OjpyZXNldERldmljZSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBtRGV2
aWNlTG9zdCA9IGZhbHNlOwotCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI3ODcsNyArMjcw
NCw3IEBAIGJvb2wgUmVuZGVyZXIxMTo6Z2V0U2hhcmVIYW5kbGVTdXBwb3J0KCkKIAogICAgIC8v
IFdlIG9ubHkgY3VycmVudGx5IHN1cHBvcnQgc2hhcmUgaGFuZGxlcyB3aXRoIEJHUkEgc3VyZmFj
ZXMsIGJlY2F1c2UKICAgICAvLyBjaHJvbWUgbmVlZHMgQkdSQS4gT25jZSBjaHJvbWUgZml4ZXMg
dGhpcywgd2Ugc2hvdWxkIGFsd2F5cyBzdXBwb3J0IHRoZW0uCi0gICAgaWYgKCFnZXRSZW5kZXJl
ckV4dGVuc2lvbnMoKS50ZXh0dXJlRm9ybWF0QkdSQTg4ODgpCisgICAgaWYgKCFnZXROYXRpdmVF
eHRlbnNpb25zKCkudGV4dHVyZUZvcm1hdEJHUkE4ODg4KQogICAgIHsKICAgICAgICAgbVN1cHBv
cnRzU2hhcmVIYW5kbGVzID0gZmFsc2U7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI4NDcs
NiArMjc2NCwxOCBAQCBib29sIFJlbmRlcmVyMTE6OmdldFNoYXJlSGFuZGxlU3VwcG9ydCgpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgUmVuZGVyZXIxMTo6Z2V0TlYxMlRleHR1cmVTdXBw
b3J0KCkgY29uc3QKK3sKKyAgICBIUkVTVUxUIHJlc3VsdDsKKyAgICBVSU5UIGZvcm1hdFN1cHBv
cnQ7CisgICAgcmVzdWx0ID0gbURldmljZS0+Q2hlY2tGb3JtYXRTdXBwb3J0KERYR0lfRk9STUFU
X05WMTIsICZmb3JtYXRTdXBwb3J0KTsKKyAgICBpZiAocmVzdWx0ID09IEVfRkFJTCkKKyAgICB7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIChmb3JtYXRTdXBwb3J0
ICYgRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRTJEKSAhPSAwOworfQorCiBpbnQgUmVuZGVy
ZXIxMTo6Z2V0TWFqb3JTaGFkZXJNb2RlbCgpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChtUmVuZGVy
ZXIxMURldmljZUNhcHMuZmVhdHVyZUxldmVsKQpAQCAtMjg5NCw0MiArMjgyMywyOSBAQCBjb25z
dCBXb3JrYXJvdW5kc0QzRCAmUmVuZGVyZXJEM0Q6OmdldFdvCiAgICAgcmV0dXJuIG1Xb3JrYXJv
dW5kczsKIH0KIAotZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmNvcHlJbWFnZTJEKGNvbnN0IGdsOjpG
cmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZVJlY3Qs
IEdMZW51bSBkZXN0Rm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsIFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLCBHTGlu
dCBsZXZlbCkKK2dsOjpFcnJvciBSZW5kZXJlcjExOjpjb3B5SW1hZ2VJbnRlcm5hbChjb25zdCBn
bDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZVJlY3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RGb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9m
ZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJUYXJn
ZXREM0QgKmRlc3RSZW5kZXJUYXJnZXQpCiB7Ci0gICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0
YWNobWVudCAqY29sb3JidWZmZXIgPSBmcmFtZWJ1ZmZlci0+Z2V0UmVhZENvbG9yYnVmZmVyKCk7
Ci0gICAgQVNTRVJUKGNvbG9yYnVmZmVyKTsKKyAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRh
Y2htZW50ICpjb2xvckF0dGFjaG1lbnQgPSBmcmFtZWJ1ZmZlci0+Z2V0UmVhZENvbG9yYnVmZmVy
KCk7CisgICAgQVNTRVJUKGNvbG9yQXR0YWNobWVudCk7CiAKLSAgICBSZW5kZXJUYXJnZXQxMSAq
c291cmNlUmVuZGVyVGFyZ2V0ID0gTlVMTDsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBjb2xvcmJ1
ZmZlci0+Z2V0UmVuZGVyVGFyZ2V0KCZzb3VyY2VSZW5kZXJUYXJnZXQpOwotICAgIGlmIChlcnJv
ci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIFJl
bmRlclRhcmdldDExICpzb3VyY2VSZW5kZXJUYXJnZXQgPSBudWxscHRyOworICAgIEFOR0xFX1RS
WShjb2xvckF0dGFjaG1lbnQtPmdldFJlbmRlclRhcmdldCgmc291cmNlUmVuZGVyVGFyZ2V0KSk7
CiAgICAgQVNTRVJUKHNvdXJjZVJlbmRlclRhcmdldCk7CiAKICAgICBJRDNEMTFTaGFkZXJSZXNv
dXJjZVZpZXcgKnNvdXJjZSA9IHNvdXJjZVJlbmRlclRhcmdldC0+Z2V0QmxpdFNoYWRlclJlc291
cmNlVmlldygpOwogICAgIEFTU0VSVChzb3VyY2UpOwogCi0gICAgVGV4dHVyZVN0b3JhZ2UxMV8y
RCAqc3RvcmFnZTExID0gR2V0QXM8VGV4dHVyZVN0b3JhZ2UxMV8yRD4oc3RvcmFnZSk7Ci0gICAg
QVNTRVJUKHN0b3JhZ2UxMSk7Ci0KLSAgICBnbDo6SW1hZ2VJbmRleCBpbmRleCA9IGdsOjpJbWFn
ZUluZGV4OjpNYWtlMkQobGV2ZWwpOwotICAgIFJlbmRlclRhcmdldEQzRCAqZGVzdFJlbmRlclRh
cmdldCA9IE5VTEw7Ci0gICAgZXJyb3IgPSBzdG9yYWdlMTEtPmdldFJlbmRlclRhcmdldChpbmRl
eCwgJmRlc3RSZW5kZXJUYXJnZXQpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewot
ICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQotICAgIEFTU0VSVChkZXN0UmVuZGVyVGFyZ2V0
KTsKLQogICAgIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKmRlc3QgPSBHZXRBczxSZW5kZXJUYXJn
ZXQxMT4oZGVzdFJlbmRlclRhcmdldCktPmdldFJlbmRlclRhcmdldFZpZXcoKTsKICAgICBBU1NF
UlQoZGVzdCk7CiAKICAgICBnbDo6Qm94IHNvdXJjZUFyZWEoc291cmNlUmVjdC54LCBzb3VyY2VS
ZWN0LnksIDAsIHNvdXJjZVJlY3Qud2lkdGgsIHNvdXJjZVJlY3QuaGVpZ2h0LCAxKTsKICAgICBn
bDo6RXh0ZW50cyBzb3VyY2VTaXplKHNvdXJjZVJlbmRlclRhcmdldC0+Z2V0V2lkdGgoKSwgc291
cmNlUmVuZGVyVGFyZ2V0LT5nZXRIZWlnaHQoKSwgMSk7CiAKLSAgICBjb25zdCBib29sIGludmVy
dFNvdXJjZSA9IFVzZVByZXNlbnRQYXRoRmFzdCh0aGlzLCBjb2xvcmJ1ZmZlcik7CisgICAgY29u
c3QgYm9vbCBpbnZlcnRTb3VyY2UgPSBVc2VQcmVzZW50UGF0aEZhc3QodGhpcywgY29sb3JBdHRh
Y2htZW50KTsKICAgICBpZiAoaW52ZXJ0U291cmNlKQogICAgIHsKICAgICAgICAgc291cmNlQXJl
YS55ICAgICAgPSBzb3VyY2VTaXplLmhlaWdodCAtIHNvdXJjZVJlY3QueTsKQEAgLTI5MzksMTg4
ICsyODU1LDIyMCBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Y29weUltYWdlMkQoY29uc3QgCiAg
ICAgZ2w6OkJveCBkZXN0QXJlYShkZXN0T2Zmc2V0LngsIGRlc3RPZmZzZXQueSwgMCwgc291cmNl
UmVjdC53aWR0aCwgc291cmNlUmVjdC5oZWlnaHQsIDEpOwogICAgIGdsOjpFeHRlbnRzIGRlc3RT
aXplKGRlc3RSZW5kZXJUYXJnZXQtPmdldFdpZHRoKCksIGRlc3RSZW5kZXJUYXJnZXQtPmdldEhl
aWdodCgpLCAxKTsKIAotICAgIC8vIFVzZSBuZWFyZXN0IGZpbHRlcmluZyBiZWNhdXNlIHNvdXJj
ZSBhbmQgZGVzdGluYXRpb24gYXJlIHRoZSBzYW1lIHNpemUgZm9yIHRoZSBkaXJlY3QKLSAgICAv
LyBjb3B5Ci0gICAgZXJyb3IgPSBtQmxpdC0+Y29weVRleHR1cmUoc291cmNlLCBzb3VyY2VBcmVh
LCBzb3VyY2VTaXplLCBkZXN0LCBkZXN0QXJlYSwgZGVzdFNpemUsIE5VTEwsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVzdEZvcm1hdCwgR0xfTkVBUkVTVCwgZmFsc2UpOwotICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAg
fQorICAgIC8vIFVzZSBuZWFyZXN0IGZpbHRlcmluZyBiZWNhdXNlIHNvdXJjZSBhbmQgZGVzdGlu
YXRpb24gYXJlIHRoZSBzYW1lIHNpemUgZm9yIHRoZSBkaXJlY3QgY29weS4KKyAgICAvLyBDb252
ZXJ0IHRvIHRoZSB1bnNpemVkIGZvcm1hdCBiZWZvcmUgY2FsbGluZyBjb3B5VGV4dHVyZS4KKyAg
ICBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJmludGVybmFsRm9ybWF0ID0gZ2w6OkdldEludGVy
bmFsRm9ybWF0SW5mbyhkZXN0Rm9ybWF0KTsKKyAgICBBTkdMRV9UUlkobUJsaXQtPmNvcHlUZXh0
dXJlKHNvdXJjZSwgc291cmNlQXJlYSwgc291cmNlU2l6ZSwgZGVzdCwgZGVzdEFyZWEsIGRlc3RT
aXplLCBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxG
b3JtYXQuZm9ybWF0LCBHTF9ORUFSRVNULCBmYWxzZSwgZmFsc2UsIGZhbHNlKSk7CiAKLSAgICBz
dG9yYWdlMTEtPmludmFsaWRhdGVTd2l6emxlQ2FjaGVMZXZlbChsZXZlbCk7Ci0KLSAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0K
IAotZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmNvcHlJbWFnZUN1YmUoY29uc3QgZ2w6OkZyYW1lYnVm
ZmVyICpmcmFtZWJ1ZmZlciwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlUmVjdCwgR0xlbnVt
IGRlc3RGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LCBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwgR0xlbnVtIHRh
cmdldCwgR0xpbnQgbGV2ZWwpCitnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Y29weUltYWdlMkQoY29u
c3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VSZWN0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwpCiB7Ci0gICAgY29uc3Qg
Z2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqY29sb3JidWZmZXIgPSBmcmFtZWJ1ZmZlci0+Z2V0
UmVhZENvbG9yYnVmZmVyKCk7Ci0gICAgQVNTRVJUKGNvbG9yYnVmZmVyKTsKKyAgICBUZXh0dXJl
U3RvcmFnZTExXzJEICpzdG9yYWdlMTEgPSBHZXRBczxUZXh0dXJlU3RvcmFnZTExXzJEPihzdG9y
YWdlKTsKKyAgICBBU1NFUlQoc3RvcmFnZTExKTsKIAotICAgIFJlbmRlclRhcmdldDExICpzb3Vy
Y2VSZW5kZXJUYXJnZXQgPSBOVUxMOwotICAgIGdsOjpFcnJvciBlcnJvciA9IGNvbG9yYnVmZmVy
LT5nZXRSZW5kZXJUYXJnZXQoJnNvdXJjZVJlbmRlclRhcmdldCk7Ci0gICAgaWYgKGVycm9yLmlz
RXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Ci0gICAgQVNTRVJU
KHNvdXJjZVJlbmRlclRhcmdldCk7CisgICAgZ2w6OkltYWdlSW5kZXggaW5kZXggICAgICAgICAg
ICAgID0gZ2w6OkltYWdlSW5kZXg6Ok1ha2UyRChsZXZlbCk7CisgICAgUmVuZGVyVGFyZ2V0RDNE
ICpkZXN0UmVuZGVyVGFyZ2V0ID0gbnVsbHB0cjsKKyAgICBBTkdMRV9UUlkoc3RvcmFnZTExLT5n
ZXRSZW5kZXJUYXJnZXQoaW5kZXgsICZkZXN0UmVuZGVyVGFyZ2V0KSk7CisgICAgQVNTRVJUKGRl
c3RSZW5kZXJUYXJnZXQpOwogCi0gICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzb3VyY2Ug
PSBzb3VyY2VSZW5kZXJUYXJnZXQtPmdldEJsaXRTaGFkZXJSZXNvdXJjZVZpZXcoKTsKLSAgICBB
U1NFUlQoc291cmNlKTsKKyAgICBBTkdMRV9UUlkoY29weUltYWdlSW50ZXJuYWwoZnJhbWVidWZm
ZXIsIHNvdXJjZVJlY3QsIGRlc3RGb3JtYXQsIGRlc3RPZmZzZXQsIGRlc3RSZW5kZXJUYXJnZXQp
KTsKIAorICAgIHN0b3JhZ2UxMS0+bWFya0xldmVsRGlydHkobGV2ZWwpOworCisgICAgcmV0dXJu
IGdsOjpOb0Vycm9yKCk7Cit9CisKK2dsOjpFcnJvciBSZW5kZXJlcjExOjpjb3B5SW1hZ2VDdWJl
KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0YW5nbGUg
JnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwgVGV4dHVyZVN0b3JhZ2Ug
KnN0b3JhZ2UsIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsKQorewogICAgIFRleHR1cmVTdG9y
YWdlMTFfQ3ViZSAqc3RvcmFnZTExID0gR2V0QXM8VGV4dHVyZVN0b3JhZ2UxMV9DdWJlPihzdG9y
YWdlKTsKICAgICBBU1NFUlQoc3RvcmFnZTExKTsKIAogICAgIGdsOjpJbWFnZUluZGV4IGluZGV4
ID0gZ2w6OkltYWdlSW5kZXg6Ok1ha2VDdWJlKHRhcmdldCwgbGV2ZWwpOwotICAgIFJlbmRlclRh
cmdldEQzRCAqZGVzdFJlbmRlclRhcmdldCA9IE5VTEw7Ci0gICAgZXJyb3IgPSBzdG9yYWdlMTEt
PmdldFJlbmRlclRhcmdldChpbmRleCwgJmRlc3RSZW5kZXJUYXJnZXQpOwotICAgIGlmIChlcnJv
ci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIFJl
bmRlclRhcmdldEQzRCAqZGVzdFJlbmRlclRhcmdldCA9IG51bGxwdHI7CisgICAgQU5HTEVfVFJZ
KHN0b3JhZ2UxMS0+Z2V0UmVuZGVyVGFyZ2V0KGluZGV4LCAmZGVzdFJlbmRlclRhcmdldCkpOwog
ICAgIEFTU0VSVChkZXN0UmVuZGVyVGFyZ2V0KTsKIAotICAgIElEM0QxMVJlbmRlclRhcmdldFZp
ZXcgKmRlc3QgPSBHZXRBczxSZW5kZXJUYXJnZXQxMT4oZGVzdFJlbmRlclRhcmdldCktPmdldFJl
bmRlclRhcmdldFZpZXcoKTsKLSAgICBBU1NFUlQoZGVzdCk7CisgICAgQU5HTEVfVFJZKGNvcHlJ
bWFnZUludGVybmFsKGZyYW1lYnVmZmVyLCBzb3VyY2VSZWN0LCBkZXN0Rm9ybWF0LCBkZXN0T2Zm
c2V0LCBkZXN0UmVuZGVyVGFyZ2V0KSk7CiAKLSAgICBnbDo6Qm94IHNvdXJjZUFyZWEoc291cmNl
UmVjdC54LCBzb3VyY2VSZWN0LnksIDAsIHNvdXJjZVJlY3Qud2lkdGgsIHNvdXJjZVJlY3QuaGVp
Z2h0LCAxKTsKLSAgICBnbDo6RXh0ZW50cyBzb3VyY2VTaXplKHNvdXJjZVJlbmRlclRhcmdldC0+
Z2V0V2lkdGgoKSwgc291cmNlUmVuZGVyVGFyZ2V0LT5nZXRIZWlnaHQoKSwgMSk7CisgICAgc3Rv
cmFnZTExLT5tYXJrTGV2ZWxEaXJ0eShsZXZlbCk7CiAKLSAgICBjb25zdCBib29sIGludmVydFNv
dXJjZSA9IFVzZVByZXNlbnRQYXRoRmFzdCh0aGlzLCBjb2xvcmJ1ZmZlcik7Ci0gICAgaWYgKGlu
dmVydFNvdXJjZSkKLSAgICB7Ci0gICAgICAgIHNvdXJjZUFyZWEueSAgICAgID0gc291cmNlU2l6
ZS5oZWlnaHQgLSBzb3VyY2VSZWN0Lnk7Ci0gICAgICAgIHNvdXJjZUFyZWEuaGVpZ2h0ID0gLXNv
dXJjZUFyZWEuaGVpZ2h0OwotICAgIH0KKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKK30KIAot
ICAgIGdsOjpCb3ggZGVzdEFyZWEoZGVzdE9mZnNldC54LCBkZXN0T2Zmc2V0LnksIDAsIHNvdXJj
ZVJlY3Qud2lkdGgsIHNvdXJjZVJlY3QuaGVpZ2h0LCAxKTsKLSAgICBnbDo6RXh0ZW50cyBkZXN0
U2l6ZShkZXN0UmVuZGVyVGFyZ2V0LT5nZXRXaWR0aCgpLCBkZXN0UmVuZGVyVGFyZ2V0LT5nZXRI
ZWlnaHQoKSwgMSk7CitnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Y29weUltYWdlM0QoY29uc3QgZ2w6
OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlUmVj
dCwgR0xlbnVtIGRlc3RGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsIEdM
aW50IGxldmVsKQoreworICAgIFRleHR1cmVTdG9yYWdlMTFfM0QgKnN0b3JhZ2UxMSA9IEdldEFz
PFRleHR1cmVTdG9yYWdlMTFfM0Q+KHN0b3JhZ2UpOworICAgIEFTU0VSVChzdG9yYWdlMTEpOwog
Ci0gICAgLy8gVXNlIG5lYXJlc3QgZmlsdGVyaW5nIGJlY2F1c2Ugc291cmNlIGFuZCBkZXN0aW5h
dGlvbiBhcmUgdGhlIHNhbWUgc2l6ZSBmb3IgdGhlIGRpcmVjdAotICAgIC8vIGNvcHkKLSAgICBl
cnJvciA9IG1CbGl0LT5jb3B5VGV4dHVyZShzb3VyY2UsIHNvdXJjZUFyZWEsIHNvdXJjZVNpemUs
IGRlc3QsIGRlc3RBcmVhLCBkZXN0U2l6ZSwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZXN0Rm9ybWF0LCBHTF9ORUFSRVNULCBmYWxzZSk7Ci0gICAgaWYgKGVycm9yLmlz
RXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgZ2w6Oklt
YWdlSW5kZXggaW5kZXggPSBnbDo6SW1hZ2VJbmRleDo6TWFrZTNEKGxldmVsLCBkZXN0T2Zmc2V0
LnopOworICAgIFJlbmRlclRhcmdldEQzRCAqZGVzdFJlbmRlclRhcmdldCA9IG51bGxwdHI7Cisg
ICAgQU5HTEVfVFJZKHN0b3JhZ2UxMS0+Z2V0UmVuZGVyVGFyZ2V0KGluZGV4LCAmZGVzdFJlbmRl
clRhcmdldCkpOworICAgIEFTU0VSVChkZXN0UmVuZGVyVGFyZ2V0KTsKIAotICAgIHN0b3JhZ2Ux
MS0+aW52YWxpZGF0ZVN3aXp6bGVDYWNoZUxldmVsKGxldmVsKTsKKyAgICBBTkdMRV9UUlkoY29w
eUltYWdlSW50ZXJuYWwoZnJhbWVidWZmZXIsIHNvdXJjZVJlY3QsIGRlc3RGb3JtYXQsIGRlc3RP
ZmZzZXQsIGRlc3RSZW5kZXJUYXJnZXQpKTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9f
RVJST1IpOworICAgIHN0b3JhZ2UxMS0+bWFya0xldmVsRGlydHkobGV2ZWwpOworCisgICAgcmV0
dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJvciBSZW5kZXJlcjExOjpjb3B5SW1hZ2Uz
RChjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBnbDo6UmVjdGFuZ2xl
ICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LCBUZXh0dXJlU3RvcmFnZSAq
c3RvcmFnZSwgR0xpbnQgbGV2ZWwpCitnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Y29weUltYWdlMkRB
cnJheShjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBnbDo6UmVjdGFu
Z2xlICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsIFRleHR1cmVT
dG9yYWdlICpzdG9yYWdlLCBHTGludCBsZXZlbCkKIHsKLSAgICBjb25zdCBnbDo6RnJhbWVidWZm
ZXJBdHRhY2htZW50ICpjb2xvcmJ1ZmZlciA9IGZyYW1lYnVmZmVyLT5nZXRSZWFkQ29sb3JidWZm
ZXIoKTsKLSAgICBBU1NFUlQoY29sb3JidWZmZXIpOworICAgIFRleHR1cmVTdG9yYWdlMTFfMkRB
cnJheSAqc3RvcmFnZTExID0gR2V0QXM8VGV4dHVyZVN0b3JhZ2UxMV8yREFycmF5PihzdG9yYWdl
KTsKKyAgICBBU1NFUlQoc3RvcmFnZTExKTsKIAotICAgIFJlbmRlclRhcmdldDExICpzb3VyY2VS
ZW5kZXJUYXJnZXQgPSBOVUxMOwotICAgIGdsOjpFcnJvciBlcnJvciA9IGNvbG9yYnVmZmVyLT5n
ZXRSZW5kZXJUYXJnZXQoJnNvdXJjZVJlbmRlclRhcmdldCk7Ci0gICAgaWYgKGVycm9yLmlzRXJy
b3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Ci0gICAgQVNTRVJUKHNv
dXJjZVJlbmRlclRhcmdldCk7CisgICAgZ2w6OkltYWdlSW5kZXggaW5kZXggPSBnbDo6SW1hZ2VJ
bmRleDo6TWFrZTJEQXJyYXkobGV2ZWwsIGRlc3RPZmZzZXQueik7CisgICAgUmVuZGVyVGFyZ2V0
RDNEICpkZXN0UmVuZGVyVGFyZ2V0ID0gbnVsbHB0cjsKKyAgICBBTkdMRV9UUlkoc3RvcmFnZTEx
LT5nZXRSZW5kZXJUYXJnZXQoaW5kZXgsICZkZXN0UmVuZGVyVGFyZ2V0KSk7CisgICAgQVNTRVJU
KGRlc3RSZW5kZXJUYXJnZXQpOwogCi0gICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzb3Vy
Y2UgPSBzb3VyY2VSZW5kZXJUYXJnZXQtPmdldEJsaXRTaGFkZXJSZXNvdXJjZVZpZXcoKTsKLSAg
ICBBU1NFUlQoc291cmNlKTsKKyAgICBBTkdMRV9UUlkoY29weUltYWdlSW50ZXJuYWwoZnJhbWVi
dWZmZXIsIHNvdXJjZVJlY3QsIGRlc3RGb3JtYXQsIGRlc3RPZmZzZXQsIGRlc3RSZW5kZXJUYXJn
ZXQpKTsKKyAgICBzdG9yYWdlMTEtPm1hcmtMZXZlbERpcnR5KGxldmVsKTsKIAotICAgIFRleHR1
cmVTdG9yYWdlMTFfM0QgKnN0b3JhZ2UxMSA9IEdldEFzPFRleHR1cmVTdG9yYWdlMTFfM0Q+KHN0
b3JhZ2UpOwotICAgIEFTU0VSVChzdG9yYWdlMTEpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigp
OworfQogCi0gICAgZ2w6OkltYWdlSW5kZXggaW5kZXggPSBnbDo6SW1hZ2VJbmRleDo6TWFrZTNE
KGxldmVsLCBkZXN0T2Zmc2V0LnopOwotICAgIFJlbmRlclRhcmdldEQzRCAqZGVzdFJlbmRlclRh
cmdldCA9IE5VTEw7Ci0gICAgZXJyb3IgPSBzdG9yYWdlMTEtPmdldFJlbmRlclRhcmdldChpbmRl
eCwgJmRlc3RSZW5kZXJUYXJnZXQpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewot
ICAgICAgICByZXR1cm4gZXJyb3I7CitnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Y29weVRleHR1cmUo
Y29uc3QgZ2w6OlRleHR1cmUgKnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBzb3VyY2VMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VSZWN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZGVzdExldmVsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrRmxpcFksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrVW5tdWx0aXBseUFscGhhKQoreworICAgIGNv
bnN0IFRleHR1cmVEM0QgKnNvdXJjZUQzRCA9IEdldEltcGxBczxUZXh0dXJlRDNEPihzb3VyY2Up
OworCisgICAgVGV4dHVyZVN0b3JhZ2UgKnNvdXJjZVN0b3JhZ2UgPSBudWxscHRyOworICAgIEFO
R0xFX1RSWShjb25zdF9jYXN0PFRleHR1cmVEM0QgKj4oc291cmNlRDNEKS0+Z2V0TmF0aXZlVGV4
dHVyZSgmc291cmNlU3RvcmFnZSkpOworCisgICAgVGV4dHVyZVN0b3JhZ2UxMV8yRCAqc291cmNl
U3RvcmFnZTExID0gR2V0QXM8VGV4dHVyZVN0b3JhZ2UxMV8yRD4oc291cmNlU3RvcmFnZSk7Cisg
ICAgQVNTRVJUKHNvdXJjZVN0b3JhZ2UxMSk7CisKKyAgICBUZXh0dXJlU3RvcmFnZTExXzJEICpk
ZXN0U3RvcmFnZTExID0gR2V0QXM8VGV4dHVyZVN0b3JhZ2UxMV8yRD4oc3RvcmFnZSk7CisgICAg
QVNTRVJUKGRlc3RTdG9yYWdlMTEpOworCisgICAgLy8gQ2hlY2sgZm9yIGZhc3QgcGF0aCB3aGVy
ZSBhIENvcHlTdWJyZXNvdXJjZVJlZ2lvbiBjYW4gYmUgdXNlZC4KKyAgICBpZiAodW5wYWNrUHJl
bXVsdGlwbHlBbHBoYSA9PSB1bnBhY2tVbm11bHRpcGx5QWxwaGEgJiYgIXVucGFja0ZsaXBZICYm
CisgICAgICAgIHNvdXJjZVN0b3JhZ2UxMS0+Z2V0Rm9ybWF0U2V0KCkudGV4Rm9ybWF0ID09IGRl
c3RTdG9yYWdlMTEtPmdldEZvcm1hdFNldCgpLnRleEZvcm1hdCkKKyAgICB7CisgICAgICAgIElE
M0QxMVJlc291cmNlICpzb3VyY2VSZXNvdXJjZSA9IG51bGxwdHI7CisgICAgICAgIEFOR0xFX1RS
WShzb3VyY2VTdG9yYWdlMTEtPmdldFJlc291cmNlKCZzb3VyY2VSZXNvdXJjZSkpOworCisgICAg
ICAgIGdsOjpJbWFnZUluZGV4IHNvdXJjZUluZGV4ID0gZ2w6OkltYWdlSW5kZXg6Ok1ha2UyRChz
b3VyY2VMZXZlbCk7CisgICAgICAgIFVJTlQgc291cmNlU3VicmVzb3VyY2UgICAgID0gc291cmNl
U3RvcmFnZTExLT5nZXRTdWJyZXNvdXJjZUluZGV4KHNvdXJjZUluZGV4KTsKKworICAgICAgICBJ
RDNEMTFSZXNvdXJjZSAqZGVzdFJlc291cmNlID0gbnVsbHB0cjsKKyAgICAgICAgQU5HTEVfVFJZ
KGRlc3RTdG9yYWdlMTEtPmdldFJlc291cmNlKCZkZXN0UmVzb3VyY2UpKTsKKworICAgICAgICBn
bDo6SW1hZ2VJbmRleCBkZXN0SW5kZXggPSBnbDo6SW1hZ2VJbmRleDo6TWFrZTJEKGRlc3RMZXZl
bCk7CisgICAgICAgIFVJTlQgZGVzdFN1YnJlc291cmNlICAgICA9IGRlc3RTdG9yYWdlMTEtPmdl
dFN1YnJlc291cmNlSW5kZXgoZGVzdEluZGV4KTsKKworICAgICAgICBEM0QxMV9CT1ggc291cmNl
Qm94eworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8VUlOVD4oc291cmNlUmVjdC54KSwKKyAgICAg
ICAgICAgIHN0YXRpY19jYXN0PFVJTlQ+KHNvdXJjZVJlY3QueSksCisgICAgICAgICAgICAwdSwK
KyAgICAgICAgICAgIHN0YXRpY19jYXN0PFVJTlQ+KHNvdXJjZVJlY3QueCArIHNvdXJjZVJlY3Qu
d2lkdGgpLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8VUlOVD4oc291cmNlUmVjdC55ICsgc291
cmNlUmVjdC5oZWlnaHQpLAorICAgICAgICAgICAgMXUsCisgICAgICAgIH07CisKKyAgICAgICAg
bURldmljZUNvbnRleHQtPkNvcHlTdWJyZXNvdXJjZVJlZ2lvbihkZXN0UmVzb3VyY2UsIGRlc3RT
dWJyZXNvdXJjZSwgZGVzdE9mZnNldC54LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlc3RPZmZzZXQueSwgZGVzdE9mZnNldC56LCBzb3VyY2VSZXNvdXJj
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VT
dWJyZXNvdXJjZSwgJnNvdXJjZUJveCk7CiAgICAgfQotICAgIEFTU0VSVChkZXN0UmVuZGVyVGFy
Z2V0KTsKKyAgICBlbHNlCisgICAgeworICAgICAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcg
KnNvdXJjZVNSViA9IG51bGxwdHI7CisgICAgICAgIEFOR0xFX1RSWShzb3VyY2VTdG9yYWdlMTEt
PmdldFNSVkxldmVscyhzb3VyY2VMZXZlbCwgc291cmNlTGV2ZWwsICZzb3VyY2VTUlYpKTsKIAot
ICAgIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKmRlc3QgPSBHZXRBczxSZW5kZXJUYXJnZXQxMT4o
ZGVzdFJlbmRlclRhcmdldCktPmdldFJlbmRlclRhcmdldFZpZXcoKTsKLSAgICBBU1NFUlQoZGVz
dCk7CisgICAgICAgIGdsOjpJbWFnZUluZGV4IGRlc3RJbmRleCAgICAgICAgICAgICA9IGdsOjpJ
bWFnZUluZGV4OjpNYWtlMkQoZGVzdExldmVsKTsKKyAgICAgICAgUmVuZGVyVGFyZ2V0RDNEICpk
ZXN0UmVuZGVyVGFyZ2V0RDNEID0gbnVsbHB0cjsKKyAgICAgICAgQU5HTEVfVFJZKGRlc3RTdG9y
YWdlMTEtPmdldFJlbmRlclRhcmdldChkZXN0SW5kZXgsICZkZXN0UmVuZGVyVGFyZ2V0RDNEKSk7
CiAKLSAgICBnbDo6Qm94IHNvdXJjZUFyZWEoc291cmNlUmVjdC54LCBzb3VyY2VSZWN0LnksIDAs
IHNvdXJjZVJlY3Qud2lkdGgsIHNvdXJjZVJlY3QuaGVpZ2h0LCAxKTsKLSAgICBnbDo6RXh0ZW50
cyBzb3VyY2VTaXplKHNvdXJjZVJlbmRlclRhcmdldC0+Z2V0V2lkdGgoKSwgc291cmNlUmVuZGVy
VGFyZ2V0LT5nZXRIZWlnaHQoKSwgMSk7CisgICAgICAgIFJlbmRlclRhcmdldDExICpkZXN0UmVu
ZGVyVGFyZ2V0MTEgPSBHZXRBczxSZW5kZXJUYXJnZXQxMT4oZGVzdFJlbmRlclRhcmdldEQzRCk7
CiAKLSAgICBnbDo6Qm94IGRlc3RBcmVhKGRlc3RPZmZzZXQueCwgZGVzdE9mZnNldC55LCAwLCBz
b3VyY2VSZWN0LndpZHRoLCBzb3VyY2VSZWN0LmhlaWdodCwgMSk7Ci0gICAgZ2w6OkV4dGVudHMg
ZGVzdFNpemUoZGVzdFJlbmRlclRhcmdldC0+Z2V0V2lkdGgoKSwgZGVzdFJlbmRlclRhcmdldC0+
Z2V0SGVpZ2h0KCksIDEpOworICAgICAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpkZXN0UlRW
ID0gZGVzdFJlbmRlclRhcmdldDExLT5nZXRSZW5kZXJUYXJnZXRWaWV3KCk7CisgICAgICAgIEFT
U0VSVChkZXN0UlRWKTsKIAotICAgIC8vIFVzZSBuZWFyZXN0IGZpbHRlcmluZyBiZWNhdXNlIHNv
dXJjZSBhbmQgZGVzdGluYXRpb24gYXJlIHRoZSBzYW1lIHNpemUgZm9yIHRoZSBkaXJlY3QKLSAg
ICAvLyBjb3B5Ci0gICAgZXJyb3IgPSBtQmxpdC0+Y29weVRleHR1cmUoc291cmNlLCBzb3VyY2VB
cmVhLCBzb3VyY2VTaXplLCBkZXN0LCBkZXN0QXJlYSwgZGVzdFNpemUsIE5VTEwsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGVzdEZvcm1hdCwgR0xfTkVBUkVTVCwgZmFsc2UpOwot
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Cisg
ICAgICAgIGdsOjpCb3ggc291cmNlQXJlYShzb3VyY2VSZWN0LngsIHNvdXJjZVJlY3QueSwgMCwg
c291cmNlUmVjdC53aWR0aCwgc291cmNlUmVjdC5oZWlnaHQsIDEpOworICAgICAgICBnbDo6RXh0
ZW50cyBzb3VyY2VTaXplKAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pihzb3VyY2UtPmdl
dFdpZHRoKHNvdXJjZS0+Z2V0VGFyZ2V0KCksIHNvdXJjZUxldmVsKSksCisgICAgICAgICAgICBz
dGF0aWNfY2FzdDxpbnQ+KHNvdXJjZS0+Z2V0SGVpZ2h0KHNvdXJjZS0+Z2V0VGFyZ2V0KCksIHNv
dXJjZUxldmVsKSksIDEpOworICAgICAgICBpZiAodW5wYWNrRmxpcFkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHNvdXJjZUFyZWEueSAgICAgID0gc291cmNlU2l6ZS5oZWlnaHQgLSBzb3VyY2VS
ZWN0Lnk7CisgICAgICAgICAgICBzb3VyY2VBcmVhLmhlaWdodCA9IC1zb3VyY2VBcmVhLmhlaWdo
dDsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpCb3ggZGVzdEFyZWEoZGVzdE9mZnNldC54LCBk
ZXN0T2Zmc2V0LnksIDAsIHNvdXJjZVJlY3Qud2lkdGgsIHNvdXJjZVJlY3QuaGVpZ2h0LCAxKTsK
KyAgICAgICAgZ2w6OkV4dGVudHMgZGVzdFNpemUoZGVzdFJlbmRlclRhcmdldDExLT5nZXRXaWR0
aCgpLCBkZXN0UmVuZGVyVGFyZ2V0MTEtPmdldEhlaWdodCgpLCAxKTsKKworICAgICAgICAvLyBV
c2UgbmVhcmVzdCBmaWx0ZXJpbmcgYmVjYXVzZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFyZSB0
aGUgc2FtZSBzaXplIGZvciB0aGUgZGlyZWN0CisgICAgICAgIC8vIGNvcHkKKyAgICAgICAgQU5H
TEVfVFJZKG1CbGl0LT5jb3B5VGV4dHVyZShzb3VyY2VTUlYsIHNvdXJjZUFyZWEsIHNvdXJjZVNp
emUsIGRlc3RSVFYsIGRlc3RBcmVhLCBkZXN0U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyLCBkZXN0Rm9ybWF0LCBHTF9ORUFSRVNULCBmYWxzZSwgdW5w
YWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnBhY2tVbm11bHRpcGx5QWxwaGEpKTsKICAgICB9CiAKLSAgICBzdG9yYWdlMTEtPmludmFs
aWRhdGVTd2l6emxlQ2FjaGVMZXZlbChsZXZlbCk7CisgICAgZGVzdFN0b3JhZ2UxMS0+bWFya0xl
dmVsRGlydHkoZGVzdExldmVsKTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1Ip
OworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgUmVuZGVyZXIxMTo6
Y29weUltYWdlMkRBcnJheShjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBjb25z
dCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZz
ZXQsIFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLCBHTGludCBsZXZlbCkKK2dsOjpFcnJvciBSZW5k
ZXJlcjExOjpjb3B5Q29tcHJlc3NlZFRleHR1cmUoY29uc3QgZ2w6OlRleHR1cmUgKnNvdXJjZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc291cmNl
TGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1
cmVTdG9yYWdlICpzdG9yYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBkZXN0TGV2ZWwpCiB7Ci0gICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0
YWNobWVudCAqY29sb3JidWZmZXIgPSBmcmFtZWJ1ZmZlci0+Z2V0UmVhZENvbG9yYnVmZmVyKCk7
Ci0gICAgQVNTRVJUKGNvbG9yYnVmZmVyKTsKKyAgICBUZXh0dXJlU3RvcmFnZTExXzJEICpkZXN0
U3RvcmFnZTExID0gR2V0QXM8VGV4dHVyZVN0b3JhZ2UxMV8yRD4oc3RvcmFnZSk7CisgICAgQVNT
RVJUKGRlc3RTdG9yYWdlMTEpOwogCi0gICAgUmVuZGVyVGFyZ2V0MTEgKnNvdXJjZVJlbmRlclRh
cmdldCA9IE5VTEw7Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gY29sb3JidWZmZXItPmdldFJlbmRl
clRhcmdldCgmc291cmNlUmVuZGVyVGFyZ2V0KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KLSAgICBBU1NFUlQoc291cmNlUmVu
ZGVyVGFyZ2V0KTsKKyAgICBJRDNEMTFSZXNvdXJjZSAqZGVzdFJlc291cmNlID0gbnVsbHB0cjsK
KyAgICBBTkdMRV9UUlkoZGVzdFN0b3JhZ2UxMS0+Z2V0UmVzb3VyY2UoJmRlc3RSZXNvdXJjZSkp
OwogCi0gICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzb3VyY2UgPSBzb3VyY2VSZW5kZXJU
YXJnZXQtPmdldEJsaXRTaGFkZXJSZXNvdXJjZVZpZXcoKTsKLSAgICBBU1NFUlQoc291cmNlKTsK
KyAgICBnbDo6SW1hZ2VJbmRleCBkZXN0SW5kZXggPSBnbDo6SW1hZ2VJbmRleDo6TWFrZTJEKGRl
c3RMZXZlbCk7CisgICAgVUlOVCBkZXN0U3VicmVzb3VyY2UgICAgID0gZGVzdFN0b3JhZ2UxMS0+
Z2V0U3VicmVzb3VyY2VJbmRleChkZXN0SW5kZXgpOwogCi0gICAgVGV4dHVyZVN0b3JhZ2UxMV8y
REFycmF5ICpzdG9yYWdlMTEgPSBHZXRBczxUZXh0dXJlU3RvcmFnZTExXzJEQXJyYXk+KHN0b3Jh
Z2UpOwotICAgIEFTU0VSVChzdG9yYWdlMTEpOworICAgIFRleHR1cmVEM0QgKnNvdXJjZUQzRCA9
IEdldEltcGxBczxUZXh0dXJlRDNEPihzb3VyY2UpOworICAgIEFTU0VSVChzb3VyY2VEM0QpOwog
Ci0gICAgZ2w6OkltYWdlSW5kZXggaW5kZXggPSBnbDo6SW1hZ2VJbmRleDo6TWFrZTJEQXJyYXko
bGV2ZWwsIGRlc3RPZmZzZXQueik7Ci0gICAgUmVuZGVyVGFyZ2V0RDNEICpkZXN0UmVuZGVyVGFy
Z2V0ID0gTlVMTDsKLSAgICBlcnJvciA9IHN0b3JhZ2UxMS0+Z2V0UmVuZGVyVGFyZ2V0KGluZGV4
LCAmZGVzdFJlbmRlclRhcmdldCk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Ci0gICAgQVNTRVJUKGRlc3RSZW5kZXJUYXJnZXQp
OworICAgIFRleHR1cmVTdG9yYWdlICpzb3VyY2VTdG9yYWdlID0gbnVsbHB0cjsKKyAgICBBTkdM
RV9UUlkoc291cmNlRDNELT5nZXROYXRpdmVUZXh0dXJlKCZzb3VyY2VTdG9yYWdlKSk7CiAKLSAg
ICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpkZXN0ID0gR2V0QXM8UmVuZGVyVGFyZ2V0MTE+KGRl
c3RSZW5kZXJUYXJnZXQpLT5nZXRSZW5kZXJUYXJnZXRWaWV3KCk7Ci0gICAgQVNTRVJUKGRlc3Qp
OworICAgIFRleHR1cmVTdG9yYWdlMTFfMkQgKnNvdXJjZVN0b3JhZ2UxMSA9IEdldEFzPFRleHR1
cmVTdG9yYWdlMTFfMkQ+KHNvdXJjZVN0b3JhZ2UpOworICAgIEFTU0VSVChzb3VyY2VTdG9yYWdl
MTEpOwogCi0gICAgZ2w6OkJveCBzb3VyY2VBcmVhKHNvdXJjZVJlY3QueCwgc291cmNlUmVjdC55
LCAwLCBzb3VyY2VSZWN0LndpZHRoLCBzb3VyY2VSZWN0LmhlaWdodCwgMSk7Ci0gICAgZ2w6OkV4
dGVudHMgc291cmNlU2l6ZShzb3VyY2VSZW5kZXJUYXJnZXQtPmdldFdpZHRoKCksIHNvdXJjZVJl
bmRlclRhcmdldC0+Z2V0SGVpZ2h0KCksIDEpOworICAgIElEM0QxMVJlc291cmNlICpzb3VyY2VS
ZXNvdXJjZSA9IG51bGxwdHI7CisgICAgQU5HTEVfVFJZKHNvdXJjZVN0b3JhZ2UxMS0+Z2V0UmVz
b3VyY2UoJnNvdXJjZVJlc291cmNlKSk7CiAKLSAgICBnbDo6Qm94IGRlc3RBcmVhKGRlc3RPZmZz
ZXQueCwgZGVzdE9mZnNldC55LCAwLCBzb3VyY2VSZWN0LndpZHRoLCBzb3VyY2VSZWN0LmhlaWdo
dCwgMSk7Ci0gICAgZ2w6OkV4dGVudHMgZGVzdFNpemUoZGVzdFJlbmRlclRhcmdldC0+Z2V0V2lk
dGgoKSwgZGVzdFJlbmRlclRhcmdldC0+Z2V0SGVpZ2h0KCksIDEpOworICAgIGdsOjpJbWFnZUlu
ZGV4IHNvdXJjZUluZGV4ID0gZ2w6OkltYWdlSW5kZXg6Ok1ha2UyRChzb3VyY2VMZXZlbCk7Cisg
ICAgVUlOVCBzb3VyY2VTdWJyZXNvdXJjZSAgICAgPSBzb3VyY2VTdG9yYWdlMTEtPmdldFN1YnJl
c291cmNlSW5kZXgoc291cmNlSW5kZXgpOwogCi0gICAgLy8gVXNlIG5lYXJlc3QgZmlsdGVyaW5n
IGJlY2F1c2Ugc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhcmUgdGhlIHNhbWUgc2l6ZSBmb3IgdGhl
IGRpcmVjdAotICAgIC8vIGNvcHkKLSAgICBlcnJvciA9IG1CbGl0LT5jb3B5VGV4dHVyZShzb3Vy
Y2UsIHNvdXJjZUFyZWEsIHNvdXJjZVNpemUsIGRlc3QsIGRlc3RBcmVhLCBkZXN0U2l6ZSwgTlVM
TCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0Rm9ybWF0LCBHTF9ORUFSRVNU
LCBmYWxzZSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBlcnJvcjsKLSAgICB9Ci0KLSAgICBzdG9yYWdlMTEtPmludmFsaWRhdGVTd2l6emxlQ2FjaGVM
ZXZlbChsZXZlbCk7CisgICAgbURldmljZUNvbnRleHQtPkNvcHlTdWJyZXNvdXJjZVJlZ2lvbihk
ZXN0UmVzb3VyY2UsIGRlc3RTdWJyZXNvdXJjZSwgMCwgMCwgMCwgc291cmNlUmVzb3VyY2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VTdWJyZXNvdXJj
ZSwgbnVsbHB0cik7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICBy
ZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmNyZWF0ZVJl
bmRlclRhcmdldChpbnQgd2lkdGgsIGludCBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkg
c2FtcGxlcywgUmVuZGVyVGFyZ2V0RDNEICoqb3V0UlQpCiB7Ci0gICAgY29uc3QgZDNkMTE6OlRl
eHR1cmVGb3JtYXQgJmZvcm1hdEluZm8gPSBkM2QxMTo6R2V0VGV4dHVyZUZvcm1hdEluZm8oZm9y
bWF0LCBtUmVuZGVyZXIxMURldmljZUNhcHMpOworICAgIGNvbnN0IGQzZDExOjpGb3JtYXQgJmZv
cm1hdEluZm8gPSBkM2QxMTo6Rm9ybWF0OjpHZXQoZm9ybWF0LCBtUmVuZGVyZXIxMURldmljZUNh
cHMpOwogCi0gICAgY29uc3QgZ2w6OlRleHR1cmVDYXBzICZ0ZXh0dXJlQ2FwcyA9IGdldFJlbmRl
cmVyVGV4dHVyZUNhcHMoKS5nZXQoZm9ybWF0KTsKKyAgICBjb25zdCBnbDo6VGV4dHVyZUNhcHMg
JnRleHR1cmVDYXBzID0gZ2V0TmF0aXZlVGV4dHVyZUNhcHMoKS5nZXQoZm9ybWF0KTsKICAgICBH
THVpbnQgc3VwcG9ydGVkU2FtcGxlcyA9IHRleHR1cmVDYXBzLmdldE5lYXJlc3RTYW1wbGVzKHNh
bXBsZXMpOwogCiAgICAgaWYgKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwKQpAQCAtMzEzMSw3ICsz
MDc5LDcgQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmNyZWF0ZVJlbmRlclRhcmdldAogICAgICAg
ICBkZXNjLkhlaWdodCA9IGhlaWdodDsKICAgICAgICAgZGVzYy5NaXBMZXZlbHMgPSAxOwogICAg
ICAgICBkZXNjLkFycmF5U2l6ZSA9IDE7Ci0gICAgICAgIGRlc2MuRm9ybWF0ICAgICAgICAgICAg
ID0gZm9ybWF0SW5mby5mb3JtYXRTZXQtPnRleEZvcm1hdDsKKyAgICAgICAgZGVzYy5Gb3JtYXQg
ICAgICAgICAgICAgPSBmb3JtYXRJbmZvLnRleEZvcm1hdDsKICAgICAgICAgZGVzYy5TYW1wbGVE
ZXNjLkNvdW50ID0gKHN1cHBvcnRlZFNhbXBsZXMgPT0gMCkgPyAxIDogc3VwcG9ydGVkU2FtcGxl
czsKICAgICAgICAgZGVzYy5TYW1wbGVEZXNjLlF1YWxpdHkgPSAwOwogICAgICAgICBkZXNjLlVz
YWdlID0gRDNEMTFfVVNBR0VfREVGQVVMVDsKQEAgLTMxNDIsMTYgKzMwOTAsOSBAQCBnbDo6RXJy
b3IgUmVuZGVyZXIxMTo6Y3JlYXRlUmVuZGVyVGFyZ2V0CiAgICAgICAgIC8vIHdlJ2xsIGZsYWcg
aXQgdG8gYWxsb3cgYmluZGluZyB0aGF0IHdheS4gU2hhZGVyIHJlc291cmNlIHZpZXdzIGFyZSBh
IGxpdHRsZQogICAgICAgICAvLyBtb3JlIGNvbXBsaWNhdGVkLgogICAgICAgICBib29sIGJpbmRS
VFYgPSBmYWxzZSwgYmluZERTViA9IGZhbHNlLCBiaW5kU1JWID0gZmFsc2U7Ci0gICAgICAgIGJp
bmRSVFYgPSAoZm9ybWF0SW5mby5mb3JtYXRTZXQtPnJ0dkZvcm1hdCAhPSBEWEdJX0ZPUk1BVF9V
TktOT1dOKTsKLSAgICAgICAgYmluZERTViA9IChmb3JtYXRJbmZvLmZvcm1hdFNldC0+ZHN2Rm9y
bWF0ICE9IERYR0lfRk9STUFUX1VOS05PV04pOwotICAgICAgICBpZiAoZm9ybWF0SW5mby5mb3Jt
YXRTZXQtPnNydkZvcm1hdCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dOKQotICAgICAgICB7Ci0gICAg
ICAgICAgICAvLyBNdWx0aXNhbXBsZSB0YXJnZXRzIGZsYWdnZWQgZm9yIGJpbmRpbmcgYXMgZGVw
dGggc3RlbmNpbCBjYW5ub3QgYWxzbyBiZQotICAgICAgICAgICAgLy8gZmxhZ2dlZCBmb3IgYmlu
ZGluZyBhcyBTUlYsIHNvIG1ha2UgY2VydGFpbiBub3QgdG8gYWRkIHRoZSBTUlYgZmxhZyBmb3IK
LSAgICAgICAgICAgIC8vIHRoZXNlIHRhcmdldHMuCi0gICAgICAgICAgICBiaW5kU1JWID0gIShm
b3JtYXRJbmZvLmZvcm1hdFNldC0+ZHN2Rm9ybWF0ICE9IERYR0lfRk9STUFUX1VOS05PV04gJiYK
LSAgICAgICAgICAgICAgICAgICAgICAgIGRlc2MuU2FtcGxlRGVzYy5Db3VudCA+IDEpOwotICAg
ICAgICB9CisgICAgICAgIGJpbmRSVFYgPSAoZm9ybWF0SW5mby5ydHZGb3JtYXQgIT0gRFhHSV9G
T1JNQVRfVU5LTk9XTik7CisgICAgICAgIGJpbmREU1YgPSAoZm9ybWF0SW5mby5kc3ZGb3JtYXQg
IT0gRFhHSV9GT1JNQVRfVU5LTk9XTik7CisgICAgICAgIGJpbmRTUlYgPSAoZm9ybWF0SW5mby5z
cnZGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTik7CiAKICAgICAgICAgZGVzYy5CaW5kRmxh
Z3MgPSAoYmluZFJUViA/IEQzRDExX0JJTkRfUkVOREVSX1RBUkdFVCAgIDogMCkgfAogICAgICAg
ICAgICAgICAgICAgICAgICAgIChiaW5kRFNWID8gRDNEMTFfQklORF9ERVBUSF9TVEVOQ0lMICAg
OiAwKSB8CkBAIC0zMTczLDcgKzMxMTQsNyBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Y3JlYXRl
UmVuZGVyVGFyZ2V0CiAgICAgICAgIGlmIChiaW5kU1JWKQogICAgICAgICB7CiAgICAgICAgICAg
ICBEM0QxMV9TSEFERVJfUkVTT1VSQ0VfVklFV19ERVNDIHNydkRlc2M7Ci0gICAgICAgICAgICBz
cnZEZXNjLkZvcm1hdCAgICAgICAgICAgICAgICAgICAgPSBmb3JtYXRJbmZvLmZvcm1hdFNldC0+
c3J2Rm9ybWF0OworICAgICAgICAgICAgc3J2RGVzYy5Gb3JtYXQgPSBmb3JtYXRJbmZvLnNydkZv
cm1hdDsKICAgICAgICAgICAgIHNydkRlc2MuVmlld0RpbWVuc2lvbiA9IChzdXBwb3J0ZWRTYW1w
bGVzID09IDApID8gRDNEMTFfU1JWX0RJTUVOU0lPTl9URVhUVVJFMkQgOiBEM0QxMV9TUlZfRElN
RU5TSU9OX1RFWFRVUkUyRE1TOwogICAgICAgICAgICAgc3J2RGVzYy5UZXh0dXJlMkQuTW9zdERl
dGFpbGVkTWlwID0gMDsKICAgICAgICAgICAgIHNydkRlc2MuVGV4dHVyZTJELk1pcExldmVscyA9
IDE7CkBAIC0zMTg2LDEwICszMTI3LDEwIEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpjcmVhdGVS
ZW5kZXJUYXJnZXQKICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9N
RU1PUlksICJGYWlsZWQgdG8gY3JlYXRlIHJlbmRlciB0YXJnZXQgc2hhZGVyIHJlc291cmNlIHZp
ZXcsIHJlc3VsdDogMHglWC4iLCByZXN1bHQpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICBpZiAoZm9ybWF0SW5mby5mb3JtYXRTZXQtPmJsaXRTUlZGb3JtYXQgIT0gZm9ybWF0SW5mby5m
b3JtYXRTZXQtPnNydkZvcm1hdCkKKyAgICAgICAgICAgIGlmIChmb3JtYXRJbmZvLmJsaXRTUlZG
b3JtYXQgIT0gZm9ybWF0SW5mby5zcnZGb3JtYXQpCiAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgRDNEMTFfU0hBREVSX1JFU09VUkNFX1ZJRVdfREVTQyBibGl0U1JWRGVzYzsKLSAgICAg
ICAgICAgICAgICBibGl0U1JWRGVzYy5Gb3JtYXQgICAgICAgID0gZm9ybWF0SW5mby5mb3JtYXRT
ZXQtPmJsaXRTUlZGb3JtYXQ7CisgICAgICAgICAgICAgICAgYmxpdFNSVkRlc2MuRm9ybWF0ICAg
ICAgICA9IGZvcm1hdEluZm8uYmxpdFNSVkZvcm1hdDsKICAgICAgICAgICAgICAgICBibGl0U1JW
RGVzYy5WaWV3RGltZW5zaW9uID0gKHN1cHBvcnRlZFNhbXBsZXMgPT0gMCkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gRDNEMTFfU1JWX0RJTUVOU0lP
Tl9URVhUVVJFMkQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDogRDNEMTFfU1JWX0RJTUVOU0lPTl9URVhUVVJFMkRNUzsKQEAgLTMyMTgsNyArMzE1OSw3
IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpjcmVhdGVSZW5kZXJUYXJnZXQKICAgICAgICAgaWYg
KGJpbmREU1YpCiAgICAgICAgIHsKICAgICAgICAgICAgIEQzRDExX0RFUFRIX1NURU5DSUxfVklF
V19ERVNDIGRzdkRlc2M7Ci0gICAgICAgICAgICBkc3ZEZXNjLkZvcm1hdCAgICAgICAgICAgICA9
IGZvcm1hdEluZm8uZm9ybWF0U2V0LT5kc3ZGb3JtYXQ7CisgICAgICAgICAgICBkc3ZEZXNjLkZv
cm1hdCA9IGZvcm1hdEluZm8uZHN2Rm9ybWF0OwogICAgICAgICAgICAgZHN2RGVzYy5WaWV3RGlt
ZW5zaW9uID0gKHN1cHBvcnRlZFNhbXBsZXMgPT0gMCkgPyBEM0QxMV9EU1ZfRElNRU5TSU9OX1RF
WFRVUkUyRCA6IEQzRDExX0RTVl9ESU1FTlNJT05fVEVYVFVSRTJETVM7CiAgICAgICAgICAgICBk
c3ZEZXNjLlRleHR1cmUyRC5NaXBTbGljZSA9IDA7CiAgICAgICAgICAgICBkc3ZEZXNjLkZsYWdz
ID0gMDsKQEAgLTMyMzQsMTYgKzMxNzUsMTUgQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmNyZWF0
ZVJlbmRlclRhcmdldAogICAgICAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09G
X01FTU9SWSwgIkZhaWxlZCB0byBjcmVhdGUgcmVuZGVyIHRhcmdldCBkZXB0aCBzdGVuY2lsIHZp
ZXcsIHJlc3VsdDogMHglWC4iLCByZXN1bHQpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICAqb3V0UlQgPQotICAgICAgICAgICAgICAgIG5ldyBUZXh0dXJlUmVuZGVyVGFyZ2V0MTEoZHN2
LCB0ZXh0dXJlLCBzcnYsIGZvcm1hdCwgZm9ybWF0SW5mby5mb3JtYXRTZXQtPmZvcm1hdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQsIDEs
IHN1cHBvcnRlZFNhbXBsZXMpOworICAgICAgICAgICAgKm91dFJUID0gbmV3IFRleHR1cmVSZW5k
ZXJUYXJnZXQxMShkc3YsIHRleHR1cmUsIHNydiwgZm9ybWF0LCBmb3JtYXRJbmZvLCB3aWR0aCwg
aGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
LCBzdXBwb3J0ZWRTYW1wbGVzKTsKIAogICAgICAgICAgICAgU2FmZVJlbGVhc2UoZHN2KTsKICAg
ICAgICAgfQogICAgICAgICBlbHNlIGlmIChiaW5kUlRWKQogICAgICAgICB7CiAgICAgICAgICAg
ICBEM0QxMV9SRU5ERVJfVEFSR0VUX1ZJRVdfREVTQyBydHZEZXNjOwotICAgICAgICAgICAgcnR2
RGVzYy5Gb3JtYXQgICAgICAgICAgICAgPSBmb3JtYXRJbmZvLmZvcm1hdFNldC0+cnR2Rm9ybWF0
OworICAgICAgICAgICAgcnR2RGVzYy5Gb3JtYXQgPSBmb3JtYXRJbmZvLnJ0dkZvcm1hdDsKICAg
ICAgICAgICAgIHJ0dkRlc2MuVmlld0RpbWVuc2lvbiA9IChzdXBwb3J0ZWRTYW1wbGVzID09IDAp
ID8gRDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJFMkQgOiBEM0QxMV9SVFZfRElNRU5TSU9OX1RF
WFRVUkUyRE1TOwogICAgICAgICAgICAgcnR2RGVzYy5UZXh0dXJlMkQuTWlwU2xpY2UgPSAwOwog
CkBAIC0zMjY0LDkgKzMyMDQsOCBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Y3JlYXRlUmVuZGVy
VGFyZ2V0CiAgICAgICAgICAgICAgICAgbURldmljZUNvbnRleHQtPkNsZWFyUmVuZGVyVGFyZ2V0
VmlldyhydHYsIGNsZWFyVmFsdWVzKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgKm91
dFJUID0gbmV3IFRleHR1cmVSZW5kZXJUYXJnZXQxMShydHYsIHRleHR1cmUsIHNydiwgYmxpdFNS
ViwgZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmb3JtYXRJbmZvLmZvcm1hdFNldC0+Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAxLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRTYW1wbGVz
KTsKKyAgICAgICAgICAgICpvdXRSVCA9IG5ldyBUZXh0dXJlUmVuZGVyVGFyZ2V0MTEocnR2LCB0
ZXh0dXJlLCBzcnYsIGJsaXRTUlYsIGZvcm1hdCwgZm9ybWF0SW5mbywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwgMSwgc3VwcG9y
dGVkU2FtcGxlcyk7CiAKICAgICAgICAgICAgIFNhZmVSZWxlYXNlKHJ0dik7CiAgICAgICAgIH0K
QEAgLTMyODEsOSArMzIyMCw5IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpjcmVhdGVSZW5kZXJU
YXJnZXQKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgKm91dFJUID0gbmV3IFRleHR1
cmVSZW5kZXJUYXJnZXQxMShzdGF0aWNfY2FzdDxJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICo+KG51
bGxwdHIpLCBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIsIG51bGxwdHIsIGZvcm1hdCwgZDNkMTE6OkFOR0xFX0ZPUk1BVF9OT05FLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQs
IDEsIHN1cHBvcnRlZFNhbXBsZXMpOworICAgICAgICAqb3V0UlQgPSBuZXcgVGV4dHVyZVJlbmRl
clRhcmdldDExKAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SUQzRDExUmVuZGVyVGFyZ2V0Vmll
dyAqPihudWxscHRyKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgZm9ybWF0LAorICAgICAg
ICAgICAgZDNkMTE6OkZvcm1hdDo6R2V0KEdMX05PTkUsIG1SZW5kZXJlcjExRGV2aWNlQ2Fwcyks
IHdpZHRoLCBoZWlnaHQsIDEsIHN1cHBvcnRlZFNhbXBsZXMpOwogICAgIH0KIAogICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwpAQCAtMzI5NCwxMiArMzIzMyw4IEBAIGdsOjpFcnJv
ciBSZW5kZXJlcjExOjpjcmVhdGVSZW5kZXJUYXJnZXQKICAgICBBU1NFUlQoc291cmNlICE9IG51
bGxwdHIpOwogCiAgICAgUmVuZGVyVGFyZ2V0RDNEICpuZXdSVCA9IG51bGxwdHI7Ci0gICAgZ2w6
OkVycm9yIGVycm9yID0gY3JlYXRlUmVuZGVyVGFyZ2V0KHNvdXJjZS0+Z2V0V2lkdGgoKSwgc291
cmNlLT5nZXRIZWlnaHQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc291cmNlLT5nZXRJbnRlcm5hbEZvcm1hdCgpLCBzb3VyY2UtPmdldFNhbXBsZXMoKSwgJm5l
d1JUKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVy
cm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkoY3JlYXRlUmVuZGVyVGFyZ2V0KHNvdXJjZS0+Z2V0
V2lkdGgoKSwgc291cmNlLT5nZXRIZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNvdXJjZS0+Z2V0SW50ZXJuYWxGb3JtYXQoKSwgc291cmNlLT5nZXRTYW1wbGVzKCks
ICZuZXdSVCkpOwogCiAgICAgUmVuZGVyVGFyZ2V0MTEgKnNvdXJjZTExID0gR2V0QXM8UmVuZGVy
VGFyZ2V0MTE+KHNvdXJjZSk7CiAgICAgUmVuZGVyVGFyZ2V0MTEgKmRlc3QxMSAgID0gR2V0QXM8
UmVuZGVyVGFyZ2V0MTE+KG5ld1JUKTsKQEAgLTMzMTEsMjEgKzMyNDYsNiBAQCBnbDo6RXJyb3Ig
UmVuZGVyZXIxMTo6Y3JlYXRlUmVuZGVyVGFyZ2V0CiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9O
T19FUlJPUik7CiB9CiAKLUZyYW1lYnVmZmVySW1wbCAqUmVuZGVyZXIxMTo6Y3JlYXRlRnJhbWVi
dWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEYXRhICZkYXRhKQotewotICAgIHJldHVybiBu
ZXcgRnJhbWVidWZmZXIxMShkYXRhLCB0aGlzKTsKLX0KLQotU2hhZGVySW1wbCAqUmVuZGVyZXIx
MTo6Y3JlYXRlU2hhZGVyKGNvbnN0IGdsOjpTaGFkZXI6OkRhdGEgJmRhdGEpCi17Ci0gICAgcmV0
dXJuIG5ldyBTaGFkZXJEM0QoZGF0YSk7Ci19Ci0KLVByb2dyYW1JbXBsICpSZW5kZXJlcjExOjpj
cmVhdGVQcm9ncmFtKGNvbnN0IGdsOjpQcm9ncmFtOjpEYXRhICZkYXRhKQotewotICAgIHJldHVy
biBuZXcgUHJvZ3JhbUQzRChkYXRhLCB0aGlzKTsKLX0KLQogZ2w6OkVycm9yIFJlbmRlcmVyMTE6
OmxvYWRFeGVjdXRhYmxlKGNvbnN0IHZvaWQgKmZ1bmN0aW9uLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2hhZGVyVHlwZSB0eXBlLApAQCAtMzQ3NiwxMSArMzM5Niw4IEBAIGds
OjpFcnJvciBSZW5kZXJlcjExOjpjb21waWxlVG9FeGVjdXRhYmwKIAogICAgIElEM0RCbG9iICpi
aW5hcnkgPSBOVUxMOwogICAgIHN0ZDo6c3RyaW5nIGRlYnVnSW5mbzsKLSAgICBnbDo6RXJyb3Ig
ZXJyb3IgPSBtQ29tcGlsZXIuY29tcGlsZVRvQmluYXJ5KGluZm9Mb2csIHNoYWRlckhMU0wsIHBy
b2ZpbGUsIGNvbmZpZ3MsIGxvb3BNYWNyb3MsICZiaW5hcnksICZkZWJ1Z0luZm8pOwotICAgIGlm
IChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQor
ICAgIEFOR0xFX1RSWShtQ29tcGlsZXIuY29tcGlsZVRvQmluYXJ5KGluZm9Mb2csIHNoYWRlckhM
U0wsIHByb2ZpbGUsIGNvbmZpZ3MsIGxvb3BNYWNyb3MsICZiaW5hcnksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRlYnVnSW5mbykpOwogCiAgICAgLy8gSXQncyBw
b3NzaWJsZSB0aGF0IGJpbmFyeSBpcyBOVUxMIGlmIHRoZSBjb21waWxlciBmYWlsZWQgaW4gYWxs
IGNvbmZpZ3VyYXRpb25zLiAgU2V0IHRoZSBleGVjdXRhYmxlIHRvIE5VTEwKICAgICAvLyBhbmQg
cmV0dXJuIEdMX05PX0VSUk9SIHRvIHNpZ25pZnkgdGhhdCB0aGVyZSB3YXMgYSBsaW5rIGVycm9y
IGJ1dCB0aGUgaW50ZXJuYWwgc3RhdGUgaXMgc3RpbGwgT0suCkBAIC0zNDkwLDggKzM0MDcsOCBA
QCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Y29tcGlsZVRvRXhlY3V0YWJsCiAgICAgICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogICAgIH0KIAotICAgIGVycm9yID0gbG9hZEV4ZWN1
dGFibGUoYmluYXJ5LT5HZXRCdWZmZXJQb2ludGVyKCksIGJpbmFyeS0+R2V0QnVmZmVyU2l6ZSgp
LCB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtT3V0VmFyeWluZ3MsIHNl
cGFyYXRlZE91dHB1dEJ1ZmZlcnMsIG91dEV4ZWN0dWFibGUpOworICAgIGdsOjpFcnJvciBlcnJv
ciA9IGxvYWRFeGVjdXRhYmxlKGJpbmFyeS0+R2V0QnVmZmVyUG9pbnRlcigpLCBiaW5hcnktPkdl
dEJ1ZmZlclNpemUoKSwgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHJlYW1PdXRWYXJ5aW5ncywgc2VwYXJhdGVkT3V0cHV0QnVmZmVycywgb3V0RXhlY3R1YWJs
ZSk7CiAKICAgICBTYWZlUmVsZWFzZShiaW5hcnkpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
CkBAIC0zNTA0LDcgKzM0MjEsNyBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Y29tcGlsZVRvRXhl
Y3V0YWJsCiAgICAgICAgICgqb3V0RXhlY3R1YWJsZSktPmFwcGVuZERlYnVnSW5mbyhkZWJ1Z0lu
Zm8pOwogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJl
dHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBVbmlmb3JtU3RvcmFnZUQzRCAqUmVuZGVyZXIxMTo6
Y3JlYXRlVW5pZm9ybVN0b3JhZ2Uoc2l6ZV90IHN0b3JhZ2VTaXplKQpAQCAtMzUyMiw0OSArMzQz
OSwyMCBAQCBJbmRleEJ1ZmZlciAqUmVuZGVyZXIxMTo6Y3JlYXRlSW5kZXhCdWZmCiAgICAgcmV0
dXJuIG5ldyBJbmRleEJ1ZmZlcjExKHRoaXMpOwogfQogCi1CdWZmZXJJbXBsICpSZW5kZXJlcjEx
OjpjcmVhdGVCdWZmZXIoKQotewotICAgIEJ1ZmZlcjExICpidWZmZXIgPSBuZXcgQnVmZmVyMTEo
dGhpcyk7Ci0gICAgbUFsaXZlQnVmZmVycy5pbnNlcnQoYnVmZmVyKTsKLSAgICByZXR1cm4gYnVm
ZmVyOwotfQotCi1WZXJ0ZXhBcnJheUltcGwgKlJlbmRlcmVyMTE6OmNyZWF0ZVZlcnRleEFycmF5
KGNvbnN0IGdsOjpWZXJ0ZXhBcnJheTo6RGF0YSAmZGF0YSkKLXsKLSAgICByZXR1cm4gbmV3IFZl
cnRleEFycmF5MTEoZGF0YSk7Ci19Ci0KLVF1ZXJ5SW1wbCAqUmVuZGVyZXIxMTo6Y3JlYXRlUXVl
cnkoR0xlbnVtIHR5cGUpCi17Ci0gICAgcmV0dXJuIG5ldyBRdWVyeTExKHRoaXMsIHR5cGUpOwot
fQotCi1GZW5jZU5WSW1wbCAqUmVuZGVyZXIxMTo6Y3JlYXRlRmVuY2VOVigpCi17Ci0gICAgcmV0
dXJuIG5ldyBGZW5jZU5WMTEodGhpcyk7Ci19Ci0KLUZlbmNlU3luY0ltcGwgKlJlbmRlcmVyMTE6
OmNyZWF0ZUZlbmNlU3luYygpCitTdHJlYW1Qcm9kdWNlckltcGwgKlJlbmRlcmVyMTE6OmNyZWF0
ZVN0cmVhbVByb2R1Y2VyRDNEVGV4dHVyZU5WMTIoCisgICAgZWdsOjpTdHJlYW06OkNvbnN1bWVy
VHlwZSBjb25zdW1lclR5cGUsCisgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMp
CiB7Ci0gICAgcmV0dXJuIG5ldyBGZW5jZVN5bmMxMSh0aGlzKTsKLX0KLQotVHJhbnNmb3JtRmVl
ZGJhY2tJbXBsKiBSZW5kZXJlcjExOjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpCi17Ci0gICAg
cmV0dXJuIG5ldyBUcmFuc2Zvcm1GZWVkYmFja0QzRCgpOwotfQotCi1TdHJlYW1JbXBsICpSZW5k
ZXJlcjExOjpjcmVhdGVTdHJlYW0oY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCi17
Ci0gICAgcmV0dXJuIG5ldyBTdHJlYW0xMSh0aGlzKTsKKyAgICByZXR1cm4gbmV3IFN0cmVhbVBy
b2R1Y2VyTlYxMih0aGlzKTsKIH0KIAogYm9vbCBSZW5kZXJlcjExOjpzdXBwb3J0c0Zhc3RDb3B5
QnVmZmVyVG9UZXh0dXJlKEdMZW51bSBpbnRlcm5hbEZvcm1hdCkgY29uc3QKIHsKLSAgICBBU1NF
UlQoZ2V0UmVuZGVyZXJFeHRlbnNpb25zKCkucGl4ZWxCdWZmZXJPYmplY3QpOworICAgIEFTU0VS
VChnZXROYXRpdmVFeHRlbnNpb25zKCkucGl4ZWxCdWZmZXJPYmplY3QpOwogCiAgICAgY29uc3Qg
Z2w6OkludGVybmFsRm9ybWF0ICZpbnRlcm5hbEZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxG
b3JtYXRJbmZvKGludGVybmFsRm9ybWF0KTsKLSAgICBjb25zdCBkM2QxMTo6VGV4dHVyZUZvcm1h
dCAmZDNkMTFGb3JtYXRJbmZvID0gZDNkMTE6OkdldFRleHR1cmVGb3JtYXRJbmZvKGludGVybmFs
Rm9ybWF0LCBtUmVuZGVyZXIxMURldmljZUNhcHMpOworICAgIGNvbnN0IGQzZDExOjpGb3JtYXQg
JmQzZDExRm9ybWF0SW5mbyA9CisgICAgICAgIGQzZDExOjpGb3JtYXQ6OkdldChpbnRlcm5hbEZv
cm1hdCwgbVJlbmRlcmVyMTFEZXZpY2VDYXBzKTsKIAogICAgIC8vIHNSR0IgZm9ybWF0cyBkbyBu
b3Qgd29yayB3aXRoIEQzRDExIGJ1ZmZlciBTUlZzCiAgICAgaWYgKGludGVybmFsRm9ybWF0SW5m
by5jb2xvckVuY29kaW5nID09IEdMX1NSR0IpCkBAIC0zNTczLDcgKzM0NjEsNyBAQCBib29sIFJl
bmRlcmVyMTE6OnN1cHBvcnRzRmFzdENvcHlCdWZmZXJUCiAgICAgfQogCiAgICAgLy8gV2UgY2Fu
bm90IHN1cHBvcnQgZGlyZWN0IGNvcGllcyB0byBub24tY29sb3ItcmVuZGVyYWJsZSBmb3JtYXRz
Ci0gICAgaWYgKGQzZDExRm9ybWF0SW5mby5mb3JtYXRTZXQtPnJ0dkZvcm1hdCA9PSBEWEdJX0ZP
Uk1BVF9VTktOT1dOKQorICAgIGlmIChkM2QxMUZvcm1hdEluZm8ucnR2Rm9ybWF0ID09IERYR0lf
Rk9STUFUX1VOS05PV04pCiAgICAgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAt
MzU4NSw3ICszNDczLDE5IEBAIGJvb2wgUmVuZGVyZXIxMTo6c3VwcG9ydHNGYXN0Q29weUJ1ZmZl
clQKICAgICB9CiAKICAgICAvLyBXZSBkb24ndCBzdXBwb3J0IGZvcm1hdHMgd2hpY2ggd2UgY2Fu
J3QgcmVwcmVzZW50IHdpdGhvdXQgY29udmVyc2lvbgotICAgIGlmIChkM2QxMUZvcm1hdEluZm8u
Zm9ybWF0U2V0LT5nbEludGVybmFsRm9ybWF0ICE9IGludGVybmFsRm9ybWF0KQorICAgIGlmIChk
M2QxMUZvcm1hdEluZm8uZm9ybWF0LmdsSW50ZXJuYWxGb3JtYXQgIT0gaW50ZXJuYWxGb3JtYXQp
CisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gQnVmZmVyIFNS
ViBjcmVhdGlvbiBmb3IgdGhpcyBmb3JtYXQgd2FzIG5vdCB3b3JraW5nIG9uIFdpbmRvd3MgMTAu
CisgICAgaWYgKGQzZDExRm9ybWF0SW5mby50ZXhGb3JtYXQgPT0gRFhHSV9GT1JNQVRfQjVHNVI1
QTFfVU5PUk0pCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8g
VGhpcyBmb3JtYXQgaXMgbm90IHN1cHBvcnRlZCBhcyBhIGJ1ZmZlciBTUlYuCisgICAgaWYgKGQz
ZDExRm9ybWF0SW5mby50ZXhGb3JtYXQgPT0gRFhHSV9GT1JNQVRfQThfVU5PUk0pCiAgICAgewog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMzYxMiw4ICszNTEyLDggQEAgZ2w6OkVy
cm9yIFJlbmRlcmVyMTE6OmdlbmVyYXRlTWlwbWFwKEltYQogICAgIHJldHVybiBJbWFnZTExOjpn
ZW5lcmF0ZU1pcG1hcChkZXN0MTEsIHNyYzExLCBtUmVuZGVyZXIxMURldmljZUNhcHMpOwogfQog
Ci1nbDo6RXJyb3IgUmVuZGVyZXIxMTo6Z2VuZXJhdGVNaXBtYXBzVXNpbmdEM0QoVGV4dHVyZVN0
b3JhZ2UgKnN0b3JhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmdGV4dHVyZVN0YXRlKQorZ2w6OkVycm9yIFJl
bmRlcmVyMTE6OmdlbmVyYXRlTWlwbWFwVXNpbmdEM0QoVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
VGV4dHVyZVN0YXRlICZ0ZXh0dXJlU3RhdGUpCiB7CiAgICAgVGV4dHVyZVN0b3JhZ2UxMSAqc3Rv
cmFnZTExID0gR2V0QXM8VGV4dHVyZVN0b3JhZ2UxMT4oc3RvcmFnZSk7CiAKQEAgLTM2MjEsMTUg
KzM1MjEsMTIgQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmdlbmVyYXRlTWlwbWFwc1VzaQogICAg
IEFTU0VSVChzdG9yYWdlMTEtPnN1cHBvcnRzTmF0aXZlTWlwbWFwRnVuY3Rpb24oKSk7CiAKICAg
ICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNydjsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBz
dG9yYWdlMTEtPmdldFNSVkxldmVscyh0ZXh0dXJlU3RhdGUuYmFzZUxldmVsLCB0ZXh0dXJlU3Rh
dGUubWF4TGV2ZWwsICZzcnYpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAg
ICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShzdG9yYWdlMTEtPmdldFNS
VkxldmVscyh0ZXh0dXJlU3RhdGUuZ2V0RWZmZWN0aXZlQmFzZUxldmVsKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmVTdGF0ZS5nZXRFZmZlY3RpdmVNYXhM
ZXZlbCgpLCAmc3J2KSk7CiAKICAgICBtRGV2aWNlQ29udGV4dC0+R2VuZXJhdGVNaXBzKHNydik7
CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKIH0KIAogVGV4dHVyZVN0b3JhZ2UgKlJlbmRlcmVyMTE6OmNyZWF0ZVRleHR1cmVT
dG9yYWdlMkQoU3dhcENoYWluRDNEICpzd2FwQ2hhaW4pCkBAIC0zNjM4LDkgKzM1MzUsMTcgQEAg
VGV4dHVyZVN0b3JhZ2UgKlJlbmRlcmVyMTE6OmNyZWF0ZVRleHR1cgogICAgIHJldHVybiBuZXcg
VGV4dHVyZVN0b3JhZ2UxMV8yRCh0aGlzLCBzd2FwQ2hhaW4xMSk7CiB9CiAKLVRleHR1cmVTdG9y
YWdlICpSZW5kZXJlcjExOjpjcmVhdGVUZXh0dXJlU3RvcmFnZUVHTEltYWdlKEVHTEltYWdlRDNE
ICplZ2xJbWFnZSkKK1RleHR1cmVTdG9yYWdlICpSZW5kZXJlcjExOjpjcmVhdGVUZXh0dXJlU3Rv
cmFnZUVHTEltYWdlKEVHTEltYWdlRDNEICplZ2xJbWFnZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlclRhcmdldEQzRCAqcmVu
ZGVyVGFyZ2V0RDNEKQoreworICAgIHJldHVybiBuZXcgVGV4dHVyZVN0b3JhZ2UxMV9FR0xJbWFn
ZSh0aGlzLCBlZ2xJbWFnZSwgR2V0QXM8UmVuZGVyVGFyZ2V0MTE+KHJlbmRlclRhcmdldEQzRCkp
OworfQorCitUZXh0dXJlU3RvcmFnZSAqUmVuZGVyZXIxMTo6Y3JlYXRlVGV4dHVyZVN0b3JhZ2VF
eHRlcm5hbCgKKyAgICBlZ2w6OlN0cmVhbSAqc3RyZWFtLAorICAgIGNvbnN0IGVnbDo6U3RyZWFt
OjpHTFRleHR1cmVEZXNjcmlwdGlvbiAmZGVzYykKIHsKLSAgICByZXR1cm4gbmV3IFRleHR1cmVT
dG9yYWdlMTFfRUdMSW1hZ2UodGhpcywgZWdsSW1hZ2UpOworICAgIHJldHVybiBuZXcgVGV4dHVy
ZVN0b3JhZ2UxMV9FeHRlcm5hbCh0aGlzLCBzdHJlYW0sIGRlc2MpOwogfQogCiBUZXh0dXJlU3Rv
cmFnZSAqUmVuZGVyZXIxMTo6Y3JlYXRlVGV4dHVyZVN0b3JhZ2UyRChHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIGJvb2wgcmVuZGVyVGFyZ2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwg
aW50IGxldmVscywgYm9vbCBoaW50TGV2ZWxaZXJvT25seSkKQEAgLTM2NjMsMjcgKzM1NjgsNiBA
QCBUZXh0dXJlU3RvcmFnZSAqUmVuZGVyZXIxMTo6Y3JlYXRlVGV4dHVyCiAgICAgcmV0dXJuIG5l
dyBUZXh0dXJlU3RvcmFnZTExXzJEQXJyYXkodGhpcywgaW50ZXJuYWxmb3JtYXQsIHJlbmRlclRh
cmdldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGxldmVscyk7CiB9CiAKLVRleHR1cmVJbXBsICpS
ZW5kZXJlcjExOjpjcmVhdGVUZXh0dXJlKEdMZW51bSB0YXJnZXQpCi17Ci0gICAgc3dpdGNoKHRh
cmdldCkKLSAgICB7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfMkQ6IHJldHVybiBuZXcgVGV4dHVy
ZUQzRF8yRCh0aGlzKTsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUDogcmV0dXJuIG5l
dyBUZXh0dXJlRDNEX0N1YmUodGhpcyk7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfM0Q6IHJldHVy
biBuZXcgVGV4dHVyZUQzRF8zRCh0aGlzKTsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRF9BUlJB
WTogcmV0dXJuIG5ldyBUZXh0dXJlRDNEXzJEQXJyYXkodGhpcyk7Ci0gICAgICBkZWZhdWx0Ogot
ICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgIH0KLQotICAgIHJldHVybiBOVUxMOwotfQotCi1S
ZW5kZXJidWZmZXJJbXBsICpSZW5kZXJlcjExOjpjcmVhdGVSZW5kZXJidWZmZXIoKQotewotICAg
IFJlbmRlcmJ1ZmZlckQzRCAqcmVuZGVyYnVmZmVyID0gbmV3IFJlbmRlcmJ1ZmZlckQzRCh0aGlz
KTsKLSAgICByZXR1cm4gcmVuZGVyYnVmZmVyOwotfQotCiBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6
cmVhZEZyb21BdHRhY2htZW50KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgJnNyY0F0
dGFjaG1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCkBAIC0zNjk4LDE3ICszNTgyLDEzIEBAIGdsOjpF
cnJvciBSZW5kZXJlcjExOjpyZWFkRnJvbUF0dGFjaG1lbnQKICAgICBjb25zdCBib29sIGludmVy
dFRleHR1cmUgPSBVc2VQcmVzZW50UGF0aEZhc3QodGhpcywgJnNyY0F0dGFjaG1lbnQpOwogCiAg
ICAgUmVuZGVyVGFyZ2V0RDNEICpyZW5kZXJUYXJnZXQgPSBudWxscHRyOwotICAgIGdsOjpFcnJv
ciBlcnJvciA9IHNyY0F0dGFjaG1lbnQuZ2V0UmVuZGVyVGFyZ2V0KCZyZW5kZXJUYXJnZXQpOwot
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0g
ICAgfQorICAgIEFOR0xFX1RSWShzcmNBdHRhY2htZW50LmdldFJlbmRlclRhcmdldCgmcmVuZGVy
VGFyZ2V0KSk7CiAKICAgICBSZW5kZXJUYXJnZXQxMSAqcnQxMSA9IEdldEFzPFJlbmRlclRhcmdl
dDExPihyZW5kZXJUYXJnZXQpOwogICAgIEFTU0VSVChydDExLT5nZXRUZXh0dXJlKCkpOwogCiAg
ICAgVGV4dHVyZUhlbHBlcjExIHRleHR1cmVIZWxwZXIgPQotICAgICAgICBUZXh0dXJlSGVscGVy
MTE6Ok1ha2VBbmRSZWZlcmVuY2UocnQxMS0+Z2V0VGV4dHVyZSgpLCBydDExLT5nZXRBTkdMRUZv
cm1hdCgpKTsKKyAgICAgICAgVGV4dHVyZUhlbHBlcjExOjpNYWtlQW5kUmVmZXJlbmNlKHJ0MTEt
PmdldFRleHR1cmUoKSwgcnQxMS0+Z2V0Rm9ybWF0U2V0KCkpOwogICAgIHVuc2lnbmVkIGludCBz
b3VyY2VTdWJSZXNvdXJjZSA9IHJ0MTEtPmdldFN1YnJlc291cmNlSW5kZXgoKTsKIAogICAgIGNv
bnN0IGdsOjpFeHRlbnRzICZ0ZXhTaXplID0gdGV4dHVyZUhlbHBlci5nZXRFeHRlbnRzKCk7CkBA
IC0zNzM2LDE5ICszNjE2LDE2IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpyZWFkRnJvbUF0dGFj
aG1lbnQKICAgICBpZiAoc2FmZUFyZWEud2lkdGggPT0gMCB8fCBzYWZlQXJlYS5oZWlnaHQgPT0g
MCkKICAgICB7CiAgICAgICAgIC8vIG5vIHdvcmsgdG8gZG8KLSAgICAgICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogICAgIH0K
IAogICAgIGdsOjpFeHRlbnRzIHNhZmVTaXplKHNhZmVBcmVhLndpZHRoLCBzYWZlQXJlYS5oZWln
aHQsIDEpOwotICAgIGF1dG8gZXJyb3JPclJlc3VsdCA9Ci0gICAgICAgIENyZWF0ZVN0YWdpbmdU
ZXh0dXJlKHRleHR1cmVIZWxwZXIuZ2V0VGV4dHVyZVR5cGUoKSwgdGV4dHVyZUhlbHBlci5nZXRG
b3JtYXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZUhlbHBlci5nZXRB
TkdMRUZvcm1hdCgpLCBzYWZlU2l6ZSwgbURldmljZSk7Ci0gICAgaWYgKGVycm9yT3JSZXN1bHQu
aXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yT3JSZXN1bHQuZ2V0RXJyb3Io
KTsKLSAgICB9CisgICAgVGV4dHVyZUhlbHBlcjExIHN0YWdpbmdIZWxwZXI7CisgICAgQU5HTEVf
VFJZX1JFU1VMVCgKKyAgICAgICAgQ3JlYXRlU3RhZ2luZ1RleHR1cmUodGV4dHVyZUhlbHBlci5n
ZXRUZXh0dXJlVHlwZSgpLCB0ZXh0dXJlSGVscGVyLmdldEZvcm1hdFNldCgpLCBzYWZlU2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhZ2luZ0FjY2Vzczo6UkVBRCwgbURldmlj
ZSksCisgICAgICAgIHN0YWdpbmdIZWxwZXIpOwogCi0gICAgVGV4dHVyZUhlbHBlcjExIHN0YWdp
bmdIZWxwZXIoZXJyb3JPclJlc3VsdC5nZXRSZXN1bHQoKSk7CiAgICAgVGV4dHVyZUhlbHBlcjEx
IHJlc29sdmVkVGV4dHVyZUhlbHBlcjsKIAogICAgIC8vICJzcmNUZXh0dXJlIiB1c3VhbGx5IHBv
aW50cyB0byB0aGUgc291cmNlIHRleHR1cmUuCkBAIC0zNzgzLDcgKzM2NjAsNyBAQCBnbDo6RXJy
b3IgUmVuZGVyZXIxMTo6cmVhZEZyb21BdHRhY2htZW50CiAgICAgICAgIG1EZXZpY2VDb250ZXh0
LT5SZXNvbHZlU3VicmVzb3VyY2UocmVzb2x2ZVRleDJELCAwLCB0ZXh0dXJlSGVscGVyLmdldFRl
eHR1cmUyRCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNv
dXJjZVN1YlJlc291cmNlLCB0ZXh0dXJlSGVscGVyLmdldEZvcm1hdCgpKTsKICAgICAgICAgcmVz
b2x2ZWRUZXh0dXJlSGVscGVyID0KLSAgICAgICAgICAgIFRleHR1cmVIZWxwZXIxMTo6TWFrZUFu
ZFJlZmVyZW5jZShyZXNvbHZlVGV4MkQsIHRleHR1cmVIZWxwZXIuZ2V0QU5HTEVGb3JtYXQoKSk7
CisgICAgICAgICAgICBUZXh0dXJlSGVscGVyMTE6Ok1ha2VBbmRSZWZlcmVuY2UocmVzb2x2ZVRl
eDJELCB0ZXh0dXJlSGVscGVyLmdldEZvcm1hdFNldCgpKTsKIAogICAgICAgICBzb3VyY2VTdWJS
ZXNvdXJjZSA9IDA7CiAgICAgICAgIHNyY1RleHR1cmUgICAgICAgID0gJnJlc29sdmVkVGV4dHVy
ZUhlbHBlcjsKQEAgLTM4MDYsMzAgKzM2ODMsMjcgQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OnJl
YWRGcm9tQXR0YWNobWVudAogICAgIG1EZXZpY2VDb250ZXh0LT5Db3B5U3VicmVzb3VyY2VSZWdp
b24oc3RhZ2luZ0hlbHBlci5nZXRSZXNvdXJjZSgpLCAwLCAwLCAwLCAwLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjVGV4dHVyZS0+Z2V0UmVzb3VyY2UoKSwg
c291cmNlU3ViUmVzb3VyY2UsICZzcmNCb3gpOwogCi0gICAgaWYgKGludmVydFRleHR1cmUpCi0g
ICAgewotICAgICAgICBnbDo6UGl4ZWxQYWNrU3RhdGUgaW52ZXJ0VGV4dHVyZVBhY2s7Ci0KLSAg
ICAgICAgLy8gQ3JlYXRlIGEgbmV3IFBpeGVsUGFja1N0YXRlIHdpdGggcmV2ZXJzZWQgcm93IG9y
ZGVyLiBOb3RlIHRoYXQgd2UgY2FuJ3QganVzdCBhc3NpZ24KLSAgICAgICAgLy8gJ2ludmVydFRl
eHR1cmVQYWNrJyB0byBiZSAncGFjaycgKG9yIG1lbWNweSkgc2luY2UgdGhhdCBicmVha3MgdGhl
IHJlZiBjb3VudGluZy9vYmplY3QKLSAgICAgICAgLy8gdHJhY2tpbmcgaW4gdGhlICdwaXhlbEJ1
ZmZlcicgbWVtYmVycywgY2F1c2luZyBsZWFrcy4gSW5zdGVhZCB3ZSBtdXN0IHVzZQotICAgICAg
ICAvLyBwaXhlbEJ1ZmZlci5zZXQoKSB0d2ljZSwgd2hpY2ggcGVyZm9ybXMgdGhlIGFkZFJlZi9y
ZWxlYXNlIGNvcnJlY3RseQotICAgICAgICBpbnZlcnRUZXh0dXJlUGFjay5hbGlnbm1lbnQgPSBw
YWNrLmFsaWdubWVudDsKLSAgICAgICAgaW52ZXJ0VGV4dHVyZVBhY2sucGl4ZWxCdWZmZXIuc2V0
KHBhY2sucGl4ZWxCdWZmZXIuZ2V0KCkpOwotICAgICAgICBpbnZlcnRUZXh0dXJlUGFjay5yZXZl
cnNlUm93T3JkZXIgPSAhcGFjay5yZXZlcnNlUm93T3JkZXI7Ci0KLSAgICAgICAgUGFja1BpeGVs
c1BhcmFtcyBwYWNrUGFyYW1zKHNhZmVBcmVhLCBmb3JtYXQsIHR5cGUsIG91dHB1dFBpdGNoLCBp
bnZlcnRUZXh0dXJlUGFjaywgMCk7Ci0gICAgICAgIGVycm9yID0gcGFja1BpeGVscyhzdGFnaW5n
SGVscGVyLCBwYWNrUGFyYW1zLCBwaXhlbHNPdXQpOwotCi0gICAgICAgIGludmVydFRleHR1cmVQ
YWNrLnBpeGVsQnVmZmVyLnNldChudWxscHRyKTsKLQotICAgICAgICByZXR1cm4gZXJyb3I7Ci0g
ICAgfQotICAgIGVsc2UKKyAgICBpZiAoIWludmVydFRleHR1cmUpCiAgICAgewogICAgICAgICBQ
YWNrUGl4ZWxzUGFyYW1zIHBhY2tQYXJhbXMoc2FmZUFyZWEsIGZvcm1hdCwgdHlwZSwgb3V0cHV0
UGl0Y2gsIHBhY2ssIDApOwogICAgICAgICByZXR1cm4gcGFja1BpeGVscyhzdGFnaW5nSGVscGVy
LCBwYWNrUGFyYW1zLCBwaXhlbHNPdXQpOwogICAgIH0KKworICAgIGdsOjpQaXhlbFBhY2tTdGF0
ZSBpbnZlcnRUZXh0dXJlUGFjazsKKworICAgIC8vIENyZWF0ZSBhIG5ldyBQaXhlbFBhY2tTdGF0
ZSB3aXRoIHJldmVyc2VkIHJvdyBvcmRlci4gTm90ZSB0aGF0IHdlIGNhbid0IGp1c3QgYXNzaWdu
CisgICAgLy8gJ2ludmVydFRleHR1cmVQYWNrJyB0byBiZSAncGFjaycgKG9yIG1lbWNweSkgc2lu
Y2UgdGhhdCBicmVha3MgdGhlIHJlZiBjb3VudGluZy9vYmplY3QKKyAgICAvLyB0cmFja2luZyBp
biB0aGUgJ3BpeGVsQnVmZmVyJyBtZW1iZXJzLCBjYXVzaW5nIGxlYWtzLiBJbnN0ZWFkIHdlIG11
c3QgdXNlCisgICAgLy8gcGl4ZWxCdWZmZXIuc2V0KCkgdHdpY2UsIHdoaWNoIHBlcmZvcm1zIHRo
ZSBhZGRSZWYvcmVsZWFzZSBjb3JyZWN0bHkKKyAgICBpbnZlcnRUZXh0dXJlUGFjay5hbGlnbm1l
bnQgPSBwYWNrLmFsaWdubWVudDsKKyAgICBpbnZlcnRUZXh0dXJlUGFjay5waXhlbEJ1ZmZlci5z
ZXQocGFjay5waXhlbEJ1ZmZlci5nZXQoKSk7CisgICAgaW52ZXJ0VGV4dHVyZVBhY2sucmV2ZXJz
ZVJvd09yZGVyID0gIXBhY2sucmV2ZXJzZVJvd09yZGVyOworCisgICAgUGFja1BpeGVsc1BhcmFt
cyBwYWNrUGFyYW1zKHNhZmVBcmVhLCBmb3JtYXQsIHR5cGUsIG91dHB1dFBpdGNoLCBpbnZlcnRU
ZXh0dXJlUGFjaywgMCk7CisgICAgZ2w6OkVycm9yIGVycm9yID0gcGFja1BpeGVscyhzdGFnaW5n
SGVscGVyLCBwYWNrUGFyYW1zLCBwaXhlbHNPdXQpOworICAgIGludmVydFRleHR1cmVQYWNrLnBp
eGVsQnVmZmVyLnNldChudWxscHRyKTsKKyAgICBBTkdMRV9UUlkoZXJyb3IpOworICAgIHJldHVy
biBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6cGFja1BpeGVscyhj
b25zdCBUZXh0dXJlSGVscGVyMTEgJnRleHR1cmVIZWxwZXIsCkBAIC0zODQ2LDc5ICszNzIwLDEz
IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpwYWNrUGl4ZWxzKGNvbnN0IFQKICAgICAgICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIG1hcCBpbnRlcm5hbCB0
ZXh0dXJlIGZvciByZWFkaW5nLCByZXN1bHQ6IDB4JVguIiwgaHIpOwogICAgIH0KIAotICAgIHVp
bnQ4X3QgKnNvdXJjZTsKLSAgICBpbnQgaW5wdXRQaXRjaDsKLSAgICBpZiAocGFyYW1zLnBhY2su
cmV2ZXJzZVJvd09yZGVyKQotICAgIHsKLSAgICAgICAgc291cmNlID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdCo+KG1hcHBpbmcucERhdGEpICsgbWFwcGluZy5Sb3dQaXRjaCAqIChwYXJhbXMuYXJlYS5o
ZWlnaHQgLSAxKTsKLSAgICAgICAgaW5wdXRQaXRjaCA9IC1zdGF0aWNfY2FzdDxpbnQ+KG1hcHBp
bmcuUm93UGl0Y2gpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBzb3VyY2UgPSBz
dGF0aWNfY2FzdDx1aW50OF90Kj4obWFwcGluZy5wRGF0YSk7Ci0gICAgICAgIGlucHV0UGl0Y2gg
PSBzdGF0aWNfY2FzdDxpbnQ+KG1hcHBpbmcuUm93UGl0Y2gpOwotICAgIH0KKyAgICB1aW50OF90
ICpzb3VyY2UgPSBzdGF0aWNfY2FzdDx1aW50OF90ICo+KG1hcHBpbmcucERhdGEpOworICAgIGlu
dCBpbnB1dFBpdGNoICA9IHN0YXRpY19jYXN0PGludD4obWFwcGluZy5Sb3dQaXRjaCk7CiAKLSAg
ICBjb25zdCBhdXRvICZhbmdsZUZvcm1hdEluZm8gPSBkM2QxMTo6R2V0QU5HTEVGb3JtYXRTZXQo
dGV4dHVyZUhlbHBlci5nZXRBTkdMRUZvcm1hdCgpKTsKLSAgICBjb25zdCBnbDo6SW50ZXJuYWxG
b3JtYXQgJnNvdXJjZUZvcm1hdEluZm8gPQotICAgICAgICBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJ
bmZvKGFuZ2xlRm9ybWF0SW5mby5nbEludGVybmFsRm9ybWF0KTsKLSAgICBpZiAoc291cmNlRm9y
bWF0SW5mby5mb3JtYXQgPT0gcGFyYW1zLmZvcm1hdCAmJiBzb3VyY2VGb3JtYXRJbmZvLnR5cGUg
PT0gcGFyYW1zLnR5cGUpCi0gICAgewotICAgICAgICB1aW50OF90ICpkZXN0ID0gcGl4ZWxzT3V0
ICsgcGFyYW1zLm9mZnNldDsKLSAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBwYXJhbXMuYXJl
YS5oZWlnaHQ7IHkrKykKLSAgICAgICAgewotICAgICAgICAgICAgbWVtY3B5KGRlc3QgKyB5ICog
cGFyYW1zLm91dHB1dFBpdGNoLCBzb3VyY2UgKyB5ICogaW5wdXRQaXRjaCwgcGFyYW1zLmFyZWEu
d2lkdGggKiBzb3VyY2VGb3JtYXRJbmZvLnBpeGVsQnl0ZXMpOwotICAgICAgICB9Ci0gICAgfQot
ICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIGNvbnN0IGQzZDExOjpEWEdJRm9ybWF0ICZkeGdpRm9y
bWF0SW5mbyA9Ci0gICAgICAgICAgICBkM2QxMTo6R2V0RFhHSUZvcm1hdEluZm8odGV4dHVyZUhl
bHBlci5nZXRGb3JtYXQoKSk7Ci0gICAgICAgIENvbG9yQ29weUZ1bmN0aW9uIGZhc3RDb3B5RnVu
YyA9Ci0gICAgICAgICAgICBkeGdpRm9ybWF0SW5mby5nZXRGYXN0Q29weUZ1bmN0aW9uKHBhcmFt
cy5mb3JtYXQsIHBhcmFtcy50eXBlKTsKLSAgICAgICAgR0xlbnVtIHNpemVkRGVzdEludGVybmFs
Rm9ybWF0ID0gZ2w6OkdldFNpemVkSW50ZXJuYWxGb3JtYXQocGFyYW1zLmZvcm1hdCwgcGFyYW1z
LnR5cGUpOwotICAgICAgICBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJmRlc3RGb3JtYXRJbmZv
ID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhzaXplZERlc3RJbnRlcm5hbEZvcm1hdCk7Ci0K
LSAgICAgICAgaWYgKGZhc3RDb3B5RnVuYykKLSAgICAgICAgewotICAgICAgICAgICAgLy8gRmFz
dCBjb3B5IGlzIHBvc3NpYmxlIHRocm91Z2ggc29tZSBzcGVjaWFsIGZ1bmN0aW9uCi0gICAgICAg
ICAgICBmb3IgKGludCB5ID0gMDsgeSA8IHBhcmFtcy5hcmVhLmhlaWdodDsgeSsrKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgcGFyYW1zLmFyZWEu
d2lkdGg7IHgrKykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHVpbnQ4
X3QgKmRlc3QgPSBwaXhlbHNPdXQgKyBwYXJhbXMub2Zmc2V0ICsgeSAqIHBhcmFtcy5vdXRwdXRQ
aXRjaCArIHggKiBkZXN0Rm9ybWF0SW5mby5waXhlbEJ5dGVzOwotICAgICAgICAgICAgICAgICAg
ICBjb25zdCB1aW50OF90ICpzcmMgPSBzb3VyY2UgKyB5ICogaW5wdXRQaXRjaCArIHggKiBzb3Vy
Y2VGb3JtYXRJbmZvLnBpeGVsQnl0ZXM7Ci0KLSAgICAgICAgICAgICAgICAgICAgZmFzdENvcHlG
dW5jKHNyYywgZGVzdCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgQ29sb3JSZWFkRnVuY3Rp
b24gY29sb3JSZWFkRnVuY3Rpb24gICA9IGFuZ2xlRm9ybWF0SW5mby5jb2xvclJlYWRGdW5jdGlv
bjsKLSAgICAgICAgICAgIENvbG9yV3JpdGVGdW5jdGlvbiBjb2xvcldyaXRlRnVuY3Rpb24gPSBH
ZXRDb2xvcldyaXRlRnVuY3Rpb24ocGFyYW1zLmZvcm1hdCwgcGFyYW1zLnR5cGUpOwotCi0gICAg
ICAgICAgICB1aW50OF90IHRlbXBbMTZdOyAvLyBNYXhpbXVtIHNpemUgb2YgYW55IENvbG9yPFQ+
IHR5cGUgdXNlZC4KLSAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKHRlbXApID49IHNp
emVvZihnbDo6Q29sb3JGKSAgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHRl
bXApID49IHNpemVvZihnbDo6Q29sb3JVSSkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZW9mKHRlbXApID49IHNpemVvZihnbDo6Q29sb3JJKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIlVuZXhwZWN0ZWQgc2l6ZSBvZiBnbDo6Q29sb3Igc3RydWN0LiIpOwotCi0gICAgICAg
ICAgICBmb3IgKGludCB5ID0gMDsgeSA8IHBhcmFtcy5hcmVhLmhlaWdodDsgeSsrKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgcGFyYW1zLmFyZWEu
d2lkdGg7IHgrKykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHVpbnQ4
X3QgKmRlc3QgPSBwaXhlbHNPdXQgKyBwYXJhbXMub2Zmc2V0ICsgeSAqIHBhcmFtcy5vdXRwdXRQ
aXRjaCArIHggKiBkZXN0Rm9ybWF0SW5mby5waXhlbEJ5dGVzOwotICAgICAgICAgICAgICAgICAg
ICBjb25zdCB1aW50OF90ICpzcmMgPSBzb3VyY2UgKyB5ICogaW5wdXRQaXRjaCArIHggKiBzb3Vy
Y2VGb3JtYXRJbmZvLnBpeGVsQnl0ZXM7CisgICAgY29uc3QgYXV0byAmZm9ybWF0SW5mbyA9IHRl
eHR1cmVIZWxwZXIuZ2V0Rm9ybWF0U2V0KCk7CisgICAgQVNTRVJUKGZvcm1hdEluZm8uZm9ybWF0
LmdsSW50ZXJuYWxGb3JtYXQgIT0gR0xfTk9ORSk7CiAKLSAgICAgICAgICAgICAgICAgICAgLy8g
cmVhZEZ1bmMgYW5kIHdyaXRlRnVuYyB3aWxsIGJlIHVzaW5nIHRoZSBzYW1lIHR5cGUgb2YgY29s
b3IsIENvcHlUZXhJbWFnZQotICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIG5vdCBhbGxvdyB0
aGUgY29weSBvdGhlcndpc2UuCi0gICAgICAgICAgICAgICAgICAgIGNvbG9yUmVhZEZ1bmN0aW9u
KHNyYywgdGVtcCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbG9yV3JpdGVGdW5jdGlvbih0ZW1w
LCBkZXN0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9CisgICAgUGFja1BpeGVscyhwYXJhbXMsIGZvcm1hdEluZm8uZm9ybWF0LCBpbnB1dFBpdGNo
LCBzb3VyY2UsIHBpeGVsc091dCk7CiAKICAgICBtRGV2aWNlQ29udGV4dC0+VW5tYXAocmVhZFJl
c291cmNlLCAwKTsKIApAQCAtMzk0MSw0OSArMzc0OSw1NyBAQCBnbDo6RXJyb3IgUmVuZGVyZXIx
MTo6YmxpdFJlbmRlcmJ1ZmZlclJlCiAgICAgQVNTRVJUKGNvbG9yQmxpdCAhPSAoZGVwdGhCbGl0
IHx8IHN0ZW5jaWxCbGl0KSk7CiAKICAgICBSZW5kZXJUYXJnZXQxMSAqZHJhd1JlbmRlclRhcmdl
dDExID0gR2V0QXM8UmVuZGVyVGFyZ2V0MTE+KGRyYXdSZW5kZXJUYXJnZXQpOwotICAgIGlmICgh
ZHJhd1JlbmRlclRhcmdldCkKKyAgICBpZiAoIWRyYXdSZW5kZXJUYXJnZXQxMSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byByZXRy
aWV2ZSB0aGUgaW50ZXJuYWwgZHJhdyByZW5kZXIgdGFyZ2V0IGZyb20gdGhlIGRyYXcgZnJhbWVi
dWZmZXIuIik7CiAgICAgfQogCi0gICAgSUQzRDExUmVzb3VyY2UgKmRyYXdUZXh0dXJlID0gZHJh
d1JlbmRlclRhcmdldDExLT5nZXRUZXh0dXJlKCk7CisgICAgVGV4dHVyZUhlbHBlcjExIGRyYXdU
ZXh0dXJlID0gVGV4dHVyZUhlbHBlcjExOjpNYWtlQW5kUmVmZXJlbmNlKAorICAgICAgICBkcmF3
UmVuZGVyVGFyZ2V0MTEtPmdldFRleHR1cmUoKSwgZHJhd1JlbmRlclRhcmdldDExLT5nZXRGb3Jt
YXRTZXQoKSk7CiAgICAgdW5zaWduZWQgaW50IGRyYXdTdWJyZXNvdXJjZSA9IGRyYXdSZW5kZXJU
YXJnZXQxMS0+Z2V0U3VicmVzb3VyY2VJbmRleCgpOwogICAgIElEM0QxMVJlbmRlclRhcmdldFZp
ZXcgKmRyYXdSVFYgPSBkcmF3UmVuZGVyVGFyZ2V0MTEtPmdldFJlbmRlclRhcmdldFZpZXcoKTsK
ICAgICBJRDNEMTFEZXB0aFN0ZW5jaWxWaWV3ICpkcmF3RFNWID0gZHJhd1JlbmRlclRhcmdldDEx
LT5nZXREZXB0aFN0ZW5jaWxWaWV3KCk7CiAKICAgICBSZW5kZXJUYXJnZXQxMSAqcmVhZFJlbmRl
clRhcmdldDExID0gR2V0QXM8UmVuZGVyVGFyZ2V0MTE+KHJlYWRSZW5kZXJUYXJnZXQpOwotICAg
IGlmICghcmVhZFJlbmRlclRhcmdldCkKKyAgICBpZiAoIXJlYWRSZW5kZXJUYXJnZXQxMSkKICAg
ICB7CiAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0
byByZXRyaWV2ZSB0aGUgaW50ZXJuYWwgcmVhZCByZW5kZXIgdGFyZ2V0IGZyb20gdGhlIHJlYWQg
ZnJhbWVidWZmZXIuIik7CiAgICAgfQogCi0gICAgSUQzRDExUmVzb3VyY2UgKnJlYWRUZXh0dXJl
ID0gTlVMTDsKLSAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnJlYWRTUlYgPSBOVUxMOwor
ICAgIFRleHR1cmVIZWxwZXIxMSByZWFkVGV4dHVyZTsKICAgICB1bnNpZ25lZCBpbnQgcmVhZFN1
YnJlc291cmNlID0gMDsKLSAgICBpZiAocmVhZFJlbmRlclRhcmdldC0+Z2V0U2FtcGxlcygpID4g
MCkKKyAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnJlYWRTUlYgPSBudWxscHRyOworCisg
ICAgaWYgKHJlYWRSZW5kZXJUYXJnZXQtPmdldFNhbXBsZXMoKSA+IDEpCiAgICAgewotICAgICAg
ICBJRDNEMTFSZXNvdXJjZSAqdW5yZXNvbHZlZFJlc291cmNlID0gcmVhZFJlbmRlclRhcmdldDEx
LT5nZXRUZXh0dXJlKCk7Ci0gICAgICAgIElEM0QxMVRleHR1cmUyRCAqdW5yZXNvbHZlZFRleHR1
cmUgPSBkM2QxMTo6RHluYW1pY0Nhc3RDb21PYmplY3Q8SUQzRDExVGV4dHVyZTJEPih1bnJlc29s
dmVkUmVzb3VyY2UpOworICAgICAgICBhdXRvIHJlYWRSVDExID0gR2V0QXM8UmVuZGVyVGFyZ2V0
MTE+KHJlYWRSZW5kZXJUYXJnZXQpOworICAgICAgICBBTkdMRV9UUllfUkVTVUxUKHJlc29sdmVN
dWx0aXNhbXBsZWRUZXh0dXJlKHJlYWRSVDExLCBkZXB0aEJsaXQsIHN0ZW5jaWxCbGl0KSwgcmVh
ZFRleHR1cmUpOwogCi0gICAgICAgIGlmICh1bnJlc29sdmVkVGV4dHVyZSkKKyAgICAgICAgaWYg
KCFzdGVuY2lsQmxpdCkKICAgICAgICAgewotICAgICAgICAgICAgcmVhZFRleHR1cmUgPSByZXNv
bHZlTXVsdGlzYW1wbGVkVGV4dHVyZSh1bnJlc29sdmVkVGV4dHVyZSwgcmVhZFJlbmRlclRhcmdl
dDExLT5nZXRTdWJyZXNvdXJjZUluZGV4KCkpOwotICAgICAgICAgICAgcmVhZFN1YnJlc291cmNl
ID0gMDsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8gJnJlYWRGb3JtYXRTZXQgPSByZWFkVGV4dHVy
ZS5nZXRGb3JtYXRTZXQoKTsKIAotICAgICAgICAgICAgU2FmZVJlbGVhc2UodW5yZXNvbHZlZFRl
eHR1cmUpOworICAgICAgICAgICAgRDNEMTFfU0hBREVSX1JFU09VUkNFX1ZJRVdfREVTQyB2aWV3
RGVzYzsKKyAgICAgICAgICAgIHZpZXdEZXNjLkZvcm1hdCAgICAgICAgICAgICAgICAgICAgPSBy
ZWFkRm9ybWF0U2V0LnNydkZvcm1hdDsKKyAgICAgICAgICAgIHZpZXdEZXNjLlZpZXdEaW1lbnNp
b24gICAgICAgICAgICAgPSBEM0QxMV9TUlZfRElNRU5TSU9OX1RFWFRVUkUyRDsKKyAgICAgICAg
ICAgIHZpZXdEZXNjLlRleHR1cmUyRC5NaXBMZXZlbHMgICAgICAgPSAxOworICAgICAgICAgICAg
dmlld0Rlc2MuVGV4dHVyZTJELk1vc3REZXRhaWxlZE1pcCA9IDA7CiAKLSAgICAgICAgICAgIEhS
RVNVTFQgaHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZVNoYWRlclJlc291cmNlVmlldyhyZWFkVGV4
dHVyZSwgTlVMTCwgJnJlYWRTUlYpOworICAgICAgICAgICAgSFJFU1VMVCBocmVzdWx0ID0KKyAg
ICAgICAgICAgICAgICBtRGV2aWNlLT5DcmVhdGVTaGFkZXJSZXNvdXJjZVZpZXcocmVhZFRleHR1
cmUuZ2V0UmVzb3VyY2UoKSwgJnZpZXdEZXNjLCAmcmVhZFNSVik7CiAgICAgICAgICAgICBpZiAo
RkFJTEVEKGhyZXN1bHQpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFNhZmVSZWxl
YXNlKHJlYWRUZXh0dXJlKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09V
VF9PRl9NRU1PUlksICJGYWlsZWQgdG8gY3JlYXRlIHNoYWRlciByZXNvdXJjZSB2aWV3IHRvIHJl
c29sdmUgbXVsdGlzYW1wbGVkIGZyYW1lYnVmZmVyLiIpOworICAgICAgICAgICAgICAgIHJldHVy
biBnbDo6RXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEdMX09VVF9PRl9NRU1PUlksCisgICAg
ICAgICAgICAgICAgICAgICJSZW5kZXJlcjExOjpibGl0UmVuZGVyYnVmZmVyUmVjdDogRmFpbGVk
IHRvIGNyZWF0ZSB0ZW1wb3JhcnkgU1JWLiIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIHJlYWRUZXh0dXJlID0gcmVhZFJlbmRlclRh
cmdldDExLT5nZXRUZXh0dXJlKCk7Ci0gICAgICAgIHJlYWRUZXh0dXJlLT5BZGRSZWYoKTsKKyAg
ICAgICAgQVNTRVJUKHJlYWRSZW5kZXJUYXJnZXQxMSk7CisgICAgICAgIHJlYWRUZXh0dXJlID0g
VGV4dHVyZUhlbHBlcjExOjpNYWtlQW5kUmVmZXJlbmNlKHJlYWRSZW5kZXJUYXJnZXQxMS0+Z2V0
VGV4dHVyZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWFkUmVuZGVyVGFyZ2V0MTEtPmdldEZvcm1hdFNldCgpKTsKICAgICAgICAg
cmVhZFN1YnJlc291cmNlID0gcmVhZFJlbmRlclRhcmdldDExLT5nZXRTdWJyZXNvdXJjZUluZGV4
KCk7CiAgICAgICAgIHJlYWRTUlYgPSByZWFkUmVuZGVyVGFyZ2V0MTEtPmdldEJsaXRTaGFkZXJS
ZXNvdXJjZVZpZXcoKTsKICAgICAgICAgaWYgKHJlYWRTUlYgPT0gbnVsbHB0cikKQEAgLTM5OTEs
MTggKzM4MDcsMTUgQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmJsaXRSZW5kZXJidWZmZXJSZQog
ICAgICAgICAgICAgQVNTRVJUKGRlcHRoQmxpdCB8fCBzdGVuY2lsQmxpdCk7CiAgICAgICAgICAg
ICByZWFkU1JWID0gcmVhZFJlbmRlclRhcmdldDExLT5nZXRTaGFkZXJSZXNvdXJjZVZpZXcoKTsK
ICAgICAgICAgfQorICAgICAgICBBU1NFUlQocmVhZFNSVik7CiAgICAgICAgIHJlYWRTUlYtPkFk
ZFJlZigpOwogICAgIH0KIAotICAgIGlmICghcmVhZFRleHR1cmUgfHwgIXJlYWRTUlYpCi0gICAg
ewotICAgICAgICBTYWZlUmVsZWFzZShyZWFkVGV4dHVyZSk7Ci0gICAgICAgIFNhZmVSZWxlYXNl
KHJlYWRTUlYpOwotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJG
YWlsZWQgdG8gcmV0cmlldmUgdGhlIGludGVybmFsIHJlYWQgcmVuZGVyIHRhcmdldCB2aWV3IGZy
b20gdGhlIHJlYWQgcmVuZGVyIHRhcmdldC4iKTsKLSAgICB9CisgICAgLy8gU3RlbmNpbCBibGl0
cyBkb24ndCB1c2Ugc2hhZGVycy4KKyAgICBBU1NFUlQocmVhZFNSViB8fCBzdGVuY2lsQmxpdCk7
CiAKLSAgICBnbDo6RXh0ZW50cyByZWFkU2l6ZShyZWFkUmVuZGVyVGFyZ2V0LT5nZXRXaWR0aCgp
LCByZWFkUmVuZGVyVGFyZ2V0LT5nZXRIZWlnaHQoKSwgMSk7Ci0gICAgZ2w6OkV4dGVudHMgZHJh
d1NpemUoZHJhd1JlbmRlclRhcmdldC0+Z2V0V2lkdGgoKSwgZHJhd1JlbmRlclRhcmdldC0+Z2V0
SGVpZ2h0KCksIDEpOworICAgIGNvbnN0IGdsOjpFeHRlbnRzIHJlYWRTaXplKHJlYWRSZW5kZXJU
YXJnZXQtPmdldFdpZHRoKCksIHJlYWRSZW5kZXJUYXJnZXQtPmdldEhlaWdodCgpLCAxKTsKKyAg
ICBjb25zdCBnbDo6RXh0ZW50cyBkcmF3U2l6ZShkcmF3UmVuZGVyVGFyZ2V0LT5nZXRXaWR0aCgp
LCBkcmF3UmVuZGVyVGFyZ2V0LT5nZXRIZWlnaHQoKSwgMSk7CiAKICAgICAvLyBGcm9tIHRoZSBz
cGVjOgogICAgIC8vICJUaGUgYWN0dWFsIHJlZ2lvbiB0YWtlbiBmcm9tIHRoZSByZWFkIGZyYW1l
YnVmZmVyIGlzIGxpbWl0ZWQgdG8gdGhlIGludGVyc2VjdGlvbiBvZiB0aGUKQEAgLTQwNjQsMjYg
KzM4NzcsMjUgQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmJsaXRSZW5kZXJidWZmZXJSZQogICAg
ICAgICBkcmF3UmVjdC5oZWlnaHQgKz0gZHJhd09mZnNldDsKICAgICB9CiAKLSAgICBib29sIHNj
aXNzb3JOZWVkZWQgPSBzY2lzc29yICYmIGdsOjpDbGlwUmVjdGFuZ2xlKGRyYXdSZWN0LCAqc2Np
c3NvciwgTlVMTCk7CisgICAgYm9vbCBzY2lzc29yTmVlZGVkID0gc2Npc3NvciAmJiBnbDo6Q2xp
cFJlY3RhbmdsZShkcmF3UmVjdCwgKnNjaXNzb3IsIG51bGxwdHIpOwogCiAgICAgY29uc3QgYXV0
byAmZGVzdEZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGRyYXdSZW5kZXJU
YXJnZXQtPmdldEludGVybmFsRm9ybWF0KCkpOwogICAgIGNvbnN0IGF1dG8gJnNyY0Zvcm1hdElu
Zm8gID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhyZWFkUmVuZGVyVGFyZ2V0LT5nZXRJbnRl
cm5hbEZvcm1hdCgpKTsKLSAgICBjb25zdCBhdXRvICZmb3JtYXRTZXQgICAgICAgICAgICA9IGQz
ZDExOjpHZXRBTkdMRUZvcm1hdFNldChkcmF3UmVuZGVyVGFyZ2V0MTEtPmdldEFOR0xFRm9ybWF0
KCkpOwotICAgIGNvbnN0IERYR0lfRk9STUFUIGRyYXdEWEdJRm9ybWF0ID0gY29sb3JCbGl0ID8g
Zm9ybWF0U2V0LnJ0dkZvcm1hdCA6IGZvcm1hdFNldC5kc3ZGb3JtYXQ7Ci0gICAgY29uc3QgYXV0
byAmZHhnaUZvcm1hdEluZm8gICAgICAgPSBkM2QxMTo6R2V0RFhHSUZvcm1hdEluZm8oZHJhd0RY
R0lGb3JtYXQpOworICAgIGNvbnN0IGF1dG8gJmZvcm1hdFNldCAgICAgID0gZHJhd1JlbmRlclRh
cmdldDExLT5nZXRGb3JtYXRTZXQoKTsKKyAgICBjb25zdCBhdXRvICZuYXRpdmVGb3JtYXQgICA9
IGZvcm1hdFNldC5mb3JtYXQ7CiAKICAgICAvLyBTb21lIGJsaXRzIHJlcXVpcmUgbWFza2luZyBv
ZmYgZW11bGF0ZWQgdGV4dHVyZSBjaGFubmVscy4gZWc6IGZyb20gUkdCQTggdG8gUkdCOCwgd2UK
ICAgICAvLyBlbXVsYXRlIFJHQjggd2l0aCBSR0JBOCwgc28gd2UgbmVlZCB0byBtYXNrIG9mZiB0
aGUgYWxwaGEgY2hhbm5lbCB3aGVuIHdlIGNvcHkuCiAKICAgICBnbDo6Q29sb3I8Ym9vbD4gY29s
b3JNYXNrOwotICAgIGNvbG9yTWFzay5yZWQgPSAoc3JjRm9ybWF0SW5mby5yZWRCaXRzID4gMCkg
JiYgKGRlc3RGb3JtYXRJbmZvLnJlZEJpdHMgPT0gMCkgJiYKLSAgICAgICAgICAgICAgICAgICAg
KGR4Z2lGb3JtYXRJbmZvLnJlZEJpdHMgPiAwKTsKKyAgICBjb2xvck1hc2sucmVkID0KKyAgICAg
ICAgKHNyY0Zvcm1hdEluZm8ucmVkQml0cyA+IDApICYmIChkZXN0Rm9ybWF0SW5mby5yZWRCaXRz
ID09IDApICYmIChuYXRpdmVGb3JtYXQucmVkQml0cyA+IDApOwogICAgIGNvbG9yTWFzay5ncmVl
biA9IChzcmNGb3JtYXRJbmZvLmdyZWVuQml0cyA+IDApICYmIChkZXN0Rm9ybWF0SW5mby5ncmVl
bkJpdHMgPT0gMCkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAoZHhnaUZvcm1hdEluZm8uZ3Jl
ZW5CaXRzID4gMCk7CisgICAgICAgICAgICAgICAgICAgICAgKG5hdGl2ZUZvcm1hdC5ncmVlbkJp
dHMgPiAwKTsKICAgICBjb2xvck1hc2suYmx1ZSA9IChzcmNGb3JtYXRJbmZvLmJsdWVCaXRzID4g
MCkgJiYgKGRlc3RGb3JtYXRJbmZvLmJsdWVCaXRzID09IDApICYmCi0gICAgICAgICAgICAgICAg
ICAgICAoZHhnaUZvcm1hdEluZm8uYmx1ZUJpdHMgPiAwKTsKKyAgICAgICAgICAgICAgICAgICAg
IChuYXRpdmVGb3JtYXQuYmx1ZUJpdHMgPiAwKTsKICAgICBjb2xvck1hc2suYWxwaGEgPSAoc3Jj
Rm9ybWF0SW5mby5hbHBoYUJpdHMgPiAwKSAmJiAoZGVzdEZvcm1hdEluZm8uYWxwaGFCaXRzID09
IDApICYmCi0gICAgICAgICAgICAgICAgICAgICAgKGR4Z2lGb3JtYXRJbmZvLmFscGhhQml0cyA+
IDApOworICAgICAgICAgICAgICAgICAgICAgIChuYXRpdmVGb3JtYXQuYWxwaGFCaXRzID4gMCk7
CiAKICAgICAvLyBXZSBvbmx5IGN1cnJlbnRseSBzdXBwb3J0IG1hc2tpbmcgb2ZmIHRoZSBhbHBo
YSBjaGFubmVsLgogICAgIGJvb2wgY29sb3JNYXNraW5nTmVlZGVkID0gY29sb3JNYXNrLmFscGhh
OwpAQCAtNDEwNCwxMSArMzkxNiwxMSBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6YmxpdFJlbmRl
cmJ1ZmZlclJlCiAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdSZWN0LnggPCAwIHx8IGRyYXdS
ZWN0LnggKyBkcmF3UmVjdC53aWR0aCA+IGRyYXdTaXplLndpZHRoIHx8CiAgICAgICAgICAgICAg
ICAgICAgICAgIGRyYXdSZWN0LnkgPCAwIHx8IGRyYXdSZWN0LnkgKyBkcmF3UmVjdC5oZWlnaHQg
PiBkcmF3U2l6ZS5oZWlnaHQ7CiAKLSAgICBib29sIHBhcnRpYWxEU0JsaXQgPSAoZHhnaUZvcm1h
dEluZm8uZGVwdGhCaXRzID4gMCAmJiBkZXB0aEJsaXQpICE9IChkeGdpRm9ybWF0SW5mby5zdGVu
Y2lsQml0cyA+IDAgJiYgc3RlbmNpbEJsaXQpOworICAgIGJvb2wgcGFydGlhbERTQmxpdCA9Cisg
ICAgICAgIChuYXRpdmVGb3JtYXQuZGVwdGhCaXRzID4gMCAmJiBkZXB0aEJsaXQpICE9IChuYXRp
dmVGb3JtYXQuc3RlbmNpbEJpdHMgPiAwICYmIHN0ZW5jaWxCbGl0KTsKIAotICAgIGdsOjpFcnJv
ciByZXN1bHQoR0xfTk9fRVJST1IpOwotCi0gICAgaWYgKHJlYWRSZW5kZXJUYXJnZXQxMS0+Z2V0
QU5HTEVGb3JtYXQoKSA9PSBkcmF3UmVuZGVyVGFyZ2V0MTEtPmdldEFOR0xFRm9ybWF0KCkgJiYK
KyAgICBpZiAocmVhZFJlbmRlclRhcmdldDExLT5nZXRGb3JtYXRTZXQoKS5mb3JtYXQuaWQgPT0K
KyAgICAgICAgICAgIGRyYXdSZW5kZXJUYXJnZXQxMS0+Z2V0Rm9ybWF0U2V0KCkuZm9ybWF0Lmlk
ICYmCiAgICAgICAgICFzdHJldGNoUmVxdWlyZWQgJiYgIW91dE9mQm91bmRzICYmICFmbGlwUmVx
dWlyZWQgJiYgIXBhcnRpYWxEU0JsaXQgJiYKICAgICAgICAgIWNvbG9yTWFza2luZ05lZWRlZCAm
JiAoIShkZXB0aEJsaXQgfHwgc3RlbmNpbEJsaXQpIHx8IHdob2xlQnVmZmVyQ29weSkpCiAgICAg
ewpAQCAtNDE1MCwxMSArMzk2MiwxMSBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6YmxpdFJlbmRl
cmJ1ZmZlclJlCiAKICAgICAgICAgLy8gRDNEMTEgbmVlZHMgZGVwdGgtc3RlbmNpbCBDb3B5U3Vi
cmVzb3VyY2VSZWdpb25zIHRvIGhhdmUgYSBOVUxMIHBTcmNCb3gKICAgICAgICAgLy8gV2UgYWxz
byByZXF1aXJlIGNvbXBsZXRlIGZyYW1lYnVmZmVyIGNvcGllcyBmb3IgZGVwdGgtc3RlbmNpbCBi
bGl0LgotICAgICAgICBEM0QxMV9CT1ggKnBTcmNCb3ggPSB3aG9sZUJ1ZmZlckNvcHkgPyBOVUxM
IDogJnJlYWRCb3g7CisgICAgICAgIEQzRDExX0JPWCAqcFNyY0JveCA9IHdob2xlQnVmZmVyQ29w
eSA/IG51bGxwdHIgOiAmcmVhZEJveDsKIAotICAgICAgICBtRGV2aWNlQ29udGV4dC0+Q29weVN1
YnJlc291cmNlUmVnaW9uKGRyYXdUZXh0dXJlLCBkcmF3U3VicmVzb3VyY2UsIGRzdFgsIGRzdFks
IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZFRl
eHR1cmUsIHJlYWRTdWJyZXNvdXJjZSwgcFNyY0JveCk7Ci0gICAgICAgIHJlc3VsdCA9IGdsOjpF
cnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5Db3B5U3VicmVzb3Vy
Y2VSZWdpb24oZHJhd1RleHR1cmUuZ2V0UmVzb3VyY2UoKSwgZHJhd1N1YnJlc291cmNlLCBkc3RY
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdFksIDAs
IHJlYWRUZXh0dXJlLmdldFJlc291cmNlKCksIHJlYWRTdWJyZXNvdXJjZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwU3JjQm94KTsKICAgICB9CiAgICAg
ZWxzZQogICAgIHsKQEAgLTQxNjMsMzQgKzM5NzUsMzYgQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6
OmJsaXRSZW5kZXJidWZmZXJSZQogCiAgICAgICAgIGlmIChkZXB0aEJsaXQgJiYgc3RlbmNpbEJs
aXQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IG1CbGl0LT5jb3B5RGVwdGhTdGVu
Y2lsKHJlYWRUZXh0dXJlLCByZWFkU3VicmVzb3VyY2UsIHJlYWRBcmVhLCByZWFkU2l6ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdUZXh0dXJlLCBk
cmF3U3VicmVzb3VyY2UsIGRyYXdBcmVhLCBkcmF3U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNjaXNzb3IpOworICAgICAgICAgICAgQU5HTEVfVFJZ
KG1CbGl0LT5jb3B5RGVwdGhTdGVuY2lsKHJlYWRUZXh0dXJlLCByZWFkU3VicmVzb3VyY2UsIHJl
YWRBcmVhLCByZWFkU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkcmF3VGV4dHVyZSwgZHJhd1N1YnJlc291cmNlLCBkcmF3QXJlYSwgZHJhd1NpemUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Npc3Nvcikp
OwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGRlcHRoQmxpdCkKICAgICAgICAgewotICAg
ICAgICAgICAgcmVzdWx0ID0gbUJsaXQtPmNvcHlEZXB0aChyZWFkU1JWLCByZWFkQXJlYSwgcmVh
ZFNpemUsIGRyYXdEU1YsIGRyYXdBcmVhLCBkcmF3U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2Npc3Nvcik7CisgICAgICAgICAgICBBU1NFUlQocmVhZFNSVik7
CisgICAgICAgICAgICBBTkdMRV9UUlkobUJsaXQtPmNvcHlEZXB0aChyZWFkU1JWLCByZWFkQXJl
YSwgcmVhZFNpemUsIGRyYXdEU1YsIGRyYXdBcmVhLCBkcmF3U2l6ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNjaXNzb3IpKTsKICAgICAgICAgfQogICAgICAgICBl
bHNlIGlmIChzdGVuY2lsQmxpdCkKICAgICAgICAgewotICAgICAgICAgICAgcmVzdWx0ID0gbUJs
aXQtPmNvcHlTdGVuY2lsKHJlYWRUZXh0dXJlLCByZWFkU3VicmVzb3VyY2UsIHJlYWRBcmVhLCBy
ZWFkU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3VGV4
dHVyZSwgZHJhd1N1YnJlc291cmNlLCBkcmF3QXJlYSwgZHJhd1NpemUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Npc3Nvcik7CisgICAgICAgICAgICBBTkdMRV9U
UlkobUJsaXQtPmNvcHlTdGVuY2lsKHJlYWRUZXh0dXJlLCByZWFkU3VicmVzb3VyY2UsIHJlYWRB
cmVhLCByZWFkU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZHJhd1RleHR1cmUsIGRyYXdTdWJyZXNvdXJjZSwgZHJhd0FyZWEsIGRyYXdTaXplLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lzc29yKSk7CiAgICAgICAgIH0K
ICAgICAgICAgZWxzZQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBXZSBkb24ndCBjdXJyZW50
bHkgc3VwcG9ydCBtYXNraW5nIG9mZiBhbnkgb3RoZXIgY2hhbm5lbCB0aGFuIGFscGhhCiAgICAg
ICAgICAgICBib29sIG1hc2tPZmZBbHBoYSA9IGNvbG9yTWFza2luZ05lZWRlZCAmJiBjb2xvck1h
c2suYWxwaGE7Ci0gICAgICAgICAgICByZXN1bHQgPSBtQmxpdC0+Y29weVRleHR1cmUocmVhZFNS
ViwgcmVhZEFyZWEsIHJlYWRTaXplLCBkcmF3UlRWLCBkcmF3QXJlYSwgZHJhd1NpemUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Npc3NvciwgZGVzdEZvcm1hdElu
Zm8uZm9ybWF0LCBmaWx0ZXIsIG1hc2tPZmZBbHBoYSk7CisgICAgICAgICAgICBBU1NFUlQocmVh
ZFNSVik7CisgICAgICAgICAgICBBTkdMRV9UUlkobUJsaXQtPmNvcHlUZXh0dXJlKHJlYWRTUlYs
IHJlYWRBcmVhLCByZWFkU2l6ZSwgZHJhd1JUViwgZHJhd0FyZWEsIGRyYXdTaXplLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lzc29yLCBkZXN0Rm9ybWF0SW5m
by5mb3JtYXQsIGZpbHRlciwgbWFza09mZkFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmYWxzZSwgZmFsc2UpKTsKICAgICAgICAgfQogICAgIH0KIAotICAg
IFNhZmVSZWxlYXNlKHJlYWRUZXh0dXJlKTsKICAgICBTYWZlUmVsZWFzZShyZWFkU1JWKTsKIAot
ICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGJvb2wg
UmVuZGVyZXIxMTo6aXNFUzNDYXBhYmxlKCkgY29uc3QKQEAgLTQyMjgsNTIgKzQwNDIsNTcgQEAg
dm9pZCBSZW5kZXJlcjExOjp1cGRhdGVIaXN0b2dyYW1zKCkKICAgICB9CiB9CiAKLXZvaWQgUmVu
ZGVyZXIxMTo6b25CdWZmZXJEZWxldGUoY29uc3QgQnVmZmVyMTEgKmRlbGV0ZWQpCit2b2lkIFJl
bmRlcmVyMTE6Om9uQnVmZmVyQ3JlYXRlKGNvbnN0IEJ1ZmZlcjExICpjcmVhdGVkKQogewotICAg
IG1BbGl2ZUJ1ZmZlcnMuZXJhc2UoZGVsZXRlZCk7CisgICAgbUFsaXZlQnVmZmVycy5pbnNlcnQo
Y3JlYXRlZCk7CiB9CiAKLXZvaWQgUmVuZGVyZXIxMTo6b25NYWtlQ3VycmVudChjb25zdCBnbDo6
RGF0YSAmZGF0YSkKK3ZvaWQgUmVuZGVyZXIxMTo6b25CdWZmZXJEZWxldGUoY29uc3QgQnVmZmVy
MTEgKmRlbGV0ZWQpCiB7Ci0gICAgbVN0YXRlTWFuYWdlci5vbk1ha2VDdXJyZW50KGRhdGEpOwor
ICAgIG1BbGl2ZUJ1ZmZlcnMuZXJhc2UoZGVsZXRlZCk7CiB9CiAKLUlEM0QxMVRleHR1cmUyRCAq
UmVuZGVyZXIxMTo6cmVzb2x2ZU11bHRpc2FtcGxlZFRleHR1cmUoSUQzRDExVGV4dHVyZTJEICpz
b3VyY2UsIHVuc2lnbmVkIGludCBzdWJyZXNvdXJjZSkKK2dsOjpFcnJvck9yUmVzdWx0PFRleHR1
cmVIZWxwZXIxMT4KK1JlbmRlcmVyMTE6OnJlc29sdmVNdWx0aXNhbXBsZWRUZXh0dXJlKFJlbmRl
clRhcmdldDExICpyZW5kZXJUYXJnZXQsIGJvb2wgZGVwdGgsIGJvb2wgc3RlbmNpbCkKIHsKLSAg
ICBEM0QxMV9URVhUVVJFMkRfREVTQyB0ZXh0dXJlRGVzYzsKLSAgICBzb3VyY2UtPkdldERlc2Mo
JnRleHR1cmVEZXNjKTsKKyAgICBpZiAoZGVwdGggJiYgIXN0ZW5jaWwpCisgICAgeworICAgICAg
ICByZXR1cm4gbUJsaXQtPnJlc29sdmVEZXB0aChyZW5kZXJUYXJnZXQpOworICAgIH0KIAotICAg
IGlmICh0ZXh0dXJlRGVzYy5TYW1wbGVEZXNjLkNvdW50ID4gMSkKKyAgICBpZiAoc3RlbmNpbCkK
ICAgICB7Ci0gICAgICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIHJlc29sdmVEZXNjOwotICAgICAg
ICByZXNvbHZlRGVzYy5XaWR0aCA9IHRleHR1cmVEZXNjLldpZHRoOwotICAgICAgICByZXNvbHZl
RGVzYy5IZWlnaHQgPSB0ZXh0dXJlRGVzYy5IZWlnaHQ7Ci0gICAgICAgIHJlc29sdmVEZXNjLk1p
cExldmVscyA9IDE7Ci0gICAgICAgIHJlc29sdmVEZXNjLkFycmF5U2l6ZSA9IDE7Ci0gICAgICAg
IHJlc29sdmVEZXNjLkZvcm1hdCA9IHRleHR1cmVEZXNjLkZvcm1hdDsKLSAgICAgICAgcmVzb2x2
ZURlc2MuU2FtcGxlRGVzYy5Db3VudCA9IDE7Ci0gICAgICAgIHJlc29sdmVEZXNjLlNhbXBsZURl
c2MuUXVhbGl0eSA9IDA7Ci0gICAgICAgIHJlc29sdmVEZXNjLlVzYWdlID0gdGV4dHVyZURlc2Mu
VXNhZ2U7Ci0gICAgICAgIHJlc29sdmVEZXNjLkJpbmRGbGFncyA9IHRleHR1cmVEZXNjLkJpbmRG
bGFnczsKLSAgICAgICAgcmVzb2x2ZURlc2MuQ1BVQWNjZXNzRmxhZ3MgPSAwOwotICAgICAgICBy
ZXNvbHZlRGVzYy5NaXNjRmxhZ3MgPSAwOworICAgICAgICByZXR1cm4gbUJsaXQtPnJlc29sdmVT
dGVuY2lsKHJlbmRlclRhcmdldCwgZGVwdGgpOworICAgIH0KIAotICAgICAgICBJRDNEMTFUZXh0
dXJlMkQgKnJlc29sdmVUZXh0dXJlID0gTlVMTDsKLSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBt
RGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJnJlc29sdmVEZXNjLCBOVUxMLCAmcmVzb2x2ZVRleHR1
cmUpOwotICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IEVSUigiRmFpbGVkIHRvIGNyZWF0ZSBhIG11bHRpc2FtcGxlIHJlc29sdmUgdGV4dHVyZSwgSFJF
U1VMVDogMHglWC4iLCByZXN1bHQpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAg
IH0KKyAgICBjb25zdCBhdXRvICZmb3JtYXRTZXQgPSByZW5kZXJUYXJnZXQtPmdldEZvcm1hdFNl
dCgpOwogCi0gICAgICAgIG1EZXZpY2VDb250ZXh0LT5SZXNvbHZlU3VicmVzb3VyY2UocmVzb2x2
ZVRleHR1cmUsIDAsIHNvdXJjZSwgc3VicmVzb3VyY2UsIHRleHR1cmVEZXNjLkZvcm1hdCk7Ci0g
ICAgICAgIHJldHVybiByZXNvbHZlVGV4dHVyZTsKLSAgICB9Ci0gICAgZWxzZQorICAgIEFTU0VS
VChyZW5kZXJUYXJnZXQtPmdldFNhbXBsZXMoKSA+IDEpOworCisgICAgRDNEMTFfVEVYVFVSRTJE
X0RFU0MgcmVzb2x2ZURlc2M7CisgICAgcmVzb2x2ZURlc2MuV2lkdGggICAgICAgICAgICAgID0g
cmVuZGVyVGFyZ2V0LT5nZXRXaWR0aCgpOworICAgIHJlc29sdmVEZXNjLkhlaWdodCAgICAgICAg
ICAgICA9IHJlbmRlclRhcmdldC0+Z2V0SGVpZ2h0KCk7CisgICAgcmVzb2x2ZURlc2MuTWlwTGV2
ZWxzICAgICAgICAgID0gMTsKKyAgICByZXNvbHZlRGVzYy5BcnJheVNpemUgICAgICAgICAgPSAx
OworICAgIHJlc29sdmVEZXNjLkZvcm1hdCAgICAgICAgICAgICA9IGZvcm1hdFNldC50ZXhGb3Jt
YXQ7CisgICAgcmVzb2x2ZURlc2MuU2FtcGxlRGVzYy5Db3VudCAgID0gMTsKKyAgICByZXNvbHZl
RGVzYy5TYW1wbGVEZXNjLlF1YWxpdHkgPSAwOworICAgIHJlc29sdmVEZXNjLlVzYWdlICAgICAg
ICAgICAgICA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7CisgICAgcmVzb2x2ZURlc2MuQmluZEZsYWdz
ICAgICAgICAgID0gRDNEMTFfQklORF9TSEFERVJfUkVTT1VSQ0U7CisgICAgcmVzb2x2ZURlc2Mu
Q1BVQWNjZXNzRmxhZ3MgICAgID0gMDsKKyAgICByZXNvbHZlRGVzYy5NaXNjRmxhZ3MgICAgICAg
ICAgPSAwOworCisgICAgSUQzRDExVGV4dHVyZTJEICpyZXNvbHZlVGV4dHVyZSA9IG51bGxwdHI7
CisgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJnJlc29sdmVE
ZXNjLCBudWxscHRyLCAmcmVzb2x2ZVRleHR1cmUpOworICAgIGlmIChGQUlMRUQocmVzdWx0KSkK
ICAgICB7Ci0gICAgICAgIHNvdXJjZS0+QWRkUmVmKCk7Ci0gICAgICAgIHJldHVybiBzb3VyY2U7
CisgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAiRmFpbGVkIHRvIGNyZWF0ZSBhIG11bHRpc2FtcGxlIHJlc29sdmUgdGV4
dHVyZSwgSFJFU1VMVDogMHglWC4iLCByZXN1bHQpOwogICAgIH0KKworICAgIG1EZXZpY2VDb250
ZXh0LT5SZXNvbHZlU3VicmVzb3VyY2UocmVzb2x2ZVRleHR1cmUsIDAsIHJlbmRlclRhcmdldC0+
Z2V0VGV4dHVyZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVu
ZGVyVGFyZ2V0LT5nZXRTdWJyZXNvdXJjZUluZGV4KCksIGZvcm1hdFNldC50ZXhGb3JtYXQpOwor
ICAgIHJldHVybiBUZXh0dXJlSGVscGVyMTE6Ok1ha2VBbmRQb3NzZXNzMkQocmVzb2x2ZVRleHR1
cmUsIHJlbmRlclRhcmdldC0+Z2V0Rm9ybWF0U2V0KCkpOwogfQogCiBib29sIFJlbmRlcmVyMTE6
OmdldExVSUQoTFVJRCAqYWRhcHRlckx1aWQpIGNvbnN0CkBAIC00MzAzLDcgKzQxMjIsOSBAQCBW
ZXJ0ZXhDb252ZXJzaW9uVHlwZSBSZW5kZXJlcjExOjpnZXRWZXJ0CiAKIEdMZW51bSBSZW5kZXJl
cjExOjpnZXRWZXJ0ZXhDb21wb25lbnRUeXBlKGdsOjpWZXJ0ZXhGb3JtYXRUeXBlIHZlcnRleEZv
cm1hdFR5cGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGQzZDExOjpHZXREWEdJRm9ybWF0SW5mbyhk
M2QxMTo6R2V0VmVydGV4Rm9ybWF0SW5mbyh2ZXJ0ZXhGb3JtYXRUeXBlLCBtUmVuZGVyZXIxMURl
dmljZUNhcHMuZmVhdHVyZUxldmVsKS5uYXRpdmVGb3JtYXQpLmNvbXBvbmVudFR5cGU7CisgICAg
Y29uc3QgYXV0byAmZm9ybWF0ID0KKyAgICAgICAgZDNkMTE6OkdldFZlcnRleEZvcm1hdEluZm8o
dmVydGV4Rm9ybWF0VHlwZSwgbVJlbmRlcmVyMTFEZXZpY2VDYXBzLmZlYXR1cmVMZXZlbCk7Cisg
ICAgcmV0dXJuIGQzZDExOjpHZXRDb21wb25lbnRUeXBlKGZvcm1hdC5uYXRpdmVGb3JtYXQpOwog
fQogCiBnbDo6RXJyb3JPclJlc3VsdDx1bnNpZ25lZCBpbnQ+IFJlbmRlcmVyMTE6OmdldFZlcnRl
eFNwYWNlUmVxdWlyZWQoCkBAIC00MzUxLDIxICs0MTcyLDcgQEAgdm9pZCBSZW5kZXJlcjExOjpn
ZW5lcmF0ZUNhcHMoZ2w6OkNhcHMgKgogCiBXb3JrYXJvdW5kc0QzRCBSZW5kZXJlcjExOjpnZW5l
cmF0ZVdvcmthcm91bmRzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZDNkMTE6OkdlbmVyYXRlV29y
a2Fyb3VuZHMobVJlbmRlcmVyMTFEZXZpY2VDYXBzLmZlYXR1cmVMZXZlbCk7Ci19Ci0KLXZvaWQg
UmVuZGVyZXIxMTo6Y3JlYXRlQW5ub3RhdG9yKCkKLXsKLSAgICAvLyBUaGUgRDNEMTEgcmVuZGVy
ZXIgbXVzdCBjaG9vc2UgdGhlIEQzRDkgZGVidWcgYW5ub3RhdG9yIGJlY2F1c2UgdGhlIEQzRDEx
IGludGVyZmFjZQotICAgIC8vIG1ldGhvZCBJRDNEVXNlckRlZmluZWRBbm5vdGF0aW9uOjpHZXRT
dGF0dXMgb24gZGVza3RvcCBidWlsZHMgZG9lc24ndCB3b3JrIHdpdGggdGhlIEdyYXBoaWNzCi0g
ICAgLy8gRGlhZ25vc3RpY3MgdG9vbHMgaW4gVmlzdWFsIFN0dWRpbyAyMDEzLgotICAgIC8vIFRo
ZSBEM0Q5IGFubm90YXRvciB3b3JrcyBwcm9wZXJseSBmb3IgYm90aCBEM0QxMSBhbmQgRDNEOS4K
LSAgICAvLyBJbmNvcnJlY3Qgc3RhdHVzIHJlcG9ydGluZyBjYW4gY2F1c2UgQU5HTEUgdG8gbG9n
IHVubmVjZXNzYXJ5IGRlYnVnIGV2ZW50cy4KLSNpZmRlZiBBTkdMRV9FTkFCTEVfRDNEOQotICAg
IG1Bbm5vdGF0b3IgPSBuZXcgRGVidWdBbm5vdGF0b3I5KCk7Ci0jZWxzZQotICAgIG1Bbm5vdGF0
b3IgPSBuZXcgRGVidWdBbm5vdGF0b3IxMSgpOwotI2VuZGlmCisgICAgcmV0dXJuIGQzZDExOjpH
ZW5lcmF0ZVdvcmthcm91bmRzKG1SZW5kZXJlcjExRGV2aWNlQ2FwcywgbUFkYXB0ZXJEZXNjcmlw
dGlvbik7CiB9CiAKIGdsOjpFcnJvciBSZW5kZXJlcjExOjpjbGVhclRleHR1cmVzKGdsOjpTYW1w
bGVyVHlwZSBzYW1wbGVyVHlwZSwgc2l6ZV90IHJhbmdlU3RhcnQsIHNpemVfdCByYW5nZUVuZCkK
QEAgLTQzOTMsNCArNDIwMCwxNDYgQEAgZWdsOjpFcnJvciBSZW5kZXJlcjExOjpnZXRFR0xEZXZp
Y2UoRGV2aQogICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKIH0KIAorQ29udGV4
dEltcGwgKlJlbmRlcmVyMTE6OmNyZWF0ZUNvbnRleHQoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAm
c3RhdGUpCit7CisgICAgcmV0dXJuIG5ldyBDb250ZXh0MTEoc3RhdGUsIHRoaXMpOworfQorCitn
bDo6RXJyb3IgUmVuZGVyZXIxMTo6Z2VuZXJpY0RyYXdFbGVtZW50cyhDb250ZXh0MTEgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9k
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9p
ZCAqaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgaW5zdGFuY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpCit7CisgICAgY29uc3QgYXV0byAm
ZGF0YSAgICAgPSBjb250ZXh0LT5nZXRDb250ZXh0U3RhdGUoKTsKKyAgICBjb25zdCBhdXRvICZn
bFN0YXRlICA9IGRhdGEuZ2V0U3RhdGUoKTsKKyAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbSA9IGds
U3RhdGUuZ2V0UHJvZ3JhbSgpOworICAgIEFTU0VSVChwcm9ncmFtICE9IG51bGxwdHIpOworICAg
IFByb2dyYW1EM0QgKnByb2dyYW1EM0QgPSBHZXRJbXBsQXM8UHJvZ3JhbUQzRD4ocHJvZ3JhbSk7
CisgICAgYm9vbCB1c2VzUG9pbnRTaXplICAgICA9IHByb2dyYW1EM0QtPnVzZXNQb2ludFNpemUo
KTsKKworICAgIHByb2dyYW1EM0QtPnVwZGF0ZVNhbXBsZXJNYXBwaW5nKCk7CisKKyAgICBBTkdM
RV9UUlkoZ2VuZXJhdGVTd2l6emxlcyhkYXRhKSk7CisKKyAgICBpZiAoIWFwcGx5UHJpbWl0aXZl
VHlwZShtb2RlLCBjb3VudCwgdXNlc1BvaW50U2l6ZSkpCisgICAgeworICAgICAgICByZXR1cm4g
Z2w6Ok5vRXJyb3IoKTsKKyAgICB9CisKKyAgICBBTkdMRV9UUlkodXBkYXRlU3RhdGUoZGF0YSwg
bW9kZSkpOworCisgICAgVHJhbnNsYXRlZEluZGV4RGF0YSBpbmRleEluZm87CisgICAgaW5kZXhJ
bmZvLmluZGV4UmFuZ2UgPSBpbmRleFJhbmdlOworCisgICAgQU5HTEVfVFJZKGFwcGx5SW5kZXhC
dWZmZXIoZGF0YSwgaW5kaWNlcywgY291bnQsIG1vZGUsIHR5cGUsICZpbmRleEluZm8pKTsKKwor
ICAgIGFwcGx5VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzKGRhdGEpOworICAgIC8vIFRyYW5zZm9y
bSBmZWVkYmFjayBpcyBub3QgYWxsb3dlZCBmb3IgRHJhd0VsZW1lbnRzLCB0aGlzIGVycm9yIHNo
b3VsZCBoYXZlIGJlZW4gY2F1Z2h0IGF0IHRoZQorICAgIC8vIEFQSSB2YWxpZGF0aW9uIGxheWVy
LgorICAgIEFTU0VSVCghZ2xTdGF0ZS5pc1RyYW5zZm9ybUZlZWRiYWNrQWN0aXZlVW5wYXVzZWQo
KSk7CisKKyAgICBzaXplX3QgdmVydGV4Q291bnQgPSBpbmRleEluZm8uaW5kZXhSYW5nZS52ZXJ0
ZXhDb3VudCgpOworICAgIEFOR0xFX1RSWShhcHBseVZlcnRleEJ1ZmZlcihnbFN0YXRlLCBtb2Rl
LCBzdGF0aWNfY2FzdDxHTHNpemVpPihpbmRleEluZm8uaW5kZXhSYW5nZS5zdGFydCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHZlcnRleENv
dW50KSwgaW5zdGFuY2VzLCAmaW5kZXhJbmZvKSk7CisgICAgQU5HTEVfVFJZKGFwcGx5VGV4dHVy
ZXMoY29udGV4dCwgZGF0YSkpOworICAgIEFOR0xFX1RSWShhcHBseVNoYWRlcnMoZGF0YSwgbW9k
ZSkpOworICAgIEFOR0xFX1RSWShwcm9ncmFtRDNELT5hcHBseVVuaWZvcm1CdWZmZXJzKGRhdGEp
KTsKKworICAgIGlmICghc2tpcERyYXcoZGF0YSwgbW9kZSkpCisgICAgeworICAgICAgICBBTkdM
RV9UUlkoZHJhd0VsZW1lbnRzSW1wbChkYXRhLCBpbmRleEluZm8sIG1vZGUsIGNvdW50LCB0eXBl
LCBpbmRpY2VzLCBpbnN0YW5jZXMpKTsKKyAgICB9CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3Io
KTsKK30KKworZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmdlbmVyaWNEcmF3QXJyYXlzKENvbnRleHQx
MSAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBm
aXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5z
dGFuY2VzKQoreworICAgIGNvbnN0IGF1dG8gJmRhdGEgICAgID0gY29udGV4dC0+Z2V0Q29udGV4
dFN0YXRlKCk7CisgICAgY29uc3QgYXV0byAmZ2xTdGF0ZSAgPSBkYXRhLmdldFN0YXRlKCk7Cisg
ICAgZ2w6OlByb2dyYW0gKnByb2dyYW0gPSBnbFN0YXRlLmdldFByb2dyYW0oKTsKKyAgICBBU1NF
UlQocHJvZ3JhbSAhPSBudWxscHRyKTsKKyAgICBQcm9ncmFtRDNEICpwcm9ncmFtRDNEID0gR2V0
SW1wbEFzPFByb2dyYW1EM0Q+KHByb2dyYW0pOworICAgIGJvb2wgdXNlc1BvaW50U2l6ZSAgICAg
PSBwcm9ncmFtRDNELT51c2VzUG9pbnRTaXplKCk7CisKKyAgICBwcm9ncmFtRDNELT51cGRhdGVT
YW1wbGVyTWFwcGluZygpOworCisgICAgQU5HTEVfVFJZKGdlbmVyYXRlU3dpenpsZXMoZGF0YSkp
OworICAgIGlmICghYXBwbHlQcmltaXRpdmVUeXBlKG1vZGUsIGNvdW50LCB1c2VzUG9pbnRTaXpl
KSkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworICAgIH0KKworICAgIEFO
R0xFX1RSWSh1cGRhdGVTdGF0ZShkYXRhLCBtb2RlKSk7CisgICAgQU5HTEVfVFJZKGFwcGx5VHJh
bnNmb3JtRmVlZGJhY2tCdWZmZXJzKGRhdGEpKTsKKyAgICBBTkdMRV9UUlkoYXBwbHlWZXJ0ZXhC
dWZmZXIoZ2xTdGF0ZSwgbW9kZSwgZmlyc3QsIGNvdW50LCBpbnN0YW5jZXMsIG51bGxwdHIpKTsK
KyAgICBBTkdMRV9UUlkoYXBwbHlUZXh0dXJlcyhjb250ZXh0LCBkYXRhKSk7CisgICAgQU5HTEVf
VFJZKGFwcGx5U2hhZGVycyhkYXRhLCBtb2RlKSk7CisgICAgQU5HTEVfVFJZKHByb2dyYW1EM0Qt
PmFwcGx5VW5pZm9ybUJ1ZmZlcnMoZGF0YSkpOworCisgICAgaWYgKCFza2lwRHJhdyhkYXRhLCBt
b2RlKSkKKyAgICB7CisgICAgICAgIEFOR0xFX1RSWShkcmF3QXJyYXlzSW1wbChkYXRhLCBtb2Rl
LCBmaXJzdCwgY291bnQsIGluc3RhbmNlcykpOworCisgICAgICAgIGlmIChnbFN0YXRlLmlzVHJh
bnNmb3JtRmVlZGJhY2tBY3RpdmVVbnBhdXNlZCgpKQorICAgICAgICB7CisgICAgICAgICAgICBB
TkdMRV9UUlkobWFya1RyYW5zZm9ybUZlZWRiYWNrVXNhZ2UoZGF0YSkpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CisKK0ZyYW1lYnVmZmVySW1wbCAq
UmVuZGVyZXIxMTo6Y3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZl
clN0YXRlICZzdGF0ZSkKK3sKKyAgICByZXR1cm4gbmV3IEZyYW1lYnVmZmVyMTEoc3RhdGUsIHRo
aXMpOworfQorCitnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Z2V0U2NyYXRjaE1lbW9yeUJ1ZmZlcihz
aXplX3QgcmVxdWVzdGVkU2l6ZSwgTWVtb3J5QnVmZmVyICoqYnVmZmVyT3V0KQoreworICAgIGlm
IChtU2NyYXRjaE1lbW9yeUJ1ZmZlci5zaXplKCkgPT0gcmVxdWVzdGVkU2l6ZSkKKyAgICB7Cisg
ICAgICAgIG1TY3JhdGNoTWVtb3J5QnVmZmVyUmVzZXRDb3VudGVyID0gU2NyYXRjaE1lbW9yeUJ1
ZmZlckxpZmV0aW1lOworICAgICAgICAqYnVmZmVyT3V0ID0gJm1TY3JhdGNoTWVtb3J5QnVmZmVy
OworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKKyAgICB9CisKKyAgICBpZiAobVNjcmF0
Y2hNZW1vcnlCdWZmZXIuc2l6ZSgpID4gcmVxdWVzdGVkU2l6ZSkKKyAgICB7CisgICAgICAgIG1T
Y3JhdGNoTWVtb3J5QnVmZmVyUmVzZXRDb3VudGVyLS07CisgICAgfQorCisgICAgaWYgKG1TY3Jh
dGNoTWVtb3J5QnVmZmVyUmVzZXRDb3VudGVyIDw9IDAgfHwgbVNjcmF0Y2hNZW1vcnlCdWZmZXIu
c2l6ZSgpIDwgcmVxdWVzdGVkU2l6ZSkKKyAgICB7CisgICAgICAgIG1TY3JhdGNoTWVtb3J5QnVm
ZmVyLnJlc2l6ZSgwKTsKKyAgICAgICAgaWYgKCFtU2NyYXRjaE1lbW9yeUJ1ZmZlci5yZXNpemUo
cmVxdWVzdGVkU2l6ZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBhbGxvY2F0ZSBpbnRlcm5hbCBidWZmZXIuIik7
CisgICAgICAgIH0KKyAgICAgICAgbVNjcmF0Y2hNZW1vcnlCdWZmZXJSZXNldENvdW50ZXIgPSBT
Y3JhdGNoTWVtb3J5QnVmZmVyTGlmZXRpbWU7CisgICAgfQorCisgICAgQVNTRVJUKG1TY3JhdGNo
TWVtb3J5QnVmZmVyLnNpemUoKSA+PSByZXF1ZXN0ZWRTaXplKTsKKworICAgICpidWZmZXJPdXQg
PSAmbVNjcmF0Y2hNZW1vcnlCdWZmZXI7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CisK
K2dsOjpWZXJzaW9uIFJlbmRlcmVyMTE6OmdldE1heFN1cHBvcnRlZEVTVmVyc2lvbigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGdsOjpWZXJzaW9uKGQzZDExX2dsOjpHZXRNYXhpbXVtQ2xpZW50VmVy
c2lvbihtUmVuZGVyZXIxMURldmljZUNhcHMuZmVhdHVyZUxldmVsKSwgMCk7Cit9CisKK2dsOjpE
ZWJ1Z0Fubm90YXRvciAqUmVuZGVyZXIxMTo6Z2V0QW5ub3RhdG9yKCkKK3sKKyAgICByZXR1cm4g
bUFubm90YXRvcjsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlcmVyMTEuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL1JlbmRlcmVyMTEuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjEx
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE3ICszMSwxNyBAQCBzdHJ1Y3QgSW1hZ2VJbmRleDsK
IAogbmFtZXNwYWNlIHJ4CiB7Ci0KLWNsYXNzIFZlcnRleERhdGFNYW5hZ2VyOwotY2xhc3MgSW5k
ZXhEYXRhTWFuYWdlcjsKLWNsYXNzIFN0cmVhbWluZ0luZGV4QnVmZmVySW50ZXJmYWNlOwogY2xh
c3MgQmxpdDExOwogY2xhc3MgQnVmZmVyMTE7CiBjbGFzcyBDbGVhcjExOworY2xhc3MgQ29udGV4
dDExOworY2xhc3MgSW5kZXhEYXRhTWFuYWdlcjsKK3N0cnVjdCBQYWNrUGl4ZWxzUGFyYW1zOwog
Y2xhc3MgUGl4ZWxUcmFuc2ZlcjExOwogY2xhc3MgUmVuZGVyVGFyZ2V0MTE7CitjbGFzcyBTdHJl
YW1pbmdJbmRleEJ1ZmZlckludGVyZmFjZTsKIGNsYXNzIFRyaW0xMTsKLXN0cnVjdCBQYWNrUGl4
ZWxzUGFyYW1zOworY2xhc3MgVmVydGV4RGF0YU1hbmFnZXI7CiAKIHN0cnVjdCBSZW5kZXJlcjEx
RGV2aWNlQ2FwcwogewpAQCAtNTIsNiArNTIsNyBAQCBzdHJ1Y3QgUmVuZGVyZXIxMURldmljZUNh
cHMKICAgICBVSU5UIEI1RzZSNXN1cHBvcnQ7ICAgICAgICAgICAgICAgICAvLyBCaXRmaWVsZCBv
ZiBEM0QxMV9GT1JNQVRfU1VQUE9SVCB2YWx1ZXMgZm9yIERYR0lfRk9STUFUX0I1RzZSNV9VTk9S
TQogICAgIFVJTlQgQjRHNFI0QTRzdXBwb3J0OyAgICAgICAgICAgICAgIC8vIEJpdGZpZWxkIG9m
IEQzRDExX0ZPUk1BVF9TVVBQT1JUIHZhbHVlcyBmb3IgRFhHSV9GT1JNQVRfQjRHNFI0QTRfVU5P
Uk0KICAgICBVSU5UIEI1RzVSNUExc3VwcG9ydDsgICAgICAgICAgICAgICAvLyBCaXRmaWVsZCBv
ZiBEM0QxMV9GT1JNQVRfU1VQUE9SVCB2YWx1ZXMgZm9yIERYR0lfRk9STUFUX0I1RzVSNUExX1VO
T1JNCisgICAgT3B0aW9uYWw8TEFSR0VfSU5URUdFUj4gZHJpdmVyVmVyc2lvbjsgIC8vIEZvdXIt
cGFydCBkcml2ZXIgdmVyc2lvbiBudW1iZXIuCiB9OwogCiBlbnVtCkBAIC0xMDUsOTAgKzEwNiwx
MjggQEAgY2xhc3MgUmVuZGVyZXIxMSA6IHB1YmxpYyBSZW5kZXJlckQzRAogICAgIHZpcnR1YWwg
flJlbmRlcmVyMTEoKTsKIAogICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgYm9vbCByZXNldERldmljZSgpOworICAgIGJvb2wgcmVzZXREZXZpY2UoKSBv
dmVycmlkZTsKIAotICAgIGVnbDo6Q29uZmlnU2V0IGdlbmVyYXRlQ29uZmlncygpIGNvbnN0IG92
ZXJyaWRlOworICAgIGVnbDo6Q29uZmlnU2V0IGdlbmVyYXRlQ29uZmlncygpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZ2VuZXJhdGVEaXNwbGF5RXh0ZW5zaW9ucyhlZ2w6OkRpc3BsYXlFeHRlbnNpb25z
ICpvdXRFeHRlbnNpb25zKSBjb25zdCBvdmVycmlkZTsKIAotICAgIGdsOjpFcnJvciBmbHVzaCgp
IG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBmaW5pc2goKSBvdmVycmlkZTsKKyAgICBDb250ZXh0
SW1wbCAqY3JlYXRlQ29udGV4dChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZzdGF0ZSkgb3ZlcnJp
ZGU7CiAKLSAgICBTd2FwQ2hhaW5EM0QgKmNyZWF0ZVN3YXBDaGFpbihOYXRpdmVXaW5kb3cgbmF0
aXZlV2luZG93LAorICAgIGdsOjpFcnJvciBmbHVzaCgpOworICAgIGdsOjpFcnJvciBmaW5pc2go
KTsKKworICAgIGJvb2wgaXNWYWxpZE5hdGl2ZVdpbmRvdyhFR0xOYXRpdmVXaW5kb3dUeXBlIHdp
bmRvdykgY29uc3Qgb3ZlcnJpZGU7CisgICAgTmF0aXZlV2luZG93RDNEICpjcmVhdGVOYXRpdmVX
aW5kb3coRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0
cmlicykgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBTd2FwQ2hhaW5EM0QgKmNyZWF0ZVN3YXBDaGFp
bihOYXRpdmVXaW5kb3dEM0QgKm5hdGl2ZVdpbmRvdywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBIQU5ETEUgc2hhcmVIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGJhY2tCdWZmZXJGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGRlcHRoQnVmZmVyRm9ybWF0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEVHTGludCBvcmllbnRhdGlvbikgb3ZlcnJpZGU7CiAKLSAgICBDb21w
aWxlckltcGwgKmNyZWF0ZUNvbXBpbGVyKCkgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIGdsOjpF
cnJvciBnZW5lcmF0ZVN3aXp6bGUoZ2w6OlRleHR1cmUgKnRleHR1cmUpOwotICAgIHZpcnR1YWwg
Z2w6OkVycm9yIHNldFNhbXBsZXJTdGF0ZShnbDo6U2FtcGxlclR5cGUgdHlwZSwgaW50IGluZGV4
LCBnbDo6VGV4dHVyZSAqdGV4dHVyZSwgY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmc2FtcGxlcik7
Ci0gICAgdmlydHVhbCBnbDo6RXJyb3Igc2V0VGV4dHVyZShnbDo6U2FtcGxlclR5cGUgdHlwZSwg
aW50IGluZGV4LCBnbDo6VGV4dHVyZSAqdGV4dHVyZSk7CisgICAgZ2w6OkVycm9yIHNldFNhbXBs
ZXJTdGF0ZShnbDo6U2FtcGxlclR5cGUgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJl
ICp0ZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlNhbXBs
ZXJTdGF0ZSAmc2FtcGxlcikgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHNldFRleHR1cmUoZ2w6
OlNhbXBsZXJUeXBlIHR5cGUsIGludCBpbmRleCwgZ2w6OlRleHR1cmUgKnRleHR1cmUpIG92ZXJy
aWRlOwogCi0gICAgZ2w6OkVycm9yIHNldFVuaWZvcm1CdWZmZXJzKGNvbnN0IGdsOjpEYXRhICZk
YXRhLAorICAgIGdsOjpFcnJvciBzZXRVbmlmb3JtQnVmZmVycyhjb25zdCBnbDo6Q29udGV4dFN0
YXRlICZkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZl
Y3RvcjxHTGludD4gJnZlcnRleFVuaWZvcm1CdWZmZXJzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxHTGludD4gJmZyYWdtZW50VW5pZm9ybUJ1ZmZl
cnMpIG92ZXJyaWRlOwogCi0gICAgZ2w6OkVycm9yIHVwZGF0ZVN0YXRlKGNvbnN0IGdsOjpEYXRh
ICZkYXRhLCBHTGVudW0gZHJhd01vZGUpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciB1cGRhdGVT
dGF0ZShjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLCBHTGVudW0gZHJhd01vZGUpOwogCi0g
ICAgdmlydHVhbCBib29sIGFwcGx5UHJpbWl0aXZlVHlwZShHTGVudW0gbW9kZSwgR0xzaXplaSBj
b3VudCwgYm9vbCB1c2VzUG9pbnRTaXplKTsKLSAgICBnbDo6RXJyb3IgYXBwbHlSZW5kZXJUYXJn
ZXQoY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZUJ1ZmZlcikgb3ZlcnJpZGU7CisgICAgYm9v
bCBhcHBseVByaW1pdGl2ZVR5cGUoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIGJvb2wgdXNl
c1BvaW50U2l6ZSk7CisgICAgZ2w6OkVycm9yIGFwcGx5UmVuZGVyVGFyZ2V0KGdsOjpGcmFtZWJ1
ZmZlciAqZnJhbWVCdWZmZXIpOwogICAgIGdsOjpFcnJvciBhcHBseVVuaWZvcm1zKGNvbnN0IFBy
b2dyYW1EM0QgJnByb2dyYW1EM0QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGRyYXdNb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9y
PEQzRFVuaWZvcm0gKj4gJnVuaWZvcm1BcnJheSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBnbDo6
RXJyb3IgYXBwbHlWZXJ0ZXhCdWZmZXIoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBmaXJzdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZWRJbmRleERhdGEgKmluZGV4SW5m
byk7Ci0gICAgZ2w6OkVycm9yIGFwcGx5SW5kZXhCdWZmZXIoY29uc3QgZ2w6OkRhdGEgJmRhdGEs
CisgICAgZ2w6OkVycm9yIGFwcGx5VmVydGV4QnVmZmVyKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBmaXJzdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBpbnN0YW5jZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRy
YW5zbGF0ZWRJbmRleERhdGEgKmluZGV4SW5mbyk7CisgICAgZ2w6OkVycm9yIGFwcGx5SW5kZXhC
dWZmZXIoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGVkSW5kZXhEYXRhICppbmRl
eEluZm8pIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBhcHBseVRyYW5zZm9ybUZlZWRiYWNrQnVm
ZmVycyhjb25zdCBnbDo6U3RhdGUgJnN0YXRlKSBvdmVycmlkZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUcmFuc2xhdGVkSW5kZXhEYXRhICppbmRleEluZm8pOworICAgIGdsOjpF
cnJvciBhcHBseVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVycyhjb25zdCBnbDo6Q29udGV4dFN0YXRl
ICZkYXRhKTsKIAogICAgIC8vIGxvc3QgZGV2aWNlCiAgICAgYm9vbCB0ZXN0RGV2aWNlTG9zdCgp
IG92ZXJyaWRlOwogICAgIGJvb2wgdGVzdERldmljZVJlc2V0dGFibGUoKSBvdmVycmlkZTsKIAot
ICAgIHN0ZDo6c3RyaW5nIGdldFJlbmRlcmVyRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsK
KyAgICBzdGQ6OnN0cmluZyBnZXRSZW5kZXJlckRlc2NyaXB0aW9uKCkgY29uc3Q7CiAgICAgRGV2
aWNlSWRlbnRpZmllciBnZXRBZGFwdGVySWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlOwogCi0g
ICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0UmVzZXJ2ZWRWZXJ0ZXhVbmlmb3JtVmVjdG9ycygp
IGNvbnN0OwotICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFJlc2VydmVkRnJhZ21lbnRVbmlm
b3JtVmVjdG9ycygpIGNvbnN0OwotICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFJlc2VydmVk
VmVydGV4VW5pZm9ybUJ1ZmZlcnMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBn
ZXRSZXNlcnZlZEZyYWdtZW50VW5pZm9ybUJ1ZmZlcnMoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBp
bnQgZ2V0UmVzZXJ2ZWRWZXJ0ZXhVbmlmb3JtVmVjdG9ycygpIGNvbnN0OworICAgIHVuc2lnbmVk
IGludCBnZXRSZXNlcnZlZEZyYWdtZW50VW5pZm9ybVZlY3RvcnMoKSBjb25zdDsKKyAgICB1bnNp
Z25lZCBpbnQgZ2V0UmVzZXJ2ZWRWZXJ0ZXhVbmlmb3JtQnVmZmVycygpIGNvbnN0IG92ZXJyaWRl
OworICAgIHVuc2lnbmVkIGludCBnZXRSZXNlcnZlZEZyYWdtZW50VW5pZm9ybUJ1ZmZlcnMoKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgZ2V0U2hhcmVIYW5kbGVTdXBwb3J0KCkgY29uc3Q7
CiAKLSAgICB2aXJ0dWFsIGludCBnZXRNYWpvclNoYWRlck1vZGVsKCkgY29uc3Q7CisgICAgYm9v
bCBnZXROVjEyVGV4dHVyZVN1cHBvcnQoKSBjb25zdDsKKworICAgIGludCBnZXRNYWpvclNoYWRl
ck1vZGVsKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgaW50IGdldE1pbm9yU2hhZGVyTW9kZWwoKSBj
b25zdCBvdmVycmlkZTsKICAgICBzdGQ6OnN0cmluZyBnZXRTaGFkZXJNb2RlbFN1ZmZpeCgpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgLy8gUGl4ZWwgb3BlcmF0aW9ucwotICAgIHZpcnR1YWwgZ2w6
OkVycm9yIGNvcHlJbWFnZTJEKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIGNv
bnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQs
IFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLCBHTGludCBsZXZlbCk7Ci0gICAgdmlydHVhbCBnbDo6
RXJyb3IgY29weUltYWdlQ3ViZShjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBj
b25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZz
ZXQsIFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCk7
Ci0gICAgdmlydHVhbCBnbDo6RXJyb3IgY29weUltYWdlM0QoY29uc3QgZ2w6OkZyYW1lYnVmZmVy
ICpmcmFtZWJ1ZmZlciwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlUmVjdCwgR0xlbnVtIGRl
c3RGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9m
ZnNldCAmZGVzdE9mZnNldCwgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsIEdMaW50IGxldmVsKTsK
LSAgICB2aXJ0dWFsIGdsOjpFcnJvciBjb3B5SW1hZ2UyREFycmF5KGNvbnN0IGdsOjpGcmFtZWJ1
ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZVJlY3QsIEdMZW51
bSBkZXN0Rm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsIEdMaW50
IGxldmVsKTsKKyAgICBnbDo6RXJyb3IgY29weUltYWdlMkQoY29uc3QgZ2w6OkZyYW1lYnVmZmVy
ICpmcmFtZWJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3Rh
bmdsZSAmc291cmNlUmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RG
b3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RP
ZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVTdG9yYWdlICpzdG9yYWdl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCkgb3ZlcnJpZGU7CisgICAg
Z2w6OkVycm9yIGNvcHlJbWFnZUN1YmUoY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3Vy
Y2VSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0Rm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsZXZlbCkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGNvcHlJ
bWFnZTNEKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZVJlY3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbGV2ZWwpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBjb3B5SW1hZ2UyREFycmF5KGNv
bnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlUmVjdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxldmVsKSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBj
b3B5VGV4dHVyZShjb25zdCBnbDo6VGV4dHVyZSAqc291cmNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBzb3VyY2VMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlUmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGRlc3RGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpP
ZmZzZXQgJmRlc3RPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVTdG9y
YWdlICpzdG9yYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkZXN0TGV2ZWws
CisgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrRmxpcFksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tVbm11bHRpcGx5QWxwaGEpIG92ZXJyaWRlOworICAg
IGdsOjpFcnJvciBjb3B5Q29tcHJlc3NlZFRleHR1cmUoY29uc3QgZ2w6OlRleHR1cmUgKnNvdXJj
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNvdXJjZUxldmVs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVN0b3JhZ2UgKnN0
b3JhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkZXN0TGV2
ZWwpIG92ZXJyaWRlOwogCiAgICAgLy8gUmVuZGVyVGFyZ2V0IGNyZWF0aW9uCi0gICAgdmlydHVh
bCBnbDo6RXJyb3IgY3JlYXRlUmVuZGVyVGFyZ2V0KGludCB3aWR0aCwgaW50IGhlaWdodCwgR0xl
bnVtIGZvcm1hdCwgR0xzaXplaSBzYW1wbGVzLCBSZW5kZXJUYXJnZXREM0QgKipvdXRSVCk7Cisg
ICAgZ2w6OkVycm9yIGNyZWF0ZVJlbmRlclRhcmdldChpbnQgd2lkdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgc2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRl
clRhcmdldEQzRCAqKm91dFJUKSBvdmVycmlkZTsKICAgICBnbDo6RXJyb3IgY3JlYXRlUmVuZGVy
VGFyZ2V0Q29weShSZW5kZXJUYXJnZXREM0QgKnNvdXJjZSwgUmVuZGVyVGFyZ2V0RDNEICoqb3V0
UlQpIG92ZXJyaWRlOwogCi0gICAgLy8gRnJhbWVidWZmZXIgY3JlYXRpb24KLSAgICBGcmFtZWJ1
ZmZlckltcGwgKmNyZWF0ZUZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGF0YSAm
ZGF0YSkgb3ZlcnJpZGU7Ci0KLSAgICAvLyBTaGFkZXIgY3JlYXRpb24KLSAgICBTaGFkZXJJbXBs
ICpjcmVhdGVTaGFkZXIoY29uc3QgZ2w6OlNoYWRlcjo6RGF0YSAmZGF0YSkgb3ZlcnJpZGU7Ci0g
ICAgUHJvZ3JhbUltcGwgKmNyZWF0ZVByb2dyYW0oY29uc3QgZ2w6OlByb2dyYW06OkRhdGEgJmRh
dGEpIG92ZXJyaWRlOwotCiAgICAgLy8gU2hhZGVyIG9wZXJhdGlvbnMKICAgICBnbDo6RXJyb3Ig
bG9hZEV4ZWN1dGFibGUoY29uc3Qgdm9pZCAqZnVuY3Rpb24sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBsZW5ndGgsCkBAIC0yMDYsNTggKzI0NSw2OSBAQCBjbGFzcyBSZW5k
ZXJlcjExIDogcHVibGljIFJlbmRlcmVyRDNECiAgICAgVW5pZm9ybVN0b3JhZ2VEM0QgKmNyZWF0
ZVVuaWZvcm1TdG9yYWdlKHNpemVfdCBzdG9yYWdlU2l6ZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBJ
bWFnZSBvcGVyYXRpb25zCi0gICAgdmlydHVhbCBJbWFnZUQzRCAqY3JlYXRlSW1hZ2UoKTsKKyAg
ICBJbWFnZUQzRCAqY3JlYXRlSW1hZ2UoKSBvdmVycmlkZTsKICAgICBnbDo6RXJyb3IgZ2VuZXJh
dGVNaXBtYXAoSW1hZ2VEM0QgKmRlc3QsIEltYWdlRDNEICpzb3VyY2UpIG92ZXJyaWRlOwotICAg
IGdsOjpFcnJvciBnZW5lcmF0ZU1pcG1hcHNVc2luZ0QzRChUZXh0dXJlU3RvcmFnZSAqc3RvcmFn
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlRleHR1
cmVTdGF0ZSAmdGV4dHVyZVN0YXRlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFRleHR1cmVTdG9y
YWdlICpjcmVhdGVUZXh0dXJlU3RvcmFnZTJEKFN3YXBDaGFpbkQzRCAqc3dhcENoYWluKTsKLSAg
ICBUZXh0dXJlU3RvcmFnZSAqY3JlYXRlVGV4dHVyZVN0b3JhZ2VFR0xJbWFnZShFR0xJbWFnZUQz
RCAqZWdsSW1hZ2UpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgVGV4dHVyZVN0b3JhZ2UgKmNyZWF0
ZVRleHR1cmVTdG9yYWdlMkQoR0xlbnVtIGludGVybmFsZm9ybWF0LCBib29sIHJlbmRlclRhcmdl
dCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIGludCBsZXZlbHMsIGJvb2wgaGludExl
dmVsWmVyb09ubHkpOwotICAgIHZpcnR1YWwgVGV4dHVyZVN0b3JhZ2UgKmNyZWF0ZVRleHR1cmVT
dG9yYWdlQ3ViZShHTGVudW0gaW50ZXJuYWxmb3JtYXQsIGJvb2wgcmVuZGVyVGFyZ2V0LCBpbnQg
c2l6ZSwgaW50IGxldmVscywgYm9vbCBoaW50TGV2ZWxaZXJvT25seSk7Ci0gICAgdmlydHVhbCBU
ZXh0dXJlU3RvcmFnZSAqY3JlYXRlVGV4dHVyZVN0b3JhZ2UzRChHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIGJvb2wgcmVuZGVyVGFyZ2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xz
aXplaSBkZXB0aCwgaW50IGxldmVscyk7Ci0gICAgdmlydHVhbCBUZXh0dXJlU3RvcmFnZSAqY3Jl
YXRlVGV4dHVyZVN0b3JhZ2UyREFycmF5KEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgYm9vbCByZW5k
ZXJUYXJnZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBp
bnQgbGV2ZWxzKTsKLQotICAgIC8vIFRleHR1cmUgY3JlYXRpb24KLSAgICB2aXJ0dWFsIFRleHR1
cmVJbXBsICpjcmVhdGVUZXh0dXJlKEdMZW51bSB0YXJnZXQpOwotCi0gICAgLy8gUmVuZGVyYnVm
ZmVyIGNyZWF0aW9uCi0gICAgdmlydHVhbCBSZW5kZXJidWZmZXJJbXBsICpjcmVhdGVSZW5kZXJi
dWZmZXIoKTsKLQotICAgIC8vIEJ1ZmZlciBjcmVhdGlvbgotICAgIHZpcnR1YWwgQnVmZmVySW1w
bCAqY3JlYXRlQnVmZmVyKCk7Ci0gICAgdmlydHVhbCBWZXJ0ZXhCdWZmZXIgKmNyZWF0ZVZlcnRl
eEJ1ZmZlcigpOwotICAgIHZpcnR1YWwgSW5kZXhCdWZmZXIgKmNyZWF0ZUluZGV4QnVmZmVyKCk7
Ci0KLSAgICAvLyBWZXJ0ZXggQXJyYXkgY3JlYXRpb24KLSAgICBWZXJ0ZXhBcnJheUltcGwgKmNy
ZWF0ZVZlcnRleEFycmF5KGNvbnN0IGdsOjpWZXJ0ZXhBcnJheTo6RGF0YSAmZGF0YSkgb3ZlcnJp
ZGU7Ci0KLSAgICAvLyBRdWVyeSBhbmQgRmVuY2UgY3JlYXRpb24KLSAgICB2aXJ0dWFsIFF1ZXJ5
SW1wbCAqY3JlYXRlUXVlcnkoR0xlbnVtIHR5cGUpOwotICAgIHZpcnR1YWwgRmVuY2VOVkltcGwg
KmNyZWF0ZUZlbmNlTlYoKTsKLSAgICB2aXJ0dWFsIEZlbmNlU3luY0ltcGwgKmNyZWF0ZUZlbmNl
U3luYygpOworICAgIGdsOjpFcnJvciBnZW5lcmF0ZU1pcG1hcFVzaW5nRDNEKFRleHR1cmVTdG9y
YWdlICpzdG9yYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpUZXh0dXJlU3RhdGUgJnRleHR1cmVTdGF0ZSkgb3ZlcnJpZGU7CisgICAgVGV4dHVyZVN0
b3JhZ2UgKmNyZWF0ZVRleHR1cmVTdG9yYWdlMkQoU3dhcENoYWluRDNEICpzd2FwQ2hhaW4pIG92
ZXJyaWRlOworICAgIFRleHR1cmVTdG9yYWdlICpjcmVhdGVUZXh0dXJlU3RvcmFnZUVHTEltYWdl
KEVHTEltYWdlRDNEICplZ2xJbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSZW5kZXJUYXJnZXREM0QgKnJlbmRlclRhcmdldEQzRCkgb3ZlcnJp
ZGU7CisgICAgVGV4dHVyZVN0b3JhZ2UgKmNyZWF0ZVRleHR1cmVTdG9yYWdlRXh0ZXJuYWwoCisg
ICAgICAgIGVnbDo6U3RyZWFtICpzdHJlYW0sCisgICAgICAgIGNvbnN0IGVnbDo6U3RyZWFtOjpH
TFRleHR1cmVEZXNjcmlwdGlvbiAmZGVzYykgb3ZlcnJpZGU7CisgICAgVGV4dHVyZVN0b3JhZ2Ug
KmNyZWF0ZVRleHR1cmVTdG9yYWdlMkQoR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVuZGVyVGFyZ2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxldmVscywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGhpbnRMZXZl
bFplcm9Pbmx5KSBvdmVycmlkZTsKKyAgICBUZXh0dXJlU3RvcmFnZSAqY3JlYXRlVGV4dHVyZVN0
b3JhZ2VDdWJlKEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVuZGVyVGFyZ2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGV2ZWxzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBoaW50TGV2ZWxaZXJvT25seSkgb3Zl
cnJpZGU7CisgICAgVGV4dHVyZVN0b3JhZ2UgKmNyZWF0ZVRleHR1cmVTdG9yYWdlM0QoR0xlbnVt
IGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgcmVuZGVyVGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgbGV2ZWxzKSBvdmVycmlkZTsKKyAgICBUZXh0dXJlU3RvcmFn
ZSAqY3JlYXRlVGV4dHVyZVN0b3JhZ2UyREFycmF5KEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVuZGVy
VGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBsZXZlbHMpIG92ZXJyaWRlOwogCi0gICAgLy8gVHJh
bnNmb3JtIEZlZWRiYWNrIGNyZWF0aW9uCi0gICAgdmlydHVhbCBUcmFuc2Zvcm1GZWVkYmFja0lt
cGwqIGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgVmVydGV4QnVmZmVyICpjcmVhdGVW
ZXJ0ZXhCdWZmZXIoKSBvdmVycmlkZTsKKyAgICBJbmRleEJ1ZmZlciAqY3JlYXRlSW5kZXhCdWZm
ZXIoKSBvdmVycmlkZTsKIAogICAgIC8vIFN0cmVhbSBDcmVhdGlvbgotICAgIFN0cmVhbUltcGwg
KmNyZWF0ZVN0cmVhbShjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7
CisgICAgU3RyZWFtUHJvZHVjZXJJbXBsICpjcmVhdGVTdHJlYW1Qcm9kdWNlckQzRFRleHR1cmVO
VjEyKAorICAgICAgICBlZ2w6OlN0cmVhbTo6Q29uc3VtZXJUeXBlIGNvbnN1bWVyVHlwZSwKKyAg
ICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOwogCiAgICAg
Ly8gRDNEMTEtcmVuZGVyZXIgc3BlY2lmaWMgbWV0aG9kcwogICAgIElEM0QxMURldmljZSAqZ2V0
RGV2aWNlKCkgeyByZXR1cm4gbURldmljZTsgfQogICAgIHZvaWQgKmdldEQzRERldmljZSgpIG92
ZXJyaWRlOwogICAgIElEM0QxMURldmljZUNvbnRleHQgKmdldERldmljZUNvbnRleHQoKSB7IHJl
dHVybiBtRGV2aWNlQ29udGV4dDsgfTsKICAgICBJRDNEMTFEZXZpY2VDb250ZXh0MSAqZ2V0RGV2
aWNlQ29udGV4dDFJZlN1cHBvcnRlZCgpIHsgcmV0dXJuIG1EZXZpY2VDb250ZXh0MTsgfTsKLSAg
ICBEWEdJRmFjdG9yeSAqZ2V0RHhnaUZhY3RvcnkoKSB7IHJldHVybiBtRHhnaUZhY3Rvcnk7IH07
CisgICAgSURYR0lGYWN0b3J5ICpnZXREeGdpRmFjdG9yeSgpIHsgcmV0dXJuIG1EeGdpRmFjdG9y
eTsgfTsKIAogICAgIFJlbmRlclN0YXRlQ2FjaGUgJmdldFN0YXRlQ2FjaGUoKSB7IHJldHVybiBt
U3RhdGVDYWNoZTsgfQogCiAgICAgQmxpdDExICpnZXRCbGl0dGVyKCkgeyByZXR1cm4gbUJsaXQ7
IH0KICAgICBDbGVhcjExICpnZXRDbGVhcmVyKCkgeyByZXR1cm4gbUNsZWFyOyB9CisgICAgZ2w6
OkRlYnVnQW5ub3RhdG9yICpnZXRBbm5vdGF0b3IoKTsKIAogICAgIC8vIEJ1ZmZlci10by10ZXh0
dXJlIGFuZCBUZXh0dXJlLXRvLWJ1ZmZlciBjb3BpZXMKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNGYXN0Q29weUJ1ZmZlclRvVGV4dHVyZShHTGVudW0gaW50ZXJuYWxGb3JtYXQpIGNvbnN0Owot
ICAgIHZpcnR1YWwgZ2w6OkVycm9yIGZhc3RDb3B5QnVmZmVyVG9UZXh0dXJlKGNvbnN0IGdsOjpQ
aXhlbFVucGFja1N0YXRlICZ1bnBhY2ssIHVuc2lnbmVkIGludCBvZmZzZXQsIFJlbmRlclRhcmdl
dEQzRCAqZGVzdFJlbmRlclRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZGVzdGluYXRpb25Gb3JtYXQsIEdMZW51bSBzb3VyY2VQaXhl
bHNUeXBlLCBjb25zdCBnbDo6Qm94ICZkZXN0QXJlYSk7CisgICAgYm9vbCBzdXBwb3J0c0Zhc3RD
b3B5QnVmZmVyVG9UZXh0dXJlKEdMZW51bSBpbnRlcm5hbEZvcm1hdCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgZ2w6OkVycm9yIGZhc3RDb3B5QnVmZmVyVG9UZXh0dXJlKGNvbnN0IGdsOjpQaXhlbFVu
cGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJlbmRlclRhcmdldEQzRCAqZGVzdFJlbmRlclRhcmdldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RpbmF0aW9uRm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc291cmNlUGl4ZWxzVHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmZGVzdEFy
ZWEpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBtYXJrQWxsU3RhdGVEaXJ0eSgpOwogICAgIGdsOjpF
cnJvciBwYWNrUGl4ZWxzKGNvbnN0IFRleHR1cmVIZWxwZXIxMSAmdGV4dHVyZUhlbHBlciwKQEAg
LTI5MSwzMSArMzQxLDQ4IEBAIGNsYXNzIFJlbmRlcmVyMTEgOiBwdWJsaWMgUmVuZGVyZXJEM0QK
ICAgICBTdGF0ZU1hbmFnZXIxMSAqZ2V0U3RhdGVNYW5hZ2VyKCkgeyByZXR1cm4gJm1TdGF0ZU1h
bmFnZXI7IH0KIAogICAgIHZvaWQgb25Td2FwKCk7CisgICAgdm9pZCBvbkJ1ZmZlckNyZWF0ZShj
b25zdCBCdWZmZXIxMSAqY3JlYXRlZCk7CiAgICAgdm9pZCBvbkJ1ZmZlckRlbGV0ZShjb25zdCBC
dWZmZXIxMSAqZGVsZXRlZCk7Ci0gICAgdm9pZCBvbk1ha2VDdXJyZW50KGNvbnN0IGdsOjpEYXRh
ICZkYXRhKSBvdmVycmlkZTsKIAogICAgIGVnbDo6RXJyb3IgZ2V0RUdMRGV2aWNlKERldmljZUlt
cGwgKipkZXZpY2UpIG92ZXJyaWRlOwogCisgICAgZ2w6OkVycm9yIGdlbmVyaWNEcmF3QXJyYXlz
KENvbnRleHQxMSAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZpcnN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcyk7CisKKyAgICBnbDo6RXJy
b3IgZ2VuZXJpY0RyYXdFbGVtZW50cyhDb250ZXh0MTEgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTHZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBpbnN0YW5jZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpOworCisgICAgLy8gTmVjZXNzYXJ5IGhhY2sgZm9y
IGRlZmF1bHQgZnJhbWVidWZmZXJzIGluIEQzRC4KKyAgICBGcmFtZWJ1ZmZlckltcGwgKmNyZWF0
ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUpIG92
ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIGdldFNjcmF0Y2hNZW1vcnlCdWZmZXIoc2l6ZV90IHJl
cXVlc3RlZFNpemUsIE1lbW9yeUJ1ZmZlciAqKmJ1ZmZlck91dCk7CisKKyAgICBnbDo6VmVyc2lv
biBnZXRNYXhTdXBwb3J0ZWRFU1ZlcnNpb24oKSBjb25zdCBvdmVycmlkZTsKKwogICBwcm90ZWN0
ZWQ6Ci0gICAgdm9pZCBjcmVhdGVBbm5vdGF0b3IoKSBvdmVycmlkZTsKICAgICBnbDo6RXJyb3Ig
Y2xlYXJUZXh0dXJlcyhnbDo6U2FtcGxlclR5cGUgc2FtcGxlclR5cGUsIHNpemVfdCByYW5nZVN0
YXJ0LCBzaXplX3QgcmFuZ2VFbmQpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBhcHBseVNoYWRl
cnNJbXBsKGNvbnN0IGdsOjpEYXRhICZkYXRhLCBHTGVudW0gZHJhd01vZGUpIG92ZXJyaWRlOwot
Ci0gICAgdm9pZCBzeW5jU3RhdGUoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwgY29uc3QgZ2w6OlN0
YXRlOjpEaXJ0eUJpdHMgJmJpdG1hc2spIG92ZXJyaWRlOwogCiAgIHByaXZhdGU6Ci0gICAgZ2w6
OkVycm9yIGRyYXdBcnJheXNJbXBsKGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAgIGdsOjpFcnJv
ciBkcmF3QXJyYXlzSW1wbChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgc3RhcnRWZXJ0ZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFu
Y2VzKSBvdmVycmlkZTsKLSAgICBnbDo6RXJyb3IgZHJhd0VsZW1lbnRzSW1wbChjb25zdCBnbDo6
RGF0YSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5j
ZXMpOworICAgIGdsOjpFcnJvciBkcmF3RWxlbWVudHNJbXBsKGNvbnN0IGdsOjpDb250ZXh0U3Rh
dGUgJmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHJhbnNsYXRl
ZEluZGV4RGF0YSAmaW5kZXhJbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzKSBvdmVycmlkZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcyk7CiAKICAgICB2b2lkIGdl
bmVyYXRlQ2FwcyhnbDo6Q2FwcyAqb3V0Q2FwcywgZ2w6OlRleHR1cmVDYXBzTWFwICpvdXRUZXh0
dXJlQ2FwcywKICAgICAgICAgICAgICAgICAgICAgICBnbDo6RXh0ZW5zaW9ucyAqb3V0RXh0ZW5z
aW9ucywKQEAgLTMyMywyMCArMzkwLDI3IEBAIGNsYXNzIFJlbmRlcmVyMTEgOiBwdWJsaWMgUmVu
ZGVyZXJEM0QKIAogICAgIFdvcmthcm91bmRzRDNEIGdlbmVyYXRlV29ya2Fyb3VuZHMoKSBjb25z
dCBvdmVycmlkZTsKIAotICAgIGdsOjpFcnJvciBkcmF3TGluZUxvb3AoY29uc3QgZ2w6OkRhdGEg
JmRhdGEsCisgICAgZ2w6OkVycm9yIGRyYXdMaW5lTG9vcChjb25zdCBnbDo6Q29udGV4dFN0YXRl
ICZkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVHJhbnNsYXRlZEluZGV4RGF0YSAqaW5kZXhJbmZvLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGluc3RhbmNlcyk7Ci0gICAgZ2w6OkVycm9yIGRyYXdUcmlhbmdsZUZhbihj
b25zdCBnbDo6RGF0YSAmZGF0YSwKKyAgICBnbDo6RXJyb3IgZHJhd1RyaWFuZ2xlRmFuKGNvbnN0
IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWluSW5kZXgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgaW5zdGFuY2VzKTsKIAotICAgIElEM0QxMVRleHR1cmUyRCAq
cmVzb2x2ZU11bHRpc2FtcGxlZFRleHR1cmUoSUQzRDExVGV4dHVyZTJEICpzb3VyY2UsIHVuc2ln
bmVkIGludCBzdWJyZXNvdXJjZSk7CisgICAgZ2w6OkVycm9yIGFwcGx5U2hhZGVycyhjb25zdCBn
bDo6Q29udGV4dFN0YXRlICZkYXRhLCBHTGVudW0gZHJhd01vZGUpOworICAgIGdsOjpFcnJvciBn
ZW5lcmF0ZVN3aXp6bGUoZ2w6OlRleHR1cmUgKnRleHR1cmUpOworICAgIGdsOjpFcnJvciBnZW5l
cmF0ZVN3aXp6bGVzKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsIGdsOjpTYW1wbGVyVHlw
ZSB0eXBlKTsKKyAgICBnbDo6RXJyb3IgZ2VuZXJhdGVTd2l6emxlcyhjb25zdCBnbDo6Q29udGV4
dFN0YXRlICZkYXRhKTsKKworICAgIGdsOjpFcnJvck9yUmVzdWx0PFRleHR1cmVIZWxwZXIxMT4g
cmVzb2x2ZU11bHRpc2FtcGxlZFRleHR1cmUoUmVuZGVyVGFyZ2V0MTEgKnJlbmRlclRhcmdldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHN0ZW5jaWwpOwogCiAgICAgdm9p
ZCBwb3B1bGF0ZVJlbmRlcmVyMTFEZXZpY2VDYXBzKCk7CiAKQEAgLTM3OCw2ICs0NTIsMTIgQEAg
Y2xhc3MgUmVuZGVyZXIxMSA6IHB1YmxpYyBSZW5kZXJlckQzRAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2FtcGxlck1ldGFkYXRhUmVmZXJlbmNlZEJ5dGVz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFCdWZmZXIgKmRy
aXZlckNvbnN0YW50QnVmZmVyKTsKIAorICAgIGdsOjpFcnJvciBjb3B5SW1hZ2VJbnRlcm5hbChj
b25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VSZWN0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdEZvcm1hdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVuZGVyVGFyZ2V0RDNEICpkZXN0UmVuZGVyVGFyZ2V0KTsK
KwogICAgIEhNT0RVTEUgbUQzZDExTW9kdWxlOwogICAgIEhNT0RVTEUgbUR4Z2lNb2R1bGU7CiAg
ICAgSE1PRFVMRSBtRENvbXBNb2R1bGU7CkBAIC00MTYsMTUgKzQ5Niw3IEBAIGNsYXNzIFJlbmRl
cmVyMTEgOiBwdWJsaWMgUmVuZGVyZXJEM0QKICAgICBib29sIG1BcHBsaWVkSUJDaGFuZ2VkOwog
CiAgICAgLy8gQ3VycmVudGx5IGFwcGxpZWQgdHJhbnNmb3JtIGZlZWRiYWNrIGJ1ZmZlcnMKLSAg
ICBzaXplX3QgbUFwcGxpZWROdW1YRkJCaW5kaW5nczsKLSAgICBJRDNEMTFCdWZmZXIgKm1BcHBs
aWVkVEZCdWZmZXJzW2dsOjpJTVBMRU1FTlRBVElPTl9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX0JV
RkZFUlNdOyAvLyBUcmFja3MgdGhlIGN1cnJlbnQgRDNEIGJ1ZmZlcnMKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBpbiB1c2UgZm9yIHN0cmVhbW91dAotICAgIEdMaW50cHRyIG1B
cHBsaWVkVEZPZmZzZXRzW2dsOjpJTVBMRU1FTlRBVElPTl9NQVhfVFJBTlNGT1JNX0ZFRURCQUNL
X0JVRkZFUlNdOyAvLyBUcmFja3MgdGhlIGN1cnJlbnQgR0wtc3BlY2lmaWVkCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGJ1ZmZlciBvZmZzZXRzIHRvIHRyYW5zZm9ybSBmZWVkYmFjawot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidWZmZXJzCi0gICAgVUlOVCBtQ3VycmVudEQz
RE9mZnNldHNbZ2w6OklNUExFTUVOVEFUSU9OX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVS
U107ICAvLyBUcmFja3MgdGhlIEQzRCBidWZmZXIgb2Zmc2V0cywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHdoaWNoIG1heSBkaWZmZXIgZnJvbSBHTHMsIGR1ZQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gdG8gZGlmZmVyZW50IGFwcGVuZCBiZWhhdmlvcgorICAgIHVpbnRwdHJfdCBt
QXBwbGllZFRGT2JqZWN0OwogCiAgICAgLy8gQ3VycmVudGx5IGFwcGxpZWQgc2hhZGVycwogICAg
IHVpbnRwdHJfdCBtQXBwbGllZFZlcnRleFNoYWRlcjsKQEAgLTQ4MiwxMyArNTU0LDE4IEBAIGNs
YXNzIFJlbmRlcmVyMTEgOiBwdWJsaWMgUmVuZGVyZXJEM0QKICAgICBJRFhHSUFkYXB0ZXIgKm1E
eGdpQWRhcHRlcjsKICAgICBEWEdJX0FEQVBURVJfREVTQyBtQWRhcHRlckRlc2NyaXB0aW9uOwog
ICAgIGNoYXIgbURlc2NyaXB0aW9uWzEyOF07Ci0gICAgRFhHSUZhY3RvcnkgKm1EeGdpRmFjdG9y
eTsKKyAgICBJRFhHSUZhY3RvcnkgKm1EeGdpRmFjdG9yeTsKICAgICBJRDNEMTFEZWJ1ZyAqbURl
YnVnOwogCiAgICAgc3RkOjp2ZWN0b3I8R0x1aW50PiBtU2NyYXRjaEluZGV4RGF0YUJ1ZmZlcjsK
IAorICAgIE1lbW9yeUJ1ZmZlciBtU2NyYXRjaE1lbW9yeUJ1ZmZlcjsKKyAgICB1bnNpZ25lZCBp
bnQgbVNjcmF0Y2hNZW1vcnlCdWZmZXJSZXNldENvdW50ZXI7CisKKyAgICBnbDo6RGVidWdBbm5v
dGF0b3IgKm1Bbm5vdGF0b3I7CisKICAgICBtdXRhYmxlIE9wdGlvbmFsPGJvb2w+IG1TdXBwb3J0
c1NoYXJlSGFuZGxlczsKIH07CiAKLX0KK30gIC8vIG5hbWVzcGFjZSByeAogI2VuZGlmIC8vIExJ
QkFOR0xFX1JFTkRFUkVSX0QzRF9EM0QxMV9SRU5ERVJFUjExX0hfCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0YXRlTWFuYWdl
cjExLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0YXRlTWFuYWdlcjExLmNwcAkocmV2aXNpb24gMjA3ODA0
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9TdGF0ZU1hbmFnZXIxMS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExLDYgKzExLDcgQEAK
ICNpbmNsdWRlICJjb21tb24vQml0U2V0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJjb21tb24vdXRp
bGl0aWVzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvUXVlcnkuaCIKKyNpbmNsdWRlICJsaWJBTkdM
RS9WZXJ0ZXhBcnJheS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9G
cmFtZWJ1ZmZlcjExLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1Jl
bmRlcmVyMTEuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVy
VGFyZ2V0MTEuaCIKQEAgLTIzLDE1ICsyNCwxNiBAQCBuYW1lc3BhY2UKIGJvb2wgSW1hZ2VJbmRl
eENvbmZsaWN0c1dpdGhTUlYoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4LCBEM0QxMV9TSEFE
RVJfUkVTT1VSQ0VfVklFV19ERVNDIGRlc2MpCiB7CiAgICAgdW5zaWduZWQgbWlwTGV2ZWwgICA9
IGluZGV4Lm1pcEluZGV4OwotICAgIHVuc2lnbmVkIGxheWVySW5kZXggPSBpbmRleC5sYXllcklu
ZGV4OworICAgIEdMaW50IGxheWVySW5kZXggICAgPSBpbmRleC5sYXllckluZGV4OwogICAgIEdM
ZW51bSB0eXBlICAgICAgICAgPSBpbmRleC50eXBlOwogCiAgICAgc3dpdGNoIChkZXNjLlZpZXdE
aW1lbnNpb24pCiAgICAgewogICAgICAgICBjYXNlIEQzRDExX1NSVl9ESU1FTlNJT05fVEVYVFVS
RTJEOgogICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBtYXhTcnZNaXAgPSBkZXNjLlRl
eHR1cmUyRC5NaXBMZXZlbHMgKyBkZXNjLlRleHR1cmUyRC5Nb3N0RGV0YWlsZWRNaXA7Ci0gICAg
ICAgICAgICBtYXhTcnZNaXAgICAgICAgICAgPSAoZGVzYy5UZXh0dXJlMkQuTWlwTGV2ZWxzID09
IC0xKSA/IElOVF9NQVggOiBtYXhTcnZNaXA7CisgICAgICAgICAgICBib29sIGFsbExldmVscyAg
ICAgICAgID0gKGRlc2MuVGV4dHVyZTJELk1pcExldmVscyA9PSBzdGQ6Om51bWVyaWNfbGltaXRz
PFVJTlQ+OjptYXgoKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWF4U3J2TWlwID0gZGVz
Yy5UZXh0dXJlMkQuTWlwTGV2ZWxzICsgZGVzYy5UZXh0dXJlMkQuTW9zdERldGFpbGVkTWlwOwor
ICAgICAgICAgICAgbWF4U3J2TWlwICAgICAgICAgICAgICA9IGFsbExldmVscyA/IElOVF9NQVgg
OiBtYXhTcnZNaXA7CiAKICAgICAgICAgICAgIHVuc2lnbmVkIG1pcE1pbiA9IGluZGV4Lm1pcElu
ZGV4OwogICAgICAgICAgICAgdW5zaWduZWQgbWlwTWF4ID0gKGxheWVySW5kZXggPT0gLTEpID8g
SU5UX01BWCA6IGxheWVySW5kZXg7CkBAIC00MywyMiArNDUsMjUgQEAgYm9vbCBJbWFnZUluZGV4
Q29uZmxpY3RzV2l0aFNSVihjb25zdCBnbAogCiAgICAgICAgIGNhc2UgRDNEMTFfU1JWX0RJTUVO
U0lPTl9URVhUVVJFMkRBUlJBWToKICAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQgbWF4
U3J2TWlwID0KKyAgICAgICAgICAgIGJvb2wgYWxsTGV2ZWxzID0gKGRlc2MuVGV4dHVyZTJEQXJy
YXkuTWlwTGV2ZWxzID09IHN0ZDo6bnVtZXJpY19saW1pdHM8VUlOVD46Om1heCgpKTsKKyAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBtYXhTcnZNaXAgPQogICAgICAgICAgICAgICAgIGRlc2MuVGV4
dHVyZTJEQXJyYXkuTWlwTGV2ZWxzICsgZGVzYy5UZXh0dXJlMkRBcnJheS5Nb3N0RGV0YWlsZWRN
aXA7Ci0gICAgICAgICAgICBtYXhTcnZNaXAgPSAoZGVzYy5UZXh0dXJlMkRBcnJheS5NaXBMZXZl
bHMgPT0gLTEpID8gSU5UX01BWCA6IG1heFNydk1pcDsKKyAgICAgICAgICAgIG1heFNydk1pcCA9
IGFsbExldmVscyA/IElOVF9NQVggOiBtYXhTcnZNaXA7CiAKICAgICAgICAgICAgIHVuc2lnbmVk
IG1heFNsaWNlID0gZGVzYy5UZXh0dXJlMkRBcnJheS5GaXJzdEFycmF5U2xpY2UgKyBkZXNjLlRl
eHR1cmUyREFycmF5LkFycmF5U2l6ZTsKIAogICAgICAgICAgICAgLy8gQ3ViZSBtYXBzIGNhbiBi
ZSBtYXBwZWQgdG8gVGV4dHVyZTJEQXJyYXkgU1JWcwogICAgICAgICAgICAgcmV0dXJuICh0eXBl
ID09IEdMX1RFWFRVUkVfMkRfQVJSQVkgfHwgZ2w6OklzQ3ViZU1hcFRleHR1cmVUYXJnZXQodHlw
ZSkpICYmCiAgICAgICAgICAgICAgICAgICAgZGVzYy5UZXh0dXJlMkRBcnJheS5Nb3N0RGV0YWls
ZWRNaXAgPD0gbWlwTGV2ZWwgJiYgbWlwTGV2ZWwgPCBtYXhTcnZNaXAgJiYKLSAgICAgICAgICAg
ICAgICAgICBkZXNjLlRleHR1cmUyREFycmF5LkZpcnN0QXJyYXlTbGljZSA8PSBsYXllckluZGV4
ICYmIGxheWVySW5kZXggPCBtYXhTbGljZTsKKyAgICAgICAgICAgICAgICAgICBkZXNjLlRleHR1
cmUyREFycmF5LkZpcnN0QXJyYXlTbGljZSA8PSBzdGF0aWNfY2FzdDxVSU5UPihsYXllckluZGV4
KSAmJgorICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PFVJTlQ+KGxheWVySW5kZXgpIDwg
bWF4U2xpY2U7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIEQzRDExX1NSVl9ESU1FTlNJT05f
VEVYVFVSRUNVQkU6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIG1heFNydk1pcCA9
IGRlc2MuVGV4dHVyZUN1YmUuTWlwTGV2ZWxzICsgZGVzYy5UZXh0dXJlQ3ViZS5Nb3N0RGV0YWls
ZWRNaXA7Ci0gICAgICAgICAgICBtYXhTcnZNaXAgICAgICAgICAgPSAoZGVzYy5UZXh0dXJlQ3Vi
ZS5NaXBMZXZlbHMgPT0gLTEpID8gSU5UX01BWCA6IG1heFNydk1pcDsKKyAgICAgICAgICAgIGJv
b2wgYWxsTGV2ZWxzID0gKGRlc2MuVGV4dHVyZUN1YmUuTWlwTGV2ZWxzID09IHN0ZDo6bnVtZXJp
Y19saW1pdHM8VUlOVD46Om1heCgpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBtYXhTcnZN
aXAgPSBkZXNjLlRleHR1cmVDdWJlLk1pcExldmVscyArIGRlc2MuVGV4dHVyZUN1YmUuTW9zdERl
dGFpbGVkTWlwOworICAgICAgICAgICAgbWF4U3J2TWlwICAgICAgICAgICAgICA9IGFsbExldmVs
cyA/IElOVF9NQVggOiBtYXhTcnZNaXA7CiAKICAgICAgICAgICAgIHJldHVybiBnbDo6SXNDdWJl
TWFwVGV4dHVyZVRhcmdldCh0eXBlKSAmJgogICAgICAgICAgICAgICAgICAgIGRlc2MuVGV4dHVy
ZUN1YmUuTW9zdERldGFpbGVkTWlwIDw9IG1pcExldmVsICYmIG1pcExldmVsIDwgbWF4U3J2TWlw
OwpAQCAtNjYsOCArNzEsOSBAQCBib29sIEltYWdlSW5kZXhDb25mbGljdHNXaXRoU1JWKGNvbnN0
IGdsCiAKICAgICAgICAgY2FzZSBEM0QxMV9TUlZfRElNRU5TSU9OX1RFWFRVUkUzRDoKICAgICAg
ICAgewotICAgICAgICAgICAgdW5zaWduZWQgbWF4U3J2TWlwID0gZGVzYy5UZXh0dXJlM0QuTWlw
TGV2ZWxzICsgZGVzYy5UZXh0dXJlM0QuTW9zdERldGFpbGVkTWlwOwotICAgICAgICAgICAgbWF4
U3J2TWlwICAgICAgICAgID0gKGRlc2MuVGV4dHVyZTNELk1pcExldmVscyA9PSAtMSkgPyBJTlRf
TUFYIDogbWF4U3J2TWlwOworICAgICAgICAgICAgYm9vbCBhbGxMZXZlbHMgICAgICAgICA9IChk
ZXNjLlRleHR1cmUzRC5NaXBMZXZlbHMgPT0gc3RkOjpudW1lcmljX2xpbWl0czxVSU5UPjo6bWF4
KCkpOworICAgICAgICAgICAgdW5zaWduZWQgaW50IG1heFNydk1pcCA9IGRlc2MuVGV4dHVyZTNE
Lk1pcExldmVscyArIGRlc2MuVGV4dHVyZTNELk1vc3REZXRhaWxlZE1pcDsKKyAgICAgICAgICAg
IG1heFNydk1pcCAgICAgICAgICAgICAgPSBhbGxMZXZlbHMgPyBJTlRfTUFYIDogbWF4U3J2TWlw
OwogCiAgICAgICAgICAgICByZXR1cm4gdHlwZSA9PSBHTF9URVhUVVJFXzNEICYmIGRlc2MuVGV4
dHVyZTNELk1vc3REZXRhaWxlZE1pcCA8PSBtaXBMZXZlbCAmJgogICAgICAgICAgICAgICAgICAg
IG1pcExldmVsIDwgbWF4U3J2TWlwOwpAQCAtMTMwLDcgKzEzNiw4IEBAIHZvaWQgU3RhdGVNYW5h
Z2VyMTE6OlNSVkNhY2hlOjpjbGVhcigpCiB9CiAKIHN0YXRpYyBjb25zdCBHTGVudW0gUXVlcnlU
eXBlc1tdID0ge0dMX0FOWV9TQU1QTEVTX1BBU1NFRCwgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NP
TlNFUlZBVElWRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1RSQU5T
Rk9STV9GRUVEQkFDS19QUklNSVRJVkVTX1dSSVRURU4sIEdMX1RJTUVfRUxBUFNFRF9FWFR9Owor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVFJBTlNGT1JNX0ZFRURCQUNL
X1BSSU1JVElWRVNfV1JJVFRFTiwgR0xfVElNRV9FTEFQU0VEX0VYVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTU1BTkRTX0NPTVBMRVRFRF9DSFJPTUlVTX07CiAK
IFN0YXRlTWFuYWdlcjExOjpTdGF0ZU1hbmFnZXIxMShSZW5kZXJlcjExICpyZW5kZXJlcikKICAg
ICA6IG1SZW5kZXJlcihyZW5kZXJlciksCkBAIC00ODUsMTYgKzQ5MiwxMSBAQCBnbDo6RXJyb3Ig
U3RhdGVNYW5hZ2VyMTE6OnNldEJsZW5kU3RhdGUoCiB7CiAgICAgaWYgKCFtQmxlbmRTdGF0ZUlz
RGlydHkgJiYgc2FtcGxlTWFzayA9PSBtQ3VyU2FtcGxlTWFzaykKICAgICB7Ci0gICAgICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3Io
KTsKICAgICB9CiAKICAgICBJRDNEMTFCbGVuZFN0YXRlICpkeEJsZW5kU3RhdGUgPSBudWxscHRy
OwotICAgIGdsOjpFcnJvciBlcnJvciA9Ci0gICAgICAgIG1SZW5kZXJlci0+Z2V0U3RhdGVDYWNo
ZSgpLmdldEJsZW5kU3RhdGUoZnJhbWVidWZmZXIsIGJsZW5kU3RhdGUsICZkeEJsZW5kU3RhdGUp
OwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7
Ci0gICAgfQorICAgIEFOR0xFX1RSWShtUmVuZGVyZXItPmdldFN0YXRlQ2FjaGUoKS5nZXRCbGVu
ZFN0YXRlKGZyYW1lYnVmZmVyLCBibGVuZFN0YXRlLCAmZHhCbGVuZFN0YXRlKSk7CiAKICAgICBB
U1NFUlQoZHhCbGVuZFN0YXRlICE9IG51bGxwdHIpOwogCkBAIC01MjUsNyArNTI3LDcgQEAgZ2w6
OkVycm9yIFN0YXRlTWFuYWdlcjExOjpzZXRCbGVuZFN0YXRlKAogCiAgICAgbUJsZW5kU3RhdGVJ
c0RpcnR5ID0gZmFsc2U7CiAKLSAgICByZXR1cm4gZXJyb3I7CisgICAgcmV0dXJuIGdsOjpOb0Vy
cm9yKCk7CiB9CiAKIGdsOjpFcnJvciBTdGF0ZU1hbmFnZXIxMTo6c2V0RGVwdGhTdGVuY2lsU3Rh
dGUoY29uc3QgZ2w6OlN0YXRlICZnbFN0YXRlKQpAQCAtNTQ1LDcgKzU0Nyw3IEBAIGdsOjpFcnJv
ciBTdGF0ZU1hbmFnZXIxMTo6c2V0RGVwdGhTdGVuY2kKICAgICAgICAgZGlzYWJsZURlcHRoID09
IG1DdXJEaXNhYmxlRGVwdGgudmFsdWUoKSAmJiBtQ3VyRGlzYWJsZVN0ZW5jaWwudmFsaWQoKSAm
JgogICAgICAgICBkaXNhYmxlU3RlbmNpbCA9PSBtQ3VyRGlzYWJsZVN0ZW5jaWwudmFsdWUoKSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICBy
ZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiAKICAgICBjb25zdCBhdXRvICZkZXB0aFN0ZW5j
aWxTdGF0ZSA9IGdsU3RhdGUuZ2V0RGVwdGhTdGVuY2lsU3RhdGUoKTsKQEAgLTU2NSwxMiArNTY3
LDggQEAgZ2w6OkVycm9yIFN0YXRlTWFuYWdlcjExOjpzZXREZXB0aFN0ZW5jaQogICAgICAgICAg
ICAoZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbEJhY2tNYXNrICYgbWF4U3RlbmNpbCkpOwogCiAg
ICAgSUQzRDExRGVwdGhTdGVuY2lsU3RhdGUgKmR4RGVwdGhTdGVuY2lsU3RhdGUgPSBOVUxMOwot
ICAgIGdsOjpFcnJvciBlcnJvciA9IG1SZW5kZXJlci0+Z2V0U3RhdGVDYWNoZSgpLmdldERlcHRo
U3RlbmNpbFN0YXRlKAotICAgICAgICBkZXB0aFN0ZW5jaWxTdGF0ZSwgZGlzYWJsZURlcHRoLCBk
aXNhYmxlU3RlbmNpbCwgJmR4RGVwdGhTdGVuY2lsU3RhdGUpOwotICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RS
WShtUmVuZGVyZXItPmdldFN0YXRlQ2FjaGUoKS5nZXREZXB0aFN0ZW5jaWxTdGF0ZSgKKyAgICAg
ICAgZGVwdGhTdGVuY2lsU3RhdGUsIGRpc2FibGVEZXB0aCwgZGlzYWJsZVN0ZW5jaWwsICZkeERl
cHRoU3RlbmNpbFN0YXRlKSk7CiAKICAgICBBU1NFUlQoZHhEZXB0aFN0ZW5jaWxTdGF0ZSk7CiAK
QEAgLTU5NCw3ICs1OTIsNyBAQCBnbDo6RXJyb3IgU3RhdGVNYW5hZ2VyMTE6OnNldERlcHRoU3Rl
bmNpCiAKICAgICBtRGVwdGhTdGVuY2lsU3RhdGVJc0RpcnR5ID0gZmFsc2U7CiAKLSAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0K
IAogZ2w6OkVycm9yIFN0YXRlTWFuYWdlcjExOjpzZXRSYXN0ZXJpemVyU3RhdGUoY29uc3QgZ2w6
OlJhc3Rlcml6ZXJTdGF0ZSAmcmFzdGVyU3RhdGUpCkBAIC02MDMsMTEgKzYwMSwxMCBAQCBnbDo6
RXJyb3IgU3RhdGVNYW5hZ2VyMTE6OnNldFJhc3Rlcml6ZXJTCiAgICAgaWYgKCFtUmFzdGVyaXpl
clN0YXRlSXNEaXJ0eSAmJiByYXN0ZXJTdGF0ZS5wb2ludERyYXdNb2RlID09IG1DdXJSYXN0ZXJT
dGF0ZS5wb2ludERyYXdNb2RlICYmCiAgICAgICAgIHJhc3RlclN0YXRlLm11bHRpU2FtcGxlID09
IG1DdXJSYXN0ZXJTdGF0ZS5tdWx0aVNhbXBsZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9
CiAKICAgICBJRDNEMTFSYXN0ZXJpemVyU3RhdGUgKmR4UmFzdGVyU3RhdGUgPSBudWxscHRyOwot
ICAgIGdsOjpFcnJvciBlcnJvcihHTF9OT19FUlJPUik7CiAKICAgICBpZiAobUN1clByZXNlbnRQ
YXRoRmFzdEVuYWJsZWQpCiAgICAgewpAQCAtNjI2LDE4ICs2MjMsMTMgQEAgZ2w6OkVycm9yIFN0
YXRlTWFuYWdlcjExOjpzZXRSYXN0ZXJpemVyUwogICAgICAgICAgICAgbW9kaWZpZWRSYXN0ZXJT
dGF0ZS5mcm9udEZhY2UgPSBHTF9DQ1c7CiAgICAgICAgIH0KIAotICAgICAgICBlcnJvciA9IG1S
ZW5kZXJlci0+Z2V0U3RhdGVDYWNoZSgpLmdldFJhc3Rlcml6ZXJTdGF0ZShtb2RpZmllZFJhc3Rl
clN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtQ3VyU2Npc3NvckVuYWJsZWQsICZkeFJhc3RlclN0YXRlKTsKKyAgICAg
ICAgQU5HTEVfVFJZKG1SZW5kZXJlci0+Z2V0U3RhdGVDYWNoZSgpLmdldFJhc3Rlcml6ZXJTdGF0
ZSgKKyAgICAgICAgICAgIG1vZGlmaWVkUmFzdGVyU3RhdGUsIG1DdXJTY2lzc29yRW5hYmxlZCwg
JmR4UmFzdGVyU3RhdGUpKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgZXJyb3Ig
PSBtUmVuZGVyZXItPmdldFN0YXRlQ2FjaGUoKS5nZXRSYXN0ZXJpemVyU3RhdGUocmFzdGVyU3Rh
dGUsIG1DdXJTY2lzc29yRW5hYmxlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmR4UmFzdGVyU3RhdGUpOwotICAgIH0KLQot
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Cisg
ICAgICAgIEFOR0xFX1RSWShtUmVuZGVyZXItPmdldFN0YXRlQ2FjaGUoKS5nZXRSYXN0ZXJpemVy
U3RhdGUocmFzdGVyU3RhdGUsIG1DdXJTY2lzc29yRW5hYmxlZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZHhSYXN0ZXJT
dGF0ZSkpOwogICAgIH0KIAogICAgIG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpLT5SU1Nl
dFN0YXRlKGR4UmFzdGVyU3RhdGUpOwpAQCAtNjQ1LDcgKzYzNyw3IEBAIGdsOjpFcnJvciBTdGF0
ZU1hbmFnZXIxMTo6c2V0UmFzdGVyaXplclMKICAgICBtQ3VyUmFzdGVyU3RhdGUgICAgICAgICA9
IHJhc3RlclN0YXRlOwogICAgIG1SYXN0ZXJpemVyU3RhdGVJc0RpcnR5ID0gZmFsc2U7CiAKLSAg
ICByZXR1cm4gZXJyb3I7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIHZvaWQgU3Rh
dGVNYW5hZ2VyMTE6OnNldFNjaXNzb3JSZWN0YW5nbGUoY29uc3QgZ2w6OlJlY3RhbmdsZSAmc2Np
c3NvciwgYm9vbCBlbmFibGVkKQpAQCAtODM5LDkgKzgzMSw5IEBAIHZvaWQgU3RhdGVNYW5hZ2Vy
MTE6Om9uRGVsZXRlUXVlcnlPYmplY3QKICAgICBtQ3VycmVudFF1ZXJpZXMuZXJhc2UocXVlcnkp
OwogfQogCi1nbDo6RXJyb3IgU3RhdGVNYW5hZ2VyMTE6Om9uTWFrZUN1cnJlbnQoY29uc3QgZ2w6
OkRhdGEgJmRhdGEpCitnbDo6RXJyb3IgU3RhdGVNYW5hZ2VyMTE6Om9uTWFrZUN1cnJlbnQoY29u
c3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSkKIHsKLSAgICBjb25zdCBnbDo6U3RhdGUgJnN0YXRl
ID0gKmRhdGEuc3RhdGU7CisgICAgY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSA9IGRhdGEuZ2V0U3Rh
dGUoKTsKIAogICAgIGZvciAoUXVlcnkxMSAqcXVlcnkgOiBtQ3VycmVudFF1ZXJpZXMpCiAgICAg
ewpAQCAtODYwLDcgKzg1Miw3IEBAIGdsOjpFcnJvciBTdGF0ZU1hbmFnZXIxMTo6b25NYWtlQ3Vy
cmVudCgKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJS
T1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiB2b2lkIFN0YXRlTWFuYWdlcjEx
OjpzZXRTaGFkZXJSZXNvdXJjZShnbDo6U2FtcGxlclR5cGUgc2hhZGVyVHlwZSwKQEAgLTg5NCw3
ICs4ODYsNyBAQCBnbDo6RXJyb3IgU3RhdGVNYW5hZ2VyMTE6OmNsZWFyVGV4dHVyZXMoCiB7CiAg
ICAgaWYgKHJhbmdlU3RhcnQgPT0gcmFuZ2VFbmQpCiAgICAgewotICAgICAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAg
fQogCiAgICAgYXV0byAmY3VycmVudFNSVnMgPSAoc2FtcGxlclR5cGUgPT0gZ2w6OlNBTVBMRVJf
VkVSVEVYID8gbUN1clZlcnRleFNSVnMgOiBtQ3VyUGl4ZWxTUlZzKTsKQEAgLTkwNCw3ICs4OTYs
NyBAQCBnbDo6RXJyb3IgU3RhdGVNYW5hZ2VyMTE6OmNsZWFyVGV4dHVyZXMoCiAKICAgICBpZiAo
Y2xlYXJSYW5nZS5lbXB0eSgpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9O
T19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogICAgIH0KIAogICAgIGF1
dG8gZGV2aWNlQ29udGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpOwpAQCAtOTI2
LDcgKzkxOCw3IEBAIGdsOjpFcnJvciBTdGF0ZU1hbmFnZXIxMTo6Y2xlYXJUZXh0dXJlcygKICAg
ICAgICAgY3VycmVudFNSVnMudXBkYXRlKHNhbXBsZXJJbmRleCwgbnVsbHB0cik7CiAgICAgfQog
Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vy
cm9yKCk7CiB9CiAKIHZvaWQgU3RhdGVNYW5hZ2VyMTE6OnVuc2V0Q29uZmxpY3RpbmdTUlZzKGds
OjpTYW1wbGVyVHlwZSBzYW1wbGVyVHlwZSwKQEAgLTk3OSwxNCArOTcxLDEwIEBAIHZvaWQgU3Rh
dGVNYW5hZ2VyMTE6OmRlaW5pdGlhbGl6ZSgpCiAgICAgbUN1cnJlbnRWYWx1ZUF0dHJpYnMuY2xl
YXIoKTsKIH0KIAotZ2w6OkVycm9yIFN0YXRlTWFuYWdlcjExOjpzeW5jRnJhbWVidWZmZXIoY29u
c3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlcikKK2dsOjpFcnJvciBTdGF0ZU1hbmFnZXIx
MTo6c3luY0ZyYW1lYnVmZmVyKGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIpCiB7Ci0gICAg
Y29uc3QgRnJhbWVidWZmZXIxMSAqZnJhbWVidWZmZXIxMSA9IEdldEltcGxBczxGcmFtZWJ1ZmZl
cjExPihmcmFtZWJ1ZmZlcik7Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gZnJhbWVidWZmZXIxMS0+
aW52YWxpZGF0ZVN3aXp6bGVzKCk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgRnJhbWVidWZmZXIxMSAqZnJhbWVidWZm
ZXIxMSA9IEdldEltcGxBczxGcmFtZWJ1ZmZlcjExPihmcmFtZWJ1ZmZlcik7CisgICAgQU5HTEVf
VFJZKGZyYW1lYnVmZmVyMTEtPm1hcmtBdHRhY2htZW50c0RpcnR5KCkpOwogCiAgICAgaWYgKGZy
YW1lYnVmZmVyMTEtPmhhc0FueUludGVybmFsRGlydHlCaXQoKSkKICAgICB7CkBAIC05OTYsNyAr
OTg0LDcgQEAgZ2w6OkVycm9yIFN0YXRlTWFuYWdlcjExOjpzeW5jRnJhbWVidWZmZQogCiAgICAg
aWYgKCFtUmVuZGVyVGFyZ2V0SXNEaXJ0eSkKICAgICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfTk9fRVJST1IpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiAK
ICAgICBtUmVuZGVyVGFyZ2V0SXNEaXJ0eSA9IGZhbHNlOwpAQCAtMTAxMCw3ICs5OTgsNyBAQCBn
bDo6RXJyb3IgU3RhdGVNYW5hZ2VyMTE6OnN5bmNGcmFtZWJ1ZmZlCiAgICAgICAgIGNvbnN0IGds
OjpFeHRlbnRzICZzaXplID0gZnJhbWVidWZmZXItPmdldEZpcnN0Q29sb3JidWZmZXIoKS0+Z2V0
U2l6ZSgpOwogICAgICAgICBpZiAoc2l6ZS53aWR0aCA9PSAwIHx8IHNpemUuaGVpZ2h0ID09IDAp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwor
ICAgICAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTEwODMsNyArMTA3MSw3IEBAIGdsOjpFcnJvciBTdGF0ZU1hbmFnZXIxMTo6c3luY0ZyYW1lYnVm
ZmUKICAgICB9CiAKICAgICAvLyBUT0RPKGptYWRpbGwpOiBVc2UgY29udGV4dCBjYXBzPwotICAg
IFVJTlQgZHJhd0J1ZmZlcnMgPSBtUmVuZGVyZXItPmdldFJlbmRlcmVyQ2FwcygpLm1heERyYXdC
dWZmZXJzOworICAgIFVJTlQgZHJhd0J1ZmZlcnMgPSBtUmVuZGVyZXItPmdldE5hdGl2ZUNhcHMo
KS5tYXhEcmF3QnVmZmVyczsKIAogICAgIC8vIEFwcGx5IHRoZSByZW5kZXIgdGFyZ2V0IGFuZCBk
ZXB0aCBzdGVuY2lsCiAgICAgbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCktPk9NU2V0UmVu
ZGVyVGFyZ2V0cyhkcmF3QnVmZmVycywgZnJhbWVidWZmZXJSVFZzLmRhdGEoKSwKQEAgLTEwOTQs
NyArMTA4Miw3IEBAIGdsOjpFcnJvciBTdGF0ZU1hbmFnZXIxMTo6c3luY0ZyYW1lYnVmZmUKIAog
ICAgIHNldFZpZXdwb3J0Qm91bmRzKHJlbmRlclRhcmdldFdpZHRoLCByZW5kZXJUYXJnZXRIZWln
aHQpOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGds
OjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBTdGF0ZU1hbmFnZXIxMTo6dXBkYXRlQ3VycmVu
dFZhbHVlQXR0cmlicyhjb25zdCBnbDo6U3RhdGUgJnN0YXRlLApAQCAtMTExNywxNSArMTEwNSwx
MSBAQCBnbDo6RXJyb3IgU3RhdGVNYW5hZ2VyMTE6OnVwZGF0ZUN1cnJlbnRWCiAgICAgICAgIGN1
cnJlbnRWYWx1ZUF0dHJpYi0+Y3VycmVudFZhbHVlVHlwZSA9IGN1cnJlbnRWYWx1ZS5UeXBlOwog
ICAgICAgICBjdXJyZW50VmFsdWVBdHRyaWItPmF0dHJpYnV0ZSAgICAgICAgPSAmdmVydGV4QXR0
cmlidXRlc1thdHRyaWJJbmRleF07CiAKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gdmVydGV4
RGF0YU1hbmFnZXItPnN0b3JlQ3VycmVudFZhbHVlKGN1cnJlbnRWYWx1ZSwgY3VycmVudFZhbHVl
QXR0cmliLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c2l6ZV90PihhdHRyaWJJbmRleCkpOwotICAgICAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJy
b3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKHZlcnRleERhdGFNYW5hZ2VyLT5zdG9y
ZUN1cnJlbnRWYWx1ZShjdXJyZW50VmFsdWUsIGN1cnJlbnRWYWx1ZUF0dHJpYiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxzaXplX3Q+KGF0dHJpYkluZGV4KSkpOwogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBjb25zdCBzdGQ6
OnZlY3RvcjxUcmFuc2xhdGVkQXR0cmlidXRlPiAmU3RhdGVNYW5hZ2VyMTE6OmdldEN1cnJlbnRW
YWx1ZUF0dHJpYnMoKSBjb25zdApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdGF0ZU1hbmFnZXIxMS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
U3RhdGVNYW5hZ2VyMTEuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdGF0ZU1hbmFnZXIxMS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMiw3ICsxMiw3IEBACiAjaW5jbHVkZSA8YXJyYXk+CiAKICNpbmNs
dWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvRGF0YS5oIgor
I2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHRTdGF0ZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1N0
YXRlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclN0YXRl
Q2FjaGUuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvcmVuZGVyZXIx
MV91dGlscy5oIgpAQCAtNzcsNyArNzcsNyBAQCBjbGFzcyBTdGF0ZU1hbmFnZXIxMSBmaW5hbCA6
IGFuZ2xlOjpOb25DCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFTaGFkZXJSZXNv
dXJjZVZpZXcgKnNydik7CiAgICAgZ2w6OkVycm9yIGNsZWFyVGV4dHVyZXMoZ2w6OlNhbXBsZXJU
eXBlIHNhbXBsZXJUeXBlLCBzaXplX3QgcmFuZ2VTdGFydCwgc2l6ZV90IHJhbmdlRW5kKTsKIAot
ICAgIGdsOjpFcnJvciBzeW5jRnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFt
ZWJ1ZmZlcik7CisgICAgZ2w6OkVycm9yIHN5bmNGcmFtZWJ1ZmZlcihnbDo6RnJhbWVidWZmZXIg
KmZyYW1lYnVmZmVyKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZVJlbmRlclRhcmdldCgpOwogICAg
IHZvaWQgaW52YWxpZGF0ZUJvdW5kVmlld3MoKTsKQEAgLTkwLDcgKzkwLDcgQEAgY2xhc3MgU3Rh
dGVNYW5hZ2VyMTEgZmluYWwgOiBhbmdsZTo6Tm9uQwogCiAgICAgdm9pZCBvbkJlZ2luUXVlcnko
UXVlcnkxMSAqcXVlcnkpOwogICAgIHZvaWQgb25EZWxldGVRdWVyeU9iamVjdChRdWVyeTExICpx
dWVyeSk7Ci0gICAgZ2w6OkVycm9yIG9uTWFrZUN1cnJlbnQoY29uc3QgZ2w6OkRhdGEgJmRhdGEp
OworICAgIGdsOjpFcnJvciBvbk1ha2VDdXJyZW50KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRh
dGEpOwogCiAgICAgZ2w6OkVycm9yIHVwZGF0ZUN1cnJlbnRWYWx1ZUF0dHJpYnMoY29uc3QgZ2w6
OlN0YXRlICZzdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
ZXJ0ZXhEYXRhTWFuYWdlciAqdmVydGV4RGF0YU1hbmFnZXIpOwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdHJlYW0xMS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9TdHJlYW0xMS5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RyZWFtMTEu
Y3BwCShub25leGlzdGVudCkKQEAgLTEsMjYgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykg
MjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIFN0
cmVhbTExLmNwcDogRGVmaW5lcyB0aGUgcng6OlN0cmVhbTExIGNsYXNzIHdoaWNoIGltcGxlbWVu
dHMgcng6OlN0cmVhbUltcGwuCi0KLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvU3RyZWFtMTEuaCIKLQotI2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKLSNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyZXIxMS5oIgotI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxzLmgiCi0KLW5hbWVzcGFj
ZSByeAotewotCi1TdHJlYW0xMTo6U3RyZWFtMTEoUmVuZGVyZXIxMSAqcmVuZGVyZXIpIDogbVJl
bmRlcmVyKHJlbmRlcmVyKQotewotICAgIFVOVVNFRF9WQVJJQUJMRShtUmVuZGVyZXIpOwotfQot
Ci1TdHJlYW0xMTo6flN0cmVhbTExKCkKLXsKLX0KLX0gIC8vIG5hbWVzcGFjZSByeApJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9T
dHJlYW0xMS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RyZWFtMTEuaAkocmV2aXNpb24gMjA3ODA0KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9T
dHJlYW0xMS5oCShub25leGlzdGVudCkKQEAgLTEsMjkgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdo
dCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0K
LS8vIFN0cmVhbTExLmg6IERlZmluZXMgdGhlIHJ4OjpTdHJlYW0xMSBjbGFzcyB3aGljaCBpbXBs
ZW1lbnRzIHJ4OjpTdHJlYW1JbXBsLgotCi0jaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9E
M0QxMV9TVFJFQU0xMV9IXwotI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfU1RS
RUFNMTFfSF8KLQotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1N0cmVhbUltcGwuaCIKLQot
bmFtZXNwYWNlIHJ4Ci17Ci1jbGFzcyBSZW5kZXJlcjExOwotCi1jbGFzcyBTdHJlYW0xMSA6IHB1
YmxpYyBTdHJlYW1JbXBsCi17Ci0gIHB1YmxpYzoKLSAgICBTdHJlYW0xMShSZW5kZXJlcjExICpy
ZW5kZXJlcik7Ci0gICAgflN0cmVhbTExKCkgb3ZlcnJpZGU7Ci0KLSAgcHJpdmF0ZToKLSAgICBS
ZW5kZXJlcjExICptUmVuZGVyZXI7Ci19OwotfSAgLy8gbmFtZXNwYWNlIHJ4Ci0KLSNlbmRpZiAg
Ly8gTElCQU5HTEVfUkVOREVSRVJfRDNEX0QzRDExX1NUUkVBTTExX0hfCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0cmVhbVBy
b2R1Y2VyTlYxMi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdHJlYW1Qcm9kdWNlck5WMTIuY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvU3RyZWFtUHJvZHVjZXJOVjEyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEwMiBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFN0cmVhbVByb2R1Y2VyTlYxMi5jcHA6IElt
cGxlbWVudHMgdGhlIHN0cmVhbSBwcm9kdWNlciBmb3IgTlYxMiB0ZXh0dXJlcworCisjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0cmVhbVByb2R1Y2VyTlYxMi5oIgorCisj
aW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9SZW5kZXJlcjExLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL3JlbmRlcmVyMTFfdXRpbHMuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK1N0cmVhbVBy
b2R1Y2VyTlYxMjo6U3RyZWFtUHJvZHVjZXJOVjEyKFJlbmRlcmVyMTEgKnJlbmRlcmVyKQorICAg
IDogbVJlbmRlcmVyKHJlbmRlcmVyKSwgbVRleHR1cmUobnVsbHB0ciksIG1BcnJheVNsaWNlKDAp
LCBtVGV4dHVyZVdpZHRoKDApLCBtVGV4dHVyZUhlaWdodCgwKQoreworfQorCitTdHJlYW1Qcm9k
dWNlck5WMTI6On5TdHJlYW1Qcm9kdWNlck5WMTIoKQoreworICAgIFNhZmVSZWxlYXNlKG1UZXh0
dXJlKTsKK30KKworZWdsOjpFcnJvciBTdHJlYW1Qcm9kdWNlck5WMTI6OnZhbGlkYXRlRDNETlYx
MlRleHR1cmUodm9pZCAqcG9pbnRlcikgY29uc3QKK3sKKyAgICBJRDNEMTFUZXh0dXJlMkQgKnRl
eHR1cmVEM0QgPSBzdGF0aWNfY2FzdDxJRDNEMTFUZXh0dXJlMkQgKj4ocG9pbnRlcik7CisKKyAg
ICAvLyBDaGVjayB0aGF0IHRoZSB0ZXh0dXJlIG9yaWdpbmF0ZWQgZnJvbSBvdXIgZGV2aWNlCisg
ICAgSUQzRDExRGV2aWNlICpkZXZpY2U7CisgICAgdGV4dHVyZUQzRC0+R2V0RGV2aWNlKCZkZXZp
Y2UpOworICAgIGlmIChkZXZpY2UgIT0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfUEFSQU1FVEVSLCAiVGV4dHVyZSBub3Qg
Y3JlYXRlZCBvbiBBTkdMRSBEM0QgZGV2aWNlIik7CisgICAgfQorCisgICAgLy8gR2V0IHRoZSBk
ZXNjcmlwdGlvbiBhbmQgdmFsaWRhdGUgaXQKKyAgICBEM0QxMV9URVhUVVJFMkRfREVTQyBkZXNj
OworICAgIHRleHR1cmVEM0QtPkdldERlc2MoJmRlc2MpOworICAgIGlmIChkZXNjLkZvcm1hdCAh
PSBEWEdJX0ZPUk1BVF9OVjEyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdM
X0JBRF9QQVJBTUVURVIsICJUZXh0dXJlIGZvcm1hdCBub3QgRFhHSV9GT1JNQVRfTlYxMiIpOwor
ICAgIH0KKyAgICBpZiAoZGVzYy5XaWR0aCA8IDEgfHwgZGVzYy5IZWlnaHQgPCAxKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsICJUZXh0dXJlIGlz
IG9mIHNpemUgMCIpOworICAgIH0KKyAgICBpZiAoKGRlc2MuV2lkdGggJSAyKSAhPSAwIHx8IChk
ZXNjLkhlaWdodCAlIDIpICE9IDApCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihF
R0xfQkFEX1BBUkFNRVRFUiwgIlRleHR1cmUgZGltZW5zaW9ucyBhcmUgbm90IGV2ZW4iKTsKKyAg
ICB9CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOworfQorCit2b2lkIFN0cmVh
bVByb2R1Y2VyTlYxMjo6cG9zdEQzRE5WMTJUZXh0dXJlKHZvaWQgKnBvaW50ZXIsIGNvbnN0IGVn
bDo6QXR0cmlidXRlTWFwICZhdHRyaWJ1dGVzKQoreworICAgIEFTU0VSVChwb2ludGVyICE9IG51
bGxwdHIpOworICAgIElEM0QxMVRleHR1cmUyRCAqdGV4dHVyZUQzRCA9IHN0YXRpY19jYXN0PElE
M0QxMVRleHR1cmUyRCAqPihwb2ludGVyKTsKKworICAgIC8vIENoZWNrIHRoYXQgdGhlIHRleHR1
cmUgb3JpZ2luYXRlZCBmcm9tIG91ciBkZXZpY2UKKyAgICBJRDNEMTFEZXZpY2UgKmRldmljZTsK
KyAgICB0ZXh0dXJlRDNELT5HZXREZXZpY2UoJmRldmljZSk7CisKKyAgICAvLyBHZXQgdGhlIGRl
c2NyaXB0aW9uCisgICAgRDNEMTFfVEVYVFVSRTJEX0RFU0MgZGVzYzsKKyAgICB0ZXh0dXJlRDNE
LT5HZXREZXNjKCZkZXNjKTsKKworICAgIC8vIFJlbGVhc2UgdGhlIHByZXZpb3VzIHRleHR1cmUg
aWYgdGhlcmUgaXMgb25lCisgICAgU2FmZVJlbGVhc2UobVRleHR1cmUpOworCisgICAgbVRleHR1
cmUgPSB0ZXh0dXJlRDNEOworICAgIG1UZXh0dXJlLT5BZGRSZWYoKTsKKyAgICBtVGV4dHVyZVdp
ZHRoICA9IGRlc2MuV2lkdGg7CisgICAgbVRleHR1cmVIZWlnaHQgPSBkZXNjLkhlaWdodDsKKyAg
ICBtQXJyYXlTbGljZSAgICA9IHN0YXRpY19jYXN0PFVJTlQ+KGF0dHJpYnV0ZXMuZ2V0KEVHTF9E
M0RfVEVYVFVSRV9TVUJSRVNPVVJDRV9JRF9BTkdMRSwgMCkpOworfQorCitlZ2w6OlN0cmVhbTo6
R0xUZXh0dXJlRGVzY3JpcHRpb24gU3RyZWFtUHJvZHVjZXJOVjEyOjpnZXRHTEZyYW1lRGVzY3Jp
cHRpb24oaW50IHBsYW5lSW5kZXgpCit7CisgICAgLy8gVGhlIFVWIHBsYW5lIG9mIE5WMTIgdGV4
dHVyZXMgaGFzIGhhbGYgdGhlIHdpZHRoL2hlaWdodCBvZiB0aGUgWSBwbGFuZQorICAgIGVnbDo6
U3RyZWFtOjpHTFRleHR1cmVEZXNjcmlwdGlvbiBkZXNjOworICAgIGRlc2Mud2lkdGggICAgICAg
ICAgPSAocGxhbmVJbmRleCA9PSAwKSA/IG1UZXh0dXJlV2lkdGggOiAobVRleHR1cmVXaWR0aCAv
IDIpOworICAgIGRlc2MuaGVpZ2h0ICAgICAgICAgPSAocGxhbmVJbmRleCA9PSAwKSA/IG1UZXh0
dXJlSGVpZ2h0IDogKG1UZXh0dXJlSGVpZ2h0IC8gMik7CisgICAgZGVzYy5pbnRlcm5hbEZvcm1h
dCA9IChwbGFuZUluZGV4ID09IDApID8gR0xfUjggOiBHTF9SRzg7CisgICAgZGVzYy5taXBMZXZl
bHMgICAgICA9IDA7CisgICAgcmV0dXJuIGRlc2M7Cit9CisKK0lEM0QxMVRleHR1cmUyRCAqU3Ry
ZWFtUHJvZHVjZXJOVjEyOjpnZXREM0RUZXh0dXJlKCkKK3sKKyAgICByZXR1cm4gbVRleHR1cmU7
Cit9CisKK1VJTlQgU3RyZWFtUHJvZHVjZXJOVjEyOjpnZXRBcnJheVNsaWNlKCkKK3sKKyAgICBy
ZXR1cm4gbUFycmF5U2xpY2U7Cit9CisKK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdHJlYW1Q
cm9kdWNlck5WMTIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0cmVhbVByb2R1Y2VyTlYxMi5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvU3RyZWFtUHJvZHVjZXJOVjEyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0
NCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFN0cmVhbVByb2R1Y2VyTlYxMi5oOiBJbnRlcmZhY2Ug
Zm9yIGEgTlYxMiB0ZXh0dXJlIHN0cmVhbSBwcm9kdWNlcgorCisjaWZuZGVmIExJQkFOR0xFX1JF
TkRFUkVSX0QzRF9EM0QxMV9TVFJFQU0xMV9IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9E
M0RfRDNEMTFfU1RSRUFNMTFfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1N0cmVh
bVByb2R1Y2VySW1wbC5oIgorCituYW1lc3BhY2UgcngKK3sKK2NsYXNzIFJlbmRlcmVyMTE7CisK
K2NsYXNzIFN0cmVhbVByb2R1Y2VyTlYxMiA6IHB1YmxpYyBTdHJlYW1Qcm9kdWNlckltcGwKK3sK
KyAgcHVibGljOgorICAgIFN0cmVhbVByb2R1Y2VyTlYxMihSZW5kZXJlcjExICpyZW5kZXJlcik7
CisgICAgflN0cmVhbVByb2R1Y2VyTlYxMigpIG92ZXJyaWRlOworCisgICAgZWdsOjpFcnJvciB2
YWxpZGF0ZUQzRE5WMTJUZXh0dXJlKHZvaWQgKnBvaW50ZXIpIGNvbnN0IG92ZXJyaWRlOworICAg
IHZvaWQgcG9zdEQzRE5WMTJUZXh0dXJlKHZvaWQgKnBvaW50ZXIsIGNvbnN0IGVnbDo6QXR0cmli
dXRlTWFwICZhdHRyaWJ1dGVzKSBvdmVycmlkZTsKKyAgICBlZ2w6OlN0cmVhbTo6R0xUZXh0dXJl
RGVzY3JpcHRpb24gZ2V0R0xGcmFtZURlc2NyaXB0aW9uKGludCBwbGFuZUluZGV4KSBvdmVycmlk
ZTsKKworICAgIC8vIEdldHMgYSBwb2ludGVyIHRvIHRoZSBpbnRlcm5hbCBEM0QgdGV4dHVyZQor
ICAgIElEM0QxMVRleHR1cmUyRCAqZ2V0RDNEVGV4dHVyZSgpOworCisgICAgLy8gR2V0cyB0aGUg
c2xpY2UgaW5kZXggZm9yIHRoZSBEM0QgdGV4dHVyZSB0aGF0IHRoZSBmcmFtZSBpcyBpbgorICAg
IFVJTlQgZ2V0QXJyYXlTbGljZSgpOworCisgIHByaXZhdGU6CisgICAgUmVuZGVyZXIxMSAqbVJl
bmRlcmVyOworCisgICAgSUQzRDExVGV4dHVyZTJEICptVGV4dHVyZTsKKyAgICBVSU5UIG1BcnJh
eVNsaWNlOworICAgIFVJTlQgbVRleHR1cmVXaWR0aDsKKyAgICBVSU5UIG1UZXh0dXJlSGVpZ2h0
OworfTsKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVS
X0QzRF9EM0QxMV9TVFJFQU0xMV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Td2FwQ2hhaW4xMS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9Td2FwQ2hhaW4xMS5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3dhcENoYWluMTEuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMiw3ICsxMiw3IEBACiAKICNpbmNsdWRlICJsaWJBTkdMRS9mZWF0
dXJlcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9mb3JtYXR1dGls
czExLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL05hdGl2ZVdpbmRv
dy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9OYXRpdmVXaW5kb3cx
MS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFfdXRpbHMu
aCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRf
dGFibGUuaCIKQEAgLTMzLDIyICszMywyOCBAQCBuYW1lc3BhY2UgcngKIAogbmFtZXNwYWNlCiB7
Ci1ib29sIE5lZWRzT2Zmc2NyZWVuVGV4dHVyZShSZW5kZXJlcjExICpyZW5kZXJlciwgTmF0aXZl
V2luZG93IG5hdGl2ZVdpbmRvdywgRUdMaW50IG9yaWVudGF0aW9uKQorLy8gVG8gYXZvaWQgb3Zl
cmZsb3cgaW4gUVBDIHRvIE1pY3Jvc2Vjb25kcyBjYWxjdWxhdGlvbnMsIHNpbmNlIHdlIG11bHRp
cGx5CisvLyBieSBrTWljcm9zZWNvbmRzUGVyU2Vjb25kLCB0aGVuIHRoZSBRUEMgdmFsdWUgc2hv
dWxkIG5vdCBleGNlZWQKKy8vICgyXjYzIC0gMSkgLyAxRTYuIElmIGl0IGV4Y2VlZHMgdGhhdCB0
aHJlc2hvbGQsIHdlIGRpdmlkZSB0aGVuIG11bHRpcGx5Lgorc3RhdGljIGNvbnN0ZXhwciBpbnQ2
NF90IGtRUENPdmVyZmxvd1RocmVzaG9sZCAgPSAweDg2MzdCRDA1QUY3Oworc3RhdGljIGNvbnN0
ZXhwciBpbnQ2NF90IGtNaWNyb3NlY29uZHNQZXJTZWNvbmQgPSAxMDAwMDAwOworCitib29sIE5l
ZWRzT2Zmc2NyZWVuVGV4dHVyZShSZW5kZXJlcjExICpyZW5kZXJlciwgTmF0aXZlV2luZG93MTEg
Km5hdGl2ZVdpbmRvdywgRUdMaW50IG9yaWVudGF0aW9uKQogewogICAgIC8vIFdlIGRvbid0IG5l
ZWQgYW4gb2Zmc2NyZWVuIHRleHR1cmUgaWYgZWl0aGVyIG9yaWVudGF0aW9uID0gSU5WRVJUX1ks
CiAgICAgLy8gb3IgcHJlc2VudCBwYXRoIGZhc3QgaXMgZW5hYmxlZCBhbmQgd2UncmUgbm90IHJl
bmRlcmluZyBvbnRvIGFuIG9mZnNjcmVlbiBzdXJmYWNlLgogICAgIHJldHVybiBvcmllbnRhdGlv
biAhPSBFR0xfU1VSRkFDRV9PUklFTlRBVElPTl9JTlZFUlRfWV9BTkdMRSAmJgotICAgICAgICAg
ICAhKHJlbmRlcmVyLT5wcmVzZW50UGF0aEZhc3RFbmFibGVkKCkgJiYgbmF0aXZlV2luZG93Lmdl
dE5hdGl2ZVdpbmRvdygpKTsKKyAgICAgICAgICAgIShyZW5kZXJlci0+cHJlc2VudFBhdGhGYXN0
RW5hYmxlZCgpICYmIG5hdGl2ZVdpbmRvdy0+Z2V0TmF0aXZlV2luZG93KCkpOwogfQogfSAgLy8g
YW5vbnltb3VzIG5hbWVzcGFjZQogCiBTd2FwQ2hhaW4xMTo6U3dhcENoYWluMTEoUmVuZGVyZXIx
MSAqcmVuZGVyZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgTmF0aXZlV2luZG93IG5hdGl2
ZVdpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICBOYXRpdmVXaW5kb3cxMSAqbmF0aXZl
V2luZG93LAogICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRSBzaGFyZUhhbmRsZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYmFja0J1ZmZlckZvcm1hdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gZGVwdGhCdWZmZXJGb3JtYXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgRUdMaW50IG9yaWVudGF0aW9uKQotICAgIDogU3dhcENoYWluRDNEKG5hdGl2
ZVdpbmRvdywgc2hhcmVIYW5kbGUsIGJhY2tCdWZmZXJGb3JtYXQsIGRlcHRoQnVmZmVyRm9ybWF0
KSwKKyAgICA6IFN3YXBDaGFpbkQzRChzaGFyZUhhbmRsZSwgYmFja0J1ZmZlckZvcm1hdCwgZGVw
dGhCdWZmZXJGb3JtYXQpLAogICAgICAgbVJlbmRlcmVyKHJlbmRlcmVyKSwKICAgICAgIG1XaWR0
aCgtMSksCiAgICAgICBtSGVpZ2h0KC0xKSwKQEAgLTU2LDYgKzYyLDcgQEAgU3dhcENoYWluMTE6
OlN3YXBDaGFpbjExKFJlbmRlcmVyMTEgKnJlbgogICAgICAgbUFwcENyZWF0ZWRTaGFyZUhhbmRs
ZShtU2hhcmVIYW5kbGUgIT0gbnVsbHB0ciksCiAgICAgICBtU3dhcEludGVydmFsKDApLAogICAg
ICAgbVBhc3NUaHJvdWdoUmVzb3VyY2VzSW5pdChmYWxzZSksCisgICAgICBtTmF0aXZlV2luZG93
KG5hdGl2ZVdpbmRvdyksCiAgICAgICBtRmlyc3RTd2FwKHRydWUpLAogICAgICAgbVN3YXBDaGFp
bihudWxscHRyKSwKICAgICAgIG1Td2FwQ2hhaW4xKG51bGxwdHIpLApAQCAtODEsNiArODgsMTQg
QEAgU3dhcENoYWluMTE6OlN3YXBDaGFpbjExKFJlbmRlcmVyMTEgKnJlbgogewogICAgIC8vIFNh
bml0eSBjaGVjayB0aGF0IGlmIHByZXNlbnQgcGF0aCBmYXN0IGlzIGFjdGl2ZSB0aGVuIHdlJ3Jl
IHVzaW5nIHRoZSBkZWZhdWx0IG9yaWVudGF0aW9uCiAgICAgQVNTRVJUKCFtUmVuZGVyZXItPnBy
ZXNlbnRQYXRoRmFzdEVuYWJsZWQoKSB8fCBvcmllbnRhdGlvbiA9PSAwKTsKKworICAgIC8vIEdl
dCB0aGUgcGVyZm9ybWFuY2UgY291bnRlcgorICAgIExBUkdFX0lOVEVHRVIgY291bnRlckZyZXFl
bmN5ID0ge307CisgICAgQk9PTCBzdWNjZXNzICAgICAgICAgICAgICAgICAgPSBRdWVyeVBlcmZv
cm1hbmNlRnJlcXVlbmN5KCZjb3VudGVyRnJlcWVuY3kpOworICAgIFVOVVNFRF9BU1NFUlRJT05f
VkFSSUFCTEUoc3VjY2Vzcyk7CisgICAgQVNTRVJUKHN1Y2Nlc3MpOworCisgICAgbVFQQ0ZyZXF1
ZW5jeSA9IGNvdW50ZXJGcmVxZW5jeS5RdWFkUGFydDsKIH0KIAogU3dhcENoYWluMTE6On5Td2Fw
Q2hhaW4xMSgpCkBAIC0xNzYsNyArMTkxLDggQEAgRUdMaW50IFN3YXBDaGFpbjExOjpyZXNldE9m
ZnNjcmVlbkNvbG9yQgogCiAgICAgcmVsZWFzZU9mZnNjcmVlbkNvbG9yQnVmZmVyKCk7CiAKLSAg
ICBjb25zdCBkM2QxMTo6VGV4dHVyZUZvcm1hdCAmYmFja2J1ZmZlckZvcm1hdEluZm8gPSBkM2Qx
MTo6R2V0VGV4dHVyZUZvcm1hdEluZm8obU9mZnNjcmVlblJlbmRlclRhcmdldEZvcm1hdCwgbVJl
bmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpKTsKKyAgICBjb25zdCBkM2QxMTo6Rm9y
bWF0ICZiYWNrYnVmZmVyRm9ybWF0SW5mbyA9CisgICAgICAgIGQzZDExOjpGb3JtYXQ6OkdldCht
T2Zmc2NyZWVuUmVuZGVyVGFyZ2V0Rm9ybWF0LCBtUmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZp
Y2VDYXBzKCkpOwogCiAgICAgLy8gSWYgdGhlIGFwcCBwYXNzZWQgaW4gYSBzaGFyZSBoYW5kbGUs
IG9wZW4gdGhlIHJlc291cmNlCiAgICAgLy8gU2VlIEVHTF9BTkdMRV9kM2Rfc2hhcmVfaGFuZGxl
X2NsaWVudF9idWZmZXIKQEAgLTIwOCw3ICsyMjQsNyBAQCBFR0xpbnQgU3dhcENoYWluMTE6OnJl
c2V0T2Zmc2NyZWVuQ29sb3JCCiAKICAgICAgICAgaWYgKG9mZnNjcmVlblRleHR1cmVEZXNjLldp
ZHRoICE9IChVSU5UKWJhY2tidWZmZXJXaWR0aCB8fAogICAgICAgICAgICAgb2Zmc2NyZWVuVGV4
dHVyZURlc2MuSGVpZ2h0ICE9IChVSU5UKWJhY2tidWZmZXJIZWlnaHQgfHwKLSAgICAgICAgICAg
IG9mZnNjcmVlblRleHR1cmVEZXNjLkZvcm1hdCAhPSBiYWNrYnVmZmVyRm9ybWF0SW5mby5mb3Jt
YXRTZXQtPnRleEZvcm1hdCB8fAorICAgICAgICAgICAgb2Zmc2NyZWVuVGV4dHVyZURlc2MuRm9y
bWF0ICE9IGJhY2tidWZmZXJGb3JtYXRJbmZvLnRleEZvcm1hdCB8fAogICAgICAgICAgICAgb2Zm
c2NyZWVuVGV4dHVyZURlc2MuTWlwTGV2ZWxzICE9IDEgfHwgb2Zmc2NyZWVuVGV4dHVyZURlc2Mu
QXJyYXlTaXplICE9IDEpCiAgICAgICAgIHsKICAgICAgICAgICAgIEVSUigiSW52YWxpZCB0ZXh0
dXJlIHBhcmFtZXRlcnMgaW4gdGhlIHNoYXJlZCBvZmZzY3JlZW4gdGV4dHVyZSBwYnVmZmVyIik7
CkBAIC0yMTgsMTIgKzIzNCwxMyBAQCBFR0xpbnQgU3dhcENoYWluMTE6OnJlc2V0T2Zmc2NyZWVu
Q29sb3JCCiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGNvbnN0IGJvb2wgdXNlU2hh
cmVkUmVzb3VyY2UgPSAhbU5hdGl2ZVdpbmRvdy5nZXROYXRpdmVXaW5kb3coKSAmJiBtUmVuZGVy
ZXItPmdldFNoYXJlSGFuZGxlU3VwcG9ydCgpOworICAgICAgICBjb25zdCBib29sIHVzZVNoYXJl
ZFJlc291cmNlID0KKyAgICAgICAgICAgICFtTmF0aXZlV2luZG93LT5nZXROYXRpdmVXaW5kb3co
KSAmJiBtUmVuZGVyZXItPmdldFNoYXJlSGFuZGxlU3VwcG9ydCgpOwogCiAgICAgICAgIEQzRDEx
X1RFWFRVUkUyRF9ERVNDIG9mZnNjcmVlblRleHR1cmVEZXNjID0gezB9OwogICAgICAgICBvZmZz
Y3JlZW5UZXh0dXJlRGVzYy5XaWR0aCA9IGJhY2tidWZmZXJXaWR0aDsKICAgICAgICAgb2Zmc2Ny
ZWVuVGV4dHVyZURlc2MuSGVpZ2h0ID0gYmFja2J1ZmZlckhlaWdodDsKLSAgICAgICAgb2Zmc2Ny
ZWVuVGV4dHVyZURlc2MuRm9ybWF0ICAgICAgICAgICAgICAgPSBiYWNrYnVmZmVyRm9ybWF0SW5m
by5mb3JtYXRTZXQtPnRleEZvcm1hdDsKKyAgICAgICAgb2Zmc2NyZWVuVGV4dHVyZURlc2MuRm9y
bWF0ICAgICAgICAgICAgICAgPSBiYWNrYnVmZmVyRm9ybWF0SW5mby50ZXhGb3JtYXQ7CiAgICAg
ICAgIG9mZnNjcmVlblRleHR1cmVEZXNjLk1pcExldmVscyA9IDE7CiAgICAgICAgIG9mZnNjcmVl
blRleHR1cmVEZXNjLkFycmF5U2l6ZSA9IDE7CiAgICAgICAgIG9mZnNjcmVlblRleHR1cmVEZXNj
LlNhbXBsZURlc2MuQ291bnQgPSAxOwpAQCAtMjgxLDcgKzI5OCw3IEBAIEVHTGludCBTd2FwQ2hh
aW4xMTo6cmVzZXRPZmZzY3JlZW5Db2xvckIKICAgICBtS2V5ZWRNdXRleCA9IGQzZDExOjpEeW5h
bWljQ2FzdENvbU9iamVjdDxJRFhHSUtleWVkTXV0ZXg+KG1PZmZzY3JlZW5UZXh0dXJlKTsKIAog
ICAgIEQzRDExX1JFTkRFUl9UQVJHRVRfVklFV19ERVNDIG9mZnNjcmVlblJUVkRlc2M7Ci0gICAg
b2Zmc2NyZWVuUlRWRGVzYy5Gb3JtYXQgICAgICAgICAgICAgPSBiYWNrYnVmZmVyRm9ybWF0SW5m
by5mb3JtYXRTZXQtPnJ0dkZvcm1hdDsKKyAgICBvZmZzY3JlZW5SVFZEZXNjLkZvcm1hdCAgICAg
ICAgICAgICA9IGJhY2tidWZmZXJGb3JtYXRJbmZvLnJ0dkZvcm1hdDsKICAgICBvZmZzY3JlZW5S
VFZEZXNjLlZpZXdEaW1lbnNpb24gPSBEM0QxMV9SVFZfRElNRU5TSU9OX1RFWFRVUkUyRDsKICAg
ICBvZmZzY3JlZW5SVFZEZXNjLlRleHR1cmUyRC5NaXBTbGljZSA9IDA7CiAKQEAgLTI5MCw3ICsz
MDcsNyBAQCBFR0xpbnQgU3dhcENoYWluMTE6OnJlc2V0T2Zmc2NyZWVuQ29sb3JCCiAgICAgZDNk
MTE6OlNldERlYnVnTmFtZShtT2Zmc2NyZWVuUlRWaWV3LCAiT2Zmc2NyZWVuIGJhY2sgYnVmZmVy
IHJlbmRlciB0YXJnZXQiKTsKIAogICAgIEQzRDExX1NIQURFUl9SRVNPVVJDRV9WSUVXX0RFU0Mg
b2Zmc2NyZWVuU1JWRGVzYzsKLSAgICBvZmZzY3JlZW5TUlZEZXNjLkZvcm1hdCAgICAgICAgICAg
ICAgICAgICAgPSBiYWNrYnVmZmVyRm9ybWF0SW5mby5mb3JtYXRTZXQtPnNydkZvcm1hdDsKKyAg
ICBvZmZzY3JlZW5TUlZEZXNjLkZvcm1hdCAgICAgICAgICAgICAgICAgICAgPSBiYWNrYnVmZmVy
Rm9ybWF0SW5mby5zcnZGb3JtYXQ7CiAgICAgb2Zmc2NyZWVuU1JWRGVzYy5WaWV3RGltZW5zaW9u
ID0gRDNEMTFfU1JWX0RJTUVOU0lPTl9URVhUVVJFMkQ7CiAgICAgb2Zmc2NyZWVuU1JWRGVzYy5U
ZXh0dXJlMkQuTW9zdERldGFpbGVkTWlwID0gMDsKICAgICBvZmZzY3JlZW5TUlZEZXNjLlRleHR1
cmUyRC5NaXBMZXZlbHMgPSBzdGF0aWNfY2FzdDxVSU5UPigtMSk7CkBAIC0zMzEsMTMgKzM0OCwx
MyBAQCBFR0xpbnQgU3dhcENoYWluMTE6OnJlc2V0T2Zmc2NyZWVuRGVwdGhCCiAKICAgICBpZiAo
bURlcHRoQnVmZmVyRm9ybWF0ICE9IEdMX05PTkUpCiAgICAgewotICAgICAgICBjb25zdCBkM2Qx
MTo6VGV4dHVyZUZvcm1hdCAmZGVwdGhCdWZmZXJGb3JtYXRJbmZvID0KLSAgICAgICAgICAgIGQz
ZDExOjpHZXRUZXh0dXJlRm9ybWF0SW5mbyhtRGVwdGhCdWZmZXJGb3JtYXQsIG1SZW5kZXJlci0+
Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKSk7CisgICAgICAgIGNvbnN0IGQzZDExOjpGb3JtYXQg
JmRlcHRoQnVmZmVyRm9ybWF0SW5mbyA9CisgICAgICAgICAgICBkM2QxMTo6Rm9ybWF0OjpHZXQo
bURlcHRoQnVmZmVyRm9ybWF0LCBtUmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCkp
OwogCiAgICAgICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIGRlcHRoU3RlbmNpbFRleHR1cmVEZXNj
OwogICAgICAgICBkZXB0aFN0ZW5jaWxUZXh0dXJlRGVzYy5XaWR0aCA9IGJhY2tidWZmZXJXaWR0
aDsKICAgICAgICAgZGVwdGhTdGVuY2lsVGV4dHVyZURlc2MuSGVpZ2h0ID0gYmFja2J1ZmZlckhl
aWdodDsKLSAgICAgICAgZGVwdGhTdGVuY2lsVGV4dHVyZURlc2MuRm9ybWF0ICAgICAgICAgICAg
ID0gZGVwdGhCdWZmZXJGb3JtYXRJbmZvLmZvcm1hdFNldC0+dGV4Rm9ybWF0OworICAgICAgICBk
ZXB0aFN0ZW5jaWxUZXh0dXJlRGVzYy5Gb3JtYXQgICAgICAgICAgICAgPSBkZXB0aEJ1ZmZlckZv
cm1hdEluZm8udGV4Rm9ybWF0OwogICAgICAgICBkZXB0aFN0ZW5jaWxUZXh0dXJlRGVzYy5NaXBM
ZXZlbHMgPSAxOwogICAgICAgICBkZXB0aFN0ZW5jaWxUZXh0dXJlRGVzYy5BcnJheVNpemUgPSAx
OwogICAgICAgICBkZXB0aFN0ZW5jaWxUZXh0dXJlRGVzYy5TYW1wbGVEZXNjLkNvdW50ID0gMTsK
QEAgLTM0NSw3ICszNjIsNyBAQCBFR0xpbnQgU3dhcENoYWluMTE6OnJlc2V0T2Zmc2NyZWVuRGVw
dGhCCiAgICAgICAgIGRlcHRoU3RlbmNpbFRleHR1cmVEZXNjLlVzYWdlID0gRDNEMTFfVVNBR0Vf
REVGQVVMVDsKICAgICAgICAgZGVwdGhTdGVuY2lsVGV4dHVyZURlc2MuQmluZEZsYWdzID0gRDNE
MTFfQklORF9ERVBUSF9TVEVOQ0lMOwogCi0gICAgICAgIGlmIChkZXB0aEJ1ZmZlckZvcm1hdElu
Zm8uZm9ybWF0U2V0LT5zcnZGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTikKKyAgICAgICAg
aWYgKGRlcHRoQnVmZmVyRm9ybWF0SW5mby5zcnZGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9X
TikKICAgICAgICAgewogICAgICAgICAgICAgZGVwdGhTdGVuY2lsVGV4dHVyZURlc2MuQmluZEZs
YWdzIHw9IEQzRDExX0JJTkRfU0hBREVSX1JFU09VUkNFOwogICAgICAgICB9CkBAIC0zNzMsNyAr
MzkwLDcgQEAgRUdMaW50IFN3YXBDaGFpbjExOjpyZXNldE9mZnNjcmVlbkRlcHRoQgogICAgICAg
ICBkM2QxMTo6U2V0RGVidWdOYW1lKG1EZXB0aFN0ZW5jaWxUZXh0dXJlLCAiT2Zmc2NyZWVuIGRl
cHRoIHN0ZW5jaWwgdGV4dHVyZSIpOwogCiAgICAgICAgIEQzRDExX0RFUFRIX1NURU5DSUxfVklF
V19ERVNDIGRlcHRoU3RlbmNpbERlc2M7Ci0gICAgICAgIGRlcHRoU3RlbmNpbERlc2MuRm9ybWF0
ICAgICAgICAgICAgID0gZGVwdGhCdWZmZXJGb3JtYXRJbmZvLmZvcm1hdFNldC0+ZHN2Rm9ybWF0
OworICAgICAgICBkZXB0aFN0ZW5jaWxEZXNjLkZvcm1hdCAgICAgICAgICAgICA9IGRlcHRoQnVm
ZmVyRm9ybWF0SW5mby5kc3ZGb3JtYXQ7CiAgICAgICAgIGRlcHRoU3RlbmNpbERlc2MuVmlld0Rp
bWVuc2lvbiA9IEQzRDExX0RTVl9ESU1FTlNJT05fVEVYVFVSRTJEOwogICAgICAgICBkZXB0aFN0
ZW5jaWxEZXNjLkZsYWdzID0gMDsKICAgICAgICAgZGVwdGhTdGVuY2lsRGVzYy5UZXh0dXJlMkQu
TWlwU2xpY2UgPSAwOwpAQCAtMzgyLDEwICszOTksMTAgQEAgRUdMaW50IFN3YXBDaGFpbjExOjpy
ZXNldE9mZnNjcmVlbkRlcHRoQgogICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwog
ICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1EZXB0aFN0ZW5jaWxEU1ZpZXcsICJPZmZzY3Jl
ZW4gZGVwdGggc3RlbmNpbCB2aWV3Iik7CiAKLSAgICAgICAgaWYgKGRlcHRoQnVmZmVyRm9ybWF0
SW5mby5mb3JtYXRTZXQtPnNydkZvcm1hdCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dOKQorICAgICAg
ICBpZiAoZGVwdGhCdWZmZXJGb3JtYXRJbmZvLnNydkZvcm1hdCAhPSBEWEdJX0ZPUk1BVF9VTktO
T1dOKQogICAgICAgICB7CiAgICAgICAgICAgICBEM0QxMV9TSEFERVJfUkVTT1VSQ0VfVklFV19E
RVNDIGRlcHRoU3RlbmNpbFNSVkRlc2M7Ci0gICAgICAgICAgICBkZXB0aFN0ZW5jaWxTUlZEZXNj
LkZvcm1hdCAgICAgICAgICAgICAgICAgICAgPSBkZXB0aEJ1ZmZlckZvcm1hdEluZm8uZm9ybWF0
U2V0LT5zcnZGb3JtYXQ7CisgICAgICAgICAgICBkZXB0aFN0ZW5jaWxTUlZEZXNjLkZvcm1hdCAg
ICAgICAgICAgICAgICAgICAgPSBkZXB0aEJ1ZmZlckZvcm1hdEluZm8uc3J2Rm9ybWF0OwogICAg
ICAgICAgICAgZGVwdGhTdGVuY2lsU1JWRGVzYy5WaWV3RGltZW5zaW9uID0gRDNEMTFfU1JWX0RJ
TUVOU0lPTl9URVhUVVJFMkQ7CiAgICAgICAgICAgICBkZXB0aFN0ZW5jaWxTUlZEZXNjLlRleHR1
cmUyRC5Nb3N0RGV0YWlsZWRNaXAgPSAwOwogICAgICAgICAgICAgZGVwdGhTdGVuY2lsU1JWRGVz
Yy5UZXh0dXJlMkQuTWlwTGV2ZWxzID0gc3RhdGljX2Nhc3Q8VUlOVD4oLTEpOwpAQCAtNDg3LDcg
KzUwNCw3IEBAIERYR0lfRk9STUFUIFN3YXBDaGFpbjExOjpnZXRTd2FwQ2hhaW5OYXQKICAgICBy
ZXR1cm4gKG1PZmZzY3JlZW5SZW5kZXJUYXJnZXRGb3JtYXQgPT0gR0xfQkdSQThfRVhUKSA/IERY
R0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNIDogRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk07CiB9
CiAKLUVHTGludCBTd2FwQ2hhaW4xMTo6cmVzZXQoaW50IGJhY2tidWZmZXJXaWR0aCwgaW50IGJh
Y2tidWZmZXJIZWlnaHQsIEVHTGludCBzd2FwSW50ZXJ2YWwpCitFR0xpbnQgU3dhcENoYWluMTE6
OnJlc2V0KEVHTGludCBiYWNrYnVmZmVyV2lkdGgsIEVHTGludCBiYWNrYnVmZmVySGVpZ2h0LCBF
R0xpbnQgc3dhcEludGVydmFsKQogewogICAgIG1Td2FwSW50ZXJ2YWwgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBpbnQ+KHN3YXBJbnRlcnZhbCk7CiAgICAgaWYgKG1Td2FwSW50ZXJ2YWwgPiA0KQpA
QCAtNTI1LDExICs1NDIsMTEgQEAgRUdMaW50IFN3YXBDaGFpbjExOjpyZXNldChpbnQgYmFja2J1
ZmZlcgogICAgICAgICByZXR1cm4gRUdMX1NVQ0NFU1M7CiAgICAgfQogCi0gICAgaWYgKG1OYXRp
dmVXaW5kb3cuZ2V0TmF0aXZlV2luZG93KCkpCisgICAgaWYgKG1OYXRpdmVXaW5kb3ctPmdldE5h
dGl2ZVdpbmRvdygpKQogICAgIHsKLSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtTmF0aXZlV2lu
ZG93LmNyZWF0ZVN3YXBDaGFpbihkZXZpY2UsIG1SZW5kZXJlci0+Z2V0RHhnaUZhY3RvcnkoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0U3dhcENo
YWluTmF0aXZlRm9ybWF0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJhY2tidWZmZXJXaWR0aCwgYmFja2J1ZmZlckhlaWdodCwgJm1Td2FwQ2hhaW4p
OworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1OYXRpdmVXaW5kb3ctPmNyZWF0ZVN3YXBDaGFp
bihkZXZpY2UsIG1SZW5kZXJlci0+Z2V0RHhnaUZhY3RvcnkoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0U3dhcENoYWluTmF0aXZl
Rm9ybWF0KCksIGJhY2tidWZmZXJXaWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2J1ZmZlckhlaWdodCwgJm1Td2FwQ2hhaW4p
OwogCiAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAgICAgICAgewpAQCAtODM0LDcgKzg1
MSw3IEBAIEVHTGludCBTd2FwQ2hhaW4xMTo6cHJlc2VudChFR0xpbnQgeCwgRUcKICAgICAgICAg
RVJSKCJQcmVzZW50IGZhaWxlZCB3aXRoIGVycm9yIGNvZGUgMHglMDhYIiwgcmVzdWx0KTsKICAg
ICB9CiAKLSAgICBtTmF0aXZlV2luZG93LmNvbW1pdENoYW5nZSgpOworICAgIG1OYXRpdmVXaW5k
b3ctPmNvbW1pdENoYW5nZSgpOwogCiAgICAgcmV0dXJuIEVHTF9TVUNDRVNTOwogfQpAQCAtODc0
LDQgKzg5MSw0MSBAQCB2b2lkIFN3YXBDaGFpbjExOjpyZWNyZWF0ZSgpCiAgICAgLy8gcG9zc2li
bHkgc2hvdWxkIHVzZSB0aGlzIG1ldGhvZCBpbnN0ZWFkIG9mIHJlc2V0CiB9CiAKK2VnbDo6RXJy
b3IgU3dhcENoYWluMTE6OmdldFN5bmNWYWx1ZXMoRUdMdWludDY0S0hSICp1c3QsIEVHTHVpbnQ2
NEtIUiAqbXNjLCBFR0x1aW50NjRLSFIgKnNiYykKK3sKKyAgICBEWEdJX0ZSQU1FX1NUQVRJU1RJ
Q1Mgc3RhdHMgPSB7fTsKKyAgICBIUkVTVUxUIHJlc3VsdCAgICAgICAgICAgICAgPSBtU3dhcENo
YWluLT5HZXRGcmFtZVN0YXRpc3RpY3MoJnN0YXRzKTsKKworICAgIGlmIChGQUlMRUQocmVzdWx0
KSkKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfQUxMT0MsICJGYWls
ZWQgdG8gZ2V0IGZyYW1lIHN0YXRpc3RpY3MsIHJlc3VsdDogMHglWCIsIHJlc3VsdCk7CisgICAg
fQorCisgICAgLy8gQ29udmVyc2lvbiBmcm9tIERYR0lfRlJBTUVfU1RBVElTVElDUyB0byB0aGUg
b3V0cHV0IHZhbHVlczoKKyAgICAvLyBzdGF0cy5TeW5jUmVmcmVzaENvdW50IC0+IG1zYworICAg
IC8vIHN0YXRzLlByZXNlbnRDb3VudCAtPiBzYmMKKyAgICAvLyBzdGF0cy5TeW5jUVBDVGltZSAt
PiB1c3Qgd2l0aCBjb252ZXJzaW9uIHRvIG1pY3Jvc2Vjb25kcyB2aWEgUXVlcnlQZXJmb3JtYW5j
ZUZyZXF1ZW5jeQorICAgICptc2MgPSBzdGF0cy5TeW5jUmVmcmVzaENvdW50OworICAgICpzYmMg
PSBzdGF0cy5QcmVzZW50Q291bnQ7CisKKyAgICBMT05HTE9ORyBzeW5jUVBDVmFsdWUgPSBzdGF0
cy5TeW5jUVBDVGltZS5RdWFkUGFydDsKKyAgICAvLyBJZiB0aGUgUVBDIFZhbHVlIGlzIGJlbG93
IHRoZSBvdmVyZmxvdyB0aHJlc2hvbGQsIHdlIHByb2NlZWQgd2l0aAorICAgIC8vIHNpbXBsZSBt
dWx0aXBseSBhbmQgZGl2aWRlLgorICAgIGlmIChzeW5jUVBDVmFsdWUgPCBrUVBDT3ZlcmZsb3dU
aHJlc2hvbGQpCisgICAgeworICAgICAgICAqdXN0ID0gc3luY1FQQ1ZhbHVlICoga01pY3Jvc2Vj
b25kc1BlclNlY29uZCAvIG1RUENGcmVxdWVuY3k7CisgICAgfQorICAgIGVsc2UKKyAgICB7Cisg
ICAgICAgIC8vIE90aGVyd2lzZSwgY2FsY3VsYXRlIG1pY3Jvc2Vjb25kcyBpbiBhIHJvdW5kIGFi
b3V0IG1hbm5lciB0byBhdm9pZAorICAgICAgICAvLyBvdmVyZmxvdyBhbmQgcHJlY2lzaW9uIGlz
c3Vlcy4KKyAgICAgICAgaW50NjRfdCB3aG9sZVNlY29uZHMgID0gc3luY1FQQ1ZhbHVlIC8gbVFQ
Q0ZyZXF1ZW5jeTsKKyAgICAgICAgaW50NjRfdCBsZWZ0b3ZlclRpY2tzID0gc3luY1FQQ1ZhbHVl
IC0gKHdob2xlU2Vjb25kcyAqIG1RUENGcmVxdWVuY3kpOworICAgICAgICAqdXN0ICAgICAgICAg
ICAgICAgICAgPSB3aG9sZVNlY29uZHMgKiBrTWljcm9zZWNvbmRzUGVyU2Vjb25kICsKKyAgICAg
ICAgICAgICAgIGxlZnRvdmVyVGlja3MgKiBrTWljcm9zZWNvbmRzUGVyU2Vjb25kIC8gbVFQQ0Zy
ZXF1ZW5jeTsKKyAgICB9CisKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CiB9
CisKK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Td2FwQ2hhaW4xMS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
U3dhcENoYWluMTEuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Td2FwQ2hhaW4xMS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNiwxMiArMTYsMTMgQEAKIG5hbWVzcGFjZSByeAogewogY2xhc3MgUmVuZGVy
ZXIxMTsKK2NsYXNzIE5hdGl2ZVdpbmRvdzExOwogCi1jbGFzcyBTd2FwQ2hhaW4xMSA6IHB1Ymxp
YyBTd2FwQ2hhaW5EM0QKK2NsYXNzIFN3YXBDaGFpbjExIGZpbmFsIDogcHVibGljIFN3YXBDaGFp
bkQzRAogewogICBwdWJsaWM6CiAgICAgU3dhcENoYWluMTEoUmVuZGVyZXIxMSAqcmVuZGVyZXIs
Ci0gICAgICAgICAgICAgICAgTmF0aXZlV2luZG93IG5hdGl2ZVdpbmRvdywKKyAgICAgICAgICAg
ICAgICBOYXRpdmVXaW5kb3cxMSAqbmF0aXZlV2luZG93LAogICAgICAgICAgICAgICAgIEhBTkRM
RSBzaGFyZUhhbmRsZSwKICAgICAgICAgICAgICAgICBHTGVudW0gYmFja0J1ZmZlckZvcm1hdCwK
ICAgICAgICAgICAgICAgICBHTGVudW0gZGVwdGhCdWZmZXJGb3JtYXQsCkBAIC0yOSwyNSArMzAs
MjcgQEAgY2xhc3MgU3dhcENoYWluMTEgOiBwdWJsaWMgU3dhcENoYWluRDNECiAgICAgdmlydHVh
bCB+U3dhcENoYWluMTEoKTsKIAogICAgIEVHTGludCByZXNpemUoRUdMaW50IGJhY2tidWZmZXJX
aWR0aCwgRUdMaW50IGJhY2tidWZmZXJIZWlnaHQpOwotICAgIHZpcnR1YWwgRUdMaW50IHJlc2V0
KEVHTGludCBiYWNrYnVmZmVyV2lkdGgsIEVHTGludCBiYWNrYnVmZmVySGVpZ2h0LCBFR0xpbnQg
c3dhcEludGVydmFsKTsKLSAgICB2aXJ0dWFsIEVHTGludCBzd2FwUmVjdChFR0xpbnQgeCwgRUdM
aW50IHksIEVHTGludCB3aWR0aCwgRUdMaW50IGhlaWdodCk7Ci0gICAgdmlydHVhbCB2b2lkIHJl
Y3JlYXRlKCk7CisgICAgRUdMaW50IHJlc2V0KEVHTGludCBiYWNrYnVmZmVyV2lkdGgsIEVHTGlu
dCBiYWNrYnVmZmVySGVpZ2h0LCBFR0xpbnQgc3dhcEludGVydmFsKSBvdmVycmlkZTsKKyAgICBF
R0xpbnQgc3dhcFJlY3QoRUdMaW50IHgsIEVHTGludCB5LCBFR0xpbnQgd2lkdGgsIEVHTGludCBo
ZWlnaHQpIG92ZXJyaWRlOworICAgIHZvaWQgcmVjcmVhdGUoKSBvdmVycmlkZTsKIAogICAgIFJl
bmRlclRhcmdldEQzRCAqZ2V0Q29sb3JSZW5kZXJUYXJnZXQoKSBvdmVycmlkZSB7IHJldHVybiAm
bUNvbG9yUmVuZGVyVGFyZ2V0OyB9CiAgICAgUmVuZGVyVGFyZ2V0RDNEICpnZXREZXB0aFN0ZW5j
aWxSZW5kZXJUYXJnZXQoKSBvdmVycmlkZSB7IHJldHVybiAmbURlcHRoU3RlbmNpbFJlbmRlclRh
cmdldDsgfQogCi0gICAgdmlydHVhbCBJRDNEMTFUZXh0dXJlMkQgKmdldE9mZnNjcmVlblRleHR1
cmUoKTsKLSAgICB2aXJ0dWFsIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKmdldFJlbmRlclRhcmdl
dCgpOwotICAgIHZpcnR1YWwgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpnZXRSZW5kZXJUYXJn
ZXRTaGFkZXJSZXNvdXJjZSgpOwotCi0gICAgdmlydHVhbCBJRDNEMTFUZXh0dXJlMkQgKmdldERl
cHRoU3RlbmNpbFRleHR1cmUoKTsKLSAgICB2aXJ0dWFsIElEM0QxMURlcHRoU3RlbmNpbFZpZXcg
KmdldERlcHRoU3RlbmNpbCgpOwotICAgIHZpcnR1YWwgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3
ICpnZXREZXB0aFN0ZW5jaWxTaGFkZXJSZXNvdXJjZSgpOworICAgIElEM0QxMVRleHR1cmUyRCAq
Z2V0T2Zmc2NyZWVuVGV4dHVyZSgpOworICAgIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKmdldFJl
bmRlclRhcmdldCgpOworICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqZ2V0UmVuZGVyVGFy
Z2V0U2hhZGVyUmVzb3VyY2UoKTsKKworICAgIElEM0QxMVRleHR1cmUyRCAqZ2V0RGVwdGhTdGVu
Y2lsVGV4dHVyZSgpOworICAgIElEM0QxMURlcHRoU3RlbmNpbFZpZXcgKmdldERlcHRoU3RlbmNp
bCgpOworICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqZ2V0RGVwdGhTdGVuY2lsU2hhZGVy
UmVzb3VyY2UoKTsKIAogICAgIEVHTGludCBnZXRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1XaWR0
aDsgfQogICAgIEVHTGludCBnZXRIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtSGVpZ2h0OyB9CiAg
ICAgdm9pZCAqZ2V0S2V5ZWRNdXRleCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1LZXllZE11dGV4OyB9
CiAKKyAgICBlZ2w6OkVycm9yIGdldFN5bmNWYWx1ZXMoRUdMdWludDY0S0hSICp1c3QsIEVHTHVp
bnQ2NEtIUiAqbXNjLCBFR0x1aW50NjRLSFIgKnNiYykgb3ZlcnJpZGU7CisKICAgcHJpdmF0ZToK
ICAgICB2b2lkIHJlbGVhc2UoKTsKICAgICB2b2lkIGluaXRQYXNzVGhyb3VnaFJlc291cmNlcygp
OwpAQCAtNzEsOCArNzQsMTAgQEAgY2xhc3MgU3dhcENoYWluMTEgOiBwdWJsaWMgU3dhcENoYWlu
RDNECiAgICAgdW5zaWduZWQgaW50IG1Td2FwSW50ZXJ2YWw7CiAgICAgYm9vbCBtUGFzc1Rocm91
Z2hSZXNvdXJjZXNJbml0OwogCisgICAgTmF0aXZlV2luZG93MTEgKm1OYXRpdmVXaW5kb3c7ICAv
LyBIYW5kbGVyIGZvciB0aGUgV2luZG93IHRoYXQgdGhlIHN1cmZhY2UgaXMgY3JlYXRlZCBmb3Iu
CisKICAgICBib29sIG1GaXJzdFN3YXA7Ci0gICAgRFhHSVN3YXBDaGFpbiAqbVN3YXBDaGFpbjsK
KyAgICBJRFhHSVN3YXBDaGFpbiAqbVN3YXBDaGFpbjsKICAgICBJRFhHSVN3YXBDaGFpbjEgKm1T
d2FwQ2hhaW4xOwogICAgIElEWEdJS2V5ZWRNdXRleCAqbUtleWVkTXV0ZXg7CiAKQEAgLTk4LDcg
KzEwMyw5IEBAIGNsYXNzIFN3YXBDaGFpbjExIDogcHVibGljIFN3YXBDaGFpbkQzRAogCiAgICAg
U3VyZmFjZVJlbmRlclRhcmdldDExIG1Db2xvclJlbmRlclRhcmdldDsKICAgICBTdXJmYWNlUmVu
ZGVyVGFyZ2V0MTEgbURlcHRoU3RlbmNpbFJlbmRlclRhcmdldDsKKworICAgIExPTkdMT05HIG1R
UENGcmVxdWVuY3k7CiB9OwogCi19Cit9ICAvLyBuYW1lc3BhY2UgcngKICNlbmRpZiAvLyBMSUJB
TkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfU1dBUENIQUlOMTFfSF8KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVGV4dHVyZVN0b3Jh
Z2UxMS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9UZXh0dXJlU3RvcmFnZTExLmNwcAkocmV2aXNpb24gMjA3
ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9UZXh0dXJlU3RvcmFnZTExLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIs
NyBAQAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFfdXRpbHMu
aCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyVGFyZ2V0MTEu
aCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RyZWFtUHJvZHVjZXJO
VjEyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N3YXBDaGFpbjEx
LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0
X3RhYmxlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL0VHTEltYWdlRDNELmgi
CkBAIC0zMCw1NCArMzEsMjkgQEAKIG5hbWVzcGFjZSByeAogewogCi1UZXh0dXJlU3RvcmFnZTEx
OjpTd2l6emxlQ2FjaGVWYWx1ZTo6U3dpenpsZUNhY2hlVmFsdWUoKQotICAgIDogc3dpenpsZVJl
ZChHTF9JTlZBTElEX0lOREVYKSwKLSAgICAgIHN3aXp6bGVHcmVlbihHTF9JTlZBTElEX0lOREVY
KSwKLSAgICAgIHN3aXp6bGVCbHVlKEdMX0lOVkFMSURfSU5ERVgpLAotICAgICAgc3dpenpsZUFs
cGhhKEdMX0lOVkFMSURfSU5ERVgpCi17Ci19Ci0KLVRleHR1cmVTdG9yYWdlMTE6OlN3aXp6bGVD
YWNoZVZhbHVlOjpTd2l6emxlQ2FjaGVWYWx1ZShHTGVudW0gcmVkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBncmVlbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gYmx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gYWxwaGEpCi0gICAgOiBzd2l6emxlUmVkKHJlZCksIHN3aXp6bGVHcmVl
bihncmVlbiksIHN3aXp6bGVCbHVlKGJsdWUpLCBzd2l6emxlQWxwaGEoYWxwaGEpCi17Ci19Ci0K
LWJvb2wgVGV4dHVyZVN0b3JhZ2UxMTo6U3dpenpsZUNhY2hlVmFsdWU6Om9wZXJhdG9yPT0oY29u
c3QgU3dpenpsZUNhY2hlVmFsdWUgJm90aGVyKSBjb25zdAotewotICAgIHJldHVybiBzd2l6emxl
UmVkID09IG90aGVyLnN3aXp6bGVSZWQgJiYgc3dpenpsZUdyZWVuID09IG90aGVyLnN3aXp6bGVH
cmVlbiAmJgotICAgICAgICAgICBzd2l6emxlQmx1ZSA9PSBvdGhlci5zd2l6emxlQmx1ZSAmJiBz
d2l6emxlQWxwaGEgPT0gb3RoZXIuc3dpenpsZUFscGhhOwotfQotCi1ib29sIFRleHR1cmVTdG9y
YWdlMTE6OlN3aXp6bGVDYWNoZVZhbHVlOjpvcGVyYXRvciE9KGNvbnN0IFN3aXp6bGVDYWNoZVZh
bHVlICZvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci19Ci0K
LVRleHR1cmVTdG9yYWdlMTE6OlNSVktleTo6U1JWS2V5KGludCBiYXNlTGV2ZWwsIGludCBtaXBM
ZXZlbHMsIGJvb2wgc3dpenpsZSkKLSAgICA6IGJhc2VMZXZlbChiYXNlTGV2ZWwpLCBtaXBMZXZl
bHMobWlwTGV2ZWxzKSwgc3dpenpsZShzd2l6emxlKQorVGV4dHVyZVN0b3JhZ2UxMTo6U1JWS2V5
OjpTUlZLZXkoaW50IGJhc2VMZXZlbCwgaW50IG1pcExldmVscywgYm9vbCBzd2l6emxlLCBib29s
IGRyb3BTdGVuY2lsKQorICAgIDogYmFzZUxldmVsKGJhc2VMZXZlbCksIG1pcExldmVscyhtaXBM
ZXZlbHMpLCBzd2l6emxlKHN3aXp6bGUpLCBkcm9wU3RlbmNpbChkcm9wU3RlbmNpbCkKIHsKIH0K
IAogYm9vbCBUZXh0dXJlU3RvcmFnZTExOjpTUlZLZXk6Om9wZXJhdG9yPChjb25zdCBTUlZLZXkg
JnJocykgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjp0aWUoYmFzZUxldmVsLCBtaXBMZXZlbHMs
IHN3aXp6bGUpIDwKLSAgICAgICAgICAgc3RkOjp0aWUocmhzLmJhc2VMZXZlbCwgcmhzLm1pcExl
dmVscywgcmhzLnN3aXp6bGUpOworICAgIHJldHVybiBzdGQ6OnRpZShiYXNlTGV2ZWwsIG1pcExl
dmVscywgc3dpenpsZSwgZHJvcFN0ZW5jaWwpIDwKKyAgICAgICAgICAgc3RkOjp0aWUocmhzLmJh
c2VMZXZlbCwgcmhzLm1pcExldmVscywgcmhzLnN3aXp6bGUsIHJocy5kcm9wU3RlbmNpbCk7CiB9
CiAKLVRleHR1cmVTdG9yYWdlMTE6OlRleHR1cmVTdG9yYWdlMTEoUmVuZGVyZXIxMSAqcmVuZGVy
ZXIsIFVJTlQgYmluZEZsYWdzLCBVSU5UIG1pc2NGbGFncykKK1RleHR1cmVTdG9yYWdlMTE6OlRl
eHR1cmVTdG9yYWdlMTEoUmVuZGVyZXIxMSAqcmVuZGVyZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVJTlQgYmluZEZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVSU5UIG1pc2NGbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0KQogICAgIDogbVJlbmRlcmVyKHJlbmRlcmVyKSwK
ICAgICAgIG1Ub3BMZXZlbCgwKSwKICAgICAgIG1NaXBMZXZlbHMoMCksCi0gICAgICBtSW50ZXJu
YWxGb3JtYXQoR0xfTk9ORSksCi0gICAgICBtVGV4dHVyZUZvcm1hdFNldChudWxscHRyKSwKLSAg
ICAgIG1Td2l6emxlRm9ybWF0U2V0KG51bGxwdHIpLAorICAgICAgbUZvcm1hdEluZm8oZDNkMTE6
OkZvcm1hdDo6R2V0KGludGVybmFsRm9ybWF0LCBtUmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZp
Y2VDYXBzKCkpKSwKICAgICAgIG1UZXh0dXJlV2lkdGgoMCksCiAgICAgICBtVGV4dHVyZUhlaWdo
dCgwKSwKICAgICAgIG1UZXh0dXJlRGVwdGgoMCksCisgICAgICBtRHJvcFN0ZW5jaWxUZXh0dXJl
KG51bGxwdHIpLAogICAgICAgbUJpbmRGbGFncyhiaW5kRmxhZ3MpLAogICAgICAgbU1pc2NGbGFn
cyhtaXNjRmxhZ3MpCiB7CkBAIC05OCw2ICs3NCw3IEBAIFRleHR1cmVTdG9yYWdlMTE6On5UZXh0
dXJlU3RvcmFnZTExKCkKICAgICAgICAgU2FmZVJlbGVhc2UoaS0+c2Vjb25kKTsKICAgICB9CiAg
ICAgbVNydkNhY2hlLmNsZWFyKCk7CisgICAgU2FmZVJlbGVhc2UobURyb3BTdGVuY2lsVGV4dHVy
ZSk7CiB9CiAKIERXT1JEIFRleHR1cmVTdG9yYWdlMTE6OkdldFRleHR1cmVCaW5kRmxhZ3MoR0xl
bnVtIGludGVybmFsRm9ybWF0LApAQCAtMTA2LDE3ICs4MywxNiBAQCBEV09SRCBUZXh0dXJlU3Rv
cmFnZTExOjpHZXRUZXh0dXJlQmluZEZsCiB7CiAgICAgVUlOVCBiaW5kRmxhZ3MgPSAwOwogCi0g
ICAgY29uc3QgZDNkMTE6OlRleHR1cmVGb3JtYXQgJmZvcm1hdEluZm8gPQotICAgICAgICBkM2Qx
MTo6R2V0VGV4dHVyZUZvcm1hdEluZm8oaW50ZXJuYWxGb3JtYXQsIHJlbmRlcmVyMTFEZXZpY2VD
YXBzKTsKLSAgICBpZiAoZm9ybWF0SW5mby5mb3JtYXRTZXQtPnNydkZvcm1hdCAhPSBEWEdJX0ZP
Uk1BVF9VTktOT1dOKQorICAgIGNvbnN0IGQzZDExOjpGb3JtYXQgJmZvcm1hdEluZm8gPSBkM2Qx
MTo6Rm9ybWF0OjpHZXQoaW50ZXJuYWxGb3JtYXQsIHJlbmRlcmVyMTFEZXZpY2VDYXBzKTsKKyAg
ICBpZiAoZm9ybWF0SW5mby5zcnZGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTikKICAgICB7
CiAgICAgICAgIGJpbmRGbGFncyB8PSBEM0QxMV9CSU5EX1NIQURFUl9SRVNPVVJDRTsKICAgICB9
Ci0gICAgaWYgKGZvcm1hdEluZm8uZm9ybWF0U2V0LT5kc3ZGb3JtYXQgIT0gRFhHSV9GT1JNQVRf
VU5LTk9XTikKKyAgICBpZiAoZm9ybWF0SW5mby5kc3ZGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5L
Tk9XTikKICAgICB7CiAgICAgICAgIGJpbmRGbGFncyB8PSBEM0QxMV9CSU5EX0RFUFRIX1NURU5D
SUw7CiAgICAgfQotICAgIGlmIChmb3JtYXRJbmZvLmZvcm1hdFNldC0+cnR2Rm9ybWF0ICE9IERY
R0lfRk9STUFUX1VOS05PV04gJiYgcmVuZGVyVGFyZ2V0KQorICAgIGlmIChmb3JtYXRJbmZvLnJ0
dkZvcm1hdCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dOICYmIHJlbmRlclRhcmdldCkKICAgICB7CiAg
ICAgICAgIGJpbmRGbGFncyB8PSBEM0QxMV9CSU5EX1JFTkRFUl9UQVJHRVQ7CiAgICAgfQpAQCAt
MTMxLDE0ICsxMDcsMTAgQEAgRFdPUkQgVGV4dHVyZVN0b3JhZ2UxMTo6R2V0VGV4dHVyZU1pc2NG
bAogewogICAgIFVJTlQgbWlzY0ZsYWdzID0gMDsKIAotICAgIGNvbnN0IGQzZDExOjpUZXh0dXJl
Rm9ybWF0ICZmb3JtYXRJbmZvID0KLSAgICAgICAgZDNkMTE6OkdldFRleHR1cmVGb3JtYXRJbmZv
KGludGVybmFsRm9ybWF0LCByZW5kZXJlcjExRGV2aWNlQ2Fwcyk7CisgICAgY29uc3QgZDNkMTE6
OkZvcm1hdCAmZm9ybWF0SW5mbyA9IGQzZDExOjpGb3JtYXQ6OkdldChpbnRlcm5hbEZvcm1hdCwg
cmVuZGVyZXIxMURldmljZUNhcHMpOwogICAgIGlmIChyZW5kZXJUYXJnZXQgJiYgbGV2ZWxzID4g
MSkKICAgICB7Ci0gICAgICAgIGNvbnN0IGQzZDExOjpEWEdJRm9ybWF0ICZkeGdpRm9ybWF0SW5m
byA9Ci0gICAgICAgICAgICBkM2QxMTo6R2V0RFhHSUZvcm1hdEluZm8oZm9ybWF0SW5mby5mb3Jt
YXRTZXQtPnRleEZvcm1hdCk7Ci0KLSAgICAgICAgaWYgKGR4Z2lGb3JtYXRJbmZvLm5hdGl2ZU1p
cG1hcFN1cHBvcnQocmVuZGVyZXIxMURldmljZUNhcHMuZmVhdHVyZUxldmVsKSkKKyAgICAgICAg
aWYgKGQzZDExOjpTdXBwb3J0c01pcEdlbihmb3JtYXRJbmZvLnRleEZvcm1hdCwgcmVuZGVyZXIx
MURldmljZUNhcHMuZmVhdHVyZUxldmVsKSkKICAgICAgICAgewogICAgICAgICAgICAgbWlzY0Zs
YWdzIHw9IEQzRDExX1JFU09VUkNFX01JU0NfR0VORVJBVEVfTUlQUzsKICAgICAgICAgfQpAQCAt
MTU5LDYgKzEzMSw4IEBAIFVJTlQgVGV4dHVyZVN0b3JhZ2UxMTo6Z2V0TWlzY0ZsYWdzKCkgY28K
IAogaW50IFRleHR1cmVTdG9yYWdlMTE6OmdldFRvcExldmVsKCkgY29uc3QKIHsKKyAgICAvLyBB
cHBseWluZyB0b3AgbGV2ZWwgaXMgbWVhbnQgdG8gYmUgZW5jYXBzdWxhdGVkIGluc2lkZSBUZXh0
dXJlU3RvcmFnZTExLgorICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgcmV0dXJuIG1Ub3BMZXZlbDsK
IH0KIApAQCAtMjA5LDEzICsxODMsMTYgQEAgVUlOVCBUZXh0dXJlU3RvcmFnZTExOjpnZXRTdWJy
ZXNvdXJjZUluZAogZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTE6OmdldFNSVihjb25zdCBnbDo6
VGV4dHVyZVN0YXRlICZ0ZXh0dXJlU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqKm91dFNSVikKIHsKKyAgICAvLyBNYWtl
IHN1cmUgdG8gYWRkIHRoZSBsZXZlbCBvZmZzZXQgZm9yIG91ciB0aW55IGNvbXByZXNzZWQgdGV4
dHVyZSB3b3JrYXJvdW5kCisgICAgY29uc3QgR0x1aW50IGVmZmVjdGl2ZUJhc2VMZXZlbCA9IHRl
eHR1cmVTdGF0ZS5nZXRFZmZlY3RpdmVCYXNlTGV2ZWwoKTsKICAgICBib29sIHN3aXp6bGVSZXF1
aXJlZCAgID0gdGV4dHVyZVN0YXRlLnN3aXp6bGVSZXF1aXJlZCgpOwotICAgIGJvb2wgbWlwbWFw
cGluZyAgICAgICAgPSBnbDo6SXNNaXBtYXBGaWx0ZXJlZCh0ZXh0dXJlU3RhdGUuc2FtcGxlclN0
YXRlKTsKLSAgICB1bnNpZ25lZCBpbnQgbWlwTGV2ZWxzID0gbWlwbWFwcGluZyA/ICh0ZXh0dXJl
U3RhdGUubWF4TGV2ZWwgLSB0ZXh0dXJlU3RhdGUuYmFzZUxldmVsICsgMSkgOiAxOworICAgIGJv
b2wgbWlwbWFwcGluZyA9IGdsOjpJc01pcG1hcEZpbHRlcmVkKHRleHR1cmVTdGF0ZS5nZXRTYW1w
bGVyU3RhdGUoKSk7CisgICAgdW5zaWduZWQgaW50IG1pcExldmVscyA9CisgICAgICAgIG1pcG1h
cHBpbmcgPyAodGV4dHVyZVN0YXRlLmdldEVmZmVjdGl2ZU1heExldmVsKCkgLSBlZmZlY3RpdmVC
YXNlTGV2ZWwgKyAxKSA6IDE7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhlcmUncyAnbWlwTGV2ZWxz
JyBtaXBtYXAgbGV2ZWxzIGJlbG93IHRoZSBiYXNlIGxldmVsIChvZmZzZXQgYnkgdGhlIHRvcCBs
ZXZlbCwKICAgICAvLyB3aGljaCBjb3JyZXNwb25kcyB0byBHTCBsZXZlbCAwKQotICAgIG1pcExl
dmVscyA9IHN0ZDo6bWluKG1pcExldmVscywgbU1pcExldmVscyAtIG1Ub3BMZXZlbCAtIHRleHR1
cmVTdGF0ZS5iYXNlTGV2ZWwpOworICAgIG1pcExldmVscyA9IHN0ZDo6bWluKG1pcExldmVscywg
bU1pcExldmVscyAtIG1Ub3BMZXZlbCAtIGVmZmVjdGl2ZUJhc2VMZXZlbCk7CiAKICAgICBpZiAo
bVJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpLmZlYXR1cmVMZXZlbCA8PSBEM0Rf
RkVBVFVSRV9MRVZFTF85XzMpCiAgICAgewpAQCAtMjI2LDU4ICsyMDMsNzQgQEAgZ2w6OkVycm9y
IFRleHR1cmVTdG9yYWdlMTE6OmdldFNSVihjb25zdAogICAgIGlmIChtUmVuZGVyZXItPmdldFdv
cmthcm91bmRzKCkuemVyb01heExvZFdvcmthcm91bmQpCiAgICAgewogICAgICAgICAvLyBXZSBt
dXN0IGVuc3VyZSB0aGF0IHRoZSBsZXZlbCB6ZXJvIHRleHR1cmUgaXMgaW4gc3luYyB3aXRoIG1p
cHBlZCB0ZXh0dXJlLgotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSB1c2VMZXZlbFplcm9Xb3Jr
YXJvdW5kVGV4dHVyZShtaXBMZXZlbHMgPT0gMSk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9y
KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAg
ICAgICBBTkdMRV9UUlkodXNlTGV2ZWxaZXJvV29ya2Fyb3VuZFRleHR1cmUobWlwTGV2ZWxzID09
IDEpKTsKICAgICB9CiAKICAgICBpZiAoc3dpenpsZVJlcXVpcmVkKQogICAgIHsKLSAgICAgICAg
dmVyaWZ5U3dpenpsZUV4aXN0cyh0ZXh0dXJlU3RhdGUuc3dpenpsZVJlZCwgdGV4dHVyZVN0YXRl
LnN3aXp6bGVHcmVlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlU3RhdGUu
c3dpenpsZUJsdWUsIHRleHR1cmVTdGF0ZS5zd2l6emxlQWxwaGEpOworICAgICAgICB2ZXJpZnlT
d2l6emxlRXhpc3RzKHRleHR1cmVTdGF0ZS5nZXRTd2l6emxlU3RhdGUoKSk7CiAgICAgfQogCi0g
ICAgU1JWS2V5IGtleSh0ZXh0dXJlU3RhdGUuYmFzZUxldmVsLCBtaXBMZXZlbHMsIHN3aXp6bGVS
ZXF1aXJlZCk7CisgICAgLy8gV2UgZHJvcCB0aGUgc3RlbmNpbCB3aGVuIHNhbXBsaW5nIGZyb20g
dGhlIFNSViBpZiB0aHJlZSBjb25kaXRpb25zIGhvbGQ6CisgICAgLy8gMS4gdGhlIGRyb3Agc3Rl
bmNpbCB3b3JrYXJvdW5kIGlzIGVuYWJsZWQuCisgICAgYm9vbCB3b3JrYXJvdW5kID0gbVJlbmRl
cmVyLT5nZXRXb3JrYXJvdW5kcygpLmVtdWxhdGVUaW55U3RlbmNpbFRleHR1cmVzOworICAgIC8v
IDIuIHRoaXMgaXMgYSBzdGVuY2lsIHRleHR1cmUuCisgICAgYm9vbCBoYXNTdGVuY2lsID0gKG1G
b3JtYXRJbmZvLmZvcm1hdC5zdGVuY2lsQml0cyA+IDApOworICAgIC8vIDMuIHRoZSB0ZXh0dXJl
IGhhcyBhIDF4MSBvciAyeDIgbWlwLgorICAgIGJvb2wgaGFzU21hbGxNaXBzID0gKGdldExldmVs
V2lkdGgobU1pcExldmVscyAtIDEpIDw9IDIgfHwgZ2V0TGV2ZWxIZWlnaHQobU1pcExldmVscyAt
IDEpIDw9IDIpOworCisgICAgYm9vbCB1c2VEcm9wU3RlbmNpbCA9ICh3b3JrYXJvdW5kICYmIGhh
c1N0ZW5jaWwgJiYgaGFzU21hbGxNaXBzKTsKKyAgICBpZiAodXNlRHJvcFN0ZW5jaWwpCisgICAg
eworICAgICAgICAvLyBFbnN1cmUgZHJvcCB0ZXh0dXJlIGdldHMgcmUtY3JlYXRlZCwgaWYgU1JW
IGlzIGNhY2hlZC4KKyAgICAgICAgQU5HTEVfVFJZKGNyZWF0ZURyb3BTdGVuY2lsVGV4dHVyZSgp
KTsKKyAgICB9CisKKyAgICBTUlZLZXkga2V5KGVmZmVjdGl2ZUJhc2VMZXZlbCwgbWlwTGV2ZWxz
LCBzd2l6emxlUmVxdWlyZWQsIHVzZURyb3BTdGVuY2lsKTsKKyAgICBBTkdMRV9UUlkoZ2V0Q2Fj
aGVkT3JDcmVhdGVTUlYoa2V5LCBvdXRTUlYpKTsKKworICAgIHJldHVybiBnbDo6Tm9FcnJvcigp
OworfQorCitnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMTo6Z2V0Q2FjaGVkT3JDcmVhdGVTUlYo
Y29uc3QgU1JWS2V5ICZrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICoqb3V0U1JWKQorewogICAgIGF1
dG8gaXRlciA9IG1TcnZDYWNoZS5maW5kKGtleSk7CiAgICAgaWYgKGl0ZXIgIT0gbVNydkNhY2hl
LmVuZCgpKQogICAgIHsKICAgICAgICAgKm91dFNSViA9IGl0ZXItPnNlY29uZDsKLSAgICAgICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJv
cigpOwogICAgIH0KIAogICAgIElEM0QxMVJlc291cmNlICp0ZXh0dXJlID0gbnVsbHB0cjsKLSAg
ICBpZiAoc3dpenpsZVJlcXVpcmVkKQorICAgIERYR0lfRk9STUFUIGZvcm1hdCAgICAgID0gRFhH
SV9GT1JNQVRfVU5LTk9XTjsKKworICAgIGlmIChrZXkuc3dpenpsZSkKICAgICB7Ci0gICAgICAg
IGdsOjpFcnJvciBlcnJvciA9IGdldFN3aXp6bGVUZXh0dXJlKCZ0ZXh0dXJlKTsKLSAgICAgICAg
aWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9y
OwotICAgICAgICB9CisgICAgICAgIEFTU0VSVCgha2V5LmRyb3BTdGVuY2lsIHx8IG1Gb3JtYXRJ
bmZvLnN3aXp6bGUuZm9ybWF0LnN0ZW5jaWxCaXRzID09IDApOworICAgICAgICBBTkdMRV9UUlko
Z2V0U3dpenpsZVRleHR1cmUoJnRleHR1cmUpKTsKKyAgICAgICAgZm9ybWF0ID0gbUZvcm1hdElu
Zm8uc3dpenpsZS5zcnZGb3JtYXQ7CisgICAgfQorICAgIGVsc2UgaWYgKGtleS5kcm9wU3RlbmNp
bCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtRHJvcFN0ZW5jaWxUZXh0dXJlKTsKKyAgICAgICAg
dGV4dHVyZSA9IG1Ecm9wU3RlbmNpbFRleHR1cmU7CisgICAgICAgIGZvcm1hdCAgPSBEWEdJX0ZP
Uk1BVF9SMzJfRkxPQVQ7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGdsOjpFcnJv
ciBlcnJvciA9IGdldFJlc291cmNlKCZ0ZXh0dXJlKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJy
b3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9Cisg
ICAgICAgIEFOR0xFX1RSWShnZXRSZXNvdXJjZSgmdGV4dHVyZSkpOworICAgICAgICBmb3JtYXQg
PSBtRm9ybWF0SW5mby5zcnZGb3JtYXQ7CiAgICAgfQogCiAgICAgSUQzRDExU2hhZGVyUmVzb3Vy
Y2VWaWV3ICpzcnYgPSBudWxscHRyOwotICAgIERYR0lfRk9STUFUIGZvcm1hdCA9Ci0gICAgICAg
IChzd2l6emxlUmVxdWlyZWQgPyBtU3dpenpsZUZvcm1hdFNldC0+c3J2Rm9ybWF0IDogbVRleHR1
cmVGb3JtYXRTZXQtPnNydkZvcm1hdCk7Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gY3JlYXRlU1JW
KHRleHR1cmVTdGF0ZS5iYXNlTGV2ZWwsIG1pcExldmVscywgZm9ybWF0LCB0ZXh0dXJlLCAmc3J2
KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9y
OwotICAgIH0KKworICAgIEFOR0xFX1RSWShjcmVhdGVTUlYoa2V5LmJhc2VMZXZlbCwga2V5Lm1p
cExldmVscywgZm9ybWF0LCB0ZXh0dXJlLCAmc3J2KSk7CiAKICAgICBtU3J2Q2FjaGUuaW5zZXJ0
KHN0ZDo6bWFrZV9wYWlyKGtleSwgc3J2KSk7CiAgICAgKm91dFNSViA9IHNydjsKIAotICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwog
fQogCiBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMTo6Z2V0U1JWTGV2ZWwoaW50IG1pcExldmVs
LApAQCAtMjkyLDggKzI4NSw3IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExOjpnZXRTUlZM
ZXZlbCgKICAgICBpZiAoIWxldmVsU1JWc1ttaXBMZXZlbF0pCiAgICAgewogICAgICAgICAvLyBP
bmx5IGNyZWF0ZSBhIGRpZmZlcmVudCBTUlYgZm9yIGJsaXQgaWYgYmxpdCBmb3JtYXQgaXMgZGlm
ZmVyZW50IGZyb20gcmVndWxhciBzcnYgZm9ybWF0Ci0gICAgICAgIGlmIChvdGhlckxldmVsU1JW
c1ttaXBMZXZlbF0gJiYKLSAgICAgICAgICAgIG1UZXh0dXJlRm9ybWF0U2V0LT5zcnZGb3JtYXQg
PT0gbVRleHR1cmVGb3JtYXRTZXQtPmJsaXRTUlZGb3JtYXQpCisgICAgICAgIGlmIChvdGhlckxl
dmVsU1JWc1ttaXBMZXZlbF0gJiYgbUZvcm1hdEluZm8uc3J2Rm9ybWF0ID09IG1Gb3JtYXRJbmZv
LmJsaXRTUlZGb3JtYXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGxldmVsU1JWc1ttaXBMZXZl
bF0gPSBvdGhlckxldmVsU1JWc1ttaXBMZXZlbF07CiAgICAgICAgICAgICBsZXZlbFNSVnNbbWlw
TGV2ZWxdLT5BZGRSZWYoKTsKQEAgLTMwMSwyNSArMjkzLDE3IEBAIGdsOjpFcnJvciBUZXh0dXJl
U3RvcmFnZTExOjpnZXRTUlZMZXZlbCgKICAgICAgICAgZWxzZQogICAgICAgICB7CiAgICAgICAg
ICAgICBJRDNEMTFSZXNvdXJjZSAqcmVzb3VyY2UgPSBudWxscHRyOwotICAgICAgICAgICAgZ2w6
OkVycm9yIGVycm9yID0gZ2V0UmVzb3VyY2UoJnJlc291cmNlKTsKLSAgICAgICAgICAgIGlmIChl
cnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVy
cm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgQU5HTEVfVFJZKGdldFJlc291cmNlKCZy
ZXNvdXJjZSkpOwogCiAgICAgICAgICAgICBEWEdJX0ZPUk1BVCByZXNvdXJjZUZvcm1hdCA9Ci0g
ICAgICAgICAgICAgICAgYmxpdFNSViA/IG1UZXh0dXJlRm9ybWF0U2V0LT5ibGl0U1JWRm9ybWF0
IDogbVRleHR1cmVGb3JtYXRTZXQtPnNydkZvcm1hdDsKLSAgICAgICAgICAgIGVycm9yID0gY3Jl
YXRlU1JWKG1pcExldmVsLCAxLCByZXNvdXJjZUZvcm1hdCwgcmVzb3VyY2UsICZsZXZlbFNSVnNb
bWlwTGV2ZWxdKTsKLSAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGJsaXRTUlYgPyBtRm9ybWF0SW5mby5ibGl0U1JWRm9ybWF0IDogbUZvcm1hdElu
Zm8uc3J2Rm9ybWF0OworICAgICAgICAgICAgQU5HTEVfVFJZKGNyZWF0ZVNSVihtaXBMZXZlbCwg
MSwgcmVzb3VyY2VGb3JtYXQsIHJlc291cmNlLCAmbGV2ZWxTUlZzW21pcExldmVsXSkpOwogICAg
ICAgICB9CiAgICAgfQogCiAgICAgKm91dFNSViA9IGxldmVsU1JWc1ttaXBMZXZlbF07CiAKLSAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3Io
KTsKIH0KIAogZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTE6OmdldFNSVkxldmVscyhHTGludCBi
YXNlTGV2ZWwsCkBAIC0zNDAsNTIgKzMyNCwyNCBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2Ux
MTo6Z2V0U1JWTGV2ZWxzCiAgICAgaWYgKG1SZW5kZXJlci0+Z2V0V29ya2Fyb3VuZHMoKS56ZXJv
TWF4TG9kV29ya2Fyb3VuZCkKICAgICB7CiAgICAgICAgIC8vIFdlIG11c3QgZW5zdXJlIHRoYXQg
dGhlIGxldmVsIHplcm8gdGV4dHVyZSBpcyBpbiBzeW5jIHdpdGggbWlwcGVkIHRleHR1cmUuCi0g
ICAgICAgIGdsOjpFcnJvciBlcnJvciA9IHVzZUxldmVsWmVyb1dvcmthcm91bmRUZXh0dXJlKG1p
cExldmVscyA9PSAxKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9CisgICAgICAgIEFOR0xFX1RSWSh1
c2VMZXZlbFplcm9Xb3JrYXJvdW5kVGV4dHVyZShtaXBMZXZlbHMgPT0gMSkpOwogICAgIH0KIAot
ICAgIFNSVktleSBrZXkoYmFzZUxldmVsLCBtaXBMZXZlbHMsIGZhbHNlKTsKLSAgICBhdXRvIGl0
ZXIgPSBtU3J2Q2FjaGUuZmluZChrZXkpOwotICAgIGlmIChpdGVyICE9IG1TcnZDYWNoZS5lbmQo
KSkKLSAgICB7Ci0gICAgICAgICpvdXRTUlYgPSBpdGVyLT5zZWNvbmQ7Ci0gICAgICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwotICAgIH0KKyAgICAvLyBUT0RPKGptYWRpbGwpOiBB
c3NlcnQgd2UgZG9uJ3QgbmVlZCB0byBkcm9wIHN0ZW5jaWwuCiAKLSAgICBJRDNEMTFSZXNvdXJj
ZSAqdGV4dHVyZSA9IG51bGxwdHI7Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gZ2V0UmVzb3VyY2Uo
JnRleHR1cmUpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1
cm4gZXJyb3I7Ci0gICAgfQorICAgIFNSVktleSBrZXkoYmFzZUxldmVsLCBtaXBMZXZlbHMsIGZh
bHNlLCBmYWxzZSk7CisgICAgQU5HTEVfVFJZKGdldENhY2hlZE9yQ3JlYXRlU1JWKGtleSwgb3V0
U1JWKSk7CiAKLSAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNydiA9IG51bGxwdHI7Ci0g
ICAgZXJyb3IgPSBjcmVhdGVTUlYoYmFzZUxldmVsLCBtaXBMZXZlbHMsIG1UZXh0dXJlRm9ybWF0
U2V0LT5zcnZGb3JtYXQsIHRleHR1cmUsICZzcnYpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
Ci0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQotCi0gICAgbVNydkNhY2hlW2tl
eV0gPSBzcnY7Ci0gICAgKm91dFNSViAgICAgICAgPSBzcnY7Ci0KLSAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZDNkMTE6
OkFOR0xFRm9ybWF0IFRleHR1cmVTdG9yYWdlMTE6OmdldEFOR0xFRm9ybWF0KCkgY29uc3QKK2Nv
bnN0IGQzZDExOjpGb3JtYXQgJlRleHR1cmVTdG9yYWdlMTE6OmdldEZvcm1hdFNldCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1UZXh0dXJlRm9ybWF0U2V0LT5mb3JtYXQ7CisgICAgcmV0dXJuIG1G
b3JtYXRJbmZvOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMTo6Z2VuZXJhdGVTd2l6
emxlcyhHTGVudW0gc3dpenpsZVJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBzd2l6emxlR3JlZW4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3dpenpsZUJsdWUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3dpenpsZUFscGhhKQorZ2w6
OkVycm9yIFRleHR1cmVTdG9yYWdlMTE6OmdlbmVyYXRlU3dpenpsZXMoY29uc3QgZ2w6OlN3aXp6
bGVTdGF0ZSAmc3dpenpsZVRhcmdldCkKIHsKLSAgICBTd2l6emxlQ2FjaGVWYWx1ZSBzd2l6emxl
VGFyZ2V0KHN3aXp6bGVSZWQsIHN3aXp6bGVHcmVlbiwgc3dpenpsZUJsdWUsIHN3aXp6bGVBbHBo
YSk7CiAgICAgZm9yIChpbnQgbGV2ZWwgPSAwOyBsZXZlbCA8IGdldExldmVsQ291bnQoKTsgbGV2
ZWwrKykKICAgICB7CiAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBzd2l6emxlIGZvciB0aGlzIGxl
dmVsIGlzIG91dCBvZiBkYXRlCkBAIC0zOTMsNTMgKzM0OSw0MSBAQCBnbDo6RXJyb3IgVGV4dHVy
ZVN0b3JhZ2UxMTo6Z2VuZXJhdGVTd2l6CiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIE5lZWQg
dG8gcmUtcmVuZGVyIHRoZSBzd2l6emxlIGZvciB0aGlzIGxldmVsCiAgICAgICAgICAgICBJRDNE
MTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNvdXJjZVNSViA9IG51bGxwdHI7Ci0gICAgICAgICAgICBn
bDo6RXJyb3IgZXJyb3IgICAgICAgICAgICAgICAgICAgICA9IGdldFNSVkxldmVsKGxldmVsLCB0
cnVlLCAmc291cmNlU1JWKTsKLQotICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAgICB9
CisgICAgICAgICAgICBBTkdMRV9UUlkoZ2V0U1JWTGV2ZWwobGV2ZWwsIHRydWUsICZzb3VyY2VT
UlYpKTsKIAogICAgICAgICAgICAgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqZGVzdFJUViA9IG51
bGxwdHI7Ci0gICAgICAgICAgICBlcnJvciA9IGdldFN3aXp6bGVSZW5kZXJUYXJnZXQobGV2ZWws
ICZkZXN0UlRWKTsKLSAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgfQorICAgICAg
ICAgICAgQU5HTEVfVFJZKGdldFN3aXp6bGVSZW5kZXJUYXJnZXQobGV2ZWwsICZkZXN0UlRWKSk7
CiAKICAgICAgICAgICAgIGdsOjpFeHRlbnRzIHNpemUoZ2V0TGV2ZWxXaWR0aChsZXZlbCksIGdl
dExldmVsSGVpZ2h0KGxldmVsKSwgZ2V0TGV2ZWxEZXB0aChsZXZlbCkpOwogCiAgICAgICAgICAg
ICBCbGl0MTEgKmJsaXR0ZXIgPSBtUmVuZGVyZXItPmdldEJsaXR0ZXIoKTsKIAotICAgICAgICAg
ICAgZXJyb3IgPSBibGl0dGVyLT5zd2l6emxlVGV4dHVyZShzb3VyY2VTUlYsIGRlc3RSVFYsIHNp
emUsIHN3aXp6bGVSZWQsIHN3aXp6bGVHcmVlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3dpenpsZUJsdWUsIHN3aXp6bGVBbHBoYSk7Ci0gICAgICAgICAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJl
dHVybiBlcnJvcjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFOR0xFX1RSWShibGl0dGVy
LT5zd2l6emxlVGV4dHVyZShzb3VyY2VTUlYsIGRlc3RSVFYsIHNpemUsIHN3aXp6bGVUYXJnZXQp
KTsKIAogICAgICAgICAgICAgbVN3aXp6bGVDYWNoZVtsZXZlbF0gPSBzd2l6emxlVGFyZ2V0Owog
ICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Cisg
ICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLXZvaWQgVGV4dHVyZVN0b3JhZ2UxMTo6aW52
YWxpZGF0ZVN3aXp6bGVDYWNoZUxldmVsKGludCBtaXBMZXZlbCkKK3ZvaWQgVGV4dHVyZVN0b3Jh
Z2UxMTo6bWFya0xldmVsRGlydHkoaW50IG1pcExldmVsKQogewogICAgIGlmIChtaXBMZXZlbCA+
PSAwICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4obWlwTGV2ZWwpIDwgQXJyYXlTaXplKG1T
d2l6emxlQ2FjaGUpKQogICAgIHsKLSAgICAgICAgLy8gVGhlIGRlZmF1bHQgY29uc3RydWN0b3Ig
b2YgU3dpenpsZUNhY2hlVmFsdWUgaGFzIEdMX05PTkUgZm9yIGFsbCBjaGFubmVscyB3aGljaCBp
cyBub3QgYQotICAgICAgICAvLyB2YWxpZCBzd2l6emxlIGNvbWJpbmF0aW9uCi0gICAgICAgIG1T
d2l6emxlQ2FjaGVbbWlwTGV2ZWxdID0gU3dpenpsZUNhY2hlVmFsdWUoKTsKKyAgICAgICAgLy8g
VGhlIGRlZmF1bHQgY29uc3RydWN0b3Igb2YgU3dpenpsZVN0YXRlIGhhcyBHTF9JTlZBTElEX0lO
REVYIGZvciBhbGwgY2hhbm5lbHMgd2hpY2ggaXMKKyAgICAgICAgLy8gbm90IGEgdmFsaWQgc3dp
enpsZSBjb21iaW5hdGlvbgorICAgICAgICBtU3dpenpsZUNhY2hlW21pcExldmVsXSA9IGdsOjpT
d2l6emxlU3RhdGUoKTsKICAgICB9CisKKyAgICBTYWZlUmVsZWFzZShtRHJvcFN0ZW5jaWxUZXh0
dXJlKTsKIH0KIAotdm9pZCBUZXh0dXJlU3RvcmFnZTExOjppbnZhbGlkYXRlU3dpenpsZUNhY2hl
KCkKK3ZvaWQgVGV4dHVyZVN0b3JhZ2UxMTo6bWFya0RpcnR5KCkKIHsKICAgICBmb3IgKHVuc2ln
bmVkIGludCBtaXBMZXZlbCA9IDA7IG1pcExldmVsIDwgQXJyYXlTaXplKG1Td2l6emxlQ2FjaGUp
OyBtaXBMZXZlbCsrKQogICAgIHsKLSAgICAgICAgaW52YWxpZGF0ZVN3aXp6bGVDYWNoZUxldmVs
KG1pcExldmVsKTsKKyAgICAgICAgbWFya0xldmVsRGlydHkobWlwTGV2ZWwpOwogICAgIH0KIH0K
IApAQCAtNDUyLDcgKzM5Niw3IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExOjp1cGRhdGVT
dWJyZXMKIAogICAgIGNvbnN0IEdMaW50IGxldmVsID0gaW5kZXgubWlwSW5kZXg7CiAKLSAgICBp
bnZhbGlkYXRlU3dpenpsZUNhY2hlTGV2ZWwobGV2ZWwpOworICAgIG1hcmtMZXZlbERpcnR5KGxl
dmVsKTsKIAogICAgIGdsOjpFeHRlbnRzIHRleFNpemUoZ2V0TGV2ZWxXaWR0aChsZXZlbCksIGdl
dExldmVsSGVpZ2h0KGxldmVsKSwgZ2V0TGV2ZWxEZXB0aChsZXZlbCkpOwogCkBAIC00NjEsMjIg
KzQwNSwxNiBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMTo6dXBkYXRlU3VicmVzCiAgICAg
ICAgICAgICAgICAgICAgIGNvcHlBcmVhLmRlcHRoID09IHRleFNpemUuZGVwdGg7CiAKICAgICBJ
RDNEMTFSZXNvdXJjZSAqZHN0VGV4dHVyZSA9IG51bGxwdHI7Ci0gICAgZ2w6OkVycm9yIGVycm9y
KEdMX05PX0VSUk9SKTsKIAogICAgIC8vIElmIHRoZSB6ZXJvLUxPRCB3b3JrYXJvdW5kIGlzIGFj
dGl2ZSBhbmQgd2Ugd2FudCB0byB1cGRhdGUgYSBsZXZlbCBncmVhdGVyIHRoYW4gemVybywgdGhl
biB3ZQogICAgIC8vIHNob3VsZCB1cGRhdGUgdGhlIG1pcG1hcHBlZCB0ZXh0dXJlLCBldmVuIGlm
IG1hcG1hcHMgYXJlIGN1cnJlbnRseSBkaXNhYmxlZC4KICAgICBpZiAoaW5kZXgubWlwSW5kZXgg
PiAwICYmIG1SZW5kZXJlci0+Z2V0V29ya2Fyb3VuZHMoKS56ZXJvTWF4TG9kV29ya2Fyb3VuZCkK
ICAgICB7Ci0gICAgICAgIGVycm9yID0gZ2V0TWlwcGVkUmVzb3VyY2UoJmRzdFRleHR1cmUpOwor
ICAgICAgICBBTkdMRV9UUlkoZ2V0TWlwcGVkUmVzb3VyY2UoJmRzdFRleHR1cmUpKTsKICAgICB9
CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgZXJyb3IgPSBnZXRSZXNvdXJjZSgmZHN0VGV4dHVy
ZSk7Ci0gICAgfQotCi0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBlcnJvcjsKKyAgICAgICAgQU5HTEVfVFJZKGdldFJlc291cmNlKCZkc3RUZXh0dXJlKSk7
CiAgICAgfQogCiAgICAgdW5zaWduZWQgaW50IGRzdFN1YnJlc291cmNlID0gZ2V0U3VicmVzb3Vy
Y2VJbmRleChpbmRleCk7CkBAIC00ODQsMzQgKzQyMiwzMiBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0
b3JhZ2UxMTo6dXBkYXRlU3VicmVzCiAgICAgQVNTRVJUKGRzdFRleHR1cmUpOwogCiAgICAgY29u
c3QgZDNkMTE6OkRYR0lGb3JtYXRTaXplICZkeGdpRm9ybWF0U2l6ZUluZm8gPQotICAgICAgICBk
M2QxMTo6R2V0RFhHSUZvcm1hdFNpemVJbmZvKG1UZXh0dXJlRm9ybWF0U2V0LT50ZXhGb3JtYXQp
OwotICAgIGlmICghZnVsbENvcHkgJiYgbVRleHR1cmVGb3JtYXRTZXQtPmRzdkZvcm1hdCAhPSBE
WEdJX0ZPUk1BVF9VTktOT1dOKQorICAgICAgICBkM2QxMTo6R2V0RFhHSUZvcm1hdFNpemVJbmZv
KG1Gb3JtYXRJbmZvLnRleEZvcm1hdCk7CisgICAgaWYgKCFmdWxsQ29weSAmJiBtRm9ybWF0SW5m
by5kc3ZGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTikKICAgICB7CiAgICAgICAgIC8vIENv
cHlTdWJyZXNvdXJjZVJlZ2lvbiBjYW5ub3QgY29weSBwYXJ0aWFsIGRlcHRoIHN0ZW5jaWxzLCB1
c2UgdGhlIGJsaXR0ZXIgaW5zdGVhZAogICAgICAgICBCbGl0MTEgKmJsaXR0ZXIgPSBtUmVuZGVy
ZXItPmdldEJsaXR0ZXIoKTsKLQotICAgICAgICByZXR1cm4gYmxpdHRlci0+Y29weURlcHRoU3Rl
bmNpbChzcmNUZXh0dXJlLCBzb3VyY2VTdWJyZXNvdXJjZSwgY29weUFyZWEsIHRleFNpemUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdFRleHR1cmUsIGRzdFN1
YnJlc291cmNlLCBjb3B5QXJlYSwgdGV4U2l6ZSwgbnVsbHB0cik7Ci0gICAgfQotICAgIGVsc2UK
LSAgICB7Ci0gICAgICAgIEQzRDExX0JPWCBzcmNCb3g7Ci0gICAgICAgIHNyY0JveC5sZWZ0ID0g
Y29weUFyZWEueDsKLSAgICAgICAgc3JjQm94LnRvcCA9IGNvcHlBcmVhLnk7Ci0gICAgICAgIHNy
Y0JveC5yaWdodCA9Ci0gICAgICAgICAgICBjb3B5QXJlYS54ICsgcm91bmRVcChzdGF0aWNfY2Fz
dDxVSU5UPihjb3B5QXJlYS53aWR0aCksIGR4Z2lGb3JtYXRTaXplSW5mby5ibG9ja1dpZHRoKTsK
LSAgICAgICAgc3JjQm94LmJvdHRvbSA9IGNvcHlBcmVhLnkgKwotICAgICAgICAgICAgICAgICAg
ICAgICAgcm91bmRVcChzdGF0aWNfY2FzdDxVSU5UPihjb3B5QXJlYS5oZWlnaHQpLCBkeGdpRm9y
bWF0U2l6ZUluZm8uYmxvY2tIZWlnaHQpOwotICAgICAgICBzcmNCb3guZnJvbnQgPSBjb3B5QXJl
YS56OwotICAgICAgICBzcmNCb3guYmFjayAgPSBjb3B5QXJlYS56ICsgY29weUFyZWEuZGVwdGg7
Ci0KLSAgICAgICAgSUQzRDExRGV2aWNlQ29udGV4dCAqY29udGV4dCA9IG1SZW5kZXJlci0+Z2V0
RGV2aWNlQ29udGV4dCgpOwotCi0gICAgICAgIGNvbnRleHQtPkNvcHlTdWJyZXNvdXJjZVJlZ2lv
bihkc3RUZXh0dXJlLCBkc3RTdWJyZXNvdXJjZSwgY29weUFyZWEueCwgY29weUFyZWEueSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlBcmVhLnosIHNyY1RleHR1
cmUsIHNvdXJjZVN1YnJlc291cmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZnVsbENvcHkgPyBudWxscHRyIDogJnNyY0JveCk7Ci0gICAgICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICBUZXh0dXJlSGVscGVyMTEgc291cmNlID0gVGV4
dHVyZUhlbHBlcjExOjpNYWtlQW5kUmVmZXJlbmNlKHNyY1RleHR1cmUsIGdldEZvcm1hdFNldCgp
KTsKKyAgICAgICAgVGV4dHVyZUhlbHBlcjExIGRlc3QgICA9IFRleHR1cmVIZWxwZXIxMTo6TWFr
ZUFuZFJlZmVyZW5jZShkc3RUZXh0dXJlLCBnZXRGb3JtYXRTZXQoKSk7CisgICAgICAgIHJldHVy
biBibGl0dGVyLT5jb3B5RGVwdGhTdGVuY2lsKHNvdXJjZSwgc291cmNlU3VicmVzb3VyY2UsIGNv
cHlBcmVhLCB0ZXhTaXplLCBkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkc3RTdWJyZXNvdXJjZSwgY29weUFyZWEsIHRleFNpemUsIG51bGxwdHIpOwogICAg
IH0KKworICAgIEQzRDExX0JPWCBzcmNCb3g7CisgICAgc3JjQm94LmxlZnQgPSBjb3B5QXJlYS54
OworICAgIHNyY0JveC50b3AgID0gY29weUFyZWEueTsKKyAgICBzcmNCb3gucmlnaHQgPQorICAg
ICAgICBjb3B5QXJlYS54ICsgcm91bmRVcChzdGF0aWNfY2FzdDxVSU5UPihjb3B5QXJlYS53aWR0
aCksIGR4Z2lGb3JtYXRTaXplSW5mby5ibG9ja1dpZHRoKTsKKyAgICBzcmNCb3guYm90dG9tID0K
KyAgICAgICAgY29weUFyZWEueSArIHJvdW5kVXAoc3RhdGljX2Nhc3Q8VUlOVD4oY29weUFyZWEu
aGVpZ2h0KSwgZHhnaUZvcm1hdFNpemVJbmZvLmJsb2NrSGVpZ2h0KTsKKyAgICBzcmNCb3guZnJv
bnQgPSBjb3B5QXJlYS56OworICAgIHNyY0JveC5iYWNrICA9IGNvcHlBcmVhLnogKyBjb3B5QXJl
YS5kZXB0aDsKKworICAgIElEM0QxMURldmljZUNvbnRleHQgKmNvbnRleHQgPSBtUmVuZGVyZXIt
PmdldERldmljZUNvbnRleHQoKTsKKworICAgIGNvbnRleHQtPkNvcHlTdWJyZXNvdXJjZVJlZ2lv
bihkc3RUZXh0dXJlLCBkc3RTdWJyZXNvdXJjZSwgY29weUFyZWEueCwgY29weUFyZWEueSwgY29w
eUFyZWEueiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjVGV4dHVyZSwg
c291cmNlU3VicmVzb3VyY2UsIGZ1bGxDb3B5ID8gbnVsbHB0ciA6ICZzcmNCb3gpOworICAgIHJl
dHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMTo6Y29w
eVN1YnJlc291cmNlTGV2ZWwoSUQzRDExUmVzb3VyY2UgKmRzdFRleHR1cmUsCkBAIC01MjIsMjIg
KzQ1OCwxNiBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMTo6Y29weVN1YnJlc291CiAgICAg
QVNTRVJUKGRzdFRleHR1cmUpOwogCiAgICAgSUQzRDExUmVzb3VyY2UgKnNyY1RleHR1cmUgPSBu
dWxscHRyOwotICAgIGdsOjpFcnJvciBlcnJvcihHTF9OT19FUlJPUik7CiAKICAgICAvLyBJZiB0
aGUgemVyby1MT0Qgd29ya2Fyb3VuZCBpcyBhY3RpdmUgYW5kIHdlIHdhbnQgdG8gdXBkYXRlIGEg
bGV2ZWwgZ3JlYXRlciB0aGFuIHplcm8sIHRoZW4gd2UKICAgICAvLyBzaG91bGQgdXBkYXRlIHRo
ZSBtaXBtYXBwZWQgdGV4dHVyZSwgZXZlbiBpZiBtYXBtYXBzIGFyZSBjdXJyZW50bHkgZGlzYWJs
ZWQuCiAgICAgaWYgKGluZGV4Lm1pcEluZGV4ID4gMCAmJiBtUmVuZGVyZXItPmdldFdvcmthcm91
bmRzKCkuemVyb01heExvZFdvcmthcm91bmQpCiAgICAgewotICAgICAgICBlcnJvciA9IGdldE1p
cHBlZFJlc291cmNlKCZzcmNUZXh0dXJlKTsKKyAgICAgICAgQU5HTEVfVFJZKGdldE1pcHBlZFJl
c291cmNlKCZzcmNUZXh0dXJlKSk7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGVy
cm9yID0gZ2V0UmVzb3VyY2UoJnNyY1RleHR1cmUpOwotICAgIH0KLQotICAgIGlmIChlcnJvci5p
c0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgIEFOR0xFX1RS
WShnZXRSZXNvdXJjZSgmc3JjVGV4dHVyZSkpOwogICAgIH0KIAogICAgIEFTU0VSVChzcmNUZXh0
dXJlKTsKQEAgLTU1NSw3ICs0ODUsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMTo6Y29w
eVN1YnJlc291CiAgICAgICAgIC8vIEhvd2V2ZXIsIEQzRDEwTGV2ZWw5IGRvZXNuJ3QgYWx3YXlz
IHBlcmZvcm0gQ29weVN1YnJlc291cmNlUmVnaW9uIGNvcnJlY3RseSB1bmxlc3MgdGhlCiAgICAg
ICAgIC8vIHNvdXJjZSBib3ggaXMgc3BlY2lmaWVkLiBUaGlzIGlzIG9rYXksIHNpbmNlIHdlIGRv
bid0IHBlcmZvcm0gQ29weVN1YnJlc291cmNlUmVnaW9uIG9uCiAgICAgICAgIC8vIGRlcHRoL3N0
ZW5jaWwgdGV4dHVyZXMgb24gOV8zLgotICAgICAgICBBU1NFUlQobVRleHR1cmVGb3JtYXRTZXQt
PmRzdkZvcm1hdCA9PSBEWEdJX0ZPUk1BVF9VTktOT1dOKTsKKyAgICAgICAgQVNTRVJUKG1Gb3Jt
YXRJbmZvLmRzdkZvcm1hdCA9PSBEWEdJX0ZPUk1BVF9VTktOT1dOKTsKICAgICAgICAgc3JjQm94
LmxlZnQgICA9IHJlZ2lvbi54OwogICAgICAgICBzcmNCb3gucmlnaHQgID0gcmVnaW9uLnggKyBy
ZWdpb24ud2lkdGg7CiAgICAgICAgIHNyY0JveC50b3AgICAgPSByZWdpb24ueTsKQEAgLTU3Niwy
MSArNTA2LDEzIEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExOjpnZW5lcmF0ZU1pcG0KIHsK
ICAgICBBU1NFUlQoc291cmNlSW5kZXgubGF5ZXJJbmRleCA9PSBkZXN0SW5kZXgubGF5ZXJJbmRl
eCk7CiAKLSAgICBpbnZhbGlkYXRlU3dpenpsZUNhY2hlTGV2ZWwoZGVzdEluZGV4Lm1pcEluZGV4
KTsKKyAgICBtYXJrTGV2ZWxEaXJ0eShkZXN0SW5kZXgubWlwSW5kZXgpOwogCiAgICAgUmVuZGVy
VGFyZ2V0RDNEICpzb3VyY2UgPSBudWxscHRyOwotICAgIGdsOjpFcnJvciBlcnJvciA9IGdldFJl
bmRlclRhcmdldChzb3VyY2VJbmRleCwgJnNvdXJjZSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3Io
KSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKGdl
dFJlbmRlclRhcmdldChzb3VyY2VJbmRleCwgJnNvdXJjZSkpOwogCiAgICAgUmVuZGVyVGFyZ2V0
RDNEICpkZXN0ID0gbnVsbHB0cjsKLSAgICBlcnJvciA9IGdldFJlbmRlclRhcmdldChkZXN0SW5k
ZXgsICZkZXN0KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkoZ2V0UmVuZGVyVGFyZ2V0KGRlc3RJbmRl
eCwgJmRlc3QpKTsKIAogICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc291cmNlU1JWID0K
ICAgICAgICAgR2V0QXM8UmVuZGVyVGFyZ2V0MTE+KHNvdXJjZSktPmdldEJsaXRTaGFkZXJSZXNv
dXJjZVZpZXcoKTsKQEAgLTYwMywyNiArNTI1LDIzIEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFn
ZTExOjpnZW5lcmF0ZU1pcG0KICAgICBnbDo6RXh0ZW50cyBkZXN0U2l6ZShkZXN0LT5nZXRXaWR0
aCgpLCBkZXN0LT5nZXRIZWlnaHQoKSwgZGVzdC0+Z2V0RGVwdGgoKSk7CiAKICAgICBCbGl0MTEg
KmJsaXR0ZXIgPSBtUmVuZGVyZXItPmdldEJsaXR0ZXIoKTsKLSAgICByZXR1cm4gYmxpdHRlci0+
Y29weVRleHR1cmUoCi0gICAgICAgIHNvdXJjZVNSViwgc291cmNlQXJlYSwgc291cmNlU2l6ZSwg
ZGVzdFJUViwgZGVzdEFyZWEsIGRlc3RTaXplLCBudWxscHRyLAotICAgICAgICBnbDo6R2V0SW50
ZXJuYWxGb3JtYXRJbmZvKHNvdXJjZS0+Z2V0SW50ZXJuYWxGb3JtYXQoKSkuZm9ybWF0LCBHTF9M
SU5FQVIsIGZhbHNlKTsKKyAgICByZXR1cm4gYmxpdHRlci0+Y29weVRleHR1cmUoc291cmNlU1JW
LCBzb3VyY2VBcmVhLCBzb3VyY2VTaXplLCBkZXN0UlRWLCBkZXN0QXJlYSwgZGVzdFNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oc291cmNlLT5nZXRJbnRl
cm5hbEZvcm1hdCgpKS5mb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X0xJTkVBUiwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CiB9CiAKLXZvaWQgVGV4dHVyZVN0b3JhZ2Ux
MTo6dmVyaWZ5U3dpenpsZUV4aXN0cyhHTGVudW0gc3dpenpsZVJlZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3dpenpsZUdyZWVuLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzd2l6emxlQmx1ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3dpenps
ZUFscGhhKQordm9pZCBUZXh0dXJlU3RvcmFnZTExOjp2ZXJpZnlTd2l6emxlRXhpc3RzKGNvbnN0
IGdsOjpTd2l6emxlU3RhdGUgJnN3aXp6bGVTdGF0ZSkKIHsKLSAgICBTd2l6emxlQ2FjaGVWYWx1
ZSBzd2l6emxlVGFyZ2V0KHN3aXp6bGVSZWQsIHN3aXp6bGVHcmVlbiwgc3dpenpsZUJsdWUsIHN3
aXp6bGVBbHBoYSk7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgbGV2ZWwgPSAwOyBsZXZlbCA8IG1N
aXBMZXZlbHM7IGxldmVsKyspCiAgICAgewotICAgICAgICBBU1NFUlQobVN3aXp6bGVDYWNoZVts
ZXZlbF0gPT0gc3dpenpsZVRhcmdldCk7CisgICAgICAgIEFTU0VSVChtU3dpenpsZUNhY2hlW2xl
dmVsXSA9PSBzd2l6emxlU3RhdGUpOwogICAgIH0KIH0KIAogdm9pZCBUZXh0dXJlU3RvcmFnZTEx
OjpjbGVhclNSVkNhY2hlKCkKIHsKLSAgICBpbnZhbGlkYXRlU3dpenpsZUNhY2hlKCk7CisgICAg
bWFya0RpcnR5KCk7CiAKICAgICBhdXRvIGl0ZXIgPSBtU3J2Q2FjaGUuYmVnaW4oKTsKICAgICB3
aGlsZSAoaXRlciAhPSBtU3J2Q2FjaGUuZW5kKCkpCkBAIC02NTAsMjYgKzU2OSwxOCBAQCBnbDo6
RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMTo6Y29weVRvU3RvcmFnCiAgICAgQVNTRVJUKGRlc3RTdG9y
YWdlKTsKIAogICAgIElEM0QxMVJlc291cmNlICpzb3VyY2VSZXNvdWNlID0gbnVsbHB0cjsKLSAg
ICBnbDo6RXJyb3IgZXJyb3IgPSBnZXRSZXNvdXJjZSgmc291cmNlUmVzb3VjZSk7Ci0gICAgaWYg
KGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Cisg
ICAgQU5HTEVfVFJZKGdldFJlc291cmNlKCZzb3VyY2VSZXNvdWNlKSk7CiAKICAgICBUZXh0dXJl
U3RvcmFnZTExICpkZXN0MTEgICAgID0gR2V0QXM8VGV4dHVyZVN0b3JhZ2UxMT4oZGVzdFN0b3Jh
Z2UpOwogICAgIElEM0QxMVJlc291cmNlICpkZXN0UmVzb3VyY2UgPSBudWxscHRyOwotICAgIGVy
cm9yID0gZGVzdDExLT5nZXRSZXNvdXJjZSgmZGVzdFJlc291cmNlKTsKLSAgICBpZiAoZXJyb3Iu
aXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdM
RV9UUlkoZGVzdDExLT5nZXRSZXNvdXJjZSgmZGVzdFJlc291cmNlKSk7CiAKICAgICBJRDNEMTFE
ZXZpY2VDb250ZXh0ICppbW1lZGlhdGVDb250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250
ZXh0KCk7CiAgICAgaW1tZWRpYXRlQ29udGV4dC0+Q29weVJlc291cmNlKGRlc3RSZXNvdXJjZSwg
c291cmNlUmVzb3VjZSk7CiAKLSAgICBkZXN0MTEtPmludmFsaWRhdGVTd2l6emxlQ2FjaGUoKTsK
KyAgICBkZXN0MTEtPm1hcmtEaXJ0eSgpOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19F
UlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJl
U3RvcmFnZTExOjpzZXREYXRhKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwKQEAgLTY4MSwx
MiArNTkyLDEwIEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExOjpzZXREYXRhKGNvbnMKIHsK
ICAgICBBU1NFUlQoIWltYWdlLT5pc0RpcnR5KCkpOwogCisgICAgbWFya0xldmVsRGlydHkoaW5k
ZXgubWlwSW5kZXgpOworCiAgICAgSUQzRDExUmVzb3VyY2UgKnJlc291cmNlID0gbnVsbHB0cjsK
LSAgICBnbDo6RXJyb3IgZXJyb3IgPSBnZXRSZXNvdXJjZSgmcmVzb3VyY2UpOwotICAgIGlmIChl
cnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAg
IEFOR0xFX1RSWShnZXRSZXNvdXJjZSgmcmVzb3VyY2UpKTsKICAgICBBU1NFUlQocmVzb3VyY2Up
OwogCiAgICAgVUlOVCBkZXN0U3VicmVzb3VyY2UgPSBnZXRTdWJyZXNvdXJjZUluZGV4KGluZGV4
KTsKQEAgLTcwOCwxNyArNjE3LDIyIEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExOjpzZXRE
YXRhKGNvbnMKICAgICBjb25zdCBpbnQgd2lkdGggID0gZGVzdEJveCA/IGRlc3RCb3gtPndpZHRo
IDogc3RhdGljX2Nhc3Q8aW50PihpbWFnZS0+Z2V0V2lkdGgoKSk7CiAgICAgY29uc3QgaW50IGhl
aWdodCA9IGRlc3RCb3ggPyBkZXN0Qm94LT5oZWlnaHQgOiBzdGF0aWNfY2FzdDxpbnQ+KGltYWdl
LT5nZXRIZWlnaHQoKSk7CiAgICAgY29uc3QgaW50IGRlcHRoID0gZGVzdEJveCA/IGRlc3RCb3gt
PmRlcHRoIDogc3RhdGljX2Nhc3Q8aW50PihpbWFnZS0+Z2V0RGVwdGgoKSk7Ci0gICAgY29uc3Qg
VUlOVCBzcmNSb3dQaXRjaCA9Ci0gICAgICAgIGludGVybmFsRm9ybWF0SW5mby5jb21wdXRlUm93
UGl0Y2godHlwZSwgd2lkdGgsIHVucGFjay5hbGlnbm1lbnQsIHVucGFjay5yb3dMZW5ndGgpOwot
ICAgIGNvbnN0IFVJTlQgc3JjRGVwdGhQaXRjaCA9IGludGVybmFsRm9ybWF0SW5mby5jb21wdXRl
RGVwdGhQaXRjaCgKLSAgICAgICAgdHlwZSwgd2lkdGgsIGhlaWdodCwgdW5wYWNrLmFsaWdubWVu
dCwgdW5wYWNrLnJvd0xlbmd0aCwgdW5wYWNrLmltYWdlSGVpZ2h0KTsKLSAgICBjb25zdCBHTHNp
emVpIHNyY1NraXBCeXRlcyA9IGludGVybmFsRm9ybWF0SW5mby5jb21wdXRlU2tpcFBpeGVscygK
LSAgICAgICAgc3JjUm93UGl0Y2gsIHNyY0RlcHRoUGl0Y2gsIHVucGFjay5za2lwSW1hZ2VzLCB1
bnBhY2suc2tpcFJvd3MsIHVucGFjay5za2lwUGl4ZWxzKTsKKyAgICBHTHVpbnQgc3JjUm93UGl0
Y2ggPSAwOworICAgIEFOR0xFX1RSWV9SRVNVTFQoCisgICAgICAgIGludGVybmFsRm9ybWF0SW5m
by5jb21wdXRlUm93UGl0Y2godHlwZSwgd2lkdGgsIHVucGFjay5hbGlnbm1lbnQsIHVucGFjay5y
b3dMZW5ndGgpLAorICAgICAgICBzcmNSb3dQaXRjaCk7CisgICAgR0x1aW50IHNyY0RlcHRoUGl0
Y2ggPSAwOworICAgIEFOR0xFX1RSWV9SRVNVTFQoaW50ZXJuYWxGb3JtYXRJbmZvLmNvbXB1dGVE
ZXB0aFBpdGNoKGhlaWdodCwgdW5wYWNrLmltYWdlSGVpZ2h0LCBzcmNSb3dQaXRjaCksCisgICAg
ICAgICAgICAgICAgICAgICBzcmNEZXB0aFBpdGNoKTsKKyAgICBHTHVpbnQgc3JjU2tpcEJ5dGVz
ID0gMDsKKyAgICBBTkdMRV9UUllfUkVTVUxUKAorICAgICAgICBpbnRlcm5hbEZvcm1hdEluZm8u
Y29tcHV0ZVNraXBCeXRlcyhzcmNSb3dQaXRjaCwgc3JjRGVwdGhQaXRjaCwgdW5wYWNrLCBpbmRl
eC5pczNEKCkpLAorICAgICAgICBzcmNTa2lwQnl0ZXMpOwogCi0gICAgY29uc3QgZDNkMTE6OlRl
eHR1cmVGb3JtYXQgJmQzZDExRm9ybWF0ID0gZDNkMTE6OkdldFRleHR1cmVGb3JtYXRJbmZvKAot
ICAgICAgICBpbWFnZS0+Z2V0SW50ZXJuYWxGb3JtYXQoKSwgbVJlbmRlcmVyLT5nZXRSZW5kZXJl
cjExRGV2aWNlQ2FwcygpKTsKKyAgICBjb25zdCBkM2QxMTo6Rm9ybWF0ICZkM2QxMUZvcm1hdCA9
CisgICAgICAgIGQzZDExOjpGb3JtYXQ6OkdldChpbWFnZS0+Z2V0SW50ZXJuYWxGb3JtYXQoKSwg
bVJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpKTsKICAgICBjb25zdCBkM2QxMTo6
RFhHSUZvcm1hdFNpemUgJmR4Z2lGb3JtYXRJbmZvID0KLSAgICAgICAgZDNkMTE6OkdldERYR0lG
b3JtYXRTaXplSW5mbyhkM2QxMUZvcm1hdC5mb3JtYXRTZXQtPnRleEZvcm1hdCk7CisgICAgICAg
IGQzZDExOjpHZXREWEdJRm9ybWF0U2l6ZUluZm8oZDNkMTFGb3JtYXQudGV4Rm9ybWF0KTsKIAog
ICAgIGNvbnN0IHNpemVfdCBvdXRwdXRQaXhlbFNpemUgPSBkeGdpRm9ybWF0SW5mby5waXhlbEJ5
dGVzOwogCkBAIC03MjksMTUgKzY0MywxMCBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMTo6
c2V0RGF0YShjb25zCiAgICAgTWVtb3J5QnVmZmVyICpjb252ZXJzaW9uQnVmZmVyID0gbnVsbHB0
cjsKICAgICBjb25zdCB1aW50OF90ICpkYXRhICAgICAgICAgICAgPSBudWxscHRyOwogCi0gICAg
ZDNkMTE6OkxvYWRJbWFnZUZ1bmN0aW9uSW5mbyBsb2FkRnVuY3Rpb25JbmZvID0gZDNkMTFGb3Jt
YXQubG9hZEZ1bmN0aW9ucy5hdCh0eXBlKTsKKyAgICBMb2FkSW1hZ2VGdW5jdGlvbkluZm8gbG9h
ZEZ1bmN0aW9uSW5mbyA9IGQzZDExRm9ybWF0LmxvYWRGdW5jdGlvbnModHlwZSk7CiAgICAgaWYg
KGxvYWRGdW5jdGlvbkluZm8ucmVxdWlyZXNDb252ZXJzaW9uKQogICAgIHsKLSAgICAgICAgZXJy
b3IgPSBtUmVuZGVyZXItPmdldFNjcmF0Y2hNZW1vcnlCdWZmZXIobmVlZGVkU2l6ZSwgJmNvbnZl
cnNpb25CdWZmZXIpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KLQorICAgICAgICBBTkdMRV9UUlko
bVJlbmRlcmVyLT5nZXRTY3JhdGNoTWVtb3J5QnVmZmVyKG5lZWRlZFNpemUsICZjb252ZXJzaW9u
QnVmZmVyKSk7CiAgICAgICAgIGxvYWRGdW5jdGlvbkluZm8ubG9hZEZ1bmN0aW9uKHdpZHRoLCBo
ZWlnaHQsIGRlcHRoLCBwaXhlbERhdGEgKyBzcmNTa2lwQnl0ZXMsIHNyY1Jvd1BpdGNoLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNEZXB0aFBpdGNoLCBjb252ZXJz
aW9uQnVmZmVyLT5kYXRhKCksIGJ1ZmZlclJvd1BpdGNoLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBidWZmZXJEZXB0aFBpdGNoKTsKQEAgLTc3MywxMSArNjgyLDIwIEBA
IGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExOjpzZXREYXRhKGNvbnMKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyUm93UGl0Y2gsIGJ1ZmZlckRlcHRo
UGl0Y2gpOwogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAg
IHJldHVybiBnbDo6Tm9FcnJvcigpOworfQorCitnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMTo6
Y3JlYXRlRHJvcFN0ZW5jaWxUZXh0dXJlKCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkRyb3Agc3RlbmNpbCB0ZXh0
dXJlIG5vdCBpbXBsZW1lbnRlZC4iKTsKIH0KIAogVGV4dHVyZVN0b3JhZ2UxMV8yRDo6VGV4dHVy
ZVN0b3JhZ2UxMV8yRChSZW5kZXJlcjExICpyZW5kZXJlciwgU3dhcENoYWluMTEgKnN3YXBjaGFp
bikKLSAgICA6IFRleHR1cmVTdG9yYWdlMTEocmVuZGVyZXIsIEQzRDExX0JJTkRfUkVOREVSX1RB
UkdFVCB8IEQzRDExX0JJTkRfU0hBREVSX1JFU09VUkNFLCAwKSwKKyAgICA6IFRleHR1cmVTdG9y
YWdlMTEocmVuZGVyZXIsCisgICAgICAgICAgICAgICAgICAgICAgIEQzRDExX0JJTkRfUkVOREVS
X1RBUkdFVCB8IEQzRDExX0JJTkRfU0hBREVSX1JFU09VUkNFLAorICAgICAgICAgICAgICAgICAg
ICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICBzd2FwY2hhaW4tPmdldFJlbmRlclRhcmdl
dEludGVybmFsRm9ybWF0KCkpLAogICAgICAgbVRleHR1cmUoc3dhcGNoYWluLT5nZXRPZmZzY3Jl
ZW5UZXh0dXJlKCkpLAogICAgICAgbUxldmVsWmVyb1RleHR1cmUobnVsbHB0ciksCiAgICAgICBt
TGV2ZWxaZXJvUmVuZGVyVGFyZ2V0KG51bGxwdHIpLApAQCAtODAwLDEzICs3MTgsNiBAQCBUZXh0
dXJlU3RvcmFnZTExXzJEOjpUZXh0dXJlU3RvcmFnZTExXzJECiAgICAgbVRleHR1cmVIZWlnaHQg
PSB0ZXhEZXNjLkhlaWdodDsKICAgICBtVGV4dHVyZURlcHRoICA9IDE7CiAgICAgbUhhc0tleWVk
TXV0ZXggPSAodGV4RGVzYy5NaXNjRmxhZ3MgJiBEM0QxMV9SRVNPVVJDRV9NSVNDX1NIQVJFRF9L
RVlFRE1VVEVYKSAhPSAwOwotCi0gICAgbUludGVybmFsRm9ybWF0ID0gc3dhcGNoYWluLT5HZXRS
ZW5kZXJUYXJnZXRJbnRlcm5hbEZvcm1hdCgpOwotCi0gICAgY29uc3QgYXV0byAmZm9ybWF0SW5m
byA9Ci0gICAgICAgIGQzZDExOjpHZXRUZXh0dXJlRm9ybWF0SW5mbyhtSW50ZXJuYWxGb3JtYXQs
IG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKSk7Ci0gICAgbVRleHR1cmVGb3Jt
YXRTZXQgPSBmb3JtYXRJbmZvLmZvcm1hdFNldDsKLSAgICBtU3dpenpsZUZvcm1hdFNldCA9IGZv
cm1hdEluZm8uc3dpenpsZUZvcm1hdFNldDsKIH0KIAogVGV4dHVyZVN0b3JhZ2UxMV8yRDo6VGV4
dHVyZVN0b3JhZ2UxMV8yRChSZW5kZXJlcjExICpyZW5kZXJlciwKQEAgLTgyMiw3ICs3MzMsOCBA
QCBUZXh0dXJlU3RvcmFnZTExXzJEOjpUZXh0dXJlU3RvcmFnZTExXzJECiAgICAgICAgICAgR2V0
VGV4dHVyZU1pc2NGbGFncyhpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVuZGVyVGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbGV2ZWxzKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMpLAor
ICAgICAgICAgIGludGVybmFsZm9ybWF0KSwKICAgICAgIG1UZXh0dXJlKG51bGxwdHIpLAogICAg
ICAgbUhhc0tleWVkTXV0ZXgoZmFsc2UpLAogICAgICAgbUxldmVsWmVyb1RleHR1cmUobnVsbHB0
ciksCkBAIC04MzcsMTQgKzc0OSw3IEBAIFRleHR1cmVTdG9yYWdlMTFfMkQ6OlRleHR1cmVTdG9y
YWdlMTFfMkQKICAgICAgICAgbVN3aXp6bGVSZW5kZXJUYXJnZXRzW2ldID0gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICBtSW50ZXJuYWxGb3JtYXQgPSBpbnRlcm5hbGZvcm1hdDsKLQotICAgIGNvbnN0
IGQzZDExOjpUZXh0dXJlRm9ybWF0ICZmb3JtYXRJbmZvID0KLSAgICAgICAgZDNkMTE6OkdldFRl
eHR1cmVGb3JtYXRJbmZvKGludGVybmFsZm9ybWF0LCByZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURl
dmljZUNhcHMoKSk7Ci0gICAgbVRleHR1cmVGb3JtYXRTZXQgPSBmb3JtYXRJbmZvLmZvcm1hdFNl
dDsKLSAgICBtU3dpenpsZUZvcm1hdFNldCA9IGZvcm1hdEluZm8uc3dpenpsZUZvcm1hdFNldDsK
LQotICAgIGQzZDExOjpNYWtlVmFsaWRTaXplKGZhbHNlLCBtVGV4dHVyZUZvcm1hdFNldC0+dGV4
Rm9ybWF0LCAmd2lkdGgsICZoZWlnaHQsICZtVG9wTGV2ZWwpOworICAgIGQzZDExOjpNYWtlVmFs
aWRTaXplKGZhbHNlLCBtRm9ybWF0SW5mby50ZXhGb3JtYXQsICZ3aWR0aCwgJmhlaWdodCwgJm1U
b3BMZXZlbCk7CiAgICAgbU1pcExldmVscyAgICAgPSBtVG9wTGV2ZWwgKyBsZXZlbHM7CiAgICAg
bVRleHR1cmVXaWR0aCAgPSB3aWR0aDsKICAgICBtVGV4dHVyZUhlaWdodCA9IGhlaWdodDsKQEAg
LTg3MSw2ICs3NzYsNyBAQCBUZXh0dXJlU3RvcmFnZTExXzJEOjp+VGV4dHVyZVN0b3JhZ2UxMV8y
CiAgICAgICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IEZpbmQgYSB3YXkgdG8gcmVwb3J0IHRoaXMg
YmFjayB0byB0aGUgY29udGV4dAorICAgICAgICAgICAgICAgICAgICBFUlIoIkVycm9yIGluaXRp
YWxpemF0aW9uIHRleHR1cmUgc3RvcmFnZTogJXgiLCBlcnJvci5nZXRDb2RlKCkpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtOTA5LDYzICs4MTUsMzcg
QEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfMkQ6OmNvcHlUb1N0bwogICAgICAgICAvLyBj
b3JyZXNwb25kaW5nIHRleHR1cmVzIGluIGRlc3RTdG9yYWdlLgogICAgICAgICBpZiAobVRleHR1
cmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGRlc3QxMS0+dXNl
TGV2ZWxaZXJvV29ya2Fyb3VuZFRleHR1cmUoZmFsc2UpOwotICAgICAgICAgICAgaWYgKGVycm9y
LmlzRXJyb3IoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7
Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBBTkdMRV9UUlkoZGVzdDExLT51c2VMZXZlbFpl
cm9Xb3JrYXJvdW5kVGV4dHVyZShmYWxzZSkpOwogCiAgICAgICAgICAgICBJRDNEMTFSZXNvdXJj
ZSAqZGVzdFJlc291cmNlID0gbnVsbHB0cjsKLSAgICAgICAgICAgIGVycm9yID0gZGVzdDExLT5n
ZXRSZXNvdXJjZSgmZGVzdFJlc291cmNlKTsKLSAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9y
KCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAg
ICAgICAgfQorICAgICAgICAgICAgQU5HTEVfVFJZKGRlc3QxMS0+Z2V0UmVzb3VyY2UoJmRlc3RS
ZXNvdXJjZSkpOwogCiAgICAgICAgICAgICBpbW1lZGlhdGVDb250ZXh0LT5Db3B5UmVzb3VyY2Uo
ZGVzdFJlc291cmNlLCBtVGV4dHVyZSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobUxldmVs
WmVyb1RleHR1cmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGRl
c3QxMS0+dXNlTGV2ZWxaZXJvV29ya2Fyb3VuZFRleHR1cmUodHJ1ZSk7Ci0gICAgICAgICAgICBp
ZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVy
biBlcnJvcjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFOR0xFX1RSWShkZXN0MTEtPnVz
ZUxldmVsWmVyb1dvcmthcm91bmRUZXh0dXJlKHRydWUpKTsKIAogICAgICAgICAgICAgSUQzRDEx
UmVzb3VyY2UgKmRlc3RSZXNvdXJjZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICBlcnJvciA9IGRl
c3QxMS0+Z2V0UmVzb3VyY2UoJmRlc3RSZXNvdXJjZSk7Ci0gICAgICAgICAgICBpZiAoZXJyb3Iu
aXNFcnJvcigpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsK
LSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFOR0xFX1RSWShkZXN0MTEtPmdldFJlc291cmNl
KCZkZXN0UmVzb3VyY2UpKTsKIAogICAgICAgICAgICAgaW1tZWRpYXRlQ29udGV4dC0+Q29weVJl
c291cmNlKGRlc3RSZXNvdXJjZSwgbUxldmVsWmVyb1RleHR1cmUpOwogICAgICAgICB9CiAKLSAg
ICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOwogICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBJRDNEMTFSZXNvdXJj
ZSAqc291cmNlUmVzb3VjZSA9IG51bGxwdHI7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGdl
dFJlc291cmNlKCZzb3VyY2VSZXNvdWNlKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9CiAKLSAgICAg
ICAgSUQzRDExUmVzb3VyY2UgKmRlc3RSZXNvdXJjZSA9IG51bGxwdHI7Ci0gICAgICAgIGVycm9y
ID0gZGVzdDExLT5nZXRSZXNvdXJjZSgmZGVzdFJlc291cmNlKTsKLSAgICAgICAgaWYgKGVycm9y
LmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAg
ICB9CisgICAgSUQzRDExUmVzb3VyY2UgKnNvdXJjZVJlc291Y2UgPSBudWxscHRyOworICAgIEFO
R0xFX1RSWShnZXRSZXNvdXJjZSgmc291cmNlUmVzb3VjZSkpOwogCi0gICAgICAgIGltbWVkaWF0
ZUNvbnRleHQtPkNvcHlSZXNvdXJjZShkZXN0UmVzb3VyY2UsIHNvdXJjZVJlc291Y2UpOwotICAg
ICAgICBkZXN0MTEtPmludmFsaWRhdGVTd2l6emxlQ2FjaGUoKTsKLSAgICB9CisgICAgSUQzRDEx
UmVzb3VyY2UgKmRlc3RSZXNvdXJjZSA9IG51bGxwdHI7CisgICAgQU5HTEVfVFJZKGRlc3QxMS0+
Z2V0UmVzb3VyY2UoJmRlc3RSZXNvdXJjZSkpOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9O
T19FUlJPUik7CisgICAgaW1tZWRpYXRlQ29udGV4dC0+Q29weVJlc291cmNlKGRlc3RSZXNvdXJj
ZSwgc291cmNlUmVzb3VjZSk7CisgICAgZGVzdDExLT5tYXJrRGlydHkoKTsKKworICAgIHJldHVy
biBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV8yRDo6dXNl
TGV2ZWxaZXJvV29ya2Fyb3VuZFRleHR1cmUoYm9vbCB1c2VMZXZlbFplcm9UZXh0dXJlKQpAQCAt
OTc2LDExICs4NTYsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV8yRDo6dXNlTGV2ZWxa
CiAgICAgewogICAgICAgICBpZiAoIW1Vc2VMZXZlbFplcm9UZXh0dXJlICYmIG1UZXh0dXJlKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBlbnN1cmVUZXh0dXJlRXhp
c3RzKDEpOwotICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAgICB9CisgICAgICAgICAg
ICBBTkdMRV9UUlkoZW5zdXJlVGV4dHVyZUV4aXN0cygxKSk7CiAKICAgICAgICAgICAgIC8vIFB1
bGwgZGF0YSBiYWNrIGZyb20gdGhlIG1pcHBlZCB0ZXh0dXJlIGlmIG5lY2Vzc2FyeS4KICAgICAg
ICAgICAgIEFTU0VSVChtTGV2ZWxaZXJvVGV4dHVyZSk7CkBAIC05OTQsMTEgKzg3MCw3IEBAIGds
OjpFcnJvciBUZXh0dXJlU3RvcmFnZTExXzJEOjp1c2VMZXZlbFoKICAgICB7CiAgICAgICAgIGlm
IChtVXNlTGV2ZWxaZXJvVGV4dHVyZSAmJiBtTGV2ZWxaZXJvVGV4dHVyZSkKICAgICAgICAgewot
ICAgICAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gZW5zdXJlVGV4dHVyZUV4aXN0cyhtTWlwTGV2
ZWxzKTsKLSAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAg
QU5HTEVfVFJZKGVuc3VyZVRleHR1cmVFeGlzdHMobU1pcExldmVscykpOwogCiAgICAgICAgICAg
ICAvLyBQdWxsIGRhdGEgYmFjayBmcm9tIHRoZSBsZXZlbCB6ZXJvIHRleHR1cmUgaWYgbmVjZXNz
YXJ5LgogICAgICAgICAgICAgQVNTRVJUKG1UZXh0dXJlKTsKQEAgLTEwMjUsNyArODk3LDcgQEAg
Z2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfMkQ6OnVzZUxldmVsWgogICAgICAgICB9CiAgICAg
fQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CiB9CiAKIHZvaWQgVGV4dHVyZVN0b3JhZ2UxMV8yRDo6YXNzb2NpYXRlSW1hZ2Uo
SW1hZ2UxMSAqaW1hZ2UsIGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCkKQEAgLTEwOTgsNDIg
Kzk3MCwyOCBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV8yRDo6cmVsZWFzZUFzCiAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgLy8gRm9yY2UgdGhlIGltYWdlIHRvIHJlY292ZXIg
ZnJvbSBzdG9yYWdlIGJlZm9yZSBpdHMgZGF0YSBpcyBvdmVyd3JpdHRlbi4KICAgICAgICAgICAg
ICAgICAvLyBUaGlzIHdpbGwgcmVzZXQgbUFzc29jaWF0ZWRJbWFnZXNbbGV2ZWxdIHRvIG51bGxw
dHIgdG9vLgotICAgICAgICAgICAgICAgIGdsOjpFcnJvciBlcnJvciA9IG1Bc3NvY2lhdGVkSW1h
Z2VzW2xldmVsXS0+cmVjb3ZlckZyb21Bc3NvY2lhdGVkU3RvcmFnZSgpOwotICAgICAgICAgICAg
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IEFOR0xFX1RSWShtQXNzb2NpYXRlZEltYWdlc1tsZXZlbF0tPnJlY292ZXJGcm9tQXNzb2NpYXRl
ZFN0b3JhZ2UoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0K
IAogZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfMkQ6OmdldFJlc291cmNlKElEM0QxMVJlc291
cmNlICoqb3V0UmVzb3VyY2UpCiB7CiAgICAgaWYgKG1Vc2VMZXZlbFplcm9UZXh0dXJlICYmIG1N
aXBMZXZlbHMgPiAxKQogICAgIHsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gZW5zdXJlVGV4
dHVyZUV4aXN0cygxKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9CisgICAgICAgIEFOR0xFX1RSWShl
bnN1cmVUZXh0dXJlRXhpc3RzKDEpKTsKIAogICAgICAgICAqb3V0UmVzb3VyY2UgPSBtTGV2ZWxa
ZXJvVGV4dHVyZTsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAg
ICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAg
ICBnbDo6RXJyb3IgZXJyb3IgPSBlbnN1cmVUZXh0dXJlRXhpc3RzKG1NaXBMZXZlbHMpOwotICAg
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
ZXJyb3I7Ci0gICAgICAgIH0KIAotICAgICAgICAqb3V0UmVzb3VyY2UgPSBtVGV4dHVyZTsKLSAg
ICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Ci0gICAgfQorICAgIEFOR0xFX1RS
WShlbnN1cmVUZXh0dXJlRXhpc3RzKG1NaXBMZXZlbHMpKTsKKworICAgICpvdXRSZXNvdXJjZSA9
IG1UZXh0dXJlOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4
dHVyZVN0b3JhZ2UxMV8yRDo6Z2V0TWlwcGVkUmVzb3VyY2UoSUQzRDExUmVzb3VyY2UgKipvdXRS
ZXNvdXJjZSkKQEAgLTExNDEsMTQgKzk5OSwxMCBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2Ux
MV8yRDo6Z2V0TWlwcGVkCiAgICAgLy8gVGhpcyBzaG91bGRuJ3QgYmUgY2FsbGVkIHVubGVzcyB0
aGUgemVybyBtYXggTE9EIHdvcmthcm91bmQgaXMgYWN0aXZlLgogICAgIEFTU0VSVChtUmVuZGVy
ZXItPmdldFdvcmthcm91bmRzKCkuemVyb01heExvZFdvcmthcm91bmQpOwogCi0gICAgZ2w6OkVy
cm9yIGVycm9yID0gZW5zdXJlVGV4dHVyZUV4aXN0cyhtTWlwTGV2ZWxzKTsKLSAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBB
TkdMRV9UUlkoZW5zdXJlVGV4dHVyZUV4aXN0cyhtTWlwTGV2ZWxzKSk7CiAKICAgICAqb3V0UmVz
b3VyY2UgPSBtVGV4dHVyZTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAg
ICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFf
MkQ6OmVuc3VyZVRleHR1cmVFeGlzdHMoaW50IG1pcExldmVscykKQEAgLTExNzIsNyArMTAyNiw3
IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExXzJEOjplbnN1cmVUZXgKICAgICAgICAgZGVz
Yy5IZWlnaHQgICAgICAgICAgICAgPSBtVGV4dHVyZUhlaWdodDsKICAgICAgICAgZGVzYy5NaXBM
ZXZlbHMgICAgICAgICAgPSBtaXBMZXZlbHM7CiAgICAgICAgIGRlc2MuQXJyYXlTaXplICAgICAg
ICAgID0gMTsKLSAgICAgICAgZGVzYy5Gb3JtYXQgICAgICAgICAgICAgPSBtVGV4dHVyZUZvcm1h
dFNldC0+dGV4Rm9ybWF0OworICAgICAgICBkZXNjLkZvcm1hdCAgICAgICAgICAgICA9IG1Gb3Jt
YXRJbmZvLnRleEZvcm1hdDsKICAgICAgICAgZGVzYy5TYW1wbGVEZXNjLkNvdW50ICAgPSAxOwog
ICAgICAgICBkZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7CiAgICAgICAgIGRlc2MuVXNhZ2Ug
ICAgICAgICAgICAgID0gRDNEMTFfVVNBR0VfREVGQVVMVDsKQEAgLTEyMjIsMjkgKzEwNzYsMTcg
QEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfMkQ6OmdldFJlbmRlcgogICAgIGlmIChtUmVu
ZGVyVGFyZ2V0W2xldmVsXSkKICAgICB7CiAgICAgICAgICpvdXRSVCA9IG1SZW5kZXJUYXJnZXRb
bGV2ZWxdOwotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAg
cmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogCiAgICAgSUQzRDExUmVzb3VyY2UgKnRleHR1
cmUgPSBudWxscHRyOwotICAgIGdsOjpFcnJvciBlcnJvciA9IGdldFJlc291cmNlKCZ0ZXh0dXJl
KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9y
OwotICAgIH0KKyAgICBBTkdMRV9UUlkoZ2V0UmVzb3VyY2UoJnRleHR1cmUpKTsKIAogICAgIElE
M0QxMVNoYWRlclJlc291cmNlVmlldyAqc3J2ID0gbnVsbHB0cjsKLSAgICBlcnJvciA9IGdldFNS
VkxldmVsKGxldmVsLCBmYWxzZSwgJnNydik7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKGdldFNSVkxl
dmVsKGxldmVsLCBmYWxzZSwgJnNydikpOwogCiAgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3
ICpibGl0U1JWID0gbnVsbHB0cjsKLSAgICBlcnJvciA9IGdldFNSVkxldmVsKGxldmVsLCB0cnVl
LCAmYmxpdFNSVik7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKGdldFNSVkxldmVsKGxldmVsLCB0cnVl
LCAmYmxpdFNSVikpOwogCiAgICAgSUQzRDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdl
dERldmljZSgpOwogCkBAIC0xMjUzLDcgKzEwOTUsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3Jh
Z2UxMV8yRDo6Z2V0UmVuZGVyCiAgICAgICAgIGlmICghbUxldmVsWmVyb1JlbmRlclRhcmdldCkK
ICAgICAgICAgewogICAgICAgICAgICAgRDNEMTFfUkVOREVSX1RBUkdFVF9WSUVXX0RFU0MgcnR2
RGVzYzsKLSAgICAgICAgICAgIHJ0dkRlc2MuRm9ybWF0ICAgICAgICAgICAgID0gbVRleHR1cmVG
b3JtYXRTZXQtPnJ0dkZvcm1hdDsKKyAgICAgICAgICAgIHJ0dkRlc2MuRm9ybWF0ICAgICAgICAg
ICAgID0gbUZvcm1hdEluZm8ucnR2Rm9ybWF0OwogICAgICAgICAgICAgcnR2RGVzYy5WaWV3RGlt
ZW5zaW9uICAgICAgPSBEM0QxMV9SVFZfRElNRU5TSU9OX1RFWFRVUkUyRDsKICAgICAgICAgICAg
IHJ0dkRlc2MuVGV4dHVyZTJELk1pcFNsaWNlID0gbVRvcExldmVsICsgbGV2ZWw7CiAKQEAgLTEy
NzAsMjEgKzExMTIsMjEgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfMkQ6OmdldFJlbmRl
cgogICAgICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKIAogICAgICAgICAgICAg
bUxldmVsWmVyb1JlbmRlclRhcmdldCA9IG5ldyBUZXh0dXJlUmVuZGVyVGFyZ2V0MTEoCi0gICAg
ICAgICAgICAgICAgcnR2LCBtTGV2ZWxaZXJvVGV4dHVyZSwgbnVsbHB0ciwgbnVsbHB0ciwgbUlu
dGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgIG1UZXh0dXJlRm9ybWF0U2V0LT5mb3JtYXQs
IGdldExldmVsV2lkdGgobGV2ZWwpLCBnZXRMZXZlbEhlaWdodChsZXZlbCksIDEsIDApOworICAg
ICAgICAgICAgICAgIHJ0diwgbUxldmVsWmVyb1RleHR1cmUsIG51bGxwdHIsIG51bGxwdHIsIG1G
b3JtYXRJbmZvLmludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgIGdldEZvcm1hdFNldCgp
LCBnZXRMZXZlbFdpZHRoKGxldmVsKSwgZ2V0TGV2ZWxIZWlnaHQobGV2ZWwpLCAxLCAwKTsKIAog
ICAgICAgICAgICAgLy8gUmVuZGVyVGFyZ2V0IHdpbGwgdGFrZSBvd25lcnNoaXAgb2YgdGhlc2Ug
cmVzb3VyY2VzCiAgICAgICAgICAgICBTYWZlUmVsZWFzZShydHYpOwogICAgICAgICB9CiAKICAg
ICAgICAgKm91dFJUID0gbUxldmVsWmVyb1JlbmRlclRhcmdldDsKLSAgICAgICAgcmV0dXJuIGds
OjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogICAg
IH0KIAotICAgIGlmIChtVGV4dHVyZUZvcm1hdFNldC0+cnR2Rm9ybWF0ICE9IERYR0lfRk9STUFU
X1VOS05PV04pCisgICAgaWYgKG1Gb3JtYXRJbmZvLnJ0dkZvcm1hdCAhPSBEWEdJX0ZPUk1BVF9V
TktOT1dOKQogICAgIHsKICAgICAgICAgRDNEMTFfUkVOREVSX1RBUkdFVF9WSUVXX0RFU0MgcnR2
RGVzYzsKLSAgICAgICAgcnR2RGVzYy5Gb3JtYXQgICAgICAgICAgICAgPSBtVGV4dHVyZUZvcm1h
dFNldC0+cnR2Rm9ybWF0OworICAgICAgICBydHZEZXNjLkZvcm1hdCAgICAgICAgICAgICA9IG1G
b3JtYXRJbmZvLnJ0dkZvcm1hdDsKICAgICAgICAgcnR2RGVzYy5WaWV3RGltZW5zaW9uICAgICAg
PSBEM0QxMV9SVFZfRElNRU5TSU9OX1RFWFRVUkUyRDsKICAgICAgICAgcnR2RGVzYy5UZXh0dXJl
MkQuTWlwU2xpY2UgPSBtVG9wTGV2ZWwgKyBsZXZlbDsKIApAQCAtMTMwMSw3ICsxMTQzLDcgQEAg
Z2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfMkQ6OmdldFJlbmRlcgogICAgICAgICB9CiAKICAg
ICAgICAgbVJlbmRlclRhcmdldFtsZXZlbF0gPSBuZXcgVGV4dHVyZVJlbmRlclRhcmdldDExKAot
ICAgICAgICAgICAgcnR2LCB0ZXh0dXJlLCBzcnYsIGJsaXRTUlYsIG1JbnRlcm5hbEZvcm1hdCwg
bVRleHR1cmVGb3JtYXRTZXQtPmZvcm1hdCwKKyAgICAgICAgICAgIHJ0diwgdGV4dHVyZSwgc3J2
LCBibGl0U1JWLCBtRm9ybWF0SW5mby5pbnRlcm5hbEZvcm1hdCwgZ2V0Rm9ybWF0U2V0KCksCiAg
ICAgICAgICAgICBnZXRMZXZlbFdpZHRoKGxldmVsKSwgZ2V0TGV2ZWxIZWlnaHQobGV2ZWwpLCAx
LCAwKTsKIAogICAgICAgICAvLyBSZW5kZXJUYXJnZXQgd2lsbCB0YWtlIG93bmVyc2hpcCBvZiB0
aGVzZSByZXNvdXJjZXMKQEAgLTEzMTEsMTAgKzExNTMsMTAgQEAgZ2w6OkVycm9yIFRleHR1cmVT
dG9yYWdlMTFfMkQ6OmdldFJlbmRlcgogICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VS
Uk9SKTsKICAgICB9CiAKLSAgICBBU1NFUlQobVRleHR1cmVGb3JtYXRTZXQtPmRzdkZvcm1hdCAh
PSBEWEdJX0ZPUk1BVF9VTktOT1dOKTsKKyAgICBBU1NFUlQobUZvcm1hdEluZm8uZHN2Rm9ybWF0
ICE9IERYR0lfRk9STUFUX1VOS05PV04pOwogCiAgICAgRDNEMTFfREVQVEhfU1RFTkNJTF9WSUVX
X0RFU0MgZHN2RGVzYzsKLSAgICBkc3ZEZXNjLkZvcm1hdCAgICAgICAgICAgICA9IG1UZXh0dXJl
Rm9ybWF0U2V0LT5kc3ZGb3JtYXQ7CisgICAgZHN2RGVzYy5Gb3JtYXQgICAgICAgICAgICAgPSBt
Rm9ybWF0SW5mby5kc3ZGb3JtYXQ7CiAgICAgZHN2RGVzYy5WaWV3RGltZW5zaW9uICAgICAgPSBE
M0QxMV9EU1ZfRElNRU5TSU9OX1RFWFRVUkUyRDsKICAgICBkc3ZEZXNjLlRleHR1cmUyRC5NaXBT
bGljZSA9IG1Ub3BMZXZlbCArIGxldmVsOwogICAgIGRzdkRlc2MuRmxhZ3MgICAgICAgICAgICAg
ID0gMDsKQEAgLTEzMzIsMTQgKzExNzQsMTQgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFf
MkQ6OmdldFJlbmRlcgogICAgIH0KIAogICAgIG1SZW5kZXJUYXJnZXRbbGV2ZWxdID0KLSAgICAg
ICAgbmV3IFRleHR1cmVSZW5kZXJUYXJnZXQxMShkc3YsIHRleHR1cmUsIHNydiwgbUludGVybmFs
Rm9ybWF0LCBtVGV4dHVyZUZvcm1hdFNldC0+Zm9ybWF0LAorICAgICAgICBuZXcgVGV4dHVyZVJl
bmRlclRhcmdldDExKGRzdiwgdGV4dHVyZSwgc3J2LCBtRm9ybWF0SW5mby5pbnRlcm5hbEZvcm1h
dCwgZ2V0Rm9ybWF0U2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0
TGV2ZWxXaWR0aChsZXZlbCksIGdldExldmVsSGVpZ2h0KGxldmVsKSwgMSwgMCk7CiAKICAgICAv
LyBSZW5kZXJUYXJnZXQgd2lsbCB0YWtlIG93bmVyc2hpcCBvZiB0aGVzZSByZXNvdXJjZXMKICAg
ICBTYWZlUmVsZWFzZShkc3YpOwogCiAgICAgKm91dFJUID0gbVJlbmRlclRhcmdldFtsZXZlbF07
Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vy
cm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExXzJEOjpjcmVhdGVTUlYoaW50
IGJhc2VMZXZlbCwKQEAgLTE0MDcsNyArMTI0OSw3IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFn
ZTExXzJEOjpnZXRTd2l6emwKICAgICAgICAgZGVzYy5IZWlnaHQgICAgICAgICAgICAgPSBtVGV4
dHVyZUhlaWdodDsKICAgICAgICAgZGVzYy5NaXBMZXZlbHMgICAgICAgICAgPSBtTWlwTGV2ZWxz
OwogICAgICAgICBkZXNjLkFycmF5U2l6ZSAgICAgICAgICA9IDE7Ci0gICAgICAgIGRlc2MuRm9y
bWF0ICAgICAgICAgICAgID0gbVN3aXp6bGVGb3JtYXRTZXQtPnRleEZvcm1hdDsKKyAgICAgICAg
ZGVzYy5Gb3JtYXQgICAgICAgICAgICAgPSBtRm9ybWF0SW5mby5zd2l6emxlLnRleEZvcm1hdDsK
ICAgICAgICAgZGVzYy5TYW1wbGVEZXNjLkNvdW50ICAgPSAxOwogICAgICAgICBkZXNjLlNhbXBs
ZURlc2MuUXVhbGl0eSA9IDA7CiAgICAgICAgIGRlc2MuVXNhZ2UgICAgICAgICAgICAgID0gRDNE
MTFfVVNBR0VfREVGQVVMVDsKQEAgLTE0MzksMTYgKzEyODEsMTIgQEAgZ2w6OkVycm9yIFRleHR1
cmVTdG9yYWdlMTFfMkQ6OmdldFN3aXp6bAogICAgIGlmICghbVN3aXp6bGVSZW5kZXJUYXJnZXRz
W21pcExldmVsXSkKICAgICB7CiAgICAgICAgIElEM0QxMVJlc291cmNlICpzd2l6emxlVGV4dHVy
ZSA9IG51bGxwdHI7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGdldFN3aXp6bGVUZXh0dXJl
KCZzd2l6emxlVGV4dHVyZSk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBBTkdMRV9U
UlkoZ2V0U3dpenpsZVRleHR1cmUoJnN3aXp6bGVUZXh0dXJlKSk7CiAKICAgICAgICAgSUQzRDEx
RGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwogCiAgICAgICAgIEQzRDEx
X1JFTkRFUl9UQVJHRVRfVklFV19ERVNDIHJ0dkRlc2M7Ci0gICAgICAgIHJ0dkRlc2MuRm9ybWF0
ICAgICAgICAgICAgID0gbVN3aXp6bGVGb3JtYXRTZXQtPnJ0dkZvcm1hdDsKKyAgICAgICAgcnR2
RGVzYy5Gb3JtYXQgICAgICAgICAgICAgPSBtRm9ybWF0SW5mby5zd2l6emxlLnJ0dkZvcm1hdDsK
ICAgICAgICAgcnR2RGVzYy5WaWV3RGltZW5zaW9uICAgICAgPSBEM0QxMV9SVFZfRElNRU5TSU9O
X1RFWFRVUkUyRDsKICAgICAgICAgcnR2RGVzYy5UZXh0dXJlMkQuTWlwU2xpY2UgPSBtVG9wTGV2
ZWwgKyBtaXBMZXZlbDsKIApAQCAtMTQ2NSwyOCArMTMwMywyMDggQEAgZ2w6OkVycm9yIFRleHR1
cmVTdG9yYWdlMTFfMkQ6OmdldFN3aXp6bAogICAgIH0KIAogICAgICpvdXRSVFYgPSBtU3dpenps
ZVJlbmRlclRhcmdldHNbbWlwTGV2ZWxdOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworfQor
CitnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV8yRDo6Y3JlYXRlRHJvcFN0ZW5jaWxUZXh0dXJl
KCkKK3sKKyAgICBpZiAobURyb3BTdGVuY2lsVGV4dHVyZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBnbDo6Tm9FcnJvcigpOworICAgIH0KKworICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIGRyb3BE
ZXNjID0ge307CisgICAgZHJvcERlc2MuQXJyYXlTaXplICAgICAgICAgICAgPSAxOworICAgIGRy
b3BEZXNjLkJpbmRGbGFncyAgICAgICAgICAgID0gRDNEMTFfQklORF9TSEFERVJfUkVTT1VSQ0Ug
fCBEM0QxMV9CSU5EX0RFUFRIX1NURU5DSUw7CisgICAgZHJvcERlc2MuQ1BVQWNjZXNzRmxhZ3Mg
ICAgICAgPSAwOworICAgIGRyb3BEZXNjLkZvcm1hdCAgICAgICAgICAgICAgID0gRFhHSV9GT1JN
QVRfUjMyX1RZUEVMRVNTOworICAgIGRyb3BEZXNjLkhlaWdodCAgICAgICAgICAgICAgID0gbVRl
eHR1cmVIZWlnaHQ7CisgICAgZHJvcERlc2MuTWlwTGV2ZWxzICAgICAgICAgICAgPSBtTWlwTGV2
ZWxzOworICAgIGRyb3BEZXNjLk1pc2NGbGFncyAgICAgICAgICAgID0gMDsKKyAgICBkcm9wRGVz
Yy5TYW1wbGVEZXNjLkNvdW50ICAgICA9IDE7CisgICAgZHJvcERlc2MuU2FtcGxlRGVzYy5RdWFs
aXR5ICAgPSAwOworICAgIGRyb3BEZXNjLlVzYWdlICAgICAgICAgICAgICAgID0gRDNEMTFfVVNB
R0VfREVGQVVMVDsKKyAgICBkcm9wRGVzYy5XaWR0aCAgICAgICAgICAgICAgICA9IG1UZXh0dXJl
V2lkdGg7CisKKyAgICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNl
KCk7CisKKyAgICBIUkVTVUxUIGhyID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJmRyb3BEZXNj
LCBudWxscHRyLCAmbURyb3BTdGVuY2lsVGV4dHVyZSk7CisgICAgaWYgKEZBSUxFRChocikpCisg
ICAgeworICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRXJy
b3IgY3JlYXRpbmcgZHJvcCBzdGVuY2lsIHRleHR1cmUuIik7CisgICAgfQorICAgIGQzZDExOjpT
ZXREZWJ1Z05hbWUobURyb3BTdGVuY2lsVGV4dHVyZSwgIlRleFN0b3JhZ2UyRC5Ecm9wU3RlbmNp
bCIpOworCisgICAgQU5HTEVfVFJZKGluaXREcm9wU3RlbmNpbFRleHR1cmUoZ2w6OkltYWdlSW5k
ZXhJdGVyYXRvcjo6TWFrZTJEKDAsIG1NaXBMZXZlbHMpKSk7CisKKyAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKK30KKworVGV4dHVyZVN0b3JhZ2UxMV9FeHRlcm5hbDo6VGV4dHVyZVN0b3JhZ2Ux
MV9FeHRlcm5hbCgKKyAgICBSZW5kZXJlcjExICpyZW5kZXJlciwKKyAgICBlZ2w6OlN0cmVhbSAq
c3RyZWFtLAorICAgIGNvbnN0IGVnbDo6U3RyZWFtOjpHTFRleHR1cmVEZXNjcmlwdGlvbiAmZ2xE
ZXNjKQorICAgIDogVGV4dHVyZVN0b3JhZ2UxMShyZW5kZXJlciwgRDNEMTFfQklORF9TSEFERVJf
UkVTT1VSQ0UsIDAsIGdsRGVzYy5pbnRlcm5hbEZvcm1hdCkKK3sKKyAgICBBU1NFUlQoc3RyZWFt
LT5nZXRQcm9kdWNlclR5cGUoKSA9PSBlZ2w6OlN0cmVhbTo6UHJvZHVjZXJUeXBlOjpEM0QxMVRl
eHR1cmVOVjEyKTsKKyAgICBTdHJlYW1Qcm9kdWNlck5WMTIgKnByb2R1Y2VyID0gc3RhdGljX2Nh
c3Q8U3RyZWFtUHJvZHVjZXJOVjEyICo+KHN0cmVhbS0+Z2V0SW1wbGVtZW50YXRpb24oKSk7Cisg
ICAgbVRleHR1cmUgICAgICAgICAgICAgICAgICAgICA9IHByb2R1Y2VyLT5nZXREM0RUZXh0dXJl
KCk7CisgICAgbVN1YnJlc291cmNlSW5kZXggPSBwcm9kdWNlci0+Z2V0QXJyYXlTbGljZSgpOwor
ICAgIG1UZXh0dXJlLT5BZGRSZWYoKTsKKyAgICBtTWlwTGV2ZWxzID0gMTsKKworICAgIEQzRDEx
X1RFWFRVUkUyRF9ERVNDIGRlc2M7CisgICAgbVRleHR1cmUtPkdldERlc2MoJmRlc2MpOworICAg
IG1UZXh0dXJlV2lkdGggICA9IGRlc2MuV2lkdGg7CisgICAgbVRleHR1cmVIZWlnaHQgID0gZGVz
Yy5IZWlnaHQ7CisgICAgbVRleHR1cmVEZXB0aCAgID0gMTsKKyAgICBtSGFzS2V5ZWRNdXRleCA9
IChkZXNjLk1pc2NGbGFncyAmIEQzRDExX1JFU09VUkNFX01JU0NfU0hBUkVEX0tFWUVETVVURVgp
ICE9IDA7Cit9CisKK1RleHR1cmVTdG9yYWdlMTFfRXh0ZXJuYWw6On5UZXh0dXJlU3RvcmFnZTEx
X0V4dGVybmFsKCkKK3sKKyAgICBTYWZlUmVsZWFzZShtVGV4dHVyZSk7CisgICAgaWYgKG1IYXNL
ZXllZE11dGV4KQorICAgIHsKKyAgICAgICAgLy8gSWYgdGhlIGtleWVkIG11dGV4IGlzIHJlbGVh
c2VkIHRoYXQgd2lsbCB1bmJpbmQgaXQgYW5kIGNhdXNlIHRoZSBzdGF0ZSBjYWNoZSB0byBiZWNv
bWUKKyAgICAgICAgLy8gZGVzeW5jaHJvbml6ZWQuCisgICAgICAgIG1SZW5kZXJlci0+Z2V0U3Rh
dGVNYW5hZ2VyKCktPmludmFsaWRhdGVCb3VuZFZpZXdzKCk7CisgICAgfQorfQorCitnbDo6RXJy
b3IgVGV4dHVyZVN0b3JhZ2UxMV9FeHRlcm5hbDo6Y29weVRvU3RvcmFnZShUZXh0dXJlU3RvcmFn
ZSAqZGVzdFN0b3JhZ2UpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOworfQorCit2b2lkIFRleHR1cmVTdG9yYWdlMTFfRXh0ZXJuYWw6OmFzc29jaWF0
ZUltYWdlKEltYWdlMTEgKmltYWdlLCBjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgpCit7Cisg
ICAgQVNTRVJUKGluZGV4Lm1pcEluZGV4ID09IDApOworICAgIG1Bc3NvY2lhdGVkSW1hZ2UgPSBp
bWFnZTsKK30KKworYm9vbCBUZXh0dXJlU3RvcmFnZTExX0V4dGVybmFsOjppc0Fzc29jaWF0ZWRJ
bWFnZVZhbGlkKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbWFnZTExICpleHBlY3RlZElt
YWdlKQoreworICAgIHJldHVybiAoaW5kZXgubWlwSW5kZXggPT0gMCAmJiBtQXNzb2NpYXRlZElt
YWdlID09IGV4cGVjdGVkSW1hZ2UpOworfQorCit2b2lkIFRleHR1cmVTdG9yYWdlMTFfRXh0ZXJu
YWw6OmRpc2Fzc29jaWF0ZUltYWdlKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2UxMSAqZXhw
ZWN0ZWRJbWFnZSkKK3sKKyAgICBBU1NFUlQoaW5kZXgubWlwSW5kZXggPT0gMCk7CisgICAgQVNT
RVJUKG1Bc3NvY2lhdGVkSW1hZ2UgPT0gZXhwZWN0ZWRJbWFnZSk7CisgICAgbUFzc29jaWF0ZWRJ
bWFnZSA9IG51bGxwdHI7Cit9CisKK2dsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExX0V4dGVybmFs
OjpyZWxlYXNlQXNzb2NpYXRlZEltYWdlKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEltYWdlMTEgKmluY29taW5nSW1hZ2UpCit7CisgICAgQVNTRVJUKGluZGV4Lm1pcEluZGV4ID09
IDApOworCisgICAgaWYgKG1Bc3NvY2lhdGVkSW1hZ2UgIT0gbnVsbHB0ciAmJiBtQXNzb2NpYXRl
ZEltYWdlICE9IGluY29taW5nSW1hZ2UpCisgICAgeworICAgICAgICBib29sIGltYWdlQXNzb2Np
YXRpb25Db3JyZWN0ID0gbUFzc29jaWF0ZWRJbWFnZS0+aXNBc3NvY2lhdGVkU3RvcmFnZVZhbGlk
KHRoaXMpOworICAgICAgICBBU1NFUlQoaW1hZ2VBc3NvY2lhdGlvbkNvcnJlY3QpOworCisgICAg
ICAgIGlmIChpbWFnZUFzc29jaWF0aW9uQ29ycmVjdCkKKyAgICAgICAgeworICAgICAgICAgICAg
QU5HTEVfVFJZKG1Bc3NvY2lhdGVkSW1hZ2UtPnJlY292ZXJGcm9tQXNzb2NpYXRlZFN0b3JhZ2Uo
KSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKK30KKwor
Z2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfRXh0ZXJuYWw6OmdldFJlc291cmNlKElEM0QxMVJl
c291cmNlICoqb3V0UmVzb3VyY2UpCit7CisgICAgKm91dFJlc291cmNlID0gbVRleHR1cmU7Cisg
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Cit9CisKK2dsOjpFcnJvciBUZXh0dXJl
U3RvcmFnZTExX0V4dGVybmFsOjpnZXRNaXBwZWRSZXNvdXJjZShJRDNEMTFSZXNvdXJjZSAqKm91
dFJlc291cmNlKQoreworICAgICpvdXRSZXNvdXJjZSA9IG1UZXh0dXJlOwogICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi1UZXh0dXJlU3RvcmFnZTExX0VHTEltYWdlOjpU
ZXh0dXJlU3RvcmFnZTExX0VHTEltYWdlKFJlbmRlcmVyMTEgKnJlbmRlcmVyLCBFR0xJbWFnZUQz
RCAqZWdsSW1hZ2UpCi0gICAgOiBUZXh0dXJlU3RvcmFnZTExKHJlbmRlcmVyLCBEM0QxMV9CSU5E
X1JFTkRFUl9UQVJHRVQgfCBEM0QxMV9CSU5EX1NIQURFUl9SRVNPVVJDRSwgMCksCitnbDo6RXJy
b3IgVGV4dHVyZVN0b3JhZ2UxMV9FeHRlcm5hbDo6Z2V0UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpJ
bWFnZUluZGV4ICZpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUmVuZGVyVGFyZ2V0RDNEICoqb3V0UlQpCit7CisgICAgLy8gUmVuZGVy
IHRhcmdldHMgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIGV4dGVybmFsIHRleHR1cmVzCisgICAgVU5S
RUFDSEFCTEUoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
K30KKworZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfRXh0ZXJuYWw6OmNyZWF0ZVNSVihpbnQg
YmFzZUxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgbWlwTGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIElEM0QxMVJlc291cmNlICp0ZXh0dXJlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZp
ZXcgKipvdXRTUlYpIGNvbnN0Cit7CisgICAgLy8gU2luY2UgZXh0ZXJuYWwgdGV4dHVyZXMgYXJl
IHRyZWF0ZXMgYXMgbm9uLW1pcG1hcHBlZCB0ZXh0dXJlcywgd2UgaWdub3JlIG1pcG1hcCBsZXZl
bHMgYW5kCisgICAgLy8gdXNlIHRoZSBzcGVjaWZpZWQgc3VicmVzb3VyY2UgSUQgdGhlIHN0b3Jh
Z2Ugd2FzIGNyZWF0ZWQgd2l0aC4KKyAgICBBU1NFUlQobWlwTGV2ZWxzID09IDEpOworICAgIEFT
U0VSVChvdXRTUlYpOworCisgICAgRDNEMTFfU0hBREVSX1JFU09VUkNFX1ZJRVdfREVTQyBzcnZE
ZXNjOworICAgIHNydkRlc2MuRm9ybWF0ICAgICAgICA9IGZvcm1hdDsKKyAgICBzcnZEZXNjLlZp
ZXdEaW1lbnNpb24gPSBEM0QxMV9TUlZfRElNRU5TSU9OX1RFWFRVUkUyREFSUkFZOworICAgIC8v
IHN1YnJlc291cmNlIGluZGV4IGlzIGVxdWFsIHRvIHRoZSBtaXAgbGV2ZWwgZm9yIDJEIHRleHR1
cmVzCisgICAgc3J2RGVzYy5UZXh0dXJlMkRBcnJheS5Nb3N0RGV0YWlsZWRNaXAgPSAwOworICAg
IHNydkRlc2MuVGV4dHVyZTJEQXJyYXkuTWlwTGV2ZWxzICAgICAgID0gMTsKKyAgICBzcnZEZXNj
LlRleHR1cmUyREFycmF5LkZpcnN0QXJyYXlTbGljZSA9IG1TdWJyZXNvdXJjZUluZGV4OworICAg
IHNydkRlc2MuVGV4dHVyZTJEQXJyYXkuQXJyYXlTaXplICAgICAgID0gMTsKKworICAgIElEM0Qx
MVJlc291cmNlICpzcnZUZXh0dXJlID0gdGV4dHVyZTsKKworICAgIElEM0QxMURldmljZSAqZGV2
aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKyAgICBIUkVTVUxUIHJlc3VsdCAgICAgICA9
IGRldmljZS0+Q3JlYXRlU2hhZGVyUmVzb3VyY2VWaWV3KHNydlRleHR1cmUsICZzcnZEZXNjLCBv
dXRTUlYpOworCisgICAgQVNTRVJUKHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZIHx8IFNVQ0NFRURF
RChyZXN1bHQpKTsKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAgICAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCisgICAgICAgICAgICAgICAgICAgICAgICAg
IkZhaWxlZCB0byBjcmVhdGUgaW50ZXJuYWwgdGV4dHVyZSBzdG9yYWdlIFNSViwgcmVzdWx0OiAw
eCVYLiIsIHJlc3VsdCk7CisgICAgfQorCisgICAgZDNkMTE6OlNldERlYnVnTmFtZSgqb3V0U1JW
LCAiVGV4U3RvcmFnZTJELlNSViIpOworCisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CisK
K2dsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExX0V4dGVybmFsOjpnZXRTd2l6emxlVGV4dHVyZShJ
RDNEMTFSZXNvdXJjZSAqKm91dFRleHR1cmUpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3Ig
VGV4dHVyZVN0b3JhZ2UxMV9FeHRlcm5hbDo6Z2V0U3dpenpsZVJlbmRlclRhcmdldChpbnQgbWlw
TGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICoqb3V0UlRWKQoreworICAgIFVOSU1Q
TEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
K30KKworVGV4dHVyZVN0b3JhZ2UxMV9FR0xJbWFnZTo6VGV4dHVyZVN0b3JhZ2UxMV9FR0xJbWFn
ZShSZW5kZXJlcjExICpyZW5kZXJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRUdMSW1hZ2VEM0QgKmVnbEltYWdlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJUYXJnZXQxMSAq
cmVuZGVyVGFyZ2V0MTEpCisgICAgOiBUZXh0dXJlU3RvcmFnZTExKHJlbmRlcmVyLAorICAgICAg
ICAgICAgICAgICAgICAgICBEM0QxMV9CSU5EX1JFTkRFUl9UQVJHRVQgfCBEM0QxMV9CSU5EX1NI
QURFUl9SRVNPVVJDRSwKKyAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgcmVuZGVyVGFyZ2V0MTEtPmdldEludGVybmFsRm9ybWF0KCkpLAogICAgICAgbUlt
YWdlKGVnbEltYWdlKSwKICAgICAgIG1DdXJyZW50UmVuZGVyVGFyZ2V0KDApLAogICAgICAgbVN3
aXp6bGVUZXh0dXJlKG51bGxwdHIpLAogICAgICAgbVN3aXp6bGVSZW5kZXJUYXJnZXRzKGdsOjpJ
TVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFMsIG51bGxwdHIpCiB7Ci0gICAgUmVuZGVy
VGFyZ2V0RDNEICpyZW5kZXJUYXJnZXREM0QgPSBudWxscHRyOwotICAgIG1JbWFnZS0+Z2V0UmVu
ZGVyVGFyZ2V0KCZyZW5kZXJUYXJnZXREM0QpOwotICAgIFJlbmRlclRhcmdldDExICpyZW5kZXJU
YXJnZXQxMSA9IEdldEFzPFJlbmRlclRhcmdldDExPihyZW5kZXJUYXJnZXREM0QpOwotICAgIG1D
dXJyZW50UmVuZGVyVGFyZ2V0ICAgICAgICAgICA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
PihyZW5kZXJUYXJnZXQxMSk7CisgICAgbUN1cnJlbnRSZW5kZXJUYXJnZXQgPSByZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4ocmVuZGVyVGFyZ2V0MTEpOwogCiAgICAgbU1pcExldmVscyAgICAg
ID0gMTsKLSAgICBtVGV4dHVyZUZvcm1hdFNldCA9ICZkM2QxMTo6R2V0QU5HTEVGb3JtYXRTZXQo
cmVuZGVyVGFyZ2V0MTEtPmdldEFOR0xFRm9ybWF0KCkpOwotICAgIG1Td2l6emxlRm9ybWF0U2V0
ID0gJmQzZDExOjpHZXRBTkdMRUZvcm1hdFNldChtVGV4dHVyZUZvcm1hdFNldC0+c3dpenpsZUZv
cm1hdCk7CiAgICAgbVRleHR1cmVXaWR0aCAgID0gcmVuZGVyVGFyZ2V0MTEtPmdldFdpZHRoKCk7
CiAgICAgbVRleHR1cmVIZWlnaHQgID0gcmVuZGVyVGFyZ2V0MTEtPmdldEhlaWdodCgpOwogICAg
IG1UZXh0dXJlRGVwdGggICA9IDE7Ci0gICAgbUludGVybmFsRm9ybWF0ID0gcmVuZGVyVGFyZ2V0
MTEtPmdldEludGVybmFsRm9ybWF0KCk7CiB9CiAKIFRleHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2U6
On5UZXh0dXJlU3RvcmFnZTExX0VHTEltYWdlKCkKQEAgLTE1MDAsMzIgKzE1MTgsMTggQEAgVGV4
dHVyZVN0b3JhZ2UxMV9FR0xJbWFnZTo6flRleHR1cmVTdG9yYQogCiBnbDo6RXJyb3IgVGV4dHVy
ZVN0b3JhZ2UxMV9FR0xJbWFnZTo6Z2V0UmVzb3VyY2UoSUQzRDExUmVzb3VyY2UgKipvdXRSZXNv
dXJjZSkKIHsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBjaGVja0ZvclVwZGF0ZWRSZW5kZXJUYXJn
ZXQoKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVy
cm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkoY2hlY2tGb3JVcGRhdGVkUmVuZGVyVGFyZ2V0KCkp
OwogCiAgICAgUmVuZGVyVGFyZ2V0MTEgKnJlbmRlclRhcmdldDExID0gbnVsbHB0cjsKLSAgICBl
cnJvciA9IGdldEltYWdlUmVuZGVyVGFyZ2V0KCZyZW5kZXJUYXJnZXQxMSk7Ci0gICAgaWYgKGVy
cm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Ci0KKyAg
ICBBTkdMRV9UUlkoZ2V0SW1hZ2VSZW5kZXJUYXJnZXQoJnJlbmRlclRhcmdldDExKSk7CiAgICAg
Km91dFJlc291cmNlID0gcmVuZGVyVGFyZ2V0MTEtPmdldFRleHR1cmUoKTsKLSAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAog
Z2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2U6OmdldFNSVihjb25zdCBnbDo6VGV4
dHVyZVN0YXRlICZ0ZXh0dXJlU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqKm91dFNSVikKIHsKLSAgICBn
bDo6RXJyb3IgZXJyb3IgPSBjaGVja0ZvclVwZGF0ZWRSZW5kZXJUYXJnZXQoKTsKLSAgICBpZiAo
ZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KLQor
ICAgIEFOR0xFX1RSWShjaGVja0ZvclVwZGF0ZWRSZW5kZXJUYXJnZXQoKSk7CiAgICAgcmV0dXJu
IFRleHR1cmVTdG9yYWdlMTE6OmdldFNSVih0ZXh0dXJlU3RhdGUsIG91dFNSVik7CiB9CiAKQEAg
LTE1NDQsMTEgKzE1NDgsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV9FR0xJbWFnZTo6
Z2V0CiAgICAgQVNTRVJUKGluZGV4Lm1pcEluZGV4ID09IDApOwogICAgIFVOVVNFRF9BU1NFUlRJ
T05fVkFSSUFCTEUoaW5kZXgpOwogCi0gICAgZ2w6OkVycm9yIGVycm9yID0gY2hlY2tGb3JVcGRh
dGVkUmVuZGVyVGFyZ2V0KCk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKGNoZWNrRm9yVXBkYXRlZFJl
bmRlclRhcmdldCgpKTsKIAogICAgIHJldHVybiBtSW1hZ2UtPmdldFJlbmRlclRhcmdldChvdXRS
VCk7CiB9CkBAIC0xNTU2LDI3ICsxNTU2LDE5IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTEx
X0VHTEltYWdlOjpnZXQKIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExX0VHTEltYWdlOjpjb3B5
VG9TdG9yYWdlKFRleHR1cmVTdG9yYWdlICpkZXN0U3RvcmFnZSkKIHsKICAgICBJRDNEMTFSZXNv
dXJjZSAqc291cmNlUmVzb3VjZSA9IG51bGxwdHI7Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gZ2V0
UmVzb3VyY2UoJnNvdXJjZVJlc291Y2UpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAg
ewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShnZXRSZXNvdXJj
ZSgmc291cmNlUmVzb3VjZSkpOwogCiAgICAgQVNTRVJUKGRlc3RTdG9yYWdlKTsKICAgICBUZXh0
dXJlU3RvcmFnZTExXzJEICpkZXN0MTEgID0gR2V0QXM8VGV4dHVyZVN0b3JhZ2UxMV8yRD4oZGVz
dFN0b3JhZ2UpOwogICAgIElEM0QxMVJlc291cmNlICpkZXN0UmVzb3VyY2UgPSBudWxscHRyOwot
ICAgIGVycm9yID0gZGVzdDExLT5nZXRSZXNvdXJjZSgmZGVzdFJlc291cmNlKTsKLSAgICBpZiAo
ZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAg
ICBBTkdMRV9UUlkoZGVzdDExLT5nZXRSZXNvdXJjZSgmZGVzdFJlc291cmNlKSk7CiAKICAgICBJ
RDNEMTFEZXZpY2VDb250ZXh0ICppbW1lZGlhdGVDb250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZp
Y2VDb250ZXh0KCk7CiAgICAgaW1tZWRpYXRlQ29udGV4dC0+Q29weVJlc291cmNlKGRlc3RSZXNv
dXJjZSwgc291cmNlUmVzb3VjZSk7CiAKLSAgICBkZXN0MTEtPmludmFsaWRhdGVTd2l6emxlQ2Fj
aGUoKTsKKyAgICBkZXN0MTEtPm1hcmtEaXJ0eSgpOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIHZvaWQgVGV4dHVy
ZVN0b3JhZ2UxMV9FR0xJbWFnZTo6YXNzb2NpYXRlSW1hZ2UoSW1hZ2UxMSAqLCBjb25zdCBnbDo6
SW1hZ2VJbmRleCAmKQpAQCAtMTYxNiw3ICsxNjA4LDcgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9y
YWdlMTFfRUdMSW1hZ2U6OmdldAogICAgICAgICBkZXNjLkhlaWdodCAgICAgICAgICAgICA9IG1U
ZXh0dXJlSGVpZ2h0OwogICAgICAgICBkZXNjLk1pcExldmVscyAgICAgICAgICA9IG1NaXBMZXZl
bHM7CiAgICAgICAgIGRlc2MuQXJyYXlTaXplICAgICAgICAgID0gMTsKLSAgICAgICAgZGVzYy5G
b3JtYXQgICAgICAgICAgICAgPSBtU3dpenpsZUZvcm1hdFNldC0+dGV4Rm9ybWF0OworICAgICAg
ICBkZXNjLkZvcm1hdCAgICAgICAgICAgICA9IG1Gb3JtYXRJbmZvLnN3aXp6bGUudGV4Rm9ybWF0
OwogICAgICAgICBkZXNjLlNhbXBsZURlc2MuQ291bnQgICA9IDE7CiAgICAgICAgIGRlc2MuU2Ft
cGxlRGVzYy5RdWFsaXR5ID0gMDsKICAgICAgICAgZGVzYy5Vc2FnZSAgICAgICAgICAgICAgPSBE
M0QxMV9VU0FHRV9ERUZBVUxUOwpAQCAtMTY0OSwxNiArMTY0MSwxMiBAQCBnbDo6RXJyb3IgVGV4
dHVyZVN0b3JhZ2UxMV9FR0xJbWFnZTo6Z2V0CiAgICAgaWYgKCFtU3dpenpsZVJlbmRlclRhcmdl
dHNbbWlwTGV2ZWxdKQogICAgIHsKICAgICAgICAgSUQzRDExUmVzb3VyY2UgKnN3aXp6bGVUZXh0
dXJlID0gbnVsbHB0cjsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gZ2V0U3dpenpsZVRleHR1
cmUoJnN3aXp6bGVUZXh0dXJlKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9CisgICAgICAgIEFOR0xF
X1RSWShnZXRTd2l6emxlVGV4dHVyZSgmc3dpenpsZVRleHR1cmUpKTsKIAogICAgICAgICBJRDNE
MTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CiAKICAgICAgICAgRDNE
MTFfUkVOREVSX1RBUkdFVF9WSUVXX0RFU0MgcnR2RGVzYzsKLSAgICAgICAgcnR2RGVzYy5Gb3Jt
YXQgICAgICAgICAgICAgPSBtU3dpenpsZUZvcm1hdFNldC0+cnR2Rm9ybWF0OworICAgICAgICBy
dHZEZXNjLkZvcm1hdCAgICAgICAgICAgICA9IG1Gb3JtYXRJbmZvLnN3aXp6bGUucnR2Rm9ybWF0
OwogICAgICAgICBydHZEZXNjLlZpZXdEaW1lbnNpb24gICAgICA9IEQzRDExX1JUVl9ESU1FTlNJ
T05fVEVYVFVSRTJEOwogICAgICAgICBydHZEZXNjLlRleHR1cmUyRC5NaXBTbGljZSA9IG1Ub3BM
ZXZlbCArIG1pcExldmVsOwogCkBAIC0xNjc1LDE3ICsxNjYzLDEzIEBAIGdsOjpFcnJvciBUZXh0
dXJlU3RvcmFnZTExX0VHTEltYWdlOjpnZXQKICAgICB9CiAKICAgICAqb3V0UlRWID0gbVN3aXp6
bGVSZW5kZXJUYXJnZXRzW21pcExldmVsXTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VS
Uk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFRleHR1cmVT
dG9yYWdlMTFfRUdMSW1hZ2U6OmNoZWNrRm9yVXBkYXRlZFJlbmRlclRhcmdldCgpCiB7CiAgICAg
UmVuZGVyVGFyZ2V0MTEgKnJlbmRlclRhcmdldDExID0gbnVsbHB0cjsKLSAgICBnbDo6RXJyb3Ig
ZXJyb3IgPSBnZXRJbWFnZVJlbmRlclRhcmdldCgmcmVuZGVyVGFyZ2V0MTEpOwotICAgIGlmIChl
cnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAg
IEFOR0xFX1RSWShnZXRJbWFnZVJlbmRlclRhcmdldCgmcmVuZGVyVGFyZ2V0MTEpKTsKIAogICAg
IGlmIChtQ3VycmVudFJlbmRlclRhcmdldCAhPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4o
cmVuZGVyVGFyZ2V0MTEpKQogICAgIHsKQEAgLTE2OTMsNyArMTY3Nyw3IEBAIGdsOjpFcnJvciBU
ZXh0dXJlU3RvcmFnZTExX0VHTEltYWdlOjpjaGUKICAgICAgICAgbUN1cnJlbnRSZW5kZXJUYXJn
ZXQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocmVuZGVyVGFyZ2V0MTEpOwogICAgIH0K
IAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9F
cnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV9FR0xJbWFnZTo6Y3JlYXRl
U1JWKGludCBiYXNlTGV2ZWwsCkBAIC0xNzMyLDExICsxNzE2LDcgQEAgZ2w6OkVycm9yIFRleHR1
cmVTdG9yYWdlMTFfRUdMSW1hZ2U6OmNyZQogICAgIGVsc2UKICAgICB7CiAgICAgICAgIFJlbmRl
clRhcmdldDExICpyZW5kZXJUYXJnZXQgPSBudWxscHRyOwotICAgICAgICBnbDo6RXJyb3IgZXJy
b3IgPSBnZXRJbWFnZVJlbmRlclRhcmdldCgmcmVuZGVyVGFyZ2V0KTsKLSAgICAgICAgaWYgKGVy
cm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAg
ICAgICB9CisgICAgICAgIEFOR0xFX1RSWShnZXRJbWFnZVJlbmRlclRhcmdldCgmcmVuZGVyVGFy
Z2V0KSk7CiAKICAgICAgICAgQVNTRVJUKHRleHR1cmUgPT0gcmVuZGVyVGFyZ2V0LT5nZXRUZXh0
dXJlKCkpOwogCkBAIC0xNzUwLDE0ICsxNzMwLDkgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdl
MTFfRUdMSW1hZ2U6OmNyZQogZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2U6Omdl
dEltYWdlUmVuZGVyVGFyZ2V0KFJlbmRlclRhcmdldDExICoqb3V0UlQpIGNvbnN0CiB7CiAgICAg
UmVuZGVyVGFyZ2V0RDNEICpyZW5kZXJUYXJnZXREM0QgPSBudWxscHRyOwotICAgIGdsOjpFcnJv
ciBlcnJvciA9IG1JbWFnZS0+Z2V0UmVuZGVyVGFyZ2V0KCZyZW5kZXJUYXJnZXREM0QpOwotICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAg
fQotCisgICAgQU5HTEVfVFJZKG1JbWFnZS0+Z2V0UmVuZGVyVGFyZ2V0KCZyZW5kZXJUYXJnZXRE
M0QpKTsKICAgICAqb3V0UlQgPSBHZXRBczxSZW5kZXJUYXJnZXQxMT4ocmVuZGVyVGFyZ2V0RDNE
KTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKIH0KIAogVGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjpUZXh0dXJlU3RvcmFnZTExX0N1
YmUoUmVuZGVyZXIxMSAqcmVuZGVyZXIsCkBAIC0xNzcyLDcgKzE3NDcsOCBAQCBUZXh0dXJlU3Rv
cmFnZTExX0N1YmU6OlRleHR1cmVTdG9yYWdlMTFfCiAgICAgICAgICAgR2V0VGV4dHVyZU1pc2NG
bGFncyhpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRl
cmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVuZGVyVGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxz
KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMpLAorICAgICAgICAgIGlu
dGVybmFsZm9ybWF0KSwKICAgICAgIG1UZXh0dXJlKG51bGxwdHIpLAogICAgICAgbUxldmVsWmVy
b1RleHR1cmUobnVsbHB0ciksCiAgICAgICBtVXNlTGV2ZWxaZXJvVGV4dHVyZShoaW50TGV2ZWxa
ZXJvT25seSAmJiBsZXZlbHMgPiAxKSwKQEAgLTE3OTMsMTYgKzE3NjksOSBAQCBUZXh0dXJlU3Rv
cmFnZTExX0N1YmU6OlRleHR1cmVTdG9yYWdlMTFfCiAgICAgICAgIG1MZXZlbFplcm9SZW5kZXJU
YXJnZXRbZmFjZV0gPSBudWxscHRyOwogICAgIH0KIAotICAgIG1JbnRlcm5hbEZvcm1hdCA9IGlu
dGVybmFsZm9ybWF0OwotCi0gICAgY29uc3QgZDNkMTE6OlRleHR1cmVGb3JtYXQgJmZvcm1hdElu
Zm8gPQotICAgICAgICBkM2QxMTo6R2V0VGV4dHVyZUZvcm1hdEluZm8oaW50ZXJuYWxmb3JtYXQs
IHJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpKTsKLSAgICBtVGV4dHVyZUZvcm1h
dFNldCA9IGZvcm1hdEluZm8uZm9ybWF0U2V0OwotICAgIG1Td2l6emxlRm9ybWF0U2V0ID0gZm9y
bWF0SW5mby5zd2l6emxlRm9ybWF0U2V0OwotCiAgICAgLy8gYWRqdXN0IHNpemUgaWYgbmVlZGVk
IGZvciBjb21wcmVzc2VkIHRleHR1cmVzCiAgICAgaW50IGhlaWdodCA9IHNpemU7Ci0gICAgZDNk
MTE6Ok1ha2VWYWxpZFNpemUoZmFsc2UsIG1UZXh0dXJlRm9ybWF0U2V0LT50ZXhGb3JtYXQsICZz
aXplLCAmaGVpZ2h0LCAmbVRvcExldmVsKTsKKyAgICBkM2QxMTo6TWFrZVZhbGlkU2l6ZShmYWxz
ZSwgbUZvcm1hdEluZm8udGV4Rm9ybWF0LCAmc2l6ZSwgJmhlaWdodCwgJm1Ub3BMZXZlbCk7CiAK
ICAgICBtTWlwTGV2ZWxzICAgICA9IG1Ub3BMZXZlbCArIGxldmVsczsKICAgICBtVGV4dHVyZVdp
ZHRoICA9IHNpemU7CkBAIC0xODg4LDM2ICsxODU3LDIwIEBAIGdsOjpFcnJvciBUZXh0dXJlU3Rv
cmFnZTExX0N1YmU6OmNvcHlUb1MKICAgICAgICAgLy8gY29ycmVzcG9uZGluZyB0ZXh0dXJlcyBp
biBkZXN0U3RvcmFnZS4KICAgICAgICAgaWYgKG1UZXh0dXJlKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBnbDo6RXJyb3IgZXJyb3IgPSBkZXN0MTEtPnVzZUxldmVsWmVyb1dvcmthcm91bmRUZXh0
dXJlKGZhbHNlKTsKLSAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgfQorICAgICAg
ICAgICAgQU5HTEVfVFJZKGRlc3QxMS0+dXNlTGV2ZWxaZXJvV29ya2Fyb3VuZFRleHR1cmUoZmFs
c2UpKTsKIAogICAgICAgICAgICAgSUQzRDExUmVzb3VyY2UgKmRlc3RSZXNvdXJjZSA9IG51bGxw
dHI7Ci0gICAgICAgICAgICBlcnJvciA9IGRlc3QxMS0+Z2V0UmVzb3VyY2UoJmRlc3RSZXNvdXJj
ZSk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFO
R0xFX1RSWShkZXN0MTEtPmdldFJlc291cmNlKCZkZXN0UmVzb3VyY2UpKTsKIAogICAgICAgICAg
ICAgaW1tZWRpYXRlQ29udGV4dC0+Q29weVJlc291cmNlKGRlc3RSZXNvdXJjZSwgbVRleHR1cmUp
OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1MZXZlbFplcm9UZXh0dXJlKQogICAgICAgICB7
Ci0gICAgICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBkZXN0MTEtPnVzZUxldmVsWmVyb1dvcmth
cm91bmRUZXh0dXJlKHRydWUpOwotICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAgICB9
CisgICAgICAgICAgICBBTkdMRV9UUlkoZGVzdDExLT51c2VMZXZlbFplcm9Xb3JrYXJvdW5kVGV4
dHVyZSh0cnVlKSk7CiAKICAgICAgICAgICAgIElEM0QxMVJlc291cmNlICpkZXN0UmVzb3VyY2Ug
PSBudWxscHRyOwotICAgICAgICAgICAgZXJyb3IgPSBkZXN0MTEtPmdldFJlc291cmNlKCZkZXN0
UmVzb3VyY2UpOwotICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAgICB9CisgICAgICAg
ICAgICBBTkdMRV9UUlkoZGVzdDExLT5nZXRSZXNvdXJjZSgmZGVzdFJlc291cmNlKSk7CiAKICAg
ICAgICAgICAgIGltbWVkaWF0ZUNvbnRleHQtPkNvcHlSZXNvdXJjZShkZXN0UmVzb3VyY2UsIG1M
ZXZlbFplcm9UZXh0dXJlKTsKICAgICAgICAgfQpAQCAtMTkyNSwyNiArMTg3OCwxOCBAQCBnbDo6
RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjpjb3B5VG9TCiAgICAgZWxzZQogICAgIHsKICAg
ICAgICAgSUQzRDExUmVzb3VyY2UgKnNvdXJjZVJlc291Y2UgPSBudWxscHRyOwotICAgICAgICBn
bDo6RXJyb3IgZXJyb3IgPSBnZXRSZXNvdXJjZSgmc291cmNlUmVzb3VjZSk7Ci0gICAgICAgIGlm
IChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsK
LSAgICAgICAgfQorICAgICAgICBBTkdMRV9UUlkoZ2V0UmVzb3VyY2UoJnNvdXJjZVJlc291Y2Up
KTsKIAogICAgICAgICBJRDNEMTFSZXNvdXJjZSAqZGVzdFJlc291cmNlID0gbnVsbHB0cjsKLSAg
ICAgICAgZXJyb3IgPSBkZXN0MTEtPmdldFJlc291cmNlKCZkZXN0UmVzb3VyY2UpOwotICAgICAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJy
b3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKGRlc3QxMS0+Z2V0UmVzb3VyY2UoJmRl
c3RSZXNvdXJjZSkpOwogCiAgICAgICAgIElEM0QxMURldmljZUNvbnRleHQgKmltbWVkaWF0ZUNv
bnRleHQgPSBtUmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKTsKICAgICAgICAgaW1tZWRpYXRl
Q29udGV4dC0+Q29weVJlc291cmNlKGRlc3RSZXNvdXJjZSwgc291cmNlUmVzb3VjZSk7CiAgICAg
fQogCi0gICAgZGVzdDExLT5pbnZhbGlkYXRlU3dpenpsZUNhY2hlKCk7CisgICAgZGVzdDExLT5t
YXJrRGlydHkoKTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJl
dHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV9DdWJl
Ojp1c2VMZXZlbFplcm9Xb3JrYXJvdW5kVGV4dHVyZShib29sIHVzZUxldmVsWmVyb1RleHR1cmUp
CkBAIC0xOTUzLDExICsxODk4LDcgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfQ3ViZTo6
dXNlTGV2ZQogICAgIHsKICAgICAgICAgaWYgKCFtVXNlTGV2ZWxaZXJvVGV4dHVyZSAmJiBtVGV4
dHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gZW5zdXJlVGV4
dHVyZUV4aXN0cygxKTsKLSAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgfQorICAg
ICAgICAgICAgQU5HTEVfVFJZKGVuc3VyZVRleHR1cmVFeGlzdHMoMSkpOwogCiAgICAgICAgICAg
ICAvLyBQdWxsIGRhdGEgYmFjayBmcm9tIHRoZSBtaXBwZWQgdGV4dHVyZSBpZiBuZWNlc3Nhcnku
CiAgICAgICAgICAgICBBU1NFUlQobUxldmVsWmVyb1RleHR1cmUpOwpAQCAtMTk3NiwxMSArMTkx
Nyw3IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExX0N1YmU6OnVzZUxldmUKICAgICB7CiAg
ICAgICAgIGlmIChtVXNlTGV2ZWxaZXJvVGV4dHVyZSAmJiBtTGV2ZWxaZXJvVGV4dHVyZSkKICAg
ICAgICAgewotICAgICAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gZW5zdXJlVGV4dHVyZUV4aXN0
cyhtTWlwTGV2ZWxzKTsKLSAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgfQorICAg
ICAgICAgICAgQU5HTEVfVFJZKGVuc3VyZVRleHR1cmVFeGlzdHMobU1pcExldmVscykpOwogCiAg
ICAgICAgICAgICAvLyBQdWxsIGRhdGEgYmFjayBmcm9tIHRoZSBsZXZlbCB6ZXJvIHRleHR1cmUg
aWYgbmVjZXNzYXJ5LgogICAgICAgICAgICAgQVNTRVJUKG1UZXh0dXJlKTsKQEAgLTE5OTYsNyAr
MTkzMyw3IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExX0N1YmU6OnVzZUxldmUKICAgICAg
ICAgbVVzZUxldmVsWmVyb1RleHR1cmUgPSBmYWxzZTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogdm9p
ZCBUZXh0dXJlU3RvcmFnZTExX0N1YmU6OmFzc29jaWF0ZUltYWdlKEltYWdlMTEgKmltYWdlLCBj
b25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgpCkBAIC0yMDA1LDExICsxOTQyLDExIEBAIHZvaWQg
VGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjphc3NvY2lhdGVJbWEKICAgICBjb25zdCBHTGludCBsYXll
clRhcmdldCA9IGluZGV4LmxheWVySW5kZXg7CiAKICAgICBBU1NFUlQoMCA8PSBsZXZlbCAmJiBs
ZXZlbCA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFMpOwotICAgIEFTU0VS
VCgwIDw9IGxheWVyVGFyZ2V0ICYmIGxheWVyVGFyZ2V0IDwgQ1VCRV9GQUNFX0NPVU5UKTsKKyAg
ICBBU1NFUlQoMCA8PSBsYXllclRhcmdldCAmJiBsYXllclRhcmdldCA8IHN0YXRpY19jYXN0PEdM
aW50PihDVUJFX0ZBQ0VfQ09VTlQpKTsKIAogICAgIGlmICgwIDw9IGxldmVsICYmIGxldmVsIDwg
Z2w6OklNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUykKICAgICB7Ci0gICAgICAgIGlm
ICgwIDw9IGxheWVyVGFyZ2V0ICYmIGxheWVyVGFyZ2V0IDwgQ1VCRV9GQUNFX0NPVU5UKQorICAg
ICAgICBpZiAoMCA8PSBsYXllclRhcmdldCAmJiBsYXllclRhcmdldCA8IHN0YXRpY19jYXN0PEdM
aW50PihDVUJFX0ZBQ0VfQ09VTlQpKQogICAgICAgICB7CiAgICAgICAgICAgICBtQXNzb2NpYXRl
ZEltYWdlc1tsYXllclRhcmdldF1bbGV2ZWxdID0gaW1hZ2U7CiAgICAgICAgIH0KQEAgLTIwMjQs
NyArMTk2MSw3IEBAIGJvb2wgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjppc0Fzc29jaWF0ZWQKIAog
ICAgIGlmICgwIDw9IGxldmVsICYmIGxldmVsIDwgZ2w6OklNUExFTUVOVEFUSU9OX01BWF9URVhU
VVJFX0xFVkVMUykKICAgICB7Ci0gICAgICAgIGlmICgwIDw9IGxheWVyVGFyZ2V0ICYmIGxheWVy
VGFyZ2V0IDwgQ1VCRV9GQUNFX0NPVU5UKQorICAgICAgICBpZiAoMCA8PSBsYXllclRhcmdldCAm
JiBsYXllclRhcmdldCA8IHN0YXRpY19jYXN0PEdMaW50PihDVUJFX0ZBQ0VfQ09VTlQpKQogICAg
ICAgICB7CiAgICAgICAgICAgICAvLyBUaGlzIHZhbGlkYXRpb24gY2hlY2sgc2hvdWxkIG5ldmVy
IHJldHVybiBmYWxzZS4gSXQgbWVhbnMgdGhlIEltYWdlL1RleHR1cmVTdG9yYWdlCiAgICAgICAg
ICAgICAvLyBhc3NvY2lhdGlvbiBpcyBicm9rZW4uCkBAIC0yMDQ0LDExICsxOTgxLDExIEBAIHZv
aWQgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjpkaXNhc3NvY2lhdGUKICAgICBjb25zdCBHTGludCBs
YXllclRhcmdldCA9IGluZGV4LmxheWVySW5kZXg7CiAKICAgICBBU1NFUlQoMCA8PSBsZXZlbCAm
JiBsZXZlbCA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFMpOwotICAgIEFT
U0VSVCgwIDw9IGxheWVyVGFyZ2V0ICYmIGxheWVyVGFyZ2V0IDwgQ1VCRV9GQUNFX0NPVU5UKTsK
KyAgICBBU1NFUlQoMCA8PSBsYXllclRhcmdldCAmJiBsYXllclRhcmdldCA8IHN0YXRpY19jYXN0
PEdMaW50PihDVUJFX0ZBQ0VfQ09VTlQpKTsKIAogICAgIGlmICgwIDw9IGxldmVsICYmIGxldmVs
IDwgZ2w6OklNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUykKICAgICB7Ci0gICAgICAg
IGlmICgwIDw9IGxheWVyVGFyZ2V0ICYmIGxheWVyVGFyZ2V0IDwgQ1VCRV9GQUNFX0NPVU5UKQor
ICAgICAgICBpZiAoMCA8PSBsYXllclRhcmdldCAmJiBsYXllclRhcmdldCA8IHN0YXRpY19jYXN0
PEdMaW50PihDVUJFX0ZBQ0VfQ09VTlQpKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQo
bUFzc29jaWF0ZWRJbWFnZXNbbGF5ZXJUYXJnZXRdW2xldmVsXSA9PSBleHBlY3RlZEltYWdlKTsK
IApAQCAtMjA2OSwxMSArMjAwNiwxMSBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV9DdWJl
OjpyZWxlYXNlCiAgICAgY29uc3QgR0xpbnQgbGF5ZXJUYXJnZXQgPSBpbmRleC5sYXllckluZGV4
OwogCiAgICAgQVNTRVJUKDAgPD0gbGV2ZWwgJiYgbGV2ZWwgPCBnbDo6SU1QTEVNRU5UQVRJT05f
TUFYX1RFWFRVUkVfTEVWRUxTKTsKLSAgICBBU1NFUlQoMCA8PSBsYXllclRhcmdldCAmJiBsYXll
clRhcmdldCA8IENVQkVfRkFDRV9DT1VOVCk7CisgICAgQVNTRVJUKDAgPD0gbGF5ZXJUYXJnZXQg
JiYgbGF5ZXJUYXJnZXQgPCBzdGF0aWNfY2FzdDxHTGludD4oQ1VCRV9GQUNFX0NPVU5UKSk7CiAK
ICAgICBpZiAoKDAgPD0gbGV2ZWwgJiYgbGV2ZWwgPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RF
WFRVUkVfTEVWRUxTKSkKICAgICB7Ci0gICAgICAgIGlmICgwIDw9IGxheWVyVGFyZ2V0ICYmIGxh
eWVyVGFyZ2V0IDwgQ1VCRV9GQUNFX0NPVU5UKQorICAgICAgICBpZiAoMCA8PSBsYXllclRhcmdl
dCAmJiBsYXllclRhcmdldCA8IHN0YXRpY19jYXN0PEdMaW50PihDVUJFX0ZBQ0VfQ09VTlQpKQog
ICAgICAgICB7CiAgICAgICAgICAgICAvLyBObyBuZWVkIHRvIGxldCB0aGUgb2xkIEltYWdlIHJl
Y292ZXIgaXRzIGRhdGEsIGlmIGl0IGlzIGFsc28gdGhlIGluY29taW5nIEltYWdlLgogICAgICAg
ICAgICAgaWYgKG1Bc3NvY2lhdGVkSW1hZ2VzW2xheWVyVGFyZ2V0XVtsZXZlbF0gIT0gbnVsbHB0
ciAmJgpAQCAtMjA4OSw0MyArMjAyNiwyOSBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV9D
dWJlOjpyZWxlYXNlCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAvLyBG
b3JjZSB0aGUgaW1hZ2UgdG8gcmVjb3ZlciBmcm9tIHN0b3JhZ2UgYmVmb3JlIGl0cyBkYXRhIGlz
IG92ZXJ3cml0dGVuLgogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgcmVzZXQgbUFz
c29jaWF0ZWRJbWFnZXNbbGV2ZWxdIHRvIG51bGxwdHIgdG9vLgotICAgICAgICAgICAgICAgICAg
ICBnbDo6RXJyb3IgZXJyb3IgPQotICAgICAgICAgICAgICAgICAgICAgICAgbUFzc29jaWF0ZWRJ
bWFnZXNbbGF5ZXJUYXJnZXRdW2xldmVsXS0+cmVjb3ZlckZyb21Bc3NvY2lhdGVkU3RvcmFnZSgp
OwotICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgQU5HTEVfVFJZKAorICAgICAgICAg
ICAgICAgICAgICAgICAgbUFzc29jaWF0ZWRJbWFnZXNbbGF5ZXJUYXJnZXRdW2xldmVsXS0+cmVj
b3ZlckZyb21Bc3NvY2lhdGVkU3RvcmFnZSgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VS
Uk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFRleHR1cmVT
dG9yYWdlMTFfQ3ViZTo6Z2V0UmVzb3VyY2UoSUQzRDExUmVzb3VyY2UgKipvdXRSZXNvdXJjZSkK
IHsKICAgICBpZiAobVVzZUxldmVsWmVyb1RleHR1cmUgJiYgbU1pcExldmVscyA+IDEpCiAgICAg
ewotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBlbnN1cmVUZXh0dXJlRXhpc3RzKDEpOwotICAg
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
ZXJyb3I7Ci0gICAgICAgIH0KLQorICAgICAgICBBTkdMRV9UUlkoZW5zdXJlVGV4dHVyZUV4aXN0
cygxKSk7CiAgICAgICAgICpvdXRSZXNvdXJjZSA9IG1MZXZlbFplcm9UZXh0dXJlOwotICAgICAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vy
cm9yKCk7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9
IGVuc3VyZVRleHR1cmVFeGlzdHMobU1pcExldmVscyk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQot
CisgICAgICAgIEFOR0xFX1RSWShlbnN1cmVUZXh0dXJlRXhpc3RzKG1NaXBMZXZlbHMpKTsKICAg
ICAgICAgKm91dFJlc291cmNlID0gbVRleHR1cmU7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfTk9fRVJST1IpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiB9CiAK
QEAgLTIxMzQsMTQgKzIwNTcsOSBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjpn
ZXRNaXBwCiAgICAgLy8gVGhpcyBzaG91bGRuJ3QgYmUgY2FsbGVkIHVubGVzcyB0aGUgemVybyBt
YXggTE9EIHdvcmthcm91bmQgaXMgYWN0aXZlLgogICAgIEFTU0VSVChtUmVuZGVyZXItPmdldFdv
cmthcm91bmRzKCkuemVyb01heExvZFdvcmthcm91bmQpOwogCi0gICAgZ2w6OkVycm9yIGVycm9y
ID0gZW5zdXJlVGV4dHVyZUV4aXN0cyhtTWlwTGV2ZWxzKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJv
cigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KLQorICAgIEFOR0xFX1RS
WShlbnN1cmVUZXh0dXJlRXhpc3RzKG1NaXBMZXZlbHMpKTsKICAgICAqb3V0UmVzb3VyY2UgPSBt
VGV4dHVyZTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4g
Z2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfQ3ViZTo6ZW5z
dXJlVGV4dHVyZUV4aXN0cyhpbnQgbWlwTGV2ZWxzKQpAQCAtMjE2NSw3ICsyMDgzLDcgQEAgZ2w6
OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfQ3ViZTo6ZW5zdXJlVAogICAgICAgICBkZXNjLkhlaWdo
dCAgICAgICAgICAgICA9IG1UZXh0dXJlSGVpZ2h0OwogICAgICAgICBkZXNjLk1pcExldmVscyAg
ICAgICAgICA9IG1pcExldmVsczsKICAgICAgICAgZGVzYy5BcnJheVNpemUgICAgICAgICAgPSBD
VUJFX0ZBQ0VfQ09VTlQ7Ci0gICAgICAgIGRlc2MuRm9ybWF0ICAgICAgICAgICAgID0gbVRleHR1
cmVGb3JtYXRTZXQtPnRleEZvcm1hdDsKKyAgICAgICAgZGVzYy5Gb3JtYXQgICAgICAgICAgICAg
PSBtRm9ybWF0SW5mby50ZXhGb3JtYXQ7CiAgICAgICAgIGRlc2MuU2FtcGxlRGVzYy5Db3VudCAg
ID0gMTsKICAgICAgICAgZGVzYy5TYW1wbGVEZXNjLlF1YWxpdHkgPSAwOwogICAgICAgICBkZXNj
LlVzYWdlICAgICAgICAgICAgICA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7CkBAIC0yMTkyLDcgKzIx
MTAsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjplbnN1cmVUCiAgICAgICAg
IGQzZDExOjpTZXREZWJ1Z05hbWUoKm91dHB1dFRleHR1cmUsICJUZXhTdG9yYWdlQ3ViZS5UZXh0
dXJlIik7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAg
cmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExX0N1
YmU6OmNyZWF0ZVJlbmRlclRhcmdldFNSVihJRDNEMTFSZXNvdXJjZSAqdGV4dHVyZSwKQEAgLTIy
MzgsNyArMjE1Niw3IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExX0N1YmU6OmdldFJlbmQK
ICAgICBjb25zdCBpbnQgbGV2ZWwgICAgID0gaW5kZXgubWlwSW5kZXg7CiAKICAgICBBU1NFUlQo
bGV2ZWwgPj0gMCAmJiBsZXZlbCA8IGdldExldmVsQ291bnQoKSk7Ci0gICAgQVNTRVJUKGZhY2VJ
bmRleCA+PSAwICYmIGZhY2VJbmRleCA8IENVQkVfRkFDRV9DT1VOVCk7CisgICAgQVNTRVJUKGZh
Y2VJbmRleCA+PSAwICYmIGZhY2VJbmRleCA8IHN0YXRpY19jYXN0PEdMaW50PihDVUJFX0ZBQ0Vf
Q09VTlQpKTsKIAogICAgIGlmICghbVJlbmRlclRhcmdldFtmYWNlSW5kZXhdW2xldmVsXSkKICAg
ICB7CkBAIC0yMjQ2LDE4ICsyMTY0LDE0IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExX0N1
YmU6OmdldFJlbmQKICAgICAgICAgSFJFU1VMVCByZXN1bHQ7CiAKICAgICAgICAgSUQzRDExUmVz
b3VyY2UgKnRleHR1cmUgPSBudWxscHRyOwotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBnZXRS
ZXNvdXJjZSgmdGV4dHVyZSk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBBTkdMRV9U
UlkoZ2V0UmVzb3VyY2UoJnRleHR1cmUpKTsKIAogICAgICAgICBpZiAobVVzZUxldmVsWmVyb1Rl
eHR1cmUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbUxldmVsWmVyb1JlbmRlclRhcmdl
dFtmYWNlSW5kZXhdKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIEQzRDExX1JFTkRF
Ul9UQVJHRVRfVklFV19ERVNDIHJ0dkRlc2M7Ci0gICAgICAgICAgICAgICAgcnR2RGVzYy5Gb3Jt
YXQgICAgICAgICAgICAgICAgICAgICAgICAgPSBtVGV4dHVyZUZvcm1hdFNldC0+cnR2Rm9ybWF0
OworICAgICAgICAgICAgICAgIHJ0dkRlc2MuRm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICAg
ID0gbUZvcm1hdEluZm8ucnR2Rm9ybWF0OwogICAgICAgICAgICAgICAgIHJ0dkRlc2MuVmlld0Rp
bWVuc2lvbiAgICAgICAgICAgICAgICAgID0gRDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJFMkRB
UlJBWTsKICAgICAgICAgICAgICAgICBydHZEZXNjLlRleHR1cmUyREFycmF5Lk1pcFNsaWNlICAg
ICAgICA9IG1Ub3BMZXZlbCArIGxldmVsOwogICAgICAgICAgICAgICAgIHJ0dkRlc2MuVGV4dHVy
ZTJEQXJyYXkuRmlyc3RBcnJheVNsaWNlID0gZmFjZUluZGV4OwpAQCAtMjI3Niw4ICsyMTkwLDgg
QEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfQ3ViZTo6Z2V0UmVuZAogICAgICAgICAgICAg
ICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CiAKICAgICAgICAgICAgICAgICBtTGV2ZWxa
ZXJvUmVuZGVyVGFyZ2V0W2ZhY2VJbmRleF0gPSBuZXcgVGV4dHVyZVJlbmRlclRhcmdldDExKAot
ICAgICAgICAgICAgICAgICAgICBydHYsIG1MZXZlbFplcm9UZXh0dXJlLCBudWxscHRyLCBudWxs
cHRyLCBtSW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgIG1UZXh0dXJlRm9ybWF0
U2V0LT5mb3JtYXQsIGdldExldmVsV2lkdGgobGV2ZWwpLCBnZXRMZXZlbEhlaWdodChsZXZlbCks
IDEsIDApOworICAgICAgICAgICAgICAgICAgICBydHYsIG1MZXZlbFplcm9UZXh0dXJlLCBudWxs
cHRyLCBudWxscHRyLCBtRm9ybWF0SW5mby5pbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAg
ICAgICAgZ2V0Rm9ybWF0U2V0KCksIGdldExldmVsV2lkdGgobGV2ZWwpLCBnZXRMZXZlbEhlaWdo
dChsZXZlbCksIDEsIDApOwogCiAgICAgICAgICAgICAgICAgLy8gUmVuZGVyVGFyZ2V0IHdpbGwg
dGFrZSBvd25lcnNoaXAgb2YgdGhlc2UgcmVzb3VyY2VzCiAgICAgICAgICAgICAgICAgU2FmZVJl
bGVhc2UocnR2KTsKQEAgLTIyODksMTYgKzIyMDMsMTIgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9y
YWdlMTFfQ3ViZTo6Z2V0UmVuZAogICAgICAgICB9CiAKICAgICAgICAgSUQzRDExU2hhZGVyUmVz
b3VyY2VWaWV3ICpzcnYgPSBudWxscHRyOwotICAgICAgICBlcnJvciA9IGNyZWF0ZVJlbmRlclRh
cmdldFNSVih0ZXh0dXJlLCBpbmRleCwgbVRleHR1cmVGb3JtYXRTZXQtPnNydkZvcm1hdCwgJnNy
dik7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBBTkdMRV9UUlkoY3JlYXRlUmVuZGVy
VGFyZ2V0U1JWKHRleHR1cmUsIGluZGV4LCBtRm9ybWF0SW5mby5zcnZGb3JtYXQsICZzcnYpKTsK
ICAgICAgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpibGl0U1JWID0gbnVsbHB0cjsKLSAg
ICAgICAgaWYgKG1UZXh0dXJlRm9ybWF0U2V0LT5ibGl0U1JWRm9ybWF0ICE9IG1UZXh0dXJlRm9y
bWF0U2V0LT5zcnZGb3JtYXQpCisgICAgICAgIGlmIChtRm9ybWF0SW5mby5ibGl0U1JWRm9ybWF0
ICE9IG1Gb3JtYXRJbmZvLnNydkZvcm1hdCkKICAgICAgICAgewotICAgICAgICAgICAgZXJyb3Ig
PQotICAgICAgICAgICAgICAgIGNyZWF0ZVJlbmRlclRhcmdldFNSVih0ZXh0dXJlLCBpbmRleCwg
bVRleHR1cmVGb3JtYXRTZXQtPmJsaXRTUlZGb3JtYXQsICZibGl0U1JWKTsKKyAgICAgICAgICAg
IGdsOjpFcnJvciBlcnJvciA9CisgICAgICAgICAgICAgICAgY3JlYXRlUmVuZGVyVGFyZ2V0U1JW
KHRleHR1cmUsIGluZGV4LCBtRm9ybWF0SW5mby5ibGl0U1JWRm9ybWF0LCAmYmxpdFNSVik7CiAg
ICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgIFNhZmVSZWxlYXNlKHNydik7CkBAIC0yMzEzLDEwICsyMjIzLDEwIEBAIGdsOjpFcnJv
ciBUZXh0dXJlU3RvcmFnZTExX0N1YmU6OmdldFJlbmQKIAogICAgICAgICBkM2QxMTo6U2V0RGVi
dWdOYW1lKHNydiwgIlRleFN0b3JhZ2VDdWJlLlJlbmRlclRhcmdldFNSViIpOwogCi0gICAgICAg
IGlmIChtVGV4dHVyZUZvcm1hdFNldC0+cnR2Rm9ybWF0ICE9IERYR0lfRk9STUFUX1VOS05PV04p
CisgICAgICAgIGlmIChtRm9ybWF0SW5mby5ydHZGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9X
TikKICAgICAgICAgewogICAgICAgICAgICAgRDNEMTFfUkVOREVSX1RBUkdFVF9WSUVXX0RFU0Mg
cnR2RGVzYzsKLSAgICAgICAgICAgIHJ0dkRlc2MuRm9ybWF0ICAgICAgICAgICAgICAgICAgICAg
ICAgID0gbVRleHR1cmVGb3JtYXRTZXQtPnJ0dkZvcm1hdDsKKyAgICAgICAgICAgIHJ0dkRlc2Mu
Rm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICAgID0gbUZvcm1hdEluZm8ucnR2Rm9ybWF0Owog
ICAgICAgICAgICAgcnR2RGVzYy5WaWV3RGltZW5zaW9uICAgICAgICAgICAgICAgICAgPSBEM0Qx
MV9SVFZfRElNRU5TSU9OX1RFWFRVUkUyREFSUkFZOwogICAgICAgICAgICAgcnR2RGVzYy5UZXh0
dXJlMkRBcnJheS5NaXBTbGljZSAgICAgICAgPSBtVG9wTGV2ZWwgKyBsZXZlbDsKICAgICAgICAg
ICAgIHJ0dkRlc2MuVGV4dHVyZTJEQXJyYXkuRmlyc3RBcnJheVNsaWNlID0gZmFjZUluZGV4OwpA
QCAtMjMzOSw3ICsyMjQ5LDcgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfQ3ViZTo6Z2V0
UmVuZAogICAgICAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShydHYsICJUZXhTdG9yYWdlQ3Vi
ZS5SZW5kZXJUYXJnZXRSVFYiKTsKIAogICAgICAgICAgICAgbVJlbmRlclRhcmdldFtmYWNlSW5k
ZXhdW2xldmVsXSA9IG5ldyBUZXh0dXJlUmVuZGVyVGFyZ2V0MTEoCi0gICAgICAgICAgICAgICAg
cnR2LCB0ZXh0dXJlLCBzcnYsIGJsaXRTUlYsIG1JbnRlcm5hbEZvcm1hdCwgbVRleHR1cmVGb3Jt
YXRTZXQtPmZvcm1hdCwKKyAgICAgICAgICAgICAgICBydHYsIHRleHR1cmUsIHNydiwgYmxpdFNS
ViwgbUZvcm1hdEluZm8uaW50ZXJuYWxGb3JtYXQsIGdldEZvcm1hdFNldCgpLAogICAgICAgICAg
ICAgICAgIGdldExldmVsV2lkdGgobGV2ZWwpLCBnZXRMZXZlbEhlaWdodChsZXZlbCksIDEsIDAp
OwogCiAgICAgICAgICAgICAvLyBSZW5kZXJUYXJnZXQgd2lsbCB0YWtlIG93bmVyc2hpcCBvZiB0
aGVzZSByZXNvdXJjZXMKQEAgLTIzNDcsMTAgKzIyNTcsMTAgQEAgZ2w6OkVycm9yIFRleHR1cmVT
dG9yYWdlMTFfQ3ViZTo6Z2V0UmVuZAogICAgICAgICAgICAgU2FmZVJlbGVhc2Uoc3J2KTsKICAg
ICAgICAgICAgIFNhZmVSZWxlYXNlKGJsaXRTUlYpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2Ug
aWYgKG1UZXh0dXJlRm9ybWF0U2V0LT5kc3ZGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTikK
KyAgICAgICAgZWxzZSBpZiAobUZvcm1hdEluZm8uZHN2Rm9ybWF0ICE9IERYR0lfRk9STUFUX1VO
S05PV04pCiAgICAgICAgIHsKICAgICAgICAgICAgIEQzRDExX0RFUFRIX1NURU5DSUxfVklFV19E
RVNDIGRzdkRlc2M7Ci0gICAgICAgICAgICBkc3ZEZXNjLkZvcm1hdCAgICAgICAgICAgICAgICAg
ICAgICAgICA9IG1UZXh0dXJlRm9ybWF0U2V0LT5kc3ZGb3JtYXQ7CisgICAgICAgICAgICBkc3ZE
ZXNjLkZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICA9IG1Gb3JtYXRJbmZvLmRzdkZvcm1h
dDsKICAgICAgICAgICAgIGRzdkRlc2MuVmlld0RpbWVuc2lvbiAgICAgICAgICAgICAgICAgID0g
RDNEMTFfRFNWX0RJTUVOU0lPTl9URVhUVVJFMkRBUlJBWTsKICAgICAgICAgICAgIGRzdkRlc2Mu
RmxhZ3MgICAgICAgICAgICAgICAgICAgICAgICAgID0gMDsKICAgICAgICAgICAgIGRzdkRlc2Mu
VGV4dHVyZTJEQXJyYXkuTWlwU2xpY2UgICAgICAgID0gbVRvcExldmVsICsgbGV2ZWw7CkBAIC0y
Mzc0LDcgKzIyODQsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjpnZXRSZW5k
CiAgICAgICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKGRzdiwgIlRleFN0b3JhZ2VDdWJlLlJl
bmRlclRhcmdldERTViIpOwogCiAgICAgICAgICAgICBtUmVuZGVyVGFyZ2V0W2ZhY2VJbmRleF1b
bGV2ZWxdID0gbmV3IFRleHR1cmVSZW5kZXJUYXJnZXQxMSgKLSAgICAgICAgICAgICAgICBkc3Ys
IHRleHR1cmUsIHNydiwgbUludGVybmFsRm9ybWF0LCBtVGV4dHVyZUZvcm1hdFNldC0+Zm9ybWF0
LCBnZXRMZXZlbFdpZHRoKGxldmVsKSwKKyAgICAgICAgICAgICAgICBkc3YsIHRleHR1cmUsIHNy
diwgbUZvcm1hdEluZm8uaW50ZXJuYWxGb3JtYXQsIGdldEZvcm1hdFNldCgpLCBnZXRMZXZlbFdp
ZHRoKGxldmVsKSwKICAgICAgICAgICAgICAgICBnZXRMZXZlbEhlaWdodChsZXZlbCksIDEsIDAp
OwogCiAgICAgICAgICAgICAvLyBSZW5kZXJUYXJnZXQgd2lsbCB0YWtlIG93bmVyc2hpcCBvZiB0
aGVzZSByZXNvdXJjZXMKQEAgLTI0MDYsOCArMjMxNiw4IEBAIGdsOjpFcnJvciBUZXh0dXJlU3Rv
cmFnZTExX0N1YmU6OmNyZWF0ZVMKIAogICAgIC8vIFVubm9ybWFsaXplZCBpbnRlZ2VyIGN1YmUg
bWFwcyBhcmUgbm90IHN1cHBvcnRlZCBieSBEWDExOyB3ZSBlbXVsYXRlIHRoZW0gYXMgYW4gYXJy
YXkgb2Ygc2l4CiAgICAgLy8gMkQgdGV4dHVyZXMKLSAgICBjb25zdCBkM2QxMTo6RFhHSUZvcm1h
dCAmZHhnaUZvcm1hdEluZm8gPSBkM2QxMTo6R2V0RFhHSUZvcm1hdEluZm8oZm9ybWF0KTsKLSAg
ICBpZiAoZHhnaUZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9JTlQgfHwgZHhnaUZvcm1h
dEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9VTlNJR05FRF9JTlQpCisgICAgY29uc3QgR0xlbnVt
IGNvbXBvbmVudFR5cGUgPSBkM2QxMTo6R2V0Q29tcG9uZW50VHlwZShmb3JtYXQpOworICAgIGlm
IChjb21wb25lbnRUeXBlID09IEdMX0lOVCB8fCBjb21wb25lbnRUeXBlID09IEdMX1VOU0lHTkVE
X0lOVCkKICAgICB7CiAgICAgICAgIHNydkRlc2MuVmlld0RpbWVuc2lvbiAgICAgICAgICAgICAg
ICAgID0gRDNEMTFfU1JWX0RJTUVOU0lPTl9URVhUVVJFMkRBUlJBWTsKICAgICAgICAgc3J2RGVz
Yy5UZXh0dXJlMkRBcnJheS5Nb3N0RGV0YWlsZWRNaXAgPSBtVG9wTGV2ZWwgKyBiYXNlTGV2ZWw7
CkBAIC0yNDczLDcgKzIzODMsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjpn
ZXRTd2l6CiAgICAgICAgIGRlc2MuSGVpZ2h0ICAgICAgICAgICAgID0gbVRleHR1cmVIZWlnaHQ7
CiAgICAgICAgIGRlc2MuTWlwTGV2ZWxzICAgICAgICAgID0gbU1pcExldmVsczsKICAgICAgICAg
ZGVzYy5BcnJheVNpemUgICAgICAgICAgPSBDVUJFX0ZBQ0VfQ09VTlQ7Ci0gICAgICAgIGRlc2Mu
Rm9ybWF0ICAgICAgICAgICAgID0gbVN3aXp6bGVGb3JtYXRTZXQtPnRleEZvcm1hdDsKKyAgICAg
ICAgZGVzYy5Gb3JtYXQgICAgICAgICAgICAgPSBtRm9ybWF0SW5mby5zd2l6emxlLnRleEZvcm1h
dDsKICAgICAgICAgZGVzYy5TYW1wbGVEZXNjLkNvdW50ICAgPSAxOwogICAgICAgICBkZXNjLlNh
bXBsZURlc2MuUXVhbGl0eSA9IDA7CiAgICAgICAgIGRlc2MuVXNhZ2UgICAgICAgICAgICAgID0g
RDNEMTFfVVNBR0VfREVGQVVMVDsKQEAgLTI1MDYsMTYgKzI0MTYsMTIgQEAgZ2w6OkVycm9yIFRl
eHR1cmVTdG9yYWdlMTFfQ3ViZTo6Z2V0U3dpegogICAgIGlmICghbVN3aXp6bGVSZW5kZXJUYXJn
ZXRzW21pcExldmVsXSkKICAgICB7CiAgICAgICAgIElEM0QxMVJlc291cmNlICpzd2l6emxlVGV4
dHVyZSA9IG51bGxwdHI7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGdldFN3aXp6bGVUZXh0
dXJlKCZzd2l6emxlVGV4dHVyZSk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBBTkdM
RV9UUlkoZ2V0U3dpenpsZVRleHR1cmUoJnN3aXp6bGVUZXh0dXJlKSk7CiAKICAgICAgICAgSUQz
RDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwogCiAgICAgICAgIEQz
RDExX1JFTkRFUl9UQVJHRVRfVklFV19ERVNDIHJ0dkRlc2M7Ci0gICAgICAgIHJ0dkRlc2MuRm9y
bWF0ICAgICAgICAgICAgICAgICAgICAgICAgID0gbVN3aXp6bGVGb3JtYXRTZXQtPnJ0dkZvcm1h
dDsKKyAgICAgICAgcnR2RGVzYy5Gb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgPSBtRm9y
bWF0SW5mby5zd2l6emxlLnJ0dkZvcm1hdDsKICAgICAgICAgcnR2RGVzYy5WaWV3RGltZW5zaW9u
ICAgICAgICAgICAgICAgICAgPSBEM0QxMV9SVFZfRElNRU5TSU9OX1RFWFRVUkUyREFSUkFZOwog
ICAgICAgICBydHZEZXNjLlRleHR1cmUyREFycmF5Lk1pcFNsaWNlICAgICAgICA9IG1Ub3BMZXZl
bCArIG1pcExldmVsOwogICAgICAgICBydHZEZXNjLlRleHR1cmUyREFycmF5LkZpcnN0QXJyYXlT
bGljZSA9IDA7CkBAIC0yNTM0LDcgKzI0NDAsNjcgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdl
MTFfQ3ViZTo6Z2V0U3dpegogICAgIH0KIAogICAgICpvdXRSVFYgPSBtU3dpenpsZVJlbmRlclRh
cmdldHNbbWlwTGV2ZWxdOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAg
IHJldHVybiBnbDo6Tm9FcnJvcigpOworfQorCitnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMTo6
aW5pdERyb3BTdGVuY2lsVGV4dHVyZShjb25zdCBnbDo6SW1hZ2VJbmRleEl0ZXJhdG9yICZpdCkK
K3sKKyAgICBJRDNEMTFSZXNvdXJjZSAqcmVzb3VyY2UgPSBudWxscHRyOworICAgIEFOR0xFX1RS
WShnZXRSZXNvdXJjZSgmcmVzb3VyY2UpKTsKKyAgICBUZXh0dXJlSGVscGVyMTEgc291cmNlVGV4
dHVyZSA9IFRleHR1cmVIZWxwZXIxMTo6TWFrZUFuZFJlZmVyZW5jZShyZXNvdXJjZSwgbUZvcm1h
dEluZm8pOworICAgIFRleHR1cmVIZWxwZXIxMSBkZXN0VGV4dHVyZSAgID0gVGV4dHVyZUhlbHBl
cjExOjpNYWtlQW5kUmVmZXJlbmNlKAorICAgICAgICBtRHJvcFN0ZW5jaWxUZXh0dXJlLAorICAg
ICAgICBkM2QxMTo6Rm9ybWF0OjpHZXQoR0xfREVQVEhfQ09NUE9ORU5UMzJGLCBtUmVuZGVyZXIt
PmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCkpKTsKKworICAgIGdsOjpJbWFnZUluZGV4SXRlcmF0
b3IgaXRDb3B5ID0gaXQ7CisKKyAgICB3aGlsZSAoaXRDb3B5Lmhhc05leHQoKSkKKyAgICB7Cisg
ICAgICAgIGdsOjpJbWFnZUluZGV4IGluZGV4ID0gaXRDb3B5Lm5leHQoKTsKKyAgICAgICAgZ2w6
OkJveCB3aG9sZUFyZWEoMCwgMCwgMCwgZ2V0TGV2ZWxXaWR0aChpbmRleC5taXBJbmRleCksIGdl
dExldmVsSGVpZ2h0KGluZGV4Lm1pcEluZGV4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
MSk7CisgICAgICAgIGdsOjpFeHRlbnRzIHdob2xlU2l6ZSh3aG9sZUFyZWEud2lkdGgsIHdob2xl
QXJlYS5oZWlnaHQsIDEpOworICAgICAgICBVSU5UIHN1YnJlc291cmNlID0gZ2V0U3VicmVzb3Vy
Y2VJbmRleChpbmRleCk7CisgICAgICAgIEFOR0xFX1RSWShtUmVuZGVyZXItPmdldEJsaXR0ZXIo
KS0+Y29weURlcHRoU3RlbmNpbChzb3VyY2VUZXh0dXJlLCBzdWJyZXNvdXJjZSwgd2hvbGVBcmVh
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd2hvbGVTaXplLCBkZXN0VGV4dHVyZSwgc3VicmVzb3VyY2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aG9sZUFyZWEs
IHdob2xlU2l6ZSwgbnVsbHB0cikpOworICAgIH0KKworICAgIHJldHVybiBnbDo6Tm9FcnJvcigp
OworfQorCitnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjpjcmVhdGVEcm9wU3RlbmNp
bFRleHR1cmUoKQoreworICAgIGlmIChtRHJvcFN0ZW5jaWxUZXh0dXJlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CisgICAgfQorCisgICAgRDNEMTFfVEVYVFVSRTJEX0RF
U0MgZHJvcERlc2MgPSB7fTsKKyAgICBkcm9wRGVzYy5BcnJheVNpemUgICAgICAgICAgICA9IDY7
CisgICAgZHJvcERlc2MuQmluZEZsYWdzICAgICAgICAgICAgPSBEM0QxMV9CSU5EX1NIQURFUl9S
RVNPVVJDRSB8IEQzRDExX0JJTkRfREVQVEhfU1RFTkNJTDsKKyAgICBkcm9wRGVzYy5DUFVBY2Nl
c3NGbGFncyAgICAgICA9IDA7CisgICAgZHJvcERlc2MuRm9ybWF0ICAgICAgICAgICAgICAgPSBE
WEdJX0ZPUk1BVF9SMzJfVFlQRUxFU1M7CisgICAgZHJvcERlc2MuSGVpZ2h0ICAgICAgICAgICAg
ICAgPSBtVGV4dHVyZUhlaWdodDsKKyAgICBkcm9wRGVzYy5NaXBMZXZlbHMgICAgICAgICAgICA9
IG1NaXBMZXZlbHM7CisgICAgZHJvcERlc2MuTWlzY0ZsYWdzICAgICAgICAgICAgPSBEM0QxMV9S
RVNPVVJDRV9NSVNDX1RFWFRVUkVDVUJFOworICAgIGRyb3BEZXNjLlNhbXBsZURlc2MuQ291bnQg
ICAgID0gMTsKKyAgICBkcm9wRGVzYy5TYW1wbGVEZXNjLlF1YWxpdHkgICA9IDA7CisgICAgZHJv
cERlc2MuVXNhZ2UgICAgICAgICAgICAgICAgPSBEM0QxMV9VU0FHRV9ERUZBVUxUOworICAgIGRy
b3BEZXNjLldpZHRoICAgICAgICAgICAgICAgID0gbVRleHR1cmVXaWR0aDsKKworICAgIElEM0Qx
MURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAgIEhSRVNVTFQg
aHIgPSBkZXZpY2UtPkNyZWF0ZVRleHR1cmUyRCgmZHJvcERlc2MsIG51bGxwdHIsICZtRHJvcFN0
ZW5jaWxUZXh0dXJlKTsKKyAgICBpZiAoRkFJTEVEKGhyKSkKKyAgICB7CisgICAgICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFcnJvciBjcmVhdGluZyBkcm9wIHN0
ZW5jaWwgdGV4dHVyZS4iKTsKKyAgICB9CisgICAgZDNkMTE6OlNldERlYnVnTmFtZShtRHJvcFN0
ZW5jaWxUZXh0dXJlLCAiVGV4U3RvcmFnZUN1YmUuRHJvcFN0ZW5jaWwiKTsKKworICAgIEFOR0xF
X1RSWShpbml0RHJvcFN0ZW5jaWxUZXh0dXJlKGdsOjpJbWFnZUluZGV4SXRlcmF0b3I6Ok1ha2VD
dWJlKDAsIG1NaXBMZXZlbHMpKSk7CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAog
VGV4dHVyZVN0b3JhZ2UxMV8zRDo6VGV4dHVyZVN0b3JhZ2UxMV8zRChSZW5kZXJlcjExICpyZW5k
ZXJlciwKQEAgLTI1NTAsNyArMjUxNiw4IEBAIFRleHR1cmVTdG9yYWdlMTFfM0Q6OlRleHR1cmVT
dG9yYWdlMTFfM0QKICAgICAgICAgICBHZXRUZXh0dXJlTWlzY0ZsYWdzKGludGVybmFsZm9ybWF0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXItPmdldFJlbmRlcmVyMTFE
ZXZpY2VDYXBzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJUYXJnZXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbGV2ZWxzKSwKKyAgICAgICAgICBpbnRlcm5hbGZvcm1hdCkKIHsKICAg
ICBtVGV4dHVyZSAgICAgICAgPSBudWxscHRyOwogICAgIG1Td2l6emxlVGV4dHVyZSA9IG51bGxw
dHI7CkBAIC0yNTYyLDE1ICsyNTI5LDggQEAgVGV4dHVyZVN0b3JhZ2UxMV8zRDo6VGV4dHVyZVN0
b3JhZ2UxMV8zRAogICAgICAgICBtU3dpenpsZVJlbmRlclRhcmdldHNbaV0gPSBudWxscHRyOwog
ICAgIH0KIAotICAgIG1JbnRlcm5hbEZvcm1hdCA9IGludGVybmFsZm9ybWF0OwotCi0gICAgY29u
c3QgZDNkMTE6OlRleHR1cmVGb3JtYXQgJmZvcm1hdEluZm8gPQotICAgICAgICBkM2QxMTo6R2V0
VGV4dHVyZUZvcm1hdEluZm8oaW50ZXJuYWxmb3JtYXQsIHJlbmRlcmVyLT5nZXRSZW5kZXJlcjEx
RGV2aWNlQ2FwcygpKTsKLSAgICBtVGV4dHVyZUZvcm1hdFNldCA9IGZvcm1hdEluZm8uZm9ybWF0
U2V0OwotICAgIG1Td2l6emxlRm9ybWF0U2V0ID0gZm9ybWF0SW5mby5zd2l6emxlRm9ybWF0U2V0
OwotCiAgICAgLy8gYWRqdXN0IHNpemUgaWYgbmVlZGVkIGZvciBjb21wcmVzc2VkIHRleHR1cmVz
Ci0gICAgZDNkMTE6Ok1ha2VWYWxpZFNpemUoZmFsc2UsIG1UZXh0dXJlRm9ybWF0U2V0LT50ZXhG
b3JtYXQsICZ3aWR0aCwgJmhlaWdodCwgJm1Ub3BMZXZlbCk7CisgICAgZDNkMTE6Ok1ha2VWYWxp
ZFNpemUoZmFsc2UsIG1Gb3JtYXRJbmZvLnRleEZvcm1hdCwgJndpZHRoLCAmaGVpZ2h0LCAmbVRv
cExldmVsKTsKIAogICAgIG1NaXBMZXZlbHMgICAgID0gbVRvcExldmVsICsgbGV2ZWxzOwogICAg
IG1UZXh0dXJlV2lkdGggID0gd2lkdGg7CkBAIC0yNjgzLDE2ICsyNjQzLDEyIEBAIGdsOjpFcnJv
ciBUZXh0dXJlU3RvcmFnZTExXzNEOjpyZWxlYXNlQXMKICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAvLyBGb3JjZSB0aGUgaW1hZ2UgdG8gcmVjb3ZlciBmcm9tIHN0b3JhZ2UgYmVmb3Jl
IGl0cyBkYXRhIGlzIG92ZXJ3cml0dGVuLgogICAgICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBy
ZXNldCBtQXNzb2NpYXRlZEltYWdlc1tsZXZlbF0gdG8gbnVsbHB0ciB0b28uCi0gICAgICAgICAg
ICAgICAgZ2w6OkVycm9yIGVycm9yID0gbUFzc29jaWF0ZWRJbWFnZXNbbGV2ZWxdLT5yZWNvdmVy
RnJvbUFzc29jaWF0ZWRTdG9yYWdlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJy
b3IoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJv
cjsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgQU5HTEVfVFJZKG1Bc3NvY2lh
dGVkSW1hZ2VzW2xldmVsXS0+cmVjb3ZlckZyb21Bc3NvY2lhdGVkU3RvcmFnZSgpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9f
RVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVy
ZVN0b3JhZ2UxMV8zRDo6Z2V0UmVzb3VyY2UoSUQzRDExUmVzb3VyY2UgKipvdXRSZXNvdXJjZSkK
QEAgLTI3MTAsNyArMjY2Niw3IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExXzNEOjpnZXRS
ZXNvdXIKICAgICAgICAgZGVzYy5IZWlnaHQgICAgICAgICA9IG1UZXh0dXJlSGVpZ2h0OwogICAg
ICAgICBkZXNjLkRlcHRoICAgICAgICAgID0gbVRleHR1cmVEZXB0aDsKICAgICAgICAgZGVzYy5N
aXBMZXZlbHMgICAgICA9IG1NaXBMZXZlbHM7Ci0gICAgICAgIGRlc2MuRm9ybWF0ICAgICAgICAg
PSBtVGV4dHVyZUZvcm1hdFNldC0+dGV4Rm9ybWF0OworICAgICAgICBkZXNjLkZvcm1hdCAgICAg
ICAgID0gbUZvcm1hdEluZm8udGV4Rm9ybWF0OwogICAgICAgICBkZXNjLlVzYWdlICAgICAgICAg
ID0gRDNEMTFfVVNBR0VfREVGQVVMVDsKICAgICAgICAgZGVzYy5CaW5kRmxhZ3MgICAgICA9IGdl
dEJpbmRGbGFncygpOwogICAgICAgICBkZXNjLkNQVUFjY2Vzc0ZsYWdzID0gMDsKQEAgLTI3NzMs
MzcgKzI3MjksMjUgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfM0Q6OmdldFJlbmRlcgog
ICAgIGNvbnN0IGludCBtaXBMZXZlbCA9IGluZGV4Lm1pcEluZGV4OwogICAgIEFTU0VSVChtaXBM
ZXZlbCA+PSAwICYmIG1pcExldmVsIDwgZ2V0TGV2ZWxDb3VudCgpKTsKIAotICAgIEFTU0VSVCht
VGV4dHVyZUZvcm1hdFNldC0+cnR2Rm9ybWF0ICE9IERYR0lfRk9STUFUX1VOS05PV04pOworICAg
IEFTU0VSVChtRm9ybWF0SW5mby5ydHZGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTik7CiAK
ICAgICBpZiAoIWluZGV4Lmhhc0xheWVyKCkpCiAgICAgewogICAgICAgICBpZiAoIW1MZXZlbFJl
bmRlclRhcmdldHNbbWlwTGV2ZWxdKQogICAgICAgICB7CiAgICAgICAgICAgICBJRDNEMTFSZXNv
dXJjZSAqdGV4dHVyZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBn
ZXRSZXNvdXJjZSgmdGV4dHVyZSk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIEFOR0xFX1RSWShnZXRSZXNvdXJjZSgmdGV4dHVyZSkpOwogCiAgICAg
ICAgICAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNydiA9IG51bGxwdHI7Ci0gICAgICAg
ICAgICBlcnJvciA9IGdldFNSVkxldmVsKG1pcExldmVsLCBmYWxzZSwgJnNydik7Ci0gICAgICAg
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IHJldHVybiBlcnJvcjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFOR0xFX1RSWShnZXRT
UlZMZXZlbChtaXBMZXZlbCwgZmFsc2UsICZzcnYpKTsKIAogICAgICAgICAgICAgSUQzRDExU2hh
ZGVyUmVzb3VyY2VWaWV3ICpibGl0U1JWID0gbnVsbHB0cjsKLSAgICAgICAgICAgIGVycm9yID0g
Z2V0U1JWTGV2ZWwobWlwTGV2ZWwsIHRydWUsICZibGl0U1JWKTsKLSAgICAgICAgICAgIGlmIChl
cnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVy
cm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgQU5HTEVfVFJZKGdldFNSVkxldmVsKG1p
cExldmVsLCB0cnVlLCAmYmxpdFNSVikpOwogCiAgICAgICAgICAgICBJRDNEMTFEZXZpY2UgKmRl
dmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CiAKICAgICAgICAgICAgIEQzRDExX1JFTkRF
Ul9UQVJHRVRfVklFV19ERVNDIHJ0dkRlc2M7Ci0gICAgICAgICAgICBydHZEZXNjLkZvcm1hdCAg
ICAgICAgICAgICAgICA9IG1UZXh0dXJlRm9ybWF0U2V0LT5ydHZGb3JtYXQ7CisgICAgICAgICAg
ICBydHZEZXNjLkZvcm1hdCAgICAgICAgICAgICAgICA9IG1Gb3JtYXRJbmZvLnJ0dkZvcm1hdDsK
ICAgICAgICAgICAgIHJ0dkRlc2MuVmlld0RpbWVuc2lvbiAgICAgICAgID0gRDNEMTFfUlRWX0RJ
TUVOU0lPTl9URVhUVVJFM0Q7CiAgICAgICAgICAgICBydHZEZXNjLlRleHR1cmUzRC5NaXBTbGlj
ZSAgICA9IG1Ub3BMZXZlbCArIG1pcExldmVsOwogICAgICAgICAgICAgcnR2RGVzYy5UZXh0dXJl
M0QuRmlyc3RXU2xpY2UgPSAwOwpAQCAtMjgyNiw3ICsyNzcwLDcgQEAgZ2w6OkVycm9yIFRleHR1
cmVTdG9yYWdlMTFfM0Q6OmdldFJlbmRlcgogICAgICAgICAgICAgZDNkMTE6OlNldERlYnVnTmFt
ZShydHYsICJUZXhTdG9yYWdlM0QuUlRWIik7CiAKICAgICAgICAgICAgIG1MZXZlbFJlbmRlclRh
cmdldHNbbWlwTGV2ZWxdID0gbmV3IFRleHR1cmVSZW5kZXJUYXJnZXQxMSgKLSAgICAgICAgICAg
ICAgICBydHYsIHRleHR1cmUsIHNydiwgYmxpdFNSViwgbUludGVybmFsRm9ybWF0LCBtVGV4dHVy
ZUZvcm1hdFNldC0+Zm9ybWF0LAorICAgICAgICAgICAgICAgIHJ0diwgdGV4dHVyZSwgc3J2LCBi
bGl0U1JWLCBtRm9ybWF0SW5mby5pbnRlcm5hbEZvcm1hdCwgZ2V0Rm9ybWF0U2V0KCksCiAgICAg
ICAgICAgICAgICAgZ2V0TGV2ZWxXaWR0aChtaXBMZXZlbCksIGdldExldmVsSGVpZ2h0KG1pcExl
dmVsKSwgZ2V0TGV2ZWxEZXB0aChtaXBMZXZlbCksIDApOwogCiAgICAgICAgICAgICAvLyBSZW5k
ZXJUYXJnZXQgd2lsbCB0YWtlIG93bmVyc2hpcCBvZiB0aGVzZSByZXNvdXJjZXMKQEAgLTI4NDgs
MTggKzI3OTIsMTQgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfM0Q6OmdldFJlbmRlcgog
ICAgICAgICAgICAgSFJFU1VMVCByZXN1bHQ7CiAKICAgICAgICAgICAgIElEM0QxMVJlc291cmNl
ICp0ZXh0dXJlID0gbnVsbHB0cjsKLSAgICAgICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGdldFJl
c291cmNlKCZ0ZXh0dXJlKTsKLSAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgfQor
ICAgICAgICAgICAgQU5HTEVfVFJZKGdldFJlc291cmNlKCZ0ZXh0dXJlKSk7CiAKICAgICAgICAg
ICAgIC8vIFRPRE8sIHdoYXQga2luZCBvZiBTUlYgaXMgZXhwZWN0ZWQgaGVyZT8KICAgICAgICAg
ICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc3J2ID0gbnVsbHB0cjsKICAgICAgICAgICAg
IElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqYmxpdFNSViA9IG51bGxwdHI7CiAKICAgICAgICAg
ICAgIEQzRDExX1JFTkRFUl9UQVJHRVRfVklFV19ERVNDIHJ0dkRlc2M7Ci0gICAgICAgICAgICBy
dHZEZXNjLkZvcm1hdCAgICAgICAgICAgICAgICA9IG1UZXh0dXJlRm9ybWF0U2V0LT5ydHZGb3Jt
YXQ7CisgICAgICAgICAgICBydHZEZXNjLkZvcm1hdCAgICAgICAgICAgICAgICA9IG1Gb3JtYXRJ
bmZvLnJ0dkZvcm1hdDsKICAgICAgICAgICAgIHJ0dkRlc2MuVmlld0RpbWVuc2lvbiAgICAgICAg
ID0gRDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJFM0Q7CiAgICAgICAgICAgICBydHZEZXNjLlRl
eHR1cmUzRC5NaXBTbGljZSAgICA9IG1Ub3BMZXZlbCArIG1pcExldmVsOwogICAgICAgICAgICAg
cnR2RGVzYy5UZXh0dXJlM0QuRmlyc3RXU2xpY2UgPSBsYXllcjsKQEAgLTI4ODMsNyArMjgyMyw3
IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExXzNEOjpnZXRSZW5kZXIKICAgICAgICAgICAg
IGQzZDExOjpTZXREZWJ1Z05hbWUocnR2LCAiVGV4U3RvcmFnZTNELkxheWVyUlRWIik7CiAKICAg
ICAgICAgICAgIG1MZXZlbExheWVyUmVuZGVyVGFyZ2V0c1trZXldID0gbmV3IFRleHR1cmVSZW5k
ZXJUYXJnZXQxMSgKLSAgICAgICAgICAgICAgICBydHYsIHRleHR1cmUsIHNydiwgYmxpdFNSViwg
bUludGVybmFsRm9ybWF0LCBtVGV4dHVyZUZvcm1hdFNldC0+Zm9ybWF0LAorICAgICAgICAgICAg
ICAgIHJ0diwgdGV4dHVyZSwgc3J2LCBibGl0U1JWLCBtRm9ybWF0SW5mby5pbnRlcm5hbEZvcm1h
dCwgZ2V0Rm9ybWF0U2V0KCksCiAgICAgICAgICAgICAgICAgZ2V0TGV2ZWxXaWR0aChtaXBMZXZl
bCksIGdldExldmVsSGVpZ2h0KG1pcExldmVsKSwgMSwgMCk7CiAKICAgICAgICAgICAgIC8vIFJl
bmRlclRhcmdldCB3aWxsIHRha2Ugb3duZXJzaGlwIG9mIHRoZXNlIHJlc291cmNlcwpAQCAtMjg5
Miw3ICsyODMyLDcgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfM0Q6OmdldFJlbmRlcgog
CiAgICAgICAgIEFTU0VSVChvdXRSVCk7CiAgICAgICAgICpvdXRSVCA9IG1MZXZlbExheWVyUmVu
ZGVyVGFyZ2V0c1trZXldOwotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsK
KyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogfQogCkBAIC0yOTA5LDcgKzI4
NDksNyBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV8zRDo6Z2V0U3dpenpsCiAgICAgICAg
IGRlc2MuSGVpZ2h0ICAgICAgICAgPSBtVGV4dHVyZUhlaWdodDsKICAgICAgICAgZGVzYy5EZXB0
aCAgICAgICAgICA9IG1UZXh0dXJlRGVwdGg7CiAgICAgICAgIGRlc2MuTWlwTGV2ZWxzICAgICAg
PSBtTWlwTGV2ZWxzOwotICAgICAgICBkZXNjLkZvcm1hdCAgICAgICAgID0gbVN3aXp6bGVGb3Jt
YXRTZXQtPnRleEZvcm1hdDsKKyAgICAgICAgZGVzYy5Gb3JtYXQgICAgICAgICA9IG1Gb3JtYXRJ
bmZvLnN3aXp6bGUudGV4Rm9ybWF0OwogICAgICAgICBkZXNjLlVzYWdlICAgICAgICAgID0gRDNE
MTFfVVNBR0VfREVGQVVMVDsKICAgICAgICAgZGVzYy5CaW5kRmxhZ3MgICAgICA9IEQzRDExX0JJ
TkRfU0hBREVSX1JFU09VUkNFIHwgRDNEMTFfQklORF9SRU5ERVJfVEFSR0VUOwogICAgICAgICBk
ZXNjLkNQVUFjY2Vzc0ZsYWdzID0gMDsKQEAgLTI5MzksMTYgKzI4NzksMTIgQEAgZ2w6OkVycm9y
IFRleHR1cmVTdG9yYWdlMTFfM0Q6OmdldFN3aXp6bAogICAgIGlmICghbVN3aXp6bGVSZW5kZXJU
YXJnZXRzW21pcExldmVsXSkKICAgICB7CiAgICAgICAgIElEM0QxMVJlc291cmNlICpzd2l6emxl
VGV4dHVyZSA9IG51bGxwdHI7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGdldFN3aXp6bGVU
ZXh0dXJlKCZzd2l6emxlVGV4dHVyZSk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBB
TkdMRV9UUlkoZ2V0U3dpenpsZVRleHR1cmUoJnN3aXp6bGVUZXh0dXJlKSk7CiAKICAgICAgICAg
SUQzRDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwogCiAgICAgICAg
IEQzRDExX1JFTkRFUl9UQVJHRVRfVklFV19ERVNDIHJ0dkRlc2M7Ci0gICAgICAgIHJ0dkRlc2Mu
Rm9ybWF0ICAgICAgICAgICAgICAgID0gbVN3aXp6bGVGb3JtYXRTZXQtPnJ0dkZvcm1hdDsKKyAg
ICAgICAgcnR2RGVzYy5Gb3JtYXQgICAgICAgICAgICAgICAgPSBtRm9ybWF0SW5mby5zd2l6emxl
LnJ0dkZvcm1hdDsKICAgICAgICAgcnR2RGVzYy5WaWV3RGltZW5zaW9uICAgICAgICAgPSBEM0Qx
MV9SVFZfRElNRU5TSU9OX1RFWFRVUkUzRDsKICAgICAgICAgcnR2RGVzYy5UZXh0dXJlM0QuTWlw
U2xpY2UgICAgPSBtVG9wTGV2ZWwgKyBtaXBMZXZlbDsKICAgICAgICAgcnR2RGVzYy5UZXh0dXJl
M0QuRmlyc3RXU2xpY2UgPSAwOwpAQCAtMjk4NSw3ICsyOTIxLDggQEAgVGV4dHVyZVN0b3JhZ2Ux
MV8yREFycmF5OjpUZXh0dXJlU3RvcmFnZQogICAgICAgICAgIEdldFRleHR1cmVNaXNjRmxhZ3Mo
aW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJlci0+
Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlbmRlclRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscykpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMpLAorICAgICAgICAgIGludGVybmFs
Zm9ybWF0KQogewogICAgIG1UZXh0dXJlICAgICAgICA9IG51bGxwdHI7CiAgICAgbVN3aXp6bGVU
ZXh0dXJlID0gbnVsbHB0cjsKQEAgLTI5OTUsMTUgKzI5MzIsOCBAQCBUZXh0dXJlU3RvcmFnZTEx
XzJEQXJyYXk6OlRleHR1cmVTdG9yYWdlCiAgICAgICAgIG1Td2l6emxlUmVuZGVyVGFyZ2V0c1ts
ZXZlbF0gPSBudWxscHRyOwogICAgIH0KIAotICAgIG1JbnRlcm5hbEZvcm1hdCA9IGludGVybmFs
Zm9ybWF0OwotCi0gICAgY29uc3QgZDNkMTE6OlRleHR1cmVGb3JtYXQgJmZvcm1hdEluZm8gPQot
ICAgICAgICBkM2QxMTo6R2V0VGV4dHVyZUZvcm1hdEluZm8oaW50ZXJuYWxmb3JtYXQsIHJlbmRl
cmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpKTsKLSAgICBtVGV4dHVyZUZvcm1hdFNldCA9
IGZvcm1hdEluZm8uZm9ybWF0U2V0OwotICAgIG1Td2l6emxlRm9ybWF0U2V0ID0gZm9ybWF0SW5m
by5zd2l6emxlRm9ybWF0U2V0OwotCiAgICAgLy8gYWRqdXN0IHNpemUgaWYgbmVlZGVkIGZvciBj
b21wcmVzc2VkIHRleHR1cmVzCi0gICAgZDNkMTE6Ok1ha2VWYWxpZFNpemUoZmFsc2UsIG1UZXh0
dXJlRm9ybWF0U2V0LT50ZXhGb3JtYXQsICZ3aWR0aCwgJmhlaWdodCwgJm1Ub3BMZXZlbCk7Cisg
ICAgZDNkMTE6Ok1ha2VWYWxpZFNpemUoZmFsc2UsIG1Gb3JtYXRJbmZvLnRleEZvcm1hdCwgJndp
ZHRoLCAmaGVpZ2h0LCAmbVRvcExldmVsKTsKIAogICAgIG1NaXBMZXZlbHMgICAgID0gbVRvcExl
dmVsICsgbGV2ZWxzOwogICAgIG1UZXh0dXJlV2lkdGggID0gd2lkdGg7CkBAIC0zMTE3LDE2ICsz
MDQ3LDEyIEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExXzJEQXJyYXk6OnJlbGUKICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAvLyBGb3JjZSB0aGUgaW1hZ2UgdG8gcmVjb3ZlciBm
cm9tIHN0b3JhZ2UgYmVmb3JlIGl0cyBkYXRhIGlzIG92ZXJ3cml0dGVuLgogICAgICAgICAgICAg
ICAgIC8vIFRoaXMgd2lsbCByZXNldCBtQXNzb2NpYXRlZEltYWdlc1tsZXZlbF0gdG8gbnVsbHB0
ciB0b28uCi0gICAgICAgICAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gbUFzc29jaWF0ZWRJbWFn
ZXNba2V5XS0+cmVjb3ZlckZyb21Bc3NvY2lhdGVkU3RvcmFnZSgpOwotICAgICAgICAgICAgICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIEFO
R0xFX1RSWShtQXNzb2NpYXRlZEltYWdlc1trZXldLT5yZWNvdmVyRnJvbUFzc29jaWF0ZWRTdG9y
YWdlKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGds
OjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGds
OjpFcnJvciBUZXh0dXJlU3RvcmFnZTExXzJEQXJyYXk6OmdldFJlc291cmNlKElEM0QxMVJlc291
cmNlICoqb3V0UmVzb3VyY2UpCkBAIC0zMTQ0LDcgKzMwNzAsNyBAQCBnbDo6RXJyb3IgVGV4dHVy
ZVN0b3JhZ2UxMV8yREFycmF5OjpnZXRSCiAgICAgICAgIGRlc2MuSGVpZ2h0ICAgICAgICAgICAg
ID0gbVRleHR1cmVIZWlnaHQ7CiAgICAgICAgIGRlc2MuTWlwTGV2ZWxzICAgICAgICAgID0gbU1p
cExldmVsczsKICAgICAgICAgZGVzYy5BcnJheVNpemUgICAgICAgICAgPSBtVGV4dHVyZURlcHRo
OwotICAgICAgICBkZXNjLkZvcm1hdCAgICAgICAgICAgICA9IG1UZXh0dXJlRm9ybWF0U2V0LT50
ZXhGb3JtYXQ7CisgICAgICAgIGRlc2MuRm9ybWF0ICAgICAgICAgICAgID0gbUZvcm1hdEluZm8u
dGV4Rm9ybWF0OwogICAgICAgICBkZXNjLlNhbXBsZURlc2MuQ291bnQgICA9IDE7CiAgICAgICAg
IGRlc2MuU2FtcGxlRGVzYy5RdWFsaXR5ID0gMDsKICAgICAgICAgZGVzYy5Vc2FnZSAgICAgICAg
ICAgICAgPSBEM0QxMV9VU0FHRV9ERUZBVUxUOwpAQCAtMzI0OSwyMiArMzE3NSwxNCBAQCBnbDo6
RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV8yREFycmF5OjpnZXRSCiAgICAgICAgIEhSRVNVTFQgcmVz
dWx0OwogCiAgICAgICAgIElEM0QxMVJlc291cmNlICp0ZXh0dXJlID0gbnVsbHB0cjsKLSAgICAg
ICAgZ2w6OkVycm9yIGVycm9yID0gZ2V0UmVzb3VyY2UoJnRleHR1cmUpOwotICAgICAgICBpZiAo
ZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0g
ICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKGdldFJlc291cmNlKCZ0ZXh0dXJlKSk7CiAgICAg
ICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc3J2OwotICAgICAgICBlcnJvciA9IGNyZWF0
ZVJlbmRlclRhcmdldFNSVih0ZXh0dXJlLCBpbmRleCwgbVRleHR1cmVGb3JtYXRTZXQtPnNydkZv
cm1hdCwgJnNydik7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBBTkdMRV9UUlkoY3Jl
YXRlUmVuZGVyVGFyZ2V0U1JWKHRleHR1cmUsIGluZGV4LCBtRm9ybWF0SW5mby5zcnZGb3JtYXQs
ICZzcnYpKTsKICAgICAgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpibGl0U1JWOwotICAg
ICAgICBpZiAobVRleHR1cmVGb3JtYXRTZXQtPmJsaXRTUlZGb3JtYXQgIT0gbVRleHR1cmVGb3Jt
YXRTZXQtPnNydkZvcm1hdCkKKyAgICAgICAgaWYgKG1Gb3JtYXRJbmZvLmJsaXRTUlZGb3JtYXQg
IT0gbUZvcm1hdEluZm8uc3J2Rm9ybWF0KQogICAgICAgICB7Ci0gICAgICAgICAgICBlcnJvciA9
Ci0gICAgICAgICAgICAgICAgY3JlYXRlUmVuZGVyVGFyZ2V0U1JWKHRleHR1cmUsIGluZGV4LCBt
VGV4dHVyZUZvcm1hdFNldC0+YmxpdFNSVkZvcm1hdCwgJmJsaXRTUlYpOworICAgICAgICAgICAg
Z2w6OkVycm9yIGVycm9yID0KKyAgICAgICAgICAgICAgICBjcmVhdGVSZW5kZXJUYXJnZXRTUlYo
dGV4dHVyZSwgaW5kZXgsIG1Gb3JtYXRJbmZvLmJsaXRTUlZGb3JtYXQsICZibGl0U1JWKTsKICAg
ICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgU2FmZVJlbGVhc2Uoc3J2KTsKQEAgLTMyNzksMTAgKzMxOTcsMTAgQEAgZ2w6OkVycm9y
IFRleHR1cmVTdG9yYWdlMTFfMkRBcnJheTo6Z2V0UgogCiAgICAgICAgIGQzZDExOjpTZXREZWJ1
Z05hbWUoc3J2LCAiVGV4U3RvcmFnZTJEQXJyYXkuUmVuZGVyVGFyZ2V0U1JWIik7CiAKLSAgICAg
ICAgaWYgKG1UZXh0dXJlRm9ybWF0U2V0LT5ydHZGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9X
TikKKyAgICAgICAgaWYgKG1Gb3JtYXRJbmZvLnJ0dkZvcm1hdCAhPSBEWEdJX0ZPUk1BVF9VTktO
T1dOKQogICAgICAgICB7CiAgICAgICAgICAgICBEM0QxMV9SRU5ERVJfVEFSR0VUX1ZJRVdfREVT
QyBydHZEZXNjOwotICAgICAgICAgICAgcnR2RGVzYy5Gb3JtYXQgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBtVGV4dHVyZUZvcm1hdFNldC0+cnR2Rm9ybWF0OworICAgICAgICAgICAgcnR2RGVz
Yy5Gb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgPSBtRm9ybWF0SW5mby5ydHZGb3JtYXQ7
CiAgICAgICAgICAgICBydHZEZXNjLlZpZXdEaW1lbnNpb24gICAgICAgICAgICAgICAgICA9IEQz
RDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTJEQVJSQVk7CiAgICAgICAgICAgICBydHZEZXNjLlRl
eHR1cmUyREFycmF5Lk1pcFNsaWNlICAgICAgICA9IG1Ub3BMZXZlbCArIG1pcExldmVsOwogICAg
ICAgICAgICAgcnR2RGVzYy5UZXh0dXJlMkRBcnJheS5GaXJzdEFycmF5U2xpY2UgPSBsYXllcjsK
QEAgLTMzMDUsNyArMzIyMyw3IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExXzJEQXJyYXk6
OmdldFIKICAgICAgICAgICAgIGQzZDExOjpTZXREZWJ1Z05hbWUocnR2LCAiVGV4U3RvcmFnZTJE
QXJyYXkuUmVuZGVyVGFyZ2V0UlRWIik7CiAKICAgICAgICAgICAgIG1SZW5kZXJUYXJnZXRzW2tl
eV0gPSBuZXcgVGV4dHVyZVJlbmRlclRhcmdldDExKAotICAgICAgICAgICAgICAgIHJ0diwgdGV4
dHVyZSwgc3J2LCBibGl0U1JWLCBtSW50ZXJuYWxGb3JtYXQsIG1UZXh0dXJlRm9ybWF0U2V0LT5m
b3JtYXQsCisgICAgICAgICAgICAgICAgcnR2LCB0ZXh0dXJlLCBzcnYsIGJsaXRTUlYsIG1Gb3Jt
YXRJbmZvLmludGVybmFsRm9ybWF0LCBnZXRGb3JtYXRTZXQoKSwKICAgICAgICAgICAgICAgICBn
ZXRMZXZlbFdpZHRoKG1pcExldmVsKSwgZ2V0TGV2ZWxIZWlnaHQobWlwTGV2ZWwpLCAxLCAwKTsK
IAogICAgICAgICAgICAgLy8gUmVuZGVyVGFyZ2V0IHdpbGwgdGFrZSBvd25lcnNoaXAgb2YgdGhl
c2UgcmVzb3VyY2VzCkBAIC0zMzE1LDEwICszMjMzLDEwIEBAIGdsOjpFcnJvciBUZXh0dXJlU3Rv
cmFnZTExXzJEQXJyYXk6OmdldFIKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsK
LSAgICAgICAgICAgIEFTU0VSVChtVGV4dHVyZUZvcm1hdFNldC0+ZHN2Rm9ybWF0ICE9IERYR0lf
Rk9STUFUX1VOS05PV04pOworICAgICAgICAgICAgQVNTRVJUKG1Gb3JtYXRJbmZvLmRzdkZvcm1h
dCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dOKTsKIAogICAgICAgICAgICAgRDNEMTFfREVQVEhfU1RF
TkNJTF9WSUVXX0RFU0MgZHN2RGVzYzsKLSAgICAgICAgICAgIGRzdkRlc2MuRm9ybWF0ICAgICAg
ICAgICAgICAgICAgICAgICAgID0gbVRleHR1cmVGb3JtYXRTZXQtPmRzdkZvcm1hdDsKKyAgICAg
ICAgICAgIGRzdkRlc2MuRm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICAgID0gbUZvcm1hdElu
Zm8uZHN2Rm9ybWF0OwogICAgICAgICAgICAgZHN2RGVzYy5WaWV3RGltZW5zaW9uICAgICAgICAg
ICAgICAgICAgPSBEM0QxMV9EU1ZfRElNRU5TSU9OX1RFWFRVUkUyREFSUkFZOwogICAgICAgICAg
ICAgZHN2RGVzYy5UZXh0dXJlMkRBcnJheS5NaXBTbGljZSAgICAgICAgPSBtVG9wTGV2ZWwgKyBt
aXBMZXZlbDsKICAgICAgICAgICAgIGRzdkRlc2MuVGV4dHVyZTJEQXJyYXkuRmlyc3RBcnJheVNs
aWNlID0gbGF5ZXI7CkBAIC0zMzQwLDcgKzMyNTgsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3Jh
Z2UxMV8yREFycmF5OjpnZXRSCiAgICAgICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKGRzdiwg
IlRleFN0b3JhZ2UyREFycmF5LlJlbmRlclRhcmdldERTViIpOwogCiAgICAgICAgICAgICBtUmVu
ZGVyVGFyZ2V0c1trZXldID0gbmV3IFRleHR1cmVSZW5kZXJUYXJnZXQxMSgKLSAgICAgICAgICAg
ICAgICBkc3YsIHRleHR1cmUsIHNydiwgbUludGVybmFsRm9ybWF0LCBtVGV4dHVyZUZvcm1hdFNl
dC0+Zm9ybWF0LAorICAgICAgICAgICAgICAgIGRzdiwgdGV4dHVyZSwgc3J2LCBtRm9ybWF0SW5m
by5pbnRlcm5hbEZvcm1hdCwgZ2V0Rm9ybWF0U2V0KCksCiAgICAgICAgICAgICAgICAgZ2V0TGV2
ZWxXaWR0aChtaXBMZXZlbCksIGdldExldmVsSGVpZ2h0KG1pcExldmVsKSwgMSwgMCk7CiAKICAg
ICAgICAgICAgIC8vIFJlbmRlclRhcmdldCB3aWxsIHRha2Ugb3duZXJzaGlwIG9mIHRoZXNlIHJl
c291cmNlcwpAQCAtMzM1Miw3ICszMjcwLDcgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFf
MkRBcnJheTo6Z2V0UgogCiAgICAgQVNTRVJUKG91dFJUKTsKICAgICAqb3V0UlQgPSBtUmVuZGVy
VGFyZ2V0c1trZXldOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJl
dHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV8yREFy
cmF5OjpnZXRTd2l6emxlVGV4dHVyZShJRDNEMTFSZXNvdXJjZSAqKm91dFRleHR1cmUpCkBAIC0z
MzY2LDcgKzMyODQsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV8yREFycmF5OjpnZXRT
CiAgICAgICAgIGRlc2MuSGVpZ2h0ICAgICAgICAgICAgID0gbVRleHR1cmVIZWlnaHQ7CiAgICAg
ICAgIGRlc2MuTWlwTGV2ZWxzICAgICAgICAgID0gbU1pcExldmVsczsKICAgICAgICAgZGVzYy5B
cnJheVNpemUgICAgICAgICAgPSBtVGV4dHVyZURlcHRoOwotICAgICAgICBkZXNjLkZvcm1hdCAg
ICAgICAgICAgICA9IG1Td2l6emxlRm9ybWF0U2V0LT50ZXhGb3JtYXQ7CisgICAgICAgIGRlc2Mu
Rm9ybWF0ICAgICAgICAgICAgID0gbUZvcm1hdEluZm8uc3dpenpsZS50ZXhGb3JtYXQ7CiAgICAg
ICAgIGRlc2MuU2FtcGxlRGVzYy5Db3VudCAgID0gMTsKICAgICAgICAgZGVzYy5TYW1wbGVEZXNj
LlF1YWxpdHkgPSAwOwogICAgICAgICBkZXNjLlVzYWdlICAgICAgICAgICAgICA9IEQzRDExX1VT
QUdFX0RFRkFVTFQ7CkBAIC0zMzk5LDE2ICszMzE3LDEyIEBAIGdsOjpFcnJvciBUZXh0dXJlU3Rv
cmFnZTExXzJEQXJyYXk6OmdldFMKICAgICBpZiAoIW1Td2l6emxlUmVuZGVyVGFyZ2V0c1ttaXBM
ZXZlbF0pCiAgICAgewogICAgICAgICBJRDNEMTFSZXNvdXJjZSAqc3dpenpsZVRleHR1cmUgPSBu
dWxscHRyOwotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBnZXRTd2l6emxlVGV4dHVyZSgmc3dp
enpsZVRleHR1cmUpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKGdl
dFN3aXp6bGVUZXh0dXJlKCZzd2l6emxlVGV4dHVyZSkpOwogCiAgICAgICAgIElEM0QxMURldmlj
ZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKIAogICAgICAgICBEM0QxMV9SRU5E
RVJfVEFSR0VUX1ZJRVdfREVTQyBydHZEZXNjOwotICAgICAgICBydHZEZXNjLkZvcm1hdCAgICAg
ICAgICAgICAgICAgICAgICAgICA9IG1Td2l6emxlRm9ybWF0U2V0LT5ydHZGb3JtYXQ7CisgICAg
ICAgIHJ0dkRlc2MuRm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICAgID0gbUZvcm1hdEluZm8u
c3dpenpsZS5ydHZGb3JtYXQ7CiAgICAgICAgIHJ0dkRlc2MuVmlld0RpbWVuc2lvbiAgICAgICAg
ICAgICAgICAgID0gRDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJFMkRBUlJBWTsKICAgICAgICAg
cnR2RGVzYy5UZXh0dXJlMkRBcnJheS5NaXBTbGljZSAgICAgICAgPSBtVG9wTGV2ZWwgKyBtaXBM
ZXZlbDsKICAgICAgICAgcnR2RGVzYy5UZXh0dXJlMkRBcnJheS5GaXJzdEFycmF5U2xpY2UgPSAw
OwpAQCAtMzQyNyw2ICszMzQxLDQ0IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExXzJEQXJy
YXk6OmdldFMKICAgICB9CiAKICAgICAqb3V0UlRWID0gbVN3aXp6bGVSZW5kZXJUYXJnZXRzW21p
cExldmVsXTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4g
Z2w6Ok5vRXJyb3IoKTsKK30KKworZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfMkRBcnJheTo6
Y3JlYXRlRHJvcFN0ZW5jaWxUZXh0dXJlKCkKK3sKKyAgICBpZiAobURyb3BTdGVuY2lsVGV4dHVy
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworICAgIH0KKworICAgIEQz
RDExX1RFWFRVUkUyRF9ERVNDIGRyb3BEZXNjID0ge307CisgICAgZHJvcERlc2MuQXJyYXlTaXpl
ICAgICAgICAgICAgPSBtVGV4dHVyZURlcHRoOworICAgIGRyb3BEZXNjLkJpbmRGbGFncyAgICAg
ICAgICAgID0gRDNEMTFfQklORF9TSEFERVJfUkVTT1VSQ0UgfCBEM0QxMV9CSU5EX0RFUFRIX1NU
RU5DSUw7CisgICAgZHJvcERlc2MuQ1BVQWNjZXNzRmxhZ3MgICAgICAgPSAwOworICAgIGRyb3BE
ZXNjLkZvcm1hdCAgICAgICAgICAgICAgID0gRFhHSV9GT1JNQVRfUjMyX1RZUEVMRVNTOworICAg
IGRyb3BEZXNjLkhlaWdodCAgICAgICAgICAgICAgID0gbVRleHR1cmVIZWlnaHQ7CisgICAgZHJv
cERlc2MuTWlwTGV2ZWxzICAgICAgICAgICAgPSBtTWlwTGV2ZWxzOworICAgIGRyb3BEZXNjLk1p
c2NGbGFncyAgICAgICAgICAgID0gMDsKKyAgICBkcm9wRGVzYy5TYW1wbGVEZXNjLkNvdW50ICAg
ICA9IDE7CisgICAgZHJvcERlc2MuU2FtcGxlRGVzYy5RdWFsaXR5ICAgPSAwOworICAgIGRyb3BE
ZXNjLlVzYWdlICAgICAgICAgICAgICAgID0gRDNEMTFfVVNBR0VfREVGQVVMVDsKKyAgICBkcm9w
RGVzYy5XaWR0aCAgICAgICAgICAgICAgICA9IG1UZXh0dXJlV2lkdGg7CisKKyAgICBJRDNEMTFE
ZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisKKyAgICBIUkVTVUxUIGhy
ID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJmRyb3BEZXNjLCBudWxscHRyLCAmbURyb3BTdGVu
Y2lsVGV4dHVyZSk7CisgICAgaWYgKEZBSUxFRChocikpCisgICAgeworICAgICAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRXJyb3IgY3JlYXRpbmcgZHJvcCBzdGVu
Y2lsIHRleHR1cmUuIik7CisgICAgfQorICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobURyb3BTdGVu
Y2lsVGV4dHVyZSwgIlRleFN0b3JhZ2UyREFycmF5LkRyb3BTdGVuY2lsIik7CisKKyAgICBzdGQ6
OnZlY3RvcjxHTHNpemVpPiBsYXllckNvdW50cyhtTWlwTGV2ZWxzLCBtVGV4dHVyZURlcHRoKTsK
KworICAgIEFOR0xFX1RSWShpbml0RHJvcFN0ZW5jaWxUZXh0dXJlKAorICAgICAgICBnbDo6SW1h
Z2VJbmRleEl0ZXJhdG9yOjpNYWtlMkRBcnJheSgwLCBtTWlwTGV2ZWxzLCBsYXllckNvdW50cy5k
YXRhKCkpKSk7CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KKwogfSAgLy8gbmFtZXNw
YWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL1RleHR1cmVTdG9yYWdlMTEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1RleHR1cmVTdG9y
YWdlMTEuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9UZXh0dXJlU3RvcmFnZTExLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU4LDkgKzU4LDkgQEAgY2xhc3MgVGV4dHVyZVN0b3JhZ2UxMSA6IHB1YmxpYyBU
ZXh0dXJlUwogICAgIHZpcnR1YWwgaW50IGdldExldmVsQ291bnQoKSBjb25zdDsKICAgICB2aXJ0
dWFsIFVJTlQgZ2V0U3VicmVzb3VyY2VJbmRleChjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgp
IGNvbnN0OwogCi0gICAgZ2w6OkVycm9yIGdlbmVyYXRlU3dpenpsZXMoR0xlbnVtIHN3aXp6bGVS
ZWQsIEdMZW51bSBzd2l6emxlR3JlZW4sIEdMZW51bSBzd2l6emxlQmx1ZSwgR0xlbnVtIHN3aXp6
bGVBbHBoYSk7Ci0gICAgdm9pZCBpbnZhbGlkYXRlU3dpenpsZUNhY2hlTGV2ZWwoaW50IG1pcExl
dmVsKTsKLSAgICB2b2lkIGludmFsaWRhdGVTd2l6emxlQ2FjaGUoKTsKKyAgICBnbDo6RXJyb3Ig
Z2VuZXJhdGVTd2l6emxlcyhjb25zdCBnbDo6U3dpenpsZVN0YXRlICZzd2l6emxlVGFyZ2V0KTsK
KyAgICB2b2lkIG1hcmtMZXZlbERpcnR5KGludCBtaXBMZXZlbCk7CisgICAgdm9pZCBtYXJrRGly
dHkoKTsKIAogICAgIGdsOjpFcnJvciB1cGRhdGVTdWJyZXNvdXJjZUxldmVsKElEM0QxMVJlc291
cmNlICp0ZXh0dXJlLCB1bnNpZ25lZCBpbnQgc291cmNlU3VicmVzb3VyY2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4LCBj
b25zdCBnbDo6Qm94ICZjb3B5QXJlYSk7CkBAIC03OSwxMCArNzksMTAgQEAgY2xhc3MgVGV4dHVy
ZVN0b3JhZ2UxMSA6IHB1YmxpYyBUZXh0dXJlUwogCiAgICAgZ2w6OkVycm9yIGdldFNSVkxldmVs
cyhHTGludCBiYXNlTGV2ZWwsIEdMaW50IG1heExldmVsLCBJRDNEMTFTaGFkZXJSZXNvdXJjZVZp
ZXcgKipvdXRTUlYpOwogCi0gICAgZDNkMTE6OkFOR0xFRm9ybWF0IGdldEFOR0xFRm9ybWF0KCkg
Y29uc3Q7CisgICAgY29uc3QgZDNkMTE6OkZvcm1hdCAmZ2V0Rm9ybWF0U2V0KCkgY29uc3Q7CiAK
ICAgcHJvdGVjdGVkOgotICAgIFRleHR1cmVTdG9yYWdlMTEoUmVuZGVyZXIxMSAqcmVuZGVyZXIs
IFVJTlQgYmluZEZsYWdzLCBVSU5UIG1pc2NGbGFncyk7CisgICAgVGV4dHVyZVN0b3JhZ2UxMShS
ZW5kZXJlcjExICpyZW5kZXJlciwgVUlOVCBiaW5kRmxhZ3MsIFVJTlQgbWlzY0ZsYWdzLCBHTGVu
dW0gaW50ZXJuYWxGb3JtYXQpOwogICAgIGludCBnZXRMZXZlbFdpZHRoKGludCBtaXBMZXZlbCkg
Y29uc3Q7CiAgICAgaW50IGdldExldmVsSGVpZ2h0KGludCBtaXBMZXZlbCkgY29uc3Q7CiAgICAg
aW50IGdldExldmVsRGVwdGgoaW50IG1pcExldmVsKSBjb25zdDsKQEAgLTk0LDEwICs5NCwxNSBA
QCBjbGFzcyBUZXh0dXJlU3RvcmFnZTExIDogcHVibGljIFRleHR1cmVTCiAgICAgdmlydHVhbCBn
bDo6RXJyb3IgZ2V0U3dpenpsZVJlbmRlclRhcmdldChpbnQgbWlwTGV2ZWwsIElEM0QxMVJlbmRl
clRhcmdldFZpZXcgKipvdXRSVFYpID0gMDsKICAgICBnbDo6RXJyb3IgZ2V0U1JWTGV2ZWwoaW50
IG1pcExldmVsLCBib29sIGJsaXRTUlYsIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqKm91dFNS
Vik7CiAKKyAgICAvLyBHZXQgYSB2ZXJzaW9uIG9mIGEgZGVwdGggdGV4dHVyZSB3aXRoIG9ubHkg
ZGVwdGggaW5mb3JtYXRpb24sIG5vdCBzdGVuY2lsLgorICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNy
ZWF0ZURyb3BTdGVuY2lsVGV4dHVyZSgpOworICAgIGdsOjpFcnJvciBpbml0RHJvcFN0ZW5jaWxU
ZXh0dXJlKGNvbnN0IGdsOjpJbWFnZUluZGV4SXRlcmF0b3IgJml0KTsKKworICAgIC8vIFRoZSBi
YXNlTGV2ZWwgcGFyYW1ldGVyIHNob3VsZCAqbm90KiBoYXZlIG1Ub3BMZXZlbCBhcHBsaWVkLgog
ICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNyZWF0ZVNSVihpbnQgYmFzZUxldmVsLCBpbnQgbWlwTGV2
ZWxzLCBEWEdJX0ZPUk1BVCBmb3JtYXQsIElEM0QxMVJlc291cmNlICp0ZXh0dXJlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKipvdXRT
UlYpIGNvbnN0ID0gMDsKIAotICAgIHZvaWQgdmVyaWZ5U3dpenpsZUV4aXN0cyhHTGVudW0gc3dp
enpsZVJlZCwgR0xlbnVtIHN3aXp6bGVHcmVlbiwgR0xlbnVtIHN3aXp6bGVCbHVlLCBHTGVudW0g
c3dpenpsZUFscGhhKTsKKyAgICB2b2lkIHZlcmlmeVN3aXp6bGVFeGlzdHMoY29uc3QgZ2w6OlN3
aXp6bGVTdGF0ZSAmc3dpenpsZVN0YXRlKTsKIAogICAgIC8vIENsZWFyIGFsbCBjYWNoZWQgbm9u
LXN3aXp6bGUgU1JWcyBhbmQgaW52YWxpZGF0ZSB0aGUgc3dpenpsZSBjYWNoZS4KICAgICB2b2lk
IGNsZWFyU1JWQ2FjaGUoKTsKQEAgLTEwNiwyNyArMTExLDEzIEBAIGNsYXNzIFRleHR1cmVTdG9y
YWdlMTEgOiBwdWJsaWMgVGV4dHVyZVMKICAgICBpbnQgbVRvcExldmVsOwogICAgIHVuc2lnbmVk
IGludCBtTWlwTGV2ZWxzOwogCi0gICAgR0xlbnVtIG1JbnRlcm5hbEZvcm1hdDsKLSAgICBjb25z
dCBkM2QxMTo6QU5HTEVGb3JtYXRTZXQgKm1UZXh0dXJlRm9ybWF0U2V0OwotICAgIGNvbnN0IGQz
ZDExOjpBTkdMRUZvcm1hdFNldCAqbVN3aXp6bGVGb3JtYXRTZXQ7CisgICAgY29uc3QgZDNkMTE6
OkZvcm1hdCAmbUZvcm1hdEluZm87CiAgICAgdW5zaWduZWQgaW50IG1UZXh0dXJlV2lkdGg7CiAg
ICAgdW5zaWduZWQgaW50IG1UZXh0dXJlSGVpZ2h0OwogICAgIHVuc2lnbmVkIGludCBtVGV4dHVy
ZURlcHRoOwogCi0gICAgc3RydWN0IFN3aXp6bGVDYWNoZVZhbHVlCi0gICAgewotICAgICAgICBH
TGVudW0gc3dpenpsZVJlZDsKLSAgICAgICAgR0xlbnVtIHN3aXp6bGVHcmVlbjsKLSAgICAgICAg
R0xlbnVtIHN3aXp6bGVCbHVlOwotICAgICAgICBHTGVudW0gc3dpenpsZUFscGhhOwotCi0gICAg
ICAgIFN3aXp6bGVDYWNoZVZhbHVlKCk7Ci0gICAgICAgIFN3aXp6bGVDYWNoZVZhbHVlKEdMZW51
bSByZWQsIEdMZW51bSBncmVlbiwgR0xlbnVtIGJsdWUsIEdMZW51bSBhbHBoYSk7Ci0KLSAgICAg
ICAgYm9vbCBvcGVyYXRvciA9PShjb25zdCBTd2l6emxlQ2FjaGVWYWx1ZSAmb3RoZXIpIGNvbnN0
OwotICAgICAgICBib29sIG9wZXJhdG9yICE9KGNvbnN0IFN3aXp6bGVDYWNoZVZhbHVlICZvdGhl
cikgY29uc3Q7Ci0gICAgfTsKLSAgICBTd2l6emxlQ2FjaGVWYWx1ZSBtU3dpenpsZUNhY2hlW2ds
OjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFNdOworICAgIGdsOjpTd2l6emxlU3Rh
dGUgbVN3aXp6bGVDYWNoZVtnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTXTsK
KyAgICBJRDNEMTFUZXh0dXJlMkQgKm1Ecm9wU3RlbmNpbFRleHR1cmU7CiAKICAgcHJpdmF0ZToK
ICAgICBjb25zdCBVSU5UIG1CaW5kRmxhZ3M7CkBAIC0xMzQsMTYgKzEyNSwxOSBAQCBjbGFzcyBU
ZXh0dXJlU3RvcmFnZTExIDogcHVibGljIFRleHR1cmVTCiAKICAgICBzdHJ1Y3QgU1JWS2V5CiAg
ICAgewotICAgICAgICBTUlZLZXkoaW50IGJhc2VMZXZlbCA9IDAsIGludCBtaXBMZXZlbHMgPSAw
LCBib29sIHN3aXp6bGUgPSBmYWxzZSk7CisgICAgICAgIFNSVktleShpbnQgYmFzZUxldmVsLCBp
bnQgbWlwTGV2ZWxzLCBib29sIHN3aXp6bGUsIGJvb2wgZHJvcFN0ZW5jaWwpOwogCiAgICAgICAg
IGJvb2wgb3BlcmF0b3I8KGNvbnN0IFNSVktleSAmcmhzKSBjb25zdDsKIAotICAgICAgICBpbnQg
YmFzZUxldmVsOwotICAgICAgICBpbnQgbWlwTGV2ZWxzOwotICAgICAgICBib29sIHN3aXp6bGU7
CisgICAgICAgIGludCBiYXNlTGV2ZWwgICAgPSAwOyAgLy8gV2l0aG91dCBtVG9wTGV2ZWwgYXBw
bGllZC4KKyAgICAgICAgaW50IG1pcExldmVscyAgICA9IDA7CisgICAgICAgIGJvb2wgc3dpenps
ZSAgICAgPSBmYWxzZTsKKyAgICAgICAgYm9vbCBkcm9wU3RlbmNpbCA9IGZhbHNlOwogICAgIH07
CiAgICAgdHlwZWRlZiBzdGQ6Om1hcDxTUlZLZXksIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAq
PiBTUlZDYWNoZTsKIAorICAgIGdsOjpFcnJvciBnZXRDYWNoZWRPckNyZWF0ZVNSVihjb25zdCBT
UlZLZXkgJmtleSwgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICoqb3V0U1JWKTsKKwogICAgIFNS
VkNhY2hlIG1TcnZDYWNoZTsKICAgICBzdGQ6OmFycmF5PElEM0QxMVNoYWRlclJlc291cmNlVmll
dyAqLCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTPiBtTGV2ZWxTUlZzOwog
ICAgIHN0ZDo6YXJyYXk8SUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICosIGdsOjpJTVBMRU1FTlRB
VElPTl9NQVhfVEVYVFVSRV9MRVZFTFM+IG1MZXZlbEJsaXRTUlZzOwpAQCAtMTU0LDMwICsxNDgs
MzUgQEAgY2xhc3MgVGV4dHVyZVN0b3JhZ2UxMV8yRCA6IHB1YmxpYyBUZXh0dQogICBwdWJsaWM6
CiAgICAgVGV4dHVyZVN0b3JhZ2UxMV8yRChSZW5kZXJlcjExICpyZW5kZXJlciwgU3dhcENoYWlu
MTEgKnN3YXBjaGFpbik7CiAgICAgVGV4dHVyZVN0b3JhZ2UxMV8yRChSZW5kZXJlcjExICpyZW5k
ZXJlciwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBib29sIHJlbmRlclRhcmdldCwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsIGludCBsZXZlbHMsIGJvb2wgaGludExldmVsWmVyb09ubHkg
PSBmYWxzZSk7Ci0gICAgdmlydHVhbCB+VGV4dHVyZVN0b3JhZ2UxMV8yRCgpOworICAgIH5UZXh0
dXJlU3RvcmFnZTExXzJEKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBnZXRS
ZXNvdXJjZShJRDNEMTFSZXNvdXJjZSAqKm91dFJlc291cmNlKTsKLSAgICB2aXJ0dWFsIGdsOjpF
cnJvciBnZXRNaXBwZWRSZXNvdXJjZShJRDNEMTFSZXNvdXJjZSAqKm91dFJlc291cmNlKTsKLSAg
ICB2aXJ0dWFsIGdsOjpFcnJvciBnZXRSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkltYWdlSW5kZXgg
JmluZGV4LCBSZW5kZXJUYXJnZXREM0QgKipvdXRSVCk7CisgICAgZ2w6OkVycm9yIGdldFJlc291
cmNlKElEM0QxMVJlc291cmNlICoqb3V0UmVzb3VyY2UpIG92ZXJyaWRlOworICAgIGdsOjpFcnJv
ciBnZXRNaXBwZWRSZXNvdXJjZShJRDNEMTFSZXNvdXJjZSAqKm91dFJlc291cmNlKSBvdmVycmlk
ZTsKKyAgICBnbDo6RXJyb3IgZ2V0UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpJbWFnZUluZGV4ICZp
bmRleCwgUmVuZGVyVGFyZ2V0RDNEICoqb3V0UlQpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBn
bDo6RXJyb3IgY29weVRvU3RvcmFnZShUZXh0dXJlU3RvcmFnZSAqZGVzdFN0b3JhZ2UpOworICAg
IGdsOjpFcnJvciBjb3B5VG9TdG9yYWdlKFRleHR1cmVTdG9yYWdlICpkZXN0U3RvcmFnZSkgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXNzb2NpYXRlSW1hZ2UoSW1hZ2UxMSogaW1hZ2Us
IGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc2Fzc29j
aWF0ZUltYWdlKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwgSW1hZ2UxMSogZXhwZWN0ZWRJ
bWFnZSk7Ci0gICAgdmlydHVhbCBib29sIGlzQXNzb2NpYXRlZEltYWdlVmFsaWQoY29uc3QgZ2w6
OkltYWdlSW5kZXggJmluZGV4LCBJbWFnZTExKiBleHBlY3RlZEltYWdlKTsKLSAgICB2aXJ0dWFs
IGdsOjpFcnJvciByZWxlYXNlQXNzb2NpYXRlZEltYWdlKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZp
bmRleCwgSW1hZ2UxMSogaW5jb21pbmdJbWFnZSk7CisgICAgdm9pZCBhc3NvY2lhdGVJbWFnZShJ
bWFnZTExICppbWFnZSwgY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4KSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpc2Fzc29jaWF0ZUltYWdlKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwgSW1h
Z2UxMSAqZXhwZWN0ZWRJbWFnZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0Fzc29jaWF0ZWRJbWFn
ZVZhbGlkKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwgSW1hZ2UxMSAqZXhwZWN0ZWRJbWFn
ZSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHJlbGVhc2VBc3NvY2lhdGVkSW1hZ2UoY29uc3Qg
Z2w6OkltYWdlSW5kZXggJmluZGV4LCBJbWFnZTExICppbmNvbWluZ0ltYWdlKSBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgZ2w6OkVycm9yIHVzZUxldmVsWmVyb1dvcmthcm91bmRUZXh0dXJlKGJv
b2wgdXNlTGV2ZWxaZXJvVGV4dHVyZSk7CisgICAgZ2w6OkVycm9yIHVzZUxldmVsWmVyb1dvcmth
cm91bmRUZXh0dXJlKGJvb2wgdXNlTGV2ZWxaZXJvVGV4dHVyZSkgb3ZlcnJpZGU7CiAKICAgcHJv
dGVjdGVkOgotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGdldFN3aXp6bGVUZXh0dXJlKElEM0QxMVJl
c291cmNlICoqb3V0VGV4dHVyZSk7Ci0gICAgdmlydHVhbCBnbDo6RXJyb3IgZ2V0U3dpenpsZVJl
bmRlclRhcmdldChpbnQgbWlwTGV2ZWwsIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKipvdXRSVFYp
OworICAgIGdsOjpFcnJvciBnZXRTd2l6emxlVGV4dHVyZShJRDNEMTFSZXNvdXJjZSAqKm91dFRl
eHR1cmUpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBnZXRTd2l6emxlUmVuZGVyVGFyZ2V0KGlu
dCBtaXBMZXZlbCwgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqKm91dFJUVikgb3ZlcnJpZGU7CisK
KyAgICBnbDo6RXJyb3IgY3JlYXRlRHJvcFN0ZW5jaWxUZXh0dXJlKCkgb3ZlcnJpZGU7CiAKICAg
ICBnbDo6RXJyb3IgZW5zdXJlVGV4dHVyZUV4aXN0cyhpbnQgbWlwTGV2ZWxzKTsKIAogICBwcml2
YXRlOgotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNyZWF0ZVNSVihpbnQgYmFzZUxldmVsLCBpbnQg
bWlwTGV2ZWxzLCBEWEdJX0ZPUk1BVCBmb3JtYXQsIElEM0QxMVJlc291cmNlICp0ZXh0dXJlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcg
KipvdXRTUlYpIGNvbnN0OworICAgIGdsOjpFcnJvciBjcmVhdGVTUlYoaW50IGJhc2VMZXZlbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGludCBtaXBMZXZlbHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICBJRDNE
MTFSZXNvdXJjZSAqdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMVNoYWRl
clJlc291cmNlVmlldyAqKm91dFNSVikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBJRDNEMTFUZXh0
dXJlMkQgKm1UZXh0dXJlOwogICAgIFJlbmRlclRhcmdldDExICptUmVuZGVyVGFyZ2V0W2dsOjpJ
TVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFNdOwpAQCAtMjAzLDEwICsyMDIsNDkgQEAg
Y2xhc3MgVGV4dHVyZVN0b3JhZ2UxMV8yRCA6IHB1YmxpYyBUZXh0dQogICAgIEltYWdlMTEgKm1B
c3NvY2lhdGVkSW1hZ2VzW2dsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFNdOwog
fTsKIAorY2xhc3MgVGV4dHVyZVN0b3JhZ2UxMV9FeHRlcm5hbCA6IHB1YmxpYyBUZXh0dXJlU3Rv
cmFnZTExCit7CisgIHB1YmxpYzoKKyAgICBUZXh0dXJlU3RvcmFnZTExX0V4dGVybmFsKFJlbmRl
cmVyMTEgKnJlbmRlcmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpTdHJl
YW0gKnN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6U3Ry
ZWFtOjpHTFRleHR1cmVEZXNjcmlwdGlvbiAmZ2xEZXNjKTsKKyAgICB+VGV4dHVyZVN0b3JhZ2Ux
MV9FeHRlcm5hbCgpIG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIGdldFJlc291cmNlKElEM0Qx
MVJlc291cmNlICoqb3V0UmVzb3VyY2UpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBnZXRNaXBw
ZWRSZXNvdXJjZShJRDNEMTFSZXNvdXJjZSAqKm91dFJlc291cmNlKSBvdmVycmlkZTsKKyAgICBn
bDo6RXJyb3IgZ2V0UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwgUmVu
ZGVyVGFyZ2V0RDNEICoqb3V0UlQpIG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIGNvcHlUb1N0
b3JhZ2UoVGV4dHVyZVN0b3JhZ2UgKmRlc3RTdG9yYWdlKSBvdmVycmlkZTsKKworICAgIHZvaWQg
YXNzb2NpYXRlSW1hZ2UoSW1hZ2UxMSAqaW1hZ2UsIGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRl
eCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNhc3NvY2lhdGVJbWFnZShjb25zdCBnbDo6SW1hZ2VJ
bmRleCAmaW5kZXgsIEltYWdlMTEgKmV4cGVjdGVkSW1hZ2UpIG92ZXJyaWRlOworICAgIGJvb2wg
aXNBc3NvY2lhdGVkSW1hZ2VWYWxpZChjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsIEltYWdl
MTEgKmV4cGVjdGVkSW1hZ2UpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciByZWxlYXNlQXNzb2Np
YXRlZEltYWdlKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwgSW1hZ2UxMSAqaW5jb21pbmdJ
bWFnZSkgb3ZlcnJpZGU7CisKKyAgcHJvdGVjdGVkOgorICAgIGdsOjpFcnJvciBnZXRTd2l6emxl
VGV4dHVyZShJRDNEMTFSZXNvdXJjZSAqKm91dFRleHR1cmUpIG92ZXJyaWRlOworICAgIGdsOjpF
cnJvciBnZXRTd2l6emxlUmVuZGVyVGFyZ2V0KGludCBtaXBMZXZlbCwgSUQzRDExUmVuZGVyVGFy
Z2V0VmlldyAqKm91dFJUVikgb3ZlcnJpZGU7CisKKyAgcHJpdmF0ZToKKyAgICBnbDo6RXJyb3Ig
Y3JlYXRlU1JWKGludCBiYXNlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWlw
TGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVQgZm9ybWF0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgSUQzRDExUmVzb3VyY2UgKnRleHR1cmUsCisgICAgICAgICAg
ICAgICAgICAgICAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKipvdXRTUlYpIGNvbnN0IG92
ZXJyaWRlOworCisgICAgSUQzRDExVGV4dHVyZTJEICptVGV4dHVyZTsKKyAgICBpbnQgbVN1YnJl
c291cmNlSW5kZXg7CisgICAgYm9vbCBtSGFzS2V5ZWRNdXRleDsKKworICAgIEltYWdlMTEgKm1B
c3NvY2lhdGVkSW1hZ2U7Cit9OworCiBjbGFzcyBUZXh0dXJlU3RvcmFnZTExX0VHTEltYWdlIGZp
bmFsIDogcHVibGljIFRleHR1cmVTdG9yYWdlMTEKIHsKICAgcHVibGljOgotICAgIFRleHR1cmVT
dG9yYWdlMTFfRUdMSW1hZ2UoUmVuZGVyZXIxMSAqcmVuZGVyZXIsIEVHTEltYWdlRDNEICplZ2xJ
bWFnZSk7CisgICAgVGV4dHVyZVN0b3JhZ2UxMV9FR0xJbWFnZShSZW5kZXJlcjExICpyZW5kZXJl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTEltYWdlRDNEICplZ2xJbWFnZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlclRhcmdldDExICpyZW5kZXJUYXJn
ZXQxMSk7CiAgICAgflRleHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2UoKSBvdmVycmlkZTsKIAogICAg
IGdsOjpFcnJvciBnZXRSZXNvdXJjZShJRDNEMTFSZXNvdXJjZSAqKm91dFJlc291cmNlKSBvdmVy
cmlkZTsKQEAgLTI3NCw2ICszMTIsOCBAQCBjbGFzcyBUZXh0dXJlU3RvcmFnZTExX0N1YmUgOiBw
dWJsaWMgVGV4CiAgICAgdmlydHVhbCBnbDo6RXJyb3IgZ2V0U3dpenpsZVRleHR1cmUoSUQzRDEx
UmVzb3VyY2UgKipvdXRUZXh0dXJlKTsKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBnZXRTd2l6emxl
UmVuZGVyVGFyZ2V0KGludCBtaXBMZXZlbCwgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqKm91dFJU
Vik7CiAKKyAgICBnbDo6RXJyb3IgY3JlYXRlRHJvcFN0ZW5jaWxUZXh0dXJlKCkgb3ZlcnJpZGU7
CisKICAgICBnbDo6RXJyb3IgZW5zdXJlVGV4dHVyZUV4aXN0cyhpbnQgbWlwTGV2ZWxzKTsKIAog
ICBwcml2YXRlOgpAQCAtMzU3LDYgKzM5Nyw4IEBAIGNsYXNzIFRleHR1cmVTdG9yYWdlMTFfMkRB
cnJheSA6IHB1YmxpYyAKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBnZXRTd2l6emxlVGV4dHVyZShJ
RDNEMTFSZXNvdXJjZSAqKm91dFRleHR1cmUpOwogICAgIHZpcnR1YWwgZ2w6OkVycm9yIGdldFN3
aXp6bGVSZW5kZXJUYXJnZXQoaW50IG1pcExldmVsLCBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICoq
b3V0UlRWKTsKIAorICAgIGdsOjpFcnJvciBjcmVhdGVEcm9wU3RlbmNpbFRleHR1cmUoKSBvdmVy
cmlkZTsKKwogICBwcml2YXRlOgogICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNyZWF0ZVNSVihpbnQg
YmFzZUxldmVsLCBpbnQgbWlwTGV2ZWxzLCBEWEdJX0ZPUk1BVCBmb3JtYXQsIElEM0QxMVJlc291
cmNlICp0ZXh0dXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFTaGFk
ZXJSZXNvdXJjZVZpZXcgKipvdXRTUlYpIGNvbnN0OwpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9UcmFuc2Zvcm1GZWVkYmFjazEx
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL1RyYW5zZm9ybUZlZWRiYWNrMTEuY3BwCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvVHJhbnNmb3JtRmVlZGJhY2sxMS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDIg
QEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisKKy8vIFRyYW5zZm9ybUZlZWRiYWNrRDNELmNwcCBpcyBhIG5vLW9wIGlt
cGxlbWVudGF0aW9uIGZvciBib3RoIHRoZSBEM0Q5IGFuZCBEM0QxMSByZW5kZXJlcnMuCisKKyNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVHJhbnNmb3JtRmVlZGJhY2sxMS5o
IgorCisjaW5jbHVkZSAibGliQU5HTEUvQnVmZmVyLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL0J1ZmZlcjExLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL1JlbmRlcmVyMTEuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK1RyYW5zZm9ybUZl
ZWRiYWNrMTE6OlRyYW5zZm9ybUZlZWRiYWNrMTEoY29uc3QgZ2w6OlRyYW5zZm9ybUZlZWRiYWNr
U3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS
ZW5kZXJlcjExICpyZW5kZXJlcikKKyAgICA6IFRyYW5zZm9ybUZlZWRiYWNrSW1wbChzdGF0ZSks
CisgICAgICBtUmVuZGVyZXIocmVuZGVyZXIpLAorICAgICAgbUlzRGlydHkodHJ1ZSksCisgICAg
ICBtQnVmZmVycyhzdGF0ZS5nZXRJbmRleGVkQnVmZmVycygpLnNpemUoKSwgbnVsbHB0ciksCisg
ICAgICBtQnVmZmVyT2Zmc2V0cyhzdGF0ZS5nZXRJbmRleGVkQnVmZmVycygpLnNpemUoKSwgMCkK
K3sKK30KKworVHJhbnNmb3JtRmVlZGJhY2sxMTo6flRyYW5zZm9ybUZlZWRiYWNrMTEoKQorewor
fQorCit2b2lkIFRyYW5zZm9ybUZlZWRiYWNrMTE6OmJlZ2luKEdMZW51bSBwcmltaXRpdmVNb2Rl
KQoreworfQorCit2b2lkIFRyYW5zZm9ybUZlZWRiYWNrMTE6OmVuZCgpCit7CisgICAgaWYgKG1S
ZW5kZXJlci0+Z2V0V29ya2Fyb3VuZHMoKS5mbHVzaEFmdGVyRW5kaW5nVHJhbnNmb3JtRmVlZGJh
Y2spCisgICAgeworICAgICAgICBtUmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKS0+Rmx1c2go
KTsKKyAgICB9Cit9CisKK3ZvaWQgVHJhbnNmb3JtRmVlZGJhY2sxMTo6cGF1c2UoKQoreworfQor
Cit2b2lkIFRyYW5zZm9ybUZlZWRiYWNrMTE6OnJlc3VtZSgpCit7Cit9CisKK3ZvaWQgVHJhbnNm
b3JtRmVlZGJhY2sxMTo6YmluZEdlbmVyaWNCdWZmZXIoY29uc3QgQmluZGluZ1BvaW50ZXI8Z2w6
OkJ1ZmZlcj4gJmJpbmRpbmcpCit7Cit9CisKK3ZvaWQgVHJhbnNmb3JtRmVlZGJhY2sxMTo6Ymlu
ZEluZGV4ZWRCdWZmZXIoc2l6ZV90IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBPZmZzZXRCaW5kaW5nUG9pbnRlcjxnbDo6QnVmZmVyPiAm
YmluZGluZykKK3sKKyAgICBtSXNEaXJ0eSAgICAgICAgICAgICAgPSB0cnVlOworICAgIG1CdWZm
ZXJPZmZzZXRzW2luZGV4XSA9IHN0YXRpY19jYXN0PFVJTlQ+KGJpbmRpbmcuZ2V0T2Zmc2V0KCkp
OworfQorCit2b2lkIFRyYW5zZm9ybUZlZWRiYWNrMTE6Om9uQXBwbHkoKQoreworICAgIG1Jc0Rp
cnR5ID0gZmFsc2U7CisKKyAgICAvLyBDaGFuZ2UgYWxsIGJ1ZmZlciBvZmZzZXRzIHRvIC0xIHNv
IHRoYXQgaWYgYW55IG9mIHRoZW0gbmVlZCB0byBiZSByZS1hcHBsaWVkLCB0aGUgYXJlIHNldCB0
bworICAgIC8vIGFwcGVuZAorICAgIHN0ZDo6ZmlsbChtQnVmZmVyT2Zmc2V0cy5iZWdpbigpLCBt
QnVmZmVyT2Zmc2V0cy5lbmQoKSwgLTEpOworfQorCitib29sIFRyYW5zZm9ybUZlZWRiYWNrMTE6
OmlzRGlydHkoKSBjb25zdAoreworICAgIHJldHVybiBtSXNEaXJ0eTsKK30KKworVUlOVCBUcmFu
c2Zvcm1GZWVkYmFjazExOjpnZXROdW1TT0J1ZmZlcnMoKSBjb25zdAoreworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxVSU5UPihtQnVmZmVycy5zaXplKCkpOworfQorCitnbDo6RXJyb3JPclJlc3Vs
dDxjb25zdCBzdGQ6OnZlY3RvcjxJRDNEMTFCdWZmZXIgKj4gKj4gVHJhbnNmb3JtRmVlZGJhY2sx
MTo6Z2V0U09CdWZmZXJzKCkKK3sKKyAgICBmb3IgKHNpemVfdCBiaW5kaW5nSWR4ID0gMDsgYmlu
ZGluZ0lkeCA8IG1CdWZmZXJzLnNpemUoKTsgYmluZGluZ0lkeCsrKQorICAgIHsKKyAgICAgICAg
Y29uc3QgYXV0byAmYmluZGluZyA9IG1TdGF0ZS5nZXRJbmRleGVkQnVmZmVyKGJpbmRpbmdJZHgp
OworICAgICAgICBpZiAoYmluZGluZy5nZXQoKSAhPSBudWxscHRyKQorICAgICAgICB7CisgICAg
ICAgICAgICBCdWZmZXIxMSAqc3RvcmFnZSA9IEdldEltcGxBczxCdWZmZXIxMT4oYmluZGluZy5n
ZXQoKSk7CisgICAgICAgICAgICBBTkdMRV9UUllfUkVTVUxUKHN0b3JhZ2UtPmdldEJ1ZmZlcihC
VUZGRVJfVVNBR0VfVkVSVEVYX09SX1RSQU5TRk9STV9GRUVEQkFDSyksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1CdWZmZXJzW2JpbmRpbmdJZHhdKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiAmbUJ1ZmZlcnM7Cit9CisKK2NvbnN0IHN0ZDo6dmVjdG9yPFVJTlQ+ICZU
cmFuc2Zvcm1GZWVkYmFjazExOjpnZXRTT0J1ZmZlck9mZnNldHMoKSBjb25zdAoreworICAgIHJl
dHVybiBtQnVmZmVyT2Zmc2V0czsKK30KK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9UcmFuc2Zv
cm1GZWVkYmFjazExLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9UcmFuc2Zvcm1GZWVkYmFjazExLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9UcmFuc2Zvcm1GZWVkYmFjazExLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw1NCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorLy8KKworLy8gVHJhbnNmb3JtRmVlZGJhY2sxMS5oOiBJbXBsZW1lbnRz
IHRoZSBhYnN0cmFjdCByeDo6VHJhbnNmb3JtRmVlZGJhY2tJbXBsIGNsYXNzLgorCisjaWZuZGVm
IExJQkFOR0xFX1JFTkRFUkVSX0QzRF9EM0QxMV9UUkFOU0ZPUk1GRUVEQkFDSzExX0hfCisjZGVm
aW5lIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9EM0QxMV9UUkFOU0ZPUk1GRUVEQkFDSzExX0hfCisK
KyNpbmNsdWRlICJjb21tb24vcGxhdGZvcm0uaCIKKworI2luY2x1ZGUgImxpYkFOR0xFL2FuZ2xl
dHlwZXMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9FcnJvci5oIgorI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL1RyYW5zZm9ybUZlZWRiYWNrSW1wbC5oIgorCituYW1lc3BhY2UgcngKK3sKKwor
Y2xhc3MgUmVuZGVyZXIxMTsKKworY2xhc3MgVHJhbnNmb3JtRmVlZGJhY2sxMSA6IHB1YmxpYyBU
cmFuc2Zvcm1GZWVkYmFja0ltcGwKK3sKKyAgcHVibGljOgorICAgIFRyYW5zZm9ybUZlZWRiYWNr
MTEoY29uc3QgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrU3RhdGUgJnN0YXRlLCBSZW5kZXJlcjExICpy
ZW5kZXJlcik7CisgICAgflRyYW5zZm9ybUZlZWRiYWNrMTEoKSBvdmVycmlkZTsKKworICAgIHZv
aWQgYmVnaW4oR0xlbnVtIHByaW1pdGl2ZU1vZGUpIG92ZXJyaWRlOworICAgIHZvaWQgZW5kKCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBwYXVzZSgpIG92ZXJyaWRlOworICAgIHZvaWQgcmVzdW1lKCkg
b3ZlcnJpZGU7CisKKyAgICB2b2lkIGJpbmRHZW5lcmljQnVmZmVyKGNvbnN0IEJpbmRpbmdQb2lu
dGVyPGdsOjpCdWZmZXI+ICZiaW5kaW5nKSBvdmVycmlkZTsKKyAgICB2b2lkIGJpbmRJbmRleGVk
QnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgT2Zmc2V0QmluZGluZ1BvaW50ZXI8Z2w6OkJ1ZmZl
cj4gJmJpbmRpbmcpIG92ZXJyaWRlOworCisgICAgdm9pZCBvbkFwcGx5KCk7CisKKyAgICBib29s
IGlzRGlydHkoKSBjb25zdDsKKworICAgIFVJTlQgZ2V0TnVtU09CdWZmZXJzKCkgY29uc3Q7Cisg
ICAgZ2w6OkVycm9yT3JSZXN1bHQ8Y29uc3Qgc3RkOjp2ZWN0b3I8SUQzRDExQnVmZmVyICo+ICo+
IGdldFNPQnVmZmVycygpOworICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFVJTlQ+ICZnZXRTT0J1ZmZl
ck9mZnNldHMoKSBjb25zdDsKKworICBwcml2YXRlOgorICAgIFJlbmRlcmVyMTEgKm1SZW5kZXJl
cjsKKworICAgIGJvb2wgbUlzRGlydHk7CisgICAgc3RkOjp2ZWN0b3I8SUQzRDExQnVmZmVyICo+
IG1CdWZmZXJzOworICAgIHN0ZDo6dmVjdG9yPFVJTlQ+IG1CdWZmZXJPZmZzZXRzOworfTsKK30g
IC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9EM0Qx
MV9UUkFOU0ZPUk1GRUVEQkFDSzExX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1RyaW0xMS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9U
cmltMTEuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1RyaW0xMS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExLDkgKzExLDE1IEBACiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L3JlbmRlcmVyMTFfdXRpbHMuaCIKIAogI2lmIGRlZmluZWQgKEFOR0xFX0VOQUJMRV9XSU5ET1dT
X1NUT1JFKQotdXNpbmcgbmFtZXNwYWNlIEFCSTo6V2luZG93czo6Rm91bmRhdGlvbjsKKyNpbmNs
dWRlIDx3cmwuaD4KKyNpbmNsdWRlIDx3cmwvd3JhcHBlcnMvY29yZXdyYXBwZXJzLmg+CisjaW5j
bHVkZSA8d2luZG93cy5hcHBsaWNhdGlvbm1vZGVsLmNvcmUuaD4KK3VzaW5nIG5hbWVzcGFjZSBN
aWNyb3NvZnQ6OldSTDsKK3VzaW5nIG5hbWVzcGFjZSBNaWNyb3NvZnQ6OldSTDo6V3JhcHBlcnM7
CiB1c2luZyBuYW1lc3BhY2UgQUJJOjpXaW5kb3dzOjpBcHBsaWNhdGlvbk1vZGVsOwogdXNpbmcg
bmFtZXNwYWNlIEFCSTo6V2luZG93czo6QXBwbGljYXRpb25Nb2RlbDo6Q29yZTsKK3VzaW5nIG5h
bWVzcGFjZSBBQkk6OldpbmRvd3M6OkZvdW5kYXRpb247Cit1c2luZyBuYW1lc3BhY2UgQUJJOjpX
aW5kb3dzOjpGb3VuZGF0aW9uOjpDb2xsZWN0aW9uczsKICNlbmRpZgogCiBuYW1lc3BhY2UgcngK
QEAgLTQxLDcgKzQ3LDYgQEAgdm9pZCBUcmltMTE6OnRyaW0oKQogCiAjaWYgZGVmaW5lZCAoQU5H
TEVfRU5BQkxFX1dJTkRPV1NfU1RPUkUpCiAgICAgSUQzRDExRGV2aWNlKiBkZXZpY2UgPSBtUmVu
ZGVyZXItPmdldERldmljZSgpOwotICAgIC8vIElEWEdJRGV2aWNlMyBpcyBvbmx5IHN1cHBvcnRl
ZCBvbiBXaW5kb3dzIDguMSBhbmQgV2luZG93cyBQaG9uZSA4LjEgYW5kIGFib3ZlLgogICAgIElE
WEdJRGV2aWNlMyAqZHhnaURldmljZTMgPSBkM2QxMTo6RHluYW1pY0Nhc3RDb21PYmplY3Q8SURY
R0lEZXZpY2UzPihkZXZpY2UpOwogICAgIGlmIChkeGdpRGV2aWNlMykKICAgICB7CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1Zl
cnRleEFycmF5MTEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVmVydGV4QXJyYXkxMS5jcHAJKHJldmlzaW9u
IDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvVmVydGV4QXJyYXkxMS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyLDYgKzEy
LDggQEAKICNpbmNsdWRlICJjb21tb24vQml0U2V0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQnVmZmVyMTEuaCIKIAordXNpbmcgbmFtZXNwYWNlIGFu
Z2xlOworCiBuYW1lc3BhY2UgcngKIHsKIApAQCAtMzcsNyArMzksNyBAQCBzaXplX3QgR2V0QXR0
cmliSW5kZXgodW5zaWduZWQgbG9uZyBkaXJ0CiB9CiB9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNl
CiAKLVZlcnRleEFycmF5MTE6OlZlcnRleEFycmF5MTEoY29uc3QgZ2w6OlZlcnRleEFycmF5OjpE
YXRhICZkYXRhKQorVmVydGV4QXJyYXkxMTo6VmVydGV4QXJyYXkxMShjb25zdCBnbDo6VmVydGV4
QXJyYXlTdGF0ZSAmZGF0YSkKICAgICA6IFZlcnRleEFycmF5SW1wbChkYXRhKSwKICAgICAgIG1B
dHRyaWJ1dGVTdG9yYWdlVHlwZXMoZGF0YS5nZXRWZXJ0ZXhBdHRyaWJ1dGVzKCkuc2l6ZSgpLCBW
ZXJ0ZXhTdG9yYWdlVHlwZTo6Q1VSUkVOVF9WQUxVRSksCiAgICAgICBtVHJhbnNsYXRlZEF0dHJp
YnMoZGF0YS5nZXRWZXJ0ZXhBdHRyaWJ1dGVzKCkuc2l6ZSgpKSwKQEAgLTQ1LDExICs0Nyw3IEBA
IFZlcnRleEFycmF5MTE6OlZlcnRleEFycmF5MTEoY29uc3QgZ2w6OlYKIHsKICAgICBmb3IgKHNp
emVfdCBhdHRyaWJJbmRleCA9IDA7IGF0dHJpYkluZGV4IDwgbUN1cnJlbnRCdWZmZXJzLnNpemUo
KTsgKythdHRyaWJJbmRleCkKICAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBbdGhpcywg
YXR0cmliSW5kZXhdKCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy0+bWFya0J1ZmZlckRh
dGFEaXJ0eShhdHRyaWJJbmRleCk7Ci0gICAgICAgIH07Ci0gICAgICAgIG1PbkJ1ZmZlckRhdGFE
aXJ0eS5wdXNoX2JhY2soY2FsbGJhY2spOworICAgICAgICBtT25CdWZmZXJEYXRhRGlydHkucHVz
aF9iYWNrKENoYW5uZWxCaW5kaW5nKHRoaXMsIHN0YXRpY19jYXN0PFNpZ25hbFRva2VuPihhdHRy
aWJJbmRleCkpKTsKICAgICB9CiB9CiAKQEAgLTU5LDcgKzU3LDYgQEAgVmVydGV4QXJyYXkxMTo6
flZlcnRleEFycmF5MTEoKQogICAgIHsKICAgICAgICAgaWYgKG1DdXJyZW50QnVmZmVyc1thdHRy
aWJJbmRleF0uZ2V0KCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHVubGlua0J1ZmZlcihhdHRy
aWJJbmRleCwgbUF0dHJpYnV0ZVN0b3JhZ2VUeXBlc1thdHRyaWJJbmRleF0pOwogICAgICAgICAg
ICAgbUN1cnJlbnRCdWZmZXJzW2F0dHJpYkluZGV4XS5zZXQobnVsbHB0cik7CiAgICAgICAgIH0K
ICAgICB9CkBAIC0xMTYsMjIgKzExMywyMyBAQCB2b2lkIFZlcnRleEFycmF5MTE6OnVwZGF0ZVZl
cnRleEF0dHJpYlN0CiAgICAgewogICAgICAgICAvLyBOb3RlIHRoYXQgZm9yIHN0YXRpYyBjYWxs
YmFja3MsIHByb21vdGlvbiB0byBhIHN0YXRpYyBidWZmZXIgZnJvbSBhIGR5bmFtaWMgYnVmZmVy
IG1lYW5zCiAgICAgICAgIC8vIHdlIG5lZWQgdG8gdGFnIGR5bmFtaWMgYnVmZmVycyB3aXRoIHN0
YXRpYyBjYWxsYmFja3MuCi0gICAgICAgIGlmIChvbGRCdWZmZXIxMSAhPSBudWxscHRyKQotICAg
ICAgICB7Ci0gICAgICAgICAgICB1bmxpbmtCdWZmZXIoYXR0cmliSW5kZXgsIG9sZFN0b3JhZ2VU
eXBlKTsKLSAgICAgICAgfQorICAgICAgICBCcm9hZGNhc3RDaGFubmVsICpuZXdDaGFubmVsID0g
bnVsbHB0cjsKICAgICAgICAgaWYgKG5ld0J1ZmZlcjExICE9IG51bGxwdHIpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGlmIChuZXdTdG9yYWdlVHlwZSA9PSBWZXJ0ZXhTdG9yYWdlVHlwZTo6RElS
RUNUKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG5ld0J1ZmZlcjExLT5hZGREaXJl
Y3RCdWZmZXJEaXJ0eUNhbGxiYWNrKCZtT25CdWZmZXJEYXRhRGlydHlbYXR0cmliSW5kZXhdKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKG5ld1N0b3JhZ2VUeXBlID09IFZl
cnRleFN0b3JhZ2VUeXBlOjpTVEFUSUMgfHwKLSAgICAgICAgICAgICAgICAgICAgIG5ld1N0b3Jh
Z2VUeXBlID09IFZlcnRleFN0b3JhZ2VUeXBlOjpEWU5BTUlDKQorICAgICAgICAgICAgc3dpdGNo
IChuZXdTdG9yYWdlVHlwZSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBuZXdCdWZm
ZXIxMS0+YWRkU3RhdGljQnVmZmVyRGlydHlDYWxsYmFjaygmbU9uQnVmZmVyRGF0YURpcnR5W2F0
dHJpYkluZGV4XSk7CisgICAgICAgICAgICAgICAgY2FzZSBWZXJ0ZXhTdG9yYWdlVHlwZTo6RElS
RUNUOgorICAgICAgICAgICAgICAgICAgICBuZXdDaGFubmVsID0gbmV3QnVmZmVyMTEtPmdldERp
cmVjdEJyb2FkY2FzdENoYW5uZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSBWZXJ0ZXhTdG9yYWdlVHlwZTo6U1RBVElDOgorICAgICAgICAgICAg
ICAgIGNhc2UgVmVydGV4U3RvcmFnZVR5cGU6OkRZTkFNSUM6CisgICAgICAgICAgICAgICAgICAg
IG5ld0NoYW5uZWwgPSBuZXdCdWZmZXIxMS0+Z2V0U3RhdGljQnJvYWRjYXN0Q2hhbm5lbCgpOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAg
ICBtT25CdWZmZXJEYXRhRGlydHlbYXR0cmliSW5kZXhdLmJpbmQobmV3Q2hhbm5lbCk7CiAgICAg
ICAgIG1DdXJyZW50QnVmZmVyc1thdHRyaWJJbmRleF0gPSBhdHRyaWIuYnVmZmVyOwogICAgIH0K
IH0KQEAgLTE4NCwxMiArMTgyLDggQEAgZ2w6OkVycm9yIFZlcnRleEFycmF5MTE6OnVwZGF0ZURp
cnR5QW5kRAogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNl
IFZlcnRleFN0b3JhZ2VUeXBlOjpTVEFUSUM6CiAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICBhdXRvIGVycm9yID0KLSAgICAgICAgICAgICAgICAgICAgICAgIFZlcnRleERh
dGFNYW5hZ2VyOjpTdG9yZVN0YXRpY0F0dHJpYih0cmFuc2xhdGVkQXR0cmliLCBjb3VudCwgaW5z
dGFuY2VzKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAg
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwot
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIEFOR0xFX1RSWSgKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFZlcnRleERhdGFNYW5hZ2VyOjpTdG9yZVN0YXRpY0F0dHJp
Yih0cmFuc2xhdGVkQXR0cmliLCBjb3VudCwgaW5zdGFuY2VzKSk7CiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjYXNlIFZlcnRl
eFN0b3JhZ2VUeXBlOjpDVVJSRU5UX1ZBTFVFOgpAQCAtMjMwLDEyICsyMjQsMTIgQEAgY29uc3Qg
c3RkOjp2ZWN0b3I8VHJhbnNsYXRlZEF0dHJpYnV0ZT4gJgogICAgIHJldHVybiBtVHJhbnNsYXRl
ZEF0dHJpYnM7CiB9CiAKLXZvaWQgVmVydGV4QXJyYXkxMTo6bWFya0J1ZmZlckRhdGFEaXJ0eShz
aXplX3QgYXR0cmliSW5kZXgpCit2b2lkIFZlcnRleEFycmF5MTE6OnNpZ25hbChTaWduYWxUb2tl
biB0b2tlbikKIHsKLSAgICBBU1NFUlQobUF0dHJpYnV0ZVN0b3JhZ2VUeXBlc1thdHRyaWJJbmRl
eF0gIT0gVmVydGV4U3RvcmFnZVR5cGU6OkNVUlJFTlRfVkFMVUUpOworICAgIEFTU0VSVChtQXR0
cmlidXRlU3RvcmFnZVR5cGVzW3Rva2VuXSAhPSBWZXJ0ZXhTdG9yYWdlVHlwZTo6Q1VSUkVOVF9W
QUxVRSk7CiAKICAgICAvLyBUaGlzIGNhbiBjaGFuZ2UgYSBidWZmZXIncyBzdG9yYWdlLCB3ZSds
bCBuZWVkIHRvIHJlLWNoZWNrLgotICAgIG1BdHRyaWJzVG9VcGRhdGUuc2V0KGF0dHJpYkluZGV4
KTsKKyAgICBtQXR0cmlic1RvVXBkYXRlLnNldCh0b2tlbik7CiB9CiAKIHZvaWQgVmVydGV4QXJy
YXkxMTo6Y2xlYXJEaXJ0eUFuZFByb21vdGVEeW5hbWljQXR0cmlicyhjb25zdCBnbDo6U3RhdGUg
JnN0YXRlLCBHTHNpemVpIGNvdW50KQpAQCAtMjQ4LDE4ICsyNDIsNCBAQCB2b2lkIFZlcnRleEFy
cmF5MTE6OmNsZWFyRGlydHlBbmRQcm9tb3RlCiAgICAgYXV0byBhY3RpdmVEeW5hbWljQXR0cmli
cyA9IChtRHluYW1pY0F0dHJpYnNNYXNrICYgYWN0aXZlTG9jYXRpb25zKTsKICAgICBWZXJ0ZXhE
YXRhTWFuYWdlcjo6UHJvbW90ZUR5bmFtaWNBdHRyaWJzKG1UcmFuc2xhdGVkQXR0cmlicywgYWN0
aXZlRHluYW1pY0F0dHJpYnMsIGNvdW50KTsKIH0KLQotdm9pZCBWZXJ0ZXhBcnJheTExOjp1bmxp
bmtCdWZmZXIoc2l6ZV90IGF0dHJpYkluZGV4LCBWZXJ0ZXhTdG9yYWdlVHlwZSBzdG9yYWdlVHlw
ZSkKLXsKLSAgICBCdWZmZXIxMSAqYnVmZmVyID0gR2V0SW1wbEFzPEJ1ZmZlcjExPihtQ3VycmVu
dEJ1ZmZlcnNbYXR0cmliSW5kZXhdLmdldCgpKTsKLSAgICBpZiAoc3RvcmFnZVR5cGUgPT0gVmVy
dGV4U3RvcmFnZVR5cGU6OkRJUkVDVCkKLSAgICB7Ci0gICAgICAgIGJ1ZmZlci0+cmVtb3ZlRGly
ZWN0QnVmZmVyRGlydHlDYWxsYmFjaygmbU9uQnVmZmVyRGF0YURpcnR5W2F0dHJpYkluZGV4XSk7
Ci0gICAgfQotICAgIGVsc2UgaWYgKHN0b3JhZ2VUeXBlID09IFZlcnRleFN0b3JhZ2VUeXBlOjpT
VEFUSUMgfHwgc3RvcmFnZVR5cGUgPT0gVmVydGV4U3RvcmFnZVR5cGU6OkRZTkFNSUMpCi0gICAg
ewotICAgICAgICBidWZmZXItPnJlbW92ZVN0YXRpY0J1ZmZlckRpcnR5Q2FsbGJhY2soJm1PbkJ1
ZmZlckRhdGFEaXJ0eVthdHRyaWJJbmRleF0pOwotICAgIH0KLX0KLQogfSAgLy8gbmFtZXNwYWNl
IHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL1ZlcnRleEFycmF5MTEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEFycmF5MTEuaAko
cmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9WZXJ0ZXhBcnJheTExLmgJKHdvcmtpbmcgY29weSkKQEAgLTEx
LDE1ICsxMSwxNiBAQAogCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvVmVydGV4QXJyYXlJ
bXBsLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlcmVyMTEu
aCIKKyNpbmNsdWRlICJsaWJBTkdMRS9zaWduYWxfdXRpbHMuaCIKIAogbmFtZXNwYWNlIHJ4CiB7
CiBjbGFzcyBSZW5kZXJlcjExOwogCi1jbGFzcyBWZXJ0ZXhBcnJheTExIDogcHVibGljIFZlcnRl
eEFycmF5SW1wbAorY2xhc3MgVmVydGV4QXJyYXkxMSA6IHB1YmxpYyBWZXJ0ZXhBcnJheUltcGws
IHB1YmxpYyBhbmdsZTo6U2lnbmFsUmVjZWl2ZXIKIHsKICAgcHVibGljOgotICAgIFZlcnRleEFy
cmF5MTEoY29uc3QgZ2w6OlZlcnRleEFycmF5OjpEYXRhICZkYXRhKTsKKyAgICBWZXJ0ZXhBcnJh
eTExKGNvbnN0IGdsOjpWZXJ0ZXhBcnJheVN0YXRlICZkYXRhKTsKICAgICB+VmVydGV4QXJyYXkx
MSgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzeW5jU3RhdGUoY29uc3QgZ2w6OlZlcnRleEFycmF5
OjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykgb3ZlcnJpZGU7CkBAIC0zMiwxMCArMzMsMTEgQEAgY2xh
c3MgVmVydGV4QXJyYXkxMSA6IHB1YmxpYyBWZXJ0ZXhBcnJheQogCiAgICAgY29uc3Qgc3RkOjp2
ZWN0b3I8VHJhbnNsYXRlZEF0dHJpYnV0ZT4gJmdldFRyYW5zbGF0ZWRBdHRyaWJzKCkgY29uc3Q7
CiAKKyAgICAvLyBTaWduYWxSZWNlaXZlciBpbXBsZW1lbnRhdGlvbgorICAgIHZvaWQgc2lnbmFs
KGFuZ2xlOjpTaWduYWxUb2tlbiB0b2tlbikgb3ZlcnJpZGU7CisKICAgcHJpdmF0ZToKICAgICB2
b2lkIHVwZGF0ZVZlcnRleEF0dHJpYlN0b3JhZ2Uoc2l6ZV90IGF0dHJpYkluZGV4KTsKLSAgICB2
b2lkIG1hcmtCdWZmZXJEYXRhRGlydHkoc2l6ZV90IGF0dHJpYkluZGV4KTsKLSAgICB2b2lkIHVu
bGlua0J1ZmZlcihzaXplX3QgYXR0cmliSW5kZXgsIFZlcnRleFN0b3JhZ2VUeXBlIHN0b3JhZ2VU
eXBlKTsKIAogICAgIHN0ZDo6dmVjdG9yPFZlcnRleFN0b3JhZ2VUeXBlPiBtQXR0cmlidXRlU3Rv
cmFnZVR5cGVzOwogICAgIHN0ZDo6dmVjdG9yPFRyYW5zbGF0ZWRBdHRyaWJ1dGU+IG1UcmFuc2xh
dGVkQXR0cmliczsKQEAgLTUyLDcgKzU0LDcgQEAgY2xhc3MgVmVydGV4QXJyYXkxMSA6IHB1Ymxp
YyBWZXJ0ZXhBcnJheQogICAgIC8vIFdlIG5lZWQgdG8ga2VlcCBhIHNhZmUgcG9pbnRlciB0byB0
aGUgQnVmZmVyIHNvIHdlIGNhbiBhdHRhY2ggdGhlIGNvcnJlY3QgZGlydHkgY2FsbGJhY2tzLgog
ICAgIHN0ZDo6dmVjdG9yPEJpbmRpbmdQb2ludGVyPGdsOjpCdWZmZXI+PiBtQ3VycmVudEJ1ZmZl
cnM7CiAKLSAgICBzdGQ6OnZlY3RvcjxOb3RpZmljYXRpb25DYWxsYmFjaz4gbU9uQnVmZmVyRGF0
YURpcnR5OworICAgIHN0ZDo6dmVjdG9yPGFuZ2xlOjpDaGFubmVsQmluZGluZz4gbU9uQnVmZmVy
RGF0YURpcnR5OwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEJ1ZmZlcjEx
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEJ1ZmZlcjExLmNwcAkocmV2aXNpb24gMjA3ODA0KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9WZXJ0ZXhCdWZmZXIxMS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCwxMSArMTIwLDcgQEAg
Z2w6OkVycm9yIFZlcnRleEJ1ZmZlcjExOjpzdG9yZVZlcnRleEF0dAogICAgIGludCBpbnB1dFN0
cmlkZSA9IHN0YXRpY19jYXN0PGludD4oQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZVN0cmlkZShhdHRy
aWIpKTsKIAogICAgIC8vIFRoaXMgd2lsbCBtYXAgdGhlIHJlc291cmNlIGlmIGl0IGlzbid0IGFs
cmVhZHkgbWFwcGVkLgotICAgIGdsOjpFcnJvciBlcnJvciA9IG1hcFJlc291cmNlKCk7Ci0gICAg
aWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9
CisgICAgQU5HTEVfVFJZKG1hcFJlc291cmNlKCkpOwogCiAgICAgdWludDhfdCAqb3V0cHV0ID0g
bU1hcHBlZFJlc291cmNlRGF0YSArIG9mZnNldDsKIApAQCAtMTQxLDcgKzEzNyw3IEBAIGdsOjpF
cnJvciBWZXJ0ZXhCdWZmZXIxMTo6c3RvcmVWZXJ0ZXhBdHQKICAgICBBU1NFUlQodmVydGV4Rm9y
bWF0SW5mby5jb3B5RnVuY3Rpb24gIT0gTlVMTCk7CiAgICAgdmVydGV4Rm9ybWF0SW5mby5jb3B5
RnVuY3Rpb24oaW5wdXQsIGlucHV0U3RyaWRlLCBjb3VudCwgb3V0cHV0KTsKIAotICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQog
CiB1bnNpZ25lZCBpbnQgVmVydGV4QnVmZmVyMTE6OmdldEJ1ZmZlclNpemUoKSBjb25zdApJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9keGdpX2Zvcm1hdF9kYXRhLmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX2Zvcm1hdF9kYXRhLmpz
b24JKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX2Zvcm1hdF9kYXRhLmpzb24JKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMTggQEAKK3sKKyAgICAiVU5LTk9XTiI6ICJOT05FIiwKKyAgICAiUjMyRzMy
QjMyQTMyX1RZUEVMRVNTIjogIiIsCisgICAgIlIzMkczMkIzMkEzMl9GTE9BVCI6ICIiLAorICAg
ICJSMzJHMzJCMzJBMzJfVUlOVCI6ICIiLAorICAgICJSMzJHMzJCMzJBMzJfU0lOVCI6ICIiLAor
ICAgICJSMzJHMzJCMzJfVFlQRUxFU1MiOiAiIiwKKyAgICAiUjMyRzMyQjMyX0ZMT0FUIjogIiIs
CisgICAgIlIzMkczMkIzMl9VSU5UIjogIiIsCisgICAgIlIzMkczMkIzMl9TSU5UIjogIiIsCisg
ICAgIlIxNkcxNkIxNkExNl9UWVBFTEVTUyI6ICIiLAorICAgICJSMTZHMTZCMTZBMTZfRkxPQVQi
OiAiIiwKKyAgICAiUjE2RzE2QjE2QTE2X1VOT1JNIjogIiIsCisgICAgIlIxNkcxNkIxNkExNl9V
SU5UIjogIiIsCisgICAgIlIxNkcxNkIxNkExNl9TTk9STSI6ICIiLAorICAgICJSMTZHMTZCMTZB
MTZfU0lOVCI6ICIiLAorICAgICJSMzJHMzJfVFlQRUxFU1MiOiAiIiwKKyAgICAiUjMyRzMyX0ZM
T0FUIjogIiIsCisgICAgIlIzMkczMl9VSU5UIjogIiIsCisgICAgIlIzMkczMl9TSU5UIjogIiIs
CisgICAgIlIzMkc4WDI0X1RZUEVMRVNTIjogIiIsCisgICAgIkQzMl9GTE9BVF9TOFgyNF9VSU5U
IjogIiIsCisgICAgIlIzMl9GTE9BVF9YOFgyNF9UWVBFTEVTUyI6ICIiLAorICAgICJYMzJfVFlQ
RUxFU1NfRzhYMjRfVUlOVCI6ICIiLAorICAgICJSMTBHMTBCMTBBMl9UWVBFTEVTUyI6ICIiLAor
ICAgICJSMTBHMTBCMTBBMl9VTk9STSI6ICIiLAorICAgICJSMTBHMTBCMTBBMl9VSU5UIjogIiIs
CisgICAgIlIxMUcxMUIxMF9GTE9BVCI6ICIiLAorICAgICJSOEc4QjhBOF9UWVBFTEVTUyI6ICIi
LAorICAgICJSOEc4QjhBOF9VTk9STSI6ICIiLAorICAgICJSOEc4QjhBOF9VTk9STV9TUkdCIjog
IiIsCisgICAgIlI4RzhCOEE4X1VJTlQiOiAiIiwKKyAgICAiUjhHOEI4QThfU05PUk0iOiAiIiwK
KyAgICAiUjhHOEI4QThfU0lOVCI6ICIiLAorICAgICJSMTZHMTZfVFlQRUxFU1MiOiAiIiwKKyAg
ICAiUjE2RzE2X0ZMT0FUIjogIiIsCisgICAgIlIxNkcxNl9VTk9STSI6ICIiLAorICAgICJSMTZH
MTZfVUlOVCI6ICIiLAorICAgICJSMTZHMTZfU05PUk0iOiAiIiwKKyAgICAiUjE2RzE2X1NJTlQi
OiAiIiwKKyAgICAiUjMyX1RZUEVMRVNTIjogIiIsCisgICAgIkQzMl9GTE9BVCI6ICIiLAorICAg
ICJSMzJfRkxPQVQiOiAiIiwKKyAgICAiUjMyX1VJTlQiOiAiIiwKKyAgICAiUjMyX1NJTlQiOiAi
IiwKKyAgICAiUjI0RzhfVFlQRUxFU1MiOiAiIiwKKyAgICAiRDI0X1VOT1JNX1M4X1VJTlQiOiAi
IiwKKyAgICAiUjI0X1VOT1JNX1g4X1RZUEVMRVNTIjogIiIsCisgICAgIlgyNF9UWVBFTEVTU19H
OF9VSU5UIjogIiIsCisgICAgIlI4RzhfVFlQRUxFU1MiOiAiIiwKKyAgICAiUjhHOF9VTk9STSI6
ICIiLAorICAgICJSOEc4X1VJTlQiOiAiIiwKKyAgICAiUjhHOF9TTk9STSI6ICIiLAorICAgICJS
OEc4X1NJTlQiOiAiIiwKKyAgICAiUjE2X1RZUEVMRVNTIjogIiIsCisgICAgIlIxNl9GTE9BVCI6
ICIiLAorICAgICJEMTZfVU5PUk0iOiAiIiwKKyAgICAiUjE2X1VOT1JNIjogIiIsCisgICAgIlIx
Nl9VSU5UIjogIiIsCisgICAgIlIxNl9TTk9STSI6ICIiLAorICAgICJSMTZfU0lOVCI6ICIiLAor
ICAgICJSOF9UWVBFTEVTUyI6ICIiLAorICAgICJSOF9VTk9STSI6ICIiLAorICAgICJSOF9VSU5U
IjogIiIsCisgICAgIlI4X1NOT1JNIjogIiIsCisgICAgIlI4X1NJTlQiOiAiIiwKKyAgICAiQThf
VU5PUk0iOiAiIiwKKyAgICAiUjFfVU5PUk0iOiAiIiwKKyAgICAiUjlHOUI5RTVfU0hBUkVERVhQ
IjogIiIsCisgICAgIlI4RzhfQjhHOF9VTk9STSI6ICIiLAorICAgICJHOFI4X0c4QjhfVU5PUk0i
OiAiIiwKKyAgICAiQkMxX1RZUEVMRVNTIjogIiIsCisgICAgIkJDMV9VTk9STSI6ICJCQzFfUkdC
QV9VTk9STV9CTE9DSyIsCisgICAgIkJDMV9VTk9STV9TUkdCIjogIiIsCisgICAgIkJDMl9UWVBF
TEVTUyI6ICIiLAorICAgICJCQzJfVU5PUk0iOiAiQkMyX1JHQkFfVU5PUk1fQkxPQ0siLAorICAg
ICJCQzJfVU5PUk1fU1JHQiI6ICIiLAorICAgICJCQzNfVFlQRUxFU1MiOiAiIiwKKyAgICAiQkMz
X1VOT1JNIjogIkJDM19SR0JBX1VOT1JNX0JMT0NLIiwKKyAgICAiQkMzX1VOT1JNX1NSR0IiOiAi
IiwKKyAgICAiQkM0X1RZUEVMRVNTIjogIiIsCisgICAgIkJDNF9VTk9STSI6ICIiLAorICAgICJC
QzRfU05PUk0iOiAiIiwKKyAgICAiQkM1X1RZUEVMRVNTIjogIiIsCisgICAgIkJDNV9VTk9STSI6
ICIiLAorICAgICJCQzVfU05PUk0iOiAiIiwKKyAgICAiQjVHNlI1X1VOT1JNIjogIiIsCisgICAg
IkI1RzVSNUExX1VOT1JNIjogIiIsCisgICAgIkI4RzhSOEE4X1VOT1JNIjogIiIsCisgICAgIkI4
RzhSOFg4X1VOT1JNIjogIiIsCisgICAgIlIxMEcxMEIxMF9YUl9CSUFTX0EyX1VOT1JNIjogIiIs
CisgICAgIkI4RzhSOEE4X1RZUEVMRVNTIjogIiIsCisgICAgIkI4RzhSOEE4X1VOT1JNX1NSR0Ii
OiAiIiwKKyAgICAiQjhHOFI4WDhfVFlQRUxFU1MiOiAiIiwKKyAgICAiQjhHOFI4WDhfVU5PUk1f
U1JHQiI6ICIiLAorICAgICJCQzZIX1RZUEVMRVNTIjogIiIsCisgICAgIkJDNkhfVUYxNiI6ICIi
LAorICAgICJCQzZIX1NGMTYiOiAiIiwKKyAgICAiQkM3X1RZUEVMRVNTIjogIiIsCisgICAgIkJD
N19VTk9STSI6ICIiLAorICAgICJCQzdfVU5PUk1fU1JHQiI6ICIiLAorICAgICJBWVVWIjogIiIs
CisgICAgIlk0MTAiOiAiIiwKKyAgICAiWTQxNiI6ICIiLAorICAgICJOVjEyIjogIiIsCisgICAg
IlAwMTAiOiAiIiwKKyAgICAiUDAxNiI6ICIiLAorICAgICI0MjBfT1BBUVVFIjogIiIsCisgICAg
IllVWTIiOiAiIiwKKyAgICAiWTIxMCI6ICIiLAorICAgICJZMjE2IjogIiIsCisgICAgIk5WMTEi
OiAiIiwKKyAgICAiQUk0NCI6ICIiLAorICAgICJJQTQ0IjogIiIsCisgICAgIlA4IjogIiIsCisg
ICAgIkE4UDgiOiAiIiwKKyAgICAiQjRHNFI0QTRfVU5PUk0iOiAiIgorfQpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX2Zv
cm1hdF9tYXBfYXV0b2dlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX2Zvcm1hdF9tYXBfYXV0b2dl
bi5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX2Zvcm1hdF9tYXBfYXV0b2dlbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1MTYgQEAKKy8vIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVE
SVQuCisvLyBHZW5lcmF0ZWQgYnkgZ2VuX2R4Z2lfZm9ybWF0X3RhYmxlLnB5IHVzaW5nIGRhdGEg
ZnJvbSBkeGdpX2Zvcm1hdF9kYXRhLmpzb24uCisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gRFhHSSBmb3JtYXQgaW5m
bzoKKy8vICAgRGV0ZXJtaW5pbmcgbWV0YWRhdGEgYWJvdXQgYSBEWEdJIGZvcm1hdC4KKworI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdC5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5n
bGU7CisKK25hbWVzcGFjZSByeAoreworCituYW1lc3BhY2UgZDNkMTEKK3sKKworR0xlbnVtIEdl
dENvbXBvbmVudFR5cGUoRFhHSV9GT1JNQVQgZHhnaUZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGR4
Z2lGb3JtYXQpCisgICAgeworICAgICAgICBjYXNlIERYR0lfRk9STUFUXzQyMF9PUEFRVUU6Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9BOFA4OgorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQThfVU5PUk06CisgICAgICAg
ICAgICByZXR1cm4gR0xfVU5TSUdORURfTk9STUFMSVpFRDsKKyAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9BSTQ0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
QVlVVjoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I0RzRS
NEE0X1VOT1JNOgorICAgICAgICAgICAgcmV0dXJuIEdMX1VOU0lHTkVEX05PUk1BTElaRUQ7Cisg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjVHNVI1QTFfVU5PUk06CisgICAgICAgICAgICByZXR1
cm4gR0xfVU5TSUdORURfTk9STUFMSVpFRDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CNUc2
UjVfVU5PUk06CisgICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURfTk9STUFMSVpFRDsKKyAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9COEc4UjhBOF9UWVBFTEVTUzoKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNOgorICAgICAgICAg
ICAgcmV0dXJuIEdMX1VOU0lHTkVEX05PUk1BTElaRUQ7CisgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfQjhHOFI4QThfVU5PUk1fU1JHQjoKKyAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9O
T1JNQUxJWkVEOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOFg4X1RZUEVMRVNTOgor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4WDhfVU5P
Uk06CisgICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURfTk9STUFMSVpFRDsKKyAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9COEc4UjhYOF9VTk9STV9TUkdCOgorICAgICAgICAgICAgcmV0dXJu
IEdMX1VOU0lHTkVEX05PUk1BTElaRUQ7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMxX1RZ
UEVMRVNTOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMx
X1VOT1JNOgorICAgICAgICAgICAgcmV0dXJuIEdMX1VOU0lHTkVEX05PUk1BTElaRUQ7CisgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMxX1VOT1JNX1NSR0I6CisgICAgICAgICAgICByZXR1cm4g
R0xfVU5TSUdORURfTk9STUFMSVpFRDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzJfVFlQ
RUxFU1M6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzJf
VU5PUk06CisgICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURfTk9STUFMSVpFRDsKKyAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzJfVU5PUk1fU1JHQjoKKyAgICAgICAgICAgIHJldHVybiBH
TF9VTlNJR05FRF9OT1JNQUxJWkVEOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDM19UWVBF
TEVTUzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDM19V
Tk9STToKKyAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9OT1JNQUxJWkVEOworICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX0JDM19VTk9STV9TUkdCOgorICAgICAgICAgICAgcmV0dXJuIEdM
X1VOU0lHTkVEX05PUk1BTElaRUQ7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM0X1NOT1JN
OgorICAgICAgICAgICAgcmV0dXJuIEdMX1NJR05FRF9OT1JNQUxJWkVEOworICAgICAgICBjYXNl
IERYR0lfRk9STUFUX0JDNF9UWVBFTEVTUzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIERYR0lfRk9STUFUX0JDNF9VTk9STToKKyAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05F
RF9OT1JNQUxJWkVEOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNV9TTk9STToKKyAgICAg
ICAgICAgIHJldHVybiBHTF9TSUdORURfTk9STUFMSVpFRDsKKyAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9CQzVfVFlQRUxFU1M6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9CQzVfVU5PUk06CisgICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURfTk9STUFM
SVpFRDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzZIX1NGMTY6CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzZIX1RZUEVMRVNTOgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM2SF9VRjE2OgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM3X1RZUEVMRVNTOgorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM3X1VOT1JNOgorICAgICAg
ICAgICAgcmV0dXJuIEdMX1VOU0lHTkVEX05PUk1BTElaRUQ7CisgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfQkM3X1VOT1JNX1NSR0I6CisgICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURfTk9S
TUFMSVpFRDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMTZfVU5PUk06CisgICAgICAgICAg
ICByZXR1cm4gR0xfVU5TSUdORURfTk9STUFMSVpFRDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9EMjRfVU5PUk1fUzhfVUlOVDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERY
R0lfRk9STUFUX0QzMl9GTE9BVDoKKyAgICAgICAgICAgIHJldHVybiBHTF9GTE9BVDsKKyAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9EMzJfRkxPQVRfUzhYMjRfVUlOVDoKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0c4UjhfRzhCOF9VTk9STToKKyAgICAgICAg
ICAgIHJldHVybiBHTF9VTlNJR05FRF9OT1JNQUxJWkVEOworICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX0lBNDQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9O
VjExOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfTlYxMjoK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1AwMTA6CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9QMDE2OgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUDg6CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9UWVBFTEVTUzoKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VJTlQ6
CisgICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURfSU5UOworICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX1IxMEcxMEIxMEEyX1VOT1JNOgorICAgICAgICAgICAgcmV0dXJuIEdMX1VOU0lHTkVE
X05PUk1BTElaRUQ7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjEwRzEwQjEwX1hSX0JJQVNf
QTJfVU5PUk06CisgICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURfTk9STUFMSVpFRDsKKyAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTFHMTFCMTBfRkxPQVQ6CisgICAgICAgICAgICByZXR1
cm4gR0xfRkxPQVQ7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FU
OgorICAgICAgICAgICAgcmV0dXJuIEdMX0ZMT0FUOworICAgICAgICBjYXNlIERYR0lfRk9STUFU
X1IxNkcxNkIxNkExNl9TSU5UOgorICAgICAgICAgICAgcmV0dXJuIEdMX0lOVDsKKyAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU05PUk06CisgICAgICAgICAgICByZXR1cm4g
R0xfU0lHTkVEX05PUk1BTElaRUQ7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2
QTE2X1RZUEVMRVNTOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjE2RzE2QjE2QTE2X1VJTlQ6CisgICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURfSU5U
OworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VTk9STToKKyAgICAgICAg
ICAgIHJldHVybiBHTF9VTlNJR05FRF9OT1JNQUxJWkVEOworICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX1IxNkcxNl9GTE9BVDoKKyAgICAgICAgICAgIHJldHVybiBHTF9GTE9BVDsKKyAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZfU0lOVDoKKyAgICAgICAgICAgIHJldHVybiBHTF9JTlQ7
CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2X1NOT1JNOgorICAgICAgICAgICAgcmV0
dXJuIEdMX1NJR05FRF9OT1JNQUxJWkVEOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcx
Nl9UWVBFTEVTUzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFU
X1IxNkcxNl9VSU5UOgorICAgICAgICAgICAgcmV0dXJuIEdMX1VOU0lHTkVEX0lOVDsKKyAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZfVU5PUk06CisgICAgICAgICAgICByZXR1cm4gR0xf
VU5TSUdORURfTk9STUFMSVpFRDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfRkxPQVQ6
CisgICAgICAgICAgICByZXR1cm4gR0xfRkxPQVQ7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjE2X1NJTlQ6CisgICAgICAgICAgICByZXR1cm4gR0xfSU5UOworICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX1IxNl9TTk9STToKKyAgICAgICAgICAgIHJldHVybiBHTF9TSUdORURfTk9STUFMSVpF
RDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfVFlQRUxFU1M6CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfVUlOVDoKKyAgICAgICAgICAgIHJl
dHVybiBHTF9VTlNJR05FRF9JTlQ7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2X1VOT1JN
OgorICAgICAgICAgICAgcmV0dXJuIEdMX1VOU0lHTkVEX05PUk1BTElaRUQ7CisgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfUjFfVU5PUk06CisgICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURf
Tk9STUFMSVpFRDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMjRHOF9UWVBFTEVTUzoKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IyNF9VTk9STV9YOF9U
WVBFTEVTUzoKKyAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9OT1JNQUxJWkVEOworICAg
ICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVDoKKyAgICAgICAgICAgIHJl
dHVybiBHTF9GTE9BVDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lO
VDoKKyAgICAgICAgICAgIHJldHVybiBHTF9JTlQ7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjMyRzMyQjMyQTMyX1RZUEVMRVNTOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQ6CisgICAgICAgICAgICByZXR1cm4gR0xfVU5T
SUdORURfSU5UOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVDoKKyAg
ICAgICAgICAgIHJldHVybiBHTF9GTE9BVDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJH
MzJCMzJfU0lOVDoKKyAgICAgICAgICAgIHJldHVybiBHTF9JTlQ7CisgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjMyRzMyQjMyX1RZUEVMRVNTOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX1VJTlQ6CisgICAgICAgICAgICByZXR1cm4gR0xf
VU5TSUdORURfSU5UOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVDoKKyAg
ICAgICAgICAgIHJldHVybiBHTF9GTE9BVDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJH
MzJfU0lOVDoKKyAgICAgICAgICAgIHJldHVybiBHTF9JTlQ7CisgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfUjMyRzMyX1RZUEVMRVNTOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjMyRzMyX1VJTlQ6CisgICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURf
SU5UOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkc4WDI0X1RZUEVMRVNTOgorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyX0ZMT0FUOgorICAgICAg
ICAgICAgcmV0dXJuIEdMX0ZMT0FUOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMl9GTE9B
VF9YOFgyNF9UWVBFTEVTUzoKKyAgICAgICAgICAgIHJldHVybiBHTF9GTE9BVDsKKyAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SMzJfU0lOVDoKKyAgICAgICAgICAgIHJldHVybiBHTF9JTlQ7Cisg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyX1RZUEVMRVNTOgorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyX1VJTlQ6CisgICAgICAgICAgICByZXR1cm4g
R0xfVU5TSUdORURfSU5UOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1NJTlQ6
CisgICAgICAgICAgICByZXR1cm4gR0xfSU5UOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4
RzhCOEE4X1NOT1JNOgorICAgICAgICAgICAgcmV0dXJuIEdMX1NJR05FRF9OT1JNQUxJWkVEOwor
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1RZUEVMRVNTOgorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVDoKKyAgICAgICAg
ICAgIHJldHVybiBHTF9VTlNJR05FRF9JTlQ7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhH
OEI4QThfVU5PUk06CisgICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURfTk9STUFMSVpFRDsK
KyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCOgorICAgICAgICAg
ICAgcmV0dXJuIEdMX1VOU0lHTkVEX05PUk1BTElaRUQ7CisgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjhHOF9COEc4X1VOT1JNOgorICAgICAgICAgICAgcmV0dXJuIEdMX1VOU0lHTkVEX05PUk1B
TElaRUQ7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9TSU5UOgorICAgICAgICAgICAg
cmV0dXJuIEdMX0lOVDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4X1NOT1JNOgorICAg
ICAgICAgICAgcmV0dXJuIEdMX1NJR05FRF9OT1JNQUxJWkVEOworICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX1I4RzhfVFlQRUxFU1M6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9SOEc4X1VJTlQ6CisgICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURfSU5U
OworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfVU5PUk06CisgICAgICAgICAgICByZXR1
cm4gR0xfVU5TSUdORURfTk9STUFMSVpFRDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOF9T
SU5UOgorICAgICAgICAgICAgcmV0dXJuIEdMX0lOVDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SOF9TTk9STToKKyAgICAgICAgICAgIHJldHVybiBHTF9TSUdORURfTk9STUFMSVpFRDsKKyAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOF9UWVBFTEVTUzoKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4X1VJTlQ6CisgICAgICAgICAgICByZXR1cm4gR0xf
VU5TSUdORURfSU5UOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4X1VOT1JNOgorICAgICAg
ICAgICAgcmV0dXJuIEdMX1VOU0lHTkVEX05PUk1BTElaRUQ7CisgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfUjlHOUI5RTVfU0hBUkVERVhQOgorICAgICAgICAgICAgcmV0dXJuIEdMX0ZMT0FUOwor
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX1VOS05PV046CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9YMjRfVFlQRUxFU1NfRzhfVUlOVDoKKyAgICAgICAgICAg
IHJldHVybiBHTF9VTlNJR05FRF9JTlQ7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfWDMyX1RZ
UEVMRVNTX0c4WDI0X1VJTlQ6CisgICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURfSU5UOwor
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX1kyMTA6CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9ZMjE2OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfWTQxMDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERY
R0lfRk9STUFUX1k0MTY6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9ZVVkyOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICBVTlJFQUNIQUJMRSgpOworICAgIHJldHVybiBHTF9O
T05FOworfQorCit9ICAvLyBuYW1lc3BhY2UgZDNkMTEKKworbmFtZXNwYWNlIGQzZDExX2FuZ2xl
Cit7CisKK2NvbnN0IEZvcm1hdCAmR2V0Rm9ybWF0KERYR0lfRk9STUFUIGR4Z2lGb3JtYXQpCit7
CisgICAgc3dpdGNoIChkeGdpRm9ybWF0KQorICAgIHsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF80MjBfT1BBUVVFOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfQThQODoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0E4
X1VOT1JNOgorICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1hdDo6SUQ6OkE4X1VO
T1JNKTsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9BSTQ0OgorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQVlVVjoKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIERYR0lfRk9STUFUX0I0RzRSNEE0X1VOT1JNOgorICAgICAgICAgICAgcmV0dXJu
IEZvcm1hdDo6R2V0KEZvcm1hdDo6SUQ6OkI0RzRSNEE0X1VOT1JNKTsKKyAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9CNUc1UjVBMV9VTk9STToKKyAgICAgICAgICAgIHJldHVybiBGb3JtYXQ6Okdl
dChGb3JtYXQ6OklEOjpCNUc1UjVBMV9VTk9STSk7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
QjVHNlI1X1VOT1JNOgorICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1hdDo6SUQ6
OkI1RzZSNV9VTk9STSk7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4QThfVFlQRUxF
U1M6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9COEc4UjhB
OF9VTk9STToKKyAgICAgICAgICAgIHJldHVybiBGb3JtYXQ6OkdldChGb3JtYXQ6OklEOjpCOEc4
UjhBOF9VTk9STSk7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk1fU1JH
QjoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOFg4
X1RZUEVMRVNTOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
QjhHOFI4WDhfVU5PUk06CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJ
RDo6QjhHOFI4WDhfVU5PUk0pOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOFg4X1VO
T1JNX1NSR0I6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9C
QzFfVFlQRUxFU1M6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9CQzFfVU5PUk06CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6
QkMxX1JHQkFfVU5PUk1fQkxPQ0spOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMV9VTk9S
TV9TUkdCOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMy
X1RZUEVMRVNTOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
QkMyX1VOT1JNOgorICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1hdDo6SUQ6OkJD
Ml9SR0JBX1VOT1JNX0JMT0NLKTsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzJfVU5PUk1f
U1JHQjoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDM19U
WVBFTEVTUzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JD
M19VTk9STToKKyAgICAgICAgICAgIHJldHVybiBGb3JtYXQ6OkdldChGb3JtYXQ6OklEOjpCQzNf
UkdCQV9VTk9STV9CTE9DSyk7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMzX1VOT1JNX1NS
R0I6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzRfU05P
Uk06CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzRfVFlQ
RUxFU1M6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzRf
VU5PUk06CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzVf
U05PUk06CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzVf
VFlQRUxFU1M6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9C
QzVfVU5PUk06CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9C
QzZIX1NGMTY6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9C
QzZIX1RZUEVMRVNTOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfQkM2SF9VRjE2OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfQkM3X1RZUEVMRVNTOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfQkM3X1VOT1JNOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfQkM3X1VOT1JNX1NSR0I6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9EMTZfVU5PUk06CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9y
bWF0OjpJRDo6RDE2X1VOT1JNKTsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1f
UzhfVUlOVDoKKyAgICAgICAgICAgIHJldHVybiBGb3JtYXQ6OkdldChGb3JtYXQ6OklEOjpEMjRf
VU5PUk1fUzhfVUlOVCk7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfRDMyX0ZMT0FUOgorICAg
ICAgICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1hdDo6SUQ6OkQzMl9GTE9BVCk7CisgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfRDMyX0ZMT0FUX1M4WDI0X1VJTlQ6CisgICAgICAgICAgICBy
ZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6RDMyX0ZMT0FUX1M4WDI0X1VJTlQpOworICAg
ICAgICBjYXNlIERYR0lfRk9STUFUX0c4UjhfRzhCOF9VTk9STToKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0lBNDQ6CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9OVjExOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfTlYxMjoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1AwMTA6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9QMDE2OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUDg6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTBH
MTBCMTBBMl9UWVBFTEVTUzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX1IxMEcxMEIxMEEyX1VJTlQ6CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQo
Rm9ybWF0OjpJRDo6UjEwRzEwQjEwQTJfVUlOVCk7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjEwRzEwQjEwQTJfVU5PUk06CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0
OjpJRDo6UjEwRzEwQjEwQTJfVU5PUk0pOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxMEcx
MEIxMF9YUl9CSUFTX0EyX1VOT1JNOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjExRzExQjEwX0ZMT0FUOgorICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6
R2V0KEZvcm1hdDo6SUQ6OlIxMUcxMUIxMF9GTE9BVCk7CisgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjE2RzE2QjE2QTE2X0ZMT0FUOgorICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZv
cm1hdDo6SUQ6OlIxNkcxNkIxNkExNl9GTE9BVCk7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjE2RzE2QjE2QTE2X1NJTlQ6CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0
OjpJRDo6UjE2RzE2QjE2QTE2X1NJTlQpOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcx
NkIxNkExNl9TTk9STToKKyAgICAgICAgICAgIHJldHVybiBGb3JtYXQ6OkdldChGb3JtYXQ6OklE
OjpSMTZHMTZCMTZBMTZfU05PUk0pOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIx
NkExNl9UWVBFTEVTUzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX1IxNkcxNkIxNkExNl9VSU5UOgorICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZv
cm1hdDo6SUQ6OlIxNkcxNkIxNkExNl9VSU5UKTsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9S
MTZHMTZCMTZBMTZfVU5PUk06CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0
OjpJRDo6UjE2RzE2QjE2QTE2X1VOT1JNKTsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZH
MTZfRkxPQVQ6CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6UjE2
RzE2X0ZMT0FUKTsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZfU0lOVDoKKyAgICAg
ICAgICAgIHJldHVybiBGb3JtYXQ6OkdldChGb3JtYXQ6OklEOjpSMTZHMTZfU0lOVCk7CisgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2X1NOT1JNOgorICAgICAgICAgICAgcmV0dXJuIEZv
cm1hdDo6R2V0KEZvcm1hdDo6SUQ6OlIxNkcxNl9TTk9STSk7CisgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfUjE2RzE2X1RZUEVMRVNTOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjE2RzE2X1VJTlQ6CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQo
Rm9ybWF0OjpJRDo6UjE2RzE2X1VJTlQpOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcx
Nl9VTk9STToKKyAgICAgICAgICAgIHJldHVybiBGb3JtYXQ6OkdldChGb3JtYXQ6OklEOjpSMTZH
MTZfVU5PUk0pOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNl9GTE9BVDoKKyAgICAgICAg
ICAgIHJldHVybiBGb3JtYXQ6OkdldChGb3JtYXQ6OklEOjpSMTZfRkxPQVQpOworICAgICAgICBj
YXNlIERYR0lfRk9STUFUX1IxNl9TSU5UOgorICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0
KEZvcm1hdDo6SUQ6OlIxNl9TSU5UKTsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfU05P
Uk06CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6UjE2X1NOT1JN
KTsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfVFlQRUxFU1M6CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfVUlOVDoKKyAgICAgICAgICAgIHJl
dHVybiBGb3JtYXQ6OkdldChGb3JtYXQ6OklEOjpSMTZfVUlOVCk7CisgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjE2X1VOT1JNOgorICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1h
dDo6SUQ6OlIxNl9VTk9STSk7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjFfVU5PUk06Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMjRHOF9UWVBFTEVT
UzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IyNF9VTk9S
TV9YOF9UWVBFTEVTUzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX1IzMkczMkIzMkEzMl9GTE9BVDoKKyAgICAgICAgICAgIHJldHVybiBGb3JtYXQ6OkdldChG
b3JtYXQ6OklEOjpSMzJHMzJCMzJBMzJfRkxPQVQpOworICAgICAgICBjYXNlIERYR0lfRk9STUFU
X1IzMkczMkIzMkEzMl9TSU5UOgorICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1h
dDo6SUQ6OlIzMkczMkIzMkEzMl9TSU5UKTsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJH
MzJCMzJBMzJfVFlQRUxFU1M6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVDoKKyAgICAgICAgICAgIHJldHVybiBGb3JtYXQ6Okdl
dChGb3JtYXQ6OklEOjpSMzJHMzJCMzJBMzJfVUlOVCk7CisgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjMyRzMyQjMyX0ZMT0FUOgorICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1h
dDo6SUQ6OlIzMkczMkIzMl9GTE9BVCk7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMy
QjMyX1NJTlQ6CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6UjMy
RzMyQjMyX1NJTlQpOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMl9UWVBFTEVT
UzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIz
Ml9VSU5UOgorICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1hdDo6SUQ6OlIzMkcz
MkIzMl9VSU5UKTsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQ6CisgICAg
ICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6UjMyRzMyX0ZMT0FUKTsKKyAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJfU0lOVDoKKyAgICAgICAgICAgIHJldHVybiBG
b3JtYXQ6OkdldChGb3JtYXQ6OklEOjpSMzJHMzJfU0lOVCk7CisgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfUjMyRzMyX1RZUEVMRVNTOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjMyRzMyX1VJTlQ6CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQo
Rm9ybWF0OjpJRDo6UjMyRzMyX1VJTlQpOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkc4
WDI0X1RZUEVMRVNTOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjMyX0ZMT0FUOgorICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1hdDo6SUQ6
OlIzMl9GTE9BVCk7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyX0ZMT0FUX1g4WDI0X1RZ
UEVMRVNTOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMy
X1NJTlQ6CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6UjMyX1NJ
TlQpOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMl9UWVBFTEVTUzoKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMl9VSU5UOgorICAgICAgICAgICAg
cmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1hdDo6SUQ6OlIzMl9VSU5UKTsKKyAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5UOgorICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0
KEZvcm1hdDo6SUQ6OlI4RzhCOEE4X1NJTlQpOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4
RzhCOEE4X1NOT1JNOgorICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1hdDo6SUQ6
OlI4RzhCOEE4X1NOT1JNKTsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9UWVBF
TEVTUzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhC
OEE4X1VJTlQ6CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6UjhH
OEI4QThfVUlOVCk7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk06Cisg
ICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk0p
OworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0I6CisgICAgICAg
ICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk1fU1JHQik7
CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9COEc4X1VOT1JNOgorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9TSU5UOgorICAgICAgICAgICAg
cmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1hdDo6SUQ6OlI4RzhfU0lOVCk7CisgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjhHOF9TTk9STToKKyAgICAgICAgICAgIHJldHVybiBGb3JtYXQ6OkdldChG
b3JtYXQ6OklEOjpSOEc4X1NOT1JNKTsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4X1RZ
UEVMRVNTOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhH
OF9VSU5UOgorICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1hdDo6SUQ6OlI4Rzhf
VUlOVCk7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9VTk9STToKKyAgICAgICAgICAg
IHJldHVybiBGb3JtYXQ6OkdldChGb3JtYXQ6OklEOjpSOEc4X1VOT1JNKTsKKyAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9SOF9TSU5UOgorICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZv
cm1hdDo6SUQ6OlI4X1NJTlQpOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4X1NOT1JNOgor
ICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1hdDo6SUQ6OlI4X1NOT1JNKTsKKyAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOF9UWVBFTEVTUzoKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4X1VJTlQ6CisgICAgICAgICAgICByZXR1cm4gRm9y
bWF0OjpHZXQoRm9ybWF0OjpJRDo6UjhfVUlOVCk7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjhfVU5PUk06CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6Ujhf
VU5PUk0pOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I5RzlCOUU1X1NIQVJFREVYUDoKKyAg
ICAgICAgICAgIHJldHVybiBGb3JtYXQ6OkdldChGb3JtYXQ6OklEOjpSOUc5QjlFNV9TSEFSRURF
WFApOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1VOS05PV046CisgICAgICAgICAgICByZXR1
cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6Tk9ORSk7CisgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfWDI0X1RZUEVMRVNTX0c4X1VJTlQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9YMzJfVFlQRUxFU1NfRzhYMjRfVUlOVDoKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1kyMTA6CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9ZMjE2OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfWTQxMDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1k0MTY6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9ZVVkyOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBVTlJFQUNIQUJMRSgpOworICAgIHJldHVybiBG
b3JtYXQ6OkdldChGb3JtYXQ6OklEOjpOT05FKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGQzZDEx
X2FuZ2xlCisKK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX3N1cHBvcnRfZGF0YS5qc29u
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvZHhnaV9zdXBwb3J0X2RhdGEuanNvbgkocmV2aXNpb24gMjA3ODA0KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9keGdpX3N1cHBvcnRfZGF0YS5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC04LDcgKzgsOCBAQAog
ICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5l
dmVyIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKLSAgICAgICJkZXB0aFN0ZW5j
aWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBB
dXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9U
WVBFTEVTUyI6CiAgICAgewpAQCAtMTgsNyArMTksOCBAQAogICAgICAgInNoYWRlclNhbXBsZSI6
ICJuZXZlciIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0aXNh
bXBsZVJUIjogIm5ldmVyIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAi
ZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAg
IH0sCiAgICAgIkRYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCI6CiAgICAgewpAQCAtMjgs
MjcgKzMwLDMwIEBACiAgICAgICAic2hhZGVyU2FtcGxlIjogIjEwXzBjaGVjazEwXzFhbHdheXMi
LAogICAgICAgInJlbmRlclRhcmdldCI6ICJhbHdheXMiLAogICAgICAgIm11bHRpc2FtcGxlUlQi
OiAiY2hlY2siLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0
ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAiYWx3YXlzIgogICAgIH0sCiAg
ICAgIkRYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5UIjoKICAgICB7Ci0gICAgICAidGV4dHVy
ZTJEIjogImFsd2F5cyIsCi0gICAgICAidGV4dHVyZTNEIjogImFsd2F5cyIsCi0gICAgICAidGV4
dHVyZUN1YmUiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlMkQiOiAiMTBfMCIsCisgICAgICAi
dGV4dHVyZTNEIjogIjEwXzAiLAorICAgICAgInRleHR1cmVDdWJlIjogIjEwXzAiLAogICAgICAg
InNoYWRlclNhbXBsZSI6ICJuZXZlciIsCi0gICAgICAicmVuZGVyVGFyZ2V0IjogImFsd2F5cyIs
CisgICAgICAicmVuZGVyVGFyZ2V0IjogIjEwXzAiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAi
Y2hlY2siLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5j
aWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAi
RFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1NJTlQiOgogICAgIHsKLSAgICAgICJ0ZXh0dXJlMkQi
OiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0dXJl
Q3ViZSI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUyRCI6ICIxMF8wIiwKKyAgICAgICJ0ZXh0
dXJlM0QiOiAiMTBfMCIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiMTBfMCIsCiAgICAgICAic2hh
ZGVyU2FtcGxlIjogIm5ldmVyIiwKLSAgICAgICJyZW5kZXJUYXJnZXQiOiAiYWx3YXlzIiwKKyAg
ICAgICJyZW5kZXJUYXJnZXQiOiAiMTBfMCIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVj
ayIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6
ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJ
X0ZPUk1BVF9SMzJHMzJCMzJfVFlQRUxFU1MiOgogICAgIHsKQEAgLTU4LDcgKzYzLDggQEAKICAg
ICAgICJzaGFkZXJTYW1wbGUiOiAibmV2ZXIiLAogICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZl
ciIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIsCi0gICAgICAiZGVwdGhTdGVuY2ls
IjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0
b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfRkxPQVQi
OgogICAgIHsKQEAgLTY4LDcgKzc0LDggQEAKICAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTFfMGNo
ZWNrIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAiY2hlY2siLAogICAgICAgIm11bHRpc2FtcGxl
UlQiOiAiY2hlY2siLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0
aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwK
ICAgICAiRFhHSV9GT1JNQVRfUjMyRzMyQjMyX1VJTlQiOgogICAgIHsKQEAgLTc4LDcgKzg1LDgg
QEAKICAgICAgICJzaGFkZXJTYW1wbGUiOiAibmV2ZXIiLAogICAgICAgInJlbmRlclRhcmdldCI6
ICJjaGVjayIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCi0gICAgICAiZGVwdGhT
dGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAi
bWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9SMzJHMzJCMzJf
U0lOVCI6CiAgICAgewpAQCAtODgsNyArOTYsOCBAQAogICAgICAgInNoYWRlclNhbXBsZSI6ICJu
ZXZlciIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogImNoZWNrIiwKICAgICAgICJtdWx0aXNhbXBs
ZVJUIjogImNoZWNrIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVw
dGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAgIH0s
CiAgICAgIkRYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9UWVBFTEVTUyI6CiAgICAgewpAQCAtOTgs
NTcgKzEwNyw2MyBAQAogICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCiAgICAgICAicmVu
ZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKLSAg
ICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVy
IiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFU
X1IxNkcxNkIxNkExNl9GTE9BVCI6CiAgICAgewogICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMi
LAogICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAogICAgICAgInRleHR1cmVDdWJlIjogImFs
d2F5cyIsCi0gICAgICAic2hhZGVyU2FtcGxlIjogIjEwXzAiLAorICAgICAgInNoYWRlclNhbXBs
ZSI6ICI5XzNjaGVja18xMF8wYWx3YXlzIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAiYWx3YXlz
IiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwi
OiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRv
R2VuIjogImFsd2F5cyIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5P
Uk0iOgogICAgIHsKICAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKICAgICAgICJ0ZXh0dXJl
M0QiOiAiYWx3YXlzIiwKICAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAotICAgICAgInNo
YWRlclNhbXBsZSI6ICIxMF8wIiwKKyAgICAgICJzaGFkZXJTYW1wbGUiOiAiYWx3YXlzIiwKICAg
ICAgICJyZW5kZXJUYXJnZXQiOiAiYWx3YXlzIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogImNo
ZWNrIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2ls
IjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogImFsd2F5cyIKICAgICB9LAogICAgICJE
WEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVCI6CiAgICAgewotICAgICAgInRleHR1cmUyRCI6
ICJhbHdheXMiLAotICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAotICAgICAgInRleHR1cmVD
dWJlIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZTJEIjogIjEwXzAiLAorICAgICAgInRleHR1
cmUzRCI6ICIxMF8wIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICIxMF8wIiwKICAgICAgICJzaGFk
ZXJTYW1wbGUiOiAibmV2ZXIiLAotICAgICAgInJlbmRlclRhcmdldCI6ICJhbHdheXMiLAorICAg
ICAgInJlbmRlclRhcmdldCI6ICIxMF8wIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNr
IiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjog
Im5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lf
Rk9STUFUX1IxNkcxNkIxNkExNl9TTk9STSI6CiAgICAgewotICAgICAgInRleHR1cmUyRCI6ICJh
bHdheXMiLAotICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAotICAgICAgInRleHR1cmVDdWJl
IjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZTJEIjogIjEwXzAiLAorICAgICAgInRleHR1cmUz
RCI6ICIxMF8wIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICIxMF8wIiwKICAgICAgICJzaGFkZXJT
YW1wbGUiOiAiMTBfMCIsCi0gICAgICAicmVuZGVyVGFyZ2V0IjogImFsd2F5cyIsCisgICAgICAi
cmVuZGVyVGFyZ2V0IjogIjEwXzAiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAot
ICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2
ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAiMTBfMCIKICAgICB9LAogICAgICJEWEdJX0ZPUk1B
VF9SMTZHMTZCMTZBMTZfU0lOVCI6CiAgICAgewotICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMi
LAotICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAotICAgICAgInRleHR1cmVDdWJlIjogImFs
d2F5cyIsCisgICAgICAidGV4dHVyZTJEIjogIjEwXzAiLAorICAgICAgInRleHR1cmUzRCI6ICIx
MF8wIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICIxMF8wIiwKICAgICAgICJzaGFkZXJTYW1wbGUi
OiAibmV2ZXIiLAotICAgICAgInJlbmRlclRhcmdldCI6ICJhbHdheXMiLAorICAgICAgInJlbmRl
clRhcmdldCI6ICIxMF8wIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwKLSAgICAg
ICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwK
KyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1Iz
MkczMl9UWVBFTEVTUyI6CiAgICAgewpAQCAtMTU4LDcgKzE3Myw4IEBACiAgICAgICAic2hhZGVy
U2FtcGxlIjogIm5ldmVyIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAogICAgICAg
Im11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIK
KyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2
ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FUIjoKICAgICB7CkBAIC0x
NjgsMzcgKzE4NCw0MSBAQAogICAgICAgInNoYWRlclNhbXBsZSI6ICIxMF8wY2hlY2sxMF8xYWx3
YXlzIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAiYWx3YXlzIiwKICAgICAgICJtdWx0aXNhbXBs
ZVJUIjogImNoZWNrIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVw
dGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIjEwXzAiCiAgICAgfSwK
ICAgICAiRFhHSV9GT1JNQVRfUjMyRzMyX1VJTlQiOgogICAgIHsKLSAgICAgICJ0ZXh0dXJlMkQi
OiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0dXJl
Q3ViZSI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUyRCI6ICIxMF8wIiwKKyAgICAgICJ0ZXh0
dXJlM0QiOiAiMTBfMCIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiMTBfMCIsCiAgICAgICAic2hh
ZGVyU2FtcGxlIjogIm5ldmVyIiwKLSAgICAgICJyZW5kZXJUYXJnZXQiOiAiYWx3YXlzIiwKKyAg
ICAgICJyZW5kZXJUYXJnZXQiOiAiMTBfMCIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVj
ayIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6
ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJ
X0ZPUk1BVF9SMzJHMzJfU0lOVCI6CiAgICAgewotICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMi
LAotICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAotICAgICAgInRleHR1cmVDdWJlIjogImFs
d2F5cyIsCisgICAgICAidGV4dHVyZTJEIjogIjEwXzAiLAorICAgICAgInRleHR1cmUzRCI6ICIx
MF8wIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICIxMF8wIiwKICAgICAgICJzaGFkZXJTYW1wbGUi
OiAibmV2ZXIiLAotICAgICAgInJlbmRlclRhcmdldCI6ICJhbHdheXMiLAorICAgICAgInJlbmRl
clRhcmdldCI6ICIxMF8wIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwKLSAgICAg
ICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwK
KyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1Iz
Mkc4WDI0X1RZUEVMRVNTIjoKICAgICB7Ci0gICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCisg
ICAgICAidGV4dHVyZTJEIjogIjEwXzAiLAogICAgICAgInRleHR1cmUzRCI6ICJuZXZlciIsCi0g
ICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICIxMF8w
IiwKICAgICAgICJzaGFkZXJTYW1wbGUiOiAibmV2ZXIiLAogICAgICAgInJlbmRlclRhcmdldCI6
ICJuZXZlciIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIsCi0gICAgICAiZGVwdGhT
dGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAi
bWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9EMzJfRkxPQVRf
UzhYMjRfVUlOVCI6CiAgICAgewpAQCAtMjA4LDcgKzIyOCw4IEBACiAgICAgICAic2hhZGVyU2Ft
cGxlIjogIm5ldmVyIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11
bHRpc2FtcGxlUlQiOiAiY2hlY2siLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJhbHdheXMiCisg
ICAgICAiZGVwdGhTdGVuY2lsIjogIjEwXzAiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIi
CiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfUjMyX0ZMT0FUX1g4WDI0X1RZUEVMRVNTIjoKICAg
ICB7CkBAIC0yMTgsNyArMjM5LDggQEAKICAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTBfMGNoZWNr
MTBfMWFsd2F5cyIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0
aXNhbXBsZVJUIjogIm5ldmVyIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAg
ICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgog
ICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1gzMl9UWVBFTEVTU19HOFgyNF9VSU5UIjoKICAgICB7
CkBAIC0yMjgsNDcgKzI1MCw1MiBAQAogICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCiAg
ICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5l
dmVyIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2ls
IjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRY
R0lfRk9STUFUX1IxMEcxMEIxMEEyX1RZUEVMRVNTIjoKICAgICB7Ci0gICAgICAidGV4dHVyZTJE
IjogImFsd2F5cyIsCi0gICAgICAidGV4dHVyZTNEIjogImFsd2F5cyIsCi0gICAgICAidGV4dHVy
ZUN1YmUiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlMkQiOiAiMTBfMCIsCisgICAgICAidGV4
dHVyZTNEIjogIjEwXzAiLAorICAgICAgInRleHR1cmVDdWJlIjogIjEwXzAiLAogICAgICAgInNo
YWRlclNhbXBsZSI6ICJuZXZlciIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAg
ICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2
ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjog
Im5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VOT1JNIjoKICAg
ICB7Ci0gICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCi0gICAgICAidGV4dHVyZTNEIjogImFs
d2F5cyIsCi0gICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlMkQi
OiAiMTBfMCIsCisgICAgICAidGV4dHVyZTNEIjogIjEwXzAiLAorICAgICAgInRleHR1cmVDdWJl
IjogIjEwXzAiLAogICAgICAgInNoYWRlclNhbXBsZSI6ICIxMF8wIiwKLSAgICAgICJyZW5kZXJU
YXJnZXQiOiAiYWx3YXlzIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAiMTBfMCIsCiAgICAgICAi
bXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgor
ICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICIxMF8w
IgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VJTlQiOgogICAgIHsKLSAg
ICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwK
LSAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUyRCI6ICIxMF8w
IiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAiMTBfMCIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiMTBf
MCIsCiAgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKLSAgICAgICJyZW5kZXJUYXJnZXQi
OiAiYWx3YXlzIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAiMTBfMCIsCiAgICAgICAibXVsdGlz
YW1wbGVSVCI6ICJjaGVjayIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAg
ImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAg
ICB9LAogICAgICJEWEdJX0ZPUk1BVF9SMTFHMTFCMTBfRkxPQVQiOgogICAgIHsKLSAgICAgICJ0
ZXh0dXJlMkQiOiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKLSAgICAg
ICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUyRCI6ICIxMF8wIiwKKyAg
ICAgICJ0ZXh0dXJlM0QiOiAiMTBfMCIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiMTBfMCIsCiAg
ICAgICAic2hhZGVyU2FtcGxlIjogIjEwXzAiLAotICAgICAgInJlbmRlclRhcmdldCI6ICJhbHdh
eXMiLAorICAgICAgInJlbmRlclRhcmdldCI6ICIxMF8wIiwKICAgICAgICJtdWx0aXNhbXBsZVJU
IjogImNoZWNrIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhT
dGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIjEwXzAiCiAgICAgfSwKICAg
ICAiRFhHSV9GT1JNQVRfUjhHOEI4QThfVFlQRUxFU1MiOgogICAgIHsKQEAgLTI3OCw1NyArMzA1
LDYzIEBACiAgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKICAgICAgICJyZW5kZXJUYXJn
ZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAotICAgICAgImRl
cHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAg
ICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfUjhHOEI4
QThfVU5PUk0iOgogICAgIHsKICAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKICAgICAgICJ0
ZXh0dXJlM0QiOiAiYWx3YXlzIiwKICAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAotICAg
ICAgInNoYWRlclNhbXBsZSI6ICIxMF8wIiwKKyAgICAgICJzaGFkZXJTYW1wbGUiOiAiYWx3YXlz
IiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAiYWx3YXlzIiwKICAgICAgICJtdWx0aXNhbXBsZVJU
IjogImNoZWNrIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhT
dGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogImFsd2F5cyIKICAgICB9LAog
ICAgICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCIjoKICAgICB7CiAgICAgICAidGV4
dHVyZTJEIjogImFsd2F5cyIsCiAgICAgICAidGV4dHVyZTNEIjogImFsd2F5cyIsCiAgICAgICAi
dGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKLSAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTBfMCIsCisg
ICAgICAic2hhZGVyU2FtcGxlIjogImFsd2F5cyIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogImFs
d2F5cyIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCi0gICAgICAiZGVwdGhTdGVu
Y2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlw
QXV0b0dlbiI6ICJhbHdheXMiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlO
VCI6CiAgICAgewotICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAotICAgICAgInRleHR1cmUz
RCI6ICJhbHdheXMiLAotICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAidGV4
dHVyZTJEIjogIjEwXzAiLAorICAgICAgInRleHR1cmUzRCI6ICIxMF8wIiwKKyAgICAgICJ0ZXh0
dXJlQ3ViZSI6ICIxMF8wIiwKICAgICAgICJzaGFkZXJTYW1wbGUiOiAibmV2ZXIiLAotICAgICAg
InJlbmRlclRhcmdldCI6ICJhbHdheXMiLAorICAgICAgInJlbmRlclRhcmdldCI6ICIxMF8wIiwK
ICAgICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAi
bmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2Vu
IjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1I4RzhCOEE4X1NOT1JNIjoKICAg
ICB7CiAgICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCiAgICAgICAidGV4dHVyZTNEIjogImFs
d2F5cyIsCiAgICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKLSAgICAgICJzaGFkZXJTYW1w
bGUiOiAiMTBfMCIsCisgICAgICAic2hhZGVyU2FtcGxlIjogImFsd2F5cyIsCiAgICAgICAicmVu
ZGVyVGFyZ2V0IjogImFsd2F5cyIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCi0g
ICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZl
ciIsCisgICAgICAibWlwQXV0b0dlbiI6ICIxMF8wIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFU
X1I4RzhCOEE4X1NJTlQiOgogICAgIHsKLSAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKLSAg
ICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMi
LAorICAgICAgInRleHR1cmUyRCI6ICIxMF8wIiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAiMTBfMCIs
CisgICAgICAidGV4dHVyZUN1YmUiOiAiMTBfMCIsCiAgICAgICAic2hhZGVyU2FtcGxlIjogIm5l
dmVyIiwKLSAgICAgICJyZW5kZXJUYXJnZXQiOiAiYWx3YXlzIiwKKyAgICAgICJyZW5kZXJUYXJn
ZXQiOiAiMTBfMCIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCi0gICAgICAiZGVw
dGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAg
ICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9SMTZHMTZf
VFlQRUxFU1MiOgogICAgIHsKQEAgLTMzOCw3ICszNzEsOCBAQAogICAgICAgInNoYWRlclNhbXBs
ZSI6ICJuZXZlciIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0
aXNhbXBsZVJUIjogIm5ldmVyIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAg
ICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgog
ICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1IxNkcxNl9GTE9BVCI6CiAgICAgewpAQCAtMzQ4LDU3
ICszODIsNjMgQEAKICAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTBfMCIsCiAgICAgICAicmVuZGVy
VGFyZ2V0IjogImFsd2F5cyIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCi0gICAg
ICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIs
CisgICAgICAibWlwQXV0b0dlbiI6ICJhbHdheXMiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRf
UjE2RzE2X1VOT1JNIjoKICAgICB7CiAgICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCiAgICAg
ICAidGV4dHVyZTNEIjogImFsd2F5cyIsCiAgICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwK
LSAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTBfMCIsCisgICAgICAic2hhZGVyU2FtcGxlIjogImFs
d2F5cyIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogImFsd2F5cyIsCiAgICAgICAibXVsdGlzYW1w
bGVSVCI6ICJjaGVjayIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRl
cHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJhbHdheXMiCiAgICAg
fSwKICAgICAiRFhHSV9GT1JNQVRfUjE2RzE2X1VJTlQiOgogICAgIHsKLSAgICAgICJ0ZXh0dXJl
MkQiOiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0
dXJlQ3ViZSI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUyRCI6ICIxMF8wIiwKKyAgICAgICJ0
ZXh0dXJlM0QiOiAiMTBfMCIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiMTBfMCIsCiAgICAgICAi
c2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKLSAgICAgICJyZW5kZXJUYXJnZXQiOiAiYWx3YXlzIiwK
KyAgICAgICJyZW5kZXJUYXJnZXQiOiAiMTBfMCIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJj
aGVjayIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNp
bCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJE
WEdJX0ZPUk1BVF9SMTZHMTZfU05PUk0iOgogICAgIHsKICAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3
YXlzIiwKICAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKICAgICAgICJ0ZXh0dXJlQ3ViZSI6
ICJhbHdheXMiLAotICAgICAgInNoYWRlclNhbXBsZSI6ICIxMF8wIiwKKyAgICAgICJzaGFkZXJT
YW1wbGUiOiAiYWx3YXlzIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAiYWx3YXlzIiwKICAgICAg
ICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIi
CisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIjEw
XzAiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQiOgogICAgIHsKLSAgICAg
ICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKLSAg
ICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUyRCI6ICIxMF8wIiwK
KyAgICAgICJ0ZXh0dXJlM0QiOiAiMTBfMCIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiMTBfMCIs
CiAgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKLSAgICAgICJyZW5kZXJUYXJnZXQiOiAi
YWx3YXlzIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAiMTBfMCIsCiAgICAgICAibXVsdGlzYW1w
bGVSVCI6ICJjaGVjayIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRl
cHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9
LAogICAgICJEWEdJX0ZPUk1BVF9SMzJfVFlQRUxFU1MiOgogICAgIHsKLSAgICAgICJ0ZXh0dXJl
MkQiOiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0
dXJlQ3ViZSI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUyRCI6ICIxMF8wIiwKKyAgICAgICJ0
ZXh0dXJlM0QiOiAiMTBfMCIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiMTBfMCIsCiAgICAgICAi
c2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAog
ICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJu
ZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4i
OiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfRDMyX0ZMT0FUIjoKICAgICB7CkBA
IC00MDgsNyArNDQ4LDggQEAKICAgICAgICJzaGFkZXJTYW1wbGUiOiAibmV2ZXIiLAogICAgICAg
InJlbmRlclRhcmdldCI6ICJuZXZlciIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIs
Ci0gICAgICAiZGVwdGhTdGVuY2lsIjogImFsd2F5cyIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAi
MTBfMCIsCisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZP
Uk1BVF9SMzJfRkxPQVQiOgogICAgIHsKQEAgLTQxOCwyNyArNDU5LDMwIEBACiAgICAgICAic2hh
ZGVyU2FtcGxlIjogIjEwXzBjaGVjazEwXzFhbHdheXMiLAogICAgICAgInJlbmRlclRhcmdldCI6
ICJhbHdheXMiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAotICAgICAgImRlcHRo
U3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAg
Im1pcEF1dG9HZW4iOiAiYWx3YXlzIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1IzMl9VSU5U
IjoKICAgICB7Ci0gICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCi0gICAgICAidGV4dHVyZTNE
IjogImFsd2F5cyIsCi0gICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0
dXJlMkQiOiAiMTBfMCIsCisgICAgICAidGV4dHVyZTNEIjogIjEwXzAiLAorICAgICAgInRleHR1
cmVDdWJlIjogIjEwXzAiLAogICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCi0gICAgICAi
cmVuZGVyVGFyZ2V0IjogImFsd2F5cyIsCisgICAgICAicmVuZGVyVGFyZ2V0IjogIjEwXzAiLAog
ICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJu
ZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4i
OiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfUjMyX1NJTlQiOgogICAgIHsKLSAg
ICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwK
LSAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUyRCI6ICIxMF8w
IiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAiMTBfMCIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiMTBf
MCIsCiAgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKLSAgICAgICJyZW5kZXJUYXJnZXQi
OiAiYWx3YXlzIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAiMTBfMCIsCiAgICAgICAibXVsdGlz
YW1wbGVSVCI6ICJjaGVjayIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAg
ImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAg
ICB9LAogICAgICJEWEdJX0ZPUk1BVF9SMjRHOF9UWVBFTEVTUyI6CiAgICAgewpAQCAtNDQ4LDcg
KzQ5Miw4IEBACiAgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKICAgICAgICJyZW5kZXJU
YXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAotICAgICAg
ImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAor
ICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfRDI0
X1VOT1JNX1M4X1VJTlQiOgogICAgIHsKQEAgLTQ2OCw3ICs1MTMsOCBAQAogICAgICAgInNoYWRl
clNhbXBsZSI6ICIxMF8wY2hlY2sxMF8xYWx3YXlzIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAi
bmV2ZXIiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAotICAgICAgImRlcHRoU3Rl
bmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1p
cEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfWDI0X1RZUEVMRVNT
X0c4X1VJTlQiOgogICAgIHsKQEAgLTQ3OCw3ICs1MjQsOCBAQAogICAgICAgInNoYWRlclNhbXBs
ZSI6ICJuZXZlciIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0
aXNhbXBsZVJUIjogIm5ldmVyIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAg
ICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgog
ICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1I4RzhfVFlQRUxFU1MiOgogICAgIHsKQEAgLTQ4OCw0
NyArNTM1LDUyIEBACiAgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKICAgICAgICJyZW5k
ZXJUYXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAotICAg
ICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIi
LAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRf
UjhHOF9VTk9STSI6CiAgICAgewotICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAotICAgICAg
InRleHR1cmUzRCI6ICJhbHdheXMiLAotICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIsCi0g
ICAgICAic2hhZGVyU2FtcGxlIjogIjEwXzAiLAotICAgICAgInJlbmRlclRhcmdldCI6ICJhbHdh
eXMiLAorICAgICAgInRleHR1cmUyRCI6ICIxMF8wIiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAiMTBf
MCIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiMTBfMCIsCisgICAgICAic2hhZGVyU2FtcGxlIjog
IjlfM2NoZWNrXzEwXzBhbHdheXMiLAorICAgICAgInJlbmRlclRhcmdldCI6ICI5XzNjaGVja18x
MF8wYWx3YXlzIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwKLSAgICAgICJkZXB0
aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAg
ICJtaXBBdXRvR2VuIjogIjEwXzAiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfUjhHOF9VSU5U
IjoKICAgICB7Ci0gICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCi0gICAgICAidGV4dHVyZTNE
IjogImFsd2F5cyIsCi0gICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0
dXJlMkQiOiAiMTBfMCIsCisgICAgICAidGV4dHVyZTNEIjogIjEwXzAiLAorICAgICAgInRleHR1
cmVDdWJlIjogIjEwXzAiLAogICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCi0gICAgICAi
cmVuZGVyVGFyZ2V0IjogImFsd2F5cyIsCisgICAgICAicmVuZGVyVGFyZ2V0IjogIjEwXzAiLAog
ICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJu
ZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4i
OiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfUjhHOF9TTk9STSI6CiAgICAgewog
ICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAotICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMi
LAotICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIsCi0gICAgICAic2hhZGVyU2FtcGxlIjog
IjEwXzAiLAotICAgICAgInJlbmRlclRhcmdldCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUz
RCI6ICIxMF8wIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICIxMF8wIiwKKyAgICAgICJzaGFkZXJT
YW1wbGUiOiAiYWx3YXlzIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAiMTBfMCIsCiAgICAgICAi
bXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgor
ICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICIxMF8w
IgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1I4RzhfU0lOVCI6CiAgICAgewotICAgICAgInRl
eHR1cmUyRCI6ICJhbHdheXMiLAotICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAotICAgICAg
InRleHR1cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZTJEIjogIjEwXzAiLAorICAg
ICAgInRleHR1cmUzRCI6ICIxMF8wIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICIxMF8wIiwKICAg
ICAgICJzaGFkZXJTYW1wbGUiOiAibmV2ZXIiLAotICAgICAgInJlbmRlclRhcmdldCI6ICJhbHdh
eXMiLAorICAgICAgInJlbmRlclRhcmdldCI6ICIxMF8wIiwKICAgICAgICJtdWx0aXNhbXBsZVJU
IjogImNoZWNrIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhT
dGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAg
ICAgIkRYR0lfRk9STUFUX1IxNl9UWVBFTEVTUyI6CiAgICAgewpAQCAtNTM4LDE3ICs1OTAsMTkg
QEAKICAgICAgICJzaGFkZXJTYW1wbGUiOiAibmV2ZXIiLAogICAgICAgInJlbmRlclRhcmdldCI6
ICJuZXZlciIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIsCi0gICAgICAiZGVwdGhT
dGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAi
bWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9SMTZfRkxPQVQi
OgogICAgIHsKLSAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0dXJlM0Qi
OiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAorICAgICAgInRleHR1
cmUyRCI6ICIxMF8wIiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAiMTBfMCIsCisgICAgICAidGV4dHVy
ZUN1YmUiOiAiMTBfMCIsCiAgICAgICAic2hhZGVyU2FtcGxlIjogIjEwXzAiLAotICAgICAgInJl
bmRlclRhcmdldCI6ICJhbHdheXMiLAorICAgICAgInJlbmRlclRhcmdldCI6ICIxMF8wIiwKICAg
ICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2
ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjog
IjEwXzAiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfRDE2X1VOT1JNIjoKICAgICB7CkBAIC01
NTgsNDcgKzYxMiw1MiBAQAogICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCiAgICAgICAi
cmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwK
LSAgICAgICJkZXB0aFN0ZW5jaWwiOiAiYWx3YXlzIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJh
bHdheXMiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9G
T1JNQVRfUjE2X1VOT1JNIjoKICAgICB7CiAgICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCiAg
ICAgICAidGV4dHVyZTNEIjogImFsd2F5cyIsCiAgICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlz
IiwKLSAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTBfMCIsCi0gICAgICAicmVuZGVyVGFyZ2V0Ijog
ImFsd2F5cyIsCisgICAgICAic2hhZGVyU2FtcGxlIjogImFsd2F5cyIsCisgICAgICAicmVuZGVy
VGFyZ2V0IjogIjEwXzAiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAotICAgICAg
ImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAor
ICAgICAgIm1pcEF1dG9HZW4iOiAiMTBfMCIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9SMTZf
VUlOVCI6CiAgICAgewotICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAotICAgICAgInRleHR1
cmUzRCI6ICJhbHdheXMiLAotICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAi
dGV4dHVyZTJEIjogIjEwXzAiLAorICAgICAgInRleHR1cmUzRCI6ICIxMF8wIiwKKyAgICAgICJ0
ZXh0dXJlQ3ViZSI6ICIxMF8wIiwKICAgICAgICJzaGFkZXJTYW1wbGUiOiAibmV2ZXIiLAotICAg
ICAgInJlbmRlclRhcmdldCI6ICJhbHdheXMiLAorICAgICAgInJlbmRlclRhcmdldCI6ICIxMF8w
IiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwi
OiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRv
R2VuIjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1IxNl9TTk9STSI6CiAgICAg
ewotICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAotICAgICAgInRleHR1cmUzRCI6ICJhbHdh
eXMiLAotICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZTJEIjog
IjEwXzAiLAorICAgICAgInRleHR1cmUzRCI6ICIxMF8wIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6
ICIxMF8wIiwKICAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTBfMCIsCi0gICAgICAicmVuZGVyVGFy
Z2V0IjogImFsd2F5cyIsCisgICAgICAicmVuZGVyVGFyZ2V0IjogIjEwXzAiLAogICAgICAgIm11
bHRpc2FtcGxlUlQiOiAiY2hlY2siLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAg
ICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAiMTBfMCIK
ICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9SMTZfU0lOVCI6CiAgICAgewotICAgICAgInRleHR1
cmUyRCI6ICJhbHdheXMiLAotICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAotICAgICAgInRl
eHR1cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZTJEIjogIjEwXzAiLAorICAgICAg
InRleHR1cmUzRCI6ICIxMF8wIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICIxMF8wIiwKICAgICAg
ICJzaGFkZXJTYW1wbGUiOiAibmV2ZXIiLAotICAgICAgInJlbmRlclRhcmdldCI6ICJhbHdheXMi
LAorICAgICAgInJlbmRlclRhcmdldCI6ICIxMF8wIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjog
ImNoZWNrIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVu
Y2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAgICAg
IkRYR0lfRk9STUFUX1I4X1RZUEVMRVNTIjoKICAgICB7CkBAIC02MDgsNDcgKzY2Nyw1MiBAQAog
ICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5l
dmVyIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKLSAgICAgICJkZXB0aFN0ZW5j
aWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBB
dXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1I4X1VOT1JNIjoKICAg
ICB7CiAgICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCiAgICAgICAidGV4dHVyZTNEIjogImFs
d2F5cyIsCiAgICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKLSAgICAgICJzaGFkZXJTYW1w
bGUiOiAiMTBfMCIsCi0gICAgICAicmVuZGVyVGFyZ2V0IjogImFsd2F5cyIsCisgICAgICAic2hh
ZGVyU2FtcGxlIjogImFsd2F5cyIsCisgICAgICAicmVuZGVyVGFyZ2V0IjogIjlfM2NoZWNrXzEw
XzBhbHdheXMiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAotICAgICAgImRlcHRo
U3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAg
Im1pcEF1dG9HZW4iOiAiMTBfMCIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9SOF9VSU5UIjoK
ICAgICB7Ci0gICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCi0gICAgICAidGV4dHVyZTNEIjog
ImFsd2F5cyIsCi0gICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJl
MkQiOiAiMTBfMCIsCisgICAgICAidGV4dHVyZTNEIjogIjEwXzAiLAorICAgICAgInRleHR1cmVD
dWJlIjogIjEwXzAiLAogICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCi0gICAgICAicmVu
ZGVyVGFyZ2V0IjogImFsd2F5cyIsCisgICAgICAicmVuZGVyVGFyZ2V0IjogIjEwXzAiLAogICAg
ICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZl
ciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAi
bmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfUjhfU05PUk0iOgogICAgIHsKLSAgICAg
ICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKLSAg
ICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUyRCI6ICIxMF8wIiwK
KyAgICAgICJ0ZXh0dXJlM0QiOiAiMTBfMCIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiMTBfMCIs
CiAgICAgICAic2hhZGVyU2FtcGxlIjogIjEwXzAiLAotICAgICAgInJlbmRlclRhcmdldCI6ICJh
bHdheXMiLAorICAgICAgInJlbmRlclRhcmdldCI6ICIxMF8wIiwKICAgICAgICJtdWx0aXNhbXBs
ZVJUIjogImNoZWNrIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVw
dGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIjEwXzAiCiAgICAgfSwK
ICAgICAiRFhHSV9GT1JNQVRfUjhfU0lOVCI6CiAgICAgewotICAgICAgInRleHR1cmUyRCI6ICJh
bHdheXMiLAotICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAotICAgICAgInRleHR1cmVDdWJl
IjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZTJEIjogIjEwXzAiLAorICAgICAgInRleHR1cmUz
RCI6ICIxMF8wIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICIxMF8wIiwKICAgICAgICJzaGFkZXJT
YW1wbGUiOiAibmV2ZXIiLAotICAgICAgInJlbmRlclRhcmdldCI6ICJhbHdheXMiLAorICAgICAg
InJlbmRlclRhcmdldCI6ICIxMF8wIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwK
LSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5l
dmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9S
TUFUX0E4X1VOT1JNIjoKICAgICB7CkBAIC02NTgsNyArNzIyLDggQEAKICAgICAgICJzaGFkZXJT
YW1wbGUiOiAiMTBfMCIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogImFsd2F5cyIsCiAgICAgICAi
bXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgor
ICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICIxMF8w
IgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1IxX1VOT1JNIjoKICAgICB7CkBAIC02NjgsMTcg
KzczMywxOSBAQAogICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCiAgICAgICAicmVuZGVy
VGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKLSAgICAg
ICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwK
KyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1I5
RzlCOUU1X1NIQVJFREVYUCI6CiAgICAgewotICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAot
ICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAotICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5
cyIsCisgICAgICAidGV4dHVyZTJEIjogIjEwXzAiLAorICAgICAgInRleHR1cmUzRCI6ICIxMF8w
IiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICIxMF8wIiwKICAgICAgICJzaGFkZXJTYW1wbGUiOiAi
MTBfMCIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0aXNhbXBs
ZVJUIjogIm5ldmVyIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVw
dGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAgIH0s
CiAgICAgIkRYR0lfRk9STUFUX1I4RzhfQjhHOF9VTk9STSI6CiAgICAgewpAQCAtNjg4LDcgKzc1
NSw4IEBACiAgICAgICAic2hhZGVyU2FtcGxlIjogIjEwXzAiLAogICAgICAgInJlbmRlclRhcmdl
dCI6ICJuZXZlciIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIsCi0gICAgICAiZGVw
dGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAg
ICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9HOFI4X0c4
QjhfVU5PUk0iOgogICAgIHsKQEAgLTY5OCw3ICs3NjYsOCBAQAogICAgICAgInNoYWRlclNhbXBs
ZSI6ICIxMF8wIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRp
c2FtcGxlUlQiOiAibmV2ZXIiLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAg
ICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAg
ICAgfSwKICAgICAiRFhHSV9GT1JNQVRfQkMxX1RZUEVMRVNTIjoKICAgICB7CkBAIC03MDgsMTcg
Kzc3NywxOSBAQAogICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCiAgICAgICAicmVuZGVy
VGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKLSAgICAg
ICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwK
KyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX0JD
MV9VTk9STSI6CiAgICAgewogICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAogICAgICAgInRl
eHR1cmUzRCI6ICJhbHdheXMiLAogICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIsCi0gICAg
ICAic2hhZGVyU2FtcGxlIjogIjEwXzAiLAorICAgICAgInNoYWRlclNhbXBsZSI6ICJhbHdheXMi
LAogICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6
ICJuZXZlciIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3Rl
bmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAg
ICJEWEdJX0ZPUk1BVF9CQzFfVU5PUk1fU1JHQiI6CiAgICAgewpAQCAtNzI4LDcgKzc5OSw4IEBA
CiAgICAgICAic2hhZGVyU2FtcGxlIjogIjEwXzAiLAogICAgICAgInJlbmRlclRhcmdldCI6ICJu
ZXZlciIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIsCi0gICAgICAiZGVwdGhTdGVu
Y2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlw
QXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9CQzJfVFlQRUxFU1Mi
OgogICAgIHsKQEAgLTczOCwxNyArODEwLDE5IEBACiAgICAgICAic2hhZGVyU2FtcGxlIjogIm5l
dmVyIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRpc2FtcGxl
UlQiOiAibmV2ZXIiLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0
aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwK
ICAgICAiRFhHSV9GT1JNQVRfQkMyX1VOT1JNIjoKICAgICB7CiAgICAgICAidGV4dHVyZTJEIjog
ImFsd2F5cyIsCiAgICAgICAidGV4dHVyZTNEIjogImFsd2F5cyIsCiAgICAgICAidGV4dHVyZUN1
YmUiOiAiYWx3YXlzIiwKLSAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTBfMCIsCisgICAgICAic2hh
ZGVyU2FtcGxlIjogImFsd2F5cyIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAg
ICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2
ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjog
Im5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX0JDMl9VTk9STV9TUkdCIjoKICAgICB7
CkBAIC03NTgsNyArODMyLDggQEAKICAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTBfMCIsCiAgICAg
ICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVy
IiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjog
Im5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lf
Rk9STUFUX0JDM19UWVBFTEVTUyI6CiAgICAgewpAQCAtNzY4LDE3ICs4NDMsMTkgQEAKICAgICAg
ICJzaGFkZXJTYW1wbGUiOiAibmV2ZXIiLAogICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIs
CiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjog
Im5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dl
biI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9CQzNfVU5PUk0iOgogICAgIHsK
ICAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKICAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlz
IiwKICAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAotICAgICAgInNoYWRlclNhbXBsZSI6
ICIxMF8wIiwKKyAgICAgICJzaGFkZXJTYW1wbGUiOiAiYWx3YXlzIiwKICAgICAgICJyZW5kZXJU
YXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAotICAgICAg
ImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAor
ICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfQkMz
X1VOT1JNX1NSR0IiOgogICAgIHsKQEAgLTc4OCw3ICs4NjUsOCBAQAogICAgICAgInNoYWRlclNh
bXBsZSI6ICIxMF8wIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11
bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAg
ICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIi
CiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfQkM0X1RZUEVMRVNTIjoKICAgICB7CkBAIC03OTgs
NyArODc2LDggQEAKICAgICAgICJzaGFkZXJTYW1wbGUiOiAibmV2ZXIiLAogICAgICAgInJlbmRl
clRhcmdldCI6ICJuZXZlciIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIsCi0gICAg
ICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIs
CisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9C
QzRfVU5PUk0iOgogICAgIHsKQEAgLTgwOCw3ICs4ODcsOCBAQAogICAgICAgInNoYWRlclNhbXBs
ZSI6ICIxMF8wIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRp
c2FtcGxlUlQiOiAibmV2ZXIiLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAg
ICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAg
ICAgfSwKICAgICAiRFhHSV9GT1JNQVRfQkM0X1NOT1JNIjoKICAgICB7CkBAIC04MTgsNyArODk4
LDggQEAKICAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTBfMCIsCiAgICAgICAicmVuZGVyVGFyZ2V0
IjogIm5ldmVyIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKLSAgICAgICJkZXB0
aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAg
ICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX0JDNV9UWVBF
TEVTUyI6CiAgICAgewpAQCAtODI4LDcgKzkwOSw4IEBACiAgICAgICAic2hhZGVyU2FtcGxlIjog
Im5ldmVyIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRpc2Ft
cGxlUlQiOiAibmV2ZXIiLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJk
ZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAg
fSwKICAgICAiRFhHSV9GT1JNQVRfQkM1X1VOT1JNIjoKICAgICB7CkBAIC04MzgsNyArOTIwLDgg
QEAKICAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTBfMCIsCiAgICAgICAicmVuZGVyVGFyZ2V0Ijog
Im5ldmVyIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKLSAgICAgICJkZXB0aFN0
ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJt
aXBBdXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX0JDNV9TTk9STSI6
CiAgICAgewpAQCAtODQ4LDcgKzkzMSw4IEBACiAgICAgICAic2hhZGVyU2FtcGxlIjogIjEwXzAi
LAogICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6
ICJuZXZlciIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3Rl
bmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAg
ICJEWEdJX0ZPUk1BVF9CNUc2UjVfVU5PUk0iOgogICAgIHsKQEAgLTg1OCw3ICs5NDIsOCBAQAog
ICAgICAgInNoYWRlclNhbXBsZSI6ICJkeGdpMV8yIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAi
ZHhnaTFfMiIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCi0gICAgICAiZGVwdGhT
dGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAi
bWlwQXV0b0dlbiI6ICJkeGdpMV8yIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX0I1RzVSNUEx
X1VOT1JNIjoKICAgICB7CkBAIC04NjgsMTcgKzk1MywxOSBAQAogICAgICAgInNoYWRlclNhbXBs
ZSI6ICJkeGdpMV8yIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAiY2hlY2siLAogICAgICAgIm11
bHRpc2FtcGxlUlQiOiAiY2hlY2siLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAg
ICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAiZHhnaTFf
MiIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSI6CiAgICAgewogICAg
ICAgInRleHR1cmUyRCI6ICJjaGVjayIsCiAgICAgICAidGV4dHVyZTNEIjogImNoZWNrIiwKICAg
ICAgICJ0ZXh0dXJlQ3ViZSI6ICJjaGVjayIsCi0gICAgICAic2hhZGVyU2FtcGxlIjogIjEwXzBj
aGVjazExXzBhbHdheXMiLAotICAgICAgInJlbmRlclRhcmdldCI6ICIxMF8wY2hlY2sxMV8wYWx3
YXlzIiwKKyAgICAgICJzaGFkZXJTYW1wbGUiOiAiOV8zYWx3YXlzXzEwXzBjaGVjazExXzBhbHdh
eXMiLAorICAgICAgInJlbmRlclRhcmdldCI6ICI5XzNhbHdheXNfMTBfMGNoZWNrMTFfMGFsd2F5
cyIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCi0gICAgICAiZGVwdGhTdGVuY2ls
IjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0
b0dlbiI6ICJhbHdheXMiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfQjhHOFI4WDhfVU5PUk0i
OgogICAgIHsKQEAgLTg4OCw3ICs5NzUsOCBAQAogICAgICAgInNoYWRlclNhbXBsZSI6ICIxMF8w
Y2hlY2sxMV8wYWx3YXlzIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAiMTFfMCIsCiAgICAgICAi
bXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgor
ICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZl
ciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9SMTBHMTBCMTBfWFJfQklBU19BMl9VTk9STSI6
CiAgICAgewpAQCAtODk4LDcgKzk4Niw4IEBACiAgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVy
IiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRpc2FtcGxlUlQi
OiAibmV2ZXIiLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0
ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAg
ICAiRFhHSV9GT1JNQVRfQjhHOFI4QThfVFlQRUxFU1MiOgogICAgIHsKQEAgLTkwOCw3ICs5OTcs
OCBAQAogICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCiAgICAgICAicmVuZGVyVGFyZ2V0
IjogIm5ldmVyIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKLSAgICAgICJkZXB0
aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAg
ICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX0I4RzhSOEE4
X1VOT1JNX1NSR0IiOgogICAgIHsKQEAgLTkxOCw3ICsxMDA4LDggQEAKICAgICAgICJzaGFkZXJT
YW1wbGUiOiAiMTBfMGNoZWNrMTFfMGFsd2F5cyIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIjEx
XzAiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAotICAgICAgImRlcHRoU3RlbmNp
bCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1
dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfQjhHOFI4WDhfVFlQRUxF
U1MiOgogICAgIHsKQEAgLTkyOCw3ICsxMDE5LDggQEAKICAgICAgICJzaGFkZXJTYW1wbGUiOiAi
bmV2ZXIiLAogICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIsCiAgICAgICAibXVsdGlzYW1w
bGVSVCI6ICJuZXZlciIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRl
cHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9
LAogICAgICJEWEdJX0ZPUk1BVF9COEc4UjhYOF9VTk9STV9TUkdCIjoKICAgICB7CkBAIC05Mzgs
NyArMTAzMCw4IEBACiAgICAgICAic2hhZGVyU2FtcGxlIjogIjEwXzBjaGVjazExXzBhbHdheXMi
LAogICAgICAgInJlbmRlclRhcmdldCI6ICIxMV8wIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjog
ImNoZWNrIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVu
Y2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAgICAg
IkRYR0lfRk9STUFUX0JDNkhfVFlQRUxFU1MiOgogICAgIHsKQEAgLTk0OCw3ICsxMDQxLDggQEAK
ICAgICAgICJzaGFkZXJTYW1wbGUiOiAibmV2ZXIiLAogICAgICAgInJlbmRlclRhcmdldCI6ICJu
ZXZlciIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIsCi0gICAgICAiZGVwdGhTdGVu
Y2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlw
QXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9CQzZIX1VGMTYiOgog
ICAgIHsKQEAgLTk1OCw3ICsxMDUyLDggQEAKICAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTFfMCIs
CiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjog
Im5ldmVyIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVu
Y2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAgICAg
IkRYR0lfRk9STUFUX0JDNkhfU0YxNiI6CiAgICAgewpAQCAtOTY4LDcgKzEwNjMsOCBAQAogICAg
ICAgInNoYWRlclNhbXBsZSI6ICIxMV8wIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIi
LAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAotICAgICAgImRlcHRoU3RlbmNpbCI6
ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9H
ZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfQkM3X1RZUEVMRVNTIjoKICAg
ICB7CkBAIC05NzgsNyArMTA3NCw4IEBACiAgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwK
ICAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAi
bmV2ZXIiLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5j
aWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAi
RFhHSV9GT1JNQVRfQkM3X1VOT1JNIjoKICAgICB7CkBAIC05ODgsNyArMTA4NSw4IEBACiAgICAg
ICAic2hhZGVyU2FtcGxlIjogIjExXzAiLAogICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIs
CiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjog
Im5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dl
biI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9CQzdfVU5PUk1fU1JHQiI6CiAg
ICAgewpAQCAtOTk4LDcgKzEwOTYsOCBAQAogICAgICAgInNoYWRlclNhbXBsZSI6ICIxMV8wIiwK
ICAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAi
bmV2ZXIiLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5j
aWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAi
RFhHSV9GT1JNQVRfQVlVViI6CiAgICAgewpAQCAtMTAwOCw3ICsxMTA3LDggQEAKICAgICAgICJz
aGFkZXJTYW1wbGUiOiAiMTFfMSIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIjExXzEiLAogICAg
ICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZl
ciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAi
bmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfWTQxMCI6CiAgICAgewpAQCAtMTAxOCw3
ICsxMTE4LDggQEAKICAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTFfMSIsCiAgICAgICAicmVuZGVy
VGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKLSAgICAg
ICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwK
KyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1k0
MTYiOgogICAgIHsKQEAgLTEwMjgsNyArMTEyOSw4IEBACiAgICAgICAic2hhZGVyU2FtcGxlIjog
IjExXzEiLAogICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIsCiAgICAgICAibXVsdGlzYW1w
bGVSVCI6ICJuZXZlciIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRl
cHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9
LAogICAgICJEWEdJX0ZPUk1BVF9OVjEyIjoKICAgICB7CkBAIC0xMDM4LDcgKzExNDAsOCBAQAog
ICAgICAgInNoYWRlclNhbXBsZSI6ICIxMV8xIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAiMTFf
MSIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCi0gICAgICAiZGVwdGhTdGVuY2ls
IjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0
b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9QMDEwIjoKICAgICB7CkBA
IC0xMDQ4LDcgKzExNTEsOCBAQAogICAgICAgInNoYWRlclNhbXBsZSI6ICIxMV8xIiwKICAgICAg
ICJyZW5kZXJUYXJnZXQiOiAiMTFfMSIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIs
Ci0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJu
ZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZP
Uk1BVF9QMDE2IjoKICAgICB7CkBAIC0xMDU4LDcgKzExNjIsOCBAQAogICAgICAgInNoYWRlclNh
bXBsZSI6ICIxMV8xIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAiMTFfMSIsCiAgICAgICAibXVs
dGlzYW1wbGVSVCI6ICJjaGVjayIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAg
ICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIK
ICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF80MjBfT1BBUVVFIjoKICAgICB7CkBAIC0xMDY4LDcg
KzExNzMsOCBAQAogICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCiAgICAgICAicmVuZGVy
VGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKLSAgICAg
ICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwK
KyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1lV
WTIiOgogICAgIHsKQEAgLTEwNzgsNyArMTE4NCw4IEBACiAgICAgICAic2hhZGVyU2FtcGxlIjog
IjExXzEiLAogICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIsCiAgICAgICAibXVsdGlzYW1w
bGVSVCI6ICJuZXZlciIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRl
cHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9
LAogICAgICJEWEdJX0ZPUk1BVF9ZMjEwIjoKICAgICB7CkBAIC0xMDg4LDcgKzExOTUsOCBAQAog
ICAgICAgInNoYWRlclNhbXBsZSI6ICIxMV8xIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2
ZXIiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAotICAgICAgImRlcHRoU3RlbmNp
bCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1
dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfWTIxNiI6CiAgICAgewpA
QCAtMTA5OCw3ICsxMjA2LDggQEAKICAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTFfMSIsCiAgICAg
ICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVy
IiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjog
Im5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lf
Rk9STUFUX05WMTEiOgogICAgIHsKQEAgLTExMDgsNyArMTIxNyw4IEBACiAgICAgICAic2hhZGVy
U2FtcGxlIjogIjExXzEiLAogICAgICAgInJlbmRlclRhcmdldCI6ICIxMV8xIiwKICAgICAgICJt
dWx0aXNhbXBsZVJUIjogImNoZWNrIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisg
ICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVy
IgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX0FJNDQiOgogICAgIHsKQEAgLTExMTgsNyArMTIy
OCw4IEBACiAgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKICAgICAgICJyZW5kZXJUYXJn
ZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAotICAgICAgImRl
cHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAg
ICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfSUE0NCI6
CiAgICAgewpAQCAtMTEyOCw3ICsxMjM5LDggQEAKICAgICAgICJzaGFkZXJTYW1wbGUiOiAibmV2
ZXIiLAogICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIsCiAgICAgICAibXVsdGlzYW1wbGVS
VCI6ICJuZXZlciIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRo
U3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAog
ICAgICJEWEdJX0ZPUk1BVF9QOCI6CiAgICAgewpAQCAtMTEzOCw3ICsxMjUwLDggQEAKICAgICAg
ICJzaGFkZXJTYW1wbGUiOiAibmV2ZXIiLAogICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIs
CiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjog
Im5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dl
biI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9BOFA4IjoKICAgICB7CkBAIC0x
MTQ4LDcgKzEyNjEsOCBAQAogICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCiAgICAgICAi
cmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwK
LSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5l
dmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9S
TUFUX0I0RzRSNEE0X1VOT1JNIjoKICAgICB7CkBAIC0xMTU4LDcgKzEyNzIsOCBAQAogICAgICAg
InNoYWRlclNhbXBsZSI6ICJkeGdpMV8yIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAiY2hlY2si
LAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAotICAgICAgImRlcHRoU3RlbmNpbCI6
ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9H
ZW4iOiAiZHhnaTFfMiIKICAgICB9CiAgIH0KIF0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9zdXBwb3J0X3RhYmxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL2R4Z2lfc3VwcG9ydF90YWJsZS5jcHAJKHJldmlzaW9uIDIwNzgwNCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvZHhnaV9zdXBwb3J0X3RhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMjA1ICsyNiw3
OTggQEAgbmFtZXNwYWNlIGQzZDExCiAjZGVmaW5lIEZfUlQgRDNEMTFfRk9STUFUX1NVUFBPUlRf
UkVOREVSX1RBUkdFVAogI2RlZmluZSBGX01TIEQzRDExX0ZPUk1BVF9TVVBQT1JUX01VTFRJU0FN
UExFX1JFTkRFUlRBUkdFVAogI2RlZmluZSBGX0RTIEQzRDExX0ZPUk1BVF9TVVBQT1JUX0RFUFRI
X1NURU5DSUwKKyNkZWZpbmUgRl9NSVBHRU4gRDNEMTFfRk9STUFUX1NVUFBPUlRfTUlQX0FVVE9H
RU4KIAogbmFtZXNwYWNlCiB7CiAKIGNvbnN0IERYR0lTdXBwb3J0ICZHZXREZWZhdWx0U3VwcG9y
dCgpCiB7Ci0gICAgc3RhdGljIFVJTlQgQWxsU3VwcG9ydEZsYWdzID0gRDNEMTFfRk9STUFUX1NV
UFBPUlRfVEVYVFVSRTJEIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0Qx
MV9GT1JNQVRfU1VQUE9SVF9URVhUVVJFM0QgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEQzRDExX0ZPUk1BVF9TVVBQT1JUX1RFWFRVUkVDVUJFIHwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEM0QxMV9GT1JNQVRfU1VQUE9SVF9TSEFERVJfU0FNUExFIHwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0QxMV9GT1JNQVRfU1VQUE9SVF9S
RU5ERVJfVEFSR0VUIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0QxMV9G
T1JNQVRfU1VQUE9SVF9NVUxUSVNBTVBMRV9SRU5ERVJUQVJHRVQgfAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEQzRDExX0ZPUk1BVF9TVVBQT1JUX0RFUFRIX1NURU5DSUw7Cisg
ICAgc3RhdGljIFVJTlQgQWxsU3VwcG9ydEZsYWdzID0KKyAgICAgICAgRDNEMTFfRk9STUFUX1NV
UFBPUlRfVEVYVFVSRTJEIHwgRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRTNEIHwKKyAgICAg
ICAgRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRUNVQkUgfCBEM0QxMV9GT1JNQVRfU1VQUE9S
VF9TSEFERVJfU0FNUExFIHwKKyAgICAgICAgRDNEMTFfRk9STUFUX1NVUFBPUlRfUkVOREVSX1RB
UkdFVCB8IEQzRDExX0ZPUk1BVF9TVVBQT1JUX01VTFRJU0FNUExFX1JFTkRFUlRBUkdFVCB8Cisg
ICAgICAgIEQzRDExX0ZPUk1BVF9TVVBQT1JUX0RFUFRIX1NURU5DSUwgfCBEM0QxMV9GT1JNQVRf
U1VQUE9SVF9NSVBfQVVUT0dFTjsKICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgZGVmYXVs
dFN1cHBvcnQoMCwgMCwgQWxsU3VwcG9ydEZsYWdzKTsKICAgICByZXR1cm4gZGVmYXVsdFN1cHBv
cnQ7CiB9CiAKK2NvbnN0IERYR0lTdXBwb3J0ICZHZXREWEdJU3VwcG9ydF85XzMoRFhHSV9GT1JN
QVQgZHhnaUZvcm1hdCkKK3sKKyAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgICAgc3dpdGNoIChk
eGdpRm9ybWF0KQorICAgIHsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF80MjBfT1BBUVVFOgor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBG
XzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9T
QU1QTEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9BOFA4OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01J
UEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9BOF9VTk9STToKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZf
M0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZv
OworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQUk0NDoKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0Qg
fCBGX0NVQkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsK
KyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfQVlVVjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBw
b3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX1JU
IHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CNEc0UjRBNF9VTk9STToKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX0RTLCBGX01TIHwgRl9SVCk7CisgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I1RzVS
NUExX1VOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfRFMs
IEZfTVMgfCBGX1JUKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZf
TUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVy
biBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4QThfVFlQ
RUxFU1M6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBp
bmZvKDAsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIEZfMkQgfCBG
XzNEIHwgRl9DVUJFKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FN
UExFLCBGX0RTLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTVMpOworICAgICAgICAgICAgcmV0
dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9COEc4UjhBOF9V
Tk9STV9TUkdCOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4sIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NUyk7
CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX0I4RzhSOFg4X1RZUEVMRVNTOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8
IEZfU0FNUExFLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSk7CisgICAgICAgICAgICByZXR1cm4gaW5m
bzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOFg4X1VOT1JNOgor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBG
X0RTIHwgRl9NSVBHRU4sIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NUyk7CisgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhS
OFg4X1VOT1JNX1NSR0I6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01JUEdFTiwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBG
X01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfQkMxX1RZUEVMRVNTOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQ
R0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5m
bzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMV9VTk9STToKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZf
M0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDAp
OworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9CQzFfVU5PUk1fU1JHQjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01JUEdF
TiB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9
CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMyX1RZUEVMRVNTOgorICAgICAgICB7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VC
RSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JD
Ml9VTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTUlQR0VOIHwg
Rl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzJfVU5PUk1fU1JHQjoKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUs
IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHJldHVybiBp
bmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMzX1RZUEVMRVNTOgor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJE
IHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBM
RSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IERYR0lfRk9STUFUX0JDM19VTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9E
UyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzNfVU5PUk1fU1JHQjoKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8
IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAg
ICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
QkM0X1NOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZf
UlQsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9CQzRfVFlQRUxFU1M6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9N
SVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBp
bmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM0X1VOT1JNOgorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwg
Rl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAg
ICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9C
QzVfU05PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9S
VCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IERYR0lfRk9STUFUX0JDNV9UWVBFTEVTUzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01J
UEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzVfVU5PUk06CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBG
XzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JD
NkhfU0YxNjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAg
cmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzZIX1RZ
UEVMRVNTOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbygwLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAg
ICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfQkM2SF9VRjE2OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JD
N19UWVBFTEVTUzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBw
b3J0IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7
CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX0JDN19VTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDApOworICAg
ICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9CQzdfVU5PUk1fU1JHQjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDApOworICAg
ICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9EMTZfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUgfCBGX0RTLCBGXzNEIHwgRl9NSVBHRU4gfCBGX1JUIHwg
Rl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVDoKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VCRSB8IEZf
RFMsIEZfM0QgfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMzJfRkxPQVQ6CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBG
X0NVQkUsIEZfM0QgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0Qz
Ml9GTE9BVF9TOFgyNF9VSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl9DVUJFLCBGXzNEIHwgRl9NSVBHRU4gfCBGX1JUIHwg
Rl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9HOFI4X0c4QjhfVU5PUk06CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJF
LCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAgICByZXR1cm4g
aW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0lBNDQ6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBG
XzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwg
MCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERY
R0lfRk9STUFUX05WMTE6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTUlQR0VOIHwg
Rl9SVCB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfTlYxMjoKKyAgICAgICAgeworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX0RTIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAg
cmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9QMDEwOgor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBG
XzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwg
Rl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1AwMTY6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTUlQR0VO
IHwgRl9SVCB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUDg6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJF
IHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1Ix
MEcxMEIxMEEyX1RZUEVMRVNTOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FN
UExFLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVUlOVDoKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1Q
TEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VTk9STToKKyAgICAgICAgeworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUywgRl9NUyk7CisgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1Ix
MEcxMEIxMF9YUl9CSUFTX0EyX1VOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0NVQkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX01T
IHwgRl9SVCB8IEZfU0FNUExFLCBGXzJEIHwgRl8zRCk7CisgICAgICAgICAgICByZXR1cm4gaW5m
bzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxMUcxMUIxMF9GTE9BVDoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwg
Rl9EUywgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVDoKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX01JUEdFTiB8IEZfUlQsIEZfRFMsIEZfTVMgfCBGX1NBTVBMRSk7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIx
NkExNl9TSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcx
NkIxNkExNl9TTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oMCwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9UWVBFTEVTUzoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1Q
TEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVDoKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1Q
TEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwg
Rl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgcmV0
dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZfRkxP
QVQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZv
KEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1JULCBGX0RTLCBGX01TKTsKKyAg
ICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjE2RzE2X1NJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAg
ICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjE2RzE2X1NOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywg
Rl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1IxNkcxNl9UWVBFTEVTUzoKKyAgICAgICAgeworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBG
X01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0dXJu
IGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZfVUlOVDoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwg
Rl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZfVU5PUk06Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQg
fCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMp
OworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9SMTZfRkxPQVQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfU0lOVDoKKyAgICAgICAg
eworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZf
TUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfU05PUk06CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMsIEZfTVMpOwor
ICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9SMTZfVFlQRUxFU1M6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBG
X01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2X1VJTlQ6CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01JUEdF
TiB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9
CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2X1VOT1JNOgorICAgICAgICB7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8
IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjFfVU5PUk06CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQsIEZfRFMgfCBGX01JUEdF
TiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMjRHOF9UWVBFTEVTUzoKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8
IEZfQ1VCRSwgRl8zRCB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUs
IDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9SMjRfVU5PUk1fWDhfVFlQRUxFU1M6CisgICAgICAgIHsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUsIEZfM0QgfCBGX0RT
IHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVDoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQsIEZfRFMsIEZfTVMpOworICAgICAg
ICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9S
MzJHMzJCMzJBMzJfU0lOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMpOworICAg
ICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SMzJHMzJCMzJBMzJfVFlQRUxFU1M6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBH
RU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZv
OworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQ6
CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAs
IEZfRFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBp
bmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FU
OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhG
XzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOLCBGX01TIHwgRl9SVCk7CisgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFU
X1IzMkczMkIzMl9TSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9T
QU1QTEUsIEZfTVMgfCBGX1JUKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9
CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX1RZUEVMRVNTOgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8
IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7Cisg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX1IzMkczMkIzMl9VSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwg
Rl9TQU1QTEUsIEZfTVMgfCBGX1JUKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FUOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfUlQsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJfU0lOVDoKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTUlQ
R0VOIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJfVFlQRUxFU1M6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwg
Rl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAg
ICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjMyRzMyX1VJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAg
ICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjMyRzhYMjRfVFlQRUxFU1M6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKDAsIEZfM0QgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8
IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyX0ZMT0FUOgorICAgICAgICB7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQ
R0VOIHwgRl9SVCwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMl9GTE9BVF9YOFgyNF9UWVBFTEVTUzoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfQ1VCRSwgRl8zRCB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKKyAg
ICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjMyX1NJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKDAsIEZfRFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAg
ICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMy
X1RZUEVMRVNTOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsK
KyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfUjMyX1VJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAg
ICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjhHOEI4QThfU0lOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAg
ICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9S
OEc4QjhBOF9TTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMs
IEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9UWVBFTEVTUzoKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMg
fCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0
dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9V
SU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
bygwLCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICByZXR1
cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1VO
T1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
byhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RT
LCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQjoKKyAgICAgICAgeworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBG
X01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICByZXR1
cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfQjhHOF9V
Tk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAw
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjhHOF9TSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7Cisg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX1I4RzhfU05PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKEZfMkQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfVFlQ
RUxFU1M6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBp
bmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8
IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9VSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBM
RSwgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIERYR0lfRk9STUFUX1I4RzhfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMsIEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUp
OworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9SOF9TSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CisgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFU
X1I4X1NOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbygwLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhfVFlQRUxFU1M6CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9D
VUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAg
ICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjhfVUlOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAg
cmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOF9VTk9S
TToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyB8IEZfUlQpOworICAg
ICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SOUc5QjlFNV9TSEFSRURFWFA6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsK
KyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfVU5LTk9XTjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBG
X01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfWDI0X1RZUEVMRVNTX0c4X1VJTlQ6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQg
fCBGX0NVQkUsIEZfM0QgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExF
LCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfWDMyX1RZUEVMRVNTX0c4WDI0X1VJTlQ6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUsIEZfM0QgfCBG
X0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAg
IHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfWTIxMDoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwg
Rl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZf
U0FNUExFLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfWTIxNjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9N
SVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBp
bmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfWTQxMDoKKyAgICAgICAg
eworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZf
M0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAw
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfWTQxNjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBG
X01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfWVVZMjoKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NV
QkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAg
ICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gR2V0RGVmYXVsdFN1cHBv
cnQoKTsKKyAgICB9CisgICAgLy8gY2xhbmctZm9ybWF0IG9uCit9CisKIGNvbnN0IERYR0lTdXBw
b3J0ICZHZXREWEdJU3VwcG9ydF8xMF8wKERYR0lfRk9STUFUIGR4Z2lGb3JtYXQpCiB7CisgICAg
Ly8gY2xhbmctZm9ybWF0IG9mZgogICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKICAgICB7CiAgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfNDIwX09QQVFVRToKICAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBG
X0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01J
UEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9BOFA4OgogICAgICAgICB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8z
RCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJF
IHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0E4
X1VOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKICAgICAg
ICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
QUk0NDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBM
RSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJE
IHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1Q
TEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9BWVVWOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX1JUIHwg
Rl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9T
QU1QTEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9CNEc0UjRBNF9VTk9STToKICAgICAgICAgewotICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBG
X1NBTVBMRSwgRl9EUywgRl9NUyB8IEZfUlQpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfU0FNUExF
LCBGX0RTLCBGX01TIHwgRl9SVCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAg
fQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I1RzVSNUExX1VOT1JNOgogICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfU0FNUExFLCBGX0RTLCBGX01TIHwgRl9SVCk7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQR0VOIHwg
Rl9TQU1QTEUsIEZfRFMsIEZfTVMgfCBGX1JUKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNOgogICAgICAg
ICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8z
RCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQ
R0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4QThfVFlQRUxF
U1M6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZv
KDAsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSk7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9N
SVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSk7CiAg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX0I4RzhSOEE4X1VOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTVMgfCBG
X1JUIHwgRl9TQU1QTEUpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oRl9NSVBHRU4sIEZfRFMsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NUyB8IEZfUlQgfCBG
X1NBTVBMRSk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBj
YXNlIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNX1NSR0I6CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMsIEZfMkQgfCBGXzNEIHwg
Rl9DVUJFIHwgRl9NUyB8IEZfU0FNUExFKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01JUEdFTiwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBG
X01TIHwgRl9TQU1QTEUpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9COEc4UjhYOF9UWVBFTEVTUzoKICAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTVMgfCBG
X1JUIHwgRl9TQU1QTEUsIEZfMkQgfCBGXzNEIHwgRl9DVUJFKTsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JU
IHwgRl9TQU1QTEUsIEZfMkQgfCBGXzNEIHwgRl9DVUJFKTsKICAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4WDhfVU5PUk06
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAs
IEZfRFMsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NUyB8IEZfU0FNUExFKTsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01JUEdFTiwgRl8y
RCB8IEZfM0QgfCBGX0NVQkUgfCBGX01TIHwgRl9TQU1QTEUpOwogICAgICAgICAgICAgcmV0dXJu
IGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9COEc4UjhYOF9VTk9S
TV9TUkdCOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbygwLCBGX0RTLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTVMgfCBGX1NBTVBMRSk7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NSVBH
RU4sIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NUyB8IEZfU0FNUExFKTsKICAgICAgICAgICAg
IHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMxX1RZ
UEVMRVNTOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUs
IDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZf
M0QgfCBGX0NVQkUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDAp
OwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9CQzFfVU5PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBG
X01TIHwgRl9SVCwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
byhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01T
IHwgRl9SVCwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX0JDMV9VTk9STV9TUkdCOgogICAgICAgICB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZf
U0FNUExFLCBGX0RTIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8
IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzJfVFlQRUxFU1M6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNE
IHwgRl9DVUJFLCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9E
UyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMl9VTk9S
TToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwg
Rl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKICAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfQkMyX1VOT1JNX1NSR0I6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBG
X01TIHwgRl9SVCwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
byhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01T
IHwgRl9SVCwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX0JDM19UWVBFTEVTUzoKICAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMg
fCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBG
X01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMzX1VOT1JNOgogICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBM
RSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDApOwogICAgICAgICAgICAgcmV0dXJu
IGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzNfVU5PUk1fU1JH
QjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwg
Rl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKICAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfQkM0X1NOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NUyB8
IEZfUlQsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZf
UlQsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9CQzRfVFlQRUxFU1M6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9N
UyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8
IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAg
fQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNF9VTk9STToKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZf
RFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZv
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM1X1NOT1JNOgogICAgICAg
ICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8z
RCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBG
X1NBTVBMRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDApOwogICAgICAgICAgICAg
cmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzVfVFlQ
RUxFU1M6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBp
bmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwg
MCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8z
RCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7
CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX0JDNV9VTk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZf
TVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZv
KEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMg
fCBGX1JULCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfQkM2SF9TRjE2OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NUyB8IEZfUlQsIDApOworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VO
IHwgRl9NUyB8IEZfUlQsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzZIX1RZUEVMRVNTOgogICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NUyB8IEZf
UlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbygwLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfQkM2SF9VRjE2OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQs
IDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9CQzdfVFlQRUxFU1M6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAw
KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBG
X01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJu
IGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzdfVU5PUk06CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZf
RFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7CiAgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDN19V
Tk9STV9TUkdCOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbygwLCBGX0RTIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDAp
OwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9EMTZfVU5PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUgfCBGX0RTLCBGXzNEIHwgRl9SVCB8IEZfU0FN
UExFLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZf
MkQgfCBGX0NVQkUgfCBGX0RTLCBGXzNEIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZf
TVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVDoKQEAgLTIzNCwzOTcgKzgyNywzOTcgQEAgY29u
c3QgRFhHSVN1cHBvcnQgJkdldERYR0lTdXBwb3J0XzEwXzAoRAogICAgICAgICB9CiAgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfRDMyX0ZMT0FUOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl9DVUJFIHwgRl9EUywgRl8zRCB8IEZf
UlQgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbyhGXzJEIHwgRl9DVUJFIHwgRl9EUywgRl8zRCB8IEZfTUlQR0VOIHwgRl9SVCB8IEZf
U0FNUExFLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfRDMyX0ZMT0FUX1M4WDI0X1VJTlQ6CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUgfCBG
X0RTLCBGXzNEIHwgRl9SVCB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUgfCBGX0RTLCBGXzNEIHwgRl9NSVBH
RU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9HOFI4X0c4QjhfVU5PUk06CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBG
XzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8
IEZfU0FNUExFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7CiAgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0lBNDQ6
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAs
IEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDAp
OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZf
M0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAw
KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfTlYxMToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9SVCB8IEZfU0FN
UExFLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAs
IEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExF
LCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfTlYxMjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9SVCB8
IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBp
bmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9SVCB8IEZf
U0FNUExFLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUDAxMDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwg
Rl9SVCB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9S
VCB8IEZfU0FNUExFLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUDAxNjoKICAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBG
X0RTIHwgRl9SVCB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTUlQR0VO
IHwgRl9SVCB8IEZfU0FNUExFLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUDg6CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJF
IHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwg
Rl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVy
biBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJf
VFlQRUxFU1M6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBM
RSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwg
Rl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwg
MCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERY
R0lfRk9STUFUX1IxMEcxMEIxMEEyX1VJTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9E
UyB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9T
QU1QTEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VTk9STToKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQg
fCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxMEcxMEIxMF9YUl9CSUFTX0EyX1VOT1JN
OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygw
LCBGX0NVQkUgfCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgRl8yRCB8IEZfM0QpOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9DVUJFIHwgRl9E
UyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgRl8yRCB8IEZfM0QpOwogICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SMTFHMTFCMTBfRkxPQVQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBG
X0RTLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZf
MkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZf
TVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8
IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1Q
TEUsIEZfRFMsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVDoKICAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwg
Rl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TTk9STToKICAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8
IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBG
X01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CiAgICAgICAgICAgICByZXR1
cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkEx
Nl9UWVBFTEVTUzoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBw
b3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FN
UExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQg
fCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExF
LCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwg
Rl9EUyB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfTUlQR0VOIHwg
Rl9TQU1QTEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk06CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9D
VUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBG
X1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZfRkxPQVQ6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNE
IHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBH
RU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZfU0lOVDoKICAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8
IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBG
X1JULCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAgICAgICByZXR1
cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNl9TTk9S
TToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CiAgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcx
Nl9UWVBFTEVTUzoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBw
b3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FN
UExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQg
fCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExF
LCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjE2RzE2X1VJTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8
IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBp
bmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1Q
TEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZfVU5PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8
IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1Q
TEUsIEZfRFMsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfRkxPQVQ6CiAgICAgICAgIHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9S
VCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9T
QU1QTEUsIEZfRFMsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfU0lOVDoKICAgICAgICAgewotICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBG
X1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9NSVBH
RU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAg
fQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNl9TTk9STToKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQg
fCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNl9UWVBFTEVTUzoKICAgICAgICAgewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBG
X0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwg
Rl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVy
biBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2X1VJTlQ6CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQg
fCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwg
Rl9SVCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0
dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfVU5PUk06
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZf
MkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJF
IHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOwogICAgICAgICAgICAg
cmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMV9VTk9S
TToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8
IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAg
fQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IyNEc4X1RZUEVMRVNTOgogICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl9DVUJFLCBG
XzNEIHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VCRSwgRl8zRCB8IEZfRFMgfCBG
X01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJu
IGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMjRfVU5PUk1fWDhf
VFlQRUxFU1M6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGX0NVQkUsIEZfM0QgfCBGX0RTIHwgRl9NUyB8IEZfUlQsIEZfU0FNUExF
KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NV
QkUsIEZfM0QgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgRl9TQU1QTEUpOwogICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SMzJHMzJCMzJBMzJfRkxPQVQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUywgRl9N
UyB8IEZfU0FNUExFKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZv
KEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1JULCBGX0RTLCBGX01TIHwgRl9T
QU1QTEUpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVDoKICAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JU
LCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9NSVBHRU4g
fCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9UWVBFTEVTUzoKICAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0Qg
fCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RT
IHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJl
dHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMy
QTMyX1VJTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfU0FNUExFLCBGX01T
KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNE
IHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMpOwogICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SMzJHMzJCMzJfRkxPQVQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTLCBGX01TIHwgRl9SVCk7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8
IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOLCBGX01TIHwgRl9SVCk7CiAgICAgICAgICAgICByZXR1
cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMl9T
SU5UOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
byhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfU0FNUExFLCBGX01TIHwgRl9SVCk7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZf
Q1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMgfCBGX1JUKTsKICAgICAgICAg
ICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMy
RzMyQjMyX1RZUEVMRVNTOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBGX1JUIHwg
Rl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9T
QU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfVUlOVDoKICAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMg
fCBGX1NBTVBMRSwgRl9NUyB8IEZfUlQpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01JUEdFTiB8IEZfU0FN
UExFLCBGX01TIHwgRl9SVCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVDoKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX1JULCBGX0RTLCBGX01TIHwgRl9TQU1QTEUpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQs
IEZfRFMsIEZfTVMgfCBGX1NBTVBMRSk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMl9TSU5UOgogICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMg
fCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyX1RZUEVMRVNTOgogICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwg
Rl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUs
IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAg
ICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJH
MzJfVUlOVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMp
OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0Qg
fCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFU
X1IzMkc4WDI0X1RZUEVMRVNTOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl9DVUJFLCBGXzNEIHwgRl9EUyB8IEZfTVMgfCBGX1JU
IHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oRl8yRCB8IEZfQ1VCRSwgRl8zRCB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwg
Rl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJfRkxPQVQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwg
Rl9EUywgRl9NUyB8IEZfU0FNUExFKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1JULCBGX0RTLCBG
X01TIHwgRl9TQU1QTEUpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJfRkxPQVRfWDhYMjRfVFlQRUxFU1M6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NV
QkUsIEZfM0QgfCBGX0RTIHwgRl9NUyB8IEZfUlQsIEZfU0FNUExFKTsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUsIEZfM0QgfCBGX0RTIHwg
Rl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgRl9TQU1QTEUpOwogICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJfU0lOVDoKICAgICAg
ICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZf
M0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JU
LCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4g
aW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMl9UWVBFTEVTUzoK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9D
VUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAg
ICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjMyX1VJTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfU0FNUExFLCBGX01T
KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNE
IHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMpOwogICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SOEc4QjhBOF9TSU5UOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBM
RSwgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJE
IHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01T
KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjhHOEI4QThfU05PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FN
UExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBp
bmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZf
RFMsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9UWVBFTEVTUzoKICAgICAgICAgewotICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZf
RFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4g
fCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVDoKICAgICAg
ICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZf
M0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JU
LCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4g
aW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JN
OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhG
XzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VC
RSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKICAgICAgICAgICAg
IHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4
QThfVU5PUk1fU1JHQjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMs
IEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8
IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7
CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX1I4RzhfQjhHOF9VTk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9E
UyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01JUEdFTiB8
IEZfTVMgfCBGX1JULCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9TSU5UOgogICAgICAgICB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZf
UlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX01JUEdF
TiB8IEZfU0FNUExFLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9TTk9STToKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQg
fCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfVFlQRUxFU1M6CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwg
Rl9DVUJFLCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8
IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1
cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfVUlOVDoK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX1JULCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfVU5P
Uk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZv
KEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9D
VUJFIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOwogICAgICAgICAg
ICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOF9T
SU5UOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
byhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfUlQsIEZfRFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKICAgICAgICAg
ICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhf
U05PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBp
bmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwg
Rl9DVUJFIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOwogICAgICAg
ICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9S
OF9UWVBFTEVTUzoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBw
b3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FN
UExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQg
fCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExF
LCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjhfVUlOVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9T
QU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwg
Rl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1I4X1VOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBM
RSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
byhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RT
LCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfUjlHOUI5RTVfU0hBUkVERVhQOgogICAgICAgICB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZf
U0FNUExFLCBGX0RTIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8
IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9VTktOT1dOOgogICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwg
Rl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1gyNF9U
WVBFTEVTU19HOF9VSU5UOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbyhGXzJEIHwgRl9DVUJFLCBGXzNEIHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwg
Rl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfQ1VCRSwgRl8zRCB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9T
QU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9YMzJfVFlQRUxFU1NfRzhYMjRfVUlOVDoKICAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VCRSwgRl8z
RCB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUsIEZfM0QgfCBGX0RTIHwgRl9N
SVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfWTIxMDoKICAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZf
M0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VC
RSB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAg
ICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9Z
MjE2OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
bygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExF
LCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQg
fCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBM
RSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1k0MTA6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTVMgfCBG
X1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwg
Rl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfWTQxNjoKICAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBG
X0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01J
UEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9ZVVkyOgogICAgICAgICB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8z
RCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJF
IHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogCkBAIC02MzIsMTkwICsxMjI1LDE5MiBAQCBj
b25zdCBEWEdJU3VwcG9ydCAmR2V0RFhHSVN1cHBvcnRfMTBfMChECiAgICAgICAgICAgICBVTlJF
QUNIQUJMRSgpOwogICAgICAgICAgICAgcmV0dXJuIEdldERlZmF1bHRTdXBwb3J0KCk7CiAgICAg
fQorICAgIC8vIGNsYW5nLWZvcm1hdCBvbgogfQogCiBjb25zdCBEWEdJU3VwcG9ydCAmR2V0RFhH
SVN1cHBvcnRfMTBfMShEWEdJX0ZPUk1BVCBkeGdpRm9ybWF0KQogeworICAgIC8vIGNsYW5nLWZv
cm1hdCBvZmYKICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCiAgICAgewogICAgICAgICBjYXNlIERY
R0lfRk9STUFUXzQyMF9PUEFRVUU6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTVMg
fCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBw
b3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX01T
IHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQThQODoKICAgICAgICAgewotICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBG
X01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJu
IGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9BOF9VTk9STToKICAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8
IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBG
X01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CiAgICAgICAgICAgICByZXR1
cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0FJNDQ6CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQg
fCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBG
X0NVQkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfQVlVVjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9SVCB8IEZfU0FNUExFLCBG
X01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQg
fCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX01T
KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfQjRHNFI0QTRfVU5PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZf
RFMsIEZfTVMgfCBGX1JUKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBp
bmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9EUywgRl9N
UyB8IEZfUlQpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9CNUc1UjVBMV9VTk9STToKICAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NB
TVBMRSwgRl9EUywgRl9NUyB8IEZfUlQpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBG
X0RTLCBGX01TIHwgRl9SVCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I1RzZSNV9VTk9STToKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQg
fCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOEE4X1RZUEVMRVNTOgogICAgICAg
ICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwg
Rl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgRl8yRCB8IEZfM0QgfCBGX0NVQkUpOworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9N
UyB8IEZfUlQgfCBGX1NBTVBMRSwgRl8yRCB8IEZfM0QgfCBGX0NVQkUpOwogICAgICAgICAgICAg
cmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9COEc4UjhB
OF9VTk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oMCwgRl9EUywgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01TIHwgRl9SVCB8IEZfU0FN
UExFKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfTUlQR0VO
LCBGX0RTLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUpOwog
ICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9COEc4UjhBOF9VTk9STV9TUkdCOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZf
TVMgfCBGX1NBTVBMRSk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
bygwLCBGX0RTIHwgRl9NSVBHRU4sIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NUyB8IEZfU0FN
UExFKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfQjhHOFI4WDhfVFlQRUxFU1M6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FN
UExFLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExF
LCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOFg4X1VOT1JNOgogICAgICAgICB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTLCBGXzJE
IHwgRl8zRCB8IEZfQ1VCRSB8IEZfTVMgfCBGX1NBTVBMRSk7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4sIEZfMkQgfCBGXzNEIHwg
Rl9DVUJFIHwgRl9NUyB8IEZfU0FNUExFKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4WDhfVU5PUk1fU1JHQjoKICAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9E
UywgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01TIHwgRl9TQU1QTEUpOworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VOLCBGXzJEIHwg
Rl8zRCB8IEZfQ1VCRSB8IEZfTVMgfCBGX1NBTVBMRSk7CiAgICAgICAgICAgICByZXR1cm4gaW5m
bzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMV9UWVBFTEVTUzoKICAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8
IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJF
LCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAg
ICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMx
X1VOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NUyB8IEZfUlQs
IDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZf
M0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDAp
OwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9CQzFfVU5PUk1fU1JHQjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9E
UyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01JUEdFTiB8
IEZfTVMgfCBGX1JULCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMyX1RZUEVMRVNTOgogICAgICAgICB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwg
Rl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01JUEdF
TiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzJfVU5PUk06CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNE
IHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZf
U0FNUExFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMl9VTk9S
TV9TUkdCOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NUyB8IEZfUlQs
IDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZf
M0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDAp
OwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9CQzNfVFlQRUxFU1M6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NUyB8IEZf
UlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQg
fCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIERYR0lfRk9STUFUX0JDM19VTk9STToKICAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NB
TVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBG
X01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMzX1VOT1JNX1NSR0I6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNE
IHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZf
U0FNUExFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNF9TTk9S
TToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwg
Rl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKICAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfQkM0X1RZUEVMRVNTOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBGX1JUIHwg
Rl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9T
QU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9CQzRfVU5PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUs
IEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NSVBH
RU4gfCBGX01TIHwgRl9SVCwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAg
fQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNV9TTk9STToKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZf
RFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZv
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM1X1RZUEVMRVNTOgogICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwg
Rl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUs
IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAg
ICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzVf
VU5PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBp
bmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01TIHwgRl9SVCwg
MCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8z
RCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7
CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX0JDNkhfU0YxNjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBG
X1JULCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfQkM2SF9UWVBFTEVTUzoKICAgICAgICAgewotICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1Q
TEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9E
UyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNkhfVUYx
NjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
MCwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKICAgICAg
ICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
QkM3X1RZUEVMRVNTOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4gfCBG
X01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM3X1VOT1JNOgogICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NUyB8
IEZfUlQsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwg
Rl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDApOwogICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzdfVU5PUk1fU1JHQjoK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwg
Rl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKDAsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKICAgICAgICAg
ICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfRDE2
X1VOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbyhGXzJEIHwgRl9DVUJFIHwgRl9EUywgRl8zRCB8IEZfUlQgfCBGX1NBTVBMRSwgRl9NUyk7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl9DVUJF
IHwgRl9EUywgRl8zRCB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX01TKTsKICAgICAg
ICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
RDI0X1VOT1JNX1M4X1VJTlQ6CkBAIC04MjUsMzk3ICsxNDIwLDM5NyBAQCBjb25zdCBEWEdJU3Vw
cG9ydCAmR2V0RFhHSVN1cHBvcnRfMTBfMShECiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9EMzJfRkxPQVQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUgfCBGX0RTLCBGXzNEIHwgRl9SVCB8IEZfU0FN
UExFLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZf
MkQgfCBGX0NVQkUgfCBGX0RTLCBGXzNEIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZf
TVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9EMzJfRkxPQVRfUzhYMjRfVUlOVDoKICAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VCRSB8IEZfRFMsIEZfM0Qg
fCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VCRSB8IEZfRFMsIEZfM0QgfCBGX01JUEdFTiB8IEZfUlQg
fCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX0c4UjhfRzhCOF9VTk9STToKICAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUs
IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKICAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfSUE0NDoKICAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZf
M0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VC
RSB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAg
ICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9O
VjExOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
bygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMp
OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZf
M0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOwog
ICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9OVjEyOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX1JUIHwgRl9TQU1QTEUs
IEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8y
RCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZf
TVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9QMDEwOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX1JUIHwgRl9T
QU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
MCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1Q
TEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9QMDE2OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX1JU
IHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX1JUIHwg
Rl9TQU1QTEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9QODoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwg
Rl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdFTiB8
IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9UWVBFTEVTUzoK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9D
VUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAg
ICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjEwRzEwQjEwQTJfVUlOVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1Q
TEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9N
Uyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERY
R0lfRk9STUFUX1IxMEcxMEIxMEEyX1VOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBG
X1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExF
LCBGX0RTLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjEwRzEwQjEwX1hSX0JJQVNfQTJfVU5PUk06CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfQ1VCRSB8
IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCBGXzJEIHwgRl8zRCk7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0NVQkUgfCBGX0RTIHwgRl9NSVBH
RU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCBGXzJEIHwgRl8zRCk7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxMUcxMUIx
MF9GTE9BVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMp
OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0Qg
fCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CiAgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFU
X1IxNkcxNkIxNkExNl9GTE9BVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUs
IEZfRFMsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywg
Rl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5UOgogICAgICAgICB7Ci0gICAgICAgICAgICBz
dGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQs
IEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX01JUEdFTiB8
IEZfU0FNUExFLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NOT1JNOgogICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQR0VOIHwg
Rl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1RZUEVMRVNT
OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhG
XzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBG
X0NVQkUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SMTZHMTZCMTZBMTZfVUlOVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9T
QU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwg
Rl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VTk9STToKICAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JU
IHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NB
TVBMRSwgRl9EUywgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNl9GTE9BVDoKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQg
fCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNl9TSU5UOgogICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMg
fCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2X1NOT1JNOgogICAgICAg
ICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8z
RCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQ
R0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2X1RZUEVMRVNT
OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhG
XzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBG
X0NVQkUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SMTZHMTZfVUlOVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUs
IEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8
IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7
CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX1IxNkcxNl9VTk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUs
IEZfRFMsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywg
Rl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1IxNl9GTE9BVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1Q
TEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9E
UywgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBj
YXNlIERYR0lfRk9STUFUX1IxNl9TSU5UOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMg
fCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX01JUEdFTiB8IEZfU0FN
UExFLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfUjE2X1NOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBG
X1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExF
LCBGX0RTLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2X1RZUEVMRVNTOgogICAgICAgICB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9E
UyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01JUEdFTiB8
IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfVUlOVDoKICAgICAgICAgewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBG
X0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RT
IHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNl9VTk9STToKICAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0Qg
fCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdF
TiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5m
bzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxX1VOT1JNOgogICAgICAg
ICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJELCBGX0RT
IHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbyhGXzJELCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZf
U0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfUjI0RzhfVFlQRUxFU1M6CiAgICAgICAgIHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUsIEZfM0QgfCBGX0RT
IHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl9DVUJFLCBGXzNEIHwgRl9EUyB8IEZfTUlQR0VOIHwg
Rl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IyNF9VTk9STV9YOF9UWVBFTEVTUzoK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGXzNEIHwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUgfCBG
X1NBTVBMRSwgRl8zRCB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKICAgICAg
ICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjMyRzMyQjMyQTMyX0ZMT0FUOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwg
Rl9EUywgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhG
XzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBG
X01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1NJTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwg
Rl9EUyB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfTUlQR0VOIHwg
Rl9TQU1QTEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVFlQRUxFU1M6CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwg
Rl9DVUJFLCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8
IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1
cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMkEz
Ml9VSU5UOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKICAgICAg
ICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjMyRzMyQjMyX0ZMT0FUOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUywgRl9NUyB8IEZfUlQpOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBG
X0NVQkUsIEZfRFMgfCBGX01JUEdFTiwgRl9NUyB8IEZfUlQpOwogICAgICAgICAgICAgcmV0dXJu
IGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfU0lO
VDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyB8IEZfUlQpOworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUsIEZfRFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01TIHwgRl9SVCk7CiAgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkcz
MkIzMl9UWVBFTEVTUzoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZf
U0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZf
MkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FN
UExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX1VJTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwg
Rl9TQU1QTEUsIEZfTVMgfCBGX1JUKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBM
RSwgRl9NUyB8IEZfUlQpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQ6CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwg
Rl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1JUIHwg
Rl9TQU1QTEUsIEZfRFMsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJfU0lOVDoKICAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwg
Rl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMl9UWVBFTEVTUzoKICAgICAg
ICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZf
M0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBG
X0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAg
IHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMy
X1VJTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBp
bmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfU0FNUExFLCBGX01TKTsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwg
Rl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMpOwogICAgICAg
ICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9S
MzJHOFgyNF9UWVBFTEVTUzoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VCRSwgRl8zRCB8IEZfRFMgfCBGX01TIHwgRl9SVCB8
IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZv
KEZfMkQgfCBGX0NVQkUsIEZfM0QgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZf
U0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfUjMyX0ZMT0FUOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBG
X1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExF
LCBGX0RTLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyX0ZMT0FUX1g4WDI0X1RZUEVMRVNTOgogICAgICAgICB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl9DVUJF
IHwgRl9TQU1QTEUsIEZfM0QgfCBGX0RTIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBG
XzNEIHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDApOwogICAgICAgICAgICAgcmV0
dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJfU0lOVDoK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX1JULCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMl9UWVBF
TEVTUzoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAw
KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNE
IHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsK
ICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfUjMyX1VJTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfU0FNUExF
LCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQg
fCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMp
OwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9SOEc4QjhBOF9TSU5UOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBG
X1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
byhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX01JUEdFTiB8IEZfU0FNUExF
LCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfU05PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8
IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1Q
TEUsIEZfRFMsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9UWVBFTEVTUzoKICAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9N
SVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVDoK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX1JULCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4
X1VOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKICAgICAg
ICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjhHOEI4QThfVU5PUk1fU1JHQjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUs
IEZfRFMsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywg
Rl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1I4RzhfQjhHOF9VTk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBM
RSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01J
UEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9TSU5UOgogICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VC
RSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBG
X01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9TTk9STToKICAgICAgICAgewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBG
X0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8
IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfVFlQRUxFU1M6CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBG
XzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwg
Rl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4Rzhf
VUlOVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBG
X0NVQkUgfCBGX1JULCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4
RzhfVU5PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01T
KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNE
IHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOwogICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SOF9TSU5UOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9N
Uyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8z
RCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKICAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjhfU05PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBG
X01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBG
XzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOwog
ICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9SOF9UWVBFTEVTUzoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8
IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZv
KEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZf
U0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfUjhfVUlOVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RT
IHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NB
TVBMRSwgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX1I4X1VOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBG
X1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExF
LCBGX0RTLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjlHOUI5RTVfU0hBUkVERVhQOgogICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VC
RSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwg
Rl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDApOwogICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9VTktOT1dOOgogICAgICAg
ICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwg
Rl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9D
VUJFIHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFU
X1gyNF9UWVBFTEVTU19HOF9VSU5UOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl9DVUJFLCBGXzNEIHwgRl9EUyB8IEZfTVMgfCBG
X1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oRl8yRCB8IEZfQ1VCRSwgRl8zRCB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JU
IHwgRl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9YMzJfVFlQRUxFU1NfRzhYMjRfVUlOVDoKICAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VC
RSwgRl8zRCB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUsIEZfM0QgfCBGX0RT
IHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJl
dHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfWTIxMDoKICAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8y
RCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwog
ICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9ZMjE2OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZf
U0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAs
IEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBG
X1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX1k0MTA6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZf
TVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBG
X01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfWTQxNjoKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NV
QkUgfCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMg
fCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0
dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9ZVVkyOgogICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJE
IHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwg
Rl9DVUJFIHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogCkBAIC0xMjIzLDE5MCArMTgxOCwx
OTIgQEAgY29uc3QgRFhHSVN1cHBvcnQgJkdldERYR0lTdXBwb3J0XzEwXzEoRAogICAgICAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgICAgIHJldHVybiBHZXREZWZhdWx0U3VwcG9ydCgp
OwogICAgIH0KKyAgICAvLyBjbGFuZy1mb3JtYXQgb24KIH0KIAogY29uc3QgRFhHSVN1cHBvcnQg
JkdldERYR0lTdXBwb3J0XzExXzAoRFhHSV9GT1JNQVQgZHhnaUZvcm1hdCkKIHsKKyAgICAvLyBj
bGFuZy1mb3JtYXQgb2ZmCiAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQogICAgIHsKICAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF80MjBfT1BBUVVFOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMg
fCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTUlQR0VO
IHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0E4UDg6CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwg
Rl9DVUJFIHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBG
X0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAg
IHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQThfVU5P
Uk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZv
KEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9D
VUJFIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOwogICAgICAgICAg
ICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9BSTQ0
OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygw
LCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAw
KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBG
XzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwg
MCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERY
R0lfRk9STUFUX0FZVVY6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfUlQgfCBGX1NB
TVBMRSwgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygw
LCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBM
RSwgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBj
YXNlIERYR0lfRk9STUFUX0I0RzRSNEE0X1VOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBz
dGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FN
UExFLCBGX0RTLCBGX01TIHwgRl9SVCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZf
RFMsIEZfTVMgfCBGX1JUKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjVHNVI1QTFfVU5PUk06CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJF
IHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMgfCBGX1JUKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1NB
TVBMRSwgRl9EUywgRl9NUyB8IEZfUlQpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CNUc2UjVfVU5PUk06CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwg
Rl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4g
fCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9COEc4UjhBOF9UWVBFTEVTUzoK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwg
Rl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIEZfMkQgfCBGXzNEIHwgRl9DVUJFKTsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01JUEdF
TiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIEZfMkQgfCBGXzNEIHwgRl9DVUJFKTsKICAgICAg
ICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
QjhHOFI4QThfVU5PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfTUlQ
R0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTVMp
OwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9COEc4UjhBOF9VTk9STV9TUkdCOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfMkQgfCBG
XzNEIHwgRl9DVUJFIHwgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbyhGX1JUIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01JUEdFTiwgRl8yRCB8IEZfM0QgfCBG
X0NVQkUgfCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4WDhfVFlQRUxFU1M6CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01TIHwgRl9S
VCB8IEZfU0FNUExFLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSk7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8
IEZfU0FNUExFLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSk7CiAgICAgICAgICAgICByZXR1cm4gaW5m
bzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOFg4X1VOT1JNOgog
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGX1JU
IHwgRl9TQU1QTEUsIEZfRFMsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NUyk7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGX1JUIHwgRl9TQU1QTEUsIEZfRFMg
fCBGX01JUEdFTiwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01TKTsKICAgICAgICAgICAgIHJl
dHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4WDhf
VU5PUk1fU1JHQjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBw
b3J0IGluZm8oRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZf
TVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl9SVCB8IEZf
U0FNUExFLCBGX0RTIHwgRl9NSVBHRU4sIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NUyk7CiAg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX0JDMV9UWVBFTEVTUzoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8
IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZv
KEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZf
U0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfQkMxX1VOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExF
LCBGX0RTIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTUlQ
R0VOIHwgRl9NUyB8IEZfUlQsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzFfVU5PUk1fU1JHQjoKICAgICAgICAgewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBG
X0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1Q
TEUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKICAgICAgICAgICAgIHJldHVy
biBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMyX1RZUEVMRVNT
OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhG
XzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBG
X0NVQkUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9CQzJfVU5PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01TIHwg
Rl9SVCwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJE
IHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9S
VCwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNl
IERYR0lfRk9STUFUX0JDMl9VTk9STV9TUkdCOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExF
LCBGX0RTIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTUlQ
R0VOIHwgRl9NUyB8IEZfUlQsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzNfVFlQRUxFU1M6CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9D
VUJFLCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZf
TUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4g
aW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDM19VTk9STToKICAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8
IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJF
IHwgRl9TQU1QTEUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKICAgICAgICAg
ICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMz
X1VOT1JNX1NSR0I6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01TIHwg
Rl9SVCwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJE
IHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9S
VCwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNl
IERYR0lfRk9STUFUX0JDNF9TTk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9E
UyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01JUEdFTiB8
IEZfTVMgfCBGX1JULCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM0X1RZUEVMRVNTOgogICAgICAgICB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwg
Rl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01JUEdF
TiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzRfVU5PUk06CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNE
IHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZf
U0FNUExFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNV9TTk9S
TToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwg
Rl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKICAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfQkM1X1RZUEVMRVNTOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBGX1JUIHwg
Rl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9T
QU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9CQzVfVU5PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUs
IEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NSVBH
RU4gfCBGX01TIHwgRl9SVCwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAg
fQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNkhfU0YxNjoKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZf
RFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZv
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM2SF9UWVBFTEVTUzoKICAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8
IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJF
LCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAg
ICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM2
SF9VRjE2OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NUyB8IEZfUlQs
IDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZf
M0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDAp
OwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9CQzdfVFlQRUxFU1M6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NUyB8IEZf
UlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQg
fCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIERYR0lfRk9STUFUX0JDN19VTk9STToKICAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NB
TVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBG
X01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM3X1VOT1JNX1NSR0I6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNE
IHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZf
U0FNUExFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0QxNl9VTk9S
TToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfQ1VCRSB8IEZfRFMsIEZfM0QgfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VCRSB8IEZf
RFMsIEZfM0QgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0QyNF9V
Tk9STV9TOF9VSU5UOgpAQCAtMTQxNiwzOTcgKzIwMTMsMzk3IEBAIGNvbnN0IERYR0lTdXBwb3J0
ICZHZXREWEdJU3VwcG9ydF8xMV8wKEQKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX0QzMl9GTE9BVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VCRSB8IEZfRFMsIEZfM0QgfCBGX1JUIHwgRl9TQU1QTEUs
IEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8
IEZfQ1VCRSB8IEZfRFMsIEZfM0QgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9NUyk7
CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX0QzMl9GTE9BVF9TOFgyNF9VSU5UOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl9DVUJFIHwgRl9EUywgRl8zRCB8IEZf
UlQgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbyhGXzJEIHwgRl9DVUJFIHwgRl9EUywgRl8zRCB8IEZfTUlQR0VOIHwgRl9SVCB8IEZf
U0FNUExFLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfRzhSOF9HOEI4X1VOT1JNOgogICAgICAgICB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8
IEZfU0FNUExFLCBGX0RTIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9E
UyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9JQTQ0OgogICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwg
Rl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX05WMTE6
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAs
IEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfUlQgfCBGX1NBTVBMRSwgRl9NUyk7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFU
X05WMTI6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBp
bmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfUlQgfCBGX1NBTVBMRSwgRl9N
Uyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwg
Rl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9NUyk7
CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX1AwMTA6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfUlQgfCBGX1NBTVBM
RSwgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBG
XzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwg
Rl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1AwMTY6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfUlQgfCBG
X1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
bygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NB
TVBMRSwgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX1A4OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01T
IHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9N
UyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1RZUEVMRVNTOgogICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwg
Rl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUs
IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAg
ICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTBH
MTBCMTBBMl9VSU5UOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwg
Rl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwg
Rl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsK
ICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfUjEwRzEwQjEwQTJfVU5PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FN
UExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBp
bmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZf
RFMsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBfWFJfQklBU19BMl9VTk9STToKICAgICAgICAgewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9DVUJFIHwgRl9E
UyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIEZfMkQgfCBGXzNEKTsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdFTiB8
IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIEZfMkQgfCBGXzNEKTsKICAgICAgICAgICAgIHJldHVy
biBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjExRzExQjEwX0ZM
T0FUOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
byhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKICAgICAgICAg
ICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2
RzE2QjE2QTE2X0ZMT0FUOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9E
UywgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJE
IHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01T
KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9E
UyB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9T
QU1QTEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU05PUk06CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJF
IHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1JU
IHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVFlQRUxFU1M6CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQg
fCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VC
RSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1Ix
NkcxNkIxNkExNl9VSU5UOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBM
RSwgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJE
IHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01T
KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBG
X1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExF
LCBGX0RTLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2X0ZMT0FUOgogICAgICAgICB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZf
UlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZf
U0FNUExFLCBGX0RTLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQ6CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJF
IHwgRl9SVCwgRl9EUyB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZf
TUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZfU05PUk06CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwg
Rl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4g
fCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZfVFlQRUxFU1M6CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQg
fCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VC
RSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1Ix
NkcxNl9VSU5UOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9N
Uyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8z
RCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKICAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjE2RzE2X1VOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9E
UywgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJE
IHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01T
KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjE2X0ZMT0FUOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwg
Rl9EUywgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhG
XzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBG
X01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjE2X1NJTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZf
U0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZv
KEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUs
IEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9SMTZfU05PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FN
UExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBp
bmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZf
RFMsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SMTZfVFlQRUxFU1M6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwg
Rl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9N
UyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNl9VSU5UOgogICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VC
RSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBG
X01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2X1VOT1JNOgogICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQR0VOIHwg
Rl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjFfVU5PUk06CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwg
Rl9DVUJFLCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8
IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1
cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IyNEc4X1RZUEVM
RVNTOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
byhGXzJEIHwgRl9DVUJFLCBGXzNEIHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDAp
OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VC
RSwgRl8zRCB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwog
ICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9SMjRfVU5PUk1fWDhfVFlQRUxFU1M6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl8zRCB8
IEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbyhGXzJEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfM0QgfCBGX0RTIHwgRl9NSVBH
RU4gfCBGX01TIHwgRl9SVCwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAg
fQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVDoKICAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0Qg
fCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdF
TiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5m
bzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5U
OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhG
XzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VC
RSB8IEZfUlQsIEZfRFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKICAgICAgICAgICAg
IHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMy
QjMyQTMyX1RZUEVMRVNTOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBGX1JUIHwg
Rl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9T
QU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVDoKICAgICAgICAgewotICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBG
X1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9NSVBH
RU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAg
fQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVDoKICAgICAgICAgewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBG
X0NVQkUsIEZfRFMsIEZfTVMgfCBGX1JUKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4sIEZfTVMg
fCBGX1JUKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX1NJTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwg
Rl9TQU1QTEUsIEZfTVMgfCBGX1JUKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBM
RSwgRl9NUyB8IEZfUlQpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfVFlQRUxFU1M6CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9D
VUJFLCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZf
TUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4g
aW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMl9VSU5U
OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhG
XzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfU0FNUExFLCBGX01TIHwgRl9SVCk7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VC
RSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMgfCBGX1JUKTsKICAgICAgICAgICAg
IHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMy
X0ZMT0FUOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKICAgICAg
ICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjMyRzMyX1NJTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfU0FNUExFLCBG
X01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBG
XzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMpOwog
ICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9SMzJHMzJfVFlQRUxFU1M6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NUyB8IEZf
UlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQg
fCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMl9VSU5UOgogICAgICAgICB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZf
UlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX01JUEdF
TiB8IEZfU0FNUExFLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzhYMjRfVFlQRUxFU1M6CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUs
IEZfM0QgfCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl9DVUJFLCBGXzNEIHwgRl9EUyB8
IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1
cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMl9GTE9BVDoK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMl9GTE9B
VF9YOFgyNF9UWVBFTEVTUzoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGXzNEIHwgRl9EUyB8IEZf
TVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZv
KEZfMkQgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl8zRCB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMg
fCBGX1JULCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfUjMyX1NJTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9E
UyB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9T
QU1QTEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJfVFlQRUxFU1M6CiAgICAgICAgIHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RT
IHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwg
Rl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMl9VSU5UOgogICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMg
fCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfU0lOVDoKICAgICAg
ICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZf
M0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JU
LCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4g
aW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1NOT1JN
OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhG
XzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VC
RSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKICAgICAgICAgICAg
IHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4
QThfVFlQRUxFU1M6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NB
TVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJE
IHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBM
RSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1I4RzhCOEE4X1VJTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9E
UyB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9T
QU1QTEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STToKICAgICAgICAgewotICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBG
X1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQgfCBG
X1NBTVBMRSwgRl9EUywgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAg
fQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0I6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNE
IHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBH
RU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4X0I4RzhfVU5PUk06
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZf
MkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7CiAgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFU
X1I4RzhfU0lOVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBw
b3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZf
TVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZf
M0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX1I4RzhfU05PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RT
LCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQg
fCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMp
OwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9SOEc4X1RZUEVMRVNTOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBG
X1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JU
IHwgRl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4X1VJTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9S
VCwgRl9EUyB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfTUlQR0VO
IHwgRl9TQU1QTEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4X1VOT1JNOgogICAgICAgICB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8
IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9SVCB8
IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhfU0lOVDoKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9N
SVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4X1NOT1JNOgogICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VC
RSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9S
VCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhfVFlQRUxFU1M6CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwg
Rl9DVUJFLCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8
IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1
cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4X1VJTlQ6CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQg
fCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwg
Rl9SVCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0
dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOF9VTk9STToK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I5RzlCOUU1
X1NIQVJFREVYUDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBw
b3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBG
X1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQg
fCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JU
LCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfVU5LTk9XTjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NUyB8
IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMg
fCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9YMjRfVFlQRUxFU1NfRzhfVUlOVDoKICAgICAg
ICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZf
Q1VCRSwgRl8zRCB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUsIEZfM0QgfCBG
X0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAg
IHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfWDMyX1RZ
UEVMRVNTX0c4WDI0X1VJTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUsIEZfM0QgfCBGX0RTIHwgRl9NUyB8IEZfUlQg
fCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
byhGXzJEIHwgRl9DVUJFLCBGXzNEIHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBG
X1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX1kyMTA6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZf
TVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBG
X01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfWTIxNjoKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NV
QkUgfCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMg
fCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0
dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9ZNDEwOgogICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJE
IHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwg
Rl9DVUJFIHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX1k0MTY6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9T
QU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwg
Rl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZf
U0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfWVVZMjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9N
UyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdFTiB8IEZf
TVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAg
ICAgIH0KIApAQCAtMTgxNCw2ICsyNDExLDcgQEAgY29uc3QgRFhHSVN1cHBvcnQgJkdldERYR0lT
dXBwb3J0XzExXzAoRAogICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgICAgIHJl
dHVybiBHZXREZWZhdWx0U3VwcG9ydCgpOwogICAgIH0KKyAgICAvLyBjbGFuZy1mb3JtYXQgb24K
IH0KIAogfQpAQCAtMTgyNSwxMSArMjQyMywxNCBAQCBjb25zdCBEWEdJU3VwcG9ydCAmR2V0RFhH
SVN1cHBvcnRfMTFfMChECiAjdW5kZWYgRl9SVAogI3VuZGVmIEZfTVMKICN1bmRlZiBGX0RTCisj
dW5kZWYgRl9NSVBHRU4KIAogY29uc3QgRFhHSVN1cHBvcnQgJkdldERYR0lTdXBwb3J0KERYR0lf
Rk9STUFUIGR4Z2lGb3JtYXQsIEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKIHsKICAg
ICBzd2l0Y2ggKGZlYXR1cmVMZXZlbCkKICAgICB7CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfOV8zOgorICAgICAgICAgICAgcmV0dXJuIEdldERYR0lTdXBwb3J0XzlfMyhkeGdpRm9y
bWF0KTsKICAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOgogICAgICAgICAgICAg
cmV0dXJuIEdldERYR0lTdXBwb3J0XzEwXzAoZHhnaUZvcm1hdCk7CiAgICAgICAgIGNhc2UgRDNE
X0ZFQVRVUkVfTEVWRUxfMTBfMToKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZm9ybWF0dXRpbHMxMS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9mb3JtYXR1dGlsczExLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9mb3JtYXR1dGlsczExLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOSwxNCArOSwxNSBAQAogCiAjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL2Zvcm1hdHV0aWxzMTEuaCIKIAorI2luY2x1ZGUgImltYWdlX3V0
aWwvY29weWltYWdlLmgiCisjaW5jbHVkZSAiaW1hZ2VfdXRpbC9nZW5lcmF0ZW1pcC5oIgorI2lu
Y2x1ZGUgImltYWdlX3V0aWwvbG9hZGltYWdlLmgiCisKICNpbmNsdWRlICJsaWJBTkdMRS9mb3Jt
YXR1dGlscy5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9jb3B5aW1hZ2UuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvY29weXZlcnRleC5oIgorI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX3N1cHBvcnRfdGFibGUuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvcmVuZGVyZXIxMV91dGlscy5o
IgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmgiCi0j
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2dlbmVyYXRlbWlwLmgiCi0jaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2xvYWRpbWFnZS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL1JlbmRlcmVyLmgiCiAKIG5hbWVzcGFjZSByeAogewpAQCAtMjQsMzcxICsyNSwxMSBA
QCBuYW1lc3BhY2UgcngKIG5hbWVzcGFjZSBkM2QxMQogewogCi1zdHJ1Y3QgRDNEMTFGYXN0Q29w
eUZvcm1hdAotewotICAgIEdMZW51bSBkZXN0Rm9ybWF0OwotICAgIEdMZW51bSBkZXN0VHlwZTsK
LSAgICBDb2xvckNvcHlGdW5jdGlvbiBjb3B5RnVuY3Rpb247Ci0KLSAgICBEM0QxMUZhc3RDb3B5
Rm9ybWF0KEdMZW51bSBkZXN0Rm9ybWF0LCBHTGVudW0gZGVzdFR5cGUsIENvbG9yQ29weUZ1bmN0
aW9uIGNvcHlGdW5jdGlvbikKLSAgICAgICAgOiBkZXN0Rm9ybWF0KGRlc3RGb3JtYXQpLCBkZXN0
VHlwZShkZXN0VHlwZSksIGNvcHlGdW5jdGlvbihjb3B5RnVuY3Rpb24pCi0gICAgeyB9Ci0KLSAg
ICBib29sIG9wZXJhdG9yPChjb25zdCBEM0QxMUZhc3RDb3B5Rm9ybWF0JiBvdGhlcikgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtZW1jbXAodGhpcywgJm90aGVyLCBzaXplb2YoRDNEMTFG
YXN0Q29weUZvcm1hdCkpIDwgMDsKLSAgICB9Ci19OwotCi10eXBlZGVmIHN0ZDo6bXVsdGltYXA8
RFhHSV9GT1JNQVQsIEQzRDExRmFzdENvcHlGb3JtYXQ+IEQzRDExRmFzdENvcHlNYXA7Ci0KLXN0
YXRpYyBEM0QxMUZhc3RDb3B5TWFwIEJ1aWxkRmFzdENvcHlNYXAoKQotewotICAgIEQzRDExRmFz
dENvcHlNYXAgbWFwOwotCi0gICAgbWFwLmluc2VydChzdGQ6Om1ha2VfcGFpcihEWEdJX0ZPUk1B
VF9COEc4UjhBOF9VTk9STSwgRDNEMTFGYXN0Q29weUZvcm1hdChHTF9SR0JBLCBHTF9VTlNJR05F
RF9CWVRFLCBDb3B5QkdSQThUb1JHQkE4KSkpOwotCi0gICAgcmV0dXJuIG1hcDsKLX0KLQotc3Ry
dWN0IERYR0lDb2xvckZvcm1hdEluZm8KLXsKLSAgICBzaXplX3QgcmVkQml0czsKLSAgICBzaXpl
X3QgZ3JlZW5CaXRzOwotICAgIHNpemVfdCBibHVlQml0czsKLQotICAgIHNpemVfdCBsdW1pbmFu
Y2VCaXRzOwotCi0gICAgc2l6ZV90IGFscGhhQml0czsKLSAgICBzaXplX3Qgc2hhcmVkQml0czsK
LX07Ci0KLXR5cGVkZWYgc3RkOjptYXA8RFhHSV9GT1JNQVQsIERYR0lDb2xvckZvcm1hdEluZm8+
IENvbG9yRm9ybWF0SW5mb01hcDsKLXR5cGVkZWYgc3RkOjpwYWlyPERYR0lfRk9STUFULCBEWEdJ
Q29sb3JGb3JtYXRJbmZvPiBDb2xvckZvcm1hdEluZm9QYWlyOwotCi1zdGF0aWMgaW5saW5lIHZv
aWQgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbyhDb2xvckZvcm1hdEluZm9NYXAgKm1hcCwgRFhH
SV9GT1JNQVQgZm9ybWF0LCBzaXplX3QgcmVkQml0cywgc2l6ZV90IGdyZWVuQml0cywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBibHVlQml0cywg
c2l6ZV90IGFscGhhQml0cywgc2l6ZV90IHNoYXJlZEJpdHMpCi17Ci0gICAgRFhHSUNvbG9yRm9y
bWF0SW5mbyBpbmZvOwotICAgIGluZm8ucmVkQml0cyA9IHJlZEJpdHM7Ci0gICAgaW5mby5ncmVl
bkJpdHMgPSBncmVlbkJpdHM7Ci0gICAgaW5mby5ibHVlQml0cyA9IGJsdWVCaXRzOwotICAgIGlu
Zm8uYWxwaGFCaXRzID0gYWxwaGFCaXRzOwotICAgIGluZm8uc2hhcmVkQml0cyA9IHNoYXJlZEJp
dHM7Ci0KLSAgICBtYXAtPmluc2VydChzdGQ6Om1ha2VfcGFpcihmb3JtYXQsIGluZm8pKTsKLX0K
LQotc3RhdGljIENvbG9yRm9ybWF0SW5mb01hcCBCdWlsZENvbG9yRm9ybWF0SW5mb01hcCgpCi17
Ci0gICAgQ29sb3JGb3JtYXRJbmZvTWFwIG1hcDsKLQotICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYK
LSAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEWEdJIGZvcm1hdCAgICAgICAg
ICAgICAgICAgICAgICAgICB8IFIgfCBHIHwgQiB8IEEgfCBTIHwKLSAgICBJbnNlcnREWEdJQ29s
b3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX0E4X1VOT1JNLCAgICAgICAgICAgICAgICAg
IDAsICAwLCAgMCwgIDgsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAs
IERYR0lfRk9STUFUX1I4X1VOT1JNLCAgICAgICAgICAgICAgICAgIDgsICAwLCAgMCwgIDAsICAw
KTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1I4Rzhf
VU5PUk0sICAgICAgICAgICAgICAgIDgsICA4LCAgMCwgIDAsICAwKTsKLSAgICBJbnNlcnREWEdJ
Q29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLCAgICAgICAg
ICAgIDgsICA4LCAgOCwgIDgsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZt
YXAsIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsICAgICAgIDgsICA4LCAgOCwgIDgs
ICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX0I4
RzhSOEE4X1VOT1JNLCAgICAgICAgICAgIDgsICA4LCAgOCwgIDgsICAwKTsKLSAgICBJbnNlcnRE
WEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1IxNl9VTk9STSwgICAgICAgICAg
ICAgICAgMTYsICAwLCAgMCwgIDAsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZv
KCZtYXAsIERYR0lfRk9STUFUX1IxNkcxNl9VTk9STSwgICAgICAgICAgICAgMTYsIDE2LCAgMCwg
IDAsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFU
X1IxNkcxNkIxNkExNl9VTk9STSwgICAgICAgMTYsIDE2LCAxNiwgMTYsICAwKTsKLQotICAgIElu
c2VydERYR0lDb2xvckZvcm1hdEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfUjhfU05PUk0sICAgICAg
ICAgICAgICAgICAgOCwgIDAsICAwLCAgMCwgIDApOwotICAgIEluc2VydERYR0lDb2xvckZvcm1h
dEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfUjhHOF9TTk9STSwgICAgICAgICAgICAgICAgOCwgIDgs
ICAwLCAgMCwgIDApOwotICAgIEluc2VydERYR0lDb2xvckZvcm1hdEluZm8oJm1hcCwgRFhHSV9G
T1JNQVRfUjhHOEI4QThfU05PUk0sICAgICAgICAgICAgOCwgIDgsICA4LCAgOCwgIDApOwotICAg
IEluc2VydERYR0lDb2xvckZvcm1hdEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfUjE2X1NOT1JNLCAg
ICAgICAgICAgICAgICAxNiwgIDAsICAwLCAgMCwgIDApOwotICAgIEluc2VydERYR0lDb2xvckZv
cm1hdEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfUjE2RzE2X1NOT1JNLCAgICAgICAgICAgICAxNiwg
MTYsICAwLCAgMCwgIDApOwotICAgIEluc2VydERYR0lDb2xvckZvcm1hdEluZm8oJm1hcCwgRFhH
SV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NOT1JNLCAgICAgICAxNiwgMTYsIDE2LCAxNiwgIDApOwot
Ci0gICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9SOF9VSU5U
LCAgICAgICAgICAgICAgICAgICA4LCAgMCwgIDAsICAwLCAgMCk7Ci0gICAgSW5zZXJ0RFhHSUNv
bG9yRm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9SMTZfVUlOVCwgICAgICAgICAgICAgICAg
IDE2LCAgMCwgIDAsICAwLCAgMCk7Ci0gICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbygmbWFw
LCBEWEdJX0ZPUk1BVF9SMzJfVUlOVCwgICAgICAgICAgICAgICAgIDMyLCAgMCwgIDAsICAwLCAg
MCk7Ci0gICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9SOEc4
X1VJTlQsICAgICAgICAgICAgICAgICA4LCAgOCwgIDAsICAwLCAgMCk7Ci0gICAgSW5zZXJ0RFhH
SUNvbG9yRm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9SMTZHMTZfVUlOVCwgICAgICAgICAg
ICAgIDE2LCAxNiwgIDAsICAwLCAgMCk7Ci0gICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbygm
bWFwLCBEWEdJX0ZPUk1BVF9SMzJHMzJfVUlOVCwgICAgICAgICAgICAgIDMyLCAzMiwgIDAsICAw
LCAgMCk7Ci0gICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9S
MzJHMzJCMzJfVUlOVCwgICAgICAgICAgIDMyLCAzMiwgMzIsICAwLCAgMCk7Ci0gICAgSW5zZXJ0
RFhHSUNvbG9yRm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULCAgICAg
ICAgICAgICA4LCAgOCwgIDgsICA4LCAgMCk7Ci0gICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5m
bygmbWFwLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVCwgICAgICAgIDE2LCAxNiwgMTYs
IDE2LCAgMCk7Ci0gICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZPUk1B
VF9SMzJHMzJCMzJBMzJfVUlOVCwgICAgICAgIDMyLCAzMiwgMzIsIDMyLCAgMCk7Ci0KLSAgICBJ
bnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1I4X1NJTlQsICAgICAg
ICAgICAgICAgICAgIDgsICAwLCAgMCwgIDAsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3Jt
YXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1IxNl9TSU5ULCAgICAgICAgICAgICAgICAgMTYsICAw
LCAgMCwgIDAsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lf
Rk9STUFUX1IzMl9TSU5ULCAgICAgICAgICAgICAgICAgMzIsICAwLCAgMCwgIDAsICAwKTsKLSAg
ICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1I4RzhfU0lOVCwg
ICAgICAgICAgICAgICAgIDgsICA4LCAgMCwgIDAsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JG
b3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1IxNkcxNl9TSU5ULCAgICAgICAgICAgICAgMTYs
IDE2LCAgMCwgIDAsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERY
R0lfRk9STUFUX1IzMkczMl9TSU5ULCAgICAgICAgICAgICAgMzIsIDMyLCAgMCwgIDAsICAwKTsK
LSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1IzMkczMkIz
Ml9TSU5ULCAgICAgICAgICAgMzIsIDMyLCAzMiwgIDAsICAwKTsKLSAgICBJbnNlcnREWEdJQ29s
b3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1I4RzhCOEE4X1NJTlQsICAgICAgICAgICAg
IDgsICA4LCAgOCwgIDgsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAs
IERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5ULCAgICAgICAgMTYsIDE2LCAxNiwgMTYsICAw
KTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1IzMkcz
MkIzMkEzMl9TSU5ULCAgICAgICAgMzIsIDMyLCAzMiwgMzIsICAwKTsKLQotICAgIEluc2VydERY
R0lDb2xvckZvcm1hdEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVFlQRUxFU1Ms
ICAgICAxMCwgMTAsIDEwLCAgMiwgIDApOwotICAgIEluc2VydERYR0lDb2xvckZvcm1hdEluZm8o
Jm1hcCwgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVU5PUk0sICAgICAgICAxMCwgMTAsIDEwLCAg
MiwgIDApOwotICAgIEluc2VydERYR0lDb2xvckZvcm1hdEluZm8oJm1hcCwgRFhHSV9GT1JNQVRf
UjEwRzEwQjEwQTJfVUlOVCwgICAgICAgICAxMCwgMTAsIDEwLCAgMiwgIDApOwotCi0gICAgSW5z
ZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9SMTZfRkxPQVQsICAgICAg
ICAgICAgICAgIDE2LCAgMCwgIDAsICAwLCAgMCk7Ci0gICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0
SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9SMTZHMTZfRkxPQVQsICAgICAgICAgICAgIDE2LCAxNiwg
IDAsICAwLCAgMCk7Ci0gICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZP
Uk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsICAgICAgIDE2LCAxNiwgMTYsIDE2LCAgMCk7Ci0KLSAg
ICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1IzMl9GTE9BVCwg
ICAgICAgICAgICAgICAgMzIsICAwLCAgMCwgIDAsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JG
b3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwgICAgICAgICAgICAgMzIs
IDMyLCAgMCwgIDAsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERY
R0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVCwgICAgICAgICAgMzIsIDMyLCAzMiwgIDAsICAwKTsK
LSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1IzMkczMkIz
MkEzMl9GTE9BVCwgICAgICAgMzIsIDMyLCAzMiwgMzIsICAwKTsKLQotICAgIEluc2VydERYR0lD
b2xvckZvcm1hdEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfUjlHOUI5RTVfU0hBUkVERVhQLCAgICAg
ICAgOSwgIDksICA5LCAgMCwgIDUpOwotICAgIEluc2VydERYR0lDb2xvckZvcm1hdEluZm8oJm1h
cCwgRFhHSV9GT1JNQVRfUjExRzExQjEwX0ZMT0FULCAgICAgICAgICAxMSwgMTEsIDEwLCAgMCwg
IDApOwotCi0gICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9C
NUc2UjVfVU5PUk0sICAgICAgICAgICAgICA1LCAgNiwgIDUsICAwLCAgMCk7Ci0gICAgSW5zZXJ0
RFhHSUNvbG9yRm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9CNEc0UjRBNF9VTk9STSwgICAg
ICAgICAgICA0LCAgNCwgIDQsICA0LCAgMCk7Ci0gICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5m
bygmbWFwLCBEWEdJX0ZPUk1BVF9CNUc1UjVBMV9VTk9STSwgICAgICAgICAgICA1LCAgNSwgIDUs
ICAxLCAgMCk7Ci0KLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9S
TUFUX1I4X1RZUEVMRVNTLCAgICAgICAgICAgICAgIDgsICAwLCAgMCwgIDAsICAwKTsKLSAgICBJ
bnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1IxNl9UWVBFTEVTUywg
ICAgICAgICAgICAgMTYsICAwLCAgMCwgIDAsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3Jt
YXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1IzMl9UWVBFTEVTUywgICAgICAgICAgICAgMzIsICAw
LCAgMCwgIDAsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lf
Rk9STUFUX1I4RzhfVFlQRUxFU1MsICAgICAgICAgICAgIDgsICA4LCAgMCwgIDAsICAwKTsKLSAg
ICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1IxNkcxNl9UWVBF
TEVTUywgICAgICAgICAgMTYsIDE2LCAgMCwgIDAsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JG
b3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1IzMkczMl9UWVBFTEVTUywgICAgICAgICAgMzIs
IDMyLCAgMCwgIDAsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERY
R0lfRk9STUFUX1IzMkczMkIzMl9UWVBFTEVTUywgICAgICAgMzIsIDMyLCAzMiwgIDAsICAwKTsK
LSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1I4RzhCOEE4
X1RZUEVMRVNTLCAgICAgICAgIDgsICA4LCAgOCwgIDgsICAwKTsKLSAgICBJbnNlcnREWEdJQ29s
b3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9UWVBFTEVTUywgICAg
MTYsIDE2LCAxNiwgMTYsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAs
IERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9UWVBFTEVTUywgICAgMzIsIDMyLCAzMiwgMzIsICAw
KTsKLQotICAgIEluc2VydERYR0lDb2xvckZvcm1hdEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfUjI0
RzhfVFlQRUxFU1MsICAgICAgICAgICAyNCwgIDgsICAwLCAgMCwgIDApOwotICAgIEluc2VydERY
R0lDb2xvckZvcm1hdEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfUjI0X1VOT1JNX1g4X1RZUEVMRVNT
LCAgICAyNCwgIDAsICAwLCAgMCwgIDApOwotICAgIEluc2VydERYR0lDb2xvckZvcm1hdEluZm8o
Jm1hcCwgRFhHSV9GT1JNQVRfUjMyRzhYMjRfVFlQRUxFU1MsICAgICAgICAzMiwgIDgsICAwLCAg
MCwgIDApOwotICAgIEluc2VydERYR0lDb2xvckZvcm1hdEluZm8oJm1hcCwgRFhHSV9GT1JNQVRf
UjMyX0ZMT0FUX1g4WDI0X1RZUEVMRVNTLCAzMiwgIDAsICAwLCAgMCwgIDApOwotICAgIC8vIGNs
YW5nLWZvcm1hdCBvbgotCi0gICAgcmV0dXJuIG1hcDsKLX0KLQotc3RydWN0IERYR0lEZXB0aFN0
ZW5jaWxJbmZvCi17Ci0gICAgdW5zaWduZWQgaW50IGRlcHRoQml0czsKLSAgICB1bnNpZ25lZCBp
bnQgc3RlbmNpbEJpdHM7Ci19OwotCi10eXBlZGVmIHN0ZDo6bWFwPERYR0lfRk9STUFULCBEWEdJ
RGVwdGhTdGVuY2lsSW5mbz4gRGVwdGhTdGVuY2lsSW5mb01hcDsKLXR5cGVkZWYgc3RkOjpwYWly
PERYR0lfRk9STUFULCBEWEdJRGVwdGhTdGVuY2lsSW5mbz4gRGVwdGhTdGVuY2lsSW5mb1BhaXI7
Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBJbnNlcnREWEdJRGVwdGhTdGVuY2lsSW5mbyhEZXB0aFN0
ZW5jaWxJbmZvTWFwICptYXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVQgZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkZXB0aEJpdHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHN0ZW5jaWxCaXRz
KQotewotICAgIERYR0lEZXB0aFN0ZW5jaWxJbmZvIGluZm87Ci0gICAgaW5mby5kZXB0aEJpdHMg
PSBkZXB0aEJpdHM7Ci0gICAgaW5mby5zdGVuY2lsQml0cyA9IHN0ZW5jaWxCaXRzOwotCi0gICAg
bWFwLT5pbnNlcnQoc3RkOjptYWtlX3BhaXIoZm9ybWF0LCBpbmZvKSk7Ci19Ci0KLXN0YXRpYyBE
ZXB0aFN0ZW5jaWxJbmZvTWFwIEJ1aWxkRGVwdGhTdGVuY2lsSW5mb01hcCgpCi17Ci0gICAgRGVw
dGhTdGVuY2lsSW5mb01hcCBtYXA7Ci0KLSAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCi0gICAgSW5z
ZXJ0RFhHSURlcHRoU3RlbmNpbEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfRDE2X1VOT1JNLCAgICAg
ICAgICAgICAgICAxNiwgMCk7Ci0gICAgSW5zZXJ0RFhHSURlcHRoU3RlbmNpbEluZm8oJm1hcCwg
RFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQsICAgICAgICAyNCwgOCk7Ci0gICAgSW5zZXJ0
RFhHSURlcHRoU3RlbmNpbEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfRDMyX0ZMT0FULCAgICAgICAg
ICAgICAgICAzMiwgMCk7Ci0gICAgSW5zZXJ0RFhHSURlcHRoU3RlbmNpbEluZm8oJm1hcCwgRFhH
SV9GT1JNQVRfRDMyX0ZMT0FUX1M4WDI0X1VJTlQsICAgICAzMiwgOCk7Ci0gICAgLy8gY2xhbmct
Zm9ybWF0IG9uCi0KLSAgICByZXR1cm4gbWFwOwotfQotCi10eXBlZGVmIHN0ZDo6bWFwPERYR0lf
Rk9STUFULCBEWEdJRm9ybWF0PiBEWEdJRm9ybWF0SW5mb01hcDsKLQotRFhHSUZvcm1hdDo6RFhH
SUZvcm1hdCgpCi0gICAgOiByZWRCaXRzKDApLAotICAgICAgZ3JlZW5CaXRzKDApLAotICAgICAg
Ymx1ZUJpdHMoMCksCi0gICAgICBhbHBoYUJpdHMoMCksCi0gICAgICBzaGFyZWRCaXRzKDApLAot
ICAgICAgZGVwdGhCaXRzKDApLAotICAgICAgc3RlbmNpbEJpdHMoMCksCi0gICAgICBjb21wb25l
bnRUeXBlKEdMX05PTkUpLAotICAgICAgZmFzdENvcHlGdW5jdGlvbnMoKSwKLSAgICAgIG5hdGl2
ZU1pcG1hcFN1cHBvcnQoTlVMTCkKK2Jvb2wgU3VwcG9ydHNNaXBHZW4oRFhHSV9GT1JNQVQgZHhn
aUZvcm1hdCwgRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQogewotfQotCi1zdGF0aWMg
Ym9vbCBOZXZlclN1cHBvcnRlZChEM0RfRkVBVFVSRV9MRVZFTCkKLXsKLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KLXRlbXBsYXRlIDxEM0RfRkVBVFVSRV9MRVZFTCByZXF1aXJlZEZlYXR1cmVMZXZl
bD4KLXN0YXRpYyBib29sIFJlcXVpcmVzRmVhdHVyZUxldmVsKEQzRF9GRUFUVVJFX0xFVkVMIGZl
YXR1cmVMZXZlbCkKLXsKLSAgICByZXR1cm4gZmVhdHVyZUxldmVsID49IHJlcXVpcmVkRmVhdHVy
ZUxldmVsOwotfQotCi1Db2xvckNvcHlGdW5jdGlvbiBEWEdJRm9ybWF0OjpnZXRGYXN0Q29weUZ1
bmN0aW9uKEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlKSBjb25zdAotewotICAgIEZhc3RDb3B5
RnVuY3Rpb25NYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBmYXN0Q29weUZ1bmN0aW9ucy5maW5k
KHN0ZDo6bWFrZV9wYWlyKGZvcm1hdCwgdHlwZSkpOwotICAgIHJldHVybiAoaXRlciAhPSBmYXN0
Q29weUZ1bmN0aW9ucy5lbmQoKSkgPyBpdGVyLT5zZWNvbmQgOiBOVUxMOwotfQotCi12b2lkIEFk
ZERYR0lGb3JtYXQoRFhHSUZvcm1hdEluZm9NYXAgKm1hcCwKLSAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVCBkeGdpRm9ybWF0LAotICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb21wb25l
bnRUeXBlLAotICAgICAgICAgICAgICAgICAgIE5hdGl2ZU1pcG1hcEdlbmVyYXRpb25TdXBwb3J0
RnVuY3Rpb24gbmF0aXZlTWlwbWFwU3VwcG9ydCkKLXsKLSAgICBEWEdJRm9ybWF0IGluZm87Ci0K
LSAgICBzdGF0aWMgY29uc3QgQ29sb3JGb3JtYXRJbmZvTWFwIGNvbG9ySW5mb01hcCA9IEJ1aWxk
Q29sb3JGb3JtYXRJbmZvTWFwKCk7Ci0gICAgQ29sb3JGb3JtYXRJbmZvTWFwOjpjb25zdF9pdGVy
YXRvciBjb2xvckluZm9JdGVyID0gY29sb3JJbmZvTWFwLmZpbmQoZHhnaUZvcm1hdCk7Ci0gICAg
aWYgKGNvbG9ySW5mb0l0ZXIgIT0gY29sb3JJbmZvTWFwLmVuZCgpKQotICAgIHsKLSAgICAgICAg
Y29uc3QgRFhHSUNvbG9yRm9ybWF0SW5mbyAmY29sb3JJbmZvID0gY29sb3JJbmZvSXRlci0+c2Vj
b25kOwotICAgICAgICBpbmZvLnJlZEJpdHMgICAgICAgICAgICAgICAgICAgICAgICAgPSBzdGF0
aWNfY2FzdDxHTHVpbnQ+KGNvbG9ySW5mby5yZWRCaXRzKTsKLSAgICAgICAgaW5mby5ncmVlbkJp
dHMgICAgICAgICAgICAgICAgICAgICAgID0gc3RhdGljX2Nhc3Q8R0x1aW50Pihjb2xvckluZm8u
Z3JlZW5CaXRzKTsKLSAgICAgICAgaW5mby5ibHVlQml0cyAgICAgICAgICAgICAgICAgICAgICAg
ID0gc3RhdGljX2Nhc3Q8R0x1aW50Pihjb2xvckluZm8uYmx1ZUJpdHMpOwotICAgICAgICBpbmZv
LmFscGhhQml0cyAgICAgICAgICAgICAgICAgICAgICAgPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KGNv
bG9ySW5mby5hbHBoYUJpdHMpOwotICAgICAgICBpbmZvLnNoYXJlZEJpdHMgICAgICAgICAgICAg
ICAgICAgICAgPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KGNvbG9ySW5mby5zaGFyZWRCaXRzKTsKLSAg
ICB9Ci0KLSAgICBzdGF0aWMgY29uc3QgRGVwdGhTdGVuY2lsSW5mb01hcCBkc0luZm9NYXAgPSBC
dWlsZERlcHRoU3RlbmNpbEluZm9NYXAoKTsKLSAgICBEZXB0aFN0ZW5jaWxJbmZvTWFwOjpjb25z
dF9pdGVyYXRvciBkc0luZm9JdGVyID0gZHNJbmZvTWFwLmZpbmQoZHhnaUZvcm1hdCk7Ci0gICAg
aWYgKGRzSW5mb0l0ZXIgIT0gZHNJbmZvTWFwLmVuZCgpKQotICAgIHsKLSAgICAgICAgY29uc3Qg
RFhHSURlcHRoU3RlbmNpbEluZm8gJmRzSW5mbyA9IGRzSW5mb0l0ZXItPnNlY29uZDsKLSAgICAg
ICAgaW5mby5kZXB0aEJpdHMgPSBkc0luZm8uZGVwdGhCaXRzOwotICAgICAgICBpbmZvLnN0ZW5j
aWxCaXRzID0gZHNJbmZvLnN0ZW5jaWxCaXRzOwotICAgIH0KLQotICAgIGluZm8uY29tcG9uZW50
VHlwZSA9IGNvbXBvbmVudFR5cGU7Ci0KLSAgICBzdGF0aWMgY29uc3QgRDNEMTFGYXN0Q29weU1h
cCBmYXN0Q29weU1hcCA9IEJ1aWxkRmFzdENvcHlNYXAoKTsKLSAgICBzdGQ6OnBhaXI8RDNEMTFG
YXN0Q29weU1hcDo6Y29uc3RfaXRlcmF0b3IsIEQzRDExRmFzdENvcHlNYXA6OmNvbnN0X2l0ZXJh
dG9yPiBmYXN0Q29weUl0ZXIgPSBmYXN0Q29weU1hcC5lcXVhbF9yYW5nZShkeGdpRm9ybWF0KTsK
LSAgICBmb3IgKEQzRDExRmFzdENvcHlNYXA6OmNvbnN0X2l0ZXJhdG9yIGkgPSBmYXN0Q29weUl0
ZXIuZmlyc3Q7IGkgIT0gZmFzdENvcHlJdGVyLnNlY29uZDsgaSsrKQotICAgIHsKLSAgICAgICAg
aW5mby5mYXN0Q29weUZ1bmN0aW9ucy5pbnNlcnQoc3RkOjptYWtlX3BhaXIoc3RkOjptYWtlX3Bh
aXIoaS0+c2Vjb25kLmRlc3RGb3JtYXQsIGktPnNlY29uZC5kZXN0VHlwZSksIGktPnNlY29uZC5j
b3B5RnVuY3Rpb24pKTsKLSAgICB9Ci0KLSAgICBpbmZvLm5hdGl2ZU1pcG1hcFN1cHBvcnQgPSBu
YXRpdmVNaXBtYXBTdXBwb3J0OwotCi0gICAgbWFwLT5pbnNlcnQoc3RkOjptYWtlX3BhaXIoZHhn
aUZvcm1hdCwgaW5mbykpOwotfQotCi0vLyBBIG1hcCB0byBkZXRlcm1pbmUgdGhlIGNvbG9yIHJl
YWQgZnVuY3Rpb24gYW5kIG1pcG1hcCBnZW5lcmF0aW9uIGZ1bmN0aW9uIG9mIGEgZ2l2ZW4gRFhH
SSBmb3JtYXQKLXN0YXRpYyBEWEdJRm9ybWF0SW5mb01hcCBCdWlsZERYR0lGb3JtYXRJbmZvTWFw
KCkKLXsKLSAgICBEWEdJRm9ybWF0SW5mb01hcCBtYXA7Ci0KLSAgICAvLyBjbGFuZy1mb3JtYXQg
b2ZmCi0gICAgLy8gICAgICAgICAgICAgICAgfCBEWEdJIGZvcm1hdCAgICAgICAgICAgICAgICAg
ICAgICAgICB8IENvbXBvbmVudCBUeXBlICAgICAgICB8IENvbG9yIHJlYWQgZnVuY3Rpb24gICAg
ICAgICAgICAgIHwgTmF0aXZlIG1pcG1hcCBmdW5jdGlvbgotICAgIEFkZERYR0lGb3JtYXQoJm1h
cCwgRFhHSV9GT1JNQVRfVU5LTk9XTiwgICAgICAgICAgICAgICAgICBHTF9OT05FLCAgICAgICAg
ICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0KLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lf
Rk9STUFUX0E4X1VOT1JNLCAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwg
UmVxdWlyZXNGZWF0dXJlTGV2ZWw8RDNEX0ZFQVRVUkVfTEVWRUxfMTBfMD4pOwotICAgIEFkZERY
R0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjhfVU5PUk0sICAgICAgICAgICAgICAgICBHTF9V
TlNJR05FRF9OT1JNQUxJWkVELCBSZXF1aXJlc0ZlYXR1cmVMZXZlbDxEM0RfRkVBVFVSRV9MRVZF
TF8xMF8wPik7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SMTZfVU5PUk0s
ICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIE5ldmVyU3VwcG9ydGVkKTsK
LSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1I4RzhfVU5PUk0sICAgICAgICAg
ICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgUmVxdWlyZXNGZWF0dXJlTGV2ZWw8RDNEX0ZF
QVRVUkVfTEVWRUxfMTBfMD4pOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRf
UjE2RzE2X1VOT1JNLCAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBOZXZlclN1
cHBvcnRlZCk7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9V
Tk9STSwgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIFJlcXVpcmVzRmVhdHVyZUxl
dmVsPEQzRF9GRUFUVVJFX0xFVkVMXzlfMT4pOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhH
SV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVE
LCBSZXF1aXJlc0ZlYXR1cmVMZXZlbDxEM0RfRkVBVFVSRV9MRVZFTF85XzE+KTsKLSAgICBBZGRE
WEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNLCAgICAgICAgICAgR0xf
VU5TSUdORURfTk9STUFMSVpFRCwgUmVxdWlyZXNGZWF0dXJlTGV2ZWw8RDNEX0ZFQVRVUkVfTEVW
RUxfOV8xPik7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZB
MTZfVU5PUk0sICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIE5ldmVyU3VwcG9ydGVkKTsK
LQotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjhfU05PUk0sICAgICAgICAg
ICAgICAgICBHTF9TSUdORURfTk9STUFMSVpFRCwgICBSZXF1aXJlc0ZlYXR1cmVMZXZlbDxEM0Rf
RkVBVFVSRV9MRVZFTF8xMF8wPik7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1B
VF9SMTZfU05PUk0sICAgICAgICAgICAgICAgIEdMX1NJR05FRF9OT1JNQUxJWkVELCAgIE5ldmVy
U3VwcG9ydGVkKTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1I4RzhfU05P
Uk0sICAgICAgICAgICAgICAgR0xfU0lHTkVEX05PUk1BTElaRUQsICAgUmVxdWlyZXNGZWF0dXJl
TGV2ZWw8RDNEX0ZFQVRVUkVfTEVWRUxfMTBfMD4pOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwg
RFhHSV9GT1JNQVRfUjE2RzE2X1NOT1JNLCAgICAgICAgICAgICBHTF9TSUdORURfTk9STUFMSVpF
RCwgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1B
VF9SOEc4QjhBOF9TTk9STSwgICAgICAgICAgIEdMX1NJR05FRF9OT1JNQUxJWkVELCAgIFJlcXVp
cmVzRmVhdHVyZUxldmVsPEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA+KTsKLSAgICBBZGREWEdJRm9y
bWF0KCZtYXAsIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TTk9STSwgICAgICAgR0xfU0lHTkVE
X05PUk1BTElaRUQsICAgTmV2ZXJTdXBwb3J0ZWQpOwotCi0gICAgQWRkRFhHSUZvcm1hdCgmbWFw
LCBEWEdJX0ZPUk1BVF9SOF9VSU5ULCAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwg
ICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9S
TUFUX1IxNl9VSU5ULCAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgTmV2
ZXJTdXBwb3J0ZWQpOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjMyX1VJ
TlQsICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICBOZXZlclN1cHBvcnRl
ZCk7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SOEc4X1VJTlQsICAgICAg
ICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBB
ZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IxNkcxNl9VSU5ULCAgICAgICAgICAgICAg
R0xfVU5TSUdORURfSU5ULCAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZERYR0lGb3Jt
YXQoJm1hcCwgRFhHSV9GT1JNQVRfUjMyRzMyX1VJTlQsICAgICAgICAgICAgICBHTF9VTlNJR05F
RF9JTlQsICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBE
WEdJX0ZPUk1BVF9SMzJHMzJCMzJfVUlOVCwgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAg
ICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFU
X1I4RzhCOEE4X1VJTlQsICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgTmV2ZXJT
dXBwb3J0ZWQpOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjE2RzE2QjE2
QTE2X1VJTlQsICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICBOZXZlclN1cHBvcnRlZCk7
Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVCwg
ICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKLQotICAgIEFk
ZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjhfU0lOVCwgICAgICAgICAgICAgICAgICBH
TF9JTlQsICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkRFhHSUZvcm1h
dCgmbWFwLCBEWEdJX0ZPUk1BVF9SMTZfU0lOVCwgICAgICAgICAgICAgICAgIEdMX0lOVCwgICAg
ICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERY
R0lfRk9STUFUX1IzMl9TSU5ULCAgICAgICAgICAgICAgICAgR0xfSU5ULCAgICAgICAgICAgICAg
ICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRf
UjhHOF9TSU5ULCAgICAgICAgICAgICAgICBHTF9JTlQsICAgICAgICAgICAgICAgICBOZXZlclN1
cHBvcnRlZCk7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SMTZHMTZfU0lO
VCwgICAgICAgICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsK
LSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IzMkczMl9TSU5ULCAgICAgICAg
ICAgICAgR0xfSU5ULCAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZERY
R0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX1NJTlQsICAgICAgICAgICBHTF9J
TlQsICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkRFhHSUZvcm1hdCgm
bWFwLCBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5ULCAgICAgICAgICAgIEdMX0lOVCwgICAgICAg
ICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lf
Rk9STUFUX1IxNkcxNkIxNkExNl9TSU5ULCAgICAgICAgR0xfSU5ULCAgICAgICAgICAgICAgICAg
TmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjMy
RzMyQjMyQTMyX1NJTlQsICAgICAgICBHTF9JTlQsICAgICAgICAgICAgICAgICBOZXZlclN1cHBv
cnRlZCk7Ci0KLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IxMEcxMEIxMEEy
X1RZUEVMRVNTLCAgICAgR0xfTk9ORSwgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwot
ICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVU5PUk0sICAg
ICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBSZXF1aXJlc0ZlYXR1cmVMZXZlbDxEM0RfRkVB
VFVSRV9MRVZFTF8xMF8wPik7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9S
MTBHMTBCMTBBMl9VSU5ULCAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgIE5ldmVyU3Vw
cG9ydGVkKTsKLQotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjE2X0ZMT0FU
LCAgICAgICAgICAgICAgICBHTF9GTE9BVCwgICAgICAgICAgICAgICBSZXF1aXJlc0ZlYXR1cmVM
ZXZlbDxEM0RfRkVBVFVSRV9MRVZFTF8xMF8wPik7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBE
WEdJX0ZPUk1BVF9SMTZHMTZfRkxPQVQsICAgICAgICAgICAgIEdMX0ZMT0FULCAgICAgICAgICAg
ICAgIFJlcXVpcmVzRmVhdHVyZUxldmVsPEQzRF9GRUFUVVJFX0xFVkVMXzlfMj4pOwotICAgIEFk
ZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULCAgICAgICBH
TF9GTE9BVCwgICAgICAgICAgICAgICBSZXF1aXJlc0ZlYXR1cmVMZXZlbDxEM0RfRkVBVFVSRV9M
RVZFTF85XzI+KTsKLQotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjMyX0ZM
T0FULCAgICAgICAgICAgICAgICBHTF9GTE9BVCwgICAgICAgICAgICAgICBSZXF1aXJlc0ZlYXR1
cmVMZXZlbDxEM0RfRkVBVFVSRV9MRVZFTF85XzI+KTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAs
IERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwgICAgICAgICAgICAgR0xfRkxPQVQsICAgICAgICAg
ICAgICAgUmVxdWlyZXNGZWF0dXJlTGV2ZWw8RDNEX0ZFQVRVUkVfTEVWRUxfMTBfMD4pOwotICAg
IEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FULCAgICAgICAg
ICBHTF9GTE9BVCwgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkRFhHSUZv
cm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsICAgICAgIEdMX0ZMT0FU
LCAgICAgICAgICAgICAgIFJlcXVpcmVzRmVhdHVyZUxldmVsPEQzRF9GRUFUVVJFX0xFVkVMXzlf
Mz4pOwotCi0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SOUc5QjlFNV9TSEFS
RURFWFAsICAgICAgIEdMX0ZMT0FULCAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAg
ICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IxMUcxMUIxMF9GTE9BVCwgICAgICAg
ICAgR0xfRkxPQVQsICAgICAgICAgICAgICAgUmVxdWlyZXNGZWF0dXJlTGV2ZWw8RDNEX0ZFQVRV
UkVfTEVWRUxfMTBfMD4pOwotCi0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9S
OF9UWVBFTEVTUywgICAgICAgICAgICAgIEdMX05PTkUsICAgICAgICAgICAgICAgIE5ldmVyU3Vw
cG9ydGVkKTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IxNl9UWVBFTEVT
UywgICAgICAgICAgICAgR0xfTk9ORSwgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwot
ICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjMyX1RZUEVMRVNTLCAgICAgICAg
ICAgICBHTF9OT05FLCAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkRFhH
SUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SOEc4X1RZUEVMRVNTLCAgICAgICAgICAgIEdMX05P
TkUsICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGREWEdJRm9ybWF0KCZt
YXAsIERYR0lfRk9STUFUX1IxNkcxNl9UWVBFTEVTUywgICAgICAgICAgR0xfTk9ORSwgICAgICAg
ICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9G
T1JNQVRfUjMyRzMyX1RZUEVMRVNTLCAgICAgICAgICBHTF9OT05FLCAgICAgICAgICAgICAgICBO
ZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SOEc4
X1RZUEVMRVNTLCAgICAgICAgICAgIEdMX05PTkUsICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9y
dGVkKTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IxNkcxNl9UWVBFTEVT
UywgICAgICAgICAgR0xfTk9ORSwgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAg
IEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjMyRzMyX1RZUEVMRVNTLCAgICAgICAg
ICBHTF9OT05FLCAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkRFhHSUZv
cm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfVFlQRUxFU1MsICAgICAgIEdMX05PTkUs
ICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAs
IERYR0lfRk9STUFUX1I4RzhCOEE4X1RZUEVMRVNTLCAgICAgICAgR0xfTk9ORSwgICAgICAgICAg
ICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JN
QVRfUjE2RzE2QjE2QTE2X1RZUEVMRVNTLCAgICBHTF9OT05FLCAgICAgICAgICAgICAgICBOZXZl
clN1cHBvcnRlZCk7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SMzJHMzJC
MzJBMzJfVFlQRUxFU1MsICAgIEdMX05PTkUsICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVk
KTsKLQotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjI0RzhfVFlQRUxFU1Ms
ICAgICAgICAgICBHTF9OT05FLCAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAg
QWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SMjRfVU5PUk1fWDhfVFlQRUxFU1MsICAg
IEdMX05PTkUsICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGREWEdJRm9y
bWF0KCZtYXAsIERYR0lfRk9STUFUX1IzMkc4WDI0X1RZUEVMRVNTLCAgICAgICAgR0xfTk9ORSwg
ICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwg
RFhHSV9GT1JNQVRfUjMyX0ZMT0FUX1g4WDI0X1RZUEVMRVNTLCBHTF9OT05FLCAgICAgICAgICAg
ICAgICBOZXZlclN1cHBvcnRlZCk7Ci0KLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9S
TUFUX0QxNl9VTk9STSwgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgTmV2
ZXJTdXBwb3J0ZWQpOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfRDI0X1VO
T1JNX1M4X1VJTlQsICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICBOZXZlclN1cHBvcnRl
ZCk7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9EMzJfRkxPQVRfUzhYMjRf
VUlOVCwgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBB
ZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX0QzMl9GTE9BVCwgICAgICAgICAgICAgICAg
R0xfRkxPQVQsICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotCi0gICAgQWRkRFhHSUZv
cm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9CQzFfVU5PUk0sICAgICAgICAgICAgICAgIEdMX1VOU0lH
TkVEX05PUk1BTElaRUQsIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAs
IERYR0lfRk9STUFUX0JDMl9VTk9STSwgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFM
SVpFRCwgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JN
QVRfQkMzX1VOT1JNLCAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBOZXZl
clN1cHBvcnRlZCk7Ci0KLSAgICAvLyBCNUc2UjUgaW4gRDNEMTEgaXMgdHJlYXRlZCB0aGUgc2Ft
ZSBhcyBSNUc2QjUgaW4gRDNEOSwgc28gcmV1c2UgdGhlIFI1RzZCNSBmdW5jdGlvbnMgdXNlZCBi
eSB0aGUgRDNEOSByZW5kZXJlci4KLSAgICAvLyBUaGUgc2FtZSBhcHBsaWVzIHRvIEI0RzRSNEE0
IGFuZCBCNUc1UjVBMSB3aXRoIEE0UjRHNEI0IGFuZCBBMVI1RzVCNSByZXNwZWN0aXZlbHkuCi0g
ICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9CNUc2UjVfVU5PUk0sICAgICAgICAg
ICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIFJlcXVpcmVzRmVhdHVyZUxldmVsPEQzRF9GRUFU
VVJFX0xFVkVMXzlfMT4pOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfQjRH
NFI0QTRfVU5PUk0sICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBOZXZlclN1cHBv
cnRlZCk7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9CNUc1UjVBMV9VTk9S
TSwgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIE5ldmVyU3VwcG9ydGVkKTsKLSAg
ICAvLyBjbGFuZy1mb3JtYXQgb24KLQotICAgIHJldHVybiBtYXA7Ci19Ci0KLWNvbnN0IERYR0lG
b3JtYXQgJkdldERYR0lGb3JtYXRJbmZvKERYR0lfRk9STUFUIGZvcm1hdCkKLXsKLSAgICBzdGF0
aWMgY29uc3QgRFhHSUZvcm1hdEluZm9NYXAgaW5mb01hcCA9IEJ1aWxkRFhHSUZvcm1hdEluZm9N
YXAoKTsKLSAgICBEWEdJRm9ybWF0SW5mb01hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGluZm9N
YXAuZmluZChmb3JtYXQpOwotICAgIGlmIChpdGVyICE9IGluZm9NYXAuZW5kKCkpCi0gICAgewot
ICAgICAgICByZXR1cm4gaXRlci0+c2Vjb25kOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAg
ICAgICBzdGF0aWMgRFhHSUZvcm1hdCBkZWZhdWx0SW5mbzsKLSAgICAgICAgcmV0dXJuIGRlZmF1
bHRJbmZvOwotICAgIH0KKyAgICBjb25zdCBhdXRvICZzdXBwb3J0ID0gR2V0RFhHSVN1cHBvcnQo
ZHhnaUZvcm1hdCwgZmVhdHVyZUxldmVsKTsKKyAgICBBU1NFUlQoKHN1cHBvcnQub3B0aW9uYWxs
eVN1cHBvcnRlZEZsYWdzICYgRDNEMTFfRk9STUFUX1NVUFBPUlRfTUlQX0FVVE9HRU4pID09IDAp
OworICAgIHJldHVybiAoKHN1cHBvcnQuYWx3YXlzU3VwcG9ydGVkRmxhZ3MgJiBEM0QxMV9GT1JN
QVRfU1VQUE9SVF9NSVBfQVVUT0dFTikgIT0gMCk7CiB9CiAKIERYR0lGb3JtYXRTaXplOjpEWEdJ
Rm9ybWF0U2l6ZShHTHVpbnQgcGl4ZWxCaXRzLCBHTHVpbnQgYmxvY2tXaWR0aCwgR0x1aW50IGJs
b2NrSGVpZ2h0KQpAQCAtMTE5Myw2ICs4MzQsNiBAQCBjb25zdCBWZXJ0ZXhGb3JtYXQgJkdldFZl
cnRleEZvcm1hdEluZm8oCiAgICAgfQogfQogCi19Cit9ICAvLyBuYW1lc3BhY2UgZDNkMTEKIAot
fQorfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2Zvcm1hdHV0aWxzMTEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L2Zvcm1hdHV0aWxzMTEuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9mb3JtYXR1dGlsczExLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRlICJjb21tb24vcGxhdGZvcm0u
aCIKICNpbmNsdWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
Zm9ybWF0dXRpbHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9yZW5kZXJlcl91dGls
cy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9mb3JtYXR1dGlsc0QzRC5oIgog
CiBuYW1lc3BhY2UgcngKQEAgLTI0LDM2ICsyNSwxMSBAQCBzdHJ1Y3QgUmVuZGVyZXIxMURldmlj
ZUNhcHM7CiBuYW1lc3BhY2UgZDNkMTEKIHsKIAotdHlwZWRlZiBzdGQ6Om1hcDxzdGQ6OnBhaXI8
R0xlbnVtLCBHTGVudW0+LCBDb2xvckNvcHlGdW5jdGlvbj4gRmFzdENvcHlGdW5jdGlvbk1hcDsK
LXR5cGVkZWYgYm9vbCAoKk5hdGl2ZU1pcG1hcEdlbmVyYXRpb25TdXBwb3J0RnVuY3Rpb24pKEQz
RF9GRUFUVVJFX0xFVkVMKTsKLQotc3RydWN0IERYR0lGb3JtYXQKLXsKLSAgICBEWEdJRm9ybWF0
KCk7Ci0KLSAgICBHTHVpbnQgcmVkQml0czsKLSAgICBHTHVpbnQgZ3JlZW5CaXRzOwotICAgIEdM
dWludCBibHVlQml0czsKLSAgICBHTHVpbnQgYWxwaGFCaXRzOwotICAgIEdMdWludCBzaGFyZWRC
aXRzOwotCi0gICAgR0x1aW50IGRlcHRoQml0czsKLSAgICBHTHVpbnQgc3RlbmNpbEJpdHM7Ci0K
LSAgICBHTGVudW0gY29tcG9uZW50VHlwZTsKLQotICAgIEZhc3RDb3B5RnVuY3Rpb25NYXAgZmFz
dENvcHlGdW5jdGlvbnM7Ci0KLSAgICBOYXRpdmVNaXBtYXBHZW5lcmF0aW9uU3VwcG9ydEZ1bmN0
aW9uIG5hdGl2ZU1pcG1hcFN1cHBvcnQ7Ci0KLSAgICBDb2xvckNvcHlGdW5jdGlvbiBnZXRGYXN0
Q29weUZ1bmN0aW9uKEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlKSBjb25zdDsKLX07Ci0KLS8v
IFRoaXMgc3RydWN0dXJlIGlzIHByb2JsZW1hdGljIGJlY2F1c2UgYSByZXNvdXJjZSBpcyBhc3Nv
Y2lhdGVkIHdpdGggbXVsdGlwbGUgRFhHSSBmb3JtYXRzLgotLy8gRm9yIGV4YW1wbGUsIGEgdGV4
dHVyZSBtaWdodCBiZSBzdG9yZWQgYXMgRFhHSV9GT1JNQVRfUjE2X1RZUEVMRVNTIGJ1dCBzdG9y
ZSBpbnRlZ2VyIGNvbXBvbmVudHMsCisvLyBBIHRleHR1cmUgbWlnaHQgYmUgc3RvcmVkIGFzIERY
R0lfRk9STUFUX1IxNl9UWVBFTEVTUyBidXQgc3RvcmUgaW50ZWdlciBjb21wb25lbnRzLAogLy8g
d2hpY2ggYXJlIGFjY2Vzc2VkIHRocm91Z2ggYW4gRFhHSV9GT1JNQVRfUjE2X1NJTlQgdmlldy4g
SXQncyBlYXN5IHRvIHdyaXRlIGNvZGUgd2hpY2ggcXVlcmllcwogLy8gaW5mb3JtYXRpb24gYWJv
dXQgdGhlIHdyb25nIGZvcm1hdC4gVGhlcmVmb3JlLCB1c2Ugb2YgdGhpcyBzaG91bGQgYmUgYXZv
aWRlZCB3aGVyZSBwb3NzaWJsZS4KLWNvbnN0IERYR0lGb3JtYXQgJkdldERYR0lGb3JtYXRJbmZv
KERYR0lfRk9STUFUIGZvcm1hdCk7CisKK2Jvb2wgU3VwcG9ydHNNaXBHZW4oRFhHSV9GT1JNQVQg
ZHhnaUZvcm1hdCwgRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKTsKIAogc3RydWN0IERY
R0lGb3JtYXRTaXplCiB7CkBAIC03OSw2ICs1NSw5IEBAIHN0cnVjdCBWZXJ0ZXhGb3JtYXQKIGNv
bnN0IFZlcnRleEZvcm1hdCAmR2V0VmVydGV4Rm9ybWF0SW5mbyhnbDo6VmVydGV4Rm9ybWF0VHlw
ZSB2ZXJ0ZXhGb3JtYXRUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCk7CiAKKy8vIEF1dG8tZ2VuZXJhdGVk
IGluIGR4Z2lfZm9ybWF0X21hcF9hdXRvZ2VuLmNwcC4KK0dMZW51bSBHZXRDb21wb25lbnRUeXBl
KERYR0lfRk9STUFUIGR4Z2lGb3JtYXQpOworCiB9ICAvLyBuYW1lc3BhY2UgZDNkMTEKIAogfSAg
Ly8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL2dlbl9keGdpX2Zvcm1hdF90YWJsZS5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL2dlbl9keGdpX2Zvcm1hdF90YWJsZS5weQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2dlbl9keGdpX2Zv
cm1hdF90YWJsZS5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzNCBAQAorIyEvdXNyL2Jp
bi9weXRob24KKyMgQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorIworIyBnZW5fZHhnaV9mb3JtYXRfdGFibGUucHk6CisjICBDb2RlIGdlbmVyYXRp
b24gZm9yIERYR0kgZm9ybWF0IG1hcC4KKworZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZQoraW1w
b3J0IHN5cworCitzeXMucGF0aC5hcHBlbmQoJy4uLy4uJykKK2ltcG9ydCBhbmdsZV9mb3JtYXQK
KwordGVtcGxhdGVfY3BwID0gIiIiLy8gR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVC4KKy8v
IEdlbmVyYXRlZCBieSB7c2NyaXB0X25hbWV9IHVzaW5nIGRhdGEgZnJvbSB7ZGF0YV9zb3VyY2Vf
bmFtZX0uCisvLworLy8gQ29weXJpZ2h0IHtjb3B5cmlnaHRfeWVhcn0gVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gRFhHSSBmb3JtYXQgaW5mbzoKKy8vICAg
RGV0ZXJtaW5pbmcgbWV0YWRhdGEgYWJvdXQgYSBEWEdJIGZvcm1hdC4KKworI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL0Zvcm1hdC5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKK25h
bWVzcGFjZSByeAore3sKKworbmFtZXNwYWNlIGQzZDExCit7eworCitHTGVudW0gR2V0Q29tcG9u
ZW50VHlwZShEWEdJX0ZPUk1BVCBkeGdpRm9ybWF0KQore3sKKyAgICBzd2l0Y2ggKGR4Z2lGb3Jt
YXQpCisgICAge3sKK3tjb21wb25lbnRfdHlwZV9jYXNlc30gICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBicmVhazsKKyAgICB9fQorCisgICAgVU5SRUFDSEFCTEUoKTsKKyAgICByZXR1cm4g
R0xfTk9ORTsKK319CisKK319ICAvLyBuYW1lc3BhY2UgZDNkMTEKKworbmFtZXNwYWNlIGQzZDEx
X2FuZ2xlCit7eworCitjb25zdCBGb3JtYXQgJkdldEZvcm1hdChEWEdJX0ZPUk1BVCBkeGdpRm9y
bWF0KQore3sKKyAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCisgICAge3sKK3tmb3JtYXRfY2FzZXN9
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgfX0KKworICAgIFVOUkVB
Q0hBQkxFKCk7CisgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1hdDo6SUQ6Ok5PTkUpOworfX0K
KworfX0gIC8vIG5hbWVzcGFjZSBkM2QxMV9hbmdsZQorCit9fSAgLy8gbmFtZXNwYWNlIHJ4Cisi
IiIKKwordGVtcGxhdGVfZm9ybWF0X2Nhc2UgPSAiIiIgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
e2R4Z2lfZm9ybWF0fToKKyAgICAgICAgICAgIHJldHVybiB7cmVzdWx0fTsKKyIiIgorCit0ZW1w
bGF0ZV91bmRlZmluZWRfY2FzZSA9ICIiIiAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF97ZHhnaV9m
b3JtYXR9OgorICAgICAgICAgICAgYnJlYWs7CisiIiIKKworZGVmIGZvcm1hdF9jYXNlKGR4Z2lf
Zm9ybWF0LCByZXN1bHQpOgorICAgIHJldHVybiB0ZW1wbGF0ZV9mb3JtYXRfY2FzZS5mb3JtYXQo
CisgICAgICAgIGR4Z2lfZm9ybWF0ID0gZHhnaV9mb3JtYXQsCisgICAgICAgIHJlc3VsdCA9IHJl
c3VsdCkKKworZGVmIHVuZGVmaW5lZF9jYXNlKGR4Z2lfZm9ybWF0KToKKyAgICByZXR1cm4gdGVt
cGxhdGVfdW5kZWZpbmVkX2Nhc2UuZm9ybWF0KGR4Z2lfZm9ybWF0ID0gZHhnaV9mb3JtYXQpCisK
K2NvbXBvbmVudF9jYXNlcyA9ICIiCitmb3JtYXRfY2FzZXMgPSAiIgorCitpbnB1dF9kYXRhID0g
J2R4Z2lfZm9ybWF0X2RhdGEuanNvbicKKworZHhnaV9tYXAgPSBhbmdsZV9mb3JtYXQubG9hZF9q
c29uKGlucHV0X2RhdGEpCisKK3R5cGVzID0geworICAgICdTTk9STSc6ICdHTF9TSUdORURfTk9S
TUFMSVpFRCcsCisgICAgJ1VOT1JNJzogJ0dMX1VOU0lHTkVEX05PUk1BTElaRUQnLAorICAgICdT
SU5UJzogJ0dMX0lOVCcsCisgICAgJ1VJTlQnOiAnR0xfVU5TSUdORURfSU5UJywKKyAgICAnRkxP
QVQnOiAnR0xfRkxPQVQnLAorICAgICdTSEFSRURFWFAnOiAnR0xfRkxPQVQnCit9CisKK2FuZ2xl
X3RvX2dsID0gYW5nbGVfZm9ybWF0LmxvYWRfaW52ZXJzZV90YWJsZSgnLi4vLi4vYW5nbGVfZm9y
bWF0X21hcC5qc29uJykKK2FsbF9hbmdsZSA9IGFuZ2xlX3RvX2dsLmtleXMoKQorCitmb3IgZHhn
aV9mb3JtYXQsIGFuZ2xlX2Zvcm1hdCBpbiBzb3J0ZWQoZHhnaV9tYXAuaXRlcml0ZW1zKCkpOgor
CisgICAgZm91bmQgPSBbY3R5cGUgaW4gZHhnaV9mb3JtYXQgZm9yIGN0eXBlIGluIHR5cGVzLmtl
eXMoKV0KKyAgICBjb3VudCA9IHJlZHVjZSgobGFtYmRhIGEsIGI6IGludChhKSArIGludChiKSks
IGZvdW5kKQorCisgICAgY29tcG9uZW50X3R5cGUgPSAnR0xfTk9ORScKKworICAgIGlmIGNvdW50
ID09IDE6CisgICAgICAgIGdsdHlwZSA9IG5leHQoZ2x0eXBlIGZvciBjdHlwZSwgZ2x0eXBlIGlu
IHR5cGVzLml0ZXJpdGVtcygpIGlmIGN0eXBlIGluIGR4Z2lfZm9ybWF0KQorICAgICAgICBjb21w
b25lbnRfY2FzZXMgKz0gZm9ybWF0X2Nhc2UoZHhnaV9mb3JtYXQsIGdsdHlwZSkKKyAgICBlbHNl
OgorICAgICAgICBjb21wb25lbnRfY2FzZXMgKz0gdW5kZWZpbmVkX2Nhc2UoZHhnaV9mb3JtYXQp
CisKKyAgICBpZiBhbmdsZV9mb3JtYXQgPT0gIiI6CisgICAgICAgIGFuZ2xlX2Zvcm1hdCA9IGR4
Z2lfZm9ybWF0CisKKyAgICBpZiBhbmdsZV9mb3JtYXQgaW4gYWxsX2FuZ2xlOgorICAgICAgICBh
bmdsZV9mb3JtYXQgPSAiRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6IiArIGFuZ2xlX2Zvcm1hdCAr
ICIpIgorICAgICAgICBmb3JtYXRfY2FzZXMgKz0gZm9ybWF0X2Nhc2UoZHhnaV9mb3JtYXQsIGFu
Z2xlX2Zvcm1hdCkKKyAgICBlbHNlOgorICAgICAgICBmb3JtYXRfY2FzZXMgKz0gdW5kZWZpbmVk
X2Nhc2UoZHhnaV9mb3JtYXQpCisKK3dpdGggb3BlbignZHhnaV9mb3JtYXRfbWFwX2F1dG9nZW4u
Y3BwJywgJ3d0JykgYXMgb3V0X2ZpbGU6CisgICAgb3V0cHV0X2NwcCA9IHRlbXBsYXRlX2NwcC5m
b3JtYXQoCisgICAgICAgIHNjcmlwdF9uYW1lID0gc3lzLmFyZ3ZbMF0sCisgICAgICAgIGRhdGFf
c291cmNlX25hbWUgPSBpbnB1dF9kYXRhLAorICAgICAgICBjb3B5cmlnaHRfeWVhciA9IGRhdGUu
dG9kYXkoKS55ZWFyLAorICAgICAgICBjb21wb25lbnRfdHlwZV9jYXNlcyA9IGNvbXBvbmVudF9j
YXNlcywKKyAgICAgICAgZm9ybWF0X2Nhc2VzID0gZm9ybWF0X2Nhc2VzKQorICAgIG91dF9maWxl
LndyaXRlKG91dHB1dF9jcHApCisgICAgb3V0X2ZpbGUuY2xvc2UoKQpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9nZW5fZHhnaV9z
dXBwb3J0X3RhYmxlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2dlbl9keGdpX3N1cHBvcnRfdGFibGVzLnB5
CShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL2dlbl9keGdpX3N1cHBvcnRfdGFibGVzLnB5CSh3b3JraW5n
IGNvcHkpCkBAIC00NiwyNSArNDYsMzggQEAgbmFtZXNwYWNlIGQzZDExCiAjZGVmaW5lIHtwcmVm
aXh9UlQgRDNEMTFfRk9STUFUX1NVUFBPUlRfUkVOREVSX1RBUkdFVAogI2RlZmluZSB7cHJlZml4
fU1TIEQzRDExX0ZPUk1BVF9TVVBQT1JUX01VTFRJU0FNUExFX1JFTkRFUlRBUkdFVAogI2RlZmlu
ZSB7cHJlZml4fURTIEQzRDExX0ZPUk1BVF9TVVBQT1JUX0RFUFRIX1NURU5DSUwKKyNkZWZpbmUg
e3ByZWZpeH1NSVBHRU4gRDNEMTFfRk9STUFUX1NVUFBPUlRfTUlQX0FVVE9HRU4KIAogbmFtZXNw
YWNlCiB7ewogCiBjb25zdCBEWEdJU3VwcG9ydCAmR2V0RGVmYXVsdFN1cHBvcnQoKQoge3sKLSAg
ICBzdGF0aWMgVUlOVCBBbGxTdXBwb3J0RmxhZ3MgPSBEM0QxMV9GT1JNQVRfU1VQUE9SVF9URVhU
VVJFMkQgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDExX0ZPUk1BVF9T
VVBQT1JUX1RFWFRVUkUzRCB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNE
MTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRUNVQkUgfAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEQzRDExX0ZPUk1BVF9TVVBQT1JUX1NIQURFUl9TQU1QTEUgfAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDExX0ZPUk1BVF9TVVBQT1JUX1JFTkRFUl9UQVJH
RVQgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDExX0ZPUk1BVF9TVVBQ
T1JUX01VTFRJU0FNUExFX1JFTkRFUlRBUkdFVCB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRDNEMTFfRk9STUFUX1NVUFBPUlRfREVQVEhfU1RFTkNJTDsKKyAgICBzdGF0aWMg
VUlOVCBBbGxTdXBwb3J0RmxhZ3MgPQorICAgICAgICBEM0QxMV9GT1JNQVRfU1VQUE9SVF9URVhU
VVJFMkQgfCBEM0QxMV9GT1JNQVRfU1VQUE9SVF9URVhUVVJFM0QgfAorICAgICAgICBEM0QxMV9G
T1JNQVRfU1VQUE9SVF9URVhUVVJFQ1VCRSB8IEQzRDExX0ZPUk1BVF9TVVBQT1JUX1NIQURFUl9T
QU1QTEUgfAorICAgICAgICBEM0QxMV9GT1JNQVRfU1VQUE9SVF9SRU5ERVJfVEFSR0VUIHwgRDNE
MTFfRk9STUFUX1NVUFBPUlRfTVVMVElTQU1QTEVfUkVOREVSVEFSR0VUIHwKKyAgICAgICAgRDNE
MTFfRk9STUFUX1NVUFBPUlRfREVQVEhfU1RFTkNJTCB8IEQzRDExX0ZPUk1BVF9TVVBQT1JUX01J
UF9BVVRPR0VOOwogICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBkZWZhdWx0U3VwcG9ydCgw
LCAwLCBBbGxTdXBwb3J0RmxhZ3MpOwogICAgIHJldHVybiBkZWZhdWx0U3VwcG9ydDsKIH19CiAK
K2NvbnN0IERYR0lTdXBwb3J0ICZHZXREWEdJU3VwcG9ydF85XzMoRFhHSV9GT1JNQVQgZHhnaUZv
cm1hdCkKK3t7CisgICAgLy8gY2xhbmctZm9ybWF0IG9mZgorICAgIHN3aXRjaCAoZHhnaUZvcm1h
dCkKKyAgICB7ewore3RhYmxlX2RhdGFfOV8zfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBHZXREZWZhdWx0U3VwcG9ydCgp
OworICAgIH19CisgICAgLy8gY2xhbmctZm9ybWF0IG9uCit9fQorCiBjb25zdCBEWEdJU3VwcG9y
dCAmR2V0RFhHSVN1cHBvcnRfMTBfMChEWEdJX0ZPUk1BVCBkeGdpRm9ybWF0KQoge3sKKyAgICAv
LyBjbGFuZy1mb3JtYXQgb2ZmCiAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQogICAgIHt7CiB7dGFi
bGVfZGF0YV8xMF8wfQpAQCAtNzIsMTAgKzg1LDEyIEBAIGNvbnN0IERYR0lTdXBwb3J0ICZHZXRE
WEdJU3VwcG9ydF8xMF8wKEQKICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgICAg
ICByZXR1cm4gR2V0RGVmYXVsdFN1cHBvcnQoKTsKICAgICB9fQorICAgIC8vIGNsYW5nLWZvcm1h
dCBvbgogfX0KIAogY29uc3QgRFhHSVN1cHBvcnQgJkdldERYR0lTdXBwb3J0XzEwXzEoRFhHSV9G
T1JNQVQgZHhnaUZvcm1hdCkKIHt7CisgICAgLy8gY2xhbmctZm9ybWF0IG9mZgogICAgIHN3aXRj
aCAoZHhnaUZvcm1hdCkKICAgICB7ewoge3RhYmxlX2RhdGFfMTBfMX0KQEAgLTgzLDEwICs5OCwx
MiBAQCBjb25zdCBEWEdJU3VwcG9ydCAmR2V0RFhHSVN1cHBvcnRfMTBfMShECiAgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOwogICAgICAgICAgICAgcmV0dXJuIEdldERlZmF1bHRTdXBwb3J0KCk7
CiAgICAgfX0KKyAgICAvLyBjbGFuZy1mb3JtYXQgb24KIH19CiAKIGNvbnN0IERYR0lTdXBwb3J0
ICZHZXREWEdJU3VwcG9ydF8xMV8wKERYR0lfRk9STUFUIGR4Z2lGb3JtYXQpCiB7eworICAgIC8v
IGNsYW5nLWZvcm1hdCBvZmYKICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCiAgICAge3sKIHt0YWJs
ZV9kYXRhXzExXzB9CkBAIC05NCw2ICsxMTEsNyBAQCBjb25zdCBEWEdJU3VwcG9ydCAmR2V0RFhH
SVN1cHBvcnRfMTFfMChECiAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAgICAgICAg
cmV0dXJuIEdldERlZmF1bHRTdXBwb3J0KCk7CiAgICAgfX0KKyAgICAvLyBjbGFuZy1mb3JtYXQg
b24KIH19CiAKIH19CkBAIC0xMDUsMTEgKzEyMywxNCBAQCBjb25zdCBEWEdJU3VwcG9ydCAmR2V0
RFhHSVN1cHBvcnRfMTFfMChECiAjdW5kZWYge3ByZWZpeH1SVAogI3VuZGVmIHtwcmVmaXh9TVMK
ICN1bmRlZiB7cHJlZml4fURTCisjdW5kZWYge3ByZWZpeH1NSVBHRU4KIAogY29uc3QgRFhHSVN1
cHBvcnQgJkdldERYR0lTdXBwb3J0KERYR0lfRk9STUFUIGR4Z2lGb3JtYXQsIEQzRF9GRUFUVVJF
X0xFVkVMIGZlYXR1cmVMZXZlbCkKIHt7CiAgICAgc3dpdGNoIChmZWF0dXJlTGV2ZWwpCiAgICAg
e3sKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzM6CisgICAgICAgICAgICByZXR1
cm4gR2V0RFhHSVN1cHBvcnRfOV8zKGR4Z2lGb3JtYXQpOwogICAgICAgICBjYXNlIEQzRF9GRUFU
VVJFX0xFVkVMXzEwXzA6CiAgICAgICAgICAgICByZXR1cm4gR2V0RFhHSVN1cHBvcnRfMTBfMChk
eGdpRm9ybWF0KTsKICAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgpAQCAtMTI5
LDcgKzE1MCw3IEBAIGNvbnN0IERYR0lTdXBwb3J0ICZHZXREWEdJU3VwcG9ydChEWEdJX0YKIHRh
YmxlX2luaXQgPSAiIgogCiBkZWYgZG9fZm9ybWF0KGZvcm1hdF9kYXRhKToKLSAgICB0YWJsZV9k
YXRhID0geycxMF8wJzogJycsICcxMF8xJzogJycsICcxMV8wJzogJyd9CisgICAgdGFibGVfZGF0
YSA9IHsnOV8zJzogJycsICcxMF8wJzogJycsICcxMF8xJzogJycsICcxMV8wJzogJyd9CiAKICAg
ICBqc29uX2ZsYWdfdG9fZDNkID0gewogICAgICAgICAndGV4dHVyZTJEJzogbWFjcm9fcHJlZml4
ICsgJzJEJywKQEAgLTEzOCw3ICsxNTksOCBAQCBkZWYgZG9fZm9ybWF0KGZvcm1hdF9kYXRhKToK
ICAgICAgICAgJ3NoYWRlclNhbXBsZSc6IG1hY3JvX3ByZWZpeCArICdTQU1QTEUnLAogICAgICAg
ICAncmVuZGVyVGFyZ2V0JzogbWFjcm9fcHJlZml4ICsgJ1JUJywKICAgICAgICAgJ211bHRpc2Ft
cGxlUlQnOiBtYWNyb19wcmVmaXggKyAnTVMnLAotICAgICAgICAnZGVwdGhTdGVuY2lsJzogbWFj
cm9fcHJlZml4ICsgJ0RTJworICAgICAgICAnZGVwdGhTdGVuY2lsJzogbWFjcm9fcHJlZml4ICsg
J0RTJywKKyAgICAgICAgJ21pcEF1dG9HZW4nOiBtYWNyb19wcmVmaXggKyAnTUlQR0VOJwogICAg
IH0KIAogICAgIGZvciBmb3JtYXRfbmFtZSwgZm9ybWF0X3N1cHBvcnQgaW4gc29ydGVkKGZvcm1h
dF9kYXRhLml0ZXJpdGVtcygpKToKQEAgLTE0Niw2ICsxNjgsOSBAQCBkZWYgZG9fZm9ybWF0KGZv
cm1hdF9kYXRhKToKICAgICAgICAgYWx3YXlzX3N1cHBvcnRlZCA9IHNldCgpCiAgICAgICAgIG5l
dmVyX3N1cHBvcnRlZCA9IHNldCgpCiAgICAgICAgIG9wdGlvbmFsbHlfc3VwcG9ydGVkID0gc2V0
KCkKKyAgICAgICAgZmxfOV8zX3N1cHBvcnRlZCA9IHNldCgpCisgICAgICAgIGZsXzlfM19jaGVj
ayA9IHNldCgpCisgICAgICAgIGZsXzEwXzBfc3VwcG9ydGVkID0gc2V0KCkKICAgICAgICAgZmxf
MTBfMV9zdXBwb3J0ZWQgPSBzZXQoKQogICAgICAgICBmbF8xMV8wX3N1cHBvcnRlZCA9IHNldCgp
CiAgICAgICAgIGZsXzExXzBfY2hlY2sgPSBzZXQoKQpAQCAtMTYzLDggKzE4OCw3IEBAIGRlZiBk
b19mb3JtYXQoZm9ybWF0X2RhdGEpOgogICAgICAgICAgICAgZWxpZiBzdXBwb3J0ID09ICduZXZl
cic6CiAgICAgICAgICAgICAgICAgbmV2ZXJfc3VwcG9ydGVkLnVwZGF0ZShkM2RfZmxhZykKICAg
ICAgICAgICAgIGVsaWYgc3VwcG9ydCA9PSAnMTBfMCc6Ci0gICAgICAgICAgICAgICAgIyBUT0RP
KGptYWRpbGwpOiBGTCA5XzMgaGFuZGxpbmcKLSAgICAgICAgICAgICAgICBhbHdheXNfc3VwcG9y
dGVkLnVwZGF0ZShkM2RfZmxhZykKKyAgICAgICAgICAgICAgICBmbF8xMF8wX3N1cHBvcnRlZC51
cGRhdGUoZDNkX2ZsYWcpCiAgICAgICAgICAgICBlbGlmIHN1cHBvcnQgPT0gJzEwXzEnOgogICAg
ICAgICAgICAgICAgIGZsXzEwXzFfc3VwcG9ydGVkLnVwZGF0ZShkM2RfZmxhZykKICAgICAgICAg
ICAgIGVsaWYgc3VwcG9ydCA9PSAnMTFfMCc6CkBAIC0xODEsMjEgKzIwNSwzMyBAQCBkZWYgZG9f
Zm9ybWF0KGZvcm1hdF9kYXRhKToKICAgICAgICAgICAgICAgICBmbF8xMF8wX2NoZWNrXzExXzBf
c3VwcG9ydGVkLnVwZGF0ZShkM2RfZmxhZykKICAgICAgICAgICAgIGVsaWYgc3VwcG9ydCA9PSAn
MTFfMGNoZWNrJzoKICAgICAgICAgICAgICAgICBmbF8xMV8wX2NoZWNrLnVwZGF0ZShkM2RfZmxh
ZykKKyAgICAgICAgICAgIGVsaWYgc3VwcG9ydCA9PSAnOV8zYWx3YXlzXzEwXzBjaGVjazExXzBh
bHdheXMnOgorICAgICAgICAgICAgICAgIGZsXzlfM19zdXBwb3J0ZWQudXBkYXRlKGQzZF9mbGFn
KQorICAgICAgICAgICAgICAgIGZsXzEwXzBfY2hlY2tfMTFfMF9zdXBwb3J0ZWQudXBkYXRlKGQz
ZF9mbGFnKQorICAgICAgICAgICAgZWxpZiBzdXBwb3J0ID09ICc5XzNjaGVja18xMF8wYWx3YXlz
JzoKKyAgICAgICAgICAgICAgICBmbF85XzNfY2hlY2sudXBkYXRlKGQzZF9mbGFnKQorICAgICAg
ICAgICAgICAgIGZsXzEwXzBfc3VwcG9ydGVkLnVwZGF0ZShkM2RfZmxhZykKICAgICAgICAgICAg
IGVsc2U6CiAgICAgICAgICAgICAgICAgcHJpbnQoIkRhdGEgc3BlY2lmaWNhdGlvbiBlcnJvcjog
IiArIHN1cHBvcnQpCiAgICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKIAotICAgICAgICBmb3Ig
ZmVhdHVyZV9sZXZlbCBpbiBbJzEwXzAnLCAnMTBfMScsICcxMV8wJ106CisgICAgICAgIGZvciBm
ZWF0dXJlX2xldmVsIGluIFsnOV8zJywgJzEwXzAnLCAnMTBfMScsICcxMV8wJ106CiAgICAgICAg
ICAgICBhbHdheXNfZm9yX2ZsID0gYWx3YXlzX3N1cHBvcnRlZAogICAgICAgICAgICAgb3B0aW9u
YWxfZm9yX2ZsID0gb3B0aW9uYWxseV9zdXBwb3J0ZWQKLSAgICAgICAgICAgIGlmIGZlYXR1cmVf
bGV2ZWwgPT0gJzEwXzAnOgorICAgICAgICAgICAgaWYgZmVhdHVyZV9sZXZlbCA9PSAnOV8zJzoK
KyAgICAgICAgICAgICAgICBhbHdheXNfZm9yX2ZsID0gZmxfOV8zX3N1cHBvcnRlZC51bmlvbihh
bHdheXNfZm9yX2ZsKQorICAgICAgICAgICAgICAgIG9wdGlvbmFsX2Zvcl9mbCA9IGZsXzlfM19j
aGVjay51bmlvbihvcHRpb25hbF9mb3JfZmwpCisgICAgICAgICAgICBlbGlmIGZlYXR1cmVfbGV2
ZWwgPT0gJzEwXzAnOgorICAgICAgICAgICAgICAgIGFsd2F5c19mb3JfZmwgPSBmbF8xMF8wX3N1
cHBvcnRlZC51bmlvbihhbHdheXNfZm9yX2ZsKQogICAgICAgICAgICAgICAgIG9wdGlvbmFsX2Zv
cl9mbCA9IGZsXzEwXzBfY2hlY2tfMTBfMV9zdXBwb3J0ZWQudW5pb24ob3B0aW9uYWxfZm9yX2Zs
KQogICAgICAgICAgICAgICAgIG9wdGlvbmFsX2Zvcl9mbCA9IGZsXzEwXzBfY2hlY2tfMTFfMF9z
dXBwb3J0ZWQudW5pb24ob3B0aW9uYWxfZm9yX2ZsKQotICAgICAgICAgICAgaWYgZmVhdHVyZV9s
ZXZlbCA9PSAnMTBfMSc6CisgICAgICAgICAgICBlbGlmIGZlYXR1cmVfbGV2ZWwgPT0gJzEwXzEn
OgorICAgICAgICAgICAgICAgIGFsd2F5c19mb3JfZmwgPSBmbF8xMF8wX3N1cHBvcnRlZC51bmlv
bihhbHdheXNfZm9yX2ZsKQogICAgICAgICAgICAgICAgIGFsd2F5c19mb3JfZmwgPSBmbF8xMF8x
X3N1cHBvcnRlZC51bmlvbihhbHdheXNfZm9yX2ZsKQogICAgICAgICAgICAgICAgIGFsd2F5c19m
b3JfZmwgPSBmbF8xMF8wX2NoZWNrXzEwXzFfc3VwcG9ydGVkLnVuaW9uKGFsd2F5c19mb3JfZmwp
CiAgICAgICAgICAgICAgICAgb3B0aW9uYWxfZm9yX2ZsID0gZmxfMTBfMF9jaGVja18xMV8wX3N1
cHBvcnRlZC51bmlvbihvcHRpb25hbF9mb3JfZmwpCiAgICAgICAgICAgICBlbGlmIGZlYXR1cmVf
bGV2ZWwgPT0gJzExXzAnOgorICAgICAgICAgICAgICAgIGFsd2F5c19mb3JfZmwgPSBmbF8xMF8w
X3N1cHBvcnRlZC51bmlvbihhbHdheXNfZm9yX2ZsKQogICAgICAgICAgICAgICAgIGFsd2F5c19m
b3JfZmwgPSBmbF8xMF8wX2NoZWNrXzEwXzFfc3VwcG9ydGVkLnVuaW9uKGFsd2F5c19mb3JfZmwp
CiAgICAgICAgICAgICAgICAgYWx3YXlzX2Zvcl9mbCA9IGZsXzEwXzBfY2hlY2tfMTFfMF9zdXBw
b3J0ZWQudW5pb24oYWx3YXlzX2Zvcl9mbCkKICAgICAgICAgICAgICAgICBhbHdheXNfZm9yX2Zs
ID0gZmxfMTBfMV9zdXBwb3J0ZWQudW5pb24oYWx3YXlzX2Zvcl9mbCkKQEAgLTIxOCw3ICsyNTQs
OCBAQCBkZWYgZG9fZm9ybWF0KGZvcm1hdF9kYXRhKToKICAgICByZXR1cm4gdGFibGVfZGF0YQog
CiBkZWYgam9pbl90YWJsZV9kYXRhKHRhYmxlX2RhdGFfMSwgdGFibGVfZGF0YV8yKToKLSAgICBy
ZXR1cm4geycxMF8wJzogdGFibGVfZGF0YV8xWycxMF8wJ10gKyB0YWJsZV9kYXRhXzJbJzEwXzAn
XSwKKyAgICByZXR1cm4geyc5XzMnOiAgdGFibGVfZGF0YV8xWyc5XzMnXSAgKyB0YWJsZV9kYXRh
XzJbJzlfMyddLAorICAgICAgICAgICAgJzEwXzAnOiB0YWJsZV9kYXRhXzFbJzEwXzAnXSArIHRh
YmxlX2RhdGFfMlsnMTBfMCddLAogICAgICAgICAgICAgJzEwXzEnOiB0YWJsZV9kYXRhXzFbJzEw
XzEnXSArIHRhYmxlX2RhdGFfMlsnMTBfMSddLAogICAgICAgICAgICAgJzExXzAnOiB0YWJsZV9k
YXRhXzFbJzExXzAnXSArIHRhYmxlX2RhdGFfMlsnMTFfMCddfQogCkBAIC0yMjcsMTIgKzI2NCwx
MyBAQCB3aXRoIG9wZW4oJ2R4Z2lfc3VwcG9ydF9kYXRhLmpzb24nKSBhcyBkCiAgICAgZHhnaV9m
aWxlLmNsb3NlKCkKICAgICBqc29uX2RhdGEgPSBqc29uLmxvYWRzKGZpbGVfZGF0YSkKIAotICAg
IHRhYmxlX2RhdGEgPSB7JzEwXzAnOiAnJywgJzEwXzEnOiAnJywgJzExXzAnOiAnJ30KKyAgICB0
YWJsZV9kYXRhID0geyc5XzMnOiAnJywgJzEwXzAnOiAnJywgJzEwXzEnOiAnJywgJzExXzAnOiAn
J30KIAogICAgIGZvciBmb3JtYXRfZGF0YSBpbiBqc29uX2RhdGE6CiAgICAgICAgIHRhYmxlX2Rh
dGEgPSBqb2luX3RhYmxlX2RhdGEodGFibGVfZGF0YSwgZG9fZm9ybWF0KGZvcm1hdF9kYXRhKSkK
IAogICAgIG91dF9kYXRhID0gdGVtcGxhdGUuZm9ybWF0KHByZWZpeD1tYWNyb19wcmVmaXgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZGF0YV85XzM9dGFibGVfZGF0YVsn
OV8zJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZGF0YV8xMF8wPXRh
YmxlX2RhdGFbJzEwXzAnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9k
YXRhXzEwXzE9dGFibGVfZGF0YVsnMTBfMSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRhYmxlX2RhdGFfMTFfMD10YWJsZV9kYXRhWycxMV8wJ10pCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2dlbl9sb2FkX2Z1
bmN0aW9uc190YWJsZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2dlbl9sb2FkX2Z1bmN0aW9uc190YWJsZS5w
eQkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9nZW5fbG9hZF9mdW5jdGlvbnNfdGFibGUucHkJKG5vbmV4
aXN0ZW50KQpAQCAtMSwxOTkgKzAsMCBAQAotIyEvdXNyL2Jpbi9weXRob24KLSMgQ29weXJpZ2h0
IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQotIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotIwotIyBnZW5fbG9h
ZF9mdW5jdGlvbnNfdGFibGUucHk6Ci0jICBDb2RlIGdlbmVyYXRpb24gZm9yIHRoZSBsb2FkIGZ1
bmN0aW9uIHRhYmxlcyB1c2VkIGZvciB0ZXh0dXJlIGZvcm1hdHMKLSMKLQotaW1wb3J0IGpzb24K
LQotdGVtcGxhdGUgPSAiIiIvLyBHRU5FUkFURUQgRklMRSAtIERPIE5PVCBFRElULgotLy8gR2Vu
ZXJhdGVkIGJ5IGdlbl9sb2FkX2Z1bmN0aW9uc190YWJsZS5weSB1c2luZyBkYXRhIGZyb20gbG9h
ZF9mdW5jdGlvbnNfZGF0YS5qc29uCi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gbG9hZF9mdW5jdGlvbnNfdGFibGU6
Ci0vLyAgIENvbnRhaW5zIHRoZSBHZXRMb2FkRnVuY3Rpb25zTWFwIGZvciB0ZXh0dXJlX2Zvcm1h
dF91dGlsLmgKLS8vCi0KLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvbG9h
ZF9mdW5jdGlvbnNfdGFibGUuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvZm9ybWF0dXRpbHMxMS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS90ZXh0dXJlX2Zvcm1hdF90YWJsZS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9sb2FkaW1hZ2UuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvbG9hZGltYWdl
X2V0Yy5oIgotCi1uYW1lc3BhY2UgcngKLXt7Ci0KLW5hbWVzcGFjZSBkM2QxMQote3sKLQotbmFt
ZXNwYWNlCi17ewotCi0vLyBFUzMgaW1hZ2UgbG9hZGluZyBmdW5jdGlvbnMgdmFyeSBiYXNlZCBv
bjoKLS8vICAgIC0gdGhlIEdMIGludGVybmFsIGZvcm1hdCAoc3VwcGxpZWQgdG8gZ2xUZXgqSW1h
Z2UqRCkKLS8vICAgIC0gdGhlIEdMIGRhdGEgdHlwZSBnaXZlbiAoc3VwcGxpZWQgdG8gZ2xUZXgq
SW1hZ2UqRCkKLS8vICAgIC0gdGhlIHRhcmdldCBEWEdJX0ZPUk1BVCB0aGF0IHRoZSBpbWFnZSB3
aWxsIGJlIGxvYWRlZCBpbnRvICh3aGljaCBpcyBjaG9zZW4gYmFzZWQgb24gdGhlIEQzRAotLy8g
ICAgZGV2aWNlJ3MgY2FwYWJpbGl0aWVzKQotLy8gVGhpcyBtYXAgdHlwZSBkZXRlcm1pbmVzIHdo
aWNoIGxvYWRpbmcgZnVuY3Rpb24gdG8gdXNlLCBiYXNlZCBvbiB0aGVzZSB0aHJlZSBwYXJhbWV0
ZXJzLgotLy8gU291cmNlIGZvcm1hdHMgYW5kIHR5cGVzIGFyZSB0YWtlbiBmcm9tIFRhYmxlcyAz
LjIgYW5kIDMuMyBvZiB0aGUgRVMgMyBzcGVjLgotdm9pZCBVbmltcGxlbWVudGVkTG9hZEZ1bmN0
aW9uKHNpemVfdCB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
aGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCi17ewotICAgIFVOSU1QTEVNRU5U
RUQoKTsKLX19Ci0KLXZvaWQgVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24oc2l6ZV90IHdpZHRoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgaW5wdXRSb3dQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAq
b3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0
Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNo
KQote3sKLSAgICBVTlJFQUNIQUJMRSgpOwotfX0KLQotfX0gIC8vIG5hbWVzcGFjZQotCi0vLyBU
T0RPIHdlIGNhbiByZXBsYWNlIHRoZXNlIG1hcHMgd2l0aCBtb3JlIGdlbmVyYXRlZCBjb2RlCi1j
b25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gJkdldExvYWRGdW5j
dGlvbnNNYXAoR0xlbnVtIHtpbnRlcm5hbF9mb3JtYXR9LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
IHtkeGdpX2Zvcm1hdH0pCi17ewotICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKLSAgICBzd2l0Y2gg
KHtpbnRlcm5hbF9mb3JtYXR9KQotICAgIHt7Ci17ZGF0YX0KLSAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAge3sKLSAgICAgICAgICAgIHN0YXRpYyBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1
bmN0aW9uSW5mbz4gZW1wdHlMb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgcmV0dXJuIGVt
cHR5TG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgfX0KLSAgICB9fQotICAgIC8vIGNsYW5nLWZv
cm1hdCBvbgotCi19fSAgLy8gR2V0TG9hZEZ1bmN0aW9uc01hcAotCi19fSAgLy8gbmFtZXNwYWNl
IGQzZDExCi0KLX19ICAvLyBuYW1lc3BhY2UgcngKLSIiIgotCi1pbnRlcm5hbF9mb3JtYXRfcGFy
YW0gPSAnaW50ZXJuYWxGb3JtYXQnCi1keGdpX2Zvcm1hdF9wYXJhbSA9ICdkeGdpRm9ybWF0Jwot
ZHhnaV9mb3JtYXRfdW5rbm93biA9ICJEWEdJX0ZPUk1BVF9VTktOT1dOIgotCi1kZWYgZ2V0X2Z1
bmN0aW9uX21hcHNfc3RyaW5nKHR5cGVzdHIsIGZ1bmN0aW9uLCByZXF1aXJlc0NvbnZlcnNpb24p
OgotICAgIHJldHVybiAnICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFsnICsgdHlwZXN0
ciArICddID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKCcgKyBmdW5jdGlvbiArICcsICcgKyByZXF1
aXJlc0NvbnZlcnNpb24gKyAnKTtcbicKLQotZGVmIGdldF91bmtub3duX2Zvcm1hdF9zdHJpbmco
ZHhnaV90b190eXBlX21hcCwgZHhnaV91bmtub3duX3N0cmluZyk6Ci0gICAgIGlmIGR4Z2lfdW5r
bm93bl9zdHJpbmcgbm90IGluIGR4Z2lfdG9fdHlwZV9tYXA6Ci0gICAgICAgIHJldHVybiAnJwot
Ci0gICAgIHRhYmxlX2RhdGEgPSAnJwotCi0gICAgIGZvciB1bmtub3duX3R5cGVfZnVuY3Rpb24g
aW4gZHhnaV90b190eXBlX21hcFtkeGdpX3Vua25vd25fc3RyaW5nXToKLSAgICAgICAgdGFibGVf
ZGF0YSArPSBnZXRfZnVuY3Rpb25fbWFwc19zdHJpbmcodW5rbm93bl90eXBlX2Z1bmN0aW9uWyd0
eXBlJ10sIHVua25vd25fdHlwZV9mdW5jdGlvblsnbG9hZEZ1bmN0aW9uJ10sICd0cnVlJykKLQot
ICAgICByZXR1cm4gdGFibGVfZGF0YQotCi0jIE1ha2luZyBtYXAgZnJvbSBkeGdpIHRvIHR5cGUg
bWFwIGZvciBhIHBhcnRpY3VsYXIgaW50ZXJuYWxGb3JtYXQKLWRlZiBjcmVhdGVfZHhnaV90b190
eXBlX21hcChkc3QsIGpzb25fZGF0YSwgaW50ZXJuYWxfZm9ybWF0X3N0cik6Ci0gICAgZm9yIHR5
cGVfaXRlbSBpbiBzb3J0ZWQoanNvbl9kYXRhW2ludGVybmFsX2Zvcm1hdF9zdHJdLml0ZXJpdGVt
cygpKToKLSAgICAgICAgZm9yIGVudHJ5X2luX3R5cGVfaXRlbSBpbiB0eXBlX2l0ZW1bMV06Ci0g
ICAgICAgICAgICBkeGdpX2Zvcm1hdF9zdHIgPSBlbnRyeV9pbl90eXBlX2l0ZW1bJ2R4Z2lGb3Jt
YXQnXQotCi0gICAgICAgICAgICBpZiBkeGdpX2Zvcm1hdF9zdHIgbm90IGluIGRzdDoKLSAgICAg
ICAgICAgICAgICBkc3RbZHhnaV9mb3JtYXRfc3RyXSA9IFtdCi0KLSAgICAgICAgICAgIHR5cGVf
ZHhnaV9sb2FkX2Z1bmN0aW9uID0gZW50cnlfaW5fdHlwZV9pdGVtLmNvcHkoKTsKLSAgICAgICAg
ICAgIHR5cGVfZHhnaV9sb2FkX2Z1bmN0aW9uWyd0eXBlJ10gPSB0eXBlX2l0ZW1bMF0KLSAgICAg
ICAgICAgIGRzdFtkeGdpX2Zvcm1hdF9zdHJdLmFwcGVuZCh0eXBlX2R4Z2lfbG9hZF9mdW5jdGlv
bikKLQotZGVmIGdldF9sb2FkX2Z1bmN0aW9uX21hcF9zbmlwcGV0KGluc2VydF9tYXBfc3RyaW5n
KToKLSAgICBsb2FkX2Z1bmN0aW9uX21hcF9zbmlwcGV0ID0gJycKLSAgICBsb2FkX2Z1bmN0aW9u
X21hcF9zbmlwcGV0ICs9ICcgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1h
cDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkg
e1xuJwotICAgIGxvYWRfZnVuY3Rpb25fbWFwX3NuaXBwZXQgKz0gJyAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwO1xu
JwotICAgIGxvYWRfZnVuY3Rpb25fbWFwX3NuaXBwZXQgKz0gaW5zZXJ0X21hcF9zdHJpbmcKLSAg
ICBsb2FkX2Z1bmN0aW9uX21hcF9zbmlwcGV0ICs9ICcgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbG9hZE1hcDtcbicKLSAgICBsb2FkX2Z1bmN0aW9uX21hcF9zbmlwcGV0ICs9ICcgICAg
ICAgICAgICAgICAgICAgIH0oKTtcblxuJwotICAgIGxvYWRfZnVuY3Rpb25fbWFwX3NuaXBwZXQg
Kz0gJyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7XG4nCi0KLSAg
ICByZXR1cm4gbG9hZF9mdW5jdGlvbl9tYXBfc25pcHBldAotCi1kZWYgcGFyc2VfanNvbl9pbnRv
X3N3aXRjaF9zdHJpbmcoanNvbl9kYXRhKToKLSAgICB0YWJsZV9kYXRhID0gJycKLSAgICBmb3Ig
aW50ZXJuYWxfZm9ybWF0X2l0ZW0gaW4gc29ydGVkKGpzb25fZGF0YS5pdGVyaXRlbXMoKSk6Ci0g
ICAgICAgIGludGVybmFsX2Zvcm1hdF9zdHIgPSBpbnRlcm5hbF9mb3JtYXRfaXRlbVswXQotICAg
ICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAgIGNhc2UgJyArIGludGVybmFsX2Zvcm1hdF9zdHIg
KyAnOlxuJwotICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAgIHtcbicKLSAgICAgICAgdGFi
bGVfZGF0YSArPSAnICAgICAgICAgICAgc3dpdGNoICgnICsgZHhnaV9mb3JtYXRfcGFyYW0gKyAn
KVxuJwotICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAgICAgICB7XG4nCi0KLSAgICAgICAg
ZHhnaV90b190eXBlX21hcCA9IHt9OwotICAgICAgICBjcmVhdGVfZHhnaV90b190eXBlX21hcChk
eGdpX3RvX3R5cGVfbWFwLCBqc29uX2RhdGEsIGludGVybmFsX2Zvcm1hdF9zdHIpCi0KLSAgICAg
ICAgZHhnaV91bmtub3duX3N0ciA9IGdldF91bmtub3duX2Zvcm1hdF9zdHJpbmcoZHhnaV90b190
eXBlX21hcCwgZHhnaV9mb3JtYXRfdW5rbm93bik7Ci0KLSAgICAgICAgZm9yIGR4Z2lfZm9ybWF0
X2l0ZW0gaW4gc29ydGVkKGR4Z2lfdG9fdHlwZV9tYXAuaXRlcml0ZW1zKCkpOgotICAgICAgICAg
ICAgZHhnaV9mb3JtYXRfc3RyID0gZHhnaV9mb3JtYXRfaXRlbVswXQotCi0gICAgICAgICAgICAj
IE1haW4gY2FzZSBzdGF0ZW1lbnRzCi0gICAgICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAg
ICAgICAgICAgY2FzZSAnICsgZHhnaV9mb3JtYXRfc3RyICsgJzpcbicKLSAgICAgICAgICAgIHRh
YmxlX2RhdGEgKz0gJyAgICAgICAgICAgICAgICB7XG4nCi0gICAgICAgICAgICBpbnNlcnRfbWFw
X3N0cmluZyA9ICcnCi0gICAgICAgICAgICB0eXBlc19hbHJlYWR5X2luX2xvYWRtYXAgPSBzZXQo
KQotICAgICAgICAgICAgZm9yIHR5cGVfZnVuY3Rpb24gaW4gc29ydGVkKGR4Z2lfZm9ybWF0X2l0
ZW1bMV0pOgotICAgICAgICAgICAgICAgIGluc2VydF9tYXBfc3RyaW5nICs9IGdldF9mdW5jdGlv
bl9tYXBzX3N0cmluZyh0eXBlX2Z1bmN0aW9uWyd0eXBlJ10sIHR5cGVfZnVuY3Rpb25bJ2xvYWRG
dW5jdGlvbiddLCB0eXBlX2Z1bmN0aW9uWydyZXF1aXJlc0NvbnZlcnNpb24nXSkKLSAgICAgICAg
ICAgICAgICB0eXBlc19hbHJlYWR5X2luX2xvYWRtYXAuYWRkKHR5cGVfZnVuY3Rpb25bJ3R5cGUn
XSkKLQotICAgICAgICAgICAgIyBEWEdJX0ZPUk1BVF9VTktOT1dOIGFkZCBvbnMKLSAgICAgICAg
ICAgIGlmIGR4Z2lfZm9ybWF0X3Vua25vd24gaW4gZHhnaV90b190eXBlX21hcDoKLSAgICAgICAg
ICAgICAgICBmb3IgdW5rbm93bl90eXBlX2Z1bmN0aW9uIGluIGR4Z2lfdG9fdHlwZV9tYXBbZHhn
aV9mb3JtYXRfdW5rbm93bl06Ci0gICAgICAgICAgICAgICAgICAgICMgQ2hlY2sgdGhhdCBpdCdz
IG5vdCBhbHJlYWR5IGluIHRoZSBsb2FkbWFwIHNvIGl0IGRvZXNuJ3Qgb3ZlcnJpZGUgdGhlIHZh
bHVlCi0gICAgICAgICAgICAgICAgICAgIGlmIHVua25vd25fdHlwZV9mdW5jdGlvblsndHlwZSdd
IG5vdCBpbiB0eXBlc19hbHJlYWR5X2luX2xvYWRtYXA6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpbnNlcnRfbWFwX3N0cmluZyArPSBnZXRfZnVuY3Rpb25fbWFwc19zdHJpbmcodW5rbm93bl90
eXBlX2Z1bmN0aW9uWyd0eXBlJ10sIHVua25vd25fdHlwZV9mdW5jdGlvblsnbG9hZEZ1bmN0aW9u
J10sICd0cnVlJykKLQotICAgICAgICAgICAgdGFibGVfZGF0YSArPSBnZXRfbG9hZF9mdW5jdGlv
bl9tYXBfc25pcHBldChpbnNlcnRfbWFwX3N0cmluZykKLSAgICAgICAgICAgIHRhYmxlX2RhdGEg
Kz0gJyAgICAgICAgICAgICAgICB9XG4nCi0KLSAgICAgICAgdGFibGVfZGF0YSArPSAnICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6XG4nCi0KLSAgICAgICAgaWYgZHhnaV91bmtub3duX3N0cjoKLSAg
ICAgICAgICAgIHRhYmxlX2RhdGEgKz0gJyAgICAgICAgICAgICAgICB7XG4nCi0gICAgICAgICAg
ICB0YWJsZV9kYXRhICs9IGdldF9sb2FkX2Z1bmN0aW9uX21hcF9zbmlwcGV0KGR4Z2lfdW5rbm93
bl9zdHIpCi0gICAgICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAgICAgICAgICAgfVxuJwot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgdGFibGVfZGF0YSArPSAnICAgICAgICAgICAgICAg
ICAgICBicmVhaztcbicKLSAgICAgICAgdGFibGVfZGF0YSArPSAnICAgICAgICAgICAgfVxuJwot
ICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAgIH1cbicKLQotICAgIHJldHVybiB0YWJsZV9k
YXRhCi0KLXdpdGggb3BlbignbG9hZF9mdW5jdGlvbnNfZGF0YS5qc29uJykgYXMgZnVuY3Rpb25z
X2pzb25fZmlsZToKLSAgICBmdW5jdGlvbnNfZGF0YSA9IGZ1bmN0aW9uc19qc29uX2ZpbGUucmVh
ZCgpOwotICAgIGZ1bmN0aW9uc19qc29uX2ZpbGUuY2xvc2UoKQotICAgIGpzb25fZGF0YSA9IGpz
b24ubG9hZHMoZnVuY3Rpb25zX2RhdGEpCi0KLSAgICB0YWJsZV9kYXRhID0gcGFyc2VfanNvbl9p
bnRvX3N3aXRjaF9zdHJpbmcoanNvbl9kYXRhKQotICAgIG91dHB1dCA9IHRlbXBsYXRlLmZvcm1h
dChpbnRlcm5hbF9mb3JtYXQgPSBpbnRlcm5hbF9mb3JtYXRfcGFyYW0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGR4Z2lfZm9ybWF0ID0gZHhnaV9mb3JtYXRfcGFyYW0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGE9dGFibGVfZGF0YSkKLQotICAgIHdpdGggb3Blbign
bG9hZF9mdW5jdGlvbnNfdGFibGVfYXV0b2dlbi5jcHAnLCAnd3QnKSBhcyBvdXRfZmlsZToKLSAg
ICAgICAgb3V0X2ZpbGUud3JpdGUob3V0cHV0KQotICAgICAgICBvdXRfZmlsZS5jbG9zZSgpCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL2dlbl90ZXh0dXJlX2Zvcm1hdF90YWJsZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2dlbl90ZXh0dXJl
X2Zvcm1hdF90YWJsZS5weQkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9nZW5fdGV4dHVyZV9mb3JtYXRf
dGFibGUucHkJKHdvcmtpbmcgY29weSkKQEAgLTcsMzkgKzcsMjEgQEAKICMgIENvZGUgZ2VuZXJh
dGlvbiBmb3IgdGV4dHVyZSBmb3JtYXQgbWFwCiAjCiAKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRh
dGUKIGltcG9ydCBqc29uCiBpbXBvcnQgbWF0aAogaW1wb3J0IHBwcmludAoraW1wb3J0IG9zCiBp
bXBvcnQgcmUKK2ltcG9ydCBzeXMKIAotdGVtcGxhdGVfdGV4dHVyZV9mb3JtYXRfdGFibGVfYXV0
b2dlbl9oID0gIiIiLy8gR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVC4KLS8vIEdlbmVyYXRl
ZCBieSBnZW5fdGV4dHVyZV9mb3JtYXRfdGFibGUucHkgdXNpbmcgZGF0YSBmcm9tIHRleHR1cmVf
Zm9ybWF0X2RhdGEuanNvbgotLy8KLS8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotbmFtZXNwYWNlIHJ4Ci17ewotCi1uYW1lc3Bh
Y2UgZDNkMTEKLXt7Ci0KLWVudW0gQU5HTEVGb3JtYXQKLXt7Ci17YW5nbGVfZm9ybWF0X2VudW19
Ci19fTsKLQotfX0gIC8vIG5hbWVzcGFjZSBkM2QxMQotCi19fSAgLy8gbmFtZXNwYWNlIHJ4Ci0i
IiIKK3N5cy5wYXRoLmFwcGVuZCgnLi4vLi4nKQoraW1wb3J0IGFuZ2xlX2Zvcm1hdAogCiB0ZW1w
bGF0ZV90ZXh0dXJlX2Zvcm1hdF90YWJsZV9hdXRvZ2VuX2NwcCA9ICIiIi8vIEdFTkVSQVRFRCBG
SUxFIC0gRE8gTk9UIEVESVQuCiAvLyBHZW5lcmF0ZWQgYnkgZ2VuX3RleHR1cmVfZm9ybWF0X3Rh
YmxlLnB5IHVzaW5nIGRhdGEgZnJvbSB0ZXh0dXJlX2Zvcm1hdF9kYXRhLmpzb24KIC8vCi0vLyBD
b3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gQ29weXJpZ2h0IHtjb3B5cmlnaHRfeWVhcn0gVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtNDksMTIgKzMxLDE1IEBAIHRlbXBsYXRlX3RleHR1
cmVfZm9ybWF0X3RhYmxlX2F1dG9nZW5fY3AKIAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZS5oIgogCisjaW5jbHVkZSAiaW1hZ2VfdXRp
bC9jb3B5aW1hZ2UuaCIKKyNpbmNsdWRlICJpbWFnZV91dGlsL2dlbmVyYXRlbWlwLmgiCisjaW5j
bHVkZSAiaW1hZ2VfdXRpbC9sb2FkaW1hZ2UuaCIKKwogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9mb3JtYXR1dGlsczExLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL2xvYWRfZnVuY3Rpb25zX3RhYmxlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFfdXRpbHMuaCIKLSNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9kM2QvY29weWltYWdlLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2dlbmVyYXRlbWlwLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2xvYWRp
bWFnZS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zv
cm1hdF90YWJsZV91dGlscy5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CiAKIG5hbWVzcGFj
ZSByeAoge3sKQEAgLTYyLDE0MCArNDcsMTEgQEAgbmFtZXNwYWNlIHJ4CiBuYW1lc3BhY2UgZDNk
MTEKIHt7CiAKLW5hbWVzcGFjZQote3sKLQotdHlwZWRlZiBib29sICgqRm9ybWF0U3VwcG9ydEZ1
bmN0aW9uKShjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmKTsKLQotYm9vbCBPbmx5RkwxMFBs
dXMoY29uc3QgUmVuZGVyZXIxMURldmljZUNhcHMgJmRldmljZUNhcHMpCi17ewotICAgIHJldHVy
biAoZGV2aWNlQ2Fwcy5mZWF0dXJlTGV2ZWwgPj0gRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMCk7Ci19
fQotCi1ib29sIE9ubHlGTDlfMyhjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmZGV2aWNlQ2Fw
cykKLXt7Ci0gICAgcmV0dXJuIChkZXZpY2VDYXBzLmZlYXR1cmVMZXZlbCA9PSBEM0RfRkVBVFVS
RV9MRVZFTF85XzMpOwotfX0KLQotdGVtcGxhdGUgPERYR0lfRk9STUFUIGZvcm1hdCwgYm9vbCBy
ZXF1aXJlU3VwcG9ydD4KLWJvb2wgU3VwcG9ydHNGb3JtYXQoY29uc3QgUmVuZGVyZXIxMURldmlj
ZUNhcHMgJmRldmljZUNhcHMpCi17ewotICAgIC8vIE11c3Qgc3VwcG9ydCB0ZXh0dXJlLCBTUlYg
YW5kIFJUViBzdXBwb3J0Ci0gICAgVUlOVCBtdXN0U3VwcG9ydCA9IEQzRDExX0ZPUk1BVF9TVVBQ
T1JUX1RFWFRVUkUyRCB8IEQzRDExX0ZPUk1BVF9TVVBQT1JUX1RFWFRVUkVDVUJFIHwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRDNEMTFfRk9STUFUX1NVUFBPUlRfU0hBREVSX1NBTVBMRSB8IEQz
RDExX0ZPUk1BVF9TVVBQT1JUX01JUCB8Ci0gICAgICAgICAgICAgICAgICAgICAgIEQzRDExX0ZP
Uk1BVF9TVVBQT1JUX1JFTkRFUl9UQVJHRVQ7Ci0KLSAgICBpZiAoZDNkMTFfZ2w6OkdldE1heGlt
dW1DbGllbnRWZXJzaW9uKGRldmljZUNhcHMuZmVhdHVyZUxldmVsKSA+IDIpCi0gICAge3sKLSAg
ICAgICAgbXVzdFN1cHBvcnQgfD0gRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRTNEOwotICAg
IH19Ci0KLSAgICBib29sIGZ1bGxTdXBwb3J0ID0gZmFsc2U7Ci0gICAgaWYgKGZvcm1hdCA9PSBE
WEdJX0ZPUk1BVF9CNUc2UjVfVU5PUk0pCi0gICAge3sKLSAgICAgICAgLy8gQWxsIGhhcmR3YXJl
IHRoYXQgc3VwcG9ydHMgRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNIHNob3VsZCBzdXBwb3J0IGF1
dG9nZW4gbWlwbWFwcywgYnV0Ci0gICAgICAgIC8vIGNoZWNrIGFueXdheS4KLSAgICAgICAgbXVz
dFN1cHBvcnQgfD0gRDNEMTFfRk9STUFUX1NVUFBPUlRfTUlQX0FVVE9HRU47Ci0gICAgICAgIGZ1
bGxTdXBwb3J0ID0gKChkZXZpY2VDYXBzLkI1RzZSNXN1cHBvcnQgJiBtdXN0U3VwcG9ydCkgPT0g
bXVzdFN1cHBvcnQpOwotICAgIH19Ci0gICAgZWxzZSBpZiAoZm9ybWF0ID09IERYR0lfRk9STUFU
X0I0RzRSNEE0X1VOT1JNKQotICAgIHt7Ci0gICAgICAgIGZ1bGxTdXBwb3J0ID0gKChkZXZpY2VD
YXBzLkI0RzRSNEE0c3VwcG9ydCAmIG11c3RTdXBwb3J0KSA9PSBtdXN0U3VwcG9ydCk7Ci0gICAg
fX0KLSAgICBlbHNlIGlmIChmb3JtYXQgPT0gRFhHSV9GT1JNQVRfQjVHNVI1QTFfVU5PUk0pCi0g
ICAge3sKLSAgICAgICAgZnVsbFN1cHBvcnQgPSAoKGRldmljZUNhcHMuQjVHNVI1QTFzdXBwb3J0
ICYgbXVzdFN1cHBvcnQpID09IG11c3RTdXBwb3J0KTsKLSAgICB9fQotICAgIGVsc2UKLSAgICB7
ewotICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfX0K
LQotICAgIC8vIFRoaXMgJ1N1cHBvcnRzRm9ybWF0JyBmdW5jdGlvbiBpcyB1c2VkIGJ5IGluZGl2
aWR1YWwgZW50cmllcyBpbiB0aGUgRDNEMTEgRm9ybWF0IE1hcCBiZWxvdywKLSAgICAvLyB3aGlj
aCBtYXBzIEdMIGZvcm1hdHMgdG8gRFhHSSBmb3JtYXRzLgotICAgIGlmIChyZXF1aXJlU3VwcG9y
dCkKLSAgICB7ewotICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgQU5HTEUgd291bGQgbGlrZSB0
byB1c2UgdGhlIGVudHJ5IGluIHRoZSBtYXAgaWYgdGhlIGlucHV0dGVkIERYR0kgZm9ybWF0Ci0g
ICAgICAgIC8vICpJUyogc3VwcG9ydGVkLgotICAgICAgICAvLyBlLmcuIHRoZSBlbnRyeSBtaWdo
dCBtYXAgR0xfUkdCNV9BMSB0byBEWEdJX0ZPUk1BVF9CNUc1UjVBMSwgd2hpY2ggc2hvdWxkIG9u
bHkgYmUgdXNlZCBpZgotICAgICAgICAvLyBEWEdJX0ZPUk1BVF9CNUc1UjVBMSBpcyBzdXBwb3J0
ZWQuCi0gICAgICAgIC8vIEluIHRoaXMgY2FzZSwgd2Ugc2hvdWxkIG9ubHkgcmV0dXJuICd0cnVl
JyBpZiB0aGUgZm9ybWF0ICpJUyogc3VwcG9ydGVkLgotICAgICAgICByZXR1cm4gZnVsbFN1cHBv
cnQ7Ci0gICAgfX0KLSAgICBlbHNlCi0gICAge3sKLSAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0
IEFOR0xFIHdvdWxkIGxpa2UgdG8gdXNlIHRoZSBlbnRyeSBpbiB0aGUgbWFwIGlmIHRoZSBpbnB1
dHRlZCBEWEdJIGZvcm1hdAotICAgICAgICAvLyAqSVNOJ1QqIHN1cHBvcnRlZC4KLSAgICAgICAg
Ly8gVGhpcyBtaWdodCBiZSBhIGZhbGxiYWNrIGVudHJ5LiBlLmcuIGZvciBBTkdMRSB0byB1c2Ug
RFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0gaWYKLSAgICAgICAgLy8gRFhHSV9GT1JNQVRfQjVH
NVI1QTEgaXNuJ3Qgc3VwcG9ydGVkLgotICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIHdlIHNob3Vs
ZCBvbmx5IHJldHVybiAndHJ1ZScgaWYgdGhlIGZvcm1hdCAqSVNOJ1QqIHN1cHBvcnRlZC4KLSAg
ICAgICAgcmV0dXJuICFmdWxsU3VwcG9ydDsKLSAgICB9fQotfX0KLQotLy8gRW5kIEZvcm1hdCBT
dXBwb3J0IEZ1bmN0aW9ucwotfX0gIC8vIG5hbWVzcGFjZQotCi1BTkdMRUZvcm1hdFNldDo6QU5H
TEVGb3JtYXRTZXQoKQotICAgIDogZm9ybWF0KEFOR0xFX0ZPUk1BVF9OT05FKSwKLSAgICAgIGds
SW50ZXJuYWxGb3JtYXQoR0xfTk9ORSksCi0gICAgICB0ZXhGb3JtYXQoRFhHSV9GT1JNQVRfVU5L
Tk9XTiksCi0gICAgICBzcnZGb3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiksCi0gICAgICBydHZG
b3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiksCi0gICAgICBkc3ZGb3JtYXQoRFhHSV9GT1JNQVRf
VU5LTk9XTiksCi0gICAgICBibGl0U1JWRm9ybWF0KERYR0lfRk9STUFUX1VOS05PV04pLAotICAg
ICAgc3dpenpsZUZvcm1hdChBTkdMRV9GT1JNQVRfTk9ORSksCi0gICAgICBtaXBHZW5lcmF0aW9u
RnVuY3Rpb24obnVsbHB0ciksCi0gICAgICBjb2xvclJlYWRGdW5jdGlvbihudWxscHRyKQote3sK
LX19Ci0KLS8vIEZvciBzaXplZCBHTCBpbnRlcm5hbCBmb3JtYXRzLCB0aGVyZSBhcmUgc2V2ZXJh
bCBwb3NzaWJsZSBjb3JyZXNwb25kaW5nIEQzRDExIGZvcm1hdHMgZGVwZW5kaW5nCi0vLyBvbiBk
ZXZpY2UgY2FwYWJpbGl0aWVzLgotLy8gVGhpcyBmdW5jdGlvbiBhbGxvd3MgcXVlcnlpbmcgZm9y
IHRoZSBEWEdJIHRleHR1cmUgZm9ybWF0cyB0byB1c2UgZm9yIHRleHR1cmVzLCBTUlZzLCBSVFZz
IGFuZAotLy8gRFNWcyBnaXZlbiBhIEdMIGludGVybmFsIGZvcm1hdC4KLVRleHR1cmVGb3JtYXQ6
OlRleHR1cmVGb3JtYXQoR0xlbnVtIGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBBTkdMRUZvcm1hdCBhbmdsZUZvcm1hdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSW5pdGlhbGl6ZVRleHR1cmVEYXRhRnVuY3Rpb24gaW50ZXJuYWxGb3Jt
YXRJbml0aWFsaXplcikKLSAgICA6IGRhdGFJbml0aWFsaXplckZ1bmN0aW9uKGludGVybmFsRm9y
bWF0SW5pdGlhbGl6ZXIpCi17ewotICAgIGZvcm1hdFNldCAgICAgICAgPSAmR2V0QU5HTEVGb3Jt
YXRTZXQoYW5nbGVGb3JtYXQpOwotICAgIHN3aXp6bGVGb3JtYXRTZXQgPSAmR2V0QU5HTEVGb3Jt
YXRTZXQoZm9ybWF0U2V0LT5zd2l6emxlRm9ybWF0KTsKLQotICAgIC8vIEdhdGhlciBhbGwgdGhl
IGxvYWQgZnVuY3Rpb25zIGZvciB0aGlzIGludGVybmFsIGZvcm1hdAotICAgIGxvYWRGdW5jdGlv
bnMgPSBHZXRMb2FkRnVuY3Rpb25zTWFwKGludGVybmFsRm9ybWF0LCBmb3JtYXRTZXQtPnRleEZv
cm1hdCk7Ci0KLSAgICBBU1NFUlQobG9hZEZ1bmN0aW9ucy5zaXplKCkgIT0gMCB8fCBpbnRlcm5h
bEZvcm1hdCA9PSBHTF9OT05FKTsKLX19Ci0KLUFOR0xFRm9ybWF0U2V0OjpBTkdMRUZvcm1hdFNl
dChBTkdMRUZvcm1hdCBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGdsSW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVQgdGV4Rm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUIHNydkZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVCBydHZGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVQgZHN2Rm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
IGJsaXRTUlZGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVGb3Jt
YXQgc3dpenpsZUZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaXBHZW5l
cmF0aW9uRnVuY3Rpb24gbWlwR2VuZXJhdGlvbkZ1bmN0aW9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENvbG9yUmVhZEZ1bmN0aW9uIGNvbG9yUmVhZEZ1bmN0aW9uKQotICAgIDog
Zm9ybWF0KGZvcm1hdCksCi0gICAgICBnbEludGVybmFsRm9ybWF0KGdsSW50ZXJuYWxGb3JtYXQp
LAotICAgICAgdGV4Rm9ybWF0KHRleEZvcm1hdCksCi0gICAgICBzcnZGb3JtYXQoc3J2Rm9ybWF0
KSwKLSAgICAgIHJ0dkZvcm1hdChydHZGb3JtYXQpLAotICAgICAgZHN2Rm9ybWF0KGRzdkZvcm1h
dCksCi0gICAgICBibGl0U1JWRm9ybWF0KGJsaXRTUlZGb3JtYXQpLAotICAgICAgc3dpenpsZUZv
cm1hdChzd2l6emxlRm9ybWF0KSwKLSAgICAgIG1pcEdlbmVyYXRpb25GdW5jdGlvbihtaXBHZW5l
cmF0aW9uRnVuY3Rpb24pLAotICAgICAgY29sb3JSZWFkRnVuY3Rpb24oY29sb3JSZWFkRnVuY3Rp
b24pCi17ewotfX0KLQotY29uc3QgQU5HTEVGb3JtYXRTZXQgJkdldEFOR0xFRm9ybWF0U2V0KEFO
R0xFRm9ybWF0IGFuZ2xlRm9ybWF0KQorLy8gc3RhdGljCitjb25zdCBGb3JtYXQgJkZvcm1hdDo6
R2V0KEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgY29uc3QgUmVuZGVyZXIxMURldmljZUNhcHMgJmRl
dmljZUNhcHMpCiB7ewogICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKLSAgICBzd2l0Y2ggKGFuZ2xl
Rm9ybWF0KQorICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCiAgICAge3sKIHthbmdsZV9mb3Jt
YXRfaW5mb19jYXNlc30KICAgICAgICAgZGVmYXVsdDoKQEAgLTIwNCwyNiArNjAsMTAgQEAgY29u
c3QgQU5HTEVGb3JtYXRTZXQgJkdldEFOR0xFRm9ybWF0U2V0KAogICAgIC8vIGNsYW5nLWZvcm1h
dCBvbgogCiAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRT
ZXQgZGVmYXVsdEluZm87CisgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBkZWZhdWx0SW5mbzsKICAg
ICByZXR1cm4gZGVmYXVsdEluZm87CiB9fQogCi1jb25zdCBUZXh0dXJlRm9ybWF0ICZHZXRUZXh0
dXJlRm9ybWF0SW5mbyhHTGVudW0gaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmcmVuZGVy
ZXIxMURldmljZUNhcHMpCi17ewotICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKLSAgICBzd2l0Y2gg
KGludGVybmFsRm9ybWF0KQotICAgIHt7Ci17dGV4dHVyZV9mb3JtYXRfaW5mb19jYXNlc30KLSAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH19Ci0gICAgLy8gY2xhbmct
Zm9ybWF0IG9uCi0KLSAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCBkZWZhdWx0SW5mbyhH
TF9OT05FLCBBTkdMRV9GT1JNQVRfTk9ORSwgbnVsbHB0cik7Ci0gICAgcmV0dXJuIGRlZmF1bHRJ
bmZvOwotfX0gIC8vIEdldFRleHR1cmVGb3JtYXRJbmZvCi0KIH19ICAvLyBuYW1lc3BhY2UgZDNk
MTEKIAogfX0gIC8vIG5hbWVzcGFjZSByeApAQCAtMjc5LDEwICsxMTksMTQgQEAgZGVmIGdldF9p
bnRlcm5hbF9mb3JtYXRfaW5pdGlhbGl6ZXIoaW50ZQogICAgICAgICAgICAgaW50ZXJuYWxfZm9y
bWF0X2luaXRpYWxpemVyID0gJ0luaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVieXRlLCAweDAw
LCAweDAwLCAweDAwLCAweDAxPicKICAgICAgICAgZWxpZiBhbmdsZV9mb3JtYXRbJ2NvbXBvbmVu
dFR5cGUnXSA9PSAndW5vcm0nIGFuZCBhbmdsZV9mb3JtYXRbJ2JpdHMnXVsncmVkJ10gPT0gODoK
ICAgICAgICAgICAgIGludGVybmFsX2Zvcm1hdF9pbml0aWFsaXplciA9ICdJbml0aWFsaXplNENv
bXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRj4nCisgICAgICAgIGVs
aWYgYW5nbGVfZm9ybWF0Wydjb21wb25lbnRUeXBlJ10gPT0gJ3Vub3JtJyBhbmQgYW5nbGVfZm9y
bWF0WydiaXRzJ11bJ3JlZCddID09IDE2OgorICAgICAgICAgICAgaW50ZXJuYWxfZm9ybWF0X2lu
aXRpYWxpemVyID0gJ0luaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVieXRlLCAweDAwMDAsIDB4
MDAwMCwgMHgwMDAwLCAweEZGRkY+JwogICAgICAgICBlbGlmIGFuZ2xlX2Zvcm1hdFsnY29tcG9u
ZW50VHlwZSddID09ICdpbnQnIGFuZCBhbmdsZV9mb3JtYXRbJ2JpdHMnXVsncmVkJ10gPT0gODoK
ICAgICAgICAgICAgIGludGVybmFsX2Zvcm1hdF9pbml0aWFsaXplciA9ICdJbml0aWFsaXplNENv
bXBvbmVudERhdGE8R0xieXRlLCAweDAwLCAweDAwLCAweDAwLCAweDAxPicKICAgICAgICAgZWxp
ZiBhbmdsZV9mb3JtYXRbJ2NvbXBvbmVudFR5cGUnXSA9PSAnc25vcm0nIGFuZCBhbmdsZV9mb3Jt
YXRbJ2JpdHMnXVsncmVkJ10gPT0gODoKICAgICAgICAgICAgIGludGVybmFsX2Zvcm1hdF9pbml0
aWFsaXplciA9ICdJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0xieXRlLCAweDAwLCAweDAwLCAw
eDAwLCAweDdGPicKKyAgICAgICAgZWxpZiBhbmdsZV9mb3JtYXRbJ2NvbXBvbmVudFR5cGUnXSA9
PSAnc25vcm0nIGFuZCBhbmdsZV9mb3JtYXRbJ2JpdHMnXVsncmVkJ10gPT0gMTY6CisgICAgICAg
ICAgICBpbnRlcm5hbF9mb3JtYXRfaW5pdGlhbGl6ZXIgPSAnSW5pdGlhbGl6ZTRDb21wb25lbnRE
YXRhPEdMdXNob3J0LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDdGRkY+JwogICAgICAgICBl
bGlmIGFuZ2xlX2Zvcm1hdFsnY29tcG9uZW50VHlwZSddID09ICdmbG9hdCcgYW5kIGFuZ2xlX2Zv
cm1hdFsnYml0cyddWydyZWQnXSA9PSAxNjoKICAgICAgICAgICAgIGludGVybmFsX2Zvcm1hdF9p
bml0aWFsaXplciA9ICdJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0xoYWxmLCAweDAwMDAsIDB4
MDAwMCwgMHgwMDAwLCBnbDo6RmxvYXQxNk9uZT4nCiAgICAgICAgIGVsaWYgYW5nbGVfZm9ybWF0
Wydjb21wb25lbnRUeXBlJ10gPT0gJ3VpbnQnIGFuZCBhbmdsZV9mb3JtYXRbJ2JpdHMnXVsncmVk
J10gPT0gMTY6CkBAIC0zMDAsMTYgKzE0NCwxOCBAQCBkZWYgZ2V0X2ludGVybmFsX2Zvcm1hdF9p
bml0aWFsaXplcihpbnRlCiAKICAgICByZXR1cm4gaW50ZXJuYWxfZm9ybWF0X2luaXRpYWxpemVy
CiAKLWRlZiBnZXRfc3dpenpsZV9mb3JtYXRfaWQoYW5nbGVfZm9ybWF0X2lkLCBhbmdsZV9mb3Jt
YXQpOgotICAgIGlmIGFuZ2xlX2Zvcm1hdF9pZCA9PSAnQU5HTEVfRk9STUFUX05PTkUnOgotICAg
ICAgICByZXR1cm4gJ0FOR0xFX0ZPUk1BVF9OT05FJworZGVmIGdldF9zd2l6emxlX2Zvcm1hdF9p
ZChpbnRlcm5hbF9mb3JtYXQsIGFuZ2xlX2Zvcm1hdCk6CisgICAgYW5nbGVfZm9ybWF0X2lkID0g
YW5nbGVfZm9ybWF0WyJmb3JtYXROYW1lIl0KKyAgICBpZiAoaW50ZXJuYWxfZm9ybWF0ID09ICdH
TF9OT05FJykgb3IgKGFuZ2xlX2Zvcm1hdF9pZCA9PSAnTk9ORScpOgorICAgICAgICByZXR1cm4g
J0dMX05PTkUnCisKICAgICBlbGlmICdzd2l6emxlRm9ybWF0JyBpbiBhbmdsZV9mb3JtYXQ6CiAg
ICAgICAgICMgRm9yIHNvbWUgc3BlY2lhbCBmb3JtYXRzIGxpa2UgY29tcHJlc3NlZCBmb3JtYXRz
IHRoYXQgZG9uJ3QgaGF2ZSBhIGNsZWFybHkgZGVmaW5lZCBudW1iZXIKICAgICAgICAgIyBvZiBi
aXRzIHBlciBjaGFubmVsLCBzd2l6emxlIGZvcm1hdCBuZWVkcyB0byBiZSBzcGVjaWZpZWQgbWFu
dWFsbHkuCiAgICAgICAgIHJldHVybiBhbmdsZV9mb3JtYXRbJ3N3aXp6bGVGb3JtYXQnXQogCiAg
ICAgaWYgJ2JpdHMnIG5vdCBpbiBhbmdsZV9mb3JtYXQ6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoJ25vIGJpdHMgaW5mb3JtYXRpb24gZm9yIGRldGVybWluaW5nIHN3aXp6bGVmb3JtYXQgZm9y
IGZvcm1hdDogJyArIGFuZ2xlX2Zvcm1hdF9pZCkKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcign
bm8gYml0cyBpbmZvcm1hdGlvbiBmb3IgZGV0ZXJtaW5pbmcgc3dpenpsZWZvcm1hdCBmb3IgZm9y
bWF0OiAnICsgaW50ZXJuYWxfZm9ybWF0KQogCiAgICAgYml0cyA9IGFuZ2xlX2Zvcm1hdFsnYml0
cyddCiAgICAgbWF4X2NvbXBvbmVudF9iaXRzID0gbWF4KGJpdHMuaXRlcnZhbHVlcygpKQpAQCAt
MzE4LDcgKzE2NCw3IEBAIGRlZiBnZXRfc3dpenpsZV9mb3JtYXRfaWQoYW5nbGVfZm9ybWF0X2kK
ICAgICAjIFRoZSBmb3JtYXQgaXRzZWxmIGNhbiBiZSB1c2VkIGZvciBzd2l6emxlcyBpZiBpdCBj
YW4gYmUgYWNjZXNzZWQgYXMgYSByZW5kZXIgdGFyZ2V0IGFuZAogICAgICMgc2FtcGxlZCBhbmQg
dGhlIGJpdCBjb3VudCBmb3IgYWxsIDQgY2hhbm5lbHMgaXMgdGhlIHNhbWUuCiAgICAgaWYgInJ0
dkZvcm1hdCIgaW4gYW5nbGVfZm9ybWF0IGFuZCAic3J2Rm9ybWF0IiBpbiBhbmdsZV9mb3JtYXQg
YW5kIG5vdCBjaGFubmVsc19kaWZmZXJlbnQgYW5kIGxlbihhbmdsZV9mb3JtYXRbJ2NoYW5uZWxz
J10pID09IDQ6Ci0gICAgICAgIHJldHVybiBhbmdsZV9mb3JtYXRfaWQKKyAgICAgICAgcmV0dXJu
IGFuZ2xlX2Zvcm1hdFsiZ2xJbnRlcm5hbEZvcm1hdCJdIGlmICJnbEludGVybmFsRm9ybWF0IiBp
biBhbmdsZV9mb3JtYXQgZWxzZSBpbnRlcm5hbF9mb3JtYXQKIAogICAgIGIgPSBpbnQobWF0aC5j
ZWlsKGZsb2F0KG1heF9jb21wb25lbnRfYml0cykgLyA4KSAqIDgpCiAKQEAgLTMyNiwxNzAgKzE3
MiwxNjcgQEAgZGVmIGdldF9zd2l6emxlX2Zvcm1hdF9pZChhbmdsZV9mb3JtYXRfaQogICAgICMg
ZGVmaW5lZCBjb21wb25lbnQgdHlwZS4KICAgICBpZiBhbmdsZV9mb3JtYXRbJ2NoYW5uZWxzJ10u
ZmluZCgnZCcpID49IDA6CiAgICAgICAgIGlmIGIgPT0gMjQgb3IgYiA9PSAzMjoKLSAgICAgICAg
ICAgIHJldHVybiAnQU5HTEVfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCcKKyAgICAgICAgICAg
IHJldHVybiAnR0xfUkdCQTMyRicKICAgICAgICAgaWYgYiA9PSAxNjoKLSAgICAgICAgICAgIHJl
dHVybiAnQU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9VTk9STScKKyAgICAgICAgICAgIHJldHVy
biAnR0xfUkdCQTE2X0VYVCcKIAogICAgIGlmIGIgPT0gMjQ6Ci0gICAgICAgIHJhaXNlIFZhbHVl
RXJyb3IoJ3VuZXhwZWN0ZWQgMjQtYml0IGZvcm1hdCB3aGVuIGRldGVybWluaW5nIHN3aXp6bGVm
b3JtYXQgZm9yIGZvcm1hdDogJyArIGFuZ2xlX2Zvcm1hdF9pZCkKKyAgICAgICAgcmFpc2UgVmFs
dWVFcnJvcigndW5leHBlY3RlZCAyNC1iaXQgZm9ybWF0IHdoZW4gZGV0ZXJtaW5pbmcgc3dpenps
ZWZvcm1hdCBmb3IgZm9ybWF0OiAnICsgaW50ZXJuYWxfZm9ybWF0KQogCiAgICAgaWYgJ2NvbXBv
bmVudFR5cGUnIG5vdCBpbiBhbmdsZV9mb3JtYXQ6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3Io
J25vIGNvbXBvbmVudCB0eXBlIGluZm9ybWF0aW9uIGZvciBkZXRlcm1pbmluZyBzd2l6emxlZm9y
bWF0IGZvciBmb3JtYXQ6ICcgKyBhbmdsZV9mb3JtYXRfaWQpCisgICAgICAgIHJhaXNlIFZhbHVl
RXJyb3IoJ25vIGNvbXBvbmVudCB0eXBlIGluZm9ybWF0aW9uIGZvciBkZXRlcm1pbmluZyBzd2l6
emxlZm9ybWF0IGZvciBmb3JtYXQ6ICcgKyBpbnRlcm5hbF9mb3JtYXQpCiAKICAgICBjb21wb25l
bnRfdHlwZSA9IGFuZ2xlX2Zvcm1hdFsnY29tcG9uZW50VHlwZSddCisKKyAgICBzd2l6emxlID0g
IkdMX1JHQkEiICsgc3RyKGIpCisKICAgICBpZiBjb21wb25lbnRfdHlwZSA9PSAndWludCc6Ci0g
ICAgICAgIHJldHVybiAnQU5HTEVfRk9STUFUX1J7fUd7fUJ7fUF7fV9VSU5UJy5mb3JtYXQoYiwg
YiwgYiwgYikKKyAgICAgICAgc3dpenpsZSArPSAiSSIKICAgICBlbGlmIGNvbXBvbmVudF90eXBl
ID09ICdpbnQnOgotICAgICAgICByZXR1cm4gJ0FOR0xFX0ZPUk1BVF9Se31He31Ce31Be31fU0lO
VCcuZm9ybWF0KGIsIGIsIGIsIGIpCisgICAgICAgIHN3aXp6bGUgKz0gIkkiCiAgICAgZWxpZiBj
b21wb25lbnRfdHlwZSA9PSAndW5vcm0nOgotICAgICAgICByZXR1cm4gJ0FOR0xFX0ZPUk1BVF9S
e31He31Ce31Be31fVU5PUk0nLmZvcm1hdChiLCBiLCBiLCBiKQorICAgICAgICBpZiAoYiA9PSAx
Nik6CisgICAgICAgICAgICBzd2l6emxlICs9ICJfRVhUIgogICAgIGVsaWYgY29tcG9uZW50X3R5
cGUgPT0gJ3Nub3JtJzoKLSAgICAgICAgcmV0dXJuICdBTkdMRV9GT1JNQVRfUnt9R3t9Qnt9QXt9
X1NOT1JNJy5mb3JtYXQoYiwgYiwgYiwgYikKKyAgICAgICAgc3dpenpsZSArPSAiX1NOT1JNIgor
ICAgICAgICBpZiAoYiA9PSAxNik6CisgICAgICAgICAgICBzd2l6emxlICs9ICJfRVhUIgogICAg
IGVsaWYgY29tcG9uZW50X3R5cGUgPT0gJ2Zsb2F0JzoKLSAgICAgICAgcmV0dXJuICdBTkdMRV9G
T1JNQVRfUnt9R3t9Qnt9QXt9X0ZMT0FUJy5mb3JtYXQoYiwgYiwgYiwgYikKKyAgICAgICAgc3dp
enpsZSArPSAiRiIKKyAgICAgICAgaWYgKGIgPT0gMTYpOgorICAgICAgICAgICAgc3dpenpsZSAr
PSAiX0VYVCIKICAgICBlbHNlOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdjb3VsZCBub3Qg
ZGV0ZXJtaW5lIHN3aXp6bGVmb3JtYXQgYmFzZWQgb24gY29tcG9uZW50VHlwZSBmb3IgZm9ybWF0
OiAnICsgYW5nbGVfZm9ybWF0X2lkKQorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdjb3VsZCBu
b3QgZGV0ZXJtaW5lIHN3aXp6bGVmb3JtYXQgYmFzZWQgb24gY29tcG9uZW50VHlwZSBmb3IgZm9y
bWF0OiAnICsgaW50ZXJuYWxfZm9ybWF0KQogCi1kZWYgZ2V0X3RleHR1cmVfZm9ybWF0X2l0ZW0o
aWR4LCBpbnRlcm5hbF9mb3JtYXQsIHJlcXVpcmVtZW50c19mbiwgYW5nbGVfZm9ybWF0X2lkLCBh
bmdsZV9mb3JtYXQpOgotICAgIHRhYmxlX2RhdGEgPSAnJzsKKyAgICByZXR1cm4gc3dpenpsZQog
Ci0gICAgaW50ZXJuYWxfZm9ybWF0X2luaXRpYWxpemVyID0gZ2V0X2ludGVybmFsX2Zvcm1hdF9p
bml0aWFsaXplcihpbnRlcm5hbF9mb3JtYXQsIGFuZ2xlX2Zvcm1hdCkKK2RlZiBnZXRfYmxpdF9z
cnZfZm9ybWF0KGFuZ2xlX2Zvcm1hdCk6CisgICAgaWYgJ2NoYW5uZWxzJyBub3QgaW4gYW5nbGVf
Zm9ybWF0OgorICAgICAgICByZXR1cm4gJ0RYR0lfRk9STUFUX1VOS05PV04nCisgICAgaWYgJ3In
IGluIGFuZ2xlX2Zvcm1hdFsnY2hhbm5lbHMnXSBhbmQgYW5nbGVfZm9ybWF0Wydjb21wb25lbnRU
eXBlJ10gaW4gWydpbnQnLCAndWludCddOgorICAgICAgICByZXR1cm4gYW5nbGVfZm9ybWF0Wydy
dHZGb3JtYXQnXQogCi0gICAgaW5kZW50ID0gJyAgICAgICAgICAgICcKLSAgICBpZiByZXF1aXJl
bWVudHNfZm4gIT0gTm9uZToKLSAgICAgICAgaWYgaWR4ID09IDA6Ci0gICAgICAgICAgICB0YWJs
ZV9kYXRhICs9ICcgICAgICAgICAgICBpZiAoJyArIHJlcXVpcmVtZW50c19mbiArICcocmVuZGVy
ZXIxMURldmljZUNhcHMpKVxuJwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdGFibGVfZGF0
YSArPSAnICAgICAgICAgICAgZWxzZSBpZiAoJyArIHJlcXVpcmVtZW50c19mbiArICcocmVuZGVy
ZXIxMURldmljZUNhcHMpKVxuJwotICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAgICAgICB7
XG4nCi0gICAgICAgIGluZGVudCArPSAnICAgICcKLQotICAgIHRhYmxlX2RhdGEgKz0gaW5kZW50
ICsgJ3N0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3Jt
YXQsXG4nCi0gICAgdGFibGVfZGF0YSArPSBpbmRlbnQgKyAnICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnICsgYW5nbGVfZm9ybWF0X2lkICsgJyxcbicKLSAgICB0YWJs
ZV9kYXRhICs9IGluZGVudCArICcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcgKyBpbnRlcm5hbF9mb3JtYXRfaW5pdGlhbGl6ZXIgKyAnKTtcbicKLSAgICB0YWJsZV9k
YXRhICs9IGluZGVudCArICdyZXR1cm4gdGV4dHVyZUZvcm1hdDtcbicKKyAgICByZXR1cm4gYW5n
bGVfZm9ybWF0WyJzcnZGb3JtYXQiXSBpZiAic3J2Rm9ybWF0IiBpbiBhbmdsZV9mb3JtYXQgZWxz
ZSAiRFhHSV9GT1JNQVRfVU5LTk9XTiIKIAotICAgIGlmIHJlcXVpcmVtZW50c19mbiAhPSBOb25l
OgotICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAgICAgICB9XG4nCiAKLSAgICByZXR1cm4g
dGFibGVfZGF0YQorZm9ybWF0X2VudHJ5X3RlbXBsYXRlID0gIiIie3NwYWNlfXt7Cit7c3BhY2V9
ICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyh7aW50ZXJuYWxGb3JtYXR9LAore3NwYWNlfSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ontmb3JtYXROYW1l
fSwKK3tzcGFjZX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0ZXhGb3JtYXR9LAore3Nw
YWNlfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3NydkZvcm1hdH0sCit7c3BhY2V9ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7cnR2Rm9ybWF0fSwKK3tzcGFjZX0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHtkc3ZGb3JtYXR9LAore3NwYWNlfSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAge2JsaXRTUlZGb3JtYXR9LAore3NwYWNlfSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAge3N3aXp6bGVGb3JtYXR9LAore3NwYWNlfSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAge2luaXRpYWxpemVyfSwKK3tzcGFjZX0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRldmljZUNhcHMpOwore3NwYWNlfSAgICByZXR1cm4gaW5mbzsKK3tzcGFjZX19fQorIiIiCiAK
LWRlZiBwYXJzZV9qc29uX2ludG9fc3dpdGNoX3RleHR1cmVfZm9ybWF0X3N0cmluZyhqc29uX21h
cCwganNvbl9kYXRhKToKLSAgICB0YWJsZV9kYXRhID0gJycKLSAgICBhbmdsZV9mb3JtYXRfbWFw
ID0ge30KK3NwbGl0X2Zvcm1hdF9lbnRyeV90ZW1wbGF0ZSA9ICIiIntzcGFjZX0gICAge2NvbmRp
dGlvbn0KK3tzcGFjZX0gICAge3sKK3tzcGFjZX0gICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQg
aW5mbyh7aW50ZXJuYWxGb3JtYXR9LAore3NwYWNlfSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjp7Zm9ybWF0TmFtZX0sCit7c3BhY2V9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAge3RleEZvcm1hdH0sCit7c3BhY2V9ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAge3NydkZvcm1hdH0sCit7c3BhY2V9ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAge3J0dkZvcm1hdH0sCit7c3BhY2V9ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAge2RzdkZvcm1hdH0sCit7c3BhY2V9ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAge2JsaXRTUlZGb3JtYXR9LAore3NwYWNlfSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHtzd2l6emxlRm9ybWF0fSwKK3tzcGFjZX0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7aW5pdGlhbGl6ZXJ9LAore3NwYWNlfSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRldmljZUNhcHMpOwore3NwYWNlfSAgICAgICAgcmV0dXJuIGluZm87Cit7
c3BhY2V9ICAgIH19CisiIiIKIAotICAgIGZvciBpbnRlcm5hbF9mb3JtYXRfaXRlbSBpbiBzb3J0
ZWQoanNvbl9tYXAuaXRlcml0ZW1zKCkpOgotICAgICAgICBpbnRlcm5hbF9mb3JtYXQgPSBpbnRl
cm5hbF9mb3JtYXRfaXRlbVswXQotICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAgIGNhc2Ug
JyArIGludGVybmFsX2Zvcm1hdCArICc6XG4nCi0gICAgICAgIHRhYmxlX2RhdGEgKz0gJyAgICAg
ICAge1xuJworZGVmIGpzb25fdG9fdGFibGVfZGF0YShpbnRlcm5hbF9mb3JtYXQsIGZvcm1hdF9u
YW1lLCBwcmVmaXgsIGpzb24pOgogCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoanNvbl9tYXBbaW50
ZXJuYWxfZm9ybWF0XSwgYmFzZXN0cmluZyk6Ci0gICAgICAgICAgICBhbmdsZV9mb3JtYXRfaWQg
PSBqc29uX21hcFtpbnRlcm5hbF9mb3JtYXRdCi0gICAgICAgICAgICB0YWJsZV9kYXRhICs9IGdl
dF90ZXh0dXJlX2Zvcm1hdF9pdGVtKDAsIGludGVybmFsX2Zvcm1hdCwgTm9uZSwgYW5nbGVfZm9y
bWF0X2lkLCBqc29uX2RhdGFbYW5nbGVfZm9ybWF0X2lkXSkKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIGZvciBpZHgsIHJlcXVpcmVtZW50c19tYXAgaW4gZW51bWVyYXRlKHNvcnRlZChqc29u
X21hcFtpbnRlcm5hbF9mb3JtYXRdLml0ZXJpdGVtcygpKSk6Ci0gICAgICAgICAgICAgICAgYW5n
bGVfZm9ybWF0X2lkID0gcmVxdWlyZW1lbnRzX21hcFsxXQotICAgICAgICAgICAgICAgIHRhYmxl
X2RhdGEgKz0gZ2V0X3RleHR1cmVfZm9ybWF0X2l0ZW0oaWR4LCBpbnRlcm5hbF9mb3JtYXQsIHJl
cXVpcmVtZW50c19tYXBbMF0sIGFuZ2xlX2Zvcm1hdF9pZCwganNvbl9kYXRhW2FuZ2xlX2Zvcm1h
dF9pZF0pCi0gICAgICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAgICAgICBlbHNlXG4nCi0g
ICAgICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAgICAgICB7XG4nCi0gICAgICAgICAgICB0
YWJsZV9kYXRhICs9ICcgICAgICAgICAgICAgICAgYnJlYWs7XG4nCi0gICAgICAgICAgICB0YWJs
ZV9kYXRhICs9ICcgICAgICAgICAgICB9XG4nCisgICAgdGFibGVfZGF0YSA9ICIiCiAKLSAgICAg
ICAgdGFibGVfZGF0YSArPSAnICAgICAgICB9XG4nCisgICAgcGFyc2VkID0geworICAgICAgICAi
c3BhY2UiOiAiICAgICAgICAiLAorICAgICAgICAiaW50ZXJuYWxGb3JtYXQiOiBpbnRlcm5hbF9m
b3JtYXQsCisgICAgICAgICJmb3JtYXROYW1lIjogZm9ybWF0X25hbWUsCisgICAgICAgICJ0ZXhG
b3JtYXQiOiAiRFhHSV9GT1JNQVRfVU5LTk9XTiIsCisgICAgICAgICJzcnZGb3JtYXQiOiAiRFhH
SV9GT1JNQVRfVU5LTk9XTiIsCisgICAgICAgICJydHZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfVU5L
Tk9XTiIsCisgICAgICAgICJkc3ZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfVU5LTk9XTiIsCisgICAg
ICAgICJjb25kaXRpb24iOiBwcmVmaXgsCisgICAgfQogCi0gICAgcmV0dXJuIHRhYmxlX2RhdGEK
KyAgICBmb3IgaywgdiBpbiBqc29uLml0ZXJpdGVtcygpOgorICAgICAgICBwYXJzZWRba10gPSB2
CiAKLWRlZiBnZXRfY2hhbm5lbF9zdHJ1Y3QoYW5nbGVfZm9ybWF0KToKLSAgICBpZiAnYml0cycg
bm90IGluIGFuZ2xlX2Zvcm1hdDoKLSAgICAgICAgcmV0dXJuIE5vbmUKLSAgICBiaXRzID0gYW5n
bGVfZm9ybWF0WydiaXRzJ10KLSAgICBpZiAnZGVwdGgnIGluIGJpdHMgb3IgJ3N0ZW5jaWwnIGlu
IGJpdHM6Ci0gICAgICAgIHJldHVybiBOb25lCisgICAgIyBEZXJpdmVkIHZhbHVlcy4KKyAgICBw
YXJzZWRbImJsaXRTUlZGb3JtYXQiXSA9IGdldF9ibGl0X3Nydl9mb3JtYXQocGFyc2VkKQorICAg
IHBhcnNlZFsic3dpenpsZUZvcm1hdCJdID0gZ2V0X3N3aXp6bGVfZm9ybWF0X2lkKGludGVybmFs
X2Zvcm1hdCwgcGFyc2VkKQorICAgIHBhcnNlZFsiaW5pdGlhbGl6ZXIiXSAgID0gZ2V0X2ludGVy
bmFsX2Zvcm1hdF9pbml0aWFsaXplcihpbnRlcm5hbF9mb3JtYXQsIGpzb24pCiAKLSAgICBpZiAn
Y2hhbm5lbFN0cnVjdCcgaW4gYW5nbGVfZm9ybWF0OgotICAgICAgICByZXR1cm4gYW5nbGVfZm9y
bWF0WydjaGFubmVsU3RydWN0J10KKyAgICBpZiBsZW4ocHJlZml4KSA+IDA6CisgICAgICAgIHJl
dHVybiBzcGxpdF9mb3JtYXRfZW50cnlfdGVtcGxhdGUuZm9ybWF0KCoqcGFyc2VkKQorICAgIGVs
c2U6CisgICAgICAgIHJldHVybiBmb3JtYXRfZW50cnlfdGVtcGxhdGUuZm9ybWF0KCoqcGFyc2Vk
KQogCi0gICAgc3RydWN0X25hbWUgPSAnJwotICAgIGZvciBjaGFubmVsIGluIGFuZ2xlX2Zvcm1h
dFsnY2hhbm5lbHMnXToKLSAgICAgICAgaWYgY2hhbm5lbCA9PSAncic6Ci0gICAgICAgICAgICBz
dHJ1Y3RfbmFtZSArPSAnUnt9Jy5mb3JtYXQoYml0c1sncmVkJ10pCi0gICAgICAgIGlmIGNoYW5u
ZWwgPT0gJ2cnOgotICAgICAgICAgICAgc3RydWN0X25hbWUgKz0gJ0d7fScuZm9ybWF0KGJpdHNb
J2dyZWVuJ10pCi0gICAgICAgIGlmIGNoYW5uZWwgPT0gJ2InOgotICAgICAgICAgICAgc3RydWN0
X25hbWUgKz0gJ0J7fScuZm9ybWF0KGJpdHNbJ2JsdWUnXSkKLSAgICAgICAgaWYgY2hhbm5lbCA9
PSAnYSc6Ci0gICAgICAgICAgICBzdHJ1Y3RfbmFtZSArPSAnQXt9Jy5mb3JtYXQoYml0c1snYWxw
aGEnXSkKLSAgICBpZiBhbmdsZV9mb3JtYXRbJ2NvbXBvbmVudFR5cGUnXSA9PSAnZmxvYXQnOgot
ICAgICAgICBzdHJ1Y3RfbmFtZSArPSAnRicKLSAgICBpZiBhbmdsZV9mb3JtYXRbJ2NvbXBvbmVu
dFR5cGUnXSA9PSAnaW50JyBvciBhbmdsZV9mb3JtYXRbJ2NvbXBvbmVudFR5cGUnXSA9PSAnc25v
cm0nOgotICAgICAgICBzdHJ1Y3RfbmFtZSArPSAnUycKLSAgICByZXR1cm4gc3RydWN0X25hbWUK
LQotZGVmIGdldF9taXBfZ2VuZXJhdGlvbl9mdW5jdGlvbihhbmdsZV9mb3JtYXQpOgotICAgIGNo
YW5uZWxfc3RydWN0ID0gZ2V0X2NoYW5uZWxfc3RydWN0KGFuZ2xlX2Zvcm1hdCkKLSAgICBpZiBj
aGFubmVsX3N0cnVjdCA9PSBOb25lOgotICAgICAgICByZXR1cm4gJ251bGxwdHInCi0gICAgcmV0
dXJuICdHZW5lcmF0ZU1pcDwnICsgY2hhbm5lbF9zdHJ1Y3QgKyAnPicKLQotZGVmIGdldF9jb2xv
cl9yZWFkX2Z1bmN0aW9uKGFuZ2xlX2Zvcm1hdCk6Ci0gICAgY2hhbm5lbF9zdHJ1Y3QgPSBnZXRf
Y2hhbm5lbF9zdHJ1Y3QoYW5nbGVfZm9ybWF0KQotICAgIGlmIGNoYW5uZWxfc3RydWN0ID09IE5v
bmU6Ci0gICAgICAgIHJldHVybiAnbnVsbHB0cicKLSAgICBjb21wb25lbnRfdHlwZV9tYXAgPSB7
Ci0gICAgICAgICd1aW50JzogJ0dMdWludCcsCi0gICAgICAgICdpbnQnOiAnR0xpbnQnLAotICAg
ICAgICAndW5vcm0nOiAnR0xmbG9hdCcsCi0gICAgICAgICdzbm9ybSc6ICdHTGZsb2F0JywKLSAg
ICAgICAgJ2Zsb2F0JzogJ0dMZmxvYXQnCi0gICAgfQotICAgIHJldHVybiAnUmVhZENvbG9yPCcg
KyBjaGFubmVsX3N0cnVjdCArICcsICcrIGNvbXBvbmVudF90eXBlX21hcFthbmdsZV9mb3JtYXRb
J2NvbXBvbmVudFR5cGUnXV0gKyAnPicKK2RlZiBwYXJzZV9qc29uX2FuZ2xlX2Zvcm1hdF9jYXNl
KGZvcm1hdF9uYW1lLCBhbmdsZV9mb3JtYXQsIGpzb25fZGF0YSk6CisgICAgc3VwcG9ydGVkX2Nh
c2UgPSB7fQorICAgIHVuc3VwcG9ydGVkX2Nhc2UgPSB7fQorICAgIHN1cHBvcnRfdGVzdCA9IE5v
bmUKKyAgICBmYWxsYmFjayA9IE5vbmUKKworICAgIGZvciBrLCB2IGluIGFuZ2xlX2Zvcm1hdC5p
dGVyaXRlbXMoKToKKyAgICAgICAgaWYgayA9PSAiRkwxMFBsdXMiOgorICAgICAgICAgICAgYXNz
ZXJ0IHN1cHBvcnRfdGVzdCBpcyBOb25lCisgICAgICAgICAgICBzdXBwb3J0X3Rlc3QgPSAiT25s
eUZMMTBQbHVzKGRldmljZUNhcHMpIgorICAgICAgICAgICAgZm9yIGsyLCB2MiBpbiB2Lml0ZXJp
dGVtcygpOgorICAgICAgICAgICAgICAgIHN1cHBvcnRlZF9jYXNlW2syXSA9IHYyCisgICAgICAg
IGVsaWYgayA9PSAiRkw5XzMiOgorICAgICAgICAgICAgc3BsaXQgPSBUcnVlCisgICAgICAgICAg
ICBmb3IgazIsIHYyIGluIHYuaXRlcml0ZW1zKCk6CisgICAgICAgICAgICAgICAgdW5zdXBwb3J0
ZWRfY2FzZVtrMl0gPSB2MgorICAgICAgICBlbGlmIGsgPT0gInN1cHBvcnRUZXN0IjoKKyAgICAg
ICAgICAgIGFzc2VydCBzdXBwb3J0X3Rlc3QgaXMgTm9uZQorICAgICAgICAgICAgc3VwcG9ydF90
ZXN0ID0gdgorICAgICAgICBlbGlmIGsgPT0gImZhbGxiYWNrRm9ybWF0IjoKKyAgICAgICAgICAg
IGZhbGxiYWNrID0gdgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc3VwcG9ydGVkX2Nhc2Vb
a10gPSB2CisgICAgICAgICAgICB1bnN1cHBvcnRlZF9jYXNlW2tdID0gdgogCi1kZWYgZ2V0X2Js
aXRfc3J2X2Zvcm1hdChhbmdsZV9mb3JtYXQpOgotICAgIGlmICdjaGFubmVscycgbm90IGluIGFu
Z2xlX2Zvcm1hdDoKLSAgICAgICAgcmV0dXJuICdEWEdJX0ZPUk1BVF9VTktOT1dOJwotICAgIGlm
ICdyJyBpbiBhbmdsZV9mb3JtYXRbJ2NoYW5uZWxzJ10gYW5kIGFuZ2xlX2Zvcm1hdFsnY29tcG9u
ZW50VHlwZSddIGluIFsnaW50JywgJ3VpbnQnXToKLSAgICAgICAgcmV0dXJuIGFuZ2xlX2Zvcm1h
dFsncnR2Rm9ybWF0J10KKyAgICBpZiBmYWxsYmFjayAhPSBOb25lOgorICAgICAgICB1bnN1cHBv
cnRlZF9jYXNlLCBfLCBfID0gcGFyc2VfanNvbl9hbmdsZV9mb3JtYXRfY2FzZSgKKyAgICAgICAg
ICAgIGZhbGxiYWNrLCBqc29uX2RhdGFbZmFsbGJhY2tdLCBqc29uX2RhdGEpCisgICAgICAgIHVu
c3VwcG9ydGVkX2Nhc2VbImZvcm1hdE5hbWUiXSA9IGZhbGxiYWNrCiAKLSAgICByZXR1cm4gYW5n
bGVfZm9ybWF0WyJzcnZGb3JtYXQiXSBpZiAic3J2Rm9ybWF0IiBpbiBhbmdsZV9mb3JtYXQgZWxz
ZSAiRFhHSV9GT1JNQVRfVU5LTk9XTiIKKyAgICBpZiBzdXBwb3J0X3Rlc3QgIT0gTm9uZToKKyAg
ICAgICAgcmV0dXJuIHN1cHBvcnRlZF9jYXNlLCB1bnN1cHBvcnRlZF9jYXNlLCBzdXBwb3J0X3Rl
c3QKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gc3VwcG9ydGVkX2Nhc2UsIE5vbmUsIE5vbmUK
IAotZGVmIHBhcnNlX2pzb25faW50b19zd2l0Y2hfYW5nbGVfZm9ybWF0X3N0cmluZyhqc29uX2Rh
dGEpOgorZGVmIHBhcnNlX2pzb25faW50b19zd2l0Y2hfYW5nbGVfZm9ybWF0X3N0cmluZyhqc29u
X21hcCwganNvbl9kYXRhKToKICAgICB0YWJsZV9kYXRhID0gJycKLSAgICBmb3IgYW5nbGVfZm9y
bWF0X2l0ZW0gaW4gc29ydGVkKGpzb25fZGF0YS5pdGVyaXRlbXMoKSk6Ci0gICAgICAgIHRhYmxl
X2RhdGEgKz0gJyAgICAgICAgY2FzZSAnICsgYW5nbGVfZm9ybWF0X2l0ZW1bMF0gKyAnOlxuJwot
ICAgICAgICBhbmdsZV9mb3JtYXQgPSBhbmdsZV9mb3JtYXRfaXRlbVsxXQotICAgICAgICBnbF9p
bnRlcm5hbF9mb3JtYXQgPSBhbmdsZV9mb3JtYXRbImdsSW50ZXJuYWxGb3JtYXQiXSBpZiAiZ2xJ
bnRlcm5hbEZvcm1hdCIgaW4gYW5nbGVfZm9ybWF0IGVsc2UgIkdMX05PTkUiCi0gICAgICAgIHRl
eF9mb3JtYXQgPSBhbmdsZV9mb3JtYXRbInRleEZvcm1hdCJdIGlmICJ0ZXhGb3JtYXQiIGluIGFu
Z2xlX2Zvcm1hdCBlbHNlICJEWEdJX0ZPUk1BVF9VTktOT1dOIgotICAgICAgICBzcnZfZm9ybWF0
ID0gYW5nbGVfZm9ybWF0WyJzcnZGb3JtYXQiXSBpZiAic3J2Rm9ybWF0IiBpbiBhbmdsZV9mb3Jt
YXQgZWxzZSAiRFhHSV9GT1JNQVRfVU5LTk9XTiIKLSAgICAgICAgcnR2X2Zvcm1hdCA9IGFuZ2xl
X2Zvcm1hdFsicnR2Rm9ybWF0Il0gaWYgInJ0dkZvcm1hdCIgaW4gYW5nbGVfZm9ybWF0IGVsc2Ug
IkRYR0lfRk9STUFUX1VOS05PV04iCi0gICAgICAgIGRzdl9mb3JtYXQgPSBhbmdsZV9mb3JtYXRb
ImRzdkZvcm1hdCJdIGlmICJkc3ZGb3JtYXQiIGluIGFuZ2xlX2Zvcm1hdCBlbHNlICJEWEdJX0ZP
Uk1BVF9VTktOT1dOIgotICAgICAgICBibGl0X3Nydl9mb3JtYXQgPSBnZXRfYmxpdF9zcnZfZm9y
bWF0KGFuZ2xlX2Zvcm1hdCkKLSAgICAgICAgc3dpenpsZV9mb3JtYXQgPSBnZXRfc3dpenpsZV9m
b3JtYXRfaWQoYW5nbGVfZm9ybWF0X2l0ZW1bMF0sIGFuZ2xlX2Zvcm1hdCkKLSAgICAgICAgbWlw
X2dlbmVyYXRpb25fZnVuY3Rpb24gPSBnZXRfbWlwX2dlbmVyYXRpb25fZnVuY3Rpb24oYW5nbGVf
Zm9ybWF0KQotICAgICAgICBjb2xvcl9yZWFkX2Z1bmN0aW9uID0gZ2V0X2NvbG9yX3JlYWRfZnVu
Y3Rpb24oYW5nbGVfZm9ybWF0KQotICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAgIHtcbicK
LSAgICAgICAgdGFibGVfZGF0YSArPSAnICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9y
bWF0U2V0IGZvcm1hdEluZm8oJyArIGFuZ2xlX2Zvcm1hdF9pdGVtWzBdICsgJyxcbicKLSAgICAg
ICAgdGFibGVfZGF0YSArPSAnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJyArIGdsX2ludGVybmFsX2Zvcm1hdCArICcsXG4nCi0gICAgICAgIHRhYmxl
X2RhdGEgKz0gJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcgKyB0ZXhfZm9ybWF0ICsgJyxcbicKLSAgICAgICAgdGFibGVfZGF0YSArPSAnICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyArIHNydl9mb3Jt
YXQgKyAnLFxuJwotICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICsgcnR2X2Zvcm1hdCArICcsXG4nCi0gICAg
ICAgIHRhYmxlX2RhdGEgKz0gJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICcgKyBkc3ZfZm9ybWF0ICsgJyxcbicKLSAgICAgICAgdGFibGVfZGF0YSAr
PSAnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAr
IGJsaXRfc3J2X2Zvcm1hdCArICcsXG4nCi0gICAgICAgIHRhYmxlX2RhdGEgKz0gJyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgKyBzd2l6emxlX2Zv
cm1hdCArICcsXG4nCi0gICAgICAgIHRhYmxlX2RhdGEgKz0gJyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgKyBtaXBfZ2VuZXJhdGlvbl9mdW5jdGlv
biArICcsXG4nCi0gICAgICAgIHRhYmxlX2RhdGEgKz0gJyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgKyBjb2xvcl9yZWFkX2Z1bmN0aW9uICsgJyk7
XG4nCi0gICAgICAgIHRhYmxlX2RhdGEgKz0gJyAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZv
O1xuJwotICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAgIH1cbicKLSAgICByZXR1cm4gdGFi
bGVfZGF0YQogCi1kZWYgcGFyc2VfanNvbl9pbnRvX2FuZ2xlX2Zvcm1hdF9lbnVtX3N0cmluZyhq
c29uX2RhdGEpOgotICAgIGVudW1fZGF0YSA9ICcnCi0gICAgaW5kZXggPSAwCi0gICAgZm9yIGFu
Z2xlX2Zvcm1hdF9pdGVtIGluIHNvcnRlZChqc29uX2RhdGEuaXRlcml0ZW1zKCkpOgotICAgICAg
ICBpZiBpbmRleCA+IDA6Ci0gICAgICAgICAgICBlbnVtX2RhdGEgKz0gJyxcbicKLSAgICAgICAg
ZW51bV9kYXRhICs9ICcgICAgJyArIGFuZ2xlX2Zvcm1hdF9pdGVtWzBdCi0gICAgICAgIGluZGV4
ICs9IDEKLSAgICByZXR1cm4gZW51bV9kYXRhCisgICAgZm9yIGludGVybmFsX2Zvcm1hdCwgZm9y
bWF0X25hbWUgaW4gc29ydGVkKGpzb25fbWFwLml0ZXJpdGVtcygpKToKKworICAgICAgICBpZiBm
b3JtYXRfbmFtZSBub3QgaW4ganNvbl9kYXRhOgorICAgICAgICAgICAgY29udGludWUKKworICAg
ICAgICBhbmdsZV9mb3JtYXQgPSBqc29uX2RhdGFbZm9ybWF0X25hbWVdCisKKyAgICAgICAgc3Vw
cG9ydGVkX2Nhc2UsIHVuc3VwcG9ydGVkX2Nhc2UsIHN1cHBvcnRfdGVzdCA9IHBhcnNlX2pzb25f
YW5nbGVfZm9ybWF0X2Nhc2UoCisgICAgICAgICAgICBmb3JtYXRfbmFtZSwgYW5nbGVfZm9ybWF0
LCBqc29uX2RhdGEpCisKKyAgICAgICAgdGFibGVfZGF0YSArPSAnICAgICAgICBjYXNlICcgKyBp
bnRlcm5hbF9mb3JtYXQgKyAnOlxuJworCisgICAgICAgIGlmIHN1cHBvcnRfdGVzdCAhPSBOb25l
OgorICAgICAgICAgICAgdGFibGVfZGF0YSArPSAiICAgICAgICB7XG4iCisgICAgICAgICAgICB0
YWJsZV9kYXRhICs9IGpzb25fdG9fdGFibGVfZGF0YShpbnRlcm5hbF9mb3JtYXQsIGZvcm1hdF9u
YW1lLCAiaWYgKCIgKyBzdXBwb3J0X3Rlc3QgKyAiKSIsIHN1cHBvcnRlZF9jYXNlKQorICAgICAg
ICAgICAgdGFibGVfZGF0YSArPSBqc29uX3RvX3RhYmxlX2RhdGEoaW50ZXJuYWxfZm9ybWF0LCBm
b3JtYXRfbmFtZSwgImVsc2UiLCB1bnN1cHBvcnRlZF9jYXNlKQorICAgICAgICAgICAgdGFibGVf
ZGF0YSArPSAiICAgICAgICB9XG4iCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0YWJsZV9k
YXRhICs9IGpzb25fdG9fdGFibGVfZGF0YShpbnRlcm5hbF9mb3JtYXQsIGZvcm1hdF9uYW1lLCAi
Iiwgc3VwcG9ydGVkX2Nhc2UpCisKKyAgICByZXR1cm4gdGFibGVfZGF0YQogCiBkZWYgcmVqZWN0
X2R1cGxpY2F0ZV9rZXlzKHBhaXJzKToKICAgICBmb3VuZF9rZXlzID0ge30KQEAgLTUwMCwyNiAr
MzQzLDE3IEBAIGRlZiByZWplY3RfZHVwbGljYXRlX2tleXMocGFpcnMpOgogICAgICAgICAgICBm
b3VuZF9rZXlzW2tleV0gPSB2YWx1ZQogICAgIHJldHVybiBmb3VuZF9rZXlzCiAKLXdpdGggb3Bl
bigndGV4dHVyZV9mb3JtYXRfbWFwLmpzb24nKSBhcyB0ZXh0dXJlX2Zvcm1hdF9tYXBfZmlsZToK
LSAgICB3aXRoIG9wZW4oJ3RleHR1cmVfZm9ybWF0X2RhdGEuanNvbicpIGFzIHRleHR1cmVfZm9y
bWF0X2pzb25fZmlsZToKLSAgICAgICAgdGV4dHVyZV9mb3JtYXRfbWFwID0gdGV4dHVyZV9mb3Jt
YXRfbWFwX2ZpbGUucmVhZCgpCi0gICAgICAgIHRleHR1cmVfZm9ybWF0X2RhdGEgPSB0ZXh0dXJl
X2Zvcm1hdF9qc29uX2ZpbGUucmVhZCgpCi0gICAgICAgIHRleHR1cmVfZm9ybWF0X21hcF9maWxl
LmNsb3NlKCkKLSAgICAgICAgdGV4dHVyZV9mb3JtYXRfanNvbl9maWxlLmNsb3NlKCkKLSAgICAg
ICAganNvbl9tYXAgPSBqc29uLmxvYWRzKHRleHR1cmVfZm9ybWF0X21hcCwgb2JqZWN0X3BhaXJz
X2hvb2s9cmVqZWN0X2R1cGxpY2F0ZV9rZXlzKQotICAgICAgICBqc29uX2RhdGEgPSBqc29uLmxv
YWRzKHRleHR1cmVfZm9ybWF0X2RhdGEsIG9iamVjdF9wYWlyc19ob29rPXJlamVjdF9kdXBsaWNh
dGVfa2V5cykKLQotICAgICAgICB0ZXh0dXJlX2Zvcm1hdF9jYXNlcyA9IHBhcnNlX2pzb25faW50
b19zd2l0Y2hfdGV4dHVyZV9mb3JtYXRfc3RyaW5nKGpzb25fbWFwLCBqc29uX2RhdGEpCi0gICAg
ICAgIGFuZ2xlX2Zvcm1hdF9jYXNlcyA9IHBhcnNlX2pzb25faW50b19zd2l0Y2hfYW5nbGVfZm9y
bWF0X3N0cmluZyhqc29uX2RhdGEpCi0gICAgICAgIG91dHB1dF9jcHAgPSB0ZW1wbGF0ZV90ZXh0
dXJlX2Zvcm1hdF90YWJsZV9hdXRvZ2VuX2NwcC5mb3JtYXQoCi0gICAgICAgICAgICB0ZXh0dXJl
X2Zvcm1hdF9pbmZvX2Nhc2VzPXRleHR1cmVfZm9ybWF0X2Nhc2VzLAotICAgICAgICAgICAgYW5n
bGVfZm9ybWF0X2luZm9fY2FzZXM9YW5nbGVfZm9ybWF0X2Nhc2VzKQotICAgICAgICB3aXRoIG9w
ZW4oJ3RleHR1cmVfZm9ybWF0X3RhYmxlX2F1dG9nZW4uY3BwJywgJ3d0JykgYXMgb3V0X2ZpbGU6
Ci0gICAgICAgICAgICBvdXRfZmlsZS53cml0ZShvdXRwdXRfY3BwKQotICAgICAgICAgICAgb3V0
X2ZpbGUuY2xvc2UoKQotCi0gICAgICAgIGVudW1fZGF0YSA9IHBhcnNlX2pzb25faW50b19hbmds
ZV9mb3JtYXRfZW51bV9zdHJpbmcoanNvbl9kYXRhKQotICAgICAgICBvdXRwdXRfaCA9IHRlbXBs
YXRlX3RleHR1cmVfZm9ybWF0X3RhYmxlX2F1dG9nZW5faC5mb3JtYXQoYW5nbGVfZm9ybWF0X2Vu
dW09ZW51bV9kYXRhKQotICAgICAgICB3aXRoIG9wZW4oJ3RleHR1cmVfZm9ybWF0X3RhYmxlX2F1
dG9nZW4uaCcsICd3dCcpIGFzIG91dF9maWxlOgotICAgICAgICAgICAgb3V0X2ZpbGUud3JpdGUo
b3V0cHV0X2gpCi0gICAgICAgICAgICBvdXRfZmlsZS5jbG9zZSgpCitqc29uX21hcCA9IGFuZ2xl
X2Zvcm1hdC5sb2FkX3dpdGhfb3ZlcnJpZGUob3MucGF0aC5hYnNwYXRoKCd0ZXh0dXJlX2Zvcm1h
dF9tYXAuanNvbicpKQorCit3aXRoIG9wZW4oJ3RleHR1cmVfZm9ybWF0X2RhdGEuanNvbicpIGFz
IHRleHR1cmVfZm9ybWF0X2pzb25fZmlsZToKKyAgICB0ZXh0dXJlX2Zvcm1hdF9kYXRhID0gdGV4
dHVyZV9mb3JtYXRfanNvbl9maWxlLnJlYWQoKQorICAgIHRleHR1cmVfZm9ybWF0X2pzb25fZmls
ZS5jbG9zZSgpCisgICAganNvbl9kYXRhID0ganNvbi5sb2Fkcyh0ZXh0dXJlX2Zvcm1hdF9kYXRh
LCBvYmplY3RfcGFpcnNfaG9vaz1hbmdsZV9mb3JtYXQucmVqZWN0X2R1cGxpY2F0ZV9rZXlzKQor
CisgICAgYW5nbGVfZm9ybWF0X2Nhc2VzID0gcGFyc2VfanNvbl9pbnRvX3N3aXRjaF9hbmdsZV9m
b3JtYXRfc3RyaW5nKGpzb25fbWFwLCBqc29uX2RhdGEpCisgICAgb3V0cHV0X2NwcCA9IHRlbXBs
YXRlX3RleHR1cmVfZm9ybWF0X3RhYmxlX2F1dG9nZW5fY3BwLmZvcm1hdCgKKyAgICAgICAgY29w
eXJpZ2h0X3llYXI9ZGF0ZS50b2RheSgpLnllYXIsCisgICAgICAgIGFuZ2xlX2Zvcm1hdF9pbmZv
X2Nhc2VzPWFuZ2xlX2Zvcm1hdF9jYXNlcykKKyAgICB3aXRoIG9wZW4oJ3RleHR1cmVfZm9ybWF0
X3RhYmxlX2F1dG9nZW4uY3BwJywgJ3d0JykgYXMgb3V0X2ZpbGU6CisgICAgICAgIG91dF9maWxl
LndyaXRlKG91dHB1dF9jcHApCisgICAgICAgIG91dF9maWxlLmNsb3NlKCkKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvbG9hZF9m
dW5jdGlvbnNfZGF0YS5qc29uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvbG9hZF9mdW5jdGlvbnNfZGF0YS5qc29u
CShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL2xvYWRfZnVuY3Rpb25zX2RhdGEuanNvbgkobm9uZXhpc3Rl
bnQpCkBAIC0xLDExMTYgKzAsMCBAQAotewotICAiR0xfUkc4X1NOT1JNIjogewotICAgICJHTF9C
WVRFIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxH
TGJ5dGUsMj4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4X1NOT1JN
IiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIKLSAgICAgIH0KLSAgICBd
Ci0gIH0sCi0gICJHTF9TUkdCOCI6IHsKLSAgICAiR0xfVU5TSUdORURfQllURSI6IFsKLSAgICAg
IHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmUzVG80PEdMdWJ5dGUsMHhG
Rj4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9T
UkdCIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAg
IF0KLSAgfSwKLSAgIkdMX1JHQkE4SSI6IHsKLSAgICAiR0xfQllURSI6IFsKLSAgICAgIHsKLSAg
ICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0xieXRlLDQ+IiwKLSAgICAgICAg
ImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOEI4QThfU0lOVCIsCi0gICAgICAgICJyZXF1
aXJlc0NvbnZlcnNpb24iOiAiZmFsc2UiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfUjhf
U05PUk0iOiB7Ci0gICAgIkdMX0JZVEUiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rp
b24iOiAiTG9hZFRvTmF0aXZlPEdMYnl0ZSwxPiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRY
R0lfRk9STUFUX1I4X1NOT1JNIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxz
ZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9SR0JBOF9TTk9STSI6IHsKLSAgICAiR0xf
QllURSI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8
R0xieXRlLDQ+IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOEI4QThf
U05PUk0iLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogImZhbHNlIgotICAgICAgfQot
ICAgIF0KLSAgfSwKLSAgIkdMX1IxNkkiOiB7Ci0gICAgIkdMX1NIT1JUIjogWwotICAgICAgewot
ICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxHTHNob3J0LDE+IiwKLSAgICAg
ICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2X1NJTlQiLAotICAgICAgICAicmVxdWly
ZXNDb252ZXJzaW9uIjogImZhbHNlIgotICAgICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX0NPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDIjogewotICAgICJHTF9VTlNJR05FRF9CWVRFIjog
WwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRFVEMyU1JHQkE4VG9TUkdC
QTgiLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9T
UkdCIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAg
IF0KLSAgfSwKLSAgIkdMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIi
OiB7Ci0gICAgIkdMX1VOU0lHTkVEX0JZVEUiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVu
Y3Rpb24iOiAiTG9hZEVUQzJSR0I4QTFUb1JHQkE4IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAi
RFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0iLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9u
IjogInRydWUiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfUkdCMzJVSSI6IHsKLSAgICAi
R0xfVU5TSUdORURfSU5UIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxv
YWRUb05hdGl2ZTNUbzQ8R0x1aW50LDB4MDAwMDAwMDE+IiwKLSAgICAgICAgImR4Z2lGb3JtYXQi
OiAiRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQiLAotICAgICAgICAicmVxdWlyZXNDb252
ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfQUxQSEEzMkZfRVhU
IjogewotICAgICJHTF9GTE9BVCI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6
ICJMb2FkQTMyRlRvUkdCQTMyRiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFU
X1VOS05PV04iLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9
Ci0gICAgXQotICB9LAotICAiR0xfUjE2VUkiOiB7Ci0gICAgIkdMX1VOU0lHTkVEX1NIT1JUIjog
WwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxHTHVzaG9y
dCwxPiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNl9VSU5UIiwKLSAg
ICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIKLSAgICAgIH0KLSAgICBdCi0gIH0s
Ci0gICJHTF9SR0I5X0U1IjogewotICAgICJHTF9IQUxGX0ZMT0FUIjogWwotICAgICAgewotICAg
ICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRSR0IxNkZUb1JHQjlFNSIsCi0gICAgICAgICJkeGdp
Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I5RzlCOUU1X1NIQVJFREVYUCIsCi0gICAgICAgICJyZXF1
aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdLAotICAgICJHTF9VTlNJR05F
RF9JTlRfNV85XzlfOV9SRVYiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAi
TG9hZFRvTmF0aXZlPEdMdWludCwxPiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9S
TUFUX1I5RzlCOUU1X1NIQVJFREVYUCIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAi
ZmFsc2UiCi0gICAgICB9Ci0gICAgXSwKLSAgICAiR0xfRkxPQVQiOiBbCi0gICAgICB7Ci0gICAg
ICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFJHQjMyRlRvUkdCOUU1IiwKLSAgICAgICAgImR4Z2lG
b3JtYXQiOiAiRFhHSV9GT1JNQVRfUjlHOUI5RTVfU0hBUkVERVhQIiwKLSAgICAgICAgInJlcXVp
cmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAgIF0sCi0gICAgIkdMX0hBTEZfRkxP
QVRfT0VTIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRSR0IxNkZU
b1JHQjlFNSIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1I5RzlCOUU1X1NI
QVJFREVYUCIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0K
LSAgICBdCi0gIH0sCi0gICJHTF9DT01QUkVTU0VEX1IxMV9FQUMiOiB7Ci0gICAgIkdMX1VOU0lH
TkVEX0JZVEUiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZEVBQ1Ix
MVRvUjgiLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOF9VTk9STSIsCi0g
ICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdCi0gIH0s
Ci0gICJHTF9SR0JBMzJVSSI6IHsKLSAgICAiR0xfVU5TSUdORURfSU5UIjogWwotICAgICAgewot
ICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxHTHVpbnQsND4iLAotICAgICAg
ICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVCIsCi0gICAgICAg
ICJyZXF1aXJlc0NvbnZlcnNpb24iOiAiZmFsc2UiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAi
R0xfUkc4VUkiOiB7Ci0gICAgIkdMX1VOU0lHTkVEX0JZVEUiOiBbCi0gICAgICB7Ci0gICAgICAg
ICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlPEdMdWJ5dGUsMj4iLAotICAgICAgICAiZHhn
aUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4X1VJTlQiLAotICAgICAgICAicmVxdWlyZXNDb252
ZXJzaW9uIjogImZhbHNlIgotICAgICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX0xVTUlOQU5DRTMy
Rl9FWFQiOiB7Ci0gICAgIkdMX0ZMT0FUIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0
aW9uIjogIkxvYWRMMzJGVG9SR0JBMzJGIiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9G
T1JNQVRfVU5LTk9XTiIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAg
ICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9B
TFBIQTFfRVRDMiI6IHsKLSAgICAiR0xfVU5TSUdORURfQllURSI6IFsKLSAgICAgIHsKLSAgICAg
ICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkRVRDMlNSR0I4QTFUb1JHQkE4IiwKLSAgICAgICAgImR4
Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiIsCi0gICAgICAgICJy
ZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9S
MTZGIjogewotICAgICJHTF9IQUxGX0ZMT0FUIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1
bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxHTGhhbGYsMT4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6
ICJEWEdJX0ZPUk1BVF9SMTZfRkxPQVQiLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjog
ImZhbHNlIgotICAgICAgfQotICAgIF0sCi0gICAgIkdMX0ZMT0FUIjogWwotICAgICAgewotICAg
ICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWQzMkZUbzE2RjwxPiIsCi0gICAgICAgICJkeGdpRm9y
bWF0IjogIkRYR0lfRk9STUFUX1IxNl9GTE9BVCIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNp
b24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdLAotICAgICJHTF9IQUxGX0ZMT0FUX09FUyI6IFsK
LSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0xoYWxmLDE+
IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2X0ZMT0FUIiwKLSAgICAg
ICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0g
ICJHTF9SR0JBOFVJIjogewotICAgICJHTF9VTlNJR05FRF9CWVRFIjogWwotICAgICAgewotICAg
ICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxHTHVieXRlLDQ+IiwKLSAgICAgICAg
ImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVCIsCi0gICAgICAgICJyZXF1
aXJlc0NvbnZlcnNpb24iOiAiZmFsc2UiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfQkdS
QTRfQU5HTEVYIjogewotICAgICJHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80X1JFVl9FWFQiOiBb
Ci0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFJHQkE0VG9SR0JBOCIsCi0g
ICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1VOS05PV04iLAotICAgICAgICAicmVx
dWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAgXSwKLSAgICAiR0xfVU5TSUdO
RURfQllURSI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRp
dmU8R0x1Ynl0ZSw0PiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1VOS05P
V04iLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogImZhbHNlIgotICAgICAgfQotICAg
IF0KLSAgfSwKLSAgIkdMX1JHQkExNkYiOiB7Ci0gICAgIkdMX0hBTEZfRkxPQVQiOiBbCi0gICAg
ICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlPEdMaGFsZiw0PiIsCi0g
ICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCIsCi0g
ICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAiZmFsc2UiCi0gICAgICB9Ci0gICAgXSwKLSAg
ICAiR0xfRkxPQVQiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZDMy
RlRvMTZGPDQ+IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2RzE2QjE2
QTE2X0ZMT0FUIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAg
fQotICAgIF0sCi0gICAgIkdMX0hBTEZfRkxPQVRfT0VTIjogWwotICAgICAgewotICAgICAgICAi
bG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxHTGhhbGYsND4iLAotICAgICAgICAiZHhnaUZv
cm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQiLAotICAgICAgICAicmVxdWly
ZXNDb252ZXJzaW9uIjogImZhbHNlIgotICAgICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX0xVTUlO
QU5DRThfRVhUIjogewotICAgICJHTF9VTlNJR05FRF9CWVRFIjogWwotICAgICAgewotICAgICAg
ICAibG9hZEZ1bmN0aW9uIjogIkxvYWRMOFRvUkdCQTgiLAotICAgICAgICAiZHhnaUZvcm1hdCI6
ICJEWEdJX0ZPUk1BVF9VTktOT1dOIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0
cnVlIgotICAgICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RY
VDVfQU5HTEUiOiB7Ci0gICAgIkdMX1VOU0lHTkVEX0JZVEUiOiBbCi0gICAgICB7Ci0gICAgICAg
ICJsb2FkRnVuY3Rpb24iOiAiTG9hZENvbXByZXNzZWRUb05hdGl2ZTw0LDQsMTY+IiwKLSAgICAg
ICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfVU5LTk9XTiIsCi0gICAgICAgICJyZXF1aXJl
c0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9SR0IiOiB7
Ci0gICAgIkdMX1VOU0lHTkVEX0JZVEUiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rp
b24iOiAiVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24iLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJE
WEdJX0ZPUk1BVF9VTktOT1dOIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVl
IgotICAgICAgfQotICAgIF0sCi0gICAgIkdMX1VOU0lHTkVEX1NIT1JUXzVfNl81IjogWwotICAg
ICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIlVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uIiwK
LSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfVU5LTk9XTiIsCi0gICAgICAgICJy
ZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9S
R0I1X0ExIjogewotICAgICJHTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYiOiBbCi0gICAg
ICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFJHQjEwQTJUb1JHQkE4IiwKLSAgICAg
ICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0iLAotICAgICAgICAi
cmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAgXSwKLSAgICAiR0xfVU5T
SUdORURfQllURSI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9O
YXRpdmU8R0x1Ynl0ZSw0PiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1I4
RzhCOEE4X1VOT1JNIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIKLSAg
ICAgIH0KLSAgICBdLAotICAgICJHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xIjogWwotICAgICAg
ewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRSR0I1QTFUb1JHQkE4IiwKLSAgICAgICAg
ImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0iLAotICAgICAgICAicmVx
dWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9LAotICAgICAgewotICAgICAgICAibG9h
ZEZ1bmN0aW9uIjogIkxvYWRSR0I1QTFUb0ExUkdCNSIsCi0gICAgICAgICJkeGdpRm9ybWF0Ijog
IkRYR0lfRk9STUFUX0I1RzVSNUExX1VOT1JNIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lv
biI6ICJ0cnVlIgotICAgICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX1JHQjE2VUkiOiB7Ci0gICAg
IkdMX1VOU0lHTkVEX1NIT1JUIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjog
IkxvYWRUb05hdGl2ZTNUbzQ8R0x1c2hvcnQsMHgwMDAxPiIsCi0gICAgICAgICJkeGdpRm9ybWF0
IjogIkRYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5UIiwKLSAgICAgICAgInJlcXVpcmVzQ29u
dmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX0JHUkFfRVhUIjog
ewotICAgICJHTF9VTlNJR05FRF9CWVRFIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0
aW9uIjogIlVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uIiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAi
RFhHSV9GT1JNQVRfVU5LTk9XTiIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1
ZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9DT01QUkVTU0VEX1JHQjhfRVRDMiI6IHsK
LSAgICAiR0xfVU5TSUdORURfQllURSI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlv
biI6ICJMb2FkRVRDMlJHQjhUb1JHQkE4IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9G
T1JNQVRfUjhHOEI4QThfVU5PUk0iLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRy
dWUiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfUkdCQTMyRiI6IHsKLSAgICAiR0xfRkxP
QVQiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlPEdM
ZmxvYXQsND4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMzJHMzJCMzJB
MzJfRkxPQVQiLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogImZhbHNlIgotICAgICAg
fQotICAgIF0KLSAgfSwKLSAgIkdMX1JHQkEzMkkiOiB7Ci0gICAgIkdMX0lOVCI6IFsKLSAgICAg
IHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0xpbnQsND4iLAotICAg
ICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCIsCi0gICAg
ICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAiZmFsc2UiCi0gICAgICB9Ci0gICAgXQotICB9LAot
ICAiR0xfTFVNSU5BTkNFOF9BTFBIQThfRVhUIjogewotICAgICJHTF9VTlNJR05FRF9CWVRFIjog
WwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRMQThUb1JHQkE4IiwKLSAg
ICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfVU5LTk9XTiIsCi0gICAgICAgICJyZXF1
aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9SRzgi
OiB7Ci0gICAgIkdMX1VOU0lHTkVEX0JZVEUiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVu
Y3Rpb24iOiAiTG9hZFRvTmF0aXZlPEdMdWJ5dGUsMj4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6
ICJEWEdJX0ZPUk1BVF9SOEc4X1VOT1JNIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6
ICJmYWxzZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9SR0IxMF9BMiI6IHsKLSAgICAi
R0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWIjogWwotICAgICAgewotICAgICAgICAibG9h
ZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxHTHVpbnQsMT4iLAotICAgICAgICAiZHhnaUZvcm1h
dCI6ICJEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VTk9STSIsCi0gICAgICAgICJyZXF1aXJlc0Nv
bnZlcnNpb24iOiAiZmFsc2UiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfQ09NUFJFU1NF
RF9TSUdORURfUkcxMV9FQUMiOiB7Ci0gICAgIkdMX1VOU0lHTkVEX0JZVEUiOiBbCi0gICAgICB7
Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZEVBQ1JHMTFTVG9SRzgiLAotICAgICAgICAi
ZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4X1NOT1JNIiwKLSAgICAgICAgInJlcXVpcmVz
Q29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX0RFUFRIX0NP
TVBPTkVOVDE2IjogewotICAgICJHTF9VTlNJR05FRF9JTlQiOiBbCi0gICAgICB7Ci0gICAgICAg
ICJsb2FkRnVuY3Rpb24iOiAiTG9hZFIzMlRvUjE2IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAi
RFhHSV9GT1JNQVRfUjE2X1RZUEVMRVNTIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6
ICJ0cnVlIgotICAgICAgfQotICAgIF0sCi0gICAgIkdMX1VOU0lHTkVEX1NIT1JUIjogWwotICAg
ICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxHTHVzaG9ydCwxPiIs
Ci0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNl9UWVBFTEVTUyIsCi0gICAg
ICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAiZmFsc2UiCi0gICAgICB9LAotICAgICAgewotICAg
ICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxHTHVzaG9ydCwxPiIsCi0gICAgICAg
ICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX0QxNl9VTk9STSIsCi0gICAgICAgICJyZXF1aXJl
c0NvbnZlcnNpb24iOiAiZmFsc2UiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfUkdCMzJJ
IjogewotICAgICJHTF9JTlQiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAi
TG9hZFRvTmF0aXZlM1RvNDxHTGludCwweDAwMDAwMDAxPiIsCi0gICAgICAgICJkeGdpRm9ybWF0
IjogIkRYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5UIiwKLSAgICAgICAgInJlcXVpcmVzQ29u
dmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX1I4IjogewotICAg
ICJHTF9VTlNJR05FRF9CWVRFIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjog
IkxvYWRUb05hdGl2ZTxHTHVieXRlLDE+IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9G
T1JNQVRfUjhfVU5PUk0iLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogImZhbHNlIgot
ICAgICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX1JHQjMyRiI6IHsKLSAgICAiR0xfRkxPQVQiOiBb
Ci0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlM1RvNDxHTGZs
b2F0LGdsOjpGbG9hdDMyT25lPiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFU
X1IzMkczMkIzMkEzMl9GTE9BVCIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1
ZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9SMTFGX0cxMUZfQjEwRiI6IHsKLSAgICAi
R0xfVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFViI6IFsKLSAgICAgIHsKLSAgICAgICAgImxv
YWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0x1aW50LDE+IiwKLSAgICAgICAgImR4Z2lGb3Jt
YXQiOiAiRFhHSV9GT1JNQVRfUjExRzExQjEwX0ZMT0FUIiwKLSAgICAgICAgInJlcXVpcmVzQ29u
dmVyc2lvbiI6ICJmYWxzZSIKLSAgICAgIH0KLSAgICBdLAotICAgICJHTF9IQUxGX0ZMT0FUIjog
WwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRSR0IxNkZUb1JHMTFCMTBG
IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjExRzExQjEwX0ZMT0FUIiwK
LSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAgIF0sCi0g
ICAgIkdMX0ZMT0FUIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRS
R0IzMkZUb1JHMTFCMTBGIiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjEx
RzExQjEwX0ZMT0FUIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAg
ICAgfQotICAgIF0sCi0gICAgIkdMX0hBTEZfRkxPQVRfT0VTIjogWwotICAgICAgewotICAgICAg
ICAibG9hZEZ1bmN0aW9uIjogIkxvYWRSR0IxNkZUb1JHMTFCMTBGIiwKLSAgICAgICAgImR4Z2lG
b3JtYXQiOiAiRFhHSV9GT1JNQVRfUjExRzExQjEwX0ZMT0FUIiwKLSAgICAgICAgInJlcXVpcmVz
Q29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX1JHQjgiOiB7
Ci0gICAgIkdMX1VOU0lHTkVEX0JZVEUiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rp
b24iOiAiTG9hZFRvTmF0aXZlM1RvNDxHTHVieXRlLDB4RkY+IiwKLSAgICAgICAgImR4Z2lGb3Jt
YXQiOiAiRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0iLAotICAgICAgICAicmVxdWlyZXNDb252
ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfTFVNSU5BTkNFX0FM
UEhBIjogewotICAgICJHTF9IQUxGX0ZMT0FUIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1
bmN0aW9uIjogIkxvYWRMQTE2RlRvUkdCQTE2RiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRY
R0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNp
b24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdLAotICAgICJHTF9VTlNJR05FRF9CWVRFIjogWwot
ICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIlVucmVhY2hhYmxlTG9hZEZ1bmN0aW9u
IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfVU5LTk9XTiIsCi0gICAgICAg
ICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdLAotICAgICJHTF9G
TE9BVCI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkTEEzMkZUb1JH
QkEzMkYiLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJf
RkxPQVQiLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0g
ICAgXSwKLSAgICAiR0xfSEFMRl9GTE9BVF9PRVMiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2Fk
RnVuY3Rpb24iOiAiTG9hZExBMTZGVG9SR0JBMTZGIiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAi
RFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FUIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVy
c2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX1JHQkExNkkiOiB7Ci0g
ICAgIkdMX1NIT1JUIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRU
b05hdGl2ZTxHTHNob3J0LDQ+IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRf
UjE2RzE2QjE2QTE2X1NJTlQiLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogImZhbHNl
IgotICAgICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX1I4SSI6IHsKLSAgICAiR0xfQllURSI6IFsK
LSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0xieXRlLDE+
IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhfU0lOVCIsCi0gICAgICAg
ICJyZXF1aXJlc0NvbnZlcnNpb24iOiAiZmFsc2UiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAi
R0xfUkdCOF9TTk9STSI6IHsKLSAgICAiR0xfQllURSI6IFsKLSAgICAgIHsKLSAgICAgICAgImxv
YWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmUzVG80PEdMYnl0ZSwweDdGPiIsCi0gICAgICAgICJk
eGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhCOEE4X1NOT1JNIiwKLSAgICAgICAgInJlcXVp
cmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX1JHMzJG
IjogewotICAgICJHTF9GTE9BVCI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6
ICJMb2FkVG9OYXRpdmU8R0xmbG9hdCwyPiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lf
Rk9STUFUX1IzMkczMl9GTE9BVCIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAiZmFs
c2UiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfREVQVEhfQ09NUE9ORU5UMzJGIjogewot
ICAgICJHTF9GTE9BVCI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2Fk
VG9OYXRpdmU8R0xmbG9hdCwxPiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFU
X1IzMl9UWVBFTEVTUyIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAiZmFsc2UiCi0g
ICAgICB9LAotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIlVuaW1wbGVtZW50ZWRM
b2FkRnVuY3Rpb24iLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9VTktOT1dO
IiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAgIF0K
LSAgfSwKLSAgIkdMX1JHMzJJIjogewotICAgICJHTF9JTlQiOiBbCi0gICAgICB7Ci0gICAgICAg
ICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlPEdMaW50LDI+IiwKLSAgICAgICAgImR4Z2lG
b3JtYXQiOiAiRFhHSV9GT1JNQVRfUjMyRzMyX1NJTlQiLAotICAgICAgICAicmVxdWlyZXNDb252
ZXJzaW9uIjogImZhbHNlIgotICAgICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX0FMUEhBOF9FWFQi
OiB7Ci0gICAgIkdMX1VOU0lHTkVEX0JZVEUiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVu
Y3Rpb24iOiAiTG9hZFRvTmF0aXZlPEdMdWJ5dGUsMT4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6
ICJEWEdJX0ZPUk1BVF9BOF9VTk9STSIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAi
ZmFsc2UiCi0gICAgICB9LAotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRB
OFRvUkdCQTgiLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9V
Tk9STSIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAg
ICBdCi0gIH0sCi0gICJHTF9SRzMyVUkiOiB7Ci0gICAgIkdMX1VOU0lHTkVEX0lOVCI6IFsKLSAg
ICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0x1aW50LDI+IiwK
LSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjMyRzMyX1VJTlQiLAotICAgICAg
ICAicmVxdWlyZXNDb252ZXJzaW9uIjogImZhbHNlIgotICAgICAgfQotICAgIF0KLSAgfSwKLSAg
IkdMX1JHQkExNlVJIjogewotICAgICJHTF9VTlNJR05FRF9TSE9SVCI6IFsKLSAgICAgIHsKLSAg
ICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0x1c2hvcnQsND4iLAotICAgICAg
ICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVCIsCi0gICAgICAg
ICJyZXF1aXJlc0NvbnZlcnNpb24iOiAiZmFsc2UiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAi
R0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQyI6IHsKLSAgICAiR0xfVU5TSUdORURfQllURSI6
IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkRVRDMlJHQkE4VG9SR0JB
OCIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNIiwK
LSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAgIF0KLSAg
fSwKLSAgIkdMX1JHQjhJIjogewotICAgICJHTF9CWVRFIjogWwotICAgICAgewotICAgICAgICAi
bG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTNUbzQ8R0xieXRlLDB4MDE+IiwKLSAgICAgICAg
ImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOEI4QThfU0lOVCIsCi0gICAgICAgICJyZXF1
aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9DT01Q
UkVTU0VEX1NSR0I4X0VUQzIiOiB7Ci0gICAgIkdMX1VOU0lHTkVEX0JZVEUiOiBbCi0gICAgICB7
Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZEVUQzJTUkdCOFRvUkdCQTgiLAotICAgICAg
ICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCIiwKLSAgICAg
ICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAgIF0KLSAgfSwKLSAg
IkdMX0RFUFRIMzJGX1NURU5DSUw4IjogewotICAgICJHTF9GTE9BVF8zMl9VTlNJR05FRF9JTlRf
MjRfOF9SRVYiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0
aXZlPEdMdWludCwyPiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IzMkc4
WDI0X1RZUEVMRVNTIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIKLSAg
ICAgIH0sCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiVW5pbXBsZW1lbnRlZExv
YWRGdW5jdGlvbiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1VOS05PV04i
LAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAgXQot
ICB9LAotICAiR0xfUkc4SSI6IHsKLSAgICAiR0xfQllURSI6IFsKLSAgICAgIHsKLSAgICAgICAg
ImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0xieXRlLDI+IiwKLSAgICAgICAgImR4Z2lG
b3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOF9TSU5UIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVy
c2lvbiI6ICJmYWxzZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9SMzJVSSI6IHsKLSAg
ICAiR0xfVU5TSUdORURfSU5UIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjog
IkxvYWRUb05hdGl2ZTxHTHVpbnQsMT4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZP
Uk1BVF9SMzJfVUlOVCIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAiZmFsc2UiCi0g
ICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfQkdSNV9BMV9BTkdMRVgiOiB7Ci0gICAgIkdMX1VO
U0lHTkVEX0JZVEUiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRv
TmF0aXZlPEdMdWJ5dGUsND4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9V
TktOT1dOIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIKLSAgICAgIH0K
LSAgICBdLAotICAgICJHTF9VTlNJR05FRF9TSE9SVF8xXzVfNV81X1JFVl9FWFQiOiBbCi0gICAg
ICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFJHQjVBMVRvUkdCQTgiLAotICAgICAg
ICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9VTktOT1dOIiwKLSAgICAgICAgInJlcXVpcmVz
Q29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX0NPTVBSRVNT
RURfUkcxMV9FQUMiOiB7Ci0gICAgIkdMX1VOU0lHTkVEX0JZVEUiOiBbCi0gICAgICB7Ci0gICAg
ICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZEVBQ1JHMTFUb1JHOCIsCi0gICAgICAgICJkeGdpRm9y
bWF0IjogIkRYR0lfRk9STUFUX1I4RzhfVU5PUk0iLAotICAgICAgICAicmVxdWlyZXNDb252ZXJz
aW9uIjogInRydWUiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfU1JHQjhfQUxQSEE4Ijog
ewotICAgICJHTF9VTlNJR05FRF9CWVRFIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0
aW9uIjogIkxvYWRUb05hdGl2ZTxHTHVieXRlLDQ+IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAi
RFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZl
cnNpb24iOiAiZmFsc2UiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfTFVNSU5BTkNFX0FM
UEhBMTZGX0VYVCI6IHsKLSAgICAiR0xfSEFMRl9GTE9BVCI6IFsKLSAgICAgIHsKLSAgICAgICAg
ImxvYWRGdW5jdGlvbiI6ICJMb2FkTEExNkZUb1JHQkExNkYiLAotICAgICAgICAiZHhnaUZvcm1h
dCI6ICJEWEdJX0ZPUk1BVF9VTktOT1dOIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6
ICJ0cnVlIgotICAgICAgfQotICAgIF0sCi0gICAgIkdMX0hBTEZfRkxPQVRfT0VTIjogWwotICAg
ICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRMQTE2RlRvUkdCQTE2RiIsCi0gICAg
ICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1VOS05PV04iLAotICAgICAgICAicmVxdWly
ZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfUkdCQSI6
IHsKLSAgICAiR0xfVU5TSUdORURfQllURSI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5j
dGlvbiI6ICJVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiIsCi0gICAgICAgICJkeGdpRm9ybWF0Ijog
IkRYR0lfRk9STUFUX1VOS05PV04iLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRy
dWUiCi0gICAgICB9Ci0gICAgXSwKLSAgICAiR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNCI6IFsK
LSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJVbnJlYWNoYWJsZUxvYWRGdW5jdGlv
biIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1VOS05PV04iLAotICAgICAg
ICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAgXSwKLSAgICAiR0xf
VU5TSUdORURfU0hPUlRfNV81XzVfMSI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlv
biI6ICJVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRY
R0lfRk9STUFUX1VOS05PV04iLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUi
Ci0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfREVQVEgyNF9TVEVOQ0lMOCI6IHsKLSAgICAi
R0xfVU5TSUdORURfSU5UXzI0XzgiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24i
OiAiTG9hZFIzMlRvUjI0RzgiLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9S
MjRHOF9UWVBFTEVTUyIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAg
ICAgIH0sCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFIzMlRvUjI0Rzgi
LAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCIs
Ci0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdCi0g
IH0sCi0gICJHTF9SR0IxNkkiOiB7Ci0gICAgIkdMX1NIT1JUIjogWwotICAgICAgewotICAgICAg
ICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTNUbzQ8R0xzaG9ydCwweDAwMDE+IiwKLSAg
ICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQiLAotICAg
ICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAgXQotICB9LAot
ICAiR0xfUjhVSSI6IHsKLSAgICAiR0xfVU5TSUdORURfQllURSI6IFsKLSAgICAgIHsKLSAgICAg
ICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0x1Ynl0ZSwxPiIsCi0gICAgICAgICJk
eGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1I4X1VJTlQiLAotICAgICAgICAicmVxdWlyZXNDb252
ZXJzaW9uIjogImZhbHNlIgotICAgICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX0FMUEhBIjogewot
ICAgICJHTF9IQUxGX0ZMT0FUIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjog
IkxvYWRBMTZGVG9SR0JBMTZGIiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRf
UjE2RzE2QjE2QTE2X0ZMT0FUIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVl
IgotICAgICAgfQotICAgIF0sCi0gICAgIkdMX1VOU0lHTkVEX0JZVEUiOiBbCi0gICAgICB7Ci0g
ICAgICAgICJsb2FkRnVuY3Rpb24iOiAiVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24iLAotICAgICAg
ICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9VTktOT1dOIiwKLSAgICAgICAgInJlcXVpcmVz
Q29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAgIF0sCi0gICAgIkdMX0ZMT0FUIjogWwot
ICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRBMzJGVG9SR0JBMzJGIiwKLSAg
ICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FUIiwKLSAg
ICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAgIF0sCi0gICAg
IkdMX0hBTEZfRkxPQVRfT0VTIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjog
IkxvYWRBMTZGVG9SR0JBMTZGIiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRf
UjE2RzE2QjE2QTE2X0ZMT0FUIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVl
IgotICAgICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX1JHQjE2RiI6IHsKLSAgICAiR0xfSEFMRl9G
TE9BVCI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmUz
VG80PEdMaGFsZixnbDo6RmxvYXQxNk9uZT4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJ
X0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQiLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9u
IjogInRydWUiCi0gICAgICB9Ci0gICAgXSwKLSAgICAiR0xfRkxPQVQiOiBbCi0gICAgICB7Ci0g
ICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFJHQjMyRlRvUkdCQTE2RiIsCi0gICAgICAgICJk
eGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCIsCi0gICAgICAgICJy
ZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdLAotICAgICJHTF9IQUxG
X0ZMT0FUX09FUyI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9O
YXRpdmUzVG80PEdMaGFsZixnbDo6RmxvYXQxNk9uZT4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6
ICJEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQiLAotICAgICAgICAicmVxdWlyZXNDb252
ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfQ09NUFJFU1NFRF9T
SUdORURfUjExX0VBQyI6IHsKLSAgICAiR0xfVU5TSUdORURfQllURSI6IFsKLSAgICAgIHsKLSAg
ICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkRUFDUjExU1RvUjgiLAotICAgICAgICAiZHhnaUZv
cm1hdCI6ICJEWEdJX0ZPUk1BVF9SOF9TTk9STSIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNp
b24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9DT01QUkVTU0VEX1JHQl9T
M1RDX0RYVDFfRVhUIjogewotICAgICJHTF9VTlNJR05FRF9CWVRFIjogWwotICAgICAgewotICAg
ICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRDb21wcmVzc2VkVG9OYXRpdmU8NCw0LDg+IiwKLSAg
ICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfVU5LTk9XTiIsCi0gICAgICAgICJyZXF1
aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9DT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCI6IHsKLSAgICAiR0xfVU5TSUdORURfQllURSI6IFsK
LSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkQ29tcHJlc3NlZFRvTmF0aXZl
PDQsNCw4PiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1VOS05PV04iLAot
ICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAgXQotICB9
LAotICAiR0xfU1RFTkNJTF9JTkRFWDgiOiB7Ci0gICAgIkRYR0lfRk9STUFUX1IyNEc4X1RZUEVM
RVNTIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIlVuaW1wbGVtZW50ZWRM
b2FkRnVuY3Rpb24iLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9VTktOT1dO
IiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAgIF0s
Ci0gICAgIkRYR0lfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5UIjogWwotICAgICAgewotICAgICAg
ICAibG9hZEZ1bmN0aW9uIjogIlVuaW1wbGVtZW50ZWRMb2FkRnVuY3Rpb24iLAotICAgICAgICAi
ZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9VTktOT1dOIiwKLSAgICAgICAgInJlcXVpcmVzQ29u
dmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX0xVTUlOQU5DRV9B
TFBIQTMyRl9FWFQiOiB7Ci0gICAgIkdMX0ZMT0FUIjogWwotICAgICAgewotICAgICAgICAibG9h
ZEZ1bmN0aW9uIjogIkxvYWRMQTMyRlRvUkdCQTMyRiIsCi0gICAgICAgICJkeGdpRm9ybWF0Ijog
IkRYR0lfRk9STUFUX1VOS05PV04iLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRy
dWUiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfUkdCOFVJIjogewotICAgICJHTF9VTlNJ
R05FRF9CWVRFIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05h
dGl2ZTNUbzQ8R0x1Ynl0ZSwweDAxPiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9S
TUFUX1I4RzhCOEE4X1VJTlQiLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUi
Ci0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfREVQVEhfQ09NUE9ORU5UMjQiOiB7Ci0gICAg
IkdMX1VOU0lHTkVEX0lOVCI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJM
b2FkUjMyVG9SMjRHOCIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IyNEc4
X1RZUEVMRVNTIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAg
fSwKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkUjMyVG9SMjRHOCIsCi0g
ICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5UIiwKLSAg
ICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAgIF0KLSAgfSwK
LSAgIkdMX1IzMkkiOiB7Ci0gICAgIkdMX0lOVCI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRG
dW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0xpbnQsMT4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6
ICJEWEdJX0ZPUk1BVF9SMzJfU0lOVCIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAi
ZmFsc2UiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfREVQVEhfQ09NUE9ORU5UMzJfT0VT
IjogewotICAgICJHTF9VTlNJR05FRF9JTlQiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVu
Y3Rpb24iOiAiTG9hZFIzMlRvUjI0RzgiLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZP
Uk1BVF9VTktOT1dOIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAg
ICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX1IzMkYiOiB7Ci0gICAgIkdMX0ZMT0FUIjogWwotICAg
ICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxHTGZsb2F0LDE+IiwK
LSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjMyX0ZMT0FUIiwKLSAgICAgICAg
InJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJH
TF9SRzE2RiI6IHsKLSAgICAiR0xfSEFMRl9GTE9BVCI6IFsKLSAgICAgIHsKLSAgICAgICAgImxv
YWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0xoYWxmLDI+IiwKLSAgICAgICAgImR4Z2lGb3Jt
YXQiOiAiRFhHSV9GT1JNQVRfUjE2RzE2X0ZMT0FUIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVy
c2lvbiI6ICJmYWxzZSIKLSAgICAgIH0KLSAgICBdLAotICAgICJHTF9GTE9BVCI6IFsKLSAgICAg
IHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkMzJGVG8xNkY8Mj4iLAotICAgICAgICAi
ZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZHMTZfRkxPQVQiLAotICAgICAgICAicmVxdWly
ZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAgXSwKLSAgICAiR0xfSEFMRl9GTE9B
VF9PRVMiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZl
PEdMaGFsZiwyPiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcxNl9G
TE9BVCIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAiZmFsc2UiCi0gICAgICB9Ci0g
ICAgXQotICB9LAotICAiR0xfUkdCNTY1IjogewotICAgICJHTF9VTlNJR05FRF9CWVRFIjogWwot
ICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTNUbzQ8R0x1Ynl0
ZSwweEZGPiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhCOEE4X1VO
T1JNIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAg
IF0sCi0gICAgIkdMX1VOU0lHTkVEX1NIT1JUXzVfNl81IjogWwotICAgICAgewotICAgICAgICAi
bG9hZEZ1bmN0aW9uIjogIkxvYWRSNUc2QjVUb1JHQkE4IiwKLSAgICAgICAgImR4Z2lGb3JtYXQi
OiAiRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0iLAotICAgICAgICAicmVxdWlyZXNDb252ZXJz
aW9uIjogInRydWUiCi0gICAgICB9LAotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjog
IkxvYWRUb05hdGl2ZTxHTHVzaG9ydCwxPiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lf
Rk9STUFUX0I1RzZSNV9VTk9STSIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAiZmFs
c2UiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfTFVNSU5BTkNFMTZGX0VYVCI6IHsKLSAg
ICAiR0xfSEFMRl9GTE9BVCI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJM
b2FkTDE2RlRvUkdCQTE2RiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1VO
S05PV04iLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0g
ICAgXSwKLSAgICAiR0xfSEFMRl9GTE9BVF9PRVMiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2Fk
RnVuY3Rpb24iOiAiTG9hZEwxNkZUb1JHQkExNkYiLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJE
WEdJX0ZPUk1BVF9VTktOT1dOIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVl
IgotICAgICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX1JHMTZVSSI6IHsKLSAgICAiR0xfVU5TSUdO
RURfU0hPUlQiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0
aXZlPEdMdXNob3J0LDI+IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2
RzE2X1VJTlQiLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogImZhbHNlIgotICAgICAg
fQotICAgIF0KLSAgfSwKLSAgIkdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEUiOiB7
Ci0gICAgIkdMX1VOU0lHTkVEX0JZVEUiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rp
b24iOiAiTG9hZENvbXByZXNzZWRUb05hdGl2ZTw0LDQsMTY+IiwKLSAgICAgICAgImR4Z2lGb3Jt
YXQiOiAiRFhHSV9GT1JNQVRfVU5LTk9XTiIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24i
OiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9SRzE2SSI6IHsKLSAgICAiR0xf
U0hPUlQiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZl
PEdMc2hvcnQsMj4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZHMTZf
U0lOVCIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAiZmFsc2UiCi0gICAgICB9Ci0g
ICAgXQotICB9LAotICAiR0xfQkdSQThfRVhUIjogewotICAgICJHTF9VTlNJR05FRF9CWVRFIjog
WwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxHTHVieXRl
LDQ+IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfVU5LTk9XTiIsCi0gICAg
ICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAiZmFsc2UiCi0gICAgICB9Ci0gICAgXQotICB9LAot
ICAiR0xfQUxQSEExNkZfRVhUIjogewotICAgICJHTF9IQUxGX0ZMT0FUIjogWwotICAgICAgewot
ICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRBMTZGVG9SR0JBMTZGIiwKLSAgICAgICAgImR4
Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfVU5LTk9XTiIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZl
cnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdLAotICAgICJHTF9IQUxGX0ZMT0FUX09FUyI6
IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkQTE2RlRvUkdCQTE2RiIs
Ci0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1VOS05PV04iLAotICAgICAgICAi
cmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xf
UkdCQTQiOiB7Ci0gICAgIkdMX1VOU0lHTkVEX0JZVEUiOiBbCi0gICAgICB7Ci0gICAgICAgICJs
b2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlPEdMdWJ5dGUsND4iLAotICAgICAgICAiZHhnaUZv
cm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSIsCi0gICAgICAgICJyZXF1aXJlc0Nv
bnZlcnNpb24iOiAiZmFsc2UiCi0gICAgICB9Ci0gICAgXSwKLSAgICAiR0xfVU5TSUdORURfU0hP
UlRfNF80XzRfNCI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkUkdC
QTRUb1JHQkE4IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOEI4QThf
VU5PUk0iLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9LAot
ICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRSR0JBNFRvQVJHQjQiLAotICAg
ICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9CNEc0UjRBNF9VTk9STSIsCi0gICAgICAg
ICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJH
TF9SR0JBOCI6IHsKLSAgICAiR0xfVU5TSUdORURfQllURSI6IFsKLSAgICAgIHsKLSAgICAgICAg
ImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0x1Ynl0ZSw0PiIsCi0gICAgICAgICJkeGdp
Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNIiwKLSAgICAgICAgInJlcXVpcmVz
Q29udmVyc2lvbiI6ICJmYWxzZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9MVU1JTkFO
Q0UiOiB7Ci0gICAgIkdMX0hBTEZfRkxPQVQiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVu
Y3Rpb24iOiAiTG9hZEwxNkZUb1JHQkExNkYiLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJ
X0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQiLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9u
IjogInRydWUiCi0gICAgICB9Ci0gICAgXSwKLSAgICAiR0xfVU5TSUdORURfQllURSI6IFsKLSAg
ICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiIs
Ci0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1VOS05PV04iLAotICAgICAgICAi
cmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAgXSwKLSAgICAiR0xfRkxP
QVQiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZEwzMkZUb1JHQkEz
MkYiLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxP
QVQiLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAg
XSwKLSAgICAiR0xfSEFMRl9GTE9BVF9PRVMiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVu
Y3Rpb24iOiAiTG9hZEwxNkZUb1JHQkExNkYiLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJ
X0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQiLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9u
IjogInRydWUiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfUkdCMTBfQTJVSSI6IHsKLSAg
ICAiR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWIjogWwotICAgICAgewotICAgICAgICAi
bG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxHTHVpbnQsMT4iLAotICAgICAgICAiZHhnaUZv
cm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VSU5UIiwKLSAgICAgICAgInJlcXVpcmVz
Q29udmVyc2lvbiI6ICJmYWxzZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9FVEMxX1JH
QjhfT0VTIjogewotICAgICJHTF9VTlNJR05FRF9CWVRFIjogWwotICAgICAgewotICAgICAgICAi
bG9hZEZ1bmN0aW9uIjogIkxvYWRFVEMxUkdCOFRvUkdCQTgiLAotICAgICAgICAiZHhnaUZvcm1h
dCI6ICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZl
cnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9FVEMxX1JHQjhfTE9T
U1lfREVDT0RFX0FOR0xFIjogewotICAgICJHTF9VTlNJR05FRF9CWVRFIjogWwotICAgICAgewot
ICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRFVEMxUkdCOFRvQkMxIiwKLSAgICAgICAgImR4
Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfQkMxX1VOT1JNIiwKLSAgICAgICAgInJlcXVpcmVzQ29u
dmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAgIF0KLSAgfQotfQpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvbG9hZF9mdW5jdGlvbnNfdGFibGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2xv
YWRfZnVuY3Rpb25zX3RhYmxlLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvbG9hZF9mdW5jdGlvbnNf
dGFibGUuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDMxICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQg
MjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBsb2Fk
X2Z1bmN0aW9uc190YWJsZToKLS8vICAgQ29udGFpbnMgbG9hZCBmdW5jdGlvbnMgdGFibGUgZGVw
ZW5kaW5nIG9uIGludGVybmFsIGZvcm1hdCBhbmQgZHhnaSBmb3JtYXQKLS8vCi0KLSNpZm5kZWYg
TElCQU5HTEVfUkVOREVSRVJfRDNEX0QzRDExX0xPQURGVU5DVElPTlNUQUJMRV9IXwotI2RlZmlu
ZSBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfTE9BREZVTkNUSU9OU1RBQkxFX0hfCi0KLSNp
bmNsdWRlIDxtYXA+Ci0KLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVu
ZGVyZXIxMS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJl
X2Zvcm1hdF90YWJsZS5oIgotCi1uYW1lc3BhY2UgcngKLXsKLQotbmFtZXNwYWNlIGQzZDExCi17
Ci0KLWNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiAmR2V0TG9h
ZEZ1bmN0aW9uc01hcChHTGVudW0gaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVQgZHhnaUZvcm1hdCk7Ci0KLX0gIC8vIG5hbWVzcGFjZSBkM2QxMQotCi19ICAvLyBuYW1lc3Bh
Y2UgcngKLQotI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfTE9BREZVTkNU
SU9OU1RBQkxFX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL2xvYWRfZnVuY3Rpb25zX3RhYmxlX2F1dG9nZW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvbG9hZF9mdW5jdGlvbnNfdGFibGVfYXV0b2dlbi5jcHAJKHJldmlzaW9uIDIwNzgw
NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvbG9hZF9mdW5jdGlvbnNfdGFibGVfYXV0b2dlbi5jcHAJKG5vbmV4aXN0ZW50KQpAQCAt
MSwyMDk4ICswLDAgQEAKLS8vIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQuCi0vLyBHZW5l
cmF0ZWQgYnkgZ2VuX2xvYWRfZnVuY3Rpb25zX3RhYmxlLnB5IHVzaW5nIGRhdGEgZnJvbSBsb2Fk
X2Z1bmN0aW9uc19kYXRhLmpzb24KLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBsb2FkX2Z1bmN0aW9uc190YWJsZToK
LS8vICAgQ29udGFpbnMgdGhlIEdldExvYWRGdW5jdGlvbnNNYXAgZm9yIHRleHR1cmVfZm9ybWF0
X3V0aWwuaAotLy8KLQotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9sb2Fk
X2Z1bmN0aW9uc190YWJsZS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9mb3JtYXR1dGlsczExLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L3RleHR1cmVfZm9ybWF0X3RhYmxlLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNk
L2xvYWRpbWFnZS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9sb2FkaW1hZ2Vf
ZXRjLmgiCi0KLW5hbWVzcGFjZSByeAotewotCi1uYW1lc3BhY2UgZDNkMTEKLXsKLQotbmFtZXNw
YWNlCi17Ci0KLS8vIEVTMyBpbWFnZSBsb2FkaW5nIGZ1bmN0aW9ucyB2YXJ5IGJhc2VkIG9uOgot
Ly8gICAgLSB0aGUgR0wgaW50ZXJuYWwgZm9ybWF0IChzdXBwbGllZCB0byBnbFRleCpJbWFnZSpE
KQotLy8gICAgLSB0aGUgR0wgZGF0YSB0eXBlIGdpdmVuIChzdXBwbGllZCB0byBnbFRleCpJbWFn
ZSpEKQotLy8gICAgLSB0aGUgdGFyZ2V0IERYR0lfRk9STUFUIHRoYXQgdGhlIGltYWdlIHdpbGwg
YmUgbG9hZGVkIGludG8gKHdoaWNoIGlzIGNob3NlbiBiYXNlZCBvbiB0aGUgRDNECi0vLyAgICBk
ZXZpY2UncyBjYXBhYmlsaXRpZXMpCi0vLyBUaGlzIG1hcCB0eXBlIGRldGVybWluZXMgd2hpY2gg
bG9hZGluZyBmdW5jdGlvbiB0byB1c2UsIGJhc2VkIG9uIHRoZXNlIHRocmVlIHBhcmFtZXRlcnMu
Ci0vLyBTb3VyY2UgZm9ybWF0cyBhbmQgdHlwZXMgYXJlIHRha2VuIGZyb20gVGFibGVzIDMuMiBh
bmQgMy4zIG9mIHRoZSBFUyAzIHNwZWMuCi12b2lkIFVuaW1wbGVtZW50ZWRMb2FkRnVuY3Rpb24o
c2l6ZV90IHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWln
aHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKLXsKLSAgICBVTklNUExFTUVOVEVEKCk7
Ci19Ci0KLXZvaWQgVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24oc2l6ZV90IHdpZHRoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHVpbnQ4X3QgKmlucHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
aW5wdXRSb3dQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0
RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQotewot
ICAgIFVOUkVBQ0hBQkxFKCk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi0vLyBUT0RPIHdlIGNh
biByZXBsYWNlIHRoZXNlIG1hcHMgd2l0aCBtb3JlIGdlbmVyYXRlZCBjb2RlCi1jb25zdCBzdGQ6
Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gJkdldExvYWRGdW5jdGlvbnNNYXAo
R0xlbnVtIGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUIGR4Z2lGb3JtYXQp
Ci17Ci0gICAgLy8gY2xhbmctZm9ybWF0IG9mZgotICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQp
Ci0gICAgewotICAgICAgICBjYXNlIEdMX0FMUEhBOgotICAgICAgICB7Ci0gICAgICAgICAgICBz
d2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQ6Ci0gICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAg
ICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9IQUxGX0ZMT0FUXSA9IExvYWRJbWFnZUZ1
bmN0aW9uSW5mbyhMb2FkQTE2RlRvUkdCQTE2RiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBsb2FkTWFwW0dMX0hBTEZfRkxPQVRfT0VTXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhM
b2FkQTE2RlRvUkdCQTE2RiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFw
W0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9h
ZEZ1bmN0aW9uLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFw
OwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FUOgotICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdl
RnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfRkxPQVRdID0gTG9hZEltYWdlRnVu
Y3Rpb25JbmZvKExvYWRBMzJGVG9SR0JBMzJGLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5y
ZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9VTktOT1dOOgotICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdl
RnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0o
KTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRN
YXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVdID0g
TG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAg
ICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
R0xfQUxQSEExNkZfRVhUOgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3Jt
YXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9VTktO
T1dOOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0
IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFw
ID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRN
YXBbR0xfSEFMRl9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZEExNkZUb1JHQkEx
NkYsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9IQUxGX0ZMT0FU
X09FU10gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZEExNkZUb1JHQkExNkYsIHRydWUpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAg
ICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0s
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+
IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX0hBTEZfRkxPQVRd
ID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRBMTZGVG9SR0JBMTZGLCB0cnVlKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfSEFMRl9GTE9BVF9PRVNdID0gTG9hZEltYWdl
RnVuY3Rpb25JbmZvKExvYWRBMTZGVG9SR0JBMTZGLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfQUxQSEEzMkZfRVhU
OgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9VTktOT1dOOgotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51
bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5m
bz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfRkxPQVRdID0g
TG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRBMzJGVG9SR0JBMzJGLCB0cnVlKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7
Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFw
OwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9GTE9BVF0gPSBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8oTG9hZEEzMkZUb1JHQkEzMkYsIHRydWUpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9BTFBIQThfRVhUOgot
ICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9BOF9VTk9STToKLSAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0s
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+
IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZ
VEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTHVieXRlLDE+LCBmYWxz
ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAg
ICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25z
TWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFU
X1I4RzhCOEE4X1VOT1JNOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
c3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2Fk
RnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxH
TGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8o
TG9hZEE4VG9SR0JBOCwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9h
ZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgICAgICBjYXNlIEdMX0JHUjVfQTFfQU5HTEVYOgotICAgICAgICB7Ci0gICAg
ICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9VTktOT1dOOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rp
b25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfU0hPUlRfMV81XzVfNV9SRVZf
RVhUXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkUkdCNUExVG9SR0JBOCwgdHJ1ZSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZElt
YWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTHVieXRlLDQ+LCBmYWxzZSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgp
OwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZElt
YWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1h
cDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdWJ5dGUsND4sIHRydWUpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9TSE9SVF8xXzVfNV81X1JF
Vl9FWFRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRSR0I1QTFUb1JHQkE4LCB0cnVlKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAg
ICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgR0xfQkdSQTRfQU5HTEVYOgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lG
b3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9V
TktOT1dOOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNv
bnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25z
TWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxv
YWRNYXBbR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF9SRVZfRVhUXSA9IExvYWRJbWFnZUZ1bmN0
aW9uSW5mbyhMb2FkUkdCQTRUb1JHQkE4LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRv
TmF0aXZlPEdMdWJ5dGUsND4sIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBz
dGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRG
dW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdM
ZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAg
ICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhM
b2FkVG9OYXRpdmU8R0x1Ynl0ZSw0PiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBs
b2FkTWFwW0dMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzRfUkVWX0VYVF0gPSBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8oTG9hZFJHQkE0VG9SR0JBOCwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX0JHUkE4X0VYVDoKLSAgICAg
ICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfVU5LTk9XTjoKLSAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRN
YXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVdID0g
TG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTHVieXRlLDQ+LCBmYWxzZSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAg
ICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwg
TG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4g
bG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllU
RV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdWJ5dGUsND4sIHRydWUp
OwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAg
ICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01h
cDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBHTF9CR1JBX0VYVDoKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9y
bWF0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfVU5L
Tk9XTjoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01h
cCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2Fk
TWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxl
TG9hZEZ1bmN0aW9uLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2Fk
TWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMg
Y29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlv
bnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwg
TG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAg
bG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNo
YWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUjExX0VBQzoKLSAgICAg
ICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhfVU5PUk06Ci0gICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2Fk
TWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkRUFDUjExVG9SOCwgdHJ1ZSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwot
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX0NPTVBSRVNT
RURfUkcxMV9FQUM6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfVU5P
Uk06Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
c3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAg
PSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZElt
YWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1h
cFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkRUFDUkcxMVRv
Ukc4LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAg
ICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRG
dW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzI6Ci0gICAgICAgIHsKLSAgICAgICAg
ICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBj
YXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNOgotICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVu
Y3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8oTG9hZEVUQzJSR0I4VG9SR0JBOCwgdHJ1ZSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURf
UkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzI6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3
aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERY
R0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25J
bmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8oTG9hZEVUQzJSR0I4QTFUb1JHQkE4LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JB
OF9FVEMyX0VBQzoKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThf
VU5PUk06Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29u
c3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNN
YXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9h
ZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9h
ZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkRVRDMlJH
QkE4VG9SR0JBOCwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1h
cDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgotICAg
ICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9VTktOT1dOOgotICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9h
ZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9h
ZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0g
PSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZENvbXByZXNzZWRUb05hdGl2ZTw0LDQsOD4sIHRy
dWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAg
ICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9u
c01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxH
TGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlv
bkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lH
TkVEX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRDb21wcmVzc2VkVG9OYXRpdmU8
NCw0LDg+LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwot
ICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxv
YWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRToKLSAg
ICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfVU5LTk9XTjoKLSAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxv
YWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVd
ID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRDb21wcmVzc2VkVG9OYXRpdmU8NCw0LDE2Piwg
dHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAg
ICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rp
b25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFw
PEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0
aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5T
SUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZENvbXByZXNzZWRUb05hdGl2
ZTw0LDQsMTY+LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFw
OwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRToK
LSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfVU5LTk9XTjoKLSAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0s
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+
IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZ
VEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRDb21wcmVzc2VkVG9OYXRpdmU8NCw0LDE2
PiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAg
ICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVu
Y3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6
bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10o
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1
bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xf
VU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZENvbXByZXNzZWRUb05h
dGl2ZTw0LDQsMTY+LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2Fk
TWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoK
LSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfVU5LTk9XTjoKLSAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0s
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+
IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZ
VEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRDb21wcmVzc2VkVG9OYXRpdmU8NCw0LDg+
LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAg
ICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5j
dGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjpt
YXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVu
Y3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9V
TlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkQ29tcHJlc3NlZFRvTmF0
aXZlPDQsNCw4PiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1h
cDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUM6Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4X1NOT1JNOgotICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9h
ZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9h
ZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0g
PSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZEVBQ1IxMVNUb1I4LCB0cnVlKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7
Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfQ09NUFJF
U1NFRF9TSUdORURfUkcxMV9FQUM6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZHhn
aUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFU
X1I4RzhfU05PUk06Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0
aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5j
dGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51
bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAg
ICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2Fk
RUFDUkcxMVNUb1JHOCwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9h
ZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFD
OgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdC
OgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0
ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0g
W10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBb
R0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZEVUQzJTUkdCQThU
b1NSR0JBOCwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsK
LSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBs
b2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMjoKLSAgICAgICAgewotICAg
ICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQjoKLSAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxv
YWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVd
ID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRFVEMyU1JHQjhUb1JHQkE4LCB0cnVlKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAg
ICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xf
Q09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzI6Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0I6Ci0gICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBs
b2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRF
XSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkRVRDMlNSR0I4QTFUb1JHQkE4LCB0cnVlKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAg
ICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
R0xfREVQVEgyNF9TVEVOQ0lMODoKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdp
Rm9ybWF0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
RDI0X1VOT1JNX1M4X1VJTlQ6Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxv
YWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFw
PEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAg
ICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9JTlRfMjRfOF0gPSBMb2FkSW1hZ2VGdW5jdGlv
bkluZm8oTG9hZFIzMlRvUjI0RzgsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMjRHOF9UWVBFTEVTUzoKLSAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxv
YWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0lOVF8y
NF84XSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkUjMyVG9SMjRHOCwgdHJ1ZSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAg
fSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX0RF
UFRIMzJGX1NURU5DSUw4OgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3Jt
YXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJH
OFgyNF9UWVBFTEVTUzoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1
bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xl
bnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBsb2FkTWFwW0dMX0ZMT0FUXzMyX1VOU0lHTkVEX0lOVF8yNF84X1JFVl0gPSBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdWludCwyPiwgZmFsc2UpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsK
LQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9VTktOT1dOOgotICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFw
PEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0
aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfRkxP
QVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbmlt
cGxlbWVudGVkTG9hZEZ1bmN0aW9uLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxv
YWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFw
PEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAg
ICAgICAgICAgbG9hZE1hcFtHTF9GTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVZdID0gTG9h
ZEltYWdlRnVuY3Rpb25JbmZvKFVuaW1wbGVtZW50ZWRMb2FkRnVuY3Rpb24sIHRydWUpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAg
IH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBH
TF9ERVBUSF9DT01QT05FTlQxNjoKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdp
Rm9ybWF0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
RDE2X1VOT1JNOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rp
b25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0s
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGxvYWRNYXBbR0xfVU5TSUdORURfU0hPUlRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRU
b05hdGl2ZTxHTHVzaG9ydCwxPiwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfVFlQRUxFU1M6Ci0gICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2Fk
TWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9JTlRdID0g
TG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRSMzJUb1IxNiwgdHJ1ZSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX1NIT1JUXSA9IExvYWRJbWFnZUZ1bmN0aW9u
SW5mbyhMb2FkVG9OYXRpdmU8R0x1c2hvcnQsMT4sIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5U
MjQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5U
OgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0
ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0g
W10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBb
R0xfVU5TSUdORURfSU5UXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkUjMyVG9SMjRHOCwg
dHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAg
ICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rp
b25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX1IyNEc4X1RZUEVMRVNTOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBs
b2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1h
cDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfSU5UXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5m
byhMb2FkUjMyVG9SMjRHOCwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDMyRjoKLSAgICAgICAg
ewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyX1RZUEVMRVNTOgotICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9h
ZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9h
ZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfRkxPQVRdID0gTG9hZElt
YWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTGZsb2F0LDE+LCBmYWxzZSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgp
OwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1VOS05PV046Ci0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjpt
YXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVu
Y3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9G
TE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5pbXBsZW1lbnRlZExvYWRGdW5jdGlvbiwg
dHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAg
ICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rp
b25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFw
PEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0
aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfRkxP
QVRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVuaW1wbGVtZW50ZWRMb2FkRnVuY3Rpb24sIHRy
dWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAg
ICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9u
c01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQzMl9PRVM6Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1VOS05PV046Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+
IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAg
ICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9JTlRdID0gTG9hZEltYWdlRnVuY3Rpb25J
bmZvKExvYWRSMzJUb1IyNEc4LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBz
dGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRG
dW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdM
ZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAg
ICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9JTlRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExv
YWRSMzJUb1IyNEc4LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2Fk
TWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfRVRDMV9SR0I4X0xPU1NZX0RFQ09ERV9BTkdMRToK
LSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMxX1VOT1JNOgotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51
bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5m
bz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURf
QllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZEVUQzFSR0I4VG9CQzEsIHRydWUpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAg
ICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBH
TF9FVEMxX1JHQjhfT0VTOgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3Jt
YXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4
QjhBOF9VTk9STToKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0
aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVt
LCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRF
VEMxUkdCOFRvUkdCQTgsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxv
YWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U6Ci0gICAgICAgIHsKLSAgICAgICAg
ICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBj
YXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVDoKLSAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX0hBTEZfRkxPQVRdID0gTG9hZElt
YWdlRnVuY3Rpb25JbmZvKExvYWRMMTZGVG9SR0JBMTZGLCB0cnVlKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGxvYWRNYXBbR0xfSEFMRl9GTE9BVF9PRVNdID0gTG9hZEltYWdlRnVuY3Rpb25J
bmZvKExvYWRMMTZGVG9SR0JBMTZGLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxv
YWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFi
bGVMb2FkRnVuY3Rpb24sIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxv
YWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQ6Ci0gICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2Fk
TWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9GTE9BVF0gPSBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8oTG9hZEwzMkZUb1JHQkEzMkYsIHRydWUpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5m
byhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1VOS05PV046Ci0gICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2Fk
TWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAg
ICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwg
TG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4g
bG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllU
RV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUp
OwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAg
ICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01h
cDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBHTF9MVU1JTkFOQ0UxNkZfRVhUOgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2gg
KGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9VTktOT1dOOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVu
Y3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVu
dW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGxvYWRNYXBbR0xfSEFMRl9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZEwx
NkZUb1JHQkExNkYsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9I
QUxGX0ZMT0FUX09FU10gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZEwxNkZUb1JHQkExNkYs
IHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAg
ICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0
aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1h
cDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX0hB
TEZfRkxPQVRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRMMTZGVG9SR0JBMTZGLCB0cnVl
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfSEFMRl9GTE9BVF9PRVNdID0g
TG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRMMTZGVG9SR0JBMTZGLCB0cnVlKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7
Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfTFVN
SU5BTkNFMzJGX0VYVDoKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfVU5LTk9X
TjoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBz
dGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9
IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFw
W0dMX0ZMT0FUXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkTDMyRlRvUkdCQTMyRiwgdHJ1
ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAg
ICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25z
TWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdM
ZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9u
SW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfRkxPQVRd
ID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRMMzJGVG9SR0JBMzJGLCB0cnVlKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9
KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xf
TFVNSU5BTkNFOF9BTFBIQThfRVhUOgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4
Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9VTktOT1dOOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rp
b25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0s
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZExB
OFRvUkdCQTgsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7
Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01h
cCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2Fk
TWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRMQThUb1JH
QkE4LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAg
ICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRG
dW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFOF9FWFQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1VOS05PV046Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+
IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAg
ICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9u
SW5mbyhMb2FkTDhUb1JHQkE4LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBz
dGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRG
dW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdM
ZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAg
ICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhM
b2FkTDhUb1JHQkE4LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2Fk
TWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBOgotICAgICAgICB7Ci0g
ICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQ6Ci0gICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBs
b2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9IQUxGX0ZMT0FUXSA9
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkTEExNkZUb1JHQkExNkYsIHRydWUpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9IQUxGX0ZMT0FUX09FU10gPSBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8oTG9hZExBMTZGVG9SR0JBMTZGLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8o
VW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQ6Ci0gICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xl
bnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25J
bmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9GTE9BVF0g
PSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZExBMzJGVG9SR0JBMzJGLCB0cnVlKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9VTktOT1dOOgotICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdM
ZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9u
SW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdO
RURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24s
IHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAg
ICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0
aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1h
cDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VO
U0lHTkVEX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0
aW9uLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAg
ICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRG
dW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBMTZGX0VYVDoKLSAgICAgICAgewotICAg
ICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfVU5LTk9XTjoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0
aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX0hBTEZfRkxPQVRdID0gTG9hZEltYWdlRnVu
Y3Rpb25JbmZvKExvYWRMQTE2RlRvUkdCQTE2RiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBsb2FkTWFwW0dMX0hBTEZfRkxPQVRfT0VTXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhM
b2FkTEExNkZUb1JHQkExNkYsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1
bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xl
bnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBsb2FkTWFwW0dMX0hBTEZfRkxPQVRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRM
QTE2RlRvUkdCQTE2RiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dM
X0hBTEZfRkxPQVRfT0VTXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkTEExNkZUb1JHQkEx
NkYsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAg
ICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1
bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEEzMkZfRVhUOgotICAgICAgICB7Ci0gICAg
ICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9VTktOT1dOOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rp
b25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfRkxPQVRdID0gTG9hZEltYWdlRnVuY3Rpb25J
bmZvKExvYWRMQTMyRlRvUkdCQTMyRiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBs
b2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1h
cDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGxvYWRNYXBbR0xfRkxPQVRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRM
QTMyRlRvUkdCQTMyRiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9h
ZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX1IxMUZfRzExRl9CMTBGOgotICAgICAgICB7Ci0g
ICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTFHMTFCMTBfRkxPQVQ6Ci0gICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2Fk
TWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9IQUxGX0ZMT0FUXSA9IExv
YWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkUkdCMTZGVG9SRzExQjEwRiwgdHJ1ZSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX0hBTEZfRkxPQVRfT0VTXSA9IExvYWRJbWFnZUZ1
bmN0aW9uSW5mbyhMb2FkUkdCMTZGVG9SRzExQjEwRiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBsb2FkTWFwW0dMX0ZMT0FUXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkUkdC
MzJGVG9SRzExQjEwRiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dM
X1VOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVZdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExv
YWRUb05hdGl2ZTxHTHVpbnQsMT4sIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfUjE2RjoKLSAgICAgICAgewotICAgICAg
ICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfUjE2X0ZMT0FUOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rp
b25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfRkxPQVRdID0gTG9hZEltYWdlRnVuY3Rpb25J
bmZvKExvYWQzMkZUbzE2RjwxPiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2Fk
TWFwW0dMX0hBTEZfRkxPQVRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxH
TGhhbGYsMT4sIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfSEFM
Rl9GTE9BVF9PRVNdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTGhhbGYs
MT4sIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAg
ICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRG
dW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgR0xfUjE2SToKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdp
Rm9ybWF0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjE2X1NJTlQ6Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMg
Y29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlv
bnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwg
TG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAg
bG9hZE1hcFtHTF9TSE9SVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdM
c2hvcnQsMT4sIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFw
OwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgR0xfUjE2VUk6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRj
aCAoZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX1IxNl9VSU5UOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
c3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2Fk
RnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxH
TGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfU0hPUlRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZv
KExvYWRUb05hdGl2ZTxHTHVzaG9ydCwxPiwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9SMzJGOgotICAgICAgICB7Ci0g
ICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJfRkxPQVQ6Ci0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwot
ICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMZmxvYXQsMT4sIGZhbHNlKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfUjMySToKLSAgICAg
ICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyX1NJTlQ6Ci0gICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2Fk
TWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9JTlRdID0gTG9hZEltYWdl
RnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTGludCwxPiwgZmFsc2UpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9SMzJVSToKLSAg
ICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyX1VJTlQ6Ci0gICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBs
b2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9JTlRd
ID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTHVpbnQsMT4sIGZhbHNlKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAg
ICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
R0xfUjg6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4X1VOT1JNOgotICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFw
PEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0
aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5T
SUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdWJ5dGUs
MT4sIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAg
ICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRG
dW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgR0xfUjhJOgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lG
b3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9S
OF9TSU5UOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNv
bnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25z
TWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxv
YWRNYXBbR0xfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMYnl0
ZSwxPiwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0g
ICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9h
ZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBHTF9SOFVJOgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4
Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SOF9VSU5UOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rp
b25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0s
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRv
TmF0aXZlPEdMdWJ5dGUsMT4sIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfUjhfU05PUk06Ci0gICAgICAgIHsKLSAgICAg
ICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX1I4X1NOT1JNOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rp
b25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8oTG9hZFRvTmF0aXZlPEdMYnl0ZSwxPiwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9SRzE2RjoKLSAgICAgICAgewot
ICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2X0ZMT0FUOgotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZElt
YWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1h
cDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfRkxPQVRdID0gTG9hZEltYWdl
RnVuY3Rpb25JbmZvKExvYWQzMkZUbzE2RjwyPiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBsb2FkTWFwW0dMX0hBTEZfRkxPQVRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRU
b05hdGl2ZTxHTGhhbGYsMj4sIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRN
YXBbR0xfSEFMRl9GTE9BVF9PRVNdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2
ZTxHTGhhbGYsMj4sIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2Fk
TWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgR0xfUkcxNkk6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3
aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERY
R0lfRk9STUFUX1IxNkcxNl9TSU5UOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZv
PiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGxvYWRNYXBbR0xfU0hPUlRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExv
YWRUb05hdGl2ZTxHTHNob3J0LDI+LCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX1JHMTZVSToKLSAgICAgICAgewotICAg
ICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2X1VJTlQ6Ci0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwot
ICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9TSE9SVF0gPSBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdXNob3J0LDI+LCBmYWxzZSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAg
fSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX1JH
MzJGOgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQ6Ci0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjpt
YXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVu
Y3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9G
TE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMZmxvYXQsMj4sIGZh
bHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAg
ICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlv
bnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgR0xfUkczMkk6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1h
dCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkcz
Ml9TSU5UOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNv
bnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25z
TWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxv
YWRNYXBbR0xfSU5UXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0xpbnQs
Mj4sIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAg
ICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRG
dW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgR0xfUkczMlVJOgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4
Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SMzJHMzJfVUlOVDoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1
bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xl
bnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0lOVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9h
ZFRvTmF0aXZlPEdMdWludCwyPiwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9SRzg6Ci0gICAgICAgIHsKLSAgICAgICAg
ICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBj
YXNlIERYR0lfRk9STUFUX1I4RzhfVU5PUk06Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlv
bkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAg
ICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1
bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1Ynl0ZSwyPiwgZmFsc2UpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9SRzhJOgotICAg
ICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4X1NJTlQ6Ci0gICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBs
b2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9CWVRFXSA9IExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0xieXRlLDI+LCBmYWxzZSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgp
OwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX1JHOFVJ
OgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4X1VJTlQ6Ci0gICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xl
bnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25J
bmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05F
RF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1Ynl0ZSwyPiwg
ZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAg
ICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0
aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBHTF9SRzhfU05PUk06Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZHhn
aUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFU
X1I4RzhfU05PUk06Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0
aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5j
dGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51
bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAg
ICAgbG9hZE1hcFtHTF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8
R0xieXRlLDI+LCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1h
cDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgICAgICBjYXNlIEdMX1JHQjoKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNo
IChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfVU5LTk9XTjoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1
bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xl
bnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVu
cmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxv
YWRNYXBbR0xfVU5TSUdORURfU0hPUlRfNV82XzVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVu
cmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxv
YWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFw
PEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAg
ICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5m
byhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBsb2FkTWFwW0dMX1VOU0lHTkVEX1NIT1JUXzVfNl81XSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5m
byhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX1JHQjEwX0EyOgotICAgICAg
ICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VTk9STToKLSAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVu
dW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVE
X0lOVF8yXzEwXzEwXzEwX1JFVl0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZl
PEdMdWludCwxPiwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRN
YXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBHTF9SR0IxMF9BMlVJOgotICAgICAgICB7Ci0gICAgICAgICAg
ICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VSU5UOgotICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVu
Y3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBf
UkVWXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1aW50LDE+LCBmYWxz
ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAg
ICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25z
TWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBj
YXNlIEdMX1JHQjE2RjoKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2
QjE2QTE2X0ZMT0FUOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVu
Y3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVu
dW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGxvYWRNYXBbR0xfRkxPQVRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRSR0IzMkZU
b1JHQkExNkYsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9IQUxG
X0ZMT0FUXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmUzVG80PEdMaGFsZixn
bDo6RmxvYXQxNk9uZT4sIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtH
TF9IQUxGX0ZMT0FUX09FU10gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlM1Rv
NDxHTGhhbGYsZ2w6OkZsb2F0MTZPbmU+LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfUkdCMTZJOgotICAgICAgICB7Ci0g
ICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVDoKLSAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxv
YWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1NIT1JUXSA9IExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmUzVG80PEdMc2hvcnQsMHgwMDAxPiwgdHJ1ZSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAg
ICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFw
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXNl
IEdMX1JHQjE2VUk6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIx
NkExNl9VSU5UOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rp
b25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0s
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGxvYWRNYXBbR0xfVU5TSUdORURfU0hPUlRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRU
b05hdGl2ZTNUbzQ8R0x1c2hvcnQsMHgwMDAxPiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX1JHQjMyRjoKLSAgICAgICAg
ewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FUOgotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51
bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5m
bz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfRkxPQVRdID0g
TG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTNUbzQ8R0xmbG9hdCxnbDo6RmxvYXQz
Mk9uZT4sIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0g
ICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9h
ZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBHTF9SR0IzMkk6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAo
ZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX1IzMkczMkIzMkEzMl9TSU5UOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZv
PiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGxvYWRNYXBbR0xfSU5UXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2Fk
VG9OYXRpdmUzVG80PEdMaW50LDB4MDAwMDAwMDE+LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfUkdCMzJVSToKLSAgICAg
ICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQ6Ci0gICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xl
bnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25J
bmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05F
RF9JTlRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTNUbzQ8R0x1aW50LDB4
MDAwMDAwMDE+LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFw
OwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgR0xfUkdCNTY1OgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0
Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9CNUc2UjVfVU5PUk06Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+
IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAg
ICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9TSE9SVF81XzZfNV0gPSBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdXNob3J0LDE+LCBmYWxzZSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwot
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JN
OgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0
ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0g
W10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBb
R0xfVU5TSUdORURfU0hPUlRfNV82XzVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRSNUc2
QjVUb1JHQkE4LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5T
SUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlM1RvNDxHTHVi
eXRlLDB4RkY+LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFw
OwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgR0xfUkdCNV9BMToKLSAgICAgICAgewotICAgICAgICAgICAgc3dp
dGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfQjVHNVI1QTFfVU5PUk06Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAg
ICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xXSA9IExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbyhMb2FkUkdCNUExVG9BMVJHQjUsIHRydWUpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STToK
LSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6
Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtd
KCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dM
X1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVl0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9h
ZFJHQjEwQTJUb1JHQkE4LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBb
R0xfVU5TSUdORURfU0hPUlRfNV81XzVfMV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFJH
QjVBMVRvUkdCQTgsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9V
TlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1Ynl0
ZSw0PiwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0g
ICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9h
ZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBHTF9SR0I4OgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4
Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SOEc4QjhBOF9VTk9STToKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9h
ZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8
R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZv
KExvYWRUb05hdGl2ZTNUbzQ8R0x1Ynl0ZSwweEZGPiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX1JHQjhJOgotICAgICAg
ICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5UOgotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwg
TG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4g
bG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfQllURV0gPSBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlM1RvNDxHTGJ5dGUsMHgwMT4sIHRydWUpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAg
ICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBH
TF9SR0I4VUk6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1VJ
TlQ6Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
c3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAg
PSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZElt
YWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1h
cFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmUz
VG80PEdMdWJ5dGUsMHgwMT4sIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9SR0I4X1NOT1JNOgotICAgICAgICB7Ci0gICAg
ICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TTk9STToKLSAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX0JZVEVdID0gTG9hZEltYWdlRnVu
Y3Rpb25JbmZvKExvYWRUb05hdGl2ZTNUbzQ8R0xieXRlLDB4N0Y+LCB0cnVlKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7
Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfUkdCOV9F
NToKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjlHOUI5RTVfU0hBUkVERVhQ
OgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0
ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0g
W10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBb
R0xfSEFMRl9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFJHQjE2RlRvUkdCOUU1
LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfSEFMRl9GTE9BVF9P
RVNdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRSR0IxNkZUb1JHQjlFNSwgdHJ1ZSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX0ZMT0FUXSA9IExvYWRJbWFnZUZ1bmN0
aW9uSW5mbyhMb2FkUkdCMzJGVG9SR0I5RTUsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgbG9hZE1hcFtHTF9VTlNJR05FRF9JTlRfNV85XzlfOV9SRVZdID0gTG9hZEltYWdlRnVuY3Rp
b25JbmZvKExvYWRUb05hdGl2ZTxHTHVpbnQsMT4sIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfUkdCQToKLSAgICAgICAg
ewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfVU5LTk9XTjoKLSAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9h
ZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF0gPSBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xXSA9
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAg
ICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwg
TG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4g
bG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllU
RV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUp
OwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9TSE9SVF80XzRf
NF80XSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1
ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX1NIT1JUXzVf
NV81XzFdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0
cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAg
ICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlv
bnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgR0xfUkdCQTE2RjoKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdp
Rm9ybWF0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjE2RzE2QjE2QTE2X0ZMT0FUOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBs
b2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1h
cDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGxvYWRNYXBbR0xfRkxPQVRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWQz
MkZUbzE2Rjw0PiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX0hB
TEZfRkxPQVRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTGhhbGYsND4s
IGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfSEFMRl9GTE9BVF9P
RVNdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTGhhbGYsND4sIGZhbHNl
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAg
ICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNN
YXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgR0xfUkdCQTE2SToKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2
QjE2QTE2X1NJTlQ6Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0
aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5j
dGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51
bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAg
ICAgbG9hZE1hcFtHTF9TSE9SVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZl
PEdMc2hvcnQsND4sIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2Fk
TWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgR0xfUkdCQTE2VUk6Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5UOgotICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVu
Y3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfU0hPUlRdID0gTG9hZElt
YWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTHVzaG9ydCw0PiwgZmFsc2UpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0o
KTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9SR0JB
MzJGOgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxP
QVQ6Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
c3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAg
PSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZElt
YWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1h
cFtHTF9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMZmxvYXQs
ND4sIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAg
ICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRG
dW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgR0xfUkdCQTMySToKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChk
eGdpRm9ybWF0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjMyRzMyQjMyQTMyX1NJTlQ6Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+
IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAg
ICAgICAgICAgICAgbG9hZE1hcFtHTF9JTlRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRU
b05hdGl2ZTxHTGludCw0PiwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9SR0JBMzJVSToKLSAgICAgICAgewotICAgICAg
ICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQ6Ci0gICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFw
OwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9JTlRdID0gTG9h
ZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTHVpbnQsND4sIGZhbHNlKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9
KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfUkdC
QTQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I0RzRSNEE0X1VOT1JNOgot
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6
bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10o
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1
bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xf
VU5TSUdORURfU0hPUlRfNF80XzRfNF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFJHQkE0
VG9BUkdCNCwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsK
LSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBs
b2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rp
b25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF0gPSBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFJHQkE0VG9SR0JBOCwgdHJ1ZSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rp
b25JbmZvKExvYWRUb05hdGl2ZTxHTHVieXRlLDQ+LCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX1JHQkE4OgotICAgICAg
ICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STToKLSAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0s
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+
IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZ
VEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTHVieXRlLDQ+LCBmYWxz
ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAg
ICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25z
TWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBj
YXNlIEdMX1JHQkE4SToKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4
QThfU0lOVDoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9u
c01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBs
b2FkTWFwW0dMX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTGJ5
dGUsND4sIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwot
ICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxv
YWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgR0xfUkdCQThVSToKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNo
IChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfUjhHOEI4QThfVUlOVDoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4g
bG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpt
YXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25J
bmZvKExvYWRUb05hdGl2ZTxHTHVieXRlLDQ+LCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX1JHQkE4X1NOT1JNOgotICAg
ICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TTk9STToKLSAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVu
dW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX0JZVEVdID0g
TG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTGJ5dGUsND4sIGZhbHNlKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAg
ICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xf
U1JHQjg6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JN
X1NSR0I6Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29u
c3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNN
YXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9h
ZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9h
ZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRp
dmUzVG80PEdMdWJ5dGUsMHhGRj4sIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9TUkdCOF9BTFBIQTg6Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0I6Ci0gICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVt
LCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZv
PiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9C
WVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1Ynl0ZSw0PiwgZmFs
c2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAg
ICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9u
c01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBHTF9TVEVOQ0lMX0lOREVYODoKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChk
eGdpRm9ybWF0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfVU5LTk9XTjoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0
aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVt
LCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBsb2FkTWFwW0RYR0lfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5UXSA9IExvYWRJbWFnZUZ1bmN0
aW9uSW5mbyhVbmltcGxlbWVudGVkTG9hZEZ1bmN0aW9uLCB0cnVlKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGxvYWRNYXBbRFhHSV9GT1JNQVRfUjI0RzhfVFlQRUxFU1NdID0gTG9hZEltYWdl
RnVuY3Rpb25JbmZvKFVuaW1wbGVtZW50ZWRMb2FkRnVuY3Rpb24sIHRydWUpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsK
LQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0RYR0lfRk9STUFUX0QyNF9VTk9STV9T
OF9VSU5UXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbmltcGxlbWVudGVkTG9hZEZ1bmN0aW9u
LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbRFhHSV9GT1JNQVRfUjI0
RzhfVFlQRUxFU1NdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVuaW1wbGVtZW50ZWRMb2FkRnVu
Y3Rpb24sIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0g
ICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9h
ZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgc3Rk
OjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGVtcHR5TG9hZEZ1bmN0aW9uc01h
cDsKLSAgICAgICAgICAgIHJldHVybiBlbXB0eUxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgLy8gY2xhbmctZm9ybWF0IG9uCi0KLX0gIC8vIEdldExvYWRGdW5jdGlvbnNN
YXAKLQotfSAgLy8gbmFtZXNwYWNlIGQzZDExCi0KLX0gIC8vIG5hbWVzcGFjZSByeApJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9y
ZW5kZXJlcjExX3V0aWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFfdXRpbHMuY3BwCShy
ZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFfdXRpbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiwyMTMgKzI2LDggQEAKIG5hbWVzcGFjZSByeAogewogCi1uYW1lc3BhY2UgZ2xfZDNkMTEK
LXsKLQotRDNEMTFfQkxFTkQgQ29udmVydEJsZW5kRnVuYyhHTGVudW0gZ2xCbGVuZCwgYm9vbCBp
c0FscGhhKQotewotICAgIEQzRDExX0JMRU5EIGQzZEJsZW5kID0gRDNEMTFfQkxFTkRfWkVSTzsK
LQotICAgIHN3aXRjaCAoZ2xCbGVuZCkKLSAgICB7Ci0gICAgICBjYXNlIEdMX1pFUk86ICAgICAg
ICAgICAgICAgICAgICAgZDNkQmxlbmQgPSBEM0QxMV9CTEVORF9aRVJPOyAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgIGNhc2UgR0xfT05FOiAgICAgICAgICAgICAgICAgICAgICBkM2RCbGVu
ZCA9IEQzRDExX0JMRU5EX09ORTsgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBH
TF9TUkNfQ09MT1I6ICAgICAgICAgICAgICAgIGQzZEJsZW5kID0gKGlzQWxwaGEgPyBEM0QxMV9C
TEVORF9TUkNfQUxQSEEgOiBEM0QxMV9CTEVORF9TUkNfQ09MT1IpOyAgICAgICAgICAgYnJlYWs7
Ci0gICAgICBjYXNlIEdMX09ORV9NSU5VU19TUkNfQ09MT1I6ICAgICAgZDNkQmxlbmQgPSAoaXNB
bHBoYSA/IEQzRDExX0JMRU5EX0lOVl9TUkNfQUxQSEEgOiBEM0QxMV9CTEVORF9JTlZfU1JDX0NP
TE9SKTsgICBicmVhazsKLSAgICAgIGNhc2UgR0xfRFNUX0NPTE9SOiAgICAgICAgICAgICAgICBk
M2RCbGVuZCA9IChpc0FscGhhID8gRDNEMTFfQkxFTkRfREVTVF9BTFBIQSA6IEQzRDExX0JMRU5E
X0RFU1RfQ09MT1IpOyAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfRFNU
X0NPTE9SOiAgICAgIGQzZEJsZW5kID0gKGlzQWxwaGEgPyBEM0QxMV9CTEVORF9JTlZfREVTVF9B
TFBIQSA6IEQzRDExX0JMRU5EX0lOVl9ERVNUX0NPTE9SKTsgYnJlYWs7Ci0gICAgICBjYXNlIEdM
X1NSQ19BTFBIQTogICAgICAgICAgICAgICAgZDNkQmxlbmQgPSBEM0QxMV9CTEVORF9TUkNfQUxQ
SEE7ICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfT05FX01JTlVTX1NSQ19BTFBIQTog
ICAgICBkM2RCbGVuZCA9IEQzRDExX0JMRU5EX0lOVl9TUkNfQUxQSEE7ICAgICAgIGJyZWFrOwot
ICAgICAgY2FzZSBHTF9EU1RfQUxQSEE6ICAgICAgICAgICAgICAgIGQzZEJsZW5kID0gRDNEMTFf
QkxFTkRfREVTVF9BTFBIQTsgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX09ORV9NSU5V
U19EU1RfQUxQSEE6ICAgICAgZDNkQmxlbmQgPSBEM0QxMV9CTEVORF9JTlZfREVTVF9BTFBIQTsg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfQ09OU1RBTlRfQ09MT1I6ICAgICAgICAgICBkM2RC
bGVuZCA9IEQzRDExX0JMRU5EX0JMRU5EX0ZBQ1RPUjsgICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1I6IGQzZEJsZW5kID0gRDNEMTFfQkxFTkRfSU5W
X0JMRU5EX0ZBQ1RPUjsgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX0NPTlNUQU5UX0FMUEhBOiAg
ICAgICAgICAgZDNkQmxlbmQgPSBEM0QxMV9CTEVORF9CTEVORF9GQUNUT1I7ICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBOiBkM2RCbGVuZCA9IEQz
RDExX0JMRU5EX0lOVl9CTEVORF9GQUNUT1I7ICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9TUkNf
QUxQSEFfU0FUVVJBVEU6ICAgICAgIGQzZEJsZW5kID0gRDNEMTFfQkxFTkRfU1JDX0FMUEhBX1NB
VDsgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgIH0KLQot
ICAgIHJldHVybiBkM2RCbGVuZDsKLX0KLQotRDNEMTFfQkxFTkRfT1AgQ29udmVydEJsZW5kT3Ao
R0xlbnVtIGdsQmxlbmRPcCkKLXsKLSAgICBEM0QxMV9CTEVORF9PUCBkM2RCbGVuZE9wID0gRDNE
MTFfQkxFTkRfT1BfQUREOwotCi0gICAgc3dpdGNoIChnbEJsZW5kT3ApCi0gICAgewotICAgICAg
Y2FzZSBHTF9GVU5DX0FERDogICAgICAgICAgICAgIGQzZEJsZW5kT3AgPSBEM0QxMV9CTEVORF9P
UF9BREQ7ICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfRlVOQ19TVUJUUkFDVDogICAg
ICAgICBkM2RCbGVuZE9wID0gRDNEMTFfQkxFTkRfT1BfU1VCVFJBQ1Q7ICAgICAgYnJlYWs7Ci0g
ICAgICBjYXNlIEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVDogZDNkQmxlbmRPcCA9IEQzRDExX0JM
RU5EX09QX1JFVl9TVUJUUkFDVDsgIGJyZWFrOwotICAgICAgY2FzZSBHTF9NSU46ICAgICAgICAg
ICAgICAgICAgIGQzZEJsZW5kT3AgPSBEM0QxMV9CTEVORF9PUF9NSU47ICAgICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgR0xfTUFYOiAgICAgICAgICAgICAgICAgICBkM2RCbGVuZE9wID0gRDNE
MTFfQkxFTkRfT1BfTUFYOyAgICAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OiBVTlJFQUNI
QUJMRSgpOwotICAgIH0KLQotICAgIHJldHVybiBkM2RCbGVuZE9wOwotfQotCi1VSU5UOCBDb252
ZXJ0Q29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUsIGJvb2wgYWxwaGEp
Ci17Ci0gICAgVUlOVDggbWFzayA9IDA7Ci0gICAgaWYgKHJlZCkKLSAgICB7Ci0gICAgICAgIG1h
c2sgfD0gRDNEMTFfQ09MT1JfV1JJVEVfRU5BQkxFX1JFRDsKLSAgICB9Ci0gICAgaWYgKGdyZWVu
KQotICAgIHsKLSAgICAgICAgbWFzayB8PSBEM0QxMV9DT0xPUl9XUklURV9FTkFCTEVfR1JFRU47
Ci0gICAgfQotICAgIGlmIChibHVlKQotICAgIHsKLSAgICAgICAgbWFzayB8PSBEM0QxMV9DT0xP
Ul9XUklURV9FTkFCTEVfQkxVRTsKLSAgICB9Ci0gICAgaWYgKGFscGhhKQotICAgIHsKLSAgICAg
ICAgbWFzayB8PSBEM0QxMV9DT0xPUl9XUklURV9FTkFCTEVfQUxQSEE7Ci0gICAgfQotICAgIHJl
dHVybiBtYXNrOwotfQotCi1EM0QxMV9DVUxMX01PREUgQ29udmVydEN1bGxNb2RlKGJvb2wgY3Vs
bEVuYWJsZWQsIEdMZW51bSBjdWxsTW9kZSkKLXsKLSAgICBEM0QxMV9DVUxMX01PREUgY3VsbCA9
IEQzRDExX0NVTExfTk9ORTsKLQotICAgIGlmIChjdWxsRW5hYmxlZCkKLSAgICB7Ci0gICAgICAg
IHN3aXRjaCAoY3VsbE1vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX0ZST05UOiAg
ICAgICAgICAgIGN1bGwgPSBEM0QxMV9DVUxMX0ZST05UOyAgICBicmVhazsKLSAgICAgICAgICBj
YXNlIEdMX0JBQ0s6ICAgICAgICAgICAgIGN1bGwgPSBEM0QxMV9DVUxMX0JBQ0s7ICAgICBicmVh
azsKLSAgICAgICAgICBjYXNlIEdMX0ZST05UX0FORF9CQUNLOiAgIGN1bGwgPSBEM0QxMV9DVUxM
X05PTkU7ICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAg
ICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIGN1bGwgPSBEM0QxMV9DVUxM
X05PTkU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGN1bGw7Ci19Ci0KLUQzRDExX0NPTVBBUklTT05f
RlVOQyBDb252ZXJ0Q29tcGFyaXNvbihHTGVudW0gY29tcGFyaXNvbikKLXsKLSAgICBEM0QxMV9D
T01QQVJJU09OX0ZVTkMgZDNkQ29tcCA9IEQzRDExX0NPTVBBUklTT05fTkVWRVI7Ci0gICAgc3dp
dGNoIChjb21wYXJpc29uKQotICAgIHsKLSAgICAgIGNhc2UgR0xfTkVWRVI6ICAgIGQzZENvbXAg
PSBEM0QxMV9DT01QQVJJU09OX05FVkVSOyAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdM
X0FMV0FZUzogICBkM2RDb21wID0gRDNEMTFfQ09NUEFSSVNPTl9BTFdBWVM7ICAgICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBHTF9MRVNTOiAgICAgZDNkQ29tcCA9IEQzRDExX0NPTVBBUklTT05f
TEVTUzsgICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfTEVRVUFMOiAgIGQzZENvbXAg
PSBEM0QxMV9DT01QQVJJU09OX0xFU1NfRVFVQUw7ICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdM
X0VRVUFMOiAgICBkM2RDb21wID0gRDNEMTFfQ09NUEFSSVNPTl9FUVVBTDsgICAgICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBHTF9HUkVBVEVSOiAgZDNkQ29tcCA9IEQzRDExX0NPTVBBUklTT05f
R1JFQVRFUjsgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfR0VRVUFMOiAgIGQzZENvbXAg
PSBEM0QxMV9DT01QQVJJU09OX0dSRUFURVJfRVFVQUw7ICAgYnJlYWs7Ci0gICAgICBjYXNlIEdM
X05PVEVRVUFMOiBkM2RDb21wID0gRDNEMTFfQ09NUEFSSVNPTl9OT1RfRVFVQUw7ICAgICAgIGJy
ZWFrOwotICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
ZDNkQ29tcDsKLX0KLQotRDNEMTFfREVQVEhfV1JJVEVfTUFTSyBDb252ZXJ0RGVwdGhNYXNrKGJv
b2wgZGVwdGhXcml0ZUVuYWJsZWQpCi17Ci0gICAgcmV0dXJuIGRlcHRoV3JpdGVFbmFibGVkID8g
RDNEMTFfREVQVEhfV1JJVEVfTUFTS19BTEwgOiBEM0QxMV9ERVBUSF9XUklURV9NQVNLX1pFUk87
Ci19Ci0KLVVJTlQ4IENvbnZlcnRTdGVuY2lsTWFzayhHTHVpbnQgc3RlbmNpbG1hc2spCi17Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFVJTlQ4PihzdGVuY2lsbWFzayk7Ci19Ci0KLUQzRDExX1NU
RU5DSUxfT1AgQ29udmVydFN0ZW5jaWxPcChHTGVudW0gc3RlbmNpbE9wKQotewotICAgIEQzRDEx
X1NURU5DSUxfT1AgZDNkU3RlbmNpbE9wID0gRDNEMTFfU1RFTkNJTF9PUF9LRUVQOwotCi0gICAg
c3dpdGNoIChzdGVuY2lsT3ApCi0gICAgewotICAgICAgY2FzZSBHTF9aRVJPOiAgICAgIGQzZFN0
ZW5jaWxPcCA9IEQzRDExX1NURU5DSUxfT1BfWkVSTzsgICAgICBicmVhazsKLSAgICAgIGNhc2Ug
R0xfS0VFUDogICAgICBkM2RTdGVuY2lsT3AgPSBEM0QxMV9TVEVOQ0lMX09QX0tFRVA7ICAgICAg
YnJlYWs7Ci0gICAgICBjYXNlIEdMX1JFUExBQ0U6ICAgZDNkU3RlbmNpbE9wID0gRDNEMTFfU1RF
TkNJTF9PUF9SRVBMQUNFOyAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9JTkNSOiAgICAgIGQzZFN0
ZW5jaWxPcCA9IEQzRDExX1NURU5DSUxfT1BfSU5DUl9TQVQ7ICBicmVhazsKLSAgICAgIGNhc2Ug
R0xfREVDUjogICAgICBkM2RTdGVuY2lsT3AgPSBEM0QxMV9TVEVOQ0lMX09QX0RFQ1JfU0FUOyAg
YnJlYWs7Ci0gICAgICBjYXNlIEdMX0lOVkVSVDogICAgZDNkU3RlbmNpbE9wID0gRDNEMTFfU1RF
TkNJTF9PUF9JTlZFUlQ7ICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9JTkNSX1dSQVA6IGQzZFN0
ZW5jaWxPcCA9IEQzRDExX1NURU5DSUxfT1BfSU5DUjsgICAgICBicmVhazsKLSAgICAgIGNhc2Ug
R0xfREVDUl9XUkFQOiBkM2RTdGVuY2lsT3AgPSBEM0QxMV9TVEVOQ0lMX09QX0RFQ1I7ICAgICAg
YnJlYWs7Ci0gICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgIH0KLQotICAgIHJldHVy
biBkM2RTdGVuY2lsT3A7Ci19Ci0KLUQzRDExX0ZJTFRFUiBDb252ZXJ0RmlsdGVyKEdMZW51bSBt
aW5GaWx0ZXIsIEdMZW51bSBtYWdGaWx0ZXIsIGZsb2F0IG1heEFuaXNvdHJvcHksIEdMZW51bSBj
b21wYXJpc29uTW9kZSkKLXsKLSAgICBib29sIGNvbXBhcmlzb24gPSBjb21wYXJpc29uTW9kZSAh
PSBHTF9OT05FOwotCi0gICAgaWYgKG1heEFuaXNvdHJvcHkgPiAxLjBmKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIEQzRDExX0VOQ09ERV9BTklTT1RST1BJQ19GSUxURVIoc3RhdGljX2Nhc3Q8RDNE
MTFfQ09NUEFSSVNPTl9GVU5DPihjb21wYXJpc29uKSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7
Ci0gICAgICAgIEQzRDExX0ZJTFRFUl9UWVBFIGR4TWluID0gRDNEMTFfRklMVEVSX1RZUEVfUE9J
TlQ7Ci0gICAgICAgIEQzRDExX0ZJTFRFUl9UWVBFIGR4TWlwID0gRDNEMTFfRklMVEVSX1RZUEVf
UE9JTlQ7Ci0gICAgICAgIHN3aXRjaCAobWluRmlsdGVyKQotICAgICAgICB7Ci0gICAgICAgICAg
Y2FzZSBHTF9ORUFSRVNUOiAgICAgICAgICAgICAgICBkeE1pbiA9IEQzRDExX0ZJTFRFUl9UWVBF
X1BPSU5UOyAgZHhNaXAgPSBEM0QxMV9GSUxURVJfVFlQRV9QT0lOVDsgIGJyZWFrOwotICAgICAg
ICAgIGNhc2UgR0xfTElORUFSOiAgICAgICAgICAgICAgICAgZHhNaW4gPSBEM0QxMV9GSUxURVJf
VFlQRV9MSU5FQVI7IGR4TWlwID0gRDNEMTFfRklMVEVSX1RZUEVfUE9JTlQ7ICBicmVhazsKLSAg
ICAgICAgICBjYXNlIEdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1Q6IGR4TWluID0gRDNEMTFfRklM
VEVSX1RZUEVfUE9JTlQ7ICBkeE1pcCA9IEQzRDExX0ZJTFRFUl9UWVBFX1BPSU5UOyAgYnJlYWs7
Ci0gICAgICAgICAgY2FzZSBHTF9MSU5FQVJfTUlQTUFQX05FQVJFU1Q6ICBkeE1pbiA9IEQzRDEx
X0ZJTFRFUl9UWVBFX0xJTkVBUjsgZHhNaXAgPSBEM0QxMV9GSUxURVJfVFlQRV9QT0lOVDsgIGJy
ZWFrOwotICAgICAgICAgIGNhc2UgR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSOiAgZHhNaW4gPSBE
M0QxMV9GSUxURVJfVFlQRV9QT0lOVDsgIGR4TWlwID0gRDNEMTFfRklMVEVSX1RZUEVfTElORUFS
OyBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX0xJTkVBUl9NSVBNQVBfTElORUFSOiAgIGR4TWlu
ID0gRDNEMTFfRklMVEVSX1RZUEVfTElORUFSOyBkeE1pcCA9IEQzRDExX0ZJTFRFUl9UWVBFX0xJ
TkVBUjsgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgRDNEMTFfRklMVEVSX1RZUEUgZHhN
YWcgPSBEM0QxMV9GSUxURVJfVFlQRV9QT0lOVDsKLSAgICAgICAgc3dpdGNoIChtYWdGaWx0ZXIp
Ci0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX05FQVJFU1Q6IGR4TWFnID0gRDNEMTFfRklM
VEVSX1RZUEVfUE9JTlQ7ICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX0xJTkVBUjogIGR4TWFn
ID0gRDNEMTFfRklMVEVSX1RZUEVfTElORUFSOyBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OiAg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gRDNEMTFf
RU5DT0RFX0JBU0lDX0ZJTFRFUihkeE1pbiwgZHhNYWcsIGR4TWlwLCBzdGF0aWNfY2FzdDxEM0Qx
MV9DT01QQVJJU09OX0ZVTkM+KGNvbXBhcmlzb24pKTsKLSAgICB9Ci19Ci0KLUQzRDExX1RFWFRV
UkVfQUREUkVTU19NT0RFIENvbnZlcnRUZXh0dXJlV3JhcChHTGVudW0gd3JhcCkKLXsKLSAgICBz
d2l0Y2ggKHdyYXApCi0gICAgewotICAgICAgY2FzZSBHTF9SRVBFQVQ6ICAgICAgICAgIHJldHVy
biBEM0QxMV9URVhUVVJFX0FERFJFU1NfV1JBUDsKLSAgICAgIGNhc2UgR0xfQ0xBTVBfVE9fRURH
RTogICByZXR1cm4gRDNEMTFfVEVYVFVSRV9BRERSRVNTX0NMQU1QOwotICAgICAgY2FzZSBHTF9N
SVJST1JFRF9SRVBFQVQ6IHJldHVybiBEM0QxMV9URVhUVVJFX0FERFJFU1NfTUlSUk9SOwotICAg
ICAgZGVmYXVsdDogICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgfQotCi0gICAg
cmV0dXJuIEQzRDExX1RFWFRVUkVfQUREUkVTU19XUkFQOwotfQotCi1EM0QxMV9RVUVSWSBDb252
ZXJ0UXVlcnlUeXBlKEdMZW51bSBxdWVyeVR5cGUpCi17Ci0gICAgc3dpdGNoIChxdWVyeVR5cGUp
Ci0gICAgewotICAgICAgY2FzZSBHTF9BTllfU0FNUExFU19QQVNTRURfRVhUOgotICAgICAgY2Fz
ZSBHTF9BTllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFX0VYVDogICByZXR1cm4gRDNEMTFf
UVVFUllfT0NDTFVTSU9OOwotICAgICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlU
SVZFU19XUklUVEVOOiByZXR1cm4gRDNEMTFfUVVFUllfU09fU1RBVElTVElDUzsKLSAgICAgIGNh
c2UgR0xfVElNRV9FTEFQU0VEX0VYVDoKLSAgICAgICAgICAvLyBUd28gaW50ZXJuYWwgcXVlcmll
cyBhcmUgYWxzbyBjcmVhdGVkIGZvciBiZWdpbi9lbmQgdGltZXN0YW1wcwotICAgICAgICAgIHJl
dHVybiBEM0QxMV9RVUVSWV9USU1FU1RBTVBfRElTSk9JTlQ7Ci0gICAgICBkZWZhdWx0OiBVTlJF
QUNIQUJMRSgpOyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBEM0QxMV9RVUVSWV9FVkVO
VDsKLSAgICB9Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBnbF9kM2QxMQotCiBuYW1lc3BhY2UgZDNk
MTFfZ2wKIHsKLQogbmFtZXNwYWNlCiB7CiAKQEAgLTI0MSw4ICszNiw3IEBAIGNsYXNzIERYR0lT
dXBwb3J0SGVscGVyIDogYW5nbGU6Ok5vbkNvcHkKIHsKICAgcHVibGljOgogICAgIERYR0lTdXBw
b3J0SGVscGVyKElEM0QxMURldmljZSAqZGV2aWNlLCBEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJl
TGV2ZWwpCi0gICAgICAgIDogbURldmljZShkZXZpY2UpLAotICAgICAgICAgIG1GZWF0dXJlTGV2
ZWwoZmVhdHVyZUxldmVsKQorICAgICAgICA6IG1EZXZpY2UoZGV2aWNlKSwgbUZlYXR1cmVMZXZl
bChmZWF0dXJlTGV2ZWwpCiAgICAgewogICAgIH0KIApAQCAtMjc3LDc0ICs3MSwxNSBAQCBjbGFz
cyBEWEdJU3VwcG9ydEhlbHBlciA6IGFuZ2xlOjpOb25Db3B5CiAgICAgRDNEX0ZFQVRVUkVfTEVW
RUwgbUZlYXR1cmVMZXZlbDsKIH07CiAKLX0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQotCi11bnNp
Z25lZCBpbnQgR2V0UmVzZXJ2ZWRWZXJ0ZXhVbmlmb3JtVmVjdG9ycyhEM0RfRkVBVFVSRV9MRVZF
TCBmZWF0dXJlTGV2ZWwpCi17Ci0gICAgc3dpdGNoIChmZWF0dXJlTGV2ZWwpCi0gICAgewotICAg
ICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6Ci0gICAgICAgIGNhc2UgRDNEX0ZFQVRV
UkVfTEVWRUxfMTFfMDoKLSAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgotICAg
ICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6Ci0gICAgICAgICAgICByZXR1cm4gMDsK
LQotICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKLSAgICAgICAgY2FzZSBEM0Rf
RkVBVFVSRV9MRVZFTF85XzI6Ci0gICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8xOgot
ICAgICAgICAgICAgcmV0dXJuIDM7ICAvLyBkeF9WaWV3QWRqdXN0LCBkeF9WaWV3Q29vcmRzIGFu
ZCBkeF9WaWV3U2NhbGUKLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgIH0KLX0KLQotdW5zaWduZWQgaW50IEdl
dFJlc2VydmVkRnJhZ21lbnRVbmlmb3JtVmVjdG9ycyhEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJl
TGV2ZWwpCi17Ci0gICAgc3dpdGNoIChmZWF0dXJlTGV2ZWwpCi0gICAgewotICAgICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6Ci0gICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxf
MTFfMDoKLSAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgotICAgICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6Ci0gICAgICAgICAgICByZXR1cm4gMDsKLQotICAgICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKLSAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF85XzI6Ci0gICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8xOgotICAgICAgICAg
ICAgcmV0dXJuIDM7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci19Ci0KLUdMaW50IEdldE1heGltdW1D
bGllbnRWZXJzaW9uKEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKLXsKLSAgICBzd2l0
Y2ggKGZlYXR1cmVMZXZlbCkKLSAgICB7Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEx
XzE6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6Ci0gICAgICBjYXNlIEQzRF9G
RUFUVVJFX0xFVkVMXzEwXzE6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6IHJl
dHVybiAzOwotCi0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKLSAgICAgIGNhc2Ug
RDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6
ICByZXR1cm4gMjsKLQotICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgICAgICByZXR1cm4g
MDsKLSAgICB9Ci19Ci0KLXN0YXRpYyBnbDo6VGV4dHVyZUNhcHMgR2VuZXJhdGVUZXh0dXJlRm9y
bWF0Q2FwcyhHTGludCBtYXhDbGllbnRWZXJzaW9uLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIElE
M0QxMURldmljZSAqZGV2aWNlLCBjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmcmVuZGVyZXIx
MURldmljZUNhcHMpCitnbDo6VGV4dHVyZUNhcHMgR2VuZXJhdGVUZXh0dXJlRm9ybWF0Q2FwcyhH
TGludCBtYXhDbGllbnRWZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSUQzRDExRGV2aWNlICpkZXZpY2UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmcmVu
ZGVyZXIxMURldmljZUNhcHMpCiB7CiAgICAgZ2w6OlRleHR1cmVDYXBzIHRleHR1cmVDYXBzOwog
CiAgICAgRFhHSVN1cHBvcnRIZWxwZXIgc3VwcG9ydChkZXZpY2UsIHJlbmRlcmVyMTFEZXZpY2VD
YXBzLmZlYXR1cmVMZXZlbCk7Ci0gICAgY29uc3QgZDNkMTE6OlRleHR1cmVGb3JtYXQgJmZvcm1h
dEluZm8gPQotICAgICAgICBkM2QxMTo6R2V0VGV4dHVyZUZvcm1hdEluZm8oaW50ZXJuYWxGb3Jt
YXQsIHJlbmRlcmVyMTFEZXZpY2VDYXBzKTsKKyAgICBjb25zdCBkM2QxMTo6Rm9ybWF0ICZmb3Jt
YXRJbmZvID0gZDNkMTE6OkZvcm1hdDo6R2V0KGludGVybmFsRm9ybWF0LCByZW5kZXJlcjExRGV2
aWNlQ2Fwcyk7CiAKICAgICBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJmludGVybmFsRm9ybWF0
SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oaW50ZXJuYWxGb3JtYXQpOwogCkBAIC0z
NTgsMjEgKzkzLDIxIEBAIHN0YXRpYyBnbDo6VGV4dHVyZUNhcHMgR2VuZXJhdGVUZXh0dXJlRm8K
ICAgICAgICAgfQogICAgIH0KIAotICAgIHRleHR1cmVDYXBzLnRleHR1cmFibGUgPSBzdXBwb3J0
LnF1ZXJ5KGZvcm1hdEluZm8uZm9ybWF0U2V0LT50ZXhGb3JtYXQsIHRleFN1cHBvcnRNYXNrKTsK
KyAgICB0ZXh0dXJlQ2Fwcy50ZXh0dXJhYmxlID0gc3VwcG9ydC5xdWVyeShmb3JtYXRJbmZvLnRl
eEZvcm1hdCwgdGV4U3VwcG9ydE1hc2spOwogICAgIHRleHR1cmVDYXBzLmZpbHRlcmFibGUgPQot
ICAgICAgICBzdXBwb3J0LnF1ZXJ5KGZvcm1hdEluZm8uZm9ybWF0U2V0LT5zcnZGb3JtYXQsIEQz
RDExX0ZPUk1BVF9TVVBQT1JUX1NIQURFUl9TQU1QTEUpOworICAgICAgICBzdXBwb3J0LnF1ZXJ5
KGZvcm1hdEluZm8uc3J2Rm9ybWF0LCBEM0QxMV9GT1JNQVRfU1VQUE9SVF9TSEFERVJfU0FNUExF
KTsKICAgICB0ZXh0dXJlQ2Fwcy5yZW5kZXJhYmxlID0KLSAgICAgICAgKHN1cHBvcnQucXVlcnko
Zm9ybWF0SW5mby5mb3JtYXRTZXQtPnJ0dkZvcm1hdCwgRDNEMTFfRk9STUFUX1NVUFBPUlRfUkVO
REVSX1RBUkdFVCkpIHx8Ci0gICAgICAgIChzdXBwb3J0LnF1ZXJ5KGZvcm1hdEluZm8uZm9ybWF0
U2V0LT5kc3ZGb3JtYXQsIEQzRDExX0ZPUk1BVF9TVVBQT1JUX0RFUFRIX1NURU5DSUwpKTsKKyAg
ICAgICAgKHN1cHBvcnQucXVlcnkoZm9ybWF0SW5mby5ydHZGb3JtYXQsIEQzRDExX0ZPUk1BVF9T
VVBQT1JUX1JFTkRFUl9UQVJHRVQpKSB8fAorICAgICAgICAoc3VwcG9ydC5xdWVyeShmb3JtYXRJ
bmZvLmRzdkZvcm1hdCwgRDNEMTFfRk9STUFUX1NVUFBPUlRfREVQVEhfU1RFTkNJTCkpOwogCiAg
ICAgRFhHSV9GT1JNQVQgcmVuZGVyRm9ybWF0ID0gRFhHSV9GT1JNQVRfVU5LTk9XTjsKLSAgICBp
ZiAoZm9ybWF0SW5mby5mb3JtYXRTZXQtPmRzdkZvcm1hdCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dO
KQorICAgIGlmIChmb3JtYXRJbmZvLmRzdkZvcm1hdCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dOKQog
ICAgIHsKLSAgICAgICAgcmVuZGVyRm9ybWF0ID0gZm9ybWF0SW5mby5mb3JtYXRTZXQtPmRzdkZv
cm1hdDsKKyAgICAgICAgcmVuZGVyRm9ybWF0ID0gZm9ybWF0SW5mby5kc3ZGb3JtYXQ7CiAgICAg
fQotICAgIGVsc2UgaWYgKGZvcm1hdEluZm8uZm9ybWF0U2V0LT5ydHZGb3JtYXQgIT0gRFhHSV9G
T1JNQVRfVU5LTk9XTikKKyAgICBlbHNlIGlmIChmb3JtYXRJbmZvLnJ0dkZvcm1hdCAhPSBEWEdJ
X0ZPUk1BVF9VTktOT1dOKQogICAgIHsKLSAgICAgICAgcmVuZGVyRm9ybWF0ID0gZm9ybWF0SW5m
by5mb3JtYXRTZXQtPnJ0dkZvcm1hdDsKKyAgICAgICAgcmVuZGVyRm9ybWF0ID0gZm9ybWF0SW5m
by5ydHZGb3JtYXQ7CiAgICAgfQogICAgIGlmIChyZW5kZXJGb3JtYXQgIT0gRFhHSV9GT1JNQVRf
VU5LTk9XTiAmJgogICAgICAgICBzdXBwb3J0LnF1ZXJ5KHJlbmRlckZvcm1hdCwgRDNEMTFfRk9S
TUFUX1NVUFBPUlRfTVVMVElTQU1QTEVfUkVOREVSVEFSR0VUKSkKQEAgLTQwMCw2NjQgKzEzNSw5
MTEgQEAgc3RhdGljIGdsOjpUZXh0dXJlQ2FwcyBHZW5lcmF0ZVRleHR1cmVGbwogICAgIHJldHVy
biB0ZXh0dXJlQ2FwczsKIH0KIAotc3RhdGljIGJvb2wgR2V0TlBPVFRleHR1cmVTdXBwb3J0KEQz
RF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKK2Jvb2wgR2V0TlBPVFRleHR1cmVTdXBwb3J0
KEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKIHsKICAgICBzd2l0Y2ggKGZlYXR1cmVM
ZXZlbCkKICAgICB7Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6Ci0gICAgICBj
YXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVM
XzEwXzE6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6IHJldHVybiB0cnVlOwor
ICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6CisgICAgICAgIGNhc2UgRDNEX0ZF
QVRVUkVfTEVWRUxfMTFfMDoKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgor
ICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKIAogICAgICAgICAvLyBGcm9tIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMv
bGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvZmY0NzY4NzYuYXNweAotICAgICAgY2FzZSBEM0RfRkVB
VFVSRV9MRVZFTF85XzM6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMjoKLSAgICAg
IGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8xOiAgcmV0dXJuIGZhbHNlOworICAgICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85
XzI6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8xOgorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQogCi1zdGF0aWMgZmxvYXQgR2V0TWF4aW11
bUFuaXNvdHJvcHkoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQorZmxvYXQgR2V0TWF4
aW11bUFuaXNvdHJvcHkoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQogewogICAgIHN3
aXRjaCAoZmVhdHVyZUxldmVsKQogICAgIHsKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxf
MTFfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDogcmV0dXJuIEQzRDExX01B
WF9NQVhBTklTT1RST1BZOworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6Cisg
ICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDoKKyAgICAgICAgICAgIHJldHVybiBE
M0QxMV9NQVhfTUFYQU5JU09UUk9QWTsKIAotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8x
MF8xOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOiByZXR1cm4gRDNEMTBfTUFY
X01BWEFOSVNPVFJPUFk7CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKKyAg
ICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOgorICAgICAgICAgICAgcmV0dXJuIEQz
RDEwX01BWF9NQVhBTklTT1RST1BZOwogCiAgICAgICAgIC8vIEZyb20gaHR0cDovL21zZG4ubWlj
cm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9mZjQ3Njg3Ni5hc3B4Ci0g
ICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfOV8yOiAgcmV0dXJuIDE2OworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlf
MzoKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6CisgICAgICAgICAgICByZXR1
cm4gMTY7CiAKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8xOiAgcmV0dXJuIEQzRF9G
TDlfMV9ERUZBVUxUX01BWF9BTklTT1RST1BZOworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xF
VkVMXzlfMToKKyAgICAgICAgICAgIHJldHVybiBEM0RfRkw5XzFfREVGQVVMVF9NQVhfQU5JU09U
Uk9QWTsKIAotICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiB9CiAKLXN0YXRpYyBib29sIEdldE9jY2x1c2lvblF1ZXJ5U3VwcG9y
dChEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCitib29sIEdldE9jY2x1c2lvblF1ZXJ5
U3VwcG9ydChEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCiB7CiAgICAgc3dpdGNoIChm
ZWF0dXJlTGV2ZWwpCiAgICAgewotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8xOgot
ICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOgotICAgICAgY2FzZSBEM0RfRkVBVFVS
RV9MRVZFTF8xMF8xOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOiByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8xOgorICAgICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxf
MTBfMToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOgorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICAgICAgLy8gRnJvbSBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29t
L2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2ZmNDc2MTUwLmFzcHggSUQzRDExRGV2aWNl
OjpDcmVhdGVRdWVyeQotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzM6Ci0gICAgICBj
YXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMjogIHJldHVybiB0cnVlOwotICAgICAgY2FzZSBEM0Rf
RkVBVFVSRV9MRVZFTF85XzE6ICByZXR1cm4gZmFsc2U7CisgICAgICAgIC8vIEZyb20gaHR0cDov
L21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9mZjQ3NjE1
MC5hc3B4CisgICAgICAgIC8vIElEM0QxMURldmljZTo6Q3JlYXRlUXVlcnkKKyAgICAgICAgY2Fz
ZSBEM0RfRkVBVFVSRV9MRVZFTF85XzM6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxf
OV8yOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfOV8xOgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICBkZWZhdWx0OiBV
TlJFQUNIQUJMRSgpOyAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
fQogCi1zdGF0aWMgYm9vbCBHZXRFdmVudFF1ZXJ5U3VwcG9ydChEM0RfRkVBVFVSRV9MRVZFTCBm
ZWF0dXJlTGV2ZWwpCitib29sIEdldEV2ZW50UXVlcnlTdXBwb3J0KEQzRF9GRUFUVVJFX0xFVkVM
IGZlYXR1cmVMZXZlbCkKIHsKLSAgICAvLyBGcm9tIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20v
ZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvZmY0NzYxNTAuYXNweCBJRDNEMTFEZXZpY2U6
OkNyZWF0ZVF1ZXJ5CisgICAgLy8gRnJvbSBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVz
L2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2ZmNDc2MTUwLmFzcHgKKyAgICAvLyBJRDNEMTFEZXZp
Y2U6OkNyZWF0ZVF1ZXJ5CiAKICAgICBzd2l0Y2ggKGZlYXR1cmVMZXZlbCkKICAgICB7Ci0gICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xF
VkVMXzExXzA6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6Ci0gICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlf
MzoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgotICAgICAgY2FzZSBEM0RfRkVB
VFVSRV9MRVZFTF85XzE6ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF8xMV8xOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICAg
IGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF8xMF8wOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKKyAgICAgICAg
Y2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVW
RUxfOV8xOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgIGRlZmF1bHQ6IFVOUkVB
Q0hBQkxFKCk7ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9CiAK
LXN0YXRpYyBib29sIEdldEluc3RhbmNpbmdTdXBwb3J0KEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1
cmVMZXZlbCkKK2Jvb2wgR2V0SW5zdGFuY2luZ1N1cHBvcnQoRDNEX0ZFQVRVUkVfTEVWRUwgZmVh
dHVyZUxldmVsKQogewotICAgIC8vIEZyb20gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11
cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9mZjQ3NjE1MC5hc3B4IElEM0QxMURldmljZTo6Q3Jl
YXRlSW5wdXRMYXlvdXQKKyAgICAvLyBGcm9tIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4t
dXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvZmY0NzYxNTAuYXNweAorICAgIC8vIElEM0QxMURl
dmljZTo6Q3JlYXRlSW5wdXRMYXlvdXQKIAogICAgIHN3aXRjaCAoZmVhdHVyZUxldmVsKQogICAg
IHsKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKLSAgICAgIGNhc2UgRDNEX0ZF
QVRVUkVfTEVWRUxfMTFfMDoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKLSAg
ICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDogcmV0dXJuIHRydWU7CisgICAgICAgIGNh
c2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZF
TF8xMV8wOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICAgIGNh
c2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0g
ICAgICAvLyBGZWF0dXJlIExldmVsIDlfMyBzdXBwb3J0cyBpbnN0YW5jaW5nLCBidXQgc2xvdCAw
IGluIHRoZSBpbnB1dCBsYXlvdXQgbXVzdCBub3QgYmUgaW5zdGFuY2VkLgotICAgICAgLy8gRDNE
OSBoYXMgYSBzaW1pbGFyIHJlc3RyaWN0aW9uLCB3aGVyZSBzdHJlYW0gMCBtdXN0IG5vdCBiZSBp
bnN0YW5jZWQuCi0gICAgICAvLyBUaGlzIHJlc3RyaWN0aW9uIGNhbiBiZSB3b3JrZWQgYXJvdW5k
IGJ5IHJlbWFwcGluZyBhbnkgbm9uLWluc3RhbmNlZCBzbG90IHRvIHNsb3QgMC4KLSAgICAgIC8v
IFRoaXMgd29ya3MgYmVjYXVzZSBITFNMIHVzZXMgc2hhZGVyIHNlbWFudGljcyB0byBtYXRjaCB0
aGUgdmVydGV4IGlucHV0cyB0byB0aGUgZWxlbWVudHMgaW4gdGhlIGlucHV0IGxheW91dCwgcmF0
aGVyIHRoYW4gdGhlIHNsb3RzLgotICAgICAgLy8gTm90ZSB0aGF0IHdlIG9ubHkgc3VwcG9ydCBp
bnN0YW5jaW5nIHZpYSBBTkdMRV9pbnN0YW5jZWRfYXJyYXkgb24gOV8zLCBzaW5jZSA5XzMgZG9l
c24ndCBzdXBwb3J0IE9wZW5HTCBFUyAzLjAKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxf
OV8zOiAgcmV0dXJuIHRydWU7CisgICAgICAgIC8vIEZlYXR1cmUgTGV2ZWwgOV8zIHN1cHBvcnRz
IGluc3RhbmNpbmcsIGJ1dCBzbG90IDAgaW4gdGhlIGlucHV0IGxheW91dCBtdXN0IG5vdCBiZQor
ICAgICAgICAvLyBpbnN0YW5jZWQuCisgICAgICAgIC8vIEQzRDkgaGFzIGEgc2ltaWxhciByZXN0
cmljdGlvbiwgd2hlcmUgc3RyZWFtIDAgbXVzdCBub3QgYmUgaW5zdGFuY2VkLgorICAgICAgICAv
LyBUaGlzIHJlc3RyaWN0aW9uIGNhbiBiZSB3b3JrZWQgYXJvdW5kIGJ5IHJlbWFwcGluZyBhbnkg
bm9uLWluc3RhbmNlZCBzbG90IHRvIHNsb3QKKyAgICAgICAgLy8gMC4KKyAgICAgICAgLy8gVGhp
cyB3b3JrcyBiZWNhdXNlIEhMU0wgdXNlcyBzaGFkZXIgc2VtYW50aWNzIHRvIG1hdGNoIHRoZSB2
ZXJ0ZXggaW5wdXRzIHRvIHRoZQorICAgICAgICAvLyBlbGVtZW50cyBpbiB0aGUgaW5wdXQgbGF5
b3V0LCByYXRoZXIgdGhhbiB0aGUgc2xvdHMuCisgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBvbmx5
IHN1cHBvcnQgaW5zdGFuY2luZyB2aWEgQU5HTEVfaW5zdGFuY2VkX2FycmF5IG9uIDlfMywgc2lu
Y2UgOV8zCisgICAgICAgIC8vIGRvZXNuJ3Qgc3VwcG9ydCBPcGVuR0wgRVMgMy4wCisgICAgICAg
IGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgotICAgICAgY2FzZSBEM0RfRkVBVFVS
RV9MRVZFTF85XzE6ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVW
RUxfOV8yOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMToKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0KIAotc3RhdGljIGJvb2wgR2V0RnJh
bWVidWZmZXJNdWx0aXNhbXBsZVN1cHBvcnQoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVs
KQorYm9vbCBHZXRGcmFtZWJ1ZmZlck11bHRpc2FtcGxlU3VwcG9ydChEM0RfRkVBVFVSRV9MRVZF
TCBmZWF0dXJlTGV2ZWwpCiB7CiAgICAgc3dpdGNoIChmZWF0dXJlTGV2ZWwpCiAgICAgewotICAg
ICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8xOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF8xMV8wOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgotICAgICAgY2Fz
ZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOiByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSBEM0Rf
RkVBVFVSRV9MRVZFTF8xMV8xOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6
CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKKyAgICAgICAgY2FzZSBEM0Rf
RkVBVFVSRV9MRVZFTF8xMF8wOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgIGNh
c2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85
XzI6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMTogIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzM6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRV
UkVfTEVWRUxfOV8yOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMToKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJM
RSgpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0KIAotc3RhdGljIGJvb2wg
R2V0RnJhbWVidWZmZXJCbGl0U3VwcG9ydChEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwp
Citib29sIEdldEZyYW1lYnVmZmVyQmxpdFN1cHBvcnQoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVy
ZUxldmVsKQogewogICAgIHN3aXRjaCAoZmVhdHVyZUxldmVsKQogICAgIHsKLSAgICAgIGNhc2Ug
RDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFf
MDoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKLSAgICAgIGNhc2UgRDNEX0ZF
QVRVUkVfTEVWRUxfMTBfMDogcmV0dXJuIHRydWU7CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfMTFfMToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOgorICAgICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfMTBfMDoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICBjYXNlIEQzRF9G
RUFUVVJFX0xFVkVMXzlfMzoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgotICAg
ICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNh
c2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVM
XzlfMjoKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9CiAKLXN0YXRpYyBib29sIEdldERlcml2
YXRpdmVJbnN0cnVjdGlvblN1cHBvcnQoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQor
Ym9vbCBHZXREZXJpdmF0aXZlSW5zdHJ1Y3Rpb25TdXBwb3J0KEQzRF9GRUFUVVJFX0xFVkVMIGZl
YXR1cmVMZXZlbCkKIHsKLSAgICAvLyBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xp
YnJhcnkvd2luZG93cy9kZXNrdG9wL2JiNTA5NTg4LmFzcHggc3RhdGVzIHRoYXQgc2hhZGVyIG1v
ZGVsCisgICAgLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRv
d3MvZGVza3RvcC9iYjUwOTU4OC5hc3B4IHN0YXRlcyB0aGF0CisgICAgLy8gc2hhZGVyIG1vZGVs
CiAgICAgLy8gcHNfMl94IGlzIHJlcXVpcmVkIGZvciB0aGUgZGR4IChhbmQgb3RoZXIgZGVyaXZh
dGl2ZSBmdW5jdGlvbnMpLgogCi0gICAgLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11
cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9mZjQ3Njg3Ni5hc3B4IHN0YXRlcyB0aGF0IGZlYXR1
cmUgbGV2ZWwKKyAgICAvLyBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkv
d2luZG93cy9kZXNrdG9wL2ZmNDc2ODc2LmFzcHggc3RhdGVzIHRoYXQKKyAgICAvLyBmZWF0dXJl
IGxldmVsCiAgICAgLy8gOS4zIHN1cHBvcnRzIHNoYWRlciBtb2RlbCBwc18yX3guCiAKICAgICBz
d2l0Y2ggKGZlYXR1cmVMZXZlbCkKICAgICB7Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVM
XzExXzE6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6Ci0gICAgICBjYXNlIEQz
RF9GRUFUVVJFX0xFVkVMXzEwXzE6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6
Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzogIHJldHVybiB0cnVlOwotICAgICAg
Y2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVM
XzlfMTogIHJldHVybiBmYWxzZTsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8x
OgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICAgIGNhc2UgRDNE
X0ZFQVRVUkVfTEVWRUxfMTBfMToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8w
OgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMjoKKyAgICAgICAgY2Fz
ZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitib29sIEdldFNoYWRlclRleHR1cmVMT0RTdXBwb3J0
KEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKK3sKKyAgICBzd2l0Y2ggKGZlYXR1cmVM
ZXZlbCkKKyAgICB7CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKKyAgICAg
ICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJF
X0xFVkVMXzEwXzE6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDoKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8z
OgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMjoKKyAgICAgICAgY2FzZSBEM0Rf
RkVBVFVSRV9MRVZFTF85XzE6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorfQorCitzaXplX3QgR2V0TWF4aW11bVNpbXVsdGFuZW91c1JlbmRlclRh
cmdldHMoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQoreworICAgIC8vIEZyb20gaHR0
cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9mZjQ3
NjE1MC5hc3B4CisgICAgLy8gSUQzRDExRGV2aWNlOjpDcmVhdGVJbnB1dExheW91dAorCisgICAg
c3dpdGNoIChmZWF0dXJlTGV2ZWwpCisgICAgeworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xF
VkVMXzExXzE6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDoKKyAgICAgICAg
ICAgIHJldHVybiBEM0QxMV9TSU1VTFRBTkVPVVNfUkVOREVSX1RBUkdFVF9DT1VOVDsKKworICAg
ICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRV
UkVfTEVWRUxfMTBfMDoKKyAgICAgICAgICAgIHJldHVybiBEM0QxMF9TSU1VTFRBTkVPVVNfUkVO
REVSX1RBUkdFVF9DT1VOVDsKKworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoK
KyAgICAgICAgICAgIHJldHVybiBEM0RfRkw5XzNfU0lNVUxUQU5FT1VTX1JFTkRFUl9UQVJHRVRf
Q09VTlQ7CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgorICAgICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzlfMToKKyAgICAgICAgICAgIHJldHVybiBEM0RfRkw5XzFfU0lN
VUxUQU5FT1VTX1JFTkRFUl9UQVJHRVRfQ09VTlQ7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisK
K3NpemVfdCBHZXRNYXhpbXVtMkRUZXh0dXJlU2l6ZShEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJl
TGV2ZWwpCit7CisgICAgc3dpdGNoIChmZWF0dXJlTGV2ZWwpCisgICAgeworICAgICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxf
MTFfMDoKKyAgICAgICAgICAgIHJldHVybiBEM0QxMV9SRVFfVEVYVFVSRTJEX1VfT1JfVl9ESU1F
TlNJT047CisKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgorICAgICAgICBj
YXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6CisgICAgICAgICAgICByZXR1cm4gRDNEMTBfUkVR
X1RFWFRVUkUyRF9VX09SX1ZfRElNRU5TSU9OOworCisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfOV8zOgorICAgICAgICAgICAgcmV0dXJuIEQzRF9GTDlfM19SRVFfVEVYVFVSRTJEX1Vf
T1JfVl9ESU1FTlNJT047CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgorICAg
ICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMToKKyAgICAgICAgICAgIHJldHVybiBEM0Rf
Rkw5XzFfUkVRX1RFWFRVUkUyRF9VX09SX1ZfRElNRU5TSU9OOwogCi0gICAgICBkZWZhdWx0OiBV
TlJFQUNIQUJMRSgpOyAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CiB9CiAK
LXN0YXRpYyBib29sIEdldFNoYWRlclRleHR1cmVMT0RTdXBwb3J0KEQzRF9GRUFUVVJFX0xFVkVM
IGZlYXR1cmVMZXZlbCkKK3NpemVfdCBHZXRNYXhpbXVtQ3ViZU1hcFRleHR1cmVTaXplKEQzRF9G
RUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKIHsKICAgICBzd2l0Y2ggKGZlYXR1cmVMZXZlbCkK
ICAgICB7Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6Ci0gICAgICBjYXNlIEQz
RF9GRUFUVVJFX0xFVkVMXzExXzA6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6
Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6IHJldHVybiB0cnVlOworICAgICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfMTFfMDoKKyAgICAgICAgICAgIHJldHVybiBEM0QxMV9SRVFfVEVYVFVSRUNVQkVfRElN
RU5TSU9OOworCisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKKyAgICAgICAg
Y2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOgorICAgICAgICAgICAgcmV0dXJuIEQzRDEwX1JF
UV9URVhUVVJFQ1VCRV9ESU1FTlNJT047CiAKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxf
OV8zOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6Ci0gICAgICBjYXNlIEQzRF9G
RUFUVVJFX0xFVkVMXzlfMTogIHJldHVybiBmYWxzZTsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVS
RV9MRVZFTF85XzM6CisgICAgICAgICAgICByZXR1cm4gRDNEX0ZMOV8zX1JFUV9URVhUVVJFQ1VC
RV9ESU1FTlNJT047CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgorICAgICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMToKKyAgICAgICAgICAgIHJldHVybiBEM0RfRkw5
XzFfUkVRX1RFWFRVUkVDVUJFX0RJTUVOU0lPTjsKIAotICAgICAgZGVmYXVsdDogVU5SRUFDSEFC
TEUoKTsgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQogCi1zdGF0aWMg
c2l6ZV90IEdldE1heGltdW1TaW11bHRhbmVvdXNSZW5kZXJUYXJnZXRzKEQzRF9GRUFUVVJFX0xF
VkVMIGZlYXR1cmVMZXZlbCkKK3NpemVfdCBHZXRNYXhpbXVtMkRUZXh0dXJlQXJyYXlTaXplKEQz
RF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKIHsKLSAgICAvLyBGcm9tIGh0dHA6Ly9tc2Ru
Lm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvZmY0NzYxNTAuYXNw
eCBJRDNEMTFEZXZpY2U6OkNyZWF0ZUlucHV0TGF5b3V0Ci0KICAgICBzd2l0Y2ggKGZlYXR1cmVM
ZXZlbCkKICAgICB7Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6Ci0gICAgICBj
YXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6IHJldHVybiBEM0QxMV9TSU1VTFRBTkVPVVNfUkVO
REVSX1RBUkdFVF9DT1VOVDsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8xOgor
ICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICAgICAgICByZXR1cm4g
RDNEMTFfUkVRX1RFWFRVUkUyRF9BUlJBWV9BWElTX0RJTUVOU0lPTjsKIAotICAgICAgY2FzZSBE
M0RfRkVBVFVSRV9MRVZFTF8xMF8xOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8w
OiByZXR1cm4gRDNEMTBfU0lNVUxUQU5FT1VTX1JFTkRFUl9UQVJHRVRfQ09VTlQ7CisgICAgICAg
IGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF8xMF8wOgorICAgICAgICAgICAgcmV0dXJuIEQzRDEwX1JFUV9URVhUVVJFMkRfQVJSQVlf
QVhJU19ESU1FTlNJT047CiAKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOiAgcmV0
dXJuIEQzRF9GTDlfM19TSU1VTFRBTkVPVVNfUkVOREVSX1RBUkdFVF9DT1VOVDsKLSAgICAgIGNh
c2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85
XzE6ICByZXR1cm4gRDNEX0ZMOV8xX1NJTVVMVEFORU9VU19SRU5ERVJfVEFSR0VUX0NPVU5UOwor
ICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKKyAgICAgICAgY2FzZSBEM0RfRkVB
VFVSRV9MRVZFTF85XzI6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8xOgorICAg
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAg
cmV0dXJuIDA7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQogCi1zdGF0aWMgc2l6ZV90IEdldE1heGlt
dW0yRFRleHR1cmVTaXplKEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKK3NpemVfdCBH
ZXRNYXhpbXVtM0RUZXh0dXJlU2l6ZShEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCiB7
CiAgICAgc3dpdGNoIChmZWF0dXJlTGV2ZWwpCiAgICAgewotICAgICAgY2FzZSBEM0RfRkVBVFVS
RV9MRVZFTF8xMV8xOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOiByZXR1cm4g
RDNEMTFfUkVRX1RFWFRVUkUyRF9VX09SX1ZfRElNRU5TSU9OOworICAgICAgICBjYXNlIEQzRF9G
RUFUVVJFX0xFVkVMXzExXzE6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDoK
KyAgICAgICAgICAgIHJldHVybiBEM0QxMV9SRVFfVEVYVFVSRTNEX1VfVl9PUl9XX0RJTUVOU0lP
TjsKIAotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgotICAgICAgY2FzZSBEM0Rf
RkVBVFVSRV9MRVZFTF8xMF8wOiByZXR1cm4gRDNEMTBfUkVRX1RFWFRVUkUyRF9VX09SX1ZfRElN
RU5TSU9OOworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICAgIGNh
c2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDoKKyAgICAgICAgICAgIHJldHVybiBEM0QxMF9SRVFf
VEVYVFVSRTNEX1VfVl9PUl9XX0RJTUVOU0lPTjsKIAotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF85XzM6ICByZXR1cm4gRDNEX0ZMOV8zX1JFUV9URVhUVVJFMkRfVV9PUl9WX0RJTUVOU0lP
TjsKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgotICAgICAgY2FzZSBEM0RfRkVB
VFVSRV9MRVZFTF85XzE6ICByZXR1cm4gRDNEX0ZMOV8xX1JFUV9URVhUVVJFMkRfVV9PUl9WX0RJ
TUVOU0lPTjsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzM6CisgICAgICAgIGNh
c2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVM
XzlfMToKKyAgICAgICAgICAgIHJldHVybiBEM0RfRkw5XzFfUkVRX1RFWFRVUkUzRF9VX1ZfT1Jf
V19ESU1FTlNJT047CiAKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgcmV0dXJu
IDA7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQogCi1zdGF0aWMgc2l6ZV90IEdldE1heGltdW1DdWJl
TWFwVGV4dHVyZVNpemUoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQorc2l6ZV90IEdl
dE1heGltdW1WaWV3cG9ydFNpemUoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQogewog
ICAgIHN3aXRjaCAoZmVhdHVyZUxldmVsKQogICAgIHsKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfMTFfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDogcmV0dXJuIEQz
RDExX1JFUV9URVhUVVJFQ1VCRV9ESU1FTlNJT047CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfMTFfMToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOgorICAgICAg
ICAgICAgcmV0dXJuIEQzRDExX1ZJRVdQT1JUX0JPVU5EU19NQVg7CiAKLSAgICAgIGNhc2UgRDNE
X0ZFQVRVUkVfTEVWRUxfMTBfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDog
cmV0dXJuIEQzRDEwX1JFUV9URVhUVVJFQ1VCRV9ESU1FTlNJT047CisgICAgICAgIGNhc2UgRDNE
X0ZFQVRVUkVfTEVWRUxfMTBfMToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8w
OgorICAgICAgICAgICAgcmV0dXJuIEQzRDEwX1ZJRVdQT1JUX0JPVU5EU19NQVg7CiAKLSAgICAg
IGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOiAgcmV0dXJuIEQzRF9GTDlfM19SRVFfVEVYVFVS
RUNVQkVfRElNRU5TSU9OOwotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6Ci0gICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMTogIHJldHVybiBEM0RfRkw5XzFfUkVRX1RFWFRV
UkVDVUJFX0RJTUVOU0lPTjsKKyAgICAgICAgLy8gTm8gY29uc3RhbnRzIGZvciBEM0QxMSBGZWF0
dXJlIExldmVsIDkgdmlld3BvcnQgc2l6ZSBsaW1pdHMsIHVzZSB0aGUgbWF4aW11bQorICAgICAg
ICAvLyB0ZXh0dXJlIHNpemVzCisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgor
ICAgICAgICAgICAgcmV0dXJuIEQzRF9GTDlfM19SRVFfVEVYVFVSRTJEX1VfT1JfVl9ESU1FTlNJ
T047CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgorICAgICAgICBjYXNlIEQz
RF9GRUFUVVJFX0xFVkVMXzlfMToKKyAgICAgICAgICAgIHJldHVybiBEM0RfRkw5XzFfUkVRX1RF
WFRVUkUyRF9VX09SX1ZfRElNRU5TSU9OOwogCi0gICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgp
OyAgICAgIHJldHVybiAwOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KIH0KIAotc3RhdGljIHNpemVfdCBH
ZXRNYXhpbXVtMkRUZXh0dXJlQXJyYXlTaXplKEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZl
bCkKK3NpemVfdCBHZXRNYXhpbXVtRHJhd0luZGV4ZWRJbmRleENvdW50KEQzRF9GRUFUVVJFX0xF
VkVMIGZlYXR1cmVMZXZlbCkKIHsKKyAgICAvLyBEM0QxMSBhbGxvd3MgdXAgdG8gMl4zMiBlbGVt
ZW50cywgYnV0IHdlIHJlcG9ydCBtYXggc2lnbmVkIGludCBmb3IgY29udmVuaWVuY2Ugc2luY2UK
KyAgICAvLyB0aGF0J3Mgd2hhdCdzCisgICAgLy8gcmV0dXJuZWQgZnJvbSBnbEdldEludGVnZXIK
KyAgICBzdGF0aWNfYXNzZXJ0KEQzRDExX1JFUV9EUkFXSU5ERVhFRF9JTkRFWF9DT1VOVF8yX1RP
X0VYUCA9PSAzMiwKKyAgICAgICAgICAgICAgICAgICJVbmV4cGVjdGVkIEQzRDExIGNvbnN0YW50
IHZhbHVlLiIpOworICAgIHN0YXRpY19hc3NlcnQoRDNEMTBfUkVRX0RSQVdJTkRFWEVEX0lOREVY
X0NPVU5UXzJfVE9fRVhQID09IDMyLAorICAgICAgICAgICAgICAgICAgIlVuZXhwZWN0ZWQgRDNE
MTEgY29uc3RhbnQgdmFsdWUuIik7CisKICAgICBzd2l0Y2ggKGZlYXR1cmVMZXZlbCkKICAgICB7
Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6Ci0gICAgICBjYXNlIEQzRF9GRUFU
VVJFX0xFVkVMXzExXzA6IHJldHVybiBEM0QxMV9SRVFfVEVYVFVSRTJEX0FSUkFZX0FYSVNfRElN
RU5TSU9OOwotCi0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6Ci0gICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6IHJldHVybiBEM0QxMF9SRVFfVEVYVFVSRTJEX0FSUkFZ
X0FYSVNfRElNRU5TSU9OOworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6Cisg
ICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDoKKyAgICAgICAgY2FzZSBEM0RfRkVB
VFVSRV9MRVZFTF8xMF8xOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxHTGludD46Om1heCgpOwogCi0g
ICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfOV8yOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6ICByZXR1cm4gMDsK
KyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzM6CisgICAgICAgIGNhc2UgRDNEX0ZF
QVRVUkVfTEVWRUxfOV8yOgorICAgICAgICAgICAgcmV0dXJuIEQzRF9GTDlfMl9JQV9QUklNSVRJ
VkVfTUFYX0NPVU5UOworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMToKKyAgICAg
ICAgICAgIHJldHVybiBEM0RfRkw5XzFfSUFfUFJJTUlUSVZFX01BWF9DT1VOVDsKIAotICAgICAg
ZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgICAgICByZXR1cm4gMDsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9
CiB9CiAKLXN0YXRpYyBzaXplX3QgR2V0TWF4aW11bTNEVGV4dHVyZVNpemUoRDNEX0ZFQVRVUkVf
TEVWRUwgZmVhdHVyZUxldmVsKQorc2l6ZV90IEdldE1heGltdW1EcmF3VmVydGV4Q291bnQoRDNE
X0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQogeworICAgIC8vIEQzRDExIGFsbG93cyB1cCB0
byAyXjMyIGVsZW1lbnRzLCBidXQgd2UgcmVwb3J0IG1heCBzaWduZWQgaW50IGZvciBjb252ZW5p
ZW5jZSBzaW5jZQorICAgIC8vIHRoYXQncyB3aGF0J3MKKyAgICAvLyByZXR1cm5lZCBmcm9tIGds
R2V0SW50ZWdlcgorICAgIHN0YXRpY19hc3NlcnQoRDNEMTFfUkVRX0RSQVdfVkVSVEVYX0NPVU5U
XzJfVE9fRVhQID09IDMyLCAiVW5leHBlY3RlZCBEM0QxMSBjb25zdGFudCB2YWx1ZS4iKTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KEQzRDEwX1JFUV9EUkFXX1ZFUlRFWF9DT1VOVF8yX1RPX0VYUCA9PSAz
MiwgIlVuZXhwZWN0ZWQgRDNEMTEgY29uc3RhbnQgdmFsdWUuIik7CisKICAgICBzd2l0Y2ggKGZl
YXR1cmVMZXZlbCkKICAgICB7Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6Ci0g
ICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6IHJldHVybiBEM0QxMV9SRVFfVEVYVFVS
RTNEX1VfVl9PUl9XX0RJTUVOU0lPTjsKLQotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8x
MF8xOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOiByZXR1cm4gRDNEMTBfUkVR
X1RFWFRVUkUzRF9VX1ZfT1JfV19ESU1FTlNJT047CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfMTFfMToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOgorICAgICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfMTBfMDoKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPEdMaW50
Pjo6bWF4KCk7CiAKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgotICAgICAgY2Fz
ZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlf
MTogIHJldHVybiBEM0RfRkw5XzFfUkVRX1RFWFRVUkUzRF9VX1ZfT1JfV19ESU1FTlNJT047Cisg
ICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgorICAgICAgICBjYXNlIEQzRF9GRUFU
VVJFX0xFVkVMXzlfMjoKKyAgICAgICAgICAgIHJldHVybiBEM0RfRkw5XzJfSUFfUFJJTUlUSVZF
X01BWF9DT1VOVDsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6CisgICAgICAg
ICAgICByZXR1cm4gRDNEX0ZMOV8xX0lBX1BSSU1JVElWRV9NQVhfQ09VTlQ7CiAKLSAgICAgIGRl
ZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgcmV0dXJuIDA7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
fQogCi1zdGF0aWMgc2l6ZV90IEdldE1heGltdW1WaWV3cG9ydFNpemUoRDNEX0ZFQVRVUkVfTEVW
RUwgZmVhdHVyZUxldmVsKQorc2l6ZV90IEdldE1heGltdW1WZXJ0ZXhJbnB1dFNsb3RzKEQzRF9G
RUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKIHsKICAgICBzd2l0Y2ggKGZlYXR1cmVMZXZlbCkK
ICAgICB7Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6Ci0gICAgICBjYXNlIEQz
RF9GRUFUVVJFX0xFVkVMXzExXzA6IHJldHVybiBEM0QxMV9WSUVXUE9SVF9CT1VORFNfTUFYOwor
ICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6CisgICAgICAgIGNhc2UgRDNEX0ZF
QVRVUkVfTEVWRUxfMTFfMDoKKyAgICAgICAgICAgIHJldHVybiBEM0QxMV9TVEFOREFSRF9WRVJU
RVhfRUxFTUVOVF9DT1VOVDsKIAotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgot
ICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOiByZXR1cm4gRDNEMTBfVklFV1BPUlRf
Qk9VTkRTX01BWDsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgorICAgICAg
ICAgICAgcmV0dXJuIEQzRDEwXzFfU1RBTkRBUkRfVkVSVEVYX0VMRU1FTlRfQ09VTlQ7CisgICAg
ICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDoKKyAgICAgICAgICAgIHJldHVybiBEM0Qx
MF9TVEFOREFSRF9WRVJURVhfRUxFTUVOVF9DT1VOVDsKIAotICAgICAgLy8gTm8gY29uc3RhbnRz
IGZvciBEM0QxMSBGZWF0dXJlIExldmVsIDkgdmlld3BvcnQgc2l6ZSBsaW1pdHMsIHVzZSB0aGUg
bWF4aW11bSB0ZXh0dXJlIHNpemVzCi0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzog
IHJldHVybiBEM0RfRkw5XzNfUkVRX1RFWFRVUkUyRF9VX09SX1ZfRElNRU5TSU9OOwotICAgICAg
Y2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVM
XzlfMTogIHJldHVybiBEM0RfRkw5XzFfUkVRX1RFWFRVUkUyRF9VX09SX1ZfRElNRU5TSU9OOwor
ICAgICAgICAvLyBGcm9tIGh0dHA6Ly9odHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xp
YnJhcnkvd2luZG93cy9kZXNrdG9wL2ZmNDc2ODc2LmFzcHgKKyAgICAgICAgLy8gIk1heCBJbnB1
dCBTbG90cyIKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzM6CisgICAgICAgIGNh
c2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVM
XzlfMToKKyAgICAgICAgICAgIHJldHVybiAxNjsKIAotICAgICAgZGVmYXVsdDogVU5SRUFDSEFC
TEUoKTsgICAgICByZXR1cm4gMDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CiB9CiAKLXN0YXRpYyBzaXpl
X3QgR2V0TWF4aW11bURyYXdJbmRleGVkSW5kZXhDb3VudChEM0RfRkVBVFVSRV9MRVZFTCBmZWF0
dXJlTGV2ZWwpCitzaXplX3QgR2V0TWF4aW11bVZlcnRleFVuaWZvcm1WZWN0b3JzKEQzRF9GRUFU
VVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKIHsKLSAgICAvLyBEM0QxMSBhbGxvd3MgdXAgdG8gMl4z
MiBlbGVtZW50cywgYnV0IHdlIHJlcG9ydCBtYXggc2lnbmVkIGludCBmb3IgY29udmVuaWVuY2Ug
c2luY2UgdGhhdCdzIHdoYXQncwotICAgIC8vIHJldHVybmVkIGZyb20gZ2xHZXRJbnRlZ2VyCi0g
ICAgc3RhdGljX2Fzc2VydChEM0QxMV9SRVFfRFJBV0lOREVYRURfSU5ERVhfQ09VTlRfMl9UT19F
WFAgPT0gMzIsICJVbmV4cGVjdGVkIEQzRDExIGNvbnN0YW50IHZhbHVlLiIpOwotICAgIHN0YXRp
Y19hc3NlcnQoRDNEMTBfUkVRX0RSQVdJTkRFWEVEX0lOREVYX0NPVU5UXzJfVE9fRVhQID09IDMy
LCAiVW5leHBlY3RlZCBEM0QxMSBjb25zdGFudCB2YWx1ZS4iKTsKLQogICAgIHN3aXRjaCAoZmVh
dHVyZUxldmVsKQogICAgIHsKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKLSAg
ICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfMTBfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDogcmV0dXJuIHN0
ZDo6bnVtZXJpY19saW1pdHM8R0xpbnQ+OjptYXgoKTsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVS
RV9MRVZFTF8xMV8xOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAg
ICAgICAgICByZXR1cm4gRDNEMTFfUkVRX0NPTlNUQU5UX0JVRkZFUl9FTEVNRU5UX0NPVU5UOwog
Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKLSAgICAgIGNhc2UgRDNEX0ZFQVRV
UkVfTEVWRUxfOV8yOiAgcmV0dXJuIEQzRF9GTDlfMl9JQV9QUklNSVRJVkVfTUFYX0NPVU5UOwot
ICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6ICByZXR1cm4gRDNEX0ZMOV8xX0lBX1BS
SU1JVElWRV9NQVhfQ09VTlQ7CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToK
KyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOgorICAgICAgICAgICAgcmV0dXJu
IEQzRDEwX1JFUV9DT05TVEFOVF9CVUZGRVJfRUxFTUVOVF9DT1VOVDsKKworICAgICAgICAvLyBG
cm9tIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0
b3AvZmY0NzYxNDkuYXNweAorICAgICAgICAvLyBJRDNEMTFEZXZpY2VDb250ZXh0OjpWU1NldENv
bnN0YW50QnVmZmVycworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKKyAgICAg
ICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfOV8xOgorICAgICAgICAgICAgcmV0dXJuIDI1NSAtIGQzZDExX2dsOjpHZXRSZXNlcnZl
ZFZlcnRleFVuaWZvcm1WZWN0b3JzKGZlYXR1cmVMZXZlbCk7CiAKLSAgICAgIGRlZmF1bHQ6IFVO
UkVBQ0hBQkxFKCk7ICAgICAgcmV0dXJuIDA7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQogCi1zdGF0
aWMgc2l6ZV90IEdldE1heGltdW1EcmF3VmVydGV4Q291bnQoRDNEX0ZFQVRVUkVfTEVWRUwgZmVh
dHVyZUxldmVsKQorc2l6ZV90IEdldE1heGltdW1WZXJ0ZXhVbmlmb3JtQmxvY2tzKEQzRF9GRUFU
VVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKIHsKLSAgICAvLyBEM0QxMSBhbGxvd3MgdXAgdG8gMl4z
MiBlbGVtZW50cywgYnV0IHdlIHJlcG9ydCBtYXggc2lnbmVkIGludCBmb3IgY29udmVuaWVuY2Ug
c2luY2UgdGhhdCdzIHdoYXQncwotICAgIC8vIHJldHVybmVkIGZyb20gZ2xHZXRJbnRlZ2VyCi0g
ICAgc3RhdGljX2Fzc2VydChEM0QxMV9SRVFfRFJBV19WRVJURVhfQ09VTlRfMl9UT19FWFAgPT0g
MzIsICJVbmV4cGVjdGVkIEQzRDExIGNvbnN0YW50IHZhbHVlLiIpOwotICAgIHN0YXRpY19hc3Nl
cnQoRDNEMTBfUkVRX0RSQVdfVkVSVEVYX0NPVU5UXzJfVE9fRVhQID09IDMyLCAiVW5leHBlY3Rl
ZCBEM0QxMSBjb25zdGFudCB2YWx1ZS4iKTsKLQogICAgIHN3aXRjaCAoZmVhdHVyZUxldmVsKQog
ICAgIHsKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKLSAgICAgIGNhc2UgRDNE
X0ZFQVRVUkVfTEVWRUxfMTFfMDoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToK
LSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDogcmV0dXJuIHN0ZDo6bnVtZXJpY19s
aW1pdHM8R0xpbnQ+OjptYXgoKTsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8x
OgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICAgICAgICByZXR1
cm4gRDNEMTFfQ09NTU9OU0hBREVSX0NPTlNUQU5UX0JVRkZFUl9BUElfU0xPVF9DT1VOVCAtCisg
ICAgICAgICAgICAgICAgICAgZDNkMTE6OlJFU0VSVkVEX0NPTlNUQU5UX0JVRkZFUl9TTE9UX0NP
VU5UOworCisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKKyAgICAgICAgY2Fz
ZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOgorICAgICAgICAgICAgcmV0dXJuIEQzRDEwX0NPTU1P
TlNIQURFUl9DT05TVEFOVF9CVUZGRVJfQVBJX1NMT1RfQ09VTlQgLQorICAgICAgICAgICAgICAg
ICAgIGQzZDExOjpSRVNFUlZFRF9DT05TVEFOVF9CVUZGRVJfU0xPVF9DT1VOVDsKIAotICAgICAg
Y2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzM6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVM
XzlfMjogIHJldHVybiBEM0RfRkw5XzJfSUFfUFJJTUlUSVZFX01BWF9DT1VOVDsKLSAgICAgIGNh
c2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8xOiAgcmV0dXJuIEQzRF9GTDlfMV9JQV9QUklNSVRJVkVf
TUFYX0NPVU5UOworICAgICAgICAvLyBVbmlmb3JtIGJsb2NrcyBub3Qgc3VwcG9ydGVkIG9uIEQz
RDExIEZlYXR1cmUgTGV2ZWwgOQorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoK
KyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6CisgICAgICAgIGNhc2UgRDNEX0ZF
QVRVUkVfTEVWRUxfOV8xOgorICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgIGRlZmF1bHQ6
IFVOUkVBQ0hBQkxFKCk7ICAgICAgcmV0dXJuIDA7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQogCi1z
dGF0aWMgc2l6ZV90IEdldE1heGltdW1WZXJ0ZXhJbnB1dFNsb3RzKEQzRF9GRUFUVVJFX0xFVkVM
IGZlYXR1cmVMZXZlbCkKK3NpemVfdCBHZXRSZXNlcnZlZFZlcnRleE91dHB1dFZlY3RvcnMoRDNE
X0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQogeworICAgIC8vIEFjY29yZGluZyB0byBUaGUg
T3BlbkdMIEVTIFNoYWRpbmcgTGFuZ3VhZ2Ugc3BlY2lmaWNhdGlvbnMKKyAgICAvLyAoTGFuZ3Vh
Z2UgVmVyc2lvbiAxLjAwIHNlY3Rpb24gMTAuMTYsIExhbmd1YWdlIFZlcnNpb24gMy4xMCBzZWN0
aW9uIDEyLjIxKQorICAgIC8vIGJ1aWx0LWluIHNwZWNpYWwgdmFyaWFibGVzIChlLmcuIGdsX0Zy
YWdDb29yZCwgb3IgZ2xfUG9pbnRDb29yZCkKKyAgICAvLyB3aGljaCBhcmUgc3RhdGljYWxseSB1
c2VkIGluIHRoZSBzaGFkZXIgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSB2YXJpYWJsZSBwYWNr
aW5nCisgICAgLy8gYWxnb3JpdGhtLgorICAgIC8vIFRoZXJlZm9yZSwgd2Ugc2hvdWxkIG5vdCBy
ZXNlcnZlIG91dHB1dCB2ZWN0b3JzIGZvciB0aGVtLgorCiAgICAgc3dpdGNoIChmZWF0dXJlTGV2
ZWwpCiAgICAgewotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8xOgotICAgICAgY2Fz
ZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOiByZXR1cm4gRDNEMTFfU1RBTkRBUkRfVkVSVEVYX0VM
RU1FTlRfQ09VTlQ7Ci0KLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMTogcmV0dXJu
IEQzRDEwXzFfU1RBTkRBUkRfVkVSVEVYX0VMRU1FTlRfQ09VTlQ7Ci0gICAgICBjYXNlIEQzRF9G
RUFUVVJFX0xFVkVMXzEwXzA6IHJldHVybiBEM0QxMF9TVEFOREFSRF9WRVJURVhfRUxFTUVOVF9D
T1VOVDsKKyAgICAgICAgLy8gV2UgbXVzdCByZXNlcnZlIG9uZSBvdXRwdXQgdmVjdG9yIGZvciBk
eF9Qb3NpdGlvbi4KKyAgICAgICAgLy8gV2UgYWxzbyByZXNlcnZlIG9uZSBmb3IgZ2xfUG9zaXRp
b24sIHdoaWNoIHdlIHVuY29uZGl0aW9uYWxseSBvdXRwdXQgb24gRmVhdHVyZQorICAgICAgICAv
LyBMZXZlbHMgMTBfMCssCisgICAgICAgIC8vIGV2ZW4gaWYgaXQncyB1bnVzZWQgaW4gdGhlIHNo
YWRlciAoZS5nLiBmb3IgdHJhbnNmb3JtIGZlZWRiYWNrKS4gVE9ETzogVGhpcyBjb3VsZAorICAg
ICAgICAvLyBiZSBpbXByb3ZlZC4KKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8x
OgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICAgIGNhc2UgRDNE
X0ZFQVRVUkVfTEVWRUxfMTBfMToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8w
OgorICAgICAgICAgICAgcmV0dXJuIDI7CiAKLSAgICAgIC8vIEZyb20gaHR0cDovL2h0dHA6Ly9t
c2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvZmY0NzY4NzYu
YXNweCAiTWF4IElucHV0IFNsb3RzIgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzM6
Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMjoKLSAgICAgIGNhc2UgRDNEX0ZFQVRV
UkVfTEVWRUxfOV8xOiAgcmV0dXJuIDE2OworICAgICAgICAvLyBKdXN0IHJlc2VydmUgZHhfUG9z
aXRpb24gb24gRmVhdHVyZSBMZXZlbCA5LCBzaW5jZSB3ZSBkb24ndCBldmVyIG5lZWQgdG8gb3V0
cHV0CisgICAgICAgIC8vIGdsX1Bvc2l0aW9uLgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xF
VkVMXzlfMzoKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6CisgICAgICAgIGNh
c2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8xOgorICAgICAgICAgICAgcmV0dXJuIDE7CiAKLSAgICAg
IGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgcmV0dXJuIDA7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogfQogCi1zdGF0aWMgc2l6ZV90IEdldE1heGltdW1WZXJ0ZXhVbmlmb3JtVmVjdG9ycyhEM0Rf
RkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCitzaXplX3QgR2V0TWF4aW11bVZlcnRleE91dHB1
dFZlY3RvcnMoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQogewotICAgIC8vIFRPRE8o
Z2VvZmZsYW5nKTogUmVtb3ZlIGhhcmQtY29kZWQgbGltaXQgb25jZSB0aGUgZ2wtdW5pZm9ybS1h
cnJheXMgdGVzdCBjYW4gcGFzcworICAgIHN0YXRpY19hc3NlcnQoZ2w6OklNUExFTUVOVEFUSU9O
X01BWF9WQVJZSU5HX1ZFQ1RPUlMgPT0gRDNEMTFfVlNfT1VUUFVUX1JFR0lTVEVSX0NPVU5ULAor
ICAgICAgICAgICAgICAgICAgIlVuZXhwZWN0ZWQgRDNEMTEgY29uc3RhbnQgdmFsdWUuIik7CisK
ICAgICBzd2l0Y2ggKGZlYXR1cmVMZXZlbCkKICAgICB7Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJF
X0xFVkVMXzExXzE6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6IHJldHVybiAx
MDI0OyAvLyBEM0QxMV9SRVFfQ09OU1RBTlRfQlVGRkVSX0VMRU1FTlRfQ09VTlQ7CisgICAgICAg
IGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF8xMV8wOgorICAgICAgICAgICAgcmV0dXJuIEQzRDExX1ZTX09VVFBVVF9SRUdJU1RFUl9D
T1VOVCAtIEdldFJlc2VydmVkVmVydGV4T3V0cHV0VmVjdG9ycyhmZWF0dXJlTGV2ZWwpOwogCi0g
ICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJF
X0xFVkVMXzEwXzA6IHJldHVybiAxMDI0OyAvLyBEM0QxMF9SRVFfQ09OU1RBTlRfQlVGRkVSX0VM
RU1FTlRfQ09VTlQ7CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKKyAgICAg
ICAgICAgIHJldHVybiBEM0QxMF8xX1ZTX09VVFBVVF9SRUdJU1RFUl9DT1VOVCAtIEdldFJlc2Vy
dmVkVmVydGV4T3V0cHV0VmVjdG9ycyhmZWF0dXJlTGV2ZWwpOworICAgICAgICBjYXNlIEQzRF9G
RUFUVVJFX0xFVkVMXzEwXzA6CisgICAgICAgICAgICByZXR1cm4gRDNEMTBfVlNfT1VUUFVUX1JF
R0lTVEVSX0NPVU5UIC0gR2V0UmVzZXJ2ZWRWZXJ0ZXhPdXRwdXRWZWN0b3JzKGZlYXR1cmVMZXZl
bCk7CiAKLSAgICAgIC8vIEZyb20gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJy
YXJ5L3dpbmRvd3MvZGVza3RvcC9mZjQ3NjE0OS5hc3B4IElEM0QxMURldmljZUNvbnRleHQ6OlZT
U2V0Q29uc3RhbnRCdWZmZXJzCi0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKLSAg
ICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF85XzE6Ci0gICAgICAgICAgcmV0dXJuIDI1NSAtIGQzZDExX2dsOjpHZXRSZXNlcnZlZFZl
cnRleFVuaWZvcm1WZWN0b3JzKGZlYXR1cmVMZXZlbCk7CisgICAgICAgIC8vIFVzZSBTaGFkZXIg
TW9kZWwgMi5YIGxpbWl0cworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKKyAg
ICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRV
UkVfTEVWRUxfOV8xOgorICAgICAgICAgICAgcmV0dXJuIDggLSBHZXRSZXNlcnZlZFZlcnRleE91
dHB1dFZlY3RvcnMoZmVhdHVyZUxldmVsKTsKIAotICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUo
KTsgICAgICByZXR1cm4gMDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hB
QkxFKCk7CisgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CiB9CiAKLXN0YXRpYyBzaXplX3Qg
R2V0TWF4aW11bVZlcnRleFVuaWZvcm1CbG9ja3MoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxl
dmVsKQorc2l6ZV90IEdldE1heGltdW1WZXJ0ZXhUZXh0dXJlVW5pdHMoRDNEX0ZFQVRVUkVfTEVW
RUwgZmVhdHVyZUxldmVsKQogewogICAgIHN3aXRjaCAoZmVhdHVyZUxldmVsKQogICAgIHsKLSAg
ICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfMTFfMDoKLSAgICAgICAgICByZXR1cm4gRDNEMTFfQ09NTU9OU0hBREVSX0NPTlNUQU5U
X0JVRkZFUl9BUElfU0xPVF9DT1VOVCAtCi0gICAgICAgICAgICAgICAgIGQzZDExOjpSRVNFUlZF
RF9DT05TVEFOVF9CVUZGRVJfU0xPVF9DT1VOVDsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF8xMV8xOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICAg
ICAgICByZXR1cm4gRDNEMTFfQ09NTU9OU0hBREVSX1NBTVBMRVJfU0xPVF9DT1VOVDsKIAotICAg
ICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF8xMF8wOgotICAgICAgICAgIHJldHVybiBEM0QxMF9DT01NT05TSEFERVJfQ09OU1RBTlRf
QlVGRkVSX0FQSV9TTE9UX0NPVU5UIC0KLSAgICAgICAgICAgICAgICAgZDNkMTE6OlJFU0VSVkVE
X0NPTlNUQU5UX0JVRkZFUl9TTE9UX0NPVU5UOworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xF
VkVMXzEwXzE6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDoKKyAgICAgICAg
ICAgIHJldHVybiBEM0QxMF9DT01NT05TSEFERVJfU0FNUExFUl9TTE9UX0NPVU5UOwogCi0gICAg
ICAvLyBVbmlmb3JtIGJsb2NrcyBub3Qgc3VwcG9ydGVkIG9uIEQzRDExIEZlYXR1cmUgTGV2ZWwg
OQotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzM6Ci0gICAgICBjYXNlIEQzRF9GRUFU
VVJFX0xFVkVMXzlfMjoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8xOiAgcmV0dXJu
IDA7CisgICAgICAgIC8vIFZlcnRleCB0ZXh0dXJlcyBub3Qgc3VwcG9ydGVkIG9uIEQzRDExIEZl
YXR1cmUgTGV2ZWwgOSBhY2NvcmRpbmcgdG8KKyAgICAgICAgLy8gaHR0cDovL21zZG4ubWljcm9z
b2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9mZjQ3NjE0OS5hc3B4CisgICAg
ICAgIC8vIElEM0QxMURldmljZUNvbnRleHQ6OlZTU2V0U2FtcGxlcnMgYW5kIElEM0QxMURldmlj
ZUNvbnRleHQ6OlZTU2V0U2hhZGVyUmVzb3VyY2VzCisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfOV8zOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMjoKKyAgICAgICAg
Y2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6CisgICAgICAgICAgICByZXR1cm4gMDsKIAotICAg
ICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgICAgICByZXR1cm4gMDsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gMDsKICAg
ICB9CiB9CiAKLXN0YXRpYyBzaXplX3QgR2V0UmVzZXJ2ZWRWZXJ0ZXhPdXRwdXRWZWN0b3JzKEQz
RF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKK3NpemVfdCBHZXRNYXhpbXVtUGl4ZWxVbmlm
b3JtVmVjdG9ycyhEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCiB7Ci0gICAgLy8gQWNj
b3JkaW5nIHRvIFRoZSBPcGVuR0wgRVMgU2hhZGluZyBMYW5ndWFnZSBzcGVjaWZpY2F0aW9ucyAK
LSAgICAvLyAoTGFuZ3VhZ2UgVmVyc2lvbiAxLjAwIHNlY3Rpb24gMTAuMTYsIExhbmd1YWdlIFZl
cnNpb24gMy4xMCBzZWN0aW9uIDEyLjIxKQotICAgIC8vIGJ1aWx0LWluIHNwZWNpYWwgdmFyaWFi
bGVzIChlLmcuIGdsX0ZyYWdDb29yZCwgb3IgZ2xfUG9pbnRDb29yZCkKLSAgICAvLyB3aGljaCBh
cmUgc3RhdGljYWxseSB1c2VkIGluIHRoZSBzaGFkZXIgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRo
ZSB2YXJpYWJsZSBwYWNraW5nIGFsZ29yaXRobS4KLSAgICAvLyBUaGVyZWZvcmUsIHdlIHNob3Vs
ZCBub3QgcmVzZXJ2ZSBvdXRwdXQgdmVjdG9ycyBmb3IgdGhlbS4KLQorICAgIC8vIFRPRE8oZ2Vv
ZmZsYW5nKTogUmVtb3ZlIGhhcmQtY29kZWQgbGltaXQgb25jZSB0aGUgZ2wtdW5pZm9ybS1hcnJh
eXMgdGVzdCBjYW4gcGFzcwogICAgIHN3aXRjaCAoZmVhdHVyZUxldmVsKQogICAgIHsKLSAgICAg
IC8vIFdlIG11c3QgcmVzZXJ2ZSBvbmUgb3V0cHV0IHZlY3RvciBmb3IgZHhfUG9zaXRpb24uCi0g
ICAgICAvLyBXZSBhbHNvIHJlc2VydmUgb25lIGZvciBnbF9Qb3NpdGlvbiwgd2hpY2ggd2UgdW5j
b25kaXRpb25hbGx5IG91dHB1dCBvbiBGZWF0dXJlIExldmVscyAxMF8wKywKLSAgICAgIC8vIGV2
ZW4gaWYgaXQncyB1bnVzZWQgaW4gdGhlIHNoYWRlciAoZS5nLiBmb3IgdHJhbnNmb3JtIGZlZWRi
YWNrKS4gVE9ETzogVGhpcyBjb3VsZCBiZSBpbXByb3ZlZC4KLSAgICAgIGNhc2UgRDNEX0ZFQVRV
UkVfTEVWRUxfMTFfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDoKLSAgICAg
IGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVW
RUxfMTBfMDogcmV0dXJuIDI7CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToK
KyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOgorICAgICAgICAgICAgcmV0dXJu
IDEwMjQ7ICAvLyBEM0QxMV9SRVFfQ09OU1RBTlRfQlVGRkVSX0VMRU1FTlRfQ09VTlQ7CisKKyAg
ICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgorICAgICAgICBjYXNlIEQzRF9GRUFU
VVJFX0xFVkVMXzEwXzA6CisgICAgICAgICAgICByZXR1cm4gMTAyNDsgIC8vIEQzRDEwX1JFUV9D
T05TVEFOVF9CVUZGRVJfRUxFTUVOVF9DT1VOVDsKIAotICAgICAgLy8gSnVzdCByZXNlcnZlIGR4
X1Bvc2l0aW9uIG9uIEZlYXR1cmUgTGV2ZWwgOSwgc2luY2Ugd2UgZG9uJ3QgZXZlciBuZWVkIHRv
IG91dHB1dCBnbF9Qb3NpdGlvbi4KLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgot
ICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJF
X0xFVkVMXzlfMTogIHJldHVybiAxOworICAgICAgICAvLyBGcm9tIGh0dHA6Ly9tc2RuLm1pY3Jv
c29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvZmY0NzYxNDkuYXNweAorICAg
ICAgICAvLyBJRDNEMTFEZXZpY2VDb250ZXh0OjpQU1NldENvbnN0YW50QnVmZmVycworICAgICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF85XzI6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8xOgorICAgICAgICAg
ICAgcmV0dXJuIDMyIC0gZDNkMTFfZ2w6OkdldFJlc2VydmVkRnJhZ21lbnRVbmlmb3JtVmVjdG9y
cyhmZWF0dXJlTGV2ZWwpOwogCi0gICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyAgICAgIHJl
dHVybiAwOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICAgICAgICAgIHJldHVybiAwOwogICAgIH0KLQotICAgIHJldHVybiAxOwogfQogCi1zdGF0aWMg
c2l6ZV90IEdldE1heGltdW1WZXJ0ZXhPdXRwdXRWZWN0b3JzKEQzRF9GRUFUVVJFX0xFVkVMIGZl
YXR1cmVMZXZlbCkKK3NpemVfdCBHZXRNYXhpbXVtUGl4ZWxVbmlmb3JtQmxvY2tzKEQzRF9GRUFU
VVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKIHsKLSAgICBzdGF0aWNfYXNzZXJ0KGdsOjpJTVBMRU1F
TlRBVElPTl9NQVhfVkFSWUlOR19WRUNUT1JTID09IEQzRDExX1ZTX09VVFBVVF9SRUdJU1RFUl9D
T1VOVCwgIlVuZXhwZWN0ZWQgRDNEMTEgY29uc3RhbnQgdmFsdWUuIik7Ci0KICAgICBzd2l0Y2gg
KGZlYXR1cmVMZXZlbCkKICAgICB7Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6
Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6IHJldHVybiBEM0QxMV9WU19PVVRQ
VVRfUkVHSVNURVJfQ09VTlQgLSBHZXRSZXNlcnZlZFZlcnRleE91dHB1dFZlY3RvcnMoZmVhdHVy
ZUxldmVsKTsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8xOgorICAgICAgICBj
YXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICAgICAgICByZXR1cm4gRDNEMTFfQ09N
TU9OU0hBREVSX0NPTlNUQU5UX0JVRkZFUl9BUElfU0xPVF9DT1VOVCAtCisgICAgICAgICAgICAg
ICAgICAgZDNkMTE6OlJFU0VSVkVEX0NPTlNUQU5UX0JVRkZFUl9TTE9UX0NPVU5UOwogCi0gICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6IHJldHVybiBEM0QxMF8xX1ZTX09VVFBVVF9S
RUdJU1RFUl9DT1VOVCAtIEdldFJlc2VydmVkVmVydGV4T3V0cHV0VmVjdG9ycyhmZWF0dXJlTGV2
ZWwpOwotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOiByZXR1cm4gRDNEMTBfVlNf
T1VUUFVUX1JFR0lTVEVSX0NPVU5UIC0gR2V0UmVzZXJ2ZWRWZXJ0ZXhPdXRwdXRWZWN0b3JzKGZl
YXR1cmVMZXZlbCk7CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKKyAgICAg
ICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOgorICAgICAgICAgICAgcmV0dXJuIEQzRDEw
X0NPTU1PTlNIQURFUl9DT05TVEFOVF9CVUZGRVJfQVBJX1NMT1RfQ09VTlQgLQorICAgICAgICAg
ICAgICAgICAgIGQzZDExOjpSRVNFUlZFRF9DT05TVEFOVF9CVUZGRVJfU0xPVF9DT1VOVDsKIAot
ICAgICAgLy8gVXNlIFNoYWRlciBNb2RlbCAyLlggbGltaXRzCi0gICAgICBjYXNlIEQzRF9GRUFU
VVJFX0xFVkVMXzlfMzoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgotICAgICAg
Y2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6ICByZXR1cm4gOCAtIEdldFJlc2VydmVkVmVydGV4
T3V0cHV0VmVjdG9ycyhmZWF0dXJlTGV2ZWwpOworICAgICAgICAvLyBVbmlmb3JtIGJsb2NrcyBu
b3Qgc3VwcG9ydGVkIG9uIEQzRDExIEZlYXR1cmUgTGV2ZWwgOQorICAgICAgICBjYXNlIEQzRF9G
RUFUVVJFX0xFVkVMXzlfMzoKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6Cisg
ICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8xOgorICAgICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgcmV0dXJuIDA7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogfQogCi1zdGF0aWMgc2l6ZV90IEdldE1heGltdW1WZXJ0ZXhUZXh0dXJlVW5p
dHMoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQorc2l6ZV90IEdldE1heGltdW1QaXhl
bElucHV0VmVjdG9ycyhEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCiB7CiAgICAgc3dp
dGNoIChmZWF0dXJlTGV2ZWwpCiAgICAgewotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8x
MV8xOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOiByZXR1cm4gRDNEMTFfQ09N
TU9OU0hBREVSX1NBTVBMRVJfU0xPVF9DT1VOVDsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF8xMV8xOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICAg
ICAgICByZXR1cm4gRDNEMTFfUFNfSU5QVVRfUkVHSVNURVJfQ09VTlQgLSBHZXRSZXNlcnZlZFZl
cnRleE91dHB1dFZlY3RvcnMoZmVhdHVyZUxldmVsKTsKIAotICAgICAgY2FzZSBEM0RfRkVBVFVS
RV9MRVZFTF8xMF8xOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOiByZXR1cm4g
RDNEMTBfQ09NTU9OU0hBREVSX1NBTVBMRVJfU0xPVF9DT1VOVDsKKyAgICAgICAgY2FzZSBEM0Rf
RkVBVFVSRV9MRVZFTF8xMF8xOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6
CisgICAgICAgICAgICByZXR1cm4gRDNEMTBfUFNfSU5QVVRfUkVHSVNURVJfQ09VTlQgLSBHZXRS
ZXNlcnZlZFZlcnRleE91dHB1dFZlY3RvcnMoZmVhdHVyZUxldmVsKTsKIAotICAgICAgLy8gVmVy
dGV4IHRleHR1cmVzIG5vdCBzdXBwb3J0ZWQgb24gRDNEMTEgRmVhdHVyZSBMZXZlbCA5IGFjY29y
ZGluZyB0bwotICAgICAgLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5
L3dpbmRvd3MvZGVza3RvcC9mZjQ3NjE0OS5hc3B4Ci0gICAgICAvLyBJRDNEMTFEZXZpY2VDb250
ZXh0OjpWU1NldFNhbXBsZXJzIGFuZCBJRDNEMTFEZXZpY2VDb250ZXh0OjpWU1NldFNoYWRlclJl
c291cmNlcwotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzM6Ci0gICAgICBjYXNlIEQz
RF9GRUFUVVJFX0xFVkVMXzlfMjoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8xOiAg
cmV0dXJuIDA7CisgICAgICAgIC8vIFVzZSBTaGFkZXIgTW9kZWwgMi5YIGxpbWl0cworICAgICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKKyAgICAgICAgICAgIHJldHVybiA4IC0gR2V0
UmVzZXJ2ZWRWZXJ0ZXhPdXRwdXRWZWN0b3JzKGZlYXR1cmVMZXZlbCk7CisgICAgICAgIGNhc2Ug
RDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlf
MToKKyAgICAgICAgICAgIHJldHVybiA4IC0gR2V0UmVzZXJ2ZWRWZXJ0ZXhPdXRwdXRWZWN0b3Jz
KGZlYXR1cmVMZXZlbCk7CiAKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgcmV0
dXJuIDA7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQogCi1zdGF0aWMgc2l6ZV90IEdldE1heGltdW1Q
aXhlbFVuaWZvcm1WZWN0b3JzKEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKK3NpemVf
dCBHZXRNYXhpbXVtUGl4ZWxUZXh0dXJlVW5pdHMoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxl
dmVsKQogewotICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogUmVtb3ZlIGhhcmQtY29kZWQgbGltaXQg
b25jZSB0aGUgZ2wtdW5pZm9ybS1hcnJheXMgdGVzdCBjYW4gcGFzcwogICAgIHN3aXRjaCAoZmVh
dHVyZUxldmVsKQogICAgIHsKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKLSAg
ICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDogcmV0dXJuIDEwMjQ7IC8vIEQzRDExX1JF
UV9DT05TVEFOVF9CVUZGRVJfRUxFTUVOVF9DT1VOVDsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVS
RV9MRVZFTF8xMV8xOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAg
ICAgICAgICByZXR1cm4gRDNEMTFfQ09NTU9OU0hBREVSX1NBTVBMRVJfU0xPVF9DT1VOVDsKIAot
ICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgotICAgICAgY2FzZSBEM0RfRkVBVFVS
RV9MRVZFTF8xMF8wOiByZXR1cm4gMTAyNDsgLy8gRDNEMTBfUkVRX0NPTlNUQU5UX0JVRkZFUl9F
TEVNRU5UX0NPVU5UOworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAg
ICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDoKKyAgICAgICAgICAgIHJldHVybiBEM0Qx
MF9DT01NT05TSEFERVJfU0FNUExFUl9TTE9UX0NPVU5UOwogCi0gICAgICAvLyBGcm9tIGh0dHA6
Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvZmY0NzYx
NDkuYXNweCBJRDNEMTFEZXZpY2VDb250ZXh0OjpQU1NldENvbnN0YW50QnVmZmVycwotICAgICAg
Y2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzM6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVM
XzlfMjoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8xOgotICAgICAgICAgIHJldHVy
biAzMiAtIGQzZDExX2dsOjpHZXRSZXNlcnZlZEZyYWdtZW50VW5pZm9ybVZlY3RvcnMoZmVhdHVy
ZUxldmVsKTsKKyAgICAgICAgLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJy
YXJ5L3dpbmRvd3MvZGVza3RvcC9mZjQ3NjE0OS5hc3B4CisgICAgICAgIC8vIElEM0QxMURldmlj
ZUNvbnRleHQ6OlBTU2V0U2hhZGVyUmVzb3VyY2VzCisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfOV8zOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMjoKKyAgICAgICAg
Y2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6CisgICAgICAgICAgICByZXR1cm4gMTY7CiAKLSAg
ICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgcmV0dXJuIDA7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogfQogCi1zdGF0aWMgc2l6ZV90IEdldE1heGltdW1QaXhlbFVuaWZvcm1CbG9ja3MoRDNE
X0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQoraW50IEdldE1pbmltdW1UZXhlbE9mZnNldChE
M0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCiB7CiAgICAgc3dpdGNoIChmZWF0dXJlTGV2
ZWwpCiAgICAgewotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8xOgotICAgICAgY2Fz
ZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOgotICAgICAgICAgIHJldHVybiBEM0QxMV9DT01NT05T
SEFERVJfQ09OU1RBTlRfQlVGRkVSX0FQSV9TTE9UX0NPVU5UIC0KLSAgICAgICAgICAgICAgICAg
ZDNkMTE6OlJFU0VSVkVEX0NPTlNUQU5UX0JVRkZFUl9TTE9UX0NPVU5UOworICAgICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxf
MTFfMDoKKyAgICAgICAgICAgIHJldHVybiBEM0QxMV9DT01NT05TSEFERVJfVEVYRUxfT0ZGU0VU
X01BWF9ORUdBVElWRTsKIAotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgotICAg
ICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOgotICAgICAgICAgIHJldHVybiBEM0QxMF9D
T01NT05TSEFERVJfQ09OU1RBTlRfQlVGRkVSX0FQSV9TTE9UX0NPVU5UIC0KLSAgICAgICAgICAg
ICAgICAgZDNkMTE6OlJFU0VSVkVEX0NPTlNUQU5UX0JVRkZFUl9TTE9UX0NPVU5UOworICAgICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfMTBfMDoKKyAgICAgICAgICAgIHJldHVybiBEM0QxMF9DT01NT05TSEFERVJfVEVYRUxf
T0ZGU0VUX01BWF9ORUdBVElWRTsKIAotICAgICAgLy8gVW5pZm9ybSBibG9ja3Mgbm90IHN1cHBv
cnRlZCBvbiBEM0QxMSBGZWF0dXJlIExldmVsIDkKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVW
RUxfOV8zOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6Ci0gICAgICBjYXNlIEQz
RF9GRUFUVVJFX0xFVkVMXzlfMTogIHJldHVybiAwOworICAgICAgICAvLyBTYW1wbGluZyBmdW5j
dGlvbnMgd2l0aCBvZmZzZXRzIGFyZSBub3QgYXZhaWxhYmxlIGJlbG93IHNoYWRlciBtb2RlbCA0
LjAuCisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgorICAgICAgICBjYXNlIEQz
RF9GRUFUVVJFX0xFVkVMXzlfMjoKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6
CisgICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CisgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CiB9CiAKLXN0YXRpYyBzaXplX3QgR2V0
TWF4aW11bVBpeGVsSW5wdXRWZWN0b3JzKEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkK
K2ludCBHZXRNYXhpbXVtVGV4ZWxPZmZzZXQoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVs
KQogewogICAgIHN3aXRjaCAoZmVhdHVyZUxldmVsKQogICAgIHsKLSAgICAgIGNhc2UgRDNEX0ZF
QVRVUkVfTEVWRUxfMTFfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDogcmV0
dXJuIEQzRDExX1BTX0lOUFVUX1JFR0lTVEVSX0NPVU5UIC0gR2V0UmVzZXJ2ZWRWZXJ0ZXhPdXRw
dXRWZWN0b3JzKGZlYXR1cmVMZXZlbCk7Ci0KLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxf
MTBfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDogcmV0dXJuIEQzRDEwX1BT
X0lOUFVUX1JFR0lTVEVSX0NPVU5UIC0gR2V0UmVzZXJ2ZWRWZXJ0ZXhPdXRwdXRWZWN0b3JzKGZl
YXR1cmVMZXZlbCk7CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKKyAgICAg
ICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOgorICAgICAgICAgICAgcmV0dXJuIEQzRDEx
X0NPTU1PTlNIQURFUl9URVhFTF9PRkZTRVRfTUFYX1BPU0lUSVZFOworICAgICAgICBjYXNlIEQz
RF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBf
MDoKKyAgICAgICAgICAgIHJldHVybiBEM0QxMV9DT01NT05TSEFERVJfVEVYRUxfT0ZGU0VUX01B
WF9QT1NJVElWRTsKIAotICAgICAgLy8gVXNlIFNoYWRlciBNb2RlbCAyLlggbGltaXRzCi0gICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzogIHJldHVybiA4IC0gR2V0UmVzZXJ2ZWRWZXJ0
ZXhPdXRwdXRWZWN0b3JzKGZlYXR1cmVMZXZlbCk7Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xF
VkVMXzlfMjoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8xOiAgcmV0dXJuIDggLSBH
ZXRSZXNlcnZlZFZlcnRleE91dHB1dFZlY3RvcnMoZmVhdHVyZUxldmVsKTsKKyAgICAgICAgLy8g
U2FtcGxpbmcgZnVuY3Rpb25zIHdpdGggb2Zmc2V0cyBhcmUgbm90IGF2YWlsYWJsZSBiZWxvdyBz
aGFkZXIgbW9kZWwgNC4wLgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKKyAg
ICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRV
UkVfTEVWRUxfOV8xOgorICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgIGRlZmF1bHQ6IFVO
UkVBQ0hBQkxFKCk7ICAgICAgcmV0dXJuIDA7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQogCi1zdGF0
aWMgc2l6ZV90IEdldE1heGltdW1QaXhlbFRleHR1cmVVbml0cyhEM0RfRkVBVFVSRV9MRVZFTCBm
ZWF0dXJlTGV2ZWwpCitzaXplX3QgR2V0TWF4aW11bUNvbnN0YW50QnVmZmVyU2l6ZShEM0RfRkVB
VFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCiB7CisgICAgLy8gUmV0dXJucyBhIHNpemVfdCBkZXNw
aXRlIHRoZSBsaW1pdCBiZWluZyBhIEdMdWludDY0IGJlY2F1c2Ugc2l6ZV90IGlzIHRoZSBtYXhp
bXVtCisgICAgLy8gc2l6ZSBvZgorICAgIC8vIGFueSBidWZmZXIgdGhhdCBjb3VsZCBiZSBhbGxv
Y2F0ZWQuCisKKyAgICBjb25zdCBzaXplX3QgYnl0ZXNQZXJDb21wb25lbnQgPSA0ICogc2l6ZW9m
KGZsb2F0KTsKKwogICAgIHN3aXRjaCAoZmVhdHVyZUxldmVsKQogICAgIHsKLSAgICAgIGNhc2Ug
RDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFf
MDogcmV0dXJuIEQzRDExX0NPTU1PTlNIQURFUl9TQU1QTEVSX1NMT1RfQ09VTlQ7CisgICAgICAg
IGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF8xMV8wOgorICAgICAgICAgICAgcmV0dXJuIEQzRDExX1JFUV9DT05TVEFOVF9CVUZGRVJf
RUxFTUVOVF9DT1VOVCAqIGJ5dGVzUGVyQ29tcG9uZW50OwogCi0gICAgICBjYXNlIEQzRF9GRUFU
VVJFX0xFVkVMXzEwXzE6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6IHJldHVy
biBEM0QxMF9DT01NT05TSEFERVJfU0FNUExFUl9TTE9UX0NPVU5UOworICAgICAgICBjYXNlIEQz
RF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBf
MDoKKyAgICAgICAgICAgIHJldHVybiBEM0QxMF9SRVFfQ09OU1RBTlRfQlVGRkVSX0VMRU1FTlRf
Q09VTlQgKiBieXRlc1BlckNvbXBvbmVudDsKIAotICAgICAgLy8gaHR0cDovL21zZG4ubWljcm9z
b2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9mZjQ3NjE0OS5hc3B4IElEM0Qx
MURldmljZUNvbnRleHQ6OlBTU2V0U2hhZGVyUmVzb3VyY2VzCi0gICAgICBjYXNlIEQzRF9GRUFU
VVJFX0xFVkVMXzlfMzoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgotICAgICAg
Y2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6ICByZXR1cm4gMTY7CisgICAgICAgIC8vIExpbWl0
cyBmcm9tIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rl
c2t0b3AvZmY0NzY1MDEuYXNweAorICAgICAgICAvLyByZW1hcmtzIHNlY3Rpb24KKyAgICAgICAg
Y2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzM6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVW
RUxfOV8yOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMToKKyAgICAgICAgICAg
IHJldHVybiA0MDk2ICogYnl0ZXNQZXJDb21wb25lbnQ7CiAKLSAgICAgIGRlZmF1bHQ6IFVOUkVB
Q0hBQkxFKCk7ICAgICAgcmV0dXJuIDA7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQogCi1zdGF0aWMg
aW50IEdldE1pbmltdW1UZXhlbE9mZnNldChEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwp
CitzaXplX3QgR2V0TWF4aW11bVN0cmVhbU91dHB1dEJ1ZmZlcnMoRDNEX0ZFQVRVUkVfTEVWRUwg
ZmVhdHVyZUxldmVsKQogewogICAgIHN3aXRjaCAoZmVhdHVyZUxldmVsKQogICAgIHsKLSAgICAg
IGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVW
RUxfMTFfMDogcmV0dXJuIEQzRDExX0NPTU1PTlNIQURFUl9URVhFTF9PRkZTRVRfTUFYX05FR0FU
SVZFOworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6CisgICAgICAgIGNhc2Ug
RDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDoKKyAgICAgICAgICAgIHJldHVybiBEM0QxMV9TT19CVUZG
RVJfU0xPVF9DT1VOVDsKIAotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgotICAg
ICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOiByZXR1cm4gRDNEMTBfQ09NTU9OU0hBREVS
X1RFWEVMX09GRlNFVF9NQVhfTkVHQVRJVkU7CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVW
RUxfMTBfMToKKyAgICAgICAgICAgIHJldHVybiBEM0QxMF8xX1NPX0JVRkZFUl9TTE9UX0NPVU5U
OworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6CisgICAgICAgICAgICByZXR1
cm4gRDNEMTBfU09fQlVGRkVSX1NMT1RfQ09VTlQ7CiAKLSAgICAgIC8vIFNhbXBsaW5nIGZ1bmN0
aW9ucyB3aXRoIG9mZnNldHMgYXJlIG5vdCBhdmFpbGFibGUgYmVsb3cgc2hhZGVyIG1vZGVsIDQu
MC4KLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgotICAgICAgY2FzZSBEM0RfRkVB
VFVSRV9MRVZFTF85XzI6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMTogIHJldHVy
biAwOworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKKyAgICAgICAgY2FzZSBE
M0RfRkVBVFVSRV9MRVZFTF85XzI6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8x
OgorICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJM
RSgpOworICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQogCi1zdGF0aWMgaW50IEdldE1h
eGltdW1UZXhlbE9mZnNldChEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCitzaXplX3Qg
R2V0TWF4aW11bVN0cmVhbU91dHB1dEludGVybGVhdmVkQ29tcG9uZW50cyhEM0RfRkVBVFVSRV9M
RVZFTCBmZWF0dXJlTGV2ZWwpCiB7CiAgICAgc3dpdGNoIChmZWF0dXJlTGV2ZWwpCiAgICAgewot
ICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8xOgotICAgICAgY2FzZSBEM0RfRkVBVFVS
RV9MRVZFTF8xMV8wOiByZXR1cm4gRDNEMTFfQ09NTU9OU0hBREVSX1RFWEVMX09GRlNFVF9NQVhf
UE9TSVRJVkU7Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6Ci0gICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6IHJldHVybiBEM0QxMV9DT01NT05TSEFERVJfVEVYRUxf
T0ZGU0VUX01BWF9QT1NJVElWRTsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8x
OgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisKKyAgICAgICAgY2FzZSBE
M0RfRkVBVFVSRV9MRVZFTF8xMF8xOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEw
XzA6CisgICAgICAgICAgICByZXR1cm4gR2V0TWF4aW11bVZlcnRleE91dHB1dFZlY3RvcnMoZmVh
dHVyZUxldmVsKSAqIDQ7CiAKLSAgICAgIC8vIFNhbXBsaW5nIGZ1bmN0aW9ucyB3aXRoIG9mZnNl
dHMgYXJlIG5vdCBhdmFpbGFibGUgYmVsb3cgc2hhZGVyIG1vZGVsIDQuMC4KLSAgICAgIGNhc2Ug
RDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6
Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMTogIHJldHVybiAwOworICAgICAgICBj
YXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZF
TF85XzI6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8xOgorICAgICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgcmV0dXJuIDA7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogfQogCi1zdGF0aWMgc2l6ZV90IEdldE1heGltdW1Db25zdGFu
dEJ1ZmZlclNpemUoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQorc2l6ZV90IEdldE1h
eGltdW1TdHJlYW1PdXRwdXRTZXBhcmF0ZUNvbXBvbmVudHMoRDNEX0ZFQVRVUkVfTEVWRUwgZmVh
dHVyZUxldmVsKQogewotICAgIC8vIFJldHVybnMgYSBzaXplX3QgZGVzcGl0ZSB0aGUgbGltaXQg
YmVpbmcgYSBHTHVpbnQ2NCBiZWNhdXNlIHNpemVfdCBpcyB0aGUgbWF4aW11bSBzaXplIG9mCi0g
ICAgLy8gYW55IGJ1ZmZlciB0aGF0IGNvdWxkIGJlIGFsbG9jYXRlZC4KLQotICAgIGNvbnN0IHNp
emVfdCBieXRlc1BlckNvbXBvbmVudCA9IDQgKiBzaXplb2YoZmxvYXQpOwotCiAgICAgc3dpdGNo
IChmZWF0dXJlTGV2ZWwpCiAgICAgewotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8x
OgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOiByZXR1cm4gRDNEMTFfUkVRX0NP
TlNUQU5UX0JVRkZFUl9FTEVNRU5UX0NPVU5UICogYnl0ZXNQZXJDb21wb25lbnQ7CisgICAgICAg
IGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF8xMV8wOgorICAgICAgICAgICAgcmV0dXJuIEdldE1heGltdW1TdHJlYW1PdXRwdXRJbnRl
cmxlYXZlZENvbXBvbmVudHMoZmVhdHVyZUxldmVsKSAvCisgICAgICAgICAgICAgICAgICAgR2V0
TWF4aW11bVN0cmVhbU91dHB1dEJ1ZmZlcnMoZmVhdHVyZUxldmVsKTsKIAotICAgICAgY2FzZSBE
M0RfRkVBVFVSRV9MRVZFTF8xMF8xOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8w
OiByZXR1cm4gRDNEMTBfUkVRX0NPTlNUQU5UX0JVRkZFUl9FTEVNRU5UX0NPVU5UICogYnl0ZXNQ
ZXJDb21wb25lbnQ7CisgICAgICAgIC8vIEQzRCAxMCBhbmQgMTAuMSBvbmx5IGFsbG93IG9uZSBv
dXRwdXQgcGVyIG91dHB1dCBzbG90IGlmIGFuIG91dHB1dCBzbG90IG90aGVyCisgICAgICAgIC8v
IHRoYW4gemVybyBpcyB1c2VkLgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6
CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDoKKyAgICAgICAgICAgIHJldHVy
biA0OwogCi0gICAgICAvLyBMaW1pdHMgZnJvbSBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2Vu
LXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2ZmNDc2NTAxLmFzcHggcmVtYXJrcyBzZWN0aW9u
Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKLSAgICAgIGNhc2UgRDNEX0ZFQVRV
UkVfTEVWRUxfOV8yOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6ICByZXR1cm4g
NDA5NiAqIGJ5dGVzUGVyQ29tcG9uZW50OworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVM
XzlfMzoKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6CisgICAgICAgIGNhc2Ug
RDNEX0ZFQVRVUkVfTEVWRUxfOV8xOgorICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgIGRl
ZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgcmV0dXJuIDA7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
fQogCi1zdGF0aWMgc2l6ZV90IEdldE1heGltdW1TdHJlYW1PdXRwdXRCdWZmZXJzKEQzRF9GRUFU
VVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKK30gIC8vIGFub255bW91cyBuYW1lc3BhY2UKKwordW5z
aWduZWQgaW50IEdldFJlc2VydmVkVmVydGV4VW5pZm9ybVZlY3RvcnMoRDNEX0ZFQVRVUkVfTEVW
RUwgZmVhdHVyZUxldmVsKQogewogICAgIHN3aXRjaCAoZmVhdHVyZUxldmVsKQogICAgIHsKLSAg
ICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfMTFfMDogcmV0dXJuIEQzRDExX1NPX0JVRkZFUl9TTE9UX0NPVU5UOwotCi0gICAgICBj
YXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6IHJldHVybiBEM0QxMF8xX1NPX0JVRkZFUl9TTE9U
X0NPVU5UOwotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOiByZXR1cm4gRDNEMTBf
U09fQlVGRkVSX1NMT1RfQ09VTlQ7CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFf
MToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOgorICAgICAgICBjYXNlIEQz
RF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBf
MDoKKyAgICAgICAgICAgIHJldHVybiAwOwogCi0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVM
XzlfMzoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgotICAgICAgY2FzZSBEM0Rf
RkVBVFVSRV9MRVZFTF85XzE6ICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF85XzM6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgorICAgICAgICBj
YXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMToKKyAgICAgICAgICAgIHJldHVybiAzOyAgLy8gZHhf
Vmlld0FkanVzdCwgZHhfVmlld0Nvb3JkcyBhbmQgZHhfVmlld1NjYWxlCiAKLSAgICAgIGRlZmF1
bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgcmV0dXJuIDA7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQog
Ci1zdGF0aWMgc2l6ZV90IEdldE1heGltdW1TdHJlYW1PdXRwdXRJbnRlcmxlYXZlZENvbXBvbmVu
dHMoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQordW5zaWduZWQgaW50IEdldFJlc2Vy
dmVkRnJhZ21lbnRVbmlmb3JtVmVjdG9ycyhEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwp
CiB7CiAgICAgc3dpdGNoIChmZWF0dXJlTGV2ZWwpCiAgICAgewotICAgICAgY2FzZSBEM0RfRkVB
VFVSRV9MRVZFTF8xMV8xOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOgotCi0g
ICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJF
X0xFVkVMXzEwXzA6IHJldHVybiBHZXRNYXhpbXVtVmVydGV4T3V0cHV0VmVjdG9ycyhmZWF0dXJl
TGV2ZWwpICogNDsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8xOgorICAgICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfMTBfMToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOgorICAgICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgotICAg
ICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xF
VkVMXzlfMTogIHJldHVybiAwOworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoK
KyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6CisgICAgICAgIGNhc2UgRDNEX0ZF
QVRVUkVfTEVWRUxfOV8xOgorICAgICAgICAgICAgcmV0dXJuIDM7CiAKLSAgICAgIGRlZmF1bHQ6
IFVOUkVBQ0hBQkxFKCk7ICAgICAgcmV0dXJuIDA7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQogCi1z
dGF0aWMgc2l6ZV90IEdldE1heGltdW1TdHJlYW1PdXRwdXRTZXBhcmF0ZUNvbXBvbmVudHMoRDNE
X0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQorR0xpbnQgR2V0TWF4aW11bUNsaWVudFZlcnNp
b24oRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQogewogICAgIHN3aXRjaCAoZmVhdHVy
ZUxldmVsKQogICAgIHsKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKLSAgICAg
IGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDogcmV0dXJuIEdldE1heGltdW1TdHJlYW1PdXRw
dXRJbnRlcmxlYXZlZENvbXBvbmVudHMoZmVhdHVyZUxldmVsKSAvCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRNYXhpbXVtU3RyZWFtT3V0cHV0QnVmZmVycyhm
ZWF0dXJlTGV2ZWwpOwotCi0KLSAgICAgIC8vIEQzRCAxMCBhbmQgMTAuMSBvbmx5IGFsbG93IG9u
ZSBvdXRwdXQgcGVyIG91dHB1dCBzbG90IGlmIGFuIG91dHB1dCBzbG90IG90aGVyIHRoYW4gemVy
byBpcyB1c2VkLgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgotICAgICAgY2Fz
ZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOiByZXR1cm4gNDsKKyAgICAgICAgY2FzZSBEM0RfRkVB
VFVSRV9MRVZFTF8xMV8xOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6Cisg
ICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKKyAgICAgICAgICAgIHJldHVybiAz
OwogCi0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKLSAgICAgIGNhc2UgRDNEX0ZF
QVRVUkVfTEVWRUxfOV8yOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6ICByZXR1
cm4gMDsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOgorICAgICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85
XzI6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8xOgorICAgICAgICAgICAgcmV0
dXJuIDI7CiAKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQogfQogCkBAIC0xMjI5LDExICsxMjExLDE1IEBAIHZvaWQgR2VuZXJh
dGVDYXBzKElEM0QxMURldmljZSAqZGV2aWNlLCAKICAgICBleHRlbnNpb25zLT5mYm9SZW5kZXJN
aXBtYXAgPSBmYWxzZTsKICAgICBleHRlbnNpb25zLT5kZWJ1Z01hcmtlciA9IHRydWU7CiAgICAg
ZXh0ZW5zaW9ucy0+ZWdsSW1hZ2UgICAgICAgICAgICAgICAgID0gdHJ1ZTsKKyAgICBleHRlbnNp
b25zLT5lZ2xJbWFnZUV4dGVybmFsICAgICAgICAgID0gdHJ1ZTsKKyAgICBleHRlbnNpb25zLT5l
Z2xJbWFnZUV4dGVybmFsRXNzbDMgICAgID0gdHJ1ZTsKKyAgICBleHRlbnNpb25zLT5lZ2xTdHJl
YW1Db25zdW1lckV4dGVybmFsID0gdHJ1ZTsKICAgICBleHRlbnNpb25zLT51bnBhY2tTdWJpbWFn
ZSAgICAgICAgICAgPSB0cnVlOwogICAgIGV4dGVuc2lvbnMtPnBhY2tTdWJpbWFnZSAgICAgICAg
ICAgICA9IHRydWU7Ci0gICAgZXh0ZW5zaW9ucy0+dmVydGV4QXJyYXlPYmplY3QgICAgICAgID0g
dHJ1ZTsKLSAgICBleHRlbnNpb25zLT5ub0Vycm9yICAgICAgICAgICAgICAgICAgPSB0cnVlOwog
ICAgIGV4dGVuc2lvbnMtPmxvc3N5RVRDRGVjb2RlICAgICAgICAgICA9IHRydWU7CisgICAgZXh0
ZW5zaW9ucy0+c3luY1F1ZXJ5ICAgICAgICAgICAgICAgICA9IEdldEV2ZW50UXVlcnlTdXBwb3J0
KGZlYXR1cmVMZXZlbCk7CisgICAgZXh0ZW5zaW9ucy0+Y29weVRleHR1cmUgICAgICAgICAgICAg
ICA9IHRydWU7CisgICAgZXh0ZW5zaW9ucy0+Y29weUNvbXByZXNzZWRUZXh0dXJlICAgICA9IHRy
dWU7CiAKICAgICAvLyBEM0QxMSBGZWF0dXJlIExldmVsIDEwXzArIHVzZXMgU1ZfSXNGcm9udEZh
Y2UgaW4gSExTTCB0byBlbXVsYXRlIGdsX0Zyb250RmFjaW5nLgogICAgIC8vIEQzRDExIEZlYXR1
cmUgTGV2ZWwgOV8zIGRvZXNuJ3Qgc3VwcG9ydCBTVl9Jc0Zyb250RmFjZSwgYW5kIGhhcyBubyBl
cXVpdmFsZW50LCBzbyBjYW4ndCBzdXBwb3J0IGdsX0Zyb250RmFjaW5nLgpAQCAtMTI2NSw2ICsx
MjUxLDMzNiBAQCB2b2lkIEdlbmVyYXRlQ2FwcyhJRDNEMTFEZXZpY2UgKmRldmljZSwgCiAKIH0g
IC8vIG5hbWVzcGFjZSBkM2QxMV9nbAogCituYW1lc3BhY2UgZ2xfZDNkMTEKK3sKKworRDNEMTFf
QkxFTkQgQ29udmVydEJsZW5kRnVuYyhHTGVudW0gZ2xCbGVuZCwgYm9vbCBpc0FscGhhKQorewor
ICAgIEQzRDExX0JMRU5EIGQzZEJsZW5kID0gRDNEMTFfQkxFTkRfWkVSTzsKKworICAgIHN3aXRj
aCAoZ2xCbGVuZCkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfWkVSTzoKKyAgICAgICAgICAgIGQz
ZEJsZW5kID0gRDNEMTFfQkxFTkRfWkVSTzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEdMX09ORToKKyAgICAgICAgICAgIGQzZEJsZW5kID0gRDNEMTFfQkxFTkRfT05FOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfU1JDX0NPTE9SOgorICAgICAgICAgICAg
ZDNkQmxlbmQgPSAoaXNBbHBoYSA/IEQzRDExX0JMRU5EX1NSQ19BTFBIQSA6IEQzRDExX0JMRU5E
X1NSQ19DT0xPUik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9PTkVfTUlO
VVNfU1JDX0NPTE9SOgorICAgICAgICAgICAgZDNkQmxlbmQgPSAoaXNBbHBoYSA/IEQzRDExX0JM
RU5EX0lOVl9TUkNfQUxQSEEgOiBEM0QxMV9CTEVORF9JTlZfU1JDX0NPTE9SKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX0RTVF9DT0xPUjoKKyAgICAgICAgICAgIGQzZEJs
ZW5kID0gKGlzQWxwaGEgPyBEM0QxMV9CTEVORF9ERVNUX0FMUEhBIDogRDNEMTFfQkxFTkRfREVT
VF9DT0xPUik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNf
RFNUX0NPTE9SOgorICAgICAgICAgICAgZDNkQmxlbmQgPSAoaXNBbHBoYSA/IEQzRDExX0JMRU5E
X0lOVl9ERVNUX0FMUEhBIDogRDNEMTFfQkxFTkRfSU5WX0RFU1RfQ09MT1IpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfU1JDX0FMUEhBOgorICAgICAgICAgICAgZDNkQmxl
bmQgPSBEM0QxMV9CTEVORF9TUkNfQUxQSEE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBHTF9PTkVfTUlOVVNfU1JDX0FMUEhBOgorICAgICAgICAgICAgZDNkQmxlbmQgPSBEM0Qx
MV9CTEVORF9JTlZfU1JDX0FMUEhBOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
R0xfRFNUX0FMUEhBOgorICAgICAgICAgICAgZDNkQmxlbmQgPSBEM0QxMV9CTEVORF9ERVNUX0FM
UEhBOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0RTVF9B
TFBIQToKKyAgICAgICAgICAgIGQzZEJsZW5kID0gRDNEMTFfQkxFTkRfSU5WX0RFU1RfQUxQSEE7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9DT05TVEFOVF9DT0xPUjoKKyAg
ICAgICAgICAgIGQzZEJsZW5kID0gRDNEMTFfQkxFTkRfQkxFTkRfRkFDVE9SOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SOgorICAg
ICAgICAgICAgZDNkQmxlbmQgPSBEM0QxMV9CTEVORF9JTlZfQkxFTkRfRkFDVE9SOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfQ09OU1RBTlRfQUxQSEE6CisgICAgICAgICAg
ICBkM2RCbGVuZCA9IEQzRDExX0JMRU5EX0JMRU5EX0ZBQ1RPUjsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQToKKyAgICAgICAgICAg
IGQzZEJsZW5kID0gRDNEMTFfQkxFTkRfSU5WX0JMRU5EX0ZBQ1RPUjsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEdMX1NSQ19BTFBIQV9TQVRVUkFURToKKyAgICAgICAgICAgIGQz
ZEJsZW5kID0gRDNEMTFfQkxFTkRfU1JDX0FMUEhBX1NBVDsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gZDNkQmxlbmQ7Cit9CisKK0QzRDExX0JMRU5EX09QIENvbnZlcnRCbGVuZE9wKEdM
ZW51bSBnbEJsZW5kT3ApCit7CisgICAgRDNEMTFfQkxFTkRfT1AgZDNkQmxlbmRPcCA9IEQzRDEx
X0JMRU5EX09QX0FERDsKKworICAgIHN3aXRjaCAoZ2xCbGVuZE9wKQorICAgIHsKKyAgICAgICAg
Y2FzZSBHTF9GVU5DX0FERDoKKyAgICAgICAgICAgIGQzZEJsZW5kT3AgPSBEM0QxMV9CTEVORF9P
UF9BREQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9GVU5DX1NVQlRSQUNU
OgorICAgICAgICAgICAgZDNkQmxlbmRPcCA9IEQzRDExX0JMRU5EX09QX1NVQlRSQUNUOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUOgor
ICAgICAgICAgICAgZDNkQmxlbmRPcCA9IEQzRDExX0JMRU5EX09QX1JFVl9TVUJUUkFDVDsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX01JTjoKKyAgICAgICAgICAgIGQzZEJs
ZW5kT3AgPSBEM0QxMV9CTEVORF9PUF9NSU47CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBHTF9NQVg6CisgICAgICAgICAgICBkM2RCbGVuZE9wID0gRDNEMTFfQkxFTkRfT1BfTUFY
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJF
QUNIQUJMRSgpOworICAgIH0KKworICAgIHJldHVybiBkM2RCbGVuZE9wOworfQorCitVSU5UOCBD
b252ZXJ0Q29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUsIGJvb2wgYWxw
aGEpCit7CisgICAgVUlOVDggbWFzayA9IDA7CisgICAgaWYgKHJlZCkKKyAgICB7CisgICAgICAg
IG1hc2sgfD0gRDNEMTFfQ09MT1JfV1JJVEVfRU5BQkxFX1JFRDsKKyAgICB9CisgICAgaWYgKGdy
ZWVuKQorICAgIHsKKyAgICAgICAgbWFzayB8PSBEM0QxMV9DT0xPUl9XUklURV9FTkFCTEVfR1JF
RU47CisgICAgfQorICAgIGlmIChibHVlKQorICAgIHsKKyAgICAgICAgbWFzayB8PSBEM0QxMV9D
T0xPUl9XUklURV9FTkFCTEVfQkxVRTsKKyAgICB9CisgICAgaWYgKGFscGhhKQorICAgIHsKKyAg
ICAgICAgbWFzayB8PSBEM0QxMV9DT0xPUl9XUklURV9FTkFCTEVfQUxQSEE7CisgICAgfQorICAg
IHJldHVybiBtYXNrOworfQorCitEM0QxMV9DVUxMX01PREUgQ29udmVydEN1bGxNb2RlKGJvb2wg
Y3VsbEVuYWJsZWQsIEdMZW51bSBjdWxsTW9kZSkKK3sKKyAgICBEM0QxMV9DVUxMX01PREUgY3Vs
bCA9IEQzRDExX0NVTExfTk9ORTsKKworICAgIGlmIChjdWxsRW5hYmxlZCkKKyAgICB7CisgICAg
ICAgIHN3aXRjaCAoY3VsbE1vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgR0xfRlJP
TlQ6CisgICAgICAgICAgICAgICAgY3VsbCA9IEQzRDExX0NVTExfRlJPTlQ7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdMX0JBQ0s6CisgICAgICAgICAgICAgICAg
Y3VsbCA9IEQzRDExX0NVTExfQkFDSzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgR0xfRlJPTlRfQU5EX0JBQ0s6CisgICAgICAgICAgICAgICAgY3VsbCA9IEQzRDEx
X0NVTExfTk9ORTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBl
bHNlCisgICAgeworICAgICAgICBjdWxsID0gRDNEMTFfQ1VMTF9OT05FOworICAgIH0KKworICAg
IHJldHVybiBjdWxsOworfQorCitEM0QxMV9DT01QQVJJU09OX0ZVTkMgQ29udmVydENvbXBhcmlz
b24oR0xlbnVtIGNvbXBhcmlzb24pCit7CisgICAgRDNEMTFfQ09NUEFSSVNPTl9GVU5DIGQzZENv
bXAgPSBEM0QxMV9DT01QQVJJU09OX05FVkVSOworICAgIHN3aXRjaCAoY29tcGFyaXNvbikKKyAg
ICB7CisgICAgICAgIGNhc2UgR0xfTkVWRVI6CisgICAgICAgICAgICBkM2RDb21wID0gRDNEMTFf
Q09NUEFSSVNPTl9ORVZFUjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX0FM
V0FZUzoKKyAgICAgICAgICAgIGQzZENvbXAgPSBEM0QxMV9DT01QQVJJU09OX0FMV0FZUzsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX0xFU1M6CisgICAgICAgICAgICBkM2RD
b21wID0gRDNEMTFfQ09NUEFSSVNPTl9MRVNTOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgR0xfTEVRVUFMOgorICAgICAgICAgICAgZDNkQ29tcCA9IEQzRDExX0NPTVBBUklTT05f
TEVTU19FUVVBTDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX0VRVUFMOgor
ICAgICAgICAgICAgZDNkQ29tcCA9IEQzRDExX0NPTVBBUklTT05fRVFVQUw7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9HUkVBVEVSOgorICAgICAgICAgICAgZDNkQ29tcCA9
IEQzRDExX0NPTVBBUklTT05fR1JFQVRFUjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEdMX0dFUVVBTDoKKyAgICAgICAgICAgIGQzZENvbXAgPSBEM0QxMV9DT01QQVJJU09OX0dS
RUFURVJfRVFVQUw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9OT1RFUVVB
TDoKKyAgICAgICAgICAgIGQzZENvbXAgPSBEM0QxMV9DT01QQVJJU09OX05PVF9FUVVBTDsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gZDNkQ29tcDsKK30KKworRDNEMTFfREVQVEhfV1JJ
VEVfTUFTSyBDb252ZXJ0RGVwdGhNYXNrKGJvb2wgZGVwdGhXcml0ZUVuYWJsZWQpCit7CisgICAg
cmV0dXJuIGRlcHRoV3JpdGVFbmFibGVkID8gRDNEMTFfREVQVEhfV1JJVEVfTUFTS19BTEwgOiBE
M0QxMV9ERVBUSF9XUklURV9NQVNLX1pFUk87Cit9CisKK1VJTlQ4IENvbnZlcnRTdGVuY2lsTWFz
ayhHTHVpbnQgc3RlbmNpbG1hc2spCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFVJTlQ4Pihz
dGVuY2lsbWFzayk7Cit9CisKK0QzRDExX1NURU5DSUxfT1AgQ29udmVydFN0ZW5jaWxPcChHTGVu
dW0gc3RlbmNpbE9wKQoreworICAgIEQzRDExX1NURU5DSUxfT1AgZDNkU3RlbmNpbE9wID0gRDNE
MTFfU1RFTkNJTF9PUF9LRUVQOworCisgICAgc3dpdGNoIChzdGVuY2lsT3ApCisgICAgeworICAg
ICAgICBjYXNlIEdMX1pFUk86CisgICAgICAgICAgICBkM2RTdGVuY2lsT3AgPSBEM0QxMV9TVEVO
Q0lMX09QX1pFUk87CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9LRUVQOgor
ICAgICAgICAgICAgZDNkU3RlbmNpbE9wID0gRDNEMTFfU1RFTkNJTF9PUF9LRUVQOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfUkVQTEFDRToKKyAgICAgICAgICAgIGQzZFN0
ZW5jaWxPcCA9IEQzRDExX1NURU5DSUxfT1BfUkVQTEFDRTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEdMX0lOQ1I6CisgICAgICAgICAgICBkM2RTdGVuY2lsT3AgPSBEM0QxMV9T
VEVOQ0lMX09QX0lOQ1JfU0FUOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xf
REVDUjoKKyAgICAgICAgICAgIGQzZFN0ZW5jaWxPcCA9IEQzRDExX1NURU5DSUxfT1BfREVDUl9T
QVQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9JTlZFUlQ6CisgICAgICAg
ICAgICBkM2RTdGVuY2lsT3AgPSBEM0QxMV9TVEVOQ0lMX09QX0lOVkVSVDsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEdMX0lOQ1JfV1JBUDoKKyAgICAgICAgICAgIGQzZFN0ZW5j
aWxPcCA9IEQzRDExX1NURU5DSUxfT1BfSU5DUjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEdMX0RFQ1JfV1JBUDoKKyAgICAgICAgICAgIGQzZFN0ZW5jaWxPcCA9IEQzRDExX1NU
RU5DSUxfT1BfREVDUjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gZDNkU3RlbmNpbE9w
OworfQorCitEM0QxMV9GSUxURVIgQ29udmVydEZpbHRlcihHTGVudW0gbWluRmlsdGVyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1hZ0ZpbHRlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZsb2F0IG1heEFuaXNvdHJvcHksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gY29tcGFyaXNvbk1vZGUpCit7CisgICAgYm9vbCBjb21wYXJpc29uID0gY29t
cGFyaXNvbk1vZGUgIT0gR0xfTk9ORTsKKworICAgIGlmIChtYXhBbmlzb3Ryb3B5ID4gMS4wZikK
KyAgICB7CisgICAgICAgIHJldHVybiBEM0QxMV9FTkNPREVfQU5JU09UUk9QSUNfRklMVEVSKHN0
YXRpY19jYXN0PEQzRDExX0NPTVBBUklTT05fRlVOQz4oY29tcGFyaXNvbikpOworICAgIH0KKyAg
ICBlbHNlCisgICAgeworICAgICAgICBEM0QxMV9GSUxURVJfVFlQRSBkeE1pbiA9IEQzRDExX0ZJ
TFRFUl9UWVBFX1BPSU5UOworICAgICAgICBEM0QxMV9GSUxURVJfVFlQRSBkeE1pcCA9IEQzRDEx
X0ZJTFRFUl9UWVBFX1BPSU5UOworICAgICAgICBzd2l0Y2ggKG1pbkZpbHRlcikKKyAgICAgICAg
eworICAgICAgICAgICAgY2FzZSBHTF9ORUFSRVNUOgorICAgICAgICAgICAgICAgIGR4TWluID0g
RDNEMTFfRklMVEVSX1RZUEVfUE9JTlQ7CisgICAgICAgICAgICAgICAgZHhNaXAgPSBEM0QxMV9G
SUxURVJfVFlQRV9QT0lOVDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgR0xfTElORUFSOgorICAgICAgICAgICAgICAgIGR4TWluID0gRDNEMTFfRklMVEVSX1RZUEVf
TElORUFSOworICAgICAgICAgICAgICAgIGR4TWlwID0gRDNEMTFfRklMVEVSX1RZUEVfUE9JTlQ7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdMX05FQVJFU1RfTUlQ
TUFQX05FQVJFU1Q6CisgICAgICAgICAgICAgICAgZHhNaW4gPSBEM0QxMV9GSUxURVJfVFlQRV9Q
T0lOVDsKKyAgICAgICAgICAgICAgICBkeE1pcCA9IEQzRDExX0ZJTFRFUl9UWVBFX1BPSU5UOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBHTF9MSU5FQVJfTUlQTUFQ
X05FQVJFU1Q6CisgICAgICAgICAgICAgICAgZHhNaW4gPSBEM0QxMV9GSUxURVJfVFlQRV9MSU5F
QVI7CisgICAgICAgICAgICAgICAgZHhNaXAgPSBEM0QxMV9GSUxURVJfVFlQRV9QT0lOVDsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgR0xfTkVBUkVTVF9NSVBNQVBf
TElORUFSOgorICAgICAgICAgICAgICAgIGR4TWluID0gRDNEMTFfRklMVEVSX1RZUEVfUE9JTlQ7
CisgICAgICAgICAgICAgICAgZHhNaXAgPSBEM0QxMV9GSUxURVJfVFlQRV9MSU5FQVI7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdMX0xJTkVBUl9NSVBNQVBfTElO
RUFSOgorICAgICAgICAgICAgICAgIGR4TWluID0gRDNEMTFfRklMVEVSX1RZUEVfTElORUFSOwor
ICAgICAgICAgICAgICAgIGR4TWlwID0gRDNEMTFfRklMVEVSX1RZUEVfTElORUFSOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOworICAgICAgICB9CisKKyAgICAgICAgRDNEMTFfRklMVEVSX1RZUEUgZHhN
YWcgPSBEM0QxMV9GSUxURVJfVFlQRV9QT0lOVDsKKyAgICAgICAgc3dpdGNoIChtYWdGaWx0ZXIp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgR0xfTkVBUkVTVDoKKyAgICAgICAgICAgICAg
ICBkeE1hZyA9IEQzRDExX0ZJTFRFUl9UWVBFX1BPSU5UOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBHTF9MSU5FQVI6CisgICAgICAgICAgICAgICAgZHhNYWcgPSBE
M0QxMV9GSUxURVJfVFlQRV9MSU5FQVI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIH0K
KworICAgICAgICByZXR1cm4gRDNEMTFfRU5DT0RFX0JBU0lDX0ZJTFRFUihkeE1pbiwgZHhNYWcs
IGR4TWlwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxEM0QxMV9DT01QQVJJU09OX0ZVTkM+KGNvbXBhcmlzb24pKTsKKyAgICB9Cit9CisKK0Qz
RDExX1RFWFRVUkVfQUREUkVTU19NT0RFIENvbnZlcnRUZXh0dXJlV3JhcChHTGVudW0gd3JhcCkK
K3sKKyAgICBzd2l0Y2ggKHdyYXApCisgICAgeworICAgICAgICBjYXNlIEdMX1JFUEVBVDoKKyAg
ICAgICAgICAgIHJldHVybiBEM0QxMV9URVhUVVJFX0FERFJFU1NfV1JBUDsKKyAgICAgICAgY2Fz
ZSBHTF9DTEFNUF9UT19FREdFOgorICAgICAgICAgICAgcmV0dXJuIEQzRDExX1RFWFRVUkVfQURE
UkVTU19DTEFNUDsKKyAgICAgICAgY2FzZSBHTF9NSVJST1JFRF9SRVBFQVQ6CisgICAgICAgICAg
ICByZXR1cm4gRDNEMTFfVEVYVFVSRV9BRERSRVNTX01JUlJPUjsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0dXJuIEQzRDExX1RF
WFRVUkVfQUREUkVTU19XUkFQOworfQorCitVSU5UIENvbnZlcnRNYXhBbmlzb3Ryb3B5KGZsb2F0
IG1heEFuaXNvdHJvcHksIEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKK3sKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VUlOVD4oc3RkOjptaW4obWF4QW5pc290cm9weSwgZDNkMTFfZ2w6
OkdldE1heGltdW1Bbmlzb3Ryb3B5KGZlYXR1cmVMZXZlbCkpKTsKK30KKworRDNEMTFfUVVFUlkg
Q29udmVydFF1ZXJ5VHlwZShHTGVudW0gcXVlcnlUeXBlKQoreworICAgIHN3aXRjaCAocXVlcnlU
eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9BTllfU0FNUExFU19QQVNTRURfRVhUOgorICAg
ICAgICBjYXNlIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkVfRVhUOgorICAgICAg
ICAgICAgcmV0dXJuIEQzRDExX1FVRVJZX09DQ0xVU0lPTjsKKyAgICAgICAgY2FzZSBHTF9UUkFO
U0ZPUk1fRkVFREJBQ0tfUFJJTUlUSVZFU19XUklUVEVOOgorICAgICAgICAgICAgcmV0dXJuIEQz
RDExX1FVRVJZX1NPX1NUQVRJU1RJQ1M7CisgICAgICAgIGNhc2UgR0xfVElNRV9FTEFQU0VEX0VY
VDoKKyAgICAgICAgICAgIC8vIFR3byBpbnRlcm5hbCBxdWVyaWVzIGFyZSBhbHNvIGNyZWF0ZWQg
Zm9yIGJlZ2luL2VuZCB0aW1lc3RhbXBzCisgICAgICAgICAgICByZXR1cm4gRDNEMTFfUVVFUllf
VElNRVNUQU1QX0RJU0pPSU5UOworICAgICAgICBjYXNlIEdMX0NPTU1BTkRTX0NPTVBMRVRFRF9D
SFJPTUlVTToKKyAgICAgICAgICAgIHJldHVybiBEM0QxMV9RVUVSWV9FVkVOVDsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4g
RDNEMTFfUVVFUllfRVZFTlQ7CisgICAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UgZ2xfZDNkMTEK
KwogbmFtZXNwYWNlIGQzZDExCiB7CiAKQEAgLTEzNjIsMTEgKzE2NzgsMTEgQEAgdm9pZCBHZW5l
cmF0ZUluaXRpYWxUZXh0dXJlRGF0YShHTGludCBpbgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6OnZlY3RvcjxEM0QxMV9TVUJSRVNPVVJDRV9EQVRBPiAqb3V0U3VicmVzb3Vy
Y2VEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6
OnZlY3RvcjxCWVRFPj4gKm91dERhdGEpCiB7Ci0gICAgY29uc3QgZDNkMTE6OlRleHR1cmVGb3Jt
YXQgJmQzZEZvcm1hdEluZm8gPSBkM2QxMTo6R2V0VGV4dHVyZUZvcm1hdEluZm8oaW50ZXJuYWxG
b3JtYXQsIHJlbmRlcmVyMTFEZXZpY2VDYXBzKTsKKyAgICBjb25zdCBkM2QxMTo6Rm9ybWF0ICZk
M2RGb3JtYXRJbmZvID0gZDNkMTE6OkZvcm1hdDo6R2V0KGludGVybmFsRm9ybWF0LCByZW5kZXJl
cjExRGV2aWNlQ2Fwcyk7CiAgICAgQVNTRVJUKGQzZEZvcm1hdEluZm8uZGF0YUluaXRpYWxpemVy
RnVuY3Rpb24gIT0gTlVMTCk7CiAKICAgICBjb25zdCBkM2QxMTo6RFhHSUZvcm1hdFNpemUgJmR4
Z2lGb3JtYXRJbmZvID0KLSAgICAgICAgZDNkMTE6OkdldERYR0lGb3JtYXRTaXplSW5mbyhkM2RG
b3JtYXRJbmZvLmZvcm1hdFNldC0+dGV4Rm9ybWF0KTsKKyAgICAgICAgZDNkMTE6OkdldERYR0lG
b3JtYXRTaXplSW5mbyhkM2RGb3JtYXRJbmZvLnRleEZvcm1hdCk7CiAKICAgICBvdXRTdWJyZXNv
dXJjZURhdGEtPnJlc2l6ZShtaXBMZXZlbHMpOwogICAgIG91dERhdGEtPnJlc2l6ZShtaXBMZXZl
bHMpOwpAQCAtMTUwMSwxMyArMTgxNyw0OCBAQCBJRDNEMTFCbGVuZFN0YXRlICpMYXp5QmxlbmRT
dGF0ZTo6cmVzb2x2CiAgICAgcmV0dXJuIG1SZXNvdXJjZTsKIH0KIAotV29ya2Fyb3VuZHNEM0Qg
R2VuZXJhdGVXb3JrYXJvdW5kcyhEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCitXb3Jr
YXJvdW5kc0QzRCBHZW5lcmF0ZVdvcmthcm91bmRzKGNvbnN0IFJlbmRlcmVyMTFEZXZpY2VDYXBz
ICZkZXZpY2VDYXBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBE
WEdJX0FEQVBURVJfREVTQyAmYWRhcHRlckRlc2MpCiB7CisgICAgYm9vbCBpczlfMyA9IChkZXZp
Y2VDYXBzLmZlYXR1cmVMZXZlbCA8PSBEM0RfRkVBVFVSRV9MRVZFTF85XzMpOworCiAgICAgV29y
a2Fyb3VuZHNEM0Qgd29ya2Fyb3VuZHM7CiAgICAgd29ya2Fyb3VuZHMubXJ0UGVyZldvcmthcm91
bmQgPSB0cnVlOwogICAgIHdvcmthcm91bmRzLnNldERhdGFGYXN0ZXJUaGFuSW1hZ2VVcGxvYWQg
PSB0cnVlOwotICAgIHdvcmthcm91bmRzLnplcm9NYXhMb2RXb3JrYXJvdW5kID0gKGZlYXR1cmVM
ZXZlbCA8PSBEM0RfRkVBVFVSRV9MRVZFTF85XzMpOwotICAgIHdvcmthcm91bmRzLnVzZUluc3Rh
bmNlZFBvaW50U3ByaXRlRW11bGF0aW9uID0gKGZlYXR1cmVMZXZlbCA8PSBEM0RfRkVBVFVSRV9M
RVZFTF85XzMpOworICAgIHdvcmthcm91bmRzLnplcm9NYXhMb2RXb3JrYXJvdW5kICAgICAgICAg
ICAgID0gaXM5XzM7CisgICAgd29ya2Fyb3VuZHMudXNlSW5zdGFuY2VkUG9pbnRTcHJpdGVFbXVs
YXRpb24gPSBpczlfMzsKKworICAgIC8vIFRPRE8oam1hZGlsbCk6IE5hcnJvdyBwcm9ibGVtYXRp
YyBkcml2ZXIgcmFuZ2UuCisgICAgaWYgKGFkYXB0ZXJEZXNjLlZlbmRvcklkID09IFZFTkRPUl9J
RF9OVklESUEpCisgICAgeworICAgICAgICBpZiAoZGV2aWNlQ2Fwcy5kcml2ZXJWZXJzaW9uLnZh
bGlkKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIFdPUkQgcGFydDEgPSBISVdPUkQoZGV2aWNl
Q2Fwcy5kcml2ZXJWZXJzaW9uLnZhbHVlKCkuTG93UGFydCk7CisgICAgICAgICAgICBXT1JEIHBh
cnQyID0gTE9XT1JEKGRldmljZUNhcHMuZHJpdmVyVmVyc2lvbi52YWx1ZSgpLkxvd1BhcnQpOwor
CisgICAgICAgICAgICAvLyBEaXNhYmxlIHRoZSB3b3JrYXJvdW5kIHRvIGZpeCBhIHNlY29uZCBk
cml2ZXIgYnVnIG9uIG5ld2VyIE5WSURJQS4KKyAgICAgICAgICAgIHdvcmthcm91bmRzLmRlcHRo
U3RlbmNpbEJsaXRFeHRyYUNvcHkgPSAocGFydDEgPD0gMTN1ICYmIHBhcnQyIDwgNjg4MSk7Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICB3b3JrYXJvdW5k
cy5kZXB0aFN0ZW5jaWxCbGl0RXh0cmFDb3B5ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIC8vIFRPRE8oam1hZGlsbCk6IERpc2FibGUgd29ya2Fyb3VuZCB3aGVuIHdlIGhhdmUgYSBm
aXhlZCBjb21waWxlciBETEwuCisgICAgd29ya2Fyb3VuZHMuZXhwYW5kSW50ZWdlclBvd0V4cHJl
c3Npb25zID0gdHJ1ZTsKKworICAgIHdvcmthcm91bmRzLmZsdXNoQWZ0ZXJFbmRpbmdUcmFuc2Zv
cm1GZWVkYmFjayA9IChhZGFwdGVyRGVzYy5WZW5kb3JJZCA9PSBWRU5ET1JfSURfTlZJRElBKTsK
KyAgICB3b3JrYXJvdW5kcy5nZXREaW1lbnNpb25zSWdub3Jlc0Jhc2VMZXZlbCAgICAgPSAoYWRh
cHRlckRlc2MuVmVuZG9ySWQgPT0gVkVORE9SX0lEX05WSURJQSk7CisKKyAgICB3b3JrYXJvdW5k
cy5wcmVBZGRUZXhlbEZldGNoT2Zmc2V0cyA9IChhZGFwdGVyRGVzYy5WZW5kb3JJZCA9PSBWRU5E
T1JfSURfSU5URUwpOworICAgIHdvcmthcm91bmRzLmRpc2FibGVCNUc2UjVTdXBwb3J0ICAgID0g
KGFkYXB0ZXJEZXNjLlZlbmRvcklkID09IFZFTkRPUl9JRF9JTlRFTCk7CisgICAgd29ya2Fyb3Vu
ZHMucmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvciA9IChhZGFwdGVyRGVzYy5WZW5kb3JJZCA9PSBW
RU5ET1JfSURfSU5URUwpOworICAgIHdvcmthcm91bmRzLmVtdWxhdGVJc25hbkZsb2F0ICAgICAg
ICAgPSAoYWRhcHRlckRlc2MuVmVuZG9ySWQgPT0gVkVORE9SX0lEX0lOVEVMKTsKKworICAgIC8v
IFRPRE8oam1hZGlsbCk6IERpc2FibGUgd2hlbiB3ZSBoYXZlIGEgZml4ZWQgZHJpdmVyIHZlcnNp
b24uCisgICAgd29ya2Fyb3VuZHMuZW11bGF0ZVRpbnlTdGVuY2lsVGV4dHVyZXMgPSAoYWRhcHRl
ckRlc2MuVmVuZG9ySWQgPT0gVkVORE9SX0lEX0FNRCk7CisKICAgICByZXR1cm4gd29ya2Fyb3Vu
ZHM7CiB9CiAKQEAgLTE1MjYsNyArMTg3Nyw3IEBAIHZvaWQgSW5pdENvbnN0YW50QnVmZmVyRGVz
YyhEM0QxMV9CVUZGRVIKIFRleHR1cmVIZWxwZXIxMTo6VGV4dHVyZUhlbHBlcjExKCkKICAgICA6
IG1UZXh0dXJlVHlwZShHTF9OT05FKSwKICAgICAgIG1Gb3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9X
TiksCi0gICAgICBtQU5HTEVGb3JtYXQoZDNkMTE6OkFOR0xFX0ZPUk1BVF9OT05FKSwKKyAgICAg
IG1Gb3JtYXRTZXQobnVsbHB0ciksCiAgICAgICBtU2FtcGxlQ291bnQoMCksCiAgICAgICBtVGV4
dHVyZTJEKG51bGxwdHIpLAogICAgICAgbVRleHR1cmUzRChudWxscHRyKQpAQCAtMTUzNyw3ICsx
ODg4LDcgQEAgVGV4dHVyZUhlbHBlcjExOjpUZXh0dXJlSGVscGVyMTEoVGV4dHVyZQogICAgIDog
bVRleHR1cmVUeXBlKHRvQ29weS5tVGV4dHVyZVR5cGUpLAogICAgICAgbUV4dGVudHModG9Db3B5
Lm1FeHRlbnRzKSwKICAgICAgIG1Gb3JtYXQodG9Db3B5Lm1Gb3JtYXQpLAotICAgICAgbUFOR0xF
Rm9ybWF0KHRvQ29weS5tQU5HTEVGb3JtYXQpLAorICAgICAgbUZvcm1hdFNldCh0b0NvcHkubUZv
cm1hdFNldCksCiAgICAgICBtU2FtcGxlQ291bnQodG9Db3B5Lm1TYW1wbGVDb3VudCksCiAgICAg
ICBtVGV4dHVyZTJEKHRvQ29weS5tVGV4dHVyZTJEKSwKICAgICAgIG1UZXh0dXJlM0QodG9Db3B5
Lm1UZXh0dXJlM0QpCkBAIC0xNTQ3LDEwICsxODk4LDEwIEBAIFRleHR1cmVIZWxwZXIxMTo6VGV4
dHVyZUhlbHBlcjExKFRleHR1cmUKIAogLy8gc3RhdGljCiBUZXh0dXJlSGVscGVyMTEgVGV4dHVy
ZUhlbHBlcjExOjpNYWtlQW5kUmVmZXJlbmNlKElEM0QxMVJlc291cmNlICpnZW5lcmljUmVzb3Vy
Y2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQz
ZDExOjpBTkdMRUZvcm1hdCBhbmdsZUZvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZDNkMTE6OkZvcm1hdCAmZm9ybWF0U2V0KQog
ewogICAgIFRleHR1cmVIZWxwZXIxMSBuZXdIZWxwZXI7Ci0gICAgbmV3SGVscGVyLm1BTkdMRUZv
cm1hdCA9IGFuZ2xlRm9ybWF0OworICAgIG5ld0hlbHBlci5tRm9ybWF0U2V0ICAgPSAmZm9ybWF0
U2V0OwogICAgIG5ld0hlbHBlci5tVGV4dHVyZTJEICAgPSBkM2QxMTo6RHluYW1pY0Nhc3RDb21P
YmplY3Q8SUQzRDExVGV4dHVyZTJEPihnZW5lcmljUmVzb3VyY2UpOwogICAgIG5ld0hlbHBlci5t
VGV4dHVyZTNEICAgPSBkM2QxMTo6RHluYW1pY0Nhc3RDb21PYmplY3Q8SUQzRDExVGV4dHVyZTNE
PihnZW5lcmljUmVzb3VyY2UpOwogICAgIG5ld0hlbHBlci5tVGV4dHVyZVR5cGUgPSBuZXdIZWxw
ZXIubVRleHR1cmUyRCA/IEdMX1RFWFRVUkVfMkQgOiBHTF9URVhUVVJFXzNEOwpAQCAtMTU2MCwx
MCArMTkxMSwxMCBAQCBUZXh0dXJlSGVscGVyMTEgVGV4dHVyZUhlbHBlcjExOjpNYWtlQW5kCiAK
IC8vIHN0YXRpYwogVGV4dHVyZUhlbHBlcjExIFRleHR1cmVIZWxwZXIxMTo6TWFrZUFuZFBvc3Nl
c3MyRChJRDNEMTFUZXh0dXJlMkQgKnRleFRvT3duLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkM2QxMTo6QU5HTEVGb3JtYXQgYW5nbGVGb3JtYXQp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGQzZDExOjpGb3JtYXQgJmZvcm1hdFNldCkKIHsKICAgICBUZXh0dXJlSGVscGVyMTEgbmV3SGVs
cGVyOwotICAgIG5ld0hlbHBlci5tQU5HTEVGb3JtYXQgPSBhbmdsZUZvcm1hdDsKKyAgICBuZXdI
ZWxwZXIubUZvcm1hdFNldCAgID0gJmZvcm1hdFNldDsKICAgICBuZXdIZWxwZXIubVRleHR1cmUy
RCAgID0gdGV4VG9Pd247CiAgICAgbmV3SGVscGVyLm1UZXh0dXJlVHlwZSA9IEdMX1RFWFRVUkVf
MkQ7CiAgICAgbmV3SGVscGVyLmluaXREZXNjKCk7CkBAIC0xNTcyLDEwICsxOTIzLDEwIEBAIFRl
eHR1cmVIZWxwZXIxMSBUZXh0dXJlSGVscGVyMTE6Ok1ha2VBbmQKIAogLy8gc3RhdGljCiBUZXh0
dXJlSGVscGVyMTEgVGV4dHVyZUhlbHBlcjExOjpNYWtlQW5kUG9zc2VzczNEKElEM0QxMVRleHR1
cmUzRCAqdGV4VG9Pd24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGQzZDExOjpBTkdMRUZvcm1hdCBhbmdsZUZvcm1hdCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZDNkMTE6OkZvcm1hdCAm
Zm9ybWF0U2V0KQogewogICAgIFRleHR1cmVIZWxwZXIxMSBuZXdIZWxwZXI7Ci0gICAgbmV3SGVs
cGVyLm1BTkdMRUZvcm1hdCA9IGFuZ2xlRm9ybWF0OworICAgIG5ld0hlbHBlci5tRm9ybWF0U2V0
ICAgPSAmZm9ybWF0U2V0OwogICAgIG5ld0hlbHBlci5tVGV4dHVyZTNEICAgPSB0ZXhUb093bjsK
ICAgICBuZXdIZWxwZXIubVRleHR1cmVUeXBlID0gR0xfVEVYVFVSRV8zRDsKICAgICBuZXdIZWxw
ZXIuaW5pdERlc2MoKTsKQEAgLTE2MDgsNyArMTk1OSw3IEBAIHZvaWQgVGV4dHVyZUhlbHBlcjEx
Ojppbml0RGVzYygpCiAgICAgICAgIG1Gb3JtYXQgICAgICAgICA9IGRlc2MzRC5Gb3JtYXQ7CiAg
ICAgICAgIG1TYW1wbGVDb3VudCAgICA9IDE7CiAgICAgfQotICAgIEFTU0VSVChtRm9ybWF0ID09
IGQzZDExOjpHZXRBTkdMRUZvcm1hdFNldChtQU5HTEVGb3JtYXQpLnRleEZvcm1hdCk7CisgICAg
QVNTRVJUKG1Gb3JtYXRTZXQgJiYgbUZvcm1hdCA9PSBtRm9ybWF0U2V0LT50ZXhGb3JtYXQpOwog
fQogCiBUZXh0dXJlSGVscGVyMTE6On5UZXh0dXJlSGVscGVyMTEoKQpAQCAtMTYzMSwxMCArMTk4
MiwxMCBAQCBUZXh0dXJlSGVscGVyMTEgJlRleHR1cmVIZWxwZXIxMTo6b3BlcmF0CiAgICAgbVRl
eHR1cmVUeXBlID0gdGV4dHVyZS5tVGV4dHVyZVR5cGU7CiAgICAgbUV4dGVudHMgICAgID0gdGV4
dHVyZS5tRXh0ZW50czsKICAgICBtRm9ybWF0ICAgICAgPSB0ZXh0dXJlLm1Gb3JtYXQ7Ci0gICAg
bUFOR0xFRm9ybWF0ID0gdGV4dHVyZS5tQU5HTEVGb3JtYXQ7CisgICAgbUZvcm1hdFNldCAgID0g
dGV4dHVyZS5tRm9ybWF0U2V0OwogICAgIG1TYW1wbGVDb3VudCA9IHRleHR1cmUubVNhbXBsZUNv
dW50OwogICAgIG1UZXh0dXJlMkQgICA9IHRleHR1cmUubVRleHR1cmUyRDsKLSAgICBtVGV4dHVy
ZTNEID0gdGV4dHVyZS5tVGV4dHVyZTNEOworICAgIG1UZXh0dXJlM0QgICA9IHRleHR1cmUubVRl
eHR1cmUzRDsKICAgICB0ZXh0dXJlLnJlc2V0KCk7CiAgICAgcmV0dXJuICp0aGlzOwogfQpAQCAt
MTY0NCwxNSArMTk5NSwyMSBAQCB2b2lkIFRleHR1cmVIZWxwZXIxMTo6cmVzZXQoKQogICAgIG1U
ZXh0dXJlVHlwZSA9IEdMX05PTkU7CiAgICAgbUV4dGVudHMgICAgID0gZ2w6OkV4dGVudHMoKTsK
ICAgICBtRm9ybWF0ICAgICAgPSBEWEdJX0ZPUk1BVF9VTktOT1dOOworICAgIG1Gb3JtYXRTZXQg
ICA9IG51bGxwdHI7CiAgICAgbVNhbXBsZUNvdW50ID0gMDsKICAgICBtVGV4dHVyZTJEICAgPSBu
dWxscHRyOwogICAgIG1UZXh0dXJlM0QgICA9IG51bGxwdHI7CiB9CiAKK2Jvb2wgVGV4dHVyZUhl
bHBlcjExOjp2YWxpZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIChtVGV4dHVyZVR5cGUgIT0gR0xf
Tk9ORSk7Cit9CisKIGdsOjpFcnJvck9yUmVzdWx0PFRleHR1cmVIZWxwZXIxMT4gQ3JlYXRlU3Rh
Z2luZ1RleHR1cmUoR0xlbnVtIHRleHR1cmVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVCBkeGdpRm9ybWF0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
M2QxMTo6QU5HTEVGb3JtYXQgYW5nbGVGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGQzZDExOjpGb3JtYXQgJmZvcm1h
dFNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YWdpbmdBY2Nlc3MgcmVhZEFuZFdyaXRl
QWNjZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBJRDNEMTFEZXZpY2UgKmRldmljZSkKIHsKICAgICBpZiAodGV4dHVyZVR5cGUgPT0g
R0xfVEVYVFVSRV8yRCkKQEAgLTE2NjIsNyArMjAxOSw3IEBAIGdsOjpFcnJvck9yUmVzdWx0PFRl
eHR1cmVIZWxwZXIxMT4gQ3JlYXQKICAgICAgICAgc3RhZ2luZ0Rlc2MuSGVpZ2h0ICAgICAgICAg
ICAgID0gc2l6ZS5oZWlnaHQ7CiAgICAgICAgIHN0YWdpbmdEZXNjLk1pcExldmVscyAgICAgICAg
ICA9IDE7CiAgICAgICAgIHN0YWdpbmdEZXNjLkFycmF5U2l6ZSAgICAgICAgICA9IDE7Ci0gICAg
ICAgIHN0YWdpbmdEZXNjLkZvcm1hdCAgICAgICAgICAgICA9IGR4Z2lGb3JtYXQ7CisgICAgICAg
IHN0YWdpbmdEZXNjLkZvcm1hdCAgICAgICAgICAgICA9IGZvcm1hdFNldC50ZXhGb3JtYXQ7CiAg
ICAgICAgIHN0YWdpbmdEZXNjLlNhbXBsZURlc2MuQ291bnQgICA9IDE7CiAgICAgICAgIHN0YWdp
bmdEZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7CiAgICAgICAgIHN0YWdpbmdEZXNjLlVzYWdl
ICAgICAgICAgICAgICA9IEQzRDExX1VTQUdFX1NUQUdJTkc7CkBAIC0xNjcwLDYgKzIwMjcsMTEg
QEAgZ2w6OkVycm9yT3JSZXN1bHQ8VGV4dHVyZUhlbHBlcjExPiBDcmVhdAogICAgICAgICBzdGFn
aW5nRGVzYy5DUFVBY2Nlc3NGbGFncyAgICAgPSBEM0QxMV9DUFVfQUNDRVNTX1JFQUQ7CiAgICAg
ICAgIHN0YWdpbmdEZXNjLk1pc2NGbGFncyAgICAgICAgICA9IDA7CiAKKyAgICAgICAgaWYgKHJl
YWRBbmRXcml0ZUFjY2VzcyA9PSBTdGFnaW5nQWNjZXNzOjpSRUFEX1dSSVRFKQorICAgICAgICB7
CisgICAgICAgICAgICBzdGFnaW5nRGVzYy5DUFVBY2Nlc3NGbGFncyB8PSBEM0QxMV9DUFVfQUND
RVNTX1dSSVRFOworICAgICAgICB9CisKICAgICAgICAgSUQzRDExVGV4dHVyZTJEICpzdGFnaW5n
VGV4ID0gbnVsbHB0cjsKICAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVRl
eHR1cmUyRCgmc3RhZ2luZ0Rlc2MsIG51bGxwdHIsICZzdGFnaW5nVGV4KTsKICAgICAgICAgaWYg
KEZBSUxFRChyZXN1bHQpKQpAQCAtMTY3OCw3ICsyMDQwLDcgQEAgZ2w6OkVycm9yT3JSZXN1bHQ8
VGV4dHVyZUhlbHBlcjExPiBDcmVhdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1
bHQpOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIFRleHR1cmVIZWxwZXIxMTo6TWFrZUFu
ZFBvc3Nlc3MyRChzdGFnaW5nVGV4LCBhbmdsZUZvcm1hdCk7CisgICAgICAgIHJldHVybiBUZXh0
dXJlSGVscGVyMTE6Ok1ha2VBbmRQb3NzZXNzMkQoc3RhZ2luZ1RleCwgZm9ybWF0U2V0KTsKICAg
ICB9CiAgICAgQVNTRVJUKHRleHR1cmVUeXBlID09IEdMX1RFWFRVUkVfM0QpOwogCkBAIC0xNjg3
LDcgKzIwNDksNyBAQCBnbDo6RXJyb3JPclJlc3VsdDxUZXh0dXJlSGVscGVyMTE+IENyZWF0CiAg
ICAgc3RhZ2luZ0Rlc2MuSGVpZ2h0ICAgICAgICAgPSBzaXplLmhlaWdodDsKICAgICBzdGFnaW5n
RGVzYy5EZXB0aCAgICAgICAgICA9IDE7CiAgICAgc3RhZ2luZ0Rlc2MuTWlwTGV2ZWxzICAgICAg
PSAxOwotICAgIHN0YWdpbmdEZXNjLkZvcm1hdCAgICAgICAgID0gZHhnaUZvcm1hdDsKKyAgICBz
dGFnaW5nRGVzYy5Gb3JtYXQgICAgICAgICA9IGZvcm1hdFNldC50ZXhGb3JtYXQ7CiAgICAgc3Rh
Z2luZ0Rlc2MuVXNhZ2UgICAgICAgICAgPSBEM0QxMV9VU0FHRV9TVEFHSU5HOwogICAgIHN0YWdp
bmdEZXNjLkJpbmRGbGFncyAgICAgID0gMDsKICAgICBzdGFnaW5nRGVzYy5DUFVBY2Nlc3NGbGFn
cyA9IEQzRDExX0NQVV9BQ0NFU1NfUkVBRDsKQEAgLTE3MDEsNyArMjA2Myw3IEBAIGdsOjpFcnJv
ck9yUmVzdWx0PFRleHR1cmVIZWxwZXIxMT4gQ3JlYXQKICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHQpOwogICAgIH0KIAotICAgIHJldHVybiBUZXh0dXJlSGVscGVyMTE6Ok1ha2VBbmRQ
b3NzZXNzM0Qoc3RhZ2luZ1RleCwgYW5nbGVGb3JtYXQpOworICAgIHJldHVybiBUZXh0dXJlSGVs
cGVyMTE6Ok1ha2VBbmRQb3NzZXNzM0Qoc3RhZ2luZ1RleCwgZm9ybWF0U2V0KTsKIH0KIAogYm9v
bCBVc2VQcmVzZW50UGF0aEZhc3QoY29uc3QgUmVuZGVyZXIxMSAqcmVuZGVyZXIsCkBAIC0xNzE2
LDQwICsyMDc4LDQgQEAgYm9vbCBVc2VQcmVzZW50UGF0aEZhc3QoY29uc3QgUmVuZGVyZXIxMQog
ICAgICAgICAgICAgcmVuZGVyZXItPnByZXNlbnRQYXRoRmFzdEVuYWJsZWQoKSk7CiB9CiAKLU5v
dGlmaWNhdGlvblNldDo6Tm90aWZpY2F0aW9uU2V0KCkKLXsKLX0KLQotTm90aWZpY2F0aW9uU2V0
Ojp+Tm90aWZpY2F0aW9uU2V0KCkKLXsKLX0KLQotdm9pZCBOb3RpZmljYXRpb25TZXQ6OmFkZChj
b25zdCBOb3RpZmljYXRpb25DYWxsYmFjayAqY2FsbGJhY2spCi17Ci0gICAgQVNTRVJUKG1DYWxs
YmFja3MuY291bnQoY2FsbGJhY2spID09IDApOwotICAgIG1DYWxsYmFja3MuaW5zZXJ0KGNhbGxi
YWNrKTsKLX0KLQotdm9pZCBOb3RpZmljYXRpb25TZXQ6OnJlbW92ZShjb25zdCBOb3RpZmljYXRp
b25DYWxsYmFjayAqY2FsbGJhY2spCi17Ci0gICAgQVNTRVJUKG1DYWxsYmFja3MuY291bnQoY2Fs
bGJhY2spID09IDEpOwotICAgIG1DYWxsYmFja3MuZXJhc2UoY2FsbGJhY2spOwotfQotCi12b2lk
IE5vdGlmaWNhdGlvblNldDo6c2lnbmFsKCkgY29uc3QKLXsKLSAgICBpZiAobUNhbGxiYWNrcy5l
bXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKGNvbnN0IGF1dG8gKmNhbGxiYWNr
IDogbUNhbGxiYWNrcykKLSAgICB7Ci0gICAgICAgICgqY2FsbGJhY2spKCk7Ci0gICAgfQotfQot
Ci12b2lkIE5vdGlmaWNhdGlvblNldDo6Y2xlYXIoKQotewotICAgIG1DYWxsYmFja3MuY2xlYXIo
KTsKLX0KLQogfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFfdXRpbHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL3JlbmRlcmVyMTFfdXRpbHMuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJl
cjExX3V0aWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0LDcgKzE0LDggQEAKICNpbmNsdWRlIDxm
dW5jdGlvbmFsPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgImxpYkFOR0xFL2FuZ2xl
dHlwZXMuaCIKKyNpbmNsdWRlICJjb21tb24vQ29sb3IuaCIKKwogI2luY2x1ZGUgImxpYkFOR0xF
L0NhcHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9FcnJvci5oIgogI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZS5oIgpAQCAtNTEsNiArNTIs
NyBAQCBEM0QxMV9TVEVOQ0lMX09QIENvbnZlcnRTdGVuY2lsT3AoR0xlbnVtCiAKIEQzRDExX0ZJ
TFRFUiBDb252ZXJ0RmlsdGVyKEdMZW51bSBtaW5GaWx0ZXIsIEdMZW51bSBtYWdGaWx0ZXIsIGZs
b2F0IG1heEFuaXNvdHJvcHksIEdMZW51bSBjb21wYXJpc29uTW9kZSk7CiBEM0QxMV9URVhUVVJF
X0FERFJFU1NfTU9ERSBDb252ZXJ0VGV4dHVyZVdyYXAoR0xlbnVtIHdyYXApOworVUlOVCBDb252
ZXJ0TWF4QW5pc290cm9weShmbG9hdCBtYXhBbmlzb3Ryb3B5LCBEM0RfRkVBVFVSRV9MRVZFTCBm
ZWF0dXJlTGV2ZWwpOwogCiBEM0QxMV9RVUVSWSBDb252ZXJ0UXVlcnlUeXBlKEdMZW51bSBxdWVy
eVR5cGUpOwogCkBAIC0zNDUsNyArMzQ3LDggQEAgdm9pZCBTZXRCdWZmZXJEYXRhKElEM0QxMURl
dmljZUNvbnRleHQgKgogICAgIH0KIH0KIAotV29ya2Fyb3VuZHNEM0QgR2VuZXJhdGVXb3JrYXJv
dW5kcyhEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpOworV29ya2Fyb3VuZHNEM0QgR2Vu
ZXJhdGVXb3JrYXJvdW5kcyhjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmZGV2aWNlQ2FwcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRFhHSV9BREFQVEVSX0RF
U0MgJmFkYXB0ZXJEZXNjKTsKIAogZW51bSBSZXNlcnZlZENvbnN0YW50QnVmZmVyU2xvdAogewpA
QCAtMzY4LDIwICszNzEsMjEgQEAgY2xhc3MgVGV4dHVyZUhlbHBlcjExIDogYW5nbGU6Ok5vbkNv
cHlhYgogICAgIFRleHR1cmVIZWxwZXIxMSAmb3BlcmF0b3I9KFRleHR1cmVIZWxwZXIxMSAmJnRl
eHR1cmUpOwogCiAgICAgc3RhdGljIFRleHR1cmVIZWxwZXIxMSBNYWtlQW5kUmVmZXJlbmNlKElE
M0QxMVJlc291cmNlICpnZW5lcmljUmVzb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGQzZDExOjpBTkdMRUZvcm1hdCBhbmdsZUZvcm1hdCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGQzZDExOjpGb3Jt
YXQgJmZvcm1hdFNldCk7CiAgICAgc3RhdGljIFRleHR1cmVIZWxwZXIxMSBNYWtlQW5kUG9zc2Vz
czJEKElEM0QxMVRleHR1cmUyRCAqdGV4VG9Pd24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGQzZDExOjpBTkdMRUZvcm1hdCBhbmdsZUZvcm1hdCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGQzZDExOjpGb3Jt
YXQgJmZvcm1hdFNldCk7CiAgICAgc3RhdGljIFRleHR1cmVIZWxwZXIxMSBNYWtlQW5kUG9zc2Vz
czNEKElEM0QxMVRleHR1cmUzRCAqdGV4VG9Pd24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGQzZDExOjpBTkdMRUZvcm1hdCBhbmdsZUZvcm1hdCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGQzZDExOjpGb3Jt
YXQgJmZvcm1hdFNldCk7CiAKICAgICBHTGVudW0gZ2V0VGV4dHVyZVR5cGUoKSBjb25zdCB7IHJl
dHVybiBtVGV4dHVyZVR5cGU7IH0KICAgICBnbDo6RXh0ZW50cyBnZXRFeHRlbnRzKCkgY29uc3Qg
eyByZXR1cm4gbUV4dGVudHM7IH0KICAgICBEWEdJX0ZPUk1BVCBnZXRGb3JtYXQoKSBjb25zdCB7
IHJldHVybiBtRm9ybWF0OyB9Ci0gICAgZDNkMTE6OkFOR0xFRm9ybWF0IGdldEFOR0xFRm9ybWF0
KCkgY29uc3QgeyByZXR1cm4gbUFOR0xFRm9ybWF0OyB9CisgICAgY29uc3QgZDNkMTE6OkZvcm1h
dCAmZ2V0Rm9ybWF0U2V0KCkgY29uc3QgeyByZXR1cm4gKm1Gb3JtYXRTZXQ7IH0KICAgICBpbnQg
Z2V0U2FtcGxlQ291bnQoKSBjb25zdCB7IHJldHVybiBtU2FtcGxlQ291bnQ7IH0KICAgICBJRDNE
MTFUZXh0dXJlMkQgKmdldFRleHR1cmUyRCgpIGNvbnN0IHsgcmV0dXJuIG1UZXh0dXJlMkQ7IH0K
ICAgICBJRDNEMTFUZXh0dXJlM0QgKmdldFRleHR1cmUzRCgpIGNvbnN0IHsgcmV0dXJuIG1UZXh0
dXJlM0Q7IH0KICAgICBJRDNEMTFSZXNvdXJjZSAqZ2V0UmVzb3VyY2UoKSBjb25zdDsKKyAgICBi
b29sIHZhbGlkKCkgY29uc3Q7CiAKICAgcHJpdmF0ZToKICAgICB2b2lkIHJlc2V0KCk7CkBAIC0z
OTAsMzcgKzM5NCwyNiBAQCBjbGFzcyBUZXh0dXJlSGVscGVyMTEgOiBhbmdsZTo6Tm9uQ29weWFi
CiAgICAgR0xlbnVtIG1UZXh0dXJlVHlwZTsKICAgICBnbDo6RXh0ZW50cyBtRXh0ZW50czsKICAg
ICBEWEdJX0ZPUk1BVCBtRm9ybWF0OwotICAgIGQzZDExOjpBTkdMRUZvcm1hdCBtQU5HTEVGb3Jt
YXQ7CisgICAgY29uc3QgZDNkMTE6OkZvcm1hdCAqbUZvcm1hdFNldDsKICAgICBpbnQgbVNhbXBs
ZUNvdW50OwogICAgIElEM0QxMVRleHR1cmUyRCAqbVRleHR1cmUyRDsKICAgICBJRDNEMTFUZXh0
dXJlM0QgKm1UZXh0dXJlM0Q7CiB9OwogCitlbnVtIGNsYXNzIFN0YWdpbmdBY2Nlc3MKK3sKKyAg
ICBSRUFELAorICAgIFJFQURfV1JJVEUsCit9OworCiBnbDo6RXJyb3JPclJlc3VsdDxUZXh0dXJl
SGVscGVyMTE+IENyZWF0ZVN0YWdpbmdUZXh0dXJlKEdMZW51bSB0ZXh0dXJlVHlwZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVQgZHhnaUZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZDNkMTE6OkFOR0xFRm9ybWF0IGFuZ2xlRm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBk
M2QxMTo6Rm9ybWF0ICZmb3JtYXRTZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFnaW5n
QWNjZXNzIHJlYWRBbmRXcml0ZUFjY2VzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSUQzRDExRGV2aWNlICpkZXZpY2UpOwogCiBib29s
IFVzZVByZXNlbnRQYXRoRmFzdChjb25zdCBSZW5kZXJlcjExICpyZW5kZXJlciwgY29uc3QgZ2w6
OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqY29sb3JidWZmZXIpOwogCi11c2luZyBOb3RpZmljYXRp
b25DYWxsYmFjayA9IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPjsKLQotY2xhc3MgTm90aWZpY2F0aW9u
U2V0IGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCi17Ci0gIHB1YmxpYzoKLSAgICBOb3RpZmlj
YXRpb25TZXQoKTsKLSAgICB+Tm90aWZpY2F0aW9uU2V0KCk7Ci0KLSAgICB2b2lkIGFkZChjb25z
dCBOb3RpZmljYXRpb25DYWxsYmFjayAqY2FsbGJhY2spOwotICAgIHZvaWQgcmVtb3ZlKGNvbnN0
IE5vdGlmaWNhdGlvbkNhbGxiYWNrICpjYWxsYmFjayk7Ci0gICAgdm9pZCBzaWduYWwoKSBjb25z
dDsKLSAgICB2b2lkIGNsZWFyKCk7Ci0KLSAgcHJpdmF0ZToKLSAgICBzdGQ6OnNldDxjb25zdCBO
b3RpZmljYXRpb25DYWxsYmFjayAqPiBtQ2FsbGJhY2tzOwotfTsKLQogfSAgLy8gbmFtZXNwYWNl
IHJ4CiAKICNlbmRpZiAvLyBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfUkVOREVSRVIxMV9V
VElMU19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF9kYXRhLmpzb24KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0
dXJlX2Zvcm1hdF9kYXRhLmpzb24JKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRf
ZGF0YS5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3ICsxLDE3IEBACiB7Ci0gICJBTkdMRV9G
T1JNQVRfTk9ORSI6IHsKLQorICAiTk9ORSI6IHsKICAgfSwKLSAgIkFOR0xFX0ZPUk1BVF9BOF9V
Tk9STSI6IHsKKyAgIkE4X1VOT1JNIjogewogICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRf
QThfVU5PUk0iLAogICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfQThfVU5PUk0iLAogICAg
ICJydHZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfQThfVU5PUk0iLAogICAgICJjaGFubmVscyI6ICJh
IiwKICAgICAiY29tcG9uZW50VHlwZSI6ICJ1bm9ybSIsCiAgICAgImJpdHMiOiB7ICJhbHBoYSI6
IDggfSwKLSAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9BTFBIQThfRVhUIgorICAgICJzdXBw
b3J0VGVzdCI6ICJPbmx5RkwxMFBsdXMoZGV2aWNlQ2FwcykiLAorICAgICJmYWxsYmFja0Zvcm1h
dCI6ICJSOEc4QjhBOF9VTk9STSIKICAgfSwKLSAgIkFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9S
TSI6IHsKKyAgIlI4RzhCOEE4X1VOT1JNIjogewogICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JN
QVRfUjhHOEI4QThfVU5PUk0iLAogICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOEI4
QThfVU5PUk0iLAogICAgICJydHZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0i
LApAQCAtMjAsMTUgKzIwLDE2IEBACiAgICAgImJpdHMiOiB7ICJyZWQiOiA4LCAiZ3JlZW4iOiA4
LCAiYmx1ZSI6IDgsICJhbHBoYSI6IDggfSwKICAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9S
R0JBOCIKICAgfSwKLSAgIkFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk0iOiB7CisgICJS
MTZHMTZCMTZBMTZfVU5PUk0iOiB7CiAgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZH
MTZCMTZBMTZfVU5PUk0iLAogICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2RzE2QjE2
QTE2X1VOT1JNIiwKICAgICAicnR2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9V
Tk9STSIsCiAgICAgImNoYW5uZWxzIjogInJnYmEiLAogICAgICJjb21wb25lbnRUeXBlIjogInVu
b3JtIiwKLSAgICAiYml0cyI6IHsgInJlZCI6IDE2LCAiZ3JlZW4iOiAxNiwgImJsdWUiOiAxNiwg
ImFscGhhIjogMTYgfQorICAgICJiaXRzIjogeyAicmVkIjogMTYsICJncmVlbiI6IDE2LCAiYmx1
ZSI6IDE2LCAiYWxwaGEiOiAxNiB9LAorICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX1JHQkEx
Nl9FWFQiCiAgIH0sCi0gICJBTkdMRV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FUIjogeworICAi
UjE2RzE2QjE2QTE2X0ZMT0FUIjogewogICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2
RzE2QjE2QTE2X0ZMT0FUIiwKICAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcxNkIx
NkExNl9GTE9BVCIsCiAgICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZf
RkxPQVQiLApAQCAtMzcsNyArMzgsNyBAQAogICAgICJiaXRzIjogeyAicmVkIjogMTYsICJncmVl
biI6IDE2LCAiYmx1ZSI6IDE2LCAiYWxwaGEiOiAxNiB9LAogICAgICJnbEludGVybmFsRm9ybWF0
IjogIkdMX1JHQkExNkYiCiAgIH0sCi0gICJBTkdMRV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FU
IjogeworICAiUjMyRzMyQjMyQTMyX0ZMT0FUIjogewogICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9G
T1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FUIiwKICAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFU
X1IzMkczMkIzMkEzMl9GTE9BVCIsCiAgICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMzJH
MzJCMzJBMzJfRkxPQVQiLApAQCAtNDYsNyArNDcsNyBAQAogICAgICJiaXRzIjogeyAicmVkIjog
MzIsICJncmVlbiI6IDMyLCAiYmx1ZSI6IDMyLCAiYWxwaGEiOiAzMiB9LAogICAgICJnbEludGVy
bmFsRm9ybWF0IjogIkdMX1JHQkEzMkYiCiAgIH0sCi0gICJBTkdMRV9GT1JNQVRfQjhHOFI4QThf
VU5PUk0iOiB7CisgICJCOEc4UjhBOF9VTk9STSI6IHsKICAgICAidGV4Rm9ybWF0IjogIkRYR0lf
Rk9STUFUX0I4RzhSOEE4X1VOT1JNIiwKICAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX0I4
RzhSOEE4X1VOT1JNIiwKICAgICAicnR2Rm9ybWF0IjogIkRYR0lfRk9STUFUX0I4RzhSOEE4X1VO
T1JNIiwKQEAgLTU1LDc4ICs1Niw1MiBAQAogICAgICJiaXRzIjogeyAicmVkIjogOCwgImdyZWVu
IjogOCwgImJsdWUiOiA4LCAiYWxwaGEiOiA4IH0sCiAgICAgImdsSW50ZXJuYWxGb3JtYXQiOiAi
R0xfQkdSQThfRVhUIgogICB9LAotICAiQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNX05PTlJF
TkRFUkFCTEUiOiB7Ci0gICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9S
TSIsCi0gICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSIsCisgICJC
QzFfUkdCQV9VTk9STV9CTE9DSyI6IHsKKyAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX0JD
MV9VTk9STSIsCisgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9CQzFfVU5PUk0iLAogICAg
ICJjaGFubmVscyI6ICJyZ2JhIiwKICAgICAiY29tcG9uZW50VHlwZSI6ICJ1bm9ybSIsCi0gICAg
ImJpdHMiOiB7ICJyZWQiOiA4LCAiZ3JlZW4iOiA4LCAiYmx1ZSI6IDgsICJhbHBoYSI6IDggfSwK
LSAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9SR0JBOCIKKyAgICAic3dpenpsZUZvcm1hdCI6
ICJHTF9SR0JBOCIsCisgICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfQ09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUMV9FWFQiCiAgIH0sCi0gICJBTkdMRV9GT1JNQVRfQkMxX1VOT1JNIjogeworICAi
QkMxX1JHQl9VTk9STV9CTE9DSyI6IHsKICAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX0JD
MV9VTk9STSIsCiAgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9CQzFfVU5PUk0iLAogICAg
ICJjaGFubmVscyI6ICJyZ2JhIiwKICAgICAiY29tcG9uZW50VHlwZSI6ICJ1bm9ybSIsCi0gICAg
InN3aXp6bGVGb3JtYXQiOiAiQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNIiwKKyAgICAic3dp
enpsZUZvcm1hdCI6ICJHTF9SR0JBOCIsCiAgICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfQ09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQiCiAgIH0sCi0gICJBTkdMRV9GT1JNQVRfQkMyX1VO
T1JNIjogeworICAiQkMyX1JHQkFfVU5PUk1fQkxPQ0siOiB7CiAgICAgInRleEZvcm1hdCI6ICJE
WEdJX0ZPUk1BVF9CQzJfVU5PUk0iLAogICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfQkMy
X1VOT1JNIiwKICAgICAiY2hhbm5lbHMiOiAicmdiYSIsCiAgICAgImNvbXBvbmVudFR5cGUiOiAi
dW5vcm0iLAotICAgICJzd2l6emxlRm9ybWF0IjogIkFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9S
TSIsCisgICAgInN3aXp6bGVGb3JtYXQiOiAiR0xfUkdCQTgiLAogICAgICJnbEludGVybmFsRm9y
bWF0IjogIkdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEUiCiAgIH0sCi0gICJBTkdM
RV9GT1JNQVRfQkMzX1VOT1JNIjogeworICAiQkMzX1JHQkFfVU5PUk1fQkxPQ0siOiB7CiAgICAg
InRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9CQzNfVU5PUk0iLAogICAgICJzcnZGb3JtYXQiOiAi
RFhHSV9GT1JNQVRfQkMzX1VOT1JNIiwKICAgICAiY2hhbm5lbHMiOiAicmdiYSIsCiAgICAgImNv
bXBvbmVudFR5cGUiOiAidW5vcm0iLAotICAgICJzd2l6emxlRm9ybWF0IjogIkFOR0xFX0ZPUk1B
VF9SOEc4QjhBOF9VTk9STSIsCisgICAgInN3aXp6bGVGb3JtYXQiOiAiR0xfUkdCQTgiLAogICAg
ICJnbEludGVybmFsRm9ybWF0IjogIkdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEUi
CiAgIH0sCi0gICJBTkdMRV9GT1JNQVRfUjhfU05PUk1fTk9OUkVOREVSQUJMRSI6IHsKLSAgICAi
dGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4X1NOT1JNIiwKLSAgICAic3J2Rm9ybWF0IjogIkRY
R0lfRk9STUFUX1I4X1NOT1JNIiwKLSAgICAiY2hhbm5lbHMiOiAiciIsCi0gICAgImNvbXBvbmVu
dFR5cGUiOiAic25vcm0iLAotICAgICJiaXRzIjogeyAicmVkIjogOCB9LAotICAgICJnbEludGVy
bmFsRm9ybWF0IjogIkdMX1I4X1NOT1JNIgotICB9LAotICAiQU5HTEVfRk9STUFUX1I4RzhfU05P
Uk1fTk9OUkVOREVSQUJMRSI6IHsKLSAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4Rzhf
U05PUk0iLAotICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOF9TTk9STSIsCi0gICAg
ImNoYW5uZWxzIjogInJnIiwKLSAgICAiY29tcG9uZW50VHlwZSI6ICJzbm9ybSIsCi0gICAgImJp
dHMiOiB7ICJyZWQiOiA4LCAiZ3JlZW4iOiA4IH0sCi0gICAgImdsSW50ZXJuYWxGb3JtYXQiOiAi
R0xfUkc4X1NOT1JNIgotICB9LAotICAiQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0Jf
Tk9OUkVOREVSQUJMRSI6IHsKLSAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhCOEE4
X1VOT1JNX1NSR0IiLAotICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5P
Uk1fU1JHQiIsCi0gICAgImNoYW5uZWxzIjogInJnYmEiLAotICAgICJjb21wb25lbnRUeXBlIjog
InVub3JtIiwKLSAgICAiYml0cyI6IHsgInJlZCI6IDgsICJncmVlbiI6IDgsICJibHVlIjogOCwg
ImFscGhhIjogOCB9LAotICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX1NSR0I4X0FMUEhBOCIK
LSAgfSwKLSAgIkFOR0xFX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVF9GTDEwIjogewotICAgICJ0
ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjI0RzhfVFlQRUxFU1MiLAotICAgICJzcnZGb3JtYXQi
OiAiRFhHSV9GT1JNQVRfUjI0X1VOT1JNX1g4X1RZUEVMRVNTIiwKLSAgICAiZHN2Rm9ybWF0Ijog
IkRYR0lfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5UIiwKLSAgICAiY2hhbm5lbHMiOiAiZHMiLAot
ICAgICJiaXRzIjogeyAiZGVwdGgiOiAyNCwgInN0ZW5jaWwiOiA4IH0sCi0gICAgImdsSW50ZXJu
YWxGb3JtYXQiOiAiR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVMiCi0gIH0sCi0gICJBTkdMRV9GT1JN
QVRfRDI0X1VOT1JNX1M4X1VJTlRfRkw5XzMiOiB7Ci0gICAgInRleEZvcm1hdCI6ICJEWEdJX0ZP
Uk1BVF9EMjRfVU5PUk1fUzhfVUlOVCIsCisgICJEMjRfVU5PUk1fUzhfVUlOVCI6IHsKKyAgICAi
RkwxMFBsdXMiOiB7CisgICAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IyNEc4X1RZUEVM
RVNTIiwKKyAgICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjI0X1VOT1JNX1g4X1RZUEVM
RVNTIgorICAgIH0sCisgICAgIkZMOV8zIjogeworICAgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZP
Uk1BVF9EMjRfVU5PUk1fUzhfVUlOVCIKKyAgICB9LAogICAgICJkc3ZGb3JtYXQiOiAiRFhHSV9G
T1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQiLAogICAgICJjaGFubmVscyI6ICJkcyIsCiAgICAgImJp
dHMiOiB7ICJkZXB0aCI6IDI0LCAic3RlbmNpbCI6IDggfSwKICAgICAiZ2xJbnRlcm5hbEZvcm1h
dCI6ICJHTF9ERVBUSDI0X1NURU5DSUw4X09FUyIKICAgfSwKLSAgIkFOR0xFX0ZPUk1BVF9EMzJf
RkxPQVRfUzhYMjRfVUlOVF9GTDEwIjogeworICAiRDMyX0ZMT0FUX1M4WDI0X1VJTlQiOiB7CiAg
ICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMzJHOFgyNF9UWVBFTEVTUyIsCiAgICAgInNy
dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMzJfRkxPQVRfWDhYMjRfVFlQRUxFU1MiLAogICAgICJk
c3ZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfRDMyX0ZMT0FUX1M4WDI0X1VJTlQiLApAQCAtMTM0LDI0
ICsxMDksMjEgQEAKICAgICAiYml0cyI6IHsgImRlcHRoIjogMzIsICJzdGVuY2lsIjogOCB9LAog
ICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX0RFUFRIMzJGX1NURU5DSUw4IgogICB9LAotICAi
QU5HTEVfRk9STUFUX0QxNl9VTk9STV9GTDEwIjogewotICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9G
T1JNQVRfUjE2X1RZUEVMRVNTIiwKLSAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNl9V
Tk9STSIsCisgICJEMTZfVU5PUk0iOiB7CisgICAgIkZMMTBQbHVzIjogeworICAgICAgInRleEZv
cm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZfVFlQRUxFU1MiLAorICAgICAgInNydkZvcm1hdCI6ICJE
WEdJX0ZPUk1BVF9SMTZfVU5PUk0iCisgICAgfSwKKyAgICAiRkw5XzMiOiB7CisgICAgICAidGV4
Rm9ybWF0IjogIkRYR0lfRk9STUFUX0QxNl9VTk9STSIKKyAgICB9LAogICAgICJkc3ZGb3JtYXQi
OiAiRFhHSV9GT1JNQVRfRDE2X1VOT1JNIiwKICAgICAiY2hhbm5lbHMiOiAiZCIsCiAgICAgImNv
bXBvbmVudFR5cGUiOiAidW5vcm0iLAogICAgICJiaXRzIjogeyAiZGVwdGgiOiAxNiB9LAogICAg
ICJnbEludGVybmFsRm9ybWF0IjogIkdMX0RFUFRIX0NPTVBPTkVOVDE2IgogICB9LAotICAiQU5H
TEVfRk9STUFUX0QxNl9VTk9STV9GTDlfMyI6IHsKLSAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9S
TUFUX0QxNl9VTk9STSIsCi0gICAgImRzdkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9EMTZfVU5PUk0i
LAotICAgICJjaGFubmVscyI6ICJkIiwKLSAgICAiY29tcG9uZW50VHlwZSI6ICJ1bm9ybSIsCi0g
ICAgImJpdHMiOiB7ICJkZXB0aCI6IDE2IH0sCi0gICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xf
REVQVEhfQ09NUE9ORU5UMTYiCi0gIH0sCi0gICJBTkdMRV9GT1JNQVRfRDMyX0ZMT0FUIjogewor
ICAiRDMyX0ZMT0FUIjogewogICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjMyX1RZUEVM
RVNTIiwKICAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IzMl9GTE9BVCIsCiAgICAgImRz
dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9EMzJfRkxPQVQiLApAQCAtMTYwLDcgKzEzMiw3IEBACiAg
ICAgImJpdHMiOiB7ICJkZXB0aCI6IDMyIH0sCiAgICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xf
REVQVEhfQ09NUE9ORU5UMzJGIgogICB9LAotICAiQU5HTEVfRk9STUFUX1IxMUcxMUIxMF9GTE9B
VCI6IHsKKyAgIlIxMUcxMUIxMF9GTE9BVCI6IHsKICAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9S
TUFUX1IxMUcxMUIxMF9GTE9BVCIsCiAgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTFH
MTFCMTBfRkxPQVQiLAogICAgICJydHZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjExRzExQjEwX0ZM
T0FUIiwKQEAgLTE2OSw3ICsxNDEsNyBAQAogICAgICJiaXRzIjogeyAicmVkIjogMTEsICJncmVl
biI6IDExLCAiYmx1ZSI6IDEwIH0sCiAgICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfUjExRl9H
MTFGX0IxMEYiCiAgIH0sCi0gICJBTkdMRV9GT1JNQVRfUjE2X0ZMT0FUIjogeworICAiUjE2X0ZM
T0FUIjogewogICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2X0ZMT0FUIiwKICAgICAi
c3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNl9GTE9BVCIsCiAgICAgInJ0dkZvcm1hdCI6ICJE
WEdJX0ZPUk1BVF9SMTZfRkxPQVQiLApAQCAtMTc4LDcgKzE1MCw3IEBACiAgICAgImJpdHMiOiB7
ICJyZWQiOiAxNiB9LAogICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX1IxNkYiCiAgIH0sCi0g
ICJBTkdMRV9GT1JNQVRfUjE2X1NJTlQiOiB7CisgICJSMTZfU0lOVCI6IHsKICAgICAidGV4Rm9y
bWF0IjogIkRYR0lfRk9STUFUX1IxNl9TSU5UIiwKICAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9S
TUFUX1IxNl9TSU5UIiwKICAgICAicnR2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNl9TSU5UIiwK
QEAgLTE4Nyw3ICsxNTksNyBAQAogICAgICJiaXRzIjogeyAicmVkIjogMTYgfSwKICAgICAiZ2xJ
bnRlcm5hbEZvcm1hdCI6ICJHTF9SMTZJIgogICB9LAotICAiQU5HTEVfRk9STUFUX1IxNl9VSU5U
IjogeworICAiUjE2X1VJTlQiOiB7CiAgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZf
VUlOVCIsCiAgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZfVUlOVCIsCiAgICAgInJ0
dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZfVUlOVCIsCkBAIC0xOTYsNyArMTY4LDcgQEAKICAg
ICAiYml0cyI6IHsgInJlZCI6IDE2IH0sCiAgICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfUjE2
VUkiCiAgIH0sCi0gICJBTkdMRV9GT1JNQVRfUjMyX0ZMT0FUIjogeworICAiUjMyX0ZMT0FUIjog
ewogICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjMyX0ZMT0FUIiwKICAgICAic3J2Rm9y
bWF0IjogIkRYR0lfRk9STUFUX1IzMl9GTE9BVCIsCiAgICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZP
Uk1BVF9SMzJfRkxPQVQiLApAQCAtMjA1LDcgKzE3Nyw3IEBACiAgICAgImJpdHMiOiB7ICJyZWQi
OiAzMiB9LAogICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX1IzMkYiCiAgIH0sCi0gICJBTkdM
RV9GT1JNQVRfUjMyX1NJTlQiOiB7CisgICJSMzJfU0lOVCI6IHsKICAgICAidGV4Rm9ybWF0Ijog
IkRYR0lfRk9STUFUX1IzMl9TSU5UIiwKICAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1Iz
Ml9TSU5UIiwKICAgICAicnR2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IzMl9TSU5UIiwKQEAgLTIx
NCw3ICsxODYsNyBAQAogICAgICJiaXRzIjogeyAicmVkIjogMzIgfSwKICAgICAiZ2xJbnRlcm5h
bEZvcm1hdCI6ICJHTF9SMzJJIgogICB9LAotICAiQU5HTEVfRk9STUFUX1IzMl9VSU5UIjogewor
ICAiUjMyX1VJTlQiOiB7CiAgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMzJfVUlOVCIs
CiAgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMzJfVUlOVCIsCiAgICAgInJ0dkZvcm1h
dCI6ICJEWEdJX0ZPUk1BVF9SMzJfVUlOVCIsCkBAIC0yMjMsMTUgKzE5NSw3IEBACiAgICAgImJp
dHMiOiB7ICJyZWQiOiAzMiB9LAogICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX1IzMlVJIgog
ICB9LAotICAiQU5HTEVfRk9STUFUX1I4X1VOT1JNX05PTlJFTkRFUkFCTEUiOiB7Ci0gICAgInRl
eEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOF9VTk9STSIsCi0gICAgInNydkZvcm1hdCI6ICJEWEdJ
X0ZPUk1BVF9SOF9VTk9STSIsCi0gICAgImNoYW5uZWxzIjogInIiLAotICAgICJjb21wb25lbnRU
eXBlIjogInVub3JtIiwKLSAgICAiYml0cyI6IHsgInJlZCI6IDggfSwKLSAgICAiZ2xJbnRlcm5h
bEZvcm1hdCI6ICJHTF9SOCIKLSAgfSwKLSAgIkFOR0xFX0ZPUk1BVF9SOF9VTk9STSI6IHsKKyAg
IlI4X1VOT1JNIjogewogICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhfVU5PUk0iLAog
ICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhfVU5PUk0iLAogICAgICJydHZGb3JtYXQi
OiAiRFhHSV9GT1JNQVRfUjhfVU5PUk0iLApAQCAtMjQwLDcgKzIwNCw3IEBACiAgICAgImJpdHMi
OiB7ICJyZWQiOiA4IH0sCiAgICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfUjgiCiAgIH0sCi0g
ICJBTkdMRV9GT1JNQVRfUjhfU0lOVCI6IHsKKyAgIlI4X1NJTlQiOiB7CiAgICAgInRleEZvcm1h
dCI6ICJEWEdJX0ZPUk1BVF9SOF9TSU5UIiwKICAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFU
X1I4X1NJTlQiLAogICAgICJydHZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhfU0lOVCIsCkBAIC0y
NDksNyArMjEzLDcgQEAKICAgICAiYml0cyI6IHsgInJlZCI6IDggfSwKICAgICAiZ2xJbnRlcm5h
bEZvcm1hdCI6ICJHTF9SOEkiCiAgIH0sCi0gICJBTkdMRV9GT1JNQVRfUjhfVUlOVCI6IHsKKyAg
IlI4X1VJTlQiOiB7CiAgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOF9VSU5UIiwKICAg
ICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4X1VJTlQiLAogICAgICJydHZGb3JtYXQiOiAi
RFhHSV9GT1JNQVRfUjhfVUlOVCIsCkBAIC0yNTgsNyArMjIyLDcgQEAKICAgICAiYml0cyI6IHsg
InJlZCI6IDggfSwKICAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9SOFVJIgogICB9LAotICAi
QU5HTEVfRk9STUFUX1I4X1NOT1JNIjogeworICAiUjhfU05PUk0iOiB7CiAgICAgInRleEZvcm1h
dCI6ICJEWEdJX0ZPUk1BVF9SOF9TTk9STSIsCiAgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1B
VF9SOF9TTk9STSIsCiAgICAgImNoYW5uZWxzIjogInIiLApAQCAtMjY2LDcgKzIzMCw3IEBACiAg
ICAgImJpdHMiOiB7ICJyZWQiOiA4IH0sCiAgICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfUjhf
U05PUk0iCiAgIH0sCi0gICJBTkdMRV9GT1JNQVRfUjE2RzE2X0ZMT0FUIjogeworICAiUjE2RzE2
X0ZMT0FUIjogewogICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2RzE2X0ZMT0FUIiwK
ICAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcxNl9GTE9BVCIsCiAgICAgInJ0dkZv
cm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZHMTZfRkxPQVQiLApAQCAtMjc1LDcgKzIzOSw3IEBACiAg
ICAgImJpdHMiOiB7ICJyZWQiOiAxNiwgImdyZWVuIjogMTYgfSwKICAgICAiZ2xJbnRlcm5hbEZv
cm1hdCI6ICJHTF9SRzE2RiIKICAgfSwKLSAgIkFOR0xFX0ZPUk1BVF9SMTZHMTZfU0lOVCI6IHsK
KyAgIlIxNkcxNl9TSU5UIjogewogICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2RzE2
X1NJTlQiLAogICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQiLAogICAg
ICJydHZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQiLApAQCAtMjg0LDcgKzI0OCw3
IEBACiAgICAgImJpdHMiOiB7ICJyZWQiOiAxNiwgImdyZWVuIjogMTYgfSwKICAgICAiZ2xJbnRl
cm5hbEZvcm1hdCI6ICJHTF9SRzE2SSIKICAgfSwKLSAgIkFOR0xFX0ZPUk1BVF9SMTZHMTZfVUlO
VCI6IHsKKyAgIlIxNkcxNl9VSU5UIjogewogICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRf
UjE2RzE2X1VJTlQiLAogICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2RzE2X1VJTlQi
LAogICAgICJydHZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2RzE2X1VJTlQiLApAQCAtMjkzLDcg
KzI1Nyw3IEBACiAgICAgImJpdHMiOiB7ICJyZWQiOiAxNiwgImdyZWVuIjogMTYgfSwKICAgICAi
Z2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9SRzE2VUkiCiAgIH0sCi0gICJBTkdMRV9GT1JNQVRfUjMy
RzMyX0ZMT0FUIjogeworICAiUjMyRzMyX0ZMT0FUIjogewogICAgICJ0ZXhGb3JtYXQiOiAiRFhH
SV9GT1JNQVRfUjMyRzMyX0ZMT0FUIiwKICAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1Iz
MkczMl9GTE9BVCIsCiAgICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQi
LApAQCAtMzAyLDcgKzI2Niw3IEBACiAgICAgImJpdHMiOiB7ICJyZWQiOiAzMiwgImdyZWVuIjog
MzIgfSwKICAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9SRzMyRiIKICAgfSwKLSAgIkFOR0xF
X0ZPUk1BVF9SMzJHMzJfU0lOVCI6IHsKKyAgIlIzMkczMl9TSU5UIjogewogICAgICJ0ZXhGb3Jt
YXQiOiAiRFhHSV9GT1JNQVRfUjMyRzMyX1NJTlQiLAogICAgICJzcnZGb3JtYXQiOiAiRFhHSV9G
T1JNQVRfUjMyRzMyX1NJTlQiLAogICAgICJydHZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjMyRzMy
X1NJTlQiLApAQCAtMzExLDcgKzI3NSw3IEBACiAgICAgImJpdHMiOiB7ICJyZWQiOiAzMiwgImdy
ZWVuIjogMzIgfSwKICAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9SRzMySSIKICAgfSwKLSAg
IkFOR0xFX0ZPUk1BVF9SMzJHMzJfVUlOVCI6IHsKKyAgIlIzMkczMl9VSU5UIjogewogICAgICJ0
ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjMyRzMyX1VJTlQiLAogICAgICJzcnZGb3JtYXQiOiAi
RFhHSV9GT1JNQVRfUjMyRzMyX1VJTlQiLAogICAgICJydHZGb3JtYXQiOiAiRFhHSV9GT1JNQVRf
UjMyRzMyX1VJTlQiLApAQCAtMzIwLDcgKzI4NCw3IEBACiAgICAgImJpdHMiOiB7ICJyZWQiOiAz
MiwgImdyZWVuIjogMzIgfSwKICAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9SRzMyVUkiCiAg
IH0sCi0gICJBTkdMRV9GT1JNQVRfUjhHOF9VTk9STSI6IHsKKyAgIlI4RzhfVU5PUk0iOiB7CiAg
ICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4X1VOT1JNIiwKICAgICAic3J2Rm9ybWF0
IjogIkRYR0lfRk9STUFUX1I4RzhfVU5PUk0iLAogICAgICJydHZGb3JtYXQiOiAiRFhHSV9GT1JN
QVRfUjhHOF9VTk9STSIsCkBAIC0zMjksMTUgKzI5Myw3IEBACiAgICAgImJpdHMiOiB7ICJyZWQi
OiA4LCAiZ3JlZW4iOiA4IH0sCiAgICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfUkc4IgogICB9
LAotICAiQU5HTEVfRk9STUFUX1I4RzhfVU5PUk1fTk9OUkVOREVSQUJMRSI6IHsKLSAgICAidGV4
Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhfVU5PUk0iLAotICAgICJzcnZGb3JtYXQiOiAiRFhH
SV9GT1JNQVRfUjhHOF9VTk9STSIsCi0gICAgImNoYW5uZWxzIjogInJnIiwKLSAgICAiY29tcG9u
ZW50VHlwZSI6ICJ1bm9ybSIsCi0gICAgImJpdHMiOiB7ICJyZWQiOiA4LCAiZ3JlZW4iOiA4IH0s
Ci0gICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfUkc4IgotICB9LAotICAiQU5HTEVfRk9STUFU
X1I4RzhfU0lOVCI6IHsKKyAgIlI4RzhfU0lOVCI6IHsKICAgICAidGV4Rm9ybWF0IjogIkRYR0lf
Rk9STUFUX1I4RzhfU0lOVCIsCiAgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4X1NJ
TlQiLAogICAgICJydHZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOF9TSU5UIiwKQEAgLTM0Niw3
ICszMDIsNyBAQAogICAgICJiaXRzIjogeyAicmVkIjogOCwgImdyZWVuIjogOCB9LAogICAgICJn
bEludGVybmFsRm9ybWF0IjogIkdMX1JHOEkiCiAgIH0sCi0gICJBTkdMRV9GT1JNQVRfUjhHOF9V
SU5UIjogeworICAiUjhHOF9VSU5UIjogewogICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRf
UjhHOF9VSU5UIiwKICAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhfVUlOVCIsCiAg
ICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4X1VJTlQiLApAQCAtMzU1LDcgKzMxMSw3
IEBACiAgICAgImJpdHMiOiB7ICJyZWQiOiA4LCAiZ3JlZW4iOiA4IH0sCiAgICAgImdsSW50ZXJu
YWxGb3JtYXQiOiAiR0xfUkc4VUkiCiAgIH0sCi0gICJBTkdMRV9GT1JNQVRfUjhHOF9TTk9STSI6
IHsKKyAgIlI4RzhfU05PUk0iOiB7CiAgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4
X1NOT1JNIiwKICAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhfU05PUk0iLAogICAg
ICJjaGFubmVscyI6ICJyZyIsCkBAIC0zNjMsNyArMzE5LDcgQEAKICAgICAiYml0cyI6IHsgInJl
ZCI6IDgsICJncmVlbiI6IDggfSwKICAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9SRzhfU05P
Uk0iCiAgIH0sCi0gICJBTkdMRV9GT1JNQVRfUjEwRzEwQjEwQTJfVU5PUk0iOiB7CisgICJSMTBH
MTBCMTBBMl9VTk9STSI6IHsKICAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxMEcxMEIx
MEEyX1VOT1JNIiwKICAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VO
T1JNIiwKICAgICAicnR2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VOT1JNIiwK
QEAgLTM3Miw3ICszMjgsNyBAQAogICAgICJiaXRzIjogeyAicmVkIjogMTAsICJncmVlbiI6IDEw
LCAiYmx1ZSI6IDEwLCAiYWxwaGEiOiAyIH0sCiAgICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xf
UkdCMTBfQTIiCiAgIH0sCi0gICJBTkdMRV9GT1JNQVRfUjEwRzEwQjEwQTJfVUlOVCI6IHsKKyAg
IlIxMEcxMEIxMEEyX1VJTlQiOiB7CiAgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTBH
MTBCMTBBMl9VSU5UIiwKICAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxMEcxMEIxMEEy
X1VJTlQiLAogICAgICJydHZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVUlOVCIs
CkBAIC0zODEsNyArMzM3LDcgQEAKICAgICAiYml0cyI6IHsgInJlZCI6IDEwLCAiZ3JlZW4iOiAx
MCwgImJsdWUiOiAxMCwgImFscGhhIjogMiB9LAogICAgICJnbEludGVybmFsRm9ybWF0IjogIkdM
X1JHQjEwX0EyVUkiCiAgIH0sCi0gICJBTkdMRV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQiOiB7
CisgICJSMTZHMTZCMTZBMTZfU0lOVCI6IHsKICAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFU
X1IxNkcxNkIxNkExNl9TSU5UIiwKICAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcx
NkIxNkExNl9TSU5UIiwKICAgICAicnR2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcxNkIxNkEx
Nl9TSU5UIiwKQEAgLTM5MCw3ICszNDYsNyBAQAogICAgICJiaXRzIjogeyAicmVkIjogMTYsICJn
cmVlbiI6IDE2LCAiYmx1ZSI6IDE2LCAiYWxwaGEiOiAxNiB9LAogICAgICJnbEludGVybmFsRm9y
bWF0IjogIkdMX1JHQkExNkkiCiAgIH0sCi0gICJBTkdMRV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJ
TlQiOiB7CisgICJSMTZHMTZCMTZBMTZfVUlOVCI6IHsKICAgICAidGV4Rm9ybWF0IjogIkRYR0lf
Rk9STUFUX1IxNkcxNkIxNkExNl9VSU5UIiwKICAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFU
X1IxNkcxNkIxNkExNl9VSU5UIiwKICAgICAicnR2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcx
NkIxNkExNl9VSU5UIiwKQEAgLTM5OSw3ICszNTUsNyBAQAogICAgICJiaXRzIjogeyAicmVkIjog
MTYsICJncmVlbiI6IDE2LCAiYmx1ZSI6IDE2LCAiYWxwaGEiOiAxNiB9LAogICAgICJnbEludGVy
bmFsRm9ybWF0IjogIkdMX1JHQkExNlVJIgogICB9LAotICAiQU5HTEVfRk9STUFUX1IzMkczMkIz
MkEzMl9TSU5UIjogeworICAiUjMyRzMyQjMyQTMyX1NJTlQiOiB7CiAgICAgInRleEZvcm1hdCI6
ICJEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCIsCiAgICAgInNydkZvcm1hdCI6ICJEWEdJ
X0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCIsCiAgICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1B
VF9SMzJHMzJCMzJBMzJfU0lOVCIsCkBAIC00MDgsNyArMzY0LDcgQEAKICAgICAiYml0cyI6IHsg
InJlZCI6IDMyLCAiZ3JlZW4iOiAzMiwgImJsdWUiOiAzMiwgImFscGhhIjogMzIgfSwKICAgICAi
Z2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9SR0JBMzJJIgogICB9LAotICAiQU5HTEVfRk9STUFUX1Iz
MkczMkIzMkEzMl9VSU5UIjogeworICAiUjMyRzMyQjMyQTMyX1VJTlQiOiB7CiAgICAgInRleEZv
cm1hdCI6ICJEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVCIsCiAgICAgInNydkZvcm1hdCI6
ICJEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVCIsCiAgICAgInJ0dkZvcm1hdCI6ICJEWEdJ
X0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVCIsCkBAIC00MTcsMjcgKzM3MywyNyBAQAogICAgICJi
aXRzIjogeyAicmVkIjogMzIsICJncmVlbiI6IDMyLCAiYmx1ZSI6IDMyLCAiYWxwaGEiOiAzMiB9
LAogICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX1JHQkEzMlVJIgogICB9LAotICAiQU5HTEVf
Rk9STUFUX0I1RzZSNV9VTk9STSI6IHsKKyAgIkI1RzZSNV9VTk9STSI6IHsKICAgICAidGV4Rm9y
bWF0IjogIkRYR0lfRk9STUFUX0I1RzZSNV9VTk9STSIsCiAgICAgInNydkZvcm1hdCI6ICJEWEdJ
X0ZPUk1BVF9CNUc2UjVfVU5PUk0iLAogICAgICJydHZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfQjVH
NlI1X1VOT1JNIiwKICAgICAiY2hhbm5lbHMiOiAiYmdyIiwKICAgICAiY29tcG9uZW50VHlwZSI6
ICAidW5vcm0iLAogICAgICJiaXRzIjogeyAicmVkIjogNSwgImdyZWVuIjogNiwgImJsdWUiOiA1
IH0sCi0gICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfUkdCNTY1IiwKLSAgICAiY2hhbm5lbFN0
cnVjdCI6ICJSNUc2QjUiCisgICAgInN1cHBvcnRUZXN0IjogIlN1cHBvcnRzRm9ybWF0KERYR0lf
Rk9STUFUX0I1RzZSNV9VTk9STSwgZGV2aWNlQ2FwcykiLAorICAgICJmYWxsYmFja0Zvcm1hdCI6
ICJSOEc4QjhBOF9VTk9STSIKICAgfSwKLSAgIkFOR0xFX0ZPUk1BVF9CNUc1UjVBMV9VTk9STSI6
IHsKKyAgIkI1RzVSNUExX1VOT1JNIjogewogICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRf
QjVHNVI1QTFfVU5PUk0iLAogICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfQjVHNVI1QTFf
VU5PUk0iLAogICAgICJydHZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfQjVHNVI1QTFfVU5PUk0iLAog
ICAgICJjaGFubmVscyI6ICJiZ3JhIiwKICAgICAiY29tcG9uZW50VHlwZSI6ICJ1bm9ybSIsCiAg
ICAgImJpdHMiOiB7ICJyZWQiOiA1LCAiZ3JlZW4iOiA1LCAiYmx1ZSI6IDUsICJhbHBoYSI6IDEg
fSwKLSAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9SR0I1X0ExIiwKLSAgICAiY2hhbm5lbFN0
cnVjdCI6ICJBMVI1RzVCNSIKKyAgICAic3VwcG9ydFRlc3QiOiAiU3VwcG9ydHNGb3JtYXQoRFhH
SV9GT1JNQVRfQjVHNVI1QTFfVU5PUk0sIGRldmljZUNhcHMpIiwKKyAgICAiZmFsbGJhY2tGb3Jt
YXQiOiAiUjhHOEI4QThfVU5PUk0iCiAgIH0sCi0gICJBTkdMRV9GT1JNQVRfUjhHOEI4QThfU0lO
VCI6IHsKKyAgIlI4RzhCOEE4X1NJTlQiOiB7CiAgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1B
VF9SOEc4QjhBOF9TSU5UIiwKICAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhCOEE4
X1NJTlQiLAogICAgICJydHZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOEI4QThfU0lOVCIsCkBA
IC00NDYsNyArNDAyLDcgQEAKICAgICAiYml0cyI6IHsgInJlZCI6IDgsICJncmVlbiI6IDgsICJi
bHVlIjogOCwgImFscGhhIjogOCB9LAogICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX1JHQkE4
SSIKICAgfSwKLSAgIkFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VSU5UIjogeworICAiUjhHOEI4QThf
VUlOVCI6IHsKICAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhCOEE4X1VJTlQiLAog
ICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVCIsCiAgICAgInJ0dkZv
cm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5UIiwKQEAgLTQ1NSw3ICs0MTEsNyBAQAog
ICAgICJiaXRzIjogeyAicmVkIjogOCwgImdyZWVuIjogOCwgImJsdWUiOiA4LCAiYWxwaGEiOiA4
IH0sCiAgICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfUkdCQThVSSIKICAgfSwKLSAgIkFOR0xF
X0ZPUk1BVF9SOEc4QjhBOF9TTk9STSI6IHsKKyAgIlI4RzhCOEE4X1NOT1JNIjogewogICAgICJ0
ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOEI4QThfU05PUk0iLAogICAgICJzcnZGb3JtYXQi
OiAiRFhHSV9GT1JNQVRfUjhHOEI4QThfU05PUk0iLAogICAgICJjaGFubmVscyI6ICJyZ2JhIiwK
QEAgLTQ2MywyNiArNDE5LDI0IEBACiAgICAgImJpdHMiOiB7ICJyZWQiOiA4LCAiZ3JlZW4iOiA4
LCAiYmx1ZSI6IDgsICJhbHBoYSI6IDggfSwKICAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9S
R0JBOF9TTk9STSIKICAgfSwKLSAgIkFOR0xFX0ZPUk1BVF9SOUc5QjlFNV9TSEFSRURFWFAiOiB7
CisgICJSOUc5QjlFNV9TSEFSRURFWFAiOiB7CiAgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1B
VF9SOUc5QjlFNV9TSEFSRURFWFAiLAogICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjlH
OUI5RTVfU0hBUkVERVhQIiwKICAgICAiY2hhbm5lbHMiOiAicmdiIiwKICAgICAiY29tcG9uZW50
VHlwZSI6ICAiZmxvYXQiLAotICAgICJiaXRzIjogeyAicmVkIjogOSwgImdyZWVuIjogOSwgImJs
dWUiOiA5LCAic2hhcmVkIjogNSB9LAotICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX1JHQjlf
RTUiLAotICAgICJjaGFubmVsU3RydWN0IjogICJSOUc5QjlFNSIKKyAgICAiYml0cyI6IHsgInJl
ZCI6IDksICJncmVlbiI6IDksICJibHVlIjogOSwgInNoYXJlZCI6IDUgfQogICB9LAotICAiQU5H
TEVfRk9STUFUX0I0RzRSNEE0X1VOT1JNIjogeworICAiQjRHNFI0QTRfVU5PUk0iOiB7CiAgICAg
InRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9CNEc0UjRBNF9VTk9STSIsCiAgICAgInNydkZvcm1h
dCI6ICJEWEdJX0ZPUk1BVF9CNEc0UjRBNF9VTk9STSIsCiAgICAgInJ0dkZvcm1hdCI6ICJEWEdJ
X0ZPUk1BVF9CNEc0UjRBNF9VTk9STSIsCiAgICAgImNoYW5uZWxzIjogImJncmEiLAogICAgICJj
b21wb25lbnRUeXBlIjogICJ1bm9ybSIsCiAgICAgImJpdHMiOiB7ICJyZWQiOiA0LCAiZ3JlZW4i
OiA0LCAiYmx1ZSI6IDQsICJhbHBoYSI6IDQgfSwKLSAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJH
TF9SR0JBNCIsCi0gICAgImNoYW5uZWxTdHJ1Y3QiOiAgIkE0UjRHNEI0IgorICAgICJzdXBwb3J0
VGVzdCI6ICJTdXBwb3J0c0Zvcm1hdChEWEdJX0ZPUk1BVF9CNEc0UjRBNF9VTk9STSwgZGV2aWNl
Q2FwcykiLAorICAgICJmYWxsYmFja0Zvcm1hdCI6ICJSOEc4QjhBOF9VTk9STSIKICAgfSwKLSAg
IkFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCIjogeworICAiUjhHOEI4QThfVU5PUk1f
U1JHQiI6IHsKICAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NS
R0IiLAogICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiIs
CiAgICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCIiwKQEAg
LTQ5MSwxMiArNDQ1LDQ2IEBACiAgICAgImJpdHMiOiB7ICJyZWQiOiA4LCAiZ3JlZW4iOiA4LCAi
Ymx1ZSI6IDgsICJhbHBoYSI6IDggfSwKICAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9TUkdC
OF9BTFBIQTgiCiAgIH0sCi0gICJBTkdMRV9GT1JNQVRfWDI0X1RZUEVMRVNTX0c4X1VJTlQiOiB7
Ci0gICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMjRHOF9UWVBFTEVTUyIsCi0gICAgInNy
dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9YMjRfVFlQRUxFU1NfRzhfVUlOVCIsCi0gICAgImRzdkZv
cm1hdCI6ICJEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCIsCi0gICAgImNoYW5uZWxzIjog
ImRzIiwKLSAgICAiYml0cyI6IHsgImRlcHRoIjogMjQsICJzdGVuY2lsIjogOCB9LAotICAgICJn
bEludGVybmFsRm9ybWF0IjogIkdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTIgorICAiUjE2X1VOT1JN
IjogeworICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2X1VOT1JNIiwKKyAgICAic3J2
Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNl9VTk9STSIsCisgICAgInJ0dkZvcm1hdCI6ICJEWEdJ
X0ZPUk1BVF9SMTZfVU5PUk0iLAorICAgICJjaGFubmVscyI6ICJyIiwKKyAgICAiY29tcG9uZW50
VHlwZSI6ICJ1bm9ybSIsCisgICAgImJpdHMiOiB7ICJyZWQiOiAxNiB9LAorICAgICJnbEludGVy
bmFsRm9ybWF0IjogIkdMX1IxNl9FWFQiCisgIH0sCisgICJSMTZHMTZfVU5PUk0iOiB7CisgICAg
InRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZHMTZfVU5PUk0iLAorICAgICJzcnZGb3JtYXQi
OiAiRFhHSV9GT1JNQVRfUjE2RzE2X1VOT1JNIiwKKyAgICAicnR2Rm9ybWF0IjogIkRYR0lfRk9S
TUFUX1IxNkcxNl9VTk9STSIsCisgICAgImNoYW5uZWxzIjogInJnIiwKKyAgICAiY29tcG9uZW50
VHlwZSI6ICJ1bm9ybSIsCisgICAgImJpdHMiOiB7ICJyZWQiOiAxNiwgImdyZWVuIjogMTYgfSwK
KyAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9SRzE2X0VYVCIKKyAgfSwKKyAgIlIxNl9TTk9S
TSI6IHsKKyAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNl9TTk9STSIsCisgICAgInNy
dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZfU05PUk0iLAorICAgICJjaGFubmVscyI6ICJyIiwK
KyAgICAiY29tcG9uZW50VHlwZSI6ICJzbm9ybSIsCisgICAgImJpdHMiOiB7ICJyZWQiOiAxNiB9
LAorICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX1IxNl9TTk9STV9FWFQiCisgIH0sCisgICJS
MTZHMTZfU05PUk0iOiB7CisgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZHMTZfU05P
Uk0iLAorICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2RzE2X1NOT1JNIiwKKyAgICAi
Y2hhbm5lbHMiOiAicmciLAorICAgICJjb21wb25lbnRUeXBlIjogInNub3JtIiwKKyAgICAiYml0
cyI6IHsgInJlZCI6IDE2LCAiZ3JlZW4iOiAxNiB9LAorICAgICJnbEludGVybmFsRm9ybWF0Ijog
IkdMX1JHMTZfU05PUk1fRVhUIgorICB9LAorICAiUjE2RzE2QjE2QTE2X1NOT1JNIjogeworICAg
ICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NOT1JNIiwKKyAgICAic3J2
Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TTk9STSIsCisgICAgImNoYW5uZWxz
IjogInJnYmEiLAorICAgICJjb21wb25lbnRUeXBlIjogInNub3JtIiwKKyAgICAiYml0cyI6IHsg
InJlZCI6IDE2LCAiZ3JlZW4iOiAxNiwgImJsdWUiOiAxNiwgImFscGhhIjogMTYgfSwKKyAgICAi
Z2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9SR0JBMTZfU05PUk1fRVhUIgogICB9CiB9CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3Rl
eHR1cmVfZm9ybWF0X21hcC5qc29uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfbWFwLmpz
b24JKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfbWFwLmpzb24JKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTQ4ICsxLDc0IEBACiB7Ci0gICJHTF9BTFBIQSI6IHsKLSAgICAiT25seUZM
MTBQbHVzIjogIkFOR0xFX0ZPUk1BVF9BOF9VTk9STSIsCi0gICAgIk9ubHlGTDlfMyI6ICJBTkdM
RV9GT1JNQVRfUjhHOEI4QThfVU5PUk0iCi0gIH0sCi0gICJHTF9BTFBIQTE2Rl9FWFQiOiAiQU5H
TEVfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCIsCi0gICJHTF9BTFBIQTMyRl9FWFQiOiAiQU5H
TEVfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCIsCi0gICJHTF9BTFBIQThfRVhUIjogewotICAg
ICJPbmx5RkwxMFBsdXMiOiAiQU5HTEVfRk9STUFUX0E4X1VOT1JNIiwKLSAgICAiT25seUZMOV8z
IjogIkFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSIKLSAgfSwKLSAgIkdMX0JHUjVfQTFfQU5H
TEVYIjogIkFOR0xFX0ZPUk1BVF9COEc4UjhBOF9VTk9STSIsCi0gICJHTF9CR1JBNF9BTkdMRVgi
OiAiQU5HTEVfRk9STUFUX0I4RzhSOEE4X1VOT1JNIiwKLSAgIkdMX0JHUkE4X0VYVCI6ICJBTkdM
RV9GT1JNQVRfQjhHOFI4QThfVU5PUk0iLAotICAiR0xfQkdSQV9FWFQiOiAiQU5HTEVfRk9STUFU
X0I4RzhSOEE4X1VOT1JNIiwKLSAgIkdMX0NPTVBSRVNTRURfUjExX0VBQyI6IHsKLSAgICAiT25s
eUZMMTBQbHVzIjogIkFOR0xFX0ZPUk1BVF9SOF9VTk9STV9OT05SRU5ERVJBQkxFIgotICB9LAot
ICAiR0xfQ09NUFJFU1NFRF9SRzExX0VBQyI6IHsKLSAgICAiT25seUZMMTBQbHVzIjogIkFOR0xF
X0ZPUk1BVF9SOEc4X1VOT1JNX05PTlJFTkRFUkFCTEUiCi0gIH0sCi0gICJHTF9DT01QUkVTU0VE
X1JHQjhfRVRDMiI6IHsKLSAgICAiT25seUZMMTBQbHVzIjogIkFOR0xFX0ZPUk1BVF9SOEc4QjhB
OF9VTk9STV9OT05SRU5ERVJBQkxFIgotICB9LAotICAiR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNI
VEhST1VHSF9BTFBIQTFfRVRDMiI6IHsKLSAgICAiT25seUZMMTBQbHVzIjogIkFOR0xFX0ZPUk1B
VF9SOEc4QjhBOF9VTk9STV9OT05SRU5ERVJBQkxFIgotICB9LAotICAiR0xfQ09NUFJFU1NFRF9S
R0JBOF9FVEMyX0VBQyI6IHsKLSAgICAiT25seUZMMTBQbHVzIjogIkFOR0xFX0ZPUk1BVF9SOEc4
QjhBOF9VTk9STV9OT05SRU5ERVJBQkxFIgotICB9LAotICAiR0xfQ09NUFJFU1NFRF9SR0JBX1Mz
VENfRFhUMV9FWFQiOiAiQU5HTEVfRk9STUFUX0JDMV9VTk9STSIsCi0gICJHTF9DT01QUkVTU0VE
X1JHQkFfUzNUQ19EWFQzX0FOR0xFIjogIkFOR0xFX0ZPUk1BVF9CQzJfVU5PUk0iLAotICAiR0xf
Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRSI6ICJBTkdMRV9GT1JNQVRfQkMzX1VOT1JN
IiwKLSAgIkdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQiOiAiQU5HTEVfRk9STUFUX0JD
MV9VTk9STSIsCi0gICJHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDIjogewotICAgICJPbmx5
RkwxMFBsdXMiOiAiQU5HTEVfRk9STUFUX1I4X1NOT1JNX05PTlJFTkRFUkFCTEUiCi0gIH0sCi0g
ICJHTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQyI6IHsKLSAgICAiT25seUZMMTBQbHVzIjog
IkFOR0xFX0ZPUk1BVF9SOEc4X1NOT1JNX05PTlJFTkRFUkFCTEUiCi0gIH0sCi0gICJHTF9DT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQyI6IHsKLSAgICAiT25seUZMMTBQbHVzIjogIkFO
R0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCX05PTlJFTkRFUkFCTEUiCi0gIH0sCi0gICJH
TF9DT01QUkVTU0VEX1NSR0I4X0VUQzIiOiB7Ci0gICAgIk9ubHlGTDEwUGx1cyI6ICJBTkdMRV9G
T1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQl9OT05SRU5ERVJBQkxFIgotICB9LAotICAiR0xfQ09N
UFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIiOiB7Ci0gICAgIk9ubHlGTDEw
UGx1cyI6ICJBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQl9OT05SRU5ERVJBQkxFIgot
ICB9LAotICAiR0xfREVQVEgyNF9TVEVOQ0lMOCI6IHsKLSAgICAiT25seUZMMTBQbHVzIjogIkFO
R0xFX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVF9GTDEwIiwKLSAgICAiT25seUZMOV8zIjogIkFO
R0xFX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVF9GTDlfMyIKLSAgfSwKLSAgIkdMX0RFUFRIMzJG
X1NURU5DSUw4IjogewotICAgICJPbmx5RkwxMFBsdXMiOiAiQU5HTEVfRk9STUFUX0QzMl9GTE9B
VF9TOFgyNF9VSU5UX0ZMMTAiLAotICAgICJPbmx5Rkw5XzMiOiAiQU5HTEVfRk9STUFUX05PTkUi
Ci0gIH0sCi0gICJHTF9ERVBUSF9DT01QT05FTlQxNiI6IHsKLSAgICAiT25seUZMMTBQbHVzIjog
IkFOR0xFX0ZPUk1BVF9EMTZfVU5PUk1fRkwxMCIsCi0gICAgIk9ubHlGTDlfMyI6ICJBTkdMRV9G
T1JNQVRfRDE2X1VOT1JNX0ZMOV8zIgotICB9LAotICAiR0xfREVQVEhfQ09NUE9ORU5UMjQiOiB7
Ci0gICAgIk9ubHlGTDEwUGx1cyI6ICJBTkdMRV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlRfRkwx
MCIsCi0gICAgIk9ubHlGTDlfMyI6ICJBTkdMRV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlRfRkw5
XzMiCi0gIH0sCi0gICJHTF9ERVBUSF9DT01QT05FTlQzMkYiOiB7Ci0gICAgIk9ubHlGTDEwUGx1
cyI6ICJBTkdMRV9GT1JNQVRfRDMyX0ZMT0FUIiwKLSAgICAiT25seUZMOV8zIjogIkFOR0xFX0ZP
Uk1BVF9OT05FIgotICB9LAotICAiR0xfREVQVEhfQ09NUE9ORU5UMzJfT0VTIjogewotICAgICJP
bmx5RkwxMFBsdXMiOiAiQU5HTEVfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5UX0ZMMTAiCi0gIH0s
Ci0gICJHTF9FVEMxX1JHQjhfT0VTIjogIkFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9OT05S
RU5ERVJBQkxFIiwKLSAgIkdMX0VUQzFfUkdCOF9MT1NTWV9ERUNPREVfQU5HTEUiOiAiQU5HTEVf
Rk9STUFUX0JDMV9VTk9STSIsCi0gICJHTF9MVU1JTkFOQ0UiOiAiQU5HTEVfRk9STUFUX1I4RzhC
OEE4X1VOT1JNIiwKLSAgIkdMX0xVTUlOQU5DRTE2Rl9FWFQiOiAiQU5HTEVfRk9STUFUX1IxNkcx
NkIxNkExNl9GTE9BVCIsCi0gICJHTF9MVU1JTkFOQ0UzMkZfRVhUIjogIkFOR0xFX0ZPUk1BVF9S
MzJHMzJCMzJBMzJfRkxPQVQiLAotICAiR0xfTFVNSU5BTkNFOF9BTFBIQThfRVhUIjogIkFOR0xF
X0ZPUk1BVF9SOEc4QjhBOF9VTk9STSIsCi0gICJHTF9MVU1JTkFOQ0U4X0VYVCI6ICJBTkdMRV9G
T1JNQVRfUjhHOEI4QThfVU5PUk0iLAotICAiR0xfTFVNSU5BTkNFX0FMUEhBIjogIkFOR0xFX0ZP
Uk1BVF9SOEc4QjhBOF9VTk9STSIsCi0gICJHTF9MVU1JTkFOQ0VfQUxQSEExNkZfRVhUIjogIkFO
R0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQiLAotICAiR0xfTFVNSU5BTkNFX0FMUEhBMzJG
X0VYVCI6ICJBTkdMRV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FUIiwKLSAgIkdMX05PTkUiOiAi
QU5HTEVfRk9STUFUX05PTkUiLAotICAiR0xfUjExRl9HMTFGX0IxMEYiOiAiQU5HTEVfRk9STUFU
X1IxMUcxMUIxMF9GTE9BVCIsCi0gICJHTF9SMTZGIjogIkFOR0xFX0ZPUk1BVF9SMTZfRkxPQVQi
LAotICAiR0xfUjE2SSI6ICJBTkdMRV9GT1JNQVRfUjE2X1NJTlQiLAotICAiR0xfUjE2VUkiOiAi
QU5HTEVfRk9STUFUX1IxNl9VSU5UIiwKLSAgIkdMX1IzMkYiOiAiQU5HTEVfRk9STUFUX1IzMl9G
TE9BVCIsCi0gICJHTF9SMzJJIjogIkFOR0xFX0ZPUk1BVF9SMzJfU0lOVCIsCi0gICJHTF9SMzJV
SSI6ICJBTkdMRV9GT1JNQVRfUjMyX1VJTlQiLAotICAiR0xfUjgiOiAiQU5HTEVfRk9STUFUX1I4
X1VOT1JNIiwKLSAgIkdMX1I4SSI6ICJBTkdMRV9GT1JNQVRfUjhfU0lOVCIsCi0gICJHTF9SOFVJ
IjogIkFOR0xFX0ZPUk1BVF9SOF9VSU5UIiwKLSAgIkdMX1I4X1NOT1JNIjogIkFOR0xFX0ZPUk1B
VF9SOF9TTk9STSIsCi0gICJHTF9SRzE2RiI6ICJBTkdMRV9GT1JNQVRfUjE2RzE2X0ZMT0FUIiwK
LSAgIkdMX1JHMTZJIjogIkFOR0xFX0ZPUk1BVF9SMTZHMTZfU0lOVCIsCi0gICJHTF9SRzE2VUki
OiAiQU5HTEVfRk9STUFUX1IxNkcxNl9VSU5UIiwKLSAgIkdMX1JHMzJGIjogIkFOR0xFX0ZPUk1B
VF9SMzJHMzJfRkxPQVQiLAotICAiR0xfUkczMkkiOiAiQU5HTEVfRk9STUFUX1IzMkczMl9TSU5U
IiwKLSAgIkdMX1JHMzJVSSI6ICJBTkdMRV9GT1JNQVRfUjMyRzMyX1VJTlQiLAotICAiR0xfUkc4
IjogIkFOR0xFX0ZPUk1BVF9SOEc4X1VOT1JNIiwKLSAgIkdMX1JHOEkiOiAiQU5HTEVfRk9STUFU
X1I4RzhfU0lOVCIsCi0gICJHTF9SRzhVSSI6ICJBTkdMRV9GT1JNQVRfUjhHOF9VSU5UIiwKLSAg
IkdMX1JHOF9TTk9STSI6ICJBTkdMRV9GT1JNQVRfUjhHOF9TTk9STSIsCi0gICJHTF9SR0IiOiAi
QU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNIiwKLSAgIkdMX1JHQjEwX0EyIjogIkFOR0xFX0ZP
Uk1BVF9SMTBHMTBCMTBBMl9VTk9STSIsCi0gICJHTF9SR0IxMF9BMlVJIjogIkFOR0xFX0ZPUk1B
VF9SMTBHMTBCMTBBMl9VSU5UIiwKLSAgIkdMX1JHQjE2RiI6ICJBTkdMRV9GT1JNQVRfUjE2RzE2
QjE2QTE2X0ZMT0FUIiwKLSAgIkdMX1JHQjE2SSI6ICJBTkdMRV9GT1JNQVRfUjE2RzE2QjE2QTE2
X1NJTlQiLAotICAiR0xfUkdCMTZVSSI6ICJBTkdMRV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQi
LAotICAiR0xfUkdCMzJGIjogIkFOR0xFX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQiLAotICAi
R0xfUkdCMzJJIjogIkFOR0xFX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCIsCi0gICJHTF9SR0Iz
MlVJIjogIkFOR0xFX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVCIsCi0gICJHTF9SR0I1NjUiOiB7
Ci0gICAgIlN1cHBvcnRzRm9ybWF0PERYR0lfRk9STUFUX0I1RzZSNV9VTk9STSxmYWxzZT4iOiAi
QU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNIiwKLSAgICAiU3VwcG9ydHNGb3JtYXQ8RFhHSV9G
T1JNQVRfQjVHNlI1X1VOT1JNLHRydWU+IjogIkFOR0xFX0ZPUk1BVF9CNUc2UjVfVU5PUk0iCi0g
IH0sCi0gICJHTF9SR0I1X0ExIjogewotICAgICJTdXBwb3J0c0Zvcm1hdDxEWEdJX0ZPUk1BVF9C
NUc1UjVBMV9VTk9STSxmYWxzZT4iOiAiQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNIiwKLSAg
ICAiU3VwcG9ydHNGb3JtYXQ8RFhHSV9GT1JNQVRfQjVHNVI1QTFfVU5PUk0sdHJ1ZT4iOiAiQU5H
TEVfRk9STUFUX0I1RzVSNUExX1VOT1JNIgotICB9LAotICAiR0xfUkdCOCI6ICJBTkdMRV9GT1JN
QVRfUjhHOEI4QThfVU5PUk0iLAotICAiR0xfUkdCOEkiOiAiQU5HTEVfRk9STUFUX1I4RzhCOEE4
X1NJTlQiLAotICAiR0xfUkdCOFVJIjogIkFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VSU5UIiwKLSAg
IkdMX1JHQjhfU05PUk0iOiAiQU5HTEVfRk9STUFUX1I4RzhCOEE4X1NOT1JNIiwKLSAgIkdMX1JH
QjlfRTUiOiAiQU5HTEVfRk9STUFUX1I5RzlCOUU1X1NIQVJFREVYUCIsCi0gICJHTF9SR0JBIjog
IkFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSIsCi0gICJHTF9SR0JBMTZGIjogIkFOR0xFX0ZP
Uk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQiLAotICAiR0xfUkdCQTE2SSI6ICJBTkdMRV9GT1JNQVRf
UjE2RzE2QjE2QTE2X1NJTlQiLAotICAiR0xfUkdCQTE2VUkiOiAiQU5HTEVfRk9STUFUX1IxNkcx
NkIxNkExNl9VSU5UIiwKLSAgIkdMX1JHQkEzMkYiOiAiQU5HTEVfRk9STUFUX1IzMkczMkIzMkEz
Ml9GTE9BVCIsCi0gICJHTF9SR0JBMzJJIjogIkFOR0xFX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lO
VCIsCi0gICJHTF9SR0JBMzJVSSI6ICJBTkdMRV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQiLAot
ICAiR0xfUkdCQTQiOiB7Ci0gICAgIlN1cHBvcnRzRm9ybWF0PERYR0lfRk9STUFUX0I0RzRSNEE0
X1VOT1JNLGZhbHNlPiI6ICJBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk0iLAotICAgICJTdXBw
b3J0c0Zvcm1hdDxEWEdJX0ZPUk1BVF9CNEc0UjRBNF9VTk9STSx0cnVlPiI6ICJBTkdMRV9GT1JN
QVRfQjRHNFI0QTRfVU5PUk0iCi0gIH0sCi0gICJHTF9SR0JBOCI6ICJBTkdMRV9GT1JNQVRfUjhH
OEI4QThfVU5PUk0iLAotICAiR0xfUkdCQThJIjogIkFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9TSU5U
IiwKLSAgIkdMX1JHQkE4VUkiOiAiQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VJTlQiLAotICAiR0xf
UkdCQThfU05PUk0iOiAiQU5HTEVfRk9STUFUX1I4RzhCOEE4X1NOT1JNIiwKLSAgIkdMX1NSR0I4
IjogIkFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCX05PTlJFTkRFUkFCTEUiLAotICAi
R0xfU1JHQjhfQUxQSEE4IjogIkFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCIiwKLSAg
IkdMX1NURU5DSUxfSU5ERVg4IjogewotICAgICJPbmx5RkwxMFBsdXMiOiAiQU5HTEVfRk9STUFU
X1gyNF9UWVBFTEVTU19HOF9VSU5UIiwKLSAgICAiT25seUZMOV8zIjogIkFOR0xFX0ZPUk1BVF9E
MjRfVU5PUk1fUzhfVUlOVF9GTDlfMyIKLSAgfQorICAiR0xfQUxQSEExNkZfRVhUIjogIlIxNkcx
NkIxNkExNl9GTE9BVCIsCisgICJHTF9BTFBIQTMyRl9FWFQiOiAiUjMyRzMyQjMyQTMyX0ZMT0FU
IiwKKyAgIkdMX0JHUjVfQTFfQU5HTEVYIjogIkI4RzhSOEE4X1VOT1JNIiwKKyAgIkdMX0JHUkE0
X0FOR0xFWCI6ICJCOEc4UjhBOF9VTk9STSIsCisgICJHTF9DT01QUkVTU0VEX1IxMV9FQUMiOiAi
UjhfVU5PUk0iLAorICAiR0xfQ09NUFJFU1NFRF9SRzExX0VBQyI6ICJSOEc4X1VOT1JNIiwKKyAg
IkdMX0NPTVBSRVNTRURfUkdCOF9FVEMyIjogIlI4RzhCOEE4X1VOT1JNIiwKKyAgIkdMX0NPTVBS
RVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIiOiAiUjhHOEI4QThfVU5PUk0iLAor
ICAiR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQyI6ICJSOEc4QjhBOF9VTk9STSIsCisgICJH
TF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSIjogIk5PTkUiLAorICAiR0xfQ09NUFJFU1NF
RF9SR0JBX0FTVENfNXg0X0tIUiI6ICJOT05FIiwKKyAgIkdMX0NPTVBSRVNTRURfUkdCQV9BU1RD
XzV4NV9LSFIiOiAiTk9ORSIsCisgICJHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDVfS0hSIjog
Ik5PTkUiLAorICAiR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUiI6ICJOT05FIiwKKyAg
IkdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFIiOiAiTk9ORSIsCisgICJHTF9DT01QUkVT
U0VEX1JHQkFfQVNUQ184eDZfS0hSIjogIk5PTkUiLAorICAiR0xfQ09NUFJFU1NFRF9SR0JBX0FT
VENfOHg4X0tIUiI6ICJOT05FIiwKKyAgIkdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hS
IjogIk5PTkUiLAorICAiR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFIiOiAiTk9ORSIs
CisgICJHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUiI6ICJOT05FIiwKKyAgIkdMX0NP
TVBSRVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUiI6ICJOT05FIiwKKyAgIkdMX0NPTVBSRVNTRURf
UkdCQV9BU1RDXzEyeDEwX0tIUiI6ICJOT05FIiwKKyAgIkdMX0NPTVBSRVNTRURfUkdCQV9BU1RD
XzEyeDEyX0tIUiI6ICJOT05FIiwKKyAgIkdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQi
OiAiQkMxX1JHQl9VTk9STV9CTE9DSyIsCisgICJHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFD
IjogIlI4X1NOT1JNIiwKKyAgIkdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDIjogIlI4Rzhf
U05PUk0iLAorICAiR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSIjogIk5P
TkUiLAorICAiR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDRfS0hSIjogIk5PTkUi
LAorICAiR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDVfS0hSIjogIk5PTkUiLAor
ICAiR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hSIjogIk5PTkUiLAorICAi
R0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDZfS0hSIjogIk5PTkUiLAorICAiR0xf
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSIjogIk5PTkUiLAorICAiR0xfQ09N
UFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSIjogIk5PTkUiLAorICAiR0xfQ09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDhfS0hSIjogIk5PTkUiLAorICAiR0xfQ09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1X0tIUiI6ICJOT05FIiwKKyAgIkdMX0NPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0FTVENfMTB4Nl9LSFIiOiAiTk9ORSIsCisgICJHTF9DT01QUkVTU0VEX1NS
R0I4X0FMUEhBOF9BU1RDXzEweDhfS0hSIjogIk5PTkUiLAorICAiR0xfQ09NUFJFU1NFRF9TUkdC
OF9BTFBIQThfQVNUQ18xMHgxMF9LSFIiOiAiTk9ORSIsCisgICJHTF9DT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzEyeDEwX0tIUiI6ICJOT05FIiwKKyAgIkdMX0NPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0FTVENfMTJ4MTJfS0hSIjogIk5PTkUiLAorICAiR0xfQ09NUFJFU1NFRF9TUkdCOF9B
TFBIQThfRVRDMl9FQUMiOiAiUjhHOEI4QThfVU5PUk1fU1JHQiIsCisgICJHTF9DT01QUkVTU0VE
X1NSR0I4X0VUQzIiOiAiUjhHOEI4QThfVU5PUk1fU1JHQiIsCisgICJHTF9DT01QUkVTU0VEX1NS
R0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiI6ICJSOEc4QjhBOF9VTk9STV9TUkdCIiwKKyAg
IkdMX0RFUFRIX0NPTVBPTkVOVDI0IjogIkQyNF9VTk9STV9TOF9VSU5UIiwKKyAgIkdMX0RFUFRI
X0NPTVBPTkVOVDMyX09FUyI6ICJEMjRfVU5PUk1fUzhfVUlOVCIsCisgICJHTF9FVEMxX1JHQjhf
T0VTIjogIlI4RzhCOEE4X1VOT1JNIiwKKyAgIkdMX0VUQzFfUkdCOF9MT1NTWV9ERUNPREVfQU5H
TEUiOiAiQkMxX1JHQl9VTk9STV9CTE9DSyIsCisgICJHTF9MVU1JTkFOQ0UxNkZfRVhUIjogIlIx
NkcxNkIxNkExNl9GTE9BVCIsCisgICJHTF9MVU1JTkFOQ0UzMkZfRVhUIjogIlIzMkczMkIzMkEz
Ml9GTE9BVCIsCisgICJHTF9MVU1JTkFOQ0U4X0FMUEhBOF9FWFQiOiAiUjhHOEI4QThfVU5PUk0i
LAorICAiR0xfTFVNSU5BTkNFOF9FWFQiOiAiUjhHOEI4QThfVU5PUk0iLAorICAiR0xfTFVNSU5B
TkNFX0FMUEhBMTZGX0VYVCI6ICJSMTZHMTZCMTZBMTZfRkxPQVQiLAorICAiR0xfTFVNSU5BTkNF
X0FMUEhBMzJGX0VYVCI6ICJSMzJHMzJCMzJBMzJfRkxPQVQiLAorICAiR0xfUkdCIjogIlI4RzhC
OEE4X1VOT1JNIiwKKyAgIkdMX1JHQjE2RiI6ICJSMTZHMTZCMTZBMTZfRkxPQVQiLAorICAiR0xf
UkdCMTZJIjogIlIxNkcxNkIxNkExNl9TSU5UIiwKKyAgIkdMX1JHQjE2VUkiOiAiUjE2RzE2QjE2
QTE2X1VJTlQiLAorICAiR0xfUkdCNTY1IjogIkI1RzZSNV9VTk9STSIsCisgICJHTF9SR0I1X0Ex
IjogIkI1RzVSNUExX1VOT1JNIiwKKyAgIkdMX1JHQjgiOiAiUjhHOEI4QThfVU5PUk0iLAorICAi
R0xfUkdCOEkiOiAiUjhHOEI4QThfU0lOVCIsCisgICJHTF9SR0I4VUkiOiAiUjhHOEI4QThfVUlO
VCIsCisgICJHTF9SR0I4X1NOT1JNIjogIlI4RzhCOEE4X1NOT1JNIiwKKyAgIkdMX1JHQkE0Ijog
IkI0RzRSNEE0X1VOT1JNIiwKKyAgIkdMX1NSR0I4IjogIlI4RzhCOEE4X1VOT1JNX1NSR0IiLAor
ICAiR0xfU1RFTkNJTF9JTkRFWDgiOiAiRDI0X1VOT1JNX1M4X1VJTlQiLAorICAiR0xfUkdCMTZf
RVhUIjogIlIxNkcxNkIxNkExNl9VTk9STSIsCisgICJHTF9SR0JBMTZfRVhUIjogIlIxNkcxNkIx
NkExNl9VTk9STSIsCisgICJHTF9SR0IxNl9TTk9STV9FWFQiOiAiUjE2RzE2QjE2QTE2X1NOT1JN
IiwKKyAgIkdMX1JHQjMyRiI6ICJSMzJHMzJCMzJBMzJfRkxPQVQiLAorICAiR0xfUkdCMzJJIjog
IlIzMkczMkIzMkEzMl9TSU5UIiwKKyAgIkdMX1JHQjMyVUkiOiAiUjMyRzMyQjMyQTMyX1VJTlQi
CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVf
Zm9ybWF0X3RhYmxlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gSGVscGVyIHJv
dXRpbmVzIGZvciB0aGUgRDNEMTEgdGV4dHVyZSBmb3JtYXQgdGFibGUuCisKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfdGFibGUuaCIKKworI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2xvYWRfZnVuY3Rpb25zX3RhYmxlLmgiCisKK25hbWVz
cGFjZSByeAoreworCituYW1lc3BhY2UgZDNkMTEKK3sKKworRm9ybWF0OjpGb3JtYXQoKQorICAg
IDogaW50ZXJuYWxGb3JtYXQoR0xfTk9ORSksCisgICAgICBmb3JtYXQoYW5nbGU6OkZvcm1hdDo6
R2V0KGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FKSksCisgICAgICB0ZXhGb3JtYXQoRFhHSV9GT1JN
QVRfVU5LTk9XTiksCisgICAgICBzcnZGb3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiksCisgICAg
ICBydHZGb3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiksCisgICAgICBkc3ZGb3JtYXQoRFhHSV9G
T1JNQVRfVU5LTk9XTiksCisgICAgICBibGl0U1JWRm9ybWF0KERYR0lfRk9STUFUX1VOS05PV04p
LAorICAgICAgc3dpenpsZSgqdGhpcyksCisgICAgICBkYXRhSW5pdGlhbGl6ZXJGdW5jdGlvbihu
dWxscHRyKQoreworfQorCitGb3JtYXQ6OkZvcm1hdChHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisg
ICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRCBmb3JtYXRJRCwKKyAgICAgICAgICAgICAg
IERYR0lfRk9STUFUIHRleEZvcm1hdCwKKyAgICAgICAgICAgICAgIERYR0lfRk9STUFUIHNydkZv
cm1hdCwKKyAgICAgICAgICAgICAgIERYR0lfRk9STUFUIHJ0dkZvcm1hdCwKKyAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUIGRzdkZvcm1hdCwKKyAgICAgICAgICAgICAgIERYR0lfRk9STUFUIGJs
aXRTUlZGb3JtYXQsCisgICAgICAgICAgICAgICBHTGVudW0gc3dpenpsZUZvcm1hdCwKKyAgICAg
ICAgICAgICAgIEluaXRpYWxpemVUZXh0dXJlRGF0YUZ1bmN0aW9uIGludGVybmFsRm9ybWF0SW5p
dGlhbGl6ZXIsCisgICAgICAgICAgICAgICBjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmZGV2
aWNlQ2FwcykKKyAgICA6IGludGVybmFsRm9ybWF0KGludGVybmFsRm9ybWF0KSwKKyAgICAgIGZv
cm1hdChhbmdsZTo6Rm9ybWF0OjpHZXQoZm9ybWF0SUQpKSwKKyAgICAgIHRleEZvcm1hdCh0ZXhG
b3JtYXQpLAorICAgICAgc3J2Rm9ybWF0KHNydkZvcm1hdCksCisgICAgICBydHZGb3JtYXQocnR2
Rm9ybWF0KSwKKyAgICAgIGRzdkZvcm1hdChkc3ZGb3JtYXQpLAorICAgICAgYmxpdFNSVkZvcm1h
dChibGl0U1JWRm9ybWF0KSwKKyAgICAgIHN3aXp6bGUoc3dpenpsZUZvcm1hdCA9PSBpbnRlcm5h
bEZvcm1hdCA/ICp0aGlzIDogRm9ybWF0OjpHZXQoc3dpenpsZUZvcm1hdCwgZGV2aWNlQ2Fwcykp
LAorICAgICAgZGF0YUluaXRpYWxpemVyRnVuY3Rpb24oaW50ZXJuYWxGb3JtYXRJbml0aWFsaXpl
ciksCisgICAgICBsb2FkRnVuY3Rpb25zKEdldExvYWRGdW5jdGlvbnNNYXAoaW50ZXJuYWxGb3Jt
YXQsIGZvcm1hdElEKSkKK3sKK30KKworfSAgLy8gbmFtZXNwYWNlIGQzZDExCisKK30gIC8vIG5h
bWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4
dHVyZV9mb3JtYXRfdGFibGUuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90
YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw4ICsxNCw5IEBACiAKICNpbmNsdWRlICJjb21t
b24vYW5nbGV1dGlscy5oIgogI2luY2x1ZGUgImNvbW1vbi9wbGF0Zm9ybS5oIgorI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L3JlbmRlcmVyX3V0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2Zvcm1h
dHV0aWxzRDNELmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1
cmVfZm9ybWF0X3RhYmxlX2F1dG9nZW4uaCIKIAogbmFtZXNwYWNlIHJ4CiB7CkBAIC0yNSwzOSAr
MjYsMjggQEAgc3RydWN0IFJlbmRlcmVyMTFEZXZpY2VDYXBzOwogbmFtZXNwYWNlIGQzZDExCiB7
CiAKLXN0cnVjdCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8KKy8vIEZvciBzaXplZCBHTCBpbnRlcm5h
bCBmb3JtYXRzLCB0aGVyZSBhcmUgc2V2ZXJhbCBwb3NzaWJsZSBjb3JyZXNwb25kaW5nIEQzRDEx
IGZvcm1hdHMgZGVwZW5kaW5nCisvLyBvbiBkZXZpY2UgY2FwYWJpbGl0aWVzLgorLy8gVGhpcyBz
dHJ1Y3R1cmUgYWxsb3dzIHF1ZXJ5aW5nIGZvciB0aGUgRFhHSSB0ZXh0dXJlIGZvcm1hdHMgdG8g
dXNlIGZvciB0ZXh0dXJlcywgU1JWcywgUlRWcyBhbmQKKy8vIERTVnMgZ2l2ZW4gYSBHTCBpbnRl
cm5hbCBmb3JtYXQuCitzdHJ1Y3QgRm9ybWF0IGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiB7
Ci0gICAgTG9hZEltYWdlRnVuY3Rpb25JbmZvKCkgOiBsb2FkRnVuY3Rpb24obnVsbHB0ciksIHJl
cXVpcmVzQ29udmVyc2lvbihmYWxzZSkge30KLSAgICBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9h
ZEltYWdlRnVuY3Rpb24gbG9hZEZ1bmN0aW9uLCBib29sIHJlcXVpcmVzQ29udmVyc2lvbikKLSAg
ICAgICAgOiBsb2FkRnVuY3Rpb24obG9hZEZ1bmN0aW9uKSwgcmVxdWlyZXNDb252ZXJzaW9uKHJl
cXVpcmVzQ29udmVyc2lvbikKLSAgICB7Ci0gICAgfQorICAgIEZvcm1hdCgpOworICAgIEZvcm1h
dChHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEIGZv
cm1hdElELAorICAgICAgICAgICBEWEdJX0ZPUk1BVCB0ZXhGb3JtYXQsCisgICAgICAgICAgIERY
R0lfRk9STUFUIHNydkZvcm1hdCwKKyAgICAgICAgICAgRFhHSV9GT1JNQVQgcnR2Rm9ybWF0LAor
ICAgICAgICAgICBEWEdJX0ZPUk1BVCBkc3ZGb3JtYXQsCisgICAgICAgICAgIERYR0lfRk9STUFU
IGJsaXRTUlZGb3JtYXQsCisgICAgICAgICAgIEdMZW51bSBzd2l6emxlRm9ybWF0LAorICAgICAg
ICAgICBJbml0aWFsaXplVGV4dHVyZURhdGFGdW5jdGlvbiBpbnRlcm5hbEZvcm1hdEluaXRpYWxp
emVyLAorICAgICAgICAgICBjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmZGV2aWNlQ2Fwcyk7
CiAKLSAgICBMb2FkSW1hZ2VGdW5jdGlvbiBsb2FkRnVuY3Rpb247Ci0gICAgYm9vbCByZXF1aXJl
c0NvbnZlcnNpb247Ci19OworICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgJkdldChHTGVudW0gaW50
ZXJuYWxGb3JtYXQsIGNvbnN0IFJlbmRlcmVyMTFEZXZpY2VDYXBzICZkZXZpY2VDYXBzKTsKIAot
c3RydWN0IEFOR0xFRm9ybWF0U2V0Ci17Ci0gICAgQU5HTEVGb3JtYXRTZXQoKTsKLSAgICBBTkdM
RUZvcm1hdFNldChBTkdMRUZvcm1hdCBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgR0xlbnVt
IGdsSW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVQgdGV4Rm9y
bWF0LAotICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUIHNydkZvcm1hdCwKLSAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVCBydHZGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVQgZHN2Rm9ybWF0LAotICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUIGJsaXRT
UlZGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgQU5HTEVGb3JtYXQgc3dpenpsZUZvcm1hdCwK
LSAgICAgICAgICAgICAgICAgICBNaXBHZW5lcmF0aW9uRnVuY3Rpb24gbWlwR2VuZXJhdGlvbkZ1
bmN0aW9uLAotICAgICAgICAgICAgICAgICAgIENvbG9yUmVhZEZ1bmN0aW9uIGNvbG9yUmVhZEZ1
bmN0aW9uKTsKLSAgICBBTkdMRUZvcm1hdFNldChjb25zdCBBTkdMRUZvcm1hdFNldCAmKSA9IGRl
ZmF1bHQ7Ci0gICAgQU5HTEVGb3JtYXRTZXQgJm9wZXJhdG9yPShjb25zdCBBTkdMRUZvcm1hdFNl
dCAmKSA9IGRlZmF1bHQ7Ci0KLSAgICBBTkdMRUZvcm1hdCBmb3JtYXQ7Ci0KLSAgICAvLyBUaGUg
Y2xvc2VzdCBtYXRjaGluZyBHTCBpbnRlcm5hbCBmb3JtYXQgZm9yIHRoZSBEWEdJIGZvcm1hdHMg
dGhpcyBmb3JtYXQgdXNlcy4gTm90ZSB0aGF0IHRoaXMKLSAgICAvLyBtYXkgYmUgYSBkaWZmZXJl
bnQgaW50ZXJuYWwgZm9ybWF0IHRoYW4gdGhlIG9uZSB0aGlzIEFOR0xFIGZvcm1hdCBpcyB1c2Vk
IGZvci4KLSAgICBHTGVudW0gZ2xJbnRlcm5hbEZvcm1hdDsKKyAgICBHTGVudW0gaW50ZXJuYWxG
b3JtYXQ7CisgICAgY29uc3QgYW5nbGU6OkZvcm1hdCAmZm9ybWF0OwogCiAgICAgRFhHSV9GT1JN
QVQgdGV4Rm9ybWF0OwogICAgIERYR0lfRk9STUFUIHNydkZvcm1hdDsKQEAgLTY2LDMyICs1Niwx
MyBAQCBzdHJ1Y3QgQU5HTEVGb3JtYXRTZXQKIAogICAgIERYR0lfRk9STUFUIGJsaXRTUlZGb3Jt
YXQ7CiAKLSAgICBBTkdMRUZvcm1hdCBzd2l6emxlRm9ybWF0OwotCi0gICAgTWlwR2VuZXJhdGlv
bkZ1bmN0aW9uIG1pcEdlbmVyYXRpb25GdW5jdGlvbjsKLSAgICBDb2xvclJlYWRGdW5jdGlvbiBj
b2xvclJlYWRGdW5jdGlvbjsKLX07Ci0KLXN0cnVjdCBUZXh0dXJlRm9ybWF0IDogcHVibGljIGFu
Z2xlOjpOb25Db3B5YWJsZQotewotICAgIFRleHR1cmVGb3JtYXQoR0xlbnVtIGludGVybmFsRm9y
bWF0LAotICAgICAgICAgICAgICAgICAgY29uc3QgQU5HTEVGb3JtYXQgYW5nbGVGb3JtYXQsCi0g
ICAgICAgICAgICAgICAgICBJbml0aWFsaXplVGV4dHVyZURhdGFGdW5jdGlvbiBpbnRlcm5hbEZv
cm1hdEluaXRpYWxpemVyKTsKLQotICAgIGNvbnN0IEFOR0xFRm9ybWF0U2V0ICpmb3JtYXRTZXQ7
Ci0gICAgY29uc3QgQU5HTEVGb3JtYXRTZXQgKnN3aXp6bGVGb3JtYXRTZXQ7CisgICAgY29uc3Qg
Rm9ybWF0ICZzd2l6emxlOwogCiAgICAgSW5pdGlhbGl6ZVRleHR1cmVEYXRhRnVuY3Rpb24gZGF0
YUluaXRpYWxpemVyRnVuY3Rpb247Ci0gICAgdHlwZWRlZiBzdGQ6Om1hcDxHTGVudW0sIExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbz4gTG9hZEZ1bmN0aW9uTWFwOwogCiAgICAgTG9hZEZ1bmN0aW9uTWFw
IGxvYWRGdW5jdGlvbnM7CiB9OwogCi1jb25zdCBBTkdMRUZvcm1hdFNldCAmR2V0QU5HTEVGb3Jt
YXRTZXQoQU5HTEVGb3JtYXQgYW5nbGVGb3JtYXQpOwotCi1jb25zdCBUZXh0dXJlRm9ybWF0ICZH
ZXRUZXh0dXJlRm9ybWF0SW5mbyhHTGVudW0gaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAm
cmVuZGVyZXIxMURldmljZUNhcHMpOwotCiB9ICAvLyBuYW1lc3BhY2UgZDNkMTEKIAogfSAgLy8g
bmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlX2F1dG9nZW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfdGFibGVfYXV0b2dlbi5jcHAJKHJldmlzaW9uIDIwNzgw
NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvdGV4dHVyZV9mb3JtYXRfdGFibGVfYXV0b2dlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNyArMSw3IEBACiAvLyBHRU5FUkFURUQgRklMRSAtIERPIE5PVCBFRElULgogLy8gR2VuZXJh
dGVkIGJ5IGdlbl90ZXh0dXJlX2Zvcm1hdF90YWJsZS5weSB1c2luZyBkYXRhIGZyb20gdGV4dHVy
ZV9mb3JtYXRfZGF0YS5qc29uCiAvLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTExLDEyICsxMSwxNSBA
QAogCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0
X3RhYmxlLmgiCiAKKyNpbmNsdWRlICJpbWFnZV91dGlsL2NvcHlpbWFnZS5oIgorI2luY2x1ZGUg
ImltYWdlX3V0aWwvZ2VuZXJhdGVtaXAuaCIKKyNpbmNsdWRlICJpbWFnZV91dGlsL2xvYWRpbWFn
ZS5oIgorCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2Zvcm1hdHV0aWxz
MTEuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvbG9hZF9mdW5jdGlv
bnNfdGFibGUuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvcmVuZGVy
ZXIxMV91dGlscy5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9jb3B5aW1hZ2Uu
aCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZ2VuZXJhdGVtaXAuaCIKLSNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvbG9hZGltYWdlLmgiCisjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlX3V0aWxzLmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBhbmdsZTsKIAogbmFtZXNwYWNlIHJ4CiB7CkBAIC0yNCwxODM2ICsyNywx
OTE2IEBAIG5hbWVzcGFjZSByeAogbmFtZXNwYWNlIGQzZDExCiB7CiAKLW5hbWVzcGFjZQotewot
Ci10eXBlZGVmIGJvb2wgKCpGb3JtYXRTdXBwb3J0RnVuY3Rpb24pKGNvbnN0IFJlbmRlcmVyMTFE
ZXZpY2VDYXBzICYpOwotCi1ib29sIE9ubHlGTDEwUGx1cyhjb25zdCBSZW5kZXJlcjExRGV2aWNl
Q2FwcyAmZGV2aWNlQ2FwcykKLXsKLSAgICByZXR1cm4gKGRldmljZUNhcHMuZmVhdHVyZUxldmVs
ID49IEQzRF9GRUFUVVJFX0xFVkVMXzEwXzApOwotfQotCi1ib29sIE9ubHlGTDlfMyhjb25zdCBS
ZW5kZXJlcjExRGV2aWNlQ2FwcyAmZGV2aWNlQ2FwcykKLXsKLSAgICByZXR1cm4gKGRldmljZUNh
cHMuZmVhdHVyZUxldmVsID09IEQzRF9GRUFUVVJFX0xFVkVMXzlfMyk7Ci19Ci0KLXRlbXBsYXRl
IDxEWEdJX0ZPUk1BVCBmb3JtYXQsIGJvb2wgcmVxdWlyZVN1cHBvcnQ+Ci1ib29sIFN1cHBvcnRz
Rm9ybWF0KGNvbnN0IFJlbmRlcmVyMTFEZXZpY2VDYXBzICZkZXZpY2VDYXBzKQotewotICAgIC8v
IE11c3Qgc3VwcG9ydCB0ZXh0dXJlLCBTUlYgYW5kIFJUViBzdXBwb3J0Ci0gICAgVUlOVCBtdXN0
U3VwcG9ydCA9IEQzRDExX0ZPUk1BVF9TVVBQT1JUX1RFWFRVUkUyRCB8IEQzRDExX0ZPUk1BVF9T
VVBQT1JUX1RFWFRVUkVDVUJFIHwKLSAgICAgICAgICAgICAgICAgICAgICAgRDNEMTFfRk9STUFU
X1NVUFBPUlRfU0hBREVSX1NBTVBMRSB8IEQzRDExX0ZPUk1BVF9TVVBQT1JUX01JUCB8Ci0gICAg
ICAgICAgICAgICAgICAgICAgIEQzRDExX0ZPUk1BVF9TVVBQT1JUX1JFTkRFUl9UQVJHRVQ7Ci0K
LSAgICBpZiAoZDNkMTFfZ2w6OkdldE1heGltdW1DbGllbnRWZXJzaW9uKGRldmljZUNhcHMuZmVh
dHVyZUxldmVsKSA+IDIpCi0gICAgewotICAgICAgICBtdXN0U3VwcG9ydCB8PSBEM0QxMV9GT1JN
QVRfU1VQUE9SVF9URVhUVVJFM0Q7Ci0gICAgfQotCi0gICAgYm9vbCBmdWxsU3VwcG9ydCA9IGZh
bHNlOwotICAgIGlmIChmb3JtYXQgPT0gRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNKQotICAgIHsK
LSAgICAgICAgLy8gQWxsIGhhcmR3YXJlIHRoYXQgc3VwcG9ydHMgRFhHSV9GT1JNQVRfQjVHNlI1
X1VOT1JNIHNob3VsZCBzdXBwb3J0IGF1dG9nZW4gbWlwbWFwcywgYnV0Ci0gICAgICAgIC8vIGNo
ZWNrIGFueXdheS4KLSAgICAgICAgbXVzdFN1cHBvcnQgfD0gRDNEMTFfRk9STUFUX1NVUFBPUlRf
TUlQX0FVVE9HRU47Ci0gICAgICAgIGZ1bGxTdXBwb3J0ID0gKChkZXZpY2VDYXBzLkI1RzZSNXN1
cHBvcnQgJiBtdXN0U3VwcG9ydCkgPT0gbXVzdFN1cHBvcnQpOwotICAgIH0KLSAgICBlbHNlIGlm
IChmb3JtYXQgPT0gRFhHSV9GT1JNQVRfQjRHNFI0QTRfVU5PUk0pCi0gICAgewotICAgICAgICBm
dWxsU3VwcG9ydCA9ICgoZGV2aWNlQ2Fwcy5CNEc0UjRBNHN1cHBvcnQgJiBtdXN0U3VwcG9ydCkg
PT0gbXVzdFN1cHBvcnQpOwotICAgIH0KLSAgICBlbHNlIGlmIChmb3JtYXQgPT0gRFhHSV9GT1JN
QVRfQjVHNVI1QTFfVU5PUk0pCi0gICAgewotICAgICAgICBmdWxsU3VwcG9ydCA9ICgoZGV2aWNl
Q2Fwcy5CNUc1UjVBMXN1cHBvcnQgJiBtdXN0U3VwcG9ydCkgPT0gbXVzdFN1cHBvcnQpOwotICAg
IH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gVGhpcyAnU3VwcG9ydHNGb3JtYXQnIGZ1bmN0aW9u
IGlzIHVzZWQgYnkgaW5kaXZpZHVhbCBlbnRyaWVzIGluIHRoZSBEM0QxMSBGb3JtYXQgTWFwIGJl
bG93LAotICAgIC8vIHdoaWNoIG1hcHMgR0wgZm9ybWF0cyB0byBEWEdJIGZvcm1hdHMuCi0gICAg
aWYgKHJlcXVpcmVTdXBwb3J0KQotICAgIHsKLSAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IEFO
R0xFIHdvdWxkIGxpa2UgdG8gdXNlIHRoZSBlbnRyeSBpbiB0aGUgbWFwIGlmIHRoZSBpbnB1dHRl
ZCBEWEdJIGZvcm1hdAotICAgICAgICAvLyAqSVMqIHN1cHBvcnRlZC4KLSAgICAgICAgLy8gZS5n
LiB0aGUgZW50cnkgbWlnaHQgbWFwIEdMX1JHQjVfQTEgdG8gRFhHSV9GT1JNQVRfQjVHNVI1QTEs
IHdoaWNoIHNob3VsZCBvbmx5IGJlIHVzZWQgaWYKLSAgICAgICAgLy8gRFhHSV9GT1JNQVRfQjVH
NVI1QTEgaXMgc3VwcG9ydGVkLgotICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIHdlIHNob3VsZCBv
bmx5IHJldHVybiAndHJ1ZScgaWYgdGhlIGZvcm1hdCAqSVMqIHN1cHBvcnRlZC4KLSAgICAgICAg
cmV0dXJuIGZ1bGxTdXBwb3J0OwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICAvLyBU
aGlzIG1lYW5zIHRoYXQgQU5HTEUgd291bGQgbGlrZSB0byB1c2UgdGhlIGVudHJ5IGluIHRoZSBt
YXAgaWYgdGhlIGlucHV0dGVkIERYR0kgZm9ybWF0Ci0gICAgICAgIC8vICpJU04nVCogc3VwcG9y
dGVkLgotICAgICAgICAvLyBUaGlzIG1pZ2h0IGJlIGEgZmFsbGJhY2sgZW50cnkuIGUuZy4gZm9y
IEFOR0xFIHRvIHVzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSBpZgotICAgICAgICAvLyBE
WEdJX0ZPUk1BVF9CNUc1UjVBMSBpc24ndCBzdXBwb3J0ZWQuCi0gICAgICAgIC8vIEluIHRoaXMg
Y2FzZSwgd2Ugc2hvdWxkIG9ubHkgcmV0dXJuICd0cnVlJyBpZiB0aGUgZm9ybWF0ICpJU04nVCog
c3VwcG9ydGVkLgotICAgICAgICByZXR1cm4gIWZ1bGxTdXBwb3J0OwotICAgIH0KLX0KLQotLy8g
RW5kIEZvcm1hdCBTdXBwb3J0IEZ1bmN0aW9ucwotfSAgLy8gbmFtZXNwYWNlCi0KLUFOR0xFRm9y
bWF0U2V0OjpBTkdMRUZvcm1hdFNldCgpCi0gICAgOiBmb3JtYXQoQU5HTEVfRk9STUFUX05PTkUp
LAotICAgICAgZ2xJbnRlcm5hbEZvcm1hdChHTF9OT05FKSwKLSAgICAgIHRleEZvcm1hdChEWEdJ
X0ZPUk1BVF9VTktOT1dOKSwKLSAgICAgIHNydkZvcm1hdChEWEdJX0ZPUk1BVF9VTktOT1dOKSwK
LSAgICAgIHJ0dkZvcm1hdChEWEdJX0ZPUk1BVF9VTktOT1dOKSwKLSAgICAgIGRzdkZvcm1hdChE
WEdJX0ZPUk1BVF9VTktOT1dOKSwKLSAgICAgIGJsaXRTUlZGb3JtYXQoRFhHSV9GT1JNQVRfVU5L
Tk9XTiksCi0gICAgICBzd2l6emxlRm9ybWF0KEFOR0xFX0ZPUk1BVF9OT05FKSwKLSAgICAgIG1p
cEdlbmVyYXRpb25GdW5jdGlvbihudWxscHRyKSwKLSAgICAgIGNvbG9yUmVhZEZ1bmN0aW9uKG51
bGxwdHIpCi17Ci19Ci0KLS8vIEZvciBzaXplZCBHTCBpbnRlcm5hbCBmb3JtYXRzLCB0aGVyZSBh
cmUgc2V2ZXJhbCBwb3NzaWJsZSBjb3JyZXNwb25kaW5nIEQzRDExIGZvcm1hdHMgZGVwZW5kaW5n
Ci0vLyBvbiBkZXZpY2UgY2FwYWJpbGl0aWVzLgotLy8gVGhpcyBmdW5jdGlvbiBhbGxvd3MgcXVl
cnlpbmcgZm9yIHRoZSBEWEdJIHRleHR1cmUgZm9ybWF0cyB0byB1c2UgZm9yIHRleHR1cmVzLCBT
UlZzLCBSVFZzIGFuZAotLy8gRFNWcyBnaXZlbiBhIEdMIGludGVybmFsIGZvcm1hdC4KLVRleHR1
cmVGb3JtYXQ6OlRleHR1cmVGb3JtYXQoR0xlbnVtIGludGVybmFsRm9ybWF0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBBTkdMRUZvcm1hdCBhbmdsZUZvcm1hdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZVRleHR1cmVEYXRhRnVuY3Rpb24gaW50
ZXJuYWxGb3JtYXRJbml0aWFsaXplcikKLSAgICA6IGRhdGFJbml0aWFsaXplckZ1bmN0aW9uKGlu
dGVybmFsRm9ybWF0SW5pdGlhbGl6ZXIpCi17Ci0gICAgZm9ybWF0U2V0ICAgICAgICA9ICZHZXRB
TkdMRUZvcm1hdFNldChhbmdsZUZvcm1hdCk7Ci0gICAgc3dpenpsZUZvcm1hdFNldCA9ICZHZXRB
TkdMRUZvcm1hdFNldChmb3JtYXRTZXQtPnN3aXp6bGVGb3JtYXQpOwotCi0gICAgLy8gR2F0aGVy
IGFsbCB0aGUgbG9hZCBmdW5jdGlvbnMgZm9yIHRoaXMgaW50ZXJuYWwgZm9ybWF0Ci0gICAgbG9h
ZEZ1bmN0aW9ucyA9IEdldExvYWRGdW5jdGlvbnNNYXAoaW50ZXJuYWxGb3JtYXQsIGZvcm1hdFNl
dC0+dGV4Rm9ybWF0KTsKLQotICAgIEFTU0VSVChsb2FkRnVuY3Rpb25zLnNpemUoKSAhPSAwIHx8
IGludGVybmFsRm9ybWF0ID09IEdMX05PTkUpOwotfQotCi1BTkdMRUZvcm1hdFNldDo6QU5HTEVG
b3JtYXRTZXQoQU5HTEVGb3JtYXQgZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBnbEludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUIHRleEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVCBzcnZGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVQgcnR2Rm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUIGRzdkZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVCBibGl0U1JWRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFO
R0xFRm9ybWF0IHN3aXp6bGVGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TWlwR2VuZXJhdGlvbkZ1bmN0aW9uIG1pcEdlbmVyYXRpb25GdW5jdGlvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDb2xvclJlYWRGdW5jdGlvbiBjb2xvclJlYWRGdW5jdGlvbikK
LSAgICA6IGZvcm1hdChmb3JtYXQpLAotICAgICAgZ2xJbnRlcm5hbEZvcm1hdChnbEludGVybmFs
Rm9ybWF0KSwKLSAgICAgIHRleEZvcm1hdCh0ZXhGb3JtYXQpLAotICAgICAgc3J2Rm9ybWF0KHNy
dkZvcm1hdCksCi0gICAgICBydHZGb3JtYXQocnR2Rm9ybWF0KSwKLSAgICAgIGRzdkZvcm1hdChk
c3ZGb3JtYXQpLAotICAgICAgYmxpdFNSVkZvcm1hdChibGl0U1JWRm9ybWF0KSwKLSAgICAgIHN3
aXp6bGVGb3JtYXQoc3dpenpsZUZvcm1hdCksCi0gICAgICBtaXBHZW5lcmF0aW9uRnVuY3Rpb24o
bWlwR2VuZXJhdGlvbkZ1bmN0aW9uKSwKLSAgICAgIGNvbG9yUmVhZEZ1bmN0aW9uKGNvbG9yUmVh
ZEZ1bmN0aW9uKQotewotfQotCi1jb25zdCBBTkdMRUZvcm1hdFNldCAmR2V0QU5HTEVGb3JtYXRT
ZXQoQU5HTEVGb3JtYXQgYW5nbGVGb3JtYXQpCi17Ci0gICAgLy8gY2xhbmctZm9ybWF0IG9mZgot
ICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCi0gICAgewotICAgICAgICBjYXNlIEFOR0xFX0ZPUk1B
VF9BOF9VTk9STToKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9y
bWF0U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX0E4X1VOT1JNLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQUxQSEE4X0VYVCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X0E4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfQThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9BOF9VTk9STSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9BOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPEE4PiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRD
b2xvcjxBOCwgR0xmbG9hdD4pOwotICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfQjRHNFI0QTRfVU5PUk06Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFO
R0xFX0ZPUk1BVF9CNEc0UjRBNF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjRHNFI0QTRfVU5PUk0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9CNEc0UjRBNF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I0RzRSNEE0X1VOT1JNLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX0I0RzRSNEE0X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX0I0RzRSNEE0X1VOT1JNLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8
QTRSNEc0QjQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUmVhZENvbG9yPEE0UjRHNEI0LCBHTGZsb2F0Pik7Ci0gICAgICAgICAgICByZXR1cm4g
Zm9ybWF0SW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9CNUc1UjVB
MV9VTk9STToKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0
U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX0I1RzVSNUExX1VOT1JNLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCNV9BMSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X0I1RzVSNUExX1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjVHNVI1QTFfVU5PUk0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNUc1UjVBMV9V
Tk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNUc1UjVBMV9VTk9STSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4
QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdlbmVyYXRlTWlwPEExUjVHNUI1PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxBMVI1RzVCNSwgR0xmbG9hdD4pOwot
ICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBB
TkdMRV9GT1JNQVRfQjVHNlI1X1VOT1JNOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMg
Y29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfQjVHNlI1X1VOT1JN
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
UkdCNTY1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
QjVHNlI1X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I1RzZSNV9VTk9STSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1B
VF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFI1RzZCNT4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjVHNkI1LCBHTGZsb2F0Pik7
Ci0gICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNl
IEFOR0xFX0ZPUk1BVF9COEc4UjhBOF9VTk9STToKLSAgICAgICAgewotICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX0I4RzhSOEE4
X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfQkdSQThfRVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9COEc4UjhBOF9V
Tk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I4RzhS
OEE4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQU5HTEVfRk9STUFUX0I4RzhSOEE4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8QjhHOFI4QTg+LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9y
PEI4RzhSOEE4LCBHTGZsb2F0Pik7Ci0gICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKLSAg
ICAgICAgfQotICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9CQzFfVU5PUk06Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xF
X0ZPUk1BVF9CQzFfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JD
MV9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX0JDMV9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfQkMxX1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAg
ICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBTkdM
RV9GT1JNQVRfQkMyX1VOT1JNOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
QU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfQkMyX1VOT1JNLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NF
RF9SR0JBX1MzVENfRFhUM19BTkdMRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDMl9VTk9STSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDMl9VTk9S
TSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMyX1VOT1JNLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9S
TUFUX1I4RzhCOEE4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAgICAgcmV0dXJuIGZvcm1hdElu
Zm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfQkMzX1VOT1JNOgotICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5m
byhBTkdMRV9GT1JNQVRfQkMzX1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX0JDM19VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDM19VTk9STSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfQkMzX1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIpOwotICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBBTkdMRV9GT1JNQVRfRDE2X1VOT1JNX0ZMMTA6Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9EMTZf
VU5PUk1fRkwxMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX0RFUFRIX0NPTVBPTkVOVDE2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X1RZUEVMRVNTLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjE2X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0QxNl9VTk9STSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9V
Tk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICBy
ZXR1cm4gZm9ybWF0SW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9E
MTZfVU5PUk1fRkw5XzM6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdM
RUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9EMTZfVU5PUk1fRkw5XzMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9ERVBUSF9D
T01QT05FTlQxNiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX0QxNl9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktO
T1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfRDE2X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZB
MTZfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVF9GTDEwOgot
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0
SW5mbyhBTkdMRV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlRfRkwxMCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0RFUFRIMjRfU1RFTkNJTDhf
T0VTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjI0RzhfVFlQRUxFU1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMjRfVU5PUk1fWDhfVFlQRUxFU1Ms
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMjRfVU5P
Uk1fWDhfVFlQRUxFU1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAg
ICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBTkdM
RV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlRfRkw5XzM6Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9EMjRf
VU5PUk1fUzhfVUlOVF9GTDlfMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfRDI0X1VOT1JN
X1M4X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0QyNF9VTk9S
TV9TOF9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0cik7Ci0gICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIEFOR0xFX0ZPUk1BVF9EMzJfRkxPQVQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9EMzJfRkxP
QVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9ERVBUSF9DT01QT05FTlQzMkYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfVFlQRUxFU1MsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfRkxP
QVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfRDMyX0ZMT0FULAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVf
Rk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybiBm
b3JtYXRJbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQU5HTEVfRk9STUFUX0QzMl9GTE9B
VF9TOFgyNF9VSU5UX0ZMMTA6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBB
TkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9EMzJfRkxPQVRfUzhYMjRfVUlO
VF9GTDEwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfREVQVEgzMkZfU1RFTkNJTDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHOFgyNF9UWVBFTEVTUywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IzMl9GTE9BVF9YOFgyNF9UWVBFTEVTUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMzJfRkxP
QVRfUzhYMjRfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1IzMl9GTE9BVF9YOFgyNF9UWVBFTEVTUywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9S
MzJHMzJCMzJBMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5m
bzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9OT05FOgotICAgICAgICB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdM
RV9GT1JNQVRfTk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX05PTkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9OT05FLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxwdHIpOwotICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBBTkdMRV9GT1JNQVRfUjEwRzEwQjEwQTJfVUlOVDoKLSAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFU
X1IxMEcxMEIxMEEyX1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9SR0IxMF9BMlVJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVUlOVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1IxMEcxMEIxMEEyX1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VSU5ULAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5l
cmF0ZU1pcDxSMTBHMTBCMTBBMj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjEwRzEwQjEwQTIsIEdMdWludD4pOwotICAgICAg
ICAgICAgcmV0dXJuIGZvcm1hdEluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBTkdMRV9G
T1JNQVRfUjEwRzEwQjEwQTJfVU5PUk06Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9SMTBHMTBCMTBBMl9V
Tk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1JHQjEwX0EyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVU5PUk0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBB
Ml9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IxMEcxMEIxMEEyX1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9VTk9STSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIx
MEcxMEIxMEEyPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJlYWRDb2xvcjxSMTBHMTBCMTBBMiwgR0xmbG9hdD4pOwotICAgICAgICAgICAgcmV0
dXJuIGZvcm1hdEluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfUjEx
RzExQjEwX0ZMT0FUOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVG
b3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfUjExRzExQjEwX0ZMT0FULAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjExRl9HMTFG
X0IxMEYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SMTFHMTFCMTBfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTFHMTFCMTBfRkxPQVQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SMTFHMTFCMTBfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjExRzExQjEwX0ZM
T0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIxMUcxMUIxMEY+LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9y
PFIxMUcxMUIxMEYsIEdMZmxvYXQ+KTsKLSAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOwot
ICAgICAgICB9Ci0gICAgICAgIGNhc2UgQU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVDoK
LSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZvcm1h
dEluZm8oQU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNkYsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZH
MTZCMTZBMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZC
MTZBMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVf
Rk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIxNkcxNkIxNkExNkY+LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIx
NkcxNkIxNkExNkYsIEdMZmxvYXQ+KTsKLSAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOwot
ICAgICAgICB9Ci0gICAgICAgIGNhc2UgQU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5UOgot
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0
SW5mbyhBTkdMRV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZJLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2
QjE2QTE2X1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkEx
Nl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5ULAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFU
X1IxNkcxNkIxNkExNl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjE2RzE2QjE2QTE2Uz4sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjE2RzE2QjE2
QTE2UywgR0xpbnQ+KTsKLSAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgQU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5UOgotICAgICAgICB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdM
RV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZVSSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9V
SU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMTZHMTZC
MTZBMTZfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdlbmVyYXRlTWlwPFIxNkcxNkIxNkExNj4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjE2RzE2QjE2QTE2LCBHTHVp
bnQ+KTsKLSAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgQU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9VTk9STToKLSAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFU
X1IxNkcxNkIxNkExNl9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX05PTkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SMTZHMTZCMTZBMTZfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9V
Tk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdlbmVyYXRlTWlwPFIxNkcxNkIxNkExNj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjE2RzE2QjE2QTE2LCBHTGZsb2F0Pik7
Ci0gICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNl
IEFOR0xFX0ZPUk1BVF9SMTZHMTZfRkxPQVQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9SMTZHMTZfRkxP
QVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9SRzE2RiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1IxNkcxNl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNl9GTE9BVCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IxNkcxNl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfRkxPQVQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JN
QVRfUjE2RzE2QjE2QTE2X0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjE2RzE2Rj4sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjE2RzE2RiwgR0xm
bG9hdD4pOwotICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBBTkdMRV9GT1JNQVRfUjE2RzE2X1NJTlQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9SMTZH
MTZfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1JHMTZJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfU0lOVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1IxNkcxNl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNl9TSU5ULAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9S
TUFUX1IxNkcxNkIxNkExNl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjE2RzE2Uz4sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjE2RzE2UywgR0xp
bnQ+KTsKLSAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgQU5HTEVfRk9STUFUX1IxNkcxNl9VSU5UOgotICAgICAgICB7Ci0gICAgICAgICAgICBz
dGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfUjE2RzE2
X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9SRzE2VUksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNl9VSU5ULAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjE2RzE2X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1VJTlQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JN
QVRfUjE2RzE2QjE2QTE2X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMTZHMTY+LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIxNkcxNiwgR0x1aW50
Pik7Ci0gICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIEFOR0xFX0ZPUk1BVF9SMTZfRkxPQVQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9SMTZfRkxPQVQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9S
MTZGLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjE2X0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X0ZMT0FULAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X0ZMT0FU
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZf
RkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHZW5lcmF0ZU1pcDxSMTZGPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMTZGLCBHTGZsb2F0Pik7Ci0gICAgICAgICAgICBy
ZXR1cm4gZm9ybWF0SW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9S
MTZfU0lOVDoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0
U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX1IxNl9TSU5ULAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjE2SSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9TSU5U
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjE2X1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SMTZfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIxNlM+LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9y
PFIxNlMsIEdMaW50Pik7Ci0gICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9SMTZfVUlOVDoKLSAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFU
X1IxNl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfUjE2VUksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9VSU5ULAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjE2X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X1VJTlQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjE2RzE2
QjE2QTE2X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHZW5lcmF0ZU1pcDxSMTY+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIxNiwgR0x1aW50Pik7Ci0gICAgICAgICAg
ICByZXR1cm4gZm9ybWF0SW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEFOR0xFX0ZPUk1B
VF9SMzJHMzJCMzJBMzJfRkxPQVQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxP
QVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9SR0JBMzJGLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMy
X0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IzMkczMkIzMkEzMl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxS
MzJHMzJCMzJBMzJGPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFJlYWRDb2xvcjxSMzJHMzJCMzJBMzJGLCBHTGZsb2F0Pik7Ci0gICAgICAgICAg
ICByZXR1cm4gZm9ybWF0SW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEFOR0xFX0ZPUk1B
VF9SMzJHMzJCMzJBMzJfU0lOVDoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IEFOR0xFRm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5U
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
UkdCQTMySSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1NJ
TlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJH
MzJCMzJBMzJfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIzMkczMkIz
MkEzMlM+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUmVhZENvbG9yPFIzMkczMkIzMkEzMlMsIEdMaW50Pik7Ci0gICAgICAgICAgICByZXR1cm4g
Zm9ybWF0SW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9SMzJHMzJC
MzJBMzJfVUlOVDoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9y
bWF0U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5ULAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMyVUks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5ULAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjMyRzMyQjMyQTMyX1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMy
X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBTkdMRV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMzJHMzJCMzJBMzI+LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENv
bG9yPFIzMkczMkIzMkEzMiwgR0x1aW50Pik7Ci0gICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5m
bzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9SMzJHMzJfRkxPQVQ6Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJ
bmZvKEFOR0xFX0ZPUk1BVF9SMzJHMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRzMyRiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1IzMkczMl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SMzJHMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8
UjMyRzMyRj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSZWFkQ29sb3I8UjMyRzMyRiwgR0xmbG9hdD4pOwotICAgICAgICAgICAgcmV0dXJuIGZv
cm1hdEluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfUjMyRzMyX1NJ
TlQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBm
b3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9SMzJHMzJfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHMzJJLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX1NJ
TlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMzJHMzJfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMl9TSU5ULAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1IzMkczMl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5ULAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8
UjMyRzMyUz4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSZWFkQ29sb3I8UjMyRzMyUywgR0xpbnQ+KTsKLSAgICAgICAgICAgIHJldHVybiBmb3Jt
YXRJbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQU5HTEVfRk9STUFUX1IzMkczMl9VSU5U
OgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9y
bWF0SW5mbyhBTkdMRV9GT1JNQVRfUjMyRzMyX1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRzMyVUksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJfVUlO
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1IzMkczMl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX1VJTlQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjMyRzMyX1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxS
MzJHMzI+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUmVhZENvbG9yPFIzMkczMiwgR0x1aW50Pik7Ci0gICAgICAgICAgICByZXR1cm4gZm9ybWF0
SW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9SMzJfRkxPQVQ6Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJ
bmZvKEFOR0xFX0ZPUk1BVF9SMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9SMzJGLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjMyX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMl9G
TE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFOR0xFX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMzJGPiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMzJG
LCBHTGZsb2F0Pik7Ci0gICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9SMzJfU0lOVDoKLSAgICAgICAgewotICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX1Iz
Ml9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfUjMySSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1IzMl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX1NJTlQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJf
U0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfU0lOVCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMzJHMzJCMzJB
MzJfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdlbmVyYXRlTWlwPFIzMlM+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIzMlMsIEdMaW50Pik7Ci0gICAgICAgICAgICBy
ZXR1cm4gZm9ybWF0SW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9S
MzJfVUlOVDoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0
U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX1IzMl9VSU5ULAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjMyVUksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfVUlO
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1IzMl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX1VJTlQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjMyX1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBTkdMRV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMzI+LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9y
PFIzMiwgR0x1aW50Pik7Ci0gICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9TSU5UOgotICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9G
T1JNQVRfUjhHOEI4QThfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX1JHQkE4SSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1NJTlQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
OEc4QjhBOF9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SOEc4QjhBOF9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1NJTlQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4QjhBOFM+
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVh
ZENvbG9yPFI4RzhCOEE4UywgR0xpbnQ+KTsKLSAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZv
OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1NOT1JNOgot
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0
SW5mbyhBTkdMRV9GT1JNQVRfUjhHOEI4QThfU05PUk0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOF9TTk9STSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhC
OEE4X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfU05PUk0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1NOT1JNLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJh
dGVNaXA8UjhHOEI4QThTPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJlYWRDb2xvcjxSOEc4QjhBOFMsIEdMZmxvYXQ+KTsKLSAgICAgICAgICAg
IHJldHVybiBmb3JtYXRJbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQU5HTEVfRk9STUFU
X1I4RzhCOEE4X1VJTlQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdM
RUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQThVSSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1I4RzhCOEE4X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4
QThfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4
RzhCOEE4X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4QjhBOD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjhHOEI4QTgsIEdMdWludD4pOwot
ICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBB
TkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk06Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9V
Tk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1JHQkE4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1I4RzhCOEE4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VO
T1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjhHOEI4QTg+LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFI4RzhC
OEE4LCBHTGZsb2F0Pik7Ci0gICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9OT05SRU5ERVJBQkxF
OgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9y
bWF0SW5mbyhBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fTk9OUkVOREVSQUJMRSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhHOEI4
QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHZW5lcmF0ZU1pcDxSOEc4QjhBOD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjhHOEI4QTgsIEdMZmxvYXQ+KTsKLSAg
ICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQU5H
TEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0I6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9SOEc4QjhB
OF9VTk9STV9TUkdCLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfU1JHQjhfQUxQSEE4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhHOEI4QThf
VU5PUk1fU1JHQiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdlbmVyYXRlTWlwPFI4RzhCOEE4PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSOEc4QjhBOCwgR0xmbG9hdD4pOwot
ICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBB
TkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQl9OT05SRU5ERVJBQkxFOgotICAgICAgICB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdM
RV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQl9OT05SRU5ERVJBQkxFLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfU1JHQjhfQUxQSEE4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0Is
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdM
RV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4QjhBOD4sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjhHOEI4QTgs
IEdMZmxvYXQ+KTsKLSAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgQU5HTEVfRk9STUFUX1I4RzhfU0lOVDoKLSAgICAgICAgewotICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX1I4
RzhfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1JHOEksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1NJTlQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
OEc4X1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9TSU5ULAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhC
OEE4X1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHZW5lcmF0ZU1pcDxSOEc4Uz4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjhHOFMsIEdMaW50Pik7Ci0gICAgICAgICAg
ICByZXR1cm4gZm9ybWF0SW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEFOR0xFX0ZPUk1B
VF9SOEc4X1NOT1JNOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVG
b3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfUjhHOF9TTk9STSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHOF9TTk9STSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1I4RzhfU05PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SOEc4X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1NOT1JNLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVN
aXA8UjhHOFM+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUmVhZENvbG9yPFI4RzhTLCBHTGZsb2F0Pik7Ci0gICAgICAgICAgICByZXR1cm4gZm9y
bWF0SW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9SOEc4X1NOT1JN
X05PTlJFTkRFUkFCTEU6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdM
RUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9SOEc4X1NOT1JNX05PTlJFTkRFUkFC
TEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9SRzhfU05PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9TTk9STSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9TTk9STSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4
QjhBOF9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdlbmVyYXRlTWlwPFI4RzhTPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSOEc4UywgR0xmbG9hdD4pOwotICAgICAg
ICAgICAgcmV0dXJuIGZvcm1hdEluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBTkdMRV9G
T1JNQVRfUjhHOF9VSU5UOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5H
TEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfUjhHOF9VSU5ULAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkc4VUksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SOEc4X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1VJTlQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjhHOF9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VJTlQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxS
OEc4PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJlYWRDb2xvcjxSOEc4LCBHTHVpbnQ+KTsKLSAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZv
OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQU5HTEVfRk9STUFUX1I4RzhfVU5PUk06Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZv
KEFOR0xFX0ZPUk1BVF9SOEc4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfUkc4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9VTk9STSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4
RzhfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SOEc4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4Rzhf
VU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4PiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSOEc4LCBH
TGZsb2F0Pik7Ci0gICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKLSAgICAgICAgfQotICAg
ICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9SOEc4X1VOT1JNX05PTlJFTkRFUkFCTEU6Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFO
R0xFX0ZPUk1BVF9SOEc4X1VOT1JNX05PTlJFTkRFUkFCTEUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRzgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1VOT1JN
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjhHOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjhHOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFI4Rzg+LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9y
PFI4RzgsIEdMZmxvYXQ+KTsKLSAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgQU5HTEVfRk9STUFUX1I4X1NJTlQ6Ci0gICAgICAgIHsKLSAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1B
VF9SOF9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfUjhJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjhfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4X1NJTlQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9T
SU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4X1NJTlQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhHOEI4QThfU0lO
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdl
bmVyYXRlTWlwPFI4Uz4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSZWFkQ29sb3I8UjhTLCBHTGludD4pOwotICAgICAgICAgICAgcmV0dXJuIGZv
cm1hdEluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfUjhfU05PUk06
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3Jt
YXRJbmZvKEFOR0xFX0ZPUk1BVF9SOF9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1I4X1NOT1JNLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfU05PUk0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SOF9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhf
U05PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBTkdMRV9GT1JNQVRfUjhHOEI4QThfU05PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSOFM+LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFI4UywgR0xm
bG9hdD4pOwotICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBBTkdMRV9GT1JNQVRfUjhfU05PUk1fTk9OUkVOREVSQUJMRToKLSAgICAgICAgewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVf
Rk9STUFUX1I4X1NOT1JNX05PTlJFTkRFUkFCTEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SOF9TTk9STSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4X1NOT1JNLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjhfU05PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4
X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjhTPiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSOFMsIEdM
ZmxvYXQ+KTsKLSAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOwotICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgQU5HTEVfRk9STUFUX1I4X1VJTlQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9SOF9VSU5U
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
UjhVSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1I4X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9VSU5ULAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfVUlOVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOF9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VJTlQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1p
cDxSOD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBSZWFkQ29sb3I8UjgsIEdMdWludD4pOwotICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfUjhfVU5PUk06Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFO
R0xFX0ZPUk1BVF9SOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX1I4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfVU5PUk0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9VTk9STSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1I4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4X1VOT1JNLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFU
X1I4RzhCOEE4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR2VuZXJhdGVNaXA8Ujg+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFI4LCBHTGZsb2F0Pik7Ci0gICAgICAg
ICAgICByZXR1cm4gZm9ybWF0SW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEFOR0xFX0ZP
Uk1BVF9SOF9VTk9STV9OT05SRU5ERVJBQkxFOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfUjhfVU5PUk1f
Tk9OUkVOREVSQUJMRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1I4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9VTk9STSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfVU5PUk0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhHOEI4
QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHZW5lcmF0ZU1pcDxSOD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjgsIEdMZmxvYXQ+KTsKLSAgICAgICAgICAgIHJl
dHVybiBmb3JtYXRJbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQU5HTEVfRk9STUFUX1I5
RzlCOUU1X1NIQVJFREVYUDoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFO
R0xFRm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX1I5RzlCOUU1X1NIQVJFREVYUCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JH
QjlfRTUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SOUc5QjlFNV9TSEFSRURFWFAsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOUc5QjlFNV9TSEFSRURF
WFAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I5RzlCOUU1X1NIQVJF
REVYUCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSOUc5QjlFNT4sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8
UjlHOUI5RTUsIEdMZmxvYXQ+KTsKLSAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgQU5HTEVfRk9STUFUX1gyNF9UWVBFTEVTU19HOF9VSU5UOgot
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0
SW5mbyhBTkdMRV9GT1JNQVRfWDI0X1RZUEVMRVNTX0c4X1VJTlQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9ERVBUSDI0X1NURU5DSUw4X09F
UywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1IyNEc4X1RZUEVMRVNTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfWDI0X1RZUEVMRVNTX0c4X1VJTlQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9YMjRfVFlQRUxF
U1NfRzhfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFOR0xFX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAg
ICAgICByZXR1cm4gZm9ybWF0SW5mbzsKLSAgICAgICAgfQotCi0gICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgLy8gY2xhbmctZm9ybWF0IG9uCi0KLSAgICBV
TlJFQUNIQUJMRSgpOwotICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBkZWZhdWx0SW5m
bzsKLSAgICByZXR1cm4gZGVmYXVsdEluZm87Ci19Ci0KLWNvbnN0IFRleHR1cmVGb3JtYXQgJkdl
dFRleHR1cmVGb3JtYXRJbmZvKEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRlcmVyMTFEZXZpY2VDYXBzICZy
ZW5kZXJlcjExRGV2aWNlQ2FwcykKKy8vIHN0YXRpYworY29uc3QgRm9ybWF0ICZGb3JtYXQ6Okdl
dChHTGVudW0gaW50ZXJuYWxGb3JtYXQsIGNvbnN0IFJlbmRlcmVyMTFEZXZpY2VDYXBzICZkZXZp
Y2VDYXBzKQogewogICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKICAgICBzd2l0Y2ggKGludGVybmFs
Rm9ybWF0KQogICAgIHsKLSAgICAgICAgY2FzZSBHTF9BTFBIQToKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKE9ubHlGTDEwUGx1cyhyZW5kZXJlcjExRGV2aWNlQ2FwcykpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZv
cm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9BOF9VTk9STSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwot
ICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZWxzZSBpZiAoT25seUZMOV8zKHJlbmRlcmVyMTFEZXZpY2VDYXBzKSkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0
dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9BTFBIQTE2
Rl9FWFQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0
IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxP
QVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIpOwotICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQUxQSEExNkZfRVhULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMTZHMTZCMTZBMTZf
RkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxP
QVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2RiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJu
IGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9BTFBIQTMyRl9FWFQ6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQo
aW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAg
ICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
Rm9ybWF0IGluZm8oR0xfQUxQSEEzMkZfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZM
T0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1Iz
MkczMkIzMkEzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMyRiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBHTF9BTFBIQThfRVhUOgogICAgICAgICB7Ci0gICAgICAgICAgICBp
ZiAoT25seUZMMTBQbHVzKHJlbmRlcmVyMTFEZXZpY2VDYXBzKSkKKyAgICAgICAgICAgIGlmIChP
bmx5RkwxMFBsdXMoZGV2aWNlQ2FwcykpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
c3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFOR0xFX0ZPUk1BVF9BOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAgICAgICAgIHJldHVy
biB0ZXh0dXJlRm9ybWF0OworICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5m
byhHTF9BTFBIQThfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbmdsZTo6Rm9ybWF0OjpJRDo6QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0E4X1VOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9BOF9VTk9STSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQThfVU5PUk0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0E4
X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JB
OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNl
IGlmIChPbmx5Rkw5XzMocmVuZGVyZXIxMURldmljZUNhcHMpKQorICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0
IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5P
Uk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAg
ICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQUxQSEE4X0VYVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6
OlI4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktO
T1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfUkdCQTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNh
cHMpOworICAgICAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGNhc2UgR0xfQkdSNTY1X0FOR0xFWDoKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKFN1cHBvcnRzRm9ybWF0KERYR0lfRk9STUFUX0I1RzZSNV9VTk9STSwgZGV2aWNlQ2Fw
cykpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBp
bmZvKEdMX0JHUjU2NV9BTkdMRVgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpCNUc2UjVfVU5PUk0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I1RzZSNV9VTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjVHNlI1X1VO
T1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9CNUc2UjVfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX0I1RzZSNV9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9CR1I1
NjVfQU5HTEVYLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmds
ZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhH
OEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9CR1I1X0ExX0FOR0xFWDoKICAgICAg
ICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1h
dChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX0I4RzhSOEE4X1VOT1JNLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAg
ICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZv
cm1hdCBpbmZvKEdMX0JHUjVfQTFfQU5HTEVYLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpCOEc4UjhBOF9VTk9STSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9COEc4UjhBOF9V
Tk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9C
OEc4UjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX0JHUkE4X0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNh
cHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBH
TF9CR1JBNF9BTkdMRVg6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0
dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9COEc4UjhB
OF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9CR1JBNF9BTkdMRVgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkI4RzhSOEE4
X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X0I4RzhSOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQkdSQThfRVhULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIEdMX0JHUkE4X0VYVDoKICAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5H
TEVfRk9STUFUX0I4RzhSOEE4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0
dXJlRm9ybWF0OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfQkdSQV9FWFQ6Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQo
aW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAg
ICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3Jt
YXQgaW5mbyhHTF9CR1JBOF9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkI4RzhSOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I4RzhSOEE4
X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfQjhHOFI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfQkdSQThfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7Cisg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0NPTVBS
RVNTRURfUjExX0VBQzoKICAgICAgICAgewotICAgICAgICAgICAgaWYgKE9ubHlGTDEwUGx1cyhy
ZW5kZXJlcjExRGV2aWNlQ2FwcykpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFO
R0xFX0ZPUk1BVF9SOF9VTk9STV9OT05SRU5ERVJBQkxFLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SMTFf
RUFDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6
OklEOjpSOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1I4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1JHQkE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fw
cyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdM
X0NPTVBSRVNTRURfUkcxMV9FQUM6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChPbmx5Rkwx
MFBsdXMocmVuZGVyZXIxMURldmljZUNhcHMpKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3Jt
YXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBTkdMRV9GT1JNQVRfUjhHOF9VTk9STV9OT05SRU5ERVJBQkxFLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQ09NUFJF
U1NFRF9SRzExX0VBQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmds
ZTo6Rm9ybWF0OjpJRDo6UjhHOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfVU5PUk0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9VTk9STSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfVU5PUk0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzI6CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGlmIChPbmx5RkwxMFBsdXMocmVuZGVyZXIxMURldmljZUNhcHMpKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1
cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fTk9O
UkVOREVSQUJMRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVieXRlLCAweDAwLCAweDAw
LCAweDAwLCAweEZGPik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9y
bWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VOT1JNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JN
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhC
OEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfUkdCQTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMdWJ5dGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4
RkY+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOwor
ICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9DT01Q
UkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyOgogICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoT25seUZMMTBQbHVzKHJlbmRlcmVyMTFEZXZpY2VDYXBzKSkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9y
bWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNX05PTlJFTkRF
UkFCTEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgw
MCwgMHhGRj4pOwotICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBp
bmZvKEdMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4
X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMdWJ5dGUsIDB4MDAs
IDB4MDAsIDB4MDAsIDB4RkY+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDOgogICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoT25seUZMMTBQbHVzKHJlbmRlcmVyMTFEZXZpY2VDYXBzKSkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9y
bWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNX05PTlJFTkRF
UkFCTEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBG
b3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4QjhBOF9VTk9STSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhB
OF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUjoKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfUkdCQV9BU1RD
XzEweDEwX0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6
Rm9ybWF0OjpJRDo6Tk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMp
OworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9D
T01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1X0tIUjoKKyAgICAgICAgeworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hSLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpO
T05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VO
S05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9O
T05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdC
QV9BU1RDXzEweDZfS0hSOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9y
bWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZv
OworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OF9L
SFI6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9D
T01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMF9LSFI6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JH
QkFfQVNUQ18xMngxMF9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZp
Y2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNh
c2UgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTJfS0hSOgorICAgICAgICB7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4
MTJfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3Jt
YXQ6OklEOjpOT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7Cisg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBS
RVNTRURfUkdCQV9BU1RDXzR4NF9LSFI6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktO
T1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VO
S05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1
cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RD
XzV4NF9LSFI6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5m
byhHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDRfS0hSLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFI6CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VE
X1JHQkFfQVNUQ181eDVfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2
aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NV9LSFI6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDVf
S0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6
OklEOjpOT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNT
RURfUkdCQV9BU1RDXzZ4Nl9LSFI6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hSLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4g
aW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4
NV9LSFI6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhH
TF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDVfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4Nl9LSFI6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JH
QkFfQVNUQ184eDZfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFu
Z2xlOjpGb3JtYXQ6OklEOjpOT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNl
Q2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OF9LSFI6CisgICAgICAgIHsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hS
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklE
OjpOT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDFfRVhUOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
VGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfQkMx
X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RY
VDFfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3Jt
YXQ6OklEOjpCQzFfUkdCQV9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzFfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMxX1VOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzFfVU5PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRToKICAgICAg
ICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1h
dChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX0JDMl9VTk9STSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAg
ICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQg
aW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpCQzJfUkdCQV9VTk9STV9C
TE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9C
QzJfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfQkMyX1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9CQzJfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfUkdCQTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfQ09NUFJF
U1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9S
TUFUX0JDM19VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQ1X0FOR0xFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFu
Z2xlOjpGb3JtYXQ6OklEOjpCQzNfUkdCQV9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzNfVU5PUk0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMzX1VOT1JNLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzNfVU5PUk0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVy
ZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX0JDMV9VTk9STSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAg
ICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBG
b3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpCQzFfUkdCX1VOT1JN
X0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X0JDMV9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9CQzFfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX0JDMV9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9SR0JBOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
cHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOwor
ICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9DT01Q
UkVTU0VEX1NJR05FRF9SMTFfRUFDOgogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoT25seUZM
MTBQbHVzKHJlbmRlcmVyMTFEZXZpY2VDYXBzKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9y
bWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQU5HTEVfRk9STUFUX1I4X1NOT1JNX05PTlJFTkRFUkFCTEUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVT
U0VEX1NJR05FRF9SMTFfRUFDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFuZ2xlOjpGb3JtYXQ6OklEOjpSOF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfU05PUk0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQThfU05PUk0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUM6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIGlmIChPbmx5RkwxMFBsdXMocmVuZGVyZXIxMURldmljZUNhcHMpKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0
IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhHOF9TTk9STV9O
T05SRU5ERVJBQkxFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVG
b3JtYXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhfU05P
Uk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhH
OF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SOEc4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SOEc4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1JHQkE4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fw
cyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdM
X0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBfS0hSOgorICAgICAgICB7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ18xMHgxMF9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZp
Y2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNh
c2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1X0tIUjoKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0FTVENfMTB4NV9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAg
IGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUjoKKyAgICAgICAg
eworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfMTB4Nl9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUjoKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0FTVENfMTB4OF9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMF9LSFI6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tI
UjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTJfS0hSLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0
X0tIUjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdM
X0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4
NF9LSFI6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhH
TF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181
eDVfS0hSOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8o
R0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDVfS0hSLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
Nng1X0tIUjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZv
KEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1X0tIUiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RD
XzZ4Nl9LSFI6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5m
byhHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZv
OworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNU
Q184eDVfS0hSOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGlu
Zm8oR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5m
bzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FT
VENfOHg2X0tIUjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBp
bmZvKEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2X0tIUiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9B
U1RDXzh4OF9LSFI6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQg
aW5mbyhHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktO
T1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
RVRDMl9FQUM6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChPbmx5RkwxMFBsdXMocmVuZGVy
ZXIxMURldmljZUNhcHMpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9G
T1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQl9OT05SRU5ERVJBQkxFLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfRVRDMl9FQUMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VOT1JNX1NSR0IsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JH
QiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4
QjhBOF9VTk9STV9TUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1NSR0I4X0FMUEhBOCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzI6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIGlmIChPbmx5RkwxMFBsdXMocmVuZGVyZXIxMURldmljZUNhcHMpKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0
IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5P
Uk1fU1JHQl9OT05SRU5ERVJBQkxFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMdWJ5dGUs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4RkY+KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdGV4dHVy
ZUZvcm1hdDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VO
T1JNX1NSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjhHOEI4QThfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9V
Tk9STV9TUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1NSR0I4
X0FMUEhBOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXpl
NENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRj4sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhf
UFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyOgogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoT25s
eUZMMTBQbHVzKHJlbmRlcmVyMTFEZXZpY2VDYXBzKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFs
Rm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0JfTk9OUkVOREVSQUJMRSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIpOwotICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBp
bmZvKEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4QjhB
OF9VTk9STV9TUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4
QThfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9T
UkdCOF9BTFBIQTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfREVQVEgy
NF9TVEVOQ0lMODoKICAgICAgICAgewotICAgICAgICAgICAgaWYgKE9ubHlGTDEwUGx1cyhyZW5k
ZXJlcjExRGV2aWNlQ2FwcykpCisgICAgICAgICAgICBpZiAoT25seUZMMTBQbHVzKGRldmljZUNh
cHMpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJl
Rm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfRDI0X1VO
T1JNX1M4X1VJTlRfRkwxMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0
dXJlRm9ybWF0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoT25seUZMOV8z
KHJlbmRlcmVyMTFEZXZpY2VDYXBzKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBz
dGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QU5HTEVfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5UX0ZMOV8zLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAgICAgICAgc3RhdGljIGNv
bnN0IEZvcm1hdCBpbmZvKEdMX0RFUFRIMjRfU1RFTkNJTDgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpEMjRfVU5PUk1fUzhfVUlO
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjI0RzhfVFlQRUxFU1MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1IyNF9VTk9STV9YOF9UWVBFTEVTUywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1Iy
NF9VTk9STV9YOF9UWVBFTEVTUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfUkdCQTMyRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2
aWNlQ2Fwcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0RFUFRIMjRfU1RFTkNJ
TDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3Jt
YXQ6OklEOjpEMjRfVU5PUk1fUzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0QyNF9V
Tk9STV9TOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9SR0JBMzJGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZp
Y2VDYXBzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgICAgICBjYXNlIEdMX0RFUFRIMzJGX1NURU5DSUw4OgogICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAoT25seUZMMTBQbHVzKHJlbmRlcmVyMTFEZXZpY2VDYXBzKSkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0
dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX0QzMl9GTE9BVF9TOFgyNF9V
SU5UX0ZMMTAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1h
dDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKE9ubHlGTDlfMyhyZW5kZXJl
cjExRGV2aWNlQ2FwcykpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNv
bnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZP
Uk1BVF9OT05FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3Jt
YXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgRm9ybWF0IGluZm8oR0xfREVQVEgzMkZfU1RFTkNJTDgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkQzMl9GTE9BVF9TOFgyNF9VSU5U
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkc4
WDI0X1RZUEVMRVNTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1IzMl9GTE9BVF9YOFgyNF9UWVBFTEVTUywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0QzMl9GTE9BVF9TOFgyNF9VSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMl9GTE9BVF9YOFgy
NF9UWVBFTEVTUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JB
MzJGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVO
VDE2OgogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoT25seUZMMTBQbHVzKHJlbmRlcmVyMTFE
ZXZpY2VDYXBzKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
VGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFU
X0QxNl9VTk9STV9GTDEwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1
cmVGb3JtYXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChPbmx5Rkw5XzMo
cmVuZGVyZXIxMURldmljZUNhcHMpKQorICAgICAgICAgICAgaWYgKE9ubHlGTDEwUGx1cyhkZXZp
Y2VDYXBzKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4
dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX0Qx
Nl9VTk9STV9GTDlfMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0dXJl
Rm9ybWF0OworICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9ERVBU
SF9DT01QT05FTlQxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5nbGU6OkZvcm1hdDo6SUQ6OkQxNl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X1RZUEVMRVNTLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfVU5PUk0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0QxNl9V
Tk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjE2X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9SR0JBMTZfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VD
YXBzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfREVQVEhfQ09NUE9ORU5UMTYs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6
OklEOjpEMTZfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX0QxNl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfRDE2X1VOT1JNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZfRVhULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBjYXNlIEdM
X0RFUFRIX0NPTVBPTkVOVDI0OgogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoT25seUZMMTBQ
bHVzKHJlbmRlcmVyMTFEZXZpY2VDYXBzKSkKKyAgICAgICAgICAgIGlmIChPbmx5RkwxMFBsdXMo
ZGV2aWNlQ2FwcykpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0
IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1B
VF9EMjRfVU5PUk1fUzhfVUlOVF9GTDEwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHRleHR1cmVGb3JtYXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChP
bmx5Rkw5XzMocmVuZGVyZXIxMURldmljZUNhcHMpKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxG
b3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBTkdMRV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlRfRkw5XzMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgICAgICBz
dGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfREVQVEhfQ09NUE9ORU5UMjQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpEMjRfVU5P
Uk1fUzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjI0RzhfVFlQRUxFU1MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1IyNF9VTk9STV9YOF9UWVBFTEVTUywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfRDI0X1VOT1JN
X1M4X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1IyNF9VTk9STV9YOF9UWVBFTEVTUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfUkdCQTMyRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0RFUFRI
X0NPTVBPTkVOVDI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
bmdsZTo6Rm9ybWF0OjpJRDo6RDI0X1VOT1JNX1M4X1VJTlQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5ULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9EMjRfVU5PUk1fUzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfUkdCQTMyRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQzMkY6CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGlmIChPbmx5RkwxMFBsdXMocmVuZGVyZXIxMURldmljZUNh
cHMpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJl
Rm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfRDMyX0ZM
T0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChPbmx5Rkw5XzMocmVuZGVyZXIxMURl
dmljZUNhcHMpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBU
ZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRf
Tk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxwdHIpOwotICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0Owot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZv
cm1hdCBpbmZvKEdMX0RFUFRIX0NPTVBPTkVOVDMyRiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6RDMyX0ZMT0FULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMl9UWVBFTEVTUywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfRkxPQVQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMzJfRkxP
QVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMy
X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEzMkYs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJl
dHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMzJf
T0VTOgogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoT25seUZMMTBQbHVzKHJlbmRlcmVyMTFE
ZXZpY2VDYXBzKSkKKyAgICAgICAgICAgIGlmIChPbmx5RkwxMFBsdXMoZGV2aWNlQ2FwcykpCiAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQg
dGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9EMjRfVU5PUk1fUzhf
VUlOVF9GTDEwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3Jt
YXQ7CisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0RFUFRIX0NP
TVBPTkVOVDMyX09FUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5nbGU6OkZvcm1hdDo6SUQ6OkQyNF9VTk9STV9TOF9VSU5ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMjRHOF9UWVBFTEVTUywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjI0X1VOT1JN
X1g4X1RZUEVMRVNTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjI0X1VOT1JNX1g4X1RZUEVMRVNTLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJGLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRm9ybWF0IGluZm8oR0xfREVQVEhfQ09NUE9ORU5UMzJfT0VTLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6RDI0X1VOT1JN
X1M4X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX0QyNF9VTk9STV9TOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMyRiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBHTF9FVEMxX1JHQjhfTE9TU1lfREVDT0RFX0FOR0xFOgogICAgICAgICB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9y
bWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBTkdMRV9GT1JNQVRfQkMxX1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0
dXJlRm9ybWF0OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0VUQzFf
UkdCOF9MT1NTWV9ERUNPREVfQU5HTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkJDMV9SR0JfVU5PUk1fQkxPQ0ssCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMxX1VOT1JNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDMV9VTk9STSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMxX1VO
T1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4g
aW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0VUQzFfUkdCOF9PRVM6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQo
aW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9OT05SRU5ERVJBQkxFLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0
aWFsaXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRj4pOwot
ICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7Ci0gICAgICAgIH0KLSAgICAgICAgY2Fz
ZSBHTF9MVU1JTkFOQ0U6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0
dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhB
OF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMdWJ5dGUsIDB4MDAsIDB4MDAsIDB4MDAs
IDB4RkY+KTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0VUQzFfUkdCOF9PRVMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VOT1JN
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhC
OEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMdWJ5dGUsIDB4MDAsIDB4MDAs
IDB4MDAsIDB4RkY+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmlj
ZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBHTF9MVU1JTkFOQ0UxNkZfRVhUOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRf
UjE2RzE2QjE2QTE2X0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0xoYWxmLCAweDAwMDAs
IDB4MDAwMCwgMHgwMDAwLCBnbDo6RmxvYXQxNk9uZT4pOwotICAgICAgICAgICAgcmV0dXJuIHRl
eHR1cmVGb3JtYXQ7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfTFVN
SU5BTkNFMTZGX0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmds
ZTo6Rm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxP
QVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2
RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1JHQkExNkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMaGFsZiwgMHgwMDAwLCAweDAwMDAsIDB4
MDAwMCwgZ2w6OkZsb2F0MTZPbmU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBHTF9MVU1JTkFOQ0UzMkZfRVhUOgogICAgICAgICB7Ci0gICAgICAgICAgICBz
dGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdM
RV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0xmbG9h
dCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgZ2w6OkZsb2F0MzJPbmU+KTsK
LSAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IEZvcm1hdCBpbmZvKEdMX0xVTUlOQU5DRTMyRl9FWFQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIzMkczMkIzMkEzMl9GTE9BVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJC
MzJBMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJGLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTGZs
b2F0LCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCBnbDo6RmxvYXQzMk9uZT4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0xVTUlOQU5D
RThfQUxQSEE4X0VYVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1
cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4
X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0xVTUlOQU5DRThfQUxQSEE4X0VYVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6
UjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U4X0VYVDoKICAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5h
bEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8
R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRj4pOwotICAgICAgICAgICAgcmV0dXJuIHRl
eHR1cmVGb3JtYXQ7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1
cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7
Ci0gICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBGb3JtYXQgaW5mbyhHTF9MVU1JTkFOQ0U4X0VYVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5P
Uk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhH
OEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9SR0JBOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwg
MHhGRj4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7
CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0xV
TUlOQU5DRV9BTFBIQTE2Rl9FWFQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9S
MTZHMTZCMTZBMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3Jt
YXQ7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfTFVNSU5BTkNFX0FM
UEhBMTZGX0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6
Rm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2
QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1JHQkExNkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VD
YXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
R0xfTFVNSU5BTkNFX0FMUEhBMzJGX0VYVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9S
TUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICByZXR1cm4gdGV4dHVy
ZUZvcm1hdDsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9MVU1JTkFO
Q0VfQUxQSEEzMkZfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFu
Z2xlOjpGb3JtYXQ6OklEOjpSMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9G
TE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
MzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfUkdCQTMyRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
dmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBHTF9OT05FOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVy
ZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfTk9ORSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
cik7Ci0gICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBGb3JtYXQgaW5mbyhHTF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIEdMX1IxMUZfRzExRl9CMTBGOgogICAgICAgICB7Ci0gICAgICAgICAgICBz
dGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdM
RV9GT1JNQVRfUjExRzExQjEwX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0
dXJlRm9ybWF0OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1IxMUZf
RzExRl9CMTBGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpG
b3JtYXQ6OklEOjpSMTFHMTFCMTBfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjExRzExQjEwX0ZMT0FULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxMUcxMUIxMF9GTE9BVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTFHMTFCMTBfRkxPQVQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTFH
MTFCMTBfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdC
QTE2Rl9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAg
ICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUjE2RjoKICAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZv
cm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IxNl9GTE9BVCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAg
ICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3Jt
YXQgaW5mbyhHTF9SMTZGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFu
Z2xlOjpGb3JtYXQ6OklEOjpSMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfRkxPQVQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfRkxPQVQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2Rl9FWFQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgR0xfUjE2SToKICAgICAgICAgewotICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVf
Rk9STUFUX1IxNl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0
OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1IxNkksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNl9TSU5U
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9T
SU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1Ix
Nl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IxNl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjE2X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
UkdCQTE2SSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAg
ICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SMTZVSToKICAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZv
cm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IxNl9VSU5ULAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAg
ICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1h
dCBpbmZvKEdMX1IxNlVJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFu
Z2xlOjpGb3JtYXQ6OklEOjpSMTZfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9VSU5ULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNkksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgR0xfUjE2X0VYVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IEZvcm1hdCBpbmZvKEdMX1IxNl9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNl9VTk9STSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfVU5PUk0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X1VOT1JNLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9VTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9VTk9STSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZfRVhULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4g
aW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1IxNl9TTk9STV9FWFQ6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SMTZfU05PUk1fRVhU
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklE
OjpSMTZfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjE2X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1IxNl9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjE2X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1JHQkExNl9TTk9STV9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgR0xfUjMyRjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRl
eHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IzMl9G
TE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0cik7Ci0gICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SMzJGLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMzJfRkxPQVQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMl9GTE9BVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfRkxP
QVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
MzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMy
RiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAg
cmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SMzJJOgogICAgICAgICB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGlu
dGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjMyX1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAgICAgcmV0
dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8o
R0xfUjMySSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9y
bWF0OjpJRDo6UjMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9SR0JBMzJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2
aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBj
YXNlIEdMX1IzMlVJOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVy
ZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjMyX1VJTlQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxwdHIpOwotICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUjMyVUksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIzMl9VSU5ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMl9VSU5ULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMl9VSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMl9VSU5ULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX1VJTlQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMySSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SODoKICAgICAgICAgewotICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1h
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QU5HTEVfRk9STUFUX1I4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0dXJl
Rm9ybWF0OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1I4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOF9V
Tk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
OF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1I4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1JHQkE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1I4SToKICAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZv
cm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4X1NJTlQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAg
ICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0
IGluZm8oR0xfUjhJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xl
OjpGb3JtYXQ6OklEOjpSOF9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1I4X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjhfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOF9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9SR0JBOEksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZp
Y2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgR0xfUjhVSToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVG
b3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4X1VJTlQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIpOwotICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUjhVSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhfVUlOVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9VSU5ULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4X1VJTlQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfVUlOVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4X1VJTlQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQThJLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIEdMX1I4X1NOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBz
dGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdM
RV9GT1JNQVRfUjhfU05PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3Jt
YXQ7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUjhfU05PUk0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4
X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1I4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1I4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SOF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9SR0JBOF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMp
OworICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9S
RzE2RjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQg
dGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IxNkcxNl9GTE9BVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
cik7Ci0gICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SRzE2RiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2RzE2X0ZMT0FULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNl9GTE9BVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfRkxPQVQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2
X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjE2RzE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X1JHQkExNkZfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7Cisg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHMTZJ
OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0
dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjE2RzE2X1NJTlQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwot
ICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgRm9ybWF0IGluZm8oR0xfUkcxNkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNl9TSU5ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNl9TSU5ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNl9TSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNl9TSU5ULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2
X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2SSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0
dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SRzE2VUk6CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50
ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMTZHMTZfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICBy
ZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5m
byhHTF9SRzE2VUksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6
OkZvcm1hdDo6SUQ6OlIxNkcxNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1IxNkcxNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNl9VSU5ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNl9VSU5ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1VJTlQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2SSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SRzE2X0VYVDoKKyAgICAgICAgeworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHMTZfRVhULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMTZHMTZfVU5PUk0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1VO
T1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1Ix
NkcxNl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SMTZHMTZfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SMTZHMTZfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfUkdCQTE2X0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmlj
ZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBHTF9SRzE2X1NOT1JNX0VYVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IEZvcm1hdCBpbmZvKEdMX1JHMTZfU05PUk1fRVhULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMTZHMTZfU05PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1NOT1JNLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNl9TTk9S
TSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktO
T1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VO
S05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjE2RzE2X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JH
QkExNl9TTk9STV9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsK
KyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkcz
MkY6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRl
eHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMzJHMzJfRkxPQVQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIp
OwotICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRm9ybWF0IGluZm8oR0xfUkczMkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIzMkczMl9GTE9BVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMl9G
TE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IzMkczMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9S
R0JBMzJGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHMzJJOgogICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9y
bWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjMyRzMyX1NJTlQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAg
ICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9y
bWF0IGluZm8oR0xfUkczMkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5nbGU6OkZvcm1hdDo6SUQ6OlIzMkczMl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMl9TSU5ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMl9TSU5ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMl9TSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX1NJTlQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMySSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SRzMyVUk6CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxG
b3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFOR0xFX0ZPUk1BVF9SMzJHMzJfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICByZXR1cm4g
dGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9S
RzMyVUksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1h
dDo6SUQ6OlIzMkczMl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1IzMkczMl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1IzMkczMl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMl9VSU5ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX1VJTlQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMySSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBHTF9SRzg6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1B
VF9SOEc4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0Owor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHOCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOF9VTk9STSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1VO
T1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4
RzhfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjhHOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1I4RzhfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfUkdCQTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkc4SToK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVy
ZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhfU0lOVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAg
ICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBG
b3JtYXQgaW5mbyhHTF9SRzhJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9TSU5ULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfU0lOVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1NJTlQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1NJTlQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQThJLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIEdMX1JHOFVJOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9G
T1JNQVRfUjhHOF9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0
OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHOFVJLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4X1VJ
TlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhH
OF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1I4RzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SOEc4X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SOEc4X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfUkdCQThJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7Cisg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHOF9T
Tk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQg
dGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhfU05PUk0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIp
OwotICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRm9ybWF0IGluZm8oR0xfUkc4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4X1NOT1JNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfU05PUk0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9TTk9STSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9T
Tk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOF9TTk9S
TSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAg
cmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SR0I6CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50
ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnRE
YXRhPEdMdWJ5dGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkY+KTsKLSAgICAgICAgICAgIHJldHVy
biB0ZXh0dXJlRm9ybWF0OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdM
X1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0
OjpJRDo6UjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9S
TSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8
R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRj4sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHQjEwX0EyOgogICAgICAgICB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
TkdMRV9GT1JNQVRfUjEwRzEwQjEwQTJfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAgICAgcmV0dXJu
IHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xf
UkdCMTBfQTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZv
cm1hdDo6SUQ6OlIxMEcxMEIxMEEyX1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VOT1JNLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VOT1JNLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxMEcxMEIxMEEy
X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjEwRzEwQjEwQTJfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfUkdCQTE2X0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMp
OworICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9S
R0IxMF9BMlVJOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZv
cm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjEwRzEwQjEwQTJf
VUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0cik7Ci0gICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0IxMF9BMlVJLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMTBHMTBCMTBBMl9V
SU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1Ix
MEcxMEIxMEEyX1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjEwRzEwQjEwQTJfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VSU5ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVUlOVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZJLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHQjE2RjoKICAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5H
TEVfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMaGFs
ZiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgZ2w6OkZsb2F0MTZPbmU+KTsKLSAgICAgICAgICAg
IHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBp
bmZvKEdMX1JHQjE2RiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmds
ZTo6Rm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxP
QVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2
RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1JHQkExNkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMaGFsZiwgMHgwMDAwLCAweDAwMDAsIDB4
MDAwMCwgZ2w6OkZsb2F0MTZPbmU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBHTF9SR0IxNkk6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9S
MTZHMTZCMTZBMTZfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMc2hvcnQsIDB4MDAwMCwg
MHgwMDAwLCAweDAwMDAsIDB4MDAwMT4pOwotICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3Jt
YXQ7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUkdCMTZJLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMTZH
MTZCMTZBMTZfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkEx
Nl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNkks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25l
bnREYXRhPEdMc2hvcnQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMT4sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHQjE2VUk6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQo
aW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21w
b25lbnREYXRhPEdMdXNob3J0LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDE+KTsKLSAg
ICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IEZvcm1hdCBpbmZvKEdMX1JHQjE2VUksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNkIxNkExNl9VSU5ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5ULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIx
NkExNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1IxNkcxNkIxNkExNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2VUksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMdXNob3J0LCAweDAwMDAsIDB4
MDAwMCwgMHgwMDAwLCAweDAwMDE+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBHTF9SR0IxNl9FWFQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBGb3JtYXQgaW5mbyhHTF9SR0IxNl9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNkIxNkExNl9VTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZf
VU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjE2RzE2QjE2QTE2X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VTk9STSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZfRVhULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVieXRl
LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweEZGRkY+LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0IxNl9TTk9STV9FWFQ6CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0IxNl9TTk9STV9FWFQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIx
NkcxNkIxNkExNl9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NOT1JNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU05P
Uk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2X1NOT1JN
X0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENv
bXBvbmVudERhdGE8R0x1c2hvcnQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4N0ZGRj4sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHQjMyRjoKICAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZv
cm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6
ZTRDb21wb25lbnREYXRhPEdMZmxvYXQsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAw
MDAsIGdsOjpGbG9hdDMyT25lPik7Ci0gICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0IzMkYsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIzMkczMkIz
MkEzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEz
Ml9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJG
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9u
ZW50RGF0YTxHTGZsb2F0LCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCBnbDo6
RmxvYXQzMk9uZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNl
Q2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNl
IEdMX1JHQjMySToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVG
b3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IzMkczMkIzMkEz
Ml9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0xpbnQsIDB4MDAwMDAwMDAsIDB4MDAwMDAw
MDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDE+KTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0dXJl
Rm9ybWF0OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHQjMySSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6
UjMyRzMyQjMyQTMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1NJTlQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1NJTlQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJC
MzJBMzJfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JB
MzJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29t
cG9uZW50RGF0YTxHTGludCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgw
MDAwMDAwMT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fw
cyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdM
X1JHQjMyVUk6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9y
bWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMzJHMzJCMzJBMzJf
VUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMdWludCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAw
MCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMT4pOwotICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVG
b3JtYXQ7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUkdCMzJVSSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6
UjMyRzMyQjMyQTMyX1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJC
MzJBMzJfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JB
MzJVSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENv
bXBvbmVudERhdGE8R0x1aW50LCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAw
eDAwMDAwMDAxPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VD
YXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
R0xfUkdCNTY1OgogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoU3VwcG9ydHNGb3JtYXQ8RFhH
SV9GT1JNQVRfQjVHNlI1X1VOT1JNLGZhbHNlPihyZW5kZXJlcjExRGV2aWNlQ2FwcykpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4
dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVieXRlLCAweDAwLCAweDAwLCAweDAwLCAweEZG
Pik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBlbHNlIGlmIChTdXBwb3J0c0Zvcm1hdDxEWEdJX0ZPUk1BVF9CNUc2UjVf
VU5PUk0sdHJ1ZT4ocmVuZGVyZXIxMURldmljZUNhcHMpKQorICAgICAgICAgICAgaWYgKFN1cHBv
cnRzRm9ybWF0KERYR0lfRk9STUFUX0I1RzZSNV9VTk9STSwgZGV2aWNlQ2FwcykpCiAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVy
ZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9CNUc2UjVfVU5PUk0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
cHRyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUkdCNTY1LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6QjVHNlI1X1VOT1JN
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9C
NUc2UjVfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX0I1RzZSNV9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNUc2UjVfVU5PUk0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
Rm9ybWF0IGluZm8oR0xfUkdCNTY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4
QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMdWJ5dGUs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4RkY+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHQjVfQTE6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIGlmIChTdXBwb3J0c0Zvcm1hdDxEWEdJX0ZPUk1BVF9CNUc1UjVBMV9V
Tk9STSxmYWxzZT4ocmVuZGVyZXIxMURldmljZUNhcHMpKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJu
YWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGVsc2UgaWYgKFN1cHBvcnRzRm9ybWF0PERYR0lfRk9STUFUX0I1RzVSNUExX1VOT1JNLHRy
dWU+KHJlbmRlcmVyMTFEZXZpY2VDYXBzKSkKKyAgICAgICAgICAgIGlmIChTdXBwb3J0c0Zvcm1h
dChEWEdJX0ZPUk1BVF9CNUc1UjVBMV9VTk9STSwgZGV2aWNlQ2FwcykpCiAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1h
dChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9CNUc1UjVBMV9VTk9STSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIp
OwotICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0I1X0ExLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6QjVHNVI1QTFfVU5PUk0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I1
RzVSNUExX1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9CNUc1UjVBMV9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjVHNVI1QTFfVU5PUk0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I1RzVSNUExX1VOT1JN
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHQjVfQTEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4QjhBOF9VTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThf
VU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JH
Qjg6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRl
eHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlh
bGl6ZTRDb21wb25lbnREYXRhPEdMdWJ5dGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkY+KTsKLSAg
ICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IEZvcm1hdCBpbmZvKEdMX1JHQjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4
X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfUkdCQTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6
ZTRDb21wb25lbnREYXRhPEdMdWJ5dGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkY+LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAg
cmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SR0I4SToKICAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChp
bnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1NJTlQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50
RGF0YTxHTGJ5dGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDE+KTsKLSAgICAgICAgICAgIHJldHVy
biB0ZXh0dXJlRm9ybWF0OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdM
X1JHQjhJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3Jt
YXQ6OklEOjpSOEc4QjhBOF9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfU0lOVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5ULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfU0lOVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOEksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdM
Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMT4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIEdMX1JHQjhVSToKICAgICAgICAgewotICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVf
Rk9STUFUX1I4RzhCOEE4X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVieXRlLCAweDAw
LCAweDAwLCAweDAwLCAweDAxPik7Ci0gICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0I4VUksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4
X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjhHOEI4QThfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SOEc4QjhBOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4VUksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMdWJ5dGUsIDB4MDAsIDB4
MDAsIDB4MDAsIDB4MDE+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
dmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBHTF9SR0I4X1NOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
VGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhH
OEI4QThfU05PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTGJ5dGUsIDB4MDAsIDB4MDAsIDB4
MDAsIDB4N0Y+KTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHQjhfU05PUk0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1NOT1JN
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhC
OEE4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1I4RzhCOEE4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9SR0JBOF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0xieXRlLCAweDAwLCAweDAwLCAw
eDAwLCAweDdGPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VD
YXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
R0xfUkdCOV9FNToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVG
b3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I5RzlCOUU1X1NI
QVJFREVYUCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0I5X0U1LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOUc5QjlFNV9TSEFS
RURFWFAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjlHOUI5RTVfU0hBUkVERVhQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1I5RzlCOUU1X1NIQVJFREVYUCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjlHOUI5RTVfU0hBUkVERVhQLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNkZfRVhULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHQkE6CiAgICAgICAgIHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFO
R0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICByZXR1cm4gdGV4
dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0JB
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklE
OjpSOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHQkExNkY6CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3Jt
YXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAgICAgcmV0
dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8o
R0xfUkdCQTE2RiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6
Rm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2
QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1JHQkExNkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VD
YXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
R0xfUkdCQTE2SToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVG
b3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IxNkcxNkIxNkEx
Nl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHQkExNkksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNkIxNkExNl9T
SU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1Ix
NkcxNkIxNkExNl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5ULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2SSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SR0JBMTZVSToKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZv
cm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgIHJl
dHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZv
KEdMX1JHQkExNlVJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xl
OjpGb3JtYXQ6OklEOjpSMTZHMTZCMTZBMTZfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZC
MTZBMTZfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1IxNkcxNkIxNkExNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX1JHQkExNlVJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fw
cyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdM
X1JHQkExNl9FWFQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQg
aW5mbyhHTF9SR0JBMTZfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFuZ2xlOjpGb3JtYXQ6OklEOjpSMTZHMTZCMTZBMTZfVU5PUk0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkEx
Nl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SMTZHMTZCMTZBMTZfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2X0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBHTF9SR0JBMTZfU05PUk1fRVhUOgorICAgICAgICB7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUkdCQTE2X1NOT1JNX0VYVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2
X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IxNkcxNkIxNkExNl9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZfU05PUk1fRVhULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4g
aW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHQkEzMkY6CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJu
YWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFOR0xFX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAg
ICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0
IGluZm8oR0xfUkdCQTMyRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
bmdsZTo6Rm9ybWF0OjpJRDo6UjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJf
RkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX1JHQkEzMkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgR0xfUkdCQTMySToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRl
eHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IzMkcz
MkIzMkEzMl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0Owor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHQkEzMkksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIzMkczMkIz
MkEzMl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1IzMkczMkIzMkEzMl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5ULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1NJ
TlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMySSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJu
IGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SR0JBMzJVSToKICAgICAgICAgewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRl
cm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQU5HTEVfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5ULAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAg
ICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1h
dCBpbmZvKEdMX1JHQkEzMlVJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFuZ2xlOjpGb3JtYXQ6OklEOjpSMzJHMzJCMzJBMzJfVUlOVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJf
VUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
MzJHMzJCMzJBMzJfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1JHQkEzMlVJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2
aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBj
YXNlIEdMX1JHQkE0OgogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoU3VwcG9ydHNGb3JtYXQ8
RFhHSV9GT1JNQVRfQjRHNFI0QTRfVU5PUk0sZmFsc2U+KHJlbmRlcmVyMTFEZXZpY2VDYXBzKSkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1h
dCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VO
T1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChTdXBwb3J0c0Zvcm1hdDxEWEdJX0ZP
Uk1BVF9CNEc0UjRBNF9VTk9STSx0cnVlPihyZW5kZXJlcjExRGV2aWNlQ2FwcykpCisgICAgICAg
ICAgICBpZiAoU3VwcG9ydHNGb3JtYXQoRFhHSV9GT1JNQVRfQjRHNFI0QTRfVU5PUk0sIGRldmlj
ZUNhcHMpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0
dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfQjRH
NFI0QTRfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZv
cm1hdDsKKyAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUkdCQTQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6
OklEOjpCNEc0UjRBNF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfQjRHNFI0QTRfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I0RzRSNEE0X1VOT1JNLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNEc0UjRBNF9VTk9S
TSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfQjRHNFI0QTRfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX1JHQkE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZp
Y2VDYXBzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUkdCQTQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4
QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhH
OEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X1JHQkE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgICAgICBjYXNlIEdMX1JHQkE4OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRf
UjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUkdCQTgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4
X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgR0xfUkdCQThJOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMg
Y29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JN
QVRfUjhHOEI4QThfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1h
dDsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0JBOEksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhC
OEE4X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjhHOEI4QThfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4SSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBHTF9SR0JBOFVJOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMg
Y29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JN
QVRfUjhHOEI4QThfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1h
dDsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0JBOFVJLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4
QjhBOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1I4RzhCOEE4X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOFVJLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAg
fQogICAgICAgICBjYXNlIEdMX1JHQkE4X1NOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBz
dGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdM
RV9GT1JNQVRfUjhHOEI4QThfU05PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAgICAgcmV0dXJuIHRleHR1
cmVGb3JtYXQ7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUkdCQThf
U05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1h
dDo6SUQ6OlI4RzhCOEE4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1NOT1JNLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TTk9STSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOF9TTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9TUkdCODoKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZv
cm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0JfTk9OUkVOREVSQUJMRSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6
ZTRDb21wb25lbnREYXRhPEdMdWJ5dGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkY+KTsKLSAgICAg
ICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZv
cm1hdCBpbmZvKEdMX1NSR0I4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4QjhBOF9VTk9STV9TUkdCLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThf
VU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9TUkdCOF9BTFBIQTgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMdWJ5dGUsIDB4
MDAsIDB4MDAsIDB4MDAsIDB4RkY+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBHTF9TUkdCOF9BTFBIQTg6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZP
Uk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0
dXJlRm9ybWF0OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1NSR0I4
X0FMUEhBOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9y
bWF0OjpJRDo6UjhHOEI4QThfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0Is
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4
QThfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfU1JHQjhfQUxQSEE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIEdMX1NURU5DSUxfSU5ERVg4OgogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoT25s
eUZMMTBQbHVzKHJlbmRlcmVyMTFEZXZpY2VDYXBzKSkKKyAgICAgICAgICAgIGlmIChPbmx5Rkwx
MFBsdXMoZGV2aWNlQ2FwcykpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xF
X0ZPUk1BVF9YMjRfVFlQRUxFU1NfRzhfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAgICAgICAg
IHJldHVybiB0ZXh0dXJlRm9ybWF0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBp
ZiAoT25seUZMOV8zKHJlbmRlcmVyMTFEZXZpY2VDYXBzKSkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVy
bmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQU5HTEVfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5UX0ZMOV8zLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
cik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1NURU5DSUxfSU5ERVg4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6RDI0X1VO
T1JNX1M4X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1IyNEc4X1RZUEVMRVNTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMjRfVU5PUk1fWDhfVFlQRUxFU1MsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0QyNF9VTk9S
TV9TOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SMjRfVU5PUk1fWDhfVFlQRUxFU1MsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX1JHQkEzMkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9TVEVO
Q0lMX0lOREVYOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5n
bGU6OkZvcm1hdDo6SUQ6OkQyNF9VTk9STV9TOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfRDI0X1VOT1JNX1M4X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1JHQkEzMkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKQEAgLTE4NjIsOSArMTk0NSwxMCBAQCBjb25zdCBUZXh0dXJlRm9y
bWF0ICZHZXRUZXh0dXJlRm9ybWF0SW5mCiAgICAgfQogICAgIC8vIGNsYW5nLWZvcm1hdCBvbgog
Ci0gICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgZGVmYXVsdEluZm8oR0xfTk9ORSwgQU5H
TEVfRk9STUFUX05PTkUsIG51bGxwdHIpOworICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgc3RhdGlj
IGNvbnN0IEZvcm1hdCBkZWZhdWx0SW5mbzsKICAgICByZXR1cm4gZGVmYXVsdEluZm87Ci19ICAv
LyBHZXRUZXh0dXJlRm9ybWF0SW5mbworfQogCiB9ICAvLyBuYW1lc3BhY2UgZDNkMTEKIApJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS90ZXh0dXJlX2Zvcm1hdF90YWJsZV9hdXRvZ2VuLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zv
cm1hdF90YWJsZV9hdXRvZ2VuLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRf
dGFibGVfYXV0b2dlbi5oCShub25leGlzdGVudCkKQEAgLTEsNzkgKzAsMCBAQAotLy8gR0VORVJB
VEVEIEZJTEUgLSBETyBOT1QgRURJVC4KLS8vIEdlbmVyYXRlZCBieSBnZW5fdGV4dHVyZV9mb3Jt
YXRfdGFibGUucHkgdXNpbmcgZGF0YSBmcm9tIHRleHR1cmVfZm9ybWF0X2RhdGEuanNvbgotLy8K
LS8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgotLy8KLQotbmFtZXNwYWNlIHJ4Ci17Ci0KLW5hbWVzcGFjZSBkM2QxMQotewotCi1lbnVtIEFO
R0xFRm9ybWF0Ci17Ci0gICAgQU5HTEVfRk9STUFUX0E4X1VOT1JNLAotICAgIEFOR0xFX0ZPUk1B
VF9CNEc0UjRBNF9VTk9STSwKLSAgICBBTkdMRV9GT1JNQVRfQjVHNVI1QTFfVU5PUk0sCi0gICAg
QU5HTEVfRk9STUFUX0I1RzZSNV9VTk9STSwKLSAgICBBTkdMRV9GT1JNQVRfQjhHOFI4QThfVU5P
Uk0sCi0gICAgQU5HTEVfRk9STUFUX0JDMV9VTk9STSwKLSAgICBBTkdMRV9GT1JNQVRfQkMyX1VO
T1JNLAotICAgIEFOR0xFX0ZPUk1BVF9CQzNfVU5PUk0sCi0gICAgQU5HTEVfRk9STUFUX0QxNl9V
Tk9STV9GTDEwLAotICAgIEFOR0xFX0ZPUk1BVF9EMTZfVU5PUk1fRkw5XzMsCi0gICAgQU5HTEVf
Rk9STUFUX0QyNF9VTk9STV9TOF9VSU5UX0ZMMTAsCi0gICAgQU5HTEVfRk9STUFUX0QyNF9VTk9S
TV9TOF9VSU5UX0ZMOV8zLAotICAgIEFOR0xFX0ZPUk1BVF9EMzJfRkxPQVQsCi0gICAgQU5HTEVf
Rk9STUFUX0QzMl9GTE9BVF9TOFgyNF9VSU5UX0ZMMTAsCi0gICAgQU5HTEVfRk9STUFUX05PTkUs
Ci0gICAgQU5HTEVfRk9STUFUX1IxMEcxMEIxMEEyX1VJTlQsCi0gICAgQU5HTEVfRk9STUFUX1Ix
MEcxMEIxMEEyX1VOT1JNLAotICAgIEFOR0xFX0ZPUk1BVF9SMTFHMTFCMTBfRkxPQVQsCi0gICAg
QU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKLSAgICBBTkdMRV9GT1JNQVRfUjE2RzE2
QjE2QTE2X1NJTlQsCi0gICAgQU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5ULAotICAgIEFO
R0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk0sCi0gICAgQU5HTEVfRk9STUFUX1IxNkcxNl9G
TE9BVCwKLSAgICBBTkdMRV9GT1JNQVRfUjE2RzE2X1NJTlQsCi0gICAgQU5HTEVfRk9STUFUX1Ix
NkcxNl9VSU5ULAotICAgIEFOR0xFX0ZPUk1BVF9SMTZfRkxPQVQsCi0gICAgQU5HTEVfRk9STUFU
X1IxNl9TSU5ULAotICAgIEFOR0xFX0ZPUk1BVF9SMTZfVUlOVCwKLSAgICBBTkdMRV9GT1JNQVRf
UjMyRzMyQjMyQTMyX0ZMT0FULAotICAgIEFOR0xFX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCwK
LSAgICBBTkdMRV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQsCi0gICAgQU5HTEVfRk9STUFUX1Iz
MkczMl9GTE9BVCwKLSAgICBBTkdMRV9GT1JNQVRfUjMyRzMyX1NJTlQsCi0gICAgQU5HTEVfRk9S
TUFUX1IzMkczMl9VSU5ULAotICAgIEFOR0xFX0ZPUk1BVF9SMzJfRkxPQVQsCi0gICAgQU5HTEVf
Rk9STUFUX1IzMl9TSU5ULAotICAgIEFOR0xFX0ZPUk1BVF9SMzJfVUlOVCwKLSAgICBBTkdMRV9G
T1JNQVRfUjhHOEI4QThfU0lOVCwKLSAgICBBTkdMRV9GT1JNQVRfUjhHOEI4QThfU05PUk0sCi0g
ICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VJTlQsCi0gICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4
X1VOT1JNLAotICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9OT05SRU5ERVJBQkxFLAot
ICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAotICAgIEFOR0xFX0ZPUk1BVF9S
OEc4QjhBOF9VTk9STV9TUkdCX05PTlJFTkRFUkFCTEUsCi0gICAgQU5HTEVfRk9STUFUX1I4Rzhf
U0lOVCwKLSAgICBBTkdMRV9GT1JNQVRfUjhHOF9TTk9STSwKLSAgICBBTkdMRV9GT1JNQVRfUjhH
OF9TTk9STV9OT05SRU5ERVJBQkxFLAotICAgIEFOR0xFX0ZPUk1BVF9SOEc4X1VJTlQsCi0gICAg
QU5HTEVfRk9STUFUX1I4RzhfVU5PUk0sCi0gICAgQU5HTEVfRk9STUFUX1I4RzhfVU5PUk1fTk9O
UkVOREVSQUJMRSwKLSAgICBBTkdMRV9GT1JNQVRfUjhfU0lOVCwKLSAgICBBTkdMRV9GT1JNQVRf
UjhfU05PUk0sCi0gICAgQU5HTEVfRk9STUFUX1I4X1NOT1JNX05PTlJFTkRFUkFCTEUsCi0gICAg
QU5HTEVfRk9STUFUX1I4X1VJTlQsCi0gICAgQU5HTEVfRk9STUFUX1I4X1VOT1JNLAotICAgIEFO
R0xFX0ZPUk1BVF9SOF9VTk9STV9OT05SRU5ERVJBQkxFLAotICAgIEFOR0xFX0ZPUk1BVF9SOUc5
QjlFNV9TSEFSRURFWFAsCi0gICAgQU5HTEVfRk9STUFUX1gyNF9UWVBFTEVTU19HOF9VSU5UCi19
OwotCi19ICAvLyBuYW1lc3BhY2UgZDNkMTEKLQotfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3Rl
eHR1cmVfZm9ybWF0X3RhYmxlX3V0aWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90
YWJsZV91dGlscy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfdGFibGVfdXRpbHMu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc3IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gSGVscGVyIHJv
dXRpbmVzIGZvciB0aGUgRDNEMTEgdGV4dHVyZSBmb3JtYXQgdGFibGUuCisKKyNpZm5kZWYgTElC
QU5HTEVfUkVOREVSRVJfRDNEX0QzRDExX1RFWFRVUkVfRk9STUFUX1RBQkxFX1VUSUxTX0hfCisj
ZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9EM0QxMV9URVhUVVJFX0ZPUk1BVF9UQUJMRV9V
VElMU19IXworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlcmVy
MTEuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK25hbWVzcGFjZSBkM2QxMQoreworCit1c2luZyBG
b3JtYXRTdXBwb3J0RnVuY3Rpb24gPSBib29sICgqKShjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2Fw
cyAmKTsKKworaW5saW5lIGJvb2wgT25seUZMMTBQbHVzKGNvbnN0IFJlbmRlcmVyMTFEZXZpY2VD
YXBzICZkZXZpY2VDYXBzKQoreworICAgIHJldHVybiAoZGV2aWNlQ2Fwcy5mZWF0dXJlTGV2ZWwg
Pj0gRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMCk7Cit9CisKK2lubGluZSBib29sIE9ubHlGTDlfMyhj
b25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmZGV2aWNlQ2FwcykKK3sKKyAgICByZXR1cm4gKGRl
dmljZUNhcHMuZmVhdHVyZUxldmVsID09IEQzRF9GRUFUVVJFX0xFVkVMXzlfMyk7Cit9CisKK2lu
bGluZSBib29sIFN1cHBvcnRzRm9ybWF0KERYR0lfRk9STUFUIGZvcm1hdCwgY29uc3QgUmVuZGVy
ZXIxMURldmljZUNhcHMgJmRldmljZUNhcHMpCit7CisgICAgLy8gTXVzdCBzdXBwb3J0IHRleHR1
cmUsIFNSViBhbmQgUlRWIHN1cHBvcnQKKyAgICBVSU5UIG11c3RTdXBwb3J0ID0gRDNEMTFfRk9S
TUFUX1NVUFBPUlRfVEVYVFVSRTJEIHwgRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRUNVQkUg
fAorICAgICAgICAgICAgICAgICAgICAgICBEM0QxMV9GT1JNQVRfU1VQUE9SVF9TSEFERVJfU0FN
UExFIHwgRDNEMTFfRk9STUFUX1NVUFBPUlRfTUlQIHwKKyAgICAgICAgICAgICAgICAgICAgICAg
RDNEMTFfRk9STUFUX1NVUFBPUlRfUkVOREVSX1RBUkdFVDsKKworICAgIGlmIChkM2QxMV9nbDo6
R2V0TWF4aW11bUNsaWVudFZlcnNpb24oZGV2aWNlQ2Fwcy5mZWF0dXJlTGV2ZWwpID4gMikKKyAg
ICB7CisgICAgICAgIG11c3RTdXBwb3J0IHw9IEQzRDExX0ZPUk1BVF9TVVBQT1JUX1RFWFRVUkUz
RDsKKyAgICB9CisKKyAgICBib29sIGZ1bGxTdXBwb3J0ID0gZmFsc2U7CisgICAgaWYgKGZvcm1h
dCA9PSBEWEdJX0ZPUk1BVF9CNUc2UjVfVU5PUk0pCisgICAgeworICAgICAgICAvLyBBbGwgaGFy
ZHdhcmUgdGhhdCBzdXBwb3J0cyBEWEdJX0ZPUk1BVF9CNUc2UjVfVU5PUk0gc2hvdWxkIHN1cHBv
cnQgYXV0b2dlbiBtaXBtYXBzLCBidXQKKyAgICAgICAgLy8gY2hlY2sgYW55d2F5LgorICAgICAg
ICBtdXN0U3VwcG9ydCB8PSBEM0QxMV9GT1JNQVRfU1VQUE9SVF9NSVBfQVVUT0dFTjsKKyAgICAg
ICAgZnVsbFN1cHBvcnQgPSAoKGRldmljZUNhcHMuQjVHNlI1c3VwcG9ydCAmIG11c3RTdXBwb3J0
KSA9PSBtdXN0U3VwcG9ydCk7CisgICAgfQorICAgIGVsc2UgaWYgKGZvcm1hdCA9PSBEWEdJX0ZP
Uk1BVF9CNEc0UjRBNF9VTk9STSkKKyAgICB7CisgICAgICAgIGZ1bGxTdXBwb3J0ID0gKChkZXZp
Y2VDYXBzLkI0RzRSNEE0c3VwcG9ydCAmIG11c3RTdXBwb3J0KSA9PSBtdXN0U3VwcG9ydCk7Cisg
ICAgfQorICAgIGVsc2UgaWYgKGZvcm1hdCA9PSBEWEdJX0ZPUk1BVF9CNUc1UjVBMV9VTk9STSkK
KyAgICB7CisgICAgICAgIGZ1bGxTdXBwb3J0ID0gKChkZXZpY2VDYXBzLkI1RzVSNUExc3VwcG9y
dCAmIG11c3RTdXBwb3J0KSA9PSBtdXN0U3VwcG9ydCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7
CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICAvLyBUaGlzIG1lYW5zIHRoYXQgQU5HTEUgd291bGQgbGlrZSB0byB1c2UgdGhlIGVudHJ5
IGluIHRoZSBtYXAgaWYgdGhlIGlucHV0dGVkIERYR0kgZm9ybWF0CisgICAgLy8gKklTKiBzdXBw
b3J0ZWQuCisgICAgLy8gZS5nLiB0aGUgZW50cnkgbWlnaHQgbWFwIEdMX1JHQjVfQTEgdG8gRFhH
SV9GT1JNQVRfQjVHNVI1QTEsIHdoaWNoIHNob3VsZCBvbmx5IGJlIHVzZWQgaWYKKyAgICAvLyBE
WEdJX0ZPUk1BVF9CNUc1UjVBMSBpcyBzdXBwb3J0ZWQuCisgICAgLy8gSW4gdGhpcyBjYXNlLCB3
ZSBzaG91bGQgb25seSByZXR1cm4gJ3RydWUnIGlmIHRoZSBmb3JtYXQgKklTKiBzdXBwb3J0ZWQu
CisgICAgcmV0dXJuIGZ1bGxTdXBwb3J0OworfQorCit9ICAvLyBuYW1lc3BhY2UgZDNkMTEKKwor
fSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfRDNEX0Qz
RDExX1RFWFRVUkVfRk9STUFUX1RBQkxFX1VUSUxTX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvUGFzc3Rocm91
Z2gyRDExLmhsc2wKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL1Bhc3N0aHJvdWdoMkQxMS5obHNsCShy
ZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvUGFzc3Rocm91Z2gyRDExLmhsc2wJKHdvcmtpbmcg
Y29weSkKQEAgLTIxLDYgKzIxLDIzIEBAIGZsb2F0NCBQU19QYXNzdGhyb3VnaFJHQkEyRChpbiBm
bG9hdDQgaW4KICAgICByZXR1cm4gVGV4dHVyZUYuU2FtcGxlKFNhbXBsZXIsIGluVGV4Q29vcmQp
LnJnYmE7CiB9CiAKK2Zsb2F0NCBQU19QYXNzdGhyb3VnaFJHQkFQcmVtdWx0aXBseTJEKGluIGZs
b2F0NCBpblBvc2l0aW9uIDogU1ZfUE9TSVRJT04sIGluIGZsb2F0MiBpblRleENvb3JkIDogVEVY
Q09PUkQwKSA6IFNWX1RBUkdFVDAKK3sKKyAgICBmbG9hdDQgY29sb3IgPSBUZXh0dXJlRi5TYW1w
bGUoU2FtcGxlciwgaW5UZXhDb29yZCkucmdiYTsKKyAgICBjb2xvci5yZ2IgKj0gY29sb3IuYTsK
KyAgICByZXR1cm4gY29sb3I7Cit9CisKK2Zsb2F0NCBQU19QYXNzdGhyb3VnaFJHQkFVbm11bHRp
cGx5MkQoaW4gZmxvYXQ0IGluUG9zaXRpb24gOiBTVl9QT1NJVElPTiwgaW4gZmxvYXQyIGluVGV4
Q29vcmQgOiBURVhDT09SRDApIDogU1ZfVEFSR0VUMAoreworICAgIGZsb2F0NCBjb2xvciA9IFRl
eHR1cmVGLlNhbXBsZShTYW1wbGVyLCBpblRleENvb3JkKS5yZ2JhOworICAgIGlmIChjb2xvci5h
ID4gMC4wZikKKyAgICB7CisgICAgICAgIGNvbG9yLnJnYiAvPSBjb2xvci5hOworICAgIH0KKyAg
ICByZXR1cm4gY29sb3I7Cit9CisKIHVpbnQ0IFBTX1Bhc3N0aHJvdWdoUkdCQTJEVUkoaW4gZmxv
YXQ0IGluUG9zaXRpb24gOiBTVl9QT1NJVElPTiwgaW4gZmxvYXQyIGluVGV4Q29vcmQgOiBURVhD
T09SRDApIDogU1ZfVEFSR0VUMAogewogICAgIHVpbnQyIHNpemU7CkBAIC00Miw2ICs1OSwyMyBA
QCBmbG9hdDQgUFNfUGFzc3Rocm91Z2hSR0IyRChpbiBmbG9hdDQgaW5QCiAgICAgcmV0dXJuIGZs
b2F0NChUZXh0dXJlRi5TYW1wbGUoU2FtcGxlciwgaW5UZXhDb29yZCkucmdiLCAxLjBmKTsKIH0K
IAorZmxvYXQ0IFBTX1Bhc3N0aHJvdWdoUkdCUHJlbXVsdGlwbHkyRChpbiBmbG9hdDQgaW5Qb3Np
dGlvbiA6IFNWX1BPU0lUSU9OLCBpbiBmbG9hdDIgaW5UZXhDb29yZCA6IFRFWENPT1JEMCkgOiBT
Vl9UQVJHRVQwCit7CisgICAgZmxvYXQ0IGNvbG9yID0gVGV4dHVyZUYuU2FtcGxlKFNhbXBsZXIs
IGluVGV4Q29vcmQpLnJnYmE7CisgICAgY29sb3IucmdiICo9IGNvbG9yLmE7CisgICAgcmV0dXJu
IGNvbG9yOworfQorCitmbG9hdDQgUFNfUGFzc3Rocm91Z2hSR0JVbm11bHRpcGx5MkQoaW4gZmxv
YXQ0IGluUG9zaXRpb24gOiBTVl9QT1NJVElPTiwgaW4gZmxvYXQyIGluVGV4Q29vcmQgOiBURVhD
T09SRDApIDogU1ZfVEFSR0VUMAoreworICAgIGZsb2F0NCBjb2xvciA9IFRleHR1cmVGLlNhbXBs
ZShTYW1wbGVyLCBpblRleENvb3JkKS5yZ2JhOworICAgIGlmIChjb2xvci5hID4gMC4wZikKKyAg
ICB7CisgICAgICAgIGNvbG9yLnJnYiAvPSBjb2xvci5hOworICAgIH0KKyAgICByZXR1cm4gY29s
b3I7Cit9CisKIHVpbnQ0IFBTX1Bhc3N0aHJvdWdoUkdCMkRVSShpbiBmbG9hdDQgaW5Qb3NpdGlv
biA6IFNWX1BPU0lUSU9OLCBpbiBmbG9hdDIgaW5UZXhDb29yZCA6IFRFWENPT1JEMCkgOiBTVl9U
QVJHRVQwCiB7CiAgICAgdWludDIgc2l6ZTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9SZXNvbHZlRGVwdGhTdGVu
Y2lsLmhsc2wKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL1Jlc29sdmVEZXB0aFN0ZW5jaWwuaGxzbAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvUmVzb2x2ZURlcHRoU3RlbmNpbC5obHNsCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKK3N0YXRpYyBjb25zdCBmbG9hdDIgZ19Db3JuZXJzWzZd
ID0KK3sKKyAgICBmbG9hdDIoLTEuMGYsICAxLjBmKSwKKyAgICBmbG9hdDIoIDEuMGYsIC0xLjBm
KSwKKyAgICBmbG9hdDIoLTEuMGYsIC0xLjBmKSwKKyAgICBmbG9hdDIoLTEuMGYsICAxLjBmKSwK
KyAgICBmbG9hdDIoIDEuMGYsICAxLjBmKSwKKyAgICBmbG9hdDIoIDEuMGYsIC0xLjBmKSwKK307
CisKK3ZvaWQgVlNfUmVzb2x2ZURlcHRoU3RlbmNpbChpbiB1aW50IGlkIDogU1ZfVmVydGV4SUQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgIG91dCBmbG9hdDIgdGV4Q29vcmQgOiBURVhD
T09SRDApCit7CisgICAgZmxvYXQyIGNvcm5lciA9IGdfQ29ybmVyc1tpZF07CisgICAgcG9zaXRp
b24gPSBmbG9hdDQoY29ybmVyLngsIGNvcm5lci55LCAwLjBmLCAxLjBmKTsKKyAgICB0ZXhDb29y
ZCA9IGZsb2F0MigoY29ybmVyLnggKyAxLjBmKSAqIDAuNWYsICgtY29ybmVyLnkgKyAxLjBmKSAq
IDAuNWYpOworfQorCitUZXh0dXJlMkRNUzxmbG9hdD4gRGVwdGggICA6IHJlZ2lzdGVyKHQwKTsK
K1RleHR1cmUyRE1TPHVpbnQyPiBTdGVuY2lsIDogcmVnaXN0ZXIodDEpOworCit2b2lkIFBTX1Jl
c29sdmVEZXB0aChpbiBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgIGluIGZsb2F0MiB0ZXhDb29yZCA6IFRFWENPT1JEMCwKKyAgICAgICAgICAgICAg
ICAgICAgIG91dCBmbG9hdCBkZXB0aCA6IFNWX1RhcmdldDApCit7CisgICAgLy8gTVMgc2FtcGxl
cnMgbXVzdCB1c2UgTG9hZAorICAgIHVpbnQgd2lkdGgsIGhlaWdodCwgc2FtcGxlczsKKyAgICBE
ZXB0aC5HZXREaW1lbnNpb25zKHdpZHRoLCBoZWlnaHQsIHNhbXBsZXMpOworICAgIHVpbnQyIGNv
b3JkID0gdWludDIodGV4Q29vcmQueCAqIGZsb2F0KHdpZHRoKSwgdGV4Q29vcmQueSAqIGZsb2F0
KGhlaWdodCkpOworICAgIGRlcHRoID0gRGVwdGguTG9hZChjb29yZCwgMCkucjsKK30KKwordm9p
ZCBQU19SZXNvbHZlRGVwdGhTdGVuY2lsKGluIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGZsb2F0MiB0ZXhDb29yZCA6IFRFWENP
T1JEMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgZmxvYXQyIGRlcHRoU3RlbmNp
bCA6IFNWX1RhcmdldDApCit7CisgICAgLy8gTVMgc2FtcGxlcnMgbXVzdCB1c2UgTG9hZAorICAg
IHVpbnQgd2lkdGgsIGhlaWdodCwgc2FtcGxlczsKKyAgICBEZXB0aC5HZXREaW1lbnNpb25zKHdp
ZHRoLCBoZWlnaHQsIHNhbXBsZXMpOworICAgIHVpbnQyIGNvb3JkID0gdWludDIodGV4Q29vcmQu
eCAqIGZsb2F0KHdpZHRoKSwgdGV4Q29vcmQueSAqIGZsb2F0KGhlaWdodCkpOworICAgIGRlcHRo
U3RlbmNpbC5yID0gRGVwdGguTG9hZChjb29yZCwgMCkucjsKKyAgICBkZXB0aFN0ZW5jaWwuZyA9
IGZsb2F0KFN0ZW5jaWwuTG9hZChjb29yZCwgMCkuZyk7Cit9CisKK3ZvaWQgUFNfUmVzb2x2ZVN0
ZW5jaWwoaW4gZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgIGluIGZsb2F0MiB0ZXhDb29yZCA6IFRFWENPT1JEMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgb3V0IGZsb2F0MiBzdGVuY2lsIDogU1ZfVGFyZ2V0MCkKK3sKKyAgICAvLyBNUyBzYW1w
bGVycyBtdXN0IHVzZSBMb2FkCisgICAgdWludCB3aWR0aCwgaGVpZ2h0LCBzYW1wbGVzOworICAg
IFN0ZW5jaWwuR2V0RGltZW5zaW9ucyh3aWR0aCwgaGVpZ2h0LCBzYW1wbGVzKTsKKyAgICB1aW50
MiBjb29yZCA9IHVpbnQyKHRleENvb3JkLnggKiBmbG9hdCh3aWR0aCksIHRleENvb3JkLnkgKiBm
bG9hdChoZWlnaHQpKTsKKyAgICBzdGVuY2lsLnIgPSAwLjBmOworICAgIHN0ZW5jaWwuZyA9IGZs
b2F0KFN0ZW5jaWwuTG9hZChjb29yZCwgMCkuZyk7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvZ2VuZXJhdGVf
c2hhZGVycy5iYXQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2dlbmVyYXRlX3NoYWRlcnMuYmF0CShy
ZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvZ2VuZXJhdGVfc2hhZGVycy5iYXQJKHdvcmtpbmcg
Y29weSkKQEAgLTIwLDcgKzIwLDcgQEAgaWYgIiUxIiA9PSAicmVsZWFzZSIgKA0KICkNCiANCiA6
OiBTaGFkZXJzIGZvciBPcGVuR0wgRVMgMi4wIGFuZCBPcGVuR0wgRVMgMy4wKw0KLTo6ICAgICAg
ICAgICAgICB8IElucHV0IGZpbGUgICAgICAgICAgfCBFbnRyeSBwb2ludCAgICAgICAgICAgfCBU
eXBlICAgICAgICAgICAgfCBPdXRwdXQgZmlsZSAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVi
dWcgfA0KKzo6ICAgICAgICAgICAgICB8IElucHV0IGZpbGUgICAgICAgICB8IEVudHJ5IHBvaW50
ICAgICAgICAgICAgfCBUeXBlICAgICAgICAgICAgfCBPdXRwdXQgZmlsZSAgICAgICAgICAgICAg
ICAgICAgICAgIHwgRGVidWcgfA0KIGNhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gyRDExLmhs
c2wgVlNfUGFzc3Rocm91Z2gyRCAgICAgICAgIHZzXzRfMF9sZXZlbF85XzMgIGNvbXBpbGVkXHBh
c3N0aHJvdWdoMmQxMXZzLmggICAgICAgICAlZGVidWclDQogY2FsbDpCdWlsZFNoYWRlciBQYXNz
dGhyb3VnaDJEMTEuaGxzbCBQU19QYXNzdGhyb3VnaFJHQkEyRCAgICAgcHNfNF8wX2xldmVsXzlf
MyAgY29tcGlsZWRccGFzc3Rocm91Z2hyZ2JhMmQxMXBzLmggICAgICVkZWJ1ZyUNCiBjYWxsOkJ1
aWxkU2hhZGVyIFBhc3N0aHJvdWdoMkQxMS5obHNsIFBTX1Bhc3N0aHJvdWdoUkdCMkQgICAgICBw
c180XzBfbGV2ZWxfOV8zICBjb21waWxlZFxwYXNzdGhyb3VnaHJnYjJkMTFwcy5oICAgICAgJWRl
YnVnJQ0KQEAgLTI5LDY0ICsyOSw3MyBAQCBjYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoMkQx
MS5obHNsIFBTCiBjYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoMkQxMS5obHNsIFBTX1Bhc3N0
aHJvdWdoTHVtMkQgICAgICBwc180XzBfbGV2ZWxfOV8zICBjb21waWxlZFxwYXNzdGhyb3VnaGx1
bTJkMTFwcy5oICAgICAgJWRlYnVnJQ0KIGNhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gyRDEx
Lmhsc2wgUFNfUGFzc3Rocm91Z2hMdW1BbHBoYTJEIHBzXzRfMF9sZXZlbF85XzMgIGNvbXBpbGVk
XHBhc3N0aHJvdWdobHVtYWxwaGEyZDExcHMuaCAlZGVidWclDQogDQorY2FsbDpCdWlsZFNoYWRl
ciBQYXNzdGhyb3VnaDJEMTEuaGxzbCBQU19QYXNzdGhyb3VnaFJHQkFQcmVtdWx0aXBseTJEIHBz
XzRfMF9sZXZlbF85XzMgY29tcGlsZWRccGFzc3Rocm91Z2hyZ2JhcHJlbXVsdGlwbHkyZDExcHMu
aCAlZGVidWclDQorY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDJEMTEuaGxzbCBQU19QYXNz
dGhyb3VnaFJHQkFVbm11bHRpcGx5MkQgIHBzXzRfMF9sZXZlbF85XzMgY29tcGlsZWRccGFzc3Ro
cm91Z2hyZ2JhdW5tdWx0aXBseTJkMTFwcy5oICAlZGVidWclDQorY2FsbDpCdWlsZFNoYWRlciBQ
YXNzdGhyb3VnaDJEMTEuaGxzbCBQU19QYXNzdGhyb3VnaFJHQlByZW11bHRpcGx5MkQgIHBzXzRf
MF9sZXZlbF85XzMgY29tcGlsZWRccGFzc3Rocm91Z2hyZ2JwcmVtdWx0aXBseTJkMTFwcy5oICAl
ZGVidWclDQorY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDJEMTEuaGxzbCBQU19QYXNzdGhy
b3VnaFJHQlVubXVsdGlwbHkyRCAgIHBzXzRfMF9sZXZlbF85XzMgY29tcGlsZWRccGFzc3Rocm91
Z2hyZ2J1bm11bHRpcGx5MmQxMXBzLmggICAlZGVidWclDQorDQogY2FsbDpCdWlsZFNoYWRlciBD
bGVhcjExLmhsc2wgICAgICAgICBWU19DbGVhckZsb2F0ICAgICAgICAgICAgdnNfNF8wX2xldmVs
XzlfMyAgY29tcGlsZWRcY2xlYXJmbG9hdDExdnMuaCAgICAgICAgICAgICVkZWJ1ZyUNCiBjYWxs
OkJ1aWxkU2hhZGVyIENsZWFyMTEuaGxzbCAgICAgICAgIFBTX0NsZWFyRmxvYXRfRkw5ICAgICAg
ICBwc180XzBfbGV2ZWxfOV8zICBjb21waWxlZFxjbGVhcmZsb2F0MTFfZmw5cHMuaCAgICAgICAg
JWRlYnVnJQ0KIGNhbGw6QnVpbGRTaGFkZXIgQ2xlYXIxMS5obHNsICAgICAgICAgUFNfQ2xlYXJG
bG9hdCAgICAgICAgICAgIHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXGNsZWFyZmxvYXQxMXBz
LmggICAgICAgICAgICAlZGVidWclDQogDQogDQogOjogU2hhZGVycyBmb3IgT3BlbkdMIEVTIDMu
MCsgb25seQ0KLTo6ICAgICAgICAgICAgICB8IElucHV0IGZpbGUgICAgICAgICAgfCBFbnRyeSBw
b2ludCAgICAgICAgICAgfCBUeXBlICAgICAgICAgICAgfCBPdXRwdXQgZmlsZSAgICAgICAgICAg
ICAgICAgICAgICAgIHwgRGVidWcgfA0KLWNhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gyRDEx
Lmhsc2wgUFNfUGFzc3Rocm91Z2hEZXB0aDJEICAgIHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVk
XHBhc3N0aHJvdWdoZGVwdGgyZDExcHMuaCAgICAlZGVidWclDQotY2FsbDpCdWlsZFNoYWRlciBQ
YXNzdGhyb3VnaDJEMTEuaGxzbCBQU19QYXNzdGhyb3VnaFJHQkEyRFVJICAgcHNfNF8wICAgICAg
ICAgICAgY29tcGlsZWRccGFzc3Rocm91Z2hyZ2JhMmR1aTExcHMuaCAgICVkZWJ1ZyUNCi1jYWxs
OkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoMkQxMS5obHNsIFBTX1Bhc3N0aHJvdWdoUkdCQTJESSAg
ICBwc180XzAgICAgICAgICAgICBjb21waWxlZFxwYXNzdGhyb3VnaHJnYmEyZGkxMXBzLmggICAg
JWRlYnVnJQ0KLWNhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gyRDExLmhsc2wgUFNfUGFzc3Ro
cm91Z2hSR0IyRFVJICAgIHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXHBhc3N0aHJvdWdocmdi
MmR1aTExcHMuaCAgICAlZGVidWclDQotY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDJEMTEu
aGxzbCBQU19QYXNzdGhyb3VnaFJHQjJESSAgICAgcHNfNF8wICAgICAgICAgICAgY29tcGlsZWRc
cGFzc3Rocm91Z2hyZ2IyZGkxMXBzLmggICAgICVkZWJ1ZyUNCi1jYWxsOkJ1aWxkU2hhZGVyIFBh
c3N0aHJvdWdoMkQxMS5obHNsIFBTX1Bhc3N0aHJvdWdoUkcyRFVJICAgICBwc180XzAgICAgICAg
ICAgICBjb21waWxlZFxwYXNzdGhyb3VnaHJnMmR1aTExcHMuaCAgICAgJWRlYnVnJQ0KLWNhbGw6
QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gyRDExLmhsc2wgUFNfUGFzc3Rocm91Z2hSRzJESSAgICAg
IHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXHBhc3N0aHJvdWdocmcyZGkxMXBzLmggICAgICAl
ZGVidWclDQotY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDJEMTEuaGxzbCBQU19QYXNzdGhy
b3VnaFIyRFVJICAgICAgcHNfNF8wICAgICAgICAgICAgY29tcGlsZWRccGFzc3Rocm91Z2hyMmR1
aTExcHMuaCAgICAgICVkZWJ1ZyUNCi1jYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoMkQxMS5o
bHNsIFBTX1Bhc3N0aHJvdWdoUjJESSAgICAgICBwc180XzAgICAgICAgICAgICBjb21waWxlZFxw
YXNzdGhyb3VnaHIyZGkxMXBzLmggICAgICAgJWRlYnVnJQ0KLQ0KLQ0KLWNhbGw6QnVpbGRTaGFk
ZXIgUGFzc3Rocm91Z2gzRDExLmhsc2wgVlNfUGFzc3Rocm91Z2gzRCAgICAgICAgIHZzXzRfMCAg
ICAgICAgICAgIGNvbXBpbGVkXHBhc3N0aHJvdWdoM2QxMXZzLmggICAgICAgICAlZGVidWclDQot
Y2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDNEMTEuaGxzbCBHU19QYXNzdGhyb3VnaDNEICAg
ICAgICAgZ3NfNF8wICAgICAgICAgICAgY29tcGlsZWRccGFzc3Rocm91Z2gzZDExZ3MuaCAgICAg
ICAgICVkZWJ1ZyUNCi1jYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoM0QxMS5obHNsIFBTX1Bh
c3N0aHJvdWdoUkdCQTNEICAgICBwc180XzAgICAgICAgICAgICBjb21waWxlZFxwYXNzdGhyb3Vn
aHJnYmEzZDExcHMuaCAgICAgJWRlYnVnJQ0KLWNhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gz
RDExLmhsc2wgUFNfUGFzc3Rocm91Z2hSR0JBM0RVSSAgIHBzXzRfMCAgICAgICAgICAgIGNvbXBp
bGVkXHBhc3N0aHJvdWdocmdiYTNkdWkxMXBzLmggICAlZGVidWclDQotY2FsbDpCdWlsZFNoYWRl
ciBQYXNzdGhyb3VnaDNEMTEuaGxzbCBQU19QYXNzdGhyb3VnaFJHQkEzREkgICAgcHNfNF8wICAg
ICAgICAgICAgY29tcGlsZWRccGFzc3Rocm91Z2hyZ2JhM2RpMTFwcy5oICAgICVkZWJ1ZyUNCi1j
YWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoM0QxMS5obHNsIFBTX1Bhc3N0aHJvdWdoUkdCM0Qg
ICAgICBwc180XzAgICAgICAgICAgICBjb21waWxlZFxwYXNzdGhyb3VnaHJnYjNkMTFwcy5oICAg
ICAgJWRlYnVnJQ0KLWNhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gzRDExLmhsc2wgUFNfUGFz
c3Rocm91Z2hSR0IzRFVJICAgIHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXHBhc3N0aHJvdWdo
cmdiM2R1aTExcHMuaCAgICAlZGVidWclDQotY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDNE
MTEuaGxzbCBQU19QYXNzdGhyb3VnaFJHQjNESSAgICAgcHNfNF8wICAgICAgICAgICAgY29tcGls
ZWRccGFzc3Rocm91Z2hyZ2IzZGkxMXBzLmggICAgICVkZWJ1ZyUNCi1jYWxsOkJ1aWxkU2hhZGVy
IFBhc3N0aHJvdWdoM0QxMS5obHNsIFBTX1Bhc3N0aHJvdWdoUkczRCAgICAgICBwc180XzAgICAg
ICAgICAgICBjb21waWxlZFxwYXNzdGhyb3VnaHJnM2QxMXBzLmggICAgICAgJWRlYnVnJQ0KLWNh
bGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gzRDExLmhsc2wgUFNfUGFzc3Rocm91Z2hSRzNEVUkg
ICAgIHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXHBhc3N0aHJvdWdocmczZHVpMTFwcy5oICAg
ICAlZGVidWclDQotY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDNEMTEuaGxzbCBQU19QYXNz
dGhyb3VnaFJHM0RJICAgICAgcHNfNF8wICAgICAgICAgICAgY29tcGlsZWRccGFzc3Rocm91Z2hy
ZzNkaTExcHMuaCAgICAgICVkZWJ1ZyUNCi1jYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoM0Qx
MS5obHNsIFBTX1Bhc3N0aHJvdWdoUjNEICAgICAgICBwc180XzAgICAgICAgICAgICBjb21waWxl
ZFxwYXNzdGhyb3VnaHIzZDExcHMuaCAgICAgICAgJWRlYnVnJQ0KLWNhbGw6QnVpbGRTaGFkZXIg
UGFzc3Rocm91Z2gzRDExLmhsc2wgUFNfUGFzc3Rocm91Z2hSM0RVSSAgICAgIHBzXzRfMCAgICAg
ICAgICAgIGNvbXBpbGVkXHBhc3N0aHJvdWdocjNkdWkxMXBzLmggICAgICAlZGVidWclDQotY2Fs
bDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDNEMTEuaGxzbCBQU19QYXNzdGhyb3VnaFIzREkgICAg
ICAgcHNfNF8wICAgICAgICAgICAgY29tcGlsZWRccGFzc3Rocm91Z2hyM2RpMTFwcy5oICAgICAg
ICVkZWJ1ZyUNCi1jYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoM0QxMS5obHNsIFBTX1Bhc3N0
aHJvdWdoTHVtM0QgICAgICBwc180XzAgICAgICAgICAgICBjb21waWxlZFxwYXNzdGhyb3VnaGx1
bTNkMTFwcy5oICAgICAgJWRlYnVnJQ0KLWNhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gzRDEx
Lmhsc2wgUFNfUGFzc3Rocm91Z2hMdW1BbHBoYTNEIHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVk
XHBhc3N0aHJvdWdobHVtYWxwaGEzZDExcHMuaCAlZGVidWclDQotDQotY2FsbDpCdWlsZFNoYWRl
ciBTd2l6emxlMTEuaGxzbCAgICAgICBQU19Td2l6emxlRjJEICAgICAgICAgICAgcHNfNF8wICAg
ICAgICAgICAgY29tcGlsZWRcc3dpenpsZWYyZHBzLmggICAgICAgICAgICAgICVkZWJ1ZyUNCi1j
YWxsOkJ1aWxkU2hhZGVyIFN3aXp6bGUxMS5obHNsICAgICAgIFBTX1N3aXp6bGVJMkQgICAgICAg
ICAgICBwc180XzAgICAgICAgICAgICBjb21waWxlZFxzd2l6emxlaTJkcHMuaCAgICAgICAgICAg
ICAgJWRlYnVnJQ0KLWNhbGw6QnVpbGRTaGFkZXIgU3dpenpsZTExLmhsc2wgICAgICAgUFNfU3dp
enpsZVVJMkQgICAgICAgICAgIHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXHN3aXp6bGV1aTJk
cHMuaCAgICAgICAgICAgICAlZGVidWclDQotDQotY2FsbDpCdWlsZFNoYWRlciBTd2l6emxlMTEu
aGxzbCAgICAgICBQU19Td2l6emxlRjNEICAgICAgICAgICAgcHNfNF8wICAgICAgICAgICAgY29t
cGlsZWRcc3dpenpsZWYzZHBzLmggICAgICAgICAgICAgICVkZWJ1ZyUNCi1jYWxsOkJ1aWxkU2hh
ZGVyIFN3aXp6bGUxMS5obHNsICAgICAgIFBTX1N3aXp6bGVJM0QgICAgICAgICAgICBwc180XzAg
ICAgICAgICAgICBjb21waWxlZFxzd2l6emxlaTNkcHMuaCAgICAgICAgICAgICAgJWRlYnVnJQ0K
LWNhbGw6QnVpbGRTaGFkZXIgU3dpenpsZTExLmhsc2wgICAgICAgUFNfU3dpenpsZVVJM0QgICAg
ICAgICAgIHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXHN3aXp6bGV1aTNkcHMuaCAgICAgICAg
ICAgICAlZGVidWclDQotDQotY2FsbDpCdWlsZFNoYWRlciBTd2l6emxlMTEuaGxzbCAgICAgICBQ
U19Td2l6emxlRjJEQXJyYXkgICAgICAgcHNfNF8wICAgICAgICAgICAgY29tcGlsZWRcc3dpenps
ZWYyZGFycmF5cHMuaCAgICAgICAgICVkZWJ1ZyUNCi1jYWxsOkJ1aWxkU2hhZGVyIFN3aXp6bGUx
MS5obHNsICAgICAgIFBTX1N3aXp6bGVJMkRBcnJheSAgICAgICBwc180XzAgICAgICAgICAgICBj
b21waWxlZFxzd2l6emxlaTJkYXJyYXlwcy5oICAgICAgICAgJWRlYnVnJQ0KLWNhbGw6QnVpbGRT
aGFkZXIgU3dpenpsZTExLmhsc2wgICAgICAgUFNfU3dpenpsZVVJMkRBcnJheSAgICAgIHBzXzRf
MCAgICAgICAgICAgIGNvbXBpbGVkXHN3aXp6bGV1aTJkYXJyYXlwcy5oICAgICAgICAlZGVidWcl
DQotDQotY2FsbDpCdWlsZFNoYWRlciBDbGVhcjExLmhsc2wgICAgICAgICBWU19DbGVhclVpbnQg
ICAgICAgICAgICAgdnNfNF8wICAgICAgICAgICAgY29tcGlsZWRcY2xlYXJ1aW50MTF2cy5oICAg
ICAgICAgICAgICVkZWJ1ZyUNCi1jYWxsOkJ1aWxkU2hhZGVyIENsZWFyMTEuaGxzbCAgICAgICAg
IFBTX0NsZWFyVWludCAgICAgICAgICAgICBwc180XzAgICAgICAgICAgICBjb21waWxlZFxjbGVh
cnVpbnQxMXBzLmggICAgICAgICAgICAgJWRlYnVnJQ0KLQ0KLWNhbGw6QnVpbGRTaGFkZXIgQ2xl
YXIxMS5obHNsICAgICAgICAgVlNfQ2xlYXJTaW50ICAgICAgICAgICAgIHZzXzRfMCAgICAgICAg
ICAgIGNvbXBpbGVkXGNsZWFyc2ludDExdnMuaCAgICAgICAgICAgICAlZGVidWclDQotY2FsbDpC
dWlsZFNoYWRlciBDbGVhcjExLmhsc2wgICAgICAgICBQU19DbGVhclNpbnQgICAgICAgICAgICAg
cHNfNF8wICAgICAgICAgICAgY29tcGlsZWRcY2xlYXJzaW50MTFwcy5oICAgICAgICAgICAgICVk
ZWJ1ZyUNCi0NCi1jYWxsOkJ1aWxkU2hhZGVyIEJ1ZmZlclRvVGV4dHVyZTExLmhsc2wgIFZTX0J1
ZmZlclRvVGV4dHVyZSAgICAgICAgdnNfNF8wICAgICAgICBjb21waWxlZC9idWZmZXJ0b3RleHR1
cmUxMV92cy5oICAgICAgJWRlYnVnJQ0KLWNhbGw6QnVpbGRTaGFkZXIgQnVmZmVyVG9UZXh0dXJl
MTEuaGxzbCAgR1NfQnVmZmVyVG9UZXh0dXJlICAgICAgICBnc180XzAgICAgICAgIGNvbXBpbGVk
L2J1ZmZlcnRvdGV4dHVyZTExX2dzLmggICAgICAlZGVidWclDQotY2FsbDpCdWlsZFNoYWRlciBC
dWZmZXJUb1RleHR1cmUxMS5obHNsICBQU19CdWZmZXJUb1RleHR1cmVfNEYgICAgIHBzXzRfMCAg
ICAgICAgY29tcGlsZWQvYnVmZmVydG90ZXh0dXJlMTFfcHNfNGYuaCAgICVkZWJ1ZyUNCi1jYWxs
OkJ1aWxkU2hhZGVyIEJ1ZmZlclRvVGV4dHVyZTExLmhsc2wgIFBTX0J1ZmZlclRvVGV4dHVyZV80
SSAgICAgcHNfNF8wICAgICAgICBjb21waWxlZC9idWZmZXJ0b3RleHR1cmUxMV9wc180aS5oICAg
JWRlYnVnJQ0KLWNhbGw6QnVpbGRTaGFkZXIgQnVmZmVyVG9UZXh0dXJlMTEuaGxzbCAgUFNfQnVm
ZmVyVG9UZXh0dXJlXzRVSSAgICBwc180XzAgICAgICAgIGNvbXBpbGVkL2J1ZmZlcnRvdGV4dHVy
ZTExX3BzXzR1aS5oICAlZGVidWclDQorOjogICAgICAgICAgICAgIHwgSW5wdXQgZmlsZSAgICAg
ICAgICAgICAgIHwgRW50cnkgcG9pbnQgICAgICAgICAgICB8IFR5cGUgICB8IE91dHB1dCBmaWxl
ICAgICAgICAgICAgICAgICAgICAgICAgfCBEZWJ1ZyB8DQorY2FsbDpCdWlsZFNoYWRlciBQYXNz
dGhyb3VnaDJEMTEuaGxzbCAgICAgICBQU19QYXNzdGhyb3VnaERlcHRoMkQgICAgcHNfNF8wICAg
Y29tcGlsZWRccGFzc3Rocm91Z2hkZXB0aDJkMTFwcy5oICAgICVkZWJ1ZyUNCitjYWxsOkJ1aWxk
U2hhZGVyIFBhc3N0aHJvdWdoMkQxMS5obHNsICAgICAgIFBTX1Bhc3N0aHJvdWdoUkdCQTJEVUkg
ICBwc180XzAgICBjb21waWxlZFxwYXNzdGhyb3VnaHJnYmEyZHVpMTFwcy5oICAgJWRlYnVnJQ0K
K2NhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gyRDExLmhsc2wgICAgICAgUFNfUGFzc3Rocm91
Z2hSR0JBMkRJICAgIHBzXzRfMCAgIGNvbXBpbGVkXHBhc3N0aHJvdWdocmdiYTJkaTExcHMuaCAg
ICAlZGVidWclDQorY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDJEMTEuaGxzbCAgICAgICBQ
U19QYXNzdGhyb3VnaFJHQjJEVUkgICAgcHNfNF8wICAgY29tcGlsZWRccGFzc3Rocm91Z2hyZ2Iy
ZHVpMTFwcy5oICAgICVkZWJ1ZyUNCitjYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoMkQxMS5o
bHNsICAgICAgIFBTX1Bhc3N0aHJvdWdoUkdCMkRJICAgICBwc180XzAgICBjb21waWxlZFxwYXNz
dGhyb3VnaHJnYjJkaTExcHMuaCAgICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgUGFzc3Ro
cm91Z2gyRDExLmhsc2wgICAgICAgUFNfUGFzc3Rocm91Z2hSRzJEVUkgICAgIHBzXzRfMCAgIGNv
bXBpbGVkXHBhc3N0aHJvdWdocmcyZHVpMTFwcy5oICAgICAlZGVidWclDQorY2FsbDpCdWlsZFNo
YWRlciBQYXNzdGhyb3VnaDJEMTEuaGxzbCAgICAgICBQU19QYXNzdGhyb3VnaFJHMkRJICAgICAg
cHNfNF8wICAgY29tcGlsZWRccGFzc3Rocm91Z2hyZzJkaTExcHMuaCAgICAgICVkZWJ1ZyUNCitj
YWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoMkQxMS5obHNsICAgICAgIFBTX1Bhc3N0aHJvdWdo
UjJEVUkgICAgICBwc180XzAgICBjb21waWxlZFxwYXNzdGhyb3VnaHIyZHVpMTFwcy5oICAgICAg
JWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gyRDExLmhsc2wgICAgICAgUFNf
UGFzc3Rocm91Z2hSMkRJICAgICAgIHBzXzRfMCAgIGNvbXBpbGVkXHBhc3N0aHJvdWdocjJkaTEx
cHMuaCAgICAgICAlZGVidWclDQorDQorY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDNEMTEu
aGxzbCAgICAgICBWU19QYXNzdGhyb3VnaDNEICAgICAgICAgdnNfNF8wICAgY29tcGlsZWRccGFz
c3Rocm91Z2gzZDExdnMuaCAgICAgICAgICVkZWJ1ZyUNCitjYWxsOkJ1aWxkU2hhZGVyIFBhc3N0
aHJvdWdoM0QxMS5obHNsICAgICAgIEdTX1Bhc3N0aHJvdWdoM0QgICAgICAgICBnc180XzAgICBj
b21waWxlZFxwYXNzdGhyb3VnaDNkMTFncy5oICAgICAgICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRT
aGFkZXIgUGFzc3Rocm91Z2gzRDExLmhsc2wgICAgICAgUFNfUGFzc3Rocm91Z2hSR0JBM0QgICAg
IHBzXzRfMCAgIGNvbXBpbGVkXHBhc3N0aHJvdWdocmdiYTNkMTFwcy5oICAgICAlZGVidWclDQor
Y2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDNEMTEuaGxzbCAgICAgICBQU19QYXNzdGhyb3Vn
aFJHQkEzRFVJICAgcHNfNF8wICAgY29tcGlsZWRccGFzc3Rocm91Z2hyZ2JhM2R1aTExcHMuaCAg
ICVkZWJ1ZyUNCitjYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoM0QxMS5obHNsICAgICAgIFBT
X1Bhc3N0aHJvdWdoUkdCQTNESSAgICBwc180XzAgICBjb21waWxlZFxwYXNzdGhyb3VnaHJnYmEz
ZGkxMXBzLmggICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gzRDExLmhs
c2wgICAgICAgUFNfUGFzc3Rocm91Z2hSR0IzRCAgICAgIHBzXzRfMCAgIGNvbXBpbGVkXHBhc3N0
aHJvdWdocmdiM2QxMXBzLmggICAgICAlZGVidWclDQorY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhy
b3VnaDNEMTEuaGxzbCAgICAgICBQU19QYXNzdGhyb3VnaFJHQjNEVUkgICAgcHNfNF8wICAgY29t
cGlsZWRccGFzc3Rocm91Z2hyZ2IzZHVpMTFwcy5oICAgICVkZWJ1ZyUNCitjYWxsOkJ1aWxkU2hh
ZGVyIFBhc3N0aHJvdWdoM0QxMS5obHNsICAgICAgIFBTX1Bhc3N0aHJvdWdoUkdCM0RJICAgICBw
c180XzAgICBjb21waWxlZFxwYXNzdGhyb3VnaHJnYjNkaTExcHMuaCAgICAgJWRlYnVnJQ0KK2Nh
bGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gzRDExLmhsc2wgICAgICAgUFNfUGFzc3Rocm91Z2hS
RzNEICAgICAgIHBzXzRfMCAgIGNvbXBpbGVkXHBhc3N0aHJvdWdocmczZDExcHMuaCAgICAgICAl
ZGVidWclDQorY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDNEMTEuaGxzbCAgICAgICBQU19Q
YXNzdGhyb3VnaFJHM0RVSSAgICAgcHNfNF8wICAgY29tcGlsZWRccGFzc3Rocm91Z2hyZzNkdWkx
MXBzLmggICAgICVkZWJ1ZyUNCitjYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoM0QxMS5obHNs
ICAgICAgIFBTX1Bhc3N0aHJvdWdoUkczREkgICAgICBwc180XzAgICBjb21waWxlZFxwYXNzdGhy
b3VnaHJnM2RpMTFwcy5oICAgICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91
Z2gzRDExLmhsc2wgICAgICAgUFNfUGFzc3Rocm91Z2hSM0QgICAgICAgIHBzXzRfMCAgIGNvbXBp
bGVkXHBhc3N0aHJvdWdocjNkMTFwcy5oICAgICAgICAlZGVidWclDQorY2FsbDpCdWlsZFNoYWRl
ciBQYXNzdGhyb3VnaDNEMTEuaGxzbCAgICAgICBQU19QYXNzdGhyb3VnaFIzRFVJICAgICAgcHNf
NF8wICAgY29tcGlsZWRccGFzc3Rocm91Z2hyM2R1aTExcHMuaCAgICAgICVkZWJ1ZyUNCitjYWxs
OkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoM0QxMS5obHNsICAgICAgIFBTX1Bhc3N0aHJvdWdoUjNE
SSAgICAgICBwc180XzAgICBjb21waWxlZFxwYXNzdGhyb3VnaHIzZGkxMXBzLmggICAgICAgJWRl
YnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gzRDExLmhsc2wgICAgICAgUFNfUGFz
c3Rocm91Z2hMdW0zRCAgICAgIHBzXzRfMCAgIGNvbXBpbGVkXHBhc3N0aHJvdWdobHVtM2QxMXBz
LmggICAgICAlZGVidWclDQorY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDNEMTEuaGxzbCAg
ICAgICBQU19QYXNzdGhyb3VnaEx1bUFscGhhM0QgcHNfNF8wICAgY29tcGlsZWRccGFzc3Rocm91
Z2hsdW1hbHBoYTNkMTFwcy5oICVkZWJ1ZyUNCisNCitjYWxsOkJ1aWxkU2hhZGVyIFN3aXp6bGUx
MS5obHNsICAgICAgICAgICAgIFBTX1N3aXp6bGVGMkQgICAgICAgICAgICBwc180XzAgICBjb21w
aWxlZFxzd2l6emxlZjJkcHMuaCAgICAgICAgICAgICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFk
ZXIgU3dpenpsZTExLmhsc2wgICAgICAgICAgICAgUFNfU3dpenpsZUkyRCAgICAgICAgICAgIHBz
XzRfMCAgIGNvbXBpbGVkXHN3aXp6bGVpMmRwcy5oICAgICAgICAgICAgICAlZGVidWclDQorY2Fs
bDpCdWlsZFNoYWRlciBTd2l6emxlMTEuaGxzbCAgICAgICAgICAgICBQU19Td2l6emxlVUkyRCAg
ICAgICAgICAgcHNfNF8wICAgY29tcGlsZWRcc3dpenpsZXVpMmRwcy5oICAgICAgICAgICAgICVk
ZWJ1ZyUNCisNCitjYWxsOkJ1aWxkU2hhZGVyIFN3aXp6bGUxMS5obHNsICAgICAgICAgICAgIFBT
X1N3aXp6bGVGM0QgICAgICAgICAgICBwc180XzAgICBjb21waWxlZFxzd2l6emxlZjNkcHMuaCAg
ICAgICAgICAgICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgU3dpenpsZTExLmhsc2wgICAg
ICAgICAgICAgUFNfU3dpenpsZUkzRCAgICAgICAgICAgIHBzXzRfMCAgIGNvbXBpbGVkXHN3aXp6
bGVpM2Rwcy5oICAgICAgICAgICAgICAlZGVidWclDQorY2FsbDpCdWlsZFNoYWRlciBTd2l6emxl
MTEuaGxzbCAgICAgICAgICAgICBQU19Td2l6emxlVUkzRCAgICAgICAgICAgcHNfNF8wICAgY29t
cGlsZWRcc3dpenpsZXVpM2Rwcy5oICAgICAgICAgICAgICVkZWJ1ZyUNCisNCitjYWxsOkJ1aWxk
U2hhZGVyIFN3aXp6bGUxMS5obHNsICAgICAgICAgICAgIFBTX1N3aXp6bGVGMkRBcnJheSAgICAg
ICBwc180XzAgICBjb21waWxlZFxzd2l6emxlZjJkYXJyYXlwcy5oICAgICAgICAgJWRlYnVnJQ0K
K2NhbGw6QnVpbGRTaGFkZXIgU3dpenpsZTExLmhsc2wgICAgICAgICAgICAgUFNfU3dpenpsZUky
REFycmF5ICAgICAgIHBzXzRfMCAgIGNvbXBpbGVkXHN3aXp6bGVpMmRhcnJheXBzLmggICAgICAg
ICAlZGVidWclDQorY2FsbDpCdWlsZFNoYWRlciBTd2l6emxlMTEuaGxzbCAgICAgICAgICAgICBQ
U19Td2l6emxlVUkyREFycmF5ICAgICAgcHNfNF8wICAgY29tcGlsZWRcc3dpenpsZXVpMmRhcnJh
eXBzLmggICAgICAgICVkZWJ1ZyUNCisNCitjYWxsOkJ1aWxkU2hhZGVyIENsZWFyMTEuaGxzbCAg
ICAgICAgICAgICAgIFZTX0NsZWFyVWludCAgICAgICAgICAgICB2c180XzAgICBjb21waWxlZFxj
bGVhcnVpbnQxMXZzLmggICAgICAgICAgICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgQ2xl
YXIxMS5obHNsICAgICAgICAgICAgICAgUFNfQ2xlYXJVaW50ICAgICAgICAgICAgIHBzXzRfMCAg
IGNvbXBpbGVkXGNsZWFydWludDExcHMuaCAgICAgICAgICAgICAlZGVidWclDQorDQorY2FsbDpC
dWlsZFNoYWRlciBDbGVhcjExLmhsc2wgICAgICAgICAgICAgICBWU19DbGVhclNpbnQgICAgICAg
ICAgICAgdnNfNF8wICAgY29tcGlsZWRcY2xlYXJzaW50MTF2cy5oICAgICAgICAgICAgICVkZWJ1
ZyUNCitjYWxsOkJ1aWxkU2hhZGVyIENsZWFyMTEuaGxzbCAgICAgICAgICAgICAgIFBTX0NsZWFy
U2ludCAgICAgICAgICAgICBwc180XzAgICBjb21waWxlZFxjbGVhcnNpbnQxMXBzLmggICAgICAg
ICAgICAgJWRlYnVnJQ0KKw0KK2NhbGw6QnVpbGRTaGFkZXIgQnVmZmVyVG9UZXh0dXJlMTEuaGxz
bCAgICAgVlNfQnVmZmVyVG9UZXh0dXJlICAgICAgIHZzXzRfMCAgIGNvbXBpbGVkL2J1ZmZlcnRv
dGV4dHVyZTExX3ZzLmggICAgICAlZGVidWclDQorY2FsbDpCdWlsZFNoYWRlciBCdWZmZXJUb1Rl
eHR1cmUxMS5obHNsICAgICBHU19CdWZmZXJUb1RleHR1cmUgICAgICAgZ3NfNF8wICAgY29tcGls
ZWQvYnVmZmVydG90ZXh0dXJlMTFfZ3MuaCAgICAgICVkZWJ1ZyUNCitjYWxsOkJ1aWxkU2hhZGVy
IEJ1ZmZlclRvVGV4dHVyZTExLmhsc2wgICAgIFBTX0J1ZmZlclRvVGV4dHVyZV80RiAgICBwc180
XzAgICBjb21waWxlZC9idWZmZXJ0b3RleHR1cmUxMV9wc180Zi5oICAgJWRlYnVnJQ0KK2NhbGw6
QnVpbGRTaGFkZXIgQnVmZmVyVG9UZXh0dXJlMTEuaGxzbCAgICAgUFNfQnVmZmVyVG9UZXh0dXJl
XzRJICAgIHBzXzRfMCAgIGNvbXBpbGVkL2J1ZmZlcnRvdGV4dHVyZTExX3BzXzRpLmggICAlZGVi
dWclDQorY2FsbDpCdWlsZFNoYWRlciBCdWZmZXJUb1RleHR1cmUxMS5obHNsICAgICBQU19CdWZm
ZXJUb1RleHR1cmVfNFVJICAgcHNfNF8wICAgY29tcGlsZWQvYnVmZmVydG90ZXh0dXJlMTFfcHNf
NHVpLmggICVkZWJ1ZyUNCisNCitjYWxsOkJ1aWxkU2hhZGVyIFJlc29sdmVEZXB0aFN0ZW5jaWwu
aGxzbCAgIFZTX1Jlc29sdmVEZXB0aFN0ZW5jaWwgICB2c180XzEgICBjb21waWxlZC9yZXNvbHZl
ZGVwdGhzdGVuY2lsMTFfdnMuaCAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgUmVzb2x2ZURl
cHRoU3RlbmNpbC5obHNsICAgUFNfUmVzb2x2ZURlcHRoICAgICAgICAgIHBzXzRfMSAgIGNvbXBp
bGVkL3Jlc29sdmVkZXB0aDExX3BzLmggICAgICAgICAlZGVidWclDQorY2FsbDpCdWlsZFNoYWRl
ciBSZXNvbHZlRGVwdGhTdGVuY2lsLmhsc2wgICBQU19SZXNvbHZlRGVwdGhTdGVuY2lsICAgcHNf
NF8xICAgY29tcGlsZWQvcmVzb2x2ZWRlcHRoc3RlbmNpbDExX3BzLmggICVkZWJ1ZyUNCitjYWxs
OkJ1aWxkU2hhZGVyIFJlc29sdmVEZXB0aFN0ZW5jaWwuaGxzbCAgIFBTX1Jlc29sdmVTdGVuY2ls
ICAgICAgICBwc180XzEgICBjb21waWxlZC9yZXNvbHZlc3RlbmNpbDExX3BzLmggICAgICAgJWRl
YnVnJQ0KIA0KIGVjaG8uDQogDQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdi
YXByZW11bHRpcGx5MmQxMXBzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0
aHJvdWdocmdiYXByZW11bHRpcGx5MmQxMXBzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2Nv
bXBpbGVkL3Bhc3N0aHJvdWdocmdiYXByZW11bHRpcGx5MmQxMXBzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMDEgQEAKKyNpZiAwDQorLy8NCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0
IChSKSBITFNMIFNoYWRlciBDb21waWxlciA2LjMuOTYwMC4xNjM4NA0KKy8vDQorLy8NCisvLyBS
ZXNvdXJjZSBCaW5kaW5nczoNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUeXBlICBGb3JtYXQgICAgICAgICBEaW0gU2xvdCBFbGVtZW50cw0KKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tLS0tLS0g
LS0tLSAtLS0tLS0tLQ0KKy8vIFNhbXBsZXIgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1w
bGVyICAgICAgTkEgICAgICAgICAgTkEgICAgMCAgICAgICAgMQ0KKy8vIFRleHR1cmVGICAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlICBmbG9hdDQgICAgICAgICAgMmQgICAgMCAgICAg
ICAgMQ0KKy8vDQorLy8NCisvLw0KKy8vIElucHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUg
ICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAg
VXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0t
LS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6
dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgICAgIA0KKy8vIFRFWENPT1JEICAgICAgICAg
ICAgICAgICAwICAgeHkgICAgICAgICAgMSAgICAgTk9ORSAgIGZsb2F0ICAgeHkgIA0KKy8vDQor
Ly8NCisvLyBPdXRwdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAg
SW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0t
LS0tDQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFS
R0VUICAgZmxvYXQgICB4eXp3DQorLy8NCisvLw0KKy8vIFNhbXBsZXIvUmVzb3VyY2UgdG8gRFg5
IHNoYWRlciBzYW1wbGVyIG1hcHBpbmdzOg0KKy8vDQorLy8gVGFyZ2V0IFNhbXBsZXIgU291cmNl
IFNhbXBsZXIgIFNvdXJjZSBSZXNvdXJjZQ0KKy8vIC0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0t
LS0tLSAtLS0tLS0tLS0tLS0tLS0tDQorLy8gczAgICAgICAgICAgICAgczAgICAgICAgICAgICAg
IHQwICAgICAgICAgICAgICAgDQorLy8NCisvLw0KKy8vIExldmVsOSBzaGFkZXIgYnl0ZWNvZGU6
DQorLy8NCisgICAgcHNfMl94DQorICAgIGRjbCB0MC54eQ0KKyAgICBkY2xfMmQgczANCisgICAg
dGV4bGQgcjAsIHQwLCBzMA0KKyAgICBtdWwgcjAueHl6LCByMC53LCByMA0KKyAgICBtb3Ygb0Mw
LCByMA0KKw0KKy8vIGFwcHJveGltYXRlbHkgMyBpbnN0cnVjdGlvbiBzbG90cyB1c2VkICgxIHRl
eHR1cmUsIDIgYXJpdGhtZXRpYykNCitwc180XzANCitkY2xfc2FtcGxlciBzMCwgbW9kZV9kZWZh
dWx0DQorZGNsX3Jlc291cmNlX3RleHR1cmUyZCAoZmxvYXQsZmxvYXQsZmxvYXQsZmxvYXQpIHQw
DQorZGNsX2lucHV0X3BzIGxpbmVhciB2MS54eQ0KK2RjbF9vdXRwdXQgbzAueHl6dw0KK2RjbF90
ZW1wcyAxDQorc2FtcGxlIHIwLnh5encsIHYxLnh5eHgsIHQwLnh5encsIHMwDQorbXVsIG8wLnh5
eiwgcjAud3d3dywgcjAueHl6eA0KK21vdiBvMC53LCByMC53DQorcmV0IA0KKy8vIEFwcHJveGlt
YXRlbHkgNCBpbnN0cnVjdGlvbiBzbG90cyB1c2VkDQorI2VuZGlmDQorDQorY29uc3QgQllURSBn
X1BTX1Bhc3N0aHJvdWdoUkdCQVByZW11bHRpcGx5MkRbXSA9IHsNCisgICAgNjgsICA4OCwgIDY2
LCAgNjcsICAxMzksIDI1NCwgODQsICAyNDEsIDIwMiwgMzMsICAxMzIsIDIyMSwgMTIzLCAxOSwg
IDI0MSwgMTgyLCA3NSwgIDE1NSwgMTc3LA0KKyAgICAxMTUsIDEsICAgMCwgICAwLCAgIDAsICAg
OCwgICAzLCAgIDAsICAgMCwgICA2LCAgIDAsICAgMCwgICAwLCAgIDU2LCAgMCwgICAwLCAgIDAs
ICAgMTgwLCAwLA0KKyAgICAwLCAgIDAsICAgODgsICAxLCAgIDAsICAgMCwgICAyMTIsIDEsICAg
MCwgICAwLCAgIDEyNCwgMiwgICAwLCAgIDAsICAgMjEyLCAyLCAgIDAsICAgMCwgICA2NSwNCisg
ICAgMTExLCAxMTAsIDU3LCAgMTE2LCAwLCAgIDAsICAgMCwgICAxMTYsIDAsICAgMCwgICAwLCAg
IDAsICAgMiwgICAyNTUsIDI1NSwgNzYsICAwLCAgIDAsICAgMCwNCisgICAgNDAsICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgNDAsICAwLCAgIDAsICAgMCwgICA0MCwgIDAsICAgMCwgICAwLCAg
IDQwLCAgMCwgICAxLCAgIDAsICAgMzYsDQorICAgIDAsICAgMCwgICAwLCAgIDQwLCAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDEsICAgMiwgICAyNTUsIDI1NSwgMzEsICAwLCAgIDAsICAgMiwg
ICAwLCAgIDAsDQorICAgIDAsICAgMTI4LCAwLCAgIDAsICAgMywgICAxNzYsIDMxLCAgMCwgICAw
LCAgIDIsICAgMCwgICAwLCAgIDAsICAgMTQ0LCAwLCAgIDgsICAgMTUsICAxNjAsIDY2LA0KKyAg
ICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMTUsICAxMjgsIDAsICAgMCwgICAyMjgsIDE3Niwg
MCwgICA4LCAgIDIyOCwgMTYwLCA1LCAgIDAsICAgMCwgICAzLA0KKyAgICAwLCAgIDAsICAgNywg
ICAxMjgsIDAsICAgMCwgICAyNTUsIDEyOCwgMCwgICAwLCAgIDIyOCwgMTI4LCAxLCAgIDAsICAg
MCwgICAyLCAgIDAsICAgOCwgICAxNSwNCisgICAgMTI4LCAwLCAgIDAsICAgMjI4LCAxMjgsIDI1
NSwgMjU1LCAwLCAgIDAsICAgODMsICA3MiwgIDY4LCAgODIsICAxNTYsIDAsICAgMCwgICAwLCAg
IDY0LCAgMCwNCisgICAgMCwgICAwLCAgIDM5LCAgMCwgICAwLCAgIDAsICAgOTAsICAwLCAgIDAs
ICAgMywgICAwLCAgIDk2LCAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgODgsDQorICAg
IDI0LCAgMCwgICA0LCAgIDAsICAgMTEyLCAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA4
NSwgIDg1LCAgMCwgICAwLCAgIDk4LCAgMTYsICAwLCAgIDMsDQorICAgIDUwLCAgMTYsICAxNiwg
IDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAxMDEsIDAsICAgMCwgICAzLCAgIDI0MiwgMzIsICAx
NiwgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMTA0LCAwLCAgIDAsICAgMiwgICAxLCAg
IDAsICAgMCwgICAwLCAgIDY5LCAgMCwgICAwLCAgIDksICAgMjQyLCAwLCAgIDE2LCAgMCwgICAw
LCAgIDAsDQorICAgIDAsICAgMCwgICA3MCwgIDE2LCAgMTYsICAwLCAgIDEsICAgMCwgICAwLCAg
IDAsICAgNzAsICAxMjYsIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDk2
LCAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNTYsICAwLCAgIDAsICAgNywgICAxMTQs
IDMyLCAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDI0NiwgMTUsICAxNiwgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICA3MCwgIDIsICAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgNTQsICAwLCAgIDAsDQorICAgIDUsICAgMTMwLCAzMiwgIDE2LCAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDU4LCAgMCwgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA2Miwg
IDAsDQorICAgIDAsICAgMSwgICA4MywgIDg0LCAgNjUsICA4NCwgIDExNiwgMCwgICAwLCAgIDAs
ICAgNCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAg
MCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDEsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
DQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDgyLCAgNjgsICA2OSwgIDcwLCAg
MTYwLCAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDIsICAgMCwgICAwLCAgIDAsICAgMjgsICAwLCAgIDAsICAgMCwgICAwLCAgIDQsDQor
ICAgIDI1NSwgMjU1LCAwLCAgIDEsICAgMCwgICAwLCAgIDEwOSwgMCwgICAwLCAgIDAsICAgOTIs
ICAwLCAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDEsICAgMCwgICAwLCAgIDAsDQorICAgIDEsICAgMCwgICAwLCAgIDAsICAgMTAwLCAw
LCAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAgIDUsICAgMCwgICAwLCAgIDAsICAgNCwg
ICAwLCAgIDAsDQorICAgIDAsICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAwLCAgIDAsICAgMCwgICAw
LCAgIDEsICAgMCwgICAwLCAgIDAsICAgMTMsICAwLCAgIDAsICAgMCwgICA4MywgIDk3LA0KKyAg
ICAxMDksIDExMiwgMTA4LCAxMDEsIDExNCwgMCwgICA4NCwgIDEwMSwgMTIwLCAxMTYsIDExNywg
MTE0LCAxMDEsIDcwLCAgMCwgICA3NywgIDEwNSwgOTksICAxMTQsDQorICAgIDExMSwgMTE1LCAx
MTEsIDEwMiwgMTE2LCAzMiwgIDQwLCAgODIsICA0MSwgIDMyLCAgNzIsICA3NiwgIDgzLCAgNzYs
ICAzMiwgIDgzLCAgMTA0LCA5NywgIDEwMCwNCisgICAgMTAxLCAxMTQsIDMyLCAgNjcsICAxMTEs
IDEwOSwgMTEyLCAxMDUsIDEwOCwgMTAxLCAxMTQsIDMyLCAgNTQsICA0NiwgIDUxLCAgNDYsICA1
NywgIDU0LCAgNDgsDQorICAgIDQ4LCAgNDYsICA0OSwgIDU0LCAgNTEsICA1NiwgIDUyLCAgMCwg
ICAxNzEsIDczLCAgODMsICA3MSwgIDc4LCAgODAsICAwLCAgIDAsICAgMCwgICAyLCAgIDAsDQor
ICAgIDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCAgIDU2LCAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDMsDQorICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMTUsICAwLCAgIDAsICAgMCwgICA2OCwgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMywgICAw
LCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMywgICAwLCAgIDAsICAgODMs
ICA4NiwgIDk1LA0KKyAgICA4MCwgIDc5LCAgODMsICA3MywgIDg0LCAgNzMsICA3OSwgIDc4LCAg
MCwgICA4NCwgIDY5LCAgODgsICA2NywgIDc5LCAgNzksICA4MiwgIDY4LCAgMCwgICAxNzEsDQor
ICAgIDE3MSwgMTcxLCA3OSwgIDgzLCAgNzEsICA3OCwgIDQ0LCAgMCwgICAwLCAgIDAsICAgMSwg
ICAwLCAgIDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCAgIDMyLA0KKyAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLA0KKyAgICAxNSwgIDAsICAgMCwgICAwLCAgIDgzLCAg
ODYsICA5NSwgIDg0LCAgNjUsICA4MiwgIDcxLCAgNjksICA4NCwgIDAsICAgMTcxLCAxNzF9Ow0K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYmF1bm11bHRpcGx5MmQxMXBzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiYXVubXVsdGlwbHky
ZDExcHMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2Jh
dW5tdWx0aXBseTJkMTFwcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEwIEBACisjaWYg
MA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGls
ZXIgNi4zLjk2MDAuMTYzODQNCisvLw0KKy8vDQorLy8gUmVzb3VyY2UgQmluZGluZ3M6DQorLy8N
CisvLyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgRm9ybWF0ICAg
ICAgICAgRGltIFNsb3QgRWxlbWVudHMNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0tLS0tLS0NCisvLyBTYW1w
bGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlciAgICAgIE5BICAgICAgICAgIE5B
ICAgIDAgICAgICAgIDENCisvLyBUZXh0dXJlRiAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4
dHVyZSAgZmxvYXQ0ICAgICAgICAgIDJkICAgIDAgICAgICAgIDENCisvLw0KKy8vDQorLy8NCisv
LyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAg
IE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisv
LyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1MgICBm
bG9hdCAgICAgICANCisvLyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5ICAgICAgICAg
IDEgICAgIE5PTkUgICBmbG9hdCAgIHh5ICANCisvLw0KKy8vDQorLy8gT3V0cHV0IHNpZ25hdHVy
ZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBT
eXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0t
LS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1RBUkdFVCAgICAg
ICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgIGZsb2F0ICAgeHl6dw0KKy8v
DQorLy8NCisvLyBTYW1wbGVyL1Jlc291cmNlIHRvIERYOSBzaGFkZXIgc2FtcGxlciBtYXBwaW5n
czoNCisvLw0KKy8vIFRhcmdldCBTYW1wbGVyIFNvdXJjZSBTYW1wbGVyICBTb3VyY2UgUmVzb3Vy
Y2UNCisvLyAtLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLQ0K
Ky8vIHMwICAgICAgICAgICAgIHMwICAgICAgICAgICAgICB0MCAgICAgICAgICAgICAgIA0KKy8v
DQorLy8NCisvLyBMZXZlbDkgc2hhZGVyIGJ5dGVjb2RlOg0KKy8vDQorICAgIHBzXzJfeA0KKyAg
ICBkY2wgdDAueHkNCisgICAgZGNsXzJkIHMwDQorICAgIHRleGxkIHIwLCB0MCwgczANCisgICAg
cmNwIHIxLncsIHIwLncNCisgICAgbXVsIHIxLnh5eiwgcjAsIHIxLncNCisgICAgY21wIHIwLnh5
eiwgLXIwLncsIHIwLCByMQ0KKyAgICBtb3Ygb0MwLCByMA0KKw0KKy8vIGFwcHJveGltYXRlbHkg
NSBpbnN0cnVjdGlvbiBzbG90cyB1c2VkICgxIHRleHR1cmUsIDQgYXJpdGhtZXRpYykNCitwc180
XzANCitkY2xfc2FtcGxlciBzMCwgbW9kZV9kZWZhdWx0DQorZGNsX3Jlc291cmNlX3RleHR1cmUy
ZCAoZmxvYXQsZmxvYXQsZmxvYXQsZmxvYXQpIHQwDQorZGNsX2lucHV0X3BzIGxpbmVhciB2MS54
eQ0KK2RjbF9vdXRwdXQgbzAueHl6dw0KK2RjbF90ZW1wcyAyDQorc2FtcGxlIHIwLnh5encsIHYx
Lnh5eHgsIHQwLnh5encsIHMwDQorbHQgcjEueCwgbCgwLjAwMDAwMCksIHIwLncNCitkaXYgcjEu
eXp3LCByMC54eHl6LCByMC53d3d3DQorbW92YyBvMC54eXosIHIxLnh4eHgsIHIxLnl6d3ksIHIw
Lnh5engNCittb3YgbzAudywgcjAudw0KK3JldCANCisvLyBBcHByb3hpbWF0ZWx5IDYgaW5zdHJ1
Y3Rpb24gc2xvdHMgdXNlZA0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUgZ19QU19QYXNzdGhyb3Vn
aFJHQkFVbm11bHRpcGx5MkRbXSA9IHsNCisgICAgNjgsICA4OCwgIDY2LCAgNjcsICAxODAsIDg3
LCAgNDMsICAxMTEsIDI1NSwgMTM1LCAyOCwgIDIyNCwgNDIsICA4NSwgIDE5NywgMTYsICAxNywg
IDE3MiwgMTc2LA0KKyAgICA3MCwgIDEsICAgMCwgICAwLCAgIDAsICAgMTA0LCAzLCAgIDAsICAg
MCwgICA2LCAgIDAsICAgMCwgICAwLCAgIDU2LCAgMCwgICAwLCAgIDAsICAgMjEyLCAwLA0KKyAg
ICAwLCAgIDAsICAgMTg0LCAxLCAgIDAsICAgMCwgICA1MiwgIDIsICAgMCwgICAwLCAgIDIyMCwg
MiwgICAwLCAgIDAsICAgNTIsICAzLCAgIDAsICAgMCwgICA2NSwNCisgICAgMTExLCAxMTAsIDU3
LCAgMTQ4LCAwLCAgIDAsICAgMCwgICAxNDgsIDAsICAgMCwgICAwLCAgIDAsICAgMiwgICAyNTUs
IDI1NSwgMTA4LCAwLCAgIDAsICAgMCwNCisgICAgNDAsICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgNDAsICAwLCAgIDAsICAgMCwgICA0MCwgIDAsICAgMCwgICAwLCAgIDQwLCAgMCwgICAxLCAg
IDAsICAgMzYsDQorICAgIDAsICAgMCwgICAwLCAgIDQwLCAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDEsICAgMiwgICAyNTUsIDI1NSwgMzEsICAwLCAgIDAsICAgMiwgICAwLCAgIDAsDQorICAg
IDAsICAgMTI4LCAwLCAgIDAsICAgMywgICAxNzYsIDMxLCAgMCwgICAwLCAgIDIsICAgMCwgICAw
LCAgIDAsICAgMTQ0LCAwLCAgIDgsICAgMTUsICAxNjAsIDY2LA0KKyAgICAwLCAgIDAsICAgMywg
ICAwLCAgIDAsICAgMTUsICAxMjgsIDAsICAgMCwgICAyMjgsIDE3NiwgMCwgICA4LCAgIDIyOCwg
MTYwLCA2LCAgIDAsICAgMCwgICAyLA0KKyAgICAxLCAgIDAsICAgOCwgICAxMjgsIDAsICAgMCwg
ICAyNTUsIDEyOCwgNSwgICAwLCAgIDAsICAgMywgICAxLCAgIDAsICAgNywgICAxMjgsIDAsICAg
MCwgICAyMjgsDQorICAgIDEyOCwgMSwgICAwLCAgIDI1NSwgMTI4LCA4OCwgIDAsICAgMCwgICA0
LCAgIDAsICAgMCwgICA3LCAgIDEyOCwgMCwgICAwLCAgIDI1NSwgMTI5LCAwLCAgIDAsDQorICAg
IDIyOCwgMTI4LCAxLCAgIDAsICAgMjI4LCAxMjgsIDEsICAgMCwgICAwLCAgIDIsICAgMCwgICA4
LCAgIDE1LCAgMTI4LCAwLCAgIDAsICAgMjI4LCAxMjgsIDI1NSwNCisgICAgMjU1LCAwLCAgIDAs
ICAgODMsICA3MiwgIDY4LCAgODIsICAyMjAsIDAsICAgMCwgICAwLCAgIDY0LCAgMCwgICAwLCAg
IDAsICAgNTUsICAwLCAgIDAsICAgMCwNCisgICAgOTAsICAwLCAgIDAsICAgMywgICAwLCAgIDk2
LCAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgODgsICAyNCwgIDAsICAgNCwgICAwLCAg
IDExMiwgMTYsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA4NSwgIDg1LCAgMCwgICAw
LCAgIDk4LCAgMTYsICAwLCAgIDMsICAgNTAsICAxNiwgIDE2LCAgMCwgICAxLCAgIDAsDQorICAg
IDAsICAgMCwgICAxMDEsIDAsICAgMCwgICAzLCAgIDI0MiwgMzIsICAxNiwgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAxMDQsIDAsICAgMCwgICAyLCAgIDIsDQorICAgIDAsICAgMCwgICAwLCAg
IDY5LCAgMCwgICAwLCAgIDksICAgMjQyLCAwLCAgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDcwLCAgMTYsICAxNiwgIDAsDQorICAgIDEsICAgMCwgICAwLCAgIDAsICAgNzAsICAxMjYs
IDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgOTYsICAxNiwgIDAsICAgMCwgICAw
LCAgIDAsDQorICAgIDAsICAgNDksICAwLCAgIDAsICAgNywgICAxOCwgIDAsICAgMTYsICAwLCAg
IDEsICAgMCwgICAwLCAgIDAsICAgMSwgICA2NCwgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAs
ICAgMCwgICA1OCwgIDAsICAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMTQsICAwLCAg
IDAsICAgNywgICAyMjYsIDAsICAgMTYsICAwLCAgIDEsDQorICAgIDAsICAgMCwgICAwLCAgIDYs
ICAgOSwgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAyNDYsIDE1LCAgMTYsICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsDQorICAgIDU1LCAgMCwgICAwLCAgIDksICAgMTE0LCAzMiwgIDE2
LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDYsICAgMCwgICAxNiwgIDAsICAgMSwgICAwLCAg
IDAsDQorICAgIDAsICAgMTUwLCA3LCAgIDE2LCAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDcw
LCAgMiwgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA1NCwgIDAsDQorICAgIDAsICAg
NSwgICAxMzAsIDMyLCAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNTgsICAwLCAgIDE2
LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDYyLA0KKyAgICAwLCAgIDAsICAgMSwgICA4Mywg
IDg0LCAgNjUsICA4NCwgIDExNiwgMCwgICAwLCAgIDAsICAgNiwgICAwLCAgIDAsICAgMCwgICAy
LCAgIDAsICAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAg
IDAsICAgMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LA0KKyAgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLA0KKyAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAxLCAg
IDAsICAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLA0K
KyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDgyLCAgNjgsICA2OSwgIDcwLCAgMTYwLCAwLA0KKyAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAs
ICAgMjgsICAwLCAgIDAsICAgMCwgICAwLA0KKyAgICA0LCAgIDI1NSwgMjU1LCAwLCAgIDEsICAg
MCwgICAwLCAgIDEwOSwgMCwgICAwLCAgIDAsICAgOTIsICAwLCAgIDAsICAgMCwgICAzLCAgIDAs
ICAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLA0KKyAg
ICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMTAwLCAwLCAgIDAsICAgMCwgICAyLCAgIDAsICAg
MCwgICAwLCAgIDUsICAgMCwgICAwLCAgIDAsICAgNCwgICAwLA0KKyAgICAwLCAgIDAsICAgMjU1
LCAyNTUsIDI1NSwgMjU1LCAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAg
MTMsICAwLCAgIDAsICAgMCwgICA4MywNCisgICAgOTcsICAxMDksIDExMiwgMTA4LCAxMDEsIDEx
NCwgMCwgICA4NCwgIDEwMSwgMTIwLCAxMTYsIDExNywgMTE0LCAxMDEsIDcwLCAgMCwgICA3Nywg
IDEwNSwgOTksDQorICAgIDExNCwgMTExLCAxMTUsIDExMSwgMTAyLCAxMTYsIDMyLCAgNDAsICA4
MiwgIDQxLCAgMzIsICA3MiwgIDc2LCAgODMsICA3NiwgIDMyLCAgODMsICAxMDQsIDk3LA0KKyAg
ICAxMDAsIDEwMSwgMTE0LCAzMiwgIDY3LCAgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwg
MTE0LCAzMiwgIDU0LCAgNDYsICA1MSwgIDQ2LCAgNTcsICA1NCwNCisgICAgNDgsICA0OCwgIDQ2
LCAgNDksICA1NCwgIDUxLCAgNTYsICA1MiwgIDAsICAgMTcxLCA3MywgIDgzLCAgNzEsICA3OCwg
IDgwLCAgMCwgICAwLCAgIDAsICAgMiwNCisgICAgMCwgICAwLCAgIDAsICAgOCwgICAwLCAgIDAs
ICAgMCwgICA1NiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAg
IDAsICAgMCwNCisgICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDE1
LCAgMCwgICAwLCAgIDAsICAgNjgsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwNCisgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAs
ICAgMCwgICAzLCAgIDMsICAgMCwgICAwLCAgIDgzLCAgODYsDQorICAgIDk1LCAgODAsICA3OSwg
IDgzLCAgNzMsICA4NCwgIDczLCAgNzksICA3OCwgIDAsICAgODQsICA2OSwgIDg4LCAgNjcsICA3
OSwgIDc5LCAgODIsICA2OCwgIDAsDQorICAgIDE3MSwgMTcxLCAxNzEsIDc5LCAgODMsICA3MSwg
IDc4LCAgNDQsICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgICAw
LCAgIDAsDQorICAgIDMyLCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAs
ICAgMTUsICAwLCAgIDAsICAgMCwgICA4MywgIDg2LCAgOTUsICA4NCwgIDY1LCAgODIsICA3MSwg
IDY5LCAgODQsICAwLCAgIDE3MSwgMTcxfTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Ro
cm91Z2hyZ2JwcmVtdWx0aXBseTJkMTFwcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxl
ZC9wYXNzdGhyb3VnaHJnYnByZW11bHRpcGx5MmQxMXBzLmgJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFk
ZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdicHJlbXVsdGlwbHkyZDExcHMuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEwMSBAQAorI2lmIDANCisvLw0KKy8vIEdlbmVyYXRlZCBieSBNaWNy
b3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDYuMy45NjAwLjE2Mzg0DQorLy8NCisvLw0K
Ky8vIFJlc291cmNlIEJpbmRpbmdzOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFR5cGUgIEZvcm1hdCAgICAgICAgIERpbSBTbG90IEVsZW1lbnRzDQorLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0t
LS0tLSAtLS0tIC0tLS0tLS0tDQorLy8gU2FtcGxlciAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNhbXBsZXIgICAgICBOQSAgICAgICAgICBOQSAgICAwICAgICAgICAxDQorLy8gVGV4dHVyZUYg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUgIGZsb2F0NCAgICAgICAgICAyZCAgICAw
ICAgICAgICAxDQorLy8NCisvLw0KKy8vDQorLy8gSW5wdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8g
TmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3Jt
YXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0t
IC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQorLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAg
ICB4eXp3ICAgICAgICAwICAgICAgUE9TICAgZmxvYXQgICAgICAgDQorLy8gVEVYQ09PUkQgICAg
ICAgICAgICAgICAgIDAgICB4eSAgICAgICAgICAxICAgICBOT05FICAgZmxvYXQgICB4eSAgDQor
Ly8NCisvLw0KKy8vIE91dHB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAg
ICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0t
LSAtLS0tLS0NCisvLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAg
ICBUQVJHRVQgICBmbG9hdCAgIHh5encNCisvLw0KKy8vDQorLy8gU2FtcGxlci9SZXNvdXJjZSB0
byBEWDkgc2hhZGVyIHNhbXBsZXIgbWFwcGluZ3M6DQorLy8NCisvLyBUYXJnZXQgU2FtcGxlciBT
b3VyY2UgU2FtcGxlciAgU291cmNlIFJlc291cmNlDQorLy8gLS0tLS0tLS0tLS0tLS0gLS0tLS0t
LS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0NCisvLyBzMCAgICAgICAgICAgICBzMCAgICAgICAg
ICAgICAgdDAgICAgICAgICAgICAgICANCisvLw0KKy8vDQorLy8gTGV2ZWw5IHNoYWRlciBieXRl
Y29kZToNCisvLw0KKyAgICBwc18yX3gNCisgICAgZGNsIHQwLnh5DQorICAgIGRjbF8yZCBzMA0K
KyAgICB0ZXhsZCByMCwgdDAsIHMwDQorICAgIG11bCByMC54eXosIHIwLncsIHIwDQorICAgIG1v
diBvQzAsIHIwDQorDQorLy8gYXBwcm94aW1hdGVseSAzIGluc3RydWN0aW9uIHNsb3RzIHVzZWQg
KDEgdGV4dHVyZSwgMiBhcml0aG1ldGljKQ0KK3BzXzRfMA0KK2RjbF9zYW1wbGVyIHMwLCBtb2Rl
X2RlZmF1bHQNCitkY2xfcmVzb3VyY2VfdGV4dHVyZTJkIChmbG9hdCxmbG9hdCxmbG9hdCxmbG9h
dCkgdDANCitkY2xfaW5wdXRfcHMgbGluZWFyIHYxLnh5DQorZGNsX291dHB1dCBvMC54eXp3DQor
ZGNsX3RlbXBzIDENCitzYW1wbGUgcjAueHl6dywgdjEueHl4eCwgdDAueHl6dywgczANCittdWwg
bzAueHl6LCByMC53d3d3LCByMC54eXp4DQorbW92IG8wLncsIHIwLncNCityZXQgDQorLy8gQXBw
cm94aW1hdGVseSA0IGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisjZW5kaWYNCisNCitjb25zdCBC
WVRFIGdfUFNfUGFzc3Rocm91Z2hSR0JQcmVtdWx0aXBseTJEW10gPSB7DQorICAgIDY4LCAgODgs
ICA2NiwgIDY3LCAgMTM5LCAyNTQsIDg0LCAgMjQxLCAyMDIsIDMzLCAgMTMyLCAyMjEsIDEyMywg
MTksICAyNDEsIDE4MiwgNzUsICAxNTUsIDE3NywNCisgICAgMTE1LCAxLCAgIDAsICAgMCwgICAw
LCAgIDgsICAgMywgICAwLCAgIDAsICAgNiwgICAwLCAgIDAsICAgMCwgICA1NiwgIDAsICAgMCwg
ICAwLCAgIDE4MCwgMCwNCisgICAgMCwgICAwLCAgIDg4LCAgMSwgICAwLCAgIDAsICAgMjEyLCAx
LCAgIDAsICAgMCwgICAxMjQsIDIsICAgMCwgICAwLCAgIDIxMiwgMiwgICAwLCAgIDAsICAgNjUs
DQorICAgIDExMSwgMTEwLCA1NywgIDExNiwgMCwgICAwLCAgIDAsICAgMTE2LCAwLCAgIDAsICAg
MCwgICAwLCAgIDIsICAgMjU1LCAyNTUsIDc2LCAgMCwgICAwLCAgIDAsDQorICAgIDQwLCAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDQwLCAgMCwgICAwLCAgIDAsICAgNDAsICAwLCAgIDAsICAg
MCwgICA0MCwgIDAsICAgMSwgICAwLCAgIDM2LA0KKyAgICAwLCAgIDAsICAgMCwgICA0MCwgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDIsICAgMjU1LCAyNTUsIDMxLCAgMCwgICAwLCAg
IDIsICAgMCwgICAwLA0KKyAgICAwLCAgIDEyOCwgMCwgICAwLCAgIDMsICAgMTc2LCAzMSwgIDAs
ICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAgIDE0NCwgMCwgICA4LCAgIDE1LCAgMTYwLCA2NiwN
CisgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDE1LCAgMTI4LCAwLCAgIDAsICAgMjI4LCAx
NzYsIDAsICAgOCwgICAyMjgsIDE2MCwgNSwgICAwLCAgIDAsICAgMywNCisgICAgMCwgICAwLCAg
IDcsICAgMTI4LCAwLCAgIDAsICAgMjU1LCAxMjgsIDAsICAgMCwgICAyMjgsIDEyOCwgMSwgICAw
LCAgIDAsICAgMiwgICAwLCAgIDgsICAgMTUsDQorICAgIDEyOCwgMCwgICAwLCAgIDIyOCwgMTI4
LCAyNTUsIDI1NSwgMCwgICAwLCAgIDgzLCAgNzIsICA2OCwgIDgyLCAgMTU2LCAwLCAgIDAsICAg
MCwgICA2NCwgIDAsDQorICAgIDAsICAgMCwgICAzOSwgIDAsICAgMCwgICAwLCAgIDkwLCAgMCwg
ICAwLCAgIDMsICAgMCwgICA5NiwgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDg4LA0K
KyAgICAyNCwgIDAsICAgNCwgICAwLCAgIDExMiwgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgODUsICA4NSwgIDAsICAgMCwgICA5OCwgIDE2LCAgMCwgICAzLA0KKyAgICA1MCwgIDE2LCAg
MTYsICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMTAxLCAwLCAgIDAsICAgMywgICAyNDIsIDMy
LCAgMTYsICAwLCAgIDAsICAgMCwgICAwLA0KKyAgICAwLCAgIDEwNCwgMCwgICAwLCAgIDIsICAg
MSwgICAwLCAgIDAsICAgMCwgICA2OSwgIDAsICAgMCwgICA5LCAgIDI0MiwgMCwgICAxNiwgIDAs
ICAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgNzAsICAxNiwgIDE2LCAgMCwgICAxLCAgIDAsICAg
MCwgICAwLCAgIDcwLCAgMTI2LCAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLA0KKyAg
ICA5NiwgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDU2LCAgMCwgICAwLCAgIDcsICAg
MTE0LCAzMiwgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLA0KKyAgICAyNDYsIDE1LCAgMTYs
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNzAsICAyLCAgIDE2LCAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDU0LCAgMCwgICAwLA0KKyAgICA1LCAgIDEzMCwgMzIsICAxNiwgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICA1OCwgIDAsICAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
NjIsICAwLA0KKyAgICAwLCAgIDEsICAgODMsICA4NCwgIDY1LCAgODQsICAxMTYsIDAsICAgMCwg
ICAwLCAgIDQsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAwLA0KKyAgICAw
LCAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLA0KKyAgICAxLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLA0KKyAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA4MiwgIDY4LCAgNjksICA3
MCwgIDE2MCwgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAgIDI4LCAgMCwgICAwLCAgIDAsICAgMCwgICA0
LA0KKyAgICAyNTUsIDI1NSwgMCwgICAxLCAgIDAsICAgMCwgICAxMDksIDAsICAgMCwgICAwLCAg
IDkyLCAgMCwgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgICAwLA0KKyAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLA0KKyAgICAxLCAgIDAsICAgMCwgICAwLCAgIDEw
MCwgMCwgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgICA1LCAgIDAsICAgMCwgICAwLCAg
IDQsICAgMCwgICAwLA0KKyAgICAwLCAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCwgICAwLCAgIDAs
ICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDEzLCAgMCwgICAwLCAgIDAsICAgODMsICA5NywN
CisgICAgMTA5LCAxMTIsIDEwOCwgMTAxLCAxMTQsIDAsICAgODQsICAxMDEsIDEyMCwgMTE2LCAx
MTcsIDExNCwgMTAxLCA3MCwgIDAsICAgNzcsICAxMDUsIDk5LCAgMTE0LA0KKyAgICAxMTEsIDEx
NSwgMTExLCAxMDIsIDExNiwgMzIsICA0MCwgIDgyLCAgNDEsICAzMiwgIDcyLCAgNzYsICA4Mywg
IDc2LCAgMzIsICA4MywgIDEwNCwgOTcsICAxMDAsDQorICAgIDEwMSwgMTE0LCAzMiwgIDY3LCAg
MTExLCAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwgMTE0LCAzMiwgIDU0LCAgNDYsICA1MSwgIDQ2
LCAgNTcsICA1NCwgIDQ4LA0KKyAgICA0OCwgIDQ2LCAgNDksICA1NCwgIDUxLCAgNTYsICA1Miwg
IDAsICAgMTcxLCA3MywgIDgzLCAgNzEsICA3OCwgIDgwLCAgMCwgICAwLCAgIDAsICAgMiwgICAw
LA0KKyAgICAwLCAgIDAsICAgOCwgICAwLCAgIDAsICAgMCwgICA1NiwgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAzLA0KKyAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDE1LCAgMCwgICAwLCAgIDAsICAgNjgsICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDMs
ICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAzLCAgIDMsICAgMCwgICAwLCAg
IDgzLCAgODYsICA5NSwNCisgICAgODAsICA3OSwgIDgzLCAgNzMsICA4NCwgIDczLCAgNzksICA3
OCwgIDAsICAgODQsICA2OSwgIDg4LCAgNjcsICA3OSwgIDc5LCAgODIsICA2OCwgIDAsICAgMTcx
LA0KKyAgICAxNzEsIDE3MSwgNzksICA4MywgIDcxLCAgNzgsICA0NCwgIDAsICAgMCwgICAwLCAg
IDEsICAgMCwgICAwLCAgIDAsICAgOCwgICAwLCAgIDAsICAgMCwgICAzMiwNCisgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwNCisgICAgMTUsICAwLCAgIDAsICAgMCwgICA4
MywgIDg2LCAgOTUsICA4NCwgIDY1LCAgODIsICA3MSwgIDY5LCAgODQsICAwLCAgIDE3MSwgMTcx
fTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2J1bm11bHRpcGx5MmQxMXBz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdidW5tdWx0aXBs
eTJkMTFwcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJn
YnVubXVsdGlwbHkyZDExcHMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExMCBAQAorI2lm
IDANCisvLw0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBp
bGVyIDYuMy45NjAwLjE2Mzg0DQorLy8NCisvLw0KKy8vIFJlc291cmNlIEJpbmRpbmdzOg0KKy8v
DQorLy8gTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgIEZvcm1hdCAg
ICAgICAgIERpbSBTbG90IEVsZW1lbnRzDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIC0tLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0tLS0tLSAtLS0tIC0tLS0tLS0tDQorLy8gU2Ft
cGxlciAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXIgICAgICBOQSAgICAgICAgICBO
QSAgICAwICAgICAgICAxDQorLy8gVGV4dHVyZUYgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
eHR1cmUgIGZsb2F0NCAgICAgICAgICAyZCAgICAwICAgICAgICAxDQorLy8NCisvLw0KKy8vDQor
Ly8gSW5wdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXgg
ICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQor
Ly8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgICAgUE9TICAg
ZmxvYXQgICAgICAgDQorLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4eSAgICAgICAg
ICAxICAgICBOT05FICAgZmxvYXQgICB4eSAgDQorLy8NCisvLw0KKy8vIE91dHB1dCBzaWduYXR1
cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIg
U3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAt
LS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9UQVJHRVQgICAg
ICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICBUQVJHRVQgICBmbG9hdCAgIHh5encNCisv
Lw0KKy8vDQorLy8gU2FtcGxlci9SZXNvdXJjZSB0byBEWDkgc2hhZGVyIHNhbXBsZXIgbWFwcGlu
Z3M6DQorLy8NCisvLyBUYXJnZXQgU2FtcGxlciBTb3VyY2UgU2FtcGxlciAgU291cmNlIFJlc291
cmNlDQorLy8gLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0N
CisvLyBzMCAgICAgICAgICAgICBzMCAgICAgICAgICAgICAgdDAgICAgICAgICAgICAgICANCisv
Lw0KKy8vDQorLy8gTGV2ZWw5IHNoYWRlciBieXRlY29kZToNCisvLw0KKyAgICBwc18yX3gNCisg
ICAgZGNsIHQwLnh5DQorICAgIGRjbF8yZCBzMA0KKyAgICB0ZXhsZCByMCwgdDAsIHMwDQorICAg
IHJjcCByMS53LCByMC53DQorICAgIG11bCByMS54eXosIHIwLCByMS53DQorICAgIGNtcCByMC54
eXosIC1yMC53LCByMCwgcjENCisgICAgbW92IG9DMCwgcjANCisNCisvLyBhcHByb3hpbWF0ZWx5
IDUgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZCAoMSB0ZXh0dXJlLCA0IGFyaXRobWV0aWMpDQorcHNf
NF8wDQorZGNsX3NhbXBsZXIgczAsIG1vZGVfZGVmYXVsdA0KK2RjbF9yZXNvdXJjZV90ZXh0dXJl
MmQgKGZsb2F0LGZsb2F0LGZsb2F0LGZsb2F0KSB0MA0KK2RjbF9pbnB1dF9wcyBsaW5lYXIgdjEu
eHkNCitkY2xfb3V0cHV0IG8wLnh5encNCitkY2xfdGVtcHMgMg0KK3NhbXBsZSByMC54eXp3LCB2
MS54eXh4LCB0MC54eXp3LCBzMA0KK2x0IHIxLngsIGwoMC4wMDAwMDApLCByMC53DQorZGl2IHIx
Lnl6dywgcjAueHh5eiwgcjAud3d3dw0KK21vdmMgbzAueHl6LCByMS54eHh4LCByMS55end5LCBy
MC54eXp4DQorbW92IG8wLncsIHIwLncNCityZXQgDQorLy8gQXBwcm94aW1hdGVseSA2IGluc3Ry
dWN0aW9uIHNsb3RzIHVzZWQNCisjZW5kaWYNCisNCitjb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91
Z2hSR0JVbm11bHRpcGx5MkRbXSA9IHsNCisgICAgNjgsICA4OCwgIDY2LCAgNjcsICAxODAsIDg3
LCAgNDMsICAxMTEsIDI1NSwgMTM1LCAyOCwgIDIyNCwgNDIsICA4NSwgIDE5NywgMTYsICAxNywg
IDE3MiwgMTc2LA0KKyAgICA3MCwgIDEsICAgMCwgICAwLCAgIDAsICAgMTA0LCAzLCAgIDAsICAg
MCwgICA2LCAgIDAsICAgMCwgICAwLCAgIDU2LCAgMCwgICAwLCAgIDAsICAgMjEyLCAwLA0KKyAg
ICAwLCAgIDAsICAgMTg0LCAxLCAgIDAsICAgMCwgICA1MiwgIDIsICAgMCwgICAwLCAgIDIyMCwg
MiwgICAwLCAgIDAsICAgNTIsICAzLCAgIDAsICAgMCwgICA2NSwNCisgICAgMTExLCAxMTAsIDU3
LCAgMTQ4LCAwLCAgIDAsICAgMCwgICAxNDgsIDAsICAgMCwgICAwLCAgIDAsICAgMiwgICAyNTUs
IDI1NSwgMTA4LCAwLCAgIDAsICAgMCwNCisgICAgNDAsICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgNDAsICAwLCAgIDAsICAgMCwgICA0MCwgIDAsICAgMCwgICAwLCAgIDQwLCAgMCwgICAxLCAg
IDAsICAgMzYsDQorICAgIDAsICAgMCwgICAwLCAgIDQwLCAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDEsICAgMiwgICAyNTUsIDI1NSwgMzEsICAwLCAgIDAsICAgMiwgICAwLCAgIDAsDQorICAg
IDAsICAgMTI4LCAwLCAgIDAsICAgMywgICAxNzYsIDMxLCAgMCwgICAwLCAgIDIsICAgMCwgICAw
LCAgIDAsICAgMTQ0LCAwLCAgIDgsICAgMTUsICAxNjAsIDY2LA0KKyAgICAwLCAgIDAsICAgMywg
ICAwLCAgIDAsICAgMTUsICAxMjgsIDAsICAgMCwgICAyMjgsIDE3NiwgMCwgICA4LCAgIDIyOCwg
MTYwLCA2LCAgIDAsICAgMCwgICAyLA0KKyAgICAxLCAgIDAsICAgOCwgICAxMjgsIDAsICAgMCwg
ICAyNTUsIDEyOCwgNSwgICAwLCAgIDAsICAgMywgICAxLCAgIDAsICAgNywgICAxMjgsIDAsICAg
MCwgICAyMjgsDQorICAgIDEyOCwgMSwgICAwLCAgIDI1NSwgMTI4LCA4OCwgIDAsICAgMCwgICA0
LCAgIDAsICAgMCwgICA3LCAgIDEyOCwgMCwgICAwLCAgIDI1NSwgMTI5LCAwLCAgIDAsDQorICAg
IDIyOCwgMTI4LCAxLCAgIDAsICAgMjI4LCAxMjgsIDEsICAgMCwgICAwLCAgIDIsICAgMCwgICA4
LCAgIDE1LCAgMTI4LCAwLCAgIDAsICAgMjI4LCAxMjgsIDI1NSwNCisgICAgMjU1LCAwLCAgIDAs
ICAgODMsICA3MiwgIDY4LCAgODIsICAyMjAsIDAsICAgMCwgICAwLCAgIDY0LCAgMCwgICAwLCAg
IDAsICAgNTUsICAwLCAgIDAsICAgMCwNCisgICAgOTAsICAwLCAgIDAsICAgMywgICAwLCAgIDk2
LCAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgODgsICAyNCwgIDAsICAgNCwgICAwLCAg
IDExMiwgMTYsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA4NSwgIDg1LCAgMCwgICAw
LCAgIDk4LCAgMTYsICAwLCAgIDMsICAgNTAsICAxNiwgIDE2LCAgMCwgICAxLCAgIDAsDQorICAg
IDAsICAgMCwgICAxMDEsIDAsICAgMCwgICAzLCAgIDI0MiwgMzIsICAxNiwgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAxMDQsIDAsICAgMCwgICAyLCAgIDIsDQorICAgIDAsICAgMCwgICAwLCAg
IDY5LCAgMCwgICAwLCAgIDksICAgMjQyLCAwLCAgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDcwLCAgMTYsICAxNiwgIDAsDQorICAgIDEsICAgMCwgICAwLCAgIDAsICAgNzAsICAxMjYs
IDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgOTYsICAxNiwgIDAsICAgMCwgICAw
LCAgIDAsDQorICAgIDAsICAgNDksICAwLCAgIDAsICAgNywgICAxOCwgIDAsICAgMTYsICAwLCAg
IDEsICAgMCwgICAwLCAgIDAsICAgMSwgICA2NCwgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAs
ICAgMCwgICA1OCwgIDAsICAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMTQsICAwLCAg
IDAsICAgNywgICAyMjYsIDAsICAgMTYsICAwLCAgIDEsDQorICAgIDAsICAgMCwgICAwLCAgIDYs
ICAgOSwgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAyNDYsIDE1LCAgMTYsICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsDQorICAgIDU1LCAgMCwgICAwLCAgIDksICAgMTE0LCAzMiwgIDE2
LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDYsICAgMCwgICAxNiwgIDAsICAgMSwgICAwLCAg
IDAsDQorICAgIDAsICAgMTUwLCA3LCAgIDE2LCAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDcw
LCAgMiwgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA1NCwgIDAsDQorICAgIDAsICAg
NSwgICAxMzAsIDMyLCAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNTgsICAwLCAgIDE2
LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDYyLA0KKyAgICAwLCAgIDAsICAgMSwgICA4Mywg
IDg0LCAgNjUsICA4NCwgIDExNiwgMCwgICAwLCAgIDAsICAgNiwgICAwLCAgIDAsICAgMCwgICAy
LCAgIDAsICAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAg
IDAsICAgMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LA0KKyAgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLA0KKyAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAxLCAg
IDAsICAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLA0K
KyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDgyLCAgNjgsICA2OSwgIDcwLCAgMTYwLCAwLA0KKyAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAs
ICAgMjgsICAwLCAgIDAsICAgMCwgICAwLA0KKyAgICA0LCAgIDI1NSwgMjU1LCAwLCAgIDEsICAg
MCwgICAwLCAgIDEwOSwgMCwgICAwLCAgIDAsICAgOTIsICAwLCAgIDAsICAgMCwgICAzLCAgIDAs
ICAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLA0KKyAg
ICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMTAwLCAwLCAgIDAsICAgMCwgICAyLCAgIDAsICAg
MCwgICAwLCAgIDUsICAgMCwgICAwLCAgIDAsICAgNCwgICAwLA0KKyAgICAwLCAgIDAsICAgMjU1
LCAyNTUsIDI1NSwgMjU1LCAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAg
MTMsICAwLCAgIDAsICAgMCwgICA4MywNCisgICAgOTcsICAxMDksIDExMiwgMTA4LCAxMDEsIDEx
NCwgMCwgICA4NCwgIDEwMSwgMTIwLCAxMTYsIDExNywgMTE0LCAxMDEsIDcwLCAgMCwgICA3Nywg
IDEwNSwgOTksDQorICAgIDExNCwgMTExLCAxMTUsIDExMSwgMTAyLCAxMTYsIDMyLCAgNDAsICA4
MiwgIDQxLCAgMzIsICA3MiwgIDc2LCAgODMsICA3NiwgIDMyLCAgODMsICAxMDQsIDk3LA0KKyAg
ICAxMDAsIDEwMSwgMTE0LCAzMiwgIDY3LCAgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwg
MTE0LCAzMiwgIDU0LCAgNDYsICA1MSwgIDQ2LCAgNTcsICA1NCwNCisgICAgNDgsICA0OCwgIDQ2
LCAgNDksICA1NCwgIDUxLCAgNTYsICA1MiwgIDAsICAgMTcxLCA3MywgIDgzLCAgNzEsICA3OCwg
IDgwLCAgMCwgICAwLCAgIDAsICAgMiwNCisgICAgMCwgICAwLCAgIDAsICAgOCwgICAwLCAgIDAs
ICAgMCwgICA1NiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAg
IDAsICAgMCwNCisgICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDE1
LCAgMCwgICAwLCAgIDAsICAgNjgsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwNCisgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAs
ICAgMCwgICAzLCAgIDMsICAgMCwgICAwLCAgIDgzLCAgODYsDQorICAgIDk1LCAgODAsICA3OSwg
IDgzLCAgNzMsICA4NCwgIDczLCAgNzksICA3OCwgIDAsICAgODQsICA2OSwgIDg4LCAgNjcsICA3
OSwgIDc5LCAgODIsICA2OCwgIDAsDQorICAgIDE3MSwgMTcxLCAxNzEsIDc5LCAgODMsICA3MSwg
IDc4LCAgNDQsICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgICAw
LCAgIDAsDQorICAgIDMyLCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAs
ICAgMTUsICAwLCAgIDAsICAgMCwgICA4MywgIDg2LCAgOTUsICA4NCwgIDY1LCAgODIsICA3MSwg
IDY5LCAgODQsICAwLCAgIDE3MSwgMTcxfTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcmVzb2x2
ZWRlcHRoMTFfcHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcmVzb2x2ZWRlcHRo
MTFfcHMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcmVzb2x2ZWRlcHRoMTFf
cHMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgyIEBACisjaWYgMA0KKy8vDQorLy8gR2Vu
ZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYz
ODQNCisvLw0KKy8vDQorLy8gUmVzb3VyY2UgQmluZGluZ3M6DQorLy8NCisvLyBOYW1lICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgRm9ybWF0ICAgICAgICAgRGltIFNsb3Qg
RWxlbWVudHMNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAt
LS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0tLS0tLS0NCisvLyBEZXB0aCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGV4dHVyZSAgIGZsb2F0ICAgICAgICAyZE1TICAgIDAgICAgICAgIDEN
CisvLw0KKy8vDQorLy8NCisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAg
ICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQN
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0g
LS0tLS0tLSAtLS0tLS0NCisvLyBTVl9Qb3NpdGlvbiAgICAgICAgICAgICAgMCAgIHh5encgICAg
ICAgIDAgICAgICBQT1MgICBmbG9hdCAgICAgICANCisvLyBURVhDT09SRCAgICAgICAgICAgICAg
ICAgMCAgIHh5ICAgICAgICAgIDEgICAgIE5PTkUgICBmbG9hdCAgIHh5ICANCisvLw0KKy8vDQor
Ly8gT3V0cHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4
ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0K
Ky8vIFNWX1RhcmdldCAgICAgICAgICAgICAgICAwICAgeCAgICAgICAgICAgMCAgIFRBUkdFVCAg
IGZsb2F0ICAgeCAgIA0KKy8vDQorcHNfNF8xDQorZGNsX2dsb2JhbEZsYWdzIHJlZmFjdG9yaW5n
QWxsb3dlZA0KK2RjbF9yZXNvdXJjZV90ZXh0dXJlMmRtcygwKSAoZmxvYXQsZmxvYXQsZmxvYXQs
ZmxvYXQpIHQwDQorZGNsX2lucHV0X3BzIGxpbmVhciB2MS54eQ0KK2RjbF9vdXRwdXQgbzAueA0K
K2RjbF90ZW1wcyAxDQorcmVzaW5mb191aW50IHIwLnh5LCBsKDApLCB0MC54eXp3DQordXRvZiBy
MC54eSwgcjAueHl4eA0KK211bCByMC54eSwgcjAueHl4eCwgdjEueHl4eA0KK2Z0b3UgcjAueHks
IHIwLnh5eHgNCittb3YgcjAuencsIGwoMCwwLDAsMCkNCitsZG1zIHIwLngsIHIwLnh5encsIHQw
Lnh5encsIGwoMCkNCittb3YgbzAueCwgcjAueA0KK3JldCANCisvLyBBcHByb3hpbWF0ZWx5IDgg
aW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZA0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUgZ19QU19SZXNv
bHZlRGVwdGhbXSA9IHsNCisgICAgNjgsICA4OCwgIDY2LCAgNjcsICAyMDUsIDIxOSwgMTkxLCAy
MDEsIDEwMywgMTM0LCAyNDMsIDc2LCAgMTEsIDkxLCAgMjMsICAxODIsIDQyLCAgOCwgICAxNywN
CisgICAgMTczLCAxLCAgIDAsICAgMCwgICAwLCAgIDE4NCwgMiwgICAwLCAgIDAsICAgNSwgICAw
LCAgIDAsICAgMCwgIDUyLCAgMCwgICAwLCAgIDAsICAgMTc2LCAwLA0KKyAgICAwLCAgIDAsICAg
OCwgICAxLCAgIDAsICAgMCwgICA2MCwgIDEsICAgMCwgICAwLCAgIDYwLCAgMiwgICAwLCAgMCwg
ICA4MiwgIDY4LCAgNjksICA3MCwgIDExNiwNCisgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgIDAsICAgMCwgICAyOCwgIDAs
ICAgMCwgICAwLA0KKyAgICAxLCAgIDQsICAgMjU1LCAyNTUsIDAsICAgMSwgICAwLCAgIDAsICAg
NjYsICAwLCAgIDAsICAgMCwgICA2MCwgMCwgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsDQorICAg
IDAsICAgNSwgICAwLCAgIDAsICAgMCwgICA2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwNCisgICAgMCwgICAwLCAgIDEsICAg
MCwgICAwLCAgIDAsICAgNjgsICAxMDEsIDExMiwgMTE2LCAxMDQsIDAsICAgNzcsIDEwNSwgOTks
ICAxMTQsIDExMSwgMTE1LCAxMTEsDQorICAgIDEwMiwgMTE2LCAzMiwgIDQwLCAgODIsICA0MSwg
IDMyLCAgNzIsICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCAxMDQsIDk3LCAgMTAwLCAxMDEsIDEx
NCwgMzIsDQorICAgIDY3LCAgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwgMTE0LCAzMiwg
IDU0LCAgNDYsICA1MSwgIDQ2LCA1NywgIDU0LCAgNDgsICA0OCwgIDQ2LCAgNDksDQorICAgIDU0
LCAgNTEsICA1NiwgIDUyLCAgMCwgICA3MywgIDgzLCAgNzEsICA3OCwgIDgwLCAgMCwgICAwLCAg
IDAsICAyLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwNCisgICAgMCwgICAwLCAgIDU2LCAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgIDAsICAgMywgICAw
LCAgIDAsICAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAxNSwgIDAsICAgMCwgICAwLCAg
IDY4LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
DQorICAgIDMsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAzLCAgIDMsICAg
MCwgICAwLCAgIDgzLCA4NiwgIDk1LCAgODAsICAxMTEsIDExNSwgMTA1LA0KKyAgICAxMTYsIDEw
NSwgMTExLCAxMTAsIDAsICAgODQsICA2OSwgIDg4LCAgNjcsICA3OSwgIDc5LCAgODIsICA2OCwg
MCwgICAxNzEsIDE3MSwgMTcxLCA3OSwgIDgzLA0KKyAgICA3MSwgIDc4LCAgNDQsICAwLCAgIDAs
ICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgMCwgICAzMiwgIDAsICAg
MCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMywg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAwLCAgIDAsICAgMSwgICAxNCwgIDAsICAgMCwNCisg
ICAgODMsICA4NiwgIDk1LCAgODQsICA5NywgIDExNCwgMTAzLCAxMDEsIDExNiwgMCwgICAxNzEs
IDE3MSwgODMsIDcyLCAgNjgsICA4MiwgIDI0OCwgMCwgICAwLA0KKyAgICAwLCAgIDY1LCAgMCwg
ICAwLCAgIDAsICAgNjIsICAwLCAgIDAsICAgMCwgICAxMDYsIDgsICAgMCwgICAxLCAgODgsICAz
MiwgIDAsICAgNCwgICAwLCAgIDExMiwNCisgICAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgODUsICA4NSwgIDAsICAgMCwgICA5OCwgIDE2LCAgMCwgIDMsICAgNTAsICAxNiwgIDE2LCAg
MCwgICAxLA0KKyAgICAwLCAgIDAsICAgMCwgICAxMDEsIDAsICAgMCwgICAzLCAgIDE4LCAgMzIs
ICAxNiwgIDAsICAgMCwgICAwLCAgMCwgICAwLCAgIDEwNCwgMCwgICAwLCAgIDIsDQorICAgIDEs
ICAgMCwgICAwLCAgIDAsICAgNjEsICAxNiwgIDAsICAgNywgICA1MCwgIDAsICAgMTYsICAwLCAg
IDAsICAwLCAgIDAsICAgMCwgICAxLCAgIDY0LCAgMCwNCisgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDcwLCAgMTI2LCAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgIDg2LCAgMCwgICAw
LCAgIDUsICAgNTAsICAwLA0KKyAgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA3MCwg
IDAsICAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgMCwgICA1NiwgIDAsICAgMCwgICA3LCAgIDUw
LA0KKyAgICAwLCAgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDcwLCAgMCwgICAxNiwg
IDAsICAgMCwgICAwLCAgMCwgICAwLCAgIDcwLCAgMTYsICAxNiwgIDAsDQorICAgIDEsICAgMCwg
ICAwLCAgIDAsICAgMjgsICAwLCAgIDAsICAgNSwgICA1MCwgIDAsICAgMTYsICAwLCAgIDAsICAw
LCAgIDAsICAgMCwgICA3MCwgIDAsICAgMTYsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICA1NCwgIDAsICAgMCwgICA4LCAgIDE5NCwgMCwgICAxNiwgIDAsICAwLCAgIDAsICAgMCwgICAw
LCAgIDIsICAgNjQsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNDYsDQor
ICAgIDAsICAgMCwgICA5LCAgIDE4LCAgMCwgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICA3MCwgIDE0LCAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwNCisgICAgNzAsICAxMjYsIDE2
LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgNjQsICAwLCAgIDAsICAgMCwgIDAsICAg
MCwgICAwLCAgIDU0LCAgMCwgICAwLA0KKyAgICA1LCAgIDE4LCAgMzIsICAxNiwgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAxMCwgIDAsICAgMTYsICAwLCAgMCwgICAwLCAgIDAsICAgMCwgICA2
MiwgIDAsDQorICAgIDAsICAgMSwgICA4MywgIDg0LCAgNjUsICA4NCwgIDExNiwgMCwgICAwLCAg
IDAsICAgOCwgICAwLCAgIDAsICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwNCisgICAgMCwg
ICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLA0KKyAgICAxLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwN
CisgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAy
LCAgIDAsICAgMCwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAyLA0KKyAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwfTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQv
cmVzb2x2ZWRlcHRoc3RlbmNpbDExX3BzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVk
L3Jlc29sdmVkZXB0aHN0ZW5jaWwxMV9wcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21w
aWxlZC9yZXNvbHZlZGVwdGhzdGVuY2lsMTFfcHMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDkyIEBACisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBT
aGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQNCisvLw0KKy8vDQorLy8gUmVzb3VyY2UgQmlu
ZGluZ3M6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlw
ZSAgRm9ybWF0ICAgICAgICAgRGltIFNsb3QgRWxlbWVudHMNCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0tLS0t
LS0NCisvLyBEZXB0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSAgIGZsb2F0
ICAgICAgICAyZE1TICAgIDAgICAgICAgIDENCisvLyBTdGVuY2lsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGV4dHVyZSAgIHVpbnQyICAgICAgICAyZE1TICAgIDEgICAgICAgIDENCisvLw0K
Ky8vDQorLy8NCisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAg
ICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0t
LSAtLS0tLS0NCisvLyBTVl9Qb3NpdGlvbiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAg
ICAgICBQT1MgICBmbG9hdCAgICAgICANCisvLyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAg
IHh5ICAgICAgICAgIDEgICAgIE5PTkUgICBmbG9hdCAgIHh5ICANCisvLw0KKy8vDQorLy8gT3V0
cHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFz
ayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNW
X1RhcmdldCAgICAgICAgICAgICAgICAwICAgeHkgICAgICAgICAgMCAgIFRBUkdFVCAgIGZsb2F0
ICAgeHkgIA0KKy8vDQorcHNfNF8xDQorZGNsX2dsb2JhbEZsYWdzIHJlZmFjdG9yaW5nQWxsb3dl
ZA0KK2RjbF9yZXNvdXJjZV90ZXh0dXJlMmRtcygwKSAoZmxvYXQsZmxvYXQsZmxvYXQsZmxvYXQp
IHQwDQorZGNsX3Jlc291cmNlX3RleHR1cmUyZG1zKDApICh1aW50LHVpbnQsdWludCx1aW50KSB0
MQ0KK2RjbF9pbnB1dF9wcyBsaW5lYXIgdjEueHkNCitkY2xfb3V0cHV0IG8wLnh5DQorZGNsX3Rl
bXBzIDENCityZXNpbmZvX3VpbnQgcjAueHksIGwoMCksIHQwLnh5encNCit1dG9mIHIwLnh5LCBy
MC54eXh4DQorbXVsIHIwLnh5LCByMC54eXh4LCB2MS54eXh4DQorZnRvdSByMC54eSwgcjAueHl4
eA0KK21vdiByMC56dywgbCgwLDAsMCwwKQ0KK2xkbXMgcjAueiwgcjAueHl6dywgdDEueHp5dywg
bCgwKQ0KK2xkbXMgcjAueCwgcjAueHl3dywgdDAueHl6dywgbCgwKQ0KK21vdiBvMC54LCByMC54
DQordXRvZiBvMC55LCByMC56DQorcmV0IA0KKy8vIEFwcHJveGltYXRlbHkgMTAgaW5zdHJ1Y3Rp
b24gc2xvdHMgdXNlZA0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUgZ19QU19SZXNvbHZlRGVwdGhT
dGVuY2lsW10gPSB7DQorICAgIDY4LCAgODgsICA2NiwgIDY3LCAgMjI5LCAxOTEsIDI1NCwgMTIs
ICAxMCwgIDE5LCAgMTgxLCAxNjIsIDIyMiwgMjAzLCAyNDQsIDE0NiwgMTA0LCAyMjYsIDE5NSwN
CisgICAgMTc3LCAxLCAgIDAsICAgMCwgICAwLCAgIDQwLCAgMywgICAwLCAgIDAsICAgNSwgICAw
LCAgIDAsICAgMCwgICA1MiwgIDAsICAgMCwgICAwLCAgIDIxNiwgMCwNCisgICAgMCwgICAwLCAg
IDQ4LCAgMSwgICAwLCAgIDAsICAgMTAwLCAxLCAgIDAsICAgMCwgICAxNzIsIDIsICAgMCwgICAw
LCAgIDgyLCAgNjgsICA2OSwgIDcwLCAgMTU2LA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgICAyOCwg
IDAsICAgMCwgICAwLA0KKyAgICAxLCAgIDQsICAgMjU1LCAyNTUsIDAsICAgMSwgICAwLCAgIDAs
ICAgMTA2LCAwLCAgIDAsICAgMCwgICA5MiwgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgICAwLA0K
KyAgICAwLCAgIDUsICAgMCwgICAwLCAgIDAsICAgNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLA0KKyAgICAwLCAgIDAsICAg
MSwgICAwLCAgIDAsICAgMCwgICA5OCwgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAs
ICAgNCwgICAwLCAgIDAsICAgMCwgICA2LA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICA1LCAgIDAs
ICAgMCwgICAwLA0KKyAgICA2OCwgIDEwMSwgMTEyLCAxMTYsIDEwNCwgMCwgICA4MywgIDExNiwg
MTAxLCAxMTAsIDk5LCAgMTA1LCAxMDgsIDAsICAgNzcsICAxMDUsIDk5LCAgMTE0LCAxMTEsDQor
ICAgIDExNSwgMTExLCAxMDIsIDExNiwgMzIsICA0MCwgIDgyLCAgNDEsICAzMiwgIDcyLCAgNzYs
ICA4MywgIDc2LCAgMzIsICA4MywgIDEwNCwgOTcsICAxMDAsIDEwMSwNCisgICAgMTE0LCAzMiwg
IDY3LCAgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwgMTE0LCAzMiwgIDU0LCAgNDYsICA1
MSwgIDQ2LCAgNTcsICA1NCwgIDQ4LCAgNDgsDQorICAgIDQ2LCAgNDksICA1NCwgIDUxLCAgNTYs
ICA1MiwgIDAsICAgNzMsICA4MywgIDcxLCAgNzgsICA4MCwgIDAsICAgMCwgICAwLCAgIDIsICAg
MCwgICAwLCAgIDAsDQorICAgIDgsICAgMCwgICAwLCAgIDAsICAgNTYsICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCAgIDAsDQor
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAxNSwgIDAsICAgMCwgICAwLCAgIDY4LCAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAz
LCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMywgICAzLCAgIDAsICAgMCwg
ICA4MywgIDg2LCAgOTUsICA4MCwgIDExMSwNCisgICAgMTE1LCAxMDUsIDExNiwgMTA1LCAxMTEs
IDExMCwgMCwgICA4NCwgIDY5LCAgODgsICA2NywgIDc5LCAgNzksICA4MiwgIDY4LCAgMCwgICAx
NzEsIDE3MSwgMTcxLA0KKyAgICA3OSwgIDgzLCAgNzEsICA3OCwgIDQ0LCAgMCwgICAwLCAgIDAs
ICAgMSwgICAwLCAgIDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCAgIDMyLCAgMCwgICAwLA0K
KyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMywgICAxMiwNCisgICAgMCwgICAwLCAg
IDgzLCAgODYsICA5NSwgIDg0LCAgOTcsICAxMTQsIDEwMywgMTAxLCAxMTYsIDAsICAgMTcxLCAx
NzEsIDgzLCAgNzIsICA2OCwgIDgyLCAgNjQsDQorICAgIDEsICAgMCwgICAwLCAgIDY1LCAgMCwg
ICAwLCAgIDAsICAgODAsICAwLCAgIDAsICAgMCwgICAxMDYsIDgsICAgMCwgICAxLCAgIDg4LCAg
MzIsICAwLCAgIDQsDQorICAgIDAsICAgMTEyLCAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICA4NSwgIDg1LCAgMCwgICAwLCAgIDg4LCAgMzIsICAwLCAgIDQsICAgMCwgICAxMTIsIDE2LA0K
KyAgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgNjgsICA2OCwgIDAsICAgMCwgICA5OCwgIDE2
LCAgMCwgICAzLCAgIDUwLCAgMTYsICAxNiwgIDAsICAgMSwgICAwLA0KKyAgICAwLCAgIDAsICAg
MTAxLCAwLCAgIDAsICAgMywgICA1MCwgIDMyLCAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMTA0LCAwLCAgIDAsICAgMiwgICAxLA0KKyAgICAwLCAgIDAsICAgMCwgICA2MSwgIDE2LCAg
MCwgICA3LCAgIDUwLCAgMCwgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDY0
LCAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDcwLCAgMTI2LCAxNiwgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICA4NiwgIDAsICAgMCwgICA1LCAgIDUwLCAgMCwgICAxNiwNCisg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDcwLCAgMCwgICAxNiwgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICA1NiwgIDAsICAgMCwgICA3LCAgIDUwLCAgMCwNCisgICAgMTYsICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgNzAsICAwLCAgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDcwLCAgMTYsICAxNiwgIDAsICAgMSwNCisgICAgMCwgICAwLCAgIDAsICAgMjgsICAwLCAgIDAs
ICAgNSwgICA1MCwgIDAsICAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNzAsICAwLCAg
IDE2LCAgMCwNCisgICAgMCwgICAwLCAgIDAsICAgMCwgICA1NCwgIDAsICAgMCwgICA4LCAgIDE5
NCwgMCwgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDY0LCAgMCwNCisgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDQ2LCAgMCwNCisgICAgMCwgICA5LCAgIDY2LCAg
MCwgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA3MCwgIDE0LCAgMTYsICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMTM0LA0KKyAgICAxMjUsIDE2LCAgMCwgICAxLCAgIDAsICAgMCwg
ICAwLCAgIDEsICAgNjQsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA0NiwgIDAsICAg
MCwgICA5LA0KKyAgICAxOCwgIDAsICAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNzAs
ICAxNSwgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDcwLCAgMTI2LCAxNiwNCisgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgNjQsICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICA1NCwgIDAsICAgMCwgICA1LCAgIDE4LCAgMzIsDQorICAgIDE2LCAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDEwLCAgMCwgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA4
NiwgIDAsICAgMCwgICA1LCAgIDM0LA0KKyAgICAzMiwgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDQyLCAgMCwgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA2MiwgIDAsICAg
MCwgICAxLA0KKyAgICA4MywgIDg0LCAgNjUsICA4NCwgIDExNiwgMCwgICAwLCAgIDAsICAgMTAs
ICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLA0KKyAgICAw
LCAgIDIsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMiwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgICAwLA0KKyAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwfTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcmVz
b2x2ZWRlcHRoc3RlbmNpbDExX3ZzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Jl
c29sdmVkZXB0aHN0ZW5jaWwxMV92cy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxl
ZC9yZXNvbHZlZGVwdGhzdGVuY2lsMTFfdnMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg0
IEBACisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFk
ZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQNCisvLw0KKy8vDQorLy8NCisvLyBJbnB1dCBzaWdu
YXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0
ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0t
LSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9WZXJ0ZXhJ
RCAgICAgICAgICAgICAgMCAgIHggICAgICAgICAgIDAgICBWRVJUSUQgICAgdWludCAgIHggICAN
CisvLw0KKy8vDQorLy8gT3V0cHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAg
ICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0t
LS0tIC0tLS0tLQ0KKy8vIFNWX1Bvc2l0aW9uICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAg
MCAgICAgIFBPUyAgIGZsb2F0ICAgeHl6dw0KKy8vIFRFWENPT1JEICAgICAgICAgICAgICAgICAw
ICAgeHkgICAgICAgICAgMSAgICAgTk9ORSAgIGZsb2F0ICAgeHkgIA0KKy8vDQordnNfNF8xDQor
ZGNsX2dsb2JhbEZsYWdzIHJlZmFjdG9yaW5nQWxsb3dlZA0KK2RjbF9pbW1lZGlhdGVDb25zdGFu
dEJ1ZmZlciB7IHsgLTEuMDAwMDAwLCAxLjAwMDAwMCwgMCwgMH0sDQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeyAxLjAwMDAwMCwgLTEuMDAwMDAwLCAwLCAwfSwNCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7IC0xLjAwMDAwMCwgLTEuMDAwMDAwLCAwLCAwfSwNCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7IC0xLjAwMDAwMCwgMS4wMDAwMDAsIDAsIDB9LA0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgMS4wMDAwMDAsIDEuMDAwMDAwLCAwLCAw
fSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IDEuMDAwMDAwLCAtMS4wMDAwMDAs
IDAsIDB9IH0NCitkY2xfaW5wdXRfc2d2IHYwLngsIHZlcnRleF9pZA0KK2RjbF9vdXRwdXRfc2l2
IG8wLnh5encsIHBvc2l0aW9uDQorZGNsX291dHB1dCBvMS54eQ0KK2RjbF90ZW1wcyAxDQorbW92
IG8wLnp3LCBsKDAsMCwwLDEuMDAwMDAwKQ0KK21vdiByMC54LCB2MC54DQorbW92IG8wLnh5LCBp
Y2JbcjAueCArIDBdLnh5eHgNCithZGQgcjAueSwgbCgxLjAwMDAwMCksIGljYltyMC54ICsgMF0u
eA0KK2FkZCByMC54LCBsKDEuMDAwMDAwKSwgLWljYltyMC54ICsgMF0ueQ0KK211bCBvMS54eSwg
cjAueXh5eSwgbCgwLjUwMDAwMCwgMC41MDAwMDAsIDAuMDAwMDAwLCAwLjAwMDAwMCkNCityZXQg
DQorLy8gQXBwcm94aW1hdGVseSA3IGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisjZW5kaWYNCisN
Citjb25zdCBCWVRFIGdfVlNfUmVzb2x2ZURlcHRoU3RlbmNpbFtdID0gew0KKyAgICA2OCwgIDg4
LCAgNjYsICA2NywgIDIwNSwgMTUsICAxMDMsIDcwLCAgMjAyLCAyMzUsIDE5NSwgOTgsICAyNTUs
IDgyLCAgODQsICAyMzksIDEzMCwgNiwgICAxMiwNCisgICAgMTA0LCAxLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMywgICAwLCAgIDAsICAgNSwgICAwLCAgIDAsICAgMCwgICA1MiwgIDAsICAgMCwg
ICAwLCAgIDE0MCwgMCwNCisgICAgMCwgICAwLCAgIDE5MiwgMCwgICAwLCAgIDAsICAgMjQsICAx
LCAgIDAsICAgMCwgICAxMzIsIDIsICAgMCwgICAwLCAgIDgyLCAgNjgsICA2OSwgIDcwLCAgODAs
DQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDI4LCAgMCwgICAwLCAgIDAsDQorICAgIDEsICAgNCwg
ICAyNTQsIDI1NSwgMCwgICAxLCAgIDAsICAgMCwgICAyOCwgIDAsICAgMCwgICAwLCAgIDc3LCAg
MTA1LCA5OSwgIDExNCwgMTExLCAxMTUsIDExMSwNCisgICAgMTAyLCAxMTYsIDMyLCAgNDAsICA4
MiwgIDQxLCAgMzIsICA3MiwgIDc2LCAgODMsICA3NiwgIDMyLCAgODMsICAxMDQsIDk3LCAgMTAw
LCAxMDEsIDExNCwgMzIsDQorICAgIDY3LCAgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwg
MTE0LCAzMiwgIDU0LCAgNDYsICA1MSwgIDQ2LCAgNTcsICA1NCwgIDQ4LCAgNDgsICA0NiwgIDQ5
LA0KKyAgICA1NCwgIDUxLCAgNTYsICA1MiwgIDAsICAgMTcxLCAxNzEsIDczLCAgODMsICA3MSwg
IDc4LCAgNDQsICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLA0KKyAgICA4LCAgIDAs
ICAgMCwgICAwLCAgIDMyLCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA2LCAg
IDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMSwgICAxLCAgIDAsICAgMCwgICA4MywgIDg2LCAgOTUsICA4NiwgIDEwMSwgMTE0LCAxMTYs
IDEwMSwgMTIwLCA3MywNCisgICAgNjgsICAwLCAgIDc5LCAgODMsICA3MSwgIDc4LCAgODAsICAw
LCAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsICAgNTYs
DQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAg
MCwgICAzLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDE1LCAgMCwg
ICAwLCAgIDAsICAgNjgsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMywgICAwLCAgIDAsDQorICAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwg
ICAzLCAgIDEyLCAgMCwgICAwLCAgIDgzLCAgODYsICA5NSwgIDgwLCAgMTExLCAxMTUsIDEwNSwg
MTE2LCAxMDUsIDExMSwNCisgICAgMTEwLCAwLCAgIDg0LCAgNjksICA4OCwgIDY3LCAgNzksICA3
OSwgIDgyLCAgNjgsICAwLCAgIDE3MSwgMTcxLCAxNzEsIDgzLCAgNzIsICA2OCwgIDgyLCAgMTAw
LA0KKyAgICAxLCAgIDAsICAgMCwgICA2NSwgIDAsICAgMSwgICAwLCAgIDg5LCAgMCwgICAwLCAg
IDAsICAgMTA2LCA4LCAgIDAsICAgMSwgICA1MywgIDI0LCAgMCwgICAwLA0KKyAgICAyNiwgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAxMjgsIDE5MSwgMCwgICAwLCAgIDEyOCwgNjMsICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAxMjgsIDYz
LCAgMCwgICAwLCAgIDEyOCwgMTkxLCAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLA0KKyAgICAxMjgsIDE5MSwgMCwgICAwLCAgIDEyOCwgMTkxLCAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEyOCwgMTkxLCAwLA0K
KyAgICAwLCAgIDEyOCwgNjMsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDEyOCwgNjMsICAwLCAgIDAsICAgMTI4LCA2MywNCisgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAxMjgsIDYzLCAgMCwgICAw
LCAgIDEyOCwgMTkxLCAwLCAgIDAsICAgMCwNCisgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDk2LCAgMCwgICAwLCAgIDQsICAgMTgsICAxNiwgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDYsICAgMCwNCisgICAgMCwgICAwLCAgIDEwMywgMCwgICAwLCAgIDQsICAgMjQyLCAzMiwg
IDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMTAxLA0K
KyAgICAwLCAgIDAsICAgMywgICA1MCwgIDMyLCAgMTYsICAwLCAgIDEsICAgMCwgICAwLCAgIDAs
ICAgMTA0LCAwLCAgIDAsICAgMiwgICAxLCAgIDAsICAgMCwgICAwLA0KKyAgICA1NCwgIDAsICAg
MCwgICA4LCAgIDE5NCwgMzIsICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDY0
LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMTI4LCA2MywgIDU0LCAgMCwgICAwLCAgIDUs
ICAgMTgsICAwLA0KKyAgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAxMCwgIDE2LCAg
MTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNTQsICAwLCAgIDAsICAgNiwgICA1MCwNCisg
ICAgMzIsICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA3MCwgIDE0NCwgMTQ0LCAwLCAg
IDEwLCAgMCwgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwNCisgICAgMCwgICAwLCAgIDAs
ICAgOCwgICAzNCwgIDAsICAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICA2NCwg
IDAsICAgMCwgICAwLCAgIDAsICAgMTI4LA0KKyAgICA2MywgIDEwLCAgMTQ0LCAxNDQsIDAsICAg
MTAsICAwLCAgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDks
ICAgMTgsICAwLA0KKyAgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDY0LCAg
MCwgICAwLCAgIDAsICAgMCwgICAxMjgsIDYzLCAgMjYsICAxNDQsIDE0NCwgMTI4LCA2NSwNCisg
ICAgMCwgICAwLCAgIDAsICAgMTAsICAwLCAgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDU2LCAgMCwgICAwLCAgIDEwLCAgNTAsICAzMiwgIDE2LCAgMCwNCisgICAgMSwgICAwLCAgIDAs
ICAgMCwgICAyMiwgIDUsICAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMiwgICA2NCwg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwNCisgICAgNjMsICAwLCAgIDAsICAgMCwgICA2MywgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA2MiwgIDAsICAgMCwgICAxLCAg
IDgzLCAgODQsDQorICAgIDY1LCAgODQsICAxMTYsIDAsICAgMCwgICAwLCAgIDcsICAgMCwgICAw
LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICA2LCAgIDAsICAgMCwgICAwLCAgIDMsDQorICAg
IDAsICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMH07DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Jlc29sdmVzdGVu
Y2lsMTFfcHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcmVzb2x2ZXN0ZW5jaWwx
MV9wcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9yZXNvbHZlc3RlbmNpbDEx
X3BzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NCBAQAorI2lmIDANCisvLw0KKy8vIEdl
bmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDYuMy45NjAwLjE2
Mzg0DQorLy8NCisvLw0KKy8vIFJlc291cmNlIEJpbmRpbmdzOg0KKy8vDQorLy8gTmFtZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgIEZvcm1hdCAgICAgICAgIERpbSBTbG90
IEVsZW1lbnRzDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0g
LS0tLS0tLSAtLS0tLS0tLS0tLSAtLS0tIC0tLS0tLS0tDQorLy8gU3RlbmNpbCAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRleHR1cmUgICB1aW50MiAgICAgICAgMmRNUyAgICAxICAgICAgICAx
DQorLy8NCisvLw0KKy8vDQorLy8gSW5wdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAg
ICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2Vk
DQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0t
IC0tLS0tLS0gLS0tLS0tDQorLy8gU1ZfUG9zaXRpb24gICAgICAgICAgICAgIDAgICB4eXp3ICAg
ICAgICAwICAgICAgUE9TICAgZmxvYXQgICAgICAgDQorLy8gVEVYQ09PUkQgICAgICAgICAgICAg
ICAgIDAgICB4eSAgICAgICAgICAxICAgICBOT05FICAgZmxvYXQgICB4eSAgDQorLy8NCisvLw0K
Ky8vIE91dHB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRl
eCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0N
CisvLyBTVl9UYXJnZXQgICAgICAgICAgICAgICAgMCAgIHh5ICAgICAgICAgIDAgICBUQVJHRVQg
ICBmbG9hdCAgIHh5ICANCisvLw0KK3BzXzRfMQ0KK2RjbF9nbG9iYWxGbGFncyByZWZhY3Rvcmlu
Z0FsbG93ZWQNCitkY2xfcmVzb3VyY2VfdGV4dHVyZTJkbXMoMCkgKHVpbnQsdWludCx1aW50LHVp
bnQpIHQxDQorZGNsX2lucHV0X3BzIGxpbmVhciB2MS54eQ0KK2RjbF9vdXRwdXQgbzAueHkNCitk
Y2xfdGVtcHMgMQ0KK3Jlc2luZm9fdWludCByMC54eSwgbCgwKSwgdDEueHl6dw0KK3V0b2YgcjAu
eHksIHIwLnh5eHgNCittdWwgcjAueHksIHIwLnh5eHgsIHYxLnh5eHgNCitmdG91IHIwLnh5LCBy
MC54eXh4DQorbW92IHIwLnp3LCBsKDAsMCwwLDApDQorbGRtcyByMC54LCByMC54eXp3LCB0MS55
eHp3LCBsKDApDQordXRvZiBvMC55LCByMC54DQorbW92IG8wLngsIGwoMCkNCityZXQgDQorLy8g
QXBwcm94aW1hdGVseSA5IGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisjZW5kaWYNCisNCitjb25z
dCBCWVRFIGdfUFNfUmVzb2x2ZVN0ZW5jaWxbXSA9IHsNCisgICAgNjgsICA4OCwgIDY2LCAgNjcs
ICAxMjIsIDI5LCAgMzQsICAxNDYsIDI1NCwgMjAzLCAxNzUsIDk3LCAgMTUxLCAyNTQsIDI1NSwg
MTkwLCA5MSwgNDAsICA1NSwNCisgICAgMTE4LCAxLCAgIDAsICAgMCwgICAwLCAgIDIwOCwgMiwg
ICAwLCAgIDAsICAgNSwgICAwLCAgIDAsICAgMCwgICA1MiwgIDAsICAgMCwgICAwLCAgMTgwLCAw
LA0KKyAgICAwLCAgIDAsICAgMTIsICAxLCAgIDAsICAgMCwgICA2NCwgIDEsICAgMCwgICAwLCAg
IDg0LCAgMiwgICAwLCAgIDAsICAgODIsICA2OCwgIDY5LCA3MCwgIDEyMCwNCisgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwg
ICAwLCAgIDAsICAgMjgsICAwLCAgMCwgICAwLA0KKyAgICAxLCAgIDQsICAgMjU1LCAyNTUsIDAs
ICAgMSwgICAwLCAgIDAsICAgNjgsICAwLCAgIDAsICAgMCwgICA2MCwgIDAsICAgMCwgICAwLCAg
IDIsICAwLCAgIDAsDQorICAgIDAsICAgNCwgICAwLCAgIDAsICAgMCwgICA2LCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgIDEsICAgMCwNCisg
ICAgMCwgICAwLCAgIDUsICAgMCwgICAwLCAgIDAsICAgODMsICAxMTYsIDEwMSwgMTEwLCA5OSwg
IDEwNSwgMTA4LCAwLCAgIDc3LCAgMTA1LCA5OSwgMTE0LCAxMTEsDQorICAgIDExNSwgMTExLCAx
MDIsIDExNiwgMzIsICA0MCwgIDgyLCAgNDEsICAzMiwgIDcyLCAgNzYsICA4MywgIDc2LCAgMzIs
ICA4MywgIDEwNCwgOTcsIDEwMCwgMTAxLA0KKyAgICAxMTQsIDMyLCAgNjcsICAxMTEsIDEwOSwg
MTEyLCAxMDUsIDEwOCwgMTAxLCAxMTQsIDMyLCAgNTQsICA0NiwgIDUxLCAgNDYsICA1NywgIDU0
LCA0OCwgIDQ4LA0KKyAgICA0NiwgIDQ5LCAgNTQsICA1MSwgIDU2LCAgNTIsICAwLCAgIDE3MSwg
MTcxLCA3MywgIDgzLCAgNzEsICA3OCwgIDgwLCAgMCwgICAwLCAgIDAsICAyLCAgIDAsDQorICAg
IDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCAgIDU2LCAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgIDAsICAgMywNCisgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAxNSwgIDAsICAgMCwgICAwLCAgIDY4LCAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgICAw
LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAzLCAgIDMsICAgMCwgICAwLCAgIDgzLCA4Niwg
IDk1LA0KKyAgICA4MCwgIDExMSwgMTE1LCAxMDUsIDExNiwgMTA1LCAxMTEsIDExMCwgMCwgICA4
NCwgIDY5LCAgODgsICA2NywgIDc5LCAgNzksICA4MiwgIDY4LCAwLCAgIDE3MSwNCisgICAgMTcx
LCAxNzEsIDc5LCAgODMsICA3MSwgIDc4LCAgNDQsICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAg
MCwgICAwLCAgIDgsICAgMCwgICAwLCAgMCwgICAzMiwNCisgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgMCwgICAwLA0KKyAgICAzLCAgIDEyLCAgMCwgICAwLCAgIDgzLCAgODYsICA5NSwg
IDg0LCAgOTcsICAxMTQsIDEwMywgMTAxLCAxMTYsIDAsICAgMTcxLCAxNzEsIDgzLCA3MiwgIDY4
LA0KKyAgICA4MiwgIDEyLCAgMSwgICAwLCAgIDAsICAgNjUsICAwLCAgIDAsICAgMCwgICA2Nywg
IDAsICAgMCwgICAwLCAgIDEwNiwgOCwgICAwLCAgIDEsICA4OCwgIDMyLA0KKyAgICAwLCAgIDQs
ICAgMCwgICAxMTIsIDE2LCAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDY4LCAgNjgsICAwLCAg
IDAsICAgOTgsICAxNiwgIDAsICAzLCAgIDUwLA0KKyAgICAxNiwgIDE2LCAgMCwgICAxLCAgIDAs
ICAgMCwgICAwLCAgIDEwMSwgMCwgICAwLCAgIDMsICAgNTAsICAzMiwgIDE2LCAgMCwgICAwLCAg
IDAsICAwLCAgIDAsDQorICAgIDEwNCwgMCwgICAwLCAgIDIsICAgMSwgICAwLCAgIDAsICAgMCwg
ICA2MSwgIDE2LCAgMCwgICA3LCAgIDUwLCAgMCwgICAxNiwgIDAsICAgMCwgIDAsICAgMCwNCisg
ICAgMCwgICAxLCAgIDY0LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNzAsICAxMjYs
IDE2LCAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgODYsICAwLA0KKyAgICAwLCAgIDUsICAgNTAs
ICAwLCAgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDcwLCAgMCwgICAxNiwgIDAsICAg
MCwgICAwLCAgIDAsICAwLCAgIDU2LA0KKyAgICAwLCAgIDAsICAgNywgICA1MCwgIDAsICAgMTYs
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNzAsICAwLCAgIDE2LCAgMCwgICAwLCAgIDAsICAw
LCAgIDAsDQorICAgIDcwLCAgMTYsICAxNiwgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAyOCwg
IDAsICAgMCwgICA1LCAgIDUwLCAgMCwgICAxNiwgIDAsICAgMCwgIDAsICAgMCwNCisgICAgMCwg
ICA3MCwgIDAsICAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNTQsICAwLCAgIDAsICAg
OCwgICAxOTQsIDAsICAgMTYsICAwLCAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMiwgICA2NCwg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDQ2LCAgMCwgICAwLCAgIDksICAg
MTgsICAwLCAgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDcwLCAgMTQsIDE2LCAgMCwN
CisgICAgMCwgICAwLCAgIDAsICAgMCwgICAyMiwgIDEyNiwgMTYsICAwLCAgIDEsICAgMCwgICAw
LCAgIDAsICAgMSwgICA2NCwgIDAsICAgMCwgICAwLCAgMCwgICAwLA0KKyAgICAwLCAgIDg2LCAg
MCwgICAwLCAgIDUsICAgMzQsICAzMiwgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEw
LCAgMCwgICAxNiwgIDAsICAwLCAgIDAsDQorICAgIDAsICAgMCwgICA1NCwgIDAsICAgMCwgICA1
LCAgIDE4LCAgMzIsICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDY0LCAgMCwg
IDAsICAgMCwNCisgICAgMCwgICAwLCAgIDAsICAgNjIsICAwLCAgIDAsICAgMSwgICA4MywgIDg0
LCAgNjUsICA4NCwgIDExNiwgMCwgICAwLCAgIDAsICAgOSwgICAwLCAgMCwgICAwLA0KKyAgICAx
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwg
ICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgIDAsICAgMCwNCisgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgMCwgICAx
LA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsICAwLCAgIDAsDQorICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgIDAsICAgMCwNCisgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
fTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL3dpbjMyL05hdGl2ZVdpbmRvdzExV2luMzIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lu
MzIvTmF0aXZlV2luZG93MTFXaW4zMi5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW4zMi9OYXRpdmVX
aW5kb3cxMVdpbjMyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIxNSBAQAorLy8KKy8v
IENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisKKy8vIE5hdGl2ZVdpbmRvdzExV2luMzIuY3BwOiBJbXBsZW1lbnRhdGlvbiBvZiBO
YXRpdmVXaW5kb3cxMSB1c2luZyB3aW4zMiB3aW5kb3cgQVBJcy4KKworI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW4zMi9OYXRpdmVXaW5kb3cxMVdpbjMyLmgiCisjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFfdXRpbHMuaCIKKwor
I2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCisjaW5jbHVkZSA8aW5pdGd1aWQuaD4KKyNpbmNs
dWRlIDxkY29tcC5oPgorCituYW1lc3BhY2UgcngKK3sKKworTmF0aXZlV2luZG93MTFXaW4zMjo6
TmF0aXZlV2luZG93MTFXaW4zMihFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBoYXNBbHBoYSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkaXJlY3RDb21wb3NpdGlvbikK
KyAgICA6IE5hdGl2ZVdpbmRvdzExKHdpbmRvdyksCisgICAgICBtRGlyZWN0Q29tcG9zaXRpb24o
ZGlyZWN0Q29tcG9zaXRpb24pLAorICAgICAgbUhhc0FscGhhKGhhc0FscGhhKSwKKyAgICAgIG1E
ZXZpY2UobnVsbHB0ciksCisgICAgICBtQ29tcG9zaXRpb25UYXJnZXQobnVsbHB0ciksCisgICAg
ICBtVmlzdWFsKG51bGxwdHIpCit7Cit9CisKK05hdGl2ZVdpbmRvdzExV2luMzI6On5OYXRpdmVX
aW5kb3cxMVdpbjMyKCkKK3sKKyAgICBTYWZlUmVsZWFzZShtQ29tcG9zaXRpb25UYXJnZXQpOwor
ICAgIFNhZmVSZWxlYXNlKG1EZXZpY2UpOworICAgIFNhZmVSZWxlYXNlKG1WaXN1YWwpOworfQor
Citib29sIE5hdGl2ZVdpbmRvdzExV2luMzI6OmluaXRpYWxpemUoKQoreworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIE5hdGl2ZVdpbmRvdzExV2luMzI6OmdldENsaWVudFJlY3QoTFBSRUNU
IHJlY3QpIGNvbnN0Cit7CisgICAgcmV0dXJuIEdldENsaWVudFJlY3QoZ2V0TmF0aXZlV2luZG93
KCksIHJlY3QpID09IFRSVUU7Cit9CisKK2Jvb2wgTmF0aXZlV2luZG93MTFXaW4zMjo6aXNJY29u
aWMoKSBjb25zdAoreworICAgIHJldHVybiBJc0ljb25pYyhnZXROYXRpdmVXaW5kb3coKSkgPT0g
VFJVRTsKK30KKworSFJFU1VMVCBOYXRpdmVXaW5kb3cxMVdpbjMyOjpjcmVhdGVTd2FwQ2hhaW4o
SUQzRDExRGV2aWNlICpkZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJRFhHSUZhY3RvcnkgKmZhY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVCBmb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UIHdpZHRoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVCBoZWlnaHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRFhHSVN3YXBDaGFpbiAqKnN3YXBD
aGFpbikKK3sKKyAgICBpZiAoZGV2aWNlID09IE5VTEwgfHwgZmFjdG9yeSA9PSBOVUxMIHx8IHN3
YXBDaGFpbiA9PSBOVUxMIHx8IHdpZHRoID09IDAgfHwgaGVpZ2h0ID09IDApCisgICAgeworICAg
ICAgICByZXR1cm4gRV9JTlZBTElEQVJHOworICAgIH0KKworICAgIGlmIChtRGlyZWN0Q29tcG9z
aXRpb24pCisgICAgeworICAgICAgICBITU9EVUxFIGRjb21wID0gOjpHZXRNb2R1bGVIYW5kbGUo
VEVYVCgiZGNvbXAuZGxsIikpOworICAgICAgICBpZiAoIWRjb21wKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gRV9JTlZBTElEQVJHOworICAgICAgICB9CisKKyAgICAgICAgdHlwZWRl
ZiBIUkVTVUxUKFdJTkFQSSAqIFBGTl9EQ09NUE9TSVRJT05fQ1JFQVRFX0RFVklDRSkoCisgICAg
ICAgICAgICBJRFhHSURldmljZSAqIGR4Z2lEZXZpY2UsIFJFRklJRCBpaWQsIHZvaWQgKipkY29t
cG9zaXRpb25EZXZpY2UpOworICAgICAgICBQRk5fRENPTVBPU0lUSU9OX0NSRUFURV9ERVZJQ0Ug
Y3JlYXRlRENvbXAgPQorICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5fRENPTVBPU0lU
SU9OX0NSRUFURV9ERVZJQ0U+KAorICAgICAgICAgICAgICAgIEdldFByb2NBZGRyZXNzKGRjb21w
LCAiRENvbXBvc2l0aW9uQ3JlYXRlRGV2aWNlIikpOworICAgICAgICBpZiAoIWNyZWF0ZURDb21w
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gRV9JTlZBTElEQVJHOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKCFtRGV2aWNlKQorICAgICAgICB7CisgICAgICAgICAgICBJRFhHSURl
dmljZSAqZHhnaURldmljZSA9IGQzZDExOjpEeW5hbWljQ2FzdENvbU9iamVjdDxJRFhHSURldmlj
ZT4oZGV2aWNlKTsKKyAgICAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gY3JlYXRlRENvbXAoZHhn
aURldmljZSwgX191dWlkb2YoSURDb21wb3NpdGlvbkRldmljZSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqKj4oJm1EZXZp
Y2UpKTsKKyAgICAgICAgICAgIFNhZmVSZWxlYXNlKGR4Z2lEZXZpY2UpOworCisgICAgICAgICAg
ICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICghbUNv
bXBvc2l0aW9uVGFyZ2V0KQorICAgICAgICB7CisgICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9
CisgICAgICAgICAgICAgICAgbURldmljZS0+Q3JlYXRlVGFyZ2V0Rm9ySHduZChnZXROYXRpdmVX
aW5kb3coKSwgVFJVRSwgJm1Db21wb3NpdGlvblRhcmdldCk7CisgICAgICAgICAgICBpZiAoRkFJ
TEVEKHJlc3VsdCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICghbVZpc3VhbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVWaXN1
YWwoJm1WaXN1YWwpOworICAgICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICBJRFhHSUZhY3RvcnkyICpmYWN0b3J5MiAgICAgICAgICAgICA9IGQz
ZDExOjpEeW5hbWljQ2FzdENvbU9iamVjdDxJRFhHSUZhY3RvcnkyPihmYWN0b3J5KTsKKyAgICAg
ICAgRFhHSV9TV0FQX0NIQUlOX0RFU0MxIHN3YXBDaGFpbkRlc2MgPSB7MH07CisgICAgICAgIHN3
YXBDaGFpbkRlc2MuV2lkdGggICAgICAgICAgICAgICAgID0gd2lkdGg7CisgICAgICAgIHN3YXBD
aGFpbkRlc2MuSGVpZ2h0ICAgICAgICAgICAgICAgID0gaGVpZ2h0OworICAgICAgICBzd2FwQ2hh
aW5EZXNjLkZvcm1hdCAgICAgICAgICAgICAgICA9IGZvcm1hdDsKKyAgICAgICAgc3dhcENoYWlu
RGVzYy5TdGVyZW8gICAgICAgICAgICAgICAgPSBGQUxTRTsKKyAgICAgICAgc3dhcENoYWluRGVz
Yy5TYW1wbGVEZXNjLkNvdW50ICAgICAgPSAxOworICAgICAgICBzd2FwQ2hhaW5EZXNjLlNhbXBs
ZURlc2MuUXVhbGl0eSA9IDA7CisgICAgICAgIHN3YXBDaGFpbkRlc2MuQnVmZmVyVXNhZ2UgPQor
ICAgICAgICAgICAgRFhHSV9VU0FHRV9SRU5ERVJfVEFSR0VUX09VVFBVVCB8IERYR0lfVVNBR0Vf
QkFDS19CVUZGRVIgfCBEWEdJX1VTQUdFX1NIQURFUl9JTlBVVDsKKyAgICAgICAgc3dhcENoYWlu
RGVzYy5CdWZmZXJDb3VudCA9IDI7CisgICAgICAgIHN3YXBDaGFpbkRlc2MuU2NhbGluZyAgICAg
PSBEWEdJX1NDQUxJTkdfU1RSRVRDSDsKKyAgICAgICAgc3dhcENoYWluRGVzYy5Td2FwRWZmZWN0
ID0gRFhHSV9TV0FQX0VGRkVDVF9GTElQX1NFUVVFTlRJQUw7CisgICAgICAgIHN3YXBDaGFpbkRl
c2MuQWxwaGFNb2RlID0KKyAgICAgICAgICAgIG1IYXNBbHBoYSA/IERYR0lfQUxQSEFfTU9ERV9Q
UkVNVUxUSVBMSUVEIDogRFhHSV9BTFBIQV9NT0RFX0lHTk9SRTsKKyAgICAgICAgc3dhcENoYWlu
RGVzYy5GbGFncyAgICAgICAgID0gMDsKKyAgICAgICAgSURYR0lTd2FwQ2hhaW4xICpzd2FwQ2hh
aW4xID0gbnVsbHB0cjsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPQorICAgICAgICAgICAgZmFj
dG9yeTItPkNyZWF0ZVN3YXBDaGFpbkZvckNvbXBvc2l0aW9uKGRldmljZSwgJnN3YXBDaGFpbkRl
c2MsIG51bGxwdHIsICZzd2FwQ2hhaW4xKTsKKyAgICAgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQp
KQorICAgICAgICB7CisgICAgICAgICAgICAqc3dhcENoYWluID0gc3RhdGljX2Nhc3Q8SURYR0lT
d2FwQ2hhaW4gKj4oc3dhcENoYWluMSk7CisgICAgICAgIH0KKyAgICAgICAgbVZpc3VhbC0+U2V0
Q29udGVudChzd2FwQ2hhaW4xKTsKKyAgICAgICAgbUNvbXBvc2l0aW9uVGFyZ2V0LT5TZXRSb290
KG1WaXN1YWwpOworICAgICAgICBTYWZlUmVsZWFzZShmYWN0b3J5Mik7CisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorCisgICAgLy8gVXNlIElEWEdJRmFjdG9yeTI6OkNyZWF0ZVN3YXBD
aGFpbkZvckh3bmQgaWYgRFhHSSAxLjIgaXMgYXZhaWxhYmxlIHRvIGNyZWF0ZSBhCisgICAgLy8g
RFhHSV9TV0FQX0VGRkVDVF9TRVFVRU5USUFMIHN3YXAgY2hhaW4uCisgICAgSURYR0lGYWN0b3J5
MiAqZmFjdG9yeTIgPSBkM2QxMTo6RHluYW1pY0Nhc3RDb21PYmplY3Q8SURYR0lGYWN0b3J5Mj4o
ZmFjdG9yeSk7CisgICAgaWYgKGZhY3RvcnkyICE9IG51bGxwdHIpCisgICAgeworICAgICAgICBE
WEdJX1NXQVBfQ0hBSU5fREVTQzEgc3dhcENoYWluRGVzYyA9IHswfTsKKyAgICAgICAgc3dhcENo
YWluRGVzYy5XaWR0aCAgICAgICAgICAgICAgICAgPSB3aWR0aDsKKyAgICAgICAgc3dhcENoYWlu
RGVzYy5IZWlnaHQgICAgICAgICAgICAgICAgPSBoZWlnaHQ7CisgICAgICAgIHN3YXBDaGFpbkRl
c2MuRm9ybWF0ICAgICAgICAgICAgICAgID0gZm9ybWF0OworICAgICAgICBzd2FwQ2hhaW5EZXNj
LlN0ZXJlbyAgICAgICAgICAgICAgICA9IEZBTFNFOworICAgICAgICBzd2FwQ2hhaW5EZXNjLlNh
bXBsZURlc2MuQ291bnQgICAgICA9IDE7CisgICAgICAgIHN3YXBDaGFpbkRlc2MuU2FtcGxlRGVz
Yy5RdWFsaXR5ID0gMDsKKyAgICAgICAgc3dhcENoYWluRGVzYy5CdWZmZXJVc2FnZSA9CisgICAg
ICAgICAgICBEWEdJX1VTQUdFX1JFTkRFUl9UQVJHRVRfT1VUUFVUIHwgRFhHSV9VU0FHRV9TSEFE
RVJfSU5QVVQgfCBEWEdJX1VTQUdFX0JBQ0tfQlVGRkVSOworICAgICAgICBzd2FwQ2hhaW5EZXNj
LkJ1ZmZlckNvdW50ICAgPSAxOworICAgICAgICBzd2FwQ2hhaW5EZXNjLlNjYWxpbmcgICAgICAg
PSBEWEdJX1NDQUxJTkdfU1RSRVRDSDsKKyAgICAgICAgc3dhcENoYWluRGVzYy5Td2FwRWZmZWN0
ICAgID0gRFhHSV9TV0FQX0VGRkVDVF9TRVFVRU5USUFMOworICAgICAgICBzd2FwQ2hhaW5EZXNj
LkFscGhhTW9kZSAgICAgPSBEWEdJX0FMUEhBX01PREVfVU5TUEVDSUZJRUQ7CisgICAgICAgIHN3
YXBDaGFpbkRlc2MuRmxhZ3MgICAgICAgICA9IDA7CisgICAgICAgIElEWEdJU3dhcENoYWluMSAq
c3dhcENoYWluMSA9IG51bGxwdHI7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZmFjdG9yeTIt
PkNyZWF0ZVN3YXBDaGFpbkZvckh3bmQoZGV2aWNlLCBnZXROYXRpdmVXaW5kb3coKSwgJnN3YXBD
aGFpbkRlc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgJnN3YXBDaGFpbjEpOworICAgICAgICBpZiAo
U1VDQ0VFREVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZhY3RvcnkyLT5NYWtl
V2luZG93QXNzb2NpYXRpb24oZ2V0TmF0aXZlV2luZG93KCksIERYR0lfTVdBX05PX0FMVF9FTlRF
Uik7CisgICAgICAgICAgICAqc3dhcENoYWluID0gc3RhdGljX2Nhc3Q8SURYR0lTd2FwQ2hhaW4g
Kj4oc3dhcENoYWluMSk7CisgICAgICAgIH0KKyAgICAgICAgU2FmZVJlbGVhc2UoZmFjdG9yeTIp
OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIERYR0lfU1dBUF9DSEFJTl9E
RVNDIHN3YXBDaGFpbkRlc2MgICAgICAgICAgICAgICA9IHt9OworICAgIHN3YXBDaGFpbkRlc2Mu
QnVmZmVyQ291bnQgICAgICAgICAgICAgICAgICAgICAgICA9IDE7CisgICAgc3dhcENoYWluRGVz
Yy5CdWZmZXJEZXNjLkZvcm1hdCAgICAgICAgICAgICAgICAgID0gZm9ybWF0OworICAgIHN3YXBD
aGFpbkRlc2MuQnVmZmVyRGVzYy5XaWR0aCAgICAgICAgICAgICAgICAgICA9IHdpZHRoOworICAg
IHN3YXBDaGFpbkRlc2MuQnVmZmVyRGVzYy5IZWlnaHQgICAgICAgICAgICAgICAgICA9IGhlaWdo
dDsKKyAgICBzd2FwQ2hhaW5EZXNjLkJ1ZmZlckRlc2MuU2NhbGluZyAgICAgICAgICAgICAgICAg
PSBEWEdJX01PREVfU0NBTElOR19VTlNQRUNJRklFRDsKKyAgICBzd2FwQ2hhaW5EZXNjLkJ1ZmZl
ckRlc2MuU2NhbmxpbmVPcmRlcmluZyAgICAgICAgPSBEWEdJX01PREVfU0NBTkxJTkVfT1JERVJf
VU5TUEVDSUZJRUQ7CisgICAgc3dhcENoYWluRGVzYy5CdWZmZXJEZXNjLlJlZnJlc2hSYXRlLk51
bWVyYXRvciAgID0gMDsKKyAgICBzd2FwQ2hhaW5EZXNjLkJ1ZmZlckRlc2MuUmVmcmVzaFJhdGUu
RGVub21pbmF0b3IgPSAxOworICAgIHN3YXBDaGFpbkRlc2MuQnVmZmVyVXNhZ2UgPQorICAgICAg
ICBEWEdJX1VTQUdFX1JFTkRFUl9UQVJHRVRfT1VUUFVUIHwgRFhHSV9VU0FHRV9TSEFERVJfSU5Q
VVQgfCBEWEdJX1VTQUdFX0JBQ0tfQlVGRkVSOworICAgIHN3YXBDaGFpbkRlc2MuRmxhZ3MgICAg
ICAgICAgICAgID0gMDsKKyAgICBzd2FwQ2hhaW5EZXNjLk91dHB1dFdpbmRvdyAgICAgICA9IGdl
dE5hdGl2ZVdpbmRvdygpOworICAgIHN3YXBDaGFpbkRlc2MuU2FtcGxlRGVzYy5Db3VudCAgID0g
MTsKKyAgICBzd2FwQ2hhaW5EZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7CisgICAgc3dhcENo
YWluRGVzYy5XaW5kb3dlZCAgICAgICAgICAgPSBUUlVFOworICAgIHN3YXBDaGFpbkRlc2MuU3dh
cEVmZmVjdCAgICAgICAgID0gRFhHSV9TV0FQX0VGRkVDVF9ESVNDQVJEOworCisgICAgSFJFU1VM
VCByZXN1bHQgPSBmYWN0b3J5LT5DcmVhdGVTd2FwQ2hhaW4oZGV2aWNlLCAmc3dhcENoYWluRGVz
Yywgc3dhcENoYWluKTsKKyAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpCisgICAgeworICAgICAg
ICBmYWN0b3J5LT5NYWtlV2luZG93QXNzb2NpYXRpb24oZ2V0TmF0aXZlV2luZG93KCksIERYR0lf
TVdBX05PX0FMVF9FTlRFUik7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQg
TmF0aXZlV2luZG93MTFXaW4zMjo6Y29tbWl0Q2hhbmdlKCkKK3sKKyAgICBpZiAobURldmljZSkK
KyAgICB7CisgICAgICAgIG1EZXZpY2UtPkNvbW1pdCgpOworICAgIH0KK30KKworLy8gc3RhdGlj
Citib29sIE5hdGl2ZVdpbmRvdzExV2luMzI6OklzVmFsaWROYXRpdmVXaW5kb3coRUdMTmF0aXZl
V2luZG93VHlwZSB3aW5kb3cpCit7CisgICAgcmV0dXJuIElzV2luZG93KHdpbmRvdykgPT0gVFJV
RTsKK30KK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW4zMi9OYXRpdmVXaW5kb3cxMVdpbjMy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS93aW4zMi9OYXRpdmVXaW5kb3cxMVdpbjMyLmgJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS93aW4zMi9OYXRpdmVXaW5kb3cxMVdpbjMyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw1MiBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIE5hdGl2ZVdpbmRvdzExV2luMzIuaDogSW1wbGVt
ZW50YXRpb24gb2YgTmF0aXZlV2luZG93MTEgdXNpbmcgd2luMzIgd2luZG93IEFQSXMuCisKKyNp
Zm5kZWYgTElCQU5HTEVfUkVOREVSRVJfRDNEX0QzRDExX1dJTjMyX05BVElWRVdJTkRPVzExV0lO
MzJfSF8KKyNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfRDNEX0QzRDExX1dJTjMyX05BVElWRVdJ
TkRPVzExV0lOMzJfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9O
YXRpdmVXaW5kb3cxMS5oIgorCit0eXBlZGVmIGludGVyZmFjZSBJRENvbXBvc2l0aW9uRGV2aWNl
IElEQ29tcG9zaXRpb25EZXZpY2U7Cit0eXBlZGVmIGludGVyZmFjZSBJRENvbXBvc2l0aW9uVGFy
Z2V0IElEQ29tcG9zaXRpb25UYXJnZXQ7Cit0eXBlZGVmIGludGVyZmFjZSBJRENvbXBvc2l0aW9u
VmlzdWFsIElEQ29tcG9zaXRpb25WaXN1YWw7CisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBO
YXRpdmVXaW5kb3cxMVdpbjMyIDogcHVibGljIE5hdGl2ZVdpbmRvdzExCit7CisgIHB1YmxpYzoK
KyAgICBOYXRpdmVXaW5kb3cxMVdpbjMyKEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBib29s
IGhhc0FscGhhLCBib29sIGRpcmVjdENvbXBvc2l0aW9uKTsKKyAgICB+TmF0aXZlV2luZG93MTFX
aW4zMigpIG92ZXJyaWRlOworCisgICAgYm9vbCBpbml0aWFsaXplKCkgb3ZlcnJpZGU7CisgICAg
Ym9vbCBnZXRDbGllbnRSZWN0KExQUkVDVCByZWN0KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IGlzSWNvbmljKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBIUkVTVUxUIGNyZWF0ZVN3YXBDaGFp
bihJRDNEMTFEZXZpY2UgKmRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRFhH
SUZhY3RvcnkgKmZhY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVQgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQgd2lkdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVUlOVCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSURYR0lTd2FwQ2hhaW4gKipzd2FwQ2hhaW4pIG92ZXJyaWRlOworCisgICAgdm9p
ZCBjb21taXRDaGFuZ2UoKSBvdmVycmlkZTsKKworICAgIHN0YXRpYyBib29sIElzVmFsaWROYXRp
dmVXaW5kb3coRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3cpOworCisgIHByaXZhdGU6CisgICAg
Ym9vbCBtRGlyZWN0Q29tcG9zaXRpb247CisgICAgYm9vbCBtSGFzQWxwaGE7CisgICAgSURDb21w
b3NpdGlvbkRldmljZSAqbURldmljZTsKKyAgICBJRENvbXBvc2l0aW9uVGFyZ2V0ICptQ29tcG9z
aXRpb25UYXJnZXQ7CisgICAgSURDb21wb3NpdGlvblZpc3VhbCAqbVZpc3VhbDsKK307CisKK30g
IC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9EM0Qx
MV9XSU4zMl9OQVRJVkVXSU5ET1cxMVdJTjMyX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbjMyL05hdGl2ZVdpbmRvdy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS93aW4zMi9OYXRpdmVXaW5kb3cuY3BwCShyZXZpc2lvbiAyMDc4MDQp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL3dpbjMyL05hdGl2ZVdpbmRvdy5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMDIgKzAsMCBA
QAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KLS8vCi0KLS8vIE5hdGl2ZVdpbmRvdy5jcHA6IEhhbmRsZXIgZm9yIG1hbmFn
aW5nIEhXTkQgbmF0aXZlIHdpbmRvdyB0eXBlcy4KLQotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9OYXRpdmVXaW5kb3cuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvcmVuZGVyZXIxMV91dGlscy5oIgotCi0jaW5jbHVkZSAiY29tbW9uL2RlYnVn
LmgiCi0KLSNpbmNsdWRlIDxpbml0Z3VpZC5oPgotI2luY2x1ZGUgPGRjb21wLmg+Ci0KLW5hbWVz
cGFjZSByeAotewotCi1OYXRpdmVXaW5kb3c6Ok5hdGl2ZVdpbmRvdyhFR0xOYXRpdmVXaW5kb3dU
eXBlIHdpbmRvdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmln
ICpjb25maWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRpcmVjdENvbXBvc2l0
aW9uKQotICAgIDogbVdpbmRvdyh3aW5kb3cpLAotICAgICAgbURpcmVjdENvbXBvc2l0aW9uKGRp
cmVjdENvbXBvc2l0aW9uKSwKLSAgICAgIG1EZXZpY2UobnVsbHB0ciksCi0gICAgICBtQ29tcG9z
aXRpb25UYXJnZXQobnVsbHB0ciksCi0gICAgICBtVmlzdWFsKG51bGxwdHIpLAotICAgICAgbUNv
bmZpZyhjb25maWcpCi17Ci19Ci0KLU5hdGl2ZVdpbmRvdzo6fk5hdGl2ZVdpbmRvdygpCi17Ci0g
ICAgU2FmZVJlbGVhc2UobUNvbXBvc2l0aW9uVGFyZ2V0KTsKLSAgICBTYWZlUmVsZWFzZShtRGV2
aWNlKTsKLSAgICBTYWZlUmVsZWFzZShtVmlzdWFsKTsKLX0KLQotYm9vbCBOYXRpdmVXaW5kb3c6
OmluaXRpYWxpemUoKQotewotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIE5hdGl2ZVdpbmRv
dzo6Z2V0Q2xpZW50UmVjdChMUFJFQ1QgcmVjdCkKLXsKLSAgICByZXR1cm4gR2V0Q2xpZW50UmVj
dChtV2luZG93LCByZWN0KSA9PSBUUlVFOwotfQotCi1ib29sIE5hdGl2ZVdpbmRvdzo6aXNJY29u
aWMoKQotewotICAgIHJldHVybiBJc0ljb25pYyhtV2luZG93KSA9PSBUUlVFOwotfQotCi1ib29s
IE5hdGl2ZVdpbmRvdzo6aXNWYWxpZE5hdGl2ZVdpbmRvdyhFR0xOYXRpdmVXaW5kb3dUeXBlIHdp
bmRvdykKLXsKLSAgICByZXR1cm4gSXNXaW5kb3cod2luZG93KSA9PSBUUlVFOwotfQotCi1IUkVT
VUxUIE5hdGl2ZVdpbmRvdzo6Y3JlYXRlU3dhcENoYWluKElEM0QxMURldmljZSogZGV2aWNlLCBE
WEdJRmFjdG9yeSogZmFjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVQgZm9ybWF0LCB1bnNpZ25lZCBpbnQgd2lkdGgsIHVuc2lnbmVkIGludCBo
ZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lTd2FwQ2hh
aW4qKiBzd2FwQ2hhaW4pCi17Ci0gICAgaWYgKGRldmljZSA9PSBOVUxMIHx8IGZhY3RvcnkgPT0g
TlVMTCB8fCBzd2FwQ2hhaW4gPT0gTlVMTCB8fCB3aWR0aCA9PSAwIHx8IGhlaWdodCA9PSAwKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIEVfSU5WQUxJREFSRzsKLSAgICB9Ci0KLSAgICBpZiAobURp
cmVjdENvbXBvc2l0aW9uKQotICAgIHsKLSAgICAgICAgSE1PRFVMRSBkY29tcCA9IDo6R2V0TW9k
dWxlSGFuZGxlKFRFWFQoImRjb21wLmRsbCIpKTsKLSAgICAgICAgaWYgKCFkY29tcCkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIEVfSU5WQUxJREFSRzsKLSAgICAgICAgfQotCi0gICAg
ICAgIHR5cGVkZWYgSFJFU1VMVChXSU5BUEkgKiBQRk5fRENPTVBPU0lUSU9OX0NSRUFURV9ERVZJ
Q0UpKAotICAgICAgICAgICAgSURYR0lEZXZpY2UgKiBkeGdpRGV2aWNlLCBSRUZJSUQgaWlkLCB2
b2lkICoqZGNvbXBvc2l0aW9uRGV2aWNlKTsKLSAgICAgICAgUEZOX0RDT01QT1NJVElPTl9DUkVB
VEVfREVWSUNFIGNyZWF0ZURDb21wID0KLSAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZO
X0RDT01QT1NJVElPTl9DUkVBVEVfREVWSUNFPigKLSAgICAgICAgICAgICAgICBHZXRQcm9jQWRk
cmVzcyhkY29tcCwgIkRDb21wb3NpdGlvbkNyZWF0ZURldmljZSIpKTsKLSAgICAgICAgaWYgKCFj
cmVhdGVEQ29tcCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEVfSU5WQUxJREFSRzsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmICghbURldmljZSkKLSAgICAgICAgewotICAgICAgICAg
ICAgSURYR0lEZXZpY2UgKmR4Z2lEZXZpY2UgPSBkM2QxMTo6RHluYW1pY0Nhc3RDb21PYmplY3Q8
SURYR0lEZXZpY2U+KGRldmljZSk7Ci0gICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGNyZWF0
ZURDb21wKGR4Z2lEZXZpY2UsIF9fdXVpZG9mKElEQ29tcG9zaXRpb25EZXZpY2UpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQg
Kio+KCZtRGV2aWNlKSk7Ci0gICAgICAgICAgICBTYWZlUmVsZWFzZShkeGdpRGV2aWNlKTsKLQot
ICAgICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAoIW1Db21wb3NpdGlvblRhcmdldCkKLSAgICAgICAgewotICAgICAgICAgICAgSFJFU1VM
VCByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVUYXJnZXRGb3JId25kKG1XaW5kb3csIFRSVUUsICZt
Q29tcG9zaXRpb25UYXJnZXQpOwotICAgICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIW1WaXN1YWwpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlVmlzdWFsKCZtVmlzdWFsKTsKLSAg
ICAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAg
SURYR0lGYWN0b3J5MiAqZmFjdG9yeTIgICAgICAgICAgICAgPSBkM2QxMTo6RHluYW1pY0Nhc3RD
b21PYmplY3Q8SURYR0lGYWN0b3J5Mj4oZmFjdG9yeSk7Ci0gICAgICAgIERYR0lfU1dBUF9DSEFJ
Tl9ERVNDMSBzd2FwQ2hhaW5EZXNjID0gezB9OwotICAgICAgICBzd2FwQ2hhaW5EZXNjLldpZHRo
ICAgICAgICAgICAgICAgICA9IHdpZHRoOwotICAgICAgICBzd2FwQ2hhaW5EZXNjLkhlaWdodCAg
ICAgICAgICAgICAgICA9IGhlaWdodDsKLSAgICAgICAgc3dhcENoYWluRGVzYy5Gb3JtYXQgICAg
ICAgICAgICAgICAgPSBmb3JtYXQ7Ci0gICAgICAgIHN3YXBDaGFpbkRlc2MuU3RlcmVvICAgICAg
ICAgICAgICAgID0gRkFMU0U7Ci0gICAgICAgIHN3YXBDaGFpbkRlc2MuU2FtcGxlRGVzYy5Db3Vu
dCAgICAgID0gMTsKLSAgICAgICAgc3dhcENoYWluRGVzYy5TYW1wbGVEZXNjLlF1YWxpdHkgICAg
PSAwOwotICAgICAgICBzd2FwQ2hhaW5EZXNjLkJ1ZmZlclVzYWdlID0KLSAgICAgICAgICAgIERY
R0lfVVNBR0VfUkVOREVSX1RBUkdFVF9PVVRQVVQgfCBEWEdJX1VTQUdFX0JBQ0tfQlVGRkVSIHwg
RFhHSV9VU0FHRV9TSEFERVJfSU5QVVQ7Ci0gICAgICAgIHN3YXBDaGFpbkRlc2MuQnVmZmVyQ291
bnQgICAgICAgICAgID0gMjsKLSAgICAgICAgc3dhcENoYWluRGVzYy5TY2FsaW5nICAgICAgICAg
ICAgICAgPSBEWEdJX1NDQUxJTkdfU1RSRVRDSDsKLSAgICAgICAgc3dhcENoYWluRGVzYy5Td2Fw
RWZmZWN0ID0gRFhHSV9TV0FQX0VGRkVDVF9GTElQX1NFUVVFTlRJQUw7Ci0gICAgICAgIHN3YXBD
aGFpbkRlc2MuQWxwaGFNb2RlID0KLSAgICAgICAgICAgIG1Db25maWctPmFscGhhU2l6ZSA9PSAw
ID8gRFhHSV9BTFBIQV9NT0RFX0lHTk9SRSA6IERYR0lfQUxQSEFfTU9ERV9QUkVNVUxUSVBMSUVE
OwotICAgICAgICBzd2FwQ2hhaW5EZXNjLkZsYWdzICAgICAgICAgPSAwOwotICAgICAgICBJRFhH
SVN3YXBDaGFpbjEgKnN3YXBDaGFpbjEgPSBudWxscHRyOwotICAgICAgICBIUkVTVUxUIHJlc3Vs
dCA9Ci0gICAgICAgICAgICBmYWN0b3J5Mi0+Q3JlYXRlU3dhcENoYWluRm9yQ29tcG9zaXRpb24o
ZGV2aWNlLCAmc3dhcENoYWluRGVzYywgbnVsbHB0ciwgJnN3YXBDaGFpbjEpOwotICAgICAgICBp
ZiAoU1VDQ0VFREVEKHJlc3VsdCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgICpzd2FwQ2hhaW4g
PSBzdGF0aWNfY2FzdDxEWEdJU3dhcENoYWluICo+KHN3YXBDaGFpbjEpOwotICAgICAgICB9Ci0g
ICAgICAgIG1WaXN1YWwtPlNldENvbnRlbnQoc3dhcENoYWluMSk7Ci0gICAgICAgIG1Db21wb3Np
dGlvblRhcmdldC0+U2V0Um9vdChtVmlzdWFsKTsKLSAgICAgICAgU2FmZVJlbGVhc2UoZmFjdG9y
eTIpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIC8vIFVzZSBJRFhHSUZh
Y3RvcnkyOjpDcmVhdGVTd2FwQ2hhaW5Gb3JId25kIGlmIERYR0kgMS4yIGlzIGF2YWlsYWJsZSB0
byBjcmVhdGUgYSBEWEdJX1NXQVBfRUZGRUNUX1NFUVVFTlRJQUwgc3dhcCBjaGFpbi4KLSAgICBJ
RFhHSUZhY3RvcnkyICpmYWN0b3J5MiA9IGQzZDExOjpEeW5hbWljQ2FzdENvbU9iamVjdDxJRFhH
SUZhY3RvcnkyPihmYWN0b3J5KTsKLSAgICBpZiAoZmFjdG9yeTIgIT0gbnVsbHB0cikKLSAgICB7
Ci0gICAgICAgIERYR0lfU1dBUF9DSEFJTl9ERVNDMSBzd2FwQ2hhaW5EZXNjID0geyAwIH07Ci0g
ICAgICAgIHN3YXBDaGFpbkRlc2MuV2lkdGggPSB3aWR0aDsKLSAgICAgICAgc3dhcENoYWluRGVz
Yy5IZWlnaHQgPSBoZWlnaHQ7Ci0gICAgICAgIHN3YXBDaGFpbkRlc2MuRm9ybWF0ID0gZm9ybWF0
OwotICAgICAgICBzd2FwQ2hhaW5EZXNjLlN0ZXJlbyA9IEZBTFNFOwotICAgICAgICBzd2FwQ2hh
aW5EZXNjLlNhbXBsZURlc2MuQ291bnQgPSAxOwotICAgICAgICBzd2FwQ2hhaW5EZXNjLlNhbXBs
ZURlc2MuUXVhbGl0eSA9IDA7Ci0gICAgICAgIHN3YXBDaGFpbkRlc2MuQnVmZmVyVXNhZ2UgPQot
ICAgICAgICAgICAgRFhHSV9VU0FHRV9SRU5ERVJfVEFSR0VUX09VVFBVVCB8IERYR0lfVVNBR0Vf
U0hBREVSX0lOUFVUIHwgRFhHSV9VU0FHRV9CQUNLX0JVRkZFUjsKLSAgICAgICAgc3dhcENoYWlu
RGVzYy5CdWZmZXJDb3VudCA9IDE7Ci0gICAgICAgIHN3YXBDaGFpbkRlc2MuU2NhbGluZyA9IERY
R0lfU0NBTElOR19TVFJFVENIOwotICAgICAgICBzd2FwQ2hhaW5EZXNjLlN3YXBFZmZlY3QgPSBE
WEdJX1NXQVBfRUZGRUNUX1NFUVVFTlRJQUw7Ci0gICAgICAgIHN3YXBDaGFpbkRlc2MuQWxwaGFN
b2RlID0gRFhHSV9BTFBIQV9NT0RFX1VOU1BFQ0lGSUVEOwotICAgICAgICBzd2FwQ2hhaW5EZXNj
LkZsYWdzID0gMDsKLSAgICAgICAgSURYR0lTd2FwQ2hhaW4xICpzd2FwQ2hhaW4xID0gbnVsbHB0
cjsKLSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBmYWN0b3J5Mi0+Q3JlYXRlU3dhcENoYWluRm9y
SHduZChkZXZpY2UsIG1XaW5kb3csICZzd2FwQ2hhaW5EZXNjLCBudWxscHRyLCBudWxscHRyLCAm
c3dhcENoYWluMSk7Ci0gICAgICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkKLSAgICAgICAgewot
ICAgICAgICAgICAgKnN3YXBDaGFpbiA9IHN0YXRpY19jYXN0PERYR0lTd2FwQ2hhaW4qPihzd2Fw
Q2hhaW4xKTsKLSAgICAgICAgfQotICAgICAgICBTYWZlUmVsZWFzZShmYWN0b3J5Mik7Ci0gICAg
ICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgRFhHSV9TV0FQX0NIQUlOX0RFU0Mgc3dh
cENoYWluRGVzYyA9IHt9OwotICAgIHN3YXBDaGFpbkRlc2MuQnVmZmVyQ291bnQgPSAxOwotICAg
IHN3YXBDaGFpbkRlc2MuQnVmZmVyRGVzYy5Gb3JtYXQgPSBmb3JtYXQ7Ci0gICAgc3dhcENoYWlu
RGVzYy5CdWZmZXJEZXNjLldpZHRoID0gd2lkdGg7Ci0gICAgc3dhcENoYWluRGVzYy5CdWZmZXJE
ZXNjLkhlaWdodCA9IGhlaWdodDsKLSAgICBzd2FwQ2hhaW5EZXNjLkJ1ZmZlckRlc2MuU2NhbGlu
ZyA9IERYR0lfTU9ERV9TQ0FMSU5HX1VOU1BFQ0lGSUVEOwotICAgIHN3YXBDaGFpbkRlc2MuQnVm
ZmVyRGVzYy5TY2FubGluZU9yZGVyaW5nID0gRFhHSV9NT0RFX1NDQU5MSU5FX09SREVSX1VOU1BF
Q0lGSUVEOwotICAgIHN3YXBDaGFpbkRlc2MuQnVmZmVyRGVzYy5SZWZyZXNoUmF0ZS5OdW1lcmF0
b3IgPSAwOwotICAgIHN3YXBDaGFpbkRlc2MuQnVmZmVyRGVzYy5SZWZyZXNoUmF0ZS5EZW5vbWlu
YXRvciA9IDE7Ci0gICAgc3dhcENoYWluRGVzYy5CdWZmZXJVc2FnZSA9Ci0gICAgICAgIERYR0lf
VVNBR0VfUkVOREVSX1RBUkdFVF9PVVRQVVQgfCBEWEdJX1VTQUdFX1NIQURFUl9JTlBVVCB8IERY
R0lfVVNBR0VfQkFDS19CVUZGRVI7Ci0gICAgc3dhcENoYWluRGVzYy5GbGFncyA9IDA7Ci0gICAg
c3dhcENoYWluRGVzYy5PdXRwdXRXaW5kb3cgPSBtV2luZG93OwotICAgIHN3YXBDaGFpbkRlc2Mu
U2FtcGxlRGVzYy5Db3VudCA9IDE7Ci0gICAgc3dhcENoYWluRGVzYy5TYW1wbGVEZXNjLlF1YWxp
dHkgPSAwOwotICAgIHN3YXBDaGFpbkRlc2MuV2luZG93ZWQgPSBUUlVFOwotICAgIHN3YXBDaGFp
bkRlc2MuU3dhcEVmZmVjdCA9IERYR0lfU1dBUF9FRkZFQ1RfRElTQ0FSRDsKLQotICAgIHJldHVy
biBmYWN0b3J5LT5DcmVhdGVTd2FwQ2hhaW4oZGV2aWNlLCAmc3dhcENoYWluRGVzYywgc3dhcENo
YWluKTsKLX0KLQotdm9pZCBOYXRpdmVXaW5kb3c6OmNvbW1pdENoYW5nZSgpCi17Ci0gICAgaWYg
KG1EZXZpY2UpCi0gICAgewotICAgICAgICBtRGV2aWNlLT5Db21taXQoKTsKLSAgICB9Ci19Ci19
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL3dpbnJ0L0NvcmVXaW5kb3dOYXRpdmVXaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lu
cnQvQ29yZVdpbmRvd05hdGl2ZVdpbmRvdy5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQv
Q29yZVdpbmRvd05hdGl2ZVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDEyICs4OCwx
MiBAQCBib29sIENvcmVXaW5kb3dOYXRpdmVXaW5kb3c6OmluaXRpYWxpemUoCiAgICAgICAgIH0K
ICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBTSVpFIGNvcmVXaW5kb3dTaXpl
OworICAgICAgICAgICAgU2l6ZSBjb3JlV2luZG93U2l6ZTsKICAgICAgICAgICAgIHJlc3VsdCA9
IEdldENvcmVXaW5kb3dTaXplSW5QaXhlbHMobUNvcmVXaW5kb3csICZjb3JlV2luZG93U2l6ZSk7
CiAKICAgICAgICAgICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBtQ2xpZW50UmVjdCA9IHsgMCwgMCwgc3RhdGljX2Nhc3Q8bG9uZz4oY29y
ZVdpbmRvd1NpemUuY3ggKiBtU3dhcENoYWluU2NhbGUpLCBzdGF0aWNfY2FzdDxsb25nPihjb3Jl
V2luZG93U2l6ZS5jeSAqIG1Td2FwQ2hhaW5TY2FsZSkgfTsKKyAgICAgICAgICAgICAgICBtQ2xp
ZW50UmVjdCA9IGNsaWVudFJlY3QoY29yZVdpbmRvd1NpemUpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQpAQCAtMTM1LDEyICsxMzUsMTIgQEAgdm9pZCBDb3JlV2luZG93TmF0aXZl
V2luZG93Ojp1bnJlZ2lzdGVyRgogfQogCiBIUkVTVUxUIENvcmVXaW5kb3dOYXRpdmVXaW5kb3c6
OmNyZWF0ZVN3YXBDaGFpbihJRDNEMTFEZXZpY2UgKmRldmljZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lGYWN0b3J5ICpmYWN0b3J5LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSURYR0lGYWN0b3J5
MiAqZmFjdG9yeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBoZWlnaHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNvbnRhaW5zQWxw
aGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
U3dhcENoYWluICoqc3dhcENoYWluKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSURYR0lTd2FwQ2hhaW4xICoqc3dhcENoYWluKQogewogICAgIGlmIChk
ZXZpY2UgPT0gTlVMTCB8fCBmYWN0b3J5ID09IE5VTEwgfHwgc3dhcENoYWluID09IE5VTEwgfHwg
d2lkdGggPT0gMCB8fCBoZWlnaHQgPT0gMCkKICAgICB7CkBAIC0xNjcsMTcgKzE2Nyw2IEBAIEhS
RVNVTFQgQ29yZVdpbmRvd05hdGl2ZVdpbmRvdzo6Y3JlYXRlU3cKICAgICBIUkVTVUxUIHJlc3Vs
dCA9IGZhY3RvcnktPkNyZWF0ZVN3YXBDaGFpbkZvckNvcmVXaW5kb3coZGV2aWNlLCBtQ29yZVdp
bmRvdy5HZXQoKSwgJnN3YXBDaGFpbkRlc2MsIG51bGxwdHIsIG5ld1N3YXBDaGFpbi5SZWxlYXNl
QW5kR2V0QWRkcmVzc09mKCkpOwogICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkKICAgICB7Ci0K
LSNpZiAoV0lOQVBJX0ZBTUlMWSA9PSBXSU5BUElfRkFNSUxZX1BIT05FX0FQUCkKLSAgICAgICAg
Ly8gVGVzdCBpZiBzd2FwY2hhaW4gc3VwcG9ydHMgcmVzaXplLiAgT24gV2luZG93cyBQaG9uZSBk
ZXZpY2VzLCB0aGlzIHdpbGwgcmV0dXJuIERYR0lfRVJST1JfVU5TVVBQT1JURUQuICBPbgotICAg
ICAgICAvLyBvdGhlciBkZXZpY2VzIERYR0lfRVJST1JfSU5WQUxJRF9DQUxMIHNob3VsZCBiZSBy
ZXR1cm5lZCBiZWNhdXNlIHRoZSBjb21iaW5hdGlvbiBvZiBmbGFncyBwYXNzZWQKLSAgICAgICAg
Ly8gKERYR0lfU1dBUF9DSEFJTl9GTEFHX05PTlBSRVJPVEFURUQgfCBEWEdJX1NXQVBfQ0hBSU5f
RkxBR19HRElfQ09NUEFUSUJMRSkgYXJlIGludmFsaWQgZmxhZyBjb21iaW5hdGlvbnMuCi0gICAg
ICAgIGlmIChuZXdTd2FwQ2hhaW4tPlJlc2l6ZUJ1ZmZlcnMoc3dhcENoYWluRGVzYy5CdWZmZXJD
b3VudCwgc3dhcENoYWluRGVzYy5XaWR0aCwgc3dhcENoYWluRGVzYy5IZWlnaHQsIHN3YXBDaGFp
bkRlc2MuRm9ybWF0LCBEWEdJX1NXQVBfQ0hBSU5fRkxBR19OT05QUkVST1RBVEVEIHwgRFhHSV9T
V0FQX0NIQUlOX0ZMQUdfR0RJX0NPTVBBVElCTEUpID09IERYR0lfRVJST1JfVU5TVVBQT1JURUQp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIG1TdXBwb3J0c1N3YXBDaGFpblJlc2l6ZSA9IGZhbHNl
OwotICAgICAgICB9Ci0jZW5kaWYgLy8gKFdJTkFQSV9GQU1JTFkgPT0gV0lOQVBJX0ZBTUlMWV9Q
SE9ORV9BUFApCi0KICAgICAgICAgcmVzdWx0ID0gbmV3U3dhcENoYWluLkNvcHlUbyhzd2FwQ2hh
aW4pOwogICAgIH0KIApAQCAtMTk0LDE0ICsxODMsMTYgQEAgSFJFU1VMVCBDb3JlV2luZG93TmF0
aXZlV2luZG93OjpjcmVhdGVTdwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlubGluZSBIUkVT
VUxUIENvcmVXaW5kb3dOYXRpdmVXaW5kb3c6OnNjYWxlU3dhcENoYWluKGNvbnN0IFNJWkUgJndp
bmRvd1NpemUsIGNvbnN0IFJFQ1QgJmNsaWVudFJlY3QpCitpbmxpbmUgSFJFU1VMVCBDb3JlV2lu
ZG93TmF0aXZlV2luZG93OjpzY2FsZVN3YXBDaGFpbihjb25zdCBTaXplICZ3aW5kb3dTaXplLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgUkVDVCAmY2xpZW50UmVjdCkKIHsKICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGRvIGFueSBh
ZGRpdGlvbmFsIHdvcmsgdG8gc2NhbGUgQ29yZVdpbmRvdyBzd2FwY2hhaW5zLgogICAgIC8vIFVz
aW5nIERYR0lfU0NBTElOR19TVFJFVENIIHRvIGNyZWF0ZSB0aGUgc3dhcGNoYWluIGFib3ZlIGRv
ZXMgYWxsIHRoZSBuZWNlc3Nhcnkgd29yay4KICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VM
VCBHZXRDb3JlV2luZG93U2l6ZUluUGl4ZWxzKGNvbnN0IENvbVB0cjxBQkk6OldpbmRvd3M6OlVJ
OjpDb3JlOjpJQ29yZVdpbmRvdz4mIGNvcmVXaW5kb3csIFNJWkUgKndpbmRvd1NpemUpCitIUkVT
VUxUIEdldENvcmVXaW5kb3dTaXplSW5QaXhlbHMoY29uc3QgQ29tUHRyPEFCSTo6V2luZG93czo6
VUk6OkNvcmU6OklDb3JlV2luZG93PiAmY29yZVdpbmRvdywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaXplICp3aW5kb3dTaXplKQogewogICAgIEFCSTo6V2luZG93czo6Rm91
bmRhdGlvbjo6UmVjdCBib3VuZHM7CiAgICAgSFJFU1VMVCByZXN1bHQgPSBjb3JlV2luZG93LT5n
ZXRfQm91bmRzKCZib3VuZHMpOwpAQCAtMjMwLDkgKzIyMSw5IEBAIHN0YXRpYyBmbG9hdCBHZXRM
b2dpY2FsRHBpKCkKICAgICByZXR1cm4gOTYuMGY7CiB9CiAKLWxvbmcgQ29udmVydERpcHNUb1Bp
eGVscyhmbG9hdCBkaXBzKQorZmxvYXQgQ29udmVydERpcHNUb1BpeGVscyhmbG9hdCBkaXBzKQog
ewogICAgIHN0YXRpYyBjb25zdCBmbG9hdCBkaXBzUGVySW5jaCA9IDk2LjBmOwotICAgIHJldHVy
biBscm91bmQoKGRpcHMgKiBHZXRMb2dpY2FsRHBpKCkgLyBkaXBzUGVySW5jaCkpOworICAgIHJl
dHVybiBkaXBzICogR2V0TG9naWNhbERwaSgpIC8gZGlwc1BlckluY2g7CiB9CiB9CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dp
bnJ0L0NvcmVXaW5kb3dOYXRpdmVXaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbnJ0L0NvcmVXaW5k
b3dOYXRpdmVXaW5kb3cuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW5ydC9Db3JlV2luZG93TmF0
aXZlV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzLDExICsxMywxMyBAQAogCiAjaW5jbHVk
ZSA8bWVtb3J5PgogCisjaW5jbHVkZSA8RUdML2VnbHBsYXRmb3JtLmg+CisKIHR5cGVkZWYgQUJJ
OjpXaW5kb3dzOjpGb3VuZGF0aW9uOjpfX0ZJVHlwZWRFdmVudEhhbmRsZXJfMl9XaW5kb3dzX19D
VUlfX0NDb3JlX19DQ29yZVdpbmRvd19XaW5kb3dzX19DVUlfX0NDb3JlX19DV2luZG93U2l6ZUNo
YW5nZWRFdmVudEFyZ3NfdCBJV2luZG93U2l6ZUNoYW5nZWRFdmVudEhhbmRsZXI7CiAKIG5hbWVz
cGFjZSByeAogewotbG9uZyBDb252ZXJ0RGlwc1RvUGl4ZWxzKGZsb2F0IGRpcHMpOworZmxvYXQg
Q29udmVydERpcHNUb1BpeGVscyhmbG9hdCBkaXBzKTsKIAogY2xhc3MgQ29yZVdpbmRvd05hdGl2
ZVdpbmRvdyA6IHB1YmxpYyBJbnNwZWN0YWJsZU5hdGl2ZVdpbmRvdywgcHVibGljIHN0ZDo6ZW5h
YmxlX3NoYXJlZF9mcm9tX3RoaXM8Q29yZVdpbmRvd05hdGl2ZVdpbmRvdz4KIHsKQEAgLTI2LDE1
ICsyOCwxNSBAQCBjbGFzcyBDb3JlV2luZG93TmF0aXZlV2luZG93IDogcHVibGljIEluCiAKICAg
ICBib29sIGluaXRpYWxpemUoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIElQcm9wZXJ0eVNl
dCAqcHJvcGVydHlTZXQpIG92ZXJyaWRlOwogICAgIEhSRVNVTFQgY3JlYXRlU3dhcENoYWluKElE
M0QxMURldmljZSAqZGV2aWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lGYWN0
b3J5ICpmYWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEWEdJRmFjdG9yeTIg
KmZhY3RvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVQgZm9ybWF0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB3aWR0aCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaGVpZ2h0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgY29udGFpbnNBbHBoYSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJU3dhcENoYWluICoqc3dhcENoYWluKSBvdmVycmlkZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJRFhHSVN3YXBDaGFpbjEgKipzd2FwQ2hhaW4pIG92ZXJyaWRlOwog
CiAgIHByb3RlY3RlZDoKLSAgICBIUkVTVUxUIHNjYWxlU3dhcENoYWluKGNvbnN0IFNJWkUgJndp
bmRvd1NpemUsIGNvbnN0IFJFQ1QgJmNsaWVudFJlY3QpIG92ZXJyaWRlOworICAgIEhSRVNVTFQg
c2NhbGVTd2FwQ2hhaW4oY29uc3QgU2l6ZSAmd2luZG93U2l6ZSwgY29uc3QgUkVDVCAmY2xpZW50
UmVjdCkgb3ZlcnJpZGU7CiAKICAgICBib29sIHJlZ2lzdGVyRm9yU2l6ZUNoYW5nZUV2ZW50cygp
OwogICAgIHZvaWQgdW5yZWdpc3RlckZvclNpemVDaGFuZ2VFdmVudHMoKTsKQEAgLTcwLDcgKzcy
LDggQEAgY2xhc3MgQ29yZVdpbmRvd1NpemVDaGFuZ2VkSGFuZGxlciA6CiAgICAgICAgICAgICBB
Qkk6OldpbmRvd3M6OkZvdW5kYXRpb246OlNpemUgd2luZG93U2l6ZTsKICAgICAgICAgICAgIGlm
IChTVUNDRUVERUQoc2l6ZUNoYW5nZWRFdmVudEFyZ3MtPmdldF9TaXplKCZ3aW5kb3dTaXplKSkp
CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgU0laRSB3aW5kb3dTaXplSW5QaXhlbHMg
PSB7IENvbnZlcnREaXBzVG9QaXhlbHMod2luZG93U2l6ZS5XaWR0aCksIENvbnZlcnREaXBzVG9Q
aXhlbHMod2luZG93U2l6ZS5IZWlnaHQpIH07CisgICAgICAgICAgICAgICAgU2l6ZSB3aW5kb3dT
aXplSW5QaXhlbHMgPSB7Q29udmVydERpcHNUb1BpeGVscyh3aW5kb3dTaXplLldpZHRoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJ0RGlwc1RvUGl4
ZWxzKHdpbmRvd1NpemUuSGVpZ2h0KX07CiAgICAgICAgICAgICAgICAgaG9zdC0+c2V0TmV3Q2xp
ZW50U2l6ZSh3aW5kb3dTaXplSW5QaXhlbHMpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBA
IC04Miw3ICs4NSw4IEBAIGNsYXNzIENvcmVXaW5kb3dTaXplQ2hhbmdlZEhhbmRsZXIgOgogICAg
IHN0ZDo6d2Vha19wdHI8SW5zcGVjdGFibGVOYXRpdmVXaW5kb3c+IG1Ib3N0OwogfTsKIAotSFJF
U1VMVCBHZXRDb3JlV2luZG93U2l6ZUluUGl4ZWxzKGNvbnN0IENvbVB0cjxBQkk6OldpbmRvd3M6
OlVJOjpDb3JlOjpJQ29yZVdpbmRvdz4mIGNvcmVXaW5kb3csIFNJWkUgKndpbmRvd1NpemUpOwor
SFJFU1VMVCBHZXRDb3JlV2luZG93U2l6ZUluUGl4ZWxzKGNvbnN0IENvbVB0cjxBQkk6OldpbmRv
d3M6OlVJOjpDb3JlOjpJQ29yZVdpbmRvdz4gJmNvcmVXaW5kb3csCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2l6ZSAqd2luZG93U2l6ZSk7CiB9CiAKICNlbmRpZiAvLyBMSUJB
TkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfV0lOUlRfQ09SRVdJTkRPV05BVElWRVdJTkRPV19IXwpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS93aW5ydC9JbnNwZWN0YWJsZU5hdGl2ZVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW5y
dC9JbnNwZWN0YWJsZU5hdGl2ZVdpbmRvdy5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQv
SW5zcGVjdGFibGVOYXRpdmVXaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw5NiArMTEs
NiBAQAogCiBuYW1lc3BhY2UgcngKIHsKLU5hdGl2ZVdpbmRvdzo6TmF0aXZlV2luZG93KEVHTE5h
dGl2ZVdpbmRvd1R5cGUgd2luZG93LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
ZWdsOjpDb25maWcgKmNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGly
ZWN0Q29tcG9zaXRpb24pCi17Ci0gICAgbVdpbmRvdyA9IHdpbmRvdzsKLSAgICBtQ29uZmlnID0g
Y29uZmlnOwotfQotCi1OYXRpdmVXaW5kb3c6On5OYXRpdmVXaW5kb3coKQotewotfQotCi12b2lk
IE5hdGl2ZVdpbmRvdzo6Y29tbWl0Q2hhbmdlKCkKLXsKLX0KLQotYm9vbCBOYXRpdmVXaW5kb3c6
OmluaXRpYWxpemUoKQotewotICAgIC8vIElmIHRoZSBuYXRpdmUgd2luZG93IHR5cGUgaXMgYSBJ
UHJvcGVydHlTZXQsIGV4dHJhY3QgdGhlCi0gICAgLy8gRUdMTmF0aXZlV2luZG93VHlwZSAoSUlu
c3BlY3RhYmxlKSBhbmQgaW5pdGlhbGl6ZSB0aGUKLSAgICAvLyBwcm9wZXIgaG9zdCB3aXRoIHRo
aXMgSVByb3BlcnR5U2V0LgotICAgIENvbVB0cjxBQkk6OldpbmRvd3M6OkZvdW5kYXRpb246OkNv
bGxlY3Rpb25zOjpJUHJvcGVydHlTZXQ+IHByb3BlcnR5U2V0OwotICAgIENvbVB0cjxJSW5zcGVj
dGFibGU+IGVnbE5hdGl2ZVdpbmRvdzsKLSAgICBpZiAoSXNFR0xDb25maWd1cmVkUHJvcGVydHlT
ZXQobVdpbmRvdywgJnByb3BlcnR5U2V0LCAmZWdsTmF0aXZlV2luZG93KSkKLSAgICB7Ci0gICAg
ICAgIC8vIEEgcHJvcGVydHkgc2V0IHdhcyBmb3VuZCBhbmQgdGhlIEVHTE5hdGl2ZVdpbmRvd1R5
cGUgd2FzCi0gICAgICAgIC8vIHJldHJpZXZlZC4gVGhlIG1XaW5kb3cgbWVtYmVyIG9mIHRoZSBo
b3N0IHRvIG11c3QgYmUgdXBkYXRlZAotICAgICAgICAvLyB0byB1c2UgdGhlIEVHTE5hdGl2ZVdp
bmRvd1R5cGUgc3BlY2lmaWVkIGluIHRoZSBwcm9wZXJ0eSBzZXQuCi0gICAgICAgIC8vIG1XaW5k
b3cgaXMgdHJlYXRlZCBhcyBhIHJhdyBwb2ludGVyIG5vdCBhbiBBZGRSZWYnZCBpbnRlcmZhY2Us
IHNvCi0gICAgICAgIC8vIHRoZSBvbGQgbVdpbmRvdyBkb2VzIG5vdCBuZWVkIGEgUmVsZWFzZSgp
IGJlZm9yZSB0aGlzIGFzc2lnbm1lbnQuCi0gICAgICAgIG1XaW5kb3cgPSBlZ2xOYXRpdmVXaW5k
b3cuR2V0KCk7Ci0gICAgfQotCi0gICAgQ29tUHRyPEFCSTo6V2luZG93czo6VUk6OkNvcmU6OklD
b3JlV2luZG93PiBjb3JlV2luZG93OwotICAgIENvbVB0cjxBQkk6OldpbmRvd3M6OlVJOjpYYW1s
OjpDb250cm9sczo6SVN3YXBDaGFpblBhbmVsPiBzd2FwQ2hhaW5QYW5lbDsKLSAgICBpZiAoSXND
b3JlV2luZG93KG1XaW5kb3csICZjb3JlV2luZG93KSkKLSAgICB7Ci0gICAgICAgIG1JbXBsID0g
c3RkOjptYWtlX3NoYXJlZDxDb3JlV2luZG93TmF0aXZlV2luZG93PigpOwotICAgICAgICBpZiAo
bUltcGwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtSW1wbC0+aW5pdGlhbGl6ZSht
V2luZG93LCBwcm9wZXJ0eVNldC5HZXQoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSBp
ZiAoSXNTd2FwQ2hhaW5QYW5lbChtV2luZG93LCAmc3dhcENoYWluUGFuZWwpKQotICAgIHsKLSAg
ICAgICAgbUltcGwgPSBzdGQ6Om1ha2Vfc2hhcmVkPFN3YXBDaGFpblBhbmVsTmF0aXZlV2luZG93
PigpOwotICAgICAgICBpZiAobUltcGwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBt
SW1wbC0+aW5pdGlhbGl6ZShtV2luZG93LCBwcm9wZXJ0eVNldC5HZXQoKSk7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgRVJSKCJJbnZhbGlkIElJbnNwZWN0YWJs
ZSBFR0xOYXRpdmVXaW5kb3dUeXBlIGRldGVjdGVkLiBWYWxpZCBJSW5zcGVjdGFibGVzIGluY2x1
ZGUgSUNvcmVXaW5kb3csIElTd2FwQ2hhaW5QYW5lbCBhbmQgSVByb3BlcnR5U2V0Iik7Ci0gICAg
fQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIE5hdGl2ZVdpbmRvdzo6Z2V0Q2xpZW50
UmVjdChSRUNUICpyZWN0KQotewotICAgIGlmIChtSW1wbCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtSW1wbC0+Z2V0Q2xpZW50UmVjdChyZWN0KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLWJvb2wgTmF0aXZlV2luZG93Ojppc0ljb25pYygpCi17Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi1ib29sIE5hdGl2ZVdpbmRvdzo6aXNWYWxpZE5hdGl2ZVdpbmRvdyhFR0xOYXRpdmVX
aW5kb3dUeXBlIHdpbmRvdykKLXsKLSAgICByZXR1cm4gSXNWYWxpZEVHTE5hdGl2ZVdpbmRvd1R5
cGUod2luZG93KTsKLX0KLQotSFJFU1VMVCBOYXRpdmVXaW5kb3c6OmNyZWF0ZVN3YXBDaGFpbihJ
RDNEMTFEZXZpY2UgKmRldmljZSwgRFhHSUZhY3RvcnkgKmZhY3RvcnksIERYR0lfRk9STUFUIGZv
cm1hdCwgdW5zaWduZWQgaW50IHdpZHRoLCB1bnNpZ25lZCBpbnQgaGVpZ2h0LCBEWEdJU3dhcENo
YWluICoqc3dhcENoYWluKQotewotICAgIGlmIChtSW1wbCkKLSAgICB7Ci0gICAgICAgIGJvb2wg
Y29udGFpbnNBbHBoYSA9IChtQ29uZmlnLT5hbHBoYVNpemUgPiAwKTsKLSAgICAgICAgcmV0dXJu
IG1JbXBsLT5jcmVhdGVTd2FwQ2hhaW4oZGV2aWNlLCBmYWN0b3J5LCBmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsIGNvbnRhaW5zQWxwaGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN3YXBDaGFpbik7Ci0gICAgfQotCi0gICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKLX0KIAog
Ym9vbCBJc0NvcmVXaW5kb3coRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIENvbVB0cjxBQkk6
OldpbmRvd3M6OlVJOjpDb3JlOjpJQ29yZVdpbmRvdz4gKmNvcmVXaW5kb3cpCiB7CkBAIC0yMDcs
MTggKzExNyw2IEBAIGJvb2wgSXNFR0xDb25maWd1cmVkUHJvcGVydHlTZXQoRUdMTmF0aXYKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLS8vIEEgVmFsaWQgRUdMTmF0aXZlV2luZG93VHlwZSBJSW5z
cGVjdGFibGUgY2FuIG9ubHkgYmU6Ci0vLwotLy8gSUNvcmVXaW5kb3cKLS8vIElTd2FwQ2hhaW5Q
YW5lbAotLy8gSVByb3BlcnR5U2V0Ci0vLwotLy8gQW55dGhpbmcgZWxzZSB3aWxsIGJlIHJlamVj
dGVkIGFzIGFuIGludmFsaWQgSUluc3BlY3RhYmxlLgotYm9vbCBJc1ZhbGlkRUdMTmF0aXZlV2lu
ZG93VHlwZShFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdykKLXsKLSAgICByZXR1cm4gSXNDb3Jl
V2luZG93KHdpbmRvdykgfHwgSXNTd2FwQ2hhaW5QYW5lbCh3aW5kb3cpIHx8IElzRUdMQ29uZmln
dXJlZFByb3BlcnR5U2V0KHdpbmRvdyk7Ci19Ci0KIC8vIFJldHJpZXZlIGFuIG9wdGlvbmFsIHBy
b3BlcnR5IGZyb20gYSBwcm9wZXJ0eSBzZXQKIEhSRVNVTFQgR2V0T3B0aW9uYWxQcm9wZXJ0eVZh
bHVlKGNvbnN0IENvbVB0cjxBQkk6OldpbmRvd3M6OkZvdW5kYXRpb246OkNvbGxlY3Rpb25zOjpJ
TWFwPEhTVFJJTkcsIElJbnNwZWN0YWJsZSo+PiAmcHJvcGVydHlNYXAsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90ICpwcm9wZXJ0eU5hbWUsCkBAIC0zNjks
NCArMjY3LDEwIEBAIEhSRVNVTFQgR2V0T3B0aW9uYWxTaW5nbGVQcm9wZXJ0eVZhbHVlKGMKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCitSRUNUIEluc3BlY3RhYmxlTmF0aXZlV2luZG93OjpjbGll
bnRSZWN0KGNvbnN0IFNpemUgJnNpemUpCit7CisgICAgLy8gV2UgZG9uJ3QgaGF2ZSB0byBjaGVj
ayBpZiBhIHN3YXBjaGFpbiBzY2FsZSB3YXMgc3BlY2lmaWVkIGhlcmU7IHRoZSBkZWZhdWx0IHZh
bHVlIGlzIDEuMGYKKyAgICAvLyB3aGljaCB3aWxsIGhhdmUgbm8gZWZmZWN0LgorICAgIHJldHVy
biB7MCwgMCwgbHJvdW5kKHNpemUuV2lkdGggKiBtU3dhcENoYWluU2NhbGUpLCBscm91bmQoc2l6
ZS5IZWlnaHQgKiBtU3dhcENoYWluU2NhbGUpfTsKK30KIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQvSW5zcGVjdGFi
bGVOYXRpdmVXaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbnJ0L0luc3BlY3RhYmxlTmF0aXZlV2lu
ZG93LmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQvSW5zcGVjdGFibGVOYXRpdmVXaW5kb3cu
aAkod29ya2luZyBjb3B5KQpAQCAtMTAsMTQgKzEwLDE4IEBACiAjaWZuZGVmIExJQkFOR0xFX1JF
TkRFUkVSX0QzRF9EM0QxMV9XSU5SVF9JTlNQRUNUQUJMRU5BVElWRVdJTkRPV19IXwogI2RlZmlu
ZSBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfV0lOUlRfSU5TUEVDVEFCTEVOQVRJVkVXSU5E
T1dfSF8KIAotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9OYXRpdmVXaW5k
b3cuaCIKLQorI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgogI2luY2x1ZGUgImNvbW1vbi9wbGF0
Zm9ybS5oIgogCiAjaW5jbHVkZSAiYW5nbGVfd2luZG93c3N0b3JlLmgiCiAKKyNpbmNsdWRlIDxF
R0wvZWdscGxhdGZvcm0uaD4KKworI2luY2x1ZGUgPHdpbmRvd3MuYXBwbGljYXRpb25tb2RlbC5j
b3JlLmg+CiAjaW5jbHVkZSA8d2luZG93cy51aS54YW1sLmg+CiAjaW5jbHVkZSA8d2luZG93cy51
aS54YW1sLm1lZGlhLmR4aW50ZXJvcC5oPgorI2luY2x1ZGUgPHdybC5oPgorI2luY2x1ZGUgPHdy
bC93cmFwcGVycy9jb3Jld3JhcHBlcnMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIE1pY3Jvc29mdDo6
V1JMOwogdXNpbmcgbmFtZXNwYWNlIE1pY3Jvc29mdDo6V1JMOjpXcmFwcGVyczsKQEAgLTQ0LDEy
ICs0OCwxMiBAQCBjbGFzcyBJbnNwZWN0YWJsZU5hdGl2ZVdpbmRvdwogCiAgICAgdmlydHVhbCBi
b29sIGluaXRpYWxpemUoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIElQcm9wZXJ0eVNldCAq
cHJvcGVydHlTZXQpID0gMDsKICAgICB2aXJ0dWFsIEhSRVNVTFQgY3JlYXRlU3dhcENoYWluKElE
M0QxMURldmljZSAqZGV2aWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSUZhY3RvcnkgKmZhY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJRFhHSUZhY3RvcnkyICpmYWN0b3J5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVQgZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgY29udGFpbnNBbHBoYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lTd2FwQ2hhaW4gKipzd2FwQ2hhaW4pID0gMDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIElEWEdJU3dhcENoYWluMSAqKnN3YXBDaGFpbikgPSAwOwogCiAg
ICAgYm9vbCBnZXRDbGllbnRSZWN0KFJFQ1QgKnJlY3QpCiAgICAgewpAQCAtNjQsNyArNjgsNyBA
QCBjbGFzcyBJbnNwZWN0YWJsZU5hdGl2ZVdpbmRvdwogICAgIH0KIAogICAgIC8vIHNldE5ld0Ns
aWVudFNpemUgaXMgdXNlZCBieSB0aGUgV2luUlQgc2l6ZSBjaGFuZ2UgaGFuZGxlci4gSXQgaXNu
J3QgdXNlZCBieSB0aGUgcmVzdCBvZiBBTkdMRS4KLSAgICB2b2lkIHNldE5ld0NsaWVudFNpemUo
Y29uc3QgU0laRSAmbmV3V2luZG93U2l6ZSkKKyAgICB2b2lkIHNldE5ld0NsaWVudFNpemUoY29u
c3QgU2l6ZSAmbmV3V2luZG93U2l6ZSkKICAgICB7CiAgICAgICAgIC8vIElmIHRoZSBjbGllbnQg
ZG9lc24ndCBzdXBwb3J0IHN3YXBjaGFpbiByZXNpemluZyB0aGVuIHdlIHNob3VsZCBoYXZlIGFs
cmVhZHkgdW5yZWdpc3RlcmVkIGZyb20gc2l6ZSBjaGFuZ2UgaGFuZGxlcgogICAgICAgICBBU1NF
UlQobVN1cHBvcnRzU3dhcENoYWluUmVzaXplKTsKQEAgLTc0LDggKzc4LDcgQEAgY2xhc3MgSW5z
cGVjdGFibGVOYXRpdmVXaW5kb3cKICAgICAgICAgICAgIC8vIElmIHRoZSBzd2FwY2hhaW4gc2l6
ZSB3YXMgc3BlY2lmaWVkIHRoZW4gd2Ugc2hvdWxkIGlnbm9yZSB0aGlzIGNhbGwgdG9vCiAgICAg
ICAgICAgICBpZiAoIW1Td2FwQ2hhaW5TaXplU3BlY2lmaWVkKQogICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIC8vIFdlIGRvbid0IGhhdmUgdG8gY2hlY2sgaWYgYSBzd2FwY2hhaW4gc2Nh
bGUgd2FzIHNwZWNpZmllZCBoZXJlOyB0aGUgZGVmYXVsdCB2YWx1ZSBpcyAxLjBmIHdoaWNoIHdp
bGwgaGF2ZSBubyBlZmZlY3QuCi0gICAgICAgICAgICAgICAgbU5ld0NsaWVudFJlY3QgPSB7IDAs
IDAsIHN0YXRpY19jYXN0PGxvbmc+KG5ld1dpbmRvd1NpemUuY3ggKiBtU3dhcENoYWluU2NhbGUp
LCBzdGF0aWNfY2FzdDxsb25nPihuZXdXaW5kb3dTaXplLmN5ICogbVN3YXBDaGFpblNjYWxlKSB9
OworICAgICAgICAgICAgICAgIG1OZXdDbGllbnRSZWN0ICAgICA9IGNsaWVudFJlY3QobmV3V2lu
ZG93U2l6ZSk7CiAgICAgICAgICAgICAgICAgbUNsaWVudFJlY3RDaGFuZ2VkID0gdHJ1ZTsKIAog
ICAgICAgICAgICAgICAgIC8vIElmIGEgc2NhbGUgd2FzIHNwZWNpZmllZCwgdGhlbiBub3cgaXMg
dGhlIHRpbWUgdG8gYXBwbHkgdGhlIHNjYWxlIG1hdHJpeCBmb3IgdGhlIG5ldyBzd2FwY2hhaW4g
c2l6ZSBhbmQgd2luZG93IHNpemUKQEAgLTk1LDcgKzk4LDggQEAgY2xhc3MgSW5zcGVjdGFibGVO
YXRpdmVXaW5kb3cKICAgICB9CiAKICAgcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgSFJFU1VMVCBz
Y2FsZVN3YXBDaGFpbihjb25zdCBTSVpFICZ3aW5kb3dTaXplLCBjb25zdCBSRUNUICZjbGllbnRS
ZWN0KSA9IDA7CisgICAgdmlydHVhbCBIUkVTVUxUIHNjYWxlU3dhcENoYWluKGNvbnN0IFNpemUg
JndpbmRvd1NpemUsIGNvbnN0IFJFQ1QgJmNsaWVudFJlY3QpID0gMDsKKyAgICBSRUNUIGNsaWVu
dFJlY3QoY29uc3QgU2l6ZSAmc2l6ZSk7CiAKICAgICBib29sIG1TdXBwb3J0c1N3YXBDaGFpblJl
c2l6ZTsgLy8gU3VwcG9ydCBmb3IgSURYR0lTd2FwQ2hhaW46OlJlc2l6ZUJ1ZmZlcnMgbWV0aG9k
CiAgICAgYm9vbCBtU3dhcENoYWluU2l6ZVNwZWNpZmllZDsgIC8vIElmIGFuIEVHTFJlbmRlclN1
cmZhY2VTaXplUHJvcGVydHkgd2FzIHNwZWNpZmllZApAQCAtMTA4LDcgKzExMiw2IEBAIGNsYXNz
IEluc3BlY3RhYmxlTmF0aXZlV2luZG93CiAgICAgRXZlbnRSZWdpc3RyYXRpb25Ub2tlbiBtU2l6
ZUNoYW5nZWRFdmVudFRva2VuOwogfTsKIAotYm9vbCBJc1ZhbGlkRUdMTmF0aXZlV2luZG93VHlw
ZShFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdyk7CiBib29sIElzQ29yZVdpbmRvdyhFR0xOYXRp
dmVXaW5kb3dUeXBlIHdpbmRvdywgQ29tUHRyPEFCSTo6V2luZG93czo6VUk6OkNvcmU6OklDb3Jl
V2luZG93PiAqY29yZVdpbmRvdyA9IG51bGxwdHIpOwogYm9vbCBJc1N3YXBDaGFpblBhbmVsKEVH
TE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBDb21QdHI8QUJJOjpXaW5kb3dzOjpVSTo6WGFtbDo6
Q29udHJvbHM6OklTd2FwQ2hhaW5QYW5lbD4gKnN3YXBDaGFpblBhbmVsID0gbnVsbHB0cik7CiBi
b29sIElzRUdMQ29uZmlndXJlZFByb3BlcnR5U2V0KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93
LCBBQkk6OldpbmRvd3M6OkZvdW5kYXRpb246OkNvbGxlY3Rpb25zOjpJUHJvcGVydHlTZXQgKipw
cm9wZXJ0eVNldCA9IG51bGxwdHIsIElJbnNwZWN0YWJsZSAqKmluc3BlY3RhYmxlID0gbnVsbHB0
cik7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL3dpbnJ0L05hdGl2ZVdpbmRvdzExV2luUlQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lu
cnQvTmF0aXZlV2luZG93MTFXaW5SVC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW5ydC9OYXRpdmVX
aW5kb3cxMVdpblJULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyNiBAQAorLy8KKy8v
IENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisKKy8vIE5hdGl2ZVdpbmRvdzExV2luUlQuY3BwOiBOYXRpdmVXaW5kb3cgYmFzZSBj
bGFzcyBmb3IgbWFuYWdpbmcgSUluc3BlY3RhYmxlIG5hdGl2ZSB3aW5kb3cgdHlwZXMuCisKKyNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQvTmF0aXZlV2luZG93MTFX
aW5SVC5oIgorCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVy
MTFfdXRpbHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQv
Q29yZVdpbmRvd05hdGl2ZVdpbmRvdy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS93aW5ydC9JbnNwZWN0YWJsZU5hdGl2ZVdpbmRvdy5oIgorI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW5ydC9Td2FwQ2hhaW5QYW5lbE5hdGl2ZVdpbmRvdy5o
IgorCit1c2luZyBuYW1lc3BhY2UgTWljcm9zb2Z0OjpXUkw7Cit1c2luZyBuYW1lc3BhY2UgTWlj
cm9zb2Z0OjpXUkw6OldyYXBwZXJzOworCituYW1lc3BhY2UgcngKK3sKK05hdGl2ZVdpbmRvdzEx
V2luUlQ6Ok5hdGl2ZVdpbmRvdzExV2luUlQoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIGJv
b2wgaGFzQWxwaGEpCisgICAgOiBOYXRpdmVXaW5kb3cxMSh3aW5kb3cpLCBtSGFzQWxwaGEoaGFz
QWxwaGEpCit7Cit9CisKK2Jvb2wgTmF0aXZlV2luZG93MTFXaW5SVDo6aW5pdGlhbGl6ZSgpCit7
CisgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3cgPSBnZXROYXRpdmVXaW5kb3coKTsKKwor
ICAgIC8vIElmIHRoZSBuYXRpdmUgd2luZG93IHR5cGUgaXMgYSBJUHJvcGVydHlTZXQsIGV4dHJh
Y3QgdGhlCisgICAgLy8gRUdMTmF0aXZlV2luZG93VHlwZSAoSUluc3BlY3RhYmxlKSBhbmQgaW5p
dGlhbGl6ZSB0aGUKKyAgICAvLyBwcm9wZXIgaG9zdCB3aXRoIHRoaXMgSVByb3BlcnR5U2V0Lgor
ICAgIENvbVB0cjxBQkk6OldpbmRvd3M6OkZvdW5kYXRpb246OkNvbGxlY3Rpb25zOjpJUHJvcGVy
dHlTZXQ+IHByb3BlcnR5U2V0OworICAgIENvbVB0cjxJSW5zcGVjdGFibGU+IGVnbE5hdGl2ZVdp
bmRvdzsKKyAgICBpZiAoSXNFR0xDb25maWd1cmVkUHJvcGVydHlTZXQod2luZG93LCAmcHJvcGVy
dHlTZXQsICZlZ2xOYXRpdmVXaW5kb3cpKQorICAgIHsKKyAgICAgICAgLy8gQSBwcm9wZXJ0eSBz
ZXQgd2FzIGZvdW5kIGFuZCB0aGUgRUdMTmF0aXZlV2luZG93VHlwZSB3YXMKKyAgICAgICAgLy8g
cmV0cmlldmVkLiBUaGUgbVdpbmRvdyBtZW1iZXIgb2YgdGhlIGhvc3QgdG8gbXVzdCBiZSB1cGRh
dGVkCisgICAgICAgIC8vIHRvIHVzZSB0aGUgRUdMTmF0aXZlV2luZG93VHlwZSBzcGVjaWZpZWQg
aW4gdGhlIHByb3BlcnR5IHNldC4KKyAgICAgICAgLy8gbVdpbmRvdyBpcyB0cmVhdGVkIGFzIGEg
cmF3IHBvaW50ZXIgbm90IGFuIEFkZFJlZidkIGludGVyZmFjZSwgc28KKyAgICAgICAgLy8gdGhl
IG9sZCBtV2luZG93IGRvZXMgbm90IG5lZWQgYSBSZWxlYXNlKCkgYmVmb3JlIHRoaXMgYXNzaWdu
bWVudC4KKyAgICAgICAgd2luZG93ID0gZWdsTmF0aXZlV2luZG93LkdldCgpOworICAgIH0KKwor
ICAgIENvbVB0cjxBQkk6OldpbmRvd3M6OlVJOjpDb3JlOjpJQ29yZVdpbmRvdz4gY29yZVdpbmRv
dzsKKyAgICBDb21QdHI8QUJJOjpXaW5kb3dzOjpVSTo6WGFtbDo6Q29udHJvbHM6OklTd2FwQ2hh
aW5QYW5lbD4gc3dhcENoYWluUGFuZWw7CisgICAgaWYgKElzQ29yZVdpbmRvdyh3aW5kb3csICZj
b3JlV2luZG93KSkKKyAgICB7CisgICAgICAgIG1JbXBsID0gc3RkOjptYWtlX3NoYXJlZDxDb3Jl
V2luZG93TmF0aXZlV2luZG93PigpOworICAgICAgICBpZiAobUltcGwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBtSW1wbC0+aW5pdGlhbGl6ZSh3aW5kb3csIHByb3BlcnR5U2V0Lkdl
dCgpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChJc1N3YXBDaGFpblBhbmVsKHdp
bmRvdywgJnN3YXBDaGFpblBhbmVsKSkKKyAgICB7CisgICAgICAgIG1JbXBsID0gc3RkOjptYWtl
X3NoYXJlZDxTd2FwQ2hhaW5QYW5lbE5hdGl2ZVdpbmRvdz4oKTsKKyAgICAgICAgaWYgKG1JbXBs
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbUltcGwtPmluaXRpYWxpemUod2luZG93
LCBwcm9wZXJ0eVNldC5HZXQoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgRVJSKAorICAgICAgICAgICAgIkludmFsaWQgSUluc3BlY3RhYmxlIEVHTE5hdGl2
ZVdpbmRvd1R5cGUgZGV0ZWN0ZWQuIFZhbGlkIElJbnNwZWN0YWJsZXMgaW5jbHVkZSAiCisgICAg
ICAgICAgICAiSUNvcmVXaW5kb3csIElTd2FwQ2hhaW5QYW5lbCBhbmQgSVByb3BlcnR5U2V0Iik7
CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE5hdGl2ZVdpbmRvdzExV2lu
UlQ6OmdldENsaWVudFJlY3QoTFBSRUNUIHJlY3QpIGNvbnN0Cit7CisgICAgaWYgKG1JbXBsKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1JbXBsLT5nZXRDbGllbnRSZWN0KHJlY3QpOworICAgIH0K
KworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBOYXRpdmVXaW5kb3cxMVdpblJUOjppc0lj
b25pYygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitIUkVTVUxUIE5hdGl2ZVdp
bmRvdzExV2luUlQ6OmNyZWF0ZVN3YXBDaGFpbihJRDNEMTFEZXZpY2UgKmRldmljZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEWEdJRmFjdG9yeSAqZmFj
dG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVJTlQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVSU5UIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIElEWEdJU3dhcENoYWluICoqc3dhcENoYWluKQoreworICAgIGlmIChtSW1wbCkKKyAg
ICB7CisgICAgICAgIElEWEdJRmFjdG9yeTIgKmZhY3RvcnkyICAgICA9IGQzZDExOjpEeW5hbWlj
Q2FzdENvbU9iamVjdDxJRFhHSUZhY3RvcnkyPihmYWN0b3J5KTsKKyAgICAgICAgSURYR0lTd2Fw
Q2hhaW4xICpzd2FwQ2hhaW4xID0gbnVsbHB0cjsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPQor
ICAgICAgICAgICAgbUltcGwtPmNyZWF0ZVN3YXBDaGFpbihkZXZpY2UsIGZhY3RvcnkyLCBmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQsIG1IYXNBbHBoYSwgJnN3YXBDaGFpbjEpOworICAgICAgICBTYWZl
UmVsZWFzZShmYWN0b3J5Mik7CisgICAgICAgICpzd2FwQ2hhaW4gPSBzdGF0aWNfY2FzdDxJRFhH
SVN3YXBDaGFpbiAqPihzd2FwQ2hhaW4xKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKKyAgICByZXR1cm4gRV9VTkVYUEVDVEVEOworfQorCit2b2lkIE5hdGl2ZVdpbmRvdzExV2lu
UlQ6OmNvbW1pdENoYW5nZSgpCit7Cit9CisKKy8vIHN0YXRpYworYm9vbCBOYXRpdmVXaW5kb3cx
MVdpblJUOjpJc1ZhbGlkTmF0aXZlV2luZG93KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KQor
eworICAgIC8vIEEgVmFsaWQgRUdMTmF0aXZlV2luZG93VHlwZSBJSW5zcGVjdGFibGUgY2FuIG9u
bHkgYmU6CisgICAgLy8KKyAgICAvLyBJQ29yZVdpbmRvdworICAgIC8vIElTd2FwQ2hhaW5QYW5l
bAorICAgIC8vIElQcm9wZXJ0eVNldAorICAgIC8vCisgICAgLy8gQW55dGhpbmcgZWxzZSB3aWxs
IGJlIHJlamVjdGVkIGFzIGFuIGludmFsaWQgSUluc3BlY3RhYmxlLgorICAgIHJldHVybiBJc0Nv
cmVXaW5kb3cod2luZG93KSB8fCBJc1N3YXBDaGFpblBhbmVsKHdpbmRvdykgfHwgSXNFR0xDb25m
aWd1cmVkUHJvcGVydHlTZXQod2luZG93KTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L3dpbnJ0L05hdGl2ZVdpbmRvdzExV2luUlQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbnJ0L05hdGl2ZVdp
bmRvdzExV2luUlQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbnJ0L05hdGl2ZVdpbmRvdzExV2luUlQu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUwIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAy
MDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gTmF0
aXZlV2luZG93MTFXaW5SVC5oOiBOYXRpdmVXaW5kb3cgYmFzZSBjbGFzcyBmb3IgbWFuYWdpbmcg
SUluc3BlY3RhYmxlIG5hdGl2ZSB3aW5kb3cgdHlwZXMuCisKKyNpZm5kZWYgTElCQU5HTEVfUkVO
REVSRVJfRDNEX0QzRDExX1dJTlJUX05BVElWRVdJTkRPVzExV0lOUlRfSF8KKyNkZWZpbmUgTElC
QU5HTEVfUkVOREVSRVJfRDNEX0QzRDExX1dJTlJUX05BVElWRVdJTkRPVzExV0lOUlRfSF8KKwor
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9OYXRpdmVXaW5kb3cxMS5oIgor
CisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHdpbmRvd3MuYXBwbGljYXRpb25tb2RlbC5j
b3JlLmg+CisjaW5jbHVkZSA8d3JsLmg+CisjaW5jbHVkZSA8d3JsL3dyYXBwZXJzL2NvcmV3cmFw
cGVycy5oPgorCituYW1lc3BhY2UgcngKK3sKK2NsYXNzIEluc3BlY3RhYmxlTmF0aXZlV2luZG93
OworCitjbGFzcyBOYXRpdmVXaW5kb3cxMVdpblJUIDogcHVibGljIE5hdGl2ZVdpbmRvdzExCit7
CisgIHB1YmxpYzoKKyAgICBOYXRpdmVXaW5kb3cxMVdpblJUKEVHTE5hdGl2ZVdpbmRvd1R5cGUg
d2luZG93LCBib29sIGhhc0FscGhhKTsKKworICAgIGJvb2wgaW5pdGlhbGl6ZSgpIG92ZXJyaWRl
OworICAgIGJvb2wgZ2V0Q2xpZW50UmVjdChMUFJFQ1QgcmVjdCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBpc0ljb25pYygpIGNvbnN0IG92ZXJyaWRlOworCisgICAgSFJFU1VMVCBjcmVhdGVT
d2FwQ2hhaW4oSUQzRDExRGV2aWNlICpkZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSURYR0lGYWN0b3J5ICpmYWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UIHdpZHRo
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQgaGVpZ2h0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIElEWEdJU3dhcENoYWluICoqc3dhcENoYWluKSBvdmVycmlkZTsKKwor
ICAgIHZvaWQgY29tbWl0Q2hhbmdlKCkgb3ZlcnJpZGU7CisKKyAgICBzdGF0aWMgYm9vbCBJc1Zh
bGlkTmF0aXZlV2luZG93KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KTsKKworICBwcml2YXRl
OgorICAgIGJvb2wgbUhhc0FscGhhOworICAgIHN0ZDo6c2hhcmVkX3B0cjxJbnNwZWN0YWJsZU5h
dGl2ZVdpbmRvdz4gbUltcGw7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAv
LyBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfV0lOUlRfTkFUSVZFV0lORE9XMTFXSU5SVF9I
XwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS93aW5ydC9Td2FwQ2hhaW5QYW5lbE5hdGl2ZVdpbmRvdy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS93aW5ydC9Td2FwQ2hhaW5QYW5lbE5hdGl2ZVdpbmRvdy5jcHAJKHJldmlzaW9uIDIwNzgwNCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvd2lucnQvU3dhcENoYWluUGFuZWxOYXRpdmVXaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjksMTQgKzE2OSwxNCBAQCBib29sIFN3YXBDaGFpblBhbmVsTmF0aXZlV2luZG93Ojppbml0
aWFsCiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBTSVpF
IHN3YXBDaGFpblBhbmVsU2l6ZTsKKyAgICAgICAgICAgIFNpemUgc3dhcENoYWluUGFuZWxTaXpl
OwogICAgICAgICAgICAgcmVzdWx0ID0gR2V0U3dhcENoYWluUGFuZWxTaXplKG1Td2FwQ2hhaW5Q
YW5lbCwgbVN3YXBDaGFpblBhbmVsRGlzcGF0Y2hlciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmc3dhcENoYWluUGFuZWxTaXplKTsKIAogICAgICAgICAgICAg
aWYgKFNVQ0NFRURFRChyZXN1bHQpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIC8v
IFVwZGF0ZSB0aGUgY2xpZW50IHJlY3QgdG8gYWNjb3VudCBmb3IgYW55IHN3YXBjaGFpbiBzY2Fs
ZSBmYWN0b3IKLSAgICAgICAgICAgICAgICBtQ2xpZW50UmVjdCA9IHsgMCwgMCwgc3RhdGljX2Nh
c3Q8bG9uZz4oc3dhcENoYWluUGFuZWxTaXplLmN4ICogbVN3YXBDaGFpblNjYWxlKSwgc3RhdGlj
X2Nhc3Q8bG9uZz4oc3dhcENoYWluUGFuZWxTaXplLmN5ICogbVN3YXBDaGFpblNjYWxlKSB9Owor
ICAgICAgICAgICAgICAgIG1DbGllbnRSZWN0ID0gY2xpZW50UmVjdChzd2FwQ2hhaW5QYW5lbFNp
emUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMjM4LDEyICsyMzgsMTIg
QEAgdm9pZCBTd2FwQ2hhaW5QYW5lbE5hdGl2ZVdpbmRvdzo6dW5yZWdpcwogfQogCiBIUkVTVUxU
IFN3YXBDaGFpblBhbmVsTmF0aXZlV2luZG93OjpjcmVhdGVTd2FwQ2hhaW4oSUQzRDExRGV2aWNl
ICpkZXZpY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSUZhY3RvcnkgKmZhY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSURYR0lGYWN0b3J5MiAqZmFjdG9yeSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVCBm
b3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBoZWlnaHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjb250YWluc0FscGhhLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lT
d2FwQ2hhaW4gKipzd2FwQ2hhaW4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSURYR0lTd2FwQ2hhaW4xICoqc3dhcENoYWluKQogewogICAgIGlm
IChkZXZpY2UgPT0gTlVMTCB8fCBmYWN0b3J5ID09IE5VTEwgfHwgc3dhcENoYWluID09IE5VTEwg
fHwgd2lkdGggPT0gMCB8fCBoZWlnaHQgPT0gMCkKICAgICB7CkBAIC0yNjksNyArMjY5LDcgQEAg
SFJFU1VMVCBTd2FwQ2hhaW5QYW5lbE5hdGl2ZVdpbmRvdzo6Y3JlYQogCiAgICAgQ29tUHRyPElE
WEdJU3dhcENoYWluMT4gbmV3U3dhcENoYWluOwogICAgIENvbVB0cjxJU3dhcENoYWluUGFuZWxO
YXRpdmU+IHN3YXBDaGFpblBhbmVsTmF0aXZlOwotICAgIFNJWkUgY3VycmVudFBhbmVsU2l6ZSA9
IHt9OworICAgIFNpemUgY3VycmVudFBhbmVsU2l6ZSA9IHt9OwogCiAgICAgSFJFU1VMVCByZXN1
bHQgPSBmYWN0b3J5LT5DcmVhdGVTd2FwQ2hhaW5Gb3JDb21wb3NpdGlvbihkZXZpY2UsICZzd2Fw
Q2hhaW5EZXNjLCBudWxscHRyLCBuZXdTd2FwQ2hhaW4uUmVsZWFzZUFuZEdldEFkZHJlc3NPZigp
KTsKIApAQCAtMzE4LDEwICszMTgsMTAgQEAgSFJFU1VMVCBTd2FwQ2hhaW5QYW5lbE5hdGl2ZVdp
bmRvdzo6Y3JlYQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUhSRVNVTFQgU3dhcENoYWluUGFu
ZWxOYXRpdmVXaW5kb3c6OnNjYWxlU3dhcENoYWluKGNvbnN0IFNJWkUgJndpbmRvd1NpemUsIGNv
bnN0IFJFQ1QgJmNsaWVudFJlY3QpCitIUkVTVUxUIFN3YXBDaGFpblBhbmVsTmF0aXZlV2luZG93
OjpzY2FsZVN3YXBDaGFpbihjb25zdCBTaXplICZ3aW5kb3dTaXplLCBjb25zdCBSRUNUICZjbGll
bnRSZWN0KQogewotICAgIFNpemUgcmVuZGVyU2NhbGUgPSB7KGZsb2F0KXdpbmRvd1NpemUuY3gg
LyAoZmxvYXQpY2xpZW50UmVjdC5yaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgIChmbG9h
dCl3aW5kb3dTaXplLmN5IC8gKGZsb2F0KWNsaWVudFJlY3QuYm90dG9tfTsKKyAgICBTaXplIHJl
bmRlclNjYWxlID0ge3dpbmRvd1NpemUuV2lkdGggLyAoZmxvYXQpY2xpZW50UmVjdC5yaWdodCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd1NpemUuSGVpZ2h0IC8gKGZsb2F0KWNsaWVu
dFJlY3QuYm90dG9tfTsKICAgICAvLyBTZXR1cCBhIHNjYWxlIG1hdHJpeCBmb3IgdGhlIHN3YXAg
Y2hhaW4KICAgICBEWEdJX01BVFJJWF8zWDJfRiBzY2FsZU1hdHJpeCA9IHt9OwogICAgIHNjYWxl
TWF0cml4Ll8xMSA9IHJlbmRlclNjYWxlLldpZHRoOwpAQCAtMzQwLDI0ICszNDAsMTQgQEAgSFJF
U1VMVCBTd2FwQ2hhaW5QYW5lbE5hdGl2ZVdpbmRvdzo6c2NhbAogSFJFU1VMVCBHZXRTd2FwQ2hh
aW5QYW5lbFNpemUoCiAgICAgY29uc3QgQ29tUHRyPEFCSTo6V2luZG93czo6VUk6OlhhbWw6OkNv
bnRyb2xzOjpJU3dhcENoYWluUGFuZWw+ICZzd2FwQ2hhaW5QYW5lbCwKICAgICBjb25zdCBDb21Q
dHI8SUNvcmVEaXNwYXRjaGVyPiAmZGlzcGF0Y2hlciwKLSAgICBTSVpFICp3aW5kb3dTaXplKQor
ICAgIFNpemUgKndpbmRvd1NpemUpCiB7CiAgICAgQ29tUHRyPElVSUVsZW1lbnQ+IHVpRWxlbWVu
dDsKLSAgICBTaXplIHJlbmRlclNpemUgPSB7MCwgMH07CiAgICAgSFJFU1VMVCByZXN1bHQgPSBz
d2FwQ2hhaW5QYW5lbC5BcygmdWlFbGVtZW50KTsKICAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkp
CiAgICAgewogICAgICAgICByZXN1bHQgPSBSdW5PblVJVGhyZWFkKAotICAgICAgICAgICAgW3Vp
RWxlbWVudCwgJnJlbmRlclNpemVdCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHVpRWxlbWVudC0+Z2V0X1JlbmRlclNpemUoJnJlbmRlclNpemUpOwotICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgIGRpc3BhdGNoZXIpOwotICAgIH0KLQotICAgIGlmIChTVUNDRUVERUQo
cmVzdWx0KSkKLSAgICB7Ci0gICAgICAgICp3aW5kb3dTaXplID0geyBscm91bmQocmVuZGVyU2l6
ZS5XaWR0aCksIGxyb3VuZChyZW5kZXJTaXplLkhlaWdodCkgfTsKKyAgICAgICAgICAgIFt1aUVs
ZW1lbnQsIHdpbmRvd1NpemVdIHsgcmV0dXJuIHVpRWxlbWVudC0+Z2V0X1JlbmRlclNpemUod2lu
ZG93U2l6ZSk7IH0sIGRpc3BhdGNoZXIpOwogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL3dpbnJ0L1N3YXBDaGFpblBhbmVsTmF0aXZlV2luZG93LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW5y
dC9Td2FwQ2hhaW5QYW5lbE5hdGl2ZVdpbmRvdy5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbnJ0
L1N3YXBDaGFpblBhbmVsTmF0aXZlV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTExLDYgKzEx
LDggQEAKIAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW5ydC9JbnNw
ZWN0YWJsZU5hdGl2ZVdpbmRvdy5oIgogCisjaW5jbHVkZSA8bWVtb3J5PgorCiBuYW1lc3BhY2Ug
cngKIHsKIGNsYXNzIFN3YXBDaGFpblBhbmVsTmF0aXZlV2luZG93IDogcHVibGljIEluc3BlY3Rh
YmxlTmF0aXZlV2luZG93LCBwdWJsaWMgc3RkOjplbmFibGVfc2hhcmVkX2Zyb21fdGhpczxTd2Fw
Q2hhaW5QYW5lbE5hdGl2ZVdpbmRvdz4KQEAgLTIwLDE1ICsyMiwxNSBAQCBjbGFzcyBTd2FwQ2hh
aW5QYW5lbE5hdGl2ZVdpbmRvdyA6IHB1YmxpCiAKICAgICBib29sIGluaXRpYWxpemUoRUdMTmF0
aXZlV2luZG93VHlwZSB3aW5kb3csIElQcm9wZXJ0eVNldCAqcHJvcGVydHlTZXQpIG92ZXJyaWRl
OwogICAgIEhSRVNVTFQgY3JlYXRlU3dhcENoYWluKElEM0QxMURldmljZSAqZGV2aWNlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lGYWN0b3J5ICpmYWN0b3J5LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIElEWEdJRmFjdG9yeTIgKmZhY3RvcnksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVQgZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY29u
dGFpbnNBbHBoYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJU3dhcENoYWluICoq
c3dhcENoYWluKSBvdmVycmlkZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRFhHSVN3
YXBDaGFpbjEgKipzd2FwQ2hhaW4pIG92ZXJyaWRlOwogCiAgIHByb3RlY3RlZDoKLSAgICBIUkVT
VUxUIHNjYWxlU3dhcENoYWluKGNvbnN0IFNJWkUgJndpbmRvd1NpemUsIGNvbnN0IFJFQ1QgJmNs
aWVudFJlY3QpIG92ZXJyaWRlOworICAgIEhSRVNVTFQgc2NhbGVTd2FwQ2hhaW4oY29uc3QgU2l6
ZSAmd2luZG93U2l6ZSwgY29uc3QgUkVDVCAmY2xpZW50UmVjdCkgb3ZlcnJpZGU7CiAKICAgICBi
b29sIHJlZ2lzdGVyRm9yU2l6ZUNoYW5nZUV2ZW50cygpOwogICAgIHZvaWQgdW5yZWdpc3RlckZv
clNpemVDaGFuZ2VFdmVudHMoKTsKQEAgLTM3LDcgKzM5LDcgQEAgY2xhc3MgU3dhcENoYWluUGFu
ZWxOYXRpdmVXaW5kb3cgOiBwdWJsaQogICAgIENvbVB0cjxBQkk6OldpbmRvd3M6OlVJOjpYYW1s
OjpDb250cm9sczo6SVN3YXBDaGFpblBhbmVsPiBtU3dhcENoYWluUGFuZWw7CiAgICAgQ29tUHRy
PEFCSTo6V2luZG93czo6VUk6OkNvcmU6OklDb3JlRGlzcGF0Y2hlcj4gbVN3YXBDaGFpblBhbmVs
RGlzcGF0Y2hlcjsKICAgICBDb21QdHI8SU1hcDxIU1RSSU5HLCBJSW5zcGVjdGFibGUqPj4gbVBy
b3BlcnR5TWFwOwotICAgIENvbVB0cjxEWEdJU3dhcENoYWluPiBtU3dhcENoYWluOworICAgIENv
bVB0cjxJRFhHSVN3YXBDaGFpbjE+IG1Td2FwQ2hhaW47CiB9OwogCiBbdXVpZCg4QUNCRDk3NC04
MTg3LTQ1MDgtQUQ4MC1BRUM3N0Y5M0NGMzYpXQpAQCAtNzIsOCArNzQsNyBAQCBjbGFzcyBTd2Fw
Q2hhaW5QYW5lbFNpemVDaGFuZ2VkSGFuZGxlciA6CiAgICAgICAgICAgICBIUkVTVUxUIHJlc3Vs
dCA9IHNpemVDaGFuZ2VkRXZlbnRBcmdzLT5nZXRfTmV3U2l6ZSgmbmV3U2l6ZSk7CiAgICAgICAg
ICAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgU0laRSB3aW5kb3dTaXplID0geyBscm91bmQobmV3U2l6ZS5XaWR0aCksIGxyb3VuZChuZXdT
aXplLkhlaWdodCkgfTsKLSAgICAgICAgICAgICAgICBob3N0LT5zZXROZXdDbGllbnRTaXplKHdp
bmRvd1NpemUpOworICAgICAgICAgICAgICAgIGhvc3QtPnNldE5ld0NsaWVudFNpemUobmV3U2l6
ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtODcsNiArODgsNiBAQCBjbGFzcyBT
d2FwQ2hhaW5QYW5lbFNpemVDaGFuZ2VkSGFuZGxlciA6CiBIUkVTVUxUIEdldFN3YXBDaGFpblBh
bmVsU2l6ZSgKICAgICBjb25zdCBDb21QdHI8QUJJOjpXaW5kb3dzOjpVSTo6WGFtbDo6Q29udHJv
bHM6OklTd2FwQ2hhaW5QYW5lbD4gJnN3YXBDaGFpblBhbmVsLAogICAgIGNvbnN0IENvbVB0cjxB
Qkk6OldpbmRvd3M6OlVJOjpDb3JlOjpJQ29yZURpc3BhdGNoZXI+ICZkaXNwYXRjaGVyLAotICAg
IFNJWkUgKndpbmRvd1NpemUpOworICAgIFNpemUgKndpbmRvd1NpemUpOwogfQogI2VuZGlmIC8v
IExJQkFOR0xFX1JFTkRFUkVSX0QzRF9EM0QxMV9XSU5SVF9TV0FQQ0hBSU5QQU5FTE5BVElWRVdJ
TkRPV19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL0JsaXRHTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0JsaXRHTC5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9CbGl0R0wu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBAIGdsOjpFcnJvciBDaGVja0NvbXBp
bGVTdGF0dXMoY29uc3Qgcng6OkYKICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0Zf
TUVNT1JZLCAiRmFpbGVkIHRvIGNvbXBpbGUgaW50ZXJuYWwgYmxpdCBzaGFkZXIuIik7CiAgICAg
fQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBDaGVja0xpbmtTdGF0dXMoY29uc3Qgcng6OkZ1bmN0
aW9uc0dMICpmdW5jdGlvbnMsIEdMdWludCBwcm9ncmFtKQpAQCAtNDMsNyArNDMsNyBAQCBnbDo6
RXJyb3IgQ2hlY2tMaW5rU3RhdHVzKGNvbnN0IHJ4OjpGdW5jCiAgICAgICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBsaW5rIGludGVybmFsIGJsaXQgcHJv
Z3JhbS4iKTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAg
ICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCkBA
IC01OCw2ICs1OCw5IEBAIEJsaXRHTDo6QmxpdEdMKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGkK
ICAgICAgIG1Xb3JrYXJvdW5kcyh3b3JrYXJvdW5kcyksCiAgICAgICBtU3RhdGVNYW5hZ2VyKHN0
YXRlTWFuYWdlciksCiAgICAgICBtQmxpdFByb2dyYW0oMCksCisgICAgICBtU291cmNlVGV4dHVy
ZUxvY2F0aW9uKC0xKSwKKyAgICAgIG1TY2FsZUxvY2F0aW9uKC0xKSwKKyAgICAgIG1PZmZzZXRM
b2NhdGlvbigtMSksCiAgICAgICBtU2NyYXRjaEZCTygwKSwKICAgICAgIG1WQU8oMCkKIHsKQEAg
LTEzMCwxMSArMTMzLDcgQEAgZ2w6OkVycm9yIEJsaXRHTDo6Y29weVN1YkltYWdlVG9MVU1BV29y
awogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291
cmNlKQogewotICAgIGdsOjpFcnJvciBlcnJvciA9IGluaXRpYWxpemVSZXNvdXJjZXMoKTsKLSAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAg
IH0KKyAgICBBTkdMRV9UUlkoaW5pdGlhbGl6ZVJlc291cmNlcygpKTsKIAogICAgIC8vIEJsaXQg
dGhlIGZyYW1lYnVmZmVyIHRvIHRoZSBmaXJzdCBzY3JhdGNoIHRleHR1cmUKICAgICBjb25zdCBG
cmFtZWJ1ZmZlckdMICpzb3VyY2VGcmFtZWJ1ZmZlckdMID0gR2V0SW1wbEFzPEZyYW1lYnVmZmVy
R0w+KHNvdXJjZSk7CkBAIC0xNDYsNyArMTQ1LDYgQEAgZ2w6OkVycm9yIEJsaXRHTDo6Y29weVN1
YkltYWdlVG9MVU1BV29yawogICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmaW50ZXJuYWxG
b3JtYXRJbmZvID0KICAgICAgICAgZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhjb3B5VGV4SW1h
Z2VGb3JtYXQuaW50ZXJuYWxGb3JtYXQpOwogCi0gICAgbVN0YXRlTWFuYWdlci0+YWN0aXZlVGV4
dHVyZSgwKTsKICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBt
U2NyYXRjaFRleHR1cmVzWzBdKTsKICAgICBtRnVuY3Rpb25zLT5jb3B5VGV4SW1hZ2UyRChHTF9U
RVhUVVJFXzJELCAwLCBjb3B5VGV4SW1hZ2VGb3JtYXQuaW50ZXJuYWxGb3JtYXQsIHNvdXJjZUFy
ZWEueCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VBcmVhLnksIHNvdXJj
ZUFyZWEud2lkdGgsIHNvdXJjZUFyZWEuaGVpZ2h0LCAwKTsKQEAgLTE3MSw3ICsxNjksNiBAQCBn
bDo6RXJyb3IgQmxpdEdMOjpjb3B5U3ViSW1hZ2VUb0xVTUFXb3JrCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbVNjcmF0Y2hUZXh0dXJlc1sxXSwgMCk7CiAKICAgICAvLyBS
ZW5kZXIgdG8gdGhlIGRlc3RpbmF0aW9uIHRleHR1cmUsIHNhbXBsaW5nIGZyb20gdGhlIHNjcmF0
Y2ggdGV4dHVyZQotICAgIG1TdGF0ZU1hbmFnZXItPnVzZVByb2dyYW0obUJsaXRQcm9ncmFtKTsK
ICAgICBtU3RhdGVNYW5hZ2VyLT5zZXRWaWV3cG9ydChnbDo6UmVjdGFuZ2xlKDAsIDAsIHNvdXJj
ZUFyZWEud2lkdGgsIHNvdXJjZUFyZWEuaGVpZ2h0KSk7CiAgICAgbVN0YXRlTWFuYWdlci0+c2V0
U2Npc3NvclRlc3RFbmFibGVkKGZhbHNlKTsKICAgICBtU3RhdGVNYW5hZ2VyLT5zZXREZXB0aFJh
bmdlKDAuMGYsIDEuMGYpOwpAQCAtMTg2LDE2ICsxODMsMTkyIEBAIGdsOjpFcnJvciBCbGl0R0w6
OmNvcHlTdWJJbWFnZVRvTFVNQVdvcmsKICAgICBtU3RhdGVNYW5hZ2VyLT5zZXRSYXN0ZXJpemVy
RGlzY2FyZEVuYWJsZWQoZmFsc2UpOwogICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQsIG1TY3JhdGNoVGV4dHVyZXNbMF0pOwogCisgICAgc2V0U2NyYXRjaFRleHR1
cmVQYXJhbWV0ZXIoR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBzZXRT
Y3JhdGNoVGV4dHVyZVBhcmFtZXRlcihHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1Qp
OworICAgIG1TdGF0ZU1hbmFnZXItPmFjdGl2ZVRleHR1cmUoMCk7CisgICAgbVN0YXRlTWFuYWdl
ci0+YmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVNjcmF0Y2hUZXh0dXJlc1swXSk7CisKKyAg
ICBtU3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFtKG1CbGl0UHJvZ3JhbSk7CisgICAgbUZ1bmN0aW9u
cy0+dW5pZm9ybTFpKG1Tb3VyY2VUZXh0dXJlTG9jYXRpb24sIDApOworICAgIG1GdW5jdGlvbnMt
PnVuaWZvcm0yZihtU2NhbGVMb2NhdGlvbiwgMS4wLCAxLjApOworICAgIG1GdW5jdGlvbnMtPnVu
aWZvcm0yZihtT2Zmc2V0TG9jYXRpb24sIDAuMCwgMC4wKTsKKwogICAgIG1TdGF0ZU1hbmFnZXIt
PmJpbmRWZXJ0ZXhBcnJheShtVkFPLCAwKTsKIAotICAgIG1GdW5jdGlvbnMtPmRyYXdBcnJheXMo
R0xfVFJJQU5HTEVTLCAwLCA2KTsKKyAgICBtRnVuY3Rpb25zLT5kcmF3QXJyYXlzKEdMX1RSSUFO
R0xFUywgMCwgMyk7CiAKLSAgICAvLyBGaW5hbGx5LCBjb3B5IHRoZSBzd2l6emxlZCB0ZXh0dXJl
IHRvIHRoZSBkZXN0aW5hdGlvbiB0ZXh0dXJlCisgICAgLy8gQ29weSB0aGUgc3dpenpsZWQgdGV4
dHVyZSB0byB0aGUgZGVzdGluYXRpb24gdGV4dHVyZQogICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRU
ZXh0dXJlKHRleHR1cmVUeXBlLCB0ZXh0dXJlKTsKICAgICBtRnVuY3Rpb25zLT5jb3B5VGV4U3Vi
SW1hZ2UyRCh0YXJnZXQsIHN0YXRpY19jYXN0PEdMaW50PihsZXZlbCksIGRlc3RPZmZzZXQueCwg
ZGVzdE9mZnNldC55LCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIHNv
dXJjZUFyZWEud2lkdGgsIHNvdXJjZUFyZWEuaGVpZ2h0KTsKIAotICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfTk9fRVJST1IpOworICAgIC8vIEZpbmFsbHkgb3JwaGFuIHRoZSBzY3JhdGNoIHRleHR1
cmVzIHNvIHRoZXkgY2FuIGJlIEdDZWQgYnkgdGhlIGRyaXZlci4KKyAgICBvcnBoYW5TY3JhdGNo
VGV4dHVyZXMoKTsKKworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworfQorCitnbDo6RXJyb3Ig
QmxpdEdMOjpibGl0Q29sb3JCdWZmZXJXaXRoU2hhZGVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAq
c291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6RnJhbWVidWZmZXIgKmRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWFJbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAm
ZGVzdEFyZWFJbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGZpbHRlcikKK3sKKyAgICBBTkdMRV9UUlkoaW5pdGlhbGl6ZVJlc291cmNlcygpKTsK
KworICAgIC8vIE5vcm1hbGl6ZSB0aGUgZGVzdGluYXRpb24gYXJlYSB0byBoYXZlIHBvc2l0aXZl
IHdpZHRoIGFuZCBoZWlnaHQgYmVjYXVzZSB3ZSB3aWxsIHVzZQorICAgIC8vIGdsVmlld3BvcnQg
dG8gc2V0IGl0LCB3aGljaCBkb2Vzbid0IGFsbG93IG5lZ2F0aXZlIHdpZHRoIG9yIGhlaWdodC4K
KyAgICBnbDo6UmVjdGFuZ2xlIHNvdXJjZUFyZWEgPSBzb3VyY2VBcmVhSW47CisgICAgZ2w6OlJl
Y3RhbmdsZSBkZXN0QXJlYSAgID0gZGVzdEFyZWFJbjsKKyAgICBpZiAoZGVzdEFyZWEud2lkdGgg
PCAwKQorICAgIHsKKyAgICAgICAgZGVzdEFyZWEueCArPSBkZXN0QXJlYS53aWR0aDsKKyAgICAg
ICAgZGVzdEFyZWEud2lkdGggPSAtZGVzdEFyZWEud2lkdGg7CisgICAgICAgIHNvdXJjZUFyZWEu
eCArPSBzb3VyY2VBcmVhLndpZHRoOworICAgICAgICBzb3VyY2VBcmVhLndpZHRoID0gLXNvdXJj
ZUFyZWEud2lkdGg7CisgICAgfQorICAgIGlmIChkZXN0QXJlYS5oZWlnaHQgPCAwKQorICAgIHsK
KyAgICAgICAgZGVzdEFyZWEueSArPSBkZXN0QXJlYS5oZWlnaHQ7CisgICAgICAgIGRlc3RBcmVh
LmhlaWdodCA9IC1kZXN0QXJlYS5oZWlnaHQ7CisgICAgICAgIHNvdXJjZUFyZWEueSArPSBzb3Vy
Y2VBcmVhLmhlaWdodDsKKyAgICAgICAgc291cmNlQXJlYS5oZWlnaHQgPSAtc291cmNlQXJlYS5o
ZWlnaHQ7CisgICAgfQorCisgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqcmVh
ZEF0dGFjaG1lbnQgPSBzb3VyY2UtPmdldFJlYWRDb2xvcmJ1ZmZlcigpOworICAgIEFTU0VSVChy
ZWFkQXR0YWNobWVudC0+Z2V0U2FtcGxlcygpIDw9IDEpOworCisgICAgLy8gQ29tcHV0ZSB0aGUg
cGFydCBvZiB0aGUgc291cmNlIHRoYXQgd2lsbCBiZSBzYW1wbGVkLgorICAgIGdsOjpSZWN0YW5n
bGUgaW5Cb3VuZHNTb3VyY2U7CisgICAgeworICAgICAgICBnbDo6RXh0ZW50cyBzb3VyY2VTaXpl
ID0gcmVhZEF0dGFjaG1lbnQtPmdldFNpemUoKTsKKyAgICAgICAgZ2w6OlJlY3RhbmdsZSBzb3Vy
Y2VCb3VuZHMoMCwgMCwgc291cmNlU2l6ZS53aWR0aCwgc291cmNlU2l6ZS5oZWlnaHQpOworICAg
ICAgICBnbDo6Q2xpcFJlY3RhbmdsZShzb3VyY2VBcmVhLCBzb3VyY2VCb3VuZHMsICZpbkJvdW5k
c1NvdXJjZSk7CisKKyAgICAgICAgLy8gTm90ZSB0aGF0IGluQm91bmRzU291cmNlIHdpbGwgaGF2
ZSBsb3N0IHRoZSBvcmllbnRhdGlvbiBpbmZvcm1hdGlvbi4KKyAgICAgICAgQVNTRVJUKGluQm91
bmRzU291cmNlLndpZHRoID49IDAgJiYgaW5Cb3VuZHNTb3VyY2UuaGVpZ2h0ID49IDApOworCisg
ICAgICAgIC8vIEVhcmx5IG91dCB3aGVuIHRoZSBzYW1wbGVkIHBhcnQgaXMgZW1wdHkgYXMgdGhl
IGJsaXQgd2lsbCBiZSBhIG5vb3AsCisgICAgICAgIC8vIGFuZCBpdCBwcmV2ZW50cyBhIGRpdmlz
aW9uIGJ5IHplcm8gaW4gbGF0ZXIgY29tcHV0YXRpb25zLgorICAgICAgICBpZiAoaW5Cb3VuZHNT
b3VyY2Uud2lkdGggPT0gMCB8fCBpbkJvdW5kc1NvdXJjZS5oZWlnaHQgPT0gMCkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICAvLyBUaGUgYmxpdCB3aWxsIGJlIGVtdWxhdGVkIGJ5IGdldHRpbmcgdGhlIHNvdXJjZSBv
ZiB0aGUgYmxpdCBpbiBhIHRleHR1cmUgYW5kIHNhbXBsaW5nIGl0CisgICAgLy8gd2l0aCBDTEFN
UF9UT19FREdFLiBUaGUgcXVhZCB1c2VkIHRvIGRyYXcgY2FuIHRyaXZpYWxseSBjb21wdXRlIHRl
eHR1cmUgY29vcmRpbmF0ZXMgZ29pbmcKKyAgICAvLyBmcm9tICgwLCAwKSB0byAoMSwgMSkuIFRo
ZXNlIHRleHR1cmUgY29vcmRpbmF0ZXMgd2lsbCBuZWVkIHRvIGJlIHRyYW5zZm9ybWVkIHRvIG1h
a2UgdHdvCisgICAgLy8gcmVnaW9ucyBtYXRjaDoKKyAgICAvLyAgLSBUaGUgcmVnaW9uIG9mIHRo
ZSB0ZXh0dXJlIHJlcHJlc2VudGluZyB0aGUgc291cmNlIGZyYW1lYnVmZmVyIHJlZ2lvbiB0aGF0
IHdpbGwgYmUgc2FtcGxlZAorICAgIC8vICAtIFRoZSByZWdpb24gb2YgdGhlIGRyYXduIHF1YWQg
dGhhdCBjb3JyZXNwb25kcyB0byBub24tY2xhbXBlZCBibGl0LCB0aGlzIGlzIHRoZSBzYW1lIGFz
IHRoZQorICAgIC8vICAgIHJlZ2lvbiBvZiB0aGUgc291cmNlIHJlY3RhbmdsZSB0aGF0IGlzIGlu
c2lkZSB0aGUgc291cmNlIGF0dGFjaG1lbnQuCisgICAgLy8KKyAgICAvLyAgVGhlc2UgdHdvIHJl
Z2lvbnMsIFQgKHRleHR1cmUpIGFuZCBEIChkZXN0KSBhcmUgZGVmaW5lZCBieSB0aGVpciBvZmZz
ZXQgaW4gdGV4Y29vcmQgc3BhY2UKKyAgICAvLyAgaW4gKDAsIDEpXjIgYW5kIHRoZWlyIHNpemUg
aW4gdGV4Y29vcmQgc3BhY2UgaW4gKC0xLCAxKV4yLiBUaGUgc2l6ZSBjYW4gYmUgbmVnYXRpdmUg
dG8KKyAgICAvLyAgcmVwcmVzZW50IHRoZSBvcmllbnRhdGlvbiBvZiB0aGUgYmxpdC4KKyAgICAv
LworICAgIC8vICBUaGVuIGlmIFAgaXMgdGhlIHF1YWQgdGV4Y29vcmQsIFEgdGhlIHRleGNvb3Jk
IGluc2lkZSBULCBhbmQgUiB0aGUgdGV4dHVyZSB0ZXhjb29yZDoKKyAgICAvLyAgICAtIFEgPSAo
UCAtIEQub2Zmc2V0KSAvIEQuc2l6ZQorICAgIC8vICAgIC0gUSA9IChSIC0gVC5vZmZzZXQpIC8g
VC5zaXplCisgICAgLy8gIEhlbmNlIFIgPSAoUCAtIEQub2Zmc2V0KSAvIEQuc2l6ZSAqIFQuc2l6
ZSAtIFQub2Zmc2V0CisgICAgLy8gICAgICAgICAgPSBQICogKFQuc2l6ZSAvIEQuc2l6ZSkgKyAo
VC5vZmZzZXQgLSBELm9mZnNldCAqIFQuc2l6ZSAvIEQuc2l6ZSkKKworICAgIEdMdWludCB0ZXh0
dXJlSWQ7CisgICAgZ2w6OlZlY3RvcjIgVE9mZnNldDsKKyAgICBnbDo6VmVjdG9yMiBUU2l6ZTsK
KworICAgIC8vIFRPRE8oY3dhbGxleikgb25jZSB0ZXh0dXJlIGRpcnR5IGJpdHMgYXJlIGxhbmRl
ZCwgcmV1c2UgYXR0YWNoZWQgdGV4dHVyZSBpbnN0ZWFkIG9mIHVzaW5nCisgICAgLy8gQ29weVRl
eEltYWdlMkQKKyAgICB7CisgICAgICAgIHRleHR1cmVJZCA9IG1TY3JhdGNoVGV4dHVyZXNbMF07
CisgICAgICAgIFRPZmZzZXQgICA9IGdsOjpWZWN0b3IyKDAuMCwgMC4wKTsKKyAgICAgICAgVFNp
emUgICAgID0gZ2w6OlZlY3RvcjIoMS4wLCAxLjApOworICAgICAgICBpZiAoc291cmNlQXJlYS53
aWR0aCA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIFRPZmZzZXQueCA9IDEuMDsKKyAgICAg
ICAgICAgIFRTaXplLnggICA9IC0xLjA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNvdXJjZUFy
ZWEuaGVpZ2h0IDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgVE9mZnNldC55ID0gMS4wOwor
ICAgICAgICAgICAgVFNpemUueSAgID0gLTEuMDsKKyAgICAgICAgfQorCisgICAgICAgIEdMZW51
bSBmb3JtYXQgICAgICAgICAgICAgICAgID0gcmVhZEF0dGFjaG1lbnQtPmdldEZvcm1hdCgpLmlu
Zm8tPmludGVybmFsRm9ybWF0OworICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlckdMICpzb3VyY2VH
TCA9IEdldEltcGxBczxGcmFtZWJ1ZmZlckdMPihzb3VyY2UpOworICAgICAgICBtU3RhdGVNYW5h
Z2VyLT5iaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZFUiwgc291cmNlR0wtPmdldEZy
YW1lYnVmZmVySUQoKSk7CisgICAgICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKEdMX1RF
WFRVUkVfMkQsIHRleHR1cmVJZCk7CisKKyAgICAgICAgbUZ1bmN0aW9ucy0+Y29weVRleEltYWdl
MkQoR0xfVEVYVFVSRV8yRCwgMCwgZm9ybWF0LCBpbkJvdW5kc1NvdXJjZS54LCBpbkJvdW5kc1Nv
dXJjZS55LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbkJvdW5kc1NvdXJj
ZS53aWR0aCwgaW5Cb3VuZHNTb3VyY2UuaGVpZ2h0LCAwKTsKKyAgICB9CisKKyAgICAvLyBDb21w
dXRlIG5vcm1hbGl6ZWQgc2FtcGxlZCBkcmF3IHF1YWQgcmVnaW9uCisgICAgLy8gSXQgaXMgdGhl
IHNhbWUgYXMgdGhlIHJlZ2lvbiBvZiB0aGUgc291cmNlIHJlY3RhbmdsZSB0aGF0IGlzIGluIGJv
dW5kcy4KKyAgICBnbDo6VmVjdG9yMiBET2Zmc2V0OworICAgIGdsOjpWZWN0b3IyIERTaXplOwor
ICAgIHsKKyAgICAgICAgQVNTRVJUKHNvdXJjZUFyZWEud2lkdGggIT0gMCAmJiBzb3VyY2VBcmVh
LmhlaWdodCAhPSAwKTsKKyAgICAgICAgZ2w6OlJlY3RhbmdsZSBvcmllbnRlZEluQm91bmRzID0g
aW5Cb3VuZHNTb3VyY2U7CisgICAgICAgIGlmIChzb3VyY2VBcmVhLndpZHRoIDwgMCkKKyAgICAg
ICAgeworICAgICAgICAgICAgb3JpZW50ZWRJbkJvdW5kcy54ICs9IG9yaWVudGVkSW5Cb3VuZHMu
d2lkdGg7CisgICAgICAgICAgICBvcmllbnRlZEluQm91bmRzLndpZHRoID0gLW9yaWVudGVkSW5C
b3VuZHMud2lkdGg7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNvdXJjZUFyZWEuaGVpZ2h0IDwg
MCkKKyAgICAgICAgeworICAgICAgICAgICAgb3JpZW50ZWRJbkJvdW5kcy55ICs9IG9yaWVudGVk
SW5Cb3VuZHMuaGVpZ2h0OworICAgICAgICAgICAgb3JpZW50ZWRJbkJvdW5kcy5oZWlnaHQgPSAt
b3JpZW50ZWRJbkJvdW5kcy5oZWlnaHQ7CisgICAgICAgIH0KKworICAgICAgICBET2Zmc2V0ID0K
KyAgICAgICAgICAgIGdsOjpWZWN0b3IyKHN0YXRpY19jYXN0PGZsb2F0PihvcmllbnRlZEluQm91
bmRzLnggLSBzb3VyY2VBcmVhLngpIC8gc291cmNlQXJlYS53aWR0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PGZsb2F0PihvcmllbnRlZEluQm91bmRzLnkgLSBzb3VyY2VB
cmVhLnkpIC8gc291cmNlQXJlYS5oZWlnaHQpOworICAgICAgICBEU2l6ZSA9IGdsOjpWZWN0b3Iy
KHN0YXRpY19jYXN0PGZsb2F0PihvcmllbnRlZEluQm91bmRzLndpZHRoKSAvIHNvdXJjZUFyZWEu
d2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG9y
aWVudGVkSW5Cb3VuZHMuaGVpZ2h0KSAvIHNvdXJjZUFyZWEuaGVpZ2h0KTsKKyAgICB9CisKKyAg
ICBBU1NFUlQoRFNpemUueCAhPSAwLjAgJiYgRFNpemUueSAhPSAwLjApOworICAgIGdsOjpWZWN0
b3IyIHRleENvb3JkU2NhbGUgID0gZ2w6OlZlY3RvcjIoVFNpemUueCAvIERTaXplLngsIFRTaXpl
LnkgLyBEU2l6ZS55KTsKKyAgICBnbDo6VmVjdG9yMiB0ZXhDb29yZE9mZnNldCA9IGdsOjpWZWN0
b3IyKFRPZmZzZXQueCAtIERPZmZzZXQueCAqIHRleENvb3JkU2NhbGUueCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRPZmZzZXQueSAtIERPZmZzZXQueSAq
IHRleENvb3JkU2NhbGUueSk7CisKKyAgICAvLyBSZXNldCBhbGwgdGhlIHN0YXRlIGV4Y2VwdCBz
Y2lzc29yIGFuZCB2aWV3cG9ydAorICAgIG1TdGF0ZU1hbmFnZXItPnNldERlcHRoUmFuZ2UoMC4w
ZiwgMS4wZik7CisgICAgbVN0YXRlTWFuYWdlci0+c2V0QmxlbmRFbmFibGVkKGZhbHNlKTsKKyAg
ICBtU3RhdGVNYW5hZ2VyLT5zZXRDb2xvck1hc2sodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7Cisg
ICAgbVN0YXRlTWFuYWdlci0+c2V0U2FtcGxlQWxwaGFUb0NvdmVyYWdlRW5hYmxlZChmYWxzZSk7
CisgICAgbVN0YXRlTWFuYWdlci0+c2V0U2FtcGxlQ292ZXJhZ2VFbmFibGVkKGZhbHNlKTsKKyAg
ICBtU3RhdGVNYW5hZ2VyLT5zZXREZXB0aFRlc3RFbmFibGVkKGZhbHNlKTsKKyAgICBtU3RhdGVN
YW5hZ2VyLT5zZXRTdGVuY2lsVGVzdEVuYWJsZWQoZmFsc2UpOworICAgIG1TdGF0ZU1hbmFnZXIt
PnNldEN1bGxGYWNlRW5hYmxlZChmYWxzZSk7CisgICAgbVN0YXRlTWFuYWdlci0+c2V0UG9seWdv
bk9mZnNldEZpbGxFbmFibGVkKGZhbHNlKTsKKyAgICBtU3RhdGVNYW5hZ2VyLT5zZXRSYXN0ZXJp
emVyRGlzY2FyZEVuYWJsZWQoZmFsc2UpOworCisgICAgLy8gVXNlIHRoZSB2aWV3cG9ydCB0byBk
cmF3IGV4YWN0bHkgdG8gdGhlIGRlc3RpbmF0aW9uIHJlY3RhbmdsZQorICAgIG1TdGF0ZU1hbmFn
ZXItPnNldFZpZXdwb3J0KGRlc3RBcmVhKTsKKworICAgIC8vIFNldCB1bmlmb3JtcworICAgIHNl
dFNjcmF0Y2hUZXh0dXJlUGFyYW1ldGVyKEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgZmlsdGVyKTsK
KyAgICBzZXRTY3JhdGNoVGV4dHVyZVBhcmFtZXRlcihHTF9URVhUVVJFX01BR19GSUxURVIsIGZp
bHRlcik7CisgICAgc2V0U2NyYXRjaFRleHR1cmVQYXJhbWV0ZXIoR0xfVEVYVFVSRV9XUkFQX1Ms
IEdMX0NMQU1QX1RPX0VER0UpOworICAgIHNldFNjcmF0Y2hUZXh0dXJlUGFyYW1ldGVyKEdMX1RF
WFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBtU3RhdGVNYW5hZ2VyLT5hY3Rp
dmVUZXh0dXJlKDApOworICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKEdMX1RFWFRVUkVf
MkQsIG1TY3JhdGNoVGV4dHVyZXNbMF0pOworCisgICAgbVN0YXRlTWFuYWdlci0+dXNlUHJvZ3Jh
bShtQmxpdFByb2dyYW0pOworICAgIG1GdW5jdGlvbnMtPnVuaWZvcm0xaShtU291cmNlVGV4dHVy
ZUxvY2F0aW9uLCAwKTsKKyAgICBtRnVuY3Rpb25zLT51bmlmb3JtMmYobVNjYWxlTG9jYXRpb24s
IHRleENvb3JkU2NhbGUueCwgdGV4Q29vcmRTY2FsZS55KTsKKyAgICBtRnVuY3Rpb25zLT51bmlm
b3JtMmYobU9mZnNldExvY2F0aW9uLCB0ZXhDb29yZE9mZnNldC54LCB0ZXhDb29yZE9mZnNldC55
KTsKKworICAgIGNvbnN0IEZyYW1lYnVmZmVyR0wgKmRlc3RHTCA9IEdldEltcGxBczxGcmFtZWJ1
ZmZlckdMPihkZXN0KTsKKyAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZmZXIoR0xfRFJB
V19GUkFNRUJVRkZFUiwgZGVzdEdMLT5nZXRGcmFtZWJ1ZmZlcklEKCkpOworCisgICAgbVN0YXRl
TWFuYWdlci0+YmluZFZlcnRleEFycmF5KG1WQU8sIDApOworICAgIG1GdW5jdGlvbnMtPmRyYXdB
cnJheXMoR0xfVFJJQU5HTEVTLCAwLCAzKTsKKworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwog
fQogCiBnbDo6RXJyb3IgQmxpdEdMOjppbml0aWFsaXplUmVzb3VyY2VzKCkKQEAgLTIwNSw0MSAr
Mzc4LDM4IEBAIGdsOjpFcnJvciBCbGl0R0w6OmluaXRpYWxpemVSZXNvdXJjZXMoKQogICAgICAg
ICBtQmxpdFByb2dyYW0gPSBtRnVuY3Rpb25zLT5jcmVhdGVQcm9ncmFtKCk7CiAKICAgICAgICAg
Ly8gQ29tcGlsZSB0aGUgZnJhZ21lbnQgc2hhZGVyCisgICAgICAgIC8vIEl0IHVzZXMgYSBzaW5n
bGUsIGxhcmdlIHRyaWFuZ2xlLCB0byBhdm9pZCBhcml0aG1ldGljIHByZWNpc2lvbiBpc3N1ZXMg
d2hlcmUgZnJhZ21lbnRzCisgICAgICAgIC8vIHdpdGggdGhlIHNhbWUgWSBjb29yZGluYXRlIGRv
bid0IGdldCBleGFjdGx5IHRoZSBzYW1lIGludGVycG9sYXRlZCB0ZXhjb29yZCBZLgogICAgICAg
ICBjb25zdCBjaGFyICp2c1NvdXJjZSA9CiAgICAgICAgICAgICAiI3ZlcnNpb24gMTUwXG4iCiAg
ICAgICAgICAgICAib3V0IHZlYzIgdl90ZXhjb29yZDtcbiIKKyAgICAgICAgICAgICJ1bmlmb3Jt
IHZlYzIgdV9zY2FsZTtcbiIKKyAgICAgICAgICAgICJ1bmlmb3JtIHZlYzIgdV9vZmZzZXQ7XG4i
CiAgICAgICAgICAgICAiXG4iCiAgICAgICAgICAgICAidm9pZCBtYWluKClcbiIKICAgICAgICAg
ICAgICJ7XG4iCi0gICAgICAgICAgICAiICAgIGNvbnN0IHZlYzIgcXVhZF9wb3NpdGlvbnNbNl0g
PSB2ZWMyWzZdXG4iCisgICAgICAgICAgICAiICAgIGNvbnN0IHZlYzIgcXVhZF9wb3NpdGlvbnNb
M10gPSB2ZWMyWzNdXG4iCiAgICAgICAgICAgICAiICAgIChcbiIKLSAgICAgICAgICAgICIgICAg
ICAgIHZlYzIoMC4wZiwgMC4wZiksXG4iCi0gICAgICAgICAgICAiICAgICAgICB2ZWMyKDAuMGYs
IDEuMGYpLFxuIgotICAgICAgICAgICAgIiAgICAgICAgdmVjMigxLjBmLCAwLjBmKSxcbiIKLSAg
ICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICIgICAgICAgIHZlYzIoMC4wZiwgMS4wZiksXG4i
Ci0gICAgICAgICAgICAiICAgICAgICB2ZWMyKDEuMGYsIDAuMGYpLFxuIgotICAgICAgICAgICAg
IiAgICAgICAgdmVjMigxLjBmLCAxLjBmKVxuIgorICAgICAgICAgICAgIiAgICAgICAgdmVjMigt
MC41ZiwgMC4wZiksXG4iCisgICAgICAgICAgICAiICAgICAgICB2ZWMyKCAxLjVmLCAwLjBmKSxc
biIKKyAgICAgICAgICAgICIgICAgICAgIHZlYzIoIDAuNWYsIDIuMGYpXG4iCiAgICAgICAgICAg
ICAiICAgICk7XG4iCiAgICAgICAgICAgICAiXG4iCiAgICAgICAgICAgICAiICAgIGdsX1Bvc2l0
aW9uID0gdmVjNCgocXVhZF9wb3NpdGlvbnNbZ2xfVmVydGV4SURdICogMi4wKSAtIDEuMCwgMC4w
LCAxLjApO1xuIgotICAgICAgICAgICAgIiAgICB2X3RleGNvb3JkID0gcXVhZF9wb3NpdGlvbnNb
Z2xfVmVydGV4SURdO1xuIgorICAgICAgICAgICAgIiAgICB2X3RleGNvb3JkID0gcXVhZF9wb3Np
dGlvbnNbZ2xfVmVydGV4SURdICogdV9zY2FsZSArIHVfb2Zmc2V0O1xuIgogICAgICAgICAgICAg
In1cbiI7CiAKICAgICAgICAgR0x1aW50IHZzID0gbUZ1bmN0aW9ucy0+Y3JlYXRlU2hhZGVyKEdM
X1ZFUlRFWF9TSEFERVIpOwogICAgICAgICBtRnVuY3Rpb25zLT5zaGFkZXJTb3VyY2UodnMsIDEs
ICZ2c1NvdXJjZSwgbnVsbHB0cik7CiAgICAgICAgIG1GdW5jdGlvbnMtPmNvbXBpbGVTaGFkZXIo
dnMpOwotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBDaGVja0NvbXBpbGVTdGF0dXMobUZ1bmN0
aW9ucywgdnMpOworICAgICAgICBBTkdMRV9UUlkoQ2hlY2tDb21waWxlU3RhdHVzKG1GdW5jdGlv
bnMsIHZzKSk7CiAKICAgICAgICAgbUZ1bmN0aW9ucy0+YXR0YWNoU2hhZGVyKG1CbGl0UHJvZ3Jh
bSwgdnMpOwogICAgICAgICBtRnVuY3Rpb25zLT5kZWxldGVTaGFkZXIodnMpOwogCi0gICAgICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJv
cjsKLSAgICAgICAgfQotCiAgICAgICAgIC8vIENvbXBpbGUgdGhlIHZlcnRleCBzaGFkZXIKKyAg
ICAgICAgLy8gSXQgZGlzY2FyZHMgaWYgdGhlIHRleGNvb3JkIGlzIG91dHNpZGUgKDAsIDEpXjIg
c28gdGhlIGJsaXRmcmFtZWJ1ZmZlciB3b3JrYXJvdW5kCisgICAgICAgIC8vIGRvZXNuJ3Qgd3Jp
dGUgd2hlbiB0aGUgcG9pbnQgc2FtcGxlZCBpcyBvdXRzaWRlIG9mIHRoZSBzb3VyY2UgZnJhbWVi
dWZmZXIuCiAgICAgICAgIGNvbnN0IGNoYXIgKmZzU291cmNlID0KICAgICAgICAgICAgICIjdmVy
c2lvbiAxNTBcbiIKICAgICAgICAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCB1X3NvdXJjZV90ZXh0
dXJlO1xuIgpAQCAtMjQ4LDMyICs0MTgsMjggQEAgZ2w6OkVycm9yIEJsaXRHTDo6aW5pdGlhbGl6
ZVJlc291cmNlcygpCiAgICAgICAgICAgICAiXG4iCiAgICAgICAgICAgICAidm9pZCBtYWluKClc
biIKICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAiICAgIGlmIChjbGFtcCh2X3RleGNv
b3JkLCB2ZWMyKDAuMCksIHZlYzIoMS4wKSkgIT0gdl90ZXhjb29yZClcbiIKKyAgICAgICAgICAg
ICIgICAge1xuIgorICAgICAgICAgICAgIiAgICAgICAgZGlzY2FyZDtcbiIKKyAgICAgICAgICAg
ICIgICAgfVxuIgogICAgICAgICAgICAgIiAgICBvdXRwdXRfY29sb3IgPSB0ZXh0dXJlKHVfc291
cmNlX3RleHR1cmUsIHZfdGV4Y29vcmQpO1xuIgogICAgICAgICAgICAgIn1cbiI7CiAKICAgICAg
ICAgR0x1aW50IGZzID0gbUZ1bmN0aW9ucy0+Y3JlYXRlU2hhZGVyKEdMX0ZSQUdNRU5UX1NIQURF
Uik7CiAgICAgICAgIG1GdW5jdGlvbnMtPnNoYWRlclNvdXJjZShmcywgMSwgJmZzU291cmNlLCBu
dWxscHRyKTsKICAgICAgICAgbUZ1bmN0aW9ucy0+Y29tcGlsZVNoYWRlcihmcyk7Ci0gICAgICAg
IGVycm9yID0gQ2hlY2tDb21waWxlU3RhdHVzKG1GdW5jdGlvbnMsIGZzKTsKKyAgICAgICAgQU5H
TEVfVFJZKENoZWNrQ29tcGlsZVN0YXR1cyhtRnVuY3Rpb25zLCBmcykpOwogCiAgICAgICAgIG1G
dW5jdGlvbnMtPmF0dGFjaFNoYWRlcihtQmxpdFByb2dyYW0sIGZzKTsKICAgICAgICAgbUZ1bmN0
aW9ucy0+ZGVsZXRlU2hhZGVyKGZzKTsKIAotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KLQogICAgICAg
ICBtRnVuY3Rpb25zLT5saW5rUHJvZ3JhbShtQmxpdFByb2dyYW0pOwotICAgICAgICBlcnJvciA9
IENoZWNrTGlua1N0YXR1cyhtRnVuY3Rpb25zLCBtQmxpdFByb2dyYW0pOwotICAgICAgICBpZiAo
ZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0g
ICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKENoZWNrTGlua1N0YXR1cyhtRnVuY3Rpb25zLCBt
QmxpdFByb2dyYW0pKTsKIAotICAgICAgICBHTHVpbnQgdGV4dHVyZVVuaWZvcm0gPSBtRnVuY3Rp
b25zLT5nZXRVbmlmb3JtTG9jYXRpb24obUJsaXRQcm9ncmFtLCAidV9zb3VyY2VfdGV4dHVyZSIp
OworICAgICAgICBtU291cmNlVGV4dHVyZUxvY2F0aW9uID0gbUZ1bmN0aW9ucy0+Z2V0VW5pZm9y
bUxvY2F0aW9uKG1CbGl0UHJvZ3JhbSwgInVfc291cmNlX3RleHR1cmUiKTsKKyAgICAgICAgbVNj
YWxlTG9jYXRpb24gICAgICAgICA9IG1GdW5jdGlvbnMtPmdldFVuaWZvcm1Mb2NhdGlvbihtQmxp
dFByb2dyYW0sICJ1X3NjYWxlIik7CisgICAgICAgIG1PZmZzZXRMb2NhdGlvbiAgICAgICAgPSBt
RnVuY3Rpb25zLT5nZXRVbmlmb3JtTG9jYXRpb24obUJsaXRQcm9ncmFtLCAidV9vZmZzZXQiKTsK
ICAgICAgICAgbVN0YXRlTWFuYWdlci0+dXNlUHJvZ3JhbShtQmxpdFByb2dyYW0pOwotICAgICAg
ICBtRnVuY3Rpb25zLT51bmlmb3JtMWkodGV4dHVyZVVuaWZvcm0sIDApOwogICAgIH0KIAogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgQXJyYXlTaXplKG1TY3JhdGNoVGV4dHVyZXMpOyBpKysp
CkBAIC0yODEsMTEgKzQ0Nyw2IEBAIGdsOjpFcnJvciBCbGl0R0w6OmluaXRpYWxpemVSZXNvdXJj
ZXMoKQogICAgICAgICBpZiAobVNjcmF0Y2hUZXh0dXJlc1tpXSA9PSAwKQogICAgICAgICB7CiAg
ICAgICAgICAgICBtRnVuY3Rpb25zLT5nZW5UZXh0dXJlcygxLCAmbVNjcmF0Y2hUZXh0dXJlc1tp
XSk7Ci0gICAgICAgICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShHTF9URVhUVVJFXzJE
LCBtU2NyYXRjaFRleHR1cmVzW2ldKTsKLQotICAgICAgICAgICAgLy8gVXNlIG5lYXJlc3QsIG5v
bi1taXBtYXBwZWQgc2FtcGxpbmcgd2l0aCB0aGUgc2NyYXRjaCB0ZXh0dXJlCi0gICAgICAgICAg
ICBtRnVuY3Rpb25zLT50ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlO
X0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgICAgICAgICBtRnVuY3Rpb25zLT50ZXhQYXJhbWV0
ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTI5OSw2ICs0NjAsMjcgQEAgZ2w6OkVycm9yIEJsaXRHTDo6
aW5pdGlhbGl6ZVJlc291cmNlcygpCiAgICAgICAgIG1GdW5jdGlvbnMtPmdlblZlcnRleEFycmF5
cygxLCAmbVZBTyk7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7
CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CisKK3ZvaWQgQmxpdEdMOjpvcnBoYW5TY3Jh
dGNoVGV4dHVyZXMoKQoreworICAgIGZvciAoYXV0byB0ZXh0dXJlIDogbVNjcmF0Y2hUZXh0dXJl
cykKKyAgICB7CisgICAgICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKEdMX1RFWFRVUkVf
MkQsIHRleHR1cmUpOworICAgICAgICBtRnVuY3Rpb25zLT50ZXhJbWFnZTJEKEdMX1RFWFRVUkVf
MkQsIDAsIEdMX1JHQkEsIDAsIDAsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgfQorfQorCit2b2lkIEJs
aXRHTDo6c2V0U2NyYXRjaFRleHR1cmVQYXJhbWV0ZXIoR0xlbnVtIHBhcmFtLCBHTGVudW0gdmFs
dWUpCit7CisgICAgZm9yIChhdXRvIHRleHR1cmUgOiBtU2NyYXRjaFRleHR1cmVzKQorICAgIHsK
KyAgICAgICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVy
ZSk7CisgICAgICAgIG1GdW5jdGlvbnMtPnRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgcGFy
YW0sIHZhbHVlKTsKKyAgICAgICAgbUZ1bmN0aW9ucy0+dGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBwYXJhbSwgdmFsdWUpOworICAgIH0KIH0KKworfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQmxpdEdM
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL0JsaXRHTC5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQmxpdEdMLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUyLDE0ICs1MiwyNiBAQCBjbGFzcyBCbGl0R0wgOiBwdWJsaWMgYW5nbGU6Ok5vbkNvcHlh
YmxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKTsK
IAorICAgIGdsOjpFcnJvciBibGl0Q29sb3JCdWZmZXJXaXRoU2hhZGVyKGNvbnN0IGdsOjpGcmFt
ZWJ1ZmZlciAqc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRlc3RB
cmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWx0
ZXIpOworCiAgICAgZ2w6OkVycm9yIGluaXRpYWxpemVSZXNvdXJjZXMoKTsKIAogICBwcml2YXRl
OgorICAgIHZvaWQgb3JwaGFuU2NyYXRjaFRleHR1cmVzKCk7CisgICAgdm9pZCBzZXRTY3JhdGNo
VGV4dHVyZVBhcmFtZXRlcihHTGVudW0gcGFyYW0sIEdMZW51bSB2YWx1ZSk7CisKICAgICBjb25z
dCBGdW5jdGlvbnNHTCAqbUZ1bmN0aW9uczsKICAgICBjb25zdCBXb3JrYXJvdW5kc0dMICZtV29y
a2Fyb3VuZHM7CiAgICAgU3RhdGVNYW5hZ2VyR0wgKm1TdGF0ZU1hbmFnZXI7CiAKICAgICBHTHVp
bnQgbUJsaXRQcm9ncmFtOworICAgIEdMaW50IG1Tb3VyY2VUZXh0dXJlTG9jYXRpb247CisgICAg
R0xpbnQgbVNjYWxlTG9jYXRpb247CisgICAgR0xpbnQgbU9mZnNldExvY2F0aW9uOwogCiAgICAg
R0x1aW50IG1TY3JhdGNoVGV4dHVyZXNbMl07CiAgICAgR0x1aW50IG1TY3JhdGNoRkJPOwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0J1ZmZl
ckdMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvQnVmZmVyR0wuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQnVmZmVyR0wuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIEJ1ZmZlckdMOjp+QnVmZmVyR0woKQogICAg
IG1CdWZmZXJJRCA9IDA7CiB9CiAKLWdsOjpFcnJvciBCdWZmZXJHTDo6c2V0RGF0YShjb25zdCB2
b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSwgR0xlbnVtIHVzYWdlKQorZ2w6OkVycm9yIEJ1ZmZlckdM
OjpzZXREYXRhKEdMZW51bSAvKnRhcmdldCovLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6
ZSwgR0xlbnVtIHVzYWdlKQogewogICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRCdWZmZXIoRGVzdEJ1
ZmZlck9wZXJhdGlvblRhcmdldCwgbUJ1ZmZlcklEKTsKICAgICBtRnVuY3Rpb25zLT5idWZmZXJE
YXRhKERlc3RCdWZmZXJPcGVyYXRpb25UYXJnZXQsIHNpemUsIGRhdGEsIHVzYWdlKTsKQEAgLTc2
LDcgKzc2LDcgQEAgZ2w6OkVycm9yIEJ1ZmZlckdMOjpzZXREYXRhKGNvbnN0IHZvaWQqIAogICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi1nbDo6RXJyb3IgQnVmZmVyR0w6
OnNldFN1YkRhdGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCBvZmZzZXQp
CitnbDo6RXJyb3IgQnVmZmVyR0w6OnNldFN1YkRhdGEoR0xlbnVtIC8qdGFyZ2V0Ki8sIGNvbnN0
IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCBzaXplX3Qgb2Zmc2V0KQogewogICAgIG1TdGF0ZU1h
bmFnZXItPmJpbmRCdWZmZXIoRGVzdEJ1ZmZlck9wZXJhdGlvblRhcmdldCwgbUJ1ZmZlcklEKTsK
ICAgICBtRnVuY3Rpb25zLT5idWZmZXJTdWJEYXRhKERlc3RCdWZmZXJPcGVyYXRpb25UYXJnZXQs
IG9mZnNldCwgc2l6ZSwgZGF0YSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvQnVmZmVyR0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQnVmZmVyR0wuaAkocmV2aXNp
b24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL0J1ZmZlckdMLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDggKzI0LDggQEAgY2xhc3Mg
QnVmZmVyR0wgOiBwdWJsaWMgQnVmZmVySW1wbAogICAgIEJ1ZmZlckdMKGNvbnN0IEZ1bmN0aW9u
c0dMICpmdW5jdGlvbnMsIFN0YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIpOwogICAgIH5CdWZm
ZXJHTCgpIG92ZXJyaWRlOwogCi0gICAgZ2w6OkVycm9yIHNldERhdGEoY29uc3Qgdm9pZCogZGF0
YSwgc2l6ZV90IHNpemUsIEdMZW51bSB1c2FnZSkgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIHNl
dFN1YkRhdGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCBvZmZzZXQpIG92
ZXJyaWRlOworICAgIGdsOjpFcnJvciBzZXREYXRhKEdMZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQg
KmRhdGEsIHNpemVfdCBzaXplLCBHTGVudW0gdXNhZ2UpIG92ZXJyaWRlOworICAgIGdsOjpFcnJv
ciBzZXRTdWJEYXRhKEdMZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXpl
LCBzaXplX3Qgb2Zmc2V0KSBvdmVycmlkZTsKICAgICBnbDo6RXJyb3IgY29weVN1YkRhdGEoQnVm
ZmVySW1wbCogc291cmNlLCBHTGludHB0ciBzb3VyY2VPZmZzZXQsIEdMaW50cHRyIGRlc3RPZmZz
ZXQsIEdMc2l6ZWlwdHIgc2l6ZSkgb3ZlcnJpZGU7CiAgICAgZ2w6OkVycm9yIG1hcChHTGVudW0g
YWNjZXNzLCBHTHZvaWQgKiptYXBQdHIpIG92ZXJyaWRlOwogICAgIGdsOjpFcnJvciBtYXBSYW5n
ZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBHTGJpdGZpZWxkIGFjY2VzcywgR0x2b2lk
ICoqbWFwUHRyKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9Db250ZXh0R0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Db250ZXh0R0wuY3BwCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC9Db250ZXh0R0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzcwIEBACisv
LworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworLy8gQ29udGV4dEdMOgorLy8gICBPcGVuR0wtc3BlY2lmaWMgZnVuY3Rpb25hbGl0
eSBhc3NvY2lhdGVkIHdpdGggYSBHTCBDb250ZXh0LgorLy8KKworI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL2dsL0NvbnRleHRHTC5oIgorCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
Z2wvQnVmZmVyR0wuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9Db21waWxlckdM
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvRmVuY2VOVkdMLmgiCisjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvRmVuY2VTeW5jR0wuaCIKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9nbC9GdW5jdGlvbnNHTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2dsL0ZyYW1lYnVmZmVyR0wuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9QYXRo
R0wuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9Qcm9ncmFtR0wuaCIKKyNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9RdWVyeUdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZ2wvUmVuZGVyYnVmZmVyR0wuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9nbC9SZW5kZXJlckdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvU2FtcGxl
ckdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvU2hhZGVyR0wuaCIKKyNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5oIgorI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL2dsL1RleHR1cmVHTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL2dsL1RyYW5zZm9ybUZlZWRiYWNrR0wuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9nbC9WZXJ0ZXhBcnJheUdMLmgiCisKK25hbWVzcGFjZSByeAoreworCitDb250ZXh0R0w6OkNv
bnRleHRHTChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZzdGF0ZSwgUmVuZGVyZXJHTCAqcmVuZGVy
ZXIpCisgICAgOiBDb250ZXh0SW1wbChzdGF0ZSksIG1SZW5kZXJlcihyZW5kZXJlcikKK3sKK30K
KworQ29udGV4dEdMOjp+Q29udGV4dEdMKCkKK3sKK30KKworZ2w6OkVycm9yIENvbnRleHRHTDo6
aW5pdGlhbGl6ZSgpCit7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CisKK0NvbXBpbGVy
SW1wbCAqQ29udGV4dEdMOjpjcmVhdGVDb21waWxlcigpCit7CisgICAgcmV0dXJuIG5ldyBDb21w
aWxlckdMKGdldEZ1bmN0aW9ucygpKTsKK30KKworU2hhZGVySW1wbCAqQ29udGV4dEdMOjpjcmVh
dGVTaGFkZXIoY29uc3QgZ2w6OlNoYWRlclN0YXRlICZkYXRhKQoreworICAgIHJldHVybiBuZXcg
U2hhZGVyR0woZGF0YSwgZ2V0RnVuY3Rpb25zKCksIGdldFdvcmthcm91bmRzR0woKSk7Cit9CisK
K1Byb2dyYW1JbXBsICpDb250ZXh0R0w6OmNyZWF0ZVByb2dyYW0oY29uc3QgZ2w6OlByb2dyYW1T
dGF0ZSAmZGF0YSkKK3sKKyAgICByZXR1cm4gbmV3IFByb2dyYW1HTChkYXRhLCBnZXRGdW5jdGlv
bnMoKSwgZ2V0V29ya2Fyb3VuZHNHTCgpLCBnZXRTdGF0ZU1hbmFnZXIoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBnZXRFeHRlbnNpb25zKCkucGF0aFJlbmRlcmluZyk7Cit9CisKK0ZyYW1l
YnVmZmVySW1wbCAqQ29udGV4dEdMOjpjcmVhdGVGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVi
dWZmZXJTdGF0ZSAmZGF0YSkKK3sKKyAgICByZXR1cm4gbmV3IEZyYW1lYnVmZmVyR0woZGF0YSwg
Z2V0RnVuY3Rpb25zKCksIGdldFN0YXRlTWFuYWdlcigpLCBnZXRXb3JrYXJvdW5kc0dMKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1SZW5kZXJlci0+Z2V0QmxpdHRlcigpLCBmYWxz
ZSk7Cit9CisKK1RleHR1cmVJbXBsICpDb250ZXh0R0w6OmNyZWF0ZVRleHR1cmUoY29uc3QgZ2w6
OlRleHR1cmVTdGF0ZSAmc3RhdGUpCit7CisgICAgcmV0dXJuIG5ldyBUZXh0dXJlR0woc3RhdGUs
IGdldEZ1bmN0aW9ucygpLCBnZXRXb3JrYXJvdW5kc0dMKCksIGdldFN0YXRlTWFuYWdlcigpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIG1SZW5kZXJlci0+Z2V0QmxpdHRlcigpKTsKK30KKwor
UmVuZGVyYnVmZmVySW1wbCAqQ29udGV4dEdMOjpjcmVhdGVSZW5kZXJidWZmZXIoKQoreworICAg
IHJldHVybiBuZXcgUmVuZGVyYnVmZmVyR0woZ2V0RnVuY3Rpb25zKCksIGdldFdvcmthcm91bmRz
R0woKSwgZ2V0U3RhdGVNYW5hZ2VyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
ZXROYXRpdmVUZXh0dXJlQ2FwcygpKTsKK30KKworQnVmZmVySW1wbCAqQ29udGV4dEdMOjpjcmVh
dGVCdWZmZXIoKQoreworICAgIHJldHVybiBuZXcgQnVmZmVyR0woZ2V0RnVuY3Rpb25zKCksIGdl
dFN0YXRlTWFuYWdlcigpKTsKK30KKworVmVydGV4QXJyYXlJbXBsICpDb250ZXh0R0w6OmNyZWF0
ZVZlcnRleEFycmF5KGNvbnN0IGdsOjpWZXJ0ZXhBcnJheVN0YXRlICZkYXRhKQoreworICAgIHJl
dHVybiBuZXcgVmVydGV4QXJyYXlHTChkYXRhLCBnZXRGdW5jdGlvbnMoKSwgZ2V0U3RhdGVNYW5h
Z2VyKCkpOworfQorCitRdWVyeUltcGwgKkNvbnRleHRHTDo6Y3JlYXRlUXVlcnkoR0xlbnVtIHR5
cGUpCit7CisgICAgcmV0dXJuIG5ldyBRdWVyeUdMKHR5cGUsIGdldEZ1bmN0aW9ucygpLCBnZXRT
dGF0ZU1hbmFnZXIoKSk7Cit9CisKK0ZlbmNlTlZJbXBsICpDb250ZXh0R0w6OmNyZWF0ZUZlbmNl
TlYoKQoreworICAgIHJldHVybiBuZXcgRmVuY2VOVkdMKGdldEZ1bmN0aW9ucygpKTsKK30KKwor
RmVuY2VTeW5jSW1wbCAqQ29udGV4dEdMOjpjcmVhdGVGZW5jZVN5bmMoKQoreworICAgIHJldHVy
biBuZXcgRmVuY2VTeW5jR0woZ2V0RnVuY3Rpb25zKCkpOworfQorCitUcmFuc2Zvcm1GZWVkYmFj
a0ltcGwgKkNvbnRleHRHTDo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soY29uc3QgZ2w6OlRyYW5z
Zm9ybUZlZWRiYWNrU3RhdGUgJnN0YXRlKQoreworICAgIHJldHVybiBuZXcgVHJhbnNmb3JtRmVl
ZGJhY2tHTChzdGF0ZSwgZ2V0RnVuY3Rpb25zKCksIGdldFN0YXRlTWFuYWdlcigpKTsKK30KKwor
U2FtcGxlckltcGwgKkNvbnRleHRHTDo6Y3JlYXRlU2FtcGxlcigpCit7CisgICAgcmV0dXJuIG5l
dyBTYW1wbGVyR0woZ2V0RnVuY3Rpb25zKCksIGdldFN0YXRlTWFuYWdlcigpKTsKK30KKworc3Rk
Ojp2ZWN0b3I8UGF0aEltcGwgKj4gQ29udGV4dEdMOjpjcmVhdGVQYXRocyhHTHNpemVpIHJhbmdl
KQoreworICAgIGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jcyA9IGdldEZ1bmN0aW9ucygpOworCisg
ICAgc3RkOjp2ZWN0b3I8UGF0aEltcGwgKj4gcmV0OworICAgIHJldC5yZXNlcnZlKHJhbmdlKTsK
KworICAgIGNvbnN0IEdMdWludCBmaXJzdCA9IGZ1bmNzLT5nZW5QYXRoc05WKHJhbmdlKTsKKyAg
ICBpZiAoZmlyc3QgPT0gMCkKKyAgICAgICAgcmV0dXJuIHJldDsKKworICAgIGZvciAoR0xzaXpl
aSBpID0gMDsgaSA8IHJhbmdlOyArK2kpCisgICAgeworICAgICAgICBjb25zdCBhdXRvIGlkID0g
Zmlyc3QgKyBpOworICAgICAgICByZXQucHVzaF9iYWNrKG5ldyBQYXRoR0woZnVuY3MsIGlkKSk7
CisgICAgfQorCisgICAgcmV0dXJuIHJldDsKK30KKworZ2w6OkVycm9yIENvbnRleHRHTDo6Zmx1
c2goKQoreworICAgIHJldHVybiBtUmVuZGVyZXItPmZsdXNoKCk7Cit9CisKK2dsOjpFcnJvciBD
b250ZXh0R0w6OmZpbmlzaCgpCit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+ZmluaXNoKCk7Cit9
CisKK2dsOjpFcnJvciBDb250ZXh0R0w6OmRyYXdBcnJheXMoR0xlbnVtIG1vZGUsIEdMaW50IGZp
cnN0LCBHTHNpemVpIGNvdW50KQoreworICAgIHJldHVybiBtUmVuZGVyZXItPmRyYXdBcnJheXMo
bVN0YXRlLCBtb2RlLCBmaXJzdCwgY291bnQpOworfQorCitnbDo6RXJyb3IgQ29udGV4dEdMOjpk
cmF3QXJyYXlzSW5zdGFuY2VkKEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBmaXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZUNvdW50KQoreworICAgIHJldHVybiBtUmVu
ZGVyZXItPmRyYXdBcnJheXNJbnN0YW5jZWQobVN0YXRlLCBtb2RlLCBmaXJzdCwgY291bnQsIGlu
c3RhbmNlQ291bnQpOworfQorCitnbDo6RXJyb3IgQ29udGV4dEdMOjpkcmF3RWxlbWVudHMoR0xl
bnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4
UmFuZ2UpCit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+ZHJhd0VsZW1lbnRzKG1TdGF0ZSwgbW9k
ZSwgY291bnQsIHR5cGUsIGluZGljZXMsIGluZGV4UmFuZ2UpOworfQorCitnbDo6RXJyb3IgQ29u
dGV4dEdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5j
ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpCit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+ZHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkKG1TdGF0ZSwgbW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMsIGluc3Rh
bmNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhS
YW5nZSk7Cit9CisKK2dsOjpFcnJvciBDb250ZXh0R0w6OmRyYXdSYW5nZUVsZW1lbnRzKEdMZW51
bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0
YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGVuZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpJbmRleFJh
bmdlICZpbmRleFJhbmdlKQoreworICAgIHJldHVybiBtUmVuZGVyZXItPmRyYXdSYW5nZUVsZW1l
bnRzKG1TdGF0ZSwgbW9kZSwgc3RhcnQsIGVuZCwgY291bnQsIHR5cGUsIGluZGljZXMsIGluZGV4
UmFuZ2UpOworfQorCit2b2lkIENvbnRleHRHTDo6c3RlbmNpbEZpbGxQYXRoKGNvbnN0IGdsOjpQ
YXRoICpwYXRoLCBHTGVudW0gZmlsbE1vZGUsIEdMdWludCBtYXNrKQoreworICAgIG1SZW5kZXJl
ci0+c3RlbmNpbEZpbGxQYXRoKG1TdGF0ZSwgcGF0aCwgZmlsbE1vZGUsIG1hc2spOworfQorCit2
b2lkIENvbnRleHRHTDo6c3RlbmNpbFN0cm9rZVBhdGgoY29uc3QgZ2w6OlBhdGggKnBhdGgsIEdM
aW50IHJlZmVyZW5jZSwgR0x1aW50IG1hc2spCit7CisgICAgbVJlbmRlcmVyLT5zdGVuY2lsU3Ry
b2tlUGF0aChtU3RhdGUsIHBhdGgsIHJlZmVyZW5jZSwgbWFzayk7Cit9CisKK3ZvaWQgQ29udGV4
dEdMOjpjb3ZlckZpbGxQYXRoKGNvbnN0IGdsOjpQYXRoICpwYXRoLCBHTGVudW0gY292ZXJNb2Rl
KQoreworICAgIG1SZW5kZXJlci0+Y292ZXJGaWxsUGF0aChtU3RhdGUsIHBhdGgsIGNvdmVyTW9k
ZSk7Cit9CisKK3ZvaWQgQ29udGV4dEdMOjpjb3ZlclN0cm9rZVBhdGgoY29uc3QgZ2w6OlBhdGgg
KnBhdGgsIEdMZW51bSBjb3Zlck1vZGUpCit7CisgICAgbVJlbmRlcmVyLT5jb3ZlclN0cm9rZVBh
dGgobVN0YXRlLCBwYXRoLCBjb3Zlck1vZGUpOworfQorCit2b2lkIENvbnRleHRHTDo6c3RlbmNp
bFRoZW5Db3ZlckZpbGxQYXRoKGNvbnN0IGdsOjpQYXRoICpwYXRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlKQoreworICAgIG1SZW5k
ZXJlci0+c3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoKG1TdGF0ZSwgcGF0aCwgZmlsbE1vZGUsIG1h
c2ssIGNvdmVyTW9kZSk7Cit9CisKK3ZvaWQgQ29udGV4dEdMOjpzdGVuY2lsVGhlbkNvdmVyU3Ry
b2tlUGF0aChjb25zdCBnbDo6UGF0aCAqcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSkKK3sKKyAgICBtUmVuZGVyZXIt
PnN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoKG1TdGF0ZSwgcGF0aCwgcmVmZXJlbmNlLCBtYXNr
LCBjb3Zlck1vZGUpOworfQorCit2b2lkIENvbnRleHRHTDo6Y292ZXJGaWxsUGF0aEluc3RhbmNl
ZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1
ZXMpCit7CisgICAgbVJlbmRlcmVyLT5jb3ZlckZpbGxQYXRoSW5zdGFuY2VkKG1TdGF0ZSwgcGF0
aHMsIGNvdmVyTW9kZSwgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzKTsKK30KKwordm9p
ZCBDb250ZXh0R0w6OmNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZlY3Rvcjxn
bDo6UGF0aCAqPiAmcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCit7CisgICAgbVJl
bmRlcmVyLT5jb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWQobVN0YXRlLCBwYXRocywgY292ZXJNb2Rl
LCB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpOworfQorCit2b2lkIENvbnRleHRHTDo6
c3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZw
YXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZp
bGxNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
bWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRy
YW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKK3sKKyAgICBtUmVuZGVyZXItPnN0ZW5jaWxG
aWxsUGF0aEluc3RhbmNlZChtU3RhdGUsIHBhdGhzLCBmaWxsTW9kZSwgbWFzaywgdHJhbnNmb3Jt
VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1W
YWx1ZXMpOworfQorCit2b2lkIENvbnRleHRHTDo6c3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWQo
Y29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFu
c2Zvcm1WYWx1ZXMpCit7CisgICAgbVJlbmRlcmVyLT5zdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNl
ZChtU3RhdGUsIHBhdGhzLCByZWZlcmVuY2UsIG1hc2ssIHRyYW5zZm9ybVR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1WYWx1ZXMpOworfQor
Cit2b2lkIENvbnRleHRHTDo6c3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkKGNvbnN0
IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
bWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKK3sKKyAgICBt
UmVuZGVyZXItPnN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZChtU3RhdGUsIHBhdGhz
LCBjb3Zlck1vZGUsIGZpbGxNb2RlLCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcyk7Cit9
CisKK3ZvaWQgQ29udGV4dEdMOjpzdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZChj
b25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZl
cmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFs
dWVzKQoreworICAgIG1SZW5kZXJlci0+c3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5j
ZWQobVN0YXRlLCBwYXRocywgY292ZXJNb2RlLCByZWZlcmVuY2UsIG1hc2ssCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlLCB0
cmFuc2Zvcm1WYWx1ZXMpOworfQorCitHTGVudW0gQ29udGV4dEdMOjpnZXRSZXNldFN0YXR1cygp
Cit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0UmVzZXRTdGF0dXMoKTsKK30KKworc3RkOjpz
dHJpbmcgQ29udGV4dEdMOjpnZXRWZW5kb3JTdHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiBt
UmVuZGVyZXItPmdldFZlbmRvclN0cmluZygpOworfQorCitzdGQ6OnN0cmluZyBDb250ZXh0R0w6
OmdldFJlbmRlcmVyRGVzY3JpcHRpb24oKSBjb25zdAoreworICAgIHJldHVybiBtUmVuZGVyZXIt
PmdldFJlbmRlcmVyRGVzY3JpcHRpb24oKTsKK30KKwordm9pZCBDb250ZXh0R0w6Omluc2VydEV2
ZW50TWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpCit7CisgICAgbVJl
bmRlcmVyLT5pbnNlcnRFdmVudE1hcmtlcihsZW5ndGgsIG1hcmtlcik7Cit9CisKK3ZvaWQgQ29u
dGV4dEdMOjpwdXNoR3JvdXBNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtl
cikKK3sKKyAgICBtUmVuZGVyZXItPnB1c2hHcm91cE1hcmtlcihsZW5ndGgsIG1hcmtlcik7Cit9
CisKK3ZvaWQgQ29udGV4dEdMOjpwb3BHcm91cE1hcmtlcigpCit7CisgICAgbVJlbmRlcmVyLT5w
b3BHcm91cE1hcmtlcigpOworfQorCit2b2lkIENvbnRleHRHTDo6c3luY1N0YXRlKGNvbnN0IGds
OjpTdGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpTdGF0ZTo6RGlydHlCaXRzICZkaXJ0eUJpdHMpCit7
CisgICAgbVJlbmRlcmVyLT5nZXRTdGF0ZU1hbmFnZXIoKS0+c3luY1N0YXRlKHN0YXRlLCBkaXJ0
eUJpdHMpOworfQorCitHTGludCBDb250ZXh0R0w6OmdldEdQVURpc2pvaW50KCkKK3sKKyAgICBy
ZXR1cm4gbVJlbmRlcmVyLT5nZXRHUFVEaXNqb2ludCgpOworfQorCitHTGludDY0IENvbnRleHRH
TDo6Z2V0VGltZXN0YW1wKCkKK3sKKyAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXRUaW1lc3RhbXAo
KTsKK30KKwordm9pZCBDb250ZXh0R0w6Om9uTWFrZUN1cnJlbnQoY29uc3QgZ2w6OkNvbnRleHRT
dGF0ZSAmZGF0YSkKK3sKKyAgICAvLyBRdWVyaWVzIG5lZWQgdG8gYmUgcGF1c2VkL3Jlc3VtZWQg
b24gY29udGV4dCBzd2l0Y2hlcworICAgIG1SZW5kZXJlci0+Z2V0U3RhdGVNYW5hZ2VyKCktPm9u
TWFrZUN1cnJlbnQoZGF0YSk7Cit9CisKK2NvbnN0IGdsOjpDYXBzICZDb250ZXh0R0w6OmdldE5h
dGl2ZUNhcHMoKSBjb25zdAoreworICAgIHJldHVybiBtUmVuZGVyZXItPmdldE5hdGl2ZUNhcHMo
KTsKK30KKworY29uc3QgZ2w6OlRleHR1cmVDYXBzTWFwICZDb250ZXh0R0w6OmdldE5hdGl2ZVRl
eHR1cmVDYXBzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXROYXRpdmVUZXh0
dXJlQ2FwcygpOworfQorCitjb25zdCBnbDo6RXh0ZW5zaW9ucyAmQ29udGV4dEdMOjpnZXROYXRp
dmVFeHRlbnNpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXROYXRpdmVF
eHRlbnNpb25zKCk7Cit9CisKK2NvbnN0IGdsOjpMaW1pdGF0aW9ucyAmQ29udGV4dEdMOjpnZXRO
YXRpdmVMaW1pdGF0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0TmF0
aXZlTGltaXRhdGlvbnMoKTsKK30KKworY29uc3QgRnVuY3Rpb25zR0wgKkNvbnRleHRHTDo6Z2V0
RnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXRGdW5jdGlvbnMo
KTsKK30KKworU3RhdGVNYW5hZ2VyR0wgKkNvbnRleHRHTDo6Z2V0U3RhdGVNYW5hZ2VyKCkKK3sK
KyAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXRTdGF0ZU1hbmFnZXIoKTsKK30KKworY29uc3QgV29y
a2Fyb3VuZHNHTCAmQ29udGV4dEdMOjpnZXRXb3JrYXJvdW5kc0dMKCkKK3sKKyAgICByZXR1cm4g
bVJlbmRlcmVyLT5nZXRXb3JrYXJvdW5kcygpOworfQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Db250
ZXh0R0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvQ29udGV4dEdMLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0NvbnRleHRHTC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTgzIEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gQ29udGV4dEdMOgorLy8gICBP
cGVuR0wtc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSBhc3NvY2lhdGVkIHdpdGggYSBHTCBDb250ZXh0
LgorLy8KKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9HTF9DT05URVhUR0xfSF8KKyNkZWZp
bmUgTElCQU5HTEVfUkVOREVSRVJfR0xfQ09OVEVYVEdMX0hfCisKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9Db250ZXh0SW1wbC5oIgorCituYW1lc3BhY2Ugc2gKK3sKK3N0cnVjdCBCbG9j
a01lbWJlckluZm87Cit9CisKK25hbWVzcGFjZSByeAoreworY2xhc3MgRnVuY3Rpb25zR0w7Citj
bGFzcyBSZW5kZXJlckdMOworY2xhc3MgU3RhdGVNYW5hZ2VyR0w7CitzdHJ1Y3QgV29ya2Fyb3Vu
ZHNHTDsKKworY2xhc3MgQ29udGV4dEdMIDogcHVibGljIENvbnRleHRJbXBsCit7CisgIHB1Ymxp
YzoKKyAgICBDb250ZXh0R0woY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmc3RhdGUsIFJlbmRlcmVy
R0wgKnJlbmRlcmVyKTsKKyAgICB+Q29udGV4dEdMKCkgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJy
b3IgaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOworCisgICAgLy8gU2hhZGVyIGNyZWF0aW9uCisgICAg
Q29tcGlsZXJJbXBsICpjcmVhdGVDb21waWxlcigpIG92ZXJyaWRlOworICAgIFNoYWRlckltcGwg
KmNyZWF0ZVNoYWRlcihjb25zdCBnbDo6U2hhZGVyU3RhdGUgJmRhdGEpIG92ZXJyaWRlOworICAg
IFByb2dyYW1JbXBsICpjcmVhdGVQcm9ncmFtKGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJmRhdGEp
IG92ZXJyaWRlOworCisgICAgLy8gRnJhbWVidWZmZXIgY3JlYXRpb24KKyAgICBGcmFtZWJ1ZmZl
ckltcGwgKmNyZWF0ZUZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZkYXRh
KSBvdmVycmlkZTsKKworICAgIC8vIFRleHR1cmUgY3JlYXRpb24KKyAgICBUZXh0dXJlSW1wbCAq
Y3JlYXRlVGV4dHVyZShjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZzdGF0ZSkgb3ZlcnJpZGU7CisK
KyAgICAvLyBSZW5kZXJidWZmZXIgY3JlYXRpb24KKyAgICBSZW5kZXJidWZmZXJJbXBsICpjcmVh
dGVSZW5kZXJidWZmZXIoKSBvdmVycmlkZTsKKworICAgIC8vIEJ1ZmZlciBjcmVhdGlvbgorICAg
IEJ1ZmZlckltcGwgKmNyZWF0ZUJ1ZmZlcigpIG92ZXJyaWRlOworCisgICAgLy8gVmVydGV4IEFy
cmF5IGNyZWF0aW9uCisgICAgVmVydGV4QXJyYXlJbXBsICpjcmVhdGVWZXJ0ZXhBcnJheShjb25z
dCBnbDo6VmVydGV4QXJyYXlTdGF0ZSAmZGF0YSkgb3ZlcnJpZGU7CisKKyAgICAvLyBRdWVyeSBh
bmQgRmVuY2UgY3JlYXRpb24KKyAgICBRdWVyeUltcGwgKmNyZWF0ZVF1ZXJ5KEdMZW51bSB0eXBl
KSBvdmVycmlkZTsKKyAgICBGZW5jZU5WSW1wbCAqY3JlYXRlRmVuY2VOVigpIG92ZXJyaWRlOwor
ICAgIEZlbmNlU3luY0ltcGwgKmNyZWF0ZUZlbmNlU3luYygpIG92ZXJyaWRlOworCisgICAgLy8g
VHJhbnNmb3JtIEZlZWRiYWNrIGNyZWF0aW9uCisgICAgVHJhbnNmb3JtRmVlZGJhY2tJbXBsICpj
cmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygKKyAgICAgICAgY29uc3QgZ2w6OlRyYW5zZm9ybUZlZWRi
YWNrU3RhdGUgJnN0YXRlKSBvdmVycmlkZTsKKworICAgIC8vIFNhbXBsZXIgb2JqZWN0IGNyZWF0
aW9uCisgICAgU2FtcGxlckltcGwgKmNyZWF0ZVNhbXBsZXIoKSBvdmVycmlkZTsKKworICAgIC8v
IFBhdGggb2JqZWN0IGNyZWF0aW9uCisgICAgc3RkOjp2ZWN0b3I8UGF0aEltcGwgKj4gY3JlYXRl
UGF0aHMoR0xzaXplaSByYW5nZSkgb3ZlcnJpZGU7CisKKyAgICAvLyBGbHVzaCBhbmQgZmluaXNo
LgorICAgIGdsOjpFcnJvciBmbHVzaCgpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBmaW5pc2go
KSBvdmVycmlkZTsKKworICAgIC8vIERyYXdpbmcgbWV0aG9kcy4KKyAgICBnbDo6RXJyb3IgZHJh
d0FycmF5cyhHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpIG92ZXJyaWRl
OworICAgIGdsOjpFcnJvciBkcmF3QXJyYXlzSW5zdGFuY2VkKEdMZW51bSBtb2RlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZpcnN0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZUNvdW50KSBvdmVycmlkZTsKKworICAgIGdsOjpF
cnJvciBkcmF3RWxlbWVudHMoR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkg
b3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGRyYXdFbGVtZW50c0luc3RhbmNlZChHTGVudW0gbW9k
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4
UmFuZ2UpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBkcmF3UmFuZ2VFbGVtZW50cyhHTGVudW0g
bW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZW5kLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkgb3ZlcnJpZGU7CisKKyAgICAvLyBDSFJPTUlV
TV9wYXRoX3JlbmRlcmluZyBpbXBsZW1lbnRhdGlvbgorICAgIHZvaWQgc3RlbmNpbEZpbGxQYXRo
KGNvbnN0IGdsOjpQYXRoICpwYXRoLCBHTGVudW0gZmlsbE1vZGUsIEdMdWludCBtYXNrKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHN0ZW5jaWxTdHJva2VQYXRoKGNvbnN0IGdsOjpQYXRoICpwYXRoLCBH
TGludCByZWZlcmVuY2UsIEdMdWludCBtYXNrKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvdmVyRmls
bFBhdGgoY29uc3QgZ2w6OlBhdGggKnBhdGgsIEdMZW51bSBjb3Zlck1vZGUpIG92ZXJyaWRlOwor
ICAgIHZvaWQgY292ZXJTdHJva2VQYXRoKGNvbnN0IGdsOjpQYXRoICpwYXRoLCBHTGVudW0gY292
ZXJNb2RlKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aChjb25z
dCBnbDo6UGF0aCAqcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZmlsbE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1h
c2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSkg
b3ZlcnJpZGU7CisgICAgdm9pZCBzdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aChjb25zdCBnbDo6
UGF0aCAqcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJl
ZmVyZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNr
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSkg
b3ZlcnJpZGU7CisgICAgdm9pZCBjb3ZlckZpbGxQYXRoSW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVj
dG9yPGdsOjpQYXRoICo+ICZwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGNvdmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykgb3ZlcnJpZGU7CisgICAgdm9pZCBjb3ZlclN0cm9rZVBh
dGhJbnN0YW5jZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKSBv
dmVycmlkZTsKKyAgICB2b2lkIHN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZl
Y3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGZpbGxNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFu
c2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxv
YXQgKnRyYW5zZm9ybVZhbHVlcykgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGVuY2lsU3Ryb2tlUGF0
aEluc3RhbmNlZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZChjb25zdCBz
dGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNm
b3JtVmFsdWVzKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRo
SW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVu
Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
bWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKSBvdmVycmlkZTsKKworICAgIC8v
IERldmljZSBsb3NzCisgICAgR0xlbnVtIGdldFJlc2V0U3RhdHVzKCkgb3ZlcnJpZGU7CisKKyAg
ICAvLyBWZW5kb3IgYW5kIGRlc2NyaXB0aW9uIHN0cmluZ3MuCisgICAgc3RkOjpzdHJpbmcgZ2V0
VmVuZG9yU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpzdHJpbmcgZ2V0UmVuZGVy
ZXJEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOworCisgICAgLy8gRGVidWcgbWFya2Vycy4K
KyAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICpt
YXJrZXIpIG92ZXJyaWRlOworICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyKEdMc2l6ZWkgbGVuZ3Ro
LCBjb25zdCBjaGFyICptYXJrZXIpIG92ZXJyaWRlOworICAgIHZvaWQgcG9wR3JvdXBNYXJrZXIo
KSBvdmVycmlkZTsKKworICAgIC8vIFN0YXRlIHN5bmMgd2l0aCBkaXJ0eSBiaXRzLgorICAgIHZv
aWQgc3luY1N0YXRlKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpTdGF0ZTo6RGly
dHlCaXRzICZkaXJ0eUJpdHMpIG92ZXJyaWRlOworCisgICAgLy8gRGlzam9pbnQgdGltZXIgcXVl
cmllcworICAgIEdMaW50IGdldEdQVURpc2pvaW50KCkgb3ZlcnJpZGU7CisgICAgR0xpbnQ2NCBn
ZXRUaW1lc3RhbXAoKSBvdmVycmlkZTsKKworICAgIC8vIENvbnRleHQgc3dpdGNoaW5nCisgICAg
dm9pZCBvbk1ha2VDdXJyZW50KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEpIG92ZXJyaWRl
OworCisgICAgLy8gQ2FwcyBxdWVyaWVzCisgICAgY29uc3QgZ2w6OkNhcHMgJmdldE5hdGl2ZUNh
cHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBnbDo6VGV4dHVyZUNhcHNNYXAgJmdldE5h
dGl2ZVRleHR1cmVDYXBzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgZ2w6OkV4dGVuc2lv
bnMgJmdldE5hdGl2ZUV4dGVuc2lvbnMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBnbDo6
TGltaXRhdGlvbnMgJmdldE5hdGl2ZUxpbWl0YXRpb25zKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAg
ICAvLyBIYW5kbGUgaGVscGVycworICAgIGNvbnN0IEZ1bmN0aW9uc0dMICpnZXRGdW5jdGlvbnMo
KSBjb25zdDsKKyAgICBTdGF0ZU1hbmFnZXJHTCAqZ2V0U3RhdGVNYW5hZ2VyKCk7CisgICAgY29u
c3QgV29ya2Fyb3VuZHNHTCAmZ2V0V29ya2Fyb3VuZHNHTCgpOworCisgIHByaXZhdGU6CisgICAg
UmVuZGVyZXJHTCAqbVJlbmRlcmVyOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRp
ZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfR0xfQ09OVEVYVEdMX0hfCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRGlzcGxheUdMLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvRGlzcGxheUdMLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Rpc3BsYXlHTC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyLDcgKzEyLDkgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9Db250ZXh0LmgiCiAjaW5j
bHVkZSAibGliQU5HTEUvRGlzcGxheS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1N1cmZhY2UuaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9Db250ZXh0R0wuaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJlckdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvZ2wvU3RhdGVNYW5hZ2VyR0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9n
bC9TdXJmYWNlR0wuaCIKIAogI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KQEAgLTU1LDE3ICs1Nywx
NyBAQCBJbWFnZUltcGwgKkRpc3BsYXlHTDo6Y3JlYXRlSW1hZ2UoRUdMZW51CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLWdsOjpDb250ZXh0ICpEaXNwbGF5R0w6OmNyZWF0ZUNvbnRleHQoY29u
c3QgZWdsOjpDb25maWcgKmNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OkNvbnRleHQgKnNoYXJlQ29udGV4dCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCitD
b250ZXh0SW1wbCAqRGlzcGxheUdMOjpjcmVhdGVDb250ZXh0KGNvbnN0IGdsOjpDb250ZXh0U3Rh
dGUgJnN0YXRlKQogewogICAgIEFTU0VSVChtUmVuZGVyZXIgIT0gbnVsbHB0cik7Ci0gICAgcmV0
dXJuIG5ldyBnbDo6Q29udGV4dChjb25maWcsIHNoYXJlQ29udGV4dCwgbVJlbmRlcmVyLCBhdHRy
aWJzKTsKKyAgICByZXR1cm4gbmV3IENvbnRleHRHTChzdGF0ZSwgbVJlbmRlcmVyKTsKIH0KIAot
U3RyZWFtSW1wbCAqRGlzcGxheUdMOjpjcmVhdGVTdHJlYW0oY29uc3QgZWdsOjpBdHRyaWJ1dGVN
YXAgJmF0dHJpYnMpCitTdHJlYW1Qcm9kdWNlckltcGwgKkRpc3BsYXlHTDo6Y3JlYXRlU3RyZWFt
UHJvZHVjZXJEM0RUZXh0dXJlTlYxMigKKyAgICBlZ2w6OlN0cmVhbTo6Q29uc3VtZXJUeXBlIGNv
bnN1bWVyVHlwZSwKKyAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKIHsKLSAg
ICBVTlJFQUNIQUJMRSgpOworICAgIFVOSU1QTEVNRU5URUQoKTsKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIApAQCAtNzYsMTQgKzc4LDE3IEBAIGVnbDo6RXJyb3IgRGlzcGxheUdMOjptYWtlQ3Vy
cmVudChlZ2w6OlMKICAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwogICAg
IH0KIAorICAgIC8vIFBhdXNlIHRyYW5zZm9ybSBmZWVkYmFjayBiZWZvcmUgbWFraW5nIGEgbmV3
IHN1cmZhY2UgY3VycmVudCwgdG8gd29ya2Fyb3VuZCBhbmdsZWJ1Zy5jb20vMTQyNgorICAgIENv
bnRleHRHTCAqZ2xDb250ZXh0ID0gR2V0SW1wbEFzPENvbnRleHRHTD4oY29udGV4dCk7CisgICAg
Z2xDb250ZXh0LT5nZXRTdGF0ZU1hbmFnZXIoKS0+cGF1c2VUcmFuc2Zvcm1GZWVkYmFjayhjb250
ZXh0LT5nZXRDb250ZXh0U3RhdGUoKSk7CisKICAgICBTdXJmYWNlR0wgKmdsRHJhd1N1cmZhY2Ug
PSBHZXRJbXBsQXM8U3VyZmFjZUdMPihkcmF3U3VyZmFjZSk7CiAgICAgcmV0dXJuIGdsRHJhd1N1
cmZhY2UtPm1ha2VDdXJyZW50KCk7CiB9CiAKLWNvbnN0IGdsOjpWZXJzaW9uICZEaXNwbGF5R0w6
OmdldE1heFN1cHBvcnRlZEVTVmVyc2lvbigpIGNvbnN0CitnbDo6VmVyc2lvbiBEaXNwbGF5R0w6
OmdldE1heFN1cHBvcnRlZEVTVmVyc2lvbigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1SZW5kZXJl
ciAhPSBudWxscHRyKTsKICAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXRNYXhTdXBwb3J0ZWRFU1Zl
cnNpb24oKTsKIH0KLQogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL0Rpc3BsYXlHTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9EaXNwbGF5R0wuaAkocmV2aXNpb24g
MjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL0Rpc3BsYXlHTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxOSArMzAsMTkgQEAgY2xhc3Mg
RGlzcGxheUdMIDogcHVibGljIERpc3BsYXlJbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlZ2w6OkltYWdlU2libGluZyAqYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOwogCi0gICAgZ2w6OkNv
bnRleHQgKmNyZWF0ZUNvbnRleHQoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Q29udGV4dCAqc2hhcmVDb250ZXh0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZh
dHRyaWJzKSBvdmVycmlkZTsKKyAgICBDb250ZXh0SW1wbCAqY3JlYXRlQ29udGV4dChjb25zdCBn
bDo6Q29udGV4dFN0YXRlICZzdGF0ZSkgb3ZlcnJpZGU7CiAKLSAgICBTdHJlYW1JbXBsICpjcmVh
dGVTdHJlYW0oY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOworICAg
IFN0cmVhbVByb2R1Y2VySW1wbCAqY3JlYXRlU3RyZWFtUHJvZHVjZXJEM0RUZXh0dXJlTlYxMigK
KyAgICAgICAgZWdsOjpTdHJlYW06OkNvbnN1bWVyVHlwZSBjb25zdW1lclR5cGUsCisgICAgICAg
IGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKIAogICAgIGVnbDo6
RXJyb3IgbWFrZUN1cnJlbnQoZWdsOjpTdXJmYWNlICpkcmF3U3VyZmFjZSwgZWdsOjpTdXJmYWNl
ICpyZWFkU3VyZmFjZSwgZ2w6OkNvbnRleHQgKmNvbnRleHQpIG92ZXJyaWRlOwogCiAgICAgdmly
dHVhbCBlZ2w6OkVycm9yIGdldERyaXZlclZlcnNpb24oc3RkOjpzdHJpbmcgKnZlcnNpb24pIGNv
bnN0ID0gMDsKKyAgICBnbDo6VmVyc2lvbiBnZXRNYXhTdXBwb3J0ZWRFU1ZlcnNpb24oKSBjb25z
dCBvdmVycmlkZTsKIAogICBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyZXJHTCAqZ2V0UmVuZGVyZXIo
KSBjb25zdCB7IHJldHVybiBtUmVuZGVyZXI7IH07Ci0gICAgY29uc3QgZ2w6OlZlcnNpb24gJmdl
dE1heFN1cHBvcnRlZEVTVmVyc2lvbigpIGNvbnN0OwogCiAgIHByaXZhdGU6CiAgICAgdmlydHVh
bCBjb25zdCBGdW5jdGlvbnNHTCAqZ2V0RnVuY3Rpb25zR0woKSBjb25zdCA9IDA7CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVidWZm
ZXJHTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL0ZyYW1lYnVmZmVyR0wuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVidWZm
ZXJHTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwLDMyICsxMCwzOSBAQAogCiAjaW5jbHVkZSAi
Y29tbW9uL0JpdFNldEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCi0jaW5j
bHVkZSAibGliQU5HTEUvRGF0YS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHRTdGF0ZS5o
IgogI2luY2x1ZGUgImxpYkFOR0xFL1N0YXRlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRnJhbWVi
dWZmZXJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvYW5nbGV0eXBlcy5oIgogI2lu
Y2x1ZGUgImxpYkFOR0xFL2Zvcm1hdHV0aWxzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvQ29udGV4dEltcGwuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9CbGl0R0wu
aCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9GdW5jdGlvbnNHTC5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1JlbmRlcmJ1ZmZlckdMLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2VyR0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9nbC9UZXh0dXJlR0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9X
b3JrYXJvdW5kc0dMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZm9ybWF0dXRp
bHNnbC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL3JlbmRlcmVyZ2xfdXRpbHMu
aCIKICNpbmNsdWRlICJwbGF0Zm9ybS9QbGF0Zm9ybS5oIgogCiB1c2luZyBuYW1lc3BhY2UgZ2w7
Cit1c2luZyBhbmdsZTo6Q2hlY2tlZE51bWVyaWM7CiAKIG5hbWVzcGFjZSByeAogewogCi1GcmFt
ZWJ1ZmZlckdMOjpGcmFtZWJ1ZmZlckdMKGNvbnN0IEZyYW1lYnVmZmVyOjpEYXRhICZkYXRhLAor
RnJhbWVidWZmZXJHTDo6RnJhbWVidWZmZXJHTChjb25zdCBGcmFtZWJ1ZmZlclN0YXRlICZzdGF0
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0
aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGVNYW5hZ2VyR0wgKnN0YXRl
TWFuYWdlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29ya2Fyb3VuZHNH
TCAmd29ya2Fyb3VuZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJsaXRHTCAqYmxp
dHRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0RlZmF1bHQpCi0gICAg
OiBGcmFtZWJ1ZmZlckltcGwoZGF0YSksCisgICAgOiBGcmFtZWJ1ZmZlckltcGwoc3RhdGUpLAog
ICAgICAgbUZ1bmN0aW9ucyhmdW5jdGlvbnMpLAogICAgICAgbVN0YXRlTWFuYWdlcihzdGF0ZU1h
bmFnZXIpLAogICAgICAgbVdvcmthcm91bmRzKHdvcmthcm91bmRzKSwKKyAgICAgIG1CbGl0dGVy
KGJsaXR0ZXIpLAogICAgICAgbUZyYW1lYnVmZmVySUQoMCksCiAgICAgICBtSXNEZWZhdWx0KGlz
RGVmYXVsdCkKIHsKQEAgLTQ2LDE0ICs1MywxNiBAQCBGcmFtZWJ1ZmZlckdMOjpGcmFtZWJ1ZmZl
ckdMKGNvbnN0IEZyYW1lCiB9CiAKIEZyYW1lYnVmZmVyR0w6OkZyYW1lYnVmZmVyR0woR0x1aW50
IGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlcjo6RGF0
YSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRnJhbWVidWZmZXJT
dGF0ZSAmc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZ1bmN0aW9u
c0dMICpmdW5jdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmth
cm91bmRzR0wgJndvcmthcm91bmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCbGl0
R0wgKmJsaXR0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlTWFuYWdlckdM
ICpzdGF0ZU1hbmFnZXIpCi0gICAgOiBGcmFtZWJ1ZmZlckltcGwoZGF0YSksCisgICAgOiBGcmFt
ZWJ1ZmZlckltcGwoc3RhdGUpLAogICAgICAgbUZ1bmN0aW9ucyhmdW5jdGlvbnMpLAogICAgICAg
bVN0YXRlTWFuYWdlcihzdGF0ZU1hbmFnZXIpLAogICAgICAgbVdvcmthcm91bmRzKHdvcmthcm91
bmRzKSwKKyAgICAgIG1CbGl0dGVyKGJsaXR0ZXIpLAogICAgICAgbUZyYW1lYnVmZmVySUQoaWQp
LAogICAgICAgbUlzRGVmYXVsdCh0cnVlKQogewpAQCAtMTQ5LDcgKzE1OCw3IEBAIEVycm9yIEZy
YW1lYnVmZmVyR0w6OmludmFsaWRhdGVTdWIoc2l6ZV8KICAgICByZXR1cm4gRXJyb3IoR0xfTk9f
RVJST1IpOwogfQogCi1FcnJvciBGcmFtZWJ1ZmZlckdMOjpjbGVhcihjb25zdCBEYXRhICZkYXRh
LCBHTGJpdGZpZWxkIG1hc2spCitFcnJvciBGcmFtZWJ1ZmZlckdMOjpjbGVhcihDb250ZXh0SW1w
bCAqY29udGV4dCwgR0xiaXRmaWVsZCBtYXNrKQogewogICAgIHN5bmNDbGVhclN0YXRlKG1hc2sp
OwogICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZy
YW1lYnVmZmVySUQpOwpAQCAtMTU4LDcgKzE2Nyw3IEBAIEVycm9yIEZyYW1lYnVmZmVyR0w6OmNs
ZWFyKGNvbnN0IERhdGEgJmQKICAgICByZXR1cm4gRXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi1F
cnJvciBGcmFtZWJ1ZmZlckdMOjpjbGVhckJ1ZmZlcmZ2KGNvbnN0IERhdGEgJmRhdGEsCitFcnJv
ciBGcmFtZWJ1ZmZlckdMOjpjbGVhckJ1ZmZlcmZ2KENvbnRleHRJbXBsICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYnVmZmVyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZXMpCkBAIC0xNzAsNyAr
MTc5LDcgQEAgRXJyb3IgRnJhbWVidWZmZXJHTDo6Y2xlYXJCdWZmZXJmdihjb25zdAogICAgIHJl
dHVybiBFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKLUVycm9yIEZyYW1lYnVmZmVyR0w6OmNsZWFy
QnVmZmVydWl2KGNvbnN0IERhdGEgJmRhdGEsCitFcnJvciBGcmFtZWJ1ZmZlckdMOjpjbGVhckJ1
ZmZlcnVpdihDb250ZXh0SW1wbCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBkcmF3YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0x1aW50ICp2YWx1ZXMpCkBAIC0xODIsNyArMTkxLDcgQEAgRXJyb3IgRnJhbWVi
dWZmZXJHTDo6Y2xlYXJCdWZmZXJ1aXYoY29ucwogICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJP
Uik7CiB9CiAKLUVycm9yIEZyYW1lYnVmZmVyR0w6OmNsZWFyQnVmZmVyaXYoY29uc3QgRGF0YSAm
ZGF0YSwKK0Vycm9yIEZyYW1lYnVmZmVyR0w6OmNsZWFyQnVmZmVyaXYoQ29udGV4dEltcGwgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBidWZmZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZXMpCkBA
IC0xOTQsNyArMjAzLDcgQEAgRXJyb3IgRnJhbWVidWZmZXJHTDo6Y2xlYXJCdWZmZXJpdihjb25z
dAogICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKLUVycm9yIEZyYW1lYnVmZmVy
R0w6OmNsZWFyQnVmZmVyZmkoY29uc3QgRGF0YSAmZGF0YSwKK0Vycm9yIEZyYW1lYnVmZmVyR0w6
OmNsZWFyQnVmZmVyZmkoQ29udGV4dEltcGwgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZmxvYXQgZGVwdGgsCkBAIC0yMDksMjEgKzIxOCwxOSBAQCBFcnJvciBGcmFtZWJ1
ZmZlckdMOjpjbGVhckJ1ZmZlcmZpKGNvbnN0CiAKIEdMZW51bSBGcmFtZWJ1ZmZlckdMOjpnZXRJ
bXBsZW1lbnRhdGlvbkNvbG9yUmVhZEZvcm1hdCgpIGNvbnN0CiB7Ci0gICAgY29uc3QgRnJhbWVi
dWZmZXJBdHRhY2htZW50ICpyZWFkQXR0YWNobWVudCA9IGdldERhdGEoKS5nZXRSZWFkQXR0YWNo
bWVudCgpOwotICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCA9IHJlYWRBdHRhY2htZW50LT5nZXRJ
bnRlcm5hbEZvcm1hdCgpOwotICAgIGNvbnN0IEludGVybmFsRm9ybWF0ICZpbnRlcm5hbEZvcm1h
dEluZm8gICAgPSBHZXRJbnRlcm5hbEZvcm1hdEluZm8oaW50ZXJuYWxGb3JtYXQpOwotICAgIHJl
dHVybiBpbnRlcm5hbEZvcm1hdEluZm8uZm9ybWF0OworICAgIGNvbnN0IGF1dG8gKnJlYWRBdHRh
Y2htZW50ID0gbVN0YXRlLmdldFJlYWRBdHRhY2htZW50KCk7CisgICAgY29uc3QgRm9ybWF0ICZm
b3JtYXQgICAgICAgPSByZWFkQXR0YWNobWVudC0+Z2V0Rm9ybWF0KCk7CisgICAgcmV0dXJuIGZv
cm1hdC5pbmZvLT5nZXRSZWFkUGl4ZWxzRm9ybWF0KCk7CiB9CiAKIEdMZW51bSBGcmFtZWJ1ZmZl
ckdMOjpnZXRJbXBsZW1lbnRhdGlvbkNvbG9yUmVhZFR5cGUoKSBjb25zdAogewotICAgIGNvbnN0
IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqcmVhZEF0dGFjaG1lbnQgPSBnZXREYXRhKCkuZ2V0UmVh
ZEF0dGFjaG1lbnQoKTsKLSAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQgPSByZWFkQXR0YWNobWVu
dC0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsKLSAgICBjb25zdCBJbnRlcm5hbEZvcm1hdCAmaW50ZXJu
YWxGb3JtYXRJbmZvICAgID0gR2V0SW50ZXJuYWxGb3JtYXRJbmZvKGludGVybmFsRm9ybWF0KTsK
LSAgICByZXR1cm4gaW50ZXJuYWxGb3JtYXRJbmZvLnR5cGU7CisgICAgY29uc3QgYXV0byAqcmVh
ZEF0dGFjaG1lbnQgPSBtU3RhdGUuZ2V0UmVhZEF0dGFjaG1lbnQoKTsKKyAgICBjb25zdCBGb3Jt
YXQgJmZvcm1hdCAgICAgICA9IHJlYWRBdHRhY2htZW50LT5nZXRGb3JtYXQoKTsKKyAgICByZXR1
cm4gZm9ybWF0LmluZm8tPmdldFJlYWRQaXhlbHNUeXBlKCk7CiB9CiAKLUVycm9yIEZyYW1lYnVm
ZmVyR0w6OnJlYWRQaXhlbHMoY29uc3QgU3RhdGUgJnN0YXRlLAorRXJyb3IgRnJhbWVidWZmZXJH
TDo6cmVhZFBpeGVscyhDb250ZXh0SW1wbCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmYXJlYSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHR5cGUsCkBAIC0yMzEsMzEgKzIzOCwxMjQgQEAgRXJyb3IgRnJhbWVidWZm
ZXJHTDo6cmVhZFBpeGVscyhjb25zdCBTdAogewogICAgIC8vIFRPRE86IGRvbid0IHN5bmMgdGhl
IHBpeGVsIHBhY2sgc3RhdGUgaGVyZSBvbmNlIHRoZSBkaXJ0eSBiaXRzIGNvbnRhaW4gdGhlIHBp
eGVsIHBhY2sgYnVmZmVyCiAgICAgLy8gYmluZGluZwotICAgIGNvbnN0IFBpeGVsUGFja1N0YXRl
ICZwYWNrU3RhdGUgPSBzdGF0ZS5nZXRQYWNrU3RhdGUoKTsKKyAgICBjb25zdCBQaXhlbFBhY2tT
dGF0ZSAmcGFja1N0YXRlID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFBhY2tTdGF0ZSgpOwog
ICAgIG1TdGF0ZU1hbmFnZXItPnNldFBpeGVsUGFja1N0YXRlKHBhY2tTdGF0ZSk7CiAKKyAgICBu
YXRpdmVnbDo6UmVhZFBpeGVsc0Zvcm1hdCByZWFkUGl4ZWxzRm9ybWF0ID0KKyAgICAgICAgbmF0
aXZlZ2w6OkdldFJlYWRQaXhlbHNGb3JtYXQobUZ1bmN0aW9ucywgbVdvcmthcm91bmRzLCBmb3Jt
YXQsIHR5cGUpOworICAgIEdMZW51bSByZWFkRm9ybWF0ID0gcmVhZFBpeGVsc0Zvcm1hdC5mb3Jt
YXQ7CisgICAgR0xlbnVtIHJlYWRUeXBlICAgPSByZWFkUGl4ZWxzRm9ybWF0LnR5cGU7CisKICAg
ICBtU3RhdGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZFUiwgbUZy
YW1lYnVmZmVySUQpOwotICAgIG1GdW5jdGlvbnMtPnJlYWRQaXhlbHMoYXJlYS54LCBhcmVhLnks
IGFyZWEud2lkdGgsIGFyZWEuaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CiAKLSAgICBy
ZXR1cm4gRXJyb3IoR0xfTk9fRVJST1IpOworICAgIGlmIChtV29ya2Fyb3VuZHMucGFja092ZXJs
YXBwaW5nUm93c1NlcGFyYXRlbHlQYWNrQnVmZmVyICYmIHBhY2tTdGF0ZS5waXhlbEJ1ZmZlci5n
ZXQoKSAmJgorICAgICAgICBwYWNrU3RhdGUucm93TGVuZ3RoICE9IDAgJiYgcGFja1N0YXRlLnJv
d0xlbmd0aCA8IGFyZWEud2lkdGgpCisgICAgeworICAgICAgICByZXR1cm4gcmVhZFBpeGVsc1Jv
d0J5Um93V29ya2Fyb3VuZChhcmVhLCByZWFkRm9ybWF0LCByZWFkVHlwZSwgcGFja1N0YXRlLCBw
aXhlbHMpOworICAgIH0KKworICAgIGlmIChtV29ya2Fyb3VuZHMucGFja0xhc3RSb3dTZXBhcmF0
ZWx5Rm9yUGFkZGluZ0luY2x1c2lvbikKKyAgICB7CisgICAgICAgIGdsOjpFeHRlbnRzIHNpemUo
YXJlYS53aWR0aCwgYXJlYS5oZWlnaHQsIDEpOworCisgICAgICAgIGJvb2wgYXBwbHk7CisgICAg
ICAgIEFOR0xFX1RSWV9SRVNVTFQoU2hvdWxkQXBwbHlMYXN0Um93UGFkZGluZ1dvcmthcm91bmQo
c2l6ZSwgcGFja1N0YXRlLCByZWFkRm9ybWF0LCByZWFkVHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgcGl4ZWxz
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhcHBseSk7CisKKyAgICAgICAgaWYgKGFwcGx5
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gcmVhZFBpeGVsc1BhZGRpbmdXb3JrYXJv
dW5kKGFyZWEsIHJlYWRGb3JtYXQsIHJlYWRUeXBlLCBwYWNrU3RhdGUsIHBpeGVscyk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBtRnVuY3Rpb25zLT5yZWFkUGl4ZWxzKGFyZWEueCwgYXJlYS55
LCBhcmVhLndpZHRoLCBhcmVhLmhlaWdodCwgcmVhZEZvcm1hdCwgcmVhZFR5cGUsIHBpeGVscyk7
CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotRXJyb3IgRnJhbWVidWZmZXJHTDo6
YmxpdChjb25zdCBTdGF0ZSAmc3RhdGUsCitFcnJvciBGcmFtZWJ1ZmZlckdMOjpibGl0KENvbnRl
eHRJbXBsICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVj
dGFuZ2xlICZzb3VyY2VBcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
UmVjdGFuZ2xlICZkZXN0QXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVs
ZCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsdGVyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlciAqc291cmNlRnJhbWVidWZmZXIp
CisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWx0ZXIpCiB7Ci0gICAgY29uc3Qg
RnJhbWVidWZmZXJHTCAqc291cmNlRnJhbWVidWZmZXJHTCA9IEdldEltcGxBczxGcmFtZWJ1ZmZl
ckdMPihzb3VyY2VGcmFtZWJ1ZmZlcik7CisgICAgY29uc3QgRnJhbWVidWZmZXIgKnNvdXJjZUZy
YW1lYnVmZmVyICAgICA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRSZWFkRnJhbWVidWZmZXIo
KTsKKyAgICBjb25zdCBGcmFtZWJ1ZmZlciAqZGVzdEZyYW1lYnVmZmVyICAgICAgID0gY29udGV4
dC0+Z2V0R0xTdGF0ZSgpLmdldERyYXdGcmFtZWJ1ZmZlcigpOworCisgICAgYm9vbCBuZWVkTWFu
dWFsQ29sb3JCbGl0ID0gZmFsc2U7CiAKKyAgICAvLyBUaGUgbWFudWFsIFNSR0IgYmxpdCBpcyBv
bmx5IG5lZWRlZCB0byBwZXJmb3JtIGNvcnJlY3QgbGluZWFyIGludGVycG9sYXRpb24uIFdlIGRv
bid0CisgICAgLy8gbmVlZCB0byBtYWtlIHN1cmUgdGhlcmUgaXMgU1JHQiBjb252ZXJzaW9uIGZv
ciBORUFSRVNUIGFzIHRoZSB2YWx1ZXMgd2lsbCBiZSBjb3BpZWQuCisgICAgaWYgKGZpbHRlciAh
PSBHTF9ORUFSRVNUKQorICAgIHsKKworICAgICAgICAvLyBQcmlvciB0byBPcGVuR0wgNC40IEJs
aXRGcmFtZWJ1ZmZlciAoc2VjdGlvbiAxOC4zLjEgb2YgR0wgNC4zIGNvcmUgcHJvZmlsZSkgcmVh
ZHM6CisgICAgICAgIC8vICAgICAgV2hlbiB2YWx1ZXMgYXJlIHRha2VuIGZyb20gdGhlIHJlYWQg
YnVmZmVyLCBubyBsaW5lYXJpemF0aW9uIGlzIHBlcmZvcm1lZCwgZXZlbgorICAgICAgICAvLyAg
ICAgIGlmIHRoZSBmb3JtYXQgb2YgdGhlIGJ1ZmZlciBpcyBTUkdCLgorICAgICAgICAvLyBTdGFy
dGluZyBmcm9tIE9wZW5HTCA0LjQgKHNlY3Rpb24gMTguMy4xKSBpdCByZWFkczoKKyAgICAgICAg
Ly8gICAgICBXaGVuIHZhbHVlcyBhcmUgdGFrZW4gZnJvbSB0aGUgcmVhZCBidWZmZXIsIGlmIEZS
QU1FQlVGRkVSX1NSR0IgaXMgZW5hYmxlZCBhbmQgdGhlCisgICAgICAgIC8vICAgICAgdmFsdWUg
b2YgRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElORyBmb3IgdGhlIGZyYW1lYnVm
ZmVyIGF0dGFjaG1lbnQKKyAgICAgICAgLy8gICAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSByZWFk
IGJ1ZmZlciBpcyBTUkdCLCB0aGUgcmVkLCBncmVlbiwgYW5kIGJsdWUgY29tcG9uZW50cyBhcmUK
KyAgICAgICAgLy8gICAgICBjb252ZXJ0ZWQgZnJvbSB0aGUgbm9uLWxpbmVhciBzUkdCIGNvbG9y
IHNwYWNlIGFjY29yZGluZyBbLi4uXS4KKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgRnJh
bWVidWZmZXJBdHRhY2htZW50ICpyZWFkQXR0YWNobWVudCA9IHNvdXJjZUZyYW1lYnVmZmVyLT5n
ZXRSZWFkQ29sb3JidWZmZXIoKTsKKyAgICAgICAgICAgIGJvb2wgc291cmNlU1JHQiA9CisgICAg
ICAgICAgICAgICAgcmVhZEF0dGFjaG1lbnQgIT0gbnVsbHB0ciAmJiByZWFkQXR0YWNobWVudC0+
Z2V0Q29sb3JFbmNvZGluZygpID09IEdMX1NSR0I7CisgICAgICAgICAgICBuZWVkTWFudWFsQ29s
b3JCbGl0ID0KKyAgICAgICAgICAgICAgICBuZWVkTWFudWFsQ29sb3JCbGl0IHx8IChzb3VyY2VT
UkdCICYmIG1GdW5jdGlvbnMtPmlzQXRNb3N0R0woZ2w6OlZlcnNpb24oNCwgMykpKTsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIFByaW9yIHRvIE9wZW5HTCA0LjIgQmxpdEZyYW1lYnVmZmVyIChz
ZWN0aW9uIDQuMy4yIG9mIEdMIDQuMSBjb3JlIHByb2ZpbGUpIHJlYWRzOgorICAgICAgICAvLyAg
ICAgIEJsaXQgb3BlcmF0aW9ucyBieXBhc3MgdGhlIGZyYWdtZW50IHBpcGVsaW5lLiBUaGUgb25s
eSBmcmFnbWVudCBvcGVyYXRpb25zIHdoaWNoCisgICAgICAgIC8vICAgICAgYWZmZWN0IGEgYmxp
dCBhcmUgdGhlIHBpeGVsIG93bmVyc2hpcCB0ZXN0IGFuZCBzY2lzc29yIHRlc3QuCisgICAgICAg
IC8vIFN0YXJ0aW5nIGZyb20gT3BlbkdMIDQuMiAoc2VjdGlvbiA0LjMuMikgaXQgcmVhZHM6Cisg
ICAgICAgIC8vICAgICAgV2hlbiB2YWx1ZXMgYXJlIHdyaXR0ZW4gdG8gdGhlIGRyYXcgYnVmZmVy
cywgYmxpdCBvcGVyYXRpb25zIGJ5cGFzcyB0aGUgZnJhZ21lbnQKKyAgICAgICAgLy8gICAgICBw
aXBlbGluZS4gVGhlIG9ubHkgZnJhZ21lbnQgb3BlcmF0aW9ucyB3aGljaCBhZmZlY3QgYSBibGl0
IGFyZSB0aGUgcGl4ZWwgb3duZXJzaGlwCisgICAgICAgIC8vICAgICAgdGVzdCwgIHRoZSBzY2lz
c29yIHRlc3QgYW5kIHNSR0IgY29udmVyc2lvbi4KKyAgICAgICAgaWYgKCFuZWVkTWFudWFsQ29s
b3JCbGl0KQorICAgICAgICB7CisgICAgICAgICAgICBib29sIGRlc3RTUkdCID0gZmFsc2U7Cisg
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRlc3RGcmFtZWJ1ZmZlci0+Z2V0RHJh
d2J1ZmZlclN0YXRlQ291bnQoKTsgKytpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqYXR0YWNobWVudCA9IGRlc3RGcmFtZWJ1ZmZl
ci0+Z2V0RHJhd0J1ZmZlcihpKTsKKyAgICAgICAgICAgICAgICBpZiAoYXR0YWNobWVudCAmJiBh
dHRhY2htZW50LT5nZXRDb2xvckVuY29kaW5nKCkgPT0gR0xfU1JHQikKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIGRlc3RTUkdCID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBuZWVkTWFudWFsQ29sb3JCbGl0ID0KKyAgICAgICAgICAgICAgICBuZWVkTWFudWFsQ29s
b3JCbGl0IHx8IChkZXN0U1JHQiAmJiBtRnVuY3Rpb25zLT5pc0F0TW9zdEdMKGdsOjpWZXJzaW9u
KDQsIDEpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBFbmFibGUgRlJBTUVCVUZGRVJf
U1JHQiBpZiBuZWVkZWQKKyAgICBzeW5jRHJhd1N0YXRlKCk7CisKKyAgICBHTGVudW0gYmxpdE1h
c2sgPSBtYXNrOworICAgIGlmIChuZWVkTWFudWFsQ29sb3JCbGl0ICYmIChtYXNrICYgR0xfQ09M
T1JfQlVGRkVSX0JJVCkpCisgICAgeworICAgICAgICBBTkdMRV9UUlkobUJsaXR0ZXItPmJsaXRD
b2xvckJ1ZmZlcldpdGhTaGFkZXIoc291cmNlRnJhbWVidWZmZXIsIGRlc3RGcmFtZWJ1ZmZlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNv
dXJjZUFyZWEsIGRlc3RBcmVhLCBmaWx0ZXIpKTsKKyAgICAgICAgYmxpdE1hc2sgJj0gfkdMX0NP
TE9SX0JVRkZFUl9CSVQ7CisgICAgfQorCisgICAgaWYgKGJsaXRNYXNrID09IDApCisgICAgewor
ICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKKyAgICB9CisKKyAgICBjb25zdCBGcmFtZWJ1
ZmZlckdMICpzb3VyY2VGcmFtZWJ1ZmZlckdMID0gR2V0SW1wbEFzPEZyYW1lYnVmZmVyR0w+KHNv
dXJjZUZyYW1lYnVmZmVyKTsKICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZmZXIoR0xf
UkVBRF9GUkFNRUJVRkZFUiwgc291cmNlRnJhbWVidWZmZXJHTC0+Z2V0RnJhbWVidWZmZXJJRCgp
KTsKICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZF
UiwgbUZyYW1lYnVmZmVySUQpOwogCiAgICAgbUZ1bmN0aW9ucy0+YmxpdEZyYW1lYnVmZmVyKHNv
dXJjZUFyZWEueCwgc291cmNlQXJlYS55LCBzb3VyY2VBcmVhLngxKCksIHNvdXJjZUFyZWEueTEo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdEFyZWEueCwgZGVzdEFyZWEu
eSwgZGVzdEFyZWEueDEoKSwgZGVzdEFyZWEueTEoKSwgbWFzaywgZmlsdGVyKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGVzdEFyZWEueCwgZGVzdEFyZWEueSwgZGVzdEFyZWEu
eDEoKSwgZGVzdEFyZWEueTEoKSwgYmxpdE1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZpbHRlcik7CiAKLSAgICByZXR1cm4gRXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJl
dHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBib29sIEZyYW1lYnVmZmVyR0w6OmNoZWNrU3RhdHVz
KCkgY29uc3QKQEAgLTI4NSwyMSArMzg1LDIxIEBAIHZvaWQgRnJhbWVidWZmZXJHTDo6c3luY1N0
YXRlKGNvbnN0IEZyYW0KICAgICAgICAgewogICAgICAgICAgICAgY2FzZSBGcmFtZWJ1ZmZlcjo6
RElSVFlfQklUX0RFUFRIX0FUVEFDSE1FTlQ6CiAgICAgICAgICAgICAgICAgQmluZEZyYW1lYnVm
ZmVyQXR0YWNobWVudChtRnVuY3Rpb25zLCBHTF9ERVBUSF9BVFRBQ0hNRU5ULAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbURhdGEuZ2V0RGVwdGhBdHRhY2htZW50
KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVN0YXRlLmdl
dERlcHRoQXR0YWNobWVudCgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgRnJhbWVidWZmZXI6OkRJUlRZX0JJVF9TVEVOQ0lMX0FUVEFDSE1FTlQ6CiAgICAgICAg
ICAgICAgICAgQmluZEZyYW1lYnVmZmVyQXR0YWNobWVudChtRnVuY3Rpb25zLCBHTF9TVEVOQ0lM
X0FUVEFDSE1FTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
RGF0YS5nZXRTdGVuY2lsQXR0YWNobWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1TdGF0ZS5nZXRTdGVuY2lsQXR0YWNobWVudCgpKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRnJhbWVidWZmZXI6OkRJUlRZX0JJVF9E
UkFXX0JVRkZFUlM6CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29uc3QgYXV0byAm
ZHJhd0J1ZmZlcnMgPSBtRGF0YS5nZXREcmF3QnVmZmVyU3RhdGVzKCk7CisgICAgICAgICAgICAg
ICAgY29uc3QgYXV0byAmZHJhd0J1ZmZlcnMgPSBtU3RhdGUuZ2V0RHJhd0J1ZmZlclN0YXRlcygp
OwogICAgICAgICAgICAgICAgIG1GdW5jdGlvbnMtPmRyYXdCdWZmZXJzKHN0YXRpY19jYXN0PEdM
c2l6ZWk+KGRyYXdCdWZmZXJzLnNpemUoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZHJhd0J1ZmZlcnMuZGF0YSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgRnJhbWVidWZmZXI6OkRJUlRZX0JJVF9S
RUFEX0JVRkZFUjoKLSAgICAgICAgICAgICAgICBtRnVuY3Rpb25zLT5yZWFkQnVmZmVyKG1EYXRh
LmdldFJlYWRCdWZmZXJTdGF0ZSgpKTsKKyAgICAgICAgICAgICAgICBtRnVuY3Rpb25zLT5yZWFk
QnVmZmVyKG1TdGF0ZS5nZXRSZWFkQnVmZmVyU3RhdGUoKSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgewpAQCAtMzA5LDcgKzQwOSw3
IEBAIHZvaWQgRnJhbWVidWZmZXJHTDo6c3luY1N0YXRlKGNvbnN0IEZyYW0KICAgICAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8c2l6ZV90PihkaXJ0eUJpdCAtIEZyYW1lYnVmZmVyOjpESVJU
WV9CSVRfQ09MT1JfQVRUQUNITUVOVF8wKTsKICAgICAgICAgICAgICAgICBCaW5kRnJhbWVidWZm
ZXJBdHRhY2htZW50KG1GdW5jdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxHTGVudW0+KEdMX0NPTE9SX0FUVEFDSE1FTlQwICsgaW5k
ZXgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbURhdGEuZ2V0
Q29sb3JBdHRhY2htZW50KGluZGV4KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtU3RhdGUuZ2V0Q29sb3JBdHRhY2htZW50KGluZGV4KSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTM0MSwxNyArNDQxLDE3
IEBAIHZvaWQgRnJhbWVidWZmZXJHTDo6c3luY0NsZWFyU3RhdGUoR0xiaXQKICAgICAgICAgaWYg
KG1Xb3JrYXJvdW5kcy5kb2VzU1JHQkNsZWFyc09uTGluZWFyRnJhbWVidWZmZXJBdHRhY2htZW50
cyAmJgogICAgICAgICAgICAgKG1hc2sgJiBHTF9DT0xPUl9CVUZGRVJfQklUKSAhPSAwICYmICFt
SXNEZWZhdWx0KQogICAgICAgICB7Ci0gICAgICAgICAgICBib29sIGhhc1NSQkF0dGFjaG1lbnQg
PSBmYWxzZTsKLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byAmYXR0YWNobWVudCA6IG1EYXRh
LmdldENvbG9yQXR0YWNobWVudHMoKSkKKyAgICAgICAgICAgIGJvb2wgaGFzU1JHQkF0dGFjaG1l
bnQgPSBmYWxzZTsKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byAmYXR0YWNobWVudCA6IG1T
dGF0ZS5nZXRDb2xvckF0dGFjaG1lbnRzKCkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgaWYgKGF0dGFjaG1lbnQuaXNBdHRhY2hlZCgpICYmIGF0dGFjaG1lbnQuZ2V0Q29sb3JFbmNv
ZGluZygpID09IEdMX1NSR0IpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICBoYXNTUkJBdHRhY2htZW50ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaGFzU1JHQkF0
dGFjaG1lbnQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIG1TdGF0ZU1hbmFnZXItPnNldEZy
YW1lYnVmZmVyU1JHQkVuYWJsZWQoaGFzU1JCQXR0YWNobWVudCk7CisgICAgICAgICAgICBtU3Rh
dGVNYW5hZ2VyLT5zZXRGcmFtZWJ1ZmZlclNSR0JFbmFibGVkKGhhc1NSR0JBdHRhY2htZW50KTsK
ICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKQEAgLTM2OSw4ICs0NjksOCBAQCB2
b2lkIEZyYW1lYnVmZmVyR0w6OnN5bmNDbGVhckJ1ZmZlclN0YXRlCiAgICAgICAgIHsKICAgICAg
ICAgICAgIC8vIElmIGRvaW5nIGEgY2xlYXIgb24gYSBjb2xvciBidWZmZXIsIHNldCBTUkdCIGJs
ZW5kIGVuYWJsZWQgb25seSBpZiB0aGUgY29sb3IgYnVmZmVyCiAgICAgICAgICAgICAvLyBpcyBh
biBTUkdCIGZvcm1hdC4KLSAgICAgICAgICAgIGNvbnN0IGF1dG8gJmRyYXdidWZmZXJTdGF0ZSAg
PSBtRGF0YS5nZXREcmF3QnVmZmVyU3RhdGVzKCk7Ci0gICAgICAgICAgICBjb25zdCBhdXRvICZj
b2xvckF0dGFjaG1lbnRzID0gbURhdGEuZ2V0Q29sb3JBdHRhY2htZW50cygpOworICAgICAgICAg
ICAgY29uc3QgYXV0byAmZHJhd2J1ZmZlclN0YXRlICA9IG1TdGF0ZS5nZXREcmF3QnVmZmVyU3Rh
dGVzKCk7CisgICAgICAgICAgICBjb25zdCBhdXRvICZjb2xvckF0dGFjaG1lbnRzID0gbVN0YXRl
LmdldENvbG9yQXR0YWNobWVudHMoKTsKIAogICAgICAgICAgICAgY29uc3QgRnJhbWVidWZmZXJB
dHRhY2htZW50ICphdHRhY2htZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIGlmIChkcmF3YnVm
ZmVyU3RhdGVbZHJhd0J1ZmZlcl0gPj0gR0xfQ09MT1JfQVRUQUNITUVOVDAgJiYKQEAgLTM5Miw0
ICs0OTIsNzEgQEAgdm9pZCBGcmFtZWJ1ZmZlckdMOjpzeW5jQ2xlYXJCdWZmZXJTdGF0ZQogICAg
ICAgICB9CiAgICAgfQogfQorZ2w6OkVycm9yIEZyYW1lYnVmZmVyR0w6OnJlYWRQaXhlbHNSb3dC
eVJvd1dvcmthcm91bmQoY29uc3QgZ2w6OlJlY3RhbmdsZSAmYXJlYSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpQaXhlbFBhY2tTdGF0ZSAmcGFjaywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqcGl4ZWxzKSBjb25z
dAoreworICAgIGludHB0cl90IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHBp
eGVscyk7CisKKyAgICBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJmdsRm9ybWF0ID0KKyAgICAg
ICAgZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhnbDo6R2V0U2l6ZWRJbnRlcm5hbEZvcm1hdChm
b3JtYXQsIHR5cGUpKTsKKyAgICBHTHVpbnQgcm93Qnl0ZXMgPSAwOworICAgIEFOR0xFX1RSWV9S
RVNVTFQoZ2xGb3JtYXQuY29tcHV0ZVJvd1BpdGNoKHR5cGUsIGFyZWEud2lkdGgsIHBhY2suYWxp
Z25tZW50LCBwYWNrLnJvd0xlbmd0aCksCisgICAgICAgICAgICAgICAgICAgICByb3dCeXRlcyk7
CisgICAgR0x1aW50IHNraXBCeXRlcyA9IDA7CisgICAgQU5HTEVfVFJZX1JFU1VMVChnbEZvcm1h
dC5jb21wdXRlU2tpcEJ5dGVzKHJvd0J5dGVzLCAwLCBwYWNrLCBmYWxzZSksIHNraXBCeXRlcyk7
CisKKyAgICBnbDo6UGl4ZWxQYWNrU3RhdGUgZGlyZWN0UGFjazsKKyAgICBkaXJlY3RQYWNrLnBp
eGVsQnVmZmVyID0gcGFjay5waXhlbEJ1ZmZlcjsKKyAgICBkaXJlY3RQYWNrLmFsaWdubWVudCAg
ID0gMTsKKyAgICBtU3RhdGVNYW5hZ2VyLT5zZXRQaXhlbFBhY2tTdGF0ZShkaXJlY3RQYWNrKTsK
KyAgICBkaXJlY3RQYWNrLnBpeGVsQnVmZmVyLnNldChudWxscHRyKTsKKworICAgIG9mZnNldCAr
PSBza2lwQnl0ZXM7CisgICAgZm9yIChHTGludCByb3cgPSAwOyByb3cgPCBhcmVhLmhlaWdodDsg
Kytyb3cpCisgICAgeworICAgICAgICBtRnVuY3Rpb25zLT5yZWFkUGl4ZWxzKGFyZWEueCwgcm93
ICsgYXJlYS55LCBhcmVhLndpZHRoLCAxLCBmb3JtYXQsIHR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQgKj4ob2Zmc2V0KSk7CisgICAg
ICAgIG9mZnNldCArPSByb3cgKiByb3dCeXRlczsKKyAgICB9CisKKyAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKK30KKworZ2w6OkVycm9yIEZyYW1lYnVmZmVyR0w6OnJlYWRQaXhlbHNQYWRkaW5n
V29ya2Fyb3VuZChjb25zdCBnbDo6UmVjdGFuZ2xlICZhcmVhLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OlBpeGVsUGFja1N0YXRlICZwYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHZvaWQgKnBpeGVscykgY29uc3QKK3sKKyAg
ICBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJmdsRm9ybWF0ID0KKyAgICAgICAgZ2w6OkdldElu
dGVybmFsRm9ybWF0SW5mbyhnbDo6R2V0U2l6ZWRJbnRlcm5hbEZvcm1hdChmb3JtYXQsIHR5cGUp
KTsKKyAgICBHTHVpbnQgcm93Qnl0ZXMgPSAwOworICAgIEFOR0xFX1RSWV9SRVNVTFQoZ2xGb3Jt
YXQuY29tcHV0ZVJvd1BpdGNoKHR5cGUsIGFyZWEud2lkdGgsIHBhY2suYWxpZ25tZW50LCBwYWNr
LnJvd0xlbmd0aCksCisgICAgICAgICAgICAgICAgICAgICByb3dCeXRlcyk7CisgICAgR0x1aW50
IHNraXBCeXRlcyA9IDA7CisgICAgQU5HTEVfVFJZX1JFU1VMVChnbEZvcm1hdC5jb21wdXRlU2tp
cEJ5dGVzKHJvd0J5dGVzLCAwLCBwYWNrLCBmYWxzZSksIHNraXBCeXRlcyk7CisKKyAgICAvLyBH
ZXQgYWxsIGJ5IHRoZSBsYXN0IHJvdworICAgIGlmIChhcmVhLmhlaWdodCA+IDEpCisgICAgewor
ICAgICAgICBtRnVuY3Rpb25zLT5yZWFkUGl4ZWxzKGFyZWEueCwgYXJlYS55LCBhcmVhLndpZHRo
LCBhcmVhLmhlaWdodCAtIDEsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKKyAgICB9CisKKyAgICAv
LyBHZXQgdGhlIGxhc3Qgcm93IG1hbnVhbGx5CisgICAgZ2w6OlBpeGVsUGFja1N0YXRlIGRpcmVj
dFBhY2s7CisgICAgZGlyZWN0UGFjay5waXhlbEJ1ZmZlciA9IHBhY2sucGl4ZWxCdWZmZXI7Cisg
ICAgZGlyZWN0UGFjay5hbGlnbm1lbnQgICA9IDE7CisgICAgbVN0YXRlTWFuYWdlci0+c2V0UGl4
ZWxQYWNrU3RhdGUoZGlyZWN0UGFjayk7CisgICAgZGlyZWN0UGFjay5waXhlbEJ1ZmZlci5zZXQo
bnVsbHB0cik7CisKKyAgICBpbnRwdHJfdCBsYXN0Um93T2Zmc2V0ID0KKyAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDxpbnRwdHJfdD4ocGl4ZWxzKSArIHNraXBCeXRlcyArIChhcmVhLmhlaWdodCAt
IDEpICogcm93Qnl0ZXM7CisgICAgbUZ1bmN0aW9ucy0+cmVhZFBpeGVscyhhcmVhLngsIGFyZWEu
eSArIGFyZWEuaGVpZ2h0IC0gMSwgYXJlYS53aWR0aCwgMSwgZm9ybWF0LCB0eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQgKj4obGFzdFJvd09m
ZnNldCkpOworCisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CiB9ICAvLyBuYW1lc3BhY2Ug
cngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9GcmFtZWJ1ZmZlckdMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0ZyYW1lYnVmZmVyR0wuaAkocmV2aXNpb24gMjA3ODA0
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Zy
YW1lYnVmZmVyR0wuaAkod29ya2luZyBjb3B5KQpAQCAtMTQsNiArMTQsNyBAQAogbmFtZXNwYWNl
IHJ4CiB7CiAKK2NsYXNzIEJsaXRHTDsKIGNsYXNzIEZ1bmN0aW9uc0dMOwogY2xhc3MgU3RhdGVN
YW5hZ2VyR0w7CiBzdHJ1Y3QgV29ya2Fyb3VuZHNHTDsKQEAgLTIxLDE4ICsyMiwyMCBAQCBzdHJ1
Y3QgV29ya2Fyb3VuZHNHTDsKIGNsYXNzIEZyYW1lYnVmZmVyR0wgOiBwdWJsaWMgRnJhbWVidWZm
ZXJJbXBsCiB7CiAgIHB1YmxpYzoKLSAgICBGcmFtZWJ1ZmZlckdMKGNvbnN0IGdsOjpGcmFtZWJ1
ZmZlcjo6RGF0YSAmZGF0YSwKKyAgICBGcmFtZWJ1ZmZlckdMKGNvbnN0IGdsOjpGcmFtZWJ1ZmZl
clN0YXRlICZkYXRhLAogICAgICAgICAgICAgICAgICAgY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0
aW9ucywKICAgICAgICAgICAgICAgICAgIFN0YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIsCiAg
ICAgICAgICAgICAgICAgICBjb25zdCBXb3JrYXJvdW5kc0dMICZ3b3JrYXJvdW5kcywKKyAgICAg
ICAgICAgICAgICAgIEJsaXRHTCAqYmxpdHRlciwKICAgICAgICAgICAgICAgICAgIGJvb2wgaXNE
ZWZhdWx0KTsKICAgICAvLyBDb25zdHJ1Y3RvciBjYWxsZWQgd2hlbiB3ZSBuZWVkIHRvIGNyZWF0
ZSBhIEZyYW1lYnVmZmVyR0wgZnJvbSBhbgogICAgIC8vIGV4aXN0aW5nIGZyYW1lYnVmZmVyIG5h
bWUsIGZvciBleGFtcGxlIGZvciB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlcgogICAgIC8vIG9uIHRo
ZSBNYWMgRUdMIENHTCBiYWNrZW5kLgogICAgIEZyYW1lYnVmZmVyR0woR0x1aW50IGlkLAotICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEYXRhICZkYXRhLAorICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJmRhdGEsCiAgICAgICAgICAg
ICAgICAgICBjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLAogICAgICAgICAgICAgICAgICAg
Y29uc3QgV29ya2Fyb3VuZHNHTCAmd29ya2Fyb3VuZHMsCisgICAgICAgICAgICAgICAgICBCbGl0
R0wgKmJsaXR0ZXIsCiAgICAgICAgICAgICAgICAgICBTdGF0ZU1hbmFnZXJHTCAqc3RhdGVNYW5h
Z2VyKTsKICAgICB+RnJhbWVidWZmZXJHTCgpIG92ZXJyaWRlOwogCkBAIC00MCwyMCArNDMsMjAg
QEAgY2xhc3MgRnJhbWVidWZmZXJHTCA6IHB1YmxpYyBGcmFtZWJ1ZmZlcgogICAgIGdsOjpFcnJv
ciBpbnZhbGlkYXRlKHNpemVfdCBjb3VudCwgY29uc3QgR0xlbnVtICphdHRhY2htZW50cykgb3Zl
cnJpZGU7CiAgICAgZ2w6OkVycm9yIGludmFsaWRhdGVTdWIoc2l6ZV90IGNvdW50LCBjb25zdCBH
TGVudW0gKmF0dGFjaG1lbnRzLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZhcmVhKSBvdmVycmlkZTsK
IAotICAgIGdsOjpFcnJvciBjbGVhcihjb25zdCBnbDo6RGF0YSAmZGF0YSwgR0xiaXRmaWVsZCBt
YXNrKSBvdmVycmlkZTsKLSAgICBnbDo6RXJyb3IgY2xlYXJCdWZmZXJmdihjb25zdCBnbDo6RGF0
YSAmZGF0YSwKKyAgICBnbDo6RXJyb3IgY2xlYXIoQ29udGV4dEltcGwgKmNvbnRleHQsIEdMYml0
ZmllbGQgbWFzaykgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGNsZWFyQnVmZmVyZnYoQ29udGV4
dEltcGwgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZl
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlcykgb3ZlcnJpZGU7Ci0g
ICAgZ2w6OkVycm9yIGNsZWFyQnVmZmVydWl2KGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAgIGds
OjpFcnJvciBjbGVhckJ1ZmZlcnVpdihDb250ZXh0SW1wbCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgZHJhd2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0x1aW50ICp2YWx1ZXMpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBjbGVhckJ1ZmZlcml2
KGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAgIGdsOjpFcnJvciBjbGVhckJ1ZmZlcml2KENvbnRl
eHRJbXBsICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBidWZm
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHJhd2J1ZmZlciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWVzKSBvdmVycmlkZTsKLSAg
ICBnbDo6RXJyb3IgY2xlYXJCdWZmZXJmaShjb25zdCBnbDo6RGF0YSAmZGF0YSwKKyAgICBnbDo6
RXJyb3IgY2xlYXJCdWZmZXJmaShDb250ZXh0SW1wbCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGRyYXdidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBk
ZXB0aCwKQEAgLTYxLDEwICs2NCwxNyBAQCBjbGFzcyBGcmFtZWJ1ZmZlckdMIDogcHVibGljIEZy
YW1lYnVmZmVyCiAKICAgICBHTGVudW0gZ2V0SW1wbGVtZW50YXRpb25Db2xvclJlYWRGb3JtYXQo
KSBjb25zdCBvdmVycmlkZTsKICAgICBHTGVudW0gZ2V0SW1wbGVtZW50YXRpb25Db2xvclJlYWRU
eXBlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIHJlYWRQaXhlbHMoY29uc3QgZ2w6
OlN0YXRlICZzdGF0ZSwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmYXJlYSwgR0xlbnVtIGZvcm1hdCwg
R0xlbnVtIHR5cGUsIEdMdm9pZCAqcGl4ZWxzKSBjb25zdCBvdmVycmlkZTsKLQotICAgIGdsOjpF
cnJvciBibGl0KGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNv
dXJjZUFyZWEsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRlc3RBcmVhLAotICAgICAgICAgICAgICAg
ICAgIEdMYml0ZmllbGQgbWFzaywgR0xlbnVtIGZpbHRlciwgY29uc3QgZ2w6OkZyYW1lYnVmZmVy
ICpzb3VyY2VGcmFtZWJ1ZmZlcikgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHJlYWRQaXhlbHMo
Q29udGV4dEltcGwgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OlJlY3RhbmdsZSAmYXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0
LAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdm9pZCAqcGl4ZWxzKSBjb25zdCBvdmVycmlkZTsKKworICAgIGdsOjpFcnJv
ciBibGl0KENvbnRleHRJbXBsICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJl
Y3RhbmdsZSAmZGVzdEFyZWEsCisgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBtYXNrLAor
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWx0ZXIpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBj
aGVja1N0YXR1cygpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC03OCw5ICs4OCwyMiBAQCBjbGFzcyBG
cmFtZWJ1ZmZlckdMIDogcHVibGljIEZyYW1lYnVmZmVyCiAgICAgdm9pZCBzeW5jQ2xlYXJTdGF0
ZShHTGJpdGZpZWxkIG1hc2spOwogICAgIHZvaWQgc3luY0NsZWFyQnVmZmVyU3RhdGUoR0xlbnVt
IGJ1ZmZlciwgR0xpbnQgZHJhd0J1ZmZlcik7CiAKKyAgICBnbDo6RXJyb3IgcmVhZFBpeGVsc1Jv
d0J5Um93V29ya2Fyb3VuZChjb25zdCBnbDo6UmVjdGFuZ2xlICZhcmVhLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsUGFja1N0YXRl
ICZwYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdm9p
ZCAqcGl4ZWxzKSBjb25zdDsKKworICAgIGdsOjpFcnJvciByZWFkUGl4ZWxzUGFkZGluZ1dvcmth
cm91bmQoY29uc3QgZ2w6OlJlY3RhbmdsZSAmYXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFBhY2tTdGF0ZSAmcGFjaywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqcGl4ZWxzKSBjb25z
dDsKKwogICAgIGNvbnN0IEZ1bmN0aW9uc0dMICptRnVuY3Rpb25zOwogICAgIFN0YXRlTWFuYWdl
ckdMICptU3RhdGVNYW5hZ2VyOwogICAgIGNvbnN0IFdvcmthcm91bmRzR0wgJm1Xb3JrYXJvdW5k
czsKKyAgICBCbGl0R0wgKm1CbGl0dGVyOwogCiAgICAgR0x1aW50IG1GcmFtZWJ1ZmZlcklEOwog
ICAgIGJvb2wgbUlzRGVmYXVsdDsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9GdW5jdGlvbnNHTC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Z1bmN0aW9uc0dMLmNw
cAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL0Z1bmN0aW9uc0dMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE4LDYg
KzQxOCwyOSBAQCBGdW5jdGlvbnNHTDo6RnVuY3Rpb25zR0woKQogICAgICAgdGV4SW1hZ2UzRE11
bHRpc2FtcGxlKG51bGxwdHIpLAogICAgICAgd2FpdFN5bmMobnVsbHB0ciksCiAKKyAgICAgIG1h
dHJpeExvYWRFWFQobnVsbHB0ciksCisgICAgICBnZW5QYXRoc05WKG51bGxwdHIpLAorICAgICAg
ZGVsUGF0aHNOVihudWxscHRyKSwKKyAgICAgIHBhdGhDb21tYW5kc05WKG51bGxwdHIpLAorICAg
ICAgc2V0UGF0aFBhcmFtZXRlcmZOVihudWxscHRyKSwKKyAgICAgIHNldFBhdGhQYXJhbWV0ZXJp
TlYobnVsbHB0ciksCisgICAgICBnZXRQYXRoUGFyYW1ldGVyZk5WKG51bGxwdHIpLAorICAgICAg
Z2V0UGF0aFBhcmFtZXRlcmlOVihudWxscHRyKSwKKyAgICAgIHBhdGhTdGVuY2lsRnVuY05WKG51
bGxwdHIpLAorICAgICAgc3RlbmNpbEZpbGxQYXRoTlYobnVsbHB0ciksCisgICAgICBzdGVuY2ls
U3Ryb2tlUGF0aE5WKG51bGxwdHIpLAorICAgICAgY292ZXJGaWxsUGF0aE5WKG51bGxwdHIpLAor
ICAgICAgY292ZXJTdHJva2VQYXRoTlYobnVsbHB0ciksCisgICAgICBzdGVuY2lsVGhlbkNvdmVy
RmlsbFBhdGhOVihudWxscHRyKSwKKyAgICAgIHN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoTlYo
bnVsbHB0ciksCisgICAgICBjb3ZlckZpbGxQYXRoSW5zdGFuY2VkTlYobnVsbHB0ciksCisgICAg
ICBjb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWROVihudWxscHRyKSwKKyAgICAgIHN0ZW5jaWxGaWxs
UGF0aEluc3RhbmNlZE5WKG51bGxwdHIpLAorICAgICAgc3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5j
ZWROVihudWxscHRyKSwKKyAgICAgIHN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZE5W
KG51bGxwdHIpLAorICAgICAgc3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWROVihu
dWxscHRyKSwKKyAgICAgIHByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbk5WKG51bGxwdHIpLAor
CiAgICAgICBiaW5kRnJhZ0RhdGFMb2NhdGlvbkluZGV4ZWQobnVsbHB0ciksCiAgICAgICBiaW5k
U2FtcGxlcihudWxscHRyKSwKICAgICAgIGRlbGV0ZVNhbXBsZXJzKG51bGxwdHIpLApAQCAtNjQw
LDYgKzY2Myw3IEBAIEZ1bmN0aW9uc0dMOjpGdW5jdGlvbnNHTCgpCiAgICAgICB2ZXJ0ZXhBdHRy
aWJJRm9ybWF0KG51bGxwdHIpLAogICAgICAgdmVydGV4QXR0cmliTEZvcm1hdChudWxscHRyKSwK
ICAgICAgIHZlcnRleEJpbmRpbmdEaXZpc29yKG51bGxwdHIpLAorICAgICAgY292ZXJhZ2VNb2R1
bGF0aW9uTlYobnVsbHB0ciksCiAKICAgICAgIGJpbmRCdWZmZXJzQmFzZShudWxscHRyKSwKICAg
ICAgIGJpbmRCdWZmZXJzUmFuZ2UobnVsbHB0ciksCkBAIC04MjMsNiArODQ3LDM5IEBAIHZvaWQg
RnVuY3Rpb25zR0w6OmluaXRpYWxpemVQcm9jc0Rlc2t0b3AKICAgICAvLyBFdmVuIHRob3VnaCBl
eHRlbnNpb25zIGFyZSB3cml0dGVuIGFnYWluc3Qgc3BlY2lmaWMgdmVyc2lvbnMgb2YgR0wsIG1h
bnkgZHJpdmVycyBleHBvc2UgdGhlIGV4dGVuc2lvbnMKICAgICAvLyBpbiBldmVuIG9sZGVyIHZl
cnNpb25zLiAgQWx3YXlzIHRyeSBsb2FkaW5nIHRoZSBleHRlbnNpb25zIHJlZ2FyZGxlc3Mgb2Yg
R0wgdmVyc2lvbi4KIAorICAgIC8vIEdMX0FSQl9wcm9ncmFtX2ludGVyZmFjZV9xdWVyeSAobG9h
ZGluZyBvbmx5IGZ1bmN0aW9ucyByZWxldmFudCB0byBHTF9OVl9wYXRoX3JlbmRlcmluZyBoZXJl
KQorICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfQVJCX3By
b2dyYW1faW50ZXJmYWNlX3F1ZXJ5IiwgbG9hZFByb2NBZGRyZXNzKCJnbEdldFByb2dyYW1JbnRl
cmZhY2VpdiIpLCAmZ2V0UHJvZ3JhbUludGVyZmFjZWl2KTsKKyAgICBBc3NpZ25HTEV4dGVuc2lv
bkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0FSQl9wcm9ncmFtX2ludGVyZmFjZV9xdWVyeSIs
IGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRQcm9ncmFtUmVzb3VyY2VOYW1lIiksICZnZXRQcm9ncmFt
UmVzb3VyY2VOYW1lKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9u
cywgIkdMX0FSQl9wcm9ncmFtX2ludGVyZmFjZV9xdWVyeSIsIGxvYWRQcm9jQWRkcmVzcygiZ2xH
ZXRQcm9ncmFtUmVzb3VyY2VpdiIpLCAmZ2V0UHJvZ3JhbVJlc291cmNlaXYpOworCisgICAgLy8g
R0xfTlZfcGF0aF9yZW5kZXJpbmcKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0
ZW5zaW9ucywgIkdMX05WX3BhdGhfcmVuZGVyaW5nIiwgbG9hZFByb2NBZGRyZXNzKCJnbE1hdHJp
eExvYWRmRVhUIiksICZtYXRyaXhMb2FkRVhUKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5
UG9pbnQoZXh0ZW5zaW9ucywgIkdMX05WX3BhdGhfcmVuZGVyaW5nIiwgbG9hZFByb2NBZGRyZXNz
KCJnbEdlblBhdGhzTlYiKSwgJmdlblBhdGhzTlYpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50
cnlQb2ludChleHRlbnNpb25zLCAiR0xfTlZfcGF0aF9yZW5kZXJpbmciLCBsb2FkUHJvY0FkZHJl
c3MoImdsRGVsZXRlUGF0aHNOViIpLCAmZGVsUGF0aHNOVik7CisgICAgQXNzaWduR0xFeHRlbnNp
b25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9OVl9wYXRoX3JlbmRlcmluZyIsIGxvYWRQcm9j
QWRkcmVzcygiZ2xQYXRoQ29tbWFuZHNOViIpLCAmcGF0aENvbW1hbmRzTlYpOworICAgIEFzc2ln
bkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfTlZfcGF0aF9yZW5kZXJpbmci
LCBsb2FkUHJvY0FkZHJlc3MoImdsSXNQYXRoTlYiKSwgJmlzUGF0aE5WKTsKKyAgICBBc3NpZ25H
TEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX05WX3BhdGhfcmVuZGVyaW5nIiwg
bG9hZFByb2NBZGRyZXNzKCJnbFBhdGhQYXJhbWV0ZXJmTlYiKSwgJnNldFBhdGhQYXJhbWV0ZXJm
TlYpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfTlZf
cGF0aF9yZW5kZXJpbmciLCBsb2FkUHJvY0FkZHJlc3MoImdsUGF0aFBhcmFtZXRlcmlOViIpLCAm
c2V0UGF0aFBhcmFtZXRlcmlOVik7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4
dGVuc2lvbnMsICJHTF9OVl9wYXRoX3JlbmRlcmluZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRQ
YXRoUGFyYW1ldGVyZnZOViIpLCAmZ2V0UGF0aFBhcmFtZXRlcmZOVik7CisgICAgQXNzaWduR0xF
eHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9OVl9wYXRoX3JlbmRlcmluZyIsIGxv
YWRQcm9jQWRkcmVzcygiZ2xHZXRQYXRoUGFyYW1ldGVyaXZOViIpLCAmZ2V0UGF0aFBhcmFtZXRl
cmlOVik7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9O
Vl9wYXRoX3JlbmRlcmluZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xQYXRoU3RlbmNpbEZ1bmNOViIp
LCAmcGF0aFN0ZW5jaWxGdW5jTlYpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChl
eHRlbnNpb25zLCAiR0xfTlZfcGF0aF9yZW5kZXJpbmciLCBsb2FkUHJvY0FkZHJlc3MoImdsU3Rl
bmNpbEZpbGxQYXRoTlYiKSwgJnN0ZW5jaWxGaWxsUGF0aE5WKTsKKyAgICBBc3NpZ25HTEV4dGVu
c2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX05WX3BhdGhfcmVuZGVyaW5nIiwgbG9hZFBy
b2NBZGRyZXNzKCJnbFN0ZW5jaWxTdHJva2VQYXRoTlYiKSwgJnN0ZW5jaWxTdHJva2VQYXRoTlYp
OworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfTlZfcGF0
aF9yZW5kZXJpbmciLCBsb2FkUHJvY0FkZHJlc3MoImdsQ292ZXJGaWxsUGF0aE5WIiksICZjb3Zl
ckZpbGxQYXRoTlYpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25z
LCAiR0xfTlZfcGF0aF9yZW5kZXJpbmciLCBsb2FkUHJvY0FkZHJlc3MoImdsQ292ZXJTdHJva2VQ
YXRoTlYiKSwgJmNvdmVyU3Ryb2tlUGF0aE5WKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5
UG9pbnQoZXh0ZW5zaW9ucywgIkdMX05WX3BhdGhfcmVuZGVyaW5nIiwgbG9hZFByb2NBZGRyZXNz
KCJnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aE5WIiksICZzdGVuY2lsVGhlbkNvdmVyRmlsbFBh
dGhOVik7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9O
Vl9wYXRoX3JlbmRlcmluZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xTdGVuY2lsVGhlbkNvdmVyU3Ry
b2tlUGF0aE5WIiksICZzdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aE5WKTsKKyAgICBBc3NpZ25H
TEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX05WX3BhdGhfcmVuZGVyaW5nIiwg
bG9hZFByb2NBZGRyZXNzKCJnbENvdmVyRmlsbFBhdGhJbnN0YW5jZWROViIpLCAmY292ZXJGaWxs
UGF0aEluc3RhbmNlZE5WKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5z
aW9ucywgIkdMX05WX3BhdGhfcmVuZGVyaW5nIiwgbG9hZFByb2NBZGRyZXNzKCJnbENvdmVyU3Ry
b2tlUGF0aEluc3RhbmNlZE5WIiksICZjb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWROVik7CisgICAg
QXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9OVl9wYXRoX3JlbmRl
cmluZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWROViIpLCAm
c3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkTlYpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQ
b2ludChleHRlbnNpb25zLCAiR0xfTlZfcGF0aF9yZW5kZXJpbmciLCBsb2FkUHJvY0FkZHJlc3Mo
ImdsU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWROViIpLCAmc3RlbmNpbFN0cm9rZVBhdGhJbnN0
YW5jZWROVik7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJH
TF9OVl9wYXRoX3JlbmRlcmluZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xTdGVuY2lsVGhlbkNvdmVy
RmlsbFBhdGhJbnN0YW5jZWROViIpLCAmc3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2Vk
TlYpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfTlZf
cGF0aF9yZW5kZXJpbmciLCBsb2FkUHJvY0FkZHJlc3MoImdsU3RlbmNpbFRoZW5Db3ZlclN0cm9r
ZVBhdGhJbnN0YW5jZWROViIpLCAmc3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRO
Vik7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9OVl9w
YXRoX3JlbmRlcmluZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5w
dXRHZW5OViIpLCAmcHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuTlYpOworCisgICAgLy8gR0xf
TlZfZnJhbWVidWZmZXJfbWl4ZWRfc2FtcGxlcworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQ
b2ludChleHRlbnNpb25zLCAiR0xfTlZfZnJhbWVidWZmZXJfbWl4ZWRfc2FtcGxlcyIsIGxvYWRQ
cm9jQWRkcmVzcygiZ2xDb3ZlcmFnZU1vZHVsYXRpb25OViIpLCAmY292ZXJhZ2VNb2R1bGF0aW9u
TlYpOworCiAgICAgLy8gR0xfTlZfZmVuY2UKICAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9p
bnQoZXh0ZW5zaW9ucywgIkdMX05WX2ZlbmNlIiwgbG9hZFByb2NBZGRyZXNzKCJnbERlbGV0ZUZl
bmNlc05WIiksICZkZWxldGVGZW5jZXNOVik7CiAgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBv
aW50KGV4dGVuc2lvbnMsICJHTF9OVl9mZW5jZSIsIGxvYWRQcm9jQWRkcmVzcygiZ2xHZW5GZW5j
ZXNOViIpLCAmZ2VuRmVuY2VzTlYpOwpAQCAtOTYxLDYgKzEwMTgsMTcgQEAgdm9pZCBGdW5jdGlv
bnNHTDo6aW5pdGlhbGl6ZVByb2NzRGVza3RvcAogICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQ
b2ludChleHRlbnNpb25zLCAiR0xfQVJCX3RyYW5zZm9ybV9mZWVkYmFjazMiLCBsb2FkUHJvY0Fk
ZHJlc3MoImdsRW5kUXVlcnlJbmRleGVkIiksICZlbmRRdWVyeUluZGV4ZWQpOwogICAgIEFzc2ln
bkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfQVJCX3RyYW5zZm9ybV9mZWVk
YmFjazMiLCBsb2FkUHJvY0FkZHJlc3MoImdsR2V0UXVlcnlJbmRleGVkaXYiKSwgJmdldFF1ZXJ5
SW5kZXhlZGl2KTsKIAorICAgIC8vIEdMX0FSQl9nZXRfcHJvZ3JhbV9iaW5hcnkKKyAgICBBc3Np
Z25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0FSQl9nZXRfcHJvZ3JhbV9i
aW5hcnkiLCBsb2FkUHJvY0FkZHJlc3MoImdsR2V0UHJvZ3JhbUJpbmFyeSIpLCAmZ2V0UHJvZ3Jh
bUJpbmFyeSk7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJH
TF9BUkJfZ2V0X3Byb2dyYW1fYmluYXJ5IiwgbG9hZFByb2NBZGRyZXNzKCJnbFByb2dyYW1CaW5h
cnkiKSwgJnByb2dyYW1CaW5hcnkpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChl
eHRlbnNpb25zLCAiR0xfQVJCX2dldF9wcm9ncmFtX2JpbmFyeSIsIGxvYWRQcm9jQWRkcmVzcygi
Z2xQcm9ncmFtUGFyYW1ldGVyaSIpLCAmcHJvZ3JhbVBhcmFtZXRlcmkpOworCisgICAgLy8gR0xf
QVJCX3JvYnVzdG5lc3MKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9u
cywgIkdMX0FSQl9yb2J1c3RuZXNzIiwgbG9hZFByb2NBZGRyZXNzKCJnbEdldEdyYXBoaWNzUmVz
ZXRTdGF0dXNBUkIiKSwgJmdldEdyYXBoaWNzUmVzZXRTdGF0dXMpOworCisgICAgLy8gR0xfS0hS
X3JvYnVzdG5lc3MKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywg
IkdMX0tIUl9yb2J1c3RuZXNzIiwgbG9hZFByb2NBZGRyZXNzKCJnbEdldEdyYXBoaWNzUmVzZXRT
dGF0dXMiKSwgJmdldEdyYXBoaWNzUmVzZXRTdGF0dXMpOworCiAgICAgLy8gMS4wCiAgICAgaWYg
KGlzQXRMZWFzdEdMKGdsOjpWZXJzaW9uKDEsIDApKSkKICAgICB7CkBAIC0xNzE0LDExICsxNzgy
LDM5IEBAIHZvaWQgRnVuY3Rpb25zR0w6OmluaXRpYWxpemVQcm9jc0dMRVMoKQogCiAgICAgLy8g
Y2xhbmctZm9ybWF0IG9mZgogCisgICAgLy8gR0xfTlZfcGF0aF9yZW5kZXJpbmcKKyAgICBBc3Np
Z25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX05WX3BhdGhfcmVuZGVyaW5n
IiwgbG9hZFByb2NBZGRyZXNzKCJnbE1hdHJpeExvYWRmRVhUIiksICZtYXRyaXhMb2FkRVhUKTsK
KyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX05WX3BhdGhf
cmVuZGVyaW5nIiwgbG9hZFByb2NBZGRyZXNzKCJnbEdlblBhdGhzTlYiKSwgJmdlblBhdGhzTlYp
OworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfTlZfcGF0
aF9yZW5kZXJpbmciLCBsb2FkUHJvY0FkZHJlc3MoImdsRGVsZXRlUGF0aHNOViIpLCAmZGVsUGF0
aHNOVik7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9O
Vl9wYXRoX3JlbmRlcmluZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xQYXRoQ29tbWFuZHNOViIpLCAm
cGF0aENvbW1hbmRzTlYpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNp
b25zLCAiR0xfTlZfcGF0aF9yZW5kZXJpbmciLCBsb2FkUHJvY0FkZHJlc3MoImdsSXNQYXRoTlYi
KSwgJmlzUGF0aE5WKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9u
cywgIkdMX05WX3BhdGhfcmVuZGVyaW5nIiwgbG9hZFByb2NBZGRyZXNzKCJnbFBhdGhQYXJhbWV0
ZXJmTlYiKSwgJnNldFBhdGhQYXJhbWV0ZXJmTlYpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50
cnlQb2ludChleHRlbnNpb25zLCAiR0xfTlZfcGF0aF9yZW5kZXJpbmciLCBsb2FkUHJvY0FkZHJl
c3MoImdsUGF0aFBhcmFtZXRlcmlOViIpLCAmc2V0UGF0aFBhcmFtZXRlcmlOVik7CisgICAgQXNz
aWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9OVl9wYXRoX3JlbmRlcmlu
ZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRQYXRoUGFyYW1ldGVyZnZOViIpLCAmZ2V0UGF0aFBh
cmFtZXRlcmZOVik7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMs
ICJHTF9OVl9wYXRoX3JlbmRlcmluZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRQYXRoUGFyYW1l
dGVyaXZOViIpLCAmZ2V0UGF0aFBhcmFtZXRlcmlOVik7CisgICAgQXNzaWduR0xFeHRlbnNpb25F
bnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9OVl9wYXRoX3JlbmRlcmluZyIsIGxvYWRQcm9jQWRk
cmVzcygiZ2xQYXRoU3RlbmNpbEZ1bmNOViIpLCAmcGF0aFN0ZW5jaWxGdW5jTlYpOworICAgIEFz
c2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfTlZfcGF0aF9yZW5kZXJp
bmciLCBsb2FkUHJvY0FkZHJlc3MoImdsU3RlbmNpbEZpbGxQYXRoTlYiKSwgJnN0ZW5jaWxGaWxs
UGF0aE5WKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdM
X05WX3BhdGhfcmVuZGVyaW5nIiwgbG9hZFByb2NBZGRyZXNzKCJnbFN0ZW5jaWxTdHJva2VQYXRo
TlYiKSwgJnN0ZW5jaWxTdHJva2VQYXRoTlYpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQ
b2ludChleHRlbnNpb25zLCAiR0xfTlZfcGF0aF9yZW5kZXJpbmciLCBsb2FkUHJvY0FkZHJlc3Mo
ImdsQ292ZXJGaWxsUGF0aE5WIiksICZjb3ZlckZpbGxQYXRoTlYpOworICAgIEFzc2lnbkdMRXh0
ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfTlZfcGF0aF9yZW5kZXJpbmciLCBsb2Fk
UHJvY0FkZHJlc3MoImdsQ292ZXJTdHJva2VQYXRoTlYiKSwgJmNvdmVyU3Ryb2tlUGF0aE5WKTsK
KyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX05WX3BhdGhf
cmVuZGVyaW5nIiwgbG9hZFByb2NBZGRyZXNzKCJnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aE5W
IiksICZzdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhOVik7CisgICAgQXNzaWduR0xFeHRlbnNpb25F
bnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9OVl9wYXRoX3JlbmRlcmluZyIsIGxvYWRQcm9jQWRk
cmVzcygiZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aE5WIiksICZzdGVuY2lsVGhlbkNvdmVy
U3Ryb2tlUGF0aE5WKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9u
cywgIkdMX05WX3BhdGhfcmVuZGVyaW5nIiwgbG9hZFByb2NBZGRyZXNzKCJnbENvdmVyRmlsbFBh
dGhJbnN0YW5jZWROViIpLCAmY292ZXJGaWxsUGF0aEluc3RhbmNlZE5WKTsKKyAgICBBc3NpZ25H
TEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX05WX3BhdGhfcmVuZGVyaW5nIiwg
bG9hZFByb2NBZGRyZXNzKCJnbENvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZE5WIiksICZjb3ZlclN0
cm9rZVBhdGhJbnN0YW5jZWROVik7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4
dGVuc2lvbnMsICJHTF9OVl9wYXRoX3JlbmRlcmluZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xTdGVu
Y2lsRmlsbFBhdGhJbnN0YW5jZWROViIpLCAmc3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkTlYpOwor
ICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfTlZfcGF0aF9y
ZW5kZXJpbmciLCBsb2FkUHJvY0FkZHJlc3MoImdsU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRO
ViIpLCAmc3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWROVik7CisgICAgQXNzaWduR0xFeHRlbnNp
b25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9OVl9wYXRoX3JlbmRlcmluZyIsIGxvYWRQcm9j
QWRkcmVzcygiZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWROViIpLCAmc3RlbmNp
bFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkTlYpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50
cnlQb2ludChleHRlbnNpb25zLCAiR0xfTlZfcGF0aF9yZW5kZXJpbmciLCBsb2FkUHJvY0FkZHJl
c3MoImdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWROViIpLCAmc3RlbmNpbFRo
ZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWROVik7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRy
eVBvaW50KGV4dGVuc2lvbnMsICJHTF9OVl9wYXRoX3JlbmRlcmluZyIsIGxvYWRQcm9jQWRkcmVz
cygiZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5OViIpLCAmcHJvZ3JhbVBhdGhGcmFnbWVu
dElucHV0R2VuTlYpOworCiAgICAgLy8gR0xfT0VTX3RleHR1cmVfM0QKICAgICBBc3NpZ25HTEV4
dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX09FU190ZXh0dXJlXzNEIiwgbG9hZFBy
b2NBZGRyZXNzKCJnbFRleEltYWdlM0RPRVMiKSwgJnRleEltYWdlM0QpOwogICAgIEFzc2lnbkdM
RXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfT0VTX3RleHR1cmVfM0QiLCBsb2Fk
UHJvY0FkZHJlc3MoImdsVGV4U3ViSW1hZ2UzRE9FUyIpLCAmdGV4U3ViSW1hZ2UzRCk7CiAgICAg
QXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9PRVNfdGV4dHVyZV8z
RCIsIGxvYWRQcm9jQWRkcmVzcygiZ2xDb3B5VGV4U3ViSW1hZ2UzRE9FUyIpLCAmY29weVRleFN1
YkltYWdlM0QpOwogCisgICAgLy8gR0xfTlZfZnJhbWVidWZmZXJfbWl4ZWRfc2FtcGxlcworICAg
IEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfTlZfZnJhbWVidWZm
ZXJfbWl4ZWRfc2FtcGxlcyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xDb3ZlcmFnZU1vZHVsYXRpb25O
ViIpLCAmY292ZXJhZ2VNb2R1bGF0aW9uTlYpOworCiAgICAgLy8gR0xfTlZfZmVuY2UKICAgICBB
c3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX05WX2ZlbmNlIiwgbG9h
ZFByb2NBZGRyZXNzKCJnbERlbGV0ZUZlbmNlc05WIiksICZkZWxldGVGZW5jZXNOVik7CiAgICAg
QXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9OVl9mZW5jZSIsIGxv
YWRQcm9jQWRkcmVzcygiZ2xHZW5GZW5jZXNOViIpLCAmZ2VuRmVuY2VzTlYpOwpAQCAtMTc0OCwx
NyArMTg0NCwxNyBAQCB2b2lkIEZ1bmN0aW9uc0dMOjppbml0aWFsaXplUHJvY3NHTEVTKCkKICAg
ICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX09FU19tYXBidWZm
ZXIiLCBsb2FkUHJvY0FkZHJlc3MoImdsVW5tYXBCdWZmZXJPRVMiKSwgJnVubWFwQnVmZmVyKTsK
IAogICAgIC8vIEdMX0tIUl9kZWJ1ZwotICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChl
eHRlbnNpb25zLCAiR0xfS0hSX2RlYnVnIiwgbG9hZFByb2NBZGRyZXNzKCJnbERlYnVnTWVzc2Fn
ZUNvbnRyb2wiKSwgJmRlYnVnTWVzc2FnZUNvbnRyb2wpOwotICAgIEFzc2lnbkdMRXh0ZW5zaW9u
RW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfS0hSX2RlYnVnIiwgbG9hZFByb2NBZGRyZXNzKCJn
bERlYnVnTWVzc2FnZUluc2VydCIpLCAmZGVidWdNZXNzYWdlSW5zZXJ0KTsKLSAgICBBc3NpZ25H
TEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0tIUl9kZWJ1ZyIsIGxvYWRQcm9j
QWRkcmVzcygiZ2xEZWJ1Z01lc3NhZ2VDYWxsYmFjayIpLCAmZGVidWdNZXNzYWdlQ2FsbGJhY2sp
OwotICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfS0hSX2Rl
YnVnIiwgbG9hZFByb2NBZGRyZXNzKCJnbEdldERlYnVnTWVzc2FnZUxvZyIpLCAmZ2V0RGVidWdN
ZXNzYWdlTG9nKTsKLSAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywg
IkdMX0tIUl9kZWJ1ZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRQb2ludGVydiIpLCAmZ2V0UG9p
bnRlcnYpOwotICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xf
S0hSX2RlYnVnIiwgbG9hZFByb2NBZGRyZXNzKCJnbFB1c2hEZWJ1Z0dyb3VwIiksICZwdXNoRGVi
dWdHcm91cCk7Ci0gICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJH
TF9LSFJfZGVidWciLCBsb2FkUHJvY0FkZHJlc3MoImdsUG9wRGVidWdHcm91cCIpLCAmcG9wRGVi
dWdHcm91cCk7Ci0gICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJH
TF9LSFJfZGVidWciLCBsb2FkUHJvY0FkZHJlc3MoImdsT2JqZWN0TGFiZWwiKSwgJm9iamVjdExh
YmVsKTsKLSAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0tI
Ul9kZWJ1ZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRPYmplY3RMYWJlbCIpLCAmZ2V0T2JqZWN0
TGFiZWwpOwotICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xf
S0hSX2RlYnVnIiwgbG9hZFByb2NBZGRyZXNzKCJnbE9iamVjdFB0ckxhYmVsIiksICZvYmplY3RQ
dHJMYWJlbCk7Ci0gICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJH
TF9LSFJfZGVidWciLCBsb2FkUHJvY0FkZHJlc3MoImdsR2V0T2JqZWN0UHRyTGFiZWwiKSwgJmdl
dE9iamVjdFB0ckxhYmVsKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5z
aW9ucywgIkdMX0tIUl9kZWJ1ZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xEZWJ1Z01lc3NhZ2VDb250
cm9sS0hSIiksICZkZWJ1Z01lc3NhZ2VDb250cm9sKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVu
dHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0tIUl9kZWJ1ZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xE
ZWJ1Z01lc3NhZ2VJbnNlcnRLSFIiKSwgJmRlYnVnTWVzc2FnZUluc2VydCk7CisgICAgQXNzaWdu
R0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9LSFJfZGVidWciLCBsb2FkUHJv
Y0FkZHJlc3MoImdsRGVidWdNZXNzYWdlQ2FsbGJhY2tLSFIiKSwgJmRlYnVnTWVzc2FnZUNhbGxi
YWNrKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0tI
Ul9kZWJ1ZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xHZXREZWJ1Z01lc3NhZ2VMb2dLSFIiKSwgJmdl
dERlYnVnTWVzc2FnZUxvZyk7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVu
c2lvbnMsICJHTF9LSFJfZGVidWciLCBsb2FkUHJvY0FkZHJlc3MoImdsR2V0UG9pbnRlcnZLSFIi
KSwgJmdldFBvaW50ZXJ2KTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5z
aW9ucywgIkdMX0tIUl9kZWJ1ZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xQdXNoRGVidWdHcm91cEtI
UiIpLCAmcHVzaERlYnVnR3JvdXApOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChl
eHRlbnNpb25zLCAiR0xfS0hSX2RlYnVnIiwgbG9hZFByb2NBZGRyZXNzKCJnbFBvcERlYnVnR3Jv
dXBLSFIiKSwgJnBvcERlYnVnR3JvdXApOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2lu
dChleHRlbnNpb25zLCAiR0xfS0hSX2RlYnVnIiwgbG9hZFByb2NBZGRyZXNzKCJnbE9iamVjdExh
YmVsS0hSIiksICZvYmplY3RMYWJlbCk7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50
KGV4dGVuc2lvbnMsICJHTF9LSFJfZGVidWciLCBsb2FkUHJvY0FkZHJlc3MoImdsR2V0T2JqZWN0
TGFiZWxLSFIiKSwgJmdldE9iamVjdExhYmVsKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5
UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0tIUl9kZWJ1ZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xPYmpl
Y3RQdHJMYWJlbEtIUiIpLCAmb2JqZWN0UHRyTGFiZWwpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9u
RW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfS0hSX2RlYnVnIiwgbG9hZFByb2NBZGRyZXNzKCJn
bEdldE9iamVjdFB0ckxhYmVsS0hSIiksICZnZXRPYmplY3RQdHJMYWJlbCk7CiAKICAgICAvLyBH
TF9FWFRfZHJhd19pbnN0YW5jZWQKICAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0
ZW5zaW9ucywgIkdMX0VYVF9kcmF3X2luc3RhbmNlZCIsIGxvYWRQcm9jQWRkcmVzcygiZ2xWZXJ0
ZXhBdHRyaWJEaXZpc29yRVhUIiksICZ2ZXJ0ZXhBdHRyaWJEaXZpc29yKTsKQEAgLTE3OTEsNiAr
MTg4NywxNiBAQCB2b2lkIEZ1bmN0aW9uc0dMOjppbml0aWFsaXplUHJvY3NHTEVTKCkKICAgICBB
c3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX09FU19FR0xfaW1hZ2Ui
LCBsb2FkUHJvY0FkZHJlc3MoImdsRUdMSW1hZ2VUYXJnZXRSZW5kZXJidWZmZXJTdG9yYWdlT0VT
IiksICZlZ2xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVMpOwogICAgIEFzc2lnbkdM
RXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfT0VTX0VHTF9pbWFnZSIsIGxvYWRQ
cm9jQWRkcmVzcygiZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyIpLCAmZWdsSW1hZ2VUYXJn
ZXRUZXh0dXJlMkRPRVMpOwogCisgICAgLy8gR0xfT0VTX2dldF9wcm9ncmFtX2JpbmFyeQorICAg
IEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfT0VTX2dldF9wcm9n
cmFtX2JpbmFyeSIsIGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRQcm9ncmFtQmluYXJ5T0VTIiksICZn
ZXRQcm9ncmFtQmluYXJ5KTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5z
aW9ucywgIkdMX09FU19nZXRfcHJvZ3JhbV9iaW5hcnkiLCBsb2FkUHJvY0FkZHJlc3MoImdsUHJv
Z3JhbUJpbmFyeU9FUyIpLCAmcHJvZ3JhbUJpbmFyeSk7CisKKyAgICAvLyBHTF9FWFRfcm9idXN0
bmVzcworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfRVhU
X3JvYnVzdG5lc3MiLCBsb2FkUHJvY0FkZHJlc3MoImdsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VY
VCIpLCAmZ2V0R3JhcGhpY3NSZXNldFN0YXR1cyk7CisKKyAgICAvLyBHTF9LSFJfcm9idXN0bmVz
cworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfS0hSX3Jv
YnVzdG5lc3MiLCBsb2FkUHJvY0FkZHJlc3MoImdsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0tIUiIp
LCAmZ2V0R3JhcGhpY3NSZXNldFN0YXR1cyk7CisKICAgICAvLyAyLjAKICAgICBpZiAoaXNBdExl
YXN0R0xFUyhnbDo6VmVyc2lvbigyLCAwKSkpCiAgICAgewpAQCAtMjE3NywxMSArMjI4MywyMSBA
QCBib29sIEZ1bmN0aW9uc0dMOjppc0F0TGVhc3RHTChjb25zdCBnbDo6CiAgICAgcmV0dXJuIHN0
YW5kYXJkID09IFNUQU5EQVJEX0dMX0RFU0tUT1AgJiYgdmVyc2lvbiA+PSBnbFZlcnNpb247CiB9
CiAKK2Jvb2wgRnVuY3Rpb25zR0w6OmlzQXRNb3N0R0woY29uc3QgZ2w6OlZlcnNpb24gJmdsVmVy
c2lvbikgY29uc3QKK3sKKyAgICByZXR1cm4gc3RhbmRhcmQgPT0gU1RBTkRBUkRfR0xfREVTS1RP
UCAmJiBnbFZlcnNpb24gPj0gdmVyc2lvbjsKK30KKwogYm9vbCBGdW5jdGlvbnNHTDo6aXNBdExl
YXN0R0xFUyhjb25zdCBnbDo6VmVyc2lvbiAmZ2xlc1ZlcnNpb24pIGNvbnN0CiB7CiAgICAgcmV0
dXJuIHN0YW5kYXJkID09IFNUQU5EQVJEX0dMX0VTICYmIHZlcnNpb24gPj0gZ2xlc1ZlcnNpb247
CiB9CiAKK2Jvb2wgRnVuY3Rpb25zR0w6OmlzQXRNb3N0R0xFUyhjb25zdCBnbDo6VmVyc2lvbiAm
Z2xlc1ZlcnNpb24pIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YW5kYXJkID09IFNUQU5EQVJEX0dM
X0VTICYmIGdsZXNWZXJzaW9uID49IHZlcnNpb247Cit9CisKIGJvb2wgRnVuY3Rpb25zR0w6Omhh
c0V4dGVuc2lvbihjb25zdCBzdGQ6OnN0cmluZyAmZXh0KSBjb25zdAogewogICAgIHJldHVybiBz
dGQ6OmZpbmQoZXh0ZW5zaW9ucy5iZWdpbigpLCBleHRlbnNpb25zLmVuZCgpLCBleHQpICE9IGV4
dGVuc2lvbnMuZW5kKCk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvRnVuY3Rpb25zR0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRnVuY3Rpb25zR0wuaAkocmV2aXNp
b24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL0Z1bmN0aW9uc0dMLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDkgQEAgY2xh
c3MgRnVuY3Rpb25zR0wKICAgICBTdGFuZGFyZEdMIHN0YW5kYXJkOwogICAgIEdMaW50IHByb2Zp
bGU7CiAgICAgYm9vbCBpc0F0TGVhc3RHTChjb25zdCBnbDo6VmVyc2lvbiAmZ2xWZXJzaW9uKSBj
b25zdDsKKyAgICBib29sIGlzQXRNb3N0R0woY29uc3QgZ2w6OlZlcnNpb24gJmdsVmVyc2lvbikg
Y29uc3Q7CiAgICAgYm9vbCBpc0F0TGVhc3RHTEVTKGNvbnN0IGdsOjpWZXJzaW9uICZnbGVzVmVy
c2lvbikgY29uc3Q7CisgICAgYm9vbCBpc0F0TW9zdEdMRVMoY29uc3QgZ2w6OlZlcnNpb24gJmds
ZXNWZXJzaW9uKSBjb25zdDsKIAogICAgIC8vIEV4dGVuc2lvbnMKICAgICBzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4gZXh0ZW5zaW9uczsKQEAgLTM5Miw2ICszOTQsMzEgQEAgY2xhc3MgRnVuY3Rp
b25zR0wKICAgICBQRk5HTFRFWElNQUdFM0RNVUxUSVNBTVBMRVBST0MgdGV4SW1hZ2UzRE11bHRp
c2FtcGxlOwogICAgIFBGTkdMV0FJVFNZTkNQUk9DIHdhaXRTeW5jOwogCisgICAgLy8gTlZfcGF0
aF9yZW5kZXJpbmcgKG9yaWdpbmFsbHkgd3JpdHRlbiBhZ2FpbnN0IDMuMiBjb21wYXRpYmlsaXR5
IHByb2ZpbGUpCisgICAgUEZOR0xNQVRSSVhMT0FERkVYVFBST0MgbWF0cml4TG9hZEVYVDsKKyAg
ICBQRk5HTEdFTlBBVEhTTlZQUk9DIGdlblBhdGhzTlY7CisgICAgUEZOR0xERUxFVEVQQVRIU05W
UFJPQyBkZWxQYXRoc05WOworICAgIFBGTkdMUEFUSENPTU1BTkRTTlZQUk9DIHBhdGhDb21tYW5k
c05WOworICAgIFBGTkdMSVNQQVRITlZQUk9DIGlzUGF0aE5WOworICAgIFBGTkdMUEFUSFBBUkFN
RVRFUkZOVlBST0Mgc2V0UGF0aFBhcmFtZXRlcmZOVjsKKyAgICBQRk5HTFBBVEhQQVJBTUVURVJJ
TlZQUk9DIHNldFBhdGhQYXJhbWV0ZXJpTlY7CisgICAgUEZOR0xHRVRQQVRIUEFSQU1FVEVSRlZO
VlBST0MgZ2V0UGF0aFBhcmFtZXRlcmZOVjsKKyAgICBQRk5HTEdFVFBBVEhQQVJBTUVURVJJVk5W
UFJPQyBnZXRQYXRoUGFyYW1ldGVyaU5WOworICAgIFBGTkdMUEFUSFNURU5DSUxGVU5DTlZQUk9D
IHBhdGhTdGVuY2lsRnVuY05WOworICAgIFBGTkdMU1RFTkNJTEZJTExQQVRITlZQUk9DIHN0ZW5j
aWxGaWxsUGF0aE5WOworICAgIFBGTkdMU1RFTkNJTFNUUk9LRVBBVEhOVlBST0Mgc3RlbmNpbFN0
cm9rZVBhdGhOVjsKKyAgICBQRk5HTENPVkVSRklMTFBBVEhOVlBST0MgY292ZXJGaWxsUGF0aE5W
OworICAgIFBGTkdMQ09WRVJTVFJPS0VQQVRITlZQUk9DIGNvdmVyU3Ryb2tlUGF0aE5WOworICAg
IFBGTkdMU1RFTkNJTFRIRU5DT1ZFUkZJTExQQVRITlZQUk9DIHN0ZW5jaWxUaGVuQ292ZXJGaWxs
UGF0aE5WOworICAgIFBGTkdMU1RFTkNJTFRIRU5DT1ZFUlNUUk9LRVBBVEhOVlBST0Mgc3RlbmNp
bFRoZW5Db3ZlclN0cm9rZVBhdGhOVjsKKyAgICBQRk5HTENPVkVSRklMTFBBVEhJTlNUQU5DRURO
VlBST0MgY292ZXJGaWxsUGF0aEluc3RhbmNlZE5WOworICAgIFBGTkdMQ09WRVJTVFJPS0VQQVRI
SU5TVEFOQ0VETlZQUk9DIGNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZE5WOworICAgIFBGTkdMU1RF
TkNJTEZJTExQQVRISU5TVEFOQ0VETlZQUk9DIHN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZE5WOwor
ICAgIFBGTkdMU1RFTkNJTFNUUk9LRVBBVEhJTlNUQU5DRUROVlBST0Mgc3RlbmNpbFN0cm9rZVBh
dGhJbnN0YW5jZWROVjsKKyAgICBQRk5HTFNURU5DSUxUSEVOQ09WRVJGSUxMUEFUSElOU1RBTkNF
RE5WUFJPQyBzdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWROVjsKKyAgICBQRk5HTFNU
RU5DSUxUSEVOQ09WRVJTVFJPS0VQQVRISU5TVEFOQ0VETlZQUk9DIHN0ZW5jaWxUaGVuQ292ZXJT
dHJva2VQYXRoSW5zdGFuY2VkTlY7CisgICAgUEZOR0xQUk9HUkFNUEFUSEZSQUdNRU5USU5QVVRH
RU5OVlBST0MgcHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuTlY7CisKICAgICAvLyAzLjMKICAg
ICBQRk5HTEJJTkRGUkFHREFUQUxPQ0FUSU9OSU5ERVhFRFBST0MgYmluZEZyYWdEYXRhTG9jYXRp
b25JbmRleGVkOwogICAgIFBGTkdMQklORFNBTVBMRVJQUk9DIGJpbmRTYW1wbGVyOwpAQCAtNjE5
LDYgKzY0Niw3IEBAIGNsYXNzIEZ1bmN0aW9uc0dMCiAgICAgUEZOR0xWRVJURVhBVFRSSUJJRk9S
TUFUUFJPQyB2ZXJ0ZXhBdHRyaWJJRm9ybWF0OwogICAgIFBGTkdMVkVSVEVYQVRUUklCTEZPUk1B
VFBST0MgdmVydGV4QXR0cmliTEZvcm1hdDsKICAgICBQRk5HTFZFUlRFWEJJTkRJTkdESVZJU09S
UFJPQyB2ZXJ0ZXhCaW5kaW5nRGl2aXNvcjsKKyAgICBQRk5HTENPVkVSQUdFTU9EVUxBVElPTk5W
UFJPQyBjb3ZlcmFnZU1vZHVsYXRpb25OVjsKIAogICAgIC8vIDQuNAogICAgIFBGTkdMQklOREJV
RkZFUlNCQVNFUFJPQyBiaW5kQnVmZmVyc0Jhc2U7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUGF0aEdMLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUGF0aEdMLmNw
cAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvUGF0aEdMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM4IEBACisv
LworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKworLy8gUGF0aEdMLmNwcDogSW1wbGVtZW50YXRpb24gZm9yIFBhdGhHTCBj
bGFzcy4KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1BhdGhHTC5oIgorI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL0Z1bmN0aW9uc0dMLmgiCisKK25hbWVzcGFjZSByeAor
eworCitQYXRoR0w6OlBhdGhHTChjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLCBHTHVpbnQg
cGF0aCkgOiBtRnVuY3Rpb25zKGZ1bmN0aW9ucyksIG1QYXRoSUQocGF0aCkKK3sKK30KKworUGF0
aEdMOjp+UGF0aEdMKCkKK3sKK30KKworZ2w6OkVycm9yIFBhdGhHTDo6c2V0Q29tbWFuZHMoR0xz
aXplaSBudW1Db21tYW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
dWJ5dGUgKmNvbW1hbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBu
dW1Db29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY29vcmRUeXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqY29vcmRzKQorewor
ICAgIG1GdW5jdGlvbnMtPnBhdGhDb21tYW5kc05WKG1QYXRoSUQsIG51bUNvbW1hbmRzLCBjb21t
YW5kcywgbnVtQ29vcmRzLCBjb29yZFR5cGUsIGNvb3Jkcyk7CisgICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9OT19FUlJPUik7Cit9CisKK3ZvaWQgUGF0aEdMOjpzZXRQYXRoUGFyYW1ldGVyKEdMZW51
bSBwbmFtZSwgR0xmbG9hdCB2YWx1ZSkKK3sKKyAgICBtRnVuY3Rpb25zLT5zZXRQYXRoUGFyYW1l
dGVyZk5WKG1QYXRoSUQsIHBuYW1lLCB2YWx1ZSk7Cit9CisKK30gIC8vIHJ4ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL1BhdGhHTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9QYXRoR0wuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUGF0aEdM
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykg
MjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFBh
dGhHTC5oOiBDbGFzcyBkZWZpbml0aW9uIGZvciBDSFJPTUlVTV9wYXRoX3JlbmRlcmluZyBwYXRo
IG9iamVjdCBmb3IgdGhlCisvLyBHTCBiYWNrZW5kLgorCisjaWZuZGVmIExJQkFOR0xFX1JFTkRF
UkVSX0dMX1BBVEhJTVBMX0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0dMX1BBVEhJTVBM
X0hfCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9QYXRoSW1wbC5oIgorCituYW1lc3Bh
Y2UgcngKK3sKKworY2xhc3MgRnVuY3Rpb25zR0w7CisKK2NsYXNzIFBhdGhHTCA6IHB1YmxpYyBQ
YXRoSW1wbAoreworICBwdWJsaWM6CisgICAgUGF0aEdMKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5j
dGlvbnMsIEdMdWludCBwYXRoKTsKKyAgICB+UGF0aEdMKCk7CisKKyAgICBnbDo6RXJyb3Igc2V0
Q29tbWFuZHMoR0xzaXplaSBudW1Db21tYW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0x1Ynl0ZSAqY29tbWFuZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgbnVtQ29vcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY29vcmRUeXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpjb29yZHMpIG92ZXJyaWRl
OworCisgICAgdm9pZCBzZXRQYXRoUGFyYW1ldGVyKEdMZW51bSBwbmFtZSwgR0xmbG9hdCB2YWx1
ZSkgb3ZlcnJpZGU7CisKKyAgICBHTHVpbnQgZ2V0UGF0aElEKCkgY29uc3QgeyByZXR1cm4gbVBh
dGhJRDsgfQorCisgIHByaXZhdGU6CisgICAgY29uc3QgRnVuY3Rpb25zR0wgKm1GdW5jdGlvbnM7
CisKKyAgICBHTHVpbnQgbVBhdGhJRDsKK307CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5k
aWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX0dMX1BBVEhJTVBMX0hfCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUHJvZ3JhbUdMLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvUHJvZ3JhbUdMLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1Byb2dyYW1HTC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgsMjUgKzgsMzAgQEAKIAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1By
b2dyYW1HTC5oIgogCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKICNpbmNsdWRlICJj
b21tb24vZGVidWcuaCIKKyNpbmNsdWRlICJjb21tb24vc3RyaW5nX3V0aWxzLmgiCiAjaW5jbHVk
ZSAiY29tbW9uL3V0aWxpdGllcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL0Z1
bmN0aW9uc0dMLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvU2hhZGVyR0wuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1dvcmthcm91bmRzR0wuaCIKKyNpbmNsdWRlICJsaWJB
TkdMRS9Vbmlmb3JtLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vUGxhdGZvcm0uaCIKIAogbmFtZXNw
YWNlIHJ4CiB7CiAKLVByb2dyYW1HTDo6UHJvZ3JhbUdMKGNvbnN0IGdsOjpQcm9ncmFtOjpEYXRh
ICZkYXRhLAorUHJvZ3JhbUdMOjpQcm9ncmFtR0woY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmZGF0
YSwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCiAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JrYXJvdW5kc0dMICZ3b3JrYXJvdW5kcywKLSAg
ICAgICAgICAgICAgICAgICAgIFN0YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIpCisgICAgICAg
ICAgICAgICAgICAgICBTdGF0ZU1hbmFnZXJHTCAqc3RhdGVNYW5hZ2VyLAorICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBlbmFibGVQYXRoUmVuZGVyaW5nKQogICAgIDogUHJvZ3JhbUltcGwoZGF0
YSksCiAgICAgICBtRnVuY3Rpb25zKGZ1bmN0aW9ucyksCiAgICAgICBtV29ya2Fyb3VuZHMod29y
a2Fyb3VuZHMpLAogICAgICAgbVN0YXRlTWFuYWdlcihzdGF0ZU1hbmFnZXIpLAorICAgICAgbUVu
YWJsZVBhdGhSZW5kZXJpbmcoZW5hYmxlUGF0aFJlbmRlcmluZyksCiAgICAgICBtUHJvZ3JhbUlE
KDApCiB7CiAgICAgQVNTRVJUKG1GdW5jdGlvbnMpOwpAQCAtNDMsMTU2ICs0OCwxMzUgQEAgUHJv
Z3JhbUdMOjp+UHJvZ3JhbUdMKCkKIAogTGlua1Jlc3VsdCBQcm9ncmFtR0w6OmxvYWQoZ2w6Oklu
Zm9Mb2cgJmluZm9Mb2csIGdsOjpCaW5hcnlJbnB1dFN0cmVhbSAqc3RyZWFtKQogewotICAgIFVO
SU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gTGlua1Jlc3VsdChmYWxzZSwgZ2w6OkVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgcHJlTGluaygpOworCisgICAgLy8gUmVhZCB0aGUg
YmluYXJ5IGZvcm1hdCwgc2l6ZSBhbmQgYmxvYgorICAgIEdMZW51bSBiaW5hcnlGb3JtYXQgICA9
IHN0cmVhbS0+cmVhZEludDxHTGVudW0+KCk7CisgICAgR0xpbnQgYmluYXJ5TGVuZ3RoICAgID0g
c3RyZWFtLT5yZWFkSW50PEdMaW50PigpOworICAgIGNvbnN0IHVpbnQ4X3QgKmJpbmFyeSA9IHN0
cmVhbS0+ZGF0YSgpICsgc3RyZWFtLT5vZmZzZXQoKTsKKyAgICBzdHJlYW0tPnNraXAoYmluYXJ5
TGVuZ3RoKTsKKworICAgIC8vIExvYWQgdGhlIGJpbmFyeQorICAgIG1GdW5jdGlvbnMtPnByb2dy
YW1CaW5hcnkobVByb2dyYW1JRCwgYmluYXJ5Rm9ybWF0LCBiaW5hcnksIGJpbmFyeUxlbmd0aCk7
CisKKyAgICAvLyBWZXJpZnkgdGhhdCB0aGUgcHJvZ3JhbSBsaW5rZWQKKyAgICBpZiAoIWNoZWNr
TGlua1N0YXR1cyhpbmZvTG9nKSkKKyAgICB7CisgICAgICAgIHJldHVybiBMaW5rUmVzdWx0KGZh
bHNlLCBnbDo6RXJyb3IoR0xfTk9fRVJST1IpKTsKKyAgICB9CisKKyAgICBwb3N0TGluaygpOwor
CisgICAgcmV0dXJuIExpbmtSZXN1bHQodHJ1ZSwgZ2w6OkVycm9yKEdMX05PX0VSUk9SKSk7CiB9
CiAKIGdsOjpFcnJvciBQcm9ncmFtR0w6OnNhdmUoZ2w6OkJpbmFyeU91dHB1dFN0cmVhbSAqc3Ry
ZWFtKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKKyAgICBHTGludCBiaW5hcnlMZW5ndGggPSAwOworICAgIG1GdW5j
dGlvbnMtPmdldFByb2dyYW1pdihtUHJvZ3JhbUlELCBHTF9QUk9HUkFNX0JJTkFSWV9MRU5HVEgs
ICZiaW5hcnlMZW5ndGgpOworCisgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gYmluYXJ5KGJpbmFy
eUxlbmd0aCk7CisgICAgR0xlbnVtIGJpbmFyeUZvcm1hdCA9IEdMX05PTkU7CisgICAgbUZ1bmN0
aW9ucy0+Z2V0UHJvZ3JhbUJpbmFyeShtUHJvZ3JhbUlELCBiaW5hcnlMZW5ndGgsICZiaW5hcnlM
ZW5ndGgsICZiaW5hcnlGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
YmluYXJ5WzBdKTsKKworICAgIHN0cmVhbS0+d3JpdGVJbnQoYmluYXJ5Rm9ybWF0KTsKKyAgICBz
dHJlYW0tPndyaXRlSW50KGJpbmFyeUxlbmd0aCk7CisgICAgc3RyZWFtLT53cml0ZUJ5dGVzKCZi
aW5hcnlbMF0sIGJpbmFyeUxlbmd0aCk7CisKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VS
Uk9SKTsKIH0KIAogdm9pZCBQcm9ncmFtR0w6OnNldEJpbmFyeVJldHJpZXZhYmxlSGludChib29s
IHJldHJpZXZhYmxlKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAvLyBnbFByb2dyYW1Q
YXJhbWV0ZXJpIGlzbid0IGFsd2F5cyBhdmFpbGFibGUgb24gRVMgYmFja2VuZHMuCisgICAgaWYg
KG1GdW5jdGlvbnMtPnByb2dyYW1QYXJhbWV0ZXJpKQorICAgIHsKKyAgICAgICAgbUZ1bmN0aW9u
cy0+cHJvZ3JhbVBhcmFtZXRlcmkobVByb2dyYW1JRCwgR0xfUFJPR1JBTV9CSU5BUllfUkVUUklF
VkFCTEVfSElOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0cmll
dmFibGUgPyBHTF9UUlVFIDogR0xfRkFMU0UpOworICAgIH0KIH0KIAotTGlua1Jlc3VsdCBQcm9n
cmFtR0w6OmxpbmsoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIGdsOjpJbmZvTG9nICZpbmZvTG9nKQor
TGlua1Jlc3VsdCBQcm9ncmFtR0w6OmxpbmsoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwg
Z2w6OkluZm9Mb2cgJmluZm9Mb2cpCiB7Ci0gICAgLy8gUmVzZXQgdGhlIHByb2dyYW0gc3RhdGUs
IGRlbGV0ZSB0aGUgY3VycmVudCBwcm9ncmFtIGlmIG9uZSBleGlzdHMKLSAgICByZXNldCgpOwor
ICAgIHByZUxpbmsoKTsKIAotICAgIC8vIFNldCB0aGUgdHJhbnNmb3JtIGZlZWRiYWNrIHN0YXRl
Ci0gICAgc3RkOjp2ZWN0b3I8Y29uc3QgR0xjaGFyICo+IHRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
Z3M7Ci0gICAgZm9yIChjb25zdCBhdXRvICZ0ZlZhcnlpbmcgOiBtRGF0YS5nZXRUcmFuc2Zvcm1G
ZWVkYmFja1ZhcnlpbmdOYW1lcygpKQorICAgIGlmIChtU3RhdGUuZ2V0QXR0YWNoZWRDb21wdXRl
U2hhZGVyKCkpCiAgICAgewotICAgICAgICB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzLnB1c2hf
YmFjayh0ZlZhcnlpbmcuY19zdHIoKSk7Ci0gICAgfQorICAgICAgICBjb25zdCBTaGFkZXJHTCAq
Y29tcHV0ZVNoYWRlckdMID0gR2V0SW1wbEFzPFNoYWRlckdMPihtU3RhdGUuZ2V0QXR0YWNoZWRD
b21wdXRlU2hhZGVyKCkpOwogCi0gICAgaWYgKHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MuZW1w
dHkoKSkKLSAgICB7Ci0gICAgICAgIGlmIChtRnVuY3Rpb25zLT50cmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmdzKQotICAgICAgICB7Ci0gICAgICAgICAgICBtRnVuY3Rpb25zLT50cmFuc2Zvcm1GZWVk
YmFja1ZhcnlpbmdzKG1Qcm9ncmFtSUQsIDAsIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1EYXRhLmdldFRyYW5zZm9ybUZlZWRiYWNr
QnVmZmVyTW9kZSgpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAg
ICBBU1NFUlQobUZ1bmN0aW9ucy0+dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyk7Ci0gICAgICAg
IG1GdW5jdGlvbnMtPnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoCi0gICAgICAgICAgICBtUHJv
Z3JhbUlELCBzdGF0aWNfY2FzdDxHTHNpemVpPih0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzLnNp
emUoKSksCi0gICAgICAgICAgICAmdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nc1swXSwgbURhdGEu
Z2V0VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlKCkpOwotICAgIH0KLQotICAgIGNvbnN0IGds
OjpTaGFkZXIgKnZlcnRleFNoYWRlciAgID0gbURhdGEuZ2V0QXR0YWNoZWRWZXJ0ZXhTaGFkZXIo
KTsKLSAgICBjb25zdCBnbDo6U2hhZGVyICpmcmFnbWVudFNoYWRlciA9IG1EYXRhLmdldEF0dGFj
aGVkRnJhZ21lbnRTaGFkZXIoKTsKLQotICAgIGNvbnN0IFNoYWRlckdMICp2ZXJ0ZXhTaGFkZXJH
TCAgID0gR2V0SW1wbEFzPFNoYWRlckdMPih2ZXJ0ZXhTaGFkZXIpOwotICAgIGNvbnN0IFNoYWRl
ckdMICpmcmFnbWVudFNoYWRlckdMID0gR2V0SW1wbEFzPFNoYWRlckdMPihmcmFnbWVudFNoYWRl
cik7CisgICAgICAgIG1GdW5jdGlvbnMtPmF0dGFjaFNoYWRlcihtUHJvZ3JhbUlELCBjb21wdXRl
U2hhZGVyR0wtPmdldFNoYWRlcklEKCkpOwogCi0gICAgLy8gQXR0YWNoIHRoZSBzaGFkZXJzCi0g
ICAgbUZ1bmN0aW9ucy0+YXR0YWNoU2hhZGVyKG1Qcm9ncmFtSUQsIHZlcnRleFNoYWRlckdMLT5n
ZXRTaGFkZXJJRCgpKTsKLSAgICBtRnVuY3Rpb25zLT5hdHRhY2hTaGFkZXIobVByb2dyYW1JRCwg
ZnJhZ21lbnRTaGFkZXJHTC0+Z2V0U2hhZGVySUQoKSk7CisgICAgICAgIC8vIExpbmsgYW5kIHZl
cmlmeQorICAgICAgICBtRnVuY3Rpb25zLT5saW5rUHJvZ3JhbShtUHJvZ3JhbUlEKTsKIAotICAg
IC8vIEJpbmQgYXR0cmlidXRlIGxvY2F0aW9ucyB0byBtYXRjaCB0aGUgR0wgbGF5ZXIuCi0gICAg
Zm9yIChjb25zdCBzaDo6QXR0cmlidXRlICZhdHRyaWJ1dGUgOiBtRGF0YS5nZXRBdHRyaWJ1dGVz
KCkpCisgICAgICAgIC8vIERldGFjaCB0aGUgc2hhZGVycworICAgICAgICBtRnVuY3Rpb25zLT5k
ZXRhY2hTaGFkZXIobVByb2dyYW1JRCwgY29tcHV0ZVNoYWRlckdMLT5nZXRTaGFkZXJJRCgpKTsK
KyAgICB9CisgICAgZWxzZQogICAgIHsKLSAgICAgICAgaWYgKCFhdHRyaWJ1dGUuc3RhdGljVXNl
KQorICAgICAgICAvLyBTZXQgdGhlIHRyYW5zZm9ybSBmZWVkYmFjayBzdGF0ZQorICAgICAgICBz
dGQ6OnZlY3Rvcjxjb25zdCBHTGNoYXIgKj4gdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nczsKKyAg
ICAgICAgZm9yIChjb25zdCBhdXRvICZ0ZlZhcnlpbmcgOiBtU3RhdGUuZ2V0VHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5nTmFtZXMoKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzLnB1c2hfYmFjayh0ZlZhcnlpbmcu
Y19zdHIoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBtRnVuY3Rpb25zLT5iaW5kQXR0cmliTG9j
YXRpb24obVByb2dyYW1JRCwgYXR0cmlidXRlLmxvY2F0aW9uLCBhdHRyaWJ1dGUubmFtZS5jX3N0
cigpKTsKLSAgICB9Ci0KLSAgICAvLyBMaW5rIGFuZCB2ZXJpZnkKLSAgICBtRnVuY3Rpb25zLT5s
aW5rUHJvZ3JhbShtUHJvZ3JhbUlEKTsKLQotICAgIC8vIERldGFjaCB0aGUgc2hhZGVycwotICAg
IG1GdW5jdGlvbnMtPmRldGFjaFNoYWRlcihtUHJvZ3JhbUlELCB2ZXJ0ZXhTaGFkZXJHTC0+Z2V0
U2hhZGVySUQoKSk7Ci0gICAgbUZ1bmN0aW9ucy0+ZGV0YWNoU2hhZGVyKG1Qcm9ncmFtSUQsIGZy
YWdtZW50U2hhZGVyR0wtPmdldFNoYWRlcklEKCkpOwotCi0gICAgLy8gVmVyaWZ5IHRoZSBsaW5r
Ci0gICAgR0xpbnQgbGlua1N0YXR1cyA9IEdMX0ZBTFNFOwotICAgIG1GdW5jdGlvbnMtPmdldFBy
b2dyYW1pdihtUHJvZ3JhbUlELCBHTF9MSU5LX1NUQVRVUywgJmxpbmtTdGF0dXMpOwotICAgIGlm
IChsaW5rU3RhdHVzID09IEdMX0ZBTFNFKQotICAgIHsKLSAgICAgICAgLy8gTGlua2luZyBmYWls
ZWQsIHB1dCB0aGUgZXJyb3IgaW50byB0aGUgaW5mbyBsb2cKLSAgICAgICAgR0xpbnQgaW5mb0xv
Z0xlbmd0aCA9IDA7Ci0gICAgICAgIG1GdW5jdGlvbnMtPmdldFByb2dyYW1pdihtUHJvZ3JhbUlE
LCBHTF9JTkZPX0xPR19MRU5HVEgsICZpbmZvTG9nTGVuZ3RoKTsKLQotICAgICAgICBzdGQ6OnN0
cmluZyB3YXJuaW5nOwotCi0gICAgICAgIC8vIEluZm8gbG9nIGxlbmd0aCBpbmNsdWRlcyB0aGUg
bnVsbCB0ZXJtaW5hdG9yLCBzbyAxIG1lYW5zIHRoYXQgdGhlIGluZm8gbG9nIGlzIGFuIGVtcHR5
Ci0gICAgICAgIC8vIHN0cmluZy4KLSAgICAgICAgaWYgKGluZm9Mb2dMZW5ndGggPiAxKQorICAg
ICAgICBpZiAodHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncy5lbXB0eSgpKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGQ6OnZlY3RvcjxjaGFyPiBidWYoaW5mb0xvZ0xlbmd0aCk7Ci0gICAgICAg
ICAgICBtRnVuY3Rpb25zLT5nZXRQcm9ncmFtSW5mb0xvZyhtUHJvZ3JhbUlELCBpbmZvTG9nTGVu
Z3RoLCBudWxscHRyLCAmYnVmWzBdKTsKLQotICAgICAgICAgICAgbUZ1bmN0aW9ucy0+ZGVsZXRl
UHJvZ3JhbShtUHJvZ3JhbUlEKTsKLSAgICAgICAgICAgIG1Qcm9ncmFtSUQgPSAwOwotCi0gICAg
ICAgICAgICBpbmZvTG9nIDw8IGJ1Zi5kYXRhKCk7Ci0KLSAgICAgICAgICAgIHdhcm5pbmcgPSBG
b3JtYXRTdHJpbmcoIlByb2dyYW0gbGluayBmYWlsZWQgdW5leHBlY3RlZGx5OiAlcyIsIGJ1Zi5k
YXRhKCkpOworICAgICAgICAgICAgaWYgKG1GdW5jdGlvbnMtPnRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZ3MpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+dHJhbnNm
b3JtRmVlZGJhY2tWYXJ5aW5ncyhtUHJvZ3JhbUlELCAwLCBudWxscHRyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVN0YXRlLmdldFRyYW5z
Zm9ybUZlZWRiYWNrQnVmZmVyTW9kZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
ICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIHdhcm5pbmcgPSAiUHJvZ3JhbSBsaW5r
IGZhaWxlZCB1bmV4cGVjdGVkbHkgd2l0aCBubyBpbmZvIGxvZy4iOworICAgICAgICAgICAgQVNT
RVJUKG1GdW5jdGlvbnMtPnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOworICAgICAgICAgICAg
bUZ1bmN0aW9ucy0+dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncygKKyAgICAgICAgICAgICAgICBt
UHJvZ3JhbUlELCBzdGF0aWNfY2FzdDxHTHNpemVpPih0cmFuc2Zvcm1GZWVkYmFja1Zhcnlpbmdz
LnNpemUoKSksCisgICAgICAgICAgICAgICAgJnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3NbMF0s
IG1TdGF0ZS5nZXRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUoKSk7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVQbGF0Zm9ybUN1cnJlbnQoKS0+bG9nV2FybmluZyh3YXJuaW5nLmNfc3RyKCkp
OwotICAgICAgICBUUkFDRSgiXG4lcyIsIHdhcm5pbmcuY19zdHIoKSk7CiAKLSAgICAgICAgLy8g
VE9ETywgcmV0dXJuIEdMX09VVF9PRl9NRU1PUlkgb3IganVzdCBmYWlsIHRoZSBsaW5rPyBUaGlz
IGlzIGFuIHVuZXhwZWN0ZWQgY2FzZQotICAgICAgICByZXR1cm4gTGlua1Jlc3VsdChmYWxzZSwg
Z2w6OkVycm9yKEdMX05PX0VSUk9SKSk7Ci0gICAgfQorICAgICAgICBjb25zdCBTaGFkZXJHTCAq
dmVydGV4U2hhZGVyR0wgICA9IEdldEltcGxBczxTaGFkZXJHTD4obVN0YXRlLmdldEF0dGFjaGVk
VmVydGV4U2hhZGVyKCkpOworICAgICAgICBjb25zdCBTaGFkZXJHTCAqZnJhZ21lbnRTaGFkZXJH
TCA9IEdldEltcGxBczxTaGFkZXJHTD4obVN0YXRlLmdldEF0dGFjaGVkRnJhZ21lbnRTaGFkZXIo
KSk7CiAKLSAgICBpZiAobVdvcmthcm91bmRzLmFsd2F5c0NhbGxVc2VQcm9ncmFtQWZ0ZXJMaW5r
KQotICAgIHsKLSAgICAgICAgbVN0YXRlTWFuYWdlci0+Zm9yY2VVc2VQcm9ncmFtKG1Qcm9ncmFt
SUQpOwotICAgIH0KKyAgICAgICAgLy8gQXR0YWNoIHRoZSBzaGFkZXJzCisgICAgICAgIG1GdW5j
dGlvbnMtPmF0dGFjaFNoYWRlcihtUHJvZ3JhbUlELCB2ZXJ0ZXhTaGFkZXJHTC0+Z2V0U2hhZGVy
SUQoKSk7CisgICAgICAgIG1GdW5jdGlvbnMtPmF0dGFjaFNoYWRlcihtUHJvZ3JhbUlELCBmcmFn
bWVudFNoYWRlckdMLT5nZXRTaGFkZXJJRCgpKTsKIAotICAgIC8vIFF1ZXJ5IHRoZSB1bmlmb3Jt
IGluZm9ybWF0aW9uCi0gICAgQVNTRVJUKG1Vbmlmb3JtUmVhbExvY2F0aW9uTWFwLmVtcHR5KCkp
OwotICAgIGNvbnN0IGF1dG8gJnVuaWZvcm1zID0gbURhdGEuZ2V0VW5pZm9ybXMoKTsKLSAgICBm
b3IgKGNvbnN0IGdsOjpWYXJpYWJsZUxvY2F0aW9uICZlbnRyeSA6IG1EYXRhLmdldFVuaWZvcm1M
b2NhdGlvbnMoKSkKLSAgICB7Ci0gICAgICAgIC8vIEZyb20gdGhlIHNwZWM6Ci0gICAgICAgIC8v
ICJMb2NhdGlvbnMgZm9yIHNlcXVlbnRpYWwgYXJyYXkgaW5kaWNlcyBhcmUgbm90IHJlcXVpcmVk
IHRvIGJlIHNlcXVlbnRpYWwuIgotICAgICAgICBjb25zdCBnbDo6TGlua2VkVW5pZm9ybSAmdW5p
Zm9ybSA9IHVuaWZvcm1zW2VudHJ5LmluZGV4XTsKLSAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0g
ZnVsbE5hbWVTdHI7Ci0gICAgICAgIGZ1bGxOYW1lU3RyIDw8IHVuaWZvcm0ubmFtZTsKLSAgICAg
ICAgaWYgKHVuaWZvcm0uaXNBcnJheSgpKQorICAgICAgICAvLyBCaW5kIGF0dHJpYnV0ZSBsb2Nh
dGlvbnMgdG8gbWF0Y2ggdGhlIEdMIGxheWVyLgorICAgICAgICBmb3IgKGNvbnN0IHNoOjpBdHRy
aWJ1dGUgJmF0dHJpYnV0ZSA6IG1TdGF0ZS5nZXRBdHRyaWJ1dGVzKCkpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGZ1bGxOYW1lU3RyIDw8ICJbIiA8PCBlbnRyeS5lbGVtZW50IDw8ICJdIjsKKyAg
ICAgICAgICAgIGlmICghYXR0cmlidXRlLnN0YXRpY1VzZSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbUZ1bmN0
aW9ucy0+YmluZEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtSUQsIGF0dHJpYnV0ZS5sb2NhdGlvbiwg
YXR0cmlidXRlLm5hbWUuY19zdHIoKSk7CiAgICAgICAgIH0KLSAgICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcgJmZ1bGxOYW1lID0gZnVsbE5hbWVTdHIuc3RyKCk7CiAKLSAgICAgICAgR0xpbnQgcmVh
bExvY2F0aW9uID0gbUZ1bmN0aW9ucy0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtSUQsIGZ1
bGxOYW1lLmNfc3RyKCkpOwotICAgICAgICBtVW5pZm9ybVJlYWxMb2NhdGlvbk1hcC5wdXNoX2Jh
Y2socmVhbExvY2F0aW9uKTsKLSAgICB9CisgICAgICAgIC8vIExpbmsgYW5kIHZlcmlmeQorICAg
ICAgICBtRnVuY3Rpb25zLT5saW5rUHJvZ3JhbShtUHJvZ3JhbUlEKTsKIAotICAgIG1Vbmlmb3Jt
SW5kZXhUb1NhbXBsZXJJbmRleC5yZXNpemUobURhdGEuZ2V0VW5pZm9ybXMoKS5zaXplKCksIEdM
X0lOVkFMSURfSU5ERVgpOworICAgICAgICAvLyBEZXRhY2ggdGhlIHNoYWRlcnMKKyAgICAgICAg
bUZ1bmN0aW9ucy0+ZGV0YWNoU2hhZGVyKG1Qcm9ncmFtSUQsIHZlcnRleFNoYWRlckdMLT5nZXRT
aGFkZXJJRCgpKTsKKyAgICAgICAgbUZ1bmN0aW9ucy0+ZGV0YWNoU2hhZGVyKG1Qcm9ncmFtSUQs
IGZyYWdtZW50U2hhZGVyR0wtPmdldFNoYWRlcklEKCkpOworICAgIH0KIAotICAgIGZvciAoc2l6
ZV90IHVuaWZvcm1JZCA9IDA7IHVuaWZvcm1JZCA8IHVuaWZvcm1zLnNpemUoKTsgKyt1bmlmb3Jt
SWQpCisgICAgLy8gVmVyaWZ5IHRoZSBsaW5rCisgICAgaWYgKCFjaGVja0xpbmtTdGF0dXMoaW5m
b0xvZykpCiAgICAgewotICAgICAgICBjb25zdCBnbDo6TGlua2VkVW5pZm9ybSAmbGlua2VkVW5p
Zm9ybSA9IHVuaWZvcm1zW3VuaWZvcm1JZF07Ci0KLSAgICAgICAgaWYgKCFsaW5rZWRVbmlmb3Jt
LmlzU2FtcGxlcigpIHx8ICFsaW5rZWRVbmlmb3JtLnN0YXRpY1VzZSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgIG1Vbmlmb3JtSW5kZXhUb1NhbXBsZXJJbmRleFt1bmlmb3JtSWRd
ID0gbVNhbXBsZXJCaW5kaW5ncy5zaXplKCk7CisgICAgICAgIHJldHVybiBMaW5rUmVzdWx0KGZh
bHNlLCBnbDo6RXJyb3IoR0xfTk9fRVJST1IpKTsKKyAgICB9CiAKLSAgICAgICAgLy8gSWYgdW5p
Zm9ybSBpcyBhIHNhbXBsZXIgdHlwZSwgaW5zZXJ0IGl0IGludG8gdGhlIG1TYW1wbGVyQmluZGlu
Z3MgYXJyYXkKLSAgICAgICAgU2FtcGxlckJpbmRpbmdHTCBzYW1wbGVyQmluZGluZzsKLSAgICAg
ICAgc2FtcGxlckJpbmRpbmcudGV4dHVyZVR5cGUgPSBnbDo6U2FtcGxlclR5cGVUb1RleHR1cmVU
eXBlKGxpbmtlZFVuaWZvcm0udHlwZSk7Ci0gICAgICAgIHNhbXBsZXJCaW5kaW5nLmJvdW5kVGV4
dHVyZVVuaXRzLnJlc2l6ZShsaW5rZWRVbmlmb3JtLmVsZW1lbnRDb3VudCgpLCAwKTsKLSAgICAg
ICAgbVNhbXBsZXJCaW5kaW5ncy5wdXNoX2JhY2soc2FtcGxlckJpbmRpbmcpOworICAgIGlmICht
V29ya2Fyb3VuZHMuYWx3YXlzQ2FsbFVzZVByb2dyYW1BZnRlckxpbmspCisgICAgeworICAgICAg
ICBtU3RhdGVNYW5hZ2VyLT5mb3JjZVVzZVByb2dyYW0obVByb2dyYW1JRCk7CiAgICAgfQogCisg
ICAgcG9zdExpbmsoKTsKKwogICAgIHJldHVybiBMaW5rUmVzdWx0KHRydWUsIGdsOjpFcnJvcihH
TF9OT19FUlJPUikpOwogfQogCkBAIC0yMzEsNyArMjE1LDcgQEAgdm9pZCBQcm9ncmFtR0w6OnNl
dFVuaWZvcm0xaXYoR0xpbnQgbG9jYQogICAgIG1TdGF0ZU1hbmFnZXItPnVzZVByb2dyYW0obVBy
b2dyYW1JRCk7CiAgICAgbUZ1bmN0aW9ucy0+dW5pZm9ybTFpdih1bmlMb2MobG9jYXRpb24pLCBj
b3VudCwgdik7CiAKLSAgICBjb25zdCBnbDo6VmFyaWFibGVMb2NhdGlvbiAmbG9jYXRpb25FbnRy
eSA9IG1EYXRhLmdldFVuaWZvcm1Mb2NhdGlvbnMoKVtsb2NhdGlvbl07CisgICAgY29uc3QgZ2w6
OlZhcmlhYmxlTG9jYXRpb24gJmxvY2F0aW9uRW50cnkgPSBtU3RhdGUuZ2V0VW5pZm9ybUxvY2F0
aW9ucygpW2xvY2F0aW9uXTsKIAogICAgIHNpemVfdCBzYW1wbGVySW5kZXggPSBtVW5pZm9ybUlu
ZGV4VG9TYW1wbGVySW5kZXhbbG9jYXRpb25FbnRyeS5pbmRleF07CiAgICAgaWYgKHNhbXBsZXJJ
bmRleCAhPSBHTF9JTlZBTElEX0lOREVYKQpAQCAtMjY1LDcgKzI0OSw3IEBAIHZvaWQgUHJvZ3Jh
bUdMOjpzZXRVbmlmb3JtNGl2KEdMaW50IGxvY2EKIHZvaWQgUHJvZ3JhbUdMOjpzZXRVbmlmb3Jt
MXVpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2KQogewog
ICAgIG1TdGF0ZU1hbmFnZXItPnVzZVByb2dyYW0obVByb2dyYW1JRCk7Ci0gICAgbUZ1bmN0aW9u
cy0+dW5pZm9ybTF1aXYobG9jYXRpb24sIGNvdW50LCB2KTsKKyAgICBtRnVuY3Rpb25zLT51bmlm
b3JtMXVpdih1bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdik7CiB9CiAKIHZvaWQgUHJvZ3JhbUdM
OjpzZXRVbmlmb3JtMnVpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1
aW50ICp2KQpAQCAtMzQ1LDggKzMyOSw4IEBAIHZvaWQgUHJvZ3JhbUdMOjpzZXRVbmlmb3JtQmxv
Y2tCaW5kaW5nKEcKICAgICAvLyBMYXp5IGluaXQKICAgICBpZiAobVVuaWZvcm1CbG9ja1JlYWxM
b2NhdGlvbk1hcC5lbXB0eSgpKQogICAgIHsKLSAgICAgICAgbVVuaWZvcm1CbG9ja1JlYWxMb2Nh
dGlvbk1hcC5yZXNlcnZlKG1EYXRhLmdldFVuaWZvcm1CbG9ja3MoKS5zaXplKCkpOwotICAgICAg
ICBmb3IgKGNvbnN0IGdsOjpVbmlmb3JtQmxvY2sgJnVuaWZvcm1CbG9jayA6IG1EYXRhLmdldFVu
aWZvcm1CbG9ja3MoKSkKKyAgICAgICAgbVVuaWZvcm1CbG9ja1JlYWxMb2NhdGlvbk1hcC5yZXNl
cnZlKG1TdGF0ZS5nZXRVbmlmb3JtQmxvY2tzKCkuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChjb25z
dCBnbDo6VW5pZm9ybUJsb2NrICZ1bmlmb3JtQmxvY2sgOiBtU3RhdGUuZ2V0VW5pZm9ybUJsb2Nr
cygpKQogICAgICAgICB7CiAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmbmFtZVdpdGhJ
bmRleCA9IHVuaWZvcm1CbG9jay5uYW1lV2l0aEFycmF5SW5kZXgoKTsKICAgICAgICAgICAgIEdM
dWludCBibG9ja0luZGV4ID0gbUZ1bmN0aW9ucy0+Z2V0VW5pZm9ybUJsb2NrSW5kZXgobVByb2dy
YW1JRCwgbmFtZVdpdGhJbmRleC5jX3N0cigpKTsKQEAgLTM2MSwxNCArMzQ1LDYgQEAgdm9pZCBQ
cm9ncmFtR0w6OnNldFVuaWZvcm1CbG9ja0JpbmRpbmcoRwogICAgIH0KIH0KIAotdm9pZCBQcm9n
cmFtR0w6OnJlc2V0KCkKLXsKLSAgICBtVW5pZm9ybVJlYWxMb2NhdGlvbk1hcC5jbGVhcigpOwot
ICAgIG1Vbmlmb3JtQmxvY2tSZWFsTG9jYXRpb25NYXAuY2xlYXIoKTsKLSAgICBtU2FtcGxlckJp
bmRpbmdzLmNsZWFyKCk7Ci0gICAgbVVuaWZvcm1JbmRleFRvU2FtcGxlckluZGV4LmNsZWFyKCk7
Ci19Ci0KIEdMdWludCBQcm9ncmFtR0w6OmdldFByb2dyYW1JRCgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1Qcm9ncmFtSUQ7CkBAIC00MjUsNCArNDAxLDE4OCBAQCBib29sIFByb2dyYW1HTDo6Z2V0
VW5pZm9ybUJsb2NrTWVtYmVySW5mCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgUHJvZ3Jh
bUdMOjpzZXRQYXRoRnJhZ21lbnRJbnB1dEdlbihjb25zdCBzdGQ6OnN0cmluZyAmaW5wdXROYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBnZW5Nb2Rl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGNvbXBvbmVu
dHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9h
dCAqY29lZmZzKQoreworICAgIEFTU0VSVChtRW5hYmxlUGF0aFJlbmRlcmluZyk7CisKKyAgICBm
b3IgKGNvbnN0IGF1dG8gJmlucHV0IDogbVBhdGhSZW5kZXJpbmdGcmFnbWVudElucHV0cykKKyAg
ICB7CisgICAgICAgIGlmIChpbnB1dC5uYW1lID09IGlucHV0TmFtZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgbUZ1bmN0aW9ucy0+cHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuTlYobVByb2dy
YW1JRCwgaW5wdXQubG9jYXRpb24sIGdlbk1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzLCBjb2VmZnMpOworICAgICAg
ICAgICAgQVNTRVJUKG1GdW5jdGlvbnMtPmdldEVycm9yKCkgPT0gR0xfTk9fRVJST1IpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCit9CisKK3ZvaWQgUHJvZ3JhbUdM
OjpwcmVMaW5rKCkKK3sKKyAgICAvLyBSZXNldCB0aGUgcHJvZ3JhbSBzdGF0ZQorICAgIG1Vbmlm
b3JtUmVhbExvY2F0aW9uTWFwLmNsZWFyKCk7CisgICAgbVVuaWZvcm1CbG9ja1JlYWxMb2NhdGlv
bk1hcC5jbGVhcigpOworICAgIG1TYW1wbGVyQmluZGluZ3MuY2xlYXIoKTsKKyAgICBtVW5pZm9y
bUluZGV4VG9TYW1wbGVySW5kZXguY2xlYXIoKTsKKyAgICBtUGF0aFJlbmRlcmluZ0ZyYWdtZW50
SW5wdXRzLmNsZWFyKCk7Cit9CisKK2Jvb2wgUHJvZ3JhbUdMOjpjaGVja0xpbmtTdGF0dXMoZ2w6
OkluZm9Mb2cgJmluZm9Mb2cpCit7CisgICAgR0xpbnQgbGlua1N0YXR1cyA9IEdMX0ZBTFNFOwor
ICAgIG1GdW5jdGlvbnMtPmdldFByb2dyYW1pdihtUHJvZ3JhbUlELCBHTF9MSU5LX1NUQVRVUywg
JmxpbmtTdGF0dXMpOworICAgIGlmIChsaW5rU3RhdHVzID09IEdMX0ZBTFNFKQorICAgIHsKKyAg
ICAgICAgLy8gTGlua2luZyBmYWlsZWQsIHB1dCB0aGUgZXJyb3IgaW50byB0aGUgaW5mbyBsb2cK
KyAgICAgICAgR0xpbnQgaW5mb0xvZ0xlbmd0aCA9IDA7CisgICAgICAgIG1GdW5jdGlvbnMtPmdl
dFByb2dyYW1pdihtUHJvZ3JhbUlELCBHTF9JTkZPX0xPR19MRU5HVEgsICZpbmZvTG9nTGVuZ3Ro
KTsKKworICAgICAgICBzdGQ6OnN0cmluZyB3YXJuaW5nOworCisgICAgICAgIC8vIEluZm8gbG9n
IGxlbmd0aCBpbmNsdWRlcyB0aGUgbnVsbCB0ZXJtaW5hdG9yLCBzbyAxIG1lYW5zIHRoYXQgdGhl
IGluZm8gbG9nIGlzIGFuIGVtcHR5CisgICAgICAgIC8vIHN0cmluZy4KKyAgICAgICAgaWYgKGlu
Zm9Mb2dMZW5ndGggPiAxKQorICAgICAgICB7CisgICAgICAgICAgICBzdGQ6OnZlY3RvcjxjaGFy
PiBidWYoaW5mb0xvZ0xlbmd0aCk7CisgICAgICAgICAgICBtRnVuY3Rpb25zLT5nZXRQcm9ncmFt
SW5mb0xvZyhtUHJvZ3JhbUlELCBpbmZvTG9nTGVuZ3RoLCBudWxscHRyLCAmYnVmWzBdKTsKKwor
ICAgICAgICAgICAgbUZ1bmN0aW9ucy0+ZGVsZXRlUHJvZ3JhbShtUHJvZ3JhbUlEKTsKKyAgICAg
ICAgICAgIG1Qcm9ncmFtSUQgPSAwOworCisgICAgICAgICAgICBpbmZvTG9nIDw8IGJ1Zi5kYXRh
KCk7CisKKyAgICAgICAgICAgIHdhcm5pbmcgPSBGb3JtYXRTdHJpbmcoIlByb2dyYW0gbGluayBm
YWlsZWQgdW5leHBlY3RlZGx5OiAlcyIsIGJ1Zi5kYXRhKCkpOworICAgICAgICB9CisgICAgICAg
IGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgd2FybmluZyA9ICJQcm9ncmFtIGxpbmsgZmFp
bGVkIHVuZXhwZWN0ZWRseSB3aXRoIG5vIGluZm8gbG9nLiI7CisgICAgICAgIH0KKyAgICAgICAg
QU5HTEVQbGF0Zm9ybUN1cnJlbnQoKS0+bG9nV2FybmluZyh3YXJuaW5nLmNfc3RyKCkpOworICAg
ICAgICBUUkFDRSgiXG4lcyIsIHdhcm5pbmcuY19zdHIoKSk7CisKKyAgICAgICAgLy8gVE9ETywg
cmV0dXJuIEdMX09VVF9PRl9NRU1PUlkgb3IganVzdCBmYWlsIHRoZSBsaW5rPyBUaGlzIGlzIGFu
IHVuZXhwZWN0ZWQgY2FzZQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3ZvaWQgUHJvZ3JhbUdMOjpwb3N0TGluaygpCit7CisgICAgLy8gUXVl
cnkgdGhlIHVuaWZvcm0gaW5mb3JtYXRpb24KKyAgICBBU1NFUlQobVVuaWZvcm1SZWFsTG9jYXRp
b25NYXAuZW1wdHkoKSk7CisgICAgY29uc3QgYXV0byAmdW5pZm9ybUxvY2F0aW9ucyA9IG1TdGF0
ZS5nZXRVbmlmb3JtTG9jYXRpb25zKCk7CisgICAgY29uc3QgYXV0byAmdW5pZm9ybXMgPSBtU3Rh
dGUuZ2V0VW5pZm9ybXMoKTsKKyAgICBtVW5pZm9ybVJlYWxMb2NhdGlvbk1hcC5yZXNpemUodW5p
Zm9ybUxvY2F0aW9ucy5zaXplKCksIEdMX0lOVkFMSURfSU5ERVgpOworICAgIGZvciAoc2l6ZV90
IHVuaWZvcm1Mb2NhdGlvbiA9IDA7IHVuaWZvcm1Mb2NhdGlvbiA8IHVuaWZvcm1Mb2NhdGlvbnMu
c2l6ZSgpOyB1bmlmb3JtTG9jYXRpb24rKykKKyAgICB7CisgICAgICAgIGNvbnN0IGF1dG8gJmVu
dHJ5ID0gdW5pZm9ybUxvY2F0aW9uc1t1bmlmb3JtTG9jYXRpb25dOworICAgICAgICBpZiAoIWVu
dHJ5LnVzZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisK
KyAgICAgICAgLy8gRnJvbSB0aGUgc3BlYzoKKyAgICAgICAgLy8gIkxvY2F0aW9ucyBmb3Igc2Vx
dWVudGlhbCBhcnJheSBpbmRpY2VzIGFyZSBub3QgcmVxdWlyZWQgdG8gYmUgc2VxdWVudGlhbC4i
CisgICAgICAgIGNvbnN0IGdsOjpMaW5rZWRVbmlmb3JtICZ1bmlmb3JtID0gdW5pZm9ybXNbZW50
cnkuaW5kZXhdOworICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBmdWxsTmFtZVN0cjsKKyAgICAg
ICAgZnVsbE5hbWVTdHIgPDwgdW5pZm9ybS5uYW1lOworICAgICAgICBpZiAodW5pZm9ybS5pc0Fy
cmF5KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZ1bGxOYW1lU3RyIDw8ICJbIiA8PCBlbnRy
eS5lbGVtZW50IDw8ICJdIjsKKyAgICAgICAgfQorICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAm
ZnVsbE5hbWUgPSBmdWxsTmFtZVN0ci5zdHIoKTsKKworICAgICAgICBHTGludCByZWFsTG9jYXRp
b24gPSBtRnVuY3Rpb25zLT5nZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW1JRCwgZnVsbE5hbWUu
Y19zdHIoKSk7CisgICAgICAgIG1Vbmlmb3JtUmVhbExvY2F0aW9uTWFwW3VuaWZvcm1Mb2NhdGlv
bl0gPSByZWFsTG9jYXRpb247CisgICAgfQorCisgICAgbVVuaWZvcm1JbmRleFRvU2FtcGxlcklu
ZGV4LnJlc2l6ZShtU3RhdGUuZ2V0VW5pZm9ybXMoKS5zaXplKCksIEdMX0lOVkFMSURfSU5ERVgp
OworCisgICAgZm9yIChzaXplX3QgdW5pZm9ybUlkID0gMDsgdW5pZm9ybUlkIDwgdW5pZm9ybXMu
c2l6ZSgpOyArK3VuaWZvcm1JZCkKKyAgICB7CisgICAgICAgIGNvbnN0IGdsOjpMaW5rZWRVbmlm
b3JtICZsaW5rZWRVbmlmb3JtID0gdW5pZm9ybXNbdW5pZm9ybUlkXTsKKworICAgICAgICBpZiAo
IWxpbmtlZFVuaWZvcm0uaXNTYW1wbGVyKCkgfHwgIWxpbmtlZFVuaWZvcm0uc3RhdGljVXNlKQor
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgbVVuaWZvcm1JbmRleFRvU2FtcGxlcklu
ZGV4W3VuaWZvcm1JZF0gPSBtU2FtcGxlckJpbmRpbmdzLnNpemUoKTsKKworICAgICAgICAvLyBJ
ZiB1bmlmb3JtIGlzIGEgc2FtcGxlciB0eXBlLCBpbnNlcnQgaXQgaW50byB0aGUgbVNhbXBsZXJC
aW5kaW5ncyBhcnJheQorICAgICAgICBTYW1wbGVyQmluZGluZ0dMIHNhbXBsZXJCaW5kaW5nOwor
ICAgICAgICBzYW1wbGVyQmluZGluZy50ZXh0dXJlVHlwZSA9IGdsOjpTYW1wbGVyVHlwZVRvVGV4
dHVyZVR5cGUobGlua2VkVW5pZm9ybS50eXBlKTsKKyAgICAgICAgc2FtcGxlckJpbmRpbmcuYm91
bmRUZXh0dXJlVW5pdHMucmVzaXplKGxpbmtlZFVuaWZvcm0uZWxlbWVudENvdW50KCksIDApOwor
ICAgICAgICBtU2FtcGxlckJpbmRpbmdzLnB1c2hfYmFjayhzYW1wbGVyQmluZGluZyk7CisgICAg
fQorCisgICAgLy8gRGlzY292ZXIgQ0hST01JVU1fcGF0aF9yZW5kZXJpbmcgZnJhZ21lbnQgaW5w
dXRzIGlmIGVuYWJsZWQuCisgICAgaWYgKCFtRW5hYmxlUGF0aFJlbmRlcmluZykKKyAgICAgICAg
cmV0dXJuOworCisgICAgR0xpbnQgbnVtRnJhZ21lbnRJbnB1dHMgPSAwOworICAgIG1GdW5jdGlv
bnMtPmdldFByb2dyYW1JbnRlcmZhY2VpdihtUHJvZ3JhbUlELCBHTF9GUkFHTUVOVF9JTlBVVF9O
ViwgR0xfQUNUSVZFX1JFU09VUkNFUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJm51bUZyYWdtZW50SW5wdXRzKTsKKyAgICBpZiAobnVtRnJhZ21lbnRJbnB1dHMgPD0g
MCkKKyAgICAgICAgcmV0dXJuOworCisgICAgR0xpbnQgbWF4TmFtZUxlbmd0aCA9IDA7CisgICAg
bUZ1bmN0aW9ucy0+Z2V0UHJvZ3JhbUludGVyZmFjZWl2KG1Qcm9ncmFtSUQsIEdMX0ZSQUdNRU5U
X0lOUFVUX05WLCBHTF9NQVhfTkFNRV9MRU5HVEgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZtYXhOYW1lTGVuZ3RoKTsKKyAgICBBU1NFUlQobWF4TmFtZUxlbmd0aCk7
CisKKyAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgbnVtRnJhZ21lbnRJbnB1dHM7ICsraSkKKyAg
ICB7CisgICAgICAgIHN0ZDo6c3RyaW5nIG5hbWU7CisgICAgICAgIG5hbWUucmVzaXplKG1heE5h
bWVMZW5ndGgpOworCisgICAgICAgIEdMc2l6ZWkgbmFtZUxlbiA9IDA7CisgICAgICAgIG1GdW5j
dGlvbnMtPmdldFByb2dyYW1SZXNvdXJjZU5hbWUobVByb2dyYW1JRCwgR0xfRlJBR01FTlRfSU5Q
VVRfTlYsIGksIG1heE5hbWVMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJm5hbWVMZW4sICZuYW1lWzBdKTsKKyAgICAgICAgbmFtZS5yZXNpemUobmFt
ZUxlbik7CisKKyAgICAgICAgLy8gSWdub3JlIGJ1aWx0LWlucworICAgICAgICBpZiAoYW5nbGU6
OkJlZ2luc1dpdGgobmFtZSwgImdsXyIpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgY29uc3QgR0xlbnVtIGtRdWVyeVByb3BlcnRpZXNbXSA9IHtHTF9MT0NBVElPTiwgR0xfQVJS
QVlfU0laRX07CisgICAgICAgIEdMaW50IHF1ZXJ5UmVzdWx0c1tBcnJheVNpemUoa1F1ZXJ5UHJv
cGVydGllcyldOworICAgICAgICBHTHNpemVpIHF1ZXJ5TGVuZ3RoID0gMDsKKworICAgICAgICBt
RnVuY3Rpb25zLT5nZXRQcm9ncmFtUmVzb3VyY2VpdigKKyAgICAgICAgICAgIG1Qcm9ncmFtSUQs
IEdMX0ZSQUdNRU5UX0lOUFVUX05WLCBpLCBzdGF0aWNfY2FzdDxHTHNpemVpPihBcnJheVNpemUo
a1F1ZXJ5UHJvcGVydGllcykpLAorICAgICAgICAgICAga1F1ZXJ5UHJvcGVydGllcywgc3RhdGlj
X2Nhc3Q8R0xzaXplaT4oQXJyYXlTaXplKHF1ZXJ5UmVzdWx0cykpLCAmcXVlcnlMZW5ndGgsCisg
ICAgICAgICAgICBxdWVyeVJlc3VsdHMpOworCisgICAgICAgIEFTU0VSVChxdWVyeUxlbmd0aCA9
PSBzdGF0aWNfY2FzdDxHTHNpemVpPihBcnJheVNpemUoa1F1ZXJ5UHJvcGVydGllcykpKTsKKwor
ICAgICAgICBQYXRoUmVuZGVyaW5nRnJhZ21lbnRJbnB1dCBiYXNlRWxlbWVudElucHV0OworICAg
ICAgICBiYXNlRWxlbWVudElucHV0Lm5hbWUgICAgID0gbmFtZTsKKyAgICAgICAgYmFzZUVsZW1l
bnRJbnB1dC5sb2NhdGlvbiA9IHF1ZXJ5UmVzdWx0c1swXTsKKyAgICAgICAgbVBhdGhSZW5kZXJp
bmdGcmFnbWVudElucHV0cy5wdXNoX2JhY2soc3RkOjptb3ZlKGJhc2VFbGVtZW50SW5wdXQpKTsK
KworICAgICAgICAvLyBJZiB0aGUgaW5wdXQgaXMgYW4gYXJyYXkgaXQncyBkZW5vdGVkIGJ5IFsw
XSBzdWZmaXggb24gdGhlIHZhcmlhYmxlCisgICAgICAgIC8vIG5hbWUuIFdlJ2xsIHRoZW4gY3Jl
YXRlIGFuIGVudHJ5IHBlciBlYWNoIGFycmF5IGluZGV4IHdoZXJlIGluZGV4ID4gMAorICAgICAg
ICBpZiAoYW5nbGU6OkVuZHNXaXRoKG5hbWUsICJbMF0iKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgLy8gZHJvcCB0aGUgc3VmZml4CisgICAgICAgICAgICBuYW1lLnJlc2l6ZShuYW1lLnNpemUo
KSAtIDMpOworCisgICAgICAgICAgICBjb25zdCBhdXRvIGFycmF5U2l6ZSAgICA9IHF1ZXJ5UmVz
dWx0c1sxXTsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8gYmFzZUxvY2F0aW9uID0gcXVlcnlSZXN1
bHRzWzBdOworCisgICAgICAgICAgICBmb3IgKEdMaW50IGFycmF5SW5kZXggPSAxOyBhcnJheUlu
ZGV4IDwgYXJyYXlTaXplOyArK2FycmF5SW5kZXgpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgUGF0aFJlbmRlcmluZ0ZyYWdtZW50SW5wdXQgYXJyYXlFbGVtZW50SW5wdXQ7CisgICAg
ICAgICAgICAgICAgYXJyYXlFbGVtZW50SW5wdXQubmFtZSAgICAgPSBuYW1lICsgIlsiICsgVG9T
dHJpbmcoYXJyYXlJbmRleCkgKyAiXSI7CisgICAgICAgICAgICAgICAgYXJyYXlFbGVtZW50SW5w
dXQubG9jYXRpb24gPSBiYXNlTG9jYXRpb24gKyBhcnJheUluZGV4OworICAgICAgICAgICAgICAg
IG1QYXRoUmVuZGVyaW5nRnJhZ21lbnRJbnB1dHMucHVzaF9iYWNrKHN0ZDo6bW92ZShhcnJheUVs
ZW1lbnRJbnB1dCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCiB9ICAv
LyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9Qcm9ncmFtR0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUHJvZ3JhbUdMLmgJKHJldmlzaW9uIDIw
NzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9Qcm9ncmFtR0wuaAkod29ya2luZyBjb3B5KQpAQCAtOSw2ICs5LDkgQEAKICNpZm5kZWYgTElC
QU5HTEVfUkVOREVSRVJfR0xfUFJPR1JBTUdMX0hfCiAjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVS
X0dMX1BST0dSQU1HTF9IXwogCisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4K
KwogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1dvcmthcm91bmRzR0wuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9Qcm9ncmFtSW1wbC5oIgogCkBAIC0yNywxNyArMzAsMTgg
QEAgc3RydWN0IFNhbXBsZXJCaW5kaW5nR0wKIGNsYXNzIFByb2dyYW1HTCA6IHB1YmxpYyBQcm9n
cmFtSW1wbAogewogICBwdWJsaWM6Ci0gICAgUHJvZ3JhbUdMKGNvbnN0IGdsOjpQcm9ncmFtOjpE
YXRhICZkYXRhLAorICAgIFByb2dyYW1HTChjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZkYXRhLAog
ICAgICAgICAgICAgICBjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLAogICAgICAgICAgICAg
ICBjb25zdCBXb3JrYXJvdW5kc0dMICZ3b3JrYXJvdW5kcywKLSAgICAgICAgICAgICAgU3RhdGVN
YW5hZ2VyR0wgKnN0YXRlTWFuYWdlcik7CisgICAgICAgICAgICAgIFN0YXRlTWFuYWdlckdMICpz
dGF0ZU1hbmFnZXIsCisgICAgICAgICAgICAgIGJvb2wgZW5hYmxlUGF0aFJlbmRlcmluZyk7CiAg
ICAgflByb2dyYW1HTCgpIG92ZXJyaWRlOwogCiAgICAgTGlua1Jlc3VsdCBsb2FkKGdsOjpJbmZv
TG9nICZpbmZvTG9nLCBnbDo6QmluYXJ5SW5wdXRTdHJlYW0gKnN0cmVhbSkgb3ZlcnJpZGU7CiAg
ICAgZ2w6OkVycm9yIHNhdmUoZ2w6OkJpbmFyeU91dHB1dFN0cmVhbSAqc3RyZWFtKSBvdmVycmlk
ZTsKICAgICB2b2lkIHNldEJpbmFyeVJldHJpZXZhYmxlSGludChib29sIHJldHJpZXZhYmxlKSBv
dmVycmlkZTsKIAotICAgIExpbmtSZXN1bHQgbGluayhjb25zdCBnbDo6RGF0YSAmZGF0YSwgZ2w6
OkluZm9Mb2cgJmluZm9Mb2cpIG92ZXJyaWRlOworICAgIExpbmtSZXN1bHQgbGluayhjb25zdCBn
bDo6Q29udGV4dFN0YXRlICZkYXRhLCBnbDo6SW5mb0xvZyAmaW5mb0xvZykgb3ZlcnJpZGU7CiAg
ICAgR0xib29sZWFuIHZhbGlkYXRlKGNvbnN0IGdsOjpDYXBzICZjYXBzLCBnbDo6SW5mb0xvZyAq
aW5mb0xvZykgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldFVuaWZvcm0xZnYoR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpIG92ZXJyaWRlOwpAQCAtNjgsMTEg
KzcyLDE4IEBAIGNsYXNzIFByb2dyYW1HTCA6IHB1YmxpYyBQcm9ncmFtSW1wbAogICAgIGJvb2wg
Z2V0VW5pZm9ybUJsb2NrTWVtYmVySW5mbyhjb25zdCBzdGQ6OnN0cmluZyAmbWVtYmVyVW5pZm9y
bU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoOjpCbG9ja01lbWJl
ckluZm8gKm1lbWJlckluZm9PdXQpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgdm9pZCBzZXRQYXRo
RnJhZ21lbnRJbnB1dEdlbihjb25zdCBzdGQ6OnN0cmluZyAmaW5wdXROYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGdlbk1vZGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBjb21wb25lbnRzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqY29lZmZzKSBvdmVycmlkZTsKKwogICAgIEdMdWlu
dCBnZXRQcm9ncmFtSUQoKSBjb25zdDsKICAgICBjb25zdCBzdGQ6OnZlY3RvcjxTYW1wbGVyQmlu
ZGluZ0dMPiAmZ2V0QXBwbGllZFNhbXBsZXJVbmlmb3JtcygpIGNvbnN0OwogCiAgIHByaXZhdGU6
Ci0gICAgdm9pZCByZXNldCgpOworICAgIHZvaWQgcHJlTGluaygpOworICAgIGJvb2wgY2hlY2tM
aW5rU3RhdHVzKGdsOjpJbmZvTG9nICZpbmZvTG9nKTsKKyAgICB2b2lkIHBvc3RMaW5rKCk7CiAK
ICAgICAvLyBIZWxwZXIgZnVuY3Rpb24sIG1ha2VzIGl0IHNpbXBsZXIgdG8gdHlwZS4KICAgICBH
TGludCB1bmlMb2MoR0xpbnQgZ2xMb2NhdGlvbikgY29uc3QgeyByZXR1cm4gbVVuaWZvcm1SZWFs
TG9jYXRpb25NYXBbZ2xMb2NhdGlvbl07IH0KQEAgLTkwLDYgKzEwMSwxNSBAQCBjbGFzcyBQcm9n
cmFtR0wgOiBwdWJsaWMgUHJvZ3JhbUltcGwKICAgICAvLyBBIG1hcCBmcm9tIGEgbURhdGEuZ2V0
VW5pZm9ybXMoKSBpbmRleCB0byBhIG1TYW1wbGVyQmluZGluZ3MgaW5kZXguCiAgICAgc3RkOjp2
ZWN0b3I8c2l6ZV90PiBtVW5pZm9ybUluZGV4VG9TYW1wbGVySW5kZXg7CiAKKyAgICBzdHJ1Y3Qg
UGF0aFJlbmRlcmluZ0ZyYWdtZW50SW5wdXQKKyAgICB7CisgICAgICAgIHN0ZDo6c3RyaW5nIG5h
bWU7CisgICAgICAgIEdMaW50IGxvY2F0aW9uOworICAgIH07CisgICAgc3RkOjp2ZWN0b3I8UGF0
aFJlbmRlcmluZ0ZyYWdtZW50SW5wdXQ+IG1QYXRoUmVuZGVyaW5nRnJhZ21lbnRJbnB1dHM7CisK
KyAgICBib29sIG1FbmFibGVQYXRoUmVuZGVyaW5nOworCiAgICAgR0x1aW50IG1Qcm9ncmFtSUQ7
CiB9OwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvUmVuZGVyYnVmZmVyR0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyYnVmZmVyR0wuaAkocmV2aXNpb24g
MjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL1JlbmRlcmJ1ZmZlckdMLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEyICszOCw2IEBAIGNs
YXNzIFJlbmRlcmJ1ZmZlckdMIDogcHVibGljIFJlbmRlcmJ1ZmYKIAogICAgIEdMdWludCBnZXRS
ZW5kZXJidWZmZXJJRCgpIGNvbnN0OwogCi0gICAgZ2w6OkVycm9yIGdldEF0dGFjaG1lbnRSZW5k
ZXJUYXJnZXQoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJBdHRh
Y2htZW50UmVuZGVyVGFyZ2V0ICoqcnRPdXQpIG92ZXJyaWRlCi0gICAgewotICAgICAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJOb3Qgc3VwcG9ydGVkIG9uIE9wZW5HTCIp
OwotICAgIH0KLQogICBwcml2YXRlOgogICAgIGNvbnN0IEZ1bmN0aW9uc0dMICptRnVuY3Rpb25z
OwogICAgIGNvbnN0IFdvcmthcm91bmRzR0wgJm1Xb3JrYXJvdW5kczsKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJlckdMLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvUmVuZGVyZXJHTC5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJlckdMLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIsMTUgKzEyLDE4IEBACiAKICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9BdHRyaWJ1dGVNYXAuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9E
YXRhLmgiCisjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dFN0YXRlLmgiCisjaW5jbHVkZSAibGli
QU5HTEUvUGF0aC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1N1cmZhY2UuaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9nbC9CbGl0R0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9nbC9CdWZmZXJHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL0NvbXBpbGVy
R0wuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9Db250ZXh0R0wuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9GZW5jZU5WR0wuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9nbC9GZW5jZVN5bmNHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2dsL0ZyYW1lYnVmZmVyR0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9GdW5j
dGlvbnNHTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1BhdGhHTC5oIgogI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1Byb2dyYW1HTC5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2dsL1F1ZXJ5R0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9n
bC9SZW5kZXJidWZmZXJHTC5oIgpAQCAtMzMsNiArMzYsMjQgQEAKICNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9nbC9WZXJ0ZXhBcnJheUdMLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZ2wvcmVuZGVyZXJnbF91dGlscy5oIgogCituYW1lc3BhY2UKK3sKKworc3RkOjp2ZWN0b3I8
R0x1aW50PiBHYXRoZXJQYXRocyhjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMp
Cit7CisgICAgc3RkOjp2ZWN0b3I8R0x1aW50PiByZXQ7CisgICAgcmV0LnJlc2VydmUocGF0aHMu
c2l6ZSgpKTsKKworICAgIGZvciAoY29uc3QgYXV0byAqcCA6IHBhdGhzKQorICAgIHsKKyAgICAg
ICAgY29uc3QgYXV0byAqcGF0aE9iaiA9IHJ4OjpHZXRJbXBsQXM8cng6OlBhdGhHTD4ocCk7Cisg
ICAgICAgIHJldC5wdXNoX2JhY2socGF0aE9iai0+Z2V0UGF0aElEKCkpOworICAgIH0KKyAgICBy
ZXR1cm4gcmV0OworfQorCit9ICAvLyBuYW1lc3BhY2UKKwogI2lmbmRlZiBOREVCVUcKIHN0YXRp
YyB2b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIExvZ0dMRGVidWdNZXNzYWdlKEdMZW51bSBzb3Vy
Y2UsIEdMZW51bSB0eXBlLCBHTHVpbnQgaWQsIEdMZW51bSBzZXZlcml0eSwgR0xzaXplaSBsZW5n
dGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGNoYXIgKm1lc3NhZ2UsIGNvbnN0IHZvaWQgKnVzZXJQYXJhbSkKQEAgLTgxLDE2ICsx
MDIsMTYgQEAgbmFtZXNwYWNlIHJ4CiB7CiAKIFJlbmRlcmVyR0w6OlJlbmRlcmVyR0woY29uc3Qg
RnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYk1h
cCkKLSAgICA6IFJlbmRlcmVyKCksCi0gICAgICBtTWF4U3VwcG9ydGVkRVNWZXJzaW9uKDAsIDAp
LAorICAgIDogbU1heFN1cHBvcnRlZEVTVmVyc2lvbigwLCAwKSwKICAgICAgIG1GdW5jdGlvbnMo
ZnVuY3Rpb25zKSwKICAgICAgIG1TdGF0ZU1hbmFnZXIobnVsbHB0ciksCiAgICAgICBtQmxpdHRl
cihudWxscHRyKSwKICAgICAgIG1IYXNEZWJ1Z091dHB1dChmYWxzZSksCi0gICAgICBtU2tpcERy
YXdDYWxscyhmYWxzZSkKKyAgICAgIG1Ta2lwRHJhd0NhbGxzKGZhbHNlKSwKKyAgICAgIG1DYXBz
SW5pdGlhbGl6ZWQoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1GdW5jdGlvbnMpOwotICAgIG1TdGF0
ZU1hbmFnZXIgPSBuZXcgU3RhdGVNYW5hZ2VyR0wobUZ1bmN0aW9ucywgZ2V0UmVuZGVyZXJDYXBz
KCkpOworICAgIG1TdGF0ZU1hbmFnZXIgPSBuZXcgU3RhdGVNYW5hZ2VyR0wobUZ1bmN0aW9ucywg
Z2V0TmF0aXZlQ2FwcygpKTsKICAgICBuYXRpdmVnbF9nbDo6R2VuZXJhdGVXb3JrYXJvdW5kcyht
RnVuY3Rpb25zLCAmbVdvcmthcm91bmRzKTsKICAgICBtQmxpdHRlciA9IG5ldyBCbGl0R0woZnVu
Y3Rpb25zLCBtV29ya2Fyb3VuZHMsIG1TdGF0ZU1hbmFnZXIpOwogCkBAIC0xMDEsNiArMTIyLDcg
QEAgUmVuZGVyZXJHTDo6UmVuZGVyZXJHTChjb25zdCBGdW5jdGlvbnNHTAogI2lmbmRlZiBOREVC
VUcKICAgICBpZiAobUhhc0RlYnVnT3V0cHV0KQogICAgIHsKKyAgICAgICAgbUZ1bmN0aW9ucy0+
ZW5hYmxlKEdMX0RFQlVHX09VVFBVVCk7CiAgICAgICAgIG1GdW5jdGlvbnMtPmVuYWJsZShHTF9E
RUJVR19PVVRQVVRfU1lOQ0hST05PVVMpOwogICAgICAgICBtRnVuY3Rpb25zLT5kZWJ1Z01lc3Nh
Z2VDb250cm9sKEdMX0RPTlRfQ0FSRSwgR0xfRE9OVF9DQVJFLCBHTF9ERUJVR19TRVZFUklUWV9I
SUdILCAwLCBudWxscHRyLCBHTF9UUlVFKTsKICAgICAgICAgbUZ1bmN0aW9ucy0+ZGVidWdNZXNz
YWdlQ29udHJvbChHTF9ET05UX0NBUkUsIEdMX0RPTlRfQ0FSRSwgR0xfREVCVUdfU0VWRVJJVFlf
TUVESVVNLCAwLCBudWxscHRyLCBHTF9UUlVFKTsKQEAgLTExNiw2ICsxMzgsMTcgQEAgUmVuZGVy
ZXJHTDo6UmVuZGVyZXJHTChjb25zdCBGdW5jdGlvbnNHTAogICAgIHsKICAgICAgICAgbVNraXBE
cmF3Q2FsbHMgPSB0cnVlOwogICAgIH0KKworICAgIGlmIChtV29ya2Fyb3VuZHMuaW5pdGlhbGl6
ZUN1cnJlbnRWZXJ0ZXhBdHRyaWJ1dGVzKQorICAgIHsKKyAgICAgICAgR0xpbnQgbWF4VmVydGV4
QXR0cmlicyA9IDA7CisgICAgICAgIG1GdW5jdGlvbnMtPmdldEludGVnZXJ2KEdMX01BWF9WRVJU
RVhfQVRUUklCUywgJm1heFZlcnRleEF0dHJpYnMpOworCisgICAgICAgIGZvciAoR0xpbnQgaSA9
IDA7IGkgPCBtYXhWZXJ0ZXhBdHRyaWJzOyArK2kpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1G
dW5jdGlvbnMtPnZlcnRleEF0dHJpYjRmKGksIDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOworICAg
ICAgICB9CisgICAgfQogfQogCiBSZW5kZXJlckdMOjp+UmVuZGVyZXJHTCgpCkBAIC0xNTEsNjYg
KzE4NCw1NiBAQCBnbDo6RXJyb3IgUmVuZGVyZXJHTDo6ZmluaXNoKCkKICAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotZ2w6OkVycm9yIFJlbmRlcmVyR0w6OmRyYXdBcnJh
eXMoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXpl
aSBjb3VudCkKK2dsOjpFcnJvciBSZW5kZXJlckdMOjpkcmF3QXJyYXlzKGNvbnN0IGdsOjpDb250
ZXh0U3RhdGUgJmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
bW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZpcnN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCkKIHsKLSAgICBnbDo6
RXJyb3IgZXJyb3IgPSBtU3RhdGVNYW5hZ2VyLT5zZXREcmF3QXJyYXlzU3RhdGUoZGF0YSwgZmly
c3QsIGNvdW50LCAwKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkobVN0YXRlTWFuYWdlci0+c2V0RHJh
d0FycmF5c1N0YXRlKGRhdGEsIGZpcnN0LCBjb3VudCwgMCkpOwogCiAgICAgaWYgKCFtU2tpcERy
YXdDYWxscykKICAgICB7CiAgICAgICAgIG1GdW5jdGlvbnMtPmRyYXdBcnJheXMobW9kZSwgZmly
c3QsIGNvdW50KTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsK
KyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIFJlbmRlcmVyR0w6OmRy
YXdBcnJheXNJbnN0YW5jZWQoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCitnbDo6RXJyb3IgUmVuZGVy
ZXJHTDo6ZHJhd0FycmF5c0luc3RhbmNlZChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBmaXJzdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNl
Q291bnQpCiB7Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gbVN0YXRlTWFuYWdlci0+c2V0RHJhd0Fy
cmF5c1N0YXRlKGRhdGEsIGZpcnN0LCBjb3VudCwgaW5zdGFuY2VDb3VudCk7Ci0gICAgaWYgKGVy
cm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAg
QU5HTEVfVFJZKG1TdGF0ZU1hbmFnZXItPnNldERyYXdBcnJheXNTdGF0ZShkYXRhLCBmaXJzdCwg
Y291bnQsIGluc3RhbmNlQ291bnQpKTsKIAogICAgIGlmICghbVNraXBEcmF3Q2FsbHMpCiAgICAg
ewogICAgICAgICBtRnVuY3Rpb25zLT5kcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBj
b3VudCwgaW5zdGFuY2VDb3VudCk7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9O
T19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJvciBSZW5k
ZXJlckdMOjpkcmF3RWxlbWVudHMoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCitnbDo6RXJyb3IgUmVu
ZGVyZXJHTDo6ZHJhd0VsZW1lbnRzKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkKIHsKLSAgICBjb25z
dCBHTHZvaWQgKmRyYXdJbmRleFBvaW50ZXIgPSBudWxscHRyOwotICAgIGdsOjpFcnJvciBlcnJv
ciA9Ci0gICAgICAgIG1TdGF0ZU1hbmFnZXItPnNldERyYXdFbGVtZW50c1N0YXRlKGRhdGEsIGNv
dW50LCB0eXBlLCBpbmRpY2VzLCAwLCAmZHJhd0luZGV4UG9pbnRlcik7Ci0gICAgaWYgKGVycm9y
LmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgY29u
c3QgR0x2b2lkICpkcmF3SW5kZXhQdHIgPSBudWxscHRyOworICAgIEFOR0xFX1RSWShtU3RhdGVN
YW5hZ2VyLT5zZXREcmF3RWxlbWVudHNTdGF0ZShkYXRhLCBjb3VudCwgdHlwZSwgaW5kaWNlcywg
MCwgJmRyYXdJbmRleFB0cikpOwogCiAgICAgaWYgKCFtU2tpcERyYXdDYWxscykKICAgICB7Ci0g
ICAgICAgIG1GdW5jdGlvbnMtPmRyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwgdHlwZSwgZHJhd0lu
ZGV4UG9pbnRlcik7CisgICAgICAgIG1GdW5jdGlvbnMtPmRyYXdFbGVtZW50cyhtb2RlLCBjb3Vu
dCwgdHlwZSwgZHJhd0luZGV4UHRyKTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIFJl
bmRlcmVyR0w6OmRyYXdFbGVtZW50c0luc3RhbmNlZChjb25zdCBnbDo6RGF0YSAmZGF0YSwKK2ds
OjpFcnJvciBSZW5kZXJlckdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoY29uc3QgZ2w6OkNvbnRl
eHRTdGF0ZSAmZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0eXBlLApAQCAtMjE5LDIyICsyNDIsMTggQEAgZ2w6OkVycm9yIFJlbmRl
cmVyR0w6OmRyYXdFbGVtZW50c0luc3RhbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkKIHsKICAgICBj
b25zdCBHTHZvaWQgKmRyYXdJbmRleFBvaW50ZXIgPSBudWxscHRyOwotICAgIGdsOjpFcnJvciBl
cnJvciA9IG1TdGF0ZU1hbmFnZXItPnNldERyYXdFbGVtZW50c1N0YXRlKGRhdGEsIGNvdW50LCB0
eXBlLCBpbmRpY2VzLCBpbnN0YW5jZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRyYXdJbmRleFBvaW50ZXIpOwotICAgIGlmIChl
cnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAg
IEFOR0xFX1RSWShtU3RhdGVNYW5hZ2VyLT5zZXREcmF3RWxlbWVudHNTdGF0ZShkYXRhLCBjb3Vu
dCwgdHlwZSwgaW5kaWNlcywgaW5zdGFuY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmZHJhd0luZGV4UG9pbnRlcikpOwogCiAgICAgaWYgKCFt
U2tpcERyYXdDYWxscykKICAgICB7CiAgICAgICAgIG1GdW5jdGlvbnMtPmRyYXdFbGVtZW50c0lu
c3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwgZHJhd0luZGV4UG9pbnRlciwgaW5zdGFuY2VzKTsK
ICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4g
Z2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIFJlbmRlcmVyR0w6OmRyYXdSYW5nZUVsZW1l
bnRzKGNvbnN0IGdsOjpEYXRhICZkYXRhLAorZ2w6OkVycm9yIFJlbmRlcmVyR0w6OmRyYXdSYW5n
ZUVsZW1lbnRzKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBlbmQsCkBAIC0yNDQsMTIgKzI2Myw4IEBAIGdsOjpF
cnJvciBSZW5kZXJlckdMOjpkcmF3UmFuZ2VFbGVtZW50cygKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkKIHsK
ICAgICBjb25zdCBHTHZvaWQgKmRyYXdJbmRleFBvaW50ZXIgPSBudWxscHRyOwotICAgIGdsOjpF
cnJvciBlcnJvciA9Ci0gICAgICAgIG1TdGF0ZU1hbmFnZXItPnNldERyYXdFbGVtZW50c1N0YXRl
KGRhdGEsIGNvdW50LCB0eXBlLCBpbmRpY2VzLCAwLCAmZHJhd0luZGV4UG9pbnRlcik7Ci0gICAg
aWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9
CisgICAgQU5HTEVfVFJZKAorICAgICAgICBtU3RhdGVNYW5hZ2VyLT5zZXREcmF3RWxlbWVudHNT
dGF0ZShkYXRhLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgMCwgJmRyYXdJbmRleFBvaW50ZXIpKTsK
IAogICAgIGlmICghbVNraXBEcmF3Q2FsbHMpCiAgICAgewpAQCAtMjU5LDcwICsyNzQsMTc3IEBA
IGdsOjpFcnJvciBSZW5kZXJlckdMOjpkcmF3UmFuZ2VFbGVtZW50cygKICAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotQ29tcGlsZXJJbXBsICpSZW5kZXJlckdMOjpjcmVh
dGVDb21waWxlcigpCit2b2lkIFJlbmRlcmVyR0w6OnN0ZW5jaWxGaWxsUGF0aChjb25zdCBnbDo6
Q29udGV4dFN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpQYXRoICpwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGZpbGxNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1h
c2spCiB7Ci0gICAgcmV0dXJuIG5ldyBDb21waWxlckdMKG1GdW5jdGlvbnMpOworICAgIGNvbnN0
IGF1dG8gKnBhdGhPYmogPSBHZXRJbXBsQXM8UGF0aEdMPihwYXRoKTsKKworICAgIG1GdW5jdGlv
bnMtPnN0ZW5jaWxGaWxsUGF0aE5WKHBhdGhPYmotPmdldFBhdGhJRCgpLCBmaWxsTW9kZSwgbWFz
ayk7CisKKyAgICBBU1NFUlQobUZ1bmN0aW9ucy0+Z2V0RXJyb3IoKSA9PSBHTF9OT19FUlJPUik7
CiB9CiAKLVNoYWRlckltcGwgKlJlbmRlcmVyR0w6OmNyZWF0ZVNoYWRlcihjb25zdCBnbDo6U2hh
ZGVyOjpEYXRhICZkYXRhKQordm9pZCBSZW5kZXJlckdMOjpzdGVuY2lsU3Ryb2tlUGF0aChjb25z
dCBnbDo6Q29udGV4dFN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OlBhdGggKnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IHJlZmVyZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IG1hc2spCiB7Ci0gICAgcmV0dXJuIG5ldyBTaGFkZXJHTChkYXRhLCBtRnVuY3Rp
b25zLCBtV29ya2Fyb3VuZHMpOworICAgIGNvbnN0IGF1dG8gKnBhdGhPYmogPSBHZXRJbXBsQXM8
UGF0aEdMPihwYXRoKTsKKworICAgIG1GdW5jdGlvbnMtPnN0ZW5jaWxTdHJva2VQYXRoTlYocGF0
aE9iai0+Z2V0UGF0aElEKCksIHJlZmVyZW5jZSwgbWFzayk7CisKKyAgICBBU1NFUlQobUZ1bmN0
aW9ucy0+Z2V0RXJyb3IoKSA9PSBHTF9OT19FUlJPUik7CiB9CiAKLVByb2dyYW1JbXBsICpSZW5k
ZXJlckdMOjpjcmVhdGVQcm9ncmFtKGNvbnN0IGdsOjpQcm9ncmFtOjpEYXRhICZkYXRhKQordm9p
ZCBSZW5kZXJlckdMOjpjb3ZlckZpbGxQYXRoKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJnN0YXRl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQYXRoICpwYXRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpCiB7Ci0gICAg
cmV0dXJuIG5ldyBQcm9ncmFtR0woZGF0YSwgbUZ1bmN0aW9ucywgbVdvcmthcm91bmRzLCBtU3Rh
dGVNYW5hZ2VyKTsKKworICAgIGNvbnN0IGF1dG8gKnBhdGhPYmogPSBHZXRJbXBsQXM8UGF0aEdM
PihwYXRoKTsKKyAgICBtRnVuY3Rpb25zLT5jb3ZlckZpbGxQYXRoTlYocGF0aE9iai0+Z2V0UGF0
aElEKCksIGNvdmVyTW9kZSk7CisKKyAgICBBU1NFUlQobUZ1bmN0aW9ucy0+Z2V0RXJyb3IoKSA9
PSBHTF9OT19FUlJPUik7CiB9CiAKLUZyYW1lYnVmZmVySW1wbCAqUmVuZGVyZXJHTDo6Y3JlYXRl
RnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEYXRhICZkYXRhKQordm9pZCBSZW5k
ZXJlckdMOjpjb3ZlclN0cm9rZVBhdGgoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmc3RhdGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGF0aCAqcGF0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpCiB7Ci0gICAg
cmV0dXJuIG5ldyBGcmFtZWJ1ZmZlckdMKGRhdGEsIG1GdW5jdGlvbnMsIG1TdGF0ZU1hbmFnZXIs
IG1Xb3JrYXJvdW5kcywgZmFsc2UpOworICAgIGNvbnN0IGF1dG8gKnBhdGhPYmogPSBHZXRJbXBs
QXM8UGF0aEdMPihwYXRoKTsKKyAgICBtRnVuY3Rpb25zLT5jb3ZlclN0cm9rZVBhdGhOVihwYXRo
T2JqLT5nZXRQYXRoSUQoKSwgY292ZXJNb2RlKTsKKworICAgIEFTU0VSVChtRnVuY3Rpb25zLT5n
ZXRFcnJvcigpID09IEdMX05PX0VSUk9SKTsKIH0KIAotVGV4dHVyZUltcGwgKlJlbmRlcmVyR0w6
OmNyZWF0ZVRleHR1cmUoR0xlbnVtIHRhcmdldCkKK3ZvaWQgUmVuZGVyZXJHTDo6c3RlbmNpbFRo
ZW5Db3ZlckZpbGxQYXRoKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJnN0YXRlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBhdGggKnBhdGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1v
ZGUpCiB7Ci0gICAgcmV0dXJuIG5ldyBUZXh0dXJlR0wodGFyZ2V0LCBtRnVuY3Rpb25zLCBtV29y
a2Fyb3VuZHMsIG1TdGF0ZU1hbmFnZXIsIG1CbGl0dGVyKTsKKworICAgIGNvbnN0IGF1dG8gKnBh
dGhPYmogPSBHZXRJbXBsQXM8UGF0aEdMPihwYXRoKTsKKyAgICBtRnVuY3Rpb25zLT5zdGVuY2ls
VGhlbkNvdmVyRmlsbFBhdGhOVihwYXRoT2JqLT5nZXRQYXRoSUQoKSwgZmlsbE1vZGUsIG1hc2ss
IGNvdmVyTW9kZSk7CisKKyAgICBBU1NFUlQobUZ1bmN0aW9ucy0+Z2V0RXJyb3IoKSA9PSBHTF9O
T19FUlJPUik7CiB9CiAKLVJlbmRlcmJ1ZmZlckltcGwgKlJlbmRlcmVyR0w6OmNyZWF0ZVJlbmRl
cmJ1ZmZlcigpCit2b2lkIFJlbmRlcmVyR0w6OnN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoKGNv
bnN0IGdsOjpDb250ZXh0U3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGF0aCAqcGF0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSkKIHsKLSAg
ICByZXR1cm4gbmV3IFJlbmRlcmJ1ZmZlckdMKG1GdW5jdGlvbnMsIG1Xb3JrYXJvdW5kcywgbVN0
YXRlTWFuYWdlciwgZ2V0UmVuZGVyZXJUZXh0dXJlQ2FwcygpKTsKKworICAgIGNvbnN0IGF1dG8g
KnBhdGhPYmogPSBHZXRJbXBsQXM8UGF0aEdMPihwYXRoKTsKKyAgICBtRnVuY3Rpb25zLT5zdGVu
Y2lsVGhlbkNvdmVyU3Ryb2tlUGF0aE5WKHBhdGhPYmotPmdldFBhdGhJRCgpLCByZWZlcmVuY2Us
IG1hc2ssIGNvdmVyTW9kZSk7CisKKyAgICBBU1NFUlQobUZ1bmN0aW9ucy0+Z2V0RXJyb3IoKSA9
PSBHTF9OT19FUlJPUik7CiB9CiAKLUJ1ZmZlckltcGwgKlJlbmRlcmVyR0w6OmNyZWF0ZUJ1ZmZl
cigpCit2b2lkIFJlbmRlcmVyR0w6OmNvdmVyRmlsbFBhdGhJbnN0YW5jZWQoY29uc3QgZ2w6OkNv
bnRleHRTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3Jt
VmFsdWVzKQogewotICAgIHJldHVybiBuZXcgQnVmZmVyR0wobUZ1bmN0aW9ucywgbVN0YXRlTWFu
YWdlcik7Ci19CisgICAgY29uc3QgYXV0byAmcGF0aE9ianMgPSBHYXRoZXJQYXRocyhwYXRocyk7
CisKKyAgICBtRnVuY3Rpb25zLT5jb3ZlckZpbGxQYXRoSW5zdGFuY2VkTlYoc3RhdGljX2Nhc3Q8
R0xzaXplaT4ocGF0aE9ianMuc2l6ZSgpKSwgR0xfVU5TSUdORURfSU5ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGF0aE9ianNbMF0sIDAsIGNvdmVyTW9kZSwg
dHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHJhbnNmb3JtVmFsdWVzKTsKIAotVmVydGV4QXJyYXlJbXBsICpSZW5kZXJlckdMOjpjcmVhdGVW
ZXJ0ZXhBcnJheShjb25zdCBnbDo6VmVydGV4QXJyYXk6OkRhdGEgJmRhdGEpCisgICAgQVNTRVJU
KG1GdW5jdGlvbnMtPmdldEVycm9yKCkgPT0gR0xfTk9fRVJST1IpOworfQordm9pZCBSZW5kZXJl
ckdMOjpjb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWQoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmc3Rh
dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMp
CiB7Ci0gICAgcmV0dXJuIG5ldyBWZXJ0ZXhBcnJheUdMKGRhdGEsIG1GdW5jdGlvbnMsIG1TdGF0
ZU1hbmFnZXIpOworICAgIGNvbnN0IGF1dG8gJnBhdGhPYmpzID0gR2F0aGVyUGF0aHMocGF0aHMp
OworCisgICAgbUZ1bmN0aW9ucy0+Y292ZXJTdHJva2VQYXRoSW5zdGFuY2VkTlYoc3RhdGljX2Nh
c3Q8R0xzaXplaT4ocGF0aE9ianMuc2l6ZSgpKSwgR0xfVU5TSUdORURfSU5ULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwYXRoT2Jqc1swXSwgMCwgY292ZXJN
b2RlLCB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRyYW5zZm9ybVZhbHVlcyk7CisKKyAgICBBU1NFUlQobUZ1bmN0aW9ucy0+Z2V0RXJy
b3IoKSA9PSBHTF9OT19FUlJPUik7CiB9Cit2b2lkIFJlbmRlcmVyR0w6OnN0ZW5jaWxGaWxsUGF0
aEluc3RhbmNlZChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+
ICZwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBmaWxsTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCit7CisgICAgY29uc3QgYXV0byAm
cGF0aE9ianMgPSBHYXRoZXJQYXRocyhwYXRocyk7CisKKyAgICBtRnVuY3Rpb25zLT5zdGVuY2ls
RmlsbFBhdGhJbnN0YW5jZWROVihzdGF0aWNfY2FzdDxHTHNpemVpPihwYXRoT2Jqcy5zaXplKCkp
LCBHTF9VTlNJR05FRF9JTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJnBhdGhPYmpzWzBdLCAwLCBmaWxsTW9kZSwgbWFzaywgdHJhbnNmb3JtVHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1WYWx1ZXMp
OwogCi1RdWVyeUltcGwgKlJlbmRlcmVyR0w6OmNyZWF0ZVF1ZXJ5KEdMZW51bSB0eXBlKQorICAg
IEFTU0VSVChtRnVuY3Rpb25zLT5nZXRFcnJvcigpID09IEdMX05PX0VSUk9SKTsKK30KK3ZvaWQg
UmVuZGVyZXJHTDo6c3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWQoY29uc3QgZ2w6OkNvbnRleHRT
dGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KnRyYW5zZm9ybVZhbHVlcykKIHsKLSAgICByZXR1cm4gbmV3IFF1ZXJ5R0wodHlwZSwgbUZ1bmN0
aW9ucywgbVN0YXRlTWFuYWdlcik7CisgICAgY29uc3QgYXV0byAmcGF0aE9ianMgPSBHYXRoZXJQ
YXRocyhwYXRocyk7CisKKyAgICBtRnVuY3Rpb25zLT5zdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNl
ZE5WKHN0YXRpY19jYXN0PEdMc2l6ZWk+KHBhdGhPYmpzLnNpemUoKSksIEdMX1VOU0lHTkVEX0lO
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwYXRoT2Jq
c1swXSwgMCwgcmVmZXJlbmNlLCBtYXNrLCB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtVmFsdWVzKTsKKworICAgIEFT
U0VSVChtRnVuY3Rpb25zLT5nZXRFcnJvcigpID09IEdMX05PX0VSUk9SKTsKIH0KIAotRmVuY2VO
VkltcGwgKlJlbmRlcmVyR0w6OmNyZWF0ZUZlbmNlTlYoKQordm9pZCBSZW5kZXJlckdMOjpzdGVu
Y2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWQoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmc3Rh
dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxN
b2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykK
IHsKLSAgICByZXR1cm4gbmV3IEZlbmNlTlZHTChtRnVuY3Rpb25zKTsKLX0KKyAgICBjb25zdCBh
dXRvICZwYXRoT2JqcyA9IEdhdGhlclBhdGhzKHBhdGhzKTsKIAotRmVuY2VTeW5jSW1wbCAqUmVu
ZGVyZXJHTDo6Y3JlYXRlRmVuY2VTeW5jKCkKKyAgICBtRnVuY3Rpb25zLT5zdGVuY2lsVGhlbkNv
dmVyRmlsbFBhdGhJbnN0YW5jZWROVigKKyAgICAgICAgc3RhdGljX2Nhc3Q8R0xzaXplaT4ocGF0
aE9ianMuc2l6ZSgpKSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aE9ianNbMF0sIDAsIGZpbGxNb2Rl
LCBtYXNrLAorICAgICAgICBjb3Zlck1vZGUsIHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVl
cyk7CisKKyAgICBBU1NFUlQobUZ1bmN0aW9ucy0+Z2V0RXJyb3IoKSA9PSBHTF9OT19FUlJPUik7
Cit9Cit2b2lkIFJlbmRlcmVyR0w6OnN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2Vk
KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAq
PiAmcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFu
c2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCiB7Ci0gICAgcmV0dXJuIG5l
dyBGZW5jZVN5bmNHTChtRnVuY3Rpb25zKTsKKyAgICBjb25zdCBhdXRvICZwYXRoT2JqcyA9IEdh
dGhlclBhdGhzKHBhdGhzKTsKKworICAgIG1GdW5jdGlvbnMtPnN0ZW5jaWxUaGVuQ292ZXJTdHJv
a2VQYXRoSW5zdGFuY2VkTlYoCisgICAgICAgIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHBhdGhPYmpz
LnNpemUoKSksIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGhPYmpzWzBdLCAwLCByZWZlcmVuY2UsIG1h
c2ssCisgICAgICAgIGNvdmVyTW9kZSwgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzKTsK
KworICAgIEFTU0VSVChtRnVuY3Rpb25zLT5nZXRFcnJvcigpID09IEdMX05PX0VSUk9SKTsKIH0K
IAotVHJhbnNmb3JtRmVlZGJhY2tJbXBsICpSZW5kZXJlckdMOjpjcmVhdGVUcmFuc2Zvcm1GZWVk
YmFjaygpCitHTGVudW0gUmVuZGVyZXJHTDo6Z2V0UmVzZXRTdGF0dXMoKQogewotICAgIHJldHVy
biBuZXcgVHJhbnNmb3JtRmVlZGJhY2tHTChtRnVuY3Rpb25zLCBtU3RhdGVNYW5hZ2VyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRSZW5kZXJlckNhcHMoKS5tYXhUcmFu
c2Zvcm1GZWVkYmFja1NlcGFyYXRlQ29tcG9uZW50cyk7CisgICAgcmV0dXJuIG1GdW5jdGlvbnMt
PmdldEdyYXBoaWNzUmVzZXRTdGF0dXMoKTsKIH0KIAotU2FtcGxlckltcGwgKlJlbmRlcmVyR0w6
OmNyZWF0ZVNhbXBsZXIoKQorQ29udGV4dEltcGwgKlJlbmRlcmVyR0w6OmNyZWF0ZUNvbnRleHQo
Y29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmc3RhdGUpCiB7Ci0gICAgcmV0dXJuIG5ldyBTYW1wbGVy
R0wobUZ1bmN0aW9ucywgbVN0YXRlTWFuYWdlcik7CisgICAgcmV0dXJuIG5ldyBDb250ZXh0R0wo
c3RhdGUsIHRoaXMpOwogfQogCiB2b2lkIFJlbmRlcmVyR0w6Omluc2VydEV2ZW50TWFya2VyKEdM
c2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpCkBAIC0zNDEsMjkgKzQ2Myw2IEBAIHZv
aWQgUmVuZGVyZXJHTDo6cG9wR3JvdXBNYXJrZXIoKQogICAgIG1GdW5jdGlvbnMtPnBvcERlYnVn
R3JvdXAoKTsKIH0KIAotdm9pZCBSZW5kZXJlckdMOjpub3RpZnlEZXZpY2VMb3N0KCkKLXsKLSAg
ICBVTklNUExFTUVOVEVEKCk7Ci19Ci0KLWJvb2wgUmVuZGVyZXJHTDo6aXNEZXZpY2VMb3N0KCkg
Y29uc3QKLXsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGJvb2woKTsKLX0KLQot
Ym9vbCBSZW5kZXJlckdMOjp0ZXN0RGV2aWNlTG9zdCgpCi17Ci0gICAgVU5JTVBMRU1FTlRFRCgp
OwotICAgIHJldHVybiBib29sKCk7Ci19Ci0KLWJvb2wgUmVuZGVyZXJHTDo6dGVzdERldmljZVJl
c2V0dGFibGUoKQotewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gYm9vbCgpOwot
fQotCiBzdGQ6OnN0cmluZyBSZW5kZXJlckdMOjpnZXRWZW5kb3JTdHJpbmcoKSBjb25zdAogewog
ICAgIHJldHVybiBzdGQ6OnN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihtRnVu
Y3Rpb25zLT5nZXRTdHJpbmcoR0xfVkVORE9SKSkpOwpAQCAtNDAxLDcgKzUwMCw3IEBAIHN0ZDo6
c3RyaW5nIFJlbmRlcmVyR0w6OmdldFJlbmRlcmVyRGVzY3IKIGNvbnN0IGdsOjpWZXJzaW9uICZS
ZW5kZXJlckdMOjpnZXRNYXhTdXBwb3J0ZWRFU1ZlcnNpb24oKSBjb25zdAogewogICAgIC8vIEZv
cmNlIGdlbmVyYXRpb24gb2YgY2FwcwotICAgIGdldFJlbmRlcmVyQ2FwcygpOworICAgIGdldE5h
dGl2ZUNhcHMoKTsKIAogICAgIHJldHVybiBtTWF4U3VwcG9ydGVkRVNWZXJzaW9uOwogfQpAQCAt
NDEzLDExICs1MTIsNiBAQCB2b2lkIFJlbmRlcmVyR0w6OmdlbmVyYXRlQ2FwcyhnbDo6Q2FwcyAq
CiAgICAgbmF0aXZlZ2xfZ2w6OkdlbmVyYXRlQ2FwcyhtRnVuY3Rpb25zLCBvdXRDYXBzLCBvdXRU
ZXh0dXJlQ2Fwcywgb3V0RXh0ZW5zaW9ucywgJm1NYXhTdXBwb3J0ZWRFU1ZlcnNpb24pOwogfQog
Ci12b2lkIFJlbmRlcmVyR0w6OnN5bmNTdGF0ZShjb25zdCBnbDo6U3RhdGUgJnN0YXRlLCBjb25z
dCBnbDo6U3RhdGU6OkRpcnR5Qml0cyAmZGlydHlCaXRzKQotewotICAgIG1TdGF0ZU1hbmFnZXIt
PnN5bmNTdGF0ZShzdGF0ZSwgZGlydHlCaXRzKTsKLX0KLQogR0xpbnQgUmVuZGVyZXJHTDo6Z2V0
R1BVRGlzam9pbnQoKQogewogICAgIC8vIFRPRE8oZXdlbGwpOiBPbiBHTEVTIGJhY2tlbmRzIHdl
IHNob3VsZCBmaW5kIGEgd2F5IHRvIHJlbGlhYmx5IHF1ZXJ5IGRpc2pvaW50IGV2ZW50cwpAQCAt
NDMxLDkgKzUyNSwzNyBAQCBHTGludDY0IFJlbmRlcmVyR0w6OmdldFRpbWVzdGFtcCgpCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBSZW5kZXJlckdMOjpvbk1ha2VDdXJyZW50KGNvbnN0
IGdsOjpEYXRhICZkYXRhKQordm9pZCBSZW5kZXJlckdMOjplbnN1cmVDYXBzSW5pdGlhbGl6ZWQo
KSBjb25zdAogewotICAgIC8vIFF1ZXJpZXMgbmVlZCB0byBiZSBwYXVzZWQvcmVzdW1lZCBvbiBj
b250ZXh0IHN3aXRjaGVzCi0gICAgbVN0YXRlTWFuYWdlci0+b25NYWtlQ3VycmVudChkYXRhKTsK
KyAgICBpZiAoIW1DYXBzSW5pdGlhbGl6ZWQpCisgICAgeworICAgICAgICBnZW5lcmF0ZUNhcHMo
Jm1OYXRpdmVDYXBzLCAmbU5hdGl2ZVRleHR1cmVDYXBzLCAmbU5hdGl2ZUV4dGVuc2lvbnMsICZt
TmF0aXZlTGltaXRhdGlvbnMpOworICAgICAgICBtQ2Fwc0luaXRpYWxpemVkID0gdHJ1ZTsKKyAg
ICB9CiB9CisKK2NvbnN0IGdsOjpDYXBzICZSZW5kZXJlckdMOjpnZXROYXRpdmVDYXBzKCkgY29u
c3QKK3sKKyAgICBlbnN1cmVDYXBzSW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbU5hdGl2ZUNh
cHM7CiB9CisKK2NvbnN0IGdsOjpUZXh0dXJlQ2Fwc01hcCAmUmVuZGVyZXJHTDo6Z2V0TmF0aXZl
VGV4dHVyZUNhcHMoKSBjb25zdAoreworICAgIGVuc3VyZUNhcHNJbml0aWFsaXplZCgpOworICAg
IHJldHVybiBtTmF0aXZlVGV4dHVyZUNhcHM7Cit9CisKK2NvbnN0IGdsOjpFeHRlbnNpb25zICZS
ZW5kZXJlckdMOjpnZXROYXRpdmVFeHRlbnNpb25zKCkgY29uc3QKK3sKKyAgICBlbnN1cmVDYXBz
SW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbU5hdGl2ZUV4dGVuc2lvbnM7Cit9CisKK2NvbnN0
IGdsOjpMaW1pdGF0aW9ucyAmUmVuZGVyZXJHTDo6Z2V0TmF0aXZlTGltaXRhdGlvbnMoKSBjb25z
dAoreworICAgIGVuc3VyZUNhcHNJbml0aWFsaXplZCgpOworICAgIHJldHVybiBtTmF0aXZlTGlt
aXRhdGlvbnM7Cit9CisKK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1JlbmRlcmVyR0wuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUmVu
ZGVyZXJHTC5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyZXJHTC5oCSh3b3JraW5nIGNvcHkpCkBAIC05
LDExNSArOSwxNjQgQEAKICNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfR0xfUkVOREVSRVJHTF9I
XwogI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9HTF9SRU5ERVJFUkdMX0hfCiAKKyNpbmNsdWRl
ICJsaWJBTkdMRS9DYXBzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvRXJyb3IuaCIKICNpbmNsdWRl
ICJsaWJBTkdMRS9WZXJzaW9uLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvUmVuZGVy
ZXIuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9Xb3JrYXJvdW5kc0dMLmgiCiAK
K25hbWVzcGFjZSBnbAoreworY2xhc3MgQ29udGV4dFN0YXRlOworc3RydWN0IEluZGV4UmFuZ2U7
CitjbGFzcyBQYXRoOworfQorCituYW1lc3BhY2UgZWdsCit7CitjbGFzcyBBdHRyaWJ1dGVNYXA7
Cit9CisKK25hbWVzcGFjZSBzaAoreworc3RydWN0IEJsb2NrTWVtYmVySW5mbzsKK30KKwogbmFt
ZXNwYWNlIHJ4CiB7CiBjbGFzcyBCbGl0R0w7CitjbGFzcyBDb250ZXh0SW1wbDsKIGNsYXNzIEZ1
bmN0aW9uc0dMOwogY2xhc3MgU3RhdGVNYW5hZ2VyR0w7CiAKLWNsYXNzIFJlbmRlcmVyR0wgOiBw
dWJsaWMgUmVuZGVyZXIKK2NsYXNzIFJlbmRlcmVyR0wgOiBhbmdsZTo6Tm9uQ29weWFibGUKIHsK
ICAgcHVibGljOgogICAgIFJlbmRlcmVyR0woY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywg
Y29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYk1hcCk7Ci0gICAgflJlbmRlcmVyR0woKSBv
dmVycmlkZTsKKyAgICB+UmVuZGVyZXJHTCgpOwogCi0gICAgZ2w6OkVycm9yIGZsdXNoKCkgb3Zl
cnJpZGU7Ci0gICAgZ2w6OkVycm9yIGZpbmlzaCgpIG92ZXJyaWRlOworICAgIENvbnRleHRJbXBs
ICpjcmVhdGVDb250ZXh0KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJnN0YXRlKTsKIAotICAgIGds
OjpFcnJvciBkcmF3QXJyYXlzKGNvbnN0IGdsOjpEYXRhICZkYXRhLCBHTGVudW0gbW9kZSwgR0xp
bnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBkcmF3QXJy
YXlzSW5zdGFuY2VkKGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAgIGdsOjpFcnJvciBmbHVzaCgp
OworICAgIGdsOjpFcnJvciBmaW5pc2goKTsKKworICAgIGdsOjpFcnJvciBkcmF3QXJyYXlzKGNv
bnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsIEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xz
aXplaSBjb3VudCk7CisgICAgZ2w6OkVycm9yIGRyYXdBcnJheXNJbnN0YW5jZWQoY29uc3QgZ2w6
OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBmaXJz
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VDb3VudCkgb3Zl
cnJpZGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5j
ZUNvdW50KTsKIAotICAgIGdsOjpFcnJvciBkcmF3RWxlbWVudHMoY29uc3QgZ2w6OkRhdGEgJmRh
dGEsCisgICAgZ2w6OkVycm9yIGRyYXdFbGVtZW50cyhjb25zdCBnbDo6Q29udGV4dFN0YXRlICZk
YXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQg
KmluZGljZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5n
ZSAmaW5kZXhSYW5nZSkgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIGRyYXdFbGVtZW50c0luc3Rh
bmNlZChjb25zdCBnbDo6RGF0YSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpJbmRleFJhbmdlICZpbmRleFJhbmdlKTsKKyAgICBnbDo6RXJyb3IgZHJhd0VsZW1l
bnRzSW5zdGFuY2VkKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpIG92ZXJyaWRlOwotICAgIGds
OjpFcnJvciBkcmF3UmFuZ2VFbGVtZW50cyhjb25zdCBnbDo6RGF0YSAmZGF0YSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpJbmRleFJhbmdlICZpbmRleFJh
bmdlKTsKKyAgICBnbDo6RXJyb3IgZHJhd1JhbmdlRWxlbWVudHMoY29uc3QgZ2w6OkNvbnRleHRT
dGF0ZSAmZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGVuZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
dm9pZCAqaW5kaWNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpIG92ZXJyaWRlOwotCi0gICAgLy8gU2hhZGVyIGNyZWF0
aW9uCi0gICAgQ29tcGlsZXJJbXBsICpjcmVhdGVDb21waWxlcigpIG92ZXJyaWRlOwotICAgIFNo
YWRlckltcGwgKmNyZWF0ZVNoYWRlcihjb25zdCBnbDo6U2hhZGVyOjpEYXRhICZkYXRhKSBvdmVy
cmlkZTsKLSAgICBQcm9ncmFtSW1wbCAqY3JlYXRlUHJvZ3JhbShjb25zdCBnbDo6UHJvZ3JhbTo6
RGF0YSAmZGF0YSkgb3ZlcnJpZGU7Ci0KLSAgICAvLyBGcmFtZWJ1ZmZlciBjcmVhdGlvbgotICAg
IEZyYW1lYnVmZmVySW1wbCAqY3JlYXRlRnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVy
OjpEYXRhICZkYXRhKSBvdmVycmlkZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpOwogCi0gICAgLy8gVGV4dHVyZSBjcmVh
dGlvbgotICAgIFRleHR1cmVJbXBsICpjcmVhdGVUZXh0dXJlKEdMZW51bSB0YXJnZXQpIG92ZXJy
aWRlOworICAgIC8vIENIUk9NSVVNX3BhdGhfcmVuZGVyaW5nIGltcGxlbWVudGF0aW9uCisgICAg
dm9pZCBzdGVuY2lsRmlsbFBhdGgoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmc3RhdGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBhdGggKnBhdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBtYXNrKTsKKyAgICB2b2lkIHN0ZW5jaWxTdHJva2VQYXRoKGNvbnN0IGdsOjpDb250ZXh0
U3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBhdGgg
KnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzayk7CisgICAgdm9pZCBjb3ZlckZpbGxQ
YXRoKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJnN0YXRlLCBjb25zdCBnbDo6UGF0aCAqcGF0aCwg
R0xlbnVtIGNvdmVyTW9kZSk7CisgICAgdm9pZCBjb3ZlclN0cm9rZVBhdGgoY29uc3QgZ2w6OkNv
bnRleHRTdGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpQYXRoICpwYXRoLCBHTGVudW0gY292ZXJNb2Rl
KTsKKyAgICB2b2lkIHN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aChjb25zdCBnbDo6Q29udGV4dFN0
YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
UGF0aCAqcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmls
bE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSk7CisgICAg
dm9pZCBzdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZz
dGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQYXRo
ICpwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJl
bmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlKTsKKyAg
ICB2b2lkIGNvdmVyRmlsbFBhdGhJbnN0YW5jZWQoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmc3Rh
dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGds
OjpQYXRoICo+ICZwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGNvdmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5z
Zm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KnRyYW5zZm9ybVZhbHVlcyk7CisgICAgdm9pZCBjb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWQoY29u
c3QgZ2w6OkNvbnRleHRTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKKyAgICB2
b2lkIHN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZzdGF0
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3Rvcjxn
bDo6UGF0aCAqPiAmcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGZpbGxNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBt
YXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1U
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRy
YW5zZm9ybVZhbHVlcyk7CisgICAgdm9pZCBzdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZChjb25z
dCBnbDo6Q29udGV4dFN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOworCisgICAg
dm9pZCBzdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWQoY29uc3QgZ2w6OkNvbnRleHRT
dGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KnRyYW5zZm9ybVZhbHVlcyk7CisgICAgdm9pZCBzdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aElu
c3RhbmNlZChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+
ICZwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBjb3Zlck1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCByZWZlcmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsK
IAotICAgIC8vIFJlbmRlcmJ1ZmZlciBjcmVhdGlvbgotICAgIFJlbmRlcmJ1ZmZlckltcGwgKmNy
ZWF0ZVJlbmRlcmJ1ZmZlcigpIG92ZXJyaWRlOwotCi0gICAgLy8gQnVmZmVyIGNyZWF0aW9uCi0g
ICAgQnVmZmVySW1wbCAqY3JlYXRlQnVmZmVyKCkgb3ZlcnJpZGU7Ci0KLSAgICAvLyBWZXJ0ZXgg
QXJyYXkgY3JlYXRpb24KLSAgICBWZXJ0ZXhBcnJheUltcGwgKmNyZWF0ZVZlcnRleEFycmF5KGNv
bnN0IGdsOjpWZXJ0ZXhBcnJheTo6RGF0YSAmZGF0YSkgb3ZlcnJpZGU7Ci0KLSAgICAvLyBRdWVy
eSBhbmQgRmVuY2UgY3JlYXRpb24KLSAgICBRdWVyeUltcGwgKmNyZWF0ZVF1ZXJ5KEdMZW51bSB0
eXBlKSBvdmVycmlkZTsKLSAgICBGZW5jZU5WSW1wbCAqY3JlYXRlRmVuY2VOVigpIG92ZXJyaWRl
OwotICAgIEZlbmNlU3luY0ltcGwgKmNyZWF0ZUZlbmNlU3luYygpIG92ZXJyaWRlOwotCi0gICAg
Ly8gVHJhbnNmb3JtIEZlZWRiYWNrIGNyZWF0aW9uCi0gICAgVHJhbnNmb3JtRmVlZGJhY2tJbXBs
ICpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpIG92ZXJyaWRlOwotCi0gICAgLy8gU2FtcGxlciBv
YmplY3QgY3JlYXRpb24KLSAgICBTYW1wbGVySW1wbCAqY3JlYXRlU2FtcGxlcigpIG92ZXJyaWRl
OworICAgIEdMZW51bSBnZXRSZXNldFN0YXR1cygpOwogCiAgICAgLy8gRVhUX2RlYnVnX21hcmtl
cgotICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIg
Km1hcmtlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwdXNoR3JvdXBNYXJrZXIoR0xzaXplaSBsZW5n
dGgsIGNvbnN0IGNoYXIgKm1hcmtlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwb3BHcm91cE1hcmtl
cigpIG92ZXJyaWRlOwotCi0gICAgLy8gbG9zdCBkZXZpY2UKLSAgICB2b2lkIG5vdGlmeURldmlj
ZUxvc3QoKSBvdmVycmlkZTsKLSAgICBib29sIGlzRGV2aWNlTG9zdCgpIGNvbnN0IG92ZXJyaWRl
OwotICAgIGJvb2wgdGVzdERldmljZUxvc3QoKSBvdmVycmlkZTsKLSAgICBib29sIHRlc3REZXZp
Y2VSZXNldHRhYmxlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlcihHTHNp
emVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKTsKKyAgICB2b2lkIHB1c2hHcm91cE1hcmtl
cihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKTsKKyAgICB2b2lkIHBvcEdyb3Vw
TWFya2VyKCk7CiAKLSAgICBzdGQ6OnN0cmluZyBnZXRWZW5kb3JTdHJpbmcoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBzdGQ6OnN0cmluZyBnZXRSZW5kZXJlckRlc2NyaXB0aW9uKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgc3RkOjpzdHJpbmcgZ2V0VmVuZG9yU3RyaW5nKCkgY29uc3Q7CisgICAgc3Rk
OjpzdHJpbmcgZ2V0UmVuZGVyZXJEZXNjcmlwdGlvbigpIGNvbnN0OwogCi0gICAgdm9pZCBzeW5j
U3RhdGUoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwgY29uc3QgZ2w6OlN0YXRlOjpEaXJ0eUJpdHMg
JmRpcnR5Qml0cykgb3ZlcnJpZGU7Ci0KLSAgICBHTGludCBnZXRHUFVEaXNqb2ludCgpIG92ZXJy
aWRlOwotICAgIEdMaW50NjQgZ2V0VGltZXN0YW1wKCkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIG9u
TWFrZUN1cnJlbnQoY29uc3QgZ2w6OkRhdGEgJmRhdGEpIG92ZXJyaWRlOworICAgIEdMaW50IGdl
dEdQVURpc2pvaW50KCk7CisgICAgR0xpbnQ2NCBnZXRUaW1lc3RhbXAoKTsKIAogICAgIGNvbnN0
IGdsOjpWZXJzaW9uICZnZXRNYXhTdXBwb3J0ZWRFU1ZlcnNpb24oKSBjb25zdDsKICAgICBjb25z
dCBGdW5jdGlvbnNHTCAqZ2V0RnVuY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbUZ1bmN0aW9uczsg
fQogICAgIFN0YXRlTWFuYWdlckdMICpnZXRTdGF0ZU1hbmFnZXIoKSBjb25zdCB7IHJldHVybiBt
U3RhdGVNYW5hZ2VyOyB9CiAgICAgY29uc3QgV29ya2Fyb3VuZHNHTCAmZ2V0V29ya2Fyb3VuZHMo
KSBjb25zdCB7IHJldHVybiBtV29ya2Fyb3VuZHM7IH0KKyAgICBCbGl0R0wgKmdldEJsaXR0ZXIo
KSBjb25zdCB7IHJldHVybiBtQmxpdHRlcjsgfQorCisgICAgY29uc3QgZ2w6OkNhcHMgJmdldE5h
dGl2ZUNhcHMoKSBjb25zdDsKKyAgICBjb25zdCBnbDo6VGV4dHVyZUNhcHNNYXAgJmdldE5hdGl2
ZVRleHR1cmVDYXBzKCkgY29uc3Q7CisgICAgY29uc3QgZ2w6OkV4dGVuc2lvbnMgJmdldE5hdGl2
ZUV4dGVuc2lvbnMoKSBjb25zdDsKKyAgICBjb25zdCBnbDo6TGltaXRhdGlvbnMgJmdldE5hdGl2
ZUxpbWl0YXRpb25zKCkgY29uc3Q7CiAKICAgcHJpdmF0ZToKLSAgICB2b2lkIGdlbmVyYXRlQ2Fw
cyhnbDo6Q2FwcyAqb3V0Q2FwcywgZ2w6OlRleHR1cmVDYXBzTWFwKiBvdXRUZXh0dXJlQ2FwcywK
KyAgICB2b2lkIGVuc3VyZUNhcHNJbml0aWFsaXplZCgpIGNvbnN0OworICAgIHZvaWQgZ2VuZXJh
dGVDYXBzKGdsOjpDYXBzICpvdXRDYXBzLAorICAgICAgICAgICAgICAgICAgICAgIGdsOjpUZXh0
dXJlQ2Fwc01hcCAqb3V0VGV4dHVyZUNhcHMsCiAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkV4
dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgZ2w6OkxpbWl0
YXRpb25zICpvdXRMaW1pdGF0aW9ucykgY29uc3Qgb3ZlcnJpZGU7CisgICAgICAgICAgICAgICAg
ICAgICAgZ2w6OkxpbWl0YXRpb25zICpvdXRMaW1pdGF0aW9ucykgY29uc3Q7CiAKICAgICBtdXRh
YmxlIGdsOjpWZXJzaW9uIG1NYXhTdXBwb3J0ZWRFU1ZlcnNpb247CiAKQEAgLTEzMiw4ICsxODEs
MTQgQEAgY2xhc3MgUmVuZGVyZXJHTCA6IHB1YmxpYyBSZW5kZXJlcgogCiAgICAgLy8gRm9yIHBl
cmZvcm1hbmNlIGRlYnVnZ2luZwogICAgIGJvb2wgbVNraXBEcmF3Q2FsbHM7CisKKyAgICBtdXRh
YmxlIGJvb2wgbUNhcHNJbml0aWFsaXplZDsKKyAgICBtdXRhYmxlIGdsOjpDYXBzIG1OYXRpdmVD
YXBzOworICAgIG11dGFibGUgZ2w6OlRleHR1cmVDYXBzTWFwIG1OYXRpdmVUZXh0dXJlQ2FwczsK
KyAgICBtdXRhYmxlIGdsOjpFeHRlbnNpb25zIG1OYXRpdmVFeHRlbnNpb25zOworICAgIG11dGFi
bGUgZ2w6OkxpbWl0YXRpb25zIG1OYXRpdmVMaW1pdGF0aW9uczsKIH07CiAKLX0KK30gIC8vIG5h
bWVzcGFjZSByeAogCiAjZW5kaWYgLy8gTElCQU5HTEVfUkVOREVSRVJfR0xfUkVOREVSRVJHTF9I
XwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L1NoYWRlckdMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvU2hhZGVyR0wuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU2hhZGVyR0wu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw3ICsxOSw3IEBACiBuYW1lc3BhY2UgcngKIHsKIAot
U2hhZGVyR0w6OlNoYWRlckdMKGNvbnN0IGdsOjpTaGFkZXI6OkRhdGEgJmRhdGEsCitTaGFkZXJH
TDo6U2hhZGVyR0woY29uc3QgZ2w6OlNoYWRlclN0YXRlICZkYXRhLAogICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgY29u
c3QgV29ya2Fyb3VuZHNHTCAmd29ya2Fyb3VuZHMpCiAgICAgOiBTaGFkZXJJbXBsKGRhdGEpLCBt
RnVuY3Rpb25zKGZ1bmN0aW9ucyksIG1Xb3JrYXJvdW5kcyh3b3JrYXJvdW5kcyksIG1TaGFkZXJJ
RCgwKQpAQCAtMzYsOCArMzYsOCBAQCBTaGFkZXJHTDo6flNoYWRlckdMKCkKICAgICB9CiB9CiAK
LWludCBTaGFkZXJHTDo6cHJlcGFyZVNvdXJjZUFuZFJldHVybk9wdGlvbnMoc3RkOjpzdHJpbmdz
dHJlYW0gKnNvdXJjZVN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjpzdHJpbmcgKiAvKnNvdXJjZVBhdGgqLykKK1NoQ29tcGlsZU9wdGlvbnMg
U2hhZGVyR0w6OnByZXBhcmVTb3VyY2VBbmRSZXR1cm5PcHRpb25zKHN0ZDo6c3RyaW5nc3RyZWFt
ICpzb3VyY2VTdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyAqIC8qc291cmNlUGF0aCovKQogewogICAgIC8v
IFJlc2V0IHRoZSBwcmV2aW91cyBzdGF0ZQogICAgIGlmIChtU2hhZGVySUQgIT0gMCkKQEAgLTQ4
LDEzICs0OCwzMyBAQCBpbnQgU2hhZGVyR0w6OnByZXBhcmVTb3VyY2VBbmRSZXR1cm5PcHRpCiAK
ICAgICAqc291cmNlU3RyZWFtIDw8IG1EYXRhLmdldFNvdXJjZSgpOwogCi0gICAgaW50IG9wdGlv
bnMgPSBTSF9JTklUX0dMX1BPU0lUSU9OOworICAgIFNoQ29tcGlsZU9wdGlvbnMgb3B0aW9ucyA9
IFNIX0lOSVRfR0xfUE9TSVRJT047CiAKICAgICBpZiAobVdvcmthcm91bmRzLmRvV2hpbGVHTFNM
Q2F1c2VzR1BVSGFuZykKICAgICB7CiAgICAgICAgIG9wdGlvbnMgfD0gU0hfUkVXUklURV9ET19X
SElMRV9MT09QUzsKICAgICB9CiAKKyAgICBpZiAobVdvcmthcm91bmRzLmVtdWxhdGVBYnNJbnRG
dW5jdGlvbikKKyAgICB7CisgICAgICAgIG9wdGlvbnMgfD0gU0hfRU1VTEFURV9BQlNfSU5UX0ZV
TkNUSU9OOworICAgIH0KKworICAgIGlmIChtV29ya2Fyb3VuZHMuYWRkQW5kVHJ1ZVRvTG9vcENv
bmRpdGlvbikKKyAgICB7CisgICAgICAgIG9wdGlvbnMgfD0gU0hfQUREX0FORF9UUlVFX1RPX0xP
T1BfQ09ORElUSU9OOworICAgIH0KKworICAgIGlmIChtV29ya2Fyb3VuZHMuZW11bGF0ZUlzbmFu
RmxvYXQpCisgICAgeworICAgICAgICBvcHRpb25zIHw9IFNIX0VNVUxBVEVfSVNOQU5fRkxPQVRf
RlVOQ1RJT047CisgICAgfQorCisgICAgaWYgKG1Xb3JrYXJvdW5kcy51c2VVbnVzZWRCbG9ja3NX
aXRoU3RhbmRhcmRPclNoYXJlZExheW91dCkKKyAgICB7CisgICAgICAgIG9wdGlvbnMgfD0gU0hf
VVNFX1VOVVNFRF9TVEFOREFSRF9TSEFSRURfQkxPQ0tTOworICAgIH0KKwogICAgIHJldHVybiBv
cHRpb25zOwogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvU2hhZGVyR0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU2hhZGVyR0wuaAkocmV2aXNpb24gMjA3ODA0
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1No
YWRlckdMLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5LDE0ICsxOSwxNCBAQCBzdHJ1Y3QgV29ya2Fy
b3VuZHNHTDsKIGNsYXNzIFNoYWRlckdMIDogcHVibGljIFNoYWRlckltcGwKIHsKICAgcHVibGlj
OgotICAgIFNoYWRlckdMKGNvbnN0IGdsOjpTaGFkZXI6OkRhdGEgJmRhdGEsCisgICAgU2hhZGVy
R0woY29uc3QgZ2w6OlNoYWRlclN0YXRlICZkYXRhLAogICAgICAgICAgICAgIGNvbnN0IEZ1bmN0
aW9uc0dMICpmdW5jdGlvbnMsCiAgICAgICAgICAgICAgY29uc3QgV29ya2Fyb3VuZHNHTCAmd29y
a2Fyb3VuZHMpOwogICAgIH5TaGFkZXJHTCgpIG92ZXJyaWRlOwogCiAgICAgLy8gU2hhZGVySW1w
bCBpbXBsZW1lbnRhdGlvbgotICAgIGludCBwcmVwYXJlU291cmNlQW5kUmV0dXJuT3B0aW9ucyhz
dGQ6OnN0cmluZ3N0cmVhbSAqc291cmNlU3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6OnN0cmluZyAqc291cmNlUGF0aCkgb3ZlcnJpZGU7CisgICAgU2hD
b21waWxlT3B0aW9ucyBwcmVwYXJlU291cmNlQW5kUmV0dXJuT3B0aW9ucyhzdGQ6OnN0cmluZ3N0
cmVhbSAqc291cmNlU3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgKnNvdXJjZVBhdGgpIG92ZXJyaWRlOwogICAgIGJv
b2wgcG9zdFRyYW5zbGF0ZUNvbXBpbGUoZ2w6OkNvbXBpbGVyICpjb21waWxlciwgc3RkOjpzdHJp
bmcgKmluZm9Mb2cpIG92ZXJyaWRlOwogICAgIHN0ZDo6c3RyaW5nIGdldERlYnVnSW5mbygpIGNv
bnN0IG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2VyR0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5j
cHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgs
OCArOCwxMyBAQAogCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2Vy
R0wuaCIKIAorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKwogI2luY2x1
ZGUgImNvbW1vbi9CaXRTZXRJdGVyYXRvci5oIgotI2luY2x1ZGUgImxpYkFOR0xFL0RhdGEuaCIK
KyNpbmNsdWRlICJjb21tb24vbWF0aHV0aWwuaCIKKyNpbmNsdWRlICJjb21tb24vbWF0cml4X3V0
aWxzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dFN0YXRlLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvRnJhbWVidWZmZXIuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9UcmFuc2Zvcm1GZWVkYmFj
ay5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1ZlcnRleEFycmF5LmgiCkBAIC0yOCw3ICszMyw4IEBA
IG5hbWVzcGFjZSByeAogewogCiBzdGF0aWMgY29uc3QgR0xlbnVtIFF1ZXJ5VHlwZXNbXSA9IHtH
TF9BTllfU0FNUExFU19QQVNTRUQsIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9UUkFOU0ZPUk1fRkVFREJB
Q0tfUFJJTUlUSVZFU19XUklUVEVOLCBHTF9USU1FX0VMQVBTRUR9OworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJ
VFRFTiwgR0xfVElNRV9FTEFQU0VELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfQ09NTUFORFNfQ09NUExFVEVEX0NIUk9NSVVNfTsKIAogU3RhdGVNYW5hZ2VyR0w6Oklu
ZGV4ZWRCdWZmZXJCaW5kaW5nOjpJbmRleGVkQnVmZmVyQmluZGluZygpIDogb2Zmc2V0KDApLCBz
aXplKDApLCBidWZmZXIoMCkKIHsKQEAgLTg3LDEyICs5MywxNCBAQCBTdGF0ZU1hbmFnZXJHTDo6
U3RhdGVNYW5hZ2VyR0woY29uc3QgRnVuCiAgICAgICBtRGVwdGhNYXNrKHRydWUpLAogICAgICAg
bVN0ZW5jaWxUZXN0RW5hYmxlZChmYWxzZSksCiAgICAgICBtU3RlbmNpbEZyb250RnVuYyhHTF9B
TFdBWVMpLAorICAgICAgbVN0ZW5jaWxGcm9udFJlZigwKSwKICAgICAgIG1TdGVuY2lsRnJvbnRW
YWx1ZU1hc2soc3RhdGljX2Nhc3Q8R0x1aW50PigtMSkpLAogICAgICAgbVN0ZW5jaWxGcm9udFN0
ZW5jaWxGYWlsT3AoR0xfS0VFUCksCiAgICAgICBtU3RlbmNpbEZyb250U3RlbmNpbFBhc3NEZXB0
aEZhaWxPcChHTF9LRUVQKSwKICAgICAgIG1TdGVuY2lsRnJvbnRTdGVuY2lsUGFzc0RlcHRoUGFz
c09wKEdMX0tFRVApLAogICAgICAgbVN0ZW5jaWxGcm9udFdyaXRlbWFzayhzdGF0aWNfY2FzdDxH
THVpbnQ+KC0xKSksCiAgICAgICBtU3RlbmNpbEJhY2tGdW5jKEdMX0FMV0FZUyksCisgICAgICBt
U3RlbmNpbEJhY2tSZWYoMCksCiAgICAgICBtU3RlbmNpbEJhY2tWYWx1ZU1hc2soc3RhdGljX2Nh
c3Q8R0x1aW50PigtMSkpLAogICAgICAgbVN0ZW5jaWxCYWNrU3RlbmNpbEZhaWxPcChHTF9LRUVQ
KSwKICAgICAgIG1TdGVuY2lsQmFja1N0ZW5jaWxQYXNzRGVwdGhGYWlsT3AoR0xfS0VFUCksCkBA
IC0xMTEsNyArMTE5LDE0IEBAIFN0YXRlTWFuYWdlckdMOjpTdGF0ZU1hbmFnZXJHTChjb25zdCBG
dW4KICAgICAgIG1DbGVhckRlcHRoKDEuMGYpLAogICAgICAgbUNsZWFyU3RlbmNpbCgwKSwKICAg
ICAgIG1GcmFtZWJ1ZmZlclNSR0JFbmFibGVkKGZhbHNlKSwKKyAgICAgIG1EaXRoZXJFbmFibGVk
KHRydWUpLAogICAgICAgbVRleHR1cmVDdWJlbWFwU2VhbWxlc3NFbmFibGVkKGZhbHNlKSwKKyAg
ICAgIG1NdWx0aXNhbXBsaW5nRW5hYmxlZCh0cnVlKSwKKyAgICAgIG1TYW1wbGVBbHBoYVRvT25l
RW5hYmxlZChmYWxzZSksCisgICAgICBtQ292ZXJhZ2VNb2R1bGF0aW9uKEdMX05PTkUpLAorICAg
ICAgbVBhdGhTdGVuY2lsRnVuYyhHTF9BTFdBWVMpLAorICAgICAgbVBhdGhTdGVuY2lsUmVmKDAp
LAorICAgICAgbVBhdGhTdGVuY2lsTWFzayhzdGQ6Om51bWVyaWNfbGltaXRzPEdMdWludD46Om1h
eCgpKSwKICAgICAgIG1Mb2NhbERpcnR5Qml0cygpCiB7CiAgICAgQVNTRVJUKG1GdW5jdGlvbnMp
OwpAQCAtMTQxLDYgKzE1Niw5IEBAIFN0YXRlTWFuYWdlckdMOjpTdGF0ZU1hbmFnZXJHTChjb25z
dCBGdW4KICAgICAgICAgICAgIG1GdW5jdGlvbnMtPmVuYWJsZShHTF9QT0lOVF9TUFJJVEUpOwog
ICAgICAgICB9CiAgICAgfQorCisgICAgYW5nbGU6Ok1hdHJpeDxHTGZsb2F0Pjo6c2V0VG9JZGVu
dGl0eShtUGF0aE1hdHJpeFByb2opOworICAgIGFuZ2xlOjpNYXRyaXg8R0xmbG9hdD46OnNldFRv
SWRlbnRpdHkobVBhdGhNYXRyaXhNVik7CiB9CiAKIHZvaWQgU3RhdGVNYW5hZ2VyR0w6OmRlbGV0
ZVByb2dyYW0oR0x1aW50IHByb2dyYW0pCkBAIC00MjgsNyArNDQ2LDcgQEAgdm9pZCBTdGF0ZU1h
bmFnZXJHTDo6c2V0UGl4ZWxVbnBhY2tTdGF0ZQogICAgICAgICBtVW5wYWNrU2tpcFJvd3MgPSBz
a2lwUm93czsKICAgICAgICAgbUZ1bmN0aW9ucy0+cGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBf
Uk9XUywgbVVucGFja1NraXBSb3dzKTsKIAotICAgICAgICAvLyBUT0RPOiBzZXQgZGlydHkgYml0
IG9uY2Ugb25lIGV4aXN0cworICAgICAgICBtTG9jYWxEaXJ0eUJpdHMuc2V0KGdsOjpTdGF0ZTo6
RElSVFlfQklUX1VOUEFDS19TS0lQX1JPV1MpOwogICAgIH0KIAogICAgIGlmIChtVW5wYWNrU2tp
cFBpeGVscyAhPSBza2lwUGl4ZWxzKQpAQCAtNDM2LDcgKzQ1NCw3IEBAIHZvaWQgU3RhdGVNYW5h
Z2VyR0w6OnNldFBpeGVsVW5wYWNrU3RhdGUKICAgICAgICAgbVVucGFja1NraXBQaXhlbHMgPSBz
a2lwUGl4ZWxzOwogICAgICAgICBtRnVuY3Rpb25zLT5waXhlbFN0b3JlaShHTF9VTlBBQ0tfU0tJ
UF9QSVhFTFMsIG1VbnBhY2tTa2lwUGl4ZWxzKTsKIAotICAgICAgICAvLyBUT0RPOiBzZXQgZGly
dHkgYml0IG9uY2Ugb25lIGV4aXN0cworICAgICAgICBtTG9jYWxEaXJ0eUJpdHMuc2V0KGdsOjpT
dGF0ZTo6RElSVFlfQklUX1VOUEFDS19TS0lQX1BJWEVMUyk7CiAgICAgfQogCiAgICAgaWYgKG1V
bnBhY2tJbWFnZUhlaWdodCAhPSBpbWFnZUhlaWdodCkKQEAgLTQ0NCw3ICs0NjIsNyBAQCB2b2lk
IFN0YXRlTWFuYWdlckdMOjpzZXRQaXhlbFVucGFja1N0YXRlCiAgICAgICAgIG1VbnBhY2tJbWFn
ZUhlaWdodCA9IGltYWdlSGVpZ2h0OwogICAgICAgICBtRnVuY3Rpb25zLT5waXhlbFN0b3JlaShH
TF9VTlBBQ0tfSU1BR0VfSEVJR0hULCBtVW5wYWNrSW1hZ2VIZWlnaHQpOwogCi0gICAgICAgIC8v
IFRPRE86IHNldCBkaXJ0eSBiaXQgb25jZSBvbmUgZXhpc3RzCisgICAgICAgIG1Mb2NhbERpcnR5
Qml0cy5zZXQoZ2w6OlN0YXRlOjpESVJUWV9CSVRfVU5QQUNLX0lNQUdFX0hFSUdIVCk7CiAgICAg
fQogCiAgICAgaWYgKG1VbnBhY2tTa2lwSW1hZ2VzICE9IHNraXBJbWFnZXMpCkBAIC00NTIsNyAr
NDcwLDcgQEAgdm9pZCBTdGF0ZU1hbmFnZXJHTDo6c2V0UGl4ZWxVbnBhY2tTdGF0ZQogICAgICAg
ICBtVW5wYWNrU2tpcEltYWdlcyA9IHNraXBJbWFnZXM7CiAgICAgICAgIG1GdW5jdGlvbnMtPnBp
eGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX0lNQUdFUywgbVVucGFja1NraXBJbWFnZXMpOwogCi0g
ICAgICAgIC8vIFRPRE86IHNldCBkaXJ0eSBiaXQgb25jZSBvbmUgZXhpc3RzCisgICAgICAgIG1M
b2NhbERpcnR5Qml0cy5zZXQoZ2w6OlN0YXRlOjpESVJUWV9CSVRfVU5QQUNLX1NLSVBfSU1BR0VT
KTsKICAgICB9CiAKICAgICBiaW5kQnVmZmVyKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIHVucGFj
a0J1ZmZlcik7CkBAIC01OTIsMTIgKzYxMCwxMiBAQCB2b2lkIFN0YXRlTWFuYWdlckdMOjpvbkRl
bGV0ZVF1ZXJ5T2JqZWN0CiAgICAgbUN1cnJlbnRRdWVyaWVzLmVyYXNlKHF1ZXJ5KTsKIH0KIAot
Z2w6OkVycm9yIFN0YXRlTWFuYWdlckdMOjpzZXREcmF3QXJyYXlzU3RhdGUoY29uc3QgZ2w6OkRh
dGEgJmRhdGEsCitnbDo6RXJyb3IgU3RhdGVNYW5hZ2VyR0w6OnNldERyYXdBcnJheXNTdGF0ZShj
b25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZUNvdW50KQogewotICAgIGNv
bnN0IGdsOjpTdGF0ZSAmc3RhdGUgPSAqZGF0YS5zdGF0ZTsKKyAgICBjb25zdCBnbDo6U3RhdGUg
JnN0YXRlID0gZGF0YS5nZXRTdGF0ZSgpOwogCiAgICAgY29uc3QgZ2w6OlByb2dyYW0gKnByb2dy
YW0gPSBzdGF0ZS5nZXRQcm9ncmFtKCk7CiAKQEAgLTYxNiwxNCArNjM0LDE0IEBAIGdsOjpFcnJv
ciBTdGF0ZU1hbmFnZXJHTDo6c2V0RHJhd0FycmF5c1MKICAgICByZXR1cm4gc2V0R2VuZXJpY0Ry
YXdTdGF0ZShkYXRhKTsKIH0KIAotZ2w6OkVycm9yIFN0YXRlTWFuYWdlckdMOjpzZXREcmF3RWxl
bWVudHNTdGF0ZShjb25zdCBnbDo6RGF0YSAmZGF0YSwKK2dsOjpFcnJvciBTdGF0ZU1hbmFnZXJH
TDo6c2V0RHJhd0VsZW1lbnRzU3RhdGUoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMdm9pZCAqaW5kaWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZUNvdW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKipvdXRJbmRpY2VzKQogewot
ICAgIGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUgPSAqZGF0YS5zdGF0ZTsKKyAgICBjb25zdCBnbDo6
U3RhdGUgJnN0YXRlID0gZGF0YS5nZXRTdGF0ZSgpOwogCiAgICAgY29uc3QgZ2w6OlByb2dyYW0g
KnByb2dyYW0gPSBzdGF0ZS5nZXRQcm9ncmFtKCk7CiAKQEAgLTY0MywxOCArNjYxLDI2IEBAIGds
OjpFcnJvciBTdGF0ZU1hbmFnZXJHTDo6c2V0RHJhd0VsZW1lbnQKICAgICByZXR1cm4gc2V0R2Vu
ZXJpY0RyYXdTdGF0ZShkYXRhKTsKIH0KIAotZ2w6OkVycm9yIFN0YXRlTWFuYWdlckdMOjpvbk1h
a2VDdXJyZW50KGNvbnN0IGdsOjpEYXRhICZkYXRhKQorZ2w6OkVycm9yIFN0YXRlTWFuYWdlckdM
OjpwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEpCiB7
Ci0gICAgY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSA9ICpkYXRhLnN0YXRlOwotCi0gICAgLy8gSWYg
dGhlIGNvbnRleHQgaGFzIGNoYW5nZWQsIHBhdXNlIHRoZSBwcmV2aW91cyBjb250ZXh0J3MgdHJh
bnNmb3JtIGZlZWRiYWNrIGFuZCBxdWVyaWVzCi0gICAgaWYgKGRhdGEuY29udGV4dCAhPSBtUHJl
dkRyYXdDb250ZXh0KQorICAgIC8vIElmIHRoZSBjb250ZXh0IGlzIGdvaW5nIHRvIGJlIGNoYW5n
ZWQsIHBhdXNlIHRoZSBwcmV2aW91cyBjb250ZXh0J3MgdHJhbnNmb3JtIGZlZWRiYWNrCisgICAg
aWYgKGRhdGEuZ2V0Q29udGV4dCgpICE9IG1QcmV2RHJhd0NvbnRleHQpCiAgICAgewogICAgICAg
ICBpZiAobVByZXZEcmF3VHJhbnNmb3JtRmVlZGJhY2sgIT0gbnVsbHB0cikKICAgICAgICAgewog
ICAgICAgICAgICAgbVByZXZEcmF3VHJhbnNmb3JtRmVlZGJhY2stPnN5bmNQYXVzZWRTdGF0ZSh0
cnVlKTsKICAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9S
KTsKK30KIAorZ2w6OkVycm9yIFN0YXRlTWFuYWdlckdMOjpvbk1ha2VDdXJyZW50KGNvbnN0IGds
OjpDb250ZXh0U3RhdGUgJmRhdGEpCit7CisgICAgY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSA9IGRh
dGEuZ2V0U3RhdGUoKTsKKworICAgIC8vIElmIHRoZSBjb250ZXh0IGhhcyBjaGFuZ2VkLCBwYXVz
ZSB0aGUgcHJldmlvdXMgY29udGV4dCdzIHF1ZXJpZXMKKyAgICBpZiAoZGF0YS5nZXRDb250ZXh0
KCkgIT0gbVByZXZEcmF3Q29udGV4dCkKKyAgICB7CiAgICAgICAgIGZvciAoUXVlcnlHTCAqcHJl
dlF1ZXJ5IDogbUN1cnJlbnRRdWVyaWVzKQogICAgICAgICB7CiAgICAgICAgICAgICBwcmV2UXVl
cnktPnBhdXNlKCk7CkBAIC02NjIsNyArNjg4LDcgQEAgZ2w6OkVycm9yIFN0YXRlTWFuYWdlckdM
Ojpvbk1ha2VDdXJyZW50KAogICAgIH0KICAgICBtQ3VycmVudFF1ZXJpZXMuY2xlYXIoKTsKICAg
ICBtUHJldkRyYXdUcmFuc2Zvcm1GZWVkYmFjayA9IG51bGxwdHI7Ci0gICAgbVByZXZEcmF3Q29u
dGV4dCA9IGRhdGEuY29udGV4dDsKKyAgICBtUHJldkRyYXdDb250ZXh0ICAgICAgICAgICA9IGRh
dGEuZ2V0Q29udGV4dCgpOwogCiAgICAgLy8gU2V0IHRoZSBjdXJyZW50IHF1ZXJ5IHN0YXRlCiAg
ICAgZm9yIChHTGVudW0gcXVlcnlUeXBlIDogUXVlcnlUeXBlcykKQEAgLTY4MCw5ICs3MDYsOSBA
QCBnbDo6RXJyb3IgU3RhdGVNYW5hZ2VyR0w6Om9uTWFrZUN1cnJlbnQoCiAgICAgcmV0dXJuIGds
OjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKLWdsOjpFcnJvciBTdGF0ZU1hbmFnZXJHTDo6c2V0
R2VuZXJpY0RyYXdTdGF0ZShjb25zdCBnbDo6RGF0YSAmZGF0YSkKK2dsOjpFcnJvciBTdGF0ZU1h
bmFnZXJHTDo6c2V0R2VuZXJpY0RyYXdTdGF0ZShjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRh
KQogewotICAgIGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUgPSAqZGF0YS5zdGF0ZTsKKyAgICBjb25z
dCBnbDo6U3RhdGUgJnN0YXRlID0gZGF0YS5nZXRTdGF0ZSgpOwogCiAgICAgLy8gU3luYyB0aGUg
Y3VycmVudCBwcm9ncmFtIHN0YXRlCiAgICAgY29uc3QgZ2w6OlByb2dyYW0gKnByb2dyYW0gPSBz
dGF0ZS5nZXRQcm9ncmFtKCk7CkBAIC02OTMsOCArNzE5LDcgQEAgZ2w6OkVycm9yIFN0YXRlTWFu
YWdlckdMOjpzZXRHZW5lcmljRHJhdwogICAgICAgICAgdW5pZm9ybUJsb2NrSW5kZXgrKykKICAg
ICB7CiAgICAgICAgIEdMdWludCBiaW5kaW5nID0gcHJvZ3JhbS0+Z2V0VW5pZm9ybUJsb2NrQmlu
ZGluZyhzdGF0aWNfY2FzdDxHTHVpbnQ+KHVuaWZvcm1CbG9ja0luZGV4KSk7Ci0gICAgICAgIGNv
bnN0IE9mZnNldEJpbmRpbmdQb2ludGVyPGdsOjpCdWZmZXI+ICZ1bmlmb3JtQnVmZmVyID0KLSAg
ICAgICAgICAgIGRhdGEuc3RhdGUtPmdldEluZGV4ZWRVbmlmb3JtQnVmZmVyKGJpbmRpbmcpOwor
ICAgICAgICBjb25zdCBhdXRvICZ1bmlmb3JtQnVmZmVyID0gc3RhdGUuZ2V0SW5kZXhlZFVuaWZv
cm1CdWZmZXIoYmluZGluZyk7CiAKICAgICAgICAgaWYgKHVuaWZvcm1CdWZmZXIuZ2V0KCkgIT0g
bnVsbHB0cikKICAgICAgICAgewpAQCAtNzE4LDE4ICs3NDMsMjEgQEAgZ2w6OkVycm9yIFN0YXRl
TWFuYWdlckdMOjpzZXRHZW5lcmljRHJhdwogICAgICAgICBHTGVudW0gdGV4dHVyZVR5cGUgPSBz
YW1wbGVyVW5pZm9ybS50ZXh0dXJlVHlwZTsKICAgICAgICAgZm9yIChHTHVpbnQgdGV4dHVyZVVu
aXRJbmRleCA6IHNhbXBsZXJVbmlmb3JtLmJvdW5kVGV4dHVyZVVuaXRzKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb25zdCBnbDo6VGV4dHVyZSAqdGV4dHVyZSA9IHN0YXRlLmdldFNhbXBsZXJU
ZXh0dXJlKHRleHR1cmVVbml0SW5kZXgsIHRleHR1cmVUeXBlKTsKKyAgICAgICAgICAgIGdsOjpU
ZXh0dXJlICp0ZXh0dXJlID0gc3RhdGUuZ2V0U2FtcGxlclRleHR1cmUodGV4dHVyZVVuaXRJbmRl
eCwgdGV4dHVyZVR5cGUpOwogICAgICAgICAgICAgaWYgKHRleHR1cmUgIT0gbnVsbHB0cikKICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBjb25zdCBUZXh0dXJlR0wgKnRleHR1cmVHTCA9
IEdldEltcGxBczxUZXh0dXJlR0w+KHRleHR1cmUpOwogCi0gICAgICAgICAgICAgICAgaWYgKG1U
ZXh0dXJlc1t0ZXh0dXJlVHlwZV1bdGV4dHVyZVVuaXRJbmRleF0gIT0gdGV4dHVyZUdMLT5nZXRU
ZXh0dXJlSUQoKSkKKyAgICAgICAgICAgICAgICBpZiAobVRleHR1cmVzW3RleHR1cmVUeXBlXVt0
ZXh0dXJlVW5pdEluZGV4XSAhPSB0ZXh0dXJlR0wtPmdldFRleHR1cmVJRCgpIHx8CisgICAgICAg
ICAgICAgICAgICAgIHRleHR1cmUtPmhhc0FueURpcnR5Qml0KCkgfHwgdGV4dHVyZUdMLT5oYXNB
bnlEaXJ0eUJpdCgpKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgYWN0
aXZlVGV4dHVyZSh0ZXh0dXJlVW5pdEluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgYmluZFRl
eHR1cmUodGV4dHVyZVR5cGUsIHRleHR1cmVHTC0+Z2V0VGV4dHVyZUlEKCkpOwotICAgICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgICAgIHRleHR1cmVHTC0+c3luY1N0YXRlKHRleHR1cmVV
bml0SW5kZXgsIHRleHR1cmUtPmdldFRleHR1cmVTdGF0ZSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgLy8gVE9ETzogQ2FsbCB0aGlzIGZyb20gdGhlIGdsOjogbGF5ZXIgb25jZSBvdGhlciBiYWNr
ZW5kcyB1c2UgZGlydHkgYml0cyBmb3IKKyAgICAgICAgICAgICAgICAgICAgLy8gdGV4dHVyZSBz
dGF0ZS4KKyAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+c3luY0ltcGxTdGF0ZSgpOworICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHsKQEAgLTc2MCw3ICs3ODgsNyBAQCBnbDo6RXJyb3IgU3RhdGVNYW5hZ2VyR0w6OnNldEdl
bmVyaWNEcmF3CiAgICAgZnJhbWVidWZmZXJHTC0+c3luY0RyYXdTdGF0ZSgpOwogCiAgICAgLy8g
U2VhbWxlc3MgY3ViZW1hcHMgYXJlIHJlcXVpcmVkIGZvciBFUzMgYW5kIGhpZ2hlciBjb250ZXh0
cy4KLSAgICBzZXRUZXh0dXJlQ3ViZW1hcFNlYW1sZXNzRW5hYmxlZChkYXRhLmNsaWVudFZlcnNp
b24gPj0gMyk7CisgICAgc2V0VGV4dHVyZUN1YmVtYXBTZWFtbGVzc0VuYWJsZWQoZGF0YS5nZXRD
bGllbnRNYWpvclZlcnNpb24oKSA+PSAzKTsKIAogICAgIC8vIFNldCB0aGUgY3VycmVudCB0cmFu
c2Zvcm0gZmVlZGJhY2sgc3RhdGUKICAgICBnbDo6VHJhbnNmb3JtRmVlZGJhY2sgKnRyYW5zZm9y
bUZlZWRiYWNrID0gc3RhdGUuZ2V0Q3VycmVudFRyYW5zZm9ybUZlZWRiYWNrKCk7CkBAIC03OTYs
MTEgKzgyNCwxMSBAQCB2b2lkIFN0YXRlTWFuYWdlckdMOjpzZXRBdHRyaWJ1dGVDdXJyZW50CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1WZXJ0ZXhBdHRyaWJD
dXJyZW50VmFsdWVzW2luZGV4XS5GbG9hdFZhbHVlcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIEdMX0lOVDoKLSAgICAgICAgICAgICAgICBtRnVuY3Rpb25zLT52
ZXJ0ZXhBdHRyaWI0aXYoc3RhdGljX2Nhc3Q8R0x1aW50PihpbmRleCksCisgICAgICAgICAgICAg
ICAgbUZ1bmN0aW9ucy0+dmVydGV4QXR0cmliSTRpdihzdGF0aWNfY2FzdDxHTHVpbnQ+KGluZGV4
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVZlcnRleEF0
dHJpYkN1cnJlbnRWYWx1ZXNbaW5kZXhdLkludFZhbHVlcyk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKLSAgICAgICAgICAgICAgICBt
RnVuY3Rpb25zLT52ZXJ0ZXhBdHRyaWI0dWl2KHN0YXRpY19jYXN0PEdMdWludD4oaW5kZXgpLAor
ICAgICAgICAgICAgICAgIG1GdW5jdGlvbnMtPnZlcnRleEF0dHJpYkk0dWl2KHN0YXRpY19jYXN0
PEdMdWludD4oaW5kZXgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbVZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZXNbaW5kZXhdLlVuc2lnbmVkSW50VmFsdWVz
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJM
RSgpOwpAQCAtMTQ2MCw2ICsxNDg4LDEwIEBAIHZvaWQgU3RhdGVNYW5hZ2VyR0w6OnN5bmNTdGF0
ZShjb25zdCBnbDoKICAgICAgICAgICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBzcGxpdCB0aGlz
CiAgICAgICAgICAgICAgICAgc2V0UGl4ZWxVbnBhY2tTdGF0ZShzdGF0ZS5nZXRVbnBhY2tTdGF0
ZSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRl
OjpESVJUWV9CSVRfVU5QQUNLX0JVRkZFUl9CSU5ESU5HOgorICAgICAgICAgICAgICAgIC8vIFRP
RE8oam1hZGlsbCk6IHNwbGl0IHRoaXMKKyAgICAgICAgICAgICAgICBzZXRQaXhlbFVucGFja1N0
YXRlKHN0YXRlLmdldFVucGFja1N0YXRlKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9QQUNLX0FMSUdOTUVOVDoKICAgICAg
ICAgICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBzcGxpdCB0aGlzCiAgICAgICAgICAgICAgICAg
c2V0UGl4ZWxQYWNrU3RhdGUoc3RhdGUuZ2V0UGFja1N0YXRlKCkpOwpAQCAtMTQ4MCw4ICsxNTEy
LDEyIEBAIHZvaWQgU3RhdGVNYW5hZ2VyR0w6OnN5bmNTdGF0ZShjb25zdCBnbDoKICAgICAgICAg
ICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBzcGxpdCB0aGlzCiAgICAgICAgICAgICAgICAgc2V0
UGl4ZWxQYWNrU3RhdGUoc3RhdGUuZ2V0UGFja1N0YXRlKCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9QQUNLX0JVRkZFUl9C
SU5ESU5HOgorICAgICAgICAgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IHNwbGl0IHRoaXMKKyAg
ICAgICAgICAgICAgICBzZXRQaXhlbFBhY2tTdGF0ZShzdGF0ZS5nZXRQYWNrU3RhdGUoKSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlf
QklUX0RJVEhFUl9FTkFCTEVEOgotICAgICAgICAgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IGlt
cGxlbWVudCB0aGlzCisgICAgICAgICAgICAgICAgc2V0RGl0aGVyRW5hYmxlZChzdGF0ZS5pc0Rp
dGhlckVuYWJsZWQoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IGdsOjpTdGF0ZTo6RElSVFlfQklUX0dFTkVSQVRFX01JUE1BUF9ISU5UOgogICAgICAgICAgICAg
ICAgIC8vIFRPRE8oam1hZGlsbCk6IGltcGxlbWVudCB0aGlzCkBAIC0xNTA0LDYgKzE1NDAsMjYg
QEAgdm9pZCBTdGF0ZU1hbmFnZXJHTDo6c3luY1N0YXRlKGNvbnN0IGdsOgogICAgICAgICAgICAg
Y2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9QUk9HUkFNX0JJTkRJTkc6CiAgICAgICAgICAgICAg
ICAgLy8gVE9ETyhqbWFkaWxsKTogaW1wbGVtZW50IHRoaXMKICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfTVVMVElTQU1QTElORzoK
KyAgICAgICAgICAgICAgICBzZXRNdWx0aXNhbXBsaW5nU3RhdGVFbmFibGVkKHN0YXRlLmlzTXVs
dGlzYW1wbGluZ0VuYWJsZWQoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX1NBTVBMRV9BTFBIQV9UT19PTkU6CisgICAgICAg
ICAgICAgICAgc2V0U2FtcGxlQWxwaGFUb09uZVN0YXRlRW5hYmxlZChzdGF0ZS5pc1NhbXBsZUFs
cGhhVG9PbmVFbmFibGVkKCkpOworICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJ
VF9DT1ZFUkFHRV9NT0RVTEFUSU9OOgorICAgICAgICAgICAgICAgIHNldENvdmVyYWdlTW9kdWxh
dGlvbihzdGF0ZS5nZXRDb3ZlcmFnZU1vZHVsYXRpb24oKSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX1BBVEhfUkVOREVSSU5H
X01BVFJJWF9NVjoKKyAgICAgICAgICAgICAgICBzZXRQYXRoUmVuZGVyaW5nTW9kZWxWaWV3TWF0
cml4KAorICAgICAgICAgICAgICAgICAgICBzdGF0ZS5nZXRQYXRoUmVuZGVyaW5nTWF0cml4KEdM
X1BBVEhfTU9ERUxWSUVXX01BVFJJWF9DSFJPTUlVTSkpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9QQVRIX1JFTkRFUklOR19N
QVRSSVhfUFJPSjoKKyAgICAgICAgICAgICAgICBzZXRQYXRoUmVuZGVyaW5nUHJvamVjdGlvbk1h
dHJpeCgKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUuZ2V0UGF0aFJlbmRlcmluZ01hdHJpeChH
TF9QQVRIX1BST0pFQ1RJT05fTUFUUklYX0NIUk9NSVVNKSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX1BBVEhfUkVOREVSSU5H
X1NURU5DSUxfU1RBVEU6CisgICAgICAgICAgICAgICAgc2V0UGF0aFJlbmRlcmluZ1N0ZW5jaWxT
dGF0ZShzdGF0ZS5nZXRQYXRoU3RlbmNpbEZ1bmMoKSwgc3RhdGUuZ2V0UGF0aFN0ZW5jaWxSZWYo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmdl
dFBhdGhTdGVuY2lsTWFzaygpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGRpcnR5Qml0
ID49IGdsOjpTdGF0ZTo6RElSVFlfQklUX0NVUlJFTlRfVkFMVUVfMCAmJgpAQCAtMTUzNiw2ICsx
NTkyLDEwMiBAQCB2b2lkIFN0YXRlTWFuYWdlckdMOjpzZXRGcmFtZWJ1ZmZlclNSR0JFCiAgICAg
fQogfQogCit2b2lkIFN0YXRlTWFuYWdlckdMOjpzZXREaXRoZXJFbmFibGVkKGJvb2wgZW5hYmxl
ZCkKK3sKKyAgICBpZiAobURpdGhlckVuYWJsZWQgIT0gZW5hYmxlZCkKKyAgICB7CisgICAgICAg
IG1EaXRoZXJFbmFibGVkID0gZW5hYmxlZDsKKyAgICAgICAgaWYgKG1EaXRoZXJFbmFibGVkKQor
ICAgICAgICB7CisgICAgICAgICAgICBtRnVuY3Rpb25zLT5lbmFibGUoR0xfRElUSEVSKTsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIG1GdW5jdGlvbnMt
PmRpc2FibGUoR0xfRElUSEVSKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBTdGF0ZU1h
bmFnZXJHTDo6c2V0TXVsdGlzYW1wbGluZ1N0YXRlRW5hYmxlZChib29sIGVuYWJsZWQpCit7Cisg
ICAgaWYgKG1NdWx0aXNhbXBsaW5nRW5hYmxlZCAhPSBlbmFibGVkKQorICAgIHsKKyAgICAgICAg
bU11bHRpc2FtcGxpbmdFbmFibGVkID0gZW5hYmxlZDsKKyAgICAgICAgaWYgKG1NdWx0aXNhbXBs
aW5nRW5hYmxlZCkKKyAgICAgICAgeworICAgICAgICAgICAgbUZ1bmN0aW9ucy0+ZW5hYmxlKEdM
X01VTFRJU0FNUExFX0VYVCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7Cisg
ICAgICAgICAgICBtRnVuY3Rpb25zLT5kaXNhYmxlKEdMX01VTFRJU0FNUExFX0VYVCk7CisgICAg
ICAgIH0KKyAgICAgICAgbUxvY2FsRGlydHlCaXRzLnNldChnbDo6U3RhdGU6OkRJUlRZX0JJVF9N
VUxUSVNBTVBMSU5HKTsKKyAgICB9Cit9CisKK3ZvaWQgU3RhdGVNYW5hZ2VyR0w6OnNldFNhbXBs
ZUFscGhhVG9PbmVTdGF0ZUVuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIGlmIChtU2FtcGxl
QWxwaGFUb09uZUVuYWJsZWQgIT0gZW5hYmxlZCkKKyAgICB7CisgICAgICAgIG1TYW1wbGVBbHBo
YVRvT25lRW5hYmxlZCA9IGVuYWJsZWQ7CisgICAgICAgIGlmIChtU2FtcGxlQWxwaGFUb09uZUVu
YWJsZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1GdW5jdGlvbnMtPmVuYWJsZShHTF9TQU1Q
TEVfQUxQSEFfVE9fT05FKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAg
ICAgICAgICAgIG1GdW5jdGlvbnMtPmRpc2FibGUoR0xfU0FNUExFX0FMUEhBX1RPX09ORSk7Cisg
ICAgICAgIH0KKyAgICAgICAgbUxvY2FsRGlydHlCaXRzLnNldChnbDo6U3RhdGU6OkRJUlRZX0JJ
VF9TQU1QTEVfQUxQSEFfVE9fT05FKTsKKyAgICB9Cit9CisKK3ZvaWQgU3RhdGVNYW5hZ2VyR0w6
OnNldENvdmVyYWdlTW9kdWxhdGlvbihHTGVudW0gY29tcG9uZW50cykKK3sKKyAgICBpZiAobUNv
dmVyYWdlTW9kdWxhdGlvbiAhPSBjb21wb25lbnRzKQorICAgIHsKKyAgICAgICAgbUNvdmVyYWdl
TW9kdWxhdGlvbiA9IGNvbXBvbmVudHM7CisgICAgICAgIG1GdW5jdGlvbnMtPmNvdmVyYWdlTW9k
dWxhdGlvbk5WKGNvbXBvbmVudHMpOworCisgICAgICAgIG1Mb2NhbERpcnR5Qml0cy5zZXQoZ2w6
OlN0YXRlOjpESVJUWV9CSVRfQ09WRVJBR0VfTU9EVUxBVElPTik7CisgICAgfQorfQorCit2b2lk
IFN0YXRlTWFuYWdlckdMOjpzZXRQYXRoUmVuZGVyaW5nTW9kZWxWaWV3TWF0cml4KGNvbnN0IEdM
ZmxvYXQgKm0pCit7CisgICAgaWYgKG1lbWNtcChtUGF0aE1hdHJpeE1WLCBtLCBzaXplb2YobVBh
dGhNYXRyaXhNVikpICE9IDApCisgICAgeworICAgICAgICBtZW1jcHkobVBhdGhNYXRyaXhNViwg
bSwgc2l6ZW9mKG1QYXRoTWF0cml4TVYpKTsKKyAgICAgICAgbUZ1bmN0aW9ucy0+bWF0cml4TG9h
ZEVYVChHTF9QQVRIX01PREVMVklFV19DSFJPTUlVTSwgbSk7CisKKyAgICAgICAgbUxvY2FsRGly
dHlCaXRzLnNldChnbDo6U3RhdGU6OkRJUlRZX0JJVF9QQVRIX1JFTkRFUklOR19NQVRSSVhfTVYp
OworICAgIH0KK30KKwordm9pZCBTdGF0ZU1hbmFnZXJHTDo6c2V0UGF0aFJlbmRlcmluZ1Byb2pl
Y3Rpb25NYXRyaXgoY29uc3QgR0xmbG9hdCAqbSkKK3sKKyAgICBpZiAobWVtY21wKG1QYXRoTWF0
cml4UHJvaiwgbSwgc2l6ZW9mKG1QYXRoTWF0cml4UHJvaikpICE9IDApCisgICAgeworICAgICAg
ICBtZW1jcHkobVBhdGhNYXRyaXhQcm9qLCBtLCBzaXplb2YobVBhdGhNYXRyaXhQcm9qKSk7Cisg
ICAgICAgIG1GdW5jdGlvbnMtPm1hdHJpeExvYWRFWFQoR0xfUEFUSF9QUk9KRUNUSU9OX0NIUk9N
SVVNLCBtKTsKKworICAgICAgICBtTG9jYWxEaXJ0eUJpdHMuc2V0KGdsOjpTdGF0ZTo6RElSVFlf
QklUX1BBVEhfUkVOREVSSU5HX01BVFJJWF9QUk9KKTsKKyAgICB9Cit9CisKK3ZvaWQgU3RhdGVN
YW5hZ2VyR0w6OnNldFBhdGhSZW5kZXJpbmdTdGVuY2lsU3RhdGUoR0xlbnVtIGZ1bmMsIEdMaW50
IHJlZiwgR0x1aW50IG1hc2spCit7CisgICAgaWYgKGZ1bmMgIT0gbVBhdGhTdGVuY2lsRnVuYyB8
fCByZWYgIT0gbVBhdGhTdGVuY2lsUmVmIHx8IG1hc2sgIT0gbVBhdGhTdGVuY2lsTWFzaykKKyAg
ICB7CisgICAgICAgIG1QYXRoU3RlbmNpbEZ1bmMgPSBmdW5jOworICAgICAgICBtUGF0aFN0ZW5j
aWxSZWYgID0gcmVmOworICAgICAgICBtUGF0aFN0ZW5jaWxNYXNrID0gbWFzazsKKyAgICAgICAg
bUZ1bmN0aW9ucy0+cGF0aFN0ZW5jaWxGdW5jTlYoZnVuYywgcmVmLCBtYXNrKTsKKworICAgICAg
ICBtTG9jYWxEaXJ0eUJpdHMuc2V0KGdsOjpTdGF0ZTo6RElSVFlfQklUX1BBVEhfUkVOREVSSU5H
X1NURU5DSUxfU1RBVEUpOworICAgIH0KK30KKwogdm9pZCBTdGF0ZU1hbmFnZXJHTDo6c2V0VGV4
dHVyZUN1YmVtYXBTZWFtbGVzc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewogICAgIGlmIChtVGV4
dHVyZUN1YmVtYXBTZWFtbGVzc0VuYWJsZWQgIT0gZW5hYmxlZCkKQEAgLTE1NTIsNCArMTcwNCw5
IEBAIHZvaWQgU3RhdGVNYW5hZ2VyR0w6OnNldFRleHR1cmVDdWJlbWFwU2UKICAgICB9CiB9CiAK
K0dMdWludCBTdGF0ZU1hbmFnZXJHTDo6Z2V0Qm91bmRCdWZmZXIoR0xlbnVtIHR5cGUpCit7Cisg
ICAgQVNTRVJUKG1CdWZmZXJzLmZpbmQodHlwZSkgIT0gbUJ1ZmZlcnMuZW5kKCkpOworICAgIHJl
dHVybiBtQnVmZmVyc1t0eXBlXTsKK30KIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TdGF0ZU1h
bmFnZXJHTC5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2VyR0wuaAkod29ya2luZyBjb3B5KQpA
QCAtMjAsNyArMjAsNyBAQAogbmFtZXNwYWNlIGdsCiB7CiBzdHJ1Y3QgQ2FwczsKLXN0cnVjdCBE
YXRhOworY2xhc3MgQ29udGV4dFN0YXRlOwogY2xhc3MgU3RhdGU7CiB9CiAKQEAgLTEyNCwyNSAr
MTI0LDM5IEBAIGNsYXNzIFN0YXRlTWFuYWdlckdMIGZpbmFsIDogYW5nbGU6Ok5vbkMKIAogICAg
IHZvaWQgc2V0RnJhbWVidWZmZXJTUkdCRW5hYmxlZChib29sIGVuYWJsZWQpOwogCisgICAgdm9p
ZCBzZXREaXRoZXJFbmFibGVkKGJvb2wgZW5hYmxlZCk7CisKKyAgICB2b2lkIHNldE11bHRpc2Ft
cGxpbmdTdGF0ZUVuYWJsZWQoYm9vbCBlbmFibGVkKTsKKyAgICB2b2lkIHNldFNhbXBsZUFscGhh
VG9PbmVTdGF0ZUVuYWJsZWQoYm9vbCBlbmFibGVkKTsKKworICAgIHZvaWQgc2V0Q292ZXJhZ2VN
b2R1bGF0aW9uKEdMZW51bSBjb21wb25lbnRzKTsKKworICAgIHZvaWQgc2V0UGF0aFJlbmRlcmlu
Z01vZGVsVmlld01hdHJpeChjb25zdCBHTGZsb2F0ICptKTsKKyAgICB2b2lkIHNldFBhdGhSZW5k
ZXJpbmdQcm9qZWN0aW9uTWF0cml4KGNvbnN0IEdMZmxvYXQgKm0pOworICAgIHZvaWQgc2V0UGF0
aFJlbmRlcmluZ1N0ZW5jaWxTdGF0ZShHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQgbWFz
ayk7CisKICAgICB2b2lkIG9uRGVsZXRlUXVlcnlPYmplY3QoUXVlcnlHTCAqcXVlcnkpOwogCi0g
ICAgZ2w6OkVycm9yIHNldERyYXdBcnJheXNTdGF0ZShjb25zdCBnbDo6RGF0YSAmZGF0YSwKKyAg
ICBnbDo6RXJyb3Igc2V0RHJhd0FycmF5c1N0YXRlKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRh
dGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBmaXJzdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlQ291bnQpOwotICAgIGdsOjpFcnJv
ciBzZXREcmF3RWxlbWVudHNTdGF0ZShjb25zdCBnbDo6RGF0YSAmZGF0YSwKKyAgICBnbDo6RXJy
b3Igc2V0RHJhd0VsZW1lbnRzU3RhdGUoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZUNvdW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKipvdXRJbmRpY2VzKTsKIAotICAg
IGdsOjpFcnJvciBvbk1ha2VDdXJyZW50KGNvbnN0IGdsOjpEYXRhICZkYXRhKTsKKyAgICBnbDo6
RXJyb3IgcGF1c2VUcmFuc2Zvcm1GZWVkYmFjayhjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRh
KTsKKyAgICBnbDo6RXJyb3Igb25NYWtlQ3VycmVudChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZk
YXRhKTsKIAogICAgIHZvaWQgc3luY1N0YXRlKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGNvbnN0
IGdsOjpTdGF0ZTo6RGlydHlCaXRzICZnbERpcnR5Qml0cyk7CiAKKyAgICBHTHVpbnQgZ2V0Qm91
bmRCdWZmZXIoR0xlbnVtIHR5cGUpOworCiAgIHByaXZhdGU6Ci0gICAgZ2w6OkVycm9yIHNldEdl
bmVyaWNEcmF3U3RhdGUoY29uc3QgZ2w6OkRhdGEgJmRhdGEpOworICAgIGdsOjpFcnJvciBzZXRH
ZW5lcmljRHJhd1N0YXRlKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEpOwogCiAgICAgdm9p
ZCBzZXRUZXh0dXJlQ3ViZW1hcFNlYW1sZXNzRW5hYmxlZChib29sIGVuYWJsZWQpOwogCkBAIC0y
NTIsOCArMjY2LDIwIEBAIGNsYXNzIFN0YXRlTWFuYWdlckdMIGZpbmFsIDogYW5nbGU6Ok5vbkMK
ICAgICBHTGludCBtQ2xlYXJTdGVuY2lsOwogCiAgICAgYm9vbCBtRnJhbWVidWZmZXJTUkdCRW5h
YmxlZDsKKyAgICBib29sIG1EaXRoZXJFbmFibGVkOwogICAgIGJvb2wgbVRleHR1cmVDdWJlbWFw
U2VhbWxlc3NFbmFibGVkOwogCisgICAgYm9vbCBtTXVsdGlzYW1wbGluZ0VuYWJsZWQ7CisgICAg
Ym9vbCBtU2FtcGxlQWxwaGFUb09uZUVuYWJsZWQ7CisKKyAgICBHTGVudW0gbUNvdmVyYWdlTW9k
dWxhdGlvbjsKKworICAgIEdMZmxvYXQgbVBhdGhNYXRyaXhNVlsxNl07CisgICAgR0xmbG9hdCBt
UGF0aE1hdHJpeFByb2pbMTZdOworICAgIEdMZW51bSBtUGF0aFN0ZW5jaWxGdW5jOworICAgIEdM
aW50IG1QYXRoU3RlbmNpbFJlZjsKKyAgICBHTHVpbnQgbVBhdGhTdGVuY2lsTWFzazsKKwogICAg
IGdsOjpTdGF0ZTo6RGlydHlCaXRzIG1Mb2NhbERpcnR5Qml0czsKIH07CiAKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TdXJmYWNlR0wuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC9TdXJmYWNlR0wuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU3VyZmFjZUdMLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQsNyArMTQsOCBAQAogbmFtZXNwYWNlIHJ4CiB7CiAKLVN1cmZhY2VHTDo6
U3VyZmFjZUdMKFJlbmRlcmVyR0wgKnJlbmRlcmVyKSA6IFN1cmZhY2VJbXBsKCksIG1SZW5kZXJl
cihyZW5kZXJlcikKK1N1cmZhY2VHTDo6U3VyZmFjZUdMKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRl
ICZzdGF0ZSwgUmVuZGVyZXJHTCAqcmVuZGVyZXIpCisgICAgOiBTdXJmYWNlSW1wbChzdGF0ZSks
IG1SZW5kZXJlcihyZW5kZXJlcikKIHsKIH0KIApAQCAtMjIsOSArMjMsMTUgQEAgU3VyZmFjZUdM
Ojp+U3VyZmFjZUdMKCkKIHsKIH0KIAotRnJhbWVidWZmZXJJbXBsICpTdXJmYWNlR0w6OmNyZWF0
ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRhdGEgJmRhdGEpCitG
cmFtZWJ1ZmZlckltcGwgKlN1cmZhY2VHTDo6Y3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKGNvbnN0
IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZkYXRhKQogewogICAgIHJldHVybiBuZXcgRnJhbWVidWZm
ZXJHTChkYXRhLCBtUmVuZGVyZXItPmdldEZ1bmN0aW9ucygpLCBtUmVuZGVyZXItPmdldFN0YXRl
TWFuYWdlcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUmVuZGVyZXItPmdldFdv
cmthcm91bmRzKCksIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUmVuZGVy
ZXItPmdldFdvcmthcm91bmRzKCksIG1SZW5kZXJlci0+Z2V0QmxpdHRlcigpLCB0cnVlKTsKK30K
KworZWdsOjpFcnJvciBTdXJmYWNlR0w6OmdldFN5bmNWYWx1ZXMoRUdMdWludDY0S0hSICp1c3Qs
IEVHTHVpbnQ2NEtIUiAqbXNjLCBFR0x1aW50NjRLSFIgKnNiYykKK3sKKyAgICBVTlJFQUNIQUJM
RSgpOworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfU1VSRkFDRSk7CiB9CiB9CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU3VyZmFj
ZUdMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL1N1cmZhY2VHTC5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU3VyZmFjZUdMLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE5LDE2ICsxOSwxMSBAQCBjbGFzcyBSZW5kZXJlckdMOwogY2xhc3MgU3Vy
ZmFjZUdMIDogcHVibGljIFN1cmZhY2VJbXBsCiB7CiAgIHB1YmxpYzoKLSAgICBTdXJmYWNlR0wo
UmVuZGVyZXJHTCAqcmVuZGVyZXIpOworICAgIFN1cmZhY2VHTChjb25zdCBlZ2w6OlN1cmZhY2VT
dGF0ZSAmc3RhdGUsIFJlbmRlcmVyR0wgKnJlbmRlcmVyKTsKICAgICB+U3VyZmFjZUdMKCkgb3Zl
cnJpZGU7CiAKLSAgICBnbDo6RXJyb3IgZ2V0QXR0YWNobWVudFJlbmRlclRhcmdldChjb25zdCBn
bDo6RnJhbWVidWZmZXJBdHRhY2htZW50OjpUYXJnZXQgJnRhcmdldCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJn
ZXQgKipydE91dCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
T1VUX09GX01FTU9SWSwgIk5vdCBzdXBwb3J0ZWQgb24gT3BlbkdMIik7Ci0gICAgfQotCi0gICAg
RnJhbWVidWZmZXJJbXBsICpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1l
YnVmZmVyOjpEYXRhICZkYXRhKSBvdmVycmlkZTsKKyAgICBGcmFtZWJ1ZmZlckltcGwgKmNyZWF0
ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmZGF0YSkgb3Zl
cnJpZGU7CisgICAgZWdsOjpFcnJvciBnZXRTeW5jVmFsdWVzKEVHTHVpbnQ2NEtIUiAqdXN0LCBF
R0x1aW50NjRLSFIgKm1zYywgRUdMdWludDY0S0hSICpzYmMpIG92ZXJyaWRlOwogCiAgICAgdmly
dHVhbCBlZ2w6OkVycm9yIG1ha2VDdXJyZW50KCkgPSAwOwogCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvVGV4dHVyZUdMLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
VGV4dHVyZUdMLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1RleHR1cmVHTC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgsNiArOCw3IEBACiAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9UZXh0dXJl
R0wuaCIKIAorI2luY2x1ZGUgImNvbW1vbi9CaXRTZXRJdGVyYXRvci5oIgogI2luY2x1ZGUgImNv
bW1vbi9kZWJ1Zy5oIgogI2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9TdGF0ZS5oIgpAQCAtMjAsMjEgKzIxLDI3IEBACiAjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2VyR0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9nbC9Xb3JrYXJvdW5kc0dMLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZm9y
bWF0dXRpbHNnbC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL3JlbmRlcmVyZ2xf
dXRpbHMuaCIKKwordXNpbmcgYW5nbGU6OkNoZWNrZWROdW1lcmljOwogCiBuYW1lc3BhY2UgcngK
IHsKIAotc3RhdGljIGJvb2wgVXNlVGV4SW1hZ2UyRChHTGVudW0gdGV4dHVyZVR5cGUpCituYW1l
c3BhY2UKK3sKKworYm9vbCBVc2VUZXhJbWFnZTJEKEdMZW51bSB0ZXh0dXJlVHlwZSkKIHsKICAg
ICByZXR1cm4gdGV4dHVyZVR5cGUgPT0gR0xfVEVYVFVSRV8yRCB8fCB0ZXh0dXJlVHlwZSA9PSBH
TF9URVhUVVJFX0NVQkVfTUFQOwogfQogCi1zdGF0aWMgYm9vbCBVc2VUZXhJbWFnZTNEKEdMZW51
bSB0ZXh0dXJlVHlwZSkKK2Jvb2wgVXNlVGV4SW1hZ2UzRChHTGVudW0gdGV4dHVyZVR5cGUpCiB7
CiAgICAgcmV0dXJuIHRleHR1cmVUeXBlID09IEdMX1RFWFRVUkVfMkRfQVJSQVkgfHwgdGV4dHVy
ZVR5cGUgPT0gR0xfVEVYVFVSRV8zRDsKIH0KIAotc3RhdGljIGJvb2wgQ29tcGF0aWJsZVRleHR1
cmVUYXJnZXQoR0xlbnVtIHRleHR1cmVUeXBlLCBHTGVudW0gdGV4dHVyZVRhcmdldCkKK2Jvb2wg
Q29tcGF0aWJsZVRleHR1cmVUYXJnZXQoR0xlbnVtIHRleHR1cmVUeXBlLCBHTGVudW0gdGV4dHVy
ZVRhcmdldCkKIHsKICAgICBpZiAodGV4dHVyZVR5cGUgIT0gR0xfVEVYVFVSRV9DVUJFX01BUCkK
ICAgICB7CkBAIC00NiwxMyArNTMsMTMgQEAgc3RhdGljIGJvb2wgQ29tcGF0aWJsZVRleHR1cmVU
YXJnZXQoR0xlbgogICAgIH0KIH0KIAotc3RhdGljIGJvb2wgSXNMVU1BRm9ybWF0KEdMZW51bSBm
b3JtYXQpCitib29sIElzTFVNQUZvcm1hdChHTGVudW0gZm9ybWF0KQogewogICAgIHJldHVybiBm
b3JtYXQgPT0gR0xfTFVNSU5BTkNFIHx8IGZvcm1hdCA9PSBHTF9BTFBIQSB8fCBmb3JtYXQgPT0g
R0xfTFVNSU5BTkNFX0FMUEhBOwogfQogCi1zdGF0aWMgTFVNQVdvcmthcm91bmRHTCBHZXRMVU1B
V29ya2Fyb3VuZEluZm8oY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZvcmlnaW5hbEZvcm1hdElu
Zm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGRlc3RpbmF0aW9uRm9ybWF0KQorTFVNQVdvcmthcm91bmRHTCBHZXRMVU1BV29ya2Fyb3VuZElu
Zm8oY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZvcmlnaW5hbEZvcm1hdEluZm8sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdGluYXRpb25Gb3JtYXQp
CiB7CiAgICAgaWYgKElzTFVNQUZvcm1hdChvcmlnaW5hbEZvcm1hdEluZm8uZm9ybWF0KSkKICAg
ICB7CkBAIC02NywyMyArNzQsMzUgQEAgc3RhdGljIExVTUFXb3JrYXJvdW5kR0wgR2V0TFVNQVdv
cmthcm91bgogICAgIH0KIH0KIAotc3RhdGljIGJvb2wgSXNEZXB0aFN0ZW5jaWxGb3JtYXQoR0xl
bnVtIGZvcm1hdCkKK2Jvb2wgSXNEZXB0aFN0ZW5jaWxGb3JtYXQoR0xlbnVtIGZvcm1hdCkKIHsK
ICAgICByZXR1cm4gZm9ybWF0ID09IEdMX0RFUFRIX0NPTVBPTkVOVCB8fCBmb3JtYXQgPT0gR0xf
REVQVEhfU1RFTkNJTDsKIH0KIAotc3RhdGljIGJvb2wgR2V0RGVwdGhTdGVuY2lsV29ya2Fyb3Vu
ZChjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJm9yaWdpbmFsRm9ybWF0SW5mbykKK2Jvb2wgR2V0
RGVwdGhTdGVuY2lsV29ya2Fyb3VuZChjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJm9yaWdpbmFs
Rm9ybWF0SW5mbykKIHsKICAgICByZXR1cm4gSXNEZXB0aFN0ZW5jaWxGb3JtYXQob3JpZ2luYWxG
b3JtYXRJbmZvLmZvcm1hdCk7CiB9CiAKLXN0YXRpYyBMZXZlbEluZm9HTCBHZXRMZXZlbEluZm8o
R0xlbnVtIG9yaWdpbmFsRm9ybWF0LCBHTGVudW0gZGVzdGluYXRpb25Gb3JtYXQpCitMZXZlbElu
Zm9HTCBHZXRMZXZlbEluZm8oR0xlbnVtIG9yaWdpbmFsRm9ybWF0LCBHTGVudW0gZGVzdGluYXRp
b25Gb3JtYXQpCiB7CiAgICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZvcmlnaW5hbEZvcm1h
dEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKG9yaWdpbmFsRm9ybWF0KTsKICAgICBy
ZXR1cm4gTGV2ZWxJbmZvR0wob3JpZ2luYWxGb3JtYXQsIEdldERlcHRoU3RlbmNpbFdvcmthcm91
bmQob3JpZ2luYWxGb3JtYXRJbmZvKSwKICAgICAgICAgICAgICAgICAgICAgICAgR2V0TFVNQVdv
cmthcm91bmRJbmZvKG9yaWdpbmFsRm9ybWF0SW5mbywgZGVzdGluYXRpb25Gb3JtYXQpKTsKIH0K
IAorZ2w6OlRleHR1cmU6OkRpcnR5Qml0cyBHZXRMZXZlbFdvcmthcm91bmREaXJ0eUJpdHMoKQor
eworICAgIGdsOjpUZXh0dXJlOjpEaXJ0eUJpdHMgYml0czsKKyAgICBiaXRzLnNldChnbDo6VGV4
dHVyZTo6RElSVFlfQklUX1NXSVpaTEVfUkVEKTsKKyAgICBiaXRzLnNldChnbDo6VGV4dHVyZTo6
RElSVFlfQklUX1NXSVpaTEVfR1JFRU4pOworICAgIGJpdHMuc2V0KGdsOjpUZXh0dXJlOjpESVJU
WV9CSVRfU1dJWlpMRV9CTFVFKTsKKyAgICBiaXRzLnNldChnbDo6VGV4dHVyZTo6RElSVFlfQklU
X1NXSVpaTEVfQUxQSEEpOworICAgIHJldHVybiBiaXRzOworfQorCit9ICAvLyBhbm9ueW1vdXMg
bmFtZXNwYWNlCisKIExVTUFXb3JrYXJvdW5kR0w6OkxVTUFXb3JrYXJvdW5kR0woKSA6IExVTUFX
b3JrYXJvdW5kR0woZmFsc2UsIEdMX05PTkUpCiB7CiB9CkBAIC0xMDYsMTkgKzEyNSwxOCBAQCBM
ZXZlbEluZm9HTDo6TGV2ZWxJbmZvR0woR0xlbnVtIHNvdXJjZUZvCiB7CiB9CiAKLVRleHR1cmVH
TDo6VGV4dHVyZUdMKEdMZW51bSB0eXBlLAorVGV4dHVyZUdMOjpUZXh0dXJlR0woY29uc3QgZ2w6
OlRleHR1cmVTdGF0ZSAmc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGdW5jdGlv
bnNHTCAqZnVuY3Rpb25zLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29ya2Fyb3VuZHNH
TCAmd29ya2Fyb3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICBTdGF0ZU1hbmFnZXJHTCAqc3Rh
dGVNYW5hZ2VyLAogICAgICAgICAgICAgICAgICAgICAgQmxpdEdMICpibGl0dGVyKQotICAgIDog
VGV4dHVyZUltcGwoKSwKLSAgICAgIG1UZXh0dXJlVHlwZSh0eXBlKSwKKyAgICA6IFRleHR1cmVJ
bXBsKHN0YXRlKSwKICAgICAgIG1GdW5jdGlvbnMoZnVuY3Rpb25zKSwKICAgICAgIG1Xb3JrYXJv
dW5kcyh3b3JrYXJvdW5kcyksCiAgICAgICBtU3RhdGVNYW5hZ2VyKHN0YXRlTWFuYWdlciksCiAg
ICAgICBtQmxpdHRlcihibGl0dGVyKSwKLSAgICAgIG1MZXZlbEluZm8oZ2w6OklNUExFTUVOVEFU
SU9OX01BWF9URVhUVVJFX0xFVkVMUyksCi0gICAgICBtQXBwbGllZFRleHR1cmVTdGF0ZSgpLAor
ICAgICAgbUxldmVsSW5mbyhnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTICsg
MSksCisgICAgICBtQXBwbGllZFRleHR1cmVTdGF0ZShzdGF0ZS5tVGFyZ2V0KSwKICAgICAgIG1U
ZXh0dXJlSUQoMCkKIHsKICAgICBBU1NFUlQobUZ1bmN0aW9ucyk7CkBAIC0xMjYsNyArMTQ0LDcg
QEAgVGV4dHVyZUdMOjpUZXh0dXJlR0woR0xlbnVtIHR5cGUsCiAgICAgQVNTRVJUKG1CbGl0dGVy
KTsKIAogICAgIG1GdW5jdGlvbnMtPmdlblRleHR1cmVzKDEsICZtVGV4dHVyZUlEKTsKLSAgICBt
U3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShtVGV4dHVyZVR5cGUsIG1UZXh0dXJlSUQpOworICAg
IG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKG1TdGF0ZS5tVGFyZ2V0LCBtVGV4dHVyZUlEKTsK
IH0KIAogVGV4dHVyZUdMOjp+VGV4dHVyZUdMKCkKQEAgLTEzNSwzMCArMTUzLDgzIEBAIFRleHR1
cmVHTDo6flRleHR1cmVHTCgpCiAgICAgbVRleHR1cmVJRCA9IDA7CiB9CiAKLXZvaWQgVGV4dHVy
ZUdMOjpzZXRVc2FnZShHTGVudW0gdXNhZ2UpCi17Ci0gICAgLy8gR0xfQU5HTEVfdGV4dHVyZV91
c2FnZSBub3QgaW1wbGVtZW50ZWQgZm9yIGRlc2t0b3AgR0wKLSAgICBVTlJFQUNIQUJMRSgpOwor
Z2w6OkVycm9yIFRleHR1cmVHTDo6c2V0SW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNr
U3RhdGUgJnVucGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4
X3QgKnBpeGVscykKK3sKKyAgICBpZiAobVdvcmthcm91bmRzLnVucGFja092ZXJsYXBwaW5nUm93
c1NlcGFyYXRlbHlVbnBhY2tCdWZmZXIgJiYgdW5wYWNrLnBpeGVsQnVmZmVyLmdldCgpICYmCisg
ICAgICAgIHVucGFjay5yb3dMZW5ndGggIT0gMCAmJiB1bnBhY2sucm93TGVuZ3RoIDwgc2l6ZS53
aWR0aCkKKyAgICB7CisgICAgICAgIC8vIFRoZSByb3dzIG92ZXJsYXAgaW4gdW5wYWNrIG1lbW9y
eS4gVXBsb2FkIHRoZSB0ZXh0dXJlIHJvdyBieSByb3cgdG8gd29yayBhcm91bmQKKyAgICAgICAg
Ly8gZHJpdmVyIGJ1Zy4KKyAgICAgICAgcmVzZXJ2ZVRleEltYWdlVG9CZUZpbGxlZCh0YXJnZXQs
IGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgc2l6ZSwgZm9ybWF0LCB0eXBlKTsKKworICAgICAgICBp
ZiAoc2l6ZS53aWR0aCA9PSAwIHx8IHNpemUuaGVpZ2h0ID09IDAgfHwgc2l6ZS5kZXB0aCA9PSAw
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGdsOjpCb3ggYXJlYSgwLCAwLCAwLCBzaXplLndpZHRoLCBzaXplLmhlaWdo
dCwgc2l6ZS5kZXB0aCk7CisgICAgICAgIHJldHVybiBzZXRTdWJJbWFnZVJvd0J5Um93V29ya2Fy
b3VuZCh0YXJnZXQsIGxldmVsLCBhcmVhLCBmb3JtYXQsIHR5cGUsIHVucGFjaywgcGl4ZWxzKTsK
KyAgICB9CisKKyAgICBpZiAobVdvcmthcm91bmRzLnVucGFja0xhc3RSb3dTZXBhcmF0ZWx5Rm9y
UGFkZGluZ0luY2x1c2lvbikKKyAgICB7CisgICAgICAgIGJvb2wgYXBwbHk7CisgICAgICAgIEFO
R0xFX1RSWV9SRVNVTFQoU2hvdWxkQXBwbHlMYXN0Um93UGFkZGluZ1dvcmthcm91bmQoc2l6ZSwg
dW5wYWNrLCBmb3JtYXQsIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlVGV4SW1hZ2UzRChtU3RhdGUubVRhcmdldCks
IHBpeGVscyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbHkpOworCisgICAgICAgIC8v
IFRoZSBkcml2ZXIgd2lsbCB0aGluayB0aGUgcGl4ZWwgYnVmZmVyIGRvZXNuJ3QgaGF2ZSBlbm91
Z2ggZGF0YSwgd29yayBhcm91bmQgdGhpcyBidWcKKyAgICAgICAgLy8gYnkgdXBsb2FkaW5nIHRo
ZSBsYXN0IHJvdyAoYW5kIGxhc3QgbGV2ZWwgaWYgM0QpIHNlcGFyYXRlbHkuCisgICAgICAgIGlm
IChhcHBseSkKKyAgICAgICAgeworICAgICAgICAgICAgcmVzZXJ2ZVRleEltYWdlVG9CZUZpbGxl
ZCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgc2l6ZSwgZm9ybWF0LCB0eXBlKTsKKwor
ICAgICAgICAgICAgaWYgKHNpemUud2lkdGggPT0gMCB8fCBzaXplLmhlaWdodCA9PSAwIHx8IHNp
emUuZGVwdGggPT0gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6
Ok5vRXJyb3IoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZ2w6OkJveCBhcmVhKDAs
IDAsIDAsIHNpemUud2lkdGgsIHNpemUuaGVpZ2h0LCBzaXplLmRlcHRoKTsKKyAgICAgICAgICAg
IHJldHVybiBzZXRTdWJJbWFnZVBhZGRpbmdXb3JrYXJvdW5kKHRhcmdldCwgbGV2ZWwsIGFyZWEs
IGZvcm1hdCwgdHlwZSwgdW5wYWNrLCBwaXhlbHMpOworICAgICAgICB9CisgICAgfQorCisgICAg
c2V0SW1hZ2VIZWxwZXIodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHNpemUsIGZvcm1h
dCwgdHlwZSwgcGl4ZWxzKTsKKworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6
RXJyb3IgVGV4dHVyZUdMOjpzZXRJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIEdM
ZW51bSBpbnRlcm5hbEZvcm1hdCwgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsIEdMZW51bSBmb3Jt
YXQsIEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywgY29uc3QgdWludDhfdCAqcGl4ZWxzKQordm9pZCBU
ZXh0dXJlR0w6OnNldEltYWdlSGVscGVyKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVs
cykKIHsKICAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKCZDb21wYXRpYmxlVGV4dHVyZVRh
cmdldCk7IC8vIFJlZmVyZW5jZSB0aGlzIGZ1bmN0aW9uIHRvIGF2b2lkIHdhcm5pbmdzLgotICAg
IEFTU0VSVChDb21wYXRpYmxlVGV4dHVyZVRhcmdldChtVGV4dHVyZVR5cGUsIHRhcmdldCkpOwor
ICAgIEFTU0VSVChDb21wYXRpYmxlVGV4dHVyZVRhcmdldChtU3RhdGUubVRhcmdldCwgdGFyZ2V0
KSk7CiAKICAgICBuYXRpdmVnbDo6VGV4SW1hZ2VGb3JtYXQgdGV4SW1hZ2VGb3JtYXQgPQogICAg
ICAgICBuYXRpdmVnbDo6R2V0VGV4SW1hZ2VGb3JtYXQobUZ1bmN0aW9ucywgbVdvcmthcm91bmRz
LCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlKTsKIAotICAgIG1TdGF0ZU1hbmFnZXItPmJp
bmRUZXh0dXJlKG1UZXh0dXJlVHlwZSwgbVRleHR1cmVJRCk7Ci0gICAgaWYgKFVzZVRleEltYWdl
MkQobVRleHR1cmVUeXBlKSkKKyAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShtU3RhdGUu
bVRhcmdldCwgbVRleHR1cmVJRCk7CisKKyAgICBpZiAoVXNlVGV4SW1hZ2UyRChtU3RhdGUubVRh
cmdldCkpCiAgICAgewogICAgICAgICBBU1NFUlQoc2l6ZS5kZXB0aCA9PSAxKTsKICAgICAgICAg
bUZ1bmN0aW9ucy0+dGV4SW1hZ2UyRCh0YXJnZXQsIHN0YXRpY19jYXN0PEdMaW50PihsZXZlbCks
IHRleEltYWdlRm9ybWF0LmludGVybmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemUud2lkdGgsIHNpemUuaGVpZ2h0LCAwLCB0ZXhJbWFnZUZvcm1hdC5mb3JtYXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4SW1hZ2VGb3JtYXQudHlwZSwgcGl4
ZWxzKTsKICAgICB9Ci0gICAgZWxzZSBpZiAoVXNlVGV4SW1hZ2UzRChtVGV4dHVyZVR5cGUpKQor
ICAgIGVsc2UgaWYgKFVzZVRleEltYWdlM0QobVN0YXRlLm1UYXJnZXQpKQogICAgIHsKICAgICAg
ICAgbUZ1bmN0aW9ucy0+dGV4SW1hZ2UzRCh0YXJnZXQsIHN0YXRpY19jYXN0PEdMaW50PihsZXZl
bCksIHRleEltYWdlRm9ybWF0LmludGVybmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemUud2lkdGgsIHNpemUuaGVpZ2h0LCBzaXplLmRlcHRoLCAwLCB0ZXhJbWFn
ZUZvcm1hdC5mb3JtYXQsCkBAIC0xNjksNjEgKzI0MCwyMzMgQEAgZ2w6OkVycm9yIFRleHR1cmVH
TDo6c2V0SW1hZ2UoR0xlbnVtIHRhcgogICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgIH0KIAot
ICAgIG1MZXZlbEluZm9bbGV2ZWxdID0gR2V0TGV2ZWxJbmZvKGludGVybmFsRm9ybWF0LCB0ZXhJ
bWFnZUZvcm1hdC5pbnRlcm5hbEZvcm1hdCk7CisgICAgc2V0TGV2ZWxJbmZvKGxldmVsLCAxLCBH
ZXRMZXZlbEluZm8oaW50ZXJuYWxGb3JtYXQsIHRleEltYWdlRm9ybWF0LmludGVybmFsRm9ybWF0
KSk7Cit9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKK3ZvaWQgVGV4dHVy
ZUdMOjpyZXNlcnZlVGV4SW1hZ2VUb0JlRmlsbGVkKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50
cyAmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdHlwZSkKK3sKKyAgICBHTHVpbnQgdW5wYWNrQnVmZmVyID0gbVN0YXRlTWFuYWdlci0+Z2V0
Qm91bmRCdWZmZXIoR0xfUElYRUxfVU5QQUNLX0JVRkZFUik7CisgICAgbVN0YXRlTWFuYWdlci0+
YmluZEJ1ZmZlcihHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCAwKTsKKyAgICBnbDo6UGl4ZWxVbnBh
Y2tTdGF0ZSB1bnBhY2s7CisgICAgc2V0SW1hZ2VIZWxwZXIodGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxGb3JtYXQsIHNpemUsIGZvcm1hdCwgdHlwZSwgbnVsbHB0cik7CisgICAgbVN0YXRlTWFuYWdl
ci0+YmluZEJ1ZmZlcihHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCB1bnBhY2tCdWZmZXIpOwogfQog
CiBnbDo6RXJyb3IgVGV4dHVyZUdMOjpzZXRTdWJJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3Qg
bGV2ZWwsIGNvbnN0IGdsOjpCb3ggJmFyZWEsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3Rh
dGUgJnVucGFjaywgY29uc3QgdWludDhfdCAqcGl4ZWxzKQogewotICAgIEFTU0VSVChDb21wYXRp
YmxlVGV4dHVyZVRhcmdldChtVGV4dHVyZVR5cGUsIHRhcmdldCkpOworICAgIEFTU0VSVChDb21w
YXRpYmxlVGV4dHVyZVRhcmdldChtU3RhdGUubVRhcmdldCwgdGFyZ2V0KSk7CiAKICAgICBuYXRp
dmVnbDo6VGV4U3ViSW1hZ2VGb3JtYXQgdGV4U3ViSW1hZ2VGb3JtYXQgPQogICAgICAgICBuYXRp
dmVnbDo6R2V0VGV4U3ViSW1hZ2VGb3JtYXQobUZ1bmN0aW9ucywgbVdvcmthcm91bmRzLCBmb3Jt
YXQsIHR5cGUpOwogCi0gICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUobVRleHR1cmVUeXBl
LCBtVGV4dHVyZUlEKTsKLSAgICBpZiAoVXNlVGV4SW1hZ2UyRChtVGV4dHVyZVR5cGUpKQorICAg
IEFTU0VSVChtTGV2ZWxJbmZvW2xldmVsXS5sdW1hV29ya2Fyb3VuZC5lbmFibGVkID09CisgICAg
ICAgICAgIEdldExldmVsSW5mbyhmb3JtYXQsIHRleFN1YkltYWdlRm9ybWF0LmZvcm1hdCkubHVt
YVdvcmthcm91bmQuZW5hYmxlZCk7CisKKyAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZSht
U3RhdGUubVRhcmdldCwgbVRleHR1cmVJRCk7CisgICAgaWYgKG1Xb3JrYXJvdW5kcy51bnBhY2tP
dmVybGFwcGluZ1Jvd3NTZXBhcmF0ZWx5VW5wYWNrQnVmZmVyICYmIHVucGFjay5waXhlbEJ1ZmZl
ci5nZXQoKSAmJgorICAgICAgICB1bnBhY2sucm93TGVuZ3RoICE9IDAgJiYgdW5wYWNrLnJvd0xl
bmd0aCA8IGFyZWEud2lkdGgpCisgICAgeworICAgICAgICByZXR1cm4gc2V0U3ViSW1hZ2VSb3dC
eVJvd1dvcmthcm91bmQodGFyZ2V0LCBsZXZlbCwgYXJlYSwgZm9ybWF0LCB0eXBlLCB1bnBhY2ss
IHBpeGVscyk7CisgICAgfQorCisgICAgaWYgKG1Xb3JrYXJvdW5kcy51bnBhY2tMYXN0Um93U2Vw
YXJhdGVseUZvclBhZGRpbmdJbmNsdXNpb24pCisgICAgeworICAgICAgICBnbDo6RXh0ZW50cyBz
aXplKGFyZWEud2lkdGgsIGFyZWEuaGVpZ2h0LCBhcmVhLmRlcHRoKTsKKworICAgICAgICBib29s
IGFwcGx5OworICAgICAgICBBTkdMRV9UUllfUkVTVUxUKFNob3VsZEFwcGx5TGFzdFJvd1BhZGRp
bmdXb3JrYXJvdW5kKHNpemUsIHVucGFjaywgZm9ybWF0LCB0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZVRleEltYWdl
M0QobVN0YXRlLm1UYXJnZXQpLCBwaXhlbHMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFw
cGx5KTsKKworICAgICAgICAvLyBUaGUgZHJpdmVyIHdpbGwgdGhpbmsgdGhlIHBpeGVsIGJ1ZmZl
ciBkb2Vzbid0IGhhdmUgZW5vdWdoIGRhdGEsIHdvcmsgYXJvdW5kIHRoaXMgYnVnCisgICAgICAg
IC8vIGJ5IHVwbG9hZGluZyB0aGUgbGFzdCByb3cgKGFuZCBsYXN0IGxldmVsIGlmIDNEKSBzZXBh
cmF0ZWx5LgorICAgICAgICBpZiAoYXBwbHkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBzZXRTdWJJbWFnZVBhZGRpbmdXb3JrYXJvdW5kKHRhcmdldCwgbGV2ZWwsIGFyZWEsIGZvcm1h
dCwgdHlwZSwgdW5wYWNrLCBwaXhlbHMpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKFVz
ZVRleEltYWdlMkQobVN0YXRlLm1UYXJnZXQpKQogICAgIHsKICAgICAgICAgQVNTRVJUKGFyZWEu
eiA9PSAwICYmIGFyZWEuZGVwdGggPT0gMSk7CiAgICAgICAgIG1GdW5jdGlvbnMtPnRleFN1Yklt
YWdlMkQodGFyZ2V0LCBzdGF0aWNfY2FzdDxHTGludD4obGV2ZWwpLCBhcmVhLngsIGFyZWEueSwg
YXJlYS53aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmVhLmhlaWdo
dCwgdGV4U3ViSW1hZ2VGb3JtYXQuZm9ybWF0LCB0ZXhTdWJJbWFnZUZvcm1hdC50eXBlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVscyk7CiAgICAgfQotICAgIGVsc2Ug
aWYgKFVzZVRleEltYWdlM0QobVRleHR1cmVUeXBlKSkKKyAgICBlbHNlCiAgICAgeworICAgICAg
ICBBU1NFUlQoVXNlVGV4SW1hZ2UzRChtU3RhdGUubVRhcmdldCkpOwogICAgICAgICBtRnVuY3Rp
b25zLT50ZXhTdWJJbWFnZTNEKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0xpbnQ+KGxldmVsKSwgYXJl
YS54LCBhcmVhLnksIGFyZWEueiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
cmVhLndpZHRoLCBhcmVhLmhlaWdodCwgYXJlYS5kZXB0aCwgdGV4U3ViSW1hZ2VGb3JtYXQuZm9y
bWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleFN1YkltYWdlRm9ybWF0
LnR5cGUsIHBpeGVscyk7CiAgICAgfQorCisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJP
Uik7Cit9CisKK2dsOjpFcnJvciBUZXh0dXJlR0w6OnNldFN1YkltYWdlUm93QnlSb3dXb3JrYXJv
dW5kKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZhcmVhLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykKK3sK
KyAgICBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSBkaXJlY3RVbnBhY2s7CisgICAgZGlyZWN0VW5wYWNr
LnBpeGVsQnVmZmVyID0gdW5wYWNrLnBpeGVsQnVmZmVyOworICAgIGRpcmVjdFVucGFjay5hbGln
bm1lbnQgICA9IDE7CisgICAgbVN0YXRlTWFuYWdlci0+c2V0UGl4ZWxVbnBhY2tTdGF0ZShkaXJl
Y3RVbnBhY2spOworICAgIGRpcmVjdFVucGFjay5waXhlbEJ1ZmZlci5zZXQobnVsbHB0cik7CisK
KyAgICBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJmdsRm9ybWF0ID0KKyAgICAgICAgZ2w6Okdl
dEludGVybmFsRm9ybWF0SW5mbyhnbDo6R2V0U2l6ZWRJbnRlcm5hbEZvcm1hdChmb3JtYXQsIHR5
cGUpKTsKKyAgICBHTHVpbnQgcm93Qnl0ZXMgICAgICAgICAgICAgICAgICAgICAgPSAwOworICAg
IEFOR0xFX1RSWV9SRVNVTFQoZ2xGb3JtYXQuY29tcHV0ZVJvd1BpdGNoKHR5cGUsIGFyZWEud2lk
dGgsIHVucGFjay5hbGlnbm1lbnQsIHVucGFjay5yb3dMZW5ndGgpLAorICAgICAgICAgICAgICAg
ICAgICAgcm93Qnl0ZXMpOworICAgIEdMdWludCBpbWFnZUJ5dGVzID0gMDsKKyAgICBBTkdMRV9U
UllfUkVTVUxUKGdsRm9ybWF0LmNvbXB1dGVEZXB0aFBpdGNoKGFyZWEuaGVpZ2h0LCB1bnBhY2su
aW1hZ2VIZWlnaHQsIHJvd0J5dGVzKSwKKyAgICAgICAgICAgICAgICAgICAgIGltYWdlQnl0ZXMp
OworICAgIGJvb2wgdXNlVGV4SW1hZ2UzRCA9IFVzZVRleEltYWdlM0QobVN0YXRlLm1UYXJnZXQp
OworICAgIEdMdWludCBza2lwQnl0ZXMgICA9IDA7CisgICAgQU5HTEVfVFJZX1JFU1VMVChnbEZv
cm1hdC5jb21wdXRlU2tpcEJ5dGVzKHJvd0J5dGVzLCBpbWFnZUJ5dGVzLCB1bnBhY2ssIHVzZVRl
eEltYWdlM0QpLAorICAgICAgICAgICAgICAgICAgICAgc2tpcEJ5dGVzKTsKKworICAgIGNvbnN0
IHVpbnQ4X3QgKnBpeGVsc1dpdGhTa2lwID0gcGl4ZWxzICsgc2tpcEJ5dGVzOworICAgIGlmICh1
c2VUZXhJbWFnZTNEKQorICAgIHsKKyAgICAgICAgZm9yIChHTGludCBpbWFnZSA9IDA7IGltYWdl
IDwgYXJlYS5kZXB0aDsgKytpbWFnZSkKKyAgICAgICAgeworICAgICAgICAgICAgR0xpbnQgaW1h
Z2VCeXRlT2Zmc2V0ID0gaW1hZ2UgKiBpbWFnZUJ5dGVzOworICAgICAgICAgICAgZm9yIChHTGlu
dCByb3cgPSAwOyByb3cgPCBhcmVhLmhlaWdodDsgKytyb3cpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgR0xpbnQgYnl0ZU9mZnNldCAgICAgICAgID0gaW1hZ2VCeXRlT2Zmc2V0ICsg
cm93ICogcm93Qnl0ZXM7CisgICAgICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSAqcm93UGl4ZWxz
ID0gcGl4ZWxzV2l0aFNraXAgKyBieXRlT2Zmc2V0OworICAgICAgICAgICAgICAgIG1GdW5jdGlv
bnMtPnRleFN1YkltYWdlM0QodGFyZ2V0LCBzdGF0aWNfY2FzdDxHTGludD4obGV2ZWwpLCBhcmVh
LngsIHJvdyArIGFyZWEueSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGltYWdlICsgYXJlYS56LCBhcmVhLndpZHRoLCAxLCAxLCBmb3JtYXQsIHR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dQaXhlbHMpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIFVOUkVB
Q0hBQkxFKCk7CisgICAgICAgIEFTU0VSVChVc2VUZXhJbWFnZTJEKG1TdGF0ZS5tVGFyZ2V0KSk7
CisgICAgICAgIGZvciAoR0xpbnQgcm93ID0gMDsgcm93IDwgYXJlYS5oZWlnaHQ7ICsrcm93KQor
ICAgICAgICB7CisgICAgICAgICAgICBHTGludCBieXRlT2Zmc2V0ICAgICAgICAgPSByb3cgKiBy
b3dCeXRlczsKKyAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgKnJvd1BpeGVscyA9IHBpeGVsc1dp
dGhTa2lwICsgYnl0ZU9mZnNldDsKKyAgICAgICAgICAgIG1GdW5jdGlvbnMtPnRleFN1YkltYWdl
MkQodGFyZ2V0LCBzdGF0aWNfY2FzdDxHTGludD4obGV2ZWwpLCBhcmVhLngsIHJvdyArIGFyZWEu
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlYS53aWR0aCwgMSwg
Zm9ybWF0LCB0eXBlLCByb3dQaXhlbHMpOworICAgICAgICB9CiAgICAgfQorICAgIHJldHVybiBn
bDo6Tm9FcnJvcigpOworfQogCi0gICAgQVNTRVJUKG1MZXZlbEluZm9bbGV2ZWxdLmx1bWFXb3Jr
YXJvdW5kLmVuYWJsZWQgPT0KLSAgICAgICAgICAgR2V0TGV2ZWxJbmZvKGZvcm1hdCwgdGV4U3Vi
SW1hZ2VGb3JtYXQuZm9ybWF0KS5sdW1hV29ya2Fyb3VuZC5lbmFibGVkKTsKK2dsOjpFcnJvciBU
ZXh0dXJlR0w6OnNldFN1YkltYWdlUGFkZGluZ1dvcmthcm91bmQoR0xlbnVtIHRhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxl
dmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6Qm94ICZhcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUg
JnVucGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKQoreworICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1h
dCAmZ2xGb3JtYXQgPQorICAgICAgICBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGdsOjpHZXRT
aXplZEludGVybmFsRm9ybWF0KGZvcm1hdCwgdHlwZSkpOworICAgIEdMdWludCByb3dCeXRlcyA9
IDA7CisgICAgQU5HTEVfVFJZX1JFU1VMVChnbEZvcm1hdC5jb21wdXRlUm93UGl0Y2godHlwZSwg
YXJlYS53aWR0aCwgdW5wYWNrLmFsaWdubWVudCwgdW5wYWNrLnJvd0xlbmd0aCksCisgICAgICAg
ICAgICAgICAgICAgICByb3dCeXRlcyk7CisgICAgR0x1aW50IGltYWdlQnl0ZXMgPSAwOworICAg
IEFOR0xFX1RSWV9SRVNVTFQoZ2xGb3JtYXQuY29tcHV0ZURlcHRoUGl0Y2goYXJlYS5oZWlnaHQs
IHVucGFjay5pbWFnZUhlaWdodCwgcm93Qnl0ZXMpLAorICAgICAgICAgICAgICAgICAgICAgaW1h
Z2VCeXRlcyk7CisgICAgYm9vbCB1c2VUZXhJbWFnZTNEID0gVXNlVGV4SW1hZ2UzRChtU3RhdGUu
bVRhcmdldCk7CisgICAgR0x1aW50IHNraXBCeXRlcyAgID0gMDsKKyAgICBBTkdMRV9UUllfUkVT
VUxUKGdsRm9ybWF0LmNvbXB1dGVTa2lwQnl0ZXMocm93Qnl0ZXMsIGltYWdlQnl0ZXMsIHVucGFj
aywgdXNlVGV4SW1hZ2UzRCksCisgICAgICAgICAgICAgICAgICAgICBza2lwQnl0ZXMpOworCisg
ICAgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgZGlyZWN0VW5wYWNrOworICAgIGRpcmVjdFVucGFjay5w
aXhlbEJ1ZmZlciA9IHVucGFjay5waXhlbEJ1ZmZlcjsKKyAgICBkaXJlY3RVbnBhY2suYWxpZ25t
ZW50ICAgPSAxOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgaWYg
KHVzZVRleEltYWdlM0QpCisgICAgeworICAgICAgICAvLyBVcGxvYWQgYWxsIGJ1dCB0aGUgbGFz
dCBzbGljZQorICAgICAgICBpZiAoYXJlYS5kZXB0aCA+IDEpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1GdW5jdGlvbnMtPnRleFN1YkltYWdlM0QodGFyZ2V0LCBzdGF0aWNfY2FzdDxHTGludD4o
bGV2ZWwpLCBhcmVhLngsIGFyZWEueSwgYXJlYS56LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhcmVhLndpZHRoLCBhcmVhLmhlaWdodCwgYXJlYS5kZXB0aCAtIDEsIGZv
cm1hdCwgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxz
KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFVwbG9hZCB0aGUgbGFzdCBzbGljZSBidXQgaXRz
IGxhc3Qgcm93CisgICAgICAgIGlmIChhcmVhLmhlaWdodCA+IDEpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIC8vIERvIG5vdCBpbmNsdWRlIHNraXBCeXRlcyBpbiB0aGUgbGFzdCBpbWFnZSBwaXhl
bCBzdGFydCBvZmZzZXQgYXMgaXQgd2lsbCBiZSBkb25lIGJ5CisgICAgICAgICAgICAvLyB0aGUg
ZHJpdmVyCisgICAgICAgICAgICBHTGludCBsYXN0SW1hZ2VPZmZzZXQgICAgICAgICAgPSAoYXJl
YS5kZXB0aCAtIDEpICogaW1hZ2VCeXRlczsKKyAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgKmxh
c3RJbWFnZVBpeGVscyA9IHBpeGVscyArIGxhc3RJbWFnZU9mZnNldDsKKyAgICAgICAgICAgIG1G
dW5jdGlvbnMtPnRleFN1YkltYWdlM0QodGFyZ2V0LCBzdGF0aWNfY2FzdDxHTGludD4obGV2ZWwp
LCBhcmVhLngsIGFyZWEueSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXJlYS56ICsgYXJlYS5kZXB0aCAtIDEsIGFyZWEud2lkdGgsIGFyZWEuaGVpZ2h0IC0gMSwgMSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBsYXN0
SW1hZ2VQaXhlbHMpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVXBsb2FkIHRoZSBsYXN0IHJv
dyBvZiB0aGUgbGFzdCBzbGljZSAibWFudWFsbHkiCisgICAgICAgIG1TdGF0ZU1hbmFnZXItPnNl
dFBpeGVsVW5wYWNrU3RhdGUoZGlyZWN0VW5wYWNrKTsKKworICAgICAgICBHTGludCBsYXN0Um93
T2Zmc2V0ID0KKyAgICAgICAgICAgIHNraXBCeXRlcyArIChhcmVhLmRlcHRoIC0gMSkgKiBpbWFn
ZUJ5dGVzICsgKGFyZWEuaGVpZ2h0IC0gMSkgKiByb3dCeXRlczsKKyAgICAgICAgY29uc3QgR0x1
Ynl0ZSAqbGFzdFJvd1BpeGVscyA9IHBpeGVscyArIGxhc3RSb3dPZmZzZXQ7CisgICAgICAgIG1G
dW5jdGlvbnMtPnRleFN1YkltYWdlM0QodGFyZ2V0LCBzdGF0aWNfY2FzdDxHTGludD4obGV2ZWwp
LCBhcmVhLngsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlYS55ICsgYXJl
YS5oZWlnaHQgLSAxLCBhcmVhLnogKyBhcmVhLmRlcHRoIC0gMSwgYXJlYS53aWR0aCwgMSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCBmb3JtYXQsIHR5cGUsIGxhc3RSb3dQ
aXhlbHMpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBBU1NFUlQoVXNlVGV4SW1h
Z2UyRChtU3RhdGUubVRhcmdldCkpOworCisgICAgICAgIC8vIFVwbG9hZCBhbGwgYnV0IHRoZSBs
YXN0IHJvdworICAgICAgICBpZiAoYXJlYS5oZWlnaHQgPiAxKQorICAgICAgICB7CisgICAgICAg
ICAgICBtRnVuY3Rpb25zLT50ZXhTdWJJbWFnZTJEKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0xpbnQ+
KGxldmVsKSwgYXJlYS54LCBhcmVhLnksIGFyZWEud2lkdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFyZWEuaGVpZ2h0IC0gMSwgZm9ybWF0LCB0eXBlLCBwaXhlbHMp
OworICAgICAgICB9CisKKyAgICAgICAgLy8gVXBsb2FkIHRoZSBsYXN0IHJvdyAibWFudWFsbHki
CisgICAgICAgIG1TdGF0ZU1hbmFnZXItPnNldFBpeGVsVW5wYWNrU3RhdGUoZGlyZWN0VW5wYWNr
KTsKKworICAgICAgICBHTGludCBsYXN0Um93T2Zmc2V0ICAgICAgICAgID0gc2tpcEJ5dGVzICsg
KGFyZWEuaGVpZ2h0IC0gMSkgKiByb3dCeXRlczsKKyAgICAgICAgY29uc3QgR0x1Ynl0ZSAqbGFz
dFJvd1BpeGVscyA9IHBpeGVscyArIGxhc3RSb3dPZmZzZXQ7CisgICAgICAgIG1GdW5jdGlvbnMt
PnRleFN1YkltYWdlMkQodGFyZ2V0LCBzdGF0aWNfY2FzdDxHTGludD4obGV2ZWwpLCBhcmVhLngs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlYS55ICsgYXJlYS5oZWlnaHQg
LSAxLCBhcmVhLndpZHRoLCAxLCBmb3JtYXQsIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGFzdFJvd1BpeGVscyk7CisgICAgfQorCisgICAgZGlyZWN0VW5wYWNrLnBp
eGVsQnVmZmVyLnNldChudWxscHRyKTsKKworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQog
CiBnbDo6RXJyb3IgVGV4dHVyZUdMOjpzZXRDb21wcmVzc2VkSW1hZ2UoR0xlbnVtIHRhcmdldCwg
c2l6ZV90IGxldmVsLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIGNvbnN0IGdsOjpFeHRlbnRzICZz
aXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQ
aXhlbFVucGFja1N0YXRlICZ1bnBhY2ssIHNpemVfdCBpbWFnZVNpemUsIGNvbnN0IHVpbnQ4X3Qg
KnBpeGVscykKIHsKLSAgICBBU1NFUlQoQ29tcGF0aWJsZVRleHR1cmVUYXJnZXQobVRleHR1cmVU
eXBlLCB0YXJnZXQpKTsKKyAgICBBU1NFUlQoQ29tcGF0aWJsZVRleHR1cmVUYXJnZXQobVN0YXRl
Lm1UYXJnZXQsIHRhcmdldCkpOwogCiAgICAgbmF0aXZlZ2w6OkNvbXByZXNzZWRUZXhJbWFnZUZv
cm1hdCBjb21wcmVzc2VkVGV4SW1hZ2VGb3JtYXQgPQogICAgICAgICBuYXRpdmVnbDo6R2V0Q29t
cHJlc3NlZFRleEltYWdlRm9ybWF0KG1GdW5jdGlvbnMsIG1Xb3JrYXJvdW5kcywgaW50ZXJuYWxG
b3JtYXQpOwogCi0gICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUobVRleHR1cmVUeXBlLCBt
VGV4dHVyZUlEKTsKLSAgICBpZiAoVXNlVGV4SW1hZ2UyRChtVGV4dHVyZVR5cGUpKQorICAgIG1T
dGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKG1TdGF0ZS5tVGFyZ2V0LCBtVGV4dHVyZUlEKTsKKyAg
ICBpZiAoVXNlVGV4SW1hZ2UyRChtU3RhdGUubVRhcmdldCkpCiAgICAgewogICAgICAgICBBU1NF
UlQoc2l6ZS5kZXB0aCA9PSAxKTsKICAgICAgICAgbUZ1bmN0aW9ucy0+Y29tcHJlc3NlZFRleElt
YWdlMkQodGFyZ2V0LCBzdGF0aWNfY2FzdDxHTGludD4obGV2ZWwpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2VkVGV4SW1hZ2VGb3JtYXQuaW50ZXJu
YWxGb3JtYXQsIHNpemUud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemUuaGVpZ2h0LCAwLCBzdGF0aWNfY2FzdDxHTHNpemVpPihpbWFnZVNpemUpLCBw
aXhlbHMpOwogICAgIH0KLSAgICBlbHNlIGlmIChVc2VUZXhJbWFnZTNEKG1UZXh0dXJlVHlwZSkp
CisgICAgZWxzZSBpZiAoVXNlVGV4SW1hZ2UzRChtU3RhdGUubVRhcmdldCkpCiAgICAgewogICAg
ICAgICBtRnVuY3Rpb25zLT5jb21wcmVzc2VkVGV4SW1hZ2UzRCgKICAgICAgICAgICAgIHRhcmdl
dCwgc3RhdGljX2Nhc3Q8R0xpbnQ+KGxldmVsKSwgY29tcHJlc3NlZFRleEltYWdlRm9ybWF0Lmlu
dGVybmFsRm9ybWF0LCBzaXplLndpZHRoLApAQCAtMjM0LDcgKzQ3Nyw3IEBAIGdsOjpFcnJvciBU
ZXh0dXJlR0w6OnNldENvbXByZXNzZWRJbWFnZSgKICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAg
ICB9CiAKLSAgICBtTGV2ZWxJbmZvW2xldmVsXSA9IEdldExldmVsSW5mbyhpbnRlcm5hbEZvcm1h
dCwgY29tcHJlc3NlZFRleEltYWdlRm9ybWF0LmludGVybmFsRm9ybWF0KTsKKyAgICBzZXRMZXZl
bEluZm8obGV2ZWwsIDEsIEdldExldmVsSW5mbyhpbnRlcm5hbEZvcm1hdCwgY29tcHJlc3NlZFRl
eEltYWdlRm9ybWF0LmludGVybmFsRm9ybWF0KSk7CiAgICAgQVNTRVJUKCFtTGV2ZWxJbmZvW2xl
dmVsXS5sdW1hV29ya2Fyb3VuZC5lbmFibGVkKTsKIAogICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
Tk9fRVJST1IpOwpAQCAtMjQzLDIwICs0ODYsMjAgQEAgZ2w6OkVycm9yIFRleHR1cmVHTDo6c2V0
Q29tcHJlc3NlZEltYWdlKAogZ2w6OkVycm9yIFRleHR1cmVHTDo6c2V0Q29tcHJlc3NlZFN1Yklt
YWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6OkJveCAmYXJlYSwgR0xl
bnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBzaXplX3QgaW1hZ2VTaXplLCBjb25z
dCB1aW50OF90ICpwaXhlbHMpCiB7Ci0gICAgQVNTRVJUKENvbXBhdGlibGVUZXh0dXJlVGFyZ2V0
KG1UZXh0dXJlVHlwZSwgdGFyZ2V0KSk7CisgICAgQVNTRVJUKENvbXBhdGlibGVUZXh0dXJlVGFy
Z2V0KG1TdGF0ZS5tVGFyZ2V0LCB0YXJnZXQpKTsKIAogICAgIG5hdGl2ZWdsOjpDb21wcmVzc2Vk
VGV4U3ViSW1hZ2VGb3JtYXQgY29tcHJlc3NlZFRleFN1YkltYWdlRm9ybWF0ID0KICAgICAgICAg
bmF0aXZlZ2w6OkdldENvbXByZXNzZWRTdWJUZXhJbWFnZUZvcm1hdChtRnVuY3Rpb25zLCBtV29y
a2Fyb3VuZHMsIGZvcm1hdCk7CiAKLSAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShtVGV4
dHVyZVR5cGUsIG1UZXh0dXJlSUQpOwotICAgIGlmIChVc2VUZXhJbWFnZTJEKG1UZXh0dXJlVHlw
ZSkpCisgICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUobVN0YXRlLm1UYXJnZXQsIG1UZXh0
dXJlSUQpOworICAgIGlmIChVc2VUZXhJbWFnZTJEKG1TdGF0ZS5tVGFyZ2V0KSkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChhcmVhLnogPT0gMCAmJiBhcmVhLmRlcHRoID09IDEpOwogICAgICAgICBt
RnVuY3Rpb25zLT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCgKICAgICAgICAgICAgIHRhcmdldCwg
c3RhdGljX2Nhc3Q8R0xpbnQ+KGxldmVsKSwgYXJlYS54LCBhcmVhLnksIGFyZWEud2lkdGgsIGFy
ZWEuaGVpZ2h0LAogICAgICAgICAgICAgY29tcHJlc3NlZFRleFN1YkltYWdlRm9ybWF0LmZvcm1h
dCwgc3RhdGljX2Nhc3Q8R0xzaXplaT4oaW1hZ2VTaXplKSwgcGl4ZWxzKTsKICAgICB9Ci0gICAg
ZWxzZSBpZiAoVXNlVGV4SW1hZ2UzRChtVGV4dHVyZVR5cGUpKQorICAgIGVsc2UgaWYgKFVzZVRl
eEltYWdlM0QobVN0YXRlLm1UYXJnZXQpKQogICAgIHsKICAgICAgICAgbUZ1bmN0aW9ucy0+Y29t
cHJlc3NlZFRleFN1YkltYWdlM0QodGFyZ2V0LCBzdGF0aWNfY2FzdDxHTGludD4obGV2ZWwpLCBh
cmVhLngsIGFyZWEueSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXJlYS56LCBhcmVhLndpZHRoLCBhcmVhLmhlaWdodCwgYXJlYS5kZXB0aCwKQEAgLTI4NCw3
ICs1MjcsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZUdMOjpjb3B5SW1hZ2UoR0xlbnVtIHRhCiAgICAg
aWYgKGxldmVsSW5mby5sdW1hV29ya2Fyb3VuZC5lbmFibGVkKQogICAgIHsKICAgICAgICAgZ2w6
OkVycm9yIGVycm9yID0gbUJsaXR0ZXItPmNvcHlJbWFnZVRvTFVNQVdvcmthcm91bmRUZXh0dXJl
KAotICAgICAgICAgICAgbVRleHR1cmVJRCwgbVRleHR1cmVUeXBlLCB0YXJnZXQsIGxldmVsSW5m
by5zb3VyY2VGb3JtYXQsIGxldmVsLCBzb3VyY2VBcmVhLAorICAgICAgICAgICAgbVRleHR1cmVJ
RCwgbVN0YXRlLm1UYXJnZXQsIHRhcmdldCwgbGV2ZWxJbmZvLnNvdXJjZUZvcm1hdCwgbGV2ZWws
IHNvdXJjZUFyZWEsCiAgICAgICAgICAgICBjb3B5VGV4SW1hZ2VGb3JtYXQuaW50ZXJuYWxGb3Jt
YXQsIHNvdXJjZSk7CiAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgIHsKQEAg
LTI5NSwxMSArNTM4LDExIEBAIGdsOjpFcnJvciBUZXh0dXJlR0w6OmNvcHlJbWFnZShHTGVudW0g
dGEKICAgICB7CiAgICAgICAgIGNvbnN0IEZyYW1lYnVmZmVyR0wgKnNvdXJjZUZyYW1lYnVmZmVy
R0wgPSBHZXRJbXBsQXM8RnJhbWVidWZmZXJHTD4oc291cmNlKTsKIAotICAgICAgICBtU3RhdGVN
YW5hZ2VyLT5iaW5kVGV4dHVyZShtVGV4dHVyZVR5cGUsIG1UZXh0dXJlSUQpOworICAgICAgICBt
U3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShtU3RhdGUubVRhcmdldCwgbVRleHR1cmVJRCk7CiAg
ICAgICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVS
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlRnJhbWVidWZm
ZXJHTC0+Z2V0RnJhbWVidWZmZXJJRCgpKTsKIAotICAgICAgICBpZiAoVXNlVGV4SW1hZ2UyRCht
VGV4dHVyZVR5cGUpKQorICAgICAgICBpZiAoVXNlVGV4SW1hZ2UyRChtU3RhdGUubVRhcmdldCkp
CiAgICAgICAgIHsKICAgICAgICAgICAgIG1GdW5jdGlvbnMtPmNvcHlUZXhJbWFnZTJEKHRhcmdl
dCwgc3RhdGljX2Nhc3Q8R0xpbnQ+KGxldmVsKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvcHlUZXhJbWFnZUZvcm1hdC5pbnRlcm5hbEZvcm1hdCwgc291cmNlQXJl
YS54LApAQCAtMzExLDcgKzU1NCw3IEBAIGdsOjpFcnJvciBUZXh0dXJlR0w6OmNvcHlJbWFnZShH
TGVudW0gdGEKICAgICAgICAgfQogICAgIH0KIAotICAgIG1MZXZlbEluZm9bbGV2ZWxdID0gbGV2
ZWxJbmZvOworICAgIHNldExldmVsSW5mbyhsZXZlbCwgMSwgbGV2ZWxJbmZvKTsKIAogICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQpAQCAtMzIxLDE1ICs1NjQsMTUgQEAgZ2w6
OkVycm9yIFRleHR1cmVHTDo6Y29weVN1YkltYWdlKEdMZW51bQogewogICAgIGNvbnN0IEZyYW1l
YnVmZmVyR0wgKnNvdXJjZUZyYW1lYnVmZmVyR0wgPSBHZXRJbXBsQXM8RnJhbWVidWZmZXJHTD4o
c291cmNlKTsKIAotICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKG1UZXh0dXJlVHlwZSwg
bVRleHR1cmVJRCk7CisgICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUobVN0YXRlLm1UYXJn
ZXQsIG1UZXh0dXJlSUQpOwogICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRGcmFtZWJ1ZmZlcihHTF9S
RUFEX0ZSQU1FQlVGRkVSLCBzb3VyY2VGcmFtZWJ1ZmZlckdMLT5nZXRGcmFtZWJ1ZmZlcklEKCkp
OwogCiAgICAgY29uc3QgTGV2ZWxJbmZvR0wgJmxldmVsSW5mbyA9IG1MZXZlbEluZm9bbGV2ZWxd
OwogICAgIGlmIChsZXZlbEluZm8ubHVtYVdvcmthcm91bmQuZW5hYmxlZCkKICAgICB7CiAgICAg
ICAgIGdsOjpFcnJvciBlcnJvciA9IG1CbGl0dGVyLT5jb3B5U3ViSW1hZ2VUb0xVTUFXb3JrYXJv
dW5kVGV4dHVyZSgKLSAgICAgICAgICAgIG1UZXh0dXJlSUQsIG1UZXh0dXJlVHlwZSwgdGFyZ2V0
LCBsZXZlbEluZm8uc291cmNlRm9ybWF0LCBsZXZlbCwgZGVzdE9mZnNldCwgc291cmNlQXJlYSwK
LSAgICAgICAgICAgIHNvdXJjZSk7CisgICAgICAgICAgICBtVGV4dHVyZUlELCBtU3RhdGUubVRh
cmdldCwgdGFyZ2V0LCBsZXZlbEluZm8uc291cmNlRm9ybWF0LCBsZXZlbCwgZGVzdE9mZnNldCwK
KyAgICAgICAgICAgIHNvdXJjZUFyZWEsIHNvdXJjZSk7CiAgICAgICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKQEAgLTMzNywxNCAr
NTgwLDE0IEBAIGdsOjpFcnJvciBUZXh0dXJlR0w6OmNvcHlTdWJJbWFnZShHTGVudW0KICAgICB9
CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgaWYgKFVzZVRleEltYWdlMkQobVRleHR1cmVUeXBl
KSkKKyAgICAgICAgaWYgKFVzZVRleEltYWdlMkQobVN0YXRlLm1UYXJnZXQpKQogICAgICAgICB7
CiAgICAgICAgICAgICBBU1NFUlQoZGVzdE9mZnNldC56ID09IDApOwogICAgICAgICAgICAgbUZ1
bmN0aW9ucy0+Y29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBzdGF0aWNfY2FzdDxHTGludD4obGV2
ZWwpLCBkZXN0T2Zmc2V0LngsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkZXN0T2Zmc2V0LnksIHNvdXJjZUFyZWEueCwgc291cmNlQXJlYS55LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlQXJlYS53aWR0aCwgc291cmNl
QXJlYS5oZWlnaHQpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKFVzZVRleEltYWdlM0Qo
bVRleHR1cmVUeXBlKSkKKyAgICAgICAgZWxzZSBpZiAoVXNlVGV4SW1hZ2UzRChtU3RhdGUubVRh
cmdldCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1GdW5jdGlvbnMtPmNvcHlUZXhTdWJJbWFn
ZTNEKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0xpbnQ+KGxldmVsKSwgZGVzdE9mZnNldC54LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdE9mZnNldC55LCBkZXN0
T2Zmc2V0LnosIHNvdXJjZUFyZWEueCwgc291cmNlQXJlYS55LApAQCAtMzY3LDggKzYxMCw4IEBA
IGdsOjpFcnJvciBUZXh0dXJlR0w6OnNldFN0b3JhZ2UoR0xlbnVtIHQKICAgICBuYXRpdmVnbDo6
VGV4U3RvcmFnZUZvcm1hdCB0ZXhTdG9yYWdlRm9ybWF0ID0KICAgICAgICAgbmF0aXZlZ2w6Okdl
dFRleFN0b3JhZ2VGb3JtYXQobUZ1bmN0aW9ucywgbVdvcmthcm91bmRzLCBpbnRlcm5hbEZvcm1h
dCk7CiAKLSAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShtVGV4dHVyZVR5cGUsIG1UZXh0
dXJlSUQpOwotICAgIGlmIChVc2VUZXhJbWFnZTJEKG1UZXh0dXJlVHlwZSkpCisgICAgbVN0YXRl
TWFuYWdlci0+YmluZFRleHR1cmUobVN0YXRlLm1UYXJnZXQsIG1UZXh0dXJlSUQpOworICAgIGlm
IChVc2VUZXhJbWFnZTJEKG1TdGF0ZS5tVGFyZ2V0KSkKICAgICB7CiAgICAgICAgIEFTU0VSVChz
aXplLmRlcHRoID09IDEpOwogICAgICAgICBpZiAobUZ1bmN0aW9ucy0+dGV4U3RvcmFnZTJEKQpA
QCAtMzkyLDExICs2MzUsMTQgQEAgZ2w6OkVycm9yIFRleHR1cmVHTDo6c2V0U3RvcmFnZShHTGVu
dW0gdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1heChzaXpl
LmhlaWdodCA+PiBsZXZlbCwgMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEpOwogCi0gICAgICAgICAgICAgICAgaWYgKG1UZXh0dXJlVHlwZSA9PSBHTF9URVhUVVJF
XzJEKQorICAgICAgICAgICAgICAgIGlmIChtU3RhdGUubVRhcmdldCA9PSBHTF9URVhUVVJFXzJE
KQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGludGVybmFsRm9y
bWF0SW5mby5jb21wcmVzc2VkKQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgZGF0YVNpemUgPSBpbnRlcm5hbEZvcm1hdEluZm8uY29tcHV0ZUJs
b2NrU2l6ZShHTF9VTlNJR05FRF9CWVRFLCBsZXZlbFNpemUud2lkdGgsIGxldmVsU2l6ZS5oZWln
aHQpOworICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGRhdGFTaXplID0gMDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEFOR0xFX1RSWV9SRVNVTFQoaW50ZXJuYWxGb3JtYXRJbmZvLmNv
bXB1dGVDb21wcmVzc2VkSW1hZ2VTaXplKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgbGV2ZWxTaXplKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVNpemUpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgbUZ1bmN0aW9ucy0+Y29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBzdGF0aWNf
Y2FzdDxHTGludD4obGV2ZWwpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGV4U3RvcmFnZUZvcm1hdC5pbnRlcm5hbEZvcm1hdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxl
dmVsU2l6ZS53aWR0aCwgbGV2ZWxTaXplLmhlaWdodCwgMCwKQEAgLTQxMCwxMyArNjU2LDE2IEBA
IGdsOjpFcnJvciBUZXh0dXJlR0w6OnNldFN0b3JhZ2UoR0xlbnVtIHQKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXRJbmZvLnR5cGUs
IG51bGxwdHIpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKG1UZXh0dXJlVHlwZSA9PSBHTF9URVhUVVJFX0NVQkVfTUFQ
KQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1TdGF0ZS5tVGFyZ2V0ID09IEdMX1RFWFRVUkVf
Q1VCRV9NQVApCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBmb3IgKEdM
ZW51bSBmYWNlID0gZ2w6OkZpcnN0Q3ViZU1hcFRleHR1cmVUYXJnZXQ7IGZhY2UgPD0gZ2w6Okxh
c3RDdWJlTWFwVGV4dHVyZVRhcmdldDsgZmFjZSsrKQogICAgICAgICAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW50ZXJuYWxGb3JtYXRJbmZvLmNvbXByZXNzZWQp
CiAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGRhdGFTaXplID0gaW50ZXJuYWxGb3JtYXRJbmZvLmNvbXB1dGVCbG9ja1NpemUoR0xf
VU5TSUdORURfQllURSwgbGV2ZWxTaXplLndpZHRoLCBsZXZlbFNpemUuaGVpZ2h0KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZGF0YVNpemUgPSAwOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFOR0xFX1RSWV9SRVNVTFQoaW50ZXJuYWxGb3JtYXRJbmZvLmNvbXB1
dGVDb21wcmVzc2VkSW1hZ2VTaXplKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIGxldmVsU2l6ZSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhU2l6ZSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+Y29tcHJlc3NlZFRleEltYWdlMkQoCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UsIHN0YXRpY19jYXN0PEdMaW50PihsZXZl
bCksIHRleFN0b3JhZ2VGb3JtYXQuaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxldmVsU2l6ZS53aWR0aCwgbGV2ZWxTaXplLmhlaWdodCwgMCwKQEAgLTQz
OCw3ICs2ODcsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZUdMOjpzZXRTdG9yYWdlKEdMZW51bSB0CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgZWxzZSBpZiAoVXNlVGV4SW1hZ2Uz
RChtVGV4dHVyZVR5cGUpKQorICAgIGVsc2UgaWYgKFVzZVRleEltYWdlM0QobVN0YXRlLm1UYXJn
ZXQpKQogICAgIHsKICAgICAgICAgaWYgKG1GdW5jdGlvbnMtPnRleFN0b3JhZ2UzRCkKICAgICAg
ICAgewpAQCAtNDU4LDE4ICs3MDcsMjAgQEAgZ2w6OkVycm9yIFRleHR1cmVHTDo6c2V0U3RvcmFn
ZShHTGVudW0gdAogCiAgICAgICAgICAgICBmb3IgKEdMc2l6ZWkgaSA9IDA7IGkgPCBzdGF0aWNf
Y2FzdDxHTHNpemVpPihsZXZlbHMpOyBpKyspCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgZ2w6OkV4dGVudHMgbGV2ZWxTaXplKHN0ZDo6bWF4KHNpemUud2lkdGggPj4gaSwgMSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4KHNpemUuaGVpZ2h0
ID4+IGksIDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVGV4dHVy
ZVR5cGUgPT0gR0xfVEVYVFVSRV8zRCA/IHN0ZDo6bWF4KHNpemUuZGVwdGggPj4gaSwgMSkgOiBz
aXplLmRlcHRoKTsKKyAgICAgICAgICAgICAgICBnbDo6RXh0ZW50cyBsZXZlbFNpemUoCisgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6bWF4KHNpemUud2lkdGggPj4gaSwgMSksIHN0ZDo6bWF4KHNp
emUuaGVpZ2h0ID4+IGksIDEpLAorICAgICAgICAgICAgICAgICAgICBtU3RhdGUubVRhcmdldCA9
PSBHTF9URVhUVVJFXzNEID8gc3RkOjptYXgoc2l6ZS5kZXB0aCA+PiBpLCAxKSA6IHNpemUuZGVw
dGgpOwogCiAgICAgICAgICAgICAgICAgaWYgKGludGVybmFsRm9ybWF0SW5mby5jb21wcmVzc2Vk
KQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkYXRhU2l6
ZSA9IHN0YXRpY19jYXN0PEdMc2l6ZWk+KGludGVybmFsRm9ybWF0SW5mby5jb21wdXRlQmxvY2tT
aXplKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lH
TkVEX0JZVEUsIGxldmVsU2l6ZS53aWR0aCwgbGV2ZWxTaXplLmhlaWdodCkpICoKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsU2l6ZS5kZXB0aDsKKyAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IGRhdGFTaXplID0gMDsKKyAgICAgICAgICAgICAgICAgICAgQU5H
TEVfVFJZX1JFU1VMVCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsRm9ybWF0SW5m
by5jb21wdXRlQ29tcHJlc3NlZEltYWdlU2l6ZShHTF9VTlNJR05FRF9CWVRFLCBsZXZlbFNpemUp
LAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVNpemUpOwogICAgICAgICAgICAgICAgICAg
ICBtRnVuY3Rpb25zLT5jb21wcmVzc2VkVGV4SW1hZ2UzRCh0YXJnZXQsIGksIHRleFN0b3JhZ2VG
b3JtYXQuaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxldmVsU2l6ZS53aWR0aCwgbGV2ZWxTaXplLmhlaWdodCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxT
aXplLmRlcHRoLCAwLCBkYXRhU2l6ZSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsU2l6ZS5kZXB0aCwgMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8R0xzaXplaT4oZGF0YVNpemUpLCBudWxscHRyKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHsKQEAgLTQ4Niw0NyArNzM3LDU0IEBA
IGdsOjpFcnJvciBUZXh0dXJlR0w6OnNldFN0b3JhZ2UoR0xlbnVtIHQKICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKICAgICB9CiAKLSAgICBMZXZlbEluZm9HTCBsZXZlbEluZm8gPSBHZXRMZXZlbElu
Zm8oaW50ZXJuYWxGb3JtYXQsIHRleFN0b3JhZ2VGb3JtYXQuaW50ZXJuYWxGb3JtYXQpOwotICAg
IGZvciAoc2l6ZV90IGxldmVsID0gMDsgbGV2ZWwgPCBtTGV2ZWxJbmZvLnNpemUoKTsgbGV2ZWwr
KykKLSAgICB7Ci0gICAgICAgIG1MZXZlbEluZm9bbGV2ZWxdID0gbGV2ZWxJbmZvOwotICAgIH0K
KyAgICBzZXRMZXZlbEluZm8oMCwgbGV2ZWxzLCBHZXRMZXZlbEluZm8oaW50ZXJuYWxGb3JtYXQs
IHRleFN0b3JhZ2VGb3JtYXQuaW50ZXJuYWxGb3JtYXQpKTsKIAogICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfTk9fRVJST1IpOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUdMOjpnZW5lcmF0ZU1pcG1h
cHMoY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmdGV4dHVyZVN0YXRlKQorZ2w6OkVycm9yIFRleHR1
cmVHTDo6c2V0SW1hZ2VFeHRlcm5hbChHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlZ2w6OlN0cmVhbSAqc3RyZWFtLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OlN0cmVhbTo6R0xUZXh0dXJlRGVzY3Jp
cHRpb24gJmRlc2MpCiB7Ci0gICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUobVRleHR1cmVU
eXBlLCBtVGV4dHVyZUlEKTsKLSAgICBtRnVuY3Rpb25zLT5nZW5lcmF0ZU1pcG1hcChtVGV4dHVy
ZVR5cGUpOworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKK30KIAotICAgIGZvciAoc2l6ZV90IGxldmVsID0gdGV4dHVyZVN0
YXRlLmJhc2VMZXZlbDsgbGV2ZWwgPCBtTGV2ZWxJbmZvLnNpemUoKTsgbGV2ZWwrKykKLSAgICB7
Ci0gICAgICAgIG1MZXZlbEluZm9bbGV2ZWxdID0gbUxldmVsSW5mb1t0ZXh0dXJlU3RhdGUuYmFz
ZUxldmVsXTsKLSAgICB9CitnbDo6RXJyb3IgVGV4dHVyZUdMOjpnZW5lcmF0ZU1pcG1hcCgpCit7
CisgICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUobVN0YXRlLm1UYXJnZXQsIG1UZXh0dXJl
SUQpOworICAgIG1GdW5jdGlvbnMtPmdlbmVyYXRlTWlwbWFwKG1TdGF0ZS5tVGFyZ2V0KTsKKwor
ICAgIGNvbnN0IEdMdWludCBlZmZlY3RpdmVCYXNlTGV2ZWwgPSBtU3RhdGUuZ2V0RWZmZWN0aXZl
QmFzZUxldmVsKCk7CisgICAgY29uc3QgR0x1aW50IG1heExldmVsICAgICAgICAgICA9IG1TdGF0
ZS5nZXRNaXBtYXBNYXhMZXZlbCgpOworCisgICAgQVNTRVJUKG1heExldmVsIDwgbUxldmVsSW5m
by5zaXplKCkpOworCisgICAgc2V0TGV2ZWxJbmZvKGVmZmVjdGl2ZUJhc2VMZXZlbCwgbWF4TGV2
ZWwgLSBlZmZlY3RpdmVCYXNlTGV2ZWwsIG1MZXZlbEluZm9bZWZmZWN0aXZlQmFzZUxldmVsXSk7
CiAKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAogdm9pZCBUZXh0dXJl
R0w6OmJpbmRUZXhJbWFnZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpCiB7Ci0gICAgQVNTRVJUKG1U
ZXh0dXJlVHlwZSA9PSBHTF9URVhUVVJFXzJEKTsKKyAgICBBU1NFUlQobVN0YXRlLm1UYXJnZXQg
PT0gR0xfVEVYVFVSRV8yRCk7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhpcyB0ZXh0dXJlIGlzIGJv
dW5kCi0gICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUobVRleHR1cmVUeXBlLCBtVGV4dHVy
ZUlEKTsKKyAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShtU3RhdGUubVRhcmdldCwgbVRl
eHR1cmVJRCk7CiAKLSAgICBtTGV2ZWxJbmZvWzBdID0gTGV2ZWxJbmZvR0woKTsKKyAgICBzZXRM
ZXZlbEluZm8oMCwgMSwgTGV2ZWxJbmZvR0woKSk7CiB9CiAKIHZvaWQgVGV4dHVyZUdMOjpyZWxl
YXNlVGV4SW1hZ2UoKQogewogICAgIC8vIE5vdCBhbGwgU3VyZmFjZSBpbXBsZW1lbnRhdGlvbnMg
cmVzZXQgdGhlIHNpemUgb2YgbWlwIDAgd2hlbiByZWxlYXNpbmcsIGRvIGl0IG1hbnVhbGx5Ci0g
ICAgQVNTRVJUKG1UZXh0dXJlVHlwZSA9PSBHTF9URVhUVVJFXzJEKTsKKyAgICBBU1NFUlQobVN0
YXRlLm1UYXJnZXQgPT0gR0xfVEVYVFVSRV8yRCk7CiAKLSAgICBtU3RhdGVNYW5hZ2VyLT5iaW5k
VGV4dHVyZShtVGV4dHVyZVR5cGUsIG1UZXh0dXJlSUQpOwotICAgIGlmIChVc2VUZXhJbWFnZTJE
KG1UZXh0dXJlVHlwZSkpCisgICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUobVN0YXRlLm1U
YXJnZXQsIG1UZXh0dXJlSUQpOworICAgIGlmIChVc2VUZXhJbWFnZTJEKG1TdGF0ZS5tVGFyZ2V0
KSkKICAgICB7Ci0gICAgICAgIG1GdW5jdGlvbnMtPnRleEltYWdlMkQobVRleHR1cmVUeXBlLCAw
LCBHTF9SR0JBLCAwLCAwLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsK
KyAgICAgICAgbUZ1bmN0aW9ucy0+dGV4SW1hZ2UyRChtU3RhdGUubVRhcmdldCwgMCwgR0xfUkdC
QSwgMCwgMCwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKQEAgLTU0MCw1
OCArNzk4LDExOSBAQCBnbDo6RXJyb3IgVGV4dHVyZUdMOjpzZXRFR0xJbWFnZVRhcmdldChHCiAg
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXRlbXBsYXRl
IDx0eXBlbmFtZSBULCB0eXBlbmFtZSBBcHBseVRleHR1cmVGdW5jVHlwZT4KLXN0YXRpYyBpbmxp
bmUgdm9pZCBTeW5jU2FtcGxlclN0YXRlTWVtYmVyKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlv
bnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcHBseVRleHR1
cmVGdW5jVHlwZSBhcHBseVRleHR1cmVGdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmbmV3U3RhdGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6U2FtcGxlclN0YXRlICZjdXJT
dGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
ZXh0dXJlVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVChn
bDo6U2FtcGxlclN0YXRlOjoqc2FtcGxlck1lbWJlcikpCi17Ci0gICAgaWYgKGN1clN0YXRlLipz
YW1wbGVyTWVtYmVyICE9IG5ld1N0YXRlLipzYW1wbGVyTWVtYmVyKQotICAgIHsKLSAgICAgICAg
YXBwbHlUZXh0dXJlRnVuYygpOwotICAgICAgICBjdXJTdGF0ZS4qc2FtcGxlck1lbWJlciA9IG5l
d1N0YXRlLipzYW1wbGVyTWVtYmVyOwotICAgICAgICBmdW5jdGlvbnMtPnRleFBhcmFtZXRlcmYo
dGV4dHVyZVR5cGUsIG5hbWUsIHN0YXRpY19jYXN0PEdMZmxvYXQ+KGN1clN0YXRlLipzYW1wbGVy
TWVtYmVyKSk7Cit2b2lkIFRleHR1cmVHTDo6c3luY1N0YXRlKGNvbnN0IGdsOjpUZXh0dXJlOjpE
aXJ0eUJpdHMgJmRpcnR5Qml0cykKK3sKKyAgICBpZiAoZGlydHlCaXRzLm5vbmUoKSAmJiBtTG9j
YWxEaXJ0eUJpdHMubm9uZSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLX0KIAot
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFwcGx5VGV4dHVyZUZ1bmNUeXBlPgotc3Rh
dGljIGlubGluZSB2b2lkIFN5bmNUZXh0dXJlU3RhdGVNZW1iZXIoY29uc3QgRnVuY3Rpb25zR0wg
KmZ1bmN0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFw
cGx5VGV4dHVyZUZ1bmNUeXBlIGFwcGx5VGV4dHVyZUZ1bmMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZuZXdTdGF0ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlU3Rh
dGUgJmN1clN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRleHR1cmVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUKGdsOjpUZXh0dXJlU3RhdGU6OipzdGF0ZU1lbWJlcikpCi17Ci0gICAgaWYgKGN1clN0
YXRlLipzdGF0ZU1lbWJlciAhPSBuZXdTdGF0ZS4qc3RhdGVNZW1iZXIpCi0gICAgewotICAgICAg
ICBhcHBseVRleHR1cmVGdW5jKCk7Ci0gICAgICAgIGN1clN0YXRlLipzdGF0ZU1lbWJlciA9IG5l
d1N0YXRlLipzdGF0ZU1lbWJlcjsKLSAgICAgICAgZnVuY3Rpb25zLT50ZXhQYXJhbWV0ZXJmKHRl
eHR1cmVUeXBlLCBuYW1lLCBzdGF0aWNfY2FzdDxHTGZsb2F0PihjdXJTdGF0ZS4qc3RhdGVNZW1i
ZXIpKTsKKyAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShtU3RhdGUubVRhcmdldCwgbVRl
eHR1cmVJRCk7CisKKyAgICBpZiAoZGlydHlCaXRzW2dsOjpUZXh0dXJlOjpESVJUWV9CSVRfQkFT
RV9MRVZFTF0gfHwgZGlydHlCaXRzW2dsOjpUZXh0dXJlOjpESVJUWV9CSVRfTUFYX0xFVkVMXSkK
KyAgICB7CisgICAgICAgIC8vIERvbid0IGtub3cgaWYgdGhlIHByZXZpb3VzIGJhc2UgbGV2ZWwg
d2FzIHVzaW5nIGFueSB3b3JrYXJvdW5kcywgYWx3YXlzIHJlLXN5bmMgdGhlCisgICAgICAgIC8v
IHdvcmthcm91bmQgZGlydHkgYml0cworICAgICAgICBtTG9jYWxEaXJ0eUJpdHMgfD0gR2V0TGV2
ZWxXb3JrYXJvdW5kRGlydHlCaXRzKCk7CisgICAgfQorCisgICAgZm9yIChhdXRvIGRpcnR5Qml0
IDogYW5nbGU6Okl0ZXJhdGVCaXRTZXQoZGlydHlCaXRzIHwgbUxvY2FsRGlydHlCaXRzKSkKKyAg
ICB7CisgICAgICAgIHN3aXRjaCAoZGlydHlCaXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNh
c2UgZ2w6OlRleHR1cmU6OkRJUlRZX0JJVF9NSU5fRklMVEVSOgorICAgICAgICAgICAgICAgIG1G
dW5jdGlvbnMtPnRleFBhcmFtZXRlcmkobVN0YXRlLm1UYXJnZXQsIEdMX1RFWFRVUkVfTUlOX0ZJ
TFRFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0ZS5n
ZXRTYW1wbGVyU3RhdGUoKS5taW5GaWx0ZXIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBnbDo6VGV4dHVyZTo6RElSVFlfQklUX01BR19GSUxURVI6CisgICAgICAg
ICAgICAgICAgbUZ1bmN0aW9ucy0+dGV4UGFyYW1ldGVyaShtU3RhdGUubVRhcmdldCwgR0xfVEVY
VFVSRV9NQUdfRklMVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbVN0YXRlLmdldFNhbXBsZXJTdGF0ZSgpLm1hZ0ZpbHRlcik7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsOjpUZXh0dXJlOjpESVJUWV9CSVRfV1JBUF9TOgor
ICAgICAgICAgICAgICAgIG1GdW5jdGlvbnMtPnRleFBhcmFtZXRlcmkobVN0YXRlLm1UYXJnZXQs
IEdMX1RFWFRVUkVfV1JBUF9TLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbVN0YXRlLmdldFNhbXBsZXJTdGF0ZSgpLndyYXBTKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlRleHR1cmU6OkRJUlRZX0JJVF9XUkFQX1Q6Cisg
ICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+dGV4UGFyYW1ldGVyaShtU3RhdGUubVRhcmdldCwg
R0xfVEVYVFVSRV9XUkFQX1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtU3RhdGUuZ2V0U2FtcGxlclN0YXRlKCkud3JhcFQpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBnbDo6VGV4dHVyZTo6RElSVFlfQklUX1dSQVBfUjoKKyAg
ICAgICAgICAgICAgICBtRnVuY3Rpb25zLT50ZXhQYXJhbWV0ZXJpKG1TdGF0ZS5tVGFyZ2V0LCBH
TF9URVhUVVJFX1dSQVBfUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1TdGF0ZS5nZXRTYW1wbGVyU3RhdGUoKS53cmFwUik7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIGdsOjpUZXh0dXJlOjpESVJUWV9CSVRfTUFYX0FOSVNPVFJP
UFk6CisgICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+dGV4UGFyYW1ldGVyZihtU3RhdGUubVRh
cmdldCwgR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtU3RhdGUuZ2V0U2FtcGxlclN0YXRlKCkubWF4QW5pc290
cm9weSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsOjpUZXh0
dXJlOjpESVJUWV9CSVRfTUlOX0xPRDoKKyAgICAgICAgICAgICAgICBtRnVuY3Rpb25zLT50ZXhQ
YXJhbWV0ZXJmKG1TdGF0ZS5tVGFyZ2V0LCBHTF9URVhUVVJFX01JTl9MT0QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU3RhdGUuZ2V0U2FtcGxlclN0YXRlKCku
bWluTG9kKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlRl
eHR1cmU6OkRJUlRZX0JJVF9NQVhfTE9EOgorICAgICAgICAgICAgICAgIG1GdW5jdGlvbnMtPnRl
eFBhcmFtZXRlcmYobVN0YXRlLm1UYXJnZXQsIEdMX1RFWFRVUkVfTUFYX0xPRCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0ZS5nZXRTYW1wbGVyU3RhdGUo
KS5tYXhMb2QpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbDo6
VGV4dHVyZTo6RElSVFlfQklUX0NPTVBBUkVfTU9ERToKKyAgICAgICAgICAgICAgICBtRnVuY3Rp
b25zLT50ZXhQYXJhbWV0ZXJpKG1TdGF0ZS5tVGFyZ2V0LCBHTF9URVhUVVJFX0NPTVBBUkVfTU9E
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0ZS5nZXRT
YW1wbGVyU3RhdGUoKS5jb21wYXJlTW9kZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIGdsOjpUZXh0dXJlOjpESVJUWV9CSVRfQ09NUEFSRV9GVU5DOgorICAgICAg
ICAgICAgICAgIG1GdW5jdGlvbnMtPnRleFBhcmFtZXRlcmkobVN0YXRlLm1UYXJnZXQsIEdMX1RF
WFRVUkVfQ09NUEFSRV9GVU5DLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbVN0YXRlLmdldFNhbXBsZXJTdGF0ZSgpLmNvbXBhcmVGdW5jKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgLy8gVGV4dHVyZSBzdGF0ZQorICAgICAgICAgICAg
Y2FzZSBnbDo6VGV4dHVyZTo6RElSVFlfQklUX1NXSVpaTEVfUkVEOgorICAgICAgICAgICAgICAg
IHN5bmNUZXh0dXJlU3RhdGVTd2l6emxlKG1GdW5jdGlvbnMsIEdMX1RFWFRVUkVfU1dJWlpMRV9S
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0ZS5nZXRTd2l6
emxlU3RhdGUoKS5zd2l6emxlUmVkKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgZ2w6OlRleHR1cmU6OkRJUlRZX0JJVF9TV0laWkxFX0dSRUVOOgorICAgICAgICAg
ICAgICAgIHN5bmNUZXh0dXJlU3RhdGVTd2l6emxlKG1GdW5jdGlvbnMsIEdMX1RFWFRVUkVfU1dJ
WlpMRV9HLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0ZS5n
ZXRTd2l6emxlU3RhdGUoKS5zd2l6emxlR3JlZW4pOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBnbDo6VGV4dHVyZTo6RElSVFlfQklUX1NXSVpaTEVfQkxVRToKKyAg
ICAgICAgICAgICAgICBzeW5jVGV4dHVyZVN0YXRlU3dpenpsZShtRnVuY3Rpb25zLCBHTF9URVhU
VVJFX1NXSVpaTEVfQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
U3RhdGUuZ2V0U3dpenpsZVN0YXRlKCkuc3dpenpsZUJsdWUpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBnbDo6VGV4dHVyZTo6RElSVFlfQklUX1NXSVpaTEVfQUxQ
SEE6CisgICAgICAgICAgICAgICAgc3luY1RleHR1cmVTdGF0ZVN3aXp6bGUobUZ1bmN0aW9ucywg
R0xfVEVYVFVSRV9TV0laWkxFX0EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbVN0YXRlLmdldFN3aXp6bGVTdGF0ZSgpLnN3aXp6bGVBbHBoYSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsOjpUZXh0dXJlOjpESVJUWV9CSVRfQkFT
RV9MRVZFTDoKKyAgICAgICAgICAgICAgICBtRnVuY3Rpb25zLT50ZXhQYXJhbWV0ZXJpKG1TdGF0
ZS5tVGFyZ2V0LCBHTF9URVhUVVJFX0JBU0VfTEVWRUwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtU3RhdGUuZ2V0RWZmZWN0aXZlQmFzZUxldmVsKCkpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbDo6VGV4dHVyZTo6RElSVFlf
QklUX01BWF9MRVZFTDoKKyAgICAgICAgICAgICAgICBtRnVuY3Rpb25zLT50ZXhQYXJhbWV0ZXJp
KG1TdGF0ZS5tVGFyZ2V0LCBHTF9URVhUVVJFX01BWF9MRVZFTCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0ZS5nZXRFZmZlY3RpdmVNYXhMZXZlbCgpKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlRleHR1cmU6OkRJ
UlRZX0JJVF9VU0FHRToKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CiAgICAgfQor
CisgICAgbUxvY2FsRGlydHlCaXRzLnJlc2V0KCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBBcHBseVRleHR1cmVGdW5jVHlwZT4KLXN0YXRpYyBpbmxpbmUgdm9pZCBTeW5j
VGV4dHVyZVN0YXRlU3dpenpsZShjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwcGx5VGV4dHVyZUZ1bmNUeXBl
IGFwcGx5VGV4dHVyZUZ1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgTGV2ZWxJbmZvR0wgJmxldmVsSW5mbywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZuZXdTdGF0ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZVN0
YXRlICZjdXJTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGV4dHVyZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVChnbDo6VGV4dHVyZVN0YXRlOjoqc3RhdGVNZW1iZXIpKQorYm9vbCBUZXh0dXJl
R0w6Omhhc0FueURpcnR5Qml0KCkgY29uc3QKIHsKKyAgICByZXR1cm4gbUxvY2FsRGlydHlCaXRz
LmFueSgpOworfQorCit2b2lkIFRleHR1cmVHTDo6c3luY1RleHR1cmVTdGF0ZVN3aXp6bGUoY29u
c3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywgR0xlbnVtIG5hbWUsIEdMZW51bSB2YWx1ZSkKK3sK
KyAgICBjb25zdCBMZXZlbEluZm9HTCAmbGV2ZWxJbmZvID0gbUxldmVsSW5mb1ttU3RhdGUuZ2V0
RWZmZWN0aXZlQmFzZUxldmVsKCldOworICAgIEdMZW51bSByZXN1bHRTd2l6emxlICAgICAgICAg
PSB2YWx1ZTsKICAgICBpZiAobGV2ZWxJbmZvLmx1bWFXb3JrYXJvdW5kLmVuYWJsZWQgfHwgbGV2
ZWxJbmZvLmRlcHRoU3RlbmNpbFdvcmthcm91bmQpCiAgICAgewotICAgICAgICBHTGVudW0gcmVz
dWx0U3dpenpsZSA9IEdMX05PTkU7CiAgICAgICAgIGlmIChsZXZlbEluZm8ubHVtYVdvcmthcm91
bmQuZW5hYmxlZCkKICAgICAgICAgewogICAgICAgICAgICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJ
QUJMRShsZXZlbEluZm8ubHVtYVdvcmthcm91bmQud29ya2Fyb3VuZEZvcm1hdCk7CiAKLSAgICAg
ICAgICAgIHN3aXRjaCAobmV3U3RhdGUuKnN0YXRlTWVtYmVyKQorICAgICAgICAgICAgc3dpdGNo
ICh2YWx1ZSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgIGNhc2UgR0xfUkVEOgogICAgICAg
ICAgICAgY2FzZSBHTF9HUkVFTjoKQEAgLTY0NSw3ICs5NjQsNyBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgU3luY1RleHR1cmVTdGF0ZVN3aXp6CiAgICAgICAgICAgICBjYXNlIEdMX1pFUk86CiAgICAg
ICAgICAgICBjYXNlIEdMX09ORToKICAgICAgICAgICAgICAgICAvLyBEb24ndCBtb2RpZnkgdGhl
IHN3aXp6bGUgc3RhdGUgd2hlbiByZXF1ZXN0aW5nIFpFUk8gb3IgT05FLgotICAgICAgICAgICAg
ICAgIHJlc3VsdFN3aXp6bGUgPSBuZXdTdGF0ZS4qc3RhdGVNZW1iZXI7CisgICAgICAgICAgICAg
ICAgcmVzdWx0U3dpenpsZSA9IHZhbHVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAg
ICAgICAgICBkZWZhdWx0OgpAQCAtNjU1LDExICs5NzQsMTEgQEAgc3RhdGljIGlubGluZSB2b2lk
IFN5bmNUZXh0dXJlU3RhdGVTd2l6egogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGxldmVs
SW5mby5kZXB0aFN0ZW5jaWxXb3JrYXJvdW5kKQogICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0
Y2ggKG5ld1N0YXRlLipzdGF0ZU1lbWJlcikKKyAgICAgICAgICAgIHN3aXRjaCAodmFsdWUpCiAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgY2FzZSBHTF9SRUQ6CiAgICAgICAgICAgICAg
ICAgICAgIC8vIERvbid0IG1vZGlmeSB0aGUgc3dpenpsZSBzdGF0ZSB3aGVuIHJlcXVlc3Rpbmcg
dGhlIHJlZCBjaGFubmVsLgotICAgICAgICAgICAgICAgICAgICByZXN1bHRTd2l6emxlID0gbmV3
U3RhdGUuKnN0YXRlTWVtYmVyOworICAgICAgICAgICAgICAgICAgICByZXN1bHRTd2l6emxlID0g
dmFsdWU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgY2Fz
ZSBHTF9HUkVFTjoKQEAgLTY3Niw3ICs5OTUsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgU3luY1Rl
eHR1cmVTdGF0ZVN3aXp6CiAgICAgICAgICAgICAgICAgY2FzZSBHTF9aRVJPOgogICAgICAgICAg
ICAgICAgIGNhc2UgR0xfT05FOgogICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBtb2RpZnkg
dGhlIHN3aXp6bGUgc3RhdGUgd2hlbiByZXF1ZXN0aW5nIFpFUk8gb3IgT05FLgotICAgICAgICAg
ICAgICAgICAgICByZXN1bHRTd2l6emxlID0gbmV3U3RhdGUuKnN0YXRlTWVtYmVyOworICAgICAg
ICAgICAgICAgICAgICByZXN1bHRTd2l6emxlID0gdmFsdWU7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogCiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKQEAgLTY4OSw1OSArMTAwOCwyNyBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgU3luY1RleHR1cmVTdGF0ZVN3aXp6CiAgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gQXBwbHkgdGhlIG5ldyBzd2l6
emxlIHN0YXRlIGlmIG5lZWRlZAotICAgICAgICBpZiAoY3VyU3RhdGUuKnN0YXRlTWVtYmVyICE9
IHJlc3VsdFN3aXp6bGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGFwcGx5VGV4dHVyZUZ1bmMo
KTsKLSAgICAgICAgICAgIGN1clN0YXRlLipzdGF0ZU1lbWJlciA9IHJlc3VsdFN3aXp6bGU7Ci0g
ICAgICAgICAgICBmdW5jdGlvbnMtPnRleFBhcmFtZXRlcmYodGV4dHVyZVR5cGUsIG5hbWUsIHN0
YXRpY19jYXN0PEdMZmxvYXQ+KHJlc3VsdFN3aXp6bGUpKTsKLSAgICAgICAgfQotICAgIH0KLSAg
ICBlbHNlCi0gICAgewotICAgICAgICBTeW5jVGV4dHVyZVN0YXRlTWVtYmVyKGZ1bmN0aW9ucywg
YXBwbHlUZXh0dXJlRnVuYywgbmV3U3RhdGUsIGN1clN0YXRlLCB0ZXh0dXJlVHlwZSwgbmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZU1lbWJlcik7CiAgICAgfQorCisg
ICAgZnVuY3Rpb25zLT50ZXhQYXJhbWV0ZXJpKG1TdGF0ZS5tVGFyZ2V0LCBuYW1lLCByZXN1bHRT
d2l6emxlKTsKIH0KIAotdm9pZCBUZXh0dXJlR0w6OnN5bmNTdGF0ZShzaXplX3QgdGV4dHVyZVVu
aXQsIGNvbnN0IGdsOjpUZXh0dXJlU3RhdGUgJnRleHR1cmVTdGF0ZSkgY29uc3QKK3ZvaWQgVGV4
dHVyZUdMOjpzZXRMZXZlbEluZm8oc2l6ZV90IGxldmVsLCBzaXplX3QgbGV2ZWxDb3VudCwgY29u
c3QgTGV2ZWxJbmZvR0wgJmxldmVsSW5mbykKIHsKLSAgICAvLyBDYWxsYmFjayBsYW1kYmEgdG8g
YmluZCB0aGlzIHRleHR1cmUgb25seSBpZiBuZWVkZWQuCi0gICAgYm9vbCB0ZXh0dXJlQXBwbGll
ZCAgID0gZmFsc2U7Ci0gICAgYXV0byBhcHBseVRleHR1cmVGdW5jID0gWyZdKCkKLSAgICB7Ci0g
ICAgICAgIGlmICghdGV4dHVyZUFwcGxpZWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1TdGF0
ZU1hbmFnZXItPmFjdGl2ZVRleHR1cmUodGV4dHVyZVVuaXQpOwotICAgICAgICAgICAgbVN0YXRl
TWFuYWdlci0+YmluZFRleHR1cmUobVRleHR1cmVUeXBlLCBtVGV4dHVyZUlEKTsKLSAgICAgICAg
ICAgIHRleHR1cmVBcHBsaWVkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICAvLyBj
bGFuZy1mb3JtYXQgb2ZmCi0KLSAgICAvLyBTeW5jIHRleHR1cmUgc3RhdGUKLSAgICBTeW5jVGV4
dHVyZVN0YXRlTWVtYmVyKG1GdW5jdGlvbnMsIGFwcGx5VGV4dHVyZUZ1bmMsIHRleHR1cmVTdGF0
ZSwgbUFwcGxpZWRUZXh0dXJlU3RhdGUsIG1UZXh0dXJlVHlwZSwgR0xfVEVYVFVSRV9CQVNFX0xF
VkVMLCAmZ2w6OlRleHR1cmVTdGF0ZTo6YmFzZUxldmVsKTsKLSAgICBTeW5jVGV4dHVyZVN0YXRl
TWVtYmVyKG1GdW5jdGlvbnMsIGFwcGx5VGV4dHVyZUZ1bmMsIHRleHR1cmVTdGF0ZSwgbUFwcGxp
ZWRUZXh0dXJlU3RhdGUsIG1UZXh0dXJlVHlwZSwgR0xfVEVYVFVSRV9NQVhfTEVWRUwsICZnbDo6
VGV4dHVyZVN0YXRlOjptYXhMZXZlbCk7CisgICAgQVNTRVJUKGxldmVsQ291bnQgPiAwICYmIGxl
dmVsICsgbGV2ZWxDb3VudCA8IG1MZXZlbEluZm8uc2l6ZSgpKTsKIAotICAgIGNvbnN0IExldmVs
SW5mb0dMICZsZXZlbEluZm8gPSBtTGV2ZWxJbmZvW3RleHR1cmVTdGF0ZS5iYXNlTGV2ZWxdOwot
ICAgIFN5bmNUZXh0dXJlU3RhdGVTd2l6emxlKG1GdW5jdGlvbnMsIGFwcGx5VGV4dHVyZUZ1bmMs
IGxldmVsSW5mbywgdGV4dHVyZVN0YXRlLCBtQXBwbGllZFRleHR1cmVTdGF0ZSwgbVRleHR1cmVU
eXBlLCBHTF9URVhUVVJFX1NXSVpaTEVfUiwgJmdsOjpUZXh0dXJlU3RhdGU6OnN3aXp6bGVSZWQp
OwotICAgIFN5bmNUZXh0dXJlU3RhdGVTd2l6emxlKG1GdW5jdGlvbnMsIGFwcGx5VGV4dHVyZUZ1
bmMsIGxldmVsSW5mbywgdGV4dHVyZVN0YXRlLCBtQXBwbGllZFRleHR1cmVTdGF0ZSwgbVRleHR1
cmVUeXBlLCBHTF9URVhUVVJFX1NXSVpaTEVfRywgJmdsOjpUZXh0dXJlU3RhdGU6OnN3aXp6bGVH
cmVlbik7Ci0gICAgU3luY1RleHR1cmVTdGF0ZVN3aXp6bGUobUZ1bmN0aW9ucywgYXBwbHlUZXh0
dXJlRnVuYywgbGV2ZWxJbmZvLCB0ZXh0dXJlU3RhdGUsIG1BcHBsaWVkVGV4dHVyZVN0YXRlLCBt
VGV4dHVyZVR5cGUsIEdMX1RFWFRVUkVfU1dJWlpMRV9CLCAmZ2w6OlRleHR1cmVTdGF0ZTo6c3dp
enpsZUJsdWUpOwotICAgIFN5bmNUZXh0dXJlU3RhdGVTd2l6emxlKG1GdW5jdGlvbnMsIGFwcGx5
VGV4dHVyZUZ1bmMsIGxldmVsSW5mbywgdGV4dHVyZVN0YXRlLCBtQXBwbGllZFRleHR1cmVTdGF0
ZSwgbVRleHR1cmVUeXBlLCBHTF9URVhUVVJFX1NXSVpaTEVfQSwgJmdsOjpUZXh0dXJlU3RhdGU6
OnN3aXp6bGVBbHBoYSk7CisgICAgR0x1aW50IGJhc2VMZXZlbCAgICAgICAgICAgICAgPSBtU3Rh
dGUuZ2V0RWZmZWN0aXZlQmFzZUxldmVsKCk7CisgICAgYm9vbCBuZWVkc1Jlc3luYyAgICAgICAg
ICAgICAgPSBsZXZlbCA8PSBiYXNlTGV2ZWwgJiYgbGV2ZWwgKyBsZXZlbENvdW50ID49IGJhc2VM
ZXZlbCAmJgorICAgICAgICAgICAgICAgICAgICAgICAobGV2ZWxJbmZvLmRlcHRoU3RlbmNpbFdv
cmthcm91bmQgfHwgbGV2ZWxJbmZvLmx1bWFXb3JrYXJvdW5kLmVuYWJsZWQpOworICAgIGlmIChu
ZWVkc1Jlc3luYykKKyAgICB7CisgICAgICAgIG1Mb2NhbERpcnR5Qml0cyB8PSBHZXRMZXZlbFdv
cmthcm91bmREaXJ0eUJpdHMoKTsKKyAgICB9CiAKLSAgICAvLyBTeW5jIHNhbXBsZXIgc3RhdGUK
LSAgICBTeW5jU2FtcGxlclN0YXRlTWVtYmVyKG1GdW5jdGlvbnMsIGFwcGx5VGV4dHVyZUZ1bmMs
IHRleHR1cmVTdGF0ZS5zYW1wbGVyU3RhdGUsIG1BcHBsaWVkVGV4dHVyZVN0YXRlLnNhbXBsZXJT
dGF0ZSwgbVRleHR1cmVUeXBlLCBHTF9URVhUVVJFX01JTl9GSUxURVIsICZnbDo6U2FtcGxlclN0
YXRlOjptaW5GaWx0ZXIpOwotICAgIFN5bmNTYW1wbGVyU3RhdGVNZW1iZXIobUZ1bmN0aW9ucywg
YXBwbHlUZXh0dXJlRnVuYywgdGV4dHVyZVN0YXRlLnNhbXBsZXJTdGF0ZSwgbUFwcGxpZWRUZXh0
dXJlU3RhdGUuc2FtcGxlclN0YXRlLCBtVGV4dHVyZVR5cGUsIEdMX1RFWFRVUkVfTUFHX0ZJTFRF
UiwgJmdsOjpTYW1wbGVyU3RhdGU6Om1hZ0ZpbHRlcik7Ci0gICAgU3luY1NhbXBsZXJTdGF0ZU1l
bWJlcihtRnVuY3Rpb25zLCBhcHBseVRleHR1cmVGdW5jLCB0ZXh0dXJlU3RhdGUuc2FtcGxlclN0
YXRlLCBtQXBwbGllZFRleHR1cmVTdGF0ZS5zYW1wbGVyU3RhdGUsIG1UZXh0dXJlVHlwZSwgR0xf
VEVYVFVSRV9XUkFQX1MsICZnbDo6U2FtcGxlclN0YXRlOjp3cmFwUyk7Ci0gICAgU3luY1NhbXBs
ZXJTdGF0ZU1lbWJlcihtRnVuY3Rpb25zLCBhcHBseVRleHR1cmVGdW5jLCB0ZXh0dXJlU3RhdGUu
c2FtcGxlclN0YXRlLCBtQXBwbGllZFRleHR1cmVTdGF0ZS5zYW1wbGVyU3RhdGUsIG1UZXh0dXJl
VHlwZSwgR0xfVEVYVFVSRV9XUkFQX1QsICZnbDo6U2FtcGxlclN0YXRlOjp3cmFwVCk7Ci0gICAg
U3luY1NhbXBsZXJTdGF0ZU1lbWJlcihtRnVuY3Rpb25zLCBhcHBseVRleHR1cmVGdW5jLCB0ZXh0
dXJlU3RhdGUuc2FtcGxlclN0YXRlLCBtQXBwbGllZFRleHR1cmVTdGF0ZS5zYW1wbGVyU3RhdGUs
IG1UZXh0dXJlVHlwZSwgR0xfVEVYVFVSRV9XUkFQX1IsICZnbDo6U2FtcGxlclN0YXRlOjp3cmFw
Uik7Ci0gICAgU3luY1NhbXBsZXJTdGF0ZU1lbWJlcihtRnVuY3Rpb25zLCBhcHBseVRleHR1cmVG
dW5jLCB0ZXh0dXJlU3RhdGUuc2FtcGxlclN0YXRlLCBtQXBwbGllZFRleHR1cmVTdGF0ZS5zYW1w
bGVyU3RhdGUsIG1UZXh0dXJlVHlwZSwgR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQsICZn
bDo6U2FtcGxlclN0YXRlOjptYXhBbmlzb3Ryb3B5KTsKLSAgICBTeW5jU2FtcGxlclN0YXRlTWVt
YmVyKG1GdW5jdGlvbnMsIGFwcGx5VGV4dHVyZUZ1bmMsIHRleHR1cmVTdGF0ZS5zYW1wbGVyU3Rh
dGUsIG1BcHBsaWVkVGV4dHVyZVN0YXRlLnNhbXBsZXJTdGF0ZSwgbVRleHR1cmVUeXBlLCBHTF9U
RVhUVVJFX01JTl9MT0QsICZnbDo6U2FtcGxlclN0YXRlOjptaW5Mb2QpOwotICAgIFN5bmNTYW1w
bGVyU3RhdGVNZW1iZXIobUZ1bmN0aW9ucywgYXBwbHlUZXh0dXJlRnVuYywgdGV4dHVyZVN0YXRl
LnNhbXBsZXJTdGF0ZSwgbUFwcGxpZWRUZXh0dXJlU3RhdGUuc2FtcGxlclN0YXRlLCBtVGV4dHVy
ZVR5cGUsIEdMX1RFWFRVUkVfTUFYX0xPRCwgJmdsOjpTYW1wbGVyU3RhdGU6Om1heExvZCk7Ci0g
ICAgU3luY1NhbXBsZXJTdGF0ZU1lbWJlcihtRnVuY3Rpb25zLCBhcHBseVRleHR1cmVGdW5jLCB0
ZXh0dXJlU3RhdGUuc2FtcGxlclN0YXRlLCBtQXBwbGllZFRleHR1cmVTdGF0ZS5zYW1wbGVyU3Rh
dGUsIG1UZXh0dXJlVHlwZSwgR0xfVEVYVFVSRV9DT01QQVJFX01PREUsICZnbDo6U2FtcGxlclN0
YXRlOjpjb21wYXJlTW9kZSk7Ci0gICAgU3luY1NhbXBsZXJTdGF0ZU1lbWJlcihtRnVuY3Rpb25z
LCBhcHBseVRleHR1cmVGdW5jLCB0ZXh0dXJlU3RhdGUuc2FtcGxlclN0YXRlLCBtQXBwbGllZFRl
eHR1cmVTdGF0ZS5zYW1wbGVyU3RhdGUsIG1UZXh0dXJlVHlwZSwgR0xfVEVYVFVSRV9DT01QQVJF
X0ZVTkMsICZnbDo6U2FtcGxlclN0YXRlOjpjb21wYXJlRnVuYyk7Ci0gICAgLy8gY2xhbmctZm9y
bWF0IG9uCisgICAgZm9yIChzaXplX3QgaSA9IGxldmVsOyBpIDwgbGV2ZWwgKyBsZXZlbENvdW50
OyBpKyspCisgICAgeworICAgICAgICBtTGV2ZWxJbmZvW2ldID0gbGV2ZWxJbmZvOworICAgIH0K
IH0KIAogR0x1aW50IFRleHR1cmVHTDo6Z2V0VGV4dHVyZUlEKCkgY29uc3QKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9UZXh0dXJlR0wuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvVGV4dHVyZUdMLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9UZXh0dXJlR0wuaAkod29ya2luZyBjb3B5
KQpAQCAtMTEsNiArMTEsNyBAQAogCiAjaW5jbHVkZSAibGliQU5HTEUvYW5nbGV0eXBlcy5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1RleHR1cmVJbXBsLmgiCisjaW5jbHVkZSAibGli
QU5HTEUvVGV4dHVyZS5oIgogCiBuYW1lc3BhY2UgcngKIHsKQEAgLTUxLDE1ICs1MiwxMyBAQCBz
dHJ1Y3QgTGV2ZWxJbmZvR0wKIGNsYXNzIFRleHR1cmVHTCA6IHB1YmxpYyBUZXh0dXJlSW1wbAog
ewogICBwdWJsaWM6Ci0gICAgVGV4dHVyZUdMKEdMZW51bSB0eXBlLAorICAgIFRleHR1cmVHTChj
b25zdCBnbDo6VGV4dHVyZVN0YXRlICZzdGF0ZSwKICAgICAgICAgICAgICAgY29uc3QgRnVuY3Rp
b25zR0wgKmZ1bmN0aW9ucywKICAgICAgICAgICAgICAgY29uc3QgV29ya2Fyb3VuZHNHTCAmd29y
a2Fyb3VuZHMsCiAgICAgICAgICAgICAgIFN0YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIsCiAg
ICAgICAgICAgICAgIEJsaXRHTCAqYmxpdHRlcik7CiAgICAgflRleHR1cmVHTCgpIG92ZXJyaWRl
OwogCi0gICAgdm9pZCBzZXRVc2FnZShHTGVudW0gdXNhZ2UpIG92ZXJyaWRlOwotCiAgICAgZ2w6
OkVycm9yIHNldEltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgR0xlbnVtIGludGVy
bmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwgR0xlbnVtIGZvcm1hdCwgR0xlbnVt
IHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRl
ICZ1bnBhY2ssIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7CiAgICAgZ2w6OkVycm9y
IHNldFN1YkltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6OkJveCAm
YXJlYSwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCkBAIC03NywyNCArNzYsNTcgQEAgY2xh
c3MgVGV4dHVyZUdMIDogcHVibGljIFRleHR1cmVJbXBsCiAKICAgICBnbDo6RXJyb3Igc2V0U3Rv
cmFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQs
IGNvbnN0IGdsOjpFeHRlbnRzICZzaXplKSBvdmVycmlkZTsKIAotICAgIGdsOjpFcnJvciBnZW5l
cmF0ZU1pcG1hcHMoY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmdGV4dHVyZVN0YXRlKSBvdmVycmlk
ZTsKKyAgICBnbDo6RXJyb3Igc2V0SW1hZ2VFeHRlcm5hbChHTGVudW0gdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3RyZWFtICpzdHJlYW0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpTdHJlYW06OkdMVGV4dHVyZURlc2NyaXB0
aW9uICZkZXNjKSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBnZW5lcmF0ZU1pcG1hcCgpIG92
ZXJyaWRlOwogCiAgICAgdm9pZCBiaW5kVGV4SW1hZ2UoZWdsOjpTdXJmYWNlICpzdXJmYWNlKSBv
dmVycmlkZTsKICAgICB2b2lkIHJlbGVhc2VUZXhJbWFnZSgpIG92ZXJyaWRlOwogCiAgICAgZ2w6
OkVycm9yIHNldEVHTEltYWdlVGFyZ2V0KEdMZW51bSB0YXJnZXQsIGVnbDo6SW1hZ2UgKmltYWdl
KSBvdmVycmlkZTsKIAotICAgIHZvaWQgc3luY1N0YXRlKHNpemVfdCB0ZXh0dXJlVW5pdCwgY29u
c3QgZ2w6OlRleHR1cmVTdGF0ZSAmdGV4dHVyZVN0YXRlKSBjb25zdDsKICAgICBHTHVpbnQgZ2V0
VGV4dHVyZUlEKCkgY29uc3Q7CiAKLSAgICBnbDo6RXJyb3IgZ2V0QXR0YWNobWVudFJlbmRlclRh
cmdldChjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50OjpUYXJnZXQgJnRhcmdldCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRSZW5kZXJUYXJnZXQgKipydE91dCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIk5vdCBzdXBwb3J0ZWQgb24gT3BlbkdMIik7Ci0g
ICAgfQorICAgIHZvaWQgc2V0QmFzZUxldmVsKEdMdWludCkgb3ZlcnJpZGUge30KKworICAgIHZv
aWQgc3luY1N0YXRlKGNvbnN0IGdsOjpUZXh0dXJlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykgb3Zl
cnJpZGU7CisgICAgYm9vbCBoYXNBbnlEaXJ0eUJpdCgpIGNvbnN0OwogCiAgIHByaXZhdGU6Ci0g
ICAgR0xlbnVtIG1UZXh0dXJlVHlwZTsKKyAgICB2b2lkIHNldEltYWdlSGVscGVyKEdMZW51bSB0
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscyk7CisgICAgdm9pZCByZXNl
cnZlVGV4SW1hZ2VUb0JlRmlsbGVkKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHR5cGUpOworICAgIGdsOjpFcnJvciBzZXRTdWJJbWFnZVJvd0J5Um93
V29ya2Fyb3VuZChHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmFyZWEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAm
dW5wYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB1aW50OF90ICpwaXhlbHMpOworCisgICAgZ2w6OkVycm9yIHNldFN1YkltYWdlUGFkZGluZ1dv
cmthcm91bmQoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmYXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ss
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhf
dCAqcGl4ZWxzKTsKKworICAgIHZvaWQgc3luY1RleHR1cmVTdGF0ZVN3aXp6bGUoY29uc3QgRnVu
Y3Rpb25zR0wgKmZ1bmN0aW9ucywgR0xlbnVtIG5hbWUsIEdMZW51bSB2YWx1ZSk7CisKKyAgICB2
b2lkIHNldExldmVsSW5mbyhzaXplX3QgbGV2ZWwsIHNpemVfdCBsZXZlbENvdW50LCBjb25zdCBM
ZXZlbEluZm9HTCAmbGV2ZWxJbmZvKTsKIAogICAgIGNvbnN0IEZ1bmN0aW9uc0dMICptRnVuY3Rp
b25zOwogICAgIGNvbnN0IFdvcmthcm91bmRzR0wgJm1Xb3JrYXJvdW5kczsKQEAgLTEwMiw2ICsx
MzQsNyBAQCBjbGFzcyBUZXh0dXJlR0wgOiBwdWJsaWMgVGV4dHVyZUltcGwKICAgICBCbGl0R0wg
Km1CbGl0dGVyOwogCiAgICAgc3RkOjp2ZWN0b3I8TGV2ZWxJbmZvR0w+IG1MZXZlbEluZm87Cisg
ICAgZ2w6OlRleHR1cmU6OkRpcnR5Qml0cyBtTG9jYWxEaXJ0eUJpdHM7CiAKICAgICBtdXRhYmxl
IGdsOjpUZXh0dXJlU3RhdGUgbUFwcGxpZWRUZXh0dXJlU3RhdGU7CiAgICAgR0x1aW50IG1UZXh0
dXJlSUQ7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvVHJhbnNmb3JtRmVlZGJhY2tHTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1RyYW5zZm9ybUZlZWRiYWNrR0wu
Y3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvVHJhbnNmb3JtRmVlZGJhY2tHTC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTksNyArOSw3IEBACiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvVHJhbnNmb3Jt
RmVlZGJhY2tHTC5oIgogCiAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCi0jaW5jbHVkZSAibGli
QU5HTEUvRGF0YS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHRTdGF0ZS5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL0J1ZmZlckdMLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZ2wvRnVuY3Rpb25zR0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9n
bC9TdGF0ZU1hbmFnZXJHTC5oIgpAQCAtMTcsMTYgKzE3LDE1IEBACiBuYW1lc3BhY2UgcngKIHsK
IAotVHJhbnNmb3JtRmVlZGJhY2tHTDo6VHJhbnNmb3JtRmVlZGJhY2tHTChjb25zdCBGdW5jdGlv
bnNHTCAqZnVuY3Rpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTdGF0ZU1hbmFnZXJHTCAqc3RhdGVNYW5hZ2VyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgbWF4VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJCaW5kaW5n
cykKLSAgICA6IFRyYW5zZm9ybUZlZWRiYWNrSW1wbCgpLAorVHJhbnNmb3JtRmVlZGJhY2tHTDo6
VHJhbnNmb3JtRmVlZGJhY2tHTChjb25zdCBnbDo6VHJhbnNmb3JtRmVlZGJhY2tTdGF0ZSAmc3Rh
dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZ1bmN0
aW9uc0dMICpmdW5jdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFN0YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIpCisgICAgOiBUcmFuc2Zvcm1GZWVkYmFj
a0ltcGwoc3RhdGUpLAogICAgICAgbUZ1bmN0aW9ucyhmdW5jdGlvbnMpLAogICAgICAgbVN0YXRl
TWFuYWdlcihzdGF0ZU1hbmFnZXIpLAogICAgICAgbVRyYW5zZm9ybUZlZWRiYWNrSUQoMCksCiAg
ICAgICBtSXNBY3RpdmUoZmFsc2UpLAotICAgICAgbUlzUGF1c2VkKGZhbHNlKSwKLSAgICAgIG1D
dXJyZW50SW5kZXhlZEJ1ZmZlcnMobWF4VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJCaW5kaW5ncykK
KyAgICAgIG1Jc1BhdXNlZChmYWxzZSkKIHsKICAgICBtRnVuY3Rpb25zLT5nZW5UcmFuc2Zvcm1G
ZWVkYmFja3MoMSwgJm1UcmFuc2Zvcm1GZWVkYmFja0lEKTsKIH0KQEAgLTM1LDExICszNCw2IEBA
IFRyYW5zZm9ybUZlZWRiYWNrR0w6On5UcmFuc2Zvcm1GZWVkYmFja0cKIHsKICAgICBtU3RhdGVN
YW5hZ2VyLT5kZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhtVHJhbnNmb3JtRmVlZGJhY2tJRCk7CiAg
ICAgbVRyYW5zZm9ybUZlZWRiYWNrSUQgPSAwOwotCi0gICAgZm9yIChhdXRvICZidWZmZXJCaW5k
aW5nIDogbUN1cnJlbnRJbmRleGVkQnVmZmVycykKLSAgICB7Ci0gICAgICAgIGJ1ZmZlckJpbmRp
bmcuc2V0KG51bGxwdHIpOwotICAgIH0KIH0KIAogdm9pZCBUcmFuc2Zvcm1GZWVkYmFja0dMOjpi
ZWdpbihHTGVudW0gcHJpbWl0aXZlTW9kZSkKQEAgLTcwLDMwICs2NCwyNSBAQCB2b2lkIFRyYW5z
Zm9ybUZlZWRiYWNrR0w6OmJpbmRJbmRleGVkQnVmCiB7CiAgICAgLy8gRGlyZWN0bHkgYmluZCBi
dWZmZXIgKG5vdCB0aHJvdWdoIHRoZSBTdGF0ZU1hbmFnZXIgbWV0aG9kcykgYmVjYXVzZSB0aGUg
YnVmZmVyIGJpbmRpbmdzIGFyZQogICAgIC8vIHRyYWNrZWQgcGVyIHRyYW5zZm9ybSBmZWVkYmFj
ayBvYmplY3QKLSAgICBpZiAoYmluZGluZyAhPSBtQ3VycmVudEluZGV4ZWRCdWZmZXJzW2luZGV4
XSkKKyAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVHJhbnNmb3JtRmVlZGJhY2soR0xfVFJBTlNGT1JN
X0ZFRURCQUNLLCBtVHJhbnNmb3JtRmVlZGJhY2tJRCk7CisgICAgaWYgKGJpbmRpbmcuZ2V0KCkg
IT0gbnVsbHB0cikKICAgICB7Ci0gICAgICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUcmFuc2Zvcm1G
ZWVkYmFjayhHTF9UUkFOU0ZPUk1fRkVFREJBQ0ssIG1UcmFuc2Zvcm1GZWVkYmFja0lEKTsKLSAg
ICAgICAgaWYgKGJpbmRpbmcuZ2V0KCkgIT0gbnVsbHB0cikKKyAgICAgICAgY29uc3QgQnVmZmVy
R0wgKmJ1ZmZlckdMID0gR2V0SW1wbEFzPEJ1ZmZlckdMPihiaW5kaW5nLmdldCgpKTsKKyAgICAg
ICAgaWYgKGJpbmRpbmcuZ2V0U2l6ZSgpICE9IDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnN0IEJ1ZmZlckdMICpidWZmZXJHTCA9IEdldEltcGxBczxCdWZmZXJHTD4oYmluZGluZy5nZXQo
KSk7Ci0gICAgICAgICAgICBpZiAoYmluZGluZy5nZXRTaXplKCkgIT0gMCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBtRnVuY3Rpb25zLT5iaW5kQnVmZmVyUmFuZ2UoR0xfVFJBTlNG
T1JNX0ZFRURCQUNLX0JVRkZFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8R0x1aW50PihpbmRleCksIGJ1ZmZlckdMLT5nZXRCdWZmZXJJ
RCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kaW5n
LmdldE9mZnNldCgpLCBiaW5kaW5nLmdldFNpemUoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+Ymlu
ZEJ1ZmZlckJhc2UoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgc3RhdGljX2Nhc3Q8R0x1
aW50PihpbmRleCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnVmZmVyR0wtPmdldEJ1ZmZlcklEKCkpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgbUZ1
bmN0aW9ucy0+YmluZEJ1ZmZlclJhbmdlKEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIHN0
YXRpY19jYXN0PEdMdWludD4oaW5kZXgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJ1ZmZlckdMLT5nZXRCdWZmZXJJRCgpLCBiaW5kaW5nLmdldE9mZnNldCgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRpbmcuZ2V0U2l6ZSgp
KTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1GdW5j
dGlvbnMtPmJpbmRCdWZmZXJCYXNlKEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIHN0YXRp
Y19jYXN0PEdMdWludD4oaW5kZXgpLCAwKTsKKyAgICAgICAgICAgIG1GdW5jdGlvbnMtPmJpbmRC
dWZmZXJCYXNlKEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIHN0YXRpY19jYXN0PEdMdWlu
dD4oaW5kZXgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVy
R0wtPmdldEJ1ZmZlcklEKCkpOwogICAgICAgICB9Ci0KLSAgICAgICAgbUN1cnJlbnRJbmRleGVk
QnVmZmVyc1tpbmRleF0gPSBiaW5kaW5nOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAg
ICBtRnVuY3Rpb25zLT5iaW5kQnVmZmVyQmFzZShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVS
LCBzdGF0aWNfY2FzdDxHTHVpbnQ+KGluZGV4KSwgMCk7CiAgICAgfQogfQogCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvVHJhbnNmb3JtRmVl
ZGJhY2tHTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9UcmFuc2Zvcm1GZWVkYmFja0dMLmgJKHJldmlzaW9uIDIwNzgwNCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9UcmFu
c2Zvcm1GZWVkYmFja0dMLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDkgKzIwLDkgQEAgY2xhc3Mg
U3RhdGVNYW5hZ2VyR0w7CiBjbGFzcyBUcmFuc2Zvcm1GZWVkYmFja0dMIDogcHVibGljIFRyYW5z
Zm9ybUZlZWRiYWNrSW1wbAogewogICBwdWJsaWM6Ci0gICAgVHJhbnNmb3JtRmVlZGJhY2tHTChj
b25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgU3Rh
dGVNYW5hZ2VyR0wgKnN0YXRlTWFuYWdlciwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBtYXhUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlckJpbmRpbmdzKTsKKyAgICBUcmFuc2Zvcm1GZWVk
YmFja0dMKGNvbnN0IGdsOjpUcmFuc2Zvcm1GZWVkYmFja1N0YXRlICZzdGF0ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCisgICAgICAgICAg
ICAgICAgICAgICAgICBTdGF0ZU1hbmFnZXJHTCAqc3RhdGVNYW5hZ2VyKTsKICAgICB+VHJhbnNm
b3JtRmVlZGJhY2tHTCgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBiZWdpbihHTGVudW0gcHJpbWl0
aXZlTW9kZSkgb3ZlcnJpZGU7CkBAIC00Niw4ICs0Niw2IEBAIGNsYXNzIFRyYW5zZm9ybUZlZWRi
YWNrR0wgOiBwdWJsaWMgVHJhbnMKIAogICAgIG11dGFibGUgYm9vbCBtSXNBY3RpdmU7CiAgICAg
bXV0YWJsZSBib29sIG1Jc1BhdXNlZDsKLQotICAgIHN0ZDo6dmVjdG9yPE9mZnNldEJpbmRpbmdQ
b2ludGVyPGdsOjpCdWZmZXI+PiBtQ3VycmVudEluZGV4ZWRCdWZmZXJzOwogfTsKIAogfQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1ZlcnRl
eEFycmF5R0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9WZXJ0ZXhBcnJheUdMLmNwcAkocmV2aXNpb24gMjA3ODA0KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1ZlcnRl
eEFycmF5R0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSAi
bGliQU5HTEUvZm9ybWF0dXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9C
dWZmZXJHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL0Z1bmN0aW9uc0dMLmgi
CisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvcmVuZGVyZXJnbF91dGlscy5oIgogI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmgiCiAKIHVzaW5nIG5h
bWVzcGFjZSBnbDsKQEAgLTMyLDEwICszMywxMCBAQCBib29sIEF0dHJpYnV0ZU5lZWRzU3RyZWFt
aW5nKGNvbnN0IFZlcnRlCiAKIH0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotVmVydGV4QXJy
YXlHTDo6VmVydGV4QXJyYXlHTChjb25zdCBWZXJ0ZXhBcnJheTo6RGF0YSAmZGF0YSwKK1ZlcnRl
eEFycmF5R0w6OlZlcnRleEFycmF5R0woY29uc3QgVmVydGV4QXJyYXlTdGF0ZSAmc3RhdGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFn
ZXIpCi0gICAgOiBWZXJ0ZXhBcnJheUltcGwoZGF0YSksCisgICAgOiBWZXJ0ZXhBcnJheUltcGwo
c3RhdGUpLAogICAgICAgbUZ1bmN0aW9ucyhmdW5jdGlvbnMpLAogICAgICAgbVN0YXRlTWFuYWdl
cihzdGF0ZU1hbmFnZXIpLAogICAgICAgbVZlcnRleEFycmF5SUQoMCksCkBAIC0yODgsNyArMjg5
LDggQEAgZ2w6OkVycm9yIFZlcnRleEFycmF5R0w6OnN0cmVhbUF0dHJpYnV0ZQogICAgIHNpemVf
dCB1bm1hcFJldHJ5QXR0ZW1wdHMgPSA1OwogICAgIHdoaWxlICh1bm1hcFJlc3VsdCAhPSBHTF9U
UlVFICYmIC0tdW5tYXBSZXRyeUF0dGVtcHRzID4gMCkKICAgICB7Ci0gICAgICAgIHVpbnQ4X3Qg
KmJ1ZmZlclBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihtRnVuY3Rpb25zLT5t
YXBCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBHTF9XUklURV9PTkxZKSk7CisgICAgICAgIHVpbnQ4
X3QgKmJ1ZmZlclBvaW50ZXIgPSBNYXBCdWZmZXJSYW5nZVdpdGhGYWxsYmFjayhtRnVuY3Rpb25z
LCBHTF9BUlJBWV9CVUZGRVIsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZEJ1ZmZlclNpemUsIEdMX01BUF9XUklU
RV9CSVQpOwogICAgICAgICBzaXplX3QgY3VyQnVmZmVyT2Zmc2V0ID0gYnVmZmVyRW1wdHlTcGFj
ZTsKIAogICAgICAgICBjb25zdCBhdXRvICZhdHRyaWJzID0gbURhdGEuZ2V0VmVydGV4QXR0cmli
dXRlcygpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL1ZlcnRleEFycmF5R0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvVmVydGV4QXJyYXlHTC5oCShyZXZpc2lvbiAy
MDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvVmVydGV4QXJyYXlHTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw5IEBAIGNsYXNz
IFN0YXRlTWFuYWdlckdMOwogY2xhc3MgVmVydGV4QXJyYXlHTCA6IHB1YmxpYyBWZXJ0ZXhBcnJh
eUltcGwKIHsKICAgcHVibGljOgotICAgIFZlcnRleEFycmF5R0woY29uc3QgZ2w6OlZlcnRleEFy
cmF5OjpEYXRhICZkYXRhLCBjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLCBTdGF0ZU1hbmFn
ZXJHTCAqc3RhdGVNYW5hZ2VyKTsKKyAgICBWZXJ0ZXhBcnJheUdMKGNvbnN0IGdsOjpWZXJ0ZXhB
cnJheVN0YXRlICZkYXRhLAorICAgICAgICAgICAgICAgICAgY29uc3QgRnVuY3Rpb25zR0wgKmZ1
bmN0aW9ucywKKyAgICAgICAgICAgICAgICAgIFN0YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIp
OwogICAgIH5WZXJ0ZXhBcnJheUdMKCkgb3ZlcnJpZGU7CiAKICAgICBnbDo6RXJyb3Igc3luY0Ry
YXdBcnJheXNTdGF0ZShjb25zdCBnbDo6QXR0cmlidXRlc01hc2sgJmFjdGl2ZUF0dHJpYnV0ZXNN
YXNrLApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL1dvcmthcm91bmRzR0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvV29ya2Fyb3VuZHNHTC5oCShyZXZpc2lvbiAyMDc4
MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
V29ya2Fyb3VuZHNHTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCwxMiBAQCBzdHJ1Y3Qg
V29ya2Fyb3VuZHNHTAogICAgICAgICAgIGRvZXNTUkdCQ2xlYXJzT25MaW5lYXJGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRzKGZhbHNlKSwKICAgICAgICAgICBkb1doaWxlR0xTTENhdXNlc0dQVUhhbmco
ZmFsc2UpLAogICAgICAgICAgIGZpbmlzaERvZXNOb3RDYXVzZVF1ZXJpZXNUb0JlQXZhaWxhYmxl
KGZhbHNlKSwKLSAgICAgICAgICBhbHdheXNDYWxsVXNlUHJvZ3JhbUFmdGVyTGluayhmYWxzZSkK
KyAgICAgICAgICBhbHdheXNDYWxsVXNlUHJvZ3JhbUFmdGVyTGluayhmYWxzZSksCisgICAgICAg
ICAgdW5wYWNrT3ZlcmxhcHBpbmdSb3dzU2VwYXJhdGVseVVucGFja0J1ZmZlcihmYWxzZSksCisg
ICAgICAgICAgZW11bGF0ZUFic0ludEZ1bmN0aW9uKGZhbHNlKSwKKyAgICAgICAgICBhZGRBbmRU
cnVlVG9Mb29wQ29uZGl0aW9uKGZhbHNlKSwKKyAgICAgICAgICBlbXVsYXRlSXNuYW5GbG9hdChm
YWxzZSksCisgICAgICAgICAgdXNlVW51c2VkQmxvY2tzV2l0aFN0YW5kYXJkT3JTaGFyZWRMYXlv
dXQoZmFsc2UpCiAgICAgewogICAgIH0KIApAQCAtNjMsNiArNjgsNDkgQEAgc3RydWN0IFdvcmth
cm91bmRzR0wKICAgICAvLyB3b3JrYXJvdW5kIGluIENocm9taXVtIChodHRwOi8vY3JidWcuY29t
LzExMDI2MykuIEl0IGhhcyBiZWVuIHNob3duIHRoYXQgdGhpcyB3b3JrYXJvdW5kIGlzCiAgICAg
Ly8gbm90IG5lY2Vzc2FyeSBmb3IgTWFjT1NYIDEwLjkgYW5kIGhpZ2hlciAoaHR0cDovL2NycmV2
LmNvbS8zOWViNTM1YikuCiAgICAgYm9vbCBhbHdheXNDYWxsVXNlUHJvZ3JhbUFmdGVyTGluazsK
KworICAgIC8vIEluIHRoZSBjYXNlIG9mIHVucGFja2luZyBmcm9tIGEgcGl4ZWwgdW5wYWNrIGJ1
ZmZlciwgdW5wYWNrIG92ZXJsYXBwaW5nIHJvd3Mgcm93IGJ5IHJvdy4KKyAgICBib29sIHVucGFj
a092ZXJsYXBwaW5nUm93c1NlcGFyYXRlbHlVbnBhY2tCdWZmZXI7CisgICAgLy8gSW4gdGhlIGNh
c2Ugb2YgcGFja2luZyB0byBhIHBpeGVsIHBhY2sgYnVmZmVyLCBwYWNrIG92ZXJsYXBwaW5nIHJv
d3Mgcm93IGJ5IHJvdy4KKyAgICBib29sIHBhY2tPdmVybGFwcGluZ1Jvd3NTZXBhcmF0ZWx5UGFj
a0J1ZmZlcjsKKworICAgIC8vIER1cmluZyBpbml0aWFsaXphdGlvbiwgYXNzaWduIHRoZSBjdXJy
ZW50IHZlcnRleCBhdHRyaWJ1dGVzIHRvIHRoZSBzcGVjLW1hbmRhdGVkIGRlZmF1bHRzLgorICAg
IGJvb2wgaW5pdGlhbGl6ZUN1cnJlbnRWZXJ0ZXhBdHRyaWJ1dGVzOworCisgICAgLy8gYWJzKGkp
IHdoZXJlIGkgaXMgYW4gaW50ZWdlciByZXR1cm5zIHVuZXhwZWN0ZWQgcmVzdWx0IG9uIEludGVs
IE1hYy4KKyAgICAvLyBFbXVsYXRlIGFicyhpKSB3aXRoIGkgKiBzaWduKGkpLgorICAgIGJvb2wg
ZW11bGF0ZUFic0ludEZ1bmN0aW9uOworCisgICAgLy8gT24gSW50ZWwgTWFjLCBjYWxjdWxhdGlv
biBvZiBsb29wIGNvbmRpdGlvbnMgaW4gZm9yIGFuZCB3aGlsZSBsb29wIGhhcyBidWcuCisgICAg
Ly8gQWRkICImJiB0cnVlIiB0byB0aGUgZW5kIG9mIHRoZSBjb25kaXRpb24gZXhwcmVzc2lvbiB0
byB3b3JrIGFyb3VuZCB0aGUgYnVnLgorICAgIGJvb2wgYWRkQW5kVHJ1ZVRvTG9vcENvbmRpdGlv
bjsKKworICAgIC8vIFdoZW4gdXBsb2FkaW5nIHRleHR1cmVzIGZyb20gYW4gdW5wYWNrIGJ1ZmZl
ciwgc29tZSBkcml2ZXJzIGNvdW50IGFuIGV4dHJhIHJvdyBwYWRkaW5nIHdoZW4KKyAgICAvLyBj
aGVja2luZyBpZiB0aGUgcGl4ZWwgdW5wYWNrIGJ1ZmZlciBpcyBiaWcgZW5vdWdoLiBUcmFja2lu
ZyBidWc6IGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTUxMgorICAgIC8vIEZvciBleGFtcGxlIGNvbnNp
ZGVyaW5nIHRoZSBwaXhlbCBidWZmZXIgYmVsb3cgd2hlcmUgaW4gbWVtb3J5LCBlYWNoIHJvdyBk
YXRhIChEKSBvZiB0aGUKKyAgICAvLyB0ZXh0dXJlIGlzIGZvbGxvd2VkIGJ5IHNvbWUgdW51c2Vk
IGRhdGEgKHRoZSBkb3RzKToKKyAgICAvLyAgICAgKy0tLS0tLS0rLS0rCisgICAgLy8gICAgIHxE
REREREREfC4ufAorICAgIC8vICAgICB8RERERERERHwuLnwKKyAgICAvLyAgICAgfERERERERER8
Li58CisgICAgLy8gICAgIHxEREREREREfC4ufAorICAgIC8vICAgICArLS0tLS0tLUEtLUIKKyAg
ICAvLyBUaGUgbGFzdCBwaXhlbCByZWFkIHdpbGwgYmUgQSwgYnV0IHRoZSBkcml2ZXIgd2lsbCB0
aGluayBpdCBpcyBCLCBjYXVzaW5nIGl0IHRvIGdlbmVyYXRlIGFuCisgICAgLy8gZXJyb3Igd2hl
biB0aGUgcGl4ZWwgYnVmZmVyIGlzIGp1c3QgYmlnIGVub3VnaC4KKyAgICBib29sIHVucGFja0xh
c3RSb3dTZXBhcmF0ZWx5Rm9yUGFkZGluZ0luY2x1c2lvbjsKKworICAgIC8vIEVxdWl2YWxlbnQg
d29ya2Fyb3VuZCB3aGVuIHVwbG9hZGluZyBkYXRhIGZyb20gYSBwaXhlbCBwYWNrIGJ1ZmZlci4K
KyAgICBib29sIHBhY2tMYXN0Um93U2VwYXJhdGVseUZvclBhZGRpbmdJbmNsdXNpb247CisKKyAg
ICAvLyBPbiBzb21lIEludGVsIGRyaXZlcnMsIHVzaW5nIGlzbmFuKCkgb24gaGlnaHAgZmxvYXQg
d2lsbCBnZXQgd3JvbmcgYW5zd2VyLiBUbyB3b3JrIGFyb3VuZAorICAgIC8vIHRoaXMgYnVnLCB3
ZSB1c2UgYW4gZXhwcmVzc2lvbiB0byBlbXVsYXRlIGZ1bmN0aW9uIGlzbmFuKCkuCisgICAgLy8g
VHJhY2tpbmcgYnVnOiBodHRwOi8vY3JidWcuY29tLzY1MDU0NworICAgIGJvb2wgZW11bGF0ZUlz
bmFuRmxvYXQ7CisKKyAgICAvLyBPbiBNYWMgd2l0aCBPcGVuR0wgdmVyc2lvbiA0LjEsIHVudXNl
ZCBzdGQxNDAgb3Igc2hhcmVkIHVuaWZvcm0gYmxvY2tzIHdpbGwgYmUKKyAgICAvLyB0cmVhdGVk
IGFzIGluYWN0aXZlIHdoaWNoIGlzIG5vdCBjb25zaXN0ZW50IHdpdGggV2ViR0wyLjAgc3BlYy4g
UmVmZXJlbmNlIGFsbCBtZW1iZXJzIGluIGEKKyAgICAvLyB1bnVzZWQgc3RkMTQwIG9yIHNoYXJl
ZCB1bmlmb3JtIGJsb2NrIGF0IHRoZSBiZWdpbm5pbmcgb2YgbWFpbiB0byB3b3JrIGFyb3VuZCBp
dC4KKyAgICBib29sIHVzZVVudXNlZEJsb2Nrc1dpdGhTdGFuZGFyZE9yU2hhcmVkTGF5b3V0Owog
fTsKIH0KIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL2Zvcm1hdHV0aWxzZ2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9mb3JtYXR1dGlsc2dsLmNwcAkocmV2aXNp
b24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL2Zvcm1hdHV0aWxzZ2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBA
IHN0YXRpYyBpbmxpbmUgU3VwcG9ydFJlcXVpcmVtZW50IEV4dHNPbmwKIH0KIAogLy8gc3VwcG9y
dGVkID0gdHJ1ZQotc3RhdGljIGlubGluZSBTdXBwb3J0UmVxdWlyZW1lbnQgQWx3YXlzKCkKK3N0
YXRpYyBpbmxpbmUgU3VwcG9ydFJlcXVpcmVtZW50IEFsd2F5c1N1cHBvcnRlZCgpCiB7CiAgICAg
U3VwcG9ydFJlcXVpcmVtZW50IHJlcXVpcmVtZW50OwogICAgIHJlcXVpcmVtZW50LnZlcnNpb24u
bWFqb3IgPSAwOwpAQCAtODgsNyArODgsNyBAQCBzdGF0aWMgaW5saW5lIFN1cHBvcnRSZXF1aXJl
bWVudCBBbHdheXMoCiB9CiAKIC8vIHN1cHBvcnRlZCA9IGZhbHNlCi1zdGF0aWMgaW5saW5lIFN1
cHBvcnRSZXF1aXJlbWVudCBOZXZlcigpCitzdGF0aWMgaW5saW5lIFN1cHBvcnRSZXF1aXJlbWVu
dCBOZXZlclN1cHBvcnRlZCgpCiB7CiAgICAgU3VwcG9ydFJlcXVpcmVtZW50IHJlcXVpcmVtZW50
OwogICAgIHJlcXVpcmVtZW50LnZlcnNpb24ubWFqb3IgPSBzdGQ6Om51bWVyaWNfbGltaXRzPEdM
dWludD46Om1heCgpOwpAQCAtMTI3LDEyOCArMTI3LDEyOCBAQCBzdGF0aWMgSW50ZXJuYWxGb3Jt
YXRJbmZvTWFwIEJ1aWxkSW50ZXJuCiAgICAgSW50ZXJuYWxGb3JtYXRJbmZvTWFwIG1hcDsKIAog
ICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKLSAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgfCBG
b3JtYXQgICAgICAgICAgICAgIHwgT3BlbkdMIHRleHR1cmUgc3VwcG9ydCAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCBGaWx0ZXIgIHwgT3BlbkdMIHJlbmRlciBzdXBwb3J0ICAgICAgICAgICAg
ICAgICAgICAgICAgfCBPcGVuR0wgRVMgdGV4dHVyZSBzdXBwb3J0ICAgICAgICAgICAgICAgICB8
IEZpbHRlciAgfCBPcGVuR0wgRVMgcmVuZGVyIHN1cHBvcnQgICAgICAgICAgICAgICAgIHwKLSAg
ICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1I4LCAgICAgICAgICAgICAgICBWZXJzaW9u
T3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgICAgIEFsd2F5cygpLCBWZXJz
aW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgIFZlcnNpb25PckV4dHMo
MywgMCwgIkdMX0VYVF90ZXh0dXJlX3JnIiksICAgQWx3YXlzKCksIFZlcnNpb25PckV4dHMoMywg
MCwgIkdMX0VYVF90ZXh0dXJlX3JnIikgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFw
LCBHTF9SOF9TTk9STSwgICAgICAgICAgVmVyc2lvbk9ubHkoMywgMSksICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBbHdheXMoKSwgTmV2ZXIoKSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFsd2F5cygpLCBOZXZlcigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp
OwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkc4LCAgICAgICAgICAgICAgIFZl
cnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgICAgQWx3YXlzKCks
IFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgVmVyc2lvbk9y
RXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfcmciKSwgICBBbHdheXMoKSwgVmVyc2lvbk9yRXh0
cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSAgKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5n
KCZtYXAsIEdMX1JHOF9TTk9STSwgICAgICAgICBWZXJzaW9uT25seSgzLCAxKSwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFsd2F5cygpLCBOZXZlcigpLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgQWx3YXlzKCksIE5ldmVyKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0I4LCAgICAgICAgICAg
ICAgQWx3YXlzKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdh
eXMoKSwgQWx3YXlzKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJz
aW9uT3JFeHRzKDMsIDAsICJHTF9PRVNfcmdiOF9yZ2JhOCIpLCAgIEFsd2F5cygpLCBBbHdheXMo
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEZvcm1hdE1h
cHBpbmcoJm1hcCwgR0xfUkc4X1NOT1JNLCAgICAgICAgIFZlcnNpb25Pbmx5KDMsIDEpLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzKCksIE5ldmVyKCksICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAg
ICAgICAgICAgICAgICBBbHdheXMoKSwgTmV2ZXIoKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQjU2NSwgICAg
ICAgICAgICBBbHdheXMoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFsd2F5cygpLCBBbHdheXMoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFsd2F5cygpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzKCksIEFs
d2F5cygpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9y
bWF0TWFwcGluZygmbWFwLCBHTF9SR0JBNCwgICAgICAgICAgICAgQWx3YXlzKCksICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXMoKSwgQWx3YXlzKCksICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXMoKSwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFsd2F5cygpLCBBbHdheXMoKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICApOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCNV9B
MSwgICAgICAgICAgIEFsd2F5cygpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQWx3YXlzKCksIEFsd2F5cygpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQWx3YXlzKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXMo
KSwgQWx3YXlzKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNl
cnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQkE4LCAgICAgICAgICAgICBBbHdheXMoKSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5cygpLCBBbHdheXMoKSwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwg
IkdMX09FU19yZ2I4X3JnYmE4IiksICAgQWx3YXlzKCksIFZlcnNpb25PckV4dHMoMywgMCwgIkdM
X09FU19yZ2I4X3JnYmE4IikgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9S
R0JBOF9TTk9STSwgICAgICAgVmVyc2lvbk9ubHkoMywgMSksICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBbHdheXMoKSwgTmV2ZXIoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgIEFs
d2F5cygpLCBOZXZlcigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAg
IEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCMTBfQTIsICAgICAgICAgIEFsd2F5cygp
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzKCksIEFsd2F5
cygpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9ubHkoMywg
MCksICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXMoKSwgVmVyc2lvbk9ubHkoMywgMCkg
ICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAs
IEdMX1JHQjEwX0EyVUksICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDMsICJHTF9BUkJfdGV4dHVy
ZV9yZ2IxMF9hMnVpIiksIE5ldmVyKCksICBBbHdheXMoKSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgTmV2ZXIoKSwgIEFsd2F5cygpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7
Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9TUkdCOCwgICAgICAgICAgICAgVmVy
c2lvbk9yRXh0cygyLCAxLCAiR0xfRVhUX3RleHR1cmVfc1JHQiIpLCAgICAgICBBbHdheXMoKSwg
VmVyc2lvbk9yRXh0cygyLCAxLCAiR0xfRVhUX3RleHR1cmVfc1JHQiIpLCAgICBWZXJzaW9uT25s
eSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5cygpLCBOZXZlcigpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmco
Jm1hcCwgR0xfU1JHQjhfQUxQSEE4LCAgICAgIFZlcnNpb25PckV4dHMoMiwgMSwgIkdMX0VYVF90
ZXh0dXJlX3NSR0IiKSwgICAgICAgQWx3YXlzKCksIFZlcnNpb25PckV4dHMoMiwgMSwgIkdMX0VY
VF90ZXh0dXJlX3NSR0IiKSwgICAgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAg
ICAgICAgICBBbHdheXMoKSwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3NSR0IiKSAgICAg
ICAgKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1I4SSwgICAgICAgICAgICAg
ICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgICAgIE5ldmVy
KCksICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgIFZlcnNp
b25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXIoKSwgIFZlcnNpb25P
bmx5KDMsIDApICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFw
cGluZygmbWFwLCBHTF9SOFVJLCAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xf
QVJCX3RleHR1cmVfcmciKSwgICAgICAgICBOZXZlcigpLCAgVmVyc2lvbk9yRXh0cygzLCAwLCAi
R0xfQVJCX3RleHR1cmVfcmciKSwgICAgICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5ldmVyKCksICBWZXJzaW9uT25seSgzLCAwKSAgICAgICAgICAgICAgICAg
ICAgICAgICApOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUjE2SSwgICAgICAg
ICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgICAg
TmV2ZXIoKSwgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAg
VmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlcigpLCAgVmVy
c2lvbk9ubHkoMywgMCkgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3Jt
YXRNYXBwaW5nKCZtYXAsIEdMX1IxNlVJLCAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAs
ICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgICAgIE5ldmVyKCksICBWZXJzaW9uT3JFeHRzKDMs
IDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgTmV2ZXIoKSwgIFZlcnNpb25Pbmx5KDMsIDApICAgICAgICAgICAg
ICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SMzJJLCAg
ICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwgICAg
ICAgICBOZXZlcigpLCAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwg
ICAgICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyKCks
ICBWZXJzaW9uT25seSgzLCAwKSAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2Vy
dEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUjMyVUksICAgICAgICAgICAgIFZlcnNpb25PckV4dHMo
MywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgICAgTmV2ZXIoKSwgIFZlcnNpb25PckV4
dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgVmVyc2lvbk9ubHkoMywgMCksICAg
ICAgICAgICAgICAgICAgICAgICAgICBOZXZlcigpLCAgVmVyc2lvbk9ubHkoMywgMCkgICAgICAg
ICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JH
OEksICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIp
LCAgICAgICAgIE5ldmVyKCksICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9y
ZyIpLCAgICAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2
ZXIoKSwgIFZlcnNpb25Pbmx5KDMsIDApICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAg
SW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SRzhVSSwgICAgICAgICAgICAgVmVyc2lvbk9y
RXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwgICAgICAgICBOZXZlcigpLCAgVmVyc2lv
bk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwgICAgICBWZXJzaW9uT25seSgzLCAw
KSwgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyKCksICBWZXJzaW9uT25seSgzLCAwKSAg
ICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwg
R0xfUkcxNkksICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJl
X3JnIiksICAgICAgICAgTmV2ZXIoKSwgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0
dXJlX3JnIiksICAgICAgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAgICAgICAg
ICBOZXZlcigpLCAgVmVyc2lvbk9ubHkoMywgMCkgICAgICAgICAgICAgICAgICAgICAgICAgKTsK
LSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHMTZVSSwgICAgICAgICAgICBWZXJz
aW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgICAgIE5ldmVyKCksICBW
ZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgIFZlcnNpb25Pbmx5
KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXIoKSwgIFZlcnNpb25Pbmx5KDMs
IDApICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygm
bWFwLCBHTF9SRzMySSwgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3Rl
eHR1cmVfcmciKSwgICAgICAgICBOZXZlcigpLCAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJC
X3RleHR1cmVfcmciKSwgICAgICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5ldmVyKCksICBWZXJzaW9uT25seSgzLCAwKSAgICAgICAgICAgICAgICAgICAgICAg
ICApOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkczMlVJLCAgICAgICAgICAg
IFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgICAgTmV2ZXIo
KSwgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgVmVyc2lv
bk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlcigpLCAgVmVyc2lvbk9u
bHkoMywgMCkgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBw
aW5nKCZtYXAsIEdMX1JHQjhJLCAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9F
WFRfdGV4dHVyZV9pbnRlZ2VyIiksICAgIE5ldmVyKCksICBOZXZlcigpLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgTmV2ZXIoKSwgIE5ldmVyKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0I4VUksICAgICAg
ICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfaW50ZWdlciIpLCAgICBO
ZXZlcigpLCAgTmV2ZXIoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
ZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyKCksICBOZXZl
cigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEZvcm1h
dE1hcHBpbmcoJm1hcCwgR0xfUkdCMTZJLCAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwg
IkdMX0VYVF90ZXh0dXJlX2ludGVnZXIiKSwgICAgTmV2ZXIoKSwgIE5ldmVyKCksICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAg
ICAgICAgICAgICAgICAgICBOZXZlcigpLCAgTmV2ZXIoKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQjE2VUks
ICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRfdGV4dHVyZV9pbnRlZ2VyIiks
ICAgIE5ldmVyKCksICBOZXZlcigpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXIoKSwg
IE5ldmVyKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0
Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0IzMkksICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygz
LCAwLCAiR0xfRVhUX3RleHR1cmVfaW50ZWdlciIpLCAgICBOZXZlcigpLCAgTmV2ZXIoKSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT25seSgzLCAwKSwgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5ldmVyKCksICBOZXZlcigpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdC
MzJVSSwgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF90ZXh0dXJlX2ludGVn
ZXIiKSwgICAgTmV2ZXIoKSwgIE5ldmVyKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZl
cigpLCAgTmV2ZXIoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJ
bnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQkE4SSwgICAgICAgICAgICBWZXJzaW9uT3JF
eHRzKDMsIDAsICJHTF9FWFRfdGV4dHVyZV9pbnRlZ2VyIiksICAgIE5ldmVyKCksICBWZXJzaW9u
T3JFeHRzKDMsIDAsICJHTF9FWFRfdGV4dHVyZV9pbnRlZ2VyIiksIFZlcnNpb25Pbmx5KDMsIDAp
LCAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXIoKSwgIFZlcnNpb25Pbmx5KDMsIDApICAg
ICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBH
TF9SR0JBOFVJLCAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVf
aW50ZWdlciIpLCAgICBOZXZlcigpLCAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1
cmVfaW50ZWdlciIpLCBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAg
IE5ldmVyKCksICBWZXJzaW9uT25seSgzLCAwKSAgICAgICAgICAgICAgICAgICAgICAgICApOwot
ICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCQTE2SSwgICAgICAgICAgIFZlcnNp
b25PckV4dHMoMywgMCwgIkdMX0VYVF90ZXh0dXJlX2ludGVnZXIiKSwgICAgTmV2ZXIoKSwgIFZl
cnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF90ZXh0dXJlX2ludGVnZXIiKSwgVmVyc2lvbk9ubHko
MywgMCksICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlcigpLCAgVmVyc2lvbk9ubHkoMywg
MCkgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZt
YXAsIEdMX1JHQkExNlVJLCAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRfdGV4
dHVyZV9pbnRlZ2VyIiksICAgIE5ldmVyKCksICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRf
dGV4dHVyZV9pbnRlZ2VyIiksIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgTmV2ZXIoKSwgIFZlcnNpb25Pbmx5KDMsIDApICAgICAgICAgICAgICAgICAgICAgICAg
ICk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0JBMzJJLCAgICAgICAgICAg
VmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfaW50ZWdlciIpLCAgICBOZXZlcigp
LCAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfaW50ZWdlciIpLCBWZXJzaW9u
T25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyKCksICBWZXJzaW9uT25s
eSgzLCAwKSAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEZvcm1hdE1hcHBp
bmcoJm1hcCwgR0xfUkdCQTMyVUksICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VY
VF90ZXh0dXJlX2ludGVnZXIiKSwgICAgTmV2ZXIoKSwgIFZlcnNpb25PckV4dHMoMywgMCwgIkdM
X0VYVF90ZXh0dXJlX2ludGVnZXIiKSwgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAgICAg
ICAgICAgICAgICBOZXZlcigpLCAgVmVyc2lvbk9ubHkoMywgMCkgICAgICAgICAgICAgICAgICAg
ICAgICAgKTsKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgfCBGb3JtYXQgICAgICAgICAg
ICAgIHwgT3BlbkdMIHRleHR1cmUgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBG
aWx0ZXIgICAgICAgICAgIHwgT3BlbkdMIHJlbmRlciBzdXBwb3J0ICAgICAgICAgICAgICAgICAg
ICAgICAgfCBPcGVuR0wgRVMgdGV4dHVyZSBzdXBwb3J0ICAgICAgICAgICAgICAgICB8IEZpbHRl
ciAgICAgICAgICAgfCBPcGVuR0wgRVMgcmVuZGVyIHN1cHBvcnQgICAgICAgICAgICAgICAgIHwK
KyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1I4LCAgICAgICAgICAgICAgICBWZXJz
aW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgICAgIEFsd2F5c1N1cHBv
cnRlZCgpLCBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgIFZl
cnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF90ZXh0dXJlX3JnIiksICAgQWx3YXlzU3VwcG9ydGVk
KCksIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF90ZXh0dXJlX3JnIikgICk7CisgICAgSW5z
ZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SOF9TTk9STSwgICAgICAgICAgVmVyc2lvbk9ubHko
MywgMSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQoKSwg
TmV2ZXJTdXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT25s
eSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZl
clN1cHBvcnRlZCgpICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1h
dE1hcHBpbmcoJm1hcCwgR0xfUkc4LCAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwg
IkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKCksIFZlcnNpb25P
ckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgVmVyc2lvbk9yRXh0cygzLCAw
LCAiR0xfRVhUX3RleHR1cmVfcmciKSwgICBBbHdheXNTdXBwb3J0ZWQoKSwgVmVyc2lvbk9yRXh0
cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5n
KCZtYXAsIEdMX1JHOF9TTk9STSwgICAgICAgICBWZXJzaW9uT25seSgzLCAxKSwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgp
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkgICAg
ICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBH
TF9SR0I4LCAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKCksICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgQWx3YXlzU3VwcG9ydGVkKCksICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9PRVNfcmdiOF9y
Z2JhOCIpLCAgIEFsd2F5c1N1cHBvcnRlZCgpLCBBbHdheXNTdXBwb3J0ZWQoKSAgICAgICAgICAg
ICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkc4X1NO
T1JNLCAgICAgICAgIFZlcnNpb25Pbmx5KDMsIDEpLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAgICAgICAg
ICBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQjU2NSwgICAgICAg
ICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFs
d2F5c1N1cHBvcnRlZCgpLCBBbHdheXNTdXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlz
U3VwcG9ydGVkKCksIEFsd2F5c1N1cHBvcnRlZCgpICAgICAgICAgICAgICAgICAgICAgICAgICk7
CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0JBNCwgICAgICAgICAgICAgQWx3
YXlzU3VwcG9ydGVkKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBw
b3J0ZWQoKSwgQWx3YXlzU3VwcG9ydGVkKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
bHdheXNTdXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRl
ZCgpLCBBbHdheXNTdXBwb3J0ZWQoKSAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgIElu
c2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCNV9BMSwgICAgICAgICAgIEFsd2F5c1N1cHBv
cnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKCks
IEFsd2F5c1N1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3Vw
cG9ydGVkKCksICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgQWx3
YXlzU3VwcG9ydGVkKCkgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3Jt
YXRNYXBwaW5nKCZtYXAsIEdMX1JHQkE4LCAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQoKSwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCBBbHdheXNT
dXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywg
MCwgIkdMX09FU19yZ2I4X3JnYmE4IiksICAgQWx3YXlzU3VwcG9ydGVkKCksIFZlcnNpb25PckV4
dHMoMywgMCwgIkdMX09FU19yZ2I4X3JnYmE4IikgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGlu
ZygmbWFwLCBHTF9SR0JBOF9TTk9STSwgICAgICAgVmVyc2lvbk9ubHkoMywgMSksICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQo
KSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpICAg
ICAgICAgICAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwg
R0xfUkdCMTBfQTIsICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKCksIEFsd2F5c1N1cHBvcnRlZCgpLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAgICAg
ICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgVmVyc2lvbk9ubHkoMywgMCkgICAgICAgICAg
ICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQjEw
X0EyVUksICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDMsICJHTF9BUkJfdGV4dHVyZV9yZ2IxMF9h
MnVpIiksIE5ldmVyU3VwcG9ydGVkKCksICBBbHdheXNTdXBwb3J0ZWQoKSwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgTmV2ZXJTdXBwb3J0ZWQoKSwgIEFsd2F5c1N1cHBvcnRlZCgpICAgICAgICAgICAgICAgICAg
ICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9TUkdCOCwgICAgICAg
ICAgICAgVmVyc2lvbk9yRXh0cygyLCAxLCAiR0xfRVhUX3RleHR1cmVfc1JHQiIpLCAgICAgICBB
bHdheXNTdXBwb3J0ZWQoKSwgVmVyc2lvbk9yRXh0cygyLCAxLCAiR0xfRVhUX3RleHR1cmVfc1JH
QiIpLCAgICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5
c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpICAgICAgICAgICAgICAgICAgICAgICAgICAp
OworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfU1JHQjhfQUxQSEE4LCAgICAgIFZl
cnNpb25PckV4dHMoMiwgMSwgIkdMX0VYVF90ZXh0dXJlX3NSR0IiKSwgICAgICAgQWx3YXlzU3Vw
cG9ydGVkKCksIFZlcnNpb25PckV4dHMoMiwgMSwgIkdMX0VYVF90ZXh0dXJlX3NSR0IiKSwgICAg
VmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0
ZWQoKSwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3NSR0IiKSAgICAgICAgKTsKKyAgICBJ
bnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1I4SSwgICAgICAgICAgICAgICBWZXJzaW9uT3JF
eHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCks
ICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgIFZlcnNpb25P
bmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgIFZl
cnNpb25Pbmx5KDMsIDApICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9y
bWF0TWFwcGluZygmbWFwLCBHTF9SOFVJLCAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAw
LCAiR0xfQVJCX3RleHR1cmVfcmciKSwgICAgICAgICBOZXZlclN1cHBvcnRlZCgpLCAgVmVyc2lv
bk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwgICAgICBWZXJzaW9uT25seSgzLCAw
KSwgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCksICBWZXJzaW9uT25s
eSgzLCAwKSAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBp
bmcoJm1hcCwgR0xfUjE2SSwgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FS
Ql90ZXh0dXJlX3JnIiksICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgIFZlcnNpb25PckV4dHMo
MywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgVmVyc2lvbk9ubHkoMywgMCksICAgICAg
ICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCgpLCAgVmVyc2lvbk9ubHkoMywgMCkg
ICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAs
IEdMX1IxNlVJLCAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVy
ZV9yZyIpLCAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCksICBWZXJzaW9uT3JFeHRzKDMsIDAsICJH
TF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgIFZlcnNpb25Pbmx5KDMsIDApICAgICAgICAg
ICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SMzJJ
LCAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwg
ICAgICAgICBOZXZlclN1cHBvcnRlZCgpLCAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3Rl
eHR1cmVfcmciKSwgICAgICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5ldmVyU3VwcG9ydGVkKCksICBWZXJzaW9uT25seSgzLCAwKSAgICAgICAgICAgICAgICAg
ICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUjMyVUksICAgICAg
ICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgICAg
TmV2ZXJTdXBwb3J0ZWQoKSwgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3Jn
IiksICAgICAgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZl
clN1cHBvcnRlZCgpLCAgVmVyc2lvbk9ubHkoMywgMCkgICAgICAgICAgICAgICAgICAgICAgICAg
KTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHOEksICAgICAgICAgICAgICBW
ZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgICAgIE5ldmVyU3Vw
cG9ydGVkKCksICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAg
IFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0
ZWQoKSwgIFZlcnNpb25Pbmx5KDMsIDApICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAg
SW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SRzhVSSwgICAgICAgICAgICAgVmVyc2lvbk9y
RXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwgICAgICAgICBOZXZlclN1cHBvcnRlZCgp
LCAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwgICAgICBWZXJzaW9u
T25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCksICBW
ZXJzaW9uT25seSgzLCAwKSAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZv
cm1hdE1hcHBpbmcoJm1hcCwgR0xfUkcxNkksICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywg
MCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgIFZlcnNp
b25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgVmVyc2lvbk9ubHkoMywg
MCksICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCgpLCAgVmVyc2lvbk9u
bHkoMywgMCkgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBw
aW5nKCZtYXAsIEdMX1JHMTZVSSwgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9B
UkJfdGV4dHVyZV9yZyIpLCAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCksICBWZXJzaW9uT3JFeHRz
KDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgIFZlcnNpb25Pbmx5KDMsIDAp
ICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFw
LCBHTF9SRzMySSwgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1
cmVfcmciKSwgICAgICAgICBOZXZlclN1cHBvcnRlZCgpLCAgVmVyc2lvbk9yRXh0cygzLCAwLCAi
R0xfQVJCX3RleHR1cmVfcmciKSwgICAgICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCksICBWZXJzaW9uT25seSgzLCAwKSAgICAgICAg
ICAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkcz
MlVJLCAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiks
ICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90
ZXh0dXJlX3JnIiksICAgICAgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAgICAg
ICAgICBOZXZlclN1cHBvcnRlZCgpLCAgVmVyc2lvbk9ubHkoMywgMCkgICAgICAgICAgICAgICAg
ICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQjhJLCAgICAg
ICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRfdGV4dHVyZV9pbnRlZ2VyIiksICAg
IE5ldmVyU3VwcG9ydGVkKCksICBOZXZlclN1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2
ZXJTdXBwb3J0ZWQoKSwgIE5ldmVyU3VwcG9ydGVkKCkgICAgICAgICAgICAgICAgICAgICAgICAg
ICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0I4VUksICAgICAgICAgICAg
VmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfaW50ZWdlciIpLCAgICBOZXZlclN1
cHBvcnRlZCgpLCAgTmV2ZXJTdXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9y
dGVkKCksICBOZXZlclN1cHBvcnRlZCgpICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAg
IEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCMTZJLCAgICAgICAgICAgIFZlcnNpb25P
ckV4dHMoMywgMCwgIkdMX0VYVF90ZXh0dXJlX2ludGVnZXIiKSwgICAgTmV2ZXJTdXBwb3J0ZWQo
KSwgIE5ldmVyU3VwcG9ydGVkKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lv
bk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCgpLCAg
TmV2ZXJTdXBwb3J0ZWQoKSAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRG
b3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQjE2VUksICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMs
IDAsICJHTF9FWFRfdGV4dHVyZV9pbnRlZ2VyIiksICAgIE5ldmVyU3VwcG9ydGVkKCksICBOZXZl
clN1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25Pbmx5KDMs
IDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgIE5ldmVyU3Vw
cG9ydGVkKCkgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFw
cGluZygmbWFwLCBHTF9SR0IzMkksICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xf
RVhUX3RleHR1cmVfaW50ZWdlciIpLCAgICBOZXZlclN1cHBvcnRlZCgpLCAgTmV2ZXJTdXBwb3J0
ZWQoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT25seSgzLCAwKSwgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCksICBOZXZlclN1cHBvcnRlZCgp
ICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1h
cCwgR0xfUkdCMzJVSSwgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF90ZXh0
dXJlX2ludGVnZXIiKSwgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgIE5ldmVyU3VwcG9ydGVkKCksICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAg
ICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCgpLCAgTmV2ZXJTdXBwb3J0ZWQoKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JH
QkE4SSwgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRfdGV4dHVyZV9pbnRl
Z2VyIiksICAgIE5ldmVyU3VwcG9ydGVkKCksICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRf
dGV4dHVyZV9pbnRlZ2VyIiksIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgIFZlcnNpb25Pbmx5KDMsIDApICAgICAgICAgICAgICAg
ICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0JBOFVJLCAg
ICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfaW50ZWdlciIpLCAg
ICBOZXZlclN1cHBvcnRlZCgpLCAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVf
aW50ZWdlciIpLCBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgIE5l
dmVyU3VwcG9ydGVkKCksICBWZXJzaW9uT25seSgzLCAwKSAgICAgICAgICAgICAgICAgICAgICAg
ICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCQTE2SSwgICAgICAgICAg
IFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF90ZXh0dXJlX2ludGVnZXIiKSwgICAgTmV2ZXJT
dXBwb3J0ZWQoKSwgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF90ZXh0dXJlX2ludGVnZXIi
KSwgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBv
cnRlZCgpLCAgVmVyc2lvbk9ubHkoMywgMCkgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAg
ICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQkExNlVJLCAgICAgICAgICBWZXJzaW9u
T3JFeHRzKDMsIDAsICJHTF9FWFRfdGV4dHVyZV9pbnRlZ2VyIiksICAgIE5ldmVyU3VwcG9ydGVk
KCksICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRfdGV4dHVyZV9pbnRlZ2VyIiksIFZlcnNp
b25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwg
IFZlcnNpb25Pbmx5KDMsIDApICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0
Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0JBMzJJLCAgICAgICAgICAgVmVyc2lvbk9yRXh0cygz
LCAwLCAiR0xfRVhUX3RleHR1cmVfaW50ZWdlciIpLCAgICBOZXZlclN1cHBvcnRlZCgpLCAgVmVy
c2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfaW50ZWdlciIpLCBWZXJzaW9uT25seSgz
LCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCksICBWZXJzaW9u
T25seSgzLCAwKSAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1h
cHBpbmcoJm1hcCwgR0xfUkdCQTMyVUksICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdM
X0VYVF90ZXh0dXJlX2ludGVnZXIiKSwgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgIFZlcnNpb25PckV4
dHMoMywgMCwgIkdMX0VYVF90ZXh0dXJlX2ludGVnZXIiKSwgVmVyc2lvbk9ubHkoMywgMCksICAg
ICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCgpLCAgVmVyc2lvbk9ubHkoMywg
MCkgICAgICAgICAgICAgICAgICAgICAgICAgKTsKIAogICAgIC8vIFVuc2l6ZWQgZm9ybWF0cwot
ICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQUxQSEEsICAgICAgICAgICAgIE5ldmVy
KCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXIoKSwgIE5l
dmVyKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXIoKSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlcigpLCAgTmV2ZXIoKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZt
YXAsIEdMX0xVTUlOQU5DRSwgICAgICAgICBOZXZlcigpLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5ldmVyKCksICBOZXZlcigpLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5ldmVyKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTmV2ZXIoKSwgIE5ldmVyKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9MVU1JTkFOQ0VfQUxQSEEsICAg
TmV2ZXIoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlcigp
LCAgTmV2ZXIoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlcigp
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyKCksICBOZXZlcigpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEZvcm1hdE1hcHBp
bmcoJm1hcCwgR0xfUkVELCAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FS
Ql90ZXh0dXJlX3JnIiksICAgICAgICAgQWx3YXlzKCksIFZlcnNpb25PckV4dHMoMywgMCwgIkdM
X0FSQl90ZXh0dXJlX3JnIiksICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1
cmVfcmciKSwgICBBbHdheXMoKSwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVf
cmciKSAgKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHLCAgICAgICAgICAg
ICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgICAgIEFs
d2F5cygpLCBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgIFZl
cnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF90ZXh0dXJlX3JnIiksICAgQWx3YXlzKCksIFZlcnNp
b25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIikgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0
TWFwcGluZygmbWFwLCBHTF9SR0IsICAgICAgICAgICAgICAgQWx3YXlzKCksICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXMoKSwgQWx3YXlzKCksICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXMoKSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFsd2F5cygpLCBBbHdheXMoKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICApOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCQSwgICAg
ICAgICAgICAgIEFsd2F5cygpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQWx3YXlzKCksIEFsd2F5cygpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQWx3YXlzKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXMoKSwg
QWx3YXlzKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRG
b3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JFRF9JTlRFR0VSLCAgICAgICBWZXJzaW9uT3JFeHRzKDMs
IDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgICAgIE5ldmVyKCksICBWZXJzaW9uT3JFeHRz
KDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgTmV2ZXIoKSwgIFZlcnNpb25Pbmx5KDMsIDApICAgICAgICAg
ICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR19J
TlRFR0VSLCAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwg
ICAgICAgICBOZXZlcigpLCAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmci
KSwgICAgICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVy
KCksICBWZXJzaW9uT25seSgzLCAwKSAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIElu
c2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCX0lOVEVHRVIsICAgICAgIFZlcnNpb25PckV4
dHMoMywgMCwgIkdMX0VYVF90ZXh0dXJlX2ludGVnZXIiKSwgICAgTmV2ZXIoKSwgIE5ldmVyKCks
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9ubHkoMywgMCks
ICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlcigpLCAgTmV2ZXIoKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdM
X1JHQkFfSU5URUdFUiwgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRfdGV4dHVyZV9p
bnRlZ2VyIiksICAgIE5ldmVyKCksICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRfdGV4dHVy
ZV9pbnRlZ2VyIiksIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAg
TmV2ZXIoKSwgIFZlcnNpb25Pbmx5KDMsIDApICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0g
ICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9TUkdCLCAgICAgICAgICAgICAgVmVyc2lv
bk9yRXh0cygyLCAxLCAiR0xfRVhUX3RleHR1cmVfc1JHQiIpLCAgICAgICBBbHdheXMoKSwgVmVy
c2lvbk9yRXh0cygyLCAxLCAiR0xfRVhUX3RleHR1cmVfc1JHQiIpLCAgICBFeHRzT25seSgiR0xf
RVhUX3NSR0IiKSwgICAgICAgICAgICAgICAgICAgIEFsd2F5cygpLCBOZXZlcigpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1h
cCwgR0xfU1JHQl9BTFBIQSwgICAgICAgIFZlcnNpb25PckV4dHMoMiwgMSwgIkdMX0VYVF90ZXh0
dXJlX3NSR0IiKSwgICAgICAgQWx3YXlzKCksIFZlcnNpb25PckV4dHMoMiwgMSwgIkdMX0VYVF90
ZXh0dXJlX3NSR0IiKSwgICAgRXh0c09ubHkoIkdMX0VYVF9zUkdCIiksICAgICAgICAgICAgICAg
ICAgICBBbHdheXMoKSwgTmV2ZXIoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0FMUEhBLCAgICAgICAgICAgICBO
ZXZlclN1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3Vw
cG9ydGVkKCksICBOZXZlclN1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5ldmVyU3VwcG9ydGVkKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0
ZWQoKSwgIE5ldmVyU3VwcG9ydGVkKCkgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAg
SW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9MVU1JTkFOQ0UsICAgICAgICAgTmV2ZXJTdXBw
b3J0ZWQoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCgp
LCAgTmV2ZXJTdXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1
cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCksICBO
ZXZlclN1cHBvcnRlZCgpICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZv
cm1hdE1hcHBpbmcoJm1hcCwgR0xfTFVNSU5BTkNFX0FMUEhBLCAgIE5ldmVyU3VwcG9ydGVkKCks
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgIE5ldmVy
U3VwcG9ydGVkKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQo
KSwgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCgpLCAgTmV2ZXJTdXBw
b3J0ZWQoKSAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBw
aW5nKCZtYXAsIEdMX1JFRCwgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9B
UkJfdGV4dHVyZV9yZyIpLCAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCBWZXJzaW9uT3JFeHRz
KDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdM
X0VYVF90ZXh0dXJlX3JnIiksICAgQWx3YXlzU3VwcG9ydGVkKCksIFZlcnNpb25PckV4dHMoMywg
MCwgIkdMX0FSQl90ZXh0dXJlX3JnIikgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFw
LCBHTF9SRywgICAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1
cmVfcmciKSwgICAgICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgVmVyc2lvbk9yRXh0cygzLCAwLCAi
R0xfQVJCX3RleHR1cmVfcmciKSwgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRfdGV4
dHVyZV9yZyIpLCAgIEFsd2F5c1N1cHBvcnRlZCgpLCBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9B
UkJfdGV4dHVyZV9yZyIpICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdC
LCAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKCksIEFsd2F5c1N1cHBvcnRlZCgpLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKCksICAgICAgICAgICAgICAgICAgICAg
ICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgQWx3YXlzU3VwcG9ydGVkKCkgICAgICAgICAgICAgICAg
ICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQkEsICAgICAg
ICAgICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFsd2F5c1N1cHBvcnRlZCgpLCBBbHdheXNTdXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3
YXlzU3VwcG9ydGVkKCksIEFsd2F5c1N1cHBvcnRlZCgpICAgICAgICAgICAgICAgICAgICAgICAg
ICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SRURfSU5URUdFUiwgICAgICAg
VmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwgICAgICAgICBOZXZlclN1
cHBvcnRlZCgpLCAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwgICAg
ICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9y
dGVkKCksICBWZXJzaW9uT25seSgzLCAwKSAgICAgICAgICAgICAgICAgICAgICAgICApOworICAg
IEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdfSU5URUdFUiwgICAgICAgIFZlcnNpb25P
ckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQo
KSwgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgVmVyc2lv
bk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCgpLCAg
VmVyc2lvbk9ubHkoMywgMCkgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRG
b3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQl9JTlRFR0VSLCAgICAgICBWZXJzaW9uT3JFeHRzKDMs
IDAsICJHTF9FWFRfdGV4dHVyZV9pbnRlZ2VyIiksICAgIE5ldmVyU3VwcG9ydGVkKCksICBOZXZl
clN1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25Pbmx5KDMs
IDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgIE5ldmVyU3Vw
cG9ydGVkKCkgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFw
cGluZygmbWFwLCBHTF9SR0JBX0lOVEVHRVIsICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xf
RVhUX3RleHR1cmVfaW50ZWdlciIpLCAgICBOZXZlclN1cHBvcnRlZCgpLCAgVmVyc2lvbk9yRXh0
cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfaW50ZWdlciIpLCBWZXJzaW9uT25seSgzLCAwKSwgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCksICBWZXJzaW9uT25seSgzLCAw
KSAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1h
cCwgR0xfU1JHQiwgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMiwgMSwgIkdMX0VYVF90ZXh0
dXJlX3NSR0IiKSwgICAgICAgQWx3YXlzU3VwcG9ydGVkKCksIFZlcnNpb25PckV4dHMoMiwgMSwg
IkdMX0VYVF90ZXh0dXJlX3NSR0IiKSwgICAgRXh0c09ubHkoIkdMX0VYVF9zUkdCIiksICAgICAg
ICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1NS
R0JfQUxQSEEsICAgICAgICBWZXJzaW9uT3JFeHRzKDIsIDEsICJHTF9FWFRfdGV4dHVyZV9zUkdC
IiksICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCBWZXJzaW9uT3JFeHRzKDIsIDEsICJHTF9FWFRf
dGV4dHVyZV9zUkdCIiksICAgIEV4dHNPbmx5KCJHTF9FWFRfc1JHQiIpLCAgICAgICAgICAgICAg
ICAgICAgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkgICAgICAgICAgICAgICAg
ICAgICAgICAgICk7CiAKICAgICAvLyBGcm9tIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4
OAotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQkdSQThfRVhULCAgICAgICAgIFZl
cnNpb25PckV4dHMoMSwgMiwgIkdMX0VYVF9iZ3JhIiksICAgICAgICAgICAgICAgQWx3YXlzKCks
IFZlcnNpb25PckV4dHMoMSwgMiwgIkdMX0VYVF9iZ3JhIiksICAgICAgICAgICAgRXh0c09ubHko
IkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIpLCBBbHdheXMoKSwgTmV2ZXIoKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5n
KCZtYXAsIEdMX0JHUkFfRVhULCAgICAgICAgICBWZXJzaW9uT3JFeHRzKDEsIDIsICJHTF9FWFRf
YmdyYSIpLCAgICAgICAgICAgICAgIEFsd2F5cygpLCBWZXJzaW9uT3JFeHRzKDEsIDIsICJHTF9F
WFRfYmdyYSIpLCAgICAgICAgICAgIEV4dHNPbmx5KCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdS
QTg4ODgiKSwgQWx3YXlzKCksIE5ldmVyKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9CR1JBOF9FWFQsICAgICAg
ICAgVmVyc2lvbk9yRXh0cygxLCAyLCAiR0xfRVhUX2JncmEiKSwgICAgICAgICAgICAgICBBbHdh
eXNTdXBwb3J0ZWQoKSwgVmVyc2lvbk9yRXh0cygxLCAyLCAiR0xfRVhUX2JncmEiKSwgICAgICAg
ICAgICBFeHRzT25seSgiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4IiksIEFsd2F5c1N1
cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpICAgICAgICAgICAgICAgICAgICAgICAgICApOwor
ICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQkdSQV9FWFQsICAgICAgICAgIFZlcnNp
b25PckV4dHMoMSwgMiwgIkdMX0VYVF9iZ3JhIiksICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9y
dGVkKCksIFZlcnNpb25PckV4dHMoMSwgMiwgIkdMX0VYVF9iZ3JhIiksICAgICAgICAgICAgRXh0
c09ubHkoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIpLCBBbHdheXNTdXBwb3J0ZWQo
KSwgTmV2ZXJTdXBwb3J0ZWQoKSAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKIAogICAgIC8v
IEZsb2F0aW5nIHBvaW50IGZvcm1hdHMKLSAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgfCBG
b3JtYXQgICAgICAgICAgICAgIHwgT3BlbkdMIHRleHR1cmUgc3VwcG9ydCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgRmlsdGVyICB8IE9wZW5HTCByZW5kZXIgc3VwcG9y
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgT3BlbkdMIEVTIHRleHR1cmUgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCBGaWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCBPcGVuR0wgRVMgcmVuZGVyIHN1cHBvcnQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICBJbnNl
cnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1IxMUZfRzExRl9CMTBGLCAgICBWZXJzaW9uT3JFeHRz
KDMsIDAsICJHTF9FWFRfcGFja2VkX2Zsb2F0IiksICAgICAgICAgICAgICAgICAgICBBbHdheXMo
KSwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3BhY2tlZF9mbG9hdCBHTF9BUkJfY29sb3Jf
YnVmZmVyX2Zsb2F0IiksICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT25seSgzLCAwKSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5cygpLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4dHNPbmx5KCJH
TF9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0IikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0I5X0U1
LCAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfc2hhcmVkX2V4
cG9uZW50IiksICAgICAgICAgQWx3YXlzKCksIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF90
ZXh0dXJlX3NoYXJlZF9leHBvbmVudCBHTF9BUkJfY29sb3JfYnVmZmVyX2Zsb2F0IiksICAgICAg
ICAgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBbHdheXMoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOZXZlcigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEZvcm1h
dE1hcHBpbmcoJm1hcCwgR0xfUjE2RiwgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwg
IkdMX0FSQl90ZXh0dXJlX3JnIEFSQl90ZXh0dXJlX2Zsb2F0IiksICAgIEFsd2F5cygpLCBWZXJz
aW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyBHTF9BUkJfdGV4dHVyZV9mbG9hdCBH
TF9BUkJfY29sb3JfYnVmZmVyX2Zsb2F0IiksIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX09FU190
ZXh0dXJlX2hhbGZfZmxvYXQgR0xfRVhUX3RleHR1cmVfcmciKSwgVmVyc2lvbk9yRXh0cygzLCAw
LCAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKSwgVmVyc2lvbk9yRXh0c0FuZEV4
dHMoMywgMCwgIkdMX0VYVF90ZXh0dXJlX3JnIiwgIkdMX0VYVF9jb2xvcl9idWZmZXJfaGFsZl9m
bG9hdCIpKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHMTZGLCAgICAgICAg
ICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyBBUkJfdGV4dHVyZV9m
bG9hdCIpLCAgICBBbHdheXMoKSwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVf
cmcgR0xfQVJCX3RleHR1cmVfZmxvYXQgR0xfQVJCX2NvbG9yX2J1ZmZlcl9mbG9hdCIpLCBWZXJz
aW9uT3JFeHRzKDMsIDAsICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IEdMX0VYVF90ZXh0dXJl
X3JnIiksIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGlu
ZWFyIiksIFZlcnNpb25PckV4dHNBbmRFeHRzKDMsIDAsICJHTF9FWFRfdGV4dHVyZV9yZyIsICJH
TF9FWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiKSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGlu
ZygmbWFwLCBHTF9SR0IxNkYsICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJC
X3RleHR1cmVfZmxvYXQiKSwgICAgICAgICAgICAgICAgICAgQWx3YXlzKCksIFZlcnNpb25PckV4
dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX2Zsb2F0IEdMX0FSQl9jb2xvcl9idWZmZXJfZmxvYXQi
KSwgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfT0VTX3RleHR1cmVf
aGFsZl9mbG9hdCIpLCAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9P
RVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpLCBFeHRzT25seSgiR0xfRVhUX2NvbG9yX2J1
ZmZlcl9oYWxmX2Zsb2F0IikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp
OwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCQTE2RiwgICAgICAgICAgIFZl
cnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX2Zsb2F0IiksICAgICAgICAgICAgICAg
ICAgIEFsd2F5cygpLCBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9mbG9hdCBH
TF9BUkJfY29sb3JfYnVmZmVyX2Zsb2F0IiksICAgICAgICAgICAgICAgICAgIFZlcnNpb25PckV4
dHMoMywgMCwgIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSwgICAgICAgICAgICAgICAgICAg
VmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKSwg
RXh0c09ubHkoIkdMX0VYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCIpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAs
IEdMX1IzMkYsICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVy
ZV9yZyBHTF9BUkJfdGV4dHVyZV9mbG9hdCIpLCBBbHdheXMoKSwgVmVyc2lvbk9yRXh0cygzLCAw
LCAiR0xfQVJCX3RleHR1cmVfcmcgR0xfQVJCX3RleHR1cmVfZmxvYXQgR0xfQVJCX2NvbG9yX2J1
ZmZlcl9mbG9hdCIpLCBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9PRVNfdGV4dHVyZV9mbG9hdCBH
TF9FWFRfdGV4dHVyZV9yZyIpLCAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX09FU190ZXh0
dXJlX2Zsb2F0X2xpbmVhciIpLCAgICAgIEV4dHNPbmx5KCJHTF9FWFRfY29sb3JfYnVmZmVyX2Zs
b2F0IikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAg
SW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SRzMyRiwgICAgICAgICAgICAgVmVyc2lvbk9y
RXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmcgR0xfQVJCX3RleHR1cmVfZmxvYXQiKSwgQWx3
YXlzKCksIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIEdMX0FSQl90ZXh0
dXJlX2Zsb2F0IEdMX0FSQl9jb2xvcl9idWZmZXJfZmxvYXQiKSwgVmVyc2lvbk9yRXh0cygzLCAw
LCAiR0xfT0VTX3RleHR1cmVfZmxvYXQgR0xfRVhUX3RleHR1cmVfcmciKSwgICAgICBWZXJzaW9u
T3JFeHRzKDMsIDAsICJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKSwgICAgICBFeHRzT25s
eSgiR0xfRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCIpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdC
MzJGLCAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX2Zsb2F0
IiksICAgICAgICAgICAgICAgICAgIEFsd2F5cygpLCBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9B
UkJfdGV4dHVyZV9mbG9hdCBHTF9BUkJfY29sb3JfYnVmZmVyX2Zsb2F0IiksICAgICAgICAgICAg
ICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX09FU190ZXh0dXJlX2Zsb2F0IiksICAgICAg
ICAgICAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfT0VTX3RleHR1cmVfZmxv
YXRfbGluZWFyIiksICAgICAgTmV2ZXIoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRG
b3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQkEzMkYsICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMs
IDAsICJHTF9BUkJfdGV4dHVyZV9mbG9hdCIpLCAgICAgICAgICAgICAgICAgICBBbHdheXMoKSwg
VmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfZmxvYXQgR0xfQVJCX2NvbG9yX2J1
ZmZlcl9mbG9hdCIpLCAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9P
RVNfdGV4dHVyZV9mbG9hdCIpLCAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMo
MywgMCwgIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpLCAgICAgIEV4dHNPbmx5KCJHTF9F
WFRfY29sb3JfYnVmZmVyX2Zsb2F0IikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICk7CisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgIHwgRm9ybWF0ICAgICAg
ICAgICAgICB8IE9wZW5HTCB0ZXh0dXJlIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IEZpbHRlciAgICAgICAgICAgfCBPcGVuR0wgcmVuZGVyIHN1cHBvcnQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8IE9wZW5HTCBFUyB0ZXh0dXJlIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgRmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgT3BlbkdMIEVTIHJlbmRlciBzdXBwb3J0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgSW5zZXJ0
Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SMTFGX0cxMUZfQjEwRiwgICAgVmVyc2lvbk9yRXh0cygz
LCAwLCAiR0xfRVhUX3BhY2tlZF9mbG9hdCIpLCAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3Vw
cG9ydGVkKCksIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF9wYWNrZWRfZmxvYXQgR0xfQVJC
X2NvbG9yX2J1ZmZlcl9mbG9hdCIpLCAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9ubHkoMywg
MCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdh
eXNTdXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHRz
T25seSgiR0xfRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCIpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xf
UkdCOV9FNSwgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF90ZXh0dXJlX3No
YXJlZF9leHBvbmVudCIpLCAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCBWZXJzaW9uT3JFeHRz
KDMsIDAsICJHTF9FWFRfdGV4dHVyZV9zaGFyZWRfZXhwb25lbnQgR0xfQVJCX2NvbG9yX2J1ZmZl
cl9mbG9hdCIpLCAgICAgICAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKCksICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsK
KyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1IxNkYsICAgICAgICAgICAgICBWZXJz
aW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyBBUkJfdGV4dHVyZV9mbG9hdCIpLCAg
ICBBbHdheXNTdXBwb3J0ZWQoKSwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVf
cmcgR0xfQVJCX3RleHR1cmVfZmxvYXQgR0xfQVJCX2NvbG9yX2J1ZmZlcl9mbG9hdCIpLCBWZXJz
aW9uT3JFeHRzKDMsIDAsICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IEdMX0VYVF90ZXh0dXJl
X3JnIiksIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGlu
ZWFyIiksIFZlcnNpb25PckV4dHNBbmRFeHRzKDMsIDAsICJHTF9FWFRfdGV4dHVyZV9yZyIsICJH
TF9FWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiKSk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGlu
ZygmbWFwLCBHTF9SRzE2RiwgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJC
X3RleHR1cmVfcmcgQVJCX3RleHR1cmVfZmxvYXQiKSwgICAgQWx3YXlzU3VwcG9ydGVkKCksIFZl
cnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIEdMX0FSQl90ZXh0dXJlX2Zsb2F0
IEdMX0FSQl9jb2xvcl9idWZmZXJfZmxvYXQiKSwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfT0VT
X3RleHR1cmVfaGFsZl9mbG9hdCBHTF9FWFRfdGV4dHVyZV9yZyIpLCBWZXJzaW9uT3JFeHRzKDMs
IDAsICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpLCBWZXJzaW9uT3JFeHRzQW5k
RXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfcmciLCAiR0xfRVhUX2NvbG9yX2J1ZmZlcl9oYWxm
X2Zsb2F0IikpOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCMTZGLCAgICAg
ICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX2Zsb2F0IiksICAgICAg
ICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9B
UkJfdGV4dHVyZV9mbG9hdCBHTF9BUkJfY29sb3JfYnVmZmVyX2Zsb2F0IiksICAgICAgICAgICAg
ICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSwg
ICAgICAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfT0VTX3RleHR1cmVfaGFs
Zl9mbG9hdF9saW5lYXIiKSwgRXh0c09ubHkoIkdMX0VYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9h
dCIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRG
b3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQkExNkYsICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMs
IDAsICJHTF9BUkJfdGV4dHVyZV9mbG9hdCIpLCAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBw
b3J0ZWQoKSwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfZmxvYXQgR0xfQVJC
X2NvbG9yX2J1ZmZlcl9mbG9hdCIpLCAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMs
IDAsICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IiksICAgICAgICAgICAgICAgICAgIFZlcnNp
b25PckV4dHMoMywgMCwgIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIiksIEV4dHNP
bmx5KCJHTF9FWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9S
MzJGLCAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmcg
R0xfQVJCX3RleHR1cmVfZmxvYXQiKSwgQWx3YXlzU3VwcG9ydGVkKCksIFZlcnNpb25PckV4dHMo
MywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIEdMX0FSQl90ZXh0dXJlX2Zsb2F0IEdMX0FSQl9jb2xv
cl9idWZmZXJfZmxvYXQiKSwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfT0VTX3RleHR1cmVfZmxv
YXQgR0xfRVhUX3RleHR1cmVfcmciKSwgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9PRVNf
dGV4dHVyZV9mbG9hdF9saW5lYXIiKSwgICAgICBFeHRzT25seSgiR0xfRVhUX2NvbG9yX2J1ZmZl
cl9mbG9hdCIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwor
ICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkczMkYsICAgICAgICAgICAgIFZlcnNp
b25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIEdMX0FSQl90ZXh0dXJlX2Zsb2F0Iiks
IEFsd2F5c1N1cHBvcnRlZCgpLCBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9y
ZyBHTF9BUkJfdGV4dHVyZV9mbG9hdCBHTF9BUkJfY29sb3JfYnVmZmVyX2Zsb2F0IiksIFZlcnNp
b25PckV4dHMoMywgMCwgIkdMX09FU190ZXh0dXJlX2Zsb2F0IEdMX0VYVF90ZXh0dXJlX3JnIiks
ICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIiks
ICAgICAgRXh0c09ubHkoIkdMX0VYVF9jb2xvcl9idWZmZXJfZmxvYXQiKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5n
KCZtYXAsIEdMX1JHQjMyRiwgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJf
dGV4dHVyZV9mbG9hdCIpLCAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgVmVy
c2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfZmxvYXQgR0xfQVJCX2NvbG9yX2J1ZmZl
cl9mbG9hdCIpLCAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9PRVNf
dGV4dHVyZV9mbG9hdCIpLCAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywg
MCwgIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpLCAgICAgIE5ldmVyU3VwcG9ydGVkKCkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0JBMzJGLCAgICAg
ICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfZmxvYXQiKSwgICAgICAg
ICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKCksIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FS
Ql90ZXh0dXJlX2Zsb2F0IEdMX0FSQl9jb2xvcl9idWZmZXJfZmxvYXQiKSwgICAgICAgICAgICAg
ICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfT0VTX3RleHR1cmVfZmxvYXQiKSwgICAgICAg
ICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9PRVNfdGV4dHVyZV9mbG9h
dF9saW5lYXIiKSwgICAgICBFeHRzT25seSgiR0xfRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCIpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogCiAgICAgLy8gRGVw
dGggc3RlbmNpbCBmb3JtYXRzCiAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgIHwgRm9ybWF0
ICAgICAgICAgICAgICAgICAgfCBPcGVuR0wgdGV4dHVyZSBzdXBwb3J0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgRmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgT3BlbkdMIHJlbmRlciBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE9w
ZW5HTCBFUyB0ZXh0dXJlIHN1cHBvcnQgICAgICAgICAgICAgICAgICB8IEZpbHRlciAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE9wZW5HTCBFUyByZW5kZXIgc3VwcG9ydCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgSW5zZXJ0
Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9ERVBUSF9DT01QT05FTlQxNiwgICAgIFZlcnNpb25Pbmx5
KDEsIDUpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDEs
IDUsICJHTF9BUkJfZGVwdGhfdGV4dHVyZSIpLCBWZXJzaW9uT25seSgxLCA1KSwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9ubHkoMiwgMCksICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfT0VTX2RlcHRoX3RleHR1cmUiKSwg
VmVyc2lvbk9ubHkoMiwgMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICApOwogICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfREVQVEhf
Q09NUE9ORU5UMjQsICAgICBWZXJzaW9uT25seSgxLCA1KSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygxLCA1LCAiR0xfQVJCX2RlcHRoX3RleHR1cmUiKSwg
VmVyc2lvbk9ubHkoMSwgNSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNp
b25Pbmx5KDIsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywg
MCwgIkdMX09FU19kZXB0aF90ZXh0dXJlIiksIFZlcnNpb25Pbmx5KDIsIDApICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRG
b3JtYXRNYXBwaW5nKCZtYXAsIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUywgVmVyc2lvbk9ubHko
MSwgNSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMSwg
NSwgIkdMX0FSQl9kZXB0aF90ZXh0dXJlIiksIFZlcnNpb25Pbmx5KDEsIDUpLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFeHRzT25seSgiR0xfT0VTX2RlcHRoX3RleHR1cmUiKSwg
ICAgICAgICAgICBBbHdheXMoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
eHRzT25seSgiR0xfT0VTX2RlcHRoMzIiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9ERVBUSF9D
T01QT05FTlQzMkYsICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl9kZXB0aF9idWZmZXJf
ZmxvYXQiKSwgICBBbHdheXMoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
ZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfZGVwdGhfYnVmZmVyX2Zsb2F0IiksICAgVmVyc2lv
bk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAw
LCAiR0xfT0VTX2RlcHRoX3RleHR1cmUiKSwgVmVyc2lvbk9ubHkoMywgMCkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEZv
cm1hdE1hcHBpbmcoJm1hcCwgR0xfU1RFTkNJTF9JTkRFWDgsICAgICAgICBWZXJzaW9uT3JFeHRz
KDMsIDAsICJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSwgTmV2ZXIoKSwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3Bh
Y2tlZF9kZXB0aF9zdGVuY2lsIiksIFZlcnNpb25Pbmx5KDIsIDApLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5ldmVyKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZl
cnNpb25Pbmx5KDIsIDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0RFUFRIMjRf
U1RFTkNJTDgsICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX2ZyYW1lYnVmZmVyX29i
amVjdCIpLCAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl9kZXB0aF90ZXh0dXJlIiksIFZl
cnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl9mcmFtZWJ1ZmZlcl9vYmplY3QiKSwgICBWZXJzaW9u
T3JFeHRzKDMsIDAsICJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpLCBBbHdheXMoKSwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9PRVNfZGVw
dGhfdGV4dHVyZSBHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSk7Ci0gICAgSW5zZXJ0Rm9y
bWF0TWFwcGluZygmbWFwLCBHTF9ERVBUSDMyRl9TVEVOQ0lMOCwgICAgIFZlcnNpb25PckV4dHMo
MywgMCwgIkdMX0FSQl9kZXB0aF9idWZmZXJfZmxvYXQiKSwgICBBbHdheXMoKSwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfZGVw
dGhfYnVmZmVyX2Zsb2F0IiksICAgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQWx3YXlzKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVy
c2lvbk9ubHkoMywgMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfREVQVEhfQ09N
UE9ORU5UMzJfT0VTLCBWZXJzaW9uT25seSgxLCA1KSwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmVyc2lvbk9yRXh0cygxLCA1LCAiR0xfQVJCX2RlcHRoX3RleHR1cmUiKSwgVmVy
c2lvbk9ubHkoMSwgNSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4dHNPbmx5
KCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpLCAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEV4dHNPbmx5KCJHTF9PRVNfZGVwdGgzMiIpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3Jt
YXRNYXBwaW5nKCZtYXAsIEdMX0RFUFRIX0NPTVBPTkVOVDMyRiwgICAgVmVyc2lvbk9yRXh0cygz
LCAwLCAiR0xfQVJCX2RlcHRoX2J1ZmZlcl9mbG9hdCIpLCAgIEFsd2F5c1N1cHBvcnRlZCgpLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl9kZXB0
aF9idWZmZXJfZmxvYXQiKSwgICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpLCBWZXJz
aW9uT25seSgzLCAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9TVEVOQ0lMX0lO
REVYOCwgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3Rl
bmNpbCIpLCBOZXZlclN1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJz
aW9uT3JFeHRzKDMsIDAsICJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSwgVmVyc2lvbk9u
bHkoMiwgMCksICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9ubHkoMiwgMCkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1h
dE1hcHBpbmcoJm1hcCwgR0xfREVQVEgyNF9TVEVOQ0lMOCwgICAgICBWZXJzaW9uT3JFeHRzKDMs
IDAsICJHTF9BUkJfZnJhbWVidWZmZXJfb2JqZWN0IiksICAgVmVyc2lvbk9yRXh0cygzLCAwLCAi
R0xfQVJCX2RlcHRoX3RleHR1cmUiKSwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX2ZyYW1l
YnVmZmVyX29iamVjdCIpLCAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX09FU19kZXB0aF90ZXh0
dXJlIiksIEFsd2F5c1N1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNp
b25PckV4dHMoMywgMCwgIkdMX09FU19kZXB0aF90ZXh0dXJlIEdMX09FU19wYWNrZWRfZGVwdGhf
c3RlbmNpbCIpKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0RFUFRIMzJGX1NU
RU5DSUw4LCAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX2RlcHRoX2J1ZmZlcl9mbG9h
dCIpLCAgIEFsd2F5c1N1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNp
b25PckV4dHMoMywgMCwgIkdMX0FSQl9kZXB0aF9idWZmZXJfZmxvYXQiKSwgICBWZXJzaW9uT25s
eSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT25seSgzLCAwKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgSW5zZXJ0Rm9ybWF0
TWFwcGluZygmbWFwLCBHTF9ERVBUSF9DT01QT05FTlQsICAgICAgIFZlcnNpb25Pbmx5KDEsIDUp
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDEsIDUsICJH
TF9BUkJfZGVwdGhfdGV4dHVyZSIpLCBWZXJzaW9uT25seSgxLCA1KSwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmVyc2lvbk9ubHkoMiwgMCksICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfT0VTX2RlcHRoX3RleHR1cmUiKSwgVmVyc2lv
bk9ubHkoMiwgMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICApOwogICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfREVQVEhfU1RFTkNJ
TCwgICAgICAgICBWZXJzaW9uT25seSgxLCA1KSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmVyc2lvbk9yRXh0cygxLCA1LCAiR0xfQVJCX2RlcHRoX3RleHR1cmUiKSwgVmVyc2lv
bk9ubHkoMSwgNSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25Pbmx5
KDIsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdM
X09FU19kZXB0aF90ZXh0dXJlIiksIFZlcnNpb25Pbmx5KDIsIDApICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKIAogICAgIC8vIEx1bWluYW5j
ZSBhbHBoYSBmb3JtYXRzCi0gICAgLy8gICAgICAgICAgICAgICAgICAgICAgIHwgRm9ybWF0ICAg
ICAgICAgICAgICAgICAgfCBPcGVuR0wgdGV4dHVyZSBzdXBwb3J0ICAgICAgICAgICAgICAgICAg
ICAgIHwgRmlsdGVyICB8IFJlbmRlciB8IE9wZW5HTCBFUyB0ZXh0dXJlIHN1cHBvcnQgICAgICAg
ICB8IEZpbHRlciAgfCBSZW5kZXIgfAotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xf
QUxQSEE4X0VYVCwgICAgICAgICAgICAgQWx3YXlzKCksICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQWx3YXlzKCksIE5ldmVyKCksIEV4dHNPbmx5KCJHTF9FWFRfdGV4dHVyZV9z
dG9yYWdlIiksIEFsd2F5cygpLCBOZXZlcigpKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZt
YXAsIEdMX0xVTUlOQU5DRThfRVhULCAgICAgICAgIEFsd2F5cygpLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFsd2F5cygpLCBOZXZlcigpLCBFeHRzT25seSgiR0xfRVhUX3Rl
eHR1cmVfc3RvcmFnZSIpLCBBbHdheXMoKSwgTmV2ZXIoKSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFw
cGluZygmbWFwLCBHTF9BTFBIQTMyRl9FWFQsICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAs
ICJHTF9BUkJfdGV4dHVyZV9mbG9hdCIpLCBBbHdheXMoKSwgTmV2ZXIoKSwgRXh0c09ubHkoIkdM
X0VYVF90ZXh0dXJlX3N0b3JhZ2UiKSwgQWx3YXlzKCksIE5ldmVyKCkpOwotICAgIEluc2VydEZv
cm1hdE1hcHBpbmcoJm1hcCwgR0xfTFVNSU5BTkNFMzJGX0VYVCwgICAgICAgVmVyc2lvbk9yRXh0
cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfZmxvYXQiKSwgQWx3YXlzKCksIE5ldmVyKCksIEV4dHNP
bmx5KCJHTF9FWFRfdGV4dHVyZV9zdG9yYWdlIiksIEFsd2F5cygpLCBOZXZlcigpKTsKLSAgICBJ
bnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0FMUEhBMTZGX0VYVCwgICAgICAgICAgIFZlcnNp
b25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX2Zsb2F0IiksIEFsd2F5cygpLCBOZXZlcigp
LCBFeHRzT25seSgiR0xfRVhUX3RleHR1cmVfc3RvcmFnZSIpLCBBbHdheXMoKSwgTmV2ZXIoKSk7
Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9MVU1JTkFOQ0UxNkZfRVhULCAgICAg
ICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9mbG9hdCIpLCBBbHdheXMoKSwg
TmV2ZXIoKSwgRXh0c09ubHkoIkdMX0VYVF90ZXh0dXJlX3N0b3JhZ2UiKSwgQWx3YXlzKCksIE5l
dmVyKCkpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfTFVNSU5BTkNFOF9BTFBI
QThfRVhULCAgQWx3YXlzKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3
YXlzKCksIE5ldmVyKCksIEV4dHNPbmx5KCJHTF9FWFRfdGV4dHVyZV9zdG9yYWdlIiksIEFsd2F5
cygpLCBOZXZlcigpKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0xVTUlOQU5D
RV9BTFBIQTMyRl9FWFQsIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX2Zsb2F0
IiksIEFsd2F5cygpLCBOZXZlcigpLCBFeHRzT25seSgiR0xfRVhUX3RleHR1cmVfc3RvcmFnZSIp
LCBBbHdheXMoKSwgTmV2ZXIoKSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9M
VU1JTkFOQ0VfQUxQSEExNkZfRVhULCBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVy
ZV9mbG9hdCIpLCBBbHdheXMoKSwgTmV2ZXIoKSwgRXh0c09ubHkoIkdMX0VYVF90ZXh0dXJlX3N0
b3JhZ2UiKSwgQWx3YXlzKCksIE5ldmVyKCkpOworICAgIC8vICAgICAgICAgICAgICAgICAgICAg
ICB8IEZvcm1hdCAgICAgICAgICAgICAgICAgIHwgT3BlbkdMIHRleHR1cmUgc3VwcG9ydCAgICAg
ICAgICAgICAgICAgICAgICB8IEZpbHRlciAgICAgICAgICAgfCBSZW5kZXIgICAgICAgICAgfCBP
cGVuR0wgRVMgdGV4dHVyZSBzdXBwb3J0ICAgICAgICAgfCBGaWx0ZXIgICAgICAgICAgIHwgUmVu
ZGVyICAgICAgICAgIHwKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0FMUEhBOF9F
WFQsICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfRVhU
X3RleHR1cmVfc3RvcmFnZSIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7
CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9MVU1JTkFOQ0U4X0VYVCwgICAgICAg
ICBBbHdheXNTdXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBw
b3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0VYVF90ZXh0dXJlX3N0b3Jh
Z2UiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOworICAgIEluc2VydEZv
cm1hdE1hcHBpbmcoJm1hcCwgR0xfQUxQSEEzMkZfRVhULCAgICAgICAgICAgVmVyc2lvbk9yRXh0
cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfZmxvYXQiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVy
U3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9FWFRfdGV4dHVyZV9zdG9yYWdlIiksIEFsd2F5c1N1
cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZt
YXAsIEdMX0xVTUlOQU5DRTMyRl9FWFQsICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FS
Ql90ZXh0dXJlX2Zsb2F0IiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBF
eHRzT25seSgiR0xfRVhUX3RleHR1cmVfc3RvcmFnZSIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2
ZXJTdXBwb3J0ZWQoKSk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9BTFBIQTE2
Rl9FWFQsICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9mbG9h
dCIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0VY
VF90ZXh0dXJlX3N0b3JhZ2UiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkp
OworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfTFVNSU5BTkNFMTZGX0VYVCwgICAg
ICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfZmxvYXQiKSwgQWx3YXlzU3Vw
cG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9FWFRfdGV4dHVyZV9zdG9y
YWdlIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsKKyAgICBJbnNlcnRG
b3JtYXRNYXBwaW5nKCZtYXAsIEdMX0xVTUlOQU5DRThfQUxQSEE4X0VYVCwgIEFsd2F5c1N1cHBv
cnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZl
clN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfRVhUX3RleHR1cmVfc3RvcmFnZSIpLCBBbHdheXNT
dXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygm
bWFwLCBHTF9MVU1JTkFOQ0VfQUxQSEEzMkZfRVhULCBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9B
UkJfdGV4dHVyZV9mbG9hdCIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwg
RXh0c09ubHkoIkdMX0VYVF90ZXh0dXJlX3N0b3JhZ2UiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5l
dmVyU3VwcG9ydGVkKCkpOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfTFVNSU5B
TkNFX0FMUEhBMTZGX0VYVCwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfZmxv
YXQiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9F
WFRfdGV4dHVyZV9zdG9yYWdlIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgp
KTsKIAogICAgIC8vIENvbXByZXNzZWQgZm9ybWF0cywgRnJvbSBFUyAzLjAuMSBzcGVjLCB0YWJs
ZSAzLjE2Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1IxMV9F
QUMsICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cyg0LCAzLCAiR0xfQVJCX0VT
M19jb21wYXRpYmlsaXR5IiksIEFsd2F5cygpLCBOZXZlcigpLCBWZXJzaW9uT25seSgzLCAwKSwg
QWx3YXlzKCksIE5ldmVyKCkpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09N
UFJFU1NFRF9TSUdORURfUjExX0VBQywgICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoNCwg
MywgIkdMX0FSQl9FUzNfY29tcGF0aWJpbGl0eSIpLCBBbHdheXMoKSwgTmV2ZXIoKSwgVmVyc2lv
bk9ubHkoMywgMCksIEFsd2F5cygpLCBOZXZlcigpKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5n
KCZtYXAsIEdMX0NPTVBSRVNTRURfUkcxMV9FQUMsICAgICAgICAgICAgICAgICAgICAgICBWZXJz
aW9uT3JFeHRzKDQsIDMsICJHTF9BUkJfRVMzX2NvbXBhdGliaWxpdHkiKSwgQWx3YXlzKCksIE5l
dmVyKCksIFZlcnNpb25Pbmx5KDMsIDApLCBBbHdheXMoKSwgTmV2ZXIoKSk7Ci0gICAgSW5zZXJ0
Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQywgICAgICAg
ICAgICAgICAgVmVyc2lvbk9yRXh0cyg0LCAzLCAiR0xfQVJCX0VTM19jb21wYXRpYmlsaXR5Iiks
IEFsd2F5cygpLCBOZXZlcigpLCBWZXJzaW9uT25seSgzLCAwKSwgQWx3YXlzKCksIE5ldmVyKCkp
OwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIs
ICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoNCwgMywgIkdMX0FSQl9FUzNfY29t
cGF0aWJpbGl0eSIpLCBBbHdheXMoKSwgTmV2ZXIoKSwgVmVyc2lvbk9ubHkoMywgMCksIEFsd2F5
cygpLCBOZXZlcigpKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNT
RURfU1JHQjhfRVRDMiwgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDQsIDMsICJH
TF9BUkJfRVMzX2NvbXBhdGliaWxpdHkiKSwgQWx3YXlzKCksIE5ldmVyKCksIFZlcnNpb25Pbmx5
KDMsIDApLCBBbHdheXMoKSwgTmV2ZXIoKSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFw
LCBHTF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyLCAgVmVyc2lvbk9y
RXh0cyg0LCAzLCAiR0xfQVJCX0VTM19jb21wYXRpYmlsaXR5IiksIEFsd2F5cygpLCBOZXZlcigp
LCBWZXJzaW9uT25seSgzLCAwKSwgQWx3YXlzKCksIE5ldmVyKCkpOwotICAgIEluc2VydEZvcm1h
dE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VU
QzIsIFZlcnNpb25PckV4dHMoNCwgMywgIkdMX0FSQl9FUzNfY29tcGF0aWJpbGl0eSIpLCBBbHdh
eXMoKSwgTmV2ZXIoKSwgVmVyc2lvbk9ubHkoMywgMCksIEFsd2F5cygpLCBOZXZlcigpKTsKLSAg
ICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMs
ICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDQsIDMsICJHTF9BUkJfRVMzX2NvbXBhdGli
aWxpdHkiKSwgQWx3YXlzKCksIE5ldmVyKCksIFZlcnNpb25Pbmx5KDMsIDApLCBBbHdheXMoKSwg
TmV2ZXIoKSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1NS
R0I4X0FMUEhBOF9FVEMyX0VBQywgICAgICAgICAgVmVyc2lvbk9yRXh0cyg0LCAzLCAiR0xfQVJC
X0VTM19jb21wYXRpYmlsaXR5IiksIEFsd2F5cygpLCBOZXZlcigpLCBWZXJzaW9uT25seSgzLCAw
KSwgQWx3YXlzKCksIE5ldmVyKCkpOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xf
Q09NUFJFU1NFRF9SMTFfRUFDLCAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMo
NCwgMywgIkdMX0FSQl9FUzNfY29tcGF0aWJpbGl0eSIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2
ZXJTdXBwb3J0ZWQoKSwgVmVyc2lvbk9ubHkoMywgMCksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZl
clN1cHBvcnRlZCgpKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNT
RURfU0lHTkVEX1IxMV9FQUMsICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDQsIDMsICJH
TF9BUkJfRVMzX2NvbXBhdGliaWxpdHkiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9y
dGVkKCksIFZlcnNpb25Pbmx5KDMsIDApLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0
ZWQoKSk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHMTFf
RUFDLCAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cyg0LCAzLCAiR0xfQVJCX0VT
M19jb21wYXRpYmlsaXR5IiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBW
ZXJzaW9uT25seSgzLCAwKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOwor
ICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9F
QUMsICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoNCwgMywgIkdMX0FSQl9FUzNfY29tcGF0
aWJpbGl0eSIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgVmVyc2lvbk9u
bHkoMywgMCksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsKKyAgICBJbnNl
cnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdCOF9FVEMyLCAgICAgICAgICAg
ICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDQsIDMsICJHTF9BUkJfRVMzX2NvbXBhdGliaWxpdHki
KSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIFZlcnNpb25Pbmx5KDMsIDAp
LCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7CisgICAgSW5zZXJ0Rm9ybWF0
TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIsICAgICAgICAgICAgICAgICAg
ICAgVmVyc2lvbk9yRXh0cyg0LCAzLCAiR0xfQVJCX0VTM19jb21wYXRpYmlsaXR5IiksIEFsd2F5
c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBWZXJzaW9uT25seSgzLCAwKSwgQWx3YXlz
U3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOworICAgIEluc2VydEZvcm1hdE1hcHBpbmco
Jm1hcCwgR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiwgIFZlcnNp
b25PckV4dHMoNCwgMywgIkdMX0FSQl9FUzNfY29tcGF0aWJpbGl0eSIpLCBBbHdheXNTdXBwb3J0
ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgVmVyc2lvbk9ubHkoMywgMCksIEFsd2F5c1N1cHBvcnRl
ZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdM
X0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyLCBWZXJzaW9uT3JFeHRz
KDQsIDMsICJHTF9BUkJfRVMzX2NvbXBhdGliaWxpdHkiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5l
dmVyU3VwcG9ydGVkKCksIFZlcnNpb25Pbmx5KDMsIDApLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2
ZXJTdXBwb3J0ZWQoKSk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVT
U0VEX1JHQkE4X0VUQzJfRUFDLCAgICAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cyg0LCAzLCAi
R0xfQVJCX0VTM19jb21wYXRpYmlsaXR5IiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBv
cnRlZCgpLCBWZXJzaW9uT25seSgzLCAwKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9y
dGVkKCkpOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9TUkdC
OF9BTFBIQThfRVRDMl9FQUMsICAgICAgICAgIFZlcnNpb25PckV4dHMoNCwgMywgIkdMX0FSQl9F
UzNfY29tcGF0aWJpbGl0eSIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwg
VmVyc2lvbk9ubHkoMywgMCksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsK
IAogICAgIC8vIEZyb20gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MQotICAgIC8vICAg
ICAgICAgICAgICAgICAgICAgICB8IEZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IE9wZW5HTCB0ZXh0dXJlIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgfCBGaWx0ZXIg
IHwgUmVuZGVyIHwgT3BlbkdMIEVTIHRleHR1cmUgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAg
fCBGaWx0ZXIgIHwgUmVuZGVyIHwKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NP
TVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQsICAgIEV4dHNPbmx5KCJHTF9FWFRfdGV4dHVyZV9j
b21wcmVzc2lvbl9zM3RjIiksICAgICBBbHdheXMoKSwgTmV2ZXIoKSwgRXh0c09ubHkoIkdMX0VY
VF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKSwgICBBbHdheXMoKSwgTmV2ZXIoKSk7Ci0gICAg
SW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VY
VCwgICBFeHRzT25seSgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YyIpLCAgICAgQWx3
YXlzKCksIE5ldmVyKCksIEV4dHNPbmx5KCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQx
IiksICAgQWx3YXlzKCksIE5ldmVyKCkpOworICAgIC8vICAgICAgICAgICAgICAgICAgICAgICB8
IEZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE9wZW5HTCB0ZXh0dXJlIHN1cHBv
cnQgICAgICAgICAgICAgICAgICAgICAgICAgfCBGaWx0ZXIgICAgICAgICAgIHwgUmVuZGVyICAg
ICAgICAgIHwgT3BlbkdMIEVTIHRleHR1cmUgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgfCBG
aWx0ZXIgICAgICAgICAgIHwgUmVuZGVyICAgICAgICAgICB8CisgICAgSW5zZXJ0Rm9ybWF0TWFw
cGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhULCAgICBFeHRzT25seSgi
R0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YyIpLCAgICAgQWx3YXlzU3VwcG9ydGVkKCks
IE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9k
eHQxIiksICAgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOworICAgIEluc2Vy
dEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsICAg
RXh0c09ubHkoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMiKSwgICAgIEFsd2F5c1N1
cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfRVhUX3RleHR1cmVfY29t
cHJlc3Npb25fZHh0MSIpLCAgIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsK
IAogICAgIC8vIEZyb20gR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQzCi0gICAgSW5z
ZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xF
LCBFeHRzT25seSgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YyIpLCAgICAgQWx3YXlz
KCksIE5ldmVyKCksIEV4dHNPbmx5KCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDMi
KSwgQWx3YXlzKCksIE5ldmVyKCkpOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xf
Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRSwgRXh0c09ubHkoIkdMX0VYVF90ZXh0dXJl
X2NvbXByZXNzaW9uX3MzdGMiKSwgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRl
ZCgpLCBFeHRzT25seSgiR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQzIiksIEFsd2F5
c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsKIAogICAgIC8vIEZyb20gR0xfQU5HTEVf
dGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBH
TF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFLCBFeHRzT25seSgiR0xfRVhUX3RleHR1
cmVfY29tcHJlc3Npb25fczN0YyIpLCAgICAgQWx3YXlzKCksIE5ldmVyKCksIEV4dHNPbmx5KCJH
TF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiKSwgQWx3YXlzKCksIE5ldmVyKCkpOwor
ICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
NV9BTkdMRSwgRXh0c09ubHkoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMiKSwgICAg
IEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfQU5HTEVf
dGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1IiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBv
cnRlZCgpKTsKIAogICAgIC8vIEZyb20gR0xfRVRDMV9SR0I4X09FUwotICAgIEluc2VydEZvcm1h
dE1hcHBpbmcoJm1hcCwgR0xfRVRDMV9SR0I4X09FUywgICAgICAgICAgICAgICAgICAgVmVyc2lv
bk9yRXh0cyg0LCAzLCAiR0xfQVJCX0VTM19jb21wYXRpYmlsaXR5IiksIEFsd2F5cygpLCBOZXZl
cigpLCBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FVEMxX1JHQjhfT0VTIiksICAgICAgIEFsd2F5
cygpLCBOZXZlcigpKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0VUQzFfUkdC
OF9PRVMsICAgICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoNCwgMywgIkdMX0FSQl9FUzNf
Y29tcGF0aWJpbGl0eSIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgVmVy
c2lvbk9yRXh0cygzLCAwLCAiR0xfRVRDMV9SR0I4X09FUyIpLCAgICAgICBBbHdheXNTdXBwb3J0
ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7CiAKICAgICAvLyBjbGFuZy1mb3JtYXQgb24KIApAQCAt
NDM4LDYgKzQzOCwzMiBAQCBzdGF0aWMgR0xlbnVtIEdldE5hdGl2ZVR5cGUoY29uc3QgRnVuY3Rp
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIEdMZW51bSBHZXROYXRpdmVSZWFkVHlw
ZShjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBXb3JrYXJvdW5kc0dMICZ3b3JrYXJvdW5kcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUpCit7CisgICAgR0xlbnVtIHJlc3VsdCA9IHR5
cGU7CisKKyAgICBpZiAoZnVuY3Rpb25zLT5zdGFuZGFyZCA9PSBTVEFOREFSRF9HTF9ERVNLVE9Q
KQorICAgIHsKKyAgICAgICAgaWYgKHR5cGUgPT0gR0xfSEFMRl9GTE9BVF9PRVMpCisgICAgICAg
IHsKKyAgICAgICAgICAgIC8vIFRoZSBlbnVtcyBkaWZmZXIgZm9yIHRoZSBPRVMgaGFsZiBmbG9h
dCBleHRlbnNpb25zIGFuZCBkZXNrdG9wIEdMIHNwZWMuIFVwZGF0ZSBpdC4KKyAgICAgICAgICAg
IHJlc3VsdCA9IEdMX0hBTEZfRkxPQVQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitzdGF0aWMgR0xlbnVtIEdldE5hdGl2ZVJlYWRGb3JtYXQoY29uc3QgRnVu
Y3Rpb25zR0wgKmZ1bmN0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBXb3JrYXJvdW5kc0dMICZ3b3JrYXJvdW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gZm9ybWF0KQoreworICAgIEdMZW51bSByZXN1bHQgPSBmb3JtYXQ7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogVGV4SW1hZ2VGb3JtYXQgR2V0VGV4SW1hZ2VGb3Jt
YXQoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFdvcmthcm91bmRzR0wgJndvcmthcm91bmRzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LApAQCAtNTEyLDYgKzUz
OCwxNiBAQCBSZW5kZXJidWZmZXJGb3JtYXQgR2V0UmVuZGVyYnVmZmVyRm9ybWF0CiAgICAgICAg
IEdldE5hdGl2ZUludGVybmFsRm9ybWF0KGZ1bmN0aW9ucywgd29ya2Fyb3VuZHMsIGludGVybmFs
Rm9ybWF0LCBpbnRlcm5hbEZvcm1hdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KK1JlYWRQaXhl
bHNGb3JtYXQgR2V0UmVhZFBpeGVsc0Zvcm1hdChjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25z
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmthcm91bmRz
R0wgJndvcmthcm91bmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHR5cGUpCit7CisgICAgUmVhZFBpeGVsc0Zvcm1hdCByZXN1bHQ7CisgICAgcmVzdWx0LmZvcm1h
dCA9IEdldE5hdGl2ZVJlYWRGb3JtYXQoZnVuY3Rpb25zLCB3b3JrYXJvdW5kcywgZm9ybWF0KTsK
KyAgICByZXN1bHQudHlwZSAgID0gR2V0TmF0aXZlUmVhZFR5cGUoZnVuY3Rpb25zLCB3b3JrYXJv
dW5kcywgdHlwZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KIH0KIAogfQpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Zvcm1hdHV0aWxzZ2wu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvZm9ybWF0dXRpbHNnbC5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZm9ybWF0dXRpbHNnbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTIsNiArMTEyLDE2IEBAIHN0cnVjdCBSZW5kZXJidWZmZXJGb3Jt
YXQKIFJlbmRlcmJ1ZmZlckZvcm1hdCBHZXRSZW5kZXJidWZmZXJGb3JtYXQoY29uc3QgRnVuY3Rp
b25zR0wgKmZ1bmN0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgV29ya2Fyb3VuZHNHTCAmd29ya2Fyb3VuZHMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCk7CisKK3N0cnVjdCBS
ZWFkUGl4ZWxzRm9ybWF0Cit7CisgICAgR0xlbnVtIGZvcm1hdDsKKyAgICBHTGVudW0gdHlwZTsK
K307CitSZWFkUGl4ZWxzRm9ybWF0IEdldFJlYWRQaXhlbHNGb3JtYXQoY29uc3QgRnVuY3Rpb25z
R0wgKmZ1bmN0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBXb3JrYXJvdW5kc0dMICZ3b3JrYXJvdW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0eXBlKTsKIH0KIAogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Z1bmN0aW9uc2dsX3R5cGVkZWZzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L2Z1bmN0aW9uc2dsX3R5cGVkZWZzLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9mdW5jdGlvbnNnbF90eXBlZGVm
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC02MjcsNiArNjI3LDkgQEAgdHlwZWRlZiB2b2lkIChJTlRF
Uk5BTF9HTF9BUElFTlRSWSAqUEZORwogdHlwZWRlZiB2b2lkIChJTlRFUk5BTF9HTF9BUElFTlRS
WSAqUEZOR0xWRVJURVhBVFRSSUJMRk9STUFUUFJPQykoR0x1aW50LCBHTGludCwgR0xlbnVtLCBH
THVpbnQpOwogdHlwZWRlZiB2b2lkIChJTlRFUk5BTF9HTF9BUElFTlRSWSAqUEZOR0xWRVJURVhC
SU5ESU5HRElWSVNPUlBST0MpKEdMdWludCwgR0x1aW50KTsKIAorLy8gTlZfZnJhbWVidWZmZXJf
bWl4ZWRfc2FtcGxlcwordHlwZWRlZiB2b2lkIChJTlRFUk5BTF9HTF9BUElFTlRSWSAqUEZOR0xD
T1ZFUkFHRU1PRFVMQVRJT05OVlBST0MpKEdMZW51bSk7CisKIC8vIDQuNAogdHlwZWRlZiB2b2lk
IChJTlRFUk5BTF9HTF9BUElFTlRSWSAqUEZOR0xCSU5EQlVGRkVSU0JBU0VQUk9DKShHTGVudW0s
IEdMdWludCwgR0xzaXplaSwgY29uc3QgR0x1aW50ICopOwogdHlwZWRlZiB2b2lkIChJTlRFUk5B
TF9HTF9BUElFTlRSWSAqUEZOR0xCSU5EQlVGRkVSU1JBTkdFUFJPQykoR0xlbnVtLCBHTHVpbnQs
IEdMc2l6ZWksIGNvbnN0IEdMdWludCAqLCBjb25zdCBHTGludHB0ciAqLCBjb25zdCBHTHNpemVp
cHRyICopOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL3JlbmRlcmVyZ2xfdXRpbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9yZW5kZXJlcmdsX3V0aWxzLmNwcAko
cmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL3JlbmRlcmVyZ2xfdXRpbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw2
ICsxMSw4IEBACiAKICNpbmNsdWRlIDxsaW1pdHM+CiAKKyNpbmNsdWRlICJjb21tb24vbWF0aHV0
aWwuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9CdWZmZXIuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9D
YXBzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvZm9ybWF0dXRpbHMuaCIKICNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9nbC9GdW5jdGlvbnNHTC5oIgpAQCAtMjAsNiArMjIsOCBAQAogI2luY2x1
ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxzc3RyZWFtPgogCit1c2luZyBhbmdsZTo6Q2hlY2tl
ZE51bWVyaWM7CisKIG5hbWVzcGFjZSByeAogewogVmVuZG9ySUQgR2V0VmVuZG9ySUQoY29uc3Qg
RnVuY3Rpb25zR0wgKmZ1bmN0aW9ucykKQEAgLTM4LDYgKzQyLDEwIEBAIFZlbmRvcklEIEdldFZl
bmRvcklEKGNvbnN0IEZ1bmN0aW9uc0dMICoKICAgICB7CiAgICAgICAgIHJldHVybiBWRU5ET1Jf
SURfQU1EOwogICAgIH0KKyAgICBlbHNlIGlmIChuYXRpdmVWZW5kb3JTdHJpbmcuZmluZCgiUXVh
bGNvbW0iKSAhPSBzdGQ6OnN0cmluZzo6bnBvcykKKyAgICB7CisgICAgICAgIHJldHVybiBWRU5E
T1JfSURfUVVBTENPTU07CisgICAgfQogICAgIGVsc2UKICAgICB7CiAgICAgICAgIHJldHVybiBW
RU5ET1JfSURfVU5LTk9XTjsKQEAgLTExNiw2ICsxMjQsMTMgQEAgc3RhdGljIEdMaW50IFF1ZXJ5
U2luZ2xlR0xJbnQoY29uc3QgRnVuYwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBH
TGludCBRdWVyeVNpbmdsZUluZGV4R0xJbnQoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywg
R0xlbnVtIG5hbWUsIEdMdWludCBpbmRleCkKK3sKKyAgICBHTGludCByZXN1bHQ7CisgICAgZnVu
Y3Rpb25zLT5nZXRJbnRlZ2VyaV92KG5hbWUsIGluZGV4LCAmcmVzdWx0KTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCiBzdGF0aWMgR0xpbnQgUXVlcnlHTEludFJhbmdlKGNvbnN0IEZ1bmN0aW9u
c0dMICpmdW5jdGlvbnMsIEdMZW51bSBuYW1lLCBzaXplX3QgaW5kZXgpCiB7CiAgICAgR0xpbnQg
cmVzdWx0WzJdID0ge307CkBAIC0xODIsOCArMTk3LDggQEAgdm9pZCBHZW5lcmF0ZUNhcHMoY29u
c3QgRnVuY3Rpb25zR0wgKmZ1bgogICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gU3RhcnQgYnkg
YXNzdW1pbmcgRVMzIHN1cHBvcnQgYW5kIHdvcmsgZG93bgotICAgICptYXhTdXBwb3J0ZWRFU1Zl
cnNpb24gPSBnbDo6VmVyc2lvbigzLCAwKTsKKyAgICAvLyBTdGFydCBieSBhc3N1bWluZyBFUzMu
MSBzdXBwb3J0IGFuZCB3b3JrIGRvd24KKyAgICAqbWF4U3VwcG9ydGVkRVNWZXJzaW9uID0gZ2w6
OlZlcnNpb24oMywgMSk7CiAKICAgICAvLyBUYWJsZSA2LjI4LCBpbXBsZW1lbnRhdGlvbiBkZXBl
bmRlbnQgdmFsdWVzCiAgICAgaWYgKGZ1bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24o
NCwgMykpIHx8IGZ1bmN0aW9ucy0+aGFzR0xFeHRlbnNpb24oIkdMX0FSQl9FUzNfY29tcGF0aWJp
bGl0eSIpIHx8CkBAIC0yODksNiArMzA0LDI0IEBAIHZvaWQgR2VuZXJhdGVDYXBzKGNvbnN0IEZ1
bmN0aW9uc0dMICpmdW4KICAgICAgICAgLy8gRG9lc24ndCBpbXBhY3Qgc3VwcG9ydGVkIHZlcnNp
b24KICAgICB9CiAKKyAgICBpZiAoZnVuY3Rpb25zLT5pc0F0TGVhc3RHTChnbDo6VmVyc2lvbig0
LCAxKSkgfHwKKyAgICAgICAgZnVuY3Rpb25zLT5oYXNHTEV4dGVuc2lvbigiR0xfQVJCX2dldF9w
cm9ncmFtX2JpbmFyeSIpIHx8CisgICAgICAgIGZ1bmN0aW9ucy0+aXNBdExlYXN0R0xFUyhnbDo6
VmVyc2lvbigzLCAwKSkgfHwKKyAgICAgICAgZnVuY3Rpb25zLT5oYXNHTEV4dGVuc2lvbigiR0xf
T0VTX2dldF9wcm9ncmFtX2JpbmFyeSIpKQorICAgIHsKKyAgICAgICAgLy8gQWJsZSB0byBzdXBw
b3J0IHRoZSBHTF9QUk9HUkFNX0JJTkFSWV9BTkdMRSBmb3JtYXQgYXMgbG9uZyBhcyBhbm90aGVy
IHByb2dyYW0gYmluYXJ5CisgICAgICAgIC8vIGZvcm1hdCBpcyBhdmFpbGFibGUuCisgICAgICAg
IEdMaW50IG51bUJpbmFyeUZvcm1hdHMgPSBRdWVyeVNpbmdsZUdMSW50KGZ1bmN0aW9ucywgR0xf
TlVNX1BST0dSQU1fQklOQVJZX0ZPUk1BVFNfT0VTKTsKKyAgICAgICAgaWYgKG51bUJpbmFyeUZv
cm1hdHMgPiAwKQorICAgICAgICB7CisgICAgICAgICAgICBjYXBzLT5wcm9ncmFtQmluYXJ5Rm9y
bWF0cy5wdXNoX2JhY2soR0xfUFJPR1JBTV9CSU5BUllfQU5HTEUpOworICAgICAgICB9CisgICAg
fQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIC8vIERvZXNuJ3QgaW1wYWN0IHN1cHBvcnRlZCB2
ZXJzaW9uCisgICAgfQorCiAgICAgLy8gZ2xHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQgaXMgbm90
IGF2YWlsYWJsZSB1bnRpbCBkZXNrdG9wIEdMIHZlcnNpb24gNC4xIG9yIEdMX0FSQl9FUzJfY29t
cGF0aWJpbGl0eSBleGlzdHMKICAgICBpZiAoZnVuY3Rpb25zLT5pc0F0TGVhc3RHTChnbDo6VmVy
c2lvbig0LCAxKSkgfHwgZnVuY3Rpb25zLT5oYXNHTEV4dGVuc2lvbigiR0xfQVJCX0VTMl9jb21w
YXRpYmlsaXR5IikgfHwKICAgICAgICAgZnVuY3Rpb25zLT5pc0F0TGVhc3RHTEVTKGdsOjpWZXJz
aW9uKDIsIDApKSkKQEAgLTUxNCw2ICs1NDcsMTcgQEAgdm9pZCBHZW5lcmF0ZUNhcHMoY29uc3Qg
RnVuY3Rpb25zR0wgKmZ1bgogICAgICAgICBMaW1pdFZlcnNpb24obWF4U3VwcG9ydGVkRVNWZXJz
aW9uLCBnbDo6VmVyc2lvbigyLCAwKSk7CiAgICAgfQogCisgICAgLy8gQ2hlY2sgaWYgaW5kZXgg
Y29uc3RhbnQgc2FtcGxlciBhcnJheSBpbmRleGluZyBpcyBzdXBwb3J0ZWQKKyAgICBpZiAoIWZ1
bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24oNCwgMCkpICYmCisgICAgICAgICFmdW5j
dGlvbnMtPmlzQXRMZWFzdEdMRVMoZ2w6OlZlcnNpb24oMiwgMCkpICYmCisgICAgICAgICFmdW5j
dGlvbnMtPmhhc0V4dGVuc2lvbigiR0xfQVJCX2dwdV9zaGFkZXI1IikpCisgICAgeworICAgICAg
ICAvLyBUaGlzIHNob3VsZCBhbHNvIGJlIHJlcXVpcmVkIGZvciBFUzIgYnV0IHRoZXJlIGFyZSBz
b21lIGRyaXZlciBzdXBwb3J0IGluZGV4IGNvbnN0YW50CisgICAgICAgIC8vIHNhbXBsZXIgYXJy
YXkgaW5kZXhpbmcgd2l0aG91dCBtZWV0aW5nIHRoZSByZXF1aXJlbWVudHMgYWJvdmUuIERvbid0
IGxpbWl0IHRoZWlyIEVTCisgICAgICAgIC8vIHZlcnNpb24gYXMgaXQgd291bGQgYnJlYWsgV2Vi
R0wgZm9yIHNvbWUgdXNlcnMuCisgICAgICAgIExpbWl0VmVyc2lvbihtYXhTdXBwb3J0ZWRFU1Zl
cnNpb24sIGdsOjpWZXJzaW9uKDIsIDApKTsKKyAgICB9CisKICAgICAvLyBDaGVjayBpZiBzYW1w
bGVyIG9iamVjdHMgYXJlIHN1cHBvcnRlZAogICAgIGlmICghZnVuY3Rpb25zLT5pc0F0TGVhc3RH
TChnbDo6VmVyc2lvbigzLCAzKSkgJiYKICAgICAgICAgIWZ1bmN0aW9ucy0+aGFzR0xFeHRlbnNp
b24oIkdMX0FSQl9zYW1wbGVyX29iamVjdHMiKSAmJgpAQCAtNTU5LDE1ICs2MDMsMTczIEBAIHZv
aWQgR2VuZXJhdGVDYXBzKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW4KICAgICAgICAgTGltaXRWZXJz
aW9uKG1heFN1cHBvcnRlZEVTVmVyc2lvbiwgZ2w6OlZlcnNpb24oMiwgMCkpOwogICAgIH0KIAor
ICAgIGlmIChmdW5jdGlvbnMtPmlzQXRMZWFzdEdMKGdsOjpWZXJzaW9uKDQsIDMpKSB8fCBmdW5j
dGlvbnMtPmlzQXRMZWFzdEdMRVMoZ2w6OlZlcnNpb24oMywgMSkpIHx8CisgICAgICAgIGZ1bmN0
aW9ucy0+aGFzR0xFeHRlbnNpb24oIkdMX0FSQl90ZXh0dXJlX211bHRpc2FtcGxlIikpCisgICAg
eworICAgICAgICBjYXBzLT5tYXhGcmFtZWJ1ZmZlcldpZHRoICAgPSBRdWVyeVNpbmdsZUdMSW50
KGZ1bmN0aW9ucywgR0xfTUFYX0ZSQU1FQlVGRkVSX1dJRFRIKTsKKyAgICAgICAgY2Fwcy0+bWF4
RnJhbWVidWZmZXJIZWlnaHQgID0gUXVlcnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01BWF9G
UkFNRUJVRkZFUl9IRUlHSFQpOworICAgICAgICBjYXBzLT5tYXhGcmFtZWJ1ZmZlclNhbXBsZXMg
PSBRdWVyeVNpbmdsZUdMSW50KGZ1bmN0aW9ucywgR0xfTUFYX0ZSQU1FQlVGRkVSX1NBTVBMRVMp
OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBMaW1pdFZlcnNpb24obWF4U3VwcG9y
dGVkRVNWZXJzaW9uLCBnbDo6VmVyc2lvbigzLCAwKSk7CisgICAgfQorCisgICAgaWYgKGZ1bmN0
aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24oMywgMikpIHx8IGZ1bmN0aW9ucy0+aXNBdExl
YXN0R0xFUyhnbDo6VmVyc2lvbigzLCAxKSkgfHwKKyAgICAgICAgZnVuY3Rpb25zLT5oYXNHTEV4
dGVuc2lvbigiR0xfQVJCX3RleHR1cmVfbXVsdGlzYW1wbGUiKSkKKyAgICB7CisgICAgICAgIGNh
cHMtPm1heFNhbXBsZU1hc2tXb3JkcyAgICAgPSBRdWVyeVNpbmdsZUdMSW50KGZ1bmN0aW9ucywg
R0xfTUFYX1NBTVBMRV9NQVNLX1dPUkRTKTsKKyAgICAgICAgY2Fwcy0+bWF4Q29sb3JUZXh0dXJl
U2FtcGxlcyA9IFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9NQVhfQ09MT1JfVEVYVFVS
RV9TQU1QTEVTKTsKKyAgICAgICAgY2Fwcy0+bWF4RGVwdGhUZXh0dXJlU2FtcGxlcyA9IFF1ZXJ5
U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9NQVhfREVQVEhfVEVYVFVSRV9TQU1QTEVTKTsKKyAg
ICAgICAgY2Fwcy0+bWF4SW50ZWdlclNhbXBsZXMgICAgICA9IFF1ZXJ5U2luZ2xlR0xJbnQoZnVu
Y3Rpb25zLCBHTF9NQVhfSU5URUdFUl9TQU1QTEVTKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgTGltaXRWZXJzaW9uKG1heFN1cHBvcnRlZEVTVmVyc2lvbiwgZ2w6OlZlcnNpb24o
MywgMCkpOworICAgIH0KKworICAgIGlmIChmdW5jdGlvbnMtPmlzQXRMZWFzdEdMKGdsOjpWZXJz
aW9uKDQsIDMpKSB8fCBmdW5jdGlvbnMtPmlzQXRMZWFzdEdMRVMoZ2w6OlZlcnNpb24oMywgMSkp
IHx8CisgICAgICAgIGZ1bmN0aW9ucy0+aGFzR0xFeHRlbnNpb24oIkdMX0FSQl92ZXJ0ZXhfYXR0
cmliX2JpbmRpbmciKSkKKyAgICB7CisgICAgICAgIGNhcHMtPm1heFZlcnRleEF0dHJpYlJlbGF0
aXZlT2Zmc2V0ID0KKyAgICAgICAgICAgIFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9N
QVhfVkVSVEVYX0FUVFJJQl9SRUxBVElWRV9PRkZTRVQpOworICAgICAgICBjYXBzLT5tYXhWZXJ0
ZXhBdHRyaWJCaW5kaW5ncyA9IFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9NQVhfVkVS
VEVYX0FUVFJJQl9CSU5ESU5HUyk7CisgICAgICAgIGNhcHMtPm1heFZlcnRleEF0dHJpYlN0cmlk
ZSAgID0gUXVlcnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01BWF9WRVJURVhfQVRUUklCX1NU
UklERSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIExpbWl0VmVyc2lvbihtYXhT
dXBwb3J0ZWRFU1ZlcnNpb24sIGdsOjpWZXJzaW9uKDMsIDApKTsKKyAgICB9CisKKyAgICBpZiAo
ZnVuY3Rpb25zLT5pc0F0TGVhc3RHTChnbDo6VmVyc2lvbig0LCAyKSkgfHwgZnVuY3Rpb25zLT5p
c0F0TGVhc3RHTEVTKGdsOjpWZXJzaW9uKDMsIDEpKSB8fAorICAgICAgICBmdW5jdGlvbnMtPmhh
c0dMRXh0ZW5zaW9uKCJHTF9BUkJfc2hhZGVyX3N0b3JhZ2VfYnVmZmVyX29iamVjdCIpKQorICAg
IHsKKyAgICAgICAgY2Fwcy0+bWF4Q29tYmluZWRTaGFkZXJPdXRwdXRSZXNvdXJjZXMgPQorICAg
ICAgICAgICAgUXVlcnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01BWF9DT01CSU5FRF9TSEFE
RVJfT1VUUFVUX1JFU09VUkNFUyk7CisgICAgICAgIGNhcHMtPm1heEZyYWdtZW50U2hhZGVyU3Rv
cmFnZUJsb2NrcyA9CisgICAgICAgICAgICBRdWVyeVNpbmdsZUdMSW50KGZ1bmN0aW9ucywgR0xf
TUFYX0ZSQUdNRU5UX1NIQURFUl9TVE9SQUdFX0JMT0NLUyk7CisgICAgICAgIGNhcHMtPm1heFZl
cnRleFNoYWRlclN0b3JhZ2VCbG9ja3MgPQorICAgICAgICAgICAgUXVlcnlTaW5nbGVHTEludChm
dW5jdGlvbnMsIEdMX01BWF9WRVJURVhfU0hBREVSX1NUT1JBR0VfQkxPQ0tTKTsKKyAgICAgICAg
Y2Fwcy0+bWF4U2hhZGVyU3RvcmFnZUJ1ZmZlckJpbmRpbmdzID0KKyAgICAgICAgICAgIFF1ZXJ5
U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9NQVhfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJTkRJ
TkdTKTsKKyAgICAgICAgY2Fwcy0+bWF4U2hhZGVyU3RvcmFnZUJsb2NrU2l6ZSA9CisgICAgICAg
ICAgICBRdWVyeVNpbmdsZUdMSW50NjQoZnVuY3Rpb25zLCBHTF9NQVhfU0hBREVSX1NUT1JBR0Vf
QkxPQ0tfU0laRSk7CisgICAgICAgIGNhcHMtPm1heENvbWJpbmVkU2hhZGVyU3RvcmFnZUJsb2Nr
cyA9CisgICAgICAgICAgICBRdWVyeVNpbmdsZUdMSW50KGZ1bmN0aW9ucywgR0xfTUFYX0NPTUJJ
TkVEX1NIQURFUl9TVE9SQUdFX0JMT0NLUyk7CisgICAgICAgIGNhcHMtPnNoYWRlclN0b3JhZ2VC
dWZmZXJPZmZzZXRBbGlnbm1lbnQgPQorICAgICAgICAgICAgUXVlcnlTaW5nbGVHTEludChmdW5j
dGlvbnMsIEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UKTsKKyAgICB9
CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgTGltaXRWZXJzaW9uKG1heFN1cHBvcnRlZEVTVmVy
c2lvbiwgZ2w6OlZlcnNpb24oMywgMCkpOworICAgIH0KKworICAgIGlmIChmdW5jdGlvbnMtPmlz
QXRMZWFzdEdMKGdsOjpWZXJzaW9uKDQsIDMpKSB8fCBmdW5jdGlvbnMtPmlzQXRMZWFzdEdMRVMo
Z2w6OlZlcnNpb24oMywgMSkpIHx8CisgICAgICAgIGZ1bmN0aW9ucy0+aGFzR0xFeHRlbnNpb24o
IkdMX0FSQl9jb21wdXRlX3NoYWRlciIpKQorICAgIHsKKyAgICAgICAgZm9yIChHTHVpbnQgaW5k
ZXggPSAwdTsgaW5kZXggPCAzdTsgKytpbmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgY2Fw
cy0+bWF4Q29tcHV0ZVdvcmtHcm91cENvdW50W2luZGV4XSA9CisgICAgICAgICAgICAgICAgUXVl
cnlTaW5nbGVJbmRleEdMSW50KGZ1bmN0aW9ucywgR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9D
T1VOVCwgaW5kZXgpOworCisgICAgICAgICAgICBjYXBzLT5tYXhDb21wdXRlV29ya0dyb3VwU2l6
ZVtpbmRleF0gPQorICAgICAgICAgICAgICAgIFF1ZXJ5U2luZ2xlSW5kZXhHTEludChmdW5jdGlv
bnMsIEdMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfU0laRSwgaW5kZXgpOworICAgICAgICB9Cisg
ICAgICAgIGNhcHMtPm1heENvbXB1dGVXb3JrR3JvdXBJbnZvY2F0aW9ucyA9CisgICAgICAgICAg
ICBRdWVyeVNpbmdsZUdMSW50KGZ1bmN0aW9ucywgR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9J
TlZPQ0FUSU9OUyk7CisgICAgICAgIGNhcHMtPm1heENvbXB1dGVVbmlmb3JtQmxvY2tzID0gUXVl
cnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01BWF9DT01QVVRFX1VOSUZPUk1fQkxPQ0tTKTsK
KyAgICAgICAgY2Fwcy0+bWF4Q29tcHV0ZVRleHR1cmVJbWFnZVVuaXRzID0KKyAgICAgICAgICAg
IFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9NQVhfQ09NUFVURV9URVhUVVJFX0lNQUdF
X1VOSVRTKTsKKyAgICAgICAgY2Fwcy0+bWF4Q29tcHV0ZVNoYXJlZE1lbW9yeVNpemUgPQorICAg
ICAgICAgICAgUXVlcnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01BWF9DT01QVVRFX1NIQVJF
RF9NRU1PUllfU0laRSk7CisgICAgICAgIGNhcHMtPm1heENvbXB1dGVVbmlmb3JtQ29tcG9uZW50
cyA9CisgICAgICAgICAgICBRdWVyeVNpbmdsZUdMSW50KGZ1bmN0aW9ucywgR0xfTUFYX0NPTVBV
VEVfVU5JRk9STV9DT01QT05FTlRTKTsKKyAgICAgICAgY2Fwcy0+bWF4Q29tcHV0ZUF0b21pY0Nv
dW50ZXJCdWZmZXJzID0KKyAgICAgICAgICAgIFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBH
TF9NQVhfQ09NUFVURV9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTKTsKKyAgICAgICAgY2Fwcy0+bWF4
Q29tcHV0ZUF0b21pY0NvdW50ZXJzID0KKyAgICAgICAgICAgIFF1ZXJ5U2luZ2xlR0xJbnQoZnVu
Y3Rpb25zLCBHTF9NQVhfQ09NUFVURV9BVE9NSUNfQ09VTlRFUlMpOworICAgICAgICBjYXBzLT5t
YXhDb21wdXRlSW1hZ2VVbmlmb3JtcyA9IFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9N
QVhfQ09NUFVURV9JTUFHRV9VTklGT1JNUyk7CisgICAgICAgIGNhcHMtPm1heENvbWJpbmVkQ29t
cHV0ZVVuaWZvcm1Db21wb25lbnRzID0KKyAgICAgICAgICAgIFF1ZXJ5U2luZ2xlR0xJbnQoZnVu
Y3Rpb25zLCBHTF9NQVhfQ09NQklORURfQ09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFMpOworICAg
ICAgICBjYXBzLT5tYXhDb21wdXRlU2hhZGVyU3RvcmFnZUJsb2NrcyA9CisgICAgICAgICAgICBR
dWVyeVNpbmdsZUdMSW50KGZ1bmN0aW9ucywgR0xfTUFYX0NPTVBVVEVfU0hBREVSX1NUT1JBR0Vf
QkxPQ0tTKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgTGltaXRWZXJzaW9uKG1h
eFN1cHBvcnRlZEVTVmVyc2lvbiwgZ2w6OlZlcnNpb24oMywgMCkpOworICAgIH0KKworICAgIGlm
IChmdW5jdGlvbnMtPmlzQXRMZWFzdEdMKGdsOjpWZXJzaW9uKDQsIDMpKSB8fCBmdW5jdGlvbnMt
PmlzQXRMZWFzdEdMRVMoZ2w6OlZlcnNpb24oMywgMSkpIHx8CisgICAgICAgIGZ1bmN0aW9ucy0+
aGFzR0xFeHRlbnNpb24oIkdMX0FSQl9leHBsaWNpdF91bmlmb3JtX2xvY2F0aW9uIikpCisgICAg
eworICAgICAgICBjYXBzLT5tYXhVbmlmb3JtTG9jYXRpb25zID0gUXVlcnlTaW5nbGVHTEludChm
dW5jdGlvbnMsIEdMX01BWF9VTklGT1JNX0xPQ0FUSU9OUyk7CisgICAgfQorICAgIGVsc2UKKyAg
ICB7CisgICAgICAgIExpbWl0VmVyc2lvbihtYXhTdXBwb3J0ZWRFU1ZlcnNpb24sIGdsOjpWZXJz
aW9uKDMsIDApKTsKKyAgICB9CisKKyAgICBpZiAoZnVuY3Rpb25zLT5pc0F0TGVhc3RHTChnbDo6
VmVyc2lvbig0LCAwKSkgfHwgZnVuY3Rpb25zLT5pc0F0TGVhc3RHTEVTKGdsOjpWZXJzaW9uKDMs
IDEpKSB8fAorICAgICAgICBmdW5jdGlvbnMtPmhhc0dMRXh0ZW5zaW9uKCJHTF9BUkJfdGV4dHVy
ZV9nYXRoZXIiKSkKKyAgICB7CisgICAgICAgIGNhcHMtPm1pblByb2dyYW1UZXh0dXJlR2F0aGVy
T2Zmc2V0ID0KKyAgICAgICAgICAgIFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9NSU5f
UFJPR1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQpOworICAgICAgICBjYXBzLT5tYXhQcm9ncmFt
VGV4dHVyZUdhdGhlck9mZnNldCA9CisgICAgICAgICAgICBRdWVyeVNpbmdsZUdMSW50KGZ1bmN0
aW9ucywgR0xfTUFYX1BST0dSQU1fVEVYVFVSRV9HQVRIRVJfT0ZGU0VUKTsKKyAgICB9CisgICAg
ZWxzZQorICAgIHsKKyAgICAgICAgTGltaXRWZXJzaW9uKG1heFN1cHBvcnRlZEVTVmVyc2lvbiwg
Z2w6OlZlcnNpb24oMywgMCkpOworICAgIH0KKworICAgIGlmIChmdW5jdGlvbnMtPmlzQXRMZWFz
dEdMKGdsOjpWZXJzaW9uKDQsIDIpKSB8fCBmdW5jdGlvbnMtPmlzQXRMZWFzdEdMRVMoZ2w6OlZl
cnNpb24oMywgMSkpIHx8CisgICAgICAgIGZ1bmN0aW9ucy0+aGFzR0xFeHRlbnNpb24oIkdMX0FS
Ql9zaGFkZXJfaW1hZ2VfbG9hZF9zdG9yZSIpKQorICAgIHsKKyAgICAgICAgY2Fwcy0+bWF4VmVy
dGV4SW1hZ2VVbmlmb3JtcyA9IFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9NQVhfVkVS
VEVYX0lNQUdFX1VOSUZPUk1TKTsKKyAgICAgICAgY2Fwcy0+bWF4RnJhZ21lbnRJbWFnZVVuaWZv
cm1zID0KKyAgICAgICAgICAgIFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9NQVhfRlJB
R01FTlRfSU1BR0VfVU5JRk9STVMpOworICAgICAgICBjYXBzLT5tYXhJbWFnZVVuaXRzID0gUXVl
cnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01BWF9JTUFHRV9VTklUUyk7CisgICAgICAgIGNh
cHMtPm1heENvbWJpbmVkSW1hZ2VVbmlmb3JtcyA9CisgICAgICAgICAgICBRdWVyeVNpbmdsZUdM
SW50KGZ1bmN0aW9ucywgR0xfTUFYX0NPTUJJTkVEX0lNQUdFX1VOSUZPUk1TKTsKKyAgICB9Cisg
ICAgZWxzZQorICAgIHsKKyAgICAgICAgTGltaXRWZXJzaW9uKG1heFN1cHBvcnRlZEVTVmVyc2lv
biwgZ2w6OlZlcnNpb24oMywgMCkpOworICAgIH0KKworICAgIGlmIChmdW5jdGlvbnMtPmlzQXRM
ZWFzdEdMKGdsOjpWZXJzaW9uKDQsIDIpKSB8fCBmdW5jdGlvbnMtPmlzQXRMZWFzdEdMRVMoZ2w6
OlZlcnNpb24oMywgMSkpIHx8CisgICAgICAgIGZ1bmN0aW9ucy0+aGFzR0xFeHRlbnNpb24oIkdM
X0FSQl9zaGFkZXJfYXRvbWljX2NvdW50ZXJzIikpCisgICAgeworICAgICAgICBjYXBzLT5tYXhW
ZXJ0ZXhBdG9taWNDb3VudGVyQnVmZmVycyA9CisgICAgICAgICAgICBRdWVyeVNpbmdsZUdMSW50
KGZ1bmN0aW9ucywgR0xfTUFYX1ZFUlRFWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTKTsKKyAgICAg
ICAgY2Fwcy0+bWF4VmVydGV4QXRvbWljQ291bnRlcnMgPSBRdWVyeVNpbmdsZUdMSW50KGZ1bmN0
aW9ucywgR0xfTUFYX1ZFUlRFWF9BVE9NSUNfQ09VTlRFUlMpOworICAgICAgICBjYXBzLT5tYXhG
cmFnbWVudEF0b21pY0NvdW50ZXJCdWZmZXJzID0KKyAgICAgICAgICAgIFF1ZXJ5U2luZ2xlR0xJ
bnQoZnVuY3Rpb25zLCBHTF9NQVhfRlJBR01FTlRfQVRPTUlDX0NPVU5URVJfQlVGRkVSUyk7Cisg
ICAgICAgIGNhcHMtPm1heEZyYWdtZW50QXRvbWljQ291bnRlcnMgPQorICAgICAgICAgICAgUXVl
cnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRFUlMp
OworICAgICAgICBjYXBzLT5tYXhBdG9taWNDb3VudGVyQnVmZmVyQmluZGluZ3MgPQorICAgICAg
ICAgICAgUXVlcnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01BWF9BVE9NSUNfQ09VTlRFUl9C
VUZGRVJfQklORElOR1MpOworICAgICAgICBjYXBzLT5tYXhBdG9taWNDb3VudGVyQnVmZmVyU2l6
ZSA9CisgICAgICAgICAgICBRdWVyeVNpbmdsZUdMSW50KGZ1bmN0aW9ucywgR0xfTUFYX0FUT01J
Q19DT1VOVEVSX0JVRkZFUl9TSVpFKTsKKyAgICAgICAgY2Fwcy0+bWF4Q29tYmluZWRBdG9taWND
b3VudGVyQnVmZmVycyA9CisgICAgICAgICAgICBRdWVyeVNpbmdsZUdMSW50KGZ1bmN0aW9ucywg
R0xfTUFYX0NPTUJJTkVEX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMpOworICAgICAgICBjYXBzLT5t
YXhDb21iaW5lZEF0b21pY0NvdW50ZXJzID0KKyAgICAgICAgICAgIFF1ZXJ5U2luZ2xlR0xJbnQo
ZnVuY3Rpb25zLCBHTF9NQVhfQ09NQklORURfQVRPTUlDX0NPVU5URVJTKTsKKyAgICB9CisgICAg
ZWxzZQorICAgIHsKKyAgICAgICAgTGltaXRWZXJzaW9uKG1heFN1cHBvcnRlZEVTVmVyc2lvbiwg
Z2w6OlZlcnNpb24oMywgMCkpOworICAgIH0KKwogICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogVGhl
IGdsLXVuaWZvcm0tYXJyYXlzIFdlYkdMIGNvbmZvcm1hbmNlIHRlc3Qgc3RydWdnbGVzIHRvIGNv
bXBsZXRlIG9uIHRpbWUKICAgICAvLyBpZiB0aGUgbWF4IHVuaWZvcm0gdmVjdG9ycyBpcyB0b28g
bGFyZ2UuICBBcnRpZmljaWFsbHkgbGltaXQgdGhlIG1heGltdW0gdW50aWwgdGhlIHRlc3QgaXMK
ICAgICAvLyB1cGRhdGVkLgogICAgIGNhcHMtPm1heFZlcnRleFVuaWZvcm1WZWN0b3JzID0gc3Rk
OjptaW4oMTAyNHUsIGNhcHMtPm1heFZlcnRleFVuaWZvcm1WZWN0b3JzKTsKICAgICBjYXBzLT5t
YXhWZXJ0ZXhVbmlmb3JtQ29tcG9uZW50cyA9Ci0gICAgICAgIHN0ZDo6bWluKGNhcHMtPm1heFZl
cnRleFVuaWZvcm1WZWN0b3JzIC8gNCwgY2Fwcy0+bWF4VmVydGV4VW5pZm9ybUNvbXBvbmVudHMp
OworICAgICAgICBzdGQ6Om1pbihjYXBzLT5tYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyAqIDQsIGNh
cHMtPm1heFZlcnRleFVuaWZvcm1Db21wb25lbnRzKTsKICAgICBjYXBzLT5tYXhGcmFnbWVudFVu
aWZvcm1WZWN0b3JzID0gc3RkOjptaW4oMTAyNHUsIGNhcHMtPm1heEZyYWdtZW50VW5pZm9ybVZl
Y3RvcnMpOwogICAgIGNhcHMtPm1heEZyYWdtZW50VW5pZm9ybUNvbXBvbmVudHMgPQotICAgICAg
ICBzdGQ6Om1pbihjYXBzLT5tYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzIC8gNCwgY2Fwcy0+bWF4
RnJhZ21lbnRVbmlmb3JtQ29tcG9uZW50cyk7CisgICAgICAgIHN0ZDo6bWluKGNhcHMtPm1heEZy
YWdtZW50VW5pZm9ybVZlY3RvcnMgKiA0LCBjYXBzLT5tYXhGcmFnbWVudFVuaWZvcm1Db21wb25l
bnRzKTsKIAogICAgIC8vIElmIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBzdXBwb3J0IHJlYWRpbmcg
YnVmZmVyIGRhdGEgYmFjaywgYSBzaGFkb3cgY29weSBvZiB0aGUgYnVmZmVycyBtdXN0CiAgICAg
Ly8gYmUgaGVsZC4gVGhpcyBkaXNhbGxvd3Mgd3JpdGluZyB0byBidWZmZXJzIGluZGlyZWN0bHkg
dGhyb3VnaCB0cmFuc2Zvcm0gZmVlZGJhY2ssIHRodXMKQEAgLTU4MSw2ICs3ODMsNyBAQCB2b2lk
IEdlbmVyYXRlQ2Fwcyhjb25zdCBGdW5jdGlvbnNHTCAqZnVuCiAgICAgZXh0ZW5zaW9ucy0+c2V0
VGV4dHVyZUV4dGVuc2lvblN1cHBvcnQoKnRleHR1cmVDYXBzTWFwKTsKICAgICBleHRlbnNpb25z
LT5lbGVtZW50SW5kZXhVaW50ID0gZnVuY3Rpb25zLT5zdGFuZGFyZCA9PSBTVEFOREFSRF9HTF9E
RVNLVE9QIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy0+
aXNBdExlYXN0R0xFUyhnbDo6VmVyc2lvbigzLCAwKSkgfHwgZnVuY3Rpb25zLT5oYXNHTEVTRXh0
ZW5zaW9uKCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50Iik7CisgICAgZXh0ZW5zaW9ucy0+Z2V0
UHJvZ3JhbUJpbmFyeSA9IGNhcHMtPnByb2dyYW1CaW5hcnlGb3JtYXRzLnNpemUoKSA+IDA7CiAg
ICAgZXh0ZW5zaW9ucy0+cmVhZEZvcm1hdEJHUkEgPSBmdW5jdGlvbnMtPmlzQXRMZWFzdEdMKGds
OjpWZXJzaW9uKDEsIDIpKSB8fCBmdW5jdGlvbnMtPmhhc0dMRXh0ZW5zaW9uKCJHTF9FWFRfYmdy
YSIpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMtPmhhc0dM
RVNFeHRlbnNpb24oIkdMX0VYVF9yZWFkX2Zvcm1hdF9iZ3JhIik7CiAgICAgZXh0ZW5zaW9ucy0+
bWFwQnVmZmVyID0gZnVuY3Rpb25zLT5pc0F0TGVhc3RHTChnbDo6VmVyc2lvbigxLCA1KSkgfHwK
QEAgLTYzOCwxMCArODQxLDM2IEBAIHZvaWQgR2VuZXJhdGVDYXBzKGNvbnN0IEZ1bmN0aW9uc0dM
ICpmdW4KICAgICAgICAgICAgIFF1ZXJ5UXVlcnlWYWx1ZShmdW5jdGlvbnMsIEdMX1RJTUVTVEFN
UCwgR0xfUVVFUllfQ09VTlRFUl9CSVRTKTsKICAgICB9CiAKLSAgICAvLyBBTkdMRSBlbXVsYXRl
cyB2ZXJ0ZXggYXJyYXkgb2JqZWN0cyBpbiBpdHMgR0wgbGF5ZXIKLSAgICBleHRlbnNpb25zLT52
ZXJ0ZXhBcnJheU9iamVjdCA9IHRydWU7CisgICAgLy8gdGhlIEVYVF9tdWx0aXNhbXBsZV9jb21w
YXRpYmlsaXR5IGlzIHdyaXR0ZW4gYWdhaW5zdCBFUzMuMSBidXQgY2FuIGFwcGx5CisgICAgLy8g
dG8gZWFybGllciB2ZXJzaW9ucyBzbyB0aGVyZWZvcmUgd2UncmUgb25seSBjaGVja2luZyBmb3Ig
dGhlIGV4dGVuc2lvbiBzdHJpbmcKKyAgICAvLyBhbmQgbm90IHRoZSBzcGVjaWZpYyBHTEVTIHZl
cnNpb24uCisgICAgZXh0ZW5zaW9ucy0+bXVsdGlzYW1wbGVDb21wYXRpYmlsaXR5ID0gZnVuY3Rp
b25zLT5pc0F0TGVhc3RHTChnbDo6VmVyc2lvbigxLCAzKSkgfHwKKyAgICAgICAgZnVuY3Rpb25z
LT5oYXNHTEVTRXh0ZW5zaW9uKCJHTF9FWFRfbXVsdGlzYW1wbGVfY29tcGF0aWJpbGl0eSIpOwor
CisgICAgZXh0ZW5zaW9ucy0+ZnJhbWVidWZmZXJNaXhlZFNhbXBsZXMgPQorICAgICAgICBmdW5j
dGlvbnMtPmhhc0dMRXh0ZW5zaW9uKCJHTF9OVl9mcmFtZWJ1ZmZlcl9taXhlZF9zYW1wbGVzIikg
fHwKKyAgICAgICAgZnVuY3Rpb25zLT5oYXNHTEVTRXh0ZW5zaW9uKCJHTF9OVl9mcmFtZWJ1ZmZl
cl9taXhlZF9zYW1wbGVzIik7CisKKyAgICBleHRlbnNpb25zLT5yb2J1c3RuZXNzID0gZnVuY3Rp
b25zLT5pc0F0TGVhc3RHTChnbDo6VmVyc2lvbig0LCA1KSkgfHwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZnVuY3Rpb25zLT5oYXNHTEV4dGVuc2lvbigiR0xfS0hSX3JvYnVzdG5lc3Mi
KSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMtPmhhc0dMRXh0ZW5z
aW9uKCJHTF9BUkJfcm9idXN0bmVzcyIpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZ1bmN0aW9ucy0+aXNBdExlYXN0R0xFUyhnbDo6VmVyc2lvbigzLCAyKSkgfHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zLT5oYXNHTEVTRXh0ZW5zaW9uKCJHTF9LSFJf
cm9idXN0bmVzcyIpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy0+
aGFzR0xFU0V4dGVuc2lvbigiR0xfRVhUX3JvYnVzdG5lc3MiKTsKKworICAgIC8vIE5WX3BhdGhf
cmVuZGVyaW5nCisgICAgLy8gV2UgYWxzbyBuZWVkIGludGVyZmFjZSBxdWVyeSB3aGljaCBpcyBh
dmFpbGFibGUgaW4KKyAgICAvLyA+PSA0LjMgY29yZSBvciBBUkJfaW50ZXJmYWNlX3F1ZXJ5IG9y
ID49IEdMRVMgMy4xCisgICAgY29uc3QgYm9vbCBjYW5FbmFibGVHTFBhdGhSZW5kZXJpbmcgPQor
ICAgICAgICBmdW5jdGlvbnMtPmhhc0dMRXh0ZW5zaW9uKCJHTF9OVl9wYXRoX3JlbmRlcmluZyIp
ICYmCisgICAgICAgIChmdW5jdGlvbnMtPmhhc0dMRXh0ZW5zaW9uKCJHTF9BUkJfcHJvZ3JhbV9p
bnRlcmZhY2VfcXVlcnkiKSB8fAorICAgICAgICAgZnVuY3Rpb25zLT5pc0F0TGVhc3RHTChnbDo6
VmVyc2lvbig0LCAzKSkpOworCisgICAgY29uc3QgYm9vbCBjYW5FbmFibGVFU1BhdGhSZW5kZXJp
bmcgPQorICAgICAgICBmdW5jdGlvbnMtPmhhc0dMRVNFeHRlbnNpb24oIkdMX05WX3BhdGhfcmVu
ZGVyaW5nIikgJiYKKyAgICAgICAgZnVuY3Rpb25zLT5pc0F0TGVhc3RHTEVTKGdsOjpWZXJzaW9u
KDMsIDEpKTsKIAotICAgIGV4dGVuc2lvbnMtPm5vRXJyb3IgPSB0cnVlOworICAgIGV4dGVuc2lv
bnMtPnBhdGhSZW5kZXJpbmcgPSBjYW5FbmFibGVHTFBhdGhSZW5kZXJpbmcgfHwgY2FuRW5hYmxl
RVNQYXRoUmVuZGVyaW5nOwogfQogCiB2b2lkIEdlbmVyYXRlV29ya2Fyb3VuZHMoY29uc3QgRnVu
Y3Rpb25zR0wgKmZ1bmN0aW9ucywgV29ya2Fyb3VuZHNHTCAqd29ya2Fyb3VuZHMpCkBAIC02NTYs
MTIgKzg4NSwxOSBAQCB2b2lkIEdlbmVyYXRlV29ya2Fyb3VuZHMoY29uc3QgRnVuY3Rpb25zCiAg
ICAgd29ya2Fyb3VuZHMtPnJnYmE0SXNOb3RTdXBwb3J0ZWRGb3JDb2xvclJlbmRlcmluZyA9CiAg
ICAgICAgIGZ1bmN0aW9ucy0+c3RhbmRhcmQgPT0gU1RBTkRBUkRfR0xfREVTS1RPUCAmJiB2ZW5k
b3IgPT0gVkVORE9SX0lEX0lOVEVMOwogCisgICAgd29ya2Fyb3VuZHMtPmVtdWxhdGVBYnNJbnRG
dW5jdGlvbiA9IHZlbmRvciA9PSBWRU5ET1JfSURfSU5URUw7CisKKyAgICB3b3JrYXJvdW5kcy0+
YWRkQW5kVHJ1ZVRvTG9vcENvbmRpdGlvbiA9IHZlbmRvciA9PSBWRU5ET1JfSURfSU5URUw7CisK
KyAgICB3b3JrYXJvdW5kcy0+ZW11bGF0ZUlzbmFuRmxvYXQgPSB2ZW5kb3IgPT0gVkVORE9SX0lE
X0lOVEVMOworCiAgICAgd29ya2Fyb3VuZHMtPmRvZXNTUkdCQ2xlYXJzT25MaW5lYXJGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRzID0KICAgICAgICAgZnVuY3Rpb25zLT5zdGFuZGFyZCA9PSBTVEFOREFS
RF9HTF9ERVNLVE9QICYmCiAgICAgICAgICh2ZW5kb3IgPT0gVkVORE9SX0lEX0lOVEVMIHx8IHZl
bmRvciA9PSBWRU5ET1JfSURfQU1EKTsKIAogI2lmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fQVBQ
TEUpCiAgICAgd29ya2Fyb3VuZHMtPmRvV2hpbGVHTFNMQ2F1c2VzR1BVSGFuZyA9IHRydWU7Cisg
ICAgd29ya2Fyb3VuZHMtPnVzZVVudXNlZEJsb2Nrc1dpdGhTdGFuZGFyZE9yU2hhcmVkTGF5b3V0
ID0gdHJ1ZTsKICNlbmRpZgogCiAgICAgd29ya2Fyb3VuZHMtPmZpbmlzaERvZXNOb3RDYXVzZVF1
ZXJpZXNUb0JlQXZhaWxhYmxlID0KQEAgLTY2OSw2ICs5MDUsMTkgQEAgdm9pZCBHZW5lcmF0ZVdv
cmthcm91bmRzKGNvbnN0IEZ1bmN0aW9ucwogCiAgICAgLy8gVE9ETyhjd2FsbGV6KTogRGlzYWJs
ZSB0aGlzIHdvcmthcm91bmQgZm9yIE1hY09TWCB2ZXJzaW9ucyAxMC45IG9yIGxhdGVyLgogICAg
IHdvcmthcm91bmRzLT5hbHdheXNDYWxsVXNlUHJvZ3JhbUFmdGVyTGluayA9IHRydWU7CisKKyAg
ICB3b3JrYXJvdW5kcy0+dW5wYWNrT3ZlcmxhcHBpbmdSb3dzU2VwYXJhdGVseVVucGFja0J1ZmZl
ciA9IHZlbmRvciA9PSBWRU5ET1JfSURfTlZJRElBOworICAgIHdvcmthcm91bmRzLT5wYWNrT3Zl
cmxhcHBpbmdSb3dzU2VwYXJhdGVseVBhY2tCdWZmZXIgICAgID0gdmVuZG9yID09IFZFTkRPUl9J
RF9OVklESUE7CisKKyAgICB3b3JrYXJvdW5kcy0+aW5pdGlhbGl6ZUN1cnJlbnRWZXJ0ZXhBdHRy
aWJ1dGVzID0gdmVuZG9yID09IFZFTkRPUl9JRF9OVklESUE7CisKKyNpZiBkZWZpbmVkKEFOR0xF
X1BMQVRGT1JNX0FQUExFKQorICAgIHdvcmthcm91bmRzLT51bnBhY2tMYXN0Um93U2VwYXJhdGVs
eUZvclBhZGRpbmdJbmNsdXNpb24gPSB0cnVlOworICAgIHdvcmthcm91bmRzLT5wYWNrTGFzdFJv
d1NlcGFyYXRlbHlGb3JQYWRkaW5nSW5jbHVzaW9uICAgPSB0cnVlOworI2Vsc2UKKyAgICB3b3Jr
YXJvdW5kcy0+dW5wYWNrTGFzdFJvd1NlcGFyYXRlbHlGb3JQYWRkaW5nSW5jbHVzaW9uID0gdmVu
ZG9yID09IFZFTkRPUl9JRF9OVklESUE7CisgICAgd29ya2Fyb3VuZHMtPnBhY2tMYXN0Um93U2Vw
YXJhdGVseUZvclBhZGRpbmdJbmNsdXNpb24gICA9IHZlbmRvciA9PSBWRU5ET1JfSURfTlZJRElB
OworI2VuZGlmCiB9CiAKIH0KQEAgLTcyNCw0ICs5NzMsNDUgQEAgdWludDhfdCAqTWFwQnVmZmVy
UmFuZ2VXaXRoRmFsbGJhY2soY29ucwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiB9
CisKK2dsOjpFcnJvck9yUmVzdWx0PGJvb2w+IFNob3VsZEFwcGx5TGFzdFJvd1BhZGRpbmdXb3Jr
YXJvdW5kKGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsU3RvcmVT
dGF0ZUJhc2UgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBpczNELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKQoreworICAgIGlmIChzdGF0ZS5waXhl
bEJ1ZmZlci5nZXQoKSA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIC8vIFdlIGFyZSB1c2luZyBhbiBwYWNrIG9yIHVucGFjayBidWZmZXIsIGNv
bXB1dGUgd2hhdCB0aGUgZHJpdmVyIHRoaW5rcyBpcyBnb2luZyB0byBiZSB0aGUKKyAgICAvLyBs
YXN0IGJ5dGUgcmVhZCBvciB3cml0dGVuLiBJZiBpdCBpcyBwYXN0IHRoZSBlbmQgb2YgdGhlIGJ1
ZmZlciwgd2Ugd2lsbCBuZWVkIHRvIHVzZSB0aGUKKyAgICAvLyB3b3JrYXJvdW5kIG90aGVyd2lz
ZSB0aGUgZHJpdmVyIHdpbGwgZ2VuZXJhdGUgSU5WQUxJRF9PUEVSQVRJT04gYW5kIG5vdCBkbyB0
aGUgb3BlcmF0aW9uLgorICAgIENoZWNrZWROdW1lcmljPHNpemVfdD4gY2hlY2tlZEVuZEJ5dGU7
CisgICAgQ2hlY2tlZE51bWVyaWM8c2l6ZV90PiBwaXhlbEJ5dGVzOworICAgIHNpemVfdCByb3dQ
aXRjaDsKKworICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmZ2xGb3JtYXQgPQorICAgICAg
ICBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGdsOjpHZXRTaXplZEludGVybmFsRm9ybWF0KGZv
cm1hdCwgdHlwZSkpOworICAgIEFOR0xFX1RSWV9SRVNVTFQoZ2xGb3JtYXQuY29tcHV0ZVBhY2tV
bnBhY2tFbmRCeXRlKHR5cGUsIHNpemUsIHN0YXRlLCBpczNEKSwgY2hlY2tlZEVuZEJ5dGUpOwor
ICAgIEFOR0xFX1RSWV9SRVNVTFQoZ2xGb3JtYXQuY29tcHV0ZVJvd1BpdGNoKHR5cGUsIHNpemUu
d2lkdGgsIHN0YXRlLmFsaWdubWVudCwgc3RhdGUucm93TGVuZ3RoKSwKKyAgICAgICAgICAgICAg
ICAgICAgIHJvd1BpdGNoKTsKKyAgICBwaXhlbEJ5dGVzID0gZ2xGb3JtYXQuY29tcHV0ZVBpeGVs
Qnl0ZXModHlwZSk7CisKKyAgICBjaGVja2VkRW5kQnl0ZSArPSByZWludGVycHJldF9jYXN0PGlu
dHB0cl90PihwaXhlbHMpOworCisgICAgLy8gQXQgdGhpcyBwb2ludCBjaGVja2VkRW5kQnl0ZSBp
cyB0aGUgYWN0dWFsIGxhc3QgYnl0ZSByZWFkLgorICAgIC8vIFRoZSBkcml2ZXIgYWRkcyBhbiBl
eHRyYSByb3cgcGFkZGluZyAoaWYgYW55KSwgbWltaWMgaXQuCisgICAgQU5HTEVfVFJZX0NIRUNL
RURfTUFUSChwaXhlbEJ5dGVzKTsKKyAgICBpZiAocGl4ZWxCeXRlcy5WYWx1ZU9yRGllKCkgKiBz
aXplLndpZHRoIDwgcm93UGl0Y2gpCisgICAgeworICAgICAgICBjaGVja2VkRW5kQnl0ZSArPSBy
b3dQaXRjaCAtIHBpeGVsQnl0ZXMgKiBzaXplLndpZHRoOworICAgIH0KKworICAgIEFOR0xFX1RS
WV9DSEVDS0VEX01BVEgoY2hlY2tlZEVuZEJ5dGUpOworCisgICAgcmV0dXJuIGNoZWNrZWRFbmRC
eXRlLlZhbHVlT3JEaWUoKSA+IHN0YXRpY19jYXN0PHNpemVfdD4oc3RhdGUucGl4ZWxCdWZmZXIt
PmdldFNpemUoKSk7Cit9CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvcmVuZGVyZXJnbF91dGlscy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9yZW5kZXJlcmdsX3V0
aWxzLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9yZW5kZXJlcmdsX3V0aWxzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTExLDYgKzExLDcgQEAKICNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfR0xfUkVOREVSRVJHTFVU
SUxTX0hfCiAKICNpbmNsdWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgiCisjaW5jbHVkZSAibGli
QU5HTEUvRXJyb3IuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9mdW5jdGlvbnNn
bF90eXBlZGVmcy5oIgogCiAjaW5jbHVkZSA8c3RyaW5nPgpAQCAtNDcsNiArNDgsMTMgQEAgdWlu
dDhfdCAqTWFwQnVmZmVyUmFuZ2VXaXRoRmFsbGJhY2soY29ucwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGJpdGZpZWxkIGFjY2Vzcyk7CisKK2dsOjpFcnJvck9yUmVzdWx0PGJvb2w+IFNo
b3VsZEFwcGx5TGFzdFJvd1BhZGRpbmdXb3JrYXJvdW5kKGNvbnN0IGdsOjpFeHRlbnRzICZzaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OlBpeGVsU3RvcmVTdGF0ZUJhc2UgJnN0YXRlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZv
cm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpczNELAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4
ZWxzKTsKIH0KIAogI2VuZGlmIC8vIExJQkFOR0xFX1JFTkRFUkVSX0dMX1JFTkRFUkVSR0xVVElM
U19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL2NnbC9EaXNwbGF5Q0dMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9EaXNwbGF5Q0dMLmgJKHJldmlzaW9uIDIw
NzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9jZ2wvRGlzcGxheUNHTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwyMSArMjYsMjQgQEAgY2xh
c3MgRGlzcGxheUNHTCA6IHB1YmxpYyBEaXNwbGF5R0wKICAgICBlZ2w6OkVycm9yIGluaXRpYWxp
emUoZWdsOjpEaXNwbGF5ICpkaXNwbGF5KSBvdmVycmlkZTsKICAgICB2b2lkIHRlcm1pbmF0ZSgp
IG92ZXJyaWRlOwogCi0gICAgU3VyZmFjZUltcGwgKmNyZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3Qg
ZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCisgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVdpbmRv
d1N1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUg
d2luZG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6
QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKLSAgICBTdXJmYWNlSW1wbCAqY3JlYXRl
UGJ1ZmZlclN1cmZhY2UoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCisgICAgU3Vy
ZmFjZUltcGwgKmNyZWF0ZVBidWZmZXJTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZz
dGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpD
b25maWcgKmNvbmZpZ3VyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKLSAgICBTdXJm
YWNlSW1wbCAqY3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoY29uc3QgZWdsOjpDb25maWcg
KmNvbmZpZ3VyYXRpb24sCisgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50
QnVmZmVyKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3Vy
YXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVH
TENsaWVudEJ1ZmZlciBzaGFyZUhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJy
aWRlOwotICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQaXhtYXBTdXJmYWNlKGNvbnN0IGVnbDo6Q29u
ZmlnICpjb25maWd1cmF0aW9uLAorICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQaXhtYXBTdXJmYWNl
KGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1h
cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJp
YnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CiAKLSAgICBlZ2w6OkNvbmZpZ1NldCBnZW5lcmF0
ZUNvbmZpZ3MoKSBjb25zdCBvdmVycmlkZTsKKyAgICBlZ2w6OkNvbmZpZ1NldCBnZW5lcmF0ZUNv
bmZpZ3MoKSBvdmVycmlkZTsKIAotICAgIGJvb2wgaXNEZXZpY2VMb3N0KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCB0ZXN0RGV2aWNlTG9zdCgpIG92ZXJyaWRlOwogICAgIGVnbDo6RXJyb3Ig
cmVzdG9yZUxvc3REZXZpY2UoKSBvdmVycmlkZTsKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9EaXNwbGF5Q0dMLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9j
Z2wvRGlzcGxheUNHTC5tbQkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9EaXNwbGF5Q0dMLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDksMjIgKzEwOSwyNSBAQCB2b2lkIERpc3BsYXlDR0w6OnRlcm1pbmF0ZSgp
CiAgICAgU2FmZURlbGV0ZShtRnVuY3Rpb25zKTsKIH0KIAotU3VyZmFjZUltcGwgKkRpc3BsYXlD
R0w6OmNyZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24s
CitTdXJmYWNlSW1wbCAqRGlzcGxheUNHTDo6Y3JlYXRlV2luZG93U3VyZmFjZShjb25zdCBlZ2w6
OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2lu
ZG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
ZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiB7Ci0gICAgcmV0dXJuIG5ldyBXaW5kb3dTdXJm
YWNlQ0dMKHRoaXMtPmdldFJlbmRlcmVyKCksIHdpbmRvdywgbUZ1bmN0aW9ucywgbUNvbnRleHQp
OworICAgIHJldHVybiBuZXcgV2luZG93U3VyZmFjZUNHTChzdGF0ZSwgdGhpcy0+Z2V0UmVuZGVy
ZXIoKSwgd2luZG93LCBtRnVuY3Rpb25zLCBtQ29udGV4dCk7CiB9CiAKLVN1cmZhY2VJbXBsICpE
aXNwbGF5Q0dMOjpjcmVhdGVQYnVmZmVyU3VyZmFjZShjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmln
dXJhdGlvbiwKK1N1cmZhY2VJbXBsICpEaXNwbGF5Q0dMOjpjcmVhdGVQYnVmZmVyU3VyZmFjZShj
b25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpB
dHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiB7CiAgICAgRUdMaW50IHdpZHRoICA9IHN0YXRpY19jYXN0
PEVHTGludD4oYXR0cmlicy5nZXQoRUdMX1dJRFRILCAwKSk7CiAgICAgRUdMaW50IGhlaWdodCA9
IHN0YXRpY19jYXN0PEVHTGludD4oYXR0cmlicy5nZXQoRUdMX0hFSUdIVCwgMCkpOwotICAgIHJl
dHVybiBuZXcgUGJ1ZmZlclN1cmZhY2VDR0wodGhpcy0+Z2V0UmVuZGVyZXIoKSwgd2lkdGgsIGhl
aWdodCwgbUZ1bmN0aW9ucyk7CisgICAgcmV0dXJuIG5ldyBQYnVmZmVyU3VyZmFjZUNHTChzdGF0
ZSwgdGhpcy0+Z2V0UmVuZGVyZXIoKSwgd2lkdGgsIGhlaWdodCwgbUZ1bmN0aW9ucyk7CiB9CiAK
LVN1cmZhY2VJbXBsKiBEaXNwbGF5Q0dMOjpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihj
b25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKK1N1cmZhY2VJbXBsICpEaXNwbGF5Q0dM
OjpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAm
c3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIHNo
YXJlSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQogewpAQCAtMTMyLDcg
KzEzNSw4IEBAIFN1cmZhY2VJbXBsKiBEaXNwbGF5Q0dMOjpjcmVhdGVQYnVmZmVyRnIKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotU3VyZmFjZUltcGwgKkRpc3BsYXlDR0w6OmNyZWF0ZVBpeG1h
cFN1cmZhY2UoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCitTdXJmYWNlSW1wbCAq
RGlzcGxheUNHTDo6Y3JlYXRlUGl4bWFwU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAm
c3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5hdGl2ZVBpeG1hcFR5cGUgbmF0aXZlUGl4bWFwLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1
dGVNYXAgJmF0dHJpYnMpCiB7CkBAIC0xNDYsNyArMTUwLDcgQEAgZWdsOjpFcnJvciBEaXNwbGF5
Q0dMOjpnZXREZXZpY2UoRGV2aWNlSQogICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfRElT
UExBWSk7CiB9CiAKLWVnbDo6Q29uZmlnU2V0IERpc3BsYXlDR0w6OmdlbmVyYXRlQ29uZmlncygp
IGNvbnN0CitlZ2w6OkNvbmZpZ1NldCBEaXNwbGF5Q0dMOjpnZW5lcmF0ZUNvbmZpZ3MoKQogewog
ICAgIC8vIFRPRE8oY3dhbGxleik6IGdlbmVyYXRlIG1vcmUgY29uZmlnIHBlcm11dGF0aW9ucwog
ICAgIGVnbDo6Q29uZmlnU2V0IGNvbmZpZ3M7CkBAIC0yMTAsMTIgKzIxNCw2IEBAIGVnbDo6Q29u
ZmlnU2V0IERpc3BsYXlDR0w6OmdlbmVyYXRlQ29uZmkKICAgICByZXR1cm4gY29uZmlnczsKIH0K
IAotYm9vbCBEaXNwbGF5Q0dMOjppc0RldmljZUxvc3QoKSBjb25zdAotewotICAgIC8vIFRPRE8o
Y3dhbGxleikgaW52ZXN0aWdhdGUgaW1wbGVtZW50aW5nIHRoaXMKLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KIGJvb2wgRGlzcGxheUNHTDo6dGVzdERldmljZUxvc3QoKQogewogICAgIC8vIFRPRE8o
Y3dhbGxleikgaW52ZXN0aWdhdGUgaW1wbGVtZW50aW5nIHRoaXMKQEAgLTI0Nyw4ICsyNDUsNiBA
QCBjb25zdCBGdW5jdGlvbnNHTCAqRGlzcGxheUNHTDo6Z2V0RnVuY3RpCiAKIHZvaWQgRGlzcGxh
eUNHTDo6Z2VuZXJhdGVFeHRlbnNpb25zKGVnbDo6RGlzcGxheUV4dGVuc2lvbnMgKm91dEV4dGVu
c2lvbnMpIGNvbnN0CiB7Ci0gICAgb3V0RXh0ZW5zaW9ucy0+Y3JlYXRlQ29udGV4dCA9IHRydWU7
Ci0gICAgb3V0RXh0ZW5zaW9ucy0+Y3JlYXRlQ29udGV4dE5vRXJyb3IgPSB0cnVlOwogfQogCiB2
b2lkIERpc3BsYXlDR0w6OmdlbmVyYXRlQ2FwcyhlZ2w6OkNhcHMgKm91dENhcHMpIGNvbnN0Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2ds
L1BidWZmZXJTdXJmYWNlQ0dMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9QYnVmZmVyU3VyZmFjZUNHTC5oCShyZXZp
c2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvY2dsL1BidWZmZXJTdXJmYWNlQ0dMLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcg
KzIyLDggQEAgc3RydWN0IFdvcmthcm91bmRzR0w7CiBjbGFzcyBQYnVmZmVyU3VyZmFjZUNHTCA6
IHB1YmxpYyBTdXJmYWNlR0wKIHsKICAgcHVibGljOgotICAgIFBidWZmZXJTdXJmYWNlQ0dMKFJl
bmRlcmVyR0wgKnJlbmRlcmVyLAorICAgIFBidWZmZXJTdXJmYWNlQ0dMKGNvbnN0IGVnbDo6U3Vy
ZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJlckdMICpyZW5k
ZXJlciwKICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgd2lkdGgsCiAgICAgICAgICAgICAg
ICAgICAgICAgRUdMaW50IGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGdW5j
dGlvbnNHTCAqZnVuY3Rpb25zKTsKQEAgLTQ0LDcgKzQ1LDcgQEAgY2xhc3MgUGJ1ZmZlclN1cmZh
Y2VDR0wgOiBwdWJsaWMgU3VyZmFjZQogICAgIEVHTGludCBpc1Bvc3RTdWJCdWZmZXJTdXBwb3J0
ZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICBFR0xpbnQgZ2V0U3dhcEJlaGF2aW9yKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKLSAgICBGcmFtZWJ1ZmZlckltcGwgKmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZl
cihjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRhdGEgJmRhdGEpIG92ZXJyaWRlOworICAgIEZyYW1l
YnVmZmVySW1wbCAqY3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZl
clN0YXRlICZzdGF0ZSkgb3ZlcnJpZGU7CiAKICAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtV2lk
dGg7CkBAIC01Miw3ICs1Myw3IEBAIGNsYXNzIFBidWZmZXJTdXJmYWNlQ0dMIDogcHVibGljIFN1
cmZhY2UKIAogICAgIGNvbnN0IEZ1bmN0aW9uc0dMICptRnVuY3Rpb25zOwogICAgIFN0YXRlTWFu
YWdlckdMICptU3RhdGVNYW5hZ2VyOwotICAgIGNvbnN0IFdvcmthcm91bmRzR0wgJm1Xb3JrYXJv
dW5kczsKKyAgICBSZW5kZXJlckdMICptUmVuZGVyZXI7CiAKICAgICBHTHVpbnQgbUZyYW1lYnVm
ZmVyOwogICAgIEdMdWludCBtQ29sb3JSZW5kZXJidWZmZXI7CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1BidWZmZXJTdXJmYWNlQ0dM
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9jZ2wvUGJ1ZmZlclN1cmZhY2VDR0wubW0JKHJldmlzaW9uIDIwNzgwNCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUGJ1
ZmZlclN1cmZhY2VDR0wubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4LDE2ICsxOCwxNyBAQAogbmFt
ZXNwYWNlIHJ4CiB7CiAKLVBidWZmZXJTdXJmYWNlQ0dMOjpQYnVmZmVyU3VyZmFjZUNHTChSZW5k
ZXJlckdMICpyZW5kZXJlciwKK1BidWZmZXJTdXJmYWNlQ0dMOjpQYnVmZmVyU3VyZmFjZUNHTChj
b25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUmVuZGVyZXJHTCAqcmVuZGVyZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRUdMaW50IHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVHTGludCBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucykKLSAgICA6IFN1cmZhY2VHTChyZW5k
ZXJlciksCisgICAgOiBTdXJmYWNlR0woc3RhdGUsIHJlbmRlcmVyKSwKICAgICAgIG1XaWR0aCh3
aWR0aCksCiAgICAgICBtSGVpZ2h0KGhlaWdodCksCiAgICAgICBtRnVuY3Rpb25zKGZ1bmN0aW9u
cyksCiAgICAgICBtU3RhdGVNYW5hZ2VyKHJlbmRlcmVyLT5nZXRTdGF0ZU1hbmFnZXIoKSksCi0g
ICAgICBtV29ya2Fyb3VuZHMocmVuZGVyZXItPmdldFdvcmthcm91bmRzKCkpLAorICAgICAgbVJl
bmRlcmVyKHJlbmRlcmVyKSwKICAgICAgIG1GcmFtZWJ1ZmZlcigwKSwKICAgICAgIG1Db2xvclJl
bmRlcmJ1ZmZlcigwKSwKICAgICAgIG1EU1JlbmRlcmJ1ZmZlcigwKQpAQCAtMTMyLDEwICsxMzMs
MTEgQEAgRUdMaW50IFBidWZmZXJTdXJmYWNlQ0dMOjpnZXRTd2FwQmVoYXZpbwogICAgIHJldHVy
biBFR0xfQlVGRkVSX1BSRVNFUlZFRDsKIH0KIAotRnJhbWVidWZmZXJJbXBsICpQYnVmZmVyU3Vy
ZmFjZUNHTDo6Y3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6
RGF0YSAmZGF0YSkKK0ZyYW1lYnVmZmVySW1wbCAqUGJ1ZmZlclN1cmZhY2VDR0w6OmNyZWF0ZURl
ZmF1bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUpCiB7CiAg
ICAgLy8gVE9ETyhjd2FsbGV6KSBhc3NlcnQgaXQgaGFwcGVucyBvbmx5IG9uY2U/Ci0gICAgcmV0
dXJuIG5ldyBGcmFtZWJ1ZmZlckdMKG1GcmFtZWJ1ZmZlciwgZGF0YSwgbUZ1bmN0aW9ucywgbVdv
cmthcm91bmRzLCBtU3RhdGVNYW5hZ2VyKTsKKyAgICByZXR1cm4gbmV3IEZyYW1lYnVmZmVyR0wo
bUZyYW1lYnVmZmVyLCBzdGF0ZSwgbUZ1bmN0aW9ucywgbVJlbmRlcmVyLT5nZXRXb3JrYXJvdW5k
cygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUmVuZGVyZXItPmdldEJsaXR0ZXIo
KSwgbVN0YXRlTWFuYWdlcik7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvV2luZG93U3VyZmFjZUNHTC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9j
Z2wvV2luZG93U3VyZmFjZUNHTC5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1dpbmRvd1N1cmZhY2VDR0wu
aAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsOCBAQCBzdHJ1Y3QgU2hhcmVkU3dhcFN0YXRl
CiBjbGFzcyBXaW5kb3dTdXJmYWNlQ0dMIDogcHVibGljIFN1cmZhY2VHTAogewogICBwdWJsaWM6
Ci0gICAgV2luZG93U3VyZmFjZUNHTChSZW5kZXJlckdMICpyZW5kZXJlciwKKyAgICBXaW5kb3dT
dXJmYWNlQ0dMKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAg
ICAgICAgIFJlbmRlcmVyR0wgKnJlbmRlcmVyLAogICAgICAgICAgICAgICAgICAgICAgQ0FMYXll
ciAqbGF5ZXIsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rp
b25zLAogICAgICAgICAgICAgICAgICAgICAgQ0dMQ29udGV4dE9iaiBjb250ZXh0KTsKQEAgLTc2
LDcgKzc3LDcgQEAgY2xhc3MgV2luZG93U3VyZmFjZUNHTCA6IHB1YmxpYyBTdXJmYWNlRwogICAg
IEVHTGludCBpc1Bvc3RTdWJCdWZmZXJTdXBwb3J0ZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICBF
R0xpbnQgZ2V0U3dhcEJlaGF2aW9yKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBGcmFtZWJ1ZmZl
ckltcGwgKmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRh
dGEgJmRhdGEpIG92ZXJyaWRlOworICAgIEZyYW1lYnVmZmVySW1wbCAqY3JlYXRlRGVmYXVsdEZy
YW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZzdGF0ZSkgb3ZlcnJpZGU7CiAK
ICAgcHJpdmF0ZToKICAgICBTd2FwTGF5ZXIgKm1Td2FwTGF5ZXI7CkBAIC04Nyw2ICs4OCw3IEBA
IGNsYXNzIFdpbmRvd1N1cmZhY2VDR0wgOiBwdWJsaWMgU3VyZmFjZUcKICAgICBDR0xDb250ZXh0
T2JqIG1Db250ZXh0OwogICAgIGNvbnN0IEZ1bmN0aW9uc0dMICptRnVuY3Rpb25zOwogICAgIFN0
YXRlTWFuYWdlckdMICptU3RhdGVNYW5hZ2VyOworICAgIFJlbmRlcmVyR0wgKm1SZW5kZXJlcjsK
ICAgICBjb25zdCBXb3JrYXJvdW5kc0dMICZtV29ya2Fyb3VuZHM7CiAKICAgICBHTHVpbnQgbUZy
YW1lYnVmZmVyOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL2NnbC9XaW5kb3dTdXJmYWNlQ0dMLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvV2luZG93U3VyZmFj
ZUNHTC5tbQkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9XaW5kb3dTdXJmYWNlQ0dMLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDIsMjIgKzE0MiwyNCBAQCAtIChpZClpbml0V2l0aFNoYXJlZFN0YXRlOihyeDo6
U2hhcmVkU3dhCiAgICAgbmFtZXNwYWNlIHJ4CiAgICAgewogCi0gICAgV2luZG93U3VyZmFjZUNH
TDo6V2luZG93U3VyZmFjZUNHTChSZW5kZXJlckdMICpyZW5kZXJlciwKKyAgICBXaW5kb3dTdXJm
YWNlQ0dMOjpXaW5kb3dTdXJmYWNlQ0dMKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlcmVyR0wgKnJlbmRl
cmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FMYXllciAqbGF5
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGdW5jdGlv
bnNHTCAqZnVuY3Rpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q0dMQ29udGV4dE9iaiBjb250ZXh0KQotICAgICAgICA6IFN1cmZhY2VHTChyZW5kZXJlciksCisg
ICAgICAgIDogU3VyZmFjZUdMKHN0YXRlLCByZW5kZXJlciksCiAgICAgICAgICAgbVN3YXBMYXll
cihuaWwpLAogICAgICAgICAgIG1DdXJyZW50U3dhcElkKDApLAogICAgICAgICAgIG1MYXllcihs
YXllciksCiAgICAgICAgICAgbUNvbnRleHQoY29udGV4dCksCiAgICAgICAgICAgbUZ1bmN0aW9u
cyhmdW5jdGlvbnMpLAogICAgICAgICAgIG1TdGF0ZU1hbmFnZXIocmVuZGVyZXItPmdldFN0YXRl
TWFuYWdlcigpKSwKKyAgICAgICAgICBtUmVuZGVyZXIocmVuZGVyZXIpLAogICAgICAgICAgIG1X
b3JrYXJvdW5kcyhyZW5kZXJlci0+Z2V0V29ya2Fyb3VuZHMoKSksCiAgICAgICAgICAgbUZyYW1l
YnVmZmVyKDApLAogICAgICAgICAgIG1EU1JlbmRlcmJ1ZmZlcigwKQotewotICAgIHB0aHJlYWRf
bXV0ZXhfaW5pdCgmbVN3YXBTdGF0ZS5tdXRleCwgbnVsbHB0cik7CisgICAgeworICAgICAgICBw
dGhyZWFkX211dGV4X2luaXQoJm1Td2FwU3RhdGUubXV0ZXgsIG51bGxwdHIpOwogfQogCiBXaW5k
b3dTdXJmYWNlQ0dMOjp+V2luZG93U3VyZmFjZUNHTCgpCkBAIC0zMjAsMTAgKzMyMiwxMSBAQCBF
R0xpbnQgV2luZG93U3VyZmFjZUNHTDo6Z2V0U3dhcEJlaGF2aW9yCiAgICAgcmV0dXJuIEVHTF9C
VUZGRVJfREVTVFJPWUVEOwogfQogCi1GcmFtZWJ1ZmZlckltcGwgKldpbmRvd1N1cmZhY2VDR0w6
OmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRhdGEgJmRh
dGEpCitGcmFtZWJ1ZmZlckltcGwgKldpbmRvd1N1cmZhY2VDR0w6OmNyZWF0ZURlZmF1bHRGcmFt
ZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUpCiB7CiAgICAgLy8gVE9E
Tyhjd2FsbGV6KSBhc3NlcnQgaXQgaGFwcGVucyBvbmx5IG9uY2U/Ci0gICAgcmV0dXJuIG5ldyBG
cmFtZWJ1ZmZlckdMKG1GcmFtZWJ1ZmZlciwgZGF0YSwgbUZ1bmN0aW9ucywgbVdvcmthcm91bmRz
LCBtU3RhdGVNYW5hZ2VyKTsKKyAgICByZXR1cm4gbmV3IEZyYW1lYnVmZmVyR0wobUZyYW1lYnVm
ZmVyLCBzdGF0ZSwgbUZ1bmN0aW9ucywgbVdvcmthcm91bmRzLCBtUmVuZGVyZXItPmdldEJsaXR0
ZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVN0YXRlTWFuYWdlcik7CiB9CiAK
IH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9lZ2wvRGlzcGxheUVHTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9EaXNwbGF5RUdMLmNwcAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
ZWdsL0Rpc3BsYXlFR0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE2IEBACisvLwor
Ly8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgorLy8KKworLy8gRGlzcGxheUVHTC5jcHA6IENvbW1vbiBhY3Jvc3MgRUdMIHBhcnRzIG9m
IHBsYXRmb3JtIHNwZWNpZmljIGVnbDo6RGlzcGxheSBpbXBsZW1lbnRhdGlvbnMKKworI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9EaXNwbGF5RUdMLmgiCisKK25hbWVzcGFjZSBy
eAoreworCisjZGVmaW5lIEVHTF9OT19DT05GSUcgKChFR0xDb25maWcpMCkKKworRGlzcGxheUVH
TDo6RGlzcGxheUVHTCgpCisgICAgOiBEaXNwbGF5R0woKSwKKyAgICAgIG1FR0wobnVsbHB0ciks
CisgICAgICBtQ29uZmlnKEVHTF9OT19DT05GSUcpLAorICAgICAgbUNvbnRleHQoRUdMX05PX0NP
TlRFWFQpLAorICAgICAgbUZ1bmN0aW9uc0dMKG51bGxwdHIpCit7Cit9CisKK0Rpc3BsYXlFR0w6
On5EaXNwbGF5RUdMKCkKK3sKK30KKworc3RkOjpzdHJpbmcgRGlzcGxheUVHTDo6Z2V0VmVuZG9y
U3RyaW5nKCkgY29uc3QKK3sKKyAgICBjb25zdCBjaGFyICp2ZW5kb3IgPSBtRUdMLT5xdWVyeVN0
cmluZyhFR0xfVkVORE9SKTsKKyAgICBBU1NFUlQodmVuZG9yKTsKKyAgICByZXR1cm4gdmVuZG9y
OworfQorCitlZ2w6OkVycm9yIERpc3BsYXlFR0w6OmluaXRpYWxpemVDb250ZXh0KGNvbnN0IGVn
bDo6QXR0cmlidXRlTWFwICZlZ2xBdHRyaWJ1dGVzKQoreworICAgIGdsOjpWZXJzaW9uIGVnbFZl
cnNpb24obUVHTC0+bWFqb3JWZXJzaW9uLCBtRUdMLT5taW5vclZlcnNpb24pOworCisgICAgRUdM
aW50IHJlcXVlc3RlZE1ham9yID0KKyAgICAgICAgZWdsQXR0cmlidXRlcy5nZXRBc0ludChFR0xf
UExBVEZPUk1fQU5HTEVfTUFYX1ZFUlNJT05fTUFKT1JfQU5HTEUsIEVHTF9ET05UX0NBUkUpOwor
ICAgIEVHTGludCByZXF1ZXN0ZWRNaW5vciA9CisgICAgICAgIGVnbEF0dHJpYnV0ZXMuZ2V0QXNJ
bnQoRUdMX1BMQVRGT1JNX0FOR0xFX01BWF9WRVJTSU9OX01JTk9SX0FOR0xFLCBFR0xfRE9OVF9D
QVJFKTsKKyAgICBib29sIGluaXRpYWxpemVSZXF1ZXN0ZWQgPSByZXF1ZXN0ZWRNYWpvciAhPSBF
R0xfRE9OVF9DQVJFICYmIHJlcXVlc3RlZE1pbm9yICE9IEVHTF9ET05UX0NBUkU7CisKKyAgICBz
dGF0aWNfYXNzZXJ0KEVHTF9DT05URVhUX01BSk9SX1ZFUlNJT04gPT0gRUdMX0NPTlRFWFRfTUFK
T1JfVkVSU0lPTl9LSFIsCisgICAgICAgICAgICAgICAgICAiTWFqb3IgVmVyc2lvbiBkZWZpbmUg
c2hvdWxkIG1hdGNoIik7CisgICAgc3RhdGljX2Fzc2VydChFR0xfQ09OVEVYVF9NSU5PUl9WRVJT
SU9OID09IEVHTF9DT05URVhUX01JTk9SX1ZFUlNJT05fS0hSLAorICAgICAgICAgICAgICAgICAg
Ik1pbm9yIFZlcnNpb24gZGVmaW5lIHNob3VsZCBtYXRjaCIpOworCisgICAgc3RkOjp2ZWN0b3I8
c3RkOjp2ZWN0b3I8RUdMaW50Pj4gY29udGV4dEF0dHJpYkxpc3RzOworICAgIGlmIChlZ2xWZXJz
aW9uID49IGdsOjpWZXJzaW9uKDEsIDUpIHx8IG1FR0wtPmhhc0V4dGVuc2lvbigiRUdMX0tIUl9j
cmVhdGVfY29udGV4dCIpKQorICAgIHsKKyAgICAgICAgaWYgKGluaXRpYWxpemVSZXF1ZXN0ZWQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHRBdHRyaWJMaXN0cy5wdXNoX2JhY2soe0VH
TF9DT05URVhUX01BSk9SX1ZFUlNJT04sIHJlcXVlc3RlZE1ham9yLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX0NPTlRFWFRfTUlOT1JfVkVSU0lPTiwgcmVx
dWVzdGVkTWlub3IsIEVHTF9OT05FfSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAg
ICB7CisgICAgICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgICAgICAgICAgICBjb25zdCBn
bDo6VmVyc2lvbiBlc1ZlcnNpb25zRnJvbTJfMFtdID0geworICAgICAgICAgICAgICAgIGdsOjpW
ZXJzaW9uKDMsIDIpLAorICAgICAgICAgICAgICAgIGdsOjpWZXJzaW9uKDMsIDEpLAorICAgICAg
ICAgICAgICAgIGdsOjpWZXJzaW9uKDMsIDApLAorICAgICAgICAgICAgICAgIGdsOjpWZXJzaW9u
KDIsIDApLAorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvbgor
CisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8gJnZlcnNpb24gOiBlc1ZlcnNpb25zRnJvbTJf
MCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0QXR0cmliTGlzdHMucHVz
aF9iYWNrKAorICAgICAgICAgICAgICAgICAgICB7RUdMX0NPTlRFWFRfTUFKT1JfVkVSU0lPTiwg
c3RhdGljX2Nhc3Q8RUdMaW50Pih2ZXJzaW9uLm1ham9yKSwKKyAgICAgICAgICAgICAgICAgICAg
IEVHTF9DT05URVhUX01JTk9SX1ZFUlNJT04sIHN0YXRpY19jYXN0PEVHTGludD4odmVyc2lvbi5t
aW5vciksIEVHTF9OT05FfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAg
ZWxzZQorICAgIHsKKyAgICAgICAgaWYgKGluaXRpYWxpemVSZXF1ZXN0ZWQgJiYgKHJlcXVlc3Rl
ZE1ham9yICE9IDIgfHwgcmVxdWVzdGVkTWlub3IgIT0gMCkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfQVRUUklCVVRFLCAiVW5zdXBwb3J0ZWQgcmVx
dWVzdGVkIGNvbnRleHQgdmVyc2lvbiIpOworICAgICAgICB9CisgICAgICAgIGNvbnRleHRBdHRy
aWJMaXN0cy5wdXNoX2JhY2soe0VHTF9DT05URVhUX0NMSUVOVF9WRVJTSU9OLCAyLCBFR0xfTk9O
RX0pOworICAgIH0KKworICAgIGZvciAoYXV0byAmYXR0cmliTGlzdCA6IGNvbnRleHRBdHRyaWJM
aXN0cykKKyAgICB7CisgICAgICAgIG1Db250ZXh0ID0gbUVHTC0+Y3JlYXRlQ29udGV4dChtQ29u
ZmlnLCBFR0xfTk9fQ09OVEVYVCwgYXR0cmliTGlzdC5kYXRhKCkpOworICAgICAgICBpZiAobUNv
bnRleHQgIT0gRUdMX05PX0NPTlRFWFQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBl
Z2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBl
Z2w6OkVycm9yKG1FR0wtPmdldEVycm9yKCksICJlZ2xDcmVhdGVDb250ZXh0IGZhaWxlZCIpOwor
fQorCit2b2lkIERpc3BsYXlFR0w6OmdlbmVyYXRlRXh0ZW5zaW9ucyhlZ2w6OkRpc3BsYXlFeHRl
bnNpb25zICpvdXRFeHRlbnNpb25zKSBjb25zdAoreworICAgIG91dEV4dGVuc2lvbnMtPmNyZWF0
ZUNvbnRleHRSb2J1c3RuZXNzID0KKyAgICAgICAgbUVHTC0+aGFzRXh0ZW5zaW9uKCJFR0xfRVhU
X2NyZWF0ZV9jb250ZXh0X3JvYnVzdG5lc3MiKTsKKworICAgIG91dEV4dGVuc2lvbnMtPnBvc3RT
dWJCdWZmZXIgPSBmYWxzZTsgIC8vIFNpbmNlIFN1cmZhY2VFR0w6OnBvc3RTdWJCdWZmZXIgaXMg
bm90IGltcGxlbWVudGVkCit9CisKK3ZvaWQgRGlzcGxheUVHTDo6Z2VuZXJhdGVDYXBzKGVnbDo6
Q2FwcyAqb3V0Q2FwcykgY29uc3QKK3sKKyAgICBvdXRDYXBzLT50ZXh0dXJlTlBPVCA9IHRydWU7
ICAvLyBTaW5jZSB3ZSByZXF1ZXN0IEdMRVMgPj0gMgorfQorCitjb25zdCBGdW5jdGlvbnNHTCAq
RGlzcGxheUVHTDo6Z2V0RnVuY3Rpb25zR0woKSBjb25zdAoreworICAgIHJldHVybiBtRnVuY3Rp
b25zR0w7Cit9Cit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvRGlzcGxheUVHTC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wv
RGlzcGxheUVHTC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvRGlzcGxheUVHTC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNDMgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBEaXNwbGF5RUdMLmg6IENvbW1vbiBh
Y3Jvc3MgRUdMIHBhcnRzIG9mIHBsYXRmb3JtIHNwZWNpZmljIGVnbDo6RGlzcGxheSBpbXBsZW1l
bnRhdGlvbnMKKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9HTF9FR0xfRElTUExBWUVHTF9I
XworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9HTF9FR0xfRElTUExBWUVHTF9IXworCisjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvRGlzcGxheUdMLmgiCisjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvZ2wvZWdsL0Z1bmN0aW9uc0VHTC5oIgorCituYW1lc3BhY2UgcngKK3sKKwor
Y2xhc3MgRGlzcGxheUVHTCA6IHB1YmxpYyBEaXNwbGF5R0wKK3sKKyAgcHVibGljOgorICAgIERp
c3BsYXlFR0woKTsKKyAgICB+RGlzcGxheUVHTCgpIG92ZXJyaWRlOworCisgICAgc3RkOjpzdHJp
bmcgZ2V0VmVuZG9yU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgcHJvdGVjdGVkOgorICAg
IGVnbDo6RXJyb3IgaW5pdGlhbGl6ZUNvbnRleHQoY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmVn
bEF0dHJpYnV0ZXMpOworCisgICAgRnVuY3Rpb25zRUdMICptRUdMOworICAgIEVHTENvbmZpZyBt
Q29uZmlnOworICAgIEVHTENvbnRleHQgbUNvbnRleHQ7CisgICAgRnVuY3Rpb25zR0wgKm1GdW5j
dGlvbnNHTDsKKworICBwcml2YXRlOgorICAgIHZvaWQgZ2VuZXJhdGVFeHRlbnNpb25zKGVnbDo6
RGlzcGxheUV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMpIGNvbnN0IG92ZXJyaWRlOworICAgIHZv
aWQgZ2VuZXJhdGVDYXBzKGVnbDo6Q2FwcyAqb3V0Q2FwcykgY29uc3Qgb3ZlcnJpZGU7CisKKyAg
ICBjb25zdCBGdW5jdGlvbnNHTCAqZ2V0RnVuY3Rpb25zR0woKSBjb25zdCBvdmVycmlkZTsKK307
CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgLyogTElCQU5HTEVfUkVOREVSRVJfR0xf
RUdMX0RJU1BMQVlFR0xfSF8gKi8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvRnVuY3Rpb25zRUdMLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Z1bmN0
aW9uc0VHTC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9GdW5jdGlvbnNFR0wuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMzQwIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gRnVuY3Rpb25zRUdMLmNwcDog
SW1wbGVtZW50cyB0aGUgRnVuY3Rpb25zRUdMIGNsYXNzLgorCisjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZ2wvZWdsL0Z1bmN0aW9uc0VHTC5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgor
CisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvRnVuY3Rpb25zR0wuaCIKKyNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvZnVuY3Rpb25zZWdsX3R5cGVkZWZzLmgiCisjaW5j
bHVkZSAiY29tbW9uL3N0cmluZ191dGlscy5oIgorCituYW1lc3BhY2UKK3sKKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Citib29sIFNldFB0cihUICpkc3QsIHZvaWQgKnNyYykKK3sKKyAgICBpZiAo
c3JjKQorICAgIHsKKyAgICAgICAgKmRzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VD4oc3JjKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KK30gIC8vIG5h
bWVzcGFjZQorCituYW1lc3BhY2UgcngKK3sKKworc3RydWN0IEZ1bmN0aW9uc0VHTDo6RUdMRGlz
cGF0Y2hUYWJsZQoreworICAgIEVHTERpc3BhdGNoVGFibGUoKQorICAgICAgICA6IGJpbmRBUElQ
dHIobnVsbHB0ciksCisgICAgICAgICAgY2hvb3NlQ29uZmlnUHRyKG51bGxwdHIpLAorICAgICAg
ICAgIGNyZWF0ZUNvbnRleHRQdHIobnVsbHB0ciksCisgICAgICAgICAgY3JlYXRlUGJ1ZmZlclN1
cmZhY2VQdHIobnVsbHB0ciksCisgICAgICAgICAgY3JlYXRlV2luZG93U3VyZmFjZVB0cihudWxs
cHRyKSwKKyAgICAgICAgICBkZXN0cm95Q29udGV4dFB0cihudWxscHRyKSwKKyAgICAgICAgICBk
ZXN0cm95U3VyZmFjZVB0cihudWxscHRyKSwKKyAgICAgICAgICBnZXRDb25maWdBdHRyaWJQdHIo
bnVsbHB0ciksCisgICAgICAgICAgZ2V0RGlzcGxheVB0cihudWxscHRyKSwKKyAgICAgICAgICBn
ZXRFcnJvclB0cihudWxscHRyKSwKKyAgICAgICAgICBpbml0aWFsaXplUHRyKG51bGxwdHIpLAor
ICAgICAgICAgIG1ha2VDdXJyZW50UHRyKG51bGxwdHIpLAorICAgICAgICAgIHF1ZXJ5U3RyaW5n
UHRyKG51bGxwdHIpLAorICAgICAgICAgIHF1ZXJ5U3VyZmFjZVB0cihudWxscHRyKSwKKyAgICAg
ICAgICBzd2FwQnVmZmVyc1B0cihudWxscHRyKSwKKyAgICAgICAgICB0ZXJtaW5hdGVQdHIobnVs
bHB0ciksCisKKyAgICAgICAgICBiaW5kVGV4SW1hZ2VQdHIobnVsbHB0ciksCisgICAgICAgICAg
cmVsZWFzZVRleEltYWdlUHRyKG51bGxwdHIpLAorICAgICAgICAgIHN3YXBJbnRlcnZhbFB0cihu
dWxscHRyKSwKKworICAgICAgICAgIGNyZWF0ZUltYWdlS0hSUHRyKG51bGxwdHIpLAorICAgICAg
ICAgIGRlc3Ryb3lJbWFnZUtIUlB0cihudWxscHRyKSwKKworICAgICAgICAgIGNsaWVudFdhaXRT
eW5jS0hSUHRyKG51bGxwdHIpLAorICAgICAgICAgIGNyZWF0ZVN5bmNLSFJQdHIobnVsbHB0ciks
CisgICAgICAgICAgZGVzdHJveVN5bmNLSFJQdHIobnVsbHB0ciksCisgICAgICAgICAgZ2V0U3lu
Y0F0dHJpYktIUlB0cihudWxscHRyKQorICAgIHsKKyAgICB9CisKKyAgICAvLyAxLjAKKyAgICBQ
Rk5FR0xCSU5EQVBJUFJPQyBiaW5kQVBJUHRyOworICAgIFBGTkVHTENIT09TRUNPTkZJR1BST0Mg
Y2hvb3NlQ29uZmlnUHRyOworICAgIFBGTkVHTENSRUFURUNPTlRFWFRQUk9DIGNyZWF0ZUNvbnRl
eHRQdHI7CisgICAgUEZORUdMQ1JFQVRFUEJVRkZFUlNVUkZBQ0VQUk9DIGNyZWF0ZVBidWZmZXJT
dXJmYWNlUHRyOworICAgIFBGTkVHTENSRUFURVdJTkRPV1NVUkZBQ0VQUk9DIGNyZWF0ZVdpbmRv
d1N1cmZhY2VQdHI7CisgICAgUEZORUdMREVTVFJPWUNPTlRFWFRQUk9DIGRlc3Ryb3lDb250ZXh0
UHRyOworICAgIFBGTkVHTERFU1RST1lTVVJGQUNFUFJPQyBkZXN0cm95U3VyZmFjZVB0cjsKKyAg
ICBQRk5FR0xHRVRDT05GSUdBVFRSSUJQUk9DIGdldENvbmZpZ0F0dHJpYlB0cjsKKyAgICBQRk5F
R0xHRVRESVNQTEFZUFJPQyBnZXREaXNwbGF5UHRyOworICAgIFBGTkVHTEdFVEVSUk9SUFJPQyBn
ZXRFcnJvclB0cjsKKyAgICBQRk5FR0xJTklUSUFMSVpFUFJPQyBpbml0aWFsaXplUHRyOworICAg
IFBGTkVHTE1BS0VDVVJSRU5UUFJPQyBtYWtlQ3VycmVudFB0cjsKKyAgICBQRk5FR0xRVUVSWVNU
UklOR1BST0MgcXVlcnlTdHJpbmdQdHI7CisgICAgUEZORUdMUVVFUllTVVJGQUNFUFJPQyBxdWVy
eVN1cmZhY2VQdHI7CisgICAgUEZORUdMU1dBUEJVRkZFUlNQUk9DIHN3YXBCdWZmZXJzUHRyOwor
ICAgIFBGTkVHTFRFUk1JTkFURVBST0MgdGVybWluYXRlUHRyOworCisgICAgLy8gMS4xCisgICAg
UEZORUdMQklORFRFWElNQUdFUFJPQyBiaW5kVGV4SW1hZ2VQdHI7CisgICAgUEZORUdMUkVMRUFT
RVRFWElNQUdFUFJPQyByZWxlYXNlVGV4SW1hZ2VQdHI7CisgICAgUEZORUdMU1dBUElOVEVSVkFM
UFJPQyBzd2FwSW50ZXJ2YWxQdHI7CisKKyAgICAvLyBFR0xfS0hSX2ltYWdlCisgICAgUEZORUdM
Q1JFQVRFSU1BR0VLSFJQUk9DIGNyZWF0ZUltYWdlS0hSUHRyOworICAgIFBGTkVHTERFU1RST1lJ
TUFHRUtIUlBST0MgZGVzdHJveUltYWdlS0hSUHRyOworCisgICAgLy8gRUdMX0tIUl9mZW5jZV9z
eW5jCisgICAgUEZORUdMQ0xJRU5UV0FJVFNZTkNLSFJQUk9DIGNsaWVudFdhaXRTeW5jS0hSUHRy
OworICAgIFBGTkVHTENSRUFURVNZTkNLSFJQUk9DIGNyZWF0ZVN5bmNLSFJQdHI7CisgICAgUEZO
RUdMREVTVFJPWVNZTkNLSFJQUk9DIGRlc3Ryb3lTeW5jS0hSUHRyOworICAgIFBGTkVHTEdFVFNZ
TkNBVFRSSUJLSFJQUk9DIGdldFN5bmNBdHRyaWJLSFJQdHI7Cit9OworCitGdW5jdGlvbnNFR0w6
OkZ1bmN0aW9uc0VHTCgpCisgICAgOiBtYWpvclZlcnNpb24oMCksIG1pbm9yVmVyc2lvbigwKSwg
bUZuUHRycyhuZXcgRUdMRGlzcGF0Y2hUYWJsZSgpKSwgbUVHTERpc3BsYXkoRUdMX05PX0RJU1BM
QVkpCit7Cit9CisKK0Z1bmN0aW9uc0VHTDo6fkZ1bmN0aW9uc0VHTCgpCit7CisgICAgU2FmZURl
bGV0ZShtRm5QdHJzKTsKK30KKworZWdsOjpFcnJvciBGdW5jdGlvbnNFR0w6OmluaXRpYWxpemUo
RUdMTmF0aXZlRGlzcGxheVR5cGUgbmF0aXZlRGlzcGxheSkKK3sKKyNkZWZpbmUgQU5HTEVfR0VU
X1BST0NfT1JfRVJST1IoTUVNQkVSLCBOQU1FKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIGlmICghU2V0UHRyKE1FTUJFUiwgZ2V0UHJvY0FkZHJlc3Mo
I05BTUUpKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3Io
RUdMX05PVF9JTklUSUFMSVpFRCwgIkNvdWxkIG5vdCBsb2FkIEVHTCBlbnRyeSBwb2ludCAiICNO
QU1FKTsgXAorICAgIH0KKworICAgIEFOR0xFX0dFVF9QUk9DX09SX0VSUk9SKCZtRm5QdHJzLT5i
aW5kQVBJUHRyLCBlZ2xCaW5kQVBJKTsKKyAgICBBTkdMRV9HRVRfUFJPQ19PUl9FUlJPUigmbUZu
UHRycy0+Y2hvb3NlQ29uZmlnUHRyLCBlZ2xDaG9vc2VDb25maWcpOworICAgIEFOR0xFX0dFVF9Q
Uk9DX09SX0VSUk9SKCZtRm5QdHJzLT5jcmVhdGVDb250ZXh0UHRyLCBlZ2xDcmVhdGVDb250ZXh0
KTsKKyAgICBBTkdMRV9HRVRfUFJPQ19PUl9FUlJPUigmbUZuUHRycy0+Y3JlYXRlUGJ1ZmZlclN1
cmZhY2VQdHIsIGVnbENyZWF0ZVBidWZmZXJTdXJmYWNlKTsKKyAgICBBTkdMRV9HRVRfUFJPQ19P
Ul9FUlJPUigmbUZuUHRycy0+Y3JlYXRlV2luZG93U3VyZmFjZVB0ciwgZWdsQ3JlYXRlV2luZG93
U3VyZmFjZSk7CisgICAgQU5HTEVfR0VUX1BST0NfT1JfRVJST1IoJm1GblB0cnMtPmRlc3Ryb3lD
b250ZXh0UHRyLCBlZ2xEZXN0cm95Q29udGV4dCk7CisgICAgQU5HTEVfR0VUX1BST0NfT1JfRVJS
T1IoJm1GblB0cnMtPmRlc3Ryb3lTdXJmYWNlUHRyLCBlZ2xEZXN0cm95U3VyZmFjZSk7CisgICAg
QU5HTEVfR0VUX1BST0NfT1JfRVJST1IoJm1GblB0cnMtPmdldENvbmZpZ0F0dHJpYlB0ciwgZWds
R2V0Q29uZmlnQXR0cmliKTsKKyAgICBBTkdMRV9HRVRfUFJPQ19PUl9FUlJPUigmbUZuUHRycy0+
Z2V0RGlzcGxheVB0ciwgZWdsR2V0RGlzcGxheSk7CisgICAgQU5HTEVfR0VUX1BST0NfT1JfRVJS
T1IoJm1GblB0cnMtPmdldEVycm9yUHRyLCBlZ2xHZXRFcnJvcik7CisgICAgQU5HTEVfR0VUX1BS
T0NfT1JfRVJST1IoJm1GblB0cnMtPmluaXRpYWxpemVQdHIsIGVnbEluaXRpYWxpemUpOworICAg
IEFOR0xFX0dFVF9QUk9DX09SX0VSUk9SKCZtRm5QdHJzLT5tYWtlQ3VycmVudFB0ciwgZWdsTWFr
ZUN1cnJlbnQpOworICAgIEFOR0xFX0dFVF9QUk9DX09SX0VSUk9SKCZtRm5QdHJzLT5xdWVyeVN0
cmluZ1B0ciwgZWdsUXVlcnlTdHJpbmcpOworICAgIEFOR0xFX0dFVF9QUk9DX09SX0VSUk9SKCZt
Rm5QdHJzLT5xdWVyeVN1cmZhY2VQdHIsIGVnbFF1ZXJ5U3VyZmFjZSk7CisgICAgQU5HTEVfR0VU
X1BST0NfT1JfRVJST1IoJm1GblB0cnMtPnN3YXBCdWZmZXJzUHRyLCBlZ2xTd2FwQnVmZmVycyk7
CisgICAgQU5HTEVfR0VUX1BST0NfT1JfRVJST1IoJm1GblB0cnMtPnRlcm1pbmF0ZVB0ciwgZWds
VGVybWluYXRlKTsKKworICAgIEFOR0xFX0dFVF9QUk9DX09SX0VSUk9SKCZtRm5QdHJzLT5iaW5k
VGV4SW1hZ2VQdHIsIGVnbEJpbmRUZXhJbWFnZSk7CisgICAgQU5HTEVfR0VUX1BST0NfT1JfRVJS
T1IoJm1GblB0cnMtPnJlbGVhc2VUZXhJbWFnZVB0ciwgZWdsUmVsZWFzZVRleEltYWdlKTsKKyAg
ICBBTkdMRV9HRVRfUFJPQ19PUl9FUlJPUigmbUZuUHRycy0+c3dhcEludGVydmFsUHRyLCBlZ2xT
d2FwSW50ZXJ2YWwpOworCisgICAgbUVHTERpc3BsYXkgPSBtRm5QdHJzLT5nZXREaXNwbGF5UHRy
KG5hdGl2ZURpc3BsYXkpOworICAgIGlmIChtRUdMRGlzcGxheSA9PSBFR0xfTk9fRElTUExBWSkK
KyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9OT1RfSU5JVElBTElaRUQsICJG
YWlsZWQgdG8gZ2V0IHN5c3RlbSBlZ2wgZGlzcGxheSIpOworICAgIH0KKyAgICBpZiAobUZuUHRy
cy0+aW5pdGlhbGl6ZVB0cihtRUdMRGlzcGxheSwgJm1ham9yVmVyc2lvbiwgJm1pbm9yVmVyc2lv
bikgIT0gRUdMX1RSVUUpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihtRm5QdHJz
LT5nZXRFcnJvclB0cigpLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgc3lzdGVtIGVnbCIpOworICAg
IH0KKyAgICBpZiAobWFqb3JWZXJzaW9uIDwgMSB8fCAobWFqb3JWZXJzaW9uID09IDEgJiYgbWlu
b3JWZXJzaW9uIDwgNCkpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfTk9U
X0lOSVRJQUxJWkVELCAiVW5zdXBwb3J0ZWQgRUdMIHZlcnNpb24gKHJlcXVpcmUgYXQgbGVhc3Qg
MS40KS4iKTsKKyAgICB9CisgICAgaWYgKG1GblB0cnMtPmJpbmRBUElQdHIoRUdMX09QRU5HTF9F
U19BUEkpICE9IEVHTF9UUlVFKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IobUZu
UHRycy0+Z2V0RXJyb3JQdHIoKSwgIkZhaWxlZCB0byBiaW5kIEFQSSBpbiBzeXN0ZW0gZWdsIik7
CisgICAgfQorCisgICAgY29uc3QgY2hhciAqZXh0ZW5zaW9ucyA9IHF1ZXJ5U3RyaW5nKEVHTF9F
WFRFTlNJT05TKTsKKyAgICBpZiAoIWV4dGVuc2lvbnMpCisgICAgeworICAgICAgICByZXR1cm4g
ZWdsOjpFcnJvcihtRm5QdHJzLT5nZXRFcnJvclB0cigpLCAiRmFpbGQgdG8gcXVlcnkgZXh0ZW5z
aW9ucyBpbiBzeXN0ZW0gZWdsIik7CisgICAgfQorICAgIGFuZ2xlOjpTcGxpdFN0cmluZ0Fsb25n
V2hpdGVzcGFjZShleHRlbnNpb25zLCAmbUV4dGVuc2lvbnMpOworCisgICAgaWYgKGhhc0V4dGVu
c2lvbigiRUdMX0tIUl9pbWFnZV9iYXNlIikpCisgICAgeworICAgICAgICBBTkdMRV9HRVRfUFJP
Q19PUl9FUlJPUigmbUZuUHRycy0+Y3JlYXRlSW1hZ2VLSFJQdHIsIGVnbENyZWF0ZUltYWdlS0hS
KTsKKyAgICAgICAgQU5HTEVfR0VUX1BST0NfT1JfRVJST1IoJm1GblB0cnMtPmRlc3Ryb3lJbWFn
ZUtIUlB0ciwgZWdsRGVzdHJveUltYWdlS0hSKTsKKyAgICB9CisgICAgaWYgKGhhc0V4dGVuc2lv
bigiRUdMX0tIUl9mZW5jZV9zeW5jIikpCisgICAgeworICAgICAgICBBTkdMRV9HRVRfUFJPQ19P
Ul9FUlJPUigmbUZuUHRycy0+Y2xpZW50V2FpdFN5bmNLSFJQdHIsIGVnbENsaWVudFdhaXRTeW5j
S0hSKTsKKyAgICAgICAgQU5HTEVfR0VUX1BST0NfT1JfRVJST1IoJm1GblB0cnMtPmNyZWF0ZVN5
bmNLSFJQdHIsIGVnbENyZWF0ZVN5bmNLSFIpOworICAgICAgICBBTkdMRV9HRVRfUFJPQ19PUl9F
UlJPUigmbUZuUHRycy0+ZGVzdHJveVN5bmNLSFJQdHIsIGVnbERlc3Ryb3lTeW5jS0hSKTsKKyAg
ICAgICAgQU5HTEVfR0VUX1BST0NfT1JfRVJST1IoJm1GblB0cnMtPmdldFN5bmNBdHRyaWJLSFJQ
dHIsIGVnbEdldFN5bmNBdHRyaWJLSFIpOworICAgIH0KKworI3VuZGVmIEFOR0xFX0dFVF9QUk9D
X09SX0VSUk9SCisKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKK2Vn
bDo6RXJyb3IgRnVuY3Rpb25zRUdMOjp0ZXJtaW5hdGUoKQoreworICAgIGlmIChtRm5QdHJzLT50
ZXJtaW5hdGVQdHIobUVHTERpc3BsYXkpID09IEVHTF9UUlVFKQorICAgIHsKKyAgICAgICAgbUVH
TERpc3BsYXkgPSBudWxscHRyOworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VT
Uyk7CisgICAgfQorICAgIHJldHVybiBlZ2w6OkVycm9yKG1GblB0cnMtPmdldEVycm9yUHRyKCkp
OworfQorCitjbGFzcyBGdW5jdGlvbnNHTEVHTCA6IHB1YmxpYyBGdW5jdGlvbnNHTAoreworICBw
dWJsaWM6CisgICAgRnVuY3Rpb25zR0xFR0woY29uc3QgRnVuY3Rpb25zRUdMICZlZ2wpIDogbUVH
TChlZ2wpIHt9CisKKyAgICB+RnVuY3Rpb25zR0xFR0woKSBvdmVycmlkZSB7fQorCisgIHByaXZh
dGU6CisgICAgdm9pZCAqbG9hZFByb2NBZGRyZXNzKGNvbnN0IHN0ZDo6c3RyaW5nICZmdW5jdGlv
bikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBtRUdMLmdldFByb2NBZGRyZXNzKGZ1
bmN0aW9uLmNfc3RyKCkpOworICAgIH0KKworICAgIGNvbnN0IEZ1bmN0aW9uc0VHTCAmbUVHTDsK
K307CisKK0Z1bmN0aW9uc0dMICpGdW5jdGlvbnNFR0w6Om1ha2VGdW5jdGlvbnNHTCh2b2lkKSBj
b25zdAoreworICAgIHJldHVybiBuZXcgRnVuY3Rpb25zR0xFR0woKnRoaXMpOworfQorCitib29s
IEZ1bmN0aW9uc0VHTDo6aGFzRXh0ZW5zaW9uKGNvbnN0IGNoYXIgKmV4dGVuc2lvbikgY29uc3QK
K3sKKyAgICByZXR1cm4gc3RkOjpmaW5kKG1FeHRlbnNpb25zLmJlZ2luKCksIG1FeHRlbnNpb25z
LmVuZCgpLCBleHRlbnNpb24pICE9IG1FeHRlbnNpb25zLmVuZCgpOworfQorCitFR0xEaXNwbGF5
IEZ1bmN0aW9uc0VHTDo6Z2V0RGlzcGxheSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1FR0xEaXNw
bGF5OworfQorCitFR0xpbnQgRnVuY3Rpb25zRUdMOjpnZXRFcnJvcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1GblB0cnMtPmdldEVycm9yUHRyKCk7Cit9CisKK0VHTEJvb2xlYW4gRnVuY3Rpb25z
RUdMOjpjaG9vc2VDb25maWcoRUdMaW50IGNvbnN0ICphdHRyaWJMaXN0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDb25maWcgKmNvbmZpZ3MsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBjb25maWdTaXplLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgKm51bUNvbmZpZykgY29uc3QKK3sK
KyAgICByZXR1cm4gbUZuUHRycy0+Y2hvb3NlQ29uZmlnUHRyKG1FR0xEaXNwbGF5LCBhdHRyaWJM
aXN0LCBjb25maWdzLCBjb25maWdTaXplLCBudW1Db25maWcpOworfQorCitFR0xCb29sZWFuIEZ1
bmN0aW9uc0VHTDo6Z2V0Q29uZmlnQXR0cmliKEVHTENvbmZpZyBjb25maWcsIEVHTGludCBhdHRy
aWJ1dGUsIEVHTGludCAqdmFsdWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1GblB0cnMtPmdldENv
bmZpZ0F0dHJpYlB0cihtRUdMRGlzcGxheSwgY29uZmlnLCBhdHRyaWJ1dGUsIHZhbHVlKTsKK30K
KworRUdMQ29udGV4dCBGdW5jdGlvbnNFR0w6OmNyZWF0ZUNvbnRleHQoRUdMQ29uZmlnIGNvbmZp
ZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENvbnRleHQgc2hh
cmVfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGlu
dCBjb25zdCAqYXR0cmliX2xpc3QpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1GblB0cnMtPmNyZWF0
ZUNvbnRleHRQdHIobUVHTERpc3BsYXksIGNvbmZpZywgc2hhcmVfY29udGV4dCwgYXR0cmliX2xp
c3QpOworfQorCitFR0xTdXJmYWNlIEZ1bmN0aW9uc0VHTDo6Y3JlYXRlUGJ1ZmZlclN1cmZhY2Uo
RUdMQ29uZmlnIGNvbmZpZywgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbUZuUHRycy0+Y3JlYXRlUGJ1ZmZlclN1cmZhY2VQdHIobUVHTERpc3BsYXksIGNv
bmZpZywgYXR0cmliX2xpc3QpOworfQorCitFR0xTdXJmYWNlIEZ1bmN0aW9uc0VHTDo6Y3JlYXRl
V2luZG93U3VyZmFjZShFR0xDb25maWcgY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW4sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFR0xpbnQgKmF0dHJpYl9s
aXN0KSBjb25zdAoreworICAgIHJldHVybiBtRm5QdHJzLT5jcmVhdGVXaW5kb3dTdXJmYWNlUHRy
KG1FR0xEaXNwbGF5LCBjb25maWcsIHdpbiwgYXR0cmliX2xpc3QpOworfQorCitFR0xCb29sZWFu
IEZ1bmN0aW9uc0VHTDo6ZGVzdHJveUNvbnRleHQoRUdMQ29udGV4dCBjb250ZXh0KSBjb25zdAor
eworICAgIHJldHVybiBtRm5QdHJzLT5kZXN0cm95Q29udGV4dFB0cihtRUdMRGlzcGxheSwgY29u
dGV4dCk7Cit9CisKK0VHTEJvb2xlYW4gRnVuY3Rpb25zRUdMOjpkZXN0cm95U3VyZmFjZShFR0xT
dXJmYWNlIHN1cmZhY2UpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1GblB0cnMtPmRlc3Ryb3lTdXJm
YWNlUHRyKG1FR0xEaXNwbGF5LCBzdXJmYWNlKTsKK30KKworRUdMQm9vbGVhbiBGdW5jdGlvbnNF
R0w6Om1ha2VDdXJyZW50KEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMQ29udGV4dCBjb250ZXh0KSBj
b25zdAoreworICAgIHJldHVybiBtRm5QdHJzLT5tYWtlQ3VycmVudFB0cihtRUdMRGlzcGxheSwg
c3VyZmFjZSwgc3VyZmFjZSwgY29udGV4dCk7Cit9CisKK2NoYXIgY29uc3QgKkZ1bmN0aW9uc0VH
TDo6cXVlcnlTdHJpbmcoRUdMaW50IG5hbWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1GblB0cnMt
PnF1ZXJ5U3RyaW5nUHRyKG1FR0xEaXNwbGF5LCBuYW1lKTsKK30KKworRUdMQm9vbGVhbiBGdW5j
dGlvbnNFR0w6OnF1ZXJ5U3VyZmFjZShFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTGludCBhdHRyaWJ1
dGUsIEVHTGludCAqdmFsdWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1GblB0cnMtPnF1ZXJ5U3Vy
ZmFjZVB0cihtRUdMRGlzcGxheSwgc3VyZmFjZSwgYXR0cmlidXRlLCB2YWx1ZSk7Cit9CisKK0VH
TEJvb2xlYW4gRnVuY3Rpb25zRUdMOjpzd2FwQnVmZmVycyhFR0xTdXJmYWNlIHN1cmZhY2UpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1GblB0cnMtPnN3YXBCdWZmZXJzUHRyKG1FR0xEaXNwbGF5LCBz
dXJmYWNlKTsKK30KKworRUdMQm9vbGVhbiBGdW5jdGlvbnNFR0w6OmJpbmRUZXhJbWFnZShFR0xT
dXJmYWNlIHN1cmZhY2UsIEVHTGludCBidWZmZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1GblB0
cnMtPmJpbmRUZXhJbWFnZVB0cihtRUdMRGlzcGxheSwgc3VyZmFjZSwgYnVmZmVyKTsKK30KKwor
RUdMQm9vbGVhbiBGdW5jdGlvbnNFR0w6OnJlbGVhc2VUZXhJbWFnZShFR0xTdXJmYWNlIHN1cmZh
Y2UsIEVHTGludCBidWZmZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1GblB0cnMtPnJlbGVhc2VU
ZXhJbWFnZVB0cihtRUdMRGlzcGxheSwgc3VyZmFjZSwgYnVmZmVyKTsKK30KKworRUdMQm9vbGVh
biBGdW5jdGlvbnNFR0w6OnN3YXBJbnRlcnZhbChFR0xpbnQgaW50ZXJ2YWwpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1GblB0cnMtPnN3YXBJbnRlcnZhbFB0cihtRUdMRGlzcGxheSwgaW50ZXJ2YWwp
OworfQorCitFR0xJbWFnZUtIUiBGdW5jdGlvbnNFR0w6OmNyZWF0ZUltYWdlS0hSKEVHTENvbnRl
eHQgY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdM
ZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVH
TENsaWVudEJ1ZmZlciBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1G
blB0cnMtPmNyZWF0ZUltYWdlS0hSUHRyKG1FR0xEaXNwbGF5LCBjb250ZXh0LCB0YXJnZXQsIGJ1
ZmZlciwgYXR0cmliX2xpc3QpOworfQorCitFR0xCb29sZWFuIEZ1bmN0aW9uc0VHTDo6ZGVzdHJv
eUltYWdlS0hSKEVHTEltYWdlS0hSIGltYWdlKSBjb25zdAoreworICAgIHJldHVybiBtRm5QdHJz
LT5kZXN0cm95SW1hZ2VLSFJQdHIobUVHTERpc3BsYXksIGltYWdlKTsKK30KKworRUdMU3luY0tI
UiBGdW5jdGlvbnNFR0w6OmNyZWF0ZVN5bmNLSFIoRUdMZW51bSB0eXBlLCBjb25zdCBFR0xpbnQg
KmF0dHJpYl9saXN0KQoreworICAgIHJldHVybiBtRm5QdHJzLT5jcmVhdGVTeW5jS0hSUHRyKG1F
R0xEaXNwbGF5LCB0eXBlLCBhdHRyaWJfbGlzdCk7Cit9CisKK0VHTEJvb2xlYW4gRnVuY3Rpb25z
RUdMOjpkZXN0cm95U3luY0tIUihFR0xTeW5jS0hSIHN5bmMpCit7CisgICAgcmV0dXJuIG1GblB0
cnMtPmRlc3Ryb3lTeW5jS0hSUHRyKG1FR0xEaXNwbGF5LCBzeW5jKTsKK30KKworRUdMaW50IEZ1
bmN0aW9uc0VHTDo6Y2xpZW50V2FpdFN5bmNLSFIoRUdMU3luY0tIUiBzeW5jLCBFR0xpbnQgZmxh
Z3MsIEVHTFRpbWVLSFIgdGltZW91dCkKK3sKKyAgICByZXR1cm4gbUZuUHRycy0+Y2xpZW50V2Fp
dFN5bmNLSFJQdHIobUVHTERpc3BsYXksIHN5bmMsIGZsYWdzLCB0aW1lb3V0KTsKK30KKworRUdM
Qm9vbGVhbiBGdW5jdGlvbnNFR0w6OmdldFN5bmNBdHRyaWJLSFIoRUdMU3luY0tIUiBzeW5jLCBF
R0xpbnQgYXR0cmlidXRlLCBFR0xpbnQgKnZhbHVlKQoreworICAgIHJldHVybiBtRm5QdHJzLT5n
ZXRTeW5jQXR0cmliS0hSUHRyKG1FR0xEaXNwbGF5LCBzeW5jLCBhdHRyaWJ1dGUsIHZhbHVlKTsK
K30KK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9GdW5jdGlvbnNFR0wuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Z1bmN0
aW9uc0VHTC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvRnVuY3Rpb25zRUdMLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw5MSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEZ1bmN0aW9uc0VHTC5oOiBEZWZpbmVz
IHRoZSBGdW5jdGlvbnNFR0wgY2xhc3MgdG8gbG9hZCBmdW5jdGlvbnMgYW5kIGRhdGEgZnJvbSBF
R0wKKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9HTF9DUk9TX0ZVTkNUSU9OU0VHTF9IXwor
I2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9HTF9DUk9TX0ZVTkNUSU9OU0VHTF9IXworCisjaW5j
bHVkZSA8RUdML2VnbC5oPgorI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KKworI2luY2x1ZGUgPHN0
cmluZz4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJsaWJBTkdMRS9FcnJvci5oIgor
CituYW1lc3BhY2UgcngKK3sKKworY2xhc3MgRnVuY3Rpb25zR0w7CisKK2NsYXNzIEZ1bmN0aW9u
c0VHTAoreworICBwdWJsaWM6CisgICAgRnVuY3Rpb25zRUdMKCk7CisgICAgdmlydHVhbCB+RnVu
Y3Rpb25zRUdMKCk7CisKKyAgICBpbnQgbWFqb3JWZXJzaW9uOworICAgIGludCBtaW5vclZlcnNp
b247CisKKyAgICBlZ2w6OkVycm9yIGluaXRpYWxpemUoRUdMTmF0aXZlRGlzcGxheVR5cGUgbmF0
aXZlRGlzcGxheSk7CisgICAgZWdsOjpFcnJvciB0ZXJtaW5hdGUoKTsKKworICAgIHZpcnR1YWwg
dm9pZCAqZ2V0UHJvY0FkZHJlc3MoY29uc3QgY2hhciAqbmFtZSkgY29uc3QgPSAwOworCisgICAg
RnVuY3Rpb25zR0wgKm1ha2VGdW5jdGlvbnNHTCgpIGNvbnN0OworICAgIGJvb2wgaGFzRXh0ZW5z
aW9uKGNvbnN0IGNoYXIgKmV4dGVuc2lvbikgY29uc3Q7CisgICAgRUdMRGlzcGxheSBnZXREaXNw
bGF5KCkgY29uc3Q7CisgICAgRUdMaW50IGdldEVycm9yKCkgY29uc3Q7CisKKyAgICBFR0xCb29s
ZWFuIGNob29zZUNvbmZpZyhFR0xpbnQgY29uc3QgKmF0dHJpYl9saXN0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEVHTENvbmZpZyAqY29uZmlncywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFR0xpbnQgY29uZmlnX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RUdMaW50ICpudW1fY29uZmlnKSBjb25zdDsKKyAgICBFR0xCb29sZWFuIGdldENvbmZpZ0F0dHJp
YihFR0xDb25maWcgY29uZmlnLCBFR0xpbnQgYXR0cmlidXRlLCBFR0xpbnQgKnZhbHVlKSBjb25z
dDsKKyAgICBFR0xDb250ZXh0IGNyZWF0ZUNvbnRleHQoRUdMQ29uZmlnIGNvbmZpZywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ29udGV4dCBzaGFyZV9jb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgY29uc3QgKmF0dHJpYl9saXN0KSBjb25zdDsK
KyAgICBFR0xTdXJmYWNlIGNyZWF0ZVBidWZmZXJTdXJmYWNlKEVHTENvbmZpZyBjb25maWcsIGNv
bnN0IEVHTGludCAqYXR0cmliX2xpc3QpIGNvbnN0OworICAgIEVHTFN1cmZhY2UgY3JlYXRlV2lu
ZG93U3VyZmFjZShFR0xDb25maWcgY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCkgY29uc3Q7CisgICAgRUdMQm9v
bGVhbiBkZXN0cm95Q29udGV4dChFR0xDb250ZXh0IGNvbnRleHQpIGNvbnN0OworICAgIEVHTEJv
b2xlYW4gZGVzdHJveVN1cmZhY2UoRUdMU3VyZmFjZSBzdXJmYWNlKSBjb25zdDsKKyAgICBFR0xC
b29sZWFuIG1ha2VDdXJyZW50KEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMQ29udGV4dCBjb250ZXh0
KSBjb25zdDsKKyAgICBjb25zdCBjaGFyICpxdWVyeVN0cmluZyhFR0xpbnQgbmFtZSkgY29uc3Q7
CisgICAgRUdMQm9vbGVhbiBxdWVyeVN1cmZhY2UoRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xpbnQg
YXR0cmlidXRlLCBFR0xpbnQgKnZhbHVlKSBjb25zdDsKKyAgICBFR0xCb29sZWFuIHN3YXBCdWZm
ZXJzKEVHTFN1cmZhY2Ugc3VyZmFjZSkgY29uc3Q7CisKKyAgICBFR0xCb29sZWFuIGJpbmRUZXhJ
bWFnZShFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTGludCBidWZmZXIpIGNvbnN0OworICAgIEVHTEJv
b2xlYW4gcmVsZWFzZVRleEltYWdlKEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IGJ1ZmZlcikg
Y29uc3Q7CisgICAgRUdMQm9vbGVhbiBzd2FwSW50ZXJ2YWwoRUdMaW50IGludGVydmFsKSBjb25z
dDsKKworICAgIEVHTEltYWdlS0hSIGNyZWF0ZUltYWdlS0hSKEVHTENvbnRleHQgY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xlbnVtIHRhcmdldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgYnVmZmVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpIGNvbnN0Owor
ICAgIEVHTEJvb2xlYW4gZGVzdHJveUltYWdlS0hSKEVHTEltYWdlS0hSIGltYWdlKSBjb25zdDsK
KworICAgIEVHTFN5bmNLSFIgY3JlYXRlU3luY0tIUihFR0xlbnVtIHR5cGUsIGNvbnN0IEVHTGlu
dCAqYXR0cmliX2xpc3QpOworICAgIEVHTEJvb2xlYW4gZGVzdHJveVN5bmNLSFIoRUdMU3luY0tI
UiBzeW5jKTsKKyAgICBFR0xpbnQgY2xpZW50V2FpdFN5bmNLSFIoRUdMU3luY0tIUiBzeW5jLCBF
R0xpbnQgZmxhZ3MsIEVHTFRpbWVLSFIgdGltZW91dCk7CisgICAgRUdMQm9vbGVhbiBnZXRTeW5j
QXR0cmliS0hSKEVHTFN5bmNLSFIgc3luYywgRUdMaW50IGF0dHJpYnV0ZSwgRUdMaW50ICp2YWx1
ZSk7CisKKyAgcHJpdmF0ZToKKyAgICAvLyBTbyBhcyB0byBpc29sYXRlIGZyb20gYW5nbGUgd2Ug
ZG8gbm90IGluY2x1ZGUgYW5nbGV1dGlscy5oIGFuZCBjYW5ub3QKKyAgICAvLyB1c2UgYW5nbGU6
Ok5vbkNvcHlhYmxlIHNvIHdlIHJlcGxpY2F0ZWQgaXQgaGVyZSBpbnN0ZWFkLgorICAgIEZ1bmN0
aW9uc0VHTChjb25zdCBGdW5jdGlvbnNFR0wgJikgPSBkZWxldGU7CisgICAgdm9pZCBvcGVyYXRv
cj0oY29uc3QgRnVuY3Rpb25zRUdMICYpID0gZGVsZXRlOworCisgICAgc3RydWN0IEVHTERpc3Bh
dGNoVGFibGU7CisgICAgRUdMRGlzcGF0Y2hUYWJsZSAqbUZuUHRyczsKKyAgICBFR0xEaXNwbGF5
IG1FR0xEaXNwbGF5OworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBtRXh0ZW5zaW9uczsK
K307Cit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9H
TF9DUk9TX0ZVTkNUSU9OU0VHTF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9GdW5jdGlvbnNFR0xETC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9G
dW5jdGlvbnNFR0xETC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9GdW5jdGlvbnNFR0xETC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw3NCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEZ1bmN0aW9uc0VH
TERMLmNwcDogSW1wbGVtZW50cyB0aGUgRnVuY3Rpb25zRUdMREwgY2xhc3MuCisKKyNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvRnVuY3Rpb25zRUdMREwuaCIKKworI2luY2x1ZGUg
PGRsZmNuLmg+CisKK25hbWVzcGFjZSByeAoreworCitEeW5hbWljTGliOjpEeW5hbWljTGliKCkg
OiBoYW5kbGUobnVsbHB0cikKK3sKK30KKworRHluYW1pY0xpYjo6fkR5bmFtaWNMaWIoKQorewor
ICAgIGlmIChoYW5kbGUpCisgICAgeworICAgICAgICBkbGNsb3NlKGhhbmRsZSk7CisgICAgICAg
IGhhbmRsZSA9IG51bGxwdHI7CisgICAgfQorfQorCisvLyBEdWUgdG8gYSBidWcgaW4gTWVzYSAo
b3IgbWF5YmUgbGliZGwpIGl0J3Mgbm90IHBvc3NpYmxlIHRvIGNsb3NlIGFuZCByZS1vcGVuIGxp
YkVHTC5zbworLy8gYW4gYXJiaXRyYXJ5IG51bWJlciBvZiB0aW1lcy4gIEVuZDJlbmQgdGVzdHMg
d291bGQgZGllIGFmdGVyIGEgY291cGxlIGh1bmRyZWQgdGVzdHMuCisvLyBTbyB3ZSB1c2UgYSBz
dGF0aWMgb2JqZWN0IHdpdGggYSBkZXN0cnVjdG9yIHRvIGNsb3NlIHRoZSBsaWJyYXJ5IHdoZW4g
dGhlIHByb2dyYW0gZXhpdHMuCisvLyBUT0RPKGZqaGVuaWdtYW4pIEZpbGUgYSBidWcgYW5kIHB1
dCBhIGxpbmsgaGVyZS4KK0R5bmFtaWNMaWIgRnVuY3Rpb25zRUdMREw6OnNOYXRpdmVMaWI7CisK
K0Z1bmN0aW9uc0VHTERMOjpGdW5jdGlvbnNFR0xETCgpIDogbUdldFByb2NBZGRyZXNzUHRyKG51
bGxwdHIpCit7Cit9CisKK0Z1bmN0aW9uc0VHTERMOjp+RnVuY3Rpb25zRUdMREwoKQoreworfQor
CitlZ2w6OkVycm9yIEZ1bmN0aW9uc0VHTERMOjppbml0aWFsaXplKEVHTE5hdGl2ZURpc3BsYXlU
eXBlIG5hdGl2ZURpc3BsYXksIGNvbnN0IGNoYXIgKmxpYk5hbWUpCit7CisgICAgaWYgKCFzTmF0
aXZlTGliLmhhbmRsZSkKKyAgICB7CisgICAgICAgIHNOYXRpdmVMaWIuaGFuZGxlID0gZGxvcGVu
KGxpYk5hbWUsIFJUTERfTk9XKTsKKyAgICAgICAgaWYgKCFzTmF0aXZlTGliLmhhbmRsZSkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX05PVF9JTklUSUFMSVpF
RCwgIkNvdWxkIG5vdCBkbG9wZW4gbmF0aXZlIEVHTDogJXMiLCBkbGVycm9yKCkpOworICAgICAg
ICB9CisgICAgfQorCisgICAgbUdldFByb2NBZGRyZXNzUHRyID0KKyAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDxQRk5FR0xHRVRQUk9DQUREUkVTU1BST0M+KGRsc3ltKHNOYXRpdmVMaWIuaGFuZGxl
LCAiZWdsR2V0UHJvY0FkZHJlc3MiKSk7CisgICAgaWYgKCFtR2V0UHJvY0FkZHJlc3NQdHIpCisg
ICAgeworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfTk9UX0lOSVRJQUxJWkVELCAiQ291
bGQgbm90IGZpbmQgZWdsR2V0UHJvY0FkZHJlc3MiKTsKKyAgICB9CisKKyAgICByZXR1cm4gRnVu
Y3Rpb25zRUdMOjppbml0aWFsaXplKG5hdGl2ZURpc3BsYXkpOworfQorCit2b2lkICpGdW5jdGlv
bnNFR0xETDo6Z2V0UHJvY0FkZHJlc3MoY29uc3QgY2hhciAqbmFtZSkgY29uc3QKK3sKKyAgICB2
b2lkICpmID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkICo+KG1HZXRQcm9jQWRkcmVzc1B0cihuYW1l
KSk7CisgICAgaWYgKGYpCisgICAgeworICAgICAgICByZXR1cm4gZjsKKyAgICB9CisgICAgcmV0
dXJuIGRsc3ltKHNOYXRpdmVMaWIuaGFuZGxlLCBuYW1lKTsKK30KKworfSAgLy8gbmFtZXNwYWNl
IHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvZWdsL0Z1bmN0aW9uc0VHTERMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9GdW5jdGlvbnNFR0xETC5oCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC9lZ2wvRnVuY3Rpb25zRUdMREwuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBA
CisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKworLy8gRnVuY3Rpb25zRUdMLmg6IEltcGxlbWVudHMgRnVuY3Rpb25z
RUdMIHdpdGggZGxvcGVuL2Rsc3ltL2RsY2xvc2UKKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJF
Ul9HTF9DUk9TX0ZVTkNUSU9OU0VHTERMX0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0dM
X0NST1NfRlVOQ1RJT05TRUdMRExfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2ds
L2VnbC9GdW5jdGlvbnNFR0wuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wv
ZnVuY3Rpb25zZWdsX3R5cGVkZWZzLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBEeW5h
bWljTGliIGZpbmFsCit7CisgIHB1YmxpYzoKKyAgICB2b2lkICpoYW5kbGU7CisKKyAgICBEeW5h
bWljTGliKCk7CisgICAgfkR5bmFtaWNMaWIoKTsKK307CisKK2NsYXNzIEZ1bmN0aW9uc0VHTERM
IDogcHVibGljIEZ1bmN0aW9uc0VHTAoreworICBwdWJsaWM6CisgICAgRnVuY3Rpb25zRUdMREwo
KTsKKyAgICB+RnVuY3Rpb25zRUdMREwoKSBvdmVycmlkZTsKKworICAgIGVnbDo6RXJyb3IgaW5p
dGlhbGl6ZShFR0xOYXRpdmVEaXNwbGF5VHlwZSBuYXRpdmVEaXNwbGF5LCBjb25zdCBjaGFyICps
aWJOYW1lKTsKKyAgICB2b2lkICpnZXRQcm9jQWRkcmVzcyhjb25zdCBjaGFyICpuYW1lKSBjb25z
dCBvdmVycmlkZTsKKworICBwcml2YXRlOgorICAgIFBGTkVHTEdFVFBST0NBRERSRVNTUFJPQyBt
R2V0UHJvY0FkZHJlc3NQdHI7CisgICAgc3RhdGljIER5bmFtaWNMaWIgc05hdGl2ZUxpYjsKK307
Cit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9HTF9D
Uk9TX0ZVTkNUSU9OU0VHTERMX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1BidWZmZXJTdXJmYWNlRUdMLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWds
L1BidWZmZXJTdXJmYWNlRUdMLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1BidWZmZXJTdXJmYWNlRUdMLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM5IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAy
MDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gUGJ1
ZmZlclN1cmZhY2VFR0wuaDogRUdMIGltcGxlbWVudGF0aW9uIG9mIGVnbDo6U3VyZmFjZSBmb3Ig
cGJ1ZmZlcnMKKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9QYnVmZmVyU3Vy
ZmFjZUVHTC5oIgorCituYW1lc3BhY2UgcngKK3sKKworUGJ1ZmZlclN1cmZhY2VFR0w6OlBidWZm
ZXJTdXJmYWNlRUdMKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGdW5jdGlvbnNFR0wgKmVnbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDb25maWcgY29uZmlnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEVHTGludD4g
JmF0dHJpYkxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ29u
dGV4dCBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRl
cmVyR0wgKnJlbmRlcmVyKQorICAgIDogU3VyZmFjZUVHTChzdGF0ZSwgZWdsLCBjb25maWcsIGF0
dHJpYkxpc3QsIGNvbnRleHQsIHJlbmRlcmVyKQoreworfQorCitQYnVmZmVyU3VyZmFjZUVHTDo6
flBidWZmZXJTdXJmYWNlRUdMKCkKK3sKK30KKworZWdsOjpFcnJvciBQYnVmZmVyU3VyZmFjZUVH
TDo6aW5pdGlhbGl6ZSgpCit7CisgICAgbVN1cmZhY2UgPSBtRUdMLT5jcmVhdGVQYnVmZmVyU3Vy
ZmFjZShtQ29uZmlnLCBtQXR0cmliTGlzdC5kYXRhKCkpOworICAgIGlmIChtU3VyZmFjZSA9PSBF
R0xfTk9fU1VSRkFDRSkKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKG1FR0wtPmdl
dEVycm9yKCksICJlZ2xDcmVhdGVQYnVmZmVyU3VyZmFjZSBmYWlsZWQiKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBy
eApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L2VnbC9QYnVmZmVyU3VyZmFjZUVHTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvUGJ1ZmZlclN1cmZhY2VFR0wuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvZWdsL1BidWZmZXJTdXJmYWNlRUdMLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwzNiBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFBidWZmZXJTdXJmYWNlRUdMLmg6IEVHTCBpbXBs
ZW1lbnRhdGlvbiBvZiBlZ2w6OlN1cmZhY2UgZm9yIHBidWZmZXJzCisKKyNpZm5kZWYgTElCQU5H
TEVfUkVOREVSRVJfR0xfRUdMX1BCVUZGRVJTVVJGQUNFRUdMX0hfCisjZGVmaW5lIExJQkFOR0xF
X1JFTkRFUkVSX0dMX0VHTF9QQlVGRkVSU1VSRkFDRUVHTF9IXworCisjaW5jbHVkZSA8dmVjdG9y
PgorI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2ds
L2VnbC9TdXJmYWNlRUdMLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBQYnVmZmVyU3Vy
ZmFjZUVHTCA6IHB1YmxpYyBTdXJmYWNlRUdMCit7CisgIHB1YmxpYzoKKyAgICBQYnVmZmVyU3Vy
ZmFjZUVHTChjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgRnVuY3Rpb25zRUdMICplZ2wsCisgICAgICAgICAgICAgICAgICAgICAgRUdM
Q29uZmlnIGNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxF
R0xpbnQ+ICZhdHRyaWJMaXN0LAorICAgICAgICAgICAgICAgICAgICAgIEVHTENvbnRleHQgY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJlckdMICpyZW5kZXJlcik7CisgICAg
flBidWZmZXJTdXJmYWNlRUdMKCkgb3ZlcnJpZGU7CisKKyAgICBlZ2w6OkVycm9yIGluaXRpYWxp
emUoKSBvdmVycmlkZTsKK307CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJ
QkFOR0xFX1JFTkRFUkVSX0dMX0VHTF9QQlVGRkVSU1VSRkFDRUVHTF9IXwpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9TdXJmYWNlRUdM
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvZWdsL1N1cmZhY2VFR0wuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvU3VyZmFjZUVHTC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzYgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMp
IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBT
dXJmYWNlRUdMLmNwcDogRUdMIGltcGxlbWVudGF0aW9uIG9mIGVnbDo6U3VyZmFjZQorCisjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1N1cmZhY2VFR0wuaCIKKworI2luY2x1ZGUg
ImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgcngKK3sKKworU3VyZmFjZUVHTDo6U3VyZmFj
ZUVHTChjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEZ1bmN0aW9uc0VHTCAqZWdsLAorICAgICAgICAgICAgICAgICAgICAgICBFR0xD
b25maWcgY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxF
R0xpbnQ+ICZhdHRyaWJMaXN0LAorICAgICAgICAgICAgICAgICAgICAgICBFR0xDb250ZXh0IGNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlcmVyR0wgKnJlbmRlcmVyKQorICAg
IDogU3VyZmFjZUdMKHN0YXRlLCByZW5kZXJlciksCisgICAgICBtRUdMKGVnbCksCisgICAgICBt
Q29uZmlnKGNvbmZpZyksCisgICAgICBtQXR0cmliTGlzdChhdHRyaWJMaXN0KSwKKyAgICAgIG1T
dXJmYWNlKEVHTF9OT19TVVJGQUNFKSwKKyAgICAgIG1Db250ZXh0KGNvbnRleHQpCit7Cit9CisK
K1N1cmZhY2VFR0w6On5TdXJmYWNlRUdMKCkKK3sKKyAgICBpZiAobVN1cmZhY2UgIT0gRUdMX05P
X1NVUkZBQ0UpCisgICAgeworICAgICAgICBFR0xCb29sZWFuIHN1Y2Nlc3MgPSBtRUdMLT5kZXN0
cm95U3VyZmFjZShtU3VyZmFjZSk7CisgICAgICAgIFVOVVNFRF9BU1NFUlRJT05fVkFSSUFCTEUo
c3VjY2Vzcyk7CisgICAgICAgIEFTU0VSVChzdWNjZXNzID09IEVHTF9UUlVFKTsKKyAgICB9Cit9
CisKK2VnbDo6RXJyb3IgU3VyZmFjZUVHTDo6bWFrZUN1cnJlbnQoKQoreworICAgIEVHTEJvb2xl
YW4gc3VjY2VzcyA9IG1FR0wtPm1ha2VDdXJyZW50KG1TdXJmYWNlLCBtQ29udGV4dCk7CisgICAg
aWYgKHN1Y2Nlc3MgPT0gRUdMX0ZBTFNFKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJy
b3IobUVHTC0+Z2V0RXJyb3IoKSwgImVnbE1ha2VDdXJyZW50IGZhaWxlZCIpOworICAgIH0KKyAg
ICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKK2VnbDo6RXJyb3IgU3VyZmFj
ZUVHTDo6c3dhcCgpCit7CisgICAgRUdMQm9vbGVhbiBzdWNjZXNzID0gbUVHTC0+c3dhcEJ1ZmZl
cnMobVN1cmZhY2UpOworICAgIGlmIChzdWNjZXNzID09IEVHTF9GQUxTRSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBlZ2w6OkVycm9yKG1FR0wtPmdldEVycm9yKCksICJlZ2xTd2FwQnVmZmVycyBm
YWlsZWQiKTsKKyAgICB9CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOworfQor
CitlZ2w6OkVycm9yIFN1cmZhY2VFR0w6OnBvc3RTdWJCdWZmZXIoRUdMaW50IHgsIEVHTGludCB5
LCBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfU1VSRkFDRSk7Cit9CisKK2VnbDo6RXJyb3Ig
U3VyZmFjZUVHTDo6cXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFKEVHTGludCBhdHRyaWJ1dGUsIHZv
aWQgKip2YWx1ZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGVnbDo6RXJy
b3IoRUdMX0JBRF9TVVJGQUNFKTsKK30KKworZWdsOjpFcnJvciBTdXJmYWNlRUdMOjpiaW5kVGV4
SW1hZ2UoZ2w6OlRleHR1cmUgKnRleHR1cmUsIEVHTGludCBidWZmZXIpCit7CisgICAgRUdMQm9v
bGVhbiBzdWNjZXNzID0gbUVHTC0+YmluZFRleEltYWdlKG1TdXJmYWNlLCBidWZmZXIpOworICAg
IGlmIChzdWNjZXNzID09IEVHTF9GQUxTRSkKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVy
cm9yKG1FR0wtPmdldEVycm9yKCksICJlZ2xCaW5kVGV4SW1hZ2UgZmFpbGVkIik7CisgICAgfQor
ICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKK30KKworZWdsOjpFcnJvciBTdXJm
YWNlRUdMOjpyZWxlYXNlVGV4SW1hZ2UoRUdMaW50IGJ1ZmZlcikKK3sKKyAgICBFR0xCb29sZWFu
IHN1Y2Nlc3MgPSBtRUdMLT5yZWxlYXNlVGV4SW1hZ2UobVN1cmZhY2UsIGJ1ZmZlcik7CisgICAg
aWYgKHN1Y2Nlc3MgPT0gRUdMX0ZBTFNFKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJy
b3IobUVHTC0+Z2V0RXJyb3IoKSwgImVnbFJlbGVhc2VUZXhJbWFnZSBmYWlsZWQiKTsKKyAgICB9
CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOworfQorCit2b2lkIFN1cmZhY2VF
R0w6OnNldFN3YXBJbnRlcnZhbChFR0xpbnQgaW50ZXJ2YWwpCit7CisgICAgRUdMQm9vbGVhbiBz
dWNjZXNzID0gbUVHTC0+c3dhcEludGVydmFsKGludGVydmFsKTsKKyAgICBpZiAoc3VjY2VzcyA9
PSBFR0xfRkFMU0UpCisgICAgeworICAgICAgICBFUlIoImVnbFN3YXBJbnRlcnZhbCBlcnJvciAw
eCUwNHgiLCBtRUdMLT5nZXRFcnJvcigpKTsKKyAgICAgICAgQVNTRVJUKGZhbHNlKTsKKyAgICB9
Cit9CisKK0VHTGludCBTdXJmYWNlRUdMOjpnZXRXaWR0aCgpIGNvbnN0Cit7CisgICAgRUdMaW50
IHZhbHVlOworICAgIEVHTEJvb2xlYW4gc3VjY2VzcyA9IG1FR0wtPnF1ZXJ5U3VyZmFjZShtU3Vy
ZmFjZSwgRUdMX1dJRFRILCAmdmFsdWUpOworICAgIFVOVVNFRF9BU1NFUlRJT05fVkFSSUFCTEUo
c3VjY2Vzcyk7CisgICAgQVNTRVJUKHN1Y2Nlc3MgPT0gRUdMX1RSVUUpOworICAgIHJldHVybiB2
YWx1ZTsKK30KKworRUdMaW50IFN1cmZhY2VFR0w6OmdldEhlaWdodCgpIGNvbnN0Cit7CisgICAg
RUdMaW50IHZhbHVlOworICAgIEVHTEJvb2xlYW4gc3VjY2VzcyA9IG1FR0wtPnF1ZXJ5U3VyZmFj
ZShtU3VyZmFjZSwgRUdMX0hFSUdIVCwgJnZhbHVlKTsKKyAgICBVTlVTRURfQVNTRVJUSU9OX1ZB
UklBQkxFKHN1Y2Nlc3MpOworICAgIEFTU0VSVChzdWNjZXNzID09IEVHTF9UUlVFKTsKKyAgICBy
ZXR1cm4gdmFsdWU7Cit9CisKK0VHTGludCBTdXJmYWNlRUdMOjppc1Bvc3RTdWJCdWZmZXJTdXBw
b3J0ZWQoKSBjb25zdAoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gMDsKK30K
KworRUdMaW50IFN1cmZhY2VFR0w6OmdldFN3YXBCZWhhdmlvcigpIGNvbnN0Cit7CisgICAgRUdM
aW50IHZhbHVlOworICAgIEVHTEJvb2xlYW4gc3VjY2VzcyA9IG1FR0wtPnF1ZXJ5U3VyZmFjZSht
U3VyZmFjZSwgRUdMX1NXQVBfQkVIQVZJT1IsICZ2YWx1ZSk7CisgICAgVU5VU0VEX0FTU0VSVElP
Tl9WQVJJQUJMRShzdWNjZXNzKTsKKyAgICBBU1NFUlQoc3VjY2VzcyA9PSBFR0xfVFJVRSk7Cisg
ICAgcmV0dXJuIHZhbHVlOworfQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvU3VyZmFjZUVHTC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC9lZ2wvU3VyZmFjZUVHTC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvU3VyZmFjZUVHTC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNTUgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBTdXJmYWNlRUdM
Lmg6IGNvbW1vbiBpbnRlcmZhY2UgZm9yIEVHTCBzdXJmYWNlcworCisjaWZuZGVmIExJQkFOR0xF
X1JFTkRFUkVSX0dMX0VHTF9TVVJGQUNFRUdMX0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVS
X0dMX0VHTF9TVVJGQUNFRUdMX0hfCisKKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisKKyNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9nbC9TdXJmYWNlR0wuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9nbC9lZ2wvRnVuY3Rpb25zRUdMLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFz
cyBTdXJmYWNlRUdMIDogcHVibGljIFN1cmZhY2VHTAoreworICBwdWJsaWM6CisgICAgU3VyZmFj
ZUVHTChjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICBjb25z
dCBGdW5jdGlvbnNFR0wgKmVnbCwKKyAgICAgICAgICAgICAgIEVHTENvbmZpZyBjb25maWcsCisg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxFR0xpbnQ+ICZhdHRyaWJMaXN0LAorICAg
ICAgICAgICAgICAgRUdMQ29udGV4dCBjb250ZXh0LAorICAgICAgICAgICAgICAgUmVuZGVyZXJH
TCAqcmVuZGVyZXIpOworICAgIH5TdXJmYWNlRUdMKCkgb3ZlcnJpZGU7CisKKyAgICBlZ2w6OkVy
cm9yIG1ha2VDdXJyZW50KCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBzd2FwKCkgb3ZlcnJp
ZGU7CisgICAgZWdsOjpFcnJvciBwb3N0U3ViQnVmZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdM
aW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIHF1ZXJ5
U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUpIG92ZXJy
aWRlOworICAgIGVnbDo6RXJyb3IgYmluZFRleEltYWdlKGdsOjpUZXh0dXJlICp0ZXh0dXJlLCBF
R0xpbnQgYnVmZmVyKSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIHJlbGVhc2VUZXhJbWFnZShF
R0xpbnQgYnVmZmVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFN3YXBJbnRlcnZhbChFR0xpbnQg
aW50ZXJ2YWwpIG92ZXJyaWRlOworICAgIEVHTGludCBnZXRXaWR0aCgpIGNvbnN0IG92ZXJyaWRl
OworICAgIEVHTGludCBnZXRIZWlnaHQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBFR0xpbnQgaXNQ
b3N0U3ViQnVmZmVyU3VwcG9ydGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRUdMaW50IGdldFN3
YXBCZWhhdmlvcigpIGNvbnN0IG92ZXJyaWRlOworCisgIHByb3RlY3RlZDoKKyAgICBjb25zdCBG
dW5jdGlvbnNFR0wgKm1FR0w7CisgICAgRUdMQ29uZmlnIG1Db25maWc7CisgICAgc3RkOjp2ZWN0
b3I8RUdMaW50PiBtQXR0cmliTGlzdDsKKyAgICBFR0xTdXJmYWNlIG1TdXJmYWNlOworCisgIHBy
aXZhdGU6CisgICAgRUdMQ29udGV4dCBtQ29udGV4dDsKK307CisKK30gIC8vIG5hbWVzcGFjZSBy
eAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX0dMX0VHTF9TVVJGQUNFRUdMX0hfCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWds
L1dpbmRvd1N1cmZhY2VFR0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvV2luZG93U3VyZmFjZUVHTC5jcHAJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL2VnbC9XaW5kb3dTdXJmYWNlRUdMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQwIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gV2luZG93U3VyZmFjZUVHTC5oOiBFR0wgaW1wbGVt
ZW50YXRpb24gb2YgZWdsOjpTdXJmYWNlIGZvciB3aW5kb3dzCisKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9nbC9lZ2wvV2luZG93U3VyZmFjZUVHTC5oIgorCituYW1lc3BhY2UgcngKK3sK
KworV2luZG93U3VyZmFjZUVHTDo6V2luZG93U3VyZmFjZUVHTChjb25zdCBlZ2w6OlN1cmZhY2VT
dGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZ1
bmN0aW9uc0VHTCAqZWdsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xD
b25maWcgY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xOYXRp
dmVXaW5kb3dUeXBlIHdpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8RUdMaW50PiAmYXR0cmliTGlzdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRUdMQ29udGV4dCBjb250ZXh0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSZW5kZXJlckdMICpyZW5kZXJlcikKKyAgICA6IFN1cmZhY2VFR0wo
c3RhdGUsIGVnbCwgY29uZmlnLCBhdHRyaWJMaXN0LCBjb250ZXh0LCByZW5kZXJlciksIG1XaW5k
b3cod2luZG93KQoreworfQorCitXaW5kb3dTdXJmYWNlRUdMOjp+V2luZG93U3VyZmFjZUVHTCgp
Cit7Cit9CisKK2VnbDo6RXJyb3IgV2luZG93U3VyZmFjZUVHTDo6aW5pdGlhbGl6ZSgpCit7Cisg
ICAgbVN1cmZhY2UgPSBtRUdMLT5jcmVhdGVXaW5kb3dTdXJmYWNlKG1Db25maWcsIG1XaW5kb3cs
IG1BdHRyaWJMaXN0LmRhdGEoKSk7CisgICAgaWYgKG1TdXJmYWNlID09IEVHTF9OT19TVVJGQUNF
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IobUVHTC0+Z2V0RXJyb3IoKSwgImVn
bENyZWF0ZVdpbmRvd1N1cmZhY2UgZmFpbGVkIik7CisgICAgfQorCisgICAgcmV0dXJuIGVnbDo6
RXJyb3IoRUdMX1NVQ0NFU1MpOworfQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvV2luZG93U3Vy
ZmFjZUVHTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9lZ2wvV2luZG93U3VyZmFjZUVHTC5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvV2lu
ZG93U3VyZmFjZUVHTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzcgQEAKKy8vCisvLyBD
b3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisvLworCisvLyBXaW5kb3dTdXJmYWNlRUdMLmg6IEVHTCBpbXBsZW1lbnRhdGlvbiBvZiBlZ2w6
OlN1cmZhY2UgZm9yIHdpbmRvd3MKKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9HTF9FR0xf
V0lORE9XU1VSRkFDRUVHTF9IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9HTF9FR0xfV0lO
RE9XU1VSRkFDRUVHTF9IXworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1N1
cmZhY2VFR0wuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIFdpbmRvd1N1cmZhY2VFR0wg
OiBwdWJsaWMgU3VyZmFjZUVHTAoreworICBwdWJsaWM6CisgICAgV2luZG93U3VyZmFjZUVHTChj
b25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICBjb25z
dCBGdW5jdGlvbnNFR0wgKmVnbCwKKyAgICAgICAgICAgICAgICAgICAgIEVHTENvbmZpZyBjb25m
aWcsCisgICAgICAgICAgICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKKyAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEVHTGludD4gJmF0dHJpYkxpc3Qs
CisgICAgICAgICAgICAgICAgICAgICBFR0xDb250ZXh0IGNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICBSZW5kZXJlckdMICpyZW5kZXJlcik7CisgICAgfldpbmRvd1N1cmZhY2VFR0woKSBv
dmVycmlkZTsKKworICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOworCisgIHBy
aXZhdGU6CisgICAgRUdMTmF0aXZlV2luZG93VHlwZSBtV2luZG93OworfTsKKworfSAgLy8gbmFt
ZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfR0xfRUdMX1dJTkRPV1NV
UkZBQ0VFR0xfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9lZ2wvZnVuY3Rpb25zZWdsX3R5cGVkZWZzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9mdW5jdGlv
bnNlZ2xfdHlwZWRlZnMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL2Z1bmN0aW9uc2VnbF90eXBlZGVmcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMxIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gZnVuY3Rp
b25zZWdsX3R5cGVkZWZzLmg6IFR5cGVkZWZzIG9mIEVHTCBmdW5jdGlvbnMuCisKKyNpZm5kZWYg
TElCQU5HTEVfUkVOREVSRVJfR0xfRUdMX0ZVTkNUSU9OU0VHTFRZUEVERUZTX0hfCisjZGVmaW5l
IExJQkFOR0xFX1JFTkRFUkVSX0dMX0VHTF9GVU5DVElPTlNFR0xUWVBFREVGU19IXworCisjaW5j
bHVkZSA8RUdML2VnbC5oPgorCituYW1lc3BhY2UgcngKK3sKKy8vIEVHTCAxLjAKK3R5cGVkZWYg
RUdMQm9vbGVhbiAoKlBGTkVHTENIT09TRUNPTkZJR1BST0MpKEVHTERpc3BsYXkgZHB5LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRUdMaW50ICph
dHRyaWJfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVHTENvbmZpZyAqY29uZmlncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVHTGludCBjb25maWdfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVHTGludCAqbnVtX2NvbmZpZyk7Cit0eXBlZGVmIEVHTEJvb2xl
YW4gKCpQRk5FR0xDT1BZQlVGRkVSU1BST0MpKEVHTERpc3BsYXkgZHB5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xTdXJmYWNlIHN1cmZhY2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2ZVBpeG1hcFR5
cGUgdGFyZ2V0KTsKK3R5cGVkZWYgRUdMQ29udGV4dCAoKlBGTkVHTENSRUFURUNPTlRFWFRQUk9D
KShFR0xEaXNwbGF5IGRweSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFR0xDb25maWcgY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEVHTENvbnRleHQgc2hhcmVfY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0
KTsKK3R5cGVkZWYgRUdMU3VyZmFjZSAoKlBGTkVHTENSRUFURVBCVUZGRVJTVVJGQUNFUFJPQyko
RUdMRGlzcGxheSBkcHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVHTENvbmZpZyBjb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpOwor
dHlwZWRlZiBFR0xTdXJmYWNlICgqUEZORUdMQ1JFQVRFUElYTUFQU1VSRkFDRVBST0MpKEVHTERp
c3BsYXkgZHB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVHTENvbmZpZyBjb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRUdMTmF0aXZlUGl4bWFwVHlwZSBwaXhtYXAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRUdMaW50
ICphdHRyaWJfbGlzdCk7Cit0eXBlZGVmIEVHTFN1cmZhY2UgKCpQRk5FR0xDUkVBVEVXSU5ET1dT
VVJGQUNFUFJPQykoRUdMRGlzcGxheSBkcHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ29uZmlnIGNvbmZpZywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBl
IHdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0KTsKK3R5cGVkZWYgRUdMQm9vbGVhbiAoKlBGTkVH
TERFU1RST1lDT05URVhUUFJPQykoRUdMRGlzcGxheSBkcHksIEVHTENvbnRleHQgY3R4KTsKK3R5
cGVkZWYgRUdMQm9vbGVhbiAoKlBGTkVHTERFU1RST1lTVVJGQUNFUFJPQykoRUdMRGlzcGxheSBk
cHksIEVHTFN1cmZhY2Ugc3VyZmFjZSk7Cit0eXBlZGVmIEVHTEJvb2xlYW4gKCpQRk5FR0xHRVRD
T05GSUdBVFRSSUJQUk9DKShFR0xEaXNwbGF5IGRweSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENvbmZpZyBjb25maWcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgYXR0cmlidXRlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50ICp2YWx1
ZSk7Cit0eXBlZGVmIEVHTEJvb2xlYW4gKCpQRk5FR0xHRVRDT05GSUdTUFJPQykoRUdMRGlzcGxh
eSBkcHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ29u
ZmlnICpjb25maWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVHTGludCBjb25maWdfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFR0xpbnQgKm51bV9jb25maWcpOwordHlwZWRlZiBFR0xEaXNwbGF5ICgqUEZORUdM
R0VUQ1VSUkVOVERJU1BMQVlQUk9DKSh2b2lkKTsKK3R5cGVkZWYgRUdMU3VyZmFjZSAoKlBGTkVH
TEdFVENVUlJFTlRTVVJGQUNFUFJPQykoRUdMaW50IHJlYWRkcmF3KTsKK3R5cGVkZWYgRUdMRGlz
cGxheSAoKlBGTkVHTEdFVERJU1BMQVlQUk9DKShFR0xOYXRpdmVEaXNwbGF5VHlwZSBkaXNwbGF5
X2lkKTsKK3R5cGVkZWYgRUdMaW50ICgqUEZORUdMR0VURVJST1JQUk9DKSh2b2lkKTsKK3R5cGVk
ZWYgX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSAoKlBGTkVHTEdFVFBS
T0NBRERSRVNTUFJPQykoY29uc3QgY2hhciAqcHJvY25hbWUpOwordHlwZWRlZiBFR0xCb29sZWFu
ICgqUEZORUdMSU5JVElBTElaRVBST0MpKEVHTERpc3BsYXkgZHB5LCBFR0xpbnQgKm1ham9yLCBF
R0xpbnQgKm1pbm9yKTsKK3R5cGVkZWYgRUdMQm9vbGVhbiAoKlBGTkVHTE1BS0VDVVJSRU5UUFJP
QykoRUdMRGlzcGxheSBkcHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVHTFN1cmZhY2UgZHJhdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRUdMU3VyZmFjZSByZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFR0xDb250ZXh0IGN0eCk7Cit0eXBlZGVmIEVHTEJvb2xlYW4gKCpQ
Rk5FR0xRVUVSWUNPTlRFWFRQUk9DKShFR0xEaXNwbGF5IGRweSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENvbnRleHQgY3R4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGF0dHJpYnV0ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCAqdmFsdWUpOwor
dHlwZWRlZiBjb25zdCBjaGFyICooKlBGTkVHTFFVRVJZU1RSSU5HUFJPQykoRUdMRGlzcGxheSBk
cHksIEVHTGludCBuYW1lKTsKK3R5cGVkZWYgRUdMQm9vbGVhbiAoKlBGTkVHTFFVRVJZU1VSRkFD
RVBST0MpKEVHTERpc3BsYXkgZHB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRUdMU3VyZmFjZSBzdXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCAqdmFsdWUpOwordHlwZWRlZiBFR0xC
b29sZWFuICgqUEZORUdMU1dBUEJVRkZFUlNQUk9DKShFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFj
ZSBzdXJmYWNlKTsKK3R5cGVkZWYgRUdMQm9vbGVhbiAoKlBGTkVHTFRFUk1JTkFURVBST0MpKEVH
TERpc3BsYXkgZHB5KTsKK3R5cGVkZWYgRUdMQm9vbGVhbiAoKlBGTkVHTFdBSVRHTFBST0MpKHZv
aWQpOwordHlwZWRlZiBFR0xCb29sZWFuICgqUEZORUdMV0FJVE5BVElWRVBST0MpKEVHTGludCBl
bmdpbmUpOworCisvLyBFR0wgMS4xCit0eXBlZGVmIEVHTEJvb2xlYW4gKCpQRk5FR0xCSU5EVEVY
SU1BR0VQUk9DKShFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xpbnQgYnVm
ZmVyKTsKK3R5cGVkZWYgRUdMQm9vbGVhbiAoKlBGTkVHTFJFTEVBU0VURVhJTUFHRVBST0MpKEVH
TERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTGludCBidWZmZXIpOwordHlwZWRl
ZiBFR0xCb29sZWFuICgqUEZORUdMU1VSRkFDRUFUVFJJQlBST0MpKEVHTERpc3BsYXkgZHB5LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTFN1cmZhY2Ug
c3VyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
R0xpbnQgYXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVHTGludCB2YWx1ZSk7Cit0eXBlZGVmIEVHTEJvb2xlYW4gKCpQRk5FR0xTV0FQSU5U
RVJWQUxQUk9DKShFR0xEaXNwbGF5IGRweSwgRUdMaW50IGludGVydmFsKTsKKworLy8gRUdMIDEu
MgordHlwZWRlZiBFR0xCb29sZWFuICgqUEZORUdMQklOREFQSVBST0MpKEVHTGVudW0gYXBpKTsK
K3R5cGVkZWYgRUdMZW51bSAoKlBGTkVHTFFVRVJZQVBJUFJPQykodm9pZCk7Cit0eXBlZGVmIEVH
TFN1cmZhY2UgKCpQRk5FR0xDUkVBVEVQQlVGRkVSRlJPTUNMSUVOVEJVRkZFUlBST0MpKEVHTERp
c3BsYXkgZHB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFR0xlbnVtIGJ1ZnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBi
dWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVHTENvbmZpZyBjb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVHTGludCAqYXR0cmli
X2xpc3QpOwordHlwZWRlZiBFR0xCb29sZWFuICgqUEZORUdMUkVMRUFTRVRIUkVBRFBST0MpKHZv
aWQpOwordHlwZWRlZiBFR0xCb29sZWFuICgqUEZORUdMV0FJVENMSUVOVFBST0MpKHZvaWQpOwor
CisvLyBFR0wgMS4zCisKKy8vIEVHTCAxLjQKK3R5cGVkZWYgRUdMQ29udGV4dCAoKlBGTkVHTEdF
VENVUlJFTlRDT05URVhUUFJPQykodm9pZCk7CisKKy8vIEVHTCAxLjUKK3R5cGVkZWYgRUdMU3lu
YyAoKlBGTkVHTENSRUFURVNZTkNQUk9DKShFR0xEaXNwbGF5IGRweSwgRUdMZW51bSB0eXBlLCBj
b25zdCBFR0xBdHRyaWIgKmF0dHJpYl9saXN0KTsKK3R5cGVkZWYgRUdMQm9vbGVhbiAoKlBGTkVH
TERFU1RST1lTWU5DUFJPQykoRUdMRGlzcGxheSBkcHksIEVHTFN5bmMgc3luYyk7Cit0eXBlZGVm
IEVHTGludCAoKlBGTkVHTENMSUVOVFdBSVRTWU5DUFJPQykoRUdMRGlzcGxheSBkcHksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMU3luYyBzeW5jLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBmbGFncywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xUaW1lIHRpbWVvdXQp
OwordHlwZWRlZiBFR0xCb29sZWFuICgqUEZORUdMR0VUU1lOQ0FUVFJJQlBST0MpKEVHTERpc3Bs
YXkgZHB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVH
TFN5bmMgc3luYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBFR0xpbnQgYXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVHTEF0dHJpYiAqdmFsdWUpOwordHlwZWRlZiBFR0xJbWFnZSAoKlBGTkVHTENS
RUFURUlNQUdFUFJPQykoRUdMRGlzcGxheSBkcHksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFR0xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIGJ1ZmZlciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVHTEF0dHJpYiAqYXR0cmliX2xp
c3QpOwordHlwZWRlZiBFR0xCb29sZWFuICgqUEZORUdMREVTVFJPWUlNQUdFUFJPQykoRUdMRGlz
cGxheSBkcHksIEVHTEltYWdlIGltYWdlKTsKK3R5cGVkZWYgRUdMRGlzcGxheSAoKlBGTkVHTEdF
VFBMQVRGT1JNRElTUExBWVBST0MpKEVHTGVudW0gcGxhdGZvcm0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpuYXRpdmVfZGlzcGxheSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEVHTEF0dHJpYiAqYXR0cmliX2xpc3QpOwordHlwZWRlZiBFR0xTdXJmYWNlICgqUEZORUdMQ1JF
QVRFUExBVEZPUk1XSU5ET1dTVVJGQUNFUFJPQykoRUdMRGlzcGxheSBkcHksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDb25m
aWcgY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdm9pZCAqbmF0aXZlX3dpbmRvdywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVHTEF0dHJpYiAq
YXR0cmliX2xpc3QpOwordHlwZWRlZiBFR0xTdXJmYWNlICgqUEZORUdMQ1JFQVRFUExBVEZPUk1Q
SVhNQVBTVVJGQUNFUFJPQykoRUdMRGlzcGxheSBkcHksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDb25maWcgY29uZmlnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdm9pZCAqbmF0aXZlX3BpeG1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVHTEF0dHJpYiAqYXR0cmliX2xpc3Qp
OwordHlwZWRlZiBFR0xCb29sZWFuICgqUEZORUdMV0FJVFNZTkNQUk9DKShFR0xEaXNwbGF5IGRw
eSwgRUdMU3luYyBzeW5jLCBFR0xpbnQgZmxhZ3MpOworCit9ICAvLyBuYW1lc3BhY2UgcngKKwor
I2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9HTF9FR0xfRlVOQ1RJT05TRUdMVFlQRURFRlNf
SF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9lZ2wvYW5kcm9pZC9EaXNwbGF5QW5kcm9pZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9hbmRyb2lkL0Rpc3Bs
YXlBbmRyb2lkLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL2FuZHJvaWQvRGlzcGxheUFuZHJvaWQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzg4IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gRGlzcGxh
eUFuZHJvaWQuY3BwOiBBbmRyb2lkIGltcGxlbWVudGF0aW9uIG9mIGVnbDo6RGlzcGxheQorCisj
aW5jbHVkZSA8YW5kcm9pZC9uYXRpdmVfd2luZG93Lmg+CisKKyNpbmNsdWRlICJjb21tb24vZGVi
dWcuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9EaXNwbGF5LmgiCisjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZ2wvcmVuZGVyZXJnbF91dGlscy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL2dsL2VnbC9hbmRyb2lkL0Rpc3BsYXlBbmRyb2lkLmgiCisjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZ2wvZWdsL0Z1bmN0aW9uc0VHTERMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvZ2wvZWdsL1BidWZmZXJTdXJmYWNlRUdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvZ2wvZWdsL1dpbmRvd1N1cmZhY2VFR0wuaCIKKworbmFtZXNwYWNlCit7Citjb25zdCBj
aGFyICpHZXRFR0xQYXRoKCkKK3sKKyNpZiBkZWZpbmVkKF9fTFA2NF9fKQorICAgIHJldHVybiAi
L3N5c3RlbS9saWI2NC9saWJFR0wuc28iOworI2Vsc2UKKyAgICByZXR1cm4gIi9zeXN0ZW0vbGli
L2xpYkVHTC5zbyI7CisjZW5kaWYKK30KK30gIC8vIG5hbWVzcGFjZQorCituYW1lc3BhY2UgcngK
K3sKKworRGlzcGxheUFuZHJvaWQ6OkRpc3BsYXlBbmRyb2lkKCkgOiBEaXNwbGF5RUdMKCksIG1E
dW1teVBidWZmZXIoRUdMX05PX1NVUkZBQ0UpCit7Cit9CisKK0Rpc3BsYXlBbmRyb2lkOjp+RGlz
cGxheUFuZHJvaWQoKQoreworfQorCitlZ2w6OkVycm9yIERpc3BsYXlBbmRyb2lkOjppbml0aWFs
aXplKGVnbDo6RGlzcGxheSAqZGlzcGxheSkKK3sKKyAgICBGdW5jdGlvbnNFR0xETCAqZWdsID0g
bmV3IEZ1bmN0aW9uc0VHTERMKCk7CisgICAgbUVHTCA9IGVnbDsKKyAgICBBTkdMRV9UUlkoZWds
LT5pbml0aWFsaXplKGRpc3BsYXktPmdldE5hdGl2ZURpc3BsYXlJZCgpLCBHZXRFR0xQYXRoKCkp
KTsKKworICAgIGdsOjpWZXJzaW9uIGVnbFZlcnNpb24obUVHTC0+bWFqb3JWZXJzaW9uLCBtRUdM
LT5taW5vclZlcnNpb24pOworICAgIEFTU0VSVChlZ2xWZXJzaW9uID49IGdsOjpWZXJzaW9uKDEs
IDQpKTsKKworICAgIHN0YXRpY19hc3NlcnQoRUdMX09QRU5HTF9FUzNfQklUID09IEVHTF9PUEVO
R0xfRVMzX0JJVF9LSFIsICJFeHRlbnNpb24gZGVmaW5lIG11c3QgbWF0Y2ggY29yZSIpOworICAg
IEVHTGludCBlc0JpdCA9IChlZ2xWZXJzaW9uID49IGdsOjpWZXJzaW9uKDEsIDUpIHx8IG1FR0wt
Pmhhc0V4dGVuc2lvbigiRUdMX0tIUl9jcmVhdGVfY29udGV4dCIpKQorICAgICAgICAgICAgICAg
ICAgICAgICA/IEVHTF9PUEVOR0xfRVMzX0JJVAorICAgICAgICAgICAgICAgICAgICAgICA6IEVH
TF9PUEVOR0xfRVMyX0JJVDsKKworICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgICBtQ29uZmln
QXR0cmliTGlzdCA9CisgICAgeworICAgICAgICAvLyBDaG9vc2UgUkdCQTg4ODgKKyAgICAgICAg
RUdMX0NPTE9SX0JVRkZFUl9UWVBFLCBFR0xfUkdCX0JVRkZFUiwKKyAgICAgICAgRUdMX1JFRF9T
SVpFLCA4LAorICAgICAgICBFR0xfR1JFRU5fU0laRSwgOCwKKyAgICAgICAgRUdMX0JMVUVfU0la
RSwgOCwKKyAgICAgICAgRUdMX0FMUEhBX1NJWkUsIDgsCisgICAgICAgIC8vIEVHTDEuNSBzcGVj
IFNlY3Rpb24gMi4yIHNheXMgdGhhdCBkZXB0aCwgbXVsdGlzYW1wbGUgYW5kIHN0ZW5jaWwgYnVm
ZmVyIGRlcHRocworICAgICAgICAvLyBtdXN0IG1hdGNoIGZvciBjb250ZXh0cyB0byBiZSBjb21w
YXRpYmxlLgorICAgICAgICBFR0xfREVQVEhfU0laRSwgMjQsCisgICAgICAgIEVHTF9TVEVOQ0lM
X1NJWkUsIDgsCisgICAgICAgIEVHTF9TQU1QTEVfQlVGRkVSUywgMCwKKyAgICAgICAgLy8gQW5k
cm9pZCBkb2Vzbid0IHN1cHBvcnQgcGl4bWFwcworICAgICAgICBFR0xfU1VSRkFDRV9UWVBFLCBF
R0xfV0lORE9XX0JJVCB8IEVHTF9QQlVGRkVSX0JJVCwKKyAgICAgICAgRUdMX0NPTkZJR19DQVZF
QVQsIEVHTF9OT05FLAorICAgICAgICBFR0xfQ09ORk9STUFOVCwgZXNCaXQsCisgICAgICAgIEVH
TF9SRU5ERVJBQkxFX1RZUEUsIGVzQml0LAorICAgICAgICBFR0xfTk9ORQorICAgIH07CisgICAg
Ly8gY2xhbmctZm9ybWF0IG9uCisgICAgRUdMaW50IG51bUNvbmZpZzsKKworICAgIEVHTEJvb2xl
YW4gc3VjY2VzcyA9IG1FR0wtPmNob29zZUNvbmZpZyhtQ29uZmlnQXR0cmliTGlzdC5kYXRhKCks
ICZtQ29uZmlnLCAxLCAmbnVtQ29uZmlnKTsKKyAgICBpZiAoc3VjY2VzcyA9PSBFR0xfRkFMU0Up
CisgICAgeworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihtRUdMLT5nZXRFcnJvcigpLCAiZWds
Q2hvb3NlQ29uZmlnIGZhaWxlZCIpOworICAgIH0KKworICAgIEFOR0xFX1RSWShpbml0aWFsaXpl
Q29udGV4dChkaXNwbGF5LT5nZXRBdHRyaWJ1dGVNYXAoKSkpOworCisgICAgaW50IGR1bW15UGJ1
ZmZlckF0dHJpYnNbXSA9IHsKKyAgICAgICAgRUdMX1dJRFRILCAxLCBFR0xfSEVJR0hULCAxLCBF
R0xfTk9ORSwKKyAgICB9OworICAgIG1EdW1teVBidWZmZXIgPSBtRUdMLT5jcmVhdGVQYnVmZmVy
U3VyZmFjZShtQ29uZmlnLCBkdW1teVBidWZmZXJBdHRyaWJzKTsKKyAgICBpZiAobUR1bW15UGJ1
ZmZlciA9PSBFR0xfTk9fU1VSRkFDRSkKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVycm9y
KG1FR0wtPmdldEVycm9yKCksICJlZ2xDcmVhdGVQYnVmZmVyU3VyZmFjZSBmYWlsZWQiKTsKKyAg
ICB9CisKKyAgICBzdWNjZXNzID0gbUVHTC0+bWFrZUN1cnJlbnQobUR1bW15UGJ1ZmZlciwgbUNv
bnRleHQpOworICAgIGlmIChzdWNjZXNzID09IEVHTF9GQUxTRSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBlZ2w6OkVycm9yKG1FR0wtPmdldEVycm9yKCksICJlZ2xNYWtlQ3VycmVudCBmYWlsZWQi
KTsKKyAgICB9CisKKyAgICBtRnVuY3Rpb25zR0wgPSBtRUdMLT5tYWtlRnVuY3Rpb25zR0woKTsK
KyAgICBtRnVuY3Rpb25zR0wtPmluaXRpYWxpemUoKTsKKworICAgIHJldHVybiBEaXNwbGF5R0w6
OmluaXRpYWxpemUoZGlzcGxheSk7Cit9CisKK3ZvaWQgRGlzcGxheUFuZHJvaWQ6OnRlcm1pbmF0
ZSgpCit7CisgICAgRGlzcGxheUdMOjp0ZXJtaW5hdGUoKTsKKworICAgIEVHTEJvb2xlYW4gc3Vj
Y2VzcyA9IG1FR0wtPm1ha2VDdXJyZW50KEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7
CisgICAgaWYgKHN1Y2Nlc3MgPT0gRUdMX0ZBTFNFKQorICAgIHsKKyAgICAgICAgRVJSKCJlZ2xN
YWtlQ3VycmVudCBlcnJvciAweCUwNHgiLCBtRUdMLT5nZXRFcnJvcigpKTsKKyAgICB9CisKKyAg
ICBpZiAobUR1bW15UGJ1ZmZlciAhPSBFR0xfTk9fU1VSRkFDRSkKKyAgICB7CisgICAgICAgIHN1
Y2Nlc3MgPSBtRUdMLT5kZXN0cm95U3VyZmFjZShtRHVtbXlQYnVmZmVyKTsKKyAgICAgICAgbUR1
bW15UGJ1ZmZlciA9IEVHTF9OT19TVVJGQUNFOworICAgICAgICBpZiAoc3VjY2VzcyA9PSBFR0xf
RkFMU0UpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiZWdsRGVzdHJveVN1cmZhY2UgZXJy
b3IgMHglMDR4IiwgbUVHTC0+Z2V0RXJyb3IoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAobUNvbnRleHQgIT0gRUdMX05PX0NPTlRFWFQpCisgICAgeworICAgICAgICBzdWNjZXNzID0g
bUVHTC0+ZGVzdHJveUNvbnRleHQobUNvbnRleHQpOworICAgICAgICBtQ29udGV4dCA9IEVHTF9O
T19DT05URVhUOworICAgICAgICBpZiAoc3VjY2VzcyA9PSBFR0xfRkFMU0UpCisgICAgICAgIHsK
KyAgICAgICAgICAgIEVSUigiZWdsRGVzdHJveUNvbnRleHQgZXJyb3IgMHglMDR4IiwgbUVHTC0+
Z2V0RXJyb3IoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBlZ2w6OkVycm9yIHJlc3VsdCA9
IG1FR0wtPnRlcm1pbmF0ZSgpOworICAgIGlmIChyZXN1bHQuaXNFcnJvcigpKQorICAgIHsKKyAg
ICAgICAgRVJSKCJlZ2xUZXJtaW5hdGUgZXJyb3IgMHglMDR4IiwgcmVzdWx0LmdldENvZGUoKSk7
CisgICAgfQorCisgICAgU2FmZURlbGV0ZShtRUdMKTsKKyAgICBTYWZlRGVsZXRlKG1GdW5jdGlv
bnNHTCk7Cit9CisKK1N1cmZhY2VJbXBsICpEaXNwbGF5QW5kcm9pZDo6Y3JlYXRlV2luZG93U3Vy
ZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3Vy
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCit7
CisgICAgRUdMQ29uZmlnIGNvbmZpZzsKKyAgICBFR0xpbnQgbnVtQ29uZmlnOworICAgIEVHTEJv
b2xlYW4gc3VjY2VzczsKKworICAgIGNvbnN0IEVHTGludCBjb25maWdBdHRyaWJMaXN0W10gPSB7
RUdMX0NPTkZJR19JRCwgbUNvbmZpZ0lkc1tjb25maWd1cmF0aW9uLT5jb25maWdJRF0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfTk9ORX07CisgICAgc3VjY2Vz
cyA9IG1FR0wtPmNob29zZUNvbmZpZyhjb25maWdBdHRyaWJMaXN0LCAmY29uZmlnLCAxLCAmbnVt
Q29uZmlnKTsKKyAgICBBU1NFUlQoc3VjY2VzcyAmJiBudW1Db25maWcgPT0gMSk7CisgICAgVU5V
U0VEX0FTU0VSVElPTl9WQVJJQUJMRShzdWNjZXNzKTsKKworICAgIHJldHVybiBuZXcgV2luZG93
U3VyZmFjZUVHTChzdGF0ZSwgbUVHTCwgY29uZmlnLCB3aW5kb3csIGF0dHJpYnMudG9JbnRWZWN0
b3IoKSwgbUNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFJlbmRl
cmVyKCkpOworfQorCitTdXJmYWNlSW1wbCAqRGlzcGxheUFuZHJvaWQ6OmNyZWF0ZVBidWZmZXJT
dXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZp
Z3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQoreworICAgIEVHTENvbmZpZyBj
b25maWc7CisgICAgRUdMaW50IG51bUNvbmZpZzsKKyAgICBFR0xCb29sZWFuIHN1Y2Nlc3M7CisK
KyAgICBjb25zdCBFR0xpbnQgY29uZmlnQXR0cmliTGlzdFtdID0ge0VHTF9DT05GSUdfSUQsIG1D
b25maWdJZHNbY29uZmlndXJhdGlvbi0+Y29uZmlnSURdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRUdMX05PTkV9OworICAgIHN1Y2Nlc3MgPSBtRUdMLT5jaG9vc2VD
b25maWcoY29uZmlnQXR0cmliTGlzdCwgJmNvbmZpZywgMSwgJm51bUNvbmZpZyk7CisgICAgQVNT
RVJUKHN1Y2Nlc3MgJiYgbnVtQ29uZmlnID09IDEpOworICAgIFVOVVNFRF9BU1NFUlRJT05fVkFS
SUFCTEUoc3VjY2Vzcyk7CisKKyAgICByZXR1cm4gbmV3IFBidWZmZXJTdXJmYWNlRUdMKHN0YXRl
LCBtRUdMLCBjb25maWcsIGF0dHJpYnMudG9JbnRWZWN0b3IoKSwgbUNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRSZW5kZXJlcigpKTsKK30KKworU3VyZmFjZUlt
cGwgKkRpc3BsYXlBbmRyb2lkOjpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihjb25zdCBl
Z2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFR0xDbGllbnRCdWZmZXIgc2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmli
dXRlTWFwICZhdHRyaWJzKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworU3VyZmFjZUltcGwgKkRpc3BsYXlBbmRyb2lkOjpjcmVhdGVQaXhtYXBTdXJm
YWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO
YXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykK
K3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0ltYWdl
SW1wbCAqRGlzcGxheUFuZHJvaWQ6OmNyZWF0ZUltYWdlKEVHTGVudW0gdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpJbWFnZVNpYmxpbmcgKmJ1ZmZl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0
cmlidXRlTWFwICZhdHRyaWJzKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4g
RGlzcGxheUdMOjpjcmVhdGVJbWFnZSh0YXJnZXQsIGJ1ZmZlciwgYXR0cmlicyk7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBEaXNwbGF5QW5kcm9pZDo6Z2V0Q29uZmlnQXR0cmli
KEVHTENvbmZpZyBjb25maWcsIEVHTGludCBhdHRyaWJ1dGUsIFQgKnZhbHVlKSBjb25zdAorewor
ICAgIEVHTGludCB0bXA7CisgICAgRUdMQm9vbGVhbiBzdWNjZXNzID0gbUVHTC0+Z2V0Q29uZmln
QXR0cmliKGNvbmZpZywgYXR0cmlidXRlLCAmdG1wKTsKKyAgICBBU1NFUlQoc3VjY2VzcyA9PSBF
R0xfVFJVRSk7CisgICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRShzdWNjZXNzKTsKKyAgICAq
dmFsdWUgPSB0bXA7Cit9CisKK2VnbDo6Q29uZmlnU2V0IERpc3BsYXlBbmRyb2lkOjpnZW5lcmF0
ZUNvbmZpZ3MoKQoreworICAgIGVnbDo6Q29uZmlnU2V0IGNvbmZpZ1NldDsKKyAgICBtQ29uZmln
SWRzLmNsZWFyKCk7CisKKyAgICBFR0xpbnQgbnVtQ29uZmlnczsKKyAgICBFR0xCb29sZWFuIHN1
Y2Nlc3MgPSBtRUdMLT5jaG9vc2VDb25maWcobUNvbmZpZ0F0dHJpYkxpc3QuZGF0YSgpLCBudWxs
cHRyLCAwLCAmbnVtQ29uZmlncyk7CisgICAgQVNTRVJUKHN1Y2Nlc3MgPT0gRUdMX1RSVUUgJiYg
bnVtQ29uZmlncyA+IDApOworCisgICAgc3RkOjp2ZWN0b3I8RUdMQ29uZmlnPiBjb25maWdzKG51
bUNvbmZpZ3MpOworICAgIEVHTGludCBudW1Db25maWdzMjsKKyAgICBzdWNjZXNzID0KKyAgICAg
ICAgbUVHTC0+Y2hvb3NlQ29uZmlnKG1Db25maWdBdHRyaWJMaXN0LmRhdGEoKSwgY29uZmlncy5k
YXRhKCksIG51bUNvbmZpZ3MsICZudW1Db25maWdzMik7CisgICAgQVNTRVJUKHN1Y2Nlc3MgPT0g
RUdMX1RSVUUgJiYgbnVtQ29uZmlnczIgPT0gbnVtQ29uZmlncyk7CisgICAgVU5VU0VEX0FTU0VS
VElPTl9WQVJJQUJMRShzdWNjZXNzKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ29u
ZmlnczsgaSsrKQorICAgIHsKKyAgICAgICAgZWdsOjpDb25maWcgY29uZmlnOworCisgICAgICAg
IGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xfQlVGRkVSX1NJWkUsICZjb25maWcuYnVm
ZmVyU2l6ZSk7CisgICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xfUkVEX1NJ
WkUsICZjb25maWcucmVkU2l6ZSk7CisgICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ld
LCBFR0xfR1JFRU5fU0laRSwgJmNvbmZpZy5ncmVlblNpemUpOworICAgICAgICBnZXRDb25maWdB
dHRyaWIoY29uZmlnc1tpXSwgRUdMX0JMVUVfU0laRSwgJmNvbmZpZy5ibHVlU2l6ZSk7CisgICAg
ICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xfTFVNSU5BTkNFX1NJWkUsICZjb25m
aWcubHVtaW5hbmNlU2l6ZSk7CisgICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ldLCBF
R0xfQUxQSEFfU0laRSwgJmNvbmZpZy5hbHBoYVNpemUpOworICAgICAgICBnZXRDb25maWdBdHRy
aWIoY29uZmlnc1tpXSwgRUdMX0FMUEhBX01BU0tfU0laRSwgJmNvbmZpZy5hbHBoYU1hc2tTaXpl
KTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9CSU5EX1RPX1RFWFRV
UkVfUkdCLCAmY29uZmlnLmJpbmRUb1RleHR1cmVSR0IpOworICAgICAgICBnZXRDb25maWdBdHRy
aWIoY29uZmlnc1tpXSwgRUdMX0JJTkRfVE9fVEVYVFVSRV9SR0JBLCAmY29uZmlnLmJpbmRUb1Rl
eHR1cmVSR0JBKTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9DT0xP
Ul9CVUZGRVJfVFlQRSwgJmNvbmZpZy5jb2xvckJ1ZmZlclR5cGUpOworICAgICAgICBnZXRDb25m
aWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX0NPTkZJR19DQVZFQVQsICZjb25maWcuY29uZmlnQ2F2
ZWF0KTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9DT05GSUdfSUQs
ICZjb25maWcuY29uZmlnSUQpOworICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwg
RUdMX0NPTkZPUk1BTlQsICZjb25maWcuY29uZm9ybWFudCk7CisgICAgICAgIGdldENvbmZpZ0F0
dHJpYihjb25maWdzW2ldLCBFR0xfREVQVEhfU0laRSwgJmNvbmZpZy5kZXB0aFNpemUpOworICAg
ICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX0xFVkVMLCAmY29uZmlnLmxldmVs
KTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9NQVhfUEJVRkZFUl9X
SURUSCwgJmNvbmZpZy5tYXhQQnVmZmVyV2lkdGgpOworICAgICAgICBnZXRDb25maWdBdHRyaWIo
Y29uZmlnc1tpXSwgRUdMX01BWF9QQlVGRkVSX0hFSUdIVCwgJmNvbmZpZy5tYXhQQnVmZmVySGVp
Z2h0KTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9NQVhfUEJVRkZF
Ul9QSVhFTFMsICZjb25maWcubWF4UEJ1ZmZlclBpeGVscyk7CisgICAgICAgIGdldENvbmZpZ0F0
dHJpYihjb25maWdzW2ldLCBFR0xfTUFYX1NXQVBfSU5URVJWQUwsICZjb25maWcubWF4U3dhcElu
dGVydmFsKTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9NSU5fU1dB
UF9JTlRFUlZBTCwgJmNvbmZpZy5taW5Td2FwSW50ZXJ2YWwpOworICAgICAgICBnZXRDb25maWdB
dHRyaWIoY29uZmlnc1tpXSwgRUdMX05BVElWRV9SRU5ERVJBQkxFLCAmY29uZmlnLm5hdGl2ZVJl
bmRlcmFibGUpOworICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX05BVElW
RV9WSVNVQUxfSUQsICZjb25maWcubmF0aXZlVmlzdWFsSUQpOworICAgICAgICBnZXRDb25maWdB
dHRyaWIoY29uZmlnc1tpXSwgRUdMX05BVElWRV9WSVNVQUxfVFlQRSwgJmNvbmZpZy5uYXRpdmVW
aXN1YWxUeXBlKTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9SRU5E
RVJBQkxFX1RZUEUsICZjb25maWcucmVuZGVyYWJsZVR5cGUpOworICAgICAgICBnZXRDb25maWdB
dHRyaWIoY29uZmlnc1tpXSwgRUdMX1NBTVBMRV9CVUZGRVJTLCAmY29uZmlnLnNhbXBsZUJ1ZmZl
cnMpOworICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX1NBTVBMRVMsICZj
b25maWcuc2FtcGxlcyk7CisgICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xf
U1RFTkNJTF9TSVpFLCAmY29uZmlnLnN0ZW5jaWxTaXplKTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0
cmliKGNvbmZpZ3NbaV0sIEVHTF9TVVJGQUNFX1RZUEUsICZjb25maWcuc3VyZmFjZVR5cGUpOwor
ICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX1RSQU5TUEFSRU5UX1RZUEUs
ICZjb25maWcudHJhbnNwYXJlbnRUeXBlKTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZp
Z3NbaV0sIEVHTF9UUkFOU1BBUkVOVF9SRURfVkFMVUUsICZjb25maWcudHJhbnNwYXJlbnRSZWRW
YWx1ZSk7CisgICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xfVFJBTlNQQVJF
TlRfR1JFRU5fVkFMVUUsICZjb25maWcudHJhbnNwYXJlbnRHcmVlblZhbHVlKTsKKyAgICAgICAg
Z2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9UUkFOU1BBUkVOVF9CTFVFX1ZBTFVFLCAm
Y29uZmlnLnRyYW5zcGFyZW50Qmx1ZVZhbHVlKTsKKworICAgICAgICBpZiAoY29uZmlnLmNvbG9y
QnVmZmVyVHlwZSA9PSBFR0xfUkdCX0JVRkZFUikKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KGNvbmZpZy5yZWRTaXplID09IDggJiYgY29uZmlnLmdyZWVuU2l6ZSA9PSA4ICYmIGNvbmZpZy5i
bHVlU2l6ZSA9PSA4ICYmCisgICAgICAgICAgICAgICAgY29uZmlnLmFscGhhU2l6ZSA9PSA4KQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbmZpZy5yZW5kZXJUYXJnZXRGb3JtYXQg
PSBHTF9SR0JBODsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGNvbmZpZy5y
ZWRTaXplID09IDggJiYgY29uZmlnLmdyZWVuU2l6ZSA9PSA4ICYmIGNvbmZpZy5ibHVlU2l6ZSA9
PSA4ICYmCisgICAgICAgICAgICAgICAgICAgICBjb25maWcuYWxwaGFTaXplID09IDApCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uZmlnLnJlbmRlclRhcmdldEZvcm1hdCA9IEdM
X1JHQjg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjb25maWcucmVkU2l6
ZSA9PSA1ICYmIGNvbmZpZy5ncmVlblNpemUgPT0gNiAmJiBjb25maWcuYmx1ZVNpemUgPT0gNSAm
JgorICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmFscGhhU2l6ZSA9PSAwKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGNvbmZpZy5yZW5kZXJUYXJnZXRGb3JtYXQgPSBHTF9SR0I1
NjU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoY29uZmlnLmRlcHRoU2l6ZSA9PSAwICYmIGNvbmZpZy5zdGVuY2ls
U2l6ZSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBjb25maWcuZGVwdGhTdGVuY2lsRm9y
bWF0ID0gR0xfWkVSTzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChjb25maWcuZGVwdGhT
aXplID09IDE2ICYmIGNvbmZpZy5zdGVuY2lsU2l6ZSA9PSAwKQorICAgICAgICB7CisgICAgICAg
ICAgICBjb25maWcuZGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEhfQ09NUE9ORU5UMTY7Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoY29uZmlnLmRlcHRoU2l6ZSA9PSAyNCAmJiBjb25m
aWcuc3RlbmNpbFNpemUgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgY29uZmlnLmRlcHRo
U3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVOVDI0OworICAgICAgICB9CisgICAgICAg
IGVsc2UgaWYgKGNvbmZpZy5kZXB0aFNpemUgPT0gMjQgJiYgY29uZmlnLnN0ZW5jaWxTaXplID09
IDgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbmZpZy5kZXB0aFN0ZW5jaWxGb3JtYXQgPSBH
TF9ERVBUSDI0X1NURU5DSUw4OworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGNvbmZpZy5k
ZXB0aFNpemUgPT0gMCAmJiBjb25maWcuc3RlbmNpbFNpemUgPT0gOCkKKyAgICAgICAgeworICAg
ICAgICAgICAgY29uZmlnLmRlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX1NURU5DSUxfSU5ERVg4Owor
ICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbmZpZy5tYXRjaE5hdGl2ZVBpeG1hcCA9IEVH
TF9OT05FOworICAgICAgICBjb25maWcub3B0aW1hbE9yaWVudGF0aW9uID0gMDsKKworICAgICAg
ICBpbnQgaW50ZXJuYWxJZCA9IGNvbmZpZ1NldC5hZGQoY29uZmlnKTsKKyAgICAgICAgbUNvbmZp
Z0lkc1tpbnRlcm5hbElkXSA9IGNvbmZpZy5jb25maWdJRDsKKyAgICB9CisKKyAgICByZXR1cm4g
Y29uZmlnU2V0OworfQorCitib29sIERpc3BsYXlBbmRyb2lkOjp0ZXN0RGV2aWNlTG9zdCgpCit7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitlZ2w6OkVycm9yIERpc3BsYXlBbmRyb2lkOjpyZXN0
b3JlTG9zdERldmljZSgpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBlZ2w6
OkVycm9yKEVHTF9TVUNDRVNTKTsKK30KKworYm9vbCBEaXNwbGF5QW5kcm9pZDo6aXNWYWxpZE5h
dGl2ZVdpbmRvdyhFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdykgY29uc3QKK3sKKyAgICByZXR1
cm4gQU5hdGl2ZVdpbmRvd19nZXRGb3JtYXQod2luZG93KSA+PSAwOworfQorCitlZ2w6OkVycm9y
IERpc3BsYXlBbmRyb2lkOjpnZXREZXZpY2UoRGV2aWNlSW1wbCAqKmRldmljZSkKK3sKKyAgICBV
TklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOworfQor
CitlZ2w6OkVycm9yIERpc3BsYXlBbmRyb2lkOjp3YWl0Q2xpZW50KCkgY29uc3QKK3sKKyAgICBV
TklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOworfQor
CitlZ2w6OkVycm9yIERpc3BsYXlBbmRyb2lkOjp3YWl0TmF0aXZlKEVHTGludCBlbmdpbmUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3VyZmFjZSAqZHJhd1N1
cmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3VyZmFj
ZSAqcmVhZFN1cmZhY2UpIGNvbnN0Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVy
biBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKK30KKworZWdsOjpFcnJvciBEaXNwbGF5QW5kcm9p
ZDo6Z2V0RHJpdmVyVmVyc2lvbihzdGQ6OnN0cmluZyAqdmVyc2lvbikgY29uc3QKK3sKKyAgICBW
ZW5kb3JJRCB2ZW5kb3IgPSBHZXRWZW5kb3JJRChtRnVuY3Rpb25zR0wpOworCisgICAgc3dpdGNo
ICh2ZW5kb3IpCisgICAgeworICAgICAgICBjYXNlIFZFTkRPUl9JRF9RVUFMQ09NTToKKyAgICAg
ICAgICAgICp2ZXJzaW9uID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KG1GdW5jdGlv
bnNHTC0+Z2V0U3RyaW5nKEdMX1ZFUlNJT04pKTsKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OkVy
cm9yKEVHTF9TVUNDRVNTKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICp2ZXJzaW9u
ID0gIiI7CisgICAgICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CisgICAg
fQorfQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvYW5kcm9pZC9EaXNwbGF5QW5kcm9pZC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC9lZ2wvYW5kcm9pZC9EaXNwbGF5QW5kcm9pZC5oCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvYW5kcm9pZC9E
aXNwbGF5QW5kcm9pZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzcgQEAKKy8vCisvLyBD
b3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisvLworCisvLyBEaXNwbGF5QW5kcm9pZC5oOiBBbmRyb2lkIGltcGxlbWVudGF0aW9uIG9mIGVn
bDo6RGlzcGxheQorCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0dMX0VHTF9BTkRST0lEX0RJ
U1BMQVlBTkRST0lEX0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0dMX0VHTF9BTkRST0lE
X0RJU1BMQVlBTkRST0lEX0hfCisKKyNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8c3RyaW5nPgor
I2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9E
aXNwbGF5RUdMLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBEaXNwbGF5QW5kcm9pZCA6
IHB1YmxpYyBEaXNwbGF5RUdMCit7CisgIHB1YmxpYzoKKyAgICBEaXNwbGF5QW5kcm9pZCgpOwor
ICAgIH5EaXNwbGF5QW5kcm9pZCgpIG92ZXJyaWRlOworCisgICAgZWdsOjpFcnJvciBpbml0aWFs
aXplKGVnbDo6RGlzcGxheSAqZGlzcGxheSkgb3ZlcnJpZGU7CisgICAgdm9pZCB0ZXJtaW5hdGUo
KSBvdmVycmlkZTsKKworICAgIFN1cmZhY2VJbXBsICpjcmVhdGVXaW5kb3dTdXJmYWNlKGNvbnN0
IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAm
YXR0cmlicykgb3ZlcnJpZGU7CisgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBidWZmZXJTdXJmYWNl
KGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZh
dHRyaWJzKSBvdmVycmlkZTsKKyAgICBTdXJmYWNlSW1wbCAqY3JlYXRlUGJ1ZmZlckZyb21DbGll
bnRCdWZmZXIoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmln
dXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RUdMQ2xpZW50QnVmZmVyIHNoYXJlSGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3Zl
cnJpZGU7CisgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBpeG1hcFN1cmZhY2UoY29uc3QgZWdsOjpT
dXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5hdGl2ZVBpeG1hcFR5cGUgbmF0aXZlUGl4bWFwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRy
aWJzKSBvdmVycmlkZTsKKworICAgIEltYWdlSW1wbCAqY3JlYXRlSW1hZ2UoRUdMZW51bSB0YXJn
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OkltYWdlU2libGluZyAqYnVmZmVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0
dHJpYnMpIG92ZXJyaWRlOworCisgICAgZWdsOjpDb25maWdTZXQgZ2VuZXJhdGVDb25maWdzKCkg
b3ZlcnJpZGU7CisKKyAgICBib29sIHRlc3REZXZpY2VMb3N0KCkgb3ZlcnJpZGU7CisgICAgZWds
OjpFcnJvciByZXN0b3JlTG9zdERldmljZSgpIG92ZXJyaWRlOworCisgICAgYm9vbCBpc1ZhbGlk
TmF0aXZlV2luZG93KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KSBjb25zdCBvdmVycmlkZTsK
KworICAgIGVnbDo6RXJyb3IgZ2V0RGV2aWNlKERldmljZUltcGwgKipkZXZpY2UpIG92ZXJyaWRl
OworCisgICAgZWdsOjpFcnJvciB3YWl0Q2xpZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgZWds
OjpFcnJvciB3YWl0TmF0aXZlKEVHTGludCBlbmdpbmUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVnbDo6U3VyZmFjZSAqZHJhd1N1cmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGVnbDo6U3VyZmFjZSAqcmVhZFN1cmZhY2UpIGNvbnN0IG92ZXJyaWRlOworCisgICAgZWdsOjpF
cnJvciBnZXREcml2ZXJWZXJzaW9uKHN0ZDo6c3RyaW5nICp2ZXJzaW9uKSBjb25zdCBvdmVycmlk
ZTsKKworICBwcml2YXRlOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgZ2V0
Q29uZmlnQXR0cmliKEVHTENvbmZpZyBjb25maWcsIEVHTGludCBhdHRyaWJ1dGUsIFQgKnZhbHVl
KSBjb25zdDsKKworICAgIHN0ZDo6dmVjdG9yPEVHTGludD4gbUNvbmZpZ0F0dHJpYkxpc3Q7Cisg
ICAgc3RkOjptYXA8RUdMaW50LCBFR0xpbnQ+IG1Db25maWdJZHM7CisgICAgRUdMU3VyZmFjZSBt
RHVtbXlQYnVmZmVyOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gTElC
QU5HTEVfUkVOREVSRVJfR0xfRUdMX0FORFJPSURfRElTUExBWUFORFJPSURfSF8KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvb3pvbmUv
RGlzcGxheU96b25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL296b25lL0Rpc3BsYXlPem9uZS5jcHAJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL2VnbC9vem9uZS9EaXNwbGF5T3pvbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
OTQ0IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gRGlzcGxheU96b25lLmNwcDogT3pvbmUgaW1wbGVt
ZW50YXRpb24gb2YgZWdsOjpEaXNwbGF5CisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9n
bC9lZ2wvb3pvbmUvRGlzcGxheU96b25lLmgiCisKKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1
ZGUgPHBvbGwuaD4KKyNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNp
bmNsdWRlIDxzeXMvdGltZS5oPgorCisjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgorCisjaW5jbHVk
ZSA8Z2JtLmg+CisjaW5jbHVkZSA8ZHJtX2ZvdXJjYy5oPgorCisjaW5jbHVkZSAiY29tbW9uL2Rl
YnVnLmgiCisjaW5jbHVkZSAibGliQU5HTEUvQ29uZmlnLmgiCisjaW5jbHVkZSAibGliQU5HTEUv
RGlzcGxheS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1N1cmZhY2UuaCIKKyNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9nbC9GcmFtZWJ1ZmZlckdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvZ2wvUmVuZGVyZXJHTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1N0
YXRlTWFuYWdlckdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Z1bmN0
aW9uc0VHTERMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL296b25lL1N1
cmZhY2VPem9uZS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1BsYXRmb3JtLmgiCisKKy8vIEFSTS1z
cGVjaWZpYyBleHRlbnNpb24gbmVlZGVkIHRvIG1ha2UgTWFsaSBHUFUgYmVoYXZlIC0gbm90IGlu
IGFueQorLy8gcHVibGlzaGVkIGhlYWRlciBmaWxlLgorI2lmbmRlZiBFR0xfU1lOQ19QUklPUl9D
T01NQU5EU19JTVBMSUNJVF9FWFRFUk5BTF9BUk0KKyNkZWZpbmUgRUdMX1NZTkNfUFJJT1JfQ09N
TUFORFNfSU1QTElDSVRfRVhURVJOQUxfQVJNIDB4MzI4QQorI2VuZGlmCisKKyNpZm5kZWYgRUdM
X05PX0NPTkZJR19NRVNBCisjZGVmaW5lIEVHTF9OT19DT05GSUdfTUVTQSAoKEVHTENvbmZpZykw
KQorI2VuZGlmCisKK25hbWVzcGFjZQoreworCitFR0xpbnQgVW5zaWduZWRUb1NpZ25lZCh1aW50
MzJfdCB1KQoreworICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBFR0xpbnQgKj4o
JnUpOworfQorCitkcm1Nb2RlTW9kZUluZm9QdHIgQ2hvb3NlTW9kZShkcm1Nb2RlQ29ubmVjdG9y
UHRyIGNvbm4pCit7CisgICAgZHJtTW9kZU1vZGVJbmZvUHRyIG1vZGUgPSBudWxscHRyOworICAg
IEFTU0VSVChjb25uKTsKKyAgICBBU1NFUlQoY29ubi0+Y29ubmVjdGlvbiA9PSBEUk1fTU9ERV9D
T05ORUNURUQpOworICAgIC8vIHVzZSBmaXJzdCBwcmVmZXJyZWQgbW9kZSBpZiBhbnksIGVsc2Ug
ZW5kIHVwIHdpdGggbGFzdCBtb2RlIGluIGxpc3QKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNv
bm4tPmNvdW50X21vZGVzOyArK2kpCisgICAgeworICAgICAgICBtb2RlID0gY29ubi0+bW9kZXMg
KyBpOworICAgICAgICBpZiAobW9kZS0+dHlwZSAmIERSTV9NT0RFX1RZUEVfUFJFRkVSUkVEKQor
ICAgICAgICB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1
cm4gbW9kZTsKK30KKworaW50IENob29zZUNSVEMoaW50IGZkLCBkcm1Nb2RlQ29ubmVjdG9yUHRy
IGNvbm4pCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb25uLT5jb3VudF9lbmNvZGVyczsg
KytpKQorICAgIHsKKyAgICAgICAgZHJtTW9kZUVuY29kZXJQdHIgZW5jID0gZHJtTW9kZUdldEVu
Y29kZXIoZmQsIGNvbm4tPmVuY29kZXJzW2ldKTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBjcnRj
cyA9IGVuYy0+cG9zc2libGVfY3J0Y3M7CisgICAgICAgIGRybU1vZGVGcmVlRW5jb2RlcihlbmMp
OworICAgICAgICBpZiAoY3J0Y3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBfX2J1
aWx0aW5fY3R6bChjcnRjcyk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIC0xOworfQor
fSAgLy8gbmFtZXNwYWNlCisKK25hbWVzcGFjZSByeAoreworCisvLyBUT0RPKGZqaGVuaWdtYW4p
IEltcGxlbWVudCBzd2FwIGNvbnRyb2wuICBVbnRpbCB0aGVuIHRoaXMgaXMgdW51c2VkLgorU3dh
cENvbnRyb2xEYXRhOjpTd2FwQ29udHJvbERhdGEoKQorICAgIDogdGFyZ2V0U3dhcEludGVydmFs
KDApLCBtYXhTd2FwSW50ZXJ2YWwoLTEpLCBjdXJyZW50U3dhcEludGVydmFsKC0xKQoreworfQor
CitEaXNwbGF5T3pvbmU6OkJ1ZmZlcjo6QnVmZmVyKERpc3BsYXlPem9uZSAqZGlzcGxheSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdXNlRmxhZ3MsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGdibUZvcm1hdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDMyX3QgZHJtRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50MzJfdCBkcm1Gb3JtYXRGQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IGRlcHRoQml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0ZW5jaWxC
aXRzKQorICAgIDogbURpc3BsYXkoZGlzcGxheSksCisgICAgICBtTmF0aXZlKG51bGxwdHIpLAor
ICAgICAgbVdpZHRoKDApLAorICAgICAgbUhlaWdodCgwKSwKKyAgICAgIG1EZXB0aEJpdHMoZGVw
dGhCaXRzKSwKKyAgICAgIG1TdGVuY2lsQml0cyhzdGVuY2lsQml0cyksCisgICAgICBtVXNlRmxh
Z3ModXNlRmxhZ3MpLAorICAgICAgbUdCTUZvcm1hdChnYm1Gb3JtYXQpLAorICAgICAgbURSTUZv
cm1hdChkcm1Gb3JtYXQpLAorICAgICAgbURSTUZvcm1hdEZCKGRybUZvcm1hdEZCKSwKKyAgICAg
IG1CTyhudWxscHRyKSwKKyAgICAgIG1ETUFCdWYoLTEpLAorICAgICAgbUhhc0RSTUZCKGZhbHNl
KSwKKyAgICAgIG1EUk1GQigwKSwKKyAgICAgIG1JbWFnZShFR0xfTk9fSU1BR0VfS0hSKSwKKyAg
ICAgIG1Db2xvckJ1ZmZlcigwKSwKKyAgICAgIG1EU0J1ZmZlcigwKSwKKyAgICAgIG1HTEZCKDAp
LAorICAgICAgbVRleHR1cmUoMCkKK3sKK30KKworRGlzcGxheU96b25lOjpCdWZmZXI6On5CdWZm
ZXIoKQoreworICAgIG1EaXNwbGF5LT5tRnVuY3Rpb25zR0wtPmRlbGV0ZUZyYW1lYnVmZmVycygx
LCAmbUdMRkIpOworICAgIHJlc2V0KCk7Cit9CisKK3ZvaWQgRGlzcGxheU96b25lOjpCdWZmZXI6
OnJlc2V0KCkKK3sKKyAgICBpZiAobUhhc0RSTUZCKQorICAgIHsKKyAgICAgICAgaW50IGZkID0g
Z2JtX2RldmljZV9nZXRfZmQobURpc3BsYXktPm1HQk0pOworICAgICAgICBkcm1Nb2RlUm1GQihm
ZCwgbURSTUZCKTsKKyAgICAgICAgbUhhc0RSTUZCID0gZmFsc2U7CisgICAgfQorCisgICAgRnVu
Y3Rpb25zR0wgKmdsID0gbURpc3BsYXktPm1GdW5jdGlvbnNHTDsKKyAgICBnbC0+ZGVsZXRlUmVu
ZGVyYnVmZmVycygxLCAmbUNvbG9yQnVmZmVyKTsKKyAgICBtQ29sb3JCdWZmZXIgPSAwOworICAg
IGdsLT5kZWxldGVSZW5kZXJidWZmZXJzKDEsICZtRFNCdWZmZXIpOworICAgIG1EU0J1ZmZlciA9
IDA7CisKKyAgICAvLyBIZXJlIHdlIG1pZ2h0IGRlc3Ryb3kgdGhlIEdMIGZyYW1lYnVmZmVyICht
R0xGQikgYnV0IHVubGlrZSBldmVyeSBvdGhlciByZXNvdXJjZSBpbiBCdWZmZXIsCisgICAgLy8g
aXQgZG9lcyBub3QgZ2V0IGRlc3Ryb3llZCAoYW5kIHJlY3JlYXRlZCkgYmVjYXVzZSB3aGVuIGl0
IGlzIHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyIGZvcgorICAgIC8vIGFuIEFOR0xFIHN1cmZhY2Ug
dGhlbiBBTkdMRSBleHBlY3RzIGl0IHRvIGhhdmUgdGhlIHNhbWUgbGlmZXRpbWUgYXMgdGhhdCBz
dXJmYWNlLgorCisgICAgaWYgKG1JbWFnZSAhPSBFR0xfTk9fSU1BR0VfS0hSKQorICAgIHsKKyAg
ICAgICAgbURpc3BsYXktPm1FR0wtPmRlc3Ryb3lJbWFnZUtIUihtSW1hZ2UpOworICAgICAgICBt
SW1hZ2UgPSBFR0xfTk9fSU1BR0VfS0hSOworICAgIH0KKworICAgIGlmIChtVGV4dHVyZSkKKyAg
ICB7CisgICAgICAgIGdsLT5kZWxldGVUZXh0dXJlcygxLCAmbVRleHR1cmUpOworICAgICAgICBt
VGV4dHVyZSA9IDA7CisgICAgfQorCisgICAgaWYgKG1ETUFCdWYgPj0gMCkKKyAgICB7CisgICAg
ICAgIGNsb3NlKG1ETUFCdWYpOworICAgICAgICBtRE1BQnVmID0gLTE7CisgICAgfQorCisgICAg
aWYgKG1CTykKKyAgICB7CisgICAgICAgIGdibV9ib19kZXN0cm95KG1CTyk7CisgICAgICAgIG1C
TyA9IG51bGxwdHI7CisgICAgfQorfQorCitib29sIERpc3BsYXlPem9uZTo6QnVmZmVyOjpyZXNp
emUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCit7CisgICAgaWYgKG1XaWR0aCA9PSB3
aWR0aCAmJiBtSGVpZ2h0ID09IGhlaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIHJlc2V0KCk7CisKKyAgICBpZiAod2lkdGggPD0gMCB8fCBoZWlnaHQgPD0g
MCkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIG1CTyA9IGdibV9i
b19jcmVhdGUobURpc3BsYXktPm1HQk0sIHdpZHRoLCBoZWlnaHQsIG1HQk1Gb3JtYXQsIG1Vc2VG
bGFncyk7CisgICAgaWYgKCFtQk8pCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgbURNQUJ1ZiA9IGdibV9ib19nZXRfZmQobUJPKTsKKyAgICBpZiAobURNQUJ1ZiA8
IDApCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gY2xhbmct
Zm9ybWF0IG9mZgorICAgIGNvbnN0IEVHTGludCBhdHRyW10gPQorICAgIHsKKyAgICAgICAgRUdM
X1dJRFRILCB3aWR0aCwKKyAgICAgICAgRUdMX0hFSUdIVCwgaGVpZ2h0LAorICAgICAgICBFR0xf
TElOVVhfRFJNX0ZPVVJDQ19FWFQsIFVuc2lnbmVkVG9TaWduZWQobURSTUZvcm1hdCksCisgICAg
ICAgIEVHTF9ETUFfQlVGX1BMQU5FMF9GRF9FWFQsIG1ETUFCdWYsCisgICAgICAgIEVHTF9ETUFf
QlVGX1BMQU5FMF9QSVRDSF9FWFQsIFVuc2lnbmVkVG9TaWduZWQoZ2JtX2JvX2dldF9zdHJpZGUo
bUJPKSksCisgICAgICAgIEVHTF9ETUFfQlVGX1BMQU5FMF9PRkZTRVRfRVhULCAwLAorICAgICAg
ICBFR0xfTk9ORSwKKyAgICB9OworICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorCisgICAgbUltYWdl
ID0gbURpc3BsYXktPm1FR0wtPmNyZWF0ZUltYWdlS0hSKEVHTF9OT19DT05URVhULCBFR0xfTElO
VVhfRE1BX0JVRl9FWFQsIG51bGxwdHIsIGF0dHIpOworICAgIGlmIChtSW1hZ2UgPT0gRUdMX05P
X0lNQUdFX0tIUikKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBG
dW5jdGlvbnNHTCAqZ2wgICAgPSBtRGlzcGxheS0+bUZ1bmN0aW9uc0dMOworICAgIFN0YXRlTWFu
YWdlckdMICpzbSA9IG1EaXNwbGF5LT5nZXRSZW5kZXJlcigpLT5nZXRTdGF0ZU1hbmFnZXIoKTsK
KworICAgIGdsLT5nZW5SZW5kZXJidWZmZXJzKDEsICZtQ29sb3JCdWZmZXIpOworICAgIHNtLT5i
aW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbUNvbG9yQnVmZmVyKTsKKyAgICBnbC0+
ZWdsSW1hZ2VUYXJnZXRSZW5kZXJidWZmZXJTdG9yYWdlT0VTKEdMX1JFTkRFUkJVRkZFUiwgbUlt
YWdlKTsKKworICAgIHNtLT5iaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1HTEZCKTsK
KyAgICBnbC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9S
X0FUVEFDSE1FTlQwX0VYVCwgR0xfUkVOREVSQlVGRkVSLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtQ29sb3JCdWZmZXIpOworCisgICAgaWYgKG1EZXB0aEJpdHMgfHwgbVN0ZW5j
aWxCaXRzKQorICAgIHsKKyAgICAgICAgZ2wtPmdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1EU0J1ZmZl
cik7CisgICAgICAgIHNtLT5iaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbURTQnVm
ZmVyKTsKKyAgICAgICAgZ2wtPnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBH
TF9ERVBUSDI0X1NURU5DSUw4X09FUywgd2lkdGgsIGhlaWdodCk7CisgICAgfQorCisgICAgaWYg
KG1EZXB0aEJpdHMpCisgICAgeworICAgICAgICBnbC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIEdMX0RFUFRIX0FUVEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1EU0J1ZmZlcik7CisgICAgfQorCisg
ICAgaWYgKG1TdGVuY2lsQml0cykKKyAgICB7CisgICAgICAgIGdsLT5mcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJC
VUZGRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRFNCdWZmZXIpOwor
ICAgIH0KKworICAgIG1XaWR0aCAgPSB3aWR0aDsKKyAgICBtSGVpZ2h0ID0gaGVpZ2h0OworICAg
IHJldHVybiB0cnVlOworfQorCitib29sIERpc3BsYXlPem9uZTo6QnVmZmVyOjppbml0aWFsaXpl
KGNvbnN0IE5hdGl2ZVdpbmRvdyAqbmF0aXZlKQoreworICAgIG1OYXRpdmUgPSBuYXRpdmU7Cisg
ICAgbURpc3BsYXktPm1GdW5jdGlvbnNHTC0+Z2VuRnJhbWVidWZmZXJzKDEsICZtR0xGQik7Cisg
ICAgcmV0dXJuIHJlc2l6ZShuYXRpdmUtPndpZHRoLCBuYXRpdmUtPmhlaWdodCk7Cit9CisKK2Jv
b2wgRGlzcGxheU96b25lOjpCdWZmZXI6OmluaXRpYWxpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KQoreworICAgIG1EaXNwbGF5LT5tRnVuY3Rpb25zR0wtPmdlbkZyYW1lYnVmZmVycygxLCAmbUdM
RkIpOworICAgIHJldHVybiByZXNpemUod2lkdGgsIGhlaWdodCk7Cit9CisKK3ZvaWQgRGlzcGxh
eU96b25lOjpCdWZmZXI6OmJpbmRUZXhJbWFnZSgpCit7CisgICAgbURpc3BsYXktPm1GdW5jdGlv
bnNHTC0+ZWdsSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMoR0xfVEVYVFVSRV8yRCwgbUltYWdlKTsK
K30KKworR0x1aW50IERpc3BsYXlPem9uZTo6QnVmZmVyOjpnZXRUZXh0dXJlKCkKK3sKKyAgICAv
LyBUT0RPKGZqaGVuaWdtYW4pIFRyeSBub3QgdG8gY3JlYXRlIGEgbmV3IHRleHR1cmUgZXZlcnkg
dGltZS4gIFRoYXQgYWxyZWFkeSB3b3JrcyBvbiBJbnRlbAorICAgIC8vIGFuZCBzaG91bGQgd29y
ayBvbiBNYWxpIHdpdGggcHJvcGVyIGZlbmNlcy4KKyAgICBGdW5jdGlvbnNHTCAqZ2wgICAgPSBt
RGlzcGxheS0+bUZ1bmN0aW9uc0dMOworICAgIFN0YXRlTWFuYWdlckdMICpzbSA9IG1EaXNwbGF5
LT5nZXRSZW5kZXJlcigpLT5nZXRTdGF0ZU1hbmFnZXIoKTsKKworICAgIGdsLT5nZW5UZXh0dXJl
cygxLCAmbVRleHR1cmUpOworICAgIHNtLT5iaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4
dHVyZSk7CisgICAgZ2wtPnRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9N
SU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBnbC0+dGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOworICAgIGdsLT50ZXhQYXJh
bWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdF
KTsKKyAgICBnbC0+dGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBf
VCwgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgQVNTRVJUKG1JbWFnZSAhPSBFR0xfTk9fSU1BR0Vf
S0hSKTsKKyAgICBnbC0+ZWdsSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMoR0xfVEVYVFVSRV8yRCwg
bUltYWdlKTsKKyAgICByZXR1cm4gbVRleHR1cmU7Cit9CisKK3VpbnQzMl90IERpc3BsYXlPem9u
ZTo6QnVmZmVyOjpnZXREUk1GQigpCit7CisgICAgaWYgKCFtSGFzRFJNRkIpCisgICAgeworICAg
ICAgICBpbnQgZmQgICAgICAgICAgICAgID0gZ2JtX2RldmljZV9nZXRfZmQobURpc3BsYXktPm1H
Qk0pOworICAgICAgICB1aW50MzJfdCBoYW5kbGVzWzRdID0ge2dibV9ib19nZXRfaGFuZGxlKG1C
TykudTMyfTsKKyAgICAgICAgdWludDMyX3QgcGl0Y2hlc1s0XSA9IHtnYm1fYm9fZ2V0X3N0cmlk
ZShtQk8pfTsKKyAgICAgICAgdWludDMyX3Qgb2Zmc2V0c1s0XSA9IHswfTsKKyAgICAgICAgaWYg
KGRybU1vZGVBZGRGQjIoZmQsIG1XaWR0aCwgbUhlaWdodCwgbURSTUZvcm1hdEZCLCBoYW5kbGVz
LCBwaXRjaGVzLCBvZmZzZXRzLCAmbURSTUZCLCAwKSkKKyAgICAgICAgeworICAgICAgICAgICAg
c3RkOjpjZXJyIDw8ICJkcm1Nb2RlQWRkRkIyIGZhaWxlZCIgPDwgc3RkOjplbmRsOworICAgICAg
ICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgbUhhc0RSTUZCID0gdHJ1
ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBtRFJNRkI7Cit9CisKK0ZyYW1lYnVm
ZmVyR0wgKkRpc3BsYXlPem9uZTo6QnVmZmVyOjpmcmFtZWJ1ZmZlckdMKGNvbnN0IGdsOjpGcmFt
ZWJ1ZmZlclN0YXRlICZzdGF0ZSkKK3sKKyAgICByZXR1cm4gbmV3IEZyYW1lYnVmZmVyR0woCisg
ICAgICAgIG1HTEZCLCBzdGF0ZSwgbURpc3BsYXktPm1GdW5jdGlvbnNHTCwgbURpc3BsYXktPmdl
dFJlbmRlcmVyKCktPmdldFdvcmthcm91bmRzKCksCisgICAgICAgIG1EaXNwbGF5LT5nZXRSZW5k
ZXJlcigpLT5nZXRCbGl0dGVyKCksIG1EaXNwbGF5LT5nZXRSZW5kZXJlcigpLT5nZXRTdGF0ZU1h
bmFnZXIoKSk7Cit9CisKK3ZvaWQgRGlzcGxheU96b25lOjpCdWZmZXI6OnByZXNlbnQoKQorewor
ICAgIGlmIChtTmF0aXZlKQorICAgIHsKKyAgICAgICAgaWYgKG1OYXRpdmUtPnZpc2libGUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1EaXNwbGF5LT5kcmF3QnVmZmVyKHRoaXMpOworICAgICAg
ICB9CisgICAgICAgIHJlc2l6ZShtTmF0aXZlLT53aWR0aCwgbU5hdGl2ZS0+aGVpZ2h0KTsKKyAg
ICB9Cit9CisKK0Rpc3BsYXlPem9uZTo6RGlzcGxheU96b25lKCkKKyAgICA6IERpc3BsYXlFR0wo
KSwKKyAgICAgIG1Td2FwQ29udHJvbChTd2FwQ29udHJvbDo6QUJTRU5UKSwKKyAgICAgIG1NaW5T
d2FwSW50ZXJ2YWwoMCksCisgICAgICBtTWF4U3dhcEludGVydmFsKDApLAorICAgICAgbUN1cnJl
bnRTd2FwSW50ZXJ2YWwoLTEpLAorICAgICAgbUdCTShudWxscHRyKSwKKyAgICAgIG1Db25uZWN0
b3IobnVsbHB0ciksCisgICAgICBtTW9kZShudWxscHRyKSwKKyAgICAgIG1DUlRDKG51bGxwdHIp
LAorICAgICAgbVNldENSVEModHJ1ZSksCisgICAgICBtV2lkdGgoMCksCisgICAgICBtSGVpZ2h0
KDApLAorICAgICAgbVNjYW5uaW5nKG51bGxwdHIpLAorICAgICAgbVBlbmRpbmcobnVsbHB0ciks
CisgICAgICBtRHJhd2luZyhudWxscHRyKSwKKyAgICAgIG1VbnVzZWQobnVsbHB0ciksCisgICAg
ICBtUHJvZ3JhbSgwKSwKKyAgICAgIG1WZXJ0ZXhTaGFkZXIoMCksCisgICAgICBtRnJhZ21lbnRT
aGFkZXIoMCksCisgICAgICBtVmVydGV4QnVmZmVyKDApLAorICAgICAgbUluZGV4QnVmZmVyKDAp
LAorICAgICAgbUNlbnRlclVuaWZvcm0oMCksCisgICAgICBtV2luZG93U2l6ZVVuaWZvcm0oMCks
CisgICAgICBtQm9yZGVyU2l6ZVVuaWZvcm0oMCksCisgICAgICBtRGVwdGhVbmlmb3JtKDApCit7
Cit9CisKK0Rpc3BsYXlPem9uZTo6fkRpc3BsYXlPem9uZSgpCit7Cit9CisKK2VnbDo6RXJyb3Ig
RGlzcGxheU96b25lOjppbml0aWFsaXplKGVnbDo6RGlzcGxheSAqZGlzcGxheSkKK3sKKyAgICBp
bnQgZmQ7CisgICAgY2hhciBkZXZpY2VOYW1lWzMwXTsKKyAgICBkcm1Nb2RlUmVzUHRyIHJlc291
cmNlcyA9IG51bGxwdHI7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDk7ICsraSkKKyAgICB7
CisgICAgICAgIHNucHJpbnRmKGRldmljZU5hbWUsIHNpemVvZihkZXZpY2VOYW1lKSwgIi9kZXYv
ZHJpL2NhcmQlZCIsIGkpOworICAgICAgICBmZCA9IG9wZW4oZGV2aWNlTmFtZSwgT19SRFdSIHwg
T19DTE9FWEVDKTsKKyAgICAgICAgaWYgKGZkID49IDApCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJlc291cmNlcyA9IGRybU1vZGVHZXRSZXNvdXJjZXMoZmQpOworICAgICAgICAgICAgaWYgKHJl
c291cmNlcykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAocmVzb3VyY2VzLT5j
b3VudF9jb25uZWN0b3JzID4gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkcm1Nb2RlRnJl
ZVJlc291cmNlcyhyZXNvdXJjZXMpOworICAgICAgICAgICAgICAgIHJlc291cmNlcyA9IG51bGxw
dHI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgaWYgKCFyZXNvdXJjZXMpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjpFcnJv
cihFR0xfTk9UX0lOSVRJQUxJWkVELCAiQ291bGQgbm90IG9wZW4gZHJtIGRldmljZS4iKTsKKyAg
ICB9CisKKyAgICBtR0JNID0gZ2JtX2NyZWF0ZV9kZXZpY2UoZmQpOworICAgIGlmICghbUdCTSkK
KyAgICB7CisgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgZHJtTW9kZUZyZWVSZXNvdXJjZXMo
cmVzb3VyY2VzKTsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX05PVF9JTklUSUFMSVpF
RCwgIkNvdWxkIG5vdCBjcmVhdGUgZ2JtIGRldmljZS4iKTsKKyAgICB9CisKKyAgICBtQ29ubmVj
dG9yICAgICAgICAgICAgPSBudWxscHRyOworICAgIGJvb2wgbW9uaXRvckNvbm5lY3RlZCA9IGZh
bHNlOworICAgIGZvciAoaW50IGkgPSAwOyAhbUNSVEMgJiYgaSA8IHJlc291cmNlcy0+Y291bnRf
Y29ubmVjdG9yczsgKytpKQorICAgIHsKKyAgICAgICAgZHJtTW9kZUZyZWVDb25uZWN0b3IobUNv
bm5lY3Rvcik7CisgICAgICAgIG1Db25uZWN0b3IgPSBkcm1Nb2RlR2V0Q29ubmVjdG9yKGZkLCBy
ZXNvdXJjZXMtPmNvbm5lY3RvcnNbaV0pOworICAgICAgICBpZiAoIW1Db25uZWN0b3IgfHwgbUNv
bm5lY3Rvci0+Y29ubmVjdGlvbiAhPSBEUk1fTU9ERV9DT05ORUNURUQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIG1vbml0b3JDb25uZWN0ZWQg
PSB0cnVlOworICAgICAgICBtTW9kZSA9IENob29zZU1vZGUobUNvbm5lY3Rvcik7CisgICAgICAg
IGlmICghbU1vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisgICAgICAgIGludCBuID0gQ2hvb3NlQ1JUQyhmZCwgbUNvbm5lY3Rvcik7CisgICAgICAgIGlm
IChuIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAg
ICAgICAgbUNSVEMgPSBkcm1Nb2RlR2V0Q3J0YyhmZCwgcmVzb3VyY2VzLT5jcnRjc1tuXSk7Cisg
ICAgfQorICAgIGRybU1vZGVGcmVlUmVzb3VyY2VzKHJlc291cmNlcyk7CisKKyAgICBpZiAobUNS
VEMpCisgICAgeworICAgICAgICBtV2lkdGggID0gbU1vZGUtPmhkaXNwbGF5OworICAgICAgICBt
SGVpZ2h0ID0gbU1vZGUtPnZkaXNwbGF5OworICAgIH0KKyAgICBlbHNlIGlmICghbW9uaXRvckNv
bm5lY3RlZCkKKyAgICB7CisgICAgICAgIC8vIEV2ZW4gdGhvdWdoIHRoZXJlIGlzIG5vIG1vbml0
b3IgdG8gc2hvdyBpdCwgd2Ugc3RpbGwgZG8KKyAgICAgICAgLy8gZXZlcnl0aGluZyB0aGUgc2Ft
ZSBhcyBpZiB0aGVyZSB3ZXJlIG9uZSwgc28gd2UgbmVlZCBhbgorICAgICAgICAvLyBhcmJpdHJh
cnkgc2l6ZSBmb3Igb3VyIGJ1ZmZlcnMuCisgICAgICAgIG1XaWR0aCAgPSAxMjgwOworICAgICAg
ICBtSGVpZ2h0ID0gMTAyNDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGVnbDo6RXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCwgIkZhaWxlZCB0byBjaG9vc2UgbW9kZS9j
cnRjLiIpOworICAgIH0KKworICAgIC8vIEFOR0xFIGJ1aWxkcyBpdHMgZXhlY3V0YWJsZXMgd2l0
aCBhbiBSUEFUSCBzbyB0aGV5IHB1bGwgaW4gQU5HTEUncyBsaWJHTCBhbmQgbGliRUdMLgorICAg
IC8vIEhlcmUgd2UgbmVlZCB0byBvcGVuIHRoZSBuYXRpdmUgbGliRUdMLiAgQW4gYWJzb2x1dGUg
cGF0aCB3b3VsZCB3b3JrLCBidXQgdGhlbiB3ZQorICAgIC8vIGNvdWxkbid0IHVzZSBMRF9MSUJS
QVJZX1BBVEggd2hpY2ggaXMgb2Z0ZW4gdXNlZnVsIGR1cmluZyBkZXZlbG9wbWVudC4gIEluc3Rl
YWQgd2UgdGFrZQorICAgIC8vIGFkdmFudGFnZSBvZiB0aGUgZmFjdCB0aGF0IHRoZSBzeXN0ZW0g
bGliIGlzIGF2YWlsYWJsZSB1bmRlciBtdWx0aXBsZSBuYW1lcyAoZm9yIGV4YW1wbGUKKyAgICAv
LyB3aXRoIGEgLjEgc3VmZml4KSB3aGlsZSBBbmdsZSBvbmx5IGluc3RhbGxzIGxpYkVHTC5zby4K
KyAgICBGdW5jdGlvbnNFR0xETCAqZWdsID0gbmV3IEZ1bmN0aW9uc0VHTERMKCk7CisgICAgbUVH
TCA9IGVnbDsKKyAgICBBTkdMRV9UUlkoZWdsLT5pbml0aWFsaXplKGRpc3BsYXktPmdldE5hdGl2
ZURpc3BsYXlJZCgpLCAibGliRUdMLnNvLjEiKSk7CisKKyAgICBjb25zdCBjaGFyICpuZWNlc3Nh
cnlFeHRlbnNpb25zW10gPSB7CisgICAgICAgICJFR0xfS0hSX2ltYWdlX2Jhc2UiLCAiRUdMX0VY
VF9pbWFnZV9kbWFfYnVmX2ltcG9ydCIsICJFR0xfS0hSX3N1cmZhY2VsZXNzX2NvbnRleHQiLAor
ICAgIH07CisgICAgZm9yIChhdXRvICZleHQgOiBuZWNlc3NhcnlFeHRlbnNpb25zKQorICAgIHsK
KyAgICAgICAgaWYgKCFtRUdMLT5oYXNFeHRlbnNpb24oZXh0KSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCwgIm5lZWQgJXMiLCBl
eHQpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1FR0wtPmhhc0V4dGVuc2lvbigiRUdM
X01FU0FfY29uZmlnbGVzc19jb250ZXh0IikpCisgICAgeworICAgICAgICBtQ29uZmlnID0gRUdM
X05PX0NPTkZJR19NRVNBOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICAvLyBjbGFu
Zy1mb3JtYXQgb2ZmCisgICAgICAgIGNvbnN0IEVHTGludCBhdHRyaWJbXSA9CisgICAgICAgIHsK
KyAgICAgICAgICAgIC8vIFdlIHdhbnQgUkdCQTggYW5kIERFUFRIMjRfU1RFTkNJTDgKKyAgICAg
ICAgICAgIEVHTF9SRURfU0laRSwgOCwKKyAgICAgICAgICAgIEVHTF9HUkVFTl9TSVpFLCA4LAor
ICAgICAgICAgICAgRUdMX0JMVUVfU0laRSwgOCwKKyAgICAgICAgICAgIEVHTF9BTFBIQV9TSVpF
LCA4LAorICAgICAgICAgICAgRUdMX0RFUFRIX1NJWkUsIDI0LAorICAgICAgICAgICAgRUdMX1NU
RU5DSUxfU0laRSwgOCwKKyAgICAgICAgICAgIEVHTF9OT05FLAorICAgICAgICB9OworICAgICAg
ICAvLyBjbGFuZy1mb3JtYXQgb24KKyAgICAgICAgRUdMaW50IG51bUNvbmZpZzsKKyAgICAgICAg
RUdMQ29uZmlnIGNvbmZpZ1sxXTsKKyAgICAgICAgaWYgKCFtRUdMLT5jaG9vc2VDb25maWcoYXR0
cmliLCBjb25maWcsIDEsICZudW1Db25maWcpIHx8IG51bUNvbmZpZyA8IDEpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9OT1RfSU5JVElBTElaRUQsICJDb3Vs
ZCBub3QgZ2V0IEVHTCBjb25maWcuIik7CisgICAgICAgIH0KKyAgICAgICAgbUNvbmZpZyA9IGNv
bmZpZ1swXTsKKyAgICB9CisKKyAgICBBTkdMRV9UUlkoaW5pdGlhbGl6ZUNvbnRleHQoZGlzcGxh
eS0+Z2V0QXR0cmlidXRlTWFwKCkpKTsKKworICAgIGlmICghbUVHTC0+bWFrZUN1cnJlbnQoRUdM
X05PX1NVUkZBQ0UsIG1Db250ZXh0KSkKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVycm9y
KEVHTF9OT1RfSU5JVElBTElaRUQsICJDb3VsZCBub3QgbWFrZSBjb250ZXh0IGN1cnJlbnQuIik7
CisgICAgfQorCisgICAgbUZ1bmN0aW9uc0dMID0gbUVHTC0+bWFrZUZ1bmN0aW9uc0dMKCk7Cisg
ICAgbUZ1bmN0aW9uc0dMLT5pbml0aWFsaXplKCk7CisKKyAgICByZXR1cm4gRGlzcGxheUdMOjpp
bml0aWFsaXplKGRpc3BsYXkpOworfQorCit2b2lkIERpc3BsYXlPem9uZTo6cGFnZUZsaXBIYW5k
bGVyKGludCBmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IHNlcXVlbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgdHZfc2VjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgdHZfdXNlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAq
ZGF0YSkKK3sKKyAgICBEaXNwbGF5T3pvbmUgKmRpc3BsYXkgPSByZWludGVycHJldF9jYXN0PERp
c3BsYXlPem9uZSAqPihkYXRhKTsKKyAgICB1aW50NjRfdCB0diA9IHR2X3NlYzsKKyAgICBkaXNw
bGF5LT5wYWdlRmxpcEhhbmRsZXIoc2VxdWVuY2UsIHR2ICogMTAwMDAwMCArIHR2X3VzZWMpOwor
fQorCit2b2lkIERpc3BsYXlPem9uZTo6cGFnZUZsaXBIYW5kbGVyKHVuc2lnbmVkIGludCBzZXF1
ZW5jZSwgdWludDY0X3QgdHYpCit7CisgICAgQVNTRVJUKG1QZW5kaW5nKTsKKyAgICBtVW51c2Vk
ICAgPSBtU2Nhbm5pbmc7CisgICAgbVNjYW5uaW5nID0gbVBlbmRpbmc7CisgICAgbVBlbmRpbmcg
ID0gbnVsbHB0cjsKK30KKwordm9pZCBEaXNwbGF5T3pvbmU6OnByZXNlbnRTY3JlZW4oKQorewor
ICAgIGlmICghbUNSVEMpCisgICAgeworICAgICAgICAvLyBubyBtb25pdG9yCisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBzZWUgaWYgcGVuZGluZyBmbGlwIGhhcyBmaW5pc2hlZCwg
d2l0aG91dCBibG9ja2luZworICAgIGludCBmZCA9IGdibV9kZXZpY2VfZ2V0X2ZkKG1HQk0pOwor
ICAgIGlmIChtUGVuZGluZykKKyAgICB7CisgICAgICAgIHBvbGxmZCBwZmQ7CisgICAgICAgIHBm
ZC5mZCAgICAgPSBmZDsKKyAgICAgICAgcGZkLmV2ZW50cyA9IFBPTExJTjsKKyAgICAgICAgaWYg
KHBvbGwoJnBmZCwgMSwgMCkgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICBzdGQ6OmNlcnIg
PDwgInBvbGwgZmFpbGVkOiAiIDw8IGVycm5vIDw8ICIgIiA8PCBzdHJlcnJvcihlcnJubykgPDwg
c3RkOjplbmRsOworICAgICAgICB9CisgICAgICAgIGlmIChwZmQucmV2ZW50cyAmIFBPTExJTikK
KyAgICAgICAgeworICAgICAgICAgICAgZHJtRXZlbnRDb250ZXh0IGV2ZW50OworICAgICAgICAg
ICAgZXZlbnQudmVyc2lvbiAgICAgICAgICAgPSBEUk1fRVZFTlRfQ09OVEVYVF9WRVJTSU9OOwor
ICAgICAgICAgICAgZXZlbnQucGFnZV9mbGlwX2hhbmRsZXIgPSBwYWdlRmxpcEhhbmRsZXI7Cisg
ICAgICAgICAgICBkcm1IYW5kbGVFdmVudChmZCwgJmV2ZW50KTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIC8vIGlmIHBlbmRpbmcgZmxpcCBoYXMgZmluaXNoZWQsIHNjaGVkdWxlIG5leHQgb25l
CisgICAgaWYgKCFtUGVuZGluZyAmJiBtRHJhd2luZykKKyAgICB7CisgICAgICAgIGZsdXNoR0wo
KTsKKyAgICAgICAgaWYgKG1TZXRDUlRDKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZHJt
TW9kZVNldENydGMoZmQsIG1DUlRDLT5jcnRjX2lkLCBtRHJhd2luZy0+Z2V0RFJNRkIoKSwgMCwg
MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbUNvbm5lY3Rvci0+Y29ubmVjdG9y
X2lkLCAxLCBtTW9kZSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3RkOjpjZXJy
IDw8ICJzZXQgY3J0YyBmYWlsZWQ6ICIgPDwgZXJybm8gPDwgIiAiIDw8IHN0cmVycm9yKGVycm5v
KSA8PCBzdGQ6OmVuZGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtU2V0Q1JUQyA9IGZh
bHNlOworICAgICAgICB9CisgICAgICAgIGlmIChkcm1Nb2RlUGFnZUZsaXAoZmQsIG1DUlRDLT5j
cnRjX2lkLCBtRHJhd2luZy0+Z2V0RFJNRkIoKSwgRFJNX01PREVfUEFHRV9GTElQX0VWRU5ULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMpKQorICAgICAgICB7CisgICAgICAgICAg
ICBzdGQ6OmNlcnIgPDwgInBhZ2UgZmxpcCBmYWlsZWQ6ICIgPDwgZXJybm8gPDwgIiAiIDw8IHN0
cmVycm9yKGVycm5vKSA8PCBzdGQ6OmVuZGw7CisgICAgICAgIH0KKyAgICAgICAgbVBlbmRpbmcg
PSBtRHJhd2luZzsKKyAgICAgICAgbURyYXdpbmcgPSBudWxscHRyOworICAgIH0KK30KKworR0x1
aW50IERpc3BsYXlPem9uZTo6bWFrZVNoYWRlcihHTHVpbnQgdHlwZSwgY29uc3QgY2hhciAqc3Jj
KQoreworICAgIEZ1bmN0aW9uc0dMICpnbCA9IG1GdW5jdGlvbnNHTDsKKyAgICBHTHVpbnQgc2hh
ZGVyID0gZ2wtPmNyZWF0ZVNoYWRlcih0eXBlKTsKKyAgICBnbC0+c2hhZGVyU291cmNlKHNoYWRl
ciwgMSwgJnNyYywgbnVsbHB0cik7CisgICAgZ2wtPmNvbXBpbGVTaGFkZXIoc2hhZGVyKTsKKwor
ICAgIEdMY2hhciBidWZbOTk5XTsKKyAgICBHTHNpemVpIGxlbjsKKyAgICBHTGludCBjb21waWxl
ZDsKKyAgICBnbC0+Z2V0U2hhZGVySW5mb0xvZyhzaGFkZXIsIHNpemVvZihidWYpLCAmbGVuLCBi
dWYpOworICAgIGdsLT5nZXRTaGFkZXJpdihzaGFkZXIsIEdMX0NPTVBJTEVfU1RBVFVTLCAmY29t
cGlsZWQpOworICAgIGlmIChjb21waWxlZCAhPSBHTF9UUlVFKQorICAgIHsKKyAgICAgICAgQU5H
TEVQbGF0Zm9ybUN1cnJlbnQoKS0+bG9nRXJyb3IoIkRpc3BsYXlPem9uZSBzaGFkZXIgY29tcGls
YXRpb24gZXJyb3I6Iik7CisgICAgICAgIEFOR0xFUGxhdGZvcm1DdXJyZW50KCktPmxvZ0Vycm9y
KGJ1Zik7CisgICAgfQorCisgICAgcmV0dXJuIHNoYWRlcjsKK30KKwordm9pZCBEaXNwbGF5T3pv
bmU6OmRyYXdXaXRoVGV4dHVyZShCdWZmZXIgKmJ1ZmZlcikKK3sKKyAgICBGdW5jdGlvbnNHTCAq
Z2wgICAgPSBtRnVuY3Rpb25zR0w7CisgICAgU3RhdGVNYW5hZ2VyR0wgKnNtID0gZ2V0UmVuZGVy
ZXIoKS0+Z2V0U3RhdGVNYW5hZ2VyKCk7CisKKyAgICBpZiAoIW1Qcm9ncmFtKQorICAgIHsKKyAg
ICAgICAgY29uc3QgR0xjaGFyICp2ZXJ0ZXhTb3VyY2UgPQorICAgICAgICAgICAgIiN2ZXJzaW9u
IDEwMFxuIgorICAgICAgICAgICAgImF0dHJpYnV0ZSB2ZWMzIHZlcnRleDtcbiIKKyAgICAgICAg
ICAgICJ1bmlmb3JtIHZlYzIgY2VudGVyO1xuIgorICAgICAgICAgICAgInVuaWZvcm0gdmVjMiB3
aW5kb3dTaXplO1xuIgorICAgICAgICAgICAgInVuaWZvcm0gdmVjMiBib3JkZXJTaXplO1xuIgor
ICAgICAgICAgICAgInVuaWZvcm0gZmxvYXQgZGVwdGg7XG4iCisgICAgICAgICAgICAidmFyeWlu
ZyB2ZWMzIHRleENvb3JkO1xuIgorICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAg
ICAgICAie1xuIgorICAgICAgICAgICAgIiAgICB2ZWMyIHBvcyA9IHZlcnRleC54eSAqICh3aW5k
b3dTaXplICsgYm9yZGVyU2l6ZSAqIHZlcnRleC56KTtcbiIKKyAgICAgICAgICAgICIgICAgZ2xf
UG9zaXRpb24gPSB2ZWM0KGNlbnRlciArIHBvcywgZGVwdGgsIDEpO1xuIgorICAgICAgICAgICAg
IiAgICB0ZXhDb29yZCA9IHZlYzMocG9zIC8gd2luZG93U2l6ZSAqIHZlYzIoLjUsIC0uNSkgKyB2
ZWMyKC41LCAuNSksIHZlcnRleC56KTtcbiIKKyAgICAgICAgICAgICJ9XG4iOworCisgICAgICAg
IGNvbnN0IEdMY2hhciAqZnJhZ21lbnRTb3VyY2UgPQorICAgICAgICAgICAgIiN2ZXJzaW9uIDEw
MFxuIgorICAgICAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAg
ICAgInVuaWZvcm0gc2FtcGxlcjJEIHRleDtcbiIKKyAgICAgICAgICAgICJ2YXJ5aW5nIHZlYzMg
dGV4Q29vcmQ7XG4iCisgICAgICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgICAgICJ7
XG4iCisgICAgICAgICAgICAiICAgIGlmICh0ZXhDb29yZC56ID4gMC4pXG4iCisgICAgICAgICAg
ICAiICAgIHtcbiIKKyAgICAgICAgICAgICIgICAgICAgIGZsb2F0IGMgPSBhYnMoKHRleENvb3Jk
LnogKiAyLikgLSAxLik7XG4iCisgICAgICAgICAgICAiICAgICAgICBnbF9GcmFnQ29sb3IgPSB2
ZWM0KGMsIGMsIGMsIDEpO1xuIgorICAgICAgICAgICAgIiAgICB9XG4iCisgICAgICAgICAgICAi
ICAgIGVsc2VcbiIKKyAgICAgICAgICAgICIgICAge1xuIgorICAgICAgICAgICAgIiAgICAgICAg
Z2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHRleCwgdGV4Q29vcmQueHkpO1xuIgorICAgICAgICAg
ICAgIiAgICB9XG4iCisgICAgICAgICAgICAifVxuIjsKKworICAgICAgICBtVmVydGV4U2hhZGVy
ICAgPSBtYWtlU2hhZGVyKEdMX1ZFUlRFWF9TSEFERVIsIHZlcnRleFNvdXJjZSk7CisgICAgICAg
IG1GcmFnbWVudFNoYWRlciA9IG1ha2VTaGFkZXIoR0xfRlJBR01FTlRfU0hBREVSLCBmcmFnbWVu
dFNvdXJjZSk7CisgICAgICAgIG1Qcm9ncmFtID0gZ2wtPmNyZWF0ZVByb2dyYW0oKTsKKyAgICAg
ICAgZ2wtPmF0dGFjaFNoYWRlcihtUHJvZ3JhbSwgbVZlcnRleFNoYWRlcik7CisgICAgICAgIGds
LT5hdHRhY2hTaGFkZXIobVByb2dyYW0sIG1GcmFnbWVudFNoYWRlcik7CisgICAgICAgIGdsLT5i
aW5kQXR0cmliTG9jYXRpb24obVByb2dyYW0sIDAsICJ2ZXJ0ZXgiKTsKKyAgICAgICAgZ2wtPmxp
bmtQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICAgICAgR0xpbnQgbGlua2VkOworICAgICAgICBnbC0+
Z2V0UHJvZ3JhbWl2KG1Qcm9ncmFtLCBHTF9MSU5LX1NUQVRVUywgJmxpbmtlZCk7CisgICAgICAg
IEFTU0VSVChsaW5rZWQpOworICAgICAgICBtQ2VudGVyVW5pZm9ybSAgICAgPSBnbC0+Z2V0VW5p
Zm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAiY2VudGVyIik7CisgICAgICAgIG1XaW5kb3dTaXplVW5p
Zm9ybSA9IGdsLT5nZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ3aW5kb3dTaXplIik7Cisg
ICAgICAgIG1Cb3JkZXJTaXplVW5pZm9ybSA9IGdsLT5nZXRVbmlmb3JtTG9jYXRpb24obVByb2dy
YW0sICJib3JkZXJTaXplIik7CisgICAgICAgIG1EZXB0aFVuaWZvcm0gICAgICA9IGdsLT5nZXRV
bmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJkZXB0aCIpOworICAgICAgICBHTGludCB0ZXhVbmlm
b3JtID0gZ2wtPmdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInRleCIpOworICAgICAgICBz
bS0+dXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgICAgIGdsLT51bmlmb3JtMWkodGV4VW5pZm9y
bSwgMCk7CisKKyAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgorICAgICAgICBjb25zdCBHTGZs
b2F0IHZlcnRpY2VzW10gPQorICAgICAgICB7CisgICAgICAgICAgICAgLy8gd2luZG93IGNvcm5l
cnMsIGFuZCB3aW5kb3cgYm9yZGVyIGluc2lkZSBjb3JuZXJzCisgICAgICAgICAgICAgMSwgLTEs
IDAsCisgICAgICAgICAgICAtMSwgLTEsIDAsCisgICAgICAgICAgICAgMSwgIDEsIDAsCisgICAg
ICAgICAgICAtMSwgIDEsIDAsCisgICAgICAgICAgICAgLy8gd2luZG93IGJvcmRlciBvdXRzaWRl
IGNvcm5lcnMKKyAgICAgICAgICAgICAxLCAtMSwgMSwKKyAgICAgICAgICAgIC0xLCAtMSwgMSwK
KyAgICAgICAgICAgICAxLCAgMSwgMSwKKyAgICAgICAgICAgIC0xLCAgMSwgMSwKKyAgICAgICAg
fTsKKyAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9uCisgICAgICAgIGdsLT5nZW5CdWZmZXJzKDEs
ICZtVmVydGV4QnVmZmVyKTsKKyAgICAgICAgc20tPmJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVS
LCBtVmVydGV4QnVmZmVyKTsKKyAgICAgICAgZ2wtPmJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVS
LCBzaXplb2YodmVydGljZXMpLCB2ZXJ0aWNlcywgR0xfU1RBVElDX0RSQVcpOworCisgICAgICAg
IC8vIHdpbmRvdyBib3JkZXIgdHJpYW5nbGUgc3RyaXAKKyAgICAgICAgY29uc3QgR0x1aW50IGJv
cmRlclN0cmlwW10gPSB7NSwgMCwgNCwgMiwgNiwgMywgNywgMSwgNSwgMH07CisKKyAgICAgICAg
Z2wtPmdlbkJ1ZmZlcnMoMSwgJm1JbmRleEJ1ZmZlcik7CisgICAgICAgIHNtLT5iaW5kQnVmZmVy
KEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBtSW5kZXhCdWZmZXIpOworICAgICAgICBnbC0+YnVm
ZmVyRGF0YShHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgc2l6ZW9mKGJvcmRlclN0cmlwKSwgYm9y
ZGVyU3RyaXAsIEdMX1NUQVRJQ19EUkFXKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAg
ICAgc20tPnVzZVByb2dyYW0obVByb2dyYW0pOworICAgICAgICBzbS0+YmluZEJ1ZmZlcihHTF9B
UlJBWV9CVUZGRVIsIG1WZXJ0ZXhCdWZmZXIpOworICAgICAgICBzbS0+YmluZEJ1ZmZlcihHTF9F
TEVNRU5UX0FSUkFZX0JVRkZFUiwgbUluZGV4QnVmZmVyKTsKKyAgICB9CisKKyAgICAvLyBjb252
ZXJ0IGZyb20gcGl4ZWxzIHRvICItMSB0byAxIiBzcGFjZQorICAgIGNvbnN0IE5hdGl2ZVdpbmRv
dyAqbiA9IGJ1ZmZlci0+Z2V0TmF0aXZlKCk7CisgICAgZG91YmxlIHggICAgICAgICAgICAgID0g
bi0+eCAqIDIuIC8gbVdpZHRoIC0gMTsKKyAgICBkb3VibGUgeSAgICAgICAgICAgICAgPSBuLT55
ICogMi4gLyBtSGVpZ2h0IC0gMTsKKyAgICBkb3VibGUgaGFsZncgICAgICAgICAgPSBuLT53aWR0
aCAqIDEuIC8gbVdpZHRoOworICAgIGRvdWJsZSBoYWxmaCAgICAgICAgICA9IG4tPmhlaWdodCAq
IDEuIC8gbUhlaWdodDsKKyAgICBkb3VibGUgYm9yZGVydyAgICAgICAgPSBuLT5ib3JkZXJXaWR0
aCAqIDIuIC8gbVdpZHRoOworICAgIGRvdWJsZSBib3JkZXJoICAgICAgICA9IG4tPmJvcmRlckhl
aWdodCAqIDIuIC8gbUhlaWdodDsKKworICAgIGdsLT51bmlmb3JtMmYobUNlbnRlclVuaWZvcm0s
IHggKyBoYWxmdywgeSArIGhhbGZoKTsKKyAgICBnbC0+dW5pZm9ybTJmKG1XaW5kb3dTaXplVW5p
Zm9ybSwgaGFsZncsIGhhbGZoKTsKKyAgICBnbC0+dW5pZm9ybTJmKG1Cb3JkZXJTaXplVW5pZm9y
bSwgYm9yZGVydywgYm9yZGVyaCk7CisgICAgZ2wtPnVuaWZvcm0xZihtRGVwdGhVbmlmb3JtLCBu
LT5kZXB0aCAvIDFlNik7CisKKyAgICBzbS0+c2V0QmxlbmRFbmFibGVkKGZhbHNlKTsKKyAgICBz
bS0+c2V0Q3VsbEZhY2VFbmFibGVkKGZhbHNlKTsKKyAgICBzbS0+c2V0U3RlbmNpbFRlc3RFbmFi
bGVkKGZhbHNlKTsKKyAgICBzbS0+c2V0U2Npc3NvclRlc3RFbmFibGVkKGZhbHNlKTsKKyAgICBz
bS0+c2V0RGVwdGhUZXN0RW5hYmxlZCh0cnVlKTsKKyAgICBzbS0+c2V0Q29sb3JNYXNrKHRydWUs
IHRydWUsIHRydWUsIHRydWUpOworICAgIHNtLT5zZXREZXB0aE1hc2sodHJ1ZSk7CisgICAgc20t
PnNldERlcHRoUmFuZ2UoMCwgMSk7CisgICAgc20tPnNldERlcHRoRnVuYyhHTF9MRVNTKTsKKyAg
ICBzbS0+c2V0Vmlld3BvcnQoZ2w6OlJlY3RhbmdsZSgwLCAwLCBtV2lkdGgsIG1IZWlnaHQpKTsK
KyAgICBzbS0+YWN0aXZlVGV4dHVyZSgwKTsKKyAgICBHTHVpbnQgdGV4ID0gYnVmZmVyLT5nZXRU
ZXh0dXJlKCk7CisgICAgc20tPmJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleCk7CisgICAg
Z2wtPnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMywgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCAwKTsK
KyAgICBnbC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7CisgICAgc20tPmJpbmRGcmFtZWJ1
ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSLCBtRHJhd2luZy0+Z2V0R0xGQigpKTsKKyAgICBnbC0+
ZHJhd0FycmF5cyhHTF9UUklBTkdMRV9TVFJJUCwgMCwgNCk7CisgICAgZ2wtPmRyYXdFbGVtZW50
cyhHTF9UUklBTkdMRV9TVFJJUCwgMTAsIEdMX1VOU0lHTkVEX0lOVCwgMCk7CisgICAgc20tPmRl
bGV0ZVRleHR1cmUodGV4KTsKK30KKwordm9pZCBEaXNwbGF5T3pvbmU6OmRyYXdCdWZmZXIoQnVm
ZmVyICpidWZmZXIpCit7CisgICAgaWYgKCFtRHJhd2luZykKKyAgICB7CisgICAgICAgIC8vIGdl
dCBidWZmZXIgb24gd2hpY2ggdG8gZHJhdyB3aW5kb3cKKyAgICAgICAgaWYgKG1VbnVzZWQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1EcmF3aW5nID0gbVVudXNlZDsKKyAgICAgICAgICAgIG1V
bnVzZWQgID0gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAg
ICAgICAgICAgIG1EcmF3aW5nID0gbmV3IEJ1ZmZlcih0aGlzLCBHQk1fQk9fVVNFX1JFTkRFUklO
RyB8IEdCTV9CT19VU0VfU0NBTk9VVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHQk1fRk9STUFUX0FSR0I4ODg4LCBEUk1fRk9STUFUX0FSR0I4ODg4LCBEUk1fRk9STUFUX1hS
R0I4ODg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsIHRydWUpOyAg
Ly8gWFhYIHNob3VsZG4ndCBuZWVkIHN0ZW5jaWwKKyAgICAgICAgICAgIGlmICghbURyYXdpbmcg
fHwgIW1EcmF3aW5nLT5pbml0aWFsaXplKG1XaWR0aCwgbUhlaWdodCkpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgU3RhdGVNYW5hZ2VyR0wgKnNtID0gZ2V0UmVuZGVyZXIoKS0+Z2V0U3RhdGVNYW5hZ2Vy
KCk7CisgICAgICAgIHNtLT5iaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUiwgbURy
YXdpbmctPmdldEdMRkIoKSk7CisgICAgICAgIHNtLT5zZXRDbGVhckNvbG9yKGdsOjpDb2xvckYo
MCwgMCwgMCwgMSkpOworICAgICAgICBzbS0+c2V0Q2xlYXJEZXB0aCgxKTsKKyAgICAgICAgc20t
PnNldFNjaXNzb3JUZXN0RW5hYmxlZChmYWxzZSk7CisgICAgICAgIHNtLT5zZXRDb2xvck1hc2so
dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisgICAgICAgIHNtLT5zZXREZXB0aE1hc2sodHJ1ZSk7
CisgICAgICAgIG1GdW5jdGlvbnNHTC0+Y2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RF
UFRIX0JVRkZFUl9CSVQpOworICAgIH0KKworICAgIGRyYXdXaXRoVGV4dHVyZShidWZmZXIpOwor
ICAgIHByZXNlbnRTY3JlZW4oKTsKK30KKwordm9pZCBEaXNwbGF5T3pvbmU6OmZsdXNoR0woKQor
eworICAgIG1GdW5jdGlvbnNHTC0+Zmx1c2goKTsKKyAgICBpZiAobUVHTC0+aGFzRXh0ZW5zaW9u
KCJFR0xfS0hSX2ZlbmNlX3N5bmMiKSkKKyAgICB7CisgICAgICAgIGNvbnN0IEVHTGludCBhdHRy
aWJbXSA9IHtFR0xfU1lOQ19DT05ESVRJT05fS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRUdMX1NZTkNfUFJJT1JfQ09NTUFORFNfSU1QTElDSVRfRVhURVJOQUxfQVJNLCBF
R0xfTk9ORX07CisgICAgICAgIEVHTFN5bmNLSFIgZmVuY2UgPSBtRUdMLT5jcmVhdGVTeW5jS0hS
KEVHTF9TWU5DX0ZFTkNFX0tIUiwgYXR0cmliKTsKKyAgICAgICAgaWYgKGZlbmNlKQorICAgICAg
ICB7CisgICAgICAgICAgICAvLyBUT0RPKGZqaGVuaWdtYW4pIEZpZ3VyZSBvdXQgdGhlIHJpZ2h0
IHdheSB0byB1c2UgZmVuY2VzIG9uIE1hbGkgR1BVCisgICAgICAgICAgICAvLyB0byBtYXhpbWl6
ZSB0aHJvdWdocHV0IGFuZCBhdm9pZCBoYW5ncyB3aGVuIGEgcHJvZ3JhbSBpcyBpbnRlcnJ1cHRl
ZC4KKyAgICAgICAgICAgIC8vIFRoaXMgYnVzeSB3YWl0IHdhcyBhbiBhdHRlbXB0IHRvIHJlZHVj
ZSBoYW5ncyB3aGVuIGludGVycnVwdGVkIGJ5IFNJR0lOVCwKKyAgICAgICAgICAgIC8vIGJ1dCB3
ZSBzdGlsbCBnZXQgc29tZS4KKyAgICAgICAgICAgIGZvciAoOzspCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgRUdMaW50IHIgPSBtRUdMLT5jbGllbnRXYWl0U3luY0tIUihmZW5jZSwg
RUdMX1NZTkNfRkxVU0hfQ09NTUFORFNfQklUX0tIUiwgMCk7CisgICAgICAgICAgICAgICAgaWYg
KHIgIT0gRUdMX1RJTUVPVVRfRVhQSVJFRF9LSFIpCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
dXNsZWVwKDk5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1FR0wtPmRlc3Ryb3lTeW5j
S0hSKGZlbmNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30KKwor
dm9pZCBEaXNwbGF5T3pvbmU6OnRlcm1pbmF0ZSgpCit7CisgICAgU2FmZURlbGV0ZShtU2Nhbm5p
bmcpOworICAgIFNhZmVEZWxldGUobVBlbmRpbmcpOworICAgIFNhZmVEZWxldGUobURyYXdpbmcp
OworICAgIFNhZmVEZWxldGUobVVudXNlZCk7CisKKyAgICBpZiAobVByb2dyYW0pCisgICAgewor
ICAgICAgICBtRnVuY3Rpb25zR0wtPmRlbGV0ZVByb2dyYW0obVByb2dyYW0pOworICAgICAgICBt
RnVuY3Rpb25zR0wtPmRlbGV0ZVNoYWRlcihtVmVydGV4U2hhZGVyKTsKKyAgICAgICAgbUZ1bmN0
aW9uc0dMLT5kZWxldGVTaGFkZXIobUZyYWdtZW50U2hhZGVyKTsKKyAgICAgICAgbUZ1bmN0aW9u
c0dMLT5kZWxldGVCdWZmZXJzKDEsICZtVmVydGV4QnVmZmVyKTsKKyAgICAgICAgbUZ1bmN0aW9u
c0dMLT5kZWxldGVCdWZmZXJzKDEsICZtSW5kZXhCdWZmZXIpOworICAgICAgICBtUHJvZ3JhbSA9
IDA7CisgICAgfQorCisgICAgRGlzcGxheUdMOjp0ZXJtaW5hdGUoKTsKKworICAgIGlmIChtQ29u
dGV4dCkKKyAgICB7CisgICAgICAgIC8vIE1lc2EgbWlnaHQgY3Jhc2ggaWYgeW91IHRlcm1pbmF0
ZSBFR0wgd2l0aCBhIGNvbnRleHQgY3VycmVudAorICAgICAgICAvLyB0aGVuIHJlLWluaXRpYWxp
emUgRUdMLCBzbyBtYWtlIG91ciBjb250ZXh0IG5vdCBjdXJyZW50LgorICAgICAgICBtRUdMLT5t
YWtlQ3VycmVudChFR0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOworICAgICAgICBtRUdM
LT5kZXN0cm95Q29udGV4dChtQ29udGV4dCk7CisgICAgICAgIG1Db250ZXh0ID0gbnVsbHB0cjsK
KyAgICB9CisKKyAgICBTYWZlRGVsZXRlKG1GdW5jdGlvbnNHTCk7CisKKyAgICBpZiAobUVHTCkK
KyAgICB7CisgICAgICAgIG1FR0wtPnRlcm1pbmF0ZSgpOworICAgICAgICBTYWZlRGVsZXRlKG1F
R0wpOworICAgIH0KKworICAgIGRybU1vZGVGcmVlQ3J0YyhtQ1JUQyk7CisKKyAgICBpZiAobUdC
TSkKKyAgICB7CisgICAgICAgIGludCBmZCA9IGdibV9kZXZpY2VfZ2V0X2ZkKG1HQk0pOworICAg
ICAgICBnYm1fZGV2aWNlX2Rlc3Ryb3kobUdCTSk7CisgICAgICAgIG1HQk0gPSBudWxscHRyOwor
ICAgICAgICBjbG9zZShmZCk7CisgICAgfQorfQorCitTdXJmYWNlSW1wbCAqRGlzcGxheU96b25l
OjpjcmVhdGVXaW5kb3dTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpD
b25maWcgKmNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAm
YXR0cmlicykKK3sKKyAgICBCdWZmZXIgKmJ1ZmZlciA9IG5ldyBCdWZmZXIodGhpcywgR0JNX0JP
X1VTRV9SRU5ERVJJTkcsIEdCTV9GT1JNQVRfQVJHQjg4ODgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERSTV9GT1JNQVRfQVJHQjg4ODgsIERSTV9GT1JNQVRfWFJHQjg4ODgsIHRy
dWUsIHRydWUpOworICAgIGlmICghYnVmZmVyIHx8ICFidWZmZXItPmluaXRpYWxpemUocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBOYXRpdmVXaW5kb3cgKj4od2luZG93KSkpCisgICAgeworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIG5ldyBTdXJmYWNlT3pvbmUoc3Rh
dGUsIGdldFJlbmRlcmVyKCksIGJ1ZmZlcik7Cit9CisKK1N1cmZhY2VJbXBsICpEaXNwbGF5T3pv
bmU6OmNyZWF0ZVBidWZmZXJTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVn
bDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCit7Cisg
ICAgRUdMQXR0cmliIHdpZHRoICA9IGF0dHJpYnMuZ2V0KEVHTF9XSURUSCwgMCk7CisgICAgRUdM
QXR0cmliIGhlaWdodCA9IGF0dHJpYnMuZ2V0KEVHTF9IRUlHSFQsIDApOworICAgIEJ1ZmZlciAq
YnVmZmVyID0gbmV3IEJ1ZmZlcih0aGlzLCBHQk1fQk9fVVNFX1JFTkRFUklORywgR0JNX0ZPUk1B
VF9BUkdCODg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFJNX0ZPUk1BVF9B
UkdCODg4OCwgRFJNX0ZPUk1BVF9YUkdCODg4OCwgdHJ1ZSwgdHJ1ZSk7CisgICAgaWYgKCFidWZm
ZXIgfHwgIWJ1ZmZlci0+aW5pdGlhbGl6ZSh3aWR0aCwgaGVpZ2h0KSkKKyAgICB7CisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KKyAgICByZXR1cm4gbmV3IFN1cmZhY2VPem9uZShzdGF0
ZSwgZ2V0UmVuZGVyZXIoKSwgYnVmZmVyKTsKK30KKworU3VyZmFjZUltcGwgKkRpc3BsYXlPem9u
ZTo6Y3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUg
JnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZm
ZXIgc2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKK3sKKyAg
ICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1N1cmZhY2VJbXBs
ICpEaXNwbGF5T3pvbmU6OmNyZWF0ZVBpeG1hcFN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3Rh
dGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTmF0aXZlUGl4bWFwVHlwZSBuYXRpdmVQaXhtYXAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVn
bDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKworZWdsOjpFcnJvciBEaXNwbGF5T3pvbmU6OmdldERldmljZShE
ZXZpY2VJbXBsICoqZGV2aWNlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4g
ZWdsOjpFcnJvcihFR0xfQkFEX0RJU1BMQVkpOworfQorCitlZ2w6OkNvbmZpZ1NldCBEaXNwbGF5
T3pvbmU6OmdlbmVyYXRlQ29uZmlncygpCit7CisgICAgZWdsOjpDb25maWdTZXQgY29uZmlnczsK
KworICAgIGVnbDo6Q29uZmlnIGNvbmZpZzsKKyAgICBjb25maWcucmVkU2l6ZSAgICAgICAgICAg
PSA4OworICAgIGNvbmZpZy5ncmVlblNpemUgICAgICAgICA9IDg7CisgICAgY29uZmlnLmJsdWVT
aXplICAgICAgICAgID0gODsKKyAgICBjb25maWcuYWxwaGFTaXplICAgICAgICAgPSA4OworICAg
IGNvbmZpZy5kZXB0aFNpemUgICAgICAgICA9IDI0OworICAgIGNvbmZpZy5zdGVuY2lsU2l6ZSAg
ICAgICA9IDg7CisgICAgY29uZmlnLmJpbmRUb1RleHR1cmVSR0JBID0gRUdMX1RSVUU7CisgICAg
Y29uZmlnLnJlbmRlcmFibGVUeXBlICAgID0gRUdMX09QRU5HTF9FUzJfQklUOworICAgIGNvbmZp
Zy5zdXJmYWNlVHlwZSAgICAgICA9IEVHTF9XSU5ET1dfQklUIHwgRUdMX1BCVUZGRVJfQklUOwor
CisgICAgY29uZmlncy5hZGQoY29uZmlnKTsKKyAgICByZXR1cm4gY29uZmlnczsKK30KKworYm9v
bCBEaXNwbGF5T3pvbmU6OnRlc3REZXZpY2VMb3N0KCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2VnbDo6RXJyb3IgRGlzcGxheU96b25lOjpyZXN0b3JlTG9zdERldmljZSgpCit7CisgICAg
VU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfRElTUExBWSk7
Cit9CisKK2Jvb2wgRGlzcGxheU96b25lOjppc1ZhbGlkTmF0aXZlV2luZG93KEVHTE5hdGl2ZVdp
bmRvd1R5cGUgd2luZG93KSBjb25zdAoreworICAgIHJldHVybiB0cnVlOworfQorCitlZ2w6OkVy
cm9yIERpc3BsYXlPem9uZTo6Z2V0RHJpdmVyVmVyc2lvbihzdGQ6OnN0cmluZyAqdmVyc2lvbikg
Y29uc3QKK3sKKyAgICAqdmVyc2lvbiA9ICIiOworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9T
VUNDRVNTKTsKK30KKworZWdsOjpFcnJvciBEaXNwbGF5T3pvbmU6OndhaXRDbGllbnQoKSBjb25z
dAoreworICAgIC8vIFRPRE8oZmpoZW5pZ21hbikgSW1wbGVtZW50IHRoaXMuCisgICAgcmV0dXJu
IGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOworfQorCitlZ2w6OkVycm9yIERpc3BsYXlPem9uZTo6
d2FpdE5hdGl2ZShFR0xpbnQgZW5naW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZWdsOjpTdXJmYWNlICpkcmF3U3VyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVnbDo6U3VyZmFjZSAqcmVhZFN1cmZhY2UpIGNvbnN0Cit7CisgICAgLy8g
VE9ETyhmamhlbmlnbWFuKSBJbXBsZW1lbnQgdGhpcy4KKyAgICByZXR1cm4gZWdsOjpFcnJvcihF
R0xfU1VDQ0VTUyk7Cit9CisKK3ZvaWQgRGlzcGxheU96b25lOjpzZXRTd2FwSW50ZXJ2YWwoRUdM
U3VyZmFjZSBkcmF3YWJsZSwgU3dhcENvbnRyb2xEYXRhICpkYXRhKQoreworICAgIEFTU0VSVChk
YXRhICE9IG51bGxwdHIpOworfQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvb3pvbmUvRGlzcGxh
eU96b25lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL2VnbC9vem9uZS9EaXNwbGF5T3pvbmUuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL296
b25lL0Rpc3BsYXlPem9uZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjEwIEBACisvLwor
Ly8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgorLy8KKworLy8gRGlzcGxheU96b25lLmg6IE96b25lIGltcGxlbWVudGF0aW9uIG9mIGVn
bDo6RGlzcGxheQorCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0dMX0VHTF9PWk9ORV9ESVNQ
TEFZT1pPTkVfSF8KKyNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfR0xfRUdMX09aT05FX0RJU1BM
QVlPWk9ORV9IXworCisjaW5jbHVkZSA8eGY4NmRybS5oPgorI2luY2x1ZGUgPHhmODZkcm1Nb2Rl
Lmg+CisKKyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9n
bC9lZ2wvRGlzcGxheUVHTC5oIgorCitzdHJ1Y3QgZ2JtX2RldmljZTsKK3N0cnVjdCBnYm1fYm87
CisKK25hbWVzcGFjZSBnbAoreworY2xhc3MgRnJhbWVidWZmZXJTdGF0ZTsKK30KKworbmFtZXNw
YWNlIHJ4Cit7CisKK2NsYXNzIEZyYW1lYnVmZmVyR0w7CisKKy8vIFRPRE8oZmpoZW5pZ21hbikg
SW1wbGVtZW50IHN3YXAgY29udHJvbC4gIFRoZSBmb2xsb3dpbmcgc3RydWN0IHdpbGwgYmUgdXNl
ZCBmb3IgdGhhdC4KKy8vIFN0YXRlLXRyYWNraW5nIGRhdGEgZm9yIHRoZSBzd2FwIGNvbnRyb2wg
dG8gYWxsb3cgRGlzcGxheU96b25lIHRvIHJlbWVtYmVyIHBlcgorLy8gZHJhd2FibGUgaW5mb3Jt
YXRpb24gZm9yIHN3YXAgY29udHJvbC4KK3N0cnVjdCBTd2FwQ29udHJvbERhdGEgZmluYWwKK3sK
KyAgICBTd2FwQ29udHJvbERhdGEoKTsKKworICAgIC8vIFNldCBieSB0aGUgZHJhd2FibGUKKyAg
ICBpbnQgdGFyZ2V0U3dhcEludGVydmFsOworCisgICAgLy8gRGlzcGxheU96b25lLXNpZGUgc3Rh
dGUtdHJhY2tpbmcKKyAgICBpbnQgbWF4U3dhcEludGVydmFsOworICAgIGludCBjdXJyZW50U3dh
cEludGVydmFsOworfTsKKworY2xhc3MgRGlzcGxheU96b25lIGZpbmFsIDogcHVibGljIERpc3Bs
YXlFR0wKK3sKKyAgcHVibGljOgorICAgIHN0cnVjdCBOYXRpdmVXaW5kb3cKKyAgICB7CisgICAg
ICAgIGludDMyX3QgeDsKKyAgICAgICAgaW50MzJfdCB5OworICAgICAgICBpbnQzMl90IHdpZHRo
OworICAgICAgICBpbnQzMl90IGhlaWdodDsKKyAgICAgICAgaW50MzJfdCBib3JkZXJXaWR0aDsK
KyAgICAgICAgaW50MzJfdCBib3JkZXJIZWlnaHQ7CisgICAgICAgIGludDMyX3QgdmlzaWJsZTsK
KyAgICAgICAgaW50MzJfdCBkZXB0aDsKKyAgICB9OworCisgICAgY2xhc3MgQnVmZmVyIGZpbmFs
IDogYW5nbGU6Ok5vbkNvcHlhYmxlCisgICAgeworICAgICAgcHVibGljOgorICAgICAgICBCdWZm
ZXIoRGlzcGxheU96b25lICpkaXNwbGF5LAorICAgICAgICAgICAgICAgdWludDMyX3QgdXNlRmxh
Z3MsCisgICAgICAgICAgICAgICB1aW50MzJfdCBnYm1Gb3JtYXQsCisgICAgICAgICAgICAgICB1
aW50MzJfdCBkcm1Gb3JtYXQsCisgICAgICAgICAgICAgICB1aW50MzJfdCBkcm1Gb3JtYXRGQiwK
KyAgICAgICAgICAgICAgIGludCBkZXB0aEJpdHMsCisgICAgICAgICAgICAgICBpbnQgc3RlbmNp
bEJpdHMpOworCisgICAgICAgIH5CdWZmZXIoKTsKKyAgICAgICAgYm9vbCBpbml0aWFsaXplKGNv
bnN0IE5hdGl2ZVdpbmRvdyAqd2luZG93KTsKKyAgICAgICAgYm9vbCBpbml0aWFsaXplKGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KTsKKyAgICAgICAgdm9pZCByZXNldCgpOworICAgICAg
ICBib29sIHJlc2l6ZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCk7CisgICAgICAgIEZy
YW1lYnVmZmVyR0wgKmZyYW1lYnVmZmVyR0woY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJnN0
YXRlKTsKKyAgICAgICAgdm9pZCBwcmVzZW50KCk7CisgICAgICAgIHVpbnQzMl90IGdldERSTUZC
KCk7CisgICAgICAgIHZvaWQgYmluZFRleEltYWdlKCk7CisgICAgICAgIEdMdWludCBnZXRUZXh0
dXJlKCk7CisgICAgICAgIGludDMyX3QgZ2V0V2lkdGgoKSBjb25zdCB7IHJldHVybiBtV2lkdGg7
IH0KKyAgICAgICAgaW50MzJfdCBnZXRIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtSGVpZ2h0OyB9
CisgICAgICAgIEdMdWludCBnZXRHTEZCKCkgY29uc3QgeyByZXR1cm4gbUdMRkI7IH0KKyAgICAg
ICAgY29uc3QgTmF0aXZlV2luZG93ICpnZXROYXRpdmUoKSBjb25zdCB7IHJldHVybiBtTmF0aXZl
OyB9CisKKyAgICAgIHByaXZhdGU6CisgICAgICAgIERpc3BsYXlPem9uZSAqbURpc3BsYXk7Cisg
ICAgICAgIGNvbnN0IE5hdGl2ZVdpbmRvdyAqbU5hdGl2ZTsKKyAgICAgICAgaW50IG1XaWR0aDsK
KyAgICAgICAgaW50IG1IZWlnaHQ7CisgICAgICAgIGNvbnN0IGludCBtRGVwdGhCaXRzOworICAg
ICAgICBjb25zdCBpbnQgbVN0ZW5jaWxCaXRzOworICAgICAgICBjb25zdCB1aW50MzJfdCBtVXNl
RmxhZ3M7CisgICAgICAgIGNvbnN0IHVpbnQzMl90IG1HQk1Gb3JtYXQ7CisgICAgICAgIGNvbnN0
IHVpbnQzMl90IG1EUk1Gb3JtYXQ7CisgICAgICAgIGNvbnN0IHVpbnQzMl90IG1EUk1Gb3JtYXRG
QjsKKyAgICAgICAgZ2JtX2JvICptQk87CisgICAgICAgIGludCBtRE1BQnVmOworICAgICAgICBi
b29sIG1IYXNEUk1GQjsKKyAgICAgICAgdWludDMyX3QgbURSTUZCOworICAgICAgICBFR0xJbWFn
ZUtIUiBtSW1hZ2U7CisgICAgICAgIEdMdWludCBtQ29sb3JCdWZmZXI7CisgICAgICAgIEdMdWlu
dCBtRFNCdWZmZXI7CisgICAgICAgIEdMdWludCBtR0xGQjsKKyAgICAgICAgR0x1aW50IG1UZXh0
dXJlOworICAgIH07CisKKyAgICBEaXNwbGF5T3pvbmUoKTsKKyAgICB+RGlzcGxheU96b25lKCkg
b3ZlcnJpZGU7CisKKyAgICBlZ2w6OkVycm9yIGluaXRpYWxpemUoZWdsOjpEaXNwbGF5ICpkaXNw
bGF5KSBvdmVycmlkZTsKKyAgICB2b2lkIHRlcm1pbmF0ZSgpIG92ZXJyaWRlOworCisgICAgU3Vy
ZmFjZUltcGwgKmNyZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0
YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29u
ZmlnICpjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKKyAg
ICBTdXJmYWNlSW1wbCAqY3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3Rh
dGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBl
Z2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOworICAg
IFN1cmZhY2VJbXBsICpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6OlN1
cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgc2hhcmVI
YW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKKyAgICBTdXJmYWNlSW1w
bCAqY3JlYXRlUGl4bWFwU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNv
bmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmF0aXZl
UGl4bWFwVHlwZSBuYXRpdmVQaXhtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOworCisgICAg
ZWdsOjpDb25maWdTZXQgZ2VuZXJhdGVDb25maWdzKCkgb3ZlcnJpZGU7CisKKyAgICBib29sIHRl
c3REZXZpY2VMb3N0KCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciByZXN0b3JlTG9zdERldmlj
ZSgpIG92ZXJyaWRlOworCisgICAgYm9vbCBpc1ZhbGlkTmF0aXZlV2luZG93KEVHTE5hdGl2ZVdp
bmRvd1R5cGUgd2luZG93KSBjb25zdCBvdmVycmlkZTsKKworICAgIGVnbDo6RXJyb3IgZ2V0RGV2
aWNlKERldmljZUltcGwgKipkZXZpY2UpIG92ZXJyaWRlOworCisgICAgZWdsOjpFcnJvciB3YWl0
Q2xpZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciB3YWl0TmF0aXZlKEVHTGlu
dCBlbmdpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3VyZmFjZSAqZHJhd1N1
cmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3VyZmFjZSAqcmVhZFN1cmZh
Y2UpIGNvbnN0IG92ZXJyaWRlOworCisgICAgLy8gVE9ETyhmamhlbmlnbWFuKSBJbXBsZW1lbnQg
dGhpcy4KKyAgICAvLyBTd2FwIGludGVydmFsIGNhbiBiZSBzZXQgZ2xvYmFsbHkgb3IgcGVyIGRy
YXdhYmxlLgorICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBtYWtlIHN1cmUgdGhlIGRyYXdhYmxl
J3Mgc3dhcCBpbnRlcnZhbCBpcyB0aGUKKyAgICAvLyBvbmUgcmVxdWlyZWQgc28gdGhhdCB0aGUg
c3Vic2VxdWVudCBzd2FwQnVmZmVycyBhY3RzIGFzIGV4cGVjdGVkLgorICAgIHZvaWQgc2V0U3dh
cEludGVydmFsKEVHTFN1cmZhY2UgZHJhd2FibGUsIFN3YXBDb250cm9sRGF0YSAqZGF0YSk7CisK
KyAgICBlZ2w6OkVycm9yIGdldERyaXZlclZlcnNpb24oc3RkOjpzdHJpbmcgKnZlcnNpb24pIGNv
bnN0IG92ZXJyaWRlOworCisgIHByaXZhdGU6CisgICAgR0x1aW50IG1ha2VTaGFkZXIoR0x1aW50
IHR5cGUsIGNvbnN0IGNoYXIgKnNyYyk7CisgICAgdm9pZCBkcmF3QnVmZmVyKEJ1ZmZlciAqYnVm
ZmVyKTsKKyAgICB2b2lkIGRyYXdXaXRoQmxpdChCdWZmZXIgKmJ1ZmZlcik7CisgICAgdm9pZCBk
cmF3V2l0aFRleHR1cmUoQnVmZmVyICpidWZmZXIpOworICAgIHZvaWQgZmx1c2hHTCgpOworICAg
IHZvaWQgcHJlc2VudFNjcmVlbigpOworICAgIHN0YXRpYyB2b2lkIHBhZ2VGbGlwSGFuZGxlcihp
bnQgZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzZXF1
ZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHR2X3Nl
YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHR2X3VzZWMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEpOworICAgIHZvaWQg
cGFnZUZsaXBIYW5kbGVyKHVuc2lnbmVkIGludCBzZXF1ZW5jZSwgdWludDY0X3QgdHYpOworCisg
ICAgLy8gVE9ETyhmamhlbmlnbWFuKSBJbXBsZW1lbnQgc3dhcCBjb250cm9sLiAgVGhlIGZvbGxv
d2luZyBzdHVmZiB3aWxsIGJlIHVzZWQgZm9yIHRoYXQuCisgICAgZW51bSBjbGFzcyBTd2FwQ29u
dHJvbAorICAgIHsKKyAgICAgICAgQUJTRU5ULAorICAgICAgICBFWFQsCisgICAgICAgIE1FU0Es
CisgICAgICAgIFNHSSwKKyAgICB9OworICAgIFN3YXBDb250cm9sIG1Td2FwQ29udHJvbDsKKyAg
ICBpbnQgbU1pblN3YXBJbnRlcnZhbDsKKyAgICBpbnQgbU1heFN3YXBJbnRlcnZhbDsKKyAgICBp
bnQgbUN1cnJlbnRTd2FwSW50ZXJ2YWw7CisKKyAgICBnYm1fZGV2aWNlICptR0JNOworICAgIGRy
bU1vZGVDb25uZWN0b3JQdHIgbUNvbm5lY3RvcjsKKyAgICBkcm1Nb2RlTW9kZUluZm9QdHIgbU1v
ZGU7CisgICAgZHJtTW9kZUNydGNQdHIgbUNSVEM7CisgICAgYm9vbCBtU2V0Q1JUQzsKKworICAg
IGludDMyX3QgbVdpZHRoOworICAgIGludDMyX3QgbUhlaWdodDsKKworICAgIC8vIFRocmVlIHNj
YW5vdXQgYnVmZmVycyBjeWNsZSB0aHJvdWdoIGZvdXIgc3RhdGVzLiAgVGhlIHN0YXRlIG9mIGEg
YnVmZmVyCisgICAgLy8gaXMgaW5kaWNhdGVkIGJ5IHdoaWNoIG9mIHRoZXNlIHBvaW50ZXJzIHBv
aW50cyB0byBpdC4KKyAgICAvLyBUT0RPKGZqaGVuaWdtYW4pIEl0IG1pZ2h0IGJlIHNpbXBsZXIv
Y2xlYXJlciB0byB1c2UgYSByaW5nIGJ1ZmZlci4KKyAgICBCdWZmZXIgKm1TY2FubmluZzsKKyAg
ICBCdWZmZXIgKm1QZW5kaW5nOworICAgIEJ1ZmZlciAqbURyYXdpbmc7CisgICAgQnVmZmVyICpt
VW51c2VkOworCisgICAgR0x1aW50IG1Qcm9ncmFtOworICAgIEdMdWludCBtVmVydGV4U2hhZGVy
OworICAgIEdMdWludCBtRnJhZ21lbnRTaGFkZXI7CisgICAgR0x1aW50IG1WZXJ0ZXhCdWZmZXI7
CisgICAgR0x1aW50IG1JbmRleEJ1ZmZlcjsKKyAgICBHTGludCBtQ2VudGVyVW5pZm9ybTsKKyAg
ICBHTGludCBtV2luZG93U2l6ZVVuaWZvcm07CisgICAgR0xpbnQgbUJvcmRlclNpemVVbmlmb3Jt
OworICAgIEdMaW50IG1EZXB0aFVuaWZvcm07Cit9OworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNl
bmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfR0xfRUdMX09aT05FX0RJU1BMQVlPWk9ORV9IXwpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Vn
bC9vem9uZS9TdXJmYWNlT3pvbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvb3pvbmUvU3VyZmFjZU96b25lLmNw
cAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvZWdsL296b25lL1N1cmZhY2VPem9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw5OCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFN1cmZhY2VPem9uZS5jcHA6IE96b25l
IGltcGxlbWVudGF0aW9uIG9mIGVnbDo6U3VyZmFjZUdMCisKKyNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9nbC9lZ2wvb3pvbmUvU3VyZmFjZU96b25lLmgiCisKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9nbC9GcmFtZWJ1ZmZlckdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZ2wvZWdsL296b25lL0Rpc3BsYXlPem9uZS5oIgorCituYW1lc3BhY2UgcngKK3sKKworU3Vy
ZmFjZU96b25lOjpTdXJmYWNlT3pvbmUoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyZXJHTCAqcmVuZGVyZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEaXNwbGF5T3pvbmU6OkJ1ZmZlciAqYnVmZmVyKQorICAgIDog
U3VyZmFjZUdMKHN0YXRlLCByZW5kZXJlciksIG1CdWZmZXIoYnVmZmVyKQoreworfQorCitTdXJm
YWNlT3pvbmU6On5TdXJmYWNlT3pvbmUoKQoreworICAgIGRlbGV0ZSBtQnVmZmVyOworfQorCitl
Z2w6OkVycm9yIFN1cmZhY2VPem9uZTo6aW5pdGlhbGl6ZSgpCit7CisgICAgcmV0dXJuIGVnbDo6
RXJyb3IoRUdMX1NVQ0NFU1MpOworfQorCitGcmFtZWJ1ZmZlckltcGwgKlN1cmZhY2VPem9uZTo6
Y3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZzdGF0
ZSkKK3sKKyAgICByZXR1cm4gbUJ1ZmZlci0+ZnJhbWVidWZmZXJHTChzdGF0ZSk7Cit9CisKK2Vn
bDo6RXJyb3IgU3VyZmFjZU96b25lOjptYWtlQ3VycmVudCgpCit7CisgICAgcmV0dXJuIGVnbDo6
RXJyb3IoRUdMX1NVQ0NFU1MpOworfQorCitlZ2w6OkVycm9yIFN1cmZhY2VPem9uZTo6c3dhcCgp
Cit7CisgICAgbUJ1ZmZlci0+cHJlc2VudCgpOworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9T
VUNDRVNTKTsKK30KKworZWdsOjpFcnJvciBTdXJmYWNlT3pvbmU6OnBvc3RTdWJCdWZmZXIoRUdM
aW50IHgsIEVHTGludCB5LCBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpCit7CisgICAgVU5J
TVBMRU1FTlRFRCgpOworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKK30KKwor
ZWdsOjpFcnJvciBTdXJmYWNlT3pvbmU6OnF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xpbnQg
YXR0cmlidXRlLCB2b2lkICoqdmFsdWUpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJl
dHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKK30KKworZWdsOjpFcnJvciBTdXJmYWNlT3pv
bmU6OmJpbmRUZXhJbWFnZShnbDo6VGV4dHVyZSAqdGV4dHVyZSwgRUdMaW50IGJ1ZmZlcikKK3sK
KyAgICBtQnVmZmVyLT5iaW5kVGV4SW1hZ2UoKTsKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xf
U1VDQ0VTUyk7Cit9CisKK2VnbDo6RXJyb3IgU3VyZmFjZU96b25lOjpyZWxlYXNlVGV4SW1hZ2Uo
RUdMaW50IGJ1ZmZlcikKK3sKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7Cit9
CisKK3ZvaWQgU3VyZmFjZU96b25lOjpzZXRTd2FwSW50ZXJ2YWwoRUdMaW50IGludGVydmFsKQor
eworICAgIG1Td2FwQ29udHJvbC50YXJnZXRTd2FwSW50ZXJ2YWwgPSBpbnRlcnZhbDsKK30KKwor
RUdMaW50IFN1cmZhY2VPem9uZTo6Z2V0V2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBtQnVm
ZmVyLT5nZXRXaWR0aCgpOworfQorCitFR0xpbnQgU3VyZmFjZU96b25lOjpnZXRIZWlnaHQoKSBj
b25zdAoreworICAgIHJldHVybiBtQnVmZmVyLT5nZXRIZWlnaHQoKTsKK30KKworRUdMaW50IFN1
cmZhY2VPem9uZTo6aXNQb3N0U3ViQnVmZmVyU3VwcG9ydGVkKCkgY29uc3QKK3sKKyAgICBVTklN
UExFTUVOVEVEKCk7CisgICAgcmV0dXJuIEVHTF9GQUxTRTsKK30KKworRUdMaW50IFN1cmZhY2VP
em9uZTo6Z2V0U3dhcEJlaGF2aW9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gRUdMX0JVRkZFUl9Q
UkVTRVJWRUQ7Cit9Cit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvb3pvbmUvU3VyZmFjZU96b25lLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL2VnbC9vem9uZS9TdXJmYWNlT3pvbmUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL296b25lL1N1cmZh
Y2VPem9uZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8vCisvLyBDb3B5cmln
aHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLwor
CisvLyBTdXJmYWNlT3pvbmUuaDogT3pvbmUgaW1wbGVtZW50YXRpb24gb2YgZWdsOjpTdXJmYWNl
R0wKKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9HTF9FR0xfT1pPTkVfU1VSRkFDRU9aT05F
X0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0dMX0VHTF9PWk9ORV9TVVJGQUNFT1pPTkVf
SF8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1N1cmZhY2VHTC5oIgorI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9vem9uZS9EaXNwbGF5T3pvbmUuaCIKKworbmFt
ZXNwYWNlIHJ4Cit7CisKK2NsYXNzIFN1cmZhY2VPem9uZSA6IHB1YmxpYyBTdXJmYWNlR0wKK3sK
KyAgcHVibGljOgorICAgIFN1cmZhY2VPem9uZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3Rh
dGUsCisgICAgICAgICAgICAgICAgIFJlbmRlcmVyR0wgKnJlbmRlcmVyLAorICAgICAgICAgICAg
ICAgICBEaXNwbGF5T3pvbmU6OkJ1ZmZlciAqYnVmZmVyKTsKKyAgICB+U3VyZmFjZU96b25lKCkg
b3ZlcnJpZGU7CisKKyAgICBGcmFtZWJ1ZmZlckltcGwgKmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZl
cihjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUpIG92ZXJyaWRlOworCisgICAgZWds
OjpFcnJvciBpbml0aWFsaXplKCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBtYWtlQ3VycmVu
dCgpIG92ZXJyaWRlOworCisgICAgZWdsOjpFcnJvciBzd2FwKCkgb3ZlcnJpZGU7CisgICAgZWds
OjpFcnJvciBwb3N0U3ViQnVmZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBF
R0xpbnQgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIHF1ZXJ5U3VyZmFjZVBvaW50
ZXJBTkdMRShFR0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUpIG92ZXJyaWRlOworICAgIGVn
bDo6RXJyb3IgYmluZFRleEltYWdlKGdsOjpUZXh0dXJlICp0ZXh0dXJlLCBFR0xpbnQgYnVmZmVy
KSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIHJlbGVhc2VUZXhJbWFnZShFR0xpbnQgYnVmZmVy
KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFN3YXBJbnRlcnZhbChFR0xpbnQgaW50ZXJ2YWwpIG92
ZXJyaWRlOworCisgICAgRUdMaW50IGdldFdpZHRoKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRUdM
aW50IGdldEhlaWdodCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgRUdMaW50IGlzUG9zdFN1YkJ1
ZmZlclN1cHBvcnRlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEVHTGludCBnZXRTd2FwQmVoYXZp
b3IoKSBjb25zdCBvdmVycmlkZTsKKworICBwcml2YXRlOgorICAgIERpc3BsYXlPem9uZTo6QnVm
ZmVyICptQnVmZmVyOworCisgICAgLy8gVE9ETyhmamhlbmlnbWFuKSBJbXBsZW1lbnQgc3dhcCBj
b250cm9sLiAgVGhpcyB3aWxsIGJlIHVzZWQgZm9yIHRoYXQuCisgICAgU3dhcENvbnRyb2xEYXRh
IG1Td2FwQ29udHJvbDsKK307Cit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJB
TkdMRV9SRU5ERVJFUl9HTF9FR0xfT1pPTkVfU1VSRkFDRU9aT05FX0hfCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L0Rpc3BsYXlHTFgu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9nbHgvRGlzcGxheUdMWC5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvRGlzcGxheUdM
WC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwLDYgKzEwLDggQEAKIAogI2luY2x1ZGUgPEVHTC9l
Z2xleHQuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y3N0cmluZz4KKyNpbmNs
dWRlIDxmc3RyZWFtPgogCiAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvQ29uZmlnLmgiCkBAIC0xNywxMCArMTksNTkgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9T
dXJmYWNlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L1BidWZmZXJTdXJm
YWNlR0xYLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L1dpbmRvd1N1cmZh
Y2VHTFguaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJlckdMLmgiCiAj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvcmVuZGVyZXJnbF91dGlscy5oIgogI2luY2x1
ZGUgInRoaXJkX3BhcnR5L2xpYlhOVkN0cmwvTlZDdHJsLmgiCiAjaW5jbHVkZSAidGhpcmRfcGFy
dHkvbGliWE5WQ3RybC9OVkN0cmxMaWIuaCIKIAorbmFtZXNwYWNlCit7CisKKy8vIFNjYW4gL2V0
Yy9hdGkvYW1kcGNzZGIuZGVmYXVsdCBmb3IgIlJlbGVhc2VWZXJzaW9uIi4KKy8vIFJldHVybiBl
bXB0eSBzdHJpbmcgb24gZmFpbGluZy4KK2VnbDo6RXJyb3IgR2V0QU1ERHJpdmVyVmVyc2lvbihz
dGQ6OnN0cmluZyAqdmVyc2lvbikKK3sKKyAgICAqdmVyc2lvbiA9ICIiOworCisgICAgY29uc3Qg
Y2hhciBrQU1ERHJpdmVySW5mb0ZpbGVOYW1lW10gPSAiL2V0Yy9hdGkvYW1kcGNzZGIuZGVmYXVs
dCI7CisgICAgc3RkOjppZnN0cmVhbSBmaWxlKGtBTUREcml2ZXJJbmZvRmlsZU5hbWUpOworCisg
ICAgaWYgKCFmaWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NF
U1MpOworICAgIH0KKworICAgIHN0ZDo6c3RyaW5nIGxpbmU7CisgICAgd2hpbGUgKHN0ZDo6Z2V0
bGluZShmaWxlLCBsaW5lKSkKKyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGtSZWxl
YXNlVmVyc2lvbltdID0gIlJlbGVhc2VWZXJzaW9uPSI7CisgICAgICAgIGlmIChsaW5lLmNvbXBh
cmUoMCwgc3RkOjpzdHJsZW4oa1JlbGVhc2VWZXJzaW9uKSwga1JlbGVhc2VWZXJzaW9uKSAhPSAw
KQorICAgICAgICB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAg
IGNvbnN0IHNpemVfdCBiZWdpbiA9IGxpbmUuZmluZF9maXJzdF9vZigiMDEyMzQ1Njc4OSIpOwor
ICAgICAgICBpZiAoYmVnaW4gPT0gc3RkOjpzdHJpbmc6Om5wb3MpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgY29uc3Qgc2l6ZV90IGVuZCA9
IGxpbmUuZmluZF9maXJzdF9ub3Rfb2YoIjAxMjM0NTY3ODkuIiwgYmVnaW4pOworICAgICAgICBp
ZiAoZW5kID09IHN0ZDo6c3RyaW5nOjpucG9zKQorICAgICAgICB7CisgICAgICAgICAgICAqdmVy
c2lvbiA9IGxpbmUuc3Vic3RyKGJlZ2luKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAg
ICAgIHsKKyAgICAgICAgICAgICp2ZXJzaW9uID0gbGluZS5zdWJzdHIoYmVnaW4sIGVuZCAtIGJl
Z2luKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7
CisgICAgfQorICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKK30KKworfSAgLy8g
YW5vbnltb3VzIG5hbWVzcGFjZQorCiBuYW1lc3BhY2UgcngKIHsKIApAQCAtNjcsNiArMTE4LDcg
QEAgRGlzcGxheUdMWDo6RGlzcGxheUdMWCgpCiAgICAgICBtSGFzTXVsdGlzYW1wbGUoZmFsc2Up
LAogICAgICAgbUhhc0FSQkNyZWF0ZUNvbnRleHQoZmFsc2UpLAogICAgICAgbUhhc0FSQkNyZWF0
ZUNvbnRleHRQcm9maWxlKGZhbHNlKSwKKyAgICAgIG1IYXNBUkJDcmVhdGVDb250ZXh0Um9idXN0
bmVzcyhmYWxzZSksCiAgICAgICBtSGFzRVhUQ3JlYXRlQ29udGV4dEVTMlByb2ZpbGUoZmFsc2Up
LAogICAgICAgbVN3YXBDb250cm9sKFN3YXBDb250cm9sOjpBYnNlbnQpLAogICAgICAgbU1pblN3
YXBJbnRlcnZhbCgwKSwKQEAgLTEwOSw4ICsxNjEsMTIgQEAgZWdsOjpFcnJvciBEaXNwbGF5R0xY
Ojppbml0aWFsaXplKGVnbDo6RAogICAgIG1IYXNNdWx0aXNhbXBsZSAgICAgID0gbUdMWC5taW5v
clZlcnNpb24gPiAzIHx8IG1HTFguaGFzRXh0ZW5zaW9uKCJHTFhfQVJCX211bHRpc2FtcGxlIik7
CiAgICAgbUhhc0FSQkNyZWF0ZUNvbnRleHQgPSBtR0xYLmhhc0V4dGVuc2lvbigiR0xYX0FSQl9j
cmVhdGVfY29udGV4dCIpOwogICAgIG1IYXNBUkJDcmVhdGVDb250ZXh0UHJvZmlsZSAgICA9IG1H
TFguaGFzRXh0ZW5zaW9uKCJHTFhfQVJCX2NyZWF0ZV9jb250ZXh0X3Byb2ZpbGUiKTsKKyAgICBt
SGFzQVJCQ3JlYXRlQ29udGV4dFJvYnVzdG5lc3MgPSBtR0xYLmhhc0V4dGVuc2lvbigiR0xYX0FS
Ql9jcmVhdGVfY29udGV4dF9yb2J1c3RuZXNzIik7CiAgICAgbUhhc0VYVENyZWF0ZUNvbnRleHRF
UzJQcm9maWxlID0gbUdMWC5oYXNFeHRlbnNpb24oIkdMWF9FWFRfY3JlYXRlX2NvbnRleHRfZXMy
X3Byb2ZpbGUiKTsKIAorICAgIHN0ZDo6c3RyaW5nIGNsaWVudFZlbmRvciA9IG1HTFguZ2V0Q2xp
ZW50U3RyaW5nKEdMWF9WRU5ET1IpOworICAgIG1Jc01lc2EgICAgICAgICAgICAgICAgICA9IGNs
aWVudFZlbmRvci5maW5kKCJNZXNhIikgIT0gc3RkOjpzdHJpbmc6Om5wb3M7CisKICAgICAvLyBD
aG9vc2UgdGhlIHN3YXBfY29udHJvbCBleHRlbnNpb24gdG8gdXNlLCBpZiBhbnkuCiAgICAgLy8g
VGhlIEVYVCB2ZXJzaW9uIGlzIGJldHRlciBhcyBpdCBhbGxvd3MgZ2xYU3dhcEludGVydmFsIHRv
IGJlIGNhbGxlZCBwZXIKICAgICAvLyB3aW5kb3csIHdoaWxlIHdlJ2xsIHBvdGVudGlhbGx5IG5l
ZWQgdG8gY2hhbmdlIHRoZSBzd2FwIGludGVydmFsIG9uIGVhY2gKQEAgLTMwMSwxMyArMzU3LDYg
QEAgZWdsOjpFcnJvciBEaXNwbGF5R0xYOjppbml0aWFsaXplKGVnbDo6RAogCiAgICAgc3luY1hD
b21tYW5kcygpOwogCi0gICAgc3RkOjpzdHJpbmcgcmVuZGVyZXJTdHJpbmcgPQotICAgICAgICBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihtRnVuY3Rpb25zR0wtPmdldFN0cmluZyhHTF9S
RU5ERVJFUikpOwotICAgIG1Jc01lc2EgPSByZW5kZXJlclN0cmluZy5maW5kKCJNZXNhIikgIT0g
c3RkOjpzdHJpbmc6Om5wb3M7Ci0KLSAgICBzdGQ6OnN0cmluZyB2ZXJzaW9uOwotICAgIGdldERy
aXZlclZlcnNpb24oJnZlcnNpb24pOwotCiAgICAgcmV0dXJuIERpc3BsYXlHTDo6aW5pdGlhbGl6
ZShkaXNwbGF5KTsKIH0KIApAQCAtMzMyLDE4ICszODEsMjAgQEAgdm9pZCBEaXNwbGF5R0xYOjp0
ZXJtaW5hdGUoKQogICAgIFNhZmVEZWxldGUobUZ1bmN0aW9uc0dMKTsKIH0KIAotU3VyZmFjZUlt
cGwgKkRpc3BsYXlHTFg6OmNyZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgZWdsOjpDb25maWcgKmNv
bmZpZ3VyYXRpb24sCitTdXJmYWNlSW1wbCAqRGlzcGxheUdMWDo6Y3JlYXRlV2luZG93U3VyZmFj
ZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2ZVdp
bmRvd1R5cGUgd2luZG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiB7CiAgICAgQVNTRVJUKGNv
bmZpZ0lkVG9HTFhDb25maWcuY291bnQoY29uZmlndXJhdGlvbi0+Y29uZmlnSUQpID4gMCk7CiAg
ICAgZ2x4OjpGQkNvbmZpZyBmYkNvbmZpZyA9IGNvbmZpZ0lkVG9HTFhDb25maWdbY29uZmlndXJh
dGlvbi0+Y29uZmlnSURdOwogCi0gICAgcmV0dXJuIG5ldyBXaW5kb3dTdXJmYWNlR0xYKG1HTFgs
IHRoaXMsIHRoaXMtPmdldFJlbmRlcmVyKCksIHdpbmRvdywgbUdMWC5nZXREaXNwbGF5KCksCisg
ICAgcmV0dXJuIG5ldyBXaW5kb3dTdXJmYWNlR0xYKHN0YXRlLCBtR0xYLCB0aGlzLCBnZXRSZW5k
ZXJlcigpLCB3aW5kb3csIG1HTFguZ2V0RGlzcGxheSgpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtQ29udGV4dCwgZmJDb25maWcpOwogfQogCi1TdXJmYWNlSW1wbCAqRGlzcGxh
eUdMWDo6Y3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRp
b24sCitTdXJmYWNlSW1wbCAqRGlzcGxheUdMWDo6Y3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3Qg
ZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmli
dXRlTWFwICZhdHRyaWJzKQogewogICAgIEFTU0VSVChjb25maWdJZFRvR0xYQ29uZmlnLmNvdW50
KGNvbmZpZ3VyYXRpb24tPmNvbmZpZ0lEKSA+IDApOwpAQCAtMzUzLDExICs0MDQsMTIgQEAgU3Vy
ZmFjZUltcGwgKkRpc3BsYXlHTFg6OmNyZWF0ZVBidWZmZXJTdQogICAgIEVHTGludCBoZWlnaHQg
PSBzdGF0aWNfY2FzdDxFR0xpbnQ+KGF0dHJpYnMuZ2V0KEVHTF9IRUlHSFQsIDApKTsKICAgICBi
b29sIGxhcmdlc3QgPSAoYXR0cmlicy5nZXQoRUdMX0xBUkdFU1RfUEJVRkZFUiwgRUdMX0ZBTFNF
KSA9PSBFR0xfVFJVRSk7CiAKLSAgICByZXR1cm4gbmV3IFBidWZmZXJTdXJmYWNlR0xYKHRoaXMt
PmdldFJlbmRlcmVyKCksIHdpZHRoLCBoZWlnaHQsIGxhcmdlc3QsIG1HTFgsIG1Db250ZXh0LAor
ICAgIHJldHVybiBuZXcgUGJ1ZmZlclN1cmZhY2VHTFgoc3RhdGUsIGdldFJlbmRlcmVyKCksIHdp
ZHRoLCBoZWlnaHQsIGxhcmdlc3QsIG1HTFgsIG1Db250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmJDb25maWcpOwogfQogCi1TdXJmYWNlSW1wbCogRGlzcGxheUdMWDo6
Y3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3Vy
YXRpb24sCitTdXJmYWNlSW1wbCAqRGlzcGxheUdMWDo6Y3JlYXRlUGJ1ZmZlckZyb21DbGllbnRC
dWZmZXIoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpj
b25maWd1cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBzaGFyZUhhbmRsZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJp
YnV0ZU1hcCAmYXR0cmlicykKIHsKQEAgLTM2NSw3ICs0MTcsOCBAQCBTdXJmYWNlSW1wbCogRGlz
cGxheUdMWDo6Y3JlYXRlUGJ1ZmZlckZyCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVN1cmZh
Y2VJbXBsICpEaXNwbGF5R0xYOjpjcmVhdGVQaXhtYXBTdXJmYWNlKGNvbnN0IGVnbDo6Q29uZmln
ICpjb25maWd1cmF0aW9uLAorU3VyZmFjZUltcGwgKkRpc3BsYXlHTFg6OmNyZWF0ZVBpeG1hcFN1
cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRp
b24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYXRpdmVQ
aXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQogewpAQCAtNDE4
LDgxICs0NzEsODkgQEAgZWdsOjpFcnJvciBEaXNwbGF5R0xYOjppbml0aWFsaXplQ29udGV4dAog
CiAgICAgLy8gSXQgaXMgY29tbW9ubHkgYXNzdW1lZCB0aGF0IGdsWENyZWF0ZUNvbnRleHRBdHRy
aWIgd2lsbCBjcmVhdGUgYSBjb250ZXh0CiAgICAgLy8gb2YgdGhlIGhpZ2hlc3QgdmVyc2lvbiBw
b3NzaWJsZSBidXQgaXQgaXMgbm90IHNwZWNpZmllZCBpbiB0aGUgc3BlYyBhbmQKLSAgICAvLyBp
cyBub3QgdHJ1ZSBvbiB0aGUgTWVzYSBkcml2ZXJzLiBJbnN0ZWFkIHdlIHRyeSB0byBjcmVhdGUg
YSBjb250ZXh0IHBlcgotICAgIC8vIEdMIHZlcnNpb24gdW50aWwgd2Ugc3VjY2VlZCwgc3RhcnRp
bmcgZnJvbSBuZXdlciB2ZXJzaW9uLiBXaGVuIHRoZSBkZWZhdWx0Ci0gICAgLy8gcGxhdGZvcm0g
aXMgc2VsZWN0ZWQsIGlmIG5vIGRlc2t0b3AgY29udGV4dCBjYW4gYmUgY3JlYXRlZCwgd2UgZmFs
bGJhY2sgdG8KLSAgICAvLyBhbiBFUyBjb250ZXh0LgotICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYK
LSAgICBjb25zdCBnbDo6VmVyc2lvbiBkZXNrdG9wVmVyc2lvbnNGcm9tM18yW10gPSB7Ci0gICAg
ICAgIGdsOjpWZXJzaW9uKDQsIDUpLAotICAgICAgICBnbDo6VmVyc2lvbig0LCA0KSwKLSAgICAg
ICAgZ2w6OlZlcnNpb24oNCwgMyksCi0gICAgICAgIGdsOjpWZXJzaW9uKDQsIDIpLAotICAgICAg
ICBnbDo6VmVyc2lvbig0LCAxKSwKLSAgICAgICAgZ2w6OlZlcnNpb24oNCwgMCksCi0gICAgICAg
IGdsOjpWZXJzaW9uKDMsIDMpLAotICAgICAgICBnbDo6VmVyc2lvbigzLCAyKSwKKyAgICAvLyBp
cyBub3QgdHJ1ZSBvbiB0aGUgTWVzYSBkcml2ZXJzLiBPbiBNZXNhLCBJbnN0ZWFkIHdlIHRyeSB0
byBjcmVhdGUgYQorICAgIC8vIGNvbnRleHQgcGVyIEdMIHZlcnNpb24gdW50aWwgd2Ugc3VjY2Vl
ZCwgc3RhcnRpbmcgZnJvbSBuZXdlciB2ZXJzaW9uLgorICAgIC8vIE9uIGJvdGggTWVzYSBhbmQg
b3RoZXIgZHJpdmVycyB3ZSB0cnkgdG8gY3JlYXRlIGEgZGVza3RvcCBjb250ZXh0IGFuZCBmYWxs
CisgICAgLy8gYmFjayB0byBFUyBjb250ZXh0LgorICAgIC8vIFRoZSBjb2RlIGNvdWxkIGJlIHNp
bXBsZXIgaWYgdGhlIE1lc2EgY29kZSBwYXRoIHdhcyB1c2VkIGZvciBhbGwgZHJpdmVycywKKyAg
ICAvLyBob3dldmVyIHRoZSBjb3N0IG9mIGZhaWxpbmcgYSBjb250ZXh0IGNyZWF0aW9uIGNhbiBi
ZSBoaWdoICgzIG1pbGxpc2Vjb25kcworICAgIC8vIGZvciB0aGUgTlZJRElBIGRyaXZlcikuIFRo
ZSBnb29kIHRoaW5nIGlzIHRoYXQgZmFpbGVkIGNvbnRleHQgY3JlYXRpb24gb25seQorICAgIC8v
IHRha2VzIDAuMSBtaWxsaXNlY29uZHMgb24gTWVzYS4KKworICAgIHN0cnVjdCBDb250ZXh0Q3Jl
YXRpb25JbmZvCisgICAgeworICAgICAgICBFR0xpbnQgZGlzcGxheVR5cGU7CisgICAgICAgIGlu
dCBwcm9maWxlRmxhZzsKKyAgICAgICAgT3B0aW9uYWw8Z2w6OlZlcnNpb24+IHZlcnNpb247CiAg
ICAgfTsKLSAgICBjb25zdCBnbDo6VmVyc2lvbiBkZXNrdG9wVmVyc2lvbnNQcmUzXzJbXSA9IHsK
LSAgICAgICAgZ2w6OlZlcnNpb24oMywgMSksCi0gICAgICAgIGdsOjpWZXJzaW9uKDMsIDApLAot
ICAgICAgICBnbDo6VmVyc2lvbigyLCAwKSwKLSAgICAgICAgZ2w6OlZlcnNpb24oMSwgNSksCi0g
ICAgICAgIGdsOjpWZXJzaW9uKDEsIDQpLAotICAgICAgICBnbDo6VmVyc2lvbigxLCAzKSwKLSAg
ICAgICAgZ2w6OlZlcnNpb24oMSwgMiksCi0gICAgICAgIGdsOjpWZXJzaW9uKDEsIDEpLAotICAg
ICAgICBnbDo6VmVyc2lvbigxLCAwKSwKKworICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgICAv
LyBGb3IgcmVndWxhciBkcml2ZXJzIHdlIHRyeSB0byBjcmVhdGUgYSBjb3JlLCBjb21wYXRpYmls
aXR5LCB0aGVuIEVTIGNvbnRleHQuCisgICAgLy8gV2l0aG91dCByZXF1aXJpbmcgYW55IHNwZWNp
ZmljIHZlcnNpb24gKHRoZSBPcHRpb25hbCB2ZXJzaW9uIGlzIHVuZGVmaW5lZCkuCisgICAgY29u
c3QgQ29udGV4dENyZWF0aW9uSW5mbyBjb250ZXh0c1RvVHJ5W10gPSB7CisgICAgICAgIHsgRUdM
X1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFLCBHTFhfQ09OVEVYVF9DT1JFX1BST0ZJ
TEVfQklUX0FSQiwge30gfSwKKyAgICAgICAgeyBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVO
R0xfQU5HTEUsIDAsIHt9IH0sCisgICAgICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BF
TkdMRVNfQU5HTEUsIEdMWF9DT05URVhUX0VTMl9QUk9GSUxFX0JJVF9FWFQsIHt9IH0sCiAgICAg
fTsKLSAgICBjb25zdCBnbDo6VmVyc2lvbiBlc1ZlcnNpb25zRnJvbTJfMFtdID0gewotICAgICAg
ICBnbDo6VmVyc2lvbigzLCAyKSwKLSAgICAgICAgZ2w6OlZlcnNpb24oMywgMSksCi0gICAgICAg
IGdsOjpWZXJzaW9uKDMsIDApLAotICAgICAgICBnbDo6VmVyc2lvbigyLCAwKSwKKworICAgIC8v
IE9uIE1lc2Egd2UgdHJ5IHRvIGNyZWF0ZSBhIGNvcmUgY29udGV4dCwgZXhjZXB0IGZvciB2ZXJz
aW9ucyBiZWxvdyAzLjIKKyAgICAvLyB3aGVyZSBpdCBpcyBub3QgYXBwbGljYWJsZS4gKGFuZCBm
YWxsYmFjayB0byBFUyBhcyB3ZWxsKQorICAgIGNvbnN0IENvbnRleHRDcmVhdGlvbkluZm8gbWVz
YUNvbnRleHRzVG9UcnlbXSA9IHsKKyAgICAgICAgeyBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9P
UEVOR0xfQU5HTEUsIEdMWF9DT05URVhUX0NPUkVfUFJPRklMRV9CSVRfQVJCLCB7IGdsOjpWZXJz
aW9uKDQsIDUpIH0gfSwKKyAgICAgICAgeyBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xf
QU5HTEUsIEdMWF9DT05URVhUX0NPUkVfUFJPRklMRV9CSVRfQVJCLCB7IGdsOjpWZXJzaW9uKDQs
IDQpIH0gfSwKKyAgICAgICAgeyBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUs
IEdMWF9DT05URVhUX0NPUkVfUFJPRklMRV9CSVRfQVJCLCB7IGdsOjpWZXJzaW9uKDQsIDMpIH0g
fSwKKyAgICAgICAgeyBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUsIEdMWF9D
T05URVhUX0NPUkVfUFJPRklMRV9CSVRfQVJCLCB7IGdsOjpWZXJzaW9uKDQsIDIpIH0gfSwKKyAg
ICAgICAgeyBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUsIEdMWF9DT05URVhU
X0NPUkVfUFJPRklMRV9CSVRfQVJCLCB7IGdsOjpWZXJzaW9uKDQsIDEpIH0gfSwKKyAgICAgICAg
eyBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUsIEdMWF9DT05URVhUX0NPUkVf
UFJPRklMRV9CSVRfQVJCLCB7IGdsOjpWZXJzaW9uKDQsIDApIH0gfSwKKyAgICAgICAgeyBFR0xf
UExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUsIEdMWF9DT05URVhUX0NPUkVfUFJPRklM
RV9CSVRfQVJCLCB7IGdsOjpWZXJzaW9uKDMsIDMpIH0gfSwKKyAgICAgICAgeyBFR0xfUExBVEZP
Uk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUsIEdMWF9DT05URVhUX0NPUkVfUFJPRklMRV9CSVRf
QVJCLCB7IGdsOjpWZXJzaW9uKDMsIDIpIH0gfSwKKyAgICAgICAgeyBFR0xfUExBVEZPUk1fQU5H
TEVfVFlQRV9PUEVOR0xfQU5HTEUsIDAsIHsgZ2w6OlZlcnNpb24oMywgMSkgfSB9LAorICAgICAg
ICB7IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSwgMCwgeyBnbDo6VmVyc2lv
bigzLCAwKSB9IH0sCisgICAgICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FO
R0xFLCAwLCB7IGdsOjpWZXJzaW9uKDIsIDApIH0gfSwKKyAgICAgICAgeyBFR0xfUExBVEZPUk1f
QU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUsIDAsIHsgZ2w6OlZlcnNpb24oMSwgNSkgfSB9LAorICAg
ICAgICB7IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSwgMCwgeyBnbDo6VmVy
c2lvbigxLCA0KSB9IH0sCisgICAgICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdM
X0FOR0xFLCAwLCB7IGdsOjpWZXJzaW9uKDEsIDMpIH0gfSwKKyAgICAgICAgeyBFR0xfUExBVEZP
Uk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUsIDAsIHsgZ2w6OlZlcnNpb24oMSwgMikgfSB9LAor
ICAgICAgICB7IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSwgMCwgeyBnbDo6
VmVyc2lvbigxLCAxKSB9IH0sCisgICAgICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BF
TkdMX0FOR0xFLCAwLCB7IGdsOjpWZXJzaW9uKDEsIDApIH0gfSwKKyAgICAgICAgeyBFR0xfUExB
VEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xFU19BTkdMRSwgR0xYX0NPTlRFWFRfRVMyX1BST0ZJTEVf
QklUX0VYVCwgeyBnbDo6VmVyc2lvbigzLCAyKSB9IH0sCisgICAgICAgIHsgRUdMX1BMQVRGT1JN
X0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEUsIEdMWF9DT05URVhUX0VTMl9QUk9GSUxFX0JJVF9F
WFQsIHsgZ2w6OlZlcnNpb24oMywgMSkgfSB9LAorICAgICAgICB7IEVHTF9QTEFURk9STV9BTkdM
RV9UWVBFX09QRU5HTEVTX0FOR0xFLCBHTFhfQ09OVEVYVF9FUzJfUFJPRklMRV9CSVRfRVhULCB7
IGdsOjpWZXJzaW9uKDMsIDApIH0gfSwKKyAgICAgICAgeyBFR0xfUExBVEZPUk1fQU5HTEVfVFlQ
RV9PUEVOR0xFU19BTkdMRSwgR0xYX0NPTlRFWFRfRVMyX1BST0ZJTEVfQklUX0VYVCwgeyBnbDo6
VmVyc2lvbigyLCAwKSB9IH0sCiAgICAgfTsKICAgICAvLyBjbGFuZy1mb3JtYXQgb24KIAorICAg
IGNvbnN0IENvbnRleHRDcmVhdGlvbkluZm8gKnRvVHJ5ID0gY29udGV4dHNUb1RyeTsKKyAgICBz
aXplX3QgdG9UcnlMZW5ndGggPSBBcnJheVNpemUoY29udGV4dHNUb1RyeSk7CisgICAgaWYgKG1J
c01lc2EpCisgICAgeworICAgICAgICB0b1RyeSAgICAgICA9IG1lc2FDb250ZXh0c1RvVHJ5Owor
ICAgICAgICB0b1RyeUxlbmd0aCA9IEFycmF5U2l6ZShtZXNhQ29udGV4dHNUb1RyeSk7CisgICAg
fQorCiAgICAgLy8gTk9URTogYmVsb3cgd2UgcmV0dXJuIGFzIHNvb24gYXMgd2UncmUgYWJsZSB0
byBjcmVhdGUgYSBjb250ZXh0IHNvIHRoZQogICAgIC8vICJlcnJvciIgdmFyaWFibGUgaXMgRUdM
X1NVQ0NFU1Mgd2hlbiByZXR1cm5lZCBjb250cmFyeSB0byB0aGUgY29tbW9uIGlkaW9tCiAgICAg
Ly8gb2YgcmV0dXJuaW5nICJlcnJvciIgd2hlbiB0aGVyZSBpcyBhbiBhY3R1YWwgZXJyb3IuCi0g
ICAgaWYgKHJlcXVlc3RlZERpc3BsYXlUeXBlICE9IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09Q
RU5HTEVTX0FOR0xFKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdG9UcnlMZW5ndGg7ICsr
aSkKICAgICB7Ci0gICAgICAgIGZvciAoYXV0byAmdmVyc2lvbiA6IGRlc2t0b3BWZXJzaW9uc0Zy
b20zXzIpCisgICAgICAgIGNvbnN0IENvbnRleHRDcmVhdGlvbkluZm8gJmluZm8gPSB0b1RyeVtp
XTsKKyAgICAgICAgaWYgKHJlcXVlc3RlZERpc3BsYXlUeXBlICE9IEVHTF9QTEFURk9STV9BTkdM
RV9UWVBFX0RFRkFVTFRfQU5HTEUgJiYKKyAgICAgICAgICAgIHJlcXVlc3RlZERpc3BsYXlUeXBl
ICE9IGluZm8uZGlzcGxheVR5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGVnbDo6RXJyb3Ig
ZXJyb3IgPQotICAgICAgICAgICAgICAgIGNyZWF0ZUNvbnRleHRBdHRyaWJzKGNvbmZpZywgdmVy
c2lvbiwgR0xYX0NPTlRFWFRfQ09SRV9QUk9GSUxFX0JJVF9BUkIsIGNvbnRleHQpOwotICAgICAg
ICAgICAgaWYgKCFlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGZvciAo
YXV0byAmdmVyc2lvbiA6IGRlc2t0b3BWZXJzaW9uc1ByZTNfMikKLSAgICAgICAgewotICAgICAg
ICAgICAgZWdsOjpFcnJvciBlcnJvciA9IGNyZWF0ZUNvbnRleHRBdHRyaWJzKGNvbmZpZywgdmVy
c2lvbiwgMCwgY29udGV4dCk7Ci0gICAgICAgICAgICBpZiAoIWVycm9yLmlzRXJyb3IoKSkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAgICB9
CisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgIH0KIAotICAgIGlmIChyZXF1
ZXN0ZWREaXNwbGF5VHlwZSAhPSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUp
Ci0gICAgewotICAgICAgICBmb3IgKGF1dG8gJnZlcnNpb24gOiBlc1ZlcnNpb25zRnJvbTJfMCkK
KyAgICAgICAgZWdsOjpFcnJvciBlcnJvciA9IGNyZWF0ZUNvbnRleHRBdHRyaWJzKGNvbmZpZywg
aW5mby52ZXJzaW9uLCBpbmZvLnByb2ZpbGVGbGFnLCBjb250ZXh0KTsKKyAgICAgICAgaWYgKCFl
cnJvci5pc0Vycm9yKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGVnbDo6RXJyb3IgZXJyb3Ig
PQotICAgICAgICAgICAgICAgIGNyZWF0ZUNvbnRleHRBdHRyaWJzKGNvbmZpZywgdmVyc2lvbiwg
R0xYX0NPTlRFWFRfRVMyX1BST0ZJTEVfQklUX0VYVCwgY29udGV4dCk7Ci0gICAgICAgICAgICBp
ZiAoIWVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gZXJyb3I7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAg
ICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfTk9UX0lOSVRJQUxJWkVE
LCAiQ291bGQgbm90IGNyZWF0ZSBhIGJhY2tpbmcgT3BlbkdMIGNvbnRleHQuIik7CiB9CiAKLWVn
bDo6Q29uZmlnU2V0IERpc3BsYXlHTFg6OmdlbmVyYXRlQ29uZmlncygpIGNvbnN0CitlZ2w6OkNv
bmZpZ1NldCBEaXNwbGF5R0xYOjpnZW5lcmF0ZUNvbmZpZ3MoKQogewogICAgIGVnbDo6Q29uZmln
U2V0IGNvbmZpZ3M7CiAgICAgY29uZmlnSWRUb0dMWENvbmZpZy5jbGVhcigpOwpAQCAtNjY3LDIx
ICs3MjgsMTggQEAgZWdsOjpDb25maWdTZXQgRGlzcGxheUdMWDo6Z2VuZXJhdGVDb25maQogICAg
IHJldHVybiBjb25maWdzOwogfQogCi1ib29sIERpc3BsYXlHTFg6OmlzRGV2aWNlTG9zdCgpIGNv
bnN0Ci17Ci0gICAgLy8gVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQog
Ym9vbCBEaXNwbGF5R0xYOjp0ZXN0RGV2aWNlTG9zdCgpCiB7Ci0gICAgLy8gVU5JTVBMRU1FTlRF
RCgpOworICAgIGlmIChtSGFzQVJCQ3JlYXRlQ29udGV4dFJvYnVzdG5lc3MpCisgICAgeworICAg
ICAgICByZXR1cm4gZ2V0UmVuZGVyZXIoKS0+Z2V0UmVzZXRTdGF0dXMoKSAhPSBHTF9OT19FUlJP
UjsKKyAgICB9CisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGVnbDo6RXJyb3IgRGlzcGxheUdM
WDo6cmVzdG9yZUxvc3REZXZpY2UoKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKICAgICByZXR1
cm4gZWdsOjpFcnJvcihFR0xfQkFEX0RJU1BMQVkpOwogfQogCkBAIC02OTMsNyArNzUxLDcgQEAg
Ym9vbCBEaXNwbGF5R0xYOjppc1ZhbGlkTmF0aXZlV2luZG93KEVHTAogICAgIC8vIGZhaWwgaWYg
dGhlIHdpbmRvdyBkb2Vzbid0IGV4aXN0ICh0aGUgcmF0aW9uYWwgaXMgdGhhdCB0aGVzZSBmdW5j
dGlvbgogICAgIC8vIGFyZSB1c2VkIGJ5IHdpbmRvdyBtYW5hZ2VycykuIE91dCBvZiB0aGVzZSBm
dW5jdGlvbiB3ZSB1c2UgWFF1ZXJ5VHJlZQogICAgIC8vIGFzIGl0IHNlZW1zIHRvIGJlIHRoZSBz
aW1wbGVzdDsgYSBkcmF3YmFjayBpcyB0aGF0IGl0IHdpbGwgYWxsb2NhdGUKLSAgICAvLyBtZW1v
cnkgZm9yIHRoZSBsaXN0IG9mIGNoaWxkcmVuLCBiZWNhc3VlIHdlIHVzZSBhIGNoaWxkIHdpbmRv
dyBmb3IKKyAgICAvLyBtZW1vcnkgZm9yIHRoZSBsaXN0IG9mIGNoaWxkcmVuLCBiZWNhdXNlIHdl
IHVzZSBhIGNoaWxkIHdpbmRvdyBmb3IKICAgICAvLyBXaW5kb3dTdXJmYWNlLgogICAgIFdpbmRv
dyByb290OwogICAgIFdpbmRvdyBwYXJlbnQ7CkBAIC03MjcsNiArNzg1LDggQEAgZWdsOjpFcnJv
ciBEaXNwbGF5R0xYOjpnZXREcml2ZXJWZXJzaW9uKAogICAgIHsKICAgICAgICAgY2FzZSBWRU5E
T1JfSURfTlZJRElBOgogICAgICAgICAgICAgcmV0dXJuIGdldE5WSURJQURyaXZlclZlcnNpb24o
dmVyc2lvbik7CisgICAgICAgIGNhc2UgVkVORE9SX0lEX0FNRDoKKyAgICAgICAgICAgIHJldHVy
biBHZXRBTUREcml2ZXJWZXJzaW9uKHZlcnNpb24pOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgKnZlcnNpb24gPSAiIjsKICAgICAgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9T
VUNDRVNTKTsKQEAgLTgzMSwxMyArODkxLDExIEBAIGNvbnN0IEZ1bmN0aW9uc0dMICpEaXNwbGF5
R0xYOjpnZXRGdW5jdGkKIAogdm9pZCBEaXNwbGF5R0xYOjpnZW5lcmF0ZUV4dGVuc2lvbnMoZWds
OjpEaXNwbGF5RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucykgY29uc3QKIHsKLSAgICBvdXRFeHRl
bnNpb25zLT5jcmVhdGVDb250ZXh0ID0gdHJ1ZTsKLSAgICBvdXRFeHRlbnNpb25zLT5jcmVhdGVD
b250ZXh0Tm9FcnJvciA9IHRydWU7CisgICAgb3V0RXh0ZW5zaW9ucy0+Y3JlYXRlQ29udGV4dFJv
YnVzdG5lc3MgPSBtSGFzQVJCQ3JlYXRlQ29udGV4dFJvYnVzdG5lc3M7CiB9CiAKIHZvaWQgRGlz
cGxheUdMWDo6Z2VuZXJhdGVDYXBzKGVnbDo6Q2FwcyAqb3V0Q2FwcykgY29uc3QKIHsKLSAgICAv
LyBVTklNUExFTUVOVEVEKCk7CiAgICAgb3V0Q2Fwcy0+dGV4dHVyZU5QT1QgPSB0cnVlOwogfQog
CkBAIC04NDksMTYgKzkwNywyNiBAQCBpbnQgRGlzcGxheUdMWDo6Z2V0R0xYRkJDb25maWdBdHRy
aWIoZ2x4CiB9CiAKIGVnbDo6RXJyb3IgRGlzcGxheUdMWDo6Y3JlYXRlQ29udGV4dEF0dHJpYnMo
Z2x4OjpGQkNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2w6OlZlcnNpb24gdmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgT3B0aW9uYWw8Z2w6OlZlcnNpb24+ICZ2ZXJzaW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcHJvZmlsZU1hc2ssCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseDo6Q29udGV4dCAq
Y29udGV4dCkgY29uc3QKIHsKICAgICBzdGQ6OnZlY3RvcjxpbnQ+IGF0dHJpYnM7Ci0gICAgYXR0
cmlicy5wdXNoX2JhY2soR0xYX0NPTlRFWFRfTUFKT1JfVkVSU0lPTl9BUkIpOwotICAgIGF0dHJp
YnMucHVzaF9iYWNrKHZlcnNpb24ubWFqb3IpOwogCi0gICAgYXR0cmlicy5wdXNoX2JhY2soR0xY
X0NPTlRFWFRfTUlOT1JfVkVSU0lPTl9BUkIpOwotICAgIGF0dHJpYnMucHVzaF9iYWNrKHZlcnNp
b24ubWlub3IpOworICAgIGlmIChtSGFzQVJCQ3JlYXRlQ29udGV4dFJvYnVzdG5lc3MpCisgICAg
eworICAgICAgICBhdHRyaWJzLnB1c2hfYmFjayhHTFhfQ09OVEVYVF9SRVNFVF9OT1RJRklDQVRJ
T05fU1RSQVRFR1lfQVJCKTsKKyAgICAgICAgYXR0cmlicy5wdXNoX2JhY2soR0xYX0xPU0VfQ09O
VEVYVF9PTl9SRVNFVF9BUkIpOworICAgIH0KKworICAgIGlmICh2ZXJzaW9uLnZhbGlkKCkpCisg
ICAgeworICAgICAgICBhdHRyaWJzLnB1c2hfYmFjayhHTFhfQ09OVEVYVF9NQUpPUl9WRVJTSU9O
X0FSQik7CisgICAgICAgIGF0dHJpYnMucHVzaF9iYWNrKHZlcnNpb24udmFsdWUoKS5tYWpvcik7
CisKKyAgICAgICAgYXR0cmlicy5wdXNoX2JhY2soR0xYX0NPTlRFWFRfTUlOT1JfVkVSU0lPTl9B
UkIpOworICAgICAgICBhdHRyaWJzLnB1c2hfYmFjayh2ZXJzaW9uLnZhbHVlKCkubWlub3IpOwor
ICAgIH0KIAogICAgIGlmIChwcm9maWxlTWFzayAhPSAwICYmIG1IYXNBUkJDcmVhdGVDb250ZXh0
UHJvZmlsZSkKICAgICB7CkBAIC04NzEsNiArOTM5LDkgQEAgZWdsOjpFcnJvciBEaXNwbGF5R0xY
OjpjcmVhdGVDb250ZXh0QXR0cgogICAgIC8vIFdoZW4gY3JlYXRpbmcgYSBjb250ZXh0IHdpdGgg
Z2xYQ3JlYXRlQ29udGV4dEF0dHJpYnNBUkIsIGEgdmFyaWV0eSBvZiBYMTEgZXJyb3JzIGNhbgog
ICAgIC8vIGJlIGdlbmVyYXRlZC4gVG8gcHJldmVudCB0aGVzZSBlcnJvcnMgZnJvbSBjcmFzaGlu
ZyBvdXIgcHJvY2Vzcywgd2Ugc2ltcGx5IGlnbm9yZQogICAgIC8vIHRoZW0gYW5kIG9ubHkgbG9v
ayBpZiBHTFhDb250ZXh0IHdhcyBjcmVhdGVkLgorICAgIC8vIFByb2Nlc3MgYWxsIGV2ZW50cyBi
ZWZvcmUgc2V0dGluZyB0aGUgZXJyb3IgaGFuZGxlciB0byBhdm9pZCBkZXN5bmNocm9uaXppbmcg
WENCIGluc3RhbmNlcworICAgIC8vICh0aGUgZXJyb3IgaGFuZGxlciBpcyBOT1QgcGVyLWRpc3Bs
YXkpLgorICAgIFhTeW5jKG1YRGlzcGxheSwgRmFsc2UpOwogICAgIGF1dG8gb2xkRXJyb3JIYW5k
bGVyID0gWFNldEVycm9ySGFuZGxlcihJZ25vcmVYMTFFcnJvcnMpOwogICAgICpjb250ZXh0ID0g
bUdMWC5jcmVhdGVDb250ZXh0QXR0cmlic0FSQihtQ29udGV4dENvbmZpZywgbnVsbHB0ciwgVHJ1
ZSwgYXR0cmlicy5kYXRhKCkpOwogICAgIFhTZXRFcnJvckhhbmRsZXIob2xkRXJyb3JIYW5kbGVy
KTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9nbHgvRGlzcGxheUdMWC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvRGlzcGxheUdMWC5oCShyZXZpc2lvbiAyMDc4
MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
Z2x4L0Rpc3BsYXlHTFguaAkod29ya2luZyBjb3B5KQpAQCAtMTIsNiArMTIsNyBAQAogI2luY2x1
ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJjb21tb24vT3B0aW9u
YWwuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9EaXNwbGF5R0wuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvRnVuY3Rpb25zR0xYLmgiCiAKQEAgLTQzLDIx
ICs0NCwyNCBAQCBjbGFzcyBEaXNwbGF5R0xYIDogcHVibGljIERpc3BsYXlHTAogICAgIGVnbDo6
RXJyb3IgaW5pdGlhbGl6ZShlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpIG92ZXJyaWRlOwogICAgIHZv
aWQgdGVybWluYXRlKCkgb3ZlcnJpZGU7CiAKLSAgICBTdXJmYWNlSW1wbCAqY3JlYXRlV2luZG93
U3VyZmFjZShjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKKyAgICBTdXJmYWNlSW1w
bCAqY3JlYXRlV2luZG93U3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNv
bmZpZ3VyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMTmF0
aXZlV2luZG93VHlwZSB3aW5kb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOwotICAgIFN1cmZh
Y2VJbXBsICpjcmVhdGVQYnVmZmVyU3VyZmFjZShjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJh
dGlvbiwKKyAgICBTdXJmYWNlSW1wbCAqY3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3QgZWdsOjpT
dXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJy
aWRlOwotICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihjb25z
dCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKKyAgICBTdXJmYWNlSW1wbCAqY3JlYXRlUGJ1
ZmZlckZyb21DbGllbnRCdWZmZXIoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNv
bmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIHNoYXJlSGFuZGxlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAm
YXR0cmlicykgb3ZlcnJpZGU7Ci0gICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBpeG1hcFN1cmZhY2Uo
Y29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCisgICAgU3VyZmFjZUltcGwgKmNyZWF0
ZVBpeG1hcFN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0
aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hdGl2ZVBpeG1hcFR5
cGUgbmF0aXZlUGl4bWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKIAotICAgIGVnbDo6Q29u
ZmlnU2V0IGdlbmVyYXRlQ29uZmlncygpIGNvbnN0IG92ZXJyaWRlOworICAgIGVnbDo6Q29uZmln
U2V0IGdlbmVyYXRlQ29uZmlncygpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBpc0RldmljZUxvc3Qo
KSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHRlc3REZXZpY2VMb3N0KCkgb3ZlcnJpZGU7CiAg
ICAgZWdsOjpFcnJvciByZXN0b3JlTG9zdERldmljZSgpIG92ZXJyaWRlOwogCkBAIC0xMDAsNyAr
MTA0LDcgQEAgY2xhc3MgRGlzcGxheUdMWCA6IHB1YmxpYyBEaXNwbGF5R0wKIAogICAgIGludCBn
ZXRHTFhGQkNvbmZpZ0F0dHJpYihnbHg6OkZCQ29uZmlnIGNvbmZpZywgaW50IGF0dHJpYikgY29u
c3Q7CiAgICAgZWdsOjpFcnJvciBjcmVhdGVDb250ZXh0QXR0cmlicyhnbHg6OkZCQ29uZmlnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlZlcnNpb24gdmVyc2lvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE9wdGlvbmFsPGdsOjpW
ZXJzaW9uPiAmdmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBwcm9maWxlTWFzaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseDo6
Q29udGV4dCAqY29udGV4dCkgY29uc3Q7CiAKQEAgLTEwOCw4ICsxMTIsNyBAQCBjbGFzcyBEaXNw
bGF5R0xYIDogcHVibGljIERpc3BsYXlHTAogCiAgICAgRnVuY3Rpb25zR0wgKm1GdW5jdGlvbnNH
TDsKIAotICAgIC8vVE9ETyhjd2FsbGV6KSB5dWNrLCBjaGFuZ2UgZ2VuZXJhdGVDb25maWdzIHRv
IGJlIG5vbi1jb25zdCBvciBhZGQgYSB1c2VyZGF0YSBtZW1iZXIgdG8gZWdsOjpDb25maWc/Ci0g
ICAgbXV0YWJsZSBzdGQ6Om1hcDxpbnQsIGdseDo6RkJDb25maWc+IGNvbmZpZ0lkVG9HTFhDb25m
aWc7CisgICAgc3RkOjptYXA8aW50LCBnbHg6OkZCQ29uZmlnPiBjb25maWdJZFRvR0xYQ29uZmln
OwogCiAgICAgRUdMaW50IG1SZXF1ZXN0ZWRWaXN1YWw7CiAgICAgZ2x4OjpGQkNvbmZpZyBtQ29u
dGV4dENvbmZpZzsKQEAgLTEyMiw2ICsxMjUsNyBAQCBjbGFzcyBEaXNwbGF5R0xYIDogcHVibGlj
IERpc3BsYXlHTAogICAgIGJvb2wgbUhhc011bHRpc2FtcGxlOwogICAgIGJvb2wgbUhhc0FSQkNy
ZWF0ZUNvbnRleHQ7CiAgICAgYm9vbCBtSGFzQVJCQ3JlYXRlQ29udGV4dFByb2ZpbGU7CisgICAg
Ym9vbCBtSGFzQVJCQ3JlYXRlQ29udGV4dFJvYnVzdG5lc3M7CiAgICAgYm9vbCBtSGFzRVhUQ3Jl
YXRlQ29udGV4dEVTMlByb2ZpbGU7CiAKICAgICBlbnVtIGNsYXNzIFN3YXBDb250cm9sCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L0Z1
bmN0aW9uc0dMWC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9GdW5jdGlvbnNHTFguY3BwCShyZXZpc2lvbiAyMDc4
MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
Z2x4L0Z1bmN0aW9uc0dMWC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAgc3Ry
dWN0IEZ1bmN0aW9uc0dMWDo6R0xYRnVuY3Rpb25UYWJsZQogICAgICAgICAgIGdldEN1cnJlbnRE
cmF3YWJsZVB0cihudWxscHRyKSwKICAgICAgICAgICB3YWl0WFB0cihudWxscHRyKSwKICAgICAg
ICAgICB3YWl0R0xQdHIobnVsbHB0ciksCisgICAgICAgICAgZ2V0Q2xpZW50U3RyaW5nUHRyKG51
bGxwdHIpLAogICAgICAgICAgIHF1ZXJ5RXh0ZW5zaW9uc1N0cmluZ1B0cihudWxscHRyKSwKICAg
ICAgICAgICBnZXRGQkNvbmZpZ3NQdHIobnVsbHB0ciksCiAgICAgICAgICAgY2hvb3NlRkJDb25m
aWdQdHIobnVsbHB0ciksCkBAIC03NSw2ICs3Niw3IEBAIHN0cnVjdCBGdW5jdGlvbnNHTFg6OkdM
WEZ1bmN0aW9uVGFibGUKICAgICBQRk5HTFhXQUlUR0xQUk9DIHdhaXRHTFB0cjsKIAogICAgIC8v
IEdMWCAxLjEKKyAgICBQRk5HTFhHRVRDTElFTlRTVFJJTkdQUk9DIGdldENsaWVudFN0cmluZ1B0
cjsKICAgICBQRk5HTFhRVUVSWUVYVEVOU0lPTlNTVFJJTkdQUk9DIHF1ZXJ5RXh0ZW5zaW9uc1N0
cmluZ1B0cjsKIAogICAgIC8vR0xYIDEuMwpAQCAtMTc1LDYgKzE3Nyw3IEBAIGJvb2wgRnVuY3Rp
b25zR0xYOjppbml0aWFsaXplKERpc3BsYXkgKngKICAgICBHRVRfRk5QVFJfT1JfRVJST1IoJm1G
blB0cnMtPndhaXRHTFB0ciwgZ2xYV2FpdEdMKTsKIAogICAgIC8vIEdMWCAxLjEKKyAgICBHRVRf
Rk5QVFJfT1JfRVJST1IoJm1GblB0cnMtPmdldENsaWVudFN0cmluZ1B0ciwgZ2xYR2V0Q2xpZW50
U3RyaW5nKTsKICAgICBHRVRfRk5QVFJfT1JfRVJST1IoJm1GblB0cnMtPnF1ZXJ5RXh0ZW5zaW9u
c1N0cmluZ1B0ciwgZ2xYUXVlcnlFeHRlbnNpb25zU3RyaW5nKTsKIAogICAgIC8vIENoZWNrIHdl
IGhhdmUgYSB3b3JraW5nIEdMWApAQCAtMzE0LDYgKzMxNywxMSBAQCB2b2lkIEZ1bmN0aW9uc0dM
WDo6d2FpdEdMKCkgY29uc3QKIH0KIAogLy8gR0xYIDEuMQorY29uc3QgY2hhciAqRnVuY3Rpb25z
R0xYOjpnZXRDbGllbnRTdHJpbmcoaW50IG5hbWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1GblB0
cnMtPmdldENsaWVudFN0cmluZ1B0cihtWERpc3BsYXksIG5hbWUpOworfQorCiBjb25zdCBjaGFy
ICpGdW5jdGlvbnNHTFg6OnF1ZXJ5RXh0ZW5zaW9uc1N0cmluZygpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1GblB0cnMtPnF1ZXJ5RXh0ZW5zaW9uc1N0cmluZ1B0cihtWERpc3BsYXksIG1YU2NyZWVu
KTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9nbHgvRnVuY3Rpb25zR0xYLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9GdW5jdGlvbnNHTFguaAkocmV2aXNpb24g
MjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL2dseC9GdW5jdGlvbnNHTFguaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBj
bGFzcyBGdW5jdGlvbnNHTFgKICAgICB2b2lkIHdhaXRHTCgpIGNvbnN0OwogCiAgICAgLy8gR0xY
IDEuMQorICAgIGNvbnN0IGNoYXIgKmdldENsaWVudFN0cmluZyhpbnQgbmFtZSkgY29uc3Q7CiAg
ICAgY29uc3QgY2hhciAqcXVlcnlFeHRlbnNpb25zU3RyaW5nKCkgY29uc3Q7CiAKICAgICAvLyBH
TFggMS4zCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvZ2x4L1BidWZmZXJTdXJmYWNlR0xYLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L1BidWZmZXJTdXJmYWNl
R0xYLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9QYnVmZmVyU3VyZmFjZUdMWC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1LDE0ICsxNSwxNSBAQAogbmFtZXNwYWNlIHJ4CiB7CiAKLVBidWZmZXJTdXJm
YWNlR0xYOjpQYnVmZmVyU3VyZmFjZUdMWChSZW5kZXJlckdMICpyZW5kZXJlciwKK1BidWZmZXJT
dXJmYWNlR0xYOjpQYnVmZmVyU3VyZmFjZUdMWChjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3Rh
dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyZXJHTCAqcmVu
ZGVyZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IHdpZHRo
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBoZWlnaHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBsYXJnZXN0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZ1bmN0aW9uc0dMWCAmZ2x4LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseDo6Q29udGV4dCBjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseDo6RkJDb25maWcgZmJD
b25maWcpCi0gICAgOiBTdXJmYWNlR0xYKHJlbmRlcmVyKSwKKyAgICA6IFN1cmZhY2VHTFgoc3Rh
dGUsIHJlbmRlcmVyKSwKICAgICAgIG1XaWR0aCh3aWR0aCksCiAgICAgICBtSGVpZ2h0KGhlaWdo
dCksCiAgICAgICBtTGFyZ2VzdChsYXJnZXN0KSwKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvUGJ1ZmZlclN1cmZhY2VHTFguaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvZ2x4L1BidWZmZXJTdXJmYWNlR0xYLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvUGJ1ZmZlclN1cmZh
Y2VHTFguaAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsOCBAQCBjbGFzcyBGdW5jdGlvbnNH
TFg7CiBjbGFzcyBQYnVmZmVyU3VyZmFjZUdMWCA6IHB1YmxpYyBTdXJmYWNlR0xYCiB7CiAgIHB1
YmxpYzoKLSAgICBQYnVmZmVyU3VyZmFjZUdMWChSZW5kZXJlckdMICpyZW5kZXJlciwKKyAgICBQ
YnVmZmVyU3VyZmFjZUdMWChjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAg
ICAgICAgICAgICAgICAgUmVuZGVyZXJHTCAqcmVuZGVyZXIsCiAgICAgICAgICAgICAgICAgICAg
ICAgRUdMaW50IHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBoZWlnaHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBsYXJnZXN0LApJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9TdXJmYWNlR0xYLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L2dseC9TdXJmYWNlR0xYLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvU3VyZmFjZUdMWC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNyw3ICsxNyw3IEBAIG5hbWVzcGFjZSByeAogY2xhc3MgU3VyZmFjZUdMWCA6
IHB1YmxpYyBTdXJmYWNlR0wKIHsKICAgcHVibGljOgotICAgIFN1cmZhY2VHTFgoUmVuZGVyZXJH
TCAqcmVuZGVyZXIpIDogU3VyZmFjZUdMKHJlbmRlcmVyKSB7fQorICAgIFN1cmZhY2VHTFgoY29u
c3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLCBSZW5kZXJlckdMICpyZW5kZXJlcikgOiBTdXJm
YWNlR0woc3RhdGUsIHJlbmRlcmVyKSB7fQogCiAgICAgdmlydHVhbCBlZ2w6OkVycm9yIGNoZWNr
Rm9yUmVzaXplKCkgPSAwOwogfTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvV2luZG93U3VyZmFjZUdMWC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9X
aW5kb3dTdXJmYWNlR0xYLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9XaW5kb3dTdXJmYWNlR0xYLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjEsMTQgKzIxLDE1IEBAIHN0YXRpYyBpbnQgSWdub3JlWDEx
RXJyb3JzKERpc3BsYXkgKiwgWEUKICAgICByZXR1cm4gMDsKIH0KIAotV2luZG93U3VyZmFjZUdM
WDo6V2luZG93U3VyZmFjZUdMWChjb25zdCBGdW5jdGlvbnNHTFggJmdseCwKK1dpbmRvd1N1cmZh
Y2VHTFg6OldpbmRvd1N1cmZhY2VHTFgoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGdW5jdGlvbnNHTFggJmds
eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzcGxheUdMWCAqZ2x4RGlz
cGxheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyZXJHTCAqcmVu
ZGVyZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpbmRvdyB3aW5kb3cs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpc3BsYXkgKmRpc3BsYXksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseDo6Q29udGV4dCBjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHg6OkZCQ29uZmlnIGZiQ29uZmln
KQotICAgIDogU3VyZmFjZUdMWChyZW5kZXJlciksCisgICAgOiBTdXJmYWNlR0xYKHN0YXRlLCBy
ZW5kZXJlciksCiAgICAgICBtUGFyZW50KHdpbmRvdyksCiAgICAgICBtV2luZG93KDApLAogICAg
ICAgbURpc3BsYXkoZGlzcGxheSksCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L1dpbmRvd1N1cmZhY2VHTFguaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L1dp
bmRvd1N1cmZhY2VHTFguaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9XaW5kb3dTdXJmYWNlR0xYLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDggQEAgY2xhc3MgRnVuY3Rpb25zR0xYOwogY2xhc3Mg
V2luZG93U3VyZmFjZUdMWCA6IHB1YmxpYyBTdXJmYWNlR0xYCiB7CiAgIHB1YmxpYzoKLSAgICBX
aW5kb3dTdXJmYWNlR0xYKGNvbnN0IEZ1bmN0aW9uc0dMWCAmZ2x4LAorICAgIFdpbmRvd1N1cmZh
Y2VHTFgoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgRnVuY3Rpb25zR0xYICZnbHgsCiAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5
R0xYICpnbHhEaXNwbGF5LAogICAgICAgICAgICAgICAgICAgICAgUmVuZGVyZXJHTCAqcmVuZGVy
ZXIsCiAgICAgICAgICAgICAgICAgICAgICBXaW5kb3cgd2luZG93LApJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9wbGF0Zm9ybV9nbHgu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvZ2x4L3BsYXRmb3JtX2dseC5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L3BsYXRmb3JtX2ds
eC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDEyIEBACiAjZGVmaW5lIEdMWF9DT05U
RVhUX0NPTVBBVElCSUxJVFlfUFJPRklMRV9CSVRfQVJCIDB4MDAwMDAwMDIKICNkZWZpbmUgR0xY
X0NPTlRFWFRfUFJPRklMRV9NQVNLX0FSQiAweDkxMjYKIAorLy8gR0xYX0FSQl9jcmVhdGVfY29u
dGV4dF9yb2J1c3RuZXNzCisjZGVmaW5lIEdMWF9DT05URVhUX1JPQlVTVF9BQ0NFU1NfQklUX0FS
QiAweDAwMDAwMDA0CisjZGVmaW5lIEdMWF9MT1NFX0NPTlRFWFRfT05fUkVTRVRfQVJCIDB4ODI1
MgorI2RlZmluZSBHTFhfQ09OVEVYVF9SRVNFVF9OT1RJRklDQVRJT05fU1RSQVRFR1lfQVJCIDB4
ODI1NgorI2RlZmluZSBHTFhfTk9fUkVTRVRfTk9USUZJQ0FUSU9OX0FSQiAweDgyNjEKKwogLy8g
R0xYX0VYVF9jcmVhdGVfY29udGV4dF9lczJfcHJvZmlsZQogI2RlZmluZSBHTFhfQ09OVEVYVF9F
UzJfUFJPRklMRV9CSVRfRVhUIDB4MDAwMDAwMDQKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EWEdJU3dhcENoYWluV2luZG93U3Vy
ZmFjZVdHTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EWEdJU3dhcENoYWluV2luZG93U3VyZmFjZVdHTC5jcHAJ
KHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC93Z2wvRFhHSVN3YXBDaGFpbldpbmRvd1N1cmZhY2VXR0wuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw4IEBACiBuYW1lc3BhY2UgcngKIHsKIAotRFhHSVN3YXBD
aGFpbldpbmRvd1N1cmZhY2VXR0w6OkRYR0lTd2FwQ2hhaW5XaW5kb3dTdXJmYWNlV0dMKFJlbmRl
cmVyR0wgKnJlbmRlcmVyLAorRFhHSVN3YXBDaGFpbldpbmRvd1N1cmZhY2VXR0w6OkRYR0lTd2Fw
Q2hhaW5XaW5kb3dTdXJmYWNlV0dMKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBSZW5kZXJlckdMICpyZW5kZXJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJRDNEMTFEZXZpY2UgKmRldmljZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEUgZGV2aWNlSGFuZGxlLApAQCAt
MzEsMTAgKzMyLDExIEBAIERYR0lTd2FwQ2hhaW5XaW5kb3dTdXJmYWNlV0dMOjpEWEdJU3dhcEMK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zR0wsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRnVuY3Rpb25z
V0dMICpmdW5jdGlvbnNXR0wsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IG9yaWVudGF0aW9uKQotICAgIDogU3VyZmFj
ZUdMKHJlbmRlcmVyKSwKKyAgICA6IFN1cmZhY2VHTChzdGF0ZSwgcmVuZGVyZXIpLAogICAgICAg
bVdpbmRvdyh3aW5kb3cpLAogICAgICAgbVN0YXRlTWFuYWdlcihyZW5kZXJlci0+Z2V0U3RhdGVN
YW5hZ2VyKCkpLAogICAgICAgbVdvcmthcm91bmRzKHJlbmRlcmVyLT5nZXRXb3JrYXJvdW5kcygp
KSwKKyAgICAgIG1SZW5kZXJlcihyZW5kZXJlciksCiAgICAgICBtRnVuY3Rpb25zR0woZnVuY3Rp
b25zR0wpLAogICAgICAgbUZ1bmN0aW9uc1dHTChmdW5jdGlvbnNXR0wpLAogICAgICAgbURldmlj
ZShkZXZpY2UpLApAQCAtMjg5LDkgKzI5MSwxMCBAQCBFR0xpbnQgRFhHSVN3YXBDaGFpbldpbmRv
d1N1cmZhY2VXR0w6OmdlCiB9CiAKIEZyYW1lYnVmZmVySW1wbCAqRFhHSVN3YXBDaGFpbldpbmRv
d1N1cmZhY2VXR0w6OmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcigKLSAgICBjb25zdCBnbDo6RnJh
bWVidWZmZXI6OkRhdGEgJmRhdGEpCisgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJmRh
dGEpCiB7Ci0gICAgcmV0dXJuIG5ldyBGcmFtZWJ1ZmZlckdMKG1GcmFtZWJ1ZmZlcklELCBkYXRh
LCBtRnVuY3Rpb25zR0wsIG1Xb3JrYXJvdW5kcywgbVN0YXRlTWFuYWdlcik7CisgICAgcmV0dXJu
IG5ldyBGcmFtZWJ1ZmZlckdMKG1GcmFtZWJ1ZmZlcklELCBkYXRhLCBtRnVuY3Rpb25zR0wsIG1X
b3JrYXJvdW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVJlbmRlcmVyLT5nZXRC
bGl0dGVyKCksIG1TdGF0ZU1hbmFnZXIpOwogfQogCiBlZ2w6OkVycm9yIERYR0lTd2FwQ2hhaW5X
aW5kb3dTdXJmYWNlV0dMOjpzZXRPYmplY3RzTG9ja2VkKGJvb2wgbG9ja2VkKQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EWEdJU3dh
cENoYWluV2luZG93U3VyZmFjZVdHTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRFhHSVN3YXBDaGFpbldpbmRvd1N1
cmZhY2VXR0wuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EWEdJU3dhcENoYWluV2luZG93U3VyZmFjZVdH
TC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw4IEBAIHN0cnVjdCBXb3JrYXJvdW5kc0dM
OwogY2xhc3MgRFhHSVN3YXBDaGFpbldpbmRvd1N1cmZhY2VXR0wgOiBwdWJsaWMgU3VyZmFjZUdM
CiB7CiAgIHB1YmxpYzoKLSAgICBEWEdJU3dhcENoYWluV2luZG93U3VyZmFjZVdHTChSZW5kZXJl
ckdMICpyZW5kZXJlciwKKyAgICBEWEdJU3dhcENoYWluV2luZG93U3VyZmFjZVdHTChjb25zdCBl
Z2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUmVuZGVyZXJHTCAqcmVuZGVyZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSUQzRDExRGV2aWNlICpkZXZpY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSEFORExFIGRldmljZUhhbmRsZSwKQEAgLTUzLDcgKzU0LDcgQEAgY2xhc3MgRFhH
SVN3YXBDaGFpbldpbmRvd1N1cmZhY2VXR0wgOiBwdQogICAgIEVHTGludCBpc1Bvc3RTdWJCdWZm
ZXJTdXBwb3J0ZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICBFR0xpbnQgZ2V0U3dhcEJlaGF2aW9y
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBGcmFtZWJ1ZmZlckltcGwgKmNyZWF0ZURlZmF1bHRG
cmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRhdGEgJmRhdGEpIG92ZXJyaWRlOwor
ICAgIEZyYW1lYnVmZmVySW1wbCAqY3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpG
cmFtZWJ1ZmZlclN0YXRlICZkYXRhKSBvdmVycmlkZTsKIAogICBwcml2YXRlOgogICAgIGVnbDo6
RXJyb3Igc2V0T2JqZWN0c0xvY2tlZChib29sIGxvY2tlZCk7CkBAIC02NSw2ICs2Niw3IEBAIGNs
YXNzIERYR0lTd2FwQ2hhaW5XaW5kb3dTdXJmYWNlV0dMIDogcHUKIAogICAgIFN0YXRlTWFuYWdl
ckdMICptU3RhdGVNYW5hZ2VyOwogICAgIGNvbnN0IFdvcmthcm91bmRzR0wgJm1Xb3JrYXJvdW5k
czsKKyAgICBSZW5kZXJlckdMICptUmVuZGVyZXI7CiAgICAgY29uc3QgRnVuY3Rpb25zR0wgKm1G
dW5jdGlvbnNHTDsKICAgICBjb25zdCBGdW5jdGlvbnNXR0wgKm1GdW5jdGlvbnNXR0w7CiAKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wv
RGlzcGxheVdHTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EaXNwbGF5V0dMLmNwcAkocmV2aXNpb24gMjA3ODA0
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dn
bC9EaXNwbGF5V0dMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIsNiArMTIsNyBAQAogI2luY2x1
ZGUgImxpYkFOR0xFL0NvbmZpZy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0Rpc3BsYXkuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9TdXJmYWNlLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
Z2wvUmVuZGVyZXJHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL3JlbmRlcmVy
Z2xfdXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRFhHSVN3YXBD
aGFpbldpbmRvd1N1cmZhY2VXR0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC93
Z2wvRnVuY3Rpb25zV0dMLmgiCkBAIC0xOSw2ICsyMCw4IEBACiAjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZ2wvd2dsL1dpbmRvd1N1cmZhY2VXR0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9nbC93Z2wvd2dsX3V0aWxzLmgiCiAKKyNpbmNsdWRlICJwbGF0Zm9ybS9QbGF0Zm9y
bS5oIgorCiAjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNs
dWRlIDxzc3RyZWFtPgpAQCAtNTksNiArNjIsNyBAQCBEaXNwbGF5V0dMOjpEaXNwbGF5V0dMKCkK
ICAgICAgIG1PcGVuR0xNb2R1bGUobnVsbHB0ciksCiAgICAgICBtRnVuY3Rpb25zV0dMKG51bGxw
dHIpLAogICAgICAgbUZ1bmN0aW9uc0dMKG51bGxwdHIpLAorICAgICAgbUhhc1JvYnVzdG5lc3Mo
ZmFsc2UpLAogICAgICAgbVdpbmRvd0NsYXNzKDApLAogICAgICAgbVdpbmRvdyhudWxscHRyKSwK
ICAgICAgIG1EZXZpY2VDb250ZXh0KG51bGxwdHIpLApAQCAtMTczLDYgKzE3Nyw5IEBAIGVnbDo6
RXJyb3IgRGlzcGxheVdHTDo6aW5pdGlhbGl6ZShlZ2w6OkQKICAgICAvLyBSZWluaXRpYWxpemUg
dGhlIHdnbCBmdW5jdGlvbnMgdG8gZ3JhYiB0aGUgZXh0ZW5zaW9ucwogICAgIG1GdW5jdGlvbnNX
R0wtPmluaXRpYWxpemUobU9wZW5HTE1vZHVsZSwgZHVtbXlEZXZpY2VDb250ZXh0KTsKIAorICAg
IGJvb2wgaGFzV0dMQ3JlYXRlQ29udGV4dFJvYnVzdG5lc3MgPQorICAgICAgICBtRnVuY3Rpb25z
V0dMLT5oYXNFeHRlbnNpb24oIldHTF9BUkJfY3JlYXRlX2NvbnRleHRfcm9idXN0bmVzcyIpOwor
CiAgICAgLy8gRGVzdHJveSB0aGUgZHVtbXkgd2luZG93IGFuZCBjb250ZXh0CiAgICAgbUZ1bmN0
aW9uc1dHTC0+bWFrZUN1cnJlbnQoZHVtbXlEZXZpY2VDb250ZXh0LCBudWxscHRyKTsKICAgICBt
RnVuY3Rpb25zV0dMLT5kZWxldGVDb250ZXh0KGR1bW15V0dMQ29udGV4dCk7CkBAIC0yNTksNiAr
MjY2LDEyIEBAIGVnbDo6RXJyb3IgRGlzcGxheVdHTDo6aW5pdGlhbGl6ZShlZ2w6OkQKIAogICAg
ICAgICBzdGQ6OnZlY3RvcjxpbnQ+IGNvbnRleHRDcmVhdGlvbkF0dHJpYnV0ZXM7CiAKKyAgICAg
ICAgaWYgKGhhc1dHTENyZWF0ZUNvbnRleHRSb2J1c3RuZXNzKQorICAgICAgICB7CisgICAgICAg
ICAgICBjb250ZXh0Q3JlYXRpb25BdHRyaWJ1dGVzLnB1c2hfYmFjayhXR0xfQ09OVEVYVF9SRVNF
VF9OT1RJRklDQVRJT05fU1RSQVRFR1lfQVJCKTsKKyAgICAgICAgICAgIGNvbnRleHRDcmVhdGlv
bkF0dHJpYnV0ZXMucHVzaF9iYWNrKFdHTF9MT1NFX0NPTlRFWFRfT05fUkVTRVRfQVJCKTsKKyAg
ICAgICAgfQorCiAgICAgICAgIC8vIERvbid0IHJlcXVlc3QgYSBzcGVjaWZpYyB2ZXJzaW9uIHVu
bGVzcyB0aGUgdXNlciB3YW50cyBvbmUuICBXR0wgd2lsbCByZXR1cm4gdGhlIGhpZ2hlc3QgdmVy
c2lvbgogICAgICAgICAvLyB0aGF0IHRoZSBkcml2ZXIgc3VwcG9ydHMgaWYgbm8gdmVyc2lvbiBp
cyByZXF1ZXN0ZWQuCiAgICAgICAgIEVHTGludCByZXF1ZXN0ZWRNYWpvclZlcnNpb24gPSBzdGF0
aWNfY2FzdDxFR0xpbnQ+KApAQCAtMzI5LDYgKzM0MiwxNCBAQCBlZ2w6OkVycm9yIERpc3BsYXlX
R0w6OmluaXRpYWxpemUoZWdsOjpECiAgICAgbUZ1bmN0aW9uc0dMID0gbmV3IEZ1bmN0aW9uc0dM
V2luZG93cyhtT3BlbkdMTW9kdWxlLCBtRnVuY3Rpb25zV0dMLT5nZXRQcm9jQWRkcmVzcyk7CiAg
ICAgbUZ1bmN0aW9uc0dMLT5pbml0aWFsaXplKCk7CiAKKyAgICBtSGFzUm9idXN0bmVzcyA9IG1G
dW5jdGlvbnNHTC0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1cyAhPSBudWxscHRyOworICAgIGlmICho
YXNXR0xDcmVhdGVDb250ZXh0Um9idXN0bmVzcyAhPSBtSGFzUm9idXN0bmVzcykKKyAgICB7Cisg
ICAgICAgIEFOR0xFUGxhdGZvcm1DdXJyZW50KCktPmxvZ1dhcm5pbmcoCisgICAgICAgICAgICAi
V0dMX0FSQl9jcmVhdGVfY29udGV4dF9yb2J1c3RuZXNzIGV4aXN0cyBidXQgdW5hYmxlIHRvIE9w
ZW5HTCBjb250ZXh0IHdpdGggIgorICAgICAgICAgICAgInJvYnVzdG5lc3MuIik7CisgICAgfQor
CiAgICAgLy8gSW50ZWwgT3BlbkdMIEVTIGRyaXZlcnMgYXJlIG5vdCBjdXJyZW50bHkgc3VwcG9y
dGVkIGR1ZSB0byBidWdzIGluIHRoZSBkcml2ZXIgYW5kIEFOR0xFCiAgICAgVmVuZG9ySUQgdmVu
ZG9yID0gR2V0VmVuZG9ySUQobUZ1bmN0aW9uc0dMKTsKICAgICBpZiAocmVxdWVzdGVkRGlzcGxh
eVR5cGUgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEUgJiYgdmVuZG9y
ID09IFZFTkRPUl9JRF9JTlRFTCkKQEAgLTM0NSw3ICszNjYsOSBAQCBlZ2w6OkVycm9yIERpc3Bs
YXlXR0w6OmluaXRpYWxpemUoZWdsOjpECiAgICAgICAgIERXT1JEIGN1cnJlbnRQcm9jZXNzSWQg
PSBHZXRDdXJyZW50UHJvY2Vzc0lkKCk7CiAgICAgICAgIERXT1JEIHdpbmRvd1Byb2Nlc3NJZDsK
ICAgICAgICAgR2V0V2luZG93VGhyZWFkUHJvY2Vzc0lkKG5hdGl2ZVdpbmRvdywgJndpbmRvd1By
b2Nlc3NJZCk7Ci0gICAgICAgIG1Vc2VEWEdJU3dhcENoYWlucyA9IChjdXJyZW50UHJvY2Vzc0lk
ICE9IHdpbmRvd1Byb2Nlc3NJZCk7CisKKyAgICAgICAgLy8gQU1EIGRyaXZlcnMgYWR2ZXJ0aXNl
IHRoZSBXR0xfTlZfRFhfaW50ZXJvcCBhbmQgV0dMX05WX0RYX2ludGVyb3AyIGV4dGVuc2lvbnMg
YnV0IGZhaWwKKyAgICAgICAgbVVzZURYR0lTd2FwQ2hhaW5zID0gdmVuZG9yICE9IFZFTkRPUl9J
RF9BTUQgJiYgKGN1cnJlbnRQcm9jZXNzSWQgIT0gd2luZG93UHJvY2Vzc0lkKTsKICAgICB9CiAg
ICAgZWxzZQogICAgIHsKQEAgLTQwNiwyNSArNDI5LDI3IEBAIHZvaWQgRGlzcGxheVdHTDo6dGVy
bWluYXRlKCkKICAgICBBU1NFUlQobVJlZ2lzdGVyZWREM0REZXZpY2VzLmVtcHR5KCkpOwogfQog
Ci1TdXJmYWNlSW1wbCAqRGlzcGxheVdHTDo6Y3JlYXRlV2luZG93U3VyZmFjZShjb25zdCBlZ2w6
OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKK1N1cmZhY2VJbXBsICpEaXNwbGF5V0dMOjpjcmVhdGVX
aW5kb3dTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25m
aWd1cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKIHsKICAg
ICBFR0xpbnQgb3JpZW50YXRpb24gPSBzdGF0aWNfY2FzdDxFR0xpbnQ+KGF0dHJpYnMuZ2V0KEVH
TF9TVVJGQUNFX09SSUVOVEFUSU9OX0FOR0xFLCAwKSk7CiAgICAgaWYgKG1Vc2VEWEdJU3dhcENo
YWlucykKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgRFhHSVN3YXBDaGFpbldpbmRvd1N1cmZh
Y2VXR0wodGhpcy0+Z2V0UmVuZGVyZXIoKSwgd2luZG93LCBtRDNEMTFEZXZpY2UsCisgICAgICAg
IHJldHVybiBuZXcgRFhHSVN3YXBDaGFpbldpbmRvd1N1cmZhY2VXR0woc3RhdGUsIGdldFJlbmRl
cmVyKCksIHdpbmRvdywgbUQzRDExRGV2aWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1EM0QxMURldmljZUhhbmRsZSwgbVdHTENvbnRleHQsIG1E
ZXZpY2VDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1GdW5jdGlvbnNHTCwgbUZ1bmN0aW9uc1dHTCwgb3JpZW50YXRpb24pOwogICAgIH0K
ICAgICBlbHNlCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IFdpbmRvd1N1cmZhY2VXR0wodGhp
cy0+Z2V0UmVuZGVyZXIoKSwgd2luZG93LCBtUGl4ZWxGb3JtYXQsIG1XR0xDb250ZXh0LAorICAg
ICAgICByZXR1cm4gbmV3IFdpbmRvd1N1cmZhY2VXR0woc3RhdGUsIGdldFJlbmRlcmVyKCksIHdp
bmRvdywgbVBpeGVsRm9ybWF0LCBtV0dMQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1GdW5jdGlvbnNXR0wsIG9yaWVudGF0aW9uKTsKICAgICB9CiB9CiAKLVN1
cmZhY2VJbXBsICpEaXNwbGF5V0dMOjpjcmVhdGVQYnVmZmVyU3VyZmFjZShjb25zdCBlZ2w6OkNv
bmZpZyAqY29uZmlndXJhdGlvbiwKK1N1cmZhY2VJbXBsICpEaXNwbGF5V0dMOjpjcmVhdGVQYnVm
ZmVyU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZp
Z3VyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiB7CiAgICAgRUdMaW50IHdpZHRoICAg
ICAgICAgID0gc3RhdGljX2Nhc3Q8RUdMaW50PihhdHRyaWJzLmdldChFR0xfV0lEVEgsIDApKTsK
QEAgLTQzMywxMSArNDU4LDEyIEBAIFN1cmZhY2VJbXBsICpEaXNwbGF5V0dMOjpjcmVhdGVQYnVm
ZmVyU3UKICAgICBFR0xlbnVtIHRleHR1cmVGb3JtYXQgPSBzdGF0aWNfY2FzdDxFR0xlbnVtPihh
dHRyaWJzLmdldChFR0xfVEVYVFVSRV9GT1JNQVQsIEVHTF9OT19URVhUVVJFKSk7CiAgICAgRUdM
ZW51bSB0ZXh0dXJlVGFyZ2V0ID0gc3RhdGljX2Nhc3Q8RUdMZW51bT4oYXR0cmlicy5nZXQoRUdM
X1RFWFRVUkVfVEFSR0VULCBFR0xfTk9fVEVYVFVSRSkpOwogCi0gICAgcmV0dXJuIG5ldyBQYnVm
ZmVyU3VyZmFjZVdHTCh0aGlzLT5nZXRSZW5kZXJlcigpLCB3aWR0aCwgaGVpZ2h0LCB0ZXh0dXJl
Rm9ybWF0LCB0ZXh0dXJlVGFyZ2V0LAorICAgIHJldHVybiBuZXcgUGJ1ZmZlclN1cmZhY2VXR0wo
c3RhdGUsIGdldFJlbmRlcmVyKCksIHdpZHRoLCBoZWlnaHQsIHRleHR1cmVGb3JtYXQsIHRleHR1
cmVUYXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXJnZXN0LCBtUGl4
ZWxGb3JtYXQsIG1EZXZpY2VDb250ZXh0LCBtV0dMQ29udGV4dCwgbUZ1bmN0aW9uc1dHTCk7CiB9
CiAKLVN1cmZhY2VJbXBsICpEaXNwbGF5V0dMOjpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZl
cihjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKK1N1cmZhY2VJbXBsICpEaXNwbGF5
V0dMOjpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6OlN1cmZhY2VTdGF0
ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVy
IHNoYXJlSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQogewpAQCAtNDQ1
LDcgKzQ3MSw4IEBAIFN1cmZhY2VJbXBsICpEaXNwbGF5V0dMOjpjcmVhdGVQYnVmZmVyRnIKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAotU3VyZmFjZUltcGwgKkRpc3BsYXlXR0w6OmNyZWF0ZVBp
eG1hcFN1cmZhY2UoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCitTdXJmYWNlSW1w
bCAqRGlzcGxheVdHTDo6Y3JlYXRlUGl4bWFwU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0
ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5hdGl2ZVBpeG1hcFR5cGUgbmF0aXZlUGl4bWFwLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRy
aWJ1dGVNYXAgJmF0dHJpYnMpCiB7CkBAIC00NTksNyArNDg2LDcgQEAgZWdsOjpFcnJvciBEaXNw
bGF5V0dMOjpnZXREZXZpY2UoRGV2aWNlSQogICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURf
RElTUExBWSk7CiB9CiAKLWVnbDo6Q29uZmlnU2V0IERpc3BsYXlXR0w6OmdlbmVyYXRlQ29uZmln
cygpIGNvbnN0CitlZ2w6OkNvbmZpZ1NldCBEaXNwbGF5V0dMOjpnZW5lcmF0ZUNvbmZpZ3MoKQog
ewogICAgIGVnbDo6Q29uZmlnU2V0IGNvbmZpZ3M7CiAKQEAgLTUzNCwyMSArNTYxLDE4IEBAIGVn
bDo6Q29uZmlnU2V0IERpc3BsYXlXR0w6OmdlbmVyYXRlQ29uZmkKICAgICByZXR1cm4gY29uZmln
czsKIH0KIAotYm9vbCBEaXNwbGF5V0dMOjppc0RldmljZUxvc3QoKSBjb25zdAotewotICAgIC8v
VU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQogYm9vbCBEaXNwbGF5V0dM
Ojp0ZXN0RGV2aWNlTG9zdCgpCiB7Ci0gICAgLy9VTklNUExFTUVOVEVEKCk7CisgICAgaWYgKG1I
YXNSb2J1c3RuZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldFJlbmRlcmVyKCktPmdldFJl
c2V0U3RhdHVzKCkgIT0gR0xfTk9fRVJST1I7CisgICAgfQorCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCiBlZ2w6OkVycm9yIERpc3BsYXlXR0w6OnJlc3RvcmVMb3N0RGV2aWNlKCkKIHsKLSAgICBV
TklNUExFTUVOVEVEKCk7CiAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9ESVNQTEFZKTsK
IH0KIApAQCAtNjE0LDE0ICs2MzgsMTIgQEAgZWdsOjpFcnJvciBEaXNwbGF5V0dMOjppbml0aWFs
aXplRDNERGV2aQogCiB2b2lkIERpc3BsYXlXR0w6OmdlbmVyYXRlRXh0ZW5zaW9ucyhlZ2w6OkRp
c3BsYXlFeHRlbnNpb25zICpvdXRFeHRlbnNpb25zKSBjb25zdAogewotICAgIG91dEV4dGVuc2lv
bnMtPmNyZWF0ZUNvbnRleHQgPSB0cnVlOwotICAgIG91dEV4dGVuc2lvbnMtPmNyZWF0ZUNvbnRl
eHROb0Vycm9yID0gdHJ1ZTsKLQogICAgIC8vIE9ubHkgZW5hYmxlIHRoZSBzdXJmYWNlIG9yaWVu
dGF0aW9uICBhbmQgcG9zdCBzdWIgYnVmZmVyIGZvciBEWEdJIHN3YXAgY2hhaW4gc3VyZmFjZXMs
IHRoZXkKLSAgICAvLyBwcmVmZXIgdG8gc3dhcCB3aXRoCi0gICAgLy8gaW52ZXJ0ZWQgWS4KKyAg
ICAvLyBwcmVmZXIgdG8gc3dhcCB3aXRoIGludmVydGVkIFkuCiAgICAgb3V0RXh0ZW5zaW9ucy0+
cG9zdFN1YkJ1ZmZlciAgICAgID0gbVVzZURYR0lTd2FwQ2hhaW5zOwogICAgIG91dEV4dGVuc2lv
bnMtPnN1cmZhY2VPcmllbnRhdGlvbiA9IG1Vc2VEWEdJU3dhcENoYWluczsKKworICAgIG91dEV4
dGVuc2lvbnMtPmNyZWF0ZUNvbnRleHRSb2J1c3RuZXNzID0gbUhhc1JvYnVzdG5lc3M7CiB9CiAK
IHZvaWQgRGlzcGxheVdHTDo6Z2VuZXJhdGVDYXBzKGVnbDo6Q2FwcyAqb3V0Q2FwcykgY29uc3QK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93
Z2wvRGlzcGxheVdHTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRGlzcGxheVdHTC5oCShyZXZpc2lvbiAyMDc4MDQp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2ds
L0Rpc3BsYXlXR0wuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMjEgKzI4LDI0IEBAIGNsYXNzIERp
c3BsYXlXR0wgOiBwdWJsaWMgRGlzcGxheUdMCiAgICAgdm9pZCB0ZXJtaW5hdGUoKSBvdmVycmlk
ZTsKIAogICAgIC8vIFN1cmZhY2UgY3JlYXRpb24KLSAgICBTdXJmYWNlSW1wbCAqY3JlYXRlV2lu
ZG93U3VyZmFjZShjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKKyAgICBTdXJmYWNl
SW1wbCAqY3JlYXRlV2luZG93U3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcg
KmNvbmZpZ3VyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdM
TmF0aXZlV2luZG93VHlwZSB3aW5kb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOwotICAgIFN1
cmZhY2VJbXBsICpjcmVhdGVQYnVmZmVyU3VyZmFjZShjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmln
dXJhdGlvbiwKKyAgICBTdXJmYWNlSW1wbCAqY3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3QgZWds
OjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92
ZXJyaWRlOwotICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihj
b25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKKyAgICBTdXJmYWNlSW1wbCAqY3JlYXRl
UGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6
OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIHNoYXJlSGFuZGxlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1h
cCAmYXR0cmlicykgb3ZlcnJpZGU7Ci0gICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBpeG1hcFN1cmZh
Y2UoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCisgICAgU3VyZmFjZUltcGwgKmNy
ZWF0ZVBpeG1hcFN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1
cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hdGl2ZVBpeG1h
cFR5cGUgbmF0aXZlUGl4bWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKIAotICAgIGVnbDo6
Q29uZmlnU2V0IGdlbmVyYXRlQ29uZmlncygpIGNvbnN0IG92ZXJyaWRlOworICAgIGVnbDo6Q29u
ZmlnU2V0IGdlbmVyYXRlQ29uZmlncygpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBpc0RldmljZUxv
c3QoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHRlc3REZXZpY2VMb3N0KCkgb3ZlcnJpZGU7
CiAgICAgZWdsOjpFcnJvciByZXN0b3JlTG9zdERldmljZSgpIG92ZXJyaWRlOwogCkBAIC03NSw2
ICs3OCw4IEBAIGNsYXNzIERpc3BsYXlXR0wgOiBwdWJsaWMgRGlzcGxheUdMCiAgICAgRnVuY3Rp
b25zV0dMICptRnVuY3Rpb25zV0dMOwogICAgIEZ1bmN0aW9uc0dMICptRnVuY3Rpb25zR0w7CiAK
KyAgICBib29sIG1IYXNSb2J1c3RuZXNzOworCiAgICAgQVRPTSBtV2luZG93Q2xhc3M7CiAgICAg
SFdORCBtV2luZG93OwogICAgIEhEQyBtRGV2aWNlQ29udGV4dDsKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvUGJ1ZmZlclN1cmZhY2VX
R0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC93Z2wvUGJ1ZmZlclN1cmZhY2VXR0wuY3BwCShyZXZpc2lvbiAyMDc4MDQp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2ds
L1BidWZmZXJTdXJmYWNlV0dMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYsNyArMTYsOCBAQAog
bmFtZXNwYWNlIHJ4CiB7CiAKLVBidWZmZXJTdXJmYWNlV0dMOjpQYnVmZmVyU3VyZmFjZVdHTChS
ZW5kZXJlckdMICpyZW5kZXJlciwKK1BidWZmZXJTdXJmYWNlV0dMOjpQYnVmZmVyU3VyZmFjZVdH
TChjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUmVuZGVyZXJHTCAqcmVuZGVyZXIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRUdMaW50IHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVHTGludCBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRUdMZW51bSB0ZXh0dXJlRm9ybWF0LApAQCAtMjYsNyArMjcsNyBAQCBQYnVmZmVy
U3VyZmFjZVdHTDo6UGJ1ZmZlclN1cmZhY2VXR0woUmVuCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSERDIGRldmljZUNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSEdMUkMgd2dsQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBGdW5jdGlvbnNXR0wgKmZ1bmN0aW9ucykKLSAgICA6IFN1cmZh
Y2VHTChyZW5kZXJlciksCisgICAgOiBTdXJmYWNlR0woc3RhdGUsIHJlbmRlcmVyKSwKICAgICAg
IG1XaWR0aCh3aWR0aCksCiAgICAgICBtSGVpZ2h0KGhlaWdodCksCiAgICAgICBtTGFyZ2VzdChs
YXJnZXN0KSwKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC93Z2wvUGJ1ZmZlclN1cmZhY2VXR0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL1BidWZmZXJTdXJmYWNl
V0dMLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvUGJ1ZmZlclN1cmZhY2VXR0wuaAkod29ya2luZyBjb3B5
KQpAQCAtMjEsNyArMjEsOCBAQCBjbGFzcyBGdW5jdGlvbnNXR0w7CiBjbGFzcyBQYnVmZmVyU3Vy
ZmFjZVdHTCA6IHB1YmxpYyBTdXJmYWNlR0wKIHsKICAgcHVibGljOgotICAgIFBidWZmZXJTdXJm
YWNlV0dMKFJlbmRlcmVyR0wgKnJlbmRlcmVyLAorICAgIFBidWZmZXJTdXJmYWNlV0dMKGNvbnN0
IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJl
ckdMICpyZW5kZXJlciwKICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgd2lkdGgsCiAgICAg
ICAgICAgICAgICAgICAgICAgRUdMaW50IGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICBF
R0xlbnVtIHRleHR1cmVGb3JtYXQsCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL1dpbmRvd1N1cmZhY2VXR0wuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wv
V2luZG93U3VyZmFjZVdHTC5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvV2luZG93U3VyZmFjZVdHTC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE2LDEzICsxNiwxNCBAQAogbmFtZXNwYWNlIHJ4CiB7CiAK
LVdpbmRvd1N1cmZhY2VXR0w6OldpbmRvd1N1cmZhY2VXR0woUmVuZGVyZXJHTCAqcmVuZGVyZXIs
CitXaW5kb3dTdXJmYWNlV0dMOjpXaW5kb3dTdXJmYWNlV0dMKGNvbnN0IGVnbDo6U3VyZmFjZVN0
YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyZXJH
TCAqcmVuZGVyZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2
ZVdpbmRvd1R5cGUgd2luZG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgcGl4ZWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhHTFJD
IHdnbENvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZ1
bmN0aW9uc1dHTCAqZnVuY3Rpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBFR0xpbnQgb3JpZW50YXRpb24pCi0gICAgOiBTdXJmYWNlR0wocmVuZGVyZXIpLAorICAgIDog
U3VyZmFjZUdMKHN0YXRlLCByZW5kZXJlciksCiAgICAgICBtUGl4ZWxGb3JtYXQocGl4ZWxGb3Jt
YXQpLAogICAgICAgbVdHTENvbnRleHQod2dsQ29udGV4dCksCiAgICAgICBtV2luZG93KHdpbmRv
dyksCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvd2dsL1dpbmRvd1N1cmZhY2VXR0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL1dpbmRvd1N1cmZhY2VXR0wuaAko
cmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL3dnbC9XaW5kb3dTdXJmYWNlV0dMLmgJKHdvcmtpbmcgY29weSkKQEAgLTIx
LDcgKzIxLDggQEAgY2xhc3MgRnVuY3Rpb25zV0dMOwogY2xhc3MgV2luZG93U3VyZmFjZVdHTCA6
IHB1YmxpYyBTdXJmYWNlR0wKIHsKICAgcHVibGljOgotICAgIFdpbmRvd1N1cmZhY2VXR0woUmVu
ZGVyZXJHTCAqcmVuZGVyZXIsCisgICAgV2luZG93U3VyZmFjZVdHTChjb25zdCBlZ2w6OlN1cmZh
Y2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICBSZW5kZXJlckdMICpyZW5kZXJl
ciwKICAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LAogICAg
ICAgICAgICAgICAgICAgICAgaW50IHBpeGVsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAg
SEdMUkMgd2dsQ29udGV4dCwKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9udWxsL0J1ZmZlck5VTEwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0J1ZmZlck5VTEwuY3Bw
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9udWxsL0J1ZmZlck5VTEwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzQg
QEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisvLyBCdWZmZXJOVUxMLmNwcDoKKy8vICAgIEltcGxlbWVudHMgdGhlIGNs
YXNzIG1ldGhvZHMgZm9yIEJ1ZmZlck5VTEwuCisvLworCisjaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvbnVsbC9CdWZmZXJOVUxMLmgiCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKwor
bmFtZXNwYWNlIHJ4Cit7CisKK0J1ZmZlck5VTEw6OkJ1ZmZlck5VTEwoKSA6IEJ1ZmZlckltcGwo
KQoreworfQorCitCdWZmZXJOVUxMOjp+QnVmZmVyTlVMTCgpCit7Cit9CisKK2dsOjpFcnJvciBC
dWZmZXJOVUxMOjpzZXREYXRhKEdMZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVf
dCBzaXplLCBHTGVudW0gdXNhZ2UpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgQnVmZmVy
TlVMTDo6c2V0U3ViRGF0YShHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qg
c2l6ZSwgc2l6ZV90IG9mZnNldCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBCdWZmZXJO
VUxMOjpjb3B5U3ViRGF0YShCdWZmZXJJbXBsICpzb3VyY2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnRwdHIgc291cmNlT2Zmc2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50cHRyIGRlc3RPZmZzZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsK
KyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVy
cm9yIEJ1ZmZlck5VTEw6Om1hcChHTGVudW0gYWNjZXNzLCBHTHZvaWQgKiptYXBQdHIpCit7Cisg
ICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOworfQorCitnbDo6RXJyb3IgQnVmZmVyTlVMTDo6bWFwUmFuZ2Uoc2l6ZV90IG9mZnNl
dCwgc2l6ZV90IGxlbmd0aCwgR0xiaXRmaWVsZCBhY2Nlc3MsIEdMdm9pZCAqKm1hcFB0cikKK3sK
KyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBCdWZmZXJOVUxMOjp1bm1hcChHTGJvb2xlYW4gKnJl
c3VsdCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBCdWZmZXJOVUxMOjpnZXRJbmRleFJh
bmdlKEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBj
b3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJpbWl0aXZl
UmVzdGFydEVuYWJsZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6
SW5kZXhSYW5nZSAqb3V0UmFuZ2UpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCit9ICAvLyBuYW1lc3BhY2Ug
cngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9u
dWxsL0J1ZmZlck5VTEwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9CdWZmZXJOVUxMLmgJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvQnVmZmVy
TlVMTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKy8vCisvLyBDb3B5cmlnaHQg
MjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBCdWZm
ZXJOVUxMLmg6CisvLyAgICBEZWZpbmVzIHRoZSBjbGFzcyBpbnRlcmZhY2UgZm9yIEJ1ZmZlck5V
TEwsIGltcGxlbWVudGluZyBCdWZmZXJJbXBsLgorLy8KKworI2lmbmRlZiBMSUJBTkdMRV9SRU5E
RVJFUl9OVUxMX0JVRkZFUk5VTExfSF8KKyNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfTlVMTF9C
VUZGRVJOVUxMX0hfCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9CdWZmZXJJbXBsLmgi
CisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBCdWZmZXJOVUxMIDogcHVibGljIEJ1ZmZlcklt
cGwKK3sKKyAgcHVibGljOgorICAgIEJ1ZmZlck5VTEwoKTsKKyAgICB+QnVmZmVyTlVMTCgpIG92
ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIHNldERhdGEoR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9p
ZCAqZGF0YSwgc2l6ZV90IHNpemUsIEdMZW51bSB1c2FnZSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVy
cm9yIHNldFN1YkRhdGEoR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNp
emUsIHNpemVfdCBvZmZzZXQpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBjb3B5U3ViRGF0YShC
dWZmZXJJbXBsICpzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIHNv
dXJjZU9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgZGVzdE9mZnNl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplKSBvdmVycmlkZTsK
KyAgICBnbDo6RXJyb3IgbWFwKEdMZW51bSBhY2Nlc3MsIEdMdm9pZCAqKm1hcFB0cikgb3ZlcnJp
ZGU7CisgICAgZ2w6OkVycm9yIG1hcFJhbmdlKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgs
IEdMYml0ZmllbGQgYWNjZXNzLCBHTHZvaWQgKiptYXBQdHIpIG92ZXJyaWRlOworICAgIGdsOjpF
cnJvciB1bm1hcChHTGJvb2xlYW4gKnJlc3VsdCkgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJyb3Ig
Z2V0SW5kZXhSYW5nZShHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb3VudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHByaW1pdGl2ZVJlc3RhcnRFbmFibGVk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpJbmRleFJhbmdlICpvdXRSYW5nZSkg
b3ZlcnJpZGU7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJBTkdM
RV9SRU5ERVJFUl9OVUxMX0JVRkZFUk5VTExfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0NvbXBpbGVyTlVMTC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwv
Q29tcGlsZXJOVUxMLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Db21waWxlck5VTEwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMzcgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBDb21waWxlck5VTEwuY3BwOgorLy8g
ICAgSW1wbGVtZW50cyB0aGUgY2xhc3MgbWV0aG9kcyBmb3IgQ29tcGlsZXJOVUxMLgorLy8KKwor
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL251bGwvQ29tcGlsZXJOVUxMLmgiCisKKyNpbmNs
dWRlICJjb21tb24vZGVidWcuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK0NvbXBpbGVyTlVMTDo6
Q29tcGlsZXJOVUxMKCkgOiBDb21waWxlckltcGwoKQoreworfQorCitDb21waWxlck5VTEw6On5D
b21waWxlck5VTEwoKQoreworfQorCitnbDo6RXJyb3IgQ29tcGlsZXJOVUxMOjpyZWxlYXNlKCkK
K3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7Cit9CisKK1NoU2hhZGVyT3V0cHV0IENvbXBpbGVyTlVMTDo6Z2V0VHJhbnNs
YXRvck91dHB1dFR5cGUoKSBjb25zdAoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1
cm4gU2hTaGFkZXJPdXRwdXQoKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Db21waWxlck5V
TEwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvbnVsbC9Db21waWxlck5VTEwuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Db21waWxlck5VTEwuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyIEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gQ29tcGlsZXJOVUxM
Lmg6CisvLyAgICBEZWZpbmVzIHRoZSBjbGFzcyBpbnRlcmZhY2UgZm9yIENvbXBpbGVyTlVMTCwg
aW1wbGVtZW50aW5nIENvbXBpbGVySW1wbC4KKy8vCisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVS
RVJfTlVMTF9DT01QSUxFUk5VTExfSF8KKyNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfTlVMTF9D
T01QSUxFUk5VTExfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0NvbXBpbGVySW1w
bC5oIgorCituYW1lc3BhY2UgcngKK3sKKworY2xhc3MgQ29tcGlsZXJOVUxMIDogcHVibGljIENv
bXBpbGVySW1wbAoreworICBwdWJsaWM6CisgICAgQ29tcGlsZXJOVUxMKCk7CisgICAgfkNvbXBp
bGVyTlVMTCgpIG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIHJlbGVhc2UoKSBvdmVycmlkZTsK
KworICAgIC8vIFRPRE8oam1hZGlsbCk6IEV4cG9zZSB0cmFuc2xhdG9yIGJ1aWx0LWluIHJlc291
cmNlcyBpbml0IG1ldGhvZC4KKyAgICBTaFNoYWRlck91dHB1dCBnZXRUcmFuc2xhdG9yT3V0cHV0
VHlwZSgpIGNvbnN0IG92ZXJyaWRlOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRp
ZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfTlVMTF9DT01QSUxFUk5VTExfSF8KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0NvbnRleHROVUxM
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvbnVsbC9Db250ZXh0TlVMTC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvQ29udGV4dE5VTEwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTc1IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gQ29udGV4dE5V
TEwuY3BwOgorLy8gICAgSW1wbGVtZW50cyB0aGUgY2xhc3MgbWV0aG9kcyBmb3IgQ29udGV4dE5V
TEwuCisvLworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Db250ZXh0TlVMTC5o
IgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK25hbWVzcGFjZSByeAoreworCitDb250
ZXh0TlVMTDo6Q29udGV4dE5VTEwoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmc3RhdGUpIDogQ29u
dGV4dEltcGwoc3RhdGUpCit7Cit9CisKK0NvbnRleHROVUxMOjp+Q29udGV4dE5VTEwoKQorewor
fQorCitnbDo6RXJyb3IgQ29udGV4dE5VTEw6OmluaXRpYWxpemUoKQoreworICAgIFVOSU1QTEVN
RU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30K
KworZ2w6OkVycm9yIENvbnRleHROVUxMOjpmbHVzaCgpCit7CisgICAgVU5JTVBMRU1FTlRFRCgp
OworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6
RXJyb3IgQ29udGV4dE5VTEw6OmZpbmlzaCgpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3Ig
Q29udGV4dE5VTEw6OmRyYXdBcnJheXMoR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVp
IGNvdW50KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIENvbnRleHROVUxMOjpkcmF3QXJy
YXlzSW5zdGFuY2VkKEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZUNvdW50KQoreworICAgIFVOSU1QTEVNRU5U
RUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKwor
Z2w6OkVycm9yIENvbnRleHROVUxMOjpkcmF3RWxlbWVudHMoR0xlbnVtIG1vZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkKK3sK
KyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBDb250ZXh0TlVMTDo6ZHJhd0VsZW1lbnRzSW5zdGFu
Y2VkKEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5k
ZXhSYW5nZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBDb250ZXh0TlVMTDo6ZHJhd1Jh
bmdlRWxlbWVudHMoR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpCit7CisgICAgVU5J
TVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OworfQorCitDb21waWxlckltcGwgKkNvbnRleHROVUxMOjpjcmVhdGVDb21waWxlcigpCit7Cisg
ICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDb21waWxlckltcGwg
Kj4oMCk7Cit9CisKK1NoYWRlckltcGwgKkNvbnRleHROVUxMOjpjcmVhdGVTaGFkZXIoY29uc3Qg
Z2w6OlNoYWRlclN0YXRlICZkYXRhKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8U2hhZGVySW1wbCAqPigwKTsKK30KKworUHJvZ3JhbUltcGwgKkNvbnRl
eHROVUxMOjpjcmVhdGVQcm9ncmFtKGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJmRhdGEpCit7Cisg
ICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxQcm9ncmFtSW1wbCAq
PigwKTsKK30KKworRnJhbWVidWZmZXJJbXBsICpDb250ZXh0TlVMTDo6Y3JlYXRlRnJhbWVidWZm
ZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJmRhdGEpCit7CisgICAgVU5JTVBMRU1FTlRF
RCgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxGcmFtZWJ1ZmZlckltcGwgKj4oMCk7Cit9CisK
K1RleHR1cmVJbXBsICpDb250ZXh0TlVMTDo6Y3JlYXRlVGV4dHVyZShjb25zdCBnbDo6VGV4dHVy
ZVN0YXRlICZzdGF0ZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFRleHR1cmVJbXBsICo+KDApOworfQorCitSZW5kZXJidWZmZXJJbXBsICpDb250ZXh0
TlVMTDo6Y3JlYXRlUmVuZGVyYnVmZmVyKCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFJlbmRlcmJ1ZmZlckltcGwgKj4oMCk7Cit9CisKK0J1ZmZlcklt
cGwgKkNvbnRleHROVUxMOjpjcmVhdGVCdWZmZXIoKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QnVmZmVySW1wbCAqPigwKTsKK30KKworVmVydGV4QXJy
YXlJbXBsICpDb250ZXh0TlVMTDo6Y3JlYXRlVmVydGV4QXJyYXkoY29uc3QgZ2w6OlZlcnRleEFy
cmF5U3RhdGUgJmRhdGEpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxWZXJ0ZXhBcnJheUltcGwgKj4oMCk7Cit9CisKK1F1ZXJ5SW1wbCAqQ29udGV4dE5V
TEw6OmNyZWF0ZVF1ZXJ5KEdMZW51bSB0eXBlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8UXVlcnlJbXBsICo+KDApOworfQorCitGZW5jZU5WSW1wbCAq
Q29udGV4dE5VTEw6OmNyZWF0ZUZlbmNlTlYoKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RmVuY2VOVkltcGwgKj4oMCk7Cit9CisKK0ZlbmNlU3luY0lt
cGwgKkNvbnRleHROVUxMOjpjcmVhdGVGZW5jZVN5bmMoKQoreworICAgIFVOSU1QTEVNRU5URUQo
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RmVuY2VTeW5jSW1wbCAqPigwKTsKK30KKworVHJh
bnNmb3JtRmVlZGJhY2tJbXBsICpDb250ZXh0TlVMTDo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2so
Y29uc3QgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrU3RhdGUgJnN0YXRlKQoreworICAgIFVOSU1QTEVN
RU5URUQoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VHJhbnNmb3JtRmVlZGJhY2tJbXBsICo+
KDApOworfQorCitTYW1wbGVySW1wbCAqQ29udGV4dE5VTEw6OmNyZWF0ZVNhbXBsZXIoKQorewor
ICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U2FtcGxlckltcGwg
Kj4oMCk7Cit9CisKK3N0ZDo6dmVjdG9yPFBhdGhJbXBsICo+IENvbnRleHROVUxMOjpjcmVhdGVQ
YXRocyhHTHNpemVpIHJhbmdlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4g
c3RkOjp2ZWN0b3I8UGF0aEltcGwgKj4oKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Db250
ZXh0TlVMTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9udWxsL0NvbnRleHROVUxMLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvQ29udGV4dE5VTEwu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk1IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gQ29udGV4dE5V
TEwuaDoKKy8vICAgIERlZmluZXMgdGhlIGNsYXNzIGludGVyZmFjZSBmb3IgQ29udGV4dE5VTEws
IGltcGxlbWVudGluZyBDb250ZXh0SW1wbC4KKy8vCisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVS
RVJfTlVMTF9DT05URVhUTlVMTF9IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9OVUxMX0NP
TlRFWFROVUxMX0hfCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9Db250ZXh0SW1wbC5o
IgorCituYW1lc3BhY2UgcngKK3sKKworY2xhc3MgQ29udGV4dE5VTEwgOiBwdWJsaWMgQ29udGV4
dEltcGwKK3sKKyAgcHVibGljOgorICAgIENvbnRleHROVUxMKGNvbnN0IGdsOjpDb250ZXh0U3Rh
dGUgJnN0YXRlKTsKKyAgICB+Q29udGV4dE5VTEwoKSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJv
ciBpbml0aWFsaXplKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBGbHVzaCBhbmQgZmluaXNoLgorICAg
IGdsOjpFcnJvciBmbHVzaCgpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBmaW5pc2goKSBvdmVy
cmlkZTsKKworICAgIC8vIERyYXdpbmcgbWV0aG9kcy4KKyAgICBnbDo6RXJyb3IgZHJhd0FycmF5
cyhHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpIG92ZXJyaWRlOworICAg
IGdsOjpFcnJvciBkcmF3QXJyYXlzSW5zdGFuY2VkKEdMZW51bSBtb2RlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZpcnN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBpbnN0YW5jZUNvdW50KSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBk
cmF3RWxlbWVudHMoR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkgb3ZlcnJp
ZGU7CisgICAgZ2w6OkVycm9yIGRyYXdFbGVtZW50c0luc3RhbmNlZChHTGVudW0gbW9kZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2Up
IG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBkcmF3UmFuZ2VFbGVtZW50cyhHTGVudW0gbW9kZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZW5kLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2
b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkgb3ZlcnJpZGU7CisKKyAgICAvLyBDSFJPTUlVTV9wYXRo
X3JlbmRlcmluZyBwYXRoIGRyYXdpbmcgbWV0aG9kcy4KKworICAgIC8vIFNoYWRlciBjcmVhdGlv
bgorICAgIENvbXBpbGVySW1wbCAqY3JlYXRlQ29tcGlsZXIoKSBvdmVycmlkZTsKKyAgICBTaGFk
ZXJJbXBsICpjcmVhdGVTaGFkZXIoY29uc3QgZ2w6OlNoYWRlclN0YXRlICZkYXRhKSBvdmVycmlk
ZTsKKyAgICBQcm9ncmFtSW1wbCAqY3JlYXRlUHJvZ3JhbShjb25zdCBnbDo6UHJvZ3JhbVN0YXRl
ICZkYXRhKSBvdmVycmlkZTsKKworICAgIC8vIEZyYW1lYnVmZmVyIGNyZWF0aW9uCisgICAgRnJh
bWVidWZmZXJJbXBsICpjcmVhdGVGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0
ZSAmZGF0YSkgb3ZlcnJpZGU7CisKKyAgICAvLyBUZXh0dXJlIGNyZWF0aW9uCisgICAgVGV4dHVy
ZUltcGwgKmNyZWF0ZVRleHR1cmUoY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmc3RhdGUpIG92ZXJy
aWRlOworCisgICAgLy8gUmVuZGVyYnVmZmVyIGNyZWF0aW9uCisgICAgUmVuZGVyYnVmZmVySW1w
bCAqY3JlYXRlUmVuZGVyYnVmZmVyKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBCdWZmZXIgY3JlYXRp
b24KKyAgICBCdWZmZXJJbXBsICpjcmVhdGVCdWZmZXIoKSBvdmVycmlkZTsKKworICAgIC8vIFZl
cnRleCBBcnJheSBjcmVhdGlvbgorICAgIFZlcnRleEFycmF5SW1wbCAqY3JlYXRlVmVydGV4QXJy
YXkoY29uc3QgZ2w6OlZlcnRleEFycmF5U3RhdGUgJmRhdGEpIG92ZXJyaWRlOworCisgICAgLy8g
UXVlcnkgYW5kIEZlbmNlIGNyZWF0aW9uCisgICAgUXVlcnlJbXBsICpjcmVhdGVRdWVyeShHTGVu
dW0gdHlwZSkgb3ZlcnJpZGU7CisgICAgRmVuY2VOVkltcGwgKmNyZWF0ZUZlbmNlTlYoKSBvdmVy
cmlkZTsKKyAgICBGZW5jZVN5bmNJbXBsICpjcmVhdGVGZW5jZVN5bmMoKSBvdmVycmlkZTsKKwor
ICAgIC8vIFRyYW5zZm9ybSBGZWVkYmFjayBjcmVhdGlvbgorICAgIFRyYW5zZm9ybUZlZWRiYWNr
SW1wbCAqY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soCisgICAgICAgIGNvbnN0IGdsOjpUcmFuc2Zv
cm1GZWVkYmFja1N0YXRlICZzdGF0ZSkgb3ZlcnJpZGU7CisKKyAgICAvLyBTYW1wbGVyIG9iamVj
dCBjcmVhdGlvbgorICAgIFNhbXBsZXJJbXBsICpjcmVhdGVTYW1wbGVyKCkgb3ZlcnJpZGU7CisK
KyAgICBzdGQ6OnZlY3RvcjxQYXRoSW1wbCAqPiBjcmVhdGVQYXRocyhHTHNpemVpIHJhbmdlKSBv
dmVycmlkZTsKK307CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJQkFOR0xF
X1JFTkRFUkVSX05VTExfQ09OVEVYVE5VTExfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0RldmljZU5VTEwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0Rl
dmljZU5VTEwuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0RldmljZU5VTEwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNDggQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBEZXZpY2VOVUxMLmNwcDoKKy8vICAgIEltcGxl
bWVudHMgdGhlIGNsYXNzIG1ldGhvZHMgZm9yIERldmljZU5VTEwuCisvLworCisjaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvbnVsbC9EZXZpY2VOVUxMLmgiCisKKyNpbmNsdWRlICJjb21tb24v
ZGVidWcuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK0RldmljZU5VTEw6OkRldmljZU5VTEwoKSA6
IERldmljZUltcGwoKQoreworfQorCitEZXZpY2VOVUxMOjp+RGV2aWNlTlVMTCgpCit7Cit9CisK
K2VnbDo6RXJyb3IgRGV2aWNlTlVMTDo6Z2V0RGV2aWNlKHZvaWQgKipvdXRWYWx1ZSkKK3sKKyAg
ICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BQ0NFU1Mp
OworfQorCitFR0xpbnQgRGV2aWNlTlVMTDo6Z2V0VHlwZSgpCit7CisgICAgVU5JTVBMRU1FTlRF
RCgpOworICAgIHJldHVybiBFR0xpbnQoKTsKK30KKwordm9pZCBEZXZpY2VOVUxMOjpnZW5lcmF0
ZUV4dGVuc2lvbnMoZWdsOjpEZXZpY2VFeHRlbnNpb25zICpvdXRFeHRlbnNpb25zKSBjb25zdAor
eworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKworYm9vbCBEZXZpY2VOVUxMOjpkZXZpY2VFeHRl
cm5hbGx5U291cmNlZCgpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBib29s
KCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRGV2aWNlTlVMTC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0Rldmlj
ZU5VTEwuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvbnVsbC9EZXZpY2VOVUxMLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwzMiBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorLy8KKy8vIERldmljZU5VTEwuaDoKKy8vICAgIERlZmluZXMgdGhlIGNs
YXNzIGludGVyZmFjZSBmb3IgRGV2aWNlTlVMTCwgaW1wbGVtZW50aW5nIERldmljZUltcGwuCisv
LworCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX05VTExfREVWSUNFTlVMTF9IXworI2RlZmlu
ZSBMSUJBTkdMRV9SRU5ERVJFUl9OVUxMX0RFVklDRU5VTExfSF8KKworI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL0RldmljZUltcGwuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIERl
dmljZU5VTEwgOiBwdWJsaWMgRGV2aWNlSW1wbAoreworICBwdWJsaWM6CisgICAgRGV2aWNlTlVM
TCgpOworICAgIH5EZXZpY2VOVUxMKCkgb3ZlcnJpZGU7CisKKyAgICBlZ2w6OkVycm9yIGdldERl
dmljZSh2b2lkICoqb3V0VmFsdWUpIG92ZXJyaWRlOworICAgIEVHTGludCBnZXRUeXBlKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBnZW5lcmF0ZUV4dGVuc2lvbnMoZWdsOjpEZXZpY2VFeHRlbnNpb25z
ICpvdXRFeHRlbnNpb25zKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGRldmljZUV4dGVybmFs
bHlTb3VyY2VkKCkgb3ZlcnJpZGU7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlm
ICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9OVUxMX0RFVklDRU5VTExfSF8KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0Rpc3BsYXlOVUxMLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvbnVsbC9EaXNwbGF5TlVMTC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRGlzcGxheU5VTEwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTY3IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gRGlzcGxheU5VTEwu
Y3BwOgorLy8gICAgSW1wbGVtZW50cyB0aGUgY2xhc3MgbWV0aG9kcyBmb3IgRGlzcGxheU5VTEwu
CisvLworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbnVsbC9EaXNwbGF5TlVMTC5oIgor
CisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK25hbWVzcGFjZSByeAoreworCitEaXNwbGF5
TlVMTDo6RGlzcGxheU5VTEwoKSA6IERpc3BsYXlJbXBsKCkKK3sKK30KKworRGlzcGxheU5VTEw6
On5EaXNwbGF5TlVMTCgpCit7Cit9CisKK2VnbDo6RXJyb3IgRGlzcGxheU5VTEw6OmluaXRpYWxp
emUoZWdsOjpEaXNwbGF5ICpkaXNwbGF5KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICBy
ZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FDQ0VTUyk7Cit9CisKK3ZvaWQgRGlzcGxheU5VTEw6
OnRlcm1pbmF0ZSgpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCitlZ2w6OkVycm9yIERp
c3BsYXlOVUxMOjptYWtlQ3VycmVudChlZ2w6OlN1cmZhY2UgKmRyYXdTdXJmYWNlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpTdXJmYWNlICpyZWFkU3VyZmFjZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0
KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFE
X0FDQ0VTUyk7Cit9CisKK2VnbDo6Q29uZmlnU2V0IERpc3BsYXlOVUxMOjpnZW5lcmF0ZUNvbmZp
Z3MoKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZWdsOjpDb25maWdTZXQo
KTsKK30KKworYm9vbCBEaXNwbGF5TlVMTDo6dGVzdERldmljZUxvc3QoKQoreworICAgIFVOSU1Q
TEVNRU5URUQoKTsKKyAgICByZXR1cm4gYm9vbCgpOworfQorCitlZ2w6OkVycm9yIERpc3BsYXlO
VUxMOjpyZXN0b3JlTG9zdERldmljZSgpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJl
dHVybiBlZ2w6OkVycm9yKEVHTF9CQURfQUNDRVNTKTsKK30KKworYm9vbCBEaXNwbGF5TlVMTDo6
aXNWYWxpZE5hdGl2ZVdpbmRvdyhFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdykgY29uc3QKK3sK
KyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGJvb2woKTsKK30KKworc3RkOjpzdHJp
bmcgRGlzcGxheU5VTEw6OmdldFZlbmRvclN0cmluZygpIGNvbnN0Cit7CisgICAgVU5JTVBMRU1F
TlRFRCgpOworICAgIHJldHVybiBzdGQ6OnN0cmluZygpOworfQorCitlZ2w6OkVycm9yIERpc3Bs
YXlOVUxMOjpnZXREZXZpY2UoRGV2aWNlSW1wbCAqKmRldmljZSkKK3sKKyAgICBVTklNUExFTUVO
VEVEKCk7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BQ0NFU1MpOworfQorCitlZ2w6
OkVycm9yIERpc3BsYXlOVUxMOjp3YWl0Q2xpZW50KCkgY29uc3QKK3sKKyAgICBVTklNUExFTUVO
VEVEKCk7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BQ0NFU1MpOworfQorCitlZ2w6
OkVycm9yIERpc3BsYXlOVUxMOjp3YWl0TmF0aXZlKEVHTGludCBlbmdpbmUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3VyZmFjZSAqZHJhd1N1cmZhY2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3VyZmFjZSAqcmVhZFN1cmZhY2Up
IGNvbnN0Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBlZ2w6OkVycm9yKEVH
TF9CQURfQUNDRVNTKTsKK30KKworZ2w6OlZlcnNpb24gRGlzcGxheU5VTEw6OmdldE1heFN1cHBv
cnRlZEVTVmVyc2lvbigpIGNvbnN0Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVy
biBnbDo6VmVyc2lvbigpOworfQorCitTdXJmYWNlSW1wbCAqRGlzcGxheU5VTEw6OmNyZWF0ZVdp
bmRvd1N1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25m
aWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQorewor
ICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U3VyZmFjZUltcGwg
Kj4oMCk7Cit9CisKK1N1cmZhY2VJbXBsICpEaXNwbGF5TlVMTDo6Y3JlYXRlUGJ1ZmZlclN1cmZh
Y2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
ZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxTdXJmYWNlSW1wbCAqPigwKTsKK30KKworU3VyZmFjZUltcGwg
KkRpc3BsYXlOVUxMOjpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6OlN1
cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xD
bGllbnRCdWZmZXIgc2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJz
KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U3VyZmFj
ZUltcGwgKj4oMCk7Cit9CisKK1N1cmZhY2VJbXBsICpEaXNwbGF5TlVMTDo6Y3JlYXRlUGl4bWFw
U3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3Vy
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmF0
aXZlUGl4bWFwVHlwZSBuYXRpdmVQaXhtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCit7Cisg
ICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTdXJmYWNlSW1wbCAq
PigwKTsKK30KKworSW1hZ2VJbXBsICpEaXNwbGF5TlVMTDo6Y3JlYXRlSW1hZ2UoRUdMZW51bSB0
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OkltYWdlU2li
bGluZyAqYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
ZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxJbWFnZUltcGwgKj4oMCk7Cit9CisKK0NvbnRleHRJbXBsICpE
aXNwbGF5TlVMTDo6Y3JlYXRlQ29udGV4dChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZzdGF0ZSkK
K3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENvbnRleHRJ
bXBsICo+KDApOworfQorCitTdHJlYW1Qcm9kdWNlckltcGwgKkRpc3BsYXlOVUxMOjpjcmVhdGVT
dHJlYW1Qcm9kdWNlckQzRFRleHR1cmVOVjEyKAorICAgIGVnbDo6U3RyZWFtOjpDb25zdW1lclR5
cGUgY29uc3VtZXJUeXBlLAorICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQor
eworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U3RyZWFtUHJv
ZHVjZXJJbXBsICo+KDApOworfQorCit2b2lkIERpc3BsYXlOVUxMOjpnZW5lcmF0ZUV4dGVuc2lv
bnMoZWdsOjpEaXNwbGF5RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucykgY29uc3QKK3sKKyAgICBV
TklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgRGlzcGxheU5VTEw6OmdlbmVyYXRlQ2FwcyhlZ2w6
OkNhcHMgKm91dENhcHMpIGNvbnN0Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCit9ICAv
LyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9udWxsL0Rpc3BsYXlOVUxMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRGlzcGxheU5VTEwuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvbnVsbC9EaXNwbGF5TlVMTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODEgQEAKKy8v
CisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisvLyBEaXNwbGF5TlVMTC5oOgorLy8gICAgRGVmaW5lcyB0aGUgY2xhc3MgaW50ZXJm
YWNlIGZvciBEaXNwbGF5TlVMTCwgaW1wbGVtZW50aW5nIERpc3BsYXlJbXBsLgorLy8KKworI2lm
bmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9OVUxMX0RJU1BMQVlOVUxMX0hfCisjZGVmaW5lIExJQkFO
R0xFX1JFTkRFUkVSX05VTExfRElTUExBWU5VTExfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL0Rpc3BsYXlJbXBsLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBEaXNwbGF5
TlVMTCA6IHB1YmxpYyBEaXNwbGF5SW1wbAoreworICBwdWJsaWM6CisgICAgRGlzcGxheU5VTEwo
KTsKKyAgICB+RGlzcGxheU5VTEwoKSBvdmVycmlkZTsKKworICAgIGVnbDo6RXJyb3IgaW5pdGlh
bGl6ZShlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpIG92ZXJyaWRlOworICAgIHZvaWQgdGVybWluYXRl
KCkgb3ZlcnJpZGU7CisKKyAgICBlZ2w6OkVycm9yIG1ha2VDdXJyZW50KGVnbDo6U3VyZmFjZSAq
ZHJhd1N1cmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OlN1cmZhY2UgKnJl
YWRTdXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRl
eHQpIG92ZXJyaWRlOworCisgICAgZWdsOjpDb25maWdTZXQgZ2VuZXJhdGVDb25maWdzKCkgb3Zl
cnJpZGU7CisKKyAgICBib29sIHRlc3REZXZpY2VMb3N0KCkgb3ZlcnJpZGU7CisgICAgZWdsOjpF
cnJvciByZXN0b3JlTG9zdERldmljZSgpIG92ZXJyaWRlOworCisgICAgYm9vbCBpc1ZhbGlkTmF0
aXZlV2luZG93KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KSBjb25zdCBvdmVycmlkZTsKKwor
ICAgIHN0ZDo6c3RyaW5nIGdldFZlbmRvclN0cmluZygpIGNvbnN0IG92ZXJyaWRlOworCisgICAg
ZWdsOjpFcnJvciBnZXREZXZpY2UoRGV2aWNlSW1wbCAqKmRldmljZSkgb3ZlcnJpZGU7CisKKyAg
ICBlZ2w6OkVycm9yIHdhaXRDbGllbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9y
IHdhaXROYXRpdmUoRUdMaW50IGVuZ2luZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZWds
OjpTdXJmYWNlICpkcmF3U3VyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpT
dXJmYWNlICpyZWFkU3VyZmFjZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgZ2w6OlZlcnNpb24gZ2V0
TWF4U3VwcG9ydGVkRVNWZXJzaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBTdXJmYWNlSW1w
bCAqY3JlYXRlV2luZG93U3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNv
bmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMTmF0
aXZlV2luZG93VHlwZSB3aW5kb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOworICAgIFN1cmZh
Y2VJbXBsICpjcmVhdGVQYnVmZmVyU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3Rh
dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29u
ZmlnICpjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CisgICAgU3VyZmFj
ZUltcGwgKmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6U3VyZmFjZVN0
YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBzaGFyZUhhbmRsZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWds
OjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOworICAgIFN1cmZhY2VJbXBsICpjcmVh
dGVQaXhtYXBTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYXRpdmVQaXhtYXBU
eXBlIG5hdGl2ZVBpeG1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CisKKyAgICBJbWFnZUlt
cGwgKmNyZWF0ZUltYWdlKEVHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZWdsOjpJbWFnZVNpYmxpbmcgKmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKKworICAgIENvbnRl
eHRJbXBsICpjcmVhdGVDb250ZXh0KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJnN0YXRlKSBvdmVy
cmlkZTsKKworICAgIFN0cmVhbVByb2R1Y2VySW1wbCAqY3JlYXRlU3RyZWFtUHJvZHVjZXJEM0RU
ZXh0dXJlTlYxMigKKyAgICAgICAgZWdsOjpTdHJlYW06OkNvbnN1bWVyVHlwZSBjb25zdW1lclR5
cGUsCisgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsK
KworICBwcml2YXRlOgorICAgIHZvaWQgZ2VuZXJhdGVFeHRlbnNpb25zKGVnbDo6RGlzcGxheUV4
dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZ2VuZXJh
dGVDYXBzKGVnbDo6Q2FwcyAqb3V0Q2FwcykgY29uc3Qgb3ZlcnJpZGU7Cit9OworCit9ICAvLyBu
YW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9OVUxMX0RJU1BMQVlO
VUxMX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvbnVsbC9GZW5jZU5WTlVMTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRmVuY2VOVk5VTEwuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9u
dWxsL0ZlbmNlTlZOVUxMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzIEBACisvLwor
Ly8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisvLworLy8gRmVuY2VOVk5VTEwuY3BwOgorLy8gICAgSW1wbGVtZW50cyB0aGUgY2xhc3MgbWV0
aG9kcyBmb3IgRmVuY2VOVk5VTEwuCisvLworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
bnVsbC9GZW5jZU5WTlVMTC5oIgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK25hbWVz
cGFjZSByeAoreworCitGZW5jZU5WTlVMTDo6RmVuY2VOVk5VTEwoKSA6IEZlbmNlTlZJbXBsKCkK
K3sKK30KKworRmVuY2VOVk5VTEw6On5GZW5jZU5WTlVMTCgpCit7Cit9CisKK2dsOjpFcnJvciBG
ZW5jZU5WTlVMTDo6c2V0KEdMZW51bSBjb25kaXRpb24pCit7CisgICAgVU5JTVBMRU1FTlRFRCgp
OworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6
RXJyb3IgRmVuY2VOVk5VTEw6OnRlc3QoR0xib29sZWFuICpvdXRGaW5pc2hlZCkKK3sKKyAgICBV
TklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7Cit9CisKK2dsOjpFcnJvciBGZW5jZU5WTlVMTDo6ZmluaXNoKCkKK3sKKyAgICBVTklNUExF
TUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9
CisKK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRmVuY2VOVk5VTEwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9GZW5jZU5WTlVM
TC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9udWxsL0ZlbmNlTlZOVUxMLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
MSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKy8vIEZlbmNlTlZOVUxMLmg6CisvLyAgICBEZWZpbmVzIHRoZSBjbGFz
cyBpbnRlcmZhY2UgZm9yIEZlbmNlTlZOVUxMLCBpbXBsZW1lbnRpbmcgRmVuY2VOVkltcGwuCisv
LworCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX05VTExfRkVOQ0VOVk5VTExfSF8KKyNkZWZp
bmUgTElCQU5HTEVfUkVOREVSRVJfTlVMTF9GRU5DRU5WTlVMTF9IXworCisjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvRmVuY2VOVkltcGwuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNz
IEZlbmNlTlZOVUxMIDogcHVibGljIEZlbmNlTlZJbXBsCit7CisgIHB1YmxpYzoKKyAgICBGZW5j
ZU5WTlVMTCgpOworICAgIH5GZW5jZU5WTlVMTCgpIG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9y
IHNldChHTGVudW0gY29uZGl0aW9uKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgdGVzdChHTGJv
b2xlYW4gKm91dEZpbmlzaGVkKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgZmluaXNoKCkgb3Zl
cnJpZGU7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJBTkdMRV9S
RU5ERVJFUl9OVUxMX0ZFTkNFTlZOVUxMX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9GZW5jZVN5bmNOVUxMLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9G
ZW5jZVN5bmNOVUxMLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9GZW5jZVN5bmNOVUxMLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQ5IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gRmVuY2VTeW5jTlVMTC5jcHA6Cisv
LyAgICBJbXBsZW1lbnRzIHRoZSBjbGFzcyBtZXRob2RzIGZvciBGZW5jZVN5bmNOVUxMLgorLy8K
KworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL251bGwvRmVuY2VTeW5jTlVMTC5oIgorCisj
aW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK25hbWVzcGFjZSByeAoreworCitGZW5jZVN5bmNO
VUxMOjpGZW5jZVN5bmNOVUxMKCkgOiBGZW5jZVN5bmNJbXBsKCkKK3sKK30KKworRmVuY2VTeW5j
TlVMTDo6fkZlbmNlU3luY05VTEwoKQoreworfQorCitnbDo6RXJyb3IgRmVuY2VTeW5jTlVMTDo6
c2V0KEdMZW51bSBjb25kaXRpb24sIEdMYml0ZmllbGQgZmxhZ3MpCit7CisgICAgVU5JTVBMRU1F
TlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQor
CitnbDo6RXJyb3IgRmVuY2VTeW5jTlVMTDo6Y2xpZW50V2FpdChHTGJpdGZpZWxkIGZsYWdzLCBH
THVpbnQ2NCB0aW1lb3V0LCBHTGVudW0gKm91dFJlc3VsdCkKK3sKKyAgICBVTklNUExFTUVOVEVE
KCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2ds
OjpFcnJvciBGZW5jZVN5bmNOVUxMOjpzZXJ2ZXJXYWl0KEdMYml0ZmllbGQgZmxhZ3MsIEdMdWlu
dDY0IHRpbWVvdXQpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgRmVuY2VTeW5jTlVMTDo6
Z2V0U3RhdHVzKEdMaW50ICpvdXRSZXN1bHQpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCit9ICAvLyBuYW1l
c3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9udWxsL0ZlbmNlU3luY05VTEwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9GZW5jZVN5bmNOVUxMLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L251bGwvRmVuY2VTeW5jTlVMTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzIgQEAKKy8v
CisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisvLyBGZW5jZVN5bmNOVUxMLmg6CisvLyAgICBEZWZpbmVzIHRoZSBjbGFzcyBpbnRl
cmZhY2UgZm9yIEZlbmNlU3luY05VTEwsIGltcGxlbWVudGluZyBGZW5jZVN5bmNJbXBsLgorLy8K
KworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9OVUxMX0ZFTkNFU1lOQ05VTExfSF8KKyNkZWZp
bmUgTElCQU5HTEVfUkVOREVSRVJfTlVMTF9GRU5DRVNZTkNOVUxMX0hfCisKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9GZW5jZVN5bmNJbXBsLmgiCisKK25hbWVzcGFjZSByeAoreworCitj
bGFzcyBGZW5jZVN5bmNOVUxMIDogcHVibGljIEZlbmNlU3luY0ltcGwKK3sKKyAgcHVibGljOgor
ICAgIEZlbmNlU3luY05VTEwoKTsKKyAgICB+RmVuY2VTeW5jTlVMTCgpIG92ZXJyaWRlOworCisg
ICAgZ2w6OkVycm9yIHNldChHTGVudW0gY29uZGl0aW9uLCBHTGJpdGZpZWxkIGZsYWdzKSBvdmVy
cmlkZTsKKyAgICBnbDo6RXJyb3IgY2xpZW50V2FpdChHTGJpdGZpZWxkIGZsYWdzLCBHTHVpbnQ2
NCB0aW1lb3V0LCBHTGVudW0gKm91dFJlc3VsdCkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHNl
cnZlcldhaXQoR0xiaXRmaWVsZCBmbGFncywgR0x1aW50NjQgdGltZW91dCkgb3ZlcnJpZGU7Cisg
ICAgZ2w6OkVycm9yIGdldFN0YXR1cyhHTGludCAqb3V0UmVzdWx0KSBvdmVycmlkZTsKK307CisK
K30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX05VTExf
RkVOQ0VTWU5DTlVMTF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL251bGwvRnJhbWVidWZmZXJOVUxMLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9GcmFtZWJ1ZmZl
ck5VTEwuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9udWxsL0ZyYW1lYnVmZmVyTlVMTC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMzEgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBGcmFtZWJ1ZmZlck5VTEwuY3BwOgorLy8g
ICAgSW1wbGVtZW50cyB0aGUgY2xhc3MgbWV0aG9kcyBmb3IgRnJhbWVidWZmZXJOVUxMLgorLy8K
KworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL251bGwvRnJhbWVidWZmZXJOVUxMLmgiCisK
KyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK0ZyYW1lYnVm
ZmVyTlVMTDo6RnJhbWVidWZmZXJOVUxMKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZzdGF0
ZSkgOiBGcmFtZWJ1ZmZlckltcGwoc3RhdGUpCit7Cit9CisKK0ZyYW1lYnVmZmVyTlVMTDo6fkZy
YW1lYnVmZmVyTlVMTCgpCit7Cit9CisKK2dsOjpFcnJvciBGcmFtZWJ1ZmZlck5VTEw6OmRpc2Nh
cmQoc2l6ZV90IGNvdW50LCBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKQoreworICAgIFVOSU1Q
TEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
K30KKworZ2w6OkVycm9yIEZyYW1lYnVmZmVyTlVMTDo6aW52YWxpZGF0ZShzaXplX3QgY291bnQs
IGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3Ig
RnJhbWVidWZmZXJOVUxMOjppbnZhbGlkYXRlU3ViKHNpemVfdCBjb3VudCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICphdHRhY2htZW50cywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3Rh
bmdsZSAmYXJlYSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBGcmFtZWJ1ZmZlck5VTEw6
OmNsZWFyKENvbnRleHRJbXBsICpjb250ZXh0LCBHTGJpdGZpZWxkIG1hc2spCit7CisgICAgVU5J
TVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OworfQorCitnbDo6RXJyb3IgRnJhbWVidWZmZXJOVUxMOjpjbGVhckJ1ZmZlcmZ2KENvbnRleHRJ
bXBsICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBkcmF3YnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGZsb2F0ICp2YWx1ZXMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgRnJh
bWVidWZmZXJOVUxMOjpjbGVhckJ1ZmZlcnVpdihDb250ZXh0SW1wbCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBidWZmZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2
YWx1ZXMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgRnJhbWVidWZmZXJOVUxMOjpjbGVh
ckJ1ZmZlcml2KENvbnRleHRJbXBsICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWVzKQoreworICAgIFVOSU1QTEVN
RU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30K
KworZ2w6OkVycm9yIEZyYW1lYnVmZmVyTlVMTDo6Y2xlYXJCdWZmZXJmaShDb250ZXh0SW1wbCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
ZHJhd2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xm
bG9hdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgc3RlbmNpbCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK0dMZW51bSBGcmFtZWJ1ZmZlck5VTEw6Omdl
dEltcGxlbWVudGF0aW9uQ29sb3JSZWFkRm9ybWF0KCkgY29uc3QKK3sKKyAgICBVTklNUExFTUVO
VEVEKCk7CisgICAgcmV0dXJuIEdMZW51bSgpOworfQorCitHTGVudW0gRnJhbWVidWZmZXJOVUxM
OjpnZXRJbXBsZW1lbnRhdGlvbkNvbG9yUmVhZFR5cGUoKSBjb25zdAoreworICAgIFVOSU1QTEVN
RU5URUQoKTsKKyAgICByZXR1cm4gR0xlbnVtKCk7Cit9CisKK2dsOjpFcnJvciBGcmFtZWJ1ZmZl
ck5VTEw6OnJlYWRQaXhlbHMoQ29udGV4dEltcGwgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmFyZWEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHZvaWQgKnBpeGVscykgY29uc3QKK3sKKyAgICBVTklN
UExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
Cit9CisKK2dsOjpFcnJvciBGcmFtZWJ1ZmZlck5VTEw6OmJsaXQoQ29udGV4dEltcGwgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUg
JnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpS
ZWN0YW5nbGUgJmRlc3RBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJp
dGZpZWxkIG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWx0
ZXIpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOworfQorCitib29sIEZyYW1lYnVmZmVyTlVMTDo6Y2hlY2tTdGF0dXMo
KSBjb25zdAoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gYm9vbCgpOworfQor
Cit2b2lkIEZyYW1lYnVmZmVyTlVMTDo6c3luY1N0YXRlKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6
RGlydHlCaXRzICZkaXJ0eUJpdHMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCit9ICAv
LyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9udWxsL0ZyYW1lYnVmZmVyTlVMTC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0ZyYW1lYnVmZmVyTlVM
TC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9udWxsL0ZyYW1lYnVmZmVyTlVMTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNzAgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisvLyBGcmFtZWJ1ZmZlck5VTEwuaDoKKy8vICAgIERlZmluZXMg
dGhlIGNsYXNzIGludGVyZmFjZSBmb3IgRnJhbWVidWZmZXJOVUxMLCBpbXBsZW1lbnRpbmcgRnJh
bWVidWZmZXJJbXBsLgorLy8KKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9OVUxMX0ZSQU1F
QlVGRkVSTlVMTF9IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9OVUxMX0ZSQU1FQlVGRkVS
TlVMTF9IXworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvRnJhbWVidWZmZXJJbXBsLmgi
CisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBGcmFtZWJ1ZmZlck5VTEwgOiBwdWJsaWMgRnJh
bWVidWZmZXJJbXBsCit7CisgIHB1YmxpYzoKKyAgICBGcmFtZWJ1ZmZlck5VTEwoY29uc3QgZ2w6
OkZyYW1lYnVmZmVyU3RhdGUgJnN0YXRlKTsKKyAgICB+RnJhbWVidWZmZXJOVUxMKCkgb3ZlcnJp
ZGU7CisKKyAgICBnbDo6RXJyb3IgZGlzY2FyZChzaXplX3QgY291bnQsIGNvbnN0IEdMZW51bSAq
YXR0YWNobWVudHMpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBpbnZhbGlkYXRlKHNpemVfdCBj
b3VudCwgY29uc3QgR0xlbnVtICphdHRhY2htZW50cykgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9y
IGludmFsaWRhdGVTdWIoc2l6ZV90IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OlJlY3RhbmdsZSAmYXJlYSkgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJyb3IgY2xl
YXIoQ29udGV4dEltcGwgKmNvbnRleHQsIEdMYml0ZmllbGQgbWFzaykgb3ZlcnJpZGU7CisgICAg
Z2w6OkVycm9yIGNsZWFyQnVmZmVyZnYoQ29udGV4dEltcGwgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBkcmF3YnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZmxvYXQgKnZhbHVlcykgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGNsZWFyQnVmZmVydWl2
KENvbnRleHRJbXBsICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlcykgb3Zl
cnJpZGU7CisgICAgZ2w6OkVycm9yIGNsZWFyQnVmZmVyaXYoQ29udGV4dEltcGwgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZXMpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBjbGVh
ckJ1ZmZlcmZpKENvbnRleHRJbXBsICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHJh
d2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGRlcHRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHN0ZW5jaWwpIG92ZXJyaWRlOworCisgICAg
R0xlbnVtIGdldEltcGxlbWVudGF0aW9uQ29sb3JSZWFkRm9ybWF0KCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgR0xlbnVtIGdldEltcGxlbWVudGF0aW9uQ29sb3JSZWFkVHlwZSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIGdsOjpFcnJvciByZWFkUGl4ZWxzKENvbnRleHRJbXBsICpjb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmFyZWEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTHZvaWQgKnBpeGVscykg
Y29uc3Qgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJyb3IgYmxpdChDb250ZXh0SW1wbCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAor
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRlc3RBcmVhLAorICAgICAg
ICAgICAgICAgICAgIEdMYml0ZmllbGQgbWFzaywKKyAgICAgICAgICAgICAgICAgICBHTGVudW0g
ZmlsdGVyKSBvdmVycmlkZTsKKworICAgIGJvb2wgY2hlY2tTdGF0dXMoKSBjb25zdCBvdmVycmlk
ZTsKKworICAgIHZvaWQgc3luY1N0YXRlKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGlydHlCaXRz
ICZkaXJ0eUJpdHMpIG92ZXJyaWRlOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRp
ZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfTlVMTF9GUkFNRUJVRkZFUk5VTExfSF8KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0ltYWdlTlVM
TC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL251bGwvSW1hZ2VOVUxMLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9JbWFnZU5VTEwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzcgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBJbWFnZU5VTEwuY3Bw
OgorLy8gICAgSW1wbGVtZW50cyB0aGUgY2xhc3MgbWV0aG9kcyBmb3IgSW1hZ2VOVUxMLgorLy8K
KworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL251bGwvSW1hZ2VOVUxMLmgiCisKKyNpbmNs
dWRlICJjb21tb24vZGVidWcuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK0ltYWdlTlVMTDo6SW1h
Z2VOVUxMKCkgOiBJbWFnZUltcGwoKQoreworfQorCitJbWFnZU5VTEw6On5JbWFnZU5VTEwoKQor
eworfQorCitlZ2w6OkVycm9yIEltYWdlTlVMTDo6aW5pdGlhbGl6ZSgpCit7CisgICAgVU5JTVBM
RU1FTlRFRCgpOworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfQUNDRVNTKTsKK30KKwor
Z2w6OkVycm9yIEltYWdlTlVMTDo6b3JwaGFuKGVnbDo6SW1hZ2VTaWJsaW5nICpzaWJsaW5nKQor
eworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9JbWFnZU5VTEwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVs
bC9JbWFnZU5VTEwuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9JbWFnZU5VTEwuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDMwIEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gSW1hZ2VOVUxMLmg6CisvLyAgICBEZWZpbmVzIHRo
ZSBjbGFzcyBpbnRlcmZhY2UgZm9yIEltYWdlTlVMTCwgaW1wbGVtZW50aW5nIEltYWdlSW1wbC4K
Ky8vCisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfTlVMTF9JTUFHRU5VTExfSF8KKyNkZWZp
bmUgTElCQU5HTEVfUkVOREVSRVJfTlVMTF9JTUFHRU5VTExfSF8KKworI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL0ltYWdlSW1wbC5oIgorCituYW1lc3BhY2UgcngKK3sKKworY2xhc3MgSW1h
Z2VOVUxMIDogcHVibGljIEltYWdlSW1wbAoreworICBwdWJsaWM6CisgICAgSW1hZ2VOVUxMKCk7
CisgICAgfkltYWdlTlVMTCgpIG92ZXJyaWRlOworICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZSgp
IG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIG9ycGhhbihlZ2w6OkltYWdlU2libGluZyAqc2li
bGluZykgb3ZlcnJpZGU7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBM
SUJBTkdMRV9SRU5ERVJFUl9OVUxMX0lNQUdFTlVMTF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUGF0aE5VTEwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxs
L1BhdGhOVUxMLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9QYXRoTlVMTC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0MCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFBhdGhOVUxMLmNwcDoKKy8vICAgIEltcGxlbWVu
dHMgdGhlIGNsYXNzIG1ldGhvZHMgZm9yIFBhdGhOVUxMLgorLy8KKworI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL251bGwvUGF0aE5VTEwuaCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5o
IgorCituYW1lc3BhY2UgcngKK3sKKworUGF0aE5VTEw6OlBhdGhOVUxMKCkgOiBQYXRoSW1wbCgp
Cit7Cit9CisKK1BhdGhOVUxMOjp+UGF0aE5VTEwoKQoreworfQorCitnbDo6RXJyb3IgUGF0aE5V
TEw6OnNldENvbW1hbmRzKEdMc2l6ZWkgbnVtQ29tbWFuZHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgKmNvbW1hbmRzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIG51bUNvb3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGNvb3JkVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgdm9pZCAqY29vcmRzKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKwordm9pZCBQYXRoTlVMTDo6
c2V0UGF0aFBhcmFtZXRlcihHTGVudW0gcG5hbWUsIEdMZmxvYXQgdmFsdWUpCit7CisgICAgVU5J
TVBMRU1FTlRFRCgpOworfQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1BhdGhOVUxMLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251
bGwvUGF0aE5VTEwuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9QYXRoTlVMTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMzUgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBQYXRoTlVMTC5oOgorLy8gICAgRGVmaW5lcyB0aGUg
Y2xhc3MgaW50ZXJmYWNlIGZvciBQYXRoTlVMTCwgaW1wbGVtZW50aW5nIFBhdGhJbXBsLgorLy8K
KworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9OVUxMX1BBVEhOVUxMX0hfCisjZGVmaW5lIExJ
QkFOR0xFX1JFTkRFUkVSX05VTExfUEFUSE5VTExfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL1BhdGhJbXBsLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBQYXRoTlVMTCA6
IHB1YmxpYyBQYXRoSW1wbAoreworICBwdWJsaWM6CisgICAgUGF0aE5VTEwoKTsKKyAgICB+UGF0
aE5VTEwoKSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBzZXRDb21tYW5kcyhHTHNpemVpIG51
bUNvbW1hbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVieXRlICpjb21t
YW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1Db29yZHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb29yZFR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHZvaWQgKmNvb3Jkcykgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNldFBh
dGhQYXJhbWV0ZXIoR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHZhbHVlKSBvdmVycmlkZTsKK307CisK
K30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX05VTExf
UEFUSE5VTExfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9udWxsL1Byb2dyYW1OVUxMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Qcm9ncmFtTlVMTC5jcHAJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL251bGwvUHJvZ3JhbU5VTEwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjEyIEBA
CisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworLy8gUHJvZ3JhbU5VTEwuY3BwOgorLy8gICAgSW1wbGVtZW50cyB0aGUgY2xh
c3MgbWV0aG9kcyBmb3IgUHJvZ3JhbU5VTEwuCisvLworCisjaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvbnVsbC9Qcm9ncmFtTlVMTC5oIgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisK
K25hbWVzcGFjZSByeAoreworCitQcm9ncmFtTlVMTDo6UHJvZ3JhbU5VTEwoY29uc3QgZ2w6OlBy
b2dyYW1TdGF0ZSAmc3RhdGUpIDogUHJvZ3JhbUltcGwoc3RhdGUpCit7Cit9CisKK1Byb2dyYW1O
VUxMOjp+UHJvZ3JhbU5VTEwoKQoreworfQorCitMaW5rUmVzdWx0IFByb2dyYW1OVUxMOjpsb2Fk
KGdsOjpJbmZvTG9nICZpbmZvTG9nLCBnbDo6QmluYXJ5SW5wdXRTdHJlYW0gKnN0cmVhbSkKK3sK
KyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIExpbmtSZXN1bHQoZmFsc2UsIGdsOjpF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworfQorCitnbDo6RXJyb3IgUHJvZ3JhbU5VTEw6
OnNhdmUoZ2w6OkJpbmFyeU91dHB1dFN0cmVhbSAqc3RyZWFtKQoreworICAgIFVOSU1QTEVNRU5U
RUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKwor
dm9pZCBQcm9ncmFtTlVMTDo6c2V0QmluYXJ5UmV0cmlldmFibGVIaW50KGJvb2wgcmV0cmlldmFi
bGUpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCitMaW5rUmVzdWx0IFByb2dyYW1OVUxM
OjpsaW5rKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsIGdsOjpJbmZvTG9nICZpbmZvTG9n
KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gTGlua1Jlc3VsdChmYWxzZSwg
Z2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Cit9CisKK0dMYm9vbGVhbiBQcm9ncmFt
TlVMTDo6dmFsaWRhdGUoY29uc3QgZ2w6OkNhcHMgJmNhcHMsIGdsOjpJbmZvTG9nICppbmZvTG9n
KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gR0xib29sZWFuKCk7Cit9CisK
K3ZvaWQgUHJvZ3JhbU5VTEw6OnNldFVuaWZvcm0xZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkg
Y291bnQsIGNvbnN0IEdMZmxvYXQgKnYpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCit2
b2lkIFByb2dyYW1OVUxMOjpzZXRVbmlmb3JtMmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNv
dW50LCBjb25zdCBHTGZsb2F0ICp2KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwordm9p
ZCBQcm9ncmFtTlVMTDo6c2V0VW5pZm9ybTNmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3Vu
dCwgY29uc3QgR0xmbG9hdCAqdikKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQg
UHJvZ3JhbU5VTEw6OnNldFVuaWZvcm00ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQs
IGNvbnN0IEdMZmxvYXQgKnYpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCit2b2lkIFBy
b2dyYW1OVUxMOjpzZXRVbmlmb3JtMWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBj
b25zdCBHTGludCAqdikKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgUHJvZ3Jh
bU5VTEw6OnNldFVuaWZvcm0yaXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0
IEdMaW50ICp2KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwordm9pZCBQcm9ncmFtTlVM
TDo6c2V0VW5pZm9ybTNpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xp
bnQgKnYpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCit2b2lkIFByb2dyYW1OVUxMOjpz
ZXRVbmlmb3JtNGl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAq
dikKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgUHJvZ3JhbU5VTEw6OnNldFVu
aWZvcm0xdWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnYp
Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCit2b2lkIFByb2dyYW1OVUxMOjpzZXRVbmlm
b3JtMnVpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2KQor
eworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwordm9pZCBQcm9ncmFtTlVMTDo6c2V0VW5pZm9y
bTN1aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdikKK3sK
KyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgUHJvZ3JhbU5VTEw6OnNldFVuaWZvcm00
dWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnYpCit7Cisg
ICAgVU5JTVBMRU1FTlRFRCgpOworfQorCit2b2lkIFByb2dyYW1OVUxMOjpzZXRVbmlmb3JtTWF0
cml4MmZ2KEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisK
K3ZvaWQgUHJvZ3JhbU5VTEw6OnNldFVuaWZvcm1NYXRyaXgzZnYoR0xpbnQgbG9jYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVl
KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwordm9pZCBQcm9ncmFtTlVMTDo6c2V0VW5p
Zm9ybU1hdHJpeDRmdihHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit7CisgICAgVU5JTVBMRU1FTlRFRCgp
OworfQorCit2b2lkIFByb2dyYW1OVUxMOjpzZXRVbmlmb3JtTWF0cml4MngzZnYoR0xpbnQgbG9j
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBj
b3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
dHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZmxvYXQgKnZhbHVlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwordm9pZCBQcm9n
cmFtTlVMTDo6c2V0VW5pZm9ybU1hdHJpeDN4MmZ2KEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkK
K3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgUHJvZ3JhbU5VTEw6OnNldFVuaWZv
cm1NYXRyaXgyeDRmdihHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit7CisgICAgVU5JTVBMRU1F
TlRFRCgpOworfQorCit2b2lkIFByb2dyYW1OVUxMOjpzZXRVbmlmb3JtTWF0cml4NHgyZnYoR0xp
bnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJv
b2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKnZhbHVlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwordm9p
ZCBQcm9ncmFtTlVMTDo6c2V0VW5pZm9ybU1hdHJpeDN4NGZ2KEdMaW50IGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2
YWx1ZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgUHJvZ3JhbU5VTEw6OnNl
dFVuaWZvcm1NYXRyaXg0eDNmdihHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit7CisgICAgVU5J
TVBMRU1FTlRFRCgpOworfQorCit2b2lkIFByb2dyYW1OVUxMOjpzZXRVbmlmb3JtQmxvY2tCaW5k
aW5nKEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcp
Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCitib29sIFByb2dyYW1OVUxMOjpnZXRVbmlm
b3JtQmxvY2tTaXplKGNvbnN0IHN0ZDo6c3RyaW5nICZibG9ja05hbWUsIHNpemVfdCAqc2l6ZU91
dCkgY29uc3QKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGJvb2woKTsKK30K
KworYm9vbCBQcm9ncmFtTlVMTDo6Z2V0VW5pZm9ybUJsb2NrTWVtYmVySW5mbyhjb25zdCBzdGQ6
OnN0cmluZyAmbWVtYmVyVW5pZm9ybU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNoOjpCbG9ja01lbWJlckluZm8gKm1lbWJlckluZm9PdXQpIGNvbnN0
Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBib29sKCk7Cit9CisKK3ZvaWQg
UHJvZ3JhbU5VTEw6OnNldFBhdGhGcmFnbWVudElucHV0R2VuKGNvbnN0IHN0ZDo6c3RyaW5nICZp
bnB1dE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZ2VuTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGNvbXBvbmVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGZsb2F0ICpjb2VmZnMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCit9
ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9udWxsL1Byb2dyYW1OVUxMLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUHJvZ3JhbU5VTEwuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvbnVsbC9Qcm9ncmFtTlVMTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAxIEBA
CisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworLy8gUHJvZ3JhbU5VTEwuaDoKKy8vICAgIERlZmluZXMgdGhlIGNsYXNzIGlu
dGVyZmFjZSBmb3IgUHJvZ3JhbU5VTEwsIGltcGxlbWVudGluZyBQcm9ncmFtSW1wbC4KKy8vCisK
KyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfTlVMTF9QUk9HUkFNTlVMTF9IXworI2RlZmluZSBM
SUJBTkdMRV9SRU5ERVJFUl9OVUxMX1BST0dSQU1OVUxMX0hfCisKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9Qcm9ncmFtSW1wbC5oIgorCituYW1lc3BhY2UgcngKK3sKKworY2xhc3MgUHJv
Z3JhbU5VTEwgOiBwdWJsaWMgUHJvZ3JhbUltcGwKK3sKKyAgcHVibGljOgorICAgIFByb2dyYW1O
VUxMKGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJnN0YXRlKTsKKyAgICB+UHJvZ3JhbU5VTEwoKSBv
dmVycmlkZTsKKworICAgIExpbmtSZXN1bHQgbG9hZChnbDo6SW5mb0xvZyAmaW5mb0xvZywgZ2w6
OkJpbmFyeUlucHV0U3RyZWFtICpzdHJlYW0pIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBzYXZl
KGdsOjpCaW5hcnlPdXRwdXRTdHJlYW0gKnN0cmVhbSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRC
aW5hcnlSZXRyaWV2YWJsZUhpbnQoYm9vbCByZXRyaWV2YWJsZSkgb3ZlcnJpZGU7CisKKyAgICBM
aW5rUmVzdWx0IGxpbmsoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwgZ2w6OkluZm9Mb2cg
JmluZm9Mb2cpIG92ZXJyaWRlOworICAgIEdMYm9vbGVhbiB2YWxpZGF0ZShjb25zdCBnbDo6Q2Fw
cyAmY2FwcywgZ2w6OkluZm9Mb2cgKmluZm9Mb2cpIG92ZXJyaWRlOworCisgICAgdm9pZCBzZXRV
bmlmb3JtMWZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2
KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFVuaWZvcm0yZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6
ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VW5pZm9y
bTNmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZXRVbmlmb3JtNGZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNv
dW50LCBjb25zdCBHTGZsb2F0ICp2KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFVuaWZvcm0xaXYo
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KSBvdmVycmlkZTsK
KyAgICB2b2lkIHNldFVuaWZvcm0yaXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNv
bnN0IEdMaW50ICp2KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFVuaWZvcm0zaXYoR0xpbnQgbG9j
YXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KSBvdmVycmlkZTsKKyAgICB2b2lk
IHNldFVuaWZvcm00aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50
ICp2KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFVuaWZvcm0xdWl2KEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VW5p
Zm9ybTJ1aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdikg
b3ZlcnJpZGU7CisgICAgdm9pZCBzZXRVbmlmb3JtM3VpdihHTGludCBsb2NhdGlvbiwgR0xzaXpl
aSBjb3VudCwgY29uc3QgR0x1aW50ICp2KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFVuaWZvcm00
dWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnYpIG92ZXJy
aWRlOworICAgIHZvaWQgc2V0VW5pZm9ybU1hdHJpeDJmdihHTGludCBsb2NhdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VW5pZm9y
bU1hdHJpeDNmdihHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRy
YW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFs
dWUpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VW5pZm9ybU1hdHJpeDRmdihHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpIG92ZXJyaWRlOworICAgIHZvaWQg
c2V0VW5pZm9ybU1hdHJpeDJ4M2Z2KEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp2YWx1ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRVbmlmb3JtTWF0cml4
M3gyZnYoR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJh
bnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZh
bHVlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFVuaWZvcm1NYXRyaXgyeDRmdihHTGludCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc2V0VW5pZm9ybU1hdHJpeDR4MmZ2KEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRVbmlm
b3JtTWF0cml4M3g0ZnYoR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJv
b2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnZhbHVlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFVuaWZvcm1NYXRyaXg0eDNmdihH
TGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpIG92
ZXJyaWRlOworCisgICAgLy8gVE9ETzogc3luY2hyb25pemUgaW4gc3luY1N0YXRlIHdoZW4gZGly
dHkgYml0cyBleGlzdC4KKyAgICB2b2lkIHNldFVuaWZvcm1CbG9ja0JpbmRpbmcoR0x1aW50IHVu
aWZvcm1CbG9ja0luZGV4LCBHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykgb3ZlcnJpZGU7CisK
KyAgICAvLyBNYXkgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYSBzdWNjZXNzZnVsIGxpbmsgb3BlcmF0
aW9uLgorICAgIC8vIFJldHVybiBmYWxzZSBmb3IgaW5hY3RpdmUgYmxvY2tzLgorICAgIGJvb2wg
Z2V0VW5pZm9ybUJsb2NrU2l6ZShjb25zdCBzdGQ6OnN0cmluZyAmYmxvY2tOYW1lLCBzaXplX3Qg
KnNpemVPdXQpIGNvbnN0IG92ZXJyaWRlOworCisgICAgLy8gTWF5IG9ubHkgYmUgY2FsbGVkIGFm
dGVyIGEgc3VjY2Vzc2Z1bCBsaW5rIG9wZXJhdGlvbi4KKyAgICAvLyBSZXR1cm5zIGZhbHNlIGZv
ciBpbmFjdGl2ZSBtZW1iZXJzLgorICAgIGJvb2wgZ2V0VW5pZm9ybUJsb2NrTWVtYmVySW5mbyhj
b25zdCBzdGQ6OnN0cmluZyAmbWVtYmVyVW5pZm9ybU5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNoOjpCbG9ja01lbWJlckluZm8gKm1lbWJlckluZm9PdXQpIGNvbnN0
IG92ZXJyaWRlOworICAgIC8vIENIUk9NSVVNX3BhdGhfcmVuZGVyaW5nCisgICAgLy8gU2V0IHBh
cmFtZXRlcnMgdG8gY29udHJvbCBmcmFnbWVudCBzaGFkZXIgaW5wdXQgdmFyaWFibGUgaW50ZXJw
b2xhdGlvbgorICAgIHZvaWQgc2V0UGF0aEZyYWdtZW50SW5wdXRHZW4oY29uc3Qgc3RkOjpzdHJp
bmcgJmlucHV0TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBn
ZW5Nb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY29tcG9uZW50
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKmNvZWZm
cykgb3ZlcnJpZGU7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJB
TkdMRV9SRU5ERVJFUl9OVUxMX1BST0dSQU1OVUxMX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9RdWVyeU5VTEwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxs
L1F1ZXJ5TlVMTC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUXVlcnlOVUxMLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDczIEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gUXVlcnlOVUxMLmNwcDoKKy8vICAgIEltcGxl
bWVudHMgdGhlIGNsYXNzIG1ldGhvZHMgZm9yIFF1ZXJ5TlVMTC4KKy8vCisKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9udWxsL1F1ZXJ5TlVMTC5oIgorCisjaW5jbHVkZSAiY29tbW9uL2Rl
YnVnLmgiCisKK25hbWVzcGFjZSByeAoreworCitRdWVyeU5VTEw6OlF1ZXJ5TlVMTChHTGVudW0g
dHlwZSkgOiBRdWVyeUltcGwodHlwZSkKK3sKK30KKworUXVlcnlOVUxMOjp+UXVlcnlOVUxMKCkK
K3sKK30KKworZ2w6OkVycm9yIFF1ZXJ5TlVMTDo6YmVnaW4oKQoreworICAgIFVOSU1QTEVNRU5U
RUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKwor
Z2w6OkVycm9yIFF1ZXJ5TlVMTDo6ZW5kKCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBR
dWVyeU5VTEw6OnF1ZXJ5Q291bnRlcigpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgUXVl
cnlOVUxMOjpnZXRSZXN1bHQoR0xpbnQgKnBhcmFtcykKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7
CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpF
cnJvciBRdWVyeU5VTEw6OmdldFJlc3VsdChHTHVpbnQgKnBhcmFtcykKK3sKKyAgICBVTklNUExF
TUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9
CisKK2dsOjpFcnJvciBRdWVyeU5VTEw6OmdldFJlc3VsdChHTGludDY0ICpwYXJhbXMpCit7Cisg
ICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOworfQorCitnbDo6RXJyb3IgUXVlcnlOVUxMOjpnZXRSZXN1bHQoR0x1aW50NjQgKnBh
cmFtcykKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBRdWVyeU5VTEw6OmlzUmVzdWx0QXZh
aWxhYmxlKGJvb2wgKmF2YWlsYWJsZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L251bGwvUXVlcnlOVUxMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUXVlcnlOVUxMLmgJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUXVlcnlO
VUxMLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBAQAorLy8KKy8vIENvcHlyaWdodCAy
MDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFF1ZXJ5
TlVMTC5oOgorLy8gICAgRGVmaW5lcyB0aGUgY2xhc3MgaW50ZXJmYWNlIGZvciBRdWVyeU5VTEws
IGltcGxlbWVudGluZyBRdWVyeUltcGwuCisvLworCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVS
X05VTExfUVVFUllOVUxMX0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX05VTExfUVVFUllO
VUxMX0hfCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9RdWVyeUltcGwuaCIKKworbmFt
ZXNwYWNlIHJ4Cit7CisKK2NsYXNzIFF1ZXJ5TlVMTCA6IHB1YmxpYyBRdWVyeUltcGwKK3sKKyAg
cHVibGljOgorICAgIFF1ZXJ5TlVMTChHTGVudW0gdHlwZSk7CisgICAgflF1ZXJ5TlVMTCgpIG92
ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIGJlZ2luKCkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9y
IGVuZCgpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBxdWVyeUNvdW50ZXIoKSBvdmVycmlkZTsK
KyAgICBnbDo6RXJyb3IgZ2V0UmVzdWx0KEdMaW50ICpwYXJhbXMpIG92ZXJyaWRlOworICAgIGds
OjpFcnJvciBnZXRSZXN1bHQoR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOworICAgIGdsOjpFcnJv
ciBnZXRSZXN1bHQoR0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgZ2V0
UmVzdWx0KEdMdWludDY0ICpwYXJhbXMpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBpc1Jlc3Vs
dEF2YWlsYWJsZShib29sICphdmFpbGFibGUpIG92ZXJyaWRlOworfTsKKworfSAgLy8gbmFtZXNw
YWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfTlVMTF9RVUVSWU5VTExfSF8K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxs
L1JlbmRlcmJ1ZmZlck5VTEwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1JlbmRlcmJ1ZmZlck5VTEwuY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9udWxsL1JlbmRlcmJ1ZmZlck5VTEwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYg
QEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisvLyBSZW5kZXJidWZmZXJOVUxMLmNwcDoKKy8vICAgIEltcGxlbWVudHMg
dGhlIGNsYXNzIG1ldGhvZHMgZm9yIFJlbmRlcmJ1ZmZlck5VTEwuCisvLworCisjaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvbnVsbC9SZW5kZXJidWZmZXJOVUxMLmgiCisKKyNpbmNsdWRlICJj
b21tb24vZGVidWcuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK1JlbmRlcmJ1ZmZlck5VTEw6OlJl
bmRlcmJ1ZmZlck5VTEwoKSA6IFJlbmRlcmJ1ZmZlckltcGwoKQoreworfQorCitSZW5kZXJidWZm
ZXJOVUxMOjp+UmVuZGVyYnVmZmVyTlVMTCgpCit7Cit9CisKK2dsOjpFcnJvciBSZW5kZXJidWZm
ZXJOVUxMOjpzZXRTdG9yYWdlKEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgc2l6ZV90IHdpZHRoLCBz
aXplX3QgaGVpZ2h0KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIFJlbmRlcmJ1ZmZlck5V
TEw6OnNldFN0b3JhZ2VNdWx0aXNhbXBsZShzaXplX3Qgc2FtcGxlcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBoZWlnaHQpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgUmVuZGVyYnVm
ZmVyTlVMTDo6c2V0U3RvcmFnZUVHTEltYWdlVGFyZ2V0KGVnbDo6SW1hZ2UgKmltYWdlKQorewor
ICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9SZW5kZXJidWZmZXJOVUxMLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L251bGwvUmVuZGVyYnVmZmVyTlVMTC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1JlbmRlcmJ1ZmZlck5VTEwuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gUmVuZGVyYnVmZmVy
TlVMTC5oOgorLy8gICAgRGVmaW5lcyB0aGUgY2xhc3MgaW50ZXJmYWNlIGZvciBSZW5kZXJidWZm
ZXJOVUxMLCBpbXBsZW1lbnRpbmcgUmVuZGVyYnVmZmVySW1wbC4KKy8vCisKKyNpZm5kZWYgTElC
QU5HTEVfUkVOREVSRVJfTlVMTF9SRU5ERVJCVUZGRVJOVUxMX0hfCisjZGVmaW5lIExJQkFOR0xF
X1JFTkRFUkVSX05VTExfUkVOREVSQlVGRkVSTlVMTF9IXworCisjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvUmVuZGVyYnVmZmVySW1wbC5oIgorCituYW1lc3BhY2UgcngKK3sKKworY2xhc3Mg
UmVuZGVyYnVmZmVyTlVMTCA6IHB1YmxpYyBSZW5kZXJidWZmZXJJbXBsCit7CisgIHB1YmxpYzoK
KyAgICBSZW5kZXJidWZmZXJOVUxMKCk7CisgICAgflJlbmRlcmJ1ZmZlck5VTEwoKSBvdmVycmlk
ZTsKKworICAgIGdsOjpFcnJvciBzZXRTdG9yYWdlKEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgc2l6
ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3Igc2V0U3Rv
cmFnZU11bHRpc2FtcGxlKHNpemVfdCBzYW1wbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGhlaWdodCkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHNldFN0b3Jh
Z2VFR0xJbWFnZVRhcmdldChlZ2w6OkltYWdlICppbWFnZSkgb3ZlcnJpZGU7Cit9OworCit9ICAv
LyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9OVUxMX1JFTkRF
UkJVRkZFUk5VTExfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9udWxsL1NhbXBsZXJOVUxMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9TYW1wbGVyTlVMTC5jcHAJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL251bGwvU2FtcGxlck5VTEwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjUg
QEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisvLyBTYW1wbGVyTlVMTC5jcHA6CisvLyAgICBJbXBsZW1lbnRzIHRoZSBj
bGFzcyBtZXRob2RzIGZvciBTYW1wbGVyTlVMTC4KKy8vCisKKyNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9udWxsL1NhbXBsZXJOVUxMLmgiCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIK
KworbmFtZXNwYWNlIHJ4Cit7CisKK1NhbXBsZXJOVUxMOjpTYW1wbGVyTlVMTCgpIDogU2FtcGxl
ckltcGwoKQoreworfQorCitTYW1wbGVyTlVMTDo6flNhbXBsZXJOVUxMKCkKK3sKK30KKworfSAg
Ly8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvbnVsbC9TYW1wbGVyTlVMTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1NhbXBsZXJOVUxMLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL251bGwvU2FtcGxlck5VTEwuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI3IEBACisv
LworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworLy8gU2FtcGxlck5VTEwuaDoKKy8vICAgIERlZmluZXMgdGhlIGNsYXNzIGludGVy
ZmFjZSBmb3IgU2FtcGxlck5VTEwsIGltcGxlbWVudGluZyBTYW1wbGVySW1wbC4KKy8vCisKKyNp
Zm5kZWYgTElCQU5HTEVfUkVOREVSRVJfTlVMTF9TQU1QTEVSTlVMTF9IXworI2RlZmluZSBMSUJB
TkdMRV9SRU5ERVJFUl9OVUxMX1NBTVBMRVJOVUxMX0hfCisKKyNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9TYW1wbGVySW1wbC5oIgorCituYW1lc3BhY2UgcngKK3sKKworY2xhc3MgU2FtcGxl
ck5VTEwgOiBwdWJsaWMgU2FtcGxlckltcGwKK3sKKyAgcHVibGljOgorICAgIFNhbXBsZXJOVUxM
KCk7CisgICAgflNhbXBsZXJOVUxMKCkgb3ZlcnJpZGU7Cit9OworCit9ICAvLyBuYW1lc3BhY2Ug
cngKKworI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9OVUxMX1NBTVBMRVJOVUxMX0hfCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9T
aGFkZXJOVUxMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvbnVsbC9TaGFkZXJOVUxMLmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9TaGFkZXJO
VUxMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACisvLworLy8gQ29weXJpZ2h0
IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gU2hh
ZGVyTlVMTC5jcHA6CisvLyAgICBJbXBsZW1lbnRzIHRoZSBjbGFzcyBtZXRob2RzIGZvciBTaGFk
ZXJOVUxMLgorLy8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL251bGwvU2hhZGVyTlVM
TC5oIgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK25hbWVzcGFjZSByeAoreworCitT
aGFkZXJOVUxMOjpTaGFkZXJOVUxMKGNvbnN0IGdsOjpTaGFkZXJTdGF0ZSAmZGF0YSkgOiBTaGFk
ZXJJbXBsKGRhdGEpCit7Cit9CisKK1NoYWRlck5VTEw6On5TaGFkZXJOVUxMKCkKK3sKK30KKwor
U2hDb21waWxlT3B0aW9ucyBTaGFkZXJOVUxMOjpwcmVwYXJlU291cmNlQW5kUmV0dXJuT3B0aW9u
cyhzdGQ6OnN0cmluZ3N0cmVhbSAqc291cmNlU3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyAqc291cmNl
UGF0aCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIFNoQ29tcGlsZU9wdGlv
bnMoKTsKK30KKworYm9vbCBTaGFkZXJOVUxMOjpwb3N0VHJhbnNsYXRlQ29tcGlsZShnbDo6Q29t
cGlsZXIgKmNvbXBpbGVyLCBzdGQ6OnN0cmluZyAqaW5mb0xvZykKK3sKKyAgICBVTklNUExFTUVO
VEVEKCk7CisgICAgcmV0dXJuIGJvb2woKTsKK30KKworc3RkOjpzdHJpbmcgU2hhZGVyTlVMTDo6
Z2V0RGVidWdJbmZvKCkgY29uc3QKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJu
IHN0ZDo6c3RyaW5nKCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvU2hhZGVyTlVMTC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9udWxsL1NoYWRlck5VTEwuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9TaGFkZXJOVUxMLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwzNSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFNoYWRlck5VTEwuaDoKKy8vICAgIERl
ZmluZXMgdGhlIGNsYXNzIGludGVyZmFjZSBmb3IgU2hhZGVyTlVMTCwgaW1wbGVtZW50aW5nIFNo
YWRlckltcGwuCisvLworCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX05VTExfU0hBREVSTlVM
TF9IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9OVUxMX1NIQURFUk5VTExfSF8KKworI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1NoYWRlckltcGwuaCIKKworbmFtZXNwYWNlIHJ4Cit7
CisKK2NsYXNzIFNoYWRlck5VTEwgOiBwdWJsaWMgU2hhZGVySW1wbAoreworICBwdWJsaWM6Cisg
ICAgU2hhZGVyTlVMTChjb25zdCBnbDo6U2hhZGVyU3RhdGUgJmRhdGEpOworICAgIH5TaGFkZXJO
VUxMKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBSZXR1cm5zIGFkZGl0aW9uYWwgU2hDb21waWxlIG9w
dGlvbnMuCisgICAgU2hDb21waWxlT3B0aW9ucyBwcmVwYXJlU291cmNlQW5kUmV0dXJuT3B0aW9u
cyhzdGQ6OnN0cmluZ3N0cmVhbSAqc291cmNlU3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgKnNvdXJjZVBhdGgpIG92
ZXJyaWRlOworICAgIC8vIFJldHVybnMgc3VjY2VzcyBmb3IgY29tcGlsaW5nIG9uIHRoZSBkcml2
ZXIuIFJldHVybnMgc3VjY2Vzcy4KKyAgICBib29sIHBvc3RUcmFuc2xhdGVDb21waWxlKGdsOjpD
b21waWxlciAqY29tcGlsZXIsIHN0ZDo6c3RyaW5nICppbmZvTG9nKSBvdmVycmlkZTsKKworICAg
IHN0ZDo6c3RyaW5nIGdldERlYnVnSW5mbygpIGNvbnN0IG92ZXJyaWRlOworfTsKKworfSAgLy8g
bmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfTlVMTF9TSEFERVJO
VUxMX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvbnVsbC9TdXJmYWNlTlVMTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvU3VyZmFjZU5VTEwuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9u
dWxsL1N1cmZhY2VOVUxMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwMyBAQAorLy8K
Ky8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKy8vIFN1cmZhY2VOVUxMLmNwcDoKKy8vICAgIEltcGxlbWVudHMgdGhlIGNsYXNzIG1l
dGhvZHMgZm9yIFN1cmZhY2VOVUxMLgorLy8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L251bGwvU3VyZmFjZU5VTEwuaCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCituYW1l
c3BhY2UgcngKK3sKKworU3VyZmFjZU5VTEw6OlN1cmZhY2VOVUxMKGNvbnN0IGVnbDo6U3VyZmFj
ZVN0YXRlICZzdXJmYWNlU3RhdGUpIDogU3VyZmFjZUltcGwoc3VyZmFjZVN0YXRlKQoreworfQor
CitTdXJmYWNlTlVMTDo6flN1cmZhY2VOVUxMKCkKK3sKK30KKworZWdsOjpFcnJvciBTdXJmYWNl
TlVMTDo6aW5pdGlhbGl6ZSgpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBl
Z2w6OkVycm9yKEVHTF9CQURfQUNDRVNTKTsKK30KKworRnJhbWVidWZmZXJJbXBsICpTdXJmYWNl
TlVMTDo6Y3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRl
ICZzdGF0ZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEZyYW1lYnVmZmVySW1wbCAqPigwKTsKK30KKworZWdsOjpFcnJvciBTdXJmYWNlTlVMTDo6c3dh
cCgpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9C
QURfQUNDRVNTKTsKK30KKworZWdsOjpFcnJvciBTdXJmYWNlTlVMTDo6cG9zdFN1YkJ1ZmZlcihF
R0xpbnQgeCwgRUdMaW50IHksIEVHTGludCB3aWR0aCwgRUdMaW50IGhlaWdodCkKK3sKKyAgICBV
TklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BQ0NFU1MpOwor
fQorCitlZ2w6OkVycm9yIFN1cmZhY2VOVUxMOjpxdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUoRUdM
aW50IGF0dHJpYnV0ZSwgdm9pZCAqKnZhbHVlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FDQ0VTUyk7Cit9CisKK2VnbDo6RXJyb3IgU3Vy
ZmFjZU5VTEw6OmJpbmRUZXhJbWFnZShnbDo6VGV4dHVyZSAqdGV4dHVyZSwgRUdMaW50IGJ1ZmZl
cikKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JB
RF9BQ0NFU1MpOworfQorCitlZ2w6OkVycm9yIFN1cmZhY2VOVUxMOjpyZWxlYXNlVGV4SW1hZ2Uo
RUdMaW50IGJ1ZmZlcikKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGVnbDo6
RXJyb3IoRUdMX0JBRF9BQ0NFU1MpOworfQorCit2b2lkIFN1cmZhY2VOVUxMOjpzZXRTd2FwSW50
ZXJ2YWwoRUdMaW50IGludGVydmFsKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKworRUdM
aW50IFN1cmZhY2VOVUxMOjpnZXRXaWR0aCgpIGNvbnN0Cit7CisgICAgVU5JTVBMRU1FTlRFRCgp
OworICAgIHJldHVybiBFR0xpbnQoKTsKK30KKworRUdMaW50IFN1cmZhY2VOVUxMOjpnZXRIZWln
aHQoKSBjb25zdAoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gRUdMaW50KCk7
Cit9CisKK0VHTGludCBTdXJmYWNlTlVMTDo6aXNQb3N0U3ViQnVmZmVyU3VwcG9ydGVkKCkgY29u
c3QKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIEVHTGludCgpOworfQorCitF
R0xpbnQgU3VyZmFjZU5VTEw6OmdldFN3YXBCZWhhdmlvcigpIGNvbnN0Cit7CisgICAgVU5JTVBM
RU1FTlRFRCgpOworICAgIHJldHVybiBFR0xpbnQoKTsKK30KKworZ2w6OkVycm9yIFN1cmZhY2VO
VUxMOjpnZXRBdHRhY2htZW50UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFj
aG1lbnQ6OlRhcmdldCAmdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZyYW1lYnVmZmVyQXR0YWNobWVudFJlbmRlclRhcmdldCAqKnJ0T3V0
KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9TdXJmYWNlTlVMTC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9udWxsL1N1cmZhY2VOVUxMLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvU3VyZmFjZU5VTEwuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQ2IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gU3VyZmFjZU5VTEwuaDoKKy8vICAg
IERlZmluZXMgdGhlIGNsYXNzIGludGVyZmFjZSBmb3IgU3VyZmFjZU5VTEwsIGltcGxlbWVudGlu
ZyBTdXJmYWNlSW1wbC4KKy8vCisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfTlVMTF9TVVJG
QUNFTlVMTF9IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9OVUxMX1NVUkZBQ0VOVUxMX0hf
CisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9TdXJmYWNlSW1wbC5oIgorCituYW1lc3Bh
Y2UgcngKK3sKKworY2xhc3MgU3VyZmFjZU5VTEwgOiBwdWJsaWMgU3VyZmFjZUltcGwKK3sKKyAg
cHVibGljOgorICAgIFN1cmZhY2VOVUxMKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdXJmYWNl
U3RhdGUpOworICAgIH5TdXJmYWNlTlVMTCgpIG92ZXJyaWRlOworCisgICAgZWdsOjpFcnJvciBp
bml0aWFsaXplKCkgb3ZlcnJpZGU7CisgICAgRnJhbWVidWZmZXJJbXBsICpjcmVhdGVEZWZhdWx0
RnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJnN0YXRlKSBvdmVycmlkZTsK
KyAgICBlZ2w6OkVycm9yIHN3YXAoKSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIHBvc3RTdWJC
dWZmZXIoRUdMaW50IHgsIEVHTGludCB5LCBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpIG92
ZXJyaWRlOworICAgIGVnbDo6RXJyb3IgcXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFKEVHTGludCBh
dHRyaWJ1dGUsIHZvaWQgKip2YWx1ZSkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBiaW5kVGV4
SW1hZ2UoZ2w6OlRleHR1cmUgKnRleHR1cmUsIEVHTGludCBidWZmZXIpIG92ZXJyaWRlOworICAg
IGVnbDo6RXJyb3IgcmVsZWFzZVRleEltYWdlKEVHTGludCBidWZmZXIpIG92ZXJyaWRlOworICAg
IHZvaWQgc2V0U3dhcEludGVydmFsKEVHTGludCBpbnRlcnZhbCkgb3ZlcnJpZGU7CisKKyAgICAv
LyB3aWR0aCBhbmQgaGVpZ2h0IGNhbiBjaGFuZ2Ugd2l0aCBjbGllbnQgd2luZG93IHJlc2l6aW5n
CisgICAgRUdMaW50IGdldFdpZHRoKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRUdMaW50IGdldEhl
aWdodCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgRUdMaW50IGlzUG9zdFN1YkJ1ZmZlclN1cHBv
cnRlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEVHTGludCBnZXRTd2FwQmVoYXZpb3IoKSBjb25z
dCBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBnZXRBdHRhY2htZW50UmVuZGVyVGFyZ2V0KGNv
bnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OlRhcmdldCAmdGFyZ2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lYnVmZmVyQXR0YWNobWVudFJlbmRl
clRhcmdldCAqKnJ0T3V0KSBvdmVycmlkZTsKK307CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisj
ZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX05VTExfU1VSRkFDRU5VTExfSF8KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1RleHR1cmVO
VUxMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvbnVsbC9UZXh0dXJlTlVMTC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvVGV4dHVyZU5VTEwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQzIEBACisvLworLy8gQ29weXJpZ2h0IDIw
MTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gVGV4dHVy
ZU5VTEwuY3BwOgorLy8gICAgSW1wbGVtZW50cyB0aGUgY2xhc3MgbWV0aG9kcyBmb3IgVGV4dHVy
ZU5VTEwuCisvLworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbnVsbC9UZXh0dXJlTlVM
TC5oIgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK25hbWVzcGFjZSByeAoreworCitU
ZXh0dXJlTlVMTDo6VGV4dHVyZU5VTEwoY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmc3RhdGUpIDog
VGV4dHVyZUltcGwoc3RhdGUpCit7Cit9CisKK1RleHR1cmVOVUxMOjp+VGV4dHVyZU5VTEwoKQor
eworfQorCitnbDo6RXJyb3IgVGV4dHVyZU5VTEw6OnNldEltYWdlKEdMZW51bSB0YXJnZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykKK3sKKyAgICBVTklNUExFTUVOVEVE
KCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2ds
OjpFcnJvciBUZXh0dXJlTlVMTDo6c2V0U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZhcmVhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKQoreworICAgIFVOSU1Q
TEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
K30KKworZ2w6OkVycm9yIFRleHR1cmVOVUxMOjpzZXRDb21wcmVzc2VkSW1hZ2UoR0xlbnVtIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBs
ZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBp
bnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZVNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhl
bHMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgVGV4dHVyZU5VTEw6OnNldENvbXByZXNz
ZWRTdWJJbWFnZShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmYXJlYSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0
ZSAmdW5wYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGltYWdlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cisg
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpFcnJv
ciBUZXh0dXJlTlVMTDo6Y29weUltYWdlKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2UpCit7CisgICAg
VU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOworfQorCitnbDo6RXJyb3IgVGV4dHVyZU5VTEw6OmNvcHlTdWJJbWFnZShHTGVudW0gdGFy
Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVz
dE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpS
ZWN0YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7
CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpF
cnJvciBUZXh0dXJlTlVMTDo6c2V0U3RvcmFnZShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplKQoreworICAgIFVOSU1QTEVN
RU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30K
KworZ2w6OkVycm9yIFRleHR1cmVOVUxMOjpzZXRFR0xJbWFnZVRhcmdldChHTGVudW0gdGFyZ2V0
LCBlZ2w6OkltYWdlICppbWFnZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBUZXh0dXJl
TlVMTDo6c2V0SW1hZ2VFeHRlcm5hbChHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3RyZWFtICpzdHJlYW0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpTdHJlYW06OkdMVGV4dHVyZURl
c2NyaXB0aW9uICZkZXNjKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIFRleHR1cmVOVUxM
OjpnZW5lcmF0ZU1pcG1hcCgpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCit2b2lkIFRleHR1cmVOVUxMOjpz
ZXRCYXNlTGV2ZWwoR0x1aW50IGJhc2VMZXZlbCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9
CisKK3ZvaWQgVGV4dHVyZU5VTEw6OmJpbmRUZXhJbWFnZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2Up
Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCit2b2lkIFRleHR1cmVOVUxMOjpyZWxlYXNl
VGV4SW1hZ2UoKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwordm9pZCBUZXh0dXJlTlVM
TDo6c3luY1N0YXRlKGNvbnN0IGdsOjpUZXh0dXJlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykKK3sK
KyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvVGV4dHVyZU5V
TEwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvbnVsbC9UZXh0dXJlTlVMTC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1RleHR1cmVOVUxMLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw4OSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFRleHR1cmVOVUxMLmg6
CisvLyAgICBEZWZpbmVzIHRoZSBjbGFzcyBpbnRlcmZhY2UgZm9yIFRleHR1cmVOVUxMLCBpbXBs
ZW1lbnRpbmcgVGV4dHVyZUltcGwuCisvLworCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX05V
TExfVEVYVFVSRU5VTExfSF8KKyNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfTlVMTF9URVhUVVJF
TlVMTF9IXworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvVGV4dHVyZUltcGwuaCIKKwor
bmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIFRleHR1cmVOVUxMIDogcHVibGljIFRleHR1cmVJbXBs
Cit7CisgIHB1YmxpYzoKKyAgICBUZXh0dXJlTlVMTChjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZz
dGF0ZSk7CisgICAgflRleHR1cmVOVUxMKCkgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJyb3Igc2V0
SW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVs
LAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLAorICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVu
cGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVy
cmlkZTsKKyAgICBnbDo6RXJyb3Igc2V0U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6Qm94ICZhcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
Zm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsK
KworICAgIGdsOjpFcnJvciBzZXRDb21wcmVzc2VkSW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZVNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJy
aWRlOworICAgIGdsOjpFcnJvciBzZXRDb21wcmVzc2VkU3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmFyZWEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVu
cGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZVNp
emUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpw
aXhlbHMpIG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIGNvcHlJbWFnZShHTGVudW0gdGFyZ2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3Ig
Y29weVN1YkltYWdlKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0
ICZkZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3Rh
bmdsZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpG
cmFtZWJ1ZmZlciAqc291cmNlKSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBzZXRTdG9yYWdl
KEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVscywK
KyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUpIG92ZXJyaWRlOworCisg
ICAgZ2w6OkVycm9yIHNldEVHTEltYWdlVGFyZ2V0KEdMZW51bSB0YXJnZXQsIGVnbDo6SW1hZ2Ug
KmltYWdlKSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBzZXRJbWFnZUV4dGVybmFsKEdMZW51
bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpTdHJlYW0gKnN0
cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OlN0cmVhbTo6
R0xUZXh0dXJlRGVzY3JpcHRpb24gJmRlc2MpIG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIGdl
bmVyYXRlTWlwbWFwKCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNldEJhc2VMZXZlbChHTHVpbnQg
YmFzZUxldmVsKSBvdmVycmlkZTsKKworICAgIHZvaWQgYmluZFRleEltYWdlKGVnbDo6U3VyZmFj
ZSAqc3VyZmFjZSkgb3ZlcnJpZGU7CisgICAgdm9pZCByZWxlYXNlVGV4SW1hZ2UoKSBvdmVycmlk
ZTsKKworICAgIHZvaWQgc3luY1N0YXRlKGNvbnN0IGdsOjpUZXh0dXJlOjpEaXJ0eUJpdHMgJmRp
cnR5Qml0cykgb3ZlcnJpZGU7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAv
LyBMSUJBTkdMRV9SRU5ERVJFUl9OVUxMX1RFWFRVUkVOVUxMX0hfCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9UcmFuc2Zvcm1GZWVkYmFj
a05VTEwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9udWxsL1RyYW5zZm9ybUZlZWRiYWNrTlVMTC5jcHAJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwv
VHJhbnNmb3JtRmVlZGJhY2tOVUxMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU3IEBA
CisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworLy8gVHJhbnNmb3JtRmVlZGJhY2tOVUxMLmNwcDoKKy8vICAgIEltcGxlbWVu
dHMgdGhlIGNsYXNzIG1ldGhvZHMgZm9yIFRyYW5zZm9ybUZlZWRiYWNrTlVMTC4KKy8vCisKKyNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9udWxsL1RyYW5zZm9ybUZlZWRiYWNrTlVMTC5oIgor
CisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK25hbWVzcGFjZSByeAoreworCitUcmFuc2Zv
cm1GZWVkYmFja05VTEw6OlRyYW5zZm9ybUZlZWRiYWNrTlVMTChjb25zdCBnbDo6VHJhbnNmb3Jt
RmVlZGJhY2tTdGF0ZSAmc3RhdGUpCisgICAgOiBUcmFuc2Zvcm1GZWVkYmFja0ltcGwoc3RhdGUp
Cit7Cit9CisKK1RyYW5zZm9ybUZlZWRiYWNrTlVMTDo6flRyYW5zZm9ybUZlZWRiYWNrTlVMTCgp
Cit7Cit9CisKK3ZvaWQgVHJhbnNmb3JtRmVlZGJhY2tOVUxMOjpiZWdpbihHTGVudW0gcHJpbWl0
aXZlTW9kZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgVHJhbnNmb3JtRmVl
ZGJhY2tOVUxMOjplbmQoKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwordm9pZCBUcmFu
c2Zvcm1GZWVkYmFja05VTEw6OnBhdXNlKCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisK
K3ZvaWQgVHJhbnNmb3JtRmVlZGJhY2tOVUxMOjpyZXN1bWUoKQoreworICAgIFVOSU1QTEVNRU5U
RUQoKTsKK30KKwordm9pZCBUcmFuc2Zvcm1GZWVkYmFja05VTEw6OmJpbmRHZW5lcmljQnVmZmVy
KGNvbnN0IEJpbmRpbmdQb2ludGVyPGdsOjpCdWZmZXI+ICZiaW5kaW5nKQoreworICAgIFVOSU1Q
TEVNRU5URUQoKTsKK30KKwordm9pZCBUcmFuc2Zvcm1GZWVkYmFja05VTEw6OmJpbmRJbmRleGVk
QnVmZmVyKHNpemVfdCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBPZmZzZXRCaW5kaW5nUG9pbnRlcjxnbDo6QnVmZmVyPiAmYmluZGlu
ZykKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSByeApJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvVHJh
bnNmb3JtRmVlZGJhY2tOVUxMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvVHJhbnNmb3JtRmVlZGJhY2tOVUxMLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL251bGwvVHJhbnNmb3JtRmVlZGJhY2tOVUxMLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwzNSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorLy8KKy8vIFRyYW5zZm9ybUZlZWRiYWNrTlVMTC5oOgorLy8gICAgRGVm
aW5lcyB0aGUgY2xhc3MgaW50ZXJmYWNlIGZvciBUcmFuc2Zvcm1GZWVkYmFja05VTEwsIGltcGxl
bWVudGluZyBUcmFuc2Zvcm1GZWVkYmFja0ltcGwuCisvLworCisjaWZuZGVmIExJQkFOR0xFX1JF
TkRFUkVSX05VTExfVFJBTlNGT1JNRkVFREJBQ0tOVUxMX0hfCisjZGVmaW5lIExJQkFOR0xFX1JF
TkRFUkVSX05VTExfVFJBTlNGT1JNRkVFREJBQ0tOVUxMX0hfCisKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9UcmFuc2Zvcm1GZWVkYmFja0ltcGwuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisK
K2NsYXNzIFRyYW5zZm9ybUZlZWRiYWNrTlVMTCA6IHB1YmxpYyBUcmFuc2Zvcm1GZWVkYmFja0lt
cGwKK3sKKyAgcHVibGljOgorICAgIFRyYW5zZm9ybUZlZWRiYWNrTlVMTChjb25zdCBnbDo6VHJh
bnNmb3JtRmVlZGJhY2tTdGF0ZSAmc3RhdGUpOworICAgIH5UcmFuc2Zvcm1GZWVkYmFja05VTEwo
KSBvdmVycmlkZTsKKworICAgIHZvaWQgYmVnaW4oR0xlbnVtIHByaW1pdGl2ZU1vZGUpIG92ZXJy
aWRlOworICAgIHZvaWQgZW5kKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXVzZSgpIG92ZXJyaWRl
OworICAgIHZvaWQgcmVzdW1lKCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGJpbmRHZW5lcmljQnVm
ZmVyKGNvbnN0IEJpbmRpbmdQb2ludGVyPGdsOjpCdWZmZXI+ICZiaW5kaW5nKSBvdmVycmlkZTsK
KyAgICB2b2lkIGJpbmRJbmRleGVkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgT2Zmc2V0Qmlu
ZGluZ1BvaW50ZXI8Z2w6OkJ1ZmZlcj4gJmJpbmRpbmcpIG92ZXJyaWRlOworfTsKKworfSAgLy8g
bmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfTlVMTF9UUkFOU0ZP
Uk1GRUVEQkFDS05VTExfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9udWxsL1ZlcnRleEFycmF5TlVMTC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvVmVydGV4QXJy
YXlOVUxMLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvbnVsbC9WZXJ0ZXhBcnJheU5VTEwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMjUgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBWZXJ0ZXhBcnJheU5VTEwuY3BwOgorLy8g
ICAgSW1wbGVtZW50cyB0aGUgY2xhc3MgbWV0aG9kcyBmb3IgVmVydGV4QXJyYXlOVUxMLgorLy8K
KworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL251bGwvVmVydGV4QXJyYXlOVUxMLmgiCisK
KyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK1ZlcnRleEFy
cmF5TlVMTDo6VmVydGV4QXJyYXlOVUxMKGNvbnN0IGdsOjpWZXJ0ZXhBcnJheVN0YXRlICZkYXRh
KSA6IFZlcnRleEFycmF5SW1wbChkYXRhKQoreworfQorCitWZXJ0ZXhBcnJheU5VTEw6On5WZXJ0
ZXhBcnJheU5VTEwoKQoreworfQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1ZlcnRleEFycmF5TlVM
TC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9udWxsL1ZlcnRleEFycmF5TlVMTC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1ZlcnRleEFycmF5TlVM
TC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjcgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAx
NiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBWZXJ0ZXhB
cnJheU5VTEwuaDoKKy8vICAgIERlZmluZXMgdGhlIGNsYXNzIGludGVyZmFjZSBmb3IgVmVydGV4
QXJyYXlOVUxMLCBpbXBsZW1lbnRpbmcgVmVydGV4QXJyYXlJbXBsLgorLy8KKworI2lmbmRlZiBM
SUJBTkdMRV9SRU5ERVJFUl9OVUxMX1ZFUlRFWEFSUkFZTlVMTF9IXworI2RlZmluZSBMSUJBTkdM
RV9SRU5ERVJFUl9OVUxMX1ZFUlRFWEFSUkFZTlVMTF9IXworCisjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvVmVydGV4QXJyYXlJbXBsLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBW
ZXJ0ZXhBcnJheU5VTEwgOiBwdWJsaWMgVmVydGV4QXJyYXlJbXBsCit7CisgIHB1YmxpYzoKKyAg
ICBWZXJ0ZXhBcnJheU5VTEwoY29uc3QgZ2w6OlZlcnRleEFycmF5U3RhdGUgJmRhdGEpOworICAg
IH5WZXJ0ZXhBcnJheU5VTEwoKSBvdmVycmlkZTsKK307CisKK30gIC8vIG5hbWVzcGFjZSByeAor
CisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX05VTExfVkVSVEVYQVJSQVlOVUxMX0hfCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2Fu
L0J1ZmZlclZrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0J1ZmZlclZrLmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0J1ZmZl
clZrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc0IEBACisvLworLy8gQ29weXJpZ2h0
IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gQnVm
ZmVyVmsuY3BwOgorLy8gICAgSW1wbGVtZW50cyB0aGUgY2xhc3MgbWV0aG9kcyBmb3IgQnVmZmVy
VmsuCisvLworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0J1ZmZlclZrLmgi
CisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK0J1ZmZl
clZrOjpCdWZmZXJWaygpIDogQnVmZmVySW1wbCgpCit7Cit9CisKK0J1ZmZlclZrOjp+QnVmZmVy
VmsoKQoreworfQorCitnbDo6RXJyb3IgQnVmZmVyVms6OnNldERhdGEoR0xlbnVtIHRhcmdldCwg
Y29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIEdMZW51bSB1c2FnZSkKK3sKKyAgICBVTklN
UExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
Cit9CisKK2dsOjpFcnJvciBCdWZmZXJWazo6c2V0U3ViRGF0YShHTGVudW0gdGFyZ2V0LCBjb25z
dCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG9mZnNldCkKK3sKKyAgICBVTklNUExF
TUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9
CisKK2dsOjpFcnJvciBCdWZmZXJWazo6Y29weVN1YkRhdGEoQnVmZmVySW1wbCAqc291cmNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBzb3VyY2VPZmZzZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIGRlc3RPZmZzZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgc2l6ZSkKK3sKKyAgICBVTklN
UExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
Cit9CisKK2dsOjpFcnJvciBCdWZmZXJWazo6bWFwKEdMZW51bSBhY2Nlc3MsIEdMdm9pZCAqKm1h
cFB0cikKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBCdWZmZXJWazo6bWFwUmFuZ2Uoc2l6
ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCwgR0xiaXRmaWVsZCBhY2Nlc3MsIEdMdm9pZCAqKm1h
cFB0cikKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBCdWZmZXJWazo6dW5tYXAoR0xib29s
ZWFuICpyZXN1bHQpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgQnVmZmVyVms6OmdldElu
ZGV4UmFuZ2UoR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
Y291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwcmltaXRpdmVS
ZXN0YXJ0RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6SW5k
ZXhSYW5nZSAqb3V0UmFuZ2UpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCit9ICAvLyBuYW1lc3BhY2UgcngK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vQnVmZmVyVmsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0J1ZmZlclZrLmgJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9CdWZmZXJW
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAx
NiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBCdWZmZXJW
ay5oOgorLy8gICAgRGVmaW5lcyB0aGUgY2xhc3MgaW50ZXJmYWNlIGZvciBCdWZmZXJWaywgaW1w
bGVtZW50aW5nIEJ1ZmZlckltcGwuCisvLworCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX1ZV
TEtBTl9CVUZGRVJWS19IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5fQlVGRkVS
VktfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0J1ZmZlckltcGwuaCIKKworbmFt
ZXNwYWNlIHJ4Cit7CisKK2NsYXNzIEJ1ZmZlclZrIDogcHVibGljIEJ1ZmZlckltcGwKK3sKKyAg
cHVibGljOgorICAgIEJ1ZmZlclZrKCk7CisgICAgfkJ1ZmZlclZrKCkgb3ZlcnJpZGU7CisKKyAg
ICBnbDo6RXJyb3Igc2V0RGF0YShHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkICpkYXRhLCBzaXpl
X3Qgc2l6ZSwgR0xlbnVtIHVzYWdlKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3Igc2V0U3ViRGF0
YShHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG9m
ZnNldCkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGNvcHlTdWJEYXRhKEJ1ZmZlckltcGwgKnNv
dXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgc291cmNlT2Zmc2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBkZXN0T2Zmc2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUpIG92ZXJyaWRlOworICAgIGdsOjpFcnJv
ciBtYXAoR0xlbnVtIGFjY2VzcywgR0x2b2lkICoqbWFwUHRyKSBvdmVycmlkZTsKKyAgICBnbDo6
RXJyb3IgbWFwUmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCwgR0xiaXRmaWVsZCBh
Y2Nlc3MsIEdMdm9pZCAqKm1hcFB0cikgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHVubWFwKEdM
Ym9vbGVhbiAqcmVzdWx0KSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBnZXRJbmRleFJhbmdl
KEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgcHJpbWl0aXZlUmVzdGFydEVuYWJsZWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2w6OkluZGV4UmFuZ2UgKm91dFJhbmdlKSBvdmVycmlkZTsKK307
CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX1ZV
TEtBTl9CVUZGRVJWS19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL3Z1bGthbi9Db21waWxlclZrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbXBpbGVyVmsu
Y3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vQ29tcGlsZXJWay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwzNyBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorLy8KKy8vIENvbXBpbGVyVmsuY3BwOgorLy8gICAgSW1wbGVtZW50cyB0
aGUgY2xhc3MgbWV0aG9kcyBmb3IgQ29tcGlsZXJWay4KKy8vCisKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vQ29tcGlsZXJWay5oIgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVn
LmgiCisKK25hbWVzcGFjZSByeAoreworCitDb21waWxlclZrOjpDb21waWxlclZrKCkgOiBDb21w
aWxlckltcGwoKQoreworfQorCitDb21waWxlclZrOjp+Q29tcGlsZXJWaygpCit7Cit9CisKK2ds
OjpFcnJvciBDb21waWxlclZrOjpyZWxlYXNlKCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cisg
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK1NoU2hhZGVy
T3V0cHV0IENvbXBpbGVyVms6OmdldFRyYW5zbGF0b3JPdXRwdXRUeXBlKCkgY29uc3QKK3sKKyAg
ICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIFNoU2hhZGVyT3V0cHV0KCk7Cit9CisKK30g
IC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL3Z1bGthbi9Db21waWxlclZrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db21waWxlclZrLmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL3Z1bGthbi9Db21waWxlclZrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBA
QAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKy8vIENvbXBpbGVyVmsuaDoKKy8vICAgIERlZmluZXMgdGhlIGNsYXNzIGlu
dGVyZmFjZSBmb3IgQ29tcGlsZXJWaywgaW1wbGVtZW50aW5nIENvbXBpbGVySW1wbC4KKy8vCisK
KyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX0NPTVBJTEVSVktfSF8KKyNkZWZpbmUg
TElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX0NPTVBJTEVSVktfSF8KKworI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL0NvbXBpbGVySW1wbC5oIgorCituYW1lc3BhY2UgcngKK3sKKworY2xhc3Mg
Q29tcGlsZXJWayA6IHB1YmxpYyBDb21waWxlckltcGwKK3sKKyAgcHVibGljOgorICAgIENvbXBp
bGVyVmsoKTsKKyAgICB+Q29tcGlsZXJWaygpIG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIHJl
bGVhc2UoKSBvdmVycmlkZTsKKworICAgIC8vIFRPRE8oam1hZGlsbCk6IEV4cG9zZSB0cmFuc2xh
dG9yIGJ1aWx0LWluIHJlc291cmNlcyBpbml0IG1ldGhvZC4KKyAgICBTaFNoYWRlck91dHB1dCBn
ZXRUcmFuc2xhdG9yT3V0cHV0VHlwZSgpIGNvbnN0IG92ZXJyaWRlOworfTsKKworfSAgLy8gbmFt
ZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX0NPTVBJTEVS
VktfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci92dWxrYW4vQ29udGV4dFZrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbnRleHRWay5jcHAJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1
bGthbi9Db250ZXh0VmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjU0IEBACisvLwor
Ly8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisvLworLy8gQ29udGV4dFZrLmNwcDoKKy8vICAgIEltcGxlbWVudHMgdGhlIGNsYXNzIG1ldGhv
ZHMgZm9yIENvbnRleHRWay4KKy8vCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vQ29udGV4dFZrLmgiCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQnVmZmVyVmsuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vQ29tcGlsZXJWay5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9Db250ZXh0VmsuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
RGV2aWNlVmsuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRmVuY2VOVlZr
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0ZlbmNlU3luY1ZrLmgiCisj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0ZyYW1lYnVmZmVyVmsuaCIKKyNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vSW1hZ2VWay5oIgorI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL3Z1bGthbi9Qcm9ncmFtVmsuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4vUXVlcnlWay5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGth
bi9SZW5kZXJidWZmZXJWay5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9S
ZW5kZXJlclZrLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1NhbXBsZXJW
ay5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TaGFkZXJWay5oIgorI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9UZXh0dXJlVmsuaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVHJhbnNmb3JtRmVlZGJhY2tWay5oIgorI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9WZXJ0ZXhBcnJheVZrLmgiCisKK25hbWVzcGFjZSBy
eAoreworCitDb250ZXh0Vms6OkNvbnRleHRWayhjb25zdCBnbDo6Q29udGV4dFN0YXRlICZzdGF0
ZSwgUmVuZGVyZXJWayAqcmVuZGVyZXIpCisgICAgOiBDb250ZXh0SW1wbChzdGF0ZSksIG1SZW5k
ZXJlcihyZW5kZXJlcikKK3sKK30KKworQ29udGV4dFZrOjp+Q29udGV4dFZrKCkKK3sKK30KKwor
Z2w6OkVycm9yIENvbnRleHRWazo6aW5pdGlhbGl6ZSgpCit7CisgICAgVU5JTVBMRU1FTlRFRCgp
OworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6
RXJyb3IgQ29udGV4dFZrOjpmbHVzaCgpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgQ29u
dGV4dFZrOjpmaW5pc2goKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIENvbnRleHRWazo6
ZHJhd0FycmF5cyhHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpCit7Cisg
ICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOworfQorCitnbDo6RXJyb3IgQ29udGV4dFZrOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdM
ZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBmaXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBpbnN0YW5jZUNvdW50KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIENvbnRleHRWazo6
ZHJhd0VsZW1lbnRzKEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lk
ICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpJ
bmRleFJhbmdlICZpbmRleFJhbmdlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIENvbnRl
eHRWazo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2Vz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpJ
bmRleFJhbmdlICZpbmRleFJhbmdlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIENvbnRl
eHRWazo6ZHJhd1JhbmdlRWxlbWVudHMoR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpCit7CisgICAgVU5J
TVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OworfQorCitHTGVudW0gQ29udGV4dFZrOjpnZXRSZXNldFN0YXR1cygpCit7CisgICAgVU5JTVBM
RU1FTlRFRCgpOworICAgIHJldHVybiBHTF9OT19FUlJPUjsKK30KKworc3RkOjpzdHJpbmcgQ29u
dGV4dFZrOjpnZXRWZW5kb3JTdHJpbmcoKSBjb25zdAoreworICAgIFVOSU1QTEVNRU5URUQoKTsK
KyAgICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKK30KKworc3RkOjpzdHJpbmcgQ29udGV4dFZrOjpn
ZXRSZW5kZXJlckRlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cisg
ICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7Cit9CisKK3ZvaWQgQ29udGV4dFZrOjppbnNlcnRFdmVu
dE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKQoreworICAgIFVOSU1Q
TEVNRU5URUQoKTsKK30KKwordm9pZCBDb250ZXh0Vms6OnB1c2hHcm91cE1hcmtlcihHTHNpemVp
IGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30K
Kwordm9pZCBDb250ZXh0Vms6OnBvcEdyb3VwTWFya2VyKCkKK3sKKyAgICBVTklNUExFTUVOVEVE
KCk7Cit9CisKK3ZvaWQgQ29udGV4dFZrOjpzeW5jU3RhdGUoY29uc3QgZ2w6OlN0YXRlICZzdGF0
ZSwgY29uc3QgZ2w6OlN0YXRlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykKK3sKKyAgICBVTklNUExF
TUVOVEVEKCk7Cit9CisKK0dMaW50IENvbnRleHRWazo6Z2V0R1BVRGlzam9pbnQoKQoreworICAg
IFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gR0xpbnQoKTsKK30KKworR0xpbnQ2NCBDb250
ZXh0Vms6OmdldFRpbWVzdGFtcCgpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVy
biBHTGludDY0KCk7Cit9CisKK3ZvaWQgQ29udGV4dFZrOjpvbk1ha2VDdXJyZW50KGNvbnN0IGds
OjpDb250ZXh0U3RhdGUgJmRhdGEpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCitjb25z
dCBnbDo6Q2FwcyAmQ29udGV4dFZrOjpnZXROYXRpdmVDYXBzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbVJlbmRlcmVyLT5nZXROYXRpdmVDYXBzKCk7Cit9CisKK2NvbnN0IGdsOjpUZXh0dXJlQ2Fw
c01hcCAmQ29udGV4dFZrOjpnZXROYXRpdmVUZXh0dXJlQ2FwcygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1SZW5kZXJlci0+Z2V0TmF0aXZlVGV4dHVyZUNhcHMoKTsKK30KKworY29uc3QgZ2w6OkV4
dGVuc2lvbnMgJkNvbnRleHRWazo6Z2V0TmF0aXZlRXh0ZW5zaW9ucygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1SZW5kZXJlci0+Z2V0TmF0aXZlRXh0ZW5zaW9ucygpOworfQorCitjb25zdCBnbDo6
TGltaXRhdGlvbnMgJkNvbnRleHRWazo6Z2V0TmF0aXZlTGltaXRhdGlvbnMoKSBjb25zdAorewor
ICAgIHJldHVybiBtUmVuZGVyZXItPmdldE5hdGl2ZUxpbWl0YXRpb25zKCk7Cit9CisKK0NvbXBp
bGVySW1wbCAqQ29udGV4dFZrOjpjcmVhdGVDb21waWxlcigpCit7CisgICAgcmV0dXJuIG5ldyBD
b21waWxlclZrKCk7Cit9CisKK1NoYWRlckltcGwgKkNvbnRleHRWazo6Y3JlYXRlU2hhZGVyKGNv
bnN0IGdsOjpTaGFkZXJTdGF0ZSAmc3RhdGUpCit7CisgICAgcmV0dXJuIG5ldyBTaGFkZXJWayhz
dGF0ZSk7Cit9CisKK1Byb2dyYW1JbXBsICpDb250ZXh0Vms6OmNyZWF0ZVByb2dyYW0oY29uc3Qg
Z2w6OlByb2dyYW1TdGF0ZSAmc3RhdGUpCit7CisgICAgcmV0dXJuIG5ldyBQcm9ncmFtVmsoc3Rh
dGUpOworfQorCitGcmFtZWJ1ZmZlckltcGwgKkNvbnRleHRWazo6Y3JlYXRlRnJhbWVidWZmZXIo
Y29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJnN0YXRlKQoreworICAgIHJldHVybiBuZXcgRnJh
bWVidWZmZXJWayhzdGF0ZSk7Cit9CisKK1RleHR1cmVJbXBsICpDb250ZXh0Vms6OmNyZWF0ZVRl
eHR1cmUoY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmc3RhdGUpCit7CisgICAgcmV0dXJuIG5ldyBU
ZXh0dXJlVmsoc3RhdGUpOworfQorCitSZW5kZXJidWZmZXJJbXBsICpDb250ZXh0Vms6OmNyZWF0
ZVJlbmRlcmJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG5ldyBSZW5kZXJidWZmZXJWaygpOworfQor
CitCdWZmZXJJbXBsICpDb250ZXh0Vms6OmNyZWF0ZUJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG5l
dyBCdWZmZXJWaygpOworfQorCitWZXJ0ZXhBcnJheUltcGwgKkNvbnRleHRWazo6Y3JlYXRlVmVy
dGV4QXJyYXkoY29uc3QgZ2w6OlZlcnRleEFycmF5U3RhdGUgJnN0YXRlKQoreworICAgIHJldHVy
biBuZXcgVmVydGV4QXJyYXlWayhzdGF0ZSk7Cit9CisKK1F1ZXJ5SW1wbCAqQ29udGV4dFZrOjpj
cmVhdGVRdWVyeShHTGVudW0gdHlwZSkKK3sKKyAgICByZXR1cm4gbmV3IFF1ZXJ5VmsodHlwZSk7
Cit9CisKK0ZlbmNlTlZJbXBsICpDb250ZXh0Vms6OmNyZWF0ZUZlbmNlTlYoKQoreworICAgIHJl
dHVybiBuZXcgRmVuY2VOVlZrKCk7Cit9CisKK0ZlbmNlU3luY0ltcGwgKkNvbnRleHRWazo6Y3Jl
YXRlRmVuY2VTeW5jKCkKK3sKKyAgICByZXR1cm4gbmV3IEZlbmNlU3luY1ZrKCk7Cit9CisKK1Ry
YW5zZm9ybUZlZWRiYWNrSW1wbCAqQ29udGV4dFZrOjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjayhj
b25zdCBnbDo6VHJhbnNmb3JtRmVlZGJhY2tTdGF0ZSAmc3RhdGUpCit7CisgICAgcmV0dXJuIG5l
dyBUcmFuc2Zvcm1GZWVkYmFja1ZrKHN0YXRlKTsKK30KKworU2FtcGxlckltcGwgKkNvbnRleHRW
azo6Y3JlYXRlU2FtcGxlcigpCit7CisgICAgcmV0dXJuIG5ldyBTYW1wbGVyVmsoKTsKK30KKwor
c3RkOjp2ZWN0b3I8UGF0aEltcGwgKj4gQ29udGV4dFZrOjpjcmVhdGVQYXRocyhHTHNpemVpKQor
eworICAgIHJldHVybiBzdGQ6OnZlY3RvcjxQYXRoSW1wbCAqPigpOworfQorCit9ICAvLyBuYW1l
c3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4vQ29udGV4dFZrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db250ZXh0VmsuaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVs
a2FuL0NvbnRleHRWay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTI2IEBACisvLworLy8g
Q29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworLy8gQ29udGV4dFZrLmg6CisvLyAgICBEZWZpbmVzIHRoZSBjbGFzcyBpbnRlcmZhY2UgZm9y
IENvbnRleHRWaywgaW1wbGVtZW50aW5nIENvbnRleHRJbXBsLgorLy8KKworI2lmbmRlZiBMSUJB
TkdMRV9SRU5ERVJFUl9WVUxLQU5fQ09OVEVYVFZLX0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRF
UkVSX1ZVTEtBTl9DT05URVhUVktfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0Nv
bnRleHRJbXBsLmgiCisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXJWazsKKworY2xh
c3MgQ29udGV4dFZrIDogcHVibGljIENvbnRleHRJbXBsCit7CisgIHB1YmxpYzoKKyAgICBDb250
ZXh0VmsoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmc3RhdGUsIFJlbmRlcmVyVmsgKnJlbmRlcmVy
KTsKKyAgICB+Q29udGV4dFZrKCkgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJyb3IgaW5pdGlhbGl6
ZSgpIG92ZXJyaWRlOworCisgICAgLy8gRmx1c2ggYW5kIGZpbmlzaC4KKyAgICBnbDo6RXJyb3Ig
Zmx1c2goKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgZmluaXNoKCkgb3ZlcnJpZGU7CisKKyAg
ICAvLyBEcmF3aW5nIG1ldGhvZHMuCisgICAgZ2w6OkVycm9yIGRyYXdBcnJheXMoR0xlbnVtIG1v
ZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50KSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3Ig
ZHJhd0FycmF5c0luc3RhbmNlZChHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBmaXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgaW5zdGFuY2VDb3VudCkgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJyb3IgZHJhd0VsZW1lbnRz
KEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpIG92ZXJyaWRlOworICAgIGds
OjpFcnJvciBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpJbmRleFJhbmdlICZpbmRleFJhbmdlKSBvdmVycmlkZTsK
KyAgICBnbDo6RXJyb3IgZHJhd1JhbmdlRWxlbWVudHMoR0xlbnVtIG1vZGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNl
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2Ug
JmluZGV4UmFuZ2UpIG92ZXJyaWRlOworCisgICAgLy8gRGV2aWNlIGxvc3MKKyAgICBHTGVudW0g
Z2V0UmVzZXRTdGF0dXMoKSBvdmVycmlkZTsKKworICAgIC8vIFZlbmRvciBhbmQgZGVzY3JpcHRp
b24gc3RyaW5ncy4KKyAgICBzdGQ6OnN0cmluZyBnZXRWZW5kb3JTdHJpbmcoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBzdGQ6OnN0cmluZyBnZXRSZW5kZXJlckRlc2NyaXB0aW9uKCkgY29uc3Qgb3Zl
cnJpZGU7CisKKyAgICAvLyBEZWJ1ZyBtYXJrZXJzLgorICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJr
ZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBwdXNoR3JvdXBNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikgb3Zl
cnJpZGU7CisgICAgdm9pZCBwb3BHcm91cE1hcmtlcigpIG92ZXJyaWRlOworCisgICAgLy8gU3Rh
dGUgc3luYyB3aXRoIGRpcnR5IGJpdHMuCisgICAgdm9pZCBzeW5jU3RhdGUoY29uc3QgZ2w6OlN0
YXRlICZzdGF0ZSwgY29uc3QgZ2w6OlN0YXRlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykgb3ZlcnJp
ZGU7CisKKyAgICAvLyBEaXNqb2ludCB0aW1lciBxdWVyaWVzCisgICAgR0xpbnQgZ2V0R1BVRGlz
am9pbnQoKSBvdmVycmlkZTsKKyAgICBHTGludDY0IGdldFRpbWVzdGFtcCgpIG92ZXJyaWRlOwor
CisgICAgLy8gQ29udGV4dCBzd2l0Y2hpbmcKKyAgICB2b2lkIG9uTWFrZUN1cnJlbnQoY29uc3Qg
Z2w6OkNvbnRleHRTdGF0ZSAmZGF0YSkgb3ZlcnJpZGU7CisKKyAgICAvLyBOYXRpdmUgY2FwYWJp
bGl0aWVzLCB1bm1vZGlmaWVkIGJ5IGdsOjpDb250ZXh0LgorICAgIGNvbnN0IGdsOjpDYXBzICZn
ZXROYXRpdmVDYXBzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgZ2w6OlRleHR1cmVDYXBz
TWFwICZnZXROYXRpdmVUZXh0dXJlQ2FwcygpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IGds
OjpFeHRlbnNpb25zICZnZXROYXRpdmVFeHRlbnNpb25zKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Y29uc3QgZ2w6OkxpbWl0YXRpb25zICZnZXROYXRpdmVMaW1pdGF0aW9ucygpIGNvbnN0IG92ZXJy
aWRlOworCisgICAgLy8gU2hhZGVyIGNyZWF0aW9uCisgICAgQ29tcGlsZXJJbXBsICpjcmVhdGVD
b21waWxlcigpIG92ZXJyaWRlOworICAgIFNoYWRlckltcGwgKmNyZWF0ZVNoYWRlcihjb25zdCBn
bDo6U2hhZGVyU3RhdGUgJnN0YXRlKSBvdmVycmlkZTsKKyAgICBQcm9ncmFtSW1wbCAqY3JlYXRl
UHJvZ3JhbShjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZzdGF0ZSkgb3ZlcnJpZGU7CisKKyAgICAv
LyBGcmFtZWJ1ZmZlciBjcmVhdGlvbgorICAgIEZyYW1lYnVmZmVySW1wbCAqY3JlYXRlRnJhbWVi
dWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJnN0YXRlKSBvdmVycmlkZTsKKworICAg
IC8vIFRleHR1cmUgY3JlYXRpb24KKyAgICBUZXh0dXJlSW1wbCAqY3JlYXRlVGV4dHVyZShjb25z
dCBnbDo6VGV4dHVyZVN0YXRlICZzdGF0ZSkgb3ZlcnJpZGU7CisKKyAgICAvLyBSZW5kZXJidWZm
ZXIgY3JlYXRpb24KKyAgICBSZW5kZXJidWZmZXJJbXBsICpjcmVhdGVSZW5kZXJidWZmZXIoKSBv
dmVycmlkZTsKKworICAgIC8vIEJ1ZmZlciBjcmVhdGlvbgorICAgIEJ1ZmZlckltcGwgKmNyZWF0
ZUJ1ZmZlcigpIG92ZXJyaWRlOworCisgICAgLy8gVmVydGV4IEFycmF5IGNyZWF0aW9uCisgICAg
VmVydGV4QXJyYXlJbXBsICpjcmVhdGVWZXJ0ZXhBcnJheShjb25zdCBnbDo6VmVydGV4QXJyYXlT
dGF0ZSAmc3RhdGUpIG92ZXJyaWRlOworCisgICAgLy8gUXVlcnkgYW5kIEZlbmNlIGNyZWF0aW9u
CisgICAgUXVlcnlJbXBsICpjcmVhdGVRdWVyeShHTGVudW0gdHlwZSkgb3ZlcnJpZGU7CisgICAg
RmVuY2VOVkltcGwgKmNyZWF0ZUZlbmNlTlYoKSBvdmVycmlkZTsKKyAgICBGZW5jZVN5bmNJbXBs
ICpjcmVhdGVGZW5jZVN5bmMoKSBvdmVycmlkZTsKKworICAgIC8vIFRyYW5zZm9ybSBGZWVkYmFj
ayBjcmVhdGlvbgorICAgIFRyYW5zZm9ybUZlZWRiYWNrSW1wbCAqY3JlYXRlVHJhbnNmb3JtRmVl
ZGJhY2soCisgICAgICAgIGNvbnN0IGdsOjpUcmFuc2Zvcm1GZWVkYmFja1N0YXRlICZzdGF0ZSkg
b3ZlcnJpZGU7CisKKyAgICAvLyBTYW1wbGVyIG9iamVjdCBjcmVhdGlvbgorICAgIFNhbXBsZXJJ
bXBsICpjcmVhdGVTYW1wbGVyKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBQYXRoIG9iamVjdCBjcmVh
dGlvbgorICAgIHN0ZDo6dmVjdG9yPFBhdGhJbXBsICo+IGNyZWF0ZVBhdGhzKEdMc2l6ZWkpIG92
ZXJyaWRlOworCisgIHByaXZhdGU6CisgICAgUmVuZGVyZXJWayAqbVJlbmRlcmVyOworfTsKKwor
fSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfVlVMS0FO
X0NPTlRFWFRWS19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL3Z1bGthbi9EZXZpY2VWay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9EZXZpY2VWay5jcHAJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL3Z1bGthbi9EZXZpY2VWay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAor
Ly8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgorLy8KKy8vIERldmljZVZrLmNwcDoKKy8vICAgIEltcGxlbWVudHMgdGhlIGNsYXNzIG1l
dGhvZHMgZm9yIERldmljZVZrLgorLy8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1
bGthbi9EZXZpY2VWay5oIgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK25hbWVzcGFj
ZSByeAoreworCitEZXZpY2VWazo6RGV2aWNlVmsoKSA6IERldmljZUltcGwoKQoreworfQorCitE
ZXZpY2VWazo6fkRldmljZVZrKCkKK3sKK30KKworZWdsOjpFcnJvciBEZXZpY2VWazo6Z2V0RGV2
aWNlKHZvaWQgKipvdXRWYWx1ZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJu
IGVnbDo6RXJyb3IoRUdMX0JBRF9BQ0NFU1MpOworfQorCitFR0xpbnQgRGV2aWNlVms6OmdldFR5
cGUoKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gRUdMaW50KCk7Cit9CisK
K3ZvaWQgRGV2aWNlVms6OmdlbmVyYXRlRXh0ZW5zaW9ucyhlZ2w6OkRldmljZUV4dGVuc2lvbnMg
Km91dEV4dGVuc2lvbnMpIGNvbnN0Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCitib29s
IERldmljZVZrOjpkZXZpY2VFeHRlcm5hbGx5U291cmNlZCgpCit7CisgICAgVU5JTVBMRU1FTlRF
RCgpOworICAgIHJldHVybiBib29sKCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9EZXZp
Y2VWay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vRGV2aWNlVmsuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0RldmljZVZrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIERldmljZVZrLmg6Cisv
LyAgICBEZWZpbmVzIHRoZSBjbGFzcyBpbnRlcmZhY2UgZm9yIERldmljZVZrLCBpbXBsZW1lbnRp
bmcgRGV2aWNlSW1wbC4KKy8vCisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX0RF
VklDRVZLX0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9ERVZJQ0VWS19IXwor
CisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvRGV2aWNlSW1wbC5oIgorCituYW1lc3BhY2Ug
cngKK3sKKworY2xhc3MgRGV2aWNlVmsgOiBwdWJsaWMgRGV2aWNlSW1wbAoreworICBwdWJsaWM6
CisgICAgRGV2aWNlVmsoKTsKKyAgICB+RGV2aWNlVmsoKSBvdmVycmlkZTsKKworICAgIGVnbDo6
RXJyb3IgZ2V0RGV2aWNlKHZvaWQgKipvdXRWYWx1ZSkgb3ZlcnJpZGU7CisgICAgRUdMaW50IGdl
dFR5cGUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGdlbmVyYXRlRXh0ZW5zaW9ucyhlZ2w6OkRldmlj
ZUV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgZGV2
aWNlRXh0ZXJuYWxseVNvdXJjZWQoKSBvdmVycmlkZTsKK307CisKK30gIC8vIG5hbWVzcGFjZSBy
eAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9ERVZJQ0VWS19IXwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9E
aXNwbGF5VmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRGlzcGxheVZrLmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0Rpc3Bs
YXlWay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNjcgQEAKKy8vCisvLyBDb3B5cmln
aHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBE
aXNwbGF5VmsuY3BwOgorLy8gICAgSW1wbGVtZW50cyB0aGUgY2xhc3MgbWV0aG9kcyBmb3IgRGlz
cGxheVZrLgorLy8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9EaXNwbGF5
VmsuaCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL3Z1bGthbi9Db250ZXh0VmsuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK0Rpc3BsYXlW
azo6RGlzcGxheVZrKCkgOiBEaXNwbGF5SW1wbCgpLCBtUmVuZGVyZXIobnVsbHB0cikKK3sKK30K
KworRGlzcGxheVZrOjp+RGlzcGxheVZrKCkKK3sKK30KKworZWdsOjpFcnJvciBEaXNwbGF5Vms6
OmluaXRpYWxpemUoZWdsOjpEaXNwbGF5ICpkaXNwbGF5KQoreworICAgIFVOSU1QTEVNRU5URUQo
KTsKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FDQ0VTUyk7Cit9CisKK3ZvaWQgRGlz
cGxheVZrOjp0ZXJtaW5hdGUoKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKworZWdsOjpF
cnJvciBEaXNwbGF5Vms6Om1ha2VDdXJyZW50KGVnbDo6U3VyZmFjZSAqZHJhd1N1cmZhY2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpTdXJmYWNlICpyZWFkU3VyZmFj
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4
dCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JB
RF9BQ0NFU1MpOworfQorCitlZ2w6OkNvbmZpZ1NldCBEaXNwbGF5Vms6OmdlbmVyYXRlQ29uZmln
cygpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBlZ2w6OkNvbmZpZ1NldCgp
OworfQorCitib29sIERpc3BsYXlWazo6dGVzdERldmljZUxvc3QoKQoreworICAgIFVOSU1QTEVN
RU5URUQoKTsKKyAgICByZXR1cm4gYm9vbCgpOworfQorCitlZ2w6OkVycm9yIERpc3BsYXlWazo6
cmVzdG9yZUxvc3REZXZpY2UoKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4g
ZWdsOjpFcnJvcihFR0xfQkFEX0FDQ0VTUyk7Cit9CisKK2Jvb2wgRGlzcGxheVZrOjppc1ZhbGlk
TmF0aXZlV2luZG93KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KSBjb25zdAoreworICAgIFVO
SU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gYm9vbCgpOworfQorCitzdGQ6OnN0cmluZyBEaXNw
bGF5Vms6OmdldFZlbmRvclN0cmluZygpIGNvbnN0Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgIHJldHVybiBzdGQ6OnN0cmluZygpOworfQorCitlZ2w6OkVycm9yIERpc3BsYXlWazo6Z2V0
RGV2aWNlKERldmljZUltcGwgKipkZXZpY2UpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAg
IHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfQUNDRVNTKTsKK30KKworZWdsOjpFcnJvciBEaXNw
bGF5Vms6OndhaXRDbGllbnQoKSBjb25zdAoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICBy
ZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FDQ0VTUyk7Cit9CisKK2VnbDo6RXJyb3IgRGlzcGxh
eVZrOjp3YWl0TmF0aXZlKEVHTGludCBlbmdpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlZ2w6OlN1cmZhY2UgKmRyYXdTdXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWdsOjpTdXJmYWNlICpyZWFkU3VyZmFjZSkgY29uc3QKK3sKKyAgICBVTklN
UExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BQ0NFU1MpOworfQor
CitTdXJmYWNlSW1wbCAqRGlzcGxheVZrOjpjcmVhdGVXaW5kb3dTdXJmYWNlKGNvbnN0IGVnbDo6
U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6
OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFN1cmZhY2VJbXBsICo+KDApOworfQorCitTdXJmYWNlSW1wbCAqRGlz
cGxheVZrOjpjcmVhdGVQYnVmZmVyU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3Rh
dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBl
Z2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQoreworICAg
IFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U3VyZmFjZUltcGwgKj4o
MCk7Cit9CisKK1N1cmZhY2VJbXBsICpEaXNwbGF5Vms6OmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50
QnVmZmVyKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpj
b25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIHNoYXJlSGFuZGxlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1
dGVNYXAgJmF0dHJpYnMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxTdXJmYWNlSW1wbCAqPigwKTsKK30KKworU3VyZmFjZUltcGwgKkRpc3BsYXlWazo6
Y3JlYXRlUGl4bWFwU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmln
ICpjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBOYXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMp
Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTdXJmYWNl
SW1wbCAqPigwKTsKK30KKworSW1hZ2VJbXBsICpEaXNwbGF5Vms6OmNyZWF0ZUltYWdlKEVHTGVu
dW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6SW1hZ2VT
aWJsaW5nICpidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
ZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxJbWFnZUltcGwgKj4oMCk7Cit9CisKK0NvbnRleHRJbXBsICpE
aXNwbGF5Vms6OmNyZWF0ZUNvbnRleHQoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmc3RhdGUpCit7
CisgICAgcmV0dXJuIG5ldyBDb250ZXh0Vmsoc3RhdGUsIG1SZW5kZXJlcik7Cit9CisKK1N0cmVh
bVByb2R1Y2VySW1wbCAqRGlzcGxheVZrOjpjcmVhdGVTdHJlYW1Qcm9kdWNlckQzRFRleHR1cmVO
VjEyKAorICAgIGVnbDo6U3RyZWFtOjpDb25zdW1lclR5cGUgY29uc3VtZXJUeXBlLAorICAgIGNv
bnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U3RyZWFtUHJvZHVjZXJJbXBsICo+KDApOworfQorCitn
bDo6VmVyc2lvbiBEaXNwbGF5Vms6OmdldE1heFN1cHBvcnRlZEVTVmVyc2lvbigpIGNvbnN0Cit7
CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6VmVyc2lvbigwLCAwKTsKK30K
Kwordm9pZCBEaXNwbGF5Vms6OmdlbmVyYXRlRXh0ZW5zaW9ucyhlZ2w6OkRpc3BsYXlFeHRlbnNp
b25zICpvdXRFeHRlbnNpb25zKSBjb25zdAoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwor
dm9pZCBEaXNwbGF5Vms6OmdlbmVyYXRlQ2FwcyhlZ2w6OkNhcHMgKm91dENhcHMpIGNvbnN0Cit7
CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRGlzcGxh
eVZrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL3Z1bGthbi9EaXNwbGF5VmsuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0Rpc3BsYXlWay5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODQgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBEaXNwbGF5VmsuaDoK
Ky8vICAgIERlZmluZXMgdGhlIGNsYXNzIGludGVyZmFjZSBmb3IgRGlzcGxheVZrLCBpbXBsZW1l
bnRpbmcgRGlzcGxheUltcGwuCisvLworCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtB
Tl9ESVNQTEFZVktfSF8KKyNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX0RJU1BMQVlW
S19IXworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvRGlzcGxheUltcGwuaCIKKworbmFt
ZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJlclZrOworCitjbGFzcyBEaXNwbGF5VmsgOiBwdWJs
aWMgRGlzcGxheUltcGwKK3sKKyAgcHVibGljOgorICAgIERpc3BsYXlWaygpOworICAgIH5EaXNw
bGF5VmsoKSBvdmVycmlkZTsKKworICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZShlZ2w6OkRpc3Bs
YXkgKmRpc3BsYXkpIG92ZXJyaWRlOworICAgIHZvaWQgdGVybWluYXRlKCkgb3ZlcnJpZGU7CisK
KyAgICBlZ2w6OkVycm9yIG1ha2VDdXJyZW50KGVnbDo6U3VyZmFjZSAqZHJhd1N1cmZhY2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OlN1cmZhY2UgKnJlYWRTdXJmYWNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQpIG92ZXJyaWRlOwor
CisgICAgZWdsOjpDb25maWdTZXQgZ2VuZXJhdGVDb25maWdzKCkgb3ZlcnJpZGU7CisKKyAgICBi
b29sIHRlc3REZXZpY2VMb3N0KCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciByZXN0b3JlTG9z
dERldmljZSgpIG92ZXJyaWRlOworCisgICAgYm9vbCBpc1ZhbGlkTmF0aXZlV2luZG93KEVHTE5h
dGl2ZVdpbmRvd1R5cGUgd2luZG93KSBjb25zdCBvdmVycmlkZTsKKworICAgIHN0ZDo6c3RyaW5n
IGdldFZlbmRvclN0cmluZygpIGNvbnN0IG92ZXJyaWRlOworCisgICAgZWdsOjpFcnJvciBnZXRE
ZXZpY2UoRGV2aWNlSW1wbCAqKmRldmljZSkgb3ZlcnJpZGU7CisKKyAgICBlZ2w6OkVycm9yIHdh
aXRDbGllbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIHdhaXROYXRpdmUoRUdM
aW50IGVuZ2luZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpTdXJmYWNlICpkcmF3
U3VyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpTdXJmYWNlICpyZWFkU3Vy
ZmFjZSkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBTdXJmYWNlSW1wbCAqY3JlYXRlV2luZG93U3Vy
ZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5k
b3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRy
aWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOworICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQYnVm
ZmVyU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJp
YnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CisgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBidWZm
ZXJGcm9tQ2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25m
aWcgKmNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0
dHJpYnMpIG92ZXJyaWRlOworICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQaXhtYXBTdXJmYWNlKGNv
bnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOYXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0
ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CisKKyAgICBJbWFnZUltcGwgKmNyZWF0ZUltYWdlKEVH
TGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpJbWFnZVNpYmxp
bmcgKmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmli
dXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKKworICAgIENvbnRleHRJbXBsICpjcmVhdGVDb250
ZXh0KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJnN0YXRlKSBvdmVycmlkZTsKKworICAgIFN0cmVh
bVByb2R1Y2VySW1wbCAqY3JlYXRlU3RyZWFtUHJvZHVjZXJEM0RUZXh0dXJlTlYxMigKKyAgICAg
ICAgZWdsOjpTdHJlYW06OkNvbnN1bWVyVHlwZSBjb25zdW1lclR5cGUsCisgICAgICAgIGNvbnN0
IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKKyAgICBnbDo6VmVyc2lvbiBn
ZXRNYXhTdXBwb3J0ZWRFU1ZlcnNpb24oKSBjb25zdCBvdmVycmlkZTsKKworICBwcml2YXRlOgor
ICAgIHZvaWQgZ2VuZXJhdGVFeHRlbnNpb25zKGVnbDo6RGlzcGxheUV4dGVuc2lvbnMgKm91dEV4
dGVuc2lvbnMpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZ2VuZXJhdGVDYXBzKGVnbDo6Q2Fw
cyAqb3V0Q2FwcykgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBSZW5kZXJlclZrICptUmVuZGVyZXI7
Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJF
Ul9WVUxLQU5fRElTUExBWVZLX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0ZlbmNlTlZWay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9GZW5jZU5W
VmsuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vRmVuY2VOVlZrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQzIEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisvLworLy8gRmVuY2VOVlZrLmNwcDoKKy8vICAgIEltcGxlbWVudHMg
dGhlIGNsYXNzIG1ldGhvZHMgZm9yIEZlbmNlTlZWay4KKy8vCisKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vRmVuY2VOVlZrLmgiCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcu
aCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK0ZlbmNlTlZWazo6RmVuY2VOVlZrKCkgOiBGZW5jZU5W
SW1wbCgpCit7Cit9CisKK0ZlbmNlTlZWazo6fkZlbmNlTlZWaygpCit7Cit9CisKK2dsOjpFcnJv
ciBGZW5jZU5WVms6OnNldChHTGVudW0gY29uZGl0aW9uKQoreworICAgIFVOSU1QTEVNRU5URUQo
KTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6
OkVycm9yIEZlbmNlTlZWazo6dGVzdChHTGJvb2xlYW4gKm91dEZpbmlzaGVkKQoreworICAgIFVO
SU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKK30KKworZ2w6OkVycm9yIEZlbmNlTlZWazo6ZmluaXNoKCkKK3sKKyAgICBVTklNUExFTUVO
VEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisK
K30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9GZW5jZU5WVmsuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0ZlbmNlTlZWay5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vRmVuY2VOVlZrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMSBA
QAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKy8vIEZlbmNlTlZWay5oOgorLy8gICAgRGVmaW5lcyB0aGUgY2xhc3MgaW50
ZXJmYWNlIGZvciBGZW5jZU5WVmssIGltcGxlbWVudGluZyBGZW5jZU5WSW1wbC4KKy8vCisKKyNp
Zm5kZWYgTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX0ZFTkNFTlZWS19IXworI2RlZmluZSBMSUJB
TkdMRV9SRU5ERVJFUl9WVUxLQU5fRkVOQ0VOVlZLX0hfCisKKyNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9GZW5jZU5WSW1wbC5oIgorCituYW1lc3BhY2UgcngKK3sKKworY2xhc3MgRmVuY2VO
VlZrIDogcHVibGljIEZlbmNlTlZJbXBsCit7CisgIHB1YmxpYzoKKyAgICBGZW5jZU5WVmsoKTsK
KyAgICB+RmVuY2VOVlZrKCkgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJyb3Igc2V0KEdMZW51bSBj
b25kaXRpb24pIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciB0ZXN0KEdMYm9vbGVhbiAqb3V0Rmlu
aXNoZWQpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBmaW5pc2goKSBvdmVycmlkZTsKK307CisK
K30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtB
Tl9GRU5DRU5WVktfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vRmVuY2VTeW5jVmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRmVuY2VTeW5jVmsu
Y3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vRmVuY2VTeW5jVmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDkgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisvLyBGZW5jZVN5bmNWay5jcHA6CisvLyAgICBJbXBsZW1lbnRz
IHRoZSBjbGFzcyBtZXRob2RzIGZvciBGZW5jZVN5bmNWay4KKy8vCisKKyNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vRmVuY2VTeW5jVmsuaCIKKworI2luY2x1ZGUgImNvbW1vbi9k
ZWJ1Zy5oIgorCituYW1lc3BhY2UgcngKK3sKKworRmVuY2VTeW5jVms6OkZlbmNlU3luY1ZrKCkg
OiBGZW5jZVN5bmNJbXBsKCkKK3sKK30KKworRmVuY2VTeW5jVms6On5GZW5jZVN5bmNWaygpCit7
Cit9CisKK2dsOjpFcnJvciBGZW5jZVN5bmNWazo6c2V0KEdMZW51bSBjb25kaXRpb24sIEdMYml0
ZmllbGQgZmxhZ3MpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgRmVuY2VTeW5jVms6OmNs
aWVudFdhaXQoR0xiaXRmaWVsZCBmbGFncywgR0x1aW50NjQgdGltZW91dCwgR0xlbnVtICpvdXRS
ZXN1bHQpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgRmVuY2VTeW5jVms6OnNlcnZlcldh
aXQoR0xiaXRmaWVsZCBmbGFncywgR0x1aW50NjQgdGltZW91dCkKK3sKKyAgICBVTklNUExFTUVO
VEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisK
K2dsOjpFcnJvciBGZW5jZVN5bmNWazo6Z2V0U3RhdHVzKEdMaW50ICpvdXRSZXN1bHQpCit7Cisg
ICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOworfQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRmVuY2VTeW5jVmsuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVs
a2FuL0ZlbmNlU3luY1ZrLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9GZW5jZVN5bmNWay5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMzIgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBGZW5jZVN5bmNWay5oOgorLy8gICAg
RGVmaW5lcyB0aGUgY2xhc3MgaW50ZXJmYWNlIGZvciBGZW5jZVN5bmNWaywgaW1wbGVtZW50aW5n
IEZlbmNlU3luY0ltcGwuCisvLworCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9G
RU5DRVNZTkNWS19IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5fRkVOQ0VTWU5D
VktfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0ZlbmNlU3luY0ltcGwuaCIKKwor
bmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIEZlbmNlU3luY1ZrIDogcHVibGljIEZlbmNlU3luY0lt
cGwKK3sKKyAgcHVibGljOgorICAgIEZlbmNlU3luY1ZrKCk7CisgICAgfkZlbmNlU3luY1ZrKCkg
b3ZlcnJpZGU7CisKKyAgICBnbDo6RXJyb3Igc2V0KEdMZW51bSBjb25kaXRpb24sIEdMYml0Zmll
bGQgZmxhZ3MpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBjbGllbnRXYWl0KEdMYml0ZmllbGQg
ZmxhZ3MsIEdMdWludDY0IHRpbWVvdXQsIEdMZW51bSAqb3V0UmVzdWx0KSBvdmVycmlkZTsKKyAg
ICBnbDo6RXJyb3Igc2VydmVyV2FpdChHTGJpdGZpZWxkIGZsYWdzLCBHTHVpbnQ2NCB0aW1lb3V0
KSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgZ2V0U3RhdHVzKEdMaW50ICpvdXRSZXN1bHQpIG92
ZXJyaWRlOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVf
UkVOREVSRVJfVlVMS0FOX0ZFTkNFU1lOQ1ZLX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0ZyYW1lYnVmZmVyVmsuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92
dWxrYW4vRnJhbWVidWZmZXJWay5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9GcmFtZWJ1ZmZlclZrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzMSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEZyYW1lYnVmZmVy
VmsuY3BwOgorLy8gICAgSW1wbGVtZW50cyB0aGUgY2xhc3MgbWV0aG9kcyBmb3IgRnJhbWVidWZm
ZXJWay4KKy8vCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRnJhbWVidWZm
ZXJWay5oIgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK25hbWVzcGFjZSByeAorewor
CitGcmFtZWJ1ZmZlclZrOjpGcmFtZWJ1ZmZlclZrKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRl
ICZzdGF0ZSkgOiBGcmFtZWJ1ZmZlckltcGwoc3RhdGUpCit7Cit9CisKK0ZyYW1lYnVmZmVyVms6
On5GcmFtZWJ1ZmZlclZrKCkKK3sKK30KKworZ2w6OkVycm9yIEZyYW1lYnVmZmVyVms6OmRpc2Nh
cmQoc2l6ZV90IGNvdW50LCBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKQoreworICAgIFVOSU1Q
TEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
K30KKworZ2w6OkVycm9yIEZyYW1lYnVmZmVyVms6OmludmFsaWRhdGUoc2l6ZV90IGNvdW50LCBj
b25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIEZy
YW1lYnVmZmVyVms6OmludmFsaWRhdGVTdWIoc2l6ZV90IGNvdW50LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICphdHRhY2htZW50cywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmFy
ZWEpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgRnJhbWVidWZmZXJWazo6Y2xlYXIoQ29u
dGV4dEltcGwgKmNvbnRleHQsIEdMYml0ZmllbGQgbWFzaykKK3sKKyAgICBVTklNUExFTUVOVEVE
KCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2ds
OjpFcnJvciBGcmFtZWJ1ZmZlclZrOjpjbGVhckJ1ZmZlcmZ2KENvbnRleHRJbXBsICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2
YWx1ZXMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgRnJhbWVidWZmZXJWazo6Y2xlYXJC
dWZmZXJ1aXYoQ29udGV4dEltcGwgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWVzKQoreworICAgIFVOSU1QTEVNRU5U
RUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKwor
Z2w6OkVycm9yIEZyYW1lYnVmZmVyVms6OmNsZWFyQnVmZmVyaXYoQ29udGV4dEltcGwgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYnVmZmVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHJhd2J1ZmZl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2
YWx1ZXMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgRnJhbWVidWZmZXJWazo6Y2xlYXJC
dWZmZXJmaShDb250ZXh0SW1wbCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xmbG9hdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHN0ZW5jaWwpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitHTGVudW0gRnJhbWVi
dWZmZXJWazo6Z2V0SW1wbGVtZW50YXRpb25Db2xvclJlYWRGb3JtYXQoKSBjb25zdAoreworICAg
IFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gR0xlbnVtKCk7Cit9CisKK0dMZW51bSBGcmFt
ZWJ1ZmZlclZrOjpnZXRJbXBsZW1lbnRhdGlvbkNvbG9yUmVhZFR5cGUoKSBjb25zdAoreworICAg
IFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gR0xlbnVtKCk7Cit9CisKK2dsOjpFcnJvciBG
cmFtZWJ1ZmZlclZrOjpyZWFkUGl4ZWxzKENvbnRleHRJbXBsICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmYXJlYSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqcGl4ZWxzKSBjb25zdAoreworICAgIFVOSU1Q
TEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
K30KKworZ2w6OkVycm9yIEZyYW1lYnVmZmVyVms6OmJsaXQoQ29udGV4dEltcGwgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3Vy
Y2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3Rhbmds
ZSAmZGVzdEFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJpdGZpZWxkIG1h
c2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsdGVyKQoreworICAg
IFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKK30KKworYm9vbCBGcmFtZWJ1ZmZlclZrOjpjaGVja1N0YXR1cygpIGNvbnN0Cit7Cisg
ICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBib29sKCk7Cit9CisKK3ZvaWQgRnJhbWVi
dWZmZXJWazo6c3luY1N0YXRlKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGlydHlCaXRzICZkaXJ0
eUJpdHMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCit9ICAvLyBuYW1lc3BhY2UgcngK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vRnJhbWVidWZmZXJWay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRnJhbWVidWZmZXJWay5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vRnJhbWVidWZmZXJWay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzAgQEAKKy8vCisv
LyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisvLyBGcmFtZWJ1ZmZlclZrLmg6CisvLyAgICBEZWZpbmVzIHRoZSBjbGFzcyBpbnRlcmZh
Y2UgZm9yIEZyYW1lYnVmZmVyVmssIGltcGxlbWVudGluZyBGcmFtZWJ1ZmZlckltcGwuCisvLwor
CisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9GUkFNRUJVRkZFUlZLX0hfCisjZGVm
aW5lIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9GUkFNRUJVRkZFUlZLX0hfCisKKyNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9GcmFtZWJ1ZmZlckltcGwuaCIKKworbmFtZXNwYWNlIHJ4Cit7
CisKK2NsYXNzIEZyYW1lYnVmZmVyVmsgOiBwdWJsaWMgRnJhbWVidWZmZXJJbXBsCit7CisgIHB1
YmxpYzoKKyAgICBGcmFtZWJ1ZmZlclZrKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZzdGF0
ZSk7CisgICAgfkZyYW1lYnVmZmVyVmsoKSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBkaXNj
YXJkKHNpemVfdCBjb3VudCwgY29uc3QgR0xlbnVtICphdHRhY2htZW50cykgb3ZlcnJpZGU7Cisg
ICAgZ2w6OkVycm9yIGludmFsaWRhdGUoc2l6ZV90IGNvdW50LCBjb25zdCBHTGVudW0gKmF0dGFj
aG1lbnRzKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgaW52YWxpZGF0ZVN1YihzaXplX3QgY291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICphdHRhY2htZW50
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZhcmVh
KSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBjbGVhcihDb250ZXh0SW1wbCAqY29udGV4dCwg
R0xiaXRmaWVsZCBtYXNrKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgY2xlYXJCdWZmZXJmdihD
b250ZXh0SW1wbCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
YnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWVzKSBvdmVycmlk
ZTsKKyAgICBnbDo6RXJyb3IgY2xlYXJCdWZmZXJ1aXYoQ29udGV4dEltcGwgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBidWZmZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWVzKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgY2xl
YXJCdWZmZXJpdihDb250ZXh0SW1wbCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRy
YXdidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVl
cykgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGNsZWFyQnVmZmVyZmkoQ29udGV4dEltcGwgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZmxvYXQgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgc3RlbmNpbCkgb3ZlcnJpZGU7CisKKyAgICBHTGVudW0gZ2V0SW1wbGVtZW50YXRpb25D
b2xvclJlYWRGb3JtYXQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBHTGVudW0gZ2V0SW1wbGVtZW50
YXRpb25Db2xvclJlYWRUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHJlYWRQ
aXhlbHMoQ29udGV4dEltcGwgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OlJlY3RhbmdsZSAmYXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
Zm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdm9pZCAqcGl4ZWxzKSBjb25zdCBvdmVycmlkZTsKKworICAgIGds
OjpFcnJvciBibGl0KENvbnRleHRJbXBsICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OlJlY3RhbmdsZSAmZGVzdEFyZWEsCisgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBt
YXNrLAorICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWx0ZXIpIG92ZXJyaWRlOworCisgICAg
Ym9vbCBjaGVja1N0YXR1cygpIGNvbnN0IG92ZXJyaWRlOworCisgICAgdm9pZCBzeW5jU3RhdGUo
Y29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykgb3ZlcnJpZGU7Cit9
OworCit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9W
VUxLQU5fRlJBTUVCVUZGRVJWS19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9JbWFnZVZrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0ltYWdlVmsu
Y3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vSW1hZ2VWay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
NyBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKy8vIEltYWdlVmsuY3BwOgorLy8gICAgSW1wbGVtZW50cyB0aGUgY2xh
c3MgbWV0aG9kcyBmb3IgSW1hZ2VWay4KKy8vCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci92dWxrYW4vSW1hZ2VWay5oIgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK25hbWVz
cGFjZSByeAoreworCitJbWFnZVZrOjpJbWFnZVZrKCkgOiBJbWFnZUltcGwoKQoreworfQorCitJ
bWFnZVZrOjp+SW1hZ2VWaygpCit7Cit9CisKK2VnbDo6RXJyb3IgSW1hZ2VWazo6aW5pdGlhbGl6
ZSgpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9C
QURfQUNDRVNTKTsKK30KKworZ2w6OkVycm9yIEltYWdlVms6Om9ycGhhbihlZ2w6OkltYWdlU2li
bGluZyAqc2libGluZykKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK30gIC8vIG5hbWVzcGFjZSByeApJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9J
bWFnZVZrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL3Z1bGthbi9JbWFnZVZrLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9JbWFnZVZrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwzMCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEltYWdlVmsuaDoKKy8v
ICAgIERlZmluZXMgdGhlIGNsYXNzIGludGVyZmFjZSBmb3IgSW1hZ2VWaywgaW1wbGVtZW50aW5n
IEltYWdlSW1wbC4KKy8vCisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX0lNQUdF
VktfSF8KKyNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX0lNQUdFVktfSF8KKworI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0ltYWdlSW1wbC5oIgorCituYW1lc3BhY2UgcngKK3sK
KworY2xhc3MgSW1hZ2VWayA6IHB1YmxpYyBJbWFnZUltcGwKK3sKKyAgcHVibGljOgorICAgIElt
YWdlVmsoKTsKKyAgICB+SW1hZ2VWaygpIG92ZXJyaWRlOworICAgIGVnbDo6RXJyb3IgaW5pdGlh
bGl6ZSgpIG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIG9ycGhhbihlZ2w6OkltYWdlU2libGlu
ZyAqc2libGluZykgb3ZlcnJpZGU7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlm
ICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5fSU1BR0VWS19IXwpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Qcm9ncmFtVmsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4vUHJvZ3JhbVZrLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Byb2dyYW1Way5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwyMTIgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBQcm9ncmFtVmsuY3Bw
OgorLy8gICAgSW1wbGVtZW50cyB0aGUgY2xhc3MgbWV0aG9kcyBmb3IgUHJvZ3JhbVZrLgorLy8K
KworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Qcm9ncmFtVmsuaCIKKworI2lu
Y2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgcngKK3sKKworUHJvZ3JhbVZrOjpQ
cm9ncmFtVmsoY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmc3RhdGUpIDogUHJvZ3JhbUltcGwoc3Rh
dGUpCit7Cit9CisKK1Byb2dyYW1Wazo6flByb2dyYW1WaygpCit7Cit9CisKK0xpbmtSZXN1bHQg
UHJvZ3JhbVZrOjpsb2FkKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBnbDo6QmluYXJ5SW5wdXRTdHJl
YW0gKnN0cmVhbSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIExpbmtSZXN1
bHQoZmFsc2UsIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworfQorCitnbDo6RXJy
b3IgUHJvZ3JhbVZrOjpzYXZlKGdsOjpCaW5hcnlPdXRwdXRTdHJlYW0gKnN0cmVhbSkKK3sKKyAg
ICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7Cit9CisKK3ZvaWQgUHJvZ3JhbVZrOjpzZXRCaW5hcnlSZXRyaWV2YWJsZUhpbnQoYm9v
bCByZXRyaWV2YWJsZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK0xpbmtSZXN1bHQg
UHJvZ3JhbVZrOjpsaW5rKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsIGdsOjpJbmZvTG9n
ICZpbmZvTG9nKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gTGlua1Jlc3Vs
dChmYWxzZSwgZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Cit9CisKK0dMYm9vbGVh
biBQcm9ncmFtVms6OnZhbGlkYXRlKGNvbnN0IGdsOjpDYXBzICZjYXBzLCBnbDo6SW5mb0xvZyAq
aW5mb0xvZykKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIEdMYm9vbGVhbigp
OworfQorCit2b2lkIFByb2dyYW1Wazo6c2V0VW5pZm9ybTFmdihHTGludCBsb2NhdGlvbiwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9
CisKK3ZvaWQgUHJvZ3JhbVZrOjpzZXRVbmlmb3JtMmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVp
IGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwor
dm9pZCBQcm9ncmFtVms6OnNldFVuaWZvcm0zZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291
bnQsIGNvbnN0IEdMZmxvYXQgKnYpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCit2b2lk
IFByb2dyYW1Wazo6c2V0VW5pZm9ybTRmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwg
Y29uc3QgR0xmbG9hdCAqdikKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgUHJv
Z3JhbVZrOjpzZXRVbmlmb3JtMWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25z
dCBHTGludCAqdikKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgUHJvZ3JhbVZr
OjpzZXRVbmlmb3JtMml2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGlu
dCAqdikKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgUHJvZ3JhbVZrOjpzZXRV
bmlmb3JtM2l2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdikK
K3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgUHJvZ3JhbVZrOjpzZXRVbmlmb3Jt
NGl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdikKK3sKKyAg
ICBVTklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgUHJvZ3JhbVZrOjpzZXRVbmlmb3JtMXVpdihH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2KQoreworICAgIFVO
SU1QTEVNRU5URUQoKTsKK30KKwordm9pZCBQcm9ncmFtVms6OnNldFVuaWZvcm0ydWl2KEdMaW50
IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnYpCit7CisgICAgVU5JTVBM
RU1FTlRFRCgpOworfQorCit2b2lkIFByb2dyYW1Wazo6c2V0VW5pZm9ybTN1aXYoR0xpbnQgbG9j
YXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdikKK3sKKyAgICBVTklNUExFTUVO
VEVEKCk7Cit9CisKK3ZvaWQgUHJvZ3JhbVZrOjpzZXRVbmlmb3JtNHVpdihHTGludCBsb2NhdGlv
biwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2KQoreworICAgIFVOSU1QTEVNRU5URUQo
KTsKK30KKwordm9pZCBQcm9ncmFtVms6OnNldFVuaWZvcm1NYXRyaXgyZnYoR0xpbnQgbG9jYXRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVl
KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwordm9pZCBQcm9ncmFtVms6OnNldFVuaWZv
cm1NYXRyaXgzZnYoR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwor
dm9pZCBQcm9ncmFtVms6OnNldFVuaWZvcm1NYXRyaXg0ZnYoR0xpbnQgbG9jYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQoreworICAg
IFVOSU1QTEVNRU5URUQoKTsKK30KKwordm9pZCBQcm9ncmFtVms6OnNldFVuaWZvcm1NYXRyaXgy
eDNmdihHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCit2
b2lkIFByb2dyYW1Wazo6c2V0VW5pZm9ybU1hdHJpeDN4MmZ2KEdMaW50IGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkK
K3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgUHJvZ3JhbVZrOjpzZXRVbmlmb3Jt
TWF0cml4Mng0ZnYoR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsK
K30KKwordm9pZCBQcm9ncmFtVms6OnNldFVuaWZvcm1NYXRyaXg0eDJmdihHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9z
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
dmFsdWUpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCit2b2lkIFByb2dyYW1Wazo6c2V0
VW5pZm9ybU1hdHJpeDN4NGZ2KEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3sKKyAgICBVTklNUExFTUVO
VEVEKCk7Cit9CisKK3ZvaWQgUHJvZ3JhbVZrOjpzZXRVbmlmb3JtTWF0cml4NHgzZnYoR0xpbnQg
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0
cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnZhbHVlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwordm9pZCBQcm9ncmFt
Vms6OnNldFVuaWZvcm1CbG9ja0JpbmRpbmcoR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHTHVp
bnQgdW5pZm9ybUJsb2NrQmluZGluZykKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK2Jv
b2wgUHJvZ3JhbVZrOjpnZXRVbmlmb3JtQmxvY2tTaXplKGNvbnN0IHN0ZDo6c3RyaW5nICZibG9j
a05hbWUsIHNpemVfdCAqc2l6ZU91dCkgY29uc3QKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cisg
ICAgcmV0dXJuIGJvb2woKTsKK30KKworYm9vbCBQcm9ncmFtVms6OmdldFVuaWZvcm1CbG9ja01l
bWJlckluZm8oY29uc3Qgc3RkOjpzdHJpbmcgJm1lbWJlclVuaWZvcm1OYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2g6OkJsb2NrTWVtYmVySW5mbyAqbWVt
YmVySW5mb091dCkgY29uc3QKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGJv
b2woKTsKK30KKwordm9pZCBQcm9ncmFtVms6OnNldFBhdGhGcmFnbWVudElucHV0R2VuKGNvbnN0
IHN0ZDo6c3RyaW5nICZpbnB1dE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGdlbk1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgY29tcG9uZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpjb2VmZnMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgp
OworfQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUHJvZ3JhbVZrLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Qcm9n
cmFtVmsuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Byb2dyYW1Way5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTAwIEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisvLworLy8gUHJvZ3JhbVZrLmg6CisvLyAgICBEZWZpbmVzIHRoZSBj
bGFzcyBpbnRlcmZhY2UgZm9yIFByb2dyYW1WaywgaW1wbGVtZW50aW5nIFByb2dyYW1JbXBsLgor
Ly8KKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5fUFJPR1JBTVZLX0hfCisjZGVm
aW5lIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9QUk9HUkFNVktfSF8KKworI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL1Byb2dyYW1JbXBsLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFz
cyBQcm9ncmFtVmsgOiBwdWJsaWMgUHJvZ3JhbUltcGwKK3sKKyAgcHVibGljOgorICAgIFByb2dy
YW1Wayhjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZzdGF0ZSk7CisgICAgflByb2dyYW1WaygpIG92
ZXJyaWRlOworCisgICAgTGlua1Jlc3VsdCBsb2FkKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBnbDo6
QmluYXJ5SW5wdXRTdHJlYW0gKnN0cmVhbSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHNhdmUo
Z2w6OkJpbmFyeU91dHB1dFN0cmVhbSAqc3RyZWFtKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEJp
bmFyeVJldHJpZXZhYmxlSGludChib29sIHJldHJpZXZhYmxlKSBvdmVycmlkZTsKKworICAgIExp
bmtSZXN1bHQgbGluayhjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLCBnbDo6SW5mb0xvZyAm
aW5mb0xvZykgb3ZlcnJpZGU7CisgICAgR0xib29sZWFuIHZhbGlkYXRlKGNvbnN0IGdsOjpDYXBz
ICZjYXBzLCBnbDo6SW5mb0xvZyAqaW5mb0xvZykgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNldFVu
aWZvcm0xZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYp
IG92ZXJyaWRlOworICAgIHZvaWQgc2V0VW5pZm9ybTJmdihHTGludCBsb2NhdGlvbiwgR0xzaXpl
aSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRVbmlmb3Jt
M2Z2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KSBvdmVy
cmlkZTsKKyAgICB2b2lkIHNldFVuaWZvcm00ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291
bnQsIGNvbnN0IEdMZmxvYXQgKnYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VW5pZm9ybTFpdihH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc2V0VW5pZm9ybTJpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29u
c3QgR0xpbnQgKnYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VW5pZm9ybTNpdihHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpIG92ZXJyaWRlOworICAgIHZvaWQg
c2V0VW5pZm9ybTRpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQg
KnYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VW5pZm9ybTF1aXYoR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRVbmlm
b3JtMnVpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2KSBv
dmVycmlkZTsKKyAgICB2b2lkIHNldFVuaWZvcm0zdWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVp
IGNvdW50LCBjb25zdCBHTHVpbnQgKnYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VW5pZm9ybTR1
aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzZXRVbmlmb3JtTWF0cml4MmZ2KEdMaW50IGxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRVbmlmb3Jt
TWF0cml4M2Z2KEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJh
bnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1
ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRVbmlmb3JtTWF0cml4NGZ2KEdMaW50IGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZXRVbmlmb3JtTWF0cml4MngzZnYoR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnZhbHVlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFVuaWZvcm1NYXRyaXgz
eDJmdihHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFu
c3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFs
dWUpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VW5pZm9ybU1hdHJpeDJ4NGZ2KEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzZXRVbmlmb3JtTWF0cml4NHgyZnYoR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFVuaWZv
cm1NYXRyaXgzeDRmdihHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xm
bG9hdCAqdmFsdWUpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VW5pZm9ybU1hdHJpeDR4M2Z2KEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkgb3Zl
cnJpZGU7CisKKyAgICAvLyBUT0RPOiBzeW5jaHJvbml6ZSBpbiBzeW5jU3RhdGUgd2hlbiBkaXJ0
eSBiaXRzIGV4aXN0LgorICAgIHZvaWQgc2V0VW5pZm9ybUJsb2NrQmluZGluZyhHTHVpbnQgdW5p
Zm9ybUJsb2NrSW5kZXgsIEdMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKSBvdmVycmlkZTsKKwor
ICAgIC8vIE1heSBvbmx5IGJlIGNhbGxlZCBhZnRlciBhIHN1Y2Nlc3NmdWwgbGluayBvcGVyYXRp
b24uCisgICAgLy8gUmV0dXJuIGZhbHNlIGZvciBpbmFjdGl2ZSBibG9ja3MuCisgICAgYm9vbCBn
ZXRVbmlmb3JtQmxvY2tTaXplKGNvbnN0IHN0ZDo6c3RyaW5nICZibG9ja05hbWUsIHNpemVfdCAq
c2l6ZU91dCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICAvLyBNYXkgb25seSBiZSBjYWxsZWQgYWZ0
ZXIgYSBzdWNjZXNzZnVsIGxpbmsgb3BlcmF0aW9uLgorICAgIC8vIFJldHVybnMgZmFsc2UgZm9y
IGluYWN0aXZlIG1lbWJlcnMuCisgICAgYm9vbCBnZXRVbmlmb3JtQmxvY2tNZW1iZXJJbmZvKGNv
bnN0IHN0ZDo6c3RyaW5nICZtZW1iZXJVbmlmb3JtTmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2g6OkJsb2NrTWVtYmVySW5mbyAqbWVtYmVySW5mb091dCkgY29uc3Qg
b3ZlcnJpZGU7CisKKyAgICB2b2lkIHNldFBhdGhGcmFnbWVudElucHV0R2VuKGNvbnN0IHN0ZDo6
c3RyaW5nICZpbnB1dE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZ2VuTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGNvbXBv
bmVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpj
b2VmZnMpIG92ZXJyaWRlOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8g
TElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX1BST0dSQU1WS19IXwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9RdWVyeVZrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
dnVsa2FuL1F1ZXJ5VmsuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUXVlcnlWay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw3MyBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFF1ZXJ5VmsuY3BwOgorLy8gICAgSW1w
bGVtZW50cyB0aGUgY2xhc3MgbWV0aG9kcyBmb3IgUXVlcnlWay4KKy8vCisKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUXVlcnlWay5oIgorCisjaW5jbHVkZSAiY29tbW9uL2Rl
YnVnLmgiCisKK25hbWVzcGFjZSByeAoreworCitRdWVyeVZrOjpRdWVyeVZrKEdMZW51bSB0eXBl
KSA6IFF1ZXJ5SW1wbCh0eXBlKQoreworfQorCitRdWVyeVZrOjp+UXVlcnlWaygpCit7Cit9CisK
K2dsOjpFcnJvciBRdWVyeVZrOjpiZWdpbigpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3Ig
UXVlcnlWazo6ZW5kKCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBRdWVyeVZrOjpxdWVy
eUNvdW50ZXIoKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIFF1ZXJ5Vms6OmdldFJlc3Vs
dChHTGludCAqcGFyYW1zKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIFF1ZXJ5Vms6Omdl
dFJlc3VsdChHTHVpbnQgKnBhcmFtcykKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBRdWVy
eVZrOjpnZXRSZXN1bHQoR0xpbnQ2NCAqcGFyYW1zKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsK
KyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVy
cm9yIFF1ZXJ5Vms6OmdldFJlc3VsdChHTHVpbnQ2NCAqcGFyYW1zKQoreworICAgIFVOSU1QTEVN
RU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30K
KworZ2w6OkVycm9yIFF1ZXJ5Vms6OmlzUmVzdWx0QXZhaWxhYmxlKGJvb2wgKmF2YWlsYWJsZSkK
K3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7Cit9CisKK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9RdWVyeVZrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1
bGthbi9RdWVyeVZrLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9RdWVyeVZrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwzNiBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFF1ZXJ5VmsuaDoKKy8vICAgIERlZmluZXMgdGhl
IGNsYXNzIGludGVyZmFjZSBmb3IgUXVlcnlWaywgaW1wbGVtZW50aW5nIFF1ZXJ5SW1wbC4KKy8v
CisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX1FVRVJZVktfSF8KKyNkZWZpbmUg
TElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX1FVRVJZVktfSF8KKworI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL1F1ZXJ5SW1wbC5oIgorCituYW1lc3BhY2UgcngKK3sKKworY2xhc3MgUXVlcnlW
ayA6IHB1YmxpYyBRdWVyeUltcGwKK3sKKyAgcHVibGljOgorICAgIFF1ZXJ5VmsoR0xlbnVtIHR5
cGUpOworICAgIH5RdWVyeVZrKCkgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJyb3IgYmVnaW4oKSBv
dmVycmlkZTsKKyAgICBnbDo6RXJyb3IgZW5kKCkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHF1
ZXJ5Q291bnRlcigpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBnZXRSZXN1bHQoR0xpbnQgKnBh
cmFtcykgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGdldFJlc3VsdChHTHVpbnQgKnBhcmFtcykg
b3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGdldFJlc3VsdChHTGludDY0ICpwYXJhbXMpIG92ZXJy
aWRlOworICAgIGdsOjpFcnJvciBnZXRSZXN1bHQoR0x1aW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7
CisgICAgZ2w6OkVycm9yIGlzUmVzdWx0QXZhaWxhYmxlKGJvb2wgKmF2YWlsYWJsZSkgb3ZlcnJp
ZGU7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5E
RVJFUl9WVUxLQU5fUVVFUllWS19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJidWZmZXJWay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9S
ZW5kZXJidWZmZXJWay5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJidWZmZXJWay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFJlbmRlcmJ1ZmZlclZrLmNw
cDoKKy8vICAgIEltcGxlbWVudHMgdGhlIGNsYXNzIG1ldGhvZHMgZm9yIFJlbmRlcmJ1ZmZlclZr
LgorLy8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJidWZmZXJW
ay5oIgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK25hbWVzcGFjZSByeAoreworCitS
ZW5kZXJidWZmZXJWazo6UmVuZGVyYnVmZmVyVmsoKSA6IFJlbmRlcmJ1ZmZlckltcGwoKQorewor
fQorCitSZW5kZXJidWZmZXJWazo6flJlbmRlcmJ1ZmZlclZrKCkKK3sKK30KKworZ2w6OkVycm9y
IFJlbmRlcmJ1ZmZlclZrOjpzZXRTdG9yYWdlKEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgc2l6ZV90
IHdpZHRoLCBzaXplX3QgaGVpZ2h0KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIFJlbmRl
cmJ1ZmZlclZrOjpzZXRTdG9yYWdlTXVsdGlzYW1wbGUoc2l6ZV90IHNhbXBsZXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxm
b3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaGVpZ2h0KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIFJlbmRlcmJ1
ZmZlclZrOjpzZXRTdG9yYWdlRUdMSW1hZ2VUYXJnZXQoZWdsOjpJbWFnZSAqaW1hZ2UpCit7Cisg
ICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOworfQorCitnbDo6RXJyb3IgUmVuZGVyYnVmZmVyVms6OmdldEF0dGFjaG1lbnRSZW5k
ZXJUYXJnZXQoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJh
bWVidWZmZXJBdHRhY2htZW50UmVuZGVyVGFyZ2V0ICoqcnRPdXQpCit7CisgICAgVU5JTVBMRU1F
TlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQor
Cit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyYnVmZmVyVmsuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRl
cmJ1ZmZlclZrLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJidWZmZXJWay5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMzcgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBSZW5kZXJidWZmZXJWay5oOgorLy8gICAg
RGVmaW5lcyB0aGUgY2xhc3MgaW50ZXJmYWNlIGZvciBSZW5kZXJidWZmZXJWaywgaW1wbGVtZW50
aW5nIFJlbmRlcmJ1ZmZlckltcGwuCisvLworCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX1ZV
TEtBTl9SRU5ERVJCVUZGRVJWS19IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5f
UkVOREVSQlVGRkVSVktfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1JlbmRlcmJ1
ZmZlckltcGwuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIFJlbmRlcmJ1ZmZlclZrIDog
cHVibGljIFJlbmRlcmJ1ZmZlckltcGwKK3sKKyAgcHVibGljOgorICAgIFJlbmRlcmJ1ZmZlclZr
KCk7CisgICAgflJlbmRlcmJ1ZmZlclZrKCkgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJyb3Igc2V0
U3RvcmFnZShHTGVudW0gaW50ZXJuYWxmb3JtYXQsIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdo
dCkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHNldFN0b3JhZ2VNdWx0aXNhbXBsZShzaXplX3Qg
c2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRl
cm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB3
aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQp
IG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBzZXRTdG9yYWdlRUdMSW1hZ2VUYXJnZXQoZWdsOjpJ
bWFnZSAqaW1hZ2UpIG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIGdldEF0dGFjaG1lbnRSZW5k
ZXJUYXJnZXQoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJBdHRh
Y2htZW50UmVuZGVyVGFyZ2V0ICoqcnRPdXQpIG92ZXJyaWRlOworfTsKKworfSAgLy8gbmFtZXNw
YWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX1JFTkRFUkJVRkZF
UlZLX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvdnVsa2FuL1JlbmRlcmVyVmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyZXJWay5jcHAJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9SZW5kZXJlclZrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY2IEBACisv
LworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworLy8gUmVuZGVyZXJWay5jcHA6CisvLyAgICBJbXBsZW1lbnRzIHRoZSBjbGFzcyBt
ZXRob2RzIGZvciBSZW5kZXJlclZrLgorLy8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9SZW5kZXJlclZrLmgiCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKworbmFt
ZXNwYWNlIHJ4Cit7CisKK1JlbmRlcmVyVms6OlJlbmRlcmVyVmsoKSA6IG1DYXBzSW5pdGlhbGl6
ZWQoZmFsc2UpCit7Cit9CisKK1JlbmRlcmVyVms6On5SZW5kZXJlclZrKCkKK3sKK30KKwordm9p
ZCBSZW5kZXJlclZrOjplbnN1cmVDYXBzSW5pdGlhbGl6ZWQoKSBjb25zdAoreworICAgIGlmICgh
bUNhcHNJbml0aWFsaXplZCkKKyAgICB7CisgICAgICAgIGdlbmVyYXRlQ2FwcygmbU5hdGl2ZUNh
cHMsICZtTmF0aXZlVGV4dHVyZUNhcHMsICZtTmF0aXZlRXh0ZW5zaW9ucywgJm1OYXRpdmVMaW1p
dGF0aW9ucyk7CisgICAgICAgIG1DYXBzSW5pdGlhbGl6ZWQgPSB0cnVlOworICAgIH0KK30KKwor
dm9pZCBSZW5kZXJlclZrOjpnZW5lcmF0ZUNhcHMoZ2w6OkNhcHMgKiAvKm91dENhcHMqLywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlQ2Fwc01hcCAqIC8qb3V0VGV4
dHVyZUNhcHMqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpFeHRlbnNpb25z
ICogLypvdXRFeHRlbnNpb25zKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6
TGltaXRhdGlvbnMgKiAvKiBvdXRMaW1pdGF0aW9ucyAqLykgY29uc3QKK3sKKyAgICAvLyBUT0RP
KGptYWRpbGwpOiBDYXBzCit9CisKK2NvbnN0IGdsOjpDYXBzICZSZW5kZXJlclZrOjpnZXROYXRp
dmVDYXBzKCkgY29uc3QKK3sKKyAgICBlbnN1cmVDYXBzSW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1
cm4gbU5hdGl2ZUNhcHM7Cit9CisKK2NvbnN0IGdsOjpUZXh0dXJlQ2Fwc01hcCAmUmVuZGVyZXJW
azo6Z2V0TmF0aXZlVGV4dHVyZUNhcHMoKSBjb25zdAoreworICAgIGVuc3VyZUNhcHNJbml0aWFs
aXplZCgpOworICAgIHJldHVybiBtTmF0aXZlVGV4dHVyZUNhcHM7Cit9CisKK2NvbnN0IGdsOjpF
eHRlbnNpb25zICZSZW5kZXJlclZrOjpnZXROYXRpdmVFeHRlbnNpb25zKCkgY29uc3QKK3sKKyAg
ICBlbnN1cmVDYXBzSW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbU5hdGl2ZUV4dGVuc2lvbnM7
Cit9CisKK2NvbnN0IGdsOjpMaW1pdGF0aW9ucyAmUmVuZGVyZXJWazo6Z2V0TmF0aXZlTGltaXRh
dGlvbnMoKSBjb25zdAoreworICAgIGVuc3VyZUNhcHNJbml0aWFsaXplZCgpOworICAgIHJldHVy
biBtTmF0aXZlTGltaXRhdGlvbnM7Cit9CisKK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJl
clZrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJlclZrLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJlclZrLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NiBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFJlbmRlcmVyVmsu
aDoKKy8vICAgIERlZmluZXMgdGhlIGNsYXNzIGludGVyZmFjZSBmb3IgUmVuZGVyZXJWay4KKy8v
CisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX1JFTkRFUkVSVktfSF8KKyNkZWZp
bmUgTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX1JFTkRFUkVSVktfSF8KKworI2luY2x1ZGUgImNv
bW1vbi9hbmdsZXV0aWxzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvQ2Fwcy5oIgorCituYW1lc3Bh
Y2UgcngKK3sKKworY2xhc3MgUmVuZGVyZXJWayA6IGFuZ2xlOjpOb25Db3B5YWJsZQoreworICBw
dWJsaWM6CisgICAgUmVuZGVyZXJWaygpOworICAgIH5SZW5kZXJlclZrKCk7CisKKyAgICBjb25z
dCBnbDo6Q2FwcyAmZ2V0TmF0aXZlQ2FwcygpIGNvbnN0OworICAgIGNvbnN0IGdsOjpUZXh0dXJl
Q2Fwc01hcCAmZ2V0TmF0aXZlVGV4dHVyZUNhcHMoKSBjb25zdDsKKyAgICBjb25zdCBnbDo6RXh0
ZW5zaW9ucyAmZ2V0TmF0aXZlRXh0ZW5zaW9ucygpIGNvbnN0OworICAgIGNvbnN0IGdsOjpMaW1p
dGF0aW9ucyAmZ2V0TmF0aXZlTGltaXRhdGlvbnMoKSBjb25zdDsKKworICBwcml2YXRlOgorICAg
IHZvaWQgZW5zdXJlQ2Fwc0luaXRpYWxpemVkKCkgY29uc3Q7CisgICAgdm9pZCBnZW5lcmF0ZUNh
cHMoZ2w6OkNhcHMgKm91dENhcHMsCisgICAgICAgICAgICAgICAgICAgICAgZ2w6OlRleHR1cmVD
YXBzTWFwICpvdXRUZXh0dXJlQ2FwcywKKyAgICAgICAgICAgICAgICAgICAgICBnbDo6RXh0ZW5z
aW9ucyAqb3V0RXh0ZW5zaW9ucywKKyAgICAgICAgICAgICAgICAgICAgICBnbDo6TGltaXRhdGlv
bnMgKm91dExpbWl0YXRpb25zKSBjb25zdDsKKworICAgIG11dGFibGUgYm9vbCBtQ2Fwc0luaXRp
YWxpemVkOworICAgIG11dGFibGUgZ2w6OkNhcHMgbU5hdGl2ZUNhcHM7CisgICAgbXV0YWJsZSBn
bDo6VGV4dHVyZUNhcHNNYXAgbU5hdGl2ZVRleHR1cmVDYXBzOworICAgIG11dGFibGUgZ2w6OkV4
dGVuc2lvbnMgbU5hdGl2ZUV4dGVuc2lvbnM7CisgICAgbXV0YWJsZSBnbDo6TGltaXRhdGlvbnMg
bU5hdGl2ZUxpbWl0YXRpb25zOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAg
Ly8gTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX1JFTkRFUkVSVktfSF8KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU2FtcGxlclZrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvdnVsa2FuL1NhbXBsZXJWay5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TYW1wbGVyVmsuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjUgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBTYW1wbGVyVmsuY3Bw
OgorLy8gICAgSW1wbGVtZW50cyB0aGUgY2xhc3MgbWV0aG9kcyBmb3IgU2FtcGxlclZrLgorLy8K
KworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TYW1wbGVyVmsuaCIKKworI2lu
Y2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgcngKK3sKKworU2FtcGxlclZrOjpT
YW1wbGVyVmsoKSA6IFNhbXBsZXJJbXBsKCkKK3sKK30KKworU2FtcGxlclZrOjp+U2FtcGxlclZr
KCkKK3sKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1NhbXBsZXJWay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
U2FtcGxlclZrLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TYW1wbGVyVmsuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDI3IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gU2FtcGxlclZrLmg6CisvLyAgICBEZWZpbmVzIHRo
ZSBjbGFzcyBpbnRlcmZhY2UgZm9yIFNhbXBsZXJWaywgaW1wbGVtZW50aW5nIFNhbXBsZXJJbXBs
LgorLy8KKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5fU0FNUExFUlZLX0hfCisj
ZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9TQU1QTEVSVktfSF8KKworI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL1NhbXBsZXJJbXBsLmgiCisKK25hbWVzcGFjZSByeAoreworCitj
bGFzcyBTYW1wbGVyVmsgOiBwdWJsaWMgU2FtcGxlckltcGwKK3sKKyAgcHVibGljOgorICAgIFNh
bXBsZXJWaygpOworICAgIH5TYW1wbGVyVmsoKSBvdmVycmlkZTsKK307CisKK30gIC8vIG5hbWVz
cGFjZSByeAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9TQU1QTEVSVktf
SF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92
dWxrYW4vU2hhZGVyVmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU2hhZGVyVmsuY3BwCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
U2hhZGVyVmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8vCisvLyBDb3B5
cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisv
LyBTaGFkZXJWay5jcHA6CisvLyAgICBJbXBsZW1lbnRzIHRoZSBjbGFzcyBtZXRob2RzIGZvciBT
aGFkZXJWay4KKy8vCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU2hhZGVy
VmsuaCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgcngKK3sKKwor
U2hhZGVyVms6OlNoYWRlclZrKGNvbnN0IGdsOjpTaGFkZXJTdGF0ZSAmZGF0YSkgOiBTaGFkZXJJ
bXBsKGRhdGEpCit7Cit9CisKK1NoYWRlclZrOjp+U2hhZGVyVmsoKQoreworfQorCitTaENvbXBp
bGVPcHRpb25zIFNoYWRlclZrOjpwcmVwYXJlU291cmNlQW5kUmV0dXJuT3B0aW9ucyhzdGQ6OnN0
cmluZ3N0cmVhbSAqc291cmNlU3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgKnNvdXJjZVBhdGgpCit7Cisg
ICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBpbnQoKTsKK30KKworYm9vbCBTaGFkZXJW
azo6cG9zdFRyYW5zbGF0ZUNvbXBpbGUoZ2w6OkNvbXBpbGVyICpjb21waWxlciwgc3RkOjpzdHJp
bmcgKmluZm9Mb2cpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBib29sKCk7
Cit9CisKK3N0ZDo6c3RyaW5nIFNoYWRlclZrOjpnZXREZWJ1Z0luZm8oKSBjb25zdAoreworICAg
IFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKK30KKworfSAgLy8g
bmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvdnVsa2FuL1NoYWRlclZrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TaGFkZXJWay5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92
dWxrYW4vU2hhZGVyVmsuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1IEBACisvLworLy8g
Q29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworLy8gU2hhZGVyVmsuaDoKKy8vICAgIERlZmluZXMgdGhlIGNsYXNzIGludGVyZmFjZSBmb3Ig
U2hhZGVyVmssIGltcGxlbWVudGluZyBTaGFkZXJJbXBsLgorLy8KKworI2lmbmRlZiBMSUJBTkdM
RV9SRU5ERVJFUl9WVUxLQU5fU0hBREVSVktfSF8KKyNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJf
VlVMS0FOX1NIQURFUlZLX0hfCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9TaGFkZXJJ
bXBsLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBTaGFkZXJWayA6IHB1YmxpYyBTaGFk
ZXJJbXBsCit7CisgIHB1YmxpYzoKKyAgICBTaGFkZXJWayhjb25zdCBnbDo6U2hhZGVyU3RhdGUg
JmRhdGEpOworICAgIH5TaGFkZXJWaygpIG92ZXJyaWRlOworCisgICAgLy8gUmV0dXJucyBhZGRp
dGlvbmFsIFNoQ29tcGlsZSBvcHRpb25zLgorICAgIFNoQ29tcGlsZU9wdGlvbnMgcHJlcGFyZVNv
dXJjZUFuZFJldHVybk9wdGlvbnMoc3RkOjpzdHJpbmdzdHJlYW0gKnNvdXJjZVN0cmVhbSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3Ry
aW5nICpzb3VyY2VQYXRoKSBvdmVycmlkZTsKKyAgICAvLyBSZXR1cm5zIHN1Y2Nlc3MgZm9yIGNv
bXBpbGluZyBvbiB0aGUgZHJpdmVyLiBSZXR1cm5zIHN1Y2Nlc3MuCisgICAgYm9vbCBwb3N0VHJh
bnNsYXRlQ29tcGlsZShnbDo6Q29tcGlsZXIgKmNvbXBpbGVyLCBzdGQ6OnN0cmluZyAqaW5mb0xv
Zykgb3ZlcnJpZGU7CisKKyAgICBzdGQ6OnN0cmluZyBnZXREZWJ1Z0luZm8oKSBjb25zdCBvdmVy
cmlkZTsKK307CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JF
TkRFUkVSX1ZVTEtBTl9TSEFERVJWS19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TdXJmYWNlVmsuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU3Vy
ZmFjZVZrLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1N1cmZhY2VWay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMDkgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBTdXJmYWNlVmsuY3BwOgorLy8gICAgSW1wbGVt
ZW50cyB0aGUgY2xhc3MgbWV0aG9kcyBmb3IgU3VyZmFjZVZrLgorLy8KKworI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TdXJmYWNlVmsuaCIKKworI2luY2x1ZGUgImNvbW1vbi9k
ZWJ1Zy5oIgorCituYW1lc3BhY2UgcngKK3sKKworU3VyZmFjZVZrOjpTdXJmYWNlVmsoY29uc3Qg
ZWdsOjpTdXJmYWNlU3RhdGUgJnN1cmZhY2VTdGF0ZSkgOiBTdXJmYWNlSW1wbChzdXJmYWNlU3Rh
dGUpCit7Cit9CisKK1N1cmZhY2VWazo6flN1cmZhY2VWaygpCit7Cit9CisKK2VnbDo6RXJyb3Ig
U3VyZmFjZVZrOjppbml0aWFsaXplKCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0
dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BQ0NFU1MpOworfQorCitGcmFtZWJ1ZmZlckltcGwgKlN1
cmZhY2VWazo6Y3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0
YXRlICZzdGF0ZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEZyYW1lYnVmZmVySW1wbCAqPigwKTsKK30KKworZWdsOjpFcnJvciBTdXJmYWNlVms6OnN3
YXAoKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xf
QkFEX0FDQ0VTUyk7Cit9CisKK2VnbDo6RXJyb3IgU3VyZmFjZVZrOjpwb3N0U3ViQnVmZmVyKEVH
TGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KQoreworICAgIFVO
SU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FDQ0VTUyk7Cit9
CisKK2VnbDo6RXJyb3IgU3VyZmFjZVZrOjpxdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUoRUdMaW50
IGF0dHJpYnV0ZSwgdm9pZCAqKnZhbHVlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICBy
ZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FDQ0VTUyk7Cit9CisKK2VnbDo6RXJyb3IgU3VyZmFj
ZVZrOjpiaW5kVGV4SW1hZ2UoZ2w6OlRleHR1cmUgKnRleHR1cmUsIEVHTGludCBidWZmZXIpCit7
CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfQUND
RVNTKTsKK30KKworZWdsOjpFcnJvciBTdXJmYWNlVms6OnJlbGVhc2VUZXhJbWFnZShFR0xpbnQg
YnVmZmVyKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZWdsOjpFcnJvcihF
R0xfQkFEX0FDQ0VTUyk7Cit9CisKK2VnbDo6RXJyb3IgU3VyZmFjZVZrOjpnZXRTeW5jVmFsdWVz
KEVHTHVpbnQ2NEtIUiAqdXN0LCBFR0x1aW50NjRLSFIgKm1zYywgRUdMdWludDY0S0hSICpzYmMp
Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURf
QUNDRVNTKTsKK30KKwordm9pZCBTdXJmYWNlVms6OnNldFN3YXBJbnRlcnZhbChFR0xpbnQgaW50
ZXJ2YWwpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCitFR0xpbnQgU3VyZmFjZVZrOjpn
ZXRXaWR0aCgpIGNvbnN0Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBFR0xp
bnQoKTsKK30KKworRUdMaW50IFN1cmZhY2VWazo6Z2V0SGVpZ2h0KCkgY29uc3QKK3sKKyAgICBV
TklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIEVHTGludCgpOworfQorCitFR0xpbnQgU3VyZmFj
ZVZrOjppc1Bvc3RTdWJCdWZmZXJTdXBwb3J0ZWQoKSBjb25zdAoreworICAgIFVOSU1QTEVNRU5U
RUQoKTsKKyAgICByZXR1cm4gRUdMaW50KCk7Cit9CisKK0VHTGludCBTdXJmYWNlVms6OmdldFN3
YXBCZWhhdmlvcigpIGNvbnN0Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBF
R0xpbnQoKTsKK30KKworZ2w6OkVycm9yIFN1cmZhY2VWazo6Z2V0QXR0YWNobWVudFJlbmRlclRh
cmdldChjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50OjpUYXJnZXQgJnRhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJB
dHRhY2htZW50UmVuZGVyVGFyZ2V0ICoqcnRPdXQpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCit9ICAvLyBu
YW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vU3VyZmFjZVZrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TdXJmYWNlVmsuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
dnVsa2FuL1N1cmZhY2VWay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcgQEAKKy8vCisv
LyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisvLyBTdXJmYWNlVmsuaDoKKy8vICAgIERlZmluZXMgdGhlIGNsYXNzIGludGVyZmFjZSBm
b3IgU3VyZmFjZVZrLCBpbXBsZW1lbnRpbmcgU3VyZmFjZUltcGwuCisvLworCisjaWZuZGVmIExJ
QkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9TVVJGQUNFVktfSF8KKyNkZWZpbmUgTElCQU5HTEVfUkVO
REVSRVJfVlVMS0FOX1NVUkZBQ0VWS19IXworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
U3VyZmFjZUltcGwuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIFN1cmZhY2VWayA6IHB1
YmxpYyBTdXJmYWNlSW1wbAoreworICBwdWJsaWM6CisgICAgU3VyZmFjZVZrKGNvbnN0IGVnbDo6
U3VyZmFjZVN0YXRlICZzdXJmYWNlU3RhdGUpOworICAgIH5TdXJmYWNlVmsoKSBvdmVycmlkZTsK
KworICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOworICAgIEZyYW1lYnVmZmVy
SW1wbCAqY3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRl
ICZzdGF0ZSkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBzd2FwKCkgb3ZlcnJpZGU7CisgICAg
ZWdsOjpFcnJvciBwb3N0U3ViQnVmZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRo
LCBFR0xpbnQgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIHF1ZXJ5U3VyZmFjZVBv
aW50ZXJBTkdMRShFR0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUpIG92ZXJyaWRlOworICAg
IGVnbDo6RXJyb3IgYmluZFRleEltYWdlKGdsOjpUZXh0dXJlICp0ZXh0dXJlLCBFR0xpbnQgYnVm
ZmVyKSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIHJlbGVhc2VUZXhJbWFnZShFR0xpbnQgYnVm
ZmVyKSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIGdldFN5bmNWYWx1ZXMoRUdMdWludDY0S0hS
ICp1c3QsIEVHTHVpbnQ2NEtIUiAqbXNjLCBFR0x1aW50NjRLSFIgKnNiYykgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzZXRTd2FwSW50ZXJ2YWwoRUdMaW50IGludGVydmFsKSBvdmVycmlkZTsKKworICAg
IC8vIHdpZHRoIGFuZCBoZWlnaHQgY2FuIGNoYW5nZSB3aXRoIGNsaWVudCB3aW5kb3cgcmVzaXpp
bmcKKyAgICBFR0xpbnQgZ2V0V2lkdGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICBFR0xpbnQgZ2V0
SGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBFR0xpbnQgaXNQb3N0U3ViQnVmZmVyU3Vw
cG9ydGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRUdMaW50IGdldFN3YXBCZWhhdmlvcigpIGNv
bnN0IG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIGdldEF0dGFjaG1lbnRSZW5kZXJUYXJnZXQo
Y29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJBdHRhY2htZW50UmVu
ZGVyVGFyZ2V0ICoqcnRPdXQpIG92ZXJyaWRlOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJ4CisK
KyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX1NVUkZBQ0VWS19IXwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9UZXh0
dXJlVmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vVGV4dHVyZVZrLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1RleHR1cmVW
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNTAgQEAKKy8vCisvLyBDb3B5cmlnaHQg
MjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBUZXh0
dXJlVmsuY3BwOgorLy8gICAgSW1wbGVtZW50cyB0aGUgY2xhc3MgbWV0aG9kcyBmb3IgVGV4dHVy
ZVZrLgorLy8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9UZXh0dXJlVmsu
aCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgcngKK3sKKworVGV4
dHVyZVZrOjpUZXh0dXJlVmsoY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmc3RhdGUpIDogVGV4dHVy
ZUltcGwoc3RhdGUpCit7Cit9CisKK1RleHR1cmVWazo6flRleHR1cmVWaygpCit7Cit9CisKK2ds
OjpFcnJvciBUZXh0dXJlVms6OnNldEltYWdlKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0
YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90
ICpwaXhlbHMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgVGV4dHVyZVZrOjpzZXRTdWJJ
bWFnZShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJv
eCAmYXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBh
Y2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhl
bHMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgVGV4dHVyZVZrOjpzZXRDb21wcmVzc2Vk
SW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGltYWdlU2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpw
aXhlbHMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgVGV4dHVyZVZrOjpzZXRDb21wcmVz
c2VkU3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmYXJlYSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBh
Y2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlt
YWdlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB1aW50OF90ICpwaXhlbHMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgVGV4dHVyZVZr
Ojpjb3B5SW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2UpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3Ig
VGV4dHVyZVZrOjpjb3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNl
KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIFRleHR1cmVWazo6c2V0U3RvcmFnZShHTGVu
dW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWxz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXpl
KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIFRleHR1cmVWazo6c2V0RUdMSW1hZ2VUYXJn
ZXQoR0xlbnVtIHRhcmdldCwgZWdsOjpJbWFnZSAqaW1hZ2UpCit7CisgICAgVU5JTVBMRU1FTlRF
RCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitn
bDo6RXJyb3IgVGV4dHVyZVZrOjpzZXRJbWFnZUV4dGVybmFsKEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3RyZWFtICpzdHJlYW0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6U3RyZWFtOjpH
TFRleHR1cmVEZXNjcmlwdGlvbiAmZGVzYykKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBU
ZXh0dXJlVms6OmdlbmVyYXRlTWlwbWFwKCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK3ZvaWQgVGV4dHVy
ZVZrOjpzZXRCYXNlTGV2ZWwoR0x1aW50IGJhc2VMZXZlbCkKK3sKKyAgICBVTklNUExFTUVOVEVE
KCk7Cit9CisKK3ZvaWQgVGV4dHVyZVZrOjpiaW5kVGV4SW1hZ2UoZWdsOjpTdXJmYWNlICpzdXJm
YWNlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwordm9pZCBUZXh0dXJlVms6OnJlbGVh
c2VUZXhJbWFnZSgpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCitnbDo6RXJyb3IgVGV4
dHVyZVZrOjpnZXRBdHRhY2htZW50UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0
dGFjaG1lbnQ6OlRhcmdldCAmdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQgKipydE91
dCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7Cit9CisKK3ZvaWQgVGV4dHVyZVZrOjpzeW5jU3RhdGUoY29uc3QgZ2w6
OlRleHR1cmU6OkRpcnR5Qml0cyAmZGlydHlCaXRzKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsK
K30KKworfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1RleHR1cmVWay5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVGV4dHVy
ZVZrLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL3Z1bGthbi9UZXh0dXJlVmsuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDkyIEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisvLworLy8gVGV4dHVyZVZrLmg6CisvLyAgICBEZWZpbmVzIHRoZSBjbGFz
cyBpbnRlcmZhY2UgZm9yIFRleHR1cmVWaywgaW1wbGVtZW50aW5nIFRleHR1cmVJbXBsLgorLy8K
KworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5fVEVYVFVSRVZLX0hfCisjZGVmaW5l
IExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9URVhUVVJFVktfSF8KKworI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL1RleHR1cmVJbXBsLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBU
ZXh0dXJlVmsgOiBwdWJsaWMgVGV4dHVyZUltcGwKK3sKKyAgcHVibGljOgorICAgIFRleHR1cmVW
ayhjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZzdGF0ZSk7CisgICAgflRleHR1cmVWaygpIG92ZXJy
aWRlOworCisgICAgZ2w6OkVycm9yIHNldEltYWdlKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50
cyAmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHNldFN1YkltYWdl
KEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmYXJlYSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhl
bFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVp
bnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJyb3Igc2V0Q29tcHJlc3NlZElt
YWdlKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJu
YWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0
ZW50cyAmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQ
aXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgaW1hZ2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3Igc2V0Q29tcHJlc3Nl
ZFN1YkltYWdlKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6Qm94ICZhcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaW1hZ2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJv
ciBjb3B5SW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNv
dXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQs
CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZSkg
b3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGNvcHlTdWJJbWFnZShHTGVudW0gdGFyZ2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZSkgb3ZlcnJpZGU7CisK
KyAgICBnbDo6RXJyb3Igc2V0U3RvcmFnZShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBsZXZlbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRl
bnRzICZzaXplKSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBzZXRFR0xJbWFnZVRhcmdldChH
TGVudW0gdGFyZ2V0LCBlZ2w6OkltYWdlICppbWFnZSkgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJy
b3Igc2V0SW1hZ2VFeHRlcm5hbChHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVnbDo6U3RyZWFtICpzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZWdsOjpTdHJlYW06OkdMVGV4dHVyZURlc2NyaXB0aW9uICZkZXNjKSBvdmVy
cmlkZTsKKworICAgIGdsOjpFcnJvciBnZW5lcmF0ZU1pcG1hcCgpIG92ZXJyaWRlOworCisgICAg
dm9pZCBzZXRCYXNlTGV2ZWwoR0x1aW50IGJhc2VMZXZlbCkgb3ZlcnJpZGU7CisKKyAgICB2b2lk
IGJpbmRUZXhJbWFnZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpIG92ZXJyaWRlOworICAgIHZvaWQg
cmVsZWFzZVRleEltYWdlKCkgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJyb3IgZ2V0QXR0YWNobWVu
dFJlbmRlclRhcmdldChjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50OjpUYXJnZXQgJnRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQgKipydE91dCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHN5
bmNTdGF0ZShjb25zdCBnbDo6VGV4dHVyZTo6RGlydHlCaXRzICZkaXJ0eUJpdHMpIG92ZXJyaWRl
OworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVS
RVJfVlVMS0FOX1RFWFRVUkVWS19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9UcmFuc2Zvcm1GZWVkYmFja1ZrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVs
a2FuL1RyYW5zZm9ybUZlZWRiYWNrVmsuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVHJhbnNmb3JtRmVlZGJh
Y2tWay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NyBAQAorLy8KKy8vIENvcHlyaWdo
dCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFRy
YW5zZm9ybUZlZWRiYWNrVmsuY3BwOgorLy8gICAgSW1wbGVtZW50cyB0aGUgY2xhc3MgbWV0aG9k
cyBmb3IgVHJhbnNmb3JtRmVlZGJhY2tWay4KKy8vCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4vVHJhbnNmb3JtRmVlZGJhY2tWay5oIgorCisjaW5jbHVkZSAiY29tbW9uL2Rl
YnVnLmgiCisKK25hbWVzcGFjZSByeAoreworCitUcmFuc2Zvcm1GZWVkYmFja1ZrOjpUcmFuc2Zv
cm1GZWVkYmFja1ZrKGNvbnN0IGdsOjpUcmFuc2Zvcm1GZWVkYmFja1N0YXRlICZzdGF0ZSkKKyAg
ICA6IFRyYW5zZm9ybUZlZWRiYWNrSW1wbChzdGF0ZSkKK3sKK30KKworVHJhbnNmb3JtRmVlZGJh
Y2tWazo6flRyYW5zZm9ybUZlZWRiYWNrVmsoKQoreworfQorCit2b2lkIFRyYW5zZm9ybUZlZWRi
YWNrVms6OmJlZ2luKEdMZW51bSBwcmltaXRpdmVNb2RlKQoreworICAgIFVOSU1QTEVNRU5URUQo
KTsKK30KKwordm9pZCBUcmFuc2Zvcm1GZWVkYmFja1ZrOjplbmQoKQoreworICAgIFVOSU1QTEVN
RU5URUQoKTsKK30KKwordm9pZCBUcmFuc2Zvcm1GZWVkYmFja1ZrOjpwYXVzZSgpCit7CisgICAg
VU5JTVBMRU1FTlRFRCgpOworfQorCit2b2lkIFRyYW5zZm9ybUZlZWRiYWNrVms6OnJlc3VtZSgp
Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCit2b2lkIFRyYW5zZm9ybUZlZWRiYWNrVms6
OmJpbmRHZW5lcmljQnVmZmVyKGNvbnN0IEJpbmRpbmdQb2ludGVyPGdsOjpCdWZmZXI+ICZiaW5k
aW5nKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwordm9pZCBUcmFuc2Zvcm1GZWVkYmFj
a1ZrOjpiaW5kSW5kZXhlZEJ1ZmZlcihzaXplX3QgaW5kZXgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE9mZnNldEJpbmRpbmdQb2ludGVyPGdsOjpC
dWZmZXI+ICZiaW5kaW5nKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKworfSAgLy8gbmFt
ZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvdnVsa2FuL1RyYW5zZm9ybUZlZWRiYWNrVmsuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1RyYW5zZm9ybUZl
ZWRiYWNrVmsuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1RyYW5zZm9ybUZlZWRiYWNrVmsuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDM1IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gVHJhbnNmb3JtRmVlZGJhY2tWay5o
OgorLy8gICAgRGVmaW5lcyB0aGUgY2xhc3MgaW50ZXJmYWNlIGZvciBUcmFuc2Zvcm1GZWVkYmFj
a1ZrLCBpbXBsZW1lbnRpbmcgVHJhbnNmb3JtRmVlZGJhY2tJbXBsLgorLy8KKworI2lmbmRlZiBM
SUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5fVFJBTlNGT1JNRkVFREJBQ0tWS19IXworI2RlZmluZSBM
SUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5fVFJBTlNGT1JNRkVFREJBQ0tWS19IXworCisjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvVHJhbnNmb3JtRmVlZGJhY2tJbXBsLmgiCisKK25hbWVzcGFj
ZSByeAoreworCitjbGFzcyBUcmFuc2Zvcm1GZWVkYmFja1ZrIDogcHVibGljIFRyYW5zZm9ybUZl
ZWRiYWNrSW1wbAoreworICBwdWJsaWM6CisgICAgVHJhbnNmb3JtRmVlZGJhY2tWayhjb25zdCBn
bDo6VHJhbnNmb3JtRmVlZGJhY2tTdGF0ZSAmc3RhdGUpOworICAgIH5UcmFuc2Zvcm1GZWVkYmFj
a1ZrKCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGJlZ2luKEdMZW51bSBwcmltaXRpdmVNb2RlKSBv
dmVycmlkZTsKKyAgICB2b2lkIGVuZCgpIG92ZXJyaWRlOworICAgIHZvaWQgcGF1c2UoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHJlc3VtZSgpIG92ZXJyaWRlOworCisgICAgdm9pZCBiaW5kR2VuZXJp
Y0J1ZmZlcihjb25zdCBCaW5kaW5nUG9pbnRlcjxnbDo6QnVmZmVyPiAmYmluZGluZykgb3ZlcnJp
ZGU7CisgICAgdm9pZCBiaW5kSW5kZXhlZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IE9mZnNl
dEJpbmRpbmdQb2ludGVyPGdsOjpCdWZmZXI+ICZiaW5kaW5nKSBvdmVycmlkZTsKK307CisKK30g
IC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9U
UkFOU0ZPUk1GRUVEQkFDS1ZLX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1ZlcnRleEFycmF5VmsuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVmVy
dGV4QXJyYXlWay5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9WZXJ0ZXhBcnJheVZrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDI1IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gVmVydGV4QXJyYXlWay5jcHA6Cisv
LyAgICBJbXBsZW1lbnRzIHRoZSBjbGFzcyBtZXRob2RzIGZvciBWZXJ0ZXhBcnJheVZrLgorLy8K
KworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9WZXJ0ZXhBcnJheVZrLmgiCisK
KyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK1ZlcnRleEFy
cmF5Vms6OlZlcnRleEFycmF5VmsoY29uc3QgZ2w6OlZlcnRleEFycmF5U3RhdGUgJmRhdGEpIDog
VmVydGV4QXJyYXlJbXBsKGRhdGEpCit7Cit9CisKK1ZlcnRleEFycmF5Vms6On5WZXJ0ZXhBcnJh
eVZrKCkKK3sKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1ZlcnRleEFycmF5VmsuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
dnVsa2FuL1ZlcnRleEFycmF5VmsuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1ZlcnRleEFycmF5VmsuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDI3IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gVmVydGV4QXJyYXlWay5o
OgorLy8gICAgRGVmaW5lcyB0aGUgY2xhc3MgaW50ZXJmYWNlIGZvciBWZXJ0ZXhBcnJheVZrLCBp
bXBsZW1lbnRpbmcgVmVydGV4QXJyYXlJbXBsLgorLy8KKworI2lmbmRlZiBMSUJBTkdMRV9SRU5E
RVJFUl9WVUxLQU5fVkVSVEVYQVJSQVlWS19IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9W
VUxLQU5fVkVSVEVYQVJSQVlWS19IXworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvVmVy
dGV4QXJyYXlJbXBsLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBWZXJ0ZXhBcnJheVZr
IDogcHVibGljIFZlcnRleEFycmF5SW1wbAoreworICBwdWJsaWM6CisgICAgVmVydGV4QXJyYXlW
ayhjb25zdCBnbDo6VmVydGV4QXJyYXlTdGF0ZSAmZGF0YSk7CisgICAgflZlcnRleEFycmF5Vmso
KSBvdmVycmlkZTsKK307CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJQkFO
R0xFX1JFTkRFUkVSX1ZVTEtBTl9WRVJURVhBUlJBWVZLX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9saWJFR0wuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1OCw0ICszNTgsMTMgQEAgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xTdHJl
YW1Qb3N0RDNEVAogewogICAgIHJldHVybiBlZ2w6OlN0cmVhbVBvc3REM0RUZXh0dXJlTlYxMkFO
R0xFKGRweSwgc3RyZWFtLCB0ZXh0dXJlLCBhdHRyaWJfbGlzdCk7CiB9CisKK0VHTEJvb2xlYW4g
RUdMQVBJRU5UUlkgZWdsR2V0U3luY1ZhbHVlc0NIUk9NSVVNKEVHTERpc3BsYXkgZHB5LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMU3VyZmFjZSBz
dXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RUdMdWludDY0S0hSICp1c3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFR0x1aW50NjRLSFIgKm1zYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEVHTHVpbnQ2NEtIUiAqc2JjKQoreworICAgIHJldHVybiBl
Z2w6OkdldFN5bmNWYWx1ZXNDSFJPTUlVTShkcHksIHN1cmZhY2UsIHVzdCwgbXNjLCBzYmMpOwor
fQogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9saWJFR0wuZGVm
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGliRUdM
LmRlZgkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkVHTC9saWJFR0wuZGVmCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBAIEVYUE9SVFMK
ICAgICBlZ2xTdHJlYW1Db25zdW1lckdMVGV4dHVyZUV4dGVybmFsQXR0cmlic05WIEA2MwogICAg
IGVnbENyZWF0ZVN0cmVhbVByb2R1Y2VyRDNEVGV4dHVyZU5WMTJBTkdMRSAgQDY0CiAgICAgZWds
U3RyZWFtUG9zdEQzRFRleHR1cmVOVjEyQU5HTEUgICAgICAgICAgICBANjUKKyAgICBlZ2xHZXRT
eW5jVmFsdWVzQ0hST01JVU0gICAgICAgICAgICAgICAgICAgIEA2NgogCiAgICAgOyAxLjUgZW50
cnkgcG9pbnRzCiAgICAgZWdsQ3JlYXRlU3luYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBAMzgKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlf
cG9pbnRzX2VnbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZWdsLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZWdsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTEsNiArMTEsNyBAQAogI2luY2x1ZGUgImxpYkdMRVN2Mi9lbnRy
eV9wb2ludHNfZ2xlc18yXzAuaCIKICNpbmNsdWRlICJsaWJHTEVTdjIvZW50cnlfcG9pbnRzX2ds
ZXNfMl8wX2V4dC5oIgogI2luY2x1ZGUgImxpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzAu
aCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfM18xLmgiCiAjaW5jbHVk
ZSAibGliR0xFU3YyL2dsb2JhbF9zdGF0ZS5oIgogCiAjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4
dC5oIgpAQCAtNTgyLDE5ICs1ODMsMTAgQEAgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBNYWtlQ3Vy
cmVudChFR0xEaQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGRpc3BsYXktPmlzSW5pdGlh
bGl6ZWQoKSkKKyAgICBpZiAoZGlzcGxheS0+aXNJbml0aWFsaXplZCgpICYmIGRpc3BsYXktPnRl
c3REZXZpY2VMb3N0KCkpCiAgICAgewotICAgICAgICBpZiAoZGlzcGxheS0+dGVzdERldmljZUxv
c3QoKSkKLSAgICAgICAgewotICAgICAgICAgICAgZGlzcGxheS0+bm90aWZ5RGV2aWNlTG9zdCgp
OwotICAgICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
IChkaXNwbGF5LT5pc0RldmljZUxvc3QoKSkKLSAgICAgICAgewotICAgICAgICAgICAgU2V0R2xv
YmFsRXJyb3IoRXJyb3IoRUdMX0NPTlRFWFRfTE9TVCkpOwotICAgICAgICAgICAgcmV0dXJuIEVH
TF9GQUxTRTsKLSAgICAgICAgfQorICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQ09O
VEVYVF9MT1NUKSk7CisgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQogCiAgICAgU3Vy
ZmFjZSAqZHJhd1N1cmZhY2UgPSBzdGF0aWNfY2FzdDxTdXJmYWNlKj4oZHJhdyk7CkBAIC03Mjgs
OCArNzIwLDggQEAgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBRdWVyeUNvbnRleHQoRUdMRAogICAg
ICAgICAqdmFsdWUgPSBjb250ZXh0LT5nZXRDbGllbnRUeXBlKCk7CiAgICAgICAgIGJyZWFrOwog
ICAgICAgY2FzZSBFR0xfQ09OVEVYVF9DTElFTlRfVkVSU0lPTjoKLSAgICAgICAgKnZhbHVlID0g
Y29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpOwotICAgICAgICBicmVhazsKKyAgICAgICAgICAq
dmFsdWUgPSBjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKTsKKyAgICAgICAgICBicmVh
azsKICAgICAgIGNhc2UgRUdMX1JFTkRFUl9CVUZGRVI6CiAgICAgICAgICp2YWx1ZSA9IGNvbnRl
eHQtPmdldFJlbmRlckJ1ZmZlcigpOwogICAgICAgICBicmVhazsKQEAgLTgxMiw3ICs4MDQsNyBA
QCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFN3YXBCdWZmZXJzKEVHTERpCiAgICAgICAgIHJldHVy
biBFR0xfRkFMU0U7CiAgICAgfQogCi0gICAgaWYgKGRpc3BsYXktPmlzRGV2aWNlTG9zdCgpKQor
ICAgIGlmIChkaXNwbGF5LT50ZXN0RGV2aWNlTG9zdCgpKQogICAgIHsKICAgICAgICAgU2V0R2xv
YmFsRXJyb3IoRXJyb3IoRUdMX0NPTlRFWFRfTE9TVCkpOwogICAgICAgICByZXR1cm4gRUdMX0ZB
TFNFOwpAQCAtODQ5LDcgKzg0MSw3IEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgQ29weUJ1ZmZl
cnMoRUdMRGkKICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKLSAgICBpZiAoZGlz
cGxheS0+aXNEZXZpY2VMb3N0KCkpCisgICAgaWYgKGRpc3BsYXktPnRlc3REZXZpY2VMb3N0KCkp
CiAgICAgewogICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQ09OVEVYVF9MT1NUKSk7
CiAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CkBAIC0xNDExLDYgKzE0MDMsMTkgQEAgX19lZ2xN
dXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZQogICAgICAgICBJTlNFUlRfUFJPQ19B
RERSRVNTKGdsLCBHZXRRdWVyeWl2RVhUKTsKICAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhn
bCwgR2V0UXVlcnlPYmplY3R1aXZFWFQpOwogCisgICAgICAgIC8vIEdMX0VYVF9kaXNqb2ludF90
aW1lcl9xdWVyeQorICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZW5RdWVyaWVzRVhU
KTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgRGVsZXRlUXVlcmllc0VYVCk7Cisg
ICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIElzUXVlcnlFWFQpOworICAgICAgICBJTlNF
UlRfUFJPQ19BRERSRVNTKGdsLCBCZWdpblF1ZXJ5RVhUKTsKKyAgICAgICAgSU5TRVJUX1BST0Nf
QUREUkVTUyhnbCwgRW5kUXVlcnlFWFQpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGds
LCBRdWVyeUNvdW50ZXJFWFQpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRR
dWVyeWl2RVhUKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0UXVlcnlPYmpl
Y3RpdkVYVCk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFF1ZXJ5T2JqZWN0
dWl2RVhUKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0UXVlcnlPYmplY3Rp
NjR2RVhUKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0UXVlcnlPYmplY3R1
aTY0dkVYVCk7CisKICAgICAgICAgLy8gR0xfRVhUX2RyYXdfYnVmZmVycwogICAgICAgICBJTlNF
UlRfUFJPQ19BRERSRVNTKGdsLCBEcmF3QnVmZmVyc0VYVCk7CiAKQEAgLTE0NjAsNiArMTQ2NSw4
MSBAQCBfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlCiAgICAgICAgIElO
U0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldE9iamVjdFB0ckxhYmVsS0hSKTsKICAgICAgICAgSU5T
RVJUX1BST0NfQUREUkVTUyhnbCwgR2V0UG9pbnRlcnZLSFIpOwogCisgICAgICAgIC8vIEdMX0NI
Uk9NSVVNX2JpbmRfdW5pZm9ybV9sb2NhdGlvbgorICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNT
KGdsLCBCaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU0pOworCisgICAgICAgIC8vIEdMX0NIUk9N
SVVNX2NvcHlfdGV4dHVyZQorICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBDb3B5VGV4
dHVyZUNIUk9NSVVNKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgQ29weVN1YlRl
eHR1cmVDSFJPTUlVTSk7CisKKyAgICAgICAgLy8gR0xfQ0hST01JVU1fY29weV9jb21wcmVzc2Vk
X3RleHR1cmUKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgQ29tcHJlc3NlZENvcHlU
ZXh0dXJlQ0hST01JVU0pOworCisgICAgICAgIC8vIEdMX0FOR0xFX3dlYmdsX2NvbXBhdGliaWxp
dHkKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgRW5hYmxlRXh0ZW5zaW9uQU5HTEUp
OworCisgICAgICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5CisgICAgICAgIElO
U0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldEJvb2xlYW52Um9idXN0QU5HTEUpOworICAgICAgICBJ
TlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTsK
KyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0RmxvYXR2Um9idXN0QU5HTEUpOwor
ICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwg
R2V0SW50ZWdlcnZSb2J1c3RBTkdMRSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2ws
IEdldFByb2dyYW1pdlJvYnVzdEFOR0xFKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhn
bCwgR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk7CisgICAgICAgIElOU0VS
VF9QUk9DX0FERFJFU1MoZ2wsIEdldFNoYWRlcml2Um9idXN0QU5HTEUpOworICAgICAgICBJTlNF
UlRfUFJPQ19BRERSRVNTKGdsLCBHZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKTsKKyAgICAg
ICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk7
CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFVuaWZvcm1mdlJvYnVzdEFOR0xF
KTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0VW5pZm9ybWl2Um9idXN0QU5H
TEUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRWZXJ0ZXhBdHRyaWJmdlJv
YnVzdEFOR0xFKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0VmVydGV4QXR0
cmliaXZSb2J1c3RBTkdMRSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFZl
cnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERS
RVNTKGdsLCBSZWFkUGl4ZWxzUm9idXN0QU5HTEUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERS
RVNTKGdsLCBUZXhJbWFnZTJEUm9idXN0QU5HTEUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERS
RVNTKGdsLCBUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKTsKKyAgICAgICAgSU5TRVJUX1BST0Nf
QUREUkVTUyhnbCwgVGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk7CisgICAgICAgIElOU0VSVF9Q
Uk9DX0FERFJFU1MoZ2wsIFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRSk7CisgICAgICAgIElOU0VS
VF9QUk9DX0FERFJFU1MoZ2wsIFRleEltYWdlM0RSb2J1c3RBTkdMRSk7CisgICAgICAgIElOU0VS
VF9QUk9DX0FERFJFU1MoZ2wsIFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSk7CisgICAgICAgIElO
U0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFF1ZXJ5aXZSb2J1c3RBTkdMRSk7CisgICAgICAgIElO
U0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUpOworICAg
ICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xF
KTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0SW50ZWdlcmlfdlJvYnVzdEFO
R0xFKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0SW50ZXJuYWxmb3JtYXRp
dlJvYnVzdEFOR0xFKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0VmVydGV4
QXR0cmliSWl2Um9idXN0QU5HTEUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBH
ZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERS
RVNTKGdsLCBHZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUpOworICAgICAgICBJTlNFUlRfUFJPQ19B
RERSRVNTKGdsLCBHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKTsKKyAgICAgICAg
SU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKTsKKyAgICAg
ICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUpOwor
ICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9i
dXN0QU5HTEUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBTYW1wbGVyUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFNhbXBs
ZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhn
bCwgR2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUpOworICAgICAgICBJTlNFUlRfUFJP
Q19BRERSRVNTKGdsLCBHZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk7CisgICAgICAg
IElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFByb2dyYW1JbnRlcmZh
Y2VpdlJvYnVzdEFOR0xFKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0Qm9v
bGVhbmlfdlJvYnVzdEFOR0xFKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0
TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhn
bCwgR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTsKKyAgICAgICAgSU5TRVJUX1BS
T0NfQUREUkVTUyhnbCwgR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKTsKKyAgICAg
ICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFO
R0xFKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgUmVhZG5QaXhlbHNSb2J1c3RB
TkdMRSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldG5Vbmlmb3JtZnZSb2J1
c3RBTkdMRSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldG5Vbmlmb3JtaXZS
b2J1c3RBTkdMRSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldG5Vbmlmb3Jt
dWl2Um9idXN0QU5HTEUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBUZXhQYXJh
bWV0ZXJJaXZSb2J1c3RBTkdMRSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFRl
eFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1Mo
Z2wsIEdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKTsKKyAgICAgICAgSU5TRVJUX1BST0Nf
QUREUkVTUyhnbCwgR2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKTsKKyAgICAgICAgSU5T
RVJUX1BST0NfQUREUkVTUyhnbCwgU2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKTsKKyAg
ICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgU2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RB
TkdMRSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFNh
bXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERS
RVNTKGdsLCBHZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUpOworICAgICAgICBJTlNFUlRfUFJP
Q19BRERSRVNTKGdsLCBHZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRSk7CisgICAgICAgIElO
U0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRSk7CisK
ICAgICAgICAgLy8gR0xFUzMgY29yZQogICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBS
ZWFkQnVmZmVyKTsKICAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgRHJhd1JhbmdlRWxl
bWVudHMpOwpAQCAtMTU2Nyw2ICsxNjQ3LDc2IEBAIF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0
aW9uUG9pbnRlclR5cGUKICAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgVGV4U3RvcmFn
ZTNEKTsKICAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0SW50ZXJuYWxmb3JtYXRp
dik7CiAKKyAgICAgICAgLy8gR0xFUzMxIGNvcmUKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVT
UyhnbCwgRGlzcGF0Y2hDb21wdXRlKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwg
RGlzcGF0Y2hDb21wdXRlSW5kaXJlY3QpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGds
LCBEcmF3QXJyYXlzSW5kaXJlY3QpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBE
cmF3RWxlbWVudHNJbmRpcmVjdCk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEZy
YW1lYnVmZmVyUGFyYW1ldGVyaSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdl
dEZyYW1lYnVmZmVyUGFyYW1ldGVyaXYpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGds
LCBHZXRQcm9ncmFtSW50ZXJmYWNlaXYpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGds
LCBHZXRQcm9ncmFtUmVzb3VyY2VJbmRleCk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1Mo
Z2wsIEdldFByb2dyYW1SZXNvdXJjZU5hbWUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNT
KGdsLCBHZXRQcm9ncmFtUmVzb3VyY2Vpdik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1Mo
Z2wsIEdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQURE
UkVTUyhnbCwgVXNlUHJvZ3JhbVN0YWdlcyk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1Mo
Z2wsIEFjdGl2ZVNoYWRlclByb2dyYW0pOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGds
LCBDcmVhdGVTaGFkZXJQcm9ncmFtdik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2ws
IEJpbmRQcm9ncmFtUGlwZWxpbmUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBE
ZWxldGVQcm9ncmFtUGlwZWxpbmVzKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwg
R2VuUHJvZ3JhbVBpcGVsaW5lcyk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIElz
UHJvZ3JhbVBpcGVsaW5lKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0UHJv
Z3JhbVBpcGVsaW5laXYpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBQcm9ncmFt
VW5pZm9ybTFpKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgUHJvZ3JhbVVuaWZv
cm0yaSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFByb2dyYW1Vbmlmb3JtM2kp
OworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBQcm9ncmFtVW5pZm9ybTRpKTsKKyAg
ICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgUHJvZ3JhbVVuaWZvcm0xdWkpOworICAgICAg
ICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBQcm9ncmFtVW5pZm9ybTJ1aSk7CisgICAgICAgIElO
U0VSVF9QUk9DX0FERFJFU1MoZ2wsIFByb2dyYW1Vbmlmb3JtM3VpKTsKKyAgICAgICAgSU5TRVJU
X1BST0NfQUREUkVTUyhnbCwgUHJvZ3JhbVVuaWZvcm00dWkpOworICAgICAgICBJTlNFUlRfUFJP
Q19BRERSRVNTKGdsLCBQcm9ncmFtVW5pZm9ybTFmKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQURE
UkVTUyhnbCwgUHJvZ3JhbVVuaWZvcm0yZik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1Mo
Z2wsIFByb2dyYW1Vbmlmb3JtM2YpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBQ
cm9ncmFtVW5pZm9ybTRmKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgUHJvZ3Jh
bVVuaWZvcm0xaXYpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBQcm9ncmFtVW5p
Zm9ybTJpdik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFByb2dyYW1Vbmlmb3Jt
M2l2KTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgUHJvZ3JhbVVuaWZvcm00aXYp
OworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBQcm9ncmFtVW5pZm9ybTF1aXYpOwor
ICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBQcm9ncmFtVW5pZm9ybTJ1aXYpOworICAg
ICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBQcm9ncmFtVW5pZm9ybTN1aXYpOworICAgICAg
ICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBQcm9ncmFtVW5pZm9ybTR1aXYpOworICAgICAgICBJ
TlNFUlRfUFJPQ19BRERSRVNTKGdsLCBQcm9ncmFtVW5pZm9ybTFmdik7CisgICAgICAgIElOU0VS
VF9QUk9DX0FERFJFU1MoZ2wsIFByb2dyYW1Vbmlmb3JtMmZ2KTsKKyAgICAgICAgSU5TRVJUX1BS
T0NfQUREUkVTUyhnbCwgUHJvZ3JhbVVuaWZvcm0zZnYpOworICAgICAgICBJTlNFUlRfUFJPQ19B
RERSRVNTKGdsLCBQcm9ncmFtVW5pZm9ybTRmdik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJF
U1MoZ2wsIFByb2dyYW1Vbmlmb3JtTWF0cml4MmZ2KTsKKyAgICAgICAgSU5TRVJUX1BST0NfQURE
UkVTUyhnbCwgUHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnYpOworICAgICAgICBJTlNFUlRfUFJPQ19B
RERSRVNTKGdsLCBQcm9ncmFtVW5pZm9ybU1hdHJpeDRmdik7CisgICAgICAgIElOU0VSVF9QUk9D
X0FERFJFU1MoZ2wsIFByb2dyYW1Vbmlmb3JtTWF0cml4MngzZnYpOworICAgICAgICBJTlNFUlRf
UFJPQ19BRERSRVNTKGdsLCBQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmZ2KTsKKyAgICAgICAgSU5T
RVJUX1BST0NfQUREUkVTUyhnbCwgUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRmdik7CisgICAgICAg
IElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYpOworICAg
ICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBQcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGZ2KTsK
KyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNm
dik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFZhbGlkYXRlUHJvZ3JhbVBpcGVs
aW5lKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0UHJvZ3JhbVBpcGVsaW5l
SW5mb0xvZyk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEJpbmRJbWFnZVRleHR1
cmUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRCb29sZWFuaV92KTsKKyAg
ICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgTWVtb3J5QmFycmllcik7CisgICAgICAgIElO
U0VSVF9QUk9DX0FERFJFU1MoZ2wsIE1lbW9yeUJhcnJpZXJCeVJlZ2lvbik7CisgICAgICAgIElO
U0VSVF9QUk9DX0FERFJFU1MoZ2wsIFRleFN0b3JhZ2UyRE11bHRpc2FtcGxlKTsKKyAgICAgICAg
SU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0TXVsdGlzYW1wbGVmdik7CisgICAgICAgIElOU0VS
VF9QUk9DX0FERFJFU1MoZ2wsIFNhbXBsZU1hc2tpKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQURE
UkVTUyhnbCwgR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdik7CisgICAgICAgIElOU0VSVF9QUk9DX0FE
RFJFU1MoZ2wsIEdldFRleExldmVsUGFyYW1ldGVyZnYpOworICAgICAgICBJTlNFUlRfUFJPQ19B
RERSRVNTKGdsLCBCaW5kVmVydGV4QnVmZmVyKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVT
UyhnbCwgVmVydGV4QXR0cmliRm9ybWF0KTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhn
bCwgVmVydGV4QXR0cmliSUZvcm1hdCk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2ws
IFZlcnRleEF0dHJpYkJpbmRpbmcpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBW
ZXJ0ZXhCaW5kaW5nRGl2aXNvcik7CisKICAgICAgICAgLy8gRUdMIDEuMAogICAgICAgICBJTlNF
UlRfUFJPQ19BRERSRVNTKGVnbCwgQ2hvb3NlQ29uZmlnKTsKICAgICAgICAgSU5TRVJUX1BST0Nf
QUREUkVTUyhlZ2wsIENvcHlCdWZmZXJzKTsKQEAgLTE2NTgsNiArMTgwOCwxMiBAQCBfX2VnbE11
c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlCiAgICAgICAgIC8vIEVHTF9OVl9zdHJl
YW1fY29uc3VtZXJfZ2x0ZXh0dXJlX3l1dgogICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGVn
bCwgU3RyZWFtQ29uc3VtZXJHTFRleHR1cmVFeHRlcm5hbEF0dHJpYnNOVik7CiAKKyAgICAgICAg
Ly8gRUdMX0FOR0xFX3N0cmVhbV9wcm9kdWNlcl9kM2RfdGV4dHVyZV9udjEyCisgICAgICAgIElO
U0VSVF9QUk9DX0FERFJFU1MoZWdsLCBDcmVhdGVTdHJlYW1Qcm9kdWNlckQzRFRleHR1cmVOVjEy
QU5HTEUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGVnbCwgU3RyZWFtUG9zdEQzRFRl
eHR1cmVOVjEyQU5HTEUpOworCisgICAgICAgIC8vIEVHTF9DSFJPTUlVTV9nZXRfc3luY192YWx1
ZXMKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhlZ2wsIEdldFN5bmNWYWx1ZXNDSFJPTUlV
TSk7CiAjdW5kZWYgSU5TRVJUX1BST0NfQUREUkVTUwogICAgICAgICByZXR1cm4gbWFwOwogICAg
IH07CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3Bv
aW50c19lZ2xfZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19lZ2xfZXh0LmNwcAkocmV2aXNpb24gMjA3ODA0KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZWds
X2V4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgRUdMQm9vbGVhbiBFR0xB
UElFTlRSWSBQb3N0U3ViQnVmZmVyTlYoRQogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAg
IH0KIAotICAgIGlmIChkaXNwbGF5LT5pc0RldmljZUxvc3QoKSkKKyAgICBpZiAoZGlzcGxheS0+
dGVzdERldmljZUxvc3QoKSkKICAgICB7CiAgICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVH
TF9DT05URVhUX0xPU1QpKTsKICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKQEAgLTE5Nyw2ICsx
OTcsMTcgQEAgRUdMRGlzcGxheSBFR0xBUElFTlRSWSBHZXRQbGF0Zm9ybURpc3BsYQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKIAorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQ
RV9OVUxMX0FOR0xFOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2xpZW50RXh0
ZW5zaW9ucy5wbGF0Zm9ybUFOR0xFTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVH
TF9CQURfQVRUUklCVVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiRGlzcGxheSB0eXBlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVHTF9QTEFURk9STV9BTkdMRV9UWVBFX05VTExf
QU5HTEUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAicmVxdWlyZXMgRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlX251bGwuIikpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRUdMX05PX0RJU1BMQVk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCiAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAg
ICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUpKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBFR0xfTk9fRElTUExBWTsKQEAgLTQzMyw3ICs0NDQsMTMg
QEAgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBRdWVyeURpc3BsYXlBdHRyaQogICAgICAgICAgIGRw
eSwgYXR0cmlidXRlLCB2YWx1ZSk7CiAKICAgICBEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nh
c3Q8RGlzcGxheSo+KGRweSk7Ci0gICAgRXJyb3IgZXJyb3IoRUdMX1NVQ0NFU1MpOworCisgICAg
RXJyb3IgZXJyb3IgPSBWYWxpZGF0ZURpc3BsYXkoZGlzcGxheSk7CisgICAgaWYgKGVycm9yLmlz
RXJyb3IoKSkKKyAgICB7CisgICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICAgICAg
cmV0dXJuIEVHTF9GQUxTRTsKKyAgICB9CiAKICAgICBpZiAoIWRpc3BsYXktPmdldEV4dGVuc2lv
bnMoKS5kZXZpY2VRdWVyeSkKICAgICB7CkBAIC03MjUsOCArNzQyLDE2IEBAIEVHTEJvb2xlYW4g
RUdMQVBJRU5UUlkgU3RyZWFtQ29uc3VtZXJHTFQKICAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJy
b3IpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAgIH0KKworICAgIGVycm9yID0gc3Ry
ZWFtT2JqZWN0LT5jcmVhdGVDb25zdW1lckdMVGV4dHVyZUV4dGVybmFsKEF0dHJpYnV0ZU1hcCgp
LCBjb250ZXh0KTsKKyAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgU2V0
R2xvYmFsRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgIH0KKwog
ICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKLSAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgIHJl
dHVybiBFR0xfVFJVRTsKIH0KIAogRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBTdHJlYW1Db25zdW1l
ckFjcXVpcmVLSFIoRUdMRGlzcGxheSBkcHksIEVHTFN0cmVhbUtIUiBzdHJlYW0pCkBAIC03NDIs
OCArNzY3LDE2IEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgU3RyZWFtQ29uc3VtZXJBY3EKICAg
ICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwog
ICAgIH0KKworICAgIGVycm9yID0gc3RyZWFtT2JqZWN0LT5jb25zdW1lckFjcXVpcmUoKTsKKyAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJy
b3IpOworICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgIH0KKwogICAgIFNldEdsb2JhbEVy
cm9yKGVycm9yKTsKLSAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgIHJldHVybiBFR0xfVFJVRTsK
IH0KIAogRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBTdHJlYW1Db25zdW1lclJlbGVhc2VLSFIoRUdM
RGlzcGxheSBkcHksIEVHTFN0cmVhbUtIUiBzdHJlYW0pCkBAIC03NTksOCArNzkyLDE2IEBAIEVH
TEJvb2xlYW4gRUdMQVBJRU5UUlkgU3RyZWFtQ29uc3VtZXJSZWwKICAgICAgICAgU2V0R2xvYmFs
RXJyb3IoZXJyb3IpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAgIH0KKworICAgIGVy
cm9yID0gc3RyZWFtT2JqZWN0LT5jb25zdW1lclJlbGVhc2UoKTsKKyAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQorICAgIHsKKyAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAgICAgICBy
ZXR1cm4gRUdMX0ZBTFNFOworICAgIH0KKwogICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKLSAg
ICByZXR1cm4gRUdMX0ZBTFNFOworICAgIHJldHVybiBFR0xfVFJVRTsKIH0KIAogRUdMQm9vbGVh
biBFR0xBUElFTlRSWSBTdHJlYW1Db25zdW1lckdMVGV4dHVyZUV4dGVybmFsQXR0cmlic05WKEVH
TERpc3BsYXkgZHB5LApAQCAtNzgyLDggKzgyMywxNiBAQCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZ
IFN0cmVhbUNvbnN1bWVyR0xUCiAgICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKICAgICAg
ICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CisKKyAgICBlcnJvciA9IHN0cmVhbU9iamVjdC0+
Y3JlYXRlQ29uc3VtZXJHTFRleHR1cmVFeHRlcm5hbChhdHRyaWJ1dGVzLCBjb250ZXh0KTsKKyAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJy
b3IpOworICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgIH0KKwogICAgIFNldEdsb2JhbEVy
cm9yKGVycm9yKTsKLSAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgIHJldHVybiBFR0xfVFJVRTsK
IH0KIAogRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBDcmVhdGVTdHJlYW1Qcm9kdWNlckQzRFRleHR1
cmVOVjEyQU5HTEUoRUdMRGlzcGxheSBkcHksCkBAIC04MDUsOCArODU0LDE1IEBAIEVHTEJvb2xl
YW4gRUdMQVBJRU5UUlkgQ3JlYXRlU3RyZWFtUHJvZHUKICAgICAgICAgcmV0dXJuIEVHTF9GQUxT
RTsKICAgICB9CiAKKyAgICBlcnJvciA9IHN0cmVhbU9iamVjdC0+Y3JlYXRlUHJvZHVjZXJEM0Qx
MVRleHR1cmVOVjEyKGF0dHJpYnV0ZXMpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAg
eworICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiBFR0xfRkFM
U0U7CisgICAgfQorCiAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOwotICAgIHJldHVybiBFR0xf
RkFMU0U7CisgICAgcmV0dXJuIEVHTF9UUlVFOwogfQogCiBFR0xCb29sZWFuIEVHTEFQSUVOVFJZ
IFN0cmVhbVBvc3REM0RUZXh0dXJlTlYxMkFOR0xFKEVHTERpc3BsYXkgZHB5LApAQCAtODI5LDcg
Kzg4NSw0NiBAQCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFN0cmVhbVBvc3REM0RUZXh0CiAgICAg
ICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQogCisgICAgZXJyb3IgPSBzdHJlYW1PYmplY3Qt
PnBvc3REM0QxMU5WMTJUZXh0dXJlKHRleHR1cmUsIGF0dHJpYnV0ZXMpOworICAgIGlmIChlcnJv
ci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAg
ICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAgfQorCiAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3Ip
OwotICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAgcmV0dXJuIEVHTF9UUlVFOworfQorCitFR0xC
b29sZWFuIEVHTEFQSUVOVFJZIEdldFN5bmNWYWx1ZXNDSFJPTUlVTShFR0xEaXNwbGF5IGRweSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTFN1cmZhY2Ug
c3VyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVH
THVpbnQ2NEtIUiAqdXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRUdMdWludDY0S0hSICptc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFR0x1aW50NjRLSFIgKnNiYykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAg
IihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IDB4JTAuOHAs
IEVHTHVpbnQ2NEtIUiogdXN0ID0gMHglMC44cCwgIgorICAgICAgICAiRUdMdWludDY0S0hSKiBt
c2MgPSAweCUwLjhwLCBFR0x1aW50NjRLSFIqIHNiYyA9IDB4JTAuOHAiLAorICAgICAgICBkcHks
IHN1cmZhY2UsIHVzdCwgbXNjLCBzYmMpOworCisgICAgRGlzcGxheSAqZGlzcGxheSAgICA9IHN0
YXRpY19jYXN0PERpc3BsYXkgKj4oZHB5KTsKKyAgICBTdXJmYWNlICplZ2xTdXJmYWNlID0gc3Rh
dGljX2Nhc3Q8U3VyZmFjZSAqPihzdXJmYWNlKTsKKworICAgIEVycm9yIGVycm9yID0gVmFsaWRh
dGVHZXRTeW5jVmFsdWVzQ0hST01JVU0oZGlzcGxheSwgZWdsU3VyZmFjZSwgdXN0LCBtc2MsIHNi
Yyk7CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIFNldEdsb2JhbEVy
cm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICB9CisKKyAgICBlcnJv
ciA9IGVnbFN1cmZhY2UtPmdldFN5bmNWYWx1ZXModXN0LCBtc2MsIHNiYyk7CisgICAgaWYgKGVy
cm9yLmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAg
ICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICB9CisKKyAgICBTZXRHbG9iYWxFcnJvcihlcnJv
cik7CisgICAgcmV0dXJuIEVHTF9UUlVFOwogfQogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZWdsX2V4dC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2VnbF9l
eHQuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9lbnRyeV9wb2ludHNfZWdsX2V4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3
OSwxNCBAQCBBTkdMRV9FWFBPUlQgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBTdHJlCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBFR0xTdHJlYW1LSFIgc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdGV4dHVyZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEVHTEF0dHJpYiAqYXR0cmliX2xpc3QpOworCisvLyBFR0xfQ0hST01JVU1fZ2V0X3N5
bmNfdmFsdWVzCitBTkdMRV9FWFBPUlQgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBHZXRTeW5jVmFs
dWVzQ0hST01JVU0oRUdMRGlzcGxheSBkcHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMU3VyZmFjZSBzdXJmYWNlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTHVp
bnQ2NEtIUiAqdXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEVHTHVpbnQ2NEtIUiAqbXNjLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTHVpbnQ2NEtIUiAqc2JjKTsK
KwogfSAgLy8gbmFtZXNwYWNlIGVnbAogCiAjZW5kaWYgLy8gTElCR0xFU1YyX0VOVFJZUE9JTlRT
RUdMRVhUX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2Vu
dHJ5X3BvaW50c19nbGVzXzJfMC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18yXzAuY3BwCShyZXZpc2lvbiAy
MDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3Bv
aW50c19nbGVzXzJfMC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNyw3IEBACiAvLyBlbnRy
eV9wb2ludHNfZ2xlc18yXzAuY3BwIDogSW1wbGVtZW50cyB0aGUgR0xFUyAyLjAgZW50cnkgcG9p
bnRzLgogCiAjaW5jbHVkZSAibGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzJfMC5oIgorCiAj
aW5jbHVkZSAibGliR0xFU3YyL2dsb2JhbF9zdGF0ZS5oIgogCiAjaW5jbHVkZSAibGliQU5HTEUv
Zm9ybWF0dXRpbHMuaCIKQEAgLTI3LDYgKzI4LDcgQEAKICNpbmNsdWRlICJsaWJBTkdMRS92YWxp
ZGF0aW9uRVMyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvdmFsaWRhdGlvbkVTMy5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL3F1ZXJ5Y29udmVyc2lvbnMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9xdWVy
eXV0aWxzLmgiCiAKICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKICNpbmNsdWRlICJjb21tb24v
dXRpbGl0aWVzLmgiCkBAIC00MiwxMyArNDQsMTIgQEAgdm9pZCBHTF9BUElFTlRSWSBBY3RpdmVU
ZXh0dXJlKEdMZW51bSB0ZQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICh0ZXh0dXJlIDwg
R0xfVEVYVFVSRTAgfHwgdGV4dHVyZSA+IEdMX1RFWFRVUkUwICsgY29udGV4dC0+Z2V0Q2Fwcygp
Lm1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMgLSAxKQorICAgICAgICBpZiAoIWNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlQWN0aXZlVGV4dHVyZShjb250ZXh0LCB0ZXh0
dXJlKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBjb250ZXh0LT5nZXRTdGF0ZSgpLnNldEFjdGl2ZVNhbXBsZXIodGV4dHVyZSAtIEdMX1RF
WFRVUkUwKTsKKyAgICAgICAgY29udGV4dC0+YWN0aXZlVGV4dHVyZSh0ZXh0dXJlKTsKICAgICB9
CiB9CiAKQEAgLTU5LDIzICs2MCwxMiBAQCB2b2lkIEdMX0FQSUVOVFJZIEF0dGFjaFNoYWRlcihH
THVpbnQgcHJvCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
OwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVj
dCA9IEdldFZhbGlkUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFtKTsKLSAgICAgICAgaWYgKCFwcm9n
cmFtT2JqZWN0KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot
ICAgICAgICBTaGFkZXIgKnNoYWRlck9iamVjdCA9IEdldFZhbGlkU2hhZGVyKGNvbnRleHQsIHNo
YWRlcik7Ci0gICAgICAgIGlmICghc2hhZGVyT2JqZWN0KQorICAgICAgICBpZiAoIWNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlQXR0YWNoU2hhZGVyKGNvbnRleHQsIHByb2dy
YW0sIHNoYWRlcikpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIGlmICghcHJvZ3JhbU9iamVjdC0+YXR0YWNoU2hhZGVyKHNoYWRlck9iamVjdCkp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAg
ICAgY29udGV4dC0+YXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcik7CiAgICAgfQogfQogCkBA
IC04OCw3ICs3OCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZEF0dHJpYkxvY2F0aW9uKEdMdWkK
ICAgICB7CiAgICAgICAgIGlmIChpbmRleCA+PSBNQVhfVkVSVEVYX0FUVFJJQlMpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFM
VUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
VkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMDEsNyArOTEs
NyBAQCB2b2lkIEdMX0FQSUVOVFJZIEJpbmRBdHRyaWJMb2NhdGlvbihHTHVpCiAKICAgICAgICAg
aWYgKHN0cm5jbXAobmFtZSwgImdsXyIsIDMpID09IDApCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTExOCw3ICsxMDgsMTQgQEAg
dm9pZCBHTF9BUElFTlRSWSBCaW5kQnVmZmVyKEdMZW51bSB0YXJnZQogICAgIHsKICAgICAgICAg
aWYgKCFWYWxpZEJ1ZmZlclRhcmdldChjb250ZXh0LCB0YXJnZXQpKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFjb250ZXh0LT5n
ZXRHTFN0YXRlKCkuaXNCaW5kR2VuZXJhdGVzUmVzb3VyY2VFbmFibGVkKCkgJiYKKyAgICAgICAg
ICAgICFjb250ZXh0LT5pc0J1ZmZlckdlbmVyYXRlZChidWZmZXIpKQorICAgICAgICB7CisgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwg
IkJ1ZmZlciB3YXMgbm90IGdlbmVyYXRlZCIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCkBAIC0xNTAsNyArMTQ3LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBCaW5kQnVmZmVyKEdM
ZW51bSB0YXJnZQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwor
ICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0p
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTE2NSw3ICsxNjIs
MTQgQEAgdm9pZCBHTF9BUElFTlRSWSBCaW5kRnJhbWVidWZmZXIoR0xlbnVtIAogICAgIHsKICAg
ICAgICAgaWYgKCFWYWxpZEZyYW1lYnVmZmVyVGFyZ2V0KHRhcmdldCkpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwor
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWNvbnRleHQt
PmdldEdMU3RhdGUoKS5pc0JpbmRHZW5lcmF0ZXNSZXNvdXJjZUVuYWJsZWQoKSAmJgorICAgICAg
ICAgICAgIWNvbnRleHQtPmlzRnJhbWVidWZmZXJHZW5lcmF0ZWQoZnJhbWVidWZmZXIpKQorICAg
ICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTiwgIkZyYW1lYnVmZmVyIHdhcyBub3QgZ2VuZXJhdGVkIikpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE5MCw3ICsxOTQsMTQgQEAgdm9pZCBHTF9BUElF
TlRSWSBCaW5kUmVuZGVyYnVmZmVyKEdMZW51bQogICAgIHsKICAgICAgICAgaWYgKHRhcmdldCAh
PSBHTF9SRU5ERVJCVUZGRVIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoIWNvbnRleHQtPmdldEdMU3RhdGUoKS5pc0JpbmRHZW5l
cmF0ZXNSZXNvdXJjZUVuYWJsZWQoKSAmJgorICAgICAgICAgICAgIWNvbnRleHQtPmlzUmVuZGVy
YnVmZmVyR2VuZXJhdGVkKHJlbmRlcmJ1ZmZlcikpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiUmVuZGVyYnVm
ZmVyIHdhcyBub3QgZ2VuZXJhdGVkIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTIyMiw3ICsyMzMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEJsZW5kQ29sb3IoR0xjbGFt
cGYgcmVkCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgY29udGV4dC0+Z2V0U3RhdGUoKS5zZXRC
bGVuZENvbG9yKGNsYW1wMDEocmVkKSwgY2xhbXAwMShncmVlbiksIGNsYW1wMDEoYmx1ZSksIGNs
YW1wMDEoYWxwaGEpKTsKKyAgICAgICAgY29udGV4dC0+YmxlbmRDb2xvcihyZWQsIGdyZWVuLCBi
bHVlLCBhbHBoYSk7CiAgICAgfQogfQogCkBAIC0yNDgsNyArMjU5LDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBCbGVuZEVxdWF0aW9uU2VwYXJhdGUoRwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAg
LTI2MiwxMSArMjczLDExIEBAIHZvaWQgR0xfQVBJRU5UUlkgQmxlbmRFcXVhdGlvblNlcGFyYXRl
KEcKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGNvbnRleHQtPmdldFN0YXRlKCku
c2V0QmxlbmRFcXVhdGlvbihtb2RlUkdCLCBtb2RlQWxwaGEpOworICAgICAgICBjb250ZXh0LT5i
bGVuZEVxdWF0aW9uU2VwYXJhdGUobW9kZVJHQiwgbW9kZUFscGhhKTsKICAgICB9CiB9CiAKQEAg
LTMwMywzOSArMzE0LDM5IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmxlbmRGdW5jU2VwYXJhdGUoR0xl
bnUKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBzd2l0Y2ggKGRzdFJHQikK
ICAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfWkVSTzoKLSAgICAgICAgICBjYXNlIEdMX09O
RToKLSAgICAgICAgICBjYXNlIEdMX1NSQ19DT0xPUjoKLSAgICAgICAgICBjYXNlIEdMX09ORV9N
SU5VU19TUkNfQ09MT1I6Ci0gICAgICAgICAgY2FzZSBHTF9EU1RfQ09MT1I6Ci0gICAgICAgICAg
Y2FzZSBHTF9PTkVfTUlOVVNfRFNUX0NPTE9SOgotICAgICAgICAgIGNhc2UgR0xfU1JDX0FMUEhB
OgotICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX1NSQ19BTFBIQToKLSAgICAgICAgICBjYXNl
IEdMX0RTVF9BTFBIQToKLSAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19EU1RfQUxQSEE6Ci0g
ICAgICAgICAgY2FzZSBHTF9DT05TVEFOVF9DT0xPUjoKLSAgICAgICAgICBjYXNlIEdMX09ORV9N
SU5VU19DT05TVEFOVF9DT0xPUjoKLSAgICAgICAgICBjYXNlIEdMX0NPTlNUQU5UX0FMUEhBOgot
ICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBOgotICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIEdMX1pFUk86CisgICAgICAgICAgICBjYXNlIEdMX09O
RToKKyAgICAgICAgICAgIGNhc2UgR0xfU1JDX0NPTE9SOgorICAgICAgICAgICAgY2FzZSBHTF9P
TkVfTUlOVVNfU1JDX0NPTE9SOgorICAgICAgICAgICAgY2FzZSBHTF9EU1RfQ09MT1I6CisgICAg
ICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19EU1RfQ09MT1I6CisgICAgICAgICAgICBjYXNlIEdM
X1NSQ19BTFBIQToKKyAgICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX1NSQ19BTFBIQToKKyAg
ICAgICAgICAgIGNhc2UgR0xfRFNUX0FMUEhBOgorICAgICAgICAgICAgY2FzZSBHTF9PTkVfTUlO
VVNfRFNUX0FMUEhBOgorICAgICAgICAgICAgY2FzZSBHTF9DT05TVEFOVF9DT0xPUjoKKyAgICAg
ICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SOgorICAgICAgICAgICAgY2Fz
ZSBHTF9DT05TVEFOVF9BTFBIQToKKyAgICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0NPTlNU
QU5UX0FMUEhBOgorICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgY2FzZSBHTF9T
UkNfQUxQSEFfU0FUVVJBVEU6Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVy
c2lvbigpIDwgMykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgR0xf
U1JDX0FMUEhBX1NBVFVSQVRFOgorICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGll
bnRNYWpvclZlcnNpb24oKSA8IDMpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBicmVhazsKIAotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKICAgICAgICAgc3dpdGNoIChzcmNBbHBoYSkKQEAgLTM1OCwzOSArMzY5LDM5IEBAIHZv
aWQgR0xfQVBJRU5UUlkgQmxlbmRGdW5jU2VwYXJhdGUoR0xlbnUKICAgICAgICAgICAgIGJyZWFr
OwogCiAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAogICAgICAgICBzd2l0Y2ggKGRzdEFscGhhKQogICAgICAgICB7Ci0gICAgICAg
ICAgY2FzZSBHTF9aRVJPOgotICAgICAgICAgIGNhc2UgR0xfT05FOgotICAgICAgICAgIGNhc2Ug
R0xfU1JDX0NPTE9SOgotICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX1NSQ19DT0xPUjoKLSAg
ICAgICAgICBjYXNlIEdMX0RTVF9DT0xPUjoKLSAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19E
U1RfQ09MT1I6Ci0gICAgICAgICAgY2FzZSBHTF9TUkNfQUxQSEE6Ci0gICAgICAgICAgY2FzZSBH
TF9PTkVfTUlOVVNfU1JDX0FMUEhBOgotICAgICAgICAgIGNhc2UgR0xfRFNUX0FMUEhBOgotICAg
ICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0RTVF9BTFBIQToKLSAgICAgICAgICBjYXNlIEdMX0NP
TlNUQU5UX0NPTE9SOgotICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9S
OgotICAgICAgICAgIGNhc2UgR0xfQ09OU1RBTlRfQUxQSEE6Ci0gICAgICAgICAgY2FzZSBHTF9P
TkVfTUlOVVNfQ09OU1RBTlRfQUxQSEE6Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgR0xfWkVSTzoKKyAgICAgICAgICAgIGNhc2UgR0xfT05FOgorICAgICAgICAgICAgY2Fz
ZSBHTF9TUkNfQ09MT1I6CisgICAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19TUkNfQ09MT1I6
CisgICAgICAgICAgICBjYXNlIEdMX0RTVF9DT0xPUjoKKyAgICAgICAgICAgIGNhc2UgR0xfT05F
X01JTlVTX0RTVF9DT0xPUjoKKyAgICAgICAgICAgIGNhc2UgR0xfU1JDX0FMUEhBOgorICAgICAg
ICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfU1JDX0FMUEhBOgorICAgICAgICAgICAgY2FzZSBHTF9E
U1RfQUxQSEE6CisgICAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19EU1RfQUxQSEE6CisgICAg
ICAgICAgICBjYXNlIEdMX0NPTlNUQU5UX0NPTE9SOgorICAgICAgICAgICAgY2FzZSBHTF9PTkVf
TUlOVVNfQ09OU1RBTlRfQ09MT1I6CisgICAgICAgICAgICBjYXNlIEdMX0NPTlNUQU5UX0FMUEhB
OgorICAgICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEE6CisgICAgICAg
ICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBjYXNlIEdMX1NSQ19BTFBIQV9TQVRVUkFURToK
LSAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfRU5VTSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBHTF9TUkNfQUxQSEFfU0FUVVJBVEU6
CisgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwg
MykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfRU5VTSkpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VO
VU0pKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
Y29udGV4dC0+Z2V0TGltaXRhdGlvbnMoKS5ub1NpbXVsdGFuZW91c0NvbnN0YW50Q29sb3JBbmRB
bHBoYUJsZW5kRnVuYykKQEAgLTQwOSwxMiArNDIwLDEyIEBAIHZvaWQgR0xfQVBJRU5UUlkgQmxl
bmRGdW5jU2VwYXJhdGUoR0xlbnUKICAgICAgICAgICAgICAgICAgICAgIlNpbXVsdGFuZW91cyB1
c2Ugb2YgR0xfQ09OU1RBTlRfQUxQSEEvR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBIGFuZCAi
CiAgICAgICAgICAgICAgICAgICAgICJHTF9DT05TVEFOVF9DT0xPUi9HTF9PTkVfTUlOVVNfQ09O
U1RBTlRfQ09MT1Igbm90IHN1cHBvcnRlZCBieSB0aGlzICIKICAgICAgICAgICAgICAgICAgICAg
ImltcGxlbWVudGF0aW9uLiIpOwotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBjb250ZXh0LT5n
ZXRTdGF0ZSgpLnNldEJsZW5kRmFjdG9ycyhzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFs
cGhhKTsKKyAgICAgICAgY29udGV4dC0+YmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0Is
IHNyY0FscGhhLCBkc3RBbHBoYSk7CiAgICAgfQogfQogCkBAIC00MjYsNTcgKzQzNywxMiBAQCB2
b2lkIEdMX0FQSUVOVFJZIEJ1ZmZlckRhdGEoR0xlbnVtIHRhcmdlCiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgaWYgKHNpemUgPCAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBzd2l0Y2ggKHVzYWdlKQotICAgICAgICB7Ci0gICAgICAg
ICAgY2FzZSBHTF9TVFJFQU1fRFJBVzoKLSAgICAgICAgICBjYXNlIEdMX1NUQVRJQ19EUkFXOgot
ICAgICAgICAgIGNhc2UgR0xfRFlOQU1JQ19EUkFXOgotICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgICBjYXNlIEdMX1NUUkVBTV9SRUFEOgotICAgICAgICAgIGNhc2UgR0xfU1RSRUFNX0NP
UFk6Ci0gICAgICAgICAgY2FzZSBHTF9TVEFUSUNfUkVBRDoKLSAgICAgICAgICBjYXNlIEdMX1NU
QVRJQ19DT1BZOgotICAgICAgICAgIGNhc2UgR0xfRFlOQU1JQ19SRUFEOgotICAgICAgICAgIGNh
c2UgR0xfRFlOQU1JQ19DT1BZOgotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZl
cnNpb24oKSA8IDMpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VO
VU0pKTsKLSAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFW
YWxpZEJ1ZmZlclRhcmdldChjb250ZXh0LCB0YXJnZXQpKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIEJ1ZmZlciAqYnVmZmVyID0gY29udGV4
dC0+Z2V0U3RhdGUoKS5nZXRUYXJnZXRCdWZmZXIodGFyZ2V0KTsKLQotICAgICAgICBpZiAoIWJ1
ZmZlcikKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0
ZUJ1ZmZlckRhdGEoY29udGV4dCwgdGFyZ2V0LCBzaXplLCBkYXRhLCB1c2FnZSkpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBFcnJv
ciBlcnJvciA9IGJ1ZmZlci0+YnVmZmVyRGF0YShkYXRhLCBzaXplLCB1c2FnZSk7Ci0gICAgICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAg
ICBjb250ZXh0LT5idWZmZXJEYXRhKHRhcmdldCwgc2l6ZSwgZGF0YSwgdXNhZ2UpOwogICAgIH0K
IH0KIApAQCAtNDg4LDU2ICs0NTQsMTMgQEAgdm9pZCBHTF9BUElFTlRSWSBCdWZmZXJTdWJEYXRh
KEdMZW51bSB0YQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChzaXplIDwgMCB8fCBvZmZz
ZXQgPCAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoIVZhbGlkQnVmZmVyVGFyZ2V0KGNvbnRleHQsIHRhcmdldCkpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgQnVmZmVyICpi
dWZmZXIgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFRhcmdldEJ1ZmZlcih0YXJnZXQpOwotCi0g
ICAgICAgIGlmICghYnVmZmVyKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGJ1ZmZlci0+aXNNYXBwZWQoKSkKLSAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIENo
ZWNrIGZvciBwb3NzaWJsZSBvdmVyZmxvdyBvZiBzaXplICsgb2Zmc2V0Ci0gICAgICAgIGlmICgh
cng6OklzVW5zaWduZWRBZGRpdGlvblNhZmU8c2l6ZV90PihzaXplLCBvZmZzZXQpKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9PVVRfT0ZfTUVN
T1JZKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoc2l6
ZSArIG9mZnNldCA+IGJ1ZmZlci0+Z2V0U2l6ZSgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZGF0YSA9PSBOVUxMKQorICAgICAg
ICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0
ZUJ1ZmZlclN1YkRhdGEoY29udGV4dCwgdGFyZ2V0LCBvZmZzZXQsIHNpemUsIGRhdGEpKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBFcnJvciBl
cnJvciA9IGJ1ZmZlci0+YnVmZmVyU3ViRGF0YShkYXRhLCBzaXplLCBvZmZzZXQpOwotICAgICAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAg
ICAgY29udGV4dC0+YnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgc2l6ZSwgZGF0YSk7CiAg
ICAgfQogfQogCkBAIC01NTAsMTQgKzQ3MywxNCBAQCBHTGVudW0gR0xfQVBJRU5UUlkgQ2hlY2tG
cmFtZWJ1ZmZlclN0YXR1CiAgICAgewogICAgICAgICBpZiAoIVZhbGlkRnJhbWVidWZmZXJUYXJn
ZXQodGFyZ2V0KSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICB9CiAKLSAgICAgICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gY29udGV4dC0+Z2V0U3Rh
dGUoKS5nZXRUYXJnZXRGcmFtZWJ1ZmZlcih0YXJnZXQpOworICAgICAgICBGcmFtZWJ1ZmZlciAq
ZnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VGFyZ2V0RnJhbWVidWZmZXIo
dGFyZ2V0KTsKICAgICAgICAgQVNTRVJUKGZyYW1lYnVmZmVyKTsKIAotICAgICAgICByZXR1cm4g
ZnJhbWVidWZmZXItPmNoZWNrU3RhdHVzKGNvbnRleHQtPmdldERhdGEoKSk7CisgICAgICAgIHJl
dHVybiBmcmFtZWJ1ZmZlci0+Y2hlY2tTdGF0dXMoY29udGV4dC0+Z2V0Q29udGV4dFN0YXRlKCkp
OwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtNTg3LDcgKzUxMCw3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgQ2xlYXJDb2xvcihHTGNsYW1wZiByZWQKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBj
b250ZXh0LT5nZXRTdGF0ZSgpLnNldENvbG9yQ2xlYXJWYWx1ZShyZWQsIGdyZWVuLCBibHVlLCBh
bHBoYSk7CisgICAgICAgIGNvbnRleHQtPmNsZWFyQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxw
aGEpOwogICAgIH0KIH0KIApAQCAtNTk4LDcgKzUyMSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ2xl
YXJEZXB0aGYoR0xjbGFtcGYgZGUKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBjb250ZXh0LT5n
ZXRTdGF0ZSgpLnNldERlcHRoQ2xlYXJWYWx1ZShkZXB0aCk7CisgICAgICAgIGNvbnRleHQtPmNs
ZWFyRGVwdGhmKGRlcHRoKTsKICAgICB9CiB9CiAKQEAgLTYwOSw3ICs1MzIsNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIENsZWFyU3RlbmNpbChHTGludCBzKQogICAgIENvbnRleHQgKmNvbnRleHQgPSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IGNvbnRleHQtPmdldFN0YXRlKCkuc2V0U3RlbmNpbENsZWFyVmFsdWUocyk7CisgICAgICAgIGNv
bnRleHQtPmNsZWFyU3RlbmNpbChzKTsKICAgICB9CiB9CiAKQEAgLTYyMSw3ICs1NDQsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIENvbG9yTWFzayhHTGJvb2xlYW4gcmVkCiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgY29udGV4dC0+Z2V0U3RhdGUoKS5zZXRDb2xvck1hc2socmVkID09IEdMX1RSVUUs
IGdyZWVuID09IEdMX1RSVUUsIGJsdWUgPT0gR0xfVFJVRSwgYWxwaGEgPT0gR0xfVFJVRSk7Cisg
ICAgICAgIGNvbnRleHQtPmNvbG9yTWFzayhyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CiAgICAg
fQogfQogCkBAIC03NDUsMTggKzY2OCwxMyBAQCBHTHVpbnQgR0xfQVBJRU5UUlkgQ3JlYXRlU2hh
ZGVyKEdMZW51bSB0CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3dpdGNoICh0eXBlKQotICAg
ICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9GUkFHTUVOVF9TSEFERVI6Ci0gICAgICAgICAgY2Fz
ZSBHTF9WRVJURVhfU0hBREVSOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQtPmNyZWF0ZVNo
YWRlcih0eXBlKTsKIAotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgaWYgKCFjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZUNyZWF0ZVNoYWRlcihjb250ZXh0LCB0eXBl
KSkKKyAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGNvbnRleHQtPmNyZWF0ZVNoYWRlcih0eXBlKTsKICAgICB9Ci0KICAgICByZXR1cm4g
MDsKIH0KIApAQCAtNzc1LDExICs2OTMsMTEgQEAgdm9pZCBHTF9BUElFTlRSWSBDdWxsRmFjZShH
TGVudW0gbW9kZSkKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwor
ICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0p
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGNvbnRleHQtPmdl
dFN0YXRlKCkuc2V0Q3VsbE1vZGUobW9kZSk7CisgICAgICAgIGNvbnRleHQtPmN1bGxGYWNlKG1v
ZGUpOwogICAgIH0KIH0KIApAQCAtODQwLDEyICs3NTgsMTIgQEAgdm9pZCBHTF9BUElFTlRSWSBE
ZWxldGVQcm9ncmFtKEdMdWludCBwcgogICAgICAgICB7CiAgICAgICAgICAgICBpZihjb250ZXh0
LT5nZXRTaGFkZXIocHJvZ3JhbSkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtODg5LDEyICs4MDcsMTIgQEAgdm9pZCBHTF9B
UElFTlRSWSBEZWxldGVTaGFkZXIoR0x1aW50IHNoYQogICAgICAgICB7CiAgICAgICAgICAgICBp
Zihjb250ZXh0LT5nZXRQcm9ncmFtKHNoYWRlcikpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsK
KyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtOTQyLDEzICs4NjAsMTQgQEAg
dm9pZCBHTF9BUElFTlRSWSBEZXB0aEZ1bmMoR0xlbnVtIGZ1bmMpCiAgICAgICAgICAgY2FzZSBH
TF9HUkVBVEVSOgogICAgICAgICAgIGNhc2UgR0xfR0VRVUFMOgogICAgICAgICAgIGNhc2UgR0xf
Tk9URVFVQUw6Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRTdGF0ZSgpLnNldERlcHRoRnVuYyhm
dW5jKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBicmVhazsKIAogICAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKworICAg
ICAgICBjb250ZXh0LT5kZXB0aEZ1bmMoZnVuYyk7CiAgICAgfQogfQogCkBAIC05NTksNyArODc4
LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBEZXB0aE1hc2soR0xib29sZWFuIGZsYQogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIGNvbnRleHQtPmdldFN0YXRlKCkuc2V0RGVwdGhNYXNrKGZsYWcgIT0g
R0xfRkFMU0UpOworICAgICAgICBjb250ZXh0LT5kZXB0aE1hc2soZmxhZyk7CiAgICAgfQogfQog
CkBAIC05NzAsNyArODg5LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBEZXB0aFJhbmdlZihHTGNsYW1w
ZiB6TgogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPmdldFN0YXRlKCkuc2V0RGVw
dGhSYW5nZSh6TmVhciwgekZhcik7CisgICAgICAgIGNvbnRleHQtPmRlcHRoUmFuZ2VmKHpOZWFy
LCB6RmFyKTsKICAgICB9CiB9CiAKQEAgLTk5NSw3ICs5MTQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZ
IERldGFjaFNoYWRlcihHTHVpbnQgcHJvCiAKICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0LT5k
ZXRhY2hTaGFkZXIoc2hhZGVyT2JqZWN0KSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDA4LDEzICs5MjcsMTIgQEAg
dm9pZCBHTF9BUElFTlRSWSBEaXNhYmxlKEdMZW51bSBjYXApCiAgICAgQ29udGV4dCAqY29udGV4
dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgaWYgKCFWYWxpZENhcChjb250ZXh0LCBjYXApKQorICAgICAgICBpZiAoIWNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlRGlzYWJsZShjb250ZXh0LCBjYXApKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X0VOVU0pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGNvbnRl
eHQtPmdldFN0YXRlKCkuc2V0RW5hYmxlRmVhdHVyZShjYXAsIGZhbHNlKTsKKyAgICAgICAgY29u
dGV4dC0+ZGlzYWJsZShjYXApOwogICAgIH0KIH0KIApAQCAtMTAyNywxMSArOTQ1LDExIEBAIHZv
aWQgR0xfQVBJRU5UUlkgRGlzYWJsZVZlcnRleEF0dHJpYkFycmEKICAgICB7CiAgICAgICAgIGlm
IChpbmRleCA+PSBNQVhfVkVSVEVYX0FUVFJJQlMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGNvbnRleHQtPmdldFN0YXRlKCkuc2V0
RW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgsIGZhbHNlKTsKKyAgICAgICAgY29udGV4dC0+
ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsKICAgICB9CiB9CiAKQEAgLTEwNTAsNyAr
OTY4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBEcmF3QXJyYXlzKEdMZW51bSBtb2RlLAogICAgICAg
ICBFcnJvciBlcnJvciA9IGNvbnRleHQtPmRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KTsK
ICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMTA3
Myw3ICs5OTEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIERyYXdFbGVtZW50cyhHTGVudW0gbW9kCiAg
ICAgICAgIEVycm9yIGVycm9yID0gY29udGV4dC0+ZHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50LCB0
eXBlLCBpbmRpY2VzLCBpbmRleFJhbmdlKTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkK
ICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZXJyb3IpOworICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQpAQCAtMTA4NiwyNyArMTAwNCwxMiBAQCB2b2lkIEdMX0FQSUVO
VFJZIEVuYWJsZShHTGVudW0gY2FwKQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghVmFs
aWRDYXAoY29udGV4dCwgY2FwKSkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpICYmICFWYWxpZGF0ZUVuYWJsZShjb250ZXh0LCBjYXApKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChjb250ZXh0LT5nZXRMaW1p
dGF0aW9ucygpLm5vU2FtcGxlQWxwaGFUb0NvdmVyYWdlU3VwcG9ydCkKLSAgICAgICAgewotICAg
ICAgICAgICAgaWYgKGNhcCA9PSBHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0UpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JNZXNzYWdlID0gIkN1cnJl
bnQgcmVuZGVyZXIgZG9lc24ndCBzdXBwb3J0IGFscGhhLXRvLWNvdmVyYWdlIjsKLSAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwg
ZXJyb3JNZXNzYWdlKSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBXZSBhbHNvIG91dHB1dCBhbiBl
cnJvciBtZXNzYWdlIHRvIHRoZSBkZWJ1Z2dlciB3aW5kb3cgaWYgdHJhY2luZyBpcyBhY3RpdmUs
IHNvIHRoYXQgZGV2ZWxvcGVycyBjYW4gc2VlIHRoZSBlcnJvciBtZXNzYWdlLgotICAgICAgICAg
ICAgICAgIEVSUigiJXMiLCBlcnJvck1lc3NhZ2UpOwotCi0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgY29udGV4dC0+Z2V0U3RhdGUo
KS5zZXRFbmFibGVGZWF0dXJlKGNhcCwgdHJ1ZSk7CisgICAgICAgIGNvbnRleHQtPmVuYWJsZShj
YXApOwogICAgIH0KIH0KIApAQCAtMTExOSwxMSArMTAyMiwxMSBAQCB2b2lkIEdMX0FQSUVOVFJZ
IEVuYWJsZVZlcnRleEF0dHJpYkFycmF5CiAgICAgewogICAgICAgICBpZiAoaW5kZXggPj0gTUFY
X1ZFUlRFWF9BVFRSSUJTKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICBjb250ZXh0LT5nZXRTdGF0ZSgpLnNldEVuYWJsZVZlcnRleEF0
dHJpYkFycmF5KGluZGV4LCB0cnVlKTsKKyAgICAgICAgY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0
cmliQXJyYXkoaW5kZXgpOwogICAgIH0KIH0KIApAQCAtMTEzNyw3ICsxMDQwLDcgQEAgdm9pZCBH
TF9BUElFTlRSWSBGaW5pc2godm9pZCkKICAgICAgICAgRXJyb3IgZXJyb3IgPSBjb250ZXh0LT5m
aW5pc2goKTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
fQpAQCAtMTE1Myw3ICsxMDU2LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBGbHVzaCh2b2lkKQogICAg
ICAgICBFcnJvciBlcnJvciA9IGNvbnRleHQtPmZsdXNoKCk7CiAgICAgICAgIGlmIChlcnJvci5p
c0Vycm9yKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKGVy
cm9yKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKGVycm9yKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTEyMDcsMTIgKzExMTAsMTMgQEAgdm9p
ZCBHTF9BUElFTlRSWSBGcm9udEZhY2UoR0xlbnVtIG1vZGUpCiAgICAgICAgIHsKICAgICAgICAg
ICBjYXNlIEdMX0NXOgogICAgICAgICAgIGNhc2UgR0xfQ0NXOgotICAgICAgICAgICAgY29udGV4
dC0+Z2V0U3RhdGUoKS5zZXRGcm9udEZhY2UobW9kZSk7Ci0gICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQorCisgICAgICAgIGNvbnRleHQtPmZyb250RmFjZShtb2RlKTsK
ICAgICB9CiB9CiAKQEAgLTEyNDIsNzQgKzExNDYsMTIgQEAgdm9pZCBHTF9BUElFTlRSWSBHZW5l
cmF0ZU1pcG1hcChHTGVudW0gdAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghVmFsaWRU
ZXh0dXJlVGFyZ2V0KGNvbnRleHQsIHRhcmdldCkpCisgICAgICAgIGlmICghY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVHZW5lcmF0ZU1pcG1hcChjb250ZXh0LCB0YXJnZXQp
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IFRleHR1cmUgKnRleHR1cmUgPSBjb250ZXh0LT5nZXRUYXJnZXRUZXh0dXJlKHRhcmdldCk7Ci0K
LSAgICAgICAgaWYgKHRleHR1cmUgPT0gTlVMTCkKLSAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIEdMZW51bSBiYXNlVGFyZ2V0ID0gKHRh
cmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQKSA/IEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJ
VkVfWCA6IHRhcmdldDsKLSAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0ID0gdGV4dHVyZS0+
Z2V0SW50ZXJuYWxGb3JtYXQoYmFzZVRhcmdldCwgMCk7Ci0gICAgICAgIGNvbnN0IFRleHR1cmVD
YXBzICZmb3JtYXRDYXBzID0gY29udGV4dC0+Z2V0VGV4dHVyZUNhcHMoKS5nZXQoaW50ZXJuYWxG
b3JtYXQpOwotICAgICAgICBjb25zdCBJbnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9IEdldElu
dGVybmFsRm9ybWF0SW5mbyhpbnRlcm5hbEZvcm1hdCk7Ci0KLSAgICAgICAgLy8gR2VuZXJhdGVN
aXBtYXAgc2hvdWxkIG5vdCBnZW5lcmF0ZSBhbiBJTlZBTElEX09QRVJBVElPTiBmb3IgdGV4dHVy
ZXMgY3JlYXRlZCB3aXRoCi0gICAgICAgIC8vIHVuc2l6ZWQgZm9ybWF0cyBvciB0aGF0IGFyZSBj
b2xvciByZW5kZXJhYmxlIGFuZCBmaWx0ZXJhYmxlLiAgU2luY2Ugd2UgZG8gbm90IHRyYWNrIGlm
Ci0gICAgICAgIC8vIHRoZSB0ZXh0dXJlIHdhcyBjcmVhdGVkIHdpdGggc2l6ZWQgb3IgdW5zaXpl
ZCBmb3JtYXQgKG9ubHkgc2l6ZWQgZm9ybWF0cyBhcmUgc3RvcmVkKSwKLSAgICAgICAgLy8gaXQg
aXMgbm90IHBvc3NpYmxlIHRvIG1ha2Ugc3VyZSB0aGUgdGhlIExVTUEgZm9ybWF0cyBjYW4gZ2Vu
ZXJhdGUgbWlwbWFwcyAodGhleSBzaG91bGQKLSAgICAgICAgLy8gYmUgYWJsZSB0bykgYmVjYXVz
ZSB0aGV5IGFyZW4ndCBjb2xvciByZW5kZXJhYmxlLiAgU2ltcGx5IGRvIGEgc3BlY2lhbCBjYXNl
IGZvciBMVU1BCi0gICAgICAgIC8vIHRleHR1cmVzIHNpbmNlIHRoZXkncmUgdGhlIG9ubHkgdGV4
dHVyZSBmb3JtYXQgdGhhdCBjYW4gYmUgY3JlYXRlZCB3aXRoIHVuc2l6ZWQgZm9ybWF0cwotICAg
ICAgICAvLyB0aGF0IGlzIG5vdCBjb2xvciByZW5kZXJhYmxlLiAgTmV3IHVuc2l6ZWQgZm9ybWF0
cyBhcmUgdW5saWtlbHkgdG8gYmUgYWRkZWQsIHNpbmNlIEVTMgotICAgICAgICAvLyB3YXMgdGhl
IGxhc3QgdmVyc2lvbiB0byB1c2UgYWRkIHRoZW0uCi0gICAgICAgIGJvb2wgaXNMVU1BID0gaW50
ZXJuYWxGb3JtYXQgPT0gR0xfTFVNSU5BTkNFOF9FWFQgfHwKLSAgICAgICAgICAgICAgICAgICAg
ICBpbnRlcm5hbEZvcm1hdCA9PSBHTF9MVU1JTkFOQ0U4X0FMUEhBOF9FWFQgfHwKLSAgICAgICAg
ICAgICAgICAgICAgICBpbnRlcm5hbEZvcm1hdCA9PSBHTF9BTFBIQThfRVhUOwotCi0gICAgICAg
IGlmIChmb3JtYXRJbmZvLmRlcHRoQml0cyA+IDAgfHwgZm9ybWF0SW5mby5zdGVuY2lsQml0cyA+
IDAgfHwgIWZvcm1hdENhcHMuZmlsdGVyYWJsZSB8fAotICAgICAgICAgICAgKCFmb3JtYXRDYXBz
LnJlbmRlcmFibGUgJiYgIWlzTFVNQSkgfHwgZm9ybWF0SW5mby5jb21wcmVzc2VkKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
R0xfRVhUX3NSR0IgZG9lcyBub3Qgc3VwcG9ydCBtaXBtYXAgZ2VuZXJhdGlvbiBvbiBzUkdCIHRl
eHR1cmVzCi0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPT0gMiAmJiBm
b3JtYXRJbmZvLmNvbG9yRW5jb2RpbmcgPT0gR0xfU1JHQikKLSAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIE5vbi1wb3dlciBvZiAy
IEVTMiBjaGVjawotICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJl
TlBPVCAmJgotICAgICAgICAgICAgKCFpc1BvdzIoc3RhdGljX2Nhc3Q8aW50Pih0ZXh0dXJlLT5n
ZXRXaWR0aChiYXNlVGFyZ2V0LCAwKSkpIHx8Ci0gICAgICAgICAgICAgIWlzUG93MihzdGF0aWNf
Y2FzdDxpbnQ+KHRleHR1cmUtPmdldEhlaWdodChiYXNlVGFyZ2V0LCAwKSkpKSkKLSAgICAgICAg
ewotICAgICAgICAgICAgQVNTRVJUKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8PSAyICYm
ICh0YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCB8fCB0YXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01B
UCkpOwotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8v
IEN1YmUgY29tcGxldGVuZXNzIGNoZWNrCi0gICAgICAgIGlmICh0YXJnZXQgPT0gR0xfVEVYVFVS
RV9DVUJFX01BUCAmJiAhdGV4dHVyZS0+aXNDdWJlQ29tcGxldGUoKSkKLSAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIEVycm9yIGVycm9y
ID0gdGV4dHVyZS0+Z2VuZXJhdGVNaXBtYXBzKCk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9y
KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKGVycm9yKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBjb250ZXh0LT5nZW5lcmF0
ZU1pcG1hcCh0YXJnZXQpOwogICAgIH0KIH0KIApAQCAtMTM4MSw3ICsxMjIzLDcgQEAgdm9pZCBH
TF9BUElFTlRSWSBHZXRBY3RpdmVBdHRyaWIoR0x1aW50IAogICAgIHsKICAgICAgICAgaWYgKGJ1
ZnNpemUgPCAwKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIApAQCAtMTM5NCw3ICsxMjM2LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRBY3RpdmVBdHRy
aWIoR0x1aW50IAogCiAgICAgICAgIGlmIChpbmRleCA+PSAoR0x1aW50KXByb2dyYW1PYmplY3Qt
PmdldEFjdGl2ZUF0dHJpYnV0ZUNvdW50KCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCkBAIC0xNDE0LDcgKzEyNTYsNyBAQCB2b2lkIEdMX0FQSUVO
VFJZIEdldEFjdGl2ZVVuaWZvcm0oR0x1aW50CiAgICAgewogICAgICAgICBpZiAoYnVmc2l6ZSA8
IDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBA
IC0xNDI3LDcgKzEyNjksNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldEFjdGl2ZVVuaWZvcm0oR0x1
aW50CiAKICAgICAgICAgaWYgKGluZGV4ID49IChHTHVpbnQpcHJvZ3JhbU9iamVjdC0+Z2V0QWN0
aXZlVW5pZm9ybUNvdW50KCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCkBAIC0xNDQ1LDcgKzEyODcsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldEF0
dGFjaGVkU2hhZGVycyhHTHVpCiAgICAgewogICAgICAgICBpZiAobWF4Y291bnQgPCAwKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X1ZBTFVFKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTQ3Niw3
ICsxMzE4LDcgQEAgR0xpbnQgR0xfQVBJRU5UUlkgR2V0QXR0cmliTG9jYXRpb24oR0x1aQogCiAg
ICAgICAgIGlmICghcHJvZ3JhbU9iamVjdC0+aXNMaW5rZWQoKSkKICAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKSk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KIApAQCAtMTUxOCw1MyAr
MTM2MCwxNCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldEJ1ZmZlclBhcmFtZXRlcml2KEdMCiAgICAg
Q29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKCFWYWxpZEJ1ZmZlclRhcmdldChjb250ZXh0LCB0YXJn
ZXQpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAg
ICAgIGlmICghVmFsaWRCdWZmZXJQYXJhbWV0ZXIoY29udGV4dCwgcG5hbWUpKQotICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0p
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIEJ1ZmZlciAqYnVm
ZmVyID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRUYXJnZXRCdWZmZXIodGFyZ2V0KTsKLQotICAg
ICAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
ICYmCisgICAgICAgICAgICAhVmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0ZXJpdihjb250ZXh0LCB0
YXJnZXQsIHBuYW1lLCBwYXJhbXMpKQogICAgICAgICB7Ci0gICAgICAgICAgICAvLyBBIG51bGwg
YnVmZmVyIG1lYW5zIHRoYXQgIjAiIGlzIGJvdW5kIHRvIHRoZSByZXF1ZXN0ZWQgYnVmZmVyIHRh
cmdldAotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHN3
aXRjaCAocG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX0JVRkZFUl9VU0FHRToK
LSAgICAgICAgICAgICpwYXJhbXMgPSBzdGF0aWNfY2FzdDxHTGludD4oYnVmZmVyLT5nZXRVc2Fn
ZSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfQlVGRkVSX1NJWkU6
Ci0gICAgICAgICAgICAqcGFyYW1zID0gY2xhbXBDYXN0PEdMaW50PihidWZmZXItPmdldFNpemUo
KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX0JVRkZFUl9BQ0NFU1Nf
RkxBR1M6Ci0gICAgICAgICAgICAqcGFyYW1zID0gYnVmZmVyLT5nZXRBY2Nlc3NGbGFncygpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9CVUZGRVJfQUNDRVNTX09FUzoK
LSAgICAgICAgICAgICpwYXJhbXMgPSBidWZmZXItPmdldEFjY2VzcygpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9CVUZGRVJfTUFQUEVEOgotICAgICAgICAgICAgc3Rh
dGljX2Fzc2VydChHTF9CVUZGRVJfTUFQUEVEID09IEdMX0JVRkZFUl9NQVBQRURfT0VTLCAiR0wg
ZW51bXMgc2hvdWxkIGJlIGVxdWFsLiIpOwotICAgICAgICAgICAgKnBhcmFtcyA9IHN0YXRpY19j
YXN0PEdMaW50PihidWZmZXItPmlzTWFwcGVkKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgY2FzZSBHTF9CVUZGRVJfTUFQX09GRlNFVDoKLSAgICAgICAgICAgICpwYXJhbXMgPSBj
bGFtcENhc3Q8R0xpbnQ+KGJ1ZmZlci0+Z2V0TWFwT2Zmc2V0KCkpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgY2FzZSBHTF9CVUZGRVJfTUFQX0xFTkdUSDoKLSAgICAgICAgICAgICpw
YXJhbXMgPSBjbGFtcENhc3Q8R0xpbnQ+KGJ1ZmZlci0+Z2V0TWFwTGVuZ3RoKCkpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgYnJlYWs7Ci0g
ICAgICAgIH0KKyAgICAgICAgQnVmZmVyICpidWZmZXIgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCku
Z2V0VGFyZ2V0QnVmZmVyKHRhcmdldCk7CisgICAgICAgIFF1ZXJ5QnVmZmVyUGFyYW1ldGVyaXYo
YnVmZmVyLCBwbmFtZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKQEAgLTE2MTUsMjgyICsxNDE4LDM5
IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0RnJhbWVidWZmZXJBdHRhY2htZW4KICAgICBDb250ZXh0
ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBpZiAoIVZhbGlkRnJhbWVidWZmZXJUYXJnZXQodGFyZ2V0KSkKKyAgICAg
ICAgR0xzaXplaSBudW1QYXJhbXMgPSAwOworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0ZUdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcml2KGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbnVtUGFy
YW1zKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBpbnQgY2xpZW50VmVyc2lvbiA9IGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKTsKLQot
ICAgICAgICBzd2l0Y2ggKHBuYW1lKQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9GUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFOgotICAgICAgICAgIGNhc2UgR0xfRlJBTUVC
VUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRToKLSAgICAgICAgICBjYXNlIEdMX0ZSQU1FQlVG
RkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTDoKLSAgICAgICAgICBjYXNlIEdMX0ZSQU1FQlVG
RkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFOgotICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNvbnN0IEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldEdM
U3RhdGUoKS5nZXRUYXJnZXRGcmFtZWJ1ZmZlcih0YXJnZXQpOworICAgICAgICBRdWVyeUZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KGZyYW1lYnVmZmVyLCBhdHRhY2htZW50LCBwbmFt
ZSwgcGFyYW1zKTsKKyAgICB9Cit9CiAKLSAgICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FU
VEFDSE1FTlRfQ09MT1JfRU5DT0RJTkc6Ci0gICAgICAgICAgICBpZiAoY2xpZW50VmVyc2lvbiA8
IDMgJiYgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zUkdCKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkp
OwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJy
ZWFrOwordm9pZCBHTF9BUElFTlRSWSBHZXRJbnRlZ2VydihHTGVudW0gcG5hbWUsIEdMaW50KiBw
YXJhbXMpCit7CisgICAgRVZFTlQoIihHTGVudW0gcG5hbWUgPSAweCVYLCBHTGludCogcGFyYW1z
ID0gMHglMC44cCkiLCBwbmFtZSwgcGFyYW1zKTsKIAotICAgICAgICAgIGNhc2UgR0xfRlJBTUVC
VUZGRVJfQVRUQUNITUVOVF9SRURfU0laRToKLSAgICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVS
X0FUVEFDSE1FTlRfR1JFRU5fU0laRToKLSAgICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FU
VEFDSE1FTlRfQkxVRV9TSVpFOgotICAgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfQVRUQUNI
TUVOVF9BTFBIQV9TSVpFOgotICAgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVO
VF9ERVBUSF9TSVpFOgotICAgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9T
VEVOQ0lMX1NJWkU6Ci0gICAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NP
TVBPTkVOVF9UWVBFOgotICAgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9U
RVhUVVJFX0xBWUVSOgotICAgICAgICAgICAgaWYgKGNsaWVudFZlcnNpb24gPCAzKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfRU5VTSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGJyZWFrOworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIEdMZW51bSBuYXRpdmVU
eXBlOworICAgICAgICB1bnNpZ25lZCBpbnQgbnVtUGFyYW1zID0gMDsKIAotICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X0VOVU0pKTsKKyAgICAgICAgaWYgKCFWYWxpZGF0ZVN0YXRlUXVlcnkoY29udGV4dCwgcG5hbWUs
ICZuYXRpdmVUeXBlLCAmbnVtUGFyYW1zKSkKKyAgICAgICAgewogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBhdHRhY2htZW50IGlz
IGEgdmFsaWQgZW51bQotICAgICAgICBzd2l0Y2ggKGF0dGFjaG1lbnQpCisgICAgICAgIGlmIChu
YXRpdmVUeXBlID09IEdMX0lOVCkKICAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfQkFDSzoK
LSAgICAgICAgICBjYXNlIEdMX0ZST05UOgotICAgICAgICAgIGNhc2UgR0xfREVQVEg6Ci0gICAg
ICAgICAgY2FzZSBHTF9TVEVOQ0lMOgotICAgICAgICAgIGNhc2UgR0xfREVQVEhfU1RFTkNJTF9B
VFRBQ0hNRU5UOgotICAgICAgICAgICAgaWYgKGNsaWVudFZlcnNpb24gPCAzKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFM
SURfRU5VTSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgY2FzZSBHTF9ERVBUSF9BVFRBQ0hNRU5UOgotICAg
ICAgICAgIGNhc2UgR0xfU1RFTkNJTF9BVFRBQ0hNRU5UOgotICAgICAgICAgICAgYnJlYWs7Ci0K
LSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnQgPCBHTF9DT0xP
Ul9BVFRBQ0hNRU5UMF9FWFQgfHwKLSAgICAgICAgICAgICAgICAoYXR0YWNobWVudCAtIEdMX0NP
TE9SX0FUVEFDSE1FTlQwX0VYVCkgPj0gY29udGV4dC0+Z2V0Q2FwcygpLm1heENvbG9yQXR0YWNo
bWVudHMpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRJ
bnRlZ2VydihwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQotCi0gICAgICAgIGNvbnN0IEZyYW1l
YnVmZmVyICpmcmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0VGFyZ2V0RnJhbWVi
dWZmZXIodGFyZ2V0KTsKLSAgICAgICAgQVNTRVJUKGZyYW1lYnVmZmVyKTsKLQotICAgICAgICBp
ZiAoZnJhbWVidWZmZXItPmlkKCkgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGNs
aWVudFZlcnNpb24gPCAzKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzd2l0Y2ggKGF0dGFjaG1l
bnQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfQkFDSzoKLSAgICAgICAg
ICAgICAgY2FzZSBHTF9ERVBUSDoKLSAgICAgICAgICAgICAgY2FzZSBHTF9TVEVOQ0lMOgotICAg
ICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg
ICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoYXR0YWNobWVudCA+PSBHTF9DT0xP
Ul9BVFRBQ0hNRU5UMF9FWFQgJiYgYXR0YWNobWVudCA8PSBHTF9DT0xPUl9BVFRBQ0hNRU5UMTVf
RVhUKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIFZhbGlkIGF0dGFjaG1lbnQg
cXVlcnkKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBzd2l0Y2ggKGF0dGFjaG1lbnQpCi0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9BVFRBQ0hNRU5UOgotICAgICAgICAgICAgICAg
ICAgY2FzZSBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVDoK
LSAgICAgICAgICAgICAgICAgICAgaWYgKCFmcmFtZWJ1ZmZlci0+aGFzVmFsaWREZXB0aFN0ZW5j
aWwoKSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNo
bWVudCAqYXR0YWNobWVudE9iamVjdCA9IGZyYW1lYnVmZmVyLT5nZXRBdHRhY2htZW50KGF0dGFj
aG1lbnQpOwotICAgICAgICBpZiAoYXR0YWNobWVudE9iamVjdCkKLSAgICAgICAgewotICAgICAg
ICAgICAgQVNTRVJUKGF0dGFjaG1lbnRPYmplY3QtPnR5cGUoKSA9PSBHTF9SRU5ERVJCVUZGRVIg
fHwKLSAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50T2JqZWN0LT50eXBlKCkgPT0gR0xfVEVY
VFVSRSB8fAotICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRPYmplY3QtPnR5cGUoKSA9PSBH
TF9GUkFNRUJVRkZFUl9ERUZBVUxUKTsKLQotICAgICAgICAgICAgc3dpdGNoIChwbmFtZSkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5U
X09CSkVDVF9UWVBFOgotICAgICAgICAgICAgICAgICpwYXJhbXMgPSBhdHRhY2htZW50T2JqZWN0
LT50eXBlKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgY2FzZSBH
TF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FOgotICAgICAgICAgICAgICAgIGlm
IChhdHRhY2htZW50T2JqZWN0LT50eXBlKCkgIT0gR0xfUkVOREVSQlVGRkVSICYmIGF0dGFjaG1l
bnRPYmplY3QtPnR5cGUoKSAhPSBHTF9URVhUVVJFKQotICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVN
KSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgKnBhcmFtcyA9IGF0dGFjaG1lbnRPYmplY3QtPmlkKCk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hN
RU5UX1RFWFRVUkVfTEVWRUw6Ci0gICAgICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnRPYmplY3Qt
PnR5cGUoKSAhPSBHTF9URVhUVVJFKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgKnBhcmFtcyA9IGF0dGFjaG1lbnRPYmplY3QtPm1pcExldmVsKCk7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5U
X1RFWFRVUkVfQ1VCRV9NQVBfRkFDRToKLSAgICAgICAgICAgICAgICBpZiAoYXR0YWNobWVudE9i
amVjdC0+dHlwZSgpICE9IEdMX1RFWFRVUkUpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAqcGFyYW1zID0gYXR0YWNobWVudE9iamVjdC0+Y3ViZU1hcEZhY2UoKTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FU
VEFDSE1FTlRfUkVEX1NJWkU6Ci0gICAgICAgICAgICAgICAgKnBhcmFtcyA9IGF0dGFjaG1lbnRP
YmplY3QtPmdldFJlZFNpemUoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAg
ICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfR1JFRU5fU0laRToKLSAgICAgICAg
ICAgICAgICAqcGFyYW1zID0gYXR0YWNobWVudE9iamVjdC0+Z2V0R3JlZW5TaXplKCk7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9B
VFRBQ0hNRU5UX0JMVUVfU0laRToKLSAgICAgICAgICAgICAgICAqcGFyYW1zID0gYXR0YWNobWVu
dE9iamVjdC0+Z2V0Qmx1ZVNpemUoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAg
ICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQUxQSEFfU0laRToKLSAgICAg
ICAgICAgICAgICAqcGFyYW1zID0gYXR0YWNobWVudE9iamVjdC0+Z2V0QWxwaGFTaXplKCk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZF
Ul9BVFRBQ0hNRU5UX0RFUFRIX1NJWkU6Ci0gICAgICAgICAgICAgICAgKnBhcmFtcyA9IGF0dGFj
aG1lbnRPYmplY3QtPmdldERlcHRoU2l6ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0g
ICAgICAgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9TVEVOQ0lMX1NJWkU6
Ci0gICAgICAgICAgICAgICAgKnBhcmFtcyA9IGF0dGFjaG1lbnRPYmplY3QtPmdldFN0ZW5jaWxT
aXplKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgY2FzZSBHTF9G
UkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTVBPTkVOVF9UWVBFOgotICAgICAgICAgICAgICAgIGlm
IChhdHRhY2htZW50ID09IEdMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVCkKLSAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgKnBhcmFtcyA9IGF0dGFjaG1lbnRPYmplY3Qt
PmdldENvbXBvbmVudFR5cGUoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAg
ICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkc6Ci0gICAg
ICAgICAgICAgICAgKnBhcmFtcyA9IGF0dGFjaG1lbnRPYmplY3QtPmdldENvbG9yRW5jb2Rpbmco
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICBjYXNlIEdMX0ZSQU1F
QlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MQVlFUjoKLSAgICAgICAgICAgICAgICBpZiAoYXR0
YWNobWVudE9iamVjdC0+dHlwZSgpICE9IEdMX1RFWFRVUkUpCi0gICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X0VOVU0pKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAqcGFyYW1zID0gYXR0YWNobWVudE9iamVjdC0+bGF5ZXIoKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBF
UyAyLjAuMjUgc3BlYyBwZyAxMjcgc3RhdGVzIHRoYXQgaWYgdGhlIHZhbHVlIG9mIEZSQU1FQlVG
RkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUKLSAgICAgICAgICAgIC8vIGlzIE5PTkUsIHRoZW4g
cXVlcnlpbmcgYW55IG90aGVyIHBuYW1lIHdpbGwgZ2VuZXJhdGUgSU5WQUxJRF9FTlVNLgotCi0g
ICAgICAgICAgICAvLyBFUyAzLjAuMiBzcGVjIHBnIDIzNSBzdGF0ZXMgdGhhdCBpZiB0aGUgYXR0
YWNobWVudCB0eXBlIGlzIG5vbmUsCi0gICAgICAgICAgICAvLyBHTF9GUkFNRUJVRkZFUl9BVFRB
Q0hNRU5UX09CSkVDVF9OQU1FIHdpbGwgcmV0dXJuIHplcm8gYW5kIGJlIGFuCi0gICAgICAgICAg
ICAvLyBJTlZBTElEX09QRVJBVElPTiBmb3IgYWxsIG90aGVyIHBuYW1lcwotCi0gICAgICAgICAg
ICBzd2l0Y2ggKHBuYW1lKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBjYXNlIEdMX0ZS
QU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEU6Ci0gICAgICAgICAgICAgICAgKnBhcmFt
cyA9IEdMX05PTkU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgY2Fz
ZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FOgotICAgICAgICAgICAgICAg
IGlmIChjbGllbnRWZXJzaW9uIDwgMykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAg
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICpwYXJhbXMgPSAwOwotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgaWYgKGNsaWVudFZlcnNpb24gPCAzKQotICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBHTF9BUElFTlRS
WSBHZXRJbnRlZ2VydihHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpCi17Ci0gICAgRVZFTlQo
IihHTGVudW0gcG5hbWUgPSAweCVYLCBHTGludCogcGFyYW1zID0gMHglMC44cCkiLCBwbmFtZSwg
cGFyYW1zKTsKLQotICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KTsKLSAgICBpZiAoY29udGV4dCkKLSAgICB7Ci0gICAgICAgIEdMZW51bSBuYXRpdmVUeXBlOwot
ICAgICAgICB1bnNpZ25lZCBpbnQgbnVtUGFyYW1zID0gMDsKLQotICAgICAgICBpZiAoIVZhbGlk
YXRlU3RhdGVRdWVyeShjb250ZXh0LCBwbmFtZSwgJm5hdGl2ZVR5cGUsICZudW1QYXJhbXMpKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
bmF0aXZlVHlwZSA9PSBHTF9JTlQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdl
dEludGVnZXJ2KHBuYW1lLCBwYXJhbXMpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKKyAgICAg
ICAgZWxzZQogICAgICAgICB7CiAgICAgICAgICAgICBDYXN0U3RhdGVWYWx1ZXMoY29udGV4dCwg
bmF0aXZlVHlwZSwgcG5hbWUsIG51bVBhcmFtcywgcGFyYW1zKTsKICAgICAgICAgfQpAQCAtMTkw
NCw4MyArMTQ2NCwxNSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFByb2dyYW1pdihHTHVpbnQgcHJv
CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IEdldFZh
bGlkUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFtKTsKLQotICAgICAgICBpZiAoIXByb2dyYW1PYmpl
Y3QpCisgICAgICAgIEdMc2l6ZWkgbnVtUGFyYW1zID0gMDsKKyAgICAgICAgaWYgKCFjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVHZXRQcm9ncmFtaXYo
Y29udGV4dCwgcHJvZ3JhbSwgcG5hbWUsICZudW1QYXJhbXMpKQogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50
VmVyc2lvbigpIDwgMykKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChwbmFtZSkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBHTF9BQ1RJVkVfVU5JRk9STV9CTE9DS1M6
Ci0gICAgICAgICAgICAgIGNhc2UgR0xfQUNUSVZFX1VOSUZPUk1fQkxPQ0tfTUFYX05BTUVfTEVO
R1RIOgotICAgICAgICAgICAgICBjYXNlIEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfTU9E
RToKLSAgICAgICAgICAgICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlOR1M6Ci0g
ICAgICAgICAgICAgIGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1ZBUllJTkdfTUFYX0xFTkdU
SDoKLSAgICAgICAgICAgICAgY2FzZSBHTF9QUk9HUkFNX0JJTkFSWV9SRVRSSUVWQUJMRV9ISU5U
OgotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURf
RU5VTSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotCi0gICAgICAgIHN3aXRjaCAocG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdM
X0RFTEVURV9TVEFUVVM6Ci0gICAgICAgICAgICAqcGFyYW1zID0gcHJvZ3JhbU9iamVjdC0+aXNG
bGFnZ2VkRm9yRGVsZXRpb24oKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICBjYXNl
IEdMX0xJTktfU1RBVFVTOgotICAgICAgICAgICAgKnBhcmFtcyA9IHByb2dyYW1PYmplY3QtPmlz
TGlua2VkKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgY2FzZSBHTF9WQUxJREFU
RV9TVEFUVVM6Ci0gICAgICAgICAgICAqcGFyYW1zID0gcHJvZ3JhbU9iamVjdC0+aXNWYWxpZGF0
ZWQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICBjYXNlIEdMX0lORk9fTE9HX0xF
TkdUSDoKLSAgICAgICAgICAgICpwYXJhbXMgPSBwcm9ncmFtT2JqZWN0LT5nZXRJbmZvTG9nTGVu
Z3RoKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgY2FzZSBHTF9BVFRBQ0hFRF9T
SEFERVJTOgotICAgICAgICAgICAgKnBhcmFtcyA9IHByb2dyYW1PYmplY3QtPmdldEF0dGFjaGVk
U2hhZGVyc0NvdW50KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgY2FzZSBHTF9B
Q1RJVkVfQVRUUklCVVRFUzoKLSAgICAgICAgICAgICpwYXJhbXMgPSBwcm9ncmFtT2JqZWN0LT5n
ZXRBY3RpdmVBdHRyaWJ1dGVDb3VudCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
IGNhc2UgR0xfQUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RIOgotICAgICAgICAgICAgKnBhcmFt
cyA9IHByb2dyYW1PYmplY3QtPmdldEFjdGl2ZUF0dHJpYnV0ZU1heExlbmd0aCgpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgIGNhc2UgR0xfQUNUSVZFX1VOSUZPUk1TOgotICAgICAg
ICAgICAgKnBhcmFtcyA9IHByb2dyYW1PYmplY3QtPmdldEFjdGl2ZVVuaWZvcm1Db3VudCgpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgIGNhc2UgR0xfQUNUSVZFX1VOSUZPUk1fTUFY
X0xFTkdUSDoKLSAgICAgICAgICAgICpwYXJhbXMgPSBwcm9ncmFtT2JqZWN0LT5nZXRBY3RpdmVV
bmlmb3JtTWF4TGVuZ3RoKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgY2FzZSBH
TF9QUk9HUkFNX0JJTkFSWV9MRU5HVEhfT0VTOgotICAgICAgICAgICAgKnBhcmFtcyA9IHByb2dy
YW1PYmplY3QtPmdldEJpbmFyeUxlbmd0aCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgIGNhc2UgR0xfQUNUSVZFX1VOSUZPUk1fQkxPQ0tTOgotICAgICAgICAgICAgKnBhcmFtcyA9
IHByb2dyYW1PYmplY3QtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja0NvdW50KCk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgY2FzZSBHTF9BQ1RJVkVfVU5JRk9STV9CTE9DS19NQVhfTkFN
RV9MRU5HVEg6Ci0gICAgICAgICAgICAqcGFyYW1zID0gcHJvZ3JhbU9iamVjdC0+Z2V0QWN0aXZl
VW5pZm9ybUJsb2NrTWF4TGVuZ3RoKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBj
YXNlIEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfTU9ERToKLSAgICAgICAgICAgICpwYXJh
bXMgPSBwcm9ncmFtT2JqZWN0LT5nZXRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUoKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1ZB
UllJTkdTOgotICAgICAgICAgICAgKnBhcmFtcyA9IHByb2dyYW1PYmplY3QtPmdldFRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZ0NvdW50KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBj
YXNlIEdMX1RSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HX01BWF9MRU5HVEg6Ci0gICAgICAgICAg
ICAqcGFyYW1zID0gcHJvZ3JhbU9iamVjdC0+Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nTWF4
TGVuZ3RoKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1BST0dSQU1f
QklOQVJZX1JFVFJJRVZBQkxFX0hJTlQ6Ci0gICAgICAgICAgICAgICpwYXJhbXMgPSBwcm9ncmFt
T2JqZWN0LT5nZXRCaW5hcnlSZXRyaWV2YWJsZUhpbnQoKTsKLSAgICAgICAgICAgICAgYnJlYWs7
Ci0KLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
KyAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJv
Z3JhbSk7CisgICAgICAgIFF1ZXJ5UHJvZ3JhbWl2KHByb2dyYW1PYmplY3QsIHBuYW1lLCBwYXJh
bXMpOwogICAgIH0KIH0KIApAQCAtMTk5NCw3ICsxNDg2LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBH
ZXRQcm9ncmFtSW5mb0xvZyhHTHVpbgogICAgIHsKICAgICAgICAgaWYgKGJ1ZnNpemUgPCAwKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZB
TElEX1ZBTFVFKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjAx
NSw0NSArMTUwNywxNCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKHRhcmdldCAhPSBHTF9SRU5ERVJCVUZGRVIp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfRU5VTSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0UmVuZGVyYnVmZmVySWQoKSA9PSAwKQorICAgICAg
ICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0
ZUdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIHBhcmFt
cykpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlciA9IGNvbnRleHQtPmdldFJlbmRlcmJ1
ZmZlcihjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFJlbmRlcmJ1ZmZlcklkKCkpOwotCi0gICAgICAg
IHN3aXRjaCAocG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX1JFTkRFUkJVRkZF
Ul9XSURUSDogICAgICAgICAgICpwYXJhbXMgPSByZW5kZXJidWZmZXItPmdldFdpZHRoKCk7ICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0hFSUdIVDogICAg
ICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0SGVpZ2h0KCk7ICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUOiAqcGFyYW1z
ID0gcmVuZGVyYnVmZmVyLT5nZXRJbnRlcm5hbEZvcm1hdCgpOyBicmVhazsKLSAgICAgICAgICBj
YXNlIEdMX1JFTkRFUkJVRkZFUl9SRURfU0laRTogICAgICAgICpwYXJhbXMgPSByZW5kZXJidWZm
ZXItPmdldFJlZFNpemUoKTsgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfUkVOREVS
QlVGRkVSX0dSRUVOX1NJWkU6ICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0R3JlZW5T
aXplKCk7ICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVJfQkxVRV9T
SVpFOiAgICAgICAqcGFyYW1zID0gcmVuZGVyYnVmZmVyLT5nZXRCbHVlU2l6ZSgpOyAgICAgICBi
cmVhazsKLSAgICAgICAgICBjYXNlIEdMX1JFTkRFUkJVRkZFUl9BTFBIQV9TSVpFOiAgICAgICpw
YXJhbXMgPSByZW5kZXJidWZmZXItPmdldEFscGhhU2l6ZSgpOyAgICAgIGJyZWFrOwotICAgICAg
ICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0RFUFRIX1NJWkU6ICAgICAgKnBhcmFtcyA9IHJlbmRl
cmJ1ZmZlci0+Z2V0RGVwdGhTaXplKCk7ICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9S
RU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFOiAgICAqcGFyYW1zID0gcmVuZGVyYnVmZmVyLT5nZXRT
dGVuY2lsU2l6ZSgpOyAgICBicmVhazsKLQotICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVS
X1NBTVBMRVNfQU5HTEU6Ci0gICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5mcmFtZWJ1ZmZlck11bHRpc2FtcGxlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICpwYXJhbXMgPSByZW5k
ZXJidWZmZXItPmdldFNhbXBsZXMoKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFM
SURfRU5VTSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIFJlbmRl
cmJ1ZmZlciAqcmVuZGVyYnVmZmVyID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldEN1cnJlbnRS
ZW5kZXJidWZmZXIoKTsKKyAgICAgICAgUXVlcnlSZW5kZXJidWZmZXJpdihyZW5kZXJidWZmZXIs
IHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIApAQCAtMjA2NCwzNyArMTUyNSwxMyBAQCB2b2lk
IEdMX0FQSUVOVFJZIEdldFNoYWRlcml2KEdMdWludCBzaGFkCiAgICAgQ29udGV4dCAqY29udGV4
dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgU2hhZGVyICpzaGFkZXJPYmplY3QgPSBHZXRWYWxpZFNoYWRlcihjb250ZXh0LCBzaGFk
ZXIpOwotICAgICAgICBpZiAoIXNoYWRlck9iamVjdCkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZUdldFNoYWRlcml2KGNvbnRleHQsIHNoYWRlciwg
cG5hbWUsIHBhcmFtcykpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIHN3aXRjaCAocG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdM
X1NIQURFUl9UWVBFOgotICAgICAgICAgICAgKnBhcmFtcyA9IHNoYWRlck9iamVjdC0+Z2V0VHlw
ZSgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgIGNhc2UgR0xfREVMRVRFX1NUQVRV
UzoKLSAgICAgICAgICAgICpwYXJhbXMgPSBzaGFkZXJPYmplY3QtPmlzRmxhZ2dlZEZvckRlbGV0
aW9uKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgY2FzZSBHTF9DT01QSUxFX1NU
QVRVUzoKLSAgICAgICAgICAgICpwYXJhbXMgPSBzaGFkZXJPYmplY3QtPmlzQ29tcGlsZWQoKSA/
IEdMX1RSVUUgOiBHTF9GQUxTRTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICBjYXNl
IEdMX0lORk9fTE9HX0xFTkdUSDoKLSAgICAgICAgICAgICpwYXJhbXMgPSBzaGFkZXJPYmplY3Qt
PmdldEluZm9Mb2dMZW5ndGgoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICBjYXNl
IEdMX1NIQURFUl9TT1VSQ0VfTEVOR1RIOgotICAgICAgICAgICAgKnBhcmFtcyA9IHNoYWRlck9i
amVjdC0+Z2V0U291cmNlTGVuZ3RoKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
Y2FzZSBHTF9UUkFOU0xBVEVEX1NIQURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFOgotICAgICAgICAg
ICAgKnBhcmFtcyA9IHNoYWRlck9iamVjdC0+Z2V0VHJhbnNsYXRlZFNvdXJjZVdpdGhEZWJ1Z0lu
Zm9MZW5ndGgoKTsKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBTaGFkZXIgKnNoYWRlck9i
amVjdCA9IGNvbnRleHQtPmdldFNoYWRlcihzaGFkZXIpOworICAgICAgICBRdWVyeVNoYWRlcml2
KHNoYWRlck9iamVjdCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCkBAIC0yMTA4LDcgKzE1
NDUsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFNoYWRlckluZm9Mb2coR0x1aW50CiAgICAgewog
ICAgICAgICBpZiAoYnVmc2l6ZSA8IDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCkBAIC0yMTU2LDcgKzE1OTMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZ
IEdldFNoYWRlclByZWNpc2lvbkZvcm1hCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjE4NCwxMiArMTYyMSwxMiBA
QCB2b2lkIEdMX0FQSUVOVFJZIEdldFNoYWRlclByZWNpc2lvbkZvcm1hCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApA
QCAtMjIwNiw3ICsxNjQzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRTaGFkZXJTb3VyY2UoR0x1
aW50IAogICAgIHsKICAgICAgICAgaWYgKGJ1ZnNpemUgPCAwKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjIzNCwxMCArMTY3MSwxMCBAQCBj
b25zdCBHTHVieXRlICpHTF9BUElFTlRSWSBHZXRTdHJpbmcoR0xlCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSAqPigiR29vZ2xlIEluYy4iKTsK
IAogICAgICAgICAgICAgY2FzZSBHTF9SRU5ERVJFUjoKLSAgICAgICAgICAgICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBHTHVieXRlICo+KGNvbnRleHQtPmdldFJlbmRlcmVyU3Ry
aW5nKCkuY19zdHIoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgR0x1Ynl0ZSAqPihjb250ZXh0LT5nZXRSZW5kZXJlclN0cmluZygpKTsKIAogICAgICAg
ICAgICAgY2FzZSBHTF9WRVJTSU9OOgotICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRD
bGllbnRWZXJzaW9uKCkgPT0gMikKKyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xp
ZW50TWFqb3JWZXJzaW9uKCkgPT0gMikKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEdMdWJ5dGUgKj4oCiAgICAgICAg
ICAgICAgICAgICAgICAgICAiT3BlbkdMIEVTIDIuMCAoQU5HTEUgIiBBTkdMRV9WRVJTSU9OX1NU
UklORyAiKSIpOwpAQCAtMjI0OSw3ICsxNjg2LDcgQEAgY29uc3QgR0x1Ynl0ZSAqR0xfQVBJRU5U
UlkgR2V0U3RyaW5nKEdMZQogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgY2FzZSBH
TF9TSEFESU5HX0xBTkdVQUdFX1ZFUlNJT046Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQt
PmdldENsaWVudFZlcnNpb24oKSA9PSAyKQorICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5n
ZXRDbGllbnRNYWpvclZlcnNpb24oKSA9PSAyKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSAqPigKICAg
ICAgICAgICAgICAgICAgICAgICAgICJPcGVuR0wgRVMgR0xTTCBFUyAxLjAwIChBTkdMRSAiIEFO
R0xFX1ZFUlNJT05fU1RSSU5HICIpIik7CkBAIC0yMjYxLDEwICsxNjk4LDEwIEBAIGNvbnN0IEdM
dWJ5dGUgKkdMX0FQSUVOVFJZIEdldFN0cmluZyhHTGUKICAgICAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGNhc2UgR0xfRVhURU5TSU9OUzoKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBHTHVieXRlICo+KGNvbnRleHQtPmdldEV4dGVuc2lvblN0cmlu
ZygpLmNfc3RyKCkpOworICAgICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNv
bnN0IEdMdWJ5dGUgKj4oY29udGV4dC0+Z2V0RXh0ZW5zaW9uU3RyaW5nKCkpOwogCiAgICAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICAgfQogICAgIH0KQEAgLTIyNzksMTUzICsxNzE2LDE0IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0
VGV4UGFyYW1ldGVyZnYoR0xlbnUKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIVZhbGlk
VGV4dHVyZVRhcmdldChjb250ZXh0LCB0YXJnZXQpKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0ZUdldFRleFBhcmFtZXRlcmZ2
KGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIHBhcmFtcykpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgdGV4
dHVyZSB0YXJnZXQiKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAg
ICBUZXh0dXJlICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGFyZ2V0VGV4dHVyZSh0YXJnZXQpOwot
Ci0gICAgICAgIGlmICghdGV4dHVyZSkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBzd2l0Y2ggKHBuYW1lKQotICAgICAgICB7Ci0gICAgICAg
ICAgY2FzZSBHTF9URVhUVVJFX01BR19GSUxURVI6Ci0gICAgICAgICAgICAgICpwYXJhbXMgPSAo
R0xmbG9hdCl0ZXh0dXJlLT5nZXRNYWdGaWx0ZXIoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NSU5fRklMVEVSOgotICAgICAgICAgICAgICAqcGFyYW1z
ID0gKEdMZmxvYXQpdGV4dHVyZS0+Z2V0TWluRmlsdGVyKCk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9TOgotICAgICAgICAgICAgICAqcGFyYW1z
ID0gKEdMZmxvYXQpdGV4dHVyZS0+Z2V0V3JhcFMoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1Q6Ci0gICAgICAgICAgICAgICpwYXJhbXMgPSAo
R0xmbG9hdCl0ZXh0dXJlLT5nZXRXcmFwVCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgY2FzZSBHTF9URVhUVVJFX1dSQVBfUjoKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRD
bGllbnRWZXJzaW9uKCkgPCAzKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICpwYXJhbXMgPSAoR0xmbG9hdCl0
ZXh0dXJlLT5nZXRXcmFwUigpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBH
TF9URVhUVVJFX0lNTVVUQUJMRV9GT1JNQVQ6Ci0gICAgICAgICAgICAvLyBFeHBvc2VkIHRvIEVT
Mi4wIHRocm91Z2ggRVhUX3RleHR1cmVfc3RvcmFnZSwgbm8gY2xpZW50IHZlcnNpb24gdmFsaWRh
dGlvbi4KLSAgICAgICAgICAgICpwYXJhbXMgPSAoR0xmbG9hdCkodGV4dHVyZS0+Z2V0SW1tdXRh
YmxlRm9ybWF0KCkgPyBHTF9UUlVFIDogR0xfRkFMU0UpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0lNTVVUQUJMRV9MRVZFTFM6Ci0gICAgICAgICAgICBp
ZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAqcGFy
YW1zID0gKEdMZmxvYXQpdGV4dHVyZS0+Z2V0SW1tdXRhYmxlTGV2ZWxzKCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfVVNBR0VfQU5HTEU6Ci0gICAgICAg
ICAgICAqcGFyYW1zID0gKEdMZmxvYXQpdGV4dHVyZS0+Z2V0VXNhZ2UoKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6Ci0g
ICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlRmlsdGVyQW5p
c290cm9waWMpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KXRleHR1cmUtPmdl
dE1heEFuaXNvdHJvcHkoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV9TV0laWkxFX1I6Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVy
c2lvbigpIDwgMykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAqcGFyYW1zID0gKEdMZmxvYXQpdGV4dHVyZS0+
Z2V0U3dpenpsZVJlZCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9U
RVhUVVJFX1NXSVpaTEVfRzoKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJz
aW9uKCkgPCAzKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICpwYXJhbXMgPSAoR0xmbG9hdCl0ZXh0dXJlLT5n
ZXRTd2l6emxlR3JlZW4oKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV9TV0laWkxFX0I6Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVy
c2lvbigpIDwgMykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAqcGFyYW1zID0gKEdMZmxvYXQpdGV4dHVyZS0+
Z2V0U3dpenpsZUJsdWUoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV9TV0laWkxFX0E6Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVy
c2lvbigpIDwgMykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAqcGFyYW1zID0gKEdMZmxvYXQpdGV4dHVyZS0+
Z2V0U3dpenpsZUFscGhhKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdM
X1RFWFRVUkVfQkFTRV9MRVZFTDoKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRW
ZXJzaW9uKCkgPCAzKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICpwYXJhbXMgPSAoR0xmbG9hdCl0ZXh0dXJl
LT5nZXRCYXNlTGV2ZWwoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV9NQVhfTEVWRUw6Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVy
c2lvbigpIDwgMykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAqcGFyYW1zID0gKEdMZmxvYXQpdGV4dHVyZS0+
Z2V0TWF4TGV2ZWwoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV9NSU5fTE9EOgotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24o
KSA8IDMpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgKnBhcmFtcyA9IHRleHR1cmUtPmdldFNhbXBsZXJTdGF0
ZSgpLm1pbkxvZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVS
RV9NQVhfTE9EOgotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8
IDMpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgKnBhcmFtcyA9IHRleHR1cmUtPmdldFNhbXBsZXJTdGF0ZSgp
Lm1heExvZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9D
T01QQVJFX01PREU6Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigp
IDwgMykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cigKLSAgICAgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9FTlVNLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAiR0xfVEVYVFVSRV9DT01QQVJFX01PREUgbm90IGF2YWlsYWJsZSBp
biBFUyB2ZXJzaW9ucyA8IDMuMCIpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAqcGFyYW1zID0gc3RhdGljX2Nhc3Q8R0xmbG9hdD4odGV4dHVy
ZS0+Z2V0Q29tcGFyZU1vZGUoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNl
IEdMX1RFWFRVUkVfQ09NUEFSRV9GVU5DOgotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENs
aWVudFZlcnNpb24oKSA8IDMpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfRU5V
TSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkdMX1RFWFRVUkVfQ09NUEFSRV9GVU5DIG5v
dCBhdmFpbGFibGUgaW4gRVMgdmVyc2lvbnMgPCAzLjAiKSk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgKnBhcmFtcyA9IHN0YXRpY19jYXN0PEdM
ZmxvYXQ+KHRleHR1cmUtPmdldENvbXBhcmVGdW5jKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAg
ICAgIFF1ZXJ5VGV4UGFyYW1ldGVyZnYodGV4dHVyZSwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQog
fQogCkBAIC0yNDM2LDE1MyArMTczNCwxNCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFRleFBhcmFt
ZXRlcml2KEdMZW51CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKCFWYWxpZFRleHR1cmVU
YXJnZXQoY29udGV4dCwgdGFyZ2V0KSkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJpdihjb250ZXh0
LCB0YXJnZXQsIHBuYW1lLCBwYXJhbXMpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIHRleHR1cmUgdGFy
Z2V0IikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgVGV4dHVy
ZSAqdGV4dHVyZSA9IGNvbnRleHQtPmdldFRhcmdldFRleHR1cmUodGFyZ2V0KTsKLQotICAgICAg
ICBpZiAoIXRleHR1cmUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgc3dpdGNoIChwbmFtZSkKLSAgICAgICAgewotICAgICAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9NQUdfRklMVEVSOgotICAgICAgICAgICAgKnBhcmFtcyA9IHRleHR1cmUtPmdl
dFNhbXBsZXJTdGF0ZSgpLm1hZ0ZpbHRlcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
IGNhc2UgR0xfVEVYVFVSRV9NSU5fRklMVEVSOgotICAgICAgICAgICAgKnBhcmFtcyA9IHRleHR1
cmUtPmdldFNhbXBsZXJTdGF0ZSgpLm1pbkZpbHRlcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1M6Ci0gICAgICAgICAgICAqcGFyYW1zID0gdGV4
dHVyZS0+Z2V0U2FtcGxlclN0YXRlKCkud3JhcFM7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9UOgotICAgICAgICAgICAgKnBhcmFtcyA9IHRleHR1
cmUtPmdldFNhbXBsZXJTdGF0ZSgpLndyYXBUOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgY2FzZSBHTF9URVhUVVJFX1dSQVBfUjoKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRD
bGllbnRWZXJzaW9uKCkgPCAzKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICpwYXJhbXMgPSB0ZXh0dXJlLT5n
ZXRTYW1wbGVyU3RhdGUoKS53cmFwUjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNh
c2UgR0xfVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUOgotICAgICAgICAgICAgLy8gRXhwb3NlZCB0
byBFUzIuMCB0aHJvdWdoIEVYVF90ZXh0dXJlX3N0b3JhZ2UsIG5vIGNsaWVudCB2ZXJzaW9uIHZh
bGlkYXRpb24uCi0gICAgICAgICAgICAqcGFyYW1zID0gdGV4dHVyZS0+Z2V0SW1tdXRhYmxlRm9y
bWF0KCkgPyBHTF9UUlVFIDogR0xfRkFMU0U7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICBjYXNlIEdMX1RFWFRVUkVfSU1NVVRBQkxFX0xFVkVMUzoKLSAgICAgICAgICAgIGlmIChjb250
ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICpwYXJhbXMgPSBz
dGF0aWNfY2FzdDxHTGludD4odGV4dHVyZS0+Z2V0SW1tdXRhYmxlTGV2ZWxzKCkpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX1VTQUdFX0FOR0xFOgotICAg
ICAgICAgICAgKnBhcmFtcyA9IHRleHR1cmUtPmdldFVzYWdlKCk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOgotICAgICAg
ICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZUZpbHRlckFuaXNvdHJv
cGljKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICpwYXJhbXMgPSAoR0xpbnQpdGV4dHVyZS0+Z2V0TWF4QW5p
c290cm9weSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJF
X1NXSVpaTEVfUjoKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkg
PCAzKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICpwYXJhbXMgPSB0ZXh0dXJlLT5nZXRTd2l6emxlUmVkKCk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfU1dJWlpMRV9H
OgotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgKnBhcmFtcyA9IHRleHR1cmUtPmdldFN3aXp6bGVHcmVlbigpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX1NXSVpaTEVfQjoKLSAgICAg
ICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURf
RU5VTSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICpwYXJhbXMgPSB0ZXh0dXJlLT5nZXRTd2l6emxlQmx1ZSgpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX1NXSVpaTEVfQToKLSAgICAgICAgICAgIGlm
IChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICpwYXJh
bXMgPSB0ZXh0dXJlLT5nZXRTd2l6emxlQWxwaGEoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgIGNhc2UgR0xfVEVYVFVSRV9CQVNFX0xFVkVMOgotICAgICAgICAgICAgaWYgKGNvbnRl
eHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgKnBhcmFtcyA9IHRl
eHR1cmUtPmdldEJhc2VMZXZlbCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2Fz
ZSBHTF9URVhUVVJFX01BWF9MRVZFTDoKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGll
bnRWZXJzaW9uKCkgPCAzKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICpwYXJhbXMgPSB0ZXh0dXJlLT5nZXRN
YXhMZXZlbCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJF
X01JTl9MT0Q6Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwg
MykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAqcGFyYW1zID0gaXJvdW5kPEdMaW50Pih0ZXh0dXJlLT5nZXRN
aW5Mb2QoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVf
TUFYX0xPRDoKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAz
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICpwYXJhbXMgPSBpcm91bmQ8R0xpbnQ+KHRleHR1cmUtPmdldE1h
eExvZCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9D
T01QQVJFX01PREU6Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigp
IDwgMykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cigKLSAgICAgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9FTlVNLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAiR0xfVEVYVFVSRV9DT01QQVJFX01PREUgbm90IGF2YWlsYWJsZSBp
biBFUyB2ZXJzaW9ucyA8IDMuMCIpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAqcGFyYW1zID0gdGV4dHVyZS0+Z2V0Q29tcGFyZU1vZGUoKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX0ZV
TkM6Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcigKLSAgICAg
ICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9FTlVNLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAiR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMgbm90IGF2YWlsYWJsZSBpbiBFUyB2ZXJz
aW9ucyA8IDMuMCIpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAqcGFyYW1zID0gdGV4dHVyZS0+Z2V0Q29tcGFyZUZ1bmMoKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQorICAgICAgICBRdWVyeVRleFBhcmFtZXRlcml2KHRleHR1cmUsIHBuYW1lLCBwYXJh
bXMpOwogICAgIH0KIH0KIApAQCAtMjY0NSw3ICsxODA0LDcgQEAgR0xpbnQgR0xfQVBJRU5UUlkg
R2V0VW5pZm9ybUxvY2F0aW9uKEdMdQogCiAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdC0+aXNM
aW5rZWQoKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm4gLTE7
CiAgICAgICAgIH0KIApAQCAtMjY2MiwzMCArMTgyMSwxNiBAQCB2b2lkIEdMX0FQSUVOVFJZIEdl
dFZlcnRleEF0dHJpYmZ2KEdMdWluCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGluZGV4
ID49IE1BWF9WRVJURVhfQVRUUklCUykKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFWYWxpZGF0ZUdldFZlcnRleEF0dHJpYlBhcmFt
ZXRlcnMoY29udGV4dCwgcG5hbWUpKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgJiYgIVZhbGlkYXRlR2V0VmVydGV4QXR0cmliZnYoY29udGV4dCwgaW5kZXgsIHBuYW1l
LCBwYXJhbXMpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBpZiAocG5hbWUgPT0gR0xfQ1VSUkVOVF9WRVJURVhfQVRUUklCKQotICAgICAgICB7
Ci0gICAgICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZjdXJyZW50
VmFsdWVEYXRhID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRWZXJ0ZXhBdHRyaWJDdXJyZW50VmFs
dWUoaW5kZXgpOwotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyArK2kpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcGFyYW1zW2ldID0gY3VycmVudFZhbHVlRGF0YS5G
bG9hdFZhbHVlc1tpXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliU3RhdGUg
PSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFZlcnRleEFycmF5KCktPmdldFZlcnRleEF0dHJpYnV0
ZShpbmRleCk7Ci0gICAgICAgICAgICAqcGFyYW1zID0gUXVlcnlTaW5nbGVWZXJ0ZXhBdHRyaWJ1
dGVQYXJhbWV0ZXI8R0xmbG9hdD4oYXR0cmliU3RhdGUsIHBuYW1lKTsKLSAgICAgICAgfQorICAg
ICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZjdXJyZW50VmFsdWVzID0K
KyAgICAgICAgICAgIGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRWZXJ0ZXhBdHRyaWJDdXJyZW50
VmFsdWUoaW5kZXgpOworICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiA9Cisg
ICAgICAgICAgICBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VmVydGV4QXJyYXkoKS0+Z2V0VmVy
dGV4QXR0cmlidXRlKGluZGV4KTsKKyAgICAgICAgUXVlcnlWZXJ0ZXhBdHRyaWJmdihhdHRyaWIs
IGN1cnJlbnRWYWx1ZXMsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIApAQCAtMjY5NiwzMSAr
MTg0MSwxNiBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFZlcnRleEF0dHJpYml2KEdMdWluCiAgICAg
Q29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGluZGV4ID49IE1BWF9WRVJURVhfQVRUUklCUykKLSAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KCFWYWxpZGF0ZUdldFZlcnRleEF0dHJpYlBhcmFtZXRlcnMoY29udGV4dCwgcG5hbWUpKQorICAg
ICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlR2V0VmVydGV4
QXR0cmliaXYoY29udGV4dCwgaW5kZXgsIHBuYW1lLCBwYXJhbXMpKQogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAocG5hbWUgPT0gR0xfQ1VS
UkVOVF9WRVJURVhfQVRUUklCKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBWZXJ0ZXhB
dHRyaWJDdXJyZW50VmFsdWVEYXRhICZjdXJyZW50VmFsdWVEYXRhID0gY29udGV4dC0+Z2V0U3Rh
dGUoKS5nZXRWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWUoaW5kZXgpOwotICAgICAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCA0OyArK2kpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ZmxvYXQgY3VycmVudFZhbHVlID0gY3VycmVudFZhbHVlRGF0YS5GbG9hdFZhbHVlc1tpXTsKLSAg
ICAgICAgICAgICAgICBwYXJhbXNbaV0gPSBpcm91bmQ8R0xpbnQ+KGN1cnJlbnRWYWx1ZSk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAg
ICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYlN0YXRlID0gY29udGV4dC0+Z2V0U3Rh
dGUoKS5nZXRWZXJ0ZXhBcnJheSgpLT5nZXRWZXJ0ZXhBdHRyaWJ1dGUoaW5kZXgpOwotICAgICAg
ICAgICAgKnBhcmFtcyA9IFF1ZXJ5U2luZ2xlVmVydGV4QXR0cmlidXRlUGFyYW1ldGVyPEdMaW50
PihhdHRyaWJTdGF0ZSwgcG5hbWUpOwotICAgICAgICB9CisgICAgICAgIGNvbnN0IFZlcnRleEF0
dHJpYkN1cnJlbnRWYWx1ZURhdGEgJmN1cnJlbnRWYWx1ZXMgPQorICAgICAgICAgICAgY29udGV4
dC0+Z2V0R0xTdGF0ZSgpLmdldFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZShpbmRleCk7CisgICAg
ICAgIGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliID0KKyAgICAgICAgICAgIGNvbnRleHQt
PmdldEdMU3RhdGUoKS5nZXRWZXJ0ZXhBcnJheSgpLT5nZXRWZXJ0ZXhBdHRyaWJ1dGUoaW5kZXgp
OworICAgICAgICBRdWVyeVZlcnRleEF0dHJpYml2KGF0dHJpYiwgY3VycmVudFZhbHVlcywgcG5h
bWUsIHBhcmFtcyk7CiAgICAgfQogfQogCkBAIC0yNzMxLDE5ICsxODYxLDE1IEBAIHZvaWQgR0xf
QVBJRU5UUlkgR2V0VmVydGV4QXR0cmliUG9pbnRlcnYKICAgICBDb250ZXh0ICpjb250ZXh0ID0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBpZiAoaW5kZXggPj0gTUFYX1ZFUlRFWF9BVFRSSUJTKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAocG5hbWUgIT0gR0xfVkVSVEVY
X0FUVFJJQl9BUlJBWV9QT0lOVEVSKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0ZUdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KGNv
bnRleHQsIGluZGV4LCBwbmFtZSwgcG9pbnRlcikpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgKnBvaW50ZXIgPSBjb25zdF9jYXN0PEdMdm9p
ZCo+KGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0VmVydGV4QXR0cmliUG9pbnRlcihpbmRleCkpOwor
ICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiA9CisgICAgICAgICAgICBjb250
ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VmVydGV4QXJyYXkoKS0+Z2V0VmVydGV4QXR0cmlidXRlKGlu
ZGV4KTsKKyAgICAgICAgUXVlcnlWZXJ0ZXhBdHRyaWJQb2ludGVydihhdHRyaWIsIHBuYW1lLCBw
b2ludGVyKTsKICAgICB9CiB9CiAKQEAgLTI3NjIsMjQgKzE4ODgsMjIgQEAgdm9pZCBHTF9BUElF
TlRSWSBIaW50KEdMZW51bSB0YXJnZXQsIEdMZQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAg
ICAgICAgc3dpdGNoICh0YXJnZXQpCiAgICAgICAgIHsKICAgICAgICAgICBjYXNlIEdMX0dFTkVS
QVRFX01JUE1BUF9ISU5UOgotICAgICAgICAgICAgY29udGV4dC0+Z2V0U3RhdGUoKS5zZXRHZW5l
cmF0ZU1pcG1hcEhpbnQobW9kZSk7Ci0gICAgICAgICAgICBicmVhazsKLQogICAgICAgICAgIGNh
c2UgR0xfRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVM6Ci0gICAgICAgICAgICBj
b250ZXh0LT5nZXRTdGF0ZSgpLnNldEZyYWdtZW50U2hhZGVyRGVyaXZhdGl2ZUhpbnQobW9kZSk7
Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKSk7CisgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisKKyAgICAgICAg
Y29udGV4dC0+aGludCh0YXJnZXQsIG1vZGUpOwogICAgIH0KIH0KIApAQCAtMjgwOCwxMyArMTkz
MiwxMiBAQCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNFbmFibGVkKEdMZW51bSBjCiAgICAgQ29u
dGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgaWYgKCFWYWxpZENhcChjb250ZXh0LCBjYXApKQorICAgICAgICBp
ZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlSXNFbmFibGVkKGNvbnRl
eHQsIGNhcCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogICAg
ICAgICB9CiAKLSAgICAgICAgcmV0dXJuIGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0RW5hYmxlRmVh
dHVyZShjYXApOworICAgICAgICByZXR1cm4gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldEVuYWJs
ZUZlYXR1cmUoY2FwKTsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yOTE5LDExICsy
MDQyLDExIEBAIHZvaWQgR0xfQVBJRU5UUlkgTGluZVdpZHRoKEdMZmxvYXQgd2lkdGgKICAgICB7
CiAgICAgICAgIGlmICh3aWR0aCA8PSAwLjBmKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjb250ZXh0LT5nZXRTdGF0ZSgpLnNldExp
bmVXaWR0aCh3aWR0aCk7CisgICAgICAgIGNvbnRleHQtPmxpbmVXaWR0aCh3aWR0aCk7CiAgICAg
fQogfQogCkBAIC0yOTQ1LDEwICsyMDY4LDEwIEBAIHZvaWQgR0xfQVBJRU5UUlkgTGlua1Byb2dy
YW0oR0x1aW50IHByb2cKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IEVycm9yIGVycm9yID0gcHJvZ3JhbU9iamVjdC0+bGluayhjb250ZXh0LT5nZXREYXRhKCkpOwor
ICAgICAgICBFcnJvciBlcnJvciA9IHByb2dyYW1PYmplY3QtPmxpbmsoY29udGV4dC0+Z2V0Q29u
dGV4dFN0YXRlKCkpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7CisgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICB9CkBAIC0yOTYxLDEzICsyMDg0LDEzIEBAIHZvaWQgR0xfQVBJRU5UUlkgUGl4ZWxTdG9y
ZWkoR0xlbnVtIHBuYW0KICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0
Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9y
VmVyc2lvbigpIDwgMykKICAgICAgICAgewogICAgICAgICAgICAgc3dpdGNoIChwbmFtZSkKICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgY2FzZSBHTF9VTlBBQ0tfSU1BR0VfSEVJR0hUOgog
ICAgICAgICAgICAgICBjYXNlIEdMX1VOUEFDS19TS0lQX0lNQUdFUzoKLSAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7
CiAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgICAgY2FzZSBHTF9VTlBB
Q0tfUk9XX0xFTkdUSDoKQEAgLTI5NzUsNyArMjA5OCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUGl4
ZWxTdG9yZWkoR0xlbnVtIHBuYW0KICAgICAgICAgICAgICAgY2FzZSBHTF9VTlBBQ0tfU0tJUF9Q
SVhFTFM6CiAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS51
bnBhY2tTdWJpbWFnZSkKICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0p
KTsKICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI5ODUsNyArMjEwOCw3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgUGl4ZWxTdG9yZWkoR0xlbnVtIHBuYW0KICAgICAgICAgICAgICAgY2FzZSBHTF9QQUNL
X1NLSVBfUElYRUxTOgogICAgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkucGFja1N1YmltYWdlKQogICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
RU5VTSkpOwogICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjk5NCw4MiArMjExNyw0NiBAQCB2b2lk
IEdMX0FQSUVOVFJZIFBpeGVsU3RvcmVpKEdMZW51bSBwbmFtCiAKICAgICAgICAgaWYgKHBhcmFt
IDwgMCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSwgIkNhbm5vdCB1c2UgbmVnYXRpdmUgdmFsdWVzIGluIFBpeGVsU3Rv
cmVpIikpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAg
ICAgRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIkNhbm5vdCB1c2UgbmVnYXRpdmUgdmFsdWVzIGlu
IFBpeGVsU3RvcmVpIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgU3RhdGUgJnN0YXRlID0gY29udGV4dC0+Z2V0U3RhdGUoKTsKLQogICAgICAgICBzd2l0Y2gg
KHBuYW1lKQogICAgICAgICB7CiAgICAgICAgICAgY2FzZSBHTF9VTlBBQ0tfQUxJR05NRU5UOgog
ICAgICAgICAgICAgaWYgKHBhcmFtICE9IDEgJiYgcGFyYW0gIT0gMiAmJiBwYXJhbSAhPSA0ICYm
IHBhcmFtICE9IDgpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHN0YXRlLnNldFVucGFja0Fs
aWdubWVudChwYXJhbSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgIGNhc2UgR0xf
UEFDS19BTElHTk1FTlQ6CiAgICAgICAgICAgICBpZiAocGFyYW0gIT0gMSAmJiBwYXJhbSAhPSAy
ICYmIHBhcmFtICE9IDQgJiYgcGFyYW0gIT0gOCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAg
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
c3RhdGUuc2V0UGFja0FsaWdubWVudChwYXJhbSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAg
ICAgICAgIGNhc2UgR0xfUEFDS19SRVZFUlNFX1JPV19PUkRFUl9BTkdMRToKLSAgICAgICAgICAg
IHN0YXRlLnNldFBhY2tSZXZlcnNlUm93T3JkZXIocGFyYW0gIT0gMCk7Ci0gICAgICAgICAgICBi
cmVhazsKLQogICAgICAgICAgIGNhc2UgR0xfVU5QQUNLX1JPV19MRU5HVEg6Ci0gICAgICAgICAg
ICAgIEFTU0VSVCgoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpID49IDMpIHx8IGNvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS51bnBhY2tTdWJpbWFnZSk7Ci0gICAgICAgICAgICBzdGF0ZS5zZXRV
bnBhY2tSb3dMZW5ndGgocGFyYW0pOwotICAgICAgICAgICAgYnJlYWs7Ci0KICAgICAgICAgICBj
YXNlIEdMX1VOUEFDS19JTUFHRV9IRUlHSFQ6Ci0gICAgICAgICAgICBBU1NFUlQoY29udGV4dC0+
Z2V0Q2xpZW50VmVyc2lvbigpID49IDMpOwotICAgICAgICAgICAgc3RhdGUuc2V0VW5wYWNrSW1h
Z2VIZWlnaHQocGFyYW0pOwotICAgICAgICAgICAgYnJlYWs7Ci0KICAgICAgICAgICBjYXNlIEdM
X1VOUEFDS19TS0lQX0lNQUdFUzoKLSAgICAgICAgICAgICAgQVNTRVJUKGNvbnRleHQtPmdldENs
aWVudFZlcnNpb24oKSA+PSAzKTsKLSAgICAgICAgICAgICAgc3RhdGUuc2V0VW5wYWNrU2tpcElt
YWdlcyhwYXJhbSk7Ci0gICAgICAgICAgICBicmVhazsKLQogICAgICAgICAgIGNhc2UgR0xfVU5Q
QUNLX1NLSVBfUk9XUzoKLSAgICAgICAgICAgICAgQVNTRVJUKChjb250ZXh0LT5nZXRDbGllbnRW
ZXJzaW9uKCkgPj0gMykgfHwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnVucGFja1N1YmltYWdl
KTsKLSAgICAgICAgICAgICAgc3RhdGUuc2V0VW5wYWNrU2tpcFJvd3MocGFyYW0pOwotICAgICAg
ICAgICAgYnJlYWs7Ci0KICAgICAgICAgICBjYXNlIEdMX1VOUEFDS19TS0lQX1BJWEVMUzoKLSAg
ICAgICAgICAgICAgQVNTRVJUKChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPj0gMykgfHwg
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnVucGFja1N1YmltYWdlKTsKLSAgICAgICAgICAgICAg
c3RhdGUuc2V0VW5wYWNrU2tpcFBpeGVscyhwYXJhbSk7Ci0gICAgICAgICAgICBicmVhazsKLQog
ICAgICAgICAgIGNhc2UgR0xfUEFDS19ST1dfTEVOR1RIOgotICAgICAgICAgICAgICBBU1NFUlQo
KGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA+PSAzKSB8fCBjb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkucGFja1N1YmltYWdlKTsKLSAgICAgICAgICAgICAgc3RhdGUuc2V0UGFja1Jvd0xlbmd0
aChwYXJhbSk7Ci0gICAgICAgICAgICBicmVhazsKLQogICAgICAgICAgIGNhc2UgR0xfUEFDS19T
S0lQX1JPV1M6Ci0gICAgICAgICAgICAgIEFTU0VSVCgoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lv
bigpID49IDMpIHx8IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5wYWNrU3ViaW1hZ2UpOwotICAg
ICAgICAgICAgICBzdGF0ZS5zZXRQYWNrU2tpcFJvd3MocGFyYW0pOwotICAgICAgICAgICAgYnJl
YWs7Ci0KICAgICAgICAgICBjYXNlIEdMX1BBQ0tfU0tJUF9QSVhFTFM6Ci0gICAgICAgICAgICAg
IEFTU0VSVCgoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpID49IDMpIHx8IGNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5wYWNrU3ViaW1hZ2UpOwotICAgICAgICAgICAgICBzdGF0ZS5zZXRQYWNr
U2tpcFBpeGVscyhwYXJhbSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VO
VU0pKTsKKyAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKworICAgICAgICBjb250
ZXh0LT5waXhlbFN0b3JlaShwbmFtZSwgcGFyYW0pOwogICAgIH0KIH0KIApAQCAtMzA4MCw3ICsy
MTY3LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBQb2x5Z29uT2Zmc2V0KEdMZmxvYXQgZgogICAgIENv
bnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPmdldFN0YXRlKCkuc2V0UG9seWdvbk9mZnNldFBh
cmFtcyhmYWN0b3IsIHVuaXRzKTsKKyAgICAgICAgY29udGV4dC0+cG9seWdvbk9mZnNldChmYWN0
b3IsIHVuaXRzKTsKICAgICB9CiB9CiAKQEAgLTMxMTYsNyArMjIwMyw3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgUmVsZWFzZVNoYWRlckNvbXBpbGVyKHYKICAgICAgICAgRXJyb3IgZXJyb3IgPSBjb21w
aWxlci0+cmVsZWFzZSgpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7CisgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICB9CkBAIC0zMTM2LDExICsyMjIzLDExIEBAIHZvaWQgR0xfQVBJRU5UUlkgUmVuZGVy
YnVmZmVyU3RvcmFnZShHTGUKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIFJlbmRlcmJ1ZmZlciAqcmVuZGVyYnVmZmVyID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRD
dXJyZW50UmVuZGVyYnVmZmVyKCk7CisgICAgICAgIFJlbmRlcmJ1ZmZlciAqcmVuZGVyYnVmZmVy
ID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldEN1cnJlbnRSZW5kZXJidWZmZXIoKTsKICAgICAg
ICAgRXJyb3IgZXJyb3IgPSByZW5kZXJidWZmZXItPnNldFN0b3JhZ2UoaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCBoZWlnaHQpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7CisgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICB9CkBAIC0zMTU0LDcgKzIyNDEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFNhbXBsZUNv
dmVyYWdlKEdMY2xhbXBmCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGNvbnRl
eHQtPmdldFN0YXRlKCkuc2V0U2FtcGxlQ292ZXJhZ2VQYXJhbXMoY2xhbXAwMSh2YWx1ZSksIGlu
dmVydCA9PSBHTF9UUlVFKTsKKyAgICAgICAgY29udGV4dC0+c2FtcGxlQ292ZXJhZ2UodmFsdWUs
IGludmVydCk7CiAgICAgfQogfQogCkBAIC0zMTY3LDExICsyMjU0LDExIEBAIHZvaWQgR0xfQVBJ
RU5UUlkgU2Npc3NvcihHTGludCB4LCBHTGludCAKICAgICB7CiAgICAgICAgIGlmICh3aWR0aCA8
IDAgfHwgaGVpZ2h0IDwgMCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgY29udGV4dC0+Z2V0U3RhdGUoKS5zZXRTY2lzc29yUGFyYW1z
KHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBjb250ZXh0LT5zY2lzc29yKHgsIHksIHdp
ZHRoLCBoZWlnaHQpOwogICAgIH0KIH0KIApAQCAtMzE4Nyw3ICsyMjc0LDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBTaGFkZXJCaW5hcnkoR0xzaXplaSBuLAogICAgICAgICBjb25zdCBzdGQ6OnZlY3Rv
cjxHTGVudW0+ICZzaGFkZXJCaW5hcnlGb3JtYXRzID0gY29udGV4dC0+Z2V0Q2FwcygpLnNoYWRl
ckJpbmFyeUZvcm1hdHM7CiAgICAgICAgIGlmIChzdGQ6OmZpbmQoc2hhZGVyQmluYXJ5Rm9ybWF0
cy5iZWdpbigpLCBzaGFkZXJCaW5hcnlGb3JtYXRzLmVuZCgpLCBiaW5hcnlmb3JtYXQpID09IHNo
YWRlckJpbmFyeUZvcm1hdHMuZW5kKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIApAQCAtMzIwNiw3ICsyMjkzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBT
aGFkZXJTb3VyY2UoR0x1aW50IHNoYQogICAgIHsKICAgICAgICAgaWYgKGNvdW50IDwgMCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTMyMzks
NyArMjMyNiw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgU3RlbmNpbEZ1bmNTZXBhcmF0ZShHTGUKICAg
ICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCkBAIC0zMjU2LDE5ICsyMzQzLDExIEBAIHZvaWQgR0xfQVBJ
RU5UUlkgU3RlbmNpbEZ1bmNTZXBhcmF0ZShHTGUKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIGlmIChmYWNlID09IEdMX0ZST05UIHx8IGZhY2UgPT0gR0xfRlJPTlRfQU5EX0JBQ0sp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFN0YXRlKCkuc2V0U3RlbmNpbFBh
cmFtcyhmdW5jLCByZWYsIG1hc2spOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGZhY2UgPT0g
R0xfQkFDSyB8fCBmYWNlID09IEdMX0ZST05UX0FORF9CQUNLKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5nZXRTdGF0ZSgpLnNldFN0ZW5jaWxCYWNrUGFyYW1zKGZ1bmMsIHJlZiwg
bWFzayk7Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+c3RlbmNpbEZ1bmNTZXBhcmF0ZShm
YWNlLCBmdW5jLCByZWYsIG1hc2spOwogICAgIH0KIH0KIApAQCAtMzI5MiwxOSArMjM3MSwxMSBA
QCB2b2lkIEdMX0FQSUVOVFJZIFN0ZW5jaWxNYXNrU2VwYXJhdGUoR0xlCiAgICAgICAgICAgICBi
cmVhazsKIAogICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICBpZiAoZmFjZSA9PSBHTF9GUk9OVCB8fCBmYWNlID09IEdMX0ZS
T05UX0FORF9CQUNLKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRTdGF0ZSgp
LnNldFN0ZW5jaWxXcml0ZW1hc2sobWFzayk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZmFj
ZSA9PSBHTF9CQUNLIHx8IGZhY2UgPT0gR0xfRlJPTlRfQU5EX0JBQ0spCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmdldFN0YXRlKCkuc2V0U3RlbmNpbEJhY2tXcml0ZW1hc2sobWFz
ayk7Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+c3RlbmNpbE1hc2tTZXBhcmF0ZShmYWNl
LCBtYXNrKTsKICAgICB9CiB9CiAKQEAgLTMzMjksNyArMjQwMCw3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgU3RlbmNpbE9wU2VwYXJhdGUoR0xlbnUKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfRU5VTSkpOworICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0z
MzQ2LDcgKzI0MTcsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFN0ZW5jaWxPcFNlcGFyYXRlKEdMZW51
CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMzM2Myw3ICsyNDM0LDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBTdGVuY2lsT3BTZXBhcmF0ZShHTGVudQogICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
QEAgLTMzODAsMTkgKzI0NTEsMTEgQEAgdm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsT3BTZXBhcmF0
ZShHTGVudQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGZhY2UgPT0gR0xf
RlJPTlQgfHwgZmFjZSA9PSBHTF9GUk9OVF9BTkRfQkFDSykKLSAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+Z2V0U3RhdGUoKS5zZXRTdGVuY2lsT3BlcmF0aW9ucyhmYWlsLCB6ZmFpbCwg
enBhc3MpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGZhY2UgPT0gR0xfQkFDSyB8fCBmYWNl
ID09IEdMX0ZST05UX0FORF9CQUNLKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5n
ZXRTdGF0ZSgpLnNldFN0ZW5jaWxCYWNrT3BlcmF0aW9ucyhmYWlsLCB6ZmFpbCwgenBhc3MpOwot
ICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPnN0ZW5jaWxPcFNlcGFyYXRlKGZhY2UsIGZhaWws
IHpmYWlsLCB6cGFzcyk7CiAgICAgfQogfQogCkBAIC0zNDI1LDU2ICsyNDg4LDM0IEBAIHZvaWQg
R0xfQVBJRU5UUlkgVGV4UGFyYW1ldGVyZihHTGVudW0gdGEKICAgICBDb250ZXh0ICpjb250ZXh0
ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBpZiAoIVZhbGlkVGV4dHVyZVRhcmdldChjb250ZXh0LCB0YXJnZXQpKQotICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0s
ICJJbnZhbGlkIHRleHR1cmUgdGFyZ2V0IikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKCFWYWxpZGF0ZVRleFBhcmFtUGFyYW1ldGVycyhjb250ZXh0LCBw
bmFtZSwgc3RhdGljX2Nhc3Q8R0xpbnQ+KHBhcmFtKSkpCisgICAgICAgIGlmICghY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVUZXhQYXJhbWV0ZXJmKGNvbnRleHQsIHRhcmdl
dCwgcG5hbWUsIHBhcmFtKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKICAgICAgICAgVGV4dHVyZSAqdGV4dHVyZSA9IGNvbnRleHQtPmdldFRhcmdldFRleHR1
cmUodGFyZ2V0KTsKKyAgICAgICAgU2V0VGV4UGFyYW1ldGVyZih0ZXh0dXJlLCBwbmFtZSwgcGFy
YW0pOworICAgIH0KK30KIAotICAgICAgICBpZiAoIXRleHR1cmUpCit2b2lkIEdMX0FQSUVOVFJZ
IFRleFBhcmFtZXRlcmZ2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9h
dCAqcGFyYW1zKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMZW51bSBw
bmFtZSA9IDB4JVgsIGNvbnN0IEdMZmxvYXQqIHBhcmFtcyA9IDB4JTAuOHApIiwgdGFyZ2V0LAor
ICAgICAgICAgIHBuYW1lLCBwYXJhbXMpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYg
KCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZVRleFBhcmFtZXRlcmZ2KGNv
bnRleHQsIHRhcmdldCwgcG5hbWUsIHBhcmFtcykpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgotICAgICAg
ICBzd2l0Y2ggKHBuYW1lKQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX1dS
QVBfUzogICAgICAgICAgICAgICB0ZXh0dXJlLT5zZXRXcmFwUyh1aXJvdW5kPEdMZW51bT4ocGFy
YW0pKTsgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1Q6ICAg
ICAgICAgICAgICAgdGV4dHVyZS0+c2V0V3JhcFQodWlyb3VuZDxHTGVudW0+KHBhcmFtKSk7ICAg
ICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9SOiAgICAgICAgICAg
ICAgIHRleHR1cmUtPnNldFdyYXBSKHVpcm91bmQ8R0xlbnVtPihwYXJhbSkpOyAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01JTl9GSUxURVI6ICAgICAgICAgICB0ZXh0
dXJlLT5zZXRNaW5GaWx0ZXIodWlyb3VuZDxHTGVudW0+KHBhcmFtKSk7ICAgIGJyZWFrOwotICAg
ICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQUdfRklMVEVSOiAgICAgICAgICAgdGV4dHVyZS0+c2V0
TWFnRmlsdGVyKHVpcm91bmQ8R0xlbnVtPihwYXJhbSkpOyAgICBicmVhazsKLSAgICAgICAgICBj
YXNlIEdMX1RFWFRVUkVfVVNBR0VfQU5HTEU6ICAgICAgICAgIHRleHR1cmUtPnNldFVzYWdlKHVp
cm91bmQ8R0xlbnVtPihwYXJhbSkpOyAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9U
RVhUVVJFX01BWF9BTklTT1RST1BZX0VYVDogICB0ZXh0dXJlLT5zZXRNYXhBbmlzb3Ryb3B5KHN0
ZDo6bWluKHBhcmFtLCBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkubWF4VGV4dHVyZUFuaXNvdHJv
cHkpKTsgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfTU9ERTogICAg
ICAgICB0ZXh0dXJlLT5zZXRDb21wYXJlTW9kZSh1aXJvdW5kPEdMZW51bT4ocGFyYW0pKTsgIGJy
ZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkM6ICAgICAgICAgdGV4
dHVyZS0+c2V0Q29tcGFyZUZ1bmModWlyb3VuZDxHTGVudW0+KHBhcmFtKSk7ICBicmVhazsKLSAg
ICAgICAgICBjYXNlIEdMX1RFWFRVUkVfU1dJWlpMRV9SOiAgICAgICAgICAgIHRleHR1cmUtPnNl
dFN3aXp6bGVSZWQodWlyb3VuZDxHTGVudW0+KHBhcmFtKSk7ICAgYnJlYWs7Ci0gICAgICAgICAg
Y2FzZSBHTF9URVhUVVJFX1NXSVpaTEVfRzogICAgICAgICAgICB0ZXh0dXJlLT5zZXRTd2l6emxl
R3JlZW4odWlyb3VuZDxHTGVudW0+KHBhcmFtKSk7IGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV9TV0laWkxFX0I6ICAgICAgICAgICAgdGV4dHVyZS0+c2V0U3dpenpsZUJsdWUodWly
b3VuZDxHTGVudW0+KHBhcmFtKSk7ICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVf
U1dJWlpMRV9BOiAgICAgICAgICAgIHRleHR1cmUtPnNldFN3aXp6bGVBbHBoYSh1aXJvdW5kPEdM
ZW51bT4ocGFyYW0pKTsgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0JBU0VfTEVW
RUw6ICAgICAgICAgICB0ZXh0dXJlLT5zZXRCYXNlTGV2ZWwodWlyb3VuZDxHTHVpbnQ+KHBhcmFt
KSk7ICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfTEVWRUw6ICAgICAg
ICAgICAgdGV4dHVyZS0+c2V0TWF4TGV2ZWwodWlyb3VuZDxHTHVpbnQ+KHBhcmFtKSk7ICAgICBi
cmVhazsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUlOX0xPRDogICAgICAgICAgICAgIHRl
eHR1cmUtPnNldE1pbkxvZChwYXJhbSk7ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9MT0Q6ICAgICAgICAgICAgICB0ZXh0dXJlLT5z
ZXRNYXhMb2QocGFyYW0pOyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
IGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIC8vIGNs
YW5nLWZvcm1hdCBvbgorICAgICAgICBUZXh0dXJlICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGFy
Z2V0VGV4dHVyZSh0YXJnZXQpOworICAgICAgICBTZXRUZXhQYXJhbWV0ZXJmdih0ZXh0dXJlLCBw
bmFtZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVGV4UGFyYW1ldGVy
ZnYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0KiBwYXJhbXMpCi17
Ci0gICAgVGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lLCAoR0xmbG9hdCkqcGFyYW1zKTsKLX0K
LQogdm9pZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBw
bmFtZSwgR0xpbnQgcGFyYW0pCiB7CiAgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwg
R0xlbnVtIHBuYW1lID0gMHglWCwgR0xpbnQgcGFyYW0gPSAlZCkiLCB0YXJnZXQsIHBuYW1lLCBw
YXJhbSk7CkBAIC0zNDgyLDU2ICsyNTIzLDM0IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4UGFyYW1l
dGVyaShHTGVudW0gdGEKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIVZhbGlkVGV4dHVy
ZVRhcmdldChjb250ZXh0LCB0YXJnZXQpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIFRleHR1cmUgdGFy
Z2V0IikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFW
YWxpZGF0ZVRleFBhcmFtUGFyYW1ldGVycyhjb250ZXh0LCBwbmFtZSwgcGFyYW0pKQorICAgICAg
ICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlVGV4UGFyYW1ldGVy
aShjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBwYXJhbSkpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIFRleHR1cmUgKnRleHR1cmUgPSBjb250ZXh0
LT5nZXRUYXJnZXRUZXh0dXJlKHRhcmdldCk7CisgICAgICAgIFNldFRleFBhcmFtZXRlcmkodGV4
dHVyZSwgcG5hbWUsIHBhcmFtKTsKKyAgICB9Cit9CiAKLSAgICAgICAgaWYgKCF0ZXh0dXJlKQor
dm9pZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJpdihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5h
bWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpCit7CisgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0g
MHglWCwgR0xlbnVtIHBuYW1lID0gMHglWCwgY29uc3QgR0xpbnQqIHBhcmFtcyA9IDB4JTAuOHAp
IiwgdGFyZ2V0LAorICAgICAgICAgIHBuYW1lLCBwYXJhbXMpOworCisgICAgQ29udGV4dCAqY29u
dGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsK
KyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZVRleFBh
cmFtZXRlcml2KGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIHBhcmFtcykpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gY2xhbmctZm9ybWF0
IG9mZgotICAgICAgICBzd2l0Y2ggKHBuYW1lKQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBH
TF9URVhUVVJFX1dSQVBfUzogICAgICAgICAgICAgICB0ZXh0dXJlLT5zZXRXcmFwUyhzdGF0aWNf
Y2FzdDxHTGVudW0+KHBhcmFtKSk7ICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1RF
WFRVUkVfV1JBUF9UOiAgICAgICAgICAgICAgIHRleHR1cmUtPnNldFdyYXBUKHN0YXRpY19jYXN0
PEdMZW51bT4ocGFyYW0pKTsgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVS
RV9XUkFQX1I6ICAgICAgICAgICAgICAgdGV4dHVyZS0+c2V0V3JhcFIoc3RhdGljX2Nhc3Q8R0xl
bnVtPihwYXJhbSkpOyAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01J
Tl9GSUxURVI6ICAgICAgICAgICB0ZXh0dXJlLT5zZXRNaW5GaWx0ZXIoc3RhdGljX2Nhc3Q8R0xl
bnVtPihwYXJhbSkpOyAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUFHX0ZJ
TFRFUjogICAgICAgICAgIHRleHR1cmUtPnNldE1hZ0ZpbHRlcihzdGF0aWNfY2FzdDxHTGVudW0+
KHBhcmFtKSk7ICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9VU0FHRV9BTkdM
RTogICAgICAgICAgdGV4dHVyZS0+c2V0VXNhZ2Uoc3RhdGljX2Nhc3Q8R0xlbnVtPihwYXJhbSkp
OyAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9BTklTT1RST1BZ
X0VYVDogICB0ZXh0dXJlLT5zZXRNYXhBbmlzb3Ryb3B5KHN0ZDo6bWluKHN0YXRpY19jYXN0PEdM
ZmxvYXQ+KHBhcmFtKSwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLm1heFRleHR1cmVBbmlzb3Ry
b3B5KSk7IGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX01PREU6ICAg
ICAgICAgdGV4dHVyZS0+c2V0Q29tcGFyZU1vZGUoc3RhdGljX2Nhc3Q8R0xlbnVtPihwYXJhbSkp
OyAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQzogICAgICAg
ICB0ZXh0dXJlLT5zZXRDb21wYXJlRnVuYyhzdGF0aWNfY2FzdDxHTGVudW0+KHBhcmFtKSk7ICBi
cmVhazsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfU1dJWlpMRV9SOiAgICAgICAgICAgIHRl
eHR1cmUtPnNldFN3aXp6bGVSZWQoc3RhdGljX2Nhc3Q8R0xlbnVtPihwYXJhbSkpOyAgIGJyZWFr
OwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9TV0laWkxFX0c6ICAgICAgICAgICAgdGV4dHVy
ZS0+c2V0U3dpenpsZUdyZWVuKHN0YXRpY19jYXN0PEdMZW51bT4ocGFyYW0pKTsgYnJlYWs7Ci0g
ICAgICAgICAgY2FzZSBHTF9URVhUVVJFX1NXSVpaTEVfQjogICAgICAgICAgICB0ZXh0dXJlLT5z
ZXRTd2l6emxlQmx1ZShzdGF0aWNfY2FzdDxHTGVudW0+KHBhcmFtKSk7ICBicmVhazsKLSAgICAg
ICAgICBjYXNlIEdMX1RFWFRVUkVfU1dJWlpMRV9BOiAgICAgICAgICAgIHRleHR1cmUtPnNldFN3
aXp6bGVBbHBoYShzdGF0aWNfY2FzdDxHTGVudW0+KHBhcmFtKSk7IGJyZWFrOwotICAgICAgICAg
IGNhc2UgR0xfVEVYVFVSRV9CQVNFX0xFVkVMOiAgICAgICAgICAgdGV4dHVyZS0+c2V0QmFzZUxl
dmVsKHN0YXRpY19jYXN0PEdMdWludD4ocGFyYW0pKTsgICAgYnJlYWs7Ci0gICAgICAgICAgY2Fz
ZSBHTF9URVhUVVJFX01BWF9MRVZFTDogICAgICAgICAgICB0ZXh0dXJlLT5zZXRNYXhMZXZlbChz
dGF0aWNfY2FzdDxHTHVpbnQ+KHBhcmFtKSk7ICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdM
X1RFWFRVUkVfTUlOX0xPRDogICAgICAgICAgICAgIHRleHR1cmUtPnNldE1pbkxvZChzdGF0aWNf
Y2FzdDxHTGZsb2F0PihwYXJhbSkpOyAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV9NQVhfTE9EOiAgICAgICAgICAgICAgdGV4dHVyZS0+c2V0TWF4TG9kKHN0YXRpY19jYXN0
PEdMZmxvYXQ+KHBhcmFtKSk7ICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDogVU5SRUFD
SEFCTEUoKTsgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9uCisg
ICAgICAgIFRleHR1cmUgKnRleHR1cmUgPSBjb250ZXh0LT5nZXRUYXJnZXRUZXh0dXJlKHRhcmdl
dCk7CisgICAgICAgIFNldFRleFBhcmFtZXRlcml2KHRleHR1cmUsIHBuYW1lLCBwYXJhbXMpOwog
ICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJpdihHTGVudW0gdGFyZ2V0
LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50KiBwYXJhbXMpCi17Ci0gICAgVGV4UGFyYW1ldGVy
aSh0YXJnZXQsIHBuYW1lLCAqcGFyYW1zKTsKLX0KLQogdm9pZCBHTF9BUElFTlRSWSBUZXhTdWJJ
bWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5
b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiBw
aXhlbHMpCiB7CkBAIC0zNTcyLDcgKzI1OTEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0x
ZnYoR0xpbnQgbG9jYXRpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBQcm9ncmFtICpwcm9ncmFtID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRQcm9ncmFtKCk7Cisg
ICAgICAgIFByb2dyYW0gKnByb2dyYW0gPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0UHJvZ3Jh
bSgpOwogICAgICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtMWZ2KGxvY2F0aW9uLCBjb3VudCwgdik7
CiAgICAgfQogfQpAQCAtMzU5NCw3ICsyNjEzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3Jt
MWl2KEdMaW50IGxvY2F0aQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0UHJvZ3JhbSgpOwor
ICAgICAgICBQcm9ncmFtICpwcm9ncmFtID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFByb2dy
YW0oKTsKICAgICAgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybTFpdihsb2NhdGlvbiwgY291bnQsIHYp
OwogICAgIH0KIH0KQEAgLTM2MTgsNyArMjYzNyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9y
bTJmdihHTGludCBsb2NhdGkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIFByb2dyYW0gKnByb2dyYW0gPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFByb2dyYW0oKTsK
KyAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRQcm9n
cmFtKCk7CiAgICAgICAgIHByb2dyYW0tPnNldFVuaWZvcm0yZnYobG9jYXRpb24sIGNvdW50LCB2
KTsKICAgICB9CiB9CkBAIC0zNjQyLDcgKzI2NjEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZv
cm0yaXYoR0xpbnQgbG9jYXRpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBQcm9ncmFtICpwcm9ncmFtID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRQcm9ncmFtKCk7
CisgICAgICAgIFByb2dyYW0gKnByb2dyYW0gPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0UHJv
Z3JhbSgpOwogICAgICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtMml2KGxvY2F0aW9uLCBjb3VudCwg
dik7CiAgICAgfQogfQpAQCAtMzY2Niw3ICsyNjg1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlm
b3JtM2Z2KEdMaW50IGxvY2F0aQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0UHJvZ3JhbSgp
OworICAgICAgICBQcm9ncmFtICpwcm9ncmFtID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFBy
b2dyYW0oKTsKICAgICAgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybTNmdihsb2NhdGlvbiwgY291bnQs
IHYpOwogICAgIH0KIH0KQEAgLTM2OTAsNyArMjcwOSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5p
Zm9ybTNpdihHTGludCBsb2NhdGkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIFByb2dyYW0gKnByb2dyYW0gPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFByb2dyYW0o
KTsKKyAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRQ
cm9ncmFtKCk7CiAgICAgICAgIHByb2dyYW0tPnNldFVuaWZvcm0zaXYobG9jYXRpb24sIGNvdW50
LCB2KTsKICAgICB9CiB9CkBAIC0zNzE0LDcgKzI3MzMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFVu
aWZvcm00ZnYoR0xpbnQgbG9jYXRpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBQcm9ncmFtICpwcm9ncmFtID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRQcm9ncmFt
KCk7CisgICAgICAgIFByb2dyYW0gKnByb2dyYW0gPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0
UHJvZ3JhbSgpOwogICAgICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtNGZ2KGxvY2F0aW9uLCBjb3Vu
dCwgdik7CiAgICAgfQogfQpAQCAtMzczOCw3ICsyNzU3LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBV
bmlmb3JtNGl2KEdMaW50IGxvY2F0aQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0UHJvZ3Jh
bSgpOworICAgICAgICBQcm9ncmFtICpwcm9ncmFtID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdl
dFByb2dyYW0oKTsKICAgICAgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybTRpdihsb2NhdGlvbiwgY291
bnQsIHYpOwogICAgIH0KIH0KQEAgLTM3NTYsNyArMjc3NSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkg
VW5pZm9ybU1hdHJpeDJmdihHTGludCAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIFByb2dyYW0gKnByb2dyYW0gPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFByb2dy
YW0oKTsKKyAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5n
ZXRQcm9ncmFtKCk7CiAgICAgICAgIHByb2dyYW0tPnNldFVuaWZvcm1NYXRyaXgyZnYobG9jYXRp
b24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICB9CiB9CkBAIC0zNzc0LDcgKzI3OTMs
NyBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm1NYXRyaXgzZnYoR0xpbnQgCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBQcm9ncmFtICpwcm9ncmFtID0gY29udGV4
dC0+Z2V0U3RhdGUoKS5nZXRQcm9ncmFtKCk7CisgICAgICAgIFByb2dyYW0gKnByb2dyYW0gPSBj
b250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0UHJvZ3JhbSgpOwogICAgICAgICBwcm9ncmFtLT5zZXRV
bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAg
fQogfQpAQCAtMzc5Miw3ICsyODExLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtTWF0cml4
NGZ2KEdMaW50IAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUHJv
Z3JhbSAqcHJvZ3JhbSA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0UHJvZ3JhbSgpOworICAgICAg
ICBQcm9ncmFtICpwcm9ncmFtID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFByb2dyYW0oKTsK
ICAgICAgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgY291bnQsIHRy
YW5zcG9zZSwgdmFsdWUpOwogICAgIH0KIH0KQEAgLTM4NDAsMTIgKzI4NTksMTEgQEAgdm9pZCBH
TF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWIxZihHTHVpbnQgaQogICAgIHsKICAgICAgICAgaWYgKGlu
ZGV4ID49IE1BWF9WRVJURVhfQVRUUklCUykKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgR0xmbG9hdCB2YWxzWzRdID0geyB4LCAwLCAw
LCAxIH07Ci0gICAgICAgIGNvbnRleHQtPmdldFN0YXRlKCkuc2V0VmVydGV4QXR0cmliZihpbmRl
eCwgdmFscyk7CisgICAgICAgIGNvbnRleHQtPnZlcnRleEF0dHJpYjFmKGluZGV4LCB4KTsKICAg
ICB9CiB9CiAKQEAgLTM4NTgsMTIgKzI4NzYsMTEgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhB
dHRyaWIxZnYoR0x1aW50IAogICAgIHsKICAgICAgICAgaWYgKGluZGV4ID49IE1BWF9WRVJURVhf
QVRUUklCUykKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgR0xmbG9hdCB2YWxzWzRdID0geyB2YWx1ZXNbMF0sIDAsIDAsIDEgfTsKLSAg
ICAgICAgY29udGV4dC0+Z2V0U3RhdGUoKS5zZXRWZXJ0ZXhBdHRyaWJmKGluZGV4LCB2YWxzKTsK
KyAgICAgICAgY29udGV4dC0+dmVydGV4QXR0cmliMWZ2KGluZGV4LCB2YWx1ZXMpOwogICAgIH0K
IH0KIApAQCAtMzg3NiwxMiArMjg5MywxMSBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJp
YjJmKEdMdWludCBpCiAgICAgewogICAgICAgICBpZiAoaW5kZXggPj0gTUFYX1ZFUlRFWF9BVFRS
SUJTKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBHTGZsb2F0IHZhbHNbNF0gPSB7IHgsIHksIDAsIDEgfTsKLSAgICAgICAgY29udGV4
dC0+Z2V0U3RhdGUoKS5zZXRWZXJ0ZXhBdHRyaWJmKGluZGV4LCB2YWxzKTsKKyAgICAgICAgY29u
dGV4dC0+dmVydGV4QXR0cmliMmYoaW5kZXgsIHgsIHkpOwogICAgIH0KIH0KIApAQCAtMzg5NCwx
MiArMjkxMCwxMSBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYjJmdihHTHVpbnQgCiAg
ICAgewogICAgICAgICBpZiAoaW5kZXggPj0gTUFYX1ZFUlRFWF9BVFRSSUJTKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVF
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZB
TFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBHTGZsb2F0
IHZhbHNbNF0gPSB7IHZhbHVlc1swXSwgdmFsdWVzWzFdLCAwLCAxIH07Ci0gICAgICAgIGNvbnRl
eHQtPmdldFN0YXRlKCkuc2V0VmVydGV4QXR0cmliZihpbmRleCwgdmFscyk7CisgICAgICAgIGNv
bnRleHQtPnZlcnRleEF0dHJpYjJmdihpbmRleCwgdmFsdWVzKTsKICAgICB9CiB9CiAKQEAgLTM5
MTIsMTIgKzI5MjcsMTEgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWIzZihHTHVpbnQg
aQogICAgIHsKICAgICAgICAgaWYgKGluZGV4ID49IE1BWF9WRVJURVhfQVRUUklCUykKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgR0xm
bG9hdCB2YWxzWzRdID0geyB4LCB5LCB6LCAxIH07Ci0gICAgICAgIGNvbnRleHQtPmdldFN0YXRl
KCkuc2V0VmVydGV4QXR0cmliZihpbmRleCwgdmFscyk7CisgICAgICAgIGNvbnRleHQtPnZlcnRl
eEF0dHJpYjNmKGluZGV4LCB4LCB5LCB6KTsKICAgICB9CiB9CiAKQEAgLTM5MzAsMTIgKzI5NDQs
MTEgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWIzZnYoR0x1aW50IAogICAgIHsKICAg
ICAgICAgaWYgKGluZGV4ID49IE1BWF9WRVJURVhfQVRUUklCUykKICAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgR0xmbG9hdCB2YWxzWzRd
ID0geyB2YWx1ZXNbMF0sIHZhbHVlc1sxXSwgdmFsdWVzWzJdLCAxIH07Ci0gICAgICAgIGNvbnRl
eHQtPmdldFN0YXRlKCkuc2V0VmVydGV4QXR0cmliZihpbmRleCwgdmFscyk7CisgICAgICAgIGNv
bnRleHQtPnZlcnRleEF0dHJpYjNmdihpbmRleCwgdmFsdWVzKTsKICAgICB9CiB9CiAKQEAgLTM5
NDgsMTIgKzI5NjEsMTEgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWI0ZihHTHVpbnQg
aQogICAgIHsKICAgICAgICAgaWYgKGluZGV4ID49IE1BWF9WRVJURVhfQVRUUklCUykKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgR0xm
bG9hdCB2YWxzWzRdID0geyB4LCB5LCB6LCB3IH07Ci0gICAgICAgIGNvbnRleHQtPmdldFN0YXRl
KCkuc2V0VmVydGV4QXR0cmliZihpbmRleCwgdmFscyk7CisgICAgICAgIGNvbnRleHQtPnZlcnRl
eEF0dHJpYjRmKGluZGV4LCB4LCB5LCB6LCB3KTsKICAgICB9CiB9CiAKQEAgLTM5NjYsMTEgKzI5
NzgsMTEgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWI0ZnYoR0x1aW50IAogICAgIHsK
ICAgICAgICAgaWYgKGluZGV4ID49IE1BWF9WRVJURVhfQVRUUklCUykKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwor
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY29udGV4dC0+Z2V0
U3RhdGUoKS5zZXRWZXJ0ZXhBdHRyaWJmKGluZGV4LCB2YWx1ZXMpOworICAgICAgICBjb250ZXh0
LT52ZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIHZhbHVlcyk7CiAgICAgfQogfQogCkBAIC0zOTg1LDUy
ICsyOTk3LDUyIEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliUG9pbnRlcihHTHUKICAg
ICB7CiAgICAgICAgIGlmIChpbmRleCA+PSBNQVhfVkVSVEVYX0FUVFJJQlMpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUp
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFM
VUUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChzaXpl
IDwgMSB8fCBzaXplID4gNCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKICAgICAgICAgc3dpdGNoICh0eXBlKQogICAgICAgICB7Ci0gICAgICAgICAg
Y2FzZSBHTF9CWVRFOgotICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKLSAgICAgICAg
ICBjYXNlIEdMX1NIT1JUOgotICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6Ci0gICAg
ICAgICAgY2FzZSBHTF9GSVhFRDoKLSAgICAgICAgICBjYXNlIEdMX0ZMT0FUOgotICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdMX0JZVEU6CisgICAgICAgICAgICBjYXNlIEdM
X1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICBjYXNlIEdMX1NIT1JUOgorICAgICAgICAgICAg
Y2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAgICAgICAgICAgIGNhc2UgR0xfRklYRUQ6CisgICAg
ICAgICAgICBjYXNlIEdMX0ZMT0FUOgorICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAg
ICAgY2FzZSBHTF9IQUxGX0ZMT0FUOgotICAgICAgICAgIGNhc2UgR0xfSU5UOgotICAgICAgICAg
IGNhc2UgR0xfVU5TSUdORURfSU5UOgotICAgICAgICAgIGNhc2UgR0xfSU5UXzJfMTBfMTBfMTBf
UkVWOgotICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWOgotICAg
ICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVQ6CisgICAgICAgICAg
ICBjYXNlIEdMX0lOVDoKKyAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgorICAgICAg
ICAgICAgY2FzZSBHTF9JTlRfMl8xMF8xMF8xMF9SRVY6CisgICAgICAgICAgICBjYXNlIEdMX1VO
U0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVjoKKyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+
Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChzdHJpZGUgPCAwKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoKHR5cGUgPT0gR0xf
SU5UXzJfMTBfMTBfMTBfUkVWIHx8IHR5cGUgPT0gR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBf
UkVWKSAmJiBzaXplICE9IDQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKQEAgLTQwMzgsMTQgKzMwNTAsMTQgQEAgdm9pZCBHTF9BUElF
TlRSWSBWZXJ0ZXhBdHRyaWJQb2ludGVyKEdMdQogICAgICAgICAvLyBBbiBJTlZBTElEX09QRVJB
VElPTiBlcnJvciBpcyBnZW5lcmF0ZWQgd2hlbiBhIG5vbi16ZXJvIHZlcnRleCBhcnJheSBvYmpl
Y3QKICAgICAgICAgLy8gaXMgYm91bmQsIHplcm8gaXMgYm91bmQgdG8gdGhlIEFSUkFZX0JVRkZF
UiBidWZmZXIgb2JqZWN0IGJpbmRpbmcgcG9pbnQsCiAgICAgICAgIC8vIGFuZCB0aGUgcG9pbnRl
ciBhcmd1bWVudCBpcyBub3QgTlVMTC4KLSAgICAgICAgaWYgKGNvbnRleHQtPmdldFN0YXRlKCku
Z2V0VmVydGV4QXJyYXkoKS0+aWQoKSAhPSAwICYmIGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0QXJy
YXlCdWZmZXJJZCgpID09IDAgJiYgcHRyICE9IE5VTEwpCisgICAgICAgIGlmIChjb250ZXh0LT5n
ZXRHTFN0YXRlKCkuZ2V0VmVydGV4QXJyYXkoKS0+aWQoKSAhPSAwICYmCisgICAgICAgICAgICBj
b250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0QXJyYXlCdWZmZXJJZCgpID09IDAgJiYgcHRyICE9IE5V
TEwpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgY29udGV4dC0+Z2V0U3RhdGUoKS5zZXRWZXJ0ZXhBdHRyaWJTdGF0ZShp
bmRleCwgY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRUYXJnZXRCdWZmZXIoR0xfQVJSQVlfQlVGRkVS
KSwgc2l6ZSwgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBub3JtYWxpemVkID09IEdMX1RSVUUsIGZhbHNlLCBzdHJpZGUsIHB0cik7CisgICAg
ICAgIGNvbnRleHQtPnZlcnRleEF0dHJpYlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIG5vcm1h
bGl6ZWQsIHN0cmlkZSwgcHRyKTsKICAgICB9CiB9CiAKQEAgLTQwNTgsMTIgKzMwNzAsMTIgQEAg
dm9pZCBHTF9BUElFTlRSWSBWaWV3cG9ydChHTGludCB4LCBHTGludAogICAgIHsKICAgICAgICAg
aWYgKHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjb250ZXh0LT5nZXRTdGF0ZSgpLnNldFZp
ZXdwb3J0UGFyYW1zKHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBjb250ZXh0LT52aWV3
cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKICAgICB9CiB9CiAKLX0KK30gIC8vIG5hbWVzcGFj
ZSBnbApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9w
b2ludHNfZ2xlc18yXzBfZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzJfMF9leHQuY3BwCShyZXZpc2lv
biAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5
X3BvaW50c19nbGVzXzJfMF9leHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNiwxMCArMTYsMTQg
QEAKICNpbmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUgImxpYkFOR0xF
L1NoYWRlci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1F1ZXJ5LmgiCisjaW5jbHVkZSAibGliQU5H
TEUvcXVlcnljb252ZXJzaW9ucy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3F1ZXJ5dXRpbHMuaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9WZXJ0ZXhBcnJheS5oIgogCiAjaW5jbHVkZSAibGliQU5HTEUv
dmFsaWRhdGlvbkVTLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvdmFsaWRhdGlvbkVTMi5oIgogI2lu
Y2x1ZGUgImxpYkFOR0xFL3ZhbGlkYXRpb25FUzMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS92YWxp
ZGF0aW9uRVMzMS5oIgogCiAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCiAjaW5jbHVkZSAiY29t
bW9uL3V0aWxpdGllcy5oIgpAQCAtMjcsNiArMzEsMTkgQEAKIG5hbWVzcGFjZSBnbAogewogCitu
YW1lc3BhY2UKK3sKKwordm9pZCBTZXRSb2J1c3RMZW5ndGhQYXJhbShHTHNpemVpICpsZW5ndGgs
IEdMc2l6ZWkgdmFsdWUpCit7CisgICAgaWYgKGxlbmd0aCkKKyAgICB7CisgICAgICAgICpsZW5n
dGggPSB2YWx1ZTsKKyAgICB9Cit9CisKK30gIC8vIGFub255bW91cyBuYW1lc3BhY2UKKwogdm9p
ZCBHTF9BUElFTlRSWSBHZW5RdWVyaWVzRVhUKEdMc2l6ZWkgbiwgR0x1aW50ICppZHMpCiB7CiAg
ICAgRVZFTlQoIihHTHNpemVpIG4gPSAlZCwgR0x1aW50KiBpZHMgPSAweCUwLjhwKSIsIG4sIGlk
cyk7CkBAIC05Myw3ICsxMTAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEJlZ2luUXVlcnlFWFQoR0xl
bnVtIHRhCiAgICAgICAgIEVycm9yIGVycm9yID0gY29udGV4dC0+YmVnaW5RdWVyeSh0YXJnZXQs
IGlkKTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpA
QCAtMTE0LDcgKzEzMSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRW5kUXVlcnlFWFQoR0xlbnVtIHRh
cmcKICAgICAgICAgRXJyb3IgZXJyb3IgPSBjb250ZXh0LT5lbmRRdWVyeSh0YXJnZXQpOwogICAg
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihlcnJvcik7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihl
cnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0xMzUsNyAr
MTUyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBRdWVyeUNvdW50ZXJFWFQoR0x1aW50IAogICAgICAg
ICBFcnJvciBlcnJvciA9IGNvbnRleHQtPnF1ZXJ5Q291bnRlcihpZCwgdGFyZ2V0KTsKICAgICAg
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoZXJy
b3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMTcwLDEyICsx
ODcsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5T2JqZWN0aXZFWFQoR0x1CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBFcnJvciBlcnJvciA9IGNvbnRleHQt
PmdldFF1ZXJ5T2JqZWN0aXYoaWQsIHBuYW1lLCBwYXJhbXMpOwotICAgICAgICBpZiAoZXJyb3Iu
aXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihl
cnJvcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+
Z2V0UXVlcnlPYmplY3RpdihpZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCkBAIC0xOTEs
MTIgKzIwMyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0UXVlcnlPYmplY3R1aXZFWFQoR0wKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIEVycm9yIGVycm9yID0gY29u
dGV4dC0+Z2V0UXVlcnlPYmplY3R1aXYoaWQsIHBuYW1lLCBwYXJhbXMpOwotICAgICAgICBpZiAo
ZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgY29u
dGV4dC0+Z2V0UXVlcnlPYmplY3R1aXYoaWQsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIApA
QCAtMjEyLDEyICsyMTksNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5T2JqZWN0aTY0dkVY
VChHCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBFcnJvciBlcnJv
ciA9IGNvbnRleHQtPmdldFF1ZXJ5T2JqZWN0aTY0dihpZCwgcG5hbWUsIHBhcmFtcyk7Ci0gICAg
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAg
ICAgICBjb250ZXh0LT5nZXRRdWVyeU9iamVjdGk2NHYoaWQsIHBuYW1lLCBwYXJhbXMpOwogICAg
IH0KIH0KIApAQCAtMjMzLDEyICsyMzUsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5T2Jq
ZWN0dWk2NHZFWFQoCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBF
cnJvciBlcnJvciA9IGNvbnRleHQtPmdldFF1ZXJ5T2JqZWN0dWk2NHYoaWQsIHBuYW1lLCBwYXJh
bXMpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KKyAgICAgICAgY29udGV4dC0+Z2V0UXVlcnlPYmplY3R1aTY0dihpZCwgcG5hbWUsIHBh
cmFtcyk7CiAgICAgfQogfQogCkBAIC0yNTEsNyArMjQ4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBE
ZWxldGVGZW5jZXNOVihHTHNpemVpIAogICAgIHsKICAgICAgICAgaWYgKG4gPCAwKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZB
TFVFKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjgxLDcgKzI3
OCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRHJhd0FycmF5c0luc3RhbmNlZEFOR0wKICAgICAgICAg
RXJyb3IgZXJyb3IgPSBjb250ZXh0LT5kcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBj
b3VudCwgcHJpbWNvdW50KTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZXJyb3IpOworICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMzEyLDcgKzMwOSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRHJhd0VsZW1l
bnRzSW5zdGFuY2VkQU4KICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdFbGVtZW50c0luc3RhbmNl
ZChtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgcHJpbWNvdW50LCBpbmRleFJhbmdlKTsKICAg
ICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
ZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMzI5LDEz
ICszMjYsMTMgQEAgdm9pZCBHTF9BUElFTlRSWSBGaW5pc2hGZW5jZU5WKEdMdWludCBmZQogCiAg
ICAgICAgIGlmIChmZW5jZU9iamVjdCA9PSBOVUxMKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChmZW5jZU9iamVj
dC0+aXNTZXQoKSAhPSBHTF9UUlVFKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0zNTIsNyArMzQ5LDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBHZW5GZW5jZXNOVihHTHNpemVpIG4sIAogICAgIHsKICAgICAgICAgaWYgKG4gPCAwKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZB
TElEX1ZBTFVFKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMzc0
LDEzICszNzEsMTMgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRGZW5jZWl2TlYoR0x1aW50IGZlbgog
CiAgICAgICAgIGlmIChmZW5jZU9iamVjdCA9PSBOVUxMKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChmZW5jZU9i
amVjdC0+aXNTZXQoKSAhPSBHTF9UUlVFKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0zOTcsNyArMzk0LDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBHZXRGZW5jZWl2TlYoR0x1aW50IGZlbgogICAgICAgICAgICAgICAgICAgICBFcnJv
ciBlcnJvciA9IGZlbmNlT2JqZWN0LT50ZXN0KCZzdGF0dXMpOwogICAgICAgICAgICAgICAgICAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7CiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9
CkBAIC00MTMsNyArNDEwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRGZW5jZWl2TlYoR0x1aW50
IGZlbgogCiAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ0NCw3
ICs0NDEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyCiAgICAg
ewogICAgICAgICBpZiAoYnVmc2l6ZSA8IDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCkBAIC00NTIsNyArNDQ5LDcgQEAgdm9pZCBHTF9BUElFTlRS
WSBHZXRUcmFuc2xhdGVkU2hhZGVyU291cgogCiAgICAgICAgIGlmICghc2hhZGVyT2JqZWN0KQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTikpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CkBAIC01NTcsMTEgKzU1NCwxMSBAQCB2b2lkIEdMX0FQSUVOVFJZIFJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZW5kZXJi
dWZmZXIgKnJlbmRlcmJ1ZmZlciA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0Q3VycmVudFJlbmRl
cmJ1ZmZlcigpOworICAgICAgICBSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlciA9IGNvbnRleHQt
PmdldEdMU3RhdGUoKS5nZXRDdXJyZW50UmVuZGVyYnVmZmVyKCk7CiAgICAgICAgIEVycm9yIGVy
cm9yID0gcmVuZGVyYnVmZmVyLT5zZXRTdG9yYWdlTXVsdGlzYW1wbGUoc2FtcGxlcywgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7CisgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICB9CkBAIC01NzYsNyArNTczLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBT
ZXRGZW5jZU5WKEdMdWludCBmZW5jZQogICAgIHsKICAgICAgICAgaWYgKGNvbmRpdGlvbiAhPSBH
TF9BTExfQ09NUExFVEVEX05WKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTU4NCwxNCArNTgxLDE0IEBAIHZvaWQgR0xfQVBJRU5UUlkgU2V0RmVu
Y2VOVihHTHVpbnQgZmVuY2UKIAogICAgICAgICBpZiAoZmVuY2VPYmplY3QgPT0gTlVMTCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAog
ICAgICAgICBFcnJvciBlcnJvciA9IGZlbmNlT2JqZWN0LT5zZXQoY29uZGl0aW9uKTsKICAgICAg
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoZXJy
b3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtNjA4LDEzICs2
MDUsMTMgQEAgR0xib29sZWFuIEdMX0FQSUVOVFJZIFRlc3RGZW5jZU5WKEdMdWludAogCiAgICAg
ICAgIGlmIChmZW5jZU9iamVjdCA9PSBOVUxMKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAg
ICAgICAgICAgIHJldHVybiBHTF9UUlVFOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGZlbmNl
T2JqZWN0LT5pc1NldCgpICE9IEdMX1RSVUUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAg
ICAgICAgICAgcmV0dXJuIEdMX1RSVUU7CiAgICAgICAgIH0KIApAQCAtNjIyLDcgKzYxOSw3IEBA
IEdMYm9vbGVhbiBHTF9BUElFTlRSWSBUZXN0RmVuY2VOVihHTHVpbnQKICAgICAgICAgRXJyb3Ig
ZXJyb3IgPSBmZW5jZU9iamVjdC0+dGVzdCgmcmVzdWx0KTsKICAgICAgICAgaWYgKGVycm9yLmlz
RXJyb3IoKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZXJy
b3IpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoZXJyb3IpOwogICAgICAgICAg
ICAgcmV0dXJuIEdMX1RSVUU7CiAgICAgICAgIH0KIApAQCAtNjQyLDE3ICs2MzksMTggQEAgdm9p
ZCBHTF9BUElFTlRSWSBUZXhTdG9yYWdlMkRFWFQoR0xlbnVtIAogICAgIHsKICAgICAgICAgaWYg
KCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZVN0b3JhZ2UpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYg
KGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMgJiYKLSAgICAgICAgICAgICFWYWxpZGF0
ZUVTMlRleFN0b3JhZ2VQYXJhbWV0ZXJzKGNvbnRleHQsIHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCkpCisgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRN
YWpvclZlcnNpb24oKSA8IDMgJiYKKyAgICAgICAgICAgICFWYWxpZGF0ZUVTMlRleFN0b3JhZ2VQ
YXJhbWV0ZXJzKGNvbnRleHQsIHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQpKQog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo
Y29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpID49IDMgJiYKKyAgICAgICAgaWYgKGNvbnRleHQt
PmdldENsaWVudE1ham9yVmVyc2lvbigpID49IDMgJiYKICAgICAgICAgICAgICFWYWxpZGF0ZUVT
M1RleFN0b3JhZ2UyRFBhcmFtZXRlcnMoY29udGV4dCwgdGFyZ2V0LCBsZXZlbHMsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaGVpZ2h0LCAxKSkKICAgICAgICAgewpAQCAtNjY0LDcgKzY2Miw3IEBAIHZvaWQgR0xf
QVBJRU5UUlkgVGV4U3RvcmFnZTJERVhUKEdMZW51bSAKICAgICAgICAgRXJyb3IgZXJyb3IgPSB0
ZXh0dXJlLT5zZXRTdG9yYWdlKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgc2l6ZSk7
CiAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKGVycm9yKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKGVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTY3
OSw3ICs2NzcsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMCiAg
ICAgewogICAgICAgICBpZiAoaW5kZXggPj0gTUFYX1ZFUlRFWF9BVFRSSUJTKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVF
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZB
TFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNjg5LDcgKzY4Nyw3
IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliRGl2aXNvckFOR0wKICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvck1lc3NhZ2UgPSAiVGhlIGN1cnJl
bnQgY29udGV4dCBkb2Vzbid0IHN1cHBvcnQgc2V0dGluZyBhIG5vbi16ZXJvIGRpdmlzb3Igb24g
dGhlIGF0dHJpYnV0ZSB3aXRoIGluZGV4IHplcm8uICIKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiUGxlYXNlIHJlb3JkZXIgdGhlIGF0dHJpYnV0ZXMgaW4geW91
ciB2ZXJ0ZXggc2hhZGVyIHNvIHRoYXQgYXR0cmlidXRlIHplcm8gY2FuIGhhdmUgYSB6ZXJvIGRp
dmlzb3IuIjsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTiwgZXJyb3JNZXNzYWdlKSk7CisgICAgICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGVycm9yTWVzc2FnZSkp
OwogCiAgICAgICAgICAgICAgICAgLy8gV2UgYWxzbyBvdXRwdXQgYW4gZXJyb3IgbWVzc2FnZSB0
byB0aGUgZGVidWdnZXIgd2luZG93IGlmIHRyYWNpbmcgaXMgYWN0aXZlLCBzbyB0aGF0IGRldmVs
b3BlcnMgY2FuIHNlZSB0aGUgZXJyb3IgbWVzc2FnZS4KICAgICAgICAgICAgICAgICBFUlIoIiVz
IiwgZXJyb3JNZXNzYWdlKTsKQEAgLTc3Miw3ICs3NzAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdl
dFByb2dyYW1CaW5hcnlPRVMoR0x1CiAgICAgICAgIEVycm9yIGVycm9yID0gcHJvZ3JhbU9iamVj
dC0+c2F2ZUJpbmFyeShiaW5hcnlGb3JtYXQsIGJpbmFyeSwgYnVmU2l6ZSwgbGVuZ3RoKTsKICAg
ICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
ZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtNzk3LDcg
Kzc5NSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbUJpbmFyeU9FUyhHTHVpbnQKICAgICAg
ICAgRXJyb3IgZXJyb3IgPSBwcm9ncmFtT2JqZWN0LT5sb2FkQmluYXJ5KGJpbmFyeUZvcm1hdCwg
YmluYXJ5LCBsZW5ndGgpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7CisgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICB9CkBAIC05MjEsNyArOTE5LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBJbnNlcnRFdmVu
dE1hcmtlckVYVChHTAogICAgICAgICB7CiAgICAgICAgICAgICAvLyBUaGUgZGVidWcgbWFya2Vy
IGNhbGxzIHNob3VsZCBub3Qgc2V0IGVycm9yIHN0YXRlCiAgICAgICAgICAgICAvLyBIb3dldmVy
LCBpdCBzZWVtcyByZWFzb25hYmxlIHRvIHNldCBhbiBlcnJvciBzdGF0ZSBpZiB0aGUgZXh0ZW5z
aW9uIGlzIG5vdCBlbmFibGVkCi0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTiwgIkV4dGVuc2lvbiBub3QgZW5hYmxlZCIpKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAi
RXh0ZW5zaW9uIG5vdCBlbmFibGVkIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTk0Niw3ICs5NDQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFB1c2hHcm91cE1hcmtlckVY
VChHTHNpCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFRoZSBkZWJ1ZyBtYXJrZXIgY2FsbHMg
c2hvdWxkIG5vdCBzZXQgZXJyb3Igc3RhdGUKICAgICAgICAgICAgIC8vIEhvd2V2ZXIsIGl0IHNl
ZW1zIHJlYXNvbmFibGUgdG8gc2V0IGFuIGVycm9yIHN0YXRlIGlmIHRoZSBleHRlbnNpb24gaXMg
bm90IGVuYWJsZWQKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAiRXh0ZW5zaW9uIG5vdCBlbmFibGVkIikpOworICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFeHRlbnNp
b24gbm90IGVuYWJsZWQiKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAt
OTgwLDcgKzk3OCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUG9wR3JvdXBNYXJrZXJFWFQoKQogICAg
ICAgICB7CiAgICAgICAgICAgICAvLyBUaGUgZGVidWcgbWFya2VyIGNhbGxzIHNob3VsZCBub3Qg
c2V0IGVycm9yIHN0YXRlCiAgICAgICAgICAgICAvLyBIb3dldmVyLCBpdCBzZWVtcyByZWFzb25h
YmxlIHRvIHNldCBhbiBlcnJvciBzdGF0ZSBpZiB0aGUgZXh0ZW5zaW9uIGlzIG5vdCBlbmFibGVk
Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwgIkV4dGVuc2lvbiBub3QgZW5hYmxlZCIpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRXh0ZW5zaW9uIG5vdCBlbmFi
bGVkIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTEwMDYsNyArMTAw
NCw3IEBAIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEVHTEltYWdlVGEKICAgICAgICAg
RXJyb3IgZXJyb3IgPSB0ZXh0dXJlLT5zZXRFR0xJbWFnZVRhcmdldCh0YXJnZXQsIGltYWdlT2Jq
ZWN0KTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpA
QCAtMTAyNywxMSArMTAyNSwxMSBAQCBBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBFR0xJ
bWFnZVRhCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZW5kZXJi
dWZmZXIgKnJlbmRlcmJ1ZmZlciA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0Q3VycmVudFJlbmRl
cmJ1ZmZlcigpOworICAgICAgICBSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlciA9IGNvbnRleHQt
PmdldEdMU3RhdGUoKS5nZXRDdXJyZW50UmVuZGVyYnVmZmVyKCk7CiAgICAgICAgIEVycm9yIGVy
cm9yID0gcmVuZGVyYnVmZmVyLT5zZXRTdG9yYWdlRUdMSW1hZ2VUYXJnZXQoaW1hZ2VPYmplY3Qp
OwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihlcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0x
MTM5LDkgKzExMzcsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIERlYnVnTWVzc2FnZUNvbnRyb2xLSFIo
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBzdGQ6OnZlY3RvcjxH
THVpbnQ+IGlkVmVjdG9yKGlkcywgaWRzICsgY291bnQpOwotICAgICAgICBjb250ZXh0LT5nZXRT
dGF0ZSgpLmdldERlYnVnKCkuc2V0TWVzc2FnZUNvbnRyb2woCi0gICAgICAgICAgICBzb3VyY2Us
IHR5cGUsIHNldmVyaXR5LCBzdGQ6Om1vdmUoaWRWZWN0b3IpLCAoZW5hYmxlZCAhPSBHTF9GQUxT
RSkpOworICAgICAgICBjb250ZXh0LT5kZWJ1Z01lc3NhZ2VDb250cm9sKHNvdXJjZSwgdHlwZSwg
c2V2ZXJpdHksIGNvdW50LCBpZHMsIGVuYWJsZWQpOwogICAgIH0KIH0KIApAQCAtMTE2NSw4ICsx
MTYxLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBEZWJ1Z01lc3NhZ2VJbnNlcnRLSFIoRwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgc3RkOjpzdHJpbmcgbXNnKGJ1Ziwg
KGxlbmd0aCA+IDApID8gc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpIDogc3RybGVuKGJ1Zikp
OwotICAgICAgICBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldERlYnVnKCkuaW5zZXJ0TWVzc2FnZShz
b3VyY2UsIHR5cGUsIGlkLCBzZXZlcml0eSwgc3RkOjptb3ZlKG1zZykpOworICAgICAgICBjb250
ZXh0LT5kZWJ1Z01lc3NhZ2VJbnNlcnQoc291cmNlLCB0eXBlLCBpZCwgc2V2ZXJpdHksIGxlbmd0
aCwgYnVmKTsKICAgICB9CiB9CiAKQEAgLTExODMsNyArMTE3OCw3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgRGVidWdNZXNzYWdlQ2FsbGJhY2tLSFIKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0RGVidWcoKS5zZXRDYWxsYmFjayhj
YWxsYmFjaywgdXNlclBhcmFtKTsKKyAgICAgICAgY29udGV4dC0+ZGVidWdNZXNzYWdlQ2FsbGJh
Y2soY2FsbGJhY2ssIHVzZXJQYXJhbSk7CiAgICAgfQogfQogCkBAIC0xMjExLDggKzEyMDYsOCBA
QCBHTHVpbnQgR0xfQVBJRU5UUlkgR2V0RGVidWdNZXNzYWdlTG9nS0hSCiAgICAgICAgICAgICBy
ZXR1cm4gMDsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTHVpbnQ+
KGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0RGVidWcoKS5nZXRNZXNzYWdlcygKLSAgICAgICAgICAg
IGNvdW50LCBidWZTaXplLCBzb3VyY2VzLCB0eXBlcywgaWRzLCBzZXZlcml0aWVzLCBsZW5ndGhz
LCBtZXNzYWdlTG9nKSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LT5nZXREZWJ1Z01lc3NhZ2VM
b2coY291bnQsIGJ1ZlNpemUsIHNvdXJjZXMsIHR5cGVzLCBpZHMsIHNldmVyaXRpZXMsIGxlbmd0
aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZUxv
Zyk7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CkBAIC0xMjM0LDcgKzEyMjksNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIFB1c2hEZWJ1Z0dyb3VwS0hSKEdMZW51CiAgICAgICAgIH0KIAogICAgICAgICBz
dGQ6OnN0cmluZyBtc2cobWVzc2FnZSwgKGxlbmd0aCA+IDApID8gc3RhdGljX2Nhc3Q8c2l6ZV90
PihsZW5ndGgpIDogc3RybGVuKG1lc3NhZ2UpKTsKLSAgICAgICAgY29udGV4dC0+Z2V0U3RhdGUo
KS5nZXREZWJ1ZygpLnB1c2hHcm91cChzb3VyY2UsIGlkLCBzdGQ6Om1vdmUobXNnKSk7CisgICAg
ICAgIGNvbnRleHQtPnB1c2hEZWJ1Z0dyb3VwKHNvdXJjZSwgaWQsIGxlbmd0aCwgbWVzc2FnZSk7
CiAgICAgfQogfQogCkBAIC0xMjUwLDcgKzEyNDUsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFBvcERl
YnVnR3JvdXBLSFIodm9pZCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0RGVidWcoKS5wb3BHcm91cCgpOworICAgICAgICBj
b250ZXh0LT5wb3BEZWJ1Z0dyb3VwKCk7CiAgICAgfQogfQogCkBAIC0xMjY5LDExICsxMjY0LDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBPYmplY3RMYWJlbEtIUihHTGVudW0gaQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgTGFiZWxlZE9iamVjdCAqb2JqZWN0ID0gY29u
dGV4dC0+Z2V0TGFiZWxlZE9iamVjdChpZGVudGlmaWVyLCBuYW1lKTsKLSAgICAgICAgQVNTRVJU
KG9iamVjdCAhPSBudWxscHRyKTsKLQotICAgICAgICBzdGQ6OnN0cmluZyBsYmwobGFiZWwsIChs
ZW5ndGggPiAwKSA/IHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSA6IHN0cmxlbihsYWJlbCkp
OwotICAgICAgICBvYmplY3QtPnNldExhYmVsKGxibCk7CisgICAgICAgIGNvbnRleHQtPm9iamVj
dExhYmVsKGlkZW50aWZpZXIsIG5hbWUsIGxlbmd0aCwgbGFiZWwpOwogICAgIH0KIH0KIApAQCAt
MTI5MywxNCArMTI4NCw3IEBAIEdldE9iamVjdExhYmVsS0hSKEdMZW51bSBpZGVudGlmaWVyLCBH
THUKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIExhYmVsZWRPYmpl
Y3QgKm9iamVjdCA9IGNvbnRleHQtPmdldExhYmVsZWRPYmplY3QoaWRlbnRpZmllciwgbmFtZSk7
Ci0gICAgICAgIEFTU0VSVChvYmplY3QgIT0gbnVsbHB0cik7Ci0KLSAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJm9iamVjdExhYmVsID0gb2JqZWN0LT5nZXRMYWJlbCgpOwotICAgICAgICBzaXpl
X3Qgd3JpdGVMZW5ndGggPSBzdGQ6Om1pbihzdGF0aWNfY2FzdDxzaXplX3Q+KGJ1ZlNpemUpIC0g
MSwgb2JqZWN0TGFiZWwubGVuZ3RoKCkpOwotICAgICAgICBzdGQ6OmNvcHkob2JqZWN0TGFiZWwu
YmVnaW4oKSwgb2JqZWN0TGFiZWwuYmVnaW4oKSArIHdyaXRlTGVuZ3RoLCBsYWJlbCk7Ci0gICAg
ICAgIGxhYmVsW3dyaXRlTGVuZ3RoXSA9ICdcMCc7Ci0gICAgICAgICpsZW5ndGggICAgICAgICAg
ICA9IHN0YXRpY19jYXN0PEdMc2l6ZWk+KHdyaXRlTGVuZ3RoKTsKKyAgICAgICAgY29udGV4dC0+
Z2V0T2JqZWN0TGFiZWwoaWRlbnRpZmllciwgbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBsYWJlbCk7
CiAgICAgfQogfQogCkBAIC0xMzE3LDExICsxMzAxLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBPYmpl
Y3RQdHJMYWJlbEtIUihjb25zdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgTGFiZWxlZE9iamVjdCAqb2JqZWN0ID0gY29udGV4dC0+Z2V0TGFiZWxlZE9iamVjdEZy
b21QdHIocHRyKTsKLSAgICAgICAgQVNTRVJUKG9iamVjdCAhPSBudWxscHRyKTsKLQotICAgICAg
ICBzdGQ6OnN0cmluZyBsYmwobGFiZWwsIChsZW5ndGggPiAwKSA/IHN0YXRpY19jYXN0PHNpemVf
dD4obGVuZ3RoKSA6IHN0cmxlbihsYWJlbCkpOwotICAgICAgICBvYmplY3QtPnNldExhYmVsKGxi
bCk7CisgICAgICAgIGNvbnRleHQtPm9iamVjdFB0ckxhYmVsKHB0ciwgbGVuZ3RoLCBsYWJlbCk7
CiAgICAgfQogfQogCkBAIC0xMzQzLDE0ICsxMzIzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRP
YmplY3RQdHJMYWJlbEtIUihjbwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgTGFiZWxlZE9iamVjdCAqb2JqZWN0ID0gY29udGV4dC0+Z2V0TGFiZWxlZE9iamVjdEZy
b21QdHIocHRyKTsKLSAgICAgICAgQVNTRVJUKG9iamVjdCAhPSBudWxscHRyKTsKLQotICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmb2JqZWN0TGFiZWwgPSBvYmplY3QtPmdldExhYmVsKCk7Ci0g
ICAgICAgIHNpemVfdCB3cml0ZUxlbmd0aCA9IHN0ZDo6bWluKHN0YXRpY19jYXN0PHNpemVfdD4o
YnVmU2l6ZSkgLSAxLCBvYmplY3RMYWJlbC5sZW5ndGgoKSk7Ci0gICAgICAgIHN0ZDo6Y29weShv
YmplY3RMYWJlbC5iZWdpbigpLCBvYmplY3RMYWJlbC5iZWdpbigpICsgd3JpdGVMZW5ndGgsIGxh
YmVsKTsKLSAgICAgICAgbGFiZWxbd3JpdGVMZW5ndGhdID0gJ1wwJzsKLSAgICAgICAgKmxlbmd0
aCAgICAgICAgICAgID0gc3RhdGljX2Nhc3Q8R0xzaXplaT4od3JpdGVMZW5ndGgpOworICAgICAg
ICBjb250ZXh0LT5nZXRPYmplY3RQdHJMYWJlbChwdHIsIGJ1ZlNpemUsIGxlbmd0aCwgbGFiZWwp
OwogICAgIH0KIH0KIApAQCAtMTM2OSw0ICsxMzQyLDIwMzIgQEAgdm9pZCBHTF9BUElFTlRSWSBH
ZXRQb2ludGVydktIUihHTGVudW0gcAogICAgICAgICBjb250ZXh0LT5nZXRQb2ludGVydihwbmFt
ZSwgcGFyYW1zKTsKICAgICB9CiB9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEJp
bmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTShHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGNoYXIgKm5hbWUpCit7CisgICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9
ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBjb25zdCBHTGNoYXIgKm5hbWUgPSAweCUwLjhwKSIs
IHByb2dyYW0sCisgICAgICAgICAgbG9jYXRpb24sIG5hbWUpOworCisgICAgQ29udGV4dCAqY29u
dGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsK
KyAgICAgICAgaWYgKCFWYWxpZGF0ZUJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTShjb250ZXh0
LCBwcm9ncmFtLCBsb2NhdGlvbiwgbmFtZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnRleHQtPmJpbmRVbmlmb3JtTG9jYXRpb24ocHJv
Z3JhbSwgbG9jYXRpb24sIG5hbWUpOworICAgIH0KK30KKworQU5HTEVfRVhQT1JUIHZvaWQgR0xf
QVBJRU5UUlkgQ292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU0oR0xlbnVtIGNvbXBvbmVudHMpCit7
CisgICAgRVZFTlQoIihHTGVudW0gY29tcG9uZW50cyA9ICV1KSIsIGNvbXBvbmVudHMpOworCisg
ICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChj
b250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFWYWxpZGF0ZUNvdmVyYWdlTW9kdWxhdGlvbkNI
Uk9NSVVNKGNvbnRleHQsIGNvbXBvbmVudHMpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+c2V0Q292ZXJhZ2VNb2R1bGF0aW9uKGNv
bXBvbmVudHMpOworICAgIH0KK30KKworLy8gQ0hST01JVU1fcGF0aF9yZW5kZXJpbmcKK0FOR0xF
X0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIE1hdHJpeExvYWRmQ0hST01JVU0oR0xlbnVtIG1hdHJp
eE1vZGUsIGNvbnN0IEdMZmxvYXQgKm1hdHJpeCkKK3sKKyAgICBFVkVOVCgiKEdMZW51bSBtYXRy
aXhNb2RlID0gJXUpIiwgbWF0cml4TW9kZSk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBp
ZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlTWF0cml4KGNvbnRleHQs
IG1hdHJpeE1vZGUsIG1hdHJpeCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBjb250ZXh0LT5sb2FkUGF0aFJlbmRlcmluZ01hdHJpeChtYXRyaXhN
b2RlLCBtYXRyaXgpOworICAgIH0KK30KKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkg
TWF0cml4TG9hZElkZW50aXR5Q0hST01JVU0oR0xlbnVtIG1hdHJpeE1vZGUpCit7CisgICAgRVZF
TlQoIihHTGVudW0gbWF0cml4TW9kZSA9ICV1KSIsIG1hdHJpeE1vZGUpOworCisgICAgQ29udGV4
dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQor
ICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0
ZU1hdHJpeE1vZGUoY29udGV4dCwgbWF0cml4TW9kZSkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjb250ZXh0LT5sb2FkUGF0aFJlbmRlcmluZ0lk
ZW50aXR5TWF0cml4KG1hdHJpeE1vZGUpOworICAgIH0KK30KKworQU5HTEVfRVhQT1JUIEdMdWlu
dCBHTF9BUElFTlRSWSBHZW5QYXRoc0NIUk9NSVVNKEdMc2l6ZWkgcmFuZ2UpCit7CisgICAgRVZF
TlQoIihHTHNpemVpIHJhbmdlID0gJWQpIiwgcmFuZ2UpOworCisgICAgQ29udGV4dCAqY29udGV4
dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAg
ICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZUdlblBhdGhz
KGNvbnRleHQsIHJhbmdlKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIGNvbnRleHQtPmNyZWF0ZVBhdGhzKHJhbmdlKTsKKyAgICB9
CisgICAgcmV0dXJuIDA7Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIERlbGV0
ZVBhdGhzQ0hST01JVU0oR0x1aW50IGZpcnN0LCBHTHNpemVpIHJhbmdlKQoreworICAgIEVWRU5U
KCIoR0x1aW50IGZpcnN0ID0gJXUsIEdMc2l6ZWkgcmFuZ2UgPSAlZCkiLCBmaXJzdCwgcmFuZ2Up
OworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAg
IGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpICYmICFWYWxpZGF0ZURlbGV0ZVBhdGhzKGNvbnRleHQsIGZpcnN0LCByYW5nZSkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjb250ZXh0LT5k
ZWxldGVQYXRocyhmaXJzdCwgcmFuZ2UpOworICAgIH0KK30KKworQU5HTEVfRVhQT1JUIEdMYm9v
bGVhbiBHTF9BUElFTlRSWSBJc1BhdGhDSFJPTUlVTShHTHVpbnQgcGF0aCkKK3sKKyAgICBFVkVO
VCgiKEdMdWludCBwYXRoID0gJXUpIiwgcGF0aCk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAg
ICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlSXNQYXRoKGNvbnRl
eHQpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gR0xfRkFMU0U7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIGNvbnRleHQtPmhhc1BhdGhEYXRhKHBhdGgpOworICAgIH0KKyAgICBy
ZXR1cm4gR0xfRkFMU0U7Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFBhdGhD
b21tYW5kc0NIUk9NSVVNKEdMdWludCBwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1Db21tYW5kcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgKmNv
bW1hbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBudW1Db29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gY29vcmRUeXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqY29vcmRzKQoreworICAg
IEVWRU5UKAorICAgICAgICAiKEdMdWludCBwYXRoID0gJXUsIEdMc2l6ZWkgbnVtQ29tbWFuZHMg
PSAlZCwgY29tbWFuZHMgPSAlcCwgIgorICAgICAgICAiR0xzaXplaSBudW1Db29yZHMgPSAlZCwg
R0xlbnVtIGNvb3JkVHlwZSA9ICV1LCB2b2lkKiBjb29yZHMgPSAlcCkiLAorICAgICAgICBwYXRo
LCBudW1Db21tYW5kcywgY29tbWFuZHMsIG51bUNvb3JkcywgY29vcmRUeXBlLCBjb29yZHMpOwor
CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlm
IChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIVZhbGlkYXRlUGF0aENvbW1hbmRzKGNvbnRl
eHQsIHBhdGgsIG51bUNvbW1hbmRzLCBjb21tYW5kcywgbnVtQ29vcmRzLCBjb29yZFR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvb3JkcykpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGNvbnRleHQtPnNldFBhdGhDb21tYW5kcyhwYXRoLCBudW1Db21tYW5kcywgY29tbWFu
ZHMsIG51bUNvb3JkcywgY29vcmRUeXBlLCBjb29yZHMpOworICAgIH0KK30KKworQU5HTEVfRVhQ
T1JUIHZvaWQgR0xfQVBJRU5UUlkgUGF0aFBhcmFtZXRlcmZDSFJPTUlVTShHTHVpbnQgcGF0aCwg
R0xlbnVtIHBuYW1lLCBHTGZsb2F0IHZhbHVlKQoreworICAgIEVWRU5UKCIoR0x1aW50IHBhdGgg
PSAldSwgR0xlbnVtIHBuYW1lID0gJXUsIEdMZmxvYXQgdmFsdWUgPSAlZikiLCBwYXRoLCBwbmFt
ZSwgdmFsdWUpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZVNldFBhdGhQYXJhbWV0ZXIoY29udGV4dCwgcGF0aCwg
cG5hbWUsIHZhbHVlKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIGNvbnRleHQtPnNldFBhdGhQYXJhbWV0ZXJmKHBhdGgsIHBuYW1lLCB2YWx1ZSk7
CisgICAgfQorfQorCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBQYXRoUGFyYW1ldGVy
aUNIUk9NSVVNKEdMdWludCBwYXRoLCBHTGVudW0gcG5hbWUsIEdMaW50IHZhbHVlKQoreworICAg
IFBhdGhQYXJhbWV0ZXJmQ0hST01JVU0ocGF0aCwgcG5hbWUsIHN0YXRpY19jYXN0PEdMZmxvYXQ+
KHZhbHVlKSk7Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldFBhdGhQYXJh
bWV0ZXJmQ0hST01JVU0oR0x1aW50IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqdmFsdWUp
Cit7CisgICAgRVZFTlQoIihHTHVpbnQgcGF0aCA9ICV1LCBHTGVudW0gcG5hbWUgPSAldSkiLCBw
YXRoLCBwbmFtZSk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlR2V0UGF0aFBhcmFtZXRlcihjb250ZXh0LCBwYXRo
LCBwbmFtZSwgdmFsdWUpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgY29udGV4dC0+Z2V0UGF0aFBhcmFtZXRlcmZ2KHBhdGgsIHBuYW1lLCB2YWx1
ZSk7CisgICAgfQorfQorCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRQYXRoUGFy
YW1ldGVyaUNIUk9NSVVNKEdMdWludCBwYXRoLCBHTGVudW0gcG5hbWUsIEdMaW50ICp2YWx1ZSkK
K3sKKyAgICBHTGZsb2F0IHZhbCA9IDAuMGY7CisgICAgR2V0UGF0aFBhcmFtZXRlcmZDSFJPTUlV
TShwYXRoLCBwbmFtZSwgdmFsdWUgIT0gbnVsbHB0ciA/ICZ2YWwgOiBudWxscHRyKTsKKyAgICBp
ZiAodmFsdWUpCisgICAgICAgICp2YWx1ZSA9IHN0YXRpY19jYXN0PEdMaW50Pih2YWwpOworfQor
CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBQYXRoU3RlbmNpbEZ1bmNDSFJPTUlVTShH
TGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzaykKK3sKKyAgICBFVkVOVCgiKEdMZW51
bSBmdW5jID0gJXUsIEdMaW50IHJlZiA9ICVkLCBHTHVpbnQgbWFzayA9ICV1KSIsIGZ1bmMsIHJl
ZiwgbWFzayk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlUGF0aFN0ZW5jaWxGdW5jKGNvbnRleHQsIGZ1bmMsIHJl
ZiwgbWFzaykpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICBjb250ZXh0LT5zZXRQYXRoU3RlbmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNrKTsKKyAgICB9
Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFN0ZW5jaWxGaWxsUGF0aENIUk9N
SVVNKEdMdWludCBwYXRoLCBHTGVudW0gZmlsbE1vZGUsIEdMdWludCBtYXNrKQoreworICAgIEVW
RU5UKCIoR0x1aW50IHBhdGggPSAldSwgR0xlbnVtIGZpbGxNb2RlID0gJXUsIEdMdWludCBtYXNr
ID0gJXUpIiwgcGF0aCwgZmlsbE1vZGUsIG1hc2spOworCisgICAgQ29udGV4dCAqY29udGV4dCA9
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAg
ICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZVN0ZW5jaWxGaWxs
UGF0aChjb250ZXh0LCBwYXRoLCBmaWxsTW9kZSwgbWFzaykpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjb250ZXh0LT5zdGVuY2lsRmlsbFBhdGgo
cGF0aCwgZmlsbE1vZGUsIG1hc2spOworICAgIH0KK30KKworQU5HTEVfRVhQT1JUIHZvaWQgR0xf
QVBJRU5UUlkgU3RlbmNpbFN0cm9rZVBhdGhDSFJPTUlVTShHTHVpbnQgcGF0aCwgR0xpbnQgcmVm
ZXJlbmNlLCBHTHVpbnQgbWFzaykKK3sKKyAgICBFVkVOVCgiKEdMdWludCBwYXRoID0gJXUsIEdM
aW50IGZlcmVuY2UgPSAlZCwgR0x1aW50IG1hc2sgPSAldSkiLCBwYXRoLCByZWZlcmVuY2UsIG1h
c2spOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwor
ICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVTdGVuY2lsU3Ryb2tlUGF0aChjb250ZXh0
LCBwYXRoLCByZWZlcmVuY2UsIG1hc2spKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+c3RlbmNpbFN0cm9rZVBhdGgocGF0aCwgcmVm
ZXJlbmNlLCBtYXNrKTsKKyAgICB9Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZ
IENvdmVyRmlsbFBhdGhDSFJPTUlVTShHTHVpbnQgcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSkKK3sK
KyAgICBFVkVOVCgiKEdMdWludCBwYXRoID0gJXUsIEdMZW51bSBjb3Zlck1vZGUgPSAldSkiLCBw
YXRoLCBjb3Zlck1vZGUpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZUNvdmVyUGF0aChjb250ZXh0LCBwYXRoLCBj
b3Zlck1vZGUpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgY29udGV4dC0+Y292ZXJGaWxsUGF0aChwYXRoLCBjb3Zlck1vZGUpOworICAgIH0KK30K
KworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQ292ZXJTdHJva2VQYXRoQ0hST01JVU0o
R0x1aW50IHBhdGgsIEdMZW51bSBjb3Zlck1vZGUpCit7CisgICAgRVZFTlQoIihHTHVpbnQgcGF0
aCA9ICV1LCBHTGVudW0gY292ZXJNb2RlID0gJXUpIiwgcGF0aCwgY292ZXJNb2RlKTsKKworICAg
IENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29u
dGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAh
VmFsaWRhdGVDb3ZlclBhdGgoY29udGV4dCwgcGF0aCwgY292ZXJNb2RlKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPmNvdmVyU3Ry
b2tlUGF0aChwYXRoLCBjb3Zlck1vZGUpOworICAgIH0KK30KKworQU5HTEVfRVhQT1JUIHZvaWQg
R0xfQVBJRU5UUlkgU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoQ0hST01JVU0oR0x1aW50IHBhdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZmlsbE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBjb3Zlck1vZGUpCit7CisgICAgRVZFTlQoIihHTHVpbnQgcGF0aCA9ICV1LCBHTGVudW0gZmls
bE1vZGUgPSAldSwgR0x1aW50IG1hc2sgPSAldSwgR0xlbnVtIGNvdmVyTW9kZSA9ICV1KSIsIHBh
dGgsCisgICAgICAgICAgZmlsbE1vZGUsIG1hc2ssIGNvdmVyTW9kZSk7CisKKyAgICBDb250ZXh0
ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisg
ICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAg
ICAgICFWYWxpZGF0ZVN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aChjb250ZXh0LCBwYXRoLCBmaWxs
TW9kZSwgbWFzaywgY292ZXJNb2RlKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPnN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aChwYXRo
LCBmaWxsTW9kZSwgbWFzaywgY292ZXJNb2RlKTsKKyAgICB9Cit9CisKK0FOR0xFX0VYUE9SVCB2
b2lkIEdMX0FQSUVOVFJZIFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoQ0hST01JVU0oR0x1aW50
IHBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBjb3Zlck1vZGUpCit7CisgICAgRVZFTlQoIihHTHVpbnQgcGF0aCA9ICV1
LCBHTGludCByZWZlcmVuY2UgPSAlZCwgR0x1aW50IG1hc2sgPSAldSwgR0xlbnVtIGNvdmVyTW9k
ZSA9ICV1KSIsIHBhdGgsCisgICAgICAgICAgcmVmZXJlbmNlLCBtYXNrLCBjb3Zlck1vZGUpOwor
CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlm
IChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
ICYmCisgICAgICAgICAgICAhVmFsaWRhdGVTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aChjb250
ZXh0LCBwYXRoLCByZWZlcmVuY2UsIG1hc2ssIGNvdmVyTW9kZSkpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjb250ZXh0LT5zdGVuY2lsVGhlbkNv
dmVyU3Ryb2tlUGF0aChwYXRoLCByZWZlcmVuY2UsIG1hc2ssIGNvdmVyTW9kZSk7CisgICAgfQor
fQorCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBDb3ZlckZpbGxQYXRoSW5zdGFuY2Vk
Q0hST01JVU0oR0xzaXplaSBudW1QYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHZvaWQgKnBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292
ZXJNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRy
YW5zZm9ybVZhbHVlcykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHNpemVpIG51bVBhdGhz
ID0gJWQsIEdMZW51bSBwYXRoTmFtZVR5cGUgPSAldSwgY29uc3Qgdm9pZCAqcGF0aHMgPSAlcCAi
CisgICAgICAgICJHTHVpbnQgcGF0aEJhc2UgPSAldSwgR0xlbnVtIGNvdmVyTW9kZSA9ICV1LCBH
TGVudW0gdHJhbnNmb3JtVHlwZSA9ICV1ICIKKyAgICAgICAgImNvbnN0IEdMZmxvYXQgKnRyYW5z
Zm9ybVZhbHVlcyA9ICVwKSIsCisgICAgICAgIG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhz
LCBwYXRoQmFzZSwgY292ZXJNb2RlLCB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpOwor
CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlm
IChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
ICYmCisgICAgICAgICAgICAhVmFsaWRhdGVDb3ZlckZpbGxQYXRoSW5zdGFuY2VkKGNvbnRleHQs
IG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY292ZXJNb2RlLCB0cmFuc2Zvcm1UeXBlLCB0
cmFuc2Zvcm1WYWx1ZXMpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgY29udGV4dC0+Y292ZXJGaWxsUGF0aEluc3RhbmNlZChudW1QYXRocywgcGF0
aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2UsIGNvdmVyTW9kZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpOwor
ICAgIH0KK30KKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQ292ZXJTdHJva2VQYXRo
SW5zdGFuY2VkQ0hST01JVU0oR0xzaXplaSBudW1QYXRocywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFt
ZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKK3sKKyAgICBFVkVOVCgKKyAgICAg
ICAgIihHTHNpemVpIG51bVBhdGhzID0gJWQsIEdMZW51bSBwYXRoTmFtZVR5cGUgPSAldSwgY29u
c3Qgdm9pZCAqcGF0aHMgPSAlcCAiCisgICAgICAgICJHTHVpbnQgcGF0aEJhc2UgPSAldSwgR0xl
bnVtIGNvdmVyTW9kZSA9ICV1LCBHTGVudW0gdHJhbnNmb3JtVHlwZSA9ICV1ICIKKyAgICAgICAg
ImNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyA9ICVwKSIsCisgICAgICAgIG51bVBhdGhz
LCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZSwgY292ZXJNb2RlLCB0cmFuc2Zvcm1UeXBl
LCB0cmFuc2Zvcm1WYWx1ZXMpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVDb3ZlclN0cm9r
ZVBhdGhJbnN0YW5jZWQoY29udGV4dCwgbnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBh
dGhCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
dmVyTW9kZSwgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPmNvdmVyU3Ryb2tl
UGF0aEluc3RhbmNlZChudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2UsIGNv
dmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5z
Zm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcyk7CisgICAgfQogfQorCitBTkdMRV9FWFBPUlQgdm9p
ZCBHTF9BUElFTlRSWSBTdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKEdMc2l6ZWkg
bnVtUGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZv
aWQgKnBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVy
ZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCit7CisgICAgRVZFTlQo
CisgICAgICAgICIoR0xzaXplaSBudW1QYXRocyA9ICV1LCBHTGVudW0gcGF0aE5hbWVUeXBlID0g
JXUsIGNvbnN0IHZvaWQgKnBhdGhzID0gJXAgIgorICAgICAgICAiR0x1aW50IHBhdGhCYXNlID0g
JXUsIEdMaW50IHJlZmVyZW5jZSA9ICVkIEdMdWludCBtYXNrID0gJXUgR0xlbnVtIHRyYW5zZm9y
bVR5cGUgPSAldSAiCisgICAgICAgICJjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMgPSAl
cCkiLAorICAgICAgICBudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2UsIHJl
ZmVyZW5jZSwgbWFzaywgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzKTsKKworICAgIENv
bnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4
dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAg
ICAgICAgICAgIVZhbGlkYXRlU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWQoY29udGV4dCwgbnVt
UGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlLCBtYXNrLCB0cmFuc2Zvcm1U
eXBlLCB0cmFuc2Zvcm1WYWx1ZXMpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+c3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWQobnVt
UGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlLCByZWZlcmVuY2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2ssIHRyYW5zZm9ybVR5cGUs
IHRyYW5zZm9ybVZhbHVlcyk7CisgICAgfQorfQorCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElF
TlRSWSBTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTShHTHNpemVpIG51bVBhdGhzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IHBhdGhCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KnRyYW5zZm9ybVZhbHVlcykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHNpemVpIG51bVBh
dGhzID0gJXUsIEdMZW51bSBwYXRoTmFtZVR5cGUgPSAldSBjb25zdCB2b2lkICpwYXRocyA9ICVw
ICIKKyAgICAgICAgIkdMdWludCBwYXRoQmFzZSA9ICV1LCBHTGVudW0gZmlsbE1vZGUgPSAldSwg
R0x1aW50IG1hc2sgPSAldSwgR0xlbnVtIHRyYW5zZm9ybVR5cGUgPSAldSAiCisgICAgICAgICJj
b25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMgPSAlcCkiLAorICAgICAgICBudW1QYXRocywg
cGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2UsIGZpbGxNb2RlLCBtYXNrLCB0cmFuc2Zvcm1U
eXBlLCB0cmFuc2Zvcm1WYWx1ZXMpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVTdGVuY2ls
RmlsbFBhdGhJbnN0YW5jZWQoY29udGV4dCwgbnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMs
IHBhdGhCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZpbGxNb2RlLCBtYXNrLCB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+c3Rl
bmNpbEZpbGxQYXRoSW5zdGFuY2VkKG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRo
QmFzZSwgZmlsbE1vZGUsIG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpOworICAgIH0KK30KKworQU5H
TEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkKK1N0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3Rh
bmNlZENIUk9NSVVNKEdMc2l6ZWkgbnVtUGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxv
YXQgKnRyYW5zZm9ybVZhbHVlcykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHNpemVpIG51
bVBhdGhzID0gJXUsIEdMZW51bSBwYXRoTmFtZVR5cGUgPSAldSBjb25zdCB2b2lkICpwYXRocyA9
ICVwICIKKyAgICAgICAgIkdMdWludCBwYXRoQmFzZSA9ICV1LCBHTGVudW0gY292ZXJNb2RlID0g
JXUsIEdMdWludCBtYXNrID0gJXUsIEdMZW51bSB0cmFuc2Zvcm1UeXBlID0gJXUgIgorICAgICAg
ICAiY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzID0gJXApIiwKKyAgICAgICAgbnVtUGF0
aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlLCBjb3Zlck1vZGUsIG1hc2ssIHRyYW5z
Zm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcyk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBp
ZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0ZVN0
ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZChjb250ZXh0LCBudW1QYXRocywgcGF0aE5h
bWVUeXBlLCBwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXRoQmFzZSwgZmlsbE1vZGUsIG1hc2ssIGNvdmVyTW9kZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zv
cm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+c3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5z
dGFuY2VkKG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxNb2RlLCBtYXNr
LCBjb3Zlck1vZGUsIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1WYWx1ZXMpOworICAgIH0KK30KKworQU5H
TEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkKK1N0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5z
dGFuY2VkQ0hST01JVU0oR0xzaXplaSBudW1QYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFz
aywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNv
dmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKK3sKKyAgICBFVkVOVCgKKyAg
ICAgICAgIihHTHNpemVpIG51bVBhdGhzID0gJXUsIEdMZW51bSBwYXRoTmFtZVR5cGUgPSAldSwg
Y29uc3Qgdm9pZCAqcGF0aHMgPSAlcCAiCisgICAgICAgICJHTHVpbnQgcGF0aEJhc2UgPSAldSBH
TGVudW0gY292ZXJNb2RlID0gJXUgR0xpbnQgcmVmZXJlbmNlID0gJWQgR0x1aW50IG1hc2sgPSAl
dSBHTGVudW0gIgorICAgICAgICAidHJhbnNmb3JtVHlwZSA9ICV1ICIKKyAgICAgICAgImNvbnN0
IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyA9ICVwKSIsCisgICAgICAgIG51bVBhdGhzLCBwYXRo
TmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZSwgY292ZXJNb2RlLCByZWZlcmVuY2UsIG1hc2ssIHRy
YW5zZm9ybVR5cGUsCisgICAgICAgIHRyYW5zZm9ybVZhbHVlcyk7CisKKyAgICBDb250ZXh0ICpj
b250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAg
eworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAg
ICFWYWxpZGF0ZVN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkKGNvbnRleHQsIG51
bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aEJhc2UsIHJlZmVyZW5jZSwgbWFzaywg
Y292ZXJNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPnN0ZW5jaWxU
aGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkKG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhz
LCBwYXRoQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVmZXJlbmNlLCBtYXNrLCBjb3Zlck1vZGUsIHRyYW5zZm9ybVR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9y
bVZhbHVlcyk7CisgICAgfQorfQorCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBCaW5k
RnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0oR0x1aW50IHByb2dyYW0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKQoreworICAgIEVWRU5UKCIo
R0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgY29uc3QgR0xjaGFyICpu
YW1lID0gJXApIiwgcHJvZ3JhbSwgbG9jYXRpb24sCisgICAgICAgICAgbmFtZSk7CisKKyAgICBD
b250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRl
eHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAg
ICAgICAgICAgICFWYWxpZGF0ZUJpbmRGcmFnbWVudElucHV0TG9jYXRpb24oY29udGV4dCwgcHJv
Z3JhbSwgbG9jYXRpb24sIG5hbWUpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+YmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbihwcm9n
cmFtLCBsb2NhdGlvbiwgbmFtZSk7CisgICAgfQorfQorCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9B
UElFTlRSWSBQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShHTHVpbnQgcHJvZ3Jh
bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGdlbk1vZGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBjb21wb25lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqY29lZmZz
KQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxv
Y2F0aW9uICVkLCBHTGVudW0gZ2VuTW9kZSA9ICV1LCBHTGludCBjb21wb25lbnRzID0gJWQsICIK
KyAgICAgICAgImNvbnN0IEdMZmxvYXQgKiBjb2VmZnMgPSAlcCkiLAorICAgICAgICBwcm9ncmFt
LCBsb2NhdGlvbiwgZ2VuTW9kZSwgY29tcG9uZW50cywgY29lZmZzKTsKKworICAgIENvbnRleHQg
KmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAg
ICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAg
ICAgIVZhbGlkYXRlUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuKGNvbnRleHQsIHByb2dyYW0s
IGxvY2F0aW9uLCBnZW5Nb2RlLCBjb21wb25lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvZWZmcykpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjb250ZXh0LT5wcm9ncmFtUGF0aEZyYWdtZW50
SW5wdXRHZW4ocHJvZ3JhbSwgbG9jYXRpb24sIGdlbk1vZGUsIGNvbXBvbmVudHMsIGNvZWZmcyk7
CisgICAgfQorfQorCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBDb3B5VGV4dHVyZUNI
Uk9NSVVNKEdMdWludCBzb3VyY2VJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IGRlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxGb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0VHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi
b29sZWFuIHVucGFja0ZsaXBZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFj
a1VubXVsdGlwbHlBbHBoYSkKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQgc291cmNl
SWQgPSAldSwgR0x1aW50IGRlc3RJZCA9ICV1LCBHTGludCBpbnRlcm5hbEZvcm1hdCA9IDB4JVgs
IEdMZW51bSBkZXN0VHlwZSA9ICIKKyAgICAgICAgIjB4JVgsIEdMYm9vbGVhbiB1bnBhY2tGbGlw
WSA9ICV1LCBHTGJvb2xlYW4gdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSA9ICV1LCBHTGJvb2xlYW4g
IgorICAgICAgICAidW5wYWNrVW5tdWx0aXBseUFscGhhID0gJXUpIiwKKyAgICAgICAgc291cmNl
SWQsIGRlc3RJZCwgaW50ZXJuYWxGb3JtYXQsIGRlc3RUeXBlLCB1bnBhY2tGbGlwWSwgdW5wYWNr
UHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAgdW5wYWNrVW5tdWx0aXBseUFscGhhKTsKKworICAg
IENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29u
dGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgor
ICAgICAgICAgICAgIVZhbGlkYXRlQ29weVRleHR1cmVDSFJPTUlVTShjb250ZXh0LCBzb3VyY2VJ
ZCwgZGVzdElkLCBpbnRlcm5hbEZvcm1hdCwgZGVzdFR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVucGFja0ZsaXBZLCB1bnBhY2tQcmVtdWx0aXBseUFscGhh
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnBhY2tVbm11bHRp
cGx5QWxwaGEpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBjb250ZXh0LT5jb3B5VGV4dHVyZUNIUk9NSVVNKHNvdXJjZUlkLCBkZXN0SWQsIGlu
dGVybmFsRm9ybWF0LCBkZXN0VHlwZSwgdW5wYWNrRmxpcFksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwgdW5wYWNrVW5tdWx0aXBs
eUFscGhhKTsKKyAgICB9Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIENvcHlT
dWJUZXh0dXJlQ0hST01JVU0oR0x1aW50IHNvdXJjZUlkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZGVzdElkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFu
IHVucGFja0ZsaXBZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFj
a1VubXVsdGlwbHlBbHBoYSkKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQgc291cmNl
SWQgPSAldSwgR0x1aW50IGRlc3RJZCA9ICV1LCAsIEdMYm9vbGVhbiB1bnBhY2tGbGlwWSA9ICV1
LCBHTGludCB4b2Zmc2V0ID0gIgorICAgICAgICAiJWQsIEdMaW50IHlvZmZzZXQgPSAlZCwgR0xp
bnQgeCA9ICVkLCBHTGludCB5ID0gJWQsIEdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWln
aHQgPSAiCisgICAgICAgICIlZCwgR0xib29sZWFuIHVucGFja1ByZW11bHRpcGx5QWxwaGEgPSAl
dSwgR0xib29sZWFuIHVucGFja1VubXVsdGlwbHlBbHBoYSA9ICV1KSIsCisgICAgICAgIHNvdXJj
ZUlkLCBkZXN0SWQsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIHVucGFj
a0ZsaXBZLAorICAgICAgICB1bnBhY2tQcmVtdWx0aXBseUFscGhhLCB1bnBhY2tVbm11bHRpcGx5
QWxwaGEpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
OworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVDb3B5U3ViVGV4dHVyZUNIUk9NSVVN
KGNvbnRleHQsIHNvdXJjZUlkLCBkZXN0SWQsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQsIHVu
cGFja0ZsaXBZLCB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnBhY2tVbm11bHRpcGx5QWxwaGEpKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb250ZXh0LT5jb3B5
U3ViVGV4dHVyZUNIUk9NSVVNKHNvdXJjZUlkLCBkZXN0SWQsIHhvZmZzZXQsIHlvZmZzZXQsIHgs
IHksIHdpZHRoLCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5wYWNrRmxpcFksIHVucGFja1ByZW11bHRpcGx5QWxwaGEsIHVucGFja1VubXVsdGlwbHlB
bHBoYSk7CisgICAgfQorfQorCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBDb21wcmVz
c2VkQ29weVRleHR1cmVDSFJPTUlVTShHTHVpbnQgc291cmNlSWQsIEdMdWludCBkZXN0SWQpCit7
CisgICAgRVZFTlQoIihHTHVpbnQgc291cmNlSWQgPSAldSwgR0x1aW50IGRlc3RJZCA9ICV1KSIs
IHNvdXJjZUlkLCBkZXN0SWQpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVDb21wcmVzc2Vk
Q29weVRleHR1cmVDSFJPTUlVTShjb250ZXh0LCBzb3VyY2VJZCwgZGVzdElkKSkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29udGV4dC0+Y29t
cHJlc3NlZENvcHlUZXh0dXJlQ0hST01JVU0oc291cmNlSWQsIGRlc3RJZCk7CisgICAgfQorfQor
CitHTF9BUElDQUxMIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBFbmFibGVFeHRlbnNpb25BTkdMRShj
b25zdCBHTGNoYXIgKm5hbWUpCit7CisgICAgRVZFTlQoIihjb25zdCBHTGNoYXIgKm5hbWUgPSAl
cCkiLCBuYW1lKTsKKworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVFbmFibGVFeHRlbnNpb25BTkdMRShjb250ZXh0LCBu
YW1lKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIGNvbnRleHQtPmVuYWJsZUV4dGVuc2lvbihuYW1lKSA/IEdMX1RS
VUUgOiBHTF9GQUxTRTsKKyAgICB9CisKKyAgICByZXR1cm4gR0xfRkFMU0U7Cit9CisKK0FOR0xF
X0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldEJvb2xlYW52Um9idXN0QU5HTEUoR0xlbnVtIHBu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuICpwYXJhbXMpCit7CisgICAg
RVZFTlQoCisgICAgICAgICIoR0xlbnVtIHBuYW1lID0gMHglWCwgR0xzaXplaSBidWZzaXplID0g
JWQsIEdMc2l6ZWkqIGxlbmd0aCA9IDB4JTAuOHAsIEdMYm9vbGVhbiogcGFyYW1zICIKKyAgICAg
ICAgIj0gMHglMC44cCkiLAorICAgICAgICBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMp
OworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAg
IGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgR0xlbnVtIG5hdGl2ZVR5cGU7CisgICAgICAg
IHVuc2lnbmVkIGludCBudW1QYXJhbXMgPSAwOworICAgICAgICBpZiAoIVZhbGlkYXRlUm9idXN0
U3RhdGVRdWVyeShjb250ZXh0LCBwbmFtZSwgYnVmU2l6ZSwgJm5hdGl2ZVR5cGUsICZudW1QYXJh
bXMpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBpZiAobmF0aXZlVHlwZSA9PSBHTF9CT09MKQorICAgICAgICB7CisgICAgICAgICAgICBjb250
ZXh0LT5nZXRCb29sZWFudihwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgfQorICAgICAgICBlbHNl
CisgICAgICAgIHsKKyAgICAgICAgICAgIENhc3RTdGF0ZVZhbHVlcyhjb250ZXh0LCBuYXRpdmVU
eXBlLCBwbmFtZSwgbnVtUGFyYW1zLCBwYXJhbXMpOworICAgICAgICB9CisKKyAgICAgICAgU2V0
Um9idXN0TGVuZ3RoUGFyYW0obGVuZ3RoLCBudW1QYXJhbXMpOworICAgIH0KK30KKworQU5HTEVf
RVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
TGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQoreworICAgIEVWRU5U
KCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMaW50KiBwYXJh
bXMgPSAweCUwLjhwKSIsIHRhcmdldCwgcG5hbWUsCisgICAgICAgICAgcGFyYW1zKTsKKworICAg
IENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29u
dGV4dCkKKyAgICB7CisgICAgICAgIEdMc2l6ZWkgbnVtUGFyYW1zID0gMDsKKyAgICAgICAgaWYg
KCFWYWxpZGF0ZUdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoY29udGV4dCwgdGFyZ2V0
LCBwbmFtZSwgYnVmU2l6ZSwgJm51bVBhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgQnVmZmVyICpidWZmZXIgPSBjb250ZXh0
LT5nZXRHTFN0YXRlKCkuZ2V0VGFyZ2V0QnVmZmVyKHRhcmdldCk7CisgICAgICAgIFF1ZXJ5QnVm
ZmVyUGFyYW1ldGVyaXYoYnVmZmVyLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgU2V0Um9idXN0
TGVuZ3RoUGFyYW0obGVuZ3RoLCBudW1QYXJhbXMpOworICAgIH0KK30KKworQU5HTEVfRVhQT1JU
IHZvaWQgR0xfQVBJRU5UUlkgR2V0RmxvYXR2Um9idXN0QU5HTEUoR0xlbnVtIHBuYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBi
dWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKQoreworICAgIEVWRU5UKAorICAgICAgICAi
KEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTHNpemVpKiBsZW5n
dGggPSAweCUwLjhwLCBHTGZsb2F0KiBwYXJhbXMgPSAiCisgICAgICAgICIweCUwLjhwKSIsCisg
ICAgICAgIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CisKKyAgICBDb250ZXh0ICpj
b250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAg
eworICAgICAgICBHTGVudW0gbmF0aXZlVHlwZTsKKyAgICAgICAgdW5zaWduZWQgaW50IG51bVBh
cmFtcyA9IDA7CisgICAgICAgIGlmICghVmFsaWRhdGVSb2J1c3RTdGF0ZVF1ZXJ5KGNvbnRleHQs
IHBuYW1lLCBidWZTaXplLCAmbmF0aXZlVHlwZSwgJm51bVBhcmFtcykpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChuYXRpdmVUeXBlID09
IEdMX0ZMT0FUKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRGbG9hdHYocG5h
bWUsIHBhcmFtcyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAg
ICAgICBDYXN0U3RhdGVWYWx1ZXMoY29udGV4dCwgbmF0aXZlVHlwZSwgcG5hbWUsIG51bVBhcmFt
cywgcGFyYW1zKTsKKyAgICAgICAgfQorCisgICAgICAgIFNldFJvYnVzdExlbmd0aFBhcmFtKGxl
bmd0aCwgbnVtUGFyYW1zKTsKKyAgICB9Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVO
VFJZIEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0xlbnVt
IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBi
dWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50ICpwYXJhbXMpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0xlbnVt
IHRhcmdldCA9IDB4JVgsIEdMZW51bSBhdHRhY2htZW50ID0gMHglWCwgR0xlbnVtIHBuYW1lID0g
MHglWCwgIEdMc2l6ZWkgYnVmc2l6ZSA9ICIKKyAgICAgICAgIiVkLCBHTHNpemVpKiBsZW5ndGgg
PSAweCUwLjhwLCBHTGludCogcGFyYW1zID0gMHglMC44cCkiLAorICAgICAgICB0YXJnZXQsIGF0
dGFjaG1lbnQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CisKKyAgICBDb250ZXh0
ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisg
ICAgeworICAgICAgICBHTHNpemVpIG51bVBhcmFtcyA9IDA7CisgICAgICAgIGlmICghVmFsaWRh
dGVHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKGNvbnRleHQs
IHRhcmdldCwgYXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG5hbWUsIGJ1ZlNpemUsICZudW1QYXJh
bXMpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBjb25zdCBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCku
Z2V0VGFyZ2V0RnJhbWVidWZmZXIodGFyZ2V0KTsKKyAgICAgICAgUXVlcnlGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpdihmcmFtZWJ1ZmZlciwgYXR0YWNobWVudCwgcG5hbWUsIHBhcmFt
cyk7CisgICAgICAgIFNldFJvYnVzdExlbmd0aFBhcmFtKGxlbmd0aCwgbnVtUGFyYW1zKTsKKyAg
ICB9Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldEludGVnZXJ2Um9idXN0
QU5HTEUoR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKmRhdGEp
Cit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0xlbnVtIHBuYW1lID0gMHglWCwgR0xzaXplaSBi
dWZzaXplID0gJWQsIEdMc2l6ZWkqIGxlbmd0aCA9IDB4JTAuOHAsIEdMaW50KiBwYXJhbXMgPSAi
CisgICAgICAgICIweCUwLjhwKSIsCisgICAgICAgIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIGRh
dGEpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwor
ICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgR0xlbnVtIG5hdGl2ZVR5cGU7CisgICAg
ICAgIHVuc2lnbmVkIGludCBudW1QYXJhbXMgPSAwOworICAgICAgICBpZiAoIVZhbGlkYXRlUm9i
dXN0U3RhdGVRdWVyeShjb250ZXh0LCBwbmFtZSwgYnVmU2l6ZSwgJm5hdGl2ZVR5cGUsICZudW1Q
YXJhbXMpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBpZiAobmF0aXZlVHlwZSA9PSBHTF9JTlQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNv
bnRleHQtPmdldEludGVnZXJ2KHBuYW1lLCBkYXRhKTsKKyAgICAgICAgfQorICAgICAgICBlbHNl
CisgICAgICAgIHsKKyAgICAgICAgICAgIENhc3RTdGF0ZVZhbHVlcyhjb250ZXh0LCBuYXRpdmVU
eXBlLCBwbmFtZSwgbnVtUGFyYW1zLCBkYXRhKTsKKyAgICAgICAgfQorICAgICAgICBTZXRSb2J1
c3RMZW5ndGhQYXJhbShsZW5ndGgsIG51bVBhcmFtcyk7CisgICAgfQorfQorCitBTkdMRV9FWFBP
UlQgdm9pZCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtaXZSb2J1c3RBTkdMRShHTHVpbnQgcHJvZ3Jh
bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMp
Cit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0x1aW50IHByb2dyYW0gPSAlZCwgR0xlbnVtIHBu
YW1lID0gJWQsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTHNpemVpKiBsZW5ndGggPSAweCUwLjhw
LCAiCisgICAgICAgICJHTGludCogcGFyYW1zID0gMHglMC44cCkiLAorICAgICAgICBwcm9ncmFt
LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOworCisgICAgQ29udGV4dCAqY29udGV4
dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAg
ICAgICAgR0xzaXplaSBudW1QYXJhbXMgPSAwOworICAgICAgICBpZiAoIVZhbGlkYXRlR2V0UHJv
Z3JhbWl2Um9idXN0QU5HTEUoY29udGV4dCwgcHJvZ3JhbSwgcG5hbWUsIGJ1ZlNpemUsICZudW1Q
YXJhbXMpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFt
KTsKKyAgICAgICAgUXVlcnlQcm9ncmFtaXYocHJvZ3JhbU9iamVjdCwgcG5hbWUsIHBhcmFtcyk7
CisgICAgICAgIFNldFJvYnVzdExlbmd0aFBhcmFtKGxlbmd0aCwgbnVtUGFyYW1zKTsKKyAgICB9
Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldFJlbmRlcmJ1ZmZlclBhcmFt
ZXRlcml2Um9idXN0QU5HTEUoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihH
TGVudW0gdGFyZ2V0ID0gMHglWCwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xzaXplaSBidWZzaXpl
ID0gJWQsIEdMc2l6ZWkqIGxlbmd0aCA9ICIKKyAgICAgICAgIjB4JTAuOHAsIEdMaW50KiBwYXJh
bXMgPSAweCUwLjhwKSIsCisgICAgICAgIHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwg
cGFyYW1zKTsKKworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIEdMc2l6ZWkgbnVtUGFyYW1zID0g
MDsKKyAgICAgICAgaWYgKCFWYWxpZGF0ZUdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUoY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm51bVBhcmFtcywgcGFy
YW1zKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgUmVuZGVyYnVmZmVyICpyZW5kZXJidWZmZXIgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0
Q3VycmVudFJlbmRlcmJ1ZmZlcigpOworICAgICAgICBRdWVyeVJlbmRlcmJ1ZmZlcml2KHJlbmRl
cmJ1ZmZlciwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIFNldFJvYnVzdExlbmd0aFBhcmFtKGxl
bmd0aCwgbnVtUGFyYW1zKTsKKyAgICB9Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVO
VFJZCitHZXRTaGFkZXJpdlJvYnVzdEFOR0xFKEdMdWludCBzaGFkZXIsIEdMZW51bSBwbmFtZSwg
R0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpwYXJhbXMpCit7CisgICAg
RVZFTlQoCisgICAgICAgICIoR0x1aW50IHNoYWRlciA9ICVkLCBHTGVudW0gcG5hbWUgPSAlZCwg
R0xzaXplaSBidWZzaXplID0gJWQsIEdMc2l6ZWkqIGxlbmd0aCA9IDB4JTAuOHAsICIKKyAgICAg
ICAgIkdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIsCisgICAgICAgIHNoYWRlciwgcG5hbWUsIGJ1
ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKKworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIEdMc2l6
ZWkgbnVtUGFyYW1zID0gMDsKKyAgICAgICAgaWYgKCFWYWxpZGF0ZUdldFNoYWRlcml2Um9idXN0
QU5HTEUoY29udGV4dCwgc2hhZGVyLCBwbmFtZSwgYnVmU2l6ZSwgJm51bVBhcmFtcywgcGFyYW1z
KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
U2hhZGVyICpzaGFkZXJPYmplY3QgPSBjb250ZXh0LT5nZXRTaGFkZXIoc2hhZGVyKTsKKyAgICAg
ICAgUXVlcnlTaGFkZXJpdihzaGFkZXJPYmplY3QsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBT
ZXRSb2J1c3RMZW5ndGhQYXJhbShsZW5ndGgsIG51bVBhcmFtcyk7CisgICAgfQorfQorCitBTkdM
RV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdM
ZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAg
IihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xzaXplaSBidWZz
aXplID0gJWQsIEdMc2l6ZWkqIGxlbmd0aCA9ICIKKyAgICAgICAgIjB4JTAuOHAsIEdMZmxvYXQq
IHBhcmFtcyA9IDB4JTAuOHApIiwKKyAgICAgICAgdGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVu
Z3RoLCBwYXJhbXMpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgR0xzaXplaSBudW1QYXJh
bXMgPSAwOworICAgICAgICBpZiAoIVZhbGlkYXRlR2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdM
RShjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBidWZTaXplLCAmbnVtUGFyYW1zLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMpKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBUZXh0dXJlICp0
ZXh0dXJlID0gY29udGV4dC0+Z2V0VGFyZ2V0VGV4dHVyZSh0YXJnZXQpOworICAgICAgICBRdWVy
eVRleFBhcmFtZXRlcmZ2KHRleHR1cmUsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBTZXRSb2J1
c3RMZW5ndGhQYXJhbShsZW5ndGgsIG51bVBhcmFtcyk7CisgICAgfQorfQorCitBTkdMRV9FWFBP
UlQgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdMZW51bSB0
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICps
ZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50ICpwYXJhbXMpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0xlbnVt
IHRhcmdldCA9IDB4JVgsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVk
LCBHTHNpemVpKiBsZW5ndGggPSAiCisgICAgICAgICIweCUwLjhwLCBHTGZsb2F0KiBwYXJhbXMg
PSAweCUwLjhwKSIsCisgICAgICAgIHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFy
YW1zKTsKKworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsK
KyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIEdMc2l6ZWkgbnVtUGFyYW1zID0gMDsK
KyAgICAgICAgaWYgKCFWYWxpZGF0ZUdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoY29udGV4
dCwgdGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgJm51bVBhcmFtcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgVGV4dHVyZSAqdGV4dHVyZSA9
IGNvbnRleHQtPmdldFRhcmdldFRleHR1cmUodGFyZ2V0KTsKKyAgICAgICAgUXVlcnlUZXhQYXJh
bWV0ZXJpdih0ZXh0dXJlLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgU2V0Um9idXN0TGVuZ3Ro
UGFyYW0obGVuZ3RoLCBudW1QYXJhbXMpOworICAgIH0KK30KKworQU5HTEVfRVhQT1JUIHZvaWQg
R0xfQVBJRU5UUlkgR2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0x1aW50IHByb2dyYW0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
b2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcykKK3sK
KyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQgcHJvZ3JhbSA9ICVkLCBHTGludCBsb2NhdGlv
biA9ICVkLCBHTHNpemVpIGJ1ZnNpemUgPSAlZCwgR0xzaXplaSogbGVuZ3RoID0gIgorICAgICAg
ICAiMHglMC44cCwgR0xmbG9hdCogcGFyYW1zID0gMHglMC44cCkiLAorICAgICAgICBwcm9ncmFt
LCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOworCisgICAgQ29udGV4dCAqY29u
dGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsK
KyAgICAgICAgR0xzaXplaSB3cml0ZUxlbmd0aCA9IDA7CisgICAgICAgIGlmICghVmFsaWRhdGVH
ZXRVbmlmb3JtZnZSb2J1c3RBTkdMRShjb250ZXh0LCBwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6
ZSwgJndyaXRlTGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGFyYW1zKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0o
cHJvZ3JhbSk7CisgICAgICAgIEFTU0VSVChwcm9ncmFtT2JqZWN0KTsKKworICAgICAgICBwcm9n
cmFtT2JqZWN0LT5nZXRVbmlmb3JtZnYobG9jYXRpb24sIHBhcmFtcyk7CisgICAgICAgIFNldFJv
YnVzdExlbmd0aFBhcmFtKGxlbmd0aCwgd3JpdGVMZW5ndGgpOworICAgIH0KK30KKworQU5HTEVf
RVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0VW5pZm9ybWl2Um9idXN0QU5HTEUoR0x1aW50IHBy
b2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpw
YXJhbXMpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0x1aW50IHByb2dyYW0gPSAlZCwgR0xp
bnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBidWZzaXplID0gJWQsIEdMc2l6ZWkqIGxlbmd0aCA9
ICIKKyAgICAgICAgIjB4JTAuOHAsIEdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIsCisgICAgICAg
IHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CisKKyAgICBDb250
ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQp
CisgICAgeworICAgICAgICBHTHNpemVpIHdyaXRlTGVuZ3RoID0gMDsKKyAgICAgICAgaWYgKCFW
YWxpZGF0ZUdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKGNvbnRleHQsIHByb2dyYW0sIGxvY2F0aW9u
LCBidWZTaXplLCAmd3JpdGVMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJhbXMpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0
UHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgQVNTRVJUKHByb2dyYW1PYmplY3QpOworCisgICAg
ICAgIHByb2dyYW1PYmplY3QtPmdldFVuaWZvcm1pdihsb2NhdGlvbiwgcGFyYW1zKTsKKyAgICAg
ICAgU2V0Um9idXN0TGVuZ3RoUGFyYW0obGVuZ3RoLCB3cml0ZUxlbmd0aCk7CisgICAgfQorfQor
CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFO
R0xFKEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKQoreworICAgIEVWRU5UKAorICAg
ICAgICAiKEdMdWludCBpbmRleCA9ICVkLCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTHNpemVpIGJ1
ZnNpemUgPSAlZCwgR0xzaXplaSogbGVuZ3RoID0gMHglMC44cCwgIgorICAgICAgICAiR0xmbG9h
dCogcGFyYW1zID0gMHglMC44cCkiLAorICAgICAgICBpbmRleCwgcG5hbWUsIGJ1ZlNpemUsIGxl
bmd0aCwgcGFyYW1zKTsKKworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIEdMc2l6ZWkgd3JpdGVM
ZW5ndGggPSAwOworICAgICAgICBpZiAoIVZhbGlkYXRlR2V0VmVydGV4QXR0cmliZnZSb2J1c3RB
TkdMRShjb250ZXh0LCBpbmRleCwgcG5hbWUsIGJ1ZlNpemUsICZ3cml0ZUxlbmd0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29uc3Qg
VmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0YSAmY3VycmVudFZhbHVlcyA9CisgICAgICAgICAg
ICBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VmVydGV4QXR0cmliQ3VycmVudFZhbHVlKGluZGV4
KTsKKyAgICAgICAgY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWIgPQorICAgICAgICAgICAg
Y29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFZlcnRleEFycmF5KCktPmdldFZlcnRleEF0dHJpYnV0
ZShpbmRleCk7CisgICAgICAgIFF1ZXJ5VmVydGV4QXR0cmliZnYoYXR0cmliLCBjdXJyZW50VmFs
dWVzLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgU2V0Um9idXN0TGVuZ3RoUGFyYW0obGVuZ3Ro
LCB3cml0ZUxlbmd0aCk7CisgICAgfQorfQorCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRS
WSBHZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKEdMdWludCBpbmRleCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBh
cmFtcykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQgaW5kZXggPSAlZCwgR0xlbnVt
IHBuYW1lID0gMHglWCwgR0xzaXplaSBidWZzaXplID0gJWQsIEdMc2l6ZWkqIGxlbmd0aCA9IDB4
JTAuOHAsICIKKyAgICAgICAgIkdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIsCisgICAgICAgIGlu
ZGV4LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOworCisgICAgQ29udGV4dCAqY29u
dGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsK
KyAgICAgICAgR0xzaXplaSB3cml0ZUxlbmd0aCA9IDA7CisgICAgICAgIGlmICghVmFsaWRhdGVH
ZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKGNvbnRleHQsIGluZGV4LCBwbmFtZSwgYnVmU2l6
ZSwgJndyaXRlTGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJhbXMpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZjdXJy
ZW50VmFsdWVzID0KKyAgICAgICAgICAgIGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRWZXJ0ZXhB
dHRyaWJDdXJyZW50VmFsdWUoaW5kZXgpOworICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUg
JmF0dHJpYiA9CisgICAgICAgICAgICBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VmVydGV4QXJy
YXkoKS0+Z2V0VmVydGV4QXR0cmlidXRlKGluZGV4KTsKKyAgICAgICAgUXVlcnlWZXJ0ZXhBdHRy
aWJpdihhdHRyaWIsIGN1cnJlbnRWYWx1ZXMsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBTZXRS
b2J1c3RMZW5ndGhQYXJhbShsZW5ndGgsIHdyaXRlTGVuZ3RoKTsKKyAgICB9Cit9CisKK0FOR0xF
X0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5H
TEUoR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
YnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqcG9pbnRl
cikKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQgaW5kZXggPSAlZCwgR0xlbnVtIHBu
YW1lID0gMHglWCwgR0xzaXplaSBidWZzaXplID0gJWQsIEdMc2l6ZWkqIGxlbmd0aCA9IDB4JTAu
OHAsICIKKyAgICAgICAgIkdMdm9pZCoqIHBvaW50ZXIgPSAweCUwLjhwKSIsCisgICAgICAgIGlu
ZGV4LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwb2ludGVyKTsKKworICAgIENvbnRleHQgKmNv
bnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7
CisgICAgICAgIEdMc2l6ZWkgd3JpdGVMZW5ndGggPSAwOworICAgICAgICBpZiAoIVZhbGlkYXRl
R2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRShjb250ZXh0LCBpbmRleCwgcG5hbWUs
IGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZ3cml0ZUxlbmd0aCwgcG9pbnRlcikpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0
cmliID0KKyAgICAgICAgICAgIGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRWZXJ0ZXhBcnJheSgp
LT5nZXRWZXJ0ZXhBdHRyaWJ1dGUoaW5kZXgpOworICAgICAgICBRdWVyeVZlcnRleEF0dHJpYlBv
aW50ZXJ2KGF0dHJpYiwgcG5hbWUsIHBvaW50ZXIpOworICAgICAgICBTZXRSb2J1c3RMZW5ndGhQ
YXJhbShsZW5ndGgsIHdyaXRlTGVuZ3RoKTsKKyAgICB9Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lk
IEdMX0FQSUVOVFJZIFJlYWRQaXhlbHNSb2J1c3RBTkdMRShHTGludCB4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dm9pZCAqcGl4ZWxzKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdMaW50IHggPSAlZCwgR0xp
bnQgeSA9ICVkLCBHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsICIKKyAg
ICAgICAgIkdMZW51bSBmb3JtYXQgPSAweCVYLCBHTGVudW0gdHlwZSA9IDB4JVgsIEdMc2l6ZWkg
YnVmc2l6ZSA9ICVkLCBHTHNpemVpKiBsZW5ndGggPSAiCisgICAgICAgICIweCUwLjhwLCBHTHZv
aWQqIHBpeGVscyA9IDB4JTAuOHApIiwKKyAgICAgICAgeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIHBpeGVscyk7CisKKyAgICBDb250ZXh0ICpjb250
ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgewor
ICAgICAgICBHTHNpemVpIHdyaXRlTGVuZ3RoID0gMDsKKyAgICAgICAgaWYgKCFWYWxpZGF0ZVJl
YWRQaXhlbHNSb2J1c3RBTkdMRShjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQs
IHR5cGUsIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJndyaXRlTGVuZ3RoLCBwaXhlbHMpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBjb250ZXh0LT5yZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKKworICAgICAgICBTZXRSb2J1c3RMZW5ndGhQ
YXJhbShsZW5ndGgsIHdyaXRlTGVuZ3RoKTsKKyAgICB9Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lk
IEdMX0FQSUVOVFJZIFRleEltYWdlMkRSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYm9yZGVyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBm
b3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBpeGVscykKK3sKKyAgICBFVkVO
VCgKKyAgICAgICAgIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xpbnQgbGV2ZWwgPSAlZCwgR0xp
bnQgaW50ZXJuYWxmb3JtYXQgPSAlZCwgR0xzaXplaSB3aWR0aCA9ICVkLCAiCisgICAgICAgICJH
THNpemVpIGhlaWdodCA9ICVkLCBHTGludCBib3JkZXIgPSAlZCwgR0xlbnVtIGZvcm1hdCA9IDB4
JVgsIEdMZW51bSB0eXBlID0gMHglWCwgR0xzaXplaSAiCisgICAgICAgICJidWZTaXplID0gJWQs
IGNvbnN0IEdMdm9pZCogcGl4ZWxzID0gMHglMC44cCkiLAorICAgICAgICB0YXJnZXQsIGxldmVs
LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIGJ1
ZlNpemUsIHBpeGVscyk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIVZhbGlkYXRl
VGV4SW1hZ2UyRFJvYnVzdChjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgYm9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIHBpeGVscykpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnRleHQtPnRleEltYWdlMkQodGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0
LCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVscyk7CisgICAgfQorfQor
CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xF
KEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICpwYXJhbXMpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0xlbnVtIHRhcmdldCA9IDB4
JVgsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTGZsb2F0KiBw
YXJhbXMgPSAiCisgICAgICAgICIweCUwLjhwKSIsCisgICAgICAgIHRhcmdldCwgcG5hbWUsIGJ1
ZlNpemUsIHBhcmFtcyk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIVZhbGlkYXRl
VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBidWZTaXpl
LCBwYXJhbXMpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBUZXh0dXJlICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGFyZ2V0VGV4dHVyZSh0YXJn
ZXQpOworICAgICAgICBTZXRUZXhQYXJhbWV0ZXJmdih0ZXh0dXJlLCBwbmFtZSwgcGFyYW1zKTsK
KyAgICB9Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFRleFBhcmFtZXRlcml2
Um9idXN0QU5HTEUoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMaW50ICpwYXJhbXMpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0xlbnVtIHRh
cmdldCA9IDB4JVgsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBH
TGZsb2F0KiBwYXJhbXMgPSAiCisgICAgICAgICIweCUwLjhwKSIsCisgICAgICAgIHRhcmdldCwg
cG5hbWUsIGJ1ZlNpemUsIHBhcmFtcyk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAo
IVZhbGlkYXRlVGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShjb250ZXh0LCB0YXJnZXQsIHBuYW1l
LCBidWZTaXplLCBwYXJhbXMpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBUZXh0dXJlICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGFyZ2V0VGV4
dHVyZSh0YXJnZXQpOworICAgICAgICBTZXRUZXhQYXJhbWV0ZXJpdih0ZXh0dXJlLCBwbmFtZSwg
cGFyYW1zKTsKKyAgICB9Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFRleFN1
YkltYWdlMkRSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZz
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgeW9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3Jt
YXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBpeGVscykKK3sKKyAg
ICBFVkVOVCgKKyAgICAgICAgIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xpbnQgbGV2ZWwgPSAl
ZCwgR0xpbnQgeG9mZnNldCA9ICVkLCBHTGludCB5b2Zmc2V0ID0gJWQsICIKKyAgICAgICAgIkdM
c2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwgR0xlbnVtIGZvcm1hdCA9IDB4
JVgsIEdMZW51bSB0eXBlID0gMHglWCwgIgorICAgICAgICAiR0xzaXplaSBidWZzaXplID0gJWQs
IGNvbnN0IEdMdm9pZCogcGl4ZWxzID0gMHglMC44cCkiLAorICAgICAgICB0YXJnZXQsIGxldmVs
LCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUs
IHBpeGVscyk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIVZhbGlkYXRlVGV4U3Vi
SW1hZ2UyRFJvYnVzdEFOR0xFKGNvbnRleHQsIHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZz
ZXQsIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBwaXhlbHMpKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb250ZXh0LT50ZXhTdWJJbWFn
ZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbHMpOworICAgIH0K
K30KKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgVGV4SW1hZ2UzRFJvYnVzdEFOR0xF
KEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGJvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVm
U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICpwaXhlbHMpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0xlbnVtIHRh
cmdldCA9IDB4JVgsIEdMaW50IGxldmVsID0gJWQsIEdMaW50IGludGVybmFsZm9ybWF0ID0gJWQs
IEdMc2l6ZWkgd2lkdGggPSAlZCwgIgorICAgICAgICAiR0xzaXplaSBoZWlnaHQgPSAlZCwgR0xz
aXplaSBkZXB0aCA9ICVkLCBHTGludCBib3JkZXIgPSAlZCwgR0xlbnVtIGZvcm1hdCA9IDB4JVgs
ICIKKyAgICAgICAgIkdMZW51bSB0eXBlID0gMHglWCwgR0xzaXplaSBidWZzaXplID0gJWQsIGNv
bnN0IEdMdm9pZCogcGl4ZWxzID0gMHglMC44cCkiLAorICAgICAgICB0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBl
LCBidWZTaXplLCBwaXhlbHMpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFWYWxp
ZGF0ZVRleEltYWdlM0RSb2J1c3RBTkdMRShjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIHBpeGVscykp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNv
bnRleHQtPnRleEltYWdlM0QodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0eXBlLCBwaXhlbHMpOworICAgIH0KK30KKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5U
UlkgVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgeG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHpvZmZzZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHZvaWQgKnBpeGVscykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihH
TGVudW0gdGFyZ2V0ID0gMHglWCwgR0xpbnQgbGV2ZWwgPSAlZCwgR0xpbnQgeG9mZnNldCA9ICVk
LCBHTGludCB5b2Zmc2V0ID0gJWQsICIKKyAgICAgICAgIkdMaW50IHpvZmZzZXQgPSAlZCwgR0xz
aXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCBHTHNpemVpIGRlcHRoID0gJWQs
ICIKKyAgICAgICAgIkdMZW51bSBmb3JtYXQgPSAweCVYLCBHTGVudW0gdHlwZSA9IDB4JVgsIEdM
c2l6ZWkgYnVmc2l6ZSA9ICVkLCBjb25zdCBHTHZvaWQqIHBpeGVscyA9ICIKKyAgICAgICAgIjB4
JTAuOHApIiwKKyAgICAgICAgdGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNl
dCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwKKyAgICAgICAg
cGl4ZWxzKTsKKworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICghVmFsaWRhdGVUZXhTdWJJ
bWFnZTNEUm9idXN0QU5HTEUoY29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNl
dCwgem9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBwaXhlbHMpKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb250
ZXh0LT50ZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZz
ZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKKyAgICB9Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdM
X0FQSUVOVFJZCitHZXRRdWVyeWl2Um9idXN0QU5HTEUoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBu
YW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnBhcmFtcykKK3sK
KyAgICBFVkVOVCgKKyAgICAgICAgIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xlbnVtIHBuYW1l
ID0gMHglWCwgR0xzaXplaSBidWZzaXplID0gJWQsIEdMc2l6ZWkqIGxlbmd0aCA9ICIKKyAgICAg
ICAgIjB4JTAuOHAsIEdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIsCisgICAgICAgIHRhcmdldCwg
cG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKKworICAgIENvbnRleHQgKmNvbnRleHQg
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAg
ICAgIEdMc2l6ZWkgbnVtUGFyYW1zID0gMDsKKyAgICAgICAgaWYgKCFWYWxpZGF0ZUdldFF1ZXJ5
aXZSb2J1c3RBTkdMRShjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBidWZTaXplLCAmbnVtUGFyYW1z
LCBwYXJhbXMpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBjb250ZXh0LT5nZXRRdWVyeWl2KHRhcmdldCwgcG5hbWUsIHBhcmFtcyk7CisgICAg
ICAgIFNldFJvYnVzdExlbmd0aFBhcmFtKGxlbmd0aCwgbnVtUGFyYW1zKTsKKyAgICB9Cit9CisK
K0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5H
TEUoR0x1aW50IGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAg
IihHTHVpbnQgaWQgPSAldSwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xzaXplaSBidWZzaXplID0g
JWQsIEdMc2l6ZWkqIGxlbmd0aCA9IDB4JTAuOHAsICIKKyAgICAgICAgIkdMaW50KiBwYXJhbXMg
PSAweCUwLjhwKSIsCisgICAgICAgIGlkLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMp
OworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAg
IGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgR0xzaXplaSBudW1QYXJhbXMgPSAwOworICAg
ICAgICBpZiAoIVZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShjb250ZXh0LCBp
ZCwgcG5hbWUsIGJ1ZlNpemUsICZudW1QYXJhbXMsIHBhcmFtcykpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnRleHQtPmdldFF1ZXJ5T2Jq
ZWN0dWl2KGlkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgU2V0Um9idXN0TGVuZ3RoUGFyYW0o
bGVuZ3RoLCBudW1QYXJhbXMpOworICAgIH0KK30KKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJ
RU5UUlkgR2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk
ICoqcGFyYW1zKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdMZW51bSB0YXJnZXQgPSAweCVY
LCBHTGVudW0gcG5hbWUgPSAweCVYLCAgR0xzaXplaSBidWZzaXplID0gJWQsIEdMc2l6ZWkqIGxl
bmd0aCA9ICIKKyAgICAgICAgIjB4JTAuOHAsIEdMdm9pZCoqIHBhcmFtcyA9IDB4JTAuOHApIiwK
KyAgICAgICAgdGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOworCisgICAg
Q29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250
ZXh0KQorICAgIHsKKyAgICAgICAgR0xzaXplaSBudW1QYXJhbXMgPSAwOworICAgICAgICBpZiAo
IVZhbGlkYXRlR2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShjb250ZXh0LCB0YXJnZXQsIHBu
YW1lLCBidWZTaXplLCAmbnVtUGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwYXJhbXMpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBjb250ZXh0LT5nZXRCdWZmZXJQb2ludGVydih0YXJn
ZXQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBTZXRSb2J1c3RMZW5ndGhQYXJhbShsZW5ndGgs
IG51bVBhcmFtcyk7CisgICAgfQorfQorCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWQor
R2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xz
aXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpkYXRhKQoreworICAgIEVWRU5U
KAorICAgICAgICAiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTHVpbnQgaW5kZXggPSAldSwgR0xz
aXplaSBidWZzaXplID0gJWQsIEdMc2l6ZWkqIGxlbmd0aCA9ICIKKyAgICAgICAgIjB4JTAuOHAs
IEdMaW50KiBkYXRhID0gMHglMC44cCkiLAorICAgICAgICB0YXJnZXQsIGluZGV4LCBidWZTaXpl
LCBsZW5ndGgsIGRhdGEpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgR0xzaXplaSBudW1Q
YXJhbXMgPSAwOworICAgICAgICBpZiAoIVZhbGlkYXRlR2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xF
KGNvbnRleHQsIHRhcmdldCwgaW5kZXgsIGJ1ZlNpemUsICZudW1QYXJhbXMsIGRhdGEpKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb250ZXh0
LT5nZXRJbnRlZ2VyaV92KHRhcmdldCwgaW5kZXgsIGRhdGEpOworICAgICAgICBTZXRSb2J1c3RM
ZW5ndGhQYXJhbShsZW5ndGgsIG51bVBhcmFtcyk7CisgICAgfQorfQorCitBTkdMRV9FWFBPUlQg
dm9pZCBHTF9BUElFTlRSWSBHZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0xlbnVtIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFt
cykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xlbnVt
IGludGVybmFsZm9ybWF0ID0gMHglWCwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xzaXplaSBidWZT
aXplICIKKyAgICAgICAgIj0gJWQsIEdMc2l6ZWkqIGxlbmd0aCA9IDB4JTAuOHAsIEdMaW50KiBw
YXJhbXMgPSAweCUwLjhwKSIsCisgICAgICAgIHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHBuYW1l
LCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBH
THNpemVpIG51bVBhcmFtcyA9IDA7CisgICAgICAgIGlmICghVmFsaWRhdGVHZXRJbnRlcm5hbEZv
cm1hdGl2Um9idXN0QU5HTEUoY29udGV4dCwgdGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgcG5hbWUs
IGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJm51bVBhcmFtcywgcGFyYW1zKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgVGV4dHVyZUNhcHMgJmZvcm1hdENhcHMgPSBj
b250ZXh0LT5nZXRUZXh0dXJlQ2FwcygpLmdldChpbnRlcm5hbGZvcm1hdCk7CisgICAgICAgIFF1
ZXJ5SW50ZXJuYWxGb3JtYXRpdihmb3JtYXRDYXBzLCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsK
KyAgICAgICAgU2V0Um9idXN0TGVuZ3RoUGFyYW0obGVuZ3RoLCBudW1QYXJhbXMpOworICAgIH0K
K30KKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0VmVydGV4QXR0cmliSWl2Um9i
dXN0QU5HTEUoR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZT
aXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBFVkVO
VCgKKyAgICAgICAgIihHTHVpbnQgaW5kZXggPSAldSwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xz
aXplaSBidWZzaXplID0gJWQsIEdMc2l6ZWkqIGxlbmd0aCA9IDB4JTAuOHAsICIKKyAgICAgICAg
IkdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIsCisgICAgICAgIGluZGV4LCBwbmFtZSwgYnVmU2l6
ZSwgbGVuZ3RoLCBwYXJhbXMpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgR0xzaXplaSB3
cml0ZUxlbmd0aCA9IDA7CisgICAgICAgIGlmICghVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJJaXZS
b2J1c3RBTkdMRShjb250ZXh0LCBpbmRleCwgcG5hbWUsIGJ1ZlNpemUsICZ3cml0ZUxlbmd0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFt
cykpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGNvbnN0IFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGEgJmN1cnJlbnRWYWx1ZXMgPQorICAg
ICAgICAgICAgY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1
ZShpbmRleCk7CisgICAgICAgIGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliID0KKyAgICAg
ICAgICAgIGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRWZXJ0ZXhBcnJheSgpLT5nZXRWZXJ0ZXhB
dHRyaWJ1dGUoaW5kZXgpOworICAgICAgICBRdWVyeVZlcnRleEF0dHJpYklpdihhdHRyaWIsIGN1
cnJlbnRWYWx1ZXMsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBTZXRSb2J1c3RMZW5ndGhQYXJh
bShsZW5ndGgsIHdyaXRlTGVuZ3RoKTsKKyAgICB9Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdM
X0FQSUVOVFJZIEdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHTHVpbnQgaW5kZXgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50ICpwYXJhbXMpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0x1aW50
IGluZGV4ID0gJXUsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBH
THNpemVpKiBsZW5ndGggPSAweCUwLjhwLCAiCisgICAgICAgICJHTHVpbnQqIHBhcmFtcyA9IDB4
JTAuOHApIiwKKyAgICAgICAgaW5kZXgsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7
CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAg
aWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBHTHNpemVpIHdyaXRlTGVuZ3RoID0gMDsKKyAg
ICAgICAgaWYgKCFWYWxpZGF0ZUdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShjb250ZXh0
LCBpbmRleCwgcG5hbWUsIGJ1ZlNpemUsICZ3cml0ZUxlbmd0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMpKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBWZXJ0ZXhBdHRy
aWJDdXJyZW50VmFsdWVEYXRhICZjdXJyZW50VmFsdWVzID0KKyAgICAgICAgICAgIGNvbnRleHQt
PmdldEdMU3RhdGUoKS5nZXRWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWUoaW5kZXgpOworICAgICAg
ICBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiA9CisgICAgICAgICAgICBjb250ZXh0LT5n
ZXRHTFN0YXRlKCkuZ2V0VmVydGV4QXJyYXkoKS0+Z2V0VmVydGV4QXR0cmlidXRlKGluZGV4KTsK
KyAgICAgICAgUXVlcnlWZXJ0ZXhBdHRyaWJJdWl2KGF0dHJpYiwgY3VycmVudFZhbHVlcywgcG5h
bWUsIHBhcmFtcyk7CisgICAgICAgIFNldFJvYnVzdExlbmd0aFBhcmFtKGxlbmd0aCwgd3JpdGVM
ZW5ndGgpOworICAgIH0KK30KKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0VW5p
Zm9ybXVpdlJvYnVzdEFOR0xFKEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
YnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpCit7CisgICAgRVZFTlQoCisg
ICAgICAgICIoR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXpl
aSBidWZzaXplID0gJWQsIEdMc2l6ZWkqIGxlbmd0aCA9ICIKKyAgICAgICAgIjB4JTAuOHAsIEdM
dWludCogcGFyYW1zID0gMHglMC44cCkiLAorICAgICAgICBwcm9ncmFtLCBsb2NhdGlvbiwgYnVm
U2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgR0xzaXpl
aSB3cml0ZUxlbmd0aCA9IDA7CisgICAgICAgIGlmICghVmFsaWRhdGVHZXRVbmlmb3JtdWl2Um9i
dXN0QU5HTEUoY29udGV4dCwgcHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsICZ3cml0ZUxlbmd0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMp
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBQ
cm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKKyAg
ICAgICAgQVNTRVJUKHByb2dyYW1PYmplY3QpOworCisgICAgICAgIHByb2dyYW1PYmplY3QtPmdl
dFVuaWZvcm11aXYobG9jYXRpb24sIHBhcmFtcyk7CisgICAgICAgIFNldFJvYnVzdExlbmd0aFBh
cmFtKGxlbmd0aCwgd3JpdGVMZW5ndGgpOworICAgIH0KK30KKworQU5HTEVfRVhQT1JUIHZvaWQg
R0xfQVBJRU5UUlkgR2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRShHTHVpbnQgcHJv
Z3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3Ro
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCAqcGFyYW1zKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdMdWlu
dCBwcm9ncmFtID0gJXUsIEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCA9ICV1LCBHTGVudW0gcG5h
bWUgPSAweCVYLCBHTHNpemVpIGJ1ZnNpemUgIgorICAgICAgICAiPSAlZCwgR0xzaXplaSogbGVu
Z3RoID0gMHglMC44cCwgR0xpbnQqIHBhcmFtcyA9IDB4JTAuOHApIiwKKyAgICAgICAgcHJvZ3Jh
bSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CisK
KyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYg
KGNvbnRleHQpCisgICAgeworICAgICAgICBHTHNpemVpIHdyaXRlTGVuZ3RoID0gMDsKKyAgICAg
ICAgaWYgKCFWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUoY29udGV4
dCwgcHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZTaXplLCAmd3JpdGVMZW5n
dGgsIHBhcmFtcykpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGNvbnN0IFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9n
cmFtKHByb2dyYW0pOworICAgICAgICBRdWVyeUFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW1P
YmplY3QsIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgU2V0Um9i
dXN0TGVuZ3RoUGFyYW0obGVuZ3RoLCB3cml0ZUxlbmd0aCk7CisgICAgfQorfQorCitBTkdMRV9F
WFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUoR0xlbnVtIHBu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQ2NCAqZGF0YSkKK3sKKyAg
ICBFVkVOVCgKKyAgICAgICAgIihHTGVudW0gcG5hbWUgPSAweCVYLCBHTHNpemVpIGJ1ZnNpemUg
PSAlZCwgR0xzaXplaSogbGVuZ3RoID0gMHglMC44cCwgR0xpbnQ2NCogcGFyYW1zID0gIgorICAg
ICAgICAiMHglMC44cCkiLAorICAgICAgICBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBkYXRhKTsK
KworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBp
ZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIEdMZW51bSBuYXRpdmVUeXBlOworICAgICAgICB1
bnNpZ25lZCBpbnQgbnVtUGFyYW1zID0gMDsKKyAgICAgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdFN0
YXRlUXVlcnkoY29udGV4dCwgcG5hbWUsIGJ1ZlNpemUsICZuYXRpdmVUeXBlLCAmbnVtUGFyYW1z
KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKG5hdGl2ZVR5cGUgPT0gR0xfSU5UXzY0X0FOR0xFWCkKKyAgICAgICAgeworICAgICAgICAg
ICAgY29udGV4dC0+Z2V0SW50ZWdlcjY0dihwbmFtZSwgZGF0YSk7CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBDYXN0U3RhdGVWYWx1ZXMoY29udGV4dCwg
bmF0aXZlVHlwZSwgcG5hbWUsIG51bVBhcmFtcywgZGF0YSk7CisgICAgICAgIH0KKyAgICAgICAg
U2V0Um9idXN0TGVuZ3RoUGFyYW0obGVuZ3RoLCBudW1QYXJhbXMpOworICAgIH0KK30KKworQU5H
TEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUoR0xl
bnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxl
bmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50NjQgKmRhdGEpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0xlbnVtIHRh
cmdldCA9IDB4JVgsIEdMdWludCBpbmRleCA9ICV1LCBHTHNpemVpIGJ1ZnNpemUgPSAlZCwgR0xz
aXplaSogbGVuZ3RoID0gIgorICAgICAgICAiMHglMC44cCwgR0xpbnQ2NCogZGF0YSA9IDB4JTAu
OHApIiwKKyAgICAgICAgdGFyZ2V0LCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLCBkYXRhKTsKKwor
ICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAo
Y29udGV4dCkKKyAgICB7CisgICAgICAgIEdMc2l6ZWkgbnVtUGFyYW1zID0gMDsKKyAgICAgICAg
aWYgKCFWYWxpZGF0ZUdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFKGNvbnRleHQsIHRhcmdldCwg
aW5kZXgsIGJ1ZlNpemUsICZudW1QYXJhbXMsIGRhdGEpKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb250ZXh0LT5nZXRJbnRlZ2VyNjRpX3Yo
dGFyZ2V0LCBpbmRleCwgZGF0YSk7CisgICAgICAgIFNldFJvYnVzdExlbmd0aFBhcmFtKGxlbmd0
aCwgbnVtUGFyYW1zKTsKKyAgICB9Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZ
IEdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAq
bGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50NjQgKnBhcmFtcykKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0
YXJnZXQgPSAweCVYLCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTGludDY0KiBwYXJhbXMgPSAweCUw
LjhwKSIsIHRhcmdldCwgcG5hbWUsCisgICAgICAgICAgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMp
OworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAg
IGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgR0xzaXplaSBudW1QYXJhbXMgPSAwOworICAg
ICAgICBpZiAoIVZhbGlkYXRlR2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKGNvbnRl
eHQsIHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsICZudW1QYXJhbXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zKSkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgQnVmZmVyICpidWZm
ZXIgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VGFyZ2V0QnVmZmVyKHRhcmdldCk7CisgICAg
ICAgIFF1ZXJ5QnVmZmVyUGFyYW1ldGVyaTY0dihidWZmZXIsIHBuYW1lLCBwYXJhbXMpOworICAg
ICAgICBTZXRSb2J1c3RMZW5ndGhQYXJhbShsZW5ndGgsIG51bVBhcmFtcyk7CisgICAgfQorfQor
CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRShHTHVpbnQgc2FtcGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbSkKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVp
bnQgc2FtcGxlciA9ICV1LCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTHNpemVpIGJ1ZnNpemUgPSAl
ZCwgY29uc3QgR0xpbnQqIHBhcmFtcyA9ICIKKyAgICAgICAgIjB4JTAuOHApIiwKKyAgICAgICAg
c2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtKTsKKworICAgIENvbnRleHQgKmNvbnRleHQg
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAg
ICAgIGlmICghVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShjb250ZXh0LCBz
YW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW0pKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb250ZXh0LT5zYW1wbGVyUGFyYW1ldGVyaXYo
c2FtcGxlciwgcG5hbWUsIHBhcmFtKTsKKyAgICB9Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdM
X0FQSUVOVFJZIFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdMdWludCBzYW1wbGVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
cGFyYW0pCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0x1aW50IHNhbXBsZXIgPSAldSwgR0xl
bnVtIHBuYW1lID0gMHglWCwgR0xzaXplaSBidWZzaXplID0gJWQsIGNvbnN0IEdMZmxvYXQqIHBh
cmFtcyA9ICIKKyAgICAgICAgIjB4JTAuOHApIiwKKyAgICAgICAgc2FtcGxlciwgcG5hbWUsIGJ1
ZlNpemUsIHBhcmFtKTsKKworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICghVmFsaWRhdGVT
YW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShjb250ZXh0LCBzYW1wbGVyLCBwbmFtZSwgYnVm
U2l6ZSwgcGFyYW0pKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBjb250ZXh0LT5zYW1wbGVyUGFyYW1ldGVyZnYoc2FtcGxlciwgcG5hbWUsIHBh
cmFtKTsKKyAgICB9Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldFNhbXBs
ZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdMdWludCBzYW1wbGVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQgc2FtcGxl
ciA9ICV1LCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTHNpemVpIGJ1ZnNpemUgPSAlZCwgR0xzaXpl
aSogbGVuZ3RoID0gIgorICAgICAgICAiMHglMC44cCwgR0xpbnQqIHBhcmFtcyA9IDB4JTAuOHAp
IiwKKyAgICAgICAgc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKKwor
ICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAo
Y29udGV4dCkKKyAgICB7CisgICAgICAgIEdMc2l6ZWkgbnVtUGFyYW1zID0gMDsKKyAgICAgICAg
aWYgKCFWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKGNvbnRleHQsIHNh
bXBsZXIsIHBuYW1lLCBidWZTaXplLCAmbnVtUGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29udGV4dC0+Z2V0U2FtcGxl
clBhcmFtZXRlcml2KHNhbXBsZXIsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBTZXRSb2J1c3RM
ZW5ndGhQYXJhbShsZW5ndGgsIG51bVBhcmFtcyk7CisgICAgfQorfQorCitBTkdMRV9FWFBPUlQg
dm9pZCBHTF9BUElFTlRSWSBHZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHTHVpbnQg
c2FtcGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcykKK3sKKyAgICBFVkVO
VCgKKyAgICAgICAgIihHTHVpbnQgc2FtcGxlID0gJXVyLCBHTGVudW0gcG5hbWUgPSAweCVYLCBH
THNpemVpIGJ1ZnNpemUgPSAlZCwgR0xzaXplaSogbGVuZ3RoID0gIgorICAgICAgICAiMHglMC44
cCwgR0xmbG9hdCogcGFyYW1zID0gMHglMC44cCkiLAorICAgICAgICBzYW1wbGVyLCBwbmFtZSwg
YnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgR0xz
aXplaSBudW1QYXJhbXMgPSAwOworICAgICAgICBpZiAoIVZhbGlkYXRlR2V0U2FtcGxlclBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUoY29udGV4dCwgc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsICZudW1Q
YXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwYXJhbXMpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBjb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyZnYoc2FtcGxlciwgcG5hbWUs
IHBhcmFtcyk7CisgICAgICAgIFNldFJvYnVzdExlbmd0aFBhcmFtKGxlbmd0aCwgbnVtUGFyYW1z
KTsKKyAgICB9Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldEZyYW1lYnVm
ZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAq
bGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCit7CisgICAgRVZFTlQoCisgICAgICAg
ICIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMc2l6ZWkgYnVm
c2l6ZSA9ICVkLCBHTHNpemVpKiBsZW5ndGggPSAiCisgICAgICAgICIweCUwLjhwLCBHTGludCog
cGFyYW1zID0gMHglMC44cCkiLAorICAgICAgICB0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5n
dGgsIHBhcmFtcyk7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCitBTkdMRV9FWFBPUlQgdm9p
ZCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHTHVpbnQgcHJv
Z3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgKnBhcmFtcykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQgcHJvZ3JhbSA9
ICV1LCBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSA9IDB4JVgsIEdMZW51bSBwbmFtZSA9IDB4JVgs
IEdMc2l6ZWkgIgorICAgICAgICAiYnVmc2l6ZSA9ICVkLCBHTHNpemVpKiBsZW5ndGggPSAweCUw
LjhwLCBHTGludCogcGFyYW1zID0gMHglMC44cCkiLAorICAgICAgICBwcm9ncmFtLCBwcm9ncmFt
SW50ZXJmYWNlLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOworICAgIFVOSU1QTEVN
RU5URUQoKTsKK30KKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0Qm9vbGVhbmlf
dlJvYnVzdEFOR0xFKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xib29sZWFuICpkYXRhKQoreworICAgIEVWRU5UKAorICAgICAgICAi
KEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTHVpbnQgaW5kZXggPSAldSwgR0xzaXplaSBidWZzaXpl
ID0gJWQsIEdMc2l6ZWkqIGxlbmd0aCA9ICIKKyAgICAgICAgIjB4JTAuOHAsIEdMYm9vbGVhbiog
ZGF0YSA9IDB4JTAuOHApIiwKKyAgICAgICAgdGFyZ2V0LCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3Ro
LCBkYXRhKTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7
CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBHTHNpemVpIG51bVBhcmFtcyA9IDA7
CisgICAgICAgIGlmICghVmFsaWRhdGVHZXRCb29sZWFuaV92Um9idXN0QU5HTEUoY29udGV4dCwg
dGFyZ2V0LCBpbmRleCwgYnVmU2l6ZSwgJm51bVBhcmFtcywgZGF0YSkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnRleHQtPmdldEJvb2xl
YW5pX3YodGFyZ2V0LCBpbmRleCwgZGF0YSk7CisgICAgICAgIFNldFJvYnVzdExlbmd0aFBhcmFt
KGxlbmd0aCwgbnVtUGFyYW1zKTsKKyAgICB9Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQ
SUVOVFJZIEdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHTGVudW0gcG5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAq
dmFsKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMdWlu
dCBpbmRleCA9ICV1LCBHTHNpemVpIGJ1ZnNpemUgPSAlZCwgR0xzaXplaSogbGVuZ3RoID0gMHgl
MC44cCwgIgorICAgICAgICAiR0xmbG9hdCogdmFsID0gMHglMC44cCkiLAorICAgICAgICBwbmFt
ZSwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgdmFsKTsKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9
CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldFRleExldmVsUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVu
Z3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0xl
bnVtIHRhcmdldCA9IDB4JVgsIEdMaW50IGxldmVsID0gJWQsIEdMZW51bSBwbmFtZSA9IDB4JVgs
IEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCAiCisgICAgICAgICJHTHNpemVpKiBsZW5ndGggPSAweCUw
LjhwLCBHTGludCogcGFyYW1zID0gMHglMC44cCkiLAorICAgICAgICB0YXJnZXQsIGxldmVsLCBw
bmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOworICAgIFVOSU1QTEVNRU5URUQoKTsKK30K
KworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdM
ZW51bSB0YXJnZXQgPSAweCVYLCBHTGludCBsZXZlbCA9ICVkLCBHTGVudW0gcG5hbWUgPSAweCVY
LCBHTHNpemVpIGJ1ZnNpemUgPSAlZCwgIgorICAgICAgICAiR0xzaXplaSogbGVuZ3RoID0gMHgl
MC44cCwgR0xmbG9hdCogcGFyYW1zID0gMHglMC44cCkiLAorICAgICAgICB0YXJnZXQsIGxldmVs
LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOworICAgIFVOSU1QTEVNRU5URUQoKTsK
K30KKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0UG9pbnRlcnZSb2J1c3RBTkdM
RVJvYnVzdEFOR0xFKEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipwYXJhbXMpCit7CisgICAgRVZFTlQo
CisgICAgICAgICIoR0xlbnVtIHBuYW1lID0gMHglWCwgR0xzaXplaSBidWZzaXplID0gJWQsIEdM
c2l6ZWkqIGxlbmd0aCA9IDB4JTAuOHAsIHZvaWQgKipwYXJhbXMgPSAiCisgICAgICAgICIweCUw
LjhwKSIsCisgICAgICAgIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CisgICAgVU5J
TVBMRU1FTlRFRCgpOworfQorCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBSZWFkblBp
eGVsc1JvYnVzdEFOR0xFKEdMaW50IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEp
Cit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0xpbnQgeCA9ICVkLCBHTGludCB5ID0gJWQsIEdM
c2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwgIgorICAgICAgICAiR0xlbnVt
IGZvcm1hdCA9IDB4JVgsIEdMZW51bSB0eXBlID0gMHglWCwgR0xzaXplaSBidWZzaXplID0gJWQs
IEdMc2l6ZWkqIGxlbmd0aCA9ICIKKyAgICAgICAgIjB4JTAuOHAsIEdMdm9pZCAqZGF0YSA9IDB4
JTAuOHApIiwKKyAgICAgICAgeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZT
aXplLCBsZW5ndGgsIGRhdGEpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgR0xzaXplaSB3
cml0ZUxlbmd0aCA9IDA7CisgICAgICAgIGlmICghVmFsaWRhdGVSZWFkblBpeGVsc1JvYnVzdEFO
R0xFKGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJndyaXRlTGVuZ3Ro
LCBkYXRhKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgY29udGV4dC0+cmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5
cGUsIGRhdGEpOworCisgICAgICAgIFNldFJvYnVzdExlbmd0aFBhcmFtKGxlbmd0aCwgd3JpdGVM
ZW5ndGgpOworICAgIH0KK30KKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0blVu
aWZvcm1mdlJvYnVzdEFOR0xFKEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
YnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKQoreworICAgIEVWRU5UKAor
ICAgICAgICAiKEdMdWludCBwcm9ncmFtID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6
ZWkgYnVmc2l6ZSA9ICVkLCBHTHNpemVpKiBsZW5ndGggPSAiCisgICAgICAgICIweCUwLjhwLCBH
TGZsb2F0KiBwYXJhbXMgPSAweCUwLjhwKSIsCisgICAgICAgIHByb2dyYW0sIGxvY2F0aW9uLCBi
dWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCitBTkdM
RV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0x1aW50
IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCAqcGFyYW1zKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdMdWludCBwcm9ncmFtID0g
JWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTHNpemVpKiBs
ZW5ndGggPSAiCisgICAgICAgICIweCUwLjhwLCBHTGludCogcGFyYW1zID0gMHglMC44cCkiLAor
ICAgICAgICBwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOworICAg
IFVOSU1QTEVNRU5URUQoKTsKK30KKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0
blVuaWZvcm11aXZSb2J1c3RBTkdMRShHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcykKK3sKKyAgICBF
VkVOVCgKKyAgICAgICAgIihHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVk
LCBHTHNpemVpIGJ1ZnNpemUgPSAlZCwgR0xzaXplaSogbGVuZ3RoID0gIgorICAgICAgICAiMHgl
MC44cCwgR0x1aW50KiBwYXJhbXMgPSAweCUwLjhwKSIsCisgICAgICAgIHByb2dyYW0sIGxvY2F0
aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQor
CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdM
RShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xpbnQgKnBhcmFtcykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTGVudW0gdGFyZ2V0ID0g
MHglWCwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xzaXplaSBidWZzaXplID0gJWQsIGNvbnN0IEdM
aW50ICpwYXJhbXMgPSAiCisgICAgICAgICIweCUwLjhwKSIsCisgICAgICAgIHRhcmdldCwgcG5h
bWUsIGJ1ZlNpemUsIHBhcmFtcyk7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCitBTkdMRV9F
WFBPUlQgdm9pZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0xlbnVt
IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWlu
dCAqcGFyYW1zKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdMZW51bSB0YXJnZXQgPSAweCVY
LCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTHNpemVpIGJ1ZnNpemUgPSAlZCwgY29uc3QgR0x1aW50
ICpwYXJhbXMgPSAiCisgICAgICAgICIweCUwLjhwKSIsCisgICAgICAgIHRhcmdldCwgcG5hbWUs
IGJ1ZlNpemUsIHBhcmFtcyk7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCitBTkdMRV9FWFBP
UlQgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHTGVudW0g
dGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihH
TGVudW0gdGFyZ2V0ID0gMHglWCwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xzaXplaSBidWZzaXpl
ID0gJWQsIEdMc2l6ZWkqIGxlbmd0aCA9ICIKKyAgICAgICAgIjB4JTAuOHAsIEdMaW50ICpwYXJh
bXMgPSAweCUwLjhwKSIsCisgICAgICAgIHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwg
cGFyYW1zKTsKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdM
X0FQSUVOVFJZIEdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVu
Z3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCAqcGFyYW1zKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdMZW51
bSB0YXJnZXQgPSAweCVYLCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTHNpemVpIGJ1ZnNpemUgPSAl
ZCwgR0xzaXplaSogbGVuZ3RoID0gIgorICAgICAgICAiMHglMC44cCwgR0x1aW50ICpwYXJhbXMg
PSAweCUwLjhwKSIsCisgICAgICAgIHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFy
YW1zKTsKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQ
SUVOVFJZIFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHTHVpbnQgc2FtcGxlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpw
YXJhbSkKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQgc2FtcGxlciA9ICVkLCBHTGVu
dW0gcG5hbWUgPSAweCVYLCBHTHNpemVpIGJ1ZnNpemUgPSAlZCwgY29uc3QgR0xpbnQgKnBhcmFt
ID0gIgorICAgICAgICAiMHglMC44cCkiLAorICAgICAgICBzYW1wbGVyLCBwbmFtZSwgYnVmU2l6
ZSwgcGFyYW0pOworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKworQU5HTEVfRVhQT1JUIHZvaWQg
R0xfQVBJRU5UUlkgU2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHTHVpbnQgc2FtcGxl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMdWludCAqcGFyYW0pCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0x1aW50IHNhbXBsZXIg
PSAlZCwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xzaXplaSBidWZzaXplID0gJWQsIGNvbnN0IEdM
dWludCAqcGFyYW0gPSAiCisgICAgICAgICIweCUwLjhwKSIsCisgICAgICAgIHNhbXBsZXIsIHBu
YW1lLCBidWZTaXplLCBwYXJhbSk7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCitBTkdMRV9F
WFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUo
R0x1aW50IHNhbXBsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVm
U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3sK
KyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQgc2FtcGxlciA9ICVkLCBHTGVudW0gcG5hbWUg
PSAweCVYLCBHTHNpemVpIGJ1ZnNpemUgPSAlZCwgR0xzaXplaSogbGVuZ3RoID0gIgorICAgICAg
ICAiMHglMC44cCwgR0xpbnQgKnBhcmFtcyA9IDB4JTAuOHApIiwKKyAgICAgICAgc2FtcGxlciwg
cG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9
CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2
Um9idXN0QU5HTEUoR0x1aW50IHNhbXBsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCAqcGFyYW1zKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdMdWludCBzYW1wbGVyID0g
JWQsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTHNpemVpKiBs
ZW5ndGggPSAiCisgICAgICAgICIweCUwLjhwLCBHTHVpbnQgKnBhcmFtcyA9IDB4JTAuOHApIiwK
KyAgICAgICAgc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKKyAgICBV
TklNUExFTUVOVEVEKCk7Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldFF1
ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHTHVpbnQgaWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBF
VkVOVCgKKyAgICAgICAgIihHTHVpbnQgaWQgPSAlZCwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xz
aXplaSBidWZzaXplID0gJWQsIEdMc2l6ZWkqIGxlbmd0aCA9IDB4JTAuOHAsICIKKyAgICAgICAg
IkdMdWludCAqcGFyYW1zID0gMHglMC44cCkiLAorICAgICAgICBpZCwgcG5hbWUsIGJ1ZlNpemUs
IGxlbmd0aCwgcGFyYW1zKTsKKworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIEdMc2l6ZWkgbnVt
UGFyYW1zID0gMDsKKyAgICAgICAgaWYgKCFWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RB
TkdMRShjb250ZXh0LCBpZCwgcG5hbWUsIGJ1ZlNpemUsICZudW1QYXJhbXMsIHBhcmFtcykpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnRl
eHQtPmdldFF1ZXJ5T2JqZWN0aXYoaWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBTZXRSb2J1
c3RMZW5ndGhQYXJhbShsZW5ndGgsIG51bVBhcmFtcyk7CisgICAgfQorfQorCitBTkdMRV9FWFBP
UlQgdm9pZCBHTF9BUElFTlRSWSBHZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHTHVpbnQg
aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICps
ZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludDY0ICpwYXJhbXMpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0x1
aW50IGlkID0gJWQsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBH
THNpemVpKiBsZW5ndGggPSAweCUwLjhwLCAiCisgICAgICAgICJHTGludDY0ICpwYXJhbXMgPSAw
eCUwLjhwKSIsCisgICAgICAgIGlkLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwor
CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlm
IChjb250ZXh0KQorICAgIHsKKyAgICAgICAgR0xzaXplaSBudW1QYXJhbXMgPSAwOworICAgICAg
ICBpZiAoIVZhbGlkYXRlR2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoY29udGV4dCwgaWQs
IHBuYW1lLCBidWZTaXplLCAmbnVtUGFyYW1zLCBwYXJhbXMpKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb250ZXh0LT5nZXRRdWVyeU9iamVj
dGk2NHYoaWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBTZXRSb2J1c3RMZW5ndGhQYXJhbShs
ZW5ndGgsIG51bVBhcmFtcyk7CisgICAgfQorfQorCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElF
TlRSWSBHZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0x1aW50IGlkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludDY0ICpwYXJhbXMpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0x1aW50IGlkID0g
JWQsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTHNpemVpKiBs
ZW5ndGggPSAweCUwLjhwLCAiCisgICAgICAgICJHTHVpbnQ2NCAqcGFyYW1zID0gMHglMC44cCki
LAorICAgICAgICBpZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKKworICAgIENv
bnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4
dCkKKyAgICB7CisgICAgICAgIEdMc2l6ZWkgbnVtUGFyYW1zID0gMDsKKyAgICAgICAgaWYgKCFW
YWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShjb250ZXh0LCBpZCwgcG5hbWUs
IGJ1ZlNpemUsICZudW1QYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGFyYW1zKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgY29udGV4dC0+Z2V0UXVlcnlPYmplY3R1aTY0dihpZCwg
cG5hbWUsIHBhcmFtcyk7CisgICAgICAgIFNldFJvYnVzdExlbmd0aFBhcmFtKGxlbmd0aCwgbnVt
UGFyYW1zKTsKKyAgICB9Cit9CisKK30gIC8vIGdsCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzJfMF9leHQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19n
bGVzXzJfMF9leHQuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18yXzBfZXh0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE0MCw2ICsxNDAsNDU3IEBAIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdl
dE9iamVjdFAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgKmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMY2hhciAqbGFiZWwpOwogQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJ
RU5UUlkgR2V0UG9pbnRlcnZLSFIoR0xlbnVtIHBuYW1lLCB2b2lkICoqcGFyYW1zKTsKLX0KKwor
Ly8gR0xfQ0hST01JVU1fYmluZF91bmlmb3JtX2xvY2F0aW9uCitBTkdMRV9FWFBPUlQgdm9pZCBH
TF9BUElFTlRSWSBCaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU0oR0x1aW50IHByb2dyYW0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKTsKKworLy8gR0xfQ0hST01JVU1f
ZnJhbWVidWZmZXJfbWl4ZWRfc2FtcGxlcworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkg
TWF0cml4TG9hZGZDSFJPTUlVTShHTGVudW0gbWF0cml4TW9kZSwgY29uc3QgR0xmbG9hdCAqbWF0
cml4KTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIE1hdHJpeExvYWRJZGVudGl0eUNI
Uk9NSVVNKEdMZW51bSBtYXRyaXhNb2RlKTsKKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5U
UlkgQ292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU0oR0xlbnVtIGNvbXBvbmVudHMpOworCisvLyBH
TF9DSFJPTUlVTV9wYXRoX3JlbmRlcmluZworQU5HTEVfRVhQT1JUIEdMdWludCBHTF9BUElFTlRS
WSBHZW5QYXRoc0NIUk9NSVVNKEdMc2l6ZWkgY2hyb21pdW0pOworQU5HTEVfRVhQT1JUIHZvaWQg
R0xfQVBJRU5UUlkgRGVsZXRlUGF0aHNDSFJPTUlVTShHTHVpbnQgZmlyc3QsIEdMc2l6ZWkgcmFu
Z2UpOworQU5HTEVfRVhQT1JUIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc1BhdGhDSFJPTUlVTShH
THVpbnQgcGF0aCk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBQYXRoQ29tbWFuZHND
SFJPTUlVTShHTHVpbnQgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29tbWFuZHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVieXRlICpjb21tYW5kcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgbnVtQ29vcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGNvb3JkVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmNvb3Jkcyk7CitBTkdMRV9FWFBPUlQg
dm9pZCBHTF9BUElFTlRSWSBQYXRoUGFyYW1ldGVyZkNIUk9NSVVNKEdMdWludCBwYXRoLCBHTGVu
dW0gcG5hbWUsIEdMZmxvYXQgdmFsdWUpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkg
UGF0aFBhcmFtZXRlcmlDSFJPTUlVTShHTHVpbnQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGludCB2
YWx1ZSk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRQYXRoUGFyYW1ldGVyZkNI
Uk9NSVVNKEdMdWludCBwYXRoLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnZhbHVlKTsKK0FOR0xF
X0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldFBhdGhQYXJhbWV0ZXJpQ0hST01JVU0oR0x1aW50
IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnZhbHVlKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdM
X0FQSUVOVFJZIFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNKEdMZW51bSBmdW5jLCBHTGludCByZWYs
IEdMdWludCBtYXNrKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFN0ZW5jaWxGaWxs
UGF0aENIUk9NSVVNKEdMdWludCBwYXRoLCBHTGVudW0gZmlsbE1vZGUsIEdMdWludCBtYXNrKTsK
K0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFN0ZW5jaWxTdHJva2VQYXRoQ0hST01JVU0o
R0x1aW50IHBhdGgsIEdMaW50IHJlZmVyZW5jZSwgR0x1aW50IG1hc2spOworQU5HTEVfRVhQT1JU
IHZvaWQgR0xfQVBJRU5UUlkgQ292ZXJGaWxsUGF0aENIUk9NSVVNKEdMdWludCBwYXRoLCBHTGVu
dW0gY292ZXJNb2RlKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIENvdmVyU3Ryb2tl
UGF0aENIUk9NSVVNKEdMdWludCBwYXRoLCBHTGVudW0gY292ZXJNb2RlKTsKK0FOR0xFX0VYUE9S
VCB2b2lkIEdMX0FQSUVOVFJZIFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNKEdMdWlu
dCBwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gY292ZXJNb2RlKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFN0ZW5j
aWxUaGVuQ292ZXJTdHJva2VQYXRoQ0hST01JVU0oR0x1aW50IHBhdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHJlZmVyZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1v
ZGUpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQ292ZXJGaWxsUGF0aEluc3RhbmNl
ZENIUk9NSVVNKEdMc2l6ZWkgbnVtUGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICpwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNv
dmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0
cmFuc2Zvcm1WYWx1ZXMpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQ292ZXJTdHJv
a2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oR0xzaXplaSBudW1QYXRocywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
YXRoTmFtZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRo
QmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7CitBTkdMRV9FWFBPUlQg
dm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTShHTHNpemVp
IG51bVBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQg
KnBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCQXNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElF
TlRSWSBTdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKEdMc2l6ZWkgbnVtUGF0aHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xf
QVBJRU5UUlkKK1N0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKEdMc2l6
ZWkgbnVtUGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcGF0aE5hbWVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVl
cyk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWQorU3RlbmNpbFRoZW5Db3ZlclN0cm9r
ZVBhdGhJbnN0YW5jZWRDSFJPTUlVTShHTHNpemVpIG51bVBhdGhzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhC
YXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBy
ZWZlcmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gY292ZXJNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKK0FOR0xFX0VY
UE9SVCB2b2lkIEdMX0FQSUVOVFJZIEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTShH
THVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNo
YXIgKm5hbWUpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVBhdGhGcmFn
bWVudElucHV0R2VuQ0hST01JVU0oR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBnZW5Nb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY29tcG9uZW50
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKmNvZWZmcyk7CisKKy8vIEdMX0NIUk9NSVVNX2Nv
cHlfdGV4dHVyZQorQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQ29weVRleHR1cmVDSFJP
TUlVTShHTHVpbnQgc291cmNlSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBkZXN0SWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGludGVybmFsRm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdFR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiB1bnBhY2tGbGlwWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xib29sZWFuIHVucGFja1ByZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBhY2tV
bm11bHRpcGx5QWxwaGEpOworCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBDb3B5U3Vi
VGV4dHVyZUNIUk9NSVVNKEdMdWludCBzb3VyY2VJZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGRlc3RJZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgeW9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1
bnBhY2tGbGlwWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xib29sZWFuIHVucGFja1ByZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBhY2tV
bm11bHRpcGx5QWxwaGEpOworCisvLyBHTF9DSFJPTUlVTV9jb3B5X2NvbXByZXNzZWRfdGV4dHVy
ZQorQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQ29tcHJlc3NlZENvcHlUZXh0dXJlQ0hS
T01JVU0oR0x1aW50IHNvdXJjZUlkLCBHTHVpbnQgZGVzdElkKTsKKworLy8gR0xfQU5HTEVfd2Vi
Z2xfY29tcGF0aWJpbGl0eQorR0xfQVBJQ0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgRW5hYmxl
RXh0ZW5zaW9uQU5HTEUoY29uc3QgR0xjaGFyICpuYW1lKTsKKworLy8gR0xfQU5HTEVfcm9idXN0
X2NsaWVudF9tZW1vcnkKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldEJvb2xlYW52
Um9idXN0QU5HTEUoR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuICpkYXRhKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldEJ1ZmZlclBhcmFt
ZXRlcml2Um9idXN0QU5HTEUoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBh
cmFtcyk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRGbG9hdHZSb2J1c3RBTkdM
RShHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpkYXRhKTsKK0FOR0xF
X0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cml2Um9idXN0QU5HTEUoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGF0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
ICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOworQU5HTEVfRVhQ
T1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0SW50ZWdlcnZSb2J1c3RBTkdMRShHTGVudW0gcG5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqZGF0YSk7CitBTkdMRV9FWFBPUlQgdm9p
ZCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtaXZSb2J1c3RBTkdMRShHTHVpbnQgcHJvZ3JhbSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOworQU5H
TEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1
c3RBTkdMRShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCAqcGFyYW1zKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldFNo
YWRlcml2Um9idXN0QU5HTEUoR0x1aW50IHNoYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRS
WSBHZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQg
KnBhcmFtcyk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBi
dWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOworQU5HTEVfRVhQ
T1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0x1aW50IHByb2dy
YW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBh
cmFtcyk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRVbmlmb3JtaXZSb2J1c3RB
TkdMRShHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAq
bGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgKnBhcmFtcyk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRW
ZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1z
KTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldFZlcnRleEF0dHJpYml2Um9idXN0
QU5HTEUoR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKK0FOR0xFX0VYUE9SVCB2b2lk
IEdMX0FQSUVOVFJZIEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoR0x1aW50IGlu
ZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqcG9pbnRlcik7CitBTkdMRV9F
WFBPUlQgdm9pZCBHTF9BUElFTlRSWSBSZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0xpbnQgeCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZvaWQgKnBpeGVscyk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBU
ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbGZv
cm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJvcmRlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB2b2lkICpwaXhlbHMpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJ
RU5UUlkgVGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKK0FOR0xFX0VYUE9S
VCB2b2lkIEdMX0FQSUVOVFJZIFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0xlbnVtIHRhcmdl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOwor
QU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdM
ZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJ
RU5UUlkgVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW50
ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRlcHRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJvcmRlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwaXhlbHMpOworQU5HTEVf
RVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdMZW51bSB0
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHpvZmZz
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRlcHRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3Jt
YXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBpeGVscyk7CitBTkdM
RV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWQorR2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdMZW51bSB0
YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdM
aW50ICpwYXJhbXMpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0UXVlcnlPYmpl
Y3R1aXZSb2J1c3RBTkdMRShHTHVpbnQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBi
dWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKTsKK0FOR0xFX0VY
UE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0xlbnVt
IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Kmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm9pZCAqKnBhcmFtcyk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRS
WSBHZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqZGF0YSk7CitBTkdMRV9FWFBPUlQg
dm9pZCBHTF9BUElFTlRSWSBHZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0xlbnVtIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFt
cyk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1
c3RBTkdMRShHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNp
emUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKK0FOR0xFX0VYUE9S
VCB2b2lkIEdMX0FQSUVOVFJZIEdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHTHVpbnQg
aW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xf
QVBJRU5UUlkgR2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdMdWludCBwcm9ncmFtLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpOwor
QU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1
c3RBTkdMRShHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKK0FOR0xFX0VYUE9S
VCB2b2lkIEdMX0FQSUVOVFJZIEdldEludGVnZXI2NHZSb2J1c3RBTkdMRShHTGVudW0gcG5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludDY0ICpkYXRhKTsKK0FOR0xFX0VY
UE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFKEdMZW51bSB0
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludDY0ICpkYXRhKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldEJ1ZmZl
clBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50NjQgKnBhcmFtcyk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBT
YW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHTHVpbnQgc2FtcGxlciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbSk7CitBTkdM
RV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShH
THVpbnQgc2FtcGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKnBhcmFtKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdl
dFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdMdWludCBzYW1wbGVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3Ro
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgKnBhcmFtcyk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBH
ZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHTHVpbnQgc2FtcGxlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcyk7CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVO
VFJZIEdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOworQU5HTEVf
RVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUo
R0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50ICpwYXJhbXMpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkg
R2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuICpkYXRhKTsKK0FOR0xFX0VYUE9S
VCB2b2lkIEdMX0FQSUVOVFJZIEdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHTGVudW0gcG5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xmbG9hdCAqdmFsKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldFRleExl
dmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxl
dmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOworQU5HTEVfRVhQT1JU
IHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdMZW51
bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xm
bG9hdCAqcGFyYW1zKTsKKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0UG9pbnRl
cnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1
ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipwYXJhbXMpOwor
QU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgUmVhZG5QaXhlbHNSb2J1c3RBTkdMRShHTGlu
dCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhKTsKK0FOR0xFX0VYUE9SVCB2b2lk
IEdMX0FQSUVOVFJZIEdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHTHVpbnQgcHJvZ3JhbSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFt
cyk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRuVW5pZm9ybWl2Um9idXN0QU5H
TEUoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Kmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCAqcGFyYW1zKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdl
dG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpOworQU5HTEVf
RVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgVGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0xlbnVt
IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpw
YXJhbXMpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgVGV4UGFyYW1ldGVySXVpdlJv
YnVzdEFOR0xFKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTHVpbnQgKnBhcmFtcyk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRS
WSBHZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgKnBhcmFtcyk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEUoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFt
cyk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBTYW1wbGVyUGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUoR0x1aW50IHNhbXBsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
YnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW0pOworQU5HTEVfRVhQT1JUIHZvaWQgR0xf
QVBJRU5UUlkgU2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHTHVpbnQgc2FtcGxlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
dWludCAqcGFyYW0pOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0U2FtcGxlclBh
cmFtZXRlcklpdlJvYnVzdEFOR0xFKEdMdWludCBzYW1wbGVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50ICpwYXJhbXMpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0U2Ft
cGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHTHVpbnQgc2FtcGxlciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxl
bmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJ
RU5UUlkgR2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdMdWludCBpZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1z
KTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVz
dEFOR0xFKEdMdWludCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50NjQgKnBhcmFtcyk7CitBTkdMRV9FWFBPUlQg
dm9pZCBHTF9BUElFTlRSWSBHZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0x1aW50IGlk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAq
bGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludDY0ICpwYXJhbXMpOworCit9ICAvLyBuYW1lc3BhY2UgZ2wKIAog
I2VuZGlmIC8vIExJQkdMRVNWMl9FTlRSWVBPSU5UR0xFUzIwRVhUX0hfCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRy
eV9wb2ludHNfZ2xlc18zXzAuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJsaWJBTkdMRS92YWxpZGF0aW9u
RVMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS92YWxpZGF0aW9uRVMzLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvcXVlcnljb252ZXJzaW9ucy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3F1ZXJ5dXRpbHMu
aCIKIAogI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgogCkBAIC02OCw3ICs2OSw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgRHJhd1JhbmdlRWxlbWVudHMoR0xlbnUKICAgICAgICAgICAgIGNvbnRleHQt
PmRyYXdSYW5nZUVsZW1lbnRzKG1vZGUsIHN0YXJ0LCBlbmQsIGNvdW50LCB0eXBlLCBpbmRpY2Vz
LCBpbmRleFJhbmdlKTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgfQpAQCAtMjI3LDkgKzIyOCw5IEBAIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc1F1ZXJ5
KEdMdWludCBpZCkKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xp
ZW50VmVyc2lvbigpIDwgMykKKyAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVy
c2lvbigpIDwgMykKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm4g
R0xfRkFMU0U7CiAgICAgICAgIH0KIApAQCAtMjU0LDcgKzI1NSw3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgQmVnaW5RdWVyeShHTGVudW0gdGFyZ2UKICAgICAgICAgRXJyb3IgZXJyb3IgPSBjb250ZXh0
LT5iZWdpblF1ZXJ5KHRhcmdldCwgaWQpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7CisgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICB9CkBAIC0yNzUsNyArMjc2LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBF
bmRRdWVyeShHTGVudW0gdGFyZ2V0KQogICAgICAgICBFcnJvciBlcnJvciA9IGNvbnRleHQtPmVu
ZFF1ZXJ5KHRhcmdldCk7CiAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKGVycm9yKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKGVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgIH0KQEAgLTMwOSwxMiArMzEwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRRdWVyeU9i
amVjdHVpdihHTHVpbgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
RXJyb3IgZXJyb3IgPSBjb250ZXh0LT5nZXRRdWVyeU9iamVjdHVpdihpZCwgcG5hbWUsIHBhcmFt
cyk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQorICAgICAgICBjb250ZXh0LT5nZXRRdWVyeU9iamVjdHVpdihpZCwgcG5hbWUsIHBhcmFt
cyk7CiAgICAgfQogfQogCkBAIC0zODAsNyArMzc2LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlm
b3JtTWF0cml4MngzZnYoR0xpbgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0UHJvZ3JhbSgp
OworICAgICAgICBQcm9ncmFtICpwcm9ncmFtID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFBy
b2dyYW0oKTsKICAgICAgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybU1hdHJpeDJ4M2Z2KGxvY2F0aW9u
LCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgfQogfQpAQCAtMzk4LDcgKzM5NCw3IEBA
IHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybU1hdHJpeDN4MmZ2KEdMaW4KICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFByb2dyYW0gKnByb2dyYW0gPSBjb250ZXh0LT5n
ZXRTdGF0ZSgpLmdldFByb2dyYW0oKTsKKyAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IGNvbnRl
eHQtPmdldEdMU3RhdGUoKS5nZXRQcm9ncmFtKCk7CiAgICAgICAgIHByb2dyYW0tPnNldFVuaWZv
cm1NYXRyaXgzeDJmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgIH0K
IH0KQEAgLTQxNiw3ICs0MTIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm1NYXRyaXgyeDRm
dihHTGluCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBQcm9ncmFt
ICpwcm9ncmFtID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRQcm9ncmFtKCk7CisgICAgICAgIFBy
b2dyYW0gKnByb2dyYW0gPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0UHJvZ3JhbSgpOwogICAg
ICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtTWF0cml4Mng0ZnYobG9jYXRpb24sIGNvdW50LCB0cmFu
c3Bvc2UsIHZhbHVlKTsKICAgICB9CiB9CkBAIC00MzQsNyArNDMwLDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBVbmlmb3JtTWF0cml4NHgyZnYoR0xpbgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0
UHJvZ3JhbSgpOworICAgICAgICBQcm9ncmFtICpwcm9ncmFtID0gY29udGV4dC0+Z2V0R0xTdGF0
ZSgpLmdldFByb2dyYW0oKTsKICAgICAgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybU1hdHJpeDR4MmZ2
KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgfQogfQpAQCAtNDUyLDcg
KzQ0OCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybU1hdHJpeDN4NGZ2KEdMaW4KICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFByb2dyYW0gKnByb2dyYW0gPSBj
b250ZXh0LT5nZXRTdGF0ZSgpLmdldFByb2dyYW0oKTsKKyAgICAgICAgUHJvZ3JhbSAqcHJvZ3Jh
bSA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRQcm9ncmFtKCk7CiAgICAgICAgIHByb2dyYW0t
PnNldFVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUp
OwogICAgIH0KIH0KQEAgLTQ3MCw3ICs0NjYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm1N
YXRyaXg0eDNmdihHTGluCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBQcm9ncmFtICpwcm9ncmFtID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRQcm9ncmFtKCk7Cisg
ICAgICAgIFByb2dyYW0gKnByb2dyYW0gPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0UHJvZ3Jh
bSgpOwogICAgICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtTWF0cml4NHgzZnYobG9jYXRpb24sIGNv
dW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICB9CiB9CkBAIC01MDQsOSArNTAwLDkgQEAgdm9p
ZCBHTF9BUElFTlRSWSBSZW5kZXJidWZmZXJTdG9yYWdlTXVsdAogICAgIENvbnRleHQgKmNvbnRl
eHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgICAgICBpZiAo
Y29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwor
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC01MTUsNyArNTExLDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBSZW5kZXJidWZmZXJTdG9yYWdlTXVsdAogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmVuZGVyYnVmZmVyICpyZW5kZXJidWZmZXIg
PSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldEN1cnJlbnRSZW5kZXJidWZmZXIoKTsKKyAgICAgICAg
UmVuZGVyYnVmZmVyICpyZW5kZXJidWZmZXIgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0Q3Vy
cmVudFJlbmRlcmJ1ZmZlcigpOwogICAgICAgICByZW5kZXJidWZmZXItPnNldFN0b3JhZ2VNdWx0
aXNhbXBsZShzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CiAgICAgfQog
fQpAQCAtNjU3LDcgKzY1Myw3IEBAIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc1ZlcnRleEFycmF5
KEdMdWkKICAgICByZXR1cm4gR0xfRkFMU0U7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0SW50
ZWdlcmlfdihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMaW50KiBkYXRhKQordm9pZCBH
TF9BUElFTlRSWSBHZXRJbnRlZ2VyaV92KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xp
bnQgKmRhdGEpCiB7CiAgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0x1aW50IGlu
ZGV4ID0gJXUsIEdMaW50KiBkYXRhID0gMHglMC44cCkiLAogICAgICAgICAgIHRhcmdldCwgaW5k
ZXgsIGRhdGEpOwpAQCAtNjY1LDc2ICs2NjEsMTEgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRJbnRl
Z2VyaV92KEdMZW51bSB0YQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5n
ZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgJiYgIVZhbGlkYXRlR2V0SW50ZWdlcmlfdihjb250ZXh0LCB0YXJnZXQsIGluZGV4LCBk
YXRhKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQot
Ci0gICAgICAgIGNvbnN0IENhcHMgJmNhcHMgPSBjb250ZXh0LT5nZXRDYXBzKCk7Ci0gICAgICAg
IHN3aXRjaCAodGFyZ2V0KQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9UUkFOU0ZPUk1f
RkVFREJBQ0tfQlVGRkVSX1NUQVJUOgotICAgICAgICAgIGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURC
QUNLX0JVRkZFUl9TSVpFOgotICAgICAgICAgIGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JV
RkZFUl9CSU5ESU5HOgotICAgICAgICAgICAgaWYgKGluZGV4ID49IGNhcHMubWF4VHJhbnNmb3Jt
RmVlZGJhY2tTZXBhcmF0ZUF0dHJpYnV0ZXMpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotCi0g
ICAgICAgICAgY2FzZSBHTF9VTklGT1JNX0JVRkZFUl9TVEFSVDoKLSAgICAgICAgICBjYXNlIEdM
X1VOSUZPUk1fQlVGRkVSX1NJWkU6Ci0gICAgICAgICAgY2FzZSBHTF9VTklGT1JNX0JVRkZFUl9C
SU5ESU5HOgotICAgICAgICAgICAgaWYgKGluZGV4ID49IGNhcHMubWF4Q29tYmluZWRVbmlmb3Jt
QmxvY2tzKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghKGNvbnRleHQt
PmdldEluZGV4ZWRJbnRlZ2Vydih0YXJnZXQsIGluZGV4LCBkYXRhKSkpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIEdMZW51bSBuYXRpdmVUeXBlOwotICAgICAgICAgICAgdW5zaWduZWQgaW50IG51
bVBhcmFtcyA9IDA7Ci0gICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEluZGV4ZWRRdWVyeVBh
cmFtZXRlckluZm8odGFyZ2V0LCAmbmF0aXZlVHlwZSwgJm51bVBhcmFtcykpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBpZiAobnVtUGFyYW1zID09IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuOyAvLyBpdCBpcyBrbm93biB0aGF0IHBuYW1lIGlzIHZhbGlkLCBidXQgdGhlcmUg
YXJlIG5vIHBhcmFtZXRlcnMgdG8gcmV0dXJuCi0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGlmIChuYXRpdmVUeXBlID09IEdMX0lOVF82NF9BTkdMRVgpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgR0xpbnQ2NCBtaW5JbnRWYWx1ZSA9IHN0YXRpY19jYXN0PEdMaW50NjQ+KHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCkpOwotICAgICAgICAgICAgICAgIEdMaW50NjQg
bWF4SW50VmFsdWUgPSBzdGF0aWNfY2FzdDxHTGludDY0PihzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dD46Om1heCgpKTsKLSAgICAgICAgICAgICAgICBHTGludDY0ICppbnQ2NFBhcmFtcyA9IG5ldyBH
TGludDY0W251bVBhcmFtc107Ci0KLSAgICAgICAgICAgICAgICBjb250ZXh0LT5nZXRJbmRleGVk
SW50ZWdlcjY0dih0YXJnZXQsIGluZGV4LCBpbnQ2NFBhcmFtcyk7Ci0KLSAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG51bVBhcmFtczsgKytpKQotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgR0xpbnQ2NCBjbGFtcGVkVmFsdWUgPSBzdGQ6
Om1heChzdGQ6Om1pbihpbnQ2NFBhcmFtc1tpXSwgbWF4SW50VmFsdWUpLCBtaW5JbnRWYWx1ZSk7
Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFbaV0gPSBzdGF0aWNfY2FzdDxHTGludD4oY2xhbXBl
ZFZhbHVlKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBkZWxldGUgW10g
aW50NjRQYXJhbXM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQorICAgICAgICBjb250ZXh0LT5nZXRJbnRlZ2VyaV92KHRhcmdldCwgaW5kZXgsIGRhdGEp
OwogICAgIH0KIH0KIApAQCAtNzYxLDE4ICs2OTIsMTggQEAgdm9pZCBHTF9BUElFTlRSWSBFbmRU
cmFuc2Zvcm1GZWVkYmFjayh2bwogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0
LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50
TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFRyYW5zZm9ybUZlZWRiYWNrICp0cmFuc2Zv
cm1GZWVkYmFjayA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0Q3VycmVudFRyYW5zZm9ybUZlZWRi
YWNrKCk7CisgICAgICAgIFRyYW5zZm9ybUZlZWRiYWNrICp0cmFuc2Zvcm1GZWVkYmFjayA9IGNv
bnRleHQtPmdldEdMU3RhdGUoKS5nZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJhY2soKTsKICAgICAg
ICAgQVNTRVJUKHRyYW5zZm9ybUZlZWRiYWNrICE9IE5VTEwpOwogCiAgICAgICAgIGlmICghdHJh
bnNmb3JtRmVlZGJhY2stPmlzQWN0aXZlKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTc4OCw5ICs3MTksOSBAQCB2b2lkIEdM
X0FQSUVOVFJZIEJpbmRCdWZmZXJSYW5nZShHTGVudW0gCiAgICAgQ29udGV4dCAqY29udGV4dCA9
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgICAgIGlmIChjb250
ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTgwMCw3ICs3MzEsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIEJpbmRCdWZmZXJSYW5nZShHTGVudW0gCiAgICAgICAgICAgY2FzZSBH
TF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSOgogICAgICAgICAgICAgaWYgKGluZGV4ID49IGNh
cHMubWF4VHJhbnNmb3JtRmVlZGJhY2tTZXBhcmF0ZUF0dHJpYnV0ZXMpCiAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTgwOCwxOSArNzM5LDI2IEBAIHZvaWQgR0xfQVBJRU5UUlkg
QmluZEJ1ZmZlclJhbmdlKEdMZW51bSAKICAgICAgICAgICBjYXNlIEdMX1VOSUZPUk1fQlVGRkVS
OgogICAgICAgICAgICAgaWYgKGluZGV4ID49IGNhcHMubWF4VW5pZm9ybUJ1ZmZlckJpbmRpbmdz
KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7
CisgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGJ1ZmZl
ciAhPSAwICYmIHNpemUgPD0gMCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRHTFN0YXRlKCkuaXNCaW5k
R2VuZXJhdGVzUmVzb3VyY2VFbmFibGVkKCkgJiYKKyAgICAgICAgICAgICFjb250ZXh0LT5pc0J1
ZmZlckdlbmVyYXRlZChidWZmZXIpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkJ1ZmZlciB3YXMgbm90IGdl
bmVyYXRlZCIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC04MzEsMTUg
Kzc2OSwxNiBAQCB2b2lkIEdMX0FQSUVOVFJZIEJpbmRCdWZmZXJSYW5nZShHTGVudW0gCiAgICAg
ICAgICAgICAgICAgLy8gc2l6ZSBhbmQgb2Zmc2V0IG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0CiAg
ICAgICAgICAgICAgICAgaWYgKGJ1ZmZlciAhPSAwICYmICgob2Zmc2V0ICUgNCkgIT0gMCB8fCAo
c2l6ZSAlIDQpICE9IDApKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgICAgICAvLyBDYW5ub3QgYmluZCBhIHRyYW5zZm9ybSBmZWVkYmFjayBidWZmZXIgaWYg
dGhlIGN1cnJlbnQgdHJhbnNmb3JtIGZlZWRiYWNrIGlzIGFjdGl2ZSAoMy4wLjQgcGcgOTEgc2Vj
dGlvbiAyLjE1LjIpCi0gICAgICAgICAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2sgKmN1clRyYW5z
Zm9ybUZlZWRiYWNrID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRDdXJyZW50VHJhbnNmb3JtRmVl
ZGJhY2soKTsKKyAgICAgICAgICAgICAgICBUcmFuc2Zvcm1GZWVkYmFjayAqY3VyVHJhbnNmb3Jt
RmVlZGJhY2sgPQorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0
Q3VycmVudFRyYW5zZm9ybUZlZWRiYWNrKCk7CiAgICAgICAgICAgICAgICAgaWYgKGN1clRyYW5z
Zm9ybUZlZWRiYWNrICYmIGN1clRyYW5zZm9ybUZlZWRiYWNrLT5pc0FjdGl2ZSgpKQogICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIApAQCAtODUzLDcgKzc5Miw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgQmluZEJ1ZmZlclJhbmdlKEdMZW51bSAKICAgICAgICAgICAgIC8vIGl0
IGlzIGFuIGVycm9yIHRvIGJpbmQgYW4gb2Zmc2V0IG5vdCBhIG11bHRpcGxlIG9mIHRoZSBhbGln
bm1lbnQKICAgICAgICAgICAgIGlmIChidWZmZXIgIT0gMCAmJiAob2Zmc2V0ICUgY2Fwcy51bmlm
b3JtQnVmZmVyT2Zmc2V0QWxpZ25tZW50KSAhPSAwKQogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAg
ICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVF
KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC04NzUsOSAr
ODE0LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBCaW5kQnVmZmVyQmFzZShHTGVudW0gdAogICAgIENv
bnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQor
ICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTikpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC04
ODcsNyArODI2LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBCaW5kQnVmZmVyQmFzZShHTGVudW0gdAog
ICAgICAgICAgIGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUjoKICAgICAgICAgICAg
IGlmIChpbmRleCA+PSBjYXBzLm1heFRyYW5zZm9ybUZlZWRiYWNrU2VwYXJhdGVBdHRyaWJ1dGVz
KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC04OTUsMTMgKzgzNCwyMCBAQCB2
b2lkIEdMX0FQSUVOVFJZIEJpbmRCdWZmZXJCYXNlKEdMZW51bSB0CiAgICAgICAgICAgY2FzZSBH
TF9VTklGT1JNX0JVRkZFUjoKICAgICAgICAgICAgIGlmIChpbmRleCA+PSBjYXBzLm1heFVuaWZv
cm1CdWZmZXJCaW5kaW5ncykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCiAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmlzQmluZEdlbmVyYXRlc1Jlc291cmNl
RW5hYmxlZCgpICYmCisgICAgICAgICAgICAhY29udGV4dC0+aXNCdWZmZXJHZW5lcmF0ZWQoYnVm
ZmVyKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sICJCdWZmZXIgd2FzIG5vdCBnZW5lcmF0ZWQiKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtOTEwLDEwICs4NTYsMTEgQEAgdm9pZCBH
TF9BUElFTlRSWSBCaW5kQnVmZmVyQmFzZShHTGVudW0gdAogICAgICAgICAgIGNhc2UgR0xfVFJB
TlNGT1JNX0ZFRURCQUNLX0JVRkZFUjoKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAv
LyBDYW5ub3QgYmluZCBhIHRyYW5zZm9ybSBmZWVkYmFjayBidWZmZXIgaWYgdGhlIGN1cnJlbnQg
dHJhbnNmb3JtIGZlZWRiYWNrIGlzIGFjdGl2ZSAoMy4wLjQgcGcgOTEgc2VjdGlvbiAyLjE1LjIp
Ci0gICAgICAgICAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2sgKmN1clRyYW5zZm9ybUZlZWRiYWNr
ID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJhY2soKTsKKyAg
ICAgICAgICAgICAgICBUcmFuc2Zvcm1GZWVkYmFjayAqY3VyVHJhbnNmb3JtRmVlZGJhY2sgPQor
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0Q3VycmVudFRyYW5z
Zm9ybUZlZWRiYWNrKCk7CiAgICAgICAgICAgICAgICAgaWYgKGN1clRyYW5zZm9ybUZlZWRiYWNr
ICYmIGN1clRyYW5zZm9ybUZlZWRiYWNrLT5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgICAgIH0KIApAQCAtOTQwLDE1ICs4ODcsMTUgQEAgdm9pZCBHTF9BUElF
TlRSWSBUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbgogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlm
IChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgICAgICBpZiAoY29udGV4dC0+
Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjb3VudCA8IDApCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFM
SURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC05NjAs
MTIgKzkwNywxMiBAQCB2b2lkIEdMX0FQSUVOVFJZIFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluCiAg
ICAgICAgICAgY2FzZSBHTF9TRVBBUkFURV9BVFRSSUJTOgogICAgICAgICAgICAgaWYgKHN0YXRp
Y19jYXN0PEdMdWludD4oY291bnQpID4gY2Fwcy5tYXhUcmFuc2Zvcm1GZWVkYmFja1NlcGFyYXRl
QXR0cmlidXRlcykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X0VOVU0pKTsKKyAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtOTg4LDE1
ICs5MzUsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcgogICAg
IENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAz
KQorICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTikpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmIChidWZTaXplIDwgMCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKQEAgLTEwMDgsNyArOTU1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBH
ZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcgogCiAgICAgICAgIGlmIChpbmRleCA+PSBzdGF0aWNfY2Fz
dDxHTHVpbnQ+KHByb2dyYW1PYmplY3QtPmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ0NvdW50
KCkpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApA
QCAtMTAyNCwyMSArOTcxLDIxIEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliSVBvaW50
ZXIoR0wKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVy
c2lvbigpIDwgMykKKyAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigp
IDwgMykKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoaW5kZXggPj0gTUFYX1ZFUlRFWF9BVFRSSUJTKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZB
TFVFKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
c2l6ZSA8IDEgfHwgc2l6ZSA+IDQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCkBAIC0xMDUwLDI0ICs5OTcsMTYgQEAgdm9pZCBHTF9BUElFTlRSWSBW
ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHTAogICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6
CiAgICAgICAgICAgY2FzZSBHTF9JTlQ6CiAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6
Ci0gICAgICAgICAgY2FzZSBHTF9JTlRfMl8xMF8xMF8xMF9SRVY6Ci0gICAgICAgICAgY2FzZSBH
TF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVY6CiAgICAgICAgICAgICBicmVhazsKIAogICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAog
ICAgICAgICBpZiAoc3RyaWRlIDwgMCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCh0eXBlID09IEdMX0lOVF8yXzEwXzEwXzEwX1JF
ViB8fCB0eXBlID09IEdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVikgJiYgc2l6ZSAhPSA0
KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
QEAgLTEwNzUsMTQgKzEwMTQsMTQgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJJUG9p
bnRlcihHTAogICAgICAgICAvLyBBbiBJTlZBTElEX09QRVJBVElPTiBlcnJvciBpcyBnZW5lcmF0
ZWQgd2hlbiBhIG5vbi16ZXJvIHZlcnRleCBhcnJheSBvYmplY3QKICAgICAgICAgLy8gaXMgYm91
bmQsIHplcm8gaXMgYm91bmQgdG8gdGhlIEFSUkFZX0JVRkZFUiBidWZmZXIgb2JqZWN0IGJpbmRp
bmcgcG9pbnQsCiAgICAgICAgIC8vIGFuZCB0aGUgcG9pbnRlciBhcmd1bWVudCBpcyBub3QgTlVM
TC4KLSAgICAgICAgaWYgKGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0VmVydGV4QXJyYXkoKS0+aWQo
KSAhPSAwICYmIGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0QXJyYXlCdWZmZXJJZCgpID09IDAgJiYg
cG9pbnRlciAhPSBOVUxMKQorICAgICAgICBpZiAoY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFZl
cnRleEFycmF5KCktPmlkKCkgIT0gMCAmJgorICAgICAgICAgICAgY29udGV4dC0+Z2V0R0xTdGF0
ZSgpLmdldEFycmF5QnVmZmVySWQoKSA9PSAwICYmIHBvaW50ZXIgIT0gTlVMTCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBjb250ZXh0LT5nZXRTdGF0ZSgpLnNldFZlcnRleEF0dHJpYlN0YXRlKGluZGV4LCBjb250ZXh0
LT5nZXRTdGF0ZSgpLmdldFRhcmdldEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIpLCBzaXplLCB0eXBl
LCBmYWxzZSwgdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJpZGUsIHBvaW50ZXIpOworICAgICAgICBjb250ZXh0LT52ZXJ0ZXhBdHRyaWJJ
UG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBwb2ludGVyKTsKICAgICB9CiB9CiAK
QEAgLTEwOTQsMzYgKzEwMzMsMTcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRWZXJ0ZXhBdHRyaWJJ
aXYoR0x1aQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRW
ZXJzaW9uKCkgPCAzKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKGluZGV4ID49IE1BWF9WRVJURVhfQVRUUklCUykKLSAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFW
YWxpZGF0ZUdldFZlcnRleEF0dHJpYlBhcmFtZXRlcnMoY29udGV4dCwgcG5hbWUpKQorICAgICAg
ICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0
ZUdldFZlcnRleEF0dHJpYklpdihjb250ZXh0LCBpbmRleCwgcG5hbWUsIHBhcmFtcykpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChwbmFt
ZSA9PSBHTF9DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnN0IFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGEgJmN1cnJlbnRWYWx1ZURhdGEgPSBjb250
ZXh0LT5nZXRTdGF0ZSgpLmdldFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZShpbmRleCk7Ci0gICAg
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7ICsraSkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBwYXJhbXNbaV0gPSBjdXJyZW50VmFsdWVEYXRhLkludFZhbHVlc1tpXTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliU3RhdGUgPSBjb250ZXh0LT5nZXRTdGF0
ZSgpLmdldFZlcnRleEFycmF5KCktPmdldFZlcnRleEF0dHJpYnV0ZShpbmRleCk7Ci0gICAgICAg
ICAgICAqcGFyYW1zID0gUXVlcnlTaW5nbGVWZXJ0ZXhBdHRyaWJ1dGVQYXJhbWV0ZXI8R0xpbnQ+
KGF0dHJpYlN0YXRlLCBwbmFtZSk7Ci0gICAgICAgIH0KKyAgICAgICAgY29uc3QgVmVydGV4QXR0
cmliQ3VycmVudFZhbHVlRGF0YSAmY3VycmVudFZhbHVlcyA9CisgICAgICAgICAgICBjb250ZXh0
LT5nZXRHTFN0YXRlKCkuZ2V0VmVydGV4QXR0cmliQ3VycmVudFZhbHVlKGluZGV4KTsKKyAgICAg
ICAgY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWIgPQorICAgICAgICAgICAgY29udGV4dC0+
Z2V0R0xTdGF0ZSgpLmdldFZlcnRleEFycmF5KCktPmdldFZlcnRleEF0dHJpYnV0ZShpbmRleCk7
CisgICAgICAgIFF1ZXJ5VmVydGV4QXR0cmliSWl2KGF0dHJpYiwgY3VycmVudFZhbHVlcywgcG5h
bWUsIHBhcmFtcyk7CiAgICAgfQogfQogCkBAIC0xMTM1LDM2ICsxMDU1LDE3IEBAIHZvaWQgR0xf
QVBJRU5UUlkgR2V0VmVydGV4QXR0cmliSXVpdihHTHUKICAgICBDb250ZXh0ICpjb250ZXh0ID0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKLSAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpbmRleCA+PSBN
QVhfVkVSVEVYX0FUVFJJQlMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmICghVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJQYXJhbWV0ZXJz
KGNvbnRleHQsIHBuYW1lKSkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
ICYmCisgICAgICAgICAgICAhVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJJdWl2KGNvbnRleHQsIGlu
ZGV4LCBwbmFtZSwgcGFyYW1zKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgaWYgKHBuYW1lID09IEdMX0NVUlJFTlRfVkVSVEVYX0FUVFJJQikK
LSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgVmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0
YSAmY3VycmVudFZhbHVlRGF0YSA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0VmVydGV4QXR0cmli
Q3VycmVudFZhbHVlKGluZGV4KTsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsg
KytpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHBhcmFtc1tpXSA9IGN1cnJlbnRW
YWx1ZURhdGEuVW5zaWduZWRJbnRWYWx1ZXNbaV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJ1
dGUgJmF0dHJpYlN0YXRlID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRWZXJ0ZXhBcnJheSgpLT5n
ZXRWZXJ0ZXhBdHRyaWJ1dGUoaW5kZXgpOwotICAgICAgICAgICAgKnBhcmFtcyA9IFF1ZXJ5U2lu
Z2xlVmVydGV4QXR0cmlidXRlUGFyYW1ldGVyPEdMdWludD4oYXR0cmliU3RhdGUsIHBuYW1lKTsK
LSAgICAgICAgfQorICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZj
dXJyZW50VmFsdWVzID0KKyAgICAgICAgICAgIGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRWZXJ0
ZXhBdHRyaWJDdXJyZW50VmFsdWUoaW5kZXgpOworICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJ1
dGUgJmF0dHJpYiA9CisgICAgICAgICAgICBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VmVydGV4
QXJyYXkoKS0+Z2V0VmVydGV4QXR0cmlidXRlKGluZGV4KTsKKyAgICAgICAgUXVlcnlWZXJ0ZXhB
dHRyaWJJdWl2KGF0dHJpYiwgY3VycmVudFZhbHVlcywgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQog
fQogCkBAIC0xMTc2LDIwICsxMDc3LDE5IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmli
STRpKEdMdWludCAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xp
ZW50VmVyc2lvbigpIDwgMykKKyAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVy
c2lvbigpIDwgMykKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaW5kZXggPj0gTUFYX1ZFUlRFWF9BVFRSSUJTKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZB
TElEX1ZBTFVFKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBHTGludCB2YWxzWzRdID0geyB4LCB5LCB6LCB3IH07Ci0gICAgICAgIGNvbnRleHQtPmdldFN0
YXRlKCkuc2V0VmVydGV4QXR0cmliaShpbmRleCwgdmFscyk7CisgICAgICAgIGNvbnRleHQtPnZl
cnRleEF0dHJpYkk0aShpbmRleCwgeCwgeSwgeiwgdyk7CiAgICAgfQogfQogCkBAIC0xMjAxLDIw
ICsxMTAxLDE5IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliSTR1aShHTHVpbnQKICAg
ICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwg
MykKKyAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAog
ICAgICAgICBpZiAoaW5kZXggPj0gTUFYX1ZFUlRFWF9BVFRSSUJTKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBHTHVpbnQgdmFsc1s0
XSA9IHsgeCwgeSwgeiwgdyB9OwotICAgICAgICBjb250ZXh0LT5nZXRTdGF0ZSgpLnNldFZlcnRl
eEF0dHJpYnUoaW5kZXgsIHZhbHMpOworICAgICAgICBjb250ZXh0LT52ZXJ0ZXhBdHRyaWJJNHVp
KGluZGV4LCB4LCB5LCB6LCB3KTsKICAgICB9CiB9CiAKQEAgLTEyMjUsMTkgKzExMjQsMTkgQEAg
dm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJJNGl2KEdMdWludAogICAgIENvbnRleHQgKmNv
bnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgICAgICBp
ZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChp
bmRleCA+PSBNQVhfVkVSVEVYX0FUVFJJQlMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGNvbnRleHQtPmdldFN0YXRlKCkuc2V0VmVy
dGV4QXR0cmliaShpbmRleCwgdik7CisgICAgICAgIGNvbnRleHQtPnZlcnRleEF0dHJpYkk0aXYo
aW5kZXgsIHYpOwogICAgIH0KIH0KIApAQCAtMTI0OCwxOSArMTE0NywxOSBAQCB2b2lkIEdMX0FQ
SUVOVFJZIFZlcnRleEF0dHJpYkk0dWl2KEdMdWluCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
aWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgICAgIGlmIChjb250ZXh0
LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGluZGV4ID49IE1B
WF9WRVJURVhfQVRUUklCUykKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgY29udGV4dC0+Z2V0U3RhdGUoKS5zZXRWZXJ0ZXhBdHRyaWJ1
KGluZGV4LCB2KTsKKyAgICAgICAgY29udGV4dC0+dmVydGV4QXR0cmliSTR1aXYoaW5kZXgsIHYp
OwogICAgIH0KIH0KIApAQCAtMTI5MiwxNSArMTE5MSwxNSBAQCBHTGludCBHTF9BUElFTlRSWSBH
ZXRGcmFnRGF0YUxvY2F0aW9uKEdMCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGNvbnRl
eHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGll
bnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAg
ICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHByb2dyYW0gPT0gMCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAKQEAgLTEz
MDgsNyArMTIwNyw3IEBAIEdMaW50IEdMX0FQSUVOVFJZIEdldEZyYWdEYXRhTG9jYXRpb24oR0wK
IAogICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QgfHwgIXByb2dyYW1PYmplY3QtPmlzTGlua2Vk
KCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAg
ICAgICB9CiAKQEAgLTEzNTQsNyArMTI1Myw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTF1
aXYoR0xpbnQgbG9jYXQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IFByb2dyYW0gKnByb2dyYW0gPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFByb2dyYW0oKTsKKyAg
ICAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRQcm9ncmFt
KCk7CiAgICAgICAgIHByb2dyYW0tPnNldFVuaWZvcm0xdWl2KGxvY2F0aW9uLCBjb3VudCwgdmFs
dWUpOwogICAgIH0KIH0KQEAgLTEzNzIsNyArMTI3MSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5p
Zm9ybTJ1aXYoR0xpbnQgbG9jYXQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIFByb2dyYW0gKnByb2dyYW0gPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFByb2dyYW0o
KTsKKyAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRQ
cm9ncmFtKCk7CiAgICAgICAgIHByb2dyYW0tPnNldFVuaWZvcm0ydWl2KGxvY2F0aW9uLCBjb3Vu
dCwgdmFsdWUpOwogICAgIH0KIH0KQEAgLTEzOTAsNyArMTI4OSw3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgVW5pZm9ybTN1aXYoR0xpbnQgbG9jYXQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIFByb2dyYW0gKnByb2dyYW0gPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFBy
b2dyYW0oKTsKKyAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IGNvbnRleHQtPmdldEdMU3RhdGUo
KS5nZXRQcm9ncmFtKCk7CiAgICAgICAgIHByb2dyYW0tPnNldFVuaWZvcm0zdWl2KGxvY2F0aW9u
LCBjb3VudCwgdmFsdWUpOwogICAgIH0KIH0KQEAgLTE0MDgsNyArMTMwNyw3IEBAIHZvaWQgR0xf
QVBJRU5UUlkgVW5pZm9ybTR1aXYoR0xpbnQgbG9jYXQKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIFByb2dyYW0gKnByb2dyYW0gPSBjb250ZXh0LT5nZXRTdGF0ZSgp
LmdldFByb2dyYW0oKTsKKyAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IGNvbnRleHQtPmdldEdM
U3RhdGUoKS5nZXRQcm9ncmFtKCk7CiAgICAgICAgIHByb2dyYW0tPnNldFVuaWZvcm00dWl2KGxv
Y2F0aW9uLCBjb3VudCwgdmFsdWUpOwogICAgIH0KIH0KQEAgLTE0OTIsMjUgKzEzOTEsMjUgQEAg
Y29uc3QgR0x1Ynl0ZSAqR0xfQVBJRU5UUlkgR2V0U3RyaW5naShHTAogICAgIENvbnRleHQgKmNv
bnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgICAgICBp
ZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKG5hbWUgIT0gR0xfRVhURU5TSU9OUykKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgIHJl
dHVybiBOVUxMOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGluZGV4ID49IGNvbnRleHQtPmdl
dEV4dGVuc2lvblN0cmluZ0NvdW50KCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJl
dHVybiBOVUxMOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgR0x1Ynl0ZSo+KGNvbnRleHQtPmdldEV4dGVuc2lvblN0cmluZyhpbmRleCkuY19zdHIo
KSk7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEdMdWJ5dGUgKj4oY29u
dGV4dC0+Z2V0RXh0ZW5zaW9uU3RyaW5nKGluZGV4KSk7CiAgICAgfQogCiAgICAgcmV0dXJuIE5V
TEw7CkBAIC0xNTI0LDMxICsxNDIzLDMxIEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29weUJ1ZmZlclN1
YkRhdGEoR0xlbnUKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xp
ZW50VmVyc2lvbigpIDwgMykKKyAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVy
c2lvbigpIDwgMykKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIVZhbGlkQnVmZmVyVGFyZ2V0KGNvbnRleHQsIHJl
YWRUYXJnZXQpIHx8ICFWYWxpZEJ1ZmZlclRhcmdldChjb250ZXh0LCB3cml0ZVRhcmdldCkpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFM
SURfRU5VTSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBC
dWZmZXIgKnJlYWRCdWZmZXIgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFRhcmdldEJ1ZmZlcihy
ZWFkVGFyZ2V0KTsKLSAgICAgICAgQnVmZmVyICp3cml0ZUJ1ZmZlciA9IGNvbnRleHQtPmdldFN0
YXRlKCkuZ2V0VGFyZ2V0QnVmZmVyKHdyaXRlVGFyZ2V0KTsKKyAgICAgICAgQnVmZmVyICpyZWFk
QnVmZmVyICA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRUYXJnZXRCdWZmZXIocmVhZFRhcmdl
dCk7CisgICAgICAgIEJ1ZmZlciAqd3JpdGVCdWZmZXIgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCku
Z2V0VGFyZ2V0QnVmZmVyKHdyaXRlVGFyZ2V0KTsKIAogICAgICAgICBpZiAoIXJlYWRCdWZmZXIg
fHwgIXdyaXRlQnVmZmVyKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFZlcmlmeSB0aGF0IHJlYWRCdWZmZXIgYW5k
IHdyaXRlQnVmZmVyIGFyZSBub3QgY3VycmVudGx5IG1hcHBlZAogICAgICAgICBpZiAocmVhZEJ1
ZmZlci0+aXNNYXBwZWQoKSB8fCB3cml0ZUJ1ZmZlci0+aXNNYXBwZWQoKSkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTU1Niwx
MyArMTQ1NSwxMyBAQCB2b2lkIEdMX0FQSUVOVFJZIENvcHlCdWZmZXJTdWJEYXRhKEdMZW51CiAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHJlYWRPZmZzZXQgKyBzaXplKSA+
IHJlYWRCdWZmZXItPmdldFNpemUoKSB8fAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgaW50Pih3cml0ZU9mZnNldCArIHNpemUpID4gd3JpdGVCdWZmZXItPmdldFNpemUoKSkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKHJlYWRCdWZmZXIgPT0gd3JpdGVCdWZmZXIgJiYgc3RkOjphYnMocmVhZE9mZnNldCAtIHdy
aXRlT2Zmc2V0KSA8IHNpemUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCkBAIC0xNTcyLDcgKzE0NzEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIENvcHlC
dWZmZXJTdWJEYXRhKEdMZW51CiAgICAgICAgICAgICBFcnJvciBlcnJvciA9IHdyaXRlQnVmZmVy
LT5jb3B5QnVmZmVyU3ViRGF0YShyZWFkQnVmZmVyLCByZWFkT2Zmc2V0LCB3cml0ZU9mZnNldCwg
c2l6ZSk7CiAgICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKGVycm9yKTsKKyAgICAgICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNTg3LDE1ICsxNDg2LDE1IEBAIHZvaWQg
R0xfQVBJRU5UUlkgR2V0VW5pZm9ybUluZGljZXMoR0x1aW4KICAgICBDb250ZXh0ICpjb250ZXh0
ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICAgICAgaWYgKGNv
bnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodW5pZm9y
bUNvdW50IDwgMCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKQEAgLTE2MzEsMTUgKzE1MzAsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRBY3RpdmVV
bmlmb3Jtc2l2KEdMdQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRD
bGllbnRWZXJzaW9uKCkgPCAzKQorICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JW
ZXJzaW9uKCkgPCAzKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCiAgICAgICAgIGlmICh1bmlmb3JtQ291bnQgPCAwKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVF
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZB
TFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTY2MywxMyArMTU2
MiwxMyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldEFjdGl2ZVVuaWZvcm1zaXYoR0x1CiAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodW5pZm9ybUNvdW50ID4gcHJvZ3JhbU9iamVj
dC0+Z2V0QWN0aXZlVW5pZm9ybUNvdW50KCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCkBAIC0xNjc5LDcgKzE1NzgsNyBAQCB2b2lkIEdMX0FQSUVO
VFJZIEdldEFjdGl2ZVVuaWZvcm1zaXYoR0x1CiAKICAgICAgICAgICAgIGlmIChpbmRleCA+PSBz
dGF0aWNfY2FzdDxHTHVpbnQ+KHByb2dyYW1PYmplY3QtPmdldEFjdGl2ZVVuaWZvcm1Db3VudCgp
KSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTY5OSw5ICsxNTk4LDkgQEAgR0x1aW50IEdM
X0FQSUVOVFJZIEdldFVuaWZvcm1CbG9ja0luZGV4KAogICAgIENvbnRleHQgKmNvbnRleHQgPSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgICAgICBpZiAoY29udGV4
dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsK
ICAgICAgICAgICAgIHJldHVybiBHTF9JTlZBTElEX0lOREVYOwogICAgICAgICB9CiAKQEAgLTE3
MjUsNDMgKzE2MjQsMTQgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRBY3RpdmVVbmlmb3JtQmxvY2tp
dgogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9u
KCkgPCAzKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0gICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBHZXRWYWxpZFByb2dyYW0oY29udGV4
dCwgcHJvZ3JhbSk7Ci0KLSAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodW5pZm9ybUJsb2Nr
SW5kZXggPj0gcHJvZ3JhbU9iamVjdC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NrQ291bnQoKSkKKyAg
ICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFs
aWRhdGVHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihjb250ZXh0LCBwcm9ncmFtLCB1bmlmb3JtQmxv
Y2tJbmRleCwgcG5hbWUsIHBhcmFtcykpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIHN3aXRjaCAocG5hbWUpCi0gICAgICAgIHsKLSAgICAg
ICAgICBjYXNlIEdMX1VOSUZPUk1fQkxPQ0tfQklORElORzoKLSAgICAgICAgICAgICpwYXJhbXMg
PSBzdGF0aWNfY2FzdDxHTGludD4ocHJvZ3JhbU9iamVjdC0+Z2V0VW5pZm9ybUJsb2NrQmluZGlu
Zyh1bmlmb3JtQmxvY2tJbmRleCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICBj
YXNlIEdMX1VOSUZPUk1fQkxPQ0tfREFUQV9TSVpFOgotICAgICAgICAgIGNhc2UgR0xfVU5JRk9S
TV9CTE9DS19OQU1FX0xFTkdUSDoKLSAgICAgICAgICBjYXNlIEdMX1VOSUZPUk1fQkxPQ0tfQUNU
SVZFX1VOSUZPUk1TOgotICAgICAgICAgIGNhc2UgR0xfVU5JRk9STV9CTE9DS19BQ1RJVkVfVU5J
Rk9STV9JTkRJQ0VTOgotICAgICAgICAgIGNhc2UgR0xfVU5JRk9STV9CTE9DS19SRUZFUkVOQ0VE
X0JZX1ZFUlRFWF9TSEFERVI6Ci0gICAgICAgICAgY2FzZSBHTF9VTklGT1JNX0JMT0NLX1JFRkVS
RU5DRURfQllfRlJBR01FTlRfU0hBREVSOgotICAgICAgICAgICAgcHJvZ3JhbU9iamVjdC0+Z2V0
QWN0aXZlVW5pZm9ybUJsb2NraXYodW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBwYXJhbXMpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgY29uc3QgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9
IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAgIFF1ZXJ5QWN0aXZlVW5pZm9y
bUJsb2NraXYocHJvZ3JhbU9iamVjdCwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBwYXJhbXMp
OwogICAgIH0KIH0KIApAQCAtMTc3Myw5ICsxNjQzLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRB
Y3RpdmVVbmlmb3JtQmxvY2tOYQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0
LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50
TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCkBAIC0xNzg4LDcgKzE2NTgsNyBAQCB2b2lkIEdMX0FQSUVO
VFJZIEdldEFjdGl2ZVVuaWZvcm1CbG9ja05hCiAKICAgICAgICAgaWYgKHVuaWZvcm1CbG9ja0lu
ZGV4ID49IHByb2dyYW1PYmplY3QtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja0NvdW50KCkpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURf
VkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xODA0LDE1
ICsxNjc0LDE1IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybUJsb2NrQmluZGluZyhHTHUKICAg
ICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwg
MykKKyAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAog
ICAgICAgICBpZiAodW5pZm9ybUJsb2NrQmluZGluZyA+PSBjb250ZXh0LT5nZXRDYXBzKCkubWF4
VW5pZm9ybUJ1ZmZlckJpbmRpbmdzKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIApAQCAtMTgyNiw3ICsxNjk2LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBV
bmlmb3JtQmxvY2tCaW5kaW5nKEdMdQogICAgICAgICAvLyBpZiBuZXZlciBsaW5rZWQsIHRoZXJl
IHdvbid0IGJlIGFueSB1bmlmb3JtIGJsb2NrcwogICAgICAgICBpZiAodW5pZm9ybUJsb2NrSW5k
ZXggPj0gcHJvZ3JhbU9iamVjdC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NrQ291bnQoKSkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE4NDIsOSAr
MTcxMiw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgRHJhd0FycmF5c0luc3RhbmNlZChHTGUKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykK
KyAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAt
MTg1Niw3ICsxNzI2LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBEcmF3QXJyYXlzSW5zdGFuY2VkKEdM
ZQogICAgICAgICBFcnJvciBlcnJvciA9IGNvbnRleHQtPmRyYXdBcnJheXNJbnN0YW5jZWQobW9k
ZSwgZmlyc3QsIGNvdW50LCBpbnN0YW5jZUNvdW50KTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJy
b3IoKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZXJyb3Ip
OworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoZXJyb3IpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMTg3MCw5ICsxNzQwLDkgQEAgdm9pZCBHTF9B
UElFTlRSWSBEcmF3RWxlbWVudHNJbnN0YW5jZWQoRwogICAgIENvbnRleHQgKmNvbnRleHQgPSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgICAgICBpZiAoY29udGV4
dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xODg2LDcgKzE3NTYsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIERyYXdFbGVtZW50c0luc3RhbmNlZChHCiAgICAgICAgICAgICBjb250
ZXh0LT5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMsIGlu
c3RhbmNlQ291bnQsIGluZGV4UmFuZ2UpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7CisgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICB9CkBAIC0xODk5LDIxICsxNzY5LDIxIEBAIEdMc3luYyBHTF9BUElF
TlRSWSBGZW5jZVN5bmNfKEdMZW51bSBjb24KICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAo
Y29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICAgICAgaWYgKGNvbnRleHQtPmdl
dENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAg
ICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjb25kaXRpb24gIT0g
R0xfU1lOQ19HUFVfQ09NTUFORFNfQ09NUExFVEUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChmbGFncyAhPSAwKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZB
TFVFKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCkBAIC0xOTI0LDcg
KzE3OTQsNyBAQCBHTHN5bmMgR0xfQVBJRU5UUlkgRmVuY2VTeW5jXyhHTGVudW0gY29uCiAgICAg
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnRleHQt
PmRlbGV0ZUZlbmNlU3luYyhmZW5jZVN5bmMpOwotICAgICAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoZXJyb3IpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoZXJyb3IpOwog
ICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KIApAQCAtMTk0MSw5ICsxODExLDkg
QEAgR0xib29sZWFuIEdMX0FQSUVOVFJZIElzU3luYyhHTHN5bmMgc3luYwogICAgIENvbnRleHQg
KmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgICAg
ICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TikpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAgICAgICAgfQogCkBA
IC0xOTYwLDE1ICsxODMwLDE1IEBAIHZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlU3luYyhHTHN5bmMg
c3luYykKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVy
c2lvbigpIDwgMykKKyAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigp
IDwgMykKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoc3luYyAhPSBzdGF0aWNfY2FzdDxHTHN5bmM+KDApICYmICFj
b250ZXh0LT5nZXRGZW5jZVN5bmMoc3luYykpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCkBAIC0xOTg0LDE1ICsxODU0LDE1IEBAIEdMZW51bSBHTF9B
UElFTlRSWSBDbGllbnRXYWl0U3luYyhHTHN5bmMKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBp
ZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICAgICAgaWYgKGNvbnRleHQt
PmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAg
ICAgICAgICAgICByZXR1cm4gR0xfV0FJVF9GQUlMRUQ7CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoKGZsYWdzICYgfihHTF9TWU5DX0ZMVVNIX0NPTU1BTkRTX0JJVCkpICE9IDApCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFM
VUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
VkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybiBHTF9XQUlUX0ZBSUxFRDsKICAgICAgICAgfQog
CkBAIC0yMDAwLDcgKzE4NzAsNyBAQCBHTGVudW0gR0xfQVBJRU5UUlkgQ2xpZW50V2FpdFN5bmMo
R0xzeW5jCiAKICAgICAgICAgaWYgKCFmZW5jZVN5bmMpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAg
ICAgICAgIHJldHVybiBHTF9XQUlUX0ZBSUxFRDsKICAgICAgICAgfQogCkBAIC0yMDA4LDcgKzE4
NzgsNyBAQCBHTGVudW0gR0xfQVBJRU5UUlkgQ2xpZW50V2FpdFN5bmMoR0xzeW5jCiAgICAgICAg
IEVycm9yIGVycm9yID0gZmVuY2VTeW5jLT5jbGllbnRXYWl0KGZsYWdzLCB0aW1lb3V0LCAmcmVz
dWx0KTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIEdMX1dBSVRfRkFJTEVEOwogICAg
ICAgICB9CiAKQEAgLTIwMjYsMjEgKzE4OTYsMjEgQEAgdm9pZCBHTF9BUElFTlRSWSBXYWl0U3lu
YyhHTHN5bmMgc3luYywgRwogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5n
ZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFq
b3JWZXJzaW9uKCkgPCAzKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChmbGFncyAhPSAwKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7
CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVF
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodGltZW91
dCAhPSBHTF9USU1FT1VUX0lHTk9SRUQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCkBAIC0yMDQ4LDE0ICsxOTE4LDE0IEBAIHZvaWQgR0xfQVBJRU5U
UlkgV2FpdFN5bmMoR0xzeW5jIHN5bmMsIEcKIAogICAgICAgICBpZiAoIWZlbmNlU3luYykKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAg
RXJyb3IgZXJyb3IgPSBmZW5jZVN5bmMtPnNlcnZlcldhaXQoZmxhZ3MsIHRpbWVvdXQpOwogICAg
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihlcnJvcik7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihl
cnJvcik7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0yMDY4LDkgKzE5MzgsOSBAQCB2b2lkIEdM
X0FQSUVOVFJZIEdldEludGVnZXI2NHYoR0xlbnVtIHBuCiAgICAgQ29udGV4dCAqY29udGV4dCA9
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgICAgIGlmIChjb250
ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIxMDAsMTUgKzE5NzAsMTUg
QEAgdm9pZCBHTF9BUElFTlRSWSBHZXRTeW5jaXYoR0xzeW5jIHN5bmMsIAogICAgIENvbnRleHQg
KmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgICAg
ICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TikpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChidWZTaXplIDwgMCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKQEAgLTIxMTYsNyArMTk4Niw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0U3luY2l2
KEdMc3luYyBzeW5jLCAKIAogICAgICAgICBpZiAoIWZlbmNlU3luYykKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwor
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIxMzEsMTQgKzIwMDEsMTQg
QEAgdm9pZCBHTF9BUElFTlRSWSBHZXRTeW5jaXYoR0xzeW5jIHN5bmMsIAogICAgICAgICAgICAg
ICAgIEVycm9yIGVycm9yID0gZmVuY2VTeW5jLT5nZXRTdGF0dXModmFsdWVzKTsKICAgICAgICAg
ICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7CiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgfQpAQCAtMjE1Miw3MSArMjAyMiwxMSBAQCB2b2lkIEdMX0FQSUVOVFJZ
IEdldEludGVnZXI2NGlfdihHTGVudW0gCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGNv
bnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgICAgIGlmICghY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVHZXRJbnRlZ2VyNjRpX3YoY29udGV4dCwgdGFyZ2V0
LCBpbmRleCwgZGF0YSkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQotICAgICAgICBjb25zdCBDYXBzICZjYXBzID0gY29udGV4dC0+Z2V0Q2Fwcygp
OwotICAgICAgICBzd2l0Y2ggKHRhcmdldCkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xf
VFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TVEFSVDoKLSAgICAgICAgICBjYXNlIEdMX1RSQU5T
Rk9STV9GRUVEQkFDS19CVUZGRVJfU0laRToKLSAgICAgICAgICBjYXNlIEdMX1RSQU5TRk9STV9G
RUVEQkFDS19CVUZGRVJfQklORElORzoKLSAgICAgICAgICAgIGlmIChpbmRleCA+PSBjYXBzLm1h
eFRyYW5zZm9ybUZlZWRiYWNrU2VwYXJhdGVBdHRyaWJ1dGVzKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUp
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICAgIGNhc2UgR0xfVU5JRk9STV9CVUZGRVJfU1RBUlQ6Ci0gICAgICAg
ICAgY2FzZSBHTF9VTklGT1JNX0JVRkZFUl9TSVpFOgotICAgICAgICAgIGNhc2UgR0xfVU5JRk9S
TV9CVUZGRVJfQklORElORzoKLSAgICAgICAgICAgIGlmIChpbmRleCA+PSBjYXBzLm1heFVuaWZv
cm1CdWZmZXJCaW5kaW5ncykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLQotICAgICAgICBpZiAo
IShjb250ZXh0LT5nZXRJbmRleGVkSW50ZWdlcjY0dih0YXJnZXQsIGluZGV4LCBkYXRhKSkpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIEdMZW51bSBuYXRpdmVUeXBlOwotICAgICAgICAgICAgdW5z
aWduZWQgaW50IG51bVBhcmFtcyA9IDA7Ci0gICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldElu
ZGV4ZWRRdWVyeVBhcmFtZXRlckluZm8odGFyZ2V0LCAmbmF0aXZlVHlwZSwgJm51bVBhcmFtcykp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBpZiAobnVtUGFyYW1zID09IDApCi0gICAgICAgICAgICAgICAg
cmV0dXJuOyAvLyBpdCBpcyBrbm93biB0aGF0IHBuYW1lIGlzIHZhbGlkLCBidXQgdGhlcmUgYXJl
IG5vIHBhcmFtZXRlcnMgdG8gcmV0dXJuCi0KLSAgICAgICAgICAgIGlmIChuYXRpdmVUeXBlID09
IEdMX0lOVCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBHTGludCAqaW50UGFyYW1z
ID0gbmV3IEdMaW50W251bVBhcmFtc107Ci0KLSAgICAgICAgICAgICAgICBjb250ZXh0LT5nZXRJ
bmRleGVkSW50ZWdlcnYodGFyZ2V0LCBpbmRleCwgaW50UGFyYW1zKTsKLQotICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1zOyArK2kpCi0gICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBkYXRhW2ldID0gc3RhdGljX2Nhc3Q8R0xp
bnQ2ND4oaW50UGFyYW1zW2ldKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAg
ICBkZWxldGUgW10gaW50UGFyYW1zOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+Z2V0SW50ZWdlcjY0aV92KHRhcmdldCwg
aW5kZXgsIGRhdGEpOwogICAgIH0KIH0KIApAQCAtMjIyOCw1NSArMjAzOCwxNCBAQCB2b2lkIEdM
X0FQSUVOVFJZIEdldEJ1ZmZlclBhcmFtZXRlcmk2NHYoCiAgICAgQ29udGV4dCAqY29udGV4dCA9
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIVZhbGlkQnVm
ZmVyVGFyZ2V0KGNvbnRleHQsIHRhcmdldCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFWYWxpZEJ1ZmZlclBhcmFtZXRlcihjb250
ZXh0LCBwbmFtZSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KLSAgICAgICAgQnVmZmVyICpidWZmZXIgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFRhcmdl
dEJ1ZmZlcih0YXJnZXQpOwotCi0gICAgICAgIGlmICghYnVmZmVyKQorICAgICAgICBpZiAoIWNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0ZUdldEJ1ZmZl
clBhcmFtZXRlcmk2NHYoY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgcGFyYW1zKSkKICAgICAgICAg
ewotICAgICAgICAgICAgLy8gQSBudWxsIGJ1ZmZlciBtZWFucyB0aGF0ICIwIiBpcyBib3VuZCB0
byB0aGUgcmVxdWVzdGVkIGJ1ZmZlciB0YXJnZXQKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBzd2l0Y2ggKHBuYW1lKQotICAgICAgICB7Ci0gICAgICAg
ICAgY2FzZSBHTF9CVUZGRVJfVVNBR0U6Ci0gICAgICAgICAgICAqcGFyYW1zID0gc3RhdGljX2Nh
c3Q8R0xpbnQ2ND4oYnVmZmVyLT5nZXRVc2FnZSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgIGNhc2UgR0xfQlVGRkVSX1NJWkU6Ci0gICAgICAgICAgICAqcGFyYW1zID0gYnVmZmVy
LT5nZXRTaXplKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX0JVRkZF
Ul9BQ0NFU1NfRkxBR1M6Ci0gICAgICAgICAgICAqcGFyYW1zID0gc3RhdGljX2Nhc3Q8R0xpbnQ2
ND4oYnVmZmVyLT5nZXRBY2Nlc3NGbGFncygpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgIGNhc2UgR0xfQlVGRkVSX01BUFBFRDoKLSAgICAgICAgICAgICpwYXJhbXMgPSBzdGF0aWNf
Y2FzdDxHTGludDY0PihidWZmZXItPmlzTWFwcGVkKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgY2FzZSBHTF9CVUZGRVJfTUFQX09GRlNFVDoKLSAgICAgICAgICAgICpwYXJhbXMg
PSBidWZmZXItPmdldE1hcE9mZnNldCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
Y2FzZSBHTF9CVUZGRVJfTUFQX0xFTkdUSDoKLSAgICAgICAgICAgICpwYXJhbXMgPSBidWZmZXIt
PmdldE1hcExlbmd0aCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDog
VU5SRUFDSEFCTEUoKTsgYnJlYWs7Ci0gICAgICAgIH0KKyAgICAgICAgQnVmZmVyICpidWZmZXIg
PSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VGFyZ2V0QnVmZmVyKHRhcmdldCk7CisgICAgICAg
IFF1ZXJ5QnVmZmVyUGFyYW1ldGVyaTY0dihidWZmZXIsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0K
IH0KIApAQCAtMjMyNSw5ICsyMDk0LDkgQEAgR0xib29sZWFuIEdMX0FQSUVOVFJZIElzU2FtcGxl
cihHTHVpbnQgcwogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGll
bnRWZXJzaW9uKCkgPCAzKQorICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJz
aW9uKCkgPCAzKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybiBH
TF9GQUxTRTsKICAgICAgICAgfQogCkBAIC0yMzQ0LDIxICsyMTEzLDIxIEBAIHZvaWQgR0xfQVBJ
RU5UUlkgQmluZFNhbXBsZXIoR0x1aW50IHVuaXQKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBp
ZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICAgICAgaWYgKGNvbnRleHQt
PmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoc2FtcGxlciAhPSAw
ICYmICFjb250ZXh0LT5pc1NhbXBsZXIoc2FtcGxlcikpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHVuaXQgPj0g
Y29udGV4dC0+Z2V0Q2FwcygpLm1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFM
VUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
VkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMzg1LDcgKzIx
NTQsMjAgQEAgdm9pZCBHTF9BUElFTlRSWSBTYW1wbGVyUGFyYW1ldGVyaShHTHVpbgogCiB2b2lk
IEdMX0FQSUVOVFJZIFNhbXBsZXJQYXJhbWV0ZXJpdihHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBu
YW1lLCBjb25zdCBHTGludCogcGFyYW0pCiB7Ci0gICAgU2FtcGxlclBhcmFtZXRlcmkoc2FtcGxl
ciwgcG5hbWUsICpwYXJhbSk7CisgICAgRVZFTlQoIihHTHVpbnQgc2FtcGxlciA9ICV1LCBHTGVu
dW0gcG5hbWUgPSAweCVYLCBjb25zdCBHTGludCogcGFyYW1zID0gMHglMC44cCkiLCBzYW1wbGVy
LAorICAgICAgICAgIHBuYW1lLCBwYXJhbSk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBp
ZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0ZVNh
bXBsZXJQYXJhbWV0ZXJpdihjb250ZXh0LCBzYW1wbGVyLCBwbmFtZSwgcGFyYW0pKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb250ZXh0LT5z
YW1wbGVyUGFyYW1ldGVyaXYoc2FtcGxlciwgcG5hbWUsIHBhcmFtKTsKKyAgICB9CiB9CiAKIHZv
aWQgR0xfQVBJRU5UUlkgU2FtcGxlclBhcmFtZXRlcmYoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBw
bmFtZSwgR0xmbG9hdCBwYXJhbSkKQEAgLTI0MDcsMzQgKzIxODksMzcgQEAgdm9pZCBHTF9BUElF
TlRSWSBTYW1wbGVyUGFyYW1ldGVyZihHTHVpbgogCiB2b2lkIEdMX0FQSUVOVFJZIFNhbXBsZXJQ
YXJhbWV0ZXJmdihHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0KiBw
YXJhbSkKIHsKLSAgICBTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSwgKnBhcmFtKTsK
LX0KLQotdm9pZCBHTF9BUElFTlRSWSBHZXRTYW1wbGVyUGFyYW1ldGVyaXYoR0x1aW50IHNhbXBs
ZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykKLXsKLSAgICBFVkVOVCgiKEdMdWludCBz
YW1wbGVyID0gJXUsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMaW50KiBwYXJhbXMgPSAweCUwLjhw
KSIsIHNhbXBsZXIsIHBuYW1lLCBwYXJhbXMpOworICAgIEVWRU5UKCIoR0x1aW50IHNhbXBsZXIg
PSAldSwgR0xlbnVtIHBuYW1lID0gMHglWCwgY29uc3QgR0xmbG9hdCogcGFyYW1zID0gMHglMC44
cCkiLCBzYW1wbGVyLAorICAgICAgICAgIHBuYW1lLCBwYXJhbSk7CiAKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICAgICAg
aWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVT
YW1wbGVyUGFyYW1ldGVyZnYoY29udGV4dCwgc2FtcGxlciwgcG5hbWUsIHBhcmFtKSkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlm
ICghVmFsaWRhdGVTYW1wbGVyT2JqZWN0UGFyYW1ldGVyKGNvbnRleHQsIHBuYW1lKSkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPnNh
bXBsZXJQYXJhbWV0ZXJmdihzYW1wbGVyLCBwbmFtZSwgcGFyYW0pOworICAgIH0KK30KKwordm9p
ZCBHTF9BUElFTlRSWSBHZXRTYW1wbGVyUGFyYW1ldGVyaXYoR0x1aW50IHNhbXBsZXIsIEdMZW51
bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBFVkVOVCgiKEdMdWludCBzYW1wbGVyID0g
JXUsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIsIHNhbXBs
ZXIsIHBuYW1lLAorICAgICAgICAgIHBhcmFtcyk7CiAKLSAgICAgICAgaWYgKCFjb250ZXh0LT5p
c1NhbXBsZXIoc2FtcGxlcikpCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVHZXRTYW1wbGVyUGFy
YW1ldGVyaXYoY29udGV4dCwgc2FtcGxlciwgcG5hbWUsIHBhcmFtcykpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICAqcGFyYW1zID0g
Y29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUpOworICAgICAgICBj
b250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyaXYoc2FtcGxlciwgcG5hbWUsIHBhcmFtcyk7CiAg
ICAgfQogfQogCkBAIC0yNDQ1LDI0ICsyMjMwLDEzIEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0U2Ft
cGxlclBhcmFtZXRlcmZ2KEcKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+
Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghVmFsaWRhdGVTYW1wbGVyT2JqZWN0UGFy
YW1ldGVyKGNvbnRleHQsIHBuYW1lKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFjb250ZXh0LT5pc1NhbXBsZXIoc2FtcGxlcikpCisg
ICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZh
bGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlcmZ2KGNvbnRleHQsIHNhbXBsZXIsIHBuYW1lLCBwYXJh
bXMpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgKnBhcmFtcyA9IGNvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIs
IHBuYW1lKTsKKyAgICAgICAgY29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcmZ2KHNhbXBsZXIs
IHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIApAQCAtMjQ3MywxNSArMjI0NywxNSBAQCB2b2lk
IEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYkRpdmlzb3IoR0x1CiAgICAgQ29udGV4dCAqY29udGV4
dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgICAgIGlmIChj
b250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGluZGV4
ID49IE1BWF9WRVJURVhfQVRUUklCUykKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKQEAgLTI0OTYsOSArMjI3MCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkg
QmluZFRyYW5zZm9ybUZlZWRiYWNrKEcKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoY29u
dGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICAgICAgaWYgKGNvbnRleHQtPmdldENs
aWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjUwNywxNyArMjI4MSwxOCBAQCB2b2lkIEdM
X0FQSUVOVFJZIEJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHCiAgICAgICAgICAgY2FzZSBHTF9UUkFO
U0ZPUk1fRkVFREJBQ0s6CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgLy8gQ2Fubm90
IGJpbmQgYSB0cmFuc2Zvcm0gZmVlZGJhY2sgb2JqZWN0IGlmIHRoZSBjdXJyZW50IG9uZSBpcyBz
dGFydGVkIGFuZCBub3QgcGF1c2VkICgzLjAuMiBwZyA4NSBzZWN0aW9uIDIuMTQuMSkKLSAgICAg
ICAgICAgICAgICBUcmFuc2Zvcm1GZWVkYmFjayAqY3VyVHJhbnNmb3JtRmVlZGJhY2sgPSBjb250
ZXh0LT5nZXRTdGF0ZSgpLmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgICAgICAg
ICAgICAgIFRyYW5zZm9ybUZlZWRiYWNrICpjdXJUcmFuc2Zvcm1GZWVkYmFjayA9CisgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRDdXJyZW50VHJhbnNmb3JtRmVl
ZGJhY2soKTsKICAgICAgICAgICAgICAgICBpZiAoY3VyVHJhbnNmb3JtRmVlZGJhY2sgJiYgY3Vy
VHJhbnNmb3JtRmVlZGJhY2stPmlzQWN0aXZlKCkgJiYgIWN1clRyYW5zZm9ybUZlZWRiYWNrLT5p
c1BhdXNlZCgpKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgICAgIC8vIENhbm5vdCBiaW5kIGEgdHJhbnNmb3JtIGZlZWRiYWNrIG9iamVjdCB0
aGF0IGRvZXMgbm90IGV4aXN0ICgzLjAuMiBwZyA4NSBzZWN0aW9uIDIuMTQuMSkKICAgICAgICAg
ICAgICAgICBpZiAoIWNvbnRleHQtPmlzVHJhbnNmb3JtRmVlZGJhY2tHZW5lcmF0ZWQoaWQpKQog
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoCisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAogICAgICAgICAg
ICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiQ2Fubm90IGJpbmQgYSB0cmFuc2Zvcm0gZmVlZGJhY2sgb2JqZWN0
IHRoYXQgZG9lcyBub3QgZXhpc3QuIikpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC0yNTI4LDcgKzIzMDMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEJpbmRUcmFuc2Zvcm1GZWVkYmFj
ayhHCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0yNTc5LDkgKzIzNTQsOSBAQCBH
TGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNUcmFuc2Zvcm1GZWVkYmFjCiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgICAgIGlm
IChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7
CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTikpOwogICAgICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogICAgICAgICB9CiAKQEAgLTI2
MDYsMTkgKzIzODEsMTkgQEAgdm9pZCBHTF9BUElFTlRSWSBQYXVzZVRyYW5zZm9ybUZlZWRiYWNr
KAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9u
KCkgPCAzKQorICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAz
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIFRyYW5zZm9ybUZlZWRiYWNrICp0cmFuc2Zvcm1GZWVkYmFjayA9IGNvbnRl
eHQtPmdldFN0YXRlKCkuZ2V0Q3VycmVudFRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgICAgIFRy
YW5zZm9ybUZlZWRiYWNrICp0cmFuc2Zvcm1GZWVkYmFjayA9IGNvbnRleHQtPmdldEdMU3RhdGUo
KS5nZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJhY2soKTsKICAgICAgICAgQVNTRVJUKHRyYW5zZm9y
bUZlZWRiYWNrICE9IE5VTEwpOwogCiAgICAgICAgIC8vIEN1cnJlbnQgdHJhbnNmb3JtIGZlZWRi
YWNrIG11c3QgYmUgYWN0aXZlIGFuZCBub3QgcGF1c2VkIGluIG9yZGVyIHRvIHBhdXNlICgzLjAu
MiBwZyA4NikKICAgICAgICAgaWYgKCF0cmFuc2Zvcm1GZWVkYmFjay0+aXNBY3RpdmUoKSB8fCB0
cmFuc2Zvcm1GZWVkYmFjay0+aXNQYXVzZWQoKSkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjYzMywxOSArMjQwOCwxOSBAQCB2
b2lkIEdMX0FQSUVOVFJZIFJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrCiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgICAgIGlm
IChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7
CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgVHJhbnNm
b3JtRmVlZGJhY2sgKnRyYW5zZm9ybUZlZWRiYWNrID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRD
dXJyZW50VHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2sgKnRy
YW5zZm9ybUZlZWRiYWNrID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldEN1cnJlbnRUcmFuc2Zv
cm1GZWVkYmFjaygpOwogICAgICAgICBBU1NFUlQodHJhbnNmb3JtRmVlZGJhY2sgIT0gTlVMTCk7
CiAKICAgICAgICAgLy8gQ3VycmVudCB0cmFuc2Zvcm0gZmVlZGJhY2sgbXVzdCBiZSBhY3RpdmUg
YW5kIHBhdXNlZCBpbiBvcmRlciB0byByZXN1bWUgKDMuMC4yIHBnIDg2KQogICAgICAgICBpZiAo
IXRyYW5zZm9ybUZlZWRiYWNrLT5pc0FjdGl2ZSgpIHx8ICF0cmFuc2Zvcm1GZWVkYmFjay0+aXNQ
YXVzZWQoKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApAQCAtMjY3Miw3ICsyNDQ3LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRQcm9n
cmFtQmluYXJ5KEdMdWludAogICAgICAgICBFcnJvciBlcnJvciA9IHByb2dyYW1PYmplY3QtPnNh
dmVCaW5hcnkoYmluYXJ5Rm9ybWF0LCBiaW5hcnksIGJ1ZlNpemUsIGxlbmd0aCk7CiAgICAgICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKGVycm9yKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKGVycm9y
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTI2OTcsNyArMjQ3
Miw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbUJpbmFyeShHTHVpbnQgcHIKICAgICAgICAg
RXJyb3IgZXJyb3IgPSBwcm9ncmFtT2JqZWN0LT5sb2FkQmluYXJ5KGJpbmFyeUZvcm1hdCwgYmlu
YXJ5LCBsZW5ndGgpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7CisgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICB9CkBAIC0yNzY2LDkgKzI1NDEsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleFN0b3JhZ2Uy
RChHTGVudW0gdGFyCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdldENs
aWVudFZlcnNpb24oKSA8IDMpCisgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZl
cnNpb24oKSA8IDMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKQEAgLTI3ODMsNyArMjU1OCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4
U3RvcmFnZTJEKEdMZW51bSB0YXIKICAgICAgICAgRXJyb3IgZXJyb3IgPSB0ZXh0dXJlLT5zZXRT
dG9yYWdlKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgc2l6ZSk7CiAgICAgICAgIGlm
IChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKGVycm9yKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKGVycm9yKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTI3OTgsOSArMjU3Myw5
IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4U3RvcmFnZTNEKEdMZW51bSB0YXIKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICAg
ICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjgxNSw3
ICsyNTkwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhTdG9yYWdlM0QoR0xlbnVtIHRhcgogICAg
ICAgICBFcnJvciBlcnJvciA9IHRleHR1cmUtPnNldFN0b3JhZ2UodGFyZ2V0LCBsZXZlbHMsIGlu
dGVybmFsZm9ybWF0LCBzaXplKTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZXJyb3IpOworICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgfQpAQCAtMjgzMCw1NSArMjYwNSwxNCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdl
dEludGVybmFsZm9ybWF0aXYoR0xlCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGNvbnRl
eHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRlR2V0SW50ZXJuYWxGb3JtYXRpdihj
b250ZXh0LCB0YXJnZXQsIGludGVybmFsZm9ybWF0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKSkK
ICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAg
ICAgIGNvbnN0IFRleHR1cmVDYXBzICZmb3JtYXRDYXBzID0gY29udGV4dC0+Z2V0VGV4dHVyZUNh
cHMoKS5nZXQoaW50ZXJuYWxmb3JtYXQpOwotICAgICAgICBpZiAoIWZvcm1hdENhcHMucmVuZGVy
YWJsZSkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAodGFyZ2V0ICE9IEdMX1JFTkRFUkJVRkZFUikKLSAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoYnVmU2l6ZSA8IDApCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURf
VkFMVUUpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHN3aXRj
aCAocG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX05VTV9TQU1QTEVfQ09VTlRT
OgotICAgICAgICAgICAgaWYgKGJ1ZlNpemUgIT0gMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAqcGFyYW1zID0gc3RhdGljX2Nhc3Q8R0xpbnQ+KGZvcm1hdENhcHMuc2FtcGxlQ291
bnRzLnNpemUoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAg
ICAgIGNhc2UgR0xfU0FNUExFUzoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzaXpl
X3QgcmV0dXJuQ291bnQgPSBzdGQ6Om1pbjxzaXplX3Q+KGJ1ZlNpemUsIGZvcm1hdENhcHMuc2Ft
cGxlQ291bnRzLnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgYXV0byBzYW1wbGVSZXZlcnNlSXQg
PSBmb3JtYXRDYXBzLnNhbXBsZUNvdW50cy5yYmVnaW4oKTsKLSAgICAgICAgICAgICAgICBmb3Ig
KHNpemVfdCBzYW1wbGVJbmRleCA9IDA7IHNhbXBsZUluZGV4IDwgcmV0dXJuQ291bnQ7ICsrc2Ft
cGxlSW5kZXgpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBwYXJhbXNb
c2FtcGxlSW5kZXhdID0gKnNhbXBsZVJldmVyc2VJdCsrOzsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBRdWVyeUludGVybmFsRm9y
bWF0aXYoZm9ybWF0Q2FwcywgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcyk7CiAgICAgfQogfQogCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19n
bGVzXzNfMF9leHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfM18wX2V4dC5jcHAJKHJldmlzaW9uIDIwNzgw
NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRz
X2dsZXNfM18wX2V4dC5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNCArMCwwIEBACi0vLwotLy8g
Q29weXJpZ2h0KGMpIDIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
Ci0vLwotCi0vLyBlbnRyeV9wb2ludHNfZ2xlc18zXzBfZXh0LmNwcCA6IEltcGxlbWVudHMgdGhl
IEdMRVMgMy4wIGV4dGVuc2lvbiBlbnRyeSBwb2ludHMuCi0KLSNpbmNsdWRlICJsaWJHTEVTdjIv
ZW50cnlfcG9pbnRzX2dsZXNfM18wX2V4dC5oIgotI2luY2x1ZGUgImxpYkdMRVN2Mi9nbG9iYWxf
c3RhdGUuaCIKLQotbmFtZXNwYWNlIGdsCi17Ci19CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMF9leHQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19n
bGVzXzNfMF9leHQuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzBfZXh0LmgJKG5vbmV4aXN0ZW50
KQpAQCAtMSwyMyArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0KGMpIDIwMTQgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBlbnRyeV9wb2ludHNfZ2xlc18z
XzBfZXh0LmggOiBEZWZpbmVzIHRoZSBHTEVTIDMuMCBleHRlbnNpb24gZW50cnkgcG9pbnRzLgot
Ci0jaWZuZGVmIExJQkdMRVNWMl9FTlRSWVBPSU5UR0xFUzMwRVhUX0hfCi0jZGVmaW5lIExJQkdM
RVNWMl9FTlRSWVBPSU5UR0xFUzMwRVhUX0hfCi0KLSNpbmNsdWRlIDxHTEVTMy9nbDMuaD4KLSNp
bmNsdWRlIDxHTEVTMy9nbDNleHQuaD4KLSNpbmNsdWRlIDxleHBvcnQuaD4KLQotbmFtZXNwYWNl
IGdsCi17Ci0KLS8vIE5vIEdMRVMgMy4wIGV4dGVuc2lvbnMgeWV0Ci0KLX0KLQotI2VuZGlmIC8v
IExJQkdMRVNWMl9FTlRSWVBPSU5UR0xFUzMwRVhUX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNf
Z2xlc18zXzEuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfM18xLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDEyMDEgQEAKKy8vCisvLyBDb3B5cmlnaHQoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIGVudHJ5X3BvaW50c19nbGVzXzNfMS5j
cHAgOiBJbXBsZW1lbnRzIHRoZSBHTEVTIDMuMSBFbnRyeSBwb2ludC4KKworI2luY2x1ZGUgImxp
YkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzEuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvZ2xv
YmFsX3N0YXRlLmgiCisKKyNpbmNsdWRlICJsaWJBTkdMRS9Db250ZXh0LmgiCisjaW5jbHVkZSAi
bGliQU5HTEUvRXJyb3IuaCIKKworI2luY2x1ZGUgImxpYkFOR0xFL3ZhbGlkYXRpb25FUzMxLmgi
CisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKworbmFtZXNwYWNlIGdsCit7CisKK3ZvaWQg
R0xfQVBJRU5UUlkgRGlzcGF0Y2hDb21wdXRlKEdMdWludCBudW1Hcm91cHNYLCBHTHVpbnQgbnVt
R3JvdXBzWSwgR0x1aW50IG51bUdyb3Vwc1opCit7CisgICAgRVZFTlQoIihHTHVpbnQgbnVtR3Jv
dXBzWCA9ICV1LCBHTHVpbnQgbnVtR3JvdXBzWSA9ICV1LCBudW1Hcm91cHNaID0gJXUiLCBudW1H
cm91cHNYLAorICAgICAgICAgIG51bUdyb3Vwc1ksIG51bUdyb3Vwc1opOworICAgIENvbnRleHQg
KmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAg
ICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgIH0KKyAgICAgICAg
VU5JTVBMRU1FTlRFRCgpOworICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBEaXNwYXRjaENv
bXB1dGVJbmRpcmVjdChHTGludHB0ciBpbmRpcmVjdCkKK3sKKyAgICBFVkVOVCgiKEdMaW50cHRy
IGluZGlyZWN0ID0gJWQpIiwgaW5kaXJlY3QpOworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlm
ICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2lu
dCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgIH0KKyAgICAgICAgVU5JTVBMRU1FTlRFRCgp
OworICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBEcmF3QXJyYXlzSW5kaXJlY3QoR0xlbnVt
IG1vZGUsIGNvbnN0IHZvaWQgKmluZGlyZWN0KQoreworICAgIEVWRU5UKCIoR0xlbnVtIG1vZGUg
PSAweCVYLCBjb25zdCB2b2lkKiBpbmRpcmVjdCkiLCBtb2RlLCBpbmRpcmVjdCk7CisgICAgQ29u
dGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0
KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAg
ICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgfQorICAg
ICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQorfQorCit2b2lkIEdMX0FQSUVOVFJZIERyYXdF
bGVtZW50c0luZGlyZWN0KEdMZW51bSBtb2RlLCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqaW5k
aXJlY3QpCit7CisgICAgRVZFTlQoIihHTGVudW0gbW9kZSA9IDB4JVgsIEdMZW51bSB0eXBlID0g
MHglWCwgY29uc3Qgdm9pZCogaW5kaXJlY3QpIiwgbW9kZSwgdHlwZSwgaW5kaXJlY3QpOworICAg
IENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29u
dGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgIH0K
KyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBG
cmFtZWJ1ZmZlclBhcmFtZXRlcmkoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBw
YXJhbSkKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGVudW0gcG5hbWUg
PSAweCVYLCBHTGludCBwYXJhbSA9ICVkKSIsIHRhcmdldCwgcG5hbWUsIHBhcmFtKTsKKyAgICBD
b250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRl
eHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICB9Cisg
ICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0
RnJhbWVidWZmZXJQYXJhbWV0ZXJpdihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50
ICpwYXJhbXMpCit7CisgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xlbnVtIHBu
YW1lID0gMHglWCwgR0xpbnQqIHBhcmFtcyA9IDB4JTAuOHApIiwgdGFyZ2V0LCBwbmFtZSwKKyAg
ICAgICAgICBwYXJhbXMpOworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVt
ZW50ZWQiKSk7CisgICAgICAgIH0KKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0KK30K
Kwordm9pZCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtSW50ZXJmYWNlaXYoR0x1aW50IHByb2dyYW0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcHJvZ3JhbUlu
dGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJh
bXMpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0x1aW50IHByb2dyYW0gPSAldSwgR0xlbnVt
IHByb2dyYW1JbnRlcmZhY2UgPSAweCVYLCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTGludCogcGFy
YW1zICIKKyAgICAgICAgIj0gMHglMC44cCkiLAorICAgICAgICBwcm9ncmFtLCBwcm9ncmFtSW50
ZXJmYWNlLCBwbmFtZSwgcGFyYW1zKTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90
IGltcGxlbWVudGVkIikpOworICAgICAgICB9CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICB9Cit9CisKK0dMdWludCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtUmVzb3VyY2VJbmRleChHTHVp
bnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcHJvZ3JhbUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpCit7CisgICAgRVZFTlQoIihHTHVpbnQgcHJv
Z3JhbSA9ICV1LCBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSA9IDB4JVgsIGNvbnN0IEdMY2hhciog
bmFtZSA9IDB4JTAuOHApIiwKKyAgICAgICAgICBwcm9ncmFtLCBwcm9ncmFtSW50ZXJmYWNlLCBu
YW1lKTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Cisg
ICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOwor
ICAgICAgICB9CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9CisgICAgcmV0dXJuIDB1
OworfQorCit2b2lkIEdMX0FQSUVOVFJZIEdldFByb2dyYW1SZXNvdXJjZU5hbWUoR0x1aW50IHBy
b2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBy
b2dyYW1JbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xjaGFyICpuYW1lKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdMdWludCBwcm9ncmFtID0g
JXUsIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNlID0gMHglWCwgR0x1aW50IGluZGV4ID0gJXUsIEdM
c2l6ZWkgYnVmU2l6ZSAiCisgICAgICAgICI9ICVkLCBHTHNpemVpKiBsZW5ndGggPSAweCUwLjhw
LCBHTGNoYXIqIG5hbWUgPSAweCUwLjhwKSIsCisgICAgICAgIHByb2dyYW0sIHByb2dyYW1JbnRl
cmZhY2UsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIG5hbWUpOworICAgIENvbnRleHQgKmNvbnRl
eHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7Cisg
ICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgeworICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJF
bnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgIH0KKyAgICAgICAgVU5JTVBM
RU1FTlRFRCgpOworICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtUmVzb3Vy
Y2VpdihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBwcm9wQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZW51bSAqcHJvcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCAqcGFyYW1zKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdMdWludCBw
cm9ncmFtID0gJXUsIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNlID0gMHglWCwgR0x1aW50IGluZGV4
ID0gJXUsIEdMc2l6ZWkgIgorICAgICAgICAicHJvcENvdW50ID0gJWQsIGNvbnN0IEdMZW51bSog
cHJvcHMgPSAweCUwLjhwLCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xzaXplaSogbGVuZ3RoID0g
IgorICAgICAgICAiMHglMC44cCwgR0xpbnQqIHBhcmFtcyA9IDB4JTAuOHApIiwKKyAgICAgICAg
cHJvZ3JhbSwgcHJvZ3JhbUludGVyZmFjZSwgaW5kZXgsIHByb3BDb3VudCwgcHJvcHMsIGJ1ZlNp
emUsIGxlbmd0aCwgcGFyYW1zKTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGlt
cGxlbWVudGVkIikpOworICAgICAgICB9CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9
Cit9CisKK0dMaW50IEdMX0FQSUVOVFJZIEdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uKEdMdWlu
dCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpCit7CisgICAgRVZFTlQoIihHTHVpbnQg
cHJvZ3JhbSA9ICV1LCBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSA9IDB4JVgsIGNvbnN0IEdMY2hh
ciogbmFtZSA9IDB4JTAuOHApIiwKKyAgICAgICAgICBwcm9ncmFtLCBwcm9ncmFtSW50ZXJmYWNl
LCBuYW1lKTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7
CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikp
OworICAgICAgICB9CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9CisgICAgcmV0dXJu
IDA7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgVXNlUHJvZ3JhbVN0YWdlcyhHTHVpbnQgcGlwZWxp
bmUsIEdMYml0ZmllbGQgc3RhZ2VzLCBHTHVpbnQgcHJvZ3JhbSkKK3sKKyAgICBFVkVOVCgiKEdM
dWludCBwaXBlbGluZSA9ICV1LCBHTGJpdGZpZWxkIHN0YWdlcyA9IDB4JVgsIEdMdWludCBwcm9n
cmFtID0gJXUpIiwgcGlwZWxpbmUsIHN0YWdlcywKKyAgICAgICAgICBwcm9ncmFtKTsKKyAgICBD
b250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRl
eHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICB9Cisg
ICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgQWN0
aXZlU2hhZGVyUHJvZ3JhbShHTHVpbnQgcGlwZWxpbmUsIEdMdWludCBwcm9ncmFtKQoreworICAg
IEVWRU5UKCIoR0x1aW50IHBpcGVsaW5lID0gJXUsIEdMdWludCBwcm9ncmFtID0gJXUpIiwgcGlw
ZWxpbmUsIHByb2dyYW0pOworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVt
ZW50ZWQiKSk7CisgICAgICAgIH0KKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0KK30K
KworR0x1aW50IEdMX0FQSUVOVFJZIENyZWF0ZVNoYWRlclByb2dyYW12KEdMZW51bSB0eXBlLCBH
THNpemVpIGNvdW50LCBjb25zdCBHTGNoYXIgKmNvbnN0ICpzdHJpbmdzKQoreworICAgIEVWRU5U
KCIoR0xlbnVtIHR5cGUgPSAlMHglWCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGNoYXIg
KmNvbnN0KiA9IDB4JTAuOHApIiwgdHlwZSwgY291bnQsCisgICAgICAgICAgc3RyaW5ncyk7Cisg
ICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChj
b250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQor
ICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAg
fQorICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQorICAgIHJldHVybiAwdTsKK30KKwor
dm9pZCBHTF9BUElFTlRSWSBCaW5kUHJvZ3JhbVBpcGVsaW5lKEdMdWludCBwaXBlbGluZSkKK3sK
KyAgICBFVkVOVCgiKEdMdWludCBwaXBlbGluZSA9ICV1KSIsIHBpcGVsaW5lKTsKKyAgICBDb250
ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQp
CisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICB9CisgICAg
ICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgRGVsZXRl
UHJvZ3JhbVBpcGVsaW5lcyhHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqcGlwZWxpbmVzKQorewor
ICAgIEVWRU5UKCIoR0xzaXplaSBuID0gJWQsIGNvbnN0IEdMdWludCogcGlwZWxpbmVzID0gMHgl
MC44cCkiLCBuLCBwaXBlbGluZXMpOworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3Qg
aW1wbGVtZW50ZWQiKSk7CisgICAgICAgIH0KKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAg
IH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBHZW5Qcm9ncmFtUGlwZWxpbmVzKEdMc2l6ZWkgbiwg
R0x1aW50ICpwaXBlbGluZXMpCit7CisgICAgRVZFTlQoIihHTHNpemVpIG4gPSAlZCwgR0x1aW50
KiBwaXBlbGluZXMgPSAweCUwLjhwKSIsIG4sIHBpcGVsaW5lcyk7CisgICAgQ29udGV4dCAqY29u
dGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsK
KyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAgICB7CisgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwg
IkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgfQorICAgICAgICBVTklN
UExFTUVOVEVEKCk7CisgICAgfQorfQorCitHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNQcm9ncmFt
UGlwZWxpbmUoR0x1aW50IHBpcGVsaW5lKQoreworICAgIEVWRU5UKCIoR0x1aW50IHBpcGVsaW5l
ID0gJXUpIiwgcGlwZWxpbmUpOworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1w
bGVtZW50ZWQiKSk7CisgICAgICAgIH0KKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0K
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0UHJvZ3JhbVBpcGVs
aW5laXYoR0x1aW50IHBpcGVsaW5lLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCit7Cisg
ICAgRVZFTlQoIihHTHVpbnQgcGlwZWxpbmUgPSAldSwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xp
bnQqIHBhcmFtcyA9IDB4JTAuOHApIiwgcGlwZWxpbmUsIHBuYW1lLAorICAgICAgICAgIHBhcmFt
cyk7CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAg
IGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAg
ICAgICAgfQorICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQorfQorCit2b2lkIEdMX0FQ
SUVOVFJZIFByb2dyYW1Vbmlmb3JtMWkoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBH
TGludCB2MCkKK3sKKyAgICBFVkVOVCgiKEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0
aW9uID0gJWQsIEdMaW50IHYwID0gJWQpIiwgcHJvZ3JhbSwgbG9jYXRpb24sIHYwKTsKKyAgICBD
b250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRl
eHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICB9Cisg
ICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgUHJv
Z3JhbVVuaWZvcm0yaShHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwLCBH
TGludCB2MSkKK3sKKyAgICBFVkVOVCgiKEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0
aW9uID0gJWQsIEdMaW50IHYwID0gJWQsIEdMaW50IHYxID0gJWQpIiwgcHJvZ3JhbSwKKyAgICAg
ICAgICBsb2NhdGlvbiwgdjAsIHYxKTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90
IGltcGxlbWVudGVkIikpOworICAgICAgICB9CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0zaShHTHVpbnQgcHJvZ3Jh
bSwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwLCBHTGludCB2MSwgR0xpbnQgdjIpCit7CisgICAg
RVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTGludCB2
MCA9ICVkLCBHTGludCB2MSA9ICVkLCBHTGludCB2MiA9ICVkKSIsCisgICAgICAgICAgcHJvZ3Jh
bSwgbG9jYXRpb24sIHYwLCB2MSwgdjIpOworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICgh
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBu
b3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgIH0KKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWQorUHJvZ3JhbVVuaWZvcm00aShHTHVpbnQgcHJv
Z3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwLCBHTGludCB2MSwgR0xpbnQgdjIsIEdMaW50
IHYzKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50
IGxvY2F0aW9uID0gJWQsIEdMaW50IHYwID0gJWQsIEdMaW50IHYxID0gJWQsIEdMaW50IHYyID0g
JWQsICIKKyAgICAgICAgIkdMaW50IHYzID0gJWQpIiwKKyAgICAgICAgcHJvZ3JhbSwgbG9jYXRp
b24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGlt
cGxlbWVudGVkIikpOworICAgICAgICB9CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9
Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0xdWkoR0x1aW50IHByb2dyYW0s
IEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjApCit7CisgICAgRVZFTlQoIihHTHVpbnQgcHJvZ3Jh
bSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHVpbnQgdjAgPSAldSkiLCBwcm9ncmFtLCBs
b2NhdGlvbiwgdjApOworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50
ZWQiKSk7CisgICAgICAgIH0KKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0KK30KKwor
dm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTJ1aShHTHVpbnQgcHJvZ3JhbSwgR0xpbnQg
bG9jYXRpb24sIEdMdWludCB2MCwgR0x1aW50IHYxKQoreworICAgIEVWRU5UKCIoR0x1aW50IHBy
b2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0x1aW50IHYwID0gJXUsIEdMdWludCB2
MSA9ICV1KSIsIHByb2dyYW0sCisgICAgICAgICAgbG9jYXRpb24sIHYwLCB2MSk7CisgICAgQ29u
dGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0
KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAg
ICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgfQorICAg
ICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQorfQorCit2b2lkIEdMX0FQSUVOVFJZIFByb2dy
YW1Vbmlmb3JtM3VpKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0x1aW50IHYwLCBH
THVpbnQgdjEsIEdMdWludCB2MikKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQgcHJv
Z3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHVpbnQgdjAgPSAldSwgR0x1aW50IHYx
ID0gJXUsIEdMdWludCB2MiA9ICIKKyAgICAgICAgIiV1KSIsCisgICAgICAgIHByb2dyYW0sIGxv
Y2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGlt
cGxlbWVudGVkIikpOworICAgICAgICB9CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9
Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkKK1Byb2dyYW1Vbmlmb3JtNHVpKEdMdWludCBwcm9ncmFt
LCBHTGludCBsb2NhdGlvbiwgR0x1aW50IHYwLCBHTHVpbnQgdjEsIEdMdWludCB2MiwgR0x1aW50
IHYzKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50
IGxvY2F0aW9uID0gJWQsIEdMdWludCB2MCA9ICV1LCBHTHVpbnQgdjEgPSAldSwgR0x1aW50IHYy
ID0gIgorICAgICAgICAiJXUsIEdMdWludCB2MyA9ICV1KSIsCisgICAgICAgIHByb2dyYW0sIGxv
Y2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5v
dCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgfQorICAgICAgICBVTklNUExFTUVOVEVEKCk7Cisg
ICAgfQorfQorCit2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMWYoR0x1aW50IHByb2dy
YW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwKQoreworICAgIEVWRU5UKCIoR0x1aW50IHBy
b2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xmbG9hdCB2MCA9ICVnKSIsIHByb2dy
YW0sIGxvY2F0aW9uLCB2MCk7CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBs
ZW1lbnRlZCIpKTsKKyAgICAgICAgfQorICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQor
fQorCit2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMmYoR0x1aW50IHByb2dyYW0sIEdM
aW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwLCBHTGZsb2F0IHYxKQoreworICAgIEVWRU5UKCIoR0x1
aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xmbG9hdCB2MCA9ICVnLCBH
TGZsb2F0IHYxID0gJWcpIiwgcHJvZ3JhbSwKKyAgICAgICAgICBsb2NhdGlvbiwgdjAsIHYxKTsK
KyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYg
KGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAg
ICB9CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5U
UlkKK1Byb2dyYW1Vbmlmb3JtM2YoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGZs
b2F0IHYwLCBHTGZsb2F0IHYxLCBHTGZsb2F0IHYyKQoreworICAgIEVWRU5UKAorICAgICAgICAi
KEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMZmxvYXQgdjAgPSAl
ZywgR0xmbG9hdCB2MSA9ICVnLCBHTGZsb2F0IHYyID0gIgorICAgICAgICAiJWcpIiwKKyAgICAg
ICAgcHJvZ3JhbSwgbG9jYXRpb24sIHYwLCB2MSwgdjIpOworICAgIENvbnRleHQgKmNvbnRleHQg
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAg
ICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRy
eSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgIH0KKyAgICAgICAgVU5JTVBMRU1F
TlRFRCgpOworICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWQorUHJvZ3JhbVVuaWZvcm00ZihH
THVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgdjAsIEdMZmxvYXQgdjEsIEdM
ZmxvYXQgdjIsIEdMZmxvYXQgdjMpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0x1aW50IHBy
b2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xmbG9hdCB2MCA9ICVnLCBHTGZsb2F0
IHYxID0gJWcsIEdMZmxvYXQgdjIgPSAiCisgICAgICAgICIlZywgR0xmbG9hdCB2MyA9ICVnKSIs
CisgICAgICAgIHByb2dyYW0sIGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CisgICAgQ29udGV4
dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQor
ICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAgICB7
CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgfQorICAgICAg
ICBVTklNUExFTUVOVEVEKCk7CisgICAgfQorfQorCit2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1V
bmlmb3JtMWl2KEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xpbnQgKnZhbHVlKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdMdWludCBwcm9ncmFtID0g
JXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0xpbnQq
IHZhbHVlID0gIgorICAgICAgICAiMHglMC44cCkiLAorICAgICAgICBwcm9ncmFtLCBsb2NhdGlv
biwgY291bnQsIHZhbHVlKTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxl
bWVudGVkIikpOworICAgICAgICB9CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9Cit9
CisKK3ZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0yaXYoR0x1aW50IHByb2dyYW0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUpCit7CisgICAgRVZFTlQo
CisgICAgICAgICIoR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xz
aXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGludCogdmFsdWUgPSAiCisgICAgICAgICIweCUwLjhw
KSIsCisgICAgICAgIHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgIENvbnRl
eHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkK
KyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAg
eworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgIH0KKyAgICAg
ICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBQcm9ncmFt
VW5pZm9ybTNpdihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMaW50ICp2YWx1ZSkKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQgcHJvZ3JhbSA9
ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0IEdMaW50
KiB2YWx1ZSA9ICIKKyAgICAgICAgIjB4JTAuOHApIiwKKyAgICAgICAgcHJvZ3JhbSwgbG9jYXRp
b24sIGNvdW50LCB2YWx1ZSk7CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBs
ZW1lbnRlZCIpKTsKKyAgICAgICAgfQorICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQor
fQorCit2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtNGl2KEdMdWludCBwcm9ncmFtLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlKQoreworICAgIEVWRU5U
KAorICAgICAgICAiKEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdM
c2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0xpbnQqIHZhbHVlID0gIgorICAgICAgICAiMHglMC44
cCkiLAorICAgICAgICBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICBDb250
ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQp
CisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICB9CisgICAg
ICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgUHJvZ3Jh
bVVuaWZvcm0xdWl2KEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0x1aW50ICp2YWx1ZSkKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQgcHJv
Z3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0
IEdMdWludCogdmFsdWUgPSAiCisgICAgICAgICIweCUwLjhwKSIsCisgICAgICAgIHByb2dyYW0s
IGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICgh
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBu
b3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgIH0KKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTJ1aXYoR0x1aW50IHBy
b2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlKQor
eworICAgIEVWRU5UKAorICAgICAgICAiKEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0
aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0x1aW50KiB2YWx1ZSA9ICIKKyAg
ICAgICAgIjB4JTAuOHApIiwKKyAgICAgICAgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCB2YWx1
ZSk7CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAg
IGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAg
ICAgICAgfQorICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQorfQorCit2b2lkIEdMX0FQ
SUVOVFJZIFByb2dyYW1Vbmlmb3JtM3VpdihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpCit7CisgICAgRVZFTlQoCisgICAgICAg
ICIoR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3Vu
dCA9ICVkLCBjb25zdCBHTHVpbnQqIHZhbHVlID0gIgorICAgICAgICAiMHglMC44cCkiLAorICAg
ICAgICBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICBDb250ZXh0ICpjb250
ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgewor
ICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAi
RW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICB9CisgICAgICAgIFVOSU1Q
TEVNRU5URUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm00
dWl2KEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1
aW50ICp2YWx1ZSkKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQgcHJvZ3JhbSA9ICV1
LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0IEdMdWludCog
dmFsdWUgPSAiCisgICAgICAgICIweCUwLjhwKSIsCisgICAgICAgIHByb2dyYW0sIGxvY2F0aW9u
LCBjb3VudCwgdmFsdWUpOworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVt
ZW50ZWQiKSk7CisgICAgICAgIH0KKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0KK30K
Kwordm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTFmdihHTHVpbnQgcHJvZ3JhbSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQoreworICAgIEVWRU5U
KAorICAgICAgICAiKEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdM
c2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0xmbG9hdCogdmFsdWUgPSAiCisgICAgICAgICIweCUw
LjhwKSIsCisgICAgICAgIHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgIENv
bnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4
dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAg
ICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgIH0KKyAg
ICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBQcm9n
cmFtVW5pZm9ybTJmdihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnZhbHVlKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdMdWludCBwcm9n
cmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3Qg
R0xmbG9hdCogdmFsdWUgPSAiCisgICAgICAgICIweCUwLjhwKSIsCisgICAgICAgIHByb2dyYW0s
IGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICgh
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBu
b3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgIH0KKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTNmdihHTHVpbnQgcHJv
Z3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQorewor
ICAgIEVWRU5UKAorICAgICAgICAiKEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9u
ID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0xmbG9hdCogdmFsdWUgPSAiCisgICAg
ICAgICIweCUwLjhwKSIsCisgICAgICAgIHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUp
OworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBp
ZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAg
ICAgIH0KKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0KK30KKwordm9pZCBHTF9BUElF
TlRSWSBQcm9ncmFtVW5pZm9ybTRmdihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdM
dWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAl
ZCwgY29uc3QgR0xmbG9hdCogdmFsdWUgPSAiCisgICAgICAgICIweCUwLjhwKSIsCisgICAgICAg
IHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgIENvbnRleHQgKmNvbnRleHQg
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAg
ICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRy
eSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgIH0KKyAgICAgICAgVU5JTVBMRU1F
TlRFRCgpOworICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJp
eDJmdihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQoreworICAgIEVWRU5UKAorICAgICAg
ICAiKEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291
bnQgPSAlZCwgR0xib29sZWFuIHRyYW5zcG9zZSA9ICV1LCAiCisgICAgICAgICJjb25zdCBHTGZs
b2F0KiB2YWx1ZSA9IDB4JTAuOHApIiwKKyAgICAgICAgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50
LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGlt
cGxlbWVudGVkIikpOworICAgICAgICB9CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9
Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnYoR0x1aW50IHBy
b2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xl
YW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp2YWx1ZSkKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQgcHJv
Z3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIEdMYm9v
bGVhbiB0cmFuc3Bvc2UgPSAldSwgIgorICAgICAgICAiY29uc3QgR0xmbG9hdCogdmFsdWUgPSAw
eCUwLjhwKSIsCisgICAgICAgIHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2
YWx1ZSk7CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwor
ICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsK
KyAgICAgICAgfQorICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQorfQorCit2b2lkIEdM
X0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2KEdMdWludCBwcm9ncmFtLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
dmFsdWUpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0x1aW50IHByb2dyYW0gPSAldSwgR0xp
bnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTGJvb2xlYW4gdHJhbnNwb3Nl
ID0gJXUsICIKKyAgICAgICAgImNvbnN0IEdMZmxvYXQqIHZhbHVlID0gMHglMC44cCkiLAorICAg
ICAgICBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgIENv
bnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4
dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAg
ICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgIH0KKyAg
ICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBQcm9n
cmFtVW5pZm9ybU1hdHJpeDJ4M2Z2KEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1
ZSkKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBs
b2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UgPSAl
dSwgIgorICAgICAgICAiY29uc3QgR0xmbG9hdCogdmFsdWUgPSAweCUwLjhwKSIsCisgICAgICAg
IHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgQ29udGV4
dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQor
ICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAgICB7
CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgfQorICAgICAg
ICBVTklNUExFTUVOVEVEKCk7CisgICAgfQorfQorCit2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1V
bmlmb3JtTWF0cml4M3gyZnYoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQor
eworICAgIEVWRU5UKAorICAgICAgICAiKEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0
aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xib29sZWFuIHRyYW5zcG9zZSA9ICV1LCAi
CisgICAgICAgICJjb25zdCBHTGZsb2F0KiB2YWx1ZSA9IDB4JTAuOHApIiwKKyAgICAgICAgcHJv
Z3JhbSwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICBDb250ZXh0ICpj
b250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAg
eworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICB9CisgICAgICAgIFVO
SU1QTEVNRU5URUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZv
cm1NYXRyaXgyeDRmdihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit7Cisg
ICAgRVZFTlQoCisgICAgICAgICIoR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24g
PSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTGJvb2xlYW4gdHJhbnNwb3NlID0gJXUsICIKKyAg
ICAgICAgImNvbnN0IEdMZmxvYXQqIHZhbHVlID0gMHglMC44cCkiLAorICAgICAgICBwcm9ncmFt
LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgIENvbnRleHQgKmNvbnRl
eHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7Cisg
ICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgeworICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJF
bnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgIH0KKyAgICAgICAgVU5JTVBM
RU1FTlRFRCgpOworICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1h
dHJpeDR4MmZ2KEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3sKKyAgICBF
VkVOVCgKKyAgICAgICAgIihHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVk
LCBHTHNpemVpIGNvdW50ID0gJWQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UgPSAldSwgIgorICAgICAg
ICAiY29uc3QgR0xmbG9hdCogdmFsdWUgPSAweCUwLjhwKSIsCisgICAgICAgIHByb2dyYW0sIGxv
Y2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgQ29udGV4dCAqY29udGV4dCA9
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAg
ICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAgICB7CisgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5
IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgfQorICAgICAgICBVTklNUExFTUVO
VEVEKCk7CisgICAgfQorfQorCit2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4
M3g0ZnYoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQoreworICAgIEVWRU5U
KAorICAgICAgICAiKEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdM
c2l6ZWkgY291bnQgPSAlZCwgR0xib29sZWFuIHRyYW5zcG9zZSA9ICV1LCAiCisgICAgICAgICJj
b25zdCBHTGZsb2F0KiB2YWx1ZSA9IDB4JTAuOHApIiwKKyAgICAgICAgcHJvZ3JhbSwgbG9jYXRp
b24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBp
ZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9p
bnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICB9CisgICAgICAgIFVOSU1QTEVNRU5URUQo
KTsKKyAgICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNm
dihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit7CisgICAgRVZFTlQoCisg
ICAgICAgICIoR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXpl
aSBjb3VudCA9ICVkLCBHTGJvb2xlYW4gdHJhbnNwb3NlID0gJXUsICIKKyAgICAgICAgImNvbnN0
IEdMZmxvYXQqIHZhbHVlID0gMHglMC44cCkiLAorICAgICAgICBwcm9ncmFtLCBsb2NhdGlvbiwg
Y291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICgh
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBu
b3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgIH0KKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBWYWxpZGF0ZVByb2dyYW1QaXBlbGluZShHTHVp
bnQgcGlwZWxpbmUpCit7CisgICAgRVZFTlQoIihHTHVpbnQgcGlwZWxpbmUgPSAldSkiLCBwaXBl
bGluZSk7CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwor
ICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsK
KyAgICAgICAgfQorICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQorfQorCit2b2lkIEdM
X0FQSUVOVFJZIEdldFByb2dyYW1QaXBlbGluZUluZm9Mb2coR0x1aW50IHBpcGVsaW5lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpp
bmZvTG9nKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdMdWludCBwaXBlbGluZSA9ICV1LCBH
THNpemVpIGJ1ZlNpemUgPSAlZCwgR0xzaXplaSogbGVuZ3RoID0gMHglMC44cCwgR0xjaGFyKiBp
bmZvTG9nID0gIgorICAgICAgICAiMHglMC44cCkiLAorICAgICAgICBwaXBlbGluZSwgYnVmU2l6
ZSwgbGVuZ3RoLCBpbmZvTG9nKTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGlt
cGxlbWVudGVkIikpOworICAgICAgICB9CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9
Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgQmluZEltYWdlVGV4dHVyZShHTHVpbnQgdW5pdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdGV4dHVyZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gbGF5ZXJlZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsYXllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gYWNjZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBmb3JtYXQpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0x1aW50IHVuaXQgPSAldSwg
R0x1aW50IHRleHR1cmUgPSAldSwgR0xpbnQgbGV2ZWwgPSAlZCwgR0xib29sZWFuIGxheWVyZWQg
PSAldSwgR0xpbnQgIgorICAgICAgICAibGF5ZXIgPSAlZCwgR0xlbnVtIGFjY2VzcyA9IDB4JVgs
IEdMZW51bSBmb3JtYXQgPSAweCVYKSIsCisgICAgICAgIHVuaXQsIHRleHR1cmUsIGxldmVsLCBs
YXllcmVkLCBsYXllciwgYWNjZXNzLCBmb3JtYXQpOworICAgIENvbnRleHQgKmNvbnRleHQgPSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAg
IGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgeworICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBw
b2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgIH0KKyAgICAgICAgVU5JTVBMRU1FTlRF
RCgpOworICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBHZXRCb29sZWFuaV92KEdMZW51bSB0
YXJnZXQsIEdMdWludCBpbmRleCwgR0xib29sZWFuICpkYXRhKQoreworICAgIEVWRU5UKCIoR0xl
bnVtIHRhcmdldCA9IDB4JVgsIEdMdWludCBpbmRleCA9ICV1LCBHTGJvb2xlYW4qIGRhdGEgPSAw
eCUwLjhwKSIsIHRhcmdldCwgaW5kZXgsCisgICAgICAgICAgZGF0YSk7CisKKyAgICBDb250ZXh0
ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisg
ICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRl
R2V0Qm9vbGVhbmlfdihjb250ZXh0LCB0YXJnZXQsIGluZGV4LCBkYXRhKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPmdldEJvb2xl
YW5pX3YodGFyZ2V0LCBpbmRleCwgZGF0YSk7CisgICAgfQorfQorCit2b2lkIEdMX0FQSUVOVFJZ
IE1lbW9yeUJhcnJpZXIoR0xiaXRmaWVsZCBiYXJyaWVycykKK3sKKyAgICBFVkVOVCgiKEdMYml0
ZmllbGQgYmFycmllcnMgPSAweCVYKSIsIGJhcnJpZXJzKTsKKyAgICBDb250ZXh0ICpjb250ZXh0
ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAg
ICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50
cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICB9CisgICAgICAgIFVOSU1QTEVN
RU5URUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgTWVtb3J5QmFycmllckJ5UmVn
aW9uKEdMYml0ZmllbGQgYmFycmllcnMpCit7CisgICAgRVZFTlQoIihHTGJpdGZpZWxkIGJhcnJp
ZXJzID0gMHglWCkiLCBiYXJyaWVycyk7CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5v
dCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgfQorICAgICAgICBVTklNUExFTUVOVEVEKCk7Cisg
ICAgfQorfQorCit2b2lkIEdMX0FQSUVOVFJZIFRleFN0b3JhZ2UyRE11bHRpc2FtcGxlKEdMZW51
bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgc2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xib29sZWFuIGZpeGVkc2FtcGxlbG9jYXRpb25zKQoreworICAgIEVWRU5UKAorICAg
ICAgICAiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTHNpemVpIHNhbXBsZXMgPSAlZCwgR0xlbnVt
IGludGVybmFsZm9ybWF0ID0gMHglWCwgR0xzaXplaSB3aWR0aCAiCisgICAgICAgICI9ICVkLCBH
THNpemVpIGhlaWdodCA9ICVkLCBHTGJvb2xlYW4gZml4ZWRzYW1wbGVsb2NhdGlvbnMgPSAldSki
LAorICAgICAgICB0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBmaXhlZHNhbXBsZWxvY2F0aW9ucyk7CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5v
dCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgfQorICAgICAgICBVTklNUExFTUVOVEVEKCk7Cisg
ICAgfQorfQorCit2b2lkIEdMX0FQSUVOVFJZIEdldE11bHRpc2FtcGxlZnYoR0xlbnVtIHBuYW1l
LCBHTHVpbnQgaW5kZXgsIEdMZmxvYXQgKnZhbCkKK3sKKyAgICBFVkVOVCgiKEdMZW51bSBwbmFt
ZSA9IDB4JVgsIEdMdWludCBpbmRleCA9ICV1LCBHTGZsb2F0KiB2YWwgPSAweCUwLjhwKSIsIHBu
YW1lLCBpbmRleCwgdmFsKTsKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgR0xfQVBJ
RU5UUlkgU2FtcGxlTWFza2koR0x1aW50IG1hc2tOdW1iZXIsIEdMYml0ZmllbGQgbWFzaykKK3sK
KyAgICBFVkVOVCgiKEdMdWludCBtYXNrTnVtYmVyID0gJXUsIEdMYml0ZmllbGQgbWFzayA9IDB4
JVgpIiwgbWFza051bWJlciwgbWFzayk7CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5v
dCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgfQorICAgICAgICBVTklNUExFTUVOVEVEKCk7Cisg
ICAgfQorfQorCit2b2lkIEdMX0FQSUVOVFJZIEdldFRleExldmVsUGFyYW1ldGVyaXYoR0xlbnVt
IHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKK3sKKyAg
ICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGludCBsZXZlbCA9ICVkLCBHTGVudW0g
cG5hbWUgPSAweCVYLCBHTGludCogcGFyYW1zID0gMHglMC44cCkiLAorICAgICAgICAgIHRhcmdl
dCwgbGV2ZWwsIHBuYW1lLCBwYXJhbXMpOworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwordm9p
ZCBHTF9BUElFTlRSWSBHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2KEdMZW51bSB0YXJnZXQsIEdMaW50
IGxldmVsLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcykKK3sKKyAgICBFVkVOVCgKKyAg
ICAgICAgIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xpbnQgbGV2ZWwgPSAlZCwgR0xlbnVtIHBu
YW1lID0gMHglWCwgR0xmbG9hdCogcGFyYW1zID0gMHglMC44cCkiLAorICAgICAgICB0YXJnZXQs
IGxldmVsLCBwbmFtZSwgcGFyYW1zKTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90
IGltcGxlbWVudGVkIikpOworICAgICAgICB9CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgQmluZFZlcnRleEJ1ZmZlcihHTHVpbnQgYmluZGlu
Z2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBidWZmZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgb2Zmc2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlKQoreworICAgIEVW
RU5UKAorICAgICAgICAiKEdMdWludCBiaW5kaW5naW5kZXggPSAldSwgR0x1aW50IGJ1ZmZlciA9
ICV1LCBHTGludHB0ciBvZmZzZXQgPSAlZCwgR0xzaXplaSBzdHJpZGUgPSAlZCkiLAorICAgICAg
ICBiaW5kaW5naW5kZXgsIGJ1ZmZlciwgb2Zmc2V0LCBzdHJpZGUpOworICAgIENvbnRleHQgKmNv
bnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7
CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04s
ICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgIH0KKyAgICAgICAgVU5J
TVBMRU1FTlRFRCgpOworICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJG
b3JtYXQoR0x1aW50IGF0dHJpYmluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFu
IG5vcm1hbGl6ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
cmVsYXRpdmVvZmZzZXQpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0x1aW50IGF0dHJpYmlu
ZGV4ID0gJXUsIEdMaW50IHNpemUgPSAlZCwgR0xlbnVtIHR5cGUgPSAweCVYLCBHTGJvb2xlYW4g
bm9ybWFsaXplZCA9ICV1LCAiCisgICAgICAgICJHTHVpbnQgcmVsYXRpdmVvZmZzZXQgPSAldSki
LAorICAgICAgICBhdHRyaWJpbmRleCwgc2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgcmVsYXRpdmVv
ZmZzZXQpOworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsK
KyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7
CisgICAgICAgIH0KKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0KK30KKwordm9pZCBH
TF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJJRm9ybWF0KEdMdWludCBhdHRyaWJpbmRleCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCByZWxhdGl2ZW9mZnNldCkKK3sKKyAgICBFVkVOVCgK
KyAgICAgICAgIihHTHVpbnQgYXR0cmliaW5kZXggPSAldSwgR0xpbnQgc2l6ZSA9ICVkLCBHTGVu
dW0gdHlwZSA9IDB4JVgsIEdMdWludCByZWxhdGl2ZW9mZnNldCA9ICIKKyAgICAgICAgIiV1KSIs
CisgICAgICAgIGF0dHJpYmluZGV4LCBzaXplLCB0eXBlLCByZWxhdGl2ZW9mZnNldCk7CisgICAg
Q29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250
ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAg
ICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgfQor
ICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQorfQorCit2b2lkIEdMX0FQSUVOVFJZIFZl
cnRleEF0dHJpYkJpbmRpbmcoR0x1aW50IGF0dHJpYmluZGV4LCBHTHVpbnQgYmluZGluZ2luZGV4
KQoreworICAgIEVWRU5UKCIoR0x1aW50IGF0dHJpYmluZGV4ID0gJXUsIEdMdWludCBiaW5kaW5n
aW5kZXggPSAldSkiLCBhdHRyaWJpbmRleCwgYmluZGluZ2luZGV4KTsKKyAgICBDb250ZXh0ICpj
b250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAg
eworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICB9CisgICAgICAgIFVO
SU1QTEVNRU5URUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QmluZGlu
Z0Rpdmlzb3IoR0x1aW50IGJpbmRpbmdpbmRleCwgR0x1aW50IGRpdmlzb3IpCit7CisgICAgRVZF
TlQoIihHTHVpbnQgYmluZGluZ2luZGV4ID0gJXUsIEdMdWludCBkaXZpc29yID0gJXUpIiwgYmlu
ZGluZ2luZGV4LCBkaXZpc29yKTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGlt
cGxlbWVudGVkIikpOworICAgICAgICB9CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9
Cit9Cit9ICAvLyBuYW1lc3BhY2UgZ2wKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfM18xLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzEuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2Vu
dHJ5X3BvaW50c19nbGVzXzNfMS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjI5IEBACisv
LworLy8gQ29weXJpZ2h0KGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworCisvLyBlbnRyeV9wb2ludHNfZ2xlc18zXzEuaCA6IERlZmluZXMgdGhlIEdM
RVMgMy4xIGVudHJ5IHBvaW50cy4KKworI2lmbmRlZiBMSUJHTEVTVjJfRU5UUllQT0lOVEdMRVMz
MV9IXworI2RlZmluZSBMSUJHTEVTVjJfRU5UUllQT0lOVEdMRVMzMV9IXworCisjaW5jbHVkZSA8
R0xFUzMvZ2wzMS5oPgorI2luY2x1ZGUgPGV4cG9ydC5oPgorCisvLyB3ZSBpbmNsdWRlIHRoZSBw
bGF0Zm9ybS5oIGhlYWRlciBzaW5jZSBpdCB1bmRlZmluZXMgdGhlIGNvbmZsaWN0aW5nIE1lbW9y
eUJhcnJpZXIgbWFjcm8KKyNpbmNsdWRlICJjb21tb24vcGxhdGZvcm0uaCIKKworbmFtZXNwYWNl
IGdsCit7CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIERpc3BhdGNoQ29tcHV0ZShH
THVpbnQgbnVtR3JvdXBzWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgbnVtR3JvdXBzWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgbnVtR3JvdXBzWik7CitBTkdMRV9FWFBPUlQgdm9pZCBH
TF9BUElFTlRSWSBEaXNwYXRjaENvbXB1dGVJbmRpcmVjdChHTGludHB0ciBpbmRpcmVjdCk7CitB
TkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBEcmF3QXJyYXlzSW5kaXJlY3QoR0xlbnVtIG1v
ZGUsIGNvbnN0IHZvaWQgKmluZGlyZWN0KTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZ
IERyYXdFbGVtZW50c0luZGlyZWN0KEdMZW51bSBtb2RlLCBHTGVudW0gdHlwZSwgY29uc3Qgdm9p
ZCAqaW5kaXJlY3QpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgRnJhbWVidWZmZXJQ
YXJhbWV0ZXJpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOworQU5H
TEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdihHTGVu
dW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOworQU5HTEVfRVhQT1JUIHZv
aWQgR0xfQVBJRU5UUlkgR2V0UHJvZ3JhbUludGVyZmFjZWl2KEdMdWludCBwcm9ncmFtLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
cm9ncmFtSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKK0FOR0xFX0VYUE9SVCBHTHVp
bnQgR0xfQVBJRU5UUlkgR2V0UHJvZ3JhbVJlc291cmNlSW5kZXgoR0x1aW50IHByb2dyYW0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwcm9ncmFtSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpOworQU5HTEVfRVhQT1JU
IHZvaWQgR0xfQVBJRU5UUlkgR2V0UHJvZ3JhbVJlc291cmNlTmFtZShHTHVpbnQgcHJvZ3JhbSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHByb2dyYW1JbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMY2hhciAqbmFtZSk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRQcm9ncmFt
UmVzb3VyY2VpdihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBwcm9wQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGVudW0gKnByb3BzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBh
cmFtcyk7CitBTkdMRV9FWFBPUlQgR0xpbnQgR0xfQVBJRU5UUlkgR2V0UHJvZ3JhbVJlc291cmNl
TG9jYXRpb24oR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xjaGFyICpuYW1lKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFVzZVByb2dy
YW1TdGFnZXMoR0x1aW50IHBpcGVsaW5lLCBHTGJpdGZpZWxkIHN0YWdlcywgR0x1aW50IHByb2dy
YW0pOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQWN0aXZlU2hhZGVyUHJvZ3JhbShH
THVpbnQgcGlwZWxpbmUsIEdMdWludCBwcm9ncmFtKTsKK0FOR0xFX0VYUE9SVCBHTHVpbnQgR0xf
QVBJRU5UUlkgQ3JlYXRlU2hhZGVyUHJvZ3JhbXYoR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMY2hhciAqY29uc3QgKnN0cmluZ3MpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkg
QmluZFByb2dyYW1QaXBlbGluZShHTHVpbnQgcGlwZWxpbmUpOworQU5HTEVfRVhQT1JUIHZvaWQg
R0xfQVBJRU5UUlkgRGVsZXRlUHJvZ3JhbVBpcGVsaW5lcyhHTHNpemVpIG4sIGNvbnN0IEdMdWlu
dCAqcGlwZWxpbmVzKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdlblByb2dyYW1Q
aXBlbGluZXMoR0xzaXplaSBuLCBHTHVpbnQgKnBpcGVsaW5lcyk7CitBTkdMRV9FWFBPUlQgR0xi
b29sZWFuIEdMX0FQSUVOVFJZIElzUHJvZ3JhbVBpcGVsaW5lKEdMdWludCBwaXBlbGluZSk7CitB
TkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtUGlwZWxpbmVpdihHTHVpbnQg
cGlwZWxpbmUsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CitBTkdMRV9FWFBPUlQgdm9p
ZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTFpKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2Nh
dGlvbiwgR0xpbnQgdjApOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVu
aWZvcm0yaShHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwLCBHTGludCB2
MSk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWQorUHJvZ3JhbVVuaWZvcm0zaShHTHVp
bnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwLCBHTGludCB2MSwgR0xpbnQgdjIp
OworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkKK1Byb2dyYW1Vbmlmb3JtNGkoR0x1aW50
IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCwgR0xpbnQgdjEsIEdMaW50IHYyLCBH
TGludCB2Myk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTF1
aShHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCk7CitBTkdMRV9FWFBP
UlQgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTJ1aShHTHVpbnQgcHJvZ3JhbSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IHYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IHYxKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZCitQcm9ncmFtVW5pZm9y
bTN1aShHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCwgR0x1aW50IHYx
LCBHTHVpbnQgdjIpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkKK1Byb2dyYW1Vbmlm
b3JtNHVpKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0x1aW50IHYwLCBHTHVpbnQg
djEsIEdMdWludCB2MiwgR0x1aW50IHYzKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZ
IFByb2dyYW1Vbmlmb3JtMWYoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0
IHYwKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMmYoR0x1
aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGZsb2F0IHYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGZsb2F0IHYxKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZ
CitQcm9ncmFtVW5pZm9ybTNmKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9h
dCB2MCwgR0xmbG9hdCB2MSwgR0xmbG9hdCB2Mik7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElF
TlRSWQorUHJvZ3JhbVVuaWZvcm00ZihHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdM
ZmxvYXQgdjAsIEdMZmxvYXQgdjEsIEdMZmxvYXQgdjIsIEdMZmxvYXQgdjMpOworQU5HTEVfRVhQ
T1JUIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0xaXYoR0x1aW50IHByb2dyYW0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGludCAqdmFsdWUpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkg
UHJvZ3JhbVVuaWZvcm0yaXYoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFs
dWUpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0zaXYoR0x1
aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUpOworQU5HTEVfRVhQT1JUIHZv
aWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm00aXYoR0x1aW50IHByb2dyYW0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGludCAqdmFsdWUpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3Jh
bVVuaWZvcm0xdWl2KEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1
ZSk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTJ1aXYoR0x1
aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlKTsKK0FOR0xFX0VYUE9S
VCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtM3VpdihHTHVpbnQgcHJvZ3JhbSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5U
UlkgUHJvZ3JhbVVuaWZvcm00dWl2KEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1
aW50ICp2YWx1ZSk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9y
bTFmdihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK0FOR0xF
X0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMmZ2KEdMdWludCBwcm9ncmFt
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJ
RU5UUlkgUHJvZ3JhbVVuaWZvcm0zZnYoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICp2YWx1ZSk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9y
bTRmdihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK0FOR0xF
X0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4MmZ2KEdMdWludCBw
cm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZmxvYXQgKnZhbHVlKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1V
bmlmb3JtTWF0cml4M2Z2KEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK0FOR0xFX0VYUE9SVCB2
b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2KEdMdWludCBwcm9ncmFtLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KnZhbHVlKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtTWF0
cml4MngzZnYoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitBTkdMRV9FWFBPUlQg
dm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmZ2KEdMdWludCBwcm9ncmFt
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xmbG9hdCAqdmFsdWUpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3Jh
bVVuaWZvcm1NYXRyaXgyeDRmdihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK0FO
R0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYoR0x1
aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJh
bnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElF
TlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGZ2KEdMdWludCBwcm9ncmFtLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
dmFsdWUpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm1NYXRy
aXg0eDNmdihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Ym9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK0FOR0xFX0VYUE9SVCB2
b2lkIEdMX0FQSUVOVFJZIFZhbGlkYXRlUHJvZ3JhbVBpcGVsaW5lKEdMdWludCBwaXBlbGluZSk7
CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtUGlwZWxpbmVJbmZvTG9n
KEdMdWludCBwaXBlbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hh
ciAqaW5mb0xvZyk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBCaW5kSW1hZ2VUZXh0
dXJlKEdMdWludCB1bml0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBsYXllcmVkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsYXllciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGFjY2VzcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCk7CitB
TkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRCb29sZWFuaV92KEdMZW51bSB0YXJnZXQs
IEdMdWludCBpbmRleCwgR0xib29sZWFuICpkYXRhKTsKKworQU5HTEVfRVhQT1JUIHZvaWQgR0xf
QVBJRU5UUlkgTWVtb3J5QmFycmllcihHTGJpdGZpZWxkIGJhcnJpZXJzKTsKK0FOR0xFX0VYUE9S
VCB2b2lkIEdMX0FQSUVOVFJZIE1lbW9yeUJhcnJpZXJCeVJlZ2lvbihHTGJpdGZpZWxkIGJhcnJp
ZXJzKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFRleFN0b3JhZ2UyRE11bHRpc2Ft
cGxlKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gZml4ZWRzYW1wbGVsb2NhdGlvbnMpOwor
QU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0TXVsdGlzYW1wbGVmdihHTGVudW0gcG5h
bWUsIEdMdWludCBpbmRleCwgR0xmbG9hdCAqdmFsKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQ
SUVOVFJZIFNhbXBsZU1hc2tpKEdMdWludCBtYXNrTnVtYmVyLCBHTGJpdGZpZWxkIG1hc2spOwor
QU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdihHTGVu
dW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKK0FOR0xFX0VYUE9S
VCB2b2lkIEdMX0FQSUVOVFJZIEdldFRleExldmVsUGFyYW1ldGVyZnYoR0xlbnVtIHRhcmdldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdM
X0FQSUVOVFJZIEJpbmRWZXJ0ZXhCdWZmZXIoR0x1aW50IGJpbmRpbmdpbmRleCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJ1ZmZlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgb2Zm
c2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIHN0cmlkZSk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJG
b3JtYXQoR0x1aW50IGF0dHJpYmluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIG5vcm1hbGl6ZWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHJlbGF0
aXZlb2Zmc2V0KTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYklG
b3JtYXQoR0x1aW50IGF0dHJpYmluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHJlbGF0aXZlb2Zmc2V0KTsK
K0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYkJpbmRpbmcoR0x1aW50
IGF0dHJpYmluZGV4LCBHTHVpbnQgYmluZGluZ2luZGV4KTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdM
X0FQSUVOVFJZIFZlcnRleEJpbmRpbmdEaXZpc29yKEdMdWludCBiaW5kaW5naW5kZXgsIEdMdWlu
dCBkaXZpc29yKTsKK307CisKKyNlbmRpZiAgLy8gTElCR0xFU1YyX0VOVFJZUE9JTlRHTEVTMzFf
SF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZ2xvYmFsX3N0
YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL2dsb2JhbF9zdGF0ZS5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZ2xvYmFsX3N0YXRlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTMzLDcgKzEzMyw3IEBAIENvbnRleHQgKkdldFZhbGlkR2xvYmFsQ29udGV4dCgpCiAgICAg
ewogICAgICAgICBpZiAoY29udGV4dC0+aXNDb250ZXh0TG9zdCgpKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwg
IkNvbnRleHQgaGFzIGJlZW4gbG9zdC4iKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkNvbnRleHQgaGFzIGJlZW4gbG9zdC4i
KSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICBlbHNl
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9s
aWJHTEVTdjIuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTksNiArOSw3
IEBACiAjaW5jbHVkZSAibGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzJfMC5oIgogI2luY2x1
ZGUgImxpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18yXzBfZXh0LmgiCiAjaW5jbHVkZSAibGli
R0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMC5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9lbnRy
eV9wb2ludHNfZ2xlc18zXzEuaCIKIAogI2luY2x1ZGUgImNvbW1vbi9ldmVudF90cmFjZXIuaCIK
IApAQCAtMTU2Miw0ICsxNTYzLDY2OSBAQCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UG9pbnRlcnZL
SFIoR0xlbnVtCiB7CiAgICAgcmV0dXJuIGdsOjpHZXRQb2ludGVydktIUihwbmFtZSwgcGFyYW1z
KTsKIH0KKwordm9pZCBHTF9BUElFTlRSWSBnbEJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTShH
THVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdMY2hhciAqbmFtZSkKK3sKKyAg
ICByZXR1cm4gZ2w6OkJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTShwcm9ncmFtLCBsb2NhdGlv
biwgbmFtZSk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xDb3ZlcmFnZU1vZHVsYXRpb25DSFJP
TUlVTShHTGVudW0gY29tcG9uZW50cykKK3sKKyAgICByZXR1cm4gZ2w6OkNvdmVyYWdlTW9kdWxh
dGlvbkNIUk9NSVVNKGNvbXBvbmVudHMpOworfQorCisvLyBDSFJPTUlVTV9wYXRoX3JlbmRlbmRl
cmluZwordm9pZCBHTF9BUElFTlRSWSBnbE1hdHJpeExvYWRmQ0hST01JVU0oR0xlbnVtIG1hdHJp
eE1vZGUsIGNvbnN0IEdMZmxvYXQgKm1hdHJpeCkKK3sKKyAgICBnbDo6TWF0cml4TG9hZGZDSFJP
TUlVTShtYXRyaXhNb2RlLCBtYXRyaXgpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsTWF0cml4
TG9hZElkZW50aXR5Q0hST01JVU0oR0xlbnVtIG1hdHJpeE1vZGUpCit7CisgICAgZ2w6Ok1hdHJp
eExvYWRJZGVudGl0eUNIUk9NSVVNKG1hdHJpeE1vZGUpOworfQorCitHTHVpbnQgR0xfQVBJRU5U
UlkgZ2xHZW5QYXRoc0NIUk9NSVVNKEdMc2l6ZWkgcmFuZ2UpCit7CisgICAgcmV0dXJuIGdsOjpH
ZW5QYXRoc0NIUk9NSVVNKHJhbmdlKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbERlbGV0ZVBh
dGhzQ0hST01JVU0oR0x1aW50IGZpcnN0LCBHTHNpemVpIHJhbmdlKQoreworICAgIGdsOjpEZWxl
dGVQYXRoc0NIUk9NSVVNKGZpcnN0LCByYW5nZSk7Cit9CisKK0dMYm9vbGVhbiBHTF9BUElFTlRS
WSBnbElzUGF0aENIUk9NSVVNKEdMdWludCBwYXRoKQoreworICAgIHJldHVybiBnbDo6SXNQYXRo
Q0hST01JVU0ocGF0aCk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xQYXRoQ29tbWFuZHNDSFJP
TUlVTShHTHVpbnQgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIG51bUNvbW1hbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMdWJ5dGUgKmNvbW1hbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29vcmRzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb29yZFR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqY29vcmRzKQoreworICAgIGdsOjpQYXRo
Q29tbWFuZHNDSFJPTUlVTShwYXRoLCBudW1Db21tYW5kcywgY29tbWFuZHMsIG51bUNvb3Jkcywg
Y29vcmRUeXBlLCBjb29yZHMpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsUGF0aFBhcmFtZXRl
cmZDSFJPTUlVTShHTHVpbnQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHZhbHVlKQorewor
ICAgIGdsOjpQYXRoUGFyYW1ldGVyZkNIUk9NSVVNKHBhdGgsIHBuYW1lLCB2YWx1ZSk7Cit9CisK
K3ZvaWQgR0xfQVBJRU5UUlkgZ2xQYXRoUGFyYW1ldGVyaUNIUk9NSVVNKEdMdWludCBwYXRoLCBH
TGVudW0gcG5hbWUsIEdMaW50IHZhbHVlKQoreworICAgIGdsOjpQYXRoUGFyYW1ldGVyaUNIUk9N
SVVNKHBhdGgsIHBuYW1lLCB2YWx1ZSk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRQYXRo
UGFyYW1ldGVyZnZDSFJPTUlVTShHTHVpbnQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICp2
YWx1ZSkKK3sKKyAgICBnbDo6R2V0UGF0aFBhcmFtZXRlcmZDSFJPTUlVTShwYXRoLCBwbmFtZSwg
dmFsdWUpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UGF0aFBhcmFtZXRlcml2Q0hST01J
VU0oR0x1aW50IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnZhbHVlKQoreworICAgIGdsOjpH
ZXRQYXRoUGFyYW1ldGVyaUNIUk9NSVVNKHBhdGgsIHBuYW1lLCB2YWx1ZSk7Cit9CisKK3ZvaWQg
R0xfQVBJRU5UUlkgZ2xQYXRoU3RlbmNpbEZ1bmNDSFJPTUlVTShHTGVudW0gZnVuYywgR0xpbnQg
cmVmLCBHTHVpbnQgbWFzaykKK3sKKyAgICBnbDo6UGF0aFN0ZW5jaWxGdW5jQ0hST01JVU0oZnVu
YywgcmVmLCBtYXNrKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbFN0ZW5jaWxGaWxsUGF0aENI
Uk9NSVVNKEdMdWludCBwYXRoLCBHTGVudW0gZmlsbE1vZGUsIEdMdWludCBtYXNrKQoreworICAg
IGdsOjpTdGVuY2lsRmlsbFBhdGhDSFJPTUlVTShwYXRoLCBmaWxsTW9kZSwgbWFzayk7Cit9CisK
K3ZvaWQgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsU3Ryb2tlUGF0aENIUk9NSVVNKEdMdWludCBwYXRo
LCBHTGludCByZWZlcmVuY2UsIEdMdWludCBtYXNrKQoreworICAgIGdsOjpTdGVuY2lsU3Ryb2tl
UGF0aENIUk9NSVVNKHBhdGgsIHJlZmVyZW5jZSwgbWFzayk7Cit9CisKK3ZvaWQgR0xfQVBJRU5U
UlkgZ2xDb3ZlckZpbGxQYXRoQ0hST01JVU0oR0x1aW50IHBhdGgsIEdMZW51bSBjb3Zlck1vZGUp
Cit7CisgICAgZ2w6OkNvdmVyRmlsbFBhdGhDSFJPTUlVTShwYXRoLCBjb3Zlck1vZGUpOworfQor
Cit2b2lkIEdMX0FQSUVOVFJZIGdsQ292ZXJTdHJva2VQYXRoQ0hST01JVU0oR0x1aW50IHBhdGgs
IEdMZW51bSBjb3Zlck1vZGUpCit7CisgICAgZ2w6OkNvdmVyU3Ryb2tlUGF0aENIUk9NSVVNKHBh
dGgsIGNvdmVyTW9kZSk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsVGhlbkNvdmVy
RmlsbFBhdGhDSFJPTUlVTShHTHVpbnQgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNv
dmVyTW9kZSkKK3sKKyAgICBnbDo6U3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoQ0hST01JVU0ocGF0
aCwgZmlsbE1vZGUsIG1hc2ssIGNvdmVyTW9kZSk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xT
dGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aENIUk9NSVVNKEdMdWludCBwYXRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJl
bmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlKQoreworICAgIGdsOjpTdGVuY2lsVGhlbkNv
dmVyU3Ryb2tlUGF0aENIUk9NSVVNKHBhdGgsIHJlZmVyZW5jZSwgbWFzaywgY292ZXJNb2RlKTsK
K30KKwordm9pZCBHTF9BUElFTlRSWSBnbENvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTShH
THNpemVpIG51bVBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
Y292ZXJNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQorewor
ICAgIGdsOjpDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0obnVtUGF0aHMsIHBhdGhOYW1l
VHlwZSwgcGF0aHMsIHBhdGhCYXNlLCBjb3Zlck1vZGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpOworfQorCit2
b2lkIEdMX0FQSUVOVFJZIGdsQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oR0xzaXpl
aSBudW1QYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gY292ZXJNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVl
cykKK3sKKyAgICBnbDo6Q292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0obnVtUGF0aHMs
IHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlLCBjb3Zlck1vZGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVl
cyk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJP
TUlVTShHTHNpemVpIG51bVBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHBhdGhCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBmaWxsTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCit7CisgICAgZ2w6OlN0ZW5jaWxGaWxsUGF0aEluc3RhbmNl
ZENIUk9NSVVNKG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZSwgZmlsbE1v
ZGUsIG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5z
Zm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcyk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xTdGVu
Y2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKEdMc2l6ZWkgbnVtUGF0aHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0
aE5hbWVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFs
dWVzKQoreworICAgIGdsOjpTdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKG51bVBh
dGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZSwgcmVmZXJlbmNlLCBtYXNrLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVR5cGUsIHRy
YW5zZm9ybVZhbHVlcyk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsVGhlbkNvdmVy
RmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTShHTHNpemVpIG51bVBhdGhzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
YXRoTmFtZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBmaWxsTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292
ZXJNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRy
YW5zZm9ybVZhbHVlcykKK3sKKyAgICBnbDo6U3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFu
Y2VkQ0hST01JVU0obnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlLCBmaWxs
TW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWFzaywgY292ZXJNb2RlLCB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpOworfQorCit2
b2lkIEdMX0FQSUVOVFJZIGdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJP
TUlVTShHTHNpemVpIG51bVBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHZvaWQgKnBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
cmVmZXJlbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zv
cm1WYWx1ZXMpCit7CisgICAgZ2w6OlN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2Vk
Q0hST01JVU0obnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZSwg
bWFzaywgY292ZXJNb2RlLCB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVZhbHVlcyk7Cit9CisKK3ZvaWQg
R0xfQVBJRU5UUlkgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0oR0x1aW50IHBy
b2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpCit7CisgICAgZ2w6OkJpbmRGcmFn
bWVudElucHV0TG9jYXRpb25DSFJPTUlVTShwcm9ncmFtLCBsb2NhdGlvbiwgbmFtZSk7Cit9CisK
K3ZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShH
THVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZ2VuTW9kZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBjb21wb25l
bnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZmxvYXQgKmNvZWZmcykKK3sKKyAgICBnbDo6UHJvZ3JhbVBhdGhGcmFnbWVu
dElucHV0R2VuQ0hST01JVU0ocHJvZ3JhbSwgbG9jYXRpb24sIGdlbk1vZGUsIGNvbXBvbmVudHMs
IGNvZWZmcyk7Cit9CisKKy8vIEdMRVMgMy4xCit2b2lkIEdMX0FQSUVOVFJZIGdsRGlzcGF0Y2hD
b21wdXRlKEdMdWludCBudW1Hcm91cHNYLCBHTHVpbnQgbnVtR3JvdXBzWSwgR0x1aW50IG51bUdy
b3Vwc1opCit7CisgICAgZ2w6OkRpc3BhdGNoQ29tcHV0ZShudW1Hcm91cHNYLCBudW1Hcm91cHNZ
LCBudW1Hcm91cHNaKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbERpc3BhdGNoQ29tcHV0ZUlu
ZGlyZWN0KEdMaW50cHRyIGluZGlyZWN0KQoreworICAgIGdsOjpEaXNwYXRjaENvbXB1dGVJbmRp
cmVjdChpbmRpcmVjdCk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xEcmF3QXJyYXlzSW5kaXJl
Y3QoR0xlbnVtIG1vZGUsIGNvbnN0IHZvaWQgKmluZGlyZWN0KQoreworICAgIGdsOjpEcmF3QXJy
YXlzSW5kaXJlY3QobW9kZSwgaW5kaXJlY3QpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsRHJh
d0VsZW1lbnRzSW5kaXJlY3QoR0xlbnVtIG1vZGUsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICpp
bmRpcmVjdCkKK3sKKyAgICBnbDo6RHJhd0VsZW1lbnRzSW5kaXJlY3QobW9kZSwgdHlwZSwgaW5k
aXJlY3QpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsRnJhbWVidWZmZXJQYXJhbWV0ZXJpKEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCit7CisgICAgZ2w6OkZyYW1l
YnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lLCBwYXJhbSk7Cit9CisKK3ZvaWQgR0xfQVBJ
RU5UUlkgZ2xHZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBw
bmFtZSwgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBnbDo6R2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJp
dih0YXJnZXQsIHBuYW1lLCBwYXJhbXMpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UHJv
Z3JhbUludGVyZmFjZWl2KEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQoreworICAgIGdsOjpHZXRQ
cm9ncmFtSW50ZXJmYWNlaXYocHJvZ3JhbSwgcHJvZ3JhbUludGVyZmFjZSwgcG5hbWUsIHBhcmFt
cyk7Cit9CisKK0dMdWludCBHTF9BUElFTlRSWSBnbEdldFByb2dyYW1SZXNvdXJjZUluZGV4KEdM
dWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpCit7CisgICAgcmV0dXJuIGdsOjpH
ZXRQcm9ncmFtUmVzb3VyY2VJbmRleChwcm9ncmFtLCBwcm9ncmFtSW50ZXJmYWNlLCBuYW1lKTsK
K30KKwordm9pZCBHTF9BUElFTlRSWSBnbEdldFByb2dyYW1SZXNvdXJjZU5hbWUoR0x1aW50IHBy
b2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cHJvZ3JhbUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMY2hhciAqbmFtZSkKK3sKKyAgICBnbDo6R2V0UHJvZ3JhbVJlc291cmNlTmFt
ZShwcm9ncmFtLCBwcm9ncmFtSW50ZXJmYWNlLCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLCBuYW1l
KTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbEdldFByb2dyYW1SZXNvdXJjZWl2KEdMdWludCBw
cm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
cm9ncmFtSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIHByb3BDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGVudW0gKnByb3BzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBnbDo6R2V0UHJvZ3JhbVJlc291cmNlaXYo
cHJvZ3JhbSwgcHJvZ3JhbUludGVyZmFjZSwgaW5kZXgsIHByb3BDb3VudCwgcHJvcHMsIGJ1ZlNp
emUsIGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zKTsKK30KKwor
R0xpbnQgR0xfQVBJRU5UUlkgZ2xHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbihHTHVpbnQgcHJv
Z3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHByb2dyYW1JbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSkKK3sKKyAgICByZXR1cm4gZ2w6OkdldFBy
b2dyYW1SZXNvdXJjZUxvY2F0aW9uKHByb2dyYW0sIHByb2dyYW1JbnRlcmZhY2UsIG5hbWUpOwor
fQorCit2b2lkIEdMX0FQSUVOVFJZIGdsVXNlUHJvZ3JhbVN0YWdlcyhHTHVpbnQgcGlwZWxpbmUs
IEdMYml0ZmllbGQgc3RhZ2VzLCBHTHVpbnQgcHJvZ3JhbSkKK3sKKyAgICBnbDo6VXNlUHJvZ3Jh
bVN0YWdlcyhwaXBlbGluZSwgc3RhZ2VzLCBwcm9ncmFtKTsKK30KKwordm9pZCBHTF9BUElFTlRS
WSBnbEFjdGl2ZVNoYWRlclByb2dyYW0oR0x1aW50IHBpcGVsaW5lLCBHTHVpbnQgcHJvZ3JhbSkK
K3sKKyAgICBnbDo6QWN0aXZlU2hhZGVyUHJvZ3JhbShwaXBlbGluZSwgcHJvZ3JhbSk7Cit9CisK
K0dMdWludCBHTF9BUElFTlRSWSBnbENyZWF0ZVNoYWRlclByb2dyYW12KEdMZW51bSB0eXBlLCBH
THNpemVpIGNvdW50LCBjb25zdCBHTGNoYXIgKmNvbnN0ICpzdHJpbmdzKQoreworICAgIHJldHVy
biBnbDo6Q3JlYXRlU2hhZGVyUHJvZ3JhbXYodHlwZSwgY291bnQsIHN0cmluZ3MpOworfQorCit2
b2lkIEdMX0FQSUVOVFJZIGdsQmluZFByb2dyYW1QaXBlbGluZShHTHVpbnQgcGlwZWxpbmUpCit7
CisgICAgZ2w6OkJpbmRQcm9ncmFtUGlwZWxpbmUocGlwZWxpbmUpOworfQorCit2b2lkIEdMX0FQ
SUVOVFJZIGdsRGVsZXRlUHJvZ3JhbVBpcGVsaW5lcyhHTHNpemVpIG4sIGNvbnN0IEdMdWludCAq
cGlwZWxpbmVzKQoreworICAgIGdsOjpEZWxldGVQcm9ncmFtUGlwZWxpbmVzKG4sIHBpcGVsaW5l
cyk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xHZW5Qcm9ncmFtUGlwZWxpbmVzKEdMc2l6ZWkg
biwgR0x1aW50ICpwaXBlbGluZXMpCit7CisgICAgZ2w6OkdlblByb2dyYW1QaXBlbGluZXMobiwg
cGlwZWxpbmVzKTsKK30KKworR0xib29sZWFuIEdMX0FQSUVOVFJZIGdsSXNQcm9ncmFtUGlwZWxp
bmUoR0x1aW50IHBpcGVsaW5lKQoreworICAgIHJldHVybiBnbDo6SXNQcm9ncmFtUGlwZWxpbmUo
cGlwZWxpbmUpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UHJvZ3JhbVBpcGVsaW5laXYo
R0x1aW50IHBpcGVsaW5lLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCit7CisgICAgZ2w6
OkdldFByb2dyYW1QaXBlbGluZWl2KHBpcGVsaW5lLCBwbmFtZSwgcGFyYW1zKTsKK30KKwordm9p
ZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtMWkoR0x1aW50IHByb2dyYW0sIEdMaW50IGxv
Y2F0aW9uLCBHTGludCB2MCkKK3sKKyAgICBnbDo6UHJvZ3JhbVVuaWZvcm0xaShwcm9ncmFtLCBs
b2NhdGlvbiwgdjApOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm0yaShH
THVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwLCBHTGludCB2MSkKK3sKKyAg
ICBnbDo6UHJvZ3JhbVVuaWZvcm0yaShwcm9ncmFtLCBsb2NhdGlvbiwgdjAsIHYxKTsKK30KKwor
dm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtM2koR0x1aW50IHByb2dyYW0sIEdMaW50
IGxvY2F0aW9uLCBHTGludCB2MCwgR0xpbnQgdjEsIEdMaW50IHYyKQoreworICAgIGdsOjpQcm9n
cmFtVW5pZm9ybTNpKHByb2dyYW0sIGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKK30KKwordm9pZCBH
TF9BUElFTlRSWQorZ2xQcm9ncmFtVW5pZm9ybTRpKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2Nh
dGlvbiwgR0xpbnQgdjAsIEdMaW50IHYxLCBHTGludCB2MiwgR0xpbnQgdjMpCit7CisgICAgZ2w6
OlByb2dyYW1Vbmlmb3JtNGkocHJvZ3JhbSwgbG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKK30K
Kwordm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtMXVpKEdMdWludCBwcm9ncmFtLCBH
TGludCBsb2NhdGlvbiwgR0x1aW50IHYwKQoreworICAgIGdsOjpQcm9ncmFtVW5pZm9ybTF1aShw
cm9ncmFtLCBsb2NhdGlvbiwgdjApOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVu
aWZvcm0ydWkoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWlu
dCB2MSkKK3sKKyAgICBnbDo6UHJvZ3JhbVVuaWZvcm0ydWkocHJvZ3JhbSwgbG9jYXRpb24sIHYw
LCB2MSk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkKK2dsUHJvZ3JhbVVuaWZvcm0zdWkoR0x1aW50
IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2MSwgR0x1aW50IHYy
KQoreworICAgIGdsOjpQcm9ncmFtVW5pZm9ybTN1aShwcm9ncmFtLCBsb2NhdGlvbiwgdjAsIHYx
LCB2Mik7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkKK2dsUHJvZ3JhbVVuaWZvcm00dWkoR0x1aW50
IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2MSwgR0x1aW50IHYy
LCBHTHVpbnQgdjMpCit7CisgICAgZ2w6OlByb2dyYW1Vbmlmb3JtNHVpKHByb2dyYW0sIGxvY2F0
aW9uLCB2MCwgdjEsIHYyLCB2Myk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5p
Zm9ybTFmKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCkKK3sKKyAg
ICBnbDo6UHJvZ3JhbVVuaWZvcm0xZihwcm9ncmFtLCBsb2NhdGlvbiwgdjApOworfQorCit2b2lk
IEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm0yZihHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9j
YXRpb24sIEdMZmxvYXQgdjAsIEdMZmxvYXQgdjEpCit7CisgICAgZ2w6OlByb2dyYW1Vbmlmb3Jt
MmYocHJvZ3JhbSwgbG9jYXRpb24sIHYwLCB2MSk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkKK2ds
UHJvZ3JhbVVuaWZvcm0zZihHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQg
djAsIEdMZmxvYXQgdjEsIEdMZmxvYXQgdjIpCit7CisgICAgZ2w6OlByb2dyYW1Vbmlmb3JtM2Yo
cHJvZ3JhbSwgbG9jYXRpb24sIHYwLCB2MSwgdjIpOworfQorCit2b2lkIEdMX0FQSUVOVFJZCitn
bFByb2dyYW1Vbmlmb3JtNGYoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0
IHYwLCBHTGZsb2F0IHYxLCBHTGZsb2F0IHYyLCBHTGZsb2F0IHYzKQoreworICAgIGdsOjpQcm9n
cmFtVW5pZm9ybTRmKHByb2dyYW0sIGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7Cit9CisKK3Zv
aWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTFpdihHTHVpbnQgcHJvZ3JhbSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSkKK3sKKyAgICBnbDo6
UHJvZ3JhbVVuaWZvcm0xaXYocHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7Cit9CisK
K3ZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTJpdihHTHVpbnQgcHJvZ3JhbSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSkKK3sKKyAgICBn
bDo6UHJvZ3JhbVVuaWZvcm0yaXYocHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7Cit9
CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTNpdihHTHVpbnQgcHJvZ3JhbSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSkKK3sKKyAg
ICBnbDo6UHJvZ3JhbVVuaWZvcm0zaXYocHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7
Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTRpdihHTHVpbnQgcHJvZ3Jh
bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSkKK3sK
KyAgICBnbDo6UHJvZ3JhbVVuaWZvcm00aXYocHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCB2YWx1
ZSk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTF1aXYoR0x1aW50IHBy
b2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZh
bHVlKQoreworICAgIGdsOjpQcm9ncmFtVW5pZm9ybTF1aXYocHJvZ3JhbSwgbG9jYXRpb24sIGNv
dW50LCB2YWx1ZSk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTJ1aXYo
R0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THVpbnQgKnZhbHVlKQoreworICAgIGdsOjpQcm9ncmFtVW5pZm9ybTJ1aXYocHJvZ3JhbSwgbG9j
YXRpb24sIGNvdW50LCB2YWx1ZSk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5p
Zm9ybTN1aXYoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHVpbnQgKnZhbHVlKQoreworICAgIGdsOjpQcm9ncmFtVW5pZm9ybTN1aXYocHJv
Z3JhbSwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xQ
cm9ncmFtVW5pZm9ybTR1aXYoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlKQoreworICAgIGdsOjpQcm9ncmFtVW5pZm9y
bTR1aXYocHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7Cit9CisKK3ZvaWQgR0xfQVBJ
RU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTFmdihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQoreworICAgIGdsOjpQcm9ncmFt
VW5pZm9ybTFmdihwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKK30KKwordm9pZCBH
TF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtMmZ2KEdMdWludCBwcm9ncmFtLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit7CisgICAgZ2w6OlBy
b2dyYW1Vbmlmb3JtMmZ2KHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworfQorCit2
b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm0zZnYoR0x1aW50IHByb2dyYW0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3sKKyAgICBn
bDo6UHJvZ3JhbVVuaWZvcm0zZnYocHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7Cit9
CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTRmdihHTHVpbnQgcHJvZ3JhbSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQorewor
ICAgIGdsOjpQcm9ncmFtVW5pZm9ybTRmdihwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsIHZhbHVl
KTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtTWF0cml4MmZ2KEdMdWlu
dCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3sKKyAgICBnbDo6UHJvZ3JhbVVuaWZv
cm1NYXRyaXgyZnYocHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsK
K30KKwordm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtTWF0cml4M2Z2KEdMdWludCBw
cm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3sKKyAgICBnbDo6UHJvZ3JhbVVuaWZvcm1N
YXRyaXgzZnYocHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKK30K
Kwordm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2KEdMdWludCBwcm9n
cmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi
b29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3sKKyAgICBnbDo6UHJvZ3JhbVVuaWZvcm1NYXRy
aXg0ZnYocHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKK30KKwor
dm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtTWF0cml4MngzZnYoR0x1aW50IHByb2dy
YW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
b2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit7CisgICAgZ2w6OlByb2dyYW1Vbmlm
b3JtTWF0cml4MngzZnYocHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVl
KTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYoR0x1
aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit7CisgICAgZ2w6OlBy
b2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYocHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bv
c2UsIHZhbHVlKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtTWF0cml4
Mng0ZnYoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit7Cisg
ICAgZ2w6OlByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnYocHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50
LCB0cmFuc3Bvc2UsIHZhbHVlKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlm
b3JtTWF0cml4NHgyZnYoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFs
dWUpCit7CisgICAgZ2w6OlByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYocHJvZ3JhbSwgbG9jYXRp
b24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbFBy
b2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnYoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3Nl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xm
bG9hdCAqdmFsdWUpCit7CisgICAgZ2w6OlByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnYocHJvZ3Jh
bSwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKK30KKwordm9pZCBHTF9BUElF
TlRSWSBnbFByb2dyYW1Vbmlmb3JtTWF0cml4NHgzZnYoR0x1aW50IHByb2dyYW0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
dHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmbG9hdCAqdmFsdWUpCit7CisgICAgZ2w6OlByb2dyYW1Vbmlmb3JtTWF0cml4NHgz
ZnYocHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKK30KKwordm9p
ZCBHTF9BUElFTlRSWSBnbFZhbGlkYXRlUHJvZ3JhbVBpcGVsaW5lKEdMdWludCBwaXBlbGluZSkK
K3sKKyAgICBnbDo6VmFsaWRhdGVQcm9ncmFtUGlwZWxpbmUocGlwZWxpbmUpOworfQorCit2b2lk
IEdMX0FQSUVOVFJZIGdsR2V0UHJvZ3JhbVBpcGVsaW5lSW5mb0xvZyhHTHVpbnQgcGlwZWxpbmUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1
ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGNoYXIgKmluZm9Mb2cpCit7CisgICAgZ2w6OkdldFByb2dyYW1QaXBlbGluZUluZm9Mb2co
cGlwZWxpbmUsIGJ1ZlNpemUsIGxlbmd0aCwgaW5mb0xvZyk7Cit9CisKK3ZvaWQgR0xfQVBJRU5U
UlkgZ2xCaW5kSW1hZ2VUZXh0dXJlKEdMdWludCB1bml0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHRleHR1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMYm9vbGVhbiBsYXllcmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbGF5ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gYWNjZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZv
cm1hdCkKK3sKKyAgICBnbDo6QmluZEltYWdlVGV4dHVyZSh1bml0LCB0ZXh0dXJlLCBsZXZlbCwg
bGF5ZXJlZCwgbGF5ZXIsIGFjY2VzcywgZm9ybWF0KTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBn
bEdldEJvb2xlYW5pX3YoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGJvb2xlYW4gKmRh
dGEpCit7CisgICAgZ2w6OkdldEJvb2xlYW5pX3YodGFyZ2V0LCBpbmRleCwgZGF0YSk7Cit9CisK
K3ZvaWQgR0xfQVBJRU5UUlkgZ2xNZW1vcnlCYXJyaWVyKEdMYml0ZmllbGQgYmFycmllcnMpCit7
CisgICAgZ2w6Ok1lbW9yeUJhcnJpZXIoYmFycmllcnMpOworfQorCit2b2lkIEdMX0FQSUVOVFJZ
IGdsTWVtb3J5QmFycmllckJ5UmVnaW9uKEdMYml0ZmllbGQgYmFycmllcnMpCit7CisgICAgZ2w6
Ok1lbW9yeUJhcnJpZXJCeVJlZ2lvbihiYXJyaWVycyk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkg
Z2xUZXhTdG9yYWdlMkRNdWx0aXNhbXBsZShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdo
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
Zml4ZWRzYW1wbGVsb2NhdGlvbnMpCit7CisgICAgZ2w6OlRleFN0b3JhZ2UyRE11bHRpc2FtcGxl
KHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGVkc2FtcGxlbG9jYXRpb25zKTsKK30KKwordm9p
ZCBHTF9BUElFTlRSWSBnbEdldE11bHRpc2FtcGxlZnYoR0xlbnVtIHBuYW1lLCBHTHVpbnQgaW5k
ZXgsIEdMZmxvYXQgKnZhbCkKK3sKKyAgICBnbDo6R2V0TXVsdGlzYW1wbGVmdihwbmFtZSwgaW5k
ZXgsIHZhbCk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xTYW1wbGVNYXNraShHTHVpbnQgbWFz
a051bWJlciwgR0xiaXRmaWVsZCBtYXNrKQoreworICAgIGdsOjpTYW1wbGVNYXNraShtYXNrTnVt
YmVyLCBtYXNrKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbEdldFRleExldmVsUGFyYW1ldGVy
aXYoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFt
cykKK3sKKyAgICBnbDo6R2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdih0YXJnZXQsIGxldmVsLCBwbmFt
ZSwgcGFyYW1zKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbEdldFRleExldmVsUGFyYW1ldGVy
ZnYoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFy
YW1zKQoreworICAgIGdsOjpHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2KHRhcmdldCwgbGV2ZWwsIHBu
YW1lLCBwYXJhbXMpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsQmluZFZlcnRleEJ1ZmZlcihH
THVpbnQgYmluZGluZ2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
cHRyIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
c3RyaWRlKQoreworICAgIGdsOjpCaW5kVmVydGV4QnVmZmVyKGJpbmRpbmdpbmRleCwgYnVmZmVy
LCBvZmZzZXQsIHN0cmlkZSk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWJG
b3JtYXQoR0x1aW50IGF0dHJpYmluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi
b29sZWFuIG5vcm1hbGl6ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCByZWxhdGl2ZW9mZnNldCkKK3sKKyAgICBnbDo6VmVydGV4QXR0cmliRm9ybWF0KGF0
dHJpYmluZGV4LCBzaXplLCB0eXBlLCBub3JtYWxpemVkLCByZWxhdGl2ZW9mZnNldCk7Cit9CisK
K3ZvaWQgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWJJRm9ybWF0KEdMdWludCBhdHRyaWJpbmRl
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCByZWxhdGl2ZW9mZnNldCkK
K3sKKyAgICBnbDo6VmVydGV4QXR0cmliSUZvcm1hdChhdHRyaWJpbmRleCwgc2l6ZSwgdHlwZSwg
cmVsYXRpdmVvZmZzZXQpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsVmVydGV4QXR0cmliQmlu
ZGluZyhHTHVpbnQgYXR0cmliaW5kZXgsIEdMdWludCBiaW5kaW5naW5kZXgpCit7CisgICAgZ2w6
OlZlcnRleEF0dHJpYkJpbmRpbmcoYXR0cmliaW5kZXgsIGJpbmRpbmdpbmRleCk7Cit9CisKK3Zv
aWQgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhCaW5kaW5nRGl2aXNvcihHTHVpbnQgYmluZGluZ2luZGV4
LCBHTHVpbnQgZGl2aXNvcikKK3sKKyAgICBnbDo6VmVydGV4QmluZGluZ0Rpdmlzb3IoYmluZGlu
Z2luZGV4LCBkaXZpc29yKTsKIH0KK30gIC8vIGV4dGVybiAiQyIKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3YyLmRlZgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5kZWYJKHJldmlz
aW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGli
R0xFU3YyLmRlZgkod29ya2luZyBjb3B5KQpAQCAtMjAyLDYgKzIwMiwzNCBAQCBFWFBPUlRTCiAg
ICAgZ2xHZXRRdWVyeU9iamVjdGl2RVhUICAgICAgICAgICBAMzE1CiAgICAgZ2xHZXRRdWVyeU9i
amVjdGk2NHZFWFQgICAgICAgICBAMzE2CiAgICAgZ2xHZXRRdWVyeU9iamVjdHVpNjR2RVhUICAg
ICAgICBAMzE3CisgICAgZ2xCaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU0gICBAMzE4CisgICAg
Z2xDb3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTSAgICBAMzE5CisKKyAgICBnbE1hdHJpeExvYWRm
Q0hST01JVU0gICAgICAgICAgIEAzMjAKKyAgICBnbE1hdHJpeExvYWRJZGVudGl0eUNIUk9NSVVN
ICAgIEAzMjEKKyAgICBnbEdlblBhdGhzQ0hST01JVU0gICAgICAgICAgICAgIEAzMjIKKyAgICBn
bERlbGV0ZVBhdGhzQ0hST01JVU0gICAgICAgICAgIEAzMjMKKyAgICBnbElzUGF0aENIUk9NSVVN
ICAgICAgICAgICAgICAgIEAzMjQKKyAgICBnbFBhdGhDb21tYW5kc0NIUk9NSVVNICAgICAgICAg
IEAzMjUKKyAgICBnbFBhdGhQYXJhbWV0ZXJmQ0hST01JVU0gICAgICAgIEAzMjYKKyAgICBnbFBh
dGhQYXJhbWV0ZXJpQ0hST01JVU0gICAgICAgIEAzMjcKKyAgICBnbEdldFBhdGhQYXJhbWV0ZXJm
dkNIUk9NSVVNICAgIEAzMjgKKyAgICBnbEdldFBhdGhQYXJhbWV0ZXJpdkNIUk9NSVVNICAgIEAz
MjkKKyAgICBnbFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNICAgICAgIEAzMzAKKyAgICBnbFN0ZW5j
aWxGaWxsUGF0aENIUk9NSVVNICAgICAgIEAzMzEKKyAgICBnbFN0ZW5jaWxTdHJva2VQYXRoQ0hS
T01JVU0gICAgIEAzMzIKKyAgICBnbENvdmVyRmlsbFBhdGhDSFJPTUlVTSAgICAgICAgIEAzMzMK
KyAgICBnbENvdmVyU3Ryb2tlUGF0aENIUk9NSVVNICAgICAgIEAzMzQKKyAgICBnbFN0ZW5jaWxU
aGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNICAgICAgICAgICAgQDMzNQorICAgIGdsU3RlbmNpbFRo
ZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlVTSAgICAgICAgICBAMzM2CisgICAgZ2xDb3ZlckZpbGxQ
YXRoSW5zdGFuY2VkQ0hST01JVU0gICAgICAgICAgICAgIEAzMzcKKyAgICBnbENvdmVyU3Ryb2tl
UGF0aEluc3RhbmNlZENIUk9NSVVNICAgICAgICAgICAgQDMzOAorICAgIGdsU3RlbmNpbFN0cm9r
ZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSAgICAgICAgICBAMzM5CisgICAgZ2xTdGVuY2lsRmlsbFBh
dGhJbnN0YW5jZWRDSFJPTUlVTSAgICAgICAgICAgIEAzNDAKKyAgICBnbFN0ZW5jaWxUaGVuQ292
ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNICAgQDM0MQorICAgIGdsU3RlbmNpbFRoZW5Db3Zl
clN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSBAMzQyCisgICAgZ2xCaW5kRnJhZ21lbnRJbnB1
dExvY2F0aW9uQ0hST01JVU0gICAgICAgICAgIEAzNDMKKyAgICBnbFByb2dyYW1QYXRoRnJhZ21l
bnRJbnB1dEdlbkNIUk9NSVVNICAgICAgICAgQDM0NAogCiAgICAgOyBHTEVTIDMuMCBGdW5jdGlv
bnMKICAgICBnbFJlYWRCdWZmZXIgICAgICAgICAgICAgICAgICAgIEAxODAKQEAgLTMwOSw2ICsz
MzcsNzYgQEAgRVhQT1JUUwogICAgIGdsVGV4U3RvcmFnZTNEICAgICAgICAgICAgICAgICAgQDI4
MgogICAgIGdsR2V0SW50ZXJuYWxmb3JtYXRpdiAgICAgICAgICAgQDI4MwogCisgICAgOyBHTEVT
IDMuMSBGdW5jdGlvbnMKKyAgICBnbERpc3BhdGNoQ29tcHV0ZSAgICAgICAgICAgICAgIEAzNDUK
KyAgICBnbERpc3BhdGNoQ29tcHV0ZUluZGlyZWN0ICAgICAgIEAzNDYKKyAgICBnbERyYXdBcnJh
eXNJbmRpcmVjdCAgICAgICAgICAgIEAzNDcKKyAgICBnbERyYXdFbGVtZW50c0luZGlyZWN0ICAg
ICAgICAgIEAzNDgKKyAgICBnbEZyYW1lYnVmZmVyUGFyYW1ldGVyaSAgICAgICAgIEAzNDkKKyAg
ICBnbEdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXYgICAgIEAzNTAKKyAgICBnbEdldFByb2dyYW1J
bnRlcmZhY2VpdiAgICAgICAgIEAzNTEKKyAgICBnbEdldFByb2dyYW1SZXNvdXJjZUluZGV4ICAg
ICAgIEAzNTIKKyAgICBnbEdldFByb2dyYW1SZXNvdXJjZU5hbWUgICAgICAgIEAzNTMKKyAgICBn
bEdldFByb2dyYW1SZXNvdXJjZWl2ICAgICAgICAgIEAzNTQKKyAgICBnbEdldFByb2dyYW1SZXNv
dXJjZUxvY2F0aW9uICAgIEAzNTUKKyAgICBnbFVzZVByb2dyYW1TdGFnZXMgICAgICAgICAgICAg
IEAzNTYKKyAgICBnbEFjdGl2ZVNoYWRlclByb2dyYW0gICAgICAgICAgIEAzNTcKKyAgICBnbENy
ZWF0ZVNoYWRlclByb2dyYW12ICAgICAgICAgIEAzNTgKKyAgICBnbEJpbmRQcm9ncmFtUGlwZWxp
bmUgICAgICAgICAgIEAzNTkKKyAgICBnbERlbGV0ZVByb2dyYW1QaXBlbGluZXMgICAgICAgIEAz
NjAKKyAgICBnbEdlblByb2dyYW1QaXBlbGluZXMgICAgICAgICAgIEAzNjEKKyAgICBnbElzUHJv
Z3JhbVBpcGVsaW5lICAgICAgICAgICAgIEAzNjIKKyAgICBnbEdldFByb2dyYW1QaXBlbGluZWl2
ICAgICAgICAgIEAzNjMKKyAgICBnbFByb2dyYW1Vbmlmb3JtMWkgICAgICAgICAgICAgIEAzNjQK
KyAgICBnbFByb2dyYW1Vbmlmb3JtMmkgICAgICAgICAgICAgIEAzNjUKKyAgICBnbFByb2dyYW1V
bmlmb3JtM2kgICAgICAgICAgICAgIEAzNjYKKyAgICBnbFByb2dyYW1Vbmlmb3JtNGkgICAgICAg
ICAgICAgIEAzNjcKKyAgICBnbFByb2dyYW1Vbmlmb3JtMXVpICAgICAgICAgICAgIEAzNjgKKyAg
ICBnbFByb2dyYW1Vbmlmb3JtMnVpICAgICAgICAgICAgIEAzNjkKKyAgICBnbFByb2dyYW1Vbmlm
b3JtM3VpICAgICAgICAgICAgIEAzNzAKKyAgICBnbFByb2dyYW1Vbmlmb3JtNHVpICAgICAgICAg
ICAgIEAzNzEKKyAgICBnbFByb2dyYW1Vbmlmb3JtMWYgICAgICAgICAgICAgIEAzNzIKKyAgICBn
bFByb2dyYW1Vbmlmb3JtMmYgICAgICAgICAgICAgIEAzNzMKKyAgICBnbFByb2dyYW1Vbmlmb3Jt
M2YgICAgICAgICAgICAgIEAzNzQKKyAgICBnbFByb2dyYW1Vbmlmb3JtNGYgICAgICAgICAgICAg
IEAzNzUKKyAgICBnbFByb2dyYW1Vbmlmb3JtMWl2ICAgICAgICAgICAgIEAzNzYKKyAgICBnbFBy
b2dyYW1Vbmlmb3JtMml2ICAgICAgICAgICAgIEAzNzcKKyAgICBnbFByb2dyYW1Vbmlmb3JtM2l2
ICAgICAgICAgICAgIEAzNzgKKyAgICBnbFByb2dyYW1Vbmlmb3JtNGl2ICAgICAgICAgICAgIEAz
NzkKKyAgICBnbFByb2dyYW1Vbmlmb3JtMXVpdiAgICAgICAgICAgIEAzODAKKyAgICBnbFByb2dy
YW1Vbmlmb3JtMnVpdiAgICAgICAgICAgIEAzODEKKyAgICBnbFByb2dyYW1Vbmlmb3JtM3VpdiAg
ICAgICAgICAgIEAzODIKKyAgICBnbFByb2dyYW1Vbmlmb3JtNHVpdiAgICAgICAgICAgIEAzODMK
KyAgICBnbFByb2dyYW1Vbmlmb3JtMWZ2ICAgICAgICAgICAgIEAzODQKKyAgICBnbFByb2dyYW1V
bmlmb3JtMmZ2ICAgICAgICAgICAgIEAzODUKKyAgICBnbFByb2dyYW1Vbmlmb3JtM2Z2ICAgICAg
ICAgICAgIEAzODYKKyAgICBnbFByb2dyYW1Vbmlmb3JtNGZ2ICAgICAgICAgICAgIEAzODcKKyAg
ICBnbFByb2dyYW1Vbmlmb3JtTWF0cml4MmZ2ICAgICAgIEAzODgKKyAgICBnbFByb2dyYW1Vbmlm
b3JtTWF0cml4M2Z2ICAgICAgIEAzODkKKyAgICBnbFByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2ICAg
ICAgIEAzOTAKKyAgICBnbFByb2dyYW1Vbmlmb3JtTWF0cml4MngzZnYgICAgIEAzOTEKKyAgICBn
bFByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYgICAgIEAzOTIKKyAgICBnbFByb2dyYW1Vbmlmb3Jt
TWF0cml4Mng0ZnYgICAgIEAzOTMKKyAgICBnbFByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYgICAg
IEAzOTQKKyAgICBnbFByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnYgICAgIEAzOTUKKyAgICBnbFBy
b2dyYW1Vbmlmb3JtTWF0cml4NHgzZnYgICAgIEAzOTYKKyAgICBnbFZhbGlkYXRlUHJvZ3JhbVBp
cGVsaW5lICAgICAgIEAzOTcKKyAgICBnbEdldFByb2dyYW1QaXBlbGluZUluZm9Mb2cgICAgIEAz
OTgKKyAgICBnbEJpbmRJbWFnZVRleHR1cmUgICAgICAgICAgICAgIEAzOTkKKyAgICBnbEdldEJv
b2xlYW5pX3YgICAgICAgICAgICAgICAgIEA0MDAKKyAgICBnbE1lbW9yeUJhcnJpZXIgICAgICAg
ICAgICAgICAgIEA0MDEKKyAgICBnbE1lbW9yeUJhcnJpZXJCeVJlZ2lvbiAgICAgICAgIEA0MDIK
KyAgICBnbFRleFN0b3JhZ2UyRE11bHRpc2FtcGxlICAgICAgIEA0MDMKKyAgICBnbEdldE11bHRp
c2FtcGxlZnYgICAgICAgICAgICAgIEA0MDQKKyAgICBnbFNhbXBsZU1hc2tpICAgICAgICAgICAg
ICAgICAgIEA0MDUKKyAgICBnbEdldFRleExldmVsUGFyYW1ldGVyaXYgICAgICAgIEA0MDYKKyAg
ICBnbEdldFRleExldmVsUGFyYW1ldGVyZnYgICAgICAgIEA0MDcKKyAgICBnbEJpbmRWZXJ0ZXhC
dWZmZXIgICAgICAgICAgICAgIEA0MDgKKyAgICBnbFZlcnRleEF0dHJpYkZvcm1hdCAgICAgICAg
ICAgIEA0MDkKKyAgICBnbFZlcnRleEF0dHJpYklGb3JtYXQgICAgICAgICAgIEA0MTAKKyAgICBn
bFZlcnRleEF0dHJpYkJpbmRpbmcgICAgICAgICAgIEA0MTEKKyAgICBnbFZlcnRleEJpbmRpbmdE
aXZpc29yICAgICAgICAgIEA0MTIKKwogICAgIDsgQU5HTEUgUGxhdGZvcm0gSW1wbGVtZW50YXRp
b24KICAgICBBTkdMRVBsYXRmb3JtQ3VycmVudCAgICAgICAgICAgIEAyOTAKICAgICBBTkdMRVBs
YXRmb3JtSW5pdGlhbGl6ZSAgICAgICAgIEAyOTEKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9CVUlMRC5nbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvQlVJTEQuZ24JKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL0JVSUxELmduCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQ4
IEBACisjIENvcHlyaWdodCAyMDE1IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisK
K2ltcG9ydCgiLy90ZXN0aW5nL3Rlc3QuZ25pIikKK2ltcG9ydCgiLy9idWlsZC9jb25maWcvY2hy
b21lY2FzdF9idWlsZC5nbmkiKQoraW1wb3J0KCIvL3RoaXJkX3BhcnR5L2FuZ2xlL2J1aWxkL2Fu
Z2xlX2NvbW1vbi5nbmkiKQorCit1bml0dGVzdHNfZ3lwaSA9IGV4ZWNfc2NyaXB0KCIvL2J1aWxk
L2d5cGlfdG9fZ24ucHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmViYXNlX3BhdGgoImFuZ2xlX3VuaXR0ZXN0cy5neXBp
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tcmVwbGFjZT08KGFuZ2xlX3Bh
dGgpPS4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAic2NvcGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbICJh
bmdsZV91bml0dGVzdHMuZ3lwaSIgXSkKKwordGVzdCgiYW5nbGVfdW5pdHRlc3RzIikgeworICBp
bmNsdWRlX2RpcnMgPSBbCisgICAgInRlc3RpbmcvZ3Rlc3QvaW5jbHVkZSIsCisgICAgIi4uLy4u
L3NyYyIsCisgIF0KKworICBzb3VyY2VzID0gcmViYXNlX3BhdGgodW5pdHRlc3RzX2d5cGkuYW5n
bGVfdW5pdHRlc3RzX3NvdXJjZXMsICIuIiwgIi4uLy4uIikKKworICBpZiAoYW5nbGVfZW5hYmxl
X2hsc2wpIHsKKyAgICBzb3VyY2VzICs9CisgICAgICAgIHJlYmFzZV9wYXRoKHVuaXR0ZXN0c19n
eXBpLmFuZ2xlX3VuaXR0ZXN0c19obHNsX3NvdXJjZXMsICIuIiwgIi4uLy4uIikKKyAgICBkZWZp
bmVzID0gWyAiQU5HTEVfRU5BQkxFX0hMU0wiIF0KKyAgfQorCisgIHNvdXJjZXMgKz0gWyAiLy9n
cHUvYW5nbGVfdW5pdHRlc3RfbWFpbi5jYyIgXQorCisgIGRlcHMgPSBbCisgICAgIi8vYmFzZSIs
CisgICAgIi8vYmFzZS90ZXN0OnRlc3Rfc3VwcG9ydCIsCisgICAgIi8vdGVzdGluZy9nbW9jayIs
CisgICAgIi8vdGVzdGluZy9ndGVzdCIsCisgICAgIi8vdGhpcmRfcGFydHkvYW5nbGU6bGliQU5H
TEUiLAorICAgICIvL3RoaXJkX3BhcnR5L2FuZ2xlOnByZXByb2Nlc3NvciIsCisgICAgIi8vdGhp
cmRfcGFydHkvYW5nbGU6dHJhbnNsYXRvcl9zdGF0aWMiLAorICBdCit9CisKK2lmIChpc193aW4g
fHwgaXNfbGludXggfHwgaXNfbWFjIHx8IGlzX2FuZHJvaWQpIHsKKyAgZW5kMmVuZF9neXBpID0g
ZXhlY19zY3JpcHQoIi8vYnVpbGQvZ3lwaV90b19nbi5weSIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWJhc2VfcGF0aCgi
YW5nbGVfZW5kMmVuZF90ZXN0cy5neXBpIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIi0tcmVwbGFjZT08KGFuZ2xlX3BhdGgpPS4iLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbICJhbmdsZV9lbmQyZW5kX3Rlc3RzLmd5cGkiIF0pCisKKyAg
dGVzdCgiYW5nbGVfZW5kMmVuZF90ZXN0cyIpIHsKKyAgICBpbmNsdWRlX2RpcnMgPSBbCisgICAg
ICAidGVzdGluZy9ndGVzdC9pbmNsdWRlIiwKKyAgICAgICIuLi8uLi9zcmMvdGVzdHMiLAorICAg
ICAgIi4uLy4uL3V0aWwiLAorICAgIF0KKworICAgIGlmIChpc19hbmRyb2lkKSB7CisgICAgICB1
c2VfbmF0aXZlX2FjdGl2aXR5ID0gdHJ1ZQorICAgIH0KKworICAgIHNvdXJjZXMgPQorICAgICAg
ICByZWJhc2VfcGF0aChlbmQyZW5kX2d5cGkuYW5nbGVfZW5kMmVuZF90ZXN0c19zb3VyY2VzLCAi
LiIsICIuLi8uLiIpCisKKyAgICBpZiAoaXNfd2luKSB7CisgICAgICBzb3VyY2VzICs9IHJlYmFz
ZV9wYXRoKGVuZDJlbmRfZ3lwaS5hbmdsZV9lbmQyZW5kX3Rlc3RzX3dpbl9zb3VyY2VzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIuLi8uLiIpCisgICAgfQorICAgIGlmICh1c2VfeDExKSB7CisgICAgICBzb3VyY2VzICs9
IHJlYmFzZV9wYXRoKGVuZDJlbmRfZ3lwaS5hbmdsZV9lbmQyZW5kX3Rlc3RzX3gxMV9zb3VyY2Vz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLiIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIuLi8uLiIpCisgICAgfQorCisgICAgc291cmNlcyArPSBbICIvL2dwdS9hbmds
ZV9lbmQyZW5kX3Rlc3RzX21haW4uY2MiIF0KKworICAgIGNvbmZpZ3MgKz0gWworICAgICAgIi8v
dGhpcmRfcGFydHkvYW5nbGU6aW50ZXJuYWxfY29uZmlnIiwKKyAgICAgICIvL3RoaXJkX3BhcnR5
L2FuZ2xlOmxpYkFOR0xFX2NvbmZpZyIsCisgICAgXQorCisgICAgaWYgKGlzX2xpbnV4ICYmICFp
c19jb21wb25lbnRfYnVpbGQpIHsKKyAgICAgICMgU2V0IHJwYXRoIHRvIGZpbmQgbGliRUdMLnNv
IGFuZCBsaWJHTEVTdjIuc28gZXZlbiBpbiBhIG5vbi1jb21wb25lbnQgYnVpbGQuCisgICAgICBj
b25maWdzICs9IFsgIi8vYnVpbGQvY29uZmlnL2djYzpycGF0aF9mb3JfYnVpbHRfc2hhcmVkX2xp
YnJhcmllcyIgXQorICAgIH0KKworICAgIGRlcHMgPSBbCisgICAgICAiLy9iYXNlIiwKKyAgICAg
ICIvL2Jhc2UvdGVzdDp0ZXN0X3N1cHBvcnQiLAorICAgICAgIi8vdGVzdGluZy9nbW9jayIsCisg
ICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKKyAgICAgICIvL3RoaXJkX3BhcnR5L2FuZ2xlOmFuZ2xl
X3V0aWwiLAorICAgICAgIi8vdGhpcmRfcGFydHkvYW5nbGU6bGliQU5HTEUiLAorICAgICAgIi8v
dGhpcmRfcGFydHkvYW5nbGU6bGliRUdMIiwKKyAgICAgICIvL3RoaXJkX3BhcnR5L2FuZ2xlOmxp
YkdMRVN2MiIsCisgICAgICAiLy90aGlyZF9wYXJ0eS9hbmdsZTpwcmVwcm9jZXNzb3IiLAorICAg
ICAgIi8vdGhpcmRfcGFydHkvYW5nbGU6dHJhbnNsYXRvcl9zdGF0aWMiLAorICAgIF0KKyAgfQor
fQorCitpZiAoaXNfd2luKSB7CisgIHBlcmZ0ZXN0c19neXBpID0gZXhlY19zY3JpcHQoIi8vYnVp
bGQvZ3lwaV90b19nbi5weSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmViYXNlX3BhdGgoImFuZ2xlX3BlcmZ0ZXN0
cy5neXBpIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1yZXBsYWNlPTwo
YW5nbGVfcGF0aCk9LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsgImFuZ2xlX3BlcmZ0ZXN0cy5neXBpIiBdKQorCisgIHRlc3QoImFuZ2xlX3Bl
cmZ0ZXN0cyIpIHsKKyAgICBpbmNsdWRlX2RpcnMgPSBbCisgICAgICAidGVzdGluZy9ndGVzdC9p
bmNsdWRlIiwKKyAgICAgICIuLi8uLi9zcmMvdGVzdHMiLAorICAgICAgIi4uLy4uL3V0aWwiLAor
ICAgIF0KKworICAgIHNvdXJjZXMgPSByZWJhc2VfcGF0aChwZXJmdGVzdHNfZ3lwaS5hbmdsZV9w
ZXJmX3Rlc3RzX3NvdXJjZXMsICIuIiwgIi4uLy4uIikKKworICAgIHNvdXJjZXMgKz0KKyAgICAg
ICAgcmViYXNlX3BhdGgocGVyZnRlc3RzX2d5cGkuYW5nbGVfcGVyZl90ZXN0c193aW5fc291cmNl
cywgIi4iLCAiLi4vLi4iKQorCisgICAgc291cmNlcyArPSBbICIvL2dwdS9hbmdsZV9wZXJmdGVz
dHNfbWFpbi5jYyIgXQorCisgICAgY29uZmlncyArPSBbCisgICAgICAiLy90aGlyZF9wYXJ0eS9h
bmdsZTppbnRlcm5hbF9jb25maWciLAorICAgICAgIi8vdGhpcmRfcGFydHkvYW5nbGU6bGliQU5H
TEVfY29uZmlnIiwKKyAgICBdCisKKyAgICBkZXBzID0gWworICAgICAgIi8vYmFzZSIsCisgICAg
ICAiLy9iYXNlL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKKyAgICAgICIvL3Rlc3RpbmcvZ21vY2siLAor
ICAgICAgIi8vdGVzdGluZy9ndGVzdCIsCisgICAgICAiLy90aGlyZF9wYXJ0eS9hbmdsZTphbmds
ZV91dGlsIiwKKyAgICAgICIvL3RoaXJkX3BhcnR5L2FuZ2xlOmxpYkFOR0xFIiwKKyAgICAgICIv
L3RoaXJkX3BhcnR5L2FuZ2xlOmxpYkVHTCIsCisgICAgICAiLy90aGlyZF9wYXJ0eS9hbmdsZTps
aWJHTEVTdjIiLAorICAgIF0KKyAgfQorfQorCisjIyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyMjIGRFUVAgdGVzdHMKKyMjIy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2RlY2xhcmVf
YXJncygpIHsKKyAgIyBEb24ndCBidWlsZCBkRVFQIGJ5IGRlZmF1bHQuCisgIGJ1aWxkX2FuZ2xl
X2RlcXBfdGVzdHMgPSBmYWxzZQorfQorCisjIFRPRE8oam1hZGlsbCk6IE90aGVyIHBsYXRmb3Jt
cy4KK2lmIChidWlsZF9hbmdsZV9kZXFwX3Rlc3RzKSB7CisgIGRlcXBfZ3lwaSA9IGV4ZWNfc2Ny
aXB0KCIvL2J1aWxkL2d5cGlfdG9fZ24ucHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBb
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmViYXNlX3BhdGgoImRlcXAuZ3lwaSIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLXJlcGxhY2U9PChhbmdsZV9wYXRoKT0uIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1yZXBsYWNlPTwoZGVxcF9wYXRoKT0uLi9k
ZXFwL3NyYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICJzY29wZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFsgImRlcXAuZ3lw
aSIgXSkKKworICBjb25maWcoImFuZ2xlX2RlcXBfc3VwcG9ydCIpIHsKKyAgICBpbmNsdWRlX2Rp
cnMgPSByZWJhc2VfcGF0aChkZXFwX2d5cGkuZGVxcF9pbmNsdWRlX2RpcnMsICIuIiwgIi4uLy4u
IikKKyAgICBpZiAoaXNfd2luKSB7CisgICAgICBpbmNsdWRlX2RpcnMgKz0gWyAiLi4vZGVxcC9z
cmMvZnJhbWV3b3JrL3BsYXRmb3JtL3dpbjMyIiBdCisgICAgICBjZmxhZ3MgPSBkZXFwX2d5cGku
ZGVxcF93aW5fY2ZsYWdzCisgICAgfQorICAgIGRlZmluZXMgPSBkZXFwX2d5cGkuZGVxcF9kZWZp
bmVzCisgICAgZGVmaW5lcyArPSBbICJfTUJDUyIgXQorCisgICAgIyBBc2sgdGhlIHN5c3RlbSBo
ZWFkZXJzIHRvIGV4cG9zZSBhbGwgdGhlIHJlZ3VsYXIgZnVuY3Rpb24gb3RoZXJ3aXNlCisgICAg
IyBkRVFQIGRvZXNuJ3QgY29tcGlsZSBhbmQgcHJvZHVjZXMgd2FybmluZ3MgYWJvdXQgaW1wbGlj
aXRseSBkZWZpbmVkCisgICAgIyBmdW5jdGlvbnMuCisgICAgaWYgKGlzX2xpbnV4KSB7CisgICAg
ICAjIFRoaXMgaGFzIHRvIGJlIEdOVV9TT1VSQ0UgYXMgb24gTGludXggZEVRUCB1c2VzIHN5c2Nh
bGwoKQorICAgICAgZGVmaW5lcyArPSBbICJfR05VX1NPVVJDRSIgXQorICAgIH0KKyAgICBpZiAo
aXNfYW5kcm9pZCkgeworICAgICAgIyBfWE9QRU5fU09VUkNFPTYwMCBpcyB3aGF0IGlzIHVzZWQg
aW4gZGVxcC9zcmMvQW5kcm9pZC5taworICAgICAgZGVmaW5lcyArPSBbICJfWE9QRU5fU09VUkNF
PTYwMCIgXQorICAgIH0KKyAgfQorCisgIGRlcXBfdW5kZWZpbmVfY29uZmlncyA9IFsKKyAgICAi
Ly9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIsCisgICAgIi8vYnVpbGQvY29u
ZmlnL2NvbXBpbGVyOm5vX3J0dGkiLAorICBdCisKKyAgaWYgKGlzX3dpbikgeworICAgIGRlcXBf
dW5kZWZpbmVfY29uZmlncyArPSBbCisgICAgICAiLy9idWlsZC9jb25maWcvd2luOmxlYW5fYW5k
X21lYW4iLAorICAgICAgIi8vYnVpbGQvY29uZmlnL3dpbjpub21pbm1heCIsCisgICAgICAiLy9i
dWlsZC9jb25maWcvd2luOnVuaWNvZGUiLAorICAgIF0KKyAgfQorCisgIGlmIChpc19saW51eCB8
fCBpc19hbmRyb2lkKSB7CisgICAgZGVxcF91bmRlZmluZV9jb25maWdzICs9IFsgIi8vYnVpbGQv
Y29uZmlnL2djYzpub19leGNlcHRpb25zIiBdCisgIH0KKworICBzdGF0aWNfbGlicmFyeSgiYW5n
bGVfZGVxcF9kZWNwcCIpIHsKKyAgICBjb25maWdzIC09IGRlcXBfdW5kZWZpbmVfY29uZmlncwor
ICAgIHB1YmxpY19jb25maWdzID0gWworICAgICAgIjphbmdsZV9kZXFwX3N1cHBvcnQiLAorICAg
ICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICAgIi8v
dGhpcmRfcGFydHkvYW5nbGU6aW50ZXJuYWxfY29uZmlnIiwKKyAgICBdCisgICAgc291cmNlcyA9
IHJlYmFzZV9wYXRoKGRlcXBfZ3lwaS5kZXFwX2xpYnRlc3Rlcl9kZWNwcF9zb3VyY2VzLCAiLiIs
ICIuLi8uLiIpCisgIH0KKworICBjb25maWcoImFuZ2xlX2RlcXBfbGlidGVzdGVyX2NvbmZpZyIp
IHsKKyAgICBkZWZpbmVzID0gWyAiQU5HTEVfREVRUF9MSUJURVNURVJfSU1QTEVNRU5UQVRJT04i
IF0KKworICAgIGlmIChpc19jbGFuZykgeworICAgICAgIyBUT0RPKGptYWRpbGwpOiBSZW1vdmUg
dGhpcyBvbmNlIHdlIGZpeCBkRVFQLgorICAgICAgY2ZsYWdzX2NjID0gWyAiLVduby1kZWxldGUt
bm9uLXZpcnR1YWwtZHRvciIgXQorICAgIH0KKyAgfQorCisgIHN0YXRpY19saWJyYXJ5KCJhbmds
ZV9kZXFwX2xpYnRlc3RlciIpIHsKKyAgICBwdWJsaWNfZGVwcyA9IFsKKyAgICAgICI6YW5nbGVf
ZGVxcF9kZWNwcCIsCisgICAgICAiLy90aGlyZF9wYXJ0eS9hbmdsZTphbmdsZV91dGlsIiwKKyAg
ICAgICIvL3RoaXJkX3BhcnR5L2FuZ2xlOmxpYkVHTCIsCisgICAgICAiLy90aGlyZF9wYXJ0eS9s
aWJwbmc6bGlicG5nIiwKKyAgICBdCisgICAgY29uZmlncyAtPSBkZXFwX3VuZGVmaW5lX2NvbmZp
Z3MKKyAgICBwdWJsaWNfY29uZmlncyA9IFsgIjphbmdsZV9kZXFwX2xpYnRlc3Rlcl9jb25maWci
IF0KKyAgICBzb3VyY2VzID0gcmViYXNlX3BhdGgoZGVxcF9neXBpLmRlcXBfbGlidGVzdGVyX3Nv
dXJjZXMsICIuIiwgIi4uLy4uIikKKyAgICBpZiAoaXNfd2luKSB7CisgICAgICBzb3VyY2VzICs9
IHJlYmFzZV9wYXRoKGRlcXBfZ3lwaS5kZXFwX2xpYnRlc3Rlcl9zb3VyY2VzX3dpbiwgIi4iLCAi
Li4vLi4iKQorICAgIH0KKyAgICBpZiAoaXNfbGludXggfHwgaXNfYW5kcm9pZCkgeworICAgICAg
c291cmNlcyArPQorICAgICAgICAgIHJlYmFzZV9wYXRoKGRlcXBfZ3lwaS5kZXFwX2xpYnRlc3Rl
cl9zb3VyY2VzX3VuaXgsICIuIiwgIi4uLy4uIikKKyAgICB9CisgICAgaWYgKGlzX2FuZHJvaWQp
IHsKKyAgICAgIGxpYnMgPSBbICJsb2ciIF0KKyAgICB9CisgIH0KKworICBjb25maWcoImFuZ2xl
X2RlcXBfZ3Rlc3Rfc3VwcG9ydF9jb25maWciKSB7CisgICAgaW5jbHVkZV9kaXJzID0gWyAidGhp
cmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zIiBdCisgIH0KKworICBzb3VyY2Vfc2V0KCJh
bmdsZV9kZXFwX2d0ZXN0X3N1cHBvcnQiKSB7CisgICAgdGVzdG9ubHkgPSB0cnVlCisgICAgcHVi
bGljX2RlcHMgPSBbCisgICAgICAiLy9iYXNlIiwKKyAgICAgICIvL2Jhc2UvdGVzdDp0ZXN0X3N1
cHBvcnQiLAorICAgICAgIi8vdGVzdGluZy9ndGVzdCIsCisgICAgICAiLy90aGlyZF9wYXJ0eS9h
bmdsZTphbmdsZV9jb21tb24iLAorICAgICAgIi8vdGhpcmRfcGFydHkvYW5nbGU6YW5nbGVfdXRp
bCIsCisgICAgXQorICAgIHB1YmxpY19jb25maWdzID0gWyAiOmFuZ2xlX2RlcXBfZ3Rlc3Rfc3Vw
cG9ydF9jb25maWciIF0KKyAgICBzb3VyY2VzID0gZGVxcF9neXBpLmRlcXBfZ3B1X3Rlc3RfZXhw
ZWN0YXRpb25zX3NvdXJjZXMKKyAgICBzb3VyY2VzICs9IFsgIi8vZ3B1L2FuZ2xlX2RlcXBfdGVz
dHNfbWFpbi5jYyIgXQorCisgICAgIyBUYWtlbiBmcm9tIGdwdS9CVUlMRC5nbgorICAgICMgVE9E
TyhqbWFkaWxsKTogdGhpcyBzaG91bGQgYmUgaW4gYSBzaGFyZWQgbG9jYXRpb24KKyAgICBpZiAo
aXNfbGludXggJiYgIWlzX2Nocm9tZWNhc3QpIHsKKyAgICAgIGxpYnMgPSBbICJwY2kiIF0KKyAg
ICB9CisgIH0KKworICBhcGlfbmFtZXMgPSBbCisgICAgImdsZXMyIiwKKyAgICAiZ2xlczMiLAor
ICAgICJnbGVzMzEiLAorICAgICJlZ2wiLAorICBdCisgIHRhcmdldF9kZWZpbmVzID0gWworICAg
ICJBTkdMRV9ERVFQX0dMRVMyX1RFU1RTIiwKKyAgICAiQU5HTEVfREVRUF9HTEVTM19URVNUUyIs
CisgICAgIkFOR0xFX0RFUVBfR0xFUzMxX1RFU1RTIiwKKyAgICAiQU5HTEVfREVRUF9FR0xfVEVT
VFMiLAorICBdCisgIHRhcmdldF9zb3VyY2VzID0gWworICAgIGRlcXBfZ3lwaS5kZXFwX2dsZXMy
X3NvdXJjZXMsCisgICAgZGVxcF9neXBpLmRlcXBfZ2xlczNfc291cmNlcywKKyAgICBkZXFwX2d5
cGkuZGVxcF9nbGVzMzFfc291cmNlcywKKyAgICBkZXFwX2d5cGkuZGVxcF9lZ2xfc291cmNlcywK
KyAgXQorCisgIGZvcmVhY2goaW5kZXgsCisgICAgICAgICAgWworICAgICAgICAgICAgMCwKKyAg
ICAgICAgICAgIDEsCisgICAgICAgICAgICAyLAorICAgICAgICAgICAgMywKKyAgICAgICAgICBd
KSB7CisgICAgYXBpX25hbWUgPSBhcGlfbmFtZXNbaW5kZXhdCisgICAgY29uZmlnX25hbWUgPSAi
YW5nbGVfZGVxcF9saWIke2FwaV9uYW1lfV9jb25maWciCisgICAgY29uZmlnKGNvbmZpZ19uYW1l
KSB7CisgICAgICBkZWZpbmVzID0gWyB0YXJnZXRfZGVmaW5lc1tpbmRleF0gXQorICAgIH0KKwor
ICAgIHNoYXJlZF9saWJyYXJ5X25hbWUgPSAiYW5nbGVfZGVxcF9saWIke2FwaV9uYW1lfSIKKyAg
ICBzaGFyZWRfbGlicmFyeShzaGFyZWRfbGlicmFyeV9uYW1lKSB7CisgICAgICBkZXBzID0gWwor
ICAgICAgICAiOmFuZ2xlX2RlcXBfbGlidGVzdGVyIiwKKyAgICAgICAgIi8vdGhpcmRfcGFydHkv
YW5nbGU6YW5nbGVfdXRpbCIsCisgICAgICBdCisKKyAgICAgIGNvbmZpZ3MgLT0gZGVxcF91bmRl
ZmluZV9jb25maWdzCisgICAgICBwdWJsaWNfY29uZmlncyA9IFsgIjoke2NvbmZpZ19uYW1lfSIg
XQorCisgICAgICBzb3VyY2VzID0gcmViYXNlX3BhdGgodGFyZ2V0X3NvdXJjZXNbaW5kZXhdLCAi
LiIsICIuLi8uLiIpCisgICAgICBzb3VyY2VzICs9IFsKKyAgICAgICAgImRlcXBfc3VwcG9ydC9h
bmdsZV9kZXFwX2xpYnRlc3Rlcl9tYWluLmNwcCIsCisgICAgICAgICJkZXFwX3N1cHBvcnQvdGN1
QU5HTEVQbGF0Zm9ybS5jcHAiLAorICAgICAgICAiZGVxcF9zdXBwb3J0L3RjdUFOR0xFUGxhdGZv
cm0uaCIsCisgICAgICBdCisgICAgfQorCisgICAgdGVzdF9uYW1lID0gImFuZ2xlX2RlcXBfJHth
cGlfbmFtZX1fdGVzdHMiCisgICAgdGVzdCh0ZXN0X25hbWUpIHsKKyAgICAgIGRlcHMgPSBbCisg
ICAgICAgICI6JHtzaGFyZWRfbGlicmFyeV9uYW1lfSIsCisgICAgICAgICI6YW5nbGVfZGVxcF9n
dGVzdF9zdXBwb3J0IiwKKyAgICAgIF0KKworICAgICAgIyBNdXN0IGJlIGluY2x1ZGVkIG91dHNp
ZGUgb2YgdGhlIHNvdXJjZSBzZXQgZm9yIHRoZSBkZWZpbmUKKyAgICAgIHNvdXJjZXMgPSBbCisg
ICAgICAgICJkZXFwX3N1cHBvcnQvYW5nbGVfZGVxcF9ndGVzdC5jcHAiLAorICAgICAgXQorCisg
ICAgICBkYXRhID0gWworICAgICAgICAiZGVxcF9zdXBwb3J0L2RlcXBfJHthcGlfbmFtZX1fdGVz
dF9leHBlY3RhdGlvbnMudHh0IiwKKyAgICAgICAgIi4uLy4uLy4uL2RlcXAvc3JjL2FuZHJvaWQv
Y3RzL21hc3Rlci8ke2FwaV9uYW1lfS1tYXN0ZXIudHh0IiwKKyAgICAgICAgIi4uLy4uLy4uL2Rl
cXAvc3JjL2RhdGEvIiwKKyAgICAgIF0KKworICAgICAgaWYgKGlzX2xpbnV4ICYmICFpc19jb21w
b25lbnRfYnVpbGQpIHsKKyAgICAgICAgIyBTZXQgcnBhdGggdG8gZmluZCAqLnNvIGZpbGVzIGV2
ZW4gaW4gYSBub24tY29tcG9uZW50IGJ1aWxkLgorICAgICAgICBjb25maWdzICs9IFsgIi8vYnVp
bGQvY29uZmlnL2djYzpycGF0aF9mb3JfYnVpbHRfc2hhcmVkX2xpYnJhcmllcyIgXQorICAgICAg
fQorCisgICAgICBpZiAoaXNfYW5kcm9pZCkgeworICAgICAgICB1c2VfbmF0aXZlX2FjdGl2aXR5
ID0gdHJ1ZQorICAgICAgfQorICAgIH0KKyAgfQorfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL1dlYkdMLUNUUy1rbm93bi1mYWlsdXJlcy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL1dlYkdMLUNUUy1rbm93bi1mYWls
dXJlcy50eHQJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL1dlYkdMLUNUUy1rbm93bi1mYWlsdXJlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw5IEBACitLbm93biBmYWlsdXJlcyBpbiB0aGUgV2ViR0wgQ1RTIDEuMC40LCB1c2luZyBDYW5h
cnkgNDguMC4yNTQ3LjAgd2l0aCBBTkdMRSBhMzM0NzViMzZmN2IwCitodHRwczovL3d3dy5raHJv
bm9zLm9yZy9yZWdpc3RyeS93ZWJnbC9zZGsvdGVzdHMvd2ViZ2wtY29uZm9ybWFuY2UtdGVzdHMu
aHRtbAorCitjb25mb3JtYW5jZS9leHRlbnNpb25zL2V4dC1zUkdCLmh0bWw6IDUgdGVzdHMgZmFp
bGVkCitjb25mb3JtYW5jZS9nbHNsL2J1Z3MvcG93LW9mLXNtYWxsLWNvbnN0YW50LWluLXVzZXIt
ZGVmaW5lZC1mdW5jdGlvbi5odG1sOiAxIHRlc3RzIGZhaWxlZAorY29uZm9ybWFuY2UvZ2xzbC9i
dWdzL3NhbXBsZXItc3RydWN0LWZ1bmN0aW9uLWFyZy5odG1sOiAxIHRlc3RzIGZhaWxlZAorY29u
Zm9ybWFuY2UvdGV4dHVyZXMvbWlzYy9jdWJlLWluY29tcGxldGUtZmJvLmh0bWw6IDEgdGVzdHMg
ZmFpbGVkCitkZXFwL2RhdGEvZ2xlczIvc2hhZGVycy9mdW5jdGlvbnMuaHRtbDogOCB0ZXN0cyBm
YWlsZWQKK2RlcXAvZGF0YS9nbGVzMi9zaGFkZXJzL3Njb3BpbmcuaHRtbDogNCB0ZXN0cyBmYWls
ZWQKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV9lbmQyZW5k
X3Rlc3RzLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2FuZ2xlX2VuZDJlbmRfdGVzdHMuZ3lwaQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvYW5nbGVfZW5kMmVuZF90ZXN0cy5neXBpCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTQ5IEBACisjIENvcHlyaWdodCAoYykgMjAxNCBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisj
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKyMgVGhpcyAuZ3lwaSBkZXNjcmliZXMgYWxs
IG9mIHRoZSBzb3VyY2VzIGFuZCBkZXBlbmRlbmNpZXMgdG8gYnVpbGQgYQorIyB1bmlmaWVkICJh
bmdsZV9lbmQyZW5kX3Rlc3RzIiB0YXJnZXQsIHdoaWNoIGNvbnRhaW5zIGFsbCBvZiB0aGUKKyMg
dGVzdHMgdGhhdCBleGVyY2lzZSB0aGUgQU5HTEUgaW1wbGVtZW50YXRpb24uIEl0IHJlcXVpcmVz
IGEgcGFyZW50CisjIHRhcmdldCB0byBpbmNsdWRlIHRoaXMgZ3lwaSBpbiBhbiBleGVjdXRhYmxl
IHRhcmdldCBjb250YWluaW5nIGEKKyMgZ3Rlc3QgaGFybmVzcyBpbiBhIG1haW4uY3BwLgorCit7
CisgICAgIyBFdmVyeXRoaW5nIGJlbG93IHRoaXMgaXMgZHVwbGljYXRlZCBpbiB0aGUgR04gYnVp
bGQuCisgICAgIyBJZiB5b3UgY2hhbmdlIGFueXRoaW5nIGFsc28gY2hhbmdlIGFuZ2xlL3NyYy90
ZXN0cy9CVUlMRC5nbgorICAgICd2YXJpYWJsZXMnOgorICAgIHsKKyAgICAgICAgJ2FuZ2xlX2Vu
ZDJlbmRfdGVzdHNfc291cmNlcyc6CisgICAgICAgIFsKKyAgICAgICAgICAgICc8KGFuZ2xlX3Bh
dGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9CaW5kR2VuZXJhdGVzUmVzb3VyY2VUZXN0LmNwcCcsCisg
ICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvQmluZFVuaWZvcm1M
b2NhdGlvblRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9n
bF90ZXN0cy9CbGVuZE1pbk1heFRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgp
L3NyYy90ZXN0cy9nbF90ZXN0cy9CbGl0RnJhbWVidWZmZXJBTkdMRVRlc3QuY3BwJywKKyAgICAg
ICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9CdWZmZXJEYXRhVGVzdC5j
cHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0J1aWx0
aW5WYXJpYWJsZVRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0
cy9nbF90ZXN0cy9DbGVhclRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3Ny
Yy90ZXN0cy9nbF90ZXN0cy9Db2xvck1hc2tUZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmds
ZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvQ29tcHV0ZVNoYWRlclRlc3QuY3BwJywKKyAgICAg
ICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9Db3B5Q29tcHJlc3NlZFRl
eHR1cmVUZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xf
dGVzdHMvQ29weVRleEltYWdlVGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkv
c3JjL3Rlc3RzL2dsX3Rlc3RzL0NvcHlUZXh0dXJlVGVzdC5jcHAnLAorICAgICAgICAgICAgJzwo
YW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0N1YmVNYXBUZXh0dXJlVGVzdC5jcHAnLAor
ICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0RlYnVnTWFya2Vy
VGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3Rz
L0RlYnVnVGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2ds
X3Rlc3RzL0RlcHRoU3RlbmNpbEZvcm1hdHNUZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmds
ZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvRGlzY2FyZEZyYW1lYnVmZmVyRVhUVGVzdC5jcHAn
LAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0RyYXdCdWZm
ZXJzVGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rl
c3RzL0RyYXdFbGVtZW50c1Rlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3Ny
Yy90ZXN0cy9nbF90ZXN0cy9EWFQxQ29tcHJlc3NlZFRleHR1cmVUZXN0LmNwcCcsCisgICAgICAg
ICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvRVRDVGV4dHVyZVRlc3QuY3Bw
JywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9GZW5jZVN5
bmNUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rl
c3RzL0ZyYW1lYnVmZmVyTWl4ZWRTYW1wbGVzVGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5n
bGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0ZyYW1lYnVmZmVyUmVuZGVyTWlwbWFwVGVzdC5j
cHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0ZyYW1l
YnVmZmVyVGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2ds
X3Rlc3RzL0dMU0xUZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVz
dHMvZ2xfdGVzdHMvSW1hZ2VUZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9z
cmMvdGVzdHMvZ2xfdGVzdHMvSW5jb21wbGV0ZVRleHR1cmVUZXN0LmNwcCcsCisgICAgICAgICAg
ICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvSW5kZXhCdWZmZXJPZmZzZXRUZXN0
LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvSW5k
ZXhlZFBvaW50c1Rlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0
cy9nbF90ZXN0cy9JbnN0YW5jaW5nVGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0
aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0xpbmVMb29wVGVzdC5jcHAnLAorICAgICAgICAgICAgJzwo
YW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL01heFRleHR1cmVTaXplVGVzdC5jcHAnLAor
ICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL01pcG1hcFRlc3Qu
Y3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9NdWx0
aXNhbXBsZUNvbXBhdGliaWxpdHlUZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRo
KS9zcmMvdGVzdHMvZ2xfdGVzdHMvbWVkaWEvcGl4ZWwuaW5sJywKKyAgICAgICAgICAgICc8KGFu
Z2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9QYWNrVW5wYWNrVGVzdC5jcHAnLAorICAgICAg
ICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL1BhdGhSZW5kZXJpbmdUZXN0
LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvUGJ1
ZmZlclRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90
ZXN0cy9QQk9FeHRlbnNpb25UZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9z
cmMvdGVzdHMvZ2xfdGVzdHMvUG9pbnRTcHJpdGVzVGVzdC5jcHAnLAorICAgICAgICAgICAgJzwo
YW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL1Byb3Zva2luZ1ZlcnRleFRlc3QuY3BwJywK
KyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9PYmplY3RBbGxv
Y2F0aW9uVGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2ds
X3Rlc3RzL09jY2x1c2lvblF1ZXJpZXNUZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9w
YXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvUHJvZ3JhbUJpbmFyeVRlc3QuY3BwJywKKyAgICAgICAg
ICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9SZWFkUGl4ZWxzVGVzdC5jcHAn
LAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL1JlbmRlcmVy
VGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3Rz
L1JvYnVzdENsaWVudE1lbW9yeVRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgp
L3NyYy90ZXN0cy9nbF90ZXN0cy9TaW1wbGVPcGVyYXRpb25UZXN0LmNwcCcsCisgICAgICAgICAg
ICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvU2l4dGVlbkJwcFRleHR1cmVUZXN0
LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvU1JH
QlRleHR1cmVUZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMv
Z2xfdGVzdHMvU3RhdGVDaGFuZ2VUZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRo
KS9zcmMvdGVzdHMvZ2xfdGVzdHMvU3dpenpsZVRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFu
Z2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9TeW5jUXVlcmllc1Rlc3QuY3BwJywKKyAgICAg
ICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9UZXh0dXJlVGVzdC5jcHAn
LAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL1RpbWVyUXVl
cmllc1Rlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90
ZXN0cy9UcmFuc2Zvcm1GZWVkYmFja1Rlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3Bh
dGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9Vbmlmb3JtQnVmZmVyVGVzdC5jcHAnLAorICAgICAgICAg
ICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL1VuaWZvcm1UZXN0LmNwcCcsCisg
ICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvVW5wYWNrQWxpZ25t
ZW50VGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rl
c3RzL1VucGFja1Jvd0xlbmd0aC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3Jj
L3Rlc3RzL2dsX3Rlc3RzL1ZlcnRleEF0dHJpYnV0ZVRlc3QuY3BwJywKKyAgICAgICAgICAgICc8
KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9WaWV3cG9ydFRlc3QuY3BwJywKKyAgICAg
ICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9XZWJHTENvbXBhdGliaWxp
dHlUZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZWdsX3Rl
c3RzL0VHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5n
bGVfcGF0aCkvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xDb250ZXh0U2hhcmluZ1Rlc3QuY3BwJywK
KyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMUXVlcnlD
b250ZXh0VGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2Vn
bF90ZXN0cy9FR0xSb2J1c3RuZXNzVGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0
aCkvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xTYW5pdHlDaGVja1Rlc3QuY3BwJywKKyAgICAgICAg
ICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMU3VyZmFjZVRlc3QuY3Bw
JywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy90ZXN0X3V0aWxzL0FOR0xF
VGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3Rlc3RfdXRp
bHMvQU5HTEVUZXN0LmgnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3Rl
c3RfdXRpbHMvYW5nbGVfdGVzdF9jb25maWdzLmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9w
YXRoKS9zcmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2NvbmZpZ3MuaCcsCisgICAgICAg
ICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2luc3Rh
bnRpYXRlLmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvdGVzdF91
dGlscy9hbmdsZV90ZXN0X2luc3RhbnRpYXRlLmgnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0
aCkvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvZ2xfcmFpaS5oJywKKyAgICAgICAgXSwKKyAgICAgICAg
J2FuZ2xlX2VuZDJlbmRfdGVzdHNfd2luX3NvdXJjZXMnOgorICAgICAgICBbCisgICAgICAgICAg
ICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvRDNESW1hZ2VGb3JtYXRDb252ZXJz
aW9uVGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rl
c3RzL0QzRDExRW11bGF0ZWRJbmRleGVkQnVmZmVyVGVzdC5jcHAnLAorICAgICAgICAgICAgJzwo
YW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0QzRDExRm9ybWF0VGFibGVzVGVzdC5jcHAn
LAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0QzRDExSW5w
dXRMYXlvdXRDYWNoZVRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90
ZXN0cy9lZ2xfdGVzdHMvRUdMRGV2aWNlVGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVf
cGF0aCkvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xQcmVzZW50UGF0aEQzRDExVGVzdC5jcHAnLAor
ICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xTdHJlYW1U
ZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZWdsX3Rlc3Rz
L0VHTFN5bmNDb250cm9sVGVzdC5jcHAnLAorICAgICAgICAgICAgIyBUT0RPKGN3YWxsZXopIGZv
ciBMaW51eCwgcmVxdWlyZXMgYSBwb3J0YWJsZSBpbXBsZW1lbnRhdGlvbiBvZiB0aHJlYWRzCisg
ICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFRocmVhZFRl
c3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9lZ2xfdGVzdHMv
bWVkaWEveXV2dGVzdC5pbmwnLAorICAgICAgICBdLAorICAgICAgICAnYW5nbGVfZW5kMmVuZF90
ZXN0c194MTFfc291cmNlcyc6CisgICAgICAgIFsKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgp
L3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMWDExVmlzdWFsVGVzdC5jcHAnLAorICAgICAgICBdLAor
ICAgIH0sCisgICAgJ2RlcGVuZGVuY2llcyc6CisgICAgWworICAgICAgICAnPChhbmdsZV9wYXRo
KS9zcmMvYW5nbGUuZ3lwOmxpYkFOR0xFJywKKyAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2Fu
Z2xlLmd5cDpsaWJFR0wnLAorICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvYW5nbGUuZ3lwOmxp
YkdMRVN2MicsCisgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy90ZXN0cy5neXA6YW5n
bGVfdGVzdF9zdXBwb3J0JywKKyAgICAgICAgJzwoYW5nbGVfcGF0aCkvdXRpbC91dGlsLmd5cDph
bmdsZV91dGlsJywKKyAgICBdLAorICAgICdpbmNsdWRlX2RpcnMnOgorICAgIFsKKyAgICAgICAg
JzwoYW5nbGVfcGF0aCkvaW5jbHVkZScsCisgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0
cycKKyAgICBdLAorICAgICdzb3VyY2VzJzoKKyAgICBbCisgICAgICAgICc8QChhbmdsZV9lbmQy
ZW5kX3Rlc3RzX3NvdXJjZXMpJywKKyAgICBdLAorICAgICdjb25kaXRpb25zJzoKKyAgICBbCisg
ICAgICAgIFsnT1M9PSJ3aW4iJywKKyAgICAgICAgeworICAgICAgICAgICAgJ3NvdXJjZXMnOgor
ICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICc8QChhbmdsZV9lbmQyZW5kX3Rlc3RzX3dp
bl9zb3VyY2VzKScsCisgICAgICAgICAgICBdLAorICAgICAgICB9XSwKKyAgICAgICAgWyd1c2Vf
eDExPT0xJywKKyAgICAgICAgeworICAgICAgICAgICAgJ3NvdXJjZXMnOgorICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgICc8QChhbmdsZV9lbmQyZW5kX3Rlc3RzX3gxMV9zb3VyY2VzKScs
CisgICAgICAgICAgICBdLAorICAgICAgICB9XSwKKyAgICBdCit9CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvYW5nbGVfZW5kMmVuZF90ZXN0c19tYWluLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvYW5nbGVfZW5kMmVu
ZF90ZXN0c19tYWluLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvYW5nbGVfZW5kMmVuZF90ZXN0c19tYWluLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDE2IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0Lmgi
CisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKworaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIqKiBhcmd2KQoreworICAgIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2
KTsKKyAgICB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQobmV3IEFOR0xFVGVzdEVu
dmlyb25tZW50KCkpOworICAgIGludCBydCA9IFJVTl9BTExfVEVTVFMoKTsKKyAgICByZXR1cm4g
cnQ7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvYW5nbGVfcGVy
ZnRlc3RzLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2FuZ2xlX3BlcmZ0ZXN0cy5neXBpCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV9wZXJmdGVzdHMuZ3lwaQkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDc0IEBACisjIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKyMKKyMgYW5nbGVfcGVyZnRlc3RzLmd5cGk6CisjCisjIFRoaXMgLmd5
cGkgZGVzY3JpYmVzIGFsbCBvZiB0aGUgc291cmNlcyBhbmQgZGVwZW5kZW5jaWVzIHRvIGJ1aWxk
IGEKKyMgdW5pZmllZCAiYW5nbGVfcGVyZnRlc3RzIiB0YXJnZXQsIHdoaWNoIGNvbnRhaW5zIGFs
bCBvZiBBTkdMRSdzCisjIHBlcmZvcm1hbmNlIHRlc3RzIChidWZmZXIgdXBkYXRlcywgdGV4dHVy
ZSB1cGRhdGVzLCBkcmF3IGNhbGxzLCBldGMpCisjIEl0IHJlcXVpcmVzIGEgcGFyZW50IHRhcmdl
dCB0byBpbmNsdWRlIHRoaXMgZ3lwaSBpbiBhbiBleGVjdXRhYmxlCisjIHRhcmdldCBjb250YWlu
aW5nIGEgZ3Rlc3QgaGFybmVzcyBpbiBhIG1haW4uY3BwLgorCit7CisgICAgJ3ZhcmlhYmxlcyc6
CisgICAgeworICAgICAgICAnYW5nbGVfcGVyZl90ZXN0c19zb3VyY2VzJzoKKyAgICAgICAgWwor
ICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvQU5HTEVQZXJm
VGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3BlcmZfdGVz
dHMvQU5HTEVQZXJmVGVzdC5oJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0
cy9wZXJmX3Rlc3RzL0J1ZmZlclN1YkRhdGEuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3Bh
dGgpL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0RyYXdDYWxsUGVyZi5jcHAnLAorICAgICAgICAgICAg
JzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvRHluYW1pY1Byb21vdGlvblBlcmZU
ZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcGVyZl90ZXN0
cy9FR0xJbml0aWFsaXplUGVyZi5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3Jj
L3Rlc3RzL3BlcmZfdGVzdHMvSW5kZXhDb252ZXJzaW9uUGVyZi5jcHAnLAorICAgICAgICAgICAg
JzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvSW5zdGFuY2luZ1BlcmYuY3BwJywK
KyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0ludGVybGVh
dmVkQXR0cmlidXRlRGF0YS5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rl
c3RzL3BlcmZfdGVzdHMvUG9pbnRTcHJpdGVzLmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9w
YXRoKS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9UZXhTdWJJbWFnZS5jcHAnLAorICAgICAgICAgICAg
JzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvVGV4dHVyZVNhbXBsaW5nLmNwcCcs
CisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9UZXh0dXJl
c1BlcmYuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9wZXJmX3Rl
c3RzL1VuaWZvcm1zUGVyZi5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rl
c3RzL3BlcmZfdGVzdHMvdGhpcmRfcGFydHkvcGVyZi9wZXJmX3Rlc3QuY2MnLAorICAgICAgICAg
ICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvdGhpcmRfcGFydHkvcGVyZi9w
ZXJmX3Rlc3QuaCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvdGVzdF91
dGlscy9hbmdsZV90ZXN0X2NvbmZpZ3MuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgp
L3NyYy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmlncy5oJywKKyAgICAgICAgICAg
ICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfaW5zdGFudGlh
dGUuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy90ZXN0X3V0aWxz
L2FuZ2xlX3Rlc3RfaW5zdGFudGlhdGUuaCcsCisgICAgICAgIF0sCisgICAgICAgICdhbmdsZV9w
ZXJmX3Rlc3RzX3dpbl9zb3VyY2VzJzoKKyAgICAgICAgWworICAgICAgICAgICAgJzwoYW5nbGVf
cGF0aCkvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvSW5kZXhEYXRhTWFuYWdlclRlc3QuY3BwJywKKyAg
ICAgICAgXQorICAgIH0sCisgICAgIyBFdmVyeXRoaW5nIGJlbG93IChleGNlcHQgV2luUlQtcmVs
YXRlZCBjb25maWcpIG11c3QgYmUgYWxzbyBtYWludGFpbmVkIGZvciBHTi4KKyAgICAjIElmIHlv
dSBjaGFuZ2UgYW55dGhpbmcgYmVsb3csIGFsc28gdXBkYXRlIGFuZ2xlL3NyYy90ZXN0cy9CVUlM
RC5nbi4KKyAgICAnZGVwZW5kZW5jaWVzJzoKKyAgICBbCisgICAgICAgICc8KGFuZ2xlX3BhdGgp
L3NyYy9hbmdsZS5neXA6YW5nbGVfY29tbW9uJywKKyAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3Jj
L2FuZ2xlLmd5cDpsaWJBTkdMRScsICMgZm9yIHVuaXQgdGVzdGluZworICAgICAgICAnPChhbmds
ZV9wYXRoKS9zcmMvYW5nbGUuZ3lwOmxpYkdMRVN2MicsCisgICAgICAgICc8KGFuZ2xlX3BhdGgp
L3NyYy9hbmdsZS5neXA6bGliRUdMJywKKyAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3Rz
L3Rlc3RzLmd5cDphbmdsZV90ZXN0X3N1cHBvcnQnLAorICAgICAgICAnPChhbmdsZV9wYXRoKS91
dGlsL3V0aWwuZ3lwOmFuZ2xlX3V0aWwnLAorICAgIF0sCisgICAgJ2luY2x1ZGVfZGlycyc6Cisg
ICAgWworICAgICAgICAnPChhbmdsZV9wYXRoKS9pbmNsdWRlJywKKyAgICAgICAgJzwoYW5nbGVf
cGF0aCkvc3JjL3Rlc3RzJworICAgIF0sCisgICAgJ3NvdXJjZXMnOgorICAgIFsKKyAgICAgICAg
JzxAKGFuZ2xlX3BlcmZfdGVzdHNfc291cmNlcyknLAorICAgIF0sCisgICAgJ2NvbmRpdGlvbnMn
OgorICAgIFsKKyAgICAgICAgWydPUz09IndpbiInLAorICAgICAgICB7CisgICAgICAgICAgICAn
c291cmNlcyc6CisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgJzxAKGFuZ2xlX3BlcmZf
dGVzdHNfd2luX3NvdXJjZXMpJywKKyAgICAgICAgICAgIF0sCisgICAgICAgIH1dLAorICAgIF0K
K30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV9wZXJmdGVz
dHNfbWFpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2FuZ2xlX3BlcmZ0ZXN0c19tYWluLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvYW5nbGVfcGVyZnRlc3RzX21haW4uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gYW5nbGVfcGVyZnRlc3Rz
X21haW4uY3BwCisvLyAgIEVudHJ5IHBvaW50IGZvciB0aGUgZ3Rlc3QtYmFzZWQgcGVyZm9ybWFu
Y2UgdGVzdHMuCisvLworCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKworaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdj
LCBhcmd2KTsKKyAgICB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQobmV3IHRlc3Rp
bmc6OkVudmlyb25tZW50KCkpOworICAgIGludCBydCA9IFJVTl9BTExfVEVTVFMoKTsKKyAgICBy
ZXR1cm4gcnQ7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvYW5n
bGVfdW5pdHRlc3RzLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2FuZ2xlX3VuaXR0ZXN0cy5neXBpCShub25leGlzdGVudCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV91bml0dGVzdHMuZ3lwaQkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDE1MiBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisjIFRoaXMgLmd5cGkgZGVzY3JpYmVzIGFsbCBv
ZiB0aGUgc291cmNlcyBhbmQgZGVwZW5kZW5jaWVzIHRvIGJ1aWxkIGEKKyMgdW5pZmllZCAiYW5n
bGVfdW5pdHRlc3RzIiB0YXJnZXQsIHdoaWNoIGNvbnRhaW5zIGFsbCBvZiBBTkdMRSdzCisjIHRl
c3RzIHRoYXQgZG9uJ3QgcmVxdWlyZSBhIGZ1bGx5IGZ1bmN0aW9uYWwgQU5HTEUgaW4gb3JkZXIg
dG8gcnVuCisjIChjb21waWxlciB0ZXN0cywgcHJlcHJvY2Vzc29yIHRlc3RzLCBldGMuKS4gSXQg
cmVxdWlyZXMgYSBwYXJlbnQKKyMgdGFyZ2V0IHRvIGluY2x1ZGUgdGhpcyBneXBpIGluIGFuIGV4
ZWN1dGFibGUgdGFyZ2V0IGNvbnRhaW5pbmcgYQorIyBndGVzdCBoYXJuZXNzIGluIGEgbWFpbi5j
cHAuCisKK3sKKyAgICAndmFyaWFibGVzJzoKKyAgICB7CisgICAgICAgICdhbmdsZV91bml0dGVz
dHNfc291cmNlcyc6CisgICAgICAgIFsKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9j
b21tb24vQml0U2V0SXRlcmF0b3JfdW5pdHRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xl
X3BhdGgpL3NyYy9jb21tb24vT3B0aW9uYWxfdW5pdHRlc3QuY3BwJywKKyAgICAgICAgICAgICc8
KGFuZ2xlX3BhdGgpL3NyYy9jb21tb24vbWF0aHV0aWxfdW5pdHRlc3QuY3BwJywKKyAgICAgICAg
ICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9jb21tb24vbWF0cml4X3V0aWxzX3VuaXR0ZXN0LmNwcCcs
CisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvY29tbW9uL3N0cmluZ191dGlsc191bml0
dGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2NvbW1vbi91dGlsaXRp
ZXNfdW5pdHRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9saWJBTkdM
RS9CaW5hcnlTdHJlYW1fdW5pdHRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgp
L3NyYy9saWJBTkdMRS9Db25maWdfdW5pdHRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xl
X3BhdGgpL3NyYy9saWJBTkdMRS9GZW5jZV91bml0dGVzdC5jcHAnLAorICAgICAgICAgICAgJzwo
YW5nbGVfcGF0aCkvc3JjL2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRvcl91bml0dGVzdC5jcHAnLAor
ICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2xpYkFOR0xFL0hhbmRsZVJhbmdlQWxsb2Nh
dG9yX3VuaXR0ZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvbGliQU5H
TEUvSW1hZ2VfdW5pdHRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9s
aWJBTkdMRS9JbWFnZUluZGV4SXRlcmF0b3JfdW5pdHRlc3QuY3BwJywKKyAgICAgICAgICAgICc8
KGFuZ2xlX3BhdGgpL3NyYy9saWJBTkdMRS9Qcm9ncmFtX3VuaXR0ZXN0LmNwcCcsCisgICAgICAg
ICAgICAnPChhbmdsZV9wYXRoKS9zcmMvbGliQU5HTEUvUmVzb3VyY2VNYW5hZ2VyX3VuaXR0ZXN0
LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvbGliQU5HTEUvU3VyZmFjZV91
bml0dGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2xpYkFOR0xFL1Ry
YW5zZm9ybUZlZWRiYWNrX3VuaXR0ZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRo
KS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvQnVmZmVySW1wbF9tb2NrLmgnLAorICAgICAgICAgICAg
JzwoYW5nbGVfcGF0aCkvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0ZyYW1lYnVmZmVySW1wbF9tb2Nr
LmgnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1By
b2dyYW1JbXBsX21vY2suaCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvUmVuZGVyYnVmZmVySW1wbF9tb2NrLmgnLAorICAgICAgICAgICAgJzwoYW5n
bGVfcGF0aCkvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0ltYWdlSW1wbF9tb2NrLmgnLAorICAgICAg
ICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1RleHR1cmVJbXBsX21v
Y2suaCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
VHJhbnNmb3JtRmVlZGJhY2tJbXBsX21vY2suaCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRo
KS9zcmMvbGliQU5HTEUvc2lnbmFsX3V0aWxzX3VuaXR0ZXN0LmNwcCcsCisgICAgICAgICAgICAn
PChhbmdsZV9wYXRoKS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTX3VuaXR0ZXN0LmNwcCcsCisg
ICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvYW5nbGVfdW5pdHRlc3RzX3V0aWxz
LmgnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3Rz
L0FQSV90ZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvY29t
cGlsZXJfdGVzdHMvQ29sbGVjdFZhcmlhYmxlc190ZXN0LmNwcCcsCisgICAgICAgICAgICAnPChh
bmdsZV9wYXRoKS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvQ29uc3RhbnRGb2xkaW5nX3Rlc3Qu
Y3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0
cy9EZWJ1Z1NoYWRlclByZWNpc2lvbl90ZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9w
YXRoKS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0
X3Rlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9jb21waWxl
cl90ZXN0cy9FeHByZXNzaW9uTGltaXRfdGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVf
cGF0aCkvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0VYVF9ibGVuZF9mdW5jX2V4dGVuZGVkX3Rl
c3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9jb21waWxlcl90
ZXN0cy9GcmFnRGVwdGhfdGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3Jj
L3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0dMU0xDb21wYXRpYmlsaXR5T3V0cHV0X3Rlc3QuY3BwJywK
KyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9JbnRl
cm1Ob2RlX3Rlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9j
b21waWxlcl90ZXN0cy9NYWxmb3JtZWRTaGFkZXJfdGVzdC5jcHAnLAorICAgICAgICAgICAgJzwo
YW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL05WX2RyYXdfYnVmZmVyc190ZXN0
LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvY29tcGlsZXJfdGVz
dHMvUGFja19VbnBhY2tfdGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3Jj
L3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1BydW5lRW1wdHlEZWNsYXJhdGlvbnNfdGVzdC5jcHAnLAor
ICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1BydW5l
VW51c2VkRnVuY3Rpb25zX3Rlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3Ny
Yy90ZXN0cy9jb21waWxlcl90ZXN0cy9RdWFsaWZpY2F0aW9uT3JkZXJFU1NMMzFfdGVzdC5jcHAn
LAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1F1
YWxpZmljYXRpb25PcmRlcl90ZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9z
cmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvUmVjb3JkQ29uc3RhbnRQcmVjaXNpb25fdGVzdC5jcHAn
LAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1Jl
bW92ZVBvd190ZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMv
Y29tcGlsZXJfdGVzdHMvU2hhZGVyRXh0ZW5zaW9uX3Rlc3QuY3BwJywKKyAgICAgICAgICAgICc8
KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9TaGFkZXJWYXJpYWJsZV90ZXN0
LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvY29tcGlsZXJfdGVz
dHMvU2hDb21waWxlX3Rlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90
ZXN0cy9jb21waWxlcl90ZXN0cy9UeXBlVHJhY2tpbmdfdGVzdC5jcHAnLAorICAgICAgICAgICAg
JzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1ZhcmlhYmxlUGFja2VyX3Rl
c3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9jb21waWxlcl90
ZXN0cy9Xb3JrR3JvdXBTaXplX3Rlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgp
L3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvY2hhcl90ZXN0LmNwcCcsCisgICAgICAgICAg
ICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2NvbW1lbnRfdGVz
dC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nv
cl90ZXN0cy9kZWZpbmVfdGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3Jj
L3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9lcnJvcl90ZXN0LmNwcCcsCisgICAgICAgICAgICAn
PChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2V4dGVuc2lvbl90ZXN0
LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29y
X3Rlc3RzL2lkZW50aWZpZXJfdGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkv
c3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9pZl90ZXN0LmNwcCcsCisgICAgICAgICAgICAn
PChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2lucHV0X3Rlc3QuY3Bw
JywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVz
dHMvbG9jYXRpb25fdGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rl
c3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9Nb2NrRGlhZ25vc3RpY3MuaCcsCisgICAgICAgICAgICAn
PChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL01vY2tEaXJlY3RpdmVI
YW5kbGVyLmgnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3ByZXByb2Nl
c3Nvcl90ZXN0cy9udW1iZXJfdGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkv
c3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9vcGVyYXRvcl90ZXN0LmNwcCcsCisgICAgICAg
ICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL3ByYWdtYV90
ZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcHJlcHJvY2Vz
c29yX3Rlc3RzL1ByZXByb2Nlc3NvclRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3Bh
dGgpL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvUHJlcHJvY2Vzc29yVGVzdC5oJywKKyAg
ICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvc3Bh
Y2VfdGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3ByZXBy
b2Nlc3Nvcl90ZXN0cy90b2tlbl90ZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRo
KS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL3ZlcnNpb25fdGVzdC5jcHAnLAorICAgICAg
ICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvY29tcGlsZXJfdGVzdC5j
cHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvY29t
cGlsZXJfdGVzdC5oJywKKyAgICAgICAgXSwKKyAgICAgICAgIyBUT0RPKGptYWRpbGwpOiBzaG91
bGQgcHJvYmFibHkgY2FsbCB0aGlzIHdpbmRvd3Mgc291cmNlcworICAgICAgICAnYW5nbGVfdW5p
dHRlc3RzX2hsc2xfc291cmNlcyc6CisgICAgICAgIFsKKyAgICAgICAgICAgICc8KGFuZ2xlX3Bh
dGgpL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9VbnJvbGxGbGF0dGVuX3Rlc3QuY3BwJywKKyAg
ICAgICAgXSwKKyAgICB9LAorICAgICMgRXZlcnl0aGluZyBiZWxvdyB0aGlzIGJ1dCB0aGUgV2lu
UlQgY29uZmlndXJhdGlvbiBpcyBkdXBsaWNhdGVkIGluIHRoZSBHTiBidWlsZC4KKyAgICAjIElm
IHlvdSBjaGFuZ2UgYW55dGhpbmcgYWxzbyBjaGFuZ2UgYW5nbGUvc3JjL3Rlc3RzL0JVSUxELmdu
CisgICAgJ2RlcGVuZGVuY2llcyc6CisgICAgWworICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMv
YW5nbGUuZ3lwOmxpYkFOR0xFJywKKyAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2FuZ2xlLmd5
cDpwcmVwcm9jZXNzb3InLAorICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvYW5nbGUuZ3lwOnRy
YW5zbGF0b3Jfc3RhdGljJywKKyAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3Rlc3Rz
Lmd5cDphbmdsZV90ZXN0X3N1cHBvcnQnLAorICAgIF0sCisgICAgJ2luY2x1ZGVfZGlycyc6Cisg
ICAgWworICAgICAgICAnPChhbmdsZV9wYXRoKS9pbmNsdWRlJywKKyAgICAgICAgJzwoYW5nbGVf
cGF0aCkvc3JjJywKKyAgICBdLAorICAgICdzb3VyY2VzJzoKKyAgICBbCisgICAgICAgICc8QChh
bmdsZV91bml0dGVzdHNfc291cmNlcyknLAorICAgIF0sCisgICAgJ2NvbmRpdGlvbnMnOgorICAg
IFsKKyAgICAgICAgWydhbmdsZV9idWlsZF93aW5ydD09MScsCisgICAgICAgIHsKKyAgICAgICAg
ICAgICdzb3VyY2VzJzoKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAnPChhbmdsZV9w
YXRoKS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbnJ0L0NvcmVXaW5kb3dOYXRp
dmVXaW5kb3dfdW5pdHRlc3QuY3BwJywKKyAgICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbnJ0L1N3YXBDaGFpblBhbmVsTmF0aXZl
V2luZG93X3VuaXR0ZXN0LmNwcCcsCisgICAgICAgICAgICBdLAorICAgICAgICAgICAgJ2RlZmlu
ZXMnOgorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICdBTkdMRV9FTkFCTEVfRDNEMTEn
LAorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICdtc3ZzX3NldHRpbmdzJzoKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAnVkNMaW5rZXJUb29sJzoKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICdBZGRpdGlvbmFsRGVwZW5kZW5jaWVzJzoKKyAgICAgICAg
ICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgJ3J1bnRpbWVvYmplY3QubGli
JywKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgfSwKKyAgICAgICAgfV0sCisgICAgICAgIFsnT1M9PSJ3aW4iJywKKyAgICAgICAgeworICAg
ICAgICAgICAgIyBUT0RPKGN3YWxsZXopOiBtYWtlIHRoaXMgYW5nbGVfZW5hYmxlX2hsc2wgaW5z
dGVhZCAocmVxdWlyZXMgZ3lwIGZpbGUgcmVmYWN0b3JpbmcpCisgICAgICAgICAgICAnZGVmaW5l
cyc6CisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgJ0FOR0xFX0VOQUJMRV9ITFNMJywK
KyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAnc291cmNlcyc6CisgICAgICAgICAgICBbCisg
ICAgICAgICAgICAgICAgJzxAKGFuZ2xlX3VuaXR0ZXN0c19obHNsX3NvdXJjZXMpJywKKyAgICAg
ICAgICAgIF0sCisgICAgICAgIH1dLAorICAgIF0sCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvYW5nbGVfdW5pdHRlc3RzX21haW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV91bml0dGVzdHNfbWFpbi5j
cHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2Fu
Z2xlX3VuaXR0ZXN0c19tYWluLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2IEBACisv
LworLy8gQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiR0xTTEFO
Ry9TaGFkZXJMYW5nLmgiCisKK2NsYXNzIENvbXBpbGVyVGVzdEVudmlyb25tZW50IDogcHVibGlj
IHRlc3Rpbmc6OkVudmlyb25tZW50Cit7CisgIHB1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgU2V0
VXAoKQorICAgIHsKKyAgICAgICAgaWYgKCFTaEluaXRpYWxpemUoKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgRkFJTCgpIDw8ICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgY29tcGlsZXIuIjsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCisgICAgewor
ICAgICAgICBpZiAoIVNoRmluYWxpemUoKSkKKyAgICAgICAgeworICAgICAgICAgICAgRkFJTCgp
IDw8ICJGYWlsZWQgdG8gZmluYWxpemUgdGhlIGNvbXBpbGVyLiI7CisgICAgICAgIH0KKyAgICB9
Cit9OworCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAgdGVzdGluZzo6
SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICAgIHRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RF
bnZpcm9ubWVudChuZXcgQ29tcGlsZXJUZXN0RW52aXJvbm1lbnQoKSk7CisgICAgaW50IHJ0ID0g
UlVOX0FMTF9URVNUUygpOworICAgIHJldHVybiBydDsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV91bml0dGVzdHNfdXRpbHMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvYW5nbGVfdW5pdHRlc3RzX3V0aWxz
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2Fu
Z2xlX3VuaXR0ZXN0c191dGlscy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTI0IEBACisv
LworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworLy8gYW5nbGVfdW5pdHRlc3RzX3V0aWxzLmg6CisvLyAgIEhlbHBlcnMgZm9yIG1v
Y2tpbmcgYW5kIHVuaXQgdGVzdGluZy4KKworI2lmbmRlZiBURVNUU19BTkdMRV9VTklUVEVTVFNf
VVRJTFNfSF8KKyNkZWZpbmUgVEVTVFNfQU5HTEVfVU5JVFRFU1RTX1VUSUxTX0hfCisKKyNpbmNs
dWRlICJsaWJBTkdMRS9TdXJmYWNlLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvQ29u
dGV4dEltcGwuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9FR0xJbXBsRmFjdG9yeS5o
IgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0dMSW1wbEZhY3RvcnkuaCIKKworbmFtZXNw
YWNlIHJ4Cit7CisKKy8vIFVzZWZ1bCB3aGVuIG1vY2tpbmcgYSBwYXJ0IG9mIHRoZSBHTEltcGxG
YWN0b3J5IGNsYXNzCitjbGFzcyBOdWxsRmFjdG9yeSA6IHB1YmxpYyBHTEltcGxGYWN0b3J5Cit7
CisgIHB1YmxpYzoKKyAgICBOdWxsRmFjdG9yeSgpIHt9CisKKyAgICAvLyBTaGFkZXIgY3JlYXRp
b24KKyAgICBDb21waWxlckltcGwgKmNyZWF0ZUNvbXBpbGVyKCkgb3ZlcnJpZGUgeyByZXR1cm4g
bnVsbHB0cjsgfQorICAgIFNoYWRlckltcGwgKmNyZWF0ZVNoYWRlcihjb25zdCBnbDo6U2hhZGVy
U3RhdGUgJmRhdGEpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBQcm9ncmFtSW1w
bCAqY3JlYXRlUHJvZ3JhbShjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZkYXRhKSBvdmVycmlkZSB7
IHJldHVybiBudWxscHRyOyB9CisKKyAgICAvLyBGcmFtZWJ1ZmZlciBjcmVhdGlvbgorICAgIEZy
YW1lYnVmZmVySW1wbCAqY3JlYXRlRnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3Rh
dGUgJmRhdGEpIG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisKKyAgICAvLyBUZXh0dXJlIGNyZWF0aW9uCisgICAgVGV4dHVyZUltcGwgKmNyZWF0ZVRleHR1
cmUoY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmZGF0YSkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0
cjsgfQorCisgICAgLy8gUmVuZGVyYnVmZmVyIGNyZWF0aW9uCisgICAgUmVuZGVyYnVmZmVySW1w
bCAqY3JlYXRlUmVuZGVyYnVmZmVyKCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorCisg
ICAgLy8gQnVmZmVyIGNyZWF0aW9uCisgICAgQnVmZmVySW1wbCAqY3JlYXRlQnVmZmVyKCkgb3Zl
cnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorCisgICAgLy8gVmVydGV4IEFycmF5IGNyZWF0aW9u
CisgICAgVmVydGV4QXJyYXlJbXBsICpjcmVhdGVWZXJ0ZXhBcnJheShjb25zdCBnbDo6VmVydGV4
QXJyYXlTdGF0ZSAmZGF0YSkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKworICAgIC8vIFF1ZXJ5IGFuZCBGZW5jZSBjcmVhdGlvbgorICAgIFF1ZXJ5SW1w
bCAqY3JlYXRlUXVlcnkoR0xlbnVtIHR5cGUpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0K
KyAgICBGZW5jZU5WSW1wbCAqY3JlYXRlRmVuY2VOVigpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxw
dHI7IH0KKyAgICBGZW5jZVN5bmNJbXBsICpjcmVhdGVGZW5jZVN5bmMoKSBvdmVycmlkZSB7IHJl
dHVybiBudWxscHRyOyB9CisKKyAgICAvLyBUcmFuc2Zvcm0gRmVlZGJhY2sgY3JlYXRpb24KKyAg
ICBUcmFuc2Zvcm1GZWVkYmFja0ltcGwgKmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKGNvbnN0IGds
OjpUcmFuc2Zvcm1GZWVkYmFja1N0YXRlICZzdGF0ZSkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIC8vIFNhbXBsZXIgb2JqZWN0IGNyZWF0aW9u
CisgICAgU2FtcGxlckltcGwgKmNyZWF0ZVNhbXBsZXIoKSBvdmVycmlkZSB7IHJldHVybiBudWxs
cHRyOyB9CisKKyAgICBzdGQ6OnZlY3RvcjxQYXRoSW1wbCAqPiBjcmVhdGVQYXRocyhHTHNpemVp
IHJhbmdlKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6dmVjdG9yPFBhdGhJ
bXBsICo+KCk7CisgICAgfQorfTsKKworLy8gQSBjbGFzcyB3aXRoIGFsbCB0aGUgZmFjdG9yeSBt
ZXRob2RzIG1vY2tlZC4KK2NsYXNzIE1vY2tHTEZhY3RvcnkgOiBwdWJsaWMgR0xJbXBsRmFjdG9y
eQoreworICBwdWJsaWM6CisgICAgTU9DS19NRVRIT0QxKGNyZWF0ZUNvbnRleHQsIENvbnRleHRJ
bXBsICooY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmKSk7CisgICAgTU9DS19NRVRIT0QwKGNyZWF0
ZUNvbXBpbGVyLCBDb21waWxlckltcGwgKigpKTsKKyAgICBNT0NLX01FVEhPRDEoY3JlYXRlU2hh
ZGVyLCBTaGFkZXJJbXBsICooY29uc3QgZ2w6OlNoYWRlclN0YXRlICYpKTsKKyAgICBNT0NLX01F
VEhPRDEoY3JlYXRlUHJvZ3JhbSwgUHJvZ3JhbUltcGwgKihjb25zdCBnbDo6UHJvZ3JhbVN0YXRl
ICYpKTsKKyAgICBNT0NLX01FVEhPRDEoY3JlYXRlRnJhbWVidWZmZXIsIEZyYW1lYnVmZmVySW1w
bCAqKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICYpKTsKKyAgICBNT0NLX01FVEhPRDEoY3Jl
YXRlVGV4dHVyZSwgVGV4dHVyZUltcGwgKihjb25zdCBnbDo6VGV4dHVyZVN0YXRlICYpKTsKKyAg
ICBNT0NLX01FVEhPRDAoY3JlYXRlUmVuZGVyYnVmZmVyLCBSZW5kZXJidWZmZXJJbXBsICooKSk7
CisgICAgTU9DS19NRVRIT0QwKGNyZWF0ZUJ1ZmZlciwgQnVmZmVySW1wbCAqKCkpOworICAgIE1P
Q0tfTUVUSE9EMShjcmVhdGVWZXJ0ZXhBcnJheSwgVmVydGV4QXJyYXlJbXBsICooY29uc3QgZ2w6
OlZlcnRleEFycmF5U3RhdGUgJikpOworICAgIE1PQ0tfTUVUSE9EMShjcmVhdGVRdWVyeSwgUXVl
cnlJbXBsICooR0xlbnVtIHR5cGUpKTsKKyAgICBNT0NLX01FVEhPRDAoY3JlYXRlRmVuY2VOViwg
RmVuY2VOVkltcGwgKigpKTsKKyAgICBNT0NLX01FVEhPRDAoY3JlYXRlRmVuY2VTeW5jLCBGZW5j
ZVN5bmNJbXBsICooKSk7CisgICAgTU9DS19NRVRIT0QxKGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNr
LAorICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1GZWVkYmFja0ltcGwgKihjb25zdCBnbDo6VHJh
bnNmb3JtRmVlZGJhY2tTdGF0ZSAmKSk7CisgICAgTU9DS19NRVRIT0QwKGNyZWF0ZVNhbXBsZXIs
IFNhbXBsZXJJbXBsICooKSk7CisgICAgTU9DS19NRVRIT0QxKGNyZWF0ZVBhdGhzLCBzdGQ6OnZl
Y3RvcjxQYXRoSW1wbCAqPihHTHNpemVpKSk7Cit9OworCitjbGFzcyBNb2NrRUdMRmFjdG9yeSA6
IHB1YmxpYyBFR0xJbXBsRmFjdG9yeQoreworICBwdWJsaWM6CisgICAgTU9DS19NRVRIT0Q0KGNy
ZWF0ZVdpbmRvd1N1cmZhY2UsCisgICAgICAgICAgICAgICAgIFN1cmZhY2VJbXBsICooY29uc3Qg
ZWdsOjpTdXJmYWNlU3RhdGUgJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBlZ2w6OkNvbmZpZyAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2
ZVdpbmRvd1R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpB
dHRyaWJ1dGVNYXAgJikpOworICAgIE1PQ0tfTUVUSE9EMyhjcmVhdGVQYnVmZmVyU3VyZmFjZSwK
KyAgICAgICAgICAgICAgICAgU3VyZmFjZUltcGwgKihjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAm
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICosCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJikp
OworICAgIE1PQ0tfTUVUSE9ENChjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlciwKKyAgICAg
ICAgICAgICAgICAgU3VyZmFjZUltcGwgKihjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICosCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICYpKTsKKyAgICBNT0NLX01F
VEhPRDQoY3JlYXRlUGl4bWFwU3VyZmFjZSwKKyAgICAgICAgICAgICAgICAgU3VyZmFjZUltcGwg
Kihjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGVnbDo6Q29uZmlnICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TmF0aXZlUGl4bWFwVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBl
Z2w6OkF0dHJpYnV0ZU1hcCAmKSk7CisgICAgTU9DS19NRVRIT0QzKGNyZWF0ZUltYWdlLCBJbWFn
ZUltcGwgKihFR0xlbnVtLCBlZ2w6OkltYWdlU2libGluZyAqLCBjb25zdCBlZ2w6OkF0dHJpYnV0
ZU1hcCAmKSk7CisgICAgTU9DS19NRVRIT0QxKGNyZWF0ZUNvbnRleHQsIENvbnRleHRJbXBsICoo
Y29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmKSk7CisgICAgTU9DS19NRVRIT0QyKGNyZWF0ZVN0cmVh
bVByb2R1Y2VyRDNEVGV4dHVyZU5WMTIsCisgICAgICAgICAgICAgICAgIFN0cmVhbVByb2R1Y2Vy
SW1wbCAqKGVnbDo6U3RyZWFtOjpDb25zdW1lclR5cGUsIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFw
ICYpKTsKK307CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgLy8gVEVTVFNfQU5HTEVf
VU5JVFRFU1RTX1VUSUxTX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvZGVxcC5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9kZXFwLmd5cGkJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2RlcXAuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5MDQgQEAKKyMg
Q29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCit7
CisgICAgJ3ZhcmlhYmxlcyc6CisgICAgeworICAgICAgICAjIERlZmluZSB0aGVzZSB2YXJpYWJs
ZXMgd2l0aGluIGFuIGlubmVyIHZhcmlhYmxlcyBkaWN0LgorICAgICAgICAjIFRoaXMgaXMgbmVj
ZXNzYXJ5IHRvIGdldCB0aGVzZSB2YXJpYWJsZXMgZGVmaW5lZCBmb3IgdGhlIGNvbmRpdGlvbnMK
KyAgICAgICAgIyB3aXRoaW4gdGhlIG91dGVyIHZhcmlhYmxlcyBkaWN0IHdoaWNoIG9wZXJhdGUg
b24gdGhlc2UgdmFyaWFibGVzLgorICAgICAgICAndmFyaWFibGVzJzoKKyAgICAgICAgeworICAg
ICAgICAgICAgJ2FuZ2xlX2J1aWxkX3dpbnJ0JSc6IDAsCisgICAgICAgIH0sCisKKyAgICAgICAg
IyBDb3B5IGNvbmRpdGlvbmFsbHktc2V0IHZhcmlhYmxlcyB0byB0aGUgb3V0ZXIgdmFyaWFibGVz
IGRpY3QuCisgICAgICAgICdhbmdsZV9idWlsZF93aW5ydCUnOiAnPChhbmdsZV9idWlsZF93aW5y
dCknLAorCisgICAgICAgICdkZXFwX3BhdGgnOiAnPChERVBUSCkvdGhpcmRfcGFydHkvZGVxcC9z
cmMnLAorICAgICAgICAnbGlicG5nX3BhdGgnOiAnPChERVBUSCkvdGhpcmRfcGFydHkvbGlicG5n
JywKKyAgICAgICAgJ3psaWJfcGF0aCc6ICc8KERFUFRIKS90aGlyZF9wYXJ0eS96bGliJywKKwor
ICAgICAgICAnYW5nbGVfYnVpbGRfZGVxcF9saWJyYXJpZXMlJyA6IDAsCisgICAgICAgICdhbmds
ZV9idWlsZF9kZXFwX2d0ZXN0X3N1cHBvcnQlJyA6IDAsCisgICAgICAgICdhbmdsZV9idWlsZF9k
ZXFwX2V4ZWN1dGFibGVzJScgOiAwLAorICAgICAgICAnYW5nbGVfYnVpbGRfZGVxcF9ndGVzdF9l
eGVjdXRhYmxlcyUnIDowLAorCisgICAgICAgICdjbGFuZ193YXJuaW5nX2ZsYWdzJzoKKyAgICAg
ICAgWworICAgICAgICAgICAgICMgdGN1OjpDb21tYW5kTGluZSBoYXMgdmlydHVhbCBmdW5jdGlv
bnMgYnV0IG5vIHZpcnR1YWwgZGVzdHJ1Y3RvcgorICAgICAgICAgICAgJy1Xbm8tbm8tZGVsZXRl
LW5vbi12aXJ0dWFsLWR0b3InLAorICAgICAgICBdLAorCisgICAgICAgICdkZXFwX3dpbl9jZmxh
Z3MnOgorICAgICAgICBbCisgICAgICAgICAgICAnL0VIc2MnLCAgICMgZEVRUCByZXF1aXJlcyBl
eGNlcHRpb25zCisgICAgICAgICAgICAnL3dkNDA5MScsICMgdHlwZWRlZiBpZ25vcmVkIHdoZW4g
bm8gdmFyaWFibGUgaXMgZGVjbGFyZWQKKyAgICAgICAgICAgICcvd2Q0MTAwJywKKyAgICAgICAg
ICAgICcvd2Q0MTI1JywgIyBkZWNpbWFsIGRpZ2l0IHRlcm1pbmF0ZXMgb2N0YWwgZXNjYXBlIHNl
cXVlbmNlCisgICAgICAgICAgICAnL3dkNDEyNycsICMgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBj
b25zdGFudAorICAgICAgICAgICAgJy93ZDQyNDQnLCAjIHBvc3NpYmxlIGxvc3Mgb2YgZGF0YQor
ICAgICAgICAgICAgJy93ZDQyNDUnLCAjIGFyZ3VtZW50IHNpZ25lZC91bnNpZ25lZCBtaXNtYXRj
aAorICAgICAgICAgICAgJy93ZDQyOTcnLCAjIGZ1bmN0aW9uIGFzc3VtZWQgbm90IHRvIHRocm93
IGFuIGV4Y2VwdGlvbiBidXQgZG9lcworICAgICAgICAgICAgJy93ZDQzODknLCAjIHNpZ25lZC91
bnNpZ25lZCBtaXNtYXRjaAorICAgICAgICAgICAgJy93ZDQ1MTAnLCAjIGRlZmF1bHQgY29uc3Ry
dWN0b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZAorICAgICAgICAgICAgJy93ZDQ1MTInLAorICAg
ICAgICAgICAgJy93ZDQ2MTAnLCAjIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQKKyAgICAgICAgICAg
ICcvd2Q0NjExJywgIyBzZXRqbXAgaW50ZXJhY3Rpb24gbm9uLXBvcnRhYmxlCisgICAgICAgICAg
ICAnL3dkNDcwMScsICMgcG90ZW50aWFsbHkgdW5pbml0IHVzZWQKKyAgICAgICAgICAgICcvd2Q0
NzAyJywgIyB1bnJlYWNoYWJsZSBjb2RlCisgICAgICAgICAgICAnL3dkNDcwNicsICMgYXNzaWdu
bWVudCB3aXRoaW4gY29uZGl0aW9uYWwgZXhwcmVzc2lvbgorICAgICAgICAgICAgJy93ZDQ4Mzgn
LCAjIGNvbnZlcnNpb24gcmVxdWlyZXMgYSBuYXJyb3dpbmcgY29udmVyc2lvbgorICAgICAgICAg
ICAgJy93ZDQ5OTYnLCAjIGRlcHJlY2F0ZWQKKyAgICAgICAgXSwKKyAgICAgICAgJ2RlcXBfZGVm
aW5lcyc6CisgICAgICAgIFsKKyAgICAgICAgICAgICdERVFQX1NVUFBPUlRfR0xFUzMxPTEnLAor
ICAgICAgICAgICAgJ0RFUVBfU1VQUE9SVF9HTEVTMz0xJywKKyAgICAgICAgICAgICdERVFQX1NV
UFBPUlRfR0xFUzI9MScsCisgICAgICAgICAgICAnREVRUF9TVVBQT1JUX0VHTD0xJywKKyAgICAg
ICAgICAgICdERVFQX1RBUkdFVF9OQU1FPSJhbmdsZSInLAorICAgICAgICAgICAgJ0RFUVBfR0xF
UzMxX1JVTlRJTUVfTE9BRD0xJywKKyAgICAgICAgICAgICdERVFQX0dMRVMzX1JVTlRJTUVfTE9B
RD0xJywKKyAgICAgICAgICAgICdERVFQX0dMRVMyX1JVTlRJTUVfTE9BRD0xJywKKyAgICAgICAg
ICAgICdRUF9TVVBQT1JUX1BORz0xJywKKyAgICAgICAgICAgICdfSEFTX0VYQ0VQVElPTlM9MScs
CisgICAgICAgIF0sCisgICAgICAgICdkZXFwX3VuZGVmaW5lcyc6CisgICAgICAgIFsKKyAgICAg
ICAgICAgICdXSU4zMl9MRUFOX0FORF9NRUFOJywKKyAgICAgICAgICAgICdOT01JTk1BWCcsCisg
ICAgICAgICAgICAnX0hBU19FWENFUFRJT05TPTAnLAorICAgICAgICBdLAorICAgICAgICAnZGVx
cF9pbmNsdWRlX2RpcnMnOgorICAgICAgICBbCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2V4
ZWN1dG9yJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZXhlY3NlcnZlcicsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9jb21tb24nLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlYmFzZScsCisgICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9m
cmFtZXdvcmsvZGVsaWJzL2RlcG9vbCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1l
d29yay9kZWxpYnMvZGV0aHJlYWQnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdv
cmsvZGVsaWJzL2RldXRpbCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9k
ZWxpYnMvZGVzdHJlYW0nLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZWds
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2VnbC93cmFwcGVyJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL2ZyYW1ld29yay9vcGVuZ2wvc2ltcGxlcmVmZXJlbmNlJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbC93cmFwcGVyJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3BsYXRmb3JtL251bGwnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9mcmFtZXdvcmsvcXBoZWxwZXInLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9mcmFtZXdvcmsvcmFuZG9tc2hhZGVycycsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2Zy
YW1ld29yay9yZWZlcmVuY2VyZW5kZXJlcicsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczInLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1
bmN0aW9uYWwnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2FjY3Vy
YWN5JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9wZXJmb3JtYW5j
ZScsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvc3RyZXNzJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi91c2VjYXNlcycsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzL2FjY3VyYWN5JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMy9wZXJmb3JtYW5jZScsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMvc3RyZXNzJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
My91c2VjYXNlcycsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxJywK
KyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbCcsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL3N0cmVzcycsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xzaGFyZWQnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsdXNlY2FzZXMnLAorICAgICAgICAgICAgJzwobGlicG5nX3BhdGgp
JywKKyAgICAgICAgICAgICc8KHpsaWJfcGF0aCknLAorICAgICAgICBdLAorICAgICAgICAnZGVx
cF9nbGVzMl9zb3VyY2VzJzoKKyAgICAgICAgWworICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMyL2FjY3VyYWN5L2VzMmFBY2N1cmFjeVRlc3RzLmNwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvYWNjdXJhY3kvZXMyYUFjY3VyYWN5VGVzdHMu
aHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9hY2N1cmFjeS9l
czJhVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczIvYWNjdXJhY3kvZXMyYVRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ocHAnLAor
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2FjY3VyYWN5L2VzMmFUZXh0
dXJlTWlwbWFwVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMi9hY2N1cmFjeS9lczJhVGV4dHVyZU1pcG1hcFRlc3RzLmhwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvYWNjdXJhY3kvZXMyYVZhcnlpbmdJbnRlcnBvbGF0
aW9uVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9h
Y2N1cmFjeS9lczJhVmFyeWluZ0ludGVycG9sYXRpb25UZXN0cy5ocHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkFwaUNhc2UuY3BwJywK
KyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZB
cGlDYXNlLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVu
Y3Rpb25hbC9lczJmQXR0cmliTG9jYXRpb25UZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkF0dHJpYkxvY2F0aW9uVGVzdHMu
aHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFs
L2VzMmZCbGVuZFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczIvZnVuY3Rpb25hbC9lczJmQmxlbmRUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkJvb2xlYW5TdGF0ZVF1ZXJ5VGVz
dHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlv
bmFsL2VzMmZCb29sZWFuU3RhdGVRdWVyeVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmQnVmZmVyT2JqZWN0UXVlcnlUZXN0
cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9u
YWwvZXMyZkJ1ZmZlck9iamVjdFF1ZXJ5VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZCdWZmZXJUZXN0VXRpbC5jcHAnLAor
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkJ1
ZmZlclRlc3RVdGlsLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czIvZnVuY3Rpb25hbC9lczJmQnVmZmVyV3JpdGVUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkJ1ZmZlcldyaXRlVGVzdHMu
aHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFs
L2VzMmZDbGlwcGluZ1Rlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmQ2xpcHBpbmdUZXN0cy5ocHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkNvbG9yQ2xlYXJUZXN0
LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25h
bC9lczJmQ29sb3JDbGVhclRlc3QuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZEZWJ1Z01hcmtlclRlc3RzLmNwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmRGVidWdNYXJr
ZXJUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1
bmN0aW9uYWwvZXMyZkRlZmF1bHRWZXJ0ZXhBdHRyaWJ1dGVUZXN0cy5jcHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkRlZmF1bHRWZXJ0
ZXhBdHRyaWJ1dGVUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkRlcHRoUmFuZ2VUZXN0cy5jcHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkRlcHRoUmFuZ2VUZXN0
cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9u
YWwvZXMyZkRlcHRoU3RlbmNpbENsZWFyVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZEZXB0aFN0ZW5jaWxDbGVhclRlc3Rz
LmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25h
bC9lczJmRGVwdGhTdGVuY2lsVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZEZXB0aFN0ZW5jaWxUZXN0cy5ocHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkRlcHRo
VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5j
dGlvbmFsL2VzMmZEZXB0aFRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmRGl0aGVyaW5nVGVzdHMuY3BwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZEaXRoZXJpbmdU
ZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0
aW9uYWwvZXMyZkRyYXdUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkRyYXdUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkZib0FwaVRlc3QuY3BwJywK
KyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZG
Ym9BcGlUZXN0LmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIv
ZnVuY3Rpb25hbC9lczJmRmJvQ29tcGxldGVuZXNzVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZGYm9Db21wbGV0ZW5lc3NU
ZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0
aW9uYWwvZXMyZkZib1JlbmRlclRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZGYm9SZW5kZXJUZXN0LmhwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmRmJvU3RhdGVR
dWVyeVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIv
ZnVuY3Rpb25hbC9lczJmRmJvU3RhdGVRdWVyeVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmRmxvYXRTdGF0ZVF1ZXJ5VGVz
dHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlv
bmFsL2VzMmZGbG9hdFN0YXRlUXVlcnlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkZsdXNoRmluaXNoVGVzdHMuY3BwJywK
KyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZG
bHVzaEZpbmlzaFRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczIvZnVuY3Rpb25hbC9lczJmRnJhZ09wSW50ZXJhY3Rpb25UZXN0cy5jcHAnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkZyYWdPcElu
dGVyYWN0aW9uVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMi9mdW5jdGlvbmFsL2VzMmZGdW5jdGlvbmFsVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZGdW5jdGlvbmFsVGVzdHMu
aHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFs
L2VzMmZJbXBsZW1lbnRhdGlvbkxpbWl0VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZJbXBsZW1lbnRhdGlvbkxpbWl0VGVz
dHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlv
bmFsL2VzMmZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmSW50ZWdlclN0YXRlUXVlcnlUZXN0
cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9u
YWwvZXMyZkxpZmV0aW1lVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZMaWZldGltZVRlc3RzLmhwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmTGlnaHRBbW91bnRU
ZXN0LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rp
b25hbC9lczJmTGlnaHRBbW91bnRUZXN0LmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmTXVsdGlzYW1wbGVUZXN0cy5jcHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZk11bHRp
c2FtcGxlVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
Mi9mdW5jdGlvbmFsL2VzMmZOZWdhdGl2ZUJ1ZmZlckFwaVRlc3RzLmNwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmTmVnYXRpdmVCdWZm
ZXJBcGlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMy
L2Z1bmN0aW9uYWwvZXMyZk5lZ2F0aXZlRnJhZ21lbnRBcGlUZXN0cy5jcHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZk5lZ2F0aXZlRnJh
Z21lbnRBcGlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMyL2Z1bmN0aW9uYWwvZXMyZk5lZ2F0aXZlU2hhZGVyQXBpVGVzdHMuY3BwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZOZWdhdGl2ZVNo
YWRlckFwaVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czIvZnVuY3Rpb25hbC9lczJmTmVnYXRpdmVTdGF0ZUFwaVRlc3RzLmNwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmTmVnYXRpdmVTdGF0
ZUFwaVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIv
ZnVuY3Rpb25hbC9lczJmTmVnYXRpdmVUZXh0dXJlQXBpVGVzdHMuY3BwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZOZWdhdGl2ZVRleHR1
cmVBcGlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMy
L2Z1bmN0aW9uYWwvZXMyZk5lZ2F0aXZlVmVydGV4QXJyYXlBcGlUZXN0cy5jcHAnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZk5lZ2F0aXZl
VmVydGV4QXJyYXlBcGlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlBvbHlnb25PZmZzZXRUZXN0cy5jcHAnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlBvbHlnb25P
ZmZzZXRUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMy
L2Z1bmN0aW9uYWwvZXMyZlByZXJlcXVpc2l0ZVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmUHJlcmVxdWlzaXRlVGVzdHMu
aHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFs
L2VzMmZSYW5kb21GcmFnbWVudE9wVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZSYW5kb21GcmFnbWVudE9wVGVzdHMuaHBw
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2Vz
MmZSYW5kb21TaGFkZXJUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlJhbmRvbVNoYWRlclRlc3RzLmhwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmUmFzdGVyaXph
dGlvblRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIv
ZnVuY3Rpb25hbC9lczJmUmFzdGVyaXphdGlvblRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmUmJvU3RhdGVRdWVyeVRlc3Rz
LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25h
bC9lczJmUmJvU3RhdGVRdWVyeVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmUmVhZFBpeGVsc1Rlc3RzLmNwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmUmVhZFBp
eGVsc1Rlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIv
ZnVuY3Rpb25hbC9lczJmU2Npc3NvclRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmU2Npc3NvclRlc3RzLmhwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmU2hhZGVy
QWxnb3JpdGhtVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJBbGdvcml0aG1UZXN0cy5ocHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlNoYWRlckFwaVRl
c3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rp
b25hbC9lczJmU2hhZGVyQXBpVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJCdWlsdGluVmFyVGVzdHMuY3BwJywK
KyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZT
aGFkZXJCdWlsdGluVmFyVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJDb25zdEV4cHJUZXN0cy5jcHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlNoYWRl
ckNvbnN0RXhwclRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczIvZnVuY3Rpb25hbC9lczJmU2hhZGVyRGlzY2FyZFRlc3RzLmNwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmU2hhZGVyRGlzY2Fy
ZFRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVu
Y3Rpb25hbC9lczJmU2hhZGVyRXhlY3V0ZVRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJFeGVjdXRlVGVzdC5ocHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMy
ZlNoYWRlckZyYWdEYXRhVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJGcmFnRGF0YVRlc3RzLmhwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmU2hhZGVy
SW5kZXhpbmdUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMyL2Z1bmN0aW9uYWwvZXMyZlNoYWRlckluZGV4aW5nVGVzdHMuaHBwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJJbnZhcmlh
bmNlVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9m
dW5jdGlvbmFsL2VzMmZTaGFkZXJJbnZhcmlhbmNlVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJMb29wVGVzdHMu
Y3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFs
L2VzMmZTaGFkZXJMb29wVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJNYXRyaXhUZXN0cy5jcHAnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlNoYWRlck1h
dHJpeFRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIv
ZnVuY3Rpb25hbC9lczJmU2hhZGVyT3BlcmF0b3JUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlNoYWRlck9wZXJhdG9yVGVz
dHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlv
bmFsL2VzMmZTaGFkZXJSZXR1cm5UZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlNoYWRlclJldHVyblRlc3RzLmhwcCcsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmU2hh
ZGVyU3RhdGVRdWVyeVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmU2hhZGVyU3RhdGVRdWVyeVRlc3RzLmhwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmU2hhZGVy
U3RydWN0VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
Mi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJTdHJ1Y3RUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlNoYWRlclRleHR1cmVGdW5j
dGlvblRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIv
ZnVuY3Rpb25hbC9lczJmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuaHBwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTdGVuY2lsVGVz
dHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlv
bmFsL2VzMmZTdGVuY2lsVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTdHJpbmdRdWVyeVRlc3RzLmNwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmU3RyaW5nUXVl
cnlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1
bmN0aW9uYWwvZXMyZlRleHR1cmVDb21wbGV0ZW5lc3NUZXN0cy5jcHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlRleHR1cmVDb21wbGV0
ZW5lc3NUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMy
L2Z1bmN0aW9uYWwvZXMyZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5jcHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlRleHR1cmVGaWx0ZXJp
bmdUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1
bmN0aW9uYWwvZXMyZlRleHR1cmVGb3JtYXRUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlRleHR1cmVGb3JtYXRUZXN0cy5o
cHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwv
ZXMyZlRleHR1cmVNaXBtYXBUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlRleHR1cmVNaXBtYXBUZXN0cy5ocHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlRleHR1
cmVTaXplVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
Mi9mdW5jdGlvbmFsL2VzMmZUZXh0dXJlU2l6ZVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmVGV4dHVyZVNwZWNpZmljYXRp
b25UZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1
bmN0aW9uYWwvZXMyZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuaHBwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZUZXh0dXJlU3RhdGVR
dWVyeVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIv
ZnVuY3Rpb25hbC9lczJmVGV4dHVyZVN0YXRlUXVlcnlUZXN0cy5ocHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlRleHR1cmVVbml0VGVz
dHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlv
bmFsL2VzMmZUZXh0dXJlVW5pdFRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmVGV4dHVyZVdyYXBUZXN0cy5jcHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlRleHR1
cmVXcmFwVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
Mi9mdW5jdGlvbmFsL2VzMmZVbmlmb3JtQXBpVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZVbmlmb3JtQXBpVGVzdHMuaHBw
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2Vz
MmZWZXJ0ZXhBcnJheVRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZWZXJ0ZXhBcnJheVRlc3QuaHBwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZWZXJ0ZXhUZXh0dXJl
VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5j
dGlvbmFsL2VzMmZWZXJ0ZXhUZXh0dXJlVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMi9wZXJmb3JtYW5jZS9lczJwQmxlbmRUZXN0cy5jcHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNlL2VzMnBCbGVu
ZFRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvcGVy
Zm9ybWFuY2UvZXMycERyYXdDYWxsQmF0Y2hpbmdUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNlL2VzMnBEcmF3Q2FsbEJhdGNoaW5n
VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9wZXJm
b3JtYW5jZS9lczJwUGVyZm9ybWFuY2VUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNlL2VzMnBQZXJmb3JtYW5jZVRlc3RzLmhwcCcs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvcGVyZm9ybWFuY2UvZXMy
cFJlZHVuZGFudFN0YXRlQ2hhbmdlVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMi9wZXJmb3JtYW5jZS9lczJwUmVkdW5kYW50U3RhdGVDaGFuZ2VUZXN0
cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1h
bmNlL2VzMnBTaGFkZXJDb21waWxhdGlvbkNhc2VzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczIvcGVyZm9ybWFuY2UvZXMycFNoYWRlckNvbXBpbGF0aW9uQ2Fz
ZXMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9wZXJmb3Jt
YW5jZS9lczJwU2hhZGVyQ29tcGlsZXJUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNlL2VzMnBTaGFkZXJDb21waWxlclRlc3RzLmhw
cCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvcGVyZm9ybWFuY2Uv
ZXMycFNoYWRlckNvbnRyb2xTdGF0ZW1lbnRUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNlL2VzMnBTaGFkZXJDb250cm9sU3RhdGVt
ZW50VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9w
ZXJmb3JtYW5jZS9lczJwU2hhZGVyT3BlcmF0b3JUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNlL2VzMnBTaGFkZXJPcGVyYXRvclRl
c3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvcGVyZm9y
bWFuY2UvZXMycFNoYWRlck9wdGltaXphdGlvblRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvcGVyZm9ybWFuY2UvZXMycFNoYWRlck9wdGltaXphdGlv
blRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvcGVy
Zm9ybWFuY2UvZXMycFN0YXRlQ2hhbmdlQ2FsbFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvcGVyZm9ybWFuY2UvZXMycFN0YXRlQ2hhbmdlQ2FsbFRl
c3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvcGVyZm9y
bWFuY2UvZXMycFN0YXRlQ2hhbmdlVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMi9wZXJmb3JtYW5jZS9lczJwU3RhdGVDaGFuZ2VUZXN0cy5ocHAnLAor
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNlL2VzMnBU
ZXh0dXJlQ2FzZXMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
Mi9wZXJmb3JtYW5jZS9lczJwVGV4dHVyZUNhc2VzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczIvcGVyZm9ybWFuY2UvZXMycFRleHR1cmVDb3VudFRlc3RzLmNw
cCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvcGVyZm9ybWFuY2Uv
ZXMycFRleHR1cmVDb3VudFRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczIvcGVyZm9ybWFuY2UvZXMycFRleHR1cmVGaWx0ZXJpbmdUZXN0cy5jcHAnLAor
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNlL2VzMnBU
ZXh0dXJlRmlsdGVyaW5nVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMi9wZXJmb3JtYW5jZS9lczJwVGV4dHVyZUZvcm1hdFRlc3RzLmNwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvcGVyZm9ybWFuY2UvZXMycFRleHR1
cmVGb3JtYXRUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMyL3BlcmZvcm1hbmNlL2VzMnBUZXh0dXJlVXBsb2FkVGVzdHMuY3BwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9wZXJmb3JtYW5jZS9lczJwVGV4dHVyZVVwbG9h
ZFRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvc3Ry
ZXNzL2VzMnNEcmF3VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMi9zdHJlc3MvZXMyc0RyYXdUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMyL3N0cmVzcy9lczJzTG9uZ1J1bm5pbmdUZXN0cy5jcHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3N0cmVzcy9lczJzTG9uZ1J1bm5p
bmdUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3N0
cmVzcy9lczJzTWVtb3J5VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMi9zdHJlc3MvZXMyc01lbW9yeVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvc3RyZXNzL2VzMnNTcGVjaWFsRmxvYXRUZXN0cy5jcHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3N0cmVzcy9lczJzU3Bl
Y2lhbEZsb2F0VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMi9zdHJlc3MvZXMyc1N0cmVzc1Rlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczIvc3RyZXNzL2VzMnNTdHJlc3NUZXN0cy5ocHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3N0cmVzcy9lczJzVmVydGV4QXJyYXlUZXN0
cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3N0cmVzcy9l
czJzVmVydGV4QXJyYXlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMyL3RlczJDYXBhYmlsaXR5VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMi90ZXMyQ2FwYWJpbGl0eVRlc3RzLmhwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvdGVzMkNvbnRleHQuY3BwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi90ZXMyQ29udGV4dC5ocHAnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3RlczJJbmZvVGVzdHMuY3BwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi90ZXMySW5mb1Rlc3RzLmhwcCcs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvdGVzMlRlc3RDYXNlLmNw
cCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvdGVzMlRlc3RDYXNl
LmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvdGVzMlRlc3RQ
YWNrYWdlLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvdGVz
MlRlc3RQYWNrYWdlLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czIvdGVzMlRlc3RQYWNrYWdlRW50cnkuY3BwJywKKyAgICAgICAgXSwKKyAgICAgICAgJ2RlcXBf
Z2xlczNfc291cmNlcyc6CisgICAgICAgIFsKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMy9hY2N1cmFjeS9lczNhQWNjdXJhY3lUZXN0cy5jcHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2FjY3VyYWN5L2VzM2FBY2N1cmFjeVRlc3RzLmhw
cCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvYWNjdXJhY3kvZXMz
YVRleHR1cmVGaWx0ZXJpbmdUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzL2FjY3VyYWN5L2VzM2FUZXh0dXJlRmlsdGVyaW5nVGVzdHMuaHBwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9hY2N1cmFjeS9lczNhVGV4dHVy
ZU1pcG1hcFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMvYWNjdXJhY3kvZXMzYVRleHR1cmVNaXBtYXBUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2FjY3VyYWN5L2VzM2FWYXJ5aW5nSW50ZXJwb2xhdGlv
blRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvYWNj
dXJhY3kvZXMzYVZhcnlpbmdJbnRlcnBvbGF0aW9uVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZBcGlDYXNlLmNwcCcsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmQXBp
Q2FzZS5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0
aW9uYWwvZXMzZkFTVENEZWNvbXByZXNzaW9uQ2FzZXMuY3BwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZBU1RDRGVjb21wcmVzc2lvbkNh
c2VzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rp
b25hbC9lczNmQXR0cmliTG9jYXRpb25UZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkF0dHJpYkxvY2F0aW9uVGVzdHMuaHBw
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2Vz
M2ZCbGVuZFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMvZnVuY3Rpb25hbC9lczNmQmxlbmRUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkJvb2xlYW5TdGF0ZVF1ZXJ5VGVzdHMu
Y3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFs
L2VzM2ZCb29sZWFuU3RhdGVRdWVyeVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmQnVmZmVyQ29weVRlc3RzLmNwcCcsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmQnVm
ZmVyQ29weVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMvZnVuY3Rpb25hbC9lczNmQnVmZmVyTWFwVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZCdWZmZXJNYXBUZXN0cy5ocHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMz
ZkJ1ZmZlck9iamVjdFF1ZXJ5VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZCdWZmZXJPYmplY3RRdWVyeVRlc3RzLmhwcCcs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNm
QnVmZmVyV3JpdGVUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkJ1ZmZlcldyaXRlVGVzdHMuaHBwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZCdWlsdGluUHJlY2lz
aW9uVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9m
dW5jdGlvbmFsL2VzM2ZCdWlsdGluUHJlY2lzaW9uVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZDbGlwcGluZ1Rlc3RzLmNw
cCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9l
czNmQ2xpcHBpbmdUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkNvbG9yQ2xlYXJUZXN0LmNwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmQ29sb3JDbGVhclRlc3Qu
aHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFs
L2VzM2ZDb21wcmVzc2VkVGV4dHVyZVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmQ29tcHJlc3NlZFRleHR1cmVUZXN0cy5o
cHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwv
ZXMzZkRlZmF1bHRWZXJ0ZXhBcnJheU9iamVjdFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRGVmYXVsdFZlcnRleEFycmF5
T2JqZWN0VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
My9mdW5jdGlvbmFsL2VzM2ZEZWZhdWx0VmVydGV4QXR0cmlidXRlVGVzdHMuY3BwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZEZWZhdWx0
VmVydGV4QXR0cmlidXRlVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZEZXB0aFN0ZW5jaWxDbGVhclRlc3RzLmNwcCcsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRGVw
dGhTdGVuY2lsQ2xlYXJUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkRlcHRoU3RlbmNpbFRlc3RzLmNwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRGVwdGhTdGVu
Y2lsVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9m
dW5jdGlvbmFsL2VzM2ZEZXB0aFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRGVwdGhUZXN0cy5ocHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkRpdGhlcmluZ1Rl
c3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rp
b25hbC9lczNmRGl0aGVyaW5nVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZEcmF3VGVzdHMuY3BwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZEcmF3VGVzdHMuaHBw
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2Vz
M2ZGYm9BcGlUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzL2Z1bmN0aW9uYWwvZXMzZkZib0FwaVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRmJvQ29sb3JidWZmZXJUZXN0cy5j
cHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwv
ZXMzZkZib0NvbG9yYnVmZmVyVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZGYm9Db21wbGV0ZW5lc3NUZXN0cy5jcHAnLAor
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZi
b0NvbXBsZXRlbmVzc1Rlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRmJvRGVwdGhidWZmZXJUZXN0cy5jcHAnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZib0RlcHRo
YnVmZmVyVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
My9mdW5jdGlvbmFsL2VzM2ZGYm9JbnZhbGlkYXRlVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZGYm9JbnZhbGlkYXRlVGVz
dHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlv
bmFsL2VzM2ZGYm9NdWx0aXNhbXBsZVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRmJvTXVsdGlzYW1wbGVUZXN0cy5ocHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMz
ZkZib1JlbmRlclRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMy9mdW5jdGlvbmFsL2VzM2ZGYm9SZW5kZXJUZXN0LmhwcCcsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRmJvU3RhdGVRdWVyeVRlc3Rz
LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25h
bC9lczNmRmJvU3RhdGVRdWVyeVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRmJvU3RlbmNpbGJ1ZmZlclRlc3RzLmNwcCcs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNm
RmJvU3RlbmNpbGJ1ZmZlclRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRmJvVGVzdENhc2UuY3BwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZGYm9UZXN0Q2FzZS5o
cHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwv
ZXMzZkZib1Rlc3RVdGlsLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczMvZnVuY3Rpb25hbC9lczNmRmJvVGVzdFV0aWwuaHBwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZGbG9hdFN0YXRlUXVlcnlUZXN0
cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9u
YWwvZXMzZkZsb2F0U3RhdGVRdWVyeVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRmx1c2hGaW5pc2hUZXN0cy5jcHAnLAor
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZs
dXNoRmluaXNoVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMy9mdW5jdGlvbmFsL2VzM2ZGcmFnRGVwdGhUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZyYWdEZXB0aFRlc3RzLmhw
cCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9l
czNmRnJhZ21lbnRPdXRwdXRUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuaHBwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZGcmFn
T3BJbnRlcmFjdGlvblRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRnJhZ09wSW50ZXJhY3Rpb25UZXN0cy5ocHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZyYW1l
YnVmZmVyQmxpdFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczMvZnVuY3Rpb25hbC9lczNmRnJhbWVidWZmZXJCbGl0VGVzdHMuaHBwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZGdW5jdGlvbmFs
VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5j
dGlvbmFsL2VzM2ZGdW5jdGlvbmFsVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZJbXBsZW1lbnRhdGlvbkxpbWl0VGVzdHMu
Y3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFs
L2VzM2ZJbXBsZW1lbnRhdGlvbkxpbWl0VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZJbmRleGVkU3RhdGVRdWVyeVRlc3Rz
LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25h
bC9lczNmSW5kZXhlZFN0YXRlUXVlcnlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3Rz
LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25h
bC9lczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZJbnRlZ2VyNjRTdGF0ZVF1ZXJ5VGVz
dHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlv
bmFsL2VzM2ZJbnRlZ2VyNjRTdGF0ZVF1ZXJ5VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZJbnRlZ2VyU3RhdGVRdWVyeVRl
c3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rp
b25hbC9lczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkludGVybmFsRm9ybWF0UXVlcnlU
ZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0
aW9uYWwvZXMzZkludGVybmFsRm9ybWF0UXVlcnlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkxpZmV0aW1lVGVzdHMuY3Bw
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2Vz
M2ZMaWZldGltZVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczMvZnVuY3Rpb25hbC9lczNmTXVsdGlzYW1wbGVUZXN0cy5jcHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZk11bHRpc2FtcGxlVGVz
dHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlv
bmFsL2VzM2ZOZWdhdGl2ZUJ1ZmZlckFwaVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmTmVnYXRpdmVCdWZmZXJBcGlUZXN0
cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9u
YWwvZXMzZk5lZ2F0aXZlRnJhZ21lbnRBcGlUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZk5lZ2F0aXZlRnJhZ21lbnRBcGlU
ZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0
aW9uYWwvZXMzZk5lZ2F0aXZlU2hhZGVyQXBpVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZOZWdhdGl2ZVNoYWRlckFwaVRl
c3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rp
b25hbC9lczNmTmVnYXRpdmVTdGF0ZUFwaVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmTmVnYXRpdmVTdGF0ZUFwaVRlc3Rz
LmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25h
bC9lczNmTmVnYXRpdmVUZXh0dXJlQXBpVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZOZWdhdGl2ZVRleHR1cmVBcGlUZXN0
cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9u
YWwvZXMzZk5lZ2F0aXZlVmVydGV4QXJyYXlBcGlUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZk5lZ2F0aXZlVmVydGV4QXJy
YXlBcGlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
L2Z1bmN0aW9uYWwvZXMzZk9jY2x1c2lvblF1ZXJ5VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZPY2NsdXNpb25RdWVyeVRl
c3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rp
b25hbC9lczNmUGl4ZWxCdWZmZXJPYmplY3RUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlBpeGVsQnVmZmVyT2JqZWN0VGVz
dHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlv
bmFsL2VzM2ZQb2x5Z29uT2Zmc2V0VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZQb2x5Z29uT2Zmc2V0VGVzdHMuaHBwJywK
KyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZQ
cmVyZXF1aXNpdGVUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlByZXJlcXVpc2l0ZVRlc3RzLmhwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmUHJpbWl0aXZlUmVz
dGFydFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMv
ZnVuY3Rpb25hbC9lczNmUHJpbWl0aXZlUmVzdGFydFRlc3RzLmhwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmUmFuZG9tRnJhZ21lbnRP
cFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVu
Y3Rpb25hbC9lczNmUmFuZG9tRnJhZ21lbnRPcFRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmUmFuZG9tU2hhZGVyVGVzdHMu
Y3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFs
L2VzM2ZSYW5kb21TaGFkZXJUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlJhc3Rlcml6YXRpb25UZXN0cy5jcHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlJhc3Rl
cml6YXRpb25UZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzL2Z1bmN0aW9uYWwvZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuY3BwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZSYXN0ZXJpemVy
RGlzY2FyZFRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMvZnVuY3Rpb25hbC9lczNmUmJvU3RhdGVRdWVyeVRlc3RzLmNwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmUmJvU3RhdGVRdWVyeVRl
c3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rp
b25hbC9lczNmUmVhZFBpeGVsc1Rlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmUmVhZFBpeGVsc1Rlc3RzLmhwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2FtcGxl
ck9iamVjdFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMvZnVuY3Rpb25hbC9lczNmU2FtcGxlck9iamVjdFRlc3RzLmhwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2FtcGxlclN0YXRlUXVl
cnlUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1
bmN0aW9uYWwvZXMzZlNhbXBsZXJTdGF0ZVF1ZXJ5VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTY2lzc29yVGVzdHMuY3Bw
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2Vz
M2ZTY2lzc29yVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJBcGlUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlckFwaVRlc3RzLmhw
cCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9l
czNmU2hhZGVyQnVpbHRpblZhclRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hhZGVyQnVpbHRpblZhclRlc3RzLmhwcCcs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNm
U2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMu
aHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFs
L2VzM2ZTaGFkZXJDb25zdEV4cHJUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlckNvbnN0RXhwclRlc3RzLmhwcCcs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNm
U2hhZGVyRGVyaXZhdGVUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuaHBwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJE
aXNjYXJkVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
My9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJEaXNjYXJkVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJGcmFnRGF0YVRl
c3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rp
b25hbC9lczNmU2hhZGVyRnJhZ0RhdGFUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlckluZGV4aW5nVGVzdHMuY3Bw
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2Vz
M2ZTaGFkZXJJbmRleGluZ1Rlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hhZGVySW52YXJpYW5jZVRlc3RzLmNwcCcsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hh
ZGVySW52YXJpYW5jZVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hhZGVyTG9vcFRlc3RzLmNwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hhZGVyTG9vcFRl
c3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rp
b25hbC9lczNmU2hhZGVyTWF0cml4VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJNYXRyaXhUZXN0cy5ocHAnLAor
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNo
YWRlck9wZXJhdG9yVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmhwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hhZGVyUGFj
a2luZ0Z1bmN0aW9uVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0cy5ocHAnLAor
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNo
YWRlclByZWNpc2lvblRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hhZGVyUHJlY2lzaW9uVGVzdHMuaHBwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJS
ZXR1cm5UZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
L2Z1bmN0aW9uYWwvZXMzZlNoYWRlclJldHVyblRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hhZGVyU3RhdGVRdWVyeVRl
c3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rp
b25hbC9lczNmU2hhZGVyU3RhdGVRdWVyeVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hhZGVyU3RydWN0VGVzdHMuY3Bw
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2Vz
M2ZTaGFkZXJTdHJ1Y3RUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlclN3aXRjaFRlc3RzLmNwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hhZGVyU3dp
dGNoVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9m
dW5jdGlvbmFsL2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5jcHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczMvZnVuY3Rpb25hbC9lczNmU3RlbmNpbFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU3RlbmNpbFRlc3RzLmhwcCcs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNm
U3RyaW5nUXVlcnlUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlN0cmluZ1F1ZXJ5VGVzdHMuaHBwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTeW5jVGVzdHMuY3Bw
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2Vz
M2ZTeW5jVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
My9mdW5jdGlvbmFsL2VzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMuY3BwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZUZXh0dXJlRmlsdGVy
aW5nVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9m
dW5jdGlvbmFsL2VzM2ZUZXh0dXJlRm9ybWF0VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZUZXh0dXJlRm9ybWF0VGVzdHMu
aHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFs
L2VzM2ZUZXh0dXJlTWlwbWFwVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZUZXh0dXJlTWlwbWFwVGVzdHMuaHBwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZUZXh0
dXJlU2hhZG93VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMy9mdW5jdGlvbmFsL2VzM2ZUZXh0dXJlU2hhZG93VGVzdHMuaHBwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZUZXh0dXJlU2l6ZVRl
c3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rp
b25hbC9lczNmVGV4dHVyZVNpemVUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMu
Y3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFs
L2VzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmVGV4dHVyZVN0YXRlUXVlcnlUZXN0
cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9u
YWwvZXMzZlRleHR1cmVTdGF0ZVF1ZXJ5VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZUZXh0dXJlU3dpenpsZVRlc3RzLmNw
cCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9l
czNmVGV4dHVyZVN3aXp6bGVUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlRleHR1cmVVbml0VGVzdHMuY3BwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZUZXh0dXJl
VW5pdFRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMv
ZnVuY3Rpb25hbC9lczNmVGV4dHVyZVdyYXBUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlRleHR1cmVXcmFwVGVzdHMuaHBw
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2Vz
M2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5ocHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMz
ZlVuaWZvcm1BcGlUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlVuaWZvcm1BcGlUZXN0cy5ocHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlVuaWZvcm1CbG9ja1Rl
c3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rp
b25hbC9lczNmVW5pZm9ybUJsb2NrVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZWZXJ0ZXhBcnJheU9iamVjdFRlc3RzLmNw
cCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9l
czNmVmVydGV4QXJyYXlPYmplY3RUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlZlcnRleEFycmF5VGVzdC5jcHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlZlcnRl
eEFycmF5VGVzdC5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
L2Z1bmN0aW9uYWwvZXMzZlZlcnRleFRleHR1cmVUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlZlcnRleFRleHR1cmVUZXN0
cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZvcm1h
bmNlL2VzM3BCbGVuZFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMvcGVyZm9ybWFuY2UvZXMzcEJsZW5kVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9wZXJmb3JtYW5jZS9lczNwQnVmZmVyRGF0YVVwbG9h
ZFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVy
Zm9ybWFuY2UvZXMzcEJ1ZmZlckRhdGFVcGxvYWRUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZvcm1hbmNlL2VzM3BEZXB0aFRlc3RzLmNwcCcs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVyZm9ybWFuY2UvZXMz
cERlcHRoVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
My9wZXJmb3JtYW5jZS9lczNwUGVyZm9ybWFuY2VUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZvcm1hbmNlL2VzM3BQZXJmb3JtYW5jZVRlc3Rz
LmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVyZm9ybWFu
Y2UvZXMzcFJlZHVuZGFudFN0YXRlQ2hhbmdlVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9wZXJmb3JtYW5jZS9lczNwUmVkdW5kYW50U3RhdGVDaGFu
Z2VUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3Bl
cmZvcm1hbmNlL2VzM3BTaGFkZXJDb21waWxhdGlvbkNhc2VzLmNwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVyZm9ybWFuY2UvZXMzcFNoYWRlckNvbXBpbGF0
aW9uQ2FzZXMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9w
ZXJmb3JtYW5jZS9lczNwU2hhZGVyQ29tcGlsZXJUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZvcm1hbmNlL2VzM3BTaGFkZXJDb21waWxlclRl
c3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVyZm9y
bWFuY2UvZXMzcFNoYWRlckNvbnRyb2xTdGF0ZW1lbnRUZXN0cy5jcHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZvcm1hbmNlL2VzM3BTaGFkZXJDb250cm9s
U3RhdGVtZW50VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMy9wZXJmb3JtYW5jZS9lczNwU2hhZGVyT3BlcmF0b3JUZXN0cy5jcHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZvcm1hbmNlL2VzM3BTaGFkZXJPcGVy
YXRvclRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMv
cGVyZm9ybWFuY2UvZXMzcFNoYWRlck9wdGltaXphdGlvblRlc3RzLmNwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVyZm9ybWFuY2UvZXMzcFNoYWRlck9wdGlt
aXphdGlvblRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMvcGVyZm9ybWFuY2UvZXMzcFN0YXRlQ2hhbmdlQ2FsbFRlc3RzLmNwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVyZm9ybWFuY2UvZXMzcFN0YXRlQ2hhbmdl
Q2FsbFRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMv
cGVyZm9ybWFuY2UvZXMzcFN0YXRlQ2hhbmdlVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9wZXJmb3JtYW5jZS9lczNwU3RhdGVDaGFuZ2VUZXN0cy5o
cHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZvcm1hbmNl
L2VzM3BUZXh0dXJlQ2FzZXMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMy9wZXJmb3JtYW5jZS9lczNwVGV4dHVyZUNhc2VzLmhwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVyZm9ybWFuY2UvZXMzcFRleHR1cmVDb3VudFRl
c3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVyZm9y
bWFuY2UvZXMzcFRleHR1cmVDb3VudFRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczMvcGVyZm9ybWFuY2UvZXMzcFRleHR1cmVGaWx0ZXJpbmdUZXN0cy5j
cHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZvcm1hbmNl
L2VzM3BUZXh0dXJlRmlsdGVyaW5nVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMy9wZXJmb3JtYW5jZS9lczNwVGV4dHVyZUZvcm1hdFRlc3RzLmNwcCcs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVyZm9ybWFuY2UvZXMz
cFRleHR1cmVGb3JtYXRUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMzL3N0cmVzcy9lczNzRHJhd1Rlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczMvc3RyZXNzL2VzM3NEcmF3VGVzdHMuaHBwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9zdHJlc3MvZXMzc0xvbmdSdW5uaW5nU2hh
ZGVyVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9z
dHJlc3MvZXMzc0xvbmdSdW5uaW5nU2hhZGVyVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9zdHJlc3MvZXMzc0xvbmdSdW5uaW5nVGVzdHMuY3BwJywK
KyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9zdHJlc3MvZXMzc0xvbmdS
dW5uaW5nVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
My9zdHJlc3MvZXMzc0xvbmdTaGFkZXJUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzL3N0cmVzcy9lczNzTG9uZ1NoYWRlclRlc3RzLmhwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvc3RyZXNzL2VzM3NNZW1vcnlUZXN0
cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3N0cmVzcy9l
czNzTWVtb3J5VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMy9zdHJlc3MvZXMzc09jY2x1c2lvblF1ZXJ5VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9zdHJlc3MvZXMzc09jY2x1c2lvblF1ZXJ5VGVzdHMu
aHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9zdHJlc3MvZXMz
c1NwZWNpYWxGbG9hdFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMvc3RyZXNzL2VzM3NTcGVjaWFsRmxvYXRUZXN0cy5ocHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3N0cmVzcy9lczNzU3RyZXNzVGVzdHMuY3BwJywK
KyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9zdHJlc3MvZXMzc1N0cmVz
c1Rlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvc3Ry
ZXNzL2VzM3NTeW5jVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMy9zdHJlc3MvZXMzc1N5bmNUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzL3N0cmVzcy9lczNzVmVydGV4QXJyYXlUZXN0cy5jcHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3N0cmVzcy9lczNzVmVydGV4QXJy
YXlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3Rl
czNDb250ZXh0LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMv
dGVzM0NvbnRleHQuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
My90ZXMzSW5mb1Rlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczMvdGVzM0luZm9UZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMzL3RlczNUZXN0Q2FzZS5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzL3RlczNUZXN0Q2FzZS5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzL3RlczNUZXN0UGFja2FnZS5jcHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzL3RlczNUZXN0UGFja2FnZS5ocHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3RlczNUZXN0UGFja2FnZUVudHJ5LmNwcCcsCisg
ICAgICAgIF0sCisgICAgICAgICdkZXFwX2dsZXMzMV9zb3VyY2VzJzoKKyAgICAgICAgWworICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmQWR2
YW5jZWRCbGVuZFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZBZHZhbmNlZEJsZW5kVGVzdHMuaHBwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkFuZHJvaWRF
eHRlbnNpb25QYWNrRVMzMUFUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmQW5kcm9pZEV4dGVuc2lvblBhY2tFUzMxQVRl
c3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0
aW9uYWwvZXMzMWZBdG9taWNDb3VudGVyVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkF0b21pY0NvdW50ZXJUZXN0cy5o
cHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFs
L2VzMzFmQmFzaWNDb21wdXRlU2hhZGVyVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkJhc2ljQ29tcHV0ZVNoYWRlclRl
c3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0
aW9uYWwvZXMzMWZCb29sZWFuU3RhdGVRdWVyeVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZCb29sZWFuU3RhdGVRdWVy
eVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1
bmN0aW9uYWwvZXMzMWZCdWlsdGluUHJlY2lzaW9uVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkJ1aWx0aW5QcmVjaXNp
b25UZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9m
dW5jdGlvbmFsL2VzMzFmQ29tcHV0ZVNoYWRlckJ1aWx0aW5WYXJUZXN0cy5jcHAnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmQ29tcHV0
ZVNoYWRlckJ1aWx0aW5WYXJUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmQ29weUltYWdlVGVzdHMuY3BwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkNvcHlJ
bWFnZVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMx
L2Z1bmN0aW9uYWwvZXMzMWZEZWJ1Z1Rlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZEZWJ1Z1Rlc3RzLmhwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZEZWZh
dWx0VmVydGV4QXJyYXlPYmplY3RUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmRGVmYXVsdFZlcnRleEFycmF5T2JqZWN0
VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVu
Y3Rpb25hbC9lczMxZkRyYXdCdWZmZXJzSW5kZXhlZFRlc3RzLmNwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZEcmF3QnVmZmVyc0lu
ZGV4ZWRUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
MS9mdW5jdGlvbmFsL2VzMzFmRHJhd1Rlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZEcmF3VGVzdHMuaHBwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkZib0Nv
bG9yYnVmZmVyVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMzEvZnVuY3Rpb25hbC9lczMxZkZib0NvbG9yYnVmZmVyVGVzdHMuaHBwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkZib05vQXR0
YWNobWVudFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMxL2Z1bmN0aW9uYWwvZXMzMWZGYm9Ob0F0dGFjaG1lbnRUZXN0cy5ocHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmRmJvVGVzdENh
c2UuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rp
b25hbC9lczMxZkZib1Rlc3RDYXNlLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZGYm9UZXN0VXRpbC5jcHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmRmJvVGVzdFV0
aWwuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rp
b25hbC9lczMxZkZyYW1lYnVmZmVyRGVmYXVsdFN0YXRlUXVlcnlUZXN0cy5jcHAnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmRnJhbWVi
dWZmZXJEZWZhdWx0U3RhdGVRdWVyeVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZGdW5jdGlvbmFsVGVzdHMuY3BwJywK
KyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMx
ZkZ1bmN0aW9uYWxUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmR2VvbWV0cnlTaGFkZXJUZXN0cy5jcHAnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmR2VvbWV0
cnlTaGFkZXJUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzMS9mdW5jdGlvbmFsL2VzMzFmSW5kZXhlZFN0YXRlUXVlcnlUZXN0cy5jcHAnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmSW5kZXhl
ZFN0YXRlUXVlcnlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmSW5kaXJlY3RDb21wdXRlRGlzcGF0Y2hUZXN0cy5jcHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2Vz
MzFmSW5kaXJlY3RDb21wdXRlRGlzcGF0Y2hUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmSW5mb0xvZ1F1ZXJ5U2hhcmVk
LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9u
YWwvZXMzMWZJbmZvTG9nUXVlcnlTaGFyZWQuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMu
Y3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25h
bC9lczMxZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkludGVybmFsRm9ybWF0UXVlcnlU
ZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5j
dGlvbmFsL2VzMzFmSW50ZXJuYWxGb3JtYXRRdWVyeVRlc3RzLmhwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZMYXlvdXRCaW5kaW5n
VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVu
Y3Rpb25hbC9lczMxZkxheW91dEJpbmRpbmdUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTXVsdGlzYW1wbGVTaGFkZXJS
ZW5kZXJDYXNlLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMx
L2Z1bmN0aW9uYWwvZXMzMWZNdWx0aXNhbXBsZVNoYWRlclJlbmRlckNhc2UuaHBwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk11bHRp
c2FtcGxlVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
MzEvZnVuY3Rpb25hbC9lczMxZk11bHRpc2FtcGxlVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk5lZ2F0aXZlQWR2YW5j
ZWRCbGVuZEVxdWF0aW9uVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk5lZ2F0aXZlQWR2YW5jZWRCbGVuZEVxdWF0aW9u
VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVu
Y3Rpb25hbC9lczMxZk5lZ2F0aXZlQXRvbWljQ291bnRlclRlc3RzLmNwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZOZWdhdGl2ZUF0
b21pY0NvdW50ZXJUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVCdWZmZXJBcGlUZXN0cy5jcHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVn
YXRpdmVCdWZmZXJBcGlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVGcmFnbWVudEFwaVRlc3RzLmNwcCcs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMz
MWZOZWdhdGl2ZUZyYWdtZW50QXBpVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk5lZ2F0aXZlUHJlY2lzZVRlc3RzLmNw
cCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwv
ZXMzMWZOZWdhdGl2ZVByZWNpc2VUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVTaGFkZXJBcGlUZXN0cy5j
cHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFs
L2VzMzFmTmVnYXRpdmVTaGFkZXJBcGlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVTaGFkZXJEaXJlY3Rp
dmVUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9m
dW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVTaGFkZXJEaXJlY3RpdmVUZXN0cy5ocHAnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRp
dmVTaGFkZXJGdW5jdGlvblRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZOZWdhdGl2ZVNoYWRlckZ1bmN0aW9uVGVzdHMu
aHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25h
bC9lczMxZk5lZ2F0aXZlU2hhZGVySW1hZ2VMb2FkU3RvcmVUZXN0cy5jcHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVT
aGFkZXJJbWFnZUxvYWRTdG9yZVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZOZWdhdGl2ZVN0YXRlQXBpVGVzdHMuY3Bw
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9l
czMxZk5lZ2F0aXZlU3RhdGVBcGlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVUZXN0U2hhcmVkLmNwcCcs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMz
MWZOZWdhdGl2ZVRlc3RTaGFyZWQuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk5lZ2F0aXZlVGV4dHVyZUFwaVRlc3RzLmNwcCcs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMz
MWZOZWdhdGl2ZVRleHR1cmVBcGlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVWZXJ0ZXhBcnJheUFwaVRl
c3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0
aW9uYWwvZXMzMWZOZWdhdGl2ZVZlcnRleEFycmF5QXBpVGVzdHMuaHBwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk9wYXF1ZVR5cGVJ
bmRleGluZ1Rlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMxL2Z1bmN0aW9uYWwvZXMzMWZPcGFxdWVUeXBlSW5kZXhpbmdUZXN0cy5ocHAnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmUHJpbWl0
aXZlQm91bmRpbmdCb3hUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmUHJpbWl0aXZlQm91bmRpbmdCb3hUZXN0cy5ocHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2Vz
MzFmUHJvZ3JhbUludGVyZmFjZURlZmluaXRpb24uY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlByb2dyYW1JbnRlcmZhY2VEZWZp
bml0aW9uLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1
bmN0aW9uYWwvZXMzMWZQcm9ncmFtSW50ZXJmYWNlRGVmaW5pdGlvblV0aWwuY3BwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlByb2dy
YW1JbnRlcmZhY2VEZWZpbml0aW9uVXRpbC5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmUHJvZ3JhbUludGVyZmFjZVF1ZXJ5VGVz
dENhc2UuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVu
Y3Rpb25hbC9lczMxZlByb2dyYW1JbnRlcmZhY2VRdWVyeVRlc3RDYXNlLmhwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZQcm9ncmFt
SW50ZXJmYWNlUXVlcnlUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmUHJvZ3JhbUludGVyZmFjZVF1ZXJ5VGVzdHMuaHBw
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9l
czMxZlByb2dyYW1QaXBlbGluZVN0YXRlUXVlcnlUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmUHJvZ3JhbVBpcGVsaW5l
U3RhdGVRdWVyeVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZQcm9ncmFtU3RhdGVRdWVyeVRlc3RzLmNwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZQcm9n
cmFtU3RhdGVRdWVyeVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZQcm9ncmFtVW5pZm9ybVRlc3RzLmNwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZQcm9n
cmFtVW5pZm9ybVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTU0JPQXJyYXlMZW5ndGhUZXN0cy5jcHAnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmU1NCT0Fy
cmF5TGVuZ3RoVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMzEvZnVuY3Rpb25hbC9lczMxZlNTQk9MYXlvdXRDYXNlLmNwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTU0JPTGF5b3V0Q2Fz
ZS5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlv
bmFsL2VzMzFmU1NCT0xheW91dFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTU0JPTGF5b3V0VGVzdHMuaHBwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlNh
bXBsZVNoYWRpbmdUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmU2FtcGxlU2hhZGluZ1Rlc3RzLmhwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTYW1wbGVW
YXJpYWJsZVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMxL2Z1bmN0aW9uYWwvZXMzMWZTYW1wbGVWYXJpYWJsZVRlc3RzLmhwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTYW1wbGVyU3Rh
dGVRdWVyeVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMxL2Z1bmN0aW9uYWwvZXMzMWZTYW1wbGVyU3RhdGVRdWVyeVRlc3RzLmhwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTZXBhcmF0
ZVNoYWRlclRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMxL2Z1bmN0aW9uYWwvZXMzMWZTZXBhcmF0ZVNoYWRlclRlc3RzLmhwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTaGFkZXJBdG9t
aWNPcFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMx
L2Z1bmN0aW9uYWwvZXMzMWZTaGFkZXJBdG9taWNPcFRlc3RzLmhwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTaGFkZXJCdWlsdGlu
Q29uc3RhbnRUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzMS9mdW5jdGlvbmFsL2VzMzFmU2hhZGVyQnVpbHRpbkNvbnN0YW50VGVzdHMuaHBwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlNo
YWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMu
aHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25h
bC9lczMxZlNoYWRlckhlbHBlckludm9jYXRpb25UZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmU2hhZGVySGVscGVySW52
b2NhdGlvblRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMxL2Z1bmN0aW9uYWwvZXMzMWZTaGFkZXJJbWFnZUxvYWRTdG9yZVRlc3RzLmNwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTaGFk
ZXJJbWFnZUxvYWRTdG9yZVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTaGFkZXJJbnRlZ2VyRnVuY3Rpb25UZXN0cy5j
cHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFs
L2VzMzFmU2hhZGVySW50ZWdlckZ1bmN0aW9uVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlNoYWRlck11bHRpc2FtcGxl
SW50ZXJwb2xhdGlvblN0YXRlUXVlcnlUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmU2hhZGVyTXVsdGlzYW1wbGVJbnRl
cnBvbGF0aW9uU3RhdGVRdWVyeVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTaGFkZXJNdWx0aXNhbXBsZUludGVycG9s
YXRpb25UZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
MS9mdW5jdGlvbmFsL2VzMzFmU2hhZGVyTXVsdGlzYW1wbGVJbnRlcnBvbGF0aW9uVGVzdHMuaHBw
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9l
czMxZlNoYWRlclBhY2tpbmdGdW5jdGlvblRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTaGFkZXJQYWNraW5nRnVuY3Rp
b25UZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9m
dW5jdGlvbmFsL2VzMzFmU2hhZGVyU2hhcmVkVmFyVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlNoYWRlclNoYXJlZFZh
clRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1
bmN0aW9uYWwvZXMzMWZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlNoYWRlclN0YXRlUXVl
cnlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9m
dW5jdGlvbmFsL2VzMzFmU2hhZGVyVGV4dHVyZVNpemVUZXN0cy5jcHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmU2hhZGVyVGV4dHVy
ZVNpemVUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
MS9mdW5jdGlvbmFsL2VzMzFmU3RlbmNpbFRleHR1cmluZ1Rlc3RzLmNwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTdGVuY2lsVGV4
dHVyaW5nVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
MzEvZnVuY3Rpb25hbC9lczMxZlN5bmNocm9uaXphdGlvblRlc3RzLmNwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTeW5jaHJvbml6
YXRpb25UZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
MS9mdW5jdGlvbmFsL2VzMzFmVGVzc2VsbGF0aW9uR2VvbWV0cnlJbnRlcmFjdGlvblRlc3RzLmNw
cCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwv
ZXMzMWZUZXNzZWxsYXRpb25HZW9tZXRyeUludGVyYWN0aW9uVGVzdHMuaHBwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlRlc3NlbGxh
dGlvblRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMx
L2Z1bmN0aW9uYWwvZXMzMWZUZXNzZWxsYXRpb25UZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmVGV4dHVyZUJvcmRlckNs
YW1wVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEv
ZnVuY3Rpb25hbC9lczMxZlRleHR1cmVCb3JkZXJDbGFtcFRlc3RzLmhwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZUZXh0dXJlQnVm
ZmVyVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEv
ZnVuY3Rpb25hbC9lczMxZlRleHR1cmVCdWZmZXJUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmVGV4dHVyZUZpbHRlcmlu
Z1Rlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1
bmN0aW9uYWwvZXMzMWZUZXh0dXJlRmlsdGVyaW5nVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlRleHR1cmVGb3JtYXRU
ZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5j
dGlvbmFsL2VzMzFmVGV4dHVyZUZvcm1hdFRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZUZXh0dXJlR2F0aGVyVGVzdHMu
Y3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25h
bC9lczMxZlRleHR1cmVHYXRoZXJUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmVGV4dHVyZUxldmVsU3RhdGVRdWVyeVRl
c3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0
aW9uYWwvZXMzMWZUZXh0dXJlTGV2ZWxTdGF0ZVF1ZXJ5VGVzdHMuaHBwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlRleHR1cmVNdWx0
aXNhbXBsZVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMxL2Z1bmN0aW9uYWwvZXMzMWZUZXh0dXJlTXVsdGlzYW1wbGVUZXN0cy5ocHAnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmVGV4dHVy
ZVNwZWNpZmljYXRpb25UZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5ocHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2Vz
MzFmVGV4dHVyZVN0YXRlUXVlcnlUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmVGV4dHVyZVN0YXRlUXVlcnlUZXN0cy5o
cHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFs
L2VzMzFmVW5pZm9ybUJsb2NrVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlVuaWZvcm1CbG9ja1Rlc3RzLmhwcCcsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZV
bmlmb3JtTG9jYXRpb25UZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmVW5pZm9ybUxvY2F0aW9uVGVzdHMuaHBwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlZl
cnRleEF0dHJpYnV0ZUJpbmRpbmdTdGF0ZVF1ZXJ5VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlZlcnRleEF0dHJpYnV0
ZUJpbmRpbmdTdGF0ZVF1ZXJ5VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlZlcnRleEF0dHJpYnV0ZUJpbmRpbmdUZXN0
cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlv
bmFsL2VzMzFmVmVydGV4QXR0cmlidXRlQmluZGluZ1Rlc3RzLmhwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL3N0cmVzcy9lczMxc0RyYXdUZXN0cy5jcHAnLAor
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9zdHJlc3MvZXMzMXNEcmF3
VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvc3Ry
ZXNzL2VzMzFzU3RyZXNzVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMzEvc3RyZXNzL2VzMzFzU3RyZXNzVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvc3RyZXNzL2VzMzFzVGVzc2VsbGF0aW9uR2VvbWV0
cnlJbnRlcmFjdGlvblRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMxL3N0cmVzcy9lczMxc1Rlc3NlbGxhdGlvbkdlb21ldHJ5SW50ZXJhY3Rpb25UZXN0
cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9zdHJlc3Mv
ZXMzMXNWZXJ0ZXhBdHRyaWJ1dGVCaW5kaW5nVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvc3RyZXNzL2VzMzFzVmVydGV4QXR0cmlidXRlQmluZGlu
Z1Rlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL3Rl
czMxQ29udGV4dC5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
MS90ZXMzMUNvbnRleHQuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMzEvdGVzMzFJbmZvVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMzEvdGVzMzFJbmZvVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMzEvdGVzMzFUZXN0Q2FzZS5jcHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzMS90ZXMzMVRlc3RDYXNlLmhwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL3RlczMxVGVzdFBhY2thZ2UuY3BwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvdGVzMzFUZXN0UGFja2FnZS5ocHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS90ZXMzMVRlc3RQYWNr
YWdlRW50cnkuY3BwJworICAgICAgICBdLAorICAgICAgICAnZGVxcF9lZ2xfc291cmNlcyc6Cisg
ICAgICAgIFsKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEFuZHJv
aWRVdGlsLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xB
bmRyb2lkVXRpbC5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90
ZWdsQXBpQ2FzZS5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90
ZWdsQXBpQ2FzZS5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90
ZWdsQnVmZmVyQWdlVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9lZ2wvdGVnbEJ1ZmZlckFnZVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZWdsL3RlZ2xDaG9vc2VDb25maWdSZWZlcmVuY2UuY3BwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbENob29zZUNvbmZpZ1JlZmVyZW5jZS5ocHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsQ2hvb3NlQ29uZmln
VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbENo
b29zZUNvbmZpZ1Rlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
ZWdsL3RlZ2xDbGllbnRFeHRlbnNpb25UZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2VnbC90ZWdsQ2xpZW50RXh0ZW5zaW9uVGVzdHMuaHBwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbENvbG9yQ2xlYXJDYXNlLmNwcCcsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xDb2xvckNsZWFyQ2FzZS5o
cHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsQ29sb3JDbGVh
clRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xD
b2xvckNsZWFyVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9l
Z2wvdGVnbENvbmZpZ0xpc3QuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9lZ2wvdGVnbENvbmZpZ0xpc3QuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9lZ2wvdGVnbENyZWF0ZUNvbnRleHRFeHRUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsQ3JlYXRlQ29udGV4dEV4dFRlc3RzLmhwcCcsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xDcmVhdGVDb250ZXh0VGVz
dHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbENyZWF0
ZUNvbnRleHRUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2Vn
bC90ZWdsQ3JlYXRlU3VyZmFjZVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZWdsL3RlZ2xDcmVhdGVTdXJmYWNlVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEdldFByb2NBZGRyZXNzVGVzdHMuY3BwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEdldFByb2NBZGRyZXNzVGVz
dHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEdMRVMx
UmVuZGVyVXRpbC5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90
ZWdsR0xFUzFSZW5kZXJVdGlsLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZWdsL3RlZ2xHTEVTMlJlbmRlclV0aWwuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9lZ2wvdGVnbEdMRVMyUmVuZGVyVXRpbC5ocHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsR0xFUzJTaGFyZWRSZW5kZXJpbmdQZXJmVGVzdHMu
Y3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEdMRVMyU2hh
cmVkUmVuZGVyaW5nUGVyZlRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZWdsL3RlZ2xHTEVTMlNoYXJpbmdUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsR0xFUzJTaGFyaW5nVGVzdHMuaHBwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEdMRVMyU2hhcmluZ1RocmVhZGVkVGVz
dHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEdMRVMy
U2hhcmluZ1RocmVhZGVkVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9lZ2wvdGVnbEltYWdlRm9ybWF0VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEltYWdlRm9ybWF0VGVzdHMuaHBwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEltYWdlVGVzdHMuY3BwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEltYWdlVGVzdHMuaHBwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEltYWdlVXRpbC5jcHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsSW1hZ2VVdGlsLmhwcCcsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xJbmZvVGVzdHMuY3BwJywK
KyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEluZm9UZXN0cy5ocHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsTWFrZUN1cnJlbnRQ
ZXJmVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVn
bE1ha2VDdXJyZW50UGVyZlRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZWdsL3RlZ2xNZW1vcnlTdHJlc3NUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsTWVtb3J5U3RyZXNzVGVzdHMuaHBwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbE11bHRpQ29udGV4dFRlc3RzLmNwcCcs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xNdWx0aUNvbnRleHRU
ZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsTXVs
dGlUaHJlYWRUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2Vn
bC90ZWdsTXVsdGlUaHJlYWRUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2VnbC90ZWdsTmF0aXZlQ29sb3JNYXBwaW5nVGVzdHMuY3BwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbE5hdGl2ZUNvbG9yTWFwcGluZ1Rlc3RzLmhw
cCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xOYXRpdmVDb29y
ZE1hcHBpbmdUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2Vn
bC90ZWdsTmF0aXZlQ29vcmRNYXBwaW5nVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9lZ2wvdGVnbE5lZ2F0aXZlQXBpVGVzdHMuY3BwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbE5lZ2F0aXZlQXBpVGVzdHMuaHBwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbE5lZ2F0aXZlUGFydGlhbFVw
ZGF0ZVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3Rl
Z2xOZWdhdGl2ZVBhcnRpYWxVcGRhdGVUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2VnbC90ZWdsUHJlc2VydmluZ1N3YXBUZXN0cy5jcHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsUHJlc2VydmluZ1N3YXBUZXN0cy5ocHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsUGFydGlhbFVwZGF0
ZVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xQ
YXJ0aWFsVXBkYXRlVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9lZ2wvdGVnbFF1ZXJ5Q29uZmlnVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9lZ2wvdGVnbFF1ZXJ5Q29uZmlnVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbFF1ZXJ5Q29udGV4dFRlc3RzLmNwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xRdWVyeUNvbnRleHRUZXN0cy5o
cHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsUXVlcnlTdXJm
YWNlVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVn
bFF1ZXJ5U3VyZmFjZVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZWdsL3RlZ2xSZW5kZXJDYXNlLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZWdsL3RlZ2xSZW5kZXJDYXNlLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZWdsL3RlZ2xSZW5kZXJUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2VnbC90ZWdsUmVuZGVyVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbFJlc2l6ZVRlc3RzLmNwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xSZXNpemVUZXN0cy5ocHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsU2ltcGxlQ29uZmlnQ2FzZS5jcHAnLAor
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsU2ltcGxlQ29uZmlnQ2Fz
ZS5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsU3VyZmFj
ZWxlc3NDb250ZXh0VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9lZ2wvdGVnbFN1cmZhY2VsZXNzQ29udGV4dFRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xTd2FwQnVmZmVyc1Rlc3RzLmNwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xTd2FwQnVmZmVyc1Rlc3RzLmhwcCcs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xTd2FwQnVmZmVyc1dp
dGhEYW1hZ2VUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2Vn
bC90ZWdsU3dhcEJ1ZmZlcnNXaXRoRGFtYWdlVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbFN5bmNUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsU3luY1Rlc3RzLmhwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xUZXN0Q2FzZS5jcHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsVGVzdENhc2UuaHBwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbFRlc3RQYWNrYWdlLmNwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xUZXN0UGFja2FnZS5ocHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsVGVzdFBhY2thZ2VFbnRyeS5j
cHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsVkdSZW5kZXJV
dGlsLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xWR1Jl
bmRlclV0aWwuaHBwJywKKyAgICAgICAgXSwKKyAgICAgICAgJ2RlcXBfbGlidGVzdGVyX2RlY3Bw
X3NvdXJjZXMnOgorICAgICAgICBbCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29y
ay9kZWxpYnMvZGVjcHAvZGVBcnJheUJ1ZmZlci5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlY3BwL2RlQmxvY2tCdWZmZXIuY3BwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZWNwcC9kZUNvbW1hbmRMaW5lLmNw
cCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAvZGVE
ZWZzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVj
cHAvZGVEaXJlY3RvcnlJdGVyYXRvci5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9m
cmFtZXdvcmsvZGVsaWJzL2RlY3BwL2RlRHluYW1pY0xpYnJhcnkuY3BwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZWNwcC9kZUZpbGVQYXRoLmNwcCcsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAvZGVNZW1Qb29s
LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAv
ZGVNdXRleC5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJz
L2RlY3BwL2RlUG9vbEFycmF5LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1l
d29yay9kZWxpYnMvZGVjcHAvZGVQb29sU3RyaW5nLmNwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAvZGVQcm9jZXNzLmNwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAvZGVSYW5kb20uY3BwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZWNwcC9kZVJpbmdCdWZm
ZXIuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZWNw
cC9kZVNlbWFwaG9yZS5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsv
ZGVsaWJzL2RlY3BwL2RlU2hhcmVkUHRyLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L2ZyYW1ld29yay9kZWxpYnMvZGVjcHAvZGVTaGExLmNwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAvZGVTb2NrZXQuY3BwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZWNwcC9kZVNUTFV0aWwuY3BwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZWNwcC9kZVN0cmluZ1V0
aWwuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZWNw
cC9kZVRocmVhZC5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVs
aWJzL2RlY3BwL2RlVGhyZWFkTG9jYWwuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
ZnJhbWV3b3JrL2RlbGlicy9kZWNwcC9kZVRocmVhZFNhZmVSaW5nQnVmZmVyLmNwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAvZGVVbmlxdWVQdHIu
Y3BwJywKKyAgICAgICAgXSwKKyAgICAgICAgJ2RlcXBfbGlidGVzdGVyX3NvdXJjZXMnOgorICAg
ICAgICBbCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2V4ZWNzZXJ2ZXIveHNEZWZzLmNwcCcs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2V4ZWNzZXJ2ZXIveHNFeGVjdXRpb25TZXJ2ZXIu
Y3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZXhlY3NlcnZlci94c1Bvc2l4RmlsZVJl
YWRlci5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9leGVjc2VydmVyL3hzUG9zaXhU
ZXN0UHJvY2Vzcy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9leGVjc2VydmVyL3hz
UHJvdG9jb2wuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZXhlY3NlcnZlci94c1Rj
cFNlcnZlci5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9leGVjc2VydmVyL3hzVGVz
dERyaXZlci5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9leGVjc2VydmVyL3hzVGVz
dFByb2Nlc3MuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZXhlY3V0b3IveGVCYXRj
aEV4ZWN1dG9yLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2V4ZWN1dG9yL3hlQmF0
Y2hSZXN1bHQuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZXhlY3V0b3IveGVDYWxs
UXVldWUuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZXhlY3V0b3IveGVDb21tTGlu
ay5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9leGVjdXRvci94ZUNvbnRhaW5lckZv
cm1hdFBhcnNlci5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9leGVjdXRvci94ZURl
ZnMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZXhlY3V0b3IveGVMb2NhbFRjcElw
TGluay5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9leGVjdXRvci94ZVRjcElwTGlu
ay5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9leGVjdXRvci94ZVRlc3RDYXNlLmNw
cCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2V4ZWN1dG9yL3hlVGVzdENhc2VMaXN0UGFy
c2VyLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2V4ZWN1dG9yL3hlVGVzdENhc2VS
ZXN1bHQuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZXhlY3V0b3IveGVUZXN0TG9n
UGFyc2VyLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2V4ZWN1dG9yL3hlVGVzdExv
Z1dyaXRlci5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9leGVjdXRvci94ZVRlc3RS
ZXN1bHRQYXJzZXIuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZXhlY3V0b3IveGVY
TUxQYXJzZXIuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZXhlY3V0b3IveGVYTUxX
cml0ZXIuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1vbi90
Y3VBcHAuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1vbi90
Y3VBc3RjVXRpbC5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29t
bW9uL3RjdUJpbGluZWFySW1hZ2VDb21wYXJlLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL2ZyYW1ld29yay9jb21tb24vdGN1Q29tbWFuZExpbmUuY3BwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1vbi90Y3VDb21wcmVzc2VkVGV4dHVyZS5jcHAnLAor
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdUNQVVdhcm11cC5j
cHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdURlZnMu
Y3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1vbi90Y3VFaXRo
ZXIuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1vbi90Y3VG
YWN0b3J5UmVnaXN0cnkuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3Jr
L2NvbW1vbi90Y3VGbG9hdEZvcm1hdC5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9m
cmFtZXdvcmsvY29tbW9uL3RjdUZ1bmN0aW9uTGlicmFyeS5jcHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdUZ1enp5SW1hZ2VDb21wYXJlLmNwcCcsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9jb21tb24vdGN1SW1hZ2VDb21wYXJl
LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9jb21tb24vdGN1SW1h
Z2VJTy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3Rj
dUludGVydmFsLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9jb21t
b24vdGN1UGxhdGZvcm0uY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3Jr
L2NvbW1vbi90Y3VSYW5kb21WYWx1ZUl0ZXJhdG9yLmNwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL2ZyYW1ld29yay9jb21tb24vdGN1UmVuZGVyVGFyZ2V0LmNwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9jb21tb24vdGN1UmVzb3VyY2UuY3BwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1vbi90Y3VSZXN1bHRDb2xsZWN0b3Iu
Y3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1vbi90Y3VSR0JB
LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9jb21tb24vdGN1U3Ry
aW5nVGVtcGxhdGUuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2Nv
bW1vbi90Y3VTdXJmYWNlLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29y
ay9jb21tb24vdGN1VGVzdENhc2UuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJh
bWV3b3JrL2NvbW1vbi90Y3VUZXN0Q29udGV4dC5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdVRlc3RIaWVyYXJjaHlJdGVyYXRvci5jcHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdVRlc3RIaWVyYXJjaHlV
dGlsLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9jb21tb24vdGN1
VGVzdExvZy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9u
L3RjdVRlc3RQYWNrYWdlLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29y
ay9jb21tb24vdGN1VGVzdFNlc3Npb25FeGVjdXRvci5jcHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdVRleENvbXBhcmVWZXJpZmllci5jcHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdVRleExvb2t1cFZlcmlm
aWVyLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9jb21tb24vdGN1
VGV4dHVyZS5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9u
L3RjdVRleHR1cmVVdGlsLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29y
ay9jb21tb24vdGN1VGV4VmVyaWZpZXJVdGlsLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL2ZyYW1ld29yay9jb21tb24vdGN1VGhyZWFkVXRpbC5jcHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdVNlZWRCdWlsZGVyLmNwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGViYXNlL2RlRGVmcy5jJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZWJhc2UvZGVGbG9hdDE2
LmMnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlYmFzZS9k
ZUludDMyLmMnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2Rl
YmFzZS9kZUludDMyVGVzdC5jJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3Jr
L2RlbGlicy9kZWJhc2UvZGVNYXRoLmMnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFt
ZXdvcmsvZGVsaWJzL2RlYmFzZS9kZU1lbW9yeS5jJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvZnJhbWV3b3JrL2RlbGlicy9kZWJhc2UvZGVSYW5kb20uYycsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGViYXNlL2RlU3RyaW5nLmMnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlYmFzZS9kZVNoYTEuYycsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVpbWFnZS9kZUltYWdlLmMn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlaW1hZ2UvZGVU
YXJnYS5jJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZXBv
b2wvZGVNZW1Qb29sLmMnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVs
aWJzL2RlcG9vbC9kZVBvb2xBcnJheS5jJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJh
bWV3b3JrL2RlbGlicy9kZXBvb2wvZGVQb29sSGFzaEFycmF5LmMnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlcG9vbC9kZVBvb2xIYXNoLmMnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlcG9vbC9kZVBvb2xIYXNoU2V0
LmMnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlcG9vbC9k
ZVBvb2xIZWFwLmMnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJz
L2RlcG9vbC9kZVBvb2xNdWx0aVNldC5jJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJh
bWV3b3JrL2RlbGlicy9kZXBvb2wvZGVQb29sU2V0LmMnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlcG9vbC9kZVBvb2xTdHJpbmdCdWlsZGVyLmMnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlcG9vbC9kZVBvb2xUZXN0
LmMnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2Rlc3RyZWFt
L2RlRmlsZVN0cmVhbS5jJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2Rl
bGlicy9kZXN0cmVhbS9kZVJpbmdidWZmZXIuYycsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L2ZyYW1ld29yay9kZWxpYnMvZGVzdHJlYW0vZGVTdHJlYW1DcHlUaHJlYWQuYycsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVzdHJlYW0vZGVUaHJlYWRTdHJl
YW0uYycsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGV0aHJl
YWQvZGVBdG9taWMuYycsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxp
YnMvZGV0aHJlYWQvZGVTaW5nbGV0b24uYycsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2Zy
YW1ld29yay9kZWxpYnMvZGV0aHJlYWQvZGVUaHJlYWRUZXN0LmMnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RldXRpbC9kZUNsb2NrLmMnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RldXRpbC9kZUNvbW1hbmRMaW5lLmMn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RldXRpbC9kZUR5
bmFtaWNMaWJyYXJ5LmMnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVs
aWJzL2RldXRpbC9kZUZpbGUuYycsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29y
ay9kZWxpYnMvZGV1dGlsL2RlUHJvY2Vzcy5jJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
ZnJhbWV3b3JrL2RlbGlicy9kZXV0aWwvZGVTb2NrZXQuYycsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGV1dGlsL2RlVGltZXIuYycsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGV1dGlsL2RlVGltZXJUZXN0LmMnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZWdsL2VnbHVDYWxsTG9nV3JhcHBlci5j
cHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZWdsL2VnbHVDb25maWdG
aWx0ZXIuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2VnbC9lZ2x1
Q29uZmlnSW5mby5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZWds
L2VnbHVEZWZzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9lZ2wv
ZWdsdUdMQ29udGV4dEZhY3RvcnkuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJh
bWV3b3JrL2VnbC9lZ2x1R0xGdW5jdGlvbkxvYWRlci5jcHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9mcmFtZXdvcmsvZWdsL2VnbHVHTFV0aWwuY3BwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvZnJhbWV3b3JrL2VnbC9lZ2x1TmF0aXZlRGlzcGxheS5jcHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZWdsL2VnbHVOYXRpdmVQaXhtYXAuY3BwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2VnbC9lZ2x1TmF0aXZlV2luZG93LmNw
cCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9lZ2wvZWdsdVBsYXRmb3Jt
LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9lZ2wvZWdsdVN0YXRp
Y0VTTGlicmFyeS5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZWds
L2VnbHVTdHJVdGlsLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9l
Z2wvZWdsdVVuaXF1ZS5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsv
ZWdsL2VnbHVVdGlsLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9l
Z2wvd3JhcHBlci9lZ2x3RGVmcy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFt
ZXdvcmsvZWdsL3dyYXBwZXIvZWdsd0Z1bmN0aW9ucy5jcHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9mcmFtZXdvcmsvZWdsL3dyYXBwZXIvZWdsd0xpYnJhcnkuY3BwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbC9nbHVDYWxsTG9nV3JhcHBlci5jcHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL2dsdUNvbnRleHRG
YWN0b3J5LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9vcGVuZ2wv
Z2x1Q29udGV4dEluZm8uY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3Jr
L29wZW5nbC9nbHVEZWZzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29y
ay9vcGVuZ2wvZ2x1RHJhd1V0aWwuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJh
bWV3b3JrL29wZW5nbC9nbHVEdW1teVJlbmRlckNvbnRleHQuY3BwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbC9nbHVFUzNQbHVzV3JhcHBlckNvbnRleHQuY3Bw
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbC9nbHVGYm9SZW5k
ZXJDb250ZXh0LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9vcGVu
Z2wvZ2x1T2JqZWN0V3JhcHBlci5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFt
ZXdvcmsvb3BlbmdsL2dsdVBpeGVsVHJhbnNmZXIuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvZnJhbWV3b3JrL29wZW5nbC9nbHVQbGF0Zm9ybS5jcHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL2dsdVByb2dyYW1JbnRlcmZhY2VRdWVyeS5jcHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL2dsdVJlbmRlckNv
bmZpZy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL2ds
dVJlbmRlckNvbnRleHQuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3Jr
L29wZW5nbC9nbHVTaGFkZXJMaWJyYXJ5LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L2ZyYW1ld29yay9vcGVuZ2wvZ2x1U2hhZGVyUHJvZ3JhbS5jcHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL2dsdVNoYWRlclV0aWwuY3BwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbC9nbHVTdGF0ZVJlc2V0LmNwcCcsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9vcGVuZ2wvZ2x1U3RyVXRpbC5jcHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL2dsdVRleHR1cmUu
Y3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbC9nbHVUZXh0
dXJlVXRpbC5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3Blbmds
L2dsdVZhclR5cGUuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29w
ZW5nbC9nbHVWYXJUeXBlVXRpbC5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFt
ZXdvcmsvb3BlbmdsL3NpbXBsZXJlZmVyZW5jZS9zZ2xyQ29udGV4dC5jcHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL3NpbXBsZXJlZmVyZW5jZS9zZ2xyQ29u
dGV4dFV0aWwuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5n
bC9zaW1wbGVyZWZlcmVuY2Uvc2dsckNvbnRleHRXcmFwcGVyLmNwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL2ZyYW1ld29yay9vcGVuZ2wvc2ltcGxlcmVmZXJlbmNlL3NnbHJHTENvbnRl
eHQuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbC9zaW1w
bGVyZWZlcmVuY2Uvc2dsclJlZmVyZW5jZUNvbnRleHQuY3BwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbC9zaW1wbGVyZWZlcmVuY2Uvc2dsclJlZmVyZW5jZVV0
aWxzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9vcGVuZ2wvc2lt
cGxlcmVmZXJlbmNlL3NnbHJTaGFkZXJQcm9ncmFtLmNwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL2ZyYW1ld29yay9vcGVuZ2wvd3JhcHBlci9nbHdEZWZzLmNwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9vcGVuZ2wvd3JhcHBlci9nbHdGdW5jdGlvbnMuY3Bw
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbC93cmFwcGVyL2ds
d0luaXRFUzIwRGlyZWN0LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29y
ay9vcGVuZ2wvd3JhcHBlci9nbHdJbml0RVMzMERpcmVjdC5jcHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL3dyYXBwZXIvZ2x3SW5pdEZ1bmN0aW9ucy5jcHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL3dyYXBwZXIvZ2x3
V3JhcHBlci5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcGxhdGZv
cm0vbnVsbC90Y3VOdWxsQ29udGV4dEZhY3RvcnkuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvZnJhbWV3b3JrL3BsYXRmb3JtL251bGwvdGN1TnVsbENvbnRleHRGYWN0b3J5LmhwcCcs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9wbGF0Zm9ybS9udWxsL3RjdU51
bGxSZW5kZXJDb250ZXh0LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29y
ay9xcGhlbHBlci9xcENyYXNoSGFuZGxlci5jJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
ZnJhbWV3b3JrL3FwaGVscGVyL3FwRGVidWdPdXQuYycsCisgICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL2ZyYW1ld29yay9xcGhlbHBlci9xcEluZm8uYycsCisgICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL2ZyYW1ld29yay9xcGhlbHBlci9xcFRlc3RMb2cuYycsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL2ZyYW1ld29yay9xcGhlbHBlci9xcFdhdGNoRG9nLmMnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9mcmFtZXdvcmsvcXBoZWxwZXIvcXBYbWxXcml0ZXIuYycsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9yYW5kb21zaGFkZXJzL3JzZ0JpbmFyeU9wcy5jcHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcmFuZG9tc2hhZGVycy9yc2dC
dWlsdGluRnVuY3Rpb25zLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29y
ay9yYW5kb21zaGFkZXJzL3JzZ0RlZnMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
ZnJhbWV3b3JrL3JhbmRvbXNoYWRlcnMvcnNnRXhlY3V0aW9uQ29udGV4dC5jcHAnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcmFuZG9tc2hhZGVycy9yc2dFeHByZXNzaW9u
LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9yYW5kb21zaGFkZXJz
L3JzZ0V4cHJlc3Npb25HZW5lcmF0b3IuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
ZnJhbWV3b3JrL3JhbmRvbXNoYWRlcnMvcnNnRnVuY3Rpb25HZW5lcmF0b3IuY3BwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3JhbmRvbXNoYWRlcnMvcnNnR2VuZXJhdG9y
U3RhdGUuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3JhbmRvbXNo
YWRlcnMvcnNnTmFtZUFsbG9jYXRvci5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9m
cmFtZXdvcmsvcmFuZG9tc2hhZGVycy9yc2dQYXJhbWV0ZXJzLmNwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL2ZyYW1ld29yay9yYW5kb21zaGFkZXJzL3JzZ1ByZXR0eVByaW50ZXIuY3Bw
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3JhbmRvbXNoYWRlcnMvcnNn
UHJvZ3JhbUV4ZWN1dG9yLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29y
ay9yYW5kb21zaGFkZXJzL3JzZ1Byb2dyYW1HZW5lcmF0b3IuY3BwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3JhbmRvbXNoYWRlcnMvcnNnU2FtcGxlcnMuY3BwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3JhbmRvbXNoYWRlcnMvcnNnU2hhZGVy
LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9yYW5kb21zaGFkZXJz
L3JzZ1NoYWRlckdlbmVyYXRvci5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFt
ZXdvcmsvcmFuZG9tc2hhZGVycy9yc2dTdGF0ZW1lbnQuY3BwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvZnJhbWV3b3JrL3JhbmRvbXNoYWRlcnMvcnNnVG9rZW4uY3BwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3JhbmRvbXNoYWRlcnMvcnNnVXRpbHMuY3BwJywK
KyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3JhbmRvbXNoYWRlcnMvcnNnVmFy
aWFibGUuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3JhbmRvbXNo
YWRlcnMvcnNnVmFyaWFibGVNYW5hZ2VyLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L2ZyYW1ld29yay9yYW5kb21zaGFkZXJzL3JzZ1ZhcmlhYmxlVHlwZS5jcHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcmFuZG9tc2hhZGVycy9yc2dWYXJpYWJsZVZhbHVl
LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9yZWZlcmVuY2VyZW5k
ZXJlci9yckRlZnMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3Jl
ZmVyZW5jZXJlbmRlcmVyL3JyRnJhZ21lbnRPcGVyYXRpb25zLmNwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL2ZyYW1ld29yay9yZWZlcmVuY2VyZW5kZXJlci9yck11bHRpc2FtcGxlUGl4
ZWxCdWZmZXJBY2Nlc3MuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3Jr
L3JlZmVyZW5jZXJlbmRlcmVyL3JyUHJpbWl0aXZlUGFja2V0LmNwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL2ZyYW1ld29yay9yZWZlcmVuY2VyZW5kZXJlci9yclJhc3Rlcml6ZXIuY3Bw
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3JlZmVyZW5jZXJlbmRlcmVy
L3JyUmVuZGVyZXIuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3Jl
ZmVyZW5jZXJlbmRlcmVyL3JyU2hhZGVycy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9mcmFtZXdvcmsvcmVmZXJlbmNlcmVuZGVyZXIvcnJTaGFkaW5nQ29udGV4dC5jcHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcmVmZXJlbmNlcmVuZGVyZXIvcnJWZXJ0
ZXhBdHRyaWIuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3JlZmVy
ZW5jZXJlbmRlcmVyL3JyVmVydGV4UGFja2V0LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xzaGFyZWQvZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5jcHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2dsc0J1ZmZlclRlc3RVdGls
LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xzaGFyZWQvZ2xzQnVp
bHRpblByZWNpc2lvblRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xzaGFyZWQvZ2xzQ2FsaWJyYXRpb24uY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbHNoYXJlZC9nbHNEcmF3VGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2dsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLmNwcCcsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xzaGFyZWQvZ2xzRmJvVXRpbC5jcHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2dsc0ZyYWdtZW50
T3BVdGlsLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xzaGFyZWQv
Z2xzRnJhZ09wSW50ZXJhY3Rpb25DYXNlLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xzaGFyZWQvZ2xzSW50ZXJhY3Rpb25UZXN0VXRpbC5jcHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2dsc0xpZmV0aW1lVGVzdHMuY3BwJywK
KyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbHNoYXJlZC9nbHNMb25nU3RyZXNz
Q2FzZS5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2ds
c0xvbmdTdHJlc3NUZXN0VXRpbC5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsc2hhcmVkL2dsc01lbW9yeVN0cmVzc0Nhc2UuY3BwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbHNoYXJlZC9nbHNSYW5kb21TaGFkZXJDYXNlLmNwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xzaGFyZWQvZ2xzUmFuZG9tU2hhZGVyUHJv
Z3JhbS5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2ds
c1JhbmRvbVVuaWZvcm1CbG9ja0Nhc2UuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbHNoYXJlZC9nbHNSYXN0ZXJpemF0aW9uVGVzdFV0aWwuY3BwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbHNoYXJlZC9nbHNTYW1wbGVyT2JqZWN0VGVzdC5j
cHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2dsc1NjaXNz
b3JUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVk
L2dsc1NoYWRlckNvbnN0RXhwclRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xzaGFyZWQvZ2xzU2hhZGVyRXhlY1V0aWwuY3BwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbHNoYXJlZC9nbHNTaGFkZXJMaWJyYXJ5Q2FzZS5jcHAnLAor
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2dsc1NoYWRlckxpYnJh
cnkuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbHNoYXJlZC9nbHNT
aGFkZXJQZXJmb3JtYW5jZUNhc2UuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbHNoYXJlZC9nbHNTaGFkZXJQZXJmb3JtYW5jZU1lYXN1cmVyLmNwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xzaGFyZWQvZ2xzU2hhZGVyUmVuZGVyQ2FzZS5j
cHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2dsc1N0YXRl
UXVlcnlVdGlsLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xzaGFy
ZWQvZ2xzU3RhdGVDaGFuZ2VQZXJmVGVzdENhc2VzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xzaGFyZWQvZ2xzVGV4dHVyZUJ1ZmZlckNhc2UuY3BwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbHNoYXJlZC9nbHNUZXh0dXJlU3RhdGVRdWVy
eVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xzaGFyZWQv
Z2xzVGV4dHVyZVRlc3RVdGlsLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xzaGFyZWQvZ2xzVW5pZm9ybUJsb2NrQ2FzZS5jcHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2dsc1ZlcnRleEFycmF5VGVzdHMuY3BwJywKKyAgICAg
ICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvdGN1QU5HTEVOYXRp
dmVEaXNwbGF5RmFjdG9yeS5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rl
c3RzL2RlcXBfc3VwcG9ydC90Y3VBTkdMRU5hdGl2ZURpc3BsYXlGYWN0b3J5LmgnLAorICAgICAg
ICAgICAgIyBUT0RPKGptYWRpbGwpOiBpbnRlZ3JhdGUgd2l0aCBkRVFQCisgICAgICAgICAgICAn
PChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L3RjdVJhbmRvbU9yZGVyRXhlY3V0
b3IuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9kZXFwX3N1cHBv
cnQvdGN1UmFuZG9tT3JkZXJFeGVjdXRvci5oJywKKyAgICAgICAgXSwKKyAgICAgICAgJ2RlcXBf
bGlidGVzdGVyX3NvdXJjZXNfd2luJzoKKyAgICAgICAgWworICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RldGhyZWFkL3dpbjMyL2RlTXV0ZXhXaW4zMi5jJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZXRocmVhZC93aW4zMi9k
ZVNlbWFwaG9yZVdpbjMyLmMnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsv
ZGVsaWJzL2RldGhyZWFkL3dpbjMyL2RlVGhyZWFkTG9jYWxXaW4zMi5jJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZXRocmVhZC93aW4zMi9kZVRocmVhZFdp
bjMyLmMnLAorICAgICAgICBdLAorICAgICAgICAnZGVxcF9saWJ0ZXN0ZXJfc291cmNlc191bml4
JzoKKyAgICAgICAgWworICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJz
L2RldGhyZWFkL3VuaXgvZGVNdXRleFVuaXguYycsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L2ZyYW1ld29yay9kZWxpYnMvZGV0aHJlYWQvdW5peC9kZU5hbWVkU2VtYXBob3JlVW5peC5jJywK
KyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZXRocmVhZC91bml4
L2RlU2VtYXBob3JlVW5peC5jJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3Jr
L2RlbGlicy9kZXRocmVhZC91bml4L2RlVGhyZWFkTG9jYWxVbml4LmMnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RldGhyZWFkL3VuaXgvZGVUaHJlYWRVbml4
LmMnLAorICAgICAgICBdLAorICAgICAgICAnZGVxcF9ncHVfdGVzdF9leHBlY3RhdGlvbnNfc291
cmNlcyc6CisgICAgICAgIFsKKyAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBl
Y3RhdGlvbnMvZ3B1X2luZm8uY2MnLAorICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L2dwdV90ZXN0
X2V4cGVjdGF0aW9ucy9ncHVfaW5mby5oJywKKyAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9ncHVf
dGVzdF9leHBlY3RhdGlvbnMvZ3B1X3Rlc3RfY29uZmlnLmNjJywKKyAgICAgICAgICAgICd0aGly
ZF9wYXJ0eS9ncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X3Rlc3RfY29uZmlnLmgnLAorICAgICAg
ICAgICAgJ3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9leHBlY3Rh
dGlvbnNfcGFyc2VyLmNjJywKKyAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBl
Y3RhdGlvbnMvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3BhcnNlci5oJywKKyAgICAgICAgXSwKKyAg
ICAgICAgJ2NvbmRpdGlvbnMnOgorICAgICAgICBbCisgICAgICAgICAgICBbJyhPUz09IndpbiIg
b3IgT1M9PSJsaW51eCIgb3IgT1M9PSJtYWMiKScsCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgIyBCdWlsZCB0aGUgZEVRUCBsaWJyYXJpZXMgZm9yIGFsbCBXaW5kb3dzL0xpbnV4IGJ1
aWxkcworICAgICAgICAgICAgICAgICdhbmdsZV9idWlsZF9kZXFwX2xpYnJhcmllcyUnOiAxLAor
ICAgICAgICAgICAgfV0sCisgICAgICAgICAgICBbJygoT1M9PSJ3aW4iIG9yIE9TPT0ibGludXgi
IG9yIE9TPT0ibWFjIikgYW5kIGFuZ2xlX2J1aWxkX3dpbnJ0PT0wKScsCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgIyBCdWlsZCB0aGUgZEVRUCBHb29nbGVUZXN0IHN1cHBvcnQgaGVs
cGVycyBmb3IgYWxsIFdpbmRvd3MvTGludXggYnVpbGRzIGV4Y2VwdCBXaW5SVAorICAgICAgICAg
ICAgICAgICMgR29vZ2xlVGVzdCBkb2Vzbid0IHN1cHBvcnQgV2luUlQKKyAgICAgICAgICAgICAg
ICAnYW5nbGVfYnVpbGRfZGVxcF9ndGVzdF9zdXBwb3J0JSc6IDEsCisgICAgICAgICAgICB9XSwK
KyAgICAgICAgICAgIFsnKChPUz09IndpbiIgb3IgT1M9PSJsaW51eCIgb3IgT1M9PSJtYWMiKSBh
bmQgYW5nbGVfYnVpbGRfd2lucnQ9PTApJywKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAjIEJ1aWxkIHRoZSBkRVFQIGV4ZWN1dGFibGVzIGZvciBhbGwgc3RhbmRhbG9uZSBXaW5kb3dz
L0xpbnV4IGJ1aWxkcyBleGNlcHQgV2luUlQKKyAgICAgICAgICAgICAgICAjIEdZUCBkb2Vzbid0
IHN1cHBvcnQgZ2VuZXJhdGluZyBzdGFuZGFsb25lIFdpblJUIGV4ZWN1dGFibGVzCisgICAgICAg
ICAgICAgICAgJ2FuZ2xlX2J1aWxkX2RlcXBfZXhlY3V0YWJsZXMlJzogMSwKKworICAgICAgICAg
ICAgICAgICMgQnVpbGQgdGhlIEdvb2dsZVRlc3QgdmVyc2lvbnMgb2YgZEVRUCBmb3IgYWxsIHN0
YW5kYWxvbmUgV2luZG93cy9MaW51eCBidWlsZHMgZXhjZXB0IFdpblJUCisgICAgICAgICAgICAg
ICAgIyBHb29nbGVUZXN0IGRvZXNuJ3Qgc3VwcG9ydCBXaW5SVAorICAgICAgICAgICAgICAgICdh
bmdsZV9idWlsZF9kZXFwX2d0ZXN0X2V4ZWN1dGFibGVzJSc6IDEsCisgICAgICAgICAgICB9XSwK
KyAgICAgICAgICAgIFsnT1M9PSJsaW51eCIgYW5kIHVzZV94MTE9PTEnLAorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICdkZXFwX2luY2x1ZGVfZGlycyc6CisgICAgICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9wbGF0Zm9ybS94
MTEnLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICB9XSwKKyAgICAgICAgICAgIFsn
T1M9PSJsaW51eCInLAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICdkZXFwX2RlZmlu
ZXMnOgorICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgIyBBc2sgdGhlIHN5
c3RlbSBoZWFkZXJzIHRvIGV4cG9zZSBhbGwgdGhlIHJlZ3VsYXIgZnVuY3Rpb24gb3RoZXJ3aXNl
CisgICAgICAgICAgICAgICAgICAgICMgZEVRUCBkb2Vzbid0IGNvbXBpbGUgYW5kIHByb2R1Y2Vz
IHdhcm5pbmdzIGFib3V0IGltcGxpY2l0bHkgZGVmaW5lZAorICAgICAgICAgICAgICAgICAgICAj
IGZ1bmN0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGhhcyB0byBiZSBHTlVfU09V
UkNFIGFzIG9uIExpbnV4IGRFUVAgdXNlcyBzeXNjYWxsKCkKKyAgICAgICAgICAgICAgICAgICAg
J19HTlVfU09VUkNFJywKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgfV0sCisgICAg
ICAgICAgICBbJ09TPT0ibWFjIicsCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgJ2Rl
cXBfaW5jbHVkZV9kaXJzJzoKKyAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3BsYXRmb3JtL29zeCcsCisgICAgICAgICAgICAgICAg
XSwKKyAgICAgICAgICAgICAgICAnZGVxcF9kZWZpbmVzJzoKKyAgICAgICAgICAgICAgICBbCisg
ICAgICAgICAgICAgICAgICAgICMgQXNrIHRoZSBzeXN0ZW0gaGVhZGVycyB0byBleHBvc2UgYWxs
IHRoZSByZWd1bGFyIGZ1bmN0aW9uIG90aGVyd2lzZQorICAgICAgICAgICAgICAgICAgICAjIGRF
UVAgZG9lc24ndCBjb21waWxlIGFuZCBwcm9kdWNlcyB3YXJuaW5ncyBhYm91dCBpbXBsaWNpdGx5
IGRlZmluZWQKKyAgICAgICAgICAgICAgICAgICAgIyBmdW5jdGlvbnMuCisgICAgICAgICAgICAg
ICAgICAgICdfWE9QRU5fU09VUkNFPTYwMCcsCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgIH1dLAorICAgICAgICAgICAgWyd1c2Vfb3pvbmU9PTEnLAorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICdkZXFwX2RlZmluZXMnOgorICAgICAgICAgICAgICAgIFsKKyAgICAgICAg
ICAgICAgICAgICAgJ0FOR0xFX1VTRV9PWk9ORScsCisgICAgICAgICAgICAgICAgXSwKKyAgICAg
ICAgICAgIH1dLAorICAgICAgICBdLAorICAgIH0sCisgICAgJ2NvbmRpdGlvbnMnOgorICAgIFsK
KyAgICAgICAgWydhbmdsZV9idWlsZF9kZXFwX2xpYnJhcmllcz09MScsCisgICAgICAgIHsKKyAg
ICAgICAgICAgICd0YXJnZXRzJzoKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV96bGliJywKKyAgICAgICAg
ICAgICAgICAgICAgJ3R5cGUnOiAnc3RhdGljX2xpYnJhcnknLAorICAgICAgICAgICAgICAgICAg
ICAnaW5jbHVkZXMnOiBbICcuLi8uLi9idWlsZC9jb21tb25fZGVmaW5lcy5neXBpJywgXSwKKyAg
ICAgICAgICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6CisgICAgICAgICAgICAgICAgICAgIFsK
KyAgICAgICAgICAgICAgICAgICAgICAgICc8KHpsaWJfcGF0aCknLAorICAgICAgICAgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgICAgICAgICAnZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5ncyc6
CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRl
X2RpcnMnOgorICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICc8KHpsaWJfcGF0aCknLAorICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgJ21zdnNfc2V0dGluZ3MnOgor
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAnVkNDTENvbXBp
bGVyVG9vbCc6CisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ0FkZGl0aW9uYWxPcHRpb25zJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvd2Q0MTMxJywgIyBvbGQtc3R5
bGUgZGVjbGFyYXRvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL3dkNDI0NCcs
ICMgQ29udmVyc2lvbiBmcm9tICd0eXBlMScgdG8gJ3R5cGUyJywgcG9zc2libGUgbG9zcyBvZiBk
YXRhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvd2Q0MzI0JywgIyBzdHJ1Y3R1
cmUgd2FzIHBhZGRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL3dkNDcwMScs
ICMgcG90ZW50aWFsbHkgdW5pbml0IHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJy93ZDQ5OTYnLCAjIGRlcHJlY2F0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
LAorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOgorICAgICAgICAgICAgICAgICAgICBbCisg
ICAgICAgICAgICAgICAgICAgICAgICBbJ2FuZ2xlX2J1aWxkX3dpbnJ0PT0xJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEluIHpsaWIs
IGRlZmxhdGUuYy9pbnNlcnRfc3RyaW5nX3NzZSBhc3N1bWVzIF9NU0NfVkVSIGlzIG9ubHkgdXNl
ZCBmb3IgeDg2IG9yIHg2NAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVG8gY29tcGls
ZSB0aGlzIGZ1bmN0aW9uIGZvciBBUk0gdXNpbmcgTVNDLCB3ZSB0cmljayBpdCBieSBkZWZpbmlu
ZyBfX2NsYW5nX18KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIF9fY2xhbmdfXyBpc24n
dCB1c2VkIGVsc2V3aGVyZSB6bGliLCBzbyB0aGlzIHdvcmthcm91bmQgc2hvdWxkbid0IGltcGFj
dCBhbnl0aGluZyBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ19fY2xhbmdfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH1dLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgICAgICAgICAnc291cmNlcyc6CisgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICc8KHpsaWJfcGF0aCkvYWRsZXIzMi5jJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICc8KHpsaWJfcGF0aCkvY29tcHJlc3MuYycsCisgICAgICAgICAgICAgICAgICAgICAg
ICAnPCh6bGliX3BhdGgpL2NyYzMyLmMnLAorICAgICAgICAgICAgICAgICAgICAgICAgJzwoemxp
Yl9wYXRoKS9jcmMzMi5oJywKKyAgICAgICAgICAgICAgICAgICAgICAgICc8KHpsaWJfcGF0aCkv
ZGVmbGF0ZS5jJywKKyAgICAgICAgICAgICAgICAgICAgICAgICc8KHpsaWJfcGF0aCkvZGVmbGF0
ZS5oJywKKyAgICAgICAgICAgICAgICAgICAgICAgICc8KHpsaWJfcGF0aCkvZ3pjbG9zZS5jJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICc8KHpsaWJfcGF0aCkvZ3pndXRzLmgnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgJzwoemxpYl9wYXRoKS9nemxpYi5jJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICc8KHpsaWJfcGF0aCkvZ3pyZWFkLmMnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgJzwoemxpYl9wYXRoKS9nendyaXRlLmMnLAorICAgICAgICAgICAgICAgICAgICAgICAgJzwo
emxpYl9wYXRoKS9pbmZiYWNrLmMnLAorICAgICAgICAgICAgICAgICAgICAgICAgJzwoemxpYl9w
YXRoKS9pbmZmYXN0LmMnLAorICAgICAgICAgICAgICAgICAgICAgICAgJzwoemxpYl9wYXRoKS9p
bmZmYXN0LmgnLAorICAgICAgICAgICAgICAgICAgICAgICAgJzwoemxpYl9wYXRoKS9pbmZmaXhl
ZC5oJywKKyAgICAgICAgICAgICAgICAgICAgICAgICc8KHpsaWJfcGF0aCkvaW5mbGF0ZS5jJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICc8KHpsaWJfcGF0aCkvaW5mbGF0ZS5oJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICc8KHpsaWJfcGF0aCkvaW5mdHJlZXMuYycsCisgICAgICAgICAg
ICAgICAgICAgICAgICAnPCh6bGliX3BhdGgpL2luZnRyZWVzLmgnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgJzwoemxpYl9wYXRoKS9tb3p6Y29uZi5oJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICc8KHpsaWJfcGF0aCkvdHJlZXMuYycsCisgICAgICAgICAgICAgICAgICAgICAgICAnPCh6
bGliX3BhdGgpL3RyZWVzLmgnLAorICAgICAgICAgICAgICAgICAgICAgICAgJzwoemxpYl9wYXRo
KS91bmNvbXByLmMnLAorICAgICAgICAgICAgICAgICAgICAgICAgJzwoemxpYl9wYXRoKS94ODYu
aCcsCisgICAgICAgICAgICAgICAgICAgICAgICAnPCh6bGliX3BhdGgpL3pjb25mLmgnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgJzwoemxpYl9wYXRoKS96bGliLmgnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgJzwoemxpYl9wYXRoKS96dXRpbC5jJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICc8KHpsaWJfcGF0aCkvenV0aWwuaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAnPCh6
bGliX3BhdGgpL3NpbWRfc3R1Yi5jJywKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgICAgICB9LAorCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAndGFy
Z2V0X25hbWUnOiAnYW5nbGVfbGlicG5nJywKKyAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAn
c3RhdGljX2xpYnJhcnknLAorICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZXMnOiBbICcuLi8u
Li9idWlsZC9jb21tb25fZGVmaW5lcy5neXBpJywgXSwKKyAgICAgICAgICAgICAgICAgICAgJ2Rl
cGVuZGVuY2llcyc6CisgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICdhbmdsZV96bGliJworICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAg
ICAgICAnbXN2c19zZXR0aW5ncyc6CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICdWQ0NMQ29tcGlsZXJUb29sJzoKKyAgICAgICAgICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWRkaXRpb25hbE9wdGlvbnMnOgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJy93ZDQwMTgnLCAjIHNpZ25lZC91bnNpZ25lZCBtaXNtYXRjaAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnL3dkNDAyOCcsICMgcGFyYW1ldGVyIGRpZmZlcnMgZnJvbSBkZWNs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvd2Q0MTAxJywgIyB1bnJlZmVyZW5j
ZWQgbG9jYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy93ZDQxODknLCAjIHVu
cmVmZXJlbmNlZCBidXQgaW5pdHRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
L3dkNDI0NCcsICMgQ29udmVyc2lvbiBmcm9tICd0eXBlMScgdG8gJ3R5cGUyJywgcG9zc2libGUg
bG9zcyBvZiBkYXRhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvd2Q0MjY3Jywg
IyBDb252ZXJzaW9uIGZyb20gJ3NpemVfdCcgdG8gJ3R5cGUnLCBwb3NzaWJsZSBsb3NzIG9mIGRh
dGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgJ3NvdXJj
ZXMnOgorICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAnPChs
aWJwbmdfcGF0aCkvcG5nLmMnLAorICAgICAgICAgICAgICAgICAgICAgICAgJzwobGlicG5nX3Bh
dGgpL3BuZ2Vycm9yLmMnLAorICAgICAgICAgICAgICAgICAgICAgICAgJzwobGlicG5nX3BhdGgp
L3BuZ2dldC5jJywKKyAgICAgICAgICAgICAgICAgICAgICAgICc8KGxpYnBuZ19wYXRoKS9wbmdt
ZW0uYycsCisgICAgICAgICAgICAgICAgICAgICAgICAnPChsaWJwbmdfcGF0aCkvcG5ncHJlYWQu
YycsCisgICAgICAgICAgICAgICAgICAgICAgICAnPChsaWJwbmdfcGF0aCkvcG5ncmVhZC5jJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICc8KGxpYnBuZ19wYXRoKS9wbmdyaW8uYycsCisgICAg
ICAgICAgICAgICAgICAgICAgICAnPChsaWJwbmdfcGF0aCkvcG5ncnRyYW4uYycsCisgICAgICAg
ICAgICAgICAgICAgICAgICAnPChsaWJwbmdfcGF0aCkvcG5ncnV0aWwuYycsCisgICAgICAgICAg
ICAgICAgICAgICAgICAnPChsaWJwbmdfcGF0aCkvcG5nc2V0LmMnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgJzwobGlicG5nX3BhdGgpL3BuZ3RyYW5zLmMnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgJzwobGlicG5nX3BhdGgpL3BuZ3dpby5jJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICc8KGxpYnBuZ19wYXRoKS9wbmd3cml0ZS5jJywKKyAgICAgICAgICAgICAgICAgICAgICAgICc8
KGxpYnBuZ19wYXRoKS9wbmd3dHJhbi5jJywKKyAgICAgICAgICAgICAgICAgICAgICAgICc8KGxp
YnBuZ19wYXRoKS9wbmd3dXRpbC5jJywKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgXSwgIyB0YXJnZXRzCisgICAgICAgIH1dLCAjIGFuZ2xl
X2J1aWxkX2RlcXBfbGlicmFyaWVzPT0xCisgICAgICAgIFsnYW5nbGVfYnVpbGRfZGVxcF9saWJy
YXJpZXM9PTEnLAorICAgICAgICB7CisgICAgICAgICAgICAndGFyZ2V0cyc6CisgICAgICAgICAg
ICBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAndGFyZ2V0X25hbWUn
OiAnYW5nbGVfZGVxcF9zdXBwb3J0JywKKyAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnbm9u
ZScsCisgICAgICAgICAgICAgICAgICAgICdkaXJlY3RfZGVwZW5kZW50X3NldHRpbmdzJzoKKyAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmZpZ3VyYXRp
b25zJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnQ29tbW9uX0Jhc2UnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21zdnNfY29uZmlndXJhdGlvbl9hdHRyaWJ1dGVz
JzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIyBkRVFQIHJlcXVpcmVzIEFTQ0lJCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnQ2hhcmFjdGVyU2V0JzogJzAnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbXN2
c19zZXR0aW5ncyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWQ0xpbmtlclRvb2wnOgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdjb25kaXRpb25zJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsn
YW5nbGVfYnVpbGRfd2lucnQ9PTAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnQWRkaXRpb25hbERlcGVuZGVuY2llcyc6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2RiZ2hlbHAubGliJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2RpMzIubGliJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlcjMyLmxpYicsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dzMl8z
Mi5saWInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnYW5nbGVfYnVpbGRfd2lu
cnQ9PTEnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIERpc2FibGUg
Q09NREFUIG9wdGltaXphdGlvbnMsIGRpc2FibGVkIGJ5IGRlZmF1bHQgZm9yIG5vbi1XaW5SVAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FkZGl0aW9u
YWxPcHRpb25zJzogWycvT1BUOk5PUkVGJywgJy9PUFQ6Tk9JQ0YnXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkaXRpb25hbERlcGVuZGVuY2ll
cyBhdXRvbWF0aWNhbGx5IGNvbmZpZ3VyZXMgdGhlIHJlcXVpcmVkIC5saWJzCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWRkaXRpb25hbERlcGVuZGVu
Y2llcyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyUo
QWRkaXRpb25hbERlcGVuZGVuY2llcyknCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ0RlYnVnX0Jhc2UnOgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21zdnNfc2V0dGlu
Z3MnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnVkNDTENvbXBpbGVyVG9vbCc6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ1J1bnRpbWVUeXBlSW5mbyc6ICd0cnVlJywgIyBkRVFQIG5lZWRzIFJUVEkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdSZWxlYXNlX0Jhc2UnOgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21zdnNfc2V0dGluZ3Mn
OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnVkNDTENvbXBpbGVyVG9vbCc6CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ1J1bnRpbWVUeXBlSW5mbyc6ICd0cnVlJywgIyBkRVFQIG5lZWRzIFJUVEkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAjIFJlLWVuYWJsZSBSVFRJIGFu
ZCBleGNlcHRpb25zLCBkRVFQIG5lZWRzIHRoZW0uCisgICAgICAgICAgICAgICAgICAgICAgICAn
Y2ZsYWdzX2NjISc6CisgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJy1mbm8tZXhjZXB0aW9ucycsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJy1mbm8tcnR0aScsCisgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6IFsnPEAoZGVxcF9pbmNsdWRlX2RpcnMpJ10sCisg
ICAgICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6IFsnPEAoZGVxcF9kZWZpbmVzKSddLAor
ICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMhJzogWyAnPEAoZGVxcF91bmRlZmluZXMp
JyBdLAorICAgICAgICAgICAgICAgICAgICAgICAgJ21zdnNfc2V0dGluZ3MnOgorICAgICAgICAg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWQ0NMQ29tcGls
ZXJUb29sJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdBZGRpdGlvbmFsT3B0aW9ucyc6IFsnPEAoZGVxcF93aW5fY2ZsYWdz
KSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOgorICAgICAgICAg
ICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnY2xhbmc9PTEn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIyBUT0RPKGptYWRpbGwpOiBSZW1vdmUgdGhpcyBvbmNlIHdlIGZpeCBkRVFQLgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2ZsYWdzX2NjJzoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJy1Xbm8tZGVsZXRlLW5vbi12aXJ0dWFsLWR0b3InLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFsnT1M9PSJ3aW4iJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjZmxhZ3MnOiBbJzxAKGRl
cXBfd2luX2NmbGFncyknXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NmbGFn
c19jYyc6IFsnPEAoZGVxcF93aW5fY2ZsYWdzKSddLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnaW5jbHVkZV9kaXJzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFt
ZXdvcmsvcGxhdGZvcm0vd2luMzInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dLAorICAgICAgICAgICAgICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgJ2NvbmRp
dGlvbnMnOgorICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICBb
J2FuZ2xlX2J1aWxkX3dpbnJ0PT0xJywKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgOiAnc2hhcmVkX2xpYnJhcnknLAorICAgICAg
ICAgICAgICAgICAgICAgICAgfV0sCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAg
ICAgICAgfSwKKworICAgICAgICAgICAgICAgICMgQ29tcGlsZSBkZWNwcCBzZXBhcmF0ZWx5IGJl
Y2F1c2UgTVNWQyBpZ25vcmVzIHRoZSBleHRlbnNpb24gb2YgdGhlIGZpbGVzIHdoZW4KKyAgICAg
ICAgICAgICAgICAjIG91dHB1dHRpbmcgdGhlIG9iaiBmaWxlLCBhbmQgbGF0ZXIgdGhpbmtzIHRo
YXQgYSBkZWNwcCBvYmogYW5kIGFub3RoZXIgb2JqIGFyZSB0aGUKKyAgICAgICAgICAgICAgICAj
IHNhbWUsIGlnbm9yaW5nIG9uZSBhbmQgZXZlbnR1YWxseSBwcm9kdWNpbmcgYSBsaW5rIGVycm9y
LiBUaGUgcHJvYmxlbSBvY2N1cnMgZm9yCisgICAgICAgICAgICAgICAgIyBleGFtcGxlIGJldHdl
ZW4gZGVjcHAvZGVSYW5kb20uY3BwIGFuZCBkZWJhc2UvZGVSYW5kb20uYworICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2FuZ2xlX2RlcXBfZGVj
cHAnLAorICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdzdGF0aWNfbGlicmFyeScsCisgICAg
ICAgICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiBbICdhbmdsZV9kZXFwX3N1cHBvcnQnIF0s
CisgICAgICAgICAgICAgICAgICAgICdzb3VyY2VzJzoKKyAgICAgICAgICAgICAgICAgICAgWwor
ICAgICAgICAgICAgICAgICAgICAgICAgJzxAKGRlcXBfbGlidGVzdGVyX2RlY3BwX3NvdXJjZXMp
JywKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgIyBJbiBhIGNo
cm9taXVtIGJ1aWxkIGRsIGlzIHJlcXVpcmVkIGZvciBkZUR5bmFtaWNMaWJyYXJ5CisgICAgICAg
ICAgICAgICAgICAgICdjb25kaXRpb25zJzoKKyAgICAgICAgICAgICAgICAgICAgWworICAgICAg
ICAgICAgICAgICAgICAgICAgWydPUz09ImxpbnV4IicsCisgICAgICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xpbmtfc2V0dGluZ3MnOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2xpYnJhcmllcyc6IFsnLWxkbCddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH1dLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAg
ICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICd0
YXJnZXRfbmFtZSc6ICdhbmdsZV9kZXFwX2xpYnRlc3RlcicsCisgICAgICAgICAgICAgICAgICAg
ICd0eXBlJzogJ3N0YXRpY19saWJyYXJ5JywKKyAgICAgICAgICAgICAgICAgICAgJ2RlcGVuZGVu
Y2llcyc6CisgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICdh
bmdsZV9kZXFwX2RlY3BwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdhbmdsZV9kZXFwX3N1
cHBvcnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZ2xlX2xpYnBuZycsCisgICAgICAg
ICAgICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvYW5nbGUuZ3lwOmxpYkVHTCcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS91dGlsL3V0aWwuZ3lwOmFuZ2xl
X3V0aWwnLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAnZXhw
b3J0X2RlcGVuZGVudF9zZXR0aW5ncyc6CisgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICdhbmdsZV9kZXFwX3N1cHBvcnQnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgJzwoYW5nbGVfcGF0aCkvdXRpbC91dGlsLmd5cDphbmdsZV91dGlsJywKKyAgICAgICAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6CisgICAg
ICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgp
L2luY2x1ZGUnLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAn
ZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5ncyc6CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICdpbmNsdWRlX2RpcnMnOgorICAgICAgICAgICAgICAgICAgICAg
ICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL2luY2x1ZGUn
LAorICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdk
ZWZpbmVzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnQU5HTEVfREVRUF9MSUJURVNURVJfSU1QTEVNRU5UQVRJT04nLAorICAgICAgICAg
ICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICAgICAgJ21zdnNfc2V0dGluZ3MnOgorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAnVkNDTENvbXBpbGVyVG9vbCc6CisgICAgICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FkZGl0aW9uYWxPcHRpb25zJzoKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcvYmlnb2JqJywgIyBuZWVkZWQgZm9yIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5jcHAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy93ZDQyNTEnLCAjIG5lZWRlZCBmb3Ig
YW5nbGVfdXRpbCBTVEwgb2JqZWN0cyBub3QgaGF2aW5nIERMTCBpbnRlcmZhY2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgorICAgICAg
ICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAnPEAoZGVxcF9saWJ0ZXN0
ZXJfc291cmNlcyknLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAg
ICAnY29uZGl0aW9ucyc6CisgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFsnT1M9PSJtYWMiJywKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5ncyc6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
eGNvZGVfc2V0dGluZ3MnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRFlMSUJfSU5TVEFMTF9OQU1FX0JBU0Un
OiAnQHJwYXRoJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgfV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICBbJ09TPT0id2luIicsCisgICAgICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOiBbICc8QChkZXFwX2xp
YnRlc3Rlcl9zb3VyY2VzX3dpbiknLCBdLAorICAgICAgICAgICAgICAgICAgICAgICAgfV0sCisg
ICAgICAgICAgICAgICAgICAgICAgICBbJ09TPT0ibGludXgiIG9yIE9TPT0ibWFjIicsCisgICAg
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvdXJj
ZXMnOiBbICc8QChkZXFwX2xpYnRlc3Rlcl9zb3VyY2VzX3VuaXgpJywgXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH1dLAorICAgICAgICAgICAgICAgICAgICAgICAgWydPUz09ImxpbnV4Iics
CisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2xpbmtfc2V0dGluZ3MnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2xpYnJhcmllcyc6IFsnLWxydCddCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIH1dLAorICAgICAg
ICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV9kZXFwX2xpYmdsZXMy
JywKKyAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnc2hhcmVkX2xpYnJhcnknLAorICAgICAg
ICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzoKKyAgICAgICAgICAgICAgICAgICAgWworICAg
ICAgICAgICAgICAgICAgICAgICAgJ2FuZ2xlX2RlcXBfbGlidGVzdGVyJywKKyAgICAgICAgICAg
ICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOgorICAgICAgICAgICAg
ICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAnQU5HTEVfREVRUF9HTEVTMl9URVNU
UycsCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICdkaXJlY3Rf
ZGVwZW5kZW50X3NldHRpbmdzJzoKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgJ2RlZmluZXMnOgorICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdBTkdMRV9ERVFQX0dMRVMyX1RFU1RTJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgICAgICdzb3VyY2VzJzoKKyAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAg
ICAgICAgICAgJzxAKGRlcXBfZ2xlczJfc291cmNlcyknLAorICAgICAgICAgICAgICAgICAgICAg
ICAgJ2RlcXBfc3VwcG9ydC9hbmdsZV9kZXFwX2xpYnRlc3Rlcl9tYWluLmNwcCcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAnZGVxcF9zdXBwb3J0L3RjdUFOR0xFUGxhdGZvcm0uY3BwJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICdkZXFwX3N1cHBvcnQvdGN1QU5HTEVQbGF0Zm9ybS5oJywK
KyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICB9LAorCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAnYW5nbGVfZGVxcF9s
aWJnbGVzMycsCisgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ3NoYXJlZF9saWJyYXJ5JywK
KyAgICAgICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6CisgICAgICAgICAgICAgICAgICAg
IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICdhbmdsZV9kZXFwX2xpYnRlc3RlcicsCisgICAg
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICdkZWZpbmVzJzoKKyAgICAg
ICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgJ0FOR0xFX0RFUVBfR0xF
UzNfVEVTVFMnLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAn
ZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5ncyc6CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICdkZWZpbmVzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIFsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQU5HTEVfREVRUF9HTEVTM19URVNUUycsCisg
ICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgICAgICAnc291cmNlcyc6CisgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICc8QChkZXFwX2dsZXMzX3NvdXJjZXMpJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICdkZXFwX3N1cHBvcnQvYW5nbGVfZGVxcF9saWJ0ZXN0ZXJfbWFpbi5jcHAnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcXBfc3VwcG9ydC90Y3VBTkdMRVBsYXRmb3JtLmNw
cCcsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGVxcF9zdXBwb3J0L3RjdUFOR0xFUGxhdGZv
cm0uaCcsCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgfSwKKworICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2FuZ2xl
X2RlcXBfbGliZ2xlczMxJywKKyAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnc2hhcmVkX2xp
YnJhcnknLAorICAgICAgICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzoKKyAgICAgICAgICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZ2xlX2RlcXBfbGlidGVzdGVy
JywKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMn
OgorICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAnQU5HTEVf
REVRUF9HTEVTMzFfVEVTVFMnLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAg
ICAgICAgICAnZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5ncyc6CisgICAgICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICdkZWZpbmVzJzoKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQU5HTEVfREVRUF9HTEVTMzFf
VEVTVFMnLAorICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgorICAgICAgICAgICAgICAgICAgICBb
CisgICAgICAgICAgICAgICAgICAgICAgICAnPEAoZGVxcF9nbGVzMzFfc291cmNlcyknLAorICAg
ICAgICAgICAgICAgICAgICAgICAgJ2RlcXBfc3VwcG9ydC9hbmdsZV9kZXFwX2xpYnRlc3Rlcl9t
YWluLmNwcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGVxcF9zdXBwb3J0L3RjdUFOR0xF
UGxhdGZvcm0uY3BwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdkZXFwX3N1cHBvcnQvdGN1
QU5HTEVQbGF0Zm9ybS5oJywKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAg
ICB9LAorCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAndGFyZ2V0X25h
bWUnOiAnYW5nbGVfZGVxcF9saWJlZ2wnLAorICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdz
aGFyZWRfbGlicmFyeScsCisgICAgICAgICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOgorICAg
ICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAnYW5nbGVfZGVxcF9s
aWJ0ZXN0ZXInLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAn
ZGVmaW5lcyc6CisgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICdBTkdMRV9ERVFQX0VHTF9URVNUUycsCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAg
ICAgICAgICAgICAgICdkaXJlY3RfZGVwZW5kZW50X3NldHRpbmdzJzoKKyAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOgorICAgICAgICAgICAg
ICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBTkdMRV9ERVFQX0VH
TF9URVNUUycsCisgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6CisgICAgICAgICAgICAgICAgICAg
IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICc8QChkZXFwX2VnbF9zb3VyY2VzKScsCisgICAg
ICAgICAgICAgICAgICAgICAgICAnZGVxcF9zdXBwb3J0L2FuZ2xlX2RlcXBfbGlidGVzdGVyX21h
aW4uY3BwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdkZXFwX3N1cHBvcnQvdGN1QU5HTEVQ
bGF0Zm9ybS5jcHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcXBfc3VwcG9ydC90Y3VB
TkdMRVBsYXRmb3JtLmgnLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICBdLCAjIHRhcmdldHMKKyAgICAgICAgfV0sICMgYW5nbGVfYnVpbGRf
ZGVxcF9saWJyYXJpZXMKKyAgICAgICAgWydhbmdsZV9idWlsZF9kZXFwX2V4ZWN1dGFibGVzPT0x
JywKKyAgICAgICAgeworICAgICAgICAgICAgInRhcmdldHMiOgorICAgICAgICAgICAgWworICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2FuZ2xl
X2RlcXBfZ2xlczJfdGVzdHMnLAorICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdleGVjdXRh
YmxlJywKKyAgICAgICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6CisgICAgICAgICAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICdhbmdsZV9kZXFwX2xpYmdsZXMyJywK
KyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgor
ICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAnZGVxcF9zdXBw
b3J0L2FuZ2xlX2RlcXBfdGVzdHNfbWFpbi5jcHAnLAorICAgICAgICAgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV9kZXFwX2dsZXMzX3Rlc3RzJywKKyAgICAgICAgICAg
ICAgICAgICAgJ3R5cGUnOiAnZXhlY3V0YWJsZScsCisgICAgICAgICAgICAgICAgICAgICdkZXBl
bmRlbmNpZXMnOgorICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAg
ICAnYW5nbGVfZGVxcF9saWJnbGVzMycsCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAg
ICAgICAgICAgICAgICdzb3VyY2VzJzoKKyAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAg
ICAgICAgICAgICAgICAgJ2RlcXBfc3VwcG9ydC9hbmdsZV9kZXFwX3Rlc3RzX21haW4uY3BwJywK
KyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICB9LAorCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAnYW5nbGVfZGVxcF9n
bGVzMzFfdGVzdHMnLAorICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdleGVjdXRhYmxlJywK
KyAgICAgICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6CisgICAgICAgICAgICAgICAgICAg
IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICdhbmdsZV9kZXFwX2xpYmdsZXMzMScsCisgICAg
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICdzb3VyY2VzJzoKKyAgICAg
ICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcXBfc3VwcG9ydC9h
bmdsZV9kZXFwX3Rlc3RzX21haW4uY3BwJywKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAg
ICAgICAgICAgICB9LAorCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAn
dGFyZ2V0X25hbWUnOiAnYW5nbGVfZGVxcF9lZ2xfdGVzdHMnLAorICAgICAgICAgICAgICAgICAg
ICAndHlwZSc6ICdleGVjdXRhYmxlJywKKyAgICAgICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2ll
cyc6CisgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICdhbmds
ZV9kZXFwX2xpYmVnbCcsCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg
ICAgICdzb3VyY2VzJzoKKyAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAg
ICAgICAgJ2RlcXBfc3VwcG9ydC9hbmdsZV9kZXFwX3Rlc3RzX21haW4uY3BwJywKKyAgICAgICAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgXSwgIyB0YXJn
ZXRzCisgICAgICAgIH1dLCAjIGFuZ2xlX2J1aWxkX2RlcXBfZXhlY3V0YWJsZXMKKyAgICAgICAg
WydhbmdsZV9idWlsZF9kZXFwX2d0ZXN0X3N1cHBvcnQ9PTEnLAorICAgICAgICB7CisgICAgICAg
ICAgICAndGFyZ2V0cyc6CisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgIyBIZWxwZXIg
dGFyZ2V0IGZvciBzeW5jaGluZyBvdXIgaW1wbGVtZW50YXRpb24gd2l0aCBjaHJvbWUncworICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2FuZ2xl
X2RlcXBfZ3Rlc3Rfc3VwcG9ydCcsCisgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ25vbmUn
LAorICAgICAgICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzoKKyAgICAgICAgICAgICAgICAg
ICAgWworICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZ2xlX3Rlc3Rfc3VwcG9ydCcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS91dGlsL3V0aWwuZ3lwOmFuZ2xlX3V0
aWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2FuZ2xlLmd5
cDphbmdsZV9jb21tb24nLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAg
ICAgICAnZXhwb3J0X2RlcGVuZGVudF9zZXR0aW5ncyc6CisgICAgICAgICAgICAgICAgICAgIFsK
KyAgICAgICAgICAgICAgICAgICAgICAgICdhbmdsZV90ZXN0X3N1cHBvcnQnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvdXRpbC91dGlsLmd5cDphbmdsZV91dGlsJywK
KyAgICAgICAgICAgICAgICAgICAgXSwKKworICAgICAgICAgICAgICAgICAgICAnZGlyZWN0X2Rl
cGVuZGVudF9zZXR0aW5ncyc6CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICdpbmNsdWRlX2RpcnMnOgorICAgICAgICAgICAgICAgICAgICAgICAgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdkZXFwX3N1cHBvcnQnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBlY3RhdGlvbnMnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdzb3VyY2VzJzoK
KyAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
PEAoZGVxcF9ncHVfdGVzdF9leHBlY3RhdGlvbnNfc291cmNlcyknLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdkZXFwX3N1cHBvcnQvYW5nbGVfZGVxcF9ndGVzdC5jcHAnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgXSwKKworICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMn
OgorICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMgUmUtZGVmaW5lIHRoZSBtaXNzaW5nIFdpbmRvd3MgbWFjcm9zCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJzxAKGRlcXBfdW5kZWZpbmVzKScsCisgICAgICAgICAgICAgICAgICAgICAg
ICBdLAorCisgICAgICAgICAgICAgICAgICAgICAgICAnbXN2c19zZXR0aW5ncyc6CisgICAgICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZDTGlua2Vy
VG9vbCc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnQWRkaXRpb25hbERlcGVuZGVuY2llcyc6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1
c2VyMzIubGliJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKworICAg
ICAgICAgICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOgorICAgICAgICAgICAgICAgICAgICAg
ICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTk9URShzbWNncnVlcik6IEd1YXJk
aW5nIHdpdGggdXNlX2xpYnBjaSBhbGxvd3MgZ3lwIHRvIHJ1biBzdWNjZXNzZnVsbHkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjIG9uIHN5c3RlbXMgd2l0aG91dCBsaWJwY2ksIGJ1dCB0
aGUgdGVzdCB0YXJnZXRzIHdpbGwgbm90IGNvbXBpbGUgb3IgbGluay4KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbJ09TPT0ibGludXgiIGFuZCB1c2VfbGlicGNpPT0xJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICds
ZGZsYWdzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJzwhQCg8KHBrZy1jb25maWcpIC0tbGlicy1vbmx5LUwg
LS1saWJzLW9ubHktb3RoZXIgbGlicGNpKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaWJyYXJpZXMnOgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnPCFAKDwocGtnLWNvbmZpZykgLS1saWJzLW9ubHktbCBsaWJwY2kpJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ09TPT0ibWFjIicsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnc291cmNlcyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBlY3Rh
dGlvbnMvZ3B1X3Rlc3RfY29uZmlnX21hYy5tbScsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaW5rX3NldHRpbmdz
JzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2xpYnJhcmllcyc6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyQo
U0RLUk9PVCkvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgIF0sICMgdGFyZ2V0cworICAgICAgICB9XSwgIyBhbmdsZV9idWls
ZF9kZXFwX2d0ZXN0X3N1cHBvcnQKKyAgICAgICAgWydhbmdsZV9idWlsZF9kZXFwX2d0ZXN0X2V4
ZWN1dGFibGVzPT0xJywKKyAgICAgICAgeworICAgICAgICAgICAgInRhcmdldHMiOgorICAgICAg
ICAgICAgWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgJ3RhcmdldF9u
YW1lJzogJ2FuZ2xlX2RlcXBfZ3Rlc3RfZ2xlczJfdGVzdHMnLAorICAgICAgICAgICAgICAgICAg
ICAndHlwZSc6ICdleGVjdXRhYmxlJywKKyAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGVzJzog
WyAnLi4vLi4vYnVpbGQvY29tbW9uX2RlZmluZXMuZ3lwaScsIF0sCisgICAgICAgICAgICAgICAg
ICAgICdkZXBlbmRlbmNpZXMnOgorICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAnYW5nbGVfZGVxcF9ndGVzdF9zdXBwb3J0JywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICdhbmdsZV9kZXFwX2xpYmdsZXMyJywKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgorICAgICAgICAgICAgICAgICAgICBbCisgICAg
ICAgICAgICAgICAgICAgICAgICAnZGVxcF9zdXBwb3J0L2FuZ2xlX2RlcXBfZ3Rlc3RfbWFpbi5j
cHAnLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIH0sCisKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV9k
ZXFwX2d0ZXN0X2dsZXMzX3Rlc3RzJywKKyAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnZXhl
Y3V0YWJsZScsCisgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlcyc6IFsgJy4uLy4uL2J1aWxk
L2NvbW1vbl9kZWZpbmVzLmd5cGknLCBdLAorICAgICAgICAgICAgICAgICAgICAnZGVwZW5kZW5j
aWVzJzoKKyAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgJ2Fu
Z2xlX2RlcXBfZ3Rlc3Rfc3VwcG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAgICAnYW5nbGVf
ZGVxcF9saWJnbGVzMycsCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg
ICAgICdzb3VyY2VzJzoKKyAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAg
ICAgICAgJ2RlcXBfc3VwcG9ydC9hbmdsZV9kZXFwX2d0ZXN0X21haW4uY3BwJywKKyAgICAgICAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAnYW5nbGVfZGVxcF9ndGVzdF9nbGVz
MzFfdGVzdHMnLAorICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdleGVjdXRhYmxlJywKKyAg
ICAgICAgICAgICAgICAgICAgJ2luY2x1ZGVzJzogWyAnLi4vLi4vYnVpbGQvY29tbW9uX2RlZmlu
ZXMuZ3lwaScsIF0sCisgICAgICAgICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOgorICAgICAg
ICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAnYW5nbGVfZGVxcF9ndGVz
dF9zdXBwb3J0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICdhbmdsZV9kZXFwX2xpYmdsZXMz
MScsCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICdzb3VyY2Vz
JzoKKyAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcXBf
c3VwcG9ydC9hbmdsZV9kZXFwX2d0ZXN0X21haW4uY3BwJywKKyAgICAgICAgICAgICAgICAgICAg
XSwKKyAgICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAndGFyZ2V0X25hbWUnOiAnYW5nbGVfZGVxcF9ndGVzdF9lZ2xfdGVzdHMnLAorICAg
ICAgICAgICAgICAgICAgICAndHlwZSc6ICdleGVjdXRhYmxlJywKKyAgICAgICAgICAgICAgICAg
ICAgJ2luY2x1ZGVzJzogWyAnLi4vLi4vYnVpbGQvY29tbW9uX2RlZmluZXMuZ3lwaScsIF0sCisg
ICAgICAgICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOgorICAgICAgICAgICAgICAgICAgICBb
CisgICAgICAgICAgICAgICAgICAgICAgICAnYW5nbGVfZGVxcF9ndGVzdF9zdXBwb3J0JywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICdhbmdsZV9kZXFwX2xpYmVnbCcsCisgICAgICAgICAgICAg
ICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICdzb3VyY2VzJzoKKyAgICAgICAgICAgICAg
ICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcXBfc3VwcG9ydC9hbmdsZV9kZXFw
X2d0ZXN0X21haW4uY3BwJywKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgXSwgIyB0YXJnZXRzCisgICAgICAgIH1dLCAjIGFuZ2xlX2J1aWxk
X2RlcXBfZ3Rlc3RfZXhlY3V0YWJsZXMKKyAgICBdLCAjIGNvbmRpdGlvbnMKK30KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0cy5neXAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RzLmd5cAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdHMuZ3lwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzQ5IEBACisjIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisj
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKK3sKKyAgICAnaW5jbHVkZXMnOgorICAgIFsK
KyAgICAgICAgJ2RlcXAuZ3lwaScsCisgICAgICAgICcuLi8uLi9idWlsZC9jb21tb25fZGVmaW5l
cy5neXBpJywKKyAgICBdLAorICAgICd2YXJpYWJsZXMnOgorICAgIHsKKyAgICAgICAgJ2FuZ2xl
X2J1aWxkX2NvbmZvcm1hbmNlX3Rlc3RzJSc6ICcwJywKKworICAgICAgICAncmFwaWRqc29uX2lu
Y2x1ZGVfZGlyJzogJ3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlJywKKyAgICAgICAgJ3Jh
cGlkanNvbl9oZWFkZXJzJzoKKyAgICAgICAgWworICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L3Jh
cGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9hbGxvY2F0b3JzLmgnLAorICAgICAgICAgICAgJ3Ro
aXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9kb2N1bWVudC5oJywKKyAgICAg
ICAgICAgICd0aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vZW5jb2RlZHN0
cmVhbS5oJywKKyAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBp
ZGpzb24vZW5jb2RpbmdzLmgnLAorICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L3JhcGlkanNvbi9p
bmNsdWRlL3JhcGlkanNvbi9maWxlcmVhZHN0cmVhbS5oJywKKyAgICAgICAgICAgICd0aGlyZF9w
YXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vZmlsZXN0cmVhbS5oJywKKyAgICAgICAg
ICAgICd0aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vZmlsZXdyaXRlc3Ry
ZWFtLmgnLAorICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlk
anNvbi9tZW1vcnlidWZmZXIuaCcsCisgICAgICAgICAgICAndGhpcmRfcGFydHkvcmFwaWRqc29u
L2luY2x1ZGUvcmFwaWRqc29uL21lbW9yeXN0cmVhbS5oJywKKyAgICAgICAgICAgICd0aGlyZF9w
YXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vcHJldHR5d3JpdGVyLmgnLAorICAgICAg
ICAgICAgJ3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9yYXBpZGpzb24u
aCcsCisgICAgICAgICAgICAndGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29u
L3JlYWRlci5oJywKKyAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9y
YXBpZGpzb24vc3RyaW5nYnVmZmVyLmgnLAorICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L3JhcGlk
anNvbi9pbmNsdWRlL3JhcGlkanNvbi93cml0ZXIuaCcsCisgICAgICAgICAgICAndGhpcmRfcGFy
dHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2Vycm9yL2VuLmgnLAorICAgICAgICAgICAg
J3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9lcnJvci9lcnJvci5oJywK
KyAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50
ZXJuYWwvZHRvYS5oJywKKyAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVk
ZS9yYXBpZGpzb24vaW50ZXJuYWwvaXRvYS5oJywKKyAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9y
YXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvbWV0YS5oJywKKyAgICAgICAgICAg
ICd0aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvcG93MTAu
aCcsCisgICAgICAgICAgICAndGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29u
L2ludGVybmFsL3N0YWNrLmgnLAorICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L3JhcGlkanNvbi9p
bmNsdWRlL3JhcGlkanNvbi9pbnRlcm5hbC9zdHJmdW5jLmgnLAorICAgICAgICAgICAgJ3RoaXJk
X3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9tc2ludHR5cGVzL2ludHR5cGVzLmgn
LAorICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9t
c2ludHR5cGVzL3N0ZGludC5oJywKKyAgICAgICAgXSwKKyAgICB9LAorICAgICdjb25kaXRpb25z
JzoKKyAgICBbCisgICAgICAgICMgR29vZ2xlVGVzdCBkb2Vzbid0IHN1cHBvcnQgV2luUlQKKyAg
ICAgICAgWydhbmdsZV9idWlsZF93aW5ydD09MCcsCisgICAgICAgIHsKKyAgICAgICAgICAgICd0
YXJnZXRzJzoKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV90ZXN0X3N1cHBvcnQnLAorICAgICAgICAgICAg
ICAgICAgICAndHlwZSc6ICdub25lJywKKyAgICAgICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2ll
cyc6CisgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICdhbmds
ZV9pbnRlcm5hbF9nbW9jaycsCisgICAgICAgICAgICAgICAgICAgICAgICAnYW5nbGVfaW50ZXJu
YWxfZ3Rlc3QnLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICBdLAorICAgICAgICB9XSwKKyAgICAgICAgWydhbmdsZV9idWlsZF93aW5ydD09
MCcsCisgICAgICAgIHsKKyAgICAgICAgICAgICd0YXJnZXRzJzoKKyAgICAgICAgICAgIFsKKyAg
ICAgICAgICAgICAgICAjIEhpZGUgdGhlc2UgdGFyZ2V0cyBmcm9tIENocm9taXVtLCBiZWNhdXNl
IGl0IGNhbid0CisgICAgICAgICAgICAgICAgIyBmaW5kIG91ciBzdGFuZGFsb25lIGNvcHkgb2Yg
dGhlIGd0ZXN0L2dtb2NrIHNvdXJjZXMuCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAndGFyZ2V0X25hbWUnOiAnYW5nbGVfaW50ZXJuYWxfZ3Rlc3QnLAorICAgICAgICAg
ICAgICAgICAgICAndHlwZSc6ICdzdGF0aWNfbGlicmFyeScsCisgICAgICAgICAgICAgICAgICAg
ICdpbmNsdWRlcyc6IFsgJy4uLy4uL2J1aWxkL2NvbW1vbl9kZWZpbmVzLmd5cGknLCBdLAorICAg
ICAgICAgICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzoKKyAgICAgICAgICAgICAgICAgICAgWwor
ICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvaW5jbHVkZScsCisgICAg
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICdzb3VyY2VzJzoKKyAgICAg
ICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3Qvc3JjL2d0ZXN0LWFsbC5jYycsCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAg
ICAgICAgICAgICAgICAgICdkZWZpbmVzJzoKKyAgICAgICAgICAgICAgICAgICAgWworICAgICAg
ICAgICAgICAgICAgICAgICAgJ19WQVJJQURJQ19NQVg9MTAnLAorICAgICAgICAgICAgICAgICAg
ICBdLAorICAgICAgICAgICAgICAgICAgICAnYWxsX2RlcGVuZGVudF9zZXR0aW5ncyc6CisgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICdkZWZpbmVzJzoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX1ZB
UklBRElDX01BWD0xMCcsCisgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6CisgICAgICAgICAgICAgICAgICAgICAgICBbCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2luY2x1ZGUn
LAorICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAndGFyZ2V0X25hbWUnOiAnYW5nbGVfaW50ZXJuYWxfZ21vY2snLAorICAgICAgICAgICAgICAg
ICAgICAndHlwZSc6ICdzdGF0aWNfbGlicmFyeScsCisgICAgICAgICAgICAgICAgICAgICdpbmNs
dWRlcyc6IFsgJy4uLy4uL2J1aWxkL2NvbW1vbl9kZWZpbmVzLmd5cGknLCBdLAorICAgICAgICAg
ICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzoKKyAgICAgICAgICAgICAgICAgICAgWworICAgICAg
ICAgICAgICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L2dvb2dsZW1vY2snLAorICAgICAgICAgICAg
ICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L2dvb2dsZW1vY2svaW5jbHVkZScsCisgICAgICAgICAg
ICAgICAgICAgICAgICAndGhpcmRfcGFydHkvZ29vZ2xldGVzdC9pbmNsdWRlJywKKyAgICAgICAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgorICAgICAgICAg
ICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAndGhpcmRfcGFydHkvZ29vZ2xl
bW9jay9zcmMvZ21vY2stYWxsLmNjJywKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgICAgICAgICAgJ2RlZmluZXMnOgorICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAnX1ZBUklBRElDX01BWD0xMCcsCisgICAgICAgICAgICAgICAgICAgIF0s
CisgICAgICAgICAgICAgICAgICAgICdhbGxfZGVwZW5kZW50X3NldHRpbmdzJzoKKyAgICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOgorICAgICAg
ICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfVkFSSUFE
SUNfTUFYPTEwJywKKyAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAnaW5jbHVkZV9kaXJzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAndGhpcmRfcGFydHkvZ29vZ2xlbW9jaycsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L2dvb2dsZW1vY2svaW5jbHVkZScsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvaW5jbHVk
ZScsCisgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICAjIFRoZXNlIHNhbWUgdGFyZ2V0
IG5hbWVzIGV4aXN0IG9uIHRoZSBDaHJvbWl1bSBzaWRlLAorICAgICAgICAgICAgICAgICMgd2hp
Y2ggaXMgZm9yYmlkZGVuLCBzbyB3ZSBtYWtlIHRoZW0gY29uZGl0aW9uYWwgb24KKyAgICAgICAg
ICAgICAgICAjIEFOR0xFJ3Mgc3RhbmRhbG9uZSBidWlsZC4KKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV91bml0dGVzdHMnLAorICAg
ICAgICAgICAgICAgICAgICAndHlwZSc6ICdleGVjdXRhYmxlJywKKyAgICAgICAgICAgICAgICAg
ICAgJ2luY2x1ZGVzJzoKKyAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAg
ICAgICAgJy4uLy4uL2J1aWxkL2NvbW1vbl9kZWZpbmVzLmd5cGknLAorICAgICAgICAgICAgICAg
ICAgICAgICAgJ2FuZ2xlX3VuaXR0ZXN0cy5neXBpJywKKyAgICAgICAgICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgorICAgICAgICAgICAgICAgICAgICBbCisg
ICAgICAgICAgICAgICAgICAgICAgICAnYW5nbGVfdW5pdHRlc3RzX21haW4uY3BwJywKKyAgICAg
ICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgJ21zdnNfc2V0dGluZ3MnOgor
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAnVkNMaW5rZXJU
b29sJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnY29uZGl0aW9ucyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2FuZ2xlX2J1aWxkX3dpbnJ0PT0xJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ0FkZGl0aW9uYWxEZXBlbmRlbmNpZXMnOgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdydW50aW1lb2JqZWN0LmxpYicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgJ21zdnNfZGlzYWJsZWRfd2FybmluZ3Mn
OgorICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICA0MjQ0LCAj
IENvbnZlcnNpb24gZnJvbSAndHlwZTEnIHRvICd0eXBlMicsIHBvc3NpYmxlIGxvc3Mgb2YgZGF0
YQorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAnYW5nbGVfZW5kMmVu
ZF90ZXN0cycsCisgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ2V4ZWN1dGFibGUnLAorICAg
ICAgICAgICAgICAgICAgICAnaW5jbHVkZXMnOgorICAgICAgICAgICAgICAgICAgICBbCisgICAg
ICAgICAgICAgICAgICAgICAgICAnLi4vLi4vYnVpbGQvY29tbW9uX2RlZmluZXMuZ3lwaScsCisg
ICAgICAgICAgICAgICAgICAgICAgICAnYW5nbGVfZW5kMmVuZF90ZXN0cy5neXBpJywKKyAgICAg
ICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgorICAgICAg
ICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAnYW5nbGVfZW5kMmVuZF90
ZXN0c19tYWluLmNwcCcsCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6
ICdhbmdsZV9wZXJmdGVzdHMnLAorICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdleGVjdXRh
YmxlJywKKyAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGVzJzoKKyAgICAgICAgICAgICAgICAg
ICAgWworICAgICAgICAgICAgICAgICAgICAgICAgJy4uLy4uL2J1aWxkL2NvbW1vbl9kZWZpbmVz
Lmd5cGknLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZ2xlX3BlcmZ0ZXN0cy5neXBpJywK
KyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgor
ICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAnYW5nbGVfcGVy
ZnRlc3RzX21haW4uY3BwJywKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgXSwKKyAgICAgICAgfV0sCisgICAgICAgIFsnT1M9PSJ3aW4iJywK
KyAgICAgICAgeworICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOgorICAgICAgICAgICAgWworICAg
ICAgICAgICAgICAgIFsnYW5nbGVfYnVpbGRfY29uZm9ybWFuY2VfdGVzdHMnLAorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgJ3ZhcmlhYmxlcyc6CisgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICdnbGVzX2NvbmZvcm1hbmNlX3Rlc3Rz
X291dHB1dF9kaXInOiAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvY29uZm9ybWFuY2VfdGVz
dHMnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2dsZXNfY29uZm9ybWFuY2VfdGVzdHNfaW5w
dXRfZGlyJzogJ3RoaXJkX3BhcnR5L2dsZXNfY29uZm9ybWFuY2VfdGVzdHMvY29uZm9ybS9HVEZf
RVMvZ2xzbC9HVEYnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2dsZXNfY29uZm9ybWFuY2Vf
dGVzdHNfZ2VuZXJhdG9yX3NjcmlwdCc6ICdnbGVzX2NvbmZvcm1hbmNlX3Rlc3RzL2dlbmVyYXRl
X2dsZXNfY29uZm9ybWFuY2VfdGVzdHMucHknLAorICAgICAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgICAgICAndGFyZ2V0cyc6CisgICAgICAgICAgICAgICAgICAgIFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGFyZ2V0
X25hbWUnOiAnYW5nbGVfZ2xlczJfY29uZm9ybWFuY2VfdGVzdHMnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICd0eXBlJzogJ2V4ZWN1dGFibGUnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdpbmNsdWRlcyc6IFsgJy4uLy4uL2J1aWxkL2NvbW1vbl9kZWZpbmVzLmd5cGknLCBd
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwo
YW5nbGVfcGF0aCkvc3JjL2FuZ2xlLmd5cDpsaWJHTEVTdjInLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvYW5nbGUuZ3lwOmxpYkVHTCcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9nbGVzX2NvbmZvcm1hbmNl
X3Rlc3RzL2NvbmZvcm0vR1RGX0VTL2dsc2wvR1RGL2VzX2N0cy5neXA6ZXNfY3RzX3Rlc3RfZGF0
YScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9nbGVzX2Nv
bmZvcm1hbmNlX3Rlc3RzL2NvbmZvcm0vR1RGX0VTL2dsc2wvR1RGL2VzX2N0cy5neXA6ZXMyX2N0
cycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbmdsZV90ZXN0X3N1cHBvcnQn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3ZhcmlhYmxlcyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2xlczJfY29uZm9ybWFuY2VfdGVzdHNfaW5wdXRf
ZmlsZSc6ICc8KGdsZXNfY29uZm9ybWFuY2VfdGVzdHNfaW5wdXRfZGlyKS9tdXN0cGFzc19lczIw
LnJ1bicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnbGVzMl9jb25mb3JtYW5j
ZV90ZXN0c19nZW5lcmF0ZWRfZmlsZSc6ICc8KGdsZXNfY29uZm9ybWFuY2VfdGVzdHNfb3V0cHV0
X2RpcikvZ2VuZXJhdGVkX2dsZXMyX2NvbmZvcm1hbmNlX3Rlc3RzLmNwcCcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc291cmNl
cyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnZ2xlc19jb25mb3JtYW5jZV90ZXN0cy9nbGVzX2NvbmZvcm1hbmNlX3Rlc3Rz
LmNwcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnbGVzX2NvbmZvcm1hbmNl
X3Rlc3RzL2dsZXNfY29uZm9ybWFuY2VfdGVzdHMuaCcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdnbGVzX2NvbmZvcm1hbmNlX3Rlc3RzL2dsZXNfY29uZm9ybWFuY2VfdGVzdHNf
bWFpbi5jcHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPChnbGVzMl9jb25m
b3JtYW5jZV90ZXN0c19nZW5lcmF0ZWRfZmlsZSknLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnPChhbmdsZV9wYXRoKS9pbmNsdWRlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2dsZXNfY29uZm9ybWFuY2VfdGVzdHMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NPTkZP
Uk1BTkNFX1RFU1RTX1RZUEU9Q09ORk9STUFOQ0VfVEVTVFNfRVMyJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtc3ZzX3NldHRp
bmdzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdWQ0NMQ29tcGlsZXJUb29sJzoKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBNU1ZTIGhh
cyB0cm91YmxlIGNvbXBpbGluZyB0aGlzIGR1ZSB0byB0aGUgb2JqIGZpbGVzIGJlY29taW5nIHRv
byBsYXJnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBZGRpdGlvbmFs
T3B0aW9ucyc6IFsgJy9iaWdvYmonIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnYWN0aW9ucyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnYWN0aW9uX25hbWUnOiAnZ2VuZXJhdGVfZ2xlczJfY29uZm9ybWFuY2VfdGVzdHMn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21lc3NhZ2UnOiAnR2VuZXJh
dGluZyBFUzIgY29uZm9ybWFuY2UgdGVzdHMuLi4nLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ21zdnNfY3lnd2luX3NoZWxsJzogMCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdpbnB1dHMnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8KGdsZXNf
Y29uZm9ybWFuY2VfdGVzdHNfZ2VuZXJhdG9yX3NjcmlwdCknLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICc8KGdsZXMyX2NvbmZvcm1hbmNlX3Rlc3RzX2lucHV0X2Zp
bGUpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnb3V0cHV0cyc6CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJzwoZ2xlczJfY29uZm9ybWFuY2VfdGVzdHNfZ2VuZXJhdGVkX2ZpbGUpJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnYWN0aW9uJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHl0aG9uJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPChnbGVzX2NvbmZvcm1hbmNl
X3Rlc3RzX2dlbmVyYXRvcl9zY3JpcHQpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnPChnbGVzMl9jb25mb3JtYW5jZV90ZXN0c19pbnB1dF9maWxlKScsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwoZ2xlc19jb25mb3JtYW5jZV90
ZXN0c19pbnB1dF9kaXIpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnPChnbGVzMl9jb25mb3JtYW5jZV90ZXN0c19nZW5lcmF0ZWRfZmlsZSknLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAnYW5nbGVfZ2xlczNfY29uZm9ybWFuY2VfdGVzdHMn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ2V4ZWN1dGFibGUnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlcyc6IFsgJy4uLy4uL2J1aWxkL2NvbW1v
bl9kZWZpbmVzLmd5cGknLCBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXBlbmRl
bmNpZXMnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2FuZ2xlLmd5cDpsaWJHTEVTdjInLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvYW5nbGUu
Z3lwOmxpYkVHTCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlyZF9wYXJ0
eS9nbGVzX2NvbmZvcm1hbmNlX3Rlc3RzL2NvbmZvcm0vR1RGX0VTL2dsc2wvR1RGL2VzX2N0cy5n
eXA6ZXNfY3RzX3Rlc3RfZGF0YScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0
aGlyZF9wYXJ0eS9nbGVzX2NvbmZvcm1hbmNlX3Rlc3RzL2NvbmZvcm0vR1RGX0VTL2dsc2wvR1RG
L2VzX2N0cy5neXA6ZXMzX2N0cycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdh
bmdsZV90ZXN0X3N1cHBvcnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhcmlhYmxlcyc6CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2xlczNfY29uZm9y
bWFuY2VfdGVzdHNfaW5wdXRfZmlsZSc6ICc8KGdsZXNfY29uZm9ybWFuY2VfdGVzdHNfaW5wdXRf
ZGlyKS9tdXN0cGFzc19lczMwLnJ1bicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdnbGVzM19jb25mb3JtYW5jZV90ZXN0c19nZW5lcmF0ZWRfZmlsZSc6ICc8KGdsZXNfY29uZm9y
bWFuY2VfdGVzdHNfb3V0cHV0X2RpcikvZ2VuZXJhdGVkX2dsZXMzX2NvbmZvcm1hbmNlX3Rlc3Rz
LmNwcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnc291cmNlcyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2xlc19jb25mb3JtYW5jZV90ZXN0cy9nbGVz
X2NvbmZvcm1hbmNlX3Rlc3RzLmNwcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdnbGVzX2NvbmZvcm1hbmNlX3Rlc3RzL2dsZXNfY29uZm9ybWFuY2VfdGVzdHMuaCcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnbGVzX2NvbmZvcm1hbmNlX3Rlc3RzL2dsZXNf
Y29uZm9ybWFuY2VfdGVzdHNfbWFpbi5jcHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnPChnbGVzM19jb25mb3JtYW5jZV90ZXN0c19nZW5lcmF0ZWRfZmlsZSknLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lu
Y2x1ZGVfZGlycyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9pbmNsdWRlJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2dsZXNfY29uZm9ybWFuY2VfdGVzdHMnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmlu
ZXMnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ0NPTkZPUk1BTkNFX1RFU1RTX1RZUEU9Q09ORk9STUFOQ0VfVEVTVFNfRVMz
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdtc3ZzX3NldHRpbmdzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWQ0NMQ29tcGlsZXJUb29sJzoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIyBNU1ZTIGhhcyB0cm91YmxlIGNvbXBpbGluZyB0aGlzIGR1ZSB0byB0aGUgb2Jq
IGZpbGVzIGJlY29taW5nIHRvbyBsYXJnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdBZGRpdGlvbmFsT3B0aW9ucyc6IFsgJy9iaWdvYmonIF0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9ucyc6CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uX25hbWUnOiAnZ2VuZXJhdGVfZ2xlczNf
Y29uZm9ybWFuY2VfdGVzdHMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J21lc3NhZ2UnOiAnR2VuZXJhdGluZyBFUzMgY29uZm9ybWFuY2UgdGVzdHMuLi4nLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21zdnNfY3lnd2luX3NoZWxsJzogMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnB1dHMnOgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICc8KGdsZXNfY29uZm9ybWFuY2VfdGVzdHNfZ2VuZXJhdG9yX3NjcmlwdCknLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8KGdsZXMzX2NvbmZvcm1h
bmNlX3Rlc3RzX2lucHV0X2ZpbGUpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3V0cHV0cyc6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJzwoZ2xlczNfY29uZm9ybWFuY2VfdGVzdHNfZ2VuZXJhdGVk
X2ZpbGUpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJzoKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAncHl0aG9uJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
PChnbGVzX2NvbmZvcm1hbmNlX3Rlc3RzX2dlbmVyYXRvcl9zY3JpcHQpJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPChnbGVzM19jb25mb3JtYW5jZV90ZXN0c19p
bnB1dF9maWxlKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwo
Z2xlc19jb25mb3JtYW5jZV90ZXN0c19pbnB1dF9kaXIpJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnPChnbGVzM19jb25mb3JtYW5jZV90ZXN0c19nZW5lcmF0ZWRf
ZmlsZSknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
LAorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICAgICB9XSwKKyAgICAgICAgICAgIF0sCisgICAgICAgIH1dLAorICAgIF0sCit9
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMv
QVBJX3Rlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9jb21waWxlcl90ZXN0cy9BUElfdGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0FQSV90ZXN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI2IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE0
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEFQSV90ZXN0
LmNwcDoKKy8vICAgU29tZSB0ZXN0cyBmb3IgdGhlIGNvbXBpbGVyIEFQSS4KKy8vCisKKyNpbmNs
dWRlICJhbmdsZV9nbC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiR0xT
TEFORy9TaGFkZXJMYW5nLmgiCisKK1RFU1QoQVBJVGVzdCwgQ29tcGFyZVNoQnVpbHRJblJlc291
cmNlcykKK3sKKyAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgYV9yZXNvdXJjZXM7CisgICAgbWVtc2V0
KCZhX3Jlc291cmNlcywgODgsIHNpemVvZihhX3Jlc291cmNlcykpOworICAgIFNoSW5pdEJ1aWx0
SW5SZXNvdXJjZXMoJmFfcmVzb3VyY2VzKTsKKworICAgIFNoQnVpbHRJblJlc291cmNlcyBiX3Jl
c291cmNlczsKKyAgICBtZW1zZXQoJmJfcmVzb3VyY2VzLCA3Nywgc2l6ZW9mKGJfcmVzb3VyY2Vz
KSk7CisgICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmYl9yZXNvdXJjZXMpOworCisgICAgRVhQ
RUNUX1RSVUUobWVtY21wKCZhX3Jlc291cmNlcywgJmJfcmVzb3VyY2VzLCBzaXplb2YoYV9yZXNv
dXJjZXMpKSA9PSAwKTsKK30KKwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2NvbXBpbGVyX3Rlc3RzL0NvbGxlY3RWYXJpYWJsZXNfdGVzdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0NvbGxl
Y3RWYXJpYWJsZXNfdGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0NvbGxlY3RWYXJpYWJsZXNfdGVzdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NDAgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIw
MTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gQ29sbGVj
dFZhcmlhYmxlc190ZXN0LmNwcDoKKy8vICAgU29tZSB0ZXN0cyBmb3Igc2hhZGVyIGluc3BlY3Rp
b24KKy8vCisKKyNpbmNsdWRlIDxtZW1vcnk+CisKKyNpbmNsdWRlICJhbmdsZV9nbC5oIgorI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCisj
aW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yR0xTTC5oIgorCisjZGVmaW5l
IEVYUEVDVF9HTEVOVU1fRVEoZXhwZWN0ZWQsIGFjdHVhbCkgXAorICAgIEVYUEVDVF9FUShzdGF0
aWNfY2FzdDxHTGVudW0+KGV4cGVjdGVkKSwgc3RhdGljX2Nhc3Q8R0xlbnVtPihhY3R1YWwpKQor
CitjbGFzcyBDb2xsZWN0VmFyaWFibGVzVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0Cit7Cisg
IHB1YmxpYzoKKyAgICBDb2xsZWN0VmFyaWFibGVzVGVzdChHTGVudW0gc2hhZGVyVHlwZSkgOiBt
U2hhZGVyVHlwZShzaGFkZXJUeXBlKSB7fQorCisgIHByb3RlY3RlZDoKKyAgICB2b2lkIFNldFVw
KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFNoQnVpbHRJblJlc291cmNlcyByZXNvdXJjZXM7
CisgICAgICAgIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoJnJlc291cmNlcyk7CisgICAgICAgIHJl
c291cmNlcy5NYXhEcmF3QnVmZmVycyA9IDg7CisKKyAgICAgICAgaW5pdFRyYW5zbGF0b3IocmVz
b3VyY2VzKTsKKyAgICB9CisKKyAgICB2b2lkIGluaXRUcmFuc2xhdG9yKGNvbnN0IFNoQnVpbHRJ
blJlc291cmNlcyAmcmVzb3VyY2VzKQorICAgIHsKKyAgICAgICAgbVRyYW5zbGF0b3IucmVzZXQo
CisgICAgICAgICAgICBuZXcgVHJhbnNsYXRvckdMU0wobVNoYWRlclR5cGUsIFNIX0dMRVMzX1NQ
RUMsIFNIX0dMU0xfQ09NUEFUSUJJTElUWV9PVVRQVVQpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUo
bVRyYW5zbGF0b3ItPkluaXQocmVzb3VyY2VzKSk7CisgICAgfQorCisgICAgLy8gRm9yIHVzZSBp
biB0aGUgZ2xfRGVwdGhSYW5nZSB0ZXN0cy4KKyAgICB2b2lkIHZhbGlkYXRlRGVwdGhSYW5nZVNo
YWRlcihjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nKQorICAgIHsKKyAgICAgICAgY29u
c3QgY2hhciAqc2hhZGVyU3RyaW5nc1tdID0geyBzaGFkZXJTdHJpbmcuY19zdHIoKSB9OworICAg
ICAgICBBU1NFUlRfVFJVRShtVHJhbnNsYXRvci0+Y29tcGlsZShzaGFkZXJTdHJpbmdzLCAxLCBT
SF9WQVJJQUJMRVMpKTsKKworICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6VW5pZm9ybT4g
JnVuaWZvcm1zID0gbVRyYW5zbGF0b3ItPmdldFVuaWZvcm1zKCk7CisgICAgICAgIEFTU0VSVF9F
USgxdSwgdW5pZm9ybXMuc2l6ZSgpKTsKKworICAgICAgICBjb25zdCBzaDo6VW5pZm9ybSAmdW5p
Zm9ybSA9IHVuaWZvcm1zWzBdOworICAgICAgICBFWFBFQ1RfRVEoImdsX0RlcHRoUmFuZ2UiLCB1
bmlmb3JtLm5hbWUpOworICAgICAgICBBU1NFUlRfVFJVRSh1bmlmb3JtLmlzU3RydWN0KCkpOwor
ICAgICAgICBBU1NFUlRfRVEoM3UsIHVuaWZvcm0uZmllbGRzLnNpemUoKSk7CisKKyAgICAgICAg
Ym9vbCBmb3VuZE5lYXIgPSBmYWxzZTsKKyAgICAgICAgYm9vbCBmb3VuZEZhciA9IGZhbHNlOwor
ICAgICAgICBib29sIGZvdW5kRGlmZiA9IGZhbHNlOworCisgICAgICAgIGZvciAoY29uc3QgYXV0
byAmZmllbGQgOiB1bmlmb3JtLmZpZWxkcykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGZp
ZWxkLm5hbWUgPT0gIm5lYXIiKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEVYUEVD
VF9GQUxTRShmb3VuZE5lYXIpOworICAgICAgICAgICAgICAgIGZvdW5kTmVhciA9IHRydWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChmaWVsZC5uYW1lID09ICJmYXIiKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShmb3VuZEZhcik7Cisg
ICAgICAgICAgICAgICAgZm91bmRGYXIgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEFTU0VSVF9FUSgiZGlmZiIs
IGZpZWxkLm5hbWUpOworICAgICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShmb3VuZERpZmYpOwor
ICAgICAgICAgICAgICAgIGZvdW5kRGlmZiA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIEVYUEVDVF9FUSgwdSwgZmllbGQuYXJyYXlTaXplKTsKKyAgICAgICAgICAgIEVYUEVD
VF9GQUxTRShmaWVsZC5pc1N0cnVjdCgpKTsKKyAgICAgICAgICAgIEVYUEVDVF9HTEVOVU1fRVEo
R0xfSElHSF9GTE9BVCwgZmllbGQucHJlY2lzaW9uKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVF
KGZpZWxkLnN0YXRpY1VzZSk7CisgICAgICAgICAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZMT0FU
LCBmaWVsZC50eXBlKTsKKyAgICAgICAgfQorCisgICAgICAgIEVYUEVDVF9UUlVFKGZvdW5kTmVh
ciAmJiBmb3VuZEZhciAmJiBmb3VuZERpZmYpOworICAgIH0KKworICAgIC8vIEZvciB1c2UgaW4g
dGVzdHMgZm9yIG91dHB1dCB2YXJpYmxlcy4KKyAgICB2b2lkIHZhbGlkYXRlT3V0cHV0VmFyaWFi
bGVGb3JTaGFkZXIoY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZhckluZGV4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp2YXJOYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaDo6T3V0
cHV0VmFyaWFibGUgKipvdXRSZXN1bHQpCisgICAgeworICAgICAgICBjb25zdCBjaGFyICpzaGFk
ZXJTdHJpbmdzW10gPSB7c2hhZGVyU3RyaW5nLmNfc3RyKCl9OworICAgICAgICBBU1NFUlRfVFJV
RShtVHJhbnNsYXRvci0+Y29tcGlsZShzaGFkZXJTdHJpbmdzLCAxLCBTSF9WQVJJQUJMRVMpKQor
ICAgICAgICAgICAgPDwgbVRyYW5zbGF0b3ItPmdldEluZm9TaW5rKCkuaW5mby5zdHIoKTsKKwor
ICAgICAgICBjb25zdCBhdXRvICZvdXRwdXRWYXJpYWJsZXMgPSBtVHJhbnNsYXRvci0+Z2V0T3V0
cHV0VmFyaWFibGVzKCk7CisgICAgICAgIEFTU0VSVF9MVCh2YXJJbmRleCwgb3V0cHV0VmFyaWFi
bGVzLnNpemUoKSk7CisgICAgICAgIGNvbnN0IHNoOjpPdXRwdXRWYXJpYWJsZSAmb3V0cHV0VmFy
aWFibGUgPSBvdXRwdXRWYXJpYWJsZXNbdmFySW5kZXhdOworICAgICAgICBFWFBFQ1RfRVEoLTEs
IG91dHB1dFZhcmlhYmxlLmxvY2F0aW9uKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob3V0cHV0VmFy
aWFibGUuc3RhdGljVXNlKTsKKyAgICAgICAgRVhQRUNUX0VRKHZhck5hbWUsIG91dHB1dFZhcmlh
YmxlLm5hbWUpOworICAgICAgICAqb3V0UmVzdWx0ID0gJm91dHB1dFZhcmlhYmxlOworICAgIH0K
KworICAgIHZvaWQgY29tcGlsZShjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nKQorICAg
IHsKKyAgICAgICAgY29uc3QgY2hhciAqc2hhZGVyU3RyaW5nc1tdID0ge3NoYWRlclN0cmluZy5j
X3N0cigpfTsKKyAgICAgICAgQVNTRVJUX1RSVUUobVRyYW5zbGF0b3ItPmNvbXBpbGUoc2hhZGVy
U3RyaW5ncywgMSwgU0hfVkFSSUFCTEVTKSk7CisgICAgfQorCisgICAgR0xlbnVtIG1TaGFkZXJU
eXBlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc2xhdG9yR0xTTD4gbVRyYW5zbGF0b3I7Cit9
OworCitjbGFzcyBDb2xsZWN0VmVydGV4VmFyaWFibGVzVGVzdCA6IHB1YmxpYyBDb2xsZWN0VmFy
aWFibGVzVGVzdAoreworICBwdWJsaWM6CisgICAgQ29sbGVjdFZlcnRleFZhcmlhYmxlc1Rlc3Qo
KSA6IENvbGxlY3RWYXJpYWJsZXNUZXN0KEdMX1ZFUlRFWF9TSEFERVIpIHt9Cit9OworCitjbGFz
cyBDb2xsZWN0RnJhZ21lbnRWYXJpYWJsZXNUZXN0IDogcHVibGljIENvbGxlY3RWYXJpYWJsZXNU
ZXN0Cit7CisgIHB1YmxpYzoKKyAgICAgIENvbGxlY3RGcmFnbWVudFZhcmlhYmxlc1Rlc3QoKSA6
IENvbGxlY3RWYXJpYWJsZXNUZXN0KEdMX0ZSQUdNRU5UX1NIQURFUikge30KK307CisKK1RFU1Rf
RihDb2xsZWN0RnJhZ21lbnRWYXJpYWJsZXNUZXN0LCBTaW1wbGVPdXRwdXRWYXIpCit7CisgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAg
ZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0
IHZlYzQgb3V0X2ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAg
ICAgIiAgIG91dF9mcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XG4iCisgICAgICAgICJ9XG4iOworCisg
ICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworCisgICAgY29uc3QgYXV0byAmb3V0cHV0VmFyaWFi
bGVzID0gbVRyYW5zbGF0b3ItPmdldE91dHB1dFZhcmlhYmxlcygpOworICAgIEFTU0VSVF9FUSgx
dSwgb3V0cHV0VmFyaWFibGVzLnNpemUoKSk7CisKKyAgICBjb25zdCBzaDo6T3V0cHV0VmFyaWFi
bGUgJm91dHB1dFZhcmlhYmxlID0gb3V0cHV0VmFyaWFibGVzWzBdOworCisgICAgRVhQRUNUX0VR
KDB1LCBvdXRwdXRWYXJpYWJsZS5hcnJheVNpemUpOworICAgIEVYUEVDVF9FUSgtMSwgb3V0cHV0
VmFyaWFibGUubG9jYXRpb24pOworICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfTUVESVVNX0ZMT0FU
LCBvdXRwdXRWYXJpYWJsZS5wcmVjaXNpb24pOworICAgIEVYUEVDVF9UUlVFKG91dHB1dFZhcmlh
YmxlLnN0YXRpY1VzZSk7CisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GTE9BVF9WRUM0LCBvdXRw
dXRWYXJpYWJsZS50eXBlKTsKKyAgICBFWFBFQ1RfRVEoIm91dF9mcmFnQ29sb3IiLCBvdXRwdXRW
YXJpYWJsZS5uYW1lKTsKK30KKworVEVTVF9GKENvbGxlY3RGcmFnbWVudFZhcmlhYmxlc1Rlc3Qs
IExvY2F0aW9uT3V0cHV0VmFyKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJp
bmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDtcbiIKKyAgICAgICAgImxheW91dChsb2NhdGlvbj01KSBvdXQgdmVjNCBvdXRf
ZnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgb3V0
X2ZyYWdDb2xvciA9IHZlYzQoMS4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBjb21waWxl
KHNoYWRlclN0cmluZyk7CisKKyAgICBjb25zdCBhdXRvICZvdXRwdXRWYXJpYWJsZXMgPSBtVHJh
bnNsYXRvci0+Z2V0T3V0cHV0VmFyaWFibGVzKCk7CisgICAgQVNTRVJUX0VRKDF1LCBvdXRwdXRW
YXJpYWJsZXMuc2l6ZSgpKTsKKworICAgIGNvbnN0IHNoOjpPdXRwdXRWYXJpYWJsZSAmb3V0cHV0
VmFyaWFibGUgPSBvdXRwdXRWYXJpYWJsZXNbMF07CisKKyAgICBFWFBFQ1RfRVEoMHUsIG91dHB1
dFZhcmlhYmxlLmFycmF5U2l6ZSk7CisgICAgRVhQRUNUX0VRKDUsIG91dHB1dFZhcmlhYmxlLmxv
Y2F0aW9uKTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX01FRElVTV9GTE9BVCwgb3V0cHV0VmFy
aWFibGUucHJlY2lzaW9uKTsKKyAgICBFWFBFQ1RfVFJVRShvdXRwdXRWYXJpYWJsZS5zdGF0aWNV
c2UpOworICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRkxPQVRfVkVDNCwgb3V0cHV0VmFyaWFibGUu
dHlwZSk7CisgICAgRVhQRUNUX0VRKCJvdXRfZnJhZ0NvbG9yIiwgb3V0cHV0VmFyaWFibGUubmFt
ZSk7Cit9CisKK1RFU1RfRihDb2xsZWN0VmVydGV4VmFyaWFibGVzVGVzdCwgTG9jYXRpb25BdHRy
aWJ1dGUpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAg
ICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgImxheW91dChsb2NhdGlvbj01KSBpbiB2ZWM0
IGluX1Bvc2l0aW9uO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAg
Z2xfUG9zaXRpb24gPSBpbl9Qb3NpdGlvbjtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBjb21w
aWxlKHNoYWRlclN0cmluZyk7CisKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6QXR0cmlidXRl
PiAmYXR0cmlidXRlcyA9IG1UcmFuc2xhdG9yLT5nZXRBdHRyaWJ1dGVzKCk7CisgICAgQVNTRVJU
X0VRKDF1LCBhdHRyaWJ1dGVzLnNpemUoKSk7CisKKyAgICBjb25zdCBzaDo6QXR0cmlidXRlICZh
dHRyaWJ1dGUgPSBhdHRyaWJ1dGVzWzBdOworCisgICAgRVhQRUNUX0VRKDB1LCBhdHRyaWJ1dGUu
YXJyYXlTaXplKTsKKyAgICBFWFBFQ1RfRVEoNSwgYXR0cmlidXRlLmxvY2F0aW9uKTsKKyAgICBF
WFBFQ1RfR0xFTlVNX0VRKEdMX0hJR0hfRkxPQVQsIGF0dHJpYnV0ZS5wcmVjaXNpb24pOworICAg
IEVYUEVDVF9UUlVFKGF0dHJpYnV0ZS5zdGF0aWNVc2UpOworICAgIEVYUEVDVF9HTEVOVU1fRVEo
R0xfRkxPQVRfVkVDNCwgYXR0cmlidXRlLnR5cGUpOworICAgIEVYUEVDVF9FUSgiaW5fUG9zaXRp
b24iLCBhdHRyaWJ1dGUubmFtZSk7Cit9CisKK1RFU1RfRihDb2xsZWN0VmVydGV4VmFyaWFibGVz
VGVzdCwgU2ltcGxlSW50ZXJmYWNlQmxvY2spCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNo
YWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInVuaWZv
cm0gYiB7XG4iCisgICAgICAgICIgIGZsb2F0IGY7XG4iCisgICAgICAgICJ9OyIKKyAgICAgICAg
InZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGdsX1Bvc2l0aW9uID0gdmVjNChmLCAwLjAs
IDAuMCwgMS4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBjb21waWxlKHNoYWRlclN0cmlu
Zyk7CisKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6SW50ZXJmYWNlQmxvY2s+ICZpbnRlcmZh
Y2VCbG9ja3MgPSBtVHJhbnNsYXRvci0+Z2V0SW50ZXJmYWNlQmxvY2tzKCk7CisgICAgQVNTRVJU
X0VRKDF1LCBpbnRlcmZhY2VCbG9ja3Muc2l6ZSgpKTsKKworICAgIGNvbnN0IHNoOjpJbnRlcmZh
Y2VCbG9jayAmaW50ZXJmYWNlQmxvY2sgPSBpbnRlcmZhY2VCbG9ja3NbMF07CisKKyAgICBFWFBF
Q1RfRVEoMHUsIGludGVyZmFjZUJsb2NrLmFycmF5U2l6ZSk7CisgICAgRVhQRUNUX0ZBTFNFKGlu
dGVyZmFjZUJsb2NrLmlzUm93TWFqb3JMYXlvdXQpOworICAgIEVYUEVDVF9FUShzaDo6QkxPQ0tM
QVlPVVRfU0hBUkVELCBpbnRlcmZhY2VCbG9jay5sYXlvdXQpOworICAgIEVYUEVDVF9FUSgiYiIs
IGludGVyZmFjZUJsb2NrLm5hbWUpOworICAgIEVYUEVDVF9UUlVFKGludGVyZmFjZUJsb2NrLnN0
YXRpY1VzZSk7CisKKyAgICBBU1NFUlRfRVEoMXUsIGludGVyZmFjZUJsb2NrLmZpZWxkcy5zaXpl
KCkpOworCisgICAgY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrRmllbGQgJmZpZWxkID0gaW50ZXJm
YWNlQmxvY2suZmllbGRzWzBdOworCisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9ISUdIX0ZMT0FU
LCBmaWVsZC5wcmVjaXNpb24pOworICAgIEVYUEVDVF9UUlVFKGZpZWxkLnN0YXRpY1VzZSk7Cisg
ICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GTE9BVCwgZmllbGQudHlwZSk7CisgICAgRVhQRUNUX0VR
KCJmIiwgZmllbGQubmFtZSk7CisgICAgRVhQRUNUX0ZBTFNFKGZpZWxkLmlzUm93TWFqb3JMYXlv
dXQpOworICAgIEVYUEVDVF9UUlVFKGZpZWxkLmZpZWxkcy5lbXB0eSgpKTsKK30KKworVEVTVF9G
KENvbGxlY3RWZXJ0ZXhWYXJpYWJsZXNUZXN0LCBTaW1wbGVJbnN0YW5jZWRJbnRlcmZhY2VCbG9j
aykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2
ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAidW5pZm9ybSBiIHtcbiIKKyAgICAgICAgIiAgZmxv
YXQgZjtcbiIKKyAgICAgICAgIn0gYmxvY2tJbnN0YW5jZTsiCisgICAgICAgICJ2b2lkIG1haW4o
KSB7XG4iCisgICAgICAgICIgICBnbF9Qb3NpdGlvbiA9IHZlYzQoYmxvY2tJbnN0YW5jZS5mLCAw
LjAsIDAuMCwgMS4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBjb21waWxlKHNoYWRlclN0
cmluZyk7CisKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6SW50ZXJmYWNlQmxvY2s+ICZpbnRl
cmZhY2VCbG9ja3MgPSBtVHJhbnNsYXRvci0+Z2V0SW50ZXJmYWNlQmxvY2tzKCk7CisgICAgQVNT
RVJUX0VRKDF1LCBpbnRlcmZhY2VCbG9ja3Muc2l6ZSgpKTsKKworICAgIGNvbnN0IHNoOjpJbnRl
cmZhY2VCbG9jayAmaW50ZXJmYWNlQmxvY2sgPSBpbnRlcmZhY2VCbG9ja3NbMF07CisKKyAgICBF
WFBFQ1RfRVEoMHUsIGludGVyZmFjZUJsb2NrLmFycmF5U2l6ZSk7CisgICAgRVhQRUNUX0ZBTFNF
KGludGVyZmFjZUJsb2NrLmlzUm93TWFqb3JMYXlvdXQpOworICAgIEVYUEVDVF9FUShzaDo6QkxP
Q0tMQVlPVVRfU0hBUkVELCBpbnRlcmZhY2VCbG9jay5sYXlvdXQpOworICAgIEVYUEVDVF9FUSgi
YiIsIGludGVyZmFjZUJsb2NrLm5hbWUpOworICAgIEVYUEVDVF9FUSgiYmxvY2tJbnN0YW5jZSIs
IGludGVyZmFjZUJsb2NrLmluc3RhbmNlTmFtZSk7CisgICAgRVhQRUNUX1RSVUUoaW50ZXJmYWNl
QmxvY2suc3RhdGljVXNlKTsKKworICAgIEFTU0VSVF9FUSgxdSwgaW50ZXJmYWNlQmxvY2suZmll
bGRzLnNpemUoKSk7CisKKyAgICBjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2tGaWVsZCAmZmllbGQg
PSBpbnRlcmZhY2VCbG9jay5maWVsZHNbMF07CisKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0hJ
R0hfRkxPQVQsIGZpZWxkLnByZWNpc2lvbik7CisgICAgRVhQRUNUX1RSVUUoZmllbGQuc3RhdGlj
VXNlKTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZMT0FULCBmaWVsZC50eXBlKTsKKyAgICBF
WFBFQ1RfRVEoImYiLCBmaWVsZC5uYW1lKTsKKyAgICBFWFBFQ1RfRkFMU0UoZmllbGQuaXNSb3dN
YWpvckxheW91dCk7CisgICAgRVhQRUNUX1RSVUUoZmllbGQuZmllbGRzLmVtcHR5KCkpOworfQor
CitURVNUX0YoQ29sbGVjdFZlcnRleFZhcmlhYmxlc1Rlc3QsIFN0cnVjdEludGVyZmFjZUJsb2Nr
KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3Zl
cnNpb24gMzAwIGVzXG4iCisgICAgICAgICJzdHJ1Y3Qgc3QgeyBmbG9hdCBmOyB9OyIKKyAgICAg
ICAgInVuaWZvcm0gYiB7XG4iCisgICAgICAgICIgIHN0IHM7XG4iCisgICAgICAgICJ9OyIKKyAg
ICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGdsX1Bvc2l0aW9uID0gdmVjNChz
LmYsIDAuMCwgMC4wLCAxLjApO1xuIgorICAgICAgICAifVxuIjsKKworICAgIGNvbXBpbGUoc2hh
ZGVyU3RyaW5nKTsKKworICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpJbnRlcmZhY2VCbG9jaz4g
JmludGVyZmFjZUJsb2NrcyA9IG1UcmFuc2xhdG9yLT5nZXRJbnRlcmZhY2VCbG9ja3MoKTsKKyAg
ICBBU1NFUlRfRVEoMXUsIGludGVyZmFjZUJsb2Nrcy5zaXplKCkpOworCisgICAgY29uc3Qgc2g6
OkludGVyZmFjZUJsb2NrICZpbnRlcmZhY2VCbG9jayA9IGludGVyZmFjZUJsb2Nrc1swXTsKKwor
ICAgIEVYUEVDVF9FUSgwdSwgaW50ZXJmYWNlQmxvY2suYXJyYXlTaXplKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoaW50ZXJmYWNlQmxvY2suaXNSb3dNYWpvckxheW91dCk7CisgICAgRVhQRUNUX0VRKHNo
OjpCTE9DS0xBWU9VVF9TSEFSRUQsIGludGVyZmFjZUJsb2NrLmxheW91dCk7CisgICAgRVhQRUNU
X0VRKCJiIiwgaW50ZXJmYWNlQmxvY2submFtZSk7CisgICAgRVhQRUNUX1RSVUUoaW50ZXJmYWNl
QmxvY2suc3RhdGljVXNlKTsKKworICAgIEFTU0VSVF9FUSgxdSwgaW50ZXJmYWNlQmxvY2suZmll
bGRzLnNpemUoKSk7CisKKyAgICBjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2tGaWVsZCAmZmllbGQg
PSBpbnRlcmZhY2VCbG9jay5maWVsZHNbMF07CisKKyAgICBFWFBFQ1RfVFJVRShmaWVsZC5pc1N0
cnVjdCgpKTsKKyAgICBFWFBFQ1RfVFJVRShmaWVsZC5zdGF0aWNVc2UpOworICAgIEVYUEVDVF9F
USgicyIsIGZpZWxkLm5hbWUpOworICAgIEVYUEVDVF9GQUxTRShmaWVsZC5pc1Jvd01ham9yTGF5
b3V0KTsKKworICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmbWVtYmVyID0gZmllbGQuZmll
bGRzWzBdOworCisgICAgLy8gTk9URTogd2UgZG9uJ3QgY3VycmVudGx5IG1hcmsgc3RydWN0IG1l
bWJlcnMgYXMgc3RhdGljYWxseSB1c2VkIG9yIG5vdAorICAgIEVYUEVDVF9GQUxTRShtZW1iZXIu
aXNTdHJ1Y3QoKSk7CisgICAgRVhQRUNUX0VRKCJmIiwgbWVtYmVyLm5hbWUpOworICAgIEVYUEVD
VF9HTEVOVU1fRVEoR0xfRkxPQVQsIG1lbWJlci50eXBlKTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VR
KEdMX0hJR0hfRkxPQVQsIG1lbWJlci5wcmVjaXNpb24pOworfQorCitURVNUX0YoQ29sbGVjdFZl
cnRleFZhcmlhYmxlc1Rlc3QsIFN0cnVjdEluc3RhbmNlZEludGVyZmFjZUJsb2NrKQoreworICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAw
IGVzXG4iCisgICAgICAgICJzdHJ1Y3Qgc3QgeyBmbG9hdCBmOyB9OyIKKyAgICAgICAgInVuaWZv
cm0gYiB7XG4iCisgICAgICAgICIgIHN0IHM7XG4iCisgICAgICAgICJ9IGluc3RhbmNlTmFtZTsi
CisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBnbF9Qb3NpdGlvbiA9IHZl
YzQoaW5zdGFuY2VOYW1lLnMuZiwgMC4wLCAwLjAsIDEuMCk7XG4iCisgICAgICAgICJ9XG4iOwor
CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6
OkludGVyZmFjZUJsb2NrPiAmaW50ZXJmYWNlQmxvY2tzID0gbVRyYW5zbGF0b3ItPmdldEludGVy
ZmFjZUJsb2NrcygpOworICAgIEFTU0VSVF9FUSgxdSwgaW50ZXJmYWNlQmxvY2tzLnNpemUoKSk7
CisKKyAgICBjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2sgJmludGVyZmFjZUJsb2NrID0gaW50ZXJm
YWNlQmxvY2tzWzBdOworCisgICAgRVhQRUNUX0VRKDB1LCBpbnRlcmZhY2VCbG9jay5hcnJheVNp
emUpOworICAgIEVYUEVDVF9GQUxTRShpbnRlcmZhY2VCbG9jay5pc1Jvd01ham9yTGF5b3V0KTsK
KyAgICBFWFBFQ1RfRVEoc2g6OkJMT0NLTEFZT1VUX1NIQVJFRCwgaW50ZXJmYWNlQmxvY2subGF5
b3V0KTsKKyAgICBFWFBFQ1RfRVEoImIiLCBpbnRlcmZhY2VCbG9jay5uYW1lKTsKKyAgICBFWFBF
Q1RfRVEoImluc3RhbmNlTmFtZSIsIGludGVyZmFjZUJsb2NrLmluc3RhbmNlTmFtZSk7CisgICAg
RVhQRUNUX1RSVUUoaW50ZXJmYWNlQmxvY2suc3RhdGljVXNlKTsKKworICAgIEFTU0VSVF9FUSgx
dSwgaW50ZXJmYWNlQmxvY2suZmllbGRzLnNpemUoKSk7CisKKyAgICBjb25zdCBzaDo6SW50ZXJm
YWNlQmxvY2tGaWVsZCAmZmllbGQgPSBpbnRlcmZhY2VCbG9jay5maWVsZHNbMF07CisKKyAgICBF
WFBFQ1RfVFJVRShmaWVsZC5pc1N0cnVjdCgpKTsKKyAgICBFWFBFQ1RfVFJVRShmaWVsZC5zdGF0
aWNVc2UpOworICAgIEVYUEVDVF9FUSgicyIsIGZpZWxkLm5hbWUpOworICAgIEVYUEVDVF9GQUxT
RShmaWVsZC5pc1Jvd01ham9yTGF5b3V0KTsKKworICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJs
ZSAmbWVtYmVyID0gZmllbGQuZmllbGRzWzBdOworCisgICAgLy8gTk9URTogd2UgZG9uJ3QgY3Vy
cmVudGx5IG1hcmsgc3RydWN0IG1lbWJlcnMgYXMgc3RhdGljYWxseSB1c2VkIG9yIG5vdAorICAg
IEVYUEVDVF9GQUxTRShtZW1iZXIuaXNTdHJ1Y3QoKSk7CisgICAgRVhQRUNUX0VRKCJmIiwgbWVt
YmVyLm5hbWUpOworICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRkxPQVQsIG1lbWJlci50eXBlKTsK
KyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0hJR0hfRkxPQVQsIG1lbWJlci5wcmVjaXNpb24pOwor
fQorCitURVNUX0YoQ29sbGVjdFZlcnRleFZhcmlhYmxlc1Rlc3QsIE5lc3RlZFN0cnVjdFJvd01h
am9ySW50ZXJmYWNlQmxvY2spCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmlu
ZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInN0cnVjdCBzdCB7IG1h
dDIgbTsgfTsiCisgICAgICAgICJsYXlvdXQocm93X21ham9yKSB1bmlmb3JtIGIge1xuIgorICAg
ICAgICAiICBzdCBzO1xuIgorICAgICAgICAifTsiCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4i
CisgICAgICAgICIgICBnbF9Qb3NpdGlvbiA9IHZlYzQocy5tKTtcbiIKKyAgICAgICAgIn1cbiI7
CisKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisKKyAgICBjb25zdCBzdGQ6OnZlY3Rvcjxz
aDo6SW50ZXJmYWNlQmxvY2s+ICZpbnRlcmZhY2VCbG9ja3MgPSBtVHJhbnNsYXRvci0+Z2V0SW50
ZXJmYWNlQmxvY2tzKCk7CisgICAgQVNTRVJUX0VRKDF1LCBpbnRlcmZhY2VCbG9ja3Muc2l6ZSgp
KTsKKworICAgIGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9jayAmaW50ZXJmYWNlQmxvY2sgPSBpbnRl
cmZhY2VCbG9ja3NbMF07CisKKyAgICBFWFBFQ1RfRVEoMHUsIGludGVyZmFjZUJsb2NrLmFycmF5
U2l6ZSk7CisgICAgRVhQRUNUX1RSVUUoaW50ZXJmYWNlQmxvY2suaXNSb3dNYWpvckxheW91dCk7
CisgICAgRVhQRUNUX0VRKHNoOjpCTE9DS0xBWU9VVF9TSEFSRUQsIGludGVyZmFjZUJsb2NrLmxh
eW91dCk7CisgICAgRVhQRUNUX0VRKCJiIiwgaW50ZXJmYWNlQmxvY2submFtZSk7CisgICAgRVhQ
RUNUX1RSVUUoaW50ZXJmYWNlQmxvY2suc3RhdGljVXNlKTsKKworICAgIEFTU0VSVF9FUSgxdSwg
aW50ZXJmYWNlQmxvY2suZmllbGRzLnNpemUoKSk7CisKKyAgICBjb25zdCBzaDo6SW50ZXJmYWNl
QmxvY2tGaWVsZCAmZmllbGQgPSBpbnRlcmZhY2VCbG9jay5maWVsZHNbMF07CisKKyAgICBFWFBF
Q1RfVFJVRShmaWVsZC5pc1N0cnVjdCgpKTsKKyAgICBFWFBFQ1RfVFJVRShmaWVsZC5zdGF0aWNV
c2UpOworICAgIEVYUEVDVF9FUSgicyIsIGZpZWxkLm5hbWUpOworICAgIEVYUEVDVF9UUlVFKGZp
ZWxkLmlzUm93TWFqb3JMYXlvdXQpOworCisgICAgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZt
ZW1iZXIgPSBmaWVsZC5maWVsZHNbMF07CisKKyAgICAvLyBOT1RFOiB3ZSBkb24ndCBjdXJyZW50
bHkgbWFyayBzdHJ1Y3QgbWVtYmVycyBhcyBzdGF0aWNhbGx5IHVzZWQgb3Igbm90CisgICAgRVhQ
RUNUX0ZBTFNFKG1lbWJlci5pc1N0cnVjdCgpKTsKKyAgICBFWFBFQ1RfRVEoIm0iLCBtZW1iZXIu
bmFtZSk7CisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GTE9BVF9NQVQyLCBtZW1iZXIudHlwZSk7
CisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9ISUdIX0ZMT0FULCBtZW1iZXIucHJlY2lzaW9uKTsK
K30KKworVEVTVF9GKENvbGxlY3RWZXJ0ZXhWYXJpYWJsZXNUZXN0LCBWYXJ5aW5nSW50ZXJwb2xh
dGlvbikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAg
IiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
CisgICAgICAgICJjZW50cm9pZCBvdXQgZmxvYXQgdmFyeTtcbiIKKyAgICAgICAgInZvaWQgbWFp
bigpIHtcbiIKKyAgICAgICAgIiAgIGdsX1Bvc2l0aW9uID0gdmVjNCgxLjApO1xuIgorICAgICAg
ICAiICAgdmFyeSA9IDEuMDtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBjb21waWxlKHNoYWRl
clN0cmluZyk7CisKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6VmFyeWluZz4gJnZhcnlpbmdz
ID0gbVRyYW5zbGF0b3ItPmdldFZhcnlpbmdzKCk7CisgICAgQVNTRVJUX0VRKDJ1LCB2YXJ5aW5n
cy5zaXplKCkpOworCisgICAgY29uc3Qgc2g6OlZhcnlpbmcgKnZhcnlpbmcgPSAmdmFyeWluZ3Nb
MF07CisKKyAgICBpZiAodmFyeWluZy0+bmFtZSA9PSAiZ2xfUG9zaXRpb24iKQorICAgIHsKKyAg
ICAgICAgdmFyeWluZyA9ICZ2YXJ5aW5nc1sxXTsKKyAgICB9CisKKyAgICBFWFBFQ1RfRVEoMHUs
IHZhcnlpbmctPmFycmF5U2l6ZSk7CisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9NRURJVU1fRkxP
QVQsIHZhcnlpbmctPnByZWNpc2lvbik7CisgICAgRVhQRUNUX1RSVUUodmFyeWluZy0+c3RhdGlj
VXNlKTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZMT0FULCB2YXJ5aW5nLT50eXBlKTsKKyAg
ICBFWFBFQ1RfRVEoInZhcnkiLCB2YXJ5aW5nLT5uYW1lKTsKKyAgICBFWFBFQ1RfRVEoc2g6OklO
VEVSUE9MQVRJT05fQ0VOVFJPSUQsIHZhcnlpbmctPmludGVycG9sYXRpb24pOworfQorCisvLyBU
ZXN0IGZvciBidWlsdGluIHVuaWZvcm0gImdsX0RlcHRoUmFuZ2UiIChWZXJ0ZXggc2hhZGVyKQor
VEVTVF9GKENvbGxlY3RWZXJ0ZXhWYXJpYWJsZXNUZXN0LCBEZXB0aFJhbmdlKQoreworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiYXR0cmlidXRlIHZlYzQg
cG9zaXRpb247XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBnbF9Q
b3NpdGlvbiA9IHBvc2l0aW9uICsgdmVjNChnbF9EZXB0aFJhbmdlLm5lYXIsIGdsX0RlcHRoUmFu
Z2UuZmFyLCBnbF9EZXB0aFJhbmdlLmRpZmYsIDEuMCk7XG4iCisgICAgICAgICJ9XG4iOworCisg
ICAgdmFsaWRhdGVEZXB0aFJhbmdlU2hhZGVyKHNoYWRlclN0cmluZyk7Cit9CisKKy8vIFRlc3Qg
Zm9yIGJ1aWx0aW4gdW5pZm9ybSAiZ2xfRGVwdGhSYW5nZSIgKEZyYWdtZW50IHNoYWRlcikKK1RF
U1RfRihDb2xsZWN0RnJhZ21lbnRWYXJpYWJsZXNUZXN0LCBEZXB0aFJhbmdlKQoreworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBnbF9G
cmFnQ29sb3IgPSB2ZWM0KGdsX0RlcHRoUmFuZ2UubmVhciwgZ2xfRGVwdGhSYW5nZS5mYXIsIGds
X0RlcHRoUmFuZ2UuZGlmZiwgMS4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICB2YWxpZGF0
ZURlcHRoUmFuZ2VTaGFkZXIoc2hhZGVyU3RyaW5nKTsKK30KKworLy8gVGVzdCB0aGF0IGdsX0Zy
YWdDb2xvciBidWlsdC1pbiB1c2FnZSBpbiBFU1NMMSBmcmFnbWVudCBzaGFkZXIgaXMgcmVmbGVj
dGVkIGluIHRoZSBvdXRwdXQKKy8vIHZhcmlhYmxlcyBsaXN0LgorVEVTVF9GKENvbGxlY3RGcmFn
bWVudFZhcmlhYmxlc1Rlc3QsIE91dHB1dFZhckVTU0wxRnJhZ0NvbG9yKQoreworICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZmcmFnQ29sb3JTaGFkZXIgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBnbF9G
cmFnQ29sb3IgPSB2ZWM0KDEuMCk7XG4iCisgICAgICAgICJ9XG4iOworCisgICAgY29uc3Qgc2g6
Ok91dHB1dFZhcmlhYmxlICpvdXRwdXRWYXJpYWJsZSA9IG51bGxwdHI7CisgICAgdmFsaWRhdGVP
dXRwdXRWYXJpYWJsZUZvclNoYWRlcihmcmFnQ29sb3JTaGFkZXIsIDB1LCAiZ2xfRnJhZ0NvbG9y
IiwgJm91dHB1dFZhcmlhYmxlKTsKKyAgICBBU1NFUlRfTkUob3V0cHV0VmFyaWFibGUsIG51bGxw
dHIpOworICAgIEVYUEVDVF9FUSgwdSwgb3V0cHV0VmFyaWFibGUtPmFycmF5U2l6ZSk7CisgICAg
RVhQRUNUX0dMRU5VTV9FUShHTF9GTE9BVF9WRUM0LCBvdXRwdXRWYXJpYWJsZS0+dHlwZSk7Cisg
ICAgRVhQRUNUX0dMRU5VTV9FUShHTF9NRURJVU1fRkxPQVQsIG91dHB1dFZhcmlhYmxlLT5wcmVj
aXNpb24pOworfQorCisvLyBUZXN0IHRoYXQgZ2xfRnJhZ0RhdGEgYnVpbHQtaW4gdXNhZ2UgaW4g
RVNTTDEgZnJhZ21lbnQgc2hhZGVyIGlzIHJlZmxlY3RlZCBpbiB0aGUgb3V0cHV0CisvLyB2YXJp
YWJsZXMgbGlzdC4KK1RFU1RfRihDb2xsZWN0RnJhZ21lbnRWYXJpYWJsZXNUZXN0LCBPdXRwdXRW
YXJFU1NMMUZyYWdEYXRhKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnRGF0YVNoYWRl
ciA9CisgICAgICAgICIjZXh0ZW5zaW9uIEdMX0VYVF9kcmF3X2J1ZmZlcnMgOiByZXF1aXJlXG4i
CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInZvaWQgbWFp
bigpIHtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdEYXRhWzBdID0gdmVjNCgxLjApO1xuIgorICAg
ICAgICAiICAgZ2xfRnJhZ0RhdGFbMV0gPSB2ZWM0KDAuNSk7XG4iCisgICAgICAgICJ9XG4iOwor
CisgICAgU2hCdWlsdEluUmVzb3VyY2VzIHJlc291cmNlcyAgICAgICA9IG1UcmFuc2xhdG9yLT5n
ZXRSZXNvdXJjZXMoKTsKKyAgICByZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycyAgICAgICAgID0g
MTsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQga01heERyYXdCdWZmZXJzID0gM3U7CisgICAgcmVz
b3VyY2VzLk1heERyYXdCdWZmZXJzID0ga01heERyYXdCdWZmZXJzOworICAgIGluaXRUcmFuc2xh
dG9yKHJlc291cmNlcyk7CisKKyAgICBjb25zdCBzaDo6T3V0cHV0VmFyaWFibGUgKm91dHB1dFZh
cmlhYmxlID0gbnVsbHB0cjsKKyAgICB2YWxpZGF0ZU91dHB1dFZhcmlhYmxlRm9yU2hhZGVyKGZy
YWdEYXRhU2hhZGVyLCAwdSwgImdsX0ZyYWdEYXRhIiwgJm91dHB1dFZhcmlhYmxlKTsKKyAgICBB
U1NFUlRfTkUob3V0cHV0VmFyaWFibGUsIG51bGxwdHIpOworICAgIEVYUEVDVF9FUShrTWF4RHJh
d0J1ZmZlcnMsIG91dHB1dFZhcmlhYmxlLT5hcnJheVNpemUpOworICAgIEVYUEVDVF9HTEVOVU1f
RVEoR0xfRkxPQVRfVkVDNCwgb3V0cHV0VmFyaWFibGUtPnR5cGUpOworICAgIEVYUEVDVF9HTEVO
VU1fRVEoR0xfTUVESVVNX0ZMT0FULCBvdXRwdXRWYXJpYWJsZS0+cHJlY2lzaW9uKTsKK30KKwor
Ly8gVGVzdCB0aGF0IGdsX0ZyYWdEYXRhRVhUIGJ1aWx0LWluIHVzYWdlIGluIEVTU0wxIGZyYWdt
ZW50IHNoYWRlciBpcyByZWZsZWN0ZWQgaW4gdGhlIG91dHB1dAorLy8gdmFyaWFibGVzIGxpc3Qu
IEFsc28gdGVzdCB0aGF0IHRoZSBwcmVjaXNpb24gaXMgbWVkaXVtcC4KK1RFU1RfRihDb2xsZWN0
RnJhZ21lbnRWYXJpYWJsZXNUZXN0LCBPdXRwdXRWYXJFU1NMMUZyYWdEZXB0aE1lZGl1bXApCit7
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdEZXB0aFNoYWRlciA9CisgICAgICAgICIjZXh0
ZW5zaW9uIEdMX0VYVF9mcmFnX2RlcHRoIDogcmVxdWlyZVxuIgorICAgICAgICAicHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIg
ICBnbF9GcmFnRGVwdGhFWFQgPSAwLjc7IgorICAgICAgICAifVxuIjsKKworICAgIFNoQnVpbHRJ
blJlc291cmNlcyByZXNvdXJjZXMgPSBtVHJhbnNsYXRvci0+Z2V0UmVzb3VyY2VzKCk7CisgICAg
cmVzb3VyY2VzLkVYVF9mcmFnX2RlcHRoID0gMTsKKyAgICBpbml0VHJhbnNsYXRvcihyZXNvdXJj
ZXMpOworCisgICAgY29uc3Qgc2g6Ok91dHB1dFZhcmlhYmxlICpvdXRwdXRWYXJpYWJsZSA9IG51
bGxwdHI7CisgICAgdmFsaWRhdGVPdXRwdXRWYXJpYWJsZUZvclNoYWRlcihmcmFnRGVwdGhTaGFk
ZXIsIDB1LCAiZ2xfRnJhZ0RlcHRoRVhUIiwgJm91dHB1dFZhcmlhYmxlKTsKKyAgICBBU1NFUlRf
TkUob3V0cHV0VmFyaWFibGUsIG51bGxwdHIpOworICAgIEVYUEVDVF9FUSgwdSwgb3V0cHV0VmFy
aWFibGUtPmFycmF5U2l6ZSk7CisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GTE9BVCwgb3V0cHV0
VmFyaWFibGUtPnR5cGUpOworICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfTUVESVVNX0ZMT0FULCBv
dXRwdXRWYXJpYWJsZS0+cHJlY2lzaW9uKTsKK30KKworLy8gVGVzdCB0aGF0IGdsX0ZyYWdEYXRh
RVhUIGJ1aWx0LWluIHVzYWdlIGluIEVTU0wxIGZyYWdtZW50IHNoYWRlciBpcyByZWZsZWN0ZWQg
aW4gdGhlIG91dHB1dAorLy8gdmFyaWFibGVzIGxpc3QuIEFsc28gdGVzdCB0aGF0IHRoZSBwcmVj
aXNpb24gaXMgaGlnaHAgaWYgdXNlciByZXF1ZXN0cyBpdC4KK1RFU1RfRihDb2xsZWN0RnJhZ21l
bnRWYXJpYWJsZXNUZXN0LCBPdXRwdXRWYXJFU1NMMUZyYWdEZXB0aEhpZ2hwKQoreworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZmcmFnRGVwdGhIaWdoU2hhZGVyID0KKyAgICAgICAgIiNleHRlbnNp
b24gR0xfRVhUX2ZyYWdfZGVwdGggOiByZXF1aXJlXG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7
XG4iCisgICAgICAgICIgICBnbF9GcmFnRGVwdGhFWFQgPSAwLjc7IgorICAgICAgICAifVxuIjsK
KworICAgIFNoQnVpbHRJblJlc291cmNlcyByZXNvdXJjZXMgICAgPSBtVHJhbnNsYXRvci0+Z2V0
UmVzb3VyY2VzKCk7CisgICAgcmVzb3VyY2VzLkVYVF9mcmFnX2RlcHRoICAgICAgICA9IDE7Cisg
ICAgcmVzb3VyY2VzLkZyYWdtZW50UHJlY2lzaW9uSGlnaCA9IDE7CisgICAgaW5pdFRyYW5zbGF0
b3IocmVzb3VyY2VzKTsKKworICAgIGNvbnN0IHNoOjpPdXRwdXRWYXJpYWJsZSAqb3V0cHV0VmFy
aWFibGUgPSBudWxscHRyOworICAgIHZhbGlkYXRlT3V0cHV0VmFyaWFibGVGb3JTaGFkZXIoZnJh
Z0RlcHRoSGlnaFNoYWRlciwgMHUsICJnbF9GcmFnRGVwdGhFWFQiLCAmb3V0cHV0VmFyaWFibGUp
OworICAgIEFTU0VSVF9ORShvdXRwdXRWYXJpYWJsZSwgbnVsbHB0cik7CisgICAgRVhQRUNUX0VR
KDB1LCBvdXRwdXRWYXJpYWJsZS0+YXJyYXlTaXplKTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdM
X0ZMT0FULCBvdXRwdXRWYXJpYWJsZS0+dHlwZSk7CisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9I
SUdIX0ZMT0FULCBvdXRwdXRWYXJpYWJsZS0+cHJlY2lzaW9uKTsKK30KKworLy8gVGVzdCB0aGF0
IGdsX0ZyYWdEYXRhIGJ1aWx0LWluIHVzYWdlIGluIEVTU0wzIGZyYWdtZW50IHNoYWRlciBpcyBy
ZWZsZWN0ZWQgaW4gdGhlIG91dHB1dAorLy8gdmFyaWFibGVzIGxpc3QuIEFsc28gdGVzdCB0aGF0
IHRoZSBwcmVjaXNpb24gaXMgaGlnaHAuCitURVNUX0YoQ29sbGVjdEZyYWdtZW50VmFyaWFibGVz
VGVzdCwgT3V0cHV0VmFyRVNTTDNGcmFnRGVwdGhIaWdocCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0
cmluZyAmZnJhZ0RlcHRoSGlnaFNoYWRlciA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIK
KyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidm9pZCBtYWlu
KCkge1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0RlcHRoID0gMC43OyIKKyAgICAgICAgIn1cbiI7
CisKKyAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgcmVzb3VyY2VzID0gbVRyYW5zbGF0b3ItPmdldFJl
c291cmNlcygpOworICAgIHJlc291cmNlcy5FWFRfZnJhZ19kZXB0aCA9IDE7CisgICAgaW5pdFRy
YW5zbGF0b3IocmVzb3VyY2VzKTsKKworICAgIGNvbnN0IHNoOjpPdXRwdXRWYXJpYWJsZSAqb3V0
cHV0VmFyaWFibGUgPSBudWxscHRyOworICAgIHZhbGlkYXRlT3V0cHV0VmFyaWFibGVGb3JTaGFk
ZXIoZnJhZ0RlcHRoSGlnaFNoYWRlciwgMHUsICJnbF9GcmFnRGVwdGgiLCAmb3V0cHV0VmFyaWFi
bGUpOworICAgIEFTU0VSVF9ORShvdXRwdXRWYXJpYWJsZSwgbnVsbHB0cik7CisgICAgRVhQRUNU
X0VRKDB1LCBvdXRwdXRWYXJpYWJsZS0+YXJyYXlTaXplKTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VR
KEdMX0ZMT0FULCBvdXRwdXRWYXJpYWJsZS0+dHlwZSk7CisgICAgRVhQRUNUX0dMRU5VTV9FUShH
TF9ISUdIX0ZMT0FULCBvdXRwdXRWYXJpYWJsZS0+cHJlY2lzaW9uKTsKK30KKworLy8gVGVzdCB0
aGF0IGdsX1NlY29uZGFyeUZyYWdDb2xvckVYVCBidWlsdC1pbiB1c2FnZSBpbiBFU1NMMSBmcmFn
bWVudCBzaGFkZXIgaXMgcmVmbGVjdGVkIGluIHRoZQorLy8gb3V0cHV0IHZhcmlhYmxlcyBsaXN0
LgorVEVTVF9GKENvbGxlY3RGcmFnbWVudFZhcmlhYmxlc1Rlc3QsIE91dHB1dFZhckVTU0wxRVhU
QmxlbmRGdW5jRXh0ZW5kZWRTZWNvbmRhcnlGcmFnQ29sb3IpCit7CisgICAgY29uc3QgY2hhciAq
c2Vjb25kYXJ5RnJhZ0NvbG9yU2hhZGVyID0KKyAgICAgICAgIiNleHRlbnNpb24gR0xfRVhUX2Js
ZW5kX2Z1bmNfZXh0ZW5kZWQgOiByZXF1aXJlXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGdsX0Zy
YWdDb2xvciA9IHZlYzQoMS4wKTtcbiIKKyAgICAgICAgIiAgIGdsX1NlY29uZGFyeUZyYWdDb2xv
ckVYVCA9IHZlYzQoMS4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBjb25zdCB1bnNpZ25l
ZCBpbnQga01heERyYXdCdWZmZXJzID0gM3U7CisgICAgU2hCdWlsdEluUmVzb3VyY2VzIHJlc291
cmNlcyAgICAgICA9IG1UcmFuc2xhdG9yLT5nZXRSZXNvdXJjZXMoKTsKKyAgICByZXNvdXJjZXMu
RVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWQgID0gMTsKKyAgICByZXNvdXJjZXMuRVhUX2RyYXdfYnVm
ZmVycyAgICAgICAgID0gMTsKKyAgICByZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMgICAgICAgICAg
ID0ga01heERyYXdCdWZmZXJzOworICAgIHJlc291cmNlcy5NYXhEdWFsU291cmNlRHJhd0J1ZmZl
cnMgPSByZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnM7CisgICAgaW5pdFRyYW5zbGF0b3IocmVzb3Vy
Y2VzKTsKKworICAgIGNvbnN0IHNoOjpPdXRwdXRWYXJpYWJsZSAqb3V0cHV0VmFyaWFibGUgPSBu
dWxscHRyOworICAgIHZhbGlkYXRlT3V0cHV0VmFyaWFibGVGb3JTaGFkZXIoc2Vjb25kYXJ5RnJh
Z0NvbG9yU2hhZGVyLCAwdSwgImdsX0ZyYWdDb2xvciIsICZvdXRwdXRWYXJpYWJsZSk7CisgICAg
QVNTRVJUX05FKG91dHB1dFZhcmlhYmxlLCBudWxscHRyKTsKKyAgICBFWFBFQ1RfRVEoMHUsIG91
dHB1dFZhcmlhYmxlLT5hcnJheVNpemUpOworICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRkxPQVRf
VkVDNCwgb3V0cHV0VmFyaWFibGUtPnR5cGUpOworICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfTUVE
SVVNX0ZMT0FULCBvdXRwdXRWYXJpYWJsZS0+cHJlY2lzaW9uKTsKKworICAgIG91dHB1dFZhcmlh
YmxlID0gbnVsbHB0cjsKKyAgICB2YWxpZGF0ZU91dHB1dFZhcmlhYmxlRm9yU2hhZGVyKHNlY29u
ZGFyeUZyYWdDb2xvclNoYWRlciwgMXUsICJnbF9TZWNvbmRhcnlGcmFnQ29sb3JFWFQiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dHB1dFZhcmlhYmxlKTsKKyAgICBB
U1NFUlRfTkUob3V0cHV0VmFyaWFibGUsIG51bGxwdHIpOworICAgIEVYUEVDVF9FUSgwdSwgb3V0
cHV0VmFyaWFibGUtPmFycmF5U2l6ZSk7CisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GTE9BVF9W
RUM0LCBvdXRwdXRWYXJpYWJsZS0+dHlwZSk7CisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9NRURJ
VU1fRkxPQVQsIG91dHB1dFZhcmlhYmxlLT5wcmVjaXNpb24pOworfQorCisvLyBUZXN0IHRoYXQg
Z2xfU2Vjb25kYXJ5RnJhZ0RhdGFFWFQgYnVpbHQtaW4gdXNhZ2UgaW4gRVNTTDEgZnJhZ21lbnQg
c2hhZGVyIGlzIHJlZmxlY3RlZCBpbiB0aGUKKy8vIG91dHB1dCB2YXJpYWJsZXMgbGlzdC4KK1RF
U1RfRihDb2xsZWN0RnJhZ21lbnRWYXJpYWJsZXNUZXN0LCBPdXRwdXRWYXJFU1NMMUVYVEJsZW5k
RnVuY0V4dGVuZGVkU2Vjb25kYXJ5RnJhZ0RhdGEpCit7CisgICAgY29uc3QgY2hhciAqc2Vjb25k
YXJ5RnJhZ0RhdGFTaGFkZXIgPQorICAgICAgICAiI2V4dGVuc2lvbiBHTF9FWFRfYmxlbmRfZnVu
Y19leHRlbmRlZCA6IHJlcXVpcmVcbiIKKyAgICAgICAgIiNleHRlbnNpb24gR0xfRVhUX2RyYXdf
YnVmZmVycyA6IHJlcXVpcmVcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xu
IgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0RhdGFbMF0g
PSB2ZWM0KDEuMCk7XG4iCisgICAgICAgICIgICBnbF9GcmFnRGF0YVsxXSA9IHZlYzQoMC41KTtc
biIKKyAgICAgICAgIiAgIGdsX1NlY29uZGFyeUZyYWdEYXRhRVhUWzBdID0gdmVjNCgxLjApO1xu
IgorICAgICAgICAiICAgZ2xfU2Vjb25kYXJ5RnJhZ0RhdGFFWFRbMV0gPSB2ZWM0KDAuOCk7XG4i
CisgICAgICAgICJ9XG4iOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBrTWF4RHJhd0J1ZmZlcnMg
PSAzdTsKKyAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgcmVzb3VyY2VzICAgICAgID0gbVRyYW5zbGF0
b3ItPmdldFJlc291cmNlcygpOworICAgIHJlc291cmNlcy5FWFRfYmxlbmRfZnVuY19leHRlbmRl
ZCAgPSAxOworICAgIHJlc291cmNlcy5FWFRfZHJhd19idWZmZXJzICAgICAgICAgPSAxOworICAg
IHJlc291cmNlcy5NYXhEcmF3QnVmZmVycyAgICAgICAgICAgPSBrTWF4RHJhd0J1ZmZlcnM7Cisg
ICAgcmVzb3VyY2VzLk1heER1YWxTb3VyY2VEcmF3QnVmZmVycyA9IHJlc291cmNlcy5NYXhEcmF3
QnVmZmVyczsKKyAgICBpbml0VHJhbnNsYXRvcihyZXNvdXJjZXMpOworCisgICAgY29uc3Qgc2g6
Ok91dHB1dFZhcmlhYmxlICpvdXRwdXRWYXJpYWJsZSA9IG51bGxwdHI7CisgICAgdmFsaWRhdGVP
dXRwdXRWYXJpYWJsZUZvclNoYWRlcihzZWNvbmRhcnlGcmFnRGF0YVNoYWRlciwgMHUsICJnbF9G
cmFnRGF0YSIsICZvdXRwdXRWYXJpYWJsZSk7CisgICAgQVNTRVJUX05FKG91dHB1dFZhcmlhYmxl
LCBudWxscHRyKTsKKyAgICBFWFBFQ1RfRVEoa01heERyYXdCdWZmZXJzLCBvdXRwdXRWYXJpYWJs
ZS0+YXJyYXlTaXplKTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZMT0FUX1ZFQzQsIG91dHB1
dFZhcmlhYmxlLT50eXBlKTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX01FRElVTV9GTE9BVCwg
b3V0cHV0VmFyaWFibGUtPnByZWNpc2lvbik7CisKKyAgICBvdXRwdXRWYXJpYWJsZSA9IG51bGxw
dHI7CisgICAgdmFsaWRhdGVPdXRwdXRWYXJpYWJsZUZvclNoYWRlcihzZWNvbmRhcnlGcmFnRGF0
YVNoYWRlciwgMXUsICJnbF9TZWNvbmRhcnlGcmFnRGF0YUVYVCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmb3V0cHV0VmFyaWFibGUpOworICAgIEFTU0VSVF9ORShvdXRw
dXRWYXJpYWJsZSwgbnVsbHB0cik7CisgICAgRVhQRUNUX0VRKGtNYXhEcmF3QnVmZmVycywgb3V0
cHV0VmFyaWFibGUtPmFycmF5U2l6ZSk7CisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GTE9BVF9W
RUM0LCBvdXRwdXRWYXJpYWJsZS0+dHlwZSk7CisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9NRURJ
VU1fRkxPQVQsIG91dHB1dFZhcmlhYmxlLT5wcmVjaXNpb24pOworfQorCitzdGF0aWMga2hyb25v
c191aW50NjRfdCBTaW1wbGVUZXN0SGFzaChjb25zdCBjaGFyICpzdHIsIHNpemVfdCBsZW4pCit7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ2NF90PihsZW4pOworfQorCitjbGFzcyBDb2xs
ZWN0SGFzaGVkVmVydGV4VmFyaWFibGVzVGVzdCA6IHB1YmxpYyBDb2xsZWN0VmVydGV4VmFyaWFi
bGVzVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAg
eworICAgICAgICAvLyBJbml0aWFsaXplIHRoZSB0cmFuc2xhdGUgd2l0aCBhIGhhc2ggZnVuY3Rp
b24KKyAgICAgICAgU2hCdWlsdEluUmVzb3VyY2VzIHJlc291cmNlczsKKyAgICAgICAgU2hJbml0
QnVpbHRJblJlc291cmNlcygmcmVzb3VyY2VzKTsKKyAgICAgICAgcmVzb3VyY2VzLkhhc2hGdW5j
dGlvbiA9IFNpbXBsZVRlc3RIYXNoOworICAgICAgICBpbml0VHJhbnNsYXRvcihyZXNvdXJjZXMp
OworICAgIH0KK307CisKK1RFU1RfRihDb2xsZWN0SGFzaGVkVmVydGV4VmFyaWFibGVzVGVzdCwg
SW5zdGFuY2VkSW50ZXJmYWNlQmxvY2spCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRl
clN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInVuaWZvcm0g
YmxvY2tOYW1lIHtcbiIKKyAgICAgICAgIiAgZmxvYXQgZmllbGQ7XG4iCisgICAgICAgICJ9IGJs
b2NrSW5zdGFuY2U7IgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgZ2xf
UG9zaXRpb24gPSB2ZWM0KGJsb2NrSW5zdGFuY2UuZmllbGQsIDAuMCwgMC4wLCAxLjApO1xuIgor
ICAgICAgICAifVxuIjsKKworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKworICAgIGNvbnN0
IHN0ZDo6dmVjdG9yPHNoOjpJbnRlcmZhY2VCbG9jaz4gJmludGVyZmFjZUJsb2NrcyA9IG1UcmFu
c2xhdG9yLT5nZXRJbnRlcmZhY2VCbG9ja3MoKTsKKyAgICBBU1NFUlRfRVEoMXUsIGludGVyZmFj
ZUJsb2Nrcy5zaXplKCkpOworCisgICAgY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrICZpbnRlcmZh
Y2VCbG9jayA9IGludGVyZmFjZUJsb2Nrc1swXTsKKworICAgIEVYUEVDVF9FUSgwdSwgaW50ZXJm
YWNlQmxvY2suYXJyYXlTaXplKTsKKyAgICBFWFBFQ1RfRkFMU0UoaW50ZXJmYWNlQmxvY2suaXNS
b3dNYWpvckxheW91dCk7CisgICAgRVhQRUNUX0VRKHNoOjpCTE9DS0xBWU9VVF9TSEFSRUQsIGlu
dGVyZmFjZUJsb2NrLmxheW91dCk7CisgICAgRVhQRUNUX0VRKCJibG9ja05hbWUiLCBpbnRlcmZh
Y2VCbG9jay5uYW1lKTsKKyAgICBFWFBFQ1RfRVEoImJsb2NrSW5zdGFuY2UiLCBpbnRlcmZhY2VC
bG9jay5pbnN0YW5jZU5hbWUpOworICAgIEVYUEVDVF9FUSgid2ViZ2xfOSIsIGludGVyZmFjZUJs
b2NrLm1hcHBlZE5hbWUpOworICAgIEVYUEVDVF9UUlVFKGludGVyZmFjZUJsb2NrLnN0YXRpY1Vz
ZSk7CisKKyAgICBBU1NFUlRfRVEoMXUsIGludGVyZmFjZUJsb2NrLmZpZWxkcy5zaXplKCkpOwor
CisgICAgY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrRmllbGQgJmZpZWxkID0gaW50ZXJmYWNlQmxv
Y2suZmllbGRzWzBdOworCisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9ISUdIX0ZMT0FULCBmaWVs
ZC5wcmVjaXNpb24pOworICAgIEVYUEVDVF9UUlVFKGZpZWxkLnN0YXRpY1VzZSk7CisgICAgRVhQ
RUNUX0dMRU5VTV9FUShHTF9GTE9BVCwgZmllbGQudHlwZSk7CisgICAgRVhQRUNUX0VRKCJmaWVs
ZCIsIGZpZWxkLm5hbWUpOworICAgIEVYUEVDVF9FUSgid2ViZ2xfNSIsIGZpZWxkLm1hcHBlZE5h
bWUpOworICAgIEVYUEVDVF9GQUxTRShmaWVsZC5pc1Jvd01ham9yTGF5b3V0KTsKKyAgICBFWFBF
Q1RfVFJVRShmaWVsZC5maWVsZHMuZW1wdHkoKSk7Cit9CisKK1RFU1RfRihDb2xsZWN0SGFzaGVk
VmVydGV4VmFyaWFibGVzVGVzdCwgU3RydWN0VW5pZm9ybSkKK3sKKyAgICBjb25zdCBzdGQ6OnN0
cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAg
ICAic3RydWN0IHNUeXBlIHtcbiIKKyAgICAgICAgIiAgZmxvYXQgZmllbGQ7XG4iCisgICAgICAg
ICJ9OyIKKyAgICAgICAgInVuaWZvcm0gc1R5cGUgdTsiCisgICAgICAgICJ2b2lkIG1haW4oKSB7
XG4iCisgICAgICAgICIgICBnbF9Qb3NpdGlvbiA9IHZlYzQodS5maWVsZCwgMC4wLCAwLjAsIDEu
MCk7XG4iCisgICAgICAgICJ9XG4iOworCisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworCisg
ICAgY29uc3QgYXV0byAmdW5pZm9ybXMgPSBtVHJhbnNsYXRvci0+Z2V0VW5pZm9ybXMoKTsKKyAg
ICBBU1NFUlRfRVEoMXUsIHVuaWZvcm1zLnNpemUoKSk7CisKKyAgICBjb25zdCBzaDo6VW5pZm9y
bSAmdW5pZm9ybSA9IHVuaWZvcm1zWzBdOworCisgICAgRVhQRUNUX0VRKDB1LCB1bmlmb3JtLmFy
cmF5U2l6ZSk7CisgICAgRVhQRUNUX0VRKCJ1IiwgdW5pZm9ybS5uYW1lKTsKKyAgICBFWFBFQ1Rf
RVEoIndlYmdsXzEiLCB1bmlmb3JtLm1hcHBlZE5hbWUpOworICAgIEVYUEVDVF9UUlVFKHVuaWZv
cm0uc3RhdGljVXNlKTsKKworICAgIEFTU0VSVF9FUSgxdSwgdW5pZm9ybS5maWVsZHMuc2l6ZSgp
KTsKKworICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmZmllbGQgPSB1bmlmb3JtLmZpZWxk
c1swXTsKKworICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfSElHSF9GTE9BVCwgZmllbGQucHJlY2lz
aW9uKTsKKyAgICAvLyBFWFBFQ1RfVFJVRShmaWVsZC5zdGF0aWNVc2UpOyAvLyB3ZSBkb24ndCB5
ZXQgc3VwcG9ydCBzdHJ1Y3Qgc3RhdGljIHVzZQorICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRkxP
QVQsIGZpZWxkLnR5cGUpOworICAgIEVYUEVDVF9FUSgiZmllbGQiLCBmaWVsZC5uYW1lKTsKKyAg
ICBFWFBFQ1RfRVEoIndlYmdsXzUiLCBmaWVsZC5tYXBwZWROYW1lKTsKKyAgICBFWFBFQ1RfVFJV
RShmaWVsZC5maWVsZHMuZW1wdHkoKSk7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvQ29uc3RhbnRGb2xkaW5nX3Rlc3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0
cy9Db25zdGFudEZvbGRpbmdfdGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0NvbnN0YW50Rm9sZGluZ190ZXN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwMjYgQEAKKy8vCisvLyBDb3B5cmlnaHQg
KGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8g
Q29uc3RhbnRGb2xkaW5nX3Rlc3QuY3BwOgorLy8gICBUZXN0cyBmb3IgY29uc3RhbnQgZm9sZGlu
ZworLy8KKworI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFuZ2xlX2dsLmgiCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKKyNp
bmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1Bvb2xBbGxvYy5oIgorI2luY2x1ZGUgImNvbXBp
bGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckVTU0wuaCIKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CitjbGFzcyBDb25zdGFudEZpbmRlciA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCit7CisgIHB1
YmxpYzoKKyAgICBDb25zdGFudEZpbmRlcihjb25zdCBzdGQ6OnZlY3RvcjxUPiAmY29uc3RhbnRW
ZWN0b3IpCisgICAgICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2UpLAor
ICAgICAgICAgIG1Db25zdGFudFZlY3Rvcihjb25zdGFudFZlY3RvciksCisgICAgICAgICAgbUZh
dWx0VG9sZXJhbmNlKFQoKSksCisgICAgICAgICAgbUZvdW5kKGZhbHNlKQorICAgIHt9CisKKyAg
ICBDb25zdGFudEZpbmRlcihjb25zdCBzdGQ6OnZlY3RvcjxUPiAmY29uc3RhbnRWZWN0b3IsIGNv
bnN0IFQgJmZhdWx0VG9sZXJhbmNlKQorICAgICAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwg
ZmFsc2UsIGZhbHNlKSwKKyAgICAgICAgbUNvbnN0YW50VmVjdG9yKGNvbnN0YW50VmVjdG9yKSwK
KyAgICAgICAgbUZhdWx0VG9sZXJhbmNlKGZhdWx0VG9sZXJhbmNlKSwKKyAgICAgICAgbUZvdW5k
KGZhbHNlKQorICAgIHt9CisKKyAgICBDb25zdGFudEZpbmRlcihjb25zdCBUICZ2YWx1ZSkKKyAg
ICAgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSksCisgICAgICAgICAg
bUZhdWx0VG9sZXJhbmNlKFQoKSksCisgICAgICAgICAgbUZvdW5kKGZhbHNlKQorICAgIHsKKyAg
ICAgICAgbUNvbnN0YW50VmVjdG9yLnB1c2hfYmFjayh2YWx1ZSk7CisgICAgfQorCisgICAgdm9p
ZCB2aXNpdENvbnN0YW50VW5pb24oVEludGVybUNvbnN0YW50VW5pb24gKm5vZGUpCisgICAgewor
ICAgICAgICBpZiAobm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKSA9PSBtQ29uc3RhbnRW
ZWN0b3Iuc2l6ZSgpKQorICAgICAgICB7CisgICAgICAgICAgICBib29sIGZvdW5kID0gdHJ1ZTsK
KyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUNvbnN0YW50VmVjdG9yLnNpemUo
KTsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICghaXNFcXVhbChub2Rl
LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpW2ldLCBtQ29uc3RhbnRWZWN0b3JbaV0pKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBmYWxzZTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKGZvdW5kKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1Gb3Vu
ZCA9IGZvdW5kOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgYm9vbCBm
b3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1Gb3VuZDsgfQorCisgIHByaXZhdGU6CisgICAgYm9vbCBp
c0VxdWFsKGNvbnN0IFRDb25zdGFudFVuaW9uICZub2RlLCBjb25zdCBmbG9hdCAmdmFsdWUpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbUZhdWx0VG9sZXJhbmNlID49IGZhYnNmKG5vZGUu
Z2V0RkNvbnN0KCkgLSB2YWx1ZSk7CisgICAgfQorCisgICAgYm9vbCBpc0VxdWFsKGNvbnN0IFRD
b25zdGFudFVuaW9uICZub2RlLCBjb25zdCBpbnQgJnZhbHVlKSBjb25zdAorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1GYXVsdFRvbGVyYW5jZSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4
KCkpOworICAgICAgICAvLyBhYnMoKSByZXR1cm5zIDAgYXQgbGVhc3Qgb24gc29tZSBwbGF0Zm9y
bXMgd2hlbiB0aGUgbWluaW11bSBpbnQgdmFsdWUgaXMgcGFzc2VkIGluIChpdAorICAgICAgICAv
LyBkb2Vzbid0IGhhdmUgYSBwb3NpdGl2ZSBjb3VudGVycGFydCkuCisgICAgICAgIHJldHVybiBt
RmF1bHRUb2xlcmFuY2UgPj0gYWJzKG5vZGUuZ2V0SUNvbnN0KCkgLSB2YWx1ZSkgJiYKKyAgICAg
ICAgICAgICAgIChub2RlLmdldElDb25zdCgpIC0gdmFsdWUpICE9IHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50Pjo6bWluKCk7CisgICAgfQorCisgICAgYm9vbCBpc0VxdWFsKGNvbnN0IFRDb25zdGFu
dFVuaW9uICZub2RlLCBjb25zdCB1bnNpZ25lZCBpbnQgJnZhbHVlKSBjb25zdAorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1GYXVsdFRvbGVyYW5jZSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4o
c3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSkpOworICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8aW50PihtRmF1bHRUb2xlcmFuY2UpID49CisgICAgICAgICAgICAgICAgICAgYWJzKHN0
YXRpY19jYXN0PGludD4obm9kZS5nZXRVQ29uc3QoKSAtIHZhbHVlKSkgJiYKKyAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PGludD4obm9kZS5nZXRVQ29uc3QoKSAtIHZhbHVlKSAhPSBzdGQ6Om51
bWVyaWNfbGltaXRzPGludD46Om1pbigpOworICAgIH0KKworICAgIGJvb2wgaXNFcXVhbChjb25z
dCBUQ29uc3RhbnRVbmlvbiAmbm9kZSwgY29uc3QgYm9vbCAmdmFsdWUpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gbm9kZS5nZXRCQ29uc3QoKSA9PSB2YWx1ZTsKKyAgICB9CisKKyAgICBz
dGQ6OnZlY3RvcjxUPiBtQ29uc3RhbnRWZWN0b3I7CisgICAgVCBtRmF1bHRUb2xlcmFuY2U7Cisg
ICAgYm9vbCBtRm91bmQ7Cit9OworCitjbGFzcyBDb25zdGFudEZvbGRpbmdUZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QKK3sKKyAgcHVibGljOgorICAgIENvbnN0YW50Rm9sZGluZ1Rlc3QoKSB7
fQorCisgIHByb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQorICAgIHsKKyAgICAg
ICAgYWxsb2NhdG9yLnB1c2goKTsKKyAgICAgICAgU2V0R2xvYmFsUG9vbEFsbG9jYXRvcigmYWxs
b2NhdG9yKTsKKyAgICAgICAgU2hCdWlsdEluUmVzb3VyY2VzIHJlc291cmNlczsKKyAgICAgICAg
U2hJbml0QnVpbHRJblJlc291cmNlcygmcmVzb3VyY2VzKTsKKworICAgICAgICBtVHJhbnNsYXRv
ckVTU0wgPSBuZXcgVHJhbnNsYXRvckVTU0woR0xfRlJBR01FTlRfU0hBREVSLCBTSF9HTEVTM19T
UEVDKTsKKyAgICAgICAgQVNTRVJUX1RSVUUobVRyYW5zbGF0b3JFU1NMLT5Jbml0KHJlc291cmNl
cykpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCisgICAgeworICAgICAg
ICBkZWxldGUgbVRyYW5zbGF0b3JFU1NMOworICAgICAgICBTZXRHbG9iYWxQb29sQWxsb2NhdG9y
KE5VTEwpOworICAgICAgICBhbGxvY2F0b3IucG9wKCk7CisgICAgfQorCisgICAgdm9pZCBjb21w
aWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBzaGFkZXJTdHJpbmcpCisgICAgeworICAgICAgICBjb25z
dCBjaGFyICpzaGFkZXJTdHJpbmdzW10gPSB7IHNoYWRlclN0cmluZy5jX3N0cigpIH07CisKKyAg
ICAgICAgbUFTVFJvb3QgPSBtVHJhbnNsYXRvckVTU0wtPmNvbXBpbGVUcmVlRm9yVGVzdGluZyhz
aGFkZXJTdHJpbmdzLCAxLCBTSF9PQkpFQ1RfQ09ERSk7CisgICAgICAgIGlmICghbUFTVFJvb3Qp
CisgICAgICAgIHsKKyAgICAgICAgICAgIFRJbmZvU2luayAmaW5mb1NpbmsgPSBtVHJhbnNsYXRv
ckVTU0wtPmdldEluZm9TaW5rKCk7CisgICAgICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21w
aWxhdGlvbiBpbnRvIEVTU0wgZmFpbGVkICIgPDwgaW5mb1NpbmsuaW5mby5jX3N0cigpOworICAg
ICAgICB9CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgYm9vbCBjb25z
dGFudEZvdW5kSW5BU1QoVCBjb25zdGFudCkKKyAgICB7CisgICAgICAgIENvbnN0YW50RmluZGVy
PFQ+IGZpbmRlcihjb25zdGFudCk7CisgICAgICAgIG1BU1RSb290LT50cmF2ZXJzZSgmZmluZGVy
KTsKKyAgICAgICAgcmV0dXJuIGZpbmRlci5mb3VuZCgpOworICAgIH0KKworICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgorICAgIGJvb2wgY29uc3RhbnRWZWN0b3JGb3VuZEluQVNUKGNvbnN0IHN0
ZDo6dmVjdG9yPFQ+ICZjb25zdGFudFZlY3RvcikKKyAgICB7CisgICAgICAgIENvbnN0YW50Rmlu
ZGVyPFQ+IGZpbmRlcihjb25zdGFudFZlY3Rvcik7CisgICAgICAgIG1BU1RSb290LT50cmF2ZXJz
ZSgmZmluZGVyKTsKKyAgICAgICAgcmV0dXJuIGZpbmRlci5mb3VuZCgpOworICAgIH0KKworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIGJvb2wgY29uc3RhbnRDb2x1bW5NYWpvck1hdHJp
eEZvdW5kSW5BU1QoY29uc3Qgc3RkOjp2ZWN0b3I8VD4gJmNvbnN0YW50TWF0cml4KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGNvbnN0YW50VmVjdG9yRm91bmRJbkFTVChjb25zdGFudE1hdHJpeCk7
CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgYm9vbCBjb25zdGFudFZl
Y3Rvck5lYXJGb3VuZEluQVNUKGNvbnN0IHN0ZDo6dmVjdG9yPFQ+ICZjb25zdGFudFZlY3Rvciwg
Y29uc3QgVCAmZmF1bHRUb2xlcmFuY2UpCisgICAgeworICAgICAgICBDb25zdGFudEZpbmRlcjxU
PiBmaW5kZXIoY29uc3RhbnRWZWN0b3IsIGZhdWx0VG9sZXJhbmNlKTsKKyAgICAgICAgbUFTVFJv
b3QtPnRyYXZlcnNlKCZmaW5kZXIpOworICAgICAgICByZXR1cm4gZmluZGVyLmZvdW5kKCk7Cisg
ICAgfQorCisgIHByaXZhdGU6CisgICAgVHJhbnNsYXRvckVTU0wgKm1UcmFuc2xhdG9yRVNTTDsK
KyAgICBUSW50ZXJtTm9kZSAqbUFTVFJvb3Q7CisKKyAgICBUUG9vbEFsbG9jYXRvciBhbGxvY2F0
b3I7Cit9OworCitURVNUX0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwgRm9sZEludGVnZXJBZGQpCit7
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lv
biAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAg
ICAib3V0IGludCBteV9JbnQ7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAg
ICIgICBjb25zdCBpbnQgaSA9IDExMjQgKyA1O1xuIgorICAgICAgICAiICAgbXlfSW50ID0gaTtc
biIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VS
VF9GQUxTRShjb25zdGFudEZvdW5kSW5BU1QoMTEyNCkpOworICAgIEFTU0VSVF9GQUxTRShjb25z
dGFudEZvdW5kSW5BU1QoNSkpOworICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Rm91bmRJbkFTVCgx
MTI5KSk7Cit9CisKK1RFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBGb2xkSW50ZWdlclN1YikK
K3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJz
aW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAg
ICAgICJvdXQgaW50IG15X0ludDtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAg
ICAgIiAgIGNvbnN0IGludCBpID0gMTEyNCAtIDU7XG4iCisgICAgICAgICIgICBteV9JbnQgPSBp
O1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNT
RVJUX0ZBTFNFKGNvbnN0YW50Rm91bmRJbkFTVCgxMTI0KSk7CisgICAgQVNTRVJUX0ZBTFNFKGNv
bnN0YW50Rm91bmRJbkFTVCg1KSk7CisgICAgQVNTRVJUX1RSVUUoY29uc3RhbnRGb3VuZEluQVNU
KDExMTkpKTsKK30KKworVEVTVF9GKENvbnN0YW50Rm9sZGluZ1Rlc3QsIEZvbGRJbnRlZ2VyTXVs
KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3Zl
cnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAg
ICAgICAgIm91dCBpbnQgbXlfSW50O1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAg
ICAgICAiICAgY29uc3QgaW50IGkgPSAxMTI0ICogNTtcbiIKKyAgICAgICAgIiAgIG15X0ludCA9
IGk7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBB
U1NFUlRfRkFMU0UoY29uc3RhbnRGb3VuZEluQVNUKDExMjQpKTsKKyAgICBBU1NFUlRfRkFMU0Uo
Y29uc3RhbnRGb3VuZEluQVNUKDUpKTsKKyAgICBBU1NFUlRfVFJVRShjb25zdGFudEZvdW5kSW5B
U1QoNTYyMCkpOworfQorCitURVNUX0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwgRm9sZEludGVnZXJE
aXYpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIj
dmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgor
ICAgICAgICAib3V0IGludCBteV9JbnQ7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisg
ICAgICAgICIgICBjb25zdCBpbnQgaSA9IDExMjQgLyA1O1xuIgorICAgICAgICAiICAgbXlfSW50
ID0gaTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAg
IEFTU0VSVF9GQUxTRShjb25zdGFudEZvdW5kSW5BU1QoMTEyNCkpOworICAgIEFTU0VSVF9GQUxT
RShjb25zdGFudEZvdW5kSW5BU1QoNSkpOworICAgIC8vIFJvdW5kaW5nIG1vZGUgb2YgZGl2aXNp
b24gaXMgdW5kZWZpbmVkIGluIHRoZSBzcGVjIGJ1dCBBTkdMRSBjYW4gYmUgZXhwZWN0ZWQgdG8g
cm91bmQgZG93bi4KKyAgICBBU1NFUlRfVFJVRShjb25zdGFudEZvdW5kSW5BU1QoMjI0KSk7Cit9
CisKK1RFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBGb2xkSW50ZWdlck1vZHVsdXMpCit7Cisg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAz
MDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAi
b3V0IGludCBteV9JbnQ7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIg
ICBjb25zdCBpbnQgaSA9IDExMjQgJSA1O1xuIgorICAgICAgICAiICAgbXlfSW50ID0gaTtcbiIK
KyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VSVF9G
QUxTRShjb25zdGFudEZvdW5kSW5BU1QoMTEyNCkpOworICAgIEFTU0VSVF9GQUxTRShjb25zdGFu
dEZvdW5kSW5BU1QoNSkpOworICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Rm91bmRJbkFTVCg0KSk7
Cit9CisKK1RFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBGb2xkVmVjdG9yQ3Jvc3NQcm9kdWN0
KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3Zl
cnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAg
ICAgICAgIm91dCB2ZWMzIG15X1ZlYzM7IgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAg
ICAgICAiICAgY29uc3QgdmVjMyB2MyA9IGNyb3NzKHZlYzMoMS4wZiwgMS4wZiwgMS4wZiksIHZl
YzMoMS4wZiwgLTEuMGYsIDEuMGYpKTtcbiIKKyAgICAgICAgIiAgIG15X1ZlYzMgPSB2MztcbiIK
KyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIHN0ZDo6dmVj
dG9yPGZsb2F0PiBpbnB1dDEoMywgMS4wZik7CisgICAgQVNTRVJUX0ZBTFNFKGNvbnN0YW50VmVj
dG9yRm91bmRJbkFTVChpbnB1dDEpKTsKKyAgICBzdGQ6OnZlY3RvcjxmbG9hdD4gaW5wdXQyOwor
ICAgIGlucHV0Mi5wdXNoX2JhY2soMS4wZik7CisgICAgaW5wdXQyLnB1c2hfYmFjaygtMS4wZik7
CisgICAgaW5wdXQyLnB1c2hfYmFjaygxLjBmKTsKKyAgICBBU1NFUlRfRkFMU0UoY29uc3RhbnRW
ZWN0b3JGb3VuZEluQVNUKGlucHV0MikpOworICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiByZXN1bHQ7
CisgICAgcmVzdWx0LnB1c2hfYmFjaygyLjBmKTsKKyAgICByZXN1bHQucHVzaF9iYWNrKDAuMGYp
OworICAgIHJlc3VsdC5wdXNoX2JhY2soLTIuMGYpOworICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50
VmVjdG9yRm91bmRJbkFTVChyZXN1bHQpKTsKK30KKworLy8gRm9sZE14Tk1hdHJpeEludmVyc2Ug
dGVzdHMgY2hlY2sgaWYgdGhlIG1hdHJpeCAnaW52ZXJzZScgb3BlcmF0aW9uCisvLyBvbiBNeE4g
bWF0cml4IGlzIGNvbnN0YW50IGZvbGRlZCB3aGVuIGFyZ3VtZW50IGlzIGNvbnN0YW50IGV4cHJl
c3Npb24gYW5kIGFsc28KKy8vIGNoZWNrcyB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIHJlc3VsdCBy
ZXR1cm5lZCBieSB0aGUgY29uc3RhbnQgZm9sZGluZyBvcGVyYXRpb24uCisvLyBBbGwgdGhlIG1h
dHJpY2VzIGluY2x1ZGluZyBtYXRyaWNlcyBpbiB0aGUgc2hhZGVyIGNvZGUgYXJlIGluIGNvbHVt
bi1tYWpvciBvcmRlci4KK1RFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBGb2xkMngyTWF0cml4
SW52ZXJzZSkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAg
ICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
XG4iCisgICAgICAgICJpbiBmbG9hdCBpO1xuIgorICAgICAgICAib3V0IHZlYzIgbXlfVmVjO1xu
IgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgY29uc3QgbWF0MiBtMiA9
IGludmVyc2UobWF0MigyLjBmLCAzLjBmLFxuIgorICAgICAgICAiICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA1LjBmLCA3LjBmKSk7XG4iCisgICAgICAgICIgICBtYXQyIG0gPSBtMiAq
IG1hdDIoaSk7XG4iCisgICAgICAgICIgICBteV9WZWMgPSBtWzBdO1xuIgorICAgICAgICAifVxu
IjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgZmxvYXQgaW5wdXRFbGVtZW50c1td
ID0KKyAgICB7CisgICAgICAgIDIuMGYsIDMuMGYsCisgICAgICAgIDUuMGYsIDcuMGYKKyAgICB9
OworICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiBpbnB1dChpbnB1dEVsZW1lbnRzLCBpbnB1dEVsZW1l
bnRzICsgNCk7CisgICAgQVNTRVJUX0ZBTFNFKGNvbnN0YW50Q29sdW1uTWFqb3JNYXRyaXhGb3Vu
ZEluQVNUKGlucHV0KSk7CisgICAgZmxvYXQgb3V0cHV0RWxlbWVudHNbXSA9CisgICAgeworICAg
ICAgICAtNy4wZiwgMy4wZiwKKyAgICAgICAgNS4wZiwgLTIuMGYKKyAgICB9OworICAgIHN0ZDo6
dmVjdG9yPGZsb2F0PiByZXN1bHQob3V0cHV0RWxlbWVudHMsIG91dHB1dEVsZW1lbnRzICsgNCk7
CisgICAgQVNTRVJUX1RSVUUoY29uc3RhbnRDb2x1bW5NYWpvck1hdHJpeEZvdW5kSW5BU1QocmVz
dWx0KSk7Cit9CisKKy8vIENoZWNrIGlmIHRoZSBtYXRyaXggJ2ludmVyc2UnIG9wZXJhdGlvbiBv
biAzeDMgbWF0cml4IGlzIGNvbnN0YW50IGZvbGRlZC4KK1RFU1RfRihDb25zdGFudEZvbGRpbmdU
ZXN0LCBGb2xkM3gzTWF0cml4SW52ZXJzZSkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hh
ZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJpbiBmbG9hdCBpO1xuIgorICAgICAgICAi
b3V0IHZlYzMgbXlfVmVjO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAi
ICAgY29uc3QgbWF0MyBtMyA9IGludmVyc2UobWF0MygxMS4wZiwgMTMuMGYsIDE5LjBmLFxuIgor
ICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMy4wZiwgMjkuMGYsIDMx
LjBmLFxuIgorICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNy4wZiwg
NDEuMGYsIDQzLjBmKSk7XG4iCisgICAgICAgICIgICBtYXQzIG0gPSBtMyAqIG1hdDMoaSk7XG4i
CisgICAgICAgICIgICBteV9WZWMgPSBtM1swXTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29t
cGlsZShzaGFkZXJTdHJpbmcpOworICAgIGZsb2F0IGlucHV0RWxlbWVudHNbXSA9CisgICAgewor
ICAgICAgICAxMS4wZiwgMTMuMGYsIDE5LjBmLAorICAgICAgICAyMy4wZiwgMjkuMGYsIDMxLjBm
LAorICAgICAgICAzNy4wZiwgNDEuMGYsIDQzLjBmCisgICAgfTsKKyAgICBzdGQ6OnZlY3Rvcjxm
bG9hdD4gaW5wdXQoaW5wdXRFbGVtZW50cywgaW5wdXRFbGVtZW50cyArIDkpOworICAgIEFTU0VS
VF9GQUxTRShjb25zdGFudFZlY3RvckZvdW5kSW5BU1QoaW5wdXQpKTsKKyAgICBmbG9hdCBvdXRw
dXRFbGVtZW50c1tdID0KKyAgICB7CisgICAgICAgIDMuMGYgLyA4NS4wZiwgLTExLjBmIC8gMzQu
MGYsIDM3LjBmIC8gMTcwLjBmLAorICAgICAgICAtNzkuMGYgLyAzNDAuMGYsIDIzLjBmIC8gNjgu
MGYsIC0xMi4wZiAvIDg1LjBmLAorICAgICAgICAxMy4wZiAvIDY4LjBmLCAtMy4wZiAvIDY4LjBm
LCAtMS4wZiAvIDM0LjBmCisgICAgfTsKKyAgICBzdGQ6OnZlY3RvcjxmbG9hdD4gcmVzdWx0KG91
dHB1dEVsZW1lbnRzLCBvdXRwdXRFbGVtZW50cyArIDkpOworICAgIGNvbnN0IGZsb2F0IGZsb2F0
RmF1bHRUb2xlcmFuY2UgPSAwLjAwMDAwMWY7CisgICAgQVNTRVJUX1RSVUUoY29uc3RhbnRWZWN0
b3JOZWFyRm91bmRJbkFTVChyZXN1bHQsIGZsb2F0RmF1bHRUb2xlcmFuY2UpKTsKK30KKworLy8g
Q2hlY2sgaWYgdGhlIG1hdHJpeCAnaW52ZXJzZScgb3BlcmF0aW9uIG9uIDR4NCBtYXRyaXggaXMg
Y29uc3RhbnQgZm9sZGVkLgorVEVTVF9GKENvbnN0YW50Rm9sZGluZ1Rlc3QsIEZvbGQ0eDRNYXRy
aXhJbnZlcnNlKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAg
ICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDtcbiIKKyAgICAgICAgImluIGZsb2F0IGk7XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9WZWM7
XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBjb25zdCBtYXQ0IG00
ID0gaW52ZXJzZShtYXQ0KDI5LjBmLCAzMS4wZiwgMzcuMGYsIDQxLjBmLFxuIgorICAgICAgICAi
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0My4wZiwgNDcuMGYsIDUzLjBmLCA1OS4w
ZixcbiIKKyAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjEuMGYsIDY3
LjBmLCA3MS4wZiwgNzMuMGYsXG4iCisgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDc5LjBmLCA4My4wZiwgODkuMGYsIDk3LjBmKSk7XG4iCisgICAgICAgICIgICBtYXQ0
IG0gPSBtNCAqIG1hdDQoaSk7XG4iCisgICAgICAgICIgICBteV9WZWMgPSBtWzBdO1xuIgorICAg
ICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgZmxvYXQgaW5wdXRF
bGVtZW50c1tdID0KKyAgICB7CisgICAgICAgIDI5LjBmLCAzMS4wZiwgMzcuMGYsIDQxLjBmLAor
ICAgICAgICA0My4wZiwgNDcuMGYsIDUzLjBmLCA1OS4wZiwKKyAgICAgICAgNjEuMGYsIDY3LjBm
LCA3MS4wZiwgNzMuMGYsCisgICAgICAgIDc5LjBmLCA4My4wZiwgODkuMGYsIDk3LjBmCisgICAg
fTsKKyAgICBzdGQ6OnZlY3RvcjxmbG9hdD4gaW5wdXQoaW5wdXRFbGVtZW50cywgaW5wdXRFbGVt
ZW50cyArIDE2KTsKKyAgICBBU1NFUlRfRkFMU0UoY29uc3RhbnRWZWN0b3JGb3VuZEluQVNUKGlu
cHV0KSk7CisgICAgZmxvYXQgb3V0cHV0RWxlbWVudHNbXSA9CisgICAgeworICAgICAgICA0My4w
ZiAvIDEyNi4wZiwgLTExLjBmIC8gMjEuMGYsIC0yLjBmIC8gMjEuMGYsIDMxLjBmIC8gMTI2LjBm
LAorICAgICAgICAtNS4wZiAvIDcuMGYsIDkuMGYgLyAxNC4wZiwgMS4wZiAvIDE0LjBmLCAtMS4w
ZiAvIDcuMGYsCisgICAgICAgIDg1LjBmIC8gMTI2LjBmLCAtMTEuMGYgLyAyMS4wZiwgNDMuMGYg
LyAyMTAuMGYsIC0zOC4wZiAvIDMxNS4wZiwKKyAgICAgICAgLTIuMGYgLyA3LjBmLCA1LjBmIC8g
MTQuMGYsIC02LjBmIC8gMzUuMGYsIDMuMGYgLyA3MC4wZgorICAgIH07CisgICAgc3RkOjp2ZWN0
b3I8ZmxvYXQ+IHJlc3VsdChvdXRwdXRFbGVtZW50cywgb3V0cHV0RWxlbWVudHMgKyAxNik7Cisg
ICAgY29uc3QgZmxvYXQgZmxvYXRGYXVsdFRvbGVyYW5jZSA9IDAuMDAwMDFmOworICAgIEFTU0VS
VF9UUlVFKGNvbnN0YW50VmVjdG9yTmVhckZvdW5kSW5BU1QocmVzdWx0LCBmbG9hdEZhdWx0VG9s
ZXJhbmNlKSk7Cit9CisKKy8vIEZvbGRNeE5NYXRyaXhEZXRlcm1pbmFudCB0ZXN0cyBjaGVjayBp
ZiB0aGUgbWF0cml4ICdkZXRlcm1pbmFudCcgb3BlcmF0aW9uCisvLyBvbiBNeE4gbWF0cml4IGlz
IGNvbnN0YW50IGZvbGRlZCB3aGVuIGFyZ3VtZW50IGlzIGNvbnN0YW50IGV4cHJlc3Npb24gYW5k
IGFsc28KKy8vIGNoZWNrcyB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIHJlc3VsdCByZXR1cm5lZCBi
eSB0aGUgY29uc3RhbnQgZm9sZGluZyBvcGVyYXRpb24uCisvLyBBbGwgdGhlIG1hdHJpY2VzIGlu
Y2x1ZGluZyBtYXRyaWNlcyBpbiB0aGUgc2hhZGVyIGNvZGUgYXJlIGluIGNvbHVtbi1tYWpvciBv
cmRlci4KK1RFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBGb2xkMngyTWF0cml4RGV0ZXJtaW5h
bnQpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIj
dmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgor
ICAgICAgICAib3V0IGZsb2F0IG15X0Zsb2F0OyIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIK
KyAgICAgICAgIiAgIGNvbnN0IGZsb2F0IGYgPSBkZXRlcm1pbmFudChtYXQyKDIuMGYsIDMuMGYs
XG4iCisgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjBmLCA3
LjBmKSk7XG4iCisgICAgICAgICIgICBteV9GbG9hdCA9IGY7XG4iCisgICAgICAgICJ9XG4iOwor
ICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBmbG9hdCBpbnB1dEVsZW1lbnRzW10gPQor
ICAgIHsKKyAgICAgICAgMi4wZiwgMy4wZiwKKyAgICAgICAgNS4wZiwgNy4wZgorICAgIH07Cisg
ICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IGlucHV0KGlucHV0RWxlbWVudHMsIGlucHV0RWxlbWVudHMg
KyA0KTsKKyAgICBBU1NFUlRfRkFMU0UoY29uc3RhbnRDb2x1bW5NYWpvck1hdHJpeEZvdW5kSW5B
U1QoaW5wdXQpKTsKKyAgICBBU1NFUlRfVFJVRShjb25zdGFudEZvdW5kSW5BU1QoLTEuMGYpKTsK
K30KKworLy8gQ2hlY2sgaWYgdGhlIG1hdHJpeCAnZGV0ZXJtaW5hbnQnIG9wZXJhdGlvbiBvbiAz
eDMgbWF0cml4IGlzIGNvbnN0YW50IGZvbGRlZC4KK1RFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0
LCBGb2xkM3gzTWF0cml4RGV0ZXJtaW5hbnQpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNo
YWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0IGZsb2F0IG15X0Zsb2F0OyIKKyAg
ICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGNvbnN0IGZsb2F0IGYgPSBkZXRl
cm1pbmFudChtYXQzKDExLjBmLCAxMy4wZiwgMTkuMGYsXG4iCisgICAgICAgICAgICAgIiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyMy4wZiwgMjkuMGYsIDMxLjBmLFxuIgorICAgICAg
ICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzcuMGYsIDQxLjBmLCA0My4w
ZikpO1xuIgorICAgICAgICAiICAgbXlfRmxvYXQgPSBmO1xuIgorICAgICAgICAifVxuIjsKKyAg
ICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgZmxvYXQgaW5wdXRFbGVtZW50c1tdID0KKyAg
ICB7CisgICAgICAgIDExLjBmLCAxMy4wZiwgMTkuMGYsCisgICAgICAgIDIzLjBmLCAyOS4wZiwg
MzEuMGYsCisgICAgICAgIDM3LjBmLCA0MS4wZiwgNDMuMGYKKyAgICB9OworICAgIHN0ZDo6dmVj
dG9yPGZsb2F0PiBpbnB1dChpbnB1dEVsZW1lbnRzLCBpbnB1dEVsZW1lbnRzICsgOSk7CisgICAg
QVNTRVJUX0ZBTFNFKGNvbnN0YW50Q29sdW1uTWFqb3JNYXRyaXhGb3VuZEluQVNUKGlucHV0KSk7
CisgICAgQVNTRVJUX1RSVUUoY29uc3RhbnRGb3VuZEluQVNUKC02ODAuMGYpKTsKK30KKworLy8g
Q2hlY2sgaWYgdGhlIG1hdHJpeCAnZGV0ZXJtaW5hbnQnIG9wZXJhdGlvbiBvbiA0eDQgbWF0cml4
IGlzIGNvbnN0YW50IGZvbGRlZC4KK1RFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBGb2xkNHg0
TWF0cml4RGV0ZXJtaW5hbnQpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmlu
ZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0IGZsb2F0IG15X0Zsb2F0OyIKKyAgICAgICAgInZv
aWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGNvbnN0IGZsb2F0IGYgPSBkZXRlcm1pbmFudCht
YXQ0KDI5LjBmLCAzMS4wZiwgMzcuMGYsIDQxLjBmLFxuIgorICAgICAgICAiICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNDMuMGYsIDQ3LjBmLCA1My4wZiwgNTkuMGYsXG4iCisg
ICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2MS4wZiwgNjcuMGYs
IDcxLjBmLCA3My4wZixcbiIKKyAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDc5LjBmLCA4My4wZiwgODkuMGYsIDk3LjBmKSk7XG4iCisgICAgICAgICIgICBteV9G
bG9hdCA9IGY7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsK
KyAgICBmbG9hdCBpbnB1dEVsZW1lbnRzW10gPQorICAgIHsKKyAgICAgICAgMjkuMGYsIDMxLjBm
LCAzNy4wZiwgNDEuMGYsCisgICAgICAgIDQzLjBmLCA0Ny4wZiwgNTMuMGYsIDU5LjBmLAorICAg
ICAgICA2MS4wZiwgNjcuMGYsIDcxLjBmLCA3My4wZiwKKyAgICAgICAgNzkuMGYsIDgzLjBmLCA4
OS4wZiwgOTcuMGYKKyAgICB9OworICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiBpbnB1dChpbnB1dEVs
ZW1lbnRzLCBpbnB1dEVsZW1lbnRzICsgMTYpOworICAgIEFTU0VSVF9GQUxTRShjb25zdGFudENv
bHVtbk1ham9yTWF0cml4Rm91bmRJbkFTVChpbnB1dCkpOworICAgIEFTU0VSVF9UUlVFKGNvbnN0
YW50Rm91bmRJbkFTVCgtMjUyMC4wZikpOworfQorCisvLyBDaGVjayBpZiB0aGUgbWF0cml4ICd0
cmFuc3Bvc2UnIG9wZXJhdGlvbiBvbiAzeDMgbWF0cml4IGlzIGNvbnN0YW50IGZvbGRlZC4KKy8v
IEFsbCB0aGUgbWF0cmljZXMgaW5jbHVkaW5nIG1hdHJpY2VzIGluIHRoZSBzaGFkZXIgY29kZSBh
cmUgaW4gY29sdW1uLW1ham9yIG9yZGVyLgorVEVTVF9GKENvbnN0YW50Rm9sZGluZ1Rlc3QsIEZv
bGQzeDNNYXRyaXhUcmFuc3Bvc2UpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0
cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAiaW4gZmxvYXQgaTtcbiIKKyAgICAgICAgIm91dCB2
ZWMzIG15X1ZlYztcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGNv
bnN0IG1hdDMgbTMgPSB0cmFuc3Bvc2UobWF0MygxMS4wZiwgMTMuMGYsIDE5LjBmLFxuIgorICAg
ICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzLjBmLCAyOS4wZiwgMzEu
MGYsXG4iCisgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzcuMGYs
IDQxLjBmLCA0My4wZikpO1xuIgorICAgICAgICAiICAgbWF0MyBtID0gbTMgKiBtYXQzKGkpO1xu
IgorICAgICAgICAiICAgbXlfVmVjID0gbVswXTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29t
cGlsZShzaGFkZXJTdHJpbmcpOworICAgIGZsb2F0IGlucHV0RWxlbWVudHNbXSA9CisgICAgewor
ICAgICAgICAxMS4wZiwgMTMuMGYsIDE5LjBmLAorICAgICAgICAyMy4wZiwgMjkuMGYsIDMxLjBm
LAorICAgICAgICAzNy4wZiwgNDEuMGYsIDQzLjBmCisgICAgfTsKKyAgICBzdGQ6OnZlY3Rvcjxm
bG9hdD4gaW5wdXQoaW5wdXRFbGVtZW50cywgaW5wdXRFbGVtZW50cyArIDkpOworICAgIEFTU0VS
VF9GQUxTRShjb25zdGFudENvbHVtbk1ham9yTWF0cml4Rm91bmRJbkFTVChpbnB1dCkpOworICAg
IGZsb2F0IG91dHB1dEVsZW1lbnRzW10gPQorICAgIHsKKyAgICAgICAgMTEuMGYsIDIzLjBmLCAz
Ny4wZiwKKyAgICAgICAgMTMuMGYsIDI5LjBmLCA0MS4wZiwKKyAgICAgICAgMTkuMGYsIDMxLjBm
LCA0My4wZgorICAgIH07CisgICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IHJlc3VsdChvdXRwdXRFbGVt
ZW50cywgb3V0cHV0RWxlbWVudHMgKyA5KTsKKyAgICBBU1NFUlRfVFJVRShjb25zdGFudENvbHVt
bk1ham9yTWF0cml4Rm91bmRJbkFTVChyZXN1bHQpKTsKK30KKworLy8gVGVzdCB0aGF0IDB4RkZG
RkZGRkYgd3JhcHMgdG8gLTEgd2hlbiBwYXJzZWQgYXMgaW50ZWdlci4KKy8vIFRoaXMgaXMgZmVh
dHVyZWQgaW4gdGhlIGV4YW1wbGVzIG9mIEVTU0wzIHNlY3Rpb24gNC4xLjMuIEVTU0wzIHNlY3Rp
b24gMTIuNDIKKy8vIG1lYW5zIHRoYXQgYW55IDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVl
IGlzIGEgdmFsaWQgbGl0ZXJhbC4KK1RFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBQYXJzZVdy
YXBwZWRIZXhJbnRMaXRlcmFsKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJp
bmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInByZWNpc2lvbiBoaWdocCBpbnQ7XG4iCisgICAgICAg
ICJ1bmlmb3JtIGludCBpbkludDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X1ZlYztcbiIKKyAg
ICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGNvbnN0IGludCBpID0gMHhGRkZG
RkZGRjtcbiIKKyAgICAgICAgIiAgIG15X1ZlYyA9IHZlYzQoaSAqIGluSW50KTtcbiIKKyAgICAg
ICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VSVF9UUlVFKGNv
bnN0YW50Rm91bmRJbkFTVCgtMSkpOworfQorCisvLyBUZXN0IHRoYXQgMzAwMDAwMDAwMCB3cmFw
cyB0byAtMTI5NDk2NzI5NiB3aGVuIHBhcnNlZCBhcyBpbnRlZ2VyLgorLy8gVGhpcyBpcyBmZWF0
dXJlZCBpbiB0aGUgZXhhbXBsZXMgb2YgR0xTTCA0LjUsIGFuZCBFU1NMIGJlaGF2aW9yIHNob3Vs
ZCBtYXRjaAorLy8gZGVza3RvcCBHTFNMIHdoZW4gaXQgY29tZXMgdG8gaW50ZWdlciBwYXJzaW5n
LgorVEVTVF9GKENvbnN0YW50Rm9sZGluZ1Rlc3QsIFBhcnNlV3JhcHBlZERlY2ltYWxJbnRMaXRl
cmFsKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAi
I3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIK
KyAgICAgICAgInByZWNpc2lvbiBoaWdocCBpbnQ7XG4iCisgICAgICAgICJ1bmlmb3JtIGludCBp
bkludDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X1ZlYztcbiIKKyAgICAgICAgInZvaWQgbWFp
bigpIHtcbiIKKyAgICAgICAgIiAgIGNvbnN0IGludCBpID0gMzAwMDAwMDAwMDtcbiIKKyAgICAg
ICAgIiAgIG15X1ZlYyA9IHZlYzQoaSAqIGluSW50KTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAg
Y29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Rm91bmRJbkFT
VCgtMTI5NDk2NzI5NikpOworfQorCisvLyBUZXN0IHRoYXQgMHhGRkZGRkZGRnUgaXMgcGFyc2Vk
IGNvcnJlY3RseSBhcyBhbiB1bnNpZ25lZCBpbnRlZ2VyIGxpdGVyYWwuCisvLyBUaGlzIGlzIGZl
YXR1cmVkIGluIHRoZSBleGFtcGxlcyBvZiBFU1NMMyBzZWN0aW9uIDQuMS4zLiBFU1NMMyBzZWN0
aW9uIDEyLjQyCisvLyBtZWFucyB0aGF0IGFueSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlciB2YWx1
ZSBpcyBhIHZhbGlkIGxpdGVyYWwuCitURVNUX0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwgUGFyc2VN
YXhVaW50TGl0ZXJhbCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0K
KyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7XG4iCisgICAgICAgICJwcmVjaXNpb24gaGlnaHAgaW50O1xuIgorICAgICAgICAidW5p
Zm9ybSB1aW50IGluSW50O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfVmVjO1xuIgorICAgICAg
ICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgY29uc3QgdWludCBpID0gMHhGRkZGRkZG
RnU7XG4iCisgICAgICAgICIgICBteV9WZWMgPSB2ZWM0KGkgKiBpbkludCk7XG4iCisgICAgICAg
ICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBBU1NFUlRfVFJVRShjb25z
dGFudEZvdW5kSW5BU1QoMHhGRkZGRkZGRnUpKTsKK30KKworLy8gVGVzdCB0aGF0IHVuYXJ5IG1p
bnVzIGFwcGxpZWQgdG8gdW5zaWduZWQgaW50IGlzIGNvbnN0YW50IGZvbGRlZCBjb3JyZWN0bHku
CisvLyBUaGlzIGlzIGZlYXR1cmVkIGluIHRoZSBleGFtcGxlcyBvZiBFU1NMMyBzZWN0aW9uIDQu
MS4zLiBFU1NMMyBzZWN0aW9uIDEyLjQyCisvLyBtZWFucyB0aGF0IGFueSAzMi1iaXQgdW5zaWdu
ZWQgaW50ZWdlciB2YWx1ZSBpcyBhIHZhbGlkIGxpdGVyYWwuCitURVNUX0YoQ29uc3RhbnRGb2xk
aW5nVGVzdCwgRm9sZFVuYXJ5TWludXNPblVpbnRMaXRlcmFsKQoreworICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAg
ICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInByZWNpc2lvbiBoaWdo
cCBpbnQ7XG4iCisgICAgICAgICJ1bmlmb3JtIHVpbnQgaW5JbnQ7XG4iCisgICAgICAgICJvdXQg
dmVjNCBteV9WZWM7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBj
b25zdCB1aW50IGkgPSAtMXU7XG4iCisgICAgICAgICIgICBteV9WZWMgPSB2ZWM0KGkgKiBpbklu
dCk7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBB
U1NFUlRfVFJVRShjb25zdGFudEZvdW5kSW5BU1QoMHhGRkZGRkZGRnUpKTsKK30KKworLy8gVGVz
dCB0aGF0IGNvbnN0YW50IG1hdDIgaW5pdGlhbGl6YXRpb24gd2l0aCBhIG1hdDIgcGFyYW1ldGVy
IHdvcmtzIGNvcnJlY3RseS4KK1RFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBGb2xkTWF0MkNv
bnN0cnVjdG9yVGFraW5nTWF0MikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3Ry
aW5nID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidW5p
Zm9ybSBmbG9hdCBtdWx0O1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAi
ICAgY29uc3QgbWF0MiBjbSA9IG1hdDIobWF0MigwLjAsIDEuMCwgMi4wLCAzLjApKTtcbiIKKyAg
ICAgICAgIiAgIG1hdDIgbSA9IGNtICogbXVsdDtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xv
ciA9IHZlYzQobVswXSwgbVsxXSk7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hh
ZGVyU3RyaW5nKTsKKyAgICBmbG9hdCBvdXRwdXRFbGVtZW50c1tdID0KKyAgICB7CisgICAgICAg
IDAuMGYsIDEuMGYsCisgICAgICAgIDIuMGYsIDMuMGYKKyAgICB9OworICAgIHN0ZDo6dmVjdG9y
PGZsb2F0PiByZXN1bHQob3V0cHV0RWxlbWVudHMsIG91dHB1dEVsZW1lbnRzICsgNCk7CisgICAg
QVNTRVJUX1RSVUUoY29uc3RhbnRDb2x1bW5NYWpvck1hdHJpeEZvdW5kSW5BU1QocmVzdWx0KSk7
Cit9CisKKy8vIFRlc3QgdGhhdCBjb25zdGFudCBtYXQyIGluaXRpYWxpemF0aW9uIHdpdGggYW4g
aW50IHBhcmFtZXRlciB3b3JrcyBjb3JyZWN0bHkuCitURVNUX0YoQ29uc3RhbnRGb2xkaW5nVGVz
dCwgRm9sZE1hdDJDb25zdHJ1Y3RvclRha2luZ1NjYWxhcikKK3sKKyAgICBjb25zdCBzdGQ6OnN0
cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xu
IgorICAgICAgICAidW5pZm9ybSBmbG9hdCBtdWx0O1xuIgorICAgICAgICAidm9pZCBtYWluKCkg
e1xuIgorICAgICAgICAiICAgY29uc3QgbWF0MiBjbSA9IG1hdDIoMyk7XG4iCisgICAgICAgICIg
ICBtYXQyIG0gPSBjbSAqIG11bHQ7XG4iCisgICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0
KG1bMF0sIG1bMV0pO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmlu
Zyk7CisgICAgZmxvYXQgb3V0cHV0RWxlbWVudHNbXSA9CisgICAgeworICAgICAgICAzLjBmLCAw
LjBmLAorICAgICAgICAwLjBmLCAzLjBmCisgICAgfTsKKyAgICBzdGQ6OnZlY3RvcjxmbG9hdD4g
cmVzdWx0KG91dHB1dEVsZW1lbnRzLCBvdXRwdXRFbGVtZW50cyArIDQpOworICAgIEFTU0VSVF9U
UlVFKGNvbnN0YW50Q29sdW1uTWFqb3JNYXRyaXhGb3VuZEluQVNUKHJlc3VsdCkpOworfQorCisv
LyBUZXN0IHRoYXQgY29uc3RhbnQgbWF0MiBpbml0aWFsaXphdGlvbiB3aXRoIGEgbWl4IG9mIHBh
cmFtZXRlcnMgd29ya3MgY29ycmVjdGx5LgorVEVTVF9GKENvbnN0YW50Rm9sZGluZ1Rlc3QsIEZv
bGRNYXQyQ29uc3RydWN0b3JUYWtpbmdNaXgpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNo
YWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAg
ICAgInVuaWZvcm0gZmxvYXQgbXVsdDtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAg
ICAgICAgIiAgIGNvbnN0IG1hdDIgY20gPSBtYXQyKC0xLCB2ZWMyKDAuMCwgMS4wKSwgdmVjNCgy
LjApKTtcbiIKKyAgICAgICAgIiAgIG1hdDIgbSA9IGNtICogbXVsdDtcbiIKKyAgICAgICAgIiAg
IGdsX0ZyYWdDb2xvciA9IHZlYzQobVswXSwgbVsxXSk7XG4iCisgICAgICAgICJ9XG4iOworICAg
IGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBmbG9hdCBvdXRwdXRFbGVtZW50c1tdID0KKyAg
ICB7CisgICAgICAgIC0xLjAsIDAuMGYsCisgICAgICAgIDEuMGYsIDIuMGYKKyAgICB9OworICAg
IHN0ZDo6dmVjdG9yPGZsb2F0PiByZXN1bHQob3V0cHV0RWxlbWVudHMsIG91dHB1dEVsZW1lbnRz
ICsgNCk7CisgICAgQVNTRVJUX1RSVUUoY29uc3RhbnRDb2x1bW5NYWpvck1hdHJpeEZvdW5kSW5B
U1QocmVzdWx0KSk7Cit9CisKKy8vIFRlc3QgdGhhdCBjb25zdGFudCBtYXQyIGluaXRpYWxpemF0
aW9uIHdpdGggYSBtYXQzIHBhcmFtZXRlciB3b3JrcyBjb3JyZWN0bHkuCitURVNUX0YoQ29uc3Rh
bnRGb2xkaW5nVGVzdCwgRm9sZE1hdDJDb25zdHJ1Y3RvclRha2luZ01hdDMpCit7CisgICAgY29u
c3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gZmxvYXQgbXVsdDtcbiIKKyAgICAgICAgInZv
aWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGNvbnN0IG1hdDIgY20gPSBtYXQyKG1hdDMoMC4w
LCAxLjAsIDIuMCwgMy4wLCA0LjAsIDUuMCwgNi4wLCA3LjAsIDguMCkpO1xuIgorICAgICAgICAi
ICAgbWF0MiBtID0gY20gKiBtdWx0O1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVj
NChtWzBdLCBtWzFdKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJp
bmcpOworICAgIGZsb2F0IG91dHB1dEVsZW1lbnRzW10gPQorICAgIHsKKyAgICAgICAgMC4wZiwg
MS4wZiwKKyAgICAgICAgMy4wZiwgNC4wZgorICAgIH07CisgICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+
IHJlc3VsdChvdXRwdXRFbGVtZW50cywgb3V0cHV0RWxlbWVudHMgKyA0KTsKKyAgICBBU1NFUlRf
VFJVRShjb25zdGFudENvbHVtbk1ham9yTWF0cml4Rm91bmRJbkFTVChyZXN1bHQpKTsKK30KKwor
Ly8gVGVzdCB0aGF0IGNvbnN0YW50IG1hdDR4MyBpbml0aWFsaXphdGlvbiB3aXRoIGEgbWF0M3gy
IHBhcmFtZXRlciB3b3JrcyBjb3JyZWN0bHkuCitURVNUX0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwg
Rm9sZE1hdDR4M0NvbnN0cnVjdG9yVGFraW5nTWF0M3gyKQoreworICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAg
ICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gZmxvYXQgbXVs
dDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQg
bWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGNvbnN0IG1hdDR4MyBjbSA9IG1hdDR4MyhtYXQzeDIo
MS4wLCAyLjAsXG4iCisgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDMuMCwgNC4wLFxuIgorICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA1LjAsIDYuMCkpO1xuIgorICAgICAgICAiICAgbWF0NHgzIG0gPSBjbSAqIG11bHQ7XG4iCisg
ICAgICAgICIgICBteV9GcmFnQ29sb3IgPSB2ZWM0KG1bMF0sIG1bMV1bMF0pO1xuIgorICAgICAg
ICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgZmxvYXQgb3V0cHV0RWxl
bWVudHNbXSA9CisgICAgeworICAgICAgICAxLjBmLCAyLjBmLCAwLjBmLAorICAgICAgICAzLjBm
LCA0LjBmLCAwLjBmLAorICAgICAgICA1LjBmLCA2LjBmLCAxLjBmLAorICAgICAgICAwLjBmLCAw
LjBmLCAwLjBmCisgICAgfTsKKyAgICBzdGQ6OnZlY3RvcjxmbG9hdD4gcmVzdWx0KG91dHB1dEVs
ZW1lbnRzLCBvdXRwdXRFbGVtZW50cyArIDEyKTsKKyAgICBBU1NFUlRfVFJVRShjb25zdGFudENv
bHVtbk1ham9yTWF0cml4Rm91bmRJbkFTVChyZXN1bHQpKTsKK30KKworCisvLyBUZXN0IHRoYXQg
Y29uc3RhbnQgbWF0MiBpbml0aWFsaXphdGlvbiB3aXRoIGEgdmVjNCBwYXJhbWV0ZXIgd29ya3Mg
Y29ycmVjdGx5LgorVEVTVF9GKENvbnN0YW50Rm9sZGluZ1Rlc3QsIEZvbGRNYXQyQ29uc3RydWN0
b3JUYWtpbmdWZWM0KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQor
ICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ1bmlmb3JtIGZs
b2F0IG11bHQ7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBjb25z
dCBtYXQyIGNtID0gbWF0Mih2ZWM0KDAuMCwgMS4wLCAyLjAsIDMuMCkpO1xuIgorICAgICAgICAi
ICAgbWF0MiBtID0gY20gKiBtdWx0O1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVj
NChtWzBdLCBtWzFdKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJp
bmcpOworICAgIGZsb2F0IG91dHB1dEVsZW1lbnRzW10gPQorICAgIHsKKyAgICAgICAgMC4wZiwg
MS4wZiwKKyAgICAgICAgMi4wZiwgMy4wZgorICAgIH07CisgICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+
IHJlc3VsdChvdXRwdXRFbGVtZW50cywgb3V0cHV0RWxlbWVudHMgKyA0KTsKKyAgICBBU1NFUlRf
VFJVRShjb25zdGFudENvbHVtbk1ham9yTWF0cml4Rm91bmRJbkFTVChyZXN1bHQpKTsKK30KKwor
Ly8gVGVzdCB0aGF0IGVxdWFsaXR5IGNvbXBhcmlzb24gb2YgdHdvIGRpZmZlcmVudCBzdHJ1Y3Rz
IHdpdGggYSBuZXN0ZWQgc3RydWN0IGluc2lkZSByZXR1cm5zIGZhbHNlLgorVEVTVF9GKENvbnN0
YW50Rm9sZGluZ1Rlc3QsIEZvbGROZXN0ZWREaWZmZXJlbnRTdHJ1Y3RFcXVhbGl0eUNvbXBhcmlz
b24pCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInN0cnVjdCBuZXN0ZWQge1xuIgor
ICAgICAgICAiICAgIGZsb2F0IGZcbjsiCisgICAgICAgICJ9O1xuIgorICAgICAgICAic3RydWN0
IFMge1xuIgorICAgICAgICAiICAgIG5lc3RlZCBhO1xuIgorICAgICAgICAiICAgIGZsb2F0IGY7
XG4iCisgICAgICAgICJ9O1xuIgorICAgICAgICAidW5pZm9ybSB2ZWM0IG11bHQ7XG4iCisgICAg
ICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGNvbnN0IFMg
czEgPSBTKG5lc3RlZCgwLjApLCAyLjApO1xuIgorICAgICAgICAiICAgIGNvbnN0IFMgczIgPSBT
KG5lc3RlZCgwLjApLCAzLjApO1xuIgorICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IChzMSA9
PSBzMiA/IDEuMCA6IDAuNSkgKiBtdWx0O1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxl
KHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX1RSVUUoY29uc3RhbnRGb3VuZEluQVNUKDAuNWYp
KTsKK30KKworLy8gVGVzdCB0aGF0IGVxdWFsaXR5IGNvbXBhcmlzb24gb2YgdHdvIGlkZW50aWNh
bCBzdHJ1Y3RzIHdpdGggYSBuZXN0ZWQgc3RydWN0IGluc2lkZSByZXR1cm5zIHRydWUuCitURVNU
X0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwgRm9sZE5lc3RlZElkZW50aWNhbFN0cnVjdEVxdWFsaXR5
Q29tcGFyaXNvbikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAg
ICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAic3RydWN0IG5lc3Rl
ZCB7XG4iCisgICAgICAgICIgICAgZmxvYXQgZlxuOyIKKyAgICAgICAgIn07XG4iCisgICAgICAg
ICJzdHJ1Y3QgUyB7XG4iCisgICAgICAgICIgICAgbmVzdGVkIGE7XG4iCisgICAgICAgICIgICAg
ZmxvYXQgZjtcbiIKKyAgICAgICAgIiAgICBpbnQgaTtcbiIKKyAgICAgICAgIn07XG4iCisgICAg
ICAgICJ1bmlmb3JtIHZlYzQgbXVsdDtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAg
ICAgICJ7XG4iCisgICAgICAgICIgICAgY29uc3QgUyBzMSA9IFMobmVzdGVkKDAuMCksIDIuMCwg
Myk7XG4iCisgICAgICAgICIgICAgY29uc3QgUyBzMiA9IFMobmVzdGVkKDAuMCksIDIuMCwgMyk7
XG4iCisgICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gKHMxID09IHMyID8gMS4wIDogMC41KSAq
IG11bHQ7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAg
ICBBU1NFUlRfVFJVRShjb25zdGFudEZvdW5kSW5BU1QoMS4wZikpOworfQorCisvLyBUZXN0IHRo
YXQgcmlnaHQgZWxlbWVudHMgYXJlIGNob3NlbiBmcm9tIG5vbi1zcXVhcmUgbWF0cml4CitURVNU
X0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwgRm9sZE5vblNxdWFyZU1hdHJpeEluZGV4aW5nKQorewor
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24g
MzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAg
Im91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAg
ICAgICJ7XG4iCisgICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gbWF0M3g0KDAsIDEsIDIsIDMs
IDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSlbMV07XG4iCisgICAgICAgICJ9XG4iOworICAgIGNv
bXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBmbG9hdCBvdXRwdXRFbGVtZW50c1tdID0gezQuMGYs
IDUuMGYsIDYuMGYsIDcuMGZ9OworICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiByZXN1bHQob3V0cHV0
RWxlbWVudHMsIG91dHB1dEVsZW1lbnRzICsgNCk7CisgICAgQVNTRVJUX1RSVUUoY29uc3RhbnRW
ZWN0b3JGb3VuZEluQVNUKHJlc3VsdCkpOworfQorCisvLyBUZXN0IHRoYXQgZm9sZGluZyBvdXRl
ciBwcm9kdWN0IG9mIHZlY3RvcnMgd2l0aCBub24tbWF0Y2hpbmcgbGVuZ3RocyB3b3Jrcy4KK1RF
U1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBGb2xkTm9uU3F1YXJlT3V0ZXJQcm9kdWN0KQorewor
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24g
MzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAg
Im91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAg
ICAgICJ7XG4iCisgICAgICAgICIgICAgbWF0M3gyIHByb2QgPSBvdXRlclByb2R1Y3QodmVjMigy
LjAsIDMuMCksIHZlYzMoNS4wLCA3LjAsIDExLjApKTtcbiIKKyAgICAgICAgIiAgICBteV9GcmFn
Q29sb3IgPSB2ZWM0KHByb2RbMF0ueCk7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUo
c2hhZGVyU3RyaW5nKTsKKyAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgICAgZmxvYXQgb3V0cHV0
RWxlbWVudHNbXSA9CisgICAgeworICAgICAgICAxMC4wZiwgMTUuMGYsCisgICAgICAgIDE0LjBm
LCAyMS4wZiwKKyAgICAgICAgMjIuMGYsIDMzLjBmCisgICAgfTsKKyAgICAvLyBjbGFuZy1mb3Jt
YXQgb24KKyAgICBzdGQ6OnZlY3RvcjxmbG9hdD4gcmVzdWx0KG91dHB1dEVsZW1lbnRzLCBvdXRw
dXRFbGVtZW50cyArIDYpOworICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Q29sdW1uTWFqb3JNYXRy
aXhGb3VuZEluQVNUKHJlc3VsdCkpOworfQorCisvLyBUZXN0IHRoYXQgZm9sZGluZyBiaXQgc2hp
ZnQgbGVmdCB3aXRoIG5vbi1tYXRjaGluZyBzaWduZWRuZXNzIHdvcmtzLgorVEVTVF9GKENvbnN0
YW50Rm9sZGluZ1Rlc3QsIEZvbGRCaXRTaGlmdExlZnREaWZmZXJlbnRTaWduZWRuZXNzKQorewor
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24g
MzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAg
Im91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAg
ICAgICJ7XG4iCisgICAgICAgICIgICAgdWludCB1ID0gMHhmZmZmZmZmZnUgPDwgMzE7XG4iCisg
ICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCh1KTtcbiIKKyAgICAgICAgIn1cbiI7Cisg
ICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Rm91bmRJ
bkFTVCgweDgwMDAwMDAwdSkpOworfQorCisvLyBUZXN0IHRoYXQgZm9sZGluZyBiaXQgc2hpZnQg
cmlnaHQgd2l0aCBub24tbWF0Y2hpbmcgc2lnbmVkbmVzcyB3b3Jrcy4KK1RFU1RfRihDb25zdGFu
dEZvbGRpbmdUZXN0LCBGb2xkQml0U2hpZnRSaWdodERpZmZlcmVudFNpZ25lZG5lc3MpCit7Cisg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAz
MDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAi
b3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAg
ICAgIntcbiIKKyAgICAgICAgIiAgICB1aW50IHUgPSAweGZmZmZmZmZmdSA+PiAzMDtcbiIKKyAg
ICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KHUpO1xuIgorICAgICAgICAifVxuIjsKKyAg
ICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX1RSVUUoY29uc3RhbnRGb3VuZElu
QVNUKDB4M3UpKTsKK30KKworLy8gVGVzdCB0aGF0IGZvbGRpbmcgc2lnbmVkIGJpdCBzaGlmdCBy
aWdodCBleHRlbmRzIHRoZSBzaWduIGJpdC4KKy8vIEVTU0wgMy4wMC42IHNlY3Rpb24gNS45IEV4
cHJlc3Npb25zLgorVEVTVF9GKENvbnN0YW50Rm9sZGluZ1Rlc3QsIEZvbGRCaXRTaGlmdFJpZ2h0
RXh0ZW5kU2lnbkJpdCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0K
KyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJ2
b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGNvbnN0IGludCBpID0g
MHg4ZmZmZTAwMCA+PiA2O1xuIgorICAgICAgICAiICAgIHVpbnQgdSA9IHVpbnQoaSk7IgorICAg
ICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQodSk7XG4iCisgICAgICAgICJ9XG4iOworICAg
IGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICAvLyBUaGUgYml0cyBvZiB0aGUgb3BlcmFuZCBh
cmUgMHg4ZmZmZTAwMCA9IDEwMDAgMTExMSAxMTExIDExMTEgMTExMCAwMDAwIDAwMDAgMDAwMAor
ICAgIC8vIEFmdGVyIHNoaWZ0aW5nLCB0aGV5IGJlY29tZSAgICAgICAgICAgICAgMTExMSAxMTEw
IDAwMTEgMTExMSAxMTExIDExMTEgMTAwMCAwMDAwID0gMHhmZTNmZmY4MAorICAgIEFTU0VSVF9U
UlVFKGNvbnN0YW50Rm91bmRJbkFTVCgweGZlM2ZmZjgwdSkpOworfQorCisvLyBTaWduZWQgYml0
IHNoaWZ0IGxlZnQgc2hvdWxkIGludGVycHJldCBpdHMgb3BlcmFuZCBhcyBhIGJpdCBwYXR0ZXJu
LiBBcyBhIGNvbnNlcXVlbmNlIGEgbnVtYmVyCisvLyBtYXkgdHVybiBmcm9tIHBvc2l0aXZlIHRv
IG5lZ2F0aXZlIHdoZW4gc2hpZnRlZCBsZWZ0LgorLy8gRVNTTCAzLjAwLjYgc2VjdGlvbiA1Ljkg
RXhwcmVzc2lvbnMuCitURVNUX0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwgRm9sZEJpdFNoaWZ0TGVm
dEludGVycHJldGVkQXNCaXRQYXR0ZXJuKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFk
ZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIK
KyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgY29u
c3QgaW50IGkgPSAweDFmZmZmZmZmIDw8IDM7XG4iCisgICAgICAgICIgICAgdWludCB1ID0gdWlu
dChpKTsiCisgICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCh1KTtcbiIKKyAgICAgICAg
In1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VSVF9UUlVFKGNvbnN0
YW50Rm91bmRJbkFTVCgweGZmZmZmZmY4dSkpOworfQorCisvLyBUZXN0IHRoYXQgZGl2aWRpbmcg
dGhlIG1pbmltdW0gc2lnbmVkIGludGVnZXIgYnkgLTEgd29ya3MuCisvLyBFU1NMIDMuMDAuNiBz
ZWN0aW9uIDQuMS4zIEludGVnZXJzOgorLy8gIkhvd2V2ZXIsIGZvciB0aGUgY2FzZSB3aGVyZSB0
aGUgbWluaW11bSByZXByZXNlbnRhYmxlIHZhbHVlIGlzIGRpdmlkZWQgYnkgLTEsIGl0IGlzIGFs
bG93ZWQgdG8KKy8vIHJldHVybiBlaXRoZXIgdGhlIG1pbmltdW0gcmVwcmVzZW50YWJsZSB2YWx1
ZSBvciB0aGUgbWF4aW11bSByZXByZXNlbnRhYmxlIHZhbHVlLiIKK1RFU1RfRihDb25zdGFudEZv
bGRpbmdUZXN0LCBGb2xkRGl2aWRlTWluaW11bUludGVnZXJCeU1pbnVzT25lKQoreworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVz
XG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2
ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7
XG4iCisgICAgICAgICIgICAgaW50IGkgPSAweDgwMDAwMDAwIC8gKC0xKTtcbiIKKyAgICAgICAg
IiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KGkpO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21w
aWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX1RSVUUoY29uc3RhbnRGb3VuZEluQVNUKDB4
N2ZmZmZmZmYpIHx8IGNvbnN0YW50Rm91bmRJbkFTVCgtMHg3ZmZmZmZmZiAtIDEpKTsKK30KKwor
Ly8gVGVzdCB0aGF0IGZvbGRpbmcgYW4gdW5zaWduZWQgaW50ZWdlciBhZGRpdGlvbiB0aGF0IG92
ZXJmbG93cyB3b3Jrcy4KKy8vIEVTU0wgMy4wMC42IHNlY3Rpb24gNC4xLjMgSW50ZWdlcnM6Cisv
LyAiRm9yIGFsbCBwcmVjaXNpb25zLCBvcGVyYXRpb25zIHJlc3VsdGluZyBpbiBvdmVyZmxvdyBv
ciB1bmRlcmZsb3cgd2lsbCBub3QgY2F1c2UgYW55IGV4Y2VwdGlvbiwKKy8vIG5vciB3aWxsIHRo
ZXkgc2F0dXJhdGUsIHJhdGhlciB0aGV5IHdpbGwgJ3dyYXAnIHRvIHlpZWxkIHRoZSBsb3ctb3Jk
ZXIgbiBiaXRzIG9mIHRoZSByZXN1bHQgd2hlcmUKKy8vIG4gaXMgdGhlIHNpemUgaW4gYml0cyBv
ZiB0aGUgaW50ZWdlci4iCitURVNUX0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwgRm9sZFVuc2lnbmVk
SW50ZWdlckFkZE92ZXJmbG93KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJp
bmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAg
ICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgdWludCB1ID0g
MHhmZmZmZmZmZnUgKyA0M3U7XG4iCisgICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCh1
KTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFT
U0VSVF9UUlVFKGNvbnN0YW50Rm91bmRJbkFTVCg0MnUpKTsKK30KKworLy8gVGVzdCB0aGF0IGZv
bGRpbmcgYSBzaWduZWQgaW50ZWdlciBhZGRpdGlvbiB0aGF0IG92ZXJmbG93cyB3b3Jrcy4KKy8v
IEVTU0wgMy4wMC42IHNlY3Rpb24gNC4xLjMgSW50ZWdlcnM6CisvLyAiRm9yIGFsbCBwcmVjaXNp
b25zLCBvcGVyYXRpb25zIHJlc3VsdGluZyBpbiBvdmVyZmxvdyBvciB1bmRlcmZsb3cgd2lsbCBu
b3QgY2F1c2UgYW55IGV4Y2VwdGlvbiwKKy8vIG5vciB3aWxsIHRoZXkgc2F0dXJhdGUsIHJhdGhl
ciB0aGV5IHdpbGwgJ3dyYXAnIHRvIHlpZWxkIHRoZSBsb3ctb3JkZXIgbiBiaXRzIG9mIHRoZSBy
ZXN1bHQgd2hlcmUKKy8vIG4gaXMgdGhlIHNpemUgaW4gYml0cyBvZiB0aGUgaW50ZWdlci4iCitU
RVNUX0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwgRm9sZFNpZ25lZEludGVnZXJBZGRPdmVyZmxvdykK
K3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJz
aW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAg
ICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgor
ICAgICAgICAie1xuIgorICAgICAgICAiICAgIGludCBpID0gMHg3ZmZmZmZmZiArIDQ7XG4iCisg
ICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNChpKTtcbiIKKyAgICAgICAgIn1cbiI7Cisg
ICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Rm91bmRJ
bkFTVCgtMHg3ZmZmZmZmZCkpOworfQorCisvLyBUZXN0IHRoYXQgZm9sZGluZyBhbiB1bnNpZ25l
ZCBpbnRlZ2VyIHN1YnRyYWN0aW9uIHRoYXQgb3ZlcmZsb3dzIHdvcmtzLgorLy8gRVNTTCAzLjAw
LjYgc2VjdGlvbiA0LjEuMyBJbnRlZ2VyczoKKy8vICJGb3IgYWxsIHByZWNpc2lvbnMsIG9wZXJh
dGlvbnMgcmVzdWx0aW5nIGluIG92ZXJmbG93IG9yIHVuZGVyZmxvdyB3aWxsIG5vdCBjYXVzZSBh
bnkgZXhjZXB0aW9uLAorLy8gbm9yIHdpbGwgdGhleSBzYXR1cmF0ZSwgcmF0aGVyIHRoZXkgd2ls
bCAnd3JhcCcgdG8geWllbGQgdGhlIGxvdy1vcmRlciBuIGJpdHMgb2YgdGhlIHJlc3VsdCB3aGVy
ZQorLy8gbiBpcyB0aGUgc2l6ZSBpbiBiaXRzIG9mIHRoZSBpbnRlZ2VyLiIKK1RFU1RfRihDb25z
dGFudEZvbGRpbmdUZXN0LCBGb2xkVW5zaWduZWRJbnRlZ2VyRGlmZk92ZXJmbG93KQoreworICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAw
IGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91
dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAg
ICJ7XG4iCisgICAgICAgICIgICAgdWludCB1ID0gMHUgLSA1dTtcbiIKKyAgICAgICAgIiAgICBt
eV9GcmFnQ29sb3IgPSB2ZWM0KHUpO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNo
YWRlclN0cmluZyk7CisgICAgQVNTRVJUX1RSVUUoY29uc3RhbnRGb3VuZEluQVNUKDB4ZmZmZmZm
ZmJ1KSk7Cit9CisKKy8vIFRlc3QgdGhhdCBmb2xkaW5nIGEgc2lnbmVkIGludGVnZXIgc3VidHJh
Y3Rpb24gdGhhdCBvdmVyZmxvd3Mgd29ya3MuCisvLyBFU1NMIDMuMDAuNiBzZWN0aW9uIDQuMS4z
IEludGVnZXJzOgorLy8gIkZvciBhbGwgcHJlY2lzaW9ucywgb3BlcmF0aW9ucyByZXN1bHRpbmcg
aW4gb3ZlcmZsb3cgb3IgdW5kZXJmbG93IHdpbGwgbm90IGNhdXNlIGFueSBleGNlcHRpb24sCisv
LyBub3Igd2lsbCB0aGV5IHNhdHVyYXRlLCByYXRoZXIgdGhleSB3aWxsICd3cmFwJyB0byB5aWVs
ZCB0aGUgbG93LW9yZGVyIG4gYml0cyBvZiB0aGUgcmVzdWx0IHdoZXJlCisvLyBuIGlzIHRoZSBz
aXplIGluIGJpdHMgb2YgdGhlIGludGVnZXIuIgorVEVTVF9GKENvbnN0YW50Rm9sZGluZ1Rlc3Qs
IEZvbGRTaWduZWRJbnRlZ2VyRGlmZk92ZXJmbG93KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xv
cjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIg
ICAgaW50IGkgPSAtMHg3ZmZmZmZmZiAtIDc7XG4iCisgICAgICAgICIgICAgbXlfRnJhZ0NvbG9y
ID0gdmVjNChpKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcp
OworICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Rm91bmRJbkFTVCgweDdmZmZmZmZhKSk7Cit9CisK
Ky8vIFRlc3QgdGhhdCBmb2xkaW5nIGFuIHVuc2lnbmVkIGludGVnZXIgbXVsdGlwbGljYXRpb24g
dGhhdCBvdmVyZmxvd3Mgd29ya3MuCisvLyBFU1NMIDMuMDAuNiBzZWN0aW9uIDQuMS4zIEludGVn
ZXJzOgorLy8gIkZvciBhbGwgcHJlY2lzaW9ucywgb3BlcmF0aW9ucyByZXN1bHRpbmcgaW4gb3Zl
cmZsb3cgb3IgdW5kZXJmbG93IHdpbGwgbm90IGNhdXNlIGFueSBleGNlcHRpb24sCisvLyBub3Ig
d2lsbCB0aGV5IHNhdHVyYXRlLCByYXRoZXIgdGhleSB3aWxsICd3cmFwJyB0byB5aWVsZCB0aGUg
bG93LW9yZGVyIG4gYml0cyBvZiB0aGUgcmVzdWx0IHdoZXJlCisvLyBuIGlzIHRoZSBzaXplIGlu
IGJpdHMgb2YgdGhlIGludGVnZXIuIgorVEVTVF9GKENvbnN0YW50Rm9sZGluZ1Rlc3QsIEZvbGRV
bnNpZ25lZEludGVnZXJNdWx0aXBseU92ZXJmbG93KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xv
cjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIg
ICAgdWludCB1ID0gMHhmZmZmZmZmZnUgKiAxMHU7XG4iCisgICAgICAgICIgICAgbXlfRnJhZ0Nv
bG9yID0gdmVjNCh1KTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJp
bmcpOworICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Rm91bmRJbkFTVCgweGZmZmZmZmY2dSkpOwor
fQorCisvLyBUZXN0IHRoYXQgZm9sZGluZyBhIHNpZ25lZCBpbnRlZ2VyIG11bHRpcGxpY2F0aW9u
IHRoYXQgb3ZlcmZsb3dzIHdvcmtzLgorLy8gRVNTTCAzLjAwLjYgc2VjdGlvbiA0LjEuMyBJbnRl
Z2VyczoKKy8vICJGb3IgYWxsIHByZWNpc2lvbnMsIG9wZXJhdGlvbnMgcmVzdWx0aW5nIGluIG92
ZXJmbG93IG9yIHVuZGVyZmxvdyB3aWxsIG5vdCBjYXVzZSBhbnkgZXhjZXB0aW9uLAorLy8gbm9y
IHdpbGwgdGhleSBzYXR1cmF0ZSwgcmF0aGVyIHRoZXkgd2lsbCAnd3JhcCcgdG8geWllbGQgdGhl
IGxvdy1vcmRlciBuIGJpdHMgb2YgdGhlIHJlc3VsdCB3aGVyZQorLy8gbiBpcyB0aGUgc2l6ZSBp
biBiaXRzIG9mIHRoZSBpbnRlZ2VyLiIKK1RFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBGb2xk
U2lnbmVkSW50ZWdlck11bHRpcGx5T3ZlcmZsb3cpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcg
JnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9y
O1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAg
ICBpbnQgaSA9IDB4N2ZmZmZmZmYgKiA0MjtcbiIKKyAgICAgICAgIiAgICBteV9GcmFnQ29sb3Ig
PSB2ZWM0KGkpO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7
CisgICAgQVNTRVJUX1RSVUUoY29uc3RhbnRGb3VuZEluQVNUKC00MikpOworfQorCisvLyBUZXN0
IHRoYXQgZm9sZGluZyBvZiBuZWdhdGluZyB0aGUgbWluaW11bSByZXByZXNlbnRhYmxlIGludGVn
ZXIgd29ya3MuIE5vdGUgdGhhdCBpbiB0aGUgdGVzdAorLy8gIjB4ODAwMDAwMDAiIGlzIGEgbmVn
YXRpdmUgbGl0ZXJhbCwgYW5kIHRoZSBtaW51cyBzaWduIGJlZm9yZSBpdCBpcyB0aGUgbmVnYXRp
b24gb3BlcmF0b3IuCisvLyBFU1NMIDMuMDAuNiBzZWN0aW9uIDQuMS4zIEludGVnZXJzOgorLy8g
IkZvciBhbGwgcHJlY2lzaW9ucywgb3BlcmF0aW9ucyByZXN1bHRpbmcgaW4gb3ZlcmZsb3cgb3Ig
dW5kZXJmbG93IHdpbGwgbm90IGNhdXNlIGFueSBleGNlcHRpb24sCisvLyBub3Igd2lsbCB0aGV5
IHNhdHVyYXRlLCByYXRoZXIgdGhleSB3aWxsICd3cmFwJyB0byB5aWVsZCB0aGUgbG93LW9yZGVy
IG4gYml0cyBvZiB0aGUgcmVzdWx0IHdoZXJlCisvLyBuIGlzIHRoZSBzaXplIGluIGJpdHMgb2Yg
dGhlIGludGVnZXIuIgorVEVTVF9GKENvbnN0YW50Rm9sZGluZ1Rlc3QsIEZvbGRNaW5pbXVtU2ln
bmVkSW50ZWdlck5lZ2F0aW9uKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJp
bmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAg
ICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgaW50IGkgPSAt
MHg4MDAwMDAwMDtcbiIKKyAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KGkpO1xuIgor
ICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgLy8gTmVnYXRp
bmcgdGhlIG1pbmltdW0gc2lnbmVkIGludGVnZXIgb3ZlcmZsb3dzIHRoZSBwb3NpdGl2ZSByYW5n
ZSwgc28gaXQgd3JhcHMgYmFjayB0byBpdHNlbGYuCisgICAgQVNTRVJUX1RSVUUoY29uc3RhbnRG
b3VuZEluQVNUKC0weDdmZmZmZmZmIC0gMSkpOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0RlYnVnU2hhZGVyUHJlY2lzaW9uX3Rlc3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21w
aWxlcl90ZXN0cy9EZWJ1Z1NoYWRlclByZWNpc2lvbl90ZXN0LmNwcAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvRGVidWdT
aGFkZXJQcmVjaXNpb25fdGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDQ1IEBA
CisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKy8vIERlYnVnU2hhZGVyUHJlY2lzaW9uX3Rlc3QuY3BwOgorLy8gICBU
ZXN0cyBmb3Igd3JpdGluZyB0aGUgY29kZSBmb3Igc2hhZGVyIHByZWNpc2lvbiBlbXVsYXRpb24u
CisvLworCisjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgor
I2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgorI2luY2x1ZGUgInRlc3RzL3Rlc3RfdXRp
bHMvY29tcGlsZXJfdGVzdC5oIgorCitjbGFzcyBEZWJ1Z1NoYWRlclByZWNpc2lvblRlc3QgOiBw
dWJsaWMgTWF0Y2hPdXRwdXRDb2RlVGVzdAoreworICBwdWJsaWM6CisgICAgRGVidWdTaGFkZXJQ
cmVjaXNpb25UZXN0KCkgOiBNYXRjaE91dHB1dENvZGVUZXN0KEdMX0ZSQUdNRU5UX1NIQURFUiwg
MCwgU0hfRVNTTF9PVVRQVVQpCisgICAgeworICAgICAgICBhZGRPdXRwdXRUeXBlKFNIX0dMU0xf
Q09NUEFUSUJJTElUWV9PVVRQVVQpOworI2lmIGRlZmluZWQoQU5HTEVfRU5BQkxFX0hMU0wpCisg
ICAgICAgIGFkZE91dHB1dFR5cGUoU0hfSExTTF80XzFfT1VUUFVUKTsKKyNlbmRpZgorICAgICAg
ICBnZXRSZXNvdXJjZXMoKS0+V0VCR0xfZGVidWdfc2hhZGVyX3ByZWNpc2lvbiA9IDE7CisgICAg
fQorCisgIHByb3RlY3RlZDoKKyAgICBib29sIGZvdW5kSW5BbGxHTFNMQ29kZShjb25zdCBjaGFy
ICpzdHIpCisgICAgeworICAgICAgICByZXR1cm4gZm91bmRJbkNvZGUoU0hfR0xTTF9DT01QQVRJ
QklMSVRZX09VVFBVVCwgc3RyKSAmJiBmb3VuZEluQ29kZShTSF9FU1NMX09VVFBVVCwgc3RyKTsK
KyAgICB9CisKKyAgICBib29sIGZvdW5kSW5ITFNMQ29kZShjb25zdCBjaGFyICpzdHJpbmdUb0Zp
bmQpIGNvbnN0CisgICAgeworI2lmIGRlZmluZWQoQU5HTEVfRU5BQkxFX0hMU0wpCisgICAgICAg
IHJldHVybiBmb3VuZEluQ29kZShTSF9ITFNMXzRfMV9PVVRQVVQsIHN0cmluZ1RvRmluZCk7Cisj
ZWxzZQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorICAgIH0KK307CisKK2NsYXNzIE5v
RGVidWdTaGFkZXJQcmVjaXNpb25UZXN0IDogcHVibGljIE1hdGNoT3V0cHV0Q29kZVRlc3QKK3sK
KyAgcHVibGljOgorICAgIE5vRGVidWdTaGFkZXJQcmVjaXNpb25UZXN0KCkKKyAgICAgICAgOiBN
YXRjaE91dHB1dENvZGVUZXN0KEdMX0ZSQUdNRU5UX1NIQURFUiwgMCwgU0hfR0xTTF9DT01QQVRJ
QklMSVRZX09VVFBVVCkKKyAgICB7CisgICAgfQorfTsKKworVEVTVF9GKERlYnVnU2hhZGVyUHJl
Y2lzaW9uVGVzdCwgUm91bmRpbmdGdW5jdGlvbnNEZWZpbmVkKQoreworICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
XG4iCisgICAgICAgICJ1bmlmb3JtIGZsb2F0IHU7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7
XG4iCisgICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHUpO1xuIgorICAgICAgICAifVxu
IjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkVT
U0xDb2RlKCJoaWdocCBmbG9hdCBhbmdsZV9mcm0oaW4gaGlnaHAgZmxvYXQiKSk7CisgICAgQVNT
RVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKCJoaWdocCB2ZWMyIGFuZ2xlX2ZybShpbiBoaWdocCB2
ZWMyIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgiaGlnaHAgdmVjMyBhbmds
ZV9mcm0oaW4gaGlnaHAgdmVjMyIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluRVNTTENvZGUo
ImhpZ2hwIHZlYzQgYW5nbGVfZnJtKGluIGhpZ2hwIHZlYzQiKSk7CisgICAgQVNTRVJUX1RSVUUo
Zm91bmRJbkVTU0xDb2RlKCJoaWdocCBtYXQyIGFuZ2xlX2ZybShpbiBoaWdocCBtYXQyIikpOwor
ICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgiaGlnaHAgbWF0MyBhbmdsZV9mcm0oaW4g
aGlnaHAgbWF0MyIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluRVNTTENvZGUoImhpZ2hwIG1h
dDQgYW5nbGVfZnJtKGluIGhpZ2hwIG1hdDQiKSk7CisKKyAgICBBU1NFUlRfVFJVRShmb3VuZElu
RVNTTENvZGUoImhpZ2hwIGZsb2F0IGFuZ2xlX2ZybChpbiBoaWdocCBmbG9hdCIpKTsKKyAgICBB
U1NFUlRfVFJVRShmb3VuZEluRVNTTENvZGUoImhpZ2hwIHZlYzIgYW5nbGVfZnJsKGluIGhpZ2hw
IHZlYzIiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKCJoaWdocCB2ZWMzIGFu
Z2xlX2ZybChpbiBoaWdocCB2ZWMzIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5FU1NMQ29k
ZSgiaGlnaHAgdmVjNCBhbmdsZV9mcmwoaW4gaGlnaHAgdmVjNCIpKTsKKyAgICBBU1NFUlRfVFJV
RShmb3VuZEluRVNTTENvZGUoImhpZ2hwIG1hdDIgYW5nbGVfZnJsKGluIGhpZ2hwIG1hdDIiKSk7
CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKCJoaWdocCBtYXQzIGFuZ2xlX2ZybChp
biBoaWdocCBtYXQzIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgiaGlnaHAg
bWF0NCBhbmdsZV9mcmwoaW4gaGlnaHAgbWF0NCIpKTsKKworICAgIEFTU0VSVF9UUlVFKGZvdW5k
SW5HTFNMQ29kZSgiZmxvYXQgYW5nbGVfZnJtKGluIGZsb2F0IikpOworICAgIEFTU0VSVF9UUlVF
KGZvdW5kSW5HTFNMQ29kZSgidmVjMiBhbmdsZV9mcm0oaW4gdmVjMiIpKTsKKyAgICBBU1NFUlRf
VFJVRShmb3VuZEluR0xTTENvZGUoInZlYzMgYW5nbGVfZnJtKGluIHZlYzMiKSk7CisgICAgQVNT
RVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKCJ2ZWM0IGFuZ2xlX2ZybShpbiB2ZWM0IikpOworICAg
IEFTU0VSVF9UUlVFKGZvdW5kSW5HTFNMQ29kZSgibWF0MiBhbmdsZV9mcm0oaW4gbWF0MiIpKTsK
KyAgICBBU1NFUlRfVFJVRShmb3VuZEluR0xTTENvZGUoIm1hdDMgYW5nbGVfZnJtKGluIG1hdDMi
KSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKCJtYXQ0IGFuZ2xlX2ZybShpbiBt
YXQ0IikpOworCisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKCJmbG9hdCBhbmdsZV9m
cmwoaW4gZmxvYXQiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKCJ2ZWMyIGFu
Z2xlX2ZybChpbiB2ZWMyIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5HTFNMQ29kZSgidmVj
MyBhbmdsZV9mcmwoaW4gdmVjMyIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluR0xTTENvZGUo
InZlYzQgYW5nbGVfZnJsKGluIHZlYzQiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xD
b2RlKCJtYXQyIGFuZ2xlX2ZybChpbiBtYXQyIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5H
TFNMQ29kZSgibWF0MyBhbmdsZV9mcmwoaW4gbWF0MyIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3Vu
ZEluR0xTTENvZGUoIm1hdDQgYW5nbGVfZnJsKGluIG1hdDQiKSk7CisKKyAgICBBU1NFUlRfVFJV
RShmb3VuZEluSExTTENvZGUoImZsb2F0MSBhbmdsZV9mcm0oZmxvYXQxIikpOworICAgIEFTU0VS
VF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiZmxvYXQyIGFuZ2xlX2ZybShmbG9hdDIiKSk7CisgICAg
QVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJmbG9hdDMgYW5nbGVfZnJtKGZsb2F0MyIpKTsK
KyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoImZsb2F0NCBhbmdsZV9mcm0oZmxvYXQ0
IikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiZmxvYXQyeDIgYW5nbGVfZnJt
KGZsb2F0MngyIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiZmxvYXQzeDMg
YW5nbGVfZnJtKGZsb2F0M3gzIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgi
ZmxvYXQ0eDQgYW5nbGVfZnJtKGZsb2F0NHg0IikpOworCisgICAgQVNTRVJUX1RSVUUoZm91bmRJ
bkhMU0xDb2RlKCJmbG9hdDEgYW5nbGVfZnJsKGZsb2F0MSIpKTsKKyAgICBBU1NFUlRfVFJVRShm
b3VuZEluSExTTENvZGUoImZsb2F0MiBhbmdsZV9mcmwoZmxvYXQyIikpOworICAgIEFTU0VSVF9U
UlVFKGZvdW5kSW5ITFNMQ29kZSgiZmxvYXQzIGFuZ2xlX2ZybChmbG9hdDMiKSk7CisgICAgQVNT
RVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJmbG9hdDQgYW5nbGVfZnJsKGZsb2F0NCIpKTsKKyAg
ICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoImZsb2F0MngyIGFuZ2xlX2ZybChmbG9hdDJ4
MiIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoImZsb2F0M3gzIGFuZ2xlX2Zy
bChmbG9hdDN4MyIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoImZsb2F0NHg0
IGFuZ2xlX2ZybChmbG9hdDR4NCIpKTsKKworICAgIC8vIENoZWNrIHRoYXQgRVNTTCAzLjAwIHJv
dW5kaW5nIGZ1bmN0aW9ucyBmb3Igbm9uLXNxdWFyZSBtYXRyaWNlcyBhcmUgbm90IGRlZmluZWQu
CisgICAgQVNTRVJUX1RSVUUobm90Rm91bmRJbkNvZGUoIm1hdDJ4IikpOworICAgIEFTU0VSVF9U
UlVFKG5vdEZvdW5kSW5Db2RlKCJtYXQzeCIpKTsKKyAgICBBU1NFUlRfVFJVRShub3RGb3VuZElu
Q29kZSgibWF0NHgiKSk7Cit9CisKKy8vIFRlc3QgdGhhdCBhbGwgRVNTTCAzLjAwIHNoYWRlcnMg
Z2V0IHJvdW5kaW5nIGZ1bmN0aW9uIGRlZmluaXRpb25zIGZvciBub24tc3F1YXJlIG1hdHJpY2Vz
LgorVEVTVF9GKERlYnVnU2hhZGVyUHJlY2lzaW9uVGVzdCwgTm9uU3F1YXJlTWF0cml4Um91bmRp
bmdGdW5jdGlvbnNEZWZpbmVkRVMzKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJT
dHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gZmxvYXQgdTtcbiIKKyAgICAgICAg
Im91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAg
ICAgICAgIiAgIG15X0ZyYWdDb2xvciA9IHZlYzQodSk7XG4iCisgICAgICAgICJ9XG4iOworICAg
IGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluRVNTTENvZGUo
ImhpZ2hwIG1hdDJ4MyBhbmdsZV9mcm0oaW4gaGlnaHAgbWF0MngzIikpOworICAgIEFTU0VSVF9U
UlVFKGZvdW5kSW5FU1NMQ29kZSgiaGlnaHAgbWF0Mng0IGFuZ2xlX2ZybShpbiBoaWdocCBtYXQy
eDQiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKCJoaWdocCBtYXQzeDIgYW5n
bGVfZnJtKGluIGhpZ2hwIG1hdDN4MiIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluRVNTTENv
ZGUoImhpZ2hwIG1hdDN4NCBhbmdsZV9mcm0oaW4gaGlnaHAgbWF0M3g0IikpOworICAgIEFTU0VS
VF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgiaGlnaHAgbWF0NHgyIGFuZ2xlX2ZybShpbiBoaWdocCBt
YXQ0eDIiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKCJoaWdocCBtYXQ0eDMg
YW5nbGVfZnJtKGluIGhpZ2hwIG1hdDR4MyIpKTsKKworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5F
U1NMQ29kZSgiaGlnaHAgbWF0MngzIGFuZ2xlX2ZybChpbiBoaWdocCBtYXQyeDMiKSk7CisgICAg
QVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKCJoaWdocCBtYXQyeDQgYW5nbGVfZnJsKGluIGhp
Z2hwIG1hdDJ4NCIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluRVNTTENvZGUoImhpZ2hwIG1h
dDN4MiBhbmdsZV9mcmwoaW4gaGlnaHAgbWF0M3gyIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5k
SW5FU1NMQ29kZSgiaGlnaHAgbWF0M3g0IGFuZ2xlX2ZybChpbiBoaWdocCBtYXQzeDQiKSk7Cisg
ICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKCJoaWdocCBtYXQ0eDIgYW5nbGVfZnJsKGlu
IGhpZ2hwIG1hdDR4MiIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluRVNTTENvZGUoImhpZ2hw
IG1hdDR4MyBhbmdsZV9mcmwoaW4gaGlnaHAgbWF0NHgzIikpOworCisgICAgQVNTRVJUX1RSVUUo
Zm91bmRJbkdMU0xDb2RlKCJtYXQyeDMgYW5nbGVfZnJtKGluIG1hdDJ4MyIpKTsKKyAgICBBU1NF
UlRfVFJVRShmb3VuZEluR0xTTENvZGUoIm1hdDJ4NCBhbmdsZV9mcm0oaW4gbWF0Mng0IikpOwor
ICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5HTFNMQ29kZSgibWF0M3gyIGFuZ2xlX2ZybShpbiBtYXQz
eDIiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKCJtYXQzeDQgYW5nbGVfZnJt
KGluIG1hdDN4NCIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluR0xTTENvZGUoIm1hdDR4MiBh
bmdsZV9mcm0oaW4gbWF0NHgyIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5HTFNMQ29kZSgi
bWF0NHgzIGFuZ2xlX2ZybShpbiBtYXQ0eDMiKSk7CisKKyAgICBBU1NFUlRfVFJVRShmb3VuZElu
R0xTTENvZGUoIm1hdDJ4MyBhbmdsZV9mcmwoaW4gbWF0MngzIikpOworICAgIEFTU0VSVF9UUlVF
KGZvdW5kSW5HTFNMQ29kZSgibWF0Mng0IGFuZ2xlX2ZybChpbiBtYXQyeDQiKSk7CisgICAgQVNT
RVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKCJtYXQzeDIgYW5nbGVfZnJsKGluIG1hdDN4MiIpKTsK
KyAgICBBU1NFUlRfVFJVRShmb3VuZEluR0xTTENvZGUoIm1hdDN4NCBhbmdsZV9mcmwoaW4gbWF0
M3g0IikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5HTFNMQ29kZSgibWF0NHgyIGFuZ2xlX2Zy
bChpbiBtYXQ0eDIiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKCJtYXQ0eDMg
YW5nbGVfZnJsKGluIG1hdDR4MyIpKTsKKworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29k
ZSgiZmxvYXQyeDMgYW5nbGVfZnJtKGZsb2F0MngzIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5k
SW5ITFNMQ29kZSgiZmxvYXQyeDQgYW5nbGVfZnJtKGZsb2F0Mng0IikpOworICAgIEFTU0VSVF9U
UlVFKGZvdW5kSW5ITFNMQ29kZSgiZmxvYXQzeDIgYW5nbGVfZnJtKGZsb2F0M3gyIikpOworICAg
IEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiZmxvYXQzeDQgYW5nbGVfZnJtKGZsb2F0M3g0
IikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiZmxvYXQ0eDIgYW5nbGVfZnJt
KGZsb2F0NHgyIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiZmxvYXQ0eDMg
YW5nbGVfZnJtKGZsb2F0NHgzIikpOworCisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2Rl
KCJmbG9hdDJ4MyBhbmdsZV9mcmwoZmxvYXQyeDMiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJ
bkhMU0xDb2RlKCJmbG9hdDJ4NCBhbmdsZV9mcmwoZmxvYXQyeDQiKSk7CisgICAgQVNTRVJUX1RS
VUUoZm91bmRJbkhMU0xDb2RlKCJmbG9hdDN4MiBhbmdsZV9mcmwoZmxvYXQzeDIiKSk7CisgICAg
QVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJmbG9hdDN4NCBhbmdsZV9mcmwoZmxvYXQzeDQi
KSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJmbG9hdDR4MiBhbmdsZV9mcmwo
ZmxvYXQ0eDIiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJmbG9hdDR4MyBh
bmdsZV9mcmwoZmxvYXQ0eDMiKSk7Cit9CisKK1RFU1RfRihEZWJ1Z1NoYWRlclByZWNpc2lvblRl
c3QsIFByYWdtYURpc2FibGVzRW11bGF0aW9uKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZz
aGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ByYWdtYSB3ZWJnbF9kZWJ1Z19zaGFkZXJfcHJlY2lz
aW9uKG9mZilcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAg
ICAidW5pZm9ybSBmbG9hdCB1O1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAg
ICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh1KTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29t
cGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VSVF9UUlVFKG5vdEZvdW5kSW5Db2RlKCJhbmds
ZV9mcm0iKSk7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZ1ByYWdtYU9uID0K
KyAgICAgICAgIiNwcmFnbWEgd2ViZ2xfZGVidWdfc2hhZGVyX3ByZWNpc2lvbihvbilcbiIKKyAg
ICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidW5pZm9ybSBmbG9h
dCB1O1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0Nv
bG9yID0gdmVjNCh1KTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJp
bmdQcmFnbWFPbik7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkNvZGUoImFuZ2xlX2ZybSIpKTsK
K30KKworLy8gRW11bGF0aW9uIGNhbid0IGJlIHRvZ2dsZWQgb24gZm9yIG9ubHkgYSBwYXJ0IG9m
IGEgc2hhZGVyLgorLy8gT25seSB0aGUgbGFzdCBwcmFnbWEgaW4gdGhlIHNoYWRlciBoYXMgYW4g
ZWZmZWN0LgorVEVTVF9GKERlYnVnU2hhZGVyUHJlY2lzaW9uVGVzdCwgTXVsdGlwbGVQcmFnbWFz
KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3By
YWdtYSB3ZWJnbF9kZWJ1Z19zaGFkZXJfcHJlY2lzaW9uKG9mZilcbiIKKyAgICAgICAgInByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidW5pZm9ybSBmbG9hdCB1O1xuIgorICAg
ICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh1
KTtcbiIKKyAgICAgICAgIn1cbiIKKyAgICAgICAgIiNwcmFnbWEgd2ViZ2xfZGVidWdfc2hhZGVy
X3ByZWNpc2lvbihvbilcbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VS
VF9UUlVFKGZvdW5kSW5Db2RlKCJhbmdsZV9mcm0iKSk7Cit9CisKK1RFU1RfRihOb0RlYnVnU2hh
ZGVyUHJlY2lzaW9uVGVzdCwgSGVscGVyc1dyaXR0ZW5Pbmx5V2l0aEV4dGVuc2lvbikKK3sKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidW5pZm9ybSBmbG9hdCB1O1xuIgorICAgICAgICAi
dm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh1KTtcbiIK
KyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VSVF9G
QUxTRShmb3VuZEluQ29kZSgiYW5nbGVfZnJtIikpOworfQorCitURVNUX0YoTm9EZWJ1Z1NoYWRl
clByZWNpc2lvblRlc3QsIFByYWdtYUhhc0VmZmVjdHNPbmx5V2l0aEV4dGVuc2lvbikKK3sKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiNwcmFnbWEgd2Vi
Z2xfZGVidWdfc2hhZGVyX3ByZWNpc2lvbihvbilcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0O1xuIgorICAgICAgICAidW5pZm9ybSBmbG9hdCB1O1xuIgorICAgICAgICAidm9p
ZCBtYWluKCkge1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh1KTtcbiIKKyAg
ICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VSVF9GQUxT
RShmb3VuZEluQ29kZSgiYW5nbGVfZnJtIikpOworfQorCitURVNUX0YoRGVidWdTaGFkZXJQcmVj
aXNpb25UZXN0LCBEZWNsYXJhdGlvbnNBbmRDb25zdGFudHMpCit7CisgICAgY29uc3Qgc3RkOjpz
dHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtc
biIKKyAgICAgICAgInVuaWZvcm0gdmVjNCBmO1xuIgorICAgICAgICAidW5pZm9ybSBmbG9hdCB1
dSwgdXUyO1xuIgorICAgICAgICAidmFyeWluZyBmbG9hdCB2diwgdnYyO1xuIgorICAgICAgICAi
ZmxvYXQgZ2cgPSAwLjAsIGdnMjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAg
ICAgIiAgIGZsb2F0IGFhID0gMC4wLCBhYTI7XG4iCisgICAgICAgICIgICBnbF9GcmFnQ29sb3Ig
PSBmO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAg
Ly8gRGVjbGFyYXRpb25zIG9yIGNvbnN0YW50cyBzaG91bGQgbm90IGhhdmUgcm91bmRpbmcgaW5z
ZXJ0ZWQgYXJvdW5kIHRoZW0KKyAgICBBU1NFUlRfVFJVRShub3RGb3VuZEluQ29kZSgiYW5nbGVf
ZnJtKDAiKSk7CisgICAgQVNTRVJUX1RSVUUobm90Rm91bmRJbkNvZGUoImFuZ2xlX2ZybSh1dSIp
KTsKKyAgICBBU1NFUlRfVFJVRShub3RGb3VuZEluQ29kZSgiYW5nbGVfZnJtKHZ2IikpOworICAg
IEFTU0VSVF9UUlVFKG5vdEZvdW5kSW5Db2RlKCJhbmdsZV9mcm0oZ2ciKSk7CisgICAgQVNTRVJU
X1RSVUUobm90Rm91bmRJbkNvZGUoImFuZ2xlX2ZybShhYSIpKTsKK30KKworLy8gVGVzdCB0aGF0
IGV4cHJlc3Npb25zIHRoYXQgYXJlIHBhcnQgb2YgaW5pdGlhbGl6YXRpb24gaGF2ZSByb3VuZGlu
Zy4KK1RFU1RfRihEZWJ1Z1NoYWRlclByZWNpc2lvblRlc3QsIEluaXRpYWxpemVyUm91bmRpbmcp
Cit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gZmxvYXQgdTtcbiIKKyAg
ICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGZsb2F0IGEgPSB1O1xuIgorICAg
ICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChhKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAg
Y29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIC8vIEFuIGV4cHJlc3Npb24gdGhhdCdzIHBhcnQg
b2YgaW5pdGlhbGl6YXRpb24gc2hvdWxkIGhhdmUgcm91bmRpbmcKKyAgICBBU1NFUlRfVFJVRShm
b3VuZEluQWxsR0xTTENvZGUoImFuZ2xlX2ZybSh1KSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3Vu
ZEluSExTTENvZGUoImFuZ2xlX2ZybShfdSkiKSk7Cit9CisKKy8vIFRlc3QgdGhhdCBjb21wb3Vu
ZCBhZGRpdGlvbnMgaGF2ZSByb3VuZGluZyBpbiB0aGUgR0xTTCB0cmFuc2xhdGlvbnMuCitURVNU
X0YoRGVidWdTaGFkZXJQcmVjaXNpb25UZXN0LCBDb21wb3VuZEFkZEZ1bmN0aW9uKQoreworICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzQgdTtcbiIKKyAgICAgICAgInVu
aWZvcm0gdmVjNCB1MjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAg
IHZlYzQgdiA9IHU7XG4iCisgICAgICAgICIgICB2ICs9IHUyO1xuIgorICAgICAgICAiICAgZ2xf
RnJhZ0NvbG9yID0gdjtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJp
bmcpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgKKyAgICAgICAgImhpZ2hwIHZl
YzQgYW5nbGVfY29tcG91bmRfYWRkX2ZybShpbm91dCBoaWdocCB2ZWM0IHgsIGluIGhpZ2hwIHZl
YzQgeSkge1xuIgorICAgICAgICAiICAgIHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICsgeSk7
IgorICAgICkpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5HTFNMQ29kZSgKKyAgICAgICAgInZl
YzQgYW5nbGVfY29tcG91bmRfYWRkX2ZybShpbm91dCB2ZWM0IHgsIGluIHZlYzQgeSkge1xuIgor
ICAgICAgICAiICAgIHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICsgeSk7IgorICAgICkpOwor
ICAgIEFTU0VSVF9UUlVFKAorICAgICAgICBmb3VuZEluSExTTENvZGUoImZsb2F0NCBhbmdsZV9j
b21wb3VuZF9hZGRfZnJtKGlub3V0IGZsb2F0NCB4LCBpbiBmbG9hdDQgeSkge1xuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgIiAgICB4ID0gYW5nbGVfZnJtKGFuZ2xlX2ZybSh4KSArIHkpOyIp
KTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoImFuZ2xlX2NvbXBvdW5kX2Fk
ZF9mcm0odiwgYW5nbGVfZnJtKHUyKSk7IikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNM
Q29kZSgiYW5nbGVfY29tcG91bmRfYWRkX2ZybShfdiwgYW5nbGVfZnJtKF91MikpOyIpKTsKKyAg
ICBBU1NFUlRfVFJVRShub3RGb3VuZEluQ29kZSgiKz0iKSk7Cit9CisKK1RFU1RfRihEZWJ1Z1No
YWRlclByZWNpc2lvblRlc3QsIENvbXBvdW5kU3ViRnVuY3Rpb24pCit7CisgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDtcbiIKKyAgICAgICAgInVuaWZvcm0gdmVjNCB1O1xuIgorICAgICAgICAidW5pZm9ybSB2ZWM0
IHUyO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgdmVjNCB2ID0g
dTtcbiIKKyAgICAgICAgIiAgIHYgLT0gdTI7XG4iCisgICAgICAgICIgICBnbF9GcmFnQ29sb3Ig
PSB2O1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAg
QVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKAorICAgICAgICAiaGlnaHAgdmVjNCBhbmdsZV9j
b21wb3VuZF9zdWJfZnJtKGlub3V0IGhpZ2hwIHZlYzQgeCwgaW4gaGlnaHAgdmVjNCB5KSB7XG4i
CisgICAgICAgICIgICAgeCA9IGFuZ2xlX2ZybShhbmdsZV9mcm0oeCkgLSB5KTsiCisgICAgKSk7
CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKAorICAgICAgICAidmVjNCBhbmdsZV9j
b21wb3VuZF9zdWJfZnJtKGlub3V0IHZlYzQgeCwgaW4gdmVjNCB5KSB7XG4iCisgICAgICAgICIg
ICAgeCA9IGFuZ2xlX2ZybShhbmdsZV9mcm0oeCkgLSB5KTsiCisgICAgKSk7CisgICAgQVNTRVJU
X1RSVUUoCisgICAgICAgIGZvdW5kSW5ITFNMQ29kZSgiZmxvYXQ0IGFuZ2xlX2NvbXBvdW5kX3N1
Yl9mcm0oaW5vdXQgZmxvYXQ0IHgsIGluIGZsb2F0NCB5KSB7XG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAiICAgIHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpIC0geSk7IikpOworICAgIEFT
U0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgiYW5nbGVfY29tcG91bmRfc3ViX2ZybSh2LCBh
bmdsZV9mcm0odTIpKTsiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJhbmds
ZV9jb21wb3VuZF9zdWJfZnJtKF92LCBhbmdsZV9mcm0oX3UyKSk7IikpOworICAgIEFTU0VSVF9U
UlVFKG5vdEZvdW5kSW5Db2RlKCItPSIpKTsKK30KKworVEVTVF9GKERlYnVnU2hhZGVyUHJlY2lz
aW9uVGVzdCwgQ29tcG91bmREaXZGdW5jdGlvbikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAm
c2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAg
ICAgICAidW5pZm9ybSB2ZWM0IHU7XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzQgdTI7XG4iCisg
ICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICB2ZWM0IHYgPSB1O1xuIgorICAg
ICAgICAiICAgdiAvPSB1MjtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHY7XG4iCisg
ICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBBU1NFUlRfVFJV
RShmb3VuZEluRVNTTENvZGUoCisgICAgICAgICJoaWdocCB2ZWM0IGFuZ2xlX2NvbXBvdW5kX2Rp
dl9mcm0oaW5vdXQgaGlnaHAgdmVjNCB4LCBpbiBoaWdocCB2ZWM0IHkpIHtcbiIKKyAgICAgICAg
IiAgICB4ID0gYW5nbGVfZnJtKGFuZ2xlX2ZybSh4KSAvIHkpOyIKKyAgICApKTsKKyAgICBBU1NF
UlRfVFJVRShmb3VuZEluR0xTTENvZGUoCisgICAgICAgICJ2ZWM0IGFuZ2xlX2NvbXBvdW5kX2Rp
dl9mcm0oaW5vdXQgdmVjNCB4LCBpbiB2ZWM0IHkpIHtcbiIKKyAgICAgICAgIiAgICB4ID0gYW5n
bGVfZnJtKGFuZ2xlX2ZybSh4KSAvIHkpOyIKKyAgICApKTsKKyAgICBBU1NFUlRfVFJVRSgKKyAg
ICAgICAgZm91bmRJbkhMU0xDb2RlKCJmbG9hdDQgYW5nbGVfY29tcG91bmRfZGl2X2ZybShpbm91
dCBmbG9hdDQgeCwgaW4gZmxvYXQ0IHkpIHtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICIg
ICAgeCA9IGFuZ2xlX2ZybShhbmdsZV9mcm0oeCkgLyB5KTsiKSk7CisgICAgQVNTRVJUX1RSVUUo
Zm91bmRJbkFsbEdMU0xDb2RlKCJhbmdsZV9jb21wb3VuZF9kaXZfZnJtKHYsIGFuZ2xlX2ZybSh1
MikpOyIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoImFuZ2xlX2NvbXBvdW5k
X2Rpdl9mcm0oX3YsIGFuZ2xlX2ZybShfdTIpKTsiKSk7CisgICAgQVNTRVJUX1RSVUUobm90Rm91
bmRJbkNvZGUoIi89IikpOworfQorCitURVNUX0YoRGVidWdTaGFkZXJQcmVjaXNpb25UZXN0LCBD
b21wb3VuZE11bEZ1bmN0aW9uKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJp
bmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ1bmlm
b3JtIHZlYzQgdTtcbiIKKyAgICAgICAgInVuaWZvcm0gdmVjNCB1MjtcbiIKKyAgICAgICAgInZv
aWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIHZlYzQgdiA9IHU7XG4iCisgICAgICAgICIgICB2
ICo9IHUyO1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdjtcbiIKKyAgICAgICAgIn1c
biI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5F
U1NMQ29kZSgKKyAgICAgICAgImhpZ2hwIHZlYzQgYW5nbGVfY29tcG91bmRfbXVsX2ZybShpbm91
dCBoaWdocCB2ZWM0IHgsIGluIGhpZ2hwIHZlYzQgeSkge1xuIgorICAgICAgICAiICAgIHggPSBh
bmdsZV9mcm0oYW5nbGVfZnJtKHgpICogeSk7IgorICAgICkpOworICAgIEFTU0VSVF9UUlVFKGZv
dW5kSW5HTFNMQ29kZSgKKyAgICAgICAgInZlYzQgYW5nbGVfY29tcG91bmRfbXVsX2ZybShpbm91
dCB2ZWM0IHgsIGluIHZlYzQgeSkge1xuIgorICAgICAgICAiICAgIHggPSBhbmdsZV9mcm0oYW5n
bGVfZnJtKHgpICogeSk7IgorICAgICkpOworICAgIEFTU0VSVF9UUlVFKAorICAgICAgICBmb3Vu
ZEluSExTTENvZGUoImZsb2F0NCBhbmdsZV9jb21wb3VuZF9tdWxfZnJtKGlub3V0IGZsb2F0NCB4
LCBpbiBmbG9hdDQgeSkge1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB4ID0gYW5n
bGVfZnJtKGFuZ2xlX2ZybSh4KSAqIHkpOyIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxs
R0xTTENvZGUoImFuZ2xlX2NvbXBvdW5kX211bF9mcm0odiwgYW5nbGVfZnJtKHUyKSk7IikpOwor
ICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiYW5nbGVfY29tcG91bmRfbXVsX2ZybShf
diwgYW5nbGVfZnJtKF91MikpOyIpKTsKKyAgICBBU1NFUlRfVFJVRShub3RGb3VuZEluQ29kZSgi
Kj0iKSk7Cit9CisKK1RFU1RfRihEZWJ1Z1NoYWRlclByZWNpc2lvblRlc3QsIENvbXBvdW5kQWRk
VmVjdG9yUGx1c1NjYWxhckZ1bmN0aW9uKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFk
ZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAg
ICJ1bmlmb3JtIHZlYzQgdTtcbiIKKyAgICAgICAgInVuaWZvcm0gZmxvYXQgdTI7XG4iCisgICAg
ICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICB2ZWM0IHYgPSB1O1xuIgorICAgICAg
ICAiICAgdiArPSB1MjtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHY7XG4iCisgICAg
ICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBBU1NFUlRfVFJVRShm
b3VuZEluRVNTTENvZGUoCisgICAgICAgICJoaWdocCB2ZWM0IGFuZ2xlX2NvbXBvdW5kX2FkZF9m
cm0oaW5vdXQgaGlnaHAgdmVjNCB4LCBpbiBoaWdocCBmbG9hdCB5KSB7XG4iCisgICAgICAgICIg
ICAgeCA9IGFuZ2xlX2ZybShhbmdsZV9mcm0oeCkgKyB5KTsiCisgICAgKSk7CisgICAgQVNTRVJU
X1RSVUUoZm91bmRJbkdMU0xDb2RlKAorICAgICAgICAidmVjNCBhbmdsZV9jb21wb3VuZF9hZGRf
ZnJtKGlub3V0IHZlYzQgeCwgaW4gZmxvYXQgeSkge1xuIgorICAgICAgICAiICAgIHggPSBhbmds
ZV9mcm0oYW5nbGVfZnJtKHgpICsgeSk7IgorICAgICkpOworICAgIEFTU0VSVF9UUlVFKAorICAg
ICAgICBmb3VuZEluSExTTENvZGUoImZsb2F0NCBhbmdsZV9jb21wb3VuZF9hZGRfZnJtKGlub3V0
IGZsb2F0NCB4LCBpbiBmbG9hdCB5KSB7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiICAg
IHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICsgeSk7IikpOworICAgIEFTU0VSVF9UUlVFKGZv
dW5kSW5BbGxHTFNMQ29kZSgiYW5nbGVfY29tcG91bmRfYWRkX2ZybSh2LCBhbmdsZV9mcm0odTIp
KTsiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJhbmdsZV9jb21wb3VuZF9h
ZGRfZnJtKF92LCBhbmdsZV9mcm0oX3UyKSk7IikpOworICAgIEFTU0VSVF9UUlVFKG5vdEZvdW5k
SW5Db2RlKCIrPSIpKTsKK30KKworVEVTVF9GKERlYnVnU2hhZGVyUHJlY2lzaW9uVGVzdCwgQ29t
cG91bmRNYXRyaXhUaW1lc01hdHJpeEZ1bmN0aW9uKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisg
ICAgICAgICJ1bmlmb3JtIG1hdDQgdTtcbiIKKyAgICAgICAgInVuaWZvcm0gbWF0NCB1MjtcbiIK
KyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIG1hdDQgbSA9IHU7XG4iCisg
ICAgICAgICIgICBtICo9IHUyO1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gbVswXTtc
biIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VS
VF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgKKyAgICAgICAgImhpZ2hwIG1hdDQgYW5nbGVfY29tcG91
bmRfbXVsX2ZybShpbm91dCBoaWdocCBtYXQ0IHgsIGluIGhpZ2hwIG1hdDQgeSkge1xuIgorICAg
ICAgICAiICAgIHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICogeSk7IgorICAgICkpOworICAg
IEFTU0VSVF9UUlVFKGZvdW5kSW5HTFNMQ29kZSgKKyAgICAgICAgIm1hdDQgYW5nbGVfY29tcG91
bmRfbXVsX2ZybShpbm91dCBtYXQ0IHgsIGluIG1hdDQgeSkge1xuIgorICAgICAgICAiICAgIHgg
PSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICogeSk7IgorICAgICkpOworICAgIEFTU0VSVF9UUlVF
KAorICAgICAgICBmb3VuZEluSExTTENvZGUoImZsb2F0NHg0IGFuZ2xlX2NvbXBvdW5kX211bF9m
cm0oaW5vdXQgZmxvYXQ0eDQgeCwgaW4gZmxvYXQ0eDQgeSkge1xuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgIiAgICB4ID0gYW5nbGVfZnJtKGFuZ2xlX2ZybSh4KSAqIHkpOyIpKTsKKyAgICBB
U1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoImFuZ2xlX2NvbXBvdW5kX211bF9mcm0obSwg
YW5nbGVfZnJtKHUyKSk7IikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiYW5n
bGVfY29tcG91bmRfbXVsX2ZybShfbSwgYW5nbGVfZnJtKF91MikpOyIpKTsKKyAgICBBU1NFUlRf
VFJVRShub3RGb3VuZEluQ29kZSgiKj0iKSk7Cit9CisKKy8vIFRlc3QgdGhhdCBjb21wb3VuZCBt
dWx0aXBseWluZyBhIG5vbi1zcXVhcmUgbWF0cml4IHdpdGggYW5vdGhlciBtYXRyaXggZ2V0cyB0
cmFuc2xhdGVkIGludG8gYW4KKy8vIGFuZ2xlX2NvbXBvdW5kX211bCBmdW5jdGlvbiBjYWxsLgor
VEVTVF9GKERlYnVnU2hhZGVyUHJlY2lzaW9uVGVzdCwgQ29tcG91bmROb25TcXVhcmVNYXRyaXhU
aW1lc01hdHJpeEZ1bmN0aW9uKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJp
bmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gbWF0Mng0IHU7XG4iCisgICAgICAgICJ1
bmlmb3JtIG1hdDIgdTI7XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisg
ICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBtYXQyeDQgbSA9IHU7XG4iCisg
ICAgICAgICIgICBtICo9IHUyO1xuIgorICAgICAgICAiICAgbXlfRnJhZ0NvbG9yID0gbVswXTtc
biIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VS
VF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgKKyAgICAgICAgImhpZ2hwIG1hdDJ4NCBhbmdsZV9jb21w
b3VuZF9tdWxfZnJtKGlub3V0IGhpZ2hwIG1hdDJ4NCB4LCBpbiBoaWdocCBtYXQyIHkpIHtcbiIK
KyAgICAgICAgIiAgICB4ID0gYW5nbGVfZnJtKGFuZ2xlX2ZybSh4KSAqIHkpOyIpKTsKKyAgICBB
U1NFUlRfVFJVRSgKKyAgICAgICAgZm91bmRJbkdMU0xDb2RlKCJtYXQyeDQgYW5nbGVfY29tcG91
bmRfbXVsX2ZybShpbm91dCBtYXQyeDQgeCwgaW4gbWF0MiB5KSB7XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAiICAgIHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICogeSk7IikpOworICAg
IEFTU0VSVF9UUlVFKAorICAgICAgICBmb3VuZEluSExTTENvZGUoImZsb2F0Mng0IGFuZ2xlX2Nv
bXBvdW5kX211bF9mcm0oaW5vdXQgZmxvYXQyeDQgeCwgaW4gZmxvYXQyeDIgeSkge1xuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgIiAgICB4ID0gYW5nbGVfZnJtKGFuZ2xlX2ZybSh4KSAqIHkp
OyIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoImFuZ2xlX2NvbXBvdW5k
X211bF9mcm0obSwgYW5nbGVfZnJtKHUyKSk7IikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5I
TFNMQ29kZSgiYW5nbGVfY29tcG91bmRfbXVsX2ZybShfbSwgYW5nbGVfZnJtKF91MikpOyIpKTsK
KyAgICBBU1NFUlRfVFJVRShub3RGb3VuZEluQ29kZSgiKj0iKSk7Cit9CisKK1RFU1RfRihEZWJ1
Z1NoYWRlclByZWNpc2lvblRlc3QsIENvbXBvdW5kTWF0cml4VGltZXNTY2FsYXJGdW5jdGlvbikK
K3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidW5pZm9ybSBtYXQ0IHU7XG4iCisgICAg
ICAgICJ1bmlmb3JtIGZsb2F0IHUyO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAg
ICAgICAiICAgbWF0NCBtID0gdTtcbiIKKyAgICAgICAgIiAgIG0gKj0gdTI7XG4iCisgICAgICAg
ICIgICBnbF9GcmFnQ29sb3IgPSBtWzBdO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxl
KHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKAorICAgICAg
ICAiaGlnaHAgbWF0NCBhbmdsZV9jb21wb3VuZF9tdWxfZnJtKGlub3V0IGhpZ2hwIG1hdDQgeCwg
aW4gaGlnaHAgZmxvYXQgeSkge1xuIgorICAgICAgICAiICAgIHggPSBhbmdsZV9mcm0oYW5nbGVf
ZnJtKHgpICogeSk7IgorICAgICkpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5HTFNMQ29kZSgK
KyAgICAgICAgIm1hdDQgYW5nbGVfY29tcG91bmRfbXVsX2ZybShpbm91dCBtYXQ0IHgsIGluIGZs
b2F0IHkpIHtcbiIKKyAgICAgICAgIiAgICB4ID0gYW5nbGVfZnJtKGFuZ2xlX2ZybSh4KSAqIHkp
OyIKKyAgICApKTsKKyAgICBBU1NFUlRfVFJVRSgKKyAgICAgICAgZm91bmRJbkhMU0xDb2RlKCJm
bG9hdDR4NCBhbmdsZV9jb21wb3VuZF9tdWxfZnJtKGlub3V0IGZsb2F0NHg0IHgsIGluIGZsb2F0
IHkpIHtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICIgICAgeCA9IGFuZ2xlX2ZybShhbmds
ZV9mcm0oeCkgKiB5KTsiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJh
bmdsZV9jb21wb3VuZF9tdWxfZnJtKG0sIGFuZ2xlX2ZybSh1MikpOyIpKTsKKyAgICBBU1NFUlRf
VFJVRShmb3VuZEluSExTTENvZGUoImFuZ2xlX2NvbXBvdW5kX211bF9mcm0oX20sIGFuZ2xlX2Zy
bShfdTIpKTsiKSk7CisgICAgQVNTRVJUX1RSVUUobm90Rm91bmRJbkNvZGUoIio9IikpOworfQor
CitURVNUX0YoRGVidWdTaGFkZXJQcmVjaXNpb25UZXN0LCBDb21wb3VuZFZlY3RvclRpbWVzTWF0
cml4RnVuY3Rpb24pCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Cisg
ICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gdmVj
NCB1O1xuIgorICAgICAgICAidW5pZm9ybSBtYXQ0IHUyO1xuIgorICAgICAgICAidm9pZCBtYWlu
KCkge1xuIgorICAgICAgICAiICAgdmVjNCB2ID0gdTtcbiIKKyAgICAgICAgIiAgIHYgKj0gdTI7
XG4iCisgICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2O1xuIgorICAgICAgICAifVxuIjsKKyAg
ICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2Rl
KAorICAgICAgICAiaGlnaHAgdmVjNCBhbmdsZV9jb21wb3VuZF9tdWxfZnJtKGlub3V0IGhpZ2hw
IHZlYzQgeCwgaW4gaGlnaHAgbWF0NCB5KSB7XG4iCisgICAgICAgICIgICAgeCA9IGFuZ2xlX2Zy
bShhbmdsZV9mcm0oeCkgKiB5KTsiCisgICAgKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkdM
U0xDb2RlKCJ2ZWM0IGFuZ2xlX2NvbXBvdW5kX211bF9mcm0oaW5vdXQgdmVjNCB4LCBpbiBtYXQ0
IHkpIHtcbiIKKyAgICAgICAgIiAgICB4ID0gYW5nbGVfZnJtKGFuZ2xlX2ZybSh4KSAqIHkpOyIK
KyAgICApKTsKKyAgICBBU1NFUlRfVFJVRSgKKyAgICAgICAgZm91bmRJbkhMU0xDb2RlKCJmbG9h
dDQgYW5nbGVfY29tcG91bmRfbXVsX2ZybShpbm91dCBmbG9hdDQgeCwgaW4gZmxvYXQ0eDQgeSkg
e1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB4ID0gYW5nbGVfZnJtKGFuZ2xlX2Zy
bSh4KSAqIHkpOyIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoImFuZ2xl
X2NvbXBvdW5kX211bF9mcm0odiwgYW5nbGVfZnJtKHUyKSk7IikpOworICAgIEFTU0VSVF9UUlVF
KGZvdW5kSW5ITFNMQ29kZSgiYW5nbGVfY29tcG91bmRfbXVsX2ZybShfdiwgYW5nbGVfZnJtKF91
MikpOyIpKTsKKyAgICBBU1NFUlRfVFJVRShub3RGb3VuZEluQ29kZSgiKj0iKSk7Cit9CisKK1RF
U1RfRihEZWJ1Z1NoYWRlclByZWNpc2lvblRlc3QsIENvbXBvdW5kVmVjdG9yVGltZXNTY2FsYXJG
dW5jdGlvbikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAg
ICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidW5pZm9ybSB2ZWM0IHU7
XG4iCisgICAgICAgICJ1bmlmb3JtIGZsb2F0IHUyO1xuIgorICAgICAgICAidm9pZCBtYWluKCkg
e1xuIgorICAgICAgICAiICAgdmVjNCB2ID0gdTtcbiIKKyAgICAgICAgIiAgIHYgKj0gdTI7XG4i
CisgICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2O1xuIgorICAgICAgICAifVxuIjsKKyAgICBj
b21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKAor
ICAgICAgICAiaGlnaHAgdmVjNCBhbmdsZV9jb21wb3VuZF9tdWxfZnJtKGlub3V0IGhpZ2hwIHZl
YzQgeCwgaW4gaGlnaHAgZmxvYXQgeSkge1xuIgorICAgICAgICAiICAgIHggPSBhbmdsZV9mcm0o
YW5nbGVfZnJtKHgpICogeSk7IgorICAgICkpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5HTFNM
Q29kZSgKKyAgICAgICAgInZlYzQgYW5nbGVfY29tcG91bmRfbXVsX2ZybShpbm91dCB2ZWM0IHgs
IGluIGZsb2F0IHkpIHtcbiIKKyAgICAgICAgIiAgICB4ID0gYW5nbGVfZnJtKGFuZ2xlX2ZybSh4
KSAqIHkpOyIKKyAgICApKTsKKyAgICBBU1NFUlRfVFJVRSgKKyAgICAgICAgZm91bmRJbkhMU0xD
b2RlKCJmbG9hdDQgYW5nbGVfY29tcG91bmRfbXVsX2ZybShpbm91dCBmbG9hdDQgeCwgaW4gZmxv
YXQgeSkge1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB4ID0gYW5nbGVfZnJtKGFu
Z2xlX2ZybSh4KSAqIHkpOyIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUo
ImFuZ2xlX2NvbXBvdW5kX211bF9mcm0odiwgYW5nbGVfZnJtKHUyKSk7IikpOworICAgIEFTU0VS
VF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiYW5nbGVfY29tcG91bmRfbXVsX2ZybShfdiwgYW5nbGVf
ZnJtKF91MikpOyIpKTsKKyAgICBBU1NFUlRfVFJVRShub3RGb3VuZEluQ29kZSgiKj0iKSk7Cit9
CisKK1RFU1RfRihEZWJ1Z1NoYWRlclByZWNpc2lvblRlc3QsIEJpbmFyeU1hdGhSb3VuZGluZykK
K3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidW5pZm9ybSB2ZWM0IHUxO1xuIgorICAg
ICAgICAidW5pZm9ybSB2ZWM0IHUyO1xuIgorICAgICAgICAidW5pZm9ybSB2ZWM0IHUzO1xuIgor
ICAgICAgICAidW5pZm9ybSB2ZWM0IHU0O1xuIgorICAgICAgICAidW5pZm9ybSB2ZWM0IHU1O1xu
IgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgdmVjNCB2MSA9IHUxICsg
dTI7XG4iCisgICAgICAgICIgICB2ZWM0IHYyID0gdTIgLSB1MztcbiIKKyAgICAgICAgIiAgIHZl
YzQgdjMgPSB1MyAqIHU0O1xuIgorICAgICAgICAiICAgdmVjNCB2NCA9IHU0IC8gdTU7XG4iCisg
ICAgICAgICIgICB2ZWM0IHY1O1xuIgorICAgICAgICAiICAgdmVjNCB2NiA9ICh2NSA9IHU1KTtc
biIKKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHYxICsgdjIgKyB2MyArIHY0O1xuIgorICAg
ICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX1RSVUUo
Zm91bmRJbkFsbEdMU0xDb2RlKCJ2MSA9IGFuZ2xlX2ZybSgoYW5nbGVfZnJtKHUxKSArIGFuZ2xl
X2ZybSh1MikpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoInYyID0g
YW5nbGVfZnJtKChhbmdsZV9mcm0odTIpIC0gYW5nbGVfZnJtKHUzKSkpIikpOworICAgIEFTU0VS
VF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgidjMgPSBhbmdsZV9mcm0oKGFuZ2xlX2ZybSh1Mykg
KiBhbmdsZV9mcm0odTQpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2Rl
KCJ2NCA9IGFuZ2xlX2ZybSgoYW5nbGVfZnJtKHU0KSAvIGFuZ2xlX2ZybSh1NSkpKSIpKTsKKyAg
ICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoInY2ID0gYW5nbGVfZnJtKCh2NSA9IGFu
Z2xlX2ZybSh1NSkpKSIpKTsKKworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidjEg
PSBhbmdsZV9mcm0oKGFuZ2xlX2ZybShfdTEpICsgYW5nbGVfZnJtKF91MikpKSIpKTsKKyAgICBB
U1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoInYyID0gYW5nbGVfZnJtKChhbmdsZV9mcm0oX3Uy
KSAtIGFuZ2xlX2ZybShfdTMpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2Rl
KCJ2MyA9IGFuZ2xlX2ZybSgoYW5nbGVfZnJtKF91MykgKiBhbmdsZV9mcm0oX3U0KSkpIikpOwor
ICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidjQgPSBhbmdsZV9mcm0oKGFuZ2xlX2Zy
bShfdTQpIC8gYW5nbGVfZnJtKF91NSkpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExT
TENvZGUoInY2ID0gYW5nbGVfZnJtKChfdjUgPSBhbmdsZV9mcm0oX3U1KSkpIikpOworfQorCitU
RVNUX0YoRGVidWdTaGFkZXJQcmVjaXNpb25UZXN0LCBCdWlsdEluTWF0aEZ1bmN0aW9uUm91bmRp
bmcpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gdmVjNCB1MTtcbiIK
KyAgICAgICAgInVuaWZvcm0gdmVjNCB1MjtcbiIKKyAgICAgICAgInVuaWZvcm0gdmVjNCB1Mztc
biIKKyAgICAgICAgInVuaWZvcm0gZmxvYXQgdWY7XG4iCisgICAgICAgICJ1bmlmb3JtIGZsb2F0
IHVmMjtcbiIKKyAgICAgICAgInVuaWZvcm0gdmVjMyB1ZjMxO1xuIgorICAgICAgICAidW5pZm9y
bSB2ZWMzIHVmMzI7XG4iCisgICAgICAgICJ1bmlmb3JtIG1hdDQgdW0xO1xuIgorICAgICAgICAi
dW5pZm9ybSBtYXQ0IHVtMjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAg
IiAgIHZlYzQgdjEgPSByYWRpYW5zKHUxKTtcbiIKKyAgICAgICAgIiAgIHZlYzQgdjIgPSBkZWdy
ZWVzKHUxKTtcbiIKKyAgICAgICAgIiAgIHZlYzQgdjMgPSBzaW4odTEpO1xuIgorICAgICAgICAi
ICAgdmVjNCB2NCA9IGNvcyh1MSk7XG4iCisgICAgICAgICIgICB2ZWM0IHY1ID0gdGFuKHUxKTtc
biIKKyAgICAgICAgIiAgIHZlYzQgdjYgPSBhc2luKHUxKTtcbiIKKyAgICAgICAgIiAgIHZlYzQg
djcgPSBhY29zKHUxKTtcbiIKKyAgICAgICAgIiAgIHZlYzQgdjggPSBhdGFuKHUxKTtcbiIKKyAg
ICAgICAgIiAgIHZlYzQgdjkgPSBhdGFuKHUxLCB1Mik7XG4iCisgICAgICAgICIgICB2ZWM0IHYx
MCA9IHBvdyh1MSwgdTIpO1xuIgorICAgICAgICAiICAgdmVjNCB2MTEgPSBleHAodTEpO1xuIgor
ICAgICAgICAiICAgdmVjNCB2MTIgPSBsb2codTEpO1xuIgorICAgICAgICAiICAgdmVjNCB2MTMg
PSBleHAyKHUxKTtcbiIKKyAgICAgICAgIiAgIHZlYzQgdjE0ID0gbG9nMih1MSk7XG4iCisgICAg
ICAgICIgICB2ZWM0IHYxNSA9IHNxcnQodTEpO1xuIgorICAgICAgICAiICAgdmVjNCB2MTYgPSBp
bnZlcnNlc3FydCh1MSk7XG4iCisgICAgICAgICIgICB2ZWM0IHYxNyA9IGFicyh1MSk7XG4iCisg
ICAgICAgICIgICB2ZWM0IHYxOCA9IHNpZ24odTEpO1xuIgorICAgICAgICAiICAgdmVjNCB2MTkg
PSBmbG9vcih1MSk7XG4iCisgICAgICAgICIgICB2ZWM0IHYyMCA9IGNlaWwodTEpO1xuIgorICAg
ICAgICAiICAgdmVjNCB2MjEgPSBmcmFjdCh1MSk7XG4iCisgICAgICAgICIgICB2ZWM0IHYyMiA9
IG1vZCh1MSwgdWYpO1xuIgorICAgICAgICAiICAgdmVjNCB2MjMgPSBtb2QodTEsIHUyKTtcbiIK
KyAgICAgICAgIiAgIHZlYzQgdjI0ID0gbWluKHUxLCB1Zik7XG4iCisgICAgICAgICIgICB2ZWM0
IHYyNSA9IG1pbih1MSwgdTIpO1xuIgorICAgICAgICAiICAgdmVjNCB2MjYgPSBtYXgodTEsIHVm
KTtcbiIKKyAgICAgICAgIiAgIHZlYzQgdjI3ID0gbWF4KHUxLCB1Mik7XG4iCisgICAgICAgICIg
ICB2ZWM0IHYyOCA9IGNsYW1wKHUxLCB1MiwgdTMpO1xuIgorICAgICAgICAiICAgdmVjNCB2Mjkg
PSBjbGFtcCh1MSwgdWYsIHVmMik7XG4iCisgICAgICAgICIgICB2ZWM0IHYzMCA9IG1peCh1MSwg
dTIsIHUzKTtcbiIKKyAgICAgICAgIiAgIHZlYzQgdjMxID0gbWl4KHUxLCB1MiwgdWYpO1xuIgor
ICAgICAgICAiICAgdmVjNCB2MzIgPSBzdGVwKHUxLCB1Mik7XG4iCisgICAgICAgICIgICB2ZWM0
IHYzMyA9IHN0ZXAodWYsIHUxKTtcbiIKKyAgICAgICAgIiAgIHZlYzQgdjM0ID0gc21vb3Roc3Rl
cCh1MSwgdTIsIHUzKTtcbiIKKyAgICAgICAgIiAgIHZlYzQgdjM1ID0gc21vb3Roc3RlcCh1Ziwg
dWYyLCB1MSk7XG4iCisgICAgICAgICIgICB2ZWM0IHYzNiA9IG5vcm1hbGl6ZSh1MSk7XG4iCisg
ICAgICAgICIgICB2ZWM0IHYzNyA9IGZhY2Vmb3J3YXJkKHUxLCB1MiwgdTMpO1xuIgorICAgICAg
ICAiICAgdmVjNCB2MzggPSByZWZsZWN0KHUxLCB1Mik7XG4iCisgICAgICAgICIgICB2ZWM0IHYz
OSA9IHJlZnJhY3QodTEsIHUyLCB1Zik7XG4iCisKKyAgICAgICAgIiAgIGZsb2F0IGYxID0gbGVu
Z3RoKHUxKTtcbiIKKyAgICAgICAgIiAgIGZsb2F0IGYyID0gZGlzdGFuY2UodTEsIHUyKTtcbiIK
KyAgICAgICAgIiAgIGZsb2F0IGYzID0gZG90KHUxLCB1Mik7XG4iCisgICAgICAgICIgICB2ZWMz
IHZmMzEgPSBjcm9zcyh1ZjMxLCB1ZjMyKTtcbiIKKyAgICAgICAgIiAgIG1hdDQgbTEgPSBtYXRy
aXhDb21wTXVsdCh1bTEsIHVtMik7XG4iCisKKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHYx
ICsgdjIgKyB2MyArIHY0ICsgdjUgKyB2NiArIHY3ICsgdjggKyB2OSArIHYxMCArIgorICAgICAg
ICAgICAgInYxMSArIHYxMiArIHYxMyArIHYxNCArIHYxNSArIHYxNiArIHYxNyArIHYxOCArIHYx
OSArIHYyMCArIgorICAgICAgICAgICAgInYyMSArIHYyMiArIHYyMyArIHYyNCArIHYyNSArIHYy
NiArIHYyNyArIHYyOCArIHYyOSArIHYzMCArIgorICAgICAgICAgICAgInYzMSArIHYzMiArIHYz
MyArIHYzNCArIHYzNSArIHYzNiArIHYzNyArIHYzOCArIHYzOSArIgorICAgICAgICAgICAgInZl
YzQoZjEsIGYyLCBmMywgMC4wKSArIHZlYzQodmYzMSwgMC4wKSArIG0xWzBdO1xuIgorICAgICAg
ICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX1RSVUUoZm91
bmRJbkFsbEdMU0xDb2RlKCJ2MSA9IGFuZ2xlX2ZybShyYWRpYW5zKGFuZ2xlX2ZybSh1MSkpKSIp
KTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoInYyID0gYW5nbGVfZnJtKGRl
Z3JlZXMoYW5nbGVfZnJtKHUxKSkpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNM
Q29kZSgidjMgPSBhbmdsZV9mcm0oc2luKGFuZ2xlX2ZybSh1MSkpKSIpKTsKKyAgICBBU1NFUlRf
VFJVRShmb3VuZEluQWxsR0xTTENvZGUoInY0ID0gYW5nbGVfZnJtKGNvcyhhbmdsZV9mcm0odTEp
KSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2NSA9IGFuZ2xlX2Zy
bSh0YW4oYW5nbGVfZnJtKHUxKSkpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNM
Q29kZSgidjYgPSBhbmdsZV9mcm0oYXNpbihhbmdsZV9mcm0odTEpKSkiKSk7CisgICAgQVNTRVJU
X1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2NyA9IGFuZ2xlX2ZybShhY29zKGFuZ2xlX2ZybSh1
MSkpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoInY4ID0gYW5nbGVf
ZnJtKGF0YW4oYW5nbGVfZnJtKHUxKSkpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxH
TFNMQ29kZSgidjkgPSBhbmdsZV9mcm0oYXRhbihhbmdsZV9mcm0odTEpLCBhbmdsZV9mcm0odTIp
KSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2MTAgPSBhbmdsZV9m
cm0ocG93KGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1MikpKSIpKTsKKyAgICBBU1NFUlRfVFJV
RShmb3VuZEluQWxsR0xTTENvZGUoInYxMSA9IGFuZ2xlX2ZybShleHAoYW5nbGVfZnJtKHUxKSkp
IikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgidjEyID0gYW5nbGVfZnJt
KGxvZyhhbmdsZV9mcm0odTEpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xD
b2RlKCJ2MTMgPSBhbmdsZV9mcm0oZXhwMihhbmdsZV9mcm0odTEpKSkiKSk7CisgICAgQVNTRVJU
X1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2MTQgPSBhbmdsZV9mcm0obG9nMihhbmdsZV9mcm0o
dTEpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2MTUgPSBhbmds
ZV9mcm0oc3FydChhbmdsZV9mcm0odTEpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFs
bEdMU0xDb2RlKCJ2MTYgPSBhbmdsZV9mcm0oaW52ZXJzZXNxcnQoYW5nbGVfZnJtKHUxKSkpIikp
OworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgidjE3ID0gYW5nbGVfZnJtKGFi
cyhhbmdsZV9mcm0odTEpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2Rl
KCJ2MTggPSBhbmdsZV9mcm0oc2lnbihhbmdsZV9mcm0odTEpKSkiKSk7CisgICAgQVNTRVJUX1RS
VUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2MTkgPSBhbmdsZV9mcm0oZmxvb3IoYW5nbGVfZnJtKHUx
KSkpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgidjIwID0gYW5nbGVf
ZnJtKGNlaWwoYW5nbGVfZnJtKHUxKSkpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxH
TFNMQ29kZSgidjIxID0gYW5nbGVfZnJtKGZyYWN0KGFuZ2xlX2ZybSh1MSkpKSIpKTsKKyAgICBB
U1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoInYyMiA9IGFuZ2xlX2ZybShtb2QoYW5nbGVf
ZnJtKHUxKSwgYW5nbGVfZnJtKHVmKSkpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxH
TFNMQ29kZSgidjIzID0gYW5nbGVfZnJtKG1vZChhbmdsZV9mcm0odTEpLCBhbmdsZV9mcm0odTIp
KSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2MjQgPSBhbmdsZV9m
cm0obWluKGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1ZikpKSIpKTsKKyAgICBBU1NFUlRfVFJV
RShmb3VuZEluQWxsR0xTTENvZGUoInYyNSA9IGFuZ2xlX2ZybShtaW4oYW5nbGVfZnJtKHUxKSwg
YW5nbGVfZnJtKHUyKSkpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgi
djI2ID0gYW5nbGVfZnJtKG1heChhbmdsZV9mcm0odTEpLCBhbmdsZV9mcm0odWYpKSkiKSk7Cisg
ICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2MjcgPSBhbmdsZV9mcm0obWF4KGFu
Z2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1MikpKSIpKTsKKyAgICBBU1NFUlRfVFJVRSgKKyAgICAg
ICAgZm91bmRJbkFsbEdMU0xDb2RlKCJ2MjggPSBhbmdsZV9mcm0oY2xhbXAoYW5nbGVfZnJtKHUx
KSwgYW5nbGVfZnJtKHUyKSwgYW5nbGVfZnJtKHUzKSkpIikpOworICAgIEFTU0VSVF9UUlVFKAor
ICAgICAgICBmb3VuZEluQWxsR0xTTENvZGUoInYyOSA9IGFuZ2xlX2ZybShjbGFtcChhbmdsZV9m
cm0odTEpLCBhbmdsZV9mcm0odWYpLCBhbmdsZV9mcm0odWYyKSkpIikpOworICAgIEFTU0VSVF9U
UlVFKAorICAgICAgICBmb3VuZEluQWxsR0xTTENvZGUoInYzMCA9IGFuZ2xlX2ZybShtaXgoYW5n
bGVfZnJtKHUxKSwgYW5nbGVfZnJtKHUyKSwgYW5nbGVfZnJtKHUzKSkpIikpOworICAgIEFTU0VS
VF9UUlVFKAorICAgICAgICBmb3VuZEluQWxsR0xTTENvZGUoInYzMSA9IGFuZ2xlX2ZybShtaXgo
YW5nbGVfZnJtKHUxKSwgYW5nbGVfZnJtKHUyKSwgYW5nbGVfZnJtKHVmKSkpIikpOworICAgIEFT
U0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgidjMyID0gYW5nbGVfZnJtKHN0ZXAoYW5nbGVf
ZnJtKHUxKSwgYW5nbGVfZnJtKHUyKSkpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxH
TFNMQ29kZSgidjMzID0gYW5nbGVfZnJtKHN0ZXAoYW5nbGVfZnJtKHVmKSwgYW5nbGVfZnJtKHUx
KSkpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgKKyAgICAgICAgInYz
NCA9IGFuZ2xlX2ZybShzbW9vdGhzdGVwKGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1MiksIGFu
Z2xlX2ZybSh1MykpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoCisg
ICAgICAgICJ2MzUgPSBhbmdsZV9mcm0oc21vb3Roc3RlcChhbmdsZV9mcm0odWYpLCBhbmdsZV9m
cm0odWYyKSwgYW5nbGVfZnJtKHUxKSkpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxH
TFNMQ29kZSgidjM2ID0gYW5nbGVfZnJtKG5vcm1hbGl6ZShhbmdsZV9mcm0odTEpKSkiKSk7Cisg
ICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKAorICAgICAgICAidjM3ID0gYW5nbGVf
ZnJtKGZhY2Vmb3J3YXJkKGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1MiksIGFuZ2xlX2ZybSh1
MykpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoInYzOCA9IGFuZ2xl
X2ZybShyZWZsZWN0KGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1MikpKSIpKTsKKyAgICBBU1NF
UlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoCisgICAgICAgICJ2MzkgPSBhbmdsZV9mcm0ocmVm
cmFjdChhbmdsZV9mcm0odTEpLCBhbmdsZV9mcm0odTIpLCBhbmdsZV9mcm0odWYpKSkiKSk7CisK
KyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoImYxID0gYW5nbGVfZnJtKGxlbmd0
aChhbmdsZV9mcm0odTEpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2Rl
KCJmMiA9IGFuZ2xlX2ZybShkaXN0YW5jZShhbmdsZV9mcm0odTEpLCBhbmdsZV9mcm0odTIpKSki
KSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJmMyA9IGFuZ2xlX2ZybShk
b3QoYW5nbGVfZnJtKHUxKSwgYW5nbGVfZnJtKHUyKSkpIikpOworICAgIEFTU0VSVF9UUlVFKGZv
dW5kSW5BbGxHTFNMQ29kZSgidmYzMSA9IGFuZ2xlX2ZybShjcm9zcyhhbmdsZV9mcm0odWYzMSks
IGFuZ2xlX2ZybSh1ZjMyKSkpIikpOworICAgIEFTU0VSVF9UUlVFKAorICAgICAgICBmb3VuZElu
QWxsR0xTTENvZGUoIm0xID0gYW5nbGVfZnJtKG1hdHJpeENvbXBNdWx0KGFuZ2xlX2ZybSh1bTEp
LCBhbmdsZV9mcm0odW0yKSkpIikpOworCisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2Rl
KCJ2MSA9IGFuZ2xlX2ZybShyYWRpYW5zKGFuZ2xlX2ZybShfdTEpKSkiKSk7CisgICAgQVNTRVJU
X1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2MiA9IGFuZ2xlX2ZybShkZWdyZWVzKGFuZ2xlX2ZybShf
dTEpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2MyA9IGFuZ2xlX2Zy
bShzaW4oYW5nbGVfZnJtKF91MSkpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENv
ZGUoInY0ID0gYW5nbGVfZnJtKGNvcyhhbmdsZV9mcm0oX3UxKSkpIikpOworICAgIEFTU0VSVF9U
UlVFKGZvdW5kSW5ITFNMQ29kZSgidjUgPSBhbmdsZV9mcm0odGFuKGFuZ2xlX2ZybShfdTEpKSki
KSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2NiA9IGFuZ2xlX2ZybShhc2lu
KGFuZ2xlX2ZybShfdTEpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2
NyA9IGFuZ2xlX2ZybShhY29zKGFuZ2xlX2ZybShfdTEpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUo
Zm91bmRJbkhMU0xDb2RlKCJ2OCA9IGFuZ2xlX2ZybShhdGFuKGFuZ2xlX2ZybShfdTEpKSkiKSk7
CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2OSA9IGFuZ2xlX2ZybSh3ZWJnbF9h
dGFuX2VtdShhbmdsZV9mcm0oX3UxKSwgYW5nbGVfZnJtKF91MikpKSIpKTsKKyAgICBBU1NFUlRf
VFJVRShmb3VuZEluSExTTENvZGUoInYxMCA9IGFuZ2xlX2ZybShwb3coYW5nbGVfZnJtKF91MSks
IGFuZ2xlX2ZybShfdTIpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2
MTEgPSBhbmdsZV9mcm0oZXhwKGFuZ2xlX2ZybShfdTEpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUo
Zm91bmRJbkhMU0xDb2RlKCJ2MTIgPSBhbmdsZV9mcm0obG9nKGFuZ2xlX2ZybShfdTEpKSkiKSk7
CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2MTMgPSBhbmdsZV9mcm0oZXhwMihh
bmdsZV9mcm0oX3UxKSkpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidjE0
ID0gYW5nbGVfZnJtKGxvZzIoYW5nbGVfZnJtKF91MSkpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShm
b3VuZEluSExTTENvZGUoInYxNSA9IGFuZ2xlX2ZybShzcXJ0KGFuZ2xlX2ZybShfdTEpKSkiKSk7
CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2MTYgPSBhbmdsZV9mcm0ocnNxcnQo
YW5nbGVfZnJtKF91MSkpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoInYx
NyA9IGFuZ2xlX2ZybShhYnMoYW5nbGVfZnJtKF91MSkpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShm
b3VuZEluSExTTENvZGUoInYxOCA9IGFuZ2xlX2ZybShzaWduKGFuZ2xlX2ZybShfdTEpKSkiKSk7
CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2MTkgPSBhbmdsZV9mcm0oZmxvb3Io
YW5nbGVfZnJtKF91MSkpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoInYy
MCA9IGFuZ2xlX2ZybShjZWlsKGFuZ2xlX2ZybShfdTEpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUo
Zm91bmRJbkhMU0xDb2RlKCJ2MjEgPSBhbmdsZV9mcm0oZnJhYyhhbmdsZV9mcm0oX3UxKSkpIikp
OworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidjIyID0gYW5nbGVfZnJtKHdlYmds
X21vZF9lbXUoYW5nbGVfZnJtKF91MSksIGFuZ2xlX2ZybShfdWYpKSkiKSk7CisgICAgQVNTRVJU
X1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2MjMgPSBhbmdsZV9mcm0od2ViZ2xfbW9kX2VtdShhbmds
ZV9mcm0oX3UxKSwgYW5nbGVfZnJtKF91MikpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZElu
SExTTENvZGUoInYyNCA9IGFuZ2xlX2ZybShtaW4oYW5nbGVfZnJtKF91MSksIGFuZ2xlX2ZybShf
dWYpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2MjUgPSBhbmdsZV9m
cm0obWluKGFuZ2xlX2ZybShfdTEpLCBhbmdsZV9mcm0oX3UyKSkpIikpOworICAgIEFTU0VSVF9U
UlVFKGZvdW5kSW5ITFNMQ29kZSgidjI2ID0gYW5nbGVfZnJtKG1heChhbmdsZV9mcm0oX3UxKSwg
YW5nbGVfZnJtKF91ZikpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoInYy
NyA9IGFuZ2xlX2ZybShtYXgoYW5nbGVfZnJtKF91MSksIGFuZ2xlX2ZybShfdTIpKSkiKSk7Cisg
ICAgQVNTRVJUX1RSVUUoCisgICAgICAgIGZvdW5kSW5ITFNMQ29kZSgidjI4ID0gYW5nbGVfZnJt
KGNsYW1wKGFuZ2xlX2ZybShfdTEpLCBhbmdsZV9mcm0oX3UyKSwgYW5nbGVfZnJtKF91MykpKSIp
KTsKKyAgICBBU1NFUlRfVFJVRSgKKyAgICAgICAgZm91bmRJbkhMU0xDb2RlKCJ2MjkgPSBhbmds
ZV9mcm0oY2xhbXAoYW5nbGVfZnJtKF91MSksIGFuZ2xlX2ZybShfdWYpLCBhbmdsZV9mcm0oX3Vm
MikpKSIpKTsKKyAgICBBU1NFUlRfVFJVRSgKKyAgICAgICAgZm91bmRJbkhMU0xDb2RlKCJ2MzAg
PSBhbmdsZV9mcm0obGVycChhbmdsZV9mcm0oX3UxKSwgYW5nbGVfZnJtKF91MiksIGFuZ2xlX2Zy
bShfdTMpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoCisgICAgICAgIGZvdW5kSW5ITFNMQ29kZSgi
djMxID0gYW5nbGVfZnJtKGxlcnAoYW5nbGVfZnJtKF91MSksIGFuZ2xlX2ZybShfdTIpLCBhbmds
ZV9mcm0oX3VmKSkpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidjMyID0g
YW5nbGVfZnJtKHN0ZXAoYW5nbGVfZnJtKF91MSksIGFuZ2xlX2ZybShfdTIpKSkiKSk7CisgICAg
QVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2MzMgPSBhbmdsZV9mcm0oc3RlcChhbmdsZV9m
cm0oX3VmKSwgYW5nbGVfZnJtKF91MSkpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExT
TENvZGUoCisgICAgICAgICJ2MzQgPSBhbmdsZV9mcm0oc21vb3Roc3RlcChhbmdsZV9mcm0oX3Ux
KSwgYW5nbGVfZnJtKF91MiksIGFuZ2xlX2ZybShfdTMpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUo
Zm91bmRJbkhMU0xDb2RlKAorICAgICAgICAidjM1ID0gYW5nbGVfZnJtKHNtb290aHN0ZXAoYW5n
bGVfZnJtKF91ZiksIGFuZ2xlX2ZybShfdWYyKSwgYW5nbGVfZnJtKF91MSkpKSIpKTsKKyAgICBB
U1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoInYzNiA9IGFuZ2xlX2ZybShub3JtYWxpemUoYW5n
bGVfZnJtKF91MSkpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoCisgICAg
ICAgICJ2MzcgPSBhbmdsZV9mcm0od2ViZ2xfZmFjZWZvcndhcmRfZW11KGFuZ2xlX2ZybShfdTEp
LCBhbmdsZV9mcm0oX3UyKSwgYW5nbGVfZnJtKF91MykpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShm
b3VuZEluSExTTENvZGUoInYzOCA9IGFuZ2xlX2ZybShyZWZsZWN0KGFuZ2xlX2ZybShfdTEpLCBh
bmdsZV9mcm0oX3UyKSkpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgKKyAg
ICAgICAgInYzOSA9IGFuZ2xlX2ZybShyZWZyYWN0KGFuZ2xlX2ZybShfdTEpLCBhbmdsZV9mcm0o
X3UyKSwgYW5nbGVfZnJtKF91ZikpKSIpKTsKKworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNM
Q29kZSgiZjEgPSBhbmdsZV9mcm0obGVuZ3RoKGFuZ2xlX2ZybShfdTEpKSkiKSk7CisgICAgQVNT
RVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJmMiA9IGFuZ2xlX2ZybShkaXN0YW5jZShhbmdsZV9m
cm0oX3UxKSwgYW5nbGVfZnJtKF91MikpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExT
TENvZGUoImYzID0gYW5nbGVfZnJtKGRvdChhbmdsZV9mcm0oX3UxKSwgYW5nbGVfZnJtKF91Mikp
KSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoInZmMzEgPSBhbmdsZV9mcm0o
Y3Jvc3MoYW5nbGVfZnJtKF91ZjMxKSwgYW5nbGVfZnJtKF91ZjMyKSkpIikpOworICAgIEFTU0VS
VF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgibTEgPSBhbmdsZV9mcm0oKGFuZ2xlX2ZybShfdW0xKSAq
IGFuZ2xlX2ZybShfdW0yKSkpIikpOworfQorCitURVNUX0YoRGVidWdTaGFkZXJQcmVjaXNpb25U
ZXN0LCBCdWlsdEluUmVsYXRpb25hbEZ1bmN0aW9uUm91bmRpbmcpCit7CisgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDtcbiIKKyAgICAgICAgInVuaWZvcm0gdmVjNCB1MTtcbiIKKyAgICAgICAgInVuaWZvcm0gdmVj
NCB1MjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGJ2ZWM0IGJ2
MSA9IGxlc3NUaGFuKHUxLCB1Mik7XG4iCisgICAgICAgICIgICBidmVjNCBidjIgPSBsZXNzVGhh
bkVxdWFsKHUxLCB1Mik7XG4iCisgICAgICAgICIgICBidmVjNCBidjMgPSBncmVhdGVyVGhhbih1
MSwgdTIpO1xuIgorICAgICAgICAiICAgYnZlYzQgYnY0ID0gZ3JlYXRlclRoYW5FcXVhbCh1MSwg
dTIpO1xuIgorICAgICAgICAiICAgYnZlYzQgYnY1ID0gZXF1YWwodTEsIHUyKTtcbiIKKyAgICAg
ICAgIiAgIGJ2ZWM0IGJ2NiA9IG5vdEVxdWFsKHUxLCB1Mik7XG4iCisgICAgICAgICIgICBnbF9G
cmFnQ29sb3IgPSB2ZWM0KGJ2MSkgKyB2ZWM0KGJ2MikgKyB2ZWM0KGJ2MykgKyB2ZWM0KGJ2NCkg
KyB2ZWM0KGJ2NSkgKyB2ZWM0KGJ2Nik7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUo
c2hhZGVyU3RyaW5nKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoImJ2MSA9
IGxlc3NUaGFuKGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1MikpIikpOworICAgIEFTU0VSVF9U
UlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgiYnYyID0gbGVzc1RoYW5FcXVhbChhbmdsZV9mcm0odTEp
LCBhbmdsZV9mcm0odTIpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUo
ImJ2MyA9IGdyZWF0ZXJUaGFuKGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1MikpIikpOworICAg
IEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgiYnY0ID0gZ3JlYXRlclRoYW5FcXVhbChh
bmdsZV9mcm0odTEpLCBhbmdsZV9mcm0odTIpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZElu
QWxsR0xTTENvZGUoImJ2NSA9IGVxdWFsKGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1MikpIikp
OworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgiYnY2ID0gbm90RXF1YWwoYW5n
bGVfZnJtKHUxKSwgYW5nbGVfZnJtKHUyKSkiKSk7CisKKyAgICBBU1NFUlRfVFJVRShmb3VuZElu
SExTTENvZGUoImJ2MSA9IChhbmdsZV9mcm0oX3UxKSA8IGFuZ2xlX2ZybShfdTIpKSIpKTsKKyAg
ICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoImJ2MiA9IChhbmdsZV9mcm0oX3UxKSA8PSBh
bmdsZV9mcm0oX3UyKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJidjMg
PSAoYW5nbGVfZnJtKF91MSkgPiBhbmdsZV9mcm0oX3UyKSkiKSk7CisgICAgQVNTRVJUX1RSVUUo
Zm91bmRJbkhMU0xDb2RlKCJidjQgPSAoYW5nbGVfZnJtKF91MSkgPj0gYW5nbGVfZnJtKF91Mikp
IikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiYnY1ID0gKGFuZ2xlX2ZybShf
dTEpID09IGFuZ2xlX2ZybShfdTIpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENv
ZGUoImJ2NiA9IChhbmdsZV9mcm0oX3UxKSAhPSBhbmdsZV9mcm0oX3UyKSkiKSk7Cit9CisKK1RF
U1RfRihEZWJ1Z1NoYWRlclByZWNpc2lvblRlc3QsIENvbnN0cnVjdG9yUm91bmRpbmcpCit7Cisg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGludDtcbiIKKyAg
ICAgICAgInVuaWZvcm0gZmxvYXQgdTE7XG4iCisgICAgICAgICJ1bmlmb3JtIGZsb2F0IHUyO1xu
IgorICAgICAgICAidW5pZm9ybSBmbG9hdCB1MztcbiIKKyAgICAgICAgInVuaWZvcm0gZmxvYXQg
dTQ7XG4iCisgICAgICAgICJ1bmlmb3JtIGl2ZWM0IHVpdjtcbiIKKyAgICAgICAgInZvaWQgbWFp
bigpIHtcbiIKKyAgICAgICAgIiAgIHZlYzQgdjEgPSB2ZWM0KHUxLCB1MiwgdTMsIHU0KTtcbiIK
KyAgICAgICAgIiAgIHZlYzQgdjIgPSB2ZWM0KHVpdik7XG4iCisgICAgICAgICIgICBnbF9GcmFn
Q29sb3IgPSB2MSArIHYyO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0
cmluZyk7CisgICAgLy8gTm90ZTogdGhpcyBpcyBzdWJvcHRpbWFsIGZvciB0aGUgY2FzZSB0YWtp
bmcgZm91ciBmbG9hdHMsIGJ1dCBvcHRpbWl6aW5nIHdvdWxkIGJlIHRyaWNreS4KKyAgICBBU1NF
UlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoCisgICAgICAgICJ2MSA9IGFuZ2xlX2ZybSh2ZWM0
KGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1MiksIGFuZ2xlX2ZybSh1MyksIGFuZ2xlX2ZybSh1
NCkpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoInYyID0gYW5nbGVf
ZnJtKHZlYzQodWl2KSkiKSk7CisKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoCisg
ICAgICAgICJ2MSA9IGFuZ2xlX2ZybSh2ZWM0KGFuZ2xlX2ZybShfdTEpLCBhbmdsZV9mcm0oX3Uy
KSwgYW5nbGVfZnJtKF91MyksIGFuZ2xlX2ZybShfdTQpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUo
Zm91bmRJbkhMU0xDb2RlKCJ2MiA9IGFuZ2xlX2ZybSh2ZWM0KF91aXYpKSIpKTsKK30KKworVEVT
VF9GKERlYnVnU2hhZGVyUHJlY2lzaW9uVGVzdCwgU3RydWN0Q29uc3RydWN0b3JOb1JvdW5kaW5n
KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAicHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJzdHJ1Y3QgUyB7IG1lZGl1bXAgdmVj
NCBhOyB9O1xuIgorICAgICAgICAidW5pZm9ybSB2ZWM0IHU7XG4iCisgICAgICAgICJ2b2lkIG1h
aW4oKSB7XG4iCisgICAgICAgICIgICBTIHMgPSBTKHUpO1xuIgorICAgICAgICAiICAgZ2xfRnJh
Z0NvbG9yID0gcy5hO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmlu
Zyk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJzID0gUyhhbmdsZV9mcm0o
dSkpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgicyA9IF9TX2N0b3IoYW5n
bGVfZnJtKF91KSkiKSk7CisgICAgQVNTRVJUX1RSVUUobm90Rm91bmRJbkNvZGUoImFuZ2xlX2Zy
bShTIikpOworfQorCitURVNUX0YoRGVidWdTaGFkZXJQcmVjaXNpb25UZXN0LCBTd2l6emxlUm91
bmRpbmcpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAg
ICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gdmVjNCB1O1xu
IgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgdmVjNCB2ID0gdS54eXh5
OyIKKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHY7XG4iCisgICAgICAgICJ9XG4iOworICAg
IGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENv
ZGUoInYgPSBhbmdsZV9mcm0odSkueHl4eSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExT
TENvZGUoInYgPSBhbmdsZV9mcm0oX3UpLnh5eHkiKSk7Cit9CisKK1RFU1RfRihEZWJ1Z1NoYWRl
clByZWNpc2lvblRlc3QsIEJ1aWx0SW5UZXhGdW5jdGlvblJvdW5kaW5nKQoreworICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7XG4iCisgICAgICAgICJwcmVjaXNpb24gbG93cCBzYW1wbGVyMkQ7XG4iCisgICAgICAg
ICJ1bmlmb3JtIHZlYzIgdTtcbiIKKyAgICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHM7XG4iCisg
ICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBsb3dwIHZlYzQgdiA9IHRleHR1
cmUyRChzLCB1KTtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHY7XG4iCisgICAgICAg
ICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBBU1NFUlRfVFJVRShmb3Vu
ZEluQWxsR0xTTENvZGUoInYgPSBhbmdsZV9mcmwodGV4dHVyZTJEKHMsIGFuZ2xlX2ZybSh1KSkp
IikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidiA9IGFuZ2xlX2ZybChnbF90
ZXh0dXJlMkQoX3MsIGFuZ2xlX2ZybShfdSkpKSIpKTsKK30KKworVEVTVF9GKERlYnVnU2hhZGVy
UHJlY2lzaW9uVGVzdCwgRnVuY3Rpb25DYWxsUGFyYW1ldGVyUXVhbGlmaWVyc0Zyb21EZWZpbml0
aW9uKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAi
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzQgdTE7XG4i
CisgICAgICAgICJ1bmlmb3JtIHZlYzQgdTI7XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzQgdTM7
XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzQgdTQ7XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzQg
dTU7XG4iCisgICAgICAgICJ2ZWM0IGFkZChpbiB2ZWM0IHgsIGluIHZlYzQgeSkge1xuIgorICAg
ICAgICAiICAgcmV0dXJuIHggKyB5O1xuIgorICAgICAgICAifVxuIgorICAgICAgICAidm9pZCBj
b21wb3VuZF9hZGQoaW5vdXQgdmVjNCB4LCBpbiB2ZWM0IHkpIHtcbiIKKyAgICAgICAgIiAgIHgg
PSB4ICsgeTtcbiIKKyAgICAgICAgIn1cbiIKKyAgICAgICAgInZvaWQgYWRkX3RvX2xhc3QoaW4g
dmVjNCB4LCBpbiB2ZWM0IHksIG91dCB2ZWM0IHopIHtcbiIKKyAgICAgICAgIiAgIHogPSB4ICsg
eTtcbiIKKyAgICAgICAgIn1cbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAg
IiAgIHZlYzQgdiA9IGFkZCh1MSwgdTIpO1xuIgorICAgICAgICAiICAgY29tcG91bmRfYWRkKHYs
IHUzKTtcbiIKKyAgICAgICAgIiAgIHZlYzQgdjI7XG4iCisgICAgICAgICIgICBhZGRfdG9fbGFz
dCh1NCwgdTUsIHYyKTtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHYgKyB2MjtcbiIK
KyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIC8vIE5vdGUg
dGhhdCB0aGlzIGlzIG5vdCBvcHRpbWFsIGNvZGUsIHRoZXJlIGFyZSByZWR1bmRhbnQgZnJtIGNh
bGxzLgorICAgIC8vIEhvd2V2ZXIsIGdldHRpbmcgdGhlIGltcGxlbWVudGF0aW9uIHdvcmtpbmcg
d2hlbiBvdGhlciBvcGVyYXRpb25zCisgICAgLy8gYXJlIG5lc3RlZCB3aXRoaW4gZnVuY3Rpb24g
Y2FsbHMgd291bGQgYmUgdHJpY2t5IGlmIHRvIGdldCByaWdodAorICAgIC8vIG90aGVyd2lzZS4K
KyAgICAvLyBUZXN0IGluIHBhcmFtZXRlcnMKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xT
TENvZGUoInYgPSBhZGQoYW5nbGVfZnJtKHUxKSwgYW5nbGVfZnJtKHUyKSkiKSk7CisgICAgQVNT
RVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2ID0gX2FkZF9mbG9hdDRfZmxvYXQ0KGFuZ2xlX2Zy
bShfdTEpLCBhbmdsZV9mcm0oX3UyKSkiKSk7CisgICAgLy8gVGVzdCBpbm91dCBwYXJhbWV0ZXIK
KyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoImNvbXBvdW5kX2FkZCh2LCBhbmds
ZV9mcm0odTMpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoImNvbXBvdW5k
X2FkZF9mbG9hdDRfZmxvYXQ0KF92LCBhbmdsZV9mcm0oX3UzKSkiKSk7CisgICAgLy8gVGVzdCBv
dXQgcGFyYW1ldGVyCisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJhZGRfdG9f
bGFzdChhbmdsZV9mcm0odTQpLCBhbmdsZV9mcm0odTUpLCB2MikiKSk7CisgICAgQVNTRVJUX1RS
VUUoCisgICAgICAgIGZvdW5kSW5ITFNMQ29kZSgiYWRkX3RvX2xhc3RfZmxvYXQ0X2Zsb2F0NF9m
bG9hdDQoYW5nbGVfZnJtKF91NCksIGFuZ2xlX2ZybShfdTUpLCBfdjIpIikpOworfQorCitURVNU
X0YoRGVidWdTaGFkZXJQcmVjaXNpb25UZXN0LCBGdW5jdGlvbkNhbGxQYXJhbWV0ZXJRdWFsaWZp
ZXJzRnJvbVByb3RvdHlwZSkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5n
ID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidW5pZm9y
bSB2ZWM0IHUxO1xuIgorICAgICAgICAidW5pZm9ybSB2ZWM0IHUyO1xuIgorICAgICAgICAidW5p
Zm9ybSB2ZWM0IHUzO1xuIgorICAgICAgICAidW5pZm9ybSB2ZWM0IHU0O1xuIgorICAgICAgICAi
dW5pZm9ybSB2ZWM0IHU1O1xuIgorICAgICAgICAidmVjNCBhZGQoaW4gdmVjNCB4LCBpbiB2ZWM0
IHkpO1xuIgorICAgICAgICAidm9pZCBjb21wb3VuZF9hZGQoaW5vdXQgdmVjNCB4LCBpbiB2ZWM0
IHkpO1xuIgorICAgICAgICAidm9pZCBhZGRfdG9fbGFzdChpbiB2ZWM0IHgsIGluIHZlYzQgeSwg
b3V0IHZlYzQgeik7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICB2
ZWM0IHYgPSBhZGQodTEsIHUyKTtcbiIKKyAgICAgICAgIiAgIGNvbXBvdW5kX2FkZCh2LCB1Myk7
XG4iCisgICAgICAgICIgICB2ZWM0IHYyO1xuIgorICAgICAgICAiICAgYWRkX3RvX2xhc3QodTQs
IHU1LCB2Mik7XG4iCisgICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ICsgdjI7XG4iCisgICAg
ICAgICJ9XG4iCisgICAgICAgICJ2ZWM0IGFkZChpbiB2ZWM0IHgsIGluIHZlYzQgeSkge1xuIgor
ICAgICAgICAiICAgcmV0dXJuIHggKyB5O1xuIgorICAgICAgICAifVxuIgorICAgICAgICAidm9p
ZCBjb21wb3VuZF9hZGQoaW5vdXQgdmVjNCB4LCBpbiB2ZWM0IHkpIHtcbiIKKyAgICAgICAgIiAg
IHggPSB4ICsgeTtcbiIKKyAgICAgICAgIn1cbiIKKyAgICAgICAgInZvaWQgYWRkX3RvX2xhc3Qo
aW4gdmVjNCB4LCBpbiB2ZWM0IHksIG91dCB2ZWM0IHopIHtcbiIKKyAgICAgICAgIiAgIHogPSB4
ICsgeTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAg
IC8vIFRlc3QgaW4gcGFyYW1ldGVycworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29k
ZSgidiA9IGFkZChhbmdsZV9mcm0odTEpLCBhbmdsZV9mcm0odTIpKSIpKTsKKyAgICBBU1NFUlRf
VFJVRShmb3VuZEluSExTTENvZGUoInYgPSBfYWRkX2Zsb2F0NF9mbG9hdDQoYW5nbGVfZnJtKF91
MSksIGFuZ2xlX2ZybShfdTIpKSIpKTsKKyAgICAvLyBUZXN0IGlub3V0IHBhcmFtZXRlcgorICAg
IEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgiY29tcG91bmRfYWRkKHYsIGFuZ2xlX2Zy
bSh1MykpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiY29tcG91bmRfYWRk
X2Zsb2F0NF9mbG9hdDQoX3YsIGFuZ2xlX2ZybShfdTMpKSIpKTsKKyAgICAvLyBUZXN0IG91dCBw
YXJhbWV0ZXIKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoImFkZF90b19sYXN0
KGFuZ2xlX2ZybSh1NCksIGFuZ2xlX2ZybSh1NSksIHYyKSIpKTsKKyAgICBBU1NFUlRfVFJVRSgK
KyAgICAgICAgZm91bmRJbkhMU0xDb2RlKCJhZGRfdG9fbGFzdF9mbG9hdDRfZmxvYXQ0X2Zsb2F0
NChhbmdsZV9mcm0oX3U0KSwgYW5nbGVfZnJtKF91NSksIF92MikiKSk7Cit9CisKK1RFU1RfRihE
ZWJ1Z1NoYWRlclByZWNpc2lvblRlc3QsIE5lc3RlZEZ1bmN0aW9uQ2FsbHMpCit7CisgICAgY29u
c3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gdmVjNCB1MTtcbiIKKyAgICAgICAgInVuaWZv
cm0gdmVjNCB1MjtcbiIKKyAgICAgICAgInVuaWZvcm0gdmVjNCB1MztcbiIKKyAgICAgICAgInZl
YzQgYWRkKGluIHZlYzQgeCwgaW4gdmVjNCB5KSB7XG4iCisgICAgICAgICIgICByZXR1cm4geCAr
IHk7XG4iCisgICAgICAgICJ9XG4iCisgICAgICAgICJ2ZWM0IGNvbXBvdW5kX2FkZChpbm91dCB2
ZWM0IHgsIGluIHZlYzQgeSkge1xuIgorICAgICAgICAiICAgeCA9IHggKyB5O1xuIgorICAgICAg
ICAiICAgcmV0dXJuIHg7XG4iCisgICAgICAgICJ9XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7
XG4iCisgICAgICAgICIgICB2ZWM0IHYgPSB1MTtcbiIKKyAgICAgICAgIiAgIHZlYzQgdjIgPSBh
ZGQoY29tcG91bmRfYWRkKHYsIHUyKSwgZnJhY3QodTMpKTtcbiIKKyAgICAgICAgIiAgIGdsX0Zy
YWdDb2xvciA9IHYgKyB2MjtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJT
dHJpbmcpOworICAgIC8vIFRlc3QgbmVzdGVkIGNhbGxzCisgICAgQVNTRVJUX1RSVUUoZm91bmRJ
bkFsbEdMU0xDb2RlKAorICAgICAgICAidjIgPSBhZGQoY29tcG91bmRfYWRkKHYsIGFuZ2xlX2Zy
bSh1MikpLCBhbmdsZV9mcm0oZnJhY3QoYW5nbGVfZnJtKHUzKSkpKSIpKTsKKyAgICBBU1NFUlRf
VFJVRSgKKyAgICAgICAgZm91bmRJbkhMU0xDb2RlKCJ2MiA9IF9hZGRfZmxvYXQ0X2Zsb2F0NChf
Y29tcG91bmRfYWRkX2Zsb2F0NF9mbG9hdDQoX3YsIGFuZ2xlX2ZybShfdTIpKSwgIgorICAgICAg
ICAgICAgICAgICAgICAgICAgImFuZ2xlX2ZybShmcmFjKGFuZ2xlX2ZybShfdTMpKSkpIikpOwor
fQorCisvLyBUZXN0IHRoYXQgY29kZSBpbnNpZGUgYW4gaW5kZXggb2YgYSBmdW5jdGlvbiBvdXQg
cGFyYW1ldGVyIGdldHMgcHJvY2Vzc2VkLgorVEVTVF9GKERlYnVnU2hhZGVyUHJlY2lzaW9uVGVz
dCwgT3BJbkluZGV4T2ZGdW5jdGlvbk91dFBhcmFtZXRlcikKK3sKKyAgICBjb25zdCBzdGQ6OnN0
cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xu
IgorICAgICAgICAidm9pZCBmb28ob3V0IHZlYzQgZikgeyBmLnggPSAwLjA7IH1cbiIKKyAgICAg
ICAgInVuaWZvcm0gZmxvYXQgdTI7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAg
ICAgICIgICB2ZWM0IHZbMl07XG4iCisgICAgICAgICIgICBmb28odltpbnQoZXhwMih1MikpXSk7
XG4iCisgICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2WzBdO1xuIgorICAgICAgICAifVxuIjsK
KyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdM
U0xDb2RlKCJhbmdsZV9mcm0oZXhwMihhbmdsZV9mcm0odTIpKSkiKSk7CisgICAgQVNTRVJUX1RS
VUUoZm91bmRJbkhMU0xDb2RlKCJhbmdsZV9mcm0oZXhwMihhbmdsZV9mcm0oX3UyKSkpIikpOwor
fQorCisvLyBUZXN0IHRoYXQgY29kZSBpbnNpZGUgYW4gaW5kZXggb2YgYW4gbC12YWx1ZSBnZXRz
IHByb2Nlc3NlZC4KK1RFU1RfRihEZWJ1Z1NoYWRlclByZWNpc2lvblRlc3QsIE9wSW5JbmRleE9m
TFZhbHVlKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAg
ICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzQgdTE7
XG4iCisgICAgICAgICJ1bmlmb3JtIGZsb2F0IHUyO1xuIgorICAgICAgICAidm9pZCBtYWluKCkg
e1xuIgorICAgICAgICAiICAgdmVjNCB2WzJdO1xuIgorICAgICAgICAiICAgdltpbnQoZXhwMih1
MikpXSA9IHUxO1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdlswXTtcbiIKKyAgICAg
ICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VSVF9UUlVFKGZv
dW5kSW5BbGxHTFNMQ29kZSgiYW5nbGVfZnJtKGV4cDIoYW5nbGVfZnJtKHUyKSkpIikpOworICAg
IEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiYW5nbGVfZnJtKGV4cDIoYW5nbGVfZnJtKF91
MikpKSIpKTsKK30KKworLy8gVGVzdCB0aGF0IHRoZSBvdXQgcGFyYW1ldGVyIG9mIG1vZGYgZG9l
c24ndCBnZXQgcm91bmRlZAorVEVTVF9GKERlYnVnU2hhZGVyUHJlY2lzaW9uVGVzdCwgTW9kZk91
dFBhcmFtZXRlcikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAg
ICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7XG4iCisgICAgICAgICJ1bmlmb3JtIGZsb2F0IHU7XG4iCisgICAgICAgICJvdXQgdmVjNCBt
eV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBm
bG9hdCBvO1xuIgorICAgICAgICAiICAgZmxvYXQgZiA9IG1vZGYodSwgbyk7XG4iCisgICAgICAg
ICIgICBteV9GcmFnQ29sb3IgPSB2ZWM0KGYsIG8sIDAsIDEpO1xuIgorICAgICAgICAifVxuIjsK
KyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdM
U0xDb2RlKCJtb2RmKGFuZ2xlX2ZybSh1KSwgbykiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJ
bkhMU0xDb2RlKCJtb2RmKGFuZ2xlX2ZybShfdSksIF9vKSIpKTsKK30KKworI2lmIGRlZmluZWQo
QU5HTEVfRU5BQkxFX0hMU0wpCisvLyBUZXN0cyBwcmVjaXNpb24gZW11bGF0aW9uIHdpdGggSExT
TCAzLjAgb3V0cHV0IC0tIHNob3VsZCBlcnJvciBncmFjZWZ1bGx5LgorVEVTVChEZWJ1Z1NoYWRl
clByZWNpc2lvbk5lZ2F0aXZlVGVzdCwgSExTTDNVbnN1cHBvcnRlZCkKK3sKKyAgICBjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0O1xuIgorICAgICAgICAidW5pZm9ybSBmbG9hdCB1O1xuIgorICAgICAgICAidm9pZCBtYWlu
KCkge1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh1KTtcbiIKKyAgICAgICAg
In1cbiI7CisgICAgc3RkOjpzdHJpbmcgaW5mb0xvZzsKKyAgICBzdGQ6OnN0cmluZyB0cmFuc2xh
dGVkQ29kZTsKKyAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgcmVzb3VyY2VzOworICAgIFNoSW5pdEJ1
aWx0SW5SZXNvdXJjZXMoJnJlc291cmNlcyk7CisgICAgcmVzb3VyY2VzLldFQkdMX2RlYnVnX3No
YWRlcl9wcmVjaXNpb24gPSAxOworICAgIEFTU0VSVF9GQUxTRShjb21waWxlVGVzdFNoYWRlcihH
TF9GUkFHTUVOVF9TSEFERVIsIFNIX0dMRVMzX1NQRUMsIFNIX0hMU0xfM18wX09VVFBVVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZGVyU3RyaW5nLCAmcmVzb3VyY2Vz
LCAwLCAmdHJhbnNsYXRlZENvZGUsICZpbmZvTG9nKSk7Cit9CisjZW5kaWYgIC8vIGRlZmluZWQo
QU5HTEVfRU5BQkxFX0hMU0wpCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvY29tcGlsZXJfdGVzdHMvRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWRfdGVzdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3Rz
L0VYVF9ibGVuZF9mdW5jX2V4dGVuZGVkX3Rlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9FWFRfYmxlbmRfZnVu
Y19leHRlbmRlZF90ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4NSBAQAorLy8K
Ky8vIENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vCisvLyBFWFRfYmxlbmRfZnVuY19leHRlbmRlZC5jcHA6CisvLyAgIFRlc3QgZm9y
IEVYVF9ibGVuZF9mdW5jX2V4dGVuZGVkX3Rlc3QKKy8vCisKKyNpbmNsdWRlICJhbmdsZV9nbC5o
IgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5n
LmgiCisKK3VzaW5nIHRlc3Rpbmc6OkNvbWJpbmU7Cit1c2luZyB0ZXN0aW5nOjpWYWx1ZXM7Cit1
c2luZyB0ZXN0aW5nOjptYWtlX3R1cGxlOworCituYW1lc3BhY2UKK3sKK2NvbnN0IGNoYXIgRVNT
TFZlcnNpb24xMDBbXSA9ICIjdmVyc2lvbiAxMDBcbiI7Citjb25zdCBjaGFyIEVTU0xWZXJzaW9u
MzAwW10gPSAiI3ZlcnNpb24gMzAwIGVzXG4iOworY29uc3QgY2hhciBFU1NMVmVyc2lvbjMxMFtd
ID0gIiN2ZXJzaW9uIDMxMCBlc1xuIjsKK2NvbnN0IGNoYXIgRVhUQkZFUHJhZ21hW10gICA9ICIj
ZXh0ZW5zaW9uIEdMX0VYVF9ibGVuZF9mdW5jX2V4dGVuZGVkIDogcmVxdWlyZVxuIjsKKworY29u
c3QgY2hhciBFU1NMMTAwX1NpbXBsZVNoYWRlcjFbXSA9CisgICAgInByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0O1xuIgorICAgICJ2b2lkIG1haW4oKSB7IFxuIgorICAgICIgICAgZ2xfRnJhZ0NvbG9y
ID0gdmVjNCgxLjApO1xuIgorICAgICIgICAgZ2xfU2Vjb25kYXJ5RnJhZ0NvbG9yRVhUID0gdmVj
NChnbF9NYXhEdWFsU291cmNlRHJhd0J1ZmZlcnNFWFQgLyAxMCk7XG4iCisgICAgIn1cbiI7CisK
Ky8vIFNoYWRlciB0aGF0IHRlc3RzIG9ubHkgdGhlIGFjY2VzcyB0byBnbF9NYXhEdWFsU291cmNl
RHJhd0J1ZmZlcnNFWFQuCitjb25zdCBjaGFyIEVTU0wxMDBfTWF4RHVhbFNvdXJjZUFjY2Vzc1No
YWRlcltdID0KKyAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgInZvaWQgbWFp
bigpIHsgZ2xfRnJhZ0NvbG9yID0gdmVjNChnbF9NYXhEdWFsU291cmNlRHJhd0J1ZmZlcnNFWFQg
LyAxMCk7IH1cbiI7CisKKy8vIFNoYWRlciB0aGF0IHdyaXRlcyB0byBTZWNvbmRhcnlGcmFnRGF0
YS4KK2NvbnN0IGNoYXIgRVNTTDEwMF9GcmFnRGF0YVNoYWRlcltdID0KKyAgICAiI2V4dGVuc2lv
biBHTF9FWFRfZHJhd19idWZmZXJzIDogcmVxdWlyZVxuIgorICAgICJwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDtcbiIKKyAgICAidm9pZCBtYWluKCkge1xuIgorICAgICIgICAgZ2xfRnJhZ0RhdGFb
Z2xfTWF4RHJhd0J1ZmZlcnMgLSAxXSA9IHZlYzQoMS4wKTtcbiIKKyAgICAiICAgIGdsX1NlY29u
ZGFyeUZyYWdEYXRhRVhUW2dsX01heER1YWxTb3VyY2VEcmF3QnVmZmVyc0VYVCAtIDFdID0gdmVj
NCgwLjEpO1xuIgorICAgICJ9XG4iOworCisvLyBTaGFkZXIgdGhhdCB3cml0ZXMgdG8gU2Vjb25k
YXJ5RnJhZ0NvbG9yIGFuZCBTZWNvbmRhcnlGcmFnRGF0YSBkb2VzIG5vdCBjb21waWxlLgorY29u
c3QgY2hhciBFU1NMMTAwX0NvbG9yQW5kRGF0YVdyaXRlRmFpbHVyZVNoYWRlcjFbXSA9CisgICAg
InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAg
IiAgICBnbF9TZWNvbmRhcnlGcmFnQ29sb3JFWFQgPSB2ZWM0KDEuMCk7XG4iCisgICAgIiAgICBn
bF9TZWNvbmRhcnlGcmFnRGF0YUVYVFtnbF9NYXhEdWFsU291cmNlRHJhd0J1ZmZlcnNFWFRdID0g
dmVjNCgwLjEpO1xuIgorICAgICJ9XG4iOworCisvLyBTaGFkZXIgdGhhdCB3cml0ZXMgdG8gRnJh
Z0NvbG9yIGFuZCBTZWNvbmRhcnlGcmFnRGF0YSBkb2VzIG5vdCBjb21waWxlLgorY29uc3QgY2hh
ciBFU1NMMTAwX0NvbG9yQW5kRGF0YVdyaXRlRmFpbHVyZVNoYWRlcjJbXSA9CisgICAgInByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgIiAgICBn
bF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XG4iCisgICAgIiAgICBnbF9TZWNvbmRhcnlGcmFnRGF0
YUVYVFtnbF9NYXhEdWFsU291cmNlRHJhd0J1ZmZlcnNFWFRdID0gdmVjNCgwLjEpO1xuIgorICAg
ICJ9XG4iOworCisvLyBTaGFkZXIgdGhhdCB3cml0ZXMgdG8gRnJhZ0RhdGEgYW5kIFNlY29uZGFy
eUZyYWdDb2xvci4KK2NvbnN0IGNoYXIgRVNTTDEwMF9Db2xvckFuZERhdGFXcml0ZUZhaWx1cmVT
aGFkZXIzW10gPQorICAgICIjZXh0ZW5zaW9uIEdMX0VYVF9kcmF3X2J1ZmZlcnMgOiByZXF1aXJl
XG4iCisgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICJ2b2lkIG1haW4oKSB7
XG4iCisgICAgIiAgICBnbF9TZWNvbmRhcnlGcmFnQ29sb3JFWFQgPSB2ZWM0KDEuMCk7XG4iCisg
ICAgIiAgICBnbF9GcmFnRGF0YVtnbF9NYXhEcmF3QnVmZmVyc10gPSB2ZWM0KDAuMSk7XG4iCisg
ICAgIn1cbiI7CisKKy8vIEluIEdMU0wgdmVyc2lvbiAzMDAgZXMsIHRoZSBnbF9NYXhEdWFsU291
cmNlRHJhd0J1ZmZlcnNFWFQgaXMgYXZhaWxhYmxlLgorY29uc3QgY2hhciBFU1NMMzAwX01heER1
YWxTb3VyY2VBY2Nlc3NTaGFkZXJbXSA9CisgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xu
IgorICAgICJsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGZyYWdDb2xvcjsi
CisgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAiICAgIGZyYWdDb2xvciA9IHZlYzQoZ2xfTWF4
RHVhbFNvdXJjZURyYXdCdWZmZXJzRVhUIC8gMTApO1xuIgorICAgICJ9XG4iOworCisvLyBJbiBH
TFNMIHZlcnNpb24gMzAwIGVzLCB0aGUgb25seSB3YXkgdG8gd3JpdGUgYSBjb3JyZWN0IHNoYWRl
ciBpcyB0byByZXF1aXJlIHRoZSBleHRlbnNpb24gYW5kCisvLyB0aGVuIGxlYXZlIHRoZSBsb2Nh
dGlvbnMgdW5zcGVjaWZpZWQuIFRoZSBjYWxsZXIgd2lsbCB0aGVuIGJpbmQgdGhlIHZhcmlhYmxl
cyB3aXRoIHRoZSBleHRlbnNpb24KKy8vIGJpbmRpbmcgZnVuY3Rpb25zLgorY29uc3QgY2hhciBF
U1NMMzAwX0xvY2F0aW9uQW5kVW5zcGVjaWZpZWRPdXRwdXRTaGFkZXJbXSA9CisgICAgInByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICJsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVk
aXVtcCB2ZWM0IGZyYWdDb2xvcjsiCisgICAgIm91dCBtZWRpdW1wIHZlYzQgc2Vjb25kYXJ5RnJh
Z0NvbG9yOyIKKyAgICAidm9pZCBtYWluKCkge1xuIgorICAgICIgICAgZnJhZ0NvbG9yID0gdmVj
NCgxLjApO1xuIgorICAgICIgICAgc2Vjb25kYXJ5RnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgor
ICAgICJ9XG4iOworCitjb25zdCBjaGFyIEVTU0wzMDBfVHdvVW5zcGVjaWZpZWRMb2NhdGlvbk91
dHB1dHNTaGFkZXJbXSA9CisgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICJv
dXQgbWVkaXVtcCB2ZWM0IGZyYWdDb2xvcjsiCisgICAgIm91dCBtZWRpdW1wIHZlYzQgc2Vjb25k
YXJ5RnJhZ0NvbG9yOyIKKyAgICAidm9pZCBtYWluKCkge1xuIgorICAgICIgICAgZnJhZ0NvbG9y
ID0gdmVjNCgxLjApO1xuIgorICAgICIgICAgc2Vjb25kYXJ5RnJhZ0NvbG9yID0gdmVjNCgxLjAp
O1xuIgorICAgICJ9XG4iOworCisvLyBTaGFkZXIgdGhhdCBpcyBjb3JyZWN0IGluIEdMU0wgRVMg
My4xMCBmYWlscyB3aGVuIHVzZWQgaW4gdmVyc2lvbiAzMDAgZXMuCitjb25zdCBjaGFyIEVTU0wz
MTBfTG9jYXRpb25JbmRleFNoYWRlcltdID0KKyAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
XG4iCisgICAgImxheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgZnJhZ0NvbG9y
OyIKKyAgICAibGF5b3V0KGxvY2F0aW9uID0gMCwgaW5kZXggPSAxKSBvdXQgbWVkaXVtcCB2ZWM0
IHNlY29uZGFyeUZyYWdDb2xvcjsiCisgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAiICAgZnJh
Z0NvbG9yID0gdmVjNCgxKTtcbiIKKyAgICAiICAgc2Vjb25kYXJ5RnJhZ0NvbG9yID0gdmVjNCgx
KTtcbiIKKyAgICAifVxuIjsKKworLy8gU2hhZGVyIHRoYXQgc3BlY2lmaWVzIGluZGV4IGxheW91
dCBxdWFsaWZpZXIgYnV0IG5vdCBsb2NhdGlvbiBmYWlscyB0byBjb21waWxlLiBDdXJyZW50bHkg
ZmFpbHMKKy8vIHRvIGNvbXBpbGUgZHVlIHRvIHZlcnNpb24gMzEwIGVzIG5vdCBiZWluZyBzdXBw
b3J0ZWQuCitjb25zdCBjaGFyIEVTU0wzMTBfTG9jYXRpb25JbmRleEZhaWx1cmVTaGFkZXJbXSA9
CisgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICJsYXlvdXQobG9jYXRpb24g
PSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGZyYWdDb2xvcjsiCisgICAgImxheW91dChpbmRleCA9IDEp
IG91dCBtZWRpdW1wIHZlYzQgc2Vjb25kYXJ5RnJhZ0NvbG9yOyIKKyAgICAidm9pZCBtYWluKCkg
e1xuIgorICAgICIgICBmcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XG4iCisgICAgIiAgIHNlY29uZGFy
eUZyYWdDb2xvciA9IHZlYzQoMS4wKTtcbiIKKyAgICAifVxuIjsKKworY2xhc3MgRVhUQmxlbmRG
dW5jRXh0ZW5kZWRUZXN0CisgICAgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTx0ZXN0
aW5nOjp0dXBsZTxTaFNoYWRlclNwZWMsIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqPj4KK3sK
KyAgcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCisgICAgeworICAgICAgICBT
aEluaXRCdWlsdEluUmVzb3VyY2VzKCZtUmVzb3VyY2VzKTsKKyAgICAgICAgLy8gRVhUX2RyYXdf
YnVmZmVycyBpcyB1c2VkIGluIHNvbWUgb2YgdGhlIHNoYWRlcnMgZm9yIHRlc3QgcHVycG9zZXMu
CisgICAgICAgIG1SZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycyA9IDE7CisgICAgICAgIG1SZXNv
dXJjZXMuTlZfZHJhd19idWZmZXJzICA9IDI7CisKKyAgICAgICAgbUNvbXBpbGVyID0gTlVMTDsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7IERlc3Ryb3lDb21waWxlcigp
OyB9CisgICAgdm9pZCBEZXN0cm95Q29tcGlsZXIoKQorICAgIHsKKyAgICAgICAgaWYgKG1Db21w
aWxlcikKKyAgICAgICAgeworICAgICAgICAgICAgU2hEZXN0cnVjdChtQ29tcGlsZXIpOworICAg
ICAgICAgICAgbUNvbXBpbGVyID0gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQg
SW5pdGlhbGl6ZUNvbXBpbGVyKCkKKyAgICB7CisgICAgICAgIERlc3Ryb3lDb21waWxlcigpOwor
ICAgICAgICBtQ29tcGlsZXIgPSBTaENvbnN0cnVjdENvbXBpbGVyKEdMX0ZSQUdNRU5UX1NIQURF
UiwgdGVzdGluZzo6Z2V0PDA+KEdldFBhcmFtKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNIX0dMU0xfQ09NUEFUSUJJTElUWV9PVVRQVVQsICZtUmVzb3VyY2Vz
KTsKKyAgICAgICAgQVNTRVJUX1RSVUUobUNvbXBpbGVyICE9IE5VTEwpIDw8ICJDb21waWxlciBj
b3VsZCBub3QgYmUgY29uc3RydWN0ZWQuIjsKKyAgICB9CisKKyAgICB0ZXN0aW5nOjpBc3NlcnRp
b25SZXN1bHQgVGVzdFNoYWRlckNvbXBpbGUoY29uc3QgY2hhciAqcHJhZ21hKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIFRlc3RTaGFkZXJDb21waWxlKHRlc3Rpbmc6OmdldDwxPihHZXRQYXJhbSgp
KSwgIC8vIFZlcnNpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmFnbWEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpnZXQ8Mj4oR2V0UGFy
YW0oKSkgIC8vIFNoYWRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Cisg
ICAgfQorCisgICAgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFRlc3RTaGFkZXJDb21waWxlKGNv
bnN0IGNoYXIgKnZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIgKnByYWdtYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2hhZGVyKQorICAgIHsKKyAgICAgICAg
Y29uc3QgY2hhciAqc2hhZGVyU3RyaW5nc1tdID0ge3ZlcnNpb24sIHByYWdtYSwgc2hhZGVyfTsK
KyAgICAgICAgYm9vbCBzdWNjZXNzID0gU2hDb21waWxlKG1Db21waWxlciwgc2hhZGVyU3RyaW5n
cywgMywgMCk7CisgICAgICAgIGlmIChzdWNjZXNzKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCkgPDwgIkNvbXBpbGF0aW9uIHN1Y2Nl
c3MiOworICAgICAgICB9CisgICAgICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1
cmUoKSA8PCBTaEdldEluZm9Mb2cobUNvbXBpbGVyKTsKKyAgICB9CisKKyAgcHJvdGVjdGVkOgor
ICAgIFNoQnVpbHRJblJlc291cmNlcyBtUmVzb3VyY2VzOworICAgIFNoSGFuZGxlIG1Db21waWxl
cjsKK307CisKKy8vIEV4dGVuc2lvbiBmbGFnIGlzIHJlcXVpcmVkIHRvIGNvbXBpbGUgcHJvcGVy
bHkuIEV4cGVjdCBmYWlsdXJlIHdoZW4gaXQgaXMKKy8vIG5vdCBwcmVzZW50LgorVEVTVF9QKEVY
VEJsZW5kRnVuY0V4dGVuZGVkVGVzdCwgQ29tcGlsZUZhaWxzV2l0aG91dEV4dGVuc2lvbikKK3sK
KyAgICBtUmVzb3VyY2VzLkVYVF9ibGVuZF9mdW5jX2V4dGVuZGVkID0gMDsKKyAgICBJbml0aWFs
aXplQ29tcGlsZXIoKTsKKyAgICBFWFBFQ1RfRkFMU0UoVGVzdFNoYWRlckNvbXBpbGUoRVhUQkZF
UHJhZ21hKSk7Cit9CisKKy8vIEV4dGVuc2lvbiBkaXJlY3RpdmUgaXMgcmVxdWlyZWQgdG8gY29t
cGlsZSBwcm9wZXJseS4gRXhwZWN0IGZhaWx1cmUgd2hlbgorLy8gaXQgaXMgbm90IHByZXNlbnQu
CitURVNUX1AoRVhUQmxlbmRGdW5jRXh0ZW5kZWRUZXN0LCBDb21waWxlRmFpbHNXaXRoRXh0ZW5z
aW9uV2l0aG91dFByYWdtYSkKK3sKKyAgICBtUmVzb3VyY2VzLkVYVF9ibGVuZF9mdW5jX2V4dGVu
ZGVkICA9IDE7CisgICAgbVJlc291cmNlcy5NYXhEdWFsU291cmNlRHJhd0J1ZmZlcnMgPSAxOwor
ICAgIEluaXRpYWxpemVDb21waWxlcigpOworICAgIEVYUEVDVF9GQUxTRShUZXN0U2hhZGVyQ29t
cGlsZSgiIikpOworfQorCisvLyBXaXRoIGV4dGVuc2lvbiBmbGFnIGFuZCBleHRlbnNpb24gZGly
ZWN0aXZlLCBjb21waWxpbmcgc3VjY2VlZHMuCisvLyBBbHNvIHRlc3QgdGhhdCB0aGUgZXh0ZW5z
aW9uIGRpcmVjdGl2ZSBzdGF0ZSBpcyByZXNldCBjb3JyZWN0bHkuCitURVNUX1AoRVhUQmxlbmRG
dW5jRXh0ZW5kZWRUZXN0LCBDb21waWxlU3VjY2VlZHNXaXRoRXh0ZW5zaW9uQW5kUHJhZ21hKQor
eworICAgIG1SZXNvdXJjZXMuRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWQgID0gMTsKKyAgICBtUmVz
b3VyY2VzLk1heER1YWxTb3VyY2VEcmF3QnVmZmVycyA9IDE7CisgICAgSW5pdGlhbGl6ZUNvbXBp
bGVyKCk7CisgICAgRVhQRUNUX1RSVUUoVGVzdFNoYWRlckNvbXBpbGUoRVhUQkZFUHJhZ21hKSk7
CisgICAgLy8gVGVzdCByZXNldCBmdW5jdGlvbmFsaXR5LgorICAgIEVYUEVDVF9GQUxTRShUZXN0
U2hhZGVyQ29tcGlsZSgiIikpOworICAgIEVYUEVDVF9UUlVFKFRlc3RTaGFkZXJDb21waWxlKEVY
VEJGRVByYWdtYSkpOworfQorCisvLyBUaGUgU0wgI3ZlcnNpb24gMTAwIHNoYWRlcnMgdGhhdCBh
cmUgY29ycmVjdCB3b3JrIHNpbWlsYXJseQorLy8gaW4gYm90aCBHTDIgYW5kIEdMMywgd2l0aCBh
bmQgd2l0aG91dCB0aGUgdmVyc2lvbiBzdHJpbmcuCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChD
b3JyZWN0RVNTTDEwMFNoYWRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICBFWFRCbGVuZEZ1
bmNFeHRlbmRlZFRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBDb21iaW5lKFZhbHVlcyhT
SF9HTEVTMl9TUEVDLCBTSF9HTEVTM19TUEVDKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsdWVzKCIiLCBFU1NMVmVyc2lvbjEwMCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbHVlcyhFU1NMMTAwX1NpbXBsZVNoYWRlcjEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFU1NMMTAwX01heER1YWxTb3VyY2VBY2Nlc3NTaGFkZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFU1NMMTAwX0ZyYWdEYXRh
U2hhZGVyKSkpOworCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChDb3JyZWN0RVNTTDMwMFNoYWRl
cnMsCisgICAgICAgICAgICAgICAgICAgICAgICBFWFRCbGVuZEZ1bmNFeHRlbmRlZFRlc3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICBDb21iaW5lKFZhbHVlcyhTSF9HTEVTM19TUEVDKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKEVTU0xWZXJzaW9uMzAwKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKEVTU0wzMDBfTWF4RHVhbFNvdXJj
ZUFjY2Vzc1NoYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVT
U0wzMDBfTG9jYXRpb25BbmRVbnNwZWNpZmllZE91dHB1dFNoYWRlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEVTU0wzMDBfVHdvVW5zcGVjaWZpZWRMb2NhdGlvbk91
dHB1dHNTaGFkZXIpKSk7CisKK2NsYXNzIEVYVEJsZW5kRnVuY0V4dGVuZGVkQ29tcGlsZUZhaWx1
cmVUZXN0IDogcHVibGljIEVYVEJsZW5kRnVuY0V4dGVuZGVkVGVzdAoreworfTsKKworVEVTVF9Q
KEVYVEJsZW5kRnVuY0V4dGVuZGVkQ29tcGlsZUZhaWx1cmVUZXN0LCBDb21waWxlRmFpbHMpCit7
CisgICAgLy8gRXhwZWN0IGNvbXBpbGUgZmFpbHVyZSBkdWUgdG8gc2hhZGVyIGVycm9yLCB3aXRo
IHNoYWRlciBoYXZpbmcgY29ycmVjdCBwcmFnbWEuCisgICAgbVJlc291cmNlcy5FWFRfYmxlbmRf
ZnVuY19leHRlbmRlZCAgPSAxOworICAgIG1SZXNvdXJjZXMuTWF4RHVhbFNvdXJjZURyYXdCdWZm
ZXJzID0gMTsKKyAgICBJbml0aWFsaXplQ29tcGlsZXIoKTsKKyAgICBFWFBFQ1RfRkFMU0UoVGVz
dFNoYWRlckNvbXBpbGUoRVhUQkZFUHJhZ21hKSk7Cit9CisKKy8vIEluY29ycmVjdCAjdmVyc2lv
biAxMDAgc2hhZGVycyBmYWlsLgorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoSW5jb3JyZWN0RVNT
TDEwMFNoYWRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICBFWFRCbGVuZEZ1bmNFeHRlbmRl
ZENvbXBpbGVGYWlsdXJlVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbWJpbmUoVmFs
dWVzKFNIX0dMRVMyX1NQRUMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1
ZXMoRVNTTFZlcnNpb24xMDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1
ZXMoRVNTTDEwMF9Db2xvckFuZERhdGFXcml0ZUZhaWx1cmVTaGFkZXIxLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRVNTTDEwMF9Db2xvckFuZERhdGFXcml0ZUZhaWx1
cmVTaGFkZXIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVNTTDEw
MF9Db2xvckFuZERhdGFXcml0ZUZhaWx1cmVTaGFkZXIzKSkpOworCisvLyBDb3JyZWN0ICN2ZXJz
aW9uIDMwMCBlcyBzaGFkZXJzIGZhaWwgaW4gR0xFUzIgY29udGV4dCwgcmVnYXJkbGVzcyBvZiB2
ZXJzaW9uIHN0cmluZy4KK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKENvcnJlY3RFU1NMMzAwU2hh
ZGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgIEVYVEJsZW5kRnVuY0V4dGVuZGVkQ29tcGls
ZUZhaWx1cmVUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgQ29tYmluZShWYWx1ZXMoU0hf
R0xFUzJfU1BFQyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcygiIiwg
RVNTTFZlcnNpb24xMDAsIEVTU0xWZXJzaW9uMzAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsdWVzKEVTU0wzMDBfTG9jYXRpb25BbmRVbnNwZWNpZmllZE91dHB1dFNoYWRl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVTU0wzMDBfVHdvVW5z
cGVjaWZpZWRMb2NhdGlvbk91dHB1dHNTaGFkZXIpKSk7CisKKy8vIENvcnJlY3QgI3ZlcnNpb24g
MTAwIHNoYWRlcnMgZmFpbCB3aGVuIHVzZWQgd2l0aCAjdmVyc2lvbiAzMDAgZXMuCitJTlNUQU5U
SUFURV9URVNUX0NBU0VfUChDb3JyZWN0RVNTTDEwMFNoYWRlcnMsCisgICAgICAgICAgICAgICAg
ICAgICAgICBFWFRCbGVuZEZ1bmNFeHRlbmRlZENvbXBpbGVGYWlsdXJlVGVzdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIENvbWJpbmUoVmFsdWVzKFNIX0dMRVMzX1NQRUMpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoRVNTTFZlcnNpb24zMDApLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoRVNTTDEwMF9TaW1wbGVTaGFkZXIxLCBFU1NM
MTAwX0ZyYWdEYXRhU2hhZGVyKSkpOworCisvLyBJbmNvcnJlY3QgI3ZlcnNpb24gMzEwIGVzIGFs
d2F5cyBmYWlscy4KK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEluY29ycmVjdEVTU0wzMTBTaGFk
ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgRVhUQmxlbmRGdW5jRXh0ZW5kZWRDb21waWxl
RmFpbHVyZVRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBDb21iaW5lKFZhbHVlcyhTSF9H
TEVTM19TUEVDKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKEVTU0xW
ZXJzaW9uMzAwLCBFU1NMVmVyc2lvbjMxMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbHVlcyhFU1NMMzEwX0xvY2F0aW9uSW5kZXhGYWlsdXJlU2hhZGVyKSkpOworCisvLyBD
b3JyZWN0ICN2ZXJzaW9uIDMxMCBlcyBmYWlscyBpbiAjdmVyc2lvbiAzMDAgZXMuCitJTlNUQU5U
SUFURV9URVNUX0NBU0VfUCgKKyAgICBDb3JyZWN0RVNTTDMxMFNoYWRlcnNJbkVTU0wzMDAsCisg
ICAgRVhUQmxlbmRGdW5jRXh0ZW5kZWRDb21waWxlRmFpbHVyZVRlc3QsCisgICAgVmFsdWVzKG1h
a2VfdHVwbGUoU0hfR0xFUzNfU1BFQywgJkVTU0xWZXJzaW9uMzAwWzBdLCAmRVNTTDMxMF9Mb2Nh
dGlvbkluZGV4U2hhZGVyWzBdKSkpOworCisvLyBDb3JyZWN0ICN2ZXJzaW9uIDMxMCBlcyBmYWls
cyBpbiAjdmVyc2lvbiAzMTAgZXMsIGR1ZSB0byAzLjEgbm90IGJlaW5nIHN1cHBvcnRlZC4KK0lO
U1RBTlRJQVRFX1RFU1RfQ0FTRV9QKAorICAgIENvcnJlY3RFU1NMMzEwU2hhZGVycywKKyAgICBF
WFRCbGVuZEZ1bmNFeHRlbmRlZENvbXBpbGVGYWlsdXJlVGVzdCwKKyAgICBWYWx1ZXMobWFrZV90
dXBsZShTSF9HTEVTM19TUEVDLCAmRVNTTFZlcnNpb24zMTBbMF0sICZFU1NMMzEwX0xvY2F0aW9u
SW5kZXhTaGFkZXJbMF0pKSk7CisKK30gIC8vIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0VtdWxhdGVHTEZyYWdDb2xvckJy
b2FkY2FzdF90ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0X3Rlc3Qu
Y3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9j
b21waWxlcl90ZXN0cy9FbXVsYXRlR0xGcmFnQ29sb3JCcm9hZGNhc3RfdGVzdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw3OSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBFbXVsYXRlR0xGcmFn
Q29sb3JCcm9hZGNhc3RfdGVzdC5jcHA6CisvLyAgIFRlc3RzIGZvciBnbF9GcmFnQ29sb3IgYnJv
YWRjYXN0IGJlaGF2aW9yIGVtdWxhdGlvbi4KKy8vCisKKyNpbmNsdWRlICJhbmdsZV9nbC5oIgor
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgi
CisjaW5jbHVkZSAidGVzdHMvdGVzdF91dGlscy9jb21waWxlcl90ZXN0LmgiCisKK25hbWVzcGFj
ZQoreworCitjb25zdCBpbnQga01heERyYXdCdWZmZXJzID0gMjsKKworY2xhc3MgRW11bGF0ZUdM
RnJhZ0NvbG9yQnJvYWRjYXN0VGVzdCA6IHB1YmxpYyBNYXRjaE91dHB1dENvZGVUZXN0Cit7Cisg
IHB1YmxpYzoKKyAgICBFbXVsYXRlR0xGcmFnQ29sb3JCcm9hZGNhc3RUZXN0KCkKKyAgICAgICAg
OiBNYXRjaE91dHB1dENvZGVUZXN0KEdMX0ZSQUdNRU5UX1NIQURFUiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAsICAvLyBjb21waWxlIG9wdGlvbnMKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNIX0dMU0xfQ09NUEFUSUJJTElUWV9PVVRQVVQpCisgICAgeworICAgICAg
ICBnZXRSZXNvdXJjZXMoKS0+TWF4RHJhd0J1ZmZlcnMgICA9IGtNYXhEcmF3QnVmZmVyczsKKyAg
ICAgICAgZ2V0UmVzb3VyY2VzKCktPkVYVF9kcmF3X2J1ZmZlcnMgPSAxOworICAgIH0KK307CisK
Ky8vIFZlcmlmaWVzIHRoYXQgd2l0aG91dCBleHBsaWNpdGx5IGVuYWJsaW5nIEdMX0VYVF9kcmF3
X2J1ZmZlcnMgZXh0ZW5zaW9uCisvLyBpbiB0aGUgc2hhZGVyLCBubyBicm9hZGNhc3QgZW11bGF0
aW9uLgorVEVTVF9GKEVtdWxhdGVHTEZyYWdDb2xvckJyb2FkY2FzdFRlc3QsIEZyYWdDb2xvck5v
QnJvYWRjYXN0KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHNoYWRlclN0cmluZyA9CisgICAg
ICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGdsX0ZyYWdD
b2xvciA9IHZlYzQoMSwgMCwgMCwgMCk7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUo
c2hhZGVyU3RyaW5nKTsKKyAgICBFWFBFQ1RfVFJVRShmb3VuZEluQ29kZSgiZ2xfRnJhZ0NvbG9y
IikpOworICAgIEVYUEVDVF9GQUxTRShmb3VuZEluQ29kZSgiZ2xfRnJhZ0RhdGFbMF0iKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKGZvdW5kSW5Db2RlKCJnbF9GcmFnRGF0YVsxXSIpKTsKK30KKworLy8g
VmVyaWZpZXMgdGhhdCB3aXRoIGV4cGxpY2l0bHkgZW5hYmxpbmcgR0xfRVhUX2RyYXdfYnVmZmVy
cyBleHRlbnNpb24KKy8vIGluIHRoZSBzaGFkZXIsIGJyb2FkY2FzdCBpcyBlbXVhbHRlZCBieSBy
ZXBsYWNpbmcgZ2xfRnJhZ0NvbG9yIHdpdGggZ2xfRnJhZ0RhdGEuCitURVNUX0YoRW11bGF0ZUdM
RnJhZ0NvbG9yQnJvYWRjYXN0VGVzdCwgRnJhZ0NvbG9yQnJvYWRjYXN0KQoreworICAgIGNvbnN0
IHN0ZDo6c3RyaW5nIHNoYWRlclN0cmluZyA9CisgICAgICAgICIjZXh0ZW5zaW9uIEdMX0VYVF9k
cmF3X2J1ZmZlcnMgOiByZXF1aXJlXG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAg
ICAie1xuIgorICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMSwgMCwgMCwgMCk7XG4i
CisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoZm91bmRJbkNvZGUoImdsX0ZyYWdDb2xvciIpKTsKKyAgICBFWFBFQ1RfVFJVRShmb3Vu
ZEluQ29kZSgiZ2xfRnJhZ0RhdGFbMF0iKSk7CisgICAgRVhQRUNUX1RSVUUoZm91bmRJbkNvZGUo
ImdsX0ZyYWdEYXRhWzFdIikpOworfQorCisvLyBWZXJpZmllcyB0aGF0IHdpdGggZXhwbGljaXRs
eSBlbmFibGluZyBHTF9FWFRfZHJhd19idWZmZXJzIGV4dGVuc2lvbgorLy8gaW4gdGhlIHNoYWRl
ciB3aXRoIGFuIGVtcHR5IG1haW4oKSwgYW5vdGhpbmcgaGFwcGVucy4KK1RFU1RfRihFbXVsYXRl
R0xGcmFnQ29sb3JCcm9hZGNhc3RUZXN0LCBFbXB0eU1haW4pCit7CisgICAgY29uc3Qgc3RkOjpz
dHJpbmcgc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiNleHRlbnNpb24gR0xfRVhUX2RyYXdfYnVm
ZmVycyA6IHJlcXVpcmVcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4i
CisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoZm91bmRJbkNvZGUoImdsX0ZyYWdDb2xvciIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoZm91
bmRJbkNvZGUoImdsX0ZyYWdEYXRhWzBdIikpOworICAgIEVYUEVDVF9GQUxTRShmb3VuZEluQ29k
ZSgiZ2xfRnJhZ0RhdGFbMV0iKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbm9ueW1vdXMKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9FeHBy
ZXNzaW9uTGltaXRfdGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0V4cHJlc3Npb25MaW1pdF90ZXN0LmNwcAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJf
dGVzdHMvRXhwcmVzc2lvbkxpbWl0X3Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTYyIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworI2luY2x1ZGUgPHNzdHJlYW0+CisjaW5jbHVkZSA8
c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KKyNpbmNsdWRlICJhbmdsZV9nbC5oIgorI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCisKKyNk
ZWZpbmUgU0hBREVSKFNyYykgI1NyYworCitjbGFzcyBFeHByZXNzaW9uTGltaXRUZXN0IDogcHVi
bGljIHRlc3Rpbmc6OlRlc3QgeworcHJvdGVjdGVkOgorICAgIHN0YXRpYyBjb25zdCBpbnQga01h
eEV4cHJlc3Npb25Db21wbGV4aXR5ID0gMTY7CisgICAgc3RhdGljIGNvbnN0IGludCBrTWF4Q2Fs
bFN0YWNrRGVwdGggICAgICAgPSAxNjsKKyAgICBzdGF0aWMgY29uc3QgaW50IGtNYXhGdW5jdGlv
blBhcmFtZXRlcnMgICA9IDE2OworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBrRXhwcmVzc2lvblRv
b0NvbXBsZXg7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGtDYWxsU3RhY2tUb29EZWVwOworICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBrSGFzUmVjdXJzaW9uOworICAgIHN0YXRpYyBjb25zdCBjaGFy
ICprVG9vTWFueVBhcmFtZXRlcnM7CisKKyAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQorICAgIHsK
KyAgICAgICAgbWVtc2V0KCZyZXNvdXJjZXMsIDAsIHNpemVvZihyZXNvdXJjZXMpKTsKKworICAg
ICAgICBHZW5lcmF0ZVJlc291cmNlcygmcmVzb3VyY2VzKTsKKyAgICB9CisKKyAgICAvLyBTZXQg
dXAgdGhlIHBlciBjb21waWxlIHJlc291cmNlcworICAgIHN0YXRpYyB2b2lkIEdlbmVyYXRlUmVz
b3VyY2VzKFNoQnVpbHRJblJlc291cmNlcyAqcmVzKQorICAgIHsKKyAgICAgICAgU2hJbml0QnVp
bHRJblJlc291cmNlcyhyZXMpOworCisgICAgICAgIHJlcy0+TWF4VmVydGV4QXR0cmlicyAgICAg
ICAgICAgICA9IDg7CisgICAgICAgIHJlcy0+TWF4VmVydGV4VW5pZm9ybVZlY3RvcnMgICAgICA9
IDEyODsKKyAgICAgICAgcmVzLT5NYXhWYXJ5aW5nVmVjdG9ycyAgICAgICAgICAgID0gODsKKyAg
ICAgICAgcmVzLT5NYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyAgID0gMDsKKyAgICAgICAgcmVz
LT5NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzID0gODsKKyAgICAgICAgcmVzLT5NYXhUZXh0
dXJlSW1hZ2VVbml0cyAgICAgICAgID0gODsKKyAgICAgICAgcmVzLT5NYXhGcmFnbWVudFVuaWZv
cm1WZWN0b3JzICAgID0gMTY7CisgICAgICAgIHJlcy0+TWF4RHJhd0J1ZmZlcnMgICAgICAgICAg
ICAgICA9IDE7CisKKyAgICAgICAgcmVzLT5PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgPSAwOwor
ICAgICAgICByZXMtPk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwgICA9IDA7CisKKyAgICAgICAgcmVz
LT5NYXhFeHByZXNzaW9uQ29tcGxleGl0eSA9IGtNYXhFeHByZXNzaW9uQ29tcGxleGl0eTsKKyAg
ICAgICAgcmVzLT5NYXhDYWxsU3RhY2tEZXB0aCAgICAgICA9IGtNYXhDYWxsU3RhY2tEZXB0aDsK
KyAgICAgICAgcmVzLT5NYXhGdW5jdGlvblBhcmFtZXRlcnMgICA9IGtNYXhGdW5jdGlvblBhcmFt
ZXRlcnM7CisgICAgfQorCisgICAgdm9pZCBHZW5lcmF0ZUxvbmdFeHByZXNzaW9uKGludCBsZW5n
dGgsIHN0ZDo6c3RyaW5nc3RyZWFtKiBzcykKKyAgICB7CisgICAgICAgIGZvciAoaW50IGlpID0g
MDsgaWkgPCBsZW5ndGg7ICsraWkpIHsKKyAgICAgICAgICAqc3MgPDwgIisgdmVjNCgiIDw8IGlp
IDw8ICIpIjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0ZDo6c3RyaW5nIEdlbmVyYXRlU2hh
ZGVyV2l0aExvbmdFeHByZXNzaW9uKGludCBsZW5ndGgpCisgICAgeworICAgICAgICBzdGF0aWMg
Y29uc3QgY2hhciogc2hhZGVyU3RhcnQgPSBTSEFERVIoCisgICAgICAgICAgICBwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKyAgICAgICAgICAgIHVuaWZvcm0gdmVjNCB1X2NvbG9yOworICAgICAg
ICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgIGdsX0ZyYWdD
b2xvciA9IHVfY29sb3IKKyAgICAgICAgKTsKKworICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBz
czsKKyAgICAgICAgc3MgPDwgc2hhZGVyU3RhcnQ7CisgICAgICAgIEdlbmVyYXRlTG9uZ0V4cHJl
c3Npb24obGVuZ3RoLCAmc3MpOworICAgICAgICBzcyA8PCAiOyB9IjsKKworICAgICAgICByZXR1
cm4gc3Muc3RyKCk7CisgICAgfQorCisgICAgc3RkOjpzdHJpbmcgR2VuZXJhdGVTaGFkZXJXaXRo
VW51c2VkTG9uZ0V4cHJlc3Npb24oaW50IGxlbmd0aCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBzaGFkZXJTdGFydCA9IFNIQURFUigKKyAgICAgICAgICAgIHByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworICAgICAgICAgICAgdW5pZm9ybSB2ZWM0IHVfY29sb3I7CisgICAgICAg
ICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgZ2xfRnJhZ0Nv
bG9yID0gdV9jb2xvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZlYzQgc29tZUZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICByZXR1cm4gdV9jb2xvcgorICAgICAgICApOworCisgICAg
ICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOworCisgICAgICAgIHNzIDw8IHNoYWRlclN0YXJ0Owor
ICAgICAgICBHZW5lcmF0ZUxvbmdFeHByZXNzaW9uKGxlbmd0aCwgJnNzKTsKKyAgICAgICAgc3Mg
PDwgIjsgfSI7CisKKyAgICAgICAgcmV0dXJuIHNzLnN0cigpOworICAgIH0KKworICAgIHZvaWQg
R2VuZXJhdGVEZWVwRnVuY3Rpb25TdGFjayhpbnQgbGVuZ3RoLCBzdGQ6OnN0cmluZ3N0cmVhbSog
c3MpCisgICAgeworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyU3RhcnQgPSBTSEFE
RVIoCisgICAgICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgICAgICAgICAgIHVu
aWZvcm0gdmVjNCB1X2NvbG9yOworICAgICAgICAgICAgdmVjNCBmdW5jdGlvbjAoKSAgeworICAg
ICAgICAgICAgICByZXR1cm4gdV9jb2xvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKwor
ICAgICAgICAqc3MgPDwgc2hhZGVyU3RhcnQ7CisgICAgICAgIGZvciAoaW50IGlpID0gMDsgaWkg
PCBsZW5ndGg7ICsraWkpIHsKKyAgICAgICAgICAqc3MgPDwgInZlYzQgZnVuY3Rpb24iIDw8IChp
aSArIDEpIDw8ICIoKSB7XG4iCisgICAgICAgICAgICAgIDw8ICIgIHJldHVybiBmdW5jdGlvbiIg
PDwgaWkgPDwgIigpO1xuIgorICAgICAgICAgICAgICA8PCAifVxuIjsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHN0ZDo6c3RyaW5nIEdlbmVyYXRlU2hhZGVyV2l0aERlZXBGdW5jdGlvblN0YWNr
KGludCBsZW5ndGgpCisgICAgeworICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKworICAg
ICAgICBHZW5lcmF0ZURlZXBGdW5jdGlvblN0YWNrKGxlbmd0aCwgJnNzKTsKKworICAgICAgICBz
cyA8PCAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAgICA8PCAiICBnbF9GcmFnQ29sb3IgPSBm
dW5jdGlvbiIgPDwgbGVuZ3RoIDw8ICIoKTtcbiIKKyAgICAgICAgICAgPDwgIn0iOworCisgICAg
ICAgIHJldHVybiBzcy5zdHIoKTsKKyAgICB9CisKKyAgICBzdGQ6OnN0cmluZyBHZW5lcmF0ZVNo
YWRlcldpdGhVbnVzZWREZWVwRnVuY3Rpb25TdGFjayhpbnQgbGVuZ3RoKQorICAgIHsKKyAgICAg
ICAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7CisKKyAgICAgICAgR2VuZXJhdGVEZWVwRnVuY3Rpb25T
dGFjayhsZW5ndGgsICZzcyk7CisKKyAgICAgICAgc3MgPDwgInZvaWQgbWFpbigpIHtcbiIKKyAg
ICAgICAgICAgPDwgIiAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLDAsMCwwKTtcbiIKKyAgICAgICAg
ICAgPDwgIn0iOworCisKKyAgICAgICAgcmV0dXJuIHNzLnN0cigpOworICAgIH0KKworICAgIHN0
ZDo6c3RyaW5nIEdlbmVyYXRlU2hhZGVyV2l0aEZ1bmN0aW9uUGFyYW1ldGVycyhpbnQgcGFyYW1l
dGVycykKKyAgICB7CisgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOworCisgICAgICAgIHNz
IDw8ICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgICAgPDwgIlxuIgorICAg
ICAgICAgICA8PCAiZmxvYXQgZm9vKCI7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFy
YW1ldGVyczsgKytpKQorICAgICAgICB7CisgICAgICAgICAgICBzcyA8PCAiZmxvYXQgZiIgPDwg
aTsKKyAgICAgICAgICAgIGlmIChpICsgMSA8IHBhcmFtZXRlcnMpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgc3MgPDwgIiwgIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBzcyA8PCAiKVxuIgorICAgICAgICAgICA8PCAie1xuIgorICAgICAgICAgICA8PCAiICAg
IHJldHVybiBmMDtcbiIKKyAgICAgICAgICAgPDwgIn1cbiIKKyAgICAgICAgICAgPDwgIlxuIgor
ICAgICAgICAgICA8PCAidm9pZCBtYWluKClcbiIKKyAgICAgICAgICAgPDwgIntcbiIKKyAgICAg
ICAgICAgPDwgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAsMCwwLDApO1xuIgorICAgICAgICAg
ICA8PCAifSI7CisKKyAgICAgICAgcmV0dXJuIHNzLnN0cigpOworICAgIH0KKworICAgIC8vIENv
bXBpbGVzIGEgc2hhZGVyIGFuZCBpZiB0aGVyZSdzIGFuIGVycm9yIGNoZWNrcyBmb3IgYSBzcGVj
aWZpYworICAgIC8vIHN1YnN0cmluZyBpbiB0aGUgZXJyb3IgbG9nLiBUaGlzIHdheSB3ZSBrbm93
IHRoZSBlcnJvciBpcyBzcGVjaWZpYworICAgIC8vIHRvIHRoZSBpc3N1ZSB3ZSBhcmUgdGVzdGlu
Zy4KKyAgICBib29sIENoZWNrU2hhZGVyQ29tcGlsYXRpb24oU2hIYW5kbGUgY29tcGlsZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNvdXJjZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9u
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXhwZWN0ZWRf
ZXJyb3IpCisgICAgeworICAgICAgICBib29sIHN1Y2Nlc3MgPSBTaENvbXBpbGUoY29tcGlsZXIs
ICZzb3VyY2UsIDEsIGNvbXBpbGVPcHRpb25zKSAhPSAwOworICAgICAgICBpZiAoc3VjY2VzcykK
KyAgICAgICAgeworICAgICAgICAgICAgc3VjY2VzcyA9ICFleHBlY3RlZF9lcnJvcjsKKyAgICAg
ICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGxv
ZyA9IFNoR2V0SW5mb0xvZyhjb21waWxlcik7CisgICAgICAgICAgICBpZiAoZXhwZWN0ZWRfZXJy
b3IpCisgICAgICAgICAgICAgICAgc3VjY2VzcyA9IGxvZy5maW5kKGV4cGVjdGVkX2Vycm9yKSAh
PSBzdGQ6OnN0cmluZzo6bnBvczsKKworICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcykg
PDwgbG9nIDw8ICJcbi0tLS1zaGFkZXItLS0tXG4iIDw8IHNvdXJjZTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gc3VjY2VzczsKKyAgICB9CisKKyAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgcmVz
b3VyY2VzOworfTsKKworY29uc3QgY2hhciogRXhwcmVzc2lvbkxpbWl0VGVzdDo6a0V4cHJlc3Np
b25Ub29Db21wbGV4ID0KKyAgICAiRXhwcmVzc2lvbiB0b28gY29tcGxleCI7Citjb25zdCBjaGFy
KiBFeHByZXNzaW9uTGltaXRUZXN0OjprQ2FsbFN0YWNrVG9vRGVlcCA9CisgICAgIkNhbGwgc3Rh
Y2sgdG9vIGRlZXAiOworY29uc3QgY2hhciogRXhwcmVzc2lvbkxpbWl0VGVzdDo6a0hhc1JlY3Vy
c2lvbiA9CisgICAgIkZ1bmN0aW9uIHJlY3Vyc2lvbiBkZXRlY3RlZCI7Citjb25zdCBjaGFyKiBF
eHByZXNzaW9uTGltaXRUZXN0OjprVG9vTWFueVBhcmFtZXRlcnMgPQorICAgICJGdW5jdGlvbiBo
YXMgdG9vIG1hbnkgcGFyYW1ldGVycyI7CisKK1RFU1RfRihFeHByZXNzaW9uTGltaXRUZXN0LCBF
eHByZXNzaW9uQ29tcGxleGl0eSkKK3sKKyAgICBTaFNoYWRlclNwZWMgc3BlYyA9IFNIX1dFQkdM
X1NQRUM7CisgICAgU2hTaGFkZXJPdXRwdXQgb3V0cHV0ID0gU0hfRVNTTF9PVVRQVVQ7CisgICAg
U2hIYW5kbGUgdmVydGV4Q29tcGlsZXIgPSBTaENvbnN0cnVjdENvbXBpbGVyKAorICAgICAgICBH
TF9GUkFHTUVOVF9TSEFERVIsIHNwZWMsIG91dHB1dCwgJnJlc291cmNlcyk7CisgICAgU2hDb21w
aWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucyA9IFNIX0xJTUlUX0VYUFJFU1NJT05fQ09NUExFWElU
WTsKKworICAgIC8vIFRlc3QgZXhwcmVzc2lvbiB1bmRlciB0aGUgbGltaXQgcGFzc2VzLgorICAg
IEVYUEVDVF9UUlVFKENoZWNrU2hhZGVyQ29tcGlsYXRpb24oCisgICAgICAgIHZlcnRleENvbXBp
bGVyLAorICAgICAgICBHZW5lcmF0ZVNoYWRlcldpdGhMb25nRXhwcmVzc2lvbigKKyAgICAgICAg
ICAgIGtNYXhFeHByZXNzaW9uQ29tcGxleGl0eSAtIDEwKS5jX3N0cigpLAorICAgICAgICBjb21w
aWxlT3B0aW9ucywgTlVMTCkpOworICAgIC8vIFRlc3QgZXhwcmVzc2lvbiBvdmVyIHRoZSBsaW1p
dCBmYWlscy4KKyAgICBFWFBFQ1RfVFJVRShDaGVja1NoYWRlckNvbXBpbGF0aW9uKAorICAgICAg
ICB2ZXJ0ZXhDb21waWxlciwKKyAgICAgICAgR2VuZXJhdGVTaGFkZXJXaXRoTG9uZ0V4cHJlc3Np
b24oCisgICAgICAgICAgICBrTWF4RXhwcmVzc2lvbkNvbXBsZXhpdHkgKyAxMCkuY19zdHIoKSwK
KyAgICAgICAgY29tcGlsZU9wdGlvbnMsIGtFeHByZXNzaW9uVG9vQ29tcGxleCkpOworICAgIC8v
IFRlc3QgZXhwcmVzc2lvbiBvdmVyIHRoZSBsaW1pdCB3aXRob3V0IGEgbGltaXQgZG9lcyBub3Qg
ZmFpbC4KKyAgICBFWFBFQ1RfVFJVRShDaGVja1NoYWRlckNvbXBpbGF0aW9uKAorICAgICAgICB2
ZXJ0ZXhDb21waWxlciwKKyAgICAgICAgR2VuZXJhdGVTaGFkZXJXaXRoTG9uZ0V4cHJlc3Npb24o
CisgICAgICAgICAgICBrTWF4RXhwcmVzc2lvbkNvbXBsZXhpdHkgKyAxMCkuY19zdHIoKSwKKyAg
ICAgICAgY29tcGlsZU9wdGlvbnMgJiB+U0hfTElNSVRfRVhQUkVTU0lPTl9DT01QTEVYSVRZLCBO
VUxMKSk7CisgICAgU2hEZXN0cnVjdCh2ZXJ0ZXhDb21waWxlcik7Cit9CisKK1RFU1RfRihFeHBy
ZXNzaW9uTGltaXRUZXN0LCBVbnVzZWRFeHByZXNzaW9uQ29tcGxleGl0eSkKK3sKKyAgICBTaFNo
YWRlclNwZWMgc3BlYyA9IFNIX1dFQkdMX1NQRUM7CisgICAgU2hTaGFkZXJPdXRwdXQgb3V0cHV0
ID0gU0hfRVNTTF9PVVRQVVQ7CisgICAgU2hIYW5kbGUgdmVydGV4Q29tcGlsZXIgPSBTaENvbnN0
cnVjdENvbXBpbGVyKAorICAgICAgICBHTF9GUkFHTUVOVF9TSEFERVIsIHNwZWMsIG91dHB1dCwg
JnJlc291cmNlcyk7CisgICAgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucyA9IFNIX0xJ
TUlUX0VYUFJFU1NJT05fQ09NUExFWElUWTsKKworICAgIC8vIFRlc3QgZXhwcmVzc2lvbiB1bmRl
ciB0aGUgbGltaXQgcGFzc2VzLgorICAgIEVYUEVDVF9UUlVFKENoZWNrU2hhZGVyQ29tcGlsYXRp
b24oCisgICAgICAgIHZlcnRleENvbXBpbGVyLAorICAgICAgICBHZW5lcmF0ZVNoYWRlcldpdGhV
bnVzZWRMb25nRXhwcmVzc2lvbigKKyAgICAgICAgICAgIGtNYXhFeHByZXNzaW9uQ29tcGxleGl0
eSAtIDEwKS5jX3N0cigpLAorICAgICAgICBjb21waWxlT3B0aW9ucywgTlVMTCkpOworICAgIC8v
IFRlc3QgZXhwcmVzc2lvbiBvdmVyIHRoZSBsaW1pdCBmYWlscy4KKyAgICBFWFBFQ1RfVFJVRShD
aGVja1NoYWRlckNvbXBpbGF0aW9uKAorICAgICAgICB2ZXJ0ZXhDb21waWxlciwKKyAgICAgICAg
R2VuZXJhdGVTaGFkZXJXaXRoVW51c2VkTG9uZ0V4cHJlc3Npb24oCisgICAgICAgICAgICBrTWF4
RXhwcmVzc2lvbkNvbXBsZXhpdHkgKyAxMCkuY19zdHIoKSwKKyAgICAgICAgY29tcGlsZU9wdGlv
bnMsIGtFeHByZXNzaW9uVG9vQ29tcGxleCkpOworICAgIC8vIFRlc3QgZXhwcmVzc2lvbiBvdmVy
IHRoZSBsaW1pdCB3aXRob3V0IGEgbGltaXQgZG9lcyBub3QgZmFpbC4KKyAgICBFWFBFQ1RfVFJV
RShDaGVja1NoYWRlckNvbXBpbGF0aW9uKAorICAgICAgICB2ZXJ0ZXhDb21waWxlciwKKyAgICAg
ICAgR2VuZXJhdGVTaGFkZXJXaXRoVW51c2VkTG9uZ0V4cHJlc3Npb24oCisgICAgICAgICAgICBr
TWF4RXhwcmVzc2lvbkNvbXBsZXhpdHkgKyAxMCkuY19zdHIoKSwKKyAgICAgICAgY29tcGlsZU9w
dGlvbnMgJiB+U0hfTElNSVRfRVhQUkVTU0lPTl9DT01QTEVYSVRZLCBOVUxMKSk7CisgICAgU2hE
ZXN0cnVjdCh2ZXJ0ZXhDb21waWxlcik7Cit9CisKK1RFU1RfRihFeHByZXNzaW9uTGltaXRUZXN0
LCBDYWxsU3RhY2tEZXB0aCkKK3sKKyAgICBTaFNoYWRlclNwZWMgc3BlYyA9IFNIX1dFQkdMX1NQ
RUM7CisgICAgU2hTaGFkZXJPdXRwdXQgb3V0cHV0ID0gU0hfRVNTTF9PVVRQVVQ7CisgICAgU2hI
YW5kbGUgdmVydGV4Q29tcGlsZXIgPSBTaENvbnN0cnVjdENvbXBpbGVyKAorICAgICAgICBHTF9G
UkFHTUVOVF9TSEFERVIsIHNwZWMsIG91dHB1dCwgJnJlc291cmNlcyk7CisgICAgU2hDb21waWxl
T3B0aW9ucyBjb21waWxlT3B0aW9ucyA9IFNIX0xJTUlUX0NBTExfU1RBQ0tfREVQVEg7CisKKyAg
ICAvLyBUZXN0IGNhbGwgc3RhY2sgdW5kZXIgdGhlIGxpbWl0IHBhc3Nlcy4KKyAgICBFWFBFQ1Rf
VFJVRShDaGVja1NoYWRlckNvbXBpbGF0aW9uKAorICAgICAgICB2ZXJ0ZXhDb21waWxlciwKKyAg
ICAgICAgR2VuZXJhdGVTaGFkZXJXaXRoRGVlcEZ1bmN0aW9uU3RhY2soCisgICAgICAgICAgICBr
TWF4Q2FsbFN0YWNrRGVwdGggLSAxMCkuY19zdHIoKSwKKyAgICAgICAgY29tcGlsZU9wdGlvbnMs
IE5VTEwpKTsKKyAgICAvLyBUZXN0IGNhbGwgc3RhY2sgb3ZlciB0aGUgbGltaXQgZmFpbHMuCisg
ICAgRVhQRUNUX1RSVUUoQ2hlY2tTaGFkZXJDb21waWxhdGlvbigKKyAgICAgICAgdmVydGV4Q29t
cGlsZXIsCisgICAgICAgIEdlbmVyYXRlU2hhZGVyV2l0aERlZXBGdW5jdGlvblN0YWNrKAorICAg
ICAgICAgICAga01heENhbGxTdGFja0RlcHRoICsgMTApLmNfc3RyKCksCisgICAgICAgIGNvbXBp
bGVPcHRpb25zLCBrQ2FsbFN0YWNrVG9vRGVlcCkpOworICAgIC8vIFRlc3QgY2FsbCBzdGFjayBv
dmVyIHRoZSBsaW1pdCB3aXRob3V0IGxpbWl0IGRvZXMgbm90IGZhaWwuCisgICAgRVhQRUNUX1RS
VUUoQ2hlY2tTaGFkZXJDb21waWxhdGlvbigKKyAgICAgICAgdmVydGV4Q29tcGlsZXIsCisgICAg
ICAgIEdlbmVyYXRlU2hhZGVyV2l0aERlZXBGdW5jdGlvblN0YWNrKAorICAgICAgICAgICAga01h
eENhbGxTdGFja0RlcHRoICsgMTApLmNfc3RyKCksCisgICAgICAgIGNvbXBpbGVPcHRpb25zICYg
flNIX0xJTUlUX0NBTExfU1RBQ0tfREVQVEgsIE5VTEwpKTsKKyAgICBTaERlc3RydWN0KHZlcnRl
eENvbXBpbGVyKTsKK30KKworVEVTVF9GKEV4cHJlc3Npb25MaW1pdFRlc3QsIFVudXNlZENhbGxT
dGFja0RlcHRoKQoreworICAgIFNoU2hhZGVyU3BlYyBzcGVjID0gU0hfV0VCR0xfU1BFQzsKKyAg
ICBTaFNoYWRlck91dHB1dCBvdXRwdXQgPSBTSF9FU1NMX09VVFBVVDsKKyAgICBTaEhhbmRsZSB2
ZXJ0ZXhDb21waWxlciA9IFNoQ29uc3RydWN0Q29tcGlsZXIoCisgICAgICAgIEdMX0ZSQUdNRU5U
X1NIQURFUiwgc3BlYywgb3V0cHV0LCAmcmVzb3VyY2VzKTsKKyAgICBTaENvbXBpbGVPcHRpb25z
IGNvbXBpbGVPcHRpb25zID0gU0hfTElNSVRfQ0FMTF9TVEFDS19ERVBUSDsKKworICAgIC8vIFRl
c3QgY2FsbCBzdGFjayB1bmRlciB0aGUgbGltaXQgcGFzc2VzLgorICAgIEVYUEVDVF9UUlVFKENo
ZWNrU2hhZGVyQ29tcGlsYXRpb24oCisgICAgICAgIHZlcnRleENvbXBpbGVyLAorICAgICAgICBH
ZW5lcmF0ZVNoYWRlcldpdGhVbnVzZWREZWVwRnVuY3Rpb25TdGFjaygKKyAgICAgICAgICAgIGtN
YXhDYWxsU3RhY2tEZXB0aCAtIDEwKS5jX3N0cigpLAorICAgICAgICBjb21waWxlT3B0aW9ucywg
TlVMTCkpOworICAgIC8vIFRlc3QgY2FsbCBzdGFjayBvdmVyIHRoZSBsaW1pdCBmYWlscy4KKyAg
ICBFWFBFQ1RfVFJVRShDaGVja1NoYWRlckNvbXBpbGF0aW9uKAorICAgICAgICB2ZXJ0ZXhDb21w
aWxlciwKKyAgICAgICAgR2VuZXJhdGVTaGFkZXJXaXRoVW51c2VkRGVlcEZ1bmN0aW9uU3RhY2so
CisgICAgICAgICAgICBrTWF4Q2FsbFN0YWNrRGVwdGggKyAxMCkuY19zdHIoKSwKKyAgICAgICAg
Y29tcGlsZU9wdGlvbnMsIGtDYWxsU3RhY2tUb29EZWVwKSk7CisgICAgLy8gVGVzdCBjYWxsIHN0
YWNrIG92ZXIgdGhlIGxpbWl0IHdpdGhvdXQgbGltaXQgZG9lcyBub3QgZmFpbC4KKyAgICBFWFBF
Q1RfVFJVRShDaGVja1NoYWRlckNvbXBpbGF0aW9uKAorICAgICAgICB2ZXJ0ZXhDb21waWxlciwK
KyAgICAgICAgR2VuZXJhdGVTaGFkZXJXaXRoVW51c2VkRGVlcEZ1bmN0aW9uU3RhY2soCisgICAg
ICAgICAgICBrTWF4Q2FsbFN0YWNrRGVwdGggKyAxMCkuY19zdHIoKSwKKyAgICAgICAgY29tcGls
ZU9wdGlvbnMgJiB+U0hfTElNSVRfQ0FMTF9TVEFDS19ERVBUSCwgTlVMTCkpOworICAgIFNoRGVz
dHJ1Y3QodmVydGV4Q29tcGlsZXIpOworfQorCitURVNUX0YoRXhwcmVzc2lvbkxpbWl0VGVzdCwg
UmVjdXJzaW9uKQoreworICAgIFNoU2hhZGVyU3BlYyBzcGVjID0gU0hfV0VCR0xfU1BFQzsKKyAg
ICBTaFNoYWRlck91dHB1dCBvdXRwdXQgPSBTSF9FU1NMX09VVFBVVDsKKyAgICBTaEhhbmRsZSB2
ZXJ0ZXhDb21waWxlciA9IFNoQ29uc3RydWN0Q29tcGlsZXIoCisgICAgICAgIEdMX0ZSQUdNRU5U
X1NIQURFUiwgc3BlYywgb3V0cHV0LCAmcmVzb3VyY2VzKTsKKyAgICBTaENvbXBpbGVPcHRpb25z
IGNvbXBpbGVPcHRpb25zID0gMDsKKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJXaXRo
UmVjdXJzaW9uMCA9IFNIQURFUigKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cisg
ICAgICAgIHVuaWZvcm0gdmVjNCB1X2NvbG9yOworICAgICAgICB2ZWM0IHNvbWVGdW5jKCkgIHsK
KyAgICAgICAgICAgIHJldHVybiBzb21lRnVuYygpOworICAgICAgICB9CisKKyAgICAgICAgdm9p
ZCBtYWluKCkgeworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdV9jb2xvciAqIHNvbWVGdW5j
KCk7CisgICAgICAgIH0KKyAgICApOworCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYWRlcldp
dGhSZWN1cnNpb24xID0gU0hBREVSKAorICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KyAgICAgICAgdW5pZm9ybSB2ZWM0IHVfY29sb3I7CisKKyAgICAgICAgdmVjNCBzb21lRnVuYygp
OworCisgICAgICAgIHZlYzQgc29tZUZ1bmMxKCkgIHsKKyAgICAgICAgICAgIHJldHVybiBzb21l
RnVuYygpOworICAgICAgICB9CisKKyAgICAgICAgdmVjNCBzb21lRnVuYygpICB7CisgICAgICAg
ICAgICByZXR1cm4gc29tZUZ1bmMxKCk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIG1haW4o
KSB7CisgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB1X2NvbG9yICogc29tZUZ1bmMoKTsKKyAg
ICAgICAgfQorICAgICk7CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyV2l0aFJlY3Vy
c2lvbjIgPSBTSEFERVIoCisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAg
ICB1bmlmb3JtIHZlYzQgdV9jb2xvcjsKKyAgICAgICAgdmVjNCBzb21lRnVuYygpICB7CisgICAg
ICAgICAgICBpZiAodV9jb2xvci54ID4gMC41KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNv
bWVGdW5jKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiB2
ZWM0KDEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdm9pZCBtYWluKCkg
eworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gc29tZUZ1bmMoKTsKKyAgICAgICAgfQorICAg
ICk7CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyV2l0aFJlY3Vyc2lvbjMgPSBTSEFE
RVIoCisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICB1bmlmb3JtIHZl
YzQgdV9jb2xvcjsKKyAgICAgICAgdmVjNCBzb21lRnVuYygpICB7CisgICAgICAgICAgICBpZiAo
dV9jb2xvci54ID4gMC41KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZlYzQoMSk7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBzb21lRnVuYygpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdm9pZCBtYWluKCkgeworICAgICAgICAg
ICAgZ2xfRnJhZ0NvbG9yID0gc29tZUZ1bmMoKTsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBz
dGF0aWMgY29uc3QgY2hhciogc2hhZGVyV2l0aFJlY3Vyc2lvbjQgPSBTSEFERVIoCisgICAgICAg
IHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICB1bmlmb3JtIHZlYzQgdV9jb2xvcjsK
KyAgICAgICAgdmVjNCBzb21lRnVuYygpICB7CisgICAgICAgICAgICByZXR1cm4gKHVfY29sb3Iu
eCA+IDAuNSkgPyB2ZWM0KDEpIDogc29tZUZ1bmMoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZv
aWQgbWFpbigpIHsKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHNvbWVGdW5jKCk7CisgICAg
ICAgIH0KKyAgICApOworCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYWRlcldpdGhSZWN1cnNp
b241ID0gU0hBREVSKAorICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgICAgICAg
dW5pZm9ybSB2ZWM0IHVfY29sb3I7CisgICAgICAgIHZlYzQgc29tZUZ1bmMoKSAgeworICAgICAg
ICAgICAgcmV0dXJuICh1X2NvbG9yLnggPiAwLjUpID8gc29tZUZ1bmMoKSA6IHZlYzQoMSk7Cisg
ICAgICAgIH0KKworICAgICAgICB2b2lkIG1haW4oKSB7CisgICAgICAgICAgICBnbF9GcmFnQ29s
b3IgPSBzb21lRnVuYygpOworICAgICAgICB9CisgICAgKTsKKworICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBzaGFkZXJXaXRoUmVjdXJzaW9uNiA9IFNIQURFUigKKyAgICAgICAgcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisgICAgICAgIHVuaWZvcm0gdmVjNCB1X2NvbG9yOworICAgICAgICB2ZWM0
IHNvbWVGdW5jKCkgIHsKKyAgICAgICAgICAgIHJldHVybiBzb21lRnVuYygpOworICAgICAgICB9
CisKKyAgICAgICAgdm9pZCBtYWluKCkgeworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdV9j
b2xvcjsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVy
V2l0aE5vUmVjdXJzaW9uID0gU0hBREVSKAorICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKyAgICAgICAgdW5pZm9ybSB2ZWM0IHVfY29sb3I7CisKKyAgICAgICAgdmVjMyByZ2IoaW50
IHIsIGludCBnLCBpbnQgYikgeworICAgICAgICAgICAgcmV0dXJuIHZlYzMoZmxvYXQocikgLyAy
NTUuMCwgZmxvYXQoZykgLyAyNTUuMCwgZmxvYXQoYikgLyAyNTUuMCk7CisgICAgICAgIH0KKwor
ICAgICAgICB2b2lkIG1haW4oKSB7CisgICAgICAgICAgICB2ZWMzIGhhaXJDb2xvcjAgPSByZ2Io
MTUxLCAyMDAsIDIzNCk7CisgICAgICAgICAgICB2ZWMzIGZhY2VDb2xvcjIgPSByZ2IoMTgzLCAx
NDgsIDEzMyk7CisgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB1X2NvbG9yICsgdmVjNChoYWly
Q29sb3IwICsgZmFjZUNvbG9yMiwgMCk7CisgICAgICAgIH0KKyAgICApOworCisgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIHNoYWRlcldpdGhSZWN1cnNpb243ID0gU0hBREVSKAorICAgICAgICBwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgICAgICAgdW5pZm9ybSB2ZWM0IHVfY29sb3I7CisKKyAg
ICAgICAgdmVjNCBmdW5jdGlvbjIoKSB7CisgICAgICAgICAgICByZXR1cm4gdV9jb2xvcjsKKyAg
ICAgICAgfQorCisgICAgICAgIHZlYzQgZnVuY3Rpb24xKCkgeworICAgICAgICAgICAgdmVjNCBh
ID0gZnVuY3Rpb24yKCk7CisgICAgICAgICAgICB2ZWM0IGIgPSBmdW5jdGlvbjEoKTsKKyAgICAg
ICAgICAgIHJldHVybiBhICsgYjsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgbWFpbigpIHsK
KyAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IGZ1bmN0aW9uMSgpOworICAgICAgICB9CisgICAg
KTsKKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJXaXRoUmVjdXJzaW9uOCA9IFNIQURF
UigKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgIHVuaWZvcm0gdmVj
NCB1X2NvbG9yOworCisgICAgICAgIHZlYzQgZnVuY3Rpb24xKCk7CisKKyAgICAgICAgdmVjNCBm
dW5jdGlvbjMoKSB7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24xKCk7CisgICAgICAgIH0K
KworICAgICAgICB2ZWM0IGZ1bmN0aW9uMigpIHsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlv
bjMoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZlYzQgZnVuY3Rpb24xKCkgeworICAgICAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uMigpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBtYWluKCkg
eworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gZnVuY3Rpb24xKCk7CisgICAgICAgIH0KKyAg
ICApOworCisgICAgLy8gQ2hlY2sgc2ltcGxlIHJlY3Vyc2lvbnMgZmFpbHMuCisgICAgRVhQRUNU
X1RSVUUoQ2hlY2tTaGFkZXJDb21waWxhdGlvbigKKyAgICAgICAgdmVydGV4Q29tcGlsZXIsIHNo
YWRlcldpdGhSZWN1cnNpb24wLAorICAgICAgICBjb21waWxlT3B0aW9ucywga0hhc1JlY3Vyc2lv
bikpOworICAgIC8vIENoZWNrIHNpbXBsZSByZWN1cnNpb25zIGZhaWxzLgorICAgIEVYUEVDVF9U
UlVFKENoZWNrU2hhZGVyQ29tcGlsYXRpb24oCisgICAgICAgIHZlcnRleENvbXBpbGVyLCBzaGFk
ZXJXaXRoUmVjdXJzaW9uMSwKKyAgICAgICAgY29tcGlsZU9wdGlvbnMsIGtIYXNSZWN1cnNpb24p
KTsKKyAgICAvLyBDaGVjayBpZiByZWN1cnNpb25zIGZhaWxzLgorICAgIEVYUEVDVF9UUlVFKENo
ZWNrU2hhZGVyQ29tcGlsYXRpb24oCisgICAgICAgIHZlcnRleENvbXBpbGVyLCBzaGFkZXJXaXRo
UmVjdXJzaW9uMiwKKyAgICAgICAgY29tcGlsZU9wdGlvbnMsIGtIYXNSZWN1cnNpb24pKTsKKyAg
ICAvLyBDaGVjayBpZiByZWN1cnNpb25zIGZhaWxzLgorICAgIEVYUEVDVF9UUlVFKENoZWNrU2hh
ZGVyQ29tcGlsYXRpb24oCisgICAgICAgIHZlcnRleENvbXBpbGVyLCBzaGFkZXJXaXRoUmVjdXJz
aW9uMywKKyAgICAgICAgY29tcGlsZU9wdGlvbnMsIGtIYXNSZWN1cnNpb24pKTsKKyAgICAvLyBD
aGVjayB0ZXJuYXJ5IHJlY3Vyc2lvbnMgZmFpbHMuCisgICAgRVhQRUNUX1RSVUUoQ2hlY2tTaGFk
ZXJDb21waWxhdGlvbigKKyAgICAgICAgdmVydGV4Q29tcGlsZXIsIHNoYWRlcldpdGhSZWN1cnNp
b240LAorICAgICAgICBjb21waWxlT3B0aW9ucywga0hhc1JlY3Vyc2lvbikpOworICAgIC8vIENo
ZWNrIHRlcm5hcnkgcmVjdXJzaW9ucyBmYWlscy4KKyAgICBFWFBFQ1RfVFJVRShDaGVja1NoYWRl
ckNvbXBpbGF0aW9uKAorICAgICAgICB2ZXJ0ZXhDb21waWxlciwgc2hhZGVyV2l0aFJlY3Vyc2lv
bjUsCisgICAgICAgIGNvbXBpbGVPcHRpb25zLCBrSGFzUmVjdXJzaW9uKSk7CisKKyAgICAvLyBD
aGVjayBzb21lIG1vcmUgZm9ybXMgb2YgcmVjdXJzaW9uCisgICAgRVhQRUNUX1RSVUUoQ2hlY2tT
aGFkZXJDb21waWxhdGlvbigKKyAgICAgICAgdmVydGV4Q29tcGlsZXIsIHNoYWRlcldpdGhSZWN1
cnNpb242LAorICAgICAgICBjb21waWxlT3B0aW9ucywga0hhc1JlY3Vyc2lvbikpOworICAgIEVY
UEVDVF9UUlVFKENoZWNrU2hhZGVyQ29tcGlsYXRpb24oCisgICAgICAgIHZlcnRleENvbXBpbGVy
LCBzaGFkZXJXaXRoUmVjdXJzaW9uNywKKyAgICAgICAgY29tcGlsZU9wdGlvbnMsIGtIYXNSZWN1
cnNpb24pKTsKKyAgICBFWFBFQ1RfVFJVRShDaGVja1NoYWRlckNvbXBpbGF0aW9uKAorICAgICAg
ICB2ZXJ0ZXhDb21waWxlciwgc2hhZGVyV2l0aFJlY3Vyc2lvbjgsCisgICAgICAgIGNvbXBpbGVP
cHRpb25zLCBrSGFzUmVjdXJzaW9uKSk7CisgICAgLy8gQ2hlY2sgdW51c2VkIHJlY3Vyc2lvbnMg
ZmFpbHMgaWYgbGltaXRpbmcgY2FsbCBzdGFjaworICAgIC8vIHNpbmNlIHdlIGNoZWNrIGFsbCBw
YXRocy4KKyAgICBFWFBFQ1RfVFJVRShDaGVja1NoYWRlckNvbXBpbGF0aW9uKAorICAgICAgICB2
ZXJ0ZXhDb21waWxlciwgc2hhZGVyV2l0aFJlY3Vyc2lvbjYsCisgICAgICAgIGNvbXBpbGVPcHRp
b25zIHwgU0hfTElNSVRfQ0FMTF9TVEFDS19ERVBUSCwga0hhc1JlY3Vyc2lvbikpOworCisgICAg
Ly8gQ2hlY2sgdW51c2VkIHJlY3Vyc2lvbnMgcGFzc2VzLgorICAgIEVYUEVDVF9UUlVFKENoZWNr
U2hhZGVyQ29tcGlsYXRpb24oCisgICAgICAgIHZlcnRleENvbXBpbGVyLCBzaGFkZXJXaXRoTm9S
ZWN1cnNpb24sCisgICAgICAgIGNvbXBpbGVPcHRpb25zLCBOVUxMKSk7CisgICAgLy8gQ2hlY2sg
dW51c2VkIHJlY3Vyc2lvbnMgcGFzc2VzIGlmIGxpbWl0aW5nIGNhbGwgc3RhY2suCisgICAgRVhQ
RUNUX1RSVUUoQ2hlY2tTaGFkZXJDb21waWxhdGlvbigKKyAgICAgICAgdmVydGV4Q29tcGlsZXIs
IHNoYWRlcldpdGhOb1JlY3Vyc2lvbiwKKyAgICAgICAgY29tcGlsZU9wdGlvbnMgfCBTSF9MSU1J
VF9DQUxMX1NUQUNLX0RFUFRILCBOVUxMKSk7CisgICAgU2hEZXN0cnVjdCh2ZXJ0ZXhDb21waWxl
cik7Cit9CisKK1RFU1RfRihFeHByZXNzaW9uTGltaXRUZXN0LCBGdW5jdGlvblBhcmFtZXRlckNv
dW50KQoreworICAgIFNoU2hhZGVyU3BlYyBzcGVjICAgICA9IFNIX1dFQkdMX1NQRUM7CisgICAg
U2hTaGFkZXJPdXRwdXQgb3V0cHV0ID0gU0hfRVNTTF9PVVRQVVQ7CisgICAgU2hIYW5kbGUgY29t
cGlsZXIgICAgID0gU2hDb25zdHJ1Y3RDb21waWxlcihHTF9GUkFHTUVOVF9TSEFERVIsIHNwZWMs
IG91dHB1dCwgJnJlc291cmNlcyk7CisgICAgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9u
cyA9IFNIX0xJTUlUX0VYUFJFU1NJT05fQ09NUExFWElUWTsKKworICAgIC8vIFRlc3QgcGFyYW1l
dGVycyB1bmRlciB0aGUgbGltaXQgc3VjY2VlZHMuCisgICAgRVhQRUNUX1RSVUUoQ2hlY2tTaGFk
ZXJDb21waWxhdGlvbigKKyAgICAgICAgY29tcGlsZXIsIEdlbmVyYXRlU2hhZGVyV2l0aEZ1bmN0
aW9uUGFyYW1ldGVycyhrTWF4RnVuY3Rpb25QYXJhbWV0ZXJzKS5jX3N0cigpLAorICAgICAgICBj
b21waWxlT3B0aW9ucywgbnVsbHB0cikpOworICAgIC8vIFRlc3QgcGFyYW1ldGVycyBvdmVyIHRo
ZSBsaW1pdCBmYWlscy4KKyAgICBFWFBFQ1RfVFJVRShDaGVja1NoYWRlckNvbXBpbGF0aW9uKAor
ICAgICAgICBjb21waWxlciwgR2VuZXJhdGVTaGFkZXJXaXRoRnVuY3Rpb25QYXJhbWV0ZXJzKGtN
YXhGdW5jdGlvblBhcmFtZXRlcnMgKyAxKS5jX3N0cigpLAorICAgICAgICBjb21waWxlT3B0aW9u
cywga1Rvb01hbnlQYXJhbWV0ZXJzKSk7CisgICAgLy8gVGVzdCBwYXJhbWV0ZXJzIG92ZXIgdGhl
IGxpbWl0IHdpdGhvdXQgbGltaXQgZG9lcyBub3QgZmFpbC4KKyAgICBFWFBFQ1RfVFJVRShDaGVj
a1NoYWRlckNvbXBpbGF0aW9uKAorICAgICAgICBjb21waWxlciwgR2VuZXJhdGVTaGFkZXJXaXRo
RnVuY3Rpb25QYXJhbWV0ZXJzKGtNYXhGdW5jdGlvblBhcmFtZXRlcnMgKyAxKS5jX3N0cigpLAor
ICAgICAgICBjb21waWxlT3B0aW9ucyAmIH5TSF9MSU1JVF9FWFBSRVNTSU9OX0NPTVBMRVhJVFks
IG51bGxwdHIpKTsKKyAgICBTaERlc3RydWN0KGNvbXBpbGVyKTsKK30KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9GcmFnRGVwdGhfdGVzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBp
bGVyX3Rlc3RzL0ZyYWdEZXB0aF90ZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvRnJhZ0RlcHRoX3Rlc3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE5IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAy
MDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEZyYWdE
ZXB0aF90ZXN0LmNwcDoKKy8vICAgVGVzdCBmb3IgR0xFUyBTTCAzLjAgZ2xfRnJhZ0RlcHRoIHZh
cmlhYmxlIGltcGxlbWVudGF0aW9uLgorLy8KKworI2luY2x1ZGUgImFuZ2xlX2dsLmgiCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKKwor
bmFtZXNwYWNlCit7Citjb25zdCBjaGFyIEVTU0xWZXJzaW9uMTAwW10gPSAiI3ZlcnNpb24gMTAw
XG4iOworY29uc3QgY2hhciBFU1NMVmVyc2lvbjMwMFtdID0gIiN2ZXJzaW9uIDMwMCBlc1xuIjsK
K2NvbnN0IGNoYXIgRVhURkRQcmFnbWFbXSAgICA9ICIjZXh0ZW5zaW9uIEdMX0VYVF9mcmFnX2Rl
cHRoIDogcmVxdWlyZVxuIjsKK30gIC8vIG5hbWVzcGFjZQorCitjbGFzcyBGcmFnRGVwdGhUZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08Ym9vbD4KK3sKKyAgcHJvdGVjdGVkOgor
ICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgU2hJbml0QnVpbHRJblJl
c291cmNlcygmbVJlc291cmNlcyk7CisgICAgICAgIG1Db21waWxlciAgICAgICAgICAgICAgICAg
PSBudWxscHRyOworICAgICAgICBtUmVzb3VyY2VzLkVYVF9mcmFnX2RlcHRoID0gR2V0UGFyYW0o
KTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUgeyBEZXN0cm95Q29tcGls
ZXIoKTsgfQorICAgIHZvaWQgRGVzdHJveUNvbXBpbGVyKCkKKyAgICB7CisgICAgICAgIGlmICht
Q29tcGlsZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIFNoRGVzdHJ1Y3QobUNvbXBpbGVyKTsK
KyAgICAgICAgICAgIG1Db21waWxlciA9IG51bGxwdHI7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICB2b2lkIEluaXRpYWxpemVDb21waWxlcigpCisgICAgeworICAgICAgICBEZXN0cm95Q29tcGls
ZXIoKTsKKyAgICAgICAgbUNvbXBpbGVyID0gU2hDb25zdHJ1Y3RDb21waWxlcihHTF9GUkFHTUVO
VF9TSEFERVIsIFNIX0dMRVMzX1NQRUMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU0hfR0xTTF9DT01QQVRJQklMSVRZX09VVFBVVCwgJm1SZXNvdXJjZXMpOworICAg
ICAgICBBU1NFUlRfVFJVRShtQ29tcGlsZXIgIT0gbnVsbHB0cikgPDwgIkNvbXBpbGVyIGNvdWxk
IG5vdCBiZSBjb25zdHJ1Y3RlZC4iOworICAgIH0KKworICAgIHRlc3Rpbmc6OkFzc2VydGlvblJl
c3VsdCBUZXN0U2hhZGVyQ29tcGlsZShjb25zdCBjaGFyICp2ZXJzaW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwcmFnbWEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg
KnNoYWRlcikKKyAgICB7CisgICAgICAgIGNvbnN0IGNoYXIgKnNoYWRlclN0cmluZ3NbXSA9IHt2
ZXJzaW9uLCBwcmFnbWEsIHNoYWRlcn07CisgICAgICAgIGJvb2wgc3VjY2VzcyA9IFNoQ29tcGls
ZShtQ29tcGlsZXIsIHNoYWRlclN0cmluZ3MsIDMsIDApOworICAgICAgICBpZiAoc3VjY2VzcykK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uU3VjY2Vz
cygpIDw8ICJDb21waWxhdGlvbiBzdWNjZXNzIjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
Ojp0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkgPDwgU2hHZXRJbmZvTG9nKG1Db21waWxlcik7
CisgICAgfQorCisgIHByb3RlY3RlZDoKKyAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgbVJlc291cmNl
czsKKyAgICBTaEhhbmRsZSBtQ29tcGlsZXI7Cit9OworCisvLyBUaGUgR0xFUyBTTCAzLjAgYnVp
bHQtaW4gdmFyaWFibGUgZ2xfRnJhZ0RlcHRoIGZhaWxzIHRvIGNvbXBpbGUgd2l0aCBHTEVTIFNM
IDEuMC4KK1RFU1RfUChGcmFnRGVwdGhUZXN0LCBDb21waWxlRmFpbHNFU1NMMTAwKQoreworICAg
IHN0YXRpYyBjb25zdCBjaGFyIHNoYWRlclN0cmluZ1tdID0KKyAgICAgICAgInByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidm9pZCBtYWluKCkgeyBcbiIKKyAgICAgICAgIiAg
ICBnbF9GcmFnRGVwdGggPSAxLjA7XG4iCisgICAgICAgICJ9XG4iOworCisgICAgSW5pdGlhbGl6
ZUNvbXBpbGVyKCk7CisgICAgRVhQRUNUX0ZBTFNFKFRlc3RTaGFkZXJDb21waWxlKEVTU0xWZXJz
aW9uMTAwLCAiIiwgc2hhZGVyU3RyaW5nKSk7CisgICAgRVhQRUNUX0ZBTFNFKFRlc3RTaGFkZXJD
b21waWxlKCIiLCAiIiwgc2hhZGVyU3RyaW5nKSk7CisgICAgRVhQRUNUX0ZBTFNFKFRlc3RTaGFk
ZXJDb21waWxlKCIiLCBFWFRGRFByYWdtYSwgc2hhZGVyU3RyaW5nKSk7Cit9CisKKy8vIFRoZSBH
TEVTIFNMIDMuMCBidWlsdC1pbiB2YXJpYWJsZSBnbF9GcmFnRGVwdGggY29tcGlsZXMgd2l0aCBH
TEVTIFNMIDMuMC4KK1RFU1RfUChGcmFnRGVwdGhUZXN0LCBDb21waWxlU3VjY2VlZHNFU1NMMzAw
KQoreworICAgIHN0YXRpYyBjb25zdCBjaGFyIHNoYWRlclN0cmluZ1tdID0KKyAgICAgICAgInBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidm9pZCBtYWluKCkgeyBcbiIKKyAg
ICAgICAgIiAgICBnbF9GcmFnRGVwdGggPSAxLjA7XG4iCisgICAgICAgICJ9XG4iOworICAgIElu
aXRpYWxpemVDb21waWxlcigpOworICAgIEVYUEVDVF9UUlVFKFRlc3RTaGFkZXJDb21waWxlKEVT
U0xWZXJzaW9uMzAwLCAiIiwgc2hhZGVyU3RyaW5nKSk7Cit9CisKKy8vIFVzaW5nICNleHRlbnNp
b24gR0xfRVhUX2ZyYWdfZGVwdGggaW4gR0xTTCBFUyAzLjAgc2hhZGVyIGZhaWxzIHRvIGNvbXBp
bGUuCitURVNUX1AoRnJhZ0RlcHRoVGVzdCwgRXh0ZW5zaW9uRkRGYWlsc0VTU0wzMDApCit7Cisg
ICAgc3RhdGljIGNvbnN0IGNoYXIgc2hhZGVyU3RyaW5nW10gPQorICAgICAgICAicHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgdmVjNCBmcmFnQ29sb3I7XG4iCisgICAg
ICAgICJ2b2lkIG1haW4oKSB7IFxuIgorICAgICAgICAiICAgIGZyYWdDb2xvciA9IHZlYzQoMS4w
KTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgSW5pdGlhbGl6ZUNvbXBpbGVyKCk7CisgICAgaWYg
KG1SZXNvdXJjZXMuRVhUX2ZyYWdfZGVwdGggPT0gMSkKKyAgICB7CisgICAgICAgIC8vIFRPRE8o
a2tpbm51bmVuLCBnZW9mZmxhbmcpOiB0aGlzIHNob3VsZCBmYWlsLiBFeHRlbnNpb25zIG5lZWQg
dG8gaGF2ZSBzaW1pbGFyIGxldmVsCisgICAgICAgIC8vIHN5c3RlbSB0byBTeW1ib2xUYWJsZS4g
IFRoZSBiaWdnZXN0IHRhc2sgaXMgdG8gaW1wbGVtZW50IHZlcnNpb24tYXdhcmUgcHJlcHJvY2Vz
c29yLCBzbworICAgICAgICAvLyB0aGF0IHRoZSBleHRlbnNpb24gZGVmaW5lcyBjYW4gYmUgZGVm
aW5lZCBkZXBlbmRpbmcgb24gdGhlIHZlcnNpb24gdGhhdCB0aGUgcHJlcHJvY2Vzc29yCisgICAg
ICAgIC8vIHNhdyBvciBkaWQgbm90IHNlZS4KKyAgICAgICAgRVhQRUNUX1RSVUUoVGVzdFNoYWRl
ckNvbXBpbGUoRVNTTFZlcnNpb24zMDAsIEVYVEZEUHJhZ21hLCBzaGFkZXJTdHJpbmcpKTsKKyAg
ICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKFRlc3RTaGFkZXJDb21w
aWxlKEVTU0xWZXJzaW9uMzAwLCBFWFRGRFByYWdtYSwgc2hhZGVyU3RyaW5nKSk7CisgICAgfQor
fQorCisvLyBUaGUgdGVzdHMgc2hvdWxkIHBhc3MgcmVnYXJkbGVzcyB3aGV0aGVyIHRoZSBFWFRf
ZnJhZ19kZXB0aCBpcyBvbiBvciBub3QuCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChGcmFnRGVw
dGhUZXN0cywgRnJhZ0RlcHRoVGVzdCwgdGVzdGluZzo6VmFsdWVzKGZhbHNlLCB0cnVlKSk7Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvR0xT
TENvbXBhdGliaWxpdHlPdXRwdXRfdGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0dMU0xDb21wYXRpYmlsaXR5T3V0
cHV0X3Rlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9jb21waWxlcl90ZXN0cy9HTFNMQ29tcGF0aWJpbGl0eU91dHB1dF90ZXN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMzIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEdMU0xDb21w
YXRpYmlsaXR5T3V0cHV0VGVzdC5jcHAKKy8vICAgVGVzdCBjb21waWxlciBvdXRwdXQgZm9yIGds
c2wgY29tcGF0aWJpbGl0eSBtb2RlCisvLworCisjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgorI2lu
Y2x1ZGUgInRlc3RzL3Rlc3RfdXRpbHMvY29tcGlsZXJfdGVzdC5oIgorCitjbGFzcyBHTFNMQ29t
cGF0aWJpbGl0eU91dHB1dFRlc3QgOiBwdWJsaWMgTWF0Y2hPdXRwdXRDb2RlVGVzdAoreworICBw
dWJsaWM6CisgICAgR0xTTENvbXBhdGliaWxpdHlPdXRwdXRUZXN0KCkKKyAgICAgICAgOiBNYXRj
aE91dHB1dENvZGVUZXN0KEdMX1ZFUlRFWF9TSEFERVIsIFNIX1ZBUklBQkxFUywgU0hfR0xTTF9D
T01QQVRJQklMSVRZX09VVFBVVCkKKyAgICB7CisgICAgfQorfTsKKworLy8gVmVyaWZ5IGdsX1Bv
c2l0aW9uIGlzIHdyaXR0ZW4gd2hlbiBjb21waWxpbmcgaW4gY29tcGF0aWJpbGl0eSBtb2RlCitU
RVNUX0YoR0xTTENvbXBhdGliaWxpdHlPdXRwdXRUZXN0LCBHTFBvc2l0aW9uV3JpdHRlblRlc3Qp
Cit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAg
ICAgIn0iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBFWFBFQ1RfVFJVRShmb3Vu
ZEluQ29kZSgiZ2xfUG9zaXRpb24iKSk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0lu
dGVybU5vZGVfdGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0ludGVybU5vZGVfdGVzdC5jcHAJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0lu
dGVybU5vZGVfdGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMzAgQEAKKy8vCisv
LyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworLy8gSW50ZXJtTm9kZV90ZXN0LmNwcDoKKy8vICAgVW5pdCB0ZXN0cyBmb3IgdGhl
IEFTVCBub2RlIGNsYXNzZXMuCisvLworCisjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW5mb1Npbmsu
aCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuaCIKKyNpbmNsdWRl
ICJjb21waWxlci90cmFuc2xhdG9yL1Bvb2xBbGxvYy5oIgorCitjbGFzcyBJbnRlcm1Ob2RlVGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0Cit7CisgIHB1YmxpYzoKKyAgICBJbnRlcm1Ob2RlVGVz
dCgpIDogbVVuaXF1ZUluZGV4KDApIHt9CisKKyAgcHJvdGVjdGVkOgorICAgIHZvaWQgU2V0VXAo
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgYWxsb2NhdG9yLnB1c2goKTsKKyAgICAgICAgU2V0
R2xvYmFsUG9vbEFsbG9jYXRvcigmYWxsb2NhdG9yKTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJE
b3duKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFNldEdsb2JhbFBvb2xBbGxvY2F0b3IobnVs
bHB0cik7CisgICAgICAgIGFsbG9jYXRvci5wb3AoKTsKKyAgICB9CisKKyAgICBUSW50ZXJtU3lt
Ym9sICpjcmVhdGVUZXN0U3ltYm9sKGNvbnN0IFRUeXBlICZ0eXBlKQorICAgIHsKKyAgICAgICAg
VEluZm9TaW5rQmFzZSBzeW1ib2xOYW1lT3V0OworICAgICAgICBzeW1ib2xOYW1lT3V0IDw8ICJ0
ZXN0IiA8PCBtVW5pcXVlSW5kZXg7CisgICAgICAgIFRTdHJpbmcgc3ltYm9sTmFtZSA9IHN5bWJv
bE5hbWVPdXQuY19zdHIoKTsKKyAgICAgICAgKyttVW5pcXVlSW5kZXg7CisKKyAgICAgICAgVElu
dGVybVN5bWJvbCAqbm9kZSA9IG5ldyBUSW50ZXJtU3ltYm9sKDAsIHN5bWJvbE5hbWUsIHR5cGUp
OworICAgICAgICBub2RlLT5zZXRMaW5lKGNyZWF0ZVVuaXF1ZVNvdXJjZUxvYygpKTsKKyAgICAg
ICAgbm9kZS0+c2V0SW50ZXJuYWwodHJ1ZSk7CisgICAgICAgIG5vZGUtPmdldFR5cGVQb2ludGVy
KCktPnNldFF1YWxpZmllcihFdnFUZW1wb3JhcnkpOworICAgICAgICByZXR1cm4gbm9kZTsKKyAg
ICB9CisKKyAgICBUSW50ZXJtU3ltYm9sICpjcmVhdGVUZXN0U3ltYm9sKCkKKyAgICB7CisgICAg
ICAgIFRUeXBlIHR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gpOworICAgICAgICByZXR1cm4gY3JlYXRl
VGVzdFN5bWJvbCh0eXBlKTsKKyAgICB9CisKKyAgICB2b2lkIGNoZWNrVHlwZUVxdWFsV2l0aFF1
YWxpZmllcnMoY29uc3QgVFR5cGUgJm9yaWdpbmFsLCBjb25zdCBUVHlwZSAmY29weSkKKyAgICB7
CisgICAgICAgIEFTU0VSVF9FUShvcmlnaW5hbCwgY29weSk7CisgICAgICAgIEFTU0VSVF9FUShv
cmlnaW5hbC5nZXRQcmVjaXNpb24oKSwgY29weS5nZXRQcmVjaXNpb24oKSk7CisgICAgICAgIEFT
U0VSVF9FUShvcmlnaW5hbC5nZXRRdWFsaWZpZXIoKSwgY29weS5nZXRRdWFsaWZpZXIoKSk7Cisg
ICAgfQorCisgICAgdm9pZCBjaGVja1N5bWJvbENvcHkoVEludGVybU5vZGUgKmFPcmlnaW5hbCwg
VEludGVybU5vZGUgKmFDb3B5KQorICAgIHsKKyAgICAgICAgQVNTRVJUX05FKGFPcmlnaW5hbCwg
YUNvcHkpOworICAgICAgICBUSW50ZXJtU3ltYm9sICpjb3B5ICAgICA9IGFDb3B5LT5nZXRBc1N5
bWJvbE5vZGUoKTsKKyAgICAgICAgVEludGVybVN5bWJvbCAqb3JpZ2luYWwgPSBhT3JpZ2luYWwt
PmdldEFzU3ltYm9sTm9kZSgpOworICAgICAgICBBU1NFUlRfTkUobnVsbHB0ciwgY29weSk7Cisg
ICAgICAgIEFTU0VSVF9ORShudWxscHRyLCBvcmlnaW5hbCk7CisgICAgICAgIEFTU0VSVF9ORShv
cmlnaW5hbCwgY29weSk7CisgICAgICAgIEFTU0VSVF9FUShvcmlnaW5hbC0+Z2V0SWQoKSwgY29w
eS0+Z2V0SWQoKSk7CisgICAgICAgIEFTU0VSVF9FUShvcmlnaW5hbC0+Z2V0TmFtZSgpLmdldFN0
cmluZygpLCBjb3B5LT5nZXROYW1lKCkuZ2V0U3RyaW5nKCkpOworICAgICAgICBBU1NFUlRfRVEo
b3JpZ2luYWwtPmdldE5hbWUoKS5pc0ludGVybmFsKCksIGNvcHktPmdldE5hbWUoKS5pc0ludGVy
bmFsKCkpOworICAgICAgICBjaGVja1R5cGVFcXVhbFdpdGhRdWFsaWZpZXJzKG9yaWdpbmFsLT5n
ZXRUeXBlKCksIGNvcHktPmdldFR5cGUoKSk7CisgICAgICAgIEFTU0VSVF9FUShvcmlnaW5hbC0+
Z2V0TGluZSgpLmZpcnN0X2ZpbGUsIGNvcHktPmdldExpbmUoKS5maXJzdF9maWxlKTsKKyAgICAg
ICAgQVNTRVJUX0VRKG9yaWdpbmFsLT5nZXRMaW5lKCkuZmlyc3RfbGluZSwgY29weS0+Z2V0TGlu
ZSgpLmZpcnN0X2xpbmUpOworICAgICAgICBBU1NFUlRfRVEob3JpZ2luYWwtPmdldExpbmUoKS5s
YXN0X2ZpbGUsIGNvcHktPmdldExpbmUoKS5sYXN0X2ZpbGUpOworICAgICAgICBBU1NFUlRfRVEo
b3JpZ2luYWwtPmdldExpbmUoKS5sYXN0X2xpbmUsIGNvcHktPmdldExpbmUoKS5sYXN0X2xpbmUp
OworICAgIH0KKworICAgIFRTb3VyY2VMb2MgY3JlYXRlVW5pcXVlU291cmNlTG9jKCkKKyAgICB7
CisgICAgICAgIFRTb3VyY2VMb2MgbG9jOworICAgICAgICBsb2MuZmlyc3RfZmlsZSA9IG1Vbmlx
dWVJbmRleDsKKyAgICAgICAgbG9jLmZpcnN0X2xpbmUgPSBtVW5pcXVlSW5kZXggKyAxOworICAg
ICAgICBsb2MubGFzdF9maWxlICA9IG1VbmlxdWVJbmRleCArIDI7CisgICAgICAgIGxvYy5sYXN0
X2xpbmUgID0gbVVuaXF1ZUluZGV4ICsgMzsKKyAgICAgICAgKyttVW5pcXVlSW5kZXg7CisgICAg
ICAgIHJldHVybiBsb2M7CisgICAgfQorCisgICAgc3RhdGljIFRTb3VyY2VMb2MgZ2V0VGVzdFNv
dXJjZUxvYygpCisgICAgeworICAgICAgICBUU291cmNlTG9jIGxvYzsKKyAgICAgICAgbG9jLmZp
cnN0X2ZpbGUgPSAxOworICAgICAgICBsb2MuZmlyc3RfbGluZSA9IDI7CisgICAgICAgIGxvYy5s
YXN0X2ZpbGUgID0gMzsKKyAgICAgICAgbG9jLmxhc3RfbGluZSAgPSA0OworICAgICAgICByZXR1
cm4gbG9jOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGNoZWNrVGVzdFNvdXJjZUxvYyhjb25z
dCBUU291cmNlTG9jICZsb2MpCisgICAgeworICAgICAgICBBU1NFUlRfRVEoMSwgbG9jLmZpcnN0
X2ZpbGUpOworICAgICAgICBBU1NFUlRfRVEoMiwgbG9jLmZpcnN0X2xpbmUpOworICAgICAgICBB
U1NFUlRfRVEoMywgbG9jLmxhc3RfZmlsZSk7CisgICAgICAgIEFTU0VSVF9FUSg0LCBsb2MubGFz
dF9saW5lKTsKKyAgICB9CisKKyAgcHJpdmF0ZToKKyAgICBUUG9vbEFsbG9jYXRvciBhbGxvY2F0
b3I7CisgICAgaW50IG1VbmlxdWVJbmRleDsKK307CisKKy8vIENoZWNrIHRoYXQgdGhlIGRlZXAg
Y29weSBvZiBhIHN5bWJvbCBub2RlIGlzIGFuIGFjdHVhbCBjb3B5IHdpdGggdGhlIHNhbWUgYXR0
cmlidXRlcyBhcyB0aGUKKy8vIG9yaWdpbmFsLgorVEVTVF9GKEludGVybU5vZGVUZXN0LCBEZWVw
Q29weVN5bWJvbE5vZGUpCit7CisgICAgVFR5cGUgdHlwZShFYnRJbnQsIEVicEhpZ2gpOworICAg
IFRJbnRlcm1TeW1ib2wgKm9yaWdpbmFsID0gbmV3IFRJbnRlcm1TeW1ib2woMCwgVFN0cmluZygi
bmFtZSIpLCB0eXBlKTsKKyAgICBvcmlnaW5hbC0+c2V0TGluZShnZXRUZXN0U291cmNlTG9jKCkp
OworICAgIG9yaWdpbmFsLT5zZXRJbnRlcm5hbCh0cnVlKTsKKyAgICBUSW50ZXJtVHlwZWQgKmNv
cHkgPSBvcmlnaW5hbC0+ZGVlcENvcHkoKTsKKyAgICBjaGVja1N5bWJvbENvcHkob3JpZ2luYWws
IGNvcHkpOworICAgIGNoZWNrVGVzdFNvdXJjZUxvYyhjb3B5LT5nZXRMaW5lKCkpOworfQorCisv
LyBDaGVjayB0aGF0IHRoZSBkZWVwIGNvcHkgb2YgYSBjb25zdGFudCB1bmlvbiBub2RlIGlzIGFu
IGFjdHVhbCBjb3B5IHdpdGggdGhlIHNhbWUgYXR0cmlidXRlcyBhcworLy8gdGhlIG9yaWdpbmFs
LgorVEVTVF9GKEludGVybU5vZGVUZXN0LCBEZWVwQ29weUNvbnN0YW50VW5pb25Ob2RlKQorewor
ICAgIFRUeXBlIHR5cGUoRWJ0SW50LCBFYnBIaWdoKTsKKyAgICBUQ29uc3RhbnRVbmlvbiAqY29u
c3RWYWx1ZSA9IG5ldyBUQ29uc3RhbnRVbmlvblsxXTsKKyAgICBjb25zdFZhbHVlWzBdLnNldElD
b25zdCgxMDEpOworICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpvcmlnaW5hbCA9IG5ldyBUSW50
ZXJtQ29uc3RhbnRVbmlvbihjb25zdFZhbHVlLCB0eXBlKTsKKyAgICBvcmlnaW5hbC0+c2V0TGlu
ZShnZXRUZXN0U291cmNlTG9jKCkpOworICAgIFRJbnRlcm1UeXBlZCAqY29weVR5cGVkICAgID0g
b3JpZ2luYWwtPmRlZXBDb3B5KCk7CisgICAgVEludGVybUNvbnN0YW50VW5pb24gKmNvcHkgPSBj
b3B5VHlwZWQtPmdldEFzQ29uc3RhbnRVbmlvbigpOworICAgIEFTU0VSVF9ORShudWxscHRyLCBj
b3B5KTsKKyAgICBBU1NFUlRfTkUob3JpZ2luYWwsIGNvcHkpOworICAgIGNoZWNrVGVzdFNvdXJj
ZUxvYyhjb3B5LT5nZXRMaW5lKCkpOworICAgIGNoZWNrVHlwZUVxdWFsV2l0aFF1YWxpZmllcnMo
b3JpZ2luYWwtPmdldFR5cGUoKSwgY29weS0+Z2V0VHlwZSgpKTsKKyAgICBBU1NFUlRfRVEoMTAx
LCBjb3B5LT5nZXRJQ29uc3QoMCkpOworfQorCisvLyBDaGVjayB0aGF0IHRoZSBkZWVwIGNvcHkg
b2YgYSBiaW5hcnkgbm9kZSBpcyBhbiBhY3R1YWwgY29weSB3aXRoIHRoZSBzYW1lIGF0dHJpYnV0
ZXMgYXMgdGhlCisvLyBvcmlnaW5hbC4gQ2hpbGQgbm9kZXMgYWxzbyBuZWVkIHRvIGJlIGNvcGll
cyB3aXRoIHRoZSBzYW1lIGF0dHJpYnV0ZXMgYXMgdGhlIG9yaWdpbmFsIGNoaWxkcmVuLgorVEVT
VF9GKEludGVybU5vZGVUZXN0LCBEZWVwQ29weUJpbmFyeU5vZGUpCit7CisgICAgVFR5cGUgdHlw
ZShFYnRGbG9hdCwgRWJwSGlnaCk7CisKKyAgICBUSW50ZXJtQmluYXJ5ICpvcmlnaW5hbCA9IG5l
dyBUSW50ZXJtQmluYXJ5KEVPcEFkZCwgY3JlYXRlVGVzdFN5bWJvbCgpLCBjcmVhdGVUZXN0U3lt
Ym9sKCkpOworICAgIG9yaWdpbmFsLT5zZXRMaW5lKGdldFRlc3RTb3VyY2VMb2MoKSk7CisgICAg
VEludGVybVR5cGVkICpjb3B5VHlwZWQgPSBvcmlnaW5hbC0+ZGVlcENvcHkoKTsKKyAgICBUSW50
ZXJtQmluYXJ5ICpjb3B5ID0gY29weVR5cGVkLT5nZXRBc0JpbmFyeU5vZGUoKTsKKyAgICBBU1NF
UlRfTkUobnVsbHB0ciwgY29weSk7CisgICAgQVNTRVJUX05FKG9yaWdpbmFsLCBjb3B5KTsKKyAg
ICBjaGVja1Rlc3RTb3VyY2VMb2MoY29weS0+Z2V0TGluZSgpKTsKKyAgICBjaGVja1R5cGVFcXVh
bFdpdGhRdWFsaWZpZXJzKG9yaWdpbmFsLT5nZXRUeXBlKCksIGNvcHktPmdldFR5cGUoKSk7CisK
KyAgICBjaGVja1N5bWJvbENvcHkob3JpZ2luYWwtPmdldExlZnQoKSwgY29weS0+Z2V0TGVmdCgp
KTsKKyAgICBjaGVja1N5bWJvbENvcHkob3JpZ2luYWwtPmdldFJpZ2h0KCksIGNvcHktPmdldFJp
Z2h0KCkpOworfQorCisvLyBDaGVjayB0aGF0IHRoZSBkZWVwIGNvcHkgb2YgYSB1bmFyeSBub2Rl
IGlzIGFuIGFjdHVhbCBjb3B5IHdpdGggdGhlIHNhbWUgYXR0cmlidXRlcyBhcyB0aGUKKy8vIG9y
aWdpbmFsLiBUaGUgY2hpbGQgbm9kZSBhbHNvIG5lZWRzIHRvIGJlIGEgY29weSB3aXRoIHRoZSBz
YW1lIGF0dHJpYnV0ZXMgYXMgdGhlIG9yaWdpbmFsIGNoaWxkLgorVEVTVF9GKEludGVybU5vZGVU
ZXN0LCBEZWVwQ29weVVuYXJ5Tm9kZSkKK3sKKyAgICBUVHlwZSB0eXBlKEVidEZsb2F0LCBFYnBI
aWdoKTsKKworICAgIFRJbnRlcm1VbmFyeSAqb3JpZ2luYWwgPSBuZXcgVEludGVybVVuYXJ5KEVP
cFByZUluY3JlbWVudCwgY3JlYXRlVGVzdFN5bWJvbCgpKTsKKyAgICBvcmlnaW5hbC0+c2V0TGlu
ZShnZXRUZXN0U291cmNlTG9jKCkpOworICAgIFRJbnRlcm1UeXBlZCAqY29weVR5cGVkID0gb3Jp
Z2luYWwtPmRlZXBDb3B5KCk7CisgICAgVEludGVybVVuYXJ5ICpjb3B5ID0gY29weVR5cGVkLT5n
ZXRBc1VuYXJ5Tm9kZSgpOworICAgIEFTU0VSVF9ORShudWxscHRyLCBjb3B5KTsKKyAgICBBU1NF
UlRfTkUob3JpZ2luYWwsIGNvcHkpOworICAgIGNoZWNrVGVzdFNvdXJjZUxvYyhjb3B5LT5nZXRM
aW5lKCkpOworICAgIGNoZWNrVHlwZUVxdWFsV2l0aFF1YWxpZmllcnMob3JpZ2luYWwtPmdldFR5
cGUoKSwgY29weS0+Z2V0VHlwZSgpKTsKKworICAgIGNoZWNrU3ltYm9sQ29weShvcmlnaW5hbC0+
Z2V0T3BlcmFuZCgpLCBjb3B5LT5nZXRPcGVyYW5kKCkpOworfQorCisvLyBDaGVjayB0aGF0IHRo
ZSBkZWVwIGNvcHkgb2YgYW4gYWdncmVnYXRlIG5vZGUgaXMgYW4gYWN0dWFsIGNvcHkgd2l0aCB0
aGUgc2FtZSBhdHRyaWJ1dGVzIGFzIHRoZQorLy8gb3JpZ2luYWwuIENoaWxkIG5vZGVzIGFsc28g
bmVlZCB0byBiZSBjb3BpZXMgd2l0aCB0aGUgc2FtZSBhdHRyaWJ1dGVzIGFzIHRoZSBvcmlnaW5h
bCBjaGlsZHJlbi4KK1RFU1RfRihJbnRlcm1Ob2RlVGVzdCwgRGVlcENvcHlBZ2dyZWdhdGVOb2Rl
KQoreworICAgIFRUeXBlIHR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gpOworCisgICAgVEludGVybUFn
Z3JlZ2F0ZSAqb3JpZ2luYWwgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZShFT3BNaXgpOworICAgIG9y
aWdpbmFsLT5zZXRMaW5lKGdldFRlc3RTb3VyY2VMb2MoKSk7CisgICAgVEludGVybVNlcXVlbmNl
ICpvcmlnaW5hbFNlcSA9IG9yaWdpbmFsLT5nZXRTZXF1ZW5jZSgpOworICAgIG9yaWdpbmFsU2Vx
LT5wdXNoX2JhY2soY3JlYXRlVGVzdFN5bWJvbCgpKTsKKyAgICBvcmlnaW5hbFNlcS0+cHVzaF9i
YWNrKGNyZWF0ZVRlc3RTeW1ib2woKSk7CisgICAgb3JpZ2luYWxTZXEtPnB1c2hfYmFjayhjcmVh
dGVUZXN0U3ltYm9sKCkpOworICAgIFRJbnRlcm1UeXBlZCAqY29weVR5cGVkID0gb3JpZ2luYWwt
PmRlZXBDb3B5KCk7CisgICAgVEludGVybUFnZ3JlZ2F0ZSAqY29weSA9IGNvcHlUeXBlZC0+Z2V0
QXNBZ2dyZWdhdGUoKTsKKyAgICBBU1NFUlRfTkUobnVsbHB0ciwgY29weSk7CisgICAgQVNTRVJU
X05FKG9yaWdpbmFsLCBjb3B5KTsKKyAgICBjaGVja1Rlc3RTb3VyY2VMb2MoY29weS0+Z2V0TGlu
ZSgpKTsKKyAgICBjaGVja1R5cGVFcXVhbFdpdGhRdWFsaWZpZXJzKG9yaWdpbmFsLT5nZXRUeXBl
KCksIGNvcHktPmdldFR5cGUoKSk7CisKKyAgICBBU1NFUlRfRVEob3JpZ2luYWwtPmdldFNlcXVl
bmNlKCktPnNpemUoKSwgY29weS0+Z2V0U2VxdWVuY2UoKS0+c2l6ZSgpKTsKKyAgICBUSW50ZXJt
U2VxdWVuY2U6OnNpemVfdHlwZSBpID0gMDsKKyAgICBmb3IgKGF1dG8gKmNvcHlDaGlsZCA6ICpj
b3B5LT5nZXRTZXF1ZW5jZSgpKQorICAgIHsKKyAgICAgICAgVEludGVybU5vZGUgKm9yaWdpbmFs
Q2hpbGQgPSBvcmlnaW5hbFNlcS0+YXQoaSk7CisgICAgICAgIGNoZWNrU3ltYm9sQ29weShvcmln
aW5hbENoaWxkLCBjb3B5Q2hpbGQpOworICAgICAgICArK2k7CisgICAgfQorfQorCisvLyBDaGVj
ayB0aGF0IHRoZSBkZWVwIGNvcHkgb2YgYSB0ZXJuYXJ5IG5vZGUgaXMgYW4gYWN0dWFsIGNvcHkg
d2l0aCB0aGUgc2FtZSBhdHRyaWJ1dGVzIGFzIHRoZQorLy8gb3JpZ2luYWwuIENoaWxkIG5vZGVz
IGFsc28gbmVlZCB0byBiZSBjb3BpZXMgd2l0aCB0aGUgc2FtZSBhdHRyaWJ1dGVzIGFzIHRoZSBv
cmlnaW5hbCBjaGlsZHJlbi4KK1RFU1RfRihJbnRlcm1Ob2RlVGVzdCwgRGVlcENvcHlUZXJuYXJ5
Tm9kZSkKK3sKKyAgICBUVHlwZSB0eXBlKEVidEZsb2F0LCBFYnBIaWdoKTsKKworICAgIFRJbnRl
cm1UZXJuYXJ5ICpvcmlnaW5hbCA9IG5ldyBUSW50ZXJtVGVybmFyeShjcmVhdGVUZXN0U3ltYm9s
KFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCkpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVUZXN0U3ltYm9sKCksIGNyZWF0ZVRlc3RT
eW1ib2woKSk7CisgICAgb3JpZ2luYWwtPnNldExpbmUoZ2V0VGVzdFNvdXJjZUxvYygpKTsKKyAg
ICBUSW50ZXJtVHlwZWQgKmNvcHlUeXBlZCA9IG9yaWdpbmFsLT5kZWVwQ29weSgpOworICAgIFRJ
bnRlcm1UZXJuYXJ5ICpjb3B5ICAgID0gY29weVR5cGVkLT5nZXRBc1Rlcm5hcnlOb2RlKCk7Cisg
ICAgQVNTRVJUX05FKG51bGxwdHIsIGNvcHkpOworICAgIEFTU0VSVF9ORShvcmlnaW5hbCwgY29w
eSk7CisgICAgY2hlY2tUZXN0U291cmNlTG9jKGNvcHktPmdldExpbmUoKSk7CisgICAgY2hlY2tU
eXBlRXF1YWxXaXRoUXVhbGlmaWVycyhvcmlnaW5hbC0+Z2V0VHlwZSgpLCBjb3B5LT5nZXRUeXBl
KCkpOworCisgICAgY2hlY2tTeW1ib2xDb3B5KG9yaWdpbmFsLT5nZXRDb25kaXRpb24oKSwgY29w
eS0+Z2V0Q29uZGl0aW9uKCkpOworICAgIGNoZWNrU3ltYm9sQ29weShvcmlnaW5hbC0+Z2V0VHJ1
ZUV4cHJlc3Npb24oKSwgY29weS0+Z2V0VHJ1ZUV4cHJlc3Npb24oKSk7CisgICAgY2hlY2tTeW1i
b2xDb3B5KG9yaWdpbmFsLT5nZXRGYWxzZUV4cHJlc3Npb24oKSwgY29weS0+Z2V0RmFsc2VFeHBy
ZXNzaW9uKCkpOworfQorCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
Y29tcGlsZXJfdGVzdHMvTWFsZm9ybWVkU2hhZGVyX3Rlc3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9NYWxmb3JtZWRT
aGFkZXJfdGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL01hbGZvcm1lZFNoYWRlcl90ZXN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDI1ODYgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gTWFsZm9ybWVkU2hh
ZGVyX3Rlc3QuY3BwOgorLy8gICBUZXN0cyB0aGF0IG1hbGZvcm1lZCBzaGFkZXJzIGZhaWwgY29t
cGlsYXRpb24uCisvLworCisjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKKyNpbmNsdWRlICJndGVzdC9n
dGVzdC5oIgorI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgorI2luY2x1ZGUgImNvbXBp
bGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckVTU0wuaCIKKworY2xhc3MgTWFsZm9ybWVkU2hhZGVy
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0Cit7CisgIHB1YmxpYzoKKyAgICBNYWxmb3JtZWRT
aGFkZXJUZXN0KCkgOiBtRXh0cmFDb21waWxlT3B0aW9ucygwKSB7fQorCisgIHByb3RlY3RlZDoK
KyAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQorICAgIHsKKyAgICAgICAgU2hCdWlsdEluUmVzb3Vy
Y2VzIHJlc291cmNlczsKKyAgICAgICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmcmVzb3VyY2Vz
KTsKKworICAgICAgICBtVHJhbnNsYXRvciA9IG5ldyBUcmFuc2xhdG9yRVNTTChHTF9GUkFHTUVO
VF9TSEFERVIsIFNIX0dMRVMzX1NQRUMpOworICAgICAgICBBU1NFUlRfVFJVRShtVHJhbnNsYXRv
ci0+SW5pdChyZXNvdXJjZXMpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24o
KQorICAgIHsKKyAgICAgICAgZGVsZXRlIG1UcmFuc2xhdG9yOworICAgIH0KKworICAgIC8vIFJl
dHVybiB0cnVlIHdoZW4gY29tcGlsYXRpb24gc3VjY2VlZHMKKyAgICBib29sIGNvbXBpbGUoY29u
c3Qgc3RkOjpzdHJpbmcmIHNoYWRlclN0cmluZykKKyAgICB7CisgICAgICAgIGNvbnN0IGNoYXIg
KnNoYWRlclN0cmluZ3NbXSA9IHsgc2hhZGVyU3RyaW5nLmNfc3RyKCkgfTsKKyAgICAgICAgYm9v
bCBjb21waWxhdGlvblN1Y2Nlc3MgPQorICAgICAgICAgICAgbVRyYW5zbGF0b3ItPmNvbXBpbGUo
c2hhZGVyU3RyaW5ncywgMSwgU0hfSU5URVJNRURJQVRFX1RSRUUgfCBtRXh0cmFDb21waWxlT3B0
aW9ucyk7CisgICAgICAgIFRJbmZvU2luayAmaW5mb1NpbmsgPSBtVHJhbnNsYXRvci0+Z2V0SW5m
b1NpbmsoKTsKKyAgICAgICAgbUluZm9Mb2cgPSBpbmZvU2luay5pbmZvLmNfc3RyKCk7CisgICAg
ICAgIHJldHVybiBjb21waWxhdGlvblN1Y2Nlc3M7CisgICAgfQorCisgICAgYm9vbCBoYXNXYXJu
aW5nKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtSW5mb0xvZy5maW5kKCJXQVJOSU5H
OiAiKSAhPSBzdGQ6OnN0cmluZzo6bnBvczsKKyAgICB9CisKKyAgcHJvdGVjdGVkOgorICAgIHN0
ZDo6c3RyaW5nIG1JbmZvTG9nOworICAgIFRyYW5zbGF0b3JFU1NMICptVHJhbnNsYXRvcjsKKyAg
ICBTaENvbXBpbGVPcHRpb25zIG1FeHRyYUNvbXBpbGVPcHRpb25zOworfTsKKworY2xhc3MgTWFs
Zm9ybWVkVmVydGV4U2hhZGVyVGVzdCA6IHB1YmxpYyBNYWxmb3JtZWRTaGFkZXJUZXN0Cit7Cisg
IHB1YmxpYzoKKyAgICBNYWxmb3JtZWRWZXJ0ZXhTaGFkZXJUZXN0KCkge30KKworICBwcm90ZWN0
ZWQ6CisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBTaEJ1aWx0SW5S
ZXNvdXJjZXMgcmVzb3VyY2VzOworICAgICAgICBTaEluaXRCdWlsdEluUmVzb3VyY2VzKCZyZXNv
dXJjZXMpOworCisgICAgICAgIG1UcmFuc2xhdG9yID0gbmV3IFRyYW5zbGF0b3JFU1NMKEdMX1ZF
UlRFWF9TSEFERVIsIFNIX0dMRVMzX1NQRUMpOworICAgICAgICBBU1NFUlRfVFJVRShtVHJhbnNs
YXRvci0+SW5pdChyZXNvdXJjZXMpKTsKKyAgICB9Cit9OworCitjbGFzcyBNYWxmb3JtZWRXZWJH
TDJTaGFkZXJUZXN0IDogcHVibGljIE1hbGZvcm1lZFNoYWRlclRlc3QKK3sKKyAgcHVibGljOgor
ICAgIE1hbGZvcm1lZFdlYkdMMlNoYWRlclRlc3QoKSB7fQorCisgIHByb3RlY3RlZDoKKyAgICB2
b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFNoQnVpbHRJblJlc291cmNlcyBy
ZXNvdXJjZXM7CisgICAgICAgIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoJnJlc291cmNlcyk7CisK
KyAgICAgICAgbVRyYW5zbGF0b3IgPSBuZXcgVHJhbnNsYXRvckVTU0woR0xfRlJBR01FTlRfU0hB
REVSLCBTSF9XRUJHTDJfU1BFQyk7CisgICAgICAgIEFTU0VSVF9UUlVFKG1UcmFuc2xhdG9yLT5J
bml0KHJlc291cmNlcykpOworICAgIH0KK307CisKK2NsYXNzIE1hbGZvcm1lZFdlYkdMMVNoYWRl
clRlc3QgOiBwdWJsaWMgTWFsZm9ybWVkU2hhZGVyVGVzdAoreworICBwdWJsaWM6CisgICAgTWFs
Zm9ybWVkV2ViR0wxU2hhZGVyVGVzdCgpIHt9CisKKyAgcHJvdGVjdGVkOgorICAgIHZvaWQgU2V0
VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgU2hCdWlsdEluUmVzb3VyY2VzIHJlc291cmNl
czsKKyAgICAgICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmcmVzb3VyY2VzKTsKKworICAgICAg
ICBtVHJhbnNsYXRvciA9IG5ldyBUcmFuc2xhdG9yRVNTTChHTF9GUkFHTUVOVF9TSEFERVIsIFNI
X1dFQkdMX1NQRUMpOworICAgICAgICBBU1NFUlRfVFJVRShtVHJhbnNsYXRvci0+SW5pdChyZXNv
dXJjZXMpKTsKKyAgICB9Cit9OworCitjbGFzcyBNYWxmb3JtZWRWZXJ0ZXhTaGFkZXJHTEVTMzFU
ZXN0IDogcHVibGljIE1hbGZvcm1lZFNoYWRlclRlc3QKK3sKKyAgcHVibGljOgorICAgIE1hbGZv
cm1lZFZlcnRleFNoYWRlckdMRVMzMVRlc3QoKSB7fQorCisgIHByaXZhdGU6CisgICAgdm9pZCBT
ZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgcmVzb3Vy
Y2VzOworICAgICAgICBTaEluaXRCdWlsdEluUmVzb3VyY2VzKCZyZXNvdXJjZXMpOworICAgICAg
ICBtVHJhbnNsYXRvciA9IG5ldyBUcmFuc2xhdG9yRVNTTChHTF9WRVJURVhfU0hBREVSLCBTSF9H
TEVTM18xX1NQRUMpOworICAgICAgICBBU1NFUlRfVFJVRShtVHJhbnNsYXRvci0+SW5pdChyZXNv
dXJjZXMpKTsKKyAgICB9Cit9OworCitjbGFzcyBNYWxmb3JtZWRGcmFnbWVudFNoYWRlckdMRVMz
MVRlc3QgOiBwdWJsaWMgTWFsZm9ybWVkU2hhZGVyVGVzdAoreworICBwdWJsaWM6CisgICAgTWFs
Zm9ybWVkRnJhZ21lbnRTaGFkZXJHTEVTMzFUZXN0KCkge30KKworICBwcml2YXRlOgorICAgIHZv
aWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgU2hCdWlsdEluUmVzb3VyY2VzIHJl
c291cmNlczsKKyAgICAgICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmcmVzb3VyY2VzKTsKKyAg
ICAgICAgbVRyYW5zbGF0b3IgPSBuZXcgVHJhbnNsYXRvckVTU0woR0xfRlJBR01FTlRfU0hBREVS
LCBTSF9HTEVTM18xX1NQRUMpOworICAgICAgICBBU1NFUlRfVFJVRShtVHJhbnNsYXRvci0+SW5p
dChyZXNvdXJjZXMpKTsKKyAgICB9Cit9OworCitjbGFzcyBNYWxmb3JtZWRDb21wdXRlU2hhZGVy
VGVzdCA6IHB1YmxpYyBNYWxmb3JtZWRTaGFkZXJUZXN0Cit7CisgIHB1YmxpYzoKKyAgICBNYWxm
b3JtZWRDb21wdXRlU2hhZGVyVGVzdCgpIHt9CisKKyAgcHJpdmF0ZToKKyAgICB2b2lkIFNldFVw
KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFNoQnVpbHRJblJlc291cmNlcyByZXNvdXJjZXM7
CisgICAgICAgIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoJnJlc291cmNlcyk7CisgICAgICAgIG1U
cmFuc2xhdG9yID0gbmV3IFRyYW5zbGF0b3JFU1NMKEdMX0NPTVBVVEVfU0hBREVSLCBTSF9HTEVT
M18xX1NQRUMpOworICAgICAgICBBU1NFUlRfVFJVRShtVHJhbnNsYXRvci0+SW5pdChyZXNvdXJj
ZXMpKTsKKyAgICB9Cit9OworCitjbGFzcyBVbnJvbGxGb3JMb29wc1Rlc3QgOiBwdWJsaWMgTWFs
Zm9ybWVkU2hhZGVyVGVzdAoreworICBwdWJsaWM6CisgICAgVW5yb2xsRm9yTG9vcHNUZXN0KCkg
eyBtRXh0cmFDb21waWxlT3B0aW9ucyA9IFNIX1VOUk9MTF9GT1JfTE9PUF9XSVRIX0lOVEVHRVJf
SU5ERVg7IH0KK307CisKKy8vIFRoaXMgaXMgYSB0ZXN0IGZvciBhIGJ1ZyB0aGF0IHVzZWQgdG8g
ZXhpc3QgaW4gQU5HTEU6CisvLyBDYWxsaW5nIGEgZnVuY3Rpb24gd2l0aCBhbGwgcGFyYW1ldGVy
cyBtaXNzaW5nIHNob3VsZCBub3Qgc3VjY2VlZC4KK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0
LCBGdW5jdGlvblBhcmFtZXRlck1pc21hdGNoKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZz
aGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAg
ICAgICJmbG9hdCBmdW4oZmxvYXQgYSkge1xuIgorICAgICAgICAiICAgcmV0dXJuIGEgKiAyLjA7
XG4iCisgICAgICAgICJ9XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIg
ICBmbG9hdCBmZiA9IGZ1bigpO1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChm
Zik7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisg
ICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4
cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBGdW5jdGlvbnMg
Y2FuJ3QgYmUgcmVkZWNsYXJlZCBhcyB2YXJpYWJsZXMgaW4gdGhlIHNhbWUgc2NvcGUgKEVTU0wg
MS4wMCBzZWN0aW9uIDQuMi43KQorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIFJlZGVjbGFy
aW5nRnVuY3Rpb25Bc1ZhcmlhYmxlKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJT
dHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJm
bG9hdCBmdW4oZmxvYXQgYSkge1xuIgorICAgICAgICAiICAgcmV0dXJuIGEgKiAyLjA7XG4iCisg
ICAgICAgICJ9XG4iCisgICAgICAgICJmbG9hdCBmdW47XG4iCisgICAgICAgICJ2b2lkIG1haW4o
KSB7XG4iCisgICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCk7XG4iCisgICAgICAg
ICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBG
QUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJl
ICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBGdW5jdGlvbnMgY2FuJ3QgYmUgcmVkZWNs
YXJlZCBhcyBzdHJ1Y3RzIGluIHRoZSBzYW1lIHNjb3BlIChFU1NMIDEuMDAgc2VjdGlvbiA0LjIu
NykKK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBSZWRlY2xhcmluZ0Z1bmN0aW9uQXNTdHJ1
Y3QpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgImZsb2F0IGZ1bihmbG9hdCBhKSB7
XG4iCisgICAgICAgICIgICByZXR1cm4gYSAqIDIuMDtcbiIKKyAgICAgICAgIn1cbiIKKyAgICAg
ICAgInN0cnVjdCBmdW4geyBmbG9hdCBhOyB9O1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xu
IgorICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjApO1xuIgorICAgICAgICAifVxu
IjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgp
IDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8
IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gRnVuY3Rpb25zIGNhbid0IGJlIHJlZGVjbGFyZWQg
d2l0aCBkaWZmZXJlbnQgcXVhbGlmaWVycyAoRVNTTCAxLjAwIHNlY3Rpb24gNi4xLjApCitURVNU
X0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgUmVkZWNsYXJpbmdGdW5jdGlvbldpdGhEaWZmZXJlbnRR
dWFsaWZpZXJzKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAg
ICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJmbG9hdCBmdW4ob3V0
IGZsb2F0IGEpO1xuIgorICAgICAgICAiZmxvYXQgZnVuKGZsb2F0IGEpIHtcbiIKKyAgICAgICAg
IiAgIHJldHVybiBhICogMi4wO1xuIgorICAgICAgICAifVxuIgorICAgICAgICAidm9pZCBtYWlu
KCkge1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjApO1xuIgorICAgICAg
ICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAg
RkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVy
ZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gQXNzaWdubWVudCBhbmQgZXF1YWxpdHkg
YXJlIHVuZGVmaW5lZCBmb3Igc3RydWN0dXJlcyBjb250YWluaW5nIGFycmF5cyAoRVNTTCAxLjAw
IHNlY3Rpb24gNS43KQorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIENvbXBhcmVTdHJ1Y3Rz
Q29udGFpbmluZ0FycmF5cykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5n
ID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAic3RydWN0
IHMgeyBmbG9hdCBhWzNdOyB9O1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAg
ICAiICAgcyBhO1xuIgorICAgICAgICAiICAgcyBiO1xuIgorICAgICAgICAiICAgYm9vbCBjID0g
KGEgPT0gYik7XG4iCisgICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGMgPyAxLjAgOiAw
LjApO1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQor
ICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBl
eHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gQXNzaWdubWVu
dCBhbmQgZXF1YWxpdHkgYXJlIHVuZGVmaW5lZCBmb3Igc3RydWN0dXJlcyBjb250YWluaW5nIGFy
cmF5cyAoRVNTTCAxLjAwIHNlY3Rpb24gNS43KQorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3Qs
IEFzc2lnblN0cnVjdHNDb250YWluaW5nQXJyYXlzKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisg
ICAgICAgICJzdHJ1Y3QgcyB7IGZsb2F0IGFbM107IH07XG4iCisgICAgICAgICJ2b2lkIG1haW4o
KSB7XG4iCisgICAgICAgICIgICBzIGE7XG4iCisgICAgICAgICIgICBzIGI7XG4iCisgICAgICAg
ICIgICBiLmFbMF0gPSAwLjA7XG4iCisgICAgICAgICIgICBhID0gYjtcbiIKKyAgICAgICAgIiAg
IGdsX0ZyYWdDb2xvciA9IHZlYzQoYS5hWzBdKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYg
KGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVy
IGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsK
KyAgICB9Cit9CisKKy8vIEFzc2lnbm1lbnQgYW5kIGVxdWFsaXR5IGFyZSB1bmRlZmluZWQgZm9y
IHN0cnVjdHVyZXMgY29udGFpbmluZyBzYW1wbGVycyAoRVNTTCAxLjAwIHNlY3Rpb25zIDUuNyBh
bmQgNS45KQorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIENvbXBhcmVTdHJ1Y3RzQ29udGFp
bmluZ1NhbXBsZXJzKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQor
ICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJzdHJ1Y3QgcyB7
IHNhbXBsZXIyRCBmb287IH07XG4iCisgICAgICAgICJ1bmlmb3JtIHMgYTtcbiIKKyAgICAgICAg
InVuaWZvcm0gcyBiO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAg
Ym9vbCBjID0gKGEgPT0gYik7XG4iCisgICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGMg
PyAxLjAgOiAwLjApO1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJT
dHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3Vj
Y2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8g
U2FtcGxlcnMgYXJlIG5vdCBhbGxvd2VkIGFzIGwtdmFsdWVzIChFU1NMIDMuMDAgc2VjdGlvbiA0
LjEuNyksIG91ciBpbnRlcnByZXRhdGlvbiBpcyB0aGF0IHRoaXMKKy8vIGV4dGVuZHMgdG8gc3Ry
dWN0cyBjb250YWluaW5nIHNhbXBsZXJzLiBFU1NMIDEuMDAgc3BlYyBpcyBjbGVhcmVyIGFib3V0
IHRoaXMuCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgQXNzaWduU3RydWN0c0NvbnRhaW5p
bmdTYW1wbGVycykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAg
ICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7XG4iCisgICAgICAgICJzdHJ1Y3QgcyB7IHNhbXBsZXIyRCBmb287IH07XG4iCisgICAgICAg
ICJ1bmlmb3JtIHMgYTtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAg
ICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIHMgYjtcbiIKKyAgICAgICAgIiAg
IGIgPSBhO1xuIgorICAgICAgICAiICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgorICAg
ICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAg
ICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFp
bHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gVGhpcyBpcyBhIHJlZ3Jlc3Npb24g
dGVzdCBmb3IgYSBwYXJ0aWN1bGFyIGJ1ZyB0aGF0IHdhcyBpbiBBTkdMRS4KKy8vIEl0IGFsc28g
dmVyaWZpZXMgdGhhdCBFU1NMMyBmdW5jdGlvbmFsaXR5IGRvZXNuJ3QgbGVhayB0byBFU1NMMS4K
K1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBBcnJheVdpdGhOb1NpemVJbkluaXRpYWxpemVy
TGlzdCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAg
InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgor
ICAgICAgICAiICAgZmxvYXQgYVsyXSwgYltdO1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0NvbG9y
ID0gdmVjNCgxLjApO1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJT
dHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3Vj
Y2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8g
Q29uc3QgdmFyaWFibGVzIG5lZWQgYW4gaW5pdGlhbGl6ZXIuCitURVNUX0YoTWFsZm9ybWVkU2hh
ZGVyVGVzdCwgQ29uc3RWYXJOb3RJbml0aWFsaXplZCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAi
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29s
b3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBjb25zdCBmbG9h
dCBhO1xuIgorICAgICAgICAiICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgorICAgICAg
ICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAg
RkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVy
ZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gQ29uc3QgdmFyaWFibGVzIG5lZWQgYW4g
aW5pdGlhbGl6ZXIuIEluIEVTU0wxIGNvbnN0IHN0cnVjdHMgY29udGFpbmluZworLy8gYXJyYXlz
IGFyZSBub3QgYWxsb3dlZCBhdCBhbGwgc2luY2UgaXQncyBpbXBvc3NpYmxlIHRvIGluaXRpYWxp
emUgdGhlbS4KKy8vIEV2ZW4gdGhvdWdoIHRoaXMgdGVzdCBpcyBmb3IgRVNTTDMgdGhlIG9ubHkg
dGhpbmcgdGhhdCdzIGNyaXRpY2FsIGZvcgorLy8gRVNTTDEgaXMgdGhlIG5vbi1pbml0aWFsaXph
dGlvbiBjaGVjayB0aGF0J3MgdXNlZCBmb3IgYm90aCBsYW5ndWFnZSB2ZXJzaW9ucy4KKy8vIFdo
ZXRoZXIgRVNTTDEgY29tcGlsYXRpb24gZ2VuZXJhdGVzIHRoZSBtb3N0IGhlbHBmdWwgZXJyb3Ig
bWVzc2FnZXMgaXMgYQorLy8gc2Vjb25kYXJ5IGNvbmNlcm4uCitURVNUX0YoTWFsZm9ybWVkU2hh
ZGVyVGVzdCwgQ29uc3RTdHJ1Y3ROb3RJbml0aWFsaXplZCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0
cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAg
ICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJzdHJ1Y3QgUyB7XG4iCisg
ICAgICAgICIgICBmbG9hdCBhWzNdO1xuIgorICAgICAgICAifTtcbiIKKyAgICAgICAgIm91dCB2
ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAg
IiAgIGNvbnN0IFMgYjtcbiIKKyAgICAgICAgIiAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMS4wKTtc
biIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7
CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0
aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIENvbnN0IHZhcmlhYmxl
cyBuZWVkIGFuIGluaXRpYWxpemVyLiBJbiBFU1NMMSBjb25zdCBhcnJheXMgYXJlIG5vdCBhbGxv
d2VkCisvLyBhdCBhbGwgc2luY2UgaXQncyBpbXBvc3NpYmxlIHRvIGluaXRpYWxpemUgdGhlbS4K
Ky8vIEV2ZW4gdGhvdWdoIHRoaXMgdGVzdCBpcyBmb3IgRVNTTDMgdGhlIG9ubHkgdGhpbmcgdGhh
dCdzIGNyaXRpY2FsIGZvcgorLy8gRVNTTDEgaXMgdGhlIG5vbi1pbml0aWFsaXphdGlvbiBjaGVj
ayB0aGF0J3MgdXNlZCBmb3IgYm90aCBsYW5ndWFnZSB2ZXJzaW9ucy4KKy8vIFdoZXRoZXIgRVNT
TDEgY29tcGlsYXRpb24gZ2VuZXJhdGVzIHRoZSBtb3N0IGhlbHBmdWwgZXJyb3IgbWVzc2FnZXMg
aXMgYQorLy8gc2Vjb25kYXJ5IGNvbmNlcm4uCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwg
Q29uc3RBcnJheU5vdEluaXRpYWxpemVkKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFk
ZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIK
KyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGNvbnN0IGZsb2F0IGFbM107
XG4iCisgICAgICAgICIgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XG4iCisgICAgICAgICJ9
XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlM
KCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIg
PDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBCbG9jayBsYXlvdXQgcXVhbGlmaWVycyBjYW4n
dCBiZSB1c2VkIG9uIG5vbi1ibG9jayB1bmlmb3JtcyAoRVNTTCAzLjAwIHNlY3Rpb24gNC4zLjgu
MykKK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBCbG9ja0xheW91dFF1YWxpZmllck9uUmVn
dWxhclVuaWZvcm0pCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Cisg
ICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0O1xuIgorICAgICAgICAibGF5b3V0KHBhY2tlZCkgdW5pZm9ybSBtYXQyIHg7XG4iCisgICAg
ICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4i
CisgICAgICAgICIgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XG4iCisgICAgICAgICJ9XG4i
OworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkg
PDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwg
bUluZm9Mb2c7CisgICAgfQorfQorCisvLyBCbG9jayBsYXlvdXQgcXVhbGlmaWVycyBjYW4ndCBi
ZSB1c2VkIG9uIG5vbi1ibG9jayB1bmlmb3JtcyAoRVNTTCAzLjAwIHNlY3Rpb24gNC4zLjguMykK
K1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBCbG9ja0xheW91dFF1YWxpZmllck9uVW5pZm9y
bVdpdGhFbXB0eURlY2wpCit7CisgICAgLy8gWWVzLCB0aGUgY29tbWEgaW4gdGhlIGRlY2xhcmF0
aW9uIGJlbG93IGlzIG5vdCBhIHR5cG8uCisgICAgLy8gRW1wdHkgZGVjbGFyYXRpb25zIGFyZSBh
bGxvd2VkIGluIEdMU0wuCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Cisg
ICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0O1xuIgorICAgICAgICAibGF5b3V0KHBhY2tlZCkgdW5pZm9ybSBtYXQyLCB4O1xuIgorICAg
ICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xu
IgorICAgICAgICAiICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgorICAgICAgICAifVxu
IjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgp
IDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8
IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gQXJyYXlzIG9mIGFycmF5cyBhcmUgbm90IGFsbG93
ZWQgKEVTU0wgMy4wMCBzZWN0aW9uIDQuMS45KQorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3Qs
IEFycmF5c09mQXJyYXlzMSkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5n
ID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAg
ICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBmbG9hdFs1XSBhWzNdO1xuIgorICAgICAg
ICAiICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgorICAgICAgICAifVxuIjsKKyAgICBp
ZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFk
ZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9n
OworICAgIH0KK30KKworLy8gQXJyYXlzIG9mIGFycmF5cyBhcmUgbm90IGFsbG93ZWQgKEVTU0wg
My4wMCBzZWN0aW9uIDQuMS45KQorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIEFycmF5c09m
QXJyYXlzMikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAg
ICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1h
aW4oKSB7XG4iCisgICAgICAgICIgICBmbG9hdFsyXSBhLCBiWzNdO1xuIgorICAgICAgICAiICAg
bXlfRnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29t
cGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29t
cGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAg
IH0KK30KKworLy8gSW1wbGljaXRseSBzaXplZCBhcnJheXMgbmVlZCB0byBiZSBpbml0aWFsaXpl
ZCAoRVNTTCAzLjAwIHNlY3Rpb24gNC4xLjkpCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwg
VW5pbml0aWFsaXplZEltcGxpY2l0QXJyYXlTaXplKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xv
cjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGZsb2F0W10gYTtc
biIKKyAgICAgICAgIiAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMS4wKTtcbiIKKyAgICAgICAgIn1c
biI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwo
KSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8
PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIEFuIG9wZXJhdG9yIGNhbiBvbmx5IGZvcm0gYSBj
b25zdGFudCBleHByZXNzaW9uIGlmIGFsbCB0aGUgb3BlcmFuZHMgYXJlIGNvbnN0YW50IGV4cHJl
c3Npb25zCisvLyAtIGV2ZW4gb3BlcmFuZHMgb2YgdGVybmFyeSBvcGVyYXRvciB0aGF0IGFyZSBu
ZXZlciBldmFsdWF0ZWQuIChFU1NMIDMuMDAgc2VjdGlvbiA0LjMuMykKK1RFU1RfRihNYWxmb3Jt
ZWRTaGFkZXJUZXN0LCBUZXJuYXJ5T3BlcmF0b3JOb3RDb25zdGFudEV4cHJlc3Npb24pCit7Cisg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAz
MDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAi
b3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidW5pZm9ybSBib29sIHU7XG4iCisg
ICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBjb25zdCBib29sIGEgPSB0cnVl
ID8gdHJ1ZSA6IHU7XG4iCisgICAgICAgICIgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XG4i
CisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgewor
ICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGlu
ZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBUZXJuYXJ5IG9wZXJhdG9y
IGNhbid0IG9wZXJhdGUgb24gYXJyYXlzIChFU1NMIDMuMDAgc2VjdGlvbiA1LjcpCitURVNUX0Yo
TWFsZm9ybWVkU2hhZGVyVGVzdCwgVGVybmFyeU9wZXJhdG9yT25BcnJheXMpCit7CisgICAgY29u
c3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNc
biIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0IHZl
YzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAi
ICAgZmxvYXRbMV0gYSA9IGZsb2F0WzFdKDAuMCk7XG4iCisgICAgICAgICIgICBmbG9hdFsxXSBi
ID0gZmxvYXRbMV0oMS4wKTtcbiIKKyAgICAgICAgIiAgIGZsb2F0WzFdIGMgPSB0cnVlID8gYSA6
IGI7XG4iCisgICAgICAgICIgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XG4iCisgICAgICAg
ICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBG
QUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJl
ICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBUZXJuYXJ5IG9wZXJhdG9yIGNhbid0IG9w
ZXJhdGUgb24gc3RydWN0cyAoRVNTTCAzLjAwIHNlY3Rpb24gNS43KQorVEVTVF9GKE1hbGZvcm1l
ZFNoYWRlclRlc3QsIFRlcm5hcnlPcGVyYXRvck9uU3RydWN0cykKK3sKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAg
ICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9G
cmFnQ29sb3I7XG4iCisgICAgICAgICJzdHJ1Y3QgUyB7IGZsb2F0IGZvbzsgfTtcbiIKKyAgICAg
ICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIFMgYSA9IFMoMC4wKTtcbiIKKyAgICAg
ICAgIiAgIFMgYiA9IFMoMS4wKTtcbiIKKyAgICAgICAgIiAgIFMgYyA9IHRydWUgPyBhIDogYjtc
biIKKyAgICAgICAgIiAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMS4wKTtcbiIKKyAgICAgICAgIn1c
biI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwo
KSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8
PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIEFycmF5IGxlbmd0aCgpIHJldHVybnMgYSBjb25z
dGFudCBzaWduZWQgaW50ZWdyYWwgZXhwcmVzc2lvbiAoRVNTTCAzLjAwIHNlY3Rpb24gNC4xLjkp
CisvLyBBc3NpZ25pbmcgaXQgdG8gdW5zaWduZWQgc2hvdWxkIHJlc3VsdCBpbiBhbiBlcnJvci4K
K1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBBc3NpZ25BcnJheUxlbmd0aFRvVW5zaWduZWQp
Cit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVy
c2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAg
ICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xu
IgorICAgICAgICAiICAgaW50WzFdIGFycjtcbiIKKyAgICAgICAgIiAgIHVpbnQgbCA9IGFyci5s
ZW5ndGgoKTtcbiIKKyAgICAgICAgIiAgIG15X0ZyYWdDb2xvciA9IHZlYzQoZmxvYXQobCkpO1xu
IgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsK
KyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3Rp
bmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gR2xvYmFsIHZhcmlhYmxl
IGluaXRpYWxpemVycyBuZWVkIHRvIGJlIGNvbnN0YW50IGV4cHJlc3Npb25zIChFU1NMIDEuMDAg
c2VjdGlvbiA0LjMpCisvLyBJbml0aWFsaXppbmcgd2l0aCBhIHZhcnlpbmcgc2hvdWxkIGJlIGFu
IGVycm9yLgorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIEFzc2lnblZhcnlpbmdUb0dsb2Jh
bCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidmFyeWluZyBmbG9hdCBhO1xuIgor
ICAgICAgICAiZmxvYXQgYiA9IGEgKiAyLjA7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4i
CisgICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGIpO1xuIgorICAgICAgICAifVxuIjsK
KyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8
ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1J
bmZvTG9nOworICAgIH0KK30KKworLy8gR2xvYmFsIHZhcmlhYmxlIGluaXRpYWxpemVycyBuZWVk
IHRvIGJlIGNvbnN0YW50IGV4cHJlc3Npb25zIChFU1NMIDMuMDAgc2VjdGlvbiA0LjMpCisvLyBJ
bml0aWFsaXppbmcgd2l0aCBhbiB1bmlmb3JtIHNob3VsZCBiZSBhbiBlcnJvci4KK1RFU1RfRihN
YWxmb3JtZWRTaGFkZXJUZXN0LCBBc3NpZ25Vbmlmb3JtVG9HbG9iYWxFU1NMMykKK3sKKyAgICBj
b25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBl
c1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ1bmlm
b3JtIGZsb2F0IGE7XG4iCisgICAgICAgICJmbG9hdCBiID0gYSAqIDIuMDtcbiIKKyAgICAgICAg
Im91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAg
ICAgICAgIiAgIG15X0ZyYWdDb2xvciA9IHZlYzQoYik7XG4iCisgICAgICAgICJ9XG4iOworICAg
IGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNo
YWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9M
b2c7CisgICAgfQorfQorCisvLyBHbG9iYWwgdmFyaWFibGUgaW5pdGlhbGl6ZXJzIG5lZWQgdG8g
YmUgY29uc3RhbnQgZXhwcmVzc2lvbnMgKEVTU0wgMS4wMCBzZWN0aW9uIDQuMykKKy8vIEluaXRp
YWxpemluZyB3aXRoIGFuIHVuaWZvcm0gc2hvdWxkIGdlbmVyYXRlIGEgd2FybmluZworLy8gKHdl
IGRvbid0IGdlbmVyYXRlIGFuIGVycm9yIG9uIEVTU0wgMS4wMCBiZWNhdXNlIG9mIGxlZ2FjeSBj
b21wYXRpYmlsaXR5KQorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIEFzc2lnblVuaWZvcm1U
b0dsb2JhbEVTU0wxKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQor
ICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ1bmlmb3JtIGZs
b2F0IGE7XG4iCisgICAgICAgICJmbG9hdCBiID0gYSAqIDIuMDtcbiIKKyAgICAgICAgInZvaWQg
bWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoYik7XG4iCisgICAg
ICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAg
ICBpZiAoIWhhc1dhcm5pbmcoKSkKKyAgICAgICAgeworICAgICAgICAgICAgRkFJTCgpIDw8ICJT
aGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkIHdpdGhvdXQgd2FybmluZ3MsIGV4cGVjdGluZyB3
YXJuaW5nICIgPDwgbUluZm9Mb2c7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLCBleHBlY3Rpbmcg
c3VjY2VzcyB3aXRoIHdhcm5pbmcgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIEdsb2Jh
bCB2YXJpYWJsZSBpbml0aWFsaXplcnMgbmVlZCB0byBiZSBjb25zdGFudCBleHByZXNzaW9ucyAo
RVNTTCAxLjAwIHNlY3Rpb24gNC4zKQorLy8gSW5pdGlhbGl6aW5nIHdpdGggYW4gdXNlci1kZWZp
bmVkIGZ1bmN0aW9uIGNhbGwgc2hvdWxkIGJlIGFuIGVycm9yLgorVEVTVF9GKE1hbGZvcm1lZFNo
YWRlclRlc3QsIEFzc2lnbkZ1bmN0aW9uQ2FsbFRvR2xvYmFsKQoreworICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
XG4iCisgICAgICAgICJmbG9hdCBmb28oKSB7IHJldHVybiAxLjA7IH1cbiIKKyAgICAgICAgImZs
b2F0IGIgPSBmb28oKTtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAg
IGdsX0ZyYWdDb2xvciA9IHZlYzQoYik7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21w
aWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21w
aWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAg
fQorfQorCisvLyBHbG9iYWwgdmFyaWFibGUgaW5pdGlhbGl6ZXJzIG5lZWQgdG8gYmUgY29uc3Rh
bnQgZXhwcmVzc2lvbnMgKEVTU0wgMS4wMCBzZWN0aW9uIDQuMykKKy8vIEluaXRpYWxpemluZyB3
aXRoIGFuIGFzc2lnbm1lbnQgdG8gYW5vdGhlciBnbG9iYWwgc2hvdWxkIGJlIGFuIGVycm9yLgor
VEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIEFzc2lnbkFzc2lnbm1lbnRUb0dsb2JhbCkKK3sK
KyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNpc2lv
biBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAiZmxvYXQgYyA9IDEuMDtcbiIKKyAgICAgICAg
ImZsb2F0IGIgPSAoYyA9IDAuMCk7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAg
ICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGIpO1xuIgorICAgICAgICAifVxuIjsKKyAgICBp
ZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFk
ZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9n
OworICAgIH0KK30KKworLy8gR2xvYmFsIHZhcmlhYmxlIGluaXRpYWxpemVycyBuZWVkIHRvIGJl
IGNvbnN0YW50IGV4cHJlc3Npb25zIChFU1NMIDEuMDAgc2VjdGlvbiA0LjMpCisvLyBJbml0aWFs
aXppbmcgd2l0aCBpbmNyZW1lbnRpbmcgYW5vdGhlciBnbG9iYWwgc2hvdWxkIGJlIGFuIGVycm9y
LgorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIEFzc2lnbkluY3JlbWVudFRvR2xvYmFsKQor
eworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJmbG9hdCBjID0gMS4wO1xuIgorICAgICAg
ICAiZmxvYXQgYiA9IChjKyspO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAg
ICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChiKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYg
KGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVy
IGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsK
KyAgICB9Cit9CisKKy8vIEdsb2JhbCB2YXJpYWJsZSBpbml0aWFsaXplcnMgbmVlZCB0byBiZSBj
b25zdGFudCBleHByZXNzaW9ucyAoRVNTTCAxLjAwIHNlY3Rpb24gNC4zKQorLy8gSW5pdGlhbGl6
aW5nIHdpdGggYSB0ZXh0dXJlIGxvb2t1cCBmdW5jdGlvbiBjYWxsIHNob3VsZCBiZSBhbiBlcnJv
ci4KK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBBc3NpZ25UZXh0dXJlMkRUb0dsb2JhbCkK
K3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidW5pZm9ybSBtZWRpdW1wIHNhbXBsZXIy
RCBzO1xuIgorICAgICAgICAiZmxvYXQgYiA9IHRleHR1cmUyRChzLCB2ZWMyKDAuNSwgMC41KSku
eDtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xv
ciA9IHZlYzQoYik7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0
cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNj
ZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBH
bG9iYWwgdmFyaWFibGUgaW5pdGlhbGl6ZXJzIG5lZWQgdG8gYmUgY29uc3RhbnQgZXhwcmVzc2lv
bnMgKEVTU0wgMy4wMCBzZWN0aW9uIDQuMykKKy8vIEluaXRpYWxpemluZyB3aXRoIGEgbm9uLWNv
bnN0YW50IGdsb2JhbCBzaG91bGQgYmUgYW4gZXJyb3IuCitURVNUX0YoTWFsZm9ybWVkU2hhZGVy
VGVzdCwgQXNzaWduTm9uQ29uc3RHbG9iYWxUb0dsb2JhbCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0
cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAg
ICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJmbG9hdCBhID0gMS4wO1xu
IgorICAgICAgICAiZmxvYXQgYiA9IGEgKiAyLjA7XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9G
cmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBteV9G
cmFnQ29sb3IgPSB2ZWM0KGIpO1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShz
aGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRp
b24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30K
KworLy8gR2xvYmFsIHZhcmlhYmxlIGluaXRpYWxpemVycyBuZWVkIHRvIGJlIGNvbnN0YW50IGV4
cHJlc3Npb25zIChFU1NMIDMuMDAgc2VjdGlvbiA0LjMpCisvLyBJbml0aWFsaXppbmcgd2l0aCBh
IGNvbnN0YW50IGdsb2JhbCBzaG91bGQgYmUgZmluZS4KK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJU
ZXN0LCBBc3NpZ25Db25zdEdsb2JhbFRvR2xvYmFsKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgImNvbnN0IGZsb2F0IGEgPSAxLjA7
XG4iCisgICAgICAgICJmbG9hdCBiID0gYSAqIDIuMDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15
X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIG15
X0ZyYWdDb2xvciA9IHZlYzQoYik7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmICghY29tcGls
ZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGls
YXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2VzcyAiIDw8IG1JbmZvTG9nOworICAgIH0KK30K
KworLy8gU3RhdGljYWxseSBhc3NpZ25pbmcgdG8gYm90aCBnbF9GcmFnRGF0YSBhbmQgZ2xfRnJh
Z0NvbG9yIGlzIGZvcmJpZGRlbiAoRVNTTCAxLjAwIHNlY3Rpb24gNy4yKQorVEVTVF9GKE1hbGZv
cm1lZFNoYWRlclRlc3QsIFdyaXRlQm90aEZyYWdEYXRhQW5kRnJhZ0NvbG9yKQoreworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7XG4iCisgICAgICAgICJ2b2lkIGZvbygpIHtcbiIKKyAgICAgICAgIiAgIGdsX0Zy
YWdEYXRhWzBdLmErKztcbiIKKyAgICAgICAgIn1cbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtc
biIKKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xvci54ICs9IDAuMDtcbiIKKyAgICAgICAgIn1cbiI7
CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8
PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBt
SW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIFZlcnNpb24gZGlyZWN0aXZlIG11c3QgYmUgb24gdGhl
IGZpcnN0IGxpbmUgKEVTU0wgMy4wMCBzZWN0aW9uIDMuMykKK1RFU1RfRihNYWxmb3JtZWRTaGFk
ZXJUZXN0LCBWZXJzaW9uT25TZWNvbmRMaW5lKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZz
aGFkZXJTdHJpbmcgPQorICAgICAgICAiXG4iCisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIK
KyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0IHZlYzQg
bXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAg
bXlfRnJhZ0NvbG9yID0gdmVjNCgwLjApO1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29t
cGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29t
cGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAg
IH0KK30KKworLy8gTGF5b3V0IHF1YWxpZmllciBjYW4gb25seSBhcHBlYXIgaW4gZ2xvYmFsIHNj
b3BlIChFU1NMIDMuMDAgc2VjdGlvbiA0LjMuOCkKK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0
LCBMYXlvdXRRdWFsaWZpZXJJbkNvbmRpdGlvbikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAm
c2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzQgdTtcbiIKKyAg
ICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtc
biIKKyAgICAgICAgIiAgICBpbnQgaSA9IDA7XG4iCisgICAgICAgICIgICAgZm9yIChpbnQgaiA9
IDA7IGxheW91dChsb2NhdGlvbiA9IDApIGJvb2wgYiA9IGZhbHNlOyArK2opIHtcbiIKKyAgICAg
ICAgIiAgICAgICAgKytpO1xuIgorICAgICAgICAiICAgIH1cbiIKKyAgICAgICAgIiAgICBteV9G
cmFnQ29sb3IgPSB1O1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJT
dHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3Vj
Y2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8g
TGF5b3V0IHF1YWxpZmllciBjYW4gb25seSBhcHBlYXIgd2hlcmUgc3BlY2lmaWVkIChFU1NMIDMu
MDAgc2VjdGlvbiA0LjMuOCkKK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBMYXlvdXRRdWFs
aWZpZXJJbkZ1bmN0aW9uUmV0dXJuVHlwZSkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hh
ZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzQgdTtcbiIKKyAgICAg
ICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgImxheW91dChsb2NhdGlvbiA9
IDApIHZlYzQgZm9vKCkge1xuIgorICAgICAgICAiICAgIHJldHVybiB1O1xuIgorICAgICAgICAi
fVxuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgIG15X0ZyYWdDb2xv
ciA9IGZvbygpO1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJp
bmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2Vl
ZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gSWYg
dGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBvdXRwdXQsIHRoZSBsb2NhdGlvbiBtdXN0IGJlIHNwZWNp
ZmllZCBmb3IgYWxsIG91dHB1dHMuCisvLyAoRVNTTCAzLjAwLjA0IHNlY3Rpb24gNC4zLjguMikK
K1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBUd29PdXRwdXRzTm9MYXlvdXRRdWFsaWZpZXJz
KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3Zl
cnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAg
ICAgICAgInVuaWZvcm0gdmVjNCB1O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9y
O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfU2Vjb25kYXJ5RnJhZ0NvbG9yO1xuIgorICAgICAg
ICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMS4w
KTtcbiIKKyAgICAgICAgIiAgICBteV9TZWNvbmRhcnlGcmFnQ29sb3IgPSB2ZWM0KDAuNSk7XG4i
CisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgewor
ICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGlu
ZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyAoRVNTTCAzLjAwLjA0IHNl
Y3Rpb24gNC4zLjguMikKK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBUd29PdXRwdXRzRmly
c3RMYXlvdXRRdWFsaWZpZXIpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmlu
ZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0O1xuIgorICAgICAgICAidW5pZm9ybSB2ZWM0IHU7XG4iCisgICAgICAgICJsYXlv
dXQobG9jYXRpb24gPSAwKSBvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJvdXQg
dmVjNCBteV9TZWNvbmRhcnlGcmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4i
CisgICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgorICAgICAgICAiICAg
IG15X1NlY29uZGFyeUZyYWdDb2xvciA9IHZlYzQoMC41KTtcbiIKKyAgICAgICAgIn1cbiI7Cisg
ICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAi
U2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5m
b0xvZzsKKyAgICB9Cit9CisKKy8vIChFU1NMIDMuMDAuMDQgc2VjdGlvbiA0LjMuOC4yKQorVEVT
VF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIFR3b091dHB1dHNTZWNvbmRMYXlvdXRRdWFsaWZpZXIp
Cit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVy
c2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAg
ICAgICAidW5pZm9ybSB2ZWM0IHU7XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7
XG4iCisgICAgICAgICJsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgdmVjNCBteV9TZWNvbmRhcnlG
cmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICAgbXlf
RnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgorICAgICAgICAiICAgIG15X1NlY29uZGFyeUZyYWdD
b2xvciA9IHZlYzQoMC41KTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hh
ZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9u
IHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisK
Ky8vIFVuaWZvcm1zIGNhbiBiZSBhcnJheXMgKEVTU0wgMy4wMCBzZWN0aW9uIDQuMy41KQorVEVT
VF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIFVuaWZvcm1BcnJheSkKK3sKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAg
ICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzRb
Ml0gdTtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZv
aWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB1WzBdO1xuIgorICAg
ICAgICAifVxuIjsKKyAgICBpZiAoIWNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAg
ICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCwgZXhwZWN0aW5nIHN1Y2Nl
c3MgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIEZyYWdtZW50IHNoYWRlciBpbnB1dCB2
YXJpYWJsZXMgY2Fubm90IGJlIGFycmF5cyBvZiBzdHJ1Y3RzIChFU1NMIDMuMDAgc2VjdGlvbiA0
LjMuNCkKK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBGcmFnbWVudElucHV0QXJyYXlPZlN0
cnVjdHMpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAg
ICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xu
IgorICAgICAgICAic3RydWN0IFMge1xuIgorICAgICAgICAiICAgIHZlYzQgZm9vO1xuIgorICAg
ICAgICAifTtcbiIKKyAgICAgICAgImluIFMgaVsyXTtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15
X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgICBt
eV9GcmFnQ29sb3IgPSBpWzBdLmZvbztcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBp
bGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBp
bGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9
Cit9CisKKy8vIFZlcnRleCBzaGFkZXIgaW5wdXRzIGNhbid0IGJlIGFycmF5cyAoRVNTTCAzLjAw
IHNlY3Rpb24gNC4zLjQpCisvLyBUaGlzIHRlc3QgaXMgdGVzdGluZyB0aGUgY2FzZSB3aGVyZSB0
aGUgYXJyYXkgYnJhY2tldHMgYXJlIGFmdGVyIHRoZSB2YXJpYWJsZSBuYW1lLCBzbworLy8gdGhl
IGFycmF5bmVzcyBpc24ndCBrbm93biB3aGVuIHRoZSB0eXBlIGFuZCBxdWFsaWZpZXJzIGFyZSBp
bml0aWFsbHkgcGFyc2VkLgorVEVTVF9GKE1hbGZvcm1lZFZlcnRleFNoYWRlclRlc3QsIFZlcnRl
eFNoYWRlcklucHV0QXJyYXkpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmlu
ZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0O1xuIgorICAgICAgICAiaW4gdmVjNCBpWzJdO1xuIgorICAgICAgICAidm9pZCBt
YWluKCkge1xuIgorICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gaVswXTtcbiIKKyAgICAgICAg
In1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZB
SUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUg
IiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIFZlcnRleCBzaGFkZXIgaW5wdXRzIGNhbid0
IGJlIGFycmF5cyAoRVNTTCAzLjAwIHNlY3Rpb24gNC4zLjQpCisvLyBUaGlzIHRlc3QgaXMgdGVz
dGluZyB0aGUgY2FzZSB3aGVyZSB0aGUgYXJyYXkgYnJhY2tldHMgYXJlIGFmdGVyIHRoZSB0eXBl
LgorVEVTVF9GKE1hbGZvcm1lZFZlcnRleFNoYWRlclRlc3QsIFZlcnRleFNoYWRlcklucHV0QXJy
YXlUeXBlKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAg
ICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtc
biIKKyAgICAgICAgImluIHZlYzRbMl0gaTtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIK
KyAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IGlbMF07XG4iCisgICAgICAgICJ9XG4iOworICAg
IGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNo
YWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9M
b2c7CisgICAgfQorfQorCisvLyBGcmFnbWVudCBzaGFkZXIgaW5wdXRzIGNhbid0IGNvbnRhaW4g
Ym9vbGVhbnMgKEVTU0wgMy4wMCBzZWN0aW9uIDQuMy40KQorVEVTVF9GKE1hbGZvcm1lZFNoYWRl
clRlc3QsIEZyYWdtZW50U2hhZGVySW5wdXRTdHJ1Y3RXaXRoQm9vbCkKK3sKKyAgICBjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgor
ICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJzdHJ1Y3QgUyB7
XG4iCisgICAgICAgICIgICAgYm9vbCBmb287XG4iCisgICAgICAgICJ9O1xuIgorICAgICAgICAi
aW4gUyBzO1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAi
dm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wKTtc
biIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7
CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0
aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIEZyYWdtZW50IHNoYWRl
ciBpbnB1dHMgd2l0aG91dCBhIGZsYXQgcXVhbGlmaWVyIGNhbid0IGNvbnRhaW4gaW50ZWdlcnMg
KEVTU0wgMy4wMCBzZWN0aW9uIDQuMy40KQorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIEZy
YWdtZW50U2hhZGVySW5wdXRTdHJ1Y3RXaXRoSW50KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInN0cnVjdCBTIHtcbiIKKyAgICAg
ICAgIiAgICBpbnQgZm9vO1xuIgorICAgICAgICAifTtcbiIKKyAgICAgICAgImluIFMgcztcbiIK
KyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigp
IHtcbiIKKyAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCk7XG4iCisgICAgICAg
ICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBG
QUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJl
ICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBTZWxlY3RpbmcgYSBmaWVsZCBvZiBhIHZl
Y3RvciB0aGF0J3MgdGhlIHJlc3VsdCBvZiBkeW5hbWljIGluZGV4aW5nIGEgY29uc3RhbnQgYXJy
YXkgc2hvdWxkIHdvcmsuCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgU2hhZGVyU2VsZWN0
aW5nRmllbGRPZlZlY3RvckluZGV4ZWRGcm9tQXJyYXkpCit7CisgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAg
InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0Nv
bG9yO1xuIgorICAgICAgICAidW5pZm9ybSBpbnQgaTtcbiIKKyAgICAgICAgInZvaWQgbWFpbigp
IHtcbiIKKyAgICAgICAgIiAgICBmbG9hdCBmID0gdmVjMlsxXSh2ZWMyKDAuMCwgMC4xKSlbaV0u
eDtcbiIKKyAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KGYpO1xuIgorICAgICAgICAi
fVxuIjsKKyAgICBpZiAoIWNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZB
SUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCwgZXhwZWN0aW5nIHN1Y2Nlc3MgIiA8
PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIFBhc3NpbmcgYW4gYXJyYXkgaW50byBhIGZ1bmN0
aW9uIGFuZCB0aGVuIHBhc3NpbmcgYSB2YWx1ZSBmcm9tIHRoYXQgYXJyYXkgaW50byBhbm90aGVy
IGZ1bmN0aW9uCisvLyBzaG91bGQgd29yay4gVGhpcyBpcyBhIHJlZ3Jlc3Npb24gdGVzdCBmb3Ig
YSBidWcgd2hlcmUgdGhlIG1hbmdsZWQgbmFtZSBvZiBhIFRUeXBlIHdhcyBub3QKKy8vIHByb3Bl
cmx5IHVwZGF0ZWQgd2hlbiBkZXRlcm1pbmluZyB0aGUgdHlwZSByZXN1bHRpbmcgZnJvbSBhcnJh
eSBpbmRleGluZy4KK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBBcnJheVZhbHVlRnJvbUZ1
bmN0aW9uUGFyYW1ldGVyQXNQYXJhbWV0ZXIpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNo
YWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAg
ICAgInVuaWZvcm0gZmxvYXQgdTtcbiIKKyAgICAgICAgImZsb2F0IGZvbyhmbG9hdCBmKSB7XG4i
CisgICAgICAgICIgICByZXR1cm4gZiAqIDIuMDtcbiIKKyAgICAgICAgIn1cbiIKKyAgICAgICAg
ImZsb2F0IGJhcihmbG9hdFsyXSBmKSB7XG4iCisgICAgICAgICIgICAgcmV0dXJuIGZvbyhmWzBd
KTtcbiIKKyAgICAgICAgIn1cbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7
XG4iCisgICAgICAgICIgICAgZmxvYXQgYXJyWzJdO1xuIgorICAgICAgICAiICAgIGFyclswXSA9
IHU7XG4iCisgICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChiYXIoYXJyKSk7XG4iCisg
ICAgICAgICJ9XG4iOworICAgIGlmICghY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAg
ICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3Vj
Y2VzcyAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gVGVzdCB0aGF0IG91dC1vZi1yYW5n
ZSBpbnRlZ2VyIGxpdGVyYWwgZ2VuZXJhdGVzIGFuIGVycm9yIGluIEVTU0wgMy4wMC4KK1RFU1Rf
RihNYWxmb3JtZWRTaGFkZXJUZXN0LCBPdXRPZlJhbmdlSW50ZWdlckxpdGVyYWwpCit7CisgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAg
ZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAicHJl
Y2lzaW9uIGhpZ2hwIGludDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIK
KyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2
ZWM0KDB4MTAwMDAwMDAwKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hh
ZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9u
IHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisK
Ky8vIFRlc3QgdGhhdCB2ZWN0b3IgZmllbGQgc2VsZWN0aW9uIGZyb20gYSB2YWx1ZSB0YWtlbiBm
cm9tIGFuIGFycmF5IGNvbnN0cnVjdG9yIGlzIGFjY2VwdGVkIGFzIGEKKy8vIGNvbnN0YW50IGV4
cHJlc3Npb24uCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgRmllbGRTZWxlY3Rpb25Gcm9t
VmVjdG9yQXJyYXlDb25zdHJ1Y3RvcklzQ29uc3QpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcg
JnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9y
O1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAg
ICBjb25zdCBmbG9hdCBmID0gdmVjMlsxXSh2ZWMyKDAuMCwgMS4wKSlbMF0ueDtcbiIKKyAgICAg
ICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KGYpO1xuIgorICAgICAgICAifVxuIjsKKyAgICBp
ZiAoIWNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hh
ZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCwgZXhwZWN0aW5nIHN1Y2Nlc3MgIiA8PCBtSW5mb0xvZzsK
KyAgICB9Cit9CisKKy8vIFRlc3QgdGhhdCBzdHJ1Y3R1cmUgZmllbGQgc2VsZWN0aW9uIGZyb20g
YSB2YWx1ZSB0YWtlbiBmcm9tIGFuIGFycmF5IGNvbnN0cnVjdG9yIGlzIGFjY2VwdGVkIGFzIGEK
Ky8vIGNvbnN0YW50IGV4cHJlc3Npb24uCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgRmll
bGRTZWxlY3Rpb25Gcm9tU3RydWN0QXJyYXlDb25zdHJ1Y3RvcklzQ29uc3QpCit7CisgICAgY29u
c3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNc
biIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0IHZl
YzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAic3RydWN0IFMgeyBmbG9hdCBtZW1iZXI7IH07
XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAg
IGNvbnN0IGZsb2F0IGYgPSBTWzFdKFMoMC4wKSlbMF0ubWVtYmVyO1xuIgorICAgICAgICAiICAg
IG15X0ZyYWdDb2xvciA9IHZlYzQoZik7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmICghY29t
cGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29t
cGlsYXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2VzcyAiIDw8IG1JbmZvTG9nOworICAgIH0K
K30KKworLy8gVGVzdCB0aGF0IGEgcmVmZXJlbmNlIHRvIGEgY29uc3QgYXJyYXkgaXMgYWNjZXB0
ZWQgYXMgYSBjb25zdGFudCBleHByZXNzaW9uLgorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3Qs
IEFycmF5U3ltYm9sSXNDb25zdCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3Ry
aW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAg
ICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGNvbnN0IGZs
b2F0WzJdIGFyciA9IGZsb2F0WzJdKDAuMCwgMS4wKTtcbiIKKyAgICAgICAgIiAgICBjb25zdCBm
bG9hdCBmID0gYXJyWzBdO1xuIgorICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoZik7
XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmICghY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAg
IHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLCBleHBlY3Rp
bmcgc3VjY2VzcyAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gVGVzdCB0aGF0IHVzaW5n
IGFuIGFycmF5IGNvbnN0cnVjdG9yIGluIGEgcGFyYW1ldGVyIHRvIGEgYnVpbHQtaW4gZnVuY3Rp
b24gaXMgYWNjZXB0ZWQgYXMgYQorLy8gY29uc3RhbnQgZXhwcmVzc2lvbi4KK1RFU1RfRihNYWxm
b3JtZWRTaGFkZXJUZXN0LCBCdWlsdEluRnVuY3Rpb25BcHBsaWVkVG9BcnJheUNvbnN0cnVjdG9y
SXNDb25zdCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAg
ICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1h
aW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGNvbnN0IGZsb2F0IGYgPSBzaW4o
ZmxvYXRbMl0oMC4wLCAxLjApWzBdKTtcbiIKKyAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2
ZWM0KGYpO1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoIWNvbXBpbGUoc2hhZGVyU3RyaW5n
KSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCwg
ZXhwZWN0aW5nIHN1Y2Nlc3MgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIFRlc3QgdGhh
dCB1c2luZyBhbiBhcnJheSBjb25zdHJ1Y3RvciBpbiBhIHBhcmFtZXRlciB0byBhIGJ1aWx0LWlu
IGZ1bmN0aW9uIGlzIGFjY2VwdGVkIGFzIGEKKy8vIGNvbnN0YW50IGV4cHJlc3Npb24uCitURVNU
X0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgQnVpbHRJbkZ1bmN0aW9uV2l0aE11bHRpcGxlUGFyYW1l
dGVyc0FwcGxpZWRUb0FycmF5Q29uc3RydWN0b3JJc0NvbnN0KQoreworICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAg
ICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0Zy
YWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAg
ICAgICIgICAgY29uc3QgZmxvYXQgZiA9IHBvdygxLjAsIGZsb2F0WzJdKDAuMCwgMS4wKVswXSk7
XG4iCisgICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNChmKTtcbiIKKyAgICAgICAgIn1c
biI7CisgICAgaWYgKCFjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlM
KCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQsIGV4cGVjdGluZyBzdWNjZXNzICIgPDwg
bUluZm9Mb2c7CisgICAgfQorfQorCisvLyBUZXN0IHRoYXQgdXNpbmcgYW4gYXJyYXkgY29uc3Ry
dWN0b3IgaW4gYSBwYXJhbWV0ZXIgdG8gYSBjb25zdHJ1Y3RvciBpcyBhY2NlcHRlZCBhcyBhIGNv
bnN0YW50CisvLyBleHByZXNzaW9uLgorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIENvbnN0
cnVjdG9yV2l0aE11bHRpcGxlUGFyYW1ldGVyc0FwcGxpZWRUb0FycmF5Q29uc3RydWN0b3JJc0Nv
bnN0KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAi
I3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIK
KyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigp
XG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgY29uc3QgdmVjMiBmID0gdmVjMigxLjAs
IGZsb2F0WzJdKDAuMCwgMS4wKVswXSk7XG4iCisgICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0g
dmVjNChmLngpO1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoIWNvbXBpbGUoc2hhZGVyU3Ry
aW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxl
ZCwgZXhwZWN0aW5nIHN1Y2Nlc3MgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIFRlc3Qg
dGhhdCB1c2luZyBhbiBhcnJheSBjb25zdHJ1Y3RvciBpbiBhbiBvcGVyYW5kIG9mIHRoZSB0ZXJu
YXJ5IHNlbGVjdGlvbiBvcGVyYXRvciBpcyBhY2NlcHRlZAorLy8gYXMgYSBjb25zdGFudCBleHBy
ZXNzaW9uLgorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIFRlcm5hcnlPcGVyYXRvckFwcGxp
ZWRUb0FycmF5Q29uc3RydWN0b3JJc0NvbnN0KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZz
aGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtc
biIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAg
Y29uc3QgZmxvYXQgZiA9IHRydWUgPyBmbG9hdFsyXSgwLjAsIDEuMClbMF0gOiAxLjA7XG4iCisg
ICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNChmKTtcbiIKKyAgICAgICAgIn1cbiI7Cisg
ICAgaWYgKCFjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwg
IlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQsIGV4cGVjdGluZyBzdWNjZXNzICIgPDwgbUluZm9M
b2c7CisgICAgfQorfQorCisvLyBUZXN0IHRoYXQgYSB0ZXJuYXJ5IG9wZXJhdG9yIHdpdGggb25l
IHVuZXZhbHVhdGVkIG5vbi1jb25zdGFudCBvcGVyYW5kIGlzIG5vdCBhIGNvbnN0YW50CisvLyBl
eHByZXNzaW9uLgorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIFRlcm5hcnlPcGVyYXRvck5v
bkNvbnN0YW50T3BlcmFuZCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5n
ID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidW5pZm9y
bSBmbG9hdCB1O1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAg
ICAgICAgIiAgICBjb25zdCBmbG9hdCBmID0gdHJ1ZSA/IDEuMCA6IHU7XG4iCisgICAgICAgICIg
ICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChmKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNv
bXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNv
bXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAg
ICB9Cit9CisKKy8vIFRlc3QgdGhhdCBhIHNhbXBsZXIgY2FuJ3QgYmUgdXNlZCBpbiBjb25zdHJ1
Y3RvciBhcmd1bWVudCBsaXN0CitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgU2FtcGxlcklu
Q29uc3RydWN0b3JBcmd1bWVudHMpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0
cmluZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVu
aWZvcm0gc2FtcGxlcjJEIHM7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAi
e1xuIgorICAgICAgICAiICAgIHZlYzIgdiA9IHZlYzIoMC4wLCBzKTtcbiIKKyAgICAgICAgIiAg
ICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHYsIDAuMCwgMC4wKTtcbiIKKyAgICAgICAgIn1cbiI7Cisg
ICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAi
U2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5m
b0xvZzsKKyAgICB9Cit9CisKKy8vIFRlc3QgdGhhdCB2b2lkIGNhbid0IGJlIHVzZWQgaW4gY29u
c3RydWN0b3IgYXJndW1lbnQgbGlzdAorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIFZvaWRJ
bkNvbnN0cnVjdG9yQXJndW1lbnRzKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJT
dHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ2
b2lkIGZvbygpIHt9XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgor
ICAgICAgICAiICAgIHZlYzIgdiA9IHZlYzIoMC4wLCBmb28oKSk7XG4iCisgICAgICAgICIgICAg
Z2xfRnJhZ0NvbG9yID0gdmVjNCh2LCAwLjAsIDAuMCk7XG4iCisgICAgICAgICJ9XG4iOworICAg
IGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNo
YWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9M
b2c7CisgICAgfQorfQorCisvLyBUZXN0IHRoYXQgYSBzaGFkZXIgcGFzc2luZyBhIHN0cnVjdCBp
bnRvIGEgY29uc3RydWN0b3Igb2YgYXJyYXkgb2Ygc3RydWN0cyB3aXRoIDEgZWxlbWVudCB3b3Jr
cy4KK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBTaW5nbGVTdHJ1Y3RBcnJheUNvbnN0cnVj
dG9yKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAi
I3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIK
KyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInVuaWZvcm0gZmxv
YXQgdTtcbiIKKyAgICAgICAgInN0cnVjdCBTIHsgZmxvYXQgbWVtYmVyOyB9O1xuIgorICAgICAg
ICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBTWzFdIHNhcnIg
PSBTWzFdKFModSkpO1xuIgorICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoc2Fyclsw
XS5tZW1iZXIpO1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoIWNvbXBpbGUoc2hhZGVyU3Ry
aW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxl
ZCwgZXhwZWN0aW5nIHN1Y2Nlc3MgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIFRlc3Qg
dGhhdCBhIHNoYWRlciB3aXRoIGVtcHR5IGNvbnN0cnVjdG9yIHBhcmFtZXRlciBsaXN0IGlzIG5v
dCBhY2NlcHRlZC4KK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBFbXB0eUFycmF5Q29uc3Ry
dWN0b3IpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAg
ICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xu
IgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidW5pZm9ybSBm
bG9hdCB1O1xuIgorICAgICAgICAiY29uc3QgZmxvYXRbXSBmID0gZltdKCk7XG4iCisgICAgICAg
ICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIG15X0ZyYWdDb2xv
ciA9IHZlYzQoMC4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVy
U3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1
Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8v
IFRlc3QgdGhhdCBpbmRleGluZyBmcmFnbWVudCBvdXRwdXRzIHdpdGggYSBub24tY29uc3RhbnQg
ZXhwcmVzc2lvbiBpcyBmb3JiaWRkZW4sIGV2ZW4gaWYgQU5HTEUKKy8vIGlzIGFibGUgdG8gY29u
c3RhbnQgZm9sZCB0aGUgaW5kZXggZXhwcmVzc2lvbi4gRVNTTCAzLjAwIHNlY3Rpb24gNC4zLjYu
CitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgRHluYW1pY2FsbHlJbmRleGVkRnJhZ21lbnRP
dXRwdXQpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAg
ICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xu
IgorICAgICAgICAidW5pZm9ybSBpbnQgYTtcbiIKKyAgICAgICAgIm91dCB2ZWM0WzJdIG15X0Zy
YWdEYXRhO1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAg
ICAgIiAgICBteV9GcmFnRGF0YVt0cnVlID8gMCA6IGFdID0gdmVjNCgwLjApO1xuIgorICAgICAg
ICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAg
RkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVy
ZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gVGVzdCB0aGF0IGluZGV4aW5nIGFuIGlu
dGVyZmFjZSBibG9jayBhcnJheSB3aXRoIGEgbm9uLWNvbnN0YW50IGV4cHJlc3Npb24gaXMgZm9y
YmlkZGVuLCBldmVuIGlmCisvLyBBTkdMRSBpcyBhYmxlIHRvIGNvbnN0YW50IGZvbGQgdGhlIGlu
ZGV4IGV4cHJlc3Npb24uIEVTU0wgMy4wMCBzZWN0aW9uIDQuMy43LgorVEVTVF9GKE1hbGZvcm1l
ZFNoYWRlclRlc3QsIER5bmFtaWNhbGx5SW5kZXhlZEludGVyZmFjZUJsb2NrKQoreworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVz
XG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZv
cm0gaW50IGE7XG4iCisgICAgICAgICJ1bmlmb3JtIEJcbiIKKyAgICAgICAgIntcbiIKKyAgICAg
ICAgIiAgICB2ZWM0IGY7XG4iCisgICAgICAgICJ9XG4iCisgICAgICAgICJibG9ja3NbMl07XG4i
CisgICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4o
KVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IGJsb2Nrc1t0
cnVlID8gMCA6IGFdLmY7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRl
clN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBz
dWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisv
LyBUZXN0IHRoYXQgYSBzaGFkZXIgdGhhdCB1c2VzIGEgc3RydWN0IGRlZmluaXRpb24gaW4gcGxh
Y2Ugb2YgYSBzdHJ1Y3QgY29uc3RydWN0b3IgZG9lcyBub3QKKy8vIGNvbXBpbGUuIFNlZSBHTFNM
IEVTIDEuMDAgc2VjdGlvbiA1LjQuMy4KK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBTdHJ1
Y3RDb25zdHJ1Y3RvcldpdGhTdHJ1Y3REZWZpbml0aW9uKQoreworICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
CisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIHN0
cnVjdCBzIHsgZmxvYXQgZjsgfSAoMC4wKTtcbiIKKyAgICAgICAgIiAgICBnbF9GcmFnQ29sb3Ig
PSB2ZWM0KDAuMCk7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0
cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNj
ZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBU
ZXN0IHRoYXQgaW5kZXhpbmcgZ2xfRnJhZ0RhdGEgd2l0aCBhIG5vbi1jb25zdGFudCBleHByZXNz
aW9uIGlzIGZvcmJpZGRlbiBpbiBXZWJHTCAyLjAsIGV2ZW4KKy8vIHdoZW4gQU5HTEUgaXMgYWJs
ZSB0byBjb25zdGFudCBmb2xkIHRoZSBpbmRleC4KKy8vIFdlYkdMIDIuMCBzcGVjIHNlY3Rpb24g
J0dMU0wgRVMgMS4wMCBGcmFnbWVudCBTaGFkZXIgT3V0cHV0JworVEVTVF9GKE1hbGZvcm1lZFdl
YkdMMlNoYWRlclRlc3QsIEluZGV4RnJhZ0RhdGFXaXRoTm9uQ29uc3RhbnQpCit7CisgICAgY29u
c3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAg
ICAgICIgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyOyArK2kpIHtcbiIKKyAgICAgICAgIiAgICAg
ICAgZ2xfRnJhZ0RhdGFbdHJ1ZSA/IDAgOiBpXSA9IHZlYzQoMC4wKTtcbiIKKyAgICAgICAgIiAg
ICB9XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisg
ICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4
cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBUZXN0IHRoYXQg
YSBub24tY29uc3RhbnQgdGV4dHVyZSBvZmZzZXQgaXMgbm90IGFjY2VwdGVkIGZvciB0ZXh0dXJl
T2Zmc2V0LgorLy8gRVNTTCAzLjAwIHNlY3Rpb24gOC44CitURVNUX0YoTWFsZm9ybWVkU2hhZGVy
VGVzdCwgVGV4dHVyZU9mZnNldE5vbkNvbnN0KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZz
aGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtc
biIKKyAgICAgICAgInVuaWZvcm0gdmVjMyB1X3RleENvb3JkO1xuIgorICAgICAgICAidW5pZm9y
bSBtZWRpdW1wIHNhbXBsZXIzRCB1X3NhbXBsZXI7XG4iCisgICAgICAgICJ1bmlmb3JtIGludCB4
O1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAg
IG15X0ZyYWdDb2xvciA9IHRleHR1cmVPZmZzZXQodV9zYW1wbGVyLCB1X3RleENvb3JkLCBpdmVj
Myh4LCAzLCAtOCkpO1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJT
dHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3Vj
Y2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8g
VGVzdCB0aGF0IGEgbm9uLWNvbnN0YW50IHRleHR1cmUgb2Zmc2V0IGlzIG5vdCBhY2NlcHRlZCBm
b3IgdGV4dHVyZVByb2pPZmZzZXQgd2l0aCBiaWFzLgorLy8gRVNTTCAzLjAwIHNlY3Rpb24gOC44
CitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgVGV4dHVyZVByb2pPZmZzZXROb25Db25zdCkK
K3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJz
aW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAg
ICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzQgdV90
ZXhDb29yZDtcbiIKKyAgICAgICAgInVuaWZvcm0gbWVkaXVtcCBzYW1wbGVyM0QgdV9zYW1wbGVy
O1xuIgorICAgICAgICAidW5pZm9ybSBpbnQgeDtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4i
CisgICAgICAgICJ7XG4iCisgICAgICAgICIgICBteV9GcmFnQ29sb3IgPSB0ZXh0dXJlUHJvak9m
ZnNldCh1X3NhbXBsZXIsIHVfdGV4Q29vcmQsIGl2ZWMzKHgsIDMsIC04KSwgMC4wKTtcbiIKKyAg
ICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAg
ICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZh
aWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIFRlc3QgdGhhdCBhbiBvdXQtb2Yt
cmFuZ2UgdGV4dHVyZSBvZmZzZXQgaXMgbm90IGFjY2VwdGVkLgorLy8gR0xFUyAzLjAuNCBzZWN0
aW9uIDMuOC4xMCBzcGVjaWZpZXMgdGhhdCBvdXQtb2YtcmFuZ2Ugb2Zmc2V0IGhhcyB1bmRlZmlu
ZWQgYmVoYXZpb3IuCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgVGV4dHVyZUxvZE9mZnNl
dE91dE9mUmFuZ2UpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Cisg
ICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidW5p
Zm9ybSB2ZWMzIHVfdGV4Q29vcmQ7XG4iCisgICAgICAgICJ1bmlmb3JtIG1lZGl1bXAgc2FtcGxl
cjNEIHVfc2FtcGxlcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4i
CisgICAgICAgICIgICBteV9GcmFnQ29sb3IgPSB0ZXh0dXJlTG9kT2Zmc2V0KHVfc2FtcGxlciwg
dV90ZXhDb29yZCwgMC4wLCBpdmVjMygwLCAwLCA4KSk7XG4iCisgICAgICAgICJ9XG4iOworICAg
IGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNo
YWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9M
b2c7CisgICAgfQorfQorCisvLyBUZXN0IHRoYXQgZGVmYXVsdCBwcmVjaXNpb24gcXVhbGlmaWVy
IGZvciB1aW50IGlzIG5vdCBhY2NlcHRlZC4KKy8vIEVTU0wgMy4wMC40IHNlY3Rpb24gNC41LjQ6
IE9ubHkgYWxsb3dlZCBmb3IgZmxvYXQsIGludCBhbmQgc2FtcGxlciB0eXBlcy4KK1RFU1RfRihN
YWxmb3JtZWRTaGFkZXJUZXN0LCBEZWZhdWx0UHJlY2lzaW9uVWludCkKK3sKKyAgICBjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgor
ICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJwcmVjaXNpb24g
bWVkaXVtcCB1aW50O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAg
ICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgIG15X0ZyYWdD
b2xvciA9IHZlYzQoMC4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hh
ZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9u
IHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisK
Ky8vIFRlc3QgdGhhdCBzYW1wbGVyM0QgbmVlZHMgdG8gYmUgcHJlY2lzaW9uIHF1YWxpZmllZC4K
Ky8vIEVTU0wgMy4wMC40IHNlY3Rpb24gNC41LjQ6IE5ldyBFU1NMIDMuMDAgc2FtcGxlciB0eXBl
cyBkb24ndCBoYXZlIHByZWRlZmluZWQgcHJlY2lzaW9uLgorVEVTVF9GKE1hbGZvcm1lZFNoYWRl
clRlc3QsIE5vUHJlY2lzaW9uU2FtcGxlcjNEKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZz
aGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gc2FtcGxlcjNEIHM7XG4i
CisgICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4o
KVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLjAp
O1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAg
IHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBl
Y3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gVGVzdCB0aGF0IHVz
aW5nIGEgbm9uLWNvbnN0YW50IGV4cHJlc3Npb24gaW4gYSBmb3IgbG9vcCBpbml0aWFsaXplciBp
cyBmb3JiaWRkZW4gaW4gV2ViR0wgMS4wLAorLy8gZXZlbiB3aGVuIEFOR0xFIGlzIGFibGUgdG8g
Y29uc3RhbnQgZm9sZCB0aGUgaW5pdGlhbGl6ZXIuCisvLyBFU1NMIDEuMDAgQXBwZW5kaXggQS4K
K1RFU1RfRihNYWxmb3JtZWRXZWJHTDFTaGFkZXJUZXN0LCBOb25Db25zdGFudExvb3BJbmRleCkK
K3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidW5pZm9ybSBpbnQgdTtcbiIKKyAgICAg
ICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgZm9yIChpbnQg
aSA9ICh0cnVlID8gMSA6IHUpOyBpIDwgNTsgKytpKSB7XG4iCisgICAgICAgICIgICAgICAgIGds
X0ZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKKyAgICAgICAgIiAgICB9XG4iCisgICAgICAgICJ9
XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlM
KCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIg
PDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBSZWdyZXNzaW9uIHRlc3QgZm9yIGFuIG9sZCBj
cmFzaCBidWcgaW4gQU5HTEUuCisvLyBGb3JMb29wVW5yb2xsIHVzZWQgdG8gY3Jhc2ggd2hlbiBp
dCBlbmNvdW50ZXJlZCBhIHdoaWxlIGxvb3AuCitURVNUX0YoVW5yb2xsRm9yTG9vcHNUZXN0LCBX
aGlsZUxvb3ApCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAg
ICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4i
CisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgd2hpbGUgKHRydWUpIHtcbiIKKyAgICAgICAg
IiAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjApO1xuIgorICAgICAgICAiICAgICAgICBi
cmVhaztcbiIKKyAgICAgICAgIiAgICB9XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmICghY29t
cGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29t
cGlsYXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2VzcyAiIDw8IG1JbmZvTG9nOworICAgIH0K
K30KKworLy8gUmVncmVzc2lvbiB0ZXN0IGZvciBhbiBvbGQgY3Jhc2ggYnVnIGluIEFOR0xFLgor
Ly8gRm9yTG9vcFVucm9sbCB1c2VkIHRvIGNyYXNoIHdoZW4gaXQgZW5jb3VudGVyZWQgYSBsb29w
IHRoYXQgZGlkbid0IGZpdCB0aGUgRVNTTCAxLjAwCisvLyBBcHBlbmRpeCBBIGxpbWl0YXRpb25z
LgorVEVTVF9GKFVucm9sbEZvckxvb3BzVGVzdCwgVW5saW1pdGVkRm9yTG9vcCkKK3sKKyAgICBj
b25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0O1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAg
ICAgICAgIiAgICBmb3IgKDt0cnVlOykge1xuIgorICAgICAgICAiICAgICAgICBnbF9GcmFnQ29s
b3IgPSB2ZWM0KDAuMCk7XG4iCisgICAgICAgICIgICAgICAgIGJyZWFrO1xuIgorICAgICAgICAi
ICAgIH1cbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKCFjb21waWxlKHNoYWRlclN0cmluZykp
CisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQsIGV4
cGVjdGluZyBzdWNjZXNzICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBDaGVjayB0aGF0
IGluZGljZXMgdGhhdCBhcmUgbm90IGludGVnZXJzIGFyZSByZWplY3RlZC4KKy8vIFRoZSBjaGVj
ayBzaG91bGQgYmUgZG9uZSBldmVuIGlmIEVTU0wgMS4wMCBBcHBlbmRpeCBBIGxpbWl0YXRpb25z
IGFyZSBub3QgYXBwbGllZC4KK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBOb25JbnRlZ2Vy
SW5kZXgpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAg
ICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisg
ICAgICAgICJ7XG4iCisgICAgICAgICIgICAgZmxvYXQgZlszXTtcbiIKKyAgICAgICAgIiAgICBj
b25zdCBmbG9hdCBpID0gMi4wO1xuIgorICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQo
ZltpXSk7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykp
CisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQs
IGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBFU1NMMSBz
aGFkZXJzIHdpdGggYSBkdXBsaWNhdGUgZnVuY3Rpb24gcHJvdG90eXBlIHNob3VsZCBiZSByZWpl
Y3RlZC4KKy8vIEVTU0wgMS4wMC4xNyBzZWN0aW9uIDQuMi43LgorVEVTVF9GKE1hbGZvcm1lZFNo
YWRlclRlc3QsIER1cGxpY2F0ZVByb3RvdHlwZUVTU0wxKQoreworICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
CisgICAgICAgICJ2b2lkIGZvbygpO1xuIgorICAgICAgICAidm9pZCBmb28oKTtcbiIKKyAgICAg
ICAgInZvaWQgZm9vKCkge31cbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7
XG4iCisgICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjApO1xuIgorICAgICAgICAi
fVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJ
TCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAi
IDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gRVNTTDMgc2hhZGVycyB3aXRoIGEgZHVwbGlj
YXRlIGZ1bmN0aW9uIHByb3RvdHlwZSBzaG91bGQgYmUgYWxsb3dlZC4KKy8vIEVTU0wgMy4wMC40
IHNlY3Rpb24gNC4yLjMuCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgRHVwbGljYXRlUHJv
dG90eXBlRVNTTDMpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Cisg
ICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9p
ZCBmb28oKTtcbiIKKyAgICAgICAgInZvaWQgZm9vKCk7XG4iCisgICAgICAgICJ2b2lkIGZvbygp
IHt9XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAi
ICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYg
KCFjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRl
ciBjb21waWxhdGlvbiBmYWlsZWQsIGV4cGVjdGluZyBzdWNjZXNzICIgPDwgbUluZm9Mb2c7Cisg
ICAgfQorfQorCisvLyBTaGFkZXJzIHdpdGggYSBsb2NhbCBmdW5jdGlvbiBwcm90b3R5cGUgc2hv
dWxkIGJlIHJlamVjdGVkLgorLy8gRVNTTCAzLjAwLjQgc2VjdGlvbiA0LjIuNC4KK1RFU1RfRihN
YWxmb3JtZWRTaGFkZXJUZXN0LCBMb2NhbEZ1bmN0aW9uUHJvdG90eXBlKQoreworICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4i
CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0
IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4i
CisgICAgICAgICIgICAgdm9pZCBmb28oKTtcbiIKKyAgICAgICAgIiAgICBteV9GcmFnQ29sb3Ig
PSB2ZWM0KDAuMCk7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0
cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNj
ZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBF
U1NMIDMuMDAgZnJhZ21lbnQgc2hhZGVycyBjYW4gbm90IHVzZSAjcHJhZ21hIFNUREdMIGludmFy
aWFudChhbGwpLgorLy8gRVNTTCAzLjAwLjQgc2VjdGlvbiA0LjYuMS4gRG9lcyBub3QgYXBwbHkg
dG8gb3RoZXIgdmVyc2lvbnMgb2YgRVNTTC4KK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBF
U1NMMzAwRnJhZ21lbnRJbnZhcmlhbnRBbGwpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNo
YWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgIiNwcmFn
bWEgU1RER0wgaW52YXJpYW50KGFsbClcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9p
ZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2
ZWM0KDAuMCk7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmlu
ZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVk
ZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBCdWls
dC1pbiBmdW5jdGlvbnMgY2FuIGJlIG92ZXJsb2FkZWQgaW4gRVNTTCAxLjAwLgorVEVTVF9GKE1h
bGZvcm1lZFNoYWRlclRlc3QsIEVTU0wxMDBCdWlsdEluRnVuY3Rpb25PdmVybG9hZCkKK3sKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAiaW50IHNpbihpbnQgeClcbiIKKyAgICAgICAgIntc
biIKKyAgICAgICAgIiAgICByZXR1cm4gaW50KHNpbihmbG9hdCh4KSkpO1xuIgorICAgICAgICAi
fVxuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAg
IGdsX0ZyYWdDb2xvciA9IHZlYzQoc2luKDEpKTsiCisgICAgICAgICJ9XG4iOworICAgIGlmICgh
Y29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIg
Y29tcGlsYXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2VzcyAiIDw8IG1JbmZvTG9nOworICAg
IH0KK30KKworLy8gQnVpbHQtaW4gZnVuY3Rpb25zIGNhbiBub3QgYmUgb3ZlcmxvYWRlZCBpbiBF
U1NMIDMuMDAuCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgRVNTTDMwMEJ1aWx0SW5GdW5j
dGlvbk92ZXJsb2FkKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQor
ICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgImlu
dCBzaW4oaW50IHgpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgcmV0dXJuIGludChz
aW4oZmxvYXQoeCkpKTtcbiIKKyAgICAgICAgIn1cbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4i
CisgICAgICAgICJ7XG4iCisgICAgICAgICIgICBteV9GcmFnQ29sb3IgPSB2ZWM0KHNpbigxKSk7
IgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsK
KyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3Rp
bmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gTXVsdGlwbHlpbmcgYSA0
eDIgbWF0cml4IHdpdGggYSA0eDIgbWF0cml4IHNob3VsZCBub3Qgd29yay4KK1RFU1RfRihNYWxm
b3JtZWRTaGFkZXJUZXN0LCBDb21wb3VuZE11bHRpcGx5TWF0cml4SWRlbnRpY2FsTm9uU3F1YXJl
RGltZW5zaW9ucykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAg
ICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lk
IG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgbWF0NHgyIGZvbztcbiIKKyAg
ICAgICAgIiAgIGZvbyAqPSBtYXQ0eDIoNC4wKTtcbiIKKyAgICAgICAgIiAgIG15X0ZyYWdDb2xv
ciA9IHZlYzQoMC4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVy
U3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1
Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8v
IE11bHRpcGx5aW5nIGEgbWF0cml4IHdpdGggMiBjb2x1bW5zIGFuZCA0IHJvd3Mgd2l0aCBhIDJ4
MiBtYXRyaXggc2hvdWxkIHdvcmsuCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgQ29tcG91
bmRNdWx0aXBseU1hdHJpeFZhbGlkTm9uU3F1YXJlRGltZW5zaW9ucykKK3sKKyAgICBjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgor
ICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgdmVjNCBt
eV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgor
ICAgICAgICAiICAgbWF0Mng0IGZvbztcbiIKKyAgICAgICAgIiAgIGZvbyAqPSBtYXQyeDIoNC4w
KTtcbiIKKyAgICAgICAgIiAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKKyAgICAgICAg
In1cbiI7CisgICAgaWYgKCFjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBG
QUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQsIGV4cGVjdGluZyBzdWNjZXNzICIg
PDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBDb3ZlcnMgYSBidWcgd2hlcmUgd2Ugd291bGQg
c2V0IHRoZSBpbmNvcnJlY3QgcmVzdWx0IHNpemUgb24gYW4gb3V0LW9mLWJvdW5kcyB2ZWN0b3Ig
c3dpenpsZS4KK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBPdXRPZkJvdW5kc1ZlY3RvclN3
aXp6bGUpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAg
ICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICB2ZWMyKDApLnFxO1xuIgorICAgICAgICAi
fVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJ
TCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAi
IDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gQ292ZXJzIGEgYnVnIHdoZXJlIHN0cmFuZ2Ug
cHJlcHJvY2Vzc29yIGRlZmluZXMgY291bGQgdHJpZ2dlciBhc3NlcnRzLgorVEVTVF9GKE1hbGZv
cm1lZFNoYWRlclRlc3QsIERlZmluZVdpdGhTZW1pY29sb24pCit7CisgICAgY29uc3Qgc3RkOjpz
dHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjZGVmaW5lIERlZjsgaGlnaHBcbiIKKyAg
ICAgICAgInVuaWZvcm0gRGVmIHZlYzIgYTtcbiI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3Ry
aW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2Nl
ZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIENv
dmVycyBhIGJ1ZyBpbiBvdXIgcGFyc2luZyBvZiBtYWxmb3JtZWQgc2hpZnQgcHJlcHJvY2Vzc29y
IGV4cHJlc3Npb25zLgorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIExpbmVEaXJlY3RpdmVV
bmRlZmluZWRTaGlmdCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0g
IiNsaW5lIHggPDwgeSI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7Cisg
ICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5n
IGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIENvdmVycyBhIGJ1ZyBpbiBv
dXIgcGFyc2luZyBvZiBtYWxmb3JtZWQgc2hpZnQgcHJlcHJvY2Vzc29yIGV4cHJlc3Npb25zLgor
VEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIExpbmVEaXJlY3RpdmVOZWdhdGl2ZVNoaWZ0KQor
eworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPSAiI2xpbmUgeCA8PCAtMSI7
CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8
PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBt
SW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIGdsX01heEltYWdlVW5pdHMgaXMgb25seSBhdmFpbGFi
bGUgaW4gRVMgMy4xIHNoYWRlcnMuCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgTWF4SW1h
Z2VVbml0c0luRVMzU2hhZGVyKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJp
bmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15T3V0cHV0OyIKKyAgICAgICAgInZv
aWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGZsb2F0IGZmID0gZmxvYXQoZ2xfTWF4SW1hZ2VV
bml0cyk7XG4iCisgICAgICAgICIgICBteU91dHB1dCA9IHZlYzQoZmYpO1xuIgorICAgICAgICAi
fVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJ
TCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAi
IDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gc3RydWN0ICs9IHN0cnVjdCBpcyBhbiBpbnZh
bGlkIG9wZXJhdGlvbi4KK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBTdHJ1Y3RDb21wb3Vu
ZEFzc2lnblN0cnVjdCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0K
KyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7XG4iCisgICAgICAgICJvdXQgdmVjNCBteU91dHB1dDtcbiIKKyAgICAgICAgInN0cnVj
dCBTIHsgZmxvYXQgZm9vOyB9O1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAg
ICAiICAgUyBhLCBiO1xuIgorICAgICAgICAiICAgYSArPSBiO1xuIgorICAgICAgICAiICAgbXlP
dXRwdXQgPSB2ZWM0KDApO1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFk
ZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24g
c3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKwor
Ly8gc3RydWN0ID09IGRpZmZlcmVudCBzdHJ1Y3QgaXMgYW4gaW52YWxpZCBvcGVyYXRpb24uCitU
RVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgU3RydWN0RXFEaWZmZXJlbnRTdHJ1Y3QpCit7Cisg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAz
MDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAi
b3V0IHZlYzQgbXlPdXRwdXQ7XG4iCisgICAgICAgICJzdHJ1Y3QgUyB7IGZsb2F0IGZvbzsgfTtc
biIKKyAgICAgICAgInN0cnVjdCBTMiB7IGZsb2F0IGZvb2JhcjsgfTtcbiIKKyAgICAgICAgInZv
aWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIFMgYTtcbiIKKyAgICAgICAgIiAgIFMyIGI7XG4i
CisgICAgICAgICIgICBhID09IGI7XG4iCisgICAgICAgICIgICBteU91dHB1dCA9IHZlYzQoMCk7
XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAg
eworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVj
dGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBDb21wdXRlIHNoYWRl
cnMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gdmVyc2lvbnMgbG93ZXIgdGhhbiAzMTAuCitURVNUX0Yo
TWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIFZlcnNpb24xMDApCit7CisgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAg
ICAibGF5b3V0KGxvY2FsX3NpemVfeD0xKSBpbjtcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAg
In1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZB
SUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUg
IiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIENvbXB1dGUgc2hhZGVycyBhcmUgbm90IHN1
cHBvcnRlZCBpbiB2ZXJzaW9ucyBsb3dlciB0aGFuIDMxMC4KK1RFU1RfRihNYWxmb3JtZWRDb21w
dXRlU2hhZGVyVGVzdCwgVmVyc2lvbjMwMCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hh
ZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAidm9pZCBt
YWluKClcbiIKKyAgICAgICAgImxheW91dChsb2NhbF9zaXplX3g9MSkgaW47XG4iCisgICAgICAg
ICJ7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisg
ICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4
cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBDb21wdXRlIHNo
YWRlcnMgc2hvdWxkIGhhdmUgd29yayBncm91cCBzaXplIHNwZWNpZmllZC4gSG93ZXZlciwgaXQg
aXMgbm90IGEgY29tcGlsZSB0aW1lIGVycm9yCisvLyB0byBub3QgaGF2ZSB0aGUgc2l6ZSBzcGVj
aWZpZWQsIGJ1dCByYXRoZXIgYSBsaW5rIHRpbWUgb25lLgorLy8gR0xTTCBFUyAzLjEwIFJldmlz
aW9uIDQsIDQuNC4xLjEgQ29tcHV0ZSBTaGFkZXIgSW5wdXRzCitURVNUX0YoTWFsZm9ybWVkQ29t
cHV0ZVNoYWRlclRlc3QsIE5vV29ya0dyb3VwU2l6ZVNwZWNpZmllZCkKK3sKKyAgICBjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgor
ICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIn1cbiI7Cisg
ICAgaWYgKCFjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwg
IlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQsIGV4cGVjdGluZyBzdWNjZXNzICIgPDwgbUluZm9M
b2c7CisgICAgfQorfQorCisvLyBXb3JrIGdyb3VwIHNpemUgaXMgbGVzcyB0aGFuIDEuIEl0IHNo
b3VsZCBiZSBhdCBsZWFzdCAxLgorLy8gR0xTTCBFUyAzLjEwIFJldmlzaW9uIDQsIDcuMS4zIENv
bXB1dGUgU2hhZGVyIFNwZWNpYWwgVmFyaWFibGVzCisvLyBUaGUgc3BlYyBpcyBub3QgY2xlYXIg
d2hldGhlciBoYXZpbmcgYSBsb2NhbCBzaXplIHF1YWxpZmllciBlcXVhbCB6ZXJvCisvLyBpcyBj
b3JyZWN0LgorLy8gVE9ETyAobXJhZGV2KTogQXNrIHBlb3BsZSBmcm9tIEtocm9ub3MgdG8gY2xh
cmlmeSB0aGUgc3BlYy4KK1RFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCwgV29ya0dy
b3VwU2l6ZVRvb1NtYWxsWGRpbWVuc2lvbikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hh
ZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgorICAgICAgICAibGF5b3V0
KGxvY2FsX3NpemVfeCA9IDApIGluO1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAg
ICAgIntcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkK
KyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwg
ZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIFdvcmsgZ3Jv
dXAgc2l6ZSBpcyBjb3JyZWN0IGZvciB0aGUgeCBhbmQgeSBkaW1lbnNpb25zLCBidXQgbm90IGZv
ciB0aGUgeiBkaW1lbnNpb24uCisvLyBHTFNMIEVTIDMuMTAgUmV2aXNpb24gNCwgNy4xLjMgQ29t
cHV0ZSBTaGFkZXIgU3BlY2lhbCBWYXJpYWJsZXMKK1RFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hh
ZGVyVGVzdCwgV29ya0dyb3VwU2l6ZVRvb1NtYWxsWkRpbWVuc2lvbikKK3sKKyAgICBjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgor
ICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDQsIGxvY2FsX3NpemVfeSA9IDYsIGxvY2Fs
X3NpemVfeiA9IDApIGluO1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntc
biIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7
CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0
aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIFdvcmsgZ3JvdXAgc2l6
ZSBpcyBiaWdnZXIgdGhhbiB0aGUgbWluaW11bSBpbiB0aGUgeCBkaW1lbnNpb24uCisvLyBHTFNM
IEVTIDMuMTAgUmV2aXNpb24gNCwgNC40LjEuMSBDb21wdXRlIFNoYWRlciBJbnB1dHMKK1RFU1Rf
RihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCwgV29ya0dyb3VwU2l6ZVRvb0JpZ1hEaW1lbnNp
b24pCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIj
dmVyc2lvbiAzMTAgZXNcbiIKKyAgICAgICAgImxheW91dChsb2NhbF9zaXplX3ggPSA5OTg5ODk5
KSBpbjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAg
ICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBG
QUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJl
ICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBXb3JrIGdyb3VwIHNpemUgaXMgYmlnZ2Vy
IHRoYW4gdGhlIG1pbmltdW0gaW4gdGhlIHkgZGltZW5zaW9uLgorLy8gR0xTTCBFUyAzLjEwIFJl
dmlzaW9uIDQsIDQuNC4xLjEgQ29tcHV0ZSBTaGFkZXIgSW5wdXRzCitURVNUX0YoTWFsZm9ybWVk
Q29tcHV0ZVNoYWRlclRlc3QsIFdvcmtHcm91cFNpemVUb29CaWdZRGltZW5zaW9uKQoreworICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzEw
IGVzXG4iCisgICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94ID0gNSwgbG9jYWxfc2l6ZV95ID0g
OTk4OTg5OSkgaW47XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgor
ICAgICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAg
ICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3Rpbmcg
ZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gV29yayBncm91cCBzaXplIGlz
IGRlZmluaXRlbHkgYmlnZ2VyIHRoYW4gdGhlIG1pbmltdW0gaW4gdGhlIHogZGltZW5zaW9uLgor
Ly8gR0xTTCBFUyAzLjEwIFJldmlzaW9uIDQsIDQuNC4xLjEgQ29tcHV0ZSBTaGFkZXIgSW5wdXRz
CitURVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIFdvcmtHcm91cFNpemVUb29CaWda
RGltZW5zaW9uKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAg
ICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCisgICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94ID0g
NSwgbG9jYWxfc2l6ZV95ID0gNSwgbG9jYWxfc2l6ZV96ID0gOTk4OTg5OSkgaW47XG4iCisgICAg
ICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAifVxuIjsKKyAgICBp
ZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFk
ZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9n
OworICAgIH0KK30KKworLy8gV29yayBncm91cCBzaXplIHNwZWNpZmllZCB0aHJvdWdoIG1hY3Jv
IGV4cGFuc2lvbi4KK1RFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCwgV29ya0dyb3Vw
U2l6ZU1hY3JvKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAg
ICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCisgICAgICAgICIjZGVmaW5lIE1ZREVGKHgpIHgiCisg
ICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94ID0gTVlERUYoMTI3KSkgaW47XG4iCisgICAgICAg
ICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAo
IWNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVy
IGNvbXBpbGF0aW9uIGZhaWxlZCwgZXhwZWN0aW5nIHN1Y2Nlc3MgIiA8PCBtSW5mb0xvZzsKKyAg
ICB9Cit9CisKKy8vIFdvcmsgZ3JvdXAgc2l6ZSBzcGVjaWZpZWQgYXMgYW4gdW5zaWduZWQgaW50
ZWdlci4KK1RFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCwgV29ya0dyb3VwU2l6ZVVu
c2lnbmVkSW50ZWdlcikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0K
KyAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgorICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVf
eCA9IDEyM3UpIGluO1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIK
KyAgICAgICAgIn1cbiI7CisgICAgaWYgKCFjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgewor
ICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQsIGV4cGVjdGluZyBz
dWNjZXNzICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBXb3JrIGdyb3VwIHNpemUgc3Bl
Y2lmaWVkIGluIGhleGFkZWNpbWFsLgorVEVTVF9GKE1hbGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0
LCBXb3JrR3JvdXBTaXplSGV4YWRlY2ltYWwpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNo
YWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKKyAgICAgICAgImxheW91
dChsb2NhbF9zaXplX3ggPSAweDNBKSBpbjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisg
ICAgICAgICJ7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmICghY29tcGlsZShzaGFkZXJTdHJp
bmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVk
LCBleHBlY3Rpbmcgc3VjY2VzcyAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gbG9jYWxf
c2l6ZV94IGlzIC0xIGluIGhleGFkZWNpbWFsIGZvcm1hdC4KKy8vIC0xIGlzIHVzZWQgYXMgdW5z
cGVjaWZpZWQgdmFsdWUgaW4gdGhlIFRMYXlvdXRRdWFsaWZpZXIgc3RydWN0dXJlLgorVEVTVF9G
KE1hbGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0LCBXb3JrR3JvdXBTaXplTWludXNPbmVIZXhhZGVj
aW1hbCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAg
IiN2ZXJzaW9uIDMxMCBlc1xuIgorICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDB4RkZG
RkZGRkYpIGluO1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAg
ICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAg
ICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZh
aWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIFdvcmsgZ3JvdXAgc2l6ZSBzcGVj
aWZpZWQgaW4gb2N0YWwuCitURVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIFdvcmtH
cm91cFNpemVPY3RhbCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0K
KyAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgorICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVf
eCA9IDAxMykgaW47XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgor
ICAgICAgICAifVxuIjsKKyAgICBpZiAoIWNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7Cisg
ICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCwgZXhwZWN0aW5nIHN1
Y2Nlc3MgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIFdvcmsgZ3JvdXAgc2l6ZSBpcyBu
ZWdhdGl2ZS4gSXQgaXMgc3BlY2lmaWVkIGluIGhleGFkZWNpbWFsLgorVEVTVF9GKE1hbGZvcm1l
ZENvbXB1dGVTaGFkZXJUZXN0LCBXb3JrR3JvdXBTaXplTmVnYXRpdmVIZXhhZGVjaW1hbCkKK3sK
KyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9u
IDMxMCBlc1xuIgorICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDB4RkZGRkZGRUMpIGlu
O1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIn1c
biI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwo
KSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8
PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIE11bHRpcGxlIHdvcmsgZ3JvdXAgbGF5b3V0IHF1
YWxpZmllcnMgd2l0aCBkaWZmZXJpbmcgdmFsdWVzLgorLy8gR0xTTCBFUyAzLjEwIFJldmlzaW9u
IDQsIDQuNC4xLjEgQ29tcHV0ZSBTaGFkZXIgSW5wdXRzCitURVNUX0YoTWFsZm9ybWVkQ29tcHV0
ZVNoYWRlclRlc3QsIERpZmZlcmluZ0xheW91dFF1YWxpZmllcnMpCit7CisgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKKyAg
ICAgICAgImxheW91dChsb2NhbF9zaXplX3ggPSA1LCBsb2NhbF9zaXplX3ggPSA2KSBpbjtcbiIK
KyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICJ9XG4iOwor
ICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwg
IlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUlu
Zm9Mb2c7CisgICAgfQorfQorCisvLyBNdWx0aXBsZSB3b3JrIGdyb3VwIGlucHV0IHZhcmlhYmxl
cyB3aXRoIGRpZmZlcmluZyBsb2NhbCBzaXplIHZhbHVlcy4KKy8vIEdMU0wgRVMgMy4xMCBSZXZp
c2lvbiA0LCA0LjQuMS4xIENvbXB1dGUgU2hhZGVyIElucHV0cworVEVTVF9GKE1hbGZvcm1lZENv
bXB1dGVTaGFkZXJUZXN0LCBNdWx0aXBsZUlucHV0VmFyaWFibGVzRGlmZmVyaW5nTG9jYWxTaXpl
KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3Zl
cnNpb24gMzEwIGVzXG4iCisgICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94ID0gNSwgbG9jYWxf
c2l6ZV95ID0gNikgaW47XG4iCisgICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94ID0gNSwgbG9j
YWxfc2l6ZV95ID0gNykgaW47XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAi
e1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAg
IHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBl
Y3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gTXVsdGlwbGUgd29y
ayBncm91cCBpbnB1dCB2YXJpYWJsZXMgd2l0aCBkaWZmZXJpbmcgbG9jYWwgc2l6ZSB2YWx1ZXMu
CisvLyBHTFNMIEVTIDMuMTAgUmV2aXNpb24gNCwgNC40LjEuMSBDb21wdXRlIFNoYWRlciBJbnB1
dHMKK1RFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCwgTXVsdGlwbGVJbnB1dFZhcmlh
Ymxlc0RpZmZlcmluZ0xvY2FsU2l6ZTIpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRl
clN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKKyAgICAgICAgImxheW91dChs
b2NhbF9zaXplX3ggPSA1KSBpbjtcbiIKKyAgICAgICAgImxheW91dChsb2NhbF9zaXplX3ggPSA1
LCBsb2NhbF9zaXplX3kgPSA3KSBpbjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAg
ICAgICJ7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykp
CisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQs
IGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBNdWx0aXBs
ZSB3b3JrIGdyb3VwIGlucHV0IHZhcmlhYmxlcyB3aXRoIHRoZSBzYW1lIGxvY2FsIHNpemUgdmFs
dWVzLiBJdCBzaG91bGQgY29tcGlsZS4KKy8vIEdMU0wgRVMgMy4xMCBSZXZpc2lvbiA0LCA0LjQu
MS4xIENvbXB1dGUgU2hhZGVyIElucHV0cworVEVTVF9GKE1hbGZvcm1lZENvbXB1dGVTaGFkZXJU
ZXN0LCBNdWx0aXBsZUlucHV0VmFyaWFibGVzU2FtZUxvY2FsU2l6ZSkKK3sKKyAgICBjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgor
ICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDUsIGxvY2FsX3NpemVfeSA9IDYpIGluO1xu
IgorICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDUsIGxvY2FsX3NpemVfeSA9IDYpIGlu
O1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIn1c
biI7CisgICAgaWYgKCFjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlM
KCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQsIGV4cGVjdGluZyBzdWNjZXNzICIgPDwg
bUluZm9Mb2c7CisgICAgfQorfQorCisvLyBNdWx0aXBsZSB3b3JrIGdyb3VwIGlucHV0IHZhcmlh
YmxlcyB3aXRoIHRoZSBzYW1lIGxvY2FsIHNpemUgdmFsdWVzLiBJdCBzaG91bGQgY29tcGlsZS4K
Ky8vIFNpbmNlIHRoZSBkZWZhdWx0IHZhbHVlIGlzIDEsIGl0IHNob3VsZCBjb21waWxlLgorLy8g
R0xTTCBFUyAzLjEwIFJldmlzaW9uIDQsIDQuNC4xLjEgQ29tcHV0ZSBTaGFkZXIgSW5wdXRzCitU
RVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIE11bHRpcGxlSW5wdXRWYXJpYWJsZXNT
YW1lTG9jYWxTaXplMikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0K
KyAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgorICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVf
eCA9IDUpIGluO1xuIgorICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDUsIGxvY2FsX3Np
emVfeSA9IDEpIGluO1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIK
KyAgICAgICAgIn1cbiI7CisgICAgaWYgKCFjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgewor
ICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQsIGV4cGVjdGluZyBz
dWNjZXNzICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBNdWx0aXBsZSB3b3JrIGdyb3Vw
IGlucHV0IHZhcmlhYmxlcyB3aXRoIHRoZSBzYW1lIGxvY2FsIHNpemUgdmFsdWVzLiBJdCBzaG91
bGQgY29tcGlsZS4KKy8vIFNpbmNlIHRoZSBkZWZhdWx0IHZhbHVlIGlzIDEsIGl0IHNob3VsZCBj
b21waWxlLgorLy8gR0xTTCBFUyAzLjEwIFJldmlzaW9uIDQsIDQuNC4xLjEgQ29tcHV0ZSBTaGFk
ZXIgSW5wdXRzCitURVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIE11bHRpcGxlSW5w
dXRWYXJpYWJsZXNTYW1lTG9jYWxTaXplMykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hh
ZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgorICAgICAgICAibGF5b3V0
KGxvY2FsX3NpemVfeCA9IDUsIGxvY2FsX3NpemVfeSA9IDEpIGluO1xuIgorICAgICAgICAibGF5
b3V0KGxvY2FsX3NpemVfeCA9IDUpIGluO1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAg
ICAgICAgIntcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKCFjb21waWxlKHNoYWRlclN0cmlu
ZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQs
IGV4cGVjdGluZyBzdWNjZXNzICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBTcGVjaWZ5
aW5nIHJvd19tYWpvciBxdWFsaWZpZXIgaW4gYSB3b3JrIGdyb3VwIHNpemUgbGF5b3V0LgorLy8g
R0xTTCBFUyAzLjEwIFJldmlzaW9uIDQsIDQuNC4xLjEgQ29tcHV0ZSBTaGFkZXIgSW5wdXRzCitU
RVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIFJvd01ham9ySW5Db21wdXRlSW5wdXRM
YXlvdXQpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAg
ICIjdmVyc2lvbiAzMTAgZXNcbiIKKyAgICAgICAgImxheW91dChsb2NhbF9zaXplX3ggPSA1LCBy
b3dfbWFqb3IpIGluO1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIK
KyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7Cisg
ICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5n
IGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIGxvY2FsIHNpemUgbGF5b3V0
IGNhbiBiZSB1c2VkIG9ubHkgd2l0aCBjb21wdXRlIGlucHV0IHZhcmlhYmxlcworLy8gR0xTTCBF
UyAzLjEwIFJldmlzaW9uIDQsIDQuNC4xLjEgQ29tcHV0ZSBTaGFkZXIgSW5wdXRzCitURVNUX0Yo
TWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIFVuaWZvcm1Db21wdXRlSW5wdXRMYXlvdXQpCit7
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lv
biAzMTAgZXNcbiIKKyAgICAgICAgImxheW91dChsb2NhbF9zaXplX3ggPSA1KSB1bmlmb3JtO1xu
IgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIn1cbiI7
CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8
PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBt
SW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIGxvY2FsIHNpemUgbGF5b3V0IGNhbiBiZSB1c2VkIG9u
bHkgd2l0aCBjb21wdXRlIGlucHV0IHZhcmlhYmxlcworLy8gR0xTTCBFUyAzLjEwIFJldmlzaW9u
IDQsIDQuNC4xLjEgQ29tcHV0ZSBTaGFkZXIgSW5wdXRzCitURVNUX0YoTWFsZm9ybWVkQ29tcHV0
ZVNoYWRlclRlc3QsIFVuaWZvcm1CdWZmZXJDb21wdXRlSW5wdXRMYXlvdXQpCit7CisgICAgY29u
c3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMTAgZXNc
biIKKyAgICAgICAgImxheW91dChsb2NhbF9zaXplX3ggPSA1KSB1bmlmb3JtIFNvbWVCdWZmZXIg
eyB2ZWM0IHNvbWV0aGluZzsgfTtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAg
ICJ7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisg
ICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4
cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBsb2NhbCBzaXpl
IGxheW91dCBjYW4gYmUgdXNlZCBvbmx5IHdpdGggY29tcHV0ZSBpbnB1dCB2YXJpYWJsZXMKKy8v
IEdMU0wgRVMgMy4xMCBSZXZpc2lvbiA0LCA0LjQuMS4xIENvbXB1dGUgU2hhZGVyIElucHV0cwor
VEVTVF9GKE1hbGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0LCBTdHJ1Y3RDb21wdXRlSW5wdXRMYXlv
dXQpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIj
dmVyc2lvbiAzMTAgZXNcbiIKKyAgICAgICAgImxheW91dChsb2NhbF9zaXplX3ggPSA1KSBzdHJ1
Y3QgU29tZUJ1ZmZlciB7IHZlYzQgc29tZXRoaW5nOyB9O1xuIgorICAgICAgICAidm9pZCBtYWlu
KClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hh
ZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9u
IHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisK
Ky8vIGxvY2FsIHNpemUgbGF5b3V0IGNhbiBiZSB1c2VkIG9ubHkgd2l0aCBjb21wdXRlIGlucHV0
IHZhcmlhYmxlcworLy8gR0xTTCBFUyAzLjEwIFJldmlzaW9uIDQsIDQuNC4xLjEgQ29tcHV0ZSBT
aGFkZXIgSW5wdXRzCitURVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIFN0cnVjdEJv
ZHlDb21wdXRlSW5wdXRMYXlvdXQpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0
cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKKyAgICAgICAgInN0cnVjdCBTIHtc
biIKKyAgICAgICAgIiAgIGxheW91dChsb2NhbF9zaXplX3ggPSAxMikgdmVjNCBmb287XG4iCisg
ICAgICAgICJ9O1xuIgorICAgICAgICAidm9pZCBtYWluKCkiCisgICAgICAgICJ7IgorICAgICAg
ICAifSI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZB
SUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUg
IiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIGxvY2FsIHNpemUgbGF5b3V0IGNhbiBiZSB1
c2VkIG9ubHkgd2l0aCBjb21wdXRlIGlucHV0IHZhcmlhYmxlcworLy8gR0xTTCBFUyAzLjEwIFJl
dmlzaW9uIDQsIDQuNC4xLjEgQ29tcHV0ZSBTaGFkZXIgSW5wdXRzCitURVNUX0YoTWFsZm9ybWVk
Q29tcHV0ZVNoYWRlclRlc3QsIFR5cGVDb21wdXRlSW5wdXRMYXlvdXQpCit7CisgICAgY29uc3Qg
c3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIK
KyAgICAgICAgImxheW91dChsb2NhbF9zaXplX3ggPSA1KSB2ZWM0O1xuIgorICAgICAgICAidm9p
ZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBp
bGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBp
bGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9
Cit9CisKKy8vIEludmFsaWQgdXNlIG9mIHRoZSBvdXQgc3RvcmFnZSBxdWFsaWZpZXIgaW4gYSBj
b21wdXRlIHNoYWRlci4KKy8vIEdMU0wgRVMgMy4xMCBSZXZpc2lvbiA0LCA0LjQuMS4xIENvbXB1
dGUgU2hhZGVyIElucHV0cworVEVTVF9GKE1hbGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0LCBJbnZh
bGlkT3V0U3RvcmFnZVF1YWxpZmllcikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVy
U3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgorICAgICAgICAibGF5b3V0KGxv
Y2FsX3NpemVfeCA9IDE1KSBpbjtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15T3V0cHV0O1xuIgor
ICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAifVxuIjsKKworICAgIGlmIChjb21w
aWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21w
aWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAg
fQorfQorCisvLyBJbnZhbGlkIHVzZSBvZiB0aGUgb3V0IHN0b3JhZ2UgcXVhbGlmaWVyIGluIGEg
Y29tcHV0ZSBzaGFkZXIuCisvLyBHTFNMIEVTIDMuMTAgUmV2aXNpb24gNCwgNC40LjEuMSBDb21w
dXRlIFNoYWRlciBJbnB1dHMKK1RFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCwgSW52
YWxpZE91dFN0b3JhZ2VRdWFsaWZpZXIyKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFk
ZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCisgICAgICAgICJsYXlvdXQo
bG9jYWxfc2l6ZV94ID0gMTUpIGluO1xuIgorICAgICAgICAib3V0IG15T3V0cHV0O1xuIgorICAg
ICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAifVxuIjsKKworICAgIGlmIChjb21waWxl
KHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxh
dGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQor
fQorCisvLyBJbnZhbGlkIHVzZSBvZiB0aGUgaW4gc3RvcmFnZSBxdWFsaWZpZXIuIENhbiBiZSBv
bmx5IHVzZWQgdG8gZGVzY3JpYmUgdGhlIGxvY2FsIGJsb2NrIHNpemUuCisvLyBHTFNMIEVTIDMu
MTAgUmV2aXNpb24gNCwgNC40LjEuMSBDb21wdXRlIFNoYWRlciBJbnB1dHMKK1RFU1RfRihNYWxm
b3JtZWRDb21wdXRlU2hhZGVyVGVzdCwgSW52YWxpZEluU3RvcmFnZVF1YWxpZmllcikKK3sKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMx
MCBlc1xuIgorICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDE1KSBpbjtcbiIKKyAgICAg
ICAgImluIHZlYzQgbXlJbnB1dDtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAg
ICAgIn1cbiI7CisKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAg
ICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFp
bHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gSW52YWxpZCB1c2Ugb2YgdGhlIGlu
IHN0b3JhZ2UgcXVhbGlmaWVyLiBDYW4gYmUgb25seSB1c2VkIHRvIGRlc2NyaWJlIHRoZSBsb2Nh
bCBibG9jayBzaXplLgorLy8gVGhlIHRlc3QgY2hlY2tzIGEgZGlmZmVyZW50IHBhcnQgb2YgdGhl
IEdMU0wgZ3JhbW1hciB0aGFuIHdoYXQgSW52YWxpZEluU3RvcmFnZVF1YWxpZmllciBjaGVja3Mu
CisvLyBHTFNMIEVTIDMuMTAgUmV2aXNpb24gNCwgNC40LjEuMSBDb21wdXRlIFNoYWRlciBJbnB1
dHMKK1RFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCwgSW52YWxpZEluU3RvcmFnZVF1
YWxpZmllcjIpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAg
ICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKKyAgICAgICAgImxheW91dChsb2NhbF9zaXplX3ggPSAx
NSkgaW47XG4iCisgICAgICAgICJpbiBteUlucHV0O1xuIgorICAgICAgICAidm9pZCBtYWluKCkg
e1xuIgorICAgICAgICAifVxuIjsKKworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisg
ICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4
cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBUaGUgbG9jYWxf
c2l6ZSBsYXlvdXQgcXVhbGlmaWVyIGlzIG9ubHkgYXZhaWxhYmxlIGluIGNvbXB1dGUgc2hhZGVy
cy4KK1RFU1RfRihNYWxmb3JtZWRWZXJ0ZXhTaGFkZXJHTEVTMzFUZXN0LCBJbnZhbGlkVXNlT2ZM
b2NhbFNpemVYKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAg
ICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDtcbiIKKyAgICAgICAgImxheW91dChsb2NhbF9zaXplX3ggPSAxNSkgaW4gdmVjNCBteUlucHV0
O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlPdXRwdXQ7XG4iCisgICAgICAgICJ2b2lkIG1haW4o
KSB7XG4iCisgICAgICAgICIgICBteU91dHB1dCA9IG15SW5wdXQ7XG4iCisgICAgICAgICJ9XG4i
OworCisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwo
KSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8
PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIFRoZSBsb2NhbF9zaXplIGxheW91dCBxdWFsaWZp
ZXIgaXMgb25seSBhdmFpbGFibGUgaW4gY29tcHV0ZSBzaGFkZXJzLgorVEVTVF9GKE1hbGZvcm1l
ZEZyYWdtZW50U2hhZGVyR0xFUzMxVGVzdCwgSW52YWxpZFVzZU9mTG9jYWxTaXplWCkKK3sKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMx
MCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJs
YXlvdXQobG9jYWxfc2l6ZV94ID0gMTUpIGluIHZlYzQgbXlJbnB1dDtcbiIKKyAgICAgICAgIm91
dCB2ZWM0IG15T3V0cHV0O1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAi
ICAgbXlPdXRwdXQgPSBteUlucHV0O1xuIgorICAgICAgICAifVxuIjsKKworICAgIGlmIChjb21w
aWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21w
aWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAg
fQorfQorCisvLyBJdCBpcyBhIGNvbXBpbGUgdGltZSBlcnJvciB0byB1c2UgdGhlIGdsX1dvcmtH
cm91cFNpemUgY29uc3RhbnQgaWYKKy8vIHRoZSBsb2NhbCBzaXplIGhhcyBub3QgYmVlbiBkZWNs
YXJlZCB5ZXQuCisvLyBHTFNMIEVTIDMuMTAgUmV2aXNpb24gNCwgNy4xLjMgQ29tcHV0ZSBTaGFk
ZXIgU3BlY2lhbCBWYXJpYWJsZXMKK1RFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCwg
SW52YWxpZFVzYWdlT2ZXb3JrR3JvdXBTaXplKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZz
aGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCisgICAgICAgICJ2b2lk
IG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgdXZlYzMgV29ya0dyb3VwU2l6
ZSA9IGdsX1dvcmtHcm91cFNpemU7XG4iCisgICAgICAgICJ9XG4iCisgICAgICAgICJsYXlvdXQo
bG9jYWxfc2l6ZV94ID0gMTIpIGluO1xuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcp
KQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVk
LCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gVGhlIHRl
c3QgY292ZXJzIHRoZSBjb21wdXRlIHNoYWRlciBidWlsdC1pbiB2YXJpYWJsZXMgYW5kIGNvbnN0
YW50cy4KK1RFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCwgQ29ycmVjdFVzYWdlT2ZD
b21wdXRlQnVpbHRpbnMpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9
CisgICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKKyAgICAgICAgImxheW91dChsb2NhbF9zaXpl
X3ggPSAxMikgaW47XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgor
ICAgICAgICAiICAgdXZlYzMgTnVtV29ya0dyb3VwcyA9IGdsX051bVdvcmtHcm91cHM7XG4iCisg
ICAgICAgICIgICB1dmVjMyBXb3JrR3JvdXBTaXplID0gZ2xfV29ya0dyb3VwU2l6ZTtcbiIKKyAg
ICAgICAgIiAgIHV2ZWMzIFdvcmtHcm91cElEID0gZ2xfV29ya0dyb3VwSUQ7XG4iCisgICAgICAg
ICIgICB1dmVjMyBHbG9iYWxJbnZvY2F0aW9uSUQgPSBnbF9HbG9iYWxJbnZvY2F0aW9uSUQ7XG4i
CisgICAgICAgICIgICB1dmVjMyBMb2NhbEludm9jYXRpb25JRCA9IGdsX0xvY2FsSW52b2NhdGlv
bklEO1xuIgorICAgICAgICAiICAgdWludCBMb2NhbEludm9jYXRpb25JbmRleCA9IGdsX0xvY2Fs
SW52b2NhdGlvbkluZGV4O1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoIWNvbXBpbGUoc2hh
ZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9u
IGZhaWxlZCwgZXhwZWN0aW5nIHN1Y2Nlc3MgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8v
IEl0IGlzIGlsbGVnYWwgdG8gd3JpdGUgdG8gYSBzcGVjaWFsIHZhcmlhYmxlLgorVEVTVF9GKE1h
bGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0LCBTcGVjaWFsVmFyaWFibGVOdW1Xb3JrR3JvdXBzKQor
eworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNp
b24gMzEwIGVzXG4iCisgICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94ID0gMTIpIGluO1xuIgor
ICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgIGdsX051
bVdvcmtHcm91cHMgPSB1dmVjMygxKTsgXG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21w
aWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21w
aWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAg
fQorfQorCisvLyBJdCBpcyBpbGxlZ2FsIHRvIHdyaXRlIHRvIGEgc3BlY2lhbCB2YXJpYWJsZS4K
K1RFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCwgU3BlY2lhbFZhcmlhYmxlV29ya0dy
b3VwSUQpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAg
ICIjdmVyc2lvbiAzMTAgZXNcbiIKKyAgICAgICAgImxheW91dChsb2NhbF9zaXplX3ggPSAxMikg
aW47XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAi
ICAgZ2xfV29ya0dyb3VwSUQgPSB1dmVjMygxKTsgXG4iCisgICAgICAgICJ9XG4iOworICAgIGlm
IChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRl
ciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7
CisgICAgfQorfQorCisvLyBJdCBpcyBpbGxlZ2FsIHRvIHdyaXRlIHRvIGEgc3BlY2lhbCB2YXJp
YWJsZS4KK1RFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCwgU3BlY2lhbFZhcmlhYmxl
TG9jYWxJbnZvY2F0aW9uSUQpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmlu
ZyA9CisgICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKKyAgICAgICAgImxheW91dChsb2NhbF9z
aXplX3ggPSAxMikgaW47XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xu
IgorICAgICAgICAiICAgZ2xfTG9jYWxJbnZvY2F0aW9uSUQgPSB1dmVjMygxKTsgXG4iCisgICAg
ICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAg
ICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWls
dXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBJdCBpcyBpbGxlZ2FsIHRvIHdyaXRl
IHRvIGEgc3BlY2lhbCB2YXJpYWJsZS4KK1RFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVz
dCwgU3BlY2lhbFZhcmlhYmxlR2xvYmFsSW52b2NhdGlvbklEKQoreworICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCisgICAg
ICAgICJsYXlvdXQobG9jYWxfc2l6ZV94ID0gMTIpIGluO1xuIgorICAgICAgICAidm9pZCBtYWlu
KClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgIGdsX0dsb2JhbEludm9jYXRpb25JRCA9
IHV2ZWMzKDEpOyBcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3Ry
aW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2Nl
ZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIEl0
IGlzIGlsbGVnYWwgdG8gd3JpdGUgdG8gYSBzcGVjaWFsIHZhcmlhYmxlLgorVEVTVF9GKE1hbGZv
cm1lZENvbXB1dGVTaGFkZXJUZXN0LCBTcGVjaWFsVmFyaWFibGVMb2NhbEludm9jYXRpb25JbmRl
eCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2
ZXJzaW9uIDMxMCBlc1xuIgorICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDEyKSBpbjtc
biIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICBn
bF9Mb2NhbEludm9jYXRpb25JbmRleCA9IDE7IFxuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAo
Y29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIg
Y29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwor
ICAgIH0KK30KKworLy8gSXQgaXMgaWxsZWdhbCB0byB3cml0ZSB0byBhIHNwZWNpYWwgdmFyaWFi
bGUuCitURVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIFNwZWNpYWxWYXJpYWJsZVdv
cmtHcm91cFNpemUpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Cisg
ICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKKyAgICAgICAgImxheW91dChsb2NhbF9zaXplX3gg
PSAxMikgaW47XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAg
ICAgICAiICAgZ2xfV29ya0dyb3VwU2l6ZSA9IHV2ZWMzKDEpOyBcbiIKKyAgICAgICAgIn1cbiI7
CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8
PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBt
SW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIEl0IGlzIGlsbGVnYWwgdG8gYXBwbHkgYW4gdW5hcnkg
b3BlcmF0b3IgdG8gYSBzYW1wbGVyLgorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIFNhbXBs
ZXJVbmFyeU9wZXJhdG9yKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcg
PQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ1bmlmb3Jt
IHNhbXBsZXIyRCBzO1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIK
KyAgICAgICAgIiAgIC1zO1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwKTtc
biIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7
CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0
aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIEludmFyaWFudCBjYW5u
b3QgYmUgdXNlZCB3aXRoIGEgd29yayBncm91cCBzaXplIGRlY2xhcmF0aW9uLgorVEVTVF9GKE1h
bGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0LCBJbnZhcmlhbnRCbG9ja1NpemUpCit7CisgICAgY29u
c3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMTAgZXNc
biIKKyAgICAgICAgImludmFyaWFudCBsYXlvdXQobG9jYWxfc2l6ZV94ID0gMTUpIGluO1xuIgor
ICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAifVxuIjsKKworICAgIGlmIChjb21w
aWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21w
aWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAg
fQorfQorCisvLyBJbnZhcmlhbnQgY2Fubm90IGJlIHVzZWQgd2l0aCBhIG5vbi1vdXRwdXQgdmFy
aWFibGUgaW4gRVNTTDMuCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgSW52YXJpYW50Tm9u
T3VwdXQpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAg
ICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgImludmFyaWFudCBpbnQgdmFsdWU7XG4iCisg
ICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICJ9XG4iOworCisgICAgaWYgKGNvbXBp
bGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBp
bGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9
Cit9CisKKy8vIEludmFyaWFudCBkZWNsYXJhdGlvbiBzaG91bGQgZm9sbG93IHRoZSBmb2xsb3dp
bmcgZm9ybWF0ICJpbnZhcmlhbnQgPG91dCB2YXJpYWJsZSBuYW1lPiIuCisvLyBUZXN0IGhhdmlu
ZyBhbiBpbmNvcnJlY3QgcXVhbGlmaWVyIGluIHRoZSBpbnZhcmlhbnQgZGVjbGFyYXRpb24uCitU
RVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgSW52YXJpYW50RGVjbGFyYXRpb25XaXRoU3RvcmFn
ZVF1YWxpZmllcikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAg
ICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7XG4iCisgICAgICAgICJvdXQgdmVjNCBmb287XG4iCisgICAgICAgICJpbnZhcmlhbnQgY2Vu
dHJvaWQgZm9vO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAifVxuIjsK
KyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8
ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1J
bmZvTG9nOworICAgIH0KK30KKworLy8gSW52YXJpYW50IGRlY2xhcmF0aW9uIHNob3VsZCBmb2xs
b3cgdGhlIGZvbGxvd2luZyBmb3JtYXQgImludmFyaWFudCA8b3V0IHZhcmlhYmxlIG5hbWU+Ii4K
Ky8vIFRlc3QgaGF2aW5nIGFuIGluY29ycmVjdCBwcmVjaXNpb24gcXVhbGlmaWVyIGluIHRoZSBp
bnZhcmlhbnQgZGVjbGFyYXRpb24uCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgSW52YXJp
YW50RGVjbGFyYXRpb25XaXRoUHJlY2lzaW9uUXVhbGlmaWVyKQoreworICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAg
ICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IGZvbztc
biIKKyAgICAgICAgImludmFyaWFudCBoaWdocCBmb287XG4iCisgICAgICAgICJ2b2lkIG1haW4o
KSB7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisg
ICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4
cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBJbnZhcmlhbnQg
ZGVjbGFyYXRpb24gc2hvdWxkIGZvbGxvdyB0aGUgZm9sbG93aW5nIGZvcm1hdCAiaW52YXJpYW50
IDxvdXQgdmFyaWFibGUgbmFtZT4iLgorLy8gVGVzdCBoYXZpbmcgYW4gaW5jb3JyZWN0IGxheW91
dCBxdWFsaWZpZXIgaW4gdGhlIGludmFyaWFudCBkZWNsYXJhdGlvbi4KK1RFU1RfRihNYWxmb3Jt
ZWRTaGFkZXJUZXN0LCBJbnZhcmlhbnREZWNsYXJhdGlvbldpdGhMYXlvdXRRdWFsaWZpZXIpCit7
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lv
biAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAg
ICAib3V0IHZlYzQgZm9vO1xuIgorICAgICAgICAiaW52YXJpYW50IGxheW91dChsb2NhdGlvbj0w
KSBmb287XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICJ9XG4iOworICAg
IGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNo
YWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9M
b2c7CisgICAgfQorfQorCisvLyBWYXJpYWJsZSBkZWNsYXJhdGlvbiB3aXRoIGJvdGggaW52YXJp
YW50IGFuZCBsYXlvdXQgcXVhbGlmaWVycyBpcyBub3QgdmFsaWQgaW4gdGhlIGZvcm1hbCBncmFt
bWFyCisvLyBwcm92aWRlZCBpbiB0aGUgRVNTTCAzLjAwIHNwZWMuIEVTU0wgMy4xMCBzdGFydHMg
YWxsb3dpbmcgdGhpcyBjb21iaW5hdGlvbiwgYnV0IEVTU0wgMy4wMCBzaG91bGQKKy8vIHN0aWxs
IGRpc2FsbG93IGl0LgorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIFZhcmlhYmxlRGVjbGFy
YXRpb25XaXRoSW52YXJpYW50QW5kTGF5b3V0UXVhbGlmaWVyRVNTTDMwMCkKK3sKKyAgICBjb25z
dCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xu
IgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJpbnZhcmlh
bnQgbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAg
ICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFk
ZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24g
c3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKwor
Ly8gQml0IHNoaWZ0IHdpdGggYSByaHMgdmFsdWUgPiAzMSBoYXMgYW4gdW5kZWZpbmVkIHJlc3Vs
dCBpbiB0aGUgR0xTTCBzcGVjLiBXZSBkaXNhbGxvdyBpdC4KKy8vIEVTU0wgMy4wMC42IHNlY3Rp
b24gNS45LgorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIFNoaWZ0QnkzMikKK3sKKyAgICBj
b25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBl
c1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ2b2lk
IG1haW4oKSB7XG4iCisgICAgICAgICIgICB1aW50IHUgPSAxdSA8PCAzMnU7XG4iCisgICAgICAg
ICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBG
QUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJl
ICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBUZXN0IHRoYXQgZGVmZXJyaW5nIGdsb2Jh
bCB2YXJpYWJsZSBpbml0IHdvcmtzIHdpdGggYW4gZW1wdHkgbWFpbigpLgorVEVTVF9GKE1hbGZv
cm1lZFNoYWRlclRlc3QsIERlZmVyR2xvYmFsVmFyaWFibGVJbml0V2l0aEVtcHR5TWFpbikKK3sK
KyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNpc2lv
biBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidW5pZm9ybSBmbG9hdCB1O1xuIgorICAgICAg
ICAiZmxvYXQgZm9vID0gdTtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHt9XG4iOworICAgIGlm
ICghY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFk
ZXIgY29tcGlsYXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2VzcyAiIDw8IG1JbmZvTG9nOwor
ICAgIH0KK30KKworLy8gVGVzdCB0aGF0IHBydW5pbmcgZW1wdHkgZGVjbGFyYXRpb25zIGZyb20g
bG9vcCBpbml0IGV4cHJlc3Npb24gd29ya3MuCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwg
RW1wdHlEZWNsYXJhdGlvbkFzTG9vcEluaXQpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNo
YWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xu
IgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBp
bnQgaSA9IDA7XG4iCisgICAgICAgICIgICAgZm9yIChpbnQ7IGkgPCAzOyBpKyspXG4iCisgICAg
ICAgICIgICAge1xuIgorICAgICAgICAiICAgICAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KGkpO1xu
IgorICAgICAgICAiICAgIH1cbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKCFjb21waWxlKHNo
YWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlv
biBmYWlsZWQsIGV4cGVjdGluZyBzdWNjZXNzICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL05WX2Ry
YXdfYnVmZmVyc190ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvTlZfZHJhd19idWZmZXJzX3Rlc3QuY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90
ZXN0cy9OVl9kcmF3X2J1ZmZlcnNfdGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
OSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisvLyBOVl9kcmF3X2J1ZmZlcnNfdGVzdC5jcHA6CisvLyAgIFRl
c3QgZm9yIE5WX2RyYXdfYnVmZmVycyBzZXR0aW5nCisvLworCisjaW5jbHVkZSAiYW5nbGVfZ2wu
aCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFu
Zy5oIgorI2luY2x1ZGUgInRlc3RzL3Rlc3RfdXRpbHMvY29tcGlsZXJfdGVzdC5oIgorCitjbGFz
cyBOVkRyYXdCdWZmZXJzVGVzdCA6IHB1YmxpYyBNYXRjaE91dHB1dENvZGVUZXN0Cit7CisgIHB1
YmxpYzoKKyAgICBOVkRyYXdCdWZmZXJzVGVzdCgpIDogTWF0Y2hPdXRwdXRDb2RlVGVzdChHTF9G
UkFHTUVOVF9TSEFERVIsIDAsIFNIX0VTU0xfT1VUUFVUKQorICAgIHsKKyAgICAgICAgU2hCdWls
dEluUmVzb3VyY2VzICpyZXNvdXJjZXMgPSBnZXRSZXNvdXJjZXMoKTsKKyAgICAgICAgcmVzb3Vy
Y2VzLT5NYXhEcmF3QnVmZmVycyAgICAgPSA4OworICAgICAgICByZXNvdXJjZXMtPkVYVF9kcmF3
X2J1ZmZlcnMgICA9IDE7CisgICAgICAgIHJlc291cmNlcy0+TlZfZHJhd19idWZmZXJzICAgID0g
MTsKKyAgICB9Cit9OworCitURVNUX0YoTlZEcmF3QnVmZmVyc1Rlc3QsIE5WRHJhd0J1ZmZlcnMp
Cit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjZXh0
ZW5zaW9uIEdMX0VYVF9kcmF3X2J1ZmZlcnMgOiByZXF1aXJlXG4iCisgICAgICAgICJwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAg
IiAgIGdsX0ZyYWdEYXRhWzBdID0gdmVjNCgxLjApO1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0Rh
dGFbMV0gPSB2ZWM0KDAuMCk7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVy
U3RyaW5nKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQ29kZSgiR0xfTlZfZHJhd19idWZmZXJz
IikpOworICAgIEFTU0VSVF9GQUxTRShmb3VuZEluQ29kZSgiR0xfRVhUX2RyYXdfYnVmZmVycyIp
KTsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90
ZXN0cy9QYWNrX1VucGFja190ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvUGFja19VbnBhY2tfdGVzdC5jcHAJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVy
X3Rlc3RzL1BhY2tfVW5wYWNrX3Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIw
IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorLy8KKy8vIFBhY2tfVW5wYWNrX3Rlc3QuY3BwOgorLy8gICBUZXN0cyBm
b3IgdGhlIGVtdWxhdGluZyBwYWNrX3VucGFjayBmdW5jdGlvbnMgZm9yIEdMU0wuCisvLworCisj
aW5jbHVkZSAiYW5nbGVfZ2wuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUg
IkdMU0xBTkcvU2hhZGVyTGFuZy5oIgorI2luY2x1ZGUgInRlc3RzL3Rlc3RfdXRpbHMvY29tcGls
ZXJfdGVzdC5oIgorCituYW1lc3BhY2UKK3sKKworY2xhc3MgUGFja1VucGFja1Rlc3QgOiBwdWJs
aWMgTWF0Y2hPdXRwdXRDb2RlVGVzdAoreworICBwdWJsaWM6CisgICAgUGFja1VucGFja1Rlc3Qo
KSA6IE1hdGNoT3V0cHV0Q29kZVRlc3QoR0xfRlJBR01FTlRfU0hBREVSLCAwLCBTSF9HTFNMXzQw
MF9DT1JFX09VVFBVVCkge30KK307CisKKy8vIENoZWNrIGlmIFBhY2tTbm9ybTJ4MTYgRW11bGF0
aW9uIGZvciBHTFNMIDwgNC4yIGNvbXBpbGUgY29ycmVjdGx5LgorVEVTVF9GKFBhY2tVbnBhY2tU
ZXN0LCBQYWNrU25vcm0yeDE2RW11bGF0aW9uKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZz
aGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgImxheW91dChsb2NhdGlvbiA9IDApIG91
dCBtZWRpdW1wIHZlYzQgZnJhZ0NvbG9yOyIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAg
ICAgICAgIiAgIHZlYzIgdjtcbiIKKyAgICAgICAgIiAgIHVpbnQgdSA9IHBhY2tTbm9ybTJ4MTYo
dik7XG4iCisgICAgICAgICIgICBmcmFnQ29sb3IgPSB2ZWM0KDAuMCk7XG4iCisgICAgICAgICJ9
XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZElu
Q29kZSgidWludCB3ZWJnbF9wYWNrU25vcm0yeDE2X2VtdSh2ZWMyIHYpIikpOworfQorCisvLyBD
aGVjayBpZiBVbnBhY2tTbm9ybTJ4MTYgRW11bGF0aW9uIGZvciBHTFNMIDwgNC4yIGNvbXBpbGUg
Y29ycmVjdGx5LgorVEVTVF9GKFBhY2tVbnBhY2tUZXN0LCBVbnBhY2tTbm9ybTJ4MTZFbXVsYXRp
b24pCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIj
dmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgor
ICAgICAgICAibGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBmcmFnQ29sb3I7
IgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgdWludCB1O1xuIgorICAg
ICAgICAiICAgdmVjMiB2PXVucGFja1Nub3JtMngxNih1KTtcbiIKKyAgICAgICAgIiAgIGZyYWdD
b2xvciA9IHZlYzQoMC4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJT
dHJpbmcpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5Db2RlKCJ2ZWMyIHdlYmdsX3VucGFja1Nu
b3JtMngxNl9lbXUodWludCB1KSIpKTsKK30KKworLy8gQ2hlY2sgaWYgUGFja1Vub3JtMngxNiBF
bXVsYXRpb24gZm9yIEdMU0wgPCA0LjEgY29tcGlsZXMgY29ycmVjdGx5LgorVEVTVF9GKFBhY2tV
bnBhY2tUZXN0LCBQYWNrVW5vcm0yeDE2RW11bGF0aW9uKQoreworICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAg
ICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgImxheW91dChsb2NhdGlvbiA9
IDApIG91dCBtZWRpdW1wIHZlYzQgZnJhZ0NvbG9yOyIKKyAgICAgICAgInZvaWQgbWFpbigpIHtc
biIKKyAgICAgICAgIiAgIHZlYzIgdjtcbiIKKyAgICAgICAgIiAgIHVpbnQgdSA9IHBhY2tVbm9y
bTJ4MTYodik7XG4iCisgICAgICAgICIgICBmcmFnQ29sb3IgPSB2ZWM0KDAuMCk7XG4iCisgICAg
ICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBBU1NFUlRfVFJVRShm
b3VuZEluQ29kZSgidWludCB3ZWJnbF9wYWNrVW5vcm0yeDE2X2VtdSh2ZWMyIHYpIikpOworfQor
CisvLyBDaGVjayBpZiBVbnBhY2tTbm9ybTJ4MTYgRW11bGF0aW9uIGZvciBHTFNMIDwgNC4xIGNv
bXBpbGVzIGNvcnJlY3RseS4KK1RFU1RfRihQYWNrVW5wYWNrVGVzdCwgVW5wYWNrVW5vcm0yeDE2
RW11bGF0aW9uKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAg
ICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDtcbiIKKyAgICAgICAgImxheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgZnJh
Z0NvbG9yOyIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIHVpbnQgdTtc
biIKKyAgICAgICAgIiAgIHZlYzIgdj11bnBhY2tVbm9ybTJ4MTYodSk7XG4iCisgICAgICAgICIg
ICBmcmFnQ29sb3IgPSB2ZWM0KDAuMCk7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUo
c2hhZGVyU3RyaW5nKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQ29kZSgidmVjMiB3ZWJnbF91
bnBhY2tVbm9ybTJ4MTZfZW11KHVpbnQgdSkiKSk7Cit9CisKKy8vIENoZWNrIGlmIFBhY2tIYWxm
MngxNiBFbXVsYXRpb24gZm9yIEdMU0wgPCA0LjIgY29tcGlsZXMgY29ycmVjdGx5LgorVEVTVF9G
KFBhY2tVbnBhY2tUZXN0LCBQYWNrSGFsZjJ4MTZFbXVsYXRpb24pCit7CisgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAg
ICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAibGF5b3V0KGxvY2F0
aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBmcmFnQ29sb3I7IgorICAgICAgICAidm9pZCBtYWlu
KCkge1xuIgorICAgICAgICAiICAgdmVjMiB2O1xuIgorICAgICAgICAiICAgdWludCB1PXBhY2tI
YWxmMngxNih2KTtcbiIKKyAgICAgICAgIiAgIGZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKKyAg
ICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VSVF9UUlVF
KGZvdW5kSW5Db2RlKCJ1aW50IHdlYmdsX3BhY2tIYWxmMngxNl9lbXUodmVjMiB2KSIpKTsKK30K
KworLy8gQ2hlY2sgaWYgVW5wYWNrSGFsZjJ4MTYgRW11bGF0aW9uIGZvciBHTFNMIDwgNC4yIGNv
bXBpbGVzIGNvcnJlY3RseS4KK1RFU1RfRihQYWNrVW5wYWNrVGVzdCwgVW5wYWNrSGFsZjJ4MTZF
bXVsYXRpb24pCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAg
ICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
O1xuIgorICAgICAgICAibGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBmcmFn
Q29sb3I7IgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgdWludCB1O1xu
IgorICAgICAgICAiICAgdmVjMiB2PXVucGFja0hhbGYyeDE2KHUpO1xuIgorICAgICAgICAiICAg
ZnJhZ0NvbG9yID0gdmVjNCgwLjApO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNo
YWRlclN0cmluZyk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkNvZGUoInZlYzIgd2ViZ2xfdW5w
YWNrSGFsZjJ4MTZfZW11KHVpbnQgdSkiKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvUHJ1bmVFbXB0
eURlY2xhcmF0aW9uc190ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvUHJ1bmVFbXB0eURlY2xhcmF0aW9uc190ZXN0
LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
Y29tcGlsZXJfdGVzdHMvUHJ1bmVFbXB0eURlY2xhcmF0aW9uc190ZXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDU4IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFBydW5lRW1wdHlEZWNsYXJh
dGlvbnNfdGVzdC5jcHA6CisvLyAgIFRlc3RzIGZvciBwcnVuaW5nIGVtcHR5IGRlY2xhcmF0aW9u
cy4KKy8vCisKKyNpbmNsdWRlICJhbmdsZV9nbC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0Lmgi
CisjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCisjaW5jbHVkZSAidGVzdHMvdGVzdF91
dGlscy9jb21waWxlcl90ZXN0LmgiCisKK25hbWVzcGFjZQoreworCitjbGFzcyBQcnVuZUVtcHR5
RGVjbGFyYXRpb25zVGVzdCA6IHB1YmxpYyBNYXRjaE91dHB1dENvZGVUZXN0Cit7CisgIHB1Ymxp
YzoKKyAgICBQcnVuZUVtcHR5RGVjbGFyYXRpb25zVGVzdCgpCisgICAgICAgIDogTWF0Y2hPdXRw
dXRDb2RlVGVzdChHTF9WRVJURVhfU0hBREVSLCAwLCBTSF9HTFNMX0NPTVBBVElCSUxJVFlfT1VU
UFVUKQorICAgIHsKKyAgICB9Cit9OworCitURVNUX0YoUHJ1bmVFbXB0eURlY2xhcmF0aW9uc1Rl
c3QsIEVtcHR5RGVjbGFyYXRpb25TdGFydHNEZWNsYXJhdG9yTGlzdCkKK3sKKyAgICBjb25zdCBz
dGQ6OnN0cmluZyBzaGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7XG4iCisgICAgICAgICJ1bmlmb3JtIGZsb2F0IHU7XG4iCisgICAgICAgICJ2b2lkIG1haW4o
KVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgZmxvYXQsIGY7XG4iCisgICAgICAgICIg
ICBnbF9Qb3NpdGlvbiA9IHZlYzQodSAqIGYpO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21w
aWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkNvZGUoImZsb2F0IGYi
KSk7CisgICAgQVNTRVJUX1RSVUUobm90Rm91bmRJbkNvZGUoImZsb2F0LCBmIikpOworfQorCitU
RVNUX0YoUHJ1bmVFbXB0eURlY2xhcmF0aW9uc1Rlc3QsIEVtcHR5U3RydWN0RGVjbGFyYXRpb25X
aXRoUXVhbGlmaWVycykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBzaGFkZXJTdHJpbmcgPQor
ICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJjb25zdCBzdHJ1
Y3QgUyB7IGZsb2F0IGY7IH07XG4iCisgICAgICAgICJ1bmlmb3JtIFMgczsiCisgICAgICAgICJ2
b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgZ2xfUG9zaXRpb24gPSB2
ZWM0KHMuZik7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsK
KyAgICBBU1NFUlRfVFJVRShmb3VuZEluQ29kZSgic3RydWN0IFMiKSk7CisgICAgQVNTRVJUX1RS
VUUoZm91bmRJbkNvZGUoInVuaWZvcm0gUyIpKTsKKyAgICBBU1NFUlRfVFJVRShub3RGb3VuZElu
Q29kZSgiY29uc3Qgc3RydWN0IFMiKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1BydW5lVW51c2Vk
RnVuY3Rpb25zX3Rlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9QcnVuZVVudXNlZEZ1bmN0aW9uc190ZXN0LmNwcAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGls
ZXJfdGVzdHMvUHJ1bmVVbnVzZWRGdW5jdGlvbnNfdGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw5MSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBQcnVuZVVudXNlZEZ1bmN0aW9uc190ZXN0
LmNwcDoKKy8vICAgVGVzdCBmb3IgdGhlIHBydW5pbmcgb2YgdW51c2VkIGZ1bmN0aW9uIHdpdGgg
dGhlIFNIX1BSVU5FX1VOVVNFRF9GVU5DVElPTlMgY29tcGlsZSBmbGFnCisvLworCisjaW5jbHVk
ZSAiYW5nbGVfZ2wuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgIkdMU0xB
TkcvU2hhZGVyTGFuZy5oIgorI2luY2x1ZGUgInRlc3RzL3Rlc3RfdXRpbHMvY29tcGlsZXJfdGVz
dC5oIgorCituYW1lc3BhY2UKK3sKKworY2xhc3MgUHJ1bmVVbnVzZWRGdW5jdGlvbnNUZXN0IDog
cHVibGljIE1hdGNoT3V0cHV0Q29kZVRlc3QKK3sKKyAgcHVibGljOgorICAgIFBydW5lVW51c2Vk
RnVuY3Rpb25zVGVzdCgpIDogTWF0Y2hPdXRwdXRDb2RlVGVzdChHTF9GUkFHTUVOVF9TSEFERVIs
IDAsIFNIX0VTU0xfT1VUUFVUKSB7fQorCisgIHByb3RlY3RlZDoKKyAgICB2b2lkIGNvbXBpbGUo
Y29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZywgYm9vbCBwcnVuZSkKKyAgICB7CisgICAg
ICAgIGludCBjb21waWxhdGlvbkZsYWdzID0gU0hfVkFSSUFCTEVTIHwgKHBydW5lID8gMCA6IFNI
X0RPTlRfUFJVTkVfVU5VU0VEX0ZVTkNUSU9OUyk7CisgICAgICAgIE1hdGNoT3V0cHV0Q29kZVRl
c3Q6OmNvbXBpbGUoc2hhZGVyU3RyaW5nLCBjb21waWxhdGlvbkZsYWdzKTsKKyAgICB9Cit9Owor
CisvLyBDaGVjayB0aGF0IHVudXNlZCBmdW5jdGlvbiBhbmQgcHJvdG90eXBlcyBhcmUgcmVtb3Zl
ZCBpZmYgdGhlIG9wdGlvbnMgaXMgc2V0CitURVNUX0YoUHJ1bmVVbnVzZWRGdW5jdGlvbnNUZXN0
LCBVbnVzZWRGdW5jdGlvbkFuZFByb3RvKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFk
ZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAg
ICJmbG9hdCB1bnVzZWQoZmxvYXQgYSk7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisg
ICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgorICAgICAgICAifVxuIgor
ICAgICAgICAiZmxvYXQgdW51c2VkKGZsb2F0IGEpIHtcbiIKKyAgICAgICAgIiAgICByZXR1cm4g
YTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcsIHRydWUpOwor
ICAgIEVYUEVDVF9UUlVFKG5vdEZvdW5kSW5Db2RlKCJ1bnVzZWQoIikpOworICAgIEVYUEVDVF9U
UlVFKGZvdW5kSW5Db2RlKCJtYWluKCIsIDEpKTsKKworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5n
LCBmYWxzZSk7CisgICAgRVhQRUNUX1RSVUUoZm91bmRJbkNvZGUoInVudXNlZCgiLCAyKSk7Cisg
ICAgRVhQRUNUX1RSVUUoZm91bmRJbkNvZGUoIm1haW4oIiwgMSkpOworfQorCisvLyBDaGVjayB0
aGF0IHVuaW1wbGVtZW50ZWQgcHJvdG90eXBlcyBhcmUgcmVtb3ZlZCBpZmYgdGhlIG9wdGlvbnMg
aXMgc2V0CitURVNUX0YoUHJ1bmVVbnVzZWRGdW5jdGlvbnNUZXN0LCBVbmltcGxlbWVudGVkUHJv
dG90eXBlKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAg
ICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJmbG9hdCB1bnVzZWQoZmxv
YXQgYSk7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICAgZ2xfRnJh
Z0NvbG9yID0gdmVjNCgxLjApO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRl
clN0cmluZywgdHJ1ZSk7CisgICAgRVhQRUNUX1RSVUUobm90Rm91bmRJbkNvZGUoInVudXNlZCgi
KSk7CisgICAgRVhQRUNUX1RSVUUoZm91bmRJbkNvZGUoIm1haW4oIiwgMSkpOworCisgICAgY29t
cGlsZShzaGFkZXJTdHJpbmcsIGZhbHNlKTsKKyAgICBFWFBFQ1RfVFJVRShmb3VuZEluQ29kZSgi
dW51c2VkKCIsIDEpKTsKKyAgICBFWFBFQ1RfVFJVRShmb3VuZEluQ29kZSgibWFpbigiLCAxKSk7
Cit9CisKKy8vIENoZWNrIHRoYXQgdXNlZCBmdW5jdGlvbnMgYXJlIG5vdCBwcnVudWVkIChkdWgp
CitURVNUX0YoUHJ1bmVVbnVzZWRGdW5jdGlvbnNUZXN0LCBVc2VkRnVuY3Rpb24pCit7CisgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDtcbiIKKyAgICAgICAgImZsb2F0IHVzZWQoZmxvYXQgYSk7XG4iCisgICAgICAg
ICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh1c2Vk
KDEuMCkpO1xuIgorICAgICAgICAifVxuIgorICAgICAgICAiZmxvYXQgdXNlZChmbG9hdCBhKSB7
XG4iCisgICAgICAgICIgICAgcmV0dXJuIGE7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBp
bGUoc2hhZGVyU3RyaW5nLCB0cnVlKTsKKyAgICBFWFBFQ1RfVFJVRShmb3VuZEluQ29kZSgidXNl
ZCgiLCAzKSk7CisgICAgRVhQRUNUX1RSVUUoZm91bmRJbkNvZGUoIm1haW4oIiwgMSkpOworCisg
ICAgY29tcGlsZShzaGFkZXJTdHJpbmcsIGZhbHNlKTsKKyAgICBFWFBFQ1RfVFJVRShmb3VuZElu
Q29kZSgidXNlZCgiLCAzKSk7CisgICAgRVhQRUNUX1RSVUUoZm91bmRJbkNvZGUoIm1haW4oIiwg
MSkpOworfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29t
cGlsZXJfdGVzdHMvUXVhbGlmaWNhdGlvbk9yZGVyRVNTTDMxX3Rlc3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9RdWFs
aWZpY2F0aW9uT3JkZXJFU1NMMzFfdGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1F1YWxpZmljYXRpb25PcmRl
ckVTU0wzMV90ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4MiBAQAorLy8KKy8v
IENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisvLyBRdWFsaWZpY2F0aW9uT3JkZXJFU1NMMzFfdGVzdC5jcHA6CisvLyAgIE9wZW5H
TCBFUyAzLjEgcmVtb3ZlcyB0aGUgc3RyaWN0IG9yZGVyIG9mIHF1YWxpZmllcnMgaW1wb3NlZCBi
eSB0aGUgZ3JhbW1hci4KKy8vICAgVGhpcyBmaWxlIGNvbnRhaW5zIHRlc3RzIGZvciBpbnZhbGlk
IG9yZGVyIGFuZCB1c2FnZSBvZiBxdWFsaWZpZXJzIGluIEdMU0wgRVMgMy4xMC4KKworI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpbmNsdWRlICJhbmdsZV9nbC5oIgorI2luY2x1ZGUgImNv
bXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckVTU0wuaCIKKyNpbmNsdWRlICJHTFNMQU5HL1No
YWRlckxhbmcuaCIKKyNpbmNsdWRlICJ0ZXN0cy90ZXN0X3V0aWxzL2NvbXBpbGVyX3Rlc3QuaCIK
KworY2xhc3MgUXVhbGlmaWNhdGlvblZlcnRleFNoYWRlclRlc3RFU1NMMzEgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdAoreworICBwdWJsaWM6CisgICAgUXVhbGlmaWNhdGlvblZlcnRleFNoYWRlclRl
c3RFU1NMMzEoKSB7fQorICBwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKKyAg
ICB7CisgICAgICAgIFNoQnVpbHRJblJlc291cmNlcyByZXNvdXJjZXM7CisgICAgICAgIFNoSW5p
dEJ1aWx0SW5SZXNvdXJjZXMoJnJlc291cmNlcyk7CisKKyAgICAgICAgbVRyYW5zbGF0b3IgPSBu
ZXcgVHJhbnNsYXRvckVTU0woR0xfVkVSVEVYX1NIQURFUiwgU0hfR0xFUzNfMV9TUEVDKTsKKyAg
ICAgICAgQVNTRVJUX1RSVUUobVRyYW5zbGF0b3ItPkluaXQocmVzb3VyY2VzKSk7CisgICAgfQor
CisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeyBkZWxldGUgbVRyYW5zbGF0b3I7IH0KKwor
ICAgIC8vIFJldHVybiB0cnVlIHdoZW4gY29tcGlsYXRpb24gc3VjY2VlZHMKKyAgICBib29sIGNv
bXBpbGUoY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZykKKyAgICB7CisgICAgICAgIGNv
bnN0IGNoYXIgKnNoYWRlclN0cmluZ3NbXSA9IHtzaGFkZXJTdHJpbmcuY19zdHIoKX07CisgICAg
ICAgIG1BU1RSb290ICAgICAgICAgICAgICAgICAgICA9IG1UcmFuc2xhdG9yLT5jb21waWxlVHJl
ZUZvclRlc3Rpbmcoc2hhZGVyU3RyaW5ncywgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIX0lOVEVSTUVESUFURV9UUkVFIHwgU0hfVkFS
SUFCTEVTKTsKKyAgICAgICAgVEluZm9TaW5rICZpbmZvU2luayA9IG1UcmFuc2xhdG9yLT5nZXRJ
bmZvU2luaygpOworICAgICAgICBtSW5mb0xvZyAgICAgICAgICAgID0gaW5mb1NpbmsuaW5mby5j
X3N0cigpOworICAgICAgICByZXR1cm4gbUFTVFJvb3QgIT0gbnVsbHB0cjsKKyAgICB9CisKKyAg
ICBjb25zdCBUSW50ZXJtU3ltYm9sICpmaW5kU3ltYm9sSW5BU1QoY29uc3QgVFN0cmluZyAmc3lt
Ym9sTmFtZSwgVEJhc2ljVHlwZSBiYXNpY1R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gRmlu
ZFN5bWJvbE5vZGUobUFTVFJvb3QsIHN5bWJvbE5hbWUsIGJhc2ljVHlwZSk7CisgICAgfQorCisg
IHByb3RlY3RlZDoKKyAgICBUcmFuc2xhdG9yRVNTTCAqbVRyYW5zbGF0b3I7CisgICAgVEludGVy
bU5vZGUgKm1BU1RSb290OworICAgIHN0ZDo6c3RyaW5nIG1JbmZvTG9nOworfTsKKworLy8gR0xT
TCBFUyAzLjEwIGhhcyByZWxheGVkIGNoZWNrcyBvbiBxdWFsaWZpZXIgb3JkZXIuIEFueSBvcmRl
ciBpcyBjb3JyZWN0LgorVEVTVF9GKFF1YWxpZmljYXRpb25WZXJ0ZXhTaGFkZXJUZXN0RVNTTDMx
LCBDZW50cm9pZE91dCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0K
KyAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIGxvd3AgZmxv
YXQ7XG4iCisgICAgICAgICJvdXQgY2VudHJvaWQgZmxvYXQgc29tZXRoaW5nO1xuIgorICAgICAg
ICAidm9pZCBtYWluKCl7XG4iCisgICAgICAgICIgICBzb21ldGhpbmcgPSAxLjA7XG4iCisgICAg
ICAgICJ9XG4iOworICAgIGlmICghY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAg
ICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2Vz
cyIgPDwgbUluZm9Mb2c7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGNvbnN0IFRJ
bnRlcm1TeW1ib2wgKm5vZGUgPSBmaW5kU3ltYm9sSW5BU1QoInNvbWV0aGluZyIsIEVidEZsb2F0
KTsKKyAgICAgICAgQVNTRVJUX05FKG51bGxwdHIsIG5vZGUpOworCisgICAgICAgIGNvbnN0IFRU
eXBlICZ0eXBlID0gbm9kZS0+Z2V0VHlwZSgpOworICAgICAgICBFWFBFQ1RfRVEoRXZxQ2VudHJv
aWRPdXQsIHR5cGUuZ2V0UXVhbGlmaWVyKCkpOworICAgIH0KK30KKworLy8gR0xTTCBFUyAzLjEw
IGhhcyByZWxheGVkIGNoZWNrcyBvbiBxdWFsaWZpZXIgb3JkZXIuIEFueSBvcmRlciBpcyBjb3Jy
ZWN0LgorVEVTVF9GKFF1YWxpZmljYXRpb25WZXJ0ZXhTaGFkZXJUZXN0RVNTTDMxLCBBbGxRdWFs
aWZpZXJzTWl4ZWQpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Cisg
ICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBsb3dwIGZsb2F0
O1xuIgorICAgICAgICAiaGlnaHAgb3V0IGludmFyaWFudCBjZW50cm9pZCBmbGF0IHZlYzQgc29t
ZXRoaW5nO1xuIgorICAgICAgICAidm9pZCBtYWluKCl7XG4iCisgICAgICAgICJ9XG4iOworICAg
IGlmICghY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJT
aGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2VzcyIgPDwgbUluZm9Mb2c7
CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGNvbnN0IFRJbnRlcm1TeW1ib2wgKm5v
ZGUgPSBmaW5kU3ltYm9sSW5BU1QoInNvbWV0aGluZyIsIEVidEZsb2F0KTsKKyAgICAgICAgQVNT
RVJUX05FKG51bGxwdHIsIG5vZGUpOworCisgICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlID0gbm9k
ZS0+Z2V0VHlwZSgpOworICAgICAgICBFWFBFQ1RfVFJVRSh0eXBlLmlzSW52YXJpYW50KCkpOwor
ICAgICAgICBFWFBFQ1RfRVEoRXZxRmxhdE91dCwgdHlwZS5nZXRRdWFsaWZpZXIoKSk7CisgICAg
ICAgIEVYUEVDVF9FUShFYnBIaWdoLCB0eXBlLmdldFByZWNpc2lvbigpKTsKKyAgICB9Cit9CisK
Ky8vIEdMU0wgRVMgMy4xMCBhbGxvd3MgbXVsdGlwbGUgbGF5b3V0IHF1YWxpZmllcnMgdG8gYmUg
c3BlY2lmaWVkLgorVEVTVF9GKFF1YWxpZmljYXRpb25WZXJ0ZXhTaGFkZXJUZXN0RVNTTDMxLCBN
dWx0aXBsZUxheW91dHMpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9
CisgICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBsb3dwIGZs
b2F0O1xuIgorICAgICAgICAiaW4gbGF5b3V0KGxvY2F0aW9uPTEpIGxheW91dChsb2NhdGlvbj0y
KSB2ZWM0IHNvbWV0aGluZztcbiIKKyAgICAgICAgInZvaWQgbWFpbigpe1xuIgorICAgICAgICAi
fVxuIjsKKyAgICBpZiAoIWNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZB
SUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCwgZXhwZWN0aW5nIHN1Y2Nlc3MiIDw8
IG1JbmZvTG9nOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBjb25zdCBUSW50ZXJt
U3ltYm9sICpub2RlID0gZmluZFN5bWJvbEluQVNUKCJzb21ldGhpbmciLCBFYnRGbG9hdCk7Cisg
ICAgICAgIEFTU0VSVF9ORShudWxscHRyLCBub2RlKTsKKworICAgICAgICBjb25zdCBUVHlwZSAm
dHlwZSA9IG5vZGUtPmdldFR5cGUoKTsKKyAgICAgICAgRVhQRUNUX0VRKEV2cVZlcnRleEluLCB0
eXBlLmdldFF1YWxpZmllcigpKTsKKyAgICAgICAgRVhQRUNUX0VRKDIsIHR5cGUuZ2V0TGF5b3V0
UXVhbGlmaWVyKCkubG9jYXRpb24pOworICAgIH0KK30KKworLy8gVGhlIHRlc3QgY2hlY2tzIGxh
eW91dCBxdWFsaWZpZXIgb3ZlcnJpZGluZyB3aGVuIG11bHRpcGxlIGxheW91dHMgYXJlIHNwZWNp
ZmllZC4KK1RFU1RfRihRdWFsaWZpY2F0aW9uVmVydGV4U2hhZGVyVGVzdEVTU0wzMSwgTXVsdGlw
bGVMYXlvdXRzSW50ZXJmYWNlQmxvY2spCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRl
clN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKKyAgICAgICAgInByZWNpc2lv
biBsb3dwIGZsb2F0O1xuIgorICAgICAgICAib3V0IGZsb2F0IHNvbWVWYWx1ZTtcbiIKKyAgICAg
ICAgImxheW91dChzaGFyZWQpIGxheW91dChzdGQxNDApIGxheW91dChjb2x1bW5fbWFqb3IpIHVu
aWZvcm0gTXlJbnRlcmZhY2VcbiIKKyAgICAgICAgInsgdmVjNCBzb21ldGhpbmc7IH0gTXlJbnRl
cmZhY2VOYW1lO1xuIgorICAgICAgICAidm9pZCBtYWluKCl7XG4iCisgICAgICAgICIgICBzb21l
VmFsdWUgPSBNeUludGVyZmFjZU5hbWUuc29tZXRoaW5nLnI7XG4iCisgICAgICAgICJ9XG4iOwor
ICAgIGlmICghY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8
ICJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2VzcyIgPDwgbUluZm9M
b2c7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGNvbnN0IFRJbnRlcm1TeW1ib2wg
Km5vZGUgPSBmaW5kU3ltYm9sSW5BU1QoIk15SW50ZXJmYWNlTmFtZSIsIEVidEludGVyZmFjZUJs
b2NrKTsKKyAgICAgICAgQVNTRVJUX05FKG51bGxwdHIsIG5vZGUpOworCisgICAgICAgIGNvbnN0
IFRUeXBlICZ0eXBlICAgICAgICAgICAgICAgID0gbm9kZS0+Z2V0VHlwZSgpOworICAgICAgICBU
TGF5b3V0UXVhbGlmaWVyIGxheW91dFF1YWxpZmllciA9IHR5cGUuZ2V0TGF5b3V0UXVhbGlmaWVy
KCk7CisgICAgICAgIEVYUEVDVF9FUShFYnNTdGQxNDAsIGxheW91dFF1YWxpZmllci5ibG9ja1N0
b3JhZ2UpOworICAgICAgICBFWFBFQ1RfRVEoRW1wQ29sdW1uTWFqb3IsIGxheW91dFF1YWxpZmll
ci5tYXRyaXhQYWNraW5nKTsKKyAgICB9Cit9CisKKy8vIFRoZSB0ZXN0IGNoZWNrcyBsYXlvdXQg
cXVhbGlmaWVyIG92ZXJyaWRpbmcgd2hlbiBtdWx0aXBsZSBsYXlvdXRzIGFyZSBzcGVjaWZpZWQu
CitURVNUX0YoUXVhbGlmaWNhdGlvblZlcnRleFNoYWRlclRlc3RFU1NMMzEsIE11bHRpcGxlTGF5
b3V0c0ludGVyZmFjZUJsb2NrMikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3Ry
aW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIGxv
d3AgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgZmxvYXQgc29tZVZhbHVlO1xuIgorICAgICAgICAi
bGF5b3V0KHJvd19tYWpvcikgbGF5b3V0KHN0ZDE0MCkgbGF5b3V0KHNoYXJlZCkgdW5pZm9ybSBN
eUludGVyZmFjZVxuIgorICAgICAgICAieyB2ZWM0IHNvbWV0aGluZzsgfSBNeUludGVyZmFjZU5h
bWU7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKXtcbiIKKyAgICAgICAgIiAgIHNvbWVWYWx1ZSA9
IE15SW50ZXJmYWNlTmFtZS5zb21ldGhpbmcucjtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYg
KCFjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRl
ciBjb21waWxhdGlvbiBmYWlsZWQsIGV4cGVjdGluZyBzdWNjZXNzIiA8PCBtSW5mb0xvZzsKKyAg
ICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgY29uc3QgVEludGVybVN5bWJvbCAqbm9kZSA9
IGZpbmRTeW1ib2xJbkFTVCgiTXlJbnRlcmZhY2VOYW1lIiwgRWJ0SW50ZXJmYWNlQmxvY2spOwor
ICAgICAgICBBU1NFUlRfTkUobnVsbHB0ciwgbm9kZSk7CisKKyAgICAgICAgY29uc3QgVFR5cGUg
JnR5cGUgICAgICAgICAgICAgICAgPSBub2RlLT5nZXRUeXBlKCk7CisgICAgICAgIFRMYXlvdXRR
dWFsaWZpZXIgbGF5b3V0UXVhbGlmaWVyID0gdHlwZS5nZXRMYXlvdXRRdWFsaWZpZXIoKTsKKyAg
ICAgICAgRVhQRUNUX0VRKEVic1NoYXJlZCwgbGF5b3V0UXVhbGlmaWVyLmJsb2NrU3RvcmFnZSk7
CisgICAgICAgIEVYUEVDVF9FUShFbXBSb3dNYWpvciwgbGF5b3V0UXVhbGlmaWVyLm1hdHJpeFBh
Y2tpbmcpOworICAgIH0KK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9jb21waWxlcl90ZXN0cy9RdWFsaWZpY2F0aW9uT3JkZXJfdGVzdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1F1YWxp
ZmljYXRpb25PcmRlcl90ZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvUXVhbGlmaWNhdGlvbk9yZGVyX3Rlc3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTY5IEBACisvLworLy8gQ29weXJpZ2h0IChj
KSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFF1
YWxpZmljYXRpb25PcmRlcl90ZXN0LmNwcDoKKy8vICAgT3BlbkdMIEVTIDMuMSByZW1vdmVzIHRo
ZSBzdHJpY3Qgb3JkZXIgb2YgcXVhbGlmaWVycyBpbXBvc2VkIGJ5IHRoZSBncmFtbWFyLgorLy8g
ICBUaGlzIGZpbGUgY29udGFpbnMgdGVzdHMgZm9yIGludmFsaWQgb3JkZXIgYW5kIHVzYWdlIG9m
IHF1YWxpZmllcnMuCisKKyNpbmNsdWRlICJhbmdsZV9nbC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0
ZXN0LmgiCisjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCisjaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yRVNTTC5oIgorCitjbGFzcyBRdWFsaWZpY2F0aW9uT3Jk
ZXJTaGFkZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QKK3sKKyAgcHVibGljOgorICAgIFF1
YWxpZmljYXRpb25PcmRlclNoYWRlclRlc3QoKSB7fQorCisgIHByb3RlY3RlZDoKKyAgICB2aXJ0
dWFsIHZvaWQgU2V0VXAoKSB7fQorCisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkge30KKwor
ICAgIC8vIFJldHVybiB0cnVlIHdoZW4gY29tcGlsYXRpb24gc3VjY2VlZHMKKyAgICBib29sIGNv
bXBpbGUoY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZywgR0xlbnVtIHNoYWRlclR5cGUs
IFNoU2hhZGVyU3BlYyBzcGVjKQorICAgIHsKKyAgICAgICAgU2hCdWlsdEluUmVzb3VyY2VzIHJl
c291cmNlczsKKyAgICAgICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmcmVzb3VyY2VzKTsKKyAg
ICAgICAgcmVzb3VyY2VzLk1heERyYXdCdWZmZXJzID0gKHNwZWMgPT0gU0hfR0xFUzJfU1BFQykg
PyAxIDogODsKKworICAgICAgICBUcmFuc2xhdG9yRVNTTCAqdHJhbnNsYXRvciA9IG5ldyBUcmFu
c2xhdG9yRVNTTChzaGFkZXJUeXBlLCBzcGVjKTsKKyAgICAgICAgRVhQRUNUX1RSVUUodHJhbnNs
YXRvci0+SW5pdChyZXNvdXJjZXMpKTsKKworICAgICAgICBjb25zdCBjaGFyICpzaGFkZXJTdHJp
bmdzW10gPSB7c2hhZGVyU3RyaW5nLmNfc3RyKCl9OworICAgICAgICBib29sIGNvbXBpbGF0aW9u
U3VjY2VzcyAgICAgPSB0cmFuc2xhdG9yLT5jb21waWxlKHNoYWRlclN0cmluZ3MsIDEsIFNIX0lO
VEVSTUVESUFURV9UUkVFKTsKKyAgICAgICAgVEluZm9TaW5rICZpbmZvU2luayAgICAgICAgID0g
dHJhbnNsYXRvci0+Z2V0SW5mb1NpbmsoKTsKKyAgICAgICAgbUluZm9Mb2cgICAgICAgICAgICAg
ICAgICAgID0gaW5mb1NpbmsuaW5mby5jX3N0cigpOworCisgICAgICAgIGRlbGV0ZSB0cmFuc2xh
dG9yOworCisgICAgICAgIHJldHVybiBjb21waWxhdGlvblN1Y2Nlc3M7CisgICAgfQorCisgIHBy
b3RlY3RlZDoKKyAgICBzdGQ6OnN0cmluZyBtSW5mb0xvZzsKK307CisKKy8vIFJlcGVhdGluZyBj
ZW50cm9pZCBxdWFsaWZpZXIgaXMgaW52YWxpZC4KK1RFU1RfRihRdWFsaWZpY2F0aW9uT3JkZXJT
aGFkZXJUZXN0LCBSZXBlYXRpbmdDZW50cm9pZCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAm
c2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJmbGF0IGNlbnRyb2lkIGNlbnRyb2lk
IGluIGZsb2F0IG15VmFsdWU7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAg
ICJ9XG4iOworCisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nLCBHTF9GUkFHTUVOVF9TSEFE
RVIsIFNIX0dMRVMzXzFfU1BFQykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBj
b21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Cisg
ICAgfQorfQorCisvLyBSZXBlYXRpbmcgdW5pZm9ybSBzdG9yYWdlIHF1YWxpZmllcnMgaXMgaW52
YWxpZC4KK1RFU1RfRihRdWFsaWZpY2F0aW9uT3JkZXJTaGFkZXJUZXN0LCBSZXBlYXRpbmdVbmlm
b3JtcykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAg
IiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
CisgICAgICAgICJ1bmlmb3JtIHVuaWZvcm0gZmxvYXQgbXlWYWx1ZTtcbiIKKyAgICAgICAgInZv
aWQgbWFpbigpIHtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBpZiAoY29tcGlsZShzaGFkZXJT
dHJpbmcsIEdMX0ZSQUdNRU5UX1NIQURFUiwgU0hfR0xFUzNfMV9TUEVDKSkKKyAgICB7CisgICAg
ICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZh
aWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIFJlcGVhdGluZyB2YXJ5aW5nIHN0
b3JhZ2UgcXVhbGlmaWVycyBpcyBpbnZhbGlkLgorVEVTVF9GKFF1YWxpZmljYXRpb25PcmRlclNo
YWRlclRlc3QsIFJlcGVhdGluZ1ZhcnlpbmdzKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZz
aGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAg
ICAgICJ2YXJ5aW5nIHZhcnlpbmcgdmVjNCBteUNvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWlu
KCkge1xuIgorICAgICAgICAifVxuIjsKKworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZywg
R0xfRlJBR01FTlRfU0hBREVSLCBTSF9HTEVTM18xX1NQRUMpKQorICAgIHsKKyAgICAgICAgRkFJ
TCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAi
IDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gTGF5b3V0IHF1YWxpZmllciBzaG91bGQgYmUg
YmVmb3JlIHRoZSBzdG9yYWdlIHF1YWxpZmllcnMuCitURVNUX0YoUXVhbGlmaWNhdGlvbk9yZGVy
U2hhZGVyVGVzdCwgV3JvbmdPcmRlclF1YWxpZmllcnMpCit7CisgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAg
InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0IGxheW91dChsb2NhdGlv
bj0xKSB2ZWM0IG15Q29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAg
ICJ9XG4iOworCisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nLCBHTF9GUkFHTUVOVF9TSEFE
RVIsIFNIX0dMRVMzXzFfU1BFQykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBj
b21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Cisg
ICAgfQorfQorCisvLyBDZW50cm9pZCBvdXQgaXMgdGhlIGNvcnJlY3Qgb3JkZXIuIE91dCBjZW50
cm9pZCBpcyBpbmNvcnJlY3QuCitURVNUX0YoUXVhbGlmaWNhdGlvbk9yZGVyU2hhZGVyVGVzdCwg
V3JvbmdPcmRlckNlbnRyb2lkT3V0KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJT
dHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgImluIHZlYzQgdXY7XG4iCisgICAgICAgICJvdXQg
Y2VudHJvaWQgdmVjNCBwb3NpdGlvbjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAg
ICAgICAgInBvc2l0aW9uID0gdXY7XG4iCisgICAgICAgICJnbF9Qb3NpdGlvbiA9IHV2O1xuIgor
ICAgICAgICAifVxuIjsKKworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZywgR0xfVkVSVEVY
X1NIQURFUiwgU0hfR0xFUzNfU1BFQykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRl
ciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7
CisgICAgfQorfQorCisvLyBDZW50cm9pZCBpbiBpcyB0aGUgY29ycmVjdCBvcmRlci4gSW4gY2Vu
dHJvaWQgaXMgaW5jb3JyZWN0LgorVEVTVF9GKFF1YWxpZmljYXRpb25PcmRlclNoYWRlclRlc3Qs
IFdyb25nT3JkZXJDZW50cm9pZEluKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJT
dHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgImluIGNlbnRyb2lkIHZlYzQgY29sb3JJTjtcbiIK
KyAgICAgICAgIm91dCB2ZWM0IGNvbG9yT1VUO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xu
IgorICAgICAgICAiY29sb3JPVVQgPSBjb2xvcklOO1xuIgorICAgICAgICAifVxuIjsKKworICAg
IGlmIChjb21waWxlKHNoYWRlclN0cmluZywgR0xfRlJBR01FTlRfU0hBREVSLCBTSF9HTEVTM19T
UEVDKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2Nl
ZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIFR5
cGUgY2Fubm90IGJlIGJlZm9yZSB0aGUgc3RvcmFnZSBxdWFsaWZpZXIuCitURVNUX0YoUXVhbGlm
aWNhdGlvbk9yZGVyU2hhZGVyVGVzdCwgV3JvbmdPcmRlclR5cGVTdG9yYWdlKQoreworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVz
XG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgImNlbnRy
b2lkIGluIHZlYzQgY29sb3JJTjtcbiIKKyAgICAgICAgInZlYzQgb3V0IGNvbG9yT1VUO1xuIgor
ICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiY29sb3JPVVQgPSBjb2xvcklOO1xu
IgorICAgICAgICAifVxuIjsKKworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZywgR0xfRlJB
R01FTlRfU0hBREVSLCBTSF9HTEVTM19TUEVDKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAi
U2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5m
b0xvZzsKKyAgICB9Cit9CisKKy8vIEEgdmFyaWFibGUgY2Fubm90IGhhdmUgdHdvIGNvbmZsaWN0
aW5nIHN0b3JhZ2UgcXVhbGlmaWVycy4KK1RFU1RfRihRdWFsaWZpY2F0aW9uT3JkZXJTaGFkZXJU
ZXN0LCBSZXBlYXRpbmdEaWZmZXJlbnRTdG9yYWdlUXVhbGlmaWVycykKK3sKKyAgICBjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgor
ICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJjZW50cm9pZCBp
biB2ZWM0IGNvbG9ySU47XG4iCisgICAgICAgICJ1bmlmb3JtIG91dCB2ZWM0IGNvbG9yT1VUO1xu
IgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiY29sb3JPVVQgPSBjb2xvcklO
O1xuIgorICAgICAgICAifVxuIjsKKworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZywgR0xf
RlJBR01FTlRfU0hBREVSLCBTSF9HTEVTM19TUEVDKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8
PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBt
SW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIEEgdmFyaWFibGUgY2Fubm90IGhhdmUgdHdvIGRpZmZl
cmVudCBsYXlvdXQgcXVhbGlmaWVycy4KK1RFU1RfRihRdWFsaWZpY2F0aW9uT3JkZXJTaGFkZXJU
ZXN0LCBSZXBlYXRpbmdMYXlvdXRRdWFsaWZpZXJzKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgImluIHZlYzQgY29sb3JJTjtcbiIK
KyAgICAgICAgImxheW91dChsb2NhdGlvbj0wKSBsYXlvdXQobG9jYXRpb249MCkgb3V0IHZlYzQg
Y29sb3JPVVQ7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICJjb2xvck9V
VCA9IGNvbG9ySU47XG4iCisgICAgICAgICJ9XG4iOworCisgICAgaWYgKGNvbXBpbGUoc2hhZGVy
U3RyaW5nLCBHTF9GUkFHTUVOVF9TSEFERVIsIFNIX0dMRVMzX1NQRUMpKQorICAgIHsKKyAgICAg
ICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFp
bHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gQSB2YXJpYWJsZSBjYW5ub3QgaGF2
ZSByZXBlYXRpbmcgaW52YXJpYW50IHF1YWxpZmllcnMuCitURVNUX0YoUXVhbGlmaWNhdGlvbk9y
ZGVyU2hhZGVyVGVzdCwgUmVwZWF0aW5nSW52YXJpYW50UXVhbGlmaWVycykKK3sKKyAgICBjb25z
dCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xu
IgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJpbiB2ZWM0
IGNvbG9ySU47XG4iCisgICAgICAgICJpbnZhcmlhbnQgaW52YXJpYW50IG91dCB2ZWM0IGNvbG9y
T1VUO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiY29sb3JPVVQgPSBj
b2xvcklOO1xuIgorICAgICAgICAifVxuIjsKKworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmlu
ZywgR0xfRlJBR01FTlRfU0hBREVSLCBTSF9HTEVTM19TUEVDKSkKKyAgICB7CisgICAgICAgIEZB
SUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUg
IiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIEEgdmFyaWFibGUgY2Fubm90IGhhdmUgcmVw
ZWF0aW5nIHN0b3JhZ2UgcXVhbGlmaWVycy4KK1RFU1RfRihRdWFsaWZpY2F0aW9uT3JkZXJTaGFk
ZXJUZXN0LCBSZXBlYXRpbmdBdHRyaWJ1dGVzKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZz
aGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAg
ICAgICJhdHRyaWJ1dGUgYXR0cmlidXRlIHZlYzQgcG9zaXRpb25JTjtcbiIKKyAgICAgICAgInZv
aWQgbWFpbigpIHtcbiIKKyAgICAgICAgImdsX1Bvc2l0aW9uID0gcG9zaXRpb25JTjtcbiIKKyAg
ICAgICAgIn1cbiI7CisKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcsIEdMX1ZFUlRFWF9T
SEFERVIsIFNIX0dMRVMzX1NQRUMpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIg
Y29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwor
ICAgIH0KK30KKworLy8gV3Jvbmcgb3JkZXIgZm9yIGludmFyaWFudCB2YXJ5aW5nLiBJdCBzaG91
bGQgYmUgJ2ludmFyaWFudCB2YXJ5aW5nJywgbm90ICd2YXJ5aW5nIGludmFyaWFudCcuCitURVNU
X0YoUXVhbGlmaWNhdGlvbk9yZGVyU2hhZGVyVGVzdCwgVmFyeWluZ0ludmFyaWFudFdyb25nT3Jk
ZXIpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgImF0dHJpYnV0ZSB2ZWM0IHBvc2l0
aW9uSU47XG4iCisgICAgICAgICJ2YXJ5aW5nIGludmFyaWFudCB2ZWM0IGRhdGFPVVQ7XG4iCisg
ICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICJnbF9Qb3NpdGlvbiA9IHBvc2l0aW9u
SU47XG4iCisgICAgICAgICJkYXRhT1VUID0gMC41ICogZGF0YU9VVCArIHZlYzQoMC41KTtcbiIK
KyAgICAgICAgIn1cbiI7CisKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcsIEdMX1ZFUlRF
WF9TSEFERVIsIFNIX0dMRVMzX1NQRUMpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFk
ZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9n
OworICAgIH0KK30KKworLy8gQSB2YXJpYWJsZSBjYW5ub3QgaGF2ZSByZXBlYXRpbmcgc3RvcmFn
ZSBxdWFsaWZpZXJzLgorVEVTVF9GKFF1YWxpZmljYXRpb25PcmRlclNoYWRlclRlc3QsIEF0dHJp
YnV0ZVZhcnlpbmdNaXgpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZzEg
PQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJhdHRyaWJ1
dGUgdmFyeWluZyB2ZWM0IHBvc2l0aW9uSU47XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4i
CisgICAgICAgICJnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uSU47XG4iCisgICAgICAgICJ9XG4iOwor
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZzIgPQorICAgICAgICAicHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ2YXJ5aW5nIGF0dHJpYnV0ZSB2ZWM0IHBv
c2l0aW9uSU47XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICJnbF9Qb3Np
dGlvbiA9IHBvc2l0aW9uSU47XG4iCisgICAgICAgICJ9XG4iOworCisgICAgaWYgKGNvbXBpbGUo
c2hhZGVyU3RyaW5nMSwgR0xfVkVSVEVYX1NIQURFUiwgU0hfR0xFUzNfU1BFQykpCisgICAgewor
ICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGlu
ZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorCisgICAgaWYgKGNvbXBpbGUoc2hhZGVy
U3RyaW5nMiwgR0xfVkVSVEVYX1NIQURFUiwgU0hfR0xFUzNfU1BFQykpCisgICAgeworICAgICAg
ICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWls
dXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBBIHZhcmlhYmxlIGNhbm5vdCBoYXZl
IHJlcGVhdGluZyBpbnRlcnBvbGF0aW9uIHF1YWxpZmllcnMuCitURVNUX0YoUXVhbGlmaWNhdGlv
bk9yZGVyU2hhZGVyVGVzdCwgUmVwZWF0aW5nSW50ZXJwb2xhdGlvblF1YWxpZmllcnMpCit7Cisg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAz
MDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAi
aW4gdmVjNCBwb3NpdGlvbklOO1xuIgorICAgICAgICAiZmxhdCBmbGF0IG91dCB2ZWM0IGRhdGFP
VVQ7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICJnbF9Qb3NpdGlvbiA9
IHBvc2l0aW9uSU47XG4iCisgICAgICAgICJkYXRhT1VUID0gMC41ICogZGF0YU9VVCArIHZlYzQo
MC41KTtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcs
IEdMX1ZFUlRFWF9TSEFERVIsIFNIX0dMRVMzX1NQRUMpKQorICAgIHsKKyAgICAgICAgRkFJTCgp
IDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8
IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gV3Jvbmcgb3JkZXIgZm9yIHRoZSBpbnRlcnBvbGF0
aW9uIGFuZCBzdG9yYWdlIHF1YWxpZmllci4gVGhlIGNvcnJlY3Qgb3JkZXIgaXMgaW50ZXJwb2xh
dGlvbgorLy8gcXVhbGlmaWVyIGFuZCB0aGVuIHN0b3JhZ2UgcXVhbGlmaWVyLgorVEVTVF9GKFF1
YWxpZmljYXRpb25PcmRlclNoYWRlclRlc3QsIFdyb25nT3JkZXJJbnRlcnBvbGF0aW9uU3RvcmFn
ZVF1YWxpZmllcnMpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Cisg
ICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0O1xuIgorICAgICAgICAiaW4gdmVjNCBwb3NpdGlvbklOO1xuIgorICAgICAgICAib3V0IGZs
YXQgdmVjNCBkYXRhT1VUO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAi
Z2xfUG9zaXRpb24gPSBwb3NpdGlvbklOO1xuIgorICAgICAgICAiZGF0YU9VVCA9IDAuNSAqIGRh
dGFPVVQgKyB2ZWM0KDAuNSk7XG4iCisgICAgICAgICJ9XG4iOworCisgICAgaWYgKGNvbXBpbGUo
c2hhZGVyU3RyaW5nLCBHTF9WRVJURVhfU0hBREVSLCBTSF9HTEVTM19TUEVDKSkKKyAgICB7Cisg
ICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5n
IGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIFRoZSBjb3JyZWN0IG9yZGVy
IGlzIGludmFyaWFudCwgaW50ZXJwb2xhdGlvbiwgc3RvcmFnZS4KK1RFU1RfRihRdWFsaWZpY2F0
aW9uT3JkZXJTaGFkZXJUZXN0LCBXcm9uZ09yZGVySW52YXJpYW50SW50ZXJwb2xhdGlvblN0b3Jh
Z2VRdWFsaWZpZXJzKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQor
ICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDtcbiIKKyAgICAgICAgImluIHZlYzQgcG9zaXRpb25JTjtcbiIKKyAgICAgICAgImZsYXQg
aW52YXJpYW50IG91dCB2ZWM0IGRhdGFPVVQ7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4i
CisgICAgICAgICJnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uSU47XG4iCisgICAgICAgICJkYXRhT1VU
ID0gMC41ICogZGF0YU9VVCArIHZlYzQoMC41KTtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBp
ZiAoY29tcGlsZShzaGFkZXJTdHJpbmcsIEdMX1ZFUlRFWF9TSEFERVIsIFNIX0dMRVMzX1NQRUMp
KQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVk
LCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gVGhlIGlu
dmFyaWFudCBxdWFsaWZlciBoYXMgdG8gYmUgYmVmb3JlIHRoZSBzdG9yYWdlIHF1YWxpZmllcnMu
CitURVNUX0YoUXVhbGlmaWNhdGlvbk9yZGVyU2hhZGVyVGVzdCwgV3JvbmdPcmRlckludmFyaWFu
dE5vdEZpcnN0KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAg
ICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDtcbiIKKyAgICAgICAgImluIHZlYzQgcG9zaXRpb25JTjtcbiIKKyAgICAgICAgImNlbnRyb2lk
IG91dCBpbnZhcmlhbnQgdmVjNCBkYXRhT1VUO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xu
IgorICAgICAgICAiZ2xfUG9zaXRpb24gPSBwb3NpdGlvbklOO1xuIgorICAgICAgICAiZGF0YU9V
VCA9IDAuNSAqIGRhdGFPVVQgKyB2ZWM0KDAuNSk7XG4iCisgICAgICAgICJ9XG4iOworCisgICAg
aWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nLCBHTF9WRVJURVhfU0hBREVSLCBTSF9HTEVTM19TUEVD
KSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRl
ZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIFRoZSBw
cmVjaXNpb24gcXVhbGlmaWVyIGlzIGFmdGVyIHRoZSBzdG9yYWdlIHF1YWxpZmllcnMuCitURVNU
X0YoUXVhbGlmaWNhdGlvbk9yZGVyU2hhZGVyVGVzdCwgV3JvbmdPcmRlclByZWNpc2lvbikKK3sK
KyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9u
IDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAg
ICJpbiB2ZWM0IHBvc2l0aW9uSU47XG4iCisgICAgICAgICJoaWdocCBjZW50cm9pZCBvdXQgdmVj
NCBkYXRhT1VUO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiZ2xfUG9z
aXRpb24gPSBwb3NpdGlvbklOO1xuIgorICAgICAgICAiZGF0YU9VVCA9IDAuNSAqIGRhdGFPVVQg
KyB2ZWM0KDAuNSk7XG4iCisgICAgICAgICJ9XG4iOworCisgICAgaWYgKGNvbXBpbGUoc2hhZGVy
U3RyaW5nLCBHTF9WRVJURVhfU0hBREVSLCBTSF9HTEVTM19TUEVDKSkKKyAgICB7CisgICAgICAg
IEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1
cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIEEgdmFyaWFibGUgY2Fubm90IGhhdmUg
bXVsdGlwbGUgZGVjbGFyYXRpb25zIG9mIHRoZSAnaW4nIHN0b3JhZ2UgcXVhbGlmaWVyLgorVEVT
VF9GKFF1YWxpZmljYXRpb25PcmRlclNoYWRlclRlc3QsIFJlcGVhdGluZ0luUXVhbGlmaWVyKQor
eworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNp
b24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAg
ICAgImluIGluIHZlYzQgcG9zaXRpb25JTjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIK
KyAgICAgICAgImdsX1Bvc2l0aW9uID0gcG9zaXRpb25JTjtcbiIKKyAgICAgICAgIn1cbiI7CisK
KyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcsIEdMX1ZFUlRFWF9TSEFERVIsIFNIX0dMRVMz
X1NQRUMpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3Vj
Y2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8g
QSB2YXJpYWJsZSBjYW5ub3QgaGF2ZSBtdWx0aXBsZSBkZWNsYXJhdGlvbnMgb2YgdGhlICdhdHRy
aWJ1dGUnIHN0b3JhZ2UgcXVhbGlmaWVyLgorVEVTVF9GKFF1YWxpZmljYXRpb25PcmRlclNoYWRl
clRlc3QsIFJlcGVhdGluZ0F0dHJpYnV0ZVF1YWxpZmllcikKK3sKKyAgICBjb25zdCBzdGQ6OnN0
cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xu
IgorICAgICAgICAiYXR0cmlidXRlIGF0dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uSU47XG4iCisgICAg
ICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICJnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uSU47
XG4iCisgICAgICAgICJ9XG4iOworCisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nLCBHTF9W
RVJURVhfU0hBREVSLCBTSF9HTEVTM19TUEVDKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAi
U2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5m
b0xvZzsKKyAgICB9Cit9CisKKy8vIFZlcnRleCBpbnB1dCBjYW5ub3QgYmUgcXVhbGlmaWVkIHdp
dGggaW52YXJpYW50LgorVEVTVF9GKFF1YWxpZmljYXRpb25PcmRlclNoYWRlclRlc3QsIEludmFy
aWFudFZlcnRleElucHV0KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcg
PQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJpbnZhcmlh
bnQgYXR0cmlidXRlIHZlYzQgcG9zaXRpb25JTjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtc
biIKKyAgICAgICAgImdsX1Bvc2l0aW9uID0gcG9zaXRpb25JTjtcbiIKKyAgICAgICAgIn1cbiI7
CisKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcsIEdMX1ZFUlRFWF9TSEFERVIsIFNIX0dM
RVMzX1NQRUMpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24g
c3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKwor
Ly8gQ2Fubm90IGhhdmUgYSBmdW5jdGlvbiBwYXJhbWV0ZXIgd2l0aCB0aGUgaW52YXJpYW50IHF1
YWxpZmllci4KK1RFU1RfRihRdWFsaWZpY2F0aW9uT3JkZXJTaGFkZXJUZXN0LCBJbnZhbGlkRnVu
Y3Rpb25QYXJhbWV0ZXJzSW52YXJpYW50KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFk
ZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIGxvd3AgZmxvYXQ7XG4iCisgICAgICAgICJ2
YXJ5aW5nIGZsb2F0IHZhbHVlO1xuIgorICAgICAgICAiZmxvYXQgZm9vMCAoaW52YXJpYW50IGlu
IGZsb2F0IHgpIHtcbiIKKyAgICAgICAgIiAgIHJldHVybiAyLjAqeDtcbiIKKyAgICAgICAgIn1c
biIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIJZ2xf
RnJhZ0NvbG9yID0gdmVjNChmb28wKHZhbHVlKSk7XG4iCisgICAgICAgICJ9XG4iOworCisgICAg
aWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nLCBHTF9GUkFHTUVOVF9TSEFERVIsIFNIX0dMRVMzX1NQ
RUMpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2Vl
ZGVkLCBleHBlY3RpbmcgZmFpbHVyZSIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBDYW5u
b3QgaGF2ZSBhIGZ1bmN0aW9uIHBhcmFtZXRlciB3aXRoIHRoZSBhdHRyaWJ1dGUgcXVhbGlmaWVy
LgorVEVTVF9GKFF1YWxpZmljYXRpb25PcmRlclNoYWRlclRlc3QsIEludmFsaWRGdW5jdGlvblBh
cmFtZXRlcnNBdHRyaWJ1dGUpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmlu
ZyA9CisgICAgICAgICJwcmVjaXNpb24gbG93cCBmbG9hdDtcbiIKKyAgICAgICAgInZhcnlpbmcg
ZmxvYXQgdmFsdWU7XG4iCisgICAgICAgICJmbG9hdCBmb28wIChhdHRyaWJ1dGUgZmxvYXQgeCkg
e1xuIgorICAgICAgICAiICAgcmV0dXJuIDIuMCp4O1xuIgorICAgICAgICAifVxuIgorICAgICAg
ICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIglnbF9GcmFnQ29sb3Ig
PSB2ZWM0KGZvbzAodmFsdWUpKTtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBpZiAoY29tcGls
ZShzaGFkZXJTdHJpbmcsIEdMX0ZSQUdNRU5UX1NIQURFUiwgU0hfR0xFUzNfU1BFQykpCisgICAg
eworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVj
dGluZyBmYWlsdXJlIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIENhbm5vdCBoYXZlIGEg
ZnVuY3Rpb24gcGFyYW1ldGVyIHdpdGggdGhlIHZhcnlpbmcgcXVhbGlmaWVyLgorVEVTVF9GKFF1
YWxpZmljYXRpb25PcmRlclNoYWRlclRlc3QsIEludmFsaWRGdW5jdGlvblBhcmFtZXRlcnNWYXJ5
aW5nKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAi
cHJlY2lzaW9uIGxvd3AgZmxvYXQ7XG4iCisgICAgICAgICJ2YXJ5aW5nIGZsb2F0IHZhbHVlO1xu
IgorICAgICAgICAiZmxvYXQgZm9vMCAodmFyeWluZyBmbG9hdCB4KSB7XG4iCisgICAgICAgICIg
ICByZXR1cm4gMi4wKng7XG4iCisgICAgICAgICJ9XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxu
IgorICAgICAgICAie1xuIgorICAgICAgICAiCWdsX0ZyYWdDb2xvciA9IHZlYzQoZm9vMCh2YWx1
ZSkpO1xuIgorICAgICAgICAifVxuIjsKKworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZywg
R0xfRlJBR01FTlRfU0hBREVSLCBTSF9HTEVTM19TUEVDKSkKKyAgICB7CisgICAgICAgIEZBSUwo
KSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUiIDw8
IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gQ2Fubm90IGhhdmUgYSBmdW5jdGlvbiBwYXJhbWV0
ZXIgd2l0aCB0aGUgbGF5b3V0IHF1YWxpZmllcgorVEVTVF9GKFF1YWxpZmljYXRpb25PcmRlclNo
YWRlclRlc3QsIEludmFsaWRGdW5jdGlvblBhcmFtZXRlcnNMYXlvdXQpCit7CisgICAgY29uc3Qg
c3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIK
KyAgICAgICAgInByZWNpc2lvbiBsb3dwIGZsb2F0O1xuIgorICAgICAgICAiaW4gZmxvYXQgdmFs
dWU7XG4iCisgICAgICAgICJmbG9hdCBmb28wIChsYXlvdXQobG9jYXRpb24gPSAzKSBpbiBmbG9h
dCB4KSB7XG4iCisgICAgICAgICIgICByZXR1cm4gMi4wKng7XG4iCisgICAgICAgICJ9XG4iCisg
ICAgICAgICJvdXQgdmVjNCBjb2xvck9VVDtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisg
ICAgICAgICJ7XG4iCisgICAgICAgICIJY29sb3JPVVQgPSB2ZWM0KGZvbzAodmFsdWUpKTtcbiIK
KyAgICAgICAgIn1cbiI7CisKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcsIEdMX0ZSQUdN
RU5UX1NIQURFUiwgU0hfR0xFUzNfU1BFQykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNo
YWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlIiA8PCBtSW5mb0xv
ZzsKKyAgICB9Cit9CisKKy8vIENhbm5vdCBoYXZlIGEgZnVuY3Rpb24gcGFyYW1ldGVyIHdpdGgg
dGhlIGNlbnRyb2lkIHF1YWxpZmllcgorVEVTVF9GKFF1YWxpZmljYXRpb25PcmRlclNoYWRlclRl
c3QsIEludmFsaWRGdW5jdGlvblBhcmFtZXRlcnNDZW50cm9pZEluKQoreworICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisg
ICAgICAgICJwcmVjaXNpb24gbG93cCBmbG9hdDtcbiIKKyAgICAgICAgImluIGZsb2F0IHZhbHVl
O1xuIgorICAgICAgICAiZmxvYXQgZm9vMCAoY2VudHJvaWQgaW4gZmxvYXQgeCkge1xuIgorICAg
ICAgICAiICAgcmV0dXJuIDIuMCp4O1xuIgorICAgICAgICAifVxuIgorICAgICAgICAib3V0IHZl
YzQgY29sb3JPVVQ7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgor
ICAgICAgICAiCWNvbG9yT1VUID0gdmVjNChmb28wKHZhbHVlKSk7XG4iCisgICAgICAgICJ9XG4i
OworCisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nLCBHTF9GUkFHTUVOVF9TSEFERVIsIFNI
X0dMRVMzX1NQRUMpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRp
b24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSIgPDwgbUluZm9Mb2c7CisgICAgfQorfQor
CisvLyBDYW5ub3QgaGF2ZSBhIGZ1bmN0aW9uIHBhcmFtZXRlciB3aXRoIHRoZSBmbGF0IHF1YWxp
ZmllcgorVEVTVF9GKFF1YWxpZmljYXRpb25PcmRlclNoYWRlclRlc3QsIEludmFsaWRGdW5jdGlv
blBhcmFtZXRlcnNGbGF0SW4pCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmlu
ZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBsb3dw
IGZsb2F0O1xuIgorICAgICAgICAiaW4gZmxvYXQgdmFsdWU7XG4iCisgICAgICAgICJmbG9hdCBm
b28wIChmbGF0IGluIGZsb2F0IHgpIHtcbiIKKyAgICAgICAgIiAgIHJldHVybiAyLjAqeDtcbiIK
KyAgICAgICAgIn1cbiIKKyAgICAgICAgIm91dCB2ZWM0IGNvbG9yT1VUO1xuIgorICAgICAgICAi
dm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIgljb2xvck9VVCA9IHZlYzQo
Zm9vMCh2YWx1ZSkpO1xuIgorICAgICAgICAifVxuIjsKKworICAgIGlmIChjb21waWxlKHNoYWRl
clN0cmluZywgR0xfRlJBR01FTlRfU0hBREVSLCBTSF9HTEVTM19TUEVDKSkKKyAgICB7CisgICAg
ICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZh
aWx1cmUiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gT3V0cHV0IGxheW91dCBsb2NhdGlv
biBxdWFsaWZpZXIgY2FuJ3QgYXBwZWFyIG1vcmUgdGhhbiBvbmNlIHdpdGhpbiBhIGRlY2xhcmF0
aW9uLgorLy8gR0xTTCBFUyAzLjAwLjYgc2VjdGlvbiA0LjMuOC4yIE91dHB1dCBMYXlvdXQgUXVh
bGlmaWVycy4KK1RFU1RfRihRdWFsaWZpY2F0aW9uT3JkZXJTaGFkZXJUZXN0LCBUd29PdXRwdXRM
b2NhdGlvbnMpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAg
ICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
O1xuIgorICAgICAgICAibGF5b3V0KGxvY2F0aW9uPTEsIGxvY2F0aW9uPTIpIG91dCB2ZWM0IG15
Q29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICJ9XG4iOworCisg
ICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nLCBHTF9GUkFHTUVOVF9TSEFERVIsIFNIX0dMRVMz
X1NQRUMpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3Vj
Y2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9SZWNvcmRD
b25zdGFudFByZWNpc2lvbl90ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvUmVjb3JkQ29uc3RhbnRQcmVjaXNpb25f
dGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2NvbXBpbGVyX3Rlc3RzL1JlY29yZENvbnN0YW50UHJlY2lzaW9uX3Rlc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsOTMgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gUmVjb3JkQ29uc3Rh
bnRQcmVjaXNpb25fdGVzdC5jcHA6CisvLyAgIFRlc3QgZm9yIHJlY29yZGluZyBjb25zdGFudCB2
YXJpYWJsZSBwcmVjaXNpb24gd2hlbiBpdCBhZmZlY3RzIGNvbnN1bWluZyBleHByZXNzaW9uLgor
Ly8KKworI2luY2x1ZGUgImFuZ2xlX2dsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNp
bmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKKyNpbmNsdWRlICJ0ZXN0cy90ZXN0X3V0aWxz
L2NvbXBpbGVyX3Rlc3QuaCIKKworY2xhc3MgUmVjb3JkQ29uc3RhbnRQcmVjaXNpb25UZXN0IDog
cHVibGljIE1hdGNoT3V0cHV0Q29kZVRlc3QKK3sKKyAgcHVibGljOgorICAgIFJlY29yZENvbnN0
YW50UHJlY2lzaW9uVGVzdCgpIDogTWF0Y2hPdXRwdXRDb2RlVGVzdChHTF9GUkFHTUVOVF9TSEFE
RVIsIDAsIFNIX0VTU0xfT1VUUFVUKSB7fQorfTsKKworLy8gVGhlIGNvbnN0YW50IGNhbm5vdCBi
ZSBmb2xkZWQgaWYgaXRzIHByZWNpc2lvbiBpcyBoaWdoZXIgdGhhbiB0aGUgb3RoZXIgb3BlcmFu
ZHMsIHNpbmNlIGl0CisvLyBpbmNyZWFzZXMgdGhlIHByZWNpc2lvbiBvZiB0aGUgY29uc3VtaW5n
IGV4cHJlc3Npb24uCitURVNUX0YoUmVjb3JkQ29uc3RhbnRQcmVjaXNpb25UZXN0LCBIaWdoZXJQ
cmVjaXNpb25Db25zdGFudEFzUGFyYW1ldGVyKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZz
aGFkZXJTdHJpbmcgPQorICAgICAgICAidW5pZm9ybSBtZWRpdW1wIGZsb2F0IHU7IgorICAgICAg
ICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBjb25zdCBoaWdo
cCBmbG9hdCBhID0gNDA5Ni41O1xuIgorICAgICAgICAiICAgIG1lZGl1bXAgZmxvYXQgYiA9IGZy
YWN0KGEgKyB1KTtcbiIKKyAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGIpO1xuIgor
ICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX1RS
VUUoZm91bmRJbkNvZGUoImNvbnN0IGhpZ2hwIGZsb2F0IHMiKSk7CisgICAgQVNTRVJUX0ZBTFNF
KGZvdW5kSW5Db2RlKCJmcmFjdCg0MDk2LjUiKSk7CisgICAgQVNTRVJUX0ZBTFNFKGZvdW5kSW5D
b2RlKCJmcmFjdCgoNDA5Ni41IikpOworfQorCisvLyBUaGUgY29uc3RhbnQgY2FuIGJlIGZvbGRl
ZCBpZiBpdHMgcHJlY2lzaW9uIGlzIGVxdWFsIHRvIHRoZSBvdGhlciBvcGVyYW5kcywgYXMgaXQg
ZG9lcyBub3QKKy8vIGluY3JlYXNlIHRoZSBwcmVjaXNpb24gb2YgdGhlIGNvbnN1bWluZyBleHBy
ZXNzaW9uLgorVEVTVF9GKFJlY29yZENvbnN0YW50UHJlY2lzaW9uVGVzdCwgRXF1YWxQcmVjaXNp
b25Db25zdGFudEFzUGFyYW1ldGVyKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJT
dHJpbmcgPQorICAgICAgICAidW5pZm9ybSBtZWRpdW1wIGZsb2F0IHU7IgorICAgICAgICAidm9p
ZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBjb25zdCBtZWRpdW1wIGZs
b2F0IGEgPSA0MDk2LjU7XG4iCisgICAgICAgICIgICAgbWVkaXVtcCBmbG9hdCBiID0gZnJhY3Qo
YSArIHUpO1xuIgorICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoYik7XG4iCisgICAg
ICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBBU1NFUlRfRkFMU0Uo
Zm91bmRJbkNvZGUoImNvbnN0IG1lZGl1bXAgZmxvYXQgcyIpKTsKKyAgICBBU1NFUlRfVFJVRShm
b3VuZEluQ29kZSgiZnJhY3QoKDQwOTYuNSIpKTsKK30KKworLy8gVGhlIGNvbnN0YW50IGNhbm5v
dCBiZSBmb2xkZWQgaWYgaXRzIHByZWNpc2lvbiBpcyBoaWdoZXIgdGhhbiB0aGUgb3RoZXIgb3Bl
cmFuZHMsIHNpbmNlIGl0CisvLyBpbmNyZWFzZXMgdGhlIHByZWNpc2lvbiBvZiB0aGUgY29uc3Vt
aW5nIGV4cHJlc3Npb24uIFRoaXMgYXBwbGllcyBhbHNvIHdoZW4gdGhlIGNvbnN0YW50IGlzCisv
LyBwYXJ0IG9mIGEgY29uc3RhbnQgZXhwcmVzc2lvbiB0aGF0IGNhbiBiZSBmb2xkZWQuCitURVNU
X0YoUmVjb3JkQ29uc3RhbnRQcmVjaXNpb25UZXN0LCBGb2xkZWRCaW5hcnlDb25zdGFudFByZWNp
c2lvbklzSGlnaGVyKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQor
ICAgICAgICAidW5pZm9ybSBtZWRpdW1wIGZsb2F0IHU7IgorICAgICAgICAidm9pZCBtYWluKClc
biIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBjb25zdCBoaWdocCBmbG9hdCBhID0gNDA5
NS41O1xuIgorICAgICAgICAiICAgIG1lZGl1bXAgZmxvYXQgYiA9IGZyYWN0KChhICsgMS4wKSAr
IHUpO1xuIgorICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoYik7XG4iCisgICAgICAg
ICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBBU1NFUlRfVFJVRShmb3Vu
ZEluQ29kZSgiY29uc3QgaGlnaHAgZmxvYXQgcyIpKTsKKyAgICBBU1NFUlRfRkFMU0UoZm91bmRJ
bkNvZGUoImZyYWN0KDQwOTYuNSIpKTsKKyAgICBBU1NFUlRfRkFMU0UoZm91bmRJbkNvZGUoImZy
YWN0KCg0MDk2LjUiKSk7Cit9CisKKworLy8gVGhlIGNvbnN0YW50IGNhbm5vdCBiZSBmb2xkZWQg
aWYgaXRzIHByZWNpc2lvbiBpcyBoaWdoZXIgdGhhbiB0aGUgb3RoZXIgb3BlcmFuZHMsIHNpbmNl
IGl0CisvLyBpbmNyZWFzZXMgdGhlIHByZWNpc2lvbiBvZiB0aGUgY29uc3VtaW5nIGV4cHJlc3Np
b24uIFRoaXMgYXBwbGllcyBhbHNvIHdoZW4gdGhlIGNvbnN0YW50IGlzCisvLyBwYXJ0IG9mIGEg
Y29uc3RhbnQgZXhwcmVzc2lvbiB0aGF0IGNhbiBiZSBmb2xkZWQuCitURVNUX0YoUmVjb3JkQ29u
c3RhbnRQcmVjaXNpb25UZXN0LCBGb2xkZWRVbmFyeUNvbnN0YW50UHJlY2lzaW9uSXNIaWdoZXIp
Cit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJ1bmlm
b3JtIG1lZGl1bXAgZmxvYXQgdTsiCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAi
e1xuIgorICAgICAgICAiICAgIGNvbnN0IGhpZ2hwIGZsb2F0IGEgPSAwLjU7XG4iCisgICAgICAg
ICIgICAgbWVkaXVtcCBmbG9hdCBiID0gc2luKGZyYWN0KGEpICsgdSk7XG4iCisgICAgICAgICIg
ICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChiKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGls
ZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5Db2RlKCJjb25zdCBoaWdo
cCBmbG9hdCBzIikpOworICAgIEFTU0VSVF9GQUxTRShmb3VuZEluQ29kZSgic2luKDAuNSIpKTsK
KyAgICBBU1NFUlRfRkFMU0UoZm91bmRJbkNvZGUoInNpbigoMC41IikpOworfQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1JlbW92ZVBvd190
ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
Y29tcGlsZXJfdGVzdHMvUmVtb3ZlUG93X3Rlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9SZW1vdmVQb3dfdGVz
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNTUgQEAKKy8vCisvLyBDb3B5cmlnaHQg
KGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8g
UmVtb3ZlUG93X3Rlc3QuY3BwOgorLy8gICBUZXN0cyBmb3IgcmVtb3ZpbmcgcG93KCkgZnVuY3Rp
b24gY2FsbHMgZnJvbSB0aGUgQVNULgorLy8KKworI2luY2x1ZGUgImFuZ2xlX2dsLmgiCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKKyNp
bmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL05vZGVTZWFyY2guaCIKKyNpbmNsdWRlICJjb21w
aWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JHTFNMLmgiCisKK2NsYXNzIFJlbW92ZVBvd1Rlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdAoreworICBwdWJsaWM6CisgICAgUmVtb3ZlUG93VGVzdCgp
IHt9CisKKyAgcHJvdGVjdGVkOgorICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgYWxsb2NhdG9yLnB1c2goKTsKKyAgICAgICAgU2V0R2xvYmFsUG9vbEFsbG9jYXRvcigm
YWxsb2NhdG9yKTsKKyAgICAgICAgU2hCdWlsdEluUmVzb3VyY2VzIHJlc291cmNlczsKKyAgICAg
ICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmcmVzb3VyY2VzKTsKKyAgICAgICAgbVRyYW5zbGF0
b3JHTFNMID0gbmV3IFRyYW5zbGF0b3JHTFNMKEdMX0ZSQUdNRU5UX1NIQURFUiwgU0hfR0xFUzJf
U1BFQywgU0hfR0xTTF9DT01QQVRJQklMSVRZX09VVFBVVCk7CisgICAgICAgIEFTU0VSVF9UUlVF
KG1UcmFuc2xhdG9yR0xTTC0+SW5pdChyZXNvdXJjZXMpKTsKKyAgICB9CisKKyAgICB2b2lkIFRl
YXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFNhZmVEZWxldGUobVRyYW5zbGF0b3JH
TFNMKTsKKyAgICAgICAgU2V0R2xvYmFsUG9vbEFsbG9jYXRvcihudWxscHRyKTsKKyAgICAgICAg
YWxsb2NhdG9yLnBvcCgpOworICAgIH0KKworICAgIHZvaWQgY29tcGlsZShjb25zdCBzdGQ6OnN0
cmluZyYgc2hhZGVyU3RyaW5nKQorICAgIHsKKyAgICAgICAgY29uc3QgY2hhciAqc2hhZGVyU3Ry
aW5nc1tdID0geyBzaGFkZXJTdHJpbmcuY19zdHIoKSB9OworICAgICAgICBtQVNUUm9vdCA9IG1U
cmFuc2xhdG9yR0xTTC0+Y29tcGlsZVRyZWVGb3JUZXN0aW5nKHNoYWRlclN0cmluZ3MsIDEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U0hfT0JKRUNUX0NPREUgfCBTSF9SRU1PVkVfUE9XX1dJVEhfQ09OU1RBTlRfRVhQT05FTlQpOwor
ICAgICAgICBpZiAoIW1BU1RSb290KQorICAgICAgICB7CisgICAgICAgICAgICBUSW5mb1Npbmsg
JmluZm9TaW5rID0gbVRyYW5zbGF0b3JHTFNMLT5nZXRJbmZvU2luaygpOworICAgICAgICAgICAg
RkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gaW50byBFU1NMIGZhaWxlZCAiIDw8IGluZm9T
aW5rLmluZm8uY19zdHIoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFz
cyBUPgorICAgIGJvb2wgZm91bmRJbkFTVCgpCisgICAgeworICAgICAgICByZXR1cm4gVDo6c2Vh
cmNoKG1BU1RSb290KTsKKyAgICB9CisKKyAgcHJpdmF0ZToKKyAgICBUcmFuc2xhdG9yR0xTTCAq
bVRyYW5zbGF0b3JHTFNMOworICAgIFRJbnRlcm1Ob2RlICptQVNUUm9vdDsKKworICAgIFRQb29s
QWxsb2NhdG9yIGFsbG9jYXRvcjsKK307CisKKy8vIENoZWNrIGlmIHRoZXJlJ3MgYSBwb3coKSBu
b2RlIGFueXdoZXJlIGluIHRoZSB0cmVlLgorY2xhc3MgRmluZFBvdyA6IHB1YmxpYyBzaDo6Tm9k
ZVNlYXJjaFRyYXZlcnNlcjxGaW5kUG93PgoreworICBwdWJsaWM6CisgICAgYm9vbCB2aXNpdEJp
bmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIGlmIChub2RlLT5nZXRPcCgpID09IEVPcFBvdykKKyAgICAgICAgeworICAgICAgICAg
ICAgbUZvdW5kID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gIW1Gb3VuZDsKKyAg
ICB9Cit9OworCisvLyBDaGVjayBpZiB0aGUgdHJlZSBzdGFydGluZyBhdCBub2RlIGNvcnJlc3Bv
bmRzIHRvIGV4cDIoeSAqIGxvZzIoeCkpCisvLyBJZiB0aGUgdHJlZSBtYXRjaGVzLCBzZXQgYmFz
ZSB0byB0aGUgbm9kZSBjb3JyZXNwb25kaW5nIHRvIHguCitib29sIElzUG93V29ya2Fyb3VuZChU
SW50ZXJtTm9kZSAqbm9kZSwgVEludGVybU5vZGUgKipiYXNlKQoreworICAgIFRJbnRlcm1VbmFy
eSAqZXhwID0gbm9kZS0+Z2V0QXNVbmFyeU5vZGUoKTsKKyAgICBpZiAoZXhwICE9IG51bGxwdHIg
JiYgZXhwLT5nZXRPcCgpID09IEVPcEV4cDIpCisgICAgeworICAgICAgICBUSW50ZXJtQmluYXJ5
ICptdWwgPSBleHAtPmdldE9wZXJhbmQoKS0+Z2V0QXNCaW5hcnlOb2RlKCk7CisgICAgICAgIGlm
IChtdWwgIT0gbnVsbHB0ciAmJiBtdWwtPmlzTXVsdGlwbGljYXRpb24oKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgVEludGVybVVuYXJ5ICpsb2cgPSBtdWwtPmdldFJpZ2h0KCktPmdldEFzVW5h
cnlOb2RlKCk7CisgICAgICAgICAgICBpZiAobXVsLT5nZXRMZWZ0KCktPmdldEFzQ29uc3RhbnRV
bmlvbigpICYmIGxvZyAhPSBudWxscHRyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGlmIChsb2ctPmdldE9wKCkgPT0gRU9wTG9nMikKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChiYXNlKQorICAgICAgICAgICAgICAgICAgICAgICAgKmJhc2UgPSBs
b2ctPmdldE9wZXJhbmQoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KKworLy8gQ2hlY2sgaWYgdGhlcmUncyBhIG5vZGUgd2l0aCB0aGUgY29ycmVj
dCB3b3JrYXJvdW5kIHRvIHBvdyBhbnl3aGVyZSBpbiB0aGUgdHJlZS4KK2NsYXNzIEZpbmRQb3dX
b3JrYXJvdW5kIDogcHVibGljIHNoOjpOb2RlU2VhcmNoVHJhdmVyc2VyPEZpbmRQb3dXb3JrYXJv
dW5kPgoreworICBwdWJsaWM6CisgICAgYm9vbCB2aXNpdFVuYXJ5KFZpc2l0IHZpc2l0LCBUSW50
ZXJtVW5hcnkgKm5vZGUpIG92ZXJyaWRlCisgICAgeworICAgICAgICBtRm91bmQgPSBJc1Bvd1dv
cmthcm91bmQobm9kZSwgbnVsbHB0cik7CisgICAgICAgIHJldHVybiAhbUZvdW5kOworICAgIH0K
K307CisKKy8vIENoZWNrIGlmIHRoZXJlJ3MgYSBub2RlIHdpdGggdGhlIGNvcnJlY3Qgd29ya2Fy
b3VuZCB0byBwb3cgd2l0aCBhbm90aGVyIHdvcmthcm91bmQgdG8gcG93CisvLyBuZXN0ZWQgd2l0
aGluIGl0IGFueXdoZXJlIGluIHRoZSB0cmVlLgorY2xhc3MgRmluZE5lc3RlZFBvd1dvcmthcm91
bmQgOiBwdWJsaWMgc2g6Ok5vZGVTZWFyY2hUcmF2ZXJzZXI8RmluZE5lc3RlZFBvd1dvcmthcm91
bmQ+Cit7CisgIHB1YmxpYzoKKyAgICBib29sIHZpc2l0VW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRl
cm1VbmFyeSAqbm9kZSkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFRJbnRlcm1Ob2RlICpiYXNl
ID0gbnVsbHB0cjsKKyAgICAgICAgYm9vbCBvbmVGb3VuZCA9IElzUG93V29ya2Fyb3VuZChub2Rl
LCAmYmFzZSk7CisgICAgICAgIGlmIChvbmVGb3VuZCAmJiBiYXNlKQorICAgICAgICAgICAgbUZv
dW5kID0gSXNQb3dXb3JrYXJvdW5kKGJhc2UsIG51bGxwdHIpOworICAgICAgICByZXR1cm4gIW1G
b3VuZDsKKyAgICB9Cit9OworCitURVNUX0YoUmVtb3ZlUG93VGVzdCwgUG93V2l0aENvbnN0YW50
RXhwb25lbnQpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAg
ICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gZmxvYXQg
dTtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xv
ciA9IHBvdyh2ZWM0KHUpLCB2ZWM0KDAuNSkpO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21w
aWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX0ZBTFNFKGZvdW5kSW5BU1Q8RmluZFBvdz4o
KSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFTVDxGaW5kUG93V29ya2Fyb3VuZD4oKSk7Cisg
ICAgQVNTRVJUX0ZBTFNFKGZvdW5kSW5BU1Q8RmluZE5lc3RlZFBvd1dvcmthcm91bmQ+KCkpOwor
fQorCitURVNUX0YoUmVtb3ZlUG93VGVzdCwgTmVzdGVkUG93V2l0aENvbnN0YW50RXhwb25lbnQp
Cit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gZmxvYXQgdTtcbiIKKyAg
ICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHBvdyhw
b3codmVjNCh1KSwgdmVjNCgyLjApKSwgdmVjNCgwLjUpKTtcbiIKKyAgICAgICAgIn1cbiI7Cisg
ICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VSVF9GQUxTRShmb3VuZEluQVNUPEZp
bmRQb3c+KCkpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BU1Q8RmluZE5lc3RlZFBvd1dvcmth
cm91bmQ+KCkpOworfQorCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
Y29tcGlsZXJfdGVzdHMvU2hDb21waWxlX3Rlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9TaENvbXBpbGVfdGVzdC5j
cHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2Nv
bXBpbGVyX3Rlc3RzL1NoQ29tcGlsZV90ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDgzIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFNoQ29tcGlsZV90ZXN0LmNwcAorLy8gICBUZXN0IHRo
ZSBTaENvbXBpbGUgaW50ZXJmYWNlIHdpdGggZGlmZmVyZW50IHBhcmFtZXRlcnMuCisvLworCisj
aW5jbHVkZSAiYW5nbGVfZ2wuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUg
IkdMU0xBTkcvU2hhZGVyTGFuZy5oIgorCitjbGFzcyBTaENvbXBpbGVUZXN0IDogcHVibGljIHRl
c3Rpbmc6OlRlc3QKK3sKKyAgcHVibGljOgorICAgIFNoQ29tcGlsZVRlc3QoKSB7fQorCisgIHBy
b3RlY3RlZDoKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFNoSW5p
dEJ1aWx0SW5SZXNvdXJjZXMoJm1SZXNvdXJjZXMpOworICAgICAgICBtQ29tcGlsZXIgPSBTaENv
bnN0cnVjdENvbXBpbGVyKEdMX0ZSQUdNRU5UX1NIQURFUiwgU0hfV0VCR0xfU1BFQywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSF9HTFNMX0NPTVBBVElCSUxJVFlf
T1VUUFVULCAmbVJlc291cmNlcyk7CisgICAgICAgIEFTU0VSVF9UUlVFKG1Db21waWxlciAhPSBu
dWxscHRyKSA8PCAiQ29tcGlsZXIgY291bGQgbm90IGJlIGNvbnN0cnVjdGVkLiI7CisgICAgfQor
CisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAobUNvbXBp
bGVyKQorICAgICAgICB7CisgICAgICAgICAgICBTaERlc3RydWN0KG1Db21waWxlcik7CisgICAg
ICAgICAgICBtQ29tcGlsZXIgPSBudWxscHRyOworICAgICAgICB9CisgICAgfQorCisgICAgdm9p
ZCB0ZXN0Q29tcGlsZShjb25zdCBjaGFyICoqc2hhZGVyU3RyaW5ncywgaW50IHN0cmluZ0NvdW50
LCBib29sIGV4cGVjdGF0aW9uKQorICAgIHsKKyAgICAgICAgYm9vbCBzdWNjZXNzICAgICAgICAg
ICAgICAgICAgPSBTaENvbXBpbGUobUNvbXBpbGVyLCBzaGFkZXJTdHJpbmdzLCBzdHJpbmdDb3Vu
dCwgMCk7CisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZjb21waWxlTG9nID0gU2hHZXRJbmZv
TG9nKG1Db21waWxlcik7CisgICAgICAgIEVYUEVDVF9FUShleHBlY3RhdGlvbiwgc3VjY2Vzcykg
PDwgY29tcGlsZUxvZzsKKyAgICB9CisKKyAgcHJpdmF0ZToKKyAgICBTaEJ1aWx0SW5SZXNvdXJj
ZXMgbVJlc291cmNlczsKKyAgICBTaEhhbmRsZSBtQ29tcGlsZXI7Cit9OworCisvLyBUZXN0IGNh
bGxpbmcgU2hDb21waWxlIHdpdGggbW9yZSB0aGFuIG9uZSBzaGFkZXIgc291cmNlIHN0cmluZy4K
K1RFU1RfRihTaENvbXBpbGVUZXN0LCBNdWx0aXBsZVNoYWRlclN0cmluZ3MpCit7CisgICAgY29u
c3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZzEgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iOworICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcyID0KKyAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0
KDAuMCk7XG4iCisgICAgICAgICJ9IjsKKworICAgIGNvbnN0IGNoYXIgKnNoYWRlclN0cmluZ3Nb
XSA9IHtzaGFkZXJTdHJpbmcxLmNfc3RyKCksIHNoYWRlclN0cmluZzIuY19zdHIoKX07CisKKyAg
ICB0ZXN0Q29tcGlsZShzaGFkZXJTdHJpbmdzLCAyLCB0cnVlKTsKK30KKworLy8gVGVzdCBjYWxs
aW5nIFNoQ29tcGlsZSB3aXRoIGEgdG9rZW5zIHNwbGl0IGludG8gZGlmZmVyZW50IHNoYWRlciBz
b3VyY2Ugc3RyaW5ncy4KK1RFU1RfRihTaENvbXBpbGVUZXN0LCBUb2tlbnNTcGxpdEluU2hhZGVy
U3RyaW5ncykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nMSA9CisgICAg
ICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInZvaWQgbWEiOworICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcyID0KKyAgICAgICAgImluKCkge1xuIgor
ICAgICAgICAiI2kiOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmczID0KKyAg
ICAgICAgImYgMVxuIgorICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbiIK
KyAgICAgICAgIiNlbmRpZlxuIgorICAgICAgICAifSI7CisKKyAgICBjb25zdCBjaGFyICpzaGFk
ZXJTdHJpbmdzW10gPSB7c2hhZGVyU3RyaW5nMS5jX3N0cigpLCBzaGFkZXJTdHJpbmcyLmNfc3Ry
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRlclN0cmluZzMuY19z
dHIoKX07CisKKyAgICB0ZXN0Q29tcGlsZShzaGFkZXJTdHJpbmdzLCAzLCB0cnVlKTsKK30KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9TaGFk
ZXJFeHRlbnNpb25fdGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1NoYWRlckV4dGVuc2lvbl90ZXN0LmNwcAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJf
dGVzdHMvU2hhZGVyRXh0ZW5zaW9uX3Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MjE4IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEV4dGVuc2lvbl90ZXN0LmNwcAorLy8gICBUZXN0IHRo
YXQgc2hhZGVycyBuZWVkIHZhcmlvdXMgZXh0ZW5zaW9ucyB0byBiZSBjb21waWxlZC4KKy8vCisK
KyNpbmNsdWRlICJhbmdsZV9nbC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVk
ZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCisKK3N0YXRpYyBjb25zdCBjaGFyICpGcmFnRGVwdGhF
eHRTaGRyW10gPQoreworICAgIC8vIEZpcnN0IHN0cmluZyBvZiB0aGUgc2hhZGVyLiBUaGUgcmVx
dWlyZWQgcHJhZ21hIGRlY2xhcmF0aW9uLgorICAgICIjZXh0ZW5zaW9uIEdMX0VYVF9mcmFnX2Rl
cHRoIDogZW5hYmxlXG4iLAorCisgICAgLy8gU2Vjb25kIHN0cmluZyBvZiB0aGUgc2hhZGVyLiBU
aGUgcmVzdCBvZiB0aGUgc2hhZGVyIGJvZHkuCisgICAgInZvaWQgbWFpbigpIHsgZ2xfRnJhZ0Rl
cHRoRVhUID0gMS4wOyB9XG4iCit9OworCitzdGF0aWMgY29uc3QgY2hhciAqU3RhbmREZXJpdkV4
dFNoZHJbXSA9Cit7CisgICAgLy8gRmlyc3Qgc3RyaW5nIG9mIHRoZSBzaGFkZXIuIFRoZSByZXF1
aXJlZCBwcmFnbWEgZGVjbGFyYXRpb24uCisgICAgIiNleHRlbnNpb24gR0xfT0VTX3N0YW5kYXJk
X2Rlcml2YXRpdmVzIDogZW5hYmxlXG4iLAorCisgICAgLy8gU2Vjb25kIHN0cmluZyBvZiB0aGUg
c2hhZGVyLiBUaGUgcmVzdCBvZiB0aGUgc2hhZGVyIGJvZHkuCisgICAgInByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0O1xuIgorICAgICJ2YXJ5aW5nIHZlYzIgdGV4Q29vcmQ7XG4iCisgICAgInZvaWQg
bWFpbigpIHsgZ2xfRnJhZ0NvbG9yID0gdmVjNChkRmR4KHRleENvb3JkLngpLCBkRmR5KHRleENv
b3JkLnkpLCBmd2lkdGgodGV4Q29vcmQueCksIDEuMCk7IH1cbiIKK307CisKK3N0YXRpYyBjb25z
dCBjaGFyICpUZXh0dXJlTE9EU2hkcltdID0KK3sKKyAgICAvLyBGaXJzdCBzdHJpbmcgb2YgdGhl
IHNoYWRlci4gVGhlIHJlcXVpcmVkIHByYWdtYSBkZWNsYXJhdGlvbi4KKyAgICAiI2V4dGVuc2lv
biBHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIDogZW5hYmxlXG4iLAorCisgICAgLy8gU2Vjb25k
IHN0cmluZyBvZiB0aGUgc2hhZGVyLiBUaGUgcmVzdCBvZiB0aGUgc2hhZGVyIGJvZHkuCisgICAg
InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICJ2YXJ5aW5nIHZlYzIgdGV4Q29vcmQw
djtcbiIKKyAgICAidW5pZm9ybSBmbG9hdCBsb2Q7XG4iCisgICAgInVuaWZvcm0gc2FtcGxlcjJE
IHRleDtcbiIKKyAgICAidm9pZCBtYWluKCkgeyB2ZWM0IGNvbG9yID0gdGV4dHVyZTJETG9kRVhU
KHRleCwgdGV4Q29vcmQwdiwgbG9kKTsgfVxuIgorfTsKKworY2xhc3MgU2hhZGVyRXh0ZW5zaW9u
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0Cit7CisgIHB1YmxpYzoKKyAgICBTaGFkZXJFeHRl
bnNpb25UZXN0KCkge30KKworICBwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIFNldFVwKCkK
KyAgICB7CisgICAgICAgIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoJm1SZXNvdXJjZXMpOworICAg
ICAgICBtQ29tcGlsZXIgPSBOVUxMOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93
bigpCisgICAgeworICAgICAgICBEZXN0cm95Q29tcGlsZXIoKTsKKyAgICB9CisKKyAgICB2b2lk
IERlc3Ryb3lDb21waWxlcigpCisgICAgeworICAgICAgICBpZiAobUNvbXBpbGVyKQorICAgICAg
ICB7CisgICAgICAgICAgICBTaERlc3RydWN0KG1Db21waWxlcik7CisgICAgICAgICAgICBtQ29t
cGlsZXIgPSBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBJbml0aWFsaXplQ29t
cGlsZXIoKQorICAgIHsKKyAgICAgICAgRGVzdHJveUNvbXBpbGVyKCk7CisgICAgICAgIG1Db21w
aWxlciA9IFNoQ29uc3RydWN0Q29tcGlsZXIoR0xfRlJBR01FTlRfU0hBREVSLCBTSF9XRUJHTF9T
UEVDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIX0dMU0xfQ09N
UEFUSUJJTElUWV9PVVRQVVQsICZtUmVzb3VyY2VzKTsKKyAgICAgICAgQVNTRVJUX1RSVUUobUNv
bXBpbGVyICE9IE5VTEwpIDw8ICJDb21waWxlciBjb3VsZCBub3QgYmUgY29uc3RydWN0ZWQuIjsK
KyAgICB9CisKKyAgICB2b2lkIFRlc3RTaGFkZXJFeHRlbnNpb24oY29uc3QgY2hhciAqKnNoYWRl
clN0cmluZ3MsIGludCBzdHJpbmdDb3VudCwgYm9vbCBleHBlY3RhdGlvbikKKyAgICB7CisgICAg
ICAgIGJvb2wgc3VjY2VzcyA9IFNoQ29tcGlsZShtQ29tcGlsZXIsIHNoYWRlclN0cmluZ3MsIHN0
cmluZ0NvdW50LCAwKTsKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbXBpbGVMb2cgPSBT
aEdldEluZm9Mb2cobUNvbXBpbGVyKTsKKyAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGF0aW9uLCBz
dWNjZXNzKSA8PCBjb21waWxlTG9nOworICAgIH0KKworICBwcm90ZWN0ZWQ6CisgICAgU2hCdWls
dEluUmVzb3VyY2VzIG1SZXNvdXJjZXM7CisgICAgU2hIYW5kbGUgbUNvbXBpbGVyOworfTsKKwor
VEVTVF9GKFNoYWRlckV4dGVuc2lvblRlc3QsIEZyYWdEZXB0aEV4dFJlcXVpcmVzRXh0KQorewor
ICAgIC8vIEV4dGVuc2lvbiBpcyByZXF1aXJlZCB0byBjb21waWxlIHByb3Blcmx5LgorICAgIG1S
ZXNvdXJjZXMuRVhUX2ZyYWdfZGVwdGggPSAwOworICAgIEluaXRpYWxpemVDb21waWxlcigpOwor
ICAgIFRlc3RTaGFkZXJFeHRlbnNpb24oRnJhZ0RlcHRoRXh0U2hkciwgMiwgZmFsc2UpOworfQor
CitURVNUX0YoU2hhZGVyRXh0ZW5zaW9uVGVzdCwgRnJhZ0RlcHRoRXh0UmVxdWlyZXNQcmFnbWEp
Cit7CisgICAgLy8gUHJhZ21hIGlzIHJlcXVpcmVkIHRvIGNvbXBpbGUgcHJvcGVybHkuCisgICAg
bVJlc291cmNlcy5FWFRfZnJhZ19kZXB0aCA9IDE7CisgICAgSW5pdGlhbGl6ZUNvbXBpbGVyKCk7
CisgICAgVGVzdFNoYWRlckV4dGVuc2lvbigmRnJhZ0RlcHRoRXh0U2hkclsxXSwgMSwgZmFsc2Up
OworfQorCitURVNUX0YoU2hhZGVyRXh0ZW5zaW9uVGVzdCwgRnJhZ0RlcHRoRXh0Q29tcGlsZXMp
Cit7CisgICAgLy8gVGVzdCB0aGF0IGl0IGNvbXBpbGVzIHByb3Blcmx5IHdpdGggZXh0ZW5zaW9u
IGVuYWJsZWQuCisgICAgbVJlc291cmNlcy5FWFRfZnJhZ19kZXB0aCA9IDE7CisgICAgSW5pdGlh
bGl6ZUNvbXBpbGVyKCk7CisgICAgVGVzdFNoYWRlckV4dGVuc2lvbihGcmFnRGVwdGhFeHRTaGRy
LCAyLCB0cnVlKTsKK30KKworVEVTVF9GKFNoYWRlckV4dGVuc2lvblRlc3QsIEZyYWdEZXB0aEV4
dFJlc2V0c0ludGVybmFsU3RhdGVzKQoreworICAgIC8vIFRlc3QgdGhhdCBleHRlbnNpb24gaW50
ZXJuYWwgc3RhdGVzIGFyZSByZXNldCBwcm9wZXJseSBiZXR3ZWVuIGNvbXBpbGVzLgorICAgIG1S
ZXNvdXJjZXMuRVhUX2ZyYWdfZGVwdGggPSAxOworICAgIEluaXRpYWxpemVDb21waWxlcigpOwor
CisgICAgVGVzdFNoYWRlckV4dGVuc2lvbihGcmFnRGVwdGhFeHRTaGRyLCAyLCB0cnVlKTsKKyAg
ICBUZXN0U2hhZGVyRXh0ZW5zaW9uKCZGcmFnRGVwdGhFeHRTaGRyWzFdLCAxLCBmYWxzZSk7Cisg
ICAgVGVzdFNoYWRlckV4dGVuc2lvbihGcmFnRGVwdGhFeHRTaGRyLCAyLCB0cnVlKTsKK30KKwor
VEVTVF9GKFNoYWRlckV4dGVuc2lvblRlc3QsIFN0YW5kRGVyaXZFeHRSZXF1aXJlc0V4dCkKK3sK
KyAgICAvLyBFeHRlbnNpb24gaXMgcmVxdWlyZWQgdG8gY29tcGlsZSBwcm9wZXJseS4KKyAgICBt
UmVzb3VyY2VzLk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyA9IDA7CisgICAgSW5pdGlhbGl6ZUNv
bXBpbGVyKCk7CisgICAgVGVzdFNoYWRlckV4dGVuc2lvbihTdGFuZERlcml2RXh0U2hkciwgMiwg
ZmFsc2UpOworfQorCitURVNUX0YoU2hhZGVyRXh0ZW5zaW9uVGVzdCwgU3RhbmREZXJpdkV4dFJl
cXVpcmVzUHJhZ21hKQoreworICAgIC8vIFByYWdtYSBpcyByZXF1aXJlZCB0byBjb21waWxlIHBy
b3Blcmx5LgorICAgIG1SZXNvdXJjZXMuT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzID0gMTsKKyAg
ICBJbml0aWFsaXplQ29tcGlsZXIoKTsKKyAgICBUZXN0U2hhZGVyRXh0ZW5zaW9uKCZTdGFuZERl
cml2RXh0U2hkclsxXSwgMSwgZmFsc2UpOworfQorCitURVNUX0YoU2hhZGVyRXh0ZW5zaW9uVGVz
dCwgU3RhbmREZXJpdkV4dENvbXBpbGVzKQoreworICAgIC8vIFRlc3QgdGhhdCBpdCBjb21waWxl
cyBwcm9wZXJseSB3aXRoIGV4dGVuc2lvbiBlbmFibGVkLgorICAgIG1SZXNvdXJjZXMuT0VTX3N0
YW5kYXJkX2Rlcml2YXRpdmVzID0gMTsKKyAgICBJbml0aWFsaXplQ29tcGlsZXIoKTsKKyAgICBU
ZXN0U2hhZGVyRXh0ZW5zaW9uKFN0YW5kRGVyaXZFeHRTaGRyLCAyLCB0cnVlKTsKK30KKworVEVT
VF9GKFNoYWRlckV4dGVuc2lvblRlc3QsIFN0YW5kRGVyaXZFeHRSZXNldHNJbnRlcm5hbFN0YXRl
cykKK3sKKyAgICAvLyBUZXN0IHRoYXQgZXh0ZW5zaW9uIGludGVybmFsIHN0YXRlcyBhcmUgcmVz
ZXQgcHJvcGVybHkgYmV0d2VlbiBjb21waWxlcy4KKyAgICBtUmVzb3VyY2VzLk9FU19zdGFuZGFy
ZF9kZXJpdmF0aXZlcyA9IDE7CisgICAgSW5pdGlhbGl6ZUNvbXBpbGVyKCk7CisKKyAgICBUZXN0
U2hhZGVyRXh0ZW5zaW9uKFN0YW5kRGVyaXZFeHRTaGRyLCAyLCB0cnVlKTsKKyAgICBUZXN0U2hh
ZGVyRXh0ZW5zaW9uKCZTdGFuZERlcml2RXh0U2hkclsxXSwgMSwgZmFsc2UpOworICAgIFRlc3RT
aGFkZXJFeHRlbnNpb24oU3RhbmREZXJpdkV4dFNoZHIsIDIsIHRydWUpOworICAgIFRlc3RTaGFk
ZXJFeHRlbnNpb24oJlN0YW5kRGVyaXZFeHRTaGRyWzFdLCAxLCBmYWxzZSk7Cit9CisKK1RFU1Rf
RihTaGFkZXJFeHRlbnNpb25UZXN0LCBUZXh0dXJlTE9ERXh0UmVxdWlyZXNFeHQpCit7CisgICAg
Ly8gRXh0ZW5zaW9uIGlzIHJlcXVpcmVkIHRvIGNvbXBpbGUgcHJvcGVybHkuCisgICAgbVJlc291
cmNlcy5FWFRfc2hhZGVyX3RleHR1cmVfbG9kID0gMDsKKyAgICBJbml0aWFsaXplQ29tcGlsZXIo
KTsKKyAgICBUZXN0U2hhZGVyRXh0ZW5zaW9uKFRleHR1cmVMT0RTaGRyLCAyLCBmYWxzZSk7Cit9
CisKK1RFU1RfRihTaGFkZXJFeHRlbnNpb25UZXN0LCBUZXh0dXJlTE9ERXh0UmVxdWlyZXNQcmFn
bWEpCit7CisgICAgLy8gUHJhZ21hIGlzIHJlcXVpcmVkIHRvIGNvbXBpbGUgcHJvcGVybHkuCisg
ICAgbVJlc291cmNlcy5FWFRfc2hhZGVyX3RleHR1cmVfbG9kID0gMTsKKyAgICBJbml0aWFsaXpl
Q29tcGlsZXIoKTsKKyAgICBUZXN0U2hhZGVyRXh0ZW5zaW9uKCZUZXh0dXJlTE9EU2hkclsxXSwg
MSwgZmFsc2UpOworfQorCitURVNUX0YoU2hhZGVyRXh0ZW5zaW9uVGVzdCwgVGV4dHVyZUxPREV4
dENvbXBpbGVzKQoreworICAgIC8vIFRlc3QgdGhhdCBpdCBjb21waWxlcyBwcm9wZXJseSB3aXRo
IGV4dGVuc2lvbiBlbmFibGVkLgorICAgIG1SZXNvdXJjZXMuRVhUX3NoYWRlcl90ZXh0dXJlX2xv
ZCA9IDE7CisgICAgSW5pdGlhbGl6ZUNvbXBpbGVyKCk7CisgICAgVGVzdFNoYWRlckV4dGVuc2lv
bihUZXh0dXJlTE9EU2hkciwgMiwgdHJ1ZSk7Cit9CisKK1RFU1RfRihTaGFkZXJFeHRlbnNpb25U
ZXN0LCBUZXh0dXJlTE9ERXh0UmVzZXRzSW50ZXJuYWxTdGF0ZXMpCit7CisgICAgLy8gVGVzdCB0
aGF0IGV4dGVuc2lvbiBpbnRlcm5hbCBzdGF0ZXMgYXJlIHJlc2V0IHByb3Blcmx5IGJldHdlZW4g
Y29tcGlsZXMuCisgICAgbVJlc291cmNlcy5FWFRfc2hhZGVyX3RleHR1cmVfbG9kID0gMTsKKyAg
ICBJbml0aWFsaXplQ29tcGlsZXIoKTsKKworICAgIFRlc3RTaGFkZXJFeHRlbnNpb24oJlRleHR1
cmVMT0RTaGRyWzFdLCAxLCBmYWxzZSk7CisgICAgVGVzdFNoYWRlckV4dGVuc2lvbihUZXh0dXJl
TE9EU2hkciwgMiwgdHJ1ZSk7CisgICAgVGVzdFNoYWRlckV4dGVuc2lvbigmVGV4dHVyZUxPRFNo
ZHJbMV0sIDEsIGZhbHNlKTsKKyAgICBUZXN0U2hhZGVyRXh0ZW5zaW9uKFRleHR1cmVMT0RTaGRy
LCAyLCB0cnVlKTsKK30KKworLy8gVGVzdCBhIGJ1ZyB3aGVyZSB3ZSBjb3VsZCBtb2RpZnkgdGhl
IHZhbHVlIG9mIGEgYnVpbHRpbiB2YXJpYWJsZS4KK1RFU1RfRihTaGFkZXJFeHRlbnNpb25UZXN0
LCBCdWlsdGluUmV3cml0aW5nQnVnKQoreworICAgIG1SZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMg
PSA0OworICAgIG1SZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycyA9IDE7CisgICAgSW5pdGlhbGl6
ZUNvbXBpbGVyKCk7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAg
ICAgICAgIiNleHRlbnNpb24gR0xfRVhUX2RyYXdfYnVmZmVycyA6IHJlcXVpcmVcbiIKKyAgICAg
ICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xu
IgorICAgICAgICAiICAgIGdsX0ZyYWdEYXRhW2dsX01heERyYXdCdWZmZXJzXSA9IHZlYzQoMC4w
KTtcbiIKKyAgICAgICAgIn0iOworCisgICAgY29uc3QgY2hhciAqc2hhZGVyU3RyaW5nc1tdID0g
eyBzaGFkZXJTdHJpbmcuY19zdHIoKSB9OworCisgICAgVGVzdFNoYWRlckV4dGVuc2lvbihzaGFk
ZXJTdHJpbmdzLCAxLCBmYWxzZSk7CisgICAgVGVzdFNoYWRlckV4dGVuc2lvbihzaGFkZXJTdHJp
bmdzLCAxLCBmYWxzZSk7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvY29tcGlsZXJfdGVzdHMvU2hhZGVyVmFyaWFibGVfdGVzdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1NoYWRlclZh
cmlhYmxlX3Rlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9TaGFkZXJWYXJpYWJsZV90ZXN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDQyMSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNCBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBDb2xsZWN0VmFyaWFi
bGVzX3Rlc3QuY3BwOgorLy8gICBTb21lIHRlc3RzIGZvciBzaGFkZXIgaW5zcGVjdGlvbgorLy8K
KworI2luY2x1ZGUgImFuZ2xlX2dsLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9D
b21waWxlci5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiR0xTTEFORy9T
aGFkZXJMYW5nLmgiCisKK25hbWVzcGFjZSBzaAoreworCitURVNUKFNoYWRlclZhcmlhYmxlVGVz
dCwgRmluZEluZm9CeU1hcHBlZE5hbWUpCit7CisgICAgLy8gc3RydWN0IEEgeworICAgIC8vICAg
ZmxvYXQgeFsyXTsKKyAgICAvLyAgIHZlYzMgeTsKKyAgICAvLyB9OworICAgIC8vIHN0cnVjdCBC
IHsKKyAgICAvLyAgIEEgYVszXTsKKyAgICAvLyB9OworICAgIC8vIEIgdW5pWzJdOworICAgIFNo
YWRlclZhcmlhYmxlIHVuaTsKKyAgICB1bmkuYXJyYXlTaXplID0gMjsKKyAgICB1bmkubmFtZSA9
ICJ1bmkiOworICAgIHVuaS5tYXBwZWROYW1lID0gIm1fdW5pIjsKKyAgICB1bmkuc3RydWN0TmFt
ZSA9ICJCIjsKKyAgICB7CisgICAgICAgIFNoYWRlclZhcmlhYmxlIGE7CisgICAgICAgIGEuYXJy
YXlTaXplID0gMzsKKyAgICAgICAgYS5uYW1lID0gImEiOworICAgICAgICBhLm1hcHBlZE5hbWUg
PSAibV9hIjsKKyAgICAgICAgYS5zdHJ1Y3ROYW1lID0gIkEiOworICAgICAgICB7CisgICAgICAg
ICAgICBTaGFkZXJWYXJpYWJsZSB4KEdMX0ZMT0FULCAyKTsKKyAgICAgICAgICAgIHgubmFtZSA9
ICJ4IjsKKyAgICAgICAgICAgIHgubWFwcGVkTmFtZSA9ICJtX3giOworICAgICAgICAgICAgYS5m
aWVsZHMucHVzaF9iYWNrKHgpOworCisgICAgICAgICAgICBTaGFkZXJWYXJpYWJsZSB5KEdMX0ZM
T0FUX1ZFQzMsIDApOworICAgICAgICAgICAgeS5uYW1lID0gInkiOworICAgICAgICAgICAgeS5t
YXBwZWROYW1lID0gIm1feSI7CisgICAgICAgICAgICBhLmZpZWxkcy5wdXNoX2JhY2soeSk7Cisg
ICAgICAgIH0KKyAgICAgICAgdW5pLmZpZWxkcy5wdXNoX2JhY2soYSk7CisgICAgfQorCisgICAg
Y29uc3QgU2hhZGVyVmFyaWFibGUgKmxlYWZWYXIgPSBudWxscHRyOworICAgIHN0ZDo6c3RyaW5n
IG9yaWdpbmFsRnVsbE5hbWU7CisKKyAgICBzdGQ6OnN0cmluZyBtYXBwZWRGdWxsTmFtZSA9ICJ3
cm9uZ05hbWUiOworICAgIEVYUEVDVF9GQUxTRSh1bmkuZmluZEluZm9CeU1hcHBlZE5hbWUoCisg
ICAgICAgIG1hcHBlZEZ1bGxOYW1lLCAmbGVhZlZhciwgJm9yaWdpbmFsRnVsbE5hbWUpKTsKKwor
ICAgIG1hcHBlZEZ1bGxOYW1lID0gIm1fdW5pIjsKKyAgICBFWFBFQ1RfVFJVRSh1bmkuZmluZElu
Zm9CeU1hcHBlZE5hbWUoCisgICAgICAgIG1hcHBlZEZ1bGxOYW1lLCAmbGVhZlZhciwgJm9yaWdp
bmFsRnVsbE5hbWUpKTsKKyAgICBFWFBFQ1RfRVEoJnVuaSwgbGVhZlZhcik7CisgICAgRVhQRUNU
X1NUUkVRKCJ1bmkiLCBvcmlnaW5hbEZ1bGxOYW1lLmNfc3RyKCkpOworCisgICAgbWFwcGVkRnVs
bE5hbWUgPSAibV91bmlbMF0ubV9hWzFdLndyb25nTmFtZSI7CisgICAgRVhQRUNUX0ZBTFNFKHVu
aS5maW5kSW5mb0J5TWFwcGVkTmFtZSgKKyAgICAgICAgbWFwcGVkRnVsbE5hbWUsICZsZWFmVmFy
LCAmb3JpZ2luYWxGdWxsTmFtZSkpOworCisgICAgbWFwcGVkRnVsbE5hbWUgPSAibV91bmlbMF0u
bV9hWzFdLm1feCI7CisgICAgRVhQRUNUX1RSVUUodW5pLmZpbmRJbmZvQnlNYXBwZWROYW1lKAor
ICAgICAgICBtYXBwZWRGdWxsTmFtZSwgJmxlYWZWYXIsICZvcmlnaW5hbEZ1bGxOYW1lKSk7Cisg
ICAgRVhQRUNUX0VRKCYodW5pLmZpZWxkc1swXS5maWVsZHNbMF0pLCBsZWFmVmFyKTsKKyAgICBF
WFBFQ1RfU1RSRVEoInVuaVswXS5hWzFdLngiLCBvcmlnaW5hbEZ1bGxOYW1lLmNfc3RyKCkpOwor
CisgICAgbWFwcGVkRnVsbE5hbWUgPSAibV91bmlbMF0ubV9hWzFdLm1feFswXSI7CisgICAgRVhQ
RUNUX1RSVUUodW5pLmZpbmRJbmZvQnlNYXBwZWROYW1lKAorICAgICAgICBtYXBwZWRGdWxsTmFt
ZSwgJmxlYWZWYXIsICZvcmlnaW5hbEZ1bGxOYW1lKSk7CisgICAgRVhQRUNUX0VRKCYodW5pLmZp
ZWxkc1swXS5maWVsZHNbMF0pLCBsZWFmVmFyKTsKKyAgICBFWFBFQ1RfU1RSRVEoInVuaVswXS5h
WzFdLnhbMF0iLCBvcmlnaW5hbEZ1bGxOYW1lLmNfc3RyKCkpOworCisgICAgbWFwcGVkRnVsbE5h
bWUgPSAibV91bmlbMF0ubV9hWzFdLm1feSI7CisgICAgRVhQRUNUX1RSVUUodW5pLmZpbmRJbmZv
QnlNYXBwZWROYW1lKAorICAgICAgICBtYXBwZWRGdWxsTmFtZSwgJmxlYWZWYXIsICZvcmlnaW5h
bEZ1bGxOYW1lKSk7CisgICAgRVhQRUNUX0VRKCYodW5pLmZpZWxkc1swXS5maWVsZHNbMV0pLCBs
ZWFmVmFyKTsKKyAgICBFWFBFQ1RfU1RSRVEoInVuaVswXS5hWzFdLnkiLCBvcmlnaW5hbEZ1bGxO
YW1lLmNfc3RyKCkpOworfQorCitURVNUKFNoYWRlclZhcmlhYmxlVGVzdCwgSXNTYW1lVW5pZm9y
bVdpdGhEaWZmZXJlbnRGaWVsZE9yZGVyKQoreworICAgIC8vIHN0cnVjdCBBIHsKKyAgICAvLyAg
IGZsb2F0IHg7CisgICAgLy8gICBmbG9hdCB5OworICAgIC8vIH07CisgICAgLy8gdW5pZm9ybSBB
IHVuaTsKKyAgICBVbmlmb3JtIHZ4X2E7CisgICAgdnhfYS5hcnJheVNpemUgPSAwOworICAgIHZ4
X2EubmFtZSA9ICJ1bmkiOworICAgIHZ4X2EubWFwcGVkTmFtZSA9ICJtX3VuaSI7CisgICAgdnhf
YS5zdHJ1Y3ROYW1lID0gIkEiOworICAgIHsKKyAgICAgICAgU2hhZGVyVmFyaWFibGUgeChHTF9G
TE9BVCwgMCk7CisgICAgICAgIHgubmFtZSA9ICJ4IjsKKyAgICAgICAgeC5tYXBwZWROYW1lID0g
Im1feCI7CisgICAgICAgIHZ4X2EuZmllbGRzLnB1c2hfYmFjayh4KTsKKworICAgICAgICBTaGFk
ZXJWYXJpYWJsZSB5KEdMX0ZMT0FULCAwKTsKKyAgICAgICAgeS5uYW1lID0gInkiOworICAgICAg
ICB5Lm1hcHBlZE5hbWUgPSAibV95IjsKKyAgICAgICAgdnhfYS5maWVsZHMucHVzaF9iYWNrKHkp
OworICAgIH0KKworICAgIC8vIHN0cnVjdCBBIHsKKyAgICAvLyAgIGZsb2F0IHk7CisgICAgLy8g
ICBmbG9hdCB4OworICAgIC8vIH07CisgICAgLy8gdW5pZm9ybSBBIHVuaTsKKyAgICBVbmlmb3Jt
IGZ4X2E7CisgICAgZnhfYS5hcnJheVNpemUgPSAwOworICAgIGZ4X2EubmFtZSA9ICJ1bmkiOwor
ICAgIGZ4X2EubWFwcGVkTmFtZSA9ICJtX3VuaSI7CisgICAgZnhfYS5zdHJ1Y3ROYW1lID0gIkEi
OworICAgIHsKKyAgICAgICAgU2hhZGVyVmFyaWFibGUgeShHTF9GTE9BVCwgMCk7CisgICAgICAg
IHkubmFtZSA9ICJ5IjsKKyAgICAgICAgeS5tYXBwZWROYW1lID0gIm1feSI7CisgICAgICAgIGZ4
X2EuZmllbGRzLnB1c2hfYmFjayh5KTsKKworICAgICAgICBTaGFkZXJWYXJpYWJsZSB4KEdMX0ZM
T0FULCAwKTsKKyAgICAgICAgeC5uYW1lID0gIngiOworICAgICAgICB4Lm1hcHBlZE5hbWUgPSAi
bV94IjsKKyAgICAgICAgZnhfYS5maWVsZHMucHVzaF9iYWNrKHgpOworICAgIH0KKworICAgIEVY
UEVDVF9GQUxTRSh2eF9hLmlzU2FtZVVuaWZvcm1BdExpbmtUaW1lKGZ4X2EpKTsKK30KKworVEVT
VChTaGFkZXJWYXJpYWJsZVRlc3QsIElzU2FtZVVuaWZvcm1XaXRoRGlmZmVyZW50U3RydWN0TmFt
ZXMpCit7CisgICAgLy8gc3RydWN0IEEgeworICAgIC8vICAgZmxvYXQgeDsKKyAgICAvLyAgIGZs
b2F0IHk7CisgICAgLy8gfTsKKyAgICAvLyB1bmlmb3JtIEEgdW5pOworICAgIFVuaWZvcm0gdnhf
YTsKKyAgICB2eF9hLmFycmF5U2l6ZSA9IDA7CisgICAgdnhfYS5uYW1lID0gInVuaSI7CisgICAg
dnhfYS5tYXBwZWROYW1lID0gIm1fdW5pIjsKKyAgICB2eF9hLnN0cnVjdE5hbWUgPSAiQSI7Cisg
ICAgeworICAgICAgICBTaGFkZXJWYXJpYWJsZSB4KEdMX0ZMT0FULCAwKTsKKyAgICAgICAgeC5u
YW1lID0gIngiOworICAgICAgICB4Lm1hcHBlZE5hbWUgPSAibV94IjsKKyAgICAgICAgdnhfYS5m
aWVsZHMucHVzaF9iYWNrKHgpOworCisgICAgICAgIFNoYWRlclZhcmlhYmxlIHkoR0xfRkxPQVQs
IDApOworICAgICAgICB5Lm5hbWUgPSAieSI7CisgICAgICAgIHkubWFwcGVkTmFtZSA9ICJtX3ki
OworICAgICAgICB2eF9hLmZpZWxkcy5wdXNoX2JhY2soeSk7CisgICAgfQorCisgICAgLy8gc3Ry
dWN0IEIgeworICAgIC8vICAgZmxvYXQgeDsKKyAgICAvLyAgIGZsb2F0IHk7CisgICAgLy8gfTsK
KyAgICAvLyB1bmlmb3JtIEIgdW5pOworICAgIFVuaWZvcm0gZnhfYTsKKyAgICBmeF9hLmFycmF5
U2l6ZSA9IDA7CisgICAgZnhfYS5uYW1lID0gInVuaSI7CisgICAgZnhfYS5tYXBwZWROYW1lID0g
Im1fdW5pIjsKKyAgICB7CisgICAgICAgIFNoYWRlclZhcmlhYmxlIHgoR0xfRkxPQVQsIDApOwor
ICAgICAgICB4Lm5hbWUgPSAieCI7CisgICAgICAgIHgubWFwcGVkTmFtZSA9ICJtX3giOworICAg
ICAgICBmeF9hLmZpZWxkcy5wdXNoX2JhY2soeCk7CisKKyAgICAgICAgU2hhZGVyVmFyaWFibGUg
eShHTF9GTE9BVCwgMCk7CisgICAgICAgIHkubmFtZSA9ICJ5IjsKKyAgICAgICAgeS5tYXBwZWRO
YW1lID0gIm1feSI7CisgICAgICAgIGZ4X2EuZmllbGRzLnB1c2hfYmFjayh5KTsKKyAgICB9CisK
KyAgICBmeF9hLnN0cnVjdE5hbWUgPSAiQiI7CisgICAgRVhQRUNUX0ZBTFNFKHZ4X2EuaXNTYW1l
VW5pZm9ybUF0TGlua1RpbWUoZnhfYSkpOworCisgICAgZnhfYS5zdHJ1Y3ROYW1lID0gIkEiOwor
ICAgIEVYUEVDVF9UUlVFKHZ4X2EuaXNTYW1lVW5pZm9ybUF0TGlua1RpbWUoZnhfYSkpOworCisg
ICAgZnhfYS5zdHJ1Y3ROYW1lID0gIiI7CisgICAgRVhQRUNUX0ZBTFNFKHZ4X2EuaXNTYW1lVW5p
Zm9ybUF0TGlua1RpbWUoZnhfYSkpOworfQorCitURVNUKFNoYWRlclZhcmlhYmxlVGVzdCwgSXNT
YW1lVmFyeWluZ1dpdGhEaWZmZXJlbnRJbnZhcmlhbmNlKQoreworICAgIC8vIGludmFyaWFudCB2
YXJ5aW5nIGZsb2F0IHZhcnk7CisgICAgVmFyeWluZyB2eDsKKyAgICB2eC50eXBlID0gR0xfRkxP
QVQ7CisgICAgdnguYXJyYXlTaXplID0gMDsKKyAgICB2eC5wcmVjaXNpb24gPSBHTF9NRURJVU1f
RkxPQVQ7CisgICAgdngubmFtZSA9ICJ2YXJ5IjsKKyAgICB2eC5tYXBwZWROYW1lID0gIm1fdmFy
eSI7CisgICAgdnguc3RhdGljVXNlID0gdHJ1ZTsKKyAgICB2eC5pc0ludmFyaWFudCA9IHRydWU7
CisKKyAgICAvLyB2YXJ5aW5nIGZsb2F0IHZhcnk7CisgICAgVmFyeWluZyBmeDsKKyAgICBmeC50
eXBlID0gR0xfRkxPQVQ7CisgICAgZnguYXJyYXlTaXplID0gMDsKKyAgICBmeC5wcmVjaXNpb24g
PSBHTF9NRURJVU1fRkxPQVQ7CisgICAgZngubmFtZSA9ICJ2YXJ5IjsKKyAgICBmeC5tYXBwZWRO
YW1lID0gIm1fdmFyeSI7CisgICAgZnguc3RhdGljVXNlID0gdHJ1ZTsKKyAgICBmeC5pc0ludmFy
aWFudCA9IGZhbHNlOworCisgICAgLy8gRGVmYXVsdCB0byBFU1NMMSBiZWhhdmlvcjogaW52YXJp
YW5jZSBtdXN0IG1hdGNoCisgICAgRVhQRUNUX0ZBTFNFKHZ4LmlzU2FtZVZhcnlpbmdBdExpbmtU
aW1lKGZ4KSk7CisgICAgRVhQRUNUX0ZBTFNFKHZ4LmlzU2FtZVZhcnlpbmdBdExpbmtUaW1lKGZ4
LCAxMDApKTsKKyAgICAvLyBFU1NMMyBiZWhhdmlvcjogaW52YXJpYW5jZSBkb2Vzbid0IG5lZWQg
dG8gbWF0Y2gKKyAgICBFWFBFQ1RfVFJVRSh2eC5pc1NhbWVWYXJ5aW5nQXRMaW5rVGltZShmeCwg
MzAwKSk7CisKKyAgICAvLyBpbnZhcmlhbnQgdmFyeWluZyBmbG9hdCB2YXJ5OworICAgIGZ4Lmlz
SW52YXJpYW50ID0gdHJ1ZTsKKyAgICBFWFBFQ1RfVFJVRSh2eC5pc1NhbWVWYXJ5aW5nQXRMaW5r
VGltZShmeCkpOworICAgIEVYUEVDVF9UUlVFKHZ4LmlzU2FtZVZhcnlpbmdBdExpbmtUaW1lKGZ4
LCAxMDApKTsKKyAgICBFWFBFQ1RfVFJVRSh2eC5pc1NhbWVWYXJ5aW5nQXRMaW5rVGltZShmeCwg
MzAwKSk7Cit9CisKKy8vIFRlc3QgdGhhdCB1c2luZyBpbnZhcmlhbnQgdmFyeWluZ3MgZG9lc24n
dCB0cmlnZ2VyIGEgZG91YmxlIGRlbGV0ZS4KK1RFU1QoU2hhZGVyVmFyaWFibGVUZXN0LCBJbnZh
cmlhbnREb3VibGVEZWxldGVCdWcpCit7CisgICAgU2hCdWlsdEluUmVzb3VyY2VzIHJlc291cmNl
czsKKyAgICBTaEluaXRCdWlsdEluUmVzb3VyY2VzKCZyZXNvdXJjZXMpOworCisgICAgU2hIYW5k
bGUgY29tcGlsZXIgPSBTaENvbnN0cnVjdENvbXBpbGVyKEdMX1ZFUlRFWF9TSEFERVIsIFNIX0dM
RVMyX1NQRUMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNI
X0dMU0xfQ09NUEFUSUJJTElUWV9PVVRQVVQsICZyZXNvdXJjZXMpOworICAgIEVYUEVDVF9ORShz
dGF0aWNfY2FzdDxTaEhhbmRsZT4oMCksIGNvbXBpbGVyKTsKKworICAgIGNvbnN0IGNoYXIgKnBy
b2dyYW1bXSA9CisgICAgeworICAgICAgICAiYXR0cmlidXRlIHZlYzQgcG9zaXRpb247XG4iCisg
ICAgICAgICJ2YXJ5aW5nIGZsb2F0IHY7XG4iCisgICAgICAgICJpbnZhcmlhbnQgdjtcbiIKKyAg
ICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgdiA9IDEuMDtcbiIKKyAgICAgICAg
IiAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjtcbiIKKyAgICAgICAgIn0iCisgICAgfTsKKworICAg
IEVYUEVDVF9UUlVFKFNoQ29tcGlsZShjb21waWxlciwgcHJvZ3JhbSwgMSwgU0hfT0JKRUNUX0NP
REUpKTsKKyAgICBFWFBFQ1RfVFJVRShTaENvbXBpbGUoY29tcGlsZXIsIHByb2dyYW0sIDEsIFNI
X09CSkVDVF9DT0RFKSk7CisgICAgU2hEZXN0cnVjdChjb21waWxlcik7Cit9CisKK1RFU1QoU2hh
ZGVyVmFyaWFibGVUZXN0LCBJbGxlZ2FsSW52YXJpYW50VmFyeWluZykKK3sKKyAgICBTaEJ1aWx0
SW5SZXNvdXJjZXMgcmVzb3VyY2VzOworICAgIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoJnJlc291
cmNlcyk7CisKKyAgICBTaEhhbmRsZSBjb21waWxlciA9IFNoQ29uc3RydWN0Q29tcGlsZXIoR0xf
VkVSVEVYX1NIQURFUiwgU0hfR0xFUzJfU1BFQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU0hfR0xTTF9DT01QQVRJQklMSVRZX09VVFBVVCwgJnJlc291cmNl
cyk7CisgICAgRVhQRUNUX05FKHN0YXRpY19jYXN0PFNoSGFuZGxlPigwKSwgY29tcGlsZXIpOwor
CisgICAgY29uc3QgY2hhciAqcHJvZ3JhbTFbXSA9CisgICAgeworICAgICAgICAidm9pZCBmb28o
KSB7XG4iCisgICAgICAgICIgIHZlYzQgdjtcbiIKKyAgICAgICAgIn1cbiIKKyAgICAgICAgInZh
cnlpbmcgdmVjNCB2X3Zhcnlpbmc7XG4iCisgICAgICAgICJpbnZhcmlhbnQgdl92YXJ5aW5nO1xu
IgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICBmb28oKTtcbiIKKyAgICAg
ICAgIiAgZ2xfUG9zaXRpb24gPSB2X3Zhcnlpbmc7XG4iCisgICAgICAgICJ9IgorICAgIH07Cisg
ICAgY29uc3QgY2hhciAqcHJvZ3JhbTJbXSA9CisgICAgeworICAgICAgICAidmFyeWluZyB2ZWM0
IHZfdmFyeWluZztcbiIKKyAgICAgICAgInZvaWQgZm9vKCkge1xuIgorICAgICAgICAiICBpbnZh
cmlhbnQgdl92YXJ5aW5nO1xuIgorICAgICAgICAifVxuIgorICAgICAgICAidm9pZCBtYWluKCkg
e1xuIgorICAgICAgICAiICBmb28oKTtcbiIKKyAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSB2X3Zh
cnlpbmc7XG4iCisgICAgICAgICJ9IgorICAgIH07CisKKyAgICBFWFBFQ1RfVFJVRShTaENvbXBp
bGUoY29tcGlsZXIsIHByb2dyYW0xLCAxLCBTSF9WQVJJQUJMRVMpKTsKKyAgICBFWFBFQ1RfRkFM
U0UoU2hDb21waWxlKGNvbXBpbGVyLCBwcm9ncmFtMiwgMSwgU0hfVkFSSUFCTEVTKSk7Cit9CisK
K1RFU1QoU2hhZGVyVmFyaWFibGVUZXN0LCBJbnZhcmlhbnRMZWFrQWNyb3NzU2hhZGVycykKK3sK
KyAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgcmVzb3VyY2VzOworICAgIFNoSW5pdEJ1aWx0SW5SZXNv
dXJjZXMoJnJlc291cmNlcyk7CisKKyAgICBTaEhhbmRsZSBjb21waWxlciA9IFNoQ29uc3RydWN0
Q29tcGlsZXIoR0xfVkVSVEVYX1NIQURFUiwgU0hfR0xFUzJfU1BFQywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hfR0xTTF9DT01QQVRJQklMSVRZX09VVFBV
VCwgJnJlc291cmNlcyk7CisgICAgRVhQRUNUX05FKHN0YXRpY19jYXN0PFNoSGFuZGxlPigwKSwg
Y29tcGlsZXIpOworCisgICAgY29uc3QgY2hhciAqcHJvZ3JhbTFbXSA9CisgICAgeworICAgICAg
ICAidmFyeWluZyB2ZWM0IHZfdmFyeWluZztcbiIKKyAgICAgICAgImludmFyaWFudCB2X3Zhcnlp
bmc7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgIGdsX1Bvc2l0aW9u
ID0gdl92YXJ5aW5nO1xuIgorICAgICAgICAifSIKKyAgICB9OworICAgIGNvbnN0IGNoYXIgKnBy
b2dyYW0yW10gPQorICAgIHsKKyAgICAgICAgInZhcnlpbmcgdmVjNCB2X3Zhcnlpbmc7XG4iCisg
ICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgIGdsX1Bvc2l0aW9uID0gdl92YXJ5
aW5nO1xuIgorICAgICAgICAifSIKKyAgICB9OworCisgICAgRVhQRUNUX1RSVUUoU2hDb21waWxl
KGNvbXBpbGVyLCBwcm9ncmFtMSwgMSwgU0hfVkFSSUFCTEVTKSk7CisgICAgY29uc3Qgc3RkOjp2
ZWN0b3I8c2g6OlZhcnlpbmc+ICp2YXJ5aW5ncyA9IFNoR2V0VmFyeWluZ3MoY29tcGlsZXIpOwor
ICAgIGZvciAoY29uc3Qgc2g6OlZhcnlpbmcgJnZhcnlpbmcgOiAqdmFyeWluZ3MpCisgICAgewor
ICAgICAgICBpZiAodmFyeWluZy5uYW1lID09ICJ2X3ZhcnlpbmciKQorICAgICAgICAgICAgRVhQ
RUNUX1RSVUUodmFyeWluZy5pc0ludmFyaWFudCk7CisgICAgfQorICAgIEVYUEVDVF9UUlVFKFNo
Q29tcGlsZShjb21waWxlciwgcHJvZ3JhbTIsIDEsIFNIX1ZBUklBQkxFUykpOworICAgIHZhcnlp
bmdzID0gU2hHZXRWYXJ5aW5ncyhjb21waWxlcik7CisgICAgZm9yIChjb25zdCBzaDo6VmFyeWlu
ZyAmdmFyeWluZyA6ICp2YXJ5aW5ncykKKyAgICB7CisgICAgICAgIGlmICh2YXJ5aW5nLm5hbWUg
PT0gInZfdmFyeWluZyIpCisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UodmFyeWluZy5pc0ludmFy
aWFudCk7CisgICAgfQorfQorCitURVNUKFNoYWRlclZhcmlhYmxlVGVzdCwgR2xvYmFsSW52YXJp
YW50TGVha0Fjcm9zc1NoYWRlcnMpCit7CisgICAgU2hCdWlsdEluUmVzb3VyY2VzIHJlc291cmNl
czsKKyAgICBTaEluaXRCdWlsdEluUmVzb3VyY2VzKCZyZXNvdXJjZXMpOworCisgICAgU2hIYW5k
bGUgY29tcGlsZXIgPSBTaENvbnN0cnVjdENvbXBpbGVyKEdMX1ZFUlRFWF9TSEFERVIsIFNIX0dM
RVMyX1NQRUMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNI
X0dMU0xfQ09NUEFUSUJJTElUWV9PVVRQVVQsICZyZXNvdXJjZXMpOworICAgIEVYUEVDVF9ORShz
dGF0aWNfY2FzdDxTaEhhbmRsZT4oMCksIGNvbXBpbGVyKTsKKworICAgIGNvbnN0IGNoYXIgKnBy
b2dyYW0xW10gPQorICAgIHsKKyAgICAgICAgIiNwcmFnbWEgU1RER0wgaW52YXJpYW50KGFsbClc
biIKKyAgICAgICAgInZhcnlpbmcgdmVjNCB2X3Zhcnlpbmc7XG4iCisgICAgICAgICJ2b2lkIG1h
aW4oKSB7XG4iCisgICAgICAgICIgIGdsX1Bvc2l0aW9uID0gdl92YXJ5aW5nO1xuIgorICAgICAg
ICAifSIKKyAgICB9OworICAgIGNvbnN0IGNoYXIgKnByb2dyYW0yW10gPQorICAgIHsKKyAgICAg
ICAgInZhcnlpbmcgdmVjNCB2X3Zhcnlpbmc7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4i
CisgICAgICAgICIgIGdsX1Bvc2l0aW9uID0gdl92YXJ5aW5nO1xuIgorICAgICAgICAifSIKKyAg
ICB9OworCisgICAgRVhQRUNUX1RSVUUoU2hDb21waWxlKGNvbXBpbGVyLCBwcm9ncmFtMSwgMSwg
U0hfVkFSSUFCTEVTKSk7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlZhcnlpbmc+ICp2YXJ5
aW5ncyA9IFNoR2V0VmFyeWluZ3MoY29tcGlsZXIpOworICAgIGZvciAoY29uc3Qgc2g6OlZhcnlp
bmcgJnZhcnlpbmcgOiAqdmFyeWluZ3MpCisgICAgeworICAgICAgICBpZiAodmFyeWluZy5uYW1l
ID09ICJ2X3ZhcnlpbmciKQorICAgICAgICAgICAgRVhQRUNUX1RSVUUodmFyeWluZy5pc0ludmFy
aWFudCk7CisgICAgfQorICAgIEVYUEVDVF9UUlVFKFNoQ29tcGlsZShjb21waWxlciwgcHJvZ3Jh
bTIsIDEsIFNIX1ZBUklBQkxFUykpOworICAgIHZhcnlpbmdzID0gU2hHZXRWYXJ5aW5ncyhjb21w
aWxlcik7CisgICAgZm9yIChjb25zdCBzaDo6VmFyeWluZyAmdmFyeWluZyA6ICp2YXJ5aW5ncykK
KyAgICB7CisgICAgICAgIGlmICh2YXJ5aW5nLm5hbWUgPT0gInZfdmFyeWluZyIpCisgICAgICAg
ICAgICBFWFBFQ1RfRkFMU0UodmFyeWluZy5pc0ludmFyaWFudCk7CisgICAgfQorfQorCitURVNU
KFNoYWRlclZhcmlhYmxlVGVzdCwgQnVpbHRpbkludmFyaWFudFZhcnlpbmcpCit7CisKKyAgICBT
aEJ1aWx0SW5SZXNvdXJjZXMgcmVzb3VyY2VzOworICAgIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMo
JnJlc291cmNlcyk7CisKKyAgICBTaEhhbmRsZSBjb21waWxlciA9IFNoQ29uc3RydWN0Q29tcGls
ZXIoR0xfVkVSVEVYX1NIQURFUiwgU0hfR0xFUzJfU1BFQywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU0hfR0xTTF9DT01QQVRJQklMSVRZX09VVFBVVCwgJnJl
c291cmNlcyk7CisgICAgRVhQRUNUX05FKHN0YXRpY19jYXN0PFNoSGFuZGxlPigwKSwgY29tcGls
ZXIpOworCisgICAgY29uc3QgY2hhciAqcHJvZ3JhbTFbXSA9CisgICAgeworICAgICAgICAiaW52
YXJpYW50IGdsX1Bvc2l0aW9uO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAg
ICAiICBnbF9Qb3NpdGlvbiA9IHZlYzQoMCwgMCwgMCwgMCk7XG4iCisgICAgICAgICJ9IgorICAg
IH07CisgICAgY29uc3QgY2hhciAqcHJvZ3JhbTJbXSA9CisgICAgeworICAgICAgICAidm9pZCBt
YWluKCkge1xuIgorICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IHZlYzQoMCwgMCwgMCwgMCk7XG4i
CisgICAgICAgICJ9IgorICAgIH07CisgICAgY29uc3QgY2hhciAqcHJvZ3JhbTNbXSA9CisgICAg
eworICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICBpbnZhcmlhbnQgZ2xfUG9z
aXRpb247XG4iCisgICAgICAgICIgIGdsX1Bvc2l0aW9uID0gdmVjNCgwLCAwLCAwLCAwKTtcbiIK
KyAgICAgICAgIn0iCisgICAgfTsKKworICAgIEVYUEVDVF9UUlVFKFNoQ29tcGlsZShjb21waWxl
ciwgcHJvZ3JhbTEsIDEsIFNIX1ZBUklBQkxFUykpOworICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNo
OjpWYXJ5aW5nPiAqdmFyeWluZ3MgPSBTaEdldFZhcnlpbmdzKGNvbXBpbGVyKTsKKyAgICBmb3Ig
KGNvbnN0IHNoOjpWYXJ5aW5nICZ2YXJ5aW5nIDogKnZhcnlpbmdzKQorICAgIHsKKyAgICAgICAg
aWYgKHZhcnlpbmcubmFtZSA9PSAiZ2xfUG9zaXRpb24iKQorICAgICAgICAgICAgRVhQRUNUX1RS
VUUodmFyeWluZy5pc0ludmFyaWFudCk7CisgICAgfQorICAgIEVYUEVDVF9UUlVFKFNoQ29tcGls
ZShjb21waWxlciwgcHJvZ3JhbTIsIDEsIFNIX1ZBUklBQkxFUykpOworICAgIHZhcnlpbmdzID0g
U2hHZXRWYXJ5aW5ncyhjb21waWxlcik7CisgICAgZm9yIChjb25zdCBzaDo6VmFyeWluZyAmdmFy
eWluZyA6ICp2YXJ5aW5ncykKKyAgICB7CisgICAgICAgIGlmICh2YXJ5aW5nLm5hbWUgPT0gImds
X1Bvc2l0aW9uIikKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRSh2YXJ5aW5nLmlzSW52YXJpYW50
KTsKKyAgICB9CisgICAgRVhQRUNUX0ZBTFNFKFNoQ29tcGlsZShjb21waWxlciwgcHJvZ3JhbTMs
IDEsIFNIX1ZBUklBQkxFUykpOworfQorCit9ICAvLyBuYW1lc3BhY2Ugc2gKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9UeXBlVHJhY2tpbmdf
dGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2NvbXBpbGVyX3Rlc3RzL1R5cGVUcmFja2luZ190ZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvVHlwZVRyYWNr
aW5nX3Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDU3IEBACisvLworLy8gQ29w
eXJpZ2h0IChjKSAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKy8vIFR5cGVUcmFja2luZ190ZXN0LmNwcDoKKy8vICAgVGVzdCBmb3IgdHJhY2tpbmcgdHlw
ZXMgcmVzdWx0aW5nIGZyb20gbWF0aCBvcGVyYXRpb25zLCBpbmNsdWRpbmcgdGhlaXIKKy8vICAg
cHJlY2lzaW9uLgorLy8KKworI2luY2x1ZGUgImFuZ2xlX2dsLmgiCisjaW5jbHVkZSAiZ3Rlc3Qv
Z3Rlc3QuaCIKKyNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKKyNpbmNsdWRlICJjb21w
aWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JFU1NMLmgiCisKK2NsYXNzIFR5cGVUcmFja2luZ1Rl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdAoreworICBwdWJsaWM6CisgICAgVHlwZVRyYWNraW5n
VGVzdCgpIHt9CisKKyAgcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCisgICAg
eworICAgICAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgcmVzb3VyY2VzOworICAgICAgICBTaEluaXRC
dWlsdEluUmVzb3VyY2VzKCZyZXNvdXJjZXMpOworICAgICAgICByZXNvdXJjZXMuRnJhZ21lbnRQ
cmVjaXNpb25IaWdoID0gMTsKKworICAgICAgICBtVHJhbnNsYXRvciA9IG5ldyBUcmFuc2xhdG9y
RVNTTChHTF9GUkFHTUVOVF9TSEFERVIsIFNIX0dMRVMzX1NQRUMpOworICAgICAgICBBU1NFUlRf
VFJVRShtVHJhbnNsYXRvci0+SW5pdChyZXNvdXJjZXMpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgVGVhckRvd24oKQorICAgIHsKKyAgICAgICAgZGVsZXRlIG1UcmFuc2xhdG9yOworICAg
IH0KKworICAgIHZvaWQgY29tcGlsZShjb25zdCBzdGQ6OnN0cmluZyYgc2hhZGVyU3RyaW5nKQor
ICAgIHsKKyAgICAgICAgY29uc3QgY2hhciAqc2hhZGVyU3RyaW5nc1tdID0geyBzaGFkZXJTdHJp
bmcuY19zdHIoKSB9OworICAgICAgICBib29sIGNvbXBpbGF0aW9uU3VjY2VzcyA9IG1UcmFuc2xh
dG9yLT5jb21waWxlKHNoYWRlclN0cmluZ3MsIDEsIFNIX0lOVEVSTUVESUFURV9UUkVFKTsKKyAg
ICAgICAgVEluZm9TaW5rICZpbmZvU2luayA9IG1UcmFuc2xhdG9yLT5nZXRJbmZvU2luaygpOwor
ICAgICAgICBtSW5mb0xvZyAgICAgICAgICAgICAgICAgICAgPSBSZW1vdmVTeW1ib2xJZHNGcm9t
SW5mb0xvZyhpbmZvU2luay5pbmZvLmNfc3RyKCkpOworICAgICAgICBpZiAoIWNvbXBpbGF0aW9u
U3VjY2VzcykKKyAgICAgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxl
ZCAiIDw8IG1JbmZvTG9nOworICAgIH0KKworICAgIGJvb2wgZm91bmRFcnJvckluSW50ZXJtZWRp
YXRlVHJlZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZm91bmRJbkludGVybWVkaWF0
ZVRyZWUoIkVSUk9SOiIpOworICAgIH0KKworICAgIGJvb2wgZm91bmRJbkludGVybWVkaWF0ZVRy
ZWUoY29uc3QgY2hhciogc3RyaW5nVG9GaW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1JbmZvTG9nLmZpbmQoc3RyaW5nVG9GaW5kKSAhPSBzdGQ6OnN0cmluZzo6bnBvczsKKyAgICB9
CisKKyAgcHJpdmF0ZToKKyAgICAvLyBSZW1vdmUgc3ltYm9sIGlkcyBmcm9tIGluZm8gbG9nIC0g
dGhlIHRlc3RzIGRvbid0IGNhcmUgYWJvdXQgdGhlbS4KKyAgICBzdGF0aWMgc3RkOjpzdHJpbmcg
UmVtb3ZlU3ltYm9sSWRzRnJvbUluZm9Mb2coY29uc3QgY2hhciAqaW5mb0xvZykKKyAgICB7Cisg
ICAgICAgIHN0ZDo6c3RyaW5nIGZpbHRlcmVkTG9nKGluZm9Mb2cpOworICAgICAgICBzaXplX3Qg
aWRQcmVmaXhQb3MgPSAwdTsKKyAgICAgICAgZG8KKyAgICAgICAgeworICAgICAgICAgICAgaWRQ
cmVmaXhQb3MgPSBmaWx0ZXJlZExvZy5maW5kKCIgKHN5bWJvbCBpZCIpOworICAgICAgICAgICAg
aWYgKGlkUHJlZml4UG9zICE9IHN0ZDo6c3RyaW5nOjpucG9zKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHNpemVfdCBpZFN1ZmZpeFBvcyA9IGZpbHRlcmVkTG9nLmZpbmQoIikiLCBp
ZFByZWZpeFBvcyk7CisgICAgICAgICAgICAgICAgZmlsdGVyZWRMb2cuZXJhc2UoaWRQcmVmaXhQ
b3MsIGlkU3VmZml4UG9zIC0gaWRQcmVmaXhQb3MgKyAxdSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0gd2hpbGUgKGlkUHJlZml4UG9zICE9IHN0ZDo6c3RyaW5nOjpucG9zKTsKKyAgICAgICAg
cmV0dXJuIGZpbHRlcmVkTG9nOworICAgIH0KKworICAgIFRyYW5zbGF0b3JFU1NMICptVHJhbnNs
YXRvcjsKKyAgICBzdGQ6OnN0cmluZyBtSW5mb0xvZzsKK307CisKK1RFU1RfRihUeXBlVHJhY2tp
bmdUZXN0LCBGdW5jdGlvblByb3RvdHlwZU1hbmdsaW5nKQoreworICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
CisgICAgICAgICJmbG9hdCBmdW4oZmxvYXQgYSk7XG4iCisgICAgICAgICJ1bmlmb3JtIGZsb2F0
IGY7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBmbG9hdCBmZiA9
IGZ1bihmKTtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoZmYpO1xuIgorICAg
ICAgICAifVxuIgorICAgICAgICAiZmxvYXQgZnVuKGZsb2F0IGEpIHtcbiIKKyAgICAgICAgIiAg
IHJldHVybiBhICogMi4wO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0
cmluZyk7CisgICAgQVNTRVJUX0ZBTFNFKGZvdW5kRXJyb3JJbkludGVybWVkaWF0ZVRyZWUoKSk7
CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoIkZ1bmN0aW9uIFByb3Rv
dHlwZTogZnVuKGYxOyIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSW50ZXJtZWRpYXRlVHJl
ZSgiRnVuY3Rpb24gRGVmaW5pdGlvbjogZnVuKGYxOyIpKTsKK30KKworVEVTVF9GKFR5cGVUcmFj
a2luZ1Rlc3QsIEJ1aWx0SW5GdW5jdGlvblJlc3VsdFByZWNpc2lvbikKK3sKKyAgICBjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0O1xuIgorICAgICAgICAidW5pZm9ybSBmbG9hdCBmO1xuIgorICAgICAgICAidm9pZCBtYWlu
KCkge1xuIgorICAgICAgICAiICAgZmxvYXQgZmYgPSBzaW4oZik7XG4iCisgICAgICAgICIgICBn
bF9GcmFnQ29sb3IgPSB2ZWM0KGZmKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShz
aGFkZXJTdHJpbmcpOworICAgIEFTU0VSVF9GQUxTRShmb3VuZEVycm9ySW5JbnRlcm1lZGlhdGVU
cmVlKCkpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJzaW5lICht
ZWRpdW1wIGZsb2F0KSIpKTsKK30KKworVEVTVF9GKFR5cGVUcmFja2luZ1Rlc3QsIEJpbmFyeU1h
dGhSZXN1bHRQcmVjaXNpb24pCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmlu
ZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZv
cm0gZmxvYXQgZjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGZs
b2F0IGZmID0gZiAqIDAuNTtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoZmYp
O1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNT
RVJUX0ZBTFNFKGZvdW5kRXJyb3JJbkludGVybWVkaWF0ZVRyZWUoKSk7CisgICAgQVNTRVJUX1RS
VUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoIm11bHRpcGx5IChtZWRpdW1wIGZsb2F0KSIpKTsK
K30KKworVEVTVF9GKFR5cGVUcmFja2luZ1Rlc3QsIEJ1aWx0SW5WZWNGdW5jdGlvblJlc3VsdFR5
cGVBbmRQcmVjaXNpb24pCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9
CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0g
dmVjMiBhO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgZmxvYXQg
YiA9IGxlbmd0aChhKTtcbiIKKyAgICAgICAgIiAgIGZsb2F0IGMgPSBkb3QoYSwgdmVjMigwLjUp
KTtcbiIKKyAgICAgICAgIiAgIGZsb2F0IGQgPSBkaXN0YW5jZSh2ZWMyKDAuNSksIGEpO1xuIgor
ICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChiLCBjLCBkLCAxLjApO1xuIgorICAgICAg
ICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX0ZBTFNFKGZv
dW5kRXJyb3JJbkludGVybWVkaWF0ZVRyZWUoKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbklu
dGVybWVkaWF0ZVRyZWUoImxlbmd0aCAobWVkaXVtcCBmbG9hdCkiKSk7CisgICAgQVNTRVJUX1RS
VUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoImRvdC1wcm9kdWN0IChtZWRpdW1wIGZsb2F0KSIp
KTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSW50ZXJtZWRpYXRlVHJlZSgiZGlzdGFuY2UgKG1l
ZGl1bXAgZmxvYXQpIikpOworfQorCitURVNUX0YoVHlwZVRyYWNraW5nVGVzdCwgQnVpbHRJbk1h
dEZ1bmN0aW9uUmVzdWx0VHlwZUFuZFByZWNpc2lvbikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAi
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29s
b3I7XG4iCisgICAgICAgICJ1bmlmb3JtIG1hdDQgbTtcbiIKKyAgICAgICAgInZvaWQgbWFpbigp
IHtcbiIKKyAgICAgICAgIiAgIG1hdDN4MiB0bXAzMiA9IG1hdDN4MihtKTtcbiIKKyAgICAgICAg
IiAgIG1hdDJ4MyB0bXAyMyA9IG1hdDJ4MyhtKTtcbiIKKyAgICAgICAgIiAgIG1hdDR4MiB0bXA0
MiA9IG1hdDR4MihtKTtcbiIKKyAgICAgICAgIiAgIG1hdDJ4NCB0bXAyNCA9IG1hdDJ4NChtKTtc
biIKKyAgICAgICAgIiAgIG1hdDR4MyB0bXA0MyA9IG1hdDR4MyhtKTtcbiIKKyAgICAgICAgIiAg
IG1hdDN4NCB0bXAzNCA9IG1hdDN4NChtKTtcbiIKKyAgICAgICAgIiAgIG15X0ZyYWdDb2xvciA9
IHZlYzQodG1wMzJbMl1bMV0gKiB0bXAyM1sxXVsyXSwgdG1wNDJbM11bMV0gKiB0bXAyNFsxXVsz
XSwgdG1wNDNbM11bMl0gKiB0bXAzNFsyXVszXSwgMS4wKTtcbiIKKyAgICAgICAgIn1cbiI7Cisg
ICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VSVF9GQUxTRShmb3VuZEVycm9ySW5J
bnRlcm1lZGlhdGVUcmVlKCkpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVU
cmVlKCJDb25zdHJ1Y3QgbWF0MngzIChtZWRpdW1wIDJYMyBtYXRyaXggb2YgZmxvYXQpIikpOwor
ICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJDb25zdHJ1Y3QgbWF0M3gy
IChtZWRpdW1wIDNYMiBtYXRyaXggb2YgZmxvYXQpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5k
SW5JbnRlcm1lZGlhdGVUcmVlKCJDb25zdHJ1Y3QgbWF0Mng0IChtZWRpdW1wIDJYNCBtYXRyaXgg
b2YgZmxvYXQpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJD
b25zdHJ1Y3QgbWF0NHgyIChtZWRpdW1wIDRYMiBtYXRyaXggb2YgZmxvYXQpIikpOworICAgIEFT
U0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJDb25zdHJ1Y3QgbWF0M3g0IChtZWRp
dW1wIDNYNCBtYXRyaXggb2YgZmxvYXQpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRl
cm1lZGlhdGVUcmVlKCJDb25zdHJ1Y3QgbWF0NHgzIChtZWRpdW1wIDRYMyBtYXRyaXggb2YgZmxv
YXQpIikpOworfQorCitURVNUX0YoVHlwZVRyYWNraW5nVGVzdCwgQnVpbHRJbkZ1bmN0aW9uQ2hv
b3Nlc0hpZ2hlclByZWNpc2lvbikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3Ry
aW5nID0KKyAgICAgICAgInByZWNpc2lvbiBsb3dwIGZsb2F0O1xuIgorICAgICAgICAidW5pZm9y
bSBtZWRpdW1wIHZlYzIgYTtcbiIKKyAgICAgICAgInVuaWZvcm0gbG93cCB2ZWMyIGI7XG4iCisg
ICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBmbG9hdCBjID0gZG90KGEsIGIp
O1xuIgorICAgICAgICAiICAgZmxvYXQgZCA9IGRpc3RhbmNlKGIsIGEpO1xuIgorICAgICAgICAi
ICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChjLCBkLCAwLjAsIDEuMCk7XG4iCisgICAgICAgICJ9XG4i
OworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBBU1NFUlRfRkFMU0UoZm91bmRFcnJv
ckluSW50ZXJtZWRpYXRlVHJlZSgpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSW50ZXJtZWRp
YXRlVHJlZSgiZG90LXByb2R1Y3QgKG1lZGl1bXAgZmxvYXQpIikpOworICAgIEFTU0VSVF9UUlVF
KGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJkaXN0YW5jZSAobWVkaXVtcCBmbG9hdCkiKSk7Cit9
CisKK1RFU1RfRihUeXBlVHJhY2tpbmdUZXN0LCBCdWlsdEluQm9vbEZ1bmN0aW9uUmVzdWx0VHlw
ZSkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInVu
aWZvcm0gYnZlYzQgYmVlcztcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAg
IiAgIGJvb2wgYiA9IGFueShiZWVzKTtcbiIKKyAgICAgICAgIiAgIGJvb2wgYyA9IGFsbChiZWVz
KTtcbiIKKyAgICAgICAgIiAgIGJ2ZWM0IGQgPSBub3QoYmVlcyk7XG4iCisgICAgICAgICIgICBn
bF9GcmFnQ29sb3IgPSB2ZWM0KGIgPyAxLjAgOiAwLjAsIGMgPyAxLjAgOiAwLjAsIGQueCA/IDEu
MCA6IDAuMCwgMS4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJp
bmcpOworICAgIEFTU0VSVF9GQUxTRShmb3VuZEVycm9ySW5JbnRlcm1lZGlhdGVUcmVlKCkpOwor
ICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJhbnkgKGJvb2wpIikpOwor
ICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJhbGwgKGJvb2wpIikpOwor
ICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJOZWdhdGUgY29uZGl0aW9u
YWwgKDQtY29tcG9uZW50IHZlY3RvciBvZiBib29sKSIpKTsKK30KKworVEVTVF9GKFR5cGVUcmFj
a2luZ1Rlc3QsIEJ1aWx0SW5WZWNUb0Jvb2xGdW5jdGlvblJlc3VsdFR5cGUpCit7CisgICAgY29u
c3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gdmVjMiBhcHBsZXM7XG4iCisgICAgICAgICJ1
bmlmb3JtIHZlYzIgb3JhbmdlcztcbiIKKyAgICAgICAgInVuaWZvcm0gaXZlYzIgZm9vO1xuIgor
ICAgICAgICAidW5pZm9ybSBpdmVjMiBiYXI7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4i
CisgICAgICAgICIgICBidmVjMiBhID0gbGVzc1RoYW4oYXBwbGVzLCBvcmFuZ2VzKTtcbiIKKyAg
ICAgICAgIiAgIGJ2ZWMyIGIgPSBncmVhdGVyVGhhbihmb28sIGJhcik7XG4iCisgICAgICAgICIg
ICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGFueShhKSA/IDEuMCA6IDAuMCwgYW55KGIpID8gMS4wIDog
MC4wLCAwLjAsIDEuMCk7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3Ry
aW5nKTsKKyAgICBBU1NFUlRfRkFMU0UoZm91bmRFcnJvckluSW50ZXJtZWRpYXRlVHJlZSgpKTsK
KyAgICBBU1NFUlRfVFJVRShmb3VuZEluSW50ZXJtZWRpYXRlVHJlZSgiTGVzcyBUaGFuICgyLWNv
bXBvbmVudCB2ZWN0b3Igb2YgYm9vbCkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkludGVy
bWVkaWF0ZVRyZWUoIkdyZWF0ZXIgVGhhbiAoMi1jb21wb25lbnQgdmVjdG9yIG9mIGJvb2wpIikp
OworfQorCitURVNUX0YoVHlwZVRyYWNraW5nVGVzdCwgVGV4dHVyZTJEUmVzdWx0VHlwZUFuZFBy
ZWNpc2lvbikKK3sKKyAgICAvLyBFU1NMIHNwZWMgc2VjdGlvbiA0LjUuMzogc2FtcGxlcjJEIGFu
ZCBzYW1wbGVyQ3ViZSBhcmUgbG93cCBieSBkZWZhdWx0CisgICAgLy8gRVNTTCBzcGVjIHNlY3Rp
b24gODogRm9yIHRoZSB0ZXh0dXJlIGZ1bmN0aW9ucywgdGhlIHByZWNpc2lvbiBvZiB0aGUgcmV0
dXJuIHR5cGUgbWF0Y2hlcyB0aGUgcHJlY2lzaW9uIG9mIHRoZSBzYW1wbGVyIHR5cGUuCisgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHM7XG4iCisgICAgICAg
ICJ1bmlmb3JtIHZlYzIgYTtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAg
IiAgIHZlYzQgYyA9IHRleHR1cmUyRChzLCBhKTtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xv
ciA9IGM7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAg
ICBBU1NFUlRfRkFMU0UoZm91bmRFcnJvckluSW50ZXJtZWRpYXRlVHJlZSgpKTsKKyAgICBBU1NF
UlRfVFJVRShmb3VuZEluSW50ZXJtZWRpYXRlVHJlZSgidGV4dHVyZTJEKHMyMTt2ZjI7IChsb3dw
IDQtY29tcG9uZW50IHZlY3RvciBvZiBmbG9hdCkiKSk7Cit9CisKK1RFU1RfRihUeXBlVHJhY2tp
bmdUZXN0LCBUZXh0dXJlQ3ViZVJlc3VsdFR5cGVBbmRQcmVjaXNpb24pCit7CisgICAgLy8gRVNT
TCBzcGVjIHNlY3Rpb24gNC41LjM6IHNhbXBsZXIyRCBhbmQgc2FtcGxlckN1YmUgYXJlIGxvd3Ag
YnkgZGVmYXVsdAorICAgIC8vIEVTU0wgc3BlYyBzZWN0aW9uIDg6IEZvciB0aGUgdGV4dHVyZSBm
dW5jdGlvbnMsIHRoZSBwcmVjaXNpb24gb2YgdGhlIHJldHVybiB0eXBlIG1hdGNoZXMgdGhlIHBy
ZWNpc2lvbiBvZiB0aGUgc2FtcGxlciB0eXBlLgorICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFk
ZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAg
ICJ1bmlmb3JtIHNhbXBsZXJDdWJlIHNjO1xuIgorICAgICAgICAidW5pZm9ybSB2ZWMzIGE7XG4i
CisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICB2ZWM0IGMgPSB0ZXh0dXJl
Q3ViZShzYywgYSk7XG4iCisgICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSBjO1xuIgorICAgICAg
ICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX0ZBTFNFKGZv
dW5kRXJyb3JJbkludGVybWVkaWF0ZVRyZWUoKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbklu
dGVybWVkaWF0ZVRyZWUoInRleHR1cmVDdWJlKHNDMTt2ZjM7IChsb3dwIDQtY29tcG9uZW50IHZl
Y3RvciBvZiBmbG9hdCkiKSk7Cit9CisKK1RFU1RfRihUeXBlVHJhY2tpbmdUZXN0LCBUZXh0dXJl
U2l6ZVJlc3VsdFR5cGVBbmRQcmVjaXNpb24pCit7CisgICAgLy8gRVNTTCAzLjAgc3BlYyBzZWN0
aW9uIDg6IHRleHR1cmVTaXplIGhhcyBwcmVkZWZpbmVkIHByZWNpc2lvbiBoaWdocAorICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVz
XG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2
ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHM7XG4iCisg
ICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBpdmVjMiBzaXplID0gdGV4dHVy
ZVNpemUocywgMCk7XG4iCisgICAgICAgICIgICBpZiAoc2l6ZS54ID4gMTAwKSB7XG4iCisgICAg
ICAgICIgICAgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDEuMCwgMC4wLCAxLjApO1xuIgor
ICAgICAgICAiICAgfSBlbHNlIHtcbiIKKyAgICAgICAgIiAgICAgICBteV9GcmFnQ29sb3IgPSB2
ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7XG4iCisgICAgICAgICIgICB9XG4iCisgICAgICAgICJ9
XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBBU1NFUlRfRkFMU0UoZm91bmRF
cnJvckluSW50ZXJtZWRpYXRlVHJlZSgpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSW50ZXJt
ZWRpYXRlVHJlZSgidGV4dHVyZVNpemUoczIxO2kxOyAoaGlnaHAgMi1jb21wb25lbnQgdmVjdG9y
IG9mIGludCkiKSk7Cit9CisKK1RFU1RfRihUeXBlVHJhY2tpbmdUZXN0LCBCdWlsdEluQ29uc3Ry
dWN0b3JSZXN1bHRUeXBlQW5kUHJlY2lzaW9uKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZz
aGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAg
ICAgICJ1bmlmb3JtIGZsb2F0IHUxO1xuIgorICAgICAgICAidW5pZm9ybSBmbG9hdCB1MjtcbiIK
KyAgICAgICAgInVuaWZvcm0gZmxvYXQgdTM7XG4iCisgICAgICAgICJ1bmlmb3JtIGZsb2F0IHU0
O1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgdmVjNCBhID0gdmVj
NCh1MSwgdTIsIHUzLCB1NCk7XG4iCisgICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSBhO1xuIgor
ICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX0ZB
TFNFKGZvdW5kRXJyb3JJbkludGVybWVkaWF0ZVRyZWUoKSk7CisgICAgQVNTRVJUX1RSVUUoZm91
bmRJbkludGVybWVkaWF0ZVRyZWUoIkNvbnN0cnVjdCB2ZWM0IChtZWRpdW1wIDQtY29tcG9uZW50
IHZlY3RvciBvZiBmbG9hdCkiKSk7Cit9CisKK1RFU1RfRihUeXBlVHJhY2tpbmdUZXN0LCBTdHJ1
Y3RDb25zdHJ1Y3RvclJlc3VsdE5vUHJlY2lzaW9uKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisg
ICAgICAgICJ1bmlmb3JtIHZlYzQgdTE7XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzQgdTI7XG4i
CisgICAgICAgICJzdHJ1Y3QgUyB7IGhpZ2hwIHZlYzQgYTsgaGlnaHAgdmVjNCBiOyB9O1xuIgor
ICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgUyBzID0gUyh1MSwgdTIpO1xu
IgorICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gcy5hO1xuIgorICAgICAgICAifVxuIjsKKyAg
ICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX0ZBTFNFKGZvdW5kRXJyb3JJbklu
dGVybWVkaWF0ZVRyZWUoKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRy
ZWUoIkNvbnN0cnVjdCBzdHJ1Y3R1cmUgKHN0cnVjdHVyZSkiKSk7Cit9CisKK1RFU1RfRihUeXBl
VHJhY2tpbmdUZXN0LCBQYWNrUmVzdWx0VHlwZUFuZFByZWNpc2lvbikKK3sKKyAgICAvLyBFU1NM
IDMuMCBzcGVjIHNlY3Rpb24gOC40OiBwYWNrIGZ1bmN0aW9ucyBoYXZlIHByZWRlZmluZWQgcHJl
Y2lzaW9uIGhpZ2hwCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAg
ICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
O1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgaW50O1xuIgorICAgICAgICAidW5pZm9y
bSB2ZWMyIHV2O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAg
ICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgdWludCB1MCA9IHBhY2tTbm9ybTJ4MTYo
dXYpO1xuIgorICAgICAgICAiICAgdWludCB1MSA9IHBhY2tVbm9ybTJ4MTYodXYpO1xuIgorICAg
ICAgICAiICAgdWludCB1MiA9IHBhY2tIYWxmMngxNih1dik7XG4iCisgICAgICAgICIgICBpZiAo
dTAgKyB1MSArIHUyID4gMTAwdSkge1xuIgorICAgICAgICAiICAgICAgIG15X0ZyYWdDb2xvciA9
IHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKTtcbiIKKyAgICAgICAgIiAgIH0gZWxzZSB7XG4iCisg
ICAgICAgICIgICAgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApO1xu
IgorICAgICAgICAiICAgfVxuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0
cmluZyk7CisgICAgQVNTRVJUX0ZBTFNFKGZvdW5kRXJyb3JJbkludGVybWVkaWF0ZVRyZWUoKSk7
CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoInBhY2sgU25vcm0gMngx
NiAoaGlnaHAgdWludCkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRy
ZWUoInBhY2sgVW5vcm0gMngxNiAoaGlnaHAgdWludCkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91
bmRJbkludGVybWVkaWF0ZVRyZWUoInBhY2sgaGFsZiAyeDE2IChoaWdocCB1aW50KSIpKTsKK30K
KworVEVTVF9GKFR5cGVUcmFja2luZ1Rlc3QsIFVucGFja05vcm1SZXN1bHRUeXBlQW5kUHJlY2lz
aW9uKQoreworICAgIC8vIEVTU0wgMy4wIHNwZWMgc2VjdGlvbiA4LjQ6IHVucGFjayhTL1Upbm9y
bTJ4MTYgaGFzIHByZWRlZmluZWQgcHJlY2lzaW9uIGhpZ2hwCisgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAg
InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAg
aW50O1xuIgorICAgICAgICAidW5pZm9ybSB1aW50IHV1O1xuIgorICAgICAgICAib3V0IHZlYzQg
bXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAg
dmVjMiB2MCA9IHVucGFja1Nub3JtMngxNih1dSk7XG4iCisgICAgICAgICIgICB2ZWMyIHYxID0g
dW5wYWNrVW5vcm0yeDE2KHV1KTtcbiIKKyAgICAgICAgIiAgIGlmICh2MC54ICogdjEueCA+IDEu
MCkge1xuIgorICAgICAgICAiICAgICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAxLjAsIDAu
MCwgMS4wKTtcbiIKKyAgICAgICAgIiAgIH0gZWxzZSB7XG4iCisgICAgICAgICIgICAgICAgbXlf
RnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApO1xuIgorICAgICAgICAiICAgfVxu
IgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJU
X0ZBTFNFKGZvdW5kRXJyb3JJbkludGVybWVkaWF0ZVRyZWUoKSk7CisgICAgQVNTRVJUX1RSVUUo
Zm91bmRJbkludGVybWVkaWF0ZVRyZWUoInVucGFjayBTbm9ybSAyeDE2IChoaWdocCAyLWNvbXBv
bmVudCB2ZWN0b3Igb2YgZmxvYXQpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1l
ZGlhdGVUcmVlKCJ1bnBhY2sgVW5vcm0gMngxNiAoaGlnaHAgMi1jb21wb25lbnQgdmVjdG9yIG9m
IGZsb2F0KSIpKTsKK30KKworVEVTVF9GKFR5cGVUcmFja2luZ1Rlc3QsIFVucGFja0hhbGZSZXN1
bHRUeXBlQW5kUHJlY2lzaW9uKQoreworICAgIC8vIEVTU0wgMy4wIHNwZWMgc2VjdGlvbiA4LjQ6
IHVucGFja0hhbGYyeDE2IGhhcyBwcmVkZWZpbmVkIHByZWNpc2lvbiBtZWRpdW1wCisgICAgY29u
c3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNc
biIKKyAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKKyAgICAgICAgInByZWNpc2lv
biBoaWdocCBpbnQ7XG4iCisgICAgICAgICJ1bmlmb3JtIHVpbnQgdXU7XG4iCisgICAgICAgICJv
dXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAg
ICAgICIgICB2ZWMyIHYgPSB1bnBhY2tIYWxmMngxNih1dSk7XG4iCisgICAgICAgICIgICBpZiAo
di54ID4gMS4wKSB7XG4iCisgICAgICAgICIgICAgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLjAs
IDEuMCwgMC4wLCAxLjApO1xuIgorICAgICAgICAiICAgfSBlbHNlIHtcbiIKKyAgICAgICAgIiAg
ICAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7XG4iCisgICAgICAg
ICIgICB9XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAg
ICBBU1NFUlRfRkFMU0UoZm91bmRFcnJvckluSW50ZXJtZWRpYXRlVHJlZSgpKTsKKyAgICBBU1NF
UlRfVFJVRShmb3VuZEluSW50ZXJtZWRpYXRlVHJlZSgidW5wYWNrIGhhbGYgMngxNiAobWVkaXVt
cCAyLWNvbXBvbmVudCB2ZWN0b3Igb2YgZmxvYXQpIikpOworfQorCitURVNUX0YoVHlwZVRyYWNr
aW5nVGVzdCwgQnVpbHRJbkFic1NpZ25GdW5jdGlvbkZsb2F0UmVzdWx0VHlwZUFuZFByZWNpc2lv
bikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidW5pZm9ybSBmbG9hdCBmdmFsMTtc
biIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGZsb2F0IGZ2YWwyID0g
YWJzKGZ2YWwxKTtcbiIKKyAgICAgICAgIiAgIGZsb2F0IGZ2YWwzID0gc2lnbihmdmFsMSk7XG4i
CisgICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGZ2YWwxLCAwLjAsIDAuMCwgMS4wKTsg
XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBBU1NF
UlRfRkFMU0UoZm91bmRFcnJvckluSW50ZXJtZWRpYXRlVHJlZSgpKTsKKyAgICBBU1NFUlRfVFJV
RShmb3VuZEluSW50ZXJtZWRpYXRlVHJlZSgiQWJzb2x1dGUgdmFsdWUgKG1lZGl1bXAgZmxvYXQp
IikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJTaWduIChtZWRp
dW1wIGZsb2F0KSIpKTsKK30KKworVEVTVF9GKFR5cGVUcmFja2luZ1Rlc3QsIEJ1aWx0SW5BYnNT
aWduRnVuY3Rpb25JbnRSZXN1bHRUeXBlQW5kUHJlY2lzaW9uKQoreworICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAg
ICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRp
dW1wIGludDtcbiIKKyAgICAgICAgInVuaWZvcm0gaW50IGl2YWwxO1xuIgorICAgICAgICAib3V0
IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAg
ICAiICAgaW50IGl2YWwyID0gYWJzKGl2YWwxKTtcbiIKKyAgICAgICAgIiAgIGludCBpdmFsMyA9
IHNpZ24oaXZhbDEpO1xuIgorICAgICAgICAiICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDAu
MCwgMC4wLCAxLjApOyBcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJp
bmcpOworICAgIEFTU0VSVF9GQUxTRShmb3VuZEVycm9ySW5JbnRlcm1lZGlhdGVUcmVlKCkpOwor
ICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJBYnNvbHV0ZSB2YWx1ZSAo
bWVkaXVtcCBpbnQpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVl
KCJTaWduIChtZWRpdW1wIGludCkiKSk7Cit9CisKK1RFU1RfRihUeXBlVHJhY2tpbmdUZXN0LCBC
dWlsdEluRmxvYXRCaXRzVG9JbnRSZXN1bHRUeXBlQW5kUHJlY2lzaW9uKQoreworICAgIC8vIEVT
U0wgMy4wMCBzZWN0aW9uIDguMzogZmxvYXRCaXRzVG8oVSlpbnQgcmV0dXJucyBhIGhpZ2hwIHZh
bHVlLgorICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3Zl
cnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAg
ICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGludDtcbiIKKyAgICAgICAgInVuaWZvcm0gZmxvYXQg
ZjtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQg
bWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGludCBpID0gZmxvYXRCaXRzVG9JbnQoZik7XG4iCisg
ICAgICAgICIgICB1aW50IHUgPSBmbG9hdEJpdHNUb1VpbnQoZik7XG4iCisgICAgICAgICIgICBt
eV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCk7IFxuIgorICAgICAgICAifVxu
IjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX0ZBTFNFKGZvdW5kRXJy
b3JJbkludGVybWVkaWF0ZVRyZWUoKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVk
aWF0ZVRyZWUoImZsb2F0IGJpdHMgdG8gaW50IChoaWdocCBpbnQpIikpOworICAgIEFTU0VSVF9U
UlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJmbG9hdCBiaXRzIHRvIHVpbnQgKGhpZ2hwIHVp
bnQpIikpOworfQorCitURVNUX0YoVHlwZVRyYWNraW5nVGVzdCwgQnVpbHRJbkludEJpdHNUb0Zs
b2F0UmVzdWx0VHlwZUFuZFByZWNpc2lvbikKK3sKKyAgICAvLyBFU1NMIDMuMDAgc2VjdGlvbiA4
LjM6ICh1KWludEJpdHNUb0Zsb2F0IHJldHVybnMgYSBoaWdocCB2YWx1ZS4KKyAgICBjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgor
ICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJwcmVjaXNpb24g
bWVkaXVtcCBpbnQ7XG4iCisgICAgICAgICJ1bmlmb3JtIGludCBpO1xuIgorICAgICAgICAidW5p
Zm9ybSB1aW50IHU7XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAg
ICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBmbG9hdCBmMSA9IGludEJpdHNUb0Zs
b2F0KGkpO1xuIgorICAgICAgICAiICAgZmxvYXQgZjIgPSB1aW50Qml0c1RvRmxvYXQodSk7XG4i
CisgICAgICAgICIgICBteV9GcmFnQ29sb3IgPSB2ZWM0KGYxLCBmMiwgMC4wLCAxLjApOyBcbiIK
KyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VSVF9G
QUxTRShmb3VuZEVycm9ySW5JbnRlcm1lZGlhdGVUcmVlKCkpOworICAgIEFTU0VSVF9UUlVFKGZv
dW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJpbnQgYml0cyB0byBmbG9hdCAoaGlnaHAgZmxvYXQpIikp
OworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJ1aW50IGJpdHMgdG8g
ZmxvYXQgKGhpZ2hwIGZsb2F0KSIpKTsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9VbnJvbGxGbGF0dGVuX3Rlc3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9V
bnJvbGxGbGF0dGVuX3Rlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9VbnJvbGxGbGF0dGVuX3Rlc3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjA3IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE1
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFVucm9sbEZs
YXR0ZW5fdGVzdC5jcHA6CisvLyAgIFRlc3QgZm9yIHRoZSBvdXRwdXR0aW5nIG9mIFtbdW5yb2xs
XV0gYW5kIFtbZmxhdHRlbl1dIGZvciB0aGUgRDNEIGNvbXBpbGVyLgorLy8gICBUaGlzIHRlc3Qg
Y2FuIG9ubHkgYmUgZW5hYmxlZCB3aGVuIEhMU0wgc3VwcG9ydCBpcyBlbmFibGVkLgorLy8KKwor
I2luY2x1ZGUgImFuZ2xlX2dsLmgiCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKyNp
bmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgor
I2luY2x1ZGUgInRlc3RzL3Rlc3RfdXRpbHMvY29tcGlsZXJfdGVzdC5oIgorCituYW1lc3BhY2UK
K3sKKworY2xhc3MgVW5yb2xsRmxhdHRlblRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdAorewor
ICBwdWJsaWM6CisgICAgVW5yb2xsRmxhdHRlblRlc3QoKSB7fQorCisgIHByb3RlY3RlZDoKKyAg
ICB2b2lkIGNvbXBpbGUoY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZykKKyAgICB7Cisg
ICAgICAgIHN0ZDo6c3RyaW5nIGluZm9Mb2c7CisgICAgICAgIGJvb2wgY29tcGlsYXRpb25TdWNj
ZXNzID0KKyAgICAgICAgICAgIGNvbXBpbGVUZXN0U2hhZGVyKEdMX0ZSQUdNRU5UX1NIQURFUiwg
U0hfR0xFUzJfU1BFQywgU0hfSExTTF80XzFfT1VUUFVULCBzaGFkZXJTdHJpbmcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTSF9WQVJJQUJMRVMsICZtVHJhbnNsYXRlZFNvdXJjZSwg
JmluZm9Mb2cpOworICAgICAgICBpZiAoIWNvbXBpbGF0aW9uU3VjY2VzcykKKyAgICAgICAgewor
ICAgICAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkICIgPDwgaW5m
b0xvZzsKKyAgICAgICAgfQorICAgICAgICAvLyBJZ25vcmUgdGhlIGJlZ2lubmluZyBvZiB0aGUg
c2hhZGVyIHRvIGF2b2lkIHRoZSBkZWZpbml0aW9ucyBvZiBMT09QIGFuZCBGTEFUVEVOCisgICAg
ICAgIG1DdXJyZW50UG9zaXRpb24gPSBzdGF0aWNfY2FzdDxpbnQ+KG1UcmFuc2xhdGVkU291cmNl
LmZpbmQoIkdMX1VTRVNfRlJBR19DT0xPUiIpKTsKKyAgICB9CisKKyAgICB2b2lkIGV4cGVjdChj
b25zdCBjaGFyICpwYXR0ZXJuc1tdLCBzaXplX3QgY291bnQpCisgICAgeworICAgICAgICBjb25z
dCBjaGFyICpiYWRQYXR0ZXJuc1tdID0geyBVTlJPTEwsIEZMQVRURU4gfTsKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBj
b25zdCBjaGFyICpwYXR0ZXJuID0gcGF0dGVybnNbaV07CisgICAgICAgICAgICBhdXRvIHBvc2l0
aW9uID0gbVRyYW5zbGF0ZWRTb3VyY2UuZmluZChwYXR0ZXJuLCBtQ3VycmVudFBvc2l0aW9uKTsK
KyAgICAgICAgICAgIGlmIChwb3NpdGlvbiA9PSBzdGQ6OnN0cmluZzo6bnBvcykKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBGQUlMKCkgPDwgIkNvdWxkbid0IGZpbmQgJyIgPDwgcGF0
dGVybiA8PCAiJyBhZnRlciBleHBlY3RhdGlvbnMgJyIKKyAgICAgICAgICAgICAgICAgICAgICAg
PDwgbUV4cGVjdGF0aW9uTGlzdCA8PCAiJyBpbiB0cmFuc2xhdGVkIHNvdXJjZTpcbiIgPDwgbVRy
YW5zbGF0ZWRTb3VyY2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoc2l6ZV90
IGogPSAwOyBqIDwgQXJyYXlTaXplKGJhZFBhdHRlcm5zKTsgaisrKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJhZFBhdHRlcm4gPSBiYWRQYXR0ZXJuc1tqXTsK
KyAgICAgICAgICAgICAgICBpZiAocGF0dGVybiAhPSBiYWRQYXR0ZXJuICYmCisgICAgICAgICAg
ICAgICAgICAgIG1UcmFuc2xhdGVkU291cmNlLmZpbmQoYmFkUGF0dGVybiwgbUN1cnJlbnRQb3Np
dGlvbikgPCBwb3NpdGlvbikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IEZBSUwoKSA8PCAiRm91bmQgJyIgPDwgYmFkUGF0dGVybiA8PCAiJyBiZWZvcmUgJyIgPDwgcGF0
dGVybiA8PCAiJyBhZnRlciBleHBlY3RhdGlvbnMgJyIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDw8IG1FeHBlY3RhdGlvbkxpc3QgPDwgIicgaW4gdHJhbnNsYXRlZCBzb3VyY2U6XG4iIDw8
IG1UcmFuc2xhdGVkU291cmNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIG1FeHBlY3RhdGlvbkxpc3QgKz0gIiAtICIgKyBzdGQ6OnN0cmluZyhwYXR0ZXJu
KTsKKyAgICAgICAgICAgIG1DdXJyZW50UG9zaXRpb24gPSBzdGF0aWNfY2FzdDxpbnQ+KHBvc2l0
aW9uKSArIDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqVU5S
T0xMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICpGTEFUVEVOOworCisgIHByaXZhdGU6CisgICAg
c3RkOjpzdHJpbmcgbVRyYW5zbGF0ZWRTb3VyY2U7CisKKyAgICBpbnQgbUN1cnJlbnRQb3NpdGlv
bjsKKyAgICBzdGQ6OnN0cmluZyBtRXhwZWN0YXRpb25MaXN0OworfTsKKworY29uc3QgY2hhciAq
VW5yb2xsRmxhdHRlblRlc3Q6OlVOUk9MTCA9ICJMT09QIjsKK2NvbnN0IGNoYXIgKlVucm9sbEZs
YXR0ZW5UZXN0OjpGTEFUVEVOID0gIkZMQVRURU4iOworCisvLyBDaGVjayB0aGF0IHRoZSBub3Ro
aW5nIGlzIGFkZGVkIGlmIHRoZXJlIGlzIG5vIGdyYWRpZW50IG9wZXJhdGlvbgorLy8gZXZlbiB3
aGVuIHRoZXJlIGlzIGlmcyBhbmQgZGlzY29udGludW91cyBsb29wcworVEVTVF9GKFVucm9sbEZs
YXR0ZW5UZXN0LCBOb0dyYWRpZW50KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJT
dHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ1
bmlmb3JtIGZsb2F0IGY7XG4iCisgICAgICAgICJmbG9hdCBmdW4oZmxvYXQgYSl7XG4iIC8vIDEK
KyAgICAgICAgIiAgICBpZiAoYSA+IDEuMCkge3JldHVybiBmO31cbiIgLy8gMgorICAgICAgICAi
ICAgIGVsc2Uge3JldHVybiBhICsgMS4wO31cbiIKKyAgICAgICAgIn1cbiIKKyAgICAgICAgImZs
b2F0IGZ1bjIoZmxvYXQgYSl7XG4iIC8vIDMKKyAgICAgICAgIiAgICBmb3IgKGludCBpID0gMDsg
aSA8IDEwOyBpKyspIHtcbiIgLy8gNAorICAgICAgICAiICAgICAgICBpZiAoYSA+IDEuMCkge2Jy
ZWFrO31cbiIgLy8gNQorICAgICAgICAiICAgICAgICBhID0gZnVuKGEpO1xuIiAvLyA2CisgICAg
ICAgICIgICAgfVxuIgorICAgICAgICAiICAgIHJldHVybiBhO1xuIgorICAgICAgICAifVxuIgor
ICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgIGZsb2F0IGFjY3VtID0gMC4w
O1xuIgorICAgICAgICAiICAgIGlmIChmIDwgNS4wKSB7YWNjdW0gPSBmdW4yKGFjY3VtKTt9XG4i
IC8vIDcKKyAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGFjY3VtKTtcbiIKKyAgICAg
ICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIC8vIDEgLSBzaG91bGRu
J3QgZ2V0IGEgTG9kMCB2ZXJzaW9uIGdlbmVyYXRlZAorICAgIC8vIDIgLSBubyBGTEFUVEVOIGJl
Y2F1c2UgZG9lcyBub3QgY29udGFpbiBkaXNjb250IGxvb3AKKyAgICAvLyAzIC0gc2hvdWxkbid0
IGdldCBhIExvZDAgdmVyc2lvbiBnZW5lcmF0ZWQKKyAgICAvLyA0IC0gbm8gTE9PUCBiZWNhdXNl
IGRpc2NvbnQsIGFuZCBhbHNvIG5vIGdyYWRpZW50CisgICAgLy8gNSAtIG5vIEZMQVRURU4gYmVj
YXVzZSBkb2VzIG5vdCBjb250YWluIGxvb3Agd2l0aCBhIGdyYWRpZW50CisgICAgLy8gNiAtIGNh
bGwgbm9uLUxvZDAgdmVyc2lvbgorICAgIC8vIDcgLSBubyBGTEFUVEVOCisgICAgY29uc3QgY2hh
ciAqZXhwZWN0YXRpb25zW10gPQorICAgIHsKKyAgICAgICAgImZ1bigiLCAiaWYiLAorICAgICAg
ICAiZnVuMigiLCAiZm9yIiwgImlmIiwgImJyZWFrIiwgImZ1bigiLAorICAgICAgICAibWFpbigi
LCAiaWYiLCAiZnVuMigiCisgICAgfTsKKyAgICBleHBlY3QoZXhwZWN0YXRpb25zLCBBcnJheVNp
emUoZXhwZWN0YXRpb25zKSk7Cit9CisKKy8vIENoZWNrIHRoYXQgd2hlbiB3ZSBoYXZlIGEgZ3Jh
ZGllbnQgaW4gYSBub24tZGlzY29udGludW91cyBsb29wCisvLyB3ZSB1c2UgdGhlIHJlZ3VsYXIg
dmVyc2lvbiBvZiB0aGUgZnVuY3Rpb25zLiBBbHNvIGNoZWNrcyB0aGF0CisvLyBMT09QIGlzIGdl
bmVyYXRlZCBmb3IgdGhlIGxvb3AgY29udGFpbmluZyB0aGUgZ3JhZGllbnQuCitURVNUX0YoVW5y
b2xsRmxhdHRlblRlc3QsIEdyYWRpZW50Tm90SW5EaXNjb250KQoreworICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
XG4iCisgICAgICAgICJ1bmlmb3JtIGZsb2F0IGY7XG4iCisgICAgICAgICJ1bmlmb3JtIHNhbXBs
ZXIyRCB0ZXg7IgorICAgICAgICAiZmxvYXQgZnVuKGZsb2F0IGEpe1xuIiAvLyAxCisgICAgICAg
ICIgICAgcmV0dXJuIHRleHR1cmUyRCh0ZXgsIHZlYzIoMC41LCBmKSkueDtcbiIgLy8gMgorICAg
ICAgICAifVxuIgorICAgICAgICAiZmxvYXQgZnVuMihmbG9hdCBhKXtcbiIgLy8gMworICAgICAg
ICAiICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykge1xuIiAvLyA0CisgICAgICAgICIg
ICAgICAgIGlmIChhID4gMS4wKSB7fVxuIiAvLyA1CisgICAgICAgICIgICAgICAgIGEgPSBmdW4o
YSk7XG4iIC8vIDYKKyAgICAgICAgIiAgICAgICAgYSArPSB0ZXh0dXJlMkQodGV4LCB2ZWMyKGEs
IDAuMCkpLng7IiAvLyA3CisgICAgICAgICIgICAgfVxuIgorICAgICAgICAiICAgIHJldHVybiBh
O1xuIgorICAgICAgICAifVxuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAi
ICAgIGZsb2F0IGFjY3VtID0gMC4wO1xuIgorICAgICAgICAiICAgIGlmIChmIDwgNS4wKSB7YWNj
dW0gPSBmdW4yKGFjY3VtKTt9XG4iIC8vIDgKKyAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2
ZWM0KGFjY3VtKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgLy8gMSAtIHNob3VsZG4ndCBnZXQg
YSBMb2QwIHZlcnNpb24gZ2VuZXJhdGVkCisgICAgLy8gMiAtIG5vIExvZDAgdmVyc2lvbiBnZW5l
cmF0ZWQKKyAgICAvLyAzIC0gc2hvdWxkbid0IGdldCBhIExvZDAgdmVyc2lvbiBnZW5lcmF0ZWQg
KG5vdCBpbiBkaXNjb250IGxvb3ApCisgICAgLy8gNCAtIHNob3VsZCBoYXZlIExPT1AgYmVjYXVz
ZSBpdCBjb250YWlucyBhIGdyYWRpZW50IG9wZXJhdGlvbiAoZXZlbiBpZiBMb2QwKQorICAgIC8v
IDUgLSBubyBGTEFUVEVOIGJlY2F1c2UgZG9lc24ndCBjb250YWluIGxvb3Agd2l0aCBhIGdyYWRp
ZW50CisgICAgLy8gNiAtIGNhbGwgbm9uLUxvZDAgdmVyc2lvbgorICAgIC8vIDcgLSBjYWxsIG5v
bi1Mb2QwIHZlcnNpb24KKyAgICAvLyA4IC0gRkxBVFRFTiBiZWNhdXNlIGl0IGNvbnRhaW5zIGEg
bG9vcCB3aXRoIGEgZ3JhZGllbnQKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgY29u
c3QgY2hhciAqZXhwZWN0YXRpb25zW10gPQorICAgIHsKKyAgICAgICAgImZ1bigiLCAidGV4dHVy
ZTJEKCIsCisgICAgICAgICJmdW4yKCIsICJMT09QIiwgImZvciIsICJpZiIsICJmdW4oIiwgInRl
eHR1cmUyRCgiLAorICAgICAgICAibWFpbigiLCAiRkxBVFRFTiIsICJpZiIsICJmdW4yKCIKKyAg
ICB9OworICAgIGV4cGVjdChleHBlY3RhdGlvbnMsIEFycmF5U2l6ZShleHBlY3RhdGlvbnMpKTsK
K30KKworLy8gQ2hlY2sgdGhhdCB3aGVuIHdlIGhhdmUgYSBncmFkaWVudCBpbiBhIGRpc2NvbnRp
bnVvdXMgbG9vcAorLy8gd2UgdXNlIHRoZSBMb2QwIHZlcnNpb24gb2YgdGhlIGZ1bmN0aW9ucy4K
K1RFU1RfRihVbnJvbGxGbGF0dGVuVGVzdCwgR3JhZGllbnRJbkRpc2NvbnQpCit7CisgICAgY29u
c3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gZmxvYXQgZjtcbiIKKyAgICAgICAgInVuaWZv
cm0gc2FtcGxlcjJEIHRleDsiCisgICAgICAgICJmbG9hdCBmdW4oZmxvYXQgYSl7XG4iIC8vIDEK
KyAgICAgICAgIiAgICByZXR1cm4gdGV4dHVyZTJEKHRleCwgdmVjMigwLjUsIGYpKS54O1xuIiAv
LyAyCisgICAgICAgICJ9XG4iCisgICAgICAgICJmbG9hdCBmdW4yKGZsb2F0IGEpe1xuIiAvLyAz
CisgICAgICAgICIgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XG4iIC8vIDQKKyAg
ICAgICAgIiAgICAgICAgaWYgKGEgPiAxLjApIHticmVhazt9XG4iIC8vIDUKKyAgICAgICAgIiAg
ICAgICAgYSA9IGZ1bihhKTtcbiIgLy8gNgorICAgICAgICAiICAgICAgICBhICs9IHRleHR1cmUy
RCh0ZXgsIHZlYzIoYSwgMC4wKSkueDsiIC8vIDcKKyAgICAgICAgIiAgICB9XG4iCisgICAgICAg
ICIgICAgcmV0dXJuIGE7XG4iCisgICAgICAgICJ9XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7
XG4iCisgICAgICAgICIgICAgZmxvYXQgYWNjdW0gPSAwLjA7XG4iCisgICAgICAgICIgICAgaWYg
KGYgPCA1LjApIHthY2N1bSA9IGZ1bjIoYWNjdW0pO31cbiIgLy8gOAorICAgICAgICAiICAgIGds
X0ZyYWdDb2xvciA9IHZlYzQoYWNjdW0pO1xuIgorICAgICAgICAifVxuIjsKKyAgICAvLyAxIC0g
c2hvdWxkIGdldCBhIExvZDAgdmVyc2lvbiBnZW5lcmF0ZWQgKGdyYWRpZW50ICsgZGlzY29udCBs
b29wKQorICAgIC8vIDIgLSB3aWxsIGdldCB0aGUgTG9kMCBpZiBpbiBmdW5Mb2QwCisgICAgLy8g
MyAtIHNob3VsZG4ndCBnZXQgYSBMb2QwIHZlcnNpb24gZ2VuZXJhdGVkIChub3QgaW4gZGlzY29u
dCBsb29wKQorICAgIC8vIDQgLSBzaG91bGQgaGF2ZSBMT09QIGJlY2F1c2UgaXQgY29udGFpbnMg
YSBncmFkaWVudCBvcGVyYXRpb24gKGV2ZW4gaWYgTG9kMCkKKyAgICAvLyA1IC0gbm8gRkxBVFRF
TiBiZWNhdXNlIGRvZXNuJ3QgY29udGFpbiBhIGxvb3Agd2l0aCBhIGdyYWRpZW50CisgICAgLy8g
NiAtIGNhbGwgTG9kMCB2ZXJzaW9uCisgICAgLy8gNyAtIGNhbGwgTG9kMCB2ZXJzaW9uCisgICAg
Ly8gOCAtIEZMQVRURU4gYmVjYXVzZSBpdCBjb250YWlucyBhIGxvb3Agd2l0aCBhIGdyYWRpZW50
CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIGNvbnN0IGNoYXIgKmV4cGVjdGF0aW9u
c1tdID0KKyAgICB7CisgICAgICAgICJmdW4oIiwgInRleHR1cmUyRCgiLAorICAgICAgICAiZnVu
TG9kMCgiLCAidGV4dHVyZTJETG9kMCgiLAorICAgICAgICAiZnVuMigiLCAiTE9PUCIsICJmb3Ii
LCAiaWYiLCAiYnJlYWsiLCAiZnVuTG9kMCgiLCAidGV4dHVyZTJETG9kMCIsCisgICAgICAgICJt
YWluKCIsICJGTEFUVEVOIiwgImlmIiwgImZ1bjIoIgorICAgIH07CisgICAgZXhwZWN0KGV4cGVj
dGF0aW9ucywgQXJyYXlTaXplKGV4cGVjdGF0aW9ucykpOworfQorCit9CkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvVmFyaWFibGVQYWNrZXJf
dGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2NvbXBpbGVyX3Rlc3RzL1ZhcmlhYmxlUGFja2VyX3Rlc3QuY3BwCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9WYXJpYWJs
ZVBhY2tlcl90ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIzNyBAQAorLy8KKy8v
IENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFuZ2xlX2ds
LmgiCisjaW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5oIgorI2luY2x1ZGUgImNvbW1vbi9hbmds
ZXV0aWxzLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9WYXJpYWJsZVBhY2tlci5o
IgorCitzdGF0aWMgc2g6OkdMZW51bSB0eXBlc1tdID0geworICBHTF9GTE9BVF9NQVQ0LCAgICAg
ICAgICAgIC8vIDAKKyAgR0xfRkxPQVRfTUFUMiwgICAgICAgICAgICAvLyAxCisgIEdMX0ZMT0FU
X1ZFQzQsICAgICAgICAgICAgLy8gMgorICBHTF9JTlRfVkVDNCwgICAgICAgICAgICAgIC8vIDMK
KyAgR0xfQk9PTF9WRUM0LCAgICAgICAgICAgICAvLyA0CisgIEdMX0ZMT0FUX01BVDMsICAgICAg
ICAgICAgLy8gNQorICBHTF9GTE9BVF9WRUMzLCAgICAgICAgICAgIC8vIDYKKyAgR0xfSU5UX1ZF
QzMsICAgICAgICAgICAgICAvLyA3CisgIEdMX0JPT0xfVkVDMywgICAgICAgICAgICAgLy8gOAor
ICBHTF9GTE9BVF9WRUMyLCAgICAgICAgICAgIC8vIDkKKyAgR0xfSU5UX1ZFQzIsICAgICAgICAg
ICAgICAvLyAxMAorICBHTF9CT09MX1ZFQzIsICAgICAgICAgICAgIC8vIDExCisgIEdMX0ZMT0FU
LCAgICAgICAgICAgICAgICAgLy8gMTIKKyAgR0xfSU5ULCAgICAgICAgICAgICAgICAgICAvLyAx
MworICBHTF9CT09MLCAgICAgICAgICAgICAgICAgIC8vIDE0CisgIEdMX1NBTVBMRVJfMkQsICAg
ICAgICAgICAgLy8gMTUKKyAgR0xfU0FNUExFUl9DVUJFLCAgICAgICAgICAvLyAxNgorICBHTF9T
QU1QTEVSX0VYVEVSTkFMX09FUywgIC8vIDE3CisgIEdMX1NBTVBMRVJfMkRfUkVDVF9BUkIsICAg
Ly8gMTgKKyAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgICAvLyAxOQorICBHTF9VTlNJR05FRF9J
TlRfVkVDMiwgICAgIC8vIDIwCisgIEdMX1VOU0lHTkVEX0lOVF9WRUMzLCAgICAgLy8gMjEKKyAg
R0xfVU5TSUdORURfSU5UX1ZFQzQsICAgICAvLyAyMgorICBHTF9GTE9BVF9NQVQyeDMsICAgICAg
ICAgIC8vIDIzCisgIEdMX0ZMT0FUX01BVDJ4NCwgICAgICAgICAgLy8gMjQKKyAgR0xfRkxPQVRf
TUFUM3gyLCAgICAgICAgICAvLyAyNQorICBHTF9GTE9BVF9NQVQzeDQsICAgICAgICAgIC8vIDI2
CisgIEdMX0ZMT0FUX01BVDR4MiwgICAgICAgICAgLy8gMjcKKyAgR0xfRkxPQVRfTUFUNHgzLCAg
ICAgICAgICAvLyAyOAorICBHTF9TQU1QTEVSXzNELCAgICAgICAgICAgIC8vIDI5CisgIEdMX1NB
TVBMRVJfMkRfQVJSQVksICAgICAgLy8gMzAKKyAgR0xfU0FNUExFUl8yRF9TSEFET1csICAgICAv
LyAzMQorICBHTF9TQU1QTEVSX0NVQkVfU0hBRE9XLCAgIC8vIDMyCisgIEdMX1NBTVBMRVJfMkRf
QVJSQVlfU0hBRE9XLCAvLyAzMworICBHTF9JTlRfU0FNUExFUl8yRCwgICAgICAgIC8vIDM0Cisg
IEdMX0lOVF9TQU1QTEVSX0NVQkUsICAgICAgLy8gMzUKKyAgR0xfSU5UX1NBTVBMRVJfM0QsICAg
ICAgICAvLyAzNgorICBHTF9JTlRfU0FNUExFUl8yRF9BUlJBWSwgIC8vIDM3CisgIEdMX1VOU0lH
TkVEX0lOVF9TQU1QTEVSXzJELCAvLyAzOAorICBHTF9VTlNJR05FRF9JTlRfU0FNUExFUl9DVUJF
LCAvLyAzOQorICBHTF9VTlNJR05FRF9JTlRfU0FNUExFUl8zRCwgLy8gNDAKKyAgR0xfVU5TSUdO
RURfSU5UX1NBTVBMRVJfMkRfQVJSQVksIC8vIDQxCit9OworCitzdGF0aWMgc2g6OkdMZW51bSBu
b25TcU1hdFR5cGVzW10gPSB7CisgIEdMX0ZMT0FUX01BVDJ4MywKKyAgR0xfRkxPQVRfTUFUMng0
LAorICBHTF9GTE9BVF9NQVQzeDIsCisgIEdMX0ZMT0FUX01BVDN4NCwKKyAgR0xfRkxPQVRfTUFU
NHgyLAorICBHTF9GTE9BVF9NQVQ0eDMKK307CisKK1RFU1QoVmFyaWFibGVQYWNraW5nLCBQYWNr
KSB7CisgICAgVmFyaWFibGVQYWNrZXIgcGFja2VyOworICAgIHN0ZDo6dmVjdG9yPHNoOjpTaGFk
ZXJWYXJpYWJsZT4gdmFyczsKKyAgICBjb25zdCBpbnQga01heFJvd3MgPSAxNjsKKyAgICAvLyB0
ZXN0IG5vIHZhcnMuCisgICAgRVhQRUNUX1RSVUUocGFja2VyLkNoZWNrVmFyaWFibGVzV2l0aGlu
UGFja2luZ0xpbWl0cyhrTWF4Um93cywgdmFycykpOworCisgICAgZm9yIChzaXplX3QgdHQgPSAw
OyB0dCA8IEFycmF5U2l6ZSh0eXBlcyk7ICsrdHQpCisgICAgeworICAgICAgICBzaDo6R0xlbnVt
IHR5cGUgICAgICAgICAgICA9IHR5cGVzW3R0XTsKKyAgICAgICAgaW50IG51bV9yb3dzICAgICAg
ICAgICAgICAgPSBWYXJpYWJsZVBhY2tlcjo6R2V0TnVtUm93cyh0eXBlKTsKKyAgICAgICAgaW50
IG51bV9jb21wb25lbnRzX3Blcl9yb3cgPSBWYXJpYWJsZVBhY2tlcjo6R2V0TnVtQ29tcG9uZW50
c1BlclJvdyh0eXBlKTsKKyAgICAgICAgLy8gQ2hlY2sgMSBvZiB0aGUgdHlwZS4KKyAgICAgICAg
dmFycy5jbGVhcigpOworICAgICAgICB2YXJzLnB1c2hfYmFjayhzaDo6U2hhZGVyVmFyaWFibGUo
dHlwZSwgMCkpOworICAgICAgICBFWFBFQ1RfVFJVRShwYWNrZXIuQ2hlY2tWYXJpYWJsZXNXaXRo
aW5QYWNraW5nTGltaXRzKGtNYXhSb3dzLCB2YXJzKSk7CisKKyAgICAgICAgLy8gQ2hlY2sgZXhh
Y3RseSB0aGUgcmlnaHQgYW1vdW50IG9mIDEgdHlwZSBhcyBhbiBhcnJheS4KKyAgICAgICAgaW50
IG51bV92YXJzID0ga01heFJvd3MgLyBudW1fcm93czsKKyAgICAgICAgdmFycy5jbGVhcigpOwor
ICAgICAgICB2YXJzLnB1c2hfYmFjayhzaDo6U2hhZGVyVmFyaWFibGUodHlwZSwgbnVtX3ZhcnMg
PT0gMSA/IDAgOiBudW1fdmFycykpOworICAgICAgICBFWFBFQ1RfVFJVRShwYWNrZXIuQ2hlY2tW
YXJpYWJsZXNXaXRoaW5QYWNraW5nTGltaXRzKGtNYXhSb3dzLCB2YXJzKSk7CisKKyAgICAgICAg
Ly8gdGVzdCB0b28gbWFueQorICAgICAgICB2YXJzLmNsZWFyKCk7CisgICAgICAgIHZhcnMucHVz
aF9iYWNrKHNoOjpTaGFkZXJWYXJpYWJsZSh0eXBlLCBudW1fdmFycyA9PSAwID8gMCA6IChudW1f
dmFycyArIDEpKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShwYWNrZXIuQ2hlY2tWYXJpYWJsZXNX
aXRoaW5QYWNraW5nTGltaXRzKGtNYXhSb3dzLCB2YXJzKSk7CisKKyAgICAgICAgLy8gQ2hlY2sg
ZXhhY3RseSB0aGUgcmlnaHQgYW1vdW50IG9mIDEgdHlwZSBhcyBpbmRpdmlkdWFsIHZhcnMuCisg
ICAgICAgIG51bV92YXJzID0KKyAgICAgICAgICAgIGtNYXhSb3dzIC8gbnVtX3Jvd3MgKiAoKG51
bV9jb21wb25lbnRzX3Blcl9yb3cgPiAyKSA/IDEgOiAoNCAvIG51bV9jb21wb25lbnRzX3Blcl9y
b3cpKTsKKyAgICAgICAgdmFycy5jbGVhcigpOworICAgICAgICBmb3IgKGludCBpaSA9IDA7IGlp
IDwgbnVtX3ZhcnM7ICsraWkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhcnMucHVzaF9iYWNr
KHNoOjpTaGFkZXJWYXJpYWJsZSh0eXBlLCAwKSk7CisgICAgICAgIH0KKyAgICAgICAgRVhQRUNU
X1RSVUUocGFja2VyLkNoZWNrVmFyaWFibGVzV2l0aGluUGFja2luZ0xpbWl0cyhrTWF4Um93cywg
dmFycykpOworCisgICAgICAgIC8vIENoZWNrIDEgdG9vIG1hbnkuCisgICAgICAgIHZhcnMucHVz
aF9iYWNrKHNoOjpTaGFkZXJWYXJpYWJsZSh0eXBlLCAwKSk7CisgICAgICAgIEVYUEVDVF9GQUxT
RShwYWNrZXIuQ2hlY2tWYXJpYWJsZXNXaXRoaW5QYWNraW5nTGltaXRzKGtNYXhSb3dzLCB2YXJz
KSk7CisgICAgfQorCisgICAgLy8gVGVzdCBleGFtcGxlIGZyb20gR0xTTCBFUyAzLjAgc3BlYyBj
aGFwdGVyIDExLgorICAgIHZhcnMuY2xlYXIoKTsKKyAgICB2YXJzLnB1c2hfYmFjayhzaDo6U2hh
ZGVyVmFyaWFibGUoR0xfRkxPQVRfVkVDNCwgMCkpOworICAgIHZhcnMucHVzaF9iYWNrKHNoOjpT
aGFkZXJWYXJpYWJsZShHTF9GTE9BVF9NQVQzLCAwKSk7CisgICAgdmFycy5wdXNoX2JhY2soc2g6
OlNoYWRlclZhcmlhYmxlKEdMX0ZMT0FUX01BVDMsIDApKTsKKyAgICB2YXJzLnB1c2hfYmFjayhz
aDo6U2hhZGVyVmFyaWFibGUoR0xfRkxPQVRfVkVDMiwgNikpOworICAgIHZhcnMucHVzaF9iYWNr
KHNoOjpTaGFkZXJWYXJpYWJsZShHTF9GTE9BVF9WRUMyLCA0KSk7CisgICAgdmFycy5wdXNoX2Jh
Y2soc2g6OlNoYWRlclZhcmlhYmxlKEdMX0ZMT0FUX1ZFQzIsIDApKTsKKyAgICB2YXJzLnB1c2hf
YmFjayhzaDo6U2hhZGVyVmFyaWFibGUoR0xfRkxPQVQsIDMpKTsKKyAgICB2YXJzLnB1c2hfYmFj
ayhzaDo6U2hhZGVyVmFyaWFibGUoR0xfRkxPQVQsIDIpKTsKKyAgICB2YXJzLnB1c2hfYmFjayhz
aDo6U2hhZGVyVmFyaWFibGUoR0xfRkxPQVQsIDApKTsKKyAgICBFWFBFQ1RfVFJVRShwYWNrZXIu
Q2hlY2tWYXJpYWJsZXNXaXRoaW5QYWNraW5nTGltaXRzKGtNYXhSb3dzLCB2YXJzKSk7Cit9CisK
K1RFU1QoVmFyaWFibGVQYWNraW5nLCBQYWNrU2l6ZXMpIHsKKyAgZm9yIChzaXplX3QgdHQgPSAw
OyB0dCA8IEFycmF5U2l6ZSh0eXBlcyk7ICsrdHQpIHsKKyAgICBHTGVudW0gdHlwZSA9IHR5cGVz
W3R0XTsKKworICAgIGludCBleHBlY3RlZENvbXBvbmVudHMgPSBnbDo6VmFyaWFibGVDb21wb25l
bnRDb3VudCh0eXBlKTsKKyAgICBpbnQgZXhwZWN0ZWRSb3dzID0gZ2w6OlZhcmlhYmxlUm93Q291
bnQodHlwZSk7CisKKyAgICBpZiAodHlwZSA9PSBHTF9GTE9BVF9NQVQyKSB7CisgICAgICBleHBl
Y3RlZENvbXBvbmVudHMgPSA0OworICAgIH0gZWxzZSBpZiAoZ2w6OklzTWF0cml4VHlwZSh0eXBl
KSkgeworICAgICAgaW50IHNxdWFyZVNpemUgPSBzdGQ6Om1heChnbDo6VmFyaWFibGVSb3dDb3Vu
dCh0eXBlKSwKKyAgICAgICAgICBnbDo6VmFyaWFibGVDb2x1bW5Db3VudCh0eXBlKSk7CisgICAg
ICBleHBlY3RlZENvbXBvbmVudHMgPSBzcXVhcmVTaXplOworICAgICAgZXhwZWN0ZWRSb3dzID0g
c3F1YXJlU2l6ZTsKKyAgICB9CisKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRDb21wb25lbnRzLAor
ICAgICAgVmFyaWFibGVQYWNrZXI6OkdldE51bUNvbXBvbmVudHNQZXJSb3codHlwZSkpOworICAg
IEVYUEVDVF9FUShleHBlY3RlZFJvd3MsIFZhcmlhYmxlUGFja2VyOjpHZXROdW1Sb3dzKHR5cGUp
KTsKKyAgfQorfQorCisvLyBDaGVjayBzcGVjaWFsIGFzc3VtcHRpb25zIGFib3V0IHBhY2tpbmcg
bm9uLXNxdWFyZSBtYXRzCitURVNUKFZhcmlhYmxlUGFja2luZywgTm9uU3F1YXJlTWF0cykgewor
CisgIGZvciAoc2l6ZV90IG10ID0gMDsgbXQgPCBBcnJheVNpemUobm9uU3FNYXRUeXBlcyk7ICsr
bXQpIHsKKyAgICAKKyAgICBHTGVudW0gdHlwZSA9IG5vblNxTWF0VHlwZXNbbXRdOworCisgICAg
aW50IHJvd3MgPSBnbDo6VmFyaWFibGVSb3dDb3VudCh0eXBlKTsKKyAgICBpbnQgY29scyA9IGds
OjpWYXJpYWJsZUNvbHVtbkNvdW50KHR5cGUpOworICAgIGludCBzcXVhcmVTaXplID0gc3RkOjpt
YXgocm93cywgY29scyk7CisKKyAgICBzdGQ6OnZlY3RvcjxzaDo6U2hhZGVyVmFyaWFibGU+IHZh
cnM7CisgICAgdmFycy5wdXNoX2JhY2soc2g6OlNoYWRlclZhcmlhYmxlKHR5cGUsIDApKTsKKwor
ICAgIC8vIEZpbGwgY29sdW1ucworICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IHNxdWFyZVNp
emU7IHJvdysrKSB7CisgICAgICBmb3IgKGludCBjb2wgPSBzcXVhcmVTaXplOyBjb2wgPCA0OyAr
K2NvbCkgeworICAgICAgICB2YXJzLnB1c2hfYmFjayhzaDo6U2hhZGVyVmFyaWFibGUoR0xfRkxP
QVQsIDApKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBWYXJpYWJsZVBhY2tlciBwYWNrZXI7CisK
KyAgICBFWFBFQ1RfVFJVRShwYWNrZXIuQ2hlY2tWYXJpYWJsZXNXaXRoaW5QYWNraW5nTGltaXRz
KHNxdWFyZVNpemUsIHZhcnMpKTsKKworICAgIC8vIGFuZCBvbmUgc2NhbGFyIGFuZCBwYWNraW5n
IHNob3VsZCBmYWlsCisgICAgdmFycy5wdXNoX2JhY2soc2g6OlNoYWRlclZhcmlhYmxlKEdMX0ZM
T0FULCAwKSk7CisgICAgRVhQRUNUX0ZBTFNFKHBhY2tlci5DaGVja1ZhcmlhYmxlc1dpdGhpblBh
Y2tpbmdMaW1pdHMoc3F1YXJlU2l6ZSwgdmFycykpOworICB9Cit9CisKKy8vIFNjYWxhciB0eXBl
IHZhcmlhYmxlcyBjYW4gYmUgcGFja2VkIHNoYXJpbmcgcm93cyB3aXRoIG90aGVyIHZhcmlhYmxl
cy4KK1RFU1QoVmFyaWFibGVQYWNraW5nLCBSZXVzZVJvd3MpCit7CisgICAgVmFyaWFibGVQYWNr
ZXIgcGFja2VyOworICAgIHN0ZDo6dmVjdG9yPHNoOjpTaGFkZXJWYXJpYWJsZT4gdmFyczsKKyAg
ICBjb25zdCBpbnQga01heFJvd3MgPSA1MTI7CisKKyAgICAvLyB1bmlmb3JtIGJvb2wgdTBbMTI5
XTsKKyAgICAvLyB1bmlmb3JtIGJvb2wgdTFbMTI5XTsKKyAgICAvLyB1bmlmb3JtIGJvb2wgdTJb
MTI5XTsKKyAgICAvLyB1bmlmb3JtIGJvb2wgdTNbMTI5XTsKKyAgICB7CisgICAgICAgIGludCBu
dW1fYXJyYXlzID0gNDsKKyAgICAgICAgaW50IG51bV9lbGVtZW50c19wZXJfYXJyYXkgPSBrTWF4
Um93cyAvIG51bV9hcnJheXMgKyAxOworICAgICAgICBmb3IgKGludCBpaSA9IDA7IGlpIDwgbnVt
X2FycmF5czsgKytpaSkKKyAgICAgICAgeworICAgICAgICAgICAgdmFycy5wdXNoX2JhY2soc2g6
OlNoYWRlclZhcmlhYmxlKEdMX0JPT0wsIG51bV9lbGVtZW50c19wZXJfYXJyYXkpKTsKKyAgICAg
ICAgfQorICAgICAgICBFWFBFQ1RfVFJVRShwYWNrZXIuQ2hlY2tWYXJpYWJsZXNXaXRoaW5QYWNr
aW5nTGltaXRzKGtNYXhSb3dzLCB2YXJzKSk7CisgICAgfQorCisgICAgdmFycy5jbGVhcigpOwor
ICAgIC8vIHVuaWZvcm0gdmVjMiB1MFsyNTddOworICAgIC8vIHVuaWZvcm0gZmxvYXQgdTFbMjU3
XTsKKyAgICAvLyB1bmlmb3JtIGludCB1MVsyNTddOworICAgIHsKKyAgICAgICAgaW50IG51bV9l
bGVtZW50c19wZXJfYXJyYXkgPSBrTWF4Um93cyAvIDIgKyAxOworICAgICAgICB2YXJzLnB1c2hf
YmFjayhzaDo6U2hhZGVyVmFyaWFibGUoR0xfRkxPQVRfVkVDMiwgbnVtX2VsZW1lbnRzX3Blcl9h
cnJheSkpOworICAgICAgICB2YXJzLnB1c2hfYmFjayhzaDo6U2hhZGVyVmFyaWFibGUoR0xfRkxP
QVQsIG51bV9lbGVtZW50c19wZXJfYXJyYXkpKTsKKyAgICAgICAgdmFycy5wdXNoX2JhY2soc2g6
OlNoYWRlclZhcmlhYmxlKEdMX0lOVCwgbnVtX2VsZW1lbnRzX3Blcl9hcnJheSkpOworICAgICAg
ICBFWFBFQ1RfVFJVRShwYWNrZXIuQ2hlY2tWYXJpYWJsZXNXaXRoaW5QYWNraW5nTGltaXRzKGtN
YXhSb3dzLCB2YXJzKSk7CisgICAgfQorfQorCisvLyBDaGVjayB0aGUgcGFja2VyIHN1cHBvcnRz
IGFuZCBmbGF0dGVucyBzdHJ1Y3R1cmVzLgorVEVTVChWYXJpYWJsZVBhY2tpbmcsIFN0cnVjdCkK
K3sKKyAgICBWYXJpYWJsZVBhY2tlciBwYWNrZXI7CisgICAgc3RkOjp2ZWN0b3I8c2g6OlNoYWRl
clZhcmlhYmxlPiBmaWVsZHM7CisgICAgY29uc3QgaW50IGtNYXhSb3dzID0gMTY7CisKKyAgICAv
LyBUZXN0IGV4YW1wbGUgZnJvbSBHTFNMIEVTIDMuMCBzcGVjIGNoYXB0ZXIgMTEsIGJ1dCB3aXRo
IHN0cnVjdHMKKyAgICBzdGQ6OnZlY3RvcjxzaDo6U2hhZGVyVmFyaWFibGU+IHZhcnM7CisgICAg
dmFycy5wdXNoX2JhY2soc2g6OlNoYWRlclZhcmlhYmxlKEdMX1NUUlVDVF9BTkdMRVgsIDApKTsK
KworICAgIHNoOjpTaGFkZXJWYXJpYWJsZSAmcGFyZW50U3RydWN0ID0gdmFyc1swXTsKKyAgICBw
YXJlbnRTdHJ1Y3QuZmllbGRzLnB1c2hfYmFjayhzaDo6U2hhZGVyVmFyaWFibGUoR0xfRkxPQVRf
VkVDNCwgMCkpOworICAgIHBhcmVudFN0cnVjdC5maWVsZHMucHVzaF9iYWNrKHNoOjpTaGFkZXJW
YXJpYWJsZShHTF9GTE9BVF9NQVQzLCAwKSk7CisKKyAgICBwYXJlbnRTdHJ1Y3QuZmllbGRzLnB1
c2hfYmFjayhzaDo6U2hhZGVyVmFyaWFibGUoR0xfU1RSVUNUX0FOR0xFWCwgMCkpOworICAgIHNo
OjpTaGFkZXJWYXJpYWJsZSAmaW5uZXJTdHJ1Y3QgPSBwYXJlbnRTdHJ1Y3QuZmllbGRzLmJhY2so
KTsKKyAgICBpbm5lclN0cnVjdC5maWVsZHMucHVzaF9iYWNrKHNoOjpTaGFkZXJWYXJpYWJsZShH
TF9GTE9BVF9NQVQzLCAwKSk7CisgICAgaW5uZXJTdHJ1Y3QuZmllbGRzLnB1c2hfYmFjayhzaDo6
U2hhZGVyVmFyaWFibGUoR0xfRkxPQVRfVkVDMiwgNikpOworICAgIGlubmVyU3RydWN0LmZpZWxk
cy5wdXNoX2JhY2soc2g6OlNoYWRlclZhcmlhYmxlKEdMX0ZMT0FUX1ZFQzIsIDQpKTsKKworICAg
IHBhcmVudFN0cnVjdC5maWVsZHMucHVzaF9iYWNrKHNoOjpTaGFkZXJWYXJpYWJsZShHTF9GTE9B
VF9WRUMyLCAwKSk7CisgICAgcGFyZW50U3RydWN0LmZpZWxkcy5wdXNoX2JhY2soc2g6OlNoYWRl
clZhcmlhYmxlKEdMX0ZMT0FULCAzKSk7CisgICAgcGFyZW50U3RydWN0LmZpZWxkcy5wdXNoX2Jh
Y2soc2g6OlNoYWRlclZhcmlhYmxlKEdMX0ZMT0FULCAyKSk7CisgICAgcGFyZW50U3RydWN0LmZp
ZWxkcy5wdXNoX2JhY2soc2g6OlNoYWRlclZhcmlhYmxlKEdMX0ZMT0FULCAwKSk7CisKKyAgICBF
WFBFQ1RfVFJVRShwYWNrZXIuQ2hlY2tWYXJpYWJsZXNXaXRoaW5QYWNraW5nTGltaXRzKGtNYXhS
b3dzLCB2YXJzKSk7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
Y29tcGlsZXJfdGVzdHMvV29ya0dyb3VwU2l6ZV90ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvV29ya0dyb3VwU2l6
ZV90ZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvY29tcGlsZXJfdGVzdHMvV29ya0dyb3VwU2l6ZV90ZXN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDk3IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFdvcmtHcm91cFNpemVfdGVzdC5j
cHA6CisvLyB0ZXN0cyBmb3IgbG9jYWwgZ3JvdXAgc2l6ZSBpbiBhIGNvbXB1dGUgc2hhZGVyCisv
LworCisjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2lu
Y2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0
b3IvVHJhbnNsYXRvckVTU0wuaCIKKyNpbmNsdWRlICJ0ZXN0cy90ZXN0X3V0aWxzL2NvbXBpbGVy
X3Rlc3QuaCIKKworY2xhc3MgV29ya0dyb3VwU2l6ZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dAoreworICBwdWJsaWM6CisgICAgV29ya0dyb3VwU2l6ZVRlc3QoKSB7fQorCisgIHByb3RlY3Rl
ZDoKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFNoQnVpbHRJblJl
c291cmNlcyByZXNvdXJjZXM7CisgICAgICAgIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoJnJlc291
cmNlcyk7CisKKyAgICAgICAgbVRyYW5zbGF0b3IgPSBuZXcgVHJhbnNsYXRvckVTU0woR0xfQ09N
UFVURV9TSEFERVIsIFNIX0dMRVMzXzFfU1BFQyk7CisgICAgICAgIEFTU0VSVF9UUlVFKG1UcmFu
c2xhdG9yLT5Jbml0KHJlc291cmNlcykpOworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBv
dmVycmlkZSB7IFNhZmVEZWxldGUobVRyYW5zbGF0b3IpOyB9CisKKyAgICAvLyBSZXR1cm4gdHJ1
ZSB3aGVuIGNvbXBpbGF0aW9uIHN1Y2NlZWRzCisgICAgYm9vbCBjb21waWxlKGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcpCisgICAgeworICAgICAgICBjb25zdCBjaGFyICpzaGFkZXJT
dHJpbmdzW10gPSB7c2hhZGVyU3RyaW5nLmNfc3RyKCl9OworICAgICAgICBib29sIHN0YXR1cyA9
IG1UcmFuc2xhdG9yLT5jb21waWxlKHNoYWRlclN0cmluZ3MsIDEsIFNIX0lOVEVSTUVESUFURV9U
UkVFIHwgU0hfVkFSSUFCTEVTKTsKKyAgICAgICAgVEluZm9TaW5rICZpbmZvU2luayA9IG1UcmFu
c2xhdG9yLT5nZXRJbmZvU2luaygpOworICAgICAgICBtSW5mb0xvZyAgICAgICAgICAgID0gaW5m
b1NpbmsuaW5mby5jX3N0cigpOworICAgICAgICByZXR1cm4gc3RhdHVzOworICAgIH0KKworICBw
cm90ZWN0ZWQ6CisgICAgc3RkOjpzdHJpbmcgbUluZm9Mb2c7CisgICAgVHJhbnNsYXRvckVTU0wg
Km1UcmFuc2xhdG9yID0gbnVsbHB0cjsKK307CisKKy8vIGNoZWNrcyB3aGV0aGVyIGNvbXBpbGVy
IGhhcyBwYXJzZWQgdGhlIGxvY2FsIHNpemUgbGF5b3V0IHF1YWxpZmllcnMgcWNvcnJlY3RseQor
VEVTVF9GKFdvcmtHcm91cFNpemVUZXN0LCBPbmx5TG9jYWxTaXplWFNwZWNpZmllZCkKK3sKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMx
MCBlc1xuIgorICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeD01KSBpbjtcbiIKKyAgICAgICAg
InZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBjb21waWxlKHNoYWRlclN0
cmluZyk7CisKKyAgICBjb25zdCBzaDo6V29ya0dyb3VwU2l6ZSAmbG9jYWxTaXplID0gbVRyYW5z
bGF0b3ItPmdldENvbXB1dGVTaGFkZXJMb2NhbFNpemUoKTsKKyAgICBBU1NFUlRfRVEoNSwgbG9j
YWxTaXplWzBdKTsKKyAgICBBU1NFUlRfRVEoMSwgbG9jYWxTaXplWzFdKTsKKyAgICBBU1NFUlRf
RVEoMSwgbG9jYWxTaXplWzJdKTsKK30KKworLy8gY2hlY2tzIHdoZXRoZXIgY29tcGlsZXIgaGFz
IHBhcnNlZCB0aGUgbG9jYWwgc2l6ZSBsYXlvdXQgcXVhbGlmaWVycyBxY29ycmVjdGx5CitURVNU
X0YoV29ya0dyb3VwU2l6ZVRlc3QsIExvY2FsU2l6ZVhhbmRaKQoreworICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCisgICAg
ICAgICJsYXlvdXQobG9jYWxfc2l6ZV94PTUsIGxvY2FsX3NpemVfej0xMCkgaW47XG4iCisgICAg
ICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICJ9XG4iOworCisgICAgY29tcGlsZShzaGFk
ZXJTdHJpbmcpOworCisgICAgY29uc3Qgc2g6OldvcmtHcm91cFNpemUgJmxvY2FsU2l6ZSA9IG1U
cmFuc2xhdG9yLT5nZXRDb21wdXRlU2hhZGVyTG9jYWxTaXplKCk7CisgICAgQVNTRVJUX0VRKDUs
IGxvY2FsU2l6ZVswXSk7CisgICAgQVNTRVJUX0VRKDEsIGxvY2FsU2l6ZVsxXSk7CisgICAgQVNT
RVJUX0VRKDEwLCBsb2NhbFNpemVbMl0pOworfQorCisvLyBjaGVja3Mgd2hldGhlciBjb21waWxl
ciBoYXMgcGFyc2VkIHRoZSBsb2NhbCBzaXplIGxheW91dCBxdWFsaWZpZXJzIHFjb3JyZWN0bHkK
K1RFU1RfRihXb3JrR3JvdXBTaXplVGVzdCwgTG9jYWxTaXplQWxsKQoreworICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCisg
ICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94PTUsIGxvY2FsX3NpemVfej0xMCwgbG9jYWxfc2l6
ZV95PTE1KSBpbjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIn1cbiI7
CisKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisKKyAgICBjb25zdCBzaDo6V29ya0dyb3Vw
U2l6ZSAmbG9jYWxTaXplID0gbVRyYW5zbGF0b3ItPmdldENvbXB1dGVTaGFkZXJMb2NhbFNpemUo
KTsKKyAgICBBU1NFUlRfRVEoNSwgbG9jYWxTaXplWzBdKTsKKyAgICBBU1NFUlRfRVEoMTUsIGxv
Y2FsU2l6ZVsxXSk7CisgICAgQVNTRVJUX0VRKDEwLCBsb2NhbFNpemVbMl0pOworfQpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9hbmdsZV9kZXFw
X2d0ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvZGVxcF9zdXBwb3J0L2FuZ2xlX2RlcXBfZ3Rlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvYW5nbGVfZGVxcF9n
dGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMTIgQEAKKy8vCisvLyBDb3B5cmln
aHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBh
bmdsZV9kZXFwX2d0ZXN0OgorLy8gICBkRVFQIGFuZCBHb29nbGVUZXN0IGludGVncmF0aW9uIGxv
Z2ljLiBDYWxscyB0aHJvdWdoIHRvIHRoZSByYW5kb20KKy8vICAgb3JkZXIgZXhlY3V0b3IuCisK
KyNpbmNsdWRlIDxmc3RyZWFtPgorI2luY2x1ZGUgPHN0ZGludC5oPgorCisjaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KKworI2luY2x1ZGUgImFuZ2xlX2RlcXBfbGlidGVzdGVyLmgiCisjaW5jbHVk
ZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKyNpbmNs
dWRlICJjb21tb24vT3B0aW9uYWwuaCIKKyNpbmNsdWRlICJjb21tb24vcGxhdGZvcm0uaCIKKyNp
bmNsdWRlICJjb21tb24vc3RyaW5nX3V0aWxzLmgiCisjaW5jbHVkZSAiZ3B1X3Rlc3RfZXhwZWN0
YXRpb25zX3BhcnNlci5oIgorI2luY2x1ZGUgInN5c3RlbV91dGlscy5oIgorCituYW1lc3BhY2UK
K3sKKworI2lmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fQU5EUk9JRCkKK2NvbnN0IGNoYXIgKmdf
Q2FzZUxpc3RSZWxhdGl2ZVBhdGggPQorICAgICIvLi4vLi4vc2RjYXJkL2Nocm9taXVtX3Rlc3Rz
X3Jvb3QvdGhpcmRfcGFydHkvZGVxcC9zcmMvYW5kcm9pZC9jdHMvbWFzdGVyLyI7CisjZWxzZQor
Y29uc3QgY2hhciAqZ19DYXNlTGlzdFJlbGF0aXZlUGF0aCA9ICIvLi4vLi4vdGhpcmRfcGFydHkv
ZGVxcC9zcmMvYW5kcm9pZC9jdHMvbWFzdGVyLyI7CisjZW5kaWYKKworY29uc3QgY2hhciAqZ19U
ZXN0RXhwZWN0YXRpb25zU2VhcmNoUGF0aHNbXSA9IHsKKyAgICAiLy4uLy4uL3NyYy90ZXN0cy9k
ZXFwX3N1cHBvcnQvIiwgIi8uLi8uLi90aGlyZF9wYXJ0eS9hbmdsZS9zcmMvdGVzdHMvZGVxcF9z
dXBwb3J0LyIsCisgICAgIi9kZXFwX3N1cHBvcnQvIiwgIi8uLi8uLi9zZGNhcmQvY2hyb21pdW1f
dGVzdHNfcm9vdC90aGlyZF9wYXJ0eS9hbmdsZS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0LyIsCit9
OworCitjb25zdCBjaGFyICpnX0Nhc2VMaXN0RmlsZXNbXSA9IHsKKyAgICAiZ2xlczItbWFzdGVy
LnR4dCIsICJnbGVzMy1tYXN0ZXIudHh0IiwgImdsZXMzMS1tYXN0ZXIudHh0IiwgImVnbC1tYXN0
ZXIudHh0IiwKK307CisKK2NvbnN0IGNoYXIgKmdfVGVzdEV4cGVjdGF0aW9uc0ZpbGVzW10gPSB7
CisgICAgImRlcXBfZ2xlczJfdGVzdF9leHBlY3RhdGlvbnMudHh0IiwgImRlcXBfZ2xlczNfdGVz
dF9leHBlY3RhdGlvbnMudHh0IiwKKyAgICAiZGVxcF9nbGVzMzFfdGVzdF9leHBlY3RhdGlvbnMu
dHh0IiwgImRlcXBfZWdsX3Rlc3RfZXhwZWN0YXRpb25zLnR4dCIsCit9OworCisvLyBEdXJpbmcg
dGhlIENhc2VMaXN0IGluaXRpYWxpemF0aW9uIHdlIGNhbm5vdCB1c2UgdGhlIEdURVNUIEZBSUwg
bWFjcm8gdG8gcXVpdCB0aGUgcHJvZ3JhbSBiZWNhdXNlCisvLyB0aGUgaW5pdGlhbGl6YXRpb24g
aXMgY2FsbGVkIG91dHNpZGUgb2YgdGVzdHMgdGhlIGZpcnN0IHRpbWUuCit2b2lkIERpZSgpCit7
CisgICAgZXhpdChFWElUX0ZBSUxVUkUpOworfQorCitPcHRpb25hbDxzdGQ6OnN0cmluZz4gRmlu
ZFRlc3RFeHBlY3RhdGlvbnNQYXRoKGNvbnN0IHN0ZDo6c3RyaW5nICZleGVEaXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdGVz
dE1vZHVsZUluZGV4KQoreworICAgIGZvciAoY29uc3QgY2hhciAqdGVzdFBhdGggOiBnX1Rlc3RF
eHBlY3RhdGlvbnNTZWFyY2hQYXRocykKKyAgICB7CisgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFt
IHRlc3RFeHBlY3RhdGlvbnNQYXRoU3RyOworICAgICAgICB0ZXN0RXhwZWN0YXRpb25zUGF0aFN0
ciA8PCBleGVEaXIgPDwgdGVzdFBhdGggPDwgZ19UZXN0RXhwZWN0YXRpb25zRmlsZXNbdGVzdE1v
ZHVsZUluZGV4XTsKKworICAgICAgICBzdGQ6OnN0cmluZyBwYXRoID0gdGVzdEV4cGVjdGF0aW9u
c1BhdGhTdHIuc3RyKCk7CisgICAgICAgIHN0ZDo6aWZzdHJlYW0gaW5GaWxlKHBhdGguY19zdHIo
KSk7CisgICAgICAgIGlmICghaW5GaWxlLmZhaWwoKSkKKyAgICAgICAgeworICAgICAgICAgICAg
aW5GaWxlLmNsb3NlKCk7CisgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8c3RkOjpzdHJpbmc+
KHBhdGgpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIE9wdGlvbmFsPHN0ZDo6c3Ry
aW5nPjo6SW52YWxpZCgpOworfQorCitjbGFzcyBkRVFQQ2FzZUxpc3QKK3sKKyAgcHVibGljOgor
ICAgIGRFUVBDYXNlTGlzdChzaXplX3QgdGVzdE1vZHVsZUluZGV4KTsKKworICAgIHN0cnVjdCBD
YXNlSW5mbworICAgIHsKKyAgICAgICAgQ2FzZUluZm8oY29uc3Qgc3RkOjpzdHJpbmcgJmRFUVBO
YW1lLAorICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmZ1Rlc3ROYW1lLAorICAg
ICAgICAgICAgICAgICBpbnQgZXhwZWN0YXRpb24pCisgICAgICAgICAgICA6IG1ERVFQTmFtZShk
RVFQTmFtZSksCisgICAgICAgICAgICAgIG1HVGVzdE5hbWUoZ1Rlc3ROYW1lKSwKKyAgICAgICAg
ICAgICAgbUV4cGVjdGF0aW9uKGV4cGVjdGF0aW9uKQorICAgICAgICB7CisgICAgICAgIH0KKwor
ICAgICAgICBzdGQ6OnN0cmluZyBtREVRUE5hbWU7CisgICAgICAgIHN0ZDo6c3RyaW5nIG1HVGVz
dE5hbWU7CisgICAgICAgIGludCBtRXhwZWN0YXRpb247CisgICAgfTsKKworICAgIHZvaWQgaW5p
dGlhbGl6ZSgpOworCisgICAgY29uc3QgQ2FzZUluZm8gJmdldENhc2VJbmZvKHNpemVfdCBjYXNl
SW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobUluaXRpYWxpemVkKTsKKyAgICAg
ICAgQVNTRVJUKGNhc2VJbmRleCA8IG1DYXNlSW5mb0xpc3Quc2l6ZSgpKTsKKyAgICAgICAgcmV0
dXJuIG1DYXNlSW5mb0xpc3RbY2FzZUluZGV4XTsKKyAgICB9CisKKyAgICBzaXplX3QgbnVtQ2Fz
ZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1Jbml0aWFsaXplZCk7CisgICAgICAg
IHJldHVybiBtQ2FzZUluZm9MaXN0LnNpemUoKTsKKyAgICB9CisKKyAgcHJpdmF0ZToKKyAgICBz
dGQ6OnZlY3RvcjxDYXNlSW5mbz4gbUNhc2VJbmZvTGlzdDsKKyAgICBncHU6OkdQVVRlc3RFeHBl
Y3RhdGlvbnNQYXJzZXIgbVRlc3RFeHBlY3RhdGlvbnNQYXJzZXI7CisgICAgZ3B1OjpHUFVUZXN0
Qm90Q29uZmlnIG1UZXN0Q29uZmlnOworICAgIHNpemVfdCBtVGVzdE1vZHVsZUluZGV4OworICAg
IGJvb2wgbUluaXRpYWxpemVkOworfTsKKworZEVRUENhc2VMaXN0OjpkRVFQQ2FzZUxpc3Qoc2l6
ZV90IHRlc3RNb2R1bGVJbmRleCkKKyAgICA6IG1UZXN0TW9kdWxlSW5kZXgodGVzdE1vZHVsZUlu
ZGV4KSwKKyAgICAgIG1Jbml0aWFsaXplZChmYWxzZSkKK3sKK30KKwordm9pZCBkRVFQQ2FzZUxp
c3Q6OmluaXRpYWxpemUoKQoreworICAgIGlmIChtSW5pdGlhbGl6ZWQpCisgICAgeworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbUluaXRpYWxpemVkID0gdHJ1ZTsKKworICAgIHN0ZDo6
c3RyaW5nIGV4ZURpciA9IGFuZ2xlOjpHZXRFeGVjdXRhYmxlRGlyZWN0b3J5KCk7CisKKyAgICBz
dGQ6OnN0cmluZ3N0cmVhbSBjYXNlTGlzdFBhdGhTdHI7CisgICAgY2FzZUxpc3RQYXRoU3RyIDw8
IGV4ZURpciA8PCBnX0Nhc2VMaXN0UmVsYXRpdmVQYXRoIDw8IGdfQ2FzZUxpc3RGaWxlc1ttVGVz
dE1vZHVsZUluZGV4XTsKKyAgICBzdGQ6OnN0cmluZyBjYXNlTGlzdFBhdGggPSBjYXNlTGlzdFBh
dGhTdHIuc3RyKCk7CisKKyAgICBPcHRpb25hbDxzdGQ6OnN0cmluZz4gdGVzdEV4cGVjdGF0aW9u
c1BhdGggPSBGaW5kVGVzdEV4cGVjdGF0aW9uc1BhdGgoZXhlRGlyLCBtVGVzdE1vZHVsZUluZGV4
KTsKKyAgICBpZiAoIXRlc3RFeHBlY3RhdGlvbnNQYXRoLnZhbGlkKCkpCisgICAgeworICAgICAg
ICBzdGQ6OmNlcnIgPDwgIkZhaWxlZCB0byBmaW5kIHRlc3QgZXhwZWN0YXRpb25zIGZpbGUuIiA8
PCBzdGQ6OmVuZGw7CisgICAgICAgIERpZSgpOworICAgIH0KKworICAgIGlmICghbVRlc3RFeHBl
Y3RhdGlvbnNQYXJzZXIuTG9hZFRlc3RFeHBlY3RhdGlvbnNGcm9tRmlsZSh0ZXN0RXhwZWN0YXRp
b25zUGF0aC52YWx1ZSgpKSkKKyAgICB7CisgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGVycm9y
TXNnU3RyZWFtOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8gJm1lc3NhZ2UgOiBtVGVzdEV4cGVj
dGF0aW9uc1BhcnNlci5HZXRFcnJvck1lc3NhZ2VzKCkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGVycm9yTXNnU3RyZWFtIDw8IHN0ZDo6ZW5kbCA8PCAiICIgPDwgbWVzc2FnZTsKKyAgICAgICAg
fQorCisgICAgICAgIHN0ZDo6Y2VyciA8PCAiRmFpbGVkIHRvIGxvYWQgdGVzdCBleHBlY3RhdGlv
bnMuIiA8PCBlcnJvck1zZ1N0cmVhbS5zdHIoKSA8PCBzdGQ6OmVuZGw7CisgICAgICAgIERpZSgp
OworICAgIH0KKworICAgIGlmICghbVRlc3RDb25maWcuTG9hZEN1cnJlbnRDb25maWcobnVsbHB0
cikpCisgICAgeworICAgICAgICBzdGQ6OmNlcnIgPDwgIkZhaWxlZCB0byBsb2FkIHRlc3QgY29u
ZmlndXJhdGlvbi4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgRGllKCk7CisgICAgfQorCisgICAg
c3RkOjppZnN0cmVhbSBjYXNlTGlzdFN0cmVhbShjYXNlTGlzdFBhdGgpOworICAgIGlmIChjYXNl
TGlzdFN0cmVhbS5mYWlsKCkpCisgICAgeworICAgICAgICBzdGQ6OmNlcnIgPDwgIkZhaWxlZCB0
byBsb2FkIHRoZSBjYXNlIGxpc3QuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIERpZSgpOworICAg
IH0KKworICAgIHdoaWxlICghY2FzZUxpc3RTdHJlYW0uZW9mKCkpCisgICAgeworICAgICAgICBz
dGQ6OnN0cmluZyBpblN0cmluZzsKKyAgICAgICAgc3RkOjpnZXRsaW5lKGNhc2VMaXN0U3RyZWFt
LCBpblN0cmluZyk7CisKKyAgICAgICAgc3RkOjpzdHJpbmcgZEVRUE5hbWUgPSBhbmdsZTo6VHJp
bVN0cmluZyhpblN0cmluZywgYW5nbGU6OmtXaGl0ZXNwYWNlQVNDSUkpOworICAgICAgICBpZiAo
ZEVRUE5hbWUuZW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBzdGQ6OnN0
cmluZyBnVGVzdE5hbWUgPSBkRVFQTmFtZS5zdWJzdHIoZEVRUE5hbWUuZmluZCgnLicpICsgMSk7
CisgICAgICAgIGlmIChnVGVzdE5hbWUuZW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBzdGQ6OnJlcGxhY2UoZ1Rlc3ROYW1lLmJlZ2luKCksIGdUZXN0TmFtZS5lbmQoKSwg
Jy4nLCAnXycpOworCisgICAgICAgIC8vIE9jY3VycyBpbiBzb21lIGx1bWluYW5jZSB0ZXN0cwor
ICAgICAgICBnVGVzdE5hbWUuZXJhc2Uoc3RkOjpyZW1vdmUoZ1Rlc3ROYW1lLmJlZ2luKCksIGdU
ZXN0TmFtZS5lbmQoKSwgJy0nKSwgZ1Rlc3ROYW1lLmVuZCgpKTsKKworICAgICAgICBpbnQgZXhw
ZWN0YXRpb24gPSBtVGVzdEV4cGVjdGF0aW9uc1BhcnNlci5HZXRUZXN0RXhwZWN0YXRpb24oZEVR
UE5hbWUsIG1UZXN0Q29uZmlnKTsKKyAgICAgICAgaWYgKGV4cGVjdGF0aW9uICE9IGdwdTo6R1BV
VGVzdEV4cGVjdGF0aW9uc1BhcnNlcjo6a0dwdVRlc3RTa2lwKQorICAgICAgICB7CisgICAgICAg
ICAgICBtQ2FzZUluZm9MaXN0LnB1c2hfYmFjayhDYXNlSW5mbyhkRVFQTmFtZSwgZ1Rlc3ROYW1l
LCBleHBlY3RhdGlvbikpOworICAgICAgICB9CisgICAgfQorfQorCit0ZW1wbGF0ZSA8c2l6ZV90
IFRlc3RNb2R1bGVJbmRleD4KK2NsYXNzIGRFUVBUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3RX
aXRoUGFyYW08c2l6ZV90PgoreworICBwdWJsaWM6CisgICAgc3RhdGljIHRlc3Rpbmc6OmludGVy
bmFsOjpQYXJhbUdlbmVyYXRvcjxzaXplX3Q+IEdldFRlc3RpbmdSYW5nZSgpCisgICAgeworICAg
ICAgICByZXR1cm4gdGVzdGluZzo6UmFuZ2U8c2l6ZV90PigwLCBHZXRDYXNlTGlzdCgpLm51bUNh
c2VzKCkpOworICAgIH0KKworICAgIHN0YXRpYyBzdGQ6OnN0cmluZyBHZXRDYXNlR1Rlc3ROYW1l
KHNpemVfdCBjYXNlSW5kZXgpCisgICAgeworICAgICAgICBjb25zdCBhdXRvICZjYXNlSW5mbyA9
IEdldENhc2VMaXN0KCkuZ2V0Q2FzZUluZm8oY2FzZUluZGV4KTsKKyAgICAgICAgcmV0dXJuIGNh
c2VJbmZvLm1HVGVzdE5hbWU7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGRFUVBDYXNlTGlz
dCAmR2V0Q2FzZUxpc3QoKQorICAgIHsKKyAgICAgICAgc3RhdGljIGRFUVBDYXNlTGlzdCBzQ2Fz
ZUxpc3QoVGVzdE1vZHVsZUluZGV4KTsKKyAgICAgICAgc0Nhc2VMaXN0LmluaXRpYWxpemUoKTsK
KyAgICAgICAgcmV0dXJuIHNDYXNlTGlzdDsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBTZXRV
cFRlc3RDYXNlKCkKKyAgICB7CisgICAgICAgIHNQYXNzZXMgICAgICAgICAgID0gMDsKKyAgICAg
ICAgc0ZhaWxzICAgICAgICAgICAgPSAwOworICAgICAgICBzVW5leHBlY3RlZFBhc3NlcyA9IDA7
CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpOworCisgIHByb3Rl
Y3RlZDoKKyAgICB2b2lkIHJ1blRlc3QoKQorICAgIHsKKyAgICAgICAgY29uc3QgYXV0byAmY2Fz
ZUluZm8gPSBHZXRDYXNlTGlzdCgpLmdldENhc2VJbmZvKEdldFBhcmFtKCkpOworICAgICAgICBz
dGQ6OmNvdXQgPDwgY2FzZUluZm8ubURFUVBOYW1lIDw8IHN0ZDo6ZW5kbDsKKworICAgICAgICBi
b29sIHJlc3VsdCA9IGRlcXBfbGlidGVzdGVyX3J1bihjYXNlSW5mby5tREVRUE5hbWUuY19zdHIo
KSk7CisKKyAgICAgICAgaWYgKGNhc2VJbmZvLm1FeHBlY3RhdGlvbiA9PSBncHU6OkdQVVRlc3RF
eHBlY3RhdGlvbnNQYXJzZXI6OmtHcHVUZXN0UGFzcykKKyAgICAgICAgeworICAgICAgICAgICAg
RVhQRUNUX1RSVUUocmVzdWx0KTsKKyAgICAgICAgICAgIHNQYXNzZXMgKz0gKHJlc3VsdCA/IDF1
IDogMHUpOworICAgICAgICAgICAgc0ZhaWxzICs9ICghcmVzdWx0ID8gMXUgOiAwdSk7CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZSBpZiAocmVzdWx0KQorICAgICAgICB7CisgICAgICAgICAgICBz
dGQ6OmNvdXQgPDwgIlRlc3QgZXhwZWN0ZWQgdG8gZmFpbCBidXQgcGFzc2VkISIgPDwgc3RkOjpl
bmRsOworICAgICAgICAgICAgc1VuZXhwZWN0ZWRQYXNzZXMrKzsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHNGYWlscysrOworICAgICAgICB9CisgICAg
fQorCisgICAgc3RhdGljIHVuc2lnbmVkIGludCBzUGFzc2VzOworICAgIHN0YXRpYyB1bnNpZ25l
ZCBpbnQgc0ZhaWxzOworICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgc1VuZXhwZWN0ZWRQYXNzZXM7
Cit9OworCit0ZW1wbGF0ZSA8c2l6ZV90IFRlc3RNb2R1bGVJbmRleD4KK3Vuc2lnbmVkIGludCBk
RVFQVGVzdDxUZXN0TW9kdWxlSW5kZXg+OjpzUGFzc2VzICAgICAgICAgICA9IDA7Cit0ZW1wbGF0
ZSA8c2l6ZV90IFRlc3RNb2R1bGVJbmRleD4KK3Vuc2lnbmVkIGludCBkRVFQVGVzdDxUZXN0TW9k
dWxlSW5kZXg+OjpzRmFpbHMgICAgICAgICAgICA9IDA7Cit0ZW1wbGF0ZSA8c2l6ZV90IFRlc3RN
b2R1bGVJbmRleD4KK3Vuc2lnbmVkIGludCBkRVFQVGVzdDxUZXN0TW9kdWxlSW5kZXg+OjpzVW5l
eHBlY3RlZFBhc3NlcyA9IDA7CisKKy8vIHN0YXRpYwordGVtcGxhdGUgPHNpemVfdCBUZXN0TW9k
dWxlSW5kZXg+Cit2b2lkIGRFUVBUZXN0PFRlc3RNb2R1bGVJbmRleD46OlRlYXJEb3duVGVzdENh
c2UoKQoreworICAgIHVuc2lnbmVkIGludCB0b3RhbCA9IHNQYXNzZXMgKyBzRmFpbHM7CisgICAg
ZmxvYXQgcGFzc0ZyYWMgICAgID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNQYXNzZXMpIC8gc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KHRvdGFsKSAqIDEwMC4wZjsKKyAgICBmbG9hdCBmYWlsRnJhYyAgICAgPSBz
dGF0aWNfY2FzdDxmbG9hdD4oc0ZhaWxzKSAvIHN0YXRpY19jYXN0PGZsb2F0Pih0b3RhbCkgKiAx
MDAuMGY7CisgICAgc3RkOjpjb3V0IDw8ICJQYXNzZWQ6ICIgPDwgc1Bhc3NlcyA8PCAiLyIgPDwg
dG90YWwgPDwgIiB0ZXN0cy4gKCIgPDwgcGFzc0ZyYWMgPDwgIiUpIgorICAgICAgICAgICAgICA8
PCBzdGQ6OmVuZGw7CisgICAgaWYgKHNGYWlscyA+IDApCisgICAgeworICAgICAgICBzdGQ6OmNv
dXQgPDwgIkZhaWxlZDogIiA8PCBzRmFpbHMgPDwgIi8iIDw8IHRvdGFsIDw8ICIgdGVzdHMuICgi
IDw8IGZhaWxGcmFjIDw8ICIlKSIKKyAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAg
ICB9CisgICAgaWYgKHNVbmV4cGVjdGVkUGFzc2VzID4gMCkKKyAgICB7CisgICAgICAgIHN0ZDo6
Y291dCA8PCBzVW5leHBlY3RlZFBhc3NlcyA8PCAiIHRlc3RzIHVuZXhwZWN0ZWRseSBwYXNzZWQu
IiA8PCBzdGQ6OmVuZGw7CisgICAgfQorfQorCisvLyBUT0RPKGptYWRpbGwpOiBhZGQgZGlmZmVy
ZW50IHBsYXRmb3JtIGNvbmZpZ3MsIG9yIGFiaWxpdHkgdG8gY2hvb3NlIHBsYXRmb3JtCisjZGVm
aW5lIEFOR0xFX0lOU1RBTlRJQVRFX0RFUVBfVEVTVF9DQVNFKERFUVBfVEVTVCwgTikgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGFzcyBERVFQX1RFU1QgOiBwdWJsaWMgZEVRUFRl
c3Q8Tj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBURVNUX1AoREVR
UF9URVNULCBEZWZhdWx0KSB7IHJ1blRlc3QoKTsgfSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgSU5TVEFOVElBVEVfVEVT
VF9DQVNFX1AoLCBERVFQX1RFU1QsIERFUVBfVEVTVDo6R2V0VGVzdGluZ1JhbmdlKCksICAgICAg
ICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXShjb25zdCB0ZXN0aW5nOjpUZXN0
UGFyYW1JbmZvPHNpemVfdD4gJmluZm8pIHsgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gREVRUF9URVNUOjpHZXRDYXNlR1Rlc3ROYW1lKGluZm8ucGFyYW0pOyBc
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKKworI2lmZGVmIEFOR0xFX0RFUVBfR0xF
UzJfVEVTVFMKK0FOR0xFX0lOU1RBTlRJQVRFX0RFUVBfVEVTVF9DQVNFKGRFUVBfR0xFUzIsIDAp
OworI2VuZGlmCisKKyNpZmRlZiBBTkdMRV9ERVFQX0dMRVMzX1RFU1RTCitBTkdMRV9JTlNUQU5U
SUFURV9ERVFQX1RFU1RfQ0FTRShkRVFQX0dMRVMzLCAxKTsKKyNlbmRpZgorCisjaWZkZWYgQU5H
TEVfREVRUF9HTEVTMzFfVEVTVFMKK0FOR0xFX0lOU1RBTlRJQVRFX0RFUVBfVEVTVF9DQVNFKGRF
UVBfR0xFUzMxLCAyKTsKKyNlbmRpZgorCisjaWZkZWYgQU5HTEVfREVRUF9FR0xfVEVTVFMKK0FO
R0xFX0lOU1RBTlRJQVRFX0RFUVBfVEVTVF9DQVNFKGRFUVBfRUdMLCAzKTsKKyNlbmRpZgorCit9
IC8vIGFub255bW91cyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9kZXFwX3N1cHBvcnQvYW5nbGVfZGVxcF9ndGVzdF9tYWluLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2FuZ2xl
X2RlcXBfZ3Rlc3RfbWFpbi5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9hbmdsZV9kZXFwX2d0ZXN0X21haW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBhbmdsZV9kZXFwX2d0
ZXN0X21haW46CisvLyAgIEVudHJ5IHBvaW50IGZvciBzdGFuZGFsb25lIGRFUVAgdGVzdHMuCisK
KyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorCisjaW5jbHVkZSAiYW5nbGVfZGVxcF9saWJ0ZXN0
ZXIuaCIKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgIHRlc3Rpbmc6
OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAgICBpbnQgcnQgPSBSVU5fQUxMX1RFU1RT
KCk7CisgICAgZGVxcF9saWJ0ZXN0ZXJfc2h1dGRvd25fcGxhdGZvcm0oKTsKKyAgICByZXR1cm4g
cnQ7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBw
b3J0L2FuZ2xlX2RlcXBfbGlidGVzdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9hbmdsZV9kZXFwX2xpYnRlc3Rlci5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1
cHBvcnQvYW5nbGVfZGVxcF9saWJ0ZXN0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0
IEBACisvLworLy8gQ29weXJpZ2h0KGMpIDIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisvLworCisvLyBhbmdsZV9kZXFwX2xpYnRlc3Rlci5oOgorLy8gICBFeHBv
cnRzIGZvciB0aGUgQU5HTEUgZEVRUCBsaWJ0ZXN0ZXIgbW9kdWxlLgorCisjaWZuZGVmIEFOR0xF
X0RFUVBfTElCVEVTVEVSX0hfCisjZGVmaW5lIEFOR0xFX0RFUVBfTElCVEVTVEVSX0hfCisKKyNp
ZiBkZWZpbmVkKF9XSU4zMikKKyMgICBpZiBkZWZpbmVkKEFOR0xFX0RFUVBfTElCVEVTVEVSX0lN
UExFTUVOVEFUSU9OKQorIyAgICAgICBkZWZpbmUgQU5HTEVfTElCVEVTVEVSX0VYUE9SVCBfX2Rl
Y2xzcGVjKGRsbGV4cG9ydCkKKyMgICBlbHNlCisjICAgICAgIGRlZmluZSBBTkdMRV9MSUJURVNU
RVJfRVhQT1JUIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorIyAgIGVuZGlmCisjZWxpZiBkZWZpbmVk
KF9fR05VQ19fKQorIyAgIGlmIGRlZmluZWQoQU5HTEVfREVRUF9MSUJURVNURVJfSU1QTEVNRU5U
QVRJT04pCisjICAgICAgIGRlZmluZSBBTkdMRV9MSUJURVNURVJfRVhQT1JUIF9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQorIyAgIGVsc2UKKyMgICAgICAgZGVmaW5lIEFO
R0xFX0xJQlRFU1RFUl9FWFBPUlQKKyMgICBlbmRpZgorI2Vsc2UKKyMgICBkZWZpbmUgQU5HTEVf
TElCVEVTVEVSX0VYUE9SVAorI2VuZGlmCisKKy8vIEV4cG9ydGVkIHRvIHRoZSB0ZXN0ZXIgYXBw
LgorQU5HTEVfTElCVEVTVEVSX0VYUE9SVCBpbnQgZGVxcF9saWJ0ZXN0ZXJfbWFpbihpbnQgYXJn
YywgY29uc3QgY2hhciAqYXJndltdKTsKK0FOR0xFX0xJQlRFU1RFUl9FWFBPUlQgdm9pZCBkZXFw
X2xpYnRlc3Rlcl9zaHV0ZG93bl9wbGF0Zm9ybSgpOworQU5HTEVfTElCVEVTVEVSX0VYUE9SVCBi
b29sIGRlcXBfbGlidGVzdGVyX3J1bihjb25zdCBjaGFyICpjYXNlTmFtZSk7CisKKyNlbmRpZiAv
LyBBTkdMRV9ERVFQX0xJQlRFU1RFUl9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9hbmdsZV9kZXFwX2xpYnRlc3Rlcl9tYWluLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0
L2FuZ2xlX2RlcXBfbGlidGVzdGVyX21haW4uY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvYW5nbGVfZGVxcF9saWJ0ZXN0
ZXJfbWFpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNDMgQEAKKy8vCisvLyBDb3B5
cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisv
LyBkZXFwX2xpYnRlc3Rlcl9tYWluLmNwcDogRW50cnkgcG9pbnQgZm9yIHRlc3RlciBETEwuCisK
KyNpbmNsdWRlIDxjc3RkaW8+CisjaW5jbHVkZSA8aW9zdHJlYW0+CisKKyNpbmNsdWRlICJhbmds
ZV9kZXFwX2xpYnRlc3Rlci5oIgorI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisjaW5j
bHVkZSAiZGVNYXRoLmgiCisjaW5jbHVkZSAiZGVVbmlxdWVQdHIuaHBwIgorI2luY2x1ZGUgInRj
dUFwcC5ocHAiCisjaW5jbHVkZSAidGN1Q29tbWFuZExpbmUuaHBwIgorI2luY2x1ZGUgInRjdURl
ZnMuaHBwIgorI2luY2x1ZGUgInRjdVBsYXRmb3JtLmhwcCIKKyNpbmNsdWRlICJ0Y3VSYW5kb21P
cmRlckV4ZWN1dG9yLmgiCisjaW5jbHVkZSAidGN1UmVzb3VyY2UuaHBwIgorI2luY2x1ZGUgInRj
dVRlc3RMb2cuaHBwIgorI2luY2x1ZGUgInN5c3RlbV91dGlscy5oIgorCisjaWYgKERFX09TID09
IERFX09TX1dJTjMyKQorI2luY2x1ZGUgPFdpbmRvd3MuaD4KKyNlbGlmIChERV9PUyA9PSBERV9P
U19VTklYKSB8fCAoREVfT1MgPT0gREVfT1NfT1NYKQorI2luY2x1ZGUgPHN5cy91bmlzdGQuaD4K
KyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VsaWYgKERF
X09TID09IERFX09TX0FORFJPSUQpCisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNlbmRpZgorCit0
Y3U6OlBsYXRmb3JtICpjcmVhdGVQbGF0Zm9ybSgpOworCituYW1lc3BhY2UKK3sKKwordGN1OjpQ
bGF0Zm9ybSAqZ19wbGF0Zm9ybSA9IG51bGxwdHI7Cit0Y3U6OkNvbW1hbmRMaW5lICpnX2NtZExp
bmUgPSBudWxscHRyOwordGN1OjpEaXJBcmNoaXZlICpnX2FyY2hpdmUgPSBudWxscHRyOwordGN1
OjpUZXN0TG9nICpnX2xvZyA9IG51bGxwdHI7Cit0Y3U6OlRlc3RDb250ZXh0ICpnX3Rlc3RDdHgg
PSBudWxscHRyOwordGN1OjpUZXN0UGFja2FnZVJvb3QgKmdfcm9vdCA9IG51bGxwdHI7Cit0Y3U6
OlJhbmRvbU9yZGVyRXhlY3V0b3IgKmdfZXhlY3V0b3IgPSBudWxscHRyOworCitjb25zdCBjaGFy
ICpnX2RFUVBEYXRhU2VhcmNoRGlyc1tdID0geworICAgICJkYXRhIiwKKyAgICAidGhpcmRfcGFy
dHkvZGVxcC9kYXRhIiwKKyAgICAiLi4vdGhpcmRfcGFydHkvZGVxcC9zcmMvZGF0YSIsCisgICAg
ImRlcXBfc3VwcG9ydC9kYXRhIiwKKyAgICAidGhpcmRfcGFydHkvZGVxcC9zcmMvZGF0YSIsCisg
ICAgIi4uLy4uL3RoaXJkX3BhcnR5L2RlcXAvc3JjL2RhdGEiLAorICAgICIuLi8uLi8uLi90aGly
ZF9wYXJ0eS9kZXFwL3NyYy9kYXRhIiwKKyAgICAiLi4vLi4vc2RjYXJkL2Nocm9taXVtX3Rlc3Rz
X3Jvb3QvdGhpcmRfcGFydHkvZGVxcC9zcmMvZGF0YSIsCit9OworCisvLyBUT0RPKGptYWRpbGwp
OiB1cHN0cmVhbSB0byBkRVFQPworI2lmIChERV9PUyA9PSBERV9PU19XSU4zMikKK2RlQm9vbCBk
ZUlzRGlyKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQoreworICAgIFdJTjMyX0ZJTEVfQVRUUklCVVRF
X0RBVEEgZmlsZUluZm9ybWF0aW9uOworCisgICAgQk9PTCByZXN1bHQgPSBHZXRGaWxlQXR0cmli
dXRlc0V4QShmaWxlbmFtZSwgR2V0RmlsZUV4SW5mb1N0YW5kYXJkLCAmZmlsZUluZm9ybWF0aW9u
KTsKKyAgICBpZiAocmVzdWx0KQorICAgIHsKKyAgICAgICAgRFdPUkQgYXR0cmlicyA9IGZpbGVJ
bmZvcm1hdGlvbi5kd0ZpbGVBdHRyaWJ1dGVzOworICAgICAgICByZXR1cm4gKGF0dHJpYnMgIT0g
SU5WQUxJRF9GSUxFX0FUVFJJQlVURVMpICYmICgoYXR0cmlicyAmIEZJTEVfQVRUUklCVVRFX0RJ
UkVDVE9SWSkgPiAwKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZWxpZiAoREVf
T1MgPT0gREVfT1NfVU5JWCkgfHwgKERFX09TID09IERFX09TX09TWCkgfHwgKERFX09TID09IERF
X09TX0FORFJPSUQpCitkZUJvb2wgZGVJc0Rpcihjb25zdCBjaGFyICpmaWxlbmFtZSkKK3sKKyAg
ICBzdHJ1Y3Qgc3RhdCBzdDsKKyAgICBpbnQgcmVzdWx0ID0gc3RhdChmaWxlbmFtZSwgJnN0KTsK
KyAgICByZXR1cm4gcmVzdWx0ID09IDAgJiYgKChzdC5zdF9tb2RlICYgU19JRkRJUikgPT0gU19J
RkRJUik7Cit9CisjZWxzZQorI2Vycm9yIFRPRE8oam1hZGlsbCk6IHN1cHBvcnQgb3RoZXIgcGxh
dGZvcm1zCisjZW5kaWYKKworYm9vbCBGaW5kRGF0YURpcihzdGQ6OnN0cmluZyAqZGF0YURpck91
dCkKK3sKKyAgICBmb3IgKGF1dG8gc2VhcmNoRGlyIDogZ19kRVFQRGF0YVNlYXJjaERpcnMpCisg
ICAgeworICAgICAgICBpZiAoZGVJc0Rpcigoc3RkOjpzdHJpbmcoc2VhcmNoRGlyKSArICIvZ2xl
czIiKS5jX3N0cigpKSkKKyAgICAgICAgeworICAgICAgICAgICAgKmRhdGFEaXJPdXQgPSBzZWFy
Y2hEaXI7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHN0
ZDo6c3RyaW5nc3RyZWFtIGRpclN0cmVhbTsKKyAgICAgICAgZGlyU3RyZWFtIDw8IGFuZ2xlOjpH
ZXRFeGVjdXRhYmxlRGlyZWN0b3J5KCkgPDwgIi8iIDw8IHNlYXJjaERpcjsKKyAgICAgICAgc3Rk
OjpzdHJpbmcgZGF0YURpciA9IGRpclN0cmVhbS5zdHIoKTsKKyAgICAgICAgZGlyU3RyZWFtIDw8
ICIvZ2xlczIiOworICAgICAgICBzdGQ6OnN0cmluZyBzZWFyY2hQYXRoID0gZGlyU3RyZWFtLnN0
cigpOworCisgICAgICAgIGlmIChkZUlzRGlyKHNlYXJjaFBhdGguY19zdHIoKSkpCisgICAgICAg
IHsKKyAgICAgICAgICAgICpkYXRhRGlyT3V0ID0gZGF0YURpcjsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGQ6
OnN0cmluZyBHZXRMb2dGaWxlTmFtZShzdGQ6OnN0cmluZyBkZXFwRGF0YURpcikKK3sKKyNpZiAo
REVfT1MgPT0gREVfT1NfQU5EUk9JRCkKKyAgICAvLyBPbiBBbmRyb2lkIGV4ZWN1dGFibGUgZGly
IGlzIG5vdCB3cml0YWJsZSwgc28gdXNlIGRhdGEgZGlyIGluc3RlYWQKKyAgICByZXR1cm4gZGVx
cERhdGFEaXIgKyAiLyIgKyBnX2NtZExpbmUtPmdldExvZ0ZpbGVOYW1lKCk7CisjZWxzZQorICAg
IHJldHVybiBnX2NtZExpbmUtPmdldExvZ0ZpbGVOYW1lKCk7CisjZW5kaWYKK30KKworYm9vbCBJ
bml0UGxhdGZvcm0oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKmFyZ3ZbXSkKK3sKKyAgICB0cnkKKyAg
ICB7CisjaWYgKERFX09TICE9IERFX09TX1dJTjMyKQorICAgICAgICAvLyBTZXQgc3Rkb3V0IHRv
IGxpbmUtYnVmZmVyZWQgbW9kZSAod2lsbCBiZSBmdWxseSBidWZmZXJlZCBieSBkZWZhdWx0IGlm
IHN0ZG91dCBpcyBwaXBlKS4KKyAgICAgICAgc2V0dmJ1ZihzdGRvdXQsIERFX05VTEwsIF9JT0xC
RiwgNCAqIDEwMjQpOworI2VuZGlmCisgICAgICAgIGdfcGxhdGZvcm0gPSBjcmVhdGVQbGF0Zm9y
bSgpOworCisgICAgICAgIGlmICghZGVTZXRSb3VuZGluZ01vZGUoREVfUk9VTkRJTkdNT0RFX1RP
X05FQVJFU1QpKQorICAgICAgICB7CisgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIkZhaWxlZCB0
byBzZXQgZmxvYXRpbmcgcG9pbnQgcm91bmRpbmcgbW9kZS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHN0ZDo6c3RyaW5nIGRl
cXBEYXRhRGlyOworICAgICAgICBpZiAoIUZpbmREYXRhRGlyKCZkZXFwRGF0YURpcikpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiRmFpbGVkIHRvIGZpbmQgZEVRUCBkYXRh
IGRpcmVjdG9yeS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorCisgICAgICAgIGdfY21kTGluZSA9IG5ldyB0Y3U6OkNvbW1hbmRMaW5lKGFyZ2Ms
IGFyZ3YpOworICAgICAgICBnX2FyY2hpdmUgPSBuZXcgdGN1OjpEaXJBcmNoaXZlKGRlcXBEYXRh
RGlyLmNfc3RyKCkpOworICAgICAgICBnX2xvZyAgICAgPSBuZXcgdGN1OjpUZXN0TG9nKEdldExv
Z0ZpbGVOYW1lKGRlcXBEYXRhRGlyKS5jX3N0cigpLCBnX2NtZExpbmUtPmdldExvZ0ZsYWdzKCkp
OworICAgICAgICBnX3Rlc3RDdHggPSBuZXcgdGN1OjpUZXN0Q29udGV4dCgqZ19wbGF0Zm9ybSwg
KmdfYXJjaGl2ZSwgKmdfbG9nLCAqZ19jbWRMaW5lLCBERV9OVUxMKTsKKyAgICAgICAgZ19yb290
ID0gbmV3IHRjdTo6VGVzdFBhY2thZ2VSb290KCpnX3Rlc3RDdHgsIHRjdTo6VGVzdFBhY2thZ2VS
ZWdpc3RyeTo6Z2V0U2luZ2xldG9uKCkpOworICAgICAgICBnX2V4ZWN1dG9yID0gbmV3IHRjdTo6
UmFuZG9tT3JkZXJFeGVjdXRvcigqZ19yb290LCAqZ190ZXN0Q3R4KTsKKyAgICB9CisgICAgY2F0
Y2ggKGNvbnN0IHN0ZDo6ZXhjZXB0aW9uJiBlKQorICAgIHsKKyAgICAgICAgdGN1OjpkaWUoIiVz
IiwgZS53aGF0KCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK30gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCisvLyBFeHBvcnRlZCB0byB0
aGUgdGVzdGVyIGFwcC4KK0FOR0xFX0xJQlRFU1RFUl9FWFBPUlQgaW50IGRlcXBfbGlidGVzdGVy
X21haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKmFyZ3ZbXSkKK3sKKyAgICBpZiAoIUluaXRQbGF0
Zm9ybShhcmdjLCBhcmd2KSkKKyAgICB7CisgICAgICAgIHRjdTo6ZGllKCJDb3VsZCBub3QgaW5p
dGlhbGl6ZSB0aGUgZEVRUCBwbGF0Zm9ybSIpOworICAgIH0KKworICAgIHRyeQorICAgIHsKKyAg
ICAgICAgZGU6OlVuaXF1ZVB0cjx0Y3U6OkFwcD4gYXBwKG5ldyB0Y3U6OkFwcCgqZ19wbGF0Zm9y
bSwgKmdfYXJjaGl2ZSwgKmdfbG9nLCAqZ19jbWRMaW5lKSk7CisKKyAgICAgICAgLy8gTWFpbiBs
b29wLgorICAgICAgICBmb3IgKDs7KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIWFwcC0+
aXRlcmF0ZSgpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAg
IGNhdGNoIChjb25zdCBzdGQ6OmV4Y2VwdGlvbiAmZSkKKyAgICB7CisgICAgICAgIGRlcXBfbGli
dGVzdGVyX3NodXRkb3duX3BsYXRmb3JtKCk7CisgICAgICAgIHRjdTo6ZGllKCIlcyIsIGUud2hh
dCgpKTsKKyAgICB9CisKKyAgICBkZXFwX2xpYnRlc3Rlcl9zaHV0ZG93bl9wbGF0Zm9ybSgpOwor
ICAgIHJldHVybiAwOworfQorCitBTkdMRV9MSUJURVNURVJfRVhQT1JUIHZvaWQgZGVxcF9saWJ0
ZXN0ZXJfc2h1dGRvd25fcGxhdGZvcm0oKQoreworICAgIGRlbGV0ZSBnX2V4ZWN1dG9yOworICAg
IGRlbGV0ZSBnX3Jvb3Q7CisgICAgZGVsZXRlIGdfdGVzdEN0eDsKKyAgICBkZWxldGUgZ19sb2c7
CisgICAgZGVsZXRlIGdfYXJjaGl2ZTsKKyAgICBkZWxldGUgZ19jbWRMaW5lOworICAgIGRlbGV0
ZSBnX3BsYXRmb3JtOworfQorCitBTkdMRV9MSUJURVNURVJfRVhQT1JUIGJvb2wgZGVxcF9saWJ0
ZXN0ZXJfcnVuKGNvbnN0IGNoYXIgKmNhc2VOYW1lKQoreworICAgIGNvbnN0IGNoYXIgKmVtcHR5
U3RyaW5nID0gIiI7CisgICAgaWYgKGdfcGxhdGZvcm0gPT0gbnVsbHB0ciAmJiAhSW5pdFBsYXRm
b3JtKDEsICZlbXB0eVN0cmluZykpCisgICAgeworICAgICAgICB0Y3U6OmRpZSgiRmFpbGVkIHRv
IGluaXRpYWxpemUgcGxhdGZvcm0uIik7CisgICAgfQorCisgICAgdHJ5CisgICAgeworICAgICAg
ICAvLyBQb2xsIHBsYXRmb3JtIGV2ZW50cworICAgICAgICBjb25zdCBib29sIHBsYXRmb3JtT2sg
PSBnX3BsYXRmb3JtLT5wcm9jZXNzRXZlbnRzKCk7CisKKyAgICAgICAgaWYgKHBsYXRmb3JtT2sp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IHRjdTo6VGVzdFN0YXR1cyAmcmVzdWx0ID0g
Z19leGVjdXRvci0+ZXhlY3V0ZShjYXNlTmFtZSk7CisgICAgICAgICAgICBzd2l0Y2ggKHJlc3Vs
dC5nZXRDb2RlKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBRUF9URVNU
X1JFU1VMVF9QQVNTOgorICAgICAgICAgICAgICAgIGNhc2UgUVBfVEVTVF9SRVNVTFRfTk9UX1NV
UFBPUlRFRDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAg
ICAgY2FzZSBRUF9URVNUX1JFU1VMVF9RVUFMSVRZX1dBUk5JTkc6CisgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6Y291dCA8PCAiUXVhbGl0eSB3YXJuaW5nISAiIDw8IHJlc3VsdC5nZXREZXNjcmlw
dGlvbigpIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICAgICAgY2FzZSBRUF9URVNUX1JFU1VMVF9DT01QQVRJQklMSVRZX1dBUk5JTkc6
CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiQ29tcGF0aWJsaXR5IHdhcm5pbmch
ICIgPDwgcmVzdWx0LmdldERlc2NyaXB0aW9uKCkgPDwgc3RkOjplbmRsOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIkFib3J0ZWQgdGVz
dCEiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaCAoY29uc3Qgc3Rk
OjpleGNlcHRpb24gJmUpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIkV4Y2VwdGlvbiBy
dW5uaW5nIHRlc3Q6ICIgPDwgZS53aGF0KCkgPDwgc3RkOjplbmRsOworICAgIH0KKworICAgIHJl
dHVybiBmYWxzZTsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9k
ZXFwX3N1cHBvcnQvYW5nbGVfZGVxcF90ZXN0c19tYWluLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2FuZ2xlX2RlcXBfdGVz
dHNfbWFpbi5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL2RlcXBfc3VwcG9ydC9hbmdsZV9kZXFwX3Rlc3RzX21haW4uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTQgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIGFuZ2xlX2RlcXBfdGVzdHNfbWFp
bi5jcHA6IEVudHJ5IHBvaW50IGZvciBBTkdMRSdzIGRFUVAgdGVzdHMuCisKKyNpbmNsdWRlICJh
bmdsZV9kZXFwX2xpYnRlc3Rlci5oIgorCitpbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAq
YXJndltdKQoreworICAgIHJldHVybiBkZXFwX2xpYnRlc3Rlcl9tYWluKGFyZ2MsIGFyZ3YpOwor
fQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9k
ZXFwX2VnbF90ZXN0X2V4cGVjdGF0aW9ucy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9kZXFwX2VnbF90ZXN0X2V4cGVjdGF0
aW9ucy50eHQJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2RlcXBfc3VwcG9ydC9kZXFwX2VnbF90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwyNjAgQEAKKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBUaGlzIGZpbGUgY29udGFpbnMgYSBsaXN0
IG9mIGRlZmVjdGl2ZSBkRVFQIGNvbmZvcm1hbmNlIHRlc3RzLiBUaGUgZXhwZWN0ZWQKKy8vIGZv
cm1hdCBpczoKKy8vICB7QlVHI30ge01PRElGSUVSU30gOiB7VEVTVF9OQU1FfSA9IHtQQVNTLEZB
SUwsRkxBS1ksVElNRU9VVCxTS0lQfQorLy8KKy8vIE1PRElGSUVSUyBjYW4gYmUgYSBjb21iaW5h
dGlvbiBvZiB0aGUgYmVsb3cgbGlzdDoKKy8vICBXSU4gWFAgVklTVEEgV0lONyBNQUMgTEVPUEFS
RCBTTk9XTEVPUEFSRCBMSU9OIExJTlVYIENIUk9NRU9TIE1PVU5UQUlOTElPTgorLy8gIE1BVkVS
SUNLUworLy8gIE5WSURJQSBBTUQgSU5URUwKKy8vICAweGFiY2QgLSBHUFUgUENJIGRldmljZSBJ
RC4gU3BlY2lmeWluZyBhIFBDSSBpZCByZXF1aXJlcyBhIHZlbmRvci4KKy8vICBERUJVRyBSRUxF
QVNFCisvLyBUT0RPKGptYWRpbGwpOiBBZGQgQU5HTEUgUmVuZGVyZXIgc2VsZWN0aW9uIG1vZGlm
aWVycworLy8KKy8vIFRFU1RfTkFNRSBjYW4gYmUgYSBzcGVjaWZpYyB0ZXN0IG5hbWUsIG9yIGhh
dmUgYSAnKicgaW4gdGhlIGVuZCwgd2hpY2gKKy8vIGluZGljYXRlcyBhIHByZWZpeCBtYXRjaGlu
Zy4KKy8vCisvLyBFeGFtcGxlczoKKy8vICA5MTUzMCBNQUMgV0lOIExJTlVYIDogY29udGV4dF9s
b3N0X3Jlc3RvcmVkID0gVElNRU9VVAorLy8gIDkxNTMzIFdJTiA6IGdsX21pbl91bmlmb3JtcyA9
IEZBSUwKKy8vICA5MTUzMSBNQUMgV0lOIExJTlVYIDogY29uZm9ybWFuY2VfbW9yZV8qID0gU0tJ
UAorLy8gIDkxNTMyIE1BQyBOVklESUEgMHgwNjQwIDogdGV4X2ltYWdlX2FuZF9zdWJfaW1hZ2Vf
MmRfd2l0aF92aWRlbyA9IFBBU1MgRkFJTAorCisvLyBBTkdMRSBkb2VzIG5vdCB5ZXQgc3VwcG9y
dCBtdWx0aXRocmVhZGluZworMTM0MCBXSU4gTUFDIExJTlVYIDogZEVRUC1FR0wuZnVuY3Rpb25h
bC5zaGFyaW5nLmdsZXMyLm11bHRpdGhyZWFkLiogPSBTS0lQCisxMzQwIFdJTiBNQUMgTElOVVgg
OiBkRVFQLUVHTC5mdW5jdGlvbmFsLm11bHRpdGhyZWFkLiogPSBTS0lQCisxMzQwIFdJTiBNQUMg
TElOVVggOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJlbmRlci5tdWx0aV90aHJlYWQuKiA9IFNLSVAK
KworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyAgVGVtcHJvcnkgZW50cmllczogdGhl
eSBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIHRoZSBidWdzIGFyZSBmaXhlZC4KKy8vCisvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLworCisvLyBUT0RPKGptYWRpbGwpOiBUcmlhZ2UgdGhlc2UgaW50byBw
ZXJtYW5hbmVudCBhbmQgdGVtcG9yYXJ5IGZhaWx1cmVzLgorMTM0MCBXSU4gOiBkRVFQLUVHTC5m
dW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLndpbmRvdy5yZ2I1NjVfbm9fZGVwdGhfbm9f
c3RlbmNpbCA9IFNLSVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJm
YWNlLnNpbXBsZS53aW5kb3cucmdiNTY1X2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQCisxMzQwIFdJ
TiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zaW1wbGUud2luZG93LnJnYjU2
NV9kZXB0aF9zdGVuY2lsID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1
ZXJ5X3N1cmZhY2Uuc2ltcGxlLndpbmRvdy5yZ2I4ODhfbm9fZGVwdGhfbm9fc3RlbmNpbCA9IFNL
SVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS53
aW5kb3cucmdiODg4X2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQCisxMzQwIFdJTiA6IGRFUVAtRUdM
LmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zaW1wbGUud2luZG93LnJnYjg4OF9kZXB0aF9zdGVu
Y2lsID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uu
c2ltcGxlLndpbmRvdy5yZ2JhNDQ0NF9ub19kZXB0aF9ub19zdGVuY2lsID0gU0tJUAorMTM0MCBX
SU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLndpbmRvdy5yZ2Jh
NDQ0NF9kZXB0aF9ub19zdGVuY2lsID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlv
bmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLndpbmRvdy5yZ2JhNDQ0NF9kZXB0aF9zdGVuY2lsID0g
U0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxl
LndpbmRvdy5yZ2JhNTU1MV9ub19kZXB0aF9ub19zdGVuY2lsID0gU0tJUAorMTM0MCBXSU4gOiBk
RVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLndpbmRvdy5yZ2JhNTU1MV9k
ZXB0aF9ub19zdGVuY2lsID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1
ZXJ5X3N1cmZhY2Uuc2ltcGxlLndpbmRvdy5yZ2JhNTU1MV9kZXB0aF9zdGVuY2lsID0gU0tJUAor
MTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLndpbmRv
dy5yZ2JhODg4OF9ub19kZXB0aF9ub19zdGVuY2lsID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLndpbmRvdy5yZ2JhODg4OF9kZXB0aF9u
b19zdGVuY2lsID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1
cmZhY2Uuc2ltcGxlLndpbmRvdy5yZ2JhODg4OF9kZXB0aF9zdGVuY2lsID0gU0tJUAorMTM0MCBX
SU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLnBidWZmZXIucmdi
NTY1X25vX2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0
aW9uYWwucXVlcnlfc3VyZmFjZS5zaW1wbGUucGJ1ZmZlci5yZ2I1NjVfZGVwdGhfbm9fc3RlbmNp
bCA9IFNLSVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNp
bXBsZS5wYnVmZmVyLnJnYjU2NV9kZXB0aF9zdGVuY2lsID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQ
LUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLnBidWZmZXIucmdiODg4X25vX2Rl
cHRoX25vX3N0ZW5jaWwgPSBTS0lQCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVl
cnlfc3VyZmFjZS5zaW1wbGUucGJ1ZmZlci5yZ2I4ODhfZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAK
KzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS5wYnVm
ZmVyLnJnYjg4OF9kZXB0aF9zdGVuY2lsID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLnBidWZmZXIucmdiYTQ0NDRfbm9fZGVwdGhfbm9f
c3RlbmNpbCA9IFNLSVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJm
YWNlLnNpbXBsZS5wYnVmZmVyLnJnYmE0NDQ0X2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQCisxMzQw
IFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zaW1wbGUucGJ1ZmZlci5y
Z2JhNDQ0NF9kZXB0aF9zdGVuY2lsID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlv
bmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLnBidWZmZXIucmdiYTU1NTFfbm9fZGVwdGhfbm9fc3Rl
bmNpbCA9IFNLSVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNl
LnNpbXBsZS5wYnVmZmVyLnJnYmE1NTUxX2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQCisxMzQwIFdJ
TiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zaW1wbGUucGJ1ZmZlci5yZ2Jh
NTU1MV9kZXB0aF9zdGVuY2lsID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFs
LnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLnBidWZmZXIucmdiYTg4ODhfbm9fZGVwdGhfbm9fc3RlbmNp
bCA9IFNLSVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNp
bXBsZS5wYnVmZmVyLnJnYmE4ODg4X2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQCisxMzQwIFdJTiA6
IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zaW1wbGUucGJ1ZmZlci5yZ2JhODg4
OF9kZXB0aF9zdGVuY2lsID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1
ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0ZS53aW5kb3cucmdiNTY1X25vX2RlcHRoX25vX3N0ZW5j
aWwgPSBTS0lQCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5z
ZXRfYXR0cmlidXRlLndpbmRvdy5yZ2I1NjVfZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAKKzEzNDAg
V0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNldF9hdHRyaWJ1dGUud2lu
ZG93LnJnYjU2NV9kZXB0aF9zdGVuY2lsID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0ZS53aW5kb3cucmdiODg4X25vX2RlcHRo
X25vX3N0ZW5jaWwgPSBTS0lQCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlf
c3VyZmFjZS5zZXRfYXR0cmlidXRlLndpbmRvdy5yZ2I4ODhfZGVwdGhfbm9fc3RlbmNpbCA9IFNL
SVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNldF9hdHRy
aWJ1dGUud2luZG93LnJnYjg4OF9kZXB0aF9zdGVuY2lsID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQ
LUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0ZS53aW5kb3cucmdiYTQ0
NDRfbm9fZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rp
b25hbC5xdWVyeV9zdXJmYWNlLnNldF9hdHRyaWJ1dGUud2luZG93LnJnYmE0NDQ0X2RlcHRoX25v
X3N0ZW5jaWwgPSBTS0lQCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3Vy
ZmFjZS5zZXRfYXR0cmlidXRlLndpbmRvdy5yZ2JhNDQ0NF9kZXB0aF9zdGVuY2lsID0gU0tJUAor
MTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0
ZS53aW5kb3cucmdiYTU1NTFfbm9fZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAKKzEzNDAgV0lOIDog
ZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNldF9hdHRyaWJ1dGUud2luZG93LnJn
YmE1NTUxX2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0
aW9uYWwucXVlcnlfc3VyZmFjZS5zZXRfYXR0cmlidXRlLndpbmRvdy5yZ2JhNTU1MV9kZXB0aF9z
dGVuY2lsID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZh
Y2Uuc2V0X2F0dHJpYnV0ZS53aW5kb3cucmdiYTg4ODhfbm9fZGVwdGhfbm9fc3RlbmNpbCA9IFNL
SVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNldF9hdHRy
aWJ1dGUud2luZG93LnJnYmE4ODg4X2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQCisxMzQwIFdJTiA6
IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zZXRfYXR0cmlidXRlLndpbmRvdy5y
Z2JhODg4OF9kZXB0aF9zdGVuY2lsID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlv
bmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0ZS5wYnVmZmVyLnJnYjU2NV9ub19kZXB0aF9u
b19zdGVuY2lsID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1
cmZhY2Uuc2V0X2F0dHJpYnV0ZS5wYnVmZmVyLnJnYjU2NV9kZXB0aF9ub19zdGVuY2lsID0gU0tJ
UAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJp
YnV0ZS5wYnVmZmVyLnJnYjU2NV9kZXB0aF9zdGVuY2lsID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQ
LUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0ZS5wYnVmZmVyLnJnYjg4
OF9ub19kZXB0aF9ub19zdGVuY2lsID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlv
bmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0ZS5wYnVmZmVyLnJnYjg4OF9kZXB0aF9ub19z
dGVuY2lsID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZh
Y2Uuc2V0X2F0dHJpYnV0ZS5wYnVmZmVyLnJnYjg4OF9kZXB0aF9zdGVuY2lsID0gU0tJUAorMTM0
MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0ZS5w
YnVmZmVyLnJnYmE0NDQ0X25vX2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQCisxMzQwIFdJTiA6IGRF
UVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zZXRfYXR0cmlidXRlLnBidWZmZXIucmdi
YTQ0NDRfZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rp
b25hbC5xdWVyeV9zdXJmYWNlLnNldF9hdHRyaWJ1dGUucGJ1ZmZlci5yZ2JhNDQ0NF9kZXB0aF9z
dGVuY2lsID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZh
Y2Uuc2V0X2F0dHJpYnV0ZS5wYnVmZmVyLnJnYmE1NTUxX25vX2RlcHRoX25vX3N0ZW5jaWwgPSBT
S0lQCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zZXRfYXR0
cmlidXRlLnBidWZmZXIucmdiYTU1NTFfZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAKKzEzNDAgV0lO
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNldF9hdHRyaWJ1dGUucGJ1ZmZl
ci5yZ2JhNTU1MV9kZXB0aF9zdGVuY2lsID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0ZS5wYnVmZmVyLnJnYmE4ODg4X25vX2Rl
cHRoX25vX3N0ZW5jaWwgPSBTS0lQCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVl
cnlfc3VyZmFjZS5zZXRfYXR0cmlidXRlLnBidWZmZXIucmdiYTg4ODhfZGVwdGhfbm9fc3RlbmNp
bCA9IFNLSVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNl
dF9hdHRyaWJ1dGUucGJ1ZmZlci5yZ2JhODg4OF9kZXB0aF9zdGVuY2lsID0gU0tJUAorMTM0MCBX
SU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X2NvbmZpZy5nZXRfY29uZmlncy5nZXRfY29u
Zmlnc19ib3VuZHMgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3Nl
X2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX29ubHkuYnVmZmVyX3NpemUgPSBGQUlMCisxMzQwIFdJ
TiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX29u
bHkucmVkX3NpemUgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3Nl
X2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX29ubHkuZ3JlZW5fc2l6ZSA9IEZBSUwKKzEzNDAgV0lO
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fb25s
eS5ibHVlX3NpemUgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3Nl
X2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX29ubHkubHVtaW5hbmNlX3NpemUgPSBGQUlMCisxMzQw
IFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9u
X29ubHkuYWxwaGFfc2l6ZSA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5j
aG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fb25seS5hbHBoYV9tYXNrX3NpemUgPSBGQUlM
CisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2Vs
ZWN0aW9uX29ubHkuYmluZF90b190ZXh0dXJlX3JnYiA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1F
R0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fb25seS5iaW5kX3Rv
X3RleHR1cmVfcmdiYSA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9v
c2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fb25seS5jb2xvcl9idWZmZXJfdHlwZSA9IEZBSUwK
KzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxl
Y3Rpb25fb25seS5jb25maWdfY2F2ZWF0ID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9vbmx5LmNvbmZpZ19pZCA9IEZB
SUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5z
ZWxlY3Rpb25fb25seS5kZXB0aF9zaXplID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9vbmx5LmxldmVsID0gRkFJTAor
MTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVj
dGlvbl9vbmx5Lm1heF9zd2FwX2ludGVydmFsID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5m
dW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9vbmx5Lm1pbl9zd2FwX2lu
dGVydmFsID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25m
aWcuc2ltcGxlLnNlbGVjdGlvbl9vbmx5Lm5hdGl2ZV9yZW5kZXJhYmxlID0gRkFJTAorMTM0MCBX
SU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9v
bmx5Lm5hdGl2ZV92aXN1YWxfdHlwZSA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rp
b25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fb25seS5zYW1wbGVfYnVmZmVycyA9
IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBs
ZS5zZWxlY3Rpb25fb25seS5zYW1wbGVzID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9vbmx5LnN0ZW5jaWxfc2l6ZSA9
IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBs
ZS5zZWxlY3Rpb25fb25seS5zdXJmYWNlX3R5cGUgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdM
LmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX29ubHkudHJhbnNwYXJl
bnRfcmVkX3ZhbHVlID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29z
ZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9vbmx5LnRyYW5zcGFyZW50X2dyZWVuX3ZhbHVlID0g
RkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxl
LnNlbGVjdGlvbl9vbmx5LnRyYW5zcGFyZW50X2JsdWVfdmFsdWUgPSBGQUlMCisxMzQwIFdJTiA6
IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX2FuZF9z
b3J0LmJ1ZmZlcl9zaXplID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNo
b29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9hbmRfc29ydC5yZWRfc2l6ZSA9IEZBSUwKKzEz
NDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rp
b25fYW5kX3NvcnQuZ3JlZW5fc2l6ZSA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rp
b25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fYW5kX3NvcnQuYmx1ZV9zaXplID0g
RkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxl
LnNlbGVjdGlvbl9hbmRfc29ydC5sdW1pbmFuY2Vfc2l6ZSA9IEZBSUwKKzEzNDAgV0lOIDogZEVR
UC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fYW5kX3NvcnQu
YWxwaGFfc2l6ZSA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2Vf
Y29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fYW5kX3NvcnQuYWxwaGFfbWFza19zaXplID0gRkFJTAor
MTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVj
dGlvbl9hbmRfc29ydC5iaW5kX3RvX3RleHR1cmVfcmdiID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQ
LUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9hbmRfc29ydC5i
aW5kX3RvX3RleHR1cmVfcmdiYSA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25h
bC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fYW5kX3NvcnQuY29sb3JfYnVmZmVyX3R5
cGUgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5z
aW1wbGUuc2VsZWN0aW9uX2FuZF9zb3J0LmNvbmZpZ19jYXZlYXQgPSBGQUlMCisxMzQwIFdJTiA6
IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX2FuZF9z
b3J0LmNvbmZpZ19pZCA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9v
c2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fYW5kX3NvcnQuZGVwdGhfc2l6ZSA9IEZBSUwKKzEz
NDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rp
b25fYW5kX3NvcnQubGV2ZWwgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwu
Y2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX2FuZF9zb3J0Lm1heF9zd2FwX2ludGVydmFs
ID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2lt
cGxlLnNlbGVjdGlvbl9hbmRfc29ydC5taW5fc3dhcF9pbnRlcnZhbCA9IEZBSUwKKzEzNDAgV0lO
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fYW5k
X3NvcnQubmF0aXZlX3JlbmRlcmFibGUgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0
aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX2FuZF9zb3J0Lm5hdGl2ZV92aXN1
YWxfdHlwZSA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29u
ZmlnLnNpbXBsZS5zZWxlY3Rpb25fYW5kX3NvcnQuc2FtcGxlX2J1ZmZlcnMgPSBGQUlMCisxMzQw
IFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9u
X2FuZF9zb3J0LnNhbXBsZXMgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwu
Y2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX2FuZF9zb3J0LnN0ZW5jaWxfc2l6ZSA9IEZB
SUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5z
ZWxlY3Rpb25fYW5kX3NvcnQuc3VyZmFjZV90eXBlID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9hbmRfc29ydC50cmFu
c3BhcmVudF9yZWRfdmFsdWUgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwu
Y2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX2FuZF9zb3J0LnRyYW5zcGFyZW50X2dyZWVu
X3ZhbHVlID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25m
aWcuc2ltcGxlLnNlbGVjdGlvbl9hbmRfc29ydC50cmFuc3BhcmVudF9ibHVlX3ZhbHVlID0gRkFJ
TAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcucmFuZG9tLmNv
bG9yX3NpemVzID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9j
b25maWcucmFuZG9tLmNvbG9yX2RlcHRoX3N0ZW5jaWxfc2l6ZXMgPSBGQUlMCisxMzQwIFdJTiA6
IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5yYW5kb20uYnVmZmVyX3NpemVzID0g
RkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcucmFuZG9t
LnN1cmZhY2VfdHlwZSA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9v
c2VfY29uZmlnLnJhbmRvbS5zYW1wbGVfYnVmZmVycyA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1F
R0wuZnVuY3Rpb25hbC5yZW5kZXIuc2luZ2xlX2NvbnRleHQuZ2xlczIucmdiYTU1NTFfd2luZG93
ID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJlbmRlci5zaW5nbGVfY29u
dGV4dC5nbGVzMi5yZ2JhNTU1MV9wYnVmZmVyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5m
dW5jdGlvbmFsLnJlbmRlci5zaW5nbGVfY29udGV4dC5nbGVzMy5yZ2JhNTU1MV93aW5kb3cgPSBG
QUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucmVuZGVyLnNpbmdsZV9jb250ZXh0
LmdsZXMzLnJnYmE1NTUxX3BidWZmZXIgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0
aW9uYWwucmVuZGVyLm11bHRpX2NvbnRleHQuZ2xlczIucmdiYTU1NTFfd2luZG93ID0gRkFJTAor
MTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJlbmRlci5tdWx0aV9jb250ZXh0LmdsZXMy
LnJnYmE1NTUxX3BidWZmZXIgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwu
cmVuZGVyLm11bHRpX2NvbnRleHQuZ2xlczMucmdiYTU1NTFfd2luZG93ID0gRkFJTAorMTM0MCBX
SU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJlbmRlci5tdWx0aV9jb250ZXh0LmdsZXMzLnJnYmE1
NTUxX3BidWZmZXIgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucmVuZGVy
Lm11bHRpX2NvbnRleHQuZ2xlczJfZ2xlczMucmdiYTU1NTFfd2luZG93ID0gRkFJTAorMTM0MCBX
SU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJlbmRlci5tdWx0aV9jb250ZXh0LmdsZXMyX2dsZXMz
LnJnYmE1NTUxX3BidWZmZXIgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwu
aW1hZ2UubW9kaWZ5LnRleF9yZ2I4X3RleF9zdWJpbWFnZV9yZ2I1NjUgPSBGQUlMCisxMzQwIFdJ
TiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuaW1hZ2UubW9kaWZ5LnRleF9yZ2I1NjVfdGV4X3N1Ymlt
YWdlX3JnYjggPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuaW1hZ2UubW9k
aWZ5LnRleF9yZ2JhOF90ZXhfc3ViaW1hZ2VfcmdiYTVfYTEgPSBGQUlMCisxMzQwIFdJTiA6IGRF
UVAtRUdMLmZ1bmN0aW9uYWwuaW1hZ2UubW9kaWZ5LnRleF9yZ2JhOF90ZXhfc3ViaW1hZ2Vfcmdi
YTQgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuaW1hZ2UubW9kaWZ5LnRl
eF9yZ2JhNV9hMV90ZXhfc3ViaW1hZ2VfcmdiYTggPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdM
LmZ1bmN0aW9uYWwuaW1hZ2UubW9kaWZ5LnRleF9yZ2JhNV9hMV90ZXhfc3ViaW1hZ2VfcmdiYTQg
PSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuaW1hZ2UubW9kaWZ5LnRleF9y
Z2JhNF90ZXhfc3ViaW1hZ2VfcmdiYTggPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0
aW9uYWwuaW1hZ2UubW9kaWZ5LnRleF9yZ2JhNF90ZXhfc3ViaW1hZ2VfcmdiYTVfYTEgPSBGQUlM
CisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuaW1hZ2UubW9kaWZ5LnJlbmRlcmJ1ZmZl
cl9yZ2JhNF90ZXhfc3ViaW1hZ2VfcmdiYTggPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1
bmN0aW9uYWwuaW1hZ2UubW9kaWZ5LnJlbmRlcmJ1ZmZlcl9yZ2JhNF90ZXhfc3ViaW1hZ2Vfcmdi
YTVfYTEgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuaW1hZ2UubW9kaWZ5
LnJlbmRlcmJ1ZmZlcl9yZ2I1X2ExX3RleF9zdWJpbWFnZV9yZ2JhOCA9IEZBSUwKKzEzNDAgV0lO
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5pbWFnZS5tb2RpZnkucmVuZGVyYnVmZmVyX3JnYjVfYTFf
dGV4X3N1YmltYWdlX3JnYmE0ID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFs
LmltYWdlLm1vZGlmeS5yZW5kZXJidWZmZXJfcmdiNTY1X3RleF9zdWJpbWFnZV9yZ2I4ID0gRkFJ
TAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5lZ2F0aXZlX2FwaS5jaG9vc2VfY29u
ZmlnID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5lZ2F0aXZlX2FwaS5n
ZXRfZGlzcGxheSA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uZWdhdGl2
ZV9hcGkuc3VyZmFjZV9hdHRyaWIgPSBTS0lQCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9u
YWwubmVnYXRpdmVfYXBpLnN3YXBfaW50ZXJ2YWwgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdM
LmZ1bmN0aW9uYWwuc3dhcF9idWZmZXJzLnJnYjU2NV9ub19kZXB0aF9ub19zdGVuY2lsID0gRkFJ
TAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnN3YXBfYnVmZmVycy5yZ2I1NjVfZGVw
dGhfbm9fc3RlbmNpbCA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5zd2Fw
X2J1ZmZlcnMucmdiNTY1X2RlcHRoX3N0ZW5jaWwgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdM
LmZ1bmN0aW9uYWwuc3dhcF9idWZmZXJzLnJnYjg4OF9ub19kZXB0aF9ub19zdGVuY2lsID0gRkFJ
TAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnN3YXBfYnVmZmVycy5yZ2I4ODhfZGVw
dGhfbm9fc3RlbmNpbCA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5zd2Fw
X2J1ZmZlcnMucmdiODg4X2RlcHRoX3N0ZW5jaWwgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdM
LmZ1bmN0aW9uYWwuc3dhcF9idWZmZXJzLnJnYmE0NDQ0X25vX2RlcHRoX25vX3N0ZW5jaWwgPSBG
QUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuc3dhcF9idWZmZXJzLnJnYmE0NDQ0
X2RlcHRoX25vX3N0ZW5jaWwgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwu
c3dhcF9idWZmZXJzLnJnYmE0NDQ0X2RlcHRoX3N0ZW5jaWwgPSBGQUlMCisxMzQwIFdJTiA6IGRF
UVAtRUdMLmZ1bmN0aW9uYWwuc3dhcF9idWZmZXJzLnJnYmE1NTUxX25vX2RlcHRoX25vX3N0ZW5j
aWwgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuc3dhcF9idWZmZXJzLnJn
YmE1NTUxX2RlcHRoX25vX3N0ZW5jaWwgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0
aW9uYWwuc3dhcF9idWZmZXJzLnJnYmE1NTUxX2RlcHRoX3N0ZW5jaWwgPSBGQUlMCisxMzQwIFdJ
TiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuc3dhcF9idWZmZXJzLnJnYmE4ODg4X25vX2RlcHRoX25v
X3N0ZW5jaWwgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuc3dhcF9idWZm
ZXJzLnJnYmE4ODg4X2RlcHRoX25vX3N0ZW5jaWwgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdM
LmZ1bmN0aW9uYWwuc3dhcF9idWZmZXJzLnJnYmE4ODg4X2RlcHRoX3N0ZW5jaWwgPSBGQUlMCisx
MzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZl
X3dpbmRvdy5yZ2I1NjVfbm9fZGVwdGhfbm9fc3RlbmNpbF9jbGVhciA9IEZBSUwKKzEzNDAgV0lO
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29sb3JfbWFwcGluZy5uYXRpdmVfd2luZG93
LnJnYjU2NV9ub19kZXB0aF9ub19zdGVuY2lsX3JlbmRlciA9IEZBSUwKKzEzNDAgV0lOIDogZEVR
UC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29sb3JfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYjU2
NV9kZXB0aF9ub19zdGVuY2lsX2NsZWFyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiNTY1X2RlcHRoX25v
X3N0ZW5jaWxfcmVuZGVyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5h
dGl2ZV9jb2xvcl9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiNTY1X2RlcHRoX3N0ZW5jaWxfY2xl
YXIgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9yX21h
cHBpbmcubmF0aXZlX3dpbmRvdy5yZ2I1NjVfZGVwdGhfc3RlbmNpbF9yZW5kZXIgPSBGQUlMCisx
MzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZl
X3dpbmRvdy5yZ2I4ODhfbm9fZGVwdGhfbm9fc3RlbmNpbF9jbGVhciA9IEZBSUwKKzEzNDAgV0lO
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29sb3JfbWFwcGluZy5uYXRpdmVfd2luZG93
LnJnYjg4OF9ub19kZXB0aF9ub19zdGVuY2lsX3JlbmRlciA9IEZBSUwKKzEzNDAgV0lOIDogZEVR
UC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29sb3JfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYjg4
OF9kZXB0aF9ub19zdGVuY2lsX2NsZWFyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiODg4X2RlcHRoX25v
X3N0ZW5jaWxfcmVuZGVyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5h
dGl2ZV9jb2xvcl9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiODg4X2RlcHRoX3N0ZW5jaWxfY2xl
YXIgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9yX21h
cHBpbmcubmF0aXZlX3dpbmRvdy5yZ2I4ODhfZGVwdGhfc3RlbmNpbF9yZW5kZXIgPSBGQUlMCisx
MzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZl
X3dpbmRvdy5yZ2JhNDQ0NF9ub19kZXB0aF9ub19zdGVuY2lsX2NsZWFyID0gRkFJTAorMTM0MCBX
SU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5hdGl2ZV93aW5k
b3cucmdiYTQ0NDRfbm9fZGVwdGhfbm9fc3RlbmNpbF9yZW5kZXIgPSBGQUlMCisxMzQwIFdJTiA6
IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZlX3dpbmRvdy5y
Z2JhNDQ0NF9kZXB0aF9ub19zdGVuY2lsX2NsZWFyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTQ0NDRf
ZGVwdGhfbm9fc3RlbmNpbF9yZW5kZXIgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0
aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhNDQ0NF9kZXB0aF9z
dGVuY2lsX2NsZWFyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2
ZV9jb2xvcl9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTQ0NDRfZGVwdGhfc3RlbmNpbF9yZW5k
ZXIgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9yX21h
cHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhNTU1MV9ub19kZXB0aF9ub19zdGVuY2lsX2NsZWFyID0g
RkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5n
Lm5hdGl2ZV93aW5kb3cucmdiYTU1NTFfbm9fZGVwdGhfbm9fc3RlbmNpbF9yZW5kZXIgPSBGQUlM
CisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcubmF0
aXZlX3dpbmRvdy5yZ2JhNTU1MV9kZXB0aF9ub19zdGVuY2lsX2NsZWFyID0gRkFJTAorMTM0MCBX
SU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5hdGl2ZV93aW5k
b3cucmdiYTU1NTFfZGVwdGhfbm9fc3RlbmNpbF9yZW5kZXIgPSBGQUlMCisxMzQwIFdJTiA6IGRF
UVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2Jh
NTU1MV9kZXB0aF9zdGVuY2lsX2NsZWFyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTU1NTFfZGVwdGhf
c3RlbmNpbF9yZW5kZXIgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0
aXZlX2NvbG9yX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhODg4OF9ub19kZXB0aF9ub19zdGVu
Y2lsX2NsZWFyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9j
b2xvcl9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTg4ODhfbm9fZGVwdGhfbm9fc3RlbmNpbF9y
ZW5kZXIgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9y
X21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhODg4OF9kZXB0aF9ub19zdGVuY2lsX2NsZWFyID0g
RkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5n
Lm5hdGl2ZV93aW5kb3cucmdiYTg4ODhfZGVwdGhfbm9fc3RlbmNpbF9yZW5kZXIgPSBGQUlMCisx
MzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZl
X3dpbmRvdy5yZ2JhODg4OF9kZXB0aF9zdGVuY2lsX2NsZWFyID0gRkFJTAorMTM0MCBXSU4gOiBk
RVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdi
YTg4ODhfZGVwdGhfc3RlbmNpbF9yZW5kZXIgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1
bmN0aW9uYWwubmF0aXZlX2Nvb3JkX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2I1NjVfbm9fZGVw
dGhfbm9fc3RlbmNpbF9jbGVhciA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25h
bC5uYXRpdmVfY29vcmRfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYjU2NV9ub19kZXB0aF9ub19z
dGVuY2lsX3JlbmRlciA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRp
dmVfY29vcmRfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYjU2NV9kZXB0aF9ub19zdGVuY2lsX2Ns
ZWFyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9t
YXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiNTY1X2RlcHRoX25vX3N0ZW5jaWxfcmVuZGVyID0gRkFJ
TAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5h
dGl2ZV93aW5kb3cucmdiNTY1X2RlcHRoX3N0ZW5jaWxfY2xlYXIgPSBGQUlMCisxMzQwIFdJTiA6
IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2Nvb3JkX21hcHBpbmcubmF0aXZlX3dpbmRvdy5y
Z2I1NjVfZGVwdGhfc3RlbmNpbF9yZW5kZXIgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1
bmN0aW9uYWwubmF0aXZlX2Nvb3JkX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2I4ODhfbm9fZGVw
dGhfbm9fc3RlbmNpbF9jbGVhciA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25h
bC5uYXRpdmVfY29vcmRfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYjg4OF9ub19kZXB0aF9ub19z
dGVuY2lsX3JlbmRlciA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRp
dmVfY29vcmRfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYjg4OF9kZXB0aF9ub19zdGVuY2lsX2Ns
ZWFyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9t
YXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiODg4X2RlcHRoX25vX3N0ZW5jaWxfcmVuZGVyID0gRkFJ
TAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5h
dGl2ZV93aW5kb3cucmdiODg4X2RlcHRoX3N0ZW5jaWxfY2xlYXIgPSBGQUlMCisxMzQwIFdJTiA6
IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2Nvb3JkX21hcHBpbmcubmF0aXZlX3dpbmRvdy5y
Z2I4ODhfZGVwdGhfc3RlbmNpbF9yZW5kZXIgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1
bmN0aW9uYWwubmF0aXZlX2Nvb3JkX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhNDQ0NF9ub19k
ZXB0aF9ub19zdGVuY2lsX2NsZWFyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlv
bmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTQ0NDRfbm9fZGVwdGhf
bm9fc3RlbmNpbF9yZW5kZXIgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwu
bmF0aXZlX2Nvb3JkX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhNDQ0NF9kZXB0aF9ub19zdGVu
Y2lsX2NsZWFyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9j
b29yZF9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTQ0NDRfZGVwdGhfbm9fc3RlbmNpbF9yZW5k
ZXIgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2Nvb3JkX21h
cHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhNDQ0NF9kZXB0aF9zdGVuY2lsX2NsZWFyID0gRkFJTAor
MTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2
ZV93aW5kb3cucmdiYTQ0NDRfZGVwdGhfc3RlbmNpbF9yZW5kZXIgPSBGQUlMCisxMzQwIFdJTiA6
IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2Nvb3JkX21hcHBpbmcubmF0aXZlX3dpbmRvdy5y
Z2JhNTU1MV9ub19kZXB0aF9ub19zdGVuY2lsX2NsZWFyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQ
LUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTU1
NTFfbm9fZGVwdGhfbm9fc3RlbmNpbF9yZW5kZXIgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdM
LmZ1bmN0aW9uYWwubmF0aXZlX2Nvb3JkX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhNTU1MV9k
ZXB0aF9ub19zdGVuY2lsX2NsZWFyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlv
bmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTU1NTFfZGVwdGhfbm9f
c3RlbmNpbF9yZW5kZXIgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0
aXZlX2Nvb3JkX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhNTU1MV9kZXB0aF9zdGVuY2lsX2Ns
ZWFyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9t
YXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTU1NTFfZGVwdGhfc3RlbmNpbF9yZW5kZXIgPSBGQUlM
CisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2Nvb3JkX21hcHBpbmcubmF0
aXZlX3dpbmRvdy5yZ2JhODg4OF9ub19kZXB0aF9ub19zdGVuY2lsX2NsZWFyID0gRkFJTAorMTM0
MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93
aW5kb3cucmdiYTg4ODhfbm9fZGVwdGhfbm9fc3RlbmNpbF9yZW5kZXIgPSBGQUlMCisxMzQwIFdJ
TiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2Nvb3JkX21hcHBpbmcubmF0aXZlX3dpbmRv
dy5yZ2JhODg4OF9kZXB0aF9ub19zdGVuY2lsX2NsZWFyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQ
LUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTg4
ODhfZGVwdGhfbm9fc3RlbmNpbF9yZW5kZXIgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1
bmN0aW9uYWwubmF0aXZlX2Nvb3JkX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhODg4OF9kZXB0
aF9zdGVuY2lsX2NsZWFyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5h
dGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTg4ODhfZGVwdGhfc3RlbmNpbF9y
ZW5kZXIgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuZ2V0X3Byb2NfYWRk
cmVzcy5leHRlbnNpb24uZWdsX2V4dF9wbGF0Zm9ybV9iYXNlID0gRkFJTAorMTM0MCBXSU4gOiBk
RVFQLUVHTC5mdW5jdGlvbmFsLnByZXNlcnZlX3N3YXAucHJlc2VydmUubm9fcmVhZF9iZWZvcmVf
c3dhcC4qID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnByZXNlcnZlX3N3
YXAucHJlc2VydmUucmVhZF9iZWZvcmVfc3dhcC4qID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLnJlc2l6ZS5iYWNrX2J1ZmZlci4qID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQ
LUVHTC5mdW5jdGlvbmFsLnJlc2l6ZS5waXhlbF9kZW5zaXR5LiogPSBTS0lQCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2RlcXBfZ2xlczJfdGVz
dF9leHBlY3RhdGlvbnMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvZGVxcF9nbGVzMl90ZXN0X2V4cGVjdGF0aW9ucy50eHQJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBf
c3VwcG9ydC9kZXFwX2dsZXMyX3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDI0NCBAQAorLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIFRoaXMgZmlsZSBjb250YWlucyBhIGxpc3Qgb2YgZGVm
ZWN0aXZlIGRFUVAgY29uZm9ybWFuY2UgdGVzdHMuIFRoZSBleHBlY3RlZAorLy8gZm9ybWF0IGlz
OgorLy8gIHtCVUcjfSB7TU9ESUZJRVJTfSA6IHtURVNUX05BTUV9ID0ge1BBU1MsRkFJTCxGTEFL
WSxUSU1FT1VULFNLSVB9CisvLworLy8gTU9ESUZJRVJTIGNhbiBiZSBhIGNvbWJpbmF0aW9uIG9m
IHRoZSBiZWxvdyBsaXN0OgorLy8gIFdJTiBYUCBWSVNUQSBXSU43IE1BQyBMRU9QQVJEIFNOT1dM
RU9QQVJEIExJT04gTElOVVggQ0hST01FT1MgTU9VTlRBSU5MSU9OCisvLyAgTUFWRVJJQ0tTCisv
LyAgTlZJRElBIEFNRCBJTlRFTAorLy8gIDB4YWJjZCAtIEdQVSBQQ0kgZGV2aWNlIElELiBTcGVj
aWZ5aW5nIGEgUENJIGlkIHJlcXVpcmVzIGEgdmVuZG9yLgorLy8gIERFQlVHIFJFTEVBU0UKKy8v
IFRPRE8oam1hZGlsbCk6IEFkZCBBTkdMRSBSZW5kZXJlciBzZWxlY3Rpb24gbW9kaWZpZXJzCisv
LworLy8gVEVTVF9OQU1FIGNhbiBiZSBhIHNwZWNpZmljIHRlc3QgbmFtZSwgb3IgaGF2ZSBhICcq
JyBpbiB0aGUgZW5kLCB3aGljaAorLy8gaW5kaWNhdGVzIGEgcHJlZml4IG1hdGNoaW5nLgorLy8K
Ky8vIEV4YW1wbGVzOgorLy8gIDkxNTMwIE1BQyBXSU4gTElOVVggOiBjb250ZXh0X2xvc3RfcmVz
dG9yZWQgPSBUSU1FT1VUCisvLyAgOTE1MzMgV0lOIDogZ2xfbWluX3VuaWZvcm1zID0gRkFJTAor
Ly8gIDkxNTMxIE1BQyBXSU4gTElOVVggOiBjb25mb3JtYW5jZV9tb3JlXyogPSBTS0lQCisvLyAg
OTE1MzIgTUFDIE5WSURJQSAweDA2NDAgOiB0ZXhfaW1hZ2VfYW5kX3N1Yl9pbWFnZV8yZF93aXRo
X3ZpZGVvID0gUEFTUyBGQUlMCisKKy8vIFRPRE8oam1hZGlsbCk6IEZpZ3VyZSBvdXQgd2h5IHRo
ZXNlIGZhaWwgb24gdGhlIGJvdHMsIGJ1dCBub3QgbG9jYWxseS4KKzEwMTggV0lOIDogZEVRUC1H
TEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMuaW52YXJpYW5jZS5oaWdocC5sb29wXzIgPSBGQUlMCisx
MDE4IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLmludmFyaWFuY2UubWVkaXVt
cC5sb29wXzIgPSBGQUlMCisKKy8vIFNraXAgdGhlc2UgdGVzdHMgZHVlIHRvIHRpbWVvdXRzCisx
MDM0IFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmx1c2hfZmluaXNoLiog
PSBTS0lQCisKKy8vIERvbid0IHJ1biB0aGVzZSB0ZXN0cyBmb3IgZmFzdGVyIHR1cm5vdmVyCis5
OTggV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIucGVyZm9ybWFuY2UuKiA9IFNLSVAKKzk5OCBX
SU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5zdHJlc3MuKiA9IFNLSVAKKworLy8gVGVzdHMgdGhh
dCB3ZSBmYWlsIGJlY2F1c2UgdGhleSdyZSBub3QgaW4gbGluZSB3aXRoIHRoZSBXZWJHTCBzcGVj
CisxMzM1IFdJTiBMSU5VWCBNQUMgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFk
ZXJzLnByZXByb2Nlc3Nvci5jb25kaXRpb25hbF9pbmNsdXNpb24uYmFzaWNfMiogPSBGQUlMCisK
Ky8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gIFRlbXBvcmFyeSBlbnRyaWVzOiB0aGV5
IHNob3VsZCBiZSByZW1vdmVkIG9uY2UgdGhlIGJ1Z3MgYXJlIGZpeGVkLgorLy8KKy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCisKKy8vIFdpbmRvd3Mgb25seSBmYWlsdXJlcworCisvLyBUaGVzZSB0
ZXN0cyBjcmFzaCBmb3IgdW5rbm93biByZWFzb24gdW5kZXIgYSBuZXdlciBEM0RDb21waWxlcl80
Ny5kbGwKKy8vIFRPRE8oam1hZGlsbCk6IEZpZ3VyZSBvdXQgaWYgd2UgY2FuIHNvbHZlIHRoZXNl
IGNyYXNoZXMKKzEyNTIgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMucmFuZG9t
LnRyaWdvbm9tZXRyaWMudmVydGV4LjYzID0gU0tJUAorMTI1MiBXSU4gOiBkRVFQLUdMRVMyLmZ1
bmN0aW9uYWwuc2hhZGVycy5yYW5kb20udHJpZ29ub21ldHJpYy5mcmFnbWVudC42MyA9IFNLSVAK
KworLy8gVE9ETyhqbWFkaWxsKTogdHJpYWdlIHRoZXNlIGludG8gdGVtcG9yYXJ5IGFuZCBwZXJt
YW5lbnQgc3VwcHJlc3Npb25zCisKKzEwMjcgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZi
by5yZW5kZXIuY29sb3JfY2xlYXIucmJvX3JnYjVfYTEgPSBGQUlMCisxMDI3IFdJTiA6IGRFUVAt
R0xFUzIuZnVuY3Rpb25hbC5mYm8ucmVuZGVyLmNvbG9yX2NsZWFyLnJib19yZ2I1X2ExX3N0ZW5j
aWxfaW5kZXg4ID0gRkFJTAorMTAyNyBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLnJl
bmRlci5jb2xvcl9jbGVhci5yYm9fcmdiNV9hMV9kZXB0aF9jb21wb25lbnQxNiA9IEZBSUwKKzEw
MjcgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5yZW5kZXIuc3RlbmNpbF9jbGVhci5y
Ym9fcmdiNV9hMV9zdGVuY2lsX2luZGV4OCA9IEZBSUwKKzEwMjcgV0lOIDogZEVRUC1HTEVTMi5m
dW5jdGlvbmFsLmZiby5yZW5kZXIuc2hhcmVkX2NvbG9yYnVmZmVyLnRleDJkX3JnYl9zdGVuY2ls
X2luZGV4OCA9IEZBSUwKKzEwMjcgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5yZW5k
ZXIuc2hhcmVkX2NvbG9yYnVmZmVyLnRleDJkX3JnYmFfc3RlbmNpbF9pbmRleDggPSBGQUlMCisx
MDI3IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8ucmVuZGVyLnNoYXJlZF9jb2xvcmJ1
ZmZlci5yYm9fcmdiNTY1X3N0ZW5jaWxfaW5kZXg4ID0gRkFJTAorMTAyNyBXSU4gOiBkRVFQLUdM
RVMyLmZ1bmN0aW9uYWwuZmJvLnJlbmRlci5zaGFyZWRfY29sb3JidWZmZXIucmJvX3JnYjVfYTFf
c3RlbmNpbF9pbmRleDggPSBGQUlMCisxMDI3IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5m
Ym8ucmVuZGVyLnNoYXJlZF9jb2xvcmJ1ZmZlci5yYm9fcmdiYTRfc3RlbmNpbF9pbmRleDggPSBG
QUlMCisxMDI3IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8ucmVuZGVyLnJlY3JlYXRl
X2NvbG9yYnVmZmVyLnJlYmluZF90ZXgyZF9yZ2Jfc3RlbmNpbF9pbmRleDggPSBGQUlMCisxMDI3
IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8ucmVuZGVyLnJlY3JlYXRlX2NvbG9yYnVm
ZmVyLnJlYmluZF90ZXgyZF9yZ2JhX3N0ZW5jaWxfaW5kZXg4ID0gRkFJTAorMTAyNyBXSU4gOiBk
RVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLnJlbmRlci5yZWNyZWF0ZV9jb2xvcmJ1ZmZlci5yZWJp
bmRfcmJvX3JnYjU2NV9zdGVuY2lsX2luZGV4OCA9IEZBSUwKKzEwMjcgV0lOIDogZEVRUC1HTEVT
Mi5mdW5jdGlvbmFsLmZiby5yZW5kZXIucmVjcmVhdGVfY29sb3JidWZmZXIucmViaW5kX3Jib19y
Z2I1X2ExX3N0ZW5jaWxfaW5kZXg4ID0gRkFJTAorMTAyNyBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0
aW9uYWwuZmJvLnJlbmRlci5yZWNyZWF0ZV9jb2xvcmJ1ZmZlci5yZWJpbmRfcmJvX3JnYmE0X3N0
ZW5jaWxfaW5kZXg4ID0gRkFJTAorMTAyNyBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJv
LnJlbmRlci5yZWNyZWF0ZV9jb2xvcmJ1ZmZlci5ub19yZWJpbmRfdGV4MmRfcmdiX3N0ZW5jaWxf
aW5kZXg4ID0gRkFJTAorMTAyNyBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLnJlbmRl
ci5yZWNyZWF0ZV9jb2xvcmJ1ZmZlci5ub19yZWJpbmRfdGV4MmRfcmdiYV9zdGVuY2lsX2luZGV4
OCA9IEZBSUwKKzEwMzMgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnBvbHlnb25fb2Zmc2V0
LmZpeGVkMTZfcmVuZGVyX3dpdGhfdW5pdHMgPSBGQUlMCisxMDE3IFdJTiA6IGRFUVAtR0xFUzIu
ZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLmZvcl9jb25zdGFudF9pdGVyYXRpb25zLm5lc3RlZF90
cmlja3lfZGF0YWZsb3dfKiA9IEZBSUwKKzEwMTcgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFs
LnNoYWRlcnMubG9vcHMud2hpbGVfY29uc3RhbnRfaXRlcmF0aW9ucy5uZXN0ZWRfdHJpY2t5X2Rh
dGFmbG93XyogPSBGQUlMCisxMDE3IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJz
Lmxvb3BzLmRvX3doaWxlX2NvbnN0YW50X2l0ZXJhdGlvbnMubmVzdGVkX3RyaWNreV9kYXRhZmxv
d18qID0gRkFJTAorOTg5IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLnByZXBy
b2Nlc3Nvci5wcmFnbWFzLmludmFsaWRfcHJhZ21hX2ludmFsaWRfKiA9IEZBSUwKKzEwMTggV0lO
IDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudmVydGV4
LnRleHR1cmVjdWJlbG9kID0gRkFJTAorMTAyMCBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwu
dGV4dHVyZS5taXBtYXAuY3ViZS5iYXNpYy5saW5lYXJfbmVhcmVzdCA9IEZBSUwKKzEwMjAgV0lO
IDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLmN1YmUuYmFzaWMubGluZWFy
X2xpbmVhciA9IEZBSUwKKzEwMjAgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUu
bWlwbWFwLmN1YmUucHJvamVjdGVkLmxpbmVhcl9uZWFyZXN0ID0gRkFJTAorMTAyMCBXSU4gOiBk
RVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuY3ViZS5iaWFzLmxpbmVhcl9uZWFy
ZXN0ID0gRkFJTAorMTAyMCBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBt
YXAuY3ViZS5iaWFzLmxpbmVhcl9saW5lYXIgPSBGQUlMCisxMDI1IFdJTiA6IGRFUVAtR0xFUzIu
ZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuZGVwdGhfc3RlbmNpbC5zdGVuY2lsX2RlcHRoX2Z1bmNz
LnN0ZW5jaWxfKiA9IEZBSUwKKzEwMjUgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdt
ZW50X29wcy5kZXB0aF9zdGVuY2lsLnN0ZW5jaWxfb3BzLiogPSBGQUlMCisxMDI1IFdJTiA6IGRF
UVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuZGVwdGhfc3RlbmNpbC53cml0ZV9tYXNr
LiogPSBGQUlMCisxMDI1IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMu
ZGVwdGhfc3RlbmNpbC5yYW5kb20uKiA9IEZBSUwKKzEwMjUgV0lOIDogZEVRUC1HTEVTMi5mdW5j
dGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5hZGRf
Y29uc3RhbnRfY29sb3JfY29uc3RhbnRfYWxwaGEgPSBGQUlMCisxMDI1IFdJTiA6IGRFUVAtR0xF
UzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1
bmMuYWRkX2NvbnN0YW50X2NvbG9yX29uZV9taW51c19jb25zdGFudF9hbHBoYSA9IEZBSUwKKzEw
MjUgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlv
bl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yX2NvbnN0YW50
X2FscGhhID0gRkFJTAorMTAyNSBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRf
b3BzLmJsZW5kLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLmFkZF9vbmVfbWludXNfY29uc3Rh
bnRfY29sb3Jfb25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJTAorMTAyNSBXSU4gOiBkRVFQ
LUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmVxdWF0aW9uX3NyY19mdW5jX2Rz
dF9mdW5jLmFkZF9jb25zdGFudF9hbHBoYV9jb25zdGFudF9jb2xvciA9IEZBSUwKKzEwMjUgV0lO
IDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNf
ZnVuY19kc3RfZnVuYy5hZGRfY29uc3RhbnRfYWxwaGFfb25lX21pbnVzX2NvbnN0YW50X2NvbG9y
ID0gRkFJTAorMTAyNSBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJs
ZW5kLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLmFkZF9vbmVfbWludXNfY29uc3RhbnRfYWxw
aGFfY29uc3RhbnRfY29sb3IgPSBGQUlMCisxMDI1IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25h
bC5mcmFnbWVudF9vcHMuYmxlbmQuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX29uZV9t
aW51c19jb25zdGFudF9hbHBoYV9vbmVfbWludXNfY29uc3RhbnRfY29sb3IgPSBGQUlMCisxMDI1
IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZXF1YXRpb25f
c3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3RfY29uc3RhbnRfY29sb3JfY29uc3RhbnRfYWxwaGEg
PSBGQUlMCisxMDI1IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxl
bmQuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3RfY29uc3RhbnRfY29sb3Jfb25l
X21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJTAorMTAyNSBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0
aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnN1YnRy
YWN0X29uZV9taW51c19jb25zdGFudF9jb2xvcl9jb25zdGFudF9hbHBoYSA9IEZBSUwKKzEwMjUg
V0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9z
cmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFjdF9vbmVfbWludXNfY29uc3RhbnRfY29sb3Jfb25lX21p
bnVzX2NvbnN0YW50X2FscGhhID0gRkFJTAorMTAyNSBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9u
YWwuZnJhZ21lbnRfb3BzLmJsZW5kLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnN1YnRyYWN0
X2NvbnN0YW50X2FscGhhX2NvbnN0YW50X2NvbG9yID0gRkFJTAorMTAyNSBXSU4gOiBkRVFQLUdM
RVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9m
dW5jLnN1YnRyYWN0X2NvbnN0YW50X2FscGhhX29uZV9taW51c19jb25zdGFudF9jb2xvciA9IEZB
SUwKKzEwMjUgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5l
cXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFjdF9vbmVfbWludXNfY29uc3RhbnRfYWxw
aGFfY29uc3RhbnRfY29sb3IgPSBGQUlMCisxMDI1IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25h
bC5mcmFnbWVudF9vcHMuYmxlbmQuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3Rf
b25lX21pbnVzX2NvbnN0YW50X2FscGhhX29uZV9taW51c19jb25zdGFudF9jb2xvciA9IEZBSUwK
KzEwMjUgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVh
dGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1YnRyYWN0X2NvbnN0YW50X2NvbG9yX2Nv
bnN0YW50X2FscGhhID0gRkFJTAorMTAyNSBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJh
Z21lbnRfb3BzLmJsZW5kLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnJldmVyc2Vfc3VidHJh
Y3RfY29uc3RhbnRfY29sb3Jfb25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJTAorMTAyNSBX
SU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmVxdWF0aW9uX3Ny
Y19mdW5jX2RzdF9mdW5jLnJldmVyc2Vfc3VidHJhY3Rfb25lX21pbnVzX2NvbnN0YW50X2NvbG9y
X2NvbnN0YW50X2FscGhhID0gRkFJTAorMTAyNSBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwu
ZnJhZ21lbnRfb3BzLmJsZW5kLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnJldmVyc2Vfc3Vi
dHJhY3Rfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yX29uZV9taW51c19jb25zdGFudF9hbHBoYSA9
IEZBSUwKKzEwMjUgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVu
ZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1YnRyYWN0X2NvbnN0YW50X2Fs
cGhhX2NvbnN0YW50X2NvbG9yID0gRkFJTAorMTAyNSBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9u
YWwuZnJhZ21lbnRfb3BzLmJsZW5kLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnJldmVyc2Vf
c3VidHJhY3RfY29uc3RhbnRfYWxwaGFfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yID0gRkFJTAor
MTAyNSBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmVxdWF0
aW9uX3NyY19mdW5jX2RzdF9mdW5jLnJldmVyc2Vfc3VidHJhY3Rfb25lX21pbnVzX2NvbnN0YW50
X2FscGhhX2NvbnN0YW50X2NvbG9yID0gRkFJTAorMTAyNSBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0
aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnJldmVy
c2Vfc3VidHJhY3Rfb25lX21pbnVzX2NvbnN0YW50X2FscGhhX29uZV9taW51c19jb25zdGFudF9j
b2xvciA9IEZBSUwKKzE0MTggV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmNsaXBwaW5nLnRy
aWFuZ2xlX3ZlcnRleC5jbGlwX3RocmVlLmNsaXBfcG9zX3hfcG9zX3lfcG9zX3pfYW5kX25lZ194
X3Bvc195X3Bvc196X2FuZF9uZWdfeF9uZWdfeV9uZWdfeiA9IEZBSUwKKworLy8gRmFpbHVyZXMg
b24gdGhlIGRFUVAgV2luZG93cyBib3RzIHRoYXQgZG8gbm90IHJlcHJvZHVjZSBsb2NhbGx5Cisx
MTA4IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLnN0cnVjdC5sb2NhbC5keW5h
bWljX2xvb3Bfc3RydWN0X2FycmF5X2ZyYWdtZW50ID0gRkFJTAorCisvLyBMaW51eCBvbmx5IGZh
aWx1cmVzCisKKzEwNTEgTElOVVggOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5mdW5j
dGlvbnMuYXJyYXlfYXJndW1lbnRzLmNvcHlfZ2xvYmFsX2lub3V0X29uX2NhbGxfZnJhZ21lbnQg
PSBGQUlMCisxMDUxIExJTlVYIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMuZnVuY3Rp
b25zLmFycmF5X2FyZ3VtZW50cy5jb3B5X2dsb2JhbF9pbm91dF9vbl9jYWxsX3ZlcnRleCA9IEZB
SUwKKzEwMTkgTElOVVggOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5zaXplLmN1YmUu
MjU2eDI1Nl9yZ2JhNDQ0NCA9IEZBSUwKKzEwMTkgTElOVVggOiBkRVFQLUdMRVMyLmZ1bmN0aW9u
YWwudGV4dHVyZS5zaXplLmN1YmUuNTEyeDUxMl9yZ2JhNDQ0NCA9IEZBSUwKKzEwMjAgTElOVVgg
OiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuMmQucHJvamVjdGVkLm5lYXJl
c3RfbGluZWFyKiA9IEZBSUwKKzEwMjAgTElOVVggOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4
dHVyZS5taXBtYXAuMmQucHJvamVjdGVkLmxpbmVhcl9saW5lYXIqID0gRkFJTAorCisvLyBGYWls
dXJlcyBvbiB0aGUgTGludXggZEVRUCBib3QgdGhhdCBkbyBub3QgYXBwZWFyIG9uIHRoZSB3b3Jr
c3RhdGlvbgorMTE0MyBMSU5VWCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLnJhbmRv
bS5hbGxfZmVhdHVyZXMudmVydGV4LjEzID0gRkFJTAorMTE0MyBMSU5VWCA6IGRFUVAtR0xFUzIu
ZnVuY3Rpb25hbC5zaGFkZXJzLmludmFyaWFuY2UubWVkaXVtcC5jb21tb25fc3ViZXhwcmVzc2lv
bl8xID0gRkFJTAorMTE0MyBMSU5VWCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLmlu
dmFyaWFuY2UuaGlnaHAuY29tbW9uX3N1YmV4cHJlc3Npb25fMSA9IEZBSUwKKzExNDMgTElOVVgg
OiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuY3ViZS5wcm9qZWN0ZWQubGlu
ZWFyX25lYXJlc3QgPSBGQUlMCisKKy8vIE1hYyBzcGVjaWZpYyBmYWlsdXJlcworMTE0MyBNQUMg
OiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNlLm1lZGl1bXAuY29tbW9u
X3N1YmV4cHJlc3Npb25fMSA9IEZBSUwKKzExNDMgTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFs
LnNoYWRlcnMuaW52YXJpYW5jZS5oaWdocC5jb21tb25fc3ViZXhwcmVzc2lvbl8xID0gRkFJTAor
MTE0MyBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5wcmVwcm9jZXNzb3IucHJh
Z21hcy5wcmFnbWFfKiA9IEZBSUwKKzExNDMgTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNo
YWRlcnMubGlua2FnZS52YXJ5aW5nXzQgPSBGQUlMCisxMTQzIE1BQyA6IGRFUVAtR0xFUzIuZnVu
Y3Rpb25hbC5zaGFkZXJzLnNjb3BpbmcudmFsaWQubG9jYWxfaW50X3ZhcmlhYmxlX2hpZGVzX3N0
cnVjdF90eXBlXyogPSBGQUlMCisxMTQzIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFk
ZXJzLnNjb3BpbmcudmFsaWQubG9jYWxfc3RydWN0X3ZhcmlhYmxlX2hpZGVzX3N0cnVjdF90eXBl
XyogPSBGQUlMCisxMTQzIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLnNjb3Bp
bmcudmFsaWQuZnVuY3Rpb25fcGFyYW1ldGVyX2hpZGVzX3N0cnVjdF90eXBlXyogPSBGQUlMCisx
MTQzIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLmludmFyaWFuY2UuaGlnaHAu
Y29tbW9uX3N1YmV4cHJlc3Npb25fMyA9IEZBSUwKKzExNDMgTUFDIDogZEVRUC1HTEVTMi5mdW5j
dGlvbmFsLnNoYWRlcnMuaW52YXJpYW5jZS5oaWdocC5sb29wXzAgPSBGQUlMCisxMTQzIE1BQyA6
IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLmludmFyaWFuY2UuaGlnaHAubG9vcF8xID0g
RkFJTAorMTE0MyBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNl
Lm1lZGl1bXAuY29tbW9uX3N1YmV4cHJlc3Npb25fMyA9IEZBSUwKKzExNDMgTUFDIDogZEVRUC1H
TEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMuaW52YXJpYW5jZS5tZWRpdW1wLmxvb3BfMCA9IEZBSUwK
KzExNDMgTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMuaW52YXJpYW5jZS5tZWRp
dW1wLmxvb3BfMSA9IEZBSUwKKzExNDMgTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRl
cnMuaW52YXJpYW5jZS5sb3dwLmNvbW1vbl9zdWJleHByZXNzaW9uXzEgPSBGQUlMCisxMTQzIE1B
QyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLmludmFyaWFuY2UubG93cC5jb21tb25f
c3ViZXhwcmVzc2lvbl8zID0gRkFJTAorMTE0MyBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwu
c2hhZGVycy5pbnZhcmlhbmNlLmxvd3AubG9vcF8wID0gRkFJTAorMTE0MyBNQUMgOiBkRVFQLUdM
RVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNlLmxvd3AubG9vcF8xID0gRkFJTAorMTE0
MyBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5yYW5kb20udHJpZ29ub21ldHJp
Yy52ZXJ0ZXguNDMgPSBGQUlMCisxMTQzIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFk
ZXJzLnJhbmRvbS50cmlnb25vbWV0cmljLnZlcnRleC42NSA9IEZBSUwKKzExNDMgTUFDIDogZEVR
UC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUuc2l6ZS5jdWJlLjI1NngyNTZfcmdiYTQ0NDQgPSBG
QUlMCisxMTQzIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLnNpemUuY3ViZS41
MTJ4NTEyX3JnYmE0NDQ0ID0gRkFJTAorMTE0MyBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwu
dGV4dHVyZS5taXBtYXAuY3ViZS5wcm9qZWN0ZWQubGluZWFyX2xpbmVhciA9IEZBSUwKKzExNDMg
TUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUuc3BlY2lmaWNhdGlvbi5iYXNpY19j
b3B5dGV4aW1hZ2UyZC5jdWJlXyogPSBGQUlMCisKKy8vIEFuZHJvaWQgb25seSBmYWlsdXJlcwor
MTQ4NCBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnZlcnRleF9hcnJheXMuKiA9IFNL
SVAKKzE0ODUgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5jbGlwcGluZy50cmlhbmds
ZV92ZXJ0ZXguY2xpcF90aHJlZS5jbGlwX25lZ194X25lZ196X2FuZF9wb3NfeF9wb3Nfel9hbmRf
bmVnX3hfbmVnX3lfcG9zX3ogPSBGQUlMCisxNDg2IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0
aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5hdHRhY2htZW50X2NvbWJpbmF0aW9ucy5ub25lX25vbmVf
bm9uZV90ZXggPSBGQUlMCisxNDg2IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJv
LmNvbXBsZXRlbmVzcy5hdHRhY2htZW50X2NvbWJpbmF0aW9ucy5ub25lX25vbmVfcmJvX3RleCA9
IEZBSUwKKzE0ODYgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVu
ZXNzLmF0dGFjaG1lbnRfY29tYmluYXRpb25zLm5vbmVfbm9uZV90ZXhfbm9uZSA9IEZBSUwKKzE0
ODYgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNzLmF0dGFj
aG1lbnRfY29tYmluYXRpb25zLm5vbmVfbm9uZV90ZXhfcmJvID0gRkFJTAorMTQ4NiBBTkRST0lE
IDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MuYXR0YWNobWVudF9jb21i
aW5hdGlvbnMubm9uZV9ub25lX3RleF90ZXggPSBGQUlMCisxNDg2IEFORFJPSUQgOiBkRVFQLUdM
RVMyLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5hdHRhY2htZW50X2NvbWJpbmF0aW9ucy5y
Ym9fbm9uZV9ub25lX3RleCA9IEZBSUwKKzE0ODYgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rp
b25hbC5mYm8uY29tcGxldGVuZXNzLmF0dGFjaG1lbnRfY29tYmluYXRpb25zLnJib19ub25lX3Ji
b190ZXggPSBGQUlMCisxNDg2IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLmNv
bXBsZXRlbmVzcy5hdHRhY2htZW50X2NvbWJpbmF0aW9ucy5yYm9fbm9uZV90ZXhfbm9uZSA9IEZB
SUwKKzE0ODYgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNz
LmF0dGFjaG1lbnRfY29tYmluYXRpb25zLnJib19ub25lX3RleF9yYm8gPSBGQUlMCisxNDg2IEFO
RFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5hdHRhY2htZW50
X2NvbWJpbmF0aW9ucy5yYm9fbm9uZV90ZXhfdGV4ID0gRkFJTAorMTQ4NiBBTkRST0lEIDogZEVR
UC1HTEVTMi5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MuYXR0YWNobWVudF9jb21iaW5hdGlv
bnMudGV4X25vbmVfbm9uZV90ZXggPSBGQUlMCisxNDg2IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1
bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5hdHRhY2htZW50X2NvbWJpbmF0aW9ucy50ZXhfbm9u
ZV9yYm9fdGV4ID0gRkFJTAorMTQ4NiBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZi
by5jb21wbGV0ZW5lc3MuYXR0YWNobWVudF9jb21iaW5hdGlvbnMudGV4X25vbmVfdGV4X25vbmUg
PSBGQUlMCisxNDg2IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRl
bmVzcy5hdHRhY2htZW50X2NvbWJpbmF0aW9ucy50ZXhfbm9uZV90ZXhfcmJvID0gRkFJTAorMTQ4
NiBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MuYXR0YWNo
bWVudF9jb21iaW5hdGlvbnMudGV4X25vbmVfdGV4X3RleCA9IEZBSUwKKzE0ODcgQU5EUk9JRCA6
IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNzLnJlbmRlcmFibGUudGV4dHVy
ZS5jb2xvcjAuZGVwdGhfc3RlbmNpbF91bnNpZ25lZF9pbnRfMjRfOCA9IEZBSUwKKzE0ODcgQU5E
Uk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNzLnJlbmRlcmFibGUu
dGV4dHVyZS5jb2xvcjAuc3JnYjggPSBGQUlMCisxNDg3IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1
bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5yZW5kZXJhYmxlLnRleHR1cmUuc3RlbmNpbC5kZXB0
aF9zdGVuY2lsX3Vuc2lnbmVkX2ludF8yNF84ID0gRkFJTAorMTQ4NyBBTkRST0lEIDogZEVRUC1H
TEVTMi5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MucmVuZGVyYWJsZS50ZXh0dXJlLnN0ZW5j
aWwuc3JnYjggPSBGQUlMCisxNDg3IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJv
LmNvbXBsZXRlbmVzcy5yZW5kZXJhYmxlLnRleHR1cmUuZGVwdGguZGVwdGhfc3RlbmNpbF91bnNp
Z25lZF9pbnRfMjRfOCA9IEZBSUwKKzE0ODcgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25h
bC5mYm8uY29tcGxldGVuZXNzLnJlbmRlcmFibGUudGV4dHVyZS5kZXB0aC5zcmdiOCA9IEZBSUwK
KzE0ODggQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLnJldHVybi5jb25k
aXRpb25hbF9yZXR1cm5fYWx3YXlzX3ZlcnRleCA9IEZBSUwKKzE0ODggQU5EUk9JRCA6IGRFUVAt
R0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLnJldHVybi5jb25kaXRpb25hbF9yZXR1cm5fYWx3YXlz
X2ZyYWdtZW50ID0gRkFJTAorMTQ4OCBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNo
YWRlcnMucmV0dXJuLm91dHB1dF93cml0ZV9hbHdheXNfdmVydGV4ID0gRkFJTAorMTQ4OCBBTkRS
T0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMucmV0dXJuLm91dHB1dF93cml0ZV9h
bHdheXNfZnJhZ21lbnQgPSBGQUlMCisxNDg5IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9u
YWwudGV4dHVyZS5taXBtYXAuMmQuZ2VuZXJhdGUuYThfZmFzdGVzdCA9IEZBSUwKKzE0ODkgQU5E
Uk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC4yZC5nZW5lcmF0ZS5h
OF9uaWNlc3QgPSBGQUlMCisxNDg5IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4
dHVyZS5taXBtYXAuMmQuZ2VuZXJhdGUubDhfZmFzdGVzdCA9IEZBSUwKKzE0ODkgQU5EUk9JRCA6
IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC4yZC5nZW5lcmF0ZS5sOF9uaWNl
c3QgPSBGQUlMCisxNDg5IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5t
aXBtYXAuMmQuZ2VuZXJhdGUubGE4OF9mYXN0ZXN0ID0gRkFJTAorMTQ4OSBBTkRST0lEIDogZEVR
UC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLjJkLmdlbmVyYXRlLmxhODhfbmljZXN0
ID0gRkFJTAorMTQ4OSBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUubWlw
bWFwLmN1YmUuZ2VuZXJhdGUuYThfZmFzdGVzdCA9IEZBSUwKKzE0ODkgQU5EUk9JRCA6IGRFUVAt
R0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC5jdWJlLmdlbmVyYXRlLmE4X25pY2VzdCA9
IEZBSUwKKzE0ODkgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1h
cC5jdWJlLmdlbmVyYXRlLmw4X2Zhc3Rlc3QgPSBGQUlMCisxNDg5IEFORFJPSUQgOiBkRVFQLUdM
RVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuY3ViZS5nZW5lcmF0ZS5sOF9uaWNlc3QgPSBG
QUlMCisxNDg5IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAu
Y3ViZS5nZW5lcmF0ZS5sYTg4X2Zhc3Rlc3QgPSBGQUlMCisxNDg5IEFORFJPSUQgOiBkRVFQLUdM
RVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuY3ViZS5nZW5lcmF0ZS5sYTg4X25pY2VzdCA9
IEZBSUwKKworLy8gV2luZG93cyBhbmQgTGludXggZmFpbHVyZXMKKzEwMjAgV0lOIExJTlVYIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLmN1YmUucHJvamVjdGVkLmxpbmVh
cl9saW5lYXIgPSBGQUlMCisKKy8vIFdpbmRvd3MgTGludXggYW5kIE1hYyBmYWlsdXJlcworOTg5
IFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5wcmVwcm9jZXNz
b3IuZXh0ZW5zaW9ucy5hZnRlcl9ub25fcHJlcHJvY2Vzc2luZ190b2tlbnNfdmVydGV4ID0gRkFJ
TAorOTg5IFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5wcmVw
cm9jZXNzb3IuZXh0ZW5zaW9ucy5hZnRlcl9ub25fcHJlcHJvY2Vzc2luZ190b2tlbnNfZnJhZ21l
bnQgPSBGQUlMCisxMDE1IFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hh
ZGVycy5mdW5jdGlvbnMuaW52YWxpZC5yZXR1cm5fYXJyYXlfaW5fc3RydWN0X3ZlcnRleCA9IEZB
SUwKKzEwMTUgV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLmZ1
bmN0aW9ucy5pbnZhbGlkLnJldHVybl9hcnJheV9pbl9zdHJ1Y3RfZnJhZ21lbnQgPSBGQUlMCisx
MDE2IFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5zY29waW5n
LnZhbGlkLmxvY2FsX3ZhcmlhYmxlX2hpZGVzX2Z1bmN0aW9uX3BhcmFtZXRlcl92ZXJ0ZXggPSBG
QUlMCisxMDE2IFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5z
Y29waW5nLnZhbGlkLmxvY2FsX3ZhcmlhYmxlX2hpZGVzX2Z1bmN0aW9uX3BhcmFtZXRlcl9mcmFn
bWVudCA9IEZBSUwKKzEwMTYgV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5z
aGFkZXJzLnNjb3BpbmcuaW52YWxpZC5yZWRlY2xhcmVfZnVuY3Rpb25fdmVydGV4ID0gRkFJTAor
MTAxNiBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMuc2NvcGlu
Zy5pbnZhbGlkLnJlZGVjbGFyZV9mdW5jdGlvbl9mcmFnbWVudCA9IEZBSUwKKzEwMjAgV0lOIExJ
TlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC4yZC5wcm9qZWN0
ZWQubmVhcmVzdF9uZWFyZXN0KiA9IEZBSUwKKzEwMjAgV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xF
UzIuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC4yZC5wcm9qZWN0ZWQubGluZWFyX25lYXJlc3Qq
ID0gRkFJTAorMTAyNSBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdt
ZW50X29wcy5yYW5kb20uKiA9IEZBSUwKKzEwMjUgV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIu
ZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuaW50ZXJhY3Rpb24uYmFzaWNfc2hhZGVyLiogPSBGQUlM
CisxMDI3IFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLnJlbmRlci5y
ZXBlYXRlZF9jbGVhci50ZXgyZF9yZ2IgPSBGQUlMCisxMDI3IFdJTiBMSU5VWCBNQUMgOiBkRVFQ
LUdMRVMyLmZ1bmN0aW9uYWwuZmJvLnJlbmRlci5yZXBlYXRlZF9jbGVhci50ZXgyZF9yZ2JhID0g
RkFJTAorMTAyOCBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5jb21w
bGV0ZW5lc3MucmVuZGVyYWJsZS50ZXh0dXJlLmNvbG9yMC5yZ2JfZmxvYXQgPSBGQUlMCisxMDI4
IFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5y
ZW5kZXJhYmxlLnRleHR1cmUuY29sb3IwLnJnYl9oYWxmX2Zsb2F0X29lcyA9IEZBSUwKKzEwMjgg
V0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNzLnJl
bmRlcmFibGUudGV4dHVyZS5jb2xvcjAucmdiYV9mbG9hdCA9IEZBSUwKKzEwMjggV0lOIExJTlVY
IE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNzLnJlbmRlcmFibGUu
dGV4dHVyZS5jb2xvcjAucmdiYV9oYWxmX2Zsb2F0X29lcyA9IEZBSUwKKzEwMjggV0lOIExJTlVY
IE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNzLnJlbmRlcmFibGUu
dGV4dHVyZS5jb2xvcjAuc3JnYjggPSBGQUlMCisxMDI4IFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdM
RVMyLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5yZW5kZXJhYmxlLnRleHR1cmUuc3RlbmNp
bC5zcmdiOCA9IEZBSUwKKzEwMjggV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25h
bC5mYm8uY29tcGxldGVuZXNzLnJlbmRlcmFibGUudGV4dHVyZS5kZXB0aC5kZXB0aF9jb21wb25l
bnRfdW5zaWduZWRfc2hvcnQgPSBGQUlMCisxMDI4IFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMy
LmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5yZW5kZXJhYmxlLnRleHR1cmUuZGVwdGguZGVw
dGhfY29tcG9uZW50X3Vuc2lnbmVkX2ludCA9IEZBSUwKKzEwMjggV0lOIExJTlVYIE1BQyA6IGRF
UVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNzLnJlbmRlcmFibGUudGV4dHVyZS5k
ZXB0aC5zcmdiOCA9IEZBSUwKKzExMjggV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rp
b25hbC5uZWdhdGl2ZV9hcGkudGV4dHVyZS5jb21wcmVzc2VkdGV4c3ViaW1hZ2UyZF9pbnZhbGlk
X3NpemUgPSBGQUlMCisxMDI5IFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwu
bmVnYXRpdmVfYXBpLnRleHR1cmUudGV4aW1hZ2UyZF9pbnZhbGlkX2Zvcm1hdCA9IEZBSUwKKzEw
MjkgV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5uZWdhdGl2ZV9hcGkudGV4
dHVyZS50ZXhpbWFnZTJkX2ludmFsaWRfaW50ZXJuYWxmb3JtYXQgPSBGQUlMCisxMDI5IFdJTiBM
SU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwubmVnYXRpdmVfYXBpLnRleHR1cmUudGV4
c3ViaW1hZ2UyZF9pbnZhbGlkX3R5cGUgPSBGQUlMCisxMDI5IFdJTiBMSU5VWCBNQUMgOiBkRVFQ
LUdMRVMyLmZ1bmN0aW9uYWwubmVnYXRpdmVfYXBpLnRleHR1cmUudGV4c3ViaW1hZ2UyZF9vZmZz
ZXRfYWxsb3dlZCA9IEZBSUwKKzEwMzAgV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rp
b25hbC5hdHRyaWJ1dGVfbG9jYXRpb24uYmluZF9hbGlhc2luZy5jb25kX2Zsb2F0ID0gRkFJTAor
MTAzMCBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmF0dHJpYnV0ZV9sb2Nh
dGlvbi5iaW5kX2FsaWFzaW5nLm1heF9jb25kX2Zsb2F0ID0gRkFJTAorMTAzMCBXSU4gTElOVVgg
TUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmF0dHJpYnV0ZV9sb2NhdGlvbi5iaW5kX2FsaWFz
aW5nLmNvbmRfdmVjMiA9IEZBSUwKKzEwMzAgV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVu
Y3Rpb25hbC5hdHRyaWJ1dGVfbG9jYXRpb24uYmluZF9hbGlhc2luZy5tYXhfY29uZF92ZWMyID0g
RkFJTAorMTAzMCBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmF0dHJpYnV0
ZV9sb2NhdGlvbi5iaW5kX2FsaWFzaW5nLmNvbmRfdmVjMyA9IEZBSUwKKzEwMzAgV0lOIExJTlVY
IE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5hdHRyaWJ1dGVfbG9jYXRpb24uYmluZF9hbGlh
c2luZy5tYXhfY29uZF92ZWMzID0gRkFJTAorMTAzMCBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVT
Mi5mdW5jdGlvbmFsLmF0dHJpYnV0ZV9sb2NhdGlvbi5iaW5kX2FsaWFzaW5nLmNvbmRfdmVjNCA9
IEZBSUwKKzEwMzAgV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5hdHRyaWJ1
dGVfbG9jYXRpb24uYmluZF9hbGlhc2luZy5tYXhfY29uZF92ZWM0ID0gRkFJTAorMTAzMCBXSU4g
TElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmF0dHJpYnV0ZV9sb2NhdGlvbi5iaW5k
X2FsaWFzaW5nLmNvbmRfbWF0MiA9IEZBSUwKKzEwMzAgV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xF
UzIuZnVuY3Rpb25hbC5hdHRyaWJ1dGVfbG9jYXRpb24uYmluZF9hbGlhc2luZy5jb25kX21hdDJf
b2Zmc2V0XzEgPSBGQUlMCisxMDMwIFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9u
YWwuYXR0cmlidXRlX2xvY2F0aW9uLmJpbmRfYWxpYXNpbmcubWF4X2NvbmRfbWF0MiA9IEZBSUwK
KzEwMzAgV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5hdHRyaWJ1dGVfbG9j
YXRpb24uYmluZF9hbGlhc2luZy5jb25kX21hdDMgPSBGQUlMCisxMDMwIFdJTiBMSU5VWCBNQUMg
OiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuYXR0cmlidXRlX2xvY2F0aW9uLmJpbmRfYWxpYXNpbmcu
Y29uZF9tYXQzX29mZnNldF8xID0gRkFJTAorMTAzMCBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVT
Mi5mdW5jdGlvbmFsLmF0dHJpYnV0ZV9sb2NhdGlvbi5iaW5kX2FsaWFzaW5nLm1heF9jb25kX21h
dDMgPSBGQUlMCisxMDMwIFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuYXR0
cmlidXRlX2xvY2F0aW9uLmJpbmRfYWxpYXNpbmcuY29uZF9tYXQ0ID0gRkFJTAorMTAzMCBXSU4g
TElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmF0dHJpYnV0ZV9sb2NhdGlvbi5iaW5k
X2FsaWFzaW5nLmNvbmRfbWF0NF9vZmZzZXRfMSA9IEZBSUwKKzEwMzAgV0lOIExJTlVYIE1BQyA6
IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5hdHRyaWJ1dGVfbG9jYXRpb24uYmluZF9hbGlhc2luZy5t
YXhfY29uZF9tYXQ0ID0gRkFJTApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2RlcXBfc3VwcG9ydC9kZXFwX2dsZXMzX3Rlc3RfZXhwZWN0YXRpb25zLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2Rl
cXBfZ2xlczNfdGVzdF9leHBlY3RhdGlvbnMudHh0CShub25leGlzdGVudCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvZGVxcF9nbGVzM190ZXN0X2V4
cGVjdGF0aW9ucy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOTIgQEAKKy8vIENvcHly
aWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBU
aGlzIGZpbGUgY29udGFpbnMgYSBsaXN0IG9mIGRlZmVjdGl2ZSBkRVFQIGNvbmZvcm1hbmNlIHRl
c3RzLiBUaGUgZXhwZWN0ZWQKKy8vIGZvcm1hdCBpczoKKy8vICB7QlVHI30ge01PRElGSUVSU30g
OiB7VEVTVF9OQU1FfSA9IHtQQVNTLEZBSUwsRkxBS1ksVElNRU9VVCxTS0lQfQorLy8KKy8vIE1P
RElGSUVSUyBjYW4gYmUgYSBjb21iaW5hdGlvbiBvZiB0aGUgYmVsb3cgbGlzdDoKKy8vICBXSU4g
WFAgVklTVEEgV0lONyBNQUMgTEVPUEFSRCBTTk9XTEVPUEFSRCBMSU9OIExJTlVYIENIUk9NRU9T
IE1PVU5UQUlOTElPTgorLy8gIE1BVkVSSUNLUworLy8gIE5WSURJQSBBTUQgSU5URUwKKy8vICAw
eGFiY2QgLSBHUFUgUENJIGRldmljZSBJRC4gU3BlY2lmeWluZyBhIFBDSSBpZCByZXF1aXJlcyBh
IHZlbmRvci4KKy8vICBERUJVRyBSRUxFQVNFCisvLyBUT0RPKGptYWRpbGwpOiBBZGQgQU5HTEUg
UmVuZGVyZXIgc2VsZWN0aW9uIG1vZGlmaWVycworLy8KKy8vIFRFU1RfTkFNRSBjYW4gYmUgYSBz
cGVjaWZpYyB0ZXN0IG5hbWUsIG9yIGhhdmUgYSAnKicgaW4gdGhlIGVuZCwgd2hpY2gKKy8vIGlu
ZGljYXRlcyBhIHByZWZpeCBtYXRjaGluZy4KKy8vCisvLyBFeGFtcGxlczoKKy8vICA5MTUzMCBN
QUMgV0lOIExJTlVYIDogY29udGV4dF9sb3N0X3Jlc3RvcmVkID0gVElNRU9VVAorLy8gIDkxNTMz
IFdJTiA6IGdsX21pbl91bmlmb3JtcyA9IEZBSUwKKy8vICA5MTUzMSBNQUMgV0lOIExJTlVYIDog
Y29uZm9ybWFuY2VfbW9yZV8qID0gU0tJUAorLy8gIDkxNTMyIE1BQyBOVklESUEgMHgwNjQwIDog
dGV4X2ltYWdlX2FuZF9zdWJfaW1hZ2VfMmRfd2l0aF92aWRlbyA9IFBBU1MgRkFJTAorCisvLyBE
b24ndCBydW4gdGhlc2UgdGVzdHMgZm9yIGZhc3RlciB0dXJub3ZlcgorOTk4IFdJTiBMSU5VWCA6
IGRFUVAtR0xFUzMucGVyZm9ybWFuY2UuKiA9IFNLSVAKKzk5OCBXSU4gTElOVVggOiBkRVFQLUdM
RVMzLnN0cmVzcy4qID0gU0tJUAorMTEwMSBXSU4gTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9u
YWwuZmx1c2hfZmluaXNoLiogPSBTS0lQCisKKy8vIFRPRE8oam1hZGlsbCk6IEZpZ3VyZSBvdXQg
d2h5IHRoZXNlIGZhaWwgb24gdGhlIGJvdHMsIGJ1dCBub3QgbG9jYWxseS4KKzExMDggV0lOIDog
ZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMuc3RydWN0LmxvY2FsLmR5bmFtaWNfbG9vcF9z
dHJ1Y3RfYXJyYXlfZnJhZ21lbnQgPSBGQUlMCisxMDk0IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC5zaGFkZXJzLmludmFyaWFuY2UuaGlnaHAubG9vcF8yID0gRkFJTAorMTA5NCBXSU4gOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNlLm1lZGl1bXAubG9vcF8yID0g
RkFJTAorCisvLyBXZSBjYW4ndCBzdXBwb3J0IGRpc3RpbmN0IHRleHR1cmUgc2l6ZXMgaW4gRDNE
MTEuCisxMDk3IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNzLnNp
emUuZGlzdGluY3QgPSBGQUlMCisKKy8vIEZhaWwgYmVjYXVzZSB3ZSBzdXBwb3J0IHRoZXNlIGZv
cm1hdHMgdGhyb3VnaCB0aGUgQU5HTEVfZGVwdGhfdGV4dHVyZSBleHRlbnNpb24gaW5zdGVhZCBv
ZiBPRVNfZGVwdGhfdGV4dHVyZQorNjA1NzU0IE1BQyBXSU4gTElOVVggOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5yZW5kZXJhYmxlLnRleHR1cmUuZGVwdGguZGVwdGhf
Y29tcG9uZW50X3Vuc2lnbmVkX3Nob3J0ID0gRkFJTAorNjA1NzU0IE1BQyBXSU4gTElOVVggOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5yZW5kZXJhYmxlLnRleHR1cmUu
ZGVwdGguZGVwdGhfY29tcG9uZW50X3Vuc2lnbmVkX2ludCA9IEZBSUwKKworLy8gVGVzdHMgdGhh
dCB3ZSBmYWlsIGJlY2F1c2UgdGhleSdyZSBub3QgaW4gbGluZSB3aXRoIHRoZSBXZWJHTCBzcGVj
CisxMzM1IE1BQyBXSU4gTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5wcmVw
cm9jZXNzb3IuY29uZGl0aW9uYWxfaW5jbHVzaW9uLmJhc2ljXzIqID0gRkFJTAorMTMzNSBNQUMg
V0lOIExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMucHJlcHJvY2Vzc29yLmNv
bmRpdGlvbmFsX2luY2x1c2lvbi5kZWZpbmVkX21hY3JvX2RlZmluZWRfdGVzdCogPSBGQUlMCisx
MzM1IE1BQyBXSU4gTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5wcmVwcm9j
ZXNzb3IuY29uZGl0aW9uYWxfaW5jbHVzaW9uLmRlZmluZWRfbWFjcm9fdW5kZWYqID0gRkFJTAor
MTMzNSBNQUMgV0lOIExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMucHJlcHJv
Y2Vzc29yLmNvbmRpdGlvbmFsX2luY2x1c2lvbi5kZWZpbmVfZGVmaW5lZCogPSBGQUlMCisxMzM1
IE1BQyBXSU4gTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5wcmVwcm9jZXNz
b3IuY29uZGl0aW9uYWxfaW5jbHVzaW9uLmRlZmluZV9kZWZpbmVkX291dHNpZGVfaWYqID0gRkFJ
TAorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vICBUZW1wb3JhcnkgZW50cmllczog
dGhleSBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIHRoZSBidWdzIGFyZSBmaXhlZC4KKy8vCisvLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLworCisvLyBUT0RPKGptYWRpbGwpOiBGaW5kIHdoeSB0aGlzIGZh
aWxzIHdoZW4gcnVuIGluIGEgY2VydGFpbiBzZXF1ZW5jZSwgYnV0IG5vdCBzaW5nbHkuCisxMDk4
IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC51bmlmb3JtX2FwaS5yYW5kb20uNTAgPSBGQUlM
CisKKy8vIE1pc3NpbmcgdGhlIFNhbXBsZUNtcCBpbnN0cnVjdGlvbiBpbiB2ZXJ0ZXggc2hhZGVy
cy4KKzE0MzUgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5j
dGlvbnMudGV4dHVyZWxvZC5zYW1wbGVyMmRzaGFkb3dfdmVydGV4ID0gRkFJTAorMTQzNSBXSU4g
OiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJl
bG9kb2Zmc2V0LnNhbXBsZXIyZHNoYWRvd192ZXJ0ZXggPSBGQUlMCisxNDM1IFdJTiA6IGRFUVAt
R0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVwcm9qbG9k
LnNhbXBsZXIyZHNoYWRvd192ZXJ0ZXggPSBGQUlMCisxNDM1IFdJTiA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVwcm9qbG9kb2Zmc2V0LnNh
bXBsZXIyZHNoYWRvd192ZXJ0ZXggPSBGQUlMCisKKy8vIFNhbXBsZUNtcCBpcyBtaXNzaW5nIGdy
YWRpZW50L29mZnNldCBwYXJhbWV0ZXJzIGluIEhMU0wuCisxNDM2IFdJTiA6IGRFUVAtR0xFUzMu
ZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVsb2Quc2FtcGxlcjJk
c2hhZG93X2ZyYWdtZW50ID0gRkFJTAorMTQzNiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
c2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlbG9kb2Zmc2V0LnNhbXBsZXIyZHNoYWRv
d19mcmFnbWVudCA9IEZBSUwKKzE0MzYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRl
cnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZXByb2psb2Quc2FtcGxlcjJkc2hhZG93X2ZyYWdt
ZW50ID0gRkFJTAorMTQzNiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0
dXJlX2Z1bmN0aW9ucy50ZXh0dXJlcHJvamxvZG9mZnNldC5zYW1wbGVyMmRzaGFkb3dfZnJhZ21l
bnQgPSBGQUlMCisxNDM2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1
cmVfZnVuY3Rpb25zLnRleHR1cmVncmFkLnNhbXBsZXIyZHNoYWRvd192ZXJ0ZXggPSBGQUlMCisx
NDM2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25z
LnRleHR1cmVncmFkLnNhbXBsZXIyZHNoYWRvd19mcmFnbWVudCA9IEZBSUwKKzE0MzYgV0lOIDog
ZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZWdy
YWQuc2FtcGxlcjJkYXJyYXlzaGFkb3dfdmVydGV4ID0gRkFJTAorMTQzNiBXSU4gOiBkRVFQLUdM
RVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlZ3JhZC5zYW1w
bGVyMmRhcnJheXNoYWRvd19mcmFnbWVudCA9IEZBSUwKKzE0MzYgV0lOIDogZEVRUC1HTEVTMy5m
dW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZWdyYWRvZmZzZXQuc2Ft
cGxlcjJkc2hhZG93X3ZlcnRleCA9IEZBSUwKKzE0MzYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlv
bmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZWdyYWRvZmZzZXQuc2FtcGxlcjJk
c2hhZG93X2ZyYWdtZW50ID0gRkFJTAorMTQzNiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
c2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlZ3JhZG9mZnNldC5zYW1wbGVyMmRhcnJh
eXNoYWRvd192ZXJ0ZXggPSBGQUlMCisxNDM2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5z
aGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVncmFkb2Zmc2V0LnNhbXBsZXIyZGFycmF5
c2hhZG93X2ZyYWdtZW50ID0gRkFJTAorMTQzNiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
c2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlcHJvamdyYWQuc2FtcGxlcjJkc2hhZG93
X3ZlcnRleCA9IEZBSUwKKzE0MzYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMu
dGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZXByb2pncmFkLnNhbXBsZXIyZHNoYWRvd19mcmFnbWVu
dCA9IEZBSUwKKzE0MzYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVy
ZV9mdW5jdGlvbnMudGV4dHVyZXByb2pncmFkb2Zmc2V0LnNhbXBsZXIyZHNoYWRvd192ZXJ0ZXgg
PSBGQUlMCisxNDM2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVf
ZnVuY3Rpb25zLnRleHR1cmVwcm9qZ3JhZG9mZnNldC5zYW1wbGVyMmRzaGFkb3dfZnJhZ21lbnQg
PSBGQUlMCisKKy8vIFRPRE8oam1hZGlsbCwgY3dhbGxleik6IHRyaWFnZSB0aGUgZmFpbHVyZXMg
YmVsb3cgaW50byBwZXJtYW5lbnQgYW5kIHRlbXBvcmFyeSBmYWlsdXJlcworCisvLyBXaW5kb3dz
IGFuZCBMaW51eCBmYWlsdXJlcworCisxMTAxIFdJTiBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC5uZWdhdGl2ZV9hcGkudGV4dHVyZS5jb21wcmVzc2VkdGV4c3ViaW1hZ2UyZCA9IEZBSUwK
KzExMDEgV0lOIExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLm5lZ2F0aXZlX2FwaS50ZXh0
dXJlLmNvbXByZXNzZWR0ZXhzdWJpbWFnZTJkX2ludmFsaWRfc2l6ZSA9IEZBSUwKKzExMDEgV0lO
IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLm5lZ2F0aXZlX2FwaS50ZXh0dXJlLmNvbXBy
ZXNzZWR0ZXhzdWJpbWFnZTNkID0gRkFJTAorMTEwMSBXSU4gTElOVVggOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwubmVnYXRpdmVfYXBpLnRleHR1cmUuY29tcHJlc3NlZHRleHN1YmltYWdlM2RfaW52
YWxpZF9idWZmZXJfdGFyZ2V0ID0gRkFJTAorMTA5NSBXSU4gTElOVVggOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuMmQucHJvamVjdGVkLm5lYXJlc3RfbmVhcmVzdF9jbGFt
cCA9IEZBSUwKKzEwOTUgV0lOIExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUu
bWlwbWFwLjJkLnByb2plY3RlZC5uZWFyZXN0X25lYXJlc3RfcmVwZWF0ID0gRkFJTAorMTA5NSBX
SU4gTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuMmQucHJvamVj
dGVkLm5lYXJlc3RfbmVhcmVzdF9taXJyb3IgPSBGQUlMCisxMDk1IFdJTiBMSU5VWCA6IGRFUVAt
R0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC4yZC5wcm9qZWN0ZWQubGluZWFyX25lYXJl
c3RfY2xhbXAgPSBGQUlMCisxMDk1IFdJTiBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50
ZXh0dXJlLm1pcG1hcC4yZC5wcm9qZWN0ZWQubGluZWFyX25lYXJlc3RfcmVwZWF0ID0gRkFJTAor
MTA5NSBXSU4gTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuMmQu
cHJvamVjdGVkLmxpbmVhcl9uZWFyZXN0X21pcnJvciA9IEZBSUwKKworLy8gV2luZG93cyBvbmx5
IGZhaWx1cmUKKworMTA5MyBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5idWls
dGluX2Z1bmN0aW9ucy5wcmVjaXNpb24udGFuaC5oaWdocF92ZXJ0ZXguc2NhbGFyID0gRkFJTAor
MTA5MyBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5idWlsdGluX2Z1bmN0aW9u
cy5wcmVjaXNpb24udGFuaC5oaWdocF92ZXJ0ZXgudmVjMiA9IEZBSUwKKzEwOTMgV0lOIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMuYnVpbHRpbl9mdW5jdGlvbnMucHJlY2lzaW9uLnRh
bmguaGlnaHBfdmVydGV4LnZlYzMgPSBGQUlMCisxMDkzIFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC5zaGFkZXJzLmJ1aWx0aW5fZnVuY3Rpb25zLnByZWNpc2lvbi50YW5oLmhpZ2hwX3ZlcnRl
eC52ZWM0ID0gRkFJTAorMTA5MyBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5i
dWlsdGluX2Z1bmN0aW9ucy5wcmVjaXNpb24udGFuaC5oaWdocF9mcmFnbWVudC5zY2FsYXIgPSBG
QUlMCisxMDkzIFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmJ1aWx0aW5fZnVu
Y3Rpb25zLnByZWNpc2lvbi50YW5oLmhpZ2hwX2ZyYWdtZW50LnZlYzIgPSBGQUlMCisxMDkzIFdJ
TiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmJ1aWx0aW5fZnVuY3Rpb25zLnByZWNp
c2lvbi50YW5oLmhpZ2hwX2ZyYWdtZW50LnZlYzMgPSBGQUlMCisxMDkzIFdJTiA6IGRFUVAtR0xF
UzMuZnVuY3Rpb25hbC5zaGFkZXJzLmJ1aWx0aW5fZnVuY3Rpb25zLnByZWNpc2lvbi50YW5oLmhp
Z2hwX2ZyYWdtZW50LnZlYzQgPSBGQUlMCisxMDkyIFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVvZmZzZXQuc2FtcGxlcjNkX2ZpeGVk
X2ZyYWdtZW50ID0gRkFJTAorMTA5MiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVy
cy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlb2Zmc2V0LnNhbXBsZXIzZF9mbG9hdF9mcmFnbWVu
dCA9IEZBSUwKKzEwOTIgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVy
ZV9mdW5jdGlvbnMudGV4dHVyZXByb2pvZmZzZXQuc2FtcGxlcjNkX2ZpeGVkX2ZyYWdtZW50ID0g
RkFJTAorMTA5MiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0dXJlX2Z1
bmN0aW9ucy50ZXh0dXJlcHJvam9mZnNldC5zYW1wbGVyM2RfZmxvYXRfZnJhZ21lbnQgPSBGQUlM
CisxMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuZGVwdGhfc3Rl
bmNpbC5zdGVuY2lsX2RlcHRoX2Z1bmNzLnN0ZW5jaWxfKiA9IEZBSUwKKzEwOTYgV0lOIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5kZXB0aF9zdGVuY2lsLnN0ZW5jaWxfb3Bz
LiogPSBGQUlMCisxMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMu
ZGVwdGhfc3RlbmNpbC53cml0ZV9tYXNrLiogPSBGQUlMCisxMDk2IFdJTiA6IGRFUVAtR0xFUzMu
ZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuZGVwdGhfc3RlbmNpbC5yYW5kb20uKiA9IEZBSUwKKzEw
OTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5kZWZhdWx0
X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLmFkZF9jb25zdGFudF9jb2xv
cl9jb25zdGFudF9hbHBoYSA9IEZBSUwKKzEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LmZyYWdtZW50X29wcy5ibGVuZC5kZWZhdWx0X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5j
X2RzdF9mdW5jLmFkZF9jb25zdGFudF9jb2xvcl9vbmVfbWludXNfY29uc3RhbnRfYWxwaGEgPSBG
QUlMCisxMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQu
ZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfb25lX21p
bnVzX2NvbnN0YW50X2NvbG9yX2NvbnN0YW50X2FscGhhID0gRkFJTAorMTA5NiBXSU4gOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIu
ZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX29uZV9taW51c19jb25zdGFudF9jb2xvcl9v
bmVfbWludXNfY29uc3RhbnRfYWxwaGEgPSBGQUlMCisxMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9z
cmNfZnVuY19kc3RfZnVuYy5hZGRfY29uc3RhbnRfYWxwaGFfY29uc3RhbnRfY29sb3IgPSBGQUlM
CisxMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZGVm
YXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfY29uc3RhbnRf
YWxwaGFfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yID0gRkFJTAorMTA5NiBXSU4gOiBkRVFQLUdM
RVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1
YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX29uZV9taW51c19jb25zdGFudF9hbHBoYV9jb25z
dGFudF9jb2xvciA9IEZBSUwKKzEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdt
ZW50X29wcy5ibGVuZC5kZWZhdWx0X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9m
dW5jLmFkZF9vbmVfbWludXNfY29uc3RhbnRfYWxwaGFfb25lX21pbnVzX2NvbnN0YW50X2NvbG9y
ID0gRkFJTAorMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJs
ZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJh
Y3RfY29uc3RhbnRfY29sb3JfY29uc3RhbnRfYWxwaGEgPSBGQUlMCisxMDk2IFdJTiA6IGRFUVAt
R0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5l
cXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFjdF9jb25zdGFudF9jb2xvcl9vbmVfbWlu
dXNfY29uc3RhbnRfYWxwaGEgPSBGQUlMCisxMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC5mcmFnbWVudF9vcHMuYmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVu
Y19kc3RfZnVuYy5zdWJ0cmFjdF9vbmVfbWludXNfY29uc3RhbnRfY29sb3JfY29uc3RhbnRfYWxw
aGEgPSBGQUlMCisxMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMu
YmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0
cmFjdF9vbmVfbWludXNfY29uc3RhbnRfY29sb3Jfb25lX21pbnVzX2NvbnN0YW50X2FscGhhID0g
RkFJTAorMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5k
LmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3Rf
Y29uc3RhbnRfYWxwaGFfY29uc3RhbnRfY29sb3IgPSBGQUlMCisxMDk2IFdJTiA6IGRFUVAtR0xF
UzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVh
dGlvbl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFjdF9jb25zdGFudF9hbHBoYV9vbmVfbWludXNf
Y29uc3RhbnRfY29sb3IgPSBGQUlMCisxMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5m
cmFnbWVudF9vcHMuYmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19k
c3RfZnVuYy5zdWJ0cmFjdF9vbmVfbWludXNfY29uc3RhbnRfYWxwaGFfY29uc3RhbnRfY29sb3Ig
PSBGQUlMCisxMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxl
bmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFj
dF9vbmVfbWludXNfY29uc3RhbnRfYWxwaGFfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yID0gRkFJ
TAorMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRl
ZmF1bHRfZnJhbWVidWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0
cmFjdF9jb25zdGFudF9jb2xvcl9jb25zdGFudF9hbHBoYSA9IEZBSUwKKzEwOTYgV0lOIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5kZWZhdWx0X2ZyYW1lYnVmZmVy
LmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnJldmVyc2Vfc3VidHJhY3RfY29uc3RhbnRfY29s
b3Jfb25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJTAorMTA5NiBXSU4gOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1YXRp
b25fc3JjX2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFjdF9vbmVfbWludXNfY29uc3RhbnRf
Y29sb3JfY29uc3RhbnRfYWxwaGEgPSBGQUlMCisxMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNf
ZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1YnRyYWN0X29uZV9taW51c19jb25zdGFudF9jb2xvcl9v
bmVfbWludXNfY29uc3RhbnRfYWxwaGEgPSBGQUlMCisxMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9z
cmNfZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1YnRyYWN0X2NvbnN0YW50X2FscGhhX2NvbnN0YW50
X2NvbG9yID0gRkFJTAorMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRf
b3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMu
cmV2ZXJzZV9zdWJ0cmFjdF9jb25zdGFudF9hbHBoYV9vbmVfbWludXNfY29uc3RhbnRfY29sb3Ig
PSBGQUlMCisxMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxl
bmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZlcnNl
X3N1YnRyYWN0X29uZV9taW51c19jb25zdGFudF9hbHBoYV9jb25zdGFudF9jb2xvciA9IEZBSUwK
KzEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5kZWZh
dWx0X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnJldmVyc2Vfc3VidHJh
Y3Rfb25lX21pbnVzX2NvbnN0YW50X2FscGhhX29uZV9taW51c19jb25zdGFudF9jb2xvciA9IEZB
SUwKKzEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5m
Ym9fc3JnYi5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfY29uc3RhbnRfY29sb3JfY29u
c3RhbnRfYWxwaGEgPSBGQUlMCisxMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFn
bWVudF9vcHMuYmxlbmQuZmJvX3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX2Nv
bnN0YW50X2NvbG9yX29uZV9taW51c19jb25zdGFudF9hbHBoYSA9IEZBSUwKKzEwOTYgV0lOIDog
ZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9fc3JnYi5lcXVhdGlv
bl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yX2NvbnN0YW50
X2FscGhhID0gRkFJTAorMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRf
b3BzLmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLmFkZF9vbmVfbWlu
dXNfY29uc3RhbnRfY29sb3Jfb25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJTAorMTA5NiBX
SU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19zcmdiLmVx
dWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLmFkZF9jb25zdGFudF9hbHBoYV9jb25zdGFudF9jb2xv
ciA9IEZBSUwKKzEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5i
bGVuZC5mYm9fc3JnYi5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfY29uc3RhbnRfYWxw
aGFfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yID0gRkFJTAorMTA5NiBXSU4gOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5j
X2RzdF9mdW5jLmFkZF9vbmVfbWludXNfY29uc3RhbnRfYWxwaGFfY29uc3RhbnRfY29sb3IgPSBG
QUlMCisxMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQu
ZmJvX3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX29uZV9taW51c19jb25zdGFu
dF9hbHBoYV9vbmVfbWludXNfY29uc3RhbnRfY29sb3IgPSBGQUlMCisxMDk2IFdJTiA6IGRFUVAt
R0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZmJvX3NyZ2IuZXF1YXRpb25fc3Jj
X2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3RfY29uc3RhbnRfY29sb3JfY29uc3RhbnRfYWxwaGEgPSBG
QUlMCisxMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQu
ZmJvX3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3RfY29uc3RhbnRfY29s
b3Jfb25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJTAorMTA5NiBXSU4gOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5j
X2RzdF9mdW5jLnN1YnRyYWN0X29uZV9taW51c19jb25zdGFudF9jb2xvcl9jb25zdGFudF9hbHBo
YSA9IEZBSUwKKzEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5i
bGVuZC5mYm9fc3JnYi5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFjdF9vbmVfbWlu
dXNfY29uc3RhbnRfY29sb3Jfb25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJTAorMTA5NiBX
SU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19zcmdiLmVx
dWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnN1YnRyYWN0X2NvbnN0YW50X2FscGhhX2NvbnN0YW50
X2NvbG9yID0gRkFJTAorMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRf
b3BzLmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnN1YnRyYWN0X2Nv
bnN0YW50X2FscGhhX29uZV9taW51c19jb25zdGFudF9jb2xvciA9IEZBSUwKKzEwOTYgV0lOIDog
ZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9fc3JnYi5lcXVhdGlv
bl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFjdF9vbmVfbWludXNfY29uc3RhbnRfYWxwaGFfY29u
c3RhbnRfY29sb3IgPSBGQUlMCisxMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFn
bWVudF9vcHMuYmxlbmQuZmJvX3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJh
Y3Rfb25lX21pbnVzX2NvbnN0YW50X2FscGhhX29uZV9taW51c19jb25zdGFudF9jb2xvciA9IEZB
SUwKKzEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5m
Ym9fc3JnYi5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1YnRyYWN0X2NvbnN0
YW50X2NvbG9yX2NvbnN0YW50X2FscGhhID0gRkFJTAorMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5jX2Rz
dF9mdW5jLnJldmVyc2Vfc3VidHJhY3RfY29uc3RhbnRfY29sb3Jfb25lX21pbnVzX2NvbnN0YW50
X2FscGhhID0gRkFJTAorMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRf
b3BzLmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnJldmVyc2Vfc3Vi
dHJhY3Rfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yX2NvbnN0YW50X2FscGhhID0gRkFJTAorMTA5
NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19zcmdi
LmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnJldmVyc2Vfc3VidHJhY3Rfb25lX21pbnVzX2Nv
bnN0YW50X2NvbG9yX29uZV9taW51c19jb25zdGFudF9hbHBoYSA9IEZBSUwKKzEwOTYgV0lOIDog
ZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9fc3JnYi5lcXVhdGlv
bl9zcmNfZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1YnRyYWN0X2NvbnN0YW50X2FscGhhX2NvbnN0
YW50X2NvbG9yID0gRkFJTAorMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21l
bnRfb3BzLmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnJldmVyc2Vf
c3VidHJhY3RfY29uc3RhbnRfYWxwaGFfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yID0gRkFJTAor
MTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19z
cmdiLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnJldmVyc2Vfc3VidHJhY3Rfb25lX21pbnVz
X2NvbnN0YW50X2FscGhhX2NvbnN0YW50X2NvbG9yID0gRkFJTAorMTA5NiBXSU4gOiBkRVFQLUdM
RVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19m
dW5jX2RzdF9mdW5jLnJldmVyc2Vfc3VidHJhY3Rfb25lX21pbnVzX2NvbnN0YW50X2FscGhhX29u
ZV9taW51c19jb25zdGFudF9jb2xvciA9IEZBSUwKKzEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLmZyYWdtZW50X29wcy5yYW5kb20uKiA9IEZBSUwKKzEwOTYgV0lOIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5pbnRlcmFjdGlvbi5iYXNpY19zaGFkZXIuKiA9IEZB
SUwKKzEwOTggV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnVuaWZvcm1fYXBpLnJhbmRvbS44
ID0gRkFJTAorMTA5OCBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudW5pZm9ybV9hcGkucmFu
ZG9tLjgxID0gRkFJTAorMTEwMSBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwucG9seWdvbl9v
ZmZzZXQuZml4ZWQxNl9yZW5kZXJfd2l0aF91bml0cyA9IEZBSUwKKzExMDEgV0lOIDogZEVRUC1H
TEVTMy5mdW5jdGlvbmFsLnBvbHlnb25fb2Zmc2V0LmZpeGVkMjRfcmVuZGVyX3dpdGhfdW5pdHMg
PSBGQUlMCisxMTAxIFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5saWZldGltZS5hdHRhY2gu
ZGVsZXRlZF9pbnB1dC5idWZmZXJfdmVydGV4X2FycmF5ID0gRkFJTAorCisvLyBXaW5kb3dzIElu
dGVsLXNwZWNpZmljIGZhaWx1cmVzCisKKzEzNDkgV0lOIElOVEVMIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZWxvZC5pc2FtcGxlcmN1YmVf
KiA9IEZBSUwKKzEzNDkgV0lOIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMu
dGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZWxvZC51c2FtcGxlcmN1YmVfKiA9IEZBSUwKKzEzNDkg
V0lOIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlv
bnMudGV4dHVyZWdyYWQuaXNhbXBsZXJjdWJlX3ZlcnRleCA9IEZBSUwKKzEzNDkgV0lOIElOVEVM
IDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVy
ZWdyYWQudXNhbXBsZXJjdWJlX3ZlcnRleCA9IEZBSUwKKzEzNDkgV0lOIElOVEVMIDogZEVRUC1H
TEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZWdyYWQudXNh
bXBsZXJjdWJlX2ZyYWdtZW50ID0gRkFJTAorMTM0OSBXSU4gSU5URUwgOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwudGV4dHVyZS51bml0cy4yX3VuaXRzLm9ubHlfY3ViZS4wID0gRkFJTAorMTM0OSBX
SU4gSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS51bml0cy4yX3VuaXRzLm9u
bHlfY3ViZS4yID0gRkFJTAorMTM0OSBXSU4gSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
dGV4dHVyZS51bml0cy4yX3VuaXRzLm9ubHlfY3ViZS40ID0gRkFJTAorMTM0OSBXSU4gSU5URUwg
OiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS51bml0cy4yX3VuaXRzLm9ubHlfY3ViZS43
ID0gRkFJTAorMTM0OSBXSU4gSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS51
bml0cy4yX3VuaXRzLm9ubHlfY3ViZS44ID0gRkFJTAorMTM0OSBXSU4gSU5URUwgOiBkRVFQLUdM
RVMzLmZ1bmN0aW9uYWwudGV4dHVyZS51bml0cy4yX3VuaXRzLm1peGVkLjQgPSBGQUlMCisxMzQ5
IFdJTiBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRzLjRfdW5pdHMu
b25seV9jdWJlLjAgPSBGQUlMCisxMzQ5IFdJTiBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC50ZXh0dXJlLnVuaXRzLjRfdW5pdHMub25seV9jdWJlLjEgPSBGQUlMCisxMzQ5IFdJTiBJTlRF
TCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRzLjRfdW5pdHMub25seV9jdWJl
LjIgPSBGQUlMCisxMzQ5IFdJTiBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJl
LnVuaXRzLjRfdW5pdHMub25seV9jdWJlLjYgPSBGQUlMCisxMzQ5IFdJTiBJTlRFTCA6IGRFUVAt
R0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRzLjRfdW5pdHMub25seV9jdWJlLjcgPSBGQUlM
CisxMzQ5IFdJTiBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRzLjRf
dW5pdHMub25seV9jdWJlLjggPSBGQUlMCisxMzQ5IFdJTiBJTlRFTCA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC50ZXh0dXJlLnVuaXRzLjRfdW5pdHMub25seV9jdWJlLjkgPSBGQUlMCisxMzQ5IFdJ
TiBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRzLjRfdW5pdHMubWl4
ZWQuNCA9IEZBSUwKKzEzNDkgV0lOIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1
cmUudW5pdHMuNF91bml0cy5taXhlZC42ID0gRkFJTAorMTM0OSBXSU4gSU5URUwgOiBkRVFQLUdM
RVMzLmZ1bmN0aW9uYWwudGV4dHVyZS51bml0cy40X3VuaXRzLm1peGVkLjcgPSBGQUlMCisxMzQ5
IFdJTiBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRzLjhfdW5pdHMu
b25seV9jdWJlLiogPSBGQUlMCisxMzQ5IFdJTiBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC50ZXh0dXJlLnVuaXRzLjhfdW5pdHMubWl4ZWQuMiA9IEZBSUwKKzEzNDkgV0lOIElOVEVMIDog
ZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUudW5pdHMuOF91bml0cy5taXhlZC4zID0gRkFJ
TAorMTM0OSBXSU4gSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS51bml0cy44
X3VuaXRzLm1peGVkLjQgPSBGQUlMCisxMzQ5IFdJTiBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC50ZXh0dXJlLnVuaXRzLjhfdW5pdHMubWl4ZWQuNiA9IEZBSUwKKzEzNDkgV0lOIElOVEVM
IDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUudW5pdHMuOF91bml0cy5taXhlZC43ID0g
RkFJTAorMTM0OSBXSU4gSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS51bml0
cy5hbGxfdW5pdHMub25seV9jdWJlLiogPSBGQUlMCisxMzQ5IFdJTiBJTlRFTCA6IGRFUVAtR0xF
UzMuZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRzLmFsbF91bml0cy5taXhlZC4yID0gRkFJTAorMTM0
OSBXSU4gSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS51bml0cy5hbGxfdW5p
dHMubWl4ZWQuMyA9IEZBSUwKKzEzNDkgV0lOIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LnRleHR1cmUudW5pdHMuYWxsX3VuaXRzLm1peGVkLjQgPSBGQUlMCisxMzQ5IFdJTiBJTlRFTCA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRzLmFsbF91bml0cy5taXhlZC42ID0g
RkFJTAorMTM0OSBXSU4gSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS51bml0
cy5hbGxfdW5pdHMubWl4ZWQuNyA9IEZBSUwKKworLy8gTGludXggb25seSBmYWlsdXJlcworCisv
LyBVQk8gdGVzdHMgdHJpZ2dlciBjcmFzaGVzIHdoZW4gZ2V0dGluZyB0aGUgcHJvZ3JhbSBpbmZv
IGxvZywgc2tpcCB0aGVtIHVudGlsIHRoaXMgaXMgZml4ZWQuCisxMzIzIExJTlVYIDogZEVRUC1H
TEVTMy5mdW5jdGlvbmFsLnViby4qID0gU0tJUAorCisxMzIzIExJTlVYIDogZEVRUC1HTEVTMy5m
dW5jdGlvbmFsLmRyYXcucmFuZG9tLjIxMCA9IEZBSUwKKzEzMjMgTElOVVggOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwuZmJvLmJsaXQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5zcmdiOF9hbHBoYTggPSBG
QUlMCisxMzIzIExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5ibGl0LmRlZmF1bHRf
ZnJhbWVidWZmZXIuc3JnYjhfYWxwaGE4X2xpbmVhcl9vdXRfb2ZfYm91bmRzX2JsaXRfdG9fZGVm
YXVsdCA9IEZBSUwKKzEzMjMgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmJsaXQu
ZGVmYXVsdF9mcmFtZWJ1ZmZlci5zcmdiOF9hbHBoYThfbGluZWFyX3NjYWxlX2JsaXRfdG9fZGVm
YXVsdCA9IEZBSUwKKzEzMjMgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmJsaXQu
ZGVmYXVsdF9mcmFtZWJ1ZmZlci5zcmdiOF9hbHBoYThfbmVhcmVzdF9zY2FsZV9ibGl0X3RvX2Rl
ZmF1bHQgPSBGQUlMCisxMzIzIExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5kZXB0
aC5kZXB0aF90ZXN0X2NsYW1wLmRlcHRoX2NvbXBvbmVudDMyZiA9IEZBSUwKKzEzMjMgTElOVVgg
OiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmRlcHRoLmRlcHRoX3Rlc3RfY2xhbXAuZGVwdGgz
MmZfc3RlbmNpbDggPSBGQUlMCisxMzIzIExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZi
by5kZXB0aC5kZXB0aF93cml0ZV9jbGFtcC5kZXB0aF9jb21wb25lbnQzMmYgPSBGQUlMCisxMzIz
IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5kZXB0aC5kZXB0aF93cml0ZV9jbGFt
cC5kZXB0aDMyZl9zdGVuY2lsOCA9IEZBSUwKKzEzMjMgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwucmFzdGVyaXphdGlvbi5mYm8ucmJvX211bHRpc2FtcGxlX21heC5wcmltaXRpdmVzLnBv
aW50cyA9IEZBSUwKKzEzMjMgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc3RhdGVfcXVl
cnkuaW50ZWdlcnM2NC5tYXhfc2VydmVyX3dhaXRfdGltZW91dF9nZXRmbG9hdCA9IEZBSUwKKzEz
MjMgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuMmQucHJvamVj
dGVkLmxpbmVhcl9saW5lYXJfY2xhbXAgPSBGQUlMCisxMzIzIExJTlVYIDogZEVRUC1HTEVTMy5m
dW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLjJkLnByb2plY3RlZC5saW5lYXJfbGluZWFyX21pcnJv
ciA9IEZBSUwKKzEzMjMgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBt
YXAuMmQucHJvamVjdGVkLmxpbmVhcl9saW5lYXJfcmVwZWF0ID0gRkFJTAorMTMyMyBMSU5VWCA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC4yZC5wcm9qZWN0ZWQubmVhcmVz
dF9saW5lYXJfY2xhbXAgPSBGQUlMCisxMzIzIExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LnRleHR1cmUubWlwbWFwLjJkLnByb2plY3RlZC5uZWFyZXN0X2xpbmVhcl9taXJyb3IgPSBGQUlM
CisxMzIzIExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLjJkLnBy
b2plY3RlZC5uZWFyZXN0X2xpbmVhcl9yZXBlYXQgPSBGQUlMCisxMDk4IExJTlVYIDogZEVRUC1H
TEVTMy5mdW5jdGlvbmFsLnVuaWZvcm1fYXBpLnJhbmRvbS42ID0gRkFJTAorCisvLyBXaGlsZSBs
b29wcyB3aXRoICdjb250aW51ZScgc2VlbSBmbGFreSBvbiBMaW51eC4gKFBvc3NpYmx5IGFsbCBH
TCByZW5kZXJlcnMpCisxMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMu
bG9vcHMud2hpbGVfY29uc3RhbnRfaXRlcmF0aW9ucy5jb25kaXRpb25hbF9jb250aW51ZV92ZXJ0
ZXggPSBGQUlMCisxMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9v
cHMud2hpbGVfY29uc3RhbnRfaXRlcmF0aW9ucy5jb25kaXRpb25hbF9jb250aW51ZV9mcmFnbWVu
dCA9IEZBSUwKKzEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29w
cy53aGlsZV9jb25zdGFudF9pdGVyYXRpb25zLnVuY29uZGl0aW9uYWxfY29udGludWVfdmVydGV4
ID0gRkFJTAorMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3Bz
LndoaWxlX2NvbnN0YW50X2l0ZXJhdGlvbnMudW5jb25kaXRpb25hbF9jb250aW51ZV9mcmFnbWVu
dCA9IEZBSUwKKzEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29w
cy53aGlsZV9jb25zdGFudF9pdGVyYXRpb25zLm9ubHlfY29udGludWVfdmVydGV4ID0gRkFJTAor
MTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX2Nv
bnN0YW50X2l0ZXJhdGlvbnMub25seV9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKKzEzMjQgTElO
VVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV9jb25zdGFudF9p
dGVyYXRpb25zLmRvdWJsZV9jb250aW51ZV92ZXJ0ZXggPSBGQUlMCisxMzI0IExJTlVYIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfY29uc3RhbnRfaXRlcmF0aW9u
cy5kb3VibGVfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCisxMzI0IExJTlVYIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfY29uc3RhbnRfaXRlcmF0aW9ucy5taXhl
ZF9icmVha19jb250aW51ZV92ZXJ0ZXggPSBGQUlMCisxMzI0IExJTlVYIDogZEVRUC1HTEVTMy5m
dW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfY29uc3RhbnRfaXRlcmF0aW9ucy5taXhlZF9i
cmVha19jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKKzEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMuY29uZGl0aW9u
YWxfY29udGludWVfdmVydGV4ID0gRkFJTAorMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX3VuaWZvcm1faXRlcmF0aW9ucy5jb25kaXRpb25hbF9j
b250aW51ZV9mcmFnbWVudCA9IEZBSUwKKzEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9u
YWwuc2hhZGVycy5sb29wcy53aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMudW5jb25kaXRpb25hbF9j
b250aW51ZV92ZXJ0ZXggPSBGQUlMCisxMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LnNoYWRlcnMubG9vcHMud2hpbGVfdW5pZm9ybV9pdGVyYXRpb25zLnVuY29uZGl0aW9uYWxfY29u
dGludWVfZnJhZ21lbnQgPSBGQUlMCisxMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LnNoYWRlcnMubG9vcHMud2hpbGVfdW5pZm9ybV9pdGVyYXRpb25zLm9ubHlfY29udGludWVfdmVy
dGV4ID0gRkFJTAorMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxv
b3BzLndoaWxlX3VuaWZvcm1faXRlcmF0aW9ucy5vbmx5X2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJ
TAorMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxl
X3VuaWZvcm1faXRlcmF0aW9ucy5kb3VibGVfY29udGludWVfdmVydGV4ID0gRkFJTAorMTMyNCBM
SU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX3VuaWZvcm1f
aXRlcmF0aW9ucy5kb3VibGVfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCisxMzI0IExJTlVYIDog
ZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfdW5pZm9ybV9pdGVyYXRp
b25zLm1peGVkX2JyZWFrX2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKKzEzMjQgTElOVVggOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMu
bWl4ZWRfYnJlYWtfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCisxMzI0IExJTlVYIDogZEVRUC1H
TEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfZHluYW1pY19pdGVyYXRpb25zLmNv
bmRpdGlvbmFsX2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKKzEzMjQgTElOVVggOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV9keW5hbWljX2l0ZXJhdGlvbnMuY29uZGl0
aW9uYWxfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCisxMzI0IExJTlVYIDogZEVRUC1HTEVTMy5m
dW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfZHluYW1pY19pdGVyYXRpb25zLnVuY29uZGl0
aW9uYWxfY29udGludWVfdmVydGV4ID0gRkFJTAorMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX2R5bmFtaWNfaXRlcmF0aW9ucy51bmNvbmRpdGlv
bmFsX2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJTAorMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX2R5bmFtaWNfaXRlcmF0aW9ucy5vbmx5X2NvbnRp
bnVlX3ZlcnRleCA9IEZBSUwKKzEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hh
ZGVycy5sb29wcy53aGlsZV9keW5hbWljX2l0ZXJhdGlvbnMub25seV9jb250aW51ZV9mcmFnbWVu
dCA9IEZBSUwKKzEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29w
cy53aGlsZV9keW5hbWljX2l0ZXJhdGlvbnMuZG91YmxlX2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwK
KzEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV9k
eW5hbWljX2l0ZXJhdGlvbnMuZG91YmxlX2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJTAorMTMyNCBM
SU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX2R5bmFtaWNf
aXRlcmF0aW9ucy5taXhlZF9icmVha19jb250aW51ZV92ZXJ0ZXggPSBGQUlMCisxMzI0IExJTlVY
IDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfZHluYW1pY19pdGVy
YXRpb25zLm1peGVkX2JyZWFrX2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJTAorMTMyNCBMSU5VWCA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX2NvbnN0YW50X2l0
ZXJhdGlvbnMuY29uZGl0aW9uYWxfY29udGludWVfdmVydGV4ID0gRkFJTAorMTMyNCBMSU5VWCA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX2NvbnN0YW50X2l0
ZXJhdGlvbnMuY29uZGl0aW9uYWxfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCisxMzI0IExJTlVY
IDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfY29uc3RhbnRf
aXRlcmF0aW9ucy51bmNvbmRpdGlvbmFsX2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKKzEzMjQgTElO
VVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV9jb25zdGFu
dF9pdGVyYXRpb25zLnVuY29uZGl0aW9uYWxfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCisxMzI0
IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfY29u
c3RhbnRfaXRlcmF0aW9ucy5vbmx5X2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKKzEzMjQgTElOVVgg
OiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV9jb25zdGFudF9p
dGVyYXRpb25zLm9ubHlfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCisxMzI0IExJTlVYIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfY29uc3RhbnRfaXRlcmF0
aW9ucy5kb3VibGVfY29udGludWVfdmVydGV4ID0gRkFJTAorMTMyNCBMSU5VWCA6IGRFUVAtR0xF
UzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX2NvbnN0YW50X2l0ZXJhdGlvbnMu
ZG91YmxlX2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJTAorMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMu
ZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX2NvbnN0YW50X2l0ZXJhdGlvbnMubWl4
ZWRfYnJlYWtfY29udGludWVfdmVydGV4ID0gRkFJTAorMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMu
ZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX2NvbnN0YW50X2l0ZXJhdGlvbnMubWl4
ZWRfYnJlYWtfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCisxMzI0IExJTlVYIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfdW5pZm9ybV9pdGVyYXRpb25zLmNv
bmRpdGlvbmFsX2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKKzEzMjQgTElOVVggOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMuY29u
ZGl0aW9uYWxfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCisxMzI0IExJTlVYIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfdW5pZm9ybV9pdGVyYXRpb25zLnVu
Y29uZGl0aW9uYWxfY29udGludWVfdmVydGV4ID0gRkFJTAorMTMyNCBMSU5VWCA6IGRFUVAtR0xF
UzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX3VuaWZvcm1faXRlcmF0aW9ucy51
bmNvbmRpdGlvbmFsX2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJTAorMTMyNCBMSU5VWCA6IGRFUVAt
R0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX3VuaWZvcm1faXRlcmF0aW9u
cy5vbmx5X2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKKzEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMub25seV9j
b250aW51ZV9mcmFnbWVudCA9IEZBSUwKKzEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9u
YWwuc2hhZGVycy5sb29wcy5kb193aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMuZG91YmxlX2NvbnRp
bnVlX3ZlcnRleCA9IEZBSUwKKzEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hh
ZGVycy5sb29wcy5kb193aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMuZG91YmxlX2NvbnRpbnVlX2Zy
YWdtZW50ID0gRkFJTAorMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJz
Lmxvb3BzLmRvX3doaWxlX3VuaWZvcm1faXRlcmF0aW9ucy5taXhlZF9icmVha19jb250aW51ZV92
ZXJ0ZXggPSBGQUlMCisxMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMu
bG9vcHMuZG9fd2hpbGVfdW5pZm9ybV9pdGVyYXRpb25zLm1peGVkX2JyZWFrX2NvbnRpbnVlX2Zy
YWdtZW50ID0gRkFJTAorMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJz
Lmxvb3BzLmRvX3doaWxlX2R5bmFtaWNfaXRlcmF0aW9ucy5jb25kaXRpb25hbF9jb250aW51ZV92
ZXJ0ZXggPSBGQUlMCisxMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMu
bG9vcHMuZG9fd2hpbGVfZHluYW1pY19pdGVyYXRpb25zLmNvbmRpdGlvbmFsX2NvbnRpbnVlX2Zy
YWdtZW50ID0gRkFJTAorMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJz
Lmxvb3BzLmRvX3doaWxlX2R5bmFtaWNfaXRlcmF0aW9ucy51bmNvbmRpdGlvbmFsX2NvbnRpbnVl
X3ZlcnRleCA9IEZBSUwKKzEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVy
cy5sb29wcy5kb193aGlsZV9keW5hbWljX2l0ZXJhdGlvbnMudW5jb25kaXRpb25hbF9jb250aW51
ZV9mcmFnbWVudCA9IEZBSUwKKzEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hh
ZGVycy5sb29wcy5kb193aGlsZV9keW5hbWljX2l0ZXJhdGlvbnMub25seV9jb250aW51ZV92ZXJ0
ZXggPSBGQUlMCisxMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9v
cHMuZG9fd2hpbGVfZHluYW1pY19pdGVyYXRpb25zLm9ubHlfY29udGludWVfZnJhZ21lbnQgPSBG
QUlMCisxMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9f
d2hpbGVfZHluYW1pY19pdGVyYXRpb25zLmRvdWJsZV9jb250aW51ZV92ZXJ0ZXggPSBGQUlMCisx
MzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVf
ZHluYW1pY19pdGVyYXRpb25zLmRvdWJsZV9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKKzEzMjQg
TElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV9keW5h
bWljX2l0ZXJhdGlvbnMubWl4ZWRfYnJlYWtfY29udGludWVfdmVydGV4ID0gRkFJTAorMTMyNCBM
SU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX2R5bmFt
aWNfaXRlcmF0aW9ucy5taXhlZF9icmVha19jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvZGVxcF9nbGVz
MzFfdGVzdF9leHBlY3RhdGlvbnMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvZGVxcF9nbGVzMzFfdGVzdF9leHBlY3RhdGlv
bnMudHh0CShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9kZXFwX3N1cHBvcnQvZGVxcF9nbGVzMzFfdGVzdF9leHBlY3RhdGlvbnMudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMjcgQEAKKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBUaGlzIGZpbGUgY29udGFpbnMgYSBsaXN0
IG9mIGRlZmVjdGl2ZSBkRVFQIGNvbmZvcm1hbmNlIHRlc3RzLiBUaGUgZXhwZWN0ZWQKKy8vIGZv
cm1hdCBpczoKKy8vICB7QlVHI30ge01PRElGSUVSU30gOiB7VEVTVF9OQU1FfSA9IHtQQVNTLEZB
SUwsRkxBS1ksVElNRU9VVCxTS0lQfQorLy8KKy8vIE1PRElGSUVSUyBjYW4gYmUgYSBjb21iaW5h
dGlvbiBvZiB0aGUgYmVsb3cgbGlzdDoKKy8vICBXSU4gWFAgVklTVEEgV0lONyBNQUMgTEVPUEFS
RCBTTk9XTEVPUEFSRCBMSU9OIExJTlVYIENIUk9NRU9TIE1PVU5UQUlOTElPTgorLy8gIE1BVkVS
SUNLUworLy8gIE5WSURJQSBBTUQgSU5URUwKKy8vICAweGFiY2QgLSBHUFUgUENJIGRldmljZSBJ
RC4gU3BlY2lmeWluZyBhIFBDSSBpZCByZXF1aXJlcyBhIHZlbmRvci4KKy8vICBERUJVRyBSRUxF
QVNFCisvLyBUT0RPKGptYWRpbGwpOiBBZGQgQU5HTEUgUmVuZGVyZXIgc2VsZWN0aW9uIG1vZGlm
aWVycworLy8KKy8vIFRFU1RfTkFNRSBjYW4gYmUgYSBzcGVjaWZpYyB0ZXN0IG5hbWUsIG9yIGhh
dmUgYSAnKicgaW4gdGhlIGVuZCwgd2hpY2gKKy8vIGluZGljYXRlcyBhIHByZWZpeCBtYXRjaGlu
Zy4KKy8vCisvLyBFeGFtcGxlczoKKy8vICA5MTUzMCBNQUMgV0lOIExJTlVYIDogY29udGV4dF9s
b3N0X3Jlc3RvcmVkID0gVElNRU9VVAorLy8gIDkxNTMzIFdJTiA6IGdsX21pbl91bmlmb3JtcyA9
IEZBSUwKKy8vICA5MTUzMSBNQUMgV0lOIExJTlVYIDogY29uZm9ybWFuY2VfbW9yZV8qID0gU0tJ
UAorLy8gIDkxNTMyIE1BQyBOVklESUEgMHgwNjQwIDogdGV4X2ltYWdlX2FuZF9zdWJfaW1hZ2Vf
MmRfd2l0aF92aWRlbyA9IFBBU1MgRkFJTAorCisxNDQyIERFQlVHIDogZEVRUF9HTEVTMzEuKiA9
IEZBSUwKKzE0NDIgUkVMRUFTRSA6IGRFUVBfR0xFUzMxLiogPSBGQUlMCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L3RjdUFOR0xFTmF0aXZlRGlz
cGxheUZhY3RvcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9kZXFwX3N1cHBvcnQvdGN1QU5HTEVOYXRpdmVEaXNwbGF5RmFjdG9yeS5jcHAJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3Vw
cG9ydC90Y3VBTkdMRU5hdGl2ZURpc3BsYXlGYWN0b3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDMyNiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBkcmF3RWxlbWVudHMgUXVhbGl0
eSBQcm9ncmFtIFRlc3RlciBDb3JlCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2Ug
UHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICog
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKyAqCisgKi8KKworI2luY2x1ZGUgInRjdUFOR0xFTmF0aXZlRGlzcGxheUZhY3Rv
cnkuaCIKKworI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKyNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisK
KyNpbmNsdWRlICJkZUNsb2NrLmgiCisjaW5jbHVkZSAiZGVNZW1vcnkuaCIKKyNpbmNsdWRlICJk
ZVRocmVhZC5oIgorI2luY2x1ZGUgImVnbHVEZWZzLmhwcCIKKyNpbmNsdWRlICJlZ2x3TGlicmFy
eS5ocHAiCisjaW5jbHVkZSAiT1NQaXhtYXAuaCIKKyNpbmNsdWRlICJPU1dpbmRvdy5oIgorI2lu
Y2x1ZGUgInRjdVRleHR1cmUuaHBwIgorCisvLyBjbGFuZy1mb3JtYXQgb2ZmCisjaWYgKERFX09T
ID09IERFX09TX1dJTjMyKQorICAgICNkZWZpbmUgQU5HTEVfRUdMX0xJQlJBUllfTkFNRSAibGli
RUdMLmRsbCIKKyNlbGlmIChERV9PUyA9PSBERV9PU19VTklYKSB8fCAoREVfT1MgPT0gREVfT1Nf
QU5EUk9JRCkKKyAgICAjZGVmaW5lIEFOR0xFX0VHTF9MSUJSQVJZX05BTUUgImxpYkVHTC5zbyIK
KyNlbGlmIChERV9PUyA9PSBERV9PU19PU1gpCisgICAgI2RlZmluZSBBTkdMRV9FR0xfTElCUkFS
WV9OQU1FICJsaWJFR0wuZHlsaWIiCisjZWxzZQorICAgICNlcnJvciAiVW5zdXBwb3J0ZWQgcGxh
dGZvcm0iCisjZW5kaWYKKy8vIGNsYW5nLWZvcm1hdCBvbgorCituYW1lc3BhY2UgdGN1Cit7Citu
YW1lc3BhY2UKK3sKKworZW51bQoreworICAgIERFRkFVTFRfU1VSRkFDRV9XSURUSCAgICAgICA9
IDQwMCwKKyAgICBERUZBVUxUX1NVUkZBQ0VfSEVJR0hUICAgICAgPSAzMDAsCisgICAgV0FJVF9X
SU5ET1dfVklTSUJMRV9NUyAgICAgID0gNTAwICAgLy8hPCBUaW1lIHRvIHdhaXQgYmVmb3JlIGlz
c3Vpbmcgc2NyZWVuc2hvdCBhZnRlciBjaGFuZ2luZyB3aW5kb3cgdmlzaWJpbGl0eSAoaGFjayBm
b3IgRFdNKQorfTsKKworc3RhdGljIGNvbnN0IGVnbHU6Ok5hdGl2ZURpc3BsYXk6OkNhcGFiaWxp
dHkgRElTUExBWV9DQVBBQklMSVRJRVMgPSBlZ2x1OjpOYXRpdmVEaXNwbGF5OjpDQVBBQklMSVRZ
X0dFVF9ESVNQTEFZX1BMQVRGT1JNOworc3RhdGljIGNvbnN0IGVnbHU6Ok5hdGl2ZVBpeG1hcDo6
Q2FwYWJpbGl0eSAgQklUTUFQX0NBUEFCSUxJVElFUyAgPSBlZ2x1OjpOYXRpdmVQaXhtYXA6OkNB
UEFCSUxJVFlfQ1JFQVRFX1NVUkZBQ0VfTEVHQUNZOworc3RhdGljIGNvbnN0IGVnbHU6Ok5hdGl2
ZVdpbmRvdzo6Q2FwYWJpbGl0eSAgV0lORE9XX0NBUEFCSUxJVElFUyAgPSAoZWdsdTo6TmF0aXZl
V2luZG93OjpDYXBhYmlsaXR5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVnbHU6Ok5hdGl2ZVdpbmRvdzo6Q0FQ
QUJJTElUWV9DUkVBVEVfU1VSRkFDRV9MRUdBQ1kgICAgfAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbHU6Ok5h
dGl2ZVdpbmRvdzo6Q0FQQUJJTElUWV9HRVRfU1VSRkFDRV9TSVpFICAgICAgICAgfAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVnbHU6Ok5hdGl2ZVdpbmRvdzo6Q0FQQUJJTElUWV9HRVRfU0NSRUVOX1NJWkUgICAg
ICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVnbHU6Ok5hdGl2ZVdpbmRvdzo6Q0FQQUJJTElUWV9SRUFE
X1NDUkVFTl9QSVhFTFMgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbHU6Ok5hdGl2ZVdpbmRvdzo6
Q0FQQUJJTElUWV9TRVRfU1VSRkFDRV9TSVpFICAgICAgICAgfAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbHU6
Ok5hdGl2ZVdpbmRvdzo6Q0FQQUJJTElUWV9DSEFOR0VfVklTSUJJTElUWSk7CisKK2NsYXNzIEFO
R0xFTmF0aXZlRGlzcGxheSA6IHB1YmxpYyBlZ2x1OjpOYXRpdmVEaXNwbGF5Cit7CisgIHB1Ymxp
YzoKKyAgICBBTkdMRU5hdGl2ZURpc3BsYXkoY29uc3Qgc3RkOjp2ZWN0b3I8ZWdsdzo6RUdMQXR0
cmliPiAmYXR0cmlicyk7CisgICAgdmlydHVhbCB+QU5HTEVOYXRpdmVEaXNwbGF5KCkge30KKwor
ICAgIHZvaWQgKmdldFBsYXRmb3JtTmF0aXZlKCkgb3ZlcnJpZGUgeyByZXR1cm4gbURldmljZUNv
bnRleHQ7IH0KKyAgICBjb25zdCBlZ2x3OjpFR0xBdHRyaWIgKmdldFBsYXRmb3JtQXR0cmlidXRl
cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICZtUGxhdGZvcm1BdHRyaWJ1dGVzWzBdOyB9Cisg
ICAgY29uc3QgZWdsdzo6TGlicmFyeSAmZ2V0TGlicmFyeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1MaWJyYXJ5OyB9CisKKyAgICBFR0xOYXRpdmVEaXNwbGF5VHlwZSBnZXREZXZpY2VDb250
ZXh0KCkgeyByZXR1cm4gbURldmljZUNvbnRleHQ7IH0KKworICBwcml2YXRlOgorICAgIEVHTE5h
dGl2ZURpc3BsYXlUeXBlIG1EZXZpY2VDb250ZXh0OworICAgIGVnbHc6OkRlZmF1bHRMaWJyYXJ5
IG1MaWJyYXJ5OworICAgIHN0ZDo6dmVjdG9yPGVnbHc6OkVHTEF0dHJpYj4gbVBsYXRmb3JtQXR0
cmlidXRlczsKK307CisKK2NsYXNzIE5hdGl2ZVBpeG1hcEZhY3RvcnkgOiBwdWJsaWMgZWdsdTo6
TmF0aXZlUGl4bWFwRmFjdG9yeQoreworICBwdWJsaWM6CisgICAgTmF0aXZlUGl4bWFwRmFjdG9y
eSgpOworICAgIH5OYXRpdmVQaXhtYXBGYWN0b3J5KCkge30KKworICAgIGVnbHU6Ok5hdGl2ZVBp
eG1hcCAqY3JlYXRlUGl4bWFwKGVnbHU6Ok5hdGl2ZURpc3BsYXkgKm5hdGl2ZURpc3BsYXksIGlu
dCB3aWR0aCwgaW50IGhlaWdodCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgZWdsdTo6TmF0aXZlUGl4
bWFwICpjcmVhdGVQaXhtYXAoZWdsdTo6TmF0aXZlRGlzcGxheSAqbmF0aXZlRGlzcGxheSwgZWds
dzo6RUdMRGlzcGxheSBkaXNwbGF5LCBlZ2x3OjpFR0xDb25maWcgY29uZmlnLCBjb25zdCBlZ2x3
OjpFR0xBdHRyaWIqIGF0dHJpYkxpc3QsIGludCB3aWR0aCwgaW50IGhlaWdodCkgY29uc3Qgb3Zl
cnJpZGU7Cit9OworCitjbGFzcyBOYXRpdmVQaXhtYXAgOiBwdWJsaWMgZWdsdTo6TmF0aXZlUGl4
bWFwCit7CisgIHB1YmxpYzoKKyAgICBOYXRpdmVQaXhtYXAoRUdMTmF0aXZlRGlzcGxheVR5cGUg
ZGlzcGxheSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgYml0RGVwdGgpOworICAgIHZpcnR1
YWwgfk5hdGl2ZVBpeG1hcCgpOworCisgICAgZWdsdzo6RUdMTmF0aXZlUGl4bWFwVHlwZSBnZXRM
ZWdhY3lOYXRpdmUoKSBvdmVycmlkZTsKKworICBwcml2YXRlOgorICAgIE9TUGl4bWFwICptUGl4
bWFwOworfTsKKworY2xhc3MgTmF0aXZlV2luZG93RmFjdG9yeSA6IHB1YmxpYyBlZ2x1OjpOYXRp
dmVXaW5kb3dGYWN0b3J5Cit7CisgIHB1YmxpYzoKKyAgICBOYXRpdmVXaW5kb3dGYWN0b3J5KEV2
ZW50U3RhdGUgKmV2ZW50U3RhdGUpOworICAgIH5OYXRpdmVXaW5kb3dGYWN0b3J5KCkgb3ZlcnJp
ZGUge30KKworICAgIGVnbHU6Ok5hdGl2ZVdpbmRvdyAqY3JlYXRlV2luZG93KGVnbHU6Ok5hdGl2
ZURpc3BsYXkgKm5hdGl2ZURpc3BsYXksIGNvbnN0IGVnbHU6OldpbmRvd1BhcmFtcyAmcGFyYW1z
KSBjb25zdCBvdmVycmlkZTsKKworICBwcml2YXRlOgorICAgIEV2ZW50U3RhdGUgKm1FdmVudHM7
Cit9OworCitjbGFzcyBOYXRpdmVXaW5kb3cgOiBwdWJsaWMgZWdsdTo6TmF0aXZlV2luZG93Cit7
CisgIHB1YmxpYzoKKyAgICBOYXRpdmVXaW5kb3coQU5HTEVOYXRpdmVEaXNwbGF5ICpuYXRpdmVE
aXNwbGF5LCBjb25zdCBlZ2x1OjpXaW5kb3dQYXJhbXMgJnBhcmFtcywgRXZlbnRTdGF0ZSAqZXZl
bnRTdGF0ZSk7CisgICAgfk5hdGl2ZVdpbmRvdygpIG92ZXJyaWRlOworCisgICAgZWdsdzo6RUdM
TmF0aXZlV2luZG93VHlwZSBnZXRMZWdhY3lOYXRpdmUoKSBvdmVycmlkZTsKKyAgICBJVmVjMiBn
ZXRTdXJmYWNlU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIElWZWMyIGdldFNjcmVlblNpemUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBnZXRTdXJmYWNlU2l6ZSgpOyB9CisgICAgdm9pZCBw
cm9jZXNzRXZlbnRzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTdXJmYWNlU2l6ZShJVmVjMiBz
aXplKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFZpc2liaWxpdHkoZWdsdTo6V2luZG93UGFyYW1z
OjpWaXNpYmlsaXR5IHZpc2liaWxpdHkpIG92ZXJyaWRlOworICAgIHZvaWQgcmVhZFNjcmVlblBp
eGVscyh0Y3U6OlRleHR1cmVMZXZlbCogZHN0KSBjb25zdCBvdmVycmlkZTsKKworICBwcml2YXRl
OgorICAgIE9TV2luZG93ICptV2luZG93OworICAgIEV2ZW50U3RhdGUgKm1FdmVudHM7Cit9Owor
CisvLyBBTkdMRSBOYXRpdmVEaXNwbGF5CisKK0FOR0xFTmF0aXZlRGlzcGxheTo6QU5HTEVOYXRp
dmVEaXNwbGF5KGNvbnN0IHN0ZDo6dmVjdG9yPEVHTEF0dHJpYj4gJmF0dHJpYnMpCisgICAgOiBl
Z2x1OjpOYXRpdmVEaXNwbGF5KERJU1BMQVlfQ0FQQUJJTElUSUVTLCBFR0xfUExBVEZPUk1fQU5H
TEVfQU5HTEUsICJFR0xfRVhUX3BsYXRmb3JtX2Jhc2UiKSwKKyAgICAgIG1EZXZpY2VDb250ZXh0
KEVHTF9ERUZBVUxUX0RJU1BMQVkpLAorICAgICAgbUxpYnJhcnkoQU5HTEVfRUdMX0xJQlJBUllf
TkFNRSksCisgICAgICBtUGxhdGZvcm1BdHRyaWJ1dGVzKGF0dHJpYnMpCit7Cit9CisKKy8vIE5h
dGl2ZVBpeG1hcAorCitOYXRpdmVQaXhtYXA6Ok5hdGl2ZVBpeG1hcChFR0xOYXRpdmVEaXNwbGF5
VHlwZSBkaXNwbGF5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBiaXREZXB0aCkKKyAgICA6
IGVnbHU6Ok5hdGl2ZVBpeG1hcChCSVRNQVBfQ0FQQUJJTElUSUVTKSwKKyAgICAgIG1QaXhtYXAo
Q3JlYXRlT1NQaXhtYXAoKSkKK3sKKyAgICBpZiAoIW1QaXhtYXApCisgICAgeworICAgICAgICB0
aHJvdyBSZXNvdXJjZUVycm9yKCJGYWlsZWQgdG8gY3JlYXRlIHBpeG1hcCIsIERFX05VTEwsIF9f
RklMRV9fLCBfX0xJTkVfXyk7CisgICAgfQorCisgICAgaWYgKCFtUGl4bWFwLT5pbml0aWFsaXpl
KGRpc3BsYXksIHdpZHRoLCBoZWlnaHQsIGJpdERlcHRoKSkKKyAgICB7CisgICAgICAgIHRocm93
IFJlc291cmNlRXJyb3IoIkZhaWxlZCB0byBpbml0aWFsaXplIHBpeG1hcCIsIERFX05VTEwsIF9f
RklMRV9fLCBfX0xJTkVfXyk7CisgICAgfQorfQorCitOYXRpdmVQaXhtYXA6On5OYXRpdmVQaXht
YXAoKQoreworICAgIGRlbGV0ZSBtUGl4bWFwOworfQorCitlZ2x3OjpFR0xOYXRpdmVQaXhtYXBU
eXBlIE5hdGl2ZVBpeG1hcDo6Z2V0TGVnYWN5TmF0aXZlKCkKK3sKKyAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxlZ2x3OjpFR0xOYXRpdmVQaXhtYXBUeXBlPihtUGl4bWFwLT5nZXROYXRpdmVQ
aXhtYXAoKSk7Cit9CisKKy8vIE5hdGl2ZVBpeG1hcEZhY3RvcnkKKworTmF0aXZlUGl4bWFwRmFj
dG9yeTo6TmF0aXZlUGl4bWFwRmFjdG9yeSgpCisgICAgOiBlZ2x1OjpOYXRpdmVQaXhtYXBGYWN0
b3J5KCJiaXRtYXAiLCAiQU5HTEUgQml0bWFwIiwgQklUTUFQX0NBUEFCSUxJVElFUykKK3sKK30K
KworZWdsdTo6TmF0aXZlUGl4bWFwICpOYXRpdmVQaXhtYXBGYWN0b3J5OjpjcmVhdGVQaXhtYXAg
KGVnbHU6Ok5hdGl2ZURpc3BsYXkqIG5hdGl2ZURpc3BsYXksIGVnbHc6OkVHTERpc3BsYXkgZGlz
cGxheSwgZWdsdzo6RUdMQ29uZmlnIGNvbmZpZywgY29uc3QgZWdsdzo6RUdMQXR0cmliKiBhdHRy
aWJMaXN0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpIGNvbnN0Cit7CisgICAgY29uc3QgZWdsdzo6
TGlicmFyeSYgICAgZWdsICAgICAgICAgPSBuYXRpdmVEaXNwbGF5LT5nZXRMaWJyYXJ5KCk7Cisg
ICAgaW50ICAgICAgICAgICAgIHJlZEJpdHMgICAgID0gMDsKKyAgICBpbnQgICAgICAgICAgICAg
Z3JlZW5CaXRzICAgPSAwOworICAgIGludCAgICAgICAgICAgICBibHVlQml0cyAgICA9IDA7Cisg
ICAgaW50ICAgICAgICAgICAgIGFscGhhQml0cyAgID0gMDsKKyAgICBpbnQgICAgICAgICAgICAg
Yml0U3VtICAgICAgPSAwOworCisgICAgREVfQVNTRVJUKGRpc3BsYXkgIT0gRUdMX05PX0RJU1BM
QVkpOworCisgICAgZWdsLmdldENvbmZpZ0F0dHJpYihkaXNwbGF5LCBjb25maWcsIEVHTF9SRURf
U0laRSwgICAgICAmcmVkQml0cyk7CisgICAgZWdsLmdldENvbmZpZ0F0dHJpYihkaXNwbGF5LCBj
b25maWcsIEVHTF9HUkVFTl9TSVpFLCAgICAmZ3JlZW5CaXRzKTsKKyAgICBlZ2wuZ2V0Q29uZmln
QXR0cmliKGRpc3BsYXksIGNvbmZpZywgRUdMX0JMVUVfU0laRSwgICAgICZibHVlQml0cyk7Cisg
ICAgZWdsLmdldENvbmZpZ0F0dHJpYihkaXNwbGF5LCBjb25maWcsIEVHTF9BTFBIQV9TSVpFLCAg
ICAmYWxwaGFCaXRzKTsKKyAgICBFR0xVX0NIRUNLX01TRyhlZ2wsICJlZ2xHZXRDb25maWdBdHRy
aWIoKSIpOworCisgICAgYml0U3VtID0gcmVkQml0cytncmVlbkJpdHMrYmx1ZUJpdHMrYWxwaGFC
aXRzOworCisgICAgcmV0dXJuIG5ldyBOYXRpdmVQaXhtYXAoZHluYW1pY19jYXN0PEFOR0xFTmF0
aXZlRGlzcGxheSo+KG5hdGl2ZURpc3BsYXkpLT5nZXREZXZpY2VDb250ZXh0KCksIHdpZHRoLCBo
ZWlnaHQsIGJpdFN1bSk7Cit9CisKK2VnbHU6Ok5hdGl2ZVBpeG1hcCAqTmF0aXZlUGl4bWFwRmFj
dG9yeTo6Y3JlYXRlUGl4bWFwKGVnbHU6Ok5hdGl2ZURpc3BsYXkqIG5hdGl2ZURpc3BsYXksIGlu
dCB3aWR0aCwgaW50IGhlaWdodCkgY29uc3QKK3sKKyAgICBjb25zdCBpbnQgZGVmYXVsdERlcHRo
ID0gMzI7CisgICAgcmV0dXJuIG5ldyBOYXRpdmVQaXhtYXAoZHluYW1pY19jYXN0PEFOR0xFTmF0
aXZlRGlzcGxheSo+KG5hdGl2ZURpc3BsYXkpLT5nZXREZXZpY2VDb250ZXh0KCksIHdpZHRoLCBo
ZWlnaHQsIGRlZmF1bHREZXB0aCk7Cit9CisKKy8vIE5hdGl2ZVdpbmRvd0ZhY3RvcnkKKworTmF0
aXZlV2luZG93RmFjdG9yeTo6TmF0aXZlV2luZG93RmFjdG9yeShFdmVudFN0YXRlICpldmVudFN0
YXRlKQorICAgIDogZWdsdTo6TmF0aXZlV2luZG93RmFjdG9yeSgid2luZG93IiwgIkFOR0xFIFdp
bmRvdyIsIFdJTkRPV19DQVBBQklMSVRJRVMpLAorICAgICAgbUV2ZW50cyhldmVudFN0YXRlKQor
eworfQorCitlZ2x1OjpOYXRpdmVXaW5kb3cgKk5hdGl2ZVdpbmRvd0ZhY3Rvcnk6OmNyZWF0ZVdp
bmRvdyhlZ2x1OjpOYXRpdmVEaXNwbGF5KiBuYXRpdmVEaXNwbGF5LCBjb25zdCBlZ2x1OjpXaW5k
b3dQYXJhbXMmIHBhcmFtcykgY29uc3QKK3sKKyAgICByZXR1cm4gbmV3IE5hdGl2ZVdpbmRvdyhk
eW5hbWljX2Nhc3Q8QU5HTEVOYXRpdmVEaXNwbGF5Kj4obmF0aXZlRGlzcGxheSksIHBhcmFtcywg
bUV2ZW50cyk7Cit9CisKKy8vIE5hdGl2ZVdpbmRvdworCitOYXRpdmVXaW5kb3c6Ok5hdGl2ZVdp
bmRvdyhBTkdMRU5hdGl2ZURpc3BsYXkgKm5hdGl2ZURpc3BsYXksIGNvbnN0IGVnbHU6OldpbmRv
d1BhcmFtcyYgcGFyYW1zLCBFdmVudFN0YXRlICpldmVudFN0YXRlKQorICAgIDogZWdsdTo6TmF0
aXZlV2luZG93KFdJTkRPV19DQVBBQklMSVRJRVMpLAorICAgICAgbVdpbmRvdyhDcmVhdGVPU1dp
bmRvdygpKSwKKyAgICAgIG1FdmVudHMoZXZlbnRTdGF0ZSkKK3sKKyAgICBib29sIGluaXRpYWxp
emVkID0gbVdpbmRvdy0+aW5pdGlhbGl6ZSgiZEVRUCBBTkdMRSBUZXN0cyIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLndpZHRoID09IGVnbHU6Oldp
bmRvd1BhcmFtczo6U0laRV9ET05UX0NBUkUgPyBERUZBVUxUX1NVUkZBQ0VfV0lEVEggOiBwYXJh
bXMud2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFy
YW1zLmhlaWdodCA9PSBlZ2x1OjpXaW5kb3dQYXJhbXM6OlNJWkVfRE9OVF9DQVJFID8gREVGQVVM
VF9TVVJGQUNFX0hFSUdIVCA6IHBhcmFtcy5oZWlnaHQpOworICAgIFRDVV9DSEVDSyhpbml0aWFs
aXplZCk7CisKKyAgICBpZiAocGFyYW1zLnZpc2liaWxpdHkgIT0gZWdsdTo6V2luZG93UGFyYW1z
OjpWSVNJQklMSVRZX0RPTlRfQ0FSRSkKKyAgICAgICAgc2V0VmlzaWJpbGl0eShwYXJhbXMudmlz
aWJpbGl0eSk7Cit9CisKK3ZvaWQgTmF0aXZlV2luZG93OjpzZXRWaXNpYmlsaXR5KGVnbHU6Oldp
bmRvd1BhcmFtczo6VmlzaWJpbGl0eSB2aXNpYmlsaXR5KQoreworICAgIHN3aXRjaCAodmlzaWJp
bGl0eSkKKyAgICB7CisgICAgICBjYXNlIGVnbHU6OldpbmRvd1BhcmFtczo6VklTSUJJTElUWV9I
SURERU46CisgICAgICAgIG1XaW5kb3ctPnNldFZpc2libGUoZmFsc2UpOworICAgICAgICBicmVh
azsKKworICAgICAgY2FzZSBlZ2x1OjpXaW5kb3dQYXJhbXM6OlZJU0lCSUxJVFlfVklTSUJMRToK
KyAgICAgIGNhc2UgZWdsdTo6V2luZG93UGFyYW1zOjpWSVNJQklMSVRZX0ZVTExTQ1JFRU46Cisg
ICAgICAgIC8vIFx0b2RvIFsyMDE0LTAzLTEyIHB5cnldIEltcGxlbWVudCBGVUxMU0NSRUVOLCBv
ciBhdCBsZWFzdCBTV19NQVhJTUlaRS4KKyAgICAgICAgbVdpbmRvdy0+c2V0VmlzaWJsZSh0cnVl
KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIERFX0FTU0VSVChE
RV9GQUxTRSk7CisgICAgfQorfQorCitOYXRpdmVXaW5kb3c6On5OYXRpdmVXaW5kb3coKQorewor
ICAgIGRlbGV0ZSBtV2luZG93OworfQorCitlZ2x3OjpFR0xOYXRpdmVXaW5kb3dUeXBlIE5hdGl2
ZVdpbmRvdzo6Z2V0TGVnYWN5TmF0aXZlKCkKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxlZ2x3OjpFR0xOYXRpdmVXaW5kb3dUeXBlPihtV2luZG93LT5nZXROYXRpdmVXaW5kb3coKSk7
Cit9CisKK0lWZWMyIE5hdGl2ZVdpbmRvdzo6Z2V0U3VyZmFjZVNpemUoKSBjb25zdAoreworICAg
IHJldHVybiBJVmVjMihtV2luZG93LT5nZXRXaWR0aCgpLCBtV2luZG93LT5nZXRIZWlnaHQoKSk7
Cit9CisKK3ZvaWQgTmF0aXZlV2luZG93Ojpwcm9jZXNzRXZlbnRzKCkKK3sKKyAgICBtV2luZG93
LT5tZXNzYWdlTG9vcCgpOworCisgICAgLy8gTG9vayBmb3IgYSBxdWl0IGV2ZW50IHRvIGZvcndh
cmQgdG8gdGhlIEV2ZW50U3RhdGUKKyAgICBFdmVudCBldmVudDsKKyAgICB3aGlsZSAobVdpbmRv
dy0+cG9wRXZlbnQoJmV2ZW50KSkKKyAgICB7CisgICAgICAgIGlmIChldmVudC5UeXBlID09IEV2
ZW50OjpFVkVOVF9DTE9TRUQpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1FdmVudHMtPnNpZ25h
bFF1aXRFdmVudCgpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIE5hdGl2ZVdpbmRvdzo6
c2V0U3VyZmFjZVNpemUoSVZlYzIgc2l6ZSkKK3sKKyAgICBtV2luZG93LT5yZXNpemUoc2l6ZS54
KCksIHNpemUueSgpKTsKK30KKwordm9pZCBOYXRpdmVXaW5kb3c6OnJlYWRTY3JlZW5QaXhlbHMo
dGN1OjpUZXh0dXJlTGV2ZWwgKmRzdCkgY29uc3QKK3sKKyAgICBkc3QtPnNldFN0b3JhZ2UoVGV4
dHVyZUZvcm1hdChUZXh0dXJlRm9ybWF0OjpCR1JBLCBUZXh0dXJlRm9ybWF0OjpVTk9STV9JTlQ4
KSwgbVdpbmRvdy0+Z2V0V2lkdGgoKSwgbVdpbmRvdy0+Z2V0SGVpZ2h0KCkpOworICAgIGJvb2wg
c3VjY2VzcyA9IG1XaW5kb3ctPnRha2VTY3JlZW5zaG90KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KGRzdC0+Z2V0QWNjZXNzKCkuZ2V0RGF0YVB0cigpKSk7CisgICAgREVfQVNTRVJUKHN1Y2Nl
c3MpOworICAgIERFX1VOUkVGKHN1Y2Nlc3MpOworfQorCit9IC8vIGFub255bW91cworCitBTkdM
RU5hdGl2ZURpc3BsYXlGYWN0b3J5OjpBTkdMRU5hdGl2ZURpc3BsYXlGYWN0b3J5KGNvbnN0IHN0
ZDo6c3RyaW5nICZuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmZGVzY3JpcHRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVj
dG9yPGVnbHc6OkVHTEF0dHJpYj4gJnBsYXRmb3JtQXR0cmlidXRlcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRTdGF0ZSAqZXZlbnRT
dGF0ZSkKKyAgICA6IGVnbHU6Ok5hdGl2ZURpc3BsYXlGYWN0b3J5KG5hbWUsIGRlc2NyaXB0aW9u
LCBESVNQTEFZX0NBUEFCSUxJVElFUywgRUdMX1BMQVRGT1JNX0FOR0xFX0FOR0xFLCAiRUdMX0VY
VF9wbGF0Zm9ybV9iYXNlIiksCisgICAgICBtUGxhdGZvcm1BdHRyaWJ1dGVzKHBsYXRmb3JtQXR0
cmlidXRlcykKK3sKKyAgICBtX25hdGl2ZVdpbmRvd1JlZ2lzdHJ5LnJlZ2lzdGVyRmFjdG9yeShu
ZXcgTmF0aXZlV2luZG93RmFjdG9yeShldmVudFN0YXRlKSk7CisgICAgbV9uYXRpdmVQaXhtYXBS
ZWdpc3RyeS5yZWdpc3RlckZhY3RvcnkobmV3IE5hdGl2ZVBpeG1hcEZhY3RvcnkoKSk7Cit9CisK
K0FOR0xFTmF0aXZlRGlzcGxheUZhY3Rvcnk6On5BTkdMRU5hdGl2ZURpc3BsYXlGYWN0b3J5KCkK
K3sKK30KKworZWdsdTo6TmF0aXZlRGlzcGxheSAqQU5HTEVOYXRpdmVEaXNwbGF5RmFjdG9yeTo6
Y3JlYXRlRGlzcGxheShjb25zdCBlZ2x3OjpFR0xBdHRyaWIgKmF0dHJpYkxpc3QpIGNvbnN0Cit7
CisgICAgREVfVU5SRUYoYXR0cmliTGlzdCk7CisgICAgcmV0dXJuIG5ldyBBTkdMRU5hdGl2ZURp
c3BsYXkobVBsYXRmb3JtQXR0cmlidXRlcyk7Cit9CisKK30gLy8gdGN1CkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L3RjdUFOR0xFTmF0aXZlRGlz
cGxheUZhY3RvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZGVxcF9zdXBwb3J0L3RjdUFOR0xFTmF0aXZlRGlzcGxheUZhY3RvcnkuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0
L3RjdUFOR0xFTmF0aXZlRGlzcGxheUZhY3RvcnkuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDYyIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dy
YW0gVGVzdGVyIENvcmUKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0
CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorICoKKyAqLworCisjaWZuZGVmIFRDVV9BTkdMRV9XSU4zMl9OQVRJVkVfRElTUExBWV9GQUNU
T1JZX0hfCisjZGVmaW5lIFRDVV9BTkdMRV9XSU4zMl9OQVRJVkVfRElTUExBWV9GQUNUT1JZX0hf
CisKKyNpbmNsdWRlICJ0Y3VEZWZzLmhwcCIKKyNpbmNsdWRlICJlZ2x1TmF0aXZlRGlzcGxheS5o
cHAiCisjaW5jbHVkZSAiZWdsd0RlZnMuaHBwIgorCituYW1lc3BhY2UgdGN1Cit7CisKK2NsYXNz
IEV2ZW50U3RhdGUKK3sKKyAgcHVibGljOgorICAgIEV2ZW50U3RhdGUoKQorICAgICAgICA6IG1R
dWl0KGZhbHNlKQorICAgIHsKKyAgICB9CisgICAgYm9vbCBxdWl0U2lnbmFsZWQoKSBjb25zdCB7
IHJldHVybiBtUXVpdDsgfTsKKyAgICB2b2lkIHNpZ25hbFF1aXRFdmVudCgpIHsgbVF1aXQgPSB0
cnVlOyB9OworCisgIHByaXZhdGU6CisgICAgYm9vbCBtUXVpdDsKK307CisKK2NsYXNzIEFOR0xF
TmF0aXZlRGlzcGxheUZhY3RvcnkgOiBwdWJsaWMgZWdsdTo6TmF0aXZlRGlzcGxheUZhY3RvcnkK
K3sKKyAgcHVibGljOgorICAgIEFOR0xFTmF0aXZlRGlzcGxheUZhY3RvcnkoY29uc3Qgc3RkOjpz
dHJpbmcgJm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyAmZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnZlY3RvcjxlZ2x3OjpFR0xBdHRyaWI+ICZwbGF0Zm9ybUF0dHJpYnV0ZXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFdmVudFN0YXRlICpldmVudFN0YXRlKTsKKyAgICB+QU5H
TEVOYXRpdmVEaXNwbGF5RmFjdG9yeSgpIG92ZXJyaWRlOworCisgICAgZWdsdTo6TmF0aXZlRGlz
cGxheSAqY3JlYXRlRGlzcGxheShjb25zdCBlZ2x3OjpFR0xBdHRyaWIqIGF0dHJpYkxpc3QpIGNv
bnN0IG92ZXJyaWRlOworCisgIHByaXZhdGU6CisgICAgc3RkOjp2ZWN0b3I8ZWdsdzo6RUdMQXR0
cmliPiBtUGxhdGZvcm1BdHRyaWJ1dGVzOworfTsKKworfSAvLyB0Y3UKKworI2VuZGlmIC8vIFRD
VV9BTkdMRV9XSU4zMl9OQVRJVkVfRElTUExBWV9GQUNUT1JZX0hfCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L3RjdUFOR0xFUGxhdGZvcm0uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1
cHBvcnQvdGN1QU5HTEVQbGF0Zm9ybS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC90Y3VBTkdMRVBsYXRmb3JtLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExOCBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBk
cmF3RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFtIFRlc3RlciBDb3JlCisgKiAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFu
ZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICog
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5Z
IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9y
IHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1p
dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworI2luY2x1ZGUgInRjdUFOR0xF
UGxhdGZvcm0uaCIKKworI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKyNpbmNsdWRlIDxFR0wvZWdsZXh0
Lmg+CisKKyNpbmNsdWRlICJlZ2x1R0xDb250ZXh0RmFjdG9yeS5ocHAiCisjaW5jbHVkZSAic3lz
dGVtX3V0aWxzLmgiCisjaW5jbHVkZSAidGN1QU5HTEVOYXRpdmVEaXNwbGF5RmFjdG9yeS5oIgor
I2luY2x1ZGUgInRjdU51bGxDb250ZXh0RmFjdG9yeS5ocHAiCisKK25hbWVzcGFjZSB0Y3UKK3sK
KworQU5HTEVQbGF0Zm9ybTo6QU5HTEVQbGF0Zm9ybSgpCit7CisgICAgYW5nbGU6OlNldExvd1By
aW9yaXR5UHJvY2VzcygpOworCisjaWYgKERFX09TID09IERFX09TX1dJTjMyKQorICAgIHN0ZDo6
dmVjdG9yPGVnbHc6OkVHTEF0dHJpYj4gZDNkMTFBdHRyaWJzOworICAgIGQzZDExQXR0cmlicy5w
dXNoX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfQU5HTEUpOworICAgIGQzZDExQXR0cmli
cy5wdXNoX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUpOworICAgIGQz
ZDExQXR0cmlicy5wdXNoX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0FOR0xF
KTsKKyAgICBkM2QxMUF0dHJpYnMucHVzaF9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0Vf
VFlQRV9IQVJEV0FSRV9BTkdMRSk7CisgICAgZDNkMTFBdHRyaWJzLnB1c2hfYmFjayhFR0xfTk9O
RSk7CisKKyAgICBhdXRvICpkM2QxMUZhY3RvcnkgPSBuZXcgQU5HTEVOYXRpdmVEaXNwbGF5RmFj
dG9yeSgKKyAgICAgICAgImFuZ2xlLWQzZDExIiwgIkFOR0xFIEQzRDExIERpc3BsYXkiLCBkM2Qx
MUF0dHJpYnMsICZtRXZlbnRzKTsKKyAgICBtX25hdGl2ZURpc3BsYXlGYWN0b3J5UmVnaXN0cnku
cmVnaXN0ZXJGYWN0b3J5KGQzZDExRmFjdG9yeSk7CisKKyAgICBzdGQ6OnZlY3RvcjxlZ2x3OjpF
R0xBdHRyaWI+IGQzZDlBdHRyaWJzOworICAgIGQzZDlBdHRyaWJzLnB1c2hfYmFjayhFR0xfUExB
VEZPUk1fQU5HTEVfVFlQRV9BTkdMRSk7CisgICAgZDNkOUF0dHJpYnMucHVzaF9iYWNrKEVHTF9Q
TEFURk9STV9BTkdMRV9UWVBFX0QzRDlfQU5HTEUpOworICAgIGQzZDlBdHRyaWJzLnB1c2hfYmFj
ayhFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfQU5HTEUpOworICAgIGQzZDlBdHRyaWJz
LnB1c2hfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfSEFSRFdBUkVfQU5HTEUp
OworICAgIGQzZDlBdHRyaWJzLnB1c2hfYmFjayhFR0xfTk9ORSk7CisKKyAgICBhdXRvICpkM2Q5
RmFjdG9yeSA9IG5ldyBBTkdMRU5hdGl2ZURpc3BsYXlGYWN0b3J5KAorICAgICAgICAiYW5nbGUt
ZDNkOSIsICJBTkdMRSBEM0Q5IERpc3BsYXkiLCBkM2Q5QXR0cmlicywgJm1FdmVudHMpOworICAg
IG1fbmF0aXZlRGlzcGxheUZhY3RvcnlSZWdpc3RyeS5yZWdpc3RlckZhY3RvcnkoZDNkOUZhY3Rv
cnkpOworCisgICAgc3RkOjp2ZWN0b3I8ZWdsdzo6RUdMQXR0cmliPiBkM2QxMTkzQXR0cmliczsK
KyAgICBkM2QxMTkzQXR0cmlicy5wdXNoX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfQU5H
TEUpOworICAgIGQzZDExOTNBdHRyaWJzLnB1c2hfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfVFlQ
RV9EM0QxMV9BTkdMRSk7CisgICAgZDNkMTE5M0F0dHJpYnMucHVzaF9iYWNrKEVHTF9QTEFURk9S
TV9BTkdMRV9ERVZJQ0VfVFlQRV9BTkdMRSk7CisgICAgZDNkMTE5M0F0dHJpYnMucHVzaF9iYWNr
KEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9IQVJEV0FSRV9BTkdMRSk7CisgICAgZDNk
MTE5M0F0dHJpYnMucHVzaF9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9NQVhfVkVSU0lPTl9NQUpP
Ul9BTkdMRSk7CisgICAgZDNkMTE5M0F0dHJpYnMucHVzaF9iYWNrKDkpOworICAgIGQzZDExOTNB
dHRyaWJzLnB1c2hfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfTUFYX1ZFUlNJT05fTUlOT1JfQU5H
TEUpOworICAgIGQzZDExOTNBdHRyaWJzLnB1c2hfYmFjaygzKTsKKyAgICBkM2QxMTkzQXR0cmli
cy5wdXNoX2JhY2soRUdMX05PTkUpOworCisgICAgYXV0byAqZDNkMTE5M0ZhY3RvcnkgPSBuZXcg
QU5HTEVOYXRpdmVEaXNwbGF5RmFjdG9yeSgKKyAgICAgICAgImFuZ2xlLWQzZDExLWZsOTMiLCAi
QU5HTEUgRDNEMTEgRkw5XzMgRGlzcGxheSIsIGQzZDExOTNBdHRyaWJzLCAmbUV2ZW50cyk7Cisg
ICAgbV9uYXRpdmVEaXNwbGF5RmFjdG9yeVJlZ2lzdHJ5LnJlZ2lzdGVyRmFjdG9yeShkM2QxMTkz
RmFjdG9yeSk7CisjZW5kaWYgLy8gKERFX09TID09IERFX09TX1dJTjMyKQorCisjaWYgZGVmaW5l
ZChBTkdMRV9VU0VfT1pPTkUpIHx8IChERV9PUyA9PSBERV9PU19BTkRST0lEKQorICAgIHN0ZDo6
dmVjdG9yPGVnbHc6OkVHTEF0dHJpYj4gZ2xlc0F0dHJpYnM7CisgICAgZ2xlc0F0dHJpYnMucHVz
aF9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0FOR0xFKTsKKyAgICBnbGVzQXR0cmlicy5w
dXNoX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEUpOworICAgIGds
ZXNBdHRyaWJzLnB1c2hfYmFjayhFR0xfTk9ORSk7CisKKyAgICBhdXRvICpnbGVzRmFjdG9yeSA9
IG5ldyBBTkdMRU5hdGl2ZURpc3BsYXlGYWN0b3J5KAorICAgICAgICAiYW5nbGUtZ2xlcyIsICJB
TkdMRSBPcGVuR0wgRVMgRGlzcGxheSIsIGdsZXNBdHRyaWJzLCAmbUV2ZW50cyk7CisgICAgbV9u
YXRpdmVEaXNwbGF5RmFjdG9yeVJlZ2lzdHJ5LnJlZ2lzdGVyRmFjdG9yeShnbGVzRmFjdG9yeSk7
CisjZW5kaWYKKworICAgIHN0ZDo6dmVjdG9yPGVnbHc6OkVHTEF0dHJpYj4gZ2xBdHRyaWJzOwor
ICAgIGdsQXR0cmlicy5wdXNoX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfQU5HTEUpOwor
ICAgIGdsQXR0cmlicy5wdXNoX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FO
R0xFKTsKKyAgICBnbEF0dHJpYnMucHVzaF9iYWNrKEVHTF9OT05FKTsKKworICAgIGF1dG8gKmds
RmFjdG9yeSA9IG5ldyBBTkdMRU5hdGl2ZURpc3BsYXlGYWN0b3J5KAorICAgICAgICAiYW5nbGUt
Z2wiLCAiQU5HTEUgT3BlbkdMIERpc3BsYXkiLCBnbEF0dHJpYnMsICZtRXZlbnRzKTsKKyAgICBt
X25hdGl2ZURpc3BsYXlGYWN0b3J5UmVnaXN0cnkucmVnaXN0ZXJGYWN0b3J5KGdsRmFjdG9yeSk7
CisKKyAgICBtX2NvbnRleHRGYWN0b3J5UmVnaXN0cnkucmVnaXN0ZXJGYWN0b3J5KG5ldyBlZ2x1
OjpHTENvbnRleHRGYWN0b3J5KG1fbmF0aXZlRGlzcGxheUZhY3RvcnlSZWdpc3RyeSkpOworCisg
ICAgLy8gQWRkIE51bGwgY29udGV4dCB0eXBlIGZvciB1c2UgaW4gZ2VuZXJhdGluZyBjYXNlIGxp
c3RzCisgICAgbV9jb250ZXh0RmFjdG9yeVJlZ2lzdHJ5LnJlZ2lzdGVyRmFjdG9yeShuZXcgbnVs
bDo6TnVsbEdMQ29udGV4dEZhY3RvcnkoKSk7Cit9CisKK0FOR0xFUGxhdGZvcm06On5BTkdMRVBs
YXRmb3JtKCkKK3sKK30KKworYm9vbCBBTkdMRVBsYXRmb3JtOjpwcm9jZXNzRXZlbnRzKCkKK3sK
KyAgICByZXR1cm4gIW1FdmVudHMucXVpdFNpZ25hbGVkKCk7Cit9CisKK30gLy8gdGN1CisKKy8v
IENyZWF0ZSBwbGF0Zm9ybQordGN1OjpQbGF0Zm9ybSAqY3JlYXRlUGxhdGZvcm0oKQoreworICAg
IHJldHVybiBuZXcgdGN1OjpBTkdMRVBsYXRmb3JtKCk7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L3RjdUFOR0xFUGxhdGZvcm0uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0
L3RjdUFOR0xFUGxhdGZvcm0uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L3RjdUFOR0xFUGxhdGZvcm0uaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDU2IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50
cyBRdWFsaXR5IFByb2dyYW0gVGVzdGVyIENvcmUKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBPcGVu
IFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl
LCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworCisjaWZuZGVmIFRDVV9BTkdMRV9XSU4zMl9QTEFU
Rk9STV9IXworI2RlZmluZSBUQ1VfQU5HTEVfV0lOMzJfUExBVEZPUk1fSF8KKworI2luY2x1ZGUg
InRjdURlZnMuaHBwIgorI2luY2x1ZGUgInRjdVBsYXRmb3JtLmhwcCIKKyNpbmNsdWRlICJnbHVQ
bGF0Zm9ybS5ocHAiCisKKyNpZm5kZWYgX0VHTFVQTEFURk9STV9IUFAKKyMgICBpbmNsdWRlICJl
Z2x1UGxhdGZvcm0uaHBwIgorI2VuZGlmCisKKyNpbmNsdWRlICJ0Y3VBTkdMRU5hdGl2ZURpc3Bs
YXlGYWN0b3J5LmgiCisKK25hbWVzcGFjZSB0Y3UKK3sKKworY2xhc3MgQU5HTEVQbGF0Zm9ybSA6
IHB1YmxpYyB0Y3U6OlBsYXRmb3JtLAorICAgICAgICAgICAgICAgICAgICAgIHByaXZhdGUgZ2x1
OjpQbGF0Zm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICBwcml2YXRlIGVnbHU6OlBsYXRmb3Jt
Cit7CisgIHB1YmxpYzoKKyAgICBBTkdMRVBsYXRmb3JtKCk7CisgICAgfkFOR0xFUGxhdGZvcm0o
KTsKKworICAgIGJvb2wgcHJvY2Vzc0V2ZW50cygpIG92ZXJyaWRlOworCisgICAgY29uc3QgZ2x1
OjpQbGF0Zm9ybSAmZ2V0R0xQbGF0Zm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0YXRp
Y19jYXN0PGNvbnN0IGdsdTo6UGxhdGZvcm0mPigqdGhpcyk7IH0KKyAgICBjb25zdCBlZ2x1OjpQ
bGF0Zm9ybSAmZ2V0RUdMUGxhdGZvcm0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGF0aWNf
Y2FzdDxjb25zdCBlZ2x1OjpQbGF0Zm9ybSY+KCp0aGlzKTsgfQorCisgIHByaXZhdGU6CisgICAg
RXZlbnRTdGF0ZSBtRXZlbnRzOworfTsKKworfSAvLyB0Y3UKKworI2VuZGlmIC8vIFRDVV9BTkdM
RV9XSU4zMl9QTEFURk9STV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2RlcXBfc3VwcG9ydC90Y3VSYW5kb21PcmRlckV4ZWN1dG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L3RjdVJhbmRv
bU9yZGVyRXhlY3V0b3IuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvdGN1UmFuZG9tT3JkZXJFeGVjdXRvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwyODIgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJh
d0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBUZXN0ZXIgQ29yZQorICogLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIENvcHlyaWdodCAyMDE0IFRoZSBBbmRy
b2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hl
IExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQor
ICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovLyohCisgKiBcZmlsZQorICogXGJyaWVm
IEV4ZWN1dG9yIHdoaWNoIGNhbiBydW4gcmFuZG9tbHkgYWNjZXNzZWQgdGVzdHMuCisgKi8vKi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKi8KKworI2luY2x1ZGUgInRjdVJhbmRvbU9yZGVyRXhlY3V0b3IuaCIKKworI2lu
Y2x1ZGUgInRjdUNvbW1hbmRMaW5lLmhwcCIKKyNpbmNsdWRlICJ0Y3VUZXN0TG9nLmhwcCIKKyNp
bmNsdWRlICJkZVN0cmluZ1V0aWwuaHBwIgorI2luY2x1ZGUgImRlQ2xvY2suaCIKKworI2luY2x1
ZGUgPGNzdGRpbz4KKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8ZnN0cmVhbT4KKwor
dXNpbmcgc3RkOjp2ZWN0b3I7Cit1c2luZyBzdGQ6OnN0cmluZzsKKworbmFtZXNwYWNlIHRjdQor
eworCitSYW5kb21PcmRlckV4ZWN1dG9yOjpSYW5kb21PcmRlckV4ZWN1dG9yKFRlc3RQYWNrYWdl
Um9vdCAmcm9vdCwgVGVzdENvbnRleHQgJnRlc3RDdHgpCisgICAgOiBtX3Rlc3RDdHgodGVzdEN0
eCksIG1faW5mbGF0ZXIodGVzdEN0eCkKK3sKKyAgICBtX25vZGVTdGFjay5wdXNoX2JhY2soTm9k
ZVN0YWNrRW50cnkoJnJvb3QpKTsKKyAgICByb290LmdldENoaWxkcmVuKG1fbm9kZVN0YWNrWzBd
LmNoaWxkcmVuKTsKK30KKworUmFuZG9tT3JkZXJFeGVjdXRvcjo6flJhbmRvbU9yZGVyRXhlY3V0
b3Iodm9pZCkKK3sKKyAgICBwcnVuZVN0YWNrKDEpOworfQorCit2b2lkIFJhbmRvbU9yZGVyRXhl
Y3V0b3I6OnBydW5lU3RhY2soc2l6ZV90IG5ld1N0YWNrU2l6ZSkKK3sKKyAgICAvLyBcbm90ZSBS
b290IGlzIG5vdCBtYW5hZ2VkIGJ5IHVzCisgICAgREVfQVNTRVJUKGRlOjppblJhbmdlKG5ld1N0
YWNrU2l6ZSwgc2l6ZV90KDEpLCBtX25vZGVTdGFjay5zaXplKCkpKTsKKworICAgIHdoaWxlICht
X25vZGVTdGFjay5zaXplKCkgPiBuZXdTdGFja1NpemUpCisgICAgeworICAgICAgICBOb2RlU3Rh
Y2tFbnRyeSAmY3VyRW50cnkgPSBtX25vZGVTdGFjay5iYWNrKCk7CisgICAgICAgIGNvbnN0IGJv
b2wgaXNQa2cgPSBjdXJFbnRyeS5ub2RlLT5nZXROb2RlVHlwZSgpID09IE5PREVUWVBFX1BBQ0tB
R0U7CisKKyAgICAgICAgREVfQVNTRVJUKChtX25vZGVTdGFjay5zaXplKCkgPT0gMikgPT0gaXNQ
a2cpOworCisgICAgICAgIGlmIChjdXJFbnRyeS5ub2RlKSAgLy8gSnVzdCBpbiBjYXNlIHdlIGFy
ZSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsZWFudXAgcGF0aCBhZnRlciBw
YXJ0aWFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJ1bmUKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKGN1ckVudHJ5Lm5vZGUtPmdldE5vZGVUeXBlKCkgPT0gTk9ERVRZUEVf
R1JPVVApCisgICAgICAgICAgICAgICAgbV9pbmZsYXRlci5sZWF2ZUdyb3VwTm9kZShzdGF0aWNf
Y2FzdDxUZXN0Q2FzZUdyb3VwICo+KGN1ckVudHJ5Lm5vZGUpKTsKKyAgICAgICAgICAgIGVsc2Ug
aWYgKGN1ckVudHJ5Lm5vZGUtPmdldE5vZGVUeXBlKCkgPT0gTk9ERVRZUEVfUEFDS0FHRSkKKyAg
ICAgICAgICAgICAgICBtX2luZmxhdGVyLmxlYXZlVGVzdFBhY2thZ2Uoc3RhdGljX2Nhc3Q8VGVz
dFBhY2thZ2UgKj4oY3VyRW50cnkubm9kZSkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIERFX0FTU0VSVChjdXJFbnRyeS5jaGlsZHJlbi5lbXB0eSgpKTsKKworICAgICAgICAg
ICAgY3VyRW50cnkubm9kZSA9IERFX05VTEw7CisgICAgICAgICAgICBjdXJFbnRyeS5jaGlsZHJl
bi5jbGVhcigpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGlzUGtnKQorICAgICAgICAgICAg
bV9jYXNlRXhlY3V0b3IuY2xlYXIoKTsKKworICAgICAgICBtX25vZGVTdGFjay5wb3BfYmFjaygp
OworICAgIH0KK30KKworc3RhdGljIFRlc3ROb2RlICpmaW5kTm9kZUJ5TmFtZSh2ZWN0b3I8VGVz
dE5vZGUgKj4gJm5vZGVzLCBjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkKK3sKKyAgICBmb3IgKHZl
Y3RvcjxUZXN0Tm9kZSAqPjo6Y29uc3RfaXRlcmF0b3Igbm9kZSA9IG5vZGVzLmJlZ2luKCk7IG5v
ZGUgIT0gbm9kZXMuZW5kKCk7ICsrbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChuYW1lID09ICgq
bm9kZSktPmdldE5hbWUoKSkKKyAgICAgICAgICAgIHJldHVybiAqbm9kZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gREVfTlVMTDsKK30KKworVGVzdENhc2UgKlJhbmRvbU9yZGVyRXhlY3V0b3I6OnNl
ZWtUb0Nhc2UoY29uc3Qgc3RyaW5nICZwYXRoKQoreworICAgIGNvbnN0IHZlY3RvcjxzdHJpbmc+
IGNvbXBvbmVudHMgPSBkZTo6c3BsaXRTdHJpbmcocGF0aCwgJy4nKTsKKyAgICBzaXplX3QgY29t
cE5keDsKKworICAgIERFX0FTU0VSVCghbV9ub2RlU3RhY2suZW1wdHkoKSAmJiBtX25vZGVTdGFj
ay5mcm9udCgpLm5vZGUtPmdldE5vZGVUeXBlKCkgPT0gTk9ERVRZUEVfUk9PVCk7CisKKyAgICBm
b3IgKGNvbXBOZHggPSAwOyBjb21wTmR4IDwgY29tcG9uZW50cy5zaXplKCk7IGNvbXBOZHgrKykK
KyAgICB7CisgICAgICAgIGNvbnN0IHNpemVfdCBzdGFja1BvcyA9IGNvbXBOZHggKyAxOworCisg
ICAgICAgIGlmIChzdGFja1BvcyA+PSBtX25vZGVTdGFjay5zaXplKCkpCisgICAgICAgICAgICBi
cmVhazsgIC8vIFN0YWNrIGVuZAorICAgICAgICBlbHNlIGlmIChjb21wb25lbnRzW2NvbXBOZHhd
ICE9IG1fbm9kZVN0YWNrW3N0YWNrUG9zXS5ub2RlLT5nZXROYW1lKCkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIC8vIEN1cnJlbnQgc3RhY2sgZG9lc24ndCBtYXRjaCBhbnkgbW9yZSwgcHJ1bmUu
CisgICAgICAgICAgICBwcnVuZVN0YWNrKHN0YWNrUG9zKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgfQorCisgICAgREVfQVNTRVJUKG1fbm9kZVN0YWNrLnNpemUoKSA9PSBj
b21wTmR4ICsgMSk7CisKKyAgICBmb3IgKDsgY29tcE5keCA8IGNvbXBvbmVudHMuc2l6ZSgpOyBj
b21wTmR4KyspCisgICAgeworICAgICAgICBjb25zdCBzaXplX3QgcGFyZW50U3RhY2tQb3MgPSBj
b21wTmR4OworICAgICAgICBUZXN0Tm9kZSAqY29uc3QgY3VyTm9kZSA9CisgICAgICAgICAgICBm
aW5kTm9kZUJ5TmFtZShtX25vZGVTdGFja1twYXJlbnRTdGFja1Bvc10uY2hpbGRyZW4sIGNvbXBv
bmVudHNbY29tcE5keF0pOworCisgICAgICAgIGlmICghY3VyTm9kZSkKKyAgICAgICAgICAgIHRo
cm93IEV4Y2VwdGlvbihzdHJpbmcoIlRlc3QgaGllcmFyY2h5IG5vZGUgbm90IGZvdW5kOiAiKSAr
IHBhdGgpOworCisgICAgICAgIG1fbm9kZVN0YWNrLnB1c2hfYmFjayhOb2RlU3RhY2tFbnRyeShj
dXJOb2RlKSk7CisKKyAgICAgICAgaWYgKGN1ck5vZGUtPmdldE5vZGVUeXBlKCkgPT0gTk9ERVRZ
UEVfUEFDS0FHRSkKKyAgICAgICAgeworICAgICAgICAgICAgVGVzdFBhY2thZ2UgKmNvbnN0IHRl
c3RQYWNrYWdlID0gc3RhdGljX2Nhc3Q8VGVzdFBhY2thZ2UgKj4oY3VyTm9kZSk7CisKKyAgICAg
ICAgICAgIG1faW5mbGF0ZXIuZW50ZXJUZXN0UGFja2FnZSh0ZXN0UGFja2FnZSwgbV9ub2RlU3Rh
Y2suYmFjaygpLmNoaWxkcmVuKTsKKyAgICAgICAgICAgIERFX0FTU0VSVCghbV9jYXNlRXhlY3V0
b3IpOworICAgICAgICAgICAgbV9jYXNlRXhlY3V0b3IgPSBkZTo6TW92ZVB0cjxUZXN0Q2FzZUV4
ZWN1dG9yPih0ZXN0UGFja2FnZS0+Y3JlYXRlRXhlY3V0b3IoKSk7CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZSBpZiAoY3VyTm9kZS0+Z2V0Tm9kZVR5cGUoKSA9PSBOT0RFVFlQRV9HUk9VUCkKKyAg
ICAgICAgICAgIG1faW5mbGF0ZXIuZW50ZXJHcm91cE5vZGUoc3RhdGljX2Nhc3Q8VGVzdENhc2VH
cm91cCAqPihjdXJOb2RlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9ub2RlU3RhY2suYmFjaygpLmNoaWxkcmVuKTsKKyAgICAgICAgZWxzZSBpZiAoY29tcE5keCAr
IDEgIT0gY29tcG9uZW50cy5zaXplKCkpCisgICAgICAgICAgICB0aHJvdyBFeGNlcHRpb24oc3Ry
aW5nKCJJbnZhbGlkIHRlc3QgaGllcmFyY2h5IHBhdGg6ICIpICsgcGF0aCk7CisgICAgfQorCisg
ICAgREVfQVNTRVJUKG1fbm9kZVN0YWNrLnNpemUoKSA9PSBjb21wb25lbnRzLnNpemUoKSArIDEp
OworCisgICAgaWYgKGlzVGVzdE5vZGVUeXBlRXhlY3V0YWJsZShtX25vZGVTdGFjay5iYWNrKCku
bm9kZS0+Z2V0Tm9kZVR5cGUoKSkpCisgICAgICAgIHJldHVybiBkeW5hbWljX2Nhc3Q8VGVzdENh
c2UgKj4obV9ub2RlU3RhY2suYmFjaygpLm5vZGUpOworICAgIGVsc2UKKyAgICAgICAgdGhyb3cg
RXhjZXB0aW9uKHN0cmluZygiTm90IGEgdGVzdCBjYXNlOiAiKSArIHBhdGgpOworfQorCitzdGF0
aWMgcXBUZXN0Q2FzZVR5cGUgbm9kZVR5cGVUb1Rlc3RDYXNlVHlwZShUZXN0Tm9kZVR5cGUgbm9k
ZVR5cGUpCit7CisgICAgc3dpdGNoIChub2RlVHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgTk9E
RVRZUEVfU0VMRl9WQUxJREFURToKKyAgICAgICAgICAgIHJldHVybiBRUF9URVNUX0NBU0VfVFlQ
RV9TRUxGX1ZBTElEQVRFOworICAgICAgICBjYXNlIE5PREVUWVBFX1BFUkZPUk1BTkNFOgorICAg
ICAgICAgICAgcmV0dXJuIFFQX1RFU1RfQ0FTRV9UWVBFX1BFUkZPUk1BTkNFOworICAgICAgICBj
YXNlIE5PREVUWVBFX0NBUEFCSUxJVFk6CisgICAgICAgICAgICByZXR1cm4gUVBfVEVTVF9DQVNF
X1RZUEVfQ0FQQUJJTElUWTsKKyAgICAgICAgY2FzZSBOT0RFVFlQRV9BQ0NVUkFDWToKKyAgICAg
ICAgICAgIHJldHVybiBRUF9URVNUX0NBU0VfVFlQRV9BQ0NVUkFDWTsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIERFX0FTU0VSVChmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gUVBf
VEVTVF9DQVNFX1RZUEVfTEFTVDsKKyAgICB9Cit9CisKK1Rlc3RTdGF0dXMgUmFuZG9tT3JkZXJF
eGVjdXRvcjo6ZXhlY3V0ZShjb25zdCBzdGQ6OnN0cmluZyAmY2FzZVBhdGgpCit7CisgICAgVGVz
dENhc2UgKmNvbnN0IHRlc3RDYXNlID0gc2Vla1RvQ2FzZShjYXNlUGF0aCk7CisgICAgVGVzdExv
ZyAmbG9nID0gbV90ZXN0Q3R4LmdldExvZygpOworICAgIGNvbnN0IHFwVGVzdENhc2VUeXBlIGNh
c2VUeXBlID0gbm9kZVR5cGVUb1Rlc3RDYXNlVHlwZSh0ZXN0Q2FzZS0+Z2V0Tm9kZVR5cGUoKSk7
CisKKyAgICBtX3Rlc3RDdHguc2V0VGVybWluYXRlQWZ0ZXIoZmFsc2UpOworICAgIGxvZy5zdGFy
dENhc2UoY2FzZVBhdGguY19zdHIoKSwgY2FzZVR5cGUpOworCisgICAgeworICAgICAgICBjb25z
dCBUZXN0U3RhdHVzIHJlc3VsdCA9IGV4ZWN1dGVJbm5lcih0ZXN0Q2FzZSwgY2FzZVBhdGgpOwor
ICAgICAgICBsb2cuZW5kQ2FzZShyZXN1bHQuZ2V0Q29kZSgpLCByZXN1bHQuZ2V0RGVzY3JpcHRp
b24oKS5jX3N0cigpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9Cit9CisKK3RjdTo6
VGVzdFN0YXR1cyBSYW5kb21PcmRlckV4ZWN1dG9yOjpleGVjdXRlSW5uZXIoVGVzdENhc2UgKnRl
c3RDYXNlLCBjb25zdCBzdGQ6OnN0cmluZyAmY2FzZVBhdGgpCit7CisgICAgVGVzdExvZyAmbG9n
ID0gbV90ZXN0Q3R4LmdldExvZygpOworICAgIGNvbnN0IGRlVWludDY0IHRlc3RTdGFydFRpbWUg
PSBkZUdldE1pY3Jvc2Vjb25kcygpOworCisgICAgbV90ZXN0Q3R4LnNldFRlc3RSZXN1bHQoUVBf
VEVTVF9SRVNVTFRfTEFTVCwgIiIpOworCisgICAgLy8gSW5pdGlhbGl6ZSwgd2lsbCByZXR1cm4g
aW1tZWRpYXRlbHkgaWYgZmFpbHMKKyAgICB0cnkKKyAgICB7CisgICAgICAgIG1fY2FzZUV4ZWN1
dG9yLT5pbml0KHRlc3RDYXNlLCBjYXNlUGF0aCk7CisgICAgfQorICAgIGNhdGNoIChjb25zdCBz
dGQ6OmJhZF9hbGxvYyAmKQorICAgIHsKKyAgICAgICAgbV90ZXN0Q3R4LnNldFRlcm1pbmF0ZUFm
dGVyKHRydWUpOworICAgICAgICByZXR1cm4gVGVzdFN0YXR1cyhRUF9URVNUX1JFU1VMVF9SRVNP
VVJDRV9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBhbGxvY2F0
ZSBtZW1vcnkgaW4gdGVzdCBjYXNlIGluaXQiKTsKKyAgICB9CisgICAgY2F0Y2ggKGNvbnN0IFRl
c3RFeGNlcHRpb24gJmUpCisgICAgeworICAgICAgICBERV9BU1NFUlQoZS5nZXRUZXN0UmVzdWx0
KCkgIT0gUVBfVEVTVF9SRVNVTFRfTEFTVCk7CisgICAgICAgIG1fdGVzdEN0eC5zZXRUZXJtaW5h
dGVBZnRlcihlLmlzRmF0YWwoKSk7CisgICAgICAgIGxvZyA8PCBlOworICAgICAgICByZXR1cm4g
VGVzdFN0YXR1cyhlLmdldFRlc3RSZXN1bHQoKSwgZS5nZXRNZXNzYWdlKCkpOworICAgIH0KKyAg
ICBjYXRjaCAoY29uc3QgRXhjZXB0aW9uICZlKQorICAgIHsKKyAgICAgICAgbG9nIDw8IGU7Cisg
ICAgICAgIHJldHVybiBUZXN0U3RhdHVzKFFQX1RFU1RfUkVTVUxUX0ZBSUwsIGUuZ2V0TWVzc2Fn
ZSgpKTsKKyAgICB9CisKKyAgICAvLyBFeGVjdXRlCisgICAgZm9yICg7OykKKyAgICB7CisgICAg
ICAgIFRlc3RDYXNlOjpJdGVyYXRlUmVzdWx0IGl0ZXJhdGVSZXN1bHQgPSBUZXN0Q2FzZTo6U1RP
UDsKKworICAgICAgICBtX3Rlc3RDdHgudG91Y2hXYXRjaGRvZygpOworCisgICAgICAgIHRyeQor
ICAgICAgICB7CisgICAgICAgICAgICBpdGVyYXRlUmVzdWx0ID0gbV9jYXNlRXhlY3V0b3ItPml0
ZXJhdGUodGVzdENhc2UpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChjb25zdCBzdGQ6OmJh
ZF9hbGxvYyAmKQorICAgICAgICB7CisgICAgICAgICAgICBtX3Rlc3RDdHguc2V0VGVzdFJlc3Vs
dChRUF9URVNUX1JFU1VMVF9SRVNPVVJDRV9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJGYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGR1cmluZyB0ZXN0ICIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGVjdXRpb24iKTsKKyAgICAgICAg
fQorICAgICAgICBjYXRjaCAoY29uc3QgVGVzdEV4Y2VwdGlvbiAmZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgbG9nIDw8IGU7CisgICAgICAgICAgICBtX3Rlc3RDdHguc2V0VGVzdFJlc3VsdChl
LmdldFRlc3RSZXN1bHQoKSwgZS5nZXRNZXNzYWdlKCkpOworICAgICAgICAgICAgbV90ZXN0Q3R4
LnNldFRlcm1pbmF0ZUFmdGVyKGUuaXNGYXRhbCgpKTsKKyAgICAgICAgfQorICAgICAgICBjYXRj
aCAoY29uc3QgRXhjZXB0aW9uICZlKQorICAgICAgICB7CisgICAgICAgICAgICBsb2cgPDwgZTsK
KyAgICAgICAgICAgIG1fdGVzdEN0eC5zZXRUZXN0UmVzdWx0KFFQX1RFU1RfUkVTVUxUX0ZBSUws
IGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpdGVyYXRlUmVzdWx0
ID09IFRlc3RDYXNlOjpTVE9QKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgREVf
QVNTRVJUKG1fdGVzdEN0eC5nZXRUZXN0UmVzdWx0KCkgIT0gUVBfVEVTVF9SRVNVTFRfTEFTVCk7
CisKKyAgICBpZiAobV90ZXN0Q3R4LmdldFRlc3RSZXN1bHQoKSA9PSBRUF9URVNUX1JFU1VMVF9S
RVNPVVJDRV9FUlJPUikKKyAgICAgICAgbV90ZXN0Q3R4LnNldFRlcm1pbmF0ZUFmdGVyKHRydWUp
OworCisgICAgLy8gRGUtaW5pdGlhbGl6ZQorICAgIHRyeQorICAgIHsKKyAgICAgICAgbV9jYXNl
RXhlY3V0b3ItPmRlaW5pdCh0ZXN0Q2FzZSk7CisgICAgfQorICAgIGNhdGNoIChjb25zdCB0Y3U6
OkV4Y2VwdGlvbiAmZSkKKyAgICB7CisgICAgICAgIGxvZyA8PCBlIDw8IFRlc3RMb2c6Ok1lc3Nh
Z2UgPDwgIkVycm9yIGluIHRlc3QgY2FzZSBkZWluaXQsIHRlc3QgcHJvZ3JhbSAiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpbGwgdGVybWluYXRlLiIKKyAgICAg
ICAgICAgIDw8IFRlc3RMb2c6OkVuZE1lc3NhZ2U7CisgICAgICAgIG1fdGVzdEN0eC5zZXRUZXJt
aW5hdGVBZnRlcih0cnVlKTsKKyAgICB9CisKKyAgICBpZiAobV90ZXN0Q3R4LmdldFdhdGNoRG9n
KCkpCisgICAgICAgIHFwV2F0Y2hEb2dfcmVzZXQobV90ZXN0Q3R4LmdldFdhdGNoRG9nKCkpOwor
CisgICAgeworICAgICAgICBjb25zdCBUZXN0U3RhdHVzIHJlc3VsdCA9CisgICAgICAgICAgICBU
ZXN0U3RhdHVzKG1fdGVzdEN0eC5nZXRUZXN0UmVzdWx0KCksIG1fdGVzdEN0eC5nZXRUZXN0UmVz
dWx0RGVzYygpKTsKKyAgICAgICAgbV90ZXN0Q3R4LnNldFRlc3RSZXN1bHQoUVBfVEVTVF9SRVNV
TFRfTEFTVCwgIiIpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KK30KKworfSAgLy8g
dGN1CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0
L3RjdVJhbmRvbU9yZGVyRXhlY3V0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L3RjdVJhbmRvbU9yZGVyRXhlY3V0b3IuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9z
dXBwb3J0L3RjdVJhbmRvbU9yZGVyRXhlY3V0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDY2IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dy
YW0gVGVzdGVyIENvcmUKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0
CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorICoKKyAqLyAvKiEKKyAqIFxmaWxlCisgKiBcYnJpZWYgR2VuZXJpYyBtYWluKCkuCisgKi8g
LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSovCisKKyNpZm5kZWYgVENVX1JBTkRPTV9PUkRFUl9FWEVDVVRPUl9IXwor
I2RlZmluZSBUQ1VfUkFORE9NX09SREVSX0VYRUNVVE9SX0hfCisKKyNpbmNsdWRlICJ0Y3VUZXN0
SGllcmFyY2h5SXRlcmF0b3IuaHBwIgorI2luY2x1ZGUgImRlVW5pcXVlUHRyLmhwcCIKKworbmFt
ZXNwYWNlIHRjdQoreworCitjbGFzcyBSYW5kb21PcmRlckV4ZWN1dG9yCit7CisgICBwdWJsaWM6
CisgICAgUmFuZG9tT3JkZXJFeGVjdXRvcihUZXN0UGFja2FnZVJvb3QgJnJvb3QsIFRlc3RDb250
ZXh0ICZ0ZXN0Q3R4KTsKKyAgICB+UmFuZG9tT3JkZXJFeGVjdXRvcih2b2lkKTsKKworICAgIFRl
c3RTdGF0dXMgZXhlY3V0ZShjb25zdCBzdGQ6OnN0cmluZyAmcGF0aCk7CisKKyAgIHByaXZhdGU6
CisgICAgdm9pZCBwcnVuZVN0YWNrKHNpemVfdCBuZXdTdGFja1NpemUpOworICAgIFRlc3RDYXNl
ICpzZWVrVG9DYXNlKGNvbnN0IHN0ZDo6c3RyaW5nICZwYXRoKTsKKworICAgIFRlc3RTdGF0dXMg
ZXhlY3V0ZUlubmVyKFRlc3RDYXNlICp0ZXN0Q2FzZSwgY29uc3Qgc3RkOjpzdHJpbmcgJmNhc2VQ
YXRoKTsKKworICAgIHN0cnVjdCBOb2RlU3RhY2tFbnRyeQorICAgIHsKKyAgICAgICAgVGVzdE5v
ZGUgKm5vZGU7CisgICAgICAgIHN0ZDo6dmVjdG9yPFRlc3ROb2RlICo+IGNoaWxkcmVuOworCisg
ICAgICAgIE5vZGVTdGFja0VudHJ5KHZvaWQpIDogbm9kZShERV9OVUxMKSB7fQorICAgICAgICBO
b2RlU3RhY2tFbnRyeShUZXN0Tm9kZSAqbm9kZV8pIDogbm9kZShub2RlXykge30KKyAgICB9Owor
CisgICAgVGVzdENvbnRleHQgJm1fdGVzdEN0eDsKKworICAgIERlZmF1bHRIaWVyYXJjaHlJbmZs
YXRlciBtX2luZmxhdGVyOworICAgIHN0ZDo6dmVjdG9yPE5vZGVTdGFja0VudHJ5PiBtX25vZGVT
dGFjazsKKworICAgIGRlOjpNb3ZlUHRyPFRlc3RDYXNlRXhlY3V0b3I+IG1fY2FzZUV4ZWN1dG9y
OworfTsKKworfSAgLy8gdGN1CisKKyNlbmRpZiAgLy8gVENVX1JBTkRPTV9PUkRFUl9FWEVDVVRP
Ul9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9F
R0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMQ29udGV4dENvbXBhdGliaWxpdHlU
ZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvZWdsX3Rlc3RzL0VHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwyODcgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBFR0xDb250ZXh0Q29tcGF0
aWJpbGl0eVRlc3QuY3BwOgorLy8gICBUaGlzIHRlc3Qgd2lsbCB0cnkgdG8gdXNlIGFsbCBjb21i
aW5hdGlvbnMgb2YgY29udGV4dCBjb25maWdzIGFuZAorLy8gICBzdXJmYWNlIGNvbmZpZ3MuIElm
IHRoZSBjb25maWdzIGFyZSBjb21wYXRpYmxlLCBpdCBjaGVja3MgdGhhdCBzaW1wbGUKKy8vICAg
cmVuZGVyaW5nIHdvcmtzLCBvdGhlcndpc2UgaXQgY2hlY2tzIGFuIGVycm9yIGlzIGdlbmVyYXRl
ZCBvbmUgTWFrZUN1cnJlbnQuCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKworI2luY2x1ZGUg
PHZlY3Rvcj4KKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgor
CisjaW5jbHVkZSAiT1NXaW5kb3cuaCIKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5o
IgorI2luY2x1ZGUgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9jb25maWdzLmgiCisKK3VzaW5nIG5h
bWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNlCit7CisKK2NvbnN0IEVHTGludCBjb250ZXh0QXR0
cmlic1tdID0KK3sKKyAgICBFR0xfQ09OVEVYVF9DTElFTlRfVkVSU0lPTiwgMiwKKyAgICBFR0xf
Tk9ORQorfTsKKworfQorCitjbGFzcyBFR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3QgOiBwdWJs
aWMgQU5HTEVUZXN0Cit7CisgIHB1YmxpYzoKKyAgICBFR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRl
c3QoKQorICAgICAgOiBtRGlzcGxheSgwKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIFNldFVw
KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFBGTkVHTEdFVFBMQVRGT1JNRElTUExBWUVYVFBS
T0MgZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUID0gcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xHRVRQ
TEFURk9STURJU1BMQVlFWFRQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZWdsR2V0UGxhdGZvcm1E
aXNwbGF5RVhUIikpOworICAgICAgICBBU1NFUlRfVFJVRShlZ2xHZXRQbGF0Zm9ybURpc3BsYXlF
WFQgIT0gbnVsbHB0cik7CisKKyAgICAgICAgRUdMaW50IGRpc3BhdHRyc1tdID0KKyAgICAgICAg
eworICAgICAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfQU5HTEUsIEdldFBhcmFtKCku
Z2V0UmVuZGVyZXIoKSwKKyAgICAgICAgICAgIEVHTF9OT05FCisgICAgICAgIH07CisgICAgICAg
IG1EaXNwbGF5ID0gZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUKAorICAgICAgICAgICAgRUdMX1BM
QVRGT1JNX0FOR0xFX0FOR0xFLCByZWludGVycHJldF9jYXN0PHZvaWQgKj4oRUdMX0RFRkFVTFRf
RElTUExBWSksIGRpc3BhdHRycyk7CisgICAgICAgIEFTU0VSVF9UUlVFKG1EaXNwbGF5ICE9IEVH
TF9OT19ESVNQTEFZKTsKKworICAgICAgICBBU1NFUlRfVFJVRShlZ2xJbml0aWFsaXplKG1EaXNw
bGF5LCBudWxscHRyLCBudWxscHRyKSA9PSBFR0xfVFJVRSk7CisKKyAgICAgICAgaW50IG5Db25m
aWdzID0gMDsKKyAgICAgICAgQVNTRVJUX1RSVUUoZWdsR2V0Q29uZmlncyhtRGlzcGxheSwgbnVs
bHB0ciwgMCwgJm5Db25maWdzKSA9PSBFR0xfVFJVRSk7CisgICAgICAgIEFTU0VSVF9UUlVFKG5D
b25maWdzICE9IDApOworCisgICAgICAgIGludCBuUmV0dXJuZWRDb25maWdzID0gMDsKKyAgICAg
ICAgbUNvbmZpZ3MucmVzaXplKG5Db25maWdzKTsKKyAgICAgICAgQVNTRVJUX1RSVUUoZWdsR2V0
Q29uZmlncyhtRGlzcGxheSwgbUNvbmZpZ3MuZGF0YSgpLCBuQ29uZmlncywgJm5SZXR1cm5lZENv
bmZpZ3MpID09IEVHTF9UUlVFKTsKKyAgICAgICAgQVNTRVJUX1RSVUUobkNvbmZpZ3MgPT0gblJl
dHVybmVkQ29uZmlncyk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBlZ2xNYWtlQ3VycmVudChtRGlzcGxheSwgRUdMX05PX1NVUkZBQ0UsIEVH
TF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7CisgICAgICAgIGVnbFRlcm1pbmF0ZShtRGlz
cGxheSk7CisgICAgfTsKKworICBwcm90ZWN0ZWQ6CisgICAgYm9vbCBhcmVDb25maWdzQ29tcGF0
aWJsZShFR0xDb25maWcgYzEsIEVHTENvbmZpZyBjMiwgRUdMaW50IHN1cmZhY2VCaXQpCisgICAg
eworICAgICAgICBFR0xpbnQgY29sb3JCdWZmZXJUeXBlMSwgY29sb3JCdWZmZXJUeXBlMjsKKyAg
ICAgICAgRUdMaW50IHJlZDEsIHJlZDIsIGdyZWVuMSwgZ3JlZW4yLCBibHVlMSwgYmx1ZTIsIGFs
cGhhMSwgYWxwaGEyOworICAgICAgICBFR0xpbnQgZGVwdGgxLCBkZXB0aDIsIHN0ZW5jaWwxLCBz
dGVuY2lsMjsKKyAgICAgICAgRUdMaW50IHN1cmZhY2VUeXBlMSwgc3VyZmFjZVR5cGUyOworCisg
ICAgICAgIGVnbEdldENvbmZpZ0F0dHJpYihtRGlzcGxheSwgYzEsIEVHTF9DT0xPUl9CVUZGRVJf
VFlQRSwgJmNvbG9yQnVmZmVyVHlwZTEpOworICAgICAgICBlZ2xHZXRDb25maWdBdHRyaWIobURp
c3BsYXksIGMyLCBFR0xfQ09MT1JfQlVGRkVSX1RZUEUsICZjb2xvckJ1ZmZlclR5cGUyKTsKKwor
ICAgICAgICBlZ2xHZXRDb25maWdBdHRyaWIobURpc3BsYXksIGMxLCBFR0xfUkVEX1NJWkUsICZy
ZWQxKTsKKyAgICAgICAgZWdsR2V0Q29uZmlnQXR0cmliKG1EaXNwbGF5LCBjMiwgRUdMX1JFRF9T
SVpFLCAmcmVkMik7CisgICAgICAgIGVnbEdldENvbmZpZ0F0dHJpYihtRGlzcGxheSwgYzEsIEVH
TF9HUkVFTl9TSVpFLCAmZ3JlZW4xKTsKKyAgICAgICAgZWdsR2V0Q29uZmlnQXR0cmliKG1EaXNw
bGF5LCBjMiwgRUdMX0dSRUVOX1NJWkUsICZncmVlbjIpOworICAgICAgICBlZ2xHZXRDb25maWdB
dHRyaWIobURpc3BsYXksIGMxLCBFR0xfQkxVRV9TSVpFLCAmYmx1ZTEpOworICAgICAgICBlZ2xH
ZXRDb25maWdBdHRyaWIobURpc3BsYXksIGMyLCBFR0xfQkxVRV9TSVpFLCAmYmx1ZTIpOworICAg
ICAgICBlZ2xHZXRDb25maWdBdHRyaWIobURpc3BsYXksIGMxLCBFR0xfQUxQSEFfU0laRSwgJmFs
cGhhMSk7CisgICAgICAgIGVnbEdldENvbmZpZ0F0dHJpYihtRGlzcGxheSwgYzIsIEVHTF9BTFBI
QV9TSVpFLCAmYWxwaGEyKTsKKworICAgICAgICBlZ2xHZXRDb25maWdBdHRyaWIobURpc3BsYXks
IGMxLCBFR0xfREVQVEhfU0laRSwgJmRlcHRoMSk7CisgICAgICAgIGVnbEdldENvbmZpZ0F0dHJp
YihtRGlzcGxheSwgYzIsIEVHTF9ERVBUSF9TSVpFLCAmZGVwdGgyKTsKKyAgICAgICAgZWdsR2V0
Q29uZmlnQXR0cmliKG1EaXNwbGF5LCBjMSwgRUdMX1NURU5DSUxfU0laRSwgJnN0ZW5jaWwxKTsK
KyAgICAgICAgZWdsR2V0Q29uZmlnQXR0cmliKG1EaXNwbGF5LCBjMiwgRUdMX1NURU5DSUxfU0la
RSwgJnN0ZW5jaWwyKTsKKworICAgICAgICBlZ2xHZXRDb25maWdBdHRyaWIobURpc3BsYXksIGMx
LCBFR0xfU1VSRkFDRV9UWVBFLCAmc3VyZmFjZVR5cGUxKTsKKyAgICAgICAgZWdsR2V0Q29uZmln
QXR0cmliKG1EaXNwbGF5LCBjMiwgRUdMX1NVUkZBQ0VfVFlQRSwgJnN1cmZhY2VUeXBlMik7CisK
KyAgICAgICAgcmV0dXJuIGNvbG9yQnVmZmVyVHlwZTEgPT0gY29sb3JCdWZmZXJUeXBlMiAmJgor
ICAgICAgICAgICAgICAgcmVkMSA9PSByZWQyICYmIGdyZWVuMSA9PSBncmVlbjIgJiYgYmx1ZTEg
PT0gYmx1ZTIgJiYgYWxwaGExID09IGFscGhhMiAmJgorICAgICAgICAgICAgICAgZGVwdGgxID09
IGRlcHRoMiAmJiBzdGVuY2lsMSA9PSBzdGVuY2lsMiAmJgorICAgICAgICAgICAgICAgKHN1cmZh
Y2VUeXBlMSAmIHN1cmZhY2VCaXQpICE9IDAgJiYKKyAgICAgICAgICAgICAgIChzdXJmYWNlVHlw
ZTIgJiBzdXJmYWNlQml0KSAhPSAwOworICAgIH0KKworICAgIHZvaWQgdGVzdFdpbmRvd0NvbXBh
dGliaWxpdHkoRUdMQ29uZmlnIHdpbmRvd0NvbmZpZywgRUdMQ29uZmlnIGNvbnRleHRDb25maWcs
IGJvb2wgY29tcGF0aWJsZSkgY29uc3QKKyAgICB7CisgICAgICAgIE9TV2luZG93ICpvc1dpbmRv
dyA9IENyZWF0ZU9TV2luZG93KCk7CisgICAgICAgIEFTU0VSVF9UUlVFKG9zV2luZG93ICE9IG51
bGxwdHIpOworICAgICAgICBvc1dpbmRvdy0+aW5pdGlhbGl6ZSgiRUdMQ29udGV4dENvbXBhdGli
aWxpdHlUZXN0IiwgNTAwLCA1MDApOworICAgICAgICBvc1dpbmRvdy0+c2V0VmlzaWJsZSh0cnVl
KTsKKworICAgICAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KG1EaXNw
bGF5LCBjb250ZXh0Q29uZmlnLCBFR0xfTk9fQ09OVEVYVCwgY29udGV4dEF0dHJpYnMpOworICAg
ICAgICBBU1NFUlRfVFJVRShjb250ZXh0ICE9IEVHTF9OT19DT05URVhUKTsKKworICAgICAgICBF
R0xTdXJmYWNlIHdpbmRvdyA9IGVnbENyZWF0ZVdpbmRvd1N1cmZhY2UobURpc3BsYXksIHdpbmRv
d0NvbmZpZywgb3NXaW5kb3ctPmdldE5hdGl2ZVdpbmRvdygpLCBudWxscHRyKTsKKyAgICAgICAg
QVNTRVJUX0VHTF9TVUNDRVNTKCk7CisKKyAgICAgICAgaWYgKGNvbXBhdGlibGUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHRlc3RDbGVhclN1cmZhY2Uod2luZG93LCBjb250ZXh0KTsKKyAgICAg
ICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHRlc3RNYWtlQ3VycmVu
dEZhaWxzKHdpbmRvdywgY29udGV4dCk7CisgICAgICAgIH0KKworICAgICAgICBlZ2xEZXN0cm95
U3VyZmFjZShtRGlzcGxheSwgd2luZG93KTsKKyAgICAgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7
CisKKyAgICAgICAgZWdsRGVzdHJveUNvbnRleHQobURpc3BsYXksIGNvbnRleHQpOworICAgICAg
ICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKworICAgICAgICBTYWZlRGVsZXRlKG9zV2luZG93KTsK
KyAgICB9CisKKyAgICB2b2lkIHRlc3RQYnVmZmVyQ29tcGF0aWJpbGl0eShFR0xDb25maWcgcGJ1
ZmZlckNvbmZpZywgRUdMQ29uZmlnIGNvbnRleHRDb25maWcsIGJvb2wgY29tcGF0aWJsZSkgY29u
c3QKKyAgICB7CisgICAgICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQo
bURpc3BsYXksIGNvbnRleHRDb25maWcsIEVHTF9OT19DT05URVhULCBjb250ZXh0QXR0cmlicyk7
CisgICAgICAgIEFTU0VSVF9UUlVFKGNvbnRleHQgIT0gRUdMX05PX0NPTlRFWFQpOworCisgICAg
ICAgIGNvbnN0IEVHTGludCBwQnVmZmVyQXR0cmlic1tdID0KKyAgICAgICAgeworICAgICAgICAg
ICAgRUdMX1dJRFRILCA1MDAsCisgICAgICAgICAgICBFR0xfSEVJR0hULCA1MDAsCisgICAgICAg
ICAgICBFR0xfTk9ORSwKKyAgICAgICAgfTsKKyAgICAgICAgRUdMU3VyZmFjZSBwYnVmZmVyID0g
ZWdsQ3JlYXRlUGJ1ZmZlclN1cmZhY2UobURpc3BsYXksIHBidWZmZXJDb25maWcsIHBCdWZmZXJB
dHRyaWJzKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocGJ1ZmZlciAhPSBFR0xfTk9fU1VSRkFDRSk7
CisKKyAgICAgICAgaWYgKGNvbXBhdGlibGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRlc3RD
bGVhclN1cmZhY2UocGJ1ZmZlciwgY29udGV4dCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQor
ICAgICAgICB7CisgICAgICAgICAgICB0ZXN0TWFrZUN1cnJlbnRGYWlscyhwYnVmZmVyLCBjb250
ZXh0KTsKKyAgICAgICAgfQorCisgICAgICAgIGVnbERlc3Ryb3lTdXJmYWNlKG1EaXNwbGF5LCBw
YnVmZmVyKTsKKyAgICAgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CisKKyAgICAgICAgZWdsRGVz
dHJveUNvbnRleHQobURpc3BsYXksIGNvbnRleHQpOworICAgICAgICBBU1NFUlRfRUdMX1NVQ0NF
U1MoKTsKKyAgICB9CisKKyAgICBzdGQ6OnZlY3RvcjxFR0xDb25maWc+IG1Db25maWdzOworICAg
IEVHTERpc3BsYXkgbURpc3BsYXk7CisKKyAgcHJpdmF0ZToKKyAgICB2b2lkIHRlc3RDbGVhclN1
cmZhY2UoRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xDb250ZXh0IGNvbnRleHQpIGNvbnN0CisgICAg
eworICAgICAgICBlZ2xNYWtlQ3VycmVudChtRGlzcGxheSwgc3VyZmFjZSwgc3VyZmFjZSwgY29u
dGV4dCk7CisgICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworCisgICAgICAgIGdsVmlld3Bv
cnQoMCwgMCwgNTAwLCA1MDApOworICAgICAgICBnbENsZWFyQ29sb3IoMC4wZiwgMC4wZiwgMS4w
ZiwgMS4wZik7CisgICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgICAgICBFWFBFQ1RfUElYRUxfRVEoMjUwLCAyNTAs
IDAsIDAsIDI1NSwgMjU1KTsKKworICAgICAgICBlZ2xNYWtlQ3VycmVudChtRGlzcGxheSwgRUdM
X05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7CisgICAgICAgIEFT
U0VSVF9FR0xfU1VDQ0VTUygpOworICAgIH0KKworICAgIHZvaWQgdGVzdE1ha2VDdXJyZW50RmFp
bHMoRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xDb250ZXh0IGNvbnRleHQpIGNvbnN0CisgICAgewor
ICAgICAgICBlZ2xNYWtlQ3VycmVudChtRGlzcGxheSwgc3VyZmFjZSwgc3VyZmFjZSwgY29udGV4
dCk7CisgICAgICAgIEVYUEVDVF9FR0xfRVJST1IoRUdMX0JBRF9NQVRDSCk7CisgICAgfQorfTsK
KworLy8gVGhlIHRlc3QgaXMgc3BsaXQgaW4gc2V2ZXJhbCBzdWJ0ZXN0IHNvIHRoYXQgc2ltcGxl
IGNhc2VzCisvLyBhcmUgdGVzdGVkIHNlcGFyYXRlbHkuIEFsc28gZWFjaCBzdXJmYWNlIHR5cGVz
IGFyZSBub3QgdGVzdGVkCisvLyB0b2dldGhlci4KKworLy8gQmFzaWMgdGVzdCBjaGVja2luZyBj
b250ZXh0cyBhbmQgd2luZG93cyBjcmVhdGVkIHdpdGggdGhlCisvLyBzYW1lIGNvbmZpZyBjYW4g
cmVuZGVyLgorVEVTVF9QKEVHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdCwgV2luZG93U2FtZUNv
bmZpZykKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1Db25maWdzLnNpemUoKTsgaSsr
KQorICAgIHsKKyAgICAgICAgRUdMQ29uZmlnIGNvbmZpZyA9IG1Db25maWdzW2ldOworCisgICAg
ICAgIEVHTGludCBzdXJmYWNlVHlwZTsKKyAgICAgICAgZWdsR2V0Q29uZmlnQXR0cmliKG1EaXNw
bGF5LCBjb25maWcsIEVHTF9TVVJGQUNFX1RZUEUsICZzdXJmYWNlVHlwZSk7CisgICAgICAgIEFT
U0VSVF9FR0xfU1VDQ0VTUygpOworCisgICAgICAgIGlmICgoc3VyZmFjZVR5cGUgJiBFR0xfV0lO
RE9XX0JJVCkgIT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgdGVzdFdpbmRvd0NvbXBhdGli
aWxpdHkoY29uZmlnLCBjb25maWcsIHRydWUpOworICAgICAgICB9CisgICAgfQorfQorCisvLyBC
YXNpYyB0ZXN0IGNoZWNraW5nIGNvbnRleHRzIGFuZCBwYnVmZmVycyBjcmVhdGVkIHdpdGggdGhl
CisvLyBzYW1lIGNvbmZpZyBjYW4gcmVuZGVyLgorVEVTVF9QKEVHTENvbnRleHRDb21wYXRpYmls
aXR5VGVzdCwgUGJ1ZmZlclNhbWVDb25maWcpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtQ29uZmlncy5zaXplKCk7IGkrKykKKyAgICB7CisgICAgICAgIEVHTENvbmZpZyBjb25maWcg
PSBtQ29uZmlnc1tpXTsKKworICAgICAgICBFR0xpbnQgc3VyZmFjZVR5cGU7CisgICAgICAgIGVn
bEdldENvbmZpZ0F0dHJpYihtRGlzcGxheSwgY29uZmlnLCBFR0xfU1VSRkFDRV9UWVBFLCAmc3Vy
ZmFjZVR5cGUpOworICAgICAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKworICAgICAgICBpZiAo
KHN1cmZhY2VUeXBlICYgRUdMX1BCVUZGRVJfQklUKSAhPSAwKQorICAgICAgICB7CisgICAgICAg
ICAgICB0ZXN0UGJ1ZmZlckNvbXBhdGliaWxpdHkoY29uZmlnLCBjb25maWcsIHRydWUpOworICAg
ICAgICB9CisgICAgfQorfQorCisvLyBDaGVjayB0aGF0IGEgY29udGV4dCByZW5kZXJpbmcgdG8g
YSB3aW5kb3cgd2l0aCBhIGRpZmZlcmVudAorLy8gY29uZmlnIHdvcmtzIG9yIGVycm9ycyBhY2Nv
cmRpbmcgdG8gdGhlIEVHTCBjb21wYXRpYmlsaXR5IHJ1bGVzCitURVNUX1AoRUdMQ29udGV4dENv
bXBhdGliaWxpdHlUZXN0LCBXaW5kb3dEaWZmZXJlbnRDb25maWcpCit7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtQ29uZmlncy5zaXplKCk7IGkrKykKKyAgICB7CisgICAgICAgIEVHTENv
bmZpZyBjb25maWcxID0gbUNvbmZpZ3NbaV07CisgICAgICAgIEVHTGludCBzdXJmYWNlVHlwZTsK
KyAgICAgICAgZWdsR2V0Q29uZmlnQXR0cmliKG1EaXNwbGF5LCBjb25maWcxLCBFR0xfU1VSRkFD
RV9UWVBFLCAmc3VyZmFjZVR5cGUpOworICAgICAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKwor
ICAgICAgICBpZiAoKHN1cmZhY2VUeXBlICYgRUdMX1dJTkRPV19CSVQpID09IDApCisgICAgICAg
IHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChzaXpl
X3QgaiA9IDA7IGogPCBtQ29uZmlncy5zaXplKCk7IGorKykKKyAgICAgICAgeworICAgICAgICAg
ICAgRUdMQ29uZmlnIGNvbmZpZzIgPSBtQ29uZmlnc1tqXTsKKyAgICAgICAgICAgIHRlc3RXaW5k
b3dDb21wYXRpYmlsaXR5KGNvbmZpZzEsIGNvbmZpZzIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhcmVDb25maWdzQ29tcGF0aWJsZShjb25maWcxLCBjb25maWcyLCBFR0xf
V0lORE9XX0JJVCkpOworICAgICAgICB9CisgICAgfQorfQorCisvLyBDaGVjayB0aGF0IGEgY29u
dGV4dCByZW5kZXJpbmcgdG8gYSBwYnVmZmVyIHdpdGggYSBkaWZmZXJlbnQKKy8vIGNvbmZpZyB3
b3JrcyBvciBlcnJvcnMgYWNjb3JkaW5nIHRvIHRoZSBFR0wgY29tcGF0aWJpbGl0eSBydWxlcwor
VEVTVF9QKEVHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdCwgUGJ1ZmZlckRpZmZlcmVudENvbmZp
ZykKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1Db25maWdzLnNpemUoKTsgaSsrKQor
ICAgIHsKKyAgICAgICAgRUdMQ29uZmlnIGNvbmZpZzEgPSBtQ29uZmlnc1tpXTsKKyAgICAgICAg
RUdMaW50IHN1cmZhY2VUeXBlOworICAgICAgICBlZ2xHZXRDb25maWdBdHRyaWIobURpc3BsYXks
IGNvbmZpZzEsIEVHTF9TVVJGQUNFX1RZUEUsICZzdXJmYWNlVHlwZSk7CisgICAgICAgIEFTU0VS
VF9FR0xfU1VDQ0VTUygpOworCisgICAgICAgIGlmICgoc3VyZmFjZVR5cGUgJiBFR0xfUEJVRkZF
Ul9CSVQpID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisKKyAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBtQ29uZmlncy5zaXplKCk7IGorKykK
KyAgICAgICAgeworICAgICAgICAgICAgRUdMQ29uZmlnIGNvbmZpZzIgPSBtQ29uZmlnc1tqXTsK
KyAgICAgICAgICAgIHRlc3RQYnVmZmVyQ29tcGF0aWJpbGl0eShjb25maWcxLCBjb25maWcyLCBh
cmVDb25maWdzQ29tcGF0aWJsZShjb25maWcxLCBjb25maWcyLCBFR0xfUEJVRkZFUl9CSVQpKTsK
KyAgICAgICAgfQorICAgIH0KK30KKworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChFR0xDb250ZXh0
Q29tcGF0aWJpbGl0eVRlc3QsIEVTMl9EM0Q5KCksIEVTMl9EM0QxMSgpLCBFUzJfT1BFTkdMKCkp
OwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xD
b250ZXh0U2hhcmluZ1Rlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMQ29udGV4dFNoYXJpbmdUZXN0LmNwcAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VH
TENvbnRleHRTaGFyaW5nVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NyBAQAor
Ly8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisvLyBFR0xDb250ZXh0U2hhcmluZ1Rlc3QuY3BwOgorLy8gICBUZXN0cyBy
ZWxhdGluZyB0byBzaGFyZWQgQ29udGV4dHMuCisKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgor
CisjaW5jbHVkZSA8RUdML2VnbC5oPgorI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KKworI2luY2x1
ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisjaW5jbHVkZSAidGVzdF91dGlscy9hbmdsZV90
ZXN0X2NvbmZpZ3MuaCIKKwordXNpbmcgbmFtZXNwYWNlIGFuZ2xlOworCituYW1lc3BhY2UKK3sK
KworRUdMQm9vbGVhbiBTYWZlRGVzdHJveUNvbnRleHQoRUdMRGlzcGxheSBkaXNwbGF5LCBFR0xD
b250ZXh0ICZjb250ZXh0KQoreworICAgIEVHTEJvb2xlYW4gcmVzdWx0ID0gRUdMX1RSVUU7Cisg
ICAgaWYgKGNvbnRleHQgIT0gRUdMX05PX0NPTlRFWFQpCisgICAgeworICAgICAgICByZXN1bHQg
ID0gZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29udGV4dCk7CisgICAgICAgIGNvbnRleHQg
PSBFR0xfTk9fQ09OVEVYVDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworY2xhc3Mg
RUdMQ29udGV4dFNoYXJpbmdUZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwdWJsaWM6Cisg
ICAgRUdMQ29udGV4dFNoYXJpbmdUZXN0KCkgOiBtQ29udGV4dHN7RUdMX05PX0NPTlRFWFQsIEVH
TF9OT19DT05URVhUfSwgbVRleHR1cmUoMCkge30KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbVRleHR1cmUpOworCisg
ICAgICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IGdldEVHTFdpbmRvdygpLT5nZXREaXNwbGF5KCk7
CisKKyAgICAgICAgaWYgKGRpc3BsYXkgIT0gRUdMX05PX0RJU1BMQVkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGZvciAoYXV0byAmY29udGV4dCA6IG1Db250ZXh0cykKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBTYWZlRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29udGV4dCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7
CisgICAgfQorCisgICAgRUdMQ29udGV4dCBtQ29udGV4dHNbMl07CisgICAgR0x1aW50IG1UZXh0
dXJlOworfTsKKworLy8gVGVzdHMgdGhhdCBjcmVhdGluZyByZXNvdXJjZXMgd29ya3MgYWZ0ZXIg
ZnJlZWluZyB0aGUgc2hhcmUgY29udGV4dC4KK1RFU1RfUChFR0xDb250ZXh0U2hhcmluZ1Rlc3Qs
IEJpbmRUZXh0dXJlQWZ0ZXJTaGFyZUNvbnRleHRGcmVlKQoreworICAgIEVHTERpc3BsYXkgZGlz
cGxheSA9IGdldEVHTFdpbmRvdygpLT5nZXREaXNwbGF5KCk7CisgICAgRUdMQ29uZmlnIGNvbmZp
ZyAgID0gZ2V0RUdMV2luZG93KCktPmdldENvbmZpZygpOworICAgIEVHTFN1cmZhY2Ugc3VyZmFj
ZSA9IGdldEVHTFdpbmRvdygpLT5nZXRTdXJmYWNlKCk7CisKKyAgICBjb25zdCBFR0xpbnQgY29u
dGV4dEF0dHJpYnNbXSA9IHtFR0xfQ09OVEVYVF9DTElFTlRfVkVSU0lPTiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRFR0xXaW5kb3coKS0+Z2V0Q2xpZW50TWFqb3JW
ZXJzaW9uKCksIEVHTF9OT05FfTsKKworICAgIG1Db250ZXh0c1swXSA9IGVnbENyZWF0ZUNvbnRl
eHQoZGlzcGxheSwgY29uZmlnLCBudWxscHRyLCBjb250ZXh0QXR0cmlicyk7CisgICAgQVNTRVJU
X0VHTF9TVUNDRVNTKCk7CisgICAgQVNTRVJUX1RSVUUobUNvbnRleHRzWzBdICE9IEVHTF9OT19D
T05URVhUKTsKKyAgICBtQ29udGV4dHNbMV0gPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGNv
bmZpZywgbUNvbnRleHRzWzFdLCBjb250ZXh0QXR0cmlicyk7CisgICAgQVNTRVJUX0VHTF9TVUND
RVNTKCk7CisgICAgQVNTRVJUX1RSVUUobUNvbnRleHRzWzFdICE9IEVHTF9OT19DT05URVhUKTsK
KworICAgIEFTU0VSVF9FR0xfVFJVRShTYWZlRGVzdHJveUNvbnRleHQoZGlzcGxheSwgbUNvbnRl
eHRzWzBdKSk7CisgICAgQVNTRVJUX0VHTF9UUlVFKGVnbE1ha2VDdXJyZW50KGRpc3BsYXksIHN1
cmZhY2UsIHN1cmZhY2UsIG1Db250ZXh0c1sxXSkpOworICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygp
OworCisgICAgZ2xHZW5UZXh0dXJlcygxLCAmbVRleHR1cmUpOworICAgIGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV8yRCwgbVRleHR1cmUpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworfQor
Cit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoRUdM
Q29udGV4dFNoYXJpbmdUZXN0LCBFUzJfRDNEOSgpLCBFUzJfRDNEMTEoKSwgRVMyX09QRU5HTCgp
KTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdM
RGV2aWNlVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL2VnbF90ZXN0cy9FR0xEZXZpY2VUZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTERldmljZVRlc3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTg3IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaWZuZGVmIEFO
R0xFX0VOQUJMRV9EM0Q5CisjZGVmaW5lIEFOR0xFX0VOQUJMRV9EM0Q5CisjZW5kaWYKKworI2lm
bmRlZiBBTkdMRV9FTkFCTEVfRDNEMTEKKyNkZWZpbmUgQU5HTEVfRU5BQkxFX0QzRDExCisjZW5k
aWYKKworI2luY2x1ZGUgPGQzZDExLmg+CisKKyNpbmNsdWRlICJjb21fdXRpbHMuaCIKKyNpbmNs
dWRlICJPU1dpbmRvdy5oIgorI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBhbmdsZTsKKworY2xhc3MgRUdMRGV2aWNlQ3JlYXRpb25UZXN0IDogcHVi
bGljIHRlc3Rpbmc6OlRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIEVHTERldmljZUNyZWF0aW9u
VGVzdCgpCisgICAgICAgIDogbUQzRDExQXZhaWxhYmxlKGZhbHNlKSwKKyAgICAgICAgICBtRDNE
MTFNb2R1bGUobnVsbHB0ciksCisgICAgICAgICAgbUQzRDExQ3JlYXRlRGV2aWNlKG51bGxwdHIp
LAorICAgICAgICAgIG1EZXZpY2UobnVsbHB0ciksCisgICAgICAgICAgbURldmljZUNvbnRleHQo
bnVsbHB0ciksCisgICAgICAgICAgbURldmljZUNyZWF0aW9uRDNEMTFFeHRBdmFpbGFibGUoZmFs
c2UpLAorICAgICAgICAgIG1PU1dpbmRvdyhudWxscHRyKSwKKyAgICAgICAgICBtRGlzcGxheShF
R0xfTk9fRElTUExBWSksCisgICAgICAgICAgbVN1cmZhY2UoRUdMX05PX1NVUkZBQ0UpLAorICAg
ICAgICAgIG1Db250ZXh0KEVHTF9OT19DT05URVhUKSwKKyAgICAgICAgICBtQ29uZmlnKDApCisg
ICAgeworICAgIH0KKworICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAg
bUQzRDExTW9kdWxlID0gTG9hZExpYnJhcnkoVEVYVCgiZDNkMTEuZGxsIikpOworICAgICAgICBp
ZiAobUQzRDExTW9kdWxlID09IG51bGxwdHIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0ZDo6
Y291dCA8PCAiVW5hYmxlIHRvIExvYWRMaWJyYXJ5IEQzRDExIiA8PCBzdGQ6OmVuZGw7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtRDNEMTFDcmVhdGVEZXZpY2Ug
PSByZWludGVycHJldF9jYXN0PFBGTl9EM0QxMV9DUkVBVEVfREVWSUNFPigKKyAgICAgICAgICAg
IEdldFByb2NBZGRyZXNzKG1EM0QxMU1vZHVsZSwgIkQzRDExQ3JlYXRlRGV2aWNlIikpOworICAg
ICAgICBpZiAobUQzRDExQ3JlYXRlRGV2aWNlID09IG51bGxwdHIpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0ZDo6Y291dCA8PCAiQ291bGQgbm90IHJldHJpZXZlIEQzRDExQ3JlYXRlRGV2aWNl
IGZyb20gZDNkMTEuZGxsIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBtRDNEMTFBdmFpbGFibGUgPSB0cnVlOworCisgICAgICAgIGNvbnN0
IGNoYXIgKmV4dGVuc2lvblN0cmluZyA9CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBj
aGFyICo+KGVnbFF1ZXJ5U3RyaW5nKEVHTF9OT19ESVNQTEFZLCBFR0xfRVhURU5TSU9OUykpOwor
ICAgICAgICBpZiAoc3Ryc3RyKGV4dGVuc2lvblN0cmluZywgIkVHTF9BTkdMRV9kZXZpY2VfY3Jl
YXRpb24iKSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHN0cnN0cihleHRlbnNpb25TdHJp
bmcsICJFR0xfQU5HTEVfZGV2aWNlX2NyZWF0aW9uX2QzZDExIikpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgbURldmljZUNyZWF0aW9uRDNEMTFFeHRBdmFpbGFibGUgPSB0cnVlOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92
ZXJyaWRlCisgICAgeworICAgICAgICBTYWZlUmVsZWFzZShtRGV2aWNlKTsKKyAgICAgICAgU2Fm
ZVJlbGVhc2UobURldmljZUNvbnRleHQpOworCisgICAgICAgIFNhZmVEZWxldGUobU9TV2luZG93
KTsKKworICAgICAgICBpZiAobVN1cmZhY2UgIT0gRUdMX05PX1NVUkZBQ0UpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGVnbERlc3Ryb3lTdXJmYWNlKG1EaXNwbGF5LCBtU3VyZmFjZSk7CisgICAg
ICAgICAgICBtU3VyZmFjZSA9IEVHTF9OT19TVVJGQUNFOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKG1Db250ZXh0ICE9IEVHTF9OT19DT05URVhUKQorICAgICAgICB7CisgICAgICAgICAgICBl
Z2xEZXN0cm95Q29udGV4dChtRGlzcGxheSwgbUNvbnRleHQpOworICAgICAgICAgICAgbUNvbnRl
eHQgPSBFR0xfTk9fQ09OVEVYVDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtRGlzcGxheSAh
PSBFR0xfTk9fRElTUExBWSkKKyAgICAgICAgeworICAgICAgICAgICAgZWdsVGVybWluYXRlKG1E
aXNwbGF5KTsKKyAgICAgICAgICAgIG1EaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICB2b2lkIENyZWF0ZUQzRDExRGV2aWNlKCkKKyAgICB7CisgICAgICAg
IEFTU0VSVF9UUlVFKG1EM0QxMUF2YWlsYWJsZSk7CisgICAgICAgIEFTU0VSVF9FUShudWxscHRy
LCBtRGV2aWNlKTsgIC8vIFRoZSBkZXZpY2Ugc2hvdWxkbid0IGJlIGNyZWF0ZWQgdHdpY2UKKwor
ICAgICAgICBIUkVTVUxUIGhyID0KKyAgICAgICAgICAgIG1EM0QxMUNyZWF0ZURldmljZShudWxs
cHRyLCBEM0RfRFJJVkVSX1RZUEVfSEFSRFdBUkUsIDAsIDAsIG51bGxwdHIsIDAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRDNEMTFfU0RLX1ZFUlNJT04sICZtRGV2aWNlLCAmbUZl
YXR1cmVMZXZlbCwgJm1EZXZpY2VDb250ZXh0KTsKKworICAgICAgICBBU1NFUlRfVFJVRShTVUND
RUVERUQoaHIpKTsKKyAgICAgICAgQVNTRVJUX0dFKG1GZWF0dXJlTGV2ZWwsIEQzRF9GRUFUVVJF
X0xFVkVMXzlfMyk7CisgICAgfQorCisgICAgdm9pZCBDcmVhdGVEM0QxMUZMOV8zRGV2aWNlKCkK
KyAgICB7CisgICAgICAgIEFTU0VSVF9UUlVFKG1EM0QxMUF2YWlsYWJsZSk7CisgICAgICAgIEFT
U0VSVF9FUShudWxscHRyLCBtRGV2aWNlKTsKKworICAgICAgICBEM0RfRkVBVFVSRV9MRVZFTCBm
bDkzID0gRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOworCisgICAgICAgIEhSRVNVTFQgaHIgPQorICAg
ICAgICAgICAgbUQzRDExQ3JlYXRlRGV2aWNlKG51bGxwdHIsIEQzRF9EUklWRVJfVFlQRV9IQVJE
V0FSRSwgMCwgMCwgJmZsOTMsIDEsIEQzRDExX1NES19WRVJTSU9OLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZtRGV2aWNlLCAmbUZlYXR1cmVMZXZlbCwgJm1EZXZpY2VDb250ZXh0
KTsKKworICAgICAgICBBU1NFUlRfVFJVRShTVUNDRUVERUQoaHIpKTsKKyAgICB9CisKKyAgICB2
b2lkIENyZWF0ZVdpbmRvd1N1cmZhY2UoKQorICAgIHsKKyAgICAgICAgRUdMaW50IG1ham9yVmVy
c2lvbiwgbWlub3JWZXJzaW9uOworICAgICAgICBBU1NFUlRfRUdMX1RSVUUoZWdsSW5pdGlhbGl6
ZShtRGlzcGxheSwgJm1ham9yVmVyc2lvbiwgJm1pbm9yVmVyc2lvbikpOworCisgICAgICAgIGVn
bEJpbmRBUEkoRUdMX09QRU5HTF9FU19BUEkpOworICAgICAgICBBU1NFUlRfRUdMX1NVQ0NFU1Mo
KTsKKworICAgICAgICAvLyBDaG9vc2UgYSBjb25maWcKKyAgICAgICAgY29uc3QgRUdMaW50IGNv
bmZpZ0F0dHJpYnV0ZXNbXSA9IHtFR0xfTk9ORX07CisgICAgICAgIEVHTGludCBjb25maWdDb3Vu
dCA9IDA7CisgICAgICAgIEFTU0VSVF9FR0xfVFJVRShlZ2xDaG9vc2VDb25maWcobURpc3BsYXks
IGNvbmZpZ0F0dHJpYnV0ZXMsICZtQ29uZmlnLCAxLCAmY29uZmlnQ291bnQpKTsKKworICAgICAg
ICAvLyBDcmVhdGUgYW4gT1MgV2luZG93CisgICAgICAgIG1PU1dpbmRvdyA9IENyZWF0ZU9TV2lu
ZG93KCk7CisgICAgICAgIG1PU1dpbmRvdy0+aW5pdGlhbGl6ZSgiRUdMU3VyZmFjZVRlc3QiLCA2
NCwgNjQpOworCisgICAgICAgIC8vIENyZWF0ZSB3aW5kb3cgc3VyZmFjZQorICAgICAgICBtU3Vy
ZmFjZSA9IGVnbENyZWF0ZVdpbmRvd1N1cmZhY2UobURpc3BsYXksIG1Db25maWcsIG1PU1dpbmRv
dy0+Z2V0TmF0aXZlV2luZG93KCksIG51bGxwdHIpOworICAgICAgICBBU1NFUlRfRUdMX1NVQ0NF
U1MoKTsKKworICAgICAgICAvLyBDcmVhdGUgRUdMIGNvbnRleHQKKyAgICAgICAgRUdMaW50IGNv
bnRleHRBdHRpYnV0ZXNbXSA9IHtFR0xfQ09OVEVYVF9DTElFTlRfVkVSU0lPTiwgMiwgRUdMX05P
TkV9OworICAgICAgICBtQ29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQobURpc3BsYXksIG1Db25m
aWcsIG51bGxwdHIsIGNvbnRleHRBdHRpYnV0ZXMpOworICAgICAgICBBU1NFUlRfRUdMX1NVQ0NF
U1MoKTsKKworICAgICAgICAvLyBNYWtlIHRoZSBzdXJmYWNlIGN1cnJlbnQKKyAgICAgICAgZWds
TWFrZUN1cnJlbnQobURpc3BsYXksIG1TdXJmYWNlLCBtU3VyZmFjZSwgbUNvbnRleHQpOworICAg
ICAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKyAgICB9CisKKyAgICAvLyBUaGlzIHRyaWdnZXJz
IGEgRDNEIGRldmljZSBsb3N0IG9uIGN1cnJlbnQgV2luZG93cyBzeXN0ZW1zCisgICAgLy8gVGhp
cyBiZWhhdmlvciBjb3VsZCBwb3RlbnRpYWxseSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZQorICAgIHZv
aWQgdHJpZ2dlcjlfM0RldmljZUxvc3QoKQorICAgIHsKKyAgICAgICAgSUQzRDExQnVmZmVyICpn
c0J1ZmZlciAgICAgICA9IG51bGxwdHI7CisgICAgICAgIEQzRDExX0JVRkZFUl9ERVNDIGJ1ZmZl
ckRlc2MgPSB7MH07CisgICAgICAgIGJ1ZmZlckRlc2MuQnl0ZVdpZHRoICAgICAgICAgPSA2NDsK
KyAgICAgICAgYnVmZmVyRGVzYy5Vc2FnZSAgICAgICAgICAgICA9IEQzRDExX1VTQUdFX0RFRkFV
TFQ7CisgICAgICAgIGJ1ZmZlckRlc2MuQmluZEZsYWdzICAgICAgICAgPSBEM0QxMV9CSU5EX0NP
TlNUQU5UX0JVRkZFUjsKKworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0
ZUJ1ZmZlcigmYnVmZmVyRGVzYywgbnVsbHB0ciwgJmdzQnVmZmVyKTsKKyAgICAgICAgQVNTRVJU
X1RSVUUoU1VDQ0VFREVEKHJlc3VsdCkpOworCisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5HU1Nl
dENvbnN0YW50QnVmZmVycygwLCAxLCAmZ3NCdWZmZXIpOworICAgICAgICBTYWZlUmVsZWFzZShn
c0J1ZmZlcik7CisgICAgICAgIGdzQnVmZmVyID0gbnVsbHB0cjsKKworICAgICAgICByZXN1bHQg
PSBtRGV2aWNlLT5HZXREZXZpY2VSZW1vdmVkUmVhc29uKCk7CisgICAgICAgIEFTU0VSVF9UUlVF
KEZBSUxFRChyZXN1bHQpKTsKKyAgICB9CisKKyAgICBib29sIG1EM0QxMUF2YWlsYWJsZTsKKyAg
ICBITU9EVUxFIG1EM0QxMU1vZHVsZTsKKyAgICBQRk5fRDNEMTFfQ1JFQVRFX0RFVklDRSBtRDNE
MTFDcmVhdGVEZXZpY2U7CisKKyAgICBJRDNEMTFEZXZpY2UgKm1EZXZpY2U7CisgICAgSUQzRDEx
RGV2aWNlQ29udGV4dCAqbURldmljZUNvbnRleHQ7CisgICAgRDNEX0ZFQVRVUkVfTEVWRUwgbUZl
YXR1cmVMZXZlbDsKKworICAgIGJvb2wgbURldmljZUNyZWF0aW9uRDNEMTFFeHRBdmFpbGFibGU7
CisKKyAgICBPU1dpbmRvdyAqbU9TV2luZG93OworCisgICAgRUdMRGlzcGxheSBtRGlzcGxheTsK
KyAgICBFR0xTdXJmYWNlIG1TdXJmYWNlOworICAgIEVHTENvbnRleHQgbUNvbnRleHQ7CisgICAg
RUdMQ29uZmlnIG1Db25maWc7Cit9OworCisvLyBUZXN0IHRoYXQgY3JlYXRpbmcgYSBFR0xEZXZp
Y2VFWFQgZnJvbSBEM0QxMSBkZXZpY2Ugd29ya3MsIGFuZCBpdCBjYW4gYmUgcXVlcmllZCB0byBy
ZXRyaWV2ZQorLy8gRDNEMTEgZGV2aWNlCitURVNUX0YoRUdMRGV2aWNlQ3JlYXRpb25UZXN0LCBC
YXNpY0QzRDExRGV2aWNlKQoreworICAgIGlmICghbURldmljZUNyZWF0aW9uRDNEMTFFeHRBdmFp
bGFibGUgfHwgIW1EM0QxMUF2YWlsYWJsZSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAi
RUdMRGV2aWNlIGNyZWF0aW9uIGFuZC9vciBEM0QxMSBub3QgYXZhaWxhYmxlLCBza2lwcGluZyB0
ZXN0IiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDcmVhdGVE
M0QxMURldmljZSgpOworCisgICAgRUdMRGV2aWNlRVhUIGVnbERldmljZSA9CisgICAgICAgIGVn
bENyZWF0ZURldmljZUFOR0xFKEVHTF9EM0QxMV9ERVZJQ0VfQU5HTEUsIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCAqPihtRGV2aWNlKSwgbnVsbHB0cik7CisgICAgQVNTRVJUX05FKEVHTF9OT19ERVZJ
Q0VfRVhULCBlZ2xEZXZpY2UpOworICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworCisgICAgRUdM
QXR0cmliIGRldmljZUF0dHJpYjsKKyAgICBlZ2xRdWVyeURldmljZUF0dHJpYkVYVChlZ2xEZXZp
Y2UsIEVHTF9EM0QxMV9ERVZJQ0VfQU5HTEUsICZkZXZpY2VBdHRyaWIpOworICAgIEFTU0VSVF9F
R0xfU1VDQ0VTUygpOworCisgICAgSUQzRDExRGV2aWNlICpxdWVyaWVkRGV2aWNlID0gcmVpbnRl
cnByZXRfY2FzdDxJRDNEMTFEZXZpY2UgKj4oZGV2aWNlQXR0cmliKTsKKyAgICBBU1NFUlRfRVEo
bUZlYXR1cmVMZXZlbCwgcXVlcmllZERldmljZS0+R2V0RmVhdHVyZUxldmVsKCkpOworCisgICAg
ZWdsUmVsZWFzZURldmljZUFOR0xFKGVnbERldmljZSk7Cit9CisKKy8vIFRlc3QgdGhhdCBjcmVh
dGluZyBhIEVHTERldmljZUVYVCBmcm9tIEQzRDExIGRldmljZSB3b3JrcywgYW5kIGl0IGNhbiBi
ZSBxdWVyaWVkIHRvIHJldHJpZXZlCisvLyBEM0QxMSBkZXZpY2UKK1RFU1RfRihFR0xEZXZpY2VD
cmVhdGlvblRlc3QsIEJhc2ljRDNEMTFEZXZpY2VWaWFGdW5jUG9pbnRlcikKK3sKKyAgICBpZiAo
IW1EZXZpY2VDcmVhdGlvbkQzRDExRXh0QXZhaWxhYmxlIHx8ICFtRDNEMTFBdmFpbGFibGUpCisg
ICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIkVHTERldmljZSBjcmVhdGlvbiBhbmQvb3IgRDNE
MTEgbm90IGF2YWlsYWJsZSwgc2tpcHBpbmcgdGVzdCIgPDwgc3RkOjplbmRsOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgQ3JlYXRlRDNEMTFEZXZpY2UoKTsKKworICAgIFBGTkVHTENS
RUFURURFVklDRUFOR0xFUFJPQyBjcmVhdGVEZXZpY2VBTkdMRSA9CisgICAgICAgIChQRk5FR0xD
UkVBVEVERVZJQ0VBTkdMRVBST0MpZWdsR2V0UHJvY0FkZHJlc3MoImVnbENyZWF0ZURldmljZUFO
R0xFIik7CisgICAgUEZORUdMUkVMRUFTRURFVklDRUFOR0xFUFJPQyByZWxlYXNlRGV2aWNlQU5H
TEUgPQorICAgICAgICAoUEZORUdMUkVMRUFTRURFVklDRUFOR0xFUFJPQyllZ2xHZXRQcm9jQWRk
cmVzcygiZWdsUmVsZWFzZURldmljZUFOR0xFIik7CisKKyAgICBFR0xEZXZpY2VFWFQgZWdsRGV2
aWNlID0KKyAgICAgICAgY3JlYXRlRGV2aWNlQU5HTEUoRUdMX0QzRDExX0RFVklDRV9BTkdMRSwg
cmVpbnRlcnByZXRfY2FzdDx2b2lkICo+KG1EZXZpY2UpLCBudWxscHRyKTsKKyAgICBBU1NFUlRf
TkUoRUdMX05PX0RFVklDRV9FWFQsIGVnbERldmljZSk7CisgICAgQVNTRVJUX0VHTF9TVUNDRVNT
KCk7CisKKyAgICBFR0xBdHRyaWIgZGV2aWNlQXR0cmliOworICAgIGVnbFF1ZXJ5RGV2aWNlQXR0
cmliRVhUKGVnbERldmljZSwgRUdMX0QzRDExX0RFVklDRV9BTkdMRSwgJmRldmljZUF0dHJpYik7
CisgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CisKKyAgICBJRDNEMTFEZXZpY2UgKnF1ZXJpZWRE
ZXZpY2UgPSByZWludGVycHJldF9jYXN0PElEM0QxMURldmljZSAqPihkZXZpY2VBdHRyaWIpOwor
ICAgIEFTU0VSVF9FUShtRmVhdHVyZUxldmVsLCBxdWVyaWVkRGV2aWNlLT5HZXRGZWF0dXJlTGV2
ZWwoKSk7CisKKyAgICByZWxlYXNlRGV2aWNlQU5HTEUoZWdsRGV2aWNlKTsKK30KKworLy8gVGVz
dCB0aGF0IGNyZWF0aW5nIGEgRUdMRGV2aWNlRVhUIGZyb20gRDNEMTEgZGV2aWNlIHdvcmtzLCBh
bmQgY2FuIGJlIHVzZWQgZm9yIHJlbmRlcmluZworVEVTVF9GKEVHTERldmljZUNyZWF0aW9uVGVz
dCwgUmVuZGVyaW5nVXNpbmdEM0QxMURldmljZSkKK3sKKyAgICBpZiAoIW1EM0QxMUF2YWlsYWJs
ZSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiRDNEMTEgbm90IGF2YWlsYWJsZSwgc2tp
cHBpbmcgdGVzdCIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Q3JlYXRlRDNEMTFEZXZpY2UoKTsKKworICAgIEVHTERldmljZUVYVCBlZ2xEZXZpY2UgPQorICAg
ICAgICBlZ2xDcmVhdGVEZXZpY2VBTkdMRShFR0xfRDNEMTFfREVWSUNFX0FOR0xFLCByZWludGVy
cHJldF9jYXN0PHZvaWQgKj4obURldmljZSksIG51bGxwdHIpOworICAgIEFTU0VSVF9FR0xfU1VD
Q0VTUygpOworCisgICAgLy8gQ3JlYXRlIGFuIEVHTERpc3BsYXkgdXNpbmcgdGhlIEVHTERldmlj
ZQorICAgIG1EaXNwbGF5ID0gZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUKEVHTF9QTEFURk9STV9E
RVZJQ0VfRVhULCBlZ2xEZXZpY2UsIG51bGxwdHIpOworICAgIEFTU0VSVF9ORShFR0xfTk9fRElT
UExBWSwgbURpc3BsYXkpOworCisgICAgLy8gQ3JlYXRlIGEgc3VyZmFjZSB1c2luZyB0aGUgZGlz
cGxheQorICAgIENyZWF0ZVdpbmRvd1N1cmZhY2UoKTsKKworICAgIC8vIFBlcmZvcm0gc29tZSB2
ZXJ5IGJhc2ljIHJlbmRlcmluZworICAgIGdsQ2xlYXJDb2xvcigxLjBmLCAwLjBmLCAxLjBmLCAx
LjBmKTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAgIEVYUEVDVF9QSVhF
TF9FUSgzMiwgMzIsIDI1NSwgMCwgMjU1LCAyNTUpOworCisgICAgLy8gTm90ZSB0aGF0IHdlIG11
c3QgY2FsbCBUZWFyRG93bigpIGJlZm9yZSB3ZSByZWxlYXNlIHRoZSBFR0wgZGV2aWNlLCBzaW5j
ZSB0aGUgZGlzcGxheQorICAgIC8vIGRlcGVuZHMgb24gdGhlIGRldmljZQorICAgIFRlYXJEb3du
KCk7CisKKyAgICBlZ2xSZWxlYXNlRGV2aWNlQU5HTEUoZWdsRGV2aWNlKTsKK30KKworLy8gVGVz
dCB0aGF0IEFOR0xFIGRvZXNuJ3QgdHJ5IHRvIHJlY3JlYXRlIGEgRDNEMTEgZGV2aWNlIGlmIHRo
ZSBpbnB1dHRlZCBvbmUgaXMgbG9zdAorVEVTVF9GKEVHTERldmljZUNyZWF0aW9uVGVzdCwgRDNE
MTFEZXZpY2VSZWNvdmVyeSkKK3sKKyAgICBpZiAoIW1EM0QxMUF2YWlsYWJsZSkKKyAgICB7Cisg
ICAgICAgIHN0ZDo6Y291dCA8PCAiRDNEMTEgbm90IGF2YWlsYWJsZSwgc2tpcHBpbmcgdGVzdCIg
PDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRm9yY2UgRmVh
dHVyZSBMZXZlbCA5XzMgc28gd2UgY2FuIGVhc2lseSB0cmlnZ2VyIGEgZGV2aWNlIGxvc3QgbGF0
ZXIKKyAgICBDcmVhdGVEM0QxMUZMOV8zRGV2aWNlKCk7CisKKyAgICBFR0xEZXZpY2VFWFQgZWds
RGV2aWNlID0KKyAgICAgICAgZWdsQ3JlYXRlRGV2aWNlQU5HTEUoRUdMX0QzRDExX0RFVklDRV9B
TkdMRSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkICo+KG1EZXZpY2UpLCBudWxscHRyKTsKKyAgICBB
U1NFUlRfRUdMX1NVQ0NFU1MoKTsKKworICAgIC8vIENyZWF0ZSBhbiBFR0xEaXNwbGF5IHVzaW5n
IHRoZSBFR0xEZXZpY2UKKyAgICBtRGlzcGxheSA9IGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVChF
R0xfUExBVEZPUk1fREVWSUNFX0VYVCwgZWdsRGV2aWNlLCBudWxscHRyKTsKKyAgICBBU1NFUlRf
VFJVRShtRGlzcGxheSAhPSBFR0xfTk9fRElTUExBWSk7CisKKyAgICAvLyBDcmVhdGUgYSBzdXJm
YWNlIHVzaW5nIHRoZSBkaXNwbGF5CisgICAgQ3JlYXRlV2luZG93U3VyZmFjZSgpOworCisgICAg
Ly8gUGVyZm9ybSBzb21lIHZlcnkgYmFzaWMgcmVuZGVyaW5nCisgICAgZ2xDbGVhckNvbG9yKDEu
MGYsIDAuMGYsIDEuMGYsIDEuMGYpOworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7
CisgICAgRVhQRUNUX1BJWEVMX0VRKDMyLCAzMiwgMjU1LCAwLCAyNTUsIDI1NSk7CisgICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBBTkdMRSdzIFN3YXBDaGFpbjExOjppbml0UGFz
c1Rocm91Z2hSZXNvdXJjZXMgZG9lc24ndCBoYW5kbGUgZGV2aWNlIGxvc3QgYmVmb3JlCisgICAg
Ly8gZWdsU3dhcEJ1ZmZlcnMsIHNvIHdlIG11c3QgY2FsbCBlZ2xTd2FwQnVmZmVycyBiZWZvcmUg
d2UgbG9zZSB0aGUgZGV2aWNlLgorICAgIEFTU0VSVF9FR0xfVFJVRShlZ2xTd2FwQnVmZmVycyht
RGlzcGxheSwgbVN1cmZhY2UpKTsKKworICAgIC8vIFRyaWdnZXIgYSBsb3N0IGRldmljZQorICAg
IHRyaWdnZXI5XzNEZXZpY2VMb3N0KCk7CisKKyAgICAvLyBEZXN0cm95IHRoZSBvbGQgRUdMIFdp
bmRvdyBTdXJmYWNlCisgICAgaWYgKG1TdXJmYWNlICE9IEVHTF9OT19TVVJGQUNFKQorICAgIHsK
KyAgICAgICAgZWdsRGVzdHJveVN1cmZhY2UobURpc3BsYXksIG1TdXJmYWNlKTsKKyAgICAgICAg
bVN1cmZhY2UgPSBFR0xfTk9fU1VSRkFDRTsKKyAgICB9CisKKyAgICAvLyBUcnkgdG8gY3JlYXRl
IGEgbmV3IHdpbmRvdyBzdXJmYWNlLiBJbiBjZXJ0YWluIGNvbmZpZ3VyYXRpb25zIHRoaXMgd2ls
bCByZWNyZWF0ZSB0aGUgRDNEMTEKKyAgICAvLyBkZXZpY2UuIFdlIHdhbnQgdG8gdGVzdCB0aGF0
IGl0IGRvZXNuJ3QgcmVjcmVhdGUgdGhlIEQzRDExIGRldmljZSB3aGVuIEVHTERldmljZUVYVCBp
cworICAgIC8vIHVzZWQuIFRoZSB3aW5kb3cgc3VyZmFjZSBjcmVhdGlvbiBzaG91bGQgZmFpbCBp
ZiBhIG5ldyBEM0QxMSBkZXZpY2UgaXNuJ3QgY3JlYXRlZC4KKyAgICBtU3VyZmFjZSA9IGVnbENy
ZWF0ZVdpbmRvd1N1cmZhY2UobURpc3BsYXksIG1Db25maWcsIG1PU1dpbmRvdy0+Z2V0TmF0aXZl
V2luZG93KCksIG51bGxwdHIpOworICAgIEFTU0VSVF9FUShFR0xfTk9fU1VSRkFDRSwgbVN1cmZh
Y2UpOworICAgIEFTU0VSVF9FR0xfRVJST1IoRUdMX0JBRF9BTExPQyk7CisKKyAgICAvLyBHZXQg
dGhlIEQzRDExIGRldmljZSBvdXQgb2YgdGhlIEVHTERpc3BsYXkgYWdhaW4uIEl0IHNob3VsZCBi
ZSB0aGUgc2FtZSBvbmUgYXMgYWJvdmUuCisgICAgRUdMQXR0cmliIGRldmljZSAgICAgICA9IDA7
CisgICAgRUdMQXR0cmliIG5ld0VnbERldmljZSA9IDA7CisgICAgQVNTRVJUX0VHTF9UUlVFKGVn
bFF1ZXJ5RGlzcGxheUF0dHJpYkVYVChtRGlzcGxheSwgRUdMX0RFVklDRV9FWFQsICZuZXdFZ2xE
ZXZpY2UpKTsKKyAgICBBU1NFUlRfRUdMX1RSVUUoZWdsUXVlcnlEZXZpY2VBdHRyaWJFWFQocmVp
bnRlcnByZXRfY2FzdDxFR0xEZXZpY2VFWFQ+KG5ld0VnbERldmljZSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfRDNEMTFfREVWSUNFX0FOR0xF
LCAmZGV2aWNlKSk7CisgICAgSUQzRDExRGV2aWNlICpuZXdEZXZpY2UgPSByZWludGVycHJldF9j
YXN0PElEM0QxMURldmljZSAqPihkZXZpY2UpOworCisgICAgQVNTRVJUX0VRKHJlaW50ZXJwcmV0
X2Nhc3Q8RUdMRGV2aWNlRVhUPihuZXdFZ2xEZXZpY2UpLCBlZ2xEZXZpY2UpOworICAgIEFTU0VS
VF9FUShuZXdEZXZpY2UsIG1EZXZpY2UpOworCisgICAgLy8gTm90ZSB0aGF0IHdlIG11c3QgY2Fs
bCBUZWFyRG93bigpIGJlZm9yZSB3ZSByZWxlYXNlIHRoZSBFR0wgZGV2aWNlLCBzaW5jZSB0aGUg
ZGlzcGxheQorICAgIC8vIGRlcGVuZHMgb24gdGhlIGRldmljZQorICAgIFRlYXJEb3duKCk7CisK
KyAgICBlZ2xSZWxlYXNlRGV2aWNlQU5HTEUoZWdsRGV2aWNlKTsKK30KKworLy8gVGVzdCB0aGF0
IGNhbGxpbmcgZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUIHdpdGggdGhlIHNhbWUgZGV2aWNlIHJl
dHVybnMgdGhlIHNhbWUgZGlzcGxheQorVEVTVF9GKEVHTERldmljZUNyZWF0aW9uVGVzdCwgZ2V0
UGxhdGZvcm1EaXNwbGF5VHdpY2UpCit7CisgICAgaWYgKCFtRDNEMTFBdmFpbGFibGUpCisgICAg
eworICAgICAgICBzdGQ6OmNvdXQgPDwgIkQzRDExIG5vdCBhdmFpbGFibGUsIHNraXBwaW5nIHRl
c3QiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIENyZWF0ZUQz
RDExRGV2aWNlKCk7CisKKyAgICBFR0xEZXZpY2VFWFQgZWdsRGV2aWNlID0KKyAgICAgICAgZWds
Q3JlYXRlRGV2aWNlQU5HTEUoRUdMX0QzRDExX0RFVklDRV9BTkdMRSwgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkICo+KG1EZXZpY2UpLCBudWxscHRyKTsKKyAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsK
KworICAgIC8vIENyZWF0ZSBhbiBFR0xEaXNwbGF5IHVzaW5nIHRoZSBFR0xEZXZpY2UKKyAgICBF
R0xEaXNwbGF5IGRpc3BsYXkxID0gZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUKEVHTF9QTEFURk9S
TV9ERVZJQ0VfRVhULCBlZ2xEZXZpY2UsIG51bGxwdHIpOworICAgIEFTU0VSVF9ORShFR0xfTk9f
RElTUExBWSwgZGlzcGxheTEpOworCisgICAgRUdMRGlzcGxheSBkaXNwbGF5MiA9IGVnbEdldFBs
YXRmb3JtRGlzcGxheUVYVChFR0xfUExBVEZPUk1fREVWSUNFX0VYVCwgZWdsRGV2aWNlLCBudWxs
cHRyKTsKKyAgICBBU1NFUlRfTkUoRUdMX05PX0RJU1BMQVksIGRpc3BsYXkyKTsKKworICAgIEFT
U0VSVF9FUShkaXNwbGF5MSwgZGlzcGxheTIpOworCisgICAgZWdsVGVybWluYXRlKGRpc3BsYXkx
KTsKKyAgICBlZ2xSZWxlYXNlRGV2aWNlQU5HTEUoZWdsRGV2aWNlKTsKK30KKworLy8gVGVzdCB0
aGF0IGNyZWF0aW5nIGEgRUdMRGV2aWNlRVhUIGZyb20gYW4gaW52YWxpZCBEM0QxMSBkZXZpY2Ug
ZmFpbHMKK1RFU1RfRihFR0xEZXZpY2VDcmVhdGlvblRlc3QsIEludmFsaWREM0QxMURldmljZSkK
K3sKKyAgICBpZiAoIW1EZXZpY2VDcmVhdGlvbkQzRDExRXh0QXZhaWxhYmxlIHx8ICFtRDNEMTFB
dmFpbGFibGUpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIkVHTERldmljZSBjcmVhdGlv
biBhbmQvb3IgRDNEMTEgbm90IGF2YWlsYWJsZSwgc2tpcHBpbmcgdGVzdCIgPDwgc3RkOjplbmRs
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ3JlYXRlRDNEMTFEZXZpY2UoKTsKKwor
ICAgIC8vIFVzZSBtRGV2aWNlQ29udGV4dCBpbnN0ZWFkIG9mIG1EZXZpY2UKKyAgICBFR0xEZXZp
Y2VFWFQgZWdsRGV2aWNlID0gZWdsQ3JlYXRlRGV2aWNlQU5HTEUoCisgICAgICAgIEVHTF9EM0Qx
MV9ERVZJQ0VfQU5HTEUsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqPihtRGV2aWNlQ29udGV4dCks
IG51bGxwdHIpOworICAgIEVYUEVDVF9FUShFR0xfTk9fREVWSUNFX0VYVCwgZWdsRGV2aWNlKTsK
KyAgICBFWFBFQ1RfRUdMX0VSUk9SKEVHTF9CQURfQVRUUklCVVRFKTsKK30KKworLy8gVGVzdCB0
aGF0IEVHTERldmljZUVYVCBob2xkcyBhIHJlZiB0byB0aGUgRDNEMTEgZGV2aWNlCitURVNUX0Yo
RUdMRGV2aWNlQ3JlYXRpb25UZXN0LCBEM0QxMURldmljZVJlZmVyZW5jZUNvdW50aW5nKQorewor
ICAgIGlmICghbURldmljZUNyZWF0aW9uRDNEMTFFeHRBdmFpbGFibGUgfHwgIW1EM0QxMUF2YWls
YWJsZSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiRUdMRGV2aWNlIGNyZWF0aW9uIGFu
ZC9vciBEM0QxMSBub3QgYXZhaWxhYmxlLCBza2lwcGluZyB0ZXN0IiA8PCBzdGQ6OmVuZGw7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDcmVhdGVEM0QxMURldmljZSgpOworCisgICAg
RUdMRGV2aWNlRVhUIGVnbERldmljZSA9CisgICAgICAgIGVnbENyZWF0ZURldmljZUFOR0xFKEVH
TF9EM0QxMV9ERVZJQ0VfQU5HTEUsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqPihtRGV2aWNlKSwg
bnVsbHB0cik7CisgICAgQVNTRVJUX05FKEVHTF9OT19ERVZJQ0VfRVhULCBlZ2xEZXZpY2UpOwor
ICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworCisgICAgLy8gTm93IHJlbGVhc2Ugb3VyIEQzRDEx
IGRldmljZS9jb250ZXh0CisgICAgU2FmZVJlbGVhc2UobURldmljZSk7CisgICAgU2FmZVJlbGVh
c2UobURldmljZUNvbnRleHQpOworCisgICAgRUdMQXR0cmliIGRldmljZUF0dHJpYjsKKyAgICBl
Z2xRdWVyeURldmljZUF0dHJpYkVYVChlZ2xEZXZpY2UsIEVHTF9EM0QxMV9ERVZJQ0VfQU5HTEUs
ICZkZXZpY2VBdHRyaWIpOworICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworCisgICAgSUQzRDEx
RGV2aWNlICpxdWVyaWVkRGV2aWNlID0gcmVpbnRlcnByZXRfY2FzdDxJRDNEMTFEZXZpY2UgKj4o
ZGV2aWNlQXR0cmliKTsKKyAgICBBU1NFUlRfRVEobUZlYXR1cmVMZXZlbCwgcXVlcmllZERldmlj
ZS0+R2V0RmVhdHVyZUxldmVsKCkpOworCisgICAgZWdsUmVsZWFzZURldmljZUFOR0xFKGVnbERl
dmljZSk7Cit9CisKKy8vIFRlc3QgdGhhdCBjcmVhdGluZyBhIEVHTERldmljZUVYVCBmcm9tIGEg
RDNEOSBkZXZpY2UgZmFpbHMKK1RFU1RfRihFR0xEZXZpY2VDcmVhdGlvblRlc3QsIEFueUQzRDlE
ZXZpY2UpCit7CisgICAgaWYgKCFtRGV2aWNlQ3JlYXRpb25EM0QxMUV4dEF2YWlsYWJsZSkKKyAg
ICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiRUdMRGV2aWNlIGNyZWF0aW9uIG5vdCBhdmFpbGFi
bGUsIHNraXBwaW5nIHRlc3QiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHN0ZDo6c3RyaW5nIGZha2VEM0REZXZpY2UgPSAiVGhpcyBpcyBhIHN0cmluZywgbm90
IGEgRDNEIGRldmljZSI7CisKKyAgICBFR0xEZXZpY2VFWFQgZWdsRGV2aWNlID0gZWdsQ3JlYXRl
RGV2aWNlQU5HTEUoCisgICAgICAgIEVHTF9EM0Q5X0RFVklDRV9BTkdMRSwgcmVpbnRlcnByZXRf
Y2FzdDx2b2lkICo+KCZmYWtlRDNERGV2aWNlKSwgbnVsbHB0cik7CisgICAgRVhQRUNUX0VRKEVH
TF9OT19ERVZJQ0VfRVhULCBlZ2xEZXZpY2UpOworICAgIEVYUEVDVF9FR0xfRVJST1IoRUdMX0JB
RF9BVFRSSUJVVEUpOworfQorCitjbGFzcyBFR0xEZXZpY2VRdWVyeVRlc3QgOiBwdWJsaWMgQU5H
TEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBFR0xEZXZpY2VRdWVyeVRlc3QoKQorICAgIHsK
KyAgICAgICAgbVF1ZXJ5RGlzcGxheUF0dHJpYkVYVCA9IG51bGxwdHI7CisgICAgICAgIG1RdWVy
eURldmljZUF0dHJpYkVYVCAgPSBudWxscHRyOworICAgICAgICBtUXVlcnlEZXZpY2VTdHJpbmdF
WFQgID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKKworICAgICAgICBjb25zdCBjaGFyICpleHRl
bnNpb25TdHJpbmcgPQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhciAqPihlZ2xR
dWVyeVN0cmluZyhnZXRFR0xXaW5kb3coKS0+Z2V0RGlzcGxheSgpLCBFR0xfRVhURU5TSU9OUykp
OworICAgICAgICBpZiAoc3Ryc3RyKGV4dGVuc2lvblN0cmluZywgIkVHTF9FWFRfZGV2aWNlX3F1
ZXJ5IikpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1RdWVyeURpc3BsYXlBdHRyaWJFWFQgPQor
ICAgICAgICAgICAgICAgIChQRk5FR0xRVUVSWURJU1BMQVlBVFRSSUJFWFRQUk9DKWVnbEdldFBy
b2NBZGRyZXNzKCJlZ2xRdWVyeURpc3BsYXlBdHRyaWJFWFQiKTsKKyAgICAgICAgICAgIG1RdWVy
eURldmljZUF0dHJpYkVYVCA9CisgICAgICAgICAgICAgICAgKFBGTkVHTFFVRVJZREVWSUNFQVRU
UklCRVhUUFJPQyllZ2xHZXRQcm9jQWRkcmVzcygiZWdsUXVlcnlEZXZpY2VBdHRyaWJFWFQiKTsK
KyAgICAgICAgICAgIG1RdWVyeURldmljZVN0cmluZ0VYVCA9CisgICAgICAgICAgICAgICAgKFBG
TkVHTFFVRVJZREVWSUNFU1RSSU5HRVhUUFJPQyllZ2xHZXRQcm9jQWRkcmVzcygiZWdsUXVlcnlE
ZXZpY2VTdHJpbmdFWFQiKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghbVF1ZXJ5RGV2aWNl
U3RyaW5nRVhUKQorICAgICAgICB7CisgICAgICAgICAgICBGQUlMKCkgPDwgIkFOR0xFIGV4dGVu
c2lvbiBFR0xfRVhUX2RldmljZV9xdWVyeSBleHBvcnQgZWdsUXVlcnlEZXZpY2VTdHJpbmdFWFQg
d2FzIG5vdCAiCisgICAgICAgICAgICAgICAgICAgICAgImZvdW5kIjsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghbVF1ZXJ5RGlzcGxheUF0dHJpYkVYVCkKKyAgICAgICAgeworICAgICAgICAg
ICAgRkFJTCgpIDw8ICJBTkdMRSBleHRlbnNpb24gRUdMX0VYVF9kZXZpY2VfcXVlcnkgZXhwb3J0
IGVnbFF1ZXJ5RGlzcGxheUF0dHJpYkVYVCB3YXMgIgorICAgICAgICAgICAgICAgICAgICAgICJu
b3QgZm91bmQiOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFtUXVlcnlEZXZpY2VBdHRyaWJF
WFQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEZBSUwoKSA8PCAiQU5HTEUgZXh0ZW5zaW9uIEVH
TF9FWFRfZGV2aWNlX3F1ZXJ5IGV4cG9ydCBlZ2xRdWVyeURldmljZUF0dHJpYkVYVCB3YXMgbm90
ICIKKyAgICAgICAgICAgICAgICAgICAgICAiZm91bmQiOworICAgICAgICB9CisKKyAgICAgICAg
RUdMQXR0cmliIGFuZ2xlRGV2aWNlID0gMDsKKyAgICAgICAgRVhQRUNUX0VHTF9UUlVFKAorICAg
ICAgICAgICAgbVF1ZXJ5RGlzcGxheUF0dHJpYkVYVChnZXRFR0xXaW5kb3coKS0+Z2V0RGlzcGxh
eSgpLCBFR0xfREVWSUNFX0VYVCwgJmFuZ2xlRGV2aWNlKSk7CisgICAgICAgIGV4dGVuc2lvblN0
cmluZyA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIgKj4oCisgICAgICAgICAgICBtUXVlcnlEZXZp
Y2VTdHJpbmdFWFQocmVpbnRlcnByZXRfY2FzdDxFR0xEZXZpY2VFWFQ+KGFuZ2xlRGV2aWNlKSwg
RUdMX0VYVEVOU0lPTlMpKTsKKyAgICAgICAgaWYgKHN0cnN0cihleHRlbnNpb25TdHJpbmcsICJF
R0xfQU5HTEVfZGV2aWNlX2QzZCIpID09IE5VTEwpCisgICAgICAgIHsKKyAgICAgICAgICAgIEZB
SUwoKSA8PCAiQU5HTEUgZXh0ZW5zaW9uIEVHTF9BTkdMRV9kZXZpY2VfZDNkIHdhcyBub3QgZm91
bmQiOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlIHsg
QU5HTEVUZXN0OjpUZWFyRG93bigpOyB9CisKKyAgICBQRk5FR0xRVUVSWURJU1BMQVlBVFRSSUJF
WFRQUk9DIG1RdWVyeURpc3BsYXlBdHRyaWJFWFQ7CisgICAgUEZORUdMUVVFUllERVZJQ0VBVFRS
SUJFWFRQUk9DIG1RdWVyeURldmljZUF0dHJpYkVYVDsKKyAgICBQRk5FR0xRVUVSWURFVklDRVNU
UklOR0VYVFBST0MgbVF1ZXJ5RGV2aWNlU3RyaW5nRVhUOworfTsKKworLy8gVGhpcyB0ZXN0IGF0
dGVtcHRzIHRvIG9idGFpbiBhIEQzRDExIGRldmljZSBhbmQgYSBEM0Q5IGRldmljZSB1c2luZyB0
aGUgZWdsUXVlcnlEZXZpY2VBdHRyaWJFWFQKKy8vIGZ1bmN0aW9uLgorLy8gSWYgdGhlIHRlc3Qg
aXMgY29uZmlndXJlZCB0byB1c2UgRDNEMTEgdGhlbiBpdCBzaG91bGQgc3VjY2VlZCB0byBvYnRh
aW4gYSBEM0QxMSBkZXZpY2UuCisvLyBJZiB0aGUgdGVzdCBpcyBjb25maXR1cmVkIHRvIHVzZSBE
M0Q5LCB0aGVuIGl0IHNob3VsZCBzdWNjZWVkIHRvIG9idGFpbiBhIEQzRDkgZGV2aWNlLgorVEVT
VF9QKEVHTERldmljZVF1ZXJ5VGVzdCwgUXVlcnlEZXZpY2UpCit7CisgICAgRUdMQXR0cmliIGRl
dmljZSAgICAgID0gMDsKKyAgICBFR0xBdHRyaWIgYW5nbGVEZXZpY2UgPSAwOworICAgIGlmIChn
ZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5H
TEUpCisgICAgeworICAgICAgICBFWFBFQ1RfRUdMX1RSVUUoCisgICAgICAgICAgICBtUXVlcnlE
aXNwbGF5QXR0cmliRVhUKGdldEVHTFdpbmRvdygpLT5nZXREaXNwbGF5KCksIEVHTF9ERVZJQ0Vf
RVhULCAmYW5nbGVEZXZpY2UpKTsKKyAgICAgICAgRVhQRUNUX0VHTF9UUlVFKG1RdWVyeURldmlj
ZUF0dHJpYkVYVChyZWludGVycHJldF9jYXN0PEVHTERldmljZUVYVD4oYW5nbGVEZXZpY2UpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9EM0QxMV9E
RVZJQ0VfQU5HTEUsICZkZXZpY2UpKTsKKyAgICAgICAgSUQzRDExRGV2aWNlICpkM2QxMURldmlj
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SUQzRDExRGV2aWNlICo+KGRldmljZSk7CisgICAgICAgIElE
WEdJRGV2aWNlICpkeGdpRGV2aWNlID0gRHluYW1pY0Nhc3RDb21PYmplY3Q8SURYR0lEZXZpY2U+
KGQzZDExRGV2aWNlKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoZHhnaURldmljZSAhPSBudWxscHRy
KTsKKyAgICAgICAgU2FmZVJlbGVhc2UoZHhnaURldmljZSk7CisgICAgfQorCisgICAgaWYgKGdl
dFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0Q5X0FOR0xF
KQorICAgIHsKKyAgICAgICAgRVhQRUNUX0VHTF9UUlVFKAorICAgICAgICAgICAgbVF1ZXJ5RGlz
cGxheUF0dHJpYkVYVChnZXRFR0xXaW5kb3coKS0+Z2V0RGlzcGxheSgpLCBFR0xfREVWSUNFX0VY
VCwgJmFuZ2xlRGV2aWNlKSk7CisgICAgICAgIEVYUEVDVF9FR0xfVFJVRShtUXVlcnlEZXZpY2VB
dHRyaWJFWFQocmVpbnRlcnByZXRfY2FzdDxFR0xEZXZpY2VFWFQ+KGFuZ2xlRGV2aWNlKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfRDNEOV9ERVZJ
Q0VfQU5HTEUsICZkZXZpY2UpKTsKKyAgICAgICAgSURpcmVjdDNERGV2aWNlOSAqZDNkOURldmlj
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SURpcmVjdDNERGV2aWNlOSAqPihkZXZpY2UpOworICAgICAg
ICBJRGlyZWN0M0Q5ICpkM2Q5ID0gbnVsbHB0cjsKKyAgICAgICAgRVhQRUNUX0VRKFNfT0ssIGQz
ZDlEZXZpY2UtPkdldERpcmVjdDNEKCZkM2Q5KSk7CisgICAgICAgIEVYUEVDVF9UUlVFKGQzZDkg
IT0gbnVsbHB0cik7CisgICAgICAgIFNhZmVSZWxlYXNlKGQzZDkpOworICAgIH0KK30KKworLy8g
VGhpcyB0ZXN0IGF0dGVtcHRzIHRvIG9idGFpbiBhIEQzRDExIGRldmljZSBmcm9tIGEgRDNEOSBj
b25maWd1cmVkIHN5c3RlbSBhbmQgYSBEM0Q5IGRldmljZSBmcm9tCisvLyBhIEQzRDExIGNvbmZp
Z3VyZWQgc3lzdGVtIHVzaW5nIHRoZSBlZ2xRdWVyeURldmljZUF0dHJpYkVYVCBmdW5jdGlvbi4K
Ky8vIElmIHRoZSB0ZXN0IGlzIGNvbmZpZ3VyZWQgdG8gdXNlIEQzRDExIHRoZW4gaXQgc2hvdWxk
IGZhaWwgdG8gb2J0YWluIGEgRDNEMTEgZGV2aWNlLgorLy8gSWYgdGhlIHRlc3QgaXMgY29uZml0
dXJlZCB0byB1c2UgRDNEOSwgdGhlbiBpdCBzaG91bGQgZmFpbCB0byBvYnRhaW4gYSBEM0Q5IGRl
dmljZS4KK1RFU1RfUChFR0xEZXZpY2VRdWVyeVRlc3QsIFF1ZXJ5RGV2aWNlQmFkQXR0cmlidXRl
KQoreworICAgIEVHTEF0dHJpYiBkZXZpY2UgICAgICA9IDA7CisgICAgRUdMQXR0cmliIGFuZ2xl
RGV2aWNlID0gMDsKKyAgICBpZiAoZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9S
TV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFKQorICAgIHsKKyAgICAgICAgRVhQRUNUX0VHTF9UUlVF
KAorICAgICAgICAgICAgbVF1ZXJ5RGlzcGxheUF0dHJpYkVYVChnZXRFR0xXaW5kb3coKS0+Z2V0
RGlzcGxheSgpLCBFR0xfREVWSUNFX0VYVCwgJmFuZ2xlRGV2aWNlKSk7CisgICAgICAgIEVYUEVD
VF9FR0xfRkFMU0UobVF1ZXJ5RGV2aWNlQXR0cmliRVhUKHJlaW50ZXJwcmV0X2Nhc3Q8RUdMRGV2
aWNlRVhUPihhbmdsZURldmljZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVHTF9EM0Q5X0RFVklDRV9BTkdMRSwgJmRldmljZSkpOworICAgIH0KKwor
ICAgIGlmIChnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVf
RDNEOV9BTkdMRSkKKyAgICB7CisgICAgICAgIEVYUEVDVF9FR0xfVFJVRSgKKyAgICAgICAgICAg
IG1RdWVyeURpc3BsYXlBdHRyaWJFWFQoZ2V0RUdMV2luZG93KCktPmdldERpc3BsYXkoKSwgRUdM
X0RFVklDRV9FWFQsICZhbmdsZURldmljZSkpOworICAgICAgICBFWFBFQ1RfRUdMX0ZBTFNFKG1R
dWVyeURldmljZUF0dHJpYkVYVChyZWludGVycHJldF9jYXN0PEVHTERldmljZUVYVD4oYW5nbGVE
ZXZpY2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
R0xfRDNEMTFfREVWSUNFX0FOR0xFLCAmZGV2aWNlKSk7CisgICAgfQorfQorCisvLyBFbnN1cmUg
dGhhdDoKKy8vICAgIC0gY2FsbGluZyBnZXRQbGF0Zm9ybURpc3BsYXlFWFQgdXNpbmcgQU5HTEVf
UGxhdGZvcm0gd2l0aCBzb21lIHBhcmFtZXRlcnMKKy8vICAgIC0gZXh0cmFjdGluZyB0aGUgRUdM
RGV2aWNlRVhUIGZyb20gdGhlIEVHTERpc3BsYXkKKy8vICAgIC0gY2FsbGluZyBnZXRQbGF0Zm9y
bURpc3BsYXlFWFQgd2l0aCB0aGlzIEVHTERldmljZUVYVAorLy8gcmVzdWx0cyBpbiB0aGUgc2Ft
ZSBFR0xEaXNwbGF5IGJlaW5nIHJldHVybmVkIGZyb20gZ2V0UGxhdGZvcm1EaXNwbGF5RVhUIGJv
dGggdGltZXMKK1RFU1RfUChFR0xEZXZpY2VRdWVyeVRlc3QsIGdldFBsYXRmb3JtRGlzcGxheURl
dmljZVJldXNlKQoreworICAgIEVHTEF0dHJpYiBlZ2xEZXZpY2UgPSAwOworICAgIEVYUEVDVF9F
R0xfVFJVRSgKKyAgICAgICAgICAgICAgZWdsUXVlcnlEaXNwbGF5QXR0cmliRVhUKGdldEVHTFdp
bmRvdygpLT5nZXREaXNwbGF5KCksIEVHTF9ERVZJQ0VfRVhULCAmZWdsRGV2aWNlKSk7CisKKyAg
ICBFR0xEaXNwbGF5IGRpc3BsYXkyID0gZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUKAorICAgICAg
ICBFR0xfUExBVEZPUk1fREVWSUNFX0VYVCwgcmVpbnRlcnByZXRfY2FzdDxFR0xEZXZpY2VFWFQ+
KGVnbERldmljZSksIG51bGxwdHIpOworICAgIEVYUEVDVF9FUShnZXRFR0xXaW5kb3coKS0+Z2V0
RGlzcGxheSgpLCBkaXNwbGF5Mik7Cit9CisKKy8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBj
b25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJz
aW9uKSB0aGVzZQorLy8gdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgorQU5HTEVfSU5TVEFO
VElBVEVfVEVTVChFR0xEZXZpY2VRdWVyeVRlc3QsIEVTMl9EM0Q5KCksIEVTMl9EM0QxMSgpKTsK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMUHJl
c2VudFBhdGhEM0QxMVRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMUHJlc2VudFBhdGhEM0QxMVRlc3QuY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMv
RUdMUHJlc2VudFBhdGhEM0QxMVRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzc4
IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKworI2lu
Y2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSAiY29tX3V0aWxzLmgiCisjaW5jbHVkZSAiT1NXaW5k
b3cuaCIKKyNpbmNsdWRlIDxkM2QxMS5oPgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKK2Ns
YXNzIEVHTFByZXNlbnRQYXRoRDNEMTEgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxQ
bGF0Zm9ybVBhcmFtZXRlcnM+Cit7CisgIHByb3RlY3RlZDoKKyAgICBFR0xQcmVzZW50UGF0aEQz
RDExKCkKKyAgICAgICAgOiBtRGlzcGxheShFR0xfTk9fRElTUExBWSksCisgICAgICAgICAgbUNv
bnRleHQoRUdMX05PX0NPTlRFWFQpLAorICAgICAgICAgIG1TdXJmYWNlKEVHTF9OT19TVVJGQUNF
KSwKKyAgICAgICAgICBtT2Zmc2NyZWVuU3VyZmFjZUQzRDExVGV4dHVyZShudWxscHRyKSwKKyAg
ICAgICAgICBtQ29uZmlnKDApLAorICAgICAgICAgIG1PU1dpbmRvdyhudWxscHRyKSwKKyAgICAg
ICAgICBtV2luZG93V2lkdGgoMCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBTZXRVcCgpIG92
ZXJyaWRlCisgICAgeworICAgICAgICBtT1NXaW5kb3cgICAgPSBDcmVhdGVPU1dpbmRvdygpOwor
ICAgICAgICBtV2luZG93V2lkdGggPSA2NDsKKyAgICAgICAgbU9TV2luZG93LT5pbml0aWFsaXpl
KCJFR0xQcmVzZW50UGF0aEQzRDExIiwgbVdpbmRvd1dpZHRoLCBtV2luZG93V2lkdGgpOworICAg
IH0KKworICAgIHZvaWQgaW5pdGlhbGl6ZUVHTChib29sIHVzZVByZXNlbnRQYXRoRmFzdCkKKyAg
ICB7CisgICAgICAgIGludCBjbGllbnRWZXJzaW9uID0gR2V0UGFyYW0oKS5tYWpvclZlcnNpb247
CisKKyAgICAgICAgY29uc3QgY2hhciAqZXh0ZW5zaW9uU3RyaW5nID0KKyAgICAgICAgICAgIHN0
YXRpY19jYXN0PGNvbnN0IGNoYXIgKj4oZWdsUXVlcnlTdHJpbmcoRUdMX05PX0RJU1BMQVksIEVH
TF9FWFRFTlNJT05TKSk7CisgICAgICAgIEFTU0VSVF9ORShudWxscHRyLCBzdHJzdHIoZXh0ZW5z
aW9uU3RyaW5nLCAiRUdMX0FOR0xFX2V4cGVyaW1lbnRhbF9wcmVzZW50X3BhdGgiKSk7CisKKyAg
ICAgICAgUEZORUdMR0VUUExBVEZPUk1ESVNQTEFZRVhUUFJPQyBlZ2xHZXRQbGF0Zm9ybURpc3Bs
YXlFWFQgPQorICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xHRVRQTEFURk9STURJ
U1BMQVlFWFRQUk9DPigKKyAgICAgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZWdsR2V0
UGxhdGZvcm1EaXNwbGF5RVhUIikpOworICAgICAgICBBU1NFUlRfTkUobnVsbHB0ciwgZWdsR2V0
UGxhdGZvcm1EaXNwbGF5RVhUKTsKKworICAgICAgICAvLyBTZXQgdXAgRUdMIERpc3BsYXkKKyAg
ICAgICAgRUdMaW50IGRpc3BsYXlBdHRyaWJzW10gPSB7CisgICAgICAgICAgICBFR0xfUExBVEZP
Uk1fQU5HTEVfVFlQRV9BTkdMRSwgR2V0UGFyYW0oKS5nZXRSZW5kZXJlcigpLAorICAgICAgICAg
ICAgRUdMX1BMQVRGT1JNX0FOR0xFX01BWF9WRVJTSU9OX01BSk9SX0FOR0xFLCBHZXRQYXJhbSgp
LmVnbFBhcmFtZXRlcnMubWFqb3JWZXJzaW9uLAorICAgICAgICAgICAgRUdMX1BMQVRGT1JNX0FO
R0xFX01BWF9WRVJTSU9OX01BSk9SX0FOR0xFLCBHZXRQYXJhbSgpLmVnbFBhcmFtZXRlcnMubWFq
b3JWZXJzaW9uLAorICAgICAgICAgICAgRUdMX0VYUEVSSU1FTlRBTF9QUkVTRU5UX1BBVEhfQU5H
TEUsCisgICAgICAgICAgICB1c2VQcmVzZW50UGF0aEZhc3QgPyBFR0xfRVhQRVJJTUVOVEFMX1BS
RVNFTlRfUEFUSF9GQVNUX0FOR0xFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBF
R0xfRVhQRVJJTUVOVEFMX1BSRVNFTlRfUEFUSF9DT1BZX0FOR0xFLAorICAgICAgICAgICAgRUdM
X05PTkV9OworICAgICAgICBtRGlzcGxheSA9CisgICAgICAgICAgICBlZ2xHZXRQbGF0Zm9ybURp
c3BsYXlFWFQoRUdMX1BMQVRGT1JNX0FOR0xFX0FOR0xFLCBFR0xfREVGQVVMVF9ESVNQTEFZLCBk
aXNwbGF5QXR0cmlicyk7CisgICAgICAgIEFTU0VSVF9UUlVFKEVHTF9OT19ESVNQTEFZICE9IG1E
aXNwbGF5KTsKKyAgICAgICAgQVNTRVJUX0VHTF9UUlVFKGVnbEluaXRpYWxpemUobURpc3BsYXks
IE5VTEwsIE5VTEwpKTsKKworICAgICAgICAvLyBDaG9vc2UgdGhlIEVHTCBjb25maWcKKyAgICAg
ICAgRUdMaW50IG51bUNvbmZpZ3M7CisgICAgICAgIEVHTGludCBjb25maWdBdHRyaWJzW10gPSB7
RUdMX1JFRF9TSVpFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX0dSRUVOX1NJWkUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBFR0xfQkxVRV9TSVpFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX0FMUEhBX1NJWkUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFR0xfUkVOREVSQUJMRV9UWVBFLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNsaWVudFZlcnNpb24gPT0gMyA/IEVHTF9PUEVOR0xfRVMzX0JJVCA6IEVHTF9P
UEVOR0xfRVMyX0JJVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfU1VS
RkFDRV9UWVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9QQlVGRkVS
X0JJVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfTk9ORX07CisgICAg
ICAgIEFTU0VSVF9FR0xfVFJVRShlZ2xDaG9vc2VDb25maWcobURpc3BsYXksIGNvbmZpZ0F0dHJp
YnMsICZtQ29uZmlnLCAxLCAmbnVtQ29uZmlncykpOworICAgICAgICBBU1NFUlRfRVEoMSwgbnVt
Q29uZmlncyk7CisKKyAgICAgICAgLy8gU2V0IHVwIHRoZSBFR0wgY29udGV4dAorICAgICAgICBF
R0xpbnQgY29udGV4dEF0dHJpYnNbXSA9IHtFR0xfQ09OVEVYVF9DTElFTlRfVkVSU0lPTiwgY2xp
ZW50VmVyc2lvbiwgRUdMX05PTkV9OworICAgICAgICBtQ29udGV4dCA9IGVnbENyZWF0ZUNvbnRl
eHQobURpc3BsYXksIG1Db25maWcsIE5VTEwsIGNvbnRleHRBdHRyaWJzKTsKKyAgICAgICAgQVNT
RVJUX1RSVUUoRUdMX05PX0NPTlRFWFQgIT0gbUNvbnRleHQpOworICAgIH0KKworICAgIHZvaWQg
Y3JlYXRlV2luZG93U3VyZmFjZSgpCisgICAgeworICAgICAgICBtU3VyZmFjZSA9IGVnbENyZWF0
ZVdpbmRvd1N1cmZhY2UobURpc3BsYXksIG1Db25maWcsIG1PU1dpbmRvdy0+Z2V0TmF0aXZlV2lu
ZG93KCksIG51bGxwdHIpOworICAgIH0KKworICAgIHZvaWQgY3JlYXRlUGJ1ZmZlckZyb21DbGll
bnRCdWZmZXJTdXJmYWNlKCkKKyAgICB7CisgICAgICAgIEVHTEF0dHJpYiBkZXZpY2UgICAgICA9
IDA7CisgICAgICAgIEVHTEF0dHJpYiBhbmdsZURldmljZSA9IDA7CisKKyAgICAgICAgUEZORUdM
UVVFUllESVNQTEFZQVRUUklCRVhUUFJPQyBxdWVyeURpc3BsYXlBdHRyaWJFWFQ7CisgICAgICAg
IFBGTkVHTFFVRVJZREVWSUNFQVRUUklCRVhUUFJPQyBxdWVyeURldmljZUF0dHJpYkVYVDsKKwor
ICAgICAgICBjb25zdCBjaGFyICpleHRlbnNpb25TdHJpbmcgPQorICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhciAqPihlZ2xRdWVyeVN0cmluZyhtRGlzcGxheSwgRUdMX0VYVEVOU0lP
TlMpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3Ryc3RyKGV4dGVuc2lvblN0cmluZywgIkVHTF9F
WFRfZGV2aWNlX3F1ZXJ5IikpOworCisgICAgICAgIHF1ZXJ5RGlzcGxheUF0dHJpYkVYVCA9Cisg
ICAgICAgICAgICAoUEZORUdMUVVFUllESVNQTEFZQVRUUklCRVhUUFJPQyllZ2xHZXRQcm9jQWRk
cmVzcygiZWdsUXVlcnlEaXNwbGF5QXR0cmliRVhUIik7CisgICAgICAgIHF1ZXJ5RGV2aWNlQXR0
cmliRVhUID0KKyAgICAgICAgICAgIChQRk5FR0xRVUVSWURFVklDRUFUVFJJQkVYVFBST0MpZWds
R2V0UHJvY0FkZHJlc3MoImVnbFF1ZXJ5RGV2aWNlQXR0cmliRVhUIik7CisgICAgICAgIEFTU0VS
VF9ORShudWxscHRyLCBxdWVyeURpc3BsYXlBdHRyaWJFWFQpOworICAgICAgICBBU1NFUlRfTkUo
bnVsbHB0ciwgcXVlcnlEZXZpY2VBdHRyaWJFWFQpOworCisgICAgICAgIEFTU0VSVF9FR0xfVFJV
RShxdWVyeURpc3BsYXlBdHRyaWJFWFQobURpc3BsYXksIEVHTF9ERVZJQ0VfRVhULCAmYW5nbGVE
ZXZpY2UpKTsKKyAgICAgICAgQVNTRVJUX0VHTF9UUlVFKHF1ZXJ5RGV2aWNlQXR0cmliRVhUKHJl
aW50ZXJwcmV0X2Nhc3Q8RUdMRGV2aWNlRVhUPihhbmdsZURldmljZSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfRDNEMTFfREVWSUNFX0FOR0xFLCAm
ZGV2aWNlKSk7CisgICAgICAgIElEM0QxMURldmljZSAqZDNkMTFEZXZpY2UgPSByZWludGVycHJl
dF9jYXN0PElEM0QxMURldmljZSAqPihkZXZpY2UpOworCisgICAgICAgIEQzRDExX1RFWFRVUkUy
RF9ERVNDIHRleHR1cmVEZXNjID0gezB9OworICAgICAgICB0ZXh0dXJlRGVzYy5XaWR0aCAgICAg
ICAgICAgICAgICA9IG1XaW5kb3dXaWR0aDsKKyAgICAgICAgdGV4dHVyZURlc2MuSGVpZ2h0ICAg
ICAgICAgICAgICAgPSBtV2luZG93V2lkdGg7CisgICAgICAgIHRleHR1cmVEZXNjLkZvcm1hdCAg
ICAgICAgICAgICAgID0gRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk07CisgICAgICAgIHRleHR1
cmVEZXNjLk1pcExldmVscyAgICAgICAgICAgID0gMTsKKyAgICAgICAgdGV4dHVyZURlc2MuQXJy
YXlTaXplICAgICAgICAgICAgPSAxOworICAgICAgICB0ZXh0dXJlRGVzYy5TYW1wbGVEZXNjLkNv
dW50ICAgICA9IDE7CisgICAgICAgIHRleHR1cmVEZXNjLlNhbXBsZURlc2MuUXVhbGl0eSAgID0g
MDsKKyAgICAgICAgdGV4dHVyZURlc2MuVXNhZ2UgICAgICAgICAgICAgICAgPSBEM0QxMV9VU0FH
RV9ERUZBVUxUOworICAgICAgICB0ZXh0dXJlRGVzYy5CaW5kRmxhZ3MgICAgICAgICAgICA9IEQz
RDExX0JJTkRfUkVOREVSX1RBUkdFVCB8IEQzRDExX0JJTkRfU0hBREVSX1JFU09VUkNFOworICAg
ICAgICB0ZXh0dXJlRGVzYy5DUFVBY2Nlc3NGbGFncyAgICAgICA9IDA7CisgICAgICAgIHRleHR1
cmVEZXNjLk1pc2NGbGFncyAgICAgICAgICAgID0gRDNEMTFfUkVTT1VSQ0VfTUlTQ19TSEFSRUQ7
CisKKyAgICAgICAgQVNTRVJUX1RSVUUoU1VDQ0VFREVEKAorICAgICAgICAgICAgZDNkMTFEZXZp
Y2UtPkNyZWF0ZVRleHR1cmUyRCgmdGV4dHVyZURlc2MsIG51bGxwdHIsICZtT2Zmc2NyZWVuU3Vy
ZmFjZUQzRDExVGV4dHVyZSkpKTsKKworICAgICAgICBJRFhHSVJlc291cmNlICpkeGdpUmVzb3Vy
Y2UgPQorICAgICAgICAgICAgRHluYW1pY0Nhc3RDb21PYmplY3Q8SURYR0lSZXNvdXJjZT4obU9m
ZnNjcmVlblN1cmZhY2VEM0QxMVRleHR1cmUpOworICAgICAgICBBU1NFUlRfTkUobnVsbHB0ciwg
ZHhnaVJlc291cmNlKTsKKworICAgICAgICBIQU5ETEUgc2hhcmVkSGFuZGxlID0gMDsKKyAgICAg
ICAgQVNTRVJUX1RSVUUoU1VDQ0VFREVEKGR4Z2lSZXNvdXJjZS0+R2V0U2hhcmVkSGFuZGxlKCZz
aGFyZWRIYW5kbGUpKSk7CisgICAgICAgIFNhZmVSZWxlYXNlKGR4Z2lSZXNvdXJjZSk7CisKKyAg
ICAgICAgRUdMaW50IHBCdWZmZXJBdHRyaWJ1dGVzW10gPSB7RUdMX1dJRFRILCAgICAgICAgICBt
V2luZG93V2lkdGgsICAgICAgIEVHTF9IRUlHSFQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1XaW5kb3dXaWR0aCwgICAgICAgRUdMX1RFWFRVUkVfVEFSR0VULCBFR0xf
VEVYVFVSRV8yRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX1RF
WFRVUkVfRk9STUFULCBFR0xfVEVYVFVSRV9SR0JBLCAgIEVHTF9OT05FfTsKKworICAgICAgICBt
U3VyZmFjZSA9IGVnbENyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKG1EaXNwbGF5LCBFR0xf
RDNEX1RFWFRVUkVfMkRfU0hBUkVfSEFORExFX0FOR0xFLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZEhhbmRsZSwgbUNvbmZpZywgcEJ1
ZmZlckF0dHJpYnV0ZXMpOworICAgICAgICBBU1NFUlRfVFJVRShFR0xfTk9fU1VSRkFDRSAhPSBt
U3VyZmFjZSk7CisgICAgfQorCisgICAgdm9pZCBtYWtlQ3VycmVudCgpIHsgQVNTRVJUX0VHTF9U
UlVFKGVnbE1ha2VDdXJyZW50KG1EaXNwbGF5LCBtU3VyZmFjZSwgbVN1cmZhY2UsIG1Db250ZXh0
KSk7IH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgU2Fm
ZVJlbGVhc2UobU9mZnNjcmVlblN1cmZhY2VEM0QxMVRleHR1cmUpOworCisgICAgICAgIGlmICht
RGlzcGxheSAhPSBFR0xfTk9fRElTUExBWSkKKyAgICAgICAgeworICAgICAgICAgICAgZWdsTWFr
ZUN1cnJlbnQobURpc3BsYXksIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fU1VSRkFDRSwgRUdMX05P
X0NPTlRFWFQpOworCisgICAgICAgICAgICBpZiAobVN1cmZhY2UgIT0gRUdMX05PX1NVUkZBQ0Up
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZWdsRGVzdHJveVN1cmZhY2UobURpc3Bs
YXksIG1TdXJmYWNlKTsKKyAgICAgICAgICAgICAgICBtU3VyZmFjZSA9IEVHTF9OT19TVVJGQUNF
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobUNvbnRleHQgIT0gRUdMX05PX0NP
TlRFWFQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZWdsRGVzdHJveUNvbnRleHQo
bURpc3BsYXksIG1Db250ZXh0KTsKKyAgICAgICAgICAgICAgICBtQ29udGV4dCA9IEVHTF9OT19D
T05URVhUOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBlZ2xUZXJtaW5hdGUobURpc3Bs
YXkpOworICAgICAgICAgICAgbURpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKKyAgICAgICAgfQor
CisgICAgICAgIG1PU1dpbmRvdy0+ZGVzdHJveSgpOworICAgICAgICBTYWZlRGVsZXRlKG1PU1dp
bmRvdyk7CisgICAgfQorCisgICAgdm9pZCBkcmF3UXVhZFVzaW5nR0woKQorICAgIHsKKyAgICAg
ICAgR0x1aW50IG0yRFByb2dyYW07CisgICAgICAgIEdMaW50IG1UZXh0dXJlMkRVbmlmb3JtTG9j
YXRpb247CisKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0K
KyAgICAgICAgICAgIFNIQURFUl9TT1VSQ0UocHJlY2lzaW9uIGhpZ2hwIGZsb2F0OyBhdHRyaWJ1
dGUgdmVjNCBwb3NpdGlvbjsgdmFyeWluZyB2ZWMyIHRleGNvb3JkOworCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbi54
eSwgMC4wLCAxLjApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4Y29vcmQgPSAo
cG9zaXRpb24ueHkgKiAwLjUpICsgMC41OworICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsK
KworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZTJEID0KKyAg
ICAgICAgICAgIFNIQURFUl9TT1VSQ0UocHJlY2lzaW9uIGhpZ2hwIGZsb2F0OyB1bmlmb3JtIHNh
bXBsZXIyRCB0ZXg7IHZhcnlpbmcgdmVjMiB0ZXhjb29yZDsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQodGV4LCB0ZXhj
b29yZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgIG0yRFByb2dy
YW0gICAgICAgICAgICAgICAgPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZy
YWdtZW50U2hhZGVyU291cmNlMkQpOworICAgICAgICBtVGV4dHVyZTJEVW5pZm9ybUxvY2F0aW9u
ID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obTJEUHJvZ3JhbSwgInRleCIpOworCisgICAgICAgIHVp
bnQ4X3QgdGV4dHVyZUluaXREYXRhWzE2XSA9IHsKKyAgICAgICAgICAgIDI1NSwgMCwgICAwLCAg
IDI1NSwgIC8vIFJlZAorICAgICAgICAgICAgMCwgICAyNTUsIDAsICAgMjU1LCAgLy8gR3JlZW4K
KyAgICAgICAgICAgIDAsICAgMCwgICAyNTUsIDI1NSwgIC8vIEJsdWUKKyAgICAgICAgICAgIDI1
NSwgMjU1LCAwLCAgIDI1NSAgIC8vIFJlZCArIEdyZWVuCisgICAgICAgIH07CisKKyAgICAgICAg
Ly8gQ3JlYXRlIGEgc2ltcGxlIFJHQkEgdGV4dHVyZQorICAgICAgICBHTHVpbnQgdGV4ID0gMDsK
KyAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4KTsKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShH
TF9URVhUVVJFXzJELCB0ZXgpOworICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwg
MCwgR0xfUkdCQSwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAg
ICAgICAgICAgICAgIHRleHR1cmVJbml0RGF0YSk7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgICAg
ICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBH
TF9ORUFSRVNUKTsKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgLy8g
RHJhdyBhIHF1YWQgdXNpbmcgdGhlIHRleHR1cmUKKyAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9C
VUZGRVJfQklUKTsKKyAgICAgICAgZ2xVc2VQcm9ncmFtKG0yRFByb2dyYW0pOworICAgICAgICBn
bFVuaWZvcm0xaShtVGV4dHVyZTJEVW5pZm9ybUxvY2F0aW9uLCAwKTsKKworICAgICAgICBHTGlu
dCBwb3NpdGlvbkxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtMkRQcm9ncmFtLCAicG9z
aXRpb24iKTsKKyAgICAgICAgZ2xVc2VQcm9ncmFtKG0yRFByb2dyYW0pOworICAgICAgICBjb25z
dCBHTGZsb2F0IHZlcnRpY2VzW10gPQorICAgICAgICB7CisgICAgICAgICAgICAtMS4wZiwgIDEu
MGYsIDAuNWYsCisgICAgICAgICAgICAtMS4wZiwgLTEuMGYsIDAuNWYsCisgICAgICAgICAgICAg
MS4wZiwgLTEuMGYsIDAuNWYsCisgICAgICAgICAgICAtMS4wZiwgIDEuMGYsIDAuNWYsCisgICAg
ICAgICAgICAgMS4wZiwgLTEuMGYsIDAuNWYsCisgICAgICAgICAgICAgMS4wZiwgIDEuMGYsIDAu
NWYsCisgICAgICAgIH07CisKKyAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0aW9u
TG9jYXRpb24sIDMsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgdmVydGljZXMpOworICAgICAgICBn
bEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHBvc2l0aW9uTG9jYXRpb24pOworCisgICAgICAgIGds
RHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDYpOworICAgICAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKKworICAgICAgICBnbERlbGV0ZVByb2dyYW0obTJEUHJvZ3JhbSk7CisgICAgfQorCisg
ICAgdm9pZCBjaGVja1BpeGVsc1VzaW5nR0woKQorICAgIHsKKyAgICAgICAgLy8gTm90ZSB0aGF0
IHRoZSB0ZXh0dXJlIGlzIGluIEJHUkEgZm9ybWF0CisgICAgICAgIEVYUEVDVF9QSVhFTF9FUSgw
LCAwLCAyNTUsIDAsIDAsIDI1NSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFJlZAorICAgICAgICBFWFBFQ1RfUElYRUxfRVEobVdpbmRvd1dpZHRoIC0gMSwgMCwgMCwgMjU1
LCAwLCAyNTUpOyAgICAgICAgICAgICAgICAgICAvLyBHcmVlbgorICAgICAgICBFWFBFQ1RfUElY
RUxfRVEoMCwgbVdpbmRvd1dpZHRoIC0gMSwgMCwgMCwgMjU1LCAyNTUpOyAgICAgICAgICAgICAg
ICAgICAvLyBCbHVlCisgICAgICAgIEVYUEVDVF9QSVhFTF9FUShtV2luZG93V2lkdGggLSAxLCBt
V2luZG93V2lkdGggLSAxLCAyNTUsIDI1NSwgMCwgMjU1KTsgIC8vIFJlZCArIGdyZWVuCisgICAg
fQorCisgICAgdm9pZCBjaGVja1BpeGVsc1VzaW5nRDNEKGJvb2wgdXNpbmdQcmVzZW50UGF0aEZh
c3QpCisgICAgeworICAgICAgICBBU1NFUlRfTkUobnVsbHB0ciwgbU9mZnNjcmVlblN1cmZhY2VE
M0QxMVRleHR1cmUpOworCisgICAgICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIHRleHR1cmVEZXNj
ID0gezB9OworICAgICAgICBJRDNEMTFEZXZpY2UgKmRldmljZTsKKyAgICAgICAgSUQzRDExRGV2
aWNlQ29udGV4dCAqY29udGV4dDsKKyAgICAgICAgbU9mZnNjcmVlblN1cmZhY2VEM0QxMVRleHR1
cmUtPkdldERlc2MoJnRleHR1cmVEZXNjKTsKKyAgICAgICAgbU9mZnNjcmVlblN1cmZhY2VEM0Qx
MVRleHR1cmUtPkdldERldmljZSgmZGV2aWNlKTsKKyAgICAgICAgZGV2aWNlLT5HZXRJbW1lZGlh
dGVDb250ZXh0KCZjb250ZXh0KTsKKyAgICAgICAgQVNTRVJUX05FKG51bGxwdHIsIGRldmljZSk7
CisgICAgICAgIEFTU0VSVF9ORShudWxscHRyLCBjb250ZXh0KTsKKworICAgICAgICB0ZXh0dXJl
RGVzYy5DUFVBY2Nlc3NGbGFncyAgPSBEM0QxMV9DUFVfQUNDRVNTX1JFQUQ7CisgICAgICAgIHRl
eHR1cmVEZXNjLlVzYWdlICAgICAgICAgICA9IEQzRDExX1VTQUdFX1NUQUdJTkc7CisgICAgICAg
IHRleHR1cmVEZXNjLkJpbmRGbGFncyAgICAgICA9IDA7CisgICAgICAgIHRleHR1cmVEZXNjLk1p
c2NGbGFncyAgICAgICA9IDA7CisgICAgICAgIElEM0QxMVRleHR1cmUyRCAqY3B1VGV4dHVyZSA9
IG51bGxwdHI7CisgICAgICAgIEFTU0VSVF9UUlVFKFNVQ0NFRURFRChkZXZpY2UtPkNyZWF0ZVRl
eHR1cmUyRCgmdGV4dHVyZURlc2MsIG51bGxwdHIsICZjcHVUZXh0dXJlKSkpOworCisgICAgICAg
IGNvbnRleHQtPkNvcHlSZXNvdXJjZShjcHVUZXh0dXJlLCBtT2Zmc2NyZWVuU3VyZmFjZUQzRDEx
VGV4dHVyZSk7CisKKyAgICAgICAgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIG1hcHBlZFN1YnJl
c291cmNlOworICAgICAgICBjb250ZXh0LT5NYXAoY3B1VGV4dHVyZSwgMCwgRDNEMTFfTUFQX1JF
QUQsIDAsICZtYXBwZWRTdWJyZXNvdXJjZSk7CisgICAgICAgIEFTU0VSVF9FUShzdGF0aWNfY2Fz
dDxVSU5UPihtV2luZG93V2lkdGggKiA0KSwgbWFwcGVkU3VicmVzb3VyY2UuUm93UGl0Y2gpOwor
ICAgICAgICBBU1NFUlRfRVEoc3RhdGljX2Nhc3Q8VUlOVD4obVdpbmRvd1dpZHRoICogbVdpbmRv
d1dpZHRoICogNCksIG1hcHBlZFN1YnJlc291cmNlLkRlcHRoUGl0Y2gpOworCisgICAgICAgIGFu
Z2xlOjpHTENvbG9yICpieXRlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8YW5nbGU6OkdMQ29sb3Ig
Kj4obWFwcGVkU3VicmVzb3VyY2UucERhdGEpOworCisgICAgICAgIC8vIE5vdGUgdGhhdCB0aGUg
dGV4dHVyZSBpcyBpbiBCR1JBIGZvcm1hdCwgYWx0aG91Z2ggdGhlIEdMQ29sb3Igc3RydWN0IGlz
IFJHQkEKKyAgICAgICAgR0xDb2xvciBleHBlY3RlZFRvcExlZnRQaXhlbCAgICAgPSBHTENvbG9y
KDAsICAgMCwgMjU1LCAyNTUpOyAgLy8gUmVkCisgICAgICAgIEdMQ29sb3IgZXhwZWN0ZWRUb3BS
aWdodFBpeGVsICAgID0gR0xDb2xvcigwLCAyNTUsICAgMCwgMjU1KTsgIC8vIEdyZWVuCisgICAg
ICAgIEdMQ29sb3IgZXhwZWN0ZWRCb3R0b21MZWZ0UGl4ZWwgID0gR0xDb2xvcigyNTUsIDAsICAg
MCwgMjU1KTsgIC8vIEJsdWUKKyAgICAgICAgR0xDb2xvciBleHBlY3RlZEJvdHRvbVJpZ2h0UGl4
ZWwgPSBHTENvbG9yKDAsIDI1NSwgMjU1LCAyNTUpOyAgLy8gUmVkICsgR3JlZW4KKworICAgICAg
ICBpZiAodXNpbmdQcmVzZW50UGF0aEZhc3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIElu
dmVydCB0aGUgZXhwZWN0ZWQgdmFsdWVzCisgICAgICAgICAgICBHTENvbG9yIHRlbXBUb3BMZWZ0
ICAgICAgPSBleHBlY3RlZFRvcExlZnRQaXhlbDsKKyAgICAgICAgICAgIEdMQ29sb3IgdGVtcFRv
cFJpZ2h0ICAgICA9IGV4cGVjdGVkVG9wUmlnaHRQaXhlbDsKKyAgICAgICAgICAgIGV4cGVjdGVk
VG9wTGVmdFBpeGVsICAgICA9IGV4cGVjdGVkQm90dG9tTGVmdFBpeGVsOworICAgICAgICAgICAg
ZXhwZWN0ZWRUb3BSaWdodFBpeGVsICAgID0gZXhwZWN0ZWRCb3R0b21SaWdodFBpeGVsOworICAg
ICAgICAgICAgZXhwZWN0ZWRCb3R0b21MZWZ0UGl4ZWwgID0gdGVtcFRvcExlZnQ7CisgICAgICAg
ICAgICBleHBlY3RlZEJvdHRvbVJpZ2h0UGl4ZWwgPSB0ZW1wVG9wUmlnaHQ7CisgICAgICAgIH0K
KworICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRUb3BMZWZ0UGl4ZWwsIGJ5dGVEYXRhWzBdKTsK
KyAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkVG9wUmlnaHRQaXhlbCwgYnl0ZURhdGFbKG1XaW5k
b3dXaWR0aCAtIDEpXSk7CisgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZEJvdHRvbUxlZnRQaXhl
bCwgYnl0ZURhdGFbKG1XaW5kb3dXaWR0aCAtIDEpICogbVdpbmRvd1dpZHRoXSk7CisgICAgICAg
IEVYUEVDVF9FUShleHBlY3RlZEJvdHRvbVJpZ2h0UGl4ZWwsCisgICAgICAgICAgICAgICAgICBi
eXRlRGF0YVsobVdpbmRvd1dpZHRoIC0gMSkgKiBtV2luZG93V2lkdGggKyAobVdpbmRvd1dpZHRo
IC0gMSldKTsKKworICAgICAgICBjb250ZXh0LT5Vbm1hcChjcHVUZXh0dXJlLCAwKTsKKyAgICAg
ICAgU2FmZVJlbGVhc2UoY3B1VGV4dHVyZSk7CisgICAgICAgIFNhZmVSZWxlYXNlKGRldmljZSk7
CisgICAgICAgIFNhZmVSZWxlYXNlKGNvbnRleHQpOworICAgIH0KKworICAgIEVHTERpc3BsYXkg
bURpc3BsYXk7CisgICAgRUdMQ29udGV4dCBtQ29udGV4dDsKKyAgICBFR0xTdXJmYWNlIG1TdXJm
YWNlOworICAgIElEM0QxMVRleHR1cmUyRCAqbU9mZnNjcmVlblN1cmZhY2VEM0QxMVRleHR1cmU7
CisgICAgRUdMQ29uZmlnIG1Db25maWc7CisgICAgT1NXaW5kb3cgKm1PU1dpbmRvdzsKKyAgICBH
TGludCBtV2luZG93V2lkdGg7Cit9OworCisvLyBUZXN0IHRoYXQgcmVuZGVyaW5nIGJhc2ljIGNv
bnRlbnQgb250byBhIHdpbmRvdyBzdXJmYWNlIHdoZW4gcHJlc2VudCBwYXRoIGZhc3QKKy8vIGlz
IGVuYWJsZWQgd29ya3MgYXMgZXhwZWN0ZWQKK1RFU1RfUChFR0xQcmVzZW50UGF0aEQzRDExLCBX
aW5kb3dQcmVzZW50UGF0aEZhc3QpCit7CisgICAgaW5pdGlhbGl6ZUVHTCh0cnVlKTsKKyAgICBj
cmVhdGVXaW5kb3dTdXJmYWNlKCk7CisgICAgbWFrZUN1cnJlbnQoKTsKKworICAgIGRyYXdRdWFk
VXNpbmdHTCgpOworCisgICAgY2hlY2tQaXhlbHNVc2luZ0dMKCk7Cit9CisKKy8vIFRlc3QgdGhh
dCByZW5kZXJpbmcgYmFzaWMgY29udGVudCBvbnRvIGEgY2xpZW50IGJ1ZmZlciBzdXJmYWNlIHdo
ZW4gcHJlc2VudCBwYXRoIGZhc3QKKy8vIHdvcmtzIGFzIGV4cGVjdGVkLCBhbmQgaXMgYWxzbyBv
cmllbnRlZCB0aGUgY29ycmVjdCB3YXkgYXJvdW5kCitURVNUX1AoRUdMUHJlc2VudFBhdGhEM0Qx
MSwgQ2xpZW50QnVmZmVyUHJlc2VudFBhdGhGYXN0KQoreworICAgIGluaXRpYWxpemVFR0wodHJ1
ZSk7CisgICAgY3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXJTdXJmYWNlKCk7CisgICAgbWFr
ZUN1cnJlbnQoKTsKKworICAgIGRyYXdRdWFkVXNpbmdHTCgpOworCisgICAgY2hlY2tQaXhlbHNV
c2luZ0dMKCk7CisgICAgY2hlY2tQaXhlbHNVc2luZ0QzRCh0cnVlKTsKK30KKworLy8gVGVzdCB0
aGF0IHJlbmRlcmluZyBiYXNpYyBjb250ZW50IG9udG8gYSB3aW5kb3cgc3VyZmFjZSB3aGVuIHBy
ZXNlbnQgcGF0aCBmYXN0CisvLyBpcyBkaXNhYmxlZCB3b3JrcyBhcyBleHBlY3RlZAorVEVTVF9Q
KEVHTFByZXNlbnRQYXRoRDNEMTEsIFdpbmRvd1ByZXNlbnRQYXRoQ29weSkKK3sKKyAgICBpbml0
aWFsaXplRUdMKGZhbHNlKTsKKyAgICBjcmVhdGVXaW5kb3dTdXJmYWNlKCk7CisgICAgbWFrZUN1
cnJlbnQoKTsKKworICAgIGRyYXdRdWFkVXNpbmdHTCgpOworCisgICAgY2hlY2tQaXhlbHNVc2lu
Z0dMKCk7Cit9CisKKy8vIFRlc3QgdGhhdCByZW5kZXJpbmcgYmFzaWMgY29udGVudCBvbnRvIGEg
Y2xpZW50IGJ1ZmZlciBzdXJmYWNlIHdoZW4gcHJlc2VudCBwYXRoCisvLyBmYXN0IGlzIGRpc2Fi
bGVkIHdvcmtzIGFzIGV4cGVjdGVkLCBhbmQgaXMgYWxzbyBvcmllbnRlZCB0aGUgY29ycmVjdCB3
YXkgYXJvdW5kCitURVNUX1AoRUdMUHJlc2VudFBhdGhEM0QxMSwgQ2xpZW50QnVmZmVyUHJlc2Vu
dFBhdGhDb3B5KQoreworICAgIGluaXRpYWxpemVFR0woZmFsc2UpOworICAgIGNyZWF0ZVBidWZm
ZXJGcm9tQ2xpZW50QnVmZmVyU3VyZmFjZSgpOworICAgIG1ha2VDdXJyZW50KCk7CisKKyAgICBk
cmF3UXVhZFVzaW5nR0woKTsKKworICAgIGNoZWNrUGl4ZWxzVXNpbmdHTCgpOworICAgIGNoZWNr
UGl4ZWxzVXNpbmdEM0QoZmFsc2UpOworfQorCitBTkdMRV9JTlNUQU5USUFURV9URVNUKEVHTFBy
ZXNlbnRQYXRoRDNEMTEsIEVTMl9EM0QxMSgpLCBFUzJfRDNEMTFfRkw5XzMoKSk7ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2VnbF90ZXN0cy9FR0xRdWVyeUNvbnRleHRUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFF1ZXJ5Q29udGV4dFRl
c3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9lZ2xfdGVzdHMvRUdMUXVlcnlDb250ZXh0VGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxNTMgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKwor
I2luY2x1ZGUgPEVHTC9lZ2wuaD4KKyNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisKKyNpbmNsdWRl
ICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmlncy5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5n
bGU7CisKK2NsYXNzIEVHTFF1ZXJ5Q29udGV4dFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdp
dGhQYXJhbTxQbGF0Zm9ybVBhcmFtZXRlcnM+Cit7CisgIHB1YmxpYzoKKyAgICB2b2lkIFNldFVw
KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGludCBjbGllbnRWZXJzaW9uID0gR2V0UGFyYW0o
KS5tYWpvclZlcnNpb247CisKKyAgICAgICAgUEZORUdMR0VUUExBVEZPUk1ESVNQTEFZRVhUUFJP
QyBlZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQgPSByZWludGVycHJldF9jYXN0PFBGTkVHTEdFVFBM
QVRGT1JNRElTUExBWUVYVFBST0M+KGVnbEdldFByb2NBZGRyZXNzKCJlZ2xHZXRQbGF0Zm9ybURp
c3BsYXlFWFQiKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKGVnbEdldFBsYXRmb3JtRGlzcGxheUVY
VCAhPSBOVUxMKTsKKworICAgICAgICBFR0xpbnQgZGlzcGF0dHJzW10gPQorICAgICAgICB7Cisg
ICAgICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9BTkdMRSwgR2V0UGFyYW0oKS5nZXRS
ZW5kZXJlcigpLAorICAgICAgICAgICAgRUdMX05PTkUKKyAgICAgICAgfTsKKyAgICAgICAgbURp
c3BsYXkgPSBlZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQoCisgICAgICAgICAgICBFR0xfUExBVEZP
Uk1fQU5HTEVfQU5HTEUsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqPihFR0xfREVGQVVMVF9ESVNQ
TEFZKSwgZGlzcGF0dHJzKTsKKyAgICAgICAgRVhQRUNUX1RSVUUobURpc3BsYXkgIT0gRUdMX05P
X0RJU1BMQVkpOworICAgICAgICBFWFBFQ1RfVFJVRShlZ2xJbml0aWFsaXplKG1EaXNwbGF5LCBO
VUxMLCBOVUxMKSAhPSBFR0xfRkFMU0UpOworCisgICAgICAgIEVHTGludCBuY2ZnOworICAgICAg
ICBFR0xpbnQgY2ZnYXR0cnNbXSA9CisgICAgICAgIHsKKyAgICAgICAgICAgIEVHTF9SRURfU0la
RSwgOCwKKyAgICAgICAgICAgIEVHTF9HUkVFTl9TSVpFLCA4LAorICAgICAgICAgICAgRUdMX0JM
VUVfU0laRSwgOCwKKyAgICAgICAgICAgIEVHTF9SRU5ERVJBQkxFX1RZUEUsIGNsaWVudFZlcnNp
b24gPT0gMyA/IEVHTF9PUEVOR0xfRVMzX0JJVCA6IEVHTF9PUEVOR0xfRVMyX0JJVCwKKyAgICAg
ICAgICAgIEVHTF9TVVJGQUNFX1RZUEUsIEVHTF9QQlVGRkVSX0JJVCwKKyAgICAgICAgICAgIEVH
TF9OT05FCisgICAgICAgIH07CisgICAgICAgIEVYUEVDVF9UUlVFKGVnbENob29zZUNvbmZpZyht
RGlzcGxheSwgY2ZnYXR0cnMsICZtQ29uZmlnLCAxLCAmbmNmZykgIT0gRUdMX0ZBTFNFKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUobmNmZyA9PSAxKTsKKworICAgICAgICBFR0xpbnQgY3R4YXR0cnNb
XSA9CisgICAgICAgIHsKKyAgICAgICAgICAgIEVHTF9DT05URVhUX0NMSUVOVF9WRVJTSU9OLCBj
bGllbnRWZXJzaW9uLAorICAgICAgICAgICAgRUdMX05PTkUKKyAgICAgICAgfTsKKyAgICAgICAg
bUNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KG1EaXNwbGF5LCBtQ29uZmlnLCBOVUxMLCBjdHhh
dHRycyk7CisgICAgICAgIEVYUEVDVF9UUlVFKG1Db250ZXh0ICE9IEVHTF9OT19DT05URVhUKTsK
KworICAgICAgICBFR0xpbnQgc3VyZmF0dHJzW10gPQorICAgICAgICB7CisgICAgICAgICAgICBF
R0xfV0lEVEgsIDE2LAorICAgICAgICAgICAgRUdMX0hFSUdIVCwgMTYsCisgICAgICAgICAgICBF
R0xfTk9ORQorICAgICAgICB9OworICAgICAgICBtU3VyZmFjZSA9IGVnbENyZWF0ZVBidWZmZXJT
dXJmYWNlKG1EaXNwbGF5LCBtQ29uZmlnLCBzdXJmYXR0cnMpOworICAgICAgICBFWFBFQ1RfVFJV
RShtU3VyZmFjZSAhPSBFR0xfTk9fU1VSRkFDRSk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93
bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBlZ2xNYWtlQ3VycmVudChtRGlzcGxheSwgRUdM
X05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7CisgICAgICAgIGVn
bERlc3Ryb3lDb250ZXh0KG1EaXNwbGF5LCBtQ29udGV4dCk7CisgICAgICAgIGVnbERlc3Ryb3lT
dXJmYWNlKG1EaXNwbGF5LCBtU3VyZmFjZSk7CisgICAgICAgIGVnbFRlcm1pbmF0ZShtRGlzcGxh
eSk7CisgICAgfQorCisgICAgRUdMRGlzcGxheSBtRGlzcGxheTsKKyAgICBFR0xDb25maWcgbUNv
bmZpZzsKKyAgICBFR0xDb250ZXh0IG1Db250ZXh0OworICAgIEVHTFN1cmZhY2UgbVN1cmZhY2U7
Cit9OworCitURVNUX1AoRUdMUXVlcnlDb250ZXh0VGVzdCwgR2V0Q29uZmlnSUQpCit7CisgICAg
RUdMaW50IGNvbmZpZ0lkLCBjb250ZXh0Q29uZmlnSWQ7CisgICAgRVhQRUNUX1RSVUUoZWdsR2V0
Q29uZmlnQXR0cmliKG1EaXNwbGF5LCBtQ29uZmlnLCBFR0xfQ09ORklHX0lELCAmY29uZmlnSWQp
ICE9IEVHTF9GQUxTRSk7CisgICAgRVhQRUNUX1RSVUUoZWdsUXVlcnlDb250ZXh0KG1EaXNwbGF5
LCBtQ29udGV4dCwgRUdMX0NPTkZJR19JRCwgJmNvbnRleHRDb25maWdJZCkgIT0gRUdMX0ZBTFNF
KTsKKyAgICBFWFBFQ1RfVFJVRShjb25maWdJZCA9PSBjb250ZXh0Q29uZmlnSWQpOworfQorCitU
RVNUX1AoRUdMUXVlcnlDb250ZXh0VGVzdCwgR2V0Q2xpZW50VHlwZSkKK3sKKyAgICBFR0xpbnQg
Y2xpZW50VHlwZTsKKyAgICBFWFBFQ1RfVFJVRShlZ2xRdWVyeUNvbnRleHQobURpc3BsYXksIG1D
b250ZXh0LCBFR0xfQ09OVEVYVF9DTElFTlRfVFlQRSwgJmNsaWVudFR5cGUpICE9IEVHTF9GQUxT
RSk7CisgICAgRVhQRUNUX1RSVUUoY2xpZW50VHlwZSA9PSBFR0xfT1BFTkdMX0VTX0FQSSk7Cit9
CisKK1RFU1RfUChFR0xRdWVyeUNvbnRleHRUZXN0LCBHZXRDbGllbnRWZXJzaW9uKQoreworICAg
IEVHTGludCBjbGllbnRWZXJzaW9uOworICAgIEVYUEVDVF9UUlVFKGVnbFF1ZXJ5Q29udGV4dCht
RGlzcGxheSwgbUNvbnRleHQsIEVHTF9DT05URVhUX0NMSUVOVF9WRVJTSU9OLCAmY2xpZW50VmVy
c2lvbikgIT0gRUdMX0ZBTFNFKTsKKyAgICBFWFBFQ1RfVFJVRShjbGllbnRWZXJzaW9uID09IEdl
dFBhcmFtKCkubWFqb3JWZXJzaW9uKTsKK30KKworVEVTVF9QKEVHTFF1ZXJ5Q29udGV4dFRlc3Qs
IEdldFJlbmRlckJ1ZmZlck5vU3VyZmFjZSkKK3sKKyAgICBFR0xpbnQgcmVuZGVyQnVmZmVyOwor
ICAgIEVYUEVDVF9UUlVFKGVnbFF1ZXJ5Q29udGV4dChtRGlzcGxheSwgbUNvbnRleHQsIEVHTF9S
RU5ERVJfQlVGRkVSLCAmcmVuZGVyQnVmZmVyKSAhPSBFR0xfRkFMU0UpOworICAgIEVYUEVDVF9U
UlVFKHJlbmRlckJ1ZmZlciA9PSBFR0xfTk9ORSk7Cit9CisKK1RFU1RfUChFR0xRdWVyeUNvbnRl
eHRUZXN0LCBHZXRSZW5kZXJCdWZmZXJCb3VuZFN1cmZhY2UpCit7CisgICAgRUdMaW50IHJlbmRl
ckJ1ZmZlciwgY29udGV4dFJlbmRlckJ1ZmZlcjsKKyAgICBFWFBFQ1RfVFJVRShlZ2xRdWVyeVN1
cmZhY2UobURpc3BsYXksIG1TdXJmYWNlLCBFR0xfUkVOREVSX0JVRkZFUiwgJnJlbmRlckJ1ZmZl
cikgIT0gRUdMX0ZBTFNFKTsKKyAgICBFWFBFQ1RfVFJVRShlZ2xNYWtlQ3VycmVudChtRGlzcGxh
eSwgbVN1cmZhY2UsIG1TdXJmYWNlLCBtQ29udGV4dCkgIT0gRUdMX0ZBTFNFKTsKKyAgICBFWFBF
Q1RfVFJVRShlZ2xRdWVyeUNvbnRleHQobURpc3BsYXksIG1Db250ZXh0LCBFR0xfUkVOREVSX0JV
RkZFUiwgJmNvbnRleHRSZW5kZXJCdWZmZXIpICE9IEVHTF9GQUxTRSk7CisgICAgRVhQRUNUX1RS
VUUocmVuZGVyQnVmZmVyID09IGNvbnRleHRSZW5kZXJCdWZmZXIpOworfQorCitURVNUX1AoRUdM
UXVlcnlDb250ZXh0VGVzdCwgQmFkRGlzcGxheSkKK3sKKyAgICBFR0xpbnQgdmFsOworICAgIEVY
UEVDVF9UUlVFKGVnbFF1ZXJ5Q29udGV4dChFR0xfTk9fRElTUExBWSwgbUNvbnRleHQsIEVHTF9D
T05URVhUX0NMSUVOVF9UWVBFLCAmdmFsKSA9PSBFR0xfRkFMU0UpOworICAgIEVYUEVDVF9UUlVF
KGVnbEdldEVycm9yKCkgPT0gRUdMX0JBRF9ESVNQTEFZKTsKK30KKworVEVTVF9QKEVHTFF1ZXJ5
Q29udGV4dFRlc3QsIE5vdEluaXRpYWxpemVkKQoreworICAgIEVHTGludCB2YWw7CisgICAgVGVh
ckRvd24oKTsKKyAgICBFWFBFQ1RfVFJVRShlZ2xRdWVyeUNvbnRleHQobURpc3BsYXksIG1Db250
ZXh0LCBFR0xfQ09OVEVYVF9DTElFTlRfVFlQRSwgJnZhbCkgPT0gRUdMX0ZBTFNFKTsKKyAgICBF
WFBFQ1RfVFJVRShlZ2xHZXRFcnJvcigpID09IEVHTF9OT1RfSU5JVElBTElaRUQpOworCisgICAg
bURpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKKyAgICBtU3VyZmFjZSA9IEVHTF9OT19TVVJGQUNF
OworICAgIG1Db250ZXh0ID0gRUdMX05PX0NPTlRFWFQ7Cit9CisKK1RFU1RfUChFR0xRdWVyeUNv
bnRleHRUZXN0LCBCYWRDb250ZXh0KQoreworICAgIEVHTGludCB2YWw7CisgICAgRVhQRUNUX1RS
VUUoZWdsUXVlcnlDb250ZXh0KG1EaXNwbGF5LCBFR0xfTk9fQ09OVEVYVCwgRUdMX0NPTlRFWFRf
Q0xJRU5UX1RZUEUsICZ2YWwpID09IEVHTF9GQUxTRSk7CisgICAgRVhQRUNUX1RSVUUoZWdsR2V0
RXJyb3IoKSA9PSBFR0xfQkFEX0NPTlRFWFQpOworfQorCitURVNUX1AoRUdMUXVlcnlDb250ZXh0
VGVzdCwgQmFkQXR0cmlidXRlKQoreworICAgIEVHTGludCB2YWw7CisgICAgRVhQRUNUX1RSVUUo
ZWdsUXVlcnlDb250ZXh0KG1EaXNwbGF5LCBtQ29udGV4dCwgRUdMX0hFSUdIVCwgJnZhbCkgPT0g
RUdMX0ZBTFNFKTsKKyAgICBFWFBFQ1RfVFJVRShlZ2xHZXRFcnJvcigpID09IEVHTF9CQURfQVRU
UklCVVRFKTsKK30KKworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChFR0xRdWVyeUNvbnRleHRUZXN0
LCBFUzJfRDNEOSgpLCBFUzJfRDNEMTEoKSwgRVMyX0QzRDExX0ZMOV8zKCksIEVTMl9PUEVOR0wo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExKCksIEVTM19PUEVOR0woKSk7Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFJvYnVz
dG5lc3NUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZWdsX3Rlc3RzL0VHTFJvYnVzdG5lc3NUZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFJvYnVzdG5lc3NU
ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIzNCBAQAorLy8KKy8vIENvcHlyaWdo
dCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisK
Ky8vIEVHTFJvYnVzdG5lc3NUZXN0LmNwcDogdGVzdHMgZm9yIEVHTF9FWFRfY3JlYXRlX2NvbnRl
eHRfcm9idXN0bmVzcworCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKworI2luY2x1ZGUgPEVH
TC9lZ2wuaD4KKyNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisKKyNpbmNsdWRlICJPU1dpbmRvdy5o
IgorI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBh
bmdsZTsKKworY2xhc3MgRUdMUm9idXN0bmVzc1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0
V2l0aFBhcmFtPGFuZ2xlOjpQbGF0Zm9ybVBhcmFtZXRlcnM+Cit7CisgIHB1YmxpYzoKKyAgICB2
b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIG1PU1dpbmRvdyA9IENyZWF0ZU9T
V2luZG93KCk7CisgICAgICAgIG1PU1dpbmRvdy0+aW5pdGlhbGl6ZSgiRUdMUm9idXN0bmVzc1Rl
c3QiLCA1MDAsIDUwMCk7CisgICAgICAgIG1PU1dpbmRvdy0+c2V0VmlzaWJsZSh0cnVlKTsKKwor
ICAgICAgICBhdXRvIGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
UEZORUdMR0VUUExBVEZPUk1ESVNQTEFZRVhUUFJPQz4oCisgICAgICAgICAgICBlZ2xHZXRQcm9j
QWRkcmVzcygiZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUIikpOworCisgICAgICAgIGNvbnN0IGF1
dG8gJnBsYXRmb3JtID0gR2V0UGFyYW0oKS5lZ2xQYXJhbWV0ZXJzOworCisgICAgICAgIHN0ZDo6
dmVjdG9yPEVHTGludD4gZGlzcGxheUF0dHJpYnV0ZXM7CisgICAgICAgIGRpc3BsYXlBdHRyaWJ1
dGVzLnB1c2hfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9BTkdMRSk7CisgICAgICAgIGRp
c3BsYXlBdHRyaWJ1dGVzLnB1c2hfYmFjayhwbGF0Zm9ybS5yZW5kZXJlcik7CisgICAgICAgIGRp
c3BsYXlBdHRyaWJ1dGVzLnB1c2hfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfTUFYX1ZFUlNJT05f
TUFKT1JfQU5HTEUpOworICAgICAgICBkaXNwbGF5QXR0cmlidXRlcy5wdXNoX2JhY2socGxhdGZv
cm0ubWFqb3JWZXJzaW9uKTsKKyAgICAgICAgZGlzcGxheUF0dHJpYnV0ZXMucHVzaF9iYWNrKEVH
TF9QTEFURk9STV9BTkdMRV9NQVhfVkVSU0lPTl9NSU5PUl9BTkdMRSk7CisgICAgICAgIGRpc3Bs
YXlBdHRyaWJ1dGVzLnB1c2hfYmFjayhwbGF0Zm9ybS5taW5vclZlcnNpb24pOworCisgICAgICAg
IGlmIChwbGF0Zm9ybS5kZXZpY2VUeXBlICE9IEVHTF9ET05UX0NBUkUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRpc3BsYXlBdHRyaWJ1dGVzLnB1c2hfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVf
REVWSUNFX1RZUEVfQU5HTEUpOworICAgICAgICAgICAgZGlzcGxheUF0dHJpYnV0ZXMucHVzaF9i
YWNrKHBsYXRmb3JtLmRldmljZVR5cGUpOworICAgICAgICB9CisKKyAgICAgICAgZGlzcGxheUF0
dHJpYnV0ZXMucHVzaF9iYWNrKEVHTF9OT05FKTsKKworICAgICAgICBtRGlzcGxheSA9IGVnbEdl
dFBsYXRmb3JtRGlzcGxheUVYVChFR0xfUExBVEZPUk1fQU5HTEVfQU5HTEUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAq
PihtT1NXaW5kb3ctPmdldE5hdGl2ZURpc3BsYXkoKSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZkaXNwbGF5QXR0cmlidXRlc1swXSk7CisgICAgICAgIEFT
U0VSVF9ORShFR0xfTk9fRElTUExBWSwgbURpc3BsYXkpOworCisgICAgICAgIEFTU0VSVF9UUlVF
KGVnbEluaXRpYWxpemUobURpc3BsYXksIG51bGxwdHIsIG51bGxwdHIpID09IEVHTF9UUlVFKTsK
KworICAgICAgICBjb25zdCBjaGFyICpleHRlbnNpb25zID0gZWdsUXVlcnlTdHJpbmcobURpc3Bs
YXksIEVHTF9FWFRFTlNJT05TKTsKKyAgICAgICAgaWYgKHN0cnN0cihleHRlbnNpb25zLCAiRUdM
X0VYVF9jcmVhdGVfY29udGV4dF9yb2J1c3RuZXNzIikgPT0gbnVsbHB0cikKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgZHVlIHRvIG1pc3NpbmcgRUdM
X0VYVF9jcmVhdGVfY29udGV4dF9yb2J1c3RuZXNzIgorICAgICAgICAgICAgICAgICAgICAgIDw8
IHN0ZDo6ZW5kbDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlu
dCBuQ29uZmlncyA9IDA7CisgICAgICAgIEFTU0VSVF9UUlVFKGVnbEdldENvbmZpZ3MobURpc3Bs
YXksIG51bGxwdHIsIDAsICZuQ29uZmlncykgPT0gRUdMX1RSVUUpOworICAgICAgICBBU1NFUlRf
TEUoMSwgbkNvbmZpZ3MpOworCisgICAgICAgIGludCBuUmV0dXJuZWRDb25maWdzID0gMDsKKyAg
ICAgICAgQVNTRVJUX1RSVUUoZWdsR2V0Q29uZmlncyhtRGlzcGxheSwgJm1Db25maWcsIDEsICZu
UmV0dXJuZWRDb25maWdzKSA9PSBFR0xfVFJVRSk7CisgICAgICAgIEFTU0VSVF9FUSgxLCBuUmV0
dXJuZWRDb25maWdzKTsKKworICAgICAgICBtV2luZG93ID0gZWdsQ3JlYXRlV2luZG93U3VyZmFj
ZShtRGlzcGxheSwgbUNvbmZpZywgbU9TV2luZG93LT5nZXROYXRpdmVXaW5kb3coKSwgbnVsbHB0
cik7CisgICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworCisgICAgICAgIG1Jbml0aWFsaXpl
ZCA9IHRydWU7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAgewor
ICAgICAgICBlZ2xEZXN0cm95U3VyZmFjZShtRGlzcGxheSwgbVdpbmRvdyk7CisgICAgICAgIGVn
bERlc3Ryb3lDb250ZXh0KG1EaXNwbGF5LCBtQ29udGV4dCk7CisgICAgICAgIGVnbE1ha2VDdXJy
ZW50KG1EaXNwbGF5LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19DT05U
RVhUKTsKKyAgICAgICAgZWdsVGVybWluYXRlKG1EaXNwbGF5KTsKKyAgICAgICAgRVhQRUNUX0VH
TF9TVUNDRVNTKCk7CisKKyAgICAgICAgU2FmZURlbGV0ZShtT1NXaW5kb3cpOworICAgIH0KKwor
ICAgIHZvaWQgY3JlYXRlQ29udGV4dChFR0xpbnQgcmVzZXRTdHJhdGVneSkKKyAgICB7CisgICAg
ICAgIGNvbnN0IEVHTGludCBjb250ZXh0QXR0cmlic1tdID0ge0VHTF9DT05URVhUX0NMSUVOVF9W
RVJTSU9OLCAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xf
Q09OVEVYVF9PUEVOR0xfUkVTRVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZX0VYVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRTdHJhdGVneSwgRUdMX05PTkV9
OworICAgICAgICBtQ29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQobURpc3BsYXksIG1Db25maWcs
IEVHTF9OT19DT05URVhULCBjb250ZXh0QXR0cmlicyk7CisgICAgICAgIEFTU0VSVF9ORShFR0xf
Tk9fQ09OVEVYVCwgbUNvbnRleHQpOworCisgICAgICAgIGVnbE1ha2VDdXJyZW50KG1EaXNwbGF5
LCBtV2luZG93LCBtV2luZG93LCBtQ29udGV4dCk7CisgICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VT
UygpOworCisgICAgICAgIGNvbnN0IGNoYXIgKmV4dGVuc2lvblN0cmluZyA9IHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhciAqPihnbEdldFN0cmluZyhHTF9FWFRFTlNJT05TKSk7CisgICAgICAg
IEFTU0VSVF9ORShudWxscHRyLCBzdHJzdHIoZXh0ZW5zaW9uU3RyaW5nLCAiR0xfQU5HTEVfaW5z
dGFuY2VkX2FycmF5cyIpKTsKKworICAgICAgICBtRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUg
PQorICAgICAgICAgICAgKFBGTkdMRFJBV0VMRU1FTlRTSU5TVEFOQ0VEQU5HTEVQUk9DKWVnbEdl
dFByb2NBZGRyZXNzKCJnbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFIik7CisgICAgICAgIEFT
U0VSVF9ORShudWxscHRyLCBtRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOworICAgIH0KKwor
ICAgIHZvaWQgZm9yY2VDb250ZXh0UmVzZXQoKQorICAgIHsKKyAgICAgICAgLy8gQ2F1c2UgYSBH
UFUgcmVzZXQgYnkgZHJhd2luZyAxMDAsMDAwLDAwMCBmdWxsc2NyZWVuIHF1YWRzCisgICAgICAg
IEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0oCisgICAgICAgICAgICAiYXR0cmlidXRl
IHZlYzQgcG9zO1xuIgorICAgICAgICAgICAgInZvaWQgbWFpbigpIHtnbF9Qb3NpdGlvbiA9IHBv
czt9XG4iLAorICAgICAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAg
ICAgICAgInZvaWQgbWFpbigpIHtnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7fVxuIik7CisgICAg
ICAgIEFTU0VSVF9ORSgwdSwgcHJvZ3JhbSk7CisgICAgICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFt
KTsKKworICAgICAgICBHTGZsb2F0IHZlcnRpY2VzW10gPSB7CisgICAgICAgICAgICAtMS4wZiwg
LTEuMGYsIDAuMGYsIDEuMGYsIC0xLjBmLCAxLjBmLCAwLjBmLCAxLjBmLAorICAgICAgICAgICAg
MS4wZiwgIC0xLjBmLCAwLjBmLCAxLjBmLCAxLjBmLCAgMS4wZiwgMC4wZiwgMS4wZiwKKyAgICAg
ICAgfTsKKworICAgICAgICBjb25zdCBpbnQga051bVF1YWRzID0gMTAwMDA7CisgICAgICAgIHN0
ZDo6dmVjdG9yPEdMdXNob3J0PiBpbmRpY2VzKDYgKiBrTnVtUXVhZHMpOworCisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwga051bVF1YWRzOyBpKyspCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGluZGljZXNbaSAqIDYgKyAwXSA9IDA7CisgICAgICAgICAgICBpbmRpY2VzW2kgKiA2ICsg
MV0gPSAxOworICAgICAgICAgICAgaW5kaWNlc1tpICogNiArIDJdID0gMjsKKyAgICAgICAgICAg
IGluZGljZXNbaSAqIDYgKyAzXSA9IDE7CisgICAgICAgICAgICBpbmRpY2VzW2kgKiA2ICsgNF0g
PSAyOworICAgICAgICAgICAgaW5kaWNlc1tpICogNiArIDVdID0gMzsKKyAgICAgICAgfQorCisg
ICAgICAgIGdsQmluZEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIDAsICJwb3MiKTsKKyAgICAgICAg
Z2xWZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDQsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgdmVydGlj
ZXMpOworICAgICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOworCisgICAgICAgIGds
Vmlld3BvcnQoMCwgMCwgbU9TV2luZG93LT5nZXRXaWR0aCgpLCBtT1NXaW5kb3ctPmdldEhlaWdo
dCgpKTsKKyAgICAgICAgZ2xDbGVhckNvbG9yKDEuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgICAg
IGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgICAgIG1EcmF3RWxlbWVudHNJbnN0
YW5jZWRBTkdMRShHTF9UUklBTkdMRVMsIGtOdW1RdWFkcyAqIDYsIEdMX1VOU0lHTkVEX1NIT1JU
LCBpbmRpY2VzLmRhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEw
MDAwKTsKKworICAgICAgICBnbEZpbmlzaCgpOworICAgIH0KKworICBwcm90ZWN0ZWQ6CisgICAg
RUdMRGlzcGxheSBtRGlzcGxheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRUdMX05PX0RJU1BMQVk7CisgICAgRUdMU3VyZmFjZSBtV2luZG93ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRUdMX05PX1NVUkZBQ0U7Cisg
ICAgYm9vbCBtSW5pdGlhbGl6ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gZmFsc2U7CisgICAgUEZOR0xEUkFXRUxFTUVOVFNJTlNUQU5DRURBTkdMRVBS
T0MgbURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFID0gbnVsbHB0cjsKKworICBwcml2YXRlOgor
ICAgIEVHTENvbnRleHQgbUNvbnRleHQgPSBFR0xfTk9fQ09OVEVYVDsKKyAgICBFR0xDb25maWcg
bUNvbmZpZyAgID0gMDsKKyAgICBPU1dpbmRvdyAqbU9TV2luZG93ID0gbnVsbHB0cjsKK307CisK
Ky8vIENoZWNrIGdsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCByZXR1cm5zIEdMX05PX0VSUk9S
IGlmIHdlIGRpZCBub3RoaW5nCitURVNUX1AoRUdMUm9idXN0bmVzc1Rlc3QsIE5vRXJyb3JCeURl
ZmF1bHQpCit7CisgICAgaWYgKCFtSW5pdGlhbGl6ZWQpCisgICAgeworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIEFTU0VSVF9UUlVFKGdsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCgpID09
IEdMX05PX0VSUk9SKTsKK30KKworLy8gQ2hlY2tzIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGdldHMg
bm8gbG9zcyB3aXRoIE5PX1JFU0VUX05PVElGSUNBVElPTgorVEVTVF9QKEVHTFJvYnVzdG5lc3NU
ZXN0LCBESVNBQkxFRF9Ob1Jlc2V0Tm90aWZpY2F0aW9uKQoreworICAgIGlmICghbUluaXRpYWxp
emVkKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNyZWF0ZUNvbnRleHQo
RUdMX05PX1JFU0VUX05PVElGSUNBVElPTl9FWFQpOworCisgICAgaWYgKCFJc1dpbmRvd3MoKSkK
KyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxlZCBvbiBub24gV2luZG93
cyBwbGF0Zm9ybXMgYmVjYXVzZSBkcml2ZXJzIGNhbid0IHJlY292ZXIuICIKKyAgICAgICAgICAg
ICAgICAgIDw8ICJTZWUgIiA8PCBfX0ZJTEVfXyA8PCAiOiIgPDwgX19MSU5FX18gPDwgc3RkOjpl
bmRsOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHN0ZDo6Y291dCA8PCAiQ2F1c2luZyBh
IEdQVSByZXNldCwgYnJhY2UgZm9yIGltcGFjdC4iIDw8IHN0ZDo6ZW5kbDsKKworICAgIGZvcmNl
Q29udGV4dFJlc2V0KCk7CisgICAgQVNTRVJUX1RSVUUoZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVz
RVhUKCkgPT0gR0xfTk9fRVJST1IpOworfQorCisvLyBDaGVja3MgdGhhdCByZXNldHRpbmcgdGhl
IEFOR0xFIGRpc3BsYXkgYWxsb3dzIHRvIGdldCByaWQgb2YgdGhlIGNvbnRleHQgbG9zcy4KKy8v
IEFsc28gY2hlY2tzIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGdldHMgbm90aWZpZWQgb2YgdGhlIGxv
c3Mgb2YgdGhlIGRpc3BsYXkuCisvLyBXZSBjb2FsZXNjZSBib3RoIHRlc3RzIHRvIHJlZHVjZSB0
aGUgbnVtYmVyIG9mIFREUnMgZG9uZSBvbiBXaW5kb3dzOiBieSBkZWZhdWx0CisvLyBoYXZpbmcg
bW9yZSB0aGFuIDUgVERScyBpbiBhIG1pbnV0ZSB3aWxsIGNhdXNlIFdpbmRvd3MgdG8gZGlzYWJs
ZSB0aGUgR1BVIHVudGlsCisvLyB0aGUgY29tcHV0ZXIgaXMgcmVib290ZWQuCitURVNUX1AoRUdM
Um9idXN0bmVzc1Rlc3QsIERJU0FCTEVEX1Jlc2V0dGluZ0Rpc3BsYXlXb3JrcykKK3sKKyAgICBp
ZiAoIW1Jbml0aWFsaXplZCkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBj
cmVhdGVDb250ZXh0KEVHTF9MT1NFX0NPTlRFWFRfT05fUkVTRVRfRVhUKTsKKworICAgIGlmICgh
SXNXaW5kb3dzKCkpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3QgZGlzYWJsZWQg
b24gbm9uIFdpbmRvd3MgcGxhdGZvcm1zIGJlY2F1c2UgZHJpdmVycyBjYW4ndCByZWNvdmVyLiAi
CisgICAgICAgICAgICAgICAgICA8PCAiU2VlICIgPDwgX19GSUxFX18gPDwgIjoiIDw8IF9fTElO
RV9fIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBzdGQ6OmNvdXQg
PDwgIkNhdXNpbmcgYSBHUFUgcmVzZXQsIGJyYWNlIGZvciBpbXBhY3QuIiA8PCBzdGQ6OmVuZGw7
CisKKyAgICBmb3JjZUNvbnRleHRSZXNldCgpOworICAgIEFTU0VSVF9UUlVFKGdsR2V0R3JhcGhp
Y3NSZXNldFN0YXR1c0VYVCgpICE9IEdMX05PX0VSUk9SKTsKKworICAgIFRlYXJEb3duKCk7Cisg
ICAgU2V0VXAoKTsKKyAgICBBU1NFUlRfVFJVRShnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQo
KSA9PSBHTF9OT19FUlJPUik7Cit9CisKKy8vIFRlc3RzIGNhdXNpbmcgR1BVIHJlc2V0cyBhcmUg
ZGlzYWJsZWQsIHVzZSB0aGUgZm9sbG93aW5nIGFyZ3MgdG8gcnVuIHRoZW06CisvLyAtLWd0ZXN0
X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzIC0tZ3Rlc3RfZmlsdGVyPUVHTFJvYnVzdG5lc3NUZXN0
XCoKKworLy8gTm90ZSB0aGF0IG9uIFdpbmRvd3MgdGhlIE9wZW5HTCBkcml2ZXIgZmFpbHMgaGFy
ZCAocG9wdXAgdGhhdCBjbG9zZXMgdGhlIGFwcGxpY2F0aW9uKQorLy8gaWYgdGhlcmUgd2FzIGEg
VERSIGNhdXNlZCBieSBEM0Qgc28gd2UgZG9uJ3QgcnVuIEQzRCB0ZXN0cyBhdCB0aGUgc2FtZSB0
aW1lIGFzIHRoZSBPcGVuR0wgdGVzdHMuCisjZGVmaW5lIEQzRF9IQVNfUFJJT1JJVFkgMQorI2lm
IEQzRF9IQVNfUFJJT1JJVFkgJiYgKGRlZmluZWQoQU5HTEVfRU5BQkxFX0QzRDkpIHx8IGRlZmlu
ZWQoQU5HTEVfRU5BQkxFX0QzRDExKSkKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoRUdMUm9idXN0
bmVzc1Rlc3QsIEVTMl9EM0Q5KCksIEVTMl9EM0QxMSgpKTsKKyNlbHNlCitBTkdMRV9JTlNUQU5U
SUFURV9URVNUKEVHTFJvYnVzdG5lc3NUZXN0LCBFUzJfT1BFTkdMKCkpOworI2VuZGlmCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFNhbml0eUNo
ZWNrVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2VnbF90ZXN0cy9FR0xTYW5pdHlDaGVja1Rlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMU2FuaXR5Q2hlY2tU
ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMwIEBACisvLworLy8gQ29weXJpZ2h0
IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBF
R0xTYW5pdHlDaGVja1Rlc3QuY3BwOgorLy8gICAgICB0ZXN0cyB1c2VkIHRvIGNoZWNrIHNldHVw
IGluIHdoaWNoIHRlc3RzIGFyZSBydW4uCisKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorCisj
aW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKworLy8gQ2hlY2tzIHRoZSB0ZXN0cyBh
cmUgcnVubmluZyBhZ2FpbnN0IEFOR0xFCitURVNUKEVHTFNhbml0eUNoZWNrVGVzdCwgSXNSdW5u
aW5nT25BTkdMRSkKK3sKKyAgICBjb25zdCBjaGFyICpleHRlbnNpb25TdHJpbmcgPQorICAgICAg
ICBzdGF0aWNfY2FzdDxjb25zdCBjaGFyICo+KGVnbFF1ZXJ5U3RyaW5nKEVHTF9OT19ESVNQTEFZ
LCBFR0xfRVhURU5TSU9OUykpOworICAgIEFTU0VSVF9ORShzdHJzdHIoZXh0ZW5zaW9uU3RyaW5n
LCAiRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlIiksIG51bGxwdHIpOworfQorCisvLyBDaGVja3Mg
dGhhdCBnZXR0aW5nIGZ1bmN0aW9uIHBvaW50ZXIgd29ya3MKK1RFU1QoRUdMU2FuaXR5Q2hlY2tU
ZXN0LCBIYXNHZXRQbGF0Zm9ybURpc3BsYXlFWFQpCit7CisgICAgUEZORUdMR0VUUExBVEZPUk1E
SVNQTEFZRVhUUFJPQyBlZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQgPQorICAgICAgICByZWludGVy
cHJldF9jYXN0PFBGTkVHTEdFVFBMQVRGT1JNRElTUExBWUVYVFBST0M+KAorICAgICAgICAgICAg
ZWdsR2V0UHJvY0FkZHJlc3MoImVnbEdldFBsYXRmb3JtRGlzcGxheUVYVCIpKTsKKworICAgIEFT
U0VSVF9ORShlZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQsIG51bGxwdHIpOworfQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xTdHJlYW1UZXN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rl
c3RzL0VHTFN0cmVhbVRlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMU3RyZWFtVGVzdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw1NDcgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBFR0xTdHJlYW1UZXN0OgorLy8gICBU
ZXN0cyBwZXJ0YWluaW5nIHRvIGVnbDo6U3RyZWFtLgorLy8KKworI2luY2x1ZGUgPGd0ZXN0L2d0
ZXN0Lmg+CisKKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJtZWRpYS95dXZ0ZXN0Lmlu
bCIKKyNpbmNsdWRlICJPU1dpbmRvdy5oIgorI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0
LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNlCit7CisKK2NsYXNzIEVH
TFN0cmVhbVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBFR0xT
dHJlYW1UZXN0KCkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7CisgICAgICAg
IHNldFdpbmRvd0hlaWdodCgxMjgpOworICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOworICAg
ICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgp
OworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0RlcHRo
Qml0cygyNCk7CisgICAgfQorfTsKKworLy8gVGVzdHMgdmFsaWRhdGlvbiBvZiB0aGUgc3RyZWFt
IEFQSQorVEVTVF9QKEVHTFN0cmVhbVRlc3QsIFN0cmVhbVZhbGlkYXRpb25UZXN0KQoreworICAg
IEVHTFdpbmRvdyAqd2luZG93ICAgICAgICAgICAgPSBnZXRFR0xXaW5kb3coKTsKKyAgICBFR0xE
aXNwbGF5IGRpc3BsYXkgICAgICAgICAgID0gd2luZG93LT5nZXREaXNwbGF5KCk7CisgICAgY29u
c3QgY2hhciAqZXh0ZW5zaW9uc1N0cmluZyA9IGVnbFF1ZXJ5U3RyaW5nKGRpc3BsYXksIEVHTF9F
WFRFTlNJT05TKTsKKyAgICBpZiAoc3Ryc3RyKGV4dGVuc2lvbnNTdHJpbmcsICJFR0xfS0hSX3N0
cmVhbSIpID09IG51bGxwdHIpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlN0cmVhbSBl
eHRlbnNpb24gbm90IHN1cHBvcnRlZCIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgY29uc3QgRUdMaW50IHN0cmVhbUF0dHJpYnV0ZXNCYWRbXSA9IHsKKyAgICAg
ICAgRUdMX1NUUkVBTV9TVEFURV9LSFIsCisgICAgICAgIDAsCisgICAgICAgIEVHTF9OT05FLAor
ICAgICAgICBFR0xfUFJPRFVDRVJfRlJBTUVfS0hSLAorICAgICAgICAwLAorICAgICAgICBFR0xf
Tk9ORSwKKyAgICAgICAgRUdMX0NPTlNVTUVSX0ZSQU1FX0tIUiwKKyAgICAgICAgMCwKKyAgICAg
ICAgRUdMX05PTkUsCisgICAgICAgIEVHTF9DT05TVU1FUl9MQVRFTkNZX1VTRUNfS0hSLAorICAg
ICAgICAtMSwKKyAgICAgICAgRUdMX05PTkUsCisgICAgICAgIEVHTF9SRURfU0laRSwKKyAgICAg
ICAgRUdMX0RPTlRfQ0FSRSwKKyAgICAgICAgRUdMX05PTkUsCisgICAgfTsKKworICAgIC8vIFZh
bGlkYXRlIGNyZWF0ZSBzdHJlYW0gYXR0cmlidXRlcworICAgIEVHTFN0cmVhbUtIUiBzdHJlYW0g
PSBlZ2xDcmVhdGVTdHJlYW1LSFIoZGlzcGxheSwgJnN0cmVhbUF0dHJpYnV0ZXNCYWRbMF0pOwor
ICAgIEFTU0VSVF9FR0xfRVJST1IoRUdMX0JBRF9BQ0NFU1MpOworICAgIEFTU0VSVF9FUShFR0xf
Tk9fU1RSRUFNX0tIUiwgc3RyZWFtKTsKKworICAgIHN0cmVhbSA9IGVnbENyZWF0ZVN0cmVhbUtI
UihkaXNwbGF5LCAmc3RyZWFtQXR0cmlidXRlc0JhZFszXSk7CisgICAgQVNTRVJUX0VHTF9FUlJP
UihFR0xfQkFEX0FDQ0VTUyk7CisgICAgQVNTRVJUX0VRKEVHTF9OT19TVFJFQU1fS0hSLCBzdHJl
YW0pOworCisgICAgc3RyZWFtID0gZWdsQ3JlYXRlU3RyZWFtS0hSKGRpc3BsYXksICZzdHJlYW1B
dHRyaWJ1dGVzQmFkWzZdKTsKKyAgICBBU1NFUlRfRUdMX0VSUk9SKEVHTF9CQURfQUNDRVNTKTsK
KyAgICBBU1NFUlRfRVEoRUdMX05PX1NUUkVBTV9LSFIsIHN0cmVhbSk7CisKKyAgICBzdHJlYW0g
PSBlZ2xDcmVhdGVTdHJlYW1LSFIoZGlzcGxheSwgJnN0cmVhbUF0dHJpYnV0ZXNCYWRbOV0pOwor
ICAgIEFTU0VSVF9FR0xfRVJST1IoRUdMX0JBRF9QQVJBTUVURVIpOworICAgIEFTU0VSVF9FUShF
R0xfTk9fU1RSRUFNX0tIUiwgc3RyZWFtKTsKKworICAgIHN0cmVhbSA9IGVnbENyZWF0ZVN0cmVh
bUtIUihkaXNwbGF5LCAmc3RyZWFtQXR0cmlidXRlc0JhZFsxMl0pOworICAgIEFTU0VSVF9FR0xf
RVJST1IoRUdMX0JBRF9BVFRSSUJVVEUpOworICAgIEFTU0VSVF9FUShFR0xfTk9fU1RSRUFNX0tI
Uiwgc3RyZWFtKTsKKworICAgIGNvbnN0IEVHTGludCBzdHJlYW1BdHRyaWJ1dGVzW10gPSB7Cisg
ICAgICAgIEVHTF9DT05TVU1FUl9MQVRFTkNZX1VTRUNfS0hSLCAwLCBFR0xfTk9ORSwKKyAgICB9
OworCisgICAgc3RyZWFtID0gZWdsQ3JlYXRlU3RyZWFtS0hSKEVHTF9OT19ESVNQTEFZLCBzdHJl
YW1BdHRyaWJ1dGVzKTsKKyAgICBBU1NFUlRfRUdMX0VSUk9SKEVHTF9CQURfRElTUExBWSk7Cisg
ICAgQVNTRVJUX0VRKEVHTF9OT19TVFJFQU1fS0hSLCBzdHJlYW0pOworCisgICAgLy8gQ3JlYXRl
IGFuIGFjdHVhbCBzdHJlYW0KKyAgICBzdHJlYW0gPSBlZ2xDcmVhdGVTdHJlYW1LSFIoZGlzcGxh
eSwgc3RyZWFtQXR0cmlidXRlcyk7CisgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CisgICAgQVNT
RVJUX05FKEVHTF9OT19TVFJFQU1fS0hSLCBzdHJlYW0pOworCisgICAgLy8gQXNzZXJ0IGl0IGlz
IGluIHRoZSBjcmVhdGVkIHN0YXRlCisgICAgRUdMaW50IHN0YXRlOworICAgIGVnbFF1ZXJ5U3Ry
ZWFtS0hSKGRpc3BsYXksIHN0cmVhbSwgRUdMX1NUUkVBTV9TVEFURV9LSFIsICZzdGF0ZSk7Cisg
ICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CisgICAgQVNTRVJUX0VRKEVHTF9TVFJFQU1fU1RBVEVf
Q1JFQVRFRF9LSFIsIHN0YXRlKTsKKworICAgIC8vIFRlc3QgZ2V0dGluZyBhbmQgc2V0dGluZyB0
aGUgbGF0ZW5jeQorICAgIEVHTGludCBsYXRlbmN5ID0gMTA7CisgICAgZWdsU3RyZWFtQXR0cmli
S0hSKGRpc3BsYXksIHN0cmVhbSwgRUdMX0NPTlNVTUVSX0xBVEVOQ1lfVVNFQ19LSFIsIGxhdGVu
Y3kpOworICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworICAgIGVnbFF1ZXJ5U3RyZWFtS0hSKGRp
c3BsYXksIHN0cmVhbSwgRUdMX0NPTlNVTUVSX0xBVEVOQ1lfVVNFQ19LSFIsICZsYXRlbmN5KTsK
KyAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKyAgICBBU1NFUlRfRVEoMTAsIGxhdGVuY3kpOwor
ICAgIGVnbFN0cmVhbUF0dHJpYktIUihkaXNwbGF5LCBzdHJlYW0sIEVHTF9DT05TVU1FUl9MQVRF
TkNZX1VTRUNfS0hSLCAtMSk7CisgICAgQVNTRVJUX0VHTF9FUlJPUihFR0xfQkFEX1BBUkFNRVRF
Uik7CisgICAgQVNTRVJUX0VRKDEwLCBsYXRlbmN5KTsKKworICAgIC8vIFRlc3QgdGhlIDY0LWJp
dCBxdWVyaWVzCisgICAgRUdMdWludDY0S0hSIHZhbHVlOworICAgIGVnbFF1ZXJ5U3RyZWFtdTY0
S0hSKGRpc3BsYXksIHN0cmVhbSwgRUdMX0NPTlNVTUVSX0ZSQU1FX0tIUiwgJnZhbHVlKTsKKyAg
ICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKyAgICBlZ2xRdWVyeVN0cmVhbXU2NEtIUihkaXNwbGF5
LCBzdHJlYW0sIEVHTF9QUk9EVUNFUl9GUkFNRV9LSFIsICZ2YWx1ZSk7CisgICAgQVNTRVJUX0VH
TF9TVUNDRVNTKCk7CisKKyAgICAvLyBEZXN0cm95IHRoZSBzdHJlYW0KKyAgICBlZ2xEZXN0cm95
U3RyZWFtS0hSKGRpc3BsYXksIHN0cmVhbSk7CisgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Cit9
CisKKy8vIFRlc3RzIHZhbGlkYXRpb24gb2Ygc3RyZWFtIGNvbnN1bWVyIGdsdGV4dHVyZSBBUEkK
K1RFU1RfUChFR0xTdHJlYW1UZXN0LCBTdHJlYW1Db25zdW1lckdMVGV4dHVyZVZhbGlkYXRpb25U
ZXN0KQoreworICAgIEVHTFdpbmRvdyAqd2luZG93ICAgICAgICAgICAgPSBnZXRFR0xXaW5kb3co
KTsKKyAgICBFR0xEaXNwbGF5IGRpc3BsYXkgICAgICAgICAgID0gd2luZG93LT5nZXREaXNwbGF5
KCk7CisgICAgY29uc3QgY2hhciAqZXh0ZW5zaW9uc1N0cmluZyA9IGVnbFF1ZXJ5U3RyaW5nKGRp
c3BsYXksIEVHTF9FWFRFTlNJT05TKTsKKyAgICBpZiAoc3Ryc3RyKGV4dGVuc2lvbnNTdHJpbmcs
ICJFR0xfS0hSX3N0cmVhbV9jb25zdW1lcl9nbHRleHR1cmUiKSA9PSBudWxscHRyKQorICAgIHsK
KyAgICAgICAgc3RkOjpjb3V0IDw8ICJTdHJlYW0gY29uc3VtZXIgZ2x0ZXh0dXJlIGV4dGVuc2lv
biBub3Qgc3VwcG9ydGVkIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBjb25zdCBFR0xpbnQgc3RyZWFtQXR0cmlidXRlc1tdID0geworICAgICAgICBFR0xfQ09O
U1VNRVJfTEFURU5DWV9VU0VDX0tIUiwgMCwgRUdMX0NPTlNVTUVSX0FDUVVJUkVfVElNRU9VVF9V
U0VDX0tIUiwgMCwgRUdMX05PTkUsCisgICAgfTsKKworICAgIEVHTFN0cmVhbUtIUiBzdHJlYW0g
PSBlZ2xDcmVhdGVTdHJlYW1LSFIoZGlzcGxheSwgc3RyZWFtQXR0cmlidXRlcyk7CisgICAgQVNT
RVJUX0VHTF9TVUNDRVNTKCk7CisKKyAgICBFR0xCb29sZWFuIHJlc3VsdCA9IGVnbFN0cmVhbUNv
bnN1bWVyR0xUZXh0dXJlRXh0ZXJuYWxLSFIoZGlzcGxheSwgc3RyZWFtKTsKKyAgICBBU1NFUlRf
RUdMX0ZBTFNFKHJlc3VsdCk7CisgICAgQVNTRVJUX0VHTF9FUlJPUihFR0xfQkFEX0FDQ0VTUyk7
CisKKyAgICBHTHVpbnQgdGV4OworICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleCk7CisgICAgZ2xC
aW5kVGV4dHVyZShHTF9URVhUVVJFX0VYVEVSTkFMX09FUywgdGV4KTsKKyAgICByZXN1bHQgPSBl
Z2xTdHJlYW1Db25zdW1lckdMVGV4dHVyZUV4dGVybmFsS0hSKGRpc3BsYXksIHN0cmVhbSk7Cisg
ICAgQVNTRVJUX0VHTF9UUlVFKHJlc3VsdCk7CisgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CisK
KyAgICBFR0xpbnQgc3RhdGU7CisgICAgZWdsUXVlcnlTdHJlYW1LSFIoZGlzcGxheSwgc3RyZWFt
LCBFR0xfU1RSRUFNX1NUQVRFX0tIUiwgJnN0YXRlKTsKKyAgICBBU1NFUlRfRUdMX1NVQ0NFU1Mo
KTsKKyAgICBBU1NFUlRfRVEoRUdMX1NUUkVBTV9TVEFURV9DT05ORUNUSU5HX0tIUiwgc3RhdGUp
OworCisgICAgZWdsRGVzdHJveVN0cmVhbUtIUihkaXNwbGF5LCBzdHJlYW0pOworICAgIEFTU0VS
VF9FR0xfU1VDQ0VTUygpOworfQorCisvLyBUZXN0cyB2YWxpZGF0aW9uIG9mIHN0cmVhbSBjb25z
dW1lciBnbHRleHR1cmUgeXV2IEFQSQorVEVTVF9QKEVHTFN0cmVhbVRlc3QsIFN0cmVhbUNvbnN1
bWVyR0xUZXh0dXJlWVVWVmFsaWRhdGlvblRlc3QpCit7CisgICAgRUdMV2luZG93ICp3aW5kb3cg
ICAgICAgICAgICA9IGdldEVHTFdpbmRvdygpOworICAgIEVHTERpc3BsYXkgZGlzcGxheSAgICAg
ICAgICAgPSB3aW5kb3ctPmdldERpc3BsYXkoKTsKKyAgICBjb25zdCBjaGFyICpleHRlbnNpb25z
U3RyaW5nID0gZWdsUXVlcnlTdHJpbmcoZGlzcGxheSwgRUdMX0VYVEVOU0lPTlMpOworICAgIGlm
IChzdHJzdHIoZXh0ZW5zaW9uc1N0cmluZywgIkVHTF9OVl9zdHJlYW1fY29uc3VtZXJfZ2x0ZXh0
dXJlX3l1diIpID09IG51bGxwdHIpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlN0cmVh
bSBjb25zdW1lciBnbHRleHR1cmUgeXV2IGV4dGVuc2lvbiBub3Qgc3VwcG9ydGVkIiA8PCBzdGQ6
OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCBFR0xpbnQgc3RyZWFt
QXR0cmlidXRlc1tdID0geworICAgICAgICBFR0xfQ09OU1VNRVJfTEFURU5DWV9VU0VDX0tIUiwg
MCwgRUdMX0NPTlNVTUVSX0FDUVVJUkVfVElNRU9VVF9VU0VDX0tIUiwgMCwgRUdMX05PTkUsCisg
ICAgfTsKKworICAgIEVHTFN0cmVhbUtIUiBzdHJlYW0gPSBlZ2xDcmVhdGVTdHJlYW1LSFIoZGlz
cGxheSwgc3RyZWFtQXR0cmlidXRlcyk7CisgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CisKKyAg
ICBFR0xBdHRyaWIgY29uc3VtZXJBdHRyaWJ1dGVzQmFkW10gPSB7CisgICAgICAgIEVHTF9DT0xP
Ul9CVUZGRVJfVFlQRSwKKyAgICAgICAgRUdMX1lVVl9CVUZGRVJfRVhULCAgLy8gMAorICAgICAg
ICBFR0xfWVVWX05VTUJFUl9PRl9QTEFORVNfRVhULAorICAgICAgICAwLAorICAgICAgICBFR0xf
Tk9ORSwKKyAgICAgICAgRUdMX0NPTE9SX0JVRkZFUl9UWVBFLAorICAgICAgICBFR0xfWVVWX0JV
RkZFUl9FWFQsICAvLyA1CisgICAgICAgIEVHTF9ZVVZfTlVNQkVSX09GX1BMQU5FU19FWFQsCisg
ICAgICAgIDEsCisgICAgICAgIEVHTF9OT05FLAorICAgICAgICBFR0xfQ09MT1JfQlVGRkVSX1RZ
UEUsCisgICAgICAgIEVHTF9ZVVZfQlVGRkVSX0VYVCwgIC8vIDEwCisgICAgICAgIEVHTF9ZVVZf
TlVNQkVSX09GX1BMQU5FU19FWFQsCisgICAgICAgIDEsCisgICAgICAgIEVHTF9ZVVZfUExBTkUw
X1RFWFRVUkVfVU5JVF9OViwKKyAgICAgICAgOTk5OSwKKyAgICAgICAgRUdMX05PTkUsCisgICAg
ICAgIEVHTF9DT0xPUl9CVUZGRVJfVFlQRSwKKyAgICAgICAgRUdMX1lVVl9CVUZGRVJfRVhULCAg
Ly8gMTcKKyAgICAgICAgRUdMX1lVVl9OVU1CRVJfT0ZfUExBTkVTX0VYVCwKKyAgICAgICAgMSwK
KyAgICAgICAgRUdMX1lVVl9QTEFORTBfVEVYVFVSRV9VTklUX05WLAorICAgICAgICAwLAorICAg
ICAgICBFR0xfWVVWX1BMQU5FMV9URVhUVVJFX1VOSVRfTlYsCisgICAgICAgIDEsCisgICAgICAg
IEVHTF9OT05FLAorICAgICAgICBFR0xfQ09MT1JfQlVGRkVSX1RZUEUsCisgICAgICAgIEVHTF9Z
VVZfQlVGRkVSX0VYVCwgIC8vIDI2CisgICAgICAgIEVHTF9ZVVZfTlVNQkVSX09GX1BMQU5FU19F
WFQsCisgICAgICAgIDIsCisgICAgICAgIEVHTF9ZVVZfUExBTkUwX1RFWFRVUkVfVU5JVF9OViwK
KyAgICAgICAgMCwKKyAgICAgICAgRUdMX1lVVl9QTEFORTFfVEVYVFVSRV9VTklUX05WLAorICAg
ICAgICAwLAorICAgICAgICBFR0xfTk9ORSwKKyAgICB9OworCisgICAgRUdMQXR0cmliIGNvbnN1
bWVyQXR0cmlidXRlc1tdID0geworICAgICAgICBFR0xfQ09MT1JfQlVGRkVSX1RZUEUsCisgICAg
ICAgIEVHTF9ZVVZfQlVGRkVSX0VYVCwKKyAgICAgICAgRUdMX1lVVl9OVU1CRVJfT0ZfUExBTkVT
X0VYVCwKKyAgICAgICAgMiwKKyAgICAgICAgRUdMX1lVVl9QTEFORTBfVEVYVFVSRV9VTklUX05W
LAorICAgICAgICAwLAorICAgICAgICBFR0xfWVVWX1BMQU5FMV9URVhUVVJFX1VOSVRfTlYsCisg
ICAgICAgIDEsCisgICAgICAgIEVHTF9OT05FLAorICAgIH07CisKKyAgICBFR0xCb29sZWFuIHJl
c3VsdCA9CisgICAgICAgIGVnbFN0cmVhbUNvbnN1bWVyR0xUZXh0dXJlRXh0ZXJuYWxBdHRyaWJz
TlYoZGlzcGxheSwgc3RyZWFtLCAmY29uc3VtZXJBdHRyaWJ1dGVzQmFkWzBdKTsKKyAgICBBU1NF
UlRfRUdMX0ZBTFNFKHJlc3VsdCk7CisgICAgQVNTRVJUX0VHTF9FUlJPUihFR0xfQkFEX01BVENI
KTsKKworICAgIHJlc3VsdCA9CisgICAgICAgIGVnbFN0cmVhbUNvbnN1bWVyR0xUZXh0dXJlRXh0
ZXJuYWxBdHRyaWJzTlYoZGlzcGxheSwgc3RyZWFtLCAmY29uc3VtZXJBdHRyaWJ1dGVzQmFkWzVd
KTsKKyAgICBBU1NFUlRfRUdMX0ZBTFNFKHJlc3VsdCk7CisgICAgQVNTRVJUX0VHTF9FUlJPUihF
R0xfQkFEX01BVENIKTsKKworICAgIHJlc3VsdCA9CisgICAgICAgIGVnbFN0cmVhbUNvbnN1bWVy
R0xUZXh0dXJlRXh0ZXJuYWxBdHRyaWJzTlYoZGlzcGxheSwgc3RyZWFtLCAmY29uc3VtZXJBdHRy
aWJ1dGVzQmFkWzEwXSk7CisgICAgQVNTRVJUX0VHTF9GQUxTRShyZXN1bHQpOworICAgIEFTU0VS
VF9FR0xfRVJST1IoRUdMX0JBRF9BQ0NFU1MpOworCisgICAgcmVzdWx0ID0KKyAgICAgICAgZWds
U3RyZWFtQ29uc3VtZXJHTFRleHR1cmVFeHRlcm5hbEF0dHJpYnNOVihkaXNwbGF5LCBzdHJlYW0s
ICZjb25zdW1lckF0dHJpYnV0ZXNCYWRbMTddKTsKKyAgICBBU1NFUlRfRUdMX0ZBTFNFKHJlc3Vs
dCk7CisgICAgQVNTRVJUX0VHTF9FUlJPUihFR0xfQkFEX01BVENIKTsKKworICAgIHJlc3VsdCA9
IGVnbFN0cmVhbUNvbnN1bWVyR0xUZXh0dXJlRXh0ZXJuYWxBdHRyaWJzTlYoZGlzcGxheSwgc3Ry
ZWFtLCBjb25zdW1lckF0dHJpYnV0ZXMpOworICAgIEFTU0VSVF9FR0xfRkFMU0UocmVzdWx0KTsK
KyAgICBBU1NFUlRfRUdMX0VSUk9SKEVHTF9CQURfQUNDRVNTKTsKKworICAgIEdMdWludCB0ZXhb
Ml07CisgICAgZ2xHZW5UZXh0dXJlcygyLCB0ZXgpOworICAgIGdsQWN0aXZlVGV4dHVyZShHTF9U
RVhUVVJFMCk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFX0VYVEVSTkFMX09FUywgdGV4
WzBdKTsKKyAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTEpOworICAgIGdsQmluZFRleHR1
cmUoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIHRleFsxXSk7CisKKyAgICByZXN1bHQgPQorICAg
ICAgICBlZ2xTdHJlYW1Db25zdW1lckdMVGV4dHVyZUV4dGVybmFsQXR0cmlic05WKGRpc3BsYXks
IHN0cmVhbSwgJmNvbnN1bWVyQXR0cmlidXRlc0JhZFsyNl0pOworICAgIEFTU0VSVF9FR0xfRkFM
U0UocmVzdWx0KTsKKyAgICBBU1NFUlRfRUdMX0VSUk9SKEVHTF9CQURfQUNDRVNTKTsKKworICAg
IHJlc3VsdCA9IGVnbFN0cmVhbUNvbnN1bWVyR0xUZXh0dXJlRXh0ZXJuYWxBdHRyaWJzTlYoZGlz
cGxheSwgc3RyZWFtLCBjb25zdW1lckF0dHJpYnV0ZXMpOworICAgIEFTU0VSVF9FR0xfVFJVRShy
ZXN1bHQpOworICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworCisgICAgRUdMaW50IHN0YXRlOwor
ICAgIGVnbFF1ZXJ5U3RyZWFtS0hSKGRpc3BsYXksIHN0cmVhbSwgRUdMX1NUUkVBTV9TVEFURV9L
SFIsICZzdGF0ZSk7CisgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CisgICAgQVNTRVJUX0VRKEVH
TF9TVFJFQU1fU1RBVEVfQ09OTkVDVElOR19LSFIsIHN0YXRlKTsKKworICAgIGVnbERlc3Ryb3lT
dHJlYW1LSFIoZGlzcGxheSwgc3RyZWFtKTsKKyAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKK30K
KworLy8gVGVzdHMgdGhhdCBkZWxldGluZyBhIHRleHR1cmUgaW52YWxpZGF0ZXMgdGhlIGFzc29j
aWF0ZWQgc3RyZWFtCitURVNUX1AoRUdMU3RyZWFtVGVzdCwgU3RyZWFtQ29uc3VtZXJHTFRleHR1
cmVZVVZEZWxldGlvblRlc3QpCit7CisgICAgRUdMV2luZG93ICp3aW5kb3cgICAgICAgICAgICA9
IGdldEVHTFdpbmRvdygpOworICAgIEVHTERpc3BsYXkgZGlzcGxheSAgICAgICAgICAgPSB3aW5k
b3ctPmdldERpc3BsYXkoKTsKKyAgICBjb25zdCBjaGFyICpleHRlbnNpb25zU3RyaW5nID0gZWds
UXVlcnlTdHJpbmcoZGlzcGxheSwgRUdMX0VYVEVOU0lPTlMpOworICAgIGlmIChzdHJzdHIoZXh0
ZW5zaW9uc1N0cmluZywgIkVHTF9BTkdMRV9zdHJlYW1fcHJvZHVjZXJfZDNkX3RleHR1cmVfbnYx
MiIpID09IG51bGxwdHIpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlN0cmVhbSBwcm9k
dWNlciBkM2QgbnYxMiB0ZXh0dXJlIG5vdCBzdXBwb3J0ZWQiIDw8IHN0ZDo6ZW5kbDsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IEVHTGludCBzdHJlYW1BdHRyaWJ1dGVzW10g
PSB7CisgICAgICAgIEVHTF9DT05TVU1FUl9MQVRFTkNZX1VTRUNfS0hSLCAwLCBFR0xfQ09OU1VN
RVJfQUNRVUlSRV9USU1FT1VUX1VTRUNfS0hSLCAwLCBFR0xfTk9ORSwKKyAgICB9OworCisgICAg
RUdMU3RyZWFtS0hSIHN0cmVhbSA9IGVnbENyZWF0ZVN0cmVhbUtIUihkaXNwbGF5LCBzdHJlYW1B
dHRyaWJ1dGVzKTsKKyAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKworICAgIEVHTEF0dHJpYiBj
b25zdW1lckF0dHJpYnV0ZXNbXSA9IHsKKyAgICAgICAgRUdMX0NPTE9SX0JVRkZFUl9UWVBFLAor
ICAgICAgICBFR0xfWVVWX0JVRkZFUl9FWFQsCisgICAgICAgIEVHTF9ZVVZfTlVNQkVSX09GX1BM
QU5FU19FWFQsCisgICAgICAgIDIsCisgICAgICAgIEVHTF9ZVVZfUExBTkUwX1RFWFRVUkVfVU5J
VF9OViwKKyAgICAgICAgMCwKKyAgICAgICAgRUdMX1lVVl9QTEFORTFfVEVYVFVSRV9VTklUX05W
LAorICAgICAgICAxLAorICAgICAgICBFR0xfTk9ORSwKKyAgICB9OworCisgICAgR0x1aW50IHRl
eFsyXTsKKyAgICBnbEdlblRleHR1cmVzKDIsIHRleCk7CisgICAgZ2xBY3RpdmVUZXh0dXJlKEdM
X1RFWFRVUkUwKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCB0
ZXhbMF0pOworICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMSk7CisgICAgZ2xCaW5kVGV4
dHVyZShHTF9URVhUVVJFX0VYVEVSTkFMX09FUywgdGV4WzFdKTsKKworICAgIEVHTEJvb2xlYW4g
cmVzdWx0ID0KKyAgICAgICAgZWdsU3RyZWFtQ29uc3VtZXJHTFRleHR1cmVFeHRlcm5hbEF0dHJp
YnNOVihkaXNwbGF5LCBzdHJlYW0sIGNvbnN1bWVyQXR0cmlidXRlcyk7CisgICAgQVNTRVJUX0VH
TF9UUlVFKHJlc3VsdCk7CisgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CisKKyAgICBFR0xBdHRy
aWIgcHJvZHVjZXJBdHRyaWJ1dGVzW10gPSB7CisgICAgICAgIEVHTF9OT05FLAorICAgIH07CisK
KyAgICByZXN1bHQgPSBlZ2xDcmVhdGVTdHJlYW1Qcm9kdWNlckQzRFRleHR1cmVOVjEyQU5HTEUo
ZGlzcGxheSwgc3RyZWFtLCBwcm9kdWNlckF0dHJpYnV0ZXMpOworICAgIEFTU0VSVF9FR0xfVFJV
RShyZXN1bHQpOworICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworCisgICAgRUdMaW50IHN0YXRl
OworICAgIGVnbFF1ZXJ5U3RyZWFtS0hSKGRpc3BsYXksIHN0cmVhbSwgRUdMX1NUUkVBTV9TVEFU
RV9LSFIsICZzdGF0ZSk7CisgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CisgICAgQVNTRVJUX0VR
KEVHTF9TVFJFQU1fU1RBVEVfRU1QVFlfS0hSLCBzdGF0ZSk7CisKKyAgICAvLyBEZWxldGUgdGhl
IGZpcnN0IHRleHR1cmUsIHdoaWNoIHNob3VsZCBiZSBlbm91Z2ggdG8gaW52YWxpZGF0ZSB0aGUg
c3RyZWFtCisgICAgZ2xEZWxldGVUZXh0dXJlcygxLCB0ZXgpOworCisgICAgZWdsUXVlcnlTdHJl
YW1LSFIoZGlzcGxheSwgc3RyZWFtLCBFR0xfU1RSRUFNX1NUQVRFX0tIUiwgJnN0YXRlKTsKKyAg
ICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKyAgICBBU1NFUlRfRVEoRUdMX1NUUkVBTV9TVEFURV9E
SVNDT05ORUNURURfS0hSLCBzdGF0ZSk7CisKKyAgICBlZ2xEZXN0cm95U3RyZWFtS0hSKGRpc3Bs
YXksIHN0cmVhbSk7CisgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Cit9CisKKy8vIEVuZDJlbmQg
dGVzdCBmb3IgcmVuZGVyaW5nIGFuIE5WMTIgdGV4dHVyZS4gUmVuZGVycyBhIFlVViBxdWFkLCBy
ZWFkcyBiYWNrIHRoZSBSR0IgdmFsdWVzLCBhbmQKKy8vIGVuc3VyZXMgdGhleSBhcmUgY29ycmVj
dAorVEVTVF9QKEVHTFN0cmVhbVRlc3QsIFN0cmVhbVByb2R1Y2VyVGV4dHVyZU5WMTJFbmQyRW5k
KQoreworICAgIEVHTFdpbmRvdyAqd2luZG93ICAgICAgICAgICAgPSBnZXRFR0xXaW5kb3coKTsK
KyAgICBFR0xEaXNwbGF5IGRpc3BsYXkgICAgICAgICAgID0gd2luZG93LT5nZXREaXNwbGF5KCk7
CisgICAgaWYgKCFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZChkaXNwbGF5LCAiRUdMX0FOR0xF
X3N0cmVhbV9wcm9kdWNlcl9kM2RfdGV4dHVyZV9udjEyIikpCisgICAgeworICAgICAgICBzdGQ6
OmNvdXQgPDwgIlN0cmVhbSBwcm9kdWNlciBkM2QgbnYxMiB0ZXh0dXJlIG5vdCBzdXBwb3J0ZWQi
IDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGJvb2wgdXNlRVNT
TDNTaGFkZXJzID0KKyAgICAgICAgZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPj0gMyAmJiBleHRl
bnNpb25FbmFibGVkKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vzc2wzIik7CisKKyAgICAv
LyB5dXYgdG8gcmdiIGNvbnZlcnNpb24gc2hhZGVyIHVzaW5nIE1pY3Jvc29mdCdzIGdpdmVuIGNv
bnZlcnNpb24gZm9ybXVsYXMKKyAgICBzdGQ6OnN0cmluZyB5dXZWUywgeXV2UFM7CisgICAgaWYg
KHVzZUVTU0wzU2hhZGVycykKKyAgICB7CisgICAgICAgIHl1dlZTID0KKyAgICAgICAgICAgICIj
dmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgICAgICJpbiBoaWdocCB2ZWM0IHBvc2l0aW9uO1xu
IgorICAgICAgICAgICAgIm91dCB2ZWMyIHRleGNvb3JkO1xuIgorICAgICAgICAgICAgInZvaWQg
bWFpbih2b2lkKVxuIgorICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICIgICAgZ2xfUG9z
aXRpb24gPSBwb3NpdGlvbjtcbiIKKyAgICAgICAgICAgICIgICAgdGV4Y29vcmQgPSAocG9zaXRp
b24ueHkgKiAwLjUpICsgMC41O1xuIgorICAgICAgICAgICAgIiAgICB0ZXhjb29yZC55ID0gMS4w
IC0gdGV4Y29vcmQueTtcbiIKKyAgICAgICAgICAgICJ9XG4iOworICAgICAgICB5dXZQUyA9Cisg
ICAgICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICAgICAiI2V4dGVuc2lvbiBH
TF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vzc2wzIDogcmVxdWlyZVxuIgorICAgICAgICAgICAg
IiNleHRlbnNpb24gR0xfTlZfRUdMX3N0cmVhbV9jb25zdW1lcl9leHRlcm5hbCA6IHJlcXVpcmVc
biIKKyAgICAgICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCisgICAgICAgICAgICAi
aW4gdmVjMiB0ZXhjb29yZDtcbiIKKyAgICAgICAgICAgICJvdXQgdmVjNCBjb2xvcjtcbiIKKyAg
ICAgICAgICAgICJ1bmlmb3JtIHNhbXBsZXJFeHRlcm5hbE9FUyB5O1xuIgorICAgICAgICAgICAg
InVuaWZvcm0gc2FtcGxlckV4dGVybmFsT0VTIHV2XG47IgorICAgICAgICAgICAgInZvaWQgbWFp
bih2b2lkKVxuIgorICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICIgICAgZmxvYXQgYyA9
IHRleHR1cmUoeSwgdGV4Y29vcmQpLnIgLSAoMTYuMCAvIDI1Ni4wKTtcbiIKKyAgICAgICAgICAg
ICIgICAgZmxvYXQgZCA9IHRleHR1cmUodXYsIHRleGNvb3JkKS5yIC0gMC41O1xuIgorICAgICAg
ICAgICAgIiAgICBmbG9hdCBlID0gdGV4dHVyZSh1diwgdGV4Y29vcmQpLmcgLSAwLjU7XG4iCisg
ICAgICAgICAgICAiICAgIGZsb2F0IHIgPSAxLjE2NDM4MyAqIGMgKyAxLjU5NjAyNyAqIGU7XG4i
CisgICAgICAgICAgICAiICAgIGZsb2F0IGcgPSAxLjE2NDM4MyAqIGMgLSAwLjM5MTc2MiAqIGQg
LSAwLjgxMjk2OCAqIGU7XG4iCisgICAgICAgICAgICAiICAgIGZsb2F0IGIgPSAxLjE2NDM4MyAq
IGMgKyAyLjAxNzIzMiAqIGQ7XG4iCisgICAgICAgICAgICAiICAgIGNvbG9yID0gdmVjNChyLCBn
LCBiLCAxLjApO1xuIgorICAgICAgICAgICAgIn1cbiI7CisgICAgfQorICAgIGVsc2UKKyAgICB7
CisgICAgICAgIHl1dlZTID0KKyAgICAgICAgICAgICJhdHRyaWJ1dGUgaGlnaHAgdmVjNCBwb3Np
dGlvbjtcbiIKKyAgICAgICAgICAgICJ2YXJ5aW5nIHZlYzIgdGV4Y29vcmQ7XG4iCisgICAgICAg
ICAgICAidm9pZCBtYWluKHZvaWQpXG4iCisgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAg
IiAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uO1xuIgorICAgICAgICAgICAgIiAgICB0ZXhjb29y
ZCA9IChwb3NpdGlvbi54eSAqIDAuNSkgKyAwLjU7XG4iCisgICAgICAgICAgICAiICAgIHRleGNv
b3JkLnkgPSAxLjAgLSB0ZXhjb29yZC55O1xuIgorICAgICAgICAgICAgIn1cbiI7CisKKyAgICAg
ICAgeXV2UFMgPQorICAgICAgICAgICAgIiNleHRlbnNpb24gR0xfTlZfRUdMX3N0cmVhbV9jb25z
dW1lcl9leHRlcm5hbCA6IHJlcXVpcmVcbiIKKyAgICAgICAgICAgICJwcmVjaXNpb24gaGlnaHAg
ZmxvYXQ7XG4iCisgICAgICAgICAgICAidmFyeWluZyB2ZWMyIHRleGNvb3JkO1xuIgorICAgICAg
ICAgICAgInVuaWZvcm0gc2FtcGxlckV4dGVybmFsT0VTIHk7XG4iCisgICAgICAgICAgICAidW5p
Zm9ybSBzYW1wbGVyRXh0ZXJuYWxPRVMgdXZcbjsiCisgICAgICAgICAgICAidm9pZCBtYWluKHZv
aWQpXG4iCisgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgIiAgICBmbG9hdCBjID0gdGV4
dHVyZTJEKHksIHRleGNvb3JkKS5yIC0gKDE2LjAgLyAyNTYuMCk7XG4iCisgICAgICAgICAgICAi
ICAgIGZsb2F0IGQgPSB0ZXh0dXJlMkQodXYsIHRleGNvb3JkKS5yIC0gMC41O1xuIgorICAgICAg
ICAgICAgIiAgICBmbG9hdCBlID0gdGV4dHVyZTJEKHV2LCB0ZXhjb29yZCkuZyAtIDAuNTtcbiIK
KyAgICAgICAgICAgICIgICAgZmxvYXQgciA9IDEuMTY0MzgzICogYyArIDEuNTk2MDI3ICogZTtc
biIKKyAgICAgICAgICAgICIgICAgZmxvYXQgZyA9IDEuMTY0MzgzICogYyAtIDAuMzkxNzYyICog
ZCAtIDAuODEyOTY4ICogZTtcbiIKKyAgICAgICAgICAgICIgICAgZmxvYXQgYiA9IDEuMTY0Mzgz
ICogYyArIDIuMDE3MjMyICogZDtcbiIKKyAgICAgICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0g
dmVjNChyLCBnLCBiLCAxLjApO1xuIgorICAgICAgICAgICAgIn1cbiI7CisgICAgfQorCisgICAg
R0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh5dXZWUywgeXV2UFMpOworICAgIEFTU0VS
VF9ORSgwdSwgcHJvZ3JhbSk7CisgICAgR0x1aW50IHlVbmlmb3JtICA9IGdsR2V0VW5pZm9ybUxv
Y2F0aW9uKHByb2dyYW0sICJ5Iik7CisgICAgR0x1aW50IHV2VW5pZm9ybSA9IGdsR2V0VW5pZm9y
bUxvY2F0aW9uKHByb2dyYW0sICJ1diIpOworCisgICAgLy8gRmV0Y2ggdGhlIEQzRDExIGRldmlj
ZQorICAgIEVHTERldmljZUVYVCBlZ2xEZXZpY2U7CisgICAgZWdsUXVlcnlEaXNwbGF5QXR0cmli
RVhUKGRpc3BsYXksIEVHTF9ERVZJQ0VfRVhULCAoRUdMQXR0cmliICopJmVnbERldmljZSk7Cisg
ICAgSUQzRDExRGV2aWNlICpkZXZpY2U7CisgICAgZWdsUXVlcnlEZXZpY2VBdHRyaWJFWFQoZWds
RGV2aWNlLCBFR0xfRDNEMTFfREVWSUNFX0FOR0xFLCAoRUdMQXR0cmliICopJmRldmljZSk7CisK
KyAgICAvLyBDcmVhdGUgdGhlIE5WMTIgRDNEMTEgdGV4dHVyZQorICAgIEhSRVNVTFQgcmVzOwor
ICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIGRlc2M7CisgICAgZGVzYy5XaWR0aCAgICAgICAgICAg
ICAgPSB5dXZ0ZXN0X3dpZHRoOworICAgIGRlc2MuSGVpZ2h0ICAgICAgICAgICAgID0geXV2dGVz
dF9oZWlnaHQ7CisgICAgZGVzYy5Gb3JtYXQgICAgICAgICAgICAgPSBEWEdJX0ZPUk1BVF9OVjEy
OworICAgIGRlc2MuTWlwTGV2ZWxzICAgICAgICAgID0gMTsKKyAgICBkZXNjLkFycmF5U2l6ZSAg
ICAgICAgICA9IDE7CisgICAgZGVzYy5TYW1wbGVEZXNjLkNvdW50ICAgPSAxOworICAgIGRlc2Mu
U2FtcGxlRGVzYy5RdWFsaXR5ID0gMDsKKyAgICBkZXNjLlVzYWdlICAgICAgICAgICAgICA9IEQz
RDExX1VTQUdFX0RFRkFVTFQ7CisgICAgZGVzYy5CaW5kRmxhZ3MgICAgICAgICAgPSBEM0QxMV9C
SU5EX1NIQURFUl9SRVNPVVJDRTsKKyAgICBkZXNjLkNQVUFjY2Vzc0ZsYWdzICAgICA9IDA7Cisg
ICAgZGVzYy5NaXNjRmxhZ3MgICAgICAgICAgPSAwOworCisgICAgRDNEMTFfU1VCUkVTT1VSQ0Vf
REFUQSBzdWJyZXM7CisgICAgc3VicmVzLnBTeXNNZW0gICAgICAgICAgPSB5dXZ0ZXN0X2RhdGE7
CisgICAgc3VicmVzLlN5c01lbVBpdGNoICAgICAgPSB5dXZ0ZXN0X3dpZHRoOworICAgIHN1YnJl
cy5TeXNNZW1TbGljZVBpdGNoID0geXV2dGVzdF93aWR0aCAqIHl1dnRlc3RfaGVpZ2h0ICogMyAv
IDI7CisKKyAgICBJRDNEMTFUZXh0dXJlMkQgKnRleHR1cmUgPSBudWxscHRyOworICAgIHJlcyAg
ICAgICAgICAgICAgICAgICAgICA9IGRldmljZS0+Q3JlYXRlVGV4dHVyZTJEKCZkZXNjLCAmc3Vi
cmVzLCAmdGV4dHVyZSk7CisKKyAgICAvLyBDcmVhdGUgdGhlIHN0cmVhbQorICAgIGNvbnN0IEVH
TGludCBzdHJlYW1BdHRyaWJ1dGVzW10gPSB7CisgICAgICAgIEVHTF9DT05TVU1FUl9MQVRFTkNZ
X1VTRUNfS0hSLCAwLCBFR0xfQ09OU1VNRVJfQUNRVUlSRV9USU1FT1VUX1VTRUNfS0hSLCAwLCBF
R0xfTk9ORSwKKyAgICB9OworCisgICAgRUdMU3RyZWFtS0hSIHN0cmVhbSA9IGVnbENyZWF0ZVN0
cmVhbUtIUihkaXNwbGF5LCBzdHJlYW1BdHRyaWJ1dGVzKTsKKyAgICBBU1NFUlRfRUdMX1NVQ0NF
U1MoKTsKKworICAgIEVHTEF0dHJpYiBjb25zdW1lckF0dHJpYnV0ZXNbXSA9IHsKKyAgICAgICAg
RUdMX0NPTE9SX0JVRkZFUl9UWVBFLAorICAgICAgICBFR0xfWVVWX0JVRkZFUl9FWFQsCisgICAg
ICAgIEVHTF9ZVVZfTlVNQkVSX09GX1BMQU5FU19FWFQsCisgICAgICAgIDIsCisgICAgICAgIEVH
TF9ZVVZfUExBTkUwX1RFWFRVUkVfVU5JVF9OViwKKyAgICAgICAgMCwKKyAgICAgICAgRUdMX1lV
Vl9QTEFORTFfVEVYVFVSRV9VTklUX05WLAorICAgICAgICAxLAorICAgICAgICBFR0xfTk9ORSwK
KyAgICB9OworCisgICAgR0x1aW50IHRleFsyXTsKKyAgICBnbEdlblRleHR1cmVzKDIsIHRleCk7
CisgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfRVhURVJOQUxfT0VTLCB0ZXhbMF0pOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFX0VYVEVSTkFMX09FUywgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOwor
ICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJF
MSk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFX0VYVEVSTkFMX09FUywgdGV4WzFdKTsK
KyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIEdMX1RFWFRVUkVf
TUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAg
IEVHTEJvb2xlYW4gcmVzdWx0ID0KKyAgICAgICAgZWdsU3RyZWFtQ29uc3VtZXJHTFRleHR1cmVF
eHRlcm5hbEF0dHJpYnNOVihkaXNwbGF5LCBzdHJlYW0sIGNvbnN1bWVyQXR0cmlidXRlcyk7Cisg
ICAgQVNTRVJUX0VHTF9UUlVFKHJlc3VsdCk7CisgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CisK
KyAgICBFR0xBdHRyaWIgcHJvZHVjZXJBdHRyaWJ1dGVzW10gPSB7CisgICAgICAgIEVHTF9OT05F
LAorICAgIH07CisKKyAgICByZXN1bHQgPSBlZ2xDcmVhdGVTdHJlYW1Qcm9kdWNlckQzRFRleHR1
cmVOVjEyQU5HTEUoZGlzcGxheSwgc3RyZWFtLCBwcm9kdWNlckF0dHJpYnV0ZXMpOworICAgIEFT
U0VSVF9FR0xfVFJVRShyZXN1bHQpOworICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworCisgICAg
Ly8gSW5zZXJ0IHRoZSBmcmFtZQorICAgIEVHTEF0dHJpYiBmcmFtZUF0dHJpYnV0ZXNbXSA9IHsK
KyAgICAgICAgRUdMX0QzRF9URVhUVVJFX1NVQlJFU09VUkNFX0lEX0FOR0xFLCAwLCBFR0xfTk9O
RSwKKyAgICB9OworICAgIHJlc3VsdCA9IGVnbFN0cmVhbVBvc3REM0RUZXh0dXJlTlYxMkFOR0xF
KGRpc3BsYXksIHN0cmVhbSwgKHZvaWQgKil0ZXh0dXJlLCBmcmFtZUF0dHJpYnV0ZXMpOworICAg
IEFTU0VSVF9FR0xfVFJVRShyZXN1bHQpOworICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworCisg
ICAgRUdMaW50IHN0YXRlOworICAgIGVnbFF1ZXJ5U3RyZWFtS0hSKGRpc3BsYXksIHN0cmVhbSwg
RUdMX1NUUkVBTV9TVEFURV9LSFIsICZzdGF0ZSk7CisgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7
CisgICAgQVNTRVJUX0VRKEVHTF9TVFJFQU1fU1RBVEVfTkVXX0ZSQU1FX0FWQUlMQUJMRV9LSFIs
IHN0YXRlKTsKKworICAgIGVnbFN0cmVhbUNvbnN1bWVyQWNxdWlyZUtIUihkaXNwbGF5LCBzdHJl
YW0pOworICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworCisgICAgZ2xVc2VQcm9ncmFtKHByb2dy
YW0pOworICAgIGdsVW5pZm9ybTFpKHlVbmlmb3JtLCAwKTsKKyAgICBnbFVuaWZvcm0xaSh1dlVu
aWZvcm0sIDEpOworICAgIGRyYXdRdWFkKHByb2dyYW0sICJwb3NpdGlvbiIsIDAuMGYpOworICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgZWdsU3RyZWFtQ29uc3VtZXJSZWxlYXNlS0hS
KGRpc3BsYXksIHN0cmVhbSk7CisgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CisKKyAgICBlZ2xT
d2FwQnVmZmVycyhkaXNwbGF5LCB3aW5kb3ctPmdldFN1cmZhY2UoKSk7CisgICAgU2FmZVJlbGVh
c2UodGV4dHVyZSk7Cit9CisKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoRUdMU3RyZWFtVGVzdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgRVMyX0QzRDExKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19EM0QxMSgpLAorICAg
ICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAg
IEVTM19PUEVOR0woKSk7Cit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFN1cmZhY2VUZXN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3Rz
L0VHTFN1cmZhY2VUZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFN1cmZhY2VUZXN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDUxNyBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEVHTFN1cmZhY2VUZXN0OgorLy8gICBU
ZXN0cyBwZXJ0YWluaW5nIHRvIGVnbDo6U3VyZmFjZS4KKy8vCisKKyNpbmNsdWRlIDxndGVzdC9n
dGVzdC5oPgorCisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiT1NXaW5kb3cuaCIKKyNp
bmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorCituYW1lc3BhY2UKK3sKKworY2xhc3Mg
RUdMU3VyZmFjZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdAoreworICBwcm90ZWN0ZWQ6Cisg
ICAgRUdMU3VyZmFjZVRlc3QoKQorICAgICAgICA6IG1EaXNwbGF5KEVHTF9OT19ESVNQTEFZKSwK
KyAgICAgICAgICBtV2luZG93U3VyZmFjZShFR0xfTk9fU1VSRkFDRSksCisgICAgICAgICAgbVBi
dWZmZXJTdXJmYWNlKEVHTF9OT19TVVJGQUNFKSwKKyAgICAgICAgICBtQ29udGV4dChFR0xfTk9f
Q09OVEVYVCksCisgICAgICAgICAgbVNlY29uZENvbnRleHQoRUdMX05PX0NPTlRFWFQpLAorICAg
ICAgICAgIG1PU1dpbmRvdyhudWxscHRyKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIFNldFVw
KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIG1PU1dpbmRvdyA9IENyZWF0ZU9TV2luZG93KCk7
CisgICAgICAgIG1PU1dpbmRvdy0+aW5pdGlhbGl6ZSgiRUdMU3VyZmFjZVRlc3QiLCA2NCwgNjQp
OworICAgIH0KKworICAgIC8vIFJlbGVhc2UgYW55IHJlc291cmNlcyBjcmVhdGVkIGluIHRoZSB0
ZXN0IGJvZHkKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlm
IChtRGlzcGxheSAhPSBFR0xfTk9fRElTUExBWSkKKyAgICAgICAgeworICAgICAgICAgICAgZWds
TWFrZUN1cnJlbnQobURpc3BsYXksIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fU1VSRkFDRSwgRUdM
X05PX0NPTlRFWFQpOworCisgICAgICAgICAgICBpZiAobVdpbmRvd1N1cmZhY2UgIT0gRUdMX05P
X1NVUkZBQ0UpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZWdsRGVzdHJveVN1cmZh
Y2UobURpc3BsYXksIG1XaW5kb3dTdXJmYWNlKTsKKyAgICAgICAgICAgICAgICBtV2luZG93U3Vy
ZmFjZSA9IEVHTF9OT19TVVJGQUNFOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAo
bVBidWZmZXJTdXJmYWNlICE9IEVHTF9OT19TVVJGQUNFKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGVnbERlc3Ryb3lTdXJmYWNlKG1EaXNwbGF5LCBtUGJ1ZmZlclN1cmZhY2UpOwor
ICAgICAgICAgICAgICAgIG1QYnVmZmVyU3VyZmFjZSA9IEVHTF9OT19TVVJGQUNFOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAobUNvbnRleHQgIT0gRUdMX05PX0NPTlRFWFQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZWdsRGVzdHJveUNvbnRleHQobURpc3BsYXks
IG1Db250ZXh0KTsKKyAgICAgICAgICAgICAgICBtQ29udGV4dCA9IEVHTF9OT19DT05URVhUOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobVNlY29uZENvbnRleHQgIT0gRUdMX05P
X0NPTlRFWFQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZWdsRGVzdHJveUNvbnRl
eHQobURpc3BsYXksIG1TZWNvbmRDb250ZXh0KTsKKyAgICAgICAgICAgICAgICBtU2Vjb25kQ29u
dGV4dCA9IEVHTF9OT19DT05URVhUOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBlZ2xU
ZXJtaW5hdGUobURpc3BsYXkpOworICAgICAgICAgICAgbURpc3BsYXkgPSBFR0xfTk9fRElTUExB
WTsKKyAgICAgICAgfQorCisgICAgICAgIG1PU1dpbmRvdy0+ZGVzdHJveSgpOworICAgICAgICBT
YWZlRGVsZXRlKG1PU1dpbmRvdyk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUobVdpbmRvd1N1cmZh
Y2UgPT0gRUdMX05PX1NVUkZBQ0UgJiYgbUNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpOworICAg
IH0KKworICAgIHZvaWQgaW5pdGlhbGl6ZURpc3BsYXkoRUdMZW51bSBwbGF0Zm9ybVR5cGUpCisg
ICAgeworICAgICAgICBQRk5FR0xHRVRQTEFURk9STURJU1BMQVlFWFRQUk9DIGVnbEdldFBsYXRm
b3JtRGlzcGxheUVYVCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZORUdMR0VUUExBVEZPUk1ESVNQTEFZ
RVhUUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImVnbEdldFBsYXRmb3JtRGlzcGxheUVYVCIpKTsK
KyAgICAgICAgQVNTRVJUX1RSVUUoZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUICE9IG51bGxwdHIp
OworCisgICAgICAgIHN0ZDo6dmVjdG9yPEVHTGludD4gZGlzcGxheUF0dHJpYnV0ZXM7CisgICAg
ICAgIGRpc3BsYXlBdHRyaWJ1dGVzLnB1c2hfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9B
TkdMRSk7CisgICAgICAgIGRpc3BsYXlBdHRyaWJ1dGVzLnB1c2hfYmFjayhwbGF0Zm9ybVR5cGUp
OworICAgICAgICBkaXNwbGF5QXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xF
X01BWF9WRVJTSU9OX01BSk9SX0FOR0xFKTsKKyAgICAgICAgZGlzcGxheUF0dHJpYnV0ZXMucHVz
aF9iYWNrKEVHTF9ET05UX0NBUkUpOworICAgICAgICBkaXNwbGF5QXR0cmlidXRlcy5wdXNoX2Jh
Y2soRUdMX1BMQVRGT1JNX0FOR0xFX01BWF9WRVJTSU9OX01JTk9SX0FOR0xFKTsKKyAgICAgICAg
ZGlzcGxheUF0dHJpYnV0ZXMucHVzaF9iYWNrKEVHTF9ET05UX0NBUkUpOworCisgICAgICAgIGlm
IChwbGF0Zm9ybVR5cGUgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEOV9BTkdMRSB8fCBw
bGF0Zm9ybVR5cGUgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRpc3BsYXlBdHRyaWJ1dGVzLnB1c2hfYmFjayhFR0xfUExBVEZP
Uk1fQU5HTEVfREVWSUNFX1RZUEVfQU5HTEUpOworICAgICAgICAgICAgZGlzcGxheUF0dHJpYnV0
ZXMucHVzaF9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9IQVJEV0FSRV9BTkdM
RSk7CisgICAgICAgIH0KKyAgICAgICAgZGlzcGxheUF0dHJpYnV0ZXMucHVzaF9iYWNrKEVHTF9O
T05FKTsKKworICAgICAgICBtRGlzcGxheSA9IGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVChFR0xf
UExBVEZPUk1fQU5HTEVfQU5HTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqPihtT1NXaW5kb3ctPmdldE5hdGl2ZURp
c3BsYXkoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRp
c3BsYXlBdHRyaWJ1dGVzLmRhdGEoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKG1EaXNwbGF5ICE9
IEVHTF9OT19ESVNQTEFZKTsKKworICAgICAgICBFR0xpbnQgbWFqb3JWZXJzaW9uLCBtaW5vclZl
cnNpb247CisgICAgICAgIEFTU0VSVF9UUlVFKGVnbEluaXRpYWxpemUobURpc3BsYXksICZtYWpv
clZlcnNpb24sICZtaW5vclZlcnNpb24pID09IEVHTF9UUlVFKTsKKworICAgICAgICBlZ2xCaW5k
QVBJKEVHTF9PUEVOR0xfRVNfQVBJKTsKKyAgICAgICAgQVNTRVJUX1RSVUUoZWdsR2V0RXJyb3Io
KSA9PSBFR0xfU1VDQ0VTUyk7CisgICAgfQorCisgICAgdm9pZCBpbml0aWFsaXplU3VyZmFjZShF
R0xDb25maWcgY29uZmlnKQorICAgIHsKKyAgICAgICAgbUNvbmZpZyA9IGNvbmZpZzsKKworICAg
ICAgICBzdGQ6OnZlY3RvcjxFR0xpbnQ+IHN1cmZhY2VBdHRyaWJ1dGVzOworICAgICAgICBzdXJm
YWNlQXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX05PTkUpOworICAgICAgICBzdXJmYWNlQXR0cmli
dXRlcy5wdXNoX2JhY2soRUdMX05PTkUpOworCisgICAgICAgIC8vIENyZWF0ZSBmaXJzdCB3aW5k
b3cgc3VyZmFjZQorICAgICAgICBtV2luZG93U3VyZmFjZSA9IGVnbENyZWF0ZVdpbmRvd1N1cmZh
Y2UobURpc3BsYXksIG1Db25maWcsIG1PU1dpbmRvdy0+Z2V0TmF0aXZlV2luZG93KCksICZzdXJm
YWNlQXR0cmlidXRlc1swXSk7CisgICAgICAgIEFTU0VSVF9UUlVFKGVnbEdldEVycm9yKCkgPT0g
RUdMX1NVQ0NFU1MpOworCisgICAgICAgIG1QYnVmZmVyU3VyZmFjZSA9IGVnbENyZWF0ZVBidWZm
ZXJTdXJmYWNlKG1EaXNwbGF5LCBtQ29uZmlnLCAmc3VyZmFjZUF0dHJpYnV0ZXNbMF0pOworCisg
ICAgICAgIEVHTGludCBjb250ZXh0QXR0aWJ1dGVzW10gPQorICAgICAgICB7CisgICAgICAgICAg
ICBFR0xfQ09OVEVYVF9DTElFTlRfVkVSU0lPTiwgMiwKKyAgICAgICAgICAgIEVHTF9OT05FCisg
ICAgICAgIH07CisKKyAgICAgICAgbUNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KG1EaXNwbGF5
LCBtQ29uZmlnLCBudWxscHRyLCBjb250ZXh0QXR0aWJ1dGVzKTsKKyAgICAgICAgQVNTRVJUX1RS
VUUoZWdsR2V0RXJyb3IoKSA9PSBFR0xfU1VDQ0VTUyk7CisKKyAgICAgICAgbVNlY29uZENvbnRl
eHQgPSBlZ2xDcmVhdGVDb250ZXh0KG1EaXNwbGF5LCBtQ29uZmlnLCBudWxscHRyLCBjb250ZXh0
QXR0aWJ1dGVzKTsKKyAgICAgICAgQVNTRVJUX1RSVUUoZWdsR2V0RXJyb3IoKSA9PSBFR0xfU1VD
Q0VTUyk7CisgICAgfQorCisgICAgdm9pZCBpbml0aWFsaXplU3VyZmFjZVdpdGhEZWZhdWx0Q29u
ZmlnKCkKKyAgICB7CisgICAgICAgIGNvbnN0IEVHTGludCBjb25maWdBdHRyaWJ1dGVzW10gPQor
ICAgICAgICB7CisgICAgICAgICAgICBFR0xfUkVEX1NJWkUsIEVHTF9ET05UX0NBUkUsCisgICAg
ICAgICAgICBFR0xfR1JFRU5fU0laRSwgRUdMX0RPTlRfQ0FSRSwKKyAgICAgICAgICAgIEVHTF9C
TFVFX1NJWkUsIEVHTF9ET05UX0NBUkUsCisgICAgICAgICAgICBFR0xfQUxQSEFfU0laRSwgRUdM
X0RPTlRfQ0FSRSwKKyAgICAgICAgICAgIEVHTF9ERVBUSF9TSVpFLCBFR0xfRE9OVF9DQVJFLAor
ICAgICAgICAgICAgRUdMX1NURU5DSUxfU0laRSwgRUdMX0RPTlRfQ0FSRSwKKyAgICAgICAgICAg
IEVHTF9TQU1QTEVfQlVGRkVSUywgMCwKKyAgICAgICAgICAgIEVHTF9OT05FCisgICAgICAgIH07
CisKKyAgICAgICAgRUdMaW50IGNvbmZpZ0NvdW50OworICAgICAgICBFR0xDb25maWcgY29uZmln
OworICAgICAgICBBU1NFUlRfVFJVRShlZ2xDaG9vc2VDb25maWcobURpc3BsYXksIGNvbmZpZ0F0
dHJpYnV0ZXMsICZjb25maWcsIDEsICZjb25maWdDb3VudCkgfHwgKGNvbmZpZ0NvdW50ICE9IDEp
ID09IEVHTF9UUlVFKTsKKworICAgICAgICBpbml0aWFsaXplU3VyZmFjZShjb25maWcpOworICAg
IH0KKworICAgIEdMdWludCBjcmVhdGVQcm9ncmFtKCkKKyAgICB7CisgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nIHRlc3RWZXJ0ZXhTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgICAg
ICgKKyAgICAgICAgICAgIGF0dHJpYnV0ZSBoaWdocCB2ZWM0IHBvc2l0aW9uOworCisgICAgICAg
ICAgICB2b2lkIG1haW4odm9pZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbF9Q
b3NpdGlvbiA9IHBvc2l0aW9uOworICAgICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIHRlc3RGcmFnbWVudFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VS
Q0UKKyAgICAgICAgKAorICAgICAgICAgICAgdm9pZCBtYWluKHZvaWQpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjAp
OworICAgICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAgIHJldHVybiBDb21waWxlUHJv
Z3JhbSh0ZXN0VmVydGV4U2hhZGVyU291cmNlLCB0ZXN0RnJhZ21lbnRTaGFkZXJTb3VyY2UpOwor
ICAgIH0KKworICAgIHZvaWQgZHJhd1dpdGhQcm9ncmFtKEdMdWludCBwcm9ncmFtKQorICAgIHsK
KyAgICAgICAgZ2xDbGVhckNvbG9yKDAsIDAsIDAsIDEpOworICAgICAgICBnbENsZWFyKEdMX0NP
TE9SX0JVRkZFUl9CSVQpOworCisgICAgICAgIEdMaW50IHBvc2l0aW9uTG9jYXRpb24gPSBnbEdl
dEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sICJwb3NpdGlvbiIpOworCisgICAgICAgIGdsVXNlUHJv
Z3JhbShwcm9ncmFtKTsKKworICAgICAgICBjb25zdCBHTGZsb2F0IHZlcnRpY2VzW10gPQorICAg
ICAgICB7CisgICAgICAgICAgICAtMS4wZiwgIDEuMGYsIDAuNWYsCisgICAgICAgICAgICAtMS4w
ZiwgLTEuMGYsIDAuNWYsCisgICAgICAgICAgICAgMS4wZiwgLTEuMGYsIDAuNWYsCisKKyAgICAg
ICAgICAgIC0xLjBmLCAgMS4wZiwgMC41ZiwKKyAgICAgICAgICAgICAxLjBmLCAtMS4wZiwgMC41
ZiwKKyAgICAgICAgICAgICAxLjBmLCAgMS4wZiwgMC41ZiwKKyAgICAgICAgfTsKKworICAgICAg
ICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25Mb2NhdGlvbiwgMywgR0xfRkxPQVQsIEdM
X0ZBTFNFLCAwLCB2ZXJ0aWNlcyk7CisgICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXko
cG9zaXRpb25Mb2NhdGlvbik7CisKKyAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywg
MCwgNik7CisKKyAgICAgICAgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2Nh
dGlvbik7CisgICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxvY2F0aW9uLCA0
LCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIE5VTEwpOworCisgICAgICAgIEVYUEVDVF9QSVhFTF9F
UShtT1NXaW5kb3ctPmdldFdpZHRoKCkgLyAyLCBtT1NXaW5kb3ctPmdldEhlaWdodCgpIC8gMiwg
MjU1LCAwLCAwLCAyNTUpOworICAgIH0KKworICAgIHZvaWQgcnVuTWVzc2FnZUxvb3BUZXN0KEVH
TFN1cmZhY2Ugc2Vjb25kU3VyZmFjZSwgRUdMQ29udGV4dCBzZWNvbmRDb250ZXh0KQorICAgIHsK
KyAgICAgICAgZWdsTWFrZUN1cnJlbnQobURpc3BsYXksIG1XaW5kb3dTdXJmYWNlLCBtV2luZG93
U3VyZmFjZSwgbUNvbnRleHQpOworICAgICAgICBBU1NFUlRfVFJVRShlZ2xHZXRFcnJvcigpID09
IEVHTF9TVUNDRVNTKTsKKworICAgICAgICAvLyBNYWtlIGEgc2Vjb25kIGNvbnRleHQgY3VycmVu
dAorICAgICAgICBlZ2xNYWtlQ3VycmVudChtRGlzcGxheSwgc2Vjb25kU3VyZmFjZSwgc2Vjb25k
U3VyZmFjZSwgc2Vjb25kQ29udGV4dCk7CisgICAgICAgIGVnbERlc3Ryb3lTdXJmYWNlKG1EaXNw
bGF5LCBtV2luZG93U3VyZmFjZSk7CisKKyAgICAgICAgLy8gQ3JlYXRlIHNlY29uZCB3aW5kb3cg
c3VyZmFjZQorICAgICAgICBzdGQ6OnZlY3RvcjxFR0xpbnQ+IHN1cmZhY2VBdHRyaWJ1dGVzOwor
ICAgICAgICBzdXJmYWNlQXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX05PTkUpOworICAgICAgICBz
dXJmYWNlQXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX05PTkUpOworCisgICAgICAgIG1XaW5kb3dT
dXJmYWNlID0gZWdsQ3JlYXRlV2luZG93U3VyZmFjZShtRGlzcGxheSwgbUNvbmZpZywgbU9TV2lu
ZG93LT5nZXROYXRpdmVXaW5kb3coKSwgJnN1cmZhY2VBdHRyaWJ1dGVzWzBdKTsKKyAgICAgICAg
QVNTRVJUX1RSVUUoZWdsR2V0RXJyb3IoKSA9PSBFR0xfU1VDQ0VTUyk7CisKKyAgICAgICAgZWds
TWFrZUN1cnJlbnQobURpc3BsYXksIG1XaW5kb3dTdXJmYWNlLCBtV2luZG93U3VyZmFjZSwgbUNv
bnRleHQpOworICAgICAgICBBU1NFUlRfVFJVRShlZ2xHZXRFcnJvcigpID09IEVHTF9TVUNDRVNT
KTsKKworICAgICAgICBtT1NXaW5kb3ctPnNpZ25hbFRlc3RFdmVudCgpOworICAgICAgICBtT1NX
aW5kb3ctPm1lc3NhZ2VMb29wKCk7CisgICAgICAgIEFTU0VSVF9UUlVFKG1PU1dpbmRvdy0+ZGlk
VGVzdEV2ZW50RmlyZSgpKTsKKworICAgICAgICAvLyBTaW1wbGUgb3BlcmF0aW9uIHRvIHRlc3Qg
dGhlIEZCTyBpcyBzZXQgYXBwcm9wcmlhdGVseQorICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JV
RkZFUl9CSVQpOworICAgIH0KKworICAgIEVHTERpc3BsYXkgbURpc3BsYXk7CisgICAgRUdMU3Vy
ZmFjZSBtV2luZG93U3VyZmFjZTsKKyAgICBFR0xTdXJmYWNlIG1QYnVmZmVyU3VyZmFjZTsKKyAg
ICBFR0xDb250ZXh0IG1Db250ZXh0OworICAgIEVHTENvbnRleHQgbVNlY29uZENvbnRleHQ7Cisg
ICAgRUdMQ29uZmlnIG1Db25maWc7CisgICAgT1NXaW5kb3cgKm1PU1dpbmRvdzsKK307CisKKy8v
IFRlc3QgYSBzdXJmYWNlIGJ1ZyB3aGVyZSB3ZSBjb3VsZCBoYXZlIHR3byBXaW5kb3cgc3VyZmFj
ZXMgYWN0aXZlCisvLyBhdCBvbmUgdGltZSwgYmxvY2tpbmcgbWVzc2FnZSBsb29wcy4gU2VlIGh0
dHA6Ly9jcmJ1Zy5jb20vNDc1MDg1CitURVNUX0YoRUdMU3VyZmFjZVRlc3QsIE1lc3NhZ2VMb29w
QnVnKQoreworICAgIGNvbnN0IGNoYXIgKmV4dGVuc2lvbnNTdHJpbmcgPSBlZ2xRdWVyeVN0cmlu
ZyhFR0xfTk9fRElTUExBWSwgRUdMX0VYVEVOU0lPTlMpOworICAgIGlmIChzdHJzdHIoZXh0ZW5z
aW9uc1N0cmluZywgIkVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9kM2QiKSA9PSBudWxscHRyKQor
ICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJEM0QgUGxhdGZvcm0gbm90IHN1cHBvcnRlZCBp
biBBTkdMRSIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW5p
dGlhbGl6ZURpc3BsYXkoRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUpOworICAg
IGluaXRpYWxpemVTdXJmYWNlV2l0aERlZmF1bHRDb25maWcoKTsKKworICAgIHJ1bk1lc3NhZ2VM
b29wVGVzdChFR0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOworfQorCisvLyBUZXN0cyB0
aGUgbWVzc2FnZSBsb29wIGJ1ZywgYnV0IHdpdGggc2V0dGluZyBhIHNlY29uZCBjb250ZXh0Cisv
LyBpbnN0ZWFkIG9mIG51bGwuCitURVNUX0YoRUdMU3VyZmFjZVRlc3QsIE1lc3NhZ2VMb29wQnVn
Q29udGV4dCkKK3sKKyAgICBjb25zdCBjaGFyICpleHRlbnNpb25zU3RyaW5nID0gZWdsUXVlcnlT
dHJpbmcoRUdMX05PX0RJU1BMQVksIEVHTF9FWFRFTlNJT05TKTsKKyAgICBpZiAoc3Ryc3RyKGV4
dGVuc2lvbnNTdHJpbmcsICJFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfZDNkIikgPT0gbnVsbHB0
cikKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiRDNEIFBsYXRmb3JtIG5vdCBzdXBwb3J0
ZWQgaW4gQU5HTEUiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGluaXRpYWxpemVEaXNwbGF5KEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFKTsK
KyAgICBpbml0aWFsaXplU3VyZmFjZVdpdGhEZWZhdWx0Q29uZmlnKCk7CisKKyAgICBydW5NZXNz
YWdlTG9vcFRlc3QobVBidWZmZXJTdXJmYWNlLCBtU2Vjb25kQ29udGV4dCk7Cit9CisKKy8vIFRl
c3QgYSBidWcgd2hlcmUgY2FsbGluZyBtYWtlQ3VycmVudCB0d2ljZSB3b3VsZCByZWxlYXNlIHRo
ZSBzdXJmYWNlCitURVNUX0YoRUdMU3VyZmFjZVRlc3QsIE1ha2VDdXJyZW50VHdpY2UpCit7Cisj
aWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9BUFBMRSkgJiYgIWRlZmluZWQoQU5HTEVfU1RBTkRB
TE9ORV9CVUlMRCkKKyAgICAvLyBUT0RPKGN3YWxsZXopIE1ha2UgY29udGV4dCBjcmVhdGlvbiBy
ZXR1cm4gYXQgbGVhc3QgYW4gT3BlbkdMIEVTIDIgY29udGV4dCBvbgorICAgIC8vIHRoZSBNYWMg
dHJ5Ym90cy4KKyAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCB0ZW1wb3JhcmlseSBza2lw
cGVkIG9uIHRoZSBNYWMgdHJ5Ym90cyIgPDwgc3RkOjplbmRsOworICAgIHJldHVybjsKKyNlbmRp
ZgorCisgICAgaW5pdGlhbGl6ZURpc3BsYXkoRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfREVGQVVM
VF9BTkdMRSk7CisgICAgaW5pdGlhbGl6ZVN1cmZhY2VXaXRoRGVmYXVsdENvbmZpZygpOworCisg
ICAgZWdsTWFrZUN1cnJlbnQobURpc3BsYXksIG1XaW5kb3dTdXJmYWNlLCBtV2luZG93U3VyZmFj
ZSwgbUNvbnRleHQpOworICAgIEFTU0VSVF9UUlVFKGVnbEdldEVycm9yKCkgPT0gRUdMX1NVQ0NF
U1MpOworCisgICAgZWdsTWFrZUN1cnJlbnQobURpc3BsYXksIG1XaW5kb3dTdXJmYWNlLCBtV2lu
ZG93U3VyZmFjZSwgbUNvbnRleHQpOworICAgIEFTU0VSVF9UUlVFKGVnbEdldEVycm9yKCkgPT0g
RUdMX1NVQ0NFU1MpOworCisgICAgLy8gU2ltcGxlIG9wZXJhdGlvbiB0byB0ZXN0IHRoZSBGQk8g
aXMgc2V0IGFwcHJvcHJpYXRlbHkKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwor
fQorCisvLyBUZXN0IHRoYXQgdGhlIEQzRCB3aW5kb3cgc3VyZmFjZSBpcyBjb3JyZWN0bHkgcmVz
aXplZCBhZnRlciBjYWxsaW5nIHN3YXBCdWZmZXJzCitURVNUX0YoRUdMU3VyZmFjZVRlc3QsIFJl
c2l6ZUQzRFdpbmRvdykKK3sKKyAgICBjb25zdCBjaGFyICpleHRlbnNpb25zU3RyaW5nID0gZWds
UXVlcnlTdHJpbmcoRUdMX05PX0RJU1BMQVksIEVHTF9FWFRFTlNJT05TKTsKKyAgICBpZiAoc3Ry
c3RyKGV4dGVuc2lvbnNTdHJpbmcsICJFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfZDNkIikgPT0g
bnVsbHB0cikKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiRDNEIFBsYXRmb3JtIG5vdCBz
dXBwb3J0ZWQgaW4gQU5HTEUiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGluaXRpYWxpemVEaXNwbGF5KEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FO
R0xFKTsKKyAgICBpbml0aWFsaXplU3VyZmFjZVdpdGhEZWZhdWx0Q29uZmlnKCk7CisKKyAgICBl
Z2xTd2FwQnVmZmVycyhtRGlzcGxheSwgbVdpbmRvd1N1cmZhY2UpOworICAgIEFTU0VSVF9FR0xf
U1VDQ0VTUygpOworCisgICAgRUdMaW50IGhlaWdodDsKKyAgICBlZ2xRdWVyeVN1cmZhY2UobURp
c3BsYXksIG1XaW5kb3dTdXJmYWNlLCBFR0xfSEVJR0hULCAmaGVpZ2h0KTsKKyAgICBBU1NFUlRf
RUdMX1NVQ0NFU1MoKTsKKyAgICBBU1NFUlRfRVEoNjQsIGhlaWdodCk7ICAvLyBpbml0aWFsIHNp
emUKKworICAgIC8vIHNldCB3aW5kb3cncyBoZWlnaHQgdG8gMAorICAgIG1PU1dpbmRvdy0+cmVz
aXplKDY0LCAwKTsKKworICAgIGVnbFN3YXBCdWZmZXJzKG1EaXNwbGF5LCBtV2luZG93U3VyZmFj
ZSk7CisgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CisKKyAgICBlZ2xRdWVyeVN1cmZhY2UobURp
c3BsYXksIG1XaW5kb3dTdXJmYWNlLCBFR0xfSEVJR0hULCAmaGVpZ2h0KTsKKyAgICBBU1NFUlRf
RUdMX1NVQ0NFU1MoKTsKKyAgICBBU1NFUlRfRVEoMCwgaGVpZ2h0KTsKKworICAgIC8vIHJlc3Rv
cmUgd2luZG93J3MgaGVpZ2h0CisgICAgbU9TV2luZG93LT5yZXNpemUoNjQsIDY0KTsKKworICAg
IGVnbFN3YXBCdWZmZXJzKG1EaXNwbGF5LCBtV2luZG93U3VyZmFjZSk7CisgICAgQVNTRVJUX0VH
TF9TVUNDRVNTKCk7CisKKyAgICBlZ2xRdWVyeVN1cmZhY2UobURpc3BsYXksIG1XaW5kb3dTdXJm
YWNlLCBFR0xfSEVJR0hULCAmaGVpZ2h0KTsKKyAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKyAg
ICBBU1NFUlRfRVEoNjQsIGhlaWdodCk7Cit9CisKKy8vIFRlc3QgY3JlYXRpbmcgYSBzdXJmYWNl
IHRoYXQgc3VwcG9ydHMgYSBFR0xDb25maWcgd2l0aCAxNmJpdAorLy8gc3VwcG9ydCBHTF9SR0I1
NjUKK1RFU1RfRihFR0xTdXJmYWNlVGVzdCwgQ3JlYXRlV2l0aEVHTENvbmZpZzU2NTBTdXBwb3J0
KQoreworICAgIGlmICghQU5HTEVUZXN0OjplZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZChFR0xf
Tk9fRElTUExBWSwgIkVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9kM2QiKSkKKyAgICB7CisgICAg
ICAgIHN0ZDo6Y291dCA8PCAiRDNEIFBsYXRmb3JtIG5vdCBzdXBwb3J0ZWQgaW4gQU5HTEUiIDw8
IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IEVHTGludCBj
b25maWdBdHRyaWJ1dGVzW10gPQorICAgIHsKKyAgICAgICAgRUdMX1JFRF9TSVpFLCA1LAorICAg
ICAgICBFR0xfR1JFRU5fU0laRSwgNiwKKyAgICAgICAgRUdMX0JMVUVfU0laRSwgNSwKKyAgICAg
ICAgRUdMX0FMUEhBX1NJWkUsIDAsCisgICAgICAgIEVHTF9ERVBUSF9TSVpFLCAwLAorICAgICAg
ICBFR0xfU1RFTkNJTF9TSVpFLCAwLAorICAgICAgICBFR0xfU0FNUExFX0JVRkZFUlMsIDAsCisg
ICAgICAgIEVHTF9OT05FCisgICAgfTsKKworICAgIGluaXRpYWxpemVEaXNwbGF5KEVHTF9QTEFU
Rk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFKTsKKyAgICBFR0xDb25maWcgY29uZmlnOworICAg
IGlmIChFR0xXaW5kb3c6OkZpbmRFR0xDb25maWcobURpc3BsYXksIGNvbmZpZ0F0dHJpYnV0ZXMs
ICZjb25maWcpID09IEVHTF9GQUxTRSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiRUdM
Q29uZmlnIGZvciBhIEdMX1JHQjU2NSBzdXJmYWNlIGlzIG5vdCBzdXBwb3J0ZWQsIHNraXBwaW5n
IHRlc3QiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGluaXRp
YWxpemVTdXJmYWNlKGNvbmZpZyk7CisKKyAgICBlZ2xNYWtlQ3VycmVudChtRGlzcGxheSwgbVdp
bmRvd1N1cmZhY2UsIG1XaW5kb3dTdXJmYWNlLCBtQ29udGV4dCk7CisgICAgQVNTRVJUX0VHTF9T
VUNDRVNTKCk7CisKKyAgICBHTHVpbnQgcHJvZ3JhbSA9IGNyZWF0ZVByb2dyYW0oKTsKKyAgICBB
U1NFUlRfTkUoMHUsIHByb2dyYW0pOworICAgIGRyYXdXaXRoUHJvZ3JhbShwcm9ncmFtKTsKKyAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICBnbERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Cit9
CisKKy8vIFRlc3QgY3JlYXRpbmcgYSBzdXJmYWNlIHRoYXQgc3VwcG9ydHMgYSBFR0xDb25maWcg
d2l0aCAxNmJpdAorLy8gc3VwcG9ydCBHTF9SR0JBNAorVEVTVF9GKEVHTFN1cmZhY2VUZXN0LCBD
cmVhdGVXaXRoRUdMQ29uZmlnNDQ0NFN1cHBvcnQpCit7CisgICAgaWYgKCFBTkdMRVRlc3Q6OmVn
bERpc3BsYXlFeHRlbnNpb25FbmFibGVkKEVHTF9OT19ESVNQTEFZLCAiRUdMX0FOR0xFX3BsYXRm
b3JtX2FuZ2xlX2QzZCIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJEM0QgUGxhdGZv
cm0gbm90IHN1cHBvcnRlZCBpbiBBTkdMRSIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgY29uc3QgRUdMaW50IGNvbmZpZ0F0dHJpYnV0ZXNbXSA9CisgICAgewor
ICAgICAgICBFR0xfUkVEX1NJWkUsIDQsCisgICAgICAgIEVHTF9HUkVFTl9TSVpFLCA0LAorICAg
ICAgICBFR0xfQkxVRV9TSVpFLCA0LAorICAgICAgICBFR0xfQUxQSEFfU0laRSwgNCwKKyAgICAg
ICAgRUdMX0RFUFRIX1NJWkUsIDAsCisgICAgICAgIEVHTF9TVEVOQ0lMX1NJWkUsIDAsCisgICAg
ICAgIEVHTF9TQU1QTEVfQlVGRkVSUywgMCwKKyAgICAgICAgRUdMX05PTkUKKyAgICB9OworCisg
ICAgaW5pdGlhbGl6ZURpc3BsYXkoRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUp
OworICAgIEVHTENvbmZpZyBjb25maWc7CisgICAgaWYgKEVHTFdpbmRvdzo6RmluZEVHTENvbmZp
ZyhtRGlzcGxheSwgY29uZmlnQXR0cmlidXRlcywgJmNvbmZpZykgPT0gRUdMX0ZBTFNFKQorICAg
IHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJFR0xDb25maWcgZm9yIGEgR0xfUkdCQTQgc3VyZmFj
ZSBpcyBub3Qgc3VwcG9ydGVkLCBza2lwcGluZyB0ZXN0IiA8PCBzdGQ6OmVuZGw7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpbml0aWFsaXplU3VyZmFjZShjb25maWcpOworCisgICAg
ZWdsTWFrZUN1cnJlbnQobURpc3BsYXksIG1XaW5kb3dTdXJmYWNlLCBtV2luZG93U3VyZmFjZSwg
bUNvbnRleHQpOworICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworCisgICAgR0x1aW50IHByb2dy
YW0gPSBjcmVhdGVQcm9ncmFtKCk7CisgICAgQVNTRVJUX05FKDB1LCBwcm9ncmFtKTsKKyAgICBk
cmF3V2l0aFByb2dyYW0ocHJvZ3JhbSk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAg
Z2xEZWxldGVQcm9ncmFtKHByb2dyYW0pOworfQorCisvLyBUZXN0IGNyZWF0aW5nIGEgc3VyZmFj
ZSB0aGF0IHN1cHBvcnRzIGEgRUdMQ29uZmlnIHdpdGggMTZiaXQKKy8vIHN1cHBvcnQgR0xfUkdC
NV9BMQorVEVTVF9GKEVHTFN1cmZhY2VUZXN0LCBDcmVhdGVXaXRoRUdMQ29uZmlnNTU1MVN1cHBv
cnQpCit7CisgICAgaWYgKCFBTkdMRVRlc3Q6OmVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKEVH
TF9OT19ESVNQTEFZLCAiRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlX2QzZCIpKQorICAgIHsKKyAg
ICAgICAgc3RkOjpjb3V0IDw8ICJEM0QgUGxhdGZvcm0gbm90IHN1cHBvcnRlZCBpbiBBTkdMRSIg
PDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3QgRUdMaW50
IGNvbmZpZ0F0dHJpYnV0ZXNbXSA9CisgICAgeworICAgICAgICBFR0xfUkVEX1NJWkUsIDUsCisg
ICAgICAgIEVHTF9HUkVFTl9TSVpFLCA1LAorICAgICAgICBFR0xfQkxVRV9TSVpFLCA1LAorICAg
ICAgICBFR0xfQUxQSEFfU0laRSwgMSwKKyAgICAgICAgRUdMX0RFUFRIX1NJWkUsIDAsCisgICAg
ICAgIEVHTF9TVEVOQ0lMX1NJWkUsIDAsCisgICAgICAgIEVHTF9TQU1QTEVfQlVGRkVSUywgMCwK
KyAgICAgICAgRUdMX05PTkUKKyAgICB9OworCisgICAgaW5pdGlhbGl6ZURpc3BsYXkoRUdMX1BM
QVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUpOworICAgIEVHTENvbmZpZyBjb25maWc7Cisg
ICAgaWYgKEVHTFdpbmRvdzo6RmluZEVHTENvbmZpZyhtRGlzcGxheSwgY29uZmlnQXR0cmlidXRl
cywgJmNvbmZpZykgPT0gRUdMX0ZBTFNFKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJF
R0xDb25maWcgZm9yIGEgR0xfUkdCNV9BMSBzdXJmYWNlIGlzIG5vdCBzdXBwb3J0ZWQsIHNraXBw
aW5nIHRlc3QiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlu
aXRpYWxpemVTdXJmYWNlKGNvbmZpZyk7CisKKyAgICBlZ2xNYWtlQ3VycmVudChtRGlzcGxheSwg
bVdpbmRvd1N1cmZhY2UsIG1XaW5kb3dTdXJmYWNlLCBtQ29udGV4dCk7CisgICAgQVNTRVJUX0VH
TF9TVUNDRVNTKCk7CisKKyAgICBHTHVpbnQgcHJvZ3JhbSA9IGNyZWF0ZVByb2dyYW0oKTsKKyAg
ICBBU1NFUlRfTkUoMHUsIHByb2dyYW0pOworICAgIGRyYXdXaXRoUHJvZ3JhbShwcm9ncmFtKTsK
KyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICBnbERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7
Cit9CisKKy8vIFRlc3QgY3JlYXRpbmcgYSBzdXJmYWNlIHRoYXQgc3VwcG9ydHMgYSBFR0xDb25m
aWcgd2l0aG91dCBhbHBoYSBzdXBwb3J0CitURVNUX0YoRUdMU3VyZmFjZVRlc3QsIENyZWF0ZVdp
dGhFR0xDb25maWc4ODgwU3VwcG9ydCkKK3sKKyAgICBpZiAoIUFOR0xFVGVzdDo6ZWdsRGlzcGxh
eUV4dGVuc2lvbkVuYWJsZWQoRUdMX05PX0RJU1BMQVksICJFR0xfQU5HTEVfcGxhdGZvcm1fYW5n
bGVfZDNkIikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIkQzRCBQbGF0Zm9ybSBub3Qg
c3VwcG9ydGVkIGluIEFOR0xFIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBjb25zdCBFR0xpbnQgY29uZmlnQXR0cmlidXRlc1tdID0KKyAgICB7CisgICAgICAg
IEVHTF9SRURfU0laRSwgOCwKKyAgICAgICAgRUdMX0dSRUVOX1NJWkUsIDgsCisgICAgICAgIEVH
TF9CTFVFX1NJWkUsIDgsCisgICAgICAgIEVHTF9BTFBIQV9TSVpFLCAwLAorICAgICAgICBFR0xf
REVQVEhfU0laRSwgMCwKKyAgICAgICAgRUdMX1NURU5DSUxfU0laRSwgMCwKKyAgICAgICAgRUdM
X1NBTVBMRV9CVUZGRVJTLCAwLAorICAgICAgICBFR0xfTk9ORQorICAgIH07CisKKyAgICBpbml0
aWFsaXplRGlzcGxheShFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSk7CisgICAg
RUdMQ29uZmlnIGNvbmZpZzsKKyAgICBpZiAoRUdMV2luZG93OjpGaW5kRUdMQ29uZmlnKG1EaXNw
bGF5LCBjb25maWdBdHRyaWJ1dGVzLCAmY29uZmlnKSA9PSBFR0xfRkFMU0UpCisgICAgeworICAg
ICAgICBzdGQ6OmNvdXQgPDwgIkVHTENvbmZpZyBmb3IgYSBHTF9SR0I4X09FUyBzdXJmYWNlIGlz
IG5vdCBzdXBwb3J0ZWQsIHNraXBwaW5nIHRlc3QiCisgICAgICAgICAgICAgICAgICA8PCBzdGQ6
OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbml0aWFsaXplU3VyZmFjZShj
b25maWcpOworCisgICAgZWdsTWFrZUN1cnJlbnQobURpc3BsYXksIG1XaW5kb3dTdXJmYWNlLCBt
V2luZG93U3VyZmFjZSwgbUNvbnRleHQpOworICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworCisg
ICAgR0x1aW50IHByb2dyYW0gPSBjcmVhdGVQcm9ncmFtKCk7CisgICAgQVNTRVJUX05FKDB1LCBw
cm9ncmFtKTsKKyAgICBkcmF3V2l0aFByb2dyYW0ocHJvZ3JhbSk7CisgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7CisgICAgZ2xEZWxldGVQcm9ncmFtKHByb2dyYW0pOworfQorfQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xTeW5jQ29udHJvbFRl
c3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9l
Z2xfdGVzdHMvRUdMU3luY0NvbnRyb2xUZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFN5bmNDb250cm9sVGVzdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNzAgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAx
NiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpZm5kZWYg
QU5HTEVfRU5BQkxFX0QzRDkKKyNkZWZpbmUgQU5HTEVfRU5BQkxFX0QzRDkKKyNlbmRpZgorCisj
aWZuZGVmIEFOR0xFX0VOQUJMRV9EM0QxMQorI2RlZmluZSBBTkdMRV9FTkFCTEVfRDNEMTEKKyNl
bmRpZgorCisjaW5jbHVkZSA8ZDNkMTEuaD4KKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisjaW5jbHVk
ZSA8RUdML2VnbGV4dC5oPgorCisjaW5jbHVkZSAiY29tX3V0aWxzLmgiCisjaW5jbHVkZSAiT1NX
aW5kb3cuaCIKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorCit1c2luZyBuYW1l
c3BhY2UgYW5nbGU7CisKK3R5cGVkZWYgRUdMQm9vbGVhbihFR0xBUElFTlRSWVAgUEZORUdMR0VU
U1lOQ1ZBTFVFU0NIUk9NSVVNUFJPQykoRUdMRGlzcGxheSBkcHksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTFN1cmZh
Y2Ugc3VyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRUdMdWludDY0S0hSICp1c3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTHVpbnQ2
NEtIUiAqbXNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFR0x1aW50NjRLSFIgKnNiYyk7CisKK2NsYXNzIEVHTFN5bmND
b250cm9sVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBF
R0xTeW5jQ29udHJvbFRlc3QoKSB7fQorCisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAg
eworICAgICAgICBtRDNEMTFNb2R1bGUgPSBMb2FkTGlicmFyeShURVhUKCJkM2QxMS5kbGwiKSk7
CisgICAgICAgIGlmIChtRDNEMTFNb2R1bGUgPT0gbnVsbHB0cikKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RkOjpjb3V0IDw8ICJVbmFibGUgdG8gTG9hZExpYnJhcnkgRDNEMTEiIDw8IHN0ZDo6
ZW5kbDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1EM0QxMUNy
ZWF0ZURldmljZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOX0QzRDExX0NSRUFURV9ERVZJQ0U+KAor
ICAgICAgICAgICAgR2V0UHJvY0FkZHJlc3MobUQzRDExTW9kdWxlLCAiRDNEMTFDcmVhdGVEZXZp
Y2UiKSk7CisgICAgICAgIGlmIChtRDNEMTFDcmVhdGVEZXZpY2UgPT0gbnVsbHB0cikKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJDb3VsZCBub3QgcmV0cmlldmUgRDNEMTFD
cmVhdGVEZXZpY2UgZnJvbSBkM2QxMS5kbGwiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1EM0QxMUF2YWlsYWJsZSA9IHRydWU7CisKKyAg
ICAgICAgY29uc3QgY2hhciAqZXh0ZW5zaW9uU3RyaW5nID0KKyAgICAgICAgICAgIHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIgKj4oZWdsUXVlcnlTdHJpbmcoRUdMX05PX0RJU1BMQVksIEVHTF9FWFRF
TlNJT05TKSk7CisgICAgICAgIGlmIChzdHJzdHIoZXh0ZW5zaW9uU3RyaW5nLCAiRUdMX0FOR0xF
X2RldmljZV9jcmVhdGlvbiIpKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoc3Ryc3RyKGV4
dGVuc2lvblN0cmluZywgIkVHTF9BTkdMRV9kZXZpY2VfY3JlYXRpb25fZDNkMTEiKSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBtRGV2aWNlQ3JlYXRpb25EM0QxMUV4dEF2YWlsYWJs
ZSA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBlZ2xHZXRTeW5j
VmFsdWVzQ0hST01JVU0gPSByZWludGVycHJldF9jYXN0PFBGTkVHTEdFVFNZTkNWQUxVRVNDSFJP
TUlVTVBST0M+KAorICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImVnbEdldFN5bmNWYWx1
ZXNDSFJPTUlVTSIpKTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIFNhZmVSZWxlYXNlKG1EZXZpY2UpOworICAgICAgICBTYWZlUmVsZWFzZSht
RGV2aWNlQ29udGV4dCk7CisKKyAgICAgICAgU2FmZURlbGV0ZShtT1NXaW5kb3cpOworCisgICAg
ICAgIGlmIChtU3VyZmFjZSAhPSBFR0xfTk9fU1VSRkFDRSkKKyAgICAgICAgeworICAgICAgICAg
ICAgZWdsRGVzdHJveVN1cmZhY2UobURpc3BsYXksIG1TdXJmYWNlKTsKKyAgICAgICAgICAgIG1T
dXJmYWNlID0gRUdMX05PX1NVUkZBQ0U7CisgICAgICAgIH0KKworICAgICAgICBpZiAobUNvbnRl
eHQgIT0gRUdMX05PX0NPTlRFWFQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVnbERlc3Ryb3lD
b250ZXh0KG1EaXNwbGF5LCBtQ29udGV4dCk7CisgICAgICAgICAgICBtQ29udGV4dCA9IEVHTF9O
T19DT05URVhUOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1EaXNwbGF5ICE9IEVHTF9OT19E
SVNQTEFZKQorICAgICAgICB7CisgICAgICAgICAgICBlZ2xUZXJtaW5hdGUobURpc3BsYXkpOwor
ICAgICAgICAgICAgbURpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHZvaWQgQ3JlYXRlRDNEMTFEZXZpY2UoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX1RS
VUUobUQzRDExQXZhaWxhYmxlKTsKKyAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIG1EZXZpY2Up
OyAgLy8gVGhlIGRldmljZSBzaG91bGRuJ3QgYmUgY3JlYXRlZCB0d2ljZQorCisgICAgICAgIEhS
RVNVTFQgaHIgPQorICAgICAgICAgICAgbUQzRDExQ3JlYXRlRGV2aWNlKG51bGxwdHIsIEQzRF9E
UklWRVJfVFlQRV9IQVJEV0FSRSwgMCwgMCwgbnVsbHB0ciwgMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEM0QxMV9TREtfVkVSU0lPTiwgJm1EZXZpY2UsICZtRmVhdHVyZUxldmVs
LCAmbURldmljZUNvbnRleHQpOworCisgICAgICAgIEFTU0VSVF9UUlVFKFNVQ0NFRURFRChocikp
OworICAgIH0KKworICAgIHZvaWQgSW5pdGlhbGl6ZURpc3BsYXkoKQorICAgIHsKKyAgICAgICAg
RUdMaW50IGRpc3BsYXlBdHRyaWJzW10gPSB7RUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfQU5HTEUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9U
WVBFX0QzRDExX0FOR0xFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xf
UExBVEZPUk1fQU5HTEVfTUFYX1ZFUlNJT05fTUFKT1JfQU5HTEUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVHTF9ET05UX0NBUkUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9NQVhfVkVSU0lPTl9NSU5PUl9BTkdMRSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX0RPTlRfQ0FSRSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9U
WVBFX0FOR0xFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfUExBVEZP
Uk1fQU5HTEVfREVWSUNFX1RZUEVfSEFSRFdBUkVfQU5HTEUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEVHTF9OT05FfTsKKworICAgICAgICAvLyBDcmVhdGUgYW4gT1MgV2lu
ZG93CisgICAgICAgIG1PU1dpbmRvdyA9IENyZWF0ZU9TV2luZG93KCk7CisgICAgICAgIG1PU1dp
bmRvdy0+aW5pdGlhbGl6ZSgiRUdMU3luY0NvbnRyb2xUZXN0IiwgNjQsIDY0KTsKKyAgICAgICAg
bU9TV2luZG93LT5zZXRWaXNpYmxlKHRydWUpOworCisgICAgICAgIC8vIENyZWF0ZSBhbiBFR0xE
aXNwbGF5IHVzaW5nIHRoZSBFR0xEZXZpY2UKKyAgICAgICAgbURpc3BsYXkgPSBlZ2xHZXRQbGF0
Zm9ybURpc3BsYXlFWFQoRUdMX1BMQVRGT1JNX0FOR0xFX0FOR0xFLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQgKj4obU9T
V2luZG93LT5nZXROYXRpdmVEaXNwbGF5KCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkaXNwbGF5QXR0cmlicyk7CisgICAgICAgIEFTU0VSVF9UUlVFKG1E
aXNwbGF5ICE9IEVHTF9OT19ESVNQTEFZKTsKKworICAgICAgICBFR0xpbnQgbWFqb3JWZXJzaW9u
LCBtaW5vclZlcnNpb247CisgICAgICAgIEFTU0VSVF9UUlVFKGVnbEluaXRpYWxpemUobURpc3Bs
YXksICZtYWpvclZlcnNpb24sICZtaW5vclZlcnNpb24pID09IEVHTF9UUlVFKTsKKyAgICB9CisK
KyAgICB2b2lkIENyZWF0ZVdpbmRvd1N1cmZhY2UoKQorICAgIHsKKyAgICAgICAgZWdsQmluZEFQ
SShFR0xfT1BFTkdMX0VTX0FQSSk7CisgICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworCisg
ICAgICAgIC8vIENob29zZSBhIGNvbmZpZworICAgICAgICBjb25zdCBFR0xpbnQgY29uZmlnQXR0
cmlidXRlc1tdID0ge0VHTF9OT05FfTsKKworICAgICAgICBFR0xpbnQgY29uZmlnQ291bnQgPSAw
OworICAgICAgICBBU1NFUlRfRUdMX1RSVUUoZWdsQ2hvb3NlQ29uZmlnKG1EaXNwbGF5LCBjb25m
aWdBdHRyaWJ1dGVzLCAmbUNvbmZpZywgMSwgJmNvbmZpZ0NvdW50KSk7CisKKyAgICAgICAgY29u
c3QgRUdMaW50IHN1cmZhY2VBdHRyaWJ1dGVzW10gPSB7RUdMX0RJUkVDVF9DT01QT1NJVElPTl9B
TkdMRSwgRUdMX1RSVUUsIEVHTF9OT05FfTsKKworICAgICAgICAvLyBDcmVhdGUgd2luZG93IHN1
cmZhY2UKKyAgICAgICAgbVN1cmZhY2UgPSBlZ2xDcmVhdGVXaW5kb3dTdXJmYWNlKG1EaXNwbGF5
LCBtQ29uZmlnLCBtT1NXaW5kb3ctPmdldE5hdGl2ZVdpbmRvdygpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VyZmFjZUF0dHJpYnV0ZXMpOworICAgICAgICBp
ZiAobVN1cmZhY2UgPT0gbnVsbHB0cikKKyAgICAgICAgeworICAgICAgICAgICAgc3RkOjpjb3V0
IDw8ICJVbmFibGUgdG8gY3JlYXRlIHdpbmRvdyBzdXJmYWNlIHdpdGggRGlyZWN0IENvbXBvc2l0
aW9uIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBtRGlyZWN0Q29tcG9zaXRpb25TdXJmYWNlQXZhaWxhYmxlID0gdHJ1ZTsKKworICAgICAg
ICAvLyBDcmVhdGUgRUdMIGNvbnRleHQKKyAgICAgICAgRUdMaW50IGNvbnRleHRBdHRpYnV0ZXNb
XSA9IHtFR0xfQ09OVEVYVF9DTElFTlRfVkVSU0lPTiwgMiwgRUdMX05PTkV9OworCisgICAgICAg
IG1Db250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChtRGlzcGxheSwgbUNvbmZpZywgbnVsbHB0ciwg
Y29udGV4dEF0dGlidXRlcyk7CisgICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworCisgICAg
ICAgIC8vIE1ha2UgdGhlIHN1cmZhY2UgY3VycmVudAorICAgICAgICBlZ2xNYWtlQ3VycmVudCht
RGlzcGxheSwgbVN1cmZhY2UsIG1TdXJmYWNlLCBtQ29udGV4dCk7CisgICAgICAgIEFTU0VSVF9F
R0xfU1VDQ0VTUygpOworICAgIH0KKworICAgIGJvb2wgbUQzRDExQXZhaWxhYmxlICAgICAgICAg
ICAgICAgICAgICAgICA9IGZhbHNlOworICAgIEhNT0RVTEUgbUQzRDExTW9kdWxlICAgICAgICAg
ICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgUEZOX0QzRDExX0NSRUFURV9ERVZJQ0UgbUQz
RDExQ3JlYXRlRGV2aWNlID0gbnVsbHB0cjsKKworICAgIElEM0QxMURldmljZSAqbURldmljZSAg
ICAgICAgICAgICAgID0gbnVsbHB0cjsKKyAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICptRGV2aWNl
Q29udGV4dCA9IG51bGxwdHI7CisgICAgRDNEX0ZFQVRVUkVfTEVWRUwgbUZlYXR1cmVMZXZlbDsK
KworICAgIGJvb2wgbURldmljZUNyZWF0aW9uRDNEMTFFeHRBdmFpbGFibGUgPSBmYWxzZTsKKwor
ICAgIGJvb2wgbURpcmVjdENvbXBvc2l0aW9uU3VyZmFjZUF2YWlsYWJsZSA9IGZhbHNlOworCisg
ICAgT1NXaW5kb3cgKm1PU1dpbmRvdyA9IG51bGxwdHI7CisKKyAgICBFR0xEaXNwbGF5IG1EaXNw
bGF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEVHTF9OT19ESVNQTEFZ
OworICAgIEVHTFN1cmZhY2UgbVN1cmZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRUdMX05PX1NVUkZBQ0U7CisgICAgRUdMQ29udGV4dCBtQ29udGV4dCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBFR0xfTk9fQ09OVEVYVDsKKyAgICBFR0xD
b25maWcgbUNvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDA7
CisgICAgUEZORUdMR0VUU1lOQ1ZBTFVFU0NIUk9NSVVNUFJPQyBlZ2xHZXRTeW5jVmFsdWVzQ0hS
T01JVU0gPSBudWxscHRyOworfTsKKworLy8gQmFzaWMgdGVzdCBmb3IgZWdsR2V0U3luY1ZhbHVl
c0NIUk9NSVVNIGV4dGVuc2lvbi4gVmVyaWZpZXMgdGhhdCBlZ2xHZXRTeW5jVmFsdWVzQ0hST01J
VU0KKy8vIGNhbiBiZSBjYWxsZWQgb24gRFgxMSB3aXRoIGRpcmVjdCBjb21wb3NpdGlvbiBhbmQg
dGhhdCBpdCByZXR1cm5zIHJlYXNvbmFibGUgZW5vdWdoIHZhbHVlcy4KK1RFU1RfRihFR0xTeW5j
Q29udHJvbFRlc3QsIFN5bmNWYWx1ZXNUZXN0KQoreworICAgIHN0YXRpYyBjb25zdCBEV09SRCBr
UG9sbEludGVydmFsICAgID0gMTA7CisgICAgc3RhdGljIGNvbnN0IGludCBrTnVtUG9sbEl0ZXJh
dGlvbnMgPSAxMDA7CisKKyAgICBpZiAoIW1EM0QxMUF2YWlsYWJsZSkKKyAgICB7CisgICAgICAg
IHN0ZDo6Y291dCA8PCAiRDNEMTEgbm90IGF2YWlsYWJsZSwgc2tpcHBpbmcgdGVzdCIgPDwgc3Rk
OjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ3JlYXRlRDNEMTFEZXZpY2Uo
KTsKKyAgICBJbml0aWFsaXplRGlzcGxheSgpOworICAgIENyZWF0ZVdpbmRvd1N1cmZhY2UoKTsK
KworICAgIGlmICghbURpcmVjdENvbXBvc2l0aW9uU3VyZmFjZUF2YWlsYWJsZSkKKyAgICB7Cisg
ICAgICAgIHN0ZDo6Y291dCA8PCAiRGlyZWN0IENvbXBvc2l0aW9uIHN1cmZhY2Ugbm90IGF2YWls
YWJsZSwgc2tpcHBpbmcgdGVzdCIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgY29uc3QgY2hhciAqZXh0ZW5zaW9uU3RyaW5nID0KKyAgICAgICAgc3RhdGljX2Nh
c3Q8Y29uc3QgY2hhciAqPihlZ2xRdWVyeVN0cmluZyhtRGlzcGxheSwgRUdMX0VYVEVOU0lPTlMp
KTsKKyAgICBBU1NFUlRfVFJVRShzdHJzdHIoZXh0ZW5zaW9uU3RyaW5nLCAiRUdMX0NIUk9NSVVN
X3N5bmNfY29udHJvbCIpKTsKKworICAgIEVHTHVpbnQ2NEtIUiB1c3QgPSAwLCBtc2MgPSAwLCBz
YmMgPSAwOworICAgIC8vIEl0IGFwcGVhcnMgdGhlcmUgaXMgYSByYWNlIGNvbmRpdGlvbiBzbyB0
aGUgdmVyeSBmaXJzdCBjYWxsIHRvIGVnbEdldFN5bmNWYWx1ZXNDSFJPTUlVTQorICAgIC8vIGNh
biBmYWlsIHdpdGhpbiBEM0Qgd2l0aCBEWEdJX0VSUk9SX0ZSQU1FX1NUQVRJU1RJQ1NfRElTSk9J
TlQuCisgICAgLy8gU2hvdWxkIHRoYXQgYmUgaGFuZGxlZCBpbnNpZGUgZWdsR2V0U3luY1ZhbHVl
c0NIUk9NSVVNPworICAgIGVnbEdldFN5bmNWYWx1ZXNDSFJPTUlVTShtRGlzcGxheSwgbVN1cmZh
Y2UsICZ1c3QsICZtc2MsICZzYmMpOworCisgICAgQVNTRVJUX0VHTF9UUlVFKGVnbEdldFN5bmNW
YWx1ZXNDSFJPTUlVTShtRGlzcGxheSwgbVN1cmZhY2UsICZ1c3QsICZtc2MsICZzYmMpKTsKKyAg
ICAvLyBJbml0aWFsIG1zYyBhbmQgc2JjIHZhbHVlIHNob3VsZCBiZSB0cnVlLiBJbml0aWFsIHVz
dCB2YWx1ZSBpcyB1bnNwZWNpZmllZC4KKyAgICBBU1NFUlRfRVEoMHVsbCwgbXNjKTsKKyAgICBB
U1NFUlRfRVEoMHVsbCwgc2JjKTsKKworICAgIC8vIFBlcmZvcm0gc29tZSB2ZXJ5IGJhc2ljIHJl
bmRlcmluZy4KKyAgICBnbENsZWFyQ29sb3IoMS4wZiwgMC4wZiwgMS4wZiwgMS4wZik7CisgICAg
Z2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
KworICAgIEFTU0VSVF9FR0xfVFJVRShlZ2xTd2FwQnVmZmVycyhtRGlzcGxheSwgbVN1cmZhY2Up
KTsKKworICAgIC8vIFBvbGwgdW50aWwgc2JjIHZhbHVlIGluY3JlYXNlcy4gTm9ybWFsbHkgaXQg
c2hvdWxkIGNoYW5nZSB3aXRoaW4gMTYtMTcgbXMuCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBr
TnVtUG9sbEl0ZXJhdGlvbnM7IGkrKykKKyAgICB7CisgICAgICAgIDo6U2xlZXAoa1BvbGxJbnRl
cnZhbCk7CisgICAgICAgIEFTU0VSVF9FR0xfVFJVRShlZ2xHZXRTeW5jVmFsdWVzQ0hST01JVU0o
bURpc3BsYXksIG1TdXJmYWNlLCAmdXN0LCAmbXNjLCAmc2JjKSk7CisgICAgICAgIGlmIChzYmMg
PiAwKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgLy8gc2JjIHNob3VsZCBjaGFu
Z2UgdG8gMS4gbXNjIGFuZCB1c3QgdG8gc29tZSBub24temVybyB2YWx1ZXMuCisgICAgQVNTRVJU
X0VRKDF1bGwsIHNiYyk7CisgICAgQVNTRVJUX0dUKHVzdCwgMHVsbCk7CisgICAgQVNTRVJUX0dU
KG1zYywgMHVsbCk7CisKKyAgICAvLyBQZXJmb3JtIG1vcmUgcmVuZGVyaW5nLgorICAgIGdsQ2xl
YXJDb2xvcigwLjBmLCAwLjBmLCAxLjBmLCAxLjBmKTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JV
RkZFUl9CSVQpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgQVNTRVJUX0VHTF9U
UlVFKGVnbFN3YXBCdWZmZXJzKG1EaXNwbGF5LCBtU3VyZmFjZSkpOworCisgICAgLy8gUG9sbCB1
bnRpbCBzYmMgdmFsdWUgaW5jcmVhc2VzLiBOb3JtYWxseSBpdCBzaG91bGQgY2hhbmdlIHdpdGhp
biAxNi0xNyBtcy4KKyAgICBFR0x1aW50NjRLSFIgdXN0MiA9IDAsIG1zYzIgPSAwLCBzYmMyID0g
MDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGtOdW1Qb2xsSXRlcmF0aW9uczsgaSsrKQorICAg
IHsKKyAgICAgICAgOjpTbGVlcChrUG9sbEludGVydmFsKTsKKyAgICAgICAgQVNTRVJUX0VHTF9U
UlVFKGVnbEdldFN5bmNWYWx1ZXNDSFJPTUlVTShtRGlzcGxheSwgbVN1cmZhY2UsICZ1c3QyLCAm
bXNjMiwgJnNiYzIpKTsKKyAgICAgICAgaWYgKHNiYzIgPiBzYmMpCisgICAgICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICAvLyBzYmMyIHNob3VsZCBiZSAyLiBtc2MyIGFuZCB1c3QyIHNob3Vs
ZCBiZSBncmVhdGVyIHRoYW4gcHJldmlvdXMgbXNjIGFuZCB1c3QgdmFsdWVzLgorICAgIEFTU0VS
VF9FUSgydWxsLCBzYmMyKTsKKyAgICBBU1NFUlRfR1QoKHVzdDIgLSB1c3QpLCAwdWxsKTsKKyAg
ICBBU1NFUlRfR1QoKG1zYzIgLSBtc2MpLCAwdWxsKTsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMVGhyZWFkVGVzdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xUaHJl
YWRUZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZWdsX3Rlc3RzL0VHTFRocmVhZFRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsODMgQEAKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisjaW5jbHVkZSA8RUdML2VnbC5o
PgorI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KKwordHlwZWRlZiBFR0xBUEkgRUdMRGlzcGxheSBF
R0xBUElFTlRSWSBFR0xHZXREaXNwbGF5KEVHTE5hdGl2ZURpc3BsYXlUeXBlIGRpc3BsYXlfaWQp
OwordHlwZWRlZiBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBFR0xJbml0aWFsaXplKEVH
TERpc3BsYXkgZHB5LCBFR0xpbnQgKm1ham9yLCBFR0xpbnQgKm1pbm9yKTsKK3R5cGVkZWYgRUdM
QVBJIEVHTENvbnRleHQgRUdMQVBJRU5UUlkgRUdMR2V0Q3VycmVudENvbnRleHQodm9pZCk7Cit0
eXBlZGVmIEVHTEFQSSBFR0xTdXJmYWNlIEVHTEFQSUVOVFJZIEVHTEdldEN1cnJlbnRTdXJmYWNl
KEVHTGludCByZWFkZHJhdyk7Cit0eXBlZGVmIEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZ
IEVHTFRlcm1pbmF0ZShFR0xEaXNwbGF5IGRweSk7CisKK2NsYXNzIEVHTFRocmVhZFRlc3QgOiBw
dWJsaWMgdGVzdGluZzo6VGVzdAoreworICBwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIFNldFVw
KCkge30KKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7fQorCisgICAgRUdMR2V0RGlzcGxh
eSAqbUdldERpc3BsYXk7CisgICAgRUdMSW5pdGlhbGl6ZSAqbUluaXRpYWxpemU7CisgICAgRUdM
R2V0Q3VycmVudENvbnRleHQgKm1HZXRDdXJyZW50Q29udGV4dDsKKyAgICBFR0xHZXRDdXJyZW50
U3VyZmFjZSAqbUdldEN1cnJlbnRTdXJmYWNlOworCisgICAgRUdMRGlzcGxheSBtRGlzcGxheTsK
KworICAgIEhNT0RVTEUgbUVHTDsKKyAgICBITU9EVUxFIG1HTEVTdjI7CisKKyAgICBzdGF0aWMg
RFdPUkQgV0lOQVBJIFRocmVhZGluZ1Rlc3RFbnRyeVBvaW50KExQVk9JRCB0aGlzUG9pbnRlcik7
CisKKyAgcHJpdmF0ZToKKyAgICB2b2lkIFRocmVhZGluZ1Rlc3QoKTsKK307CisKK0RXT1JEIFdJ
TkFQSSBFR0xUaHJlYWRUZXN0OjpUaHJlYWRpbmdUZXN0RW50cnlQb2ludChMUFZPSUQgbHBQYXJh
bWV0ZXIpCit7CisgICAgRUdMVGhyZWFkVGVzdCAqdGVzdCA9IChFR0xUaHJlYWRUZXN0ICopbHBQ
YXJhbWV0ZXI7CisgICAgdGVzdC0+VGhyZWFkaW5nVGVzdCgpOworICAgIHJldHVybiAwOworfQor
Cit2b2lkIEVHTFRocmVhZFRlc3Q6OlRocmVhZGluZ1Rlc3QoKQoreworICAgIG1FR0wgPSBMb2Fk
TGlicmFyeShURVhUKCJsaWJFR0wuZGxsIikpOworICAgIG1HTEVTdjIgPSBMb2FkTGlicmFyeShU
RVhUKCJsaWJHTEVTdjIuZGxsIikpOworCisgICAgRVhQRUNUX1RSVUUobUVHTCAhPSBOVUxMKTsK
KyAgICBFWFBFQ1RfVFJVRShtR0xFU3YyICE9IE5VTEwpOworCisgICAgbUdldERpc3BsYXkgPSAo
RUdMR2V0RGlzcGxheSAqKUdldFByb2NBZGRyZXNzKG1FR0wsICJlZ2xHZXREaXNwbGF5Iik7Cisg
ICAgbUluaXRpYWxpemUgPSAoRUdMSW5pdGlhbGl6ZSAqKUdldFByb2NBZGRyZXNzKG1FR0wsICJl
Z2xJbml0aWFsaXplIik7CisgICAgbUdldEN1cnJlbnRDb250ZXh0ID0gKEVHTEdldEN1cnJlbnRD
b250ZXh0ICopR2V0UHJvY0FkZHJlc3MobUVHTCwgImVnbEdldEN1cnJlbnRDb250ZXh0Iik7Cisg
ICAgbUdldEN1cnJlbnRTdXJmYWNlID0gKEVHTEdldEN1cnJlbnRTdXJmYWNlICopR2V0UHJvY0Fk
ZHJlc3MobUVHTCwgImVnbEdldEN1cnJlbnRTdXJmYWNlIik7CisKKyAgICBFWFBFQ1RfVFJVRSht
R2V0RGlzcGxheSAhPSBOVUxMKTsKKyAgICBFWFBFQ1RfVFJVRShtSW5pdGlhbGl6ZSAhPSBOVUxM
KTsKKyAgICBFWFBFQ1RfVFJVRShtR2V0Q3VycmVudENvbnRleHQgIT0gTlVMTCk7CisgICAgRVhQ
RUNUX1RSVUUobUdldEN1cnJlbnRTdXJmYWNlICE9IE5VTEwpOworCisgICAgbURpc3BsYXkgPSBt
R2V0RGlzcGxheShFR0xfRDNEMTFfRUxTRV9EM0Q5X0RJU1BMQVlfQU5HTEUpOworCisgICAgRVhQ
RUNUX1RSVUUobURpc3BsYXkhPSBFR0xfTk9fRElTUExBWSk7CisKKyAgICBtSW5pdGlhbGl6ZSht
RGlzcGxheSwgTlVMTCwgTlVMTCk7CisgICAgbUdldEN1cnJlbnRDb250ZXh0KCk7Cit9CisKK1RF
U1RfRihFR0xUaHJlYWRUZXN0LCB0aHJlYWRfaW5pdF9jcmFzaCkKK3sKKyAgICBEV09SRCB0aHJl
YWRJZDsKKyAgICBIQU5ETEUgdGhyZWFkSGFuZGxlID0gQ3JlYXRlVGhyZWFkKE5VTEwsIDAsIEVH
TFRocmVhZFRlc3Q6OlRocmVhZGluZ1Rlc3RFbnRyeVBvaW50LCB0aGlzLCAwLCAmdGhyZWFkSWQp
OworICAgIEVYUEVDVF9UUlVFKHRocmVhZEhhbmRsZSAhPSBOVUxMKTsKKworICAgIC8vIHdhaXQg
Zm9yIHNpZ25hbCBmcm9tIHRocmVhZAorICAgIERXT1JEIHdhaXRSZXN1bHQgPSBXYWl0Rm9yU2lu
Z2xlT2JqZWN0KHRocmVhZEhhbmRsZSwgMTAwMCk7CisgICAgRVhQRUNUX0VRKHdhaXRSZXN1bHQs
IFdBSVRfT0JKRUNUXzApOworCisgICAgLy8gY3Jhc2gsIGJlY2F1c2UgdGhlIFRMUyB2YWx1ZSBp
cyBOVUxMIG9uIG1haW4gdGhyZWFkCisgICAgbUdldEN1cnJlbnRTdXJmYWNlKEVHTF9EUkFXKTsK
KyAgICBtR2V0Q3VycmVudENvbnRleHQoKTsKKworICAgIGF1dG8gdGVybWluYXRlID0gKEVHTFRl
cm1pbmF0ZSAqKUdldFByb2NBZGRyZXNzKG1FR0wsICJlZ2xUZXJtaW5hdGUiKTsKKyAgICB0ZXJt
aW5hdGUobURpc3BsYXkpOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2VnbF90ZXN0cy9FR0xYMTFWaXN1YWxUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFgxMVZpc3VhbFRlc3QuY3Bw
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xf
dGVzdHMvRUdMWDExVmlzdWFsVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMTYg
QEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisvLworCisvLyBFR0xYMTFWaXN1YWxUZXN0LmNwcDogdGVzdHMgZm9yIEVH
TF9BTkdMRV94MTFfdmlzdWFsIGV4dGVuc2lvbgorCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K
KworI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKyNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisjaW5jbHVk
ZSA8WDExL1hsaWIuaD4KKworI2luY2x1ZGUgIk9TV2luZG93LmgiCisjaW5jbHVkZSAidGVzdF91
dGlscy9BTkdMRVRlc3QuaCIKKyNpbmNsdWRlICJ4MTEvWDExV2luZG93LmgiCisKK3VzaW5nIG5h
bWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNlCit7CisKK2NvbnN0IEVHTGludCBjb250ZXh0QXR0
cmlic1tdID0ge0VHTF9DT05URVhUX0NMSUVOVF9WRVJTSU9OLCAyLCBFR0xfTk9ORX07Cit9CisK
K2NsYXNzIEVHTFgxMVZpc3VhbEhpbnRUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQ
YXJhbTxhbmdsZTo6UGxhdGZvcm1QYXJhbWV0ZXJzPgoreworICBwdWJsaWM6CisgICAgdm9pZCBT
ZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBtRWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhU
ID0gcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xHRVRQTEFURk9STURJU1BMQVlFWFRQUk9DPigKKyAg
ICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJlZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQiKSk7
CisKKyAgICAgICAgbURpc3BsYXkgPSBYT3BlbkRpc3BsYXkoTlVMTCk7CisgICAgfQorCisgICAg
c3RkOjp2ZWN0b3I8RUdMaW50PiBnZXREaXNwbGF5QXR0cmlidXRlcyhpbnQgdmlzdWFsSWQpIGNv
bnN0CisgICAgeworICAgICAgICBzdGQ6OnZlY3RvcjxFR0xpbnQ+IGF0dHJpYnM7CisKKyAgICAg
ICAgYXR0cmlicy5wdXNoX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfQU5HTEUpOworICAg
ICAgICBhdHRyaWJzLnB1c2hfYmFjayhHZXRQYXJhbSgpLmdldFJlbmRlcmVyKCkpOworICAgICAg
ICBhdHRyaWJzLnB1c2hfYmFjayhFR0xfWDExX1ZJU1VBTF9JRF9BTkdMRSk7CisgICAgICAgIGF0
dHJpYnMucHVzaF9iYWNrKHZpc3VhbElkKTsKKyAgICAgICAgYXR0cmlicy5wdXNoX2JhY2soRUdM
X05PTkUpOworCisgICAgICAgIHJldHVybiBhdHRyaWJzOworICAgIH0KKworICAgIHVuc2lnbmVk
IGludCBjaG9vc2VEaWZmZXJlbnRWaXN1YWwodW5zaWduZWQgaW50IHZpc3VhbElkKQorICAgIHsK
KyAgICAgICAgaW50IG51bVZpc3VhbHM7CisgICAgICAgIFhWaXN1YWxJbmZvIHZpc3VhbFRlbXBs
YXRlOworICAgICAgICB2aXN1YWxUZW1wbGF0ZS5zY3JlZW4gPSBEZWZhdWx0U2NyZWVuKG1EaXNw
bGF5KTsKKworICAgICAgICBYVmlzdWFsSW5mbyAqdmlzdWFscyA9CisgICAgICAgICAgICBYR2V0
VmlzdWFsSW5mbyhtRGlzcGxheSwgVmlzdWFsU2NyZWVuTWFzaywgJnZpc3VhbFRlbXBsYXRlLCAm
bnVtVmlzdWFscyk7CisgICAgICAgIEVYUEVDVF9UUlVFKG51bVZpc3VhbHMgPj0gMik7CisKKyAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1WaXN1YWxzOyArK2kpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICh2aXN1YWxzW2ldLnZpc3VhbGlkICE9IHZpc3VhbElkKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGludCByZXN1bHQgPSB2aXN1YWxzW2ldLnZpc3VhbGlkOwor
ICAgICAgICAgICAgICAgIFhGcmVlKHZpc3VhbHMpOworICAgICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBVTlJFQUNIQUJMRSgp
OworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgIHByb3RlY3RlZDoKKyAgICBQRk5FR0xH
RVRQTEFURk9STURJU1BMQVlFWFRQUk9DIG1FZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQ7CisgICAg
RGlzcGxheSAqbURpc3BsYXk7Cit9OworCisvLyBUZXN0IHRoYXQgZGlzcGxheSBjcmVhdGlvbiBm
YWlscyBpZiB0aGUgdmlzdWFsIElEIHBhc3NlZCBpbiBpbnZhbGlkLgorVEVTVF9QKEVHTFgxMVZp
c3VhbEhpbnRUZXN0LCBJbnZhbGlkVmlzdWFsSUQpCit7CisgICAgLy8gVGhlIHRlc3QgcGxhdGZv
cm0gd2lsbCBsb2cgYW4gZXJyb3IgaW4gdGhpcyBuZWdhdGl2ZSB0ZXN0LgorICAgIElnbm9yZUFO
R0xFUGxhdGZvcm1NZXNzYWdlcygpOworCisgICAgc3RhdGljIGNvbnN0IGludCBnSW52YWxpZFZp
c3VhbElkID0gLTE7CisgICAgYXV0byBhdHRyaWJ1dGVzICAgICAgICAgICAgICAgICAgID0gZ2V0
RGlzcGxheUF0dHJpYnV0ZXMoZ0ludmFsaWRWaXN1YWxJZCk7CisKKyAgICBFR0xEaXNwbGF5IGRp
c3BsYXkgPQorICAgICAgICBtRWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUKEVHTF9QTEFURk9STV9B
TkdMRV9BTkdMRSwgRUdMX0RFRkFVTFRfRElTUExBWSwgYXR0cmlidXRlcy5kYXRhKCkpOworICAg
IEFTU0VSVF9UUlVFKGRpc3BsYXkgIT0gRUdMX05PX0RJU1BMQVkpOworCisgICAgQVNTRVJUX1RS
VUUoRUdMX0ZBTFNFID09IGVnbEluaXRpYWxpemUoZGlzcGxheSwgbnVsbHB0ciwgbnVsbHB0cikp
OworICAgIEFTU0VSVF9FR0xfRVJST1IoRUdMX05PVF9JTklUSUFMSVpFRCk7Cit9CisKKy8vIFRl
c3QgdGhhdCBjb250ZXh0IGNyZWF0aW9uIHdpdGggYSB2aXN1YWwgSUQgc3VjY2VlZHMsIHRoYXQg
dGhlIGNvbnRleHQgZXhwb3NlcworLy8gb25seSBvbmUgY29uZmlnLCBhbmQgdGhhdCBhIGNsZWFy
IG9uIGEgc3VyZmFjZSB3aXRoIHRoaXMgY29uZmlnIHdvcmtzLgorVEVTVF9QKEVHTFgxMVZpc3Vh
bEhpbnRUZXN0LCBWYWxpZFZpc3VhbElEQW5kQ2xlYXIpCit7CisgICAgLy8gV2UnbGwgdGVzdCB0
aGUgZXh0ZW5zaW9uIHdpdGggb25lIHZpc3VhbCBJRCBidXQgd2UgZG9uJ3QgY2FyZSB3aGljaCBv
bmUuIFRoaXMgbWVhbnMgd2UKKyAgICAvLyBjYW4gdXNlIE9TV2luZG93IHRvIGNyZWF0ZSBhIHdp
bmRvdyBhbmQganVzdCBncmFiIGl0cyB2aXN1YWwuCisgICAgT1NXaW5kb3cgKm9zV2luZG93ID0g
Q3JlYXRlT1NXaW5kb3coKTsKKyAgICBvc1dpbmRvdy0+aW5pdGlhbGl6ZSgiRUdMWDExVmlzdWFs
SGludFRlc3QiLCA1MDAsIDUwMCk7CisgICAgb3NXaW5kb3ctPnNldFZpc2libGUodHJ1ZSk7CisK
KyAgICBXaW5kb3cgeFdpbmRvdyA9IG9zV2luZG93LT5nZXROYXRpdmVXaW5kb3coKTsKKworICAg
IFhXaW5kb3dBdHRyaWJ1dGVzIHdpbmRvd0F0dHJpYnV0ZXM7CisgICAgQVNTRVJUX05FKDAsIFhH
ZXRXaW5kb3dBdHRyaWJ1dGVzKG1EaXNwbGF5LCB4V2luZG93LCAmd2luZG93QXR0cmlidXRlcykp
OworICAgIGludCB2aXN1YWxJZCA9IHdpbmRvd0F0dHJpYnV0ZXMudmlzdWFsLT52aXN1YWxpZDsK
KworICAgIGF1dG8gYXR0cmlidXRlcyA9IGdldERpc3BsYXlBdHRyaWJ1dGVzKHZpc3VhbElkKTsK
KyAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPQorICAgICAgICBtRWdsR2V0UGxhdGZvcm1EaXNwbGF5
RVhUKEVHTF9QTEFURk9STV9BTkdMRV9BTkdMRSwgRUdMX0RFRkFVTFRfRElTUExBWSwgYXR0cmli
dXRlcy5kYXRhKCkpOworICAgIEFTU0VSVF9ORShFR0xfTk9fRElTUExBWSwgZGlzcGxheSk7CisK
KyAgICBBU1NFUlRfVFJVRShFR0xfVFJVRSA9PSBlZ2xJbml0aWFsaXplKGRpc3BsYXksIG51bGxw
dHIsIG51bGxwdHIpKTsKKworICAgIC8vIFdoaWxlIHRoaXMgaXMgbm90IHJlcXVpcmVkIGJ5IHRo
ZSBleHRlbnNpb24sIHRlc3QgdGhhdCBvdXIgaW1wbGVtZW50YXRpb24gcmV0dXJucyBvbmx5IG9u
ZQorICAgIC8vIGNvbmZpZywgd2l0aCB0aGUgc2FtZSBuYXRpdmUgdmlzdWFsIElkIHRoYXQgd2Ug
cHJvdmlkZWQuCisgICAgaW50IG5Db25maWdzID0gMDsKKyAgICBBU1NFUlRfVFJVRShFR0xfVFJV
RSA9PSBlZ2xHZXRDb25maWdzKGRpc3BsYXksIG51bGxwdHIsIDAsICZuQ29uZmlncykpOworICAg
IEFTU0VSVF9FUSgxLCBuQ29uZmlncyk7CisKKyAgICBpbnQgblJldHVybmVkQ29uZmlncyA9IDA7
CisgICAgRUdMQ29uZmlnIGNvbmZpZzsKKyAgICBBU1NFUlRfVFJVRShFR0xfVFJVRSA9PSBlZ2xH
ZXRDb25maWdzKGRpc3BsYXksICZjb25maWcsIDEsICZuUmV0dXJuZWRDb25maWdzKSk7CisgICAg
QVNTRVJUX0VRKG5Db25maWdzLCBuUmV0dXJuZWRDb25maWdzKTsKKworICAgIEVHTGludCBlZ2xO
YXRpdmVJZDsKKyAgICBBU1NFUlRfVFJVRShFR0xfVFJVRSA9PSBlZ2xHZXRDb25maWdBdHRyaWIo
ZGlzcGxheSwgY29uZmlnLCBFR0xfTkFUSVZFX1ZJU1VBTF9JRCwgJmVnbE5hdGl2ZUlkKSk7Cisg
ICAgQVNTRVJUX0VRKHZpc3VhbElkLCBlZ2xOYXRpdmVJZCk7CisKKyAgICAvLyBGaW5hbGx5LCB0
cnkgdG8gZG8gYSBjbGVhciBvbiB0aGUgd2luZG93LgorICAgIEVHTENvbnRleHQgY29udGV4dCA9
IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgY29uZmlnLCBFR0xfTk9fQ09OVEVYVCwgY29udGV4
dEF0dHJpYnMpOworICAgIEFTU0VSVF9ORShFR0xfTk9fQ09OVEVYVCwgY29udGV4dCk7CisKKyAg
ICBFR0xTdXJmYWNlIHdpbmRvdyA9IGVnbENyZWF0ZVdpbmRvd1N1cmZhY2UoZGlzcGxheSwgY29u
ZmlnLCB4V2luZG93LCBudWxscHRyKTsKKyAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKworICAg
IGVnbE1ha2VDdXJyZW50KGRpc3BsYXksIHdpbmRvdywgd2luZG93LCBjb250ZXh0KTsKKyAgICBB
U1NFUlRfRUdMX1NVQ0NFU1MoKTsKKworICAgIGdsVmlld3BvcnQoMCwgMCwgNTAwLCA1MDApOwor
ICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAxLjBmLCAxLjBmKTsKKyAgICBnbENsZWFyKEdM
X0NPTE9SX0JVRkZFUl9CSVQpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVD
VF9QSVhFTF9FUSgyNTAsIDI1MCwgMCwgMCwgMjU1LCAyNTUpOworCisgICAgLy8gVGVhcmRvd24K
KyAgICBlZ2xEZXN0cm95U3VyZmFjZShkaXNwbGF5LCB3aW5kb3cpOworICAgIEFTU0VSVF9FR0xf
U1VDQ0VTUygpOworCisgICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29udGV4dCk7Cisg
ICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CisKKyAgICBTYWZlRGVsZXRlKG9zV2luZG93KTsKKwor
ICAgIGVnbE1ha2VDdXJyZW50KGRpc3BsYXksIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fU1VSRkFD
RSwgRUdMX05PX0NPTlRFWFQpOworICAgIGVnbFRlcm1pbmF0ZShkaXNwbGF5KTsKK30KKworLy8g
VGVzdCB0aGF0IEVHTF9CQURfTUFUQ0ggaXMgZ2VuZXJhdGVkIHdoZW4gdHJ5aW5nIHRvIGNyZWF0
ZSBhbiBFR0wgd2luZG93IGZyb20KKy8vIGFuIFgxMSB3aW5kb3cgd2hvc2UgdmlzdWFsIElEIGRv
ZXNuJ3QgbWF0Y2ggdGhlIHZpc3VhbCBJRCBwYXNzZWQgYXQgZGlzcGxheSBjcmVhdGlvbi4KK1RF
U1RfUChFR0xYMTFWaXN1YWxIaW50VGVzdCwgSW52YWxpZFdpbmRvd1Zpc3VhbElEKQoreworICAg
IC8vIEdldCB0aGUgZGVmYXVsdCB2aXN1YWwgSUQsIGFzIGEgZ29vZCBndWVzcyBvZiBhIHZpc3Vh
bCBpZCBmb3Igd2hpY2ggZGlzcGxheQorICAgIC8vIGNyZWF0aW9uIHdpbGwgc3VjY2VlZC4KKyAg
ICBpbnQgdmlzdWFsSWQ7CisgICAgeworICAgICAgICBPU1dpbmRvdyAqb3NXaW5kb3cgPSBDcmVh
dGVPU1dpbmRvdygpOworICAgICAgICBvc1dpbmRvdy0+aW5pdGlhbGl6ZSgiRUdMWDExVmlzdWFs
SGludFRlc3QiLCA1MDAsIDUwMCk7CisgICAgICAgIG9zV2luZG93LT5zZXRWaXNpYmxlKHRydWUp
OworCisgICAgICAgIFdpbmRvdyB4V2luZG93ID0gb3NXaW5kb3ctPmdldE5hdGl2ZVdpbmRvdygp
OworCisgICAgICAgIFhXaW5kb3dBdHRyaWJ1dGVzIHdpbmRvd0F0dHJpYnV0ZXM7CisgICAgICAg
IEFTU0VSVF9ORSgwLCBYR2V0V2luZG93QXR0cmlidXRlcyhtRGlzcGxheSwgeFdpbmRvdywgJndp
bmRvd0F0dHJpYnV0ZXMpKTsKKyAgICAgICAgdmlzdWFsSWQgPSB3aW5kb3dBdHRyaWJ1dGVzLnZp
c3VhbC0+dmlzdWFsaWQ7CisKKyAgICAgICAgU2FmZURlbGV0ZShvc1dpbmRvdyk7CisgICAgfQor
CisgICAgYXV0byBhdHRyaWJ1dGVzID0gZ2V0RGlzcGxheUF0dHJpYnV0ZXModmlzdWFsSWQpOwor
ICAgIEVHTERpc3BsYXkgZGlzcGxheSA9CisgICAgICAgIG1FZ2xHZXRQbGF0Zm9ybURpc3BsYXlF
WFQoRUdMX1BMQVRGT1JNX0FOR0xFX0FOR0xFLCBFR0xfREVGQVVMVF9ESVNQTEFZLCBhdHRyaWJ1
dGVzLmRhdGEoKSk7CisgICAgQVNTRVJUX05FKEVHTF9OT19ESVNQTEFZLCBkaXNwbGF5KTsKKwor
ICAgIEFTU0VSVF9UUlVFKEVHTF9UUlVFID09IGVnbEluaXRpYWxpemUoZGlzcGxheSwgbnVsbHB0
ciwgbnVsbHB0cikpOworCisKKyAgICAvLyBJbml0aWFsaXplIHRoZSB3aW5kb3cgd2l0aCBhIHZp
c3VhbCBpZCBkaWZmZXJlbnQgZnJvbSB0aGUgZGlzcGxheSdzIHZpc3VhbCBpZAorICAgIGludCBv
dGhlclZpc3VhbElkID0gY2hvb3NlRGlmZmVyZW50VmlzdWFsKHZpc3VhbElkKTsKKyAgICBBU1NF
UlRfTkUodmlzdWFsSWQsIG90aGVyVmlzdWFsSWQpOworCisgICAgT1NXaW5kb3cgKm9zV2luZG93
ID0gbmV3IFgxMVdpbmRvdyhvdGhlclZpc3VhbElkKTsKKyAgICBvc1dpbmRvdy0+aW5pdGlhbGl6
ZSgiRUdMWDExVmlzdWFsSGludFRlc3QiLCA1MDAsIDUwMCk7CisgICAgb3NXaW5kb3ctPnNldFZp
c2libGUodHJ1ZSk7CisKKyAgICBXaW5kb3cgeFdpbmRvdyA9IG9zV2luZG93LT5nZXROYXRpdmVX
aW5kb3coKTsKKworICAgIC8vIENyZWF0aW5nIHRoZSBFR0wgd2luZG93IHNob3VsZCBmYWlsIHdp
dGggRUdMX0JBRF9NQVRDSAorICAgIGludCBuUmV0dXJuZWRDb25maWdzID0gMDsKKyAgICBFR0xD
b25maWcgY29uZmlnOworICAgIEFTU0VSVF9UUlVFKEVHTF9UUlVFID09IGVnbEdldENvbmZpZ3Mo
ZGlzcGxheSwgJmNvbmZpZywgMSwgJm5SZXR1cm5lZENvbmZpZ3MpKTsKKyAgICBBU1NFUlRfRVEo
MSwgblJldHVybmVkQ29uZmlncyk7CisKKyAgICBFR0xTdXJmYWNlIHdpbmRvdyA9IGVnbENyZWF0
ZVdpbmRvd1N1cmZhY2UoZGlzcGxheSwgY29uZmlnLCB4V2luZG93LCBudWxscHRyKTsKKyAgICBB
U1NFUlRfRVEoRUdMX05PX1NVUkZBQ0UsIHdpbmRvdyk7CisgICAgQVNTRVJUX0VHTF9FUlJPUihF
R0xfQkFEX01BVENIKTsKKworICAgIFNhZmVEZWxldGUob3NXaW5kb3cpOworfQorCitBTkdMRV9J
TlNUQU5USUFURV9URVNUKEVHTFgxMVZpc3VhbEhpbnRUZXN0LCBFUzJfT1BFTkdMKCkpOwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9tZWRpYS95dXZ0
ZXN0LmlubAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
ZWdsX3Rlc3RzL21lZGlhL3l1dnRlc3QuaW5sCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvbWVkaWEveXV2dGVzdC5pbmwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxNTQ4IEBACisvLyBHRU5FUkFURUQgRklMRSAtIERPIE5PVCBF
RElULgorLy8gR2VuZXJhdGVkIGJ5IHNjcmlwdHMvYm1wX3RvX3l1di5weSB1c2luZyBkYXRhIGZy
b20geXV2dGVzdC5ibXAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKworc3RhdGljIGNvbnN0IHNpemVfdCB5dXZ0ZXN0X3dpZHRo
ID0gMTI4Oworc3RhdGljIGNvbnN0IHNpemVfdCB5dXZ0ZXN0X2hlaWdodCA9IDEyODsKK3N0YXRp
YyBjb25zdCB1bnNpZ25lZCBjaGFyIHl1dnRlc3RfZGF0YVtdID0KK3sKKyAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisg
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
CisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMTMyLDE2LDE2LDE2LDE2LDEwNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
CisgICAgMjM1LDIzLDE2LDE2LDE2LDE2LDE2LDE2LDQ0LDE1MywyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
CisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDE2LDE2LDE2
LDE2LDE2LDE2LDE2LDE2LDE2LDc4LDIyOCwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwxNiwxNiwxNiwxNzMsNDQsMTYsMTYsMTYsMTYs
MTYsMTYsNDQsMTUzLDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwxNiwxNiwxNiwyMjgsMjM1LDIzNSwyMjEsMTEyLDE2LDE2LDE2LDE2LDE2LDc4LDIy
OCwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisg
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDM3LDE2LDE2LDky
LDIzNSwyMzUsMjM1LDIzNSwxNTMsNDQsMTYsMTYsMTYsMTYsMTYsCisgICAgOTIsMjI4LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAorICAgIDIzNSwyMTIsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYs
MjAzLDIzNCwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDE0NiwxNiwxNiwxNiwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMjEsMTEyLDE2LDE2LDE2LAorICAgIDE2LDE2LDE2LDkyLDIyOCwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjE5LDE4NywxNjAsMTUwLDE1MCwxNTAsMTQwLDEyNywxMjEsMTIxLDEyMSwKKyAgICAxNTIsMTg2
LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDIwMywyMzQs
CisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAg
IDIzNSwyMzUsMTYsMTYsMTYsMTA1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxNTMsNDQs
MTYsCisgICAgMTYsMTYsMTYsMTYsNzgsMjI4LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIxOSwKKyAgICAxODcsMTYwLDE1MCwxNTAsMTUwLDE1MCwxNTAsMTQ5LDEzMiwxMjEs
MTIxLDEyMSwxMjEsMTIxLDEyMSwxNTIsCisgICAgMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2
LDE4NSwxNTQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LAorICAgIDEzNCwxMzQsMTM0LDE2
OSwyMzIsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTMsMTcxLDEzNSwxMjAsMTIwLDEyMCwxMjAsMTIwLDEy
MCwxMjAsCisgICAgMTIwLDEyMCwxMjAsMTIwLDEyMCwxNjcsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzMiwKKyAgICAxNzIsMTM0LDI3LDE2LDE2LDE2
LDEzMCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTY5LDE1MSwKKyAgICA0NCwxNiwxNiwx
NiwxNiw0NCwxNTMsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTksMTg3LDE2MCwxNTAsCisgICAgMTUw
LDE1MCwxNTAsMTUwLDE1MCwxNTAsMTQ5LDEyOSwxMjEsMTIxLDEyMSwxMjEsMTIxLDEyMSwxMjEs
MTg1LAorICAgIDE4NiwxODYsMTg1LDE0NiwxMjEsMTIxLDEyMiwxMzEsMTM0LDEzNCwxMzQsMTM0
LDEzNCwxMzQsMTM0LDEzNCwKKyAgICAxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDE2
OSwyMzIsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzMSwx
NTYsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLAorICAgIDEyMCwxMjAs
MTIwLDEyMCwxMjAsMTI0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
KyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDE4NywxMzQsCisgICAgMTM0LDEzNCwxMDEsMjQsMTYsMTYsNTcsMTM0LDEzNCwxMzQsMTM0
LDEzNCwxMzQsMTM0LDEzNCwxMzQsCisgICAgMTM0LDEzNCw3NSwxNiwxNiwxNiwxNiw3OCwyMjgs
MjE5LDE4NywxNjAsMTUwLDE1MCwxNTAsMTUwLAorICAgIDE1MCwxNTAsMTUwLDE1MCwxNTAsMTQ4
LDEzNCwxMjEsMTIxLDEyMSwxMjEsMTM2LDE3MiwyMjUsMjEyLDE4NiwKKyAgICAxODYsMTg2LDE2
MywxNTAsMTUwLDE0OSwxMzgsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsCisg
ICAgMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxNjksMjMyLDIz
NSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjEzLDE3MSwxMzUsMTIwLDEyMCwxMjAsMTIwLDEyMCwx
MjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwKKyAgICAxMjAsMTIwLDEyMCwxMjAsMTM1LDE5MiwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxMzcsMTM0LAorICAgIDEz
NCwxMzQsMTM0LDg2LDE2LDE2LDE2LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0
LAorICAgIDEzNCwxMzQsMTM0LDg2LDI0LDE2LDE2LDE2LDQ1LDEyOSwxNTAsMTUwLDE1MCwxNTAs
MTUwLDE1OCwKKyAgICAxODQsMjE0LDIzNSwyMzUsMTcyLDEyMSwxMjEsMTIxLDEyMSwxNzgsMjM1
LDIzNSwyMzUsMjM1LDE4OCwxODYsCisgICAgMTg2LDE4OCwyMDAsMTU4LDE0OSwxMzksMTM0LDEz
NCwxMzQsMTQzLDE1OCwxMzYsMTIxLDEyMSwxMjEsMTIxLAorICAgIDE0NiwxNzgsMTY2LDE0MCwx
MzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDE0NywxOTcsMTk5LDE0MiwKKyAgICAxMjAs
MTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTY0LDIwNiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTM0LDEzNCwKKyAgICAxMzQsMTk0LDIzNSwyMzUsMzcsMTYs
MTYsMTY2LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTk3LDE0NywxMzQsCisgICAgMTM0LDEzNCwxMzQs
MTM0LDEyNiw2OCwxNiwxNiwxNiwyMCw4NywxNTAsMTU4LDE4NCwyMTQsMjM1LAorICAgIDIzNSwy
MzUsMjM1LDE5OSwxMjUsMTIxLDEyMSwxMjUsMTgxLDIzNSwyMzUsMjM1LDIzNSwyMjYsMTg2LDE4
NiwKKyAgICAxODYsMjE3LDIzNSwyMzIsMTU1LDEzNCwxMzQsMTM0LDE0MSwxNTAsMTUwLDE3NCwy
MjUsMTc4LDEzNiwxMjEsCisgICAgMTIxLDEyMSwxNTQsMTg2LDE4NiwxODYsMjAwLDE5NiwxNDcs
MTM0LDEzNCwxMzQsMTMwLDEyMywxMjAsMTIwLAorICAgIDEyMCwxMjAsMTIwLDEyMCwxMjAsMTMx
LDE4NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisg
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwxMzQsMTM0LAorICAgIDEzNCwyMzUsMjM1LDIzNSwxMTIsMTYsMTYsNTcsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIwNiwxNDcsMTM0LDEzNCw4MiwyMCwx
NiwxNiwxNiw3MiwyMjgsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzMiwxNTcsMTIxLDEyMSwxMjEs
MTI1LDIyNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIwMywxODYsMTg2LAorICAgIDIwMiwyMzUsMjMy
LDE2MywxMzQsMTM0LDEzNCwxNjEsMTU1LDE1MCwxNTAsMTUwLDE3NCwyMzIsMjM1LDIzNSwKKyAg
ICAyMjgsMTcyLDEyMSwxNTEsMTg2LDE4NiwxODYsMTY1LDExMywxMTEsMTIwLDEyMiwxMjAsMTIw
LDEyMCwxMjAsCisgICAgMTIwLDEyMCwxMzUsMTY3LDIwNiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDEzNCwxMzQsCisgICAgMTM0
LDIzNSwyMzUsMjM1LDIxNSwxNiwxNiwxNiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LAorICAgIDIzNSwyMzUsMjM1LDIzNSwxNDUsMTM2LDEzNCwxMTUsNDIsMTYsMTYsMTYsNzgsMjI4
LDIzNSwyMzUsCisgICAgMjM1LDE3MiwxMjEsMTIxLDEyMSwxMjUsMTgxLDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDE4OCwxODYsMTg2LAorICAgIDIyNiwyMzIsMTYzLDEzNCwxMzQsMTM0LDE4NCwy
MzUsMjMwLDE4NywxNTAsMTUwLDE1MCwxNjAsMjAzLDIzNSwKKyAgICAyMzEsMTU4LDExMSwxMTEs
MTQ5LDE4NiwxODYsMTg2LDE1MSwxMTksMTIwLDEyMCwxMjAsMTIwLDEyMSwxMjYsCisgICAgMTMz
LDE0MiwyMzEsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjMzLDE2OSwxODksCisgICAgMTg5LDE4OSwxODksMTg5LDE4OSwx
NiwxNiwxNiw4NywxODksMTg5LDE4OSwxOTUsMjE3LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUs
MjM1LDE1MCwxNTAsMTUwLDE2NywxMzQsNzEsMTYsMTYsMTYsNzEsMjI4LDIzNSwKKyAgICAyMzUs
MTI1LDEyMSwxMjEsMTY4LDIyNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTg2LDE4Niwx
ODYsCisgICAgMjMyLDE2MywxMzQsMTM0LDEzNCwxODQsMjM1LDIzNSwyMzUsMjM1LDE5MiwxNTAs
MTUwLDE1MCwxNDgsMTMwLAorICAgIDExMSwxMTEsMTExLDExMSwxMTEsMTQ5LDE2NiwxMzMsMTIw
LDEyMCwxMjAsMTIwLDEyMCwxMjEsMTMzLDEzNCwKKyAgICAxMzQsMTM0LDEzNCwxNTIsMjMyLDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzMywy
MDIsMTg5LDE4OSwKKyAgICAxODksMTg5LDE4OSwxODksMTg5LDMyLDE2LDE2LDE2LDg3LDE4OSwx
ODksMTg5LDE4OSwxOTUsMjE3LAorICAgIDIzNSwyMzUsMjM1LDIzNSwxNTAsMTUwLDE1MCwyMzUs
MTg0LDEzNCw3NSwxNiwxNiwxNiwyMCw3NywKKyAgICAxMjEsOTgsMTIxLDEyMSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIxMiwxODYsMTg2LDE4NSwKKyAgICAxNjMsMTM0LDEzNCwx
MzQsMTg0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIwMCwxNTMsMTI2LDExMSwxMTEsCisgICAg
MTExLDExMSwxMTEsMTI1LDE0OCwxMzQsMTIwLDEyMCwxMjAsMTIwLDEyMSwxNTIsMjI0LDIwMCwx
MjksMTMyLAorICAgIDEzNCwxMzQsMTM0LDEzNCwxMzcsMjMyLDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzMsMjAyLDE4OSwxODksMTg5LAorICAgIDE4OSwx
ODksMTg5LDE4OSwxODksMTQwLDI3LDE2LDE2LDE2LDE4OSwxODksMTg5LDE4OSwxODksMTg5LAor
ICAgIDE5NSwyMTcsMjM1LDIzNSwxNTAsMTUwLDE1MCwyMzUsMjM1LDE5NCwxNDcsNzUsMTYsMTYs
MTYsMTYsCisgICAgMTYsMTYsNTIsMTU3LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MTg4LDE4NiwxODUsMTQ5LAorICAgIDEzNCwxMzQsMTM0LDE4NCwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDE2MywxMTEsMTExLDExMSwKKyAgICAxMTIsMTE4LDEyNywxMjAsMTIwLDEy
MCwxMjAsMTIwLDEyMiwxNTAsMTM5LDEyMSwxNTMsMjM1LDIzNSwyMDYsCisgICAgMTQwLDEzNCwx
MzQsMTM0LDEzNCwxMzQsMTc1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjMzLDIwMiwxODksMTg5LDE4OSwxNjEsCisgICAgMTM0LDEzNCwxMzQsMjM1LDIzNSwyMzUsMTcz
LDE2LDE2LDE2LDIzNSwyMzIsMjEyLDE5MiwxODksMTg5LAorICAgIDE4OSwxODksMTg5LDE4OSwx
ODksMTg5LDE3NiwyMzMsMjM1LDIzNSwyMzUsMjE2LDEwOSwzMSwxNiwxNiwKKyAgICAxNiwxNiwx
NiwxNTIsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxODYsMTg1LDE0OSwxMzQsCisg
ICAgMTM0LDEzNCwxODQsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzMSwxNTgsMTExLDEx
MSwxMTUsMTIwLAorICAgIDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEzMSwxNTksMTgwLDE4Niwx
NzQsMTIxLDEyMSwxOTksMjM1LDIzNSwKKyAgICAyMzUsMjI3LDE0NCwxMzQsMTM0LDEzNCwxMzQs
MTQ2LDIzMSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIyMCwxOTgsMTg5LDE4OSwxODksMjEy
LDE5NywKKyAgICAxMzQsMTM0LDEzNCwxNjMsMjM1LDIzNSwyMzUsMzcsMTYsMTYsMTY2LDIzNSwy
MzUsMjMyLDIxMiwxOTIsCisgICAgMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODks
MTg5LDIwNSwyMzMsMjM1LDE4NCwxMTksODksCisgICAgNDksMTYsMTYsMzcsMTUzLDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNCwxNzAsMTQ0LDEzNCwxMzQsCisgICAgMTM0LDE4NCwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjMxLDE0NiwxMTIsMTE2LDEyMCwxMjAsMTIwLAorICAgIDEy
MCwxMjAsMTIwLDEyOCwxNjcsMjA2LDIzNSwyMzEsMTg2LDE4NiwxODYsMTIzLDEyMSwxNDMsMjM1
LDIzNSwKKyAgICAyMzUsMjM1LDIyMywxMjIsMTMyLDEzNCwxMzQsMTM0LDEzNywyMjgsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjEwLDE4OSwxODksMTg5LDE4OSwyMTIsMjM1LDIzNSwKKyAgICAxNDQsMTM0
LDEzNCwxMzQsMjAzLDIzNSwyMzUsMTEyLDE2LDE2LDU3LDIzNSwyMzUsMjM1LDIzNSwyMzIsCisg
ICAgMjEyLDE5NSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTk0LDIw
OCwxNjUsMTMzLAorICAgIDEyMywyMCwxNiwxNiwxNiw1OSwyMjUsMjM1LDIzNSwyMzUsMjMyLDE1
NywxMzQsMTM0LDEzNCwxMzQsCisgICAgMTg0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMTUzLDExNywxMjAsMTIwLDEyMCwxMjAsMTIwLAorICAgIDEyMywxMzIsMTQyLDE1MCwxNzQs
MjM1LDIzNSwyMzUsMTkxLDE4NiwxODYsMTY1LDEyMSwxMjEsMTk5LDIzNSwKKyAgICAyMzUsMjM1
LDIzNSwxOTYsMTI5LDEzMiwxMzQsMTM0LDEzNCwxMzksMjMyLDIzNSwyMzUsMjM1LDIzNSwyMzUs
CisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTMsMTg5LDE4
OSwxODksMTkxLDIxMywyMzUsMjM1LDIzNSwKKyAgICAyMDYsMTQ3LDEzNCwxMzQsMTM0LDE3NSwy
MzUsMjE1LDIzLDE2LDE2LDE2NiwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMTc5
LDE1MCwxNjQsMTg3LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTgzLAorICAgIDE2
NSwxMTEsMjQsMTYsMTYsMTYsNTcsMjI1LDIzNSwyMzUsMTY2LDEzNSwxNjksMTg5LDE4OSwxODks
CisgICAgMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg1LDE3MSwxMjcsMTIwLDEyMCwxMjAsMTIw
LDEyMCwxMzUsMTg4LAorICAgIDIwOCwxNTUsMTUwLDE1MCwxNTAsMjA4LDIzNSwyMzUsMjE1LDE4
NiwxODYsMTg2LDEyMSwxMjEsMTQzLDIzMiwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIyOSwx
NTEsMTM0LDEzNCwxMzQsMTYzLDIzMiwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxOTEsMTg5LDE4OSwxOTEsMjMxLDIzNSwyMzUs
MjM1LDIzNSwKKyAgICAyMzUsMjI1LDEzNywxMzQsMTM0LDEzNCwyMzUsMjM1LDExMiwxNiwxNiw1
NywyMjgsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMTUyLDE1MCwxNTAsMjE5LDIzNSwy
MzUsMjE3LDE5NSwxODksMTg5LDE4OSwxODksMTg5LAorICAgIDE4OSwxODksMTc4LDkyLDE2LDE2
LDE2LDE2LDU3LDE0MCwxMzUsMTczLDE4OSwxODksMTg5LDE4OSwKKyAgICAxODksMTg5LDE4OSwx
ODksMTgwLDE0OCwxMjUsMTIwLDEyMCwxMjAsMTIwLDEyMCwxNDksMTk5LDIzNSwyMzUsCisgICAg
MjM1LDIzMCwxNzksMTUwLDE1MCwxNjYsMjM1LDIzNSwyMzUsMTg2LDE4NiwxODYsMTI1LDEyMSwx
MjEsMTYxLAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxMjIsMTM0LDEzNCwxMzQs
MTY5LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDE4OSwxODksMTg5LDIxNywyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwy
MzUsMjAzLDEzNCwxMzQsMTM0LDE3MCwyMTcsMjE1LDIzLDE2LDE2LDkyLDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwyMzUsMjM1LDE1MCwxNTAsMTUwLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIyNywx
NzcsMTgwLDE4OSwKKyAgICAxODksMTg5LDE4OSwxODksMTAyLDE2LDE2LDE2LDE2LDU3LDE2OSwx
ODksMTg5LDE4OSwxODksMTg5LAorICAgIDE4OSwxODksMTcwLDE0MCwxMjAsMTIwLDEyMCwxMjAs
MTIwLDEyMiwxNDYsMTc4LDIzMywyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIyNywxNTIsMTUw
LDE1MCwxOTUsMjM1LDIzNSwxODYsMTg2LDE4NiwxODksMTIxLDEyMSwxMjEsCisgICAgMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDExMSwxMjIsMTM0LDEzNCwxMzQsMTYwLDIzNSwyMzUsMjM1
LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTg5LDE4OSwx
ODksMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMTQ0LDEzNCwxMzQs
MTM0LDE0OSwxODUsMTI3LDE2LDE2LDE2LDEwNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDE1
MCwxNTAsMTUwLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxMjUsMTIxLDEzNSwKKyAgICAy
MDAsMTkxLDE4OSwxODksMTg5LDEyNCwzOCwxNiwxNiwxNiwxMjQsMTc4LDE3MiwxNDMsMTU2LDE0
OSwKKyAgICAxMzksMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTI4LDE1NiwxODUsMTg5LDE4OSwx
OTUsMTc2LDk1LDk1LAorICAgIDE1MiwyMzUsMjM1LDE5NSwxNTAsMTUwLDE1MiwyMjIsMjM1LDE4
NiwxODYsMTg2LDIzNSwxMjEsMTIxLDEyMSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMTExLDExMSwxMzIsMTM0LDEzNCwxMzQsMjEzLDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzMywxODksMTg5LDE4OSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMDMsMTM5LDEzNCwxMzQsMTM0LDE1MiwxODYsMzMs
MTYsMTYsMTYsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwxNTAsMTUwLDE1MCwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMjgsMTIxLDEyMSwxMjEsCisgICAgMjA4LDE4OSwxODksMTg5LDE4OSwx
ODksMTg5LDMyLDIzLDU4LDEwNywxMjAsMTIwLDEyMCwxMjAsMTIwLAorICAgIDEyMCwxMjAsMTIw
LDEyMCwxMjAsMTQ5LDE1MCwxMTEsMTExLDE1MiwxODksMTg5LDE4OSwxODksMTYzLDk3LAorICAg
IDk1LDk1LDk1LDE1MiwxNjgsMTUwLDE1MCwxNjgsMjM1LDE4NiwxODYsMTg2LDIzNSwxMjEsMTIx
LDEyMSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTExLDExMSwxMTcsMTQ3LDEz
NCwxMzQsMTgyLDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIxMCwxODksMTg5LDE5MSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1
LDIzNSwyMzUsMjI5LDE3NywxMzQsMTM0LDEzNCwxNDksMTM4LDE2LDE2LDE2LDc4LDIzNSwKKyAg
ICAyMzUsMjM1LDIzNSwxNTAsMTUwLDE1MCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxOTIsMTIx
LDEyMSwxNTgsCisgICAgMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTgwLDEyNiwxMTUsMTIwLDEy
MCwxMjAsMTIwLDEyMCwxMjAsMTIwLAorICAgIDEyMCwxMjAsMTIzLDEzNCwyMDMsMjM1LDExNSwx
MTEsMTExLDE3NiwyMTYsMTkyLDE4OSwxODksMTg5LDE2MywKKyAgICA5Nyw5NSw5NSw5NSwyMjQs
MTUyLDE1MCwxNTAsMjA4LDE4NiwxODYsMTg2LDIzNSwxMjEsMTIxLDEyMSwKKyAgICAyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTExLDExMSwxMTEsMjEwLDEzNCwxMzQsMTQwLDE5NywyMzUs
CisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE5MSwxODksMTg5LDIx
MywyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwx
NDQsMTM0LDEzNCwxMzQsMTcwLDMyLDE2LDE2LDE2LDE0NCwKKyAgICAyMzQsMjM1LDIzNSwxNTAs
MTUwLDE1MCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxNTMsMTIxLDEyNywxODksCisgICAgMTg5
LDE4OSwyMDEsMjEzLDE2MiwxMjgsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMTcsMTAxLDE0MCwxNTYs
MTcyLAorICAgIDE3MywxNjYsMTQ4LDEzNCwxMzcsMTg3LDExMSwxMTEsMTExLDIzNSwyMzUsMjMy
LDIxMCwxODksMTg5LDE4OSwKKyAgICAxNjMsOTcsOTUsOTUsMjM1LDE4NywxNTAsMTUwLDE2Niwx
ODYsMTg2LDE4NiwyMzUsMTIxLDEyMSwxMjEsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDExMSwxMTEsMTExLDIzNSwxNDQsMTM0LDEzNCwxMzQsMTYzLAorICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzMywxODksMTg5LDE4OSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjA2LDE0NywxMzQsMTM0LDE0
NiwxMzgsMzcsMTYsMTYsNDgsCisgICAgMTk0LDIzNCwyMzUsMTUwLDE1MCwxNTAsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMTI1LDE0NiwxODUsMTg5LAorICAgIDE4NSwxNjUsMTM5LDEyMSwxMjAs
MTIwLDEyMCwxMjAsMTIwLDEyNyw2OCwyMywxNiwyMSwxMDgsMTg5LAorICAgIDE4OSwxODksMTg5
LDE4OSwxODksMTg5LDE4MiwxNTQsMTMyLDE3NSwyMTAsMjM1LDIzNSwyMTIsMTg5LDE4OSwKKyAg
ICAxODksMTU3LDk1LDk1LDIzNSwyMjcsMTUyLDE1MCwxNTAsMTg2LDE4NiwxODYsMjM1LDEyMSwx
MjEsMTIxLAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxMTEsMTExLDExMSwyMzUs
MjEwLDE0MCwxMzQsMTM0LDEzNCwKKyAgICAyMDMsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMTAsMTg5LDE4OSwxOTEsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMjUsMTM3LDEzNCwxMzQsMTU3LDE3NCwyMSwxNiwxNiwK
KyAgICA2NCwxODcsMjE3LDE1MCwxNTAsMTUwLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjMzLDE2OCwx
NzQsMTU2LDEzNiwKKyAgICAxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTM4LDE2NSwyMTIs
MTYwLDIxLDE2LDE2LDE2LDY1LAorICAgIDE4NCwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODks
MTg4LDE3MywxNjAsMTQ2LDEzNCwxNDcsMTkzLDE4OSwKKyAgICAxODksMTg5LDk1LDk1LDIzNSwy
MzUsMTkyLDE1MCwxNTAsMTg2LDE4NiwxODYsMjM1LDEyMSwxMjEsMTIxLAorICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwxMjMsMTExLDExNSwyMzUsMjM1LDIyOSwxNjksMTM0LDEzNCwK
KyAgICAxNTMsMjMyLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwxOTEsMTg5LDE4OSwyMTMsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMTk0LDEzNCwxMzQsMTM0LDE0NywxMjMsMTYsMTYsCisgICAgMTYsNjQsMTg2LDE4Miwx
NjMsMTUwLDIzNSwyMzUsMjM1LDIzNSwyMzUsMTc4LDEzNCwxMjAsMTIwLDEyMCwKKyAgICAxMjAs
MTIwLDEyMCwxMjAsMTI0LDE1NCwxNzgsMTg5LDE4OSwyMzUsMjM1LDE2Myw1MywxNiwxNiwxNiwK
KyAgICA3MCwxODQsMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4Miwx
NTQsMTM0LDE4NCwKKyAgICAxODksMTg5LDE0Miw5NiwyMzUsMjM1LDIzMiwxNjYsMTUwLDE4Niwx
ODYsMTg2LDIzNSwxMjEsMTIxLDEyMSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjAwLDE0MiwxODgsMjM1LDIzNSwyMzUsMjI1LDEzNywxMzQsCisgICAgMTM0LDE2MywyMzIsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIz
NSwyMzUsMjM1LDIzNSwyMzUsMTg5LDE4OSwxODksMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxODQsMTM0LDEz
NCwxMzQsMTM0LDg5LDE2LAorICAgIDE2LDE2LDEzMywxODYsMTg2LDE3OCwyMjcsMjM1LDIzNSwx
OTksMTM5LDEyMCwxMjAsMTIwLDEyMCwxMjAsCisgICAgMTIwLDEyMywxMjcsMTcwLDIzNSwyMjcs
MTg5LDE4OSwxODksMjM1LDIzNSwyMTUsMTg2LDk2LDE2LDE2LAorICAgIDE2LDY5LDE4OSwxODks
MTkxLDEyOCwxNTAsMTc5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4MiwxODEsCisgICAgMTg5
LDE4OSwxNzksMTIzLDIzMiwyMzUsMjM1LDIxOSwxNTAsMTg2LDE4NiwxODYsMjM1LDEyMSwxMjEs
MTIxLAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMTk0LDEzNCwKKyAgICAxMzQsMTM0LDE2OSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwx
ODksMTg5LDE4OSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxOTQsMTQwLDEzNCwxMzQsMTM0LDkwLAor
ICAgIDE2LDE2LDQ5LDE4MSwxODYsMTg2LDE4OCwxODMsMTQyLDEyMCwxMjAsMTIwLDEyMCwxMjIs
MTI0LDEyOCwKKyAgICAxMzMsMTM0LDE4NCwyMzUsMjMzLDIwMSwxODksMTg5LDIwNCwyMzUsMjM1
LDIzNSwxOTEsMTg2LDEwMSwxNiwKKyAgICAxNiwxNiwxMzksMTg5LDE4OSwxNzIsMTEzLDExMSwy
MjksMjE3LDIwNywxOTIsMTg5LDE4OSwxODksMTg5LAorICAgIDE4OSwxODksMTg5LDE1MSwxMzQs
MTY5LDIzMiwyMzUsMTUwLDE4NiwxODYsMTg2LDIzNSwxMjEsMTIxLDEyMSwKKyAgICAyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxODQs
CisgICAgMTM0LDEzNCwxMzQsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMTg5LDE4OSwxODksMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIyOSwxNDQsMTM0LDEzNCwxMjMsCisgICAgMjAsMTYsMTYsNTks
MTY4LDE1MCwxMjksMTIwLDEyMCwxMjAsMTIwLDEyMiwxNDgsMTMzLDEzNCwxMzQsCisgICAgMTM0
LDE4NCwyMzUsMjM1LDIxMCwxODksMTg5LDE4OSwyMjcsMjM1LDIzNSwyMzUsMjE1LDE4NiwxODYs
ODYsCisgICAgMTYsMTYsMzYsMTI1LDE4OSwxODksMTY3LDExMywyMzUsMjM1LDIzNSwyMzIsMjEy
LDE5MiwxODksMTg5LAorICAgIDE4OSwxODksMTg5LDE4NCwxNjYsMTQ4LDE2MiwxODEsMTUwLDE4
NiwxODYsMTg2LDIzNSwxMjEsMTIxLDEyMSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMTM0LDEzNCwxMzQs
MTk3LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMTg5LDE4OSwxODksMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMDMsMTQwLDEzNCwxMzQsCisgICAgODYsMzUsNzUsMTA3LDEyMCwxMjAsMTIwLDEyMCwx
MjAsMTIyLDE1MCwxODMsMTQ4LDEzNCwxMzQsMTM3LAorICAgIDE4NywyMzUsMjM1LDIzNSwxOTEs
MTg5LDE4OSwyMTIsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTEsMTg2LDE3MCwKKyAgICAyMSwxNiwx
NiwxNiw2NSwxODksMTg5LDE2NywyMzMsMjM1LDIzNSwyMzUsMjM1LDIzMiwyMTAsMTg0LAorICAg
IDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4MiwxNTYsMTQ4LDE4NiwxODYsMTg2LDIzNSwxMjEs
MTIxLDEyMSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMTQ0LDEzNCwxMzQsMTM0LDE2MywyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwy
MjcsMTg5LDE4OSwxODksMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjI5LDE3OSwx
MzMsCisgICAgMTI0LDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyNywxNTAsMTgzLDE4OSwxNjgs
MTM0LDEzNCwxMzEsMjI1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwxODksMTg5LDE4OSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjE3LDE5MiwKKyAgICAxNDMsMjgsMTYsMTYsMTYsMTM1LDE4
OSwxODksMjAyLDIzNSwyMzUsMjM1LDIzNSwxNTIsOTUsMTA1LAorICAgIDEzNywxNzYsMTg5LDE4
OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg0LDE2NSwxMjEsMTIxLDEyMSwKKyAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsCisgICAgMjAzLDE0MCwxMzQsMTM0LDEzNCwyMzIsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMDUsMTg5LDE4OSwyMDQs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE5MiwxMjIsCisgICAgMTIwLDEy
MCwxMjAsMTIwLDExMSw5MywxODIsMTg5LDE4OSwxODksMTY5LDEzNCwxMzQsMTM0LDE3NiwxODks
CisgICAgMjI3LDIzNSwyMzUsMjM1LDE4OSwxODksMTg5LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMDksODQsMTYsMTYsNDEsMTg5LDE4OSwxODksMTY3LDE1
MCwxNTAsMTUwLDE1MCwxNTAsMTUwLAorICAgIDE1MCwxNTMsMTg5LDE4OSwxODksMTg2LDE4OSwx
ODksMTg5LDE4OSwxODksMTg5LDE3MywxMzEsMTIyLDEyNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1
LDIyOSwxNDQsMTM0LDEzNCwxNjksMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwxOTEsMTg5LDE4OSwyMjcsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIxMywxNzEsMTM1LDEyMCwxMjAsCisgICAgMTIwLDEyMCwxMDYsNDIsMTYsMTYs
NzYsMTg5LDE4OSwxNzUsMTM0LDEzNCwxMzQsMTYwLDE4NiwxODYsCisgICAgMTg2LDIxMiwyMzUs
MjM1LDE4OSwxODksMTg5LDE4NywxNjAsMTUwLDE1MCwxNTAsMTUwLDE1MCwxNTAsMTUwLAorICAg
IDE1MCwxNTAsMTM3LDIwLDE2LDE2LDg4LDE4OSwxODksMTg2LDE1MywxNTAsMTUwLDE1MCwxNTAs
MTUwLAorICAgIDE1MCwxNTAsMTg5LDE4OSwxODksMTI2LDE1NywxODUsMTg5LDE4OSwxODksMTg5
LDE4OSwxODIsMTU1LDE5MSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwxOTQsMTM0LDEzNCwx
MzQsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUs
MjM1LDIzNSwxODksMTg5LDE4OSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
KyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzEsMTU2LDEyMCwxMjAs
MTIwLDEyMCwxMjAsCisgICAgMTM5LDIwMiwxMzcsNzUsMTYsMTYsMTYsMTg0LDE4OSwxMzQsMTM0
LDEzNCwxNjMsMTg2LDE4NiwxODYsCisgICAgMTg2LDE4NiwxOTQsMjE3LDE4OSwxODksMTg5LDE1
MCwxNTAsMTUwLDE1MCwxNTAsMTUwLDE1MCwxNTAsMTUwLAorICAgIDE1MCwxNTAsMTUwLDk1LDE2
LDE2LDE5LDE1MSwxODksMTg5LDE3NSwxNDksMTMyLDEyMSwxMjEsMTIxLAorICAgIDEyMSwxMjEs
MTg5LDE4OSwxODksMTYyLDE4NiwxODYsMTg2LDE4MiwxNjQsMTg5LDE4OSwxODksMTg5LDE4NSwK
KyAgICAyMjUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMTM0LDEzNCwxMzQsMjMyLDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwxODksMTg5LDE4
OSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzMSwxNTMsMTIwLDEyMCwxMjAsMTIwLDEzMSwxNzQsCisgICAg
MjMxLDIzNSwyMDMsMTQ3LDI3LDE2LDE2LDY1LDE4NCwxMzQsMTM0LDE4NCwyMzUsMTk5LDEzNywx
NzIsCisgICAgMTg2LDE4NiwxODYsMTg2LDE4OSwxODksMTg5LDE1MCwxNTAsMTUwLDE1MCwxNTAs
MTUwLDE1MCwxNTAsMTUwLAorICAgIDE1MCwxNjAsMTc0LDE5Miw1OCwxNiwxNiw0MiwxODksMTg5
LDE4OSwxMzIsMTIxLDEyMSwxMjEsMTIxLAorICAgIDEyMSwxMjEsMTg5LDE4OSwxODksMTg2LDE4
NiwxODYsMTg2LDE1MiwxMzYsMTc5LDE4OCwxODksMTg5LDE4OSwKKyAgICAxODgsMTc2LDIzMiwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAg
MjM1LDIzNSwyMzUsMTQ0LDEzNCwxMzQsMTY5LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwxODksMTg5LDE4OSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzEsMTY0
LDEyMCwxMjAsMTIwLDEyMCwxNjQsMjA2LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDEy
NSwxNiwxNiwxNiw2NSwxMzQsMTYwLDIzNSwyMzUsMjM1LDE5OSwxMjksCisgICAgMTUyLDE4Miwx
ODYsMTg2LDE4OSwxODksMTg5LDE4MiwyMTQsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwyMzUsMjM1LDIzNSwxOTgsMTksMTYsMTYsOTksMTg5LDE4OSwxNzksMTM0LDEzNCwx
MzQsMTM0LAorICAgIDEzNCwxMzQsMTg5LDE4OSwxODksMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQs
MTM0LDEzNywxNjEsMTg4LDE4OSwKKyAgICAxODksMTg5LDE3MywxOTcsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMTk0LDEz
NCwxMzQsMTM0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwy
MzUsMjM1LDIzNSwxODksMTg5LDE4OSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjMxLDE2NCwxMjAsMTIwLDEyMCwxMjAsMTIwLDE3Nywy
MzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDE3NSw3NiwxNiwxNiwxNiw5Nywx
MzQsMTQ3LDE5NywyMzUsMjM1LDIyNSwKKyAgICAxNDksMTI3LDE1OCwxODYsMTg5LDE4OSwxODks
MTg4LDIxMiwyMjUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzIsCisgICAgMTcyLDEzNCwxMzQsMTM0
LDEzNCw3NSwxNiwxNiwyMCwxNjEsMTg5LDE4OSwxNDYsMTM0LDEzNCwxMzQsCisgICAgMTM0LDEz
NCwxODksMTg5LDE4OSwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxNDYsMTgy
LAorICAgIDE4OSwxODksMTg5LDE4NCwxNzgsMjIyLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMTM0LDEzNCwxMzQsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDE4OSwxODks
MTg5LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1
LDE5OSwxNDIsMTIwLDEyMCwxMjAsMTIwLDEzNSwxODgsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAg
ICAyMzUsMjM1LDIzNSwyMTYsMTM0LDE1NCw4NywxNiwxNiwzOCwxMzAsMTM0LDEzNCwxNjMsMjI5
LDE3NCwKKyAgICAxNTAsMTQ2LDEyOCwxNTQsMTg5LDE4OSwxODksMTg2LDE4NiwxODYsMjA1LDIz
NSwyMzUsMjMyLDE3MiwxMzQsCisgICAgMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzAsMzgsMTYsMTYs
NDksMTg0LDE4OSwxNjMsMTM0LDEzNCwxMzQsCisgICAgMTM0LDEzNCwxODksMTg5LDE4OSwxMzQs
MTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM3LAorICAgIDE3MiwxODksMTg5
LDE4OSwxODksMTg5LDE5MCwyMDgsMjI0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAg
ICAyMzUsMjM1LDIzNSwyMzUsMTM0LDEzNCwxMzQsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDE4OSwxODksMTg5LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzEsMTU2LDEyMCwxMjAsMTIwLDEyMCwx
MzUsMTg4LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDE3NSwxMzQs
MTM0LDE3MywxNzMsMjEsMTYsMTYsNDksMTM0LDEzNCwxMzQsMTM2LDE0MywKKyAgICAxNTAsMTUw
LDE4NCwxNzcsMTg5LDE4OSwxODksMTg2LDE4NiwxODYsMTg2LDE3MCwyMjksMTYzLDEzNCwxMzQs
CisgICAgMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzEsMTAwLDE5LDE2LDE2LDY1LDE4OSwxOTAsMTg2
LDE4NiwxODYsCisgICAgMTg2LDE3NSwxODksMTg5LDE4OSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjI5LDE4NCwxNDcsMTM0LAorICAgIDEzNCwxNTYsMTgyLDE4OSwxODksMTg5LDE4OSwx
ODksMTg5LDIwMiwyMzMsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUs
MTM0LDEzNCwxMzQsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1
LDIzNSwyMzUsMjM1LDE4OSwxODksMTg5LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LAorICAgIDIzMSwxNTMsMTIwLDEyMCwxMjAsMTIwLDExNSwxMTEsMTExLDExMSwxMTEsMTEx
LDExMSwxMTEsMTU0LDIzMSwKKyAgICAyMzUsMjE2LDEzNCwxMzQsMTM0LDE4OCwxODksMTE4LDE2
LDE2LDE2LDEwMiwxMzQsMTM0LDEzNCwxMzQsCisgICAgMTM2LDE3MCwyMzUsMjM1LDE4OSwxODks
MTg5LDE0NiwxODAsMTg2LDE4NSwxNTQsMTM0LDEzNCwxMzQsMTM0LAorICAgIDE0NywxOTQsMTk5
LDE0MiwxMTEsMTExLDExMSw4MywxNiwxNiwxNiwxMzUsMTg5LDE4OCwxODYsMTkyLAorICAgIDE3
Myw5NSwxODksMTg5LDE4OSwyMzEsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LAorICAgIDIyOSwxNzksMTM0LDE0NCwxNjUsMTgyLDE4OSwxODksMTg5LDE4OSwxNzMsMTY5
LDIzMiwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMTM0LDEzNCwxMzQsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDE4OSwx
ODksMTg5LDIzMywyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjMxLAorICAgIDE1MywxMjAs
MTIwLDEyMCwxMTcsMTEyLDExMSwxMTEsMTExLDExMSwxMTEsMTExLDExMSwxMTEsMTExLDExMSwK
KyAgICAxMTEsMTQwLDEzNCwxMzQsMTQ3LDE4OSwxODksMTg5LDcxLDE2LDE2LDQxLDEzOSwxMzQs
MTM0LDEzNCwKKyAgICAxMzQsMTM0LDEzNCwxNjksMTg5LDE4OSwxODksMTkyLDE1MiwxODIsMTU3
LDEzNCwxMzQsMTM0LDEzNCwxNDksCisgICAgMTIxLDEyMSwxMjEsMTE0LDExMSwxMTEsMTEzLDIz
NCw5MiwxNiwxNiw0OSwxODQsMTg5LDIwNywyMzUsCisgICAgMjM1LDE2NSwxODksMTg5LDE4OSwx
MzQsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUs
MTk3LDE0NywxMzQsMTM0LDE0NCwxNjksMTg5LDE4OSwxODksMTg5LDE4OSwxNzAsMTM1LDE0NywK
KyAgICAxOTcsMjM1LDIzNSwyMzUsMTM0LDEzNCwxMzQsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDE5NCwxODksMTg5LDIwMiwyMzMsMjM1
LDIzNSwyMzUsMjM1LDIzNSwxOTksMTQyLAorICAgIDEyMCwxMjAsMTIwLDExNSwxMTEsMTExLDEx
MSwxMTEsMTExLDExMSwxMTEsMTExLDExMSwxMTEsMTExLDExMSwKKyAgICAxMTUsMTM0LDEzNCwx
MzQsMTE1LDE4OSwxODksMTg5LDEwMiwxOSwxNiwxNiwxNiw1MSwxNDcsMTM4LAorICAgIDEzNCwx
MzQsMTM0LDEzNCwxODksMTg5LDE4OSwyMzUsMjM1LDE4NiwxMzQsMTM0LDEzNCwxNDAsMTY1LDE2
OCwKKyAgICAxMjEsMTIxLDExNCwxMTEsMTExLDExMSwxNzYsMjA4LDE3MCwyMSwxNiwxNiw2NSwx
ODQsMTk5LDIzNSwKKyAgICAyMzUsMjM1LDE4OSwxODksMTg5LDk1LDE2OSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxOTcs
MTQ3LDE2MSwxODksMTg5LDE4OSwxODksMTg5LDE4NCwxNjYsCisgICAgMTQ4LDE2MywyMzUsMjM1
LDEzNCwxMzQsMTM0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIz
NSwyMzUsMjM1LDIzNSwyMTYsMTg5LDE4OSwxODksMjAyLDIzMywyMzUsMjM1LDIzMSwxNTYsMTIw
LDEyMCwKKyAgICAxMjAsMTIwLDExNywxMTEsMTExLDE3NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMTg4LDEyNywxMjQsCisgICAgMTM0LDEzNCwxMzQsMTI3LDExMSwxODksMTg5LDE4OSwx
MTEsNzIsMTYsMTYsMTYsMTYsOTIsMTg1LAorICAgIDE4NCwxNDcsMTM0LDEzNCwxODksMTg5LDE4
OSwxNTYsMTc5LDEzNCwxMzQsMTM0LDEzNSwxODYsMTg2LDE4NiwKKyAgICAxNDYsMTE1LDExMSwx
MTEsMTExLDE3MywyMTIsMTg2LDE4NiwxMTcsMTYsMTYsMTYsNjUsMTg0LDIyNywKKyAgICAyMzUs
MjM1LDE4OSwxODksMTg5LDk1LDk5LDIxMywyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjI5LDE4MiwxODIsMTg5LDE4
OSwxODksMTg5LDE4OSwKKyAgICAxODksMTgyLDE1NCwxMzQsMTM0LDEzNCwxMzQsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTIs
MTg5LDE4OSwxODksMjAyLDIzMywyMzEsMTUzLDEyMCwxMjAsMTIwLAorICAgIDEyNCwxNTYsMTEx
LDExMSwxNDIsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjE2LDEzNCwKKyAg
ICAxMzQsMTM0LDEzNCwxMTUsMTExLDE4OSwxODksMTg5LDExMSwxMTEsNzUsMjgsMTYsMTYsMzQs
MTA4LAorICAgIDExMSwxMTEsMTIyLDEzNCwxODksMTg5LDE4OSwxMzQsMTM0LDEzNCwxMzQsMTMz
LDEyOSwxODAsMTg2LDE4NiwKKyAgICAxODYsMTY1LDExMSwxMTEsMTczLDIxMiwxODYsMTg2LDE4
NiwxODgsMTI1LDE2LDE2LDE2LDY1LDIwOCwKKyAgICAyMzUsMjM1LDE4OSwxODksMTg5LDk1LDk1
LDEzMCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxOTcsMTQ3LDE1NiwxODIsMTg5LDE4OSwKKyAgICAx
ODksMTg5LDE4OSwxNzMsMTM0LDEzNCwxMzcsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjEyLDE4OSwxODksMTg5LDIwMiwx
NzAsMTIwLDEyMCwxMjAsMTY3LAorICAgIDIyNCwxNDYsMTExLDExMSwxODQsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTY2LDEzNCwKKyAgICAxMzQsMTQ3LDE4NywyMzUsMjM1
LDE4OSwxODksMTg5LDE1MCwxNTAsMTUwLDE0OCwyMSwxNiwxNiw0MywKKyAgICAxMDgsMTExLDEx
MSwxMjAsMTg5LDE4OSwxODksMTM0LDEzNCwxMzQsMTM0LDEyMiwxMTYsMTQwLDE4MywxODYsCisg
ICAgMTg2LDE4NiwxNDAsMTM3LDIzNCwxODgsMTg2LDE4NiwxODgsMjE3LDIzNSwxMjUsMTYsMTYs
MTYsNjksCisgICAgMjM1LDIzNSwxODksMTg5LDE4OSw5NSw5NSw5NSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwxOTcsMTU1LDE2NSwKKyAgICAxODYsMTg5LDE4OSwxODksMTM0LDEz
NCwxMzcsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIxMiwxODksMTg5LDE4NywxMjMsMTIwLDEyMCwxNzcsMjM1LAor
ICAgIDIzNSwxMTUsMTExLDExMSwyMjMsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MTYsMTM0LDEzNCwKKyAgICAxMzQsMjE2LDIzNSwyMzUsMjI3LDE4OSwxODksMTg5LDE5MiwxNTAs
MTUwLDE1MCwxMDIsMTYsMTYsMTYsCisgICAgNDMsMTA4LDExMSwxMTEsMTgyLDE4OSwxODksMTUx
LDEzNCwxMzQsMTM0LDEyOCwxMTIsMTExLDEyNiwxODAsCisgICAgMTg2LDE4NiwxODYsMTY4LDE3
NSwxODYsMTg2LDE4OCwyMTcsMjM1LDIzNSwyMzUsMTIxLDE2LDE2LDE2LAorICAgIDEzMiwyMzIs
MTg5LDE4OSwxODksOTUsOTUsOTUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCisgICAgMjMyLDE5NCwxODksMTg4LDEzNCwxNDcsMTk3LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjA5LDE0NiwxMjAsMTIwLDEyMCwxMjQsMjM1LDIzNSwKKyAgICAyMzUsMTExLDExMSwxMTEs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxODcsMTM0LDEzNCwxMzQsCisgICAgMTY2
LDIzNSwyMzUsMjM1LDIwNSwxODksMTg5LDIwNCwyMzUsMTkyLDE1MCwxNTAsMTUwLDgyLDE2LDE2
LAorICAgIDE2LDc4LDIyOCwyMzUsMTkyLDE4OSwxODksMTc5LDEzNSwxMzQsMTM0LDEzNCwxMzEs
MTIwLDExMSwxMzUsCisgICAgMTgyLDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDIxMiwyMzUsMjM1
LDIzNSwyMzUsMjM1LDEwMCwxNiwxNiwKKyAgICAyMiwxODYsMTg5LDE4OSwyMDEsOTUsOTUsOTUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTk5LDE0MiwxMjAsCisgICAgMTU2LDIy
MiwyMDEsMjE3LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTcxLDEyMCwxMjAsMTIwLDEy
MCwxNjMsMjMzLDIzNSwKKyAgICAyMzUsMTExLDExMSwxMTEsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwxMzcsMTM0LDEzNCwxMzQsCisgICAgMjE2LDIzNSwyMzUsMjM1LDE5MSwxODks
MTg5LDIyNywyMzUsMjM1LDIwMCwxNTUsMTUwLDE1MCw4MiwxNiwKKyAgICAxNiwxNiw5MiwyMzIs
MTQ2LDE4OCwxODksMTg5LDE3MywxNzIsMTM0LDEzNCwxMzQsMTM0LDEzMSwxMjAsCisgICAgMTE2
LDE3MCwxODYsMTg2LDE4NiwxODYsMTQ5LDEzNywyMzIsMjM1LDIzNSwyMzUsMjM1LDIwNiw0OSwx
NiwKKyAgICAxNiwzOSwxMjQsMTg5LDIxNiw5NSw5NSw5NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwx
ODEsMTIwLDEyMCwxMjAsMTIwLDEyMCwKKyAgICAxMjAsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzMSwxMjQsMTIwLDEyMCwxMjksMTYxLDE4OSwyMDIsMjMzLAorICAgIDIz
NSwxMTEsMTExLDExMSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjMyLDEzNCwxMzQsMTM0
LDE4NywKKyAgICAyMzUsMjM1LDIzNSwyMzUsMTg5LDE4OSwxODksMjM1LDIzNSwyMzUsMjM1LDIz
MCwxOTIsMTU1LDE1MCw4MiwKKyAgICAxNiwxNiwxNiwxNjcsMTMzLDE1NiwxODksMTg5LDE4OSwy
MDIsMTkxLDEzNCwxMzQsMTM0LDEzNCwxMzQsCisgICAgMTM3LDE2NiwxODYsMTg2LDE4NiwxODYs
MTM1LDExMSwxMTgsMTg4LDIzNSwyMzUsMjM1LDIzMywxNjMsMjEsCisgICAgMTYsMTYsMTYsNjUs
MjI0LDk1LDk1LDk1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE4MSwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTI0
LAorICAgIDE5MiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTcxLDEyMCwx
MjAsMTI0LDIxMiwxODksMTg5LDE4OSwxODksCisgICAgMTg5LDE3MiwxMjMsMTExLDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzMiwxNjMsMTM0LDEzNCwxMzcsMjM1LAorICAgIDIzNSwyMzUsMjM1
LDIzNSwxODksMTg5LDE4OSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzAsMTg3LDE1MCwKKyAg
ICAyOSwxNiwxNiw0OCwxMzAsMTM0LDE2MSwxODksMTg5LDE4OSwxNjYsMTEyLDEyMiwxMzIsMTM0
LDEzNCwKKyAgICAxMzQsMTM0LDE0OSwxODUsMTg2LDE4NiwxNzMsMTEzLDExMSwxMTEsMTIzLDE2
MiwyMDQsMjM1LDIyNywxMzAsCisgICAgMjcsMTYsMTYsMTYsNzgsOTIsOTUsOTUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDE5OSwxNDIsMTIwLDEyMCwxMjAs
MTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTM1LDE3MSwyMjQsCisgICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxMjQsMTIwLDEyMCwxODEsMjM1LDIxMiwxODksMTg5
LDE4OSwKKyAgICAxODksMTg5LDE4NywxNDgsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTc5LDEz
NCwxMzQsMTM0LDExMyw5NSwKKyAgICA5NSw5NSw5NSw5NSwxODksMTg5LDE4OSwxMTMsMTgyLDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE3NiwKKyAgICA5NSwxNiwxNiwxNiw1NywxMzQsMTM3LDIx
MSwxODksMTg5LDE4NywxMjMsMTExLDE2NCwxNzcsMTM3LAorICAgIDEzNCwxMzQsMTM0LDE1Nywx
ODcsMTg2LDE4NiwxNjUsMTEzLDExMSwxMTEsMTExLDExMSwxMTEsMTM4LDE3OCwKKyAgICAxNzgs
OTIsMTYsMTYsMTYsMzgsOTUsOTUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTMsMTcxLDEzNSwKKyAg
ICAxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEzNSwxOTIsMjM1
LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzMSwx
MjAsMTIwLDEyMCwyMzUsMjM1LDIzNSwyMTcsMTk1LDE4OSwKKyAgICAxODksMTg5LDE4OSwxODks
MTg5LDE4OSwyMDgsMjM1LDIzNSwyMzUsMTM3LDEzNCwxMzQsMTE2LDk1LDk1LAorICAgIDk1LDk1
LDk1LDk1LDE4OSwxODksMTg5LDk1LDk1LDExMywxODIsMjM1LDIzNSwyMzUsMjM1LDIzMCwKKyAg
ICAxNjAsNzUsMTYsMTYsMTYsMTM2LDE5NywyMTQsMTc4LDE4OSwxODksMTcyLDE3MywyMDgsMTg2
LDE4MywKKyAgICAxNTcsMTM0LDEzNCwxMzQsMTM0LDEzNCwxNDksMTg2LDE2NywxMTQsMTExLDEx
MSwxMTEsMTExLDExMSwxMzEsCisgICAgMTg5LDE4NywxMTQsMTIwLDEyMCwxMjAsMTIwLDEyMCwx
MjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLAorICAgIDEyMCwxMjAsMTIwLDEyMCwxMjAs
MTIwLDEyMCwxMjAsMTM1LDE5MiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
CisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTY0LDEyMCwxMjAsMTI0LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAorICAgIDIyOCwxNzIsMTg5LDE4OSwxODksMTg5LDE4OSwyMTcsMjM1LDIx
NiwxMzQsMTM0LDEzNCw5NSw5NSw5NSwKKyAgICA5NSw5NSw5NSw5NSwxODksMTg5LDE4OSw5NSw5
NSw5NSw5NSwxMTMsMTgyLDIzNSwyMzUsMjM1LAorICAgIDIxNiwxMjksMjcsMTYsMTYsNjAsMTg1
LDExOSwxMjUsMTg3LDE4OSwxODksMTk0LDE4NiwxODYsMTg2LAorICAgIDE4OCwxNzUsMTM0LDEz
NCwxMzQsMTM0LDEzNCwxNzAsMTg2LDE3OCwxNjUsMTY2LDEzMSwxMTEsMTExLDEyMiwKKyAgICAx
MjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEy
MCwxMjAsCisgICAgMTIwLDEyMCwxMzUsMTcxLDIyNCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1
LDIxMywxMjAsMTIwLDEyMCwxODEsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDEx
MSwxNDgsMTc5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODQsMTc5LDExOSw5NSw5NSwK
KyAgICAyMzUsMjM1LDIzNSwyMzUsMTg5LDE4OSwxODksMTY1LDEwMyw5NSw5NSw5NSw5NSwxMjYs
MjMxLDIzNSwKKyAgICAyMTYsMTM0LDg2LDE2LDE2LDE2LDQzLDExMSwxMTEsMTQ5LDE4OSwxODks
MTg5LDE4OCwxODYsMTg4LAorICAgIDIzMSwyMzUsMTk3LDE0NywxMzQsMTM0LDEzNCwxMzksMTY2
LDE4NiwxNjYsMTM1LDEyMCwxMjAsMTIwLDEyMCwKKyAgICAxMjAsMTIwLDEyMCwxMjAsMTIwLDEy
MCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTM1LDE2NywyMDYsCisgICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDE2MCwxMjAsMTIwLDE1NiwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDExMSwxMTEsMTExLDIyMCwxOTIsMTg5
LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxNzgsMTMwLAorICAgIDIzNSwyMzUsMjM1LDIz
NSwxODksMTg5LDE4OSwyMzUsMjI2LDE2NSwxMDMsOTUsOTUsOTUsMTQ4LDE4NywKKyAgICAxMzQs
MTM0LDEzNCw3NCwxNiwxNiwxNiw4MSwxMjAsMTk5LDIxMiwxODksMTg5LDE4OSwxOTAsMjE2LAor
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMjUsMTM3LDEzNCwxMzQsMTMwLDEyNiwxMjAsMTIwLDEyMCwx
MjAsMTIwLDEyMCwKKyAgICAxMjAsMTIwLDEyOSwxNDcsOTMsMTksMTYsMTYsMTYsNDMsMTE5LDE2
MiwyMDQsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1
LDIzNSwyMzUsMjM1LDEyNCwxMjAsMTIwLDIxMywyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
CisgICAgMjM1LDExMSwxMTEsMTExLDIzNSwyMzIsMjEyLDE5NCwxODksMTg5LDE4OSwxODksMTg5
LDE4OSwxODksMTg5LAorICAgIDE4OSwxODksMTk1LDIxNywxODksMTg5LDE4OSwyMzUsMjM1LDIz
NSwyMjYsMTU3LDk1LDk1LDExOCwxMzQsCisgICAgMTM0LDEzNCwxMzQsMTE3LDU1LDE2LDE2LDE2
LDcwLDE1MCwxOTAsMTg4LDE4OSwxODksMTg5LDE5NSwKKyAgICAyMTcsMjM1LDIzNSwyMzUsMjM1
LDIwNiwxMzQsMTIzLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjksCisgICAgMTYxLDE4
OSwxODksMTgzLDEwMyw3NywyMiwxNiwxNiwxNiwzNyw5NiwxMTEsMTQ2LDIzMSwyMzUsCisgICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDEyMCwxMjAsMTIw
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDExMSwxMTEsMTExLDIz
NSwyMzUsMjM1LDE5NywxMzQsMTM0LDE2MCwyMjcsMjEwLDE4NywxODksMTg5LAorICAgIDE4OSwx
ODksMTg5LDE4OSwxODksMTg5LDE4OSwyMTcsMjM1LDIzNSwyMzUsMjM1LDEzOSwxMDIsMTM0LDEz
NCwKKyAgICAxMzQsMTMzLDEyMiwxMTEsMTAyLDE5LDE2LDE2LDE2LDE1MCwxNTEsMTg2LDE4OCwx
ODksMTg5LDE4OSwKKyAgICAxODksMTk1LDE4NywxNDIsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAs
MTIxLDEyOSwxNTIsMTg2LDE4OSwxODksCisgICAgMTg5LDE4OSwxODksMTg5LDk1LDE2NSwyMDYs
OTMsMTYsMTYsMTYsMTksNjYsMTExLDEyMywxNjIsCisgICAgMjA0LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
KyAgICAyMzUsMjM1LDIzNSwyMzUsMjMxLDEyMCwxMjAsMTIwLDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCisgICAgMjM1LDExMSwxMTEsMTExLDIzNSwyMzUsMjMyLDE1NiwxMzQsMTM0
LDE5NCwyMzUsMjM1LDIyMCwxNDQsMTc4LAorICAgIDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4
OSwxODksMTk0LDIwOCwyMjQsMjM1LDIyMywxMjksMTM0LDEzNCwKKyAgICAxMzIsMTIwLDExMSwx
MTEsMTEzLDEzOCwxNiwxNiwxNiwxNDUsMTcxLDE4NiwxODYsMTg1LDE0NywxMjAsCisgICAgMTIw
LDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjIsMTI2LDEzMywxMzQsMTUxLDE4OCwxODks
MTg5LAorICAgIDE4OSwxODksMTg5LDE4OSwxMzksMjM1LDIzNSwyMzUsMTM5LDIzLDE2LDE2LDE2
LDU4LDExMSwxMTEsCisgICAgMTExLDE0NiwyMzEsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwy
MzUsMTcxLDEyMCwxMjAsMTI0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAg
MjM1LDExMSwxMTEsMTExLDIzMSwyMzUsMTc5LDEzNCwxMzQsMTM0LDIyNSwyMzUsMjM1LDIzNSwx
NTcsOTUsCisgICAgOTUsMTI2LDIxMCwxOTUsMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4
OSwxODksMTg5LDE4OSwxODksCisgICAgMTg5LDE4OSwxODksMTg5LDE4OSwxODksMzIsMTYsMTYs
OTEsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsCisgICAgMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAs
MTI5LDE1MCwxODMsMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg3LAorICAgIDEzMywxODksMTg5
LDE4OSwyMDgsMjM1LDIzNSwyMzUsMjM1LDIwMSw2NCwxNiwxNiwxNiw1NSwxMTEsCisgICAgMTEx
LDExMSwxNDYsMjMxLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMTI0LDEyMCwxMjAsMTgxLDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDEyMywxMTEsMTExLDE1NCwy
MzUsMTM3LDEzNCwxMzQsMTg3LDIzNSwyMzUsMjM1LDIzNSwyMjIsOTksCisgICAgOTUsOTUsMTM0
LDIzMSwyMzUsMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwKKyAg
ICAxODksMTg5LDE4OSwxODksMTg5LDE4OSwxMTgsODEsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAs
MTIwLDEyMCwKKyAgICAxMjAsMTIwLDEyOSwxNTAsMTgzLDE4OSwxODksMTg5LDE4OSwxODksMTg5
LDE4OSwxODksMTg5LDE4OCwxNjIsCisgICAgMTA2LDE4OSwxODksMTg5LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwzNywxNiwxNiwxNiwxNiwKKyAgICA0OSwxMDgsMTExLDEyMywxNjIsMjA0
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisg
ICAgMjM1LDIzNSwyMzUsMjM1LDEyMCwxMjAsMTIwLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAorICAgIDIzNSwxODQsMTExLDExMSwxMTEsMjI5LDEzNCwxMzQsMTM0LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDE3OCwKKyAgICA5NSw5NSw5NSwxMzQsMjM1LDE5NCwxODksMTg5
LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksCisgICAgMTg5LDE4OSwxODksMTc2LDE1
MCwxMjksMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjksMTYxLAorICAgIDE4OSwx
ODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OCwxNjUsMTM5LDEz
NCwKKyAgICAxMzQsMTg5LDE4OSwxODksMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE3Mywz
MCwxNiwxNiwxNiwKKyAgICAxNiwyOCw3NSwxMTEsMTExLDExMSwxMTEsMTU0LDIzMSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwx
MjAsMTIwLDEyMCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUs
MjM1LDExMSwxMTEsMTExLDE5NCwxMzQsMTM0LDE2MCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCisgICAgMTY1LDk1LDk1LDk1LDE5MSwyMjIsMTk0LDE4OSwxODksMTg5LDE4OSwxODgsMTcz
LDE1OSwxMzUsMTE4LAorICAgIDEwMiwxMDksMTIxLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEy
MCwxMDcsNTUsMTY2LDIyNywxNzksMTUwLAorICAgIDE1MCwxNTAsMTUwLDE2NywyMDMsMTg5LDE4
OSwxODksMTg5LDE4OSwxODksMTg0LDE2NCwxNzAsMTM3LDEzNCwKKyAgICAxMzQsMTg5LDE4OSwx
ODksMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxNzMsNDQsMTYsMTYsCisgICAgMTYs
MTYsMTYsMTYsMTYsNDksMTA4LDExMSwxNDYsMjMxLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMTIwLDEyMCwxMjAsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwxMjMsMTExLDExMiwxMzYsMTM0
LDEzNCwxOTQsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwxNTIsOTUsOTUs
OTUsOTYsMTMyLDEzOSwxODgsMTg5LDE4OSwxODksMTc4LDE2MSwxNDIsMTI1LAorICAgIDEyMCwx
MjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjgsMTU5LDg2LDE2LDE2LDU3LDIzNSwyMzUsMjE0LAor
ICAgIDE2MywxNTAsMTUwLDE1MCwxNzQsMjE2LDE5NSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwx
ODksMTg4LDE2NSwKKyAgICAxMzQsMTg5LDE4OSwxODksMTM0LDE1OCwyMTAsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwxNDYsCisgICAgMzAsMTYsMTYsMTYsMTYsMTYsMjgsNzUsMTEx
LDEyNywxODgsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwy
MzUsMjM1LDEyMCwxMjAsMTIwLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwyMzUsMTg0LDExMSwxMjQsMTM0LDEzNCwxMzQsMjI1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKKyAgICAyMzUsMjIyLDk5LDExMywxMzQsMTM0LDEzNCwxMzQsMTUxLDE3MCwx
NTAsMTI5LDEyMCwxMjAsMTIwLDEyMCwKKyAgICAxMjAsMTIwLDEyMCwxMjgsMTY3LDIwMCwxNzks
MTg2LDE4NiwxNjksMjEsMTYsMTYsMTMyLDIzNSwyMzUsCisgICAgMjM1LDE5MiwxNTAsMTUwLDE1
MCwxNzUsMTczLDE0NiwxMzUsMTU0LDE3OCwxODksMTg5LDE4OSwxODksMTg5LAorICAgIDE4NCwx
ODksMTg5LDE4OSwxMzQsMTM0LDEzNCwxMzgsMjE2LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKKyAgICAyMjEsMTI1LDQ0LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDU1LDEyMywxNjIsMjA0LDIz
NSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwxMjAsMTIwLDEyMCwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwxNzMsMTMz
LDEzNCwxMzQsMTQ0LDIzMSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIz
NSwxNjQsMTMxLDEyNiwxMjIsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIw
LAorICAgIDEyNywxNDYsMTYyLDIwOCwyMjMsMjAwLDE4NiwxODYsMTg2LDE1Miw2OCwxNiwxNiwy
MywyMDEsMjM1LAorICAgIDIzNSwyMzUsMTg3LDE1MCwxNTAsMTUwLDExOSw5NSw5NSw5NSw5NSwx
MzEsMTk2LDE5MiwxODksMTg5LAorICAgIDE4OSwxODksMTg5LDE4NywxMzQsMTM0LDEzNCwxMzQs
MTMzLDE1MCwyMzIsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMTQ2
LDMwLDE2LDE2LDE2LDE2LDE2LDE2LDQ5LDEwOCwxMjcsMTg4LAorICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAy
MzUsMjM1LDIzNSwyMzUsMTIwLDEyMCwxMjAsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjE2LDEzNCwxMzQsMTM0LDExMSwxNTQsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwxOTcsMTI0LDEyMCwxMjAsMTIwLDEyMCwxMjAs
MTIwLDEyMCwxMjAsMTIwLDExOCwxMTIsMTE0LDE2NCwKKyAgICAxODksMTg5LDE4OSwxODksMTg5
LDE4OSwxODgsMTg3LDE1OCwxMjEsMTE4LDM2LDE2LDE2LDQ0LDE1MywKKyAgICAyMzUsMTkxLDEy
MSwxMzIsMTUwLDE1MCwxNTAsMTEwLDk1LDEwOCwxNjEsMjMxLDIzNSwyMzIsMjEwLDE4OSwKKyAg
ICAxODksMTg5LDE4OSwxOTQsMTcwLDEzNSwxMzMsMTM0LDEzNCwxMzQsMTQ0LDIzMiwyMzUsMjM1
LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMjEsMTI1LDQ0LDE2LDE2LDE2LDE2
LDE2LDQzLDEwOCwxMTEsCisgICAgMTQ2LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwxMjAsMTIw
LDEyMCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIz
NSwxNjksMTM0LDEzNCwxMjcsMTExLDExMSwxMTEsMTExLDExMSwxMTEsMTExLDExMiwxMTYsCisg
ICAgMTE5LDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTE3LDExMCwxMDEsOTUsOTUs
OTUsOTUsCisgICAgMTM5LDE3OCwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTcwLDE2MCwx
MjQsMjAsMTYsMTYsMTYsCisgICAgMzgsOTUsOTUsOTYsMTM5LDE1MCwxNTAsMTUwLDIwMSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMTcsCisgICAgMTkyLDE4OSwxODcsMTg2LDIwMCwyMzUsMTc5
LDEzNCwxMzQsMTM0LDEzNCwxNDYsMTk3LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMTczLDQ0LDE2LDE2LDE2LDE2LDE2LDQ5LAorICAgIDEwOCwxMTEs
MTYyLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
KyAgICAyMzUsMjM1LDIzNSwyMzUsMTIwLDEyMCwxMjAsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMTM3LDEzNCwxMzQsMTI1LDExMSwxMTEsMTEy
LDExNiwxMTksMTIwLDEyMCwxMjAsMTIwLAorICAgIDEyMCwxMjAsMTIwLDEyMSwxMjEsMTE0LDEx
MSwxNzMsMjM1LDIzMSwyMDAsMTY5LDE0MywxMjEsOTUsOTUsCisgICAgOTUsOTUsMTEzLDE0OCwx
ODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDEyOSwyNywxNiwxNiwKKyAgICAxNiwxNDIs
MTIxLDExNiwxNTYsMTU4LDE1MCwxNTAsMTYwLDIyNCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
KyAgICAyMzUsMjExLDE4NiwxODYsMTg2LDIyMCwyMzUsMjI5LDE1MiwxMzQsMTM0LDEzNCwxMzQs
MTYzLDIzMiwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwxMjUsMTYsMTYsMTYsMTYsCisgICAgMjgsNzUsMTE1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMTIw
LDEyMCwxMjAsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIz
NSwyMzUsMTM0LDEzNCwxMzQsMjAwLDEyNSwxMTksMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIw
LAorICAgIDEyMCwxMjEsMTI2LDEzMiwxMTEsMTI3LDE4NCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIwOCwKKyAgICA5NSw5NSw5NSwxMTMsMTg2LDE4NywxODgsMTcxLDE4OSwxODks
MTg5LDE4OSwxODksMTc4LDE2LDE2LAorICAgIDE2LDc2LDE4NCwxODksMTg5LDE5NCwxNzksMTY5
LDE2MiwxNjgsMjIyLDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMDYsMTg2LDE4
NiwxOTYsMjM1LDIzNSwyMzUsMTkwLDE0MCwxMzQsMTM0LDEzNCwxNjMsMjMyLAorICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE1Myw0NCwxNiwxNiwK
KyAgICAxNiwxNiw2NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDEyMCwxMjAsMTIwLDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDEzNCwxMzEsMTI2LDEzNSwx
MjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTM0LDEzNywKKyAgICAxMzAsMTM0LDE0NywxOTcs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgOTUs
OTUsOTUsMjM1LDE4NiwxODYsMTg2LDIzNSwyMzUsMjI0LDIxMywyMDQsMTgwLDE4OSwzMiwxNiwK
KyAgICAxNiwxNiw2NSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5
LDE4OSwxOTUsCisgICAgMjE3LDIzNSwyMzEsMTg4LDE4NiwxODYsMjIwLDIzNSwyMzUsMjM1LDIy
OSwxNzksMTM0LDEzNCwxMzQsMTYzLAorICAgIDIzMiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTQ2LDMwLAorICAgIDE2LDE2LDE2LDkyLDIyOCwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUs
MjM1LDIzNSwxMjAsMTIwLDEyMCwxNjcsMjM1LDIzNSwyMzUsMjM1LDE5OSwxNDIsMTIwLDEyMCwK
KyAgICAxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjQsMTY3LDIwNiwyMzUs
MjM1LDE3OSwxMzQsCisgICAgMTM0LDEzNCwyMTYsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDk1LDk1LDk1LDIzNSwxODYsMTg2LDE4Niwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIxMywxMjUsOTgsMzEsCisgICAgMTYsMTYsMTYsMTQxLDE4OSwx
ODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LAorICAgIDE4OSwxODks
MTg5LDE4OSwxODgsMTg2LDE4NiwyMDMsMjM0LDIzNSwyMzUsMjM1LDE4NCwxMzQsMTM0LDEzNCwK
KyAgICAxNDcsMTk3LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMjEsCisgICAgMzcsMTYsMTYsMTYsOTIsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMTMxLDEyMCwxMjAsMTIw
LDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsCisgICAgMTIwLDEyMCwxMjAsMTIwLDEy
MCwxMjAsMTIwLDEzMSwxNzEsMjI0LDIzNSwyMzUsMjM1LDIzNSwxMzcsMTM0LAorICAgIDEzNCwx
ODQsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKKyAgICA5NSw5NSw5NSwyMzUsMTg2LDE4NiwxODYsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MTkyLDEyNSwxMjEsCisgICAgNTksMTYsMTYsNTcsMjI4LDIyNywyMjAsMjEyLDE5OCwxODUsMTg5
LDE4OSwxODksMTg5LDE4OSwxODksCisgICAgMTg5LDE4OSwxODksMTg5LDE4OSwxODYsMTg2LDE4
NiwyMDAsMjM1LDIzNSwyMzUsMjM1LDE4NCwxMzQsMTM0LAorICAgIDEzNCwxMzQsMTU2LDIxOSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAxNzMs
NDQsMTYsMTYsMTYsMTYsMTA1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMDMsMTI4LDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwx
MjAsMTIwLDEyMCwKKyAgICAxMjAsMTIwLDEyMCwxMjAsMTIyLDEyNiwyMDYsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjMyLDEzNCwxMzQsCisgICAgMTM0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDk1LDk1LDk1LDIzNSwx
ODYsMTg2LDE4NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjEwLDEzNiwKKyAgICAxMTEs
MTksMTYsMTYsNzgsMjI4LDIzNSwyMzUsMjM1LDIzMCwxNzYsMTUwLDE1MCwxNTAsMTk1LDIxMiwK
KyAgICAxOTUsMTg5LDE4OSwxOTUsMjA4LDE5MiwxODYsMTg2LDE4NiwyMjAsMjM1LDIzNSwyMzUs
MjM1LDE5NCwxNDAsCisgICAgMTM0LDEzNCwxMzQsMTM3LDE4NywyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMzcsMTYsMTYsMTYsMTYsMTA1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMDMsMTM1LDEyMCwxMjAsMTIwLDEyMCwxMjAsMTM1LDE3MSwyMjQsMjM1LAorICAgIDIzNSwy
MzUsMjM1LDEzNCwxMzQsMTM0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxNzksMTM0LDEz
NCwKKyAgICAxMzcsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCisgICAgOTUsOTUsOTUsMjM1LDE4NiwxODYsMTg2LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjI4LAorICAgIDE1Nyw3OCwxNiwxNiwxNiw3OCwyMzUsMjM1
LDIzNSwyMzUsMjM1LDE5MCwxNTAsMTUwLDE1MiwyMjIsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjA2LDE4NiwxODYsMTk2LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjI5LAorICAgIDE4NCwx
MzcsMTM0LDEzNCwxMzQsMTYzLDIzMiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKKyAgICAyMzUsMjM1LDE3Myw0NCwxNiwxNiwxNiwxNiw3OCwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDEzNCwxMzQsMTM0LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzMiwxMzcsMTM0LDEzNCwKKyAgICAxODcsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgOTUs
OTUsOTUsMjM1LDE4NiwxODYsMTg2LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LAorICAgIDIzNSwxNzUsNjgsMTYsMTYsMTYsMTY2LDIzNSwyMzUsMjM1LDIzNSwyMzIsMTY2LDE1
MCwxNTAsMTY4LAorICAgIDIzMiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzMSwxODgsMTg2LDE4Niwy
MjAsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjE5LDE1NiwxMzQsMTM0LDEzNCwxNjMs
MjMyLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1
LDE3MywzMCwxNiwxNiwxNiwxNjYsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LAorICAgIDIzNSwyMzUsMjM1LDEzNCwxMzQsMTM0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE3
NSwxMzQsMTM0LDEzNywKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgOTUsOTUsOTUsMjM1LDE4NiwxODYsMTg2
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzIsMTQzLDU5
LDE2LDE2LDQ0LDIwMSwyMzUsMjM1LDIzNSwyMzUsMjE5LDE1MiwxNTAsMTUwLAorICAgIDE3NCwy
MzIsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMDgsMTg2LDE4NiwxODYsMjAwLDIzNSwyMzUsMjM1LDIz
NSwKKyAgICAyMzUsMjM1LDIzNSwxODIsMTM0LDEzNCwxMzQsMTYzLDIzMiwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwxNzMsNDQsMTYsMTYsMTYs
MTA1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDEz
NCwxMzQsMTM0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjI5LDEzNywxMzQsMTM0LDE4NywKKyAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsCisgICAgOTUsOTUsOTUsMjM1LDE4NiwxODYsMTg2LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjEzLDExNCwxOSwxNiwxNiw0NiwxNTMsMjM1
LDIzNSwyMzUsMjM1LDE5OCwxNTAsMTUwLAorICAgIDE1MCwxNzQsMjMyLDIzNSwyMzUsMjM1LDIz
NSwyMzEsMTg4LDE4NiwxODYsMTg2LDIyMCwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwy
MzUsMTg0LDEzNCwxMzQsMTM0LDE2MywyMzIsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjE1LDIzLDE2LDE2LDE2LDEwNSwyMzUsMjM1LDIzNSwy
MzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDEzNCwxMzQsMTM0LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMTk3LDEzNCwxMzQsMTYwLDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgOTUsOTUsOTUs
MjM1LDE4NiwxODYsMTg2LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAg
IDIzNSwyMzUsMjM1LDIwMyw4NywxNiwxNiwxNiw0NiwxOTksMjM1LDIzNSwyMzUsMjM1LDE5Miwx
NTAsCisgICAgMTUwLDE1MCwxNzQsMjMyLDIzNSwyMzUsMjM1LDIzNSwyMjAsMTkyLDE4NiwxODYs
MTg2LDIwMCwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMTg0LDEzNCwxMzQsMTM0
LDE2MywyMzIsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMTY2LDMwLDE2LDE2LDE2LDIyOCwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAg
MjM1LDIzNSwyMzUsMTM0LDEzNCwxMzQsMjM1LDIzNSwyMzUsMjM1LDIzMiwxNTYsMTM0LDEzNCwx
OTQsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIwOCwKKyAgICA5NSw5NSw5NSwyMzUsMTg2LDE4NiwxODYsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwx
MTUsMTYsMTYsMTYsOTYsMTkyLDIzNSwyMzUsMjM1LDIzNSwxOTIsCisgICAgMTUwLDE1MCwxNTAs
MTc0LDIzMiwyMzUsMjM1LDIzNSwyMzUsMjMxLDE4OCwxODYsMTg2LDE4NiwyMjAsMjM1LAorICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE4NCwxMzQsMTM0LDEzNCwxNjMsMjMyLDIzNSwyMzUs
MjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE3MywzMCwxNiwx
Niw5MiwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMTM0LDEzNCwx
MzQsMjMyLDIzNSwyMzUsMjM1LDE3MiwxMzQsMTM0LDEzNCwyMjUsMjM1LAorICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDEzOSwK
KyAgICA5NSw5NSwxMzksMjM1LDE5MSwxODYsMTg2LDIyMCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDEwMSwxNiwxNiwzNiwxMTgs
MTUzLDIzMiwyMzUsMjM1LDIzNSwKKyAgICAxOTIsMTUwLDE1MCwxNTAsMTc0LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjIwLDE5MiwxODYsMTg2LDE5NiwyMzQsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDE4NCwxMzQsMTM0LDEzNCwxNjMsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE0NiwxNiwxNiwyMywyMjgsMjM1LDIzNSwK
KyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMTQ0LDEzNCwxMzQsMTYzLDIzMiwyMzUsMjE2
LDEzNCwxMzQsMTM0LDE4NywyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjA4LDk1LAorICAgIDk1LDk1LDIwOCwyMzUs
MjA4LDE4NiwxODYsMTk2LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjE1LDIyLDE2LDE2LDQ2LDExOCwxNTMsMjMyLDIzNSwyMzUs
CisgICAgMjM1LDE5MiwxNTAsMTUwLDE1MCwyMDgsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzEsMTg4
LDE4NiwxODYsMjAwLAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTg0LDEz
NCwxMzQsMTM0LDE4NywyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMTUzLDcxLDE1MywyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAg
MjM1LDIzNSwyMzUsMTk0LDEzNCwxMzQsMTM0LDE2OSwyMzUsMTY5LDEzNCwxMzQsMTY2LDIzNSwy
MzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMTM5LDk1LAorICAgIDk1LDEzOSwyMzUsMjM1LDIzMSwxODYsMTg2LDE4Niwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwxNDYsMTYsMTYsMTYsNDYsMTE4LDE1MywyMzIsMjM1LAorICAgIDIzNSwyMzUsMTg0
LDE1MCwxNTAsMTY2LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIxNSwxODYsMTg2LDE4NiwKKyAg
ICAyMjAsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxODIsMTM0LDEzNCwxMzcsMjE5
LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUs
MTg0LDEzNCwxMzQsMTM0LDE3NSwxMzcsMTM0LDEzNCwyMTYsMjM1LDIzNSwyMzUsCisgICAgMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIwOCw5NSw5
NSwKKyAgICA5NSwyMDgsMjM1LDIzNSwyMzUsMTg2LDE4NiwxODYsMjM0LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDEyNSwx
NiwxNiwxNiwzOSwxMTgsMTIxLDE2OCwKKyAgICAyMzUsMjM1LDIyNywxNTIsMTUwLDE1MCwxOTUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjA2LDE4NiwxODYsCisgICAgMTg2LDIwMywyMzQsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjMyLDE1MywxMzQsMTM0LDE0NCwxNzUsMjEwLAorICAgIDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwxNDQsMTM0LDEzNCwx
MzQsMTM0LDEzNCwxMzQsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxMzksOTUsOTUsCisgICAgMTM5LDIzNSwy
MzUsMjM1LDIzNSwxOTEsMTg2LDE4NiwyMDMsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDEyNSwxNiwxNiwxNiw1Niwx
MjEsMTI1LAorICAgIDIzNSwyMzUsMjM1LDE5MiwxNTAsMTUwLDE1MiwyMjIsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzEsMTg4LDE4NiwKKyAgICAxODYsMTg2LDIwMywyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjE2LDEzNywxMzQsMTM0LDEzNCwxMzQsCisgICAgMTY2LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIwNiwxNDAsMTM0LDEzNCwxMzQsMTM0LDEzNywy
MzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjI2LDk5LDk1LDk1LAorICAgIDIwOCwyMzUsMjM1LDIzNSwyMzUsMjE1LDE4
NiwxODYsMTg2LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTI1LDE2LDE2LDE2LDk4LDE5MiwKKyAgICAyMzUs
MjM1LDIzNSwyMzIsMTY2LDE1MCwxNTAsMTY4LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIyMCwx
OTIsCisgICAgMTg2LDE4NiwxODYsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMDYs
MTQ3LDEzNCwxMzQsMTM0LAorICAgIDEzNCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjA2LDE0NywxMzQsMTM0LDE0NywxOTcsMjM1LDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE4Miw5
NSw5NSwxMzAsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTg2LDE4NiwxODYsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsODUsMTYsMTYsMzAsMjA4LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMTks
MTUyLDE1MCwxNTAsMjE2LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAxODYsMTg2
LDE4NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjE2LDE3OSwxNjAs
CisgICAgMTk3LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTMwLDk1LDk1LDE3OCwKKyAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxODYsMTg2LDE4NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MjEsNDQsMTYsMTYsNjQsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwxODQsMTUwLDE1MCwxOTAs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDE4NiwxODYsMTg2LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisg
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDE4Miw5NSw5NSw5NSwyMjIsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMTg2LDE4NiwxODYsMjM0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE4NywyMywxNiwxNiwK
KyAgICAxMzIsMjM1LDIzNSwyMzUsMjM1LDIxNCwxNTAsMTUwLDE1MCwxODQsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCisgICAgMTg2LDE4NiwxODYsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwx
NjksOTUsCisgICAgMTUyLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIyMiwx
MDMsOTUsOTUsMTUyLDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxOTEsMTg2LDE4
NiwyMDMsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDEyNSwxNiwxNiwKKyAgICAyMywyMDEsMjM1
LDIzNSwyMzUsMjM1LDE1OCwxNTAsMTUwLDE1MiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAg
ICAxODYsMTg2LDE4NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDk5LDk1LAorICAgIDk1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE0Myw5NSw5NSwxMTMsMjMxLDIzNSwK
KyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTUsMTg2LDE4NiwxODYsMjM0LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIyOCw1NywxNiwKKyAgICAxNiw2NCwyMjgsMjM1LDIzNSwyMzUsMjA4LDE2
MCwxNjAsMjAzLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDE4NiwxODYsMTg2LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsOTUsOTUsCisgICAgOTUsOTUsMTUyLDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDE5MSw5OSw5NSw5NSwyMDAsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMTkxLDE4NiwxODYsMjAzLDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxOTQs
MjMsCisgICAgMTYsMTYsNzgsMjI4LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAorICAgIDE4NiwxODYsMTg2LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MTA4LDk1LAorICAgIDk1LDk1LDk1LDk1LDk1LDk1LDk1LDk1LDk1LDk1LDk1LDk1LDk5LDIzNSwy
MzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTUsMTg2LDE4NiwxODYs
MjM0LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxMzksCisgICAgMTYsMTYsMTYsNzgsMjI4LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMTg2LDE4Niwx
ODYsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxOTYsMTEzLAorICAgIDk1LDk1LDk1LDk1LDk1
LDk1LDk1LDk1LDk1LDk1LDk1LDk5LDE2OSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDE5MSwxODYsMTg2LDIwMCwyMzQsMjM1LDIzNSwyMzUsCisgICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAorICAgIDEyNSwxNiwxNiwxNiw3OCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM0LAorICAgIDE4NiwxODYsMTg2LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKKyAgICAxOTYsMTEzLDk1LDk1LDk1LDk1LDk1LDk1LDk1LDExMywxNTcsMjIy
LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIx
NSwxODYsMTg2LDE4NiwyMDAsMjM0LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwxMjUs
MTYsMTYsMTYsMTg3LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM0LDIwMCwKKyAg
ICAxODYsMTg2LDE4OCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIxMSwxODYsMTg2
LDE4NiwyMDAsMjM0LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSw5OSwxNiwxNiwxMTks
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNCwyMDAsMTg2LAorICAgIDE4NiwxODYsMjEy
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIxMSwxODYsMTg2LDE4NiwxOTIs
MjE3LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDE4MCwxNiwxNiw0NCwyMjgsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjA4LDE4NiwxODYsCisgICAgMTg2LDIxMSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIxMSwxODYsMTg2LDE4NiwxODYsCisgICAgMjAw
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LAorICAgIDIzNSwyMzUsMjM1LDM3LDE2LDE2LDc4LDIyOCwyMzQsMjA1LDE4NiwxODYsMTg2
LDE4NiwxODYsMTg2LAorICAgIDIxMSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjE1LDE5MCwxODYsMTg2LAorICAgIDE4NiwyMjAsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUs
MjM1LDIzNCwxMjgsMTYsMTYsMTYsNjQsMTgxLDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4OCwK
KyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzIsMjAzLDE4NiwKKyAgICAxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2
LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsCisgICAgMTg2LDE4NiwxODYsMTg2LDEw
MSwxNiwxNiwxNiw2NCwxODEsMTg2LDE4NiwxODYsMTg2LDE5MiwyMTcsCisgICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
MSwxODgsCisgICAgMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4Niwx
ODYsMTg2LDE4NiwxODYsMTg2LAorICAgIDE4NiwxODYsMTg2LDE4NiwxODYsMTAxLDE2LDE2LDE2
LDY2LDIwOSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisg
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjIwLAorICAgIDE5
MiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2
LDE4NiwKKyAgICAxODYsMTg2LDE4NiwxOTIsMjE1LDIzNSwxMjUsMTYsMTYsMTYsNzgsMjI4LDIz
NSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDEyNSwxNiwxNiwxNiw3OCwyMjgsMjM1LDIzNSwyMzUs
CisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMTI1LDE2LDE2LDE2LDc4LDIyOCwyMzUsMjM1LAorICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
KyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwxMjUsMTYsMTYsMTYsNzgsMjI4LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDEyNSwx
NiwxNiwxNiw3OCwyMjgsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisg
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTI1LDE2LDE2LDE2LDc4
LAorICAgIDIyOCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxMjUsMTYsMTYsMTYsCisgICAgNzgsMjI4
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
CisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDEyNSwxNiwxNiwKKyAgICAxNiw3OCwyMjgsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
KyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMTI1LDE2LAorICAgIDE2LDE2LDE2LDE2LDEwNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisg
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDEyNSwKKyAgICAxNiwxNiwxNiwxNiwyMywyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAxNTMs
NDQsMTYsNDQsMTUzLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
CisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
KyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisg
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
CisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAg
ICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwK
KyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAg
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisg
ICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEy
OCwxMjgsMTM2LDEyOCwxMzYsMTI4LDEzNiwxMjgsMTM2LDEyOCwxMzYsMTI4LDEyOCwxMjgsMTI4
LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
CisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMTIsMTQ1LDk5LDE1OSw5OSwxNTksODMs
MTc2LDgxLDE1Myw4OCwxMzEsMTAxLDg0LDEwNSw3MywKKyAgICAxMzMsMTE0LDE0NCwxMjksMTQ0
LDEyOSwxNDQsMTI5LDEzMSwxMzgsMTIzLDE0MywxMjMsMTQzLDEyMSwxNDMsCisgICAgMTE1LDE0
MywxMTUsMTQzLDEyNywxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEzMywxMjEsMTUyLDk1LDE1NSw5MCwxNTUs
OTAsMTU1LDkwLAorICAgIDE1NSw5MCwxNTUsOTAsMTU1LDkwLDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyMiwxMzUsCisgICAgMTA3LDE1MiwxMTgsMTQwLDEy
OCwxMjgsMTExLDE0NywxMDMsMTU4LDEwMywxNTgsMTAzLDE1OCwxMDcsMTUzLAorICAgIDExNSwx
NDMsMTIyLDEzNSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMTIsMTQ1LDk0LDE2NSw3NCwxODYs
CisgICAgNzEsMTkwLDcxLDE5MCw3MSwxOTAsODcsMTM4LDEwNSw3MywxMDUsNzMsMTEwLDg1LDEy
MCwxMDAsCisgICAgMTQ0LDEyOSwxMjAsMTQ3LDg4LDEzMSwxMDAsMTIwLDEwMywxNTgsMTAzLDE1
OCwxMDMsMTU4LDEwMywxNTgsCisgICAgMTAzLDE1OCwxMDMsMTU4LDEwMywxNTgsMTAzLDE1OCwx
MDcsMTUzLDExNSwxNDMsMTI3LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTMzLDEyMSwxNTMs
OTQsMTgzLDUyLDE4Myw1MiwxODMsNTIsMTgzLDUyLDE4Myw1MiwKKyAgICAxODMsNTIsMTgzLDUy
LDE3OSw1NywxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMDMs
MTU3LAorICAgIDEwMywxNTgsMTE1LDE0MywxMjgsMTI4LDEyOCwxMjgsMTE1LDE0MywxMTUsMTQz
LDExNSwxNDMsMTA0LDE1NiwKKyAgICAxMDMsMTU4LDEwMywxNTgsMTE1LDE0MywxMjgsMTI4LDEy
MiwxMzUsODQsMTc1LDczLDE4Nyw5MiwxNjcsCisgICAgMTExLDE0NiwxMjgsMTI4LDExMCw4NSwx
MDUsNzMsMTExLDg3LDEyOCwxMjgsMTI4LDEyOCwxNDQsMTI5LAorICAgIDE0NCwxMjksMTE2LDE0
MCw4OCwxNzIsMTAzLDE1OCw5NSwxNjYsODgsMTQ4LDExNSw5OSwxMDYsNzYsCisgICAgMTEyLDgz
LDEyNywxMjAsMTIzLDE0MywxMjEsMTQzLDEwNCwxNTYsMTAzLDE1OCwxMTcsMTM5LDE2NCw3OCwK
KyAgICAxODMsNTIsMTgzLDUyLDE4Myw1MiwxNjcsNzMsMTM1LDExOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMDMsMTU4LAorICAgIDEwMywxNTgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgs
MTI4LDEyNCwxMzIsOTMsMTY3LDEwOCwxNTEsMTI1LDEzMSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwKKyAgICAxMjgsMTI4LDEwOCw4MSwxMDUsNzMsMTExLDg4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDE0NCwxMjksCisgICAgMTM1LDEyOCwxMTgsMTM5LDEwMywxNTgsMTA5LDE1MCw5OSwxNTks
NzEsMTkwLDc5LDE4MSwxMTcsMTM5LAorICAgIDEyOCwxMjYsMTMwLDExOCwxNDcsMTM3LDE0NCwx
MjksMTU2LDEzNSwxNjYsODksMTgzLDUyLDE4MSw1MywKKyAgICAxNDcsMTAwLDE1Miw5NSwxMzUs
MTE4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
CisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjMsMTYxLAorICAgIDEyOCwxNjIsMTI4LDE2MiwxMjgsMTYyLDEyOCwxMjgsMTI4LDEz
NSwxMjgsMTYyLDEyOCwxNTksMTI4LDE0MiwKKyAgICAxMjgsMTI4LDEyOCwxMjgsNzEsMTkwLDcx
LDE5MCwxMDksMTUwLDEyMiwxMzUsMTI4LDEyOCwxMjcsMTI4LAorICAgIDEyNywxMjUsMTA1LDcz
LDEyMSwxMTEsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTMxLDEyOCwxNDQsMTI5LAorICAgIDEx
OCwxMzksMTAzLDE1OCwxMDksMTUwLDEyOCwxMjgsMTI4LDEyOCwxMTMsMTQzLDc0LDE4NywxMTMs
MTc1LAorICAgIDE1NCwxNjEsMTU0LDE2MSwxNTksMTI2LDE3MCw3OCwxODMsNTIsMTgxLDUyLDE1
Nyw4OCwxMjIsMTUyLAorICAgIDEwMywxNTgsMTAzLDE1OCwxMjEsMTQyLDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDE1NywxMjgsMTYyLAorICAg
IDExNSwxNjAsMTE1LDE2MCwxMjgsMTQ1LDEyOCwxMjksMTI4LDEyOCwxMjgsMTQ1LDEyOCwxNTMs
MTI4LDE2MiwKKyAgICAxMjgsMTU5LDEyOCwxNDUsOTksMTc2LDg5LDE4MCwxMjgsMTI4LDExNywx
NDEsMTIzLDEzMywxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI0LDExOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDE0NCwxMjksMTI5LDE0MCwKKyAgICAxMDMsMTU4LDEwOSwxNTAsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxNDcsMTU1LDE1OSwxNDAsCisgICAgMTcxLDk2
LDE3OSw1OCwxODMsNTIsMTgwLDU1LDE2NCw4OCwxMzAsMTAzLDEwOCw4MCwxMjgsMTI4LAorICAg
IDExNywxNDIsMTE0LDE1NiwxMDMsMTU4LDEwOCwxNTIsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTM3LDEyOCwxNTgsMTI4LDE2MiwxMjgsMTM2LAorICAgIDEwNCwxNTYsMTAzLDE1OCwx
MjQsMTMzLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEzNiwKKyAgICAxMjgs
MTUzLDEyOCwxNjIsMTI4LDE2MiwxMjgsMTYyLDEyOCwxNjIsMTI4LDE1NiwxMjgsMTQzLDExMCwx
NDIsCisgICAgMTEzLDE0NiwxMjgsMTI4LDEyOCwxMjgsMTI3LDEyOCwxMjgsMTI4LDEyNywxMjgs
MTE3LDE0OCwxMDMsMTU4LAorICAgIDEwOSwxNTAsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxNjAsMTE5LDE3Niw3OCwxODMsNTIsCisgICAgMTc5LDU2LDE0MCwxMDQsMTI0LDEyOCwx
MjgsMTI4LDE0MywxMjksMTQ0LDEyOSwxMDUsNzMsMTI0LDExOSwKKyAgICAxMjgsMTI4LDEyOSwx
MjksMTIxLDE1NywxMDMsMTU4LDEwOSwxNTcsMTI3LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAg
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDE2MiwxMjgs
MTYxLDEyOCwxMzYsMTI4LDEyOCwKKyAgICAxMjQsMTMyLDEwMywxNTcsMTAzLDE1OCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDcx
LDE5MCwxMjAsMTUxLDEyOCwxNDUsMTI4LDE1OSwxMjgsMTYyLDEyOCwxNjIsCisgICAgMTIzLDE1
MywxMjcsMTQ0LDEyOCwxMjgsMTI1LDEzMSwxMjMsMTMzLDEwNywxNTMsMTIzLDE2MSwxMjgsMTYy
LAorICAgIDEyOCwxNjIsMTI4LDE2MiwxMzEsMTU1LDE1NSwxMDcsMTgwLDU4LDE4Myw1MiwxNzYs
NjEsMTUyLDk1LAorICAgIDEyMywxMzMsODEsMTc5LDcxLDE5MCwxMjgsMTI4LDEzMSwxMjgsMTQ0
LDEyOSwxMDUsNzMsMTA3LDc4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyNCwxNDAs
MTAzLDE1OCwxMDYsMTUzLDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTYyLDEyOCwxMzQsMTI4LDEyOCwxMjgsMTI4
LAorICAgIDEyOCwxMjgsMTI0LDEzMywxMDMsMTU4LDExNSwxNDksMTM1LDEyOSwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsNzEsMTkwLDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMzEsMTE1LDExMSwKKyAgICAxMjcsMTUyLDEyOCwxNjIsMTI4LDE1Mywx
MjgsMTMwLDEyOCwxMjgsMTIzLDE1NCwxMzUsMTQ4LDE0MCwxMjcsCisgICAgMTUxLDExMywxNjMs
OTEsMTgzLDUyLDE4Myw1MiwxNjgsODEsMTQ1LDEyNywxMjgsMTQzLDExNCwxNzMsCisgICAgMTE5
LDE1NSwxMjUsMTMxLDcxLDE5MCw4NiwxNzIsMTI4LDEyOCwxNDQsMTI5LDEyMywxMTcsMTA1LDcz
LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTQxLDE2MCwxMDMsMTU4LDEw
NiwxNTQsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEzOCwxMjgsMTYyLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4
LDEyOCwxMTYsMTQzLDEwMywxNTgsMTEwLDE1MywxMzQsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAg
ICAxMjgsMTI4LDEyOCwxMjgsNzEsMTkwLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyMywxMTUs
MTA1LDczLAorICAgIDEyOCwxNTUsMTI4LDE2MiwxMjgsMTYyLDEzMSwxNTUsMTU1LDkwLDE3OSw1
NywxODMsNTIsMTgzLDUyLAorICAgIDE4Myw1MiwxNzYsNjAsMTU4LDg2LDE1NSwxMzcsMTU0LDE2
MSwxMjgsMTUyLDEyOCwxNjIsMTI0LDE3MCwKKyAgICAxMDAsMjE4LDEwMCwyMTksMTAyLDE1Niw3
MSwxOTAsMTE5LDEzNywxNDQsMTI5LDEyOCwxMjgsMTA1LDczLAorICAgIDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTU0LDE2MSwxMTQsMTQ0LDEwMywxNTgsMTIzLDEzMywKKyAgICAx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDE2MSwxMjgsMTYyLDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDExMywxNDYs
MTAzLDE1OCwxMjEsMTQ1LDEyOSwxMjgsMTI4LDEyOCwKKyAgICAxMzQsMTI4LDEyOCwxMjgsNzEs
MTkwLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEwOSw4MSwxMTYsMTE4LAorICAgIDEyOSwxNTgs
MTQyLDEyMSwxNTgsODUsMTgzLDUyLDE4Myw1MiwxNjgsNzIsMTQ4LDEwMCwxNDAsMTI4LAorICAg
IDEzMSwxNTMsMTE4LDE2MCwxMTYsMTU5LDEzOSwxNjEsMTMxLDE1OSwxMjUsMTMxLDEyOCwxMzcs
MTI4LDE2MiwKKyAgICAxMjQsMTcwLDEwMCwyMTksMTI4LDEyOCw3MSwxODksNzYsMTg0LDE0NCwx
MjksMTI4LDEyOCwxMDUsNzMsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
NTQsMTYxLDEyOCwxMjgsMTA0LDE1NywxMDMsMTU4LAorICAgIDEyNCwxMzMsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTYyLDEyOCwxNTIsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
CisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMTEsMTQ4LDEwMywxNTgsMTIz
LDE0MiwxMjgsMTI4LAorICAgIDEzMCwxMjgsMTM5LDEyOCw4NCwxNzgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTQ2LDEwMiwxNjgsODEsCisgICAgMTgzLDUyLDE4Myw1MiwxODAsNTUsMTU5LDk4
LDEzNywxNDMsMTI4LDEyOCwxMzAsMTI4LDEyOCwxMjgsCisgICAgMTI4LDE0NywxMjgsMTYyLDEy
OCwxNjIsMTI4LDE2MiwxMjcsMTYxLDEyMSwxNjEsMTE0LDE1OSwxMTMsMTU0LAorICAgIDEyOCwx
NjIsMTA1LDE5NiwxMjgsMTI4LDExMiwxNDQsNzEsMTkwLDE0NCwxMjksMTI4LDEyOCwxMDUsNzMs
CisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxNTEsMTU3LDEyOCwxMjgsMTI3
LDEyOSwxMDMsMTU3LAorICAgIDEwNSwxNTUsMTI3LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTYyLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDExMCwxNDksMTAzLDE1OCwxMTEsMTQ4LAorICAg
IDEyOCwxMjgsMTM1LDEyOCwxNDQsMTI5LDEzNywxMjgsMTUwLDk3LDE3OCw2MCwxODMsNTIsMTY5
LDY3LAorICAgIDE0NywxMDAsMTMxLDEyMiwxMjgsMTI4LDEyOCwxNjIsMTI4LDE1NiwxMjgsMTI4
LDE0MywxMjksMTMyLDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxNTUsMTI4LDE2MSwxNDcsMTYxLDEy
OCwxNDcsMTI4LDE1NSwxMjgsMTYyLDEyNiwxNjEsCisgICAgMTI4LDE2MiwxMjUsMTYxLDExNSwx
NDMsMTI3LDEyOCw3MSwxOTAsMTQ0LDEyOSwxMjgsMTI4LDEwNSw3MywKKyAgICAxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyMywxMzQsCisg
ICAgMTAzLDE1OCwxMDcsMTUzLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxNjIsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMTMsMTQ2LDEwMywxNTgsCisgICAgMTIwLDEzNywxNDMsMTA2
LDE2NSw4NSwxODAsNTcsMTgzLDUyLDE3MSw3NiwxMzMsMTI4LDEwMywxNTgsCisgICAgMTEwLDE1
MCwxMjgsMTI4LDEyOCwxNTMsMTI4LDE2MiwxMjgsMTMxLDEyOCwxMjgsMTMxLDEyOCwxNDQsMTI5
LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTUwLDEzMSwxNjEsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMzYsMTI4LDE1NCwKKyAgICAxMjgsMTYyLDEyOCwxNjIsMTIzLDE2MSwxMTcsMTU1LDgxLDE4
MCwxNDQsMTI5LDEyOCwxMjgsMTA1LDczLAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMDQsMTU2LDEwMywx
NTgsMTE5LDEzOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAg
MTI4LDEyOCwxMjgsMTI4LDEyOCwxNDIsMTI4LDE2MiwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTMxLDEyMiwKKyAgICAxNzIsNjcsMTgzLDUyLDE4MCw1NSwxNjIsODcsMTQz
LDEzMSwxMjUsMTU5LDEwMywxNTgsMTIwLDEzNSwKKyAgICAxMjksMTI4LDEyOCwxMjgsMTI4LDE2
MiwxMjgsMTYyLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEzMSwxMjgsCisgICAgMTMzLDEyOCwx
MjUsMTMxLDEyOCwxMjgsMTI4LDE2MiwxMjgsMTU3LDk5LDE1OSw5OSwxNTksODUsMjA0LAorICAg
IDgxLDE5MiwxMjgsMTYyLDEyOCwxNjIsMTI4LDE2MiwxMjgsMTYyLDEyOCwxNjIsMTE3LDEyOCwx
MDUsNzQsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyNCwxMzMsMTA0LDE1NiwxMDMsMTU4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4
LDE2MSwxMjgsMTYyLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDE0NywxMDIsMTcxLDY4LDE4Myw1MiwK
KyAgICAxNzgsNTgsMTI5LDEyNCwxMjgsMTI4LDEyNywxMzQsMTI4LDE2MiwxMDMsMTU4LDExMywx
NTAsMTQ0LDEyOSwKKyAgICAxNDMsMTI4LDEzNSwxMjgsMTI4LDE2MiwxMjgsMTYyLDc0LDE4Niw3
MSwxOTAsNzEsMTkwLDcxLDE5MCwKKyAgICA3MSwxOTAsNzMsMTg3LDEyOCwxMjgsMTMxLDEzNywx
MjgsMTYyLDkxLDE4MCw4MSwxNTMsODgsMTMxLAorICAgIDg4LDEzMSwxMjgsMTYyLDEyOCwxNjIs
MTMwLDEyNSwxMzYsMTQ1LDEyNCwxNTMsMTI4LDE2MiwxMjAsMTU0LAorICAgIDEyNywxMzEsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAg
ICAxMjgsMTI4LDEyMywxMzQsMTAzLDE1OCwxMjcsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxNjIsMTI4LDE2MiwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOSwx
MjcsMTU2LDg5LDE4Myw1MiwxNzIsNjYsMTUyLDkzLAorICAgIDEyOSwxMjcsMTI0LDEzMywxMjAs
MTM3LDEyOCwxMjgsMTI4LDE0OSwxMDYsMTU0LDEyOCwxMjgsMTE2LDk3LAorICAgIDEzMywxMTQs
MTQ0LDEyOSwxMjgsMTYyLDEyOCwxNjIsOTIsMTY3LDk5LDE1OSw5OSwxNTksOTksMTU5LAorICAg
IDk5LDE1OSwxMDcsMTUwLDEyNSwxMzEsMTI4LDEyOCwxMjYsMTUzLDEyOCwxNjIsMTA0LDExNSwx
MDQsMTE1LAorICAgIDEwNCwxMTUsMTI4LDE2MiwxMjgsMTYyLDEyMywxNDMsMTIzLDE0MywxMDUs
MTE5LDExNiwxNTksMTI3LDE2MSwKKyAgICAxMjcsMTYxLDEyMywxNDQsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEw
MywxNTgsMTA3LDE1MywxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTYyLDEyOCwxNjIsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTUxLDk2LDE4Myw1MiwxODMsNTIsMTY2LDc0LDEyOCwx
MjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTA4LDE1MiwxMjgsMTM1LDEyOCwxMjgs
MTAzLDE1NywxMTEsMTQ4LDEyNiwxMjksCisgICAgODQsMTU1LDExMiwxMDIsMTI4LDE2MiwxMjgs
MTYyLDEzOSwxMjgsMTMzLDEyOCwxMjgsMTI4LDEyMCwxMzcsCisgICAgMTA3LDE1MiwxMDMsMTU4
LDEwMywxNTgsMTI1LDEzMSwxMjcsMTI4LDEyOCwxNjEsMTEzLDE1OSwxMDMsMTU4LAorICAgIDEw
MywxNTgsMTI4LDE2MiwxMjgsMTYyLDEwMywxNTgsMTAzLDE1OCwxMDMsMTU4LDEwMywxNTgsMTA2
LDE1OCwKKyAgICAxMjQsMTYxLDEyOCwxNjIsMTI0LDE1OSwxMjcsMTQzLDEyOCwxMzIsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEwMywxNTgsMTAzLDE1OCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTYyLDEyOCwxNjIsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjksMTI3
LDE3NCw2NCwxODMsNTIsMTc1LDgxLDE1MiwxMjksMTQxLDE0NCwxNDEsMTQ0LDEzNiwxMzksCisg
ICAgMTI4LDEyOCwxMDgsMTUyLDEwMywxNTgsMTI4LDE2MCwxMjgsMTI4LDEyNCwxMzIsMTAzLDE1
OCwxMDEsMTYwLAorICAgIDg1LDE3NiwxMTEsMTQ2LDEyOCwxNjIsMTI4LDE2MiwxNDIsMTI2LDE0
MywxMjksMTE0LDE0MiwxMDMsMTU4LAorICAgIDEwNCwxNTYsMTEyLDEzNCwxMjgsMTU5LDE0Mywx
NTcsMTI4LDEyOCwxMjgsMTMzLDEyOSwxNjAsMTQ0LDEyOSwKKyAgICAxMzUsMTQyLDEyOCwxNjIs
MTI4LDE2MiwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjcsMTI5LDExNywxNDEsCisgICAgMTE0
LDE0NCwxMTQsMTU5LDEyMiwxNjEsMTI4LDE2MiwxMjgsMTYyLDEyNCwxNDUsMTI3LDEyOCwxMjgs
MTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMDMsMTU4LDEwMywxNTgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDE2MCwxMjgsMTYyLDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEzNiwxMTYsCisgICAgMTc1LDYzLDE4Myw1MiwxNjIsMTI4
LDE1NCwxNjEsMTU0LDE2MSwxNTQsMTYxLDE1NCwxNjEsMTU0LDE2MSwKKyAgICAxNDksMTYwLDEw
MywxNTgsMTI1LDE1NywxMjgsMTYyLDEyOCwxNTUsMTI4LDEyOCwxMDYsMTUxLDk3LDE2NCwKKyAg
ICAxMDMsMTU4LDEwMywxNTgsMTI4LDE2MiwxMjgsMTYyLDEyMywxMTIsMTEyLDE1MSwxMDMsMTU4
LDExNSwxNDksCisgICAgMTA1LDczLDEyMywxMDYsMTU0LDE2MSwxNDcsMTUxLDEzNywxMjksMTI4
LDEyOCwxMjgsMTQ5LDEzMSwxNDQsCisgICAgMTI4LDEyOCwxMjgsMTYyLDEyOCwxNjIsMTIxLDE0
OSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTIzLDEzMywx
MTUsMTQzLDExMywxNDgsMTIyLDE2MSwxMjgsMTYyLDEyOCwxNjIsMTE0LDE1OSwKKyAgICAxMTQs
MTQ5LDEyOCwxMjgsMTAzLDE1OCwxMDMsMTU4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMzUsMTI4LDE2MiwxMjgsMTU3LDEyOCwxMjgs
MTQ5LDEwMCwxODMsNTIsCisgICAgMTgyLDUzLDE2MSwxMzMsMTUxLDE1NywxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEzNywxNDUsCisgICAgMTAzLDE1OCwxMDMsMTU4LDE1NCwxNjEs
MTI4LDE2MiwxNTQsMTYxLDEzNiwxMzgsMTI4LDEyOCwxMzgsMTQxLAorICAgIDEzNSwxNTIsMTE2
LDE1OSwxMjgsMTYyLDEyOCwxNjIsMTA4LDE1MSwxMDMsMTU4LDEwNSwxMzIsMTQ0LDEyOSwKKyAg
ICAxMzIsMTExLDE1NCwxNjEsMTQ3LDE1MywxMzksMTI4LDE0NCwxMjksMTI4LDEyOCwxMjgsMTI4
LDEyOCwxNDksCisgICAgMTI4LDEyOCwxMjgsMTYyLDEyOCwxNjIsMTAwLDIxNywxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI3LDEyOSwxMjIsMTUwLDEyMSwxNjEsMTI4LDE2MiwKKyAgICAxMjgsMTYyLDEyMCwxNjAs
MTAzLDE1OCwxMDMsMTU3LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEzNiwxMjgsMTYyLDEyOCwxNTUsMTgzLDUyLDE2OSw3
MSwKKyAgICAxMzAsMTI0LDE1NCwxNjEsMTM0LDEzNiwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEwNywxNTMsCisgICAgMTAzLDE1OCwxMjIsMTM1LDEyOCwxMzEsMTI4LDE2Miw4NSwx
NzQsNzEsMTkwLDExMywxNDQsMTI4LDEyOCwKKyAgICAxNDQsMTQ4LDE1NCwxNjEsMTI5LDE2MSwx
MjgsMTYyLDEwMywxNTgsMTAzLDE1OCwxNDAsMTM3LDE0NiwxNDEsCisgICAgMTQ0LDEyOSwxNDcs
MTM5LDEzMSwxMjIsMTQ0LDEyOSwxMzksMTI4LDEyOCwxMjgsMTI4LDEyOSwxMjgsMTI4LAorICAg
IDEyOCwxMjgsMTI4LDE2MiwxMjgsMTYyLDEwMCwyMTksMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDExOSwxNDEsCisgICAgMTI3LDE0NSwxMjgsMTYyLDEwMywxNTgsMTExLDE0
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTQ0LDExMywxODMsNTIsMTgzLDUyLDEyOCwxMjgsCisgICAgMTI4LDEy
OCwxNTQsMTYxLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTEwLDE0OSwxMDMsMTU4
LAorICAgIDExNywxNDEsMTI4LDEyOCwxMjgsMTU1LDEyOCwxNjIsMTI4LDEyOCw4OCwxNzEsNzEs
MTkwLDExMywxNDMsCisgICAgMTI4LDEyOCwxMjgsMTI4LDExOCwxMzUsMTI4LDE2MiwxMTIsMTU5
LDEwMywxNTgsMTA2LDE1OCwxMzIsMTU5LAorICAgIDE0OSwxNDUsMTQ0LDEyOSwxNDQsMTI5LDE0
NSwxMzQsMTI3LDEyNywxMjgsMTI4LDEyOCwxMjgsMTI4LDEzMSwKKyAgICAxMjgsMTI4LDEyOCwx
NTUsMTI4LDE0NywxMDAsMjE5LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAg
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDE0MSwxMTAsMTU1LDkwLDE3
OCw1OSwKKyAgICAxNzQsNjQsMTI4LDE0MCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDE4
Miw1MywxODIsNTMsMTM5LDEzOSwxMjgsMTU3LAorICAgIDEyOCwxNDUsMTUyLDE2MSwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjcsMTI4LDEwMywxNTgsMTAzLDE1NywKKyAgICAxMjgsMTI4LDEy
OCwxMjgsMTI4LDE2MiwxMjgsMTYyLDEyOCwxMjgsMTI4LDEyOCwxMTMsMTQzLDgzLDE3NiwKKyAg
ICAxMjUsMTMxLDEyOCwxMjgsMTAzLDE1NiwxMjIsMTYxLDEyOCwxNjIsMTI4LDE0OCwxMTYsMTU5
LDEwMywxNTgsCisgICAgMTA2LDE1NywxMjksMTM5LDE0NCwxMjksMTQ4LDE0MywxNTEsMTU2LDE0
MCwxNDMsMTMxLDEzMiwxMjgsMTQyLAorICAgIDEyOCwxMjksMTI4LDEyOCwxMjgsMTI5LDEwMCwy
MTksMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEzNiwxMTYs
MTU1LDkwLDE1NSw5MCwxODMsNTIsMTgzLDUyLDE4Myw1MiwxNzEsNjgsCisgICAgMTM4LDExMywx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAor
ICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOSwxMjcsMTgzLDUyLDE0MSwxMTAsMTI4LDEz
NiwxMjgsMTU5LAorICAgIDEyOCwxNjIsMTI4LDE2MSwxMjgsMTQ1LDEyOCwxMzgsMTI4LDEyOCwx
MDksMTUxLDEwMywxNTgsMTAxLDIwNCwKKyAgICAxMDAsMjE5LDEwMCwyMTksMTI4LDE2MiwxMjgs
MTYyLDEwOSwxOTAsMTIzLDE0NSwxMjgsMTI4LDEyOCwxMjgsCisgICAgODYsMTczLDEyOCwxMjgs
MTIzLDEzMywxMTEsMTQ4LDEzMCwxNjEsMTI4LDE2MSwxNDcsMTUzLDEzMSwxMzYsCisgICAgMTEy
LDE1MSwxMDMsMTU4LDEyMywxNDQsMTI5LDEzOSwxNDcsMTQzLDE1NCwxNjEsMTU0LDE2MSwxNTEs
MTU3LAorICAgIDEyOCwxNjAsMTQ1LDEwNywxNTUsOTAsMTQxLDEzNSwxNTUsOTAsMTU1LDkwLDE1
NSw5MCwxNzEsNjgsCisgICAgMTgzLDUyLDE4Myw1MiwxODMsNTIsMTgzLDUyLDE3OSw1NywxNTUs
OTAsMTM4LDExMywxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxNzIsNjYsMTgzLDUyLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMzAs
MTM1LDE2MSwxMjgsMTYyLDEyOCwxNjIsMTI4LDE0NSwxMTUsMTYwLDExMiwxNTcsMTAwLDIxOSwK
KyAgICAxMTQsMTczLDExNCwxNzMsMTI4LDE2MiwxMjgsMTYyLDEwMSwyMTYsMTAwLDIxOSwxMDks
MTkwLDEyNywxMjksCisgICAgMTE5LDEzOCwxMjAsMTM4LDEyOCwxMjgsMTMzLDEzOSwxNTIsMTYx
LDEyOCwxNjIsMTI5LDE1NywxNDQsMTI5LAorICAgIDEzNywxMjgsMTExLDE0OCwxMDMsMTU4LDEw
MywxNTgsMTM2LDEzNCwxNDMsMTA5LDE2NiwxMDQsMTY5LDEwNSwKKyAgICAxODMsNTIsMTgzLDUy
LDE4Myw1MiwxODMsNTIsMTgzLDUyLDE4Myw1MiwxODMsNTIsMTcyLDY3LAorICAgIDE1NSw5MCwx
NTIsOTUsMTMwLDEyNCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisg
ICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDE4Myw1MiwxNTIsOTUsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxNTQsMTYxLDEyOCwxMzMsMTI4LDE1
MywxMjgsMTYyLDEyOCwxNjIsMTI4LDE2MiwxMjYsMTY1LAorICAgIDEyOCwxNDUsMTI4LDE0Miwx
MjgsMTYyLDEyOCwxNjIsMTI3LDEzMSwxMTQsMTczLDEwMCwyMTksMTA3LDE4NCwKKyAgICAxMDMs
MTU4LDEwMywxNTgsMTMzLDEzNCwxMjgsMTI4LDEyNCwxNTgsMTEzLDE1MywxMjgsMTYyLDEzMCwx
NTcsCisgICAgMTI4LDEzNCwxMjgsMTI4LDEyNywxMjksMTE2LDE0MSwxNTUsODgsMTgzLDUyLDE4
Myw1MiwxODMsNTIsCisgICAgMTY2LDg0LDE1MiwxMTQsMTM4LDE3MiwxMjgsMTI5LDEyOCwxMjgs
MTQzLDE0NiwxNDQsMTQ4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAx
MjgsMTI4LDEyOCwxMjgsMTI5LDEyNywxODMsNTIsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwKKyAgICAxMjgsMTI4LDE1NCwxNjEsMTI4LDEyOCwxMjcsMTI4LDEwMywxNTgsMTEzLDE0
NSwxMjgsMTM3LDEyMSwxNzUsCisgICAgMTI4LDE2MiwxMjgsMTYyLDEyOCwxNjIsMTI4LDE2Miwx
MjgsMTQzLDEyOCwxMzIsMTE3LDE2MywxMDMsMTU4LAorICAgIDEwNSwxNTksMTQxLDE1OSwxNTIs
MTU3LDEyOCwxMjgsMTI4LDEyOCw5MiwxNzIsMTQwLDEzNywxNDUsMTI3LAorICAgIDE1NSwxMDcs
MTY0LDgyLDE4Myw1MiwxODMsNTIsMTgxLDUzLDE0NSwxMDEsMTE4LDE0OCwxMjgsMTYyLAorICAg
IDEyOCwxNjIsMTI4LDE2MiwxMDQsMjA1LDEzMCwxMzAsMTI4LDEyOCwxMjgsMTI4LDEzNSwxMzYs
MTUzLDE1OSwKKyAgICAxNDQsMTQ4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwx
NzAsNzAsMTgzLDUyLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEy
OCwxNTQsMTYxLDEzNywxMzksMTA5LDE1MSwxMDMsMTU4LDEyNywxMjksMTI4LDEyOCwxMTgsMTU3
LAorICAgIDEwMCwyMTksMTE4LDE2OSwxMjgsMTQ1LDEyOCwxNjIsMTI4LDE2MiwxMjgsMTYyLDEy
OCwxNjIsMTI4LDE2MiwKKyAgICAxMjgsMTYyLDEyOCwxNjIsMTI4LDE2MiwxMjgsMTM4LDE1NSw5
MCwxODMsNTIsMTgzLDUyLDE4Myw1MiwKKyAgICAxODMsNTIsMTc5LDU5LDE1OCwxMDEsMTUyLDEx
NCwxMzAsMTU2LDEyOCwxNjIsMTI4LDE2MiwxMjcsMTYxLAorICAgIDEwNiwxOTcsMTI4LDE2Miwx
MjUsMTM2LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTMzLDEzNCwKKyAgICAxNDUs
MTUwLDE1MCwxNTYsMTM2LDEzOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxODMsNTIsMTgzLDUyLDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxNTQsMTYxLDE1NCwxNjEs
MTAzLDE1OCwxMDYsMTU0LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEwNywxOTYsMTAw
LDIxOSwxMjMsMTQyLDEyOCwxNjAsMTI4LDE2MiwxMjgsMTYyLDEyNCwxNjEsMTMwLDE2MSwKKyAg
ICAxMjcsMTY5LDE1MCwxMTYsMTcxLDc2LDE4Myw1MiwxODMsNTIsMTc5LDU3LDE1NSw5MCwxMzMs
MTE3LAorICAgIDk5LDE3Niw5OSwxNzYsMTI3LDE1NiwxMjgsMTYyLDEyOCwxNjIsMTI4LDE2Miwx
MjYsMTYwLDEwNiwxNTcsCisgICAgMTAzLDE1OCwxMjgsMTYyLDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTM2LDEzOCwxNDEsMTQ0
LDE1NCwxNjAsMTM4LDE0MCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisg
ICAgMTI4LDEyOCwxMjgsMTI4LDE4Myw1MiwxODMsNTIsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwKKyAgICAxMjgsMTI4LDE0NSwxNDksMTM5LDE2MCwxMDMsMTU4LDEyMiwxMzUsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMDAsMjE3LDEwMSwxODgsMTAzLDE2
MywxMTksMTYwLDE0MywxMzEsMTU5LDk4LDE3NCw2OSwKKyAgICAxODMsNTIsMTgzLDUyLDE3Miw2
NywxNTksODUsMTUyLDExMywxMjgsMTI3LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMDQsMTU0LDcx
LDE5MCw3OSwxODEsMTIyLDE2MiwxMjAsMTc4LDEyNiwxNjUsMTI4LDE2MiwxMjgsMTYwLAorICAg
IDExNiwxNTYsMTI4LDE2MiwxMDMsMTU0LDExMiwxNDYsMTI2LDEyOSwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMzAsMTMwLDE0MSwxNDQsMTM4
LDE0MCwxMzYsMTM4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwx
ODMsNTIsMTgzLDUyLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEy
OCwxMjgsMTI4LDEwNCwxNTgsMTAzLDE1OCwxMzcsMTM5LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LAorICAgIDEyOCwxMjgsMTQwLDExNCwxNjUsNzUsMTgzLDUyLDE4Myw1MiwxODMsNTIsMTc5LDYw
LDE1OSw5OSwKKyAgICAxNTMsMTEyLDEzNSwxNDYsMTI4LDE0OSwxMzksMTM5LDEzNCwxMTUsMTEx
LDg3LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEwMCwxODIsNzEsMTkwLDc5LDE5OCwx
MDAsMjE5LDEwNiwxOTcsMTI2LDE0MSwxMjgsMTU0LAorICAgIDEyOCwxNjIsMTI4LDE2MiwxMDks
MTM1LDEwMywxNTYsMTAzLDE1NiwxMTcsMTI5LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMzIsMTMzLDE1MiwxNTgs
CisgICAgMTM3LDE0MCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxODMsNTIsMTgzLDUyLDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEwMywxNTgsMTMx
LDE1OCwxNTQsMTYxLDE2MiwxMzAsMTY4LDEwNiwxNzEsOTYsCisgICAgMTgxLDU5LDE4Myw1Miwx
NzIsNzQsMTY4LDEwNiwxNTUsOTAsMTM1LDEzNSwxMDUsMjAzLDEwMCwyMTksCisgICAgMTA2LDIw
NSwxMTcsMTg1LDEyOSwxNTksMTI4LDE2MiwxMjgsMTYyLDEyMywxNDIsMTI3LDEzOCwxMjgsMTI4
LAorICAgIDEyNCwxNDEsMTA0LDIxMSw5MiwxODgsNzEsMTkwLDk1LDE2NiwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwKKyAgICAxMjgsMTQyLDE0MSwxMzUsMTQyLDEyOSwxMjIsMTIzLDEwNSwxNTAs
MTAzLDE1OCwxMTEsMTQ4LDEyNywxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDE0MywxNDYsMTQ5LDE1
NCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAx
MjgsMTI4LDEyOCwxMjgsMTgzLDUyLDE4Myw1MiwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMTEsMTQ4LDE1NSw5OSwxODAsNjIsMTgzLDUyLDE4
Myw1MiwxNzksNTcsCisgICAgMTUzLDkyLDEyNywxMjYsMTQxLDE0NCwxMzMsMTM0LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTAwLDIxOSwxMDAsMjE5LDE0NCwxMjksMTM5
LDEzOCwxMjgsMTQ1LDEyOCwxNTMsMTI2LDE1NCwxMjgsMTI5LAorICAgIDEyOCwxMjgsMTI4LDE0
OSwxMjgsMTYyLDExOSwxNjUsMTA4LDE3MSwxMjMsMTUwLDEyOCwxNDUsMTI4LDE0NSwKKyAgICAx
MjgsMTM0LDEzNCwxMjgsMTQ0LDEyOSwxMzAsMTI4LDEyOCwxMjgsMTE1LDE0MywxMDMsMTU4LDEw
NiwxNTMsCisgICAgMTI3LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI5LDEyOSwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTgw
LDU1LDE4Myw1MiwxNTUsOTAsMTU1LDkwLDE2NCw3OCwxODMsNTIsCisgICAgMTgzLDUyLDE4Myw1
MiwxODMsNTIsMTgzLDUyLDE3MSw2OCwxNDQsMTA1LDEyOCwxMjgsMTA5LDE1MSwKKyAgICAxMDMs
MTU4LDEyNSwxMzEsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsCisgICAgMTAwLDIxOSwxMDAsMjE5LDE0NCwxMjksMTQ0LDEyOSwxMjgsMTI4LDEyOCwxMjgs
MTI2LDEyMywxMDksODUsCisgICAgMTIzLDExNywxMjgsMTI4LDEyOCwxNDUsMTI4LDE1MCwxMjYs
MTU4LDEyOCwxNjIsMTI4LDE2MiwxMjgsMTYyLAorICAgIDEyOCwxNjIsMTI4LDE2MiwxMzEsMTU0
LDE0NCwxMjksMTM0LDEyOCwxMjgsMTI4LDEyMiwxMzUsMTAzLDE1OCwKKyAgICAxMDQsMTU2LDEx
OCwxNDAsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisg
ICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMzUsMTE3LDE3OSw1NywxODMsNTIsMTgz
LDUyLDE3OSw1NywxNTgsODYsCisgICAgMTU1LDkwLDE1NSw5MCwxMzgsMTExLDEzNSwxMTgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTAzLDE1OCwKKyAgICAxMDMsMTU3LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTAwLDIxOSwx
MDAsMjE5LDE0NCwxMjksMTQ0LDEyOSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjUsMTIyLAor
ICAgIDEwOSw4NCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEwOCwxNDksNzEsMTkw
LDg3LDE3MiwKKyAgICAxMjgsMTQyLDEyOCwxNDUsMTI5LDEzNCwxNDEsMTI5LDE0NCwxMjksMTI4
LDEyOCwxMjgsMTI4LDEyMywxMzQsCisgICAgMTA5LDE1MCwxMDMsMTU4LDExMCwxNTAsMTI3LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEwMywxNTgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTIwLDEzNywxMDMsMTU4LAorICAgIDEyMiwxMzUsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMDAsMjE5LDEwMCwyMTksMTQ0LDEy
OSwxNDQsMTI5LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwx
MTMsOTEsMTI4LDEyOCwxMjcsMTI1LDEyOCwxMjgsMTI4LDEyOCw5OSwxNTksNzEsMTkwLAorICAg
IDEwNiwxNTEsMTI4LDEyOCwxMjgsMTI4LDEyOSwxMjgsMTQ0LDEyOSwxMzgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwKKyAgICAxMjgsMTI4LDExOCwxNDAsMTAzLDE1OCwxMDYsMTUzLDEyNywxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgs
MTI4LDEyOCwxMjgsMTAzLDE1OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMDMsMTU3LDEwNiwx
NTQsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LAorICAgIDEwMCwyMTksMTAwLDIxOSwxNDQsMTI5LDE0NCwxMjksMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyNiwxMjMsMTIxLDEx
MiwxMjgsMTI4LDExNywxMDIsMTI4LDEyOCwxMjgsMTI4LDg1LDE3NCwKKyAgICA3MSwxOTAsMTA2
LDE1MSwxMjgsMTI4LDEyOCwxMjgsMTM4LDEyOCwxNDQsMTI5LDEzOCwxMjgsMTI4LDEyOCwKKyAg
ICAxMjgsMTI4LDEyOCwxMjgsMTIyLDEzNSwxMDMsMTU4LDEwNiwxNTMsMTI3LDEyOCwxMjgsMTI4
LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgs
MTAzLDE1OCwxMjcsMTI4LDEyOCwxMjgsMTE5LDEzOCwxMDMsMTU4LDEyMiwxMzUsCisgICAgMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LAorICAgIDEwMCwyMTksMTA0LDIwNSwxNDMsMTI5LDE0NCwxMjksMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjcsMTI3LDEy
OCwxMjgsMTEzLDkwLDEyNywxMjcsMTI4LDEyOCwKKyAgICA4NSwxNzQsNzEsMTkwLDEwNiwxNTEs
MTI4LDEyOCwxMjgsMTI4LDEzOCwxMjgsMTQ0LDEyOSwxMzcsMTI4LAorICAgIDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyMiwxMzUsMTAzLDE1OCwxMDYsMTUzLDEyOCwxMjgsMTI4LDEyOCwKKyAg
ICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMDMsMTU4LDEwNiwx
NTMsMTI4LDEyOCwxMDMsMTU4LDEwNywxNTMsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDExNiwxNjgsCisgICAgMTAw
LDIxOSwxMjUsMTM2LDEzMywxMjgsMTQ0LDEyOSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjQsMTIw
LDEwOSw4MSwxMjcsMTI3LAorICAgIDEyOCwxMjgsODIsMTc3LDcxLDE5MCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMzksMTI4LDE0NCwxMjksCisgICAgMTMwLDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjIsMTM1LDEwMywxNTgsMTEwLDE0OSwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAg
ICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyMiwxMzUsMTAzLDE1OCwxMDgsMTUyLDEw
MywxNTgsMTI1LDEzMSwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTAwLDIxOSwKKyAgICAxMDQsMjA1LDEyOCwxMjgs
MTI4LDEyOCwxNDQsMTI5LDEzMywxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI1LDEyMiwxMDUs
NzMsCisgICAgMTI4LDEyOCwxMjUsMTMxLDcxLDE5MCw4NiwxNzIsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTQ0LDEyOSwKKyAgICAxNDQsMTI5LDEzMywxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTE1LDE0MywxMDMsMTU4LDEwOCwxNTIsCisgICAgMTE5LDEzOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAg
ICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMTMsMTQ2LDEwMywxNTgsMTA0LDE1NiwxMjgsMTI4
LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTIyLDE0OCwxMDAsMjE5LAorICAgIDEyNSwxMzYsMTI4LDEyOCwxMjgsMTI4LDE0NCwx
MjksMTQ0LDEyOSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyMSwxMTEsCisgICAgMTI4
LDEyOCwxMjgsMTI4LDk5LDE1OSw3MSwxOTAsMTIyLDEzNSwxMjgsMTI4LDEyOCwxMjgsMTMwLDEy
OCwKKyAgICAxNDQsMTI5LDE0NCwxMjksMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MTcsMTQxLDEwOCwxNTEsCisgICAgMTExLDE0OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisg
ICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTAzLDIw
NywxMDAsMjE5LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDE0NCwxMjksMTQ0LDEyOSwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsNzEsMTkwLDg0LDE3NSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxNDQs
MTI5LDE0NCwxMjksMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEwOCwxOTMsCisgICAgMTA1LDIwMCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDExNywxNjIsMTAwLDIxOSwxMTksMTU2LAor
ICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEzOSwxMjgsMTQ0LDEyOSwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsOTMs
MTY1LDc0LDE4NiwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxNDQsMTI5LDE0NCwxMjks
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEwMSwyMTUsCisgICAgMTAwLDIxOSwxMDUsMjAwLDExNCwx
NzMsMTE0LDE3MywxMTQsMTczLDEwMCwyMTcsMTAwLDIxNywxMjgsMTI4LAorICAgIDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTQ0LDEyOSwxNDEsMTI5LDEyOCwxMjgsMTI4LDEyOCwK
KyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDE0NCwxMjksMTQ0LDEyOSwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAg
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI0LDE0MSwKKyAgICAxMTAsMTg2LDEwMCwyMTksMTAwLDIxOSwxMDAsMjE5
LDEwMCwyMTksMTA2LDE5OSwxMjEsMTQ5LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMzksMTI4LDE0NCwxMjksMTM0LDEyOCwxMjgsMTI4LAorICAgIDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsCisgICAgMTQ0LDEyOSwxNDQsMTI5LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisg
ICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTQwLDEyOCwxNDQsMTI5LDEzNSwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTQy
LDEyOSwKKyAgICAxNDQsMTI5LDEzMSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
CisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEzOSwxMjgsMTQ0LDEyOSwKKyAgICAxNDIsMTI5LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMzYsMTI4LDE0NCwxMjksMTQ0LDEyOSwxNDQsMTI5LAorICAg
IDEzMiwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMzQsMTI4LAorICAgIDE0NCwxMjksMTQ0LDEyOSwxNDQsMTI5LDE0NCwxMjksMTQ0
LDEyOSwxNDQsMTI5LDE0NCwxMjksMTQ0LDEyOSwKKyAgICAxNDQsMTI5LDE0NCwxMjksMTQwLDEy
OSwxMjgsMTI4LDEzMCwxMjgsMTM5LDEyOCwxMzYsMTI4LDEzNSwxMjgsCisgICAgMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAor
ICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsCisgICAgMTM1LDEyOCwxMzYsMTI4LDEzNiwxMjgsMTM2LDEyOCwxMzYsMTI4LDEzNiwx
MjgsMTM2LDEyOCwxMzYsMTI4LAorICAgIDEzNiwxMjgsMTM2LDEyOCwxMzEsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAg
ICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwK
KyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAg
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisg
ICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
CisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAg
IDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAor
ICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAg
ICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwK
KyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorfTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQmluZEdl
bmVyYXRlc1Jlc291cmNlVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0JpbmRHZW5lcmF0ZXNSZXNvdXJjZVRlc3QuY3BwCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0
cy9CaW5kR2VuZXJhdGVzUmVzb3VyY2VUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDEyMyBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorLy8KKworLy8gQmluZEdlbmVyYXRlc1Jlc291cmNlVGVzdC5jcHAgOiBU
ZXN0cyBvZiB0aGUgR0xfQ0hST01JVU1fYmluZF9nZW5lcmF0ZXNfcmVzb3VyY2UgZXh0ZW5zaW9u
LgorCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKworbmFtZXNwYWNlIGFuZ2xl
Cit7CisKK2NsYXNzIEJpbmRHZW5lcmF0ZXNSZXNvdXJjZVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0
Cit7CisgIHByb3RlY3RlZDoKKyAgICBCaW5kR2VuZXJhdGVzUmVzb3VyY2VUZXN0KCkgeyBzZXRC
aW5kR2VuZXJhdGVzUmVzb3VyY2UoZmFsc2UpOyB9Cit9OworCisvLyBDb250ZXh0IGNyZWF0aW9u
IHdvdWxkIGZhaWwgaWYgRUdMX0NIUk9NSVVNX2NyZWF0ZV9jb250ZXh0X2JpbmRfZ2VuZXJhdGVz
X3Jlc291cmNlIHdhcyBub3QKKy8vIGF2YWlsYWJsZSBzbyB0aGUgR0wgZXh0ZW5zaW9uIHNob3Vs
ZCBhbHdheXMgYmUgcHJlc2VudAorVEVTVF9QKEJpbmRHZW5lcmF0ZXNSZXNvdXJjZVRlc3QsIEV4
dGVuc2lvblN0cmluZ0V4cG9zZWQpCit7CisgICAgRVhQRUNUX1RSVUUoZXh0ZW5zaW9uRW5hYmxl
ZCgiR0xfQ0hST01JVU1fYmluZF9nZW5lcmF0ZXNfcmVzb3VyY2UiKSk7Cit9CisKKy8vIFZlcmlm
eSB0aGF0IEdMX0JJTkRfR0VORVJBVEVTX1JFU09VUkNFX0NIUk9NSVVNIGNhbiBiZSBxdWVyaWVk
IGJ1dCBub3QgY2hhbmdlZAorVEVTVF9QKEJpbmRHZW5lcmF0ZXNSZXNvdXJjZVRlc3QsIFF1ZXJ5
VmFsaWRhdGlvbikKK3sKKyAgICBHTGludCBpbnRWYWx1ZSA9IDI7CisgICAgZ2xHZXRJbnRlZ2Vy
dihHTF9CSU5EX0dFTkVSQVRFU19SRVNPVVJDRV9DSFJPTUlVTSwgJmludFZhbHVlKTsKKyAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfRVEoaW50VmFsdWUsIEdMX0ZBTFNFKTsK
KworICAgIGZsb2F0IGZsb2F0VmFsdWUgPSAyLjBmOworICAgIGdsR2V0RmxvYXR2KEdMX0JJTkRf
R0VORVJBVEVTX1JFU09VUkNFX0NIUk9NSVVNLCAmZmxvYXRWYWx1ZSk7CisgICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7CisgICAgRVhQRUNUX0VRKGZsb2F0VmFsdWUsIDAuMGYpOworCisgICAgR0xi
b29sZWFuIGJvb2xWYWx1ZSA9IEdMX1RSVUU7CisgICAgZ2xHZXRCb29sZWFudihHTF9CSU5EX0dF
TkVSQVRFU19SRVNPVVJDRV9DSFJPTUlVTSwgJmJvb2xWYWx1ZSk7CisgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7CisgICAgRVhQRUNUX0VRKGJvb2xWYWx1ZSwgR0xfRkFMU0UpOworCisgICAgYm9v
bFZhbHVlID0gZ2xJc0VuYWJsZWQoR0xfQklORF9HRU5FUkFURVNfUkVTT1VSQ0VfQ0hST01JVU0p
OworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9FUShib29sVmFsdWUsIEdM
X0ZBTFNFKTsKKworICAgIGdsRW5hYmxlKEdMX0JJTkRfR0VORVJBVEVTX1JFU09VUkNFX0NIUk9N
SVVNKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKKworICAgIGdsRGlz
YWJsZShHTF9CSU5EX0dFTkVSQVRFU19SRVNPVVJDRV9DSFJPTUlVTSk7CisgICAgRVhQRUNUX0dM
X0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Cit9CisKKy8vIFRlc3QgdGhhdCBidWZmZXJzIGNhbm5v
dCBiZSBnZW5lcmF0ZWQgb24gYmluZAorVEVTVF9QKEJpbmRHZW5lcmF0ZXNSZXNvdXJjZVRlc3Qs
IEJ1ZmZlcnMpCit7CisgICAgZ2xCaW5kQnVmZmVyKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCAy
KTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgZ2xC
aW5kQnVmZmVyKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCAwKTsKKyAgICBFWFBFQ1RfR0xfTk9f
RVJST1IoKTsKKworICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA+PSAzKQorICAgIHsK
KyAgICAgICAgZ2xCaW5kQnVmZmVyQmFzZShHTF9VTklGT1JNX0JVRkZFUiwgMCwgMyk7CisgICAg
ICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7CisKKyAgICAgICAgZ2xC
aW5kQnVmZmVyQmFzZShHTF9VTklGT1JNX0JVRkZFUiwgMCwgMCk7CisgICAgICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworCisgICAgICAgIGdsQmluZEJ1ZmZlclJhbmdlKEdMX1VOSUZPUk1fQlVG
RkVSLCAwLCA0LCAxLCAyKTsKKyAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKKworICAgICAgICBnbEJpbmRCdWZmZXJSYW5nZShHTF9VTklGT1JNX0JVRkZFUiwg
MCwgMCwgMSwgMik7CisgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgIH0KK30KKwor
Ly8gVGVzdCB0aGF0IHRleHR1cmVzIGNhbm5vdCBiZSBnZW5lcmF0ZWQgb24gYmluZAorVEVTVF9Q
KEJpbmRHZW5lcmF0ZXNSZXNvdXJjZVRlc3QsIFRleHR1cmVzKQoreworICAgIGdsQmluZFRleHR1
cmUoR0xfVEVYVFVSRV8yRCwgMik7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKKworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgMCk7CisgICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFRlc3QgdGhhdCBmcmFtZWJ1ZmZlcnMgY2Fubm90
IGJlIGdlbmVyYXRlZCBvbiBiaW5kCitURVNUX1AoQmluZEdlbmVyYXRlc1Jlc291cmNlVGVzdCwg
RnJhbWVidWZmZXJzKQoreworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAy
KTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgZ2xC
aW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApOworICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOworfQorCisvLyBUZXN0IHRoYXQgcmVuZGVyYnVmZmVyIGNhbm5vdCBiZSBnZW5lcmF0ZWQg
b24gYmluZAorVEVTVF9QKEJpbmRHZW5lcmF0ZXNSZXNvdXJjZVRlc3QsIFJlbmRlcmJ1ZmZlcnMp
Cit7CisgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgMik7CisgICAgRVhQ
RUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKworICAgIGdsQmluZFJlbmRlcmJ1
ZmZlcihHTF9SRU5ERVJCVUZGRVIsIDApOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworfQor
CisvLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2gg
cmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UKKy8vIHRlc3RzIHNob3Vs
ZCBiZSBydW4gYWdhaW5zdC4KK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoQmluZEdlbmVyYXRlc1Jl
c291cmNlVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19E
M0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzMoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAgICBF
UzNfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpLAorICAg
ICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMRVMoKSk7CisKK30gIC8vIG5hbWVzcGFjZQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0JpbmRVbmlm
b3JtTG9jYXRpb25UZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvZ2xfdGVzdHMvQmluZFVuaWZvcm1Mb2NhdGlvblRlc3QuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9CaW5k
VW5pZm9ybUxvY2F0aW9uVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0ODQgQEAK
Ky8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vCisKKy8vIEJpbmRVbmlmb3JtTG9jYXRpb25UZXN0LmNwcCA6IFRlc3RzIG9mIHRo
ZSBHTF9DSFJPTUlVTV9iaW5kX3VuaWZvcm1fbG9jYXRpb24gZXh0ZW5zaW9uLgorCisjaW5jbHVk
ZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKworI2luY2x1ZGUgPGNtYXRoPgorCit1c2luZyBu
YW1lc3BhY2UgYW5nbGU7CisKK25hbWVzcGFjZQoreworCitjbGFzcyBCaW5kVW5pZm9ybUxvY2F0
aW9uVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIEJpbmRVbmlm
b3JtTG9jYXRpb25UZXN0KCkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7Cisg
ICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOworICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgp
OworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0JsdWVC
aXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgfQorCisgICAgdm9p
ZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Cisg
ICAgICAgIG1CaW5kVW5pZm9ybUxvY2F0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEJJTkRV
TklGT1JNTE9DQVRJT05DSFJPTUlVTVBST0M+KAorICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJl
c3MoImdsQmluZFVuaWZvcm1Mb2NhdGlvbkNIUk9NSVVNIikpOworICAgIH0KKworICAgIHZvaWQg
VGVhckRvd24oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKG1Qcm9ncmFtICE9IDApCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgICAg
IH0KKyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOworICAgIH0KKworICAgIHR5cGVkZWYg
dm9pZChHTF9BUElFTlRSWVAgUEZOR0xCSU5EVU5JRk9STUxPQ0FUSU9OQ0hST01JVU1QUk9DKShH
THVpbnQgbVByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGNoYXIgKm5hbWUpOworICAgIFBGTkdMQklORFVOSUZPUk1MT0NBVElPTkNIUk9NSVVN
UFJPQyBtQmluZFVuaWZvcm1Mb2NhdGlvbiA9IG51bGxwdHI7CisKKyAgICBHTHVpbnQgbVByb2dy
YW0gPSAwOworfTsKKworLy8gVGVzdCBiYXNpYyBmdW5jdGlvbmFsaXR5IG9mIEdMX0NIUk9NSVVN
X2JpbmRfdW5pZm9ybV9sb2NhdGlvbgorVEVTVF9QKEJpbmRVbmlmb3JtTG9jYXRpb25UZXN0LCBC
YXNpYykKK3sKKyAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0NIUk9NSVVNX2JpbmRfdW5p
Zm9ybV9sb2NhdGlvbiIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBw
ZWQgYmVjYXVzZSBHTF9DSFJPTUlVTV9iaW5kX3VuaWZvcm1fbG9jYXRpb24gaXMgbm90IGF2YWls
YWJsZS4iCisgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBBU1NFUlRfTkUobUJpbmRVbmlmb3JtTG9jYXRpb24sIG51bGxwdHIpOwor
CisgICAgLy8gY2xhbmctZm9ybWF0IG9mZgorICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzU291cmNl
ID0gU0hBREVSX1NPVVJDRQorICAgICgKKyAgICAgICAgYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlv
bjsKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xfUG9zaXRp
b24gPSBhX3Bvc2l0aW9uOworICAgICAgICB9CisgICAgKTsKKworICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nIGZzU291cmNlID0gU0hBREVSX1NPVVJDRQorICAgICgKKyAgICAgICAgcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisgICAgICAgIHVuaWZvcm0gdmVjNCB1X2NvbG9yQzsKKyAgICAgICAgdW5p
Zm9ybSB2ZWM0IHVfY29sb3JCWzJdOworICAgICAgICB1bmlmb3JtIHZlYzQgdV9jb2xvckE7Cisg
ICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9
IHVfY29sb3JBICsgdV9jb2xvckJbMF0gKyB1X2NvbG9yQlsxXSArIHVfY29sb3JDOworICAgICAg
ICB9CisgICAgKTsKKyAgICAvLyBjbGFuZy1mb3JtYXQgb24KKworICAgIEdMaW50IGNvbG9yQUxv
Y2F0aW9uID0gMzsKKyAgICBHTGludCBjb2xvckJMb2NhdGlvbiA9IDEwOworICAgIEdMaW50IGNv
bG9yQ0xvY2F0aW9uID0gNTsKKworICAgIEdMdWludCB2cyA9IENvbXBpbGVTaGFkZXIoR0xfVkVS
VEVYX1NIQURFUiwgdnNTb3VyY2UpOworICAgIEdMdWludCBmcyA9IENvbXBpbGVTaGFkZXIoR0xf
RlJBR01FTlRfU0hBREVSLCBmc1NvdXJjZSk7CisKKyAgICBtUHJvZ3JhbSA9IGdsQ3JlYXRlUHJv
Z3JhbSgpOworCisgICAgbUJpbmRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sIGNvbG9yQUxvY2F0
aW9uLCAidV9jb2xvckEiKTsKKyAgICBtQmluZFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgY29s
b3JCTG9jYXRpb24sICJ1X2NvbG9yQlswXSIpOworICAgIG1CaW5kVW5pZm9ybUxvY2F0aW9uKG1Q
cm9ncmFtLCBjb2xvckNMb2NhdGlvbiwgInVfY29sb3JDIik7CisKKyAgICBnbEF0dGFjaFNoYWRl
cihtUHJvZ3JhbSwgdnMpOworICAgIGdsRGVsZXRlU2hhZGVyKHZzKTsKKworICAgIGdsQXR0YWNo
U2hhZGVyKG1Qcm9ncmFtLCBmcyk7CisgICAgZ2xEZWxldGVTaGFkZXIoZnMpOworCisgICAgLy8g
TGluayB0aGUgbVByb2dyYW0KKyAgICBnbExpbmtQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICAvLyBD
aGVjayB0aGUgbGluayBzdGF0dXMKKyAgICBHTGludCBsaW5rZWQgPSAwOworICAgIGdsR2V0UHJv
Z3JhbWl2KG1Qcm9ncmFtLCBHTF9MSU5LX1NUQVRVUywgJmxpbmtlZCk7CisgICAgQVNTRVJUX0VR
KDEsIGxpbmtlZCk7CisKKyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworCisgICAgc3RhdGlj
IGNvbnN0IGZsb2F0IGNvbG9yQltdID0geworICAgICAgICAwLjBmLCAwLjUwZiwgMC4wZiwgMC4w
ZiwgMC4wZiwgMC4wZiwgMC43NWYsIDAuMGYsCisgICAgfTsKKworICAgIGdsVW5pZm9ybTRmKGNv
bG9yQUxvY2F0aW9uLCAwLjI1ZiwgMC4wZiwgMC4wZiwgMC4wZik7CisgICAgZ2xVbmlmb3JtNGZ2
KGNvbG9yQkxvY2F0aW9uLCAyLCBjb2xvckIpOworICAgIGdsVW5pZm9ybTRmKGNvbG9yQ0xvY2F0
aW9uLCAwLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKKworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAi
YV9wb3NpdGlvbiIsIDAuNWYpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgRVhQ
RUNUX1BJWEVMX05FQVIoMCwgMCwgNjQsIDEyOCwgMTkyLCAyNTUsIDEuMCk7Cit9CisKKy8vIFRl
c3QgdGhhdCBjb25mbGljdHMgYXJlIGRldGVjdGVkIHdoZW4gdHdvIHVuaWZvcm1zIGFyZSBib3Vu
ZCB0byB0aGUgc2FtZSBsb2NhdGlvbgorVEVTVF9QKEJpbmRVbmlmb3JtTG9jYXRpb25UZXN0LCBD
b25mbGljdHNEZXRlY3Rpb24pCit7CisgICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9DSFJP
TUlVTV9iaW5kX3VuaWZvcm1fbG9jYXRpb24iKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8
PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgR0xfQ0hST01JVU1fYmluZF91bmlmb3JtX2xvY2F0aW9u
IGlzIG5vdCBhdmFpbGFibGUuIgorICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUX05FKG51bGxwdHIsIG1CaW5kVW5pZm9y
bUxvY2F0aW9uKTsKKworICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgICBjb25zdCBzdGQ6OnN0
cmluZyB2c1NvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAoCisgICAgICAgIGF0dHJpYnV0ZSB2
ZWM0IGFfcG9zaXRpb247CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBj
b25zdCBzdGQ6OnN0cmluZyBmc1NvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAoCisgICAgICAg
IHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICB1bmlmb3JtIHZlYzQgdV9jb2xvckE7
CisgICAgICAgIHVuaWZvcm0gdmVjNCB1X2NvbG9yQjsKKyAgICAgICAgdm9pZCBtYWluKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdV9jb2xvckEgKyB1X2NvbG9yQjsK
KyAgICAgICAgfQorICAgICk7CisgICAgLy8gY2xhbmctZm9ybWF0IG9uCisKKyAgICBHTGludCBj
b2xvckFMb2NhdGlvbiA9IDM7CisgICAgR0xpbnQgY29sb3JCTG9jYXRpb24gPSA0OworCisgICAg
R0x1aW50IHZzID0gQ29tcGlsZVNoYWRlcihHTF9WRVJURVhfU0hBREVSLCB2c1NvdXJjZSk7Cisg
ICAgR0x1aW50IGZzID0gQ29tcGlsZVNoYWRlcihHTF9GUkFHTUVOVF9TSEFERVIsIGZzU291cmNl
KTsKKworICAgIG1Qcm9ncmFtID0gZ2xDcmVhdGVQcm9ncmFtKCk7CisgICAgZ2xBdHRhY2hTaGFk
ZXIobVByb2dyYW0sIHZzKTsKKyAgICBnbERlbGV0ZVNoYWRlcih2cyk7CisgICAgZ2xBdHRhY2hT
aGFkZXIobVByb2dyYW0sIGZzKTsKKyAgICBnbERlbGV0ZVNoYWRlcihmcyk7CisKKyAgICBtQmlu
ZFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgY29sb3JBTG9jYXRpb24sICJ1X2NvbG9yQSIpOwor
ICAgIC8vIEJpbmQgdV9jb2xvckIgdG8gbG9jYXRpb24gYSwgY2F1c2luZyBjb25mbGljdHMsIGxp
bmsgc2hvdWxkIGZhaWwuCisgICAgbUJpbmRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sIGNvbG9y
QUxvY2F0aW9uLCAidV9jb2xvckIiKTsKKyAgICBnbExpbmtQcm9ncmFtKG1Qcm9ncmFtKTsKKyAg
ICBHTGludCBsaW5rZWQgPSAwOworICAgIGdsR2V0UHJvZ3JhbWl2KG1Qcm9ncmFtLCBHTF9MSU5L
X1NUQVRVUywgJmxpbmtlZCk7CisgICAgQVNTRVJUX0VRKDAsIGxpbmtlZCk7CisKKyAgICAvLyBC
aW5kIHVfY29sb3JCIHRvIGxvY2F0aW9uIGIsIG5vIGNvbmZsaWN0cywgbGluayBzaG91bGQgc3Vj
Y2VlZC4KKyAgICBtQmluZFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgY29sb3JCTG9jYXRpb24s
ICJ1X2NvbG9yQiIpOworICAgIGdsTGlua1Byb2dyYW0obVByb2dyYW0pOworICAgIGxpbmtlZCA9
IDA7CisgICAgZ2xHZXRQcm9ncmFtaXYobVByb2dyYW0sIEdMX0xJTktfU1RBVFVTLCAmbGlua2Vk
KTsKKyAgICBFWFBFQ1RfRVEoMSwgbGlua2VkKTsKK30KKworLy8gVGVzdCBhIHVzZSBjYXNlIG9m
IHRoZSBjaHJvbWl1bSBjb21wb3NpdG9yCitURVNUX1AoQmluZFVuaWZvcm1Mb2NhdGlvblRlc3Qs
IENvbXBvc2l0b3IpCit7CisgICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9DSFJPTUlVTV9i
aW5kX3VuaWZvcm1fbG9jYXRpb24iKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVz
dCBza2lwcGVkIGJlY2F1c2UgR0xfQ0hST01JVU1fYmluZF91bmlmb3JtX2xvY2F0aW9uIGlzIG5v
dCBhdmFpbGFibGUuIgorICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUX05FKG51bGxwdHIsIG1CaW5kVW5pZm9ybUxvY2F0
aW9uKTsKKworICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgICBjb25zdCBzdGQ6OnN0cmluZyB2
c1NvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAoCisgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IGFf
cG9zaXRpb247CisgICAgICAgIGF0dHJpYnV0ZSB2ZWMyIGFfdGV4Q29vcmQ7CisgICAgICAgIHVu
aWZvcm0gbWF0NCBtYXRyaXg7CisgICAgICAgIHVuaWZvcm0gdmVjMiBjb2xvcl9hWzRdOworICAg
ICAgICB1bmlmb3JtIHZlYzQgY29sb3JfYjsKKyAgICAgICAgdmFyeWluZyB2ZWM0IHZfY29sb3I7
CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZfY29sb3IueHkg
PSBjb2xvcl9hWzBdICsgY29sb3JfYVsxXTsKKyAgICAgICAgICAgIHZfY29sb3IuencgPSBjb2xv
cl9hWzJdICsgY29sb3JfYVszXTsKKyAgICAgICAgICAgIHZfY29sb3IgKz0gY29sb3JfYjsKKyAg
ICAgICAgICAgIGdsX1Bvc2l0aW9uID0gbWF0cml4ICogYV9wb3NpdGlvbjsKKyAgICAgICAgfQor
ICAgICk7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBmc1NvdXJjZSA9IFNIQURFUl9TT1VSQ0UK
KyAgICAoCisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICB2YXJ5aW5n
IHZlYzQgdl9jb2xvcjsKKyAgICAgICAgdW5pZm9ybSBmbG9hdCBhbHBoYTsKKyAgICAgICAgdW5p
Zm9ybSB2ZWM0IG11bHRpcGxpZXI7CisgICAgICAgIHVuaWZvcm0gdmVjMyBjb2xvcl9jWzhdOwor
ICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICB2ZWM0IGNvbG9yX2Nf
c3VtID0gdmVjNCgwLjApOworICAgICAgICAgICAgY29sb3JfY19zdW0ueHl6ICs9IGNvbG9yX2Nb
MF07CisgICAgICAgICAgICBjb2xvcl9jX3N1bS54eXogKz0gY29sb3JfY1sxXTsKKyAgICAgICAg
ICAgIGNvbG9yX2Nfc3VtLnh5eiArPSBjb2xvcl9jWzJdOworICAgICAgICAgICAgY29sb3JfY19z
dW0ueHl6ICs9IGNvbG9yX2NbM107CisgICAgICAgICAgICBjb2xvcl9jX3N1bS54eXogKz0gY29s
b3JfY1s0XTsKKyAgICAgICAgICAgIGNvbG9yX2Nfc3VtLnh5eiArPSBjb2xvcl9jWzVdOworICAg
ICAgICAgICAgY29sb3JfY19zdW0ueHl6ICs9IGNvbG9yX2NbNl07CisgICAgICAgICAgICBjb2xv
cl9jX3N1bS54eXogKz0gY29sb3JfY1s3XTsKKyAgICAgICAgICAgIGNvbG9yX2Nfc3VtLncgPSBh
bHBoYTsKKyAgICAgICAgICAgIGNvbG9yX2Nfc3VtICo9IG11bHRpcGxpZXI7CisgICAgICAgICAg
ICBnbF9GcmFnQ29sb3IgPSB2X2NvbG9yICsgY29sb3JfY19zdW07CisgICAgICAgIH0KKyAgICAp
OworICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorCisgICAgaW50IGNvdW50ZXIgICAgICAgICAgICA9
IDY7CisgICAgaW50IG1hdHJpeExvY2F0aW9uICAgICA9IGNvdW50ZXIrKzsKKyAgICBpbnQgY29s
b3JBTG9jYXRpb24gICAgID0gY291bnRlcisrOworICAgIGludCBjb2xvckJMb2NhdGlvbiAgICAg
PSBjb3VudGVyKys7CisgICAgaW50IGFscGhhTG9jYXRpb24gICAgICA9IGNvdW50ZXIrKzsKKyAg
ICBpbnQgbXVsdGlwbGllckxvY2F0aW9uID0gY291bnRlcisrOworICAgIGludCBjb2xvckNMb2Nh
dGlvbiAgICAgPSBjb3VudGVyKys7CisKKyAgICBHTHVpbnQgdnMgPSBDb21waWxlU2hhZGVyKEdM
X1ZFUlRFWF9TSEFERVIsIHZzU291cmNlKTsKKyAgICBHTHVpbnQgZnMgPSBDb21waWxlU2hhZGVy
KEdMX0ZSQUdNRU5UX1NIQURFUiwgZnNTb3VyY2UpOworCisgICAgbVByb2dyYW0gPSBnbENyZWF0
ZVByb2dyYW0oKTsKKworICAgIG1CaW5kVW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCBtYXRyaXhM
b2NhdGlvbiwgIm1hdHJpeCIpOworICAgIG1CaW5kVW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCBj
b2xvckFMb2NhdGlvbiwgImNvbG9yX2EiKTsKKyAgICBtQmluZFVuaWZvcm1Mb2NhdGlvbihtUHJv
Z3JhbSwgY29sb3JCTG9jYXRpb24sICJjb2xvcl9iIik7CisgICAgbUJpbmRVbmlmb3JtTG9jYXRp
b24obVByb2dyYW0sIGFscGhhTG9jYXRpb24sICJhbHBoYSIpOworICAgIG1CaW5kVW5pZm9ybUxv
Y2F0aW9uKG1Qcm9ncmFtLCBtdWx0aXBsaWVyTG9jYXRpb24sICJtdWx0aXBsaWVyIik7CisgICAg
bUJpbmRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sIGNvbG9yQ0xvY2F0aW9uLCAiY29sb3JfYyIp
OworCisgICAgZ2xBdHRhY2hTaGFkZXIobVByb2dyYW0sIHZzKTsKKyAgICBnbERlbGV0ZVNoYWRl
cih2cyk7CisgICAgZ2xBdHRhY2hTaGFkZXIobVByb2dyYW0sIGZzKTsKKyAgICBnbERlbGV0ZVNo
YWRlcihmcyk7CisKKyAgICAvLyBMaW5rIHRoZSBtUHJvZ3JhbQorICAgIGdsTGlua1Byb2dyYW0o
bVByb2dyYW0pOworICAgIC8vIENoZWNrIHRoZSBsaW5rIHN0YXR1cworICAgIEdMaW50IGxpbmtl
ZCA9IDA7CisgICAgZ2xHZXRQcm9ncmFtaXYobVByb2dyYW0sIEdMX0xJTktfU1RBVFVTLCAmbGlu
a2VkKTsKKyAgICBBU1NFUlRfRVEoMSwgbGlua2VkKTsKKworICAgIGdsVXNlUHJvZ3JhbShtUHJv
Z3JhbSk7CisKKyAgICBzdGF0aWMgY29uc3QgZmxvYXQgY29sb3JBW10gPSB7CisgICAgICAgIDAu
MWYsIDAuMWYsIDAuMWYsIDAuMWYsIDAuMWYsIDAuMWYsIDAuMWYsIDAuMWYsCisgICAgfTsKKwor
ICAgIHN0YXRpYyBjb25zdCBmbG9hdCBjb2xvckNbXSA9IHsKKyAgICAgICAgMC4xZiwgMC4xZiwg
MC4xZiwgMC4xZiwgMC4xZiwgMC4xZiwgMC4xZiwgMC4xZiwgMC4xZiwgMC4xZiwgMC4xZiwgMC4x
ZiwKKyAgICAgICAgMC4xZiwgMC4xZiwgMC4xZiwgMC4xZiwgMC4xZiwgMC4xZiwgMC4xZiwgMC4x
ZiwgMC4xZiwgMC4xZiwgMC4xZiwgMC4xZiwKKyAgICB9OworCisgICAgc3RhdGljIGNvbnN0IGZs
b2F0IGlkZW50aXR5W10gPSB7CisgICAgICAgIDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAs
IDEsIDAsIDAsIDAsIDAsIDEsCisgICAgfTsKKworICAgIGdsVW5pZm9ybU1hdHJpeDRmdihtYXRy
aXhMb2NhdGlvbiwgMSwgZmFsc2UsIGlkZW50aXR5KTsKKyAgICBnbFVuaWZvcm0yZnYoY29sb3JB
TG9jYXRpb24sIDQsIGNvbG9yQSk7CisgICAgZ2xVbmlmb3JtNGYoY29sb3JCTG9jYXRpb24sIDAu
MmYsIDAuMmYsIDAuMmYsIDAuMmYpOworICAgIGdsVW5pZm9ybTFmKGFscGhhTG9jYXRpb24sIDAu
OGYpOworICAgIGdsVW5pZm9ybTRmKG11bHRpcGxpZXJMb2NhdGlvbiwgMC41ZiwgMC41ZiwgMC41
ZiwgMC41Zik7CisgICAgZ2xVbmlmb3JtM2Z2KGNvbG9yQ0xvY2F0aW9uLCA4LCBjb2xvckMpOwor
CisgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMCwgNik7CisKKyAgICBkcmF3UXVhZCht
UHJvZ3JhbSwgImFfcG9zaXRpb24iLCAwLjVmKTsKKworICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAw
LCAyMDQsIDIwNCwgMjA0LCAyMDQpOworfQorCisvLyBUZXN0IHRoYXQgdW51c2VkIHVuaWZvcm1z
IGRvbid0IGNvbmZsaWN0IHdoZW4gYm91bmQgdG8gdGhlIHNhbWUgbG9jYXRpb24KK1RFU1RfUChC
aW5kVW5pZm9ybUxvY2F0aW9uVGVzdCwgVW51c2VkVW5pZm9ybVVwZGF0ZSkKK3sKKyAgICBpZiAo
IWV4dGVuc2lvbkVuYWJsZWQoIkdMX0NIUk9NSVVNX2JpbmRfdW5pZm9ybV9sb2NhdGlvbiIpKQor
ICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBHTF9DSFJP
TUlVTV9iaW5kX3VuaWZvcm1fbG9jYXRpb24gaXMgbm90IGF2YWlsYWJsZS4iCisgICAgICAgICAg
ICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NF
UlRfTkUobnVsbHB0ciwgbUJpbmRVbmlmb3JtTG9jYXRpb24pOworCisgICAgLy8gY2xhbmctZm9y
bWF0IG9mZgorICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzU291cmNlID0gU0hBREVSX1NPVVJDRQor
ICAgICgKKyAgICAgICAgYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsKKyAgICAgICAgdm9pZCBt
YWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOwor
ICAgICAgICB9CisgICAgKTsKKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZzU291cmNlID0gU0hB
REVSX1NPVVJDRQorICAgICgKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAg
ICAgIHVuaWZvcm0gdmVjNCB1X2NvbG9yQTsKKyAgICAgICAgdW5pZm9ybSBmbG9hdCB1X2NvbG9y
VTsKKyAgICAgICAgdW5pZm9ybSB2ZWM0IHVfY29sb3JDOworICAgICAgICB2b2lkIG1haW4oKQor
ICAgICAgICB7CisgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB1X2NvbG9yQSArIHVfY29sb3JD
OworICAgICAgICB9CisgICAgKTsKKyAgICAvLyBjbGFuZy1mb3JtYXQgb24KKworICAgIGNvbnN0
IEdMaW50IGNvbG9yVUxvY2F0aW9uICAgICAgPSAxOworICAgIGNvbnN0IEdMaW50IG5vbmV4aXN0
aW5nTG9jYXRpb24gPSA1OworICAgIGNvbnN0IEdMaW50IHVuYm91bmRMb2NhdGlvbiAgICAgPSA2
OworCisgICAgR0x1aW50IHZzID0gQ29tcGlsZVNoYWRlcihHTF9WRVJURVhfU0hBREVSLCB2c1Nv
dXJjZSk7CisgICAgR0x1aW50IGZzID0gQ29tcGlsZVNoYWRlcihHTF9GUkFHTUVOVF9TSEFERVIs
IGZzU291cmNlKTsKKworICAgIG1Qcm9ncmFtID0gZ2xDcmVhdGVQcm9ncmFtKCk7CisgICAgbUJp
bmRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sIGNvbG9yVUxvY2F0aW9uLCAidV9jb2xvclUiKTsK
KyAgICAvLyBUaGUgbm9uLWV4aXN0aW5nIHVuaWZvcm0gc2hvdWxkIGJlaGF2ZSBsaWtlIGV4aXN0
aW5nLCBidXQgb3B0aW1pemVkIGF3YXkKKyAgICAvLyB1bmlmb3JtLgorICAgIG1CaW5kVW5pZm9y
bUxvY2F0aW9uKG1Qcm9ncmFtLCBub25leGlzdGluZ0xvY2F0aW9uLCAibm9uZXhpc3RpbmciKTsK
KyAgICAvLyBMZXQgQSBhbmQgQyBiZSBhc3NpZ25lZCBhdXRvbWF0aWMgbG9jYXRpb25zLgorICAg
IGdsQXR0YWNoU2hhZGVyKG1Qcm9ncmFtLCB2cyk7CisgICAgZ2xEZWxldGVTaGFkZXIodnMpOwor
ICAgIGdsQXR0YWNoU2hhZGVyKG1Qcm9ncmFtLCBmcyk7CisgICAgZ2xEZWxldGVTaGFkZXIoZnMp
OworICAgIGdsTGlua1Byb2dyYW0obVByb2dyYW0pOworICAgIEdMaW50IGxpbmtlZCA9IDA7Cisg
ICAgZ2xHZXRQcm9ncmFtaXYobVByb2dyYW0sIEdMX0xJTktfU1RBVFVTLCAmbGlua2VkKTsKKyAg
ICBBU1NFUlRfRVEoMSwgbGlua2VkKTsKKyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworCisg
ICAgLy8gTm8gZXJyb3JzIG9uIGJvdW5kIGxvY2F0aW9ucywgc2luY2UgY2FsbGVyIGRvZXMgbm90
IGtub3cKKyAgICAvLyBpZiB0aGUgZHJpdmVyIG9wdGltaXplcyB0aGVtIGF3YXkgb3Igbm90Lgor
ICAgIGdsVW5pZm9ybTFmKGNvbG9yVUxvY2F0aW9uLCAwLjI1Zik7CisgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7CisKKyAgICAvLyBObyBlcnJvcnMgb24gYm91bmQgbG9jYXRpb25zIG9mIG5hbWVz
IHRoYXQgZG8gbm90IGV4aXN0CisgICAgLy8gaW4gdGhlIHNoYWRlci4gT3RoZXJ3aXNlIGl0IHdv
dWxkIGJlIGluY29uc2lzdGVudCB3cnQgdGhlCisgICAgLy8gb3B0aW1pemF0aW9uIGNhc2UuCisg
ICAgZ2xVbmlmb3JtMWYobm9uZXhpc3RpbmdMb2NhdGlvbiwgMC4yNWYpOworICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworCisgICAgLy8gVGhlIGFib3ZlIGFyZSBlcXVhbCB0byB1cGRhdGluZyAt
MS4KKyAgICBnbFVuaWZvcm0xZigtMSwgMC4yNWYpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OworCisgICAgLy8gTm8gZXJyb3JzIHdoZW4gdXBkYXRpbmcgd2l0aCBvdGhlciB0eXBlIGVpdGhl
ci4KKyAgICAvLyBUaGUgdHlwZSBjYW4gbm90IGJlIGtub3duIHdpdGggdGhlIG5vbi1leGlzdGlu
ZyBjYXNlLgorICAgIGdsVW5pZm9ybTJmKGNvbG9yVUxvY2F0aW9uLCAwLjI1ZiwgMC4yNWYpOwor
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgIGdsVW5pZm9ybTJmKG5vbmV4aXN0aW5nTG9j
YXRpb24sIDAuMjVmLCAwLjI1Zik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgZ2xV
bmlmb3JtMmYoLTEsIDAuMjVmLCAwLjI1Zik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisK
KyAgICAvLyBFbnN1cmUgdGhhdCBkcml2ZXIgb3IgQU5HTEUgaGFzIG9wdGltaXplZCB0aGUgdmFy
aWFibGUKKyAgICAvLyBhd2F5IGFuZCB0aGUgdGVzdCB0ZXN0cyB3aGF0IGl0IGlzIHN1cHBvc2Vk
IHRvLgorICAgIEVYUEVDVF9FUSgtMSwgZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ1
X2NvbG9yVSIpKTsKKworICAgIC8vIFRoZSBib3VuZCBsb2NhdGlvbiBnZXRzIG1hcmtlZCBhcyB1
c2VkIGFuZCB0aGUgZHJpdmVyCisgICAgLy8gZG9lcyBub3QgYWxsb2NhdGUgb3RoZXIgdmFyaWFi
bGVzIHRvIHRoYXQgbG9jYXRpb24uCisgICAgRVhQRUNUX05FKGNvbG9yVUxvY2F0aW9uLCBnbEdl
dFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInVfY29sb3JBIikpOworICAgIEVYUEVDVF9ORShj
b2xvclVMb2NhdGlvbiwgZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ1X2NvbG9yQyIp
KTsKKyAgICBFWFBFQ1RfTkUobm9uZXhpc3RpbmdMb2NhdGlvbiwgZ2xHZXRVbmlmb3JtTG9jYXRp
b24obVByb2dyYW0sICJ1X2NvbG9yQSIpKTsKKyAgICBFWFBFQ1RfTkUobm9uZXhpc3RpbmdMb2Nh
dGlvbiwgZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ1X2NvbG9yQyIpKTsKKworICAg
IC8vIFVuaW50dWl0aXZlOiB3aGlsZSBzcGVjaWZ5aW5nIHZhbHVlIHdvcmtzLCBnZXR0aW5nIHRo
ZSB2YWx1ZSBkb2VzIG5vdC4KKyAgICBHTGZsb2F0IGdldFJlc3VsdCA9IDAuMGY7CisgICAgZ2xH
ZXRVbmlmb3JtZnYobVByb2dyYW0sIGNvbG9yVUxvY2F0aW9uLCAmZ2V0UmVzdWx0KTsKKyAgICBF
WFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIGdsR2V0VW5pZm9ybWZ2
KG1Qcm9ncmFtLCBub25leGlzdGluZ0xvY2F0aW9uLCAmZ2V0UmVzdWx0KTsKKyAgICBFWFBFQ1Rf
R0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIGdsR2V0VW5pZm9ybWZ2KG1Qcm9n
cmFtLCAtMSwgJmdldFJlc3VsdCk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKKworICAgIC8vIFVwZGF0aW5nIGFuIHVuYm91bmQsIG5vbi1leGlzdGluZyBsb2Nh
dGlvbiBzdGlsbCBjYXVzZXMKKyAgICAvLyBhbiBlcnJvci4KKyAgICBnbFVuaWZvcm0xZih1bmJv
dW5kTG9jYXRpb24sIDAuMjVmKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOworfQorCisvLyBUZXN0IGZvciBhIGJ1ZyB3aGVyZSB1c2luZyBhIHNhbXBsZXIgY2F1
c2VkIEdMIGVycm9yIGlmIHRoZSBtUHJvZ3JhbSBoYWQKKy8vIHVuaWZvcm1zIHRoYXQgd2VyZSBv
cHRpbWl6ZWQgYXdheSBieSB0aGUgZHJpdmVyLiBUaGlzIHdhcyBvbmx5IGEgcHJvYmxlbSB3aXRo
CisvLyBnbEJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTSBpbXBsZW1lbnRhdGlvbi4gVGhpcyBj
b3VsZCBiZSByZXByb2VkIGJ5CisvLyBiaW5kaW5nIHRoZSBzYW1wbGVyIHRvIGEgbG9jYXRpb24g
aGlnaGVyIHRoYW4gdGhlIGFtb3VudCBvZiBhY3RpdmUgdW5pZm9ybXMuCitURVNUX1AoQmluZFVu
aWZvcm1Mb2NhdGlvblRlc3QsIFVzZVNhbXBsZXJXaGVuVW51c2VkVW5pZm9ybXMpCit7CisgICAg
aWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9DSFJPTUlVTV9iaW5kX3VuaWZvcm1fbG9jYXRpb24i
KSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgR0xf
Q0hST01JVU1fYmluZF91bmlmb3JtX2xvY2F0aW9uIGlzIG5vdCBhdmFpbGFibGUuIgorICAgICAg
ICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
QVNTRVJUX05FKG51bGxwdHIsIG1CaW5kVW5pZm9ybUxvY2F0aW9uKTsKKworICAgIC8vIGNsYW5n
LWZvcm1hdCBvZmYKKyAgICBjb25zdCBzdGQ6OnN0cmluZyB2c1NvdXJjZSA9IFNIQURFUl9TT1VS
Q0UKKyAgICAoCisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGds
X1Bvc2l0aW9uID0gdmVjNCgwKTsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyBmc1NvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAoCisgICAgICAgIHVuaWZvcm0g
c2FtcGxlcjJEIHRleDsKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHRleCwgdmVjMigxKSk7CisgICAgICAgIH0KKyAg
ICApOworICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorCisgICAgY29uc3QgR0x1aW50IHRleExvY2F0
aW9uID0gNTQ7CisKKyAgICBHTHVpbnQgdnMgPSBDb21waWxlU2hhZGVyKEdMX1ZFUlRFWF9TSEFE
RVIsIHZzU291cmNlKTsKKyAgICBHTHVpbnQgZnMgPSBDb21waWxlU2hhZGVyKEdMX0ZSQUdNRU5U
X1NIQURFUiwgZnNTb3VyY2UpOworCisgICAgbVByb2dyYW0gPSBnbENyZWF0ZVByb2dyYW0oKTsK
KyAgICBtQmluZFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgdGV4TG9jYXRpb24sICJ0ZXgiKTsK
KworICAgIGdsQXR0YWNoU2hhZGVyKG1Qcm9ncmFtLCB2cyk7CisgICAgZ2xEZWxldGVTaGFkZXIo
dnMpOworICAgIGdsQXR0YWNoU2hhZGVyKG1Qcm9ncmFtLCBmcyk7CisgICAgZ2xEZWxldGVTaGFk
ZXIoZnMpOworCisgICAgZ2xMaW5rUHJvZ3JhbShtUHJvZ3JhbSk7CisKKyAgICBHTGludCBsaW5r
ZWQgPSAwOworICAgIGdsR2V0UHJvZ3JhbWl2KG1Qcm9ncmFtLCBHTF9MSU5LX1NUQVRVUywgJmxp
bmtlZCk7CisgICAgRVhQRUNUX05FKDAsIGxpbmtlZCk7CisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9n
cmFtKTsKKyAgICBnbFVuaWZvcm0xaSh0ZXhMb2NhdGlvbiwgMCk7CisgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7Cit9CisKKy8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9u
cyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZQor
Ly8gdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgorQU5HTEVfSU5TVEFOVElBVEVfVEVTVChC
aW5kVW5pZm9ybUxvY2F0aW9uVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDko
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCisgICAgICAgICAgICAgICAg
ICAgICAgIEVTMl9EM0QxMV9GTDlfMygpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BF
TkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpKTsKKworfSAgLy8g
bmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVz
dHMvQmxlbmRNaW5NYXhUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQmxlbmRNaW5NYXhUZXN0LmNwcAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQmxlbmRNaW5N
YXhUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI1NSBAQAorLy8KKy8vIENvcHly
aWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKwor
I2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBhbmds
ZTsKKworY2xhc3MgQmxlbmRNaW5NYXhUZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90
ZWN0ZWQ6CisgICAgQmxlbmRNaW5NYXhUZXN0KCkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dp
ZHRoKDEyOCk7CisgICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOworICAgICAgICBzZXRDb25m
aWdSZWRCaXRzKDgpOworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNl
dENvbmZpZ0JsdWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAg
ICAgIHNldENvbmZpZ0RlcHRoQml0cygyNCk7CisKKyAgICAgICAgbVByb2dyYW0gPSAwOworICAg
ICAgICBtQ29sb3JMb2NhdGlvbiA9IC0xOworICAgICAgICBtRnJhbWVidWZmZXIgPSAwOworICAg
ICAgICBtQ29sb3JSZW5kZXJidWZmZXIgPSAwOworICAgIH0KKworICAgIHN0cnVjdCBDb2xvcgor
ICAgIHsKKyAgICAgICAgZmxvYXQgdmFsdWVzWzRdOworICAgIH07CisKKyAgICBzdGF0aWMgZmxv
YXQgZ2V0RXhwZWN0ZWQoYm9vbCBibGVuZE1pbiwgZmxvYXQgY3VyQ29sb3IsIGZsb2F0IHByZXZD
b2xvcikKKyAgICB7CisgICAgICAgIHJldHVybiBibGVuZE1pbiA/IHN0ZDo6bWluKGN1ckNvbG9y
LCBwcmV2Q29sb3IpIDogc3RkOjptYXgoY3VyQ29sb3IsIHByZXZDb2xvcik7CisgICAgfQorCisg
ICAgdm9pZCBydW5UZXN0KEdMZW51bSBjb2xvckZvcm1hdCwgR0xlbnVtIHR5cGUpCisgICAgewor
ICAgICAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFleHRlbnNpb25FbmFi
bGVkKCJHTF9FWFRfYmxlbmRfbWlubWF4IikpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0ZDo6
Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgRVMzIG9yIEdMX0VYVF9ibGVuZF9taW5tYXgg
aXMgbm90IGF2YWlsYWJsZS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogZmlndXJlIG91dCB3aHkgdGhp
cyBmYWlscworICAgICAgICBpZiAoSXNJbnRlbCgpICYmIEdldFBhcmFtKCkgPT0gRVMyX09QRU5H
TCgpKQorICAgICAgICB7CisgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBv
biBPcGVuR0wgSW50ZWwgZHVlIHRvIGZsYWt5bmVzcy4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFNldFVwRnJhbWVidWZmZXIoY29sb3JG
b3JtYXQpOworCisgICAgICAgIGludCBtaW5WYWx1ZSA9IDA7CisgICAgICAgIGludCBtYXhWYWx1
ZSA9IDE7CisgICAgICAgIGlmICh0eXBlID09IEdMX0ZMT0FUKQorICAgICAgICB7CisgICAgICAg
ICAgICBtaW5WYWx1ZSA9IC0xMDI0OworICAgICAgICAgICAgbWF4VmFsdWUgPSAxMDI0OworICAg
ICAgICB9CisKKyAgICAgICAgY29uc3Qgc2l6ZV90IGNvbG9yQ291bnQgPSAxMjg7CisgICAgICAg
IENvbG9yIGNvbG9yc1tjb2xvckNvdW50XTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBjb2xvckNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGog
PSAwOyBqIDwgNDsgaisrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbG9yc1tp
XS52YWx1ZXNbal0gPQorICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4obWlu
VmFsdWUgKyAocmFuZCgpICUgKG1heFZhbHVlIC0gbWluVmFsdWUpKSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICBmbG9hdCBwcmV2Q29sb3JbNF07CisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgY29sb3JDb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAg
ICBjb25zdCBDb2xvciAmY29sb3IgPSBjb2xvcnNbaV07CisgICAgICAgICAgICBnbFVzZVByb2dy
YW0obVByb2dyYW0pOworICAgICAgICAgICAgZ2xVbmlmb3JtNGYobUNvbG9yTG9jYXRpb24sIGNv
bG9yLnZhbHVlc1swXSwgY29sb3IudmFsdWVzWzFdLCBjb2xvci52YWx1ZXNbMl0sIGNvbG9yLnZh
bHVlc1szXSk7CisKKyAgICAgICAgICAgIGJvb2wgYmxlbmRNaW4gPSAocmFuZCgpICUgMiA9PSAw
KTsKKyAgICAgICAgICAgIGdsQmxlbmRFcXVhdGlvbihibGVuZE1pbiA/IEdMX01JTiA6IEdMX01B
WCk7CisKKyAgICAgICAgICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAiYVBvc2l0aW9uIiwgMC41Zik7
CisKKyAgICAgICAgICAgIGZsb2F0IHBpeGVsWzRdOworICAgICAgICAgICAgaWYgKHR5cGUgPT0g
R0xfVU5TSUdORURfQllURSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBHTHVieXRl
IHVieXRlUGl4ZWxbNF07CisgICAgICAgICAgICAgICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIDEsIDEs
IEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHVieXRlUGl4ZWwpOworICAgICAgICAgICAgICAg
IGZvciAoc2l6ZV90IGNvbXBvbmVudElkeCA9IDA7IGNvbXBvbmVudElkeCA8IEFycmF5U2l6ZShw
aXhlbCk7IGNvbXBvbmVudElkeCsrKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgcGl4ZWxbY29tcG9uZW50SWR4XSA9IHVieXRlUGl4ZWxbY29tcG9uZW50SWR4XSAvIDI1
NS4wZjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
IGlmICh0eXBlID09IEdMX0ZMT0FUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGds
UmVhZFBpeGVscygwLCAwLCAxLCAxLCBHTF9SR0JBLCBHTF9GTE9BVCwgcGl4ZWwpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IEZBSUwoKSA8PCAiVW5leHBlY3RlZCBwaXhlbCB0eXBlIjsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKGkgPiAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnN0
IGZsb2F0IGVycm9yUmFuZ2UgPSAxLjBmIC8gMjU1LjBmOworICAgICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGNvbXBvbmVudElkeCA9IDA7IGNvbXBvbmVudElkeCA8IEFycmF5U2l6ZShwaXhlbCk7
IGNvbXBvbmVudElkeCsrKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
RVhQRUNUX05FQVIoCisgICAgICAgICAgICAgICAgICAgICAgICBnZXRFeHBlY3RlZChibGVuZE1p
biwgY29sb3IudmFsdWVzW2NvbXBvbmVudElkeF0sIHByZXZDb2xvcltjb21wb25lbnRJZHhdKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVsW2NvbXBvbmVudElkeF0sIGVycm9yUmFuZ2Up
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbWVtY3B5
KHByZXZDb2xvciwgcGl4ZWwsIHNpemVvZihwaXhlbCkpOworICAgICAgICB9CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIFNldFVwKCkKKyAgICB7CisgICAgICAgIEFOR0xFVGVzdDo6U2V0VXAo
KTsKKworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB0ZXN0VmVydGV4U2hhZGVyU291cmNlID0g
U0hBREVSX1NPVVJDRQorICAgICAgICAoCisgICAgICAgICAgICBhdHRyaWJ1dGUgaGlnaHAgdmVj
NCBhUG9zaXRpb247CisKKyAgICAgICAgICAgIHZvaWQgbWFpbih2b2lkKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gYVBvc2l0aW9uOworICAgICAgICAgICAg
fQorICAgICAgICApOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHRlc3RGcmFnbWVudFNo
YWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAgdW5pZm9y
bSBoaWdocCB2ZWM0IGNvbG9yOworICAgICAgICAgICAgdm9pZCBtYWluKHZvaWQpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gY29sb3I7CisgICAgICAgICAg
ICB9CisgICAgICAgICk7CisKKyAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh0ZXN0
VmVydGV4U2hhZGVyU291cmNlLCB0ZXN0RnJhZ21lbnRTaGFkZXJTb3VyY2UpOworICAgICAgICBp
ZiAobVByb2dyYW0gPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgRkFJTCgpIDw8ICJzaGFk
ZXIgY29tcGlsYXRpb24gZmFpbGVkLiI7CisgICAgICAgIH0KKworICAgICAgICBtQ29sb3JMb2Nh
dGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAiY29sb3IiKTsKKworICAgICAg
ICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworCisgICAgICAgIGdsQ2xlYXJDb2xvcigwLCAwLCAw
LCAwKTsKKyAgICAgICAgZ2xDbGVhckRlcHRoZigwLjApOworICAgICAgICBnbENsZWFyKEdMX0NP
TE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUKTsKKworICAgICAgICBnbEVuYWJs
ZShHTF9CTEVORCk7CisgICAgICAgIGdsRGlzYWJsZShHTF9ERVBUSF9URVNUKTsKKyAgICB9CisK
KyAgICB2b2lkIFNldFVwRnJhbWVidWZmZXIoR0xlbnVtIGNvbG9yRm9ybWF0KQorICAgIHsKKyAg
ICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1GcmFtZWJ1ZmZlcik7CisgICAgICAgIGdsQmlu
ZEZyYW1lYnVmZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVIsIG1GcmFtZWJ1ZmZlcik7CisgICAgICAg
IGdsQmluZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJBTUVCVUZGRVIsIG1GcmFtZWJ1ZmZlcik7CisK
KyAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZtQ29sb3JSZW5kZXJidWZmZXIpOworICAg
ICAgICBnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtQ29sb3JSZW5kZXJidWZm
ZXIpOworICAgICAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBjb2xv
ckZvcm1hdCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOworICAgICAgICBn
bEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FU
VEFDSE1FTlQwLCBHTF9SRU5ERVJCVUZGRVIsIG1Db2xvclJlbmRlcmJ1ZmZlcik7CisKKyAgICAg
ICAgZ2xDbGVhckNvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYpOworICAgICAgICBnbENsZWFy
KEdMX0NPTE9SX0JVRkZFUl9CSVQpOworCisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwor
ICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCisgICAgeworICAgICAgICBnbERl
bGV0ZVByb2dyYW0obVByb2dyYW0pOworICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAm
bUZyYW1lYnVmZmVyKTsKKyAgICAgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZtQ29sb3JS
ZW5kZXJidWZmZXIpOworCisgICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKKyAgICB9CisK
KyAgICBHTHVpbnQgbVByb2dyYW07CisgICAgR0xpbnQgbUNvbG9yTG9jYXRpb247CisKKyAgICBH
THVpbnQgbUZyYW1lYnVmZmVyOworICAgIEdMdWludCBtQ29sb3JSZW5kZXJidWZmZXI7Cit9Owor
CitURVNUX1AoQmxlbmRNaW5NYXhUZXN0LCBSR0JBOCkKK3sKKyAgICBydW5UZXN0KEdMX1JHQkE4
LCBHTF9VTlNJR05FRF9CWVRFKTsKK30KKworVEVTVF9QKEJsZW5kTWluTWF4VGVzdCwgUkdCQTMy
RikKK3sKKyAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzIHx8ICFleHRlbnNpb25F
bmFibGVkKCJHTF9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0IikpCisgICAgeworICAgICAgICBzdGQ6
OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEVTMyBhbmQgR0xfRVhUX2NvbG9yX2J1ZmZl
cl9mbG9hdCBhcmUgbm90IGF2YWlsYWJsZS4iCisgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVu
ZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBGaWd1
cmUgb3V0IHdoeSB0aGlzIGlzIGJyb2tlbiBvbiBJbnRlbAorICAgIGlmIChJc0ludGVsKCkgJiYg
KEdldFBhcmFtKCkgPT0gRVMyX0QzRDExKCkgfHwgR2V0UGFyYW0oKSA9PSBFUzJfRDNEOSgpKSkK
KyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIE9wZW5H
TC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFRPRE8g
KGJ1ZyAxMjg0KTogSW52ZXN0aWdhdGUgUkdCQTMyZiBEM0QgU0RLIExheWVycyBtZXNzYWdlcyBv
biBEM0QxMV9GTDlfMworICAgIGlmIChJc0QzRDExX0ZMOTMoKSkKKyAgICB7CisgICAgICAgIHN0
ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEZlYXR1cmUgTGV2ZWwgOV8zLiIgPDwgc3RkOjpl
bmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcnVuVGVzdChHTF9SR0JBMzJGLCBH
TF9GTE9BVCk7Cit9CisKK1RFU1RfUChCbGVuZE1pbk1heFRlc3QsIFJHQkExNkYpCit7CisgICAg
aWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAmJiAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xf
RVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0IikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQg
PDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEVTMyBvciBHTF9FWFRfY29sb3JfYnVmZmVyX2hhbGZf
ZmxvYXQgaXMgbm90IGF2YWlsYWJsZS4iCisgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBmaWd1cmUg
b3V0IHdoeSB0aGlzIGZhaWxzCisgICAgaWYgKElzSW50ZWwoKSAmJiAoR2V0UGFyYW0oKSA9PSBF
UzJfRDNEMTEoKSB8fCBHZXRQYXJhbSgpID09IEVTMl9EM0Q5KCkpKQorICAgIHsKKyAgICAgICAg
c3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgZHVlIHRvIGZhaWx1cmVzLiIgPDwg
c3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcnVuVGVzdChHTF9SR0JB
MTZGLCBHTF9GTE9BVCk7Cit9CisKKy8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1
cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0
aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCitBTkdMRV9JTlNUQU5USUFURV9URVNU
KEJsZW5kTWluTWF4VGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCisgICAgICAgICAgICAgICAgICAgICAg
IEVTM19EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzMoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAg
ICAgICBFUzNfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygp
LAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMRVMoKSk7CkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQmxpdEZyYW1lYnVmZmVyQU5HTEVU
ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
Z2xfdGVzdHMvQmxpdEZyYW1lYnVmZmVyQU5HTEVUZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQmxpdEZyYW1lYnVmZmVy
QU5HTEVUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwNzAgQEAKKy8vCisvLyBD
b3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8v
CisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorCisjaW5jbHVkZSAidGVzdF91
dGlscy9nbF9yYWlpLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKworY2xhc3MgQmxpdEZy
YW1lYnVmZmVyQU5HTEVUZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6Cisg
ICAgQmxpdEZyYW1lYnVmZmVyQU5HTEVUZXN0KCkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dp
ZHRoKDI1Nik7CisgICAgICAgIHNldFdpbmRvd0hlaWdodCgyNTYpOworICAgICAgICBzZXRDb25m
aWdSZWRCaXRzKDgpOworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNl
dENvbmZpZ0JsdWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAg
ICAgIHNldENvbmZpZ0RlcHRoQml0cygyNCk7CisgICAgICAgIHNldENvbmZpZ1N0ZW5jaWxCaXRz
KDgpOworCisgICAgICAgIG1DaGVja2VyUHJvZ3JhbSA9IDA7CisgICAgICAgIG1CbHVlUHJvZ3Jh
bSA9IDA7CisKKyAgICAgICAgbU9yaWdpbmFsRkJPID0gMDsKKworICAgICAgICBtVXNlckZCTyA9
IDA7CisgICAgICAgIG1Vc2VyQ29sb3JCdWZmZXIgPSAwOworICAgICAgICBtVXNlckRlcHRoU3Rl
bmNpbEJ1ZmZlciA9IDA7CisKKyAgICAgICAgbVNtYWxsRkJPID0gMDsKKyAgICAgICAgbVNtYWxs
Q29sb3JCdWZmZXIgPSAwOworICAgICAgICBtU21hbGxEZXB0aFN0ZW5jaWxCdWZmZXIgPSAwOwor
CisgICAgICAgIG1Db2xvck9ubHlGQk8gPSAwOworICAgICAgICBtQ29sb3JPbmx5Q29sb3JCdWZm
ZXIgPSAwOworCisgICAgICAgIG1EaWZmRm9ybWF0RkJPID0gMDsKKyAgICAgICAgbURpZmZGb3Jt
YXRDb2xvckJ1ZmZlciA9IDA7CisKKyAgICAgICAgbURpZmZTaXplRkJPID0gMDsKKyAgICAgICAg
bURpZmZTaXplQ29sb3JCdWZmZXIgPSAwOworCisgICAgICAgIG1NUlRGQk8gPSAwOworICAgICAg
ICBtTVJUQ29sb3JCdWZmZXIwID0gMDsKKyAgICAgICAgbU1SVENvbG9yQnVmZmVyMSA9IDA7CisK
KyAgICAgICAgbVJHQkFDb2xvcmJ1ZmZlciA9IDA7CisgICAgICAgIG1SR0JBRkJPID0gMDsKKwor
ICAgICAgICBtQkdSQU11bHRpc2FtcGxlZFJlbmRlcmJ1ZmZlciA9IDA7CisgICAgICAgIG1CR1JB
TXVsdGlzYW1wbGVkRkJPID0gMDsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQor
ICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOworCisgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nIHBhc3N0aHJvdWdoVlMgPSBTSEFERVJfU09VUkNFCisgICAgICAgICgKKyAgICAgICAg
ICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKKyAgICAgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IHBv
c2l0aW9uOworICAgICAgICAgICAgdmFyeWluZyB2ZWM0IHBvczsKKworICAgICAgICAgICAgdm9p
ZCBtYWluKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHBv
c2l0aW9uOworICAgICAgICAgICAgICAgIHBvcyA9IHBvc2l0aW9uOworICAgICAgICAgICAgfQor
ICAgICAgICApOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGNoZWNrZXJlZEZTID0gU0hB
REVSX1NPVVJDRQorICAgICAgICAoCisgICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7
CisgICAgICAgICAgICB2YXJ5aW5nIHZlYzQgcG9zOworCisgICAgICAgICAgICB2b2lkIG1haW4o
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChwb3MueCAqIHBvcy55ID4gMC4w
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0g
dmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBnbF9GcmFn
Q29sb3IgPSB2ZWM0KDAuMCwgMS4wLCAwLjAsIDEuMCk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGJsdWVG
UyA9IFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hw
IGZsb2F0OworICAgICAgICAgICAgdmFyeWluZyB2ZWM0IHBvczsKKworICAgICAgICAgICAgdm9p
ZCBtYWluKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2
ZWM0KDAuMCwgMC4wLCAxLjAsIDEuMCk7CisgICAgICAgICAgICB9CisgICAgICAgICk7CisKKyAg
ICAgICAgbUNoZWNrZXJQcm9ncmFtID0gQ29tcGlsZVByb2dyYW0ocGFzc3Rocm91Z2hWUywgY2hl
Y2tlcmVkRlMpOworICAgICAgICBtQmx1ZVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbShwYXNzdGhy
b3VnaFZTLCBibHVlRlMpOworICAgICAgICBpZiAobUNoZWNrZXJQcm9ncmFtID09IDAgfHwgbUJs
dWVQcm9ncmFtID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIEZBSUwoKSA8PCAic2hhZGVy
IGNvbXBpbGF0aW9uIGZhaWxlZC4iOworICAgICAgICB9CisKKyAgICAgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7CisKKyAgICAgICAgR0xpbnQgb3JpZ2luYWxGQk87CisgICAgICAgIGdsR2V0SW50
ZWdlcnYoR0xfRlJBTUVCVUZGRVJfQklORElORywgJm9yaWdpbmFsRkJPKTsKKyAgICAgICAgaWYg
KG9yaWdpbmFsRkJPID49IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIG1PcmlnaW5hbEZCTyA9
IChHTHVpbnQpb3JpZ2luYWxGQk87CisgICAgICAgIH0KKworICAgICAgICBHTGVudW0gZm9ybWF0
ID0gR0xfQkdSQThfRVhUOworICAgICAgICAKKyAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwg
Jm1Vc2VyRkJPKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1V
c2VyRkJPKTsKKyAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbVVzZXJDb2xvckJ1ZmZlcik7Cisg
ICAgICAgIGdsR2VuUmVuZGVyYnVmZmVycygxLCAmbVVzZXJEZXB0aFN0ZW5jaWxCdWZmZXIpOwor
ICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1Vc2VyQ29sb3JCdWZmZXIpOwor
ICAgICAgICBnbFRleFN0b3JhZ2UyREVYVChHTF9URVhUVVJFXzJELCAxLCBmb3JtYXQsIGdldFdp
bmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpKTsKKyAgICAgICAgZ2xGcmFtZWJ1ZmZlclRl
eHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVf
MkQsIG1Vc2VyQ29sb3JCdWZmZXIsIDApOworICAgICAgICBnbEJpbmRSZW5kZXJidWZmZXIoR0xf
UkVOREVSQlVGRkVSLCBtVXNlckRlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgICAgIGdsUmVuZGVy
YnVmZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZGRVIsIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTLCBn
ZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7CisgICAgICAgIGdsRnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0RFUFRIX0FUVEFDSE1FTlQsIEdMX1JF
TkRFUkJVRkZFUiwgbVVzZXJEZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICBnbEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQsIEdM
X1JFTkRFUkJVRkZFUiwgbVVzZXJEZXB0aFN0ZW5jaWxCdWZmZXIpOworCisgICAgICAgIEFTU0VS
VF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0
YXR1cyhHTF9GUkFNRUJVRkZFUikpOworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKwor
ICAgICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbVNtYWxsRkJPKTsKKyAgICAgICAgZ2xCaW5k
RnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1TbWFsbEZCTyk7CisgICAgICAgIGdsR2VuVGV4
dHVyZXMoMSwgJm1TbWFsbENvbG9yQnVmZmVyKTsKKyAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJz
KDEsICZtU21hbGxEZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICBnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQsIG1TbWFsbENvbG9yQnVmZmVyKTsKKyAgICAgICAgZ2xUZXhTdG9yYWdlMkRF
WFQoR0xfVEVYVFVSRV8yRCwgMSwgZm9ybWF0LCBnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2lu
ZG93SGVpZ2h0KCkgLyAyKTsKKyAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFN
RUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1TbWFsbENvbG9y
QnVmZmVyLCAwKTsKKyAgICAgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwg
bVNtYWxsRGVwdGhTdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdl
KEdMX1JFTkRFUkJVRkZFUiwgR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVMsIGdldFdpbmRvd1dpZHRo
KCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIpOworICAgICAgICBnbEZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9ERVBUSF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJC
VUZGRVIsIG1TbWFsbERlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgICAgIGdsRnJhbWVidWZmZXJS
ZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX1NURU5DSUxfQVRUQUNITUVOVCwgR0xfUkVO
REVSQlVGRkVSLCBtU21hbGxEZXB0aFN0ZW5jaWxCdWZmZXIpOworCisgICAgICAgIEFTU0VSVF9H
TEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyhHTF9GUkFNRUJVRkZFUikpOworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAg
ICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbUNvbG9yT25seUZCTyk7CisgICAgICAgIGdsQmlu
ZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtQ29sb3JPbmx5RkJPKTsKKyAgICAgICAgZ2xH
ZW5UZXh0dXJlcygxLCAmbUNvbG9yT25seUNvbG9yQnVmZmVyKTsKKyAgICAgICAgZ2xCaW5kVGV4
dHVyZShHTF9URVhUVVJFXzJELCBtQ29sb3JPbmx5Q29sb3JCdWZmZXIpOworICAgICAgICBnbFRl
eFN0b3JhZ2UyREVYVChHTF9URVhUVVJFXzJELCAxLCBmb3JtYXQsIGdldFdpbmRvd1dpZHRoKCks
IGdldFdpbmRvd0hlaWdodCgpKTsKKyAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9G
UkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1Db2xvck9u
bHlDb2xvckJ1ZmZlciwgMCk7CisKKyAgICAgICAgQVNTRVJUX0dMRU5VTV9FUShHTF9GUkFNRUJV
RkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7
CisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgICAgIGdsR2VuRnJhbWVidWZm
ZXJzKDEsICZtRGlmZkZvcm1hdEZCTyk7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZS
QU1FQlVGRkVSLCBtRGlmZkZvcm1hdEZCTyk7CisgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1E
aWZmRm9ybWF0Q29sb3JCdWZmZXIpOworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVf
MkQsIG1EaWZmRm9ybWF0Q29sb3JCdWZmZXIpOworICAgICAgICBnbFRleFN0b3JhZ2UyREVYVChH
TF9URVhUVVJFXzJELCAxLCBHTF9SR0I1NjUsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hl
aWdodCgpKTsKKyAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwg
R0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1EaWZmRm9ybWF0Q29sb3JCdWZm
ZXIsIDApOworCisgICAgICAgIEFTU0VSVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09NUExF
VEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOworICAgICAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbURp
ZmZTaXplRkJPKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1E
aWZmU2l6ZUZCTyk7CisgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1EaWZmU2l6ZUNvbG9yQnVm
ZmVyKTsKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtRGlmZlNpemVDb2xv
ckJ1ZmZlcik7CisgICAgICAgIGdsVGV4U3RvcmFnZTJERVhUKEdMX1RFWFRVUkVfMkQsIDEsIGZv
cm1hdCwgZ2V0V2luZG93V2lkdGgoKSoyLCBnZXRXaW5kb3dIZWlnaHQoKSoyKTsKKyAgICAgICAg
Z2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVO
VDAsIEdMX1RFWFRVUkVfMkQsIG1EaWZmU2l6ZUNvbG9yQnVmZmVyLCAwKTsKKworICAgICAgICBB
U1NFUlRfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFLCBnbENoZWNrRnJhbWVidWZm
ZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
CisKKyAgICAgICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKSkK
KyAgICAgICAgeworICAgICAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1NUlRGQk8pOwor
ICAgICAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1NUlRGQk8pOwor
ICAgICAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbU1SVENvbG9yQnVmZmVyMCk7CisgICAgICAg
ICAgICBnbEdlblRleHR1cmVzKDEsICZtTVJUQ29sb3JCdWZmZXIxKTsKKyAgICAgICAgICAgIGds
QmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbU1SVENvbG9yQnVmZmVyMCk7CisgICAgICAgICAg
ICBnbFRleFN0b3JhZ2UyREVYVChHTF9URVhUVVJFXzJELCAxLCBmb3JtYXQsIGdldFdpbmRvd1dp
ZHRoKCksIGdldFdpbmRvd0hlaWdodCgpKTsKKyAgICAgICAgICAgIGdsRnJhbWVidWZmZXJUZXh0
dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwX0VYVCwgR0xfVEVYVFVS
RV8yRCwgbU1SVENvbG9yQnVmZmVyMCwgMCk7CisgICAgICAgICAgICBnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQsIG1NUlRDb2xvckJ1ZmZlcjEpOworICAgICAgICAgICAgZ2xUZXhTdG9yYWdl
MkRFWFQoR0xfVEVYVFVSRV8yRCwgMSwgZm9ybWF0LCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5k
b3dIZWlnaHQoKSk7CisgICAgICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1F
QlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMV9FWFQsIEdMX1RFWFRVUkVfMkQsIG1NUlRDb2xv
ckJ1ZmZlcjEsIDApOworCisgICAgICAgICAgICBBU1NFUlRfR0xFTlVNX0VRKEdMX0ZSQU1FQlVG
RkVSX0NPTVBMRVRFLCBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsK
KyAgICAgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKGV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIikp
CisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRlc3QgYmxpdCBiZXR3ZWVuIFJHQkEgYW5kIG11
bHRpc2FtcGxlZCBCR1JBCisgICAgICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtUkdCQUNvbG9y
YnVmZmVyKTsKKyAgICAgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVJHQkFD
b2xvcmJ1ZmZlcik7CisgICAgICAgICAgICBnbFRleFN0b3JhZ2UyREVYVChHTF9URVhUVVJFXzJE
LCAxLCBHTF9SR0JBOF9PRVMsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpKTsK
KworICAgICAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1SR0JBRkJPKTsKKyAgICAgICAg
ICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtUkdCQUZCTyk7CisgICAgICAg
ICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRB
Q0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbVJHQkFDb2xvcmJ1ZmZlciwgMCk7CisKKyAgICAgICAg
ICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgICAgICAgICAgQVNTRVJUX0dMRU5VTV9FUShH
TF9GUkFNRUJVRkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1F
QlVGRkVSKSk7CisKKyAgICAgICAgICAgIGdsR2VuUmVuZGVyYnVmZmVycygxLCAmbUJHUkFNdWx0
aXNhbXBsZWRSZW5kZXJidWZmZXIpOworICAgICAgICAgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdM
X1JFTkRFUkJVRkZFUiwgbUJHUkFNdWx0aXNhbXBsZWRSZW5kZXJidWZmZXIpOworICAgICAgICAg
ICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHTF9SRU5ERVJCVUZGRVIs
IDEsIEdMX0JHUkE4X0VYVCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwor
CisgICAgICAgICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbUJHUkFNdWx0aXNhbXBsZWRGQk8p
OworICAgICAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1CR1JBTXVs
dGlzYW1wbGVkRkJPKTsKKyAgICAgICAgICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xf
RlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9SRU5ERVJCVUZGRVIsIG1CR1JB
TXVsdGlzYW1wbGVkUmVuZGVyYnVmZmVyKTsKKworICAgICAgICAgICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7CisgICAgICAgICAgICBBU1NFUlRfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NPTVBM
RVRFLCBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKKyAgICAgICAg
fQorCisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtT3JpZ2luYWxG
Qk8pOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCisgICAgeworICAgICAg
ICBnbERlbGV0ZVByb2dyYW0obUNoZWNrZXJQcm9ncmFtKTsKKyAgICAgICAgZ2xEZWxldGVQcm9n
cmFtKG1CbHVlUHJvZ3JhbSk7CisKKyAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1V
c2VyRkJPKTsKKyAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbVVzZXJDb2xvckJ1ZmZlcik7
CisgICAgICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmbVVzZXJEZXB0aFN0ZW5jaWxCdWZm
ZXIpOworCisgICAgICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZtU21hbGxGQk8pOworICAg
ICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtU21hbGxDb2xvckJ1ZmZlcik7CisgICAgICAgIGds
RGVsZXRlUmVuZGVyYnVmZmVycygxLCAmbVNtYWxsRGVwdGhTdGVuY2lsQnVmZmVyKTsKKworICAg
ICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbUNvbG9yT25seUZCTyk7CisgICAgICAgIGds
RGVsZXRlVGV4dHVyZXMoMSwgJm1TbWFsbERlcHRoU3RlbmNpbEJ1ZmZlcik7CisKKyAgICAgICAg
Z2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1EaWZmRm9ybWF0RkJPKTsKKyAgICAgICAgZ2xEZWxl
dGVUZXh0dXJlcygxLCAmbURpZmZGb3JtYXRDb2xvckJ1ZmZlcik7CisKKyAgICAgICAgZ2xEZWxl
dGVGcmFtZWJ1ZmZlcnMoMSwgJm1EaWZmU2l6ZUZCTyk7CisgICAgICAgIGdsRGVsZXRlVGV4dHVy
ZXMoMSwgJm1EaWZmU2l6ZUNvbG9yQnVmZmVyKTsKKworICAgICAgICBpZiAoZXh0ZW5zaW9uRW5h
YmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVycyIpKQorICAgICAgICB7CisgICAgICAgICAgICBnbERl
bGV0ZUZyYW1lYnVmZmVycygxLCAmbU1SVEZCTyk7CisgICAgICAgICAgICBnbERlbGV0ZVRleHR1
cmVzKDEsICZtTVJUQ29sb3JCdWZmZXIwKTsKKyAgICAgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMo
MSwgJm1NUlRDb2xvckJ1ZmZlcjEpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1SR0JBQ29s
b3JidWZmZXIgIT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygx
LCAmbVJHQkFDb2xvcmJ1ZmZlcik7CisgICAgICAgIH0KKworICAgICAgICBpZiAobVJHQkFGQk8g
IT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1C
R1JBTXVsdGlzYW1wbGVkRkJPKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtQkdSQU11bHRp
c2FtcGxlZFJlbmRlcmJ1ZmZlciAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICBnbERlbGV0
ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1CR1JBTXVsdGlzYW1wbGVkUmVuZGVyYnVmZmVyKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChtQkdSQU11bHRpc2FtcGxlZEZCTyAhPSAwKQorICAgICAgICB7
CisgICAgICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbUJHUkFNdWx0aXNhbXBsZWRG
Qk8pOworICAgICAgICB9CisKKyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOworICAgIH0K
KworICAgIEdMdWludCBtQ2hlY2tlclByb2dyYW07CisgICAgR0x1aW50IG1CbHVlUHJvZ3JhbTsK
KworICAgIEdMdWludCBtT3JpZ2luYWxGQk87CisKKyAgICBHTHVpbnQgbVVzZXJGQk87CisgICAg
R0x1aW50IG1Vc2VyQ29sb3JCdWZmZXI7CisgICAgR0x1aW50IG1Vc2VyRGVwdGhTdGVuY2lsQnVm
ZmVyOworCisgICAgR0x1aW50IG1TbWFsbEZCTzsKKyAgICBHTHVpbnQgbVNtYWxsQ29sb3JCdWZm
ZXI7CisgICAgR0x1aW50IG1TbWFsbERlcHRoU3RlbmNpbEJ1ZmZlcjsKKworICAgIEdMdWludCBt
Q29sb3JPbmx5RkJPOworICAgIEdMdWludCBtQ29sb3JPbmx5Q29sb3JCdWZmZXI7CisKKyAgICBH
THVpbnQgbURpZmZGb3JtYXRGQk87CisgICAgR0x1aW50IG1EaWZmRm9ybWF0Q29sb3JCdWZmZXI7
CisKKyAgICBHTHVpbnQgbURpZmZTaXplRkJPOworICAgIEdMdWludCBtRGlmZlNpemVDb2xvckJ1
ZmZlcjsKKworICAgIEdMdWludCBtTVJURkJPOworICAgIEdMdWludCBtTVJUQ29sb3JCdWZmZXIw
OworICAgIEdMdWludCBtTVJUQ29sb3JCdWZmZXIxOworCisgICAgR0x1aW50IG1SR0JBQ29sb3Ji
dWZmZXI7CisgICAgR0x1aW50IG1SR0JBRkJPOworCisgICAgR0x1aW50IG1CR1JBTXVsdGlzYW1w
bGVkUmVuZGVyYnVmZmVyOworICAgIEdMdWludCBtQkdSQU11bHRpc2FtcGxlZEZCTzsKK307CisK
Ky8vIERyYXcgdG8gdXNlci1jcmVhdGVkIGZyYW1lYnVmZmVyLCBibGl0IHdob2xlLWJ1ZmZlciBj
b2xvciB0byBvcmlnaW5hbCBmcmFtZWJ1ZmZlci4KK1RFU1RfUChCbGl0RnJhbWVidWZmZXJBTkdM
RVRlc3QsIEJsaXRDb2xvclRvRGVmYXVsdCkKK3sKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9G
UkFNRUJVRkZFUiwgbVVzZXJGQk8pOworCisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklU
IHwgR0xfREVQVEhfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7CisKKyAgICBk
cmF3UXVhZChtQ2hlY2tlclByb2dyYW0sICJwb3NpdGlvbiIsIDAuOGYpOworCisgICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7CisKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVG
RkVSX0FOR0xFLCBtVXNlckZCTyk7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFN
RUJVRkZFUl9BTkdMRSwgbU9yaWdpbmFsRkJPKTsKKworICAgIGdsQmxpdEZyYW1lYnVmZmVyQU5H
TEUoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIDAsIDAsIGdldFdp
bmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX05FQVJFU1QpOworCisgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7CisKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbU9yaWdp
bmFsRkJPKTsKKworICAgIEVYUEVDVF9QSVhFTF9FUSggICAgZ2V0V2luZG93V2lkdGgoKSAvIDQs
ICAgICBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIDI1NSwgICAwLCAgIDAsIDI1NSk7CisgICAgRVhQ
RUNUX1BJWEVMX0VRKDMgKiBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgICAgIGdldFdpbmRvd0hlaWdo
dCgpIC8gNCwgICAwLCAyNTUsICAgMCwgMjU1KTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoMyAqIGdl
dFdpbmRvd1dpZHRoKCkgLyA0LCAzICogZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAyNTUsICAgMCwg
ICAwLCAyNTUpOworICAgIEVYUEVDVF9QSVhFTF9FUSggICAgZ2V0V2luZG93V2lkdGgoKSAvIDQs
IDMgKiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsICAgMCwgMjU1LCAgIDAsIDI1NSk7Cit9CisKKy8v
IERyYXcgdG8gc3lzdGVtIGZyYW1lYnVmZmVyLCBibGl0IHdob2xlLWJ1ZmZlciBjb2xvciB0byB1
c2VyLWNyZWF0ZWQgZnJhbWVidWZmZXIuCitURVNUX1AoQmxpdEZyYW1lYnVmZmVyQU5HTEVUZXN0
LCBSZXZlcnNlQ29sb3JCbGl0KQoreworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVG
RkVSLCBtT3JpZ2luYWxGQk8pOworCisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwg
R0xfREVQVEhfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7CisKKyAgICBkcmF3
UXVhZChtQ2hlY2tlclByb2dyYW0sICJwb3NpdGlvbiIsIDAuOGYpOworCisgICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7CisKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVS
X0FOR0xFLCBtT3JpZ2luYWxGQk8pOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0RSQVdfRlJB
TUVCVUZGRVJfQU5HTEUsIG1Vc2VyRkJPKTsKKworICAgIGdsQmxpdEZyYW1lYnVmZmVyQU5HTEUo
MCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIDAsIDAsIGdldFdpbmRv
d1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTkVBUkVTVCk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJS
T1IoKTsKKworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtVXNlckZCTyk7
CisKKyAgICBFWFBFQ1RfUElYRUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAgICAgZ2V0
V2luZG93SGVpZ2h0KCkgLyA0LCAyNTUsICAgMCwgICAwLCAyNTUpOworICAgIEVYUEVDVF9QSVhF
TF9FUSgzICogZ2V0V2luZG93V2lkdGgoKSAvIDQsICAgICBnZXRXaW5kb3dIZWlnaHQoKSAvIDQs
ICAgMCwgMjU1LCAgIDAsIDI1NSk7CisgICAgRVhQRUNUX1BJWEVMX0VRKDMgKiBnZXRXaW5kb3dX
aWR0aCgpIC8gNCwgMyAqIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgMjU1LCAgIDAsICAgMCwgMjU1
KTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAzICogZ2V0
V2luZG93SGVpZ2h0KCkgLyA0LCAgIDAsIDI1NSwgICAwLCAyNTUpOworfQorCisvLyBibGl0IGZy
b20gdXNlci1jcmVhdGVkIEZCTyB0byBzeXN0ZW0gZnJhbWVidWZmZXIsIHdpdGggdGhlIHNjaXNz
b3IgdGVzdCBlbmFibGVkLgorVEVTVF9QKEJsaXRGcmFtZWJ1ZmZlckFOR0xFVGVzdCwgU2Npc3Nv
cmVkQmxpdCkKK3sKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbVVzZXJG
Qk8pOworCisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVS
X0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7CisKKyAgICBkcmF3UXVhZChtQ2hlY2tlclBy
b2dyYW0sICJwb3NpdGlvbiIsIDAuOGYpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisK
KyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSX0FOR0xFLCBtT3JpZ2lu
YWxGQk8pOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJBTUVCVUZGRVJfQU5HTEUs
IG1Vc2VyRkJPKTsKKworICAgIGdsQ2xlYXJDb2xvcigxLjAsIDEuMCwgMS4wLCAxLjApOworICAg
IGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQgfCBHTF9T
VEVOQ0lMX0JVRkZFUl9CSVQpOworCisgICAgZ2xTY2lzc29yKGdldFdpbmRvd1dpZHRoKCkgLyAy
LCAwLCBnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkpOworICAgIGdsRW5h
YmxlKEdMX1NDSVNTT1JfVEVTVCk7CisKKyAgICBnbEJsaXRGcmFtZWJ1ZmZlckFOR0xFKDAsIDAs
IGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAwLCAwLCBnZXRXaW5kb3dXaWR0
aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9D
T0xPUl9CVUZGRVJfQklULCBHTF9ORUFSRVNUKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OworCisgICAgZ2xEaXNhYmxlKEdMX1NDSVNTT1JfVEVTVCk7CisKKyAgICBnbEJpbmRGcmFtZWJ1
ZmZlcihHTF9GUkFNRUJVRkZFUiwgbU9yaWdpbmFsRkJPKTsKKworICAgIEVYUEVDVF9QSVhFTF9F
USggICAgZ2V0V2luZG93V2lkdGgoKSAvIDQsICAgICBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIDI1
NSwgMjU1LCAyNTUsIDI1NSk7CisgICAgRVhQRUNUX1BJWEVMX0VRKDMgKiBnZXRXaW5kb3dXaWR0
aCgpIC8gNCwgICAgIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgICAwLCAyNTUsICAgMCwgMjU1KTsK
KyAgICBFWFBFQ1RfUElYRUxfRVEoMyAqIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAzICogZ2V0V2lu
ZG93SGVpZ2h0KCkgLyA0LCAyNTUsICAgMCwgICAwLCAyNTUpOworICAgIEVYUEVDVF9QSVhFTF9F
USggICAgZ2V0V2luZG93V2lkdGgoKSAvIDQsIDMgKiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIDI1
NSwgMjU1LCAyNTUsIDI1NSk7Cit9CisKKy8vIGJsaXQgZnJvbSBzeXN0ZW0gRkJPIHRvIHVzZXIt
Y3JlYXRlZCBmcmFtZWJ1ZmZlciwgd2l0aCB0aGUgc2Npc3NvciB0ZXN0IGVuYWJsZWQuCitURVNU
X1AoQmxpdEZyYW1lYnVmZmVyQU5HTEVUZXN0LCBSZXZlcnNlU2Npc3NvcmVkQmxpdCkKK3sKKyAg
ICAvLyBUT0RPKGptYWRpbGwpOiBUcmlhZ2UgdGhpcyBkcml2ZXIgYnVnLgorICAgIGlmIChJc0FN
RCgpICYmIElzRDNEMTEoKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lw
cGVkIG9uIEFNRCBEM0QxMS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtT3JpZ2luYWxGQk8pOwor
CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCB8
IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7CisKKyAgICBkcmF3UXVhZChtQ2hlY2tlclByb2dyYW0s
ICJwb3NpdGlvbiIsIDAuOGYpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBn
bEJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSX0FOR0xFLCBtVXNlckZCTyk7Cisg
ICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSwgbU9yaWdpbmFs
RkJPKTsKKworICAgIGdsQ2xlYXJDb2xvcigxLjAsIDEuMCwgMS4wLCAxLjApOworICAgIGdsQ2xl
YXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lM
X0JVRkZFUl9CSVQpOworICAgIAorICAgIGdsU2Npc3NvcihnZXRXaW5kb3dXaWR0aCgpIC8gMiwg
MCwgZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpKTsKKyAgICBnbEVuYWJs
ZShHTF9TQ0lTU09SX1RFU1QpOworCisgICAgZ2xCbGl0RnJhbWVidWZmZXJBTkdMRSgwLCAwLCBn
ZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgMCwgMCwgZ2V0V2luZG93V2lkdGgo
KSwgZ2V0V2luZG93SGVpZ2h0KCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09M
T1JfQlVGRkVSX0JJVCwgR0xfTkVBUkVTVCk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
KworICAgIGdsRGlzYWJsZShHTF9TQ0lTU09SX1RFU1QpOworCisgICAgZ2xCaW5kRnJhbWVidWZm
ZXIoR0xfRlJBTUVCVUZGRVIsIG1Vc2VyRkJPKTsKKyAgICAKKyAgICBFWFBFQ1RfUElYRUxfRVEo
ICAgIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAyNTUs
IDI1NSwgMjU1LCAyNTUpOworICAgIEVYUEVDVF9QSVhFTF9FUSgzICogZ2V0V2luZG93V2lkdGgo
KSAvIDQsICAgICBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsICAgMCwgMjU1LCAgIDAsIDI1NSk7Cisg
ICAgRVhQRUNUX1BJWEVMX0VRKDMgKiBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgMyAqIGdldFdpbmRv
d0hlaWdodCgpIC8gNCwgMjU1LCAgIDAsICAgMCwgMjU1KTsKKyAgICBFWFBFQ1RfUElYRUxfRVEo
ICAgIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAzICogZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAyNTUs
IDI1NSwgMjU1LCAyNTUpOworfQorCisvLyBibGl0IGZyb20gdXNlci1jcmVhdGVkIEZCTyB0byBz
eXN0ZW0gZnJhbWVidWZmZXIsIHVzaW5nIHJlZ2lvbiBsYXJnZXIgdGhhbiBidWZmZXIuCitURVNU
X1AoQmxpdEZyYW1lYnVmZmVyQU5HTEVUZXN0LCBPdmVyc2l6ZWRCbGl0KQoreworICAgIGdsQmlu
ZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtVXNlckZCTyk7CisKKyAgICBnbENsZWFyKEdM
X0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZG
RVJfQklUKTsKKworICAgIGRyYXdRdWFkKG1DaGVja2VyUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC44
Zik7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsQmluZEZyYW1lYnVmZmVy
KEdMX0RSQVdfRlJBTUVCVUZGRVJfQU5HTEUsIG1PcmlnaW5hbEZCTyk7CisgICAgZ2xCaW5kRnJh
bWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSwgbVVzZXJGQk8pOworCisgICAgZ2xD
bGVhckNvbG9yKDEuMCwgMS4wLCAxLjAsIDEuMCk7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZG
RVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7CisK
KyAgICBnbEJsaXRGcmFtZWJ1ZmZlckFOR0xFKDAsIDAsIGdldFdpbmRvd1dpZHRoKCkgKiAyLCBn
ZXRXaW5kb3dIZWlnaHQoKSAqIDIsIDAsIDAsIGdldFdpbmRvd1dpZHRoKCkgKiAyLCBnZXRXaW5k
b3dIZWlnaHQoKSAqIDIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09MT1JfQlVG
RkVSX0JJVCwgR0xfTkVBUkVTVCk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAg
IGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtT3JpZ2luYWxGQk8pOworCisgICAg
RVhQRUNUX1BJWEVMX0VRKCAgICBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgICAgIGdldFdpbmRvd0hl
aWdodCgpIC8gNCwgMjU1LCAgIDAsICAgMCwgMjU1KTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoMyAq
IGdldFdpbmRvd1dpZHRoKCkgLyA0LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAgIDAsIDI1
NSwgICAwLCAyNTUpOworICAgIEVYUEVDVF9QSVhFTF9FUSgzICogZ2V0V2luZG93V2lkdGgoKSAv
IDQsIDMgKiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIDI1NSwgICAwLCAgIDAsIDI1NSk7CisgICAg
RVhQRUNUX1BJWEVMX0VRKCAgICBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgMyAqIGdldFdpbmRvd0hl
aWdodCgpIC8gNCwgICAwLCAyNTUsICAgMCwgMjU1KTsKK30KKworLy8gYmxpdCBmcm9tIHN5c3Rl
bSBGQk8gdG8gdXNlci1jcmVhdGVkIGZyYW1lYnVmZmVyLCB1c2luZyByZWdpb24gbGFyZ2VyIHRo
YW4gYnVmZmVyLgorVEVTVF9QKEJsaXRGcmFtZWJ1ZmZlckFOR0xFVGVzdCwgUmV2ZXJzZU92ZXJz
aXplZEJsaXQpCit7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1Pcmln
aW5hbEZCTyk7CisKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9C
VUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKKworICAgIGRyYXdRdWFkKG1DaGVj
a2VyUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC44Zik7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1Io
KTsKKworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVJfQU5HTEUsIG1V
c2VyRkJPKTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVSX0FOR0xF
LCBtT3JpZ2luYWxGQk8pOworCisgICAgZ2xDbGVhckNvbG9yKDEuMCwgMS4wLCAxLjAsIDEuMCk7
CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCB8
IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7CisKKyAgICBnbEJsaXRGcmFtZWJ1ZmZlckFOR0xFKDAs
IDAsIGdldFdpbmRvd1dpZHRoKCkgKiAyLCBnZXRXaW5kb3dIZWlnaHQoKSAqIDIsIDAsIDAsIGdl
dFdpbmRvd1dpZHRoKCkgKiAyLCBnZXRXaW5kb3dIZWlnaHQoKSAqIDIsIAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTkVBUkVTVCk7CisgICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZF
UiwgbVVzZXJGQk8pOworCisgICAgRVhQRUNUX1BJWEVMX0VRKCAgICBnZXRXaW5kb3dXaWR0aCgp
IC8gNCwgICAgIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgMjU1LCAgIDAsICAgMCwgMjU1KTsKKyAg
ICBFWFBFQ1RfUElYRUxfRVEoMyAqIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAgICAgZ2V0V2luZG93
SGVpZ2h0KCkgLyA0LCAgIDAsIDI1NSwgICAwLCAyNTUpOworICAgIEVYUEVDVF9QSVhFTF9FUSgz
ICogZ2V0V2luZG93V2lkdGgoKSAvIDQsIDMgKiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIDI1NSwg
ICAwLCAgIDAsIDI1NSk7CisgICAgRVhQRUNUX1BJWEVMX0VRKCAgICBnZXRXaW5kb3dXaWR0aCgp
IC8gNCwgMyAqIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgICAwLCAyNTUsICAgMCwgMjU1KTsKK30K
KworLy8gYmxpdCBmcm9tIHVzZXItY3JlYXRlZCBGQk8gdG8gc3lzdGVtIGZyYW1lYnVmZmVyLCB3
aXRoIGRlcHRoIGJ1ZmZlci4KK1RFU1RfUChCbGl0RnJhbWVidWZmZXJBTkdMRVRlc3QsIEJsaXRX
aXRoRGVwdGgpCit7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1Vc2Vy
RkJPKTsKKworICAgIGdsRGVwdGhNYXNrKEdMX1RSVUUpOworICAgIGdsQ2xlYXIoR0xfQ09MT1Jf
QlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQp
OworCisgICAgZ2xFbmFibGUoR0xfREVQVEhfVEVTVCk7CisKKyAgICBkcmF3UXVhZChtQ2hlY2tl
clByb2dyYW0sICJwb3NpdGlvbiIsIDAuM2YpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
CisKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSX0FOR0xFLCBtT3Jp
Z2luYWxGQk8pOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJBTUVCVUZGRVJfQU5H
TEUsIG1Vc2VyRkJPKTsKKworICAgIGdsQ2xlYXJDb2xvcigxLjAsIDEuMCwgMS4wLCAxLjApOwor
ICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQgfCBH
TF9TVEVOQ0lMX0JVRkZFUl9CSVQpOworCisgICAgZ2xCbGl0RnJhbWVidWZmZXJBTkdMRSgwLCAw
LCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgMCwgMCwgZ2V0V2luZG93V2lk
dGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
Q09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQsIEdMX05FQVJFU1QpOworICAg
IEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVC
VUZGRVIsIG1PcmlnaW5hbEZCTyk7CisKKyAgICAvLyBpZiBibGl0IGlzIGhhcHBlbmluZyBjb3Jy
ZWN0bHksIHRoaXMgcXVhZCB3aWxsIG5vdCBkcmF3LCBiZWNhdXNlIGl0IGlzIGJlaGluZCB0aGUg
YmxpdHRlZCBvbmUKKyAgICBkcmF3UXVhZChtQmx1ZVByb2dyYW0sICJwb3NpdGlvbiIsIDAuOGYp
OworCisgICAgZ2xEaXNhYmxlKEdMX0RFUFRIX1RFU1QpOworCisgICAgRVhQRUNUX1BJWEVMX0VR
KCAgICBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgICAgIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgMjU1
LCAgIDAsICAgMCwgMjU1KTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoMyAqIGdldFdpbmRvd1dpZHRo
KCkgLyA0LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAgIDAsIDI1NSwgICAwLCAyNTUpOwor
ICAgIEVYUEVDVF9QSVhFTF9FUSgzICogZ2V0V2luZG93V2lkdGgoKSAvIDQsIDMgKiBnZXRXaW5k
b3dIZWlnaHQoKSAvIDQsIDI1NSwgICAwLCAgIDAsIDI1NSk7CisgICAgRVhQRUNUX1BJWEVMX0VR
KCAgICBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgMyAqIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgICAw
LCAyNTUsICAgMCwgMjU1KTsKK30KKworLy8gYmxpdCBmcm9tIHN5c3RlbSBGQk8gdG8gdXNlci1j
cmVhdGVkIGZyYW1lYnVmZmVyLCB3aXRoIGRlcHRoIGJ1ZmZlci4KK1RFU1RfUChCbGl0RnJhbWVi
dWZmZXJBTkdMRVRlc3QsIFJldmVyc2VCbGl0V2l0aERlcHRoKQoreworICAgIGdsQmluZEZyYW1l
YnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtT3JpZ2luYWxGQk8pOworCisgICAgZ2xDbGVhcihHTF9D
T0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVS
X0JJVCk7CisKKyAgICBnbEVuYWJsZShHTF9ERVBUSF9URVNUKTsKKworICAgIGRyYXdRdWFkKG1D
aGVja2VyUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC4zZik7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJS
T1IoKTsKKworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVJfQU5HTEUs
IG1Vc2VyRkJPKTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVSX0FO
R0xFLCBtT3JpZ2luYWxGQk8pOworCisgICAgZ2xDbGVhckNvbG9yKDEuMGYsIDEuMGYsIDEuMGYs
IDEuMGYpOworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZF
Ul9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOworCisgICAgZ2xCbGl0RnJhbWVidWZmZXJB
TkdMRSgwLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgMCwgMCwgZ2V0
V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQsIEdMX05FQVJF
U1QpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xCaW5kRnJhbWVidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIG1Vc2VyRkJPKTsKKworICAgIC8vIGlmIGJsaXQgaXMgaGFwcGVuaW5n
IGNvcnJlY3RseSwgdGhpcyBxdWFkIHdpbGwgbm90IGRyYXcsIGJlY2F1c2UgaXQgaXMgYmVoaW5k
IHRoZSBibGl0dGVkIG9uZQorCisgICAgZHJhd1F1YWQobUJsdWVQcm9ncmFtLCAicG9zaXRpb24i
LCAwLjhmKTsKKworICAgIGdsRGlzYWJsZShHTF9ERVBUSF9URVNUKTsKKworICAgIEVYUEVDVF9Q
SVhFTF9FUSggICAgZ2V0V2luZG93V2lkdGgoKSAvIDQsICAgICBnZXRXaW5kb3dIZWlnaHQoKSAv
IDQsIDI1NSwgICAwLCAgIDAsIDI1NSk7CisgICAgRVhQRUNUX1BJWEVMX0VRKDMgKiBnZXRXaW5k
b3dXaWR0aCgpIC8gNCwgICAgIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgICAwLCAyNTUsICAgMCwg
MjU1KTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoMyAqIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAzICog
Z2V0V2luZG93SGVpZ2h0KCkgLyA0LCAyNTUsICAgMCwgICAwLCAyNTUpOworICAgIEVYUEVDVF9Q
SVhFTF9FUSggICAgZ2V0V2luZG93V2lkdGgoKSAvIDQsIDMgKiBnZXRXaW5kb3dIZWlnaHQoKSAv
IDQsICAgMCwgMjU1LCAgIDAsIDI1NSk7Cit9CisKKy8vIGJsaXQgZnJvbSBvbmUgcmVnaW9uIG9m
IHRoZSBzeXN0ZW0gZmJvIHRvIGFub3RoZXItLSB0aGlzIHNob3VsZCBmYWlsLgorVEVTVF9QKEJs
aXRGcmFtZWJ1ZmZlckFOR0xFVGVzdCwgQmxpdFNhbWVCdWZmZXJPcmlnaW5hbCkKK3sKKyAgICBn
bEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbU9yaWdpbmFsRkJPKTsKKworICAgIGds
Q2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQgfCBHTF9TVEVO
Q0lMX0JVRkZFUl9CSVQpOworCisgICAgZHJhd1F1YWQobUNoZWNrZXJQcm9ncmFtLCAicG9zaXRp
b24iLCAwLjNmKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xCbGl0RnJh
bWVidWZmZXJBTkdMRSgwLCAwLCBnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0
KCksIGdldFdpbmRvd1dpZHRoKCkgLyAyLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dI
ZWlnaHQoKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT0xPUl9CVUZGRVJfQklU
LCBHTF9ORUFSRVNUKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OworfQorCisvLyBibGl0IGZyb20gb25lIHJlZ2lvbiBvZiB0aGUgc3lzdGVtIGZibyB0byBhbm90
aGVyLgorVEVTVF9QKEJsaXRGcmFtZWJ1ZmZlckFOR0xFVGVzdCwgQmxpdFNhbWVCdWZmZXJVc2Vy
KQoreworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtVXNlckZCTyk7CisK
KyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwg
R0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKKworICAgIGRyYXdRdWFkKG1DaGVja2VyUHJvZ3JhbSwg
InBvc2l0aW9uIiwgMC4zZik7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGds
QmxpdEZyYW1lYnVmZmVyQU5HTEUoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRv
d0hlaWdodCgpLCBnZXRXaW5kb3dXaWR0aCgpIC8gMiwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0
V2luZG93SGVpZ2h0KCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09MT1JfQlVG
RkVSX0JJVCwgR0xfTkVBUkVTVCk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKK30KKworVEVTVF9QKEJsaXRGcmFtZWJ1ZmZlckFOR0xFVGVzdCwgQmxpdFBhcnRp
YWxDb2xvcikKK3sKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbVVzZXJG
Qk8pOworCisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVS
X0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7CisKKyAgICBkcmF3UXVhZChtQ2hlY2tlclBy
b2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisK
KyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSX0FOR0xFLCBtT3JpZ2lu
YWxGQk8pOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJBTUVCVUZGRVJfQU5HTEUs
IG1Vc2VyRkJPKTsKKworICAgIGdsQ2xlYXJDb2xvcigxLjAsIDEuMCwgMS4wLCAxLjApOworICAg
IGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVHwgR0xfREVQVEhfQlVGRkVSX0JJVCB8IEdMX1NU
RU5DSUxfQlVGRkVSX0JJVCk7CisKKyAgICBnbEJsaXRGcmFtZWJ1ZmZlckFOR0xFKDAsIDAsIGdl
dFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIDAsIGdldFdpbmRvd0hl
aWdodCgpIC8gMiwgZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTkVBUkVTVCk7
CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdM
X0ZSQU1FQlVGRkVSLCBtT3JpZ2luYWxGQk8pOworCisgICAgRVhQRUNUX1BJWEVMX0VRKCAgICBn
ZXRXaW5kb3dXaWR0aCgpIC8gNCwgICAgIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgMjU1LCAyNTUs
IDI1NSwgMjU1KTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoMyAqIGdldFdpbmRvd1dpZHRoKCkgLyA0
LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAyNTUsIDI1NSwgMjU1LCAyNTUpOworICAgIEVY
UEVDVF9QSVhFTF9FUSgzICogZ2V0V2luZG93V2lkdGgoKSAvIDQsIDMgKiBnZXRXaW5kb3dIZWln
aHQoKSAvIDQsIDI1NSwgMjU1LCAyNTUsIDI1NSk7CisgICAgRVhQRUNUX1BJWEVMX0VRKCAgICBn
ZXRXaW5kb3dXaWR0aCgpIC8gNCwgMyAqIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgMjU1LCAgIDAs
ICAgMCwgMjU1KTsKK30KKworVEVTVF9QKEJsaXRGcmFtZWJ1ZmZlckFOR0xFVGVzdCwgQmxpdERp
ZmZlcmVudFNpemVzKQoreworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBt
VXNlckZCTyk7CisKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9C
VUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKKworICAgIGRyYXdRdWFkKG1DaGVj
a2VyUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1Io
KTsKKworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVJfQU5HTEUsIG1T
bWFsbEZCTyk7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZFUl9BTkdM
RSwgbVVzZXJGQk8pOworCisgICAgZ2xDbGVhckNvbG9yKDEuMCwgMS4wLCAxLjAsIDEuMCk7Cisg
ICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xf
U1RFTkNJTF9CVUZGRVJfQklUKTsKKworICAgIGdsQmxpdEZyYW1lYnVmZmVyQU5HTEUoMCwgMCwg
Z2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIDAsIDAsIGdldFdpbmRvd1dpZHRo
KCksIGdldFdpbmRvd0hlaWdodCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09M
T1JfQlVGRkVSX0JJVCwgR0xfTkVBUkVTVCk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
KworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtU21hbGxGQk8pOworCisg
ICAgRVhQRUNUX1BJWEVMX0VRKCAgICBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgICAgIGdldFdpbmRv
d0hlaWdodCgpIC8gNCwgMjU1LCAgIDAsICAgMCwgMjU1KTsKKworICAgIEVYUEVDVF9HTF9OT19F
UlJPUigpOworfQorCitURVNUX1AoQmxpdEZyYW1lYnVmZmVyQU5HTEVUZXN0LCBCbGl0V2l0aE1p
c3NpbmdBdHRhY2htZW50cykKK3sKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZF
UiwgbUNvbG9yT25seUZCTyk7CisKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwor
ICAgIGRyYXdRdWFkKG1DaGVja2VyUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC4zZik7CisKKyAgICBn
bEJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSX0FOR0xFLCBtT3JpZ2luYWxGQk8p
OworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJBTUVCVUZGRVJfQU5HTEUsIG1Db2xv
ck9ubHlGQk8pOworCisgICAgZ2xDbGVhckNvbG9yKDEuMCwgMS4wLCAxLjAsIDEuMCk7CisgICAg
Z2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RF
TkNJTF9CVUZGRVJfQklUKTsKKworICAgIC8vIGRlcHRoIGJsaXQgcmVxdWVzdCBzaG91bGQgYmUg
c2lsZW50bHkgaWdub3JlZCwgYmVjYXVzZSB0aGUgcmVhZCBGQk8gaGFzIG5vIGRlcHRoIGF0dGFj
aG1lbnQKKyAgICBnbEJsaXRGcmFtZWJ1ZmZlckFOR0xFKDAsIDAsIGdldFdpbmRvd1dpZHRoKCks
IGdldFdpbmRvd0hlaWdodCgpLCAwLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWln
aHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBH
TF9ERVBUSF9CVUZGRVJfQklULCBHTF9ORUFSRVNUKTsgCisKKyAgICBFWFBFQ1RfR0xfTk9fRVJS
T1IoKTsKKworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtT3JpZ2luYWxG
Qk8pOworCisgICAgRVhQRUNUX1BJWEVMX0VRKCAgICBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgICAg
IGdldFdpbmRvd0hlaWdodCgpIC8gNCwgMjU1LCAgIDAsICAgMCwgMjU1KTsKKyAgICBFWFBFQ1Rf
UElYRUxfRVEoMyAqIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkg
LyA0LCAgIDAsIDI1NSwgICAwLCAyNTUpOworICAgIEVYUEVDVF9QSVhFTF9FUSgzICogZ2V0V2lu
ZG93V2lkdGgoKSAvIDQsIDMgKiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIDI1NSwgICAwLCAgIDAs
IDI1NSk7CisgICAgRVhQRUNUX1BJWEVMX0VRKCAgICBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgMyAq
IGdldFdpbmRvd0hlaWdodCgpIC8gNCwgICAwLCAyNTUsICAgMCwgMjU1KTsKKworICAgIC8vIHVu
bGlrZSBpbiB0aGUgZGVwdGggYmxpdCB0ZXN0cywgdGhpcyAqc2hvdWxkKiBkcmF3IGEgYmx1ZSBx
dWFkLCBiZWNhdXNlIGRlcHRoIGluZm8KKyAgICAvLyBoYXMgbm90IGJlZW4gY29waWVkCisgICAg
Z2xFbmFibGUoR0xfREVQVEhfVEVTVCk7CisgICAgZHJhd1F1YWQobUJsdWVQcm9ncmFtLCAicG9z
aXRpb24iLCAwLjhmKTsKKyAgICBnbERpc2FibGUoR0xfREVQVEhfVEVTVCk7CisKKyAgICBFWFBF
Q1RfUElYRUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAgICAgZ2V0V2luZG93SGVpZ2h0
KCkgLyA0LCAgIDAsICAgMCwgMjU1LCAyNTUpOworICAgIEVYUEVDVF9QSVhFTF9FUSgzICogZ2V0
V2luZG93V2lkdGgoKSAvIDQsICAgICBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsICAgMCwgICAwLCAy
NTUsIDI1NSk7CisgICAgRVhQRUNUX1BJWEVMX0VRKDMgKiBnZXRXaW5kb3dXaWR0aCgpIC8gNCwg
MyAqIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgICAwLCAgIDAsIDI1NSwgMjU1KTsKKyAgICBFWFBF
Q1RfUElYRUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAzICogZ2V0V2luZG93SGVpZ2h0
KCkgLyA0LCAgIDAsICAgMCwgMjU1LCAyNTUpOworfQorCitURVNUX1AoQmxpdEZyYW1lYnVmZmVy
QU5HTEVUZXN0LCBCbGl0U3RlbmNpbCkKK3sKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBGaWd1cmUg
b3V0IGlmIHdlIGNhbiBmaXggdGhpcyBvbiBEM0Q5LgorICAgIC8vIGh0dHBzOi8vY29kZS5nb29n
bGUuY29tL3AvYW5nbGVwcm9qZWN0L2lzc3Vlcy9kZXRhaWw/aWQ9ODA5CisgICAgaWYgKElzSW50
ZWwoKSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVf
RDNEOV9BTkdMRSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9u
IEludGVsIEQzRDkuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbVVzZXJGQk8pOworCisgICAgZ2xD
bGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICAvLyBmaWxsIHRoZSBzdGVuY2lsIGJ1ZmZl
ciB3aXRoIDB4MQorICAgIGdsU3RlbmNpbEZ1bmMoR0xfQUxXQVlTLCAweDEsIDB4RkYpOworICAg
IGdsU3RlbmNpbE9wKEdMX1JFUExBQ0UsIEdMX1JFUExBQ0UsIEdMX1JFUExBQ0UpOworICAgIGds
RW5hYmxlKEdMX1NURU5DSUxfVEVTVCk7IAorICAgIGRyYXdRdWFkKG1DaGVja2VyUHJvZ3JhbSwg
InBvc2l0aW9uIiwgMC4zZik7CisKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1F
QlVGRkVSX0FOR0xFLCBtT3JpZ2luYWxGQk8pOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX1JF
QURfRlJBTUVCVUZGRVJfQU5HTEUsIG1Vc2VyRkJPKTsKKworICAgIGdsQ2xlYXJDb2xvcigxLjAs
IDEuMCwgMS4wLCAxLjApOworICAgIGdsQ2xlYXJTdGVuY2lsKDB4MCk7CisgICAgZ2xDbGVhcihH
TF9DT0xPUl9CVUZGRVJfQklUfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZG
RVJfQklUKTsKKworICAgIC8vIGRlcHRoIGJsaXQgcmVxdWVzdCBzaG91bGQgYmUgc2lsZW50bHkg
aWdub3JlZCwgYmVjYXVzZSB0aGUgcmVhZCBGQk8gaGFzIG5vIGRlcHRoIGF0dGFjaG1lbnQKKyAg
ICBnbEJsaXRGcmFtZWJ1ZmZlckFOR0xFKDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRv
d0hlaWdodCgpLCAwLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lM
X0JVRkZFUl9CSVQsIEdMX05FQVJFU1QpOyAKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwor
CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1PcmlnaW5hbEZCTyk7CisK
KyAgICBFWFBFQ1RfUElYRUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAgICAgZ2V0V2lu
ZG93SGVpZ2h0KCkgLyA0LCAyNTUsICAgMCwgICAwLCAyNTUpOworICAgIEVYUEVDVF9QSVhFTF9F
USgzICogZ2V0V2luZG93V2lkdGgoKSAvIDQsICAgICBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsICAg
MCwgMjU1LCAgIDAsIDI1NSk7CisgICAgRVhQRUNUX1BJWEVMX0VRKDMgKiBnZXRXaW5kb3dXaWR0
aCgpIC8gNCwgMyAqIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgMjU1LCAgIDAsICAgMCwgMjU1KTsK
KyAgICBFWFBFQ1RfUElYRUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAzICogZ2V0V2lu
ZG93SGVpZ2h0KCkgLyA0LCAgIDAsIDI1NSwgICAwLCAyNTUpOworCisgICAgZ2xTdGVuY2lsRnVu
YyhHTF9FUVVBTCwgMHgxLCAweEZGKTsgLy8gb25seSBwYXNzIGlmIHN0ZW5jaWwgYnVmZmVyIGF0
IHBpeGVsIHJlYWRzIDB4MQorICAgIGRyYXdRdWFkKG1CbHVlUHJvZ3JhbSwgInBvc2l0aW9uIiwg
MC44Zik7IC8vIGJsdWUgcXVhZCB3aWxsIGRyYXcgaWYgc3RlbmNpbCBidWZmZXIgd2FzIGNvcGll
ZAorICAgIGdsRGlzYWJsZShHTF9TVEVOQ0lMX1RFU1QpOworCisgICAgRVhQRUNUX1BJWEVMX0VR
KCAgICBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgICAgIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgICAw
LCAgIDAsIDI1NSwgMjU1KTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoMyAqIGdldFdpbmRvd1dpZHRo
KCkgLyA0LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAgIDAsICAgMCwgMjU1LCAyNTUpOwor
ICAgIEVYUEVDVF9QSVhFTF9FUSgzICogZ2V0V2luZG93V2lkdGgoKSAvIDQsIDMgKiBnZXRXaW5k
b3dIZWlnaHQoKSAvIDQsICAgMCwgICAwLCAyNTUsIDI1NSk7CisgICAgRVhQRUNUX1BJWEVMX0VR
KCAgICBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgMyAqIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgICAw
LCAgIDAsIDI1NSwgMjU1KTsKK30KKworLy8gbWFrZSBzdXJlIHRoYXQgYXR0ZW1wdGluZyB0byBi
bGl0IGEgcGFydGlhbCBkZXB0aCBidWZmZXIgaXNzdWVzIGFuIGVycm9yCitURVNUX1AoQmxpdEZy
YW1lYnVmZmVyQU5HTEVUZXN0LCBCbGl0UGFydGlhbERlcHRoU3RlbmNpbCkKK3sKKyAgICBnbEJp
bmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbVVzZXJGQk8pOworCisgICAgZ2xDbGVhcihH
TF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVG
RkVSX0JJVCk7CisKKyAgICBkcmF3UXVhZChtQ2hlY2tlclByb2dyYW0sICJwb3NpdGlvbiIsIDAu
NWYpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbEJpbmRGcmFtZWJ1ZmZl
cihHTF9EUkFXX0ZSQU1FQlVGRkVSX0FOR0xFLCBtT3JpZ2luYWxGQk8pOworICAgIGdsQmluZEZy
YW1lYnVmZmVyKEdMX1JFQURfRlJBTUVCVUZGRVJfQU5HTEUsIG1Vc2VyRkJPKTsKKworICAgIGds
QmxpdEZyYW1lYnVmZmVyQU5HTEUoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRv
d0hlaWdodCgpIC8gMiwgMCwgMCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRXaW5k
b3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCBHTF9ERVBUSF9CVUZGRVJfQklU
LCBHTF9ORUFSRVNUKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OworfQorCisvLyBUZXN0IGJsaXQgd2l0aCBNUlQgZnJhbWVidWZmZXJzCitURVNUX1AoQmxpdEZy
YW1lYnVmZmVyQU5HTEVUZXN0LCBCbGl0TVJUKQoreworICAgIGlmICghZXh0ZW5zaW9uRW5hYmxl
ZCgiR0xfRVhUX2RyYXdfYnVmZmVycyIpKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIEdMZW51bSBkcmF3QnVmZmVyc1tdID0geyBHTF9DT0xPUl9BVFRBQ0hNRU5UMF9FWFQs
IEdMX0NPTE9SX0FUVEFDSE1FTlQxX0VYVCB9OworCisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xf
RlJBTUVCVUZGRVIsIG1NUlRGQk8pOworICAgIGdsRHJhd0J1ZmZlcnNFWFQoMiwgZHJhd0J1ZmZl
cnMpOworCisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1Db2xvck9ubHlG
Qk8pOworCisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICAKKyAgICBkcmF3
UXVhZChtQ2hlY2tlclByb2dyYW0sICJwb3NpdGlvbiIsIDAuOGYpOworICAgIAorICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOworCisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJV
RkZFUl9BTkdMRSwgbUNvbG9yT25seUZCTyk7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRFJB
V19GUkFNRUJVRkZFUl9BTkdMRSwgbU1SVEZCTyk7CisKKyAgICBnbEJsaXRGcmFtZWJ1ZmZlckFO
R0xFKDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAwLCAwLCBnZXRX
aW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9ORUFSRVNUKTsKKyAgICAKKyAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKKworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBt
TVJURkJPKTsKKworICAgIEVYUEVDVF9QSVhFTF9FUSggICAgZ2V0V2luZG93V2lkdGgoKSAvIDQs
ICAgICBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIDI1NSwgICAwLCAgIDAsIDI1NSk7CisgICAgRVhQ
RUNUX1BJWEVMX0VRKDMgKiBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgICAgIGdldFdpbmRvd0hlaWdo
dCgpIC8gNCwgICAwLCAyNTUsICAgMCwgMjU1KTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoMyAqIGdl
dFdpbmRvd1dpZHRoKCkgLyA0LCAzICogZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAyNTUsICAgMCwg
ICAwLCAyNTUpOworICAgIEVYUEVDVF9QSVhFTF9FUSggICAgZ2V0V2luZG93V2lkdGgoKSAvIDQs
IDMgKiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsICAgMCwgMjU1LCAgIDAsIDI1NSk7CisKKyAgICBn
bEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5U
MV9FWFQsIEdMX1RFWFRVUkVfMkQsIDAsIDApOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQo
R0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBtTVJU
Q29sb3JCdWZmZXIwLCAwKTsKKworICAgIEVYUEVDVF9QSVhFTF9FUSggICAgZ2V0V2luZG93V2lk
dGgoKSAvIDQsICAgICBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIDI1NSwgICAwLCAgIDAsIDI1NSk7
CisgICAgRVhQRUNUX1BJWEVMX0VRKDMgKiBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgICAgIGdldFdp
bmRvd0hlaWdodCgpIC8gNCwgICAwLCAyNTUsICAgMCwgMjU1KTsKKyAgICBFWFBFQ1RfUElYRUxf
RVEoMyAqIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAzICogZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAy
NTUsICAgMCwgICAwLCAyNTUpOworICAgIEVYUEVDVF9QSVhFTF9FUSggICAgZ2V0V2luZG93V2lk
dGgoKSAvIDQsIDMgKiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsICAgMCwgMjU1LCAgIDAsIDI1NSk7
CisKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9B
VFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbU1SVENvbG9yQnVmZmVyMCwgMCk7CisgICAgZ2xG
cmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDFf
RVhULCBHTF9URVhUVVJFXzJELCBtTVJUQ29sb3JCdWZmZXIxLCAwKTsKK30KKworLy8gTWFrZSBz
dXJlIHRoYXQgYXR0ZW1wdHMgdG8gc3RyZXRjaCBpbiBhIGJsaXQgY2FsbCBpc3N1ZSBhbiBlcnJv
cgorVEVTVF9QKEJsaXRGcmFtZWJ1ZmZlckFOR0xFVGVzdCwgRXJyb3JTdHJldGNoaW5nKQorewor
ICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtVXNlckZCTyk7CisKKyAgICBn
bENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RF
TkNJTF9CVUZGRVJfQklUKTsKKworICAgIGRyYXdRdWFkKG1DaGVja2VyUHJvZ3JhbSwgInBvc2l0
aW9uIiwgMC41Zik7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsQmluZEZy
YW1lYnVmZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVJfQU5HTEUsIG1PcmlnaW5hbEZCTyk7CisgICAg
Z2xCaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSwgbVVzZXJGQk8pOwor
CisgICAgZ2xCbGl0RnJhbWVidWZmZXJBTkdMRSgwLCAwLCBnZXRXaW5kb3dXaWR0aCgpIC8gMiwg
Z2V0V2luZG93SGVpZ2h0KCkgLyAyLCAwLCAwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCBHTF9DT0xPUl9CVUZGRVJfQklU
LCBHTF9ORUFSRVNUKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OworfQorCisvLyBNYWtlIHN1cmUgdGhhdCBhdHRlbXB0cyB0byBmbGlwIGluIGEgYmxpdCBjYWxs
IGlzc3VlIGFuIGVycm9yCitURVNUX1AoQmxpdEZyYW1lYnVmZmVyQU5HTEVUZXN0LCBFcnJvckZs
aXBwaW5nKQoreworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtVXNlckZC
Tyk7CisKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJf
QklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKKworICAgIGRyYXdRdWFkKG1DaGVja2VyUHJv
Z3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKwor
ICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVJfQU5HTEUsIG1PcmlnaW5h
bEZCTyk7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSwg
bVVzZXJGQk8pOworCisgICAgZ2xCbGl0RnJhbWVidWZmZXJBTkdMRSgwLCAwLCBnZXRXaW5kb3dX
aWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCBnZXRXaW5kb3dXaWR0aCgpIC8gMiwg
Z2V0V2luZG93SGVpZ2h0KCkgLyAyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAs
IEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX05FQVJFU1QpOworICAgIEVYUEVDVF9HTF9FUlJPUihH
TF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK1RFU1RfUChCbGl0RnJhbWVidWZmZXJBTkdMRVRl
c3QsIEVycm9ycykKK3sKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbVVz
ZXJGQk8pOworCisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVG
RkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7CisKKyAgICBkcmF3UXVhZChtQ2hlY2tl
clByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
CisKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSX0FOR0xFLCBtT3Jp
Z2luYWxGQk8pOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJBTUVCVUZGRVJfQU5H
TEUsIG1Vc2VyRkJPKTsKKworICAgIGdsQmxpdEZyYW1lYnVmZmVyQU5HTEUoMCwgMCwgZ2V0V2lu
ZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdl
dFdpbmRvd0hlaWdodCgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTE9SX0JV
RkZFUl9CSVQsIEdMX0xJTkVBUik7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5V
TSk7CisKKyAgICBnbEJsaXRGcmFtZWJ1ZmZlckFOR0xFKDAsIDAsIGdldFdpbmRvd1dpZHRoKCks
IGdldFdpbmRvd0hlaWdodCgpLCAwLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWln
aHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTE9SX0JVRkZFUl9CSVQgfCAy
MzQsIEdMX05FQVJFU1QpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsK
KworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVJfQU5HTEUsIG1EaWZm
Rm9ybWF0RkJPKTsKKworICAgIGdsQmxpdEZyYW1lYnVmZmVyQU5HTEUoMCwgMCwgZ2V0V2luZG93
V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdp
bmRvd0hlaWdodCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09MT1JfQlVGRkVS
X0JJVCwgR0xfTkVBUkVTVCk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKKworICAgIGlmIChleHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9t
dWx0aXNhbXBsZSIpKQorICAgIHsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9G
UkFNRUJVRkZFUiwgbUJHUkFNdWx0aXNhbXBsZWRGQk8pOworICAgICAgICBnbEJpbmRGcmFtZWJ1
ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSLCBtUkdCQUZCTyk7CisgICAgICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOworCisgICAgICAgIGdsQmxpdEZyYW1lYnVmZmVyQU5HTEUoMCwgMCwgZ2V0V2lu
ZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdl
dFdpbmRvd0hlaWdodCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTE9S
X0JVRkZFUl9CSVQsIEdMX05FQVJFU1QpOworICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOworICAgIH0KKworfQorCisvLyBUT0RPKGdlb2ZmbGFuZyk6IEZpeCB0
aGUgZGVwZW5kZW5jZSBvbiBnbEJsaXRGcmFtZWJ1ZmZlckFOR0xFIHdpdGhvdXQgY2hlY2tzIGFu
ZCBhc3N1bWluZyB0aGUKKy8vIGRlZmF1bHQgZnJhbWVidWZmZXIgaXMgQkdSQSB0byBlbmFibGUg
dGhlIEdMIGFuZCBHTEVTIGJhY2tlbmRzLiAoaHR0cDovL2FuZ2xlYnVnLmNvbS8xMjg5KQorCitj
bGFzcyBCbGl0RnJhbWVidWZmZXJUZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0
ZWQ6CisgICAgQmxpdEZyYW1lYnVmZmVyVGVzdCgpCisgICAgeworICAgICAgICBzZXRXaW5kb3dX
aWR0aCgyNTYpOworICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMjU2KTsKKyAgICAgICAgc2V0Q29u
ZmlnUmVkQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAgICBz
ZXRDb25maWdCbHVlQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAg
ICAgICBzZXRDb25maWdEZXB0aEJpdHMoMjQpOworICAgICAgICBzZXRDb25maWdTdGVuY2lsQml0
cyg4KTsKKyAgICB9Cit9OworCisvLyBUZXN0cyByZXNvbHZpbmcgYSBtdWx0aXNhbXBsZSBkZXB0
aCBidWZmZXIuCitURVNUX1AoQmxpdEZyYW1lYnVmZmVyVGVzdCwgTXVsdGlzYW1wbGVEZXB0aCkK
K3sKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBUcmlhZ2UgdGhpcyBkcml2ZXIgYnVnLgorICAgIGlm
IChJc0FNRCgpICYmIElzRDNEMTEoKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVz
dCBza2lwcGVkIG9uIEFNRCBEM0QxMS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIEdMUmVuZGVyYnVmZmVyIHJlbmRlcmJ1ZjsKKyAgICBnbEJpbmRSZW5kZXJi
dWZmZXIoR0xfUkVOREVSQlVGRkVSLCByZW5kZXJidWYuZ2V0KCkpOworICAgIGdsUmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdMX1JFTkRFUkJVRkZFUiwgMiwgR0xfREVQVEhfQ09NUE9O
RU5UMjQsIDI1NiwgMjU2KTsKKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2ZXJ0ZXggPQorICAg
ICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJpbiB2ZWMyIHBvc2l0aW9uO1xuIgor
ICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IHZlYzQo
cG9zaXRpb24sIDAuMCwgMC41KTtcbiIKKyAgICAgICAgIn0iOworICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZmcmFnbWVudCA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgIm91
dCBtZWRpdW1wIHZlYzQgcmVkO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAg
ICAiICAgcmVkID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApO1xuIgorICAgICAgICAiICAgZ2xf
RnJhZ0RlcHRoID0gMC41O1xuIgorICAgICAgICAifSI7CisKKyAgICBBTkdMRV9HTF9QUk9HUkFN
KGRyYXdSZWQsIHZlcnRleCwgZnJhZ21lbnQpOworCisgICAgR0xGcmFtZWJ1ZmZlciBmcmFtZWJ1
ZmZlcjsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgZnJhbWVidWZmZXIu
Z2V0KCkpOworICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdM
X0RFUFRIX0FUVEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlbmRlcmJ1Zi5nZXQoKSk7CisKKyAgICBBU1NFUlRfR0xFTlVNX0VRKEdMX0ZS
QU1FQlVGRkVSX0NPTVBMRVRFLCBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZG
RVIpKTsKKworICAgIGdsQ2xlYXJEZXB0aGYoMC41Zik7CisgICAgZ2xDbGVhcihHTF9ERVBUSF9C
VUZGRVJfQklUKTsKKworICAgIEdMUmVuZGVyYnVmZmVyIGRlc3RSZW5kZXJidWY7CisgICAgZ2xC
aW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgZGVzdFJlbmRlcmJ1Zi5nZXQoKSk7Cisg
ICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgR0xfREVQVEhfQ09NUE9O
RU5UMjQsIDI1NiwgMjU2KTsKKworICAgIEdMRnJhbWVidWZmZXIgcmVzb2x2ZWQ7CisgICAgZ2xC
aW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUiwgcmVzb2x2ZWQuZ2V0KCkpOworICAg
IGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUiwgR0xfREVQVEhf
QVRUQUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVzdFJlbmRlcmJ1Zi5nZXQoKSk7CisKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFE
X0ZSQU1FQlVGRkVSLCBmcmFtZWJ1ZmZlci5nZXQoKSk7CisgICAgZ2xCbGl0RnJhbWVidWZmZXIo
MCwgMCwgMjU2LCAyNTYsIDAsIDAsIDI1NiwgMjU2LCBHTF9ERVBUSF9CVUZGRVJfQklULCBHTF9O
RUFSRVNUKTsKKworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCByZXNvbHZl
ZC5nZXQoKSk7CisKKyAgICBHTFRleHR1cmUgY29sb3JidWY7CisgICAgZ2xCaW5kVGV4dHVyZShH
TF9URVhUVVJFXzJELCBjb2xvcmJ1Zi5nZXQoKSk7CisgICAgZ2xUZXhTdG9yYWdlMkQoR0xfVEVY
VFVSRV8yRCwgMSwgR0xfUkdCQTgsIDI1NiwgMjU2KTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVy
ZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwg
Y29sb3JidWYuZ2V0KCksIDApOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAv
LyBDbGVhciB0byBncmVlbgorICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAxLjBmLCAwLjBmLCAxLjBm
KTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAgIEVYUEVDVF9QSVhFTF9D
T0xPUl9FUSgwLCAwLCBHTENvbG9yOjpncmVlbik7CisKKyAgICAvLyBEcmF3IHdpdGggMC41ZiB0
ZXN0IGFuZCB0aGUgdGVzdCBzaG91bGQgcGFzcy4KKyAgICBnbEVuYWJsZShHTF9ERVBUSF9URVNU
KTsKKyAgICBnbERlcHRoRnVuYyhHTF9FUVVBTCk7CisgICAgZHJhd1F1YWQoZHJhd1JlZC5nZXQo
KSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdM
Q29sb3I6OnJlZCk7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKK30KKworLy8gVGVzdCBy
ZXNvbHZpbmcgYSBtdWx0aXNhbXBsZWQgc3RlbmNpbCBidWZmZXIuCitURVNUX1AoQmxpdEZyYW1l
YnVmZmVyVGVzdCwgTXVsdGlzYW1wbGVTdGVuY2lsKQoreworICAgIEdMUmVuZGVyYnVmZmVyIHJl
bmRlcmJ1ZjsKKyAgICBnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCByZW5kZXJi
dWYuZ2V0KCkpOworICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdMX1JFTkRF
UkJVRkZFUiwgMiwgR0xfU1RFTkNJTF9JTkRFWDgsIDI1NiwgMjU2KTsKKworICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZ2ZXJ0ZXggPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAg
ICJpbiB2ZWMyIHBvc2l0aW9uO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAg
ICAiICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAuMCwgMS4wKTtcbiIKKyAgICAgICAg
In0iOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnbWVudCA9CisgICAgICAgICIjdmVyc2lv
biAzMDAgZXNcbiIKKyAgICAgICAgIm91dCBtZWRpdW1wIHZlYzQgcmVkO1xuIgorICAgICAgICAi
dm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgcmVkID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAx
LjApO1xuIgorICAgICAgICAifSI7CisKKyAgICBBTkdMRV9HTF9QUk9HUkFNKGRyYXdSZWQsIHZl
cnRleCwgZnJhZ21lbnQpOworCisgICAgR0xGcmFtZWJ1ZmZlciBmcmFtZWJ1ZmZlcjsKKyAgICBn
bEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgZnJhbWVidWZmZXIuZ2V0KCkpOworICAg
IGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX1NURU5DSUxfQVRU
QUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVuZGVyYnVmLmdldCgpKTsKKworICAgIEFTU0VSVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJf
Q09NUExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOworCisg
ICAgLy8gZmlsbCB0aGUgc3RlbmNpbCBidWZmZXIgd2l0aCAweDEKKyAgICBnbFN0ZW5jaWxGdW5j
KEdMX0FMV0FZUywgMHgxLCAweEZGKTsKKyAgICBnbFN0ZW5jaWxPcChHTF9SRVBMQUNFLCBHTF9S
RVBMQUNFLCBHTF9SRVBMQUNFKTsKKyAgICBnbEVuYWJsZShHTF9TVEVOQ0lMX1RFU1QpOworICAg
IGRyYXdRdWFkKGRyYXdSZWQuZ2V0KCksICJwb3NpdGlvbiIsIDAuNWYpOworCisgICAgR0xUZXh0
dXJlIGRlc3RDb2xvcmJ1ZjsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIGRlc3RD
b2xvcmJ1Zi5nZXQoKSk7CisgICAgZ2xUZXhTdG9yYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xf
UkdCQTgsIDI1NiwgMjU2KTsKKworICAgIEdMUmVuZGVyYnVmZmVyIGRlc3RSZW5kZXJidWY7Cisg
ICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgZGVzdFJlbmRlcmJ1Zi5nZXQo
KSk7CisgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgR0xfU1RFTkNJ
TF9JTkRFWDgsIDI1NiwgMjU2KTsKKworICAgIEdMRnJhbWVidWZmZXIgcmVzb2x2ZWQ7CisgICAg
Z2xCaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUiwgcmVzb2x2ZWQuZ2V0KCkpOwor
ICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRFJBV19GUkFNRUJVRkZFUiwgR0xfQ09MT1Jf
QVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZXN0Q29sb3JidWYuZ2V0KCksIDApOworICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xf
RFJBV19GUkFNRUJVRkZFUiwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0UmVuZGVyYnVmLmdldCgpKTsKKwor
ICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJBTUVCVUZGRVIsIGZyYW1lYnVmZmVyLmdl
dCgpKTsKKyAgICBnbEJsaXRGcmFtZWJ1ZmZlcigwLCAwLCAyNTYsIDI1NiwgMCwgMCwgMjU2LCAy
NTYsIEdMX1NURU5DSUxfQlVGRkVSX0JJVCwgR0xfTkVBUkVTVCk7CisKKyAgICBnbEJpbmRGcmFt
ZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgcmVzb2x2ZWQuZ2V0KCkpOworCisgICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7CisKKyAgICAvLyBDbGVhciB0byBncmVlbgorICAgIGdsQ2xlYXJDb2xvcigw
LjBmLCAxLjBmLCAwLjBmLCAxLjBmKTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQp
OworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpncmVlbik7CisKKyAg
ICAvLyBEcmF3IHJlZCBpZiB0aGUgc3RlbmNpbCBpcyAweDEsIHdoaWNoIHNob3VsZCBiZSB0cnVl
IGFmdGVyIHRoZSBibGl0L3Jlc29sdmUuCisgICAgZ2xTdGVuY2lsRnVuYyhHTF9FUVVBTCwgMHgx
LCAweEZGKTsKKyAgICBkcmF3UXVhZChkcmF3UmVkLmdldCgpLCAicG9zaXRpb24iLCAwLjVmKTsK
KyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6cmVkKTsKKworICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOworfQorCisvLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29u
ZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lv
bikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgorQU5HTEVfSU5TVEFOVElBVEVf
VEVTVChCbGl0RnJhbWVidWZmZXJBTkdMRVRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgIEVT
Ml9EM0Q5KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMShFR0xfRVhQRVJJTUVO
VEFMX1BSRVNFTlRfUEFUSF9DT1BZX0FOR0xFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMy
X0QzRDExKEVHTF9FWFBFUklNRU5UQUxfUFJFU0VOVF9QQVRIX0ZBU1RfQU5HTEUpKTsKKworQU5H
TEVfSU5TVEFOVElBVEVfVEVTVChCbGl0RnJhbWVidWZmZXJUZXN0LCBFUzNfRDNEMTEoKSk7Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2dsX3Rlc3RzL0J1ZmZlckRhdGFUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQnVmZmVyRGF0YVRlc3QuY3Bw
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90
ZXN0cy9CdWZmZXJEYXRhVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NDAgQEAK
Ky8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vCisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorCisjaW5jbHVk
ZSA8c3RkaW50Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKworY2xhc3MgQnVmZmVyRGF0
YVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBCdWZmZXJEYXRh
VGVzdCgpCisgICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0aCgxNik7CisgICAgICAgIHNldFdp
bmRvd0hlaWdodCgxNik7CisgICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7CisgICAgICAgIHNl
dENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7CisgICAg
ICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnRGVwdGhCaXRzKDI0
KTsKKworICAgICAgICBtQnVmZmVyID0gMDsKKyAgICAgICAgbVByb2dyYW0gPSAwOworICAgICAg
ICBtQXR0cmliTG9jYXRpb24gPSAtMTsKKyAgICB9CisKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKKworICAgICAgICBjb25zdCBj
aGFyICogdnNTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgICAgICgKKyAgICAgICAgICAgIGF0
dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uOworICAgICAgICAgICAgYXR0cmlidXRlIGZsb2F0IGluX2F0
dHJpYjsKKyAgICAgICAgICAgIHZhcnlpbmcgZmxvYXQgdl9hdHRyaWI7CisgICAgICAgICAgICB2
b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZfYXR0cmliID0gaW5f
YXR0cmliOworICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247CisgICAgICAg
ICAgICB9CisgICAgICAgICk7CisKKyAgICAgICAgY29uc3QgY2hhciAqIGZzU291cmNlID0gU0hB
REVSX1NPVVJDRQorICAgICAgICAoCisgICAgICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKyAgICAgICAgICAgIHZhcnlpbmcgZmxvYXQgdl9hdHRyaWI7CisgICAgICAgICAgICB2b2lk
IG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZl
YzQodl9hdHRyaWIsIDAsIDAsIDEpOworICAgICAgICAgICAgfQorICAgICAgICApOworCisgICAg
ICAgIGdsR2VuQnVmZmVycygxLCAmbUJ1ZmZlcik7CisgICAgICAgIEFTU0VSVF9ORShtQnVmZmVy
LCAwVSk7CisKKyAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2c1NvdXJjZSwgZnNT
b3VyY2UpOworICAgICAgICBBU1NFUlRfTkUobVByb2dyYW0sIDBVKTsKKworICAgICAgICBtQXR0
cmliTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAiaW5fYXR0cmliIik7
CisgICAgICAgIEFTU0VSVF9ORShtQXR0cmliTG9jYXRpb24sIC0xKTsKKworICAgICAgICBnbENs
ZWFyQ29sb3IoMCwgMCwgMCwgMCk7CisgICAgICAgIGdsQ2xlYXJEZXB0aGYoMC4wKTsKKyAgICAg
ICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCk7CisK
KyAgICAgICAgZ2xEaXNhYmxlKEdMX0RFUFRIX1RFU1QpOworCisgICAgICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtQnVmZmVyKTsKKyAgICAgICAgZ2xEZWxldGVQ
cm9ncmFtKG1Qcm9ncmFtKTsKKworICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7CisgICAg
fQorCisgICAgR0x1aW50IG1CdWZmZXI7CisgICAgR0x1aW50IG1Qcm9ncmFtOworICAgIEdMaW50
IG1BdHRyaWJMb2NhdGlvbjsKK307CisKK1RFU1RfUChCdWZmZXJEYXRhVGVzdCwgTlVMTERhdGEp
Cit7CisgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZlcik7CisgICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBjb25zdCBpbnQgbnVtSXRlcmF0aW9ucyA9IDEyODsK
KyAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUl0ZXJhdGlvbnM7ICsraSkKKyAgICB7CisgICAg
ICAgIEdMc2l6ZWkgYnVmZmVyU2l6ZSA9IHNpemVvZihHTGZsb2F0KSAqIChpICsgMSk7CisgICAg
ICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIGJ1ZmZlclNpemUsIE5VTEwsIEdMX1NU
QVRJQ19EUkFXKTsKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgZm9y
IChpbnQgaiA9IDA7IGogPCBidWZmZXJTaXplOyBqKyspCisgICAgICAgIHsKKyAgICAgICAgICAg
IGZvciAoaW50IGsgPSAwOyBrIDwgYnVmZmVyU2l6ZSAtIGo7IGsrKykKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBnbEJ1ZmZlclN1YkRhdGEoR0xfQVJSQVlfQlVGRkVSLCBrLCBqLCBO
VUxMKTsKKyAgICAgICAgICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KK30KKworVEVTVF9QKEJ1ZmZlckRhdGFUZXN0LCBaZXJvTm9u
TlVMTERhdGEpCit7CisgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZlcik7
CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBjaGFyICp6ZXJvRGF0YSA9IG5ldyBj
aGFyWzBdOworICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIDAsIHplcm9EYXRhLCBH
TF9TVEFUSUNfRFJBVyk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbEJ1ZmZl
clN1YkRhdGEoR0xfQVJSQVlfQlVGRkVSLCAwLCAwLCB6ZXJvRGF0YSk7CisgICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7CisKKyAgICBkZWxldGUgW10gemVyb0RhdGE7Cit9CisKK1RFU1RfUChCdWZm
ZXJEYXRhVGVzdCwgTlVMTFJlc29sdmVkRGF0YSkKK3sKKyAgICBnbEJpbmRCdWZmZXIoR0xfQVJS
QVlfQlVGRkVSLCBtQnVmZmVyKTsKKyAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCAx
MjgsIE5VTEwsIEdMX0RZTkFNSUNfRFJBVyk7CisKKyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0p
OworICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihtQXR0cmliTG9jYXRpb24sIDEsIEdMX0ZMT0FU
LCBHTF9GQUxTRSwgNCwgTlVMTCk7CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtQXR0
cmliTG9jYXRpb24pOworICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIDApOworCisg
ICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworfQorCisvLyBUZXN0cyB0
aGF0IGEgaHVnZSBhbGxvY2F0aW9uIHJldHVybnMgR0xfT1VUX09GX01FTU9SWQorLy8gVE9ETyhq
bWFkaWxsKTogRmlndXJlIG91dCBob3cgdG8gdGVzdCB0aGlzIHJlbGlhYmx5IG9uIHRoZSBDaHJv
bWl1bSBib3RzCitURVNUX1AoQnVmZmVyRGF0YVRlc3QsIERJU0FCTEVEX0h1Z2VTZXREYXRhU2hv
dWxkTm90Q3Jhc2gpCit7CisgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZl
cik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBHTHNpemVpIGFsbG9jU2l6ZSA9
IHN0ZDo6bnVtZXJpY19saW1pdHM8R0xzaXplaT46Om1heCgpID4+IDI7CisKKyAgICB1aW50OF90
ICpkYXRhID0gTlVMTDsKKyAgICB3aGlsZSAoZGF0YSA9PSBOVUxMICYmIGFsbG9jU2l6ZSA+PSA0
KQorICAgIHsKKyAgICAgICAgZGF0YSA9IG5ldyAoc3RkOjpub3Rocm93KSB1aW50OF90W2FsbG9j
U2l6ZV07CisKKyAgICAgICAgaWYgKGRhdGEgPT0gTlVMTCkKKyAgICAgICAgeworICAgICAgICAg
ICAgYWxsb2NTaXplID4+PSAxOworICAgICAgICB9CisgICAgfQorCisgICAgQVNTRVJUX05FKHN0
YXRpY19jYXN0PHVpbnQ4X3QqPihOVUxMKSwgZGF0YSk7CisgICAgbWVtc2V0KGRhdGEsIDAsIGFs
bG9jU2l6ZSk7CisKKyAgICBmbG9hdCAqIGZWYWx1ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQq
PihkYXRhKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBmID0gMDsgZiA8IDY7IGYrKykKKyAgICB7
CisgICAgICAgIGZWYWx1ZVtmXSA9IDEuMGY7CisgICAgfQorCisgICAgZ2xCdWZmZXJEYXRhKEdM
X0FSUkFZX0JVRkZFUiwgYWxsb2NTaXplLCBkYXRhLCBHTF9TVEFUSUNfRFJBVyk7CisKKyAgICBH
TGVudW0gZXJyb3IgPSBnbEdldEVycm9yKCk7CisgICAgaWYgKGVycm9yID09IEdMX05PX0VSUk9S
KQorICAgIHsKKyAgICAgICAgLy8gSWYgd2UgZGlkbid0IGZhaWwgYmVjYXVzZSBvZiBhbiBvdXQg
b2YgbWVtb3J5IGVycm9yLCB0cnkgZHJhd2luZyBhIHF1YWQKKyAgICAgICAgLy8gdXNpbmcgdGhl
IGxhcmdlIGJ1ZmZlcgorCisgICAgICAgIC8vIERJU0FCTEVEIGJlY2F1c2UgaXQgdGFrZXMgYSBs
b25nIHRpbWUsIGJ1dCBsZWZ0IGZvciBwb3N0ZXJpdHkKKworICAgICAgICAvL2dsVXNlUHJvZ3Jh
bShtUHJvZ3JhbSk7CisgICAgICAgIC8vZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKG1BdHRyaWJMb2Nh
dGlvbiwgMSwgR0xfRkxPQVQsIEdMX0ZBTFNFLCA0LCBOVUxMKTsKKyAgICAgICAgLy9nbEVuYWJs
ZVZlcnRleEF0dHJpYkFycmF5KG1BdHRyaWJMb2NhdGlvbik7CisgICAgICAgIC8vZ2xCaW5kQnVm
ZmVyKEdMX0FSUkFZX0JVRkZFUiwgMCk7CisgICAgICAgIC8vZHJhd1F1YWQobVByb2dyYW0sICJw
b3NpdGlvbiIsIDAuNWYpOworICAgICAgICAvL3N3YXBCdWZmZXJzKCk7CisKKyAgICAgICAgLy8v
LyBEcmF3IG9wZXJhdGlvbnMgY2FuIGFsc28gZ2VuZXJhdGUgb3V0LW9mLW1lbW9yeSwgd2hpY2gg
aXMgaW4tc3BlYworICAgICAgICAvL2Vycm9yID0gZ2xHZXRFcnJvcigpOworICAgICAgICAvL2lm
IChlcnJvciA9PSBHTF9OT19FUlJPUikKKyAgICAgICAgLy97CisgICAgICAgIC8vICAgIEdMaW50
IHZpZXdwb3J0U2l6ZVs0XTsKKyAgICAgICAgLy8gICAgZ2xHZXRJbnRlZ2VydihHTF9WSUVXUE9S
VCwgdmlld3BvcnRTaXplKTsKKworICAgICAgICAvLyAgICBHTGludCBtaWRQaXhlbFggPSAodmll
d3BvcnRTaXplWzBdICsgdmlld3BvcnRTaXplWzJdKSAvIDI7CisgICAgICAgIC8vICAgIEdMaW50
IG1pZFBpeGVsWSA9ICh2aWV3cG9ydFNpemVbMV0gKyB2aWV3cG9ydFNpemVbM10pIC8gMjsKKwor
ICAgICAgICAvLyAgICBFWFBFQ1RfUElYRUxfRVEobWlkUGl4ZWxYLCBtaWRQaXhlbFksIDI1NSwg
MCwgMCwgMjU1KTsKKyAgICAgICAgLy99CisgICAgICAgIC8vZWxzZQorICAgICAgICAvL3sKKyAg
ICAgICAgLy8gICAgRVhQRUNUX0VRKEdMX09VVF9PRl9NRU1PUlksIGVycm9yKTsKKyAgICAgICAg
Ly99CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xf
T1VUX09GX01FTU9SWSwgZXJyb3IpOworICAgIH0KKworICAgIGRlbGV0ZVtdIGRhdGE7Cit9CisK
Ky8vIEludGVybmFsbHkgaW4gRDNELCB3ZSBwcm9tb3RlIGR5bmFtaWMgZGF0YSB0byBzdGF0aWMg
YWZ0ZXIgbWFueSBkcmF3IGxvb3BzLiBUaGlzIGNvZGUgdGVzdHMKKy8vIHBhdGguCitURVNUX1Ao
QnVmZmVyRGF0YVRlc3QsIFJlcGVhdGVkRHJhd1dpdGhEeW5hbWljKQoreworICAgIHN0ZDo6dmVj
dG9yPEdMZmxvYXQ+IGRhdGE7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxNjsgKytpKQorICAg
IHsKKyAgICAgICAgZGF0YS5wdXNoX2JhY2soc3RhdGljX2Nhc3Q8R0xmbG9hdD4oaSkpOworICAg
IH0KKworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgZ2xCaW5kQnVmZmVyKEdMX0FS
UkFZX0JVRkZFUiwgbUJ1ZmZlcik7CisgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwg
c2l6ZW9mKEdMZmxvYXQpICogZGF0YS5zaXplKCksIGRhdGEuZGF0YSgpLCBHTF9EWU5BTUlDX0RS
QVcpOworICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihtQXR0cmliTG9jYXRpb24sIDEsIEdMX0ZM
T0FULCBHTF9GQUxTRSwgMCwgbnVsbHB0cik7CisgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JV
RkZFUiwgMCk7CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtQXR0cmliTG9jYXRpb24p
OworCisgICAgZm9yIChpbnQgZHJhd0NvdW50ID0gMDsgZHJhd0NvdW50IDwgNDA7ICsrZHJhd0Nv
dW50KQorICAgIHsKKyAgICAgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYp
OworICAgIH0KKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworfQorCitjbGFzcyBJbmRleGVk
QnVmZmVyQ29weVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBJ
bmRleGVkQnVmZmVyQ29weVRlc3QoKQorICAgIHsKKyAgICAgICAgc2V0V2luZG93V2lkdGgoMTYp
OworICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTYpOworICAgICAgICBzZXRDb25maWdSZWRCaXRz
KDgpOworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0Js
dWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgICAgIHNldENv
bmZpZ0RlcHRoQml0cygyNCk7CisgICAgfQorCisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7CisKKyAgICAgICAgY29uc3QgY2hhciAq
IHZzU291cmNlID0gU0hBREVSX1NPVVJDRQorICAgICAgICAoCisgICAgICAgICAgICBhdHRyaWJ1
dGUgdmVjMyBpbl9hdHRyaWI7CisgICAgICAgICAgICB2YXJ5aW5nIHZlYzMgdl9hdHRyaWI7Cisg
ICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZf
YXR0cmliID0gaW5fYXR0cmliOworICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNCgw
LjAsIDAuMCwgMC41LCAxLjApOworICAgICAgICAgICAgICAgIGdsX1BvaW50U2l6ZSA9IDEwMC4w
OworICAgICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAgIGNvbnN0IGNoYXIgKiBmc1Nv
dXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAgcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisgICAgICAgICAgICB2YXJ5aW5nIHZlYzMgdl9hdHRyaWI7CisgICAgICAg
ICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsX0ZyYWdD
b2xvciA9IHZlYzQodl9hdHRyaWIsIDEpOworICAgICAgICAgICAgfQorICAgICAgICApOworCisg
ICAgICAgIGdsR2VuQnVmZmVycygyLCBtQnVmZmVycyk7CisgICAgICAgIEFTU0VSVF9ORShtQnVm
ZmVyc1swXSwgMFUpOworICAgICAgICBBU1NFUlRfTkUobUJ1ZmZlcnNbMV0sIDBVKTsKKworICAg
ICAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1FbGVtZW50QnVmZmVyKTsKKyAgICAgICAgQVNTRVJUX05F
KG1FbGVtZW50QnVmZmVyLCAwVSk7CisKKyAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3Jh
bSh2c1NvdXJjZSwgZnNTb3VyY2UpOworICAgICAgICBBU1NFUlRfTkUobVByb2dyYW0sIDBVKTsK
KworICAgICAgICBtQXR0cmliTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFt
LCAiaW5fYXR0cmliIik7CisgICAgICAgIEFTU0VSVF9ORShtQXR0cmliTG9jYXRpb24sIC0xKTsK
KworICAgICAgICBnbENsZWFyQ29sb3IoMCwgMCwgMCwgMCk7CisgICAgICAgIGdsRGlzYWJsZShH
TF9ERVBUSF9URVNUKTsKKyAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKwor
ICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3du
KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGdsRGVsZXRlQnVmZmVycygyLCBtQnVmZmVycyk7
CisgICAgICAgIGdsRGVsZXRlQnVmZmVycygxLCAmbUVsZW1lbnRCdWZmZXIpOworICAgICAgICBn
bERlbGV0ZVByb2dyYW0obVByb2dyYW0pOworCisgICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24o
KTsKKyAgICB9CisKKyAgICBHTHVpbnQgbUJ1ZmZlcnNbMl07CisgICAgR0x1aW50IG1FbGVtZW50
QnVmZmVyOworICAgIEdMdWludCBtUHJvZ3JhbTsKKyAgICBHTGludCBtQXR0cmliTG9jYXRpb247
Cit9OworCisvLyBUaGUgZm9sbG93aW5nIHRlc3QgY292ZXJzIGFuIEFOR0xFIGJ1ZyB3aGVyZSBv
dXIgaW5kZXggcmFuZ2VzCisvLyB3ZXJlbid0IHVwZGF0ZWQgZnJvbSBDb3B5QnVmZmVyU3ViRGF0
YSBjYWxscworLy8gaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9hbmdsZXByb2plY3QvaXNzdWVz
L2RldGFpbD9pZD03MDkKK1RFU1RfUChJbmRleGVkQnVmZmVyQ29weVRlc3QsIEluZGV4UmFuZ2VC
dWcpCit7CisgICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBGaWd1cmUgb3V0IHdoeSB0aGlzIGZhaWxz
IG9uIEFNRCBPcGVuR0wgKGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTI5MSkKKyAgICBpZiAoSXNBTUQo
KSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BF
TkdMX0FOR0xFKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVkIG9u
IEFNRCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICB1bnNpZ25lZCBjaGFyIHZlcnRleERhdGFbXSA9IHsgMjU1LCAwLCAwLCAwLCAwLCAwIH07Cisg
ICAgdW5zaWduZWQgaW50IGluZGV4RGF0YVtdID0geyAwLCAxIH07CisKKyAgICBnbEJpbmRCdWZm
ZXIoR0xfQVJSQVlfQlVGRkVSLCBtQnVmZmVyc1swXSk7CisgICAgZ2xCdWZmZXJEYXRhKEdMX0FS
UkFZX0JVRkZFUiwgc2l6ZW9mKGNoYXIpICogNiwgdmVydGV4RGF0YSwgR0xfU1RBVElDX0RSQVcp
OworCisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50
ZXIobUF0dHJpYkxvY2F0aW9uLCAzLCBHTF9VTlNJR05FRF9CWVRFLCBHTF9UUlVFLCAzLCBOVUxM
KTsKKyAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1BdHRyaWJMb2NhdGlvbik7CisKKyAg
ICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIGdsQmluZEJ1ZmZlcihHTF9FTEVNRU5UX0FS
UkFZX0JVRkZFUiwgbUVsZW1lbnRCdWZmZXIpOworICAgIGdsQnVmZmVyRGF0YShHTF9FTEVNRU5U
X0FSUkFZX0JVRkZFUiwgc2l6ZW9mKGludCkgKiAxLCBpbmRleERhdGEsIEdMX1NUQVRJQ19EUkFX
KTsKKworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKKworICAgIGdsRHJhd0VsZW1lbnRzKEdMX1BPSU5UUywgMSwgR0xfVU5TSUdORURfSU5U
LCBOVUxMKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9QSVhFTF9F
USgwLCAwLCAyNTUsIDAsIDAsIDI1NSk7CisKKyAgICBnbEJpbmRCdWZmZXIoR0xfQ09QWV9SRUFE
X0JVRkZFUiwgbUJ1ZmZlcnNbMV0pOworICAgIGdsQnVmZmVyRGF0YShHTF9DT1BZX1JFQURfQlVG
RkVSLCA0LCAmaW5kZXhEYXRhWzFdLCBHTF9TVEFUSUNfRFJBVyk7CisKKyAgICBnbEJpbmRCdWZm
ZXIoR0xfQ09QWV9XUklURV9CVUZGRVIsIG1FbGVtZW50QnVmZmVyKTsKKworICAgIGdsQ29weUJ1
ZmZlclN1YkRhdGEoR0xfQ09QWV9SRUFEX0JVRkZFUiwgR0xfQ09QWV9XUklURV9CVUZGRVIsIDAs
IDAsIHNpemVvZihpbnQpKTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xD
bGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMCwg
MCwgMCwgMCk7CisKKyAgICB1bnNpZ25lZCBjaGFyIG5ld0RhdGFbXSA9IHsgMCwgMjU1LCAwIH07
CisgICAgZ2xCdWZmZXJTdWJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgMywgMywgbmV3RGF0YSk7CisK
KyAgICBnbERyYXdFbGVtZW50cyhHTF9QT0lOVFMsIDEsIEdMX1VOU0lHTkVEX0lOVCwgTlVMTCk7
CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwg
MCwgMjU1LCAwLCAyNTUpOworfQorCitjbGFzcyBCdWZmZXJEYXRhVGVzdEVTMyA6IHB1YmxpYyBC
dWZmZXJEYXRhVGVzdAoreworfTsKKworLy8gVGhlIGZvbGxvd2luZyB0ZXN0IGNvdmVycyBhbiBB
TkdMRSBidWcgd2hlcmUgdGhlIGJ1ZmZlciBzdG9yYWdlCisvLyBpcyBub3QgcmVzaXplZCBieSBC
dWZmZXIxMTo6Z2V0TGF0ZXN0QnVmZmVyU3RvcmFnZSB3aGVuIG5lZWRlZC4KKy8vIGh0dHBzOi8v
Y29kZS5nb29nbGUuY29tL3AvYW5nbGVwcm9qZWN0L2lzc3Vlcy9kZXRhaWw/aWQ9ODk3CitURVNU
X1AoQnVmZmVyRGF0YVRlc3RFUzMsIEJ1ZmZlclJlc2l6aW5nKQoreworICAgIGdsQmluZEJ1ZmZl
cihHTF9BUlJBWV9CVUZGRVIsIG1CdWZmZXIpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwor
CisgICAgLy8gQWxsb2NhdGUgYSBidWZmZXIgd2l0aCBvbmUgYnl0ZQorICAgIHVpbnQ4X3Qgc2lu
Z2xlQnl0ZVtdID0geyAweGFhIH07CisgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwg
MSwgc2luZ2xlQnl0ZSwgR0xfU1RBVElDX0RSQVcpOworCisgICAgLy8gUmVzaXplIHRoZSBidWZm
ZXIKKyAgICAvLyBUbyB0cmlnZ2VyIHRoZSBidWcsIHRoZSBidWZmZXIgbmVlZCB0byBiZSBiaWcg
ZW5vdWdoIGJlY2F1c2Ugc29tZSBoYXJkd2FyZSBjb3B5IGJ1ZmZlcnMKKyAgICAvLyBieSBjaHVu
a3Mgb2YgcGFnZXMgaW5zdGVhZCBvZiB0aGUgbWluaW11bSBudW1iZXIgb2YgYnl0ZXMgbmVlZWRl
ZC4KKyAgICBjb25zdCBzaXplX3QgbnVtQnl0ZXMgPSA0MDk2KjQ7CisgICAgZ2xCdWZmZXJEYXRh
KEdMX0FSUkFZX0JVRkZFUiwgbnVtQnl0ZXMsIE5VTEwsIEdMX1NUQVRJQ19EUkFXKTsKKworICAg
IC8vIENvcHkgdGhlIG9yaWdpbmFsIGRhdGEgdG8gdGhlIGJ1ZmZlcgorICAgIHVpbnQ4X3Qgc3Jj
Qnl0ZXNbbnVtQnl0ZXNdOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQnl0ZXM7ICsr
aSkKKyAgICB7CisgICAgICAgIHNyY0J5dGVzW2ldID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oaSk7
CisgICAgfQorCisgICAgdm9pZCAqZGVzdCA9IGdsTWFwQnVmZmVyUmFuZ2UoR0xfQVJSQVlfQlVG
RkVSLCAwLCBudW1CeXRlcywgR0xfTUFQX1dSSVRFX0JJVCB8IEdMX01BUF9JTlZBTElEQVRFX0JV
RkZFUl9CSVQpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBtZW1jcHkoZGVz
dCwgc3JjQnl0ZXMsIG51bUJ5dGVzKTsKKyAgICBnbFVubWFwQnVmZmVyKEdMX0FSUkFZX0JVRkZF
Uik7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIENyZWF0ZSBhIG5ldyBi
dWZmZXIgYW5kIGNvcHkgdGhlIGRhdGEgdG8gaXQKKyAgICBHTHVpbnQgcmVhZEJ1ZmZlcjsKKyAg
ICBnbEdlbkJ1ZmZlcnMoMSwgJnJlYWRCdWZmZXIpOworICAgIGdsQmluZEJ1ZmZlcihHTF9DT1BZ
X1dSSVRFX0JVRkZFUiwgcmVhZEJ1ZmZlcik7CisgICAgdWludDhfdCB6ZXJvc1tudW1CeXRlc107
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1CeXRlczsgKytpKQorICAgIHsKKyAgICAg
ICAgemVyb3NbaV0gPSAwOworICAgIH0KKyAgICBnbEJ1ZmZlckRhdGEoR0xfQ09QWV9XUklURV9C
VUZGRVIsIG51bUJ5dGVzLCB6ZXJvcywgR0xfU1RBVElDX0RSQVcpOworICAgIGdsQ29weUJ1ZmZl
clN1YkRhdGEoR0xfQVJSQVlfQlVGRkVSLCBHTF9DT1BZX1dSSVRFX0JVRkZFUiwgMCwgMCwgbnVt
Qnl0ZXMpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBSZWFkIGJhY2sg
dGhlIGRhdGEgYW5kIGNvbXBhcmUgaXQgdG8gdGhlIG9yaWdpbmFsCisgICAgdWludDhfdCAqZGF0
YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGdsTWFwQnVmZmVyUmFuZ2UoR0xfQ09QWV9X
UklURV9CVUZGRVIsIDAsIG51bUJ5dGVzLCBHTF9NQVBfUkVBRF9CSVQpKTsKKworICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1CeXRlczsg
KytpKQorICAgIHsKKyAgICAgICAgRVhQRUNUX0VRKHNyY0J5dGVzW2ldLCBkYXRhW2ldKTsKKyAg
ICB9CisgICAgZ2xVbm1hcEJ1ZmZlcihHTF9DT1BZX1dSSVRFX0JVRkZFUik7CisKKyAgICBnbERl
bGV0ZUJ1ZmZlcnMoMSwgJnJlYWRCdWZmZXIpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
Cit9CisKKy8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3
aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91
bGQgYmUgcnVuIGFnYWluc3QuCitBTkdMRV9JTlNUQU5USUFURV9URVNUKEJ1ZmZlckRhdGFUZXN0
LCBFUzJfRDNEOSgpLCBFUzJfRDNEMTEoKSwgRVMyX09QRU5HTCgpLCBFUzJfT1BFTkdMRVMoKSk7
CitBTkdMRV9JTlNUQU5USUFURV9URVNUKEJ1ZmZlckRhdGFUZXN0RVMzLCBFUzNfRDNEMTEoKSwg
RVMzX09QRU5HTCgpLCBFUzNfT1BFTkdMRVMoKSk7CitBTkdMRV9JTlNUQU5USUFURV9URVNUKElu
ZGV4ZWRCdWZmZXJDb3B5VGVzdCwgRVMzX0QzRDExKCksIEVTM19PUEVOR0woKSwgRVMzX09QRU5H
TEVTKCkpOworCisjaWZkZWYgX1dJTjY0CisKKy8vIFRlc3QgYSBidWcgd2hlcmUgYW4gaW50ZWdl
ciBvdmVyZmxvdyBidWcgY291bGQgdHJpZ2dlciBhIGNyYXNoIGluIEQzRC4KKy8vIFRoZSB0ZXN0
IHVzZXMgOCBidWZmZXJzIHdpdGggYSBzaXplIGp1c3QgdW5kZXIgMHgyMDAwMDAwIHRvIG92ZXJm
bG93IG1heCB1aW50CisvLyAod2l0aCB0aGUgaW50ZXJuYWwgRDNEIHJvdW5kaW5nIHRvIDE2LWJ5
dGUgdmFsdWVzKSBhbmQgdHJpZ2dlciB0aGUgYnVnLgorLy8gT25seSBoYW5kbGUgdGhpcyBidWcg
b24gNjQtYml0IFdpbmRvd3MgZm9yIG5vdy4gSGFyZGVyIHRvIHJlcHJvIG9uIDMyLWJpdC4KK2Ns
YXNzIEJ1ZmZlckRhdGFPdmVyZmxvd1Rlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3Rl
Y3RlZDoKKyAgICBCdWZmZXJEYXRhT3ZlcmZsb3dUZXN0KCkKKyAgICAgICAgOiBtUHJvZ3JhbSgw
KQorICAgIHsKKyAgICB9CisKKyAgICB+QnVmZmVyRGF0YU92ZXJmbG93VGVzdCgpCisgICAgewor
ICAgICAgICBpZiAoIW1CdWZmZXJzLmVtcHR5KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGds
RGVsZXRlQnVmZmVycyhzdGF0aWNfY2FzdDxHTHNpemVpPihtQnVmZmVycy5zaXplKCkpLCAmbUJ1
ZmZlcnNbMF0pOworICAgICAgICB9CisgICAgICAgIGlmIChtUHJvZ3JhbSAhPSAwdSkKKyAgICAg
ICAgeworICAgICAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHN0ZDo6dmVjdG9yPEdMdWludD4gbUJ1ZmZlcnM7CisgICAgR0x1aW50IG1Q
cm9ncmFtOworfTsKKworLy8gU2VlIGRlc2NyaXB0aW9uIGFib3ZlLgorVEVTVF9QKEJ1ZmZlckRh
dGFPdmVyZmxvd1Rlc3QsIFZlcnRleEJ1ZmZlckludGVnZXJPdmVyZmxvdykKK3sKKyAgICAvLyBU
aGVzZSB2YWx1ZXMgYXJlIHNwZWNpYWwsIHRvIHRyaWdnZXIgdGhlIHJvdW5kaW5nIGJ1Zy4KKyAg
ICB1bnNpZ25lZCBpbnQgbnVtSXRlbXMgPSAweDdGRkZGRkU7CisgICAgR0xzaXplaSBidWZmZXJD
bnQgPSA4OworCisgICAgbUJ1ZmZlcnMucmVzaXplKGJ1ZmZlckNudCk7CisKKyAgICBzdGQ6OnN0
cmluZ3N0cmVhbSB2ZXJ0ZXhTaGFkZXJTdHI7CisKKyAgICBmb3IgKEdMc2l6ZWkgYnVmZmVySW5k
ZXggPSAwOyBidWZmZXJJbmRleCA8IGJ1ZmZlckNudDsgKytidWZmZXJJbmRleCkKKyAgICB7Cisg
ICAgICAgIHZlcnRleFNoYWRlclN0ciA8PCAiYXR0cmlidXRlIGZsb2F0IGF0dHJpYiIgPDwgYnVm
ZmVySW5kZXggPDwgIjtcbiI7CisgICAgfQorCisgICAgdmVydGV4U2hhZGVyU3RyIDw8ICJhdHRy
aWJ1dGUgdmVjMiBwb3NpdGlvbjtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgInZhcnlpbmcg
ZmxvYXQgdl9hdHRyaWI7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ2b2lkIG1haW4oKSB7
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlv
biwgMCwgMSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgIHZfYXR0cmliID0gMC4wO1xu
IjsKKworICAgIGZvciAoR0xzaXplaSBidWZmZXJJbmRleCA9IDA7IGJ1ZmZlckluZGV4IDwgYnVm
ZmVyQ250OyArK2J1ZmZlckluZGV4KQorICAgIHsKKyAgICAgICAgdmVydGV4U2hhZGVyU3RyIDw8
ICJ2X2F0dHJpYiArPSBhdHRyaWIiIDw8IGJ1ZmZlckluZGV4IDw8ICI7XG4iOworICAgIH0KKwor
ICAgIHZlcnRleFNoYWRlclN0ciA8PCAifSI7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJh
Z21lbnRTaGFkZXIgPQorICAgICAgICAidmFyeWluZyBoaWdocCBmbG9hdCB2X2F0dHJpYjtcbiIK
KyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdmVj
NCh2X2F0dHJpYiwgMCwgMCwgMSk7XG4iCisgICAgICAgICJ9IjsKKworICAgIG1Qcm9ncmFtID0g
Q29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU3RyLnN0cigpLCBmcmFnbWVudFNoYWRlcik7Cisg
ICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7CisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsK
KworICAgIGdsR2VuQnVmZmVycyhidWZmZXJDbnQsICZtQnVmZmVyc1swXSk7CisKKyAgICBzdGQ6
OnZlY3RvcjxHTGZsb2F0PiBkYXRhKG51bUl0ZW1zLCAxLjBmKTsKKworICAgIGZvciAoR0xzaXpl
aSBidWZmZXJJbmRleCA9IDA7IGJ1ZmZlckluZGV4IDwgYnVmZmVyQ250OyArK2J1ZmZlckluZGV4
KQorICAgIHsKKyAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZlcnNb
YnVmZmVySW5kZXhdKTsKKyAgICAgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgbnVt
SXRlbXMgKiBzaXplb2YoZmxvYXQpLCAmZGF0YVswXSwgR0xfRFlOQU1JQ19EUkFXKTsKKworICAg
ICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBhdHRyaWJOYW1lU3RyOworICAgICAgICBhdHRyaWJOYW1l
U3RyIDw8ICJhdHRyaWIiIDw8IGJ1ZmZlckluZGV4OworCisgICAgICAgIEdMaW50IGF0dHJpYkxv
Y2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgYXR0cmliTmFtZVN0ci5zdHIo
KS5jX3N0cigpKTsKKyAgICAgICAgQVNTRVJUX05FKC0xLCBhdHRyaWJMb2NhdGlvbik7CisKKyAg
ICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKGF0dHJpYkxvY2F0aW9uLCAxLCBHTF9GTE9BVCwg
R0xfRkFMU0UsIDQsIG51bGxwdHIpOworICAgICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KGF0dHJpYkxvY2F0aW9uKTsKKyAgICB9CisKKyAgICBHTGludCBwb3NpdGlvbkxvY2F0aW9uID0g
Z2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgInBvc2l0aW9uIik7CisgICAgQVNTRVJUX05F
KC0xLCBwb3NpdGlvbkxvY2F0aW9uKTsKKyAgICBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShw
b3NpdGlvbkxvY2F0aW9uKTsKKyAgICBnbFZlcnRleEF0dHJpYjJmKHBvc2l0aW9uTG9jYXRpb24s
IDEuMGYsIDEuMGYpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgZ2xEcmF3QXJy
YXlzKEdMX1RSSUFOR0xFUywgMCwgbnVtSXRlbXMpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9P
VVRfT0ZfTUVNT1JZKTsKK30KKworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChCdWZmZXJEYXRhT3Zl
cmZsb3dUZXN0LCBFUzNfRDNEMTEoKSk7CisKKyNlbmRpZiAgLy8gX1dJTjY0CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQnVpbHRpblZhcmlhYmxlVGVz
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2ds
X3Rlc3RzL0J1aWx0aW5WYXJpYWJsZVRlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9CdWlsdGluVmFyaWFibGVUZXN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIwOSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEJ1aWx0aW5W
YXJpYWJsZVRlc3Q6CisvLyAgIFRlc3RzIHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUgYnVpbHRpbiBH
TFNMIHZhcmlhYmxlcy4KKy8vCisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgor
Cit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKK2NsYXNzIEJ1aWx0aW5WYXJpYWJsZVZlcnRleElk
VGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIEJ1aWx0aW5WYXJp
YWJsZVZlcnRleElkVGVzdCgpCisgICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0aCg2NCk7Cisg
ICAgICAgIHNldFdpbmRvd0hlaWdodCg2NCk7CisgICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7
CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQmx1ZUJp
dHMoOCk7CisgICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmln
RGVwdGhCaXRzKDI0KTsKKyAgICB9CisKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKKworICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyB2c1NvdXJjZSA9CisgICAgICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICAg
ICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgorICAgICAgICAgICAgImluIHZlYzQgcG9zaXRp
b247XG4iCisgICAgICAgICAgICAiaW4gaW50IGV4cGVjdGVkSUQ7IgorICAgICAgICAgICAgIm91
dCB2ZWM0IGNvbG9yO1xuIgorICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgInZvaWQgbWFp
bigpXG4iCisgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9
IHBvc2l0aW9uO1xuIgorICAgICAgICAgICAgIiAgICBjb2xvciA9IHZlYzQoZ2xfVmVydGV4SUQg
IT0gZXhwZWN0ZWRJRCwgZ2xfVmVydGV4SUQgPT0gZXhwZWN0ZWRJRCwgMC4wLCAxLjApOyIKKyAg
ICAgICAgICAgICJ9XG4iOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZzU291cmNlID0K
KyAgICAgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgICAgICJwcmVjaXNpb24g
aGlnaHAgZmxvYXQ7XG4iCisgICAgICAgICAgICAiaW4gdmVjNCBjb2xvcjtcbiIKKyAgICAgICAg
ICAgICJvdXQgdmVjNCBmcmFnQ29sb3I7XG4iCisgICAgICAgICAgICAidm9pZCBtYWluKClcbiIK
KyAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAiICAgIGZyYWdDb2xvciA9IGNvbG9yO1xu
IgorICAgICAgICAgICAgIn1cbiI7CisKKyAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3Jh
bSh2c1NvdXJjZSwgZnNTb3VyY2UpOworICAgICAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsK
KworICAgICAgICBtUG9zaXRpb25Mb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dy
YW0sICJwb3NpdGlvbiIpOworICAgICAgICBBU1NFUlRfTkUoLTEsIG1Qb3NpdGlvbkxvY2F0aW9u
KTsKKyAgICAgICAgbUV4cGVjdGVkSWRMb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24obVBy
b2dyYW0sICJleHBlY3RlZElEIik7CisgICAgICAgIEFTU0VSVF9ORSgtMSwgbUV4cGVjdGVkSWRM
b2NhdGlvbik7CisKKyAgICAgICAgc3RhdGljIGNvbnN0IGZsb2F0IHBvc2l0aW9uc1tdID0KKyAg
ICAgICAgeworICAgICAgICAgICAgIDAuNSwgIDAuNSwKKyAgICAgICAgICAgIC0wLjUsICAwLjUs
CisgICAgICAgICAgICAgMC41LCAtMC41LAorICAgICAgICAgICAgLTAuNSwgLTAuNQorICAgICAg
ICB9OworICAgICAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1Qb3NpdGlvbkJ1ZmZlcik7CisgICAgICAg
IGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1Qb3NpdGlvbkJ1ZmZlcik7CisgICAgICAg
IGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIHNpemVvZihwb3NpdGlvbnMpLCBwb3NpdGlv
bnMsIEdMX1NUQVRJQ19EUkFXKTsKKworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAg
ICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGdsRGVs
ZXRlQnVmZmVycygxLCAmbVBvc2l0aW9uQnVmZmVyKTsKKyAgICAgICAgZ2xEZWxldGVCdWZmZXJz
KDEsICZtRXhwZWN0ZWRJZEJ1ZmZlcik7CisgICAgICAgIGdsRGVsZXRlQnVmZmVycygxLCAmbUlu
ZGV4QnVmZmVyKTsKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKKworICAgICAg
ICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7CisgICAgfQorCisgICAgLy8gUmVuZGVycyBhIHByaW1p
dGl2ZSB1c2luZyB0aGUgc3BlY2lmaWVkIG1vZGUsIGVhY2ggdmVydGV4IGNvbG9yIHdpbGwKKyAg
ICAvLyBiZSBncmVlbiBpZiBnbF9WZXJ0ZXhJRCBpcyBjb3JyZWN0LCByZWQgb3RoZXJ3aXNlLgor
ICAgIHZvaWQgcnVuVGVzdChHTHVpbnQgZHJhd01vZGUsIGNvbnN0IHN0ZDo6dmVjdG9yPEdMaW50
PiAmaW5kaWNlcywgaW50IGNvdW50KQorICAgIHsKKyAgICAgICAgZ2xDbGVhckNvbG9yKDAuMCwg
MC4wLCAwLjAsIDEuMCk7CisgICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisK
KyAgICAgICAgZ2xHZW5CdWZmZXJzKDEsICZtSW5kZXhCdWZmZXIpOworICAgICAgICBnbEJpbmRC
dWZmZXIoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG1JbmRleEJ1ZmZlcik7CisgICAgICAgIGds
QnVmZmVyRGF0YShHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgc2l6ZW9mKEdMaW50KSAqIGluZGlj
ZXMuc2l6ZSgpLCBpbmRpY2VzLmRhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgIEdMX1NUQVRJ
Q19EUkFXKTsKKworICAgICAgICBzdGQ6OnZlY3RvcjxHTGludD4gZXhwZWN0ZWRJZHMgPSBtYWtl
UmFuZ2UoY291bnQpOworCisgICAgICAgIGdsR2VuQnVmZmVycygxLCAmbUV4cGVjdGVkSWRCdWZm
ZXIpOworICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtRXhwZWN0ZWRJZEJ1
ZmZlcik7CisgICAgICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIHNpemVvZihHTGlu
dCkgKiBleHBlY3RlZElkcy5zaXplKCksIGV4cGVjdGVkSWRzLmRhdGEoKSwKKyAgICAgICAgICAg
ICAgICAgICAgIEdMX1NUQVRJQ19EUkFXKTsKKworICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJS
QVlfQlVGRkVSLCBtUG9zaXRpb25CdWZmZXIpOworICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50
ZXIobVBvc2l0aW9uTG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgMCk7CisgICAg
ICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkobVBvc2l0aW9uTG9jYXRpb24pOworCisgICAg
ICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1FeHBlY3RlZElkQnVmZmVyKTsKKyAg
ICAgICAgZ2xWZXJ0ZXhBdHRyaWJJUG9pbnRlcihtRXhwZWN0ZWRJZExvY2F0aW9uLCAxLCBHTF9J
TlQsIDAsIDApOworICAgICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1FeHBlY3RlZElk
TG9jYXRpb24pOworCisgICAgICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgICAgIGds
QmluZEJ1ZmZlcihHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbUluZGV4QnVmZmVyKTsKKyAgICAg
ICAgZ2xEcmF3RWxlbWVudHMoZHJhd01vZGUsIGNvdW50LCBHTF9VTlNJR05FRF9JTlQsIDApOwor
CisgICAgICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHBpeGVscyhnZXRXaW5kb3dXaWR0aCgpICog
Z2V0V2luZG93SGVpZ2h0KCkpOworICAgICAgICBnbFJlYWRQaXhlbHMoMCwgMCwgZ2V0V2luZG93
V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisg
ICAgICAgICAgICAgICAgICAgICBwaXhlbHMuZGF0YSgpKTsKKworICAgICAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKKworICAgICAgICBjb25zdCBHTENvbG9yIGdyZWVuKDAsIDI1NSwgMCwgMjU1
KTsKKyAgICAgICAgY29uc3QgR0xDb2xvciBibGFjaygwLCAwLCAwLCAyNTUpOworCisgICAgICAg
IGZvciAoY29uc3QgYXV0byAmcGl4ZWwgOiBwaXhlbHMpCisgICAgICAgIHsKKyAgICAgICAgICAg
IEVYUEVDVF9UUlVFKHBpeGVsID09IGdyZWVuIHx8IHBpeGVsID09IGJsYWNrKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHN0ZDo6dmVjdG9yPEdMaW50PiBtYWtlUmFuZ2UoaW50IG4pIGNvbnN0
CisgICAgeworICAgICAgICBzdGQ6OnZlY3RvcjxHTGludD4gcmVzdWx0OworICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG47IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgcmVzdWx0LnB1
c2hfYmFjayhpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
CisgICAgR0x1aW50IG1Qb3NpdGlvbkJ1ZmZlciAgID0gMDsKKyAgICBHTHVpbnQgbUV4cGVjdGVk
SWRCdWZmZXIgPSAwOworICAgIEdMdWludCBtSW5kZXhCdWZmZXIgICAgICA9IDA7CisKKyAgICBH
THVpbnQgbVByb2dyYW0gICAgICAgICAgID0gMDsKKyAgICBHTGludCBtUG9zaXRpb25Mb2NhdGlv
biAgID0gLTE7CisgICAgR0xpbnQgbUV4cGVjdGVkSWRMb2NhdGlvbiA9IC0xOworfTsKKworLy8g
VGVzdCBnbF9WZXJ0ZXhJRCB3aGVuIHJlbmRlcmluZyBwb2ludHMKK1RFU1RfUChCdWlsdGluVmFy
aWFibGVWZXJ0ZXhJZFRlc3QsIFBvaW50cykKK3sKKyAgICBydW5UZXN0KEdMX1BPSU5UUywgbWFr
ZVJhbmdlKDQpLCA0KTsKK30KKworLy8gVGVzdCBnbF9WZXJ0ZXhJRCB3aGVuIHJlbmRlcmluZyBs
aW5lIHN0cmlwcworVEVTVF9QKEJ1aWx0aW5WYXJpYWJsZVZlcnRleElkVGVzdCwgTGluZVN0cmlw
KQoreworICAgIHJ1blRlc3QoR0xfTElORV9TVFJJUCwgbWFrZVJhbmdlKDQpLCA0KTsKK30KKwor
Ly8gVGVzdCBnbF9WZXJ0ZXhJRCB3aGVuIHJlbmRlcmluZyBsaW5lIGxvb3BzCitURVNUX1AoQnVp
bHRpblZhcmlhYmxlVmVydGV4SWRUZXN0LCBMaW5lTG9vcCkKK3sKKyAgICBydW5UZXN0KEdMX0xJ
TkVfTE9PUCwgbWFrZVJhbmdlKDQpLCA0KTsKK30KKworLy8gVGVzdCBnbF9WZXJ0ZXhJRCB3aGVu
IHJlbmRlcmluZyBsaW5lcworVEVTVF9QKEJ1aWx0aW5WYXJpYWJsZVZlcnRleElkVGVzdCwgTGlu
ZXMpCit7CisgICAgcnVuVGVzdChHTF9MSU5FUywgbWFrZVJhbmdlKDQpLCA0KTsKK30KKworLy8g
VGVzdCBnbF9WZXJ0ZXhJRCB3aGVuIHJlbmRlcmluZyB0cmlhbmdsZSBzdHJpcHMKK1RFU1RfUChC
dWlsdGluVmFyaWFibGVWZXJ0ZXhJZFRlc3QsIFRyaWFuZ2xlU3RyaXApCit7CisgICAgcnVuVGVz
dChHTF9UUklBTkdMRV9TVFJJUCwgbWFrZVJhbmdlKDQpLCA0KTsKK30KKworLy8gVGVzdCBnbF9W
ZXJ0ZXhJRCB3aGVuIHJlbmRlcmluZyB0cmlhbmdsZSBmYW5zCitURVNUX1AoQnVpbHRpblZhcmlh
YmxlVmVydGV4SWRUZXN0LCBUcmlhbmdsZUZhbikKK3sKKyAgICBzdGQ6OnZlY3RvcjxHTGludD4g
aW5kaWNlczsKKyAgICBpbmRpY2VzLnB1c2hfYmFjaygwKTsKKyAgICBpbmRpY2VzLnB1c2hfYmFj
aygxKTsKKyAgICBpbmRpY2VzLnB1c2hfYmFjaygzKTsKKyAgICBpbmRpY2VzLnB1c2hfYmFjaygy
KTsKKyAgICBydW5UZXN0KEdMX1RSSUFOR0xFX0ZBTiwgaW5kaWNlcywgNCk7Cit9CisKKy8vIFRl
c3QgZ2xfVmVydGV4SUQgd2hlbiByZW5kZXJpbmcgdHJpYW5nbGVzCitURVNUX1AoQnVpbHRpblZh
cmlhYmxlVmVydGV4SWRUZXN0LCBUcmlhbmdsZXMpCit7CisgICAgc3RkOjp2ZWN0b3I8R0xpbnQ+
IGluZGljZXM7CisgICAgaW5kaWNlcy5wdXNoX2JhY2soMCk7CisgICAgaW5kaWNlcy5wdXNoX2Jh
Y2soMSk7CisgICAgaW5kaWNlcy5wdXNoX2JhY2soMik7CisgICAgaW5kaWNlcy5wdXNoX2JhY2so
MSk7CisgICAgaW5kaWNlcy5wdXNoX2JhY2soMik7CisgICAgaW5kaWNlcy5wdXNoX2JhY2soMyk7
CisgICAgcnVuVGVzdChHTF9UUklBTkdMRVMsIGluZGljZXMsIDYpOworfQorCisvLyBVc2UgdGhp
cyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdo
aWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UKKy8vIHRlc3RzIHNob3VsZCBiZSBydW4gYWdh
aW5zdC4KK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoQnVpbHRpblZhcmlhYmxlVmVydGV4SWRUZXN0
LCBFUzNfRDNEMTEoKSwgRVMzX09QRU5HTCgpLCBFUzNfT1BFTkdMRVMoKSk7CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQ2xlYXJUZXN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQ2xl
YXJUZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZ2xfdGVzdHMvQ2xlYXJUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4
MSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKKyNp
bmNsdWRlICJyYW5kb21fdXRpbHMuaCIKKyNpbmNsdWRlICJWZWN0b3IuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIGFuZ2xlOworCituYW1lc3BhY2UKK3sKKworVmVjdG9yNCBSYW5kb21WZWM0KGludCBz
ZWVkLCBmbG9hdCBtaW5WYWx1ZSwgZmxvYXQgbWF4VmFsdWUpCit7CisgICAgUk5HIHJuZyhzZWVk
KTsKKyAgICBzcmFuZChzZWVkKTsKKyAgICByZXR1cm4gVmVjdG9yNCgKKyAgICAgICAgcm5nLnJh
bmRvbUZsb2F0QmV0d2VlbihtaW5WYWx1ZSwgbWF4VmFsdWUpLCBybmcucmFuZG9tRmxvYXRCZXR3
ZWVuKG1pblZhbHVlLCBtYXhWYWx1ZSksCisgICAgICAgIHJuZy5yYW5kb21GbG9hdEJldHdlZW4o
bWluVmFsdWUsIG1heFZhbHVlKSwgcm5nLnJhbmRvbUZsb2F0QmV0d2VlbihtaW5WYWx1ZSwgbWF4
VmFsdWUpKTsKK30KKworR0xDb2xvciBWZWM0VG9Db2xvcihjb25zdCBWZWN0b3I0ICZ2ZWMpCit7
CisgICAgR0xDb2xvciBjb2xvcjsKKyAgICBjb2xvci5SID0gc3RhdGljX2Nhc3Q8dWludDhfdD4o
dmVjLnggKiAyNTUuMGYpOworICAgIGNvbG9yLkcgPSBzdGF0aWNfY2FzdDx1aW50OF90Pih2ZWMu
eSAqIDI1NS4wZik7CisgICAgY29sb3IuQiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHZlYy56ICog
MjU1LjBmKTsKKyAgICBjb2xvci5BID0gc3RhdGljX2Nhc3Q8dWludDhfdD4odmVjLncgKiAyNTUu
MGYpOworICAgIHJldHVybiBjb2xvcjsKK307CisKK2NsYXNzIENsZWFyVGVzdEJhc2UgOiBwdWJs
aWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBDbGVhclRlc3RCYXNlKCkgOiBtUHJv
Z3JhbSgwKQorICAgIHsKKyAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKKyAgICAgICAgc2V0
V2luZG93SGVpZ2h0KDEyOCk7CisgICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7CisgICAgICAg
IHNldENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Cisg
ICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnRGVwdGhCaXRz
KDI0KTsKKyAgICB9CisKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IEFOR0xFVGVzdDo6U2V0VXAoKTsKKworICAgICAgICBtRkJPcy5yZXNpemUoMiwgMCk7CisgICAg
ICAgIGdsR2VuRnJhbWVidWZmZXJzKDIsIG1GQk9zLmRhdGEoKSk7CisKKyAgICAgICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOworCisgICAgICAgIGlmICgh
bUZCT3MuZW1wdHkoKSkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZl
cnMoc3RhdGljX2Nhc3Q8R0xzaXplaT4obUZCT3Muc2l6ZSgpKSwgbUZCT3MuZGF0YSgpKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICghbVRleHR1cmVzLmVtcHR5KCkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoc3RhdGljX2Nhc3Q8R0xzaXplaT4obVRleHR1cmVz
LnNpemUoKSksIG1UZXh0dXJlcy5kYXRhKCkpOworICAgICAgICB9CisKKyAgICAgICAgQU5HTEVU
ZXN0OjpUZWFyRG93bigpOworICAgIH0KKworICAgIHZvaWQgc2V0dXBEZWZhdWx0UHJvZ3JhbSgp
CisgICAgeworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBT
SEFERVJfU09VUkNFCisgICAgICAgICgKKyAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9h
dDsKKyAgICAgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uOworCisgICAgICAgICAgICB2
b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0g
cG9zaXRpb247CisgICAgICAgICAgICB9CisgICAgICAgICk7CisKKyAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgICAgICgK
KyAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKKworICAgICAgICAgICAgdm9pZCBt
YWluKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0
KDEuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgICAgICAgICB9CisgICAgICAgICk7CisKKyAgICAg
ICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50
U2hhZGVyU291cmNlKTsKKyAgICAgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7CisgICAgfQor
CisgICAgR0x1aW50IG1Qcm9ncmFtOworICAgIHN0ZDo6dmVjdG9yPEdMdWludD4gbUZCT3M7Cisg
ICAgc3RkOjp2ZWN0b3I8R0x1aW50PiBtVGV4dHVyZXM7Cit9OworCitjbGFzcyBDbGVhclRlc3Qg
OiBwdWJsaWMgQ2xlYXJUZXN0QmFzZSB7fTsKK2NsYXNzIENsZWFyVGVzdEVTMyA6IHB1YmxpYyBD
bGVhclRlc3RCYXNlIHt9OworCisvLyBUZXN0IGNsZWFyaW5nIHRoZSBkZWZhdWx0IGZyYW1lYnVm
ZmVyCitURVNUX1AoQ2xlYXJUZXN0LCBEZWZhdWx0RnJhbWVidWZmZXIpCit7CisgICAgZ2xDbGVh
ckNvbG9yKDAuMjVmLCAwLjVmLCAwLjVmLCAwLjVmKTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JV
RkZFUl9CSVQpOworICAgIEVYUEVDVF9QSVhFTF9ORUFSKDAsIDAsIDY0LCAxMjgsIDEyOCwgMTI4
LCAxLjApOworfQorCisvLyBUZXN0IGNsZWFyaW5nIGEgUkdCQTggRnJhbWVidWZmZXIKK1RFU1Rf
UChDbGVhclRlc3QsIFJHQkE4RnJhbWVidWZmZXIpCit7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIG1GQk9zWzBdKTsKKworICAgIEdMdWludCB0ZXh0dXJlOworICAgIGds
R2VuVGV4dHVyZXMoMSwgJnRleHR1cmUpOworCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
XzJELCB0ZXh0dXJlKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdC
QSwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIDAsIEdMX1JHQkEsCisgICAg
ICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOworICAgIGdsRnJhbWVidWZm
ZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhU
VVJFXzJELCB0ZXh0dXJlLCAwKTsKKworICAgIGdsQ2xlYXJDb2xvcigwLjVmLCAwLjVmLCAwLjVm
LCAwLjVmKTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworCisgICAgRVhQRUNU
X1BJWEVMX05FQVIoMCwgMCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxLjApOworfQorCitURVNUX1Ao
Q2xlYXJUZXN0LCBDbGVhcklzc3VlKQoreworICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogRmlndXJl
IG91dCB3aHkgdGhpcyBpcyBicm9rZW4gb24gSW50ZWwgT3BlbkdMCisgICAgaWYgKElzSW50ZWwo
KSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BF
TkdMX0FOR0xFKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24g
SW50ZWwgT3BlbkdMLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgZ2xFbmFibGUoR0xfREVQVEhfVEVTVCk7CisgICAgZ2xEZXB0aEZ1bmMoR0xfTEVRVUFMKTsK
KworICAgIGdsQ2xlYXJDb2xvcigwLjAsIDEuMCwgMC4wLCAxLjApOworICAgIGdsQ2xlYXJEZXB0
aGYoMC4wKTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZG
RVJfQklUKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xCaW5kRnJhbWVi
dWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GQk9zWzBdKTsKKworICAgIEdMdWludCByYm87CisgICAg
Z2xHZW5SZW5kZXJidWZmZXJzKDEsICZyYm8pOworICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9S
RU5ERVJCVUZGRVIsIHJibyk7CisgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJV
RkZFUiwgR0xfUkdCNTY1LCAxNiwgMTYpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisK
KyAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9B
VFRBQ0hNRU5UMCwgR0xfUkVOREVSQlVGRkVSLCByYm8pOworCisgICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7CisKKyAgICBnbENsZWFyQ29sb3IoMS4wZiwgMC4wZiwgMC4wZiwgMS4wZik7CisgICAg
Z2xDbGVhckRlcHRoZigxLjBmKTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBH
TF9ERVBUSF9CVUZGRVJfQklUKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAg
Z2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApOworICAgIGdsQmluZEJ1ZmZlcihH
TF9BUlJBWV9CVUZGRVIsIDApOworCisgICAgc2V0dXBEZWZhdWx0UHJvZ3JhbSgpOworICAgIGRy
YXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgIEVYUEVDVF9QSVhFTF9F
USgwLCAwLCAwLCAyNTUsIDAsIDI1NSk7Cit9CisKKy8vIFJlcXVpcmVzIEVTMworLy8gVGhpcyB0
ZXN0cyBhIGJ1ZyB3aGVyZSBpbiBhIG1hc2tlZCBjbGVhciB3aGVuIGNhbGxpbmcgIkNsZWFyQnVm
ZmVyIiwgd2Ugd291bGQKKy8vIG1pc3Rha2VubHkgY2xlYXIgZXZlcnkgY2hhbm5lbCAoaW5jbHVk
aW5nIHRoZSBtYXNrZWQtb3V0IG9uZXMpCitURVNUX1AoQ2xlYXJUZXN0RVMzLCBNYXNrZWRDbGVh
ckJ1ZmZlckJ1ZykKK3sKKyAgICB1bnNpZ25lZCBjaGFyIHBpeGVsRGF0YVtdID0geyAyNTUsIDI1
NSwgMjU1LCAyNTUgfTsKKworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBt
RkJPc1swXSk7CisKKyAgICBHTHVpbnQgdGV4dHVyZXNbMl07CisgICAgZ2xHZW5UZXh0dXJlcygy
LCAmdGV4dHVyZXNbMF0pOworCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0
dXJlc1swXSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDEs
IDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVsRGF0YSk7CisgICAgZ2xGcmFt
ZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdM
X1RFWFRVUkVfMkQsIHRleHR1cmVzWzBdLCAwKTsKKworICAgIGdsQmluZFRleHR1cmUoR0xfVEVY
VFVSRV8yRCwgdGV4dHVyZXNbMV0pOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAw
LCBHTF9SR0JBLCAxLCAxLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbERhdGEp
OworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FU
VEFDSE1FTlQxLCBHTF9URVhUVVJFXzJELCB0ZXh0dXJlc1sxXSwgMCk7CisKKyAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMjU1LCAyNTUsIDI1NSwg
MjU1KTsKKworICAgIGZsb2F0IGNsZWFyVmFsdWVbXSA9IHsgMCwgMC41ZiwgMC41ZiwgMS4wZiB9
OworICAgIEdMZW51bSBkcmF3QnVmZmVyc1tdID0geyBHTF9OT05FLCBHTF9DT0xPUl9BVFRBQ0hN
RU5UMSB9OworICAgIGdsRHJhd0J1ZmZlcnMoMiwgZHJhd0J1ZmZlcnMpOworICAgIGdsQ29sb3JN
YXNrKEdMX1RSVUUsIEdMX1RSVUUsIEdMX0ZBTFNFLCBHTF9UUlVFKTsKKyAgICBnbENsZWFyQnVm
ZmVyZnYoR0xfQ09MT1IsIDEsIGNsZWFyVmFsdWUpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7CisgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDI1NSwgMjU1LCAyNTUsIDI1NSk7CisKKyAg
ICBnbFJlYWRCdWZmZXIoR0xfQ09MT1JfQVRUQUNITUVOVDEpOworICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOworCisgICAgRVhQRUNUX1BJWEVMX05FQVIoMCwgMCwgMCwgMTI3LCAyNTUsIDI1NSwg
MSk7CisKKyAgICBnbERlbGV0ZVRleHR1cmVzKDIsIHRleHR1cmVzKTsKK30KKworVEVTVF9QKENs
ZWFyVGVzdEVTMywgQmFkRkJPU2VyaWFsQnVnKQoreworICAgIC8vIEZpcnN0IG1ha2UgYSBzaW1w
bGUgZnJhbWVidWZmZXIsIGFuZCBjbGVhciBpdCB0byBncmVlbgorICAgIGdsQmluZEZyYW1lYnVm
ZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRkJPc1swXSk7CisKKyAgICBHTHVpbnQgdGV4dHVyZXNbMl07
CisgICAgZ2xHZW5UZXh0dXJlcygyLCAmdGV4dHVyZXNbMF0pOworCisgICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlc1swXSk7CisgICAgZ2xUZXhTdG9yYWdlMkQoR0xfVEVY
VFVSRV8yRCwgMSwgR0xfUkdCQTgsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgp
KTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9B
VFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgdGV4dHVyZXNbMF0sIDApOworCisgICAgR0xlbnVt
IGRyYXdCdWZmZXJzW10gPSB7IEdMX0NPTE9SX0FUVEFDSE1FTlQwIH07CisgICAgZ2xEcmF3QnVm
ZmVycygxLCBkcmF3QnVmZmVycyk7CisKKyAgICBmbG9hdCBjbGVhclZhbHVlczFbXSA9IHsgMC4w
ZiwgMS4wZiwgMC4wZiwgMS4wZiB9OworICAgIGdsQ2xlYXJCdWZmZXJmdihHTF9DT0xPUiwgMCwg
Y2xlYXJWYWx1ZXMxKTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9Q
SVhFTF9FUSgwLCAwLCAwLCAyNTUsIDAsIDI1NSk7CisKKyAgICAvLyBOZXh0IG1ha2UgYSBzZWNv
bmQgZnJhbWVidWZmZXIsIGFuZCBkcmF3IGl0IHRvIHJlZAorICAgIC8vIChUcmlnZ2VycyBiYWQg
YXBwbGllZCByZW5kZXIgdGFyZ2V0IHNlcmlhbCkKKyAgICBHTHVpbnQgZmJvMjsKKyAgICBnbEdl
bkZyYW1lYnVmZmVycygxLCAmZmJvMik7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAg
ICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgZmJvMik7CisKKyAgICBnbEJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmVzWzFdKTsKKyAgICBnbFRleFN0b3JhZ2UyRChH
TF9URVhUVVJFXzJELCAxLCBHTF9SR0JBOCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVp
Z2h0KCkpOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NP
TE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXh0dXJlc1sxXSwgMCk7CisKKyAgICBn
bERyYXdCdWZmZXJzKDEsIGRyYXdCdWZmZXJzKTsKKworICAgIHNldHVwRGVmYXVsdFByb2dyYW0o
KTsKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisKKyAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMjU1LCAwLCAwLCAy
NTUpOworCisgICAgLy8gQ2hlY2sgdGhhdCB0aGUgZmlyc3QgZnJhbWVidWZmZXIgaXMgc3RpbGwg
Z3JlZW4uCisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GQk9zWzBdKTsK
KyAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMCwgMjU1LCAwLCAyNTUpOworCisgICAgZ2xEZWxl
dGVUZXh0dXJlcygyLCB0ZXh0dXJlcyk7CisgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZi
bzIpOworfQorCisvLyBUZXN0IHRoYXQgU1JHQiBmcmFtZWJ1ZmZlcnMgY2xlYXIgdG8gdGhlIGxp
bmVhcml6ZWQgY2xlYXIgY29sb3IKK1RFU1RfUChDbGVhclRlc3RFUzMsIFNSR0JDbGVhcikKK3sK
KyAgICAvLyBUT0RPKGptYWRpbGwpOiBmaWd1cmUgb3V0IHdoeSB0aGlzIGZhaWxzCisgICAgaWYg
KElzSW50ZWwoKSAmJiBHZXRQYXJhbSgpID09IEVTM19PUEVOR0woKSkKKyAgICB7CisgICAgICAg
IHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIGR1ZSB0byBmYWlsdXJlcy4iIDw8
IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZpcnN0IG1ha2Ug
YSBzaW1wbGUgZnJhbWVidWZmZXIsIGFuZCBjbGVhciBpdAorICAgIGdsQmluZEZyYW1lYnVmZmVy
KEdMX0ZSQU1FQlVGRkVSLCBtRkJPc1swXSk7CisKKyAgICBHTHVpbnQgdGV4dHVyZTsKKyAgICBn
bEdlblRleHR1cmVzKDEsICZ0ZXh0dXJlKTsKKworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVS
RV8yRCwgdGV4dHVyZSk7CisgICAgZ2xUZXhTdG9yYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xf
U1JHQjhfQUxQSEE4LCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7CisgICAg
Z2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVO
VDAsIEdMX1RFWFRVUkVfMkQsIHRleHR1cmUsIDApOworCisgICAgZ2xDbGVhckNvbG9yKDAuNWYs
IDAuNWYsIDAuNWYsIDAuNWYpOworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisK
KyAgICBFWFBFQ1RfUElYRUxfTkVBUigwLCAwLCAxODgsIDE4OCwgMTg4LCAxMjgsIDEuMCk7Cit9
CisKKy8vIFRlc3QgdGhhdCBmcmFtZWJ1ZmZlcnMgd2l0aCBtaXhlZCBTUkdCL0xpbmVhciBhdHRh
Y2htZW50cyBjbGVhciB0byB0aGUgY29ycmVjdCBjb2xvciBmb3IgZWFjaAorLy8gYXR0YWNobWVu
dAorVEVTVF9QKENsZWFyVGVzdEVTMywgTWl4ZWRTUkdCQ2xlYXIpCit7CisgICAgLy8gVE9ETyhj
d2FsbGV6KSBmaWd1cmUgb3V0IHdoeSBpdCBpcyBicm9rZW4gb24gSW50ZWwgb24gTWFjCisjaWYg
ZGVmaW5lZChBTkdMRV9QTEFURk9STV9BUFBMRSkKKyAgICBpZiAoSXNJbnRlbCgpICYmIGdldFBs
YXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUp
CisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBvbiBN
YWMuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAg
IC8vIFRPRE8oam1hZGlsbCk6IGZpZ3VyZSBvdXQgd2h5IHRoaXMgZmFpbHMKKyAgICBpZiAoSXNJ
bnRlbCgpICYmIEdldFBhcmFtKCkgPT0gRVMzX09QRU5HTCgpKQorICAgIHsKKyAgICAgICAgc3Rk
Ojpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgZHVlIHRvIGZhaWx1cmVzLiIgPDwgc3Rk
OjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZ2xCaW5kRnJhbWVidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIG1GQk9zWzBdKTsKKworICAgIEdMdWludCB0ZXh0dXJlc1syXTsKKyAg
ICBnbEdlblRleHR1cmVzKDIsICZ0ZXh0dXJlc1swXSk7CisKKyAgICBnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQsIHRleHR1cmVzWzBdKTsKKyAgICBnbFRleFN0b3JhZ2UyRChHTF9URVhUVVJF
XzJELCAxLCBHTF9TUkdCOF9BTFBIQTgsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdo
dCgpKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xP
Ul9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgdGV4dHVyZXNbMF0sIDApOworCisgICAgZ2xC
aW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlc1sxXSk7CisgICAgZ2xUZXhTdG9yYWdl
MkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdCQTgsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRv
d0hlaWdodCgpKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBH
TF9DT0xPUl9BVFRBQ0hNRU5UMSwgR0xfVEVYVFVSRV8yRCwgdGV4dHVyZXNbMV0sIDApOworCisg
ICAgR0xlbnVtIGRyYXdCdWZmZXJzW10gPSB7R0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX0NPTE9S
X0FUVEFDSE1FTlQxfTsKKyAgICBnbERyYXdCdWZmZXJzKDIsIGRyYXdCdWZmZXJzKTsKKworICAg
IC8vIENsZWFyIGJvdGggdGV4dHVyZXMKKyAgICBnbENsZWFyQ29sb3IoMC41ZiwgMC41ZiwgMC41
ZiwgMC41Zik7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAgIGdsRnJh
bWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBH
TF9URVhUVVJFXzJELCAwLCAwKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1F
QlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMSwgR0xfVEVYVFVSRV8yRCwgMCwgMCk7CisKKyAg
ICAvLyBDaGVjayB2YWx1ZSBvZiB0ZXh0dXJlMAorICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQo
R0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXh0
dXJlc1swXSwgMCk7CisgICAgRVhQRUNUX1BJWEVMX05FQVIoMCwgMCwgMTg4LCAxODgsIDE4OCwg
MTI4LCAxLjApOworCisgICAgLy8gQ2hlY2sgdmFsdWUgb2YgdGV4dHVyZTEKKyAgICBnbEZyYW1l
YnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xf
VEVYVFVSRV8yRCwgdGV4dHVyZXNbMV0sIDApOworICAgIEVYUEVDVF9QSVhFTF9ORUFSKDAsIDAs
IDEyOCwgMTI4LCAxMjgsIDEyOCwgMS4wKTsKK30KKworLy8gVGhpcyB0ZXN0IGNvdmVycyBhIEQz
RDExIGJ1ZyB3aGVyZSBjYWxsaW5nIENsZWFyUmVuZGVyVGFyZ2V0VmlldyBzb21ldGltZXMgd291
bGRuJ3Qgc3luYworLy8gYmVmb3JlIGEgZHJhdyBjYWxsLiBUaGUgdGVzdCBkcmF3cyBzbWFsbCBx
dWFkcyB0byBhIGxhcmdlciBGQk8gKHRoZSBkZWZhdWx0IGJhY2sgYnVmZmVyKS4KKy8vIEJlZm9y
ZSBlYWNoIGJsaXQgdG8gdGhlIGJhY2sgYnVmZmVyIGl0IGNsZWFycyB0aGUgcXVhZCB0byBhIGNl
cnRhaW4gY29sb3IgdXNpbmcKKy8vIENsZWFyQnVmZmVyZnYgdG8gZ2l2ZSBhIHNvbGlkIGNvbG9y
LiBUaGUgc3luYyBwcm9ibGVtIGdvZXMgYXdheSBpZiB3ZSBpbnNlcnQgYSBjYWxsIHRvCisvLyBm
bHVzaCBvciBmaW5pc2ggYWZ0ZXIgQ2xlYXJCdWZmZXJmdiBvciBlYWNoIGRyYXcuCitURVNUX1Ao
Q2xlYXJUZXN0RVMzLCBSZXBlYXRlZENsZWFyKQoreworICAgIGlmIChJc0QzRDExKCkgJiYgKElz
TlZJRElBKCkgfHwgSXNJbnRlbCgpKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVz
dCBza2lwcGVkIG9uIE52aWRpYSBhbmQgSW50ZWwgRDNEMTEuIiA8PCBzdGQ6OmVuZGw7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmVydGV4U291cmNl
ID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAiaW4gaGlnaHAgdmVjMiBw
b3NpdGlvbjtcbiIKKyAgICAgICAgIm91dCBoaWdocCB2ZWMyIHZfY29vcmQ7XG4iCisgICAgICAg
ICJ2b2lkIG1haW4odm9pZClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBnbF9Qb3Np
dGlvbiA9IHZlYzQocG9zaXRpb24sIDAsIDEpO1xuIgorICAgICAgICAiICAgIHZlYzIgdGV4Q29v
cmQgPSAocG9zaXRpb24gKiAwLjUpICsgMC41O1xuIgorICAgICAgICAiICAgIHZfY29vcmQgPSB0
ZXhDb29yZDtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJh
Z21lbnRTb3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJpbiBo
aWdocCB2ZWMyIHZfY29vcmQ7XG4iCisgICAgICAgICJvdXQgaGlnaHAgdmVjNCBjb2xvcjtcbiIK
KyAgICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHRleDtcbiIKKyAgICAgICAgInZvaWQgbWFpbigp
XG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgY29sb3IgPSB0ZXh0dXJlKHRleCwgdl9j
b29yZCk7XG4iCisgICAgICAgICJ9XG4iOworCisgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3Jh
bSh2ZXJ0ZXhTb3VyY2UsIGZyYWdtZW50U291cmNlKTsKKyAgICBBU1NFUlRfTkUoMHUsIG1Qcm9n
cmFtKTsKKworICAgIG1UZXh0dXJlcy5yZXNpemUoMSwgMCk7CisgICAgZ2xHZW5UZXh0dXJlcygx
LCBtVGV4dHVyZXMuZGF0YSgpKTsKKworICAgIEdMZW51bSBmb3JtYXQgICAgICAgICAgID0gR0xf
UkdCQTg7CisgICAgY29uc3QgaW50IG51bVJvd3NDb2xzICAgPSAzOworICAgIGNvbnN0IGludCBj
ZWxsU2l6ZSAgICAgID0gMzI7CisgICAgY29uc3QgaW50IGZib1NpemUgICAgICAgPSBjZWxsU2l6
ZTsKKyAgICBjb25zdCBpbnQgYmFja0ZCT1NpemUgICA9IGNlbGxTaXplICogbnVtUm93c0NvbHM7
CisgICAgY29uc3QgZmxvYXQgZm10VmFsdWVNaW4gPSAwLjBmOworICAgIGNvbnN0IGZsb2F0IGZt
dFZhbHVlTWF4ID0gMS4wZjsKKworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRl
eHR1cmVzWzBdKTsKKyAgICBnbFRleFN0b3JhZ2UyRChHTF9URVhUVVJFXzJELCAxLCBmb3JtYXQs
IGZib1NpemUsIGZib1NpemUpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKyAg
ICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBH
TF9ORUFSRVNUKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKwor
ICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRkJPc1swXSk7CisgICAgZ2xG
cmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAs
IEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSwgMCk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7CisKKyAgICBBU1NFUlRfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFLCBnbENo
ZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKKworICAgIC8vIGxhcmdlciBm
Ym8gYm91bmQgLS0gY2xlYXIgdG8gdHJhbnNwYXJlbnQgYmxhY2sKKyAgICBnbFVzZVByb2dyYW0o
bVByb2dyYW0pOworICAgIEdMaW50IHVuaUxvYyA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9n
cmFtLCAidGV4Iik7CisgICAgQVNTRVJUX05FKC0xLCB1bmlMb2MpOworICAgIGdsVW5pZm9ybTFp
KHVuaUxvYywgMCk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNb
MF0pOworCisgICAgR0xpbnQgcG9zaXRpb25Mb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24o
bVByb2dyYW0sICJwb3NpdGlvbiIpOworICAgIEFTU0VSVF9ORSgtMSwgcG9zaXRpb25Mb2NhdGlv
bik7CisKKyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworCisgICAgZm9yIChpbnQgY2VsbFkg
PSAwOyBjZWxsWSA8IG51bVJvd3NDb2xzOyBjZWxsWSsrKQorICAgIHsKKyAgICAgICAgZm9yIChp
bnQgY2VsbFggPSAwOyBjZWxsWCA8IG51bVJvd3NDb2xzOyBjZWxsWCsrKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpbnQgc2VlZCAgICAgICAgICAgID0gY2VsbFggKyBjZWxsWSAqIG51bVJvd3ND
b2xzOworICAgICAgICAgICAgY29uc3QgVmVjdG9yNCBjb2xvciA9IFJhbmRvbVZlYzQoc2VlZCwg
Zm10VmFsdWVNaW4sIGZtdFZhbHVlTWF4KTsKKworICAgICAgICAgICAgZ2xCaW5kRnJhbWVidWZm
ZXIoR0xfRlJBTUVCVUZGRVIsIG1GQk9zWzBdKTsKKyAgICAgICAgICAgIGdsQ2xlYXJCdWZmZXJm
dihHTF9DT0xPUiwgMCwgY29sb3IuZGF0YSgpKTsKKworICAgICAgICAgICAgZ2xCaW5kRnJhbWVi
dWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApOworCisgICAgICAgICAgICAvLyBNZXRob2QgMTogU2V0
IHZpZXdwb3J0IGFuZCBkcmF3IGZ1bGwtdmlld3BvcnQgcXVhZAorICAgICAgICAgICAgZ2xWaWV3
cG9ydChjZWxsWCAqIGNlbGxTaXplLCBjZWxsWSAqIGNlbGxTaXplLCBjZWxsU2l6ZSwgY2VsbFNp
emUpOworICAgICAgICAgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwor
CisgICAgICAgICAgICAvLyBVbmNvbW1lbnRpbmcgdGhlIGdsRmluaXNoIGNhbGwgc2VlbXMgdG8g
bWFrZSB0aGUgdGVzdCBwYXNzLgorICAgICAgICAgICAgLy8gZ2xGaW5pc2goKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHBpeGVsRGF0YShiYWNrRkJPU2l6
ZSAqIGJhY2tGQk9TaXplKTsKKyAgICBnbFJlYWRQaXhlbHMoMCwgMCwgYmFja0ZCT1NpemUsIGJh
Y2tGQk9TaXplLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbERhdGEuZGF0YSgpKTsK
KworICAgIGZvciAoaW50IGNlbGxZID0gMDsgY2VsbFkgPCBudW1Sb3dzQ29sczsgY2VsbFkrKykK
KyAgICB7CisgICAgICAgIGZvciAoaW50IGNlbGxYID0gMDsgY2VsbFggPCBudW1Sb3dzQ29sczsg
Y2VsbFgrKykKKyAgICAgICAgeworICAgICAgICAgICAgaW50IHNlZWQgICAgICAgICAgICAgID0g
Y2VsbFggKyBjZWxsWSAqIG51bVJvd3NDb2xzOworICAgICAgICAgICAgY29uc3QgVmVjdG9yNCBj
b2xvciAgID0gUmFuZG9tVmVjNChzZWVkLCBmbXRWYWx1ZU1pbiwgZm10VmFsdWVNYXgpOworICAg
ICAgICAgICAgR0xDb2xvciBleHBlY3RlZENvbG9yID0gVmVjNFRvQ29sb3IoY29sb3IpOworCisg
ICAgICAgICAgICBpbnQgdGVzdE4gICAgICAgICAgID0gY2VsbFggKiBjZWxsU2l6ZSArIGNlbGxZ
ICogYmFja0ZCT1NpemUgKiBjZWxsU2l6ZSArIGJhY2tGQk9TaXplICsgMTsKKyAgICAgICAgICAg
IEdMQ29sb3IgYWN0dWFsQ29sb3IgPSBwaXhlbERhdGFbdGVzdE5dOworICAgICAgICAgICAgRVhQ
RUNUX05FQVIoZXhwZWN0ZWRDb2xvci5SLCBhY3R1YWxDb2xvci5SLCAxKTsKKyAgICAgICAgICAg
IEVYUEVDVF9ORUFSKGV4cGVjdGVkQ29sb3IuRywgYWN0dWFsQ29sb3IuRywgMSk7CisgICAgICAg
ICAgICBFWFBFQ1RfTkVBUihleHBlY3RlZENvbG9yLkIsIGFjdHVhbENvbG9yLkIsIDEpOworICAg
ICAgICAgICAgRVhQRUNUX05FQVIoZXhwZWN0ZWRDb2xvci5BLCBhY3R1YWxDb2xvci5BLCAxKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworfQorCisvLyBV
c2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVy
ZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBh
Z2FpbnN0LgorQU5HTEVfSU5TVEFOVElBVEVfVEVTVChDbGVhclRlc3QsCisgICAgICAgICAgICAg
ICAgICAgICAgIEVTMl9EM0Q5KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgp
LAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgRVMyX09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKCks
CisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpLAorICAgICAgICAgICAgICAg
ICAgICAgICBFUzNfT1BFTkdMRVMoKSk7CitBTkdMRV9JTlNUQU5USUFURV9URVNUKENsZWFyVGVz
dEVTMywgRVMzX0QzRDExKCksIEVTM19PUEVOR0woKSwgRVMzX09QRU5HTEVTKCkpOworCit9ICAv
LyBhbm9ueW1vdXMgbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZ2xfdGVzdHMvQ29sb3JNYXNrVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NvbG9yTWFza1Rlc3QuY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9D
b2xvck1hc2tUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExMCBAQAorLy8KKy8v
IENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKworLy8gQ29sb3JNYXNrVGVzdC5jcHA6IFRlc3QgR0xFUyBmdW5jdGlvbmFsaXR5IHJlbGF0
ZWQgdG8gY29sb3IgbWFza3MsIHBhcnRpY3VsYXJseSBhbiBBTUQgRDNEOQorLy8gZHJpdmVyIGJ1
Zy4KKworI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKK25hbWVzcGFjZSBhbmds
ZQoreworY2xhc3MgQ29sb3JNYXNrVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJvdGVj
dGVkOgorICAgIENvbG9yTWFza1Rlc3QoKSA6IG1Qcm9ncmFtKDApCisgICAgeworICAgICAgICBz
ZXRXaW5kb3dXaWR0aCgxMjgpOworICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKKyAgICAg
ICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOwor
ICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRz
KDgpOworICAgICAgICBzZXRDb25maWdEZXB0aEJpdHMoMjQpOworICAgIH0KKworICAgIHZvaWQg
U2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOworCisg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzU291cmNlID0KKyAgICAgICAgICAgICJwcmVjaXNp
b24gaGlnaHAgZmxvYXQ7XG4iCisgICAgICAgICAgICAiYXR0cmlidXRlIHZlYzQgcG9zaXRpb247
XG4iCisgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAg
ICAgICAgICJ7XG4iCisgICAgICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247XG4i
CisgICAgICAgICAgICAifVxuIjsKKworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmc1NvdXJj
ZSA9CisgICAgICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgorICAgICAgICAgICAg
InVuaWZvcm0gdmVjNCBjb2xvcjtcbiIKKyAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICJ2
b2lkIG1haW4oKVxuIgorICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICIgICAgZ2xfRnJh
Z0NvbG9yID0gY29sb3I7XG4iCisgICAgICAgICAgICAifVxuIjsKKworICAgICAgICBtUHJvZ3Jh
bSA9IENvbXBpbGVQcm9ncmFtKHZzU291cmNlLCBmc1NvdXJjZSk7CisgICAgICAgIEFTU0VSVF9O
RSgwdSwgbVByb2dyYW0pIDw8ICJzaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLiI7CisKKyAgICAg
ICAgbUNvbG9yVW5pZm9ybSA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAiY29sb3Ii
KTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7CisKKyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93
bigpOworICAgIH0KKworICAgIEdMdWludCBtUHJvZ3JhbSAgICAgPSAwOworICAgIEdMaW50IG1D
b2xvclVuaWZvcm0gPSAtMTsKK307CisKKy8vIFNvbWUgQVRJIGNhcmRzIGhhdmUgYSBidWcgd2hl
cmUgYSBkcmF3IHdpdGggYSB6ZXJvIGNvbG9yIHdyaXRlIG1hc2sgY2FuIGNhdXNlIGxhdGVyIGRy
YXdzIHRvIGhhdmUKKy8vIGluY29ycmVjdCByZXN1bHRzLiBUZXN0IHRvIG1ha2Ugc3VyZSB0aGlz
IGJ1ZyBpcyBub3QgZXhwb3NlZC4KK1RFU1RfUChDb2xvck1hc2tUZXN0LCBBTURaZXJvQ29sb3JN
YXNrQnVnKQoreworICAgIGludCB4ID0gZ2V0V2luZG93V2lkdGgoKSAvIDI7CisgICAgaW50IHkg
PSBnZXRXaW5kb3dIZWlnaHQoKSAvIDI7CisKKyAgICAvLyBDbGVhciB0byBibHVlCisgICAgZ2xD
bGVhckNvbG9yKDAuMGYsIDAuMGYsIDEuMGYsIDEuMGYpOworICAgIGdsQ2xlYXIoR0xfQ09MT1Jf
QlVGRkVSX0JJVCk7CisgICAgRVhQRUNUX1BJWEVMX0VRKHgsIHksIDAsIDAsIDI1NSwgMjU1KTsK
KworICAgIC8vIERyYXcgYSBxdWFkIHdpdGggYWxsIGNvbG9ycyBtYXNrZWQgYW5kIGJsZW5kaW5n
IGRpc2FibGVkLCBzaG91bGQgcmVtYWluIGJsdWUKKyAgICBnbENvbG9yTWFzayhHTF9GQUxTRSwg
R0xfRkFMU0UsIEdMX0ZBTFNFLCBHTF9GQUxTRSk7CisgICAgZ2xEaXNhYmxlKEdMX0JMRU5EKTsK
KyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworICAgIGdsVW5pZm9ybTRmKG1Db2xvclVuaWZv
cm0sIDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwor
ICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICBFWFBFQ1RfUElY
RUxfRVEoeCwgeSwgMCwgMCwgMjU1LCAyNTUpOworCisgICAgLy8gUmUtZW5hYmxlIHRoZSBjb2xv
ciBtYXNrLCBzaG91bGQgYmUgcmVkICh3aXRoIGJsZW5kIGRpc2FibGVkLCB0aGUgcmVkIHNob3Vs
ZCBvdmVyd3JpdGUKKyAgICAvLyBldmVyeXRoaW5nKQorICAgIGdsQ29sb3JNYXNrKEdMX1RSVUUs
IEdMX1RSVUUsIEdMX1RSVUUsIEdMX1RSVUUpOworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7
CisgICAgZ2xVbmlmb3JtNGYobUNvbG9yVW5pZm9ybSwgMS4wZiwgMC4wZiwgMC4wZiwgMC4wZik7
CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3Np
dGlvbiIsIDAuNWYpOworICAgIEVYUEVDVF9QSVhFTF9FUSh4LCB5LCAyNTUsIDAsIDAsIDApOwor
fQorCisvLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hp
Y2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UKKy8vIHRlc3RzIHNo
b3VsZCBiZSBydW4gYWdhaW5zdC4gRDNEMTEgRmVhdHVyZSBMZXZlbCA5XzMgdXNlcyBkaWZmZXJl
bnQgRDNEIGZvcm1hdHMgZm9yIHZlcnRleAorLy8gYXR0cmlicyBjb21wYXJlZCB0byBGZWF0dXJl
IExldmVscyAxMF8wKywgc28gd2Ugc2hvdWxkIHRlc3QgdGhlbSBzZXBhcmF0ZWx5LgorQU5HTEVf
SU5TVEFOVElBVEVfVEVTVChDb2xvck1hc2tUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICBF
UzJfRDNEOSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8zKCksCisgICAgICAgICAgICAgICAgICAgICAg
IEVTMl9PUEVOR0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgpLAorICAg
ICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgRVMzX09QRU5HTEVTKCkpOworCit9ICAvLyBuYW1lc3BhY2UgYW5nbGUKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Db21wdXRlU2hhZGVyVGVzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rl
c3RzL0NvbXB1dGVTaGFkZXJUZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQ29tcHV0ZVNoYWRlclRlc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMjI2IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gQ29tcHV0ZVNoYWRlclRl
c3Q6CisvLyAgIENvbXB1dGUgc2hhZGVyIHNwZWNpZmljIHRlc3RzLgorCisjaW5jbHVkZSAidGVz
dF91dGlscy9BTkdMRVRlc3QuaCIKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL2dsX3JhaWkuaCIKKyNp
bmNsdWRlIDx2ZWN0b3I+CisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNlCit7
CisKK2NsYXNzIENvbXB1dGVTaGFkZXJUZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90
ZWN0ZWQ6CisgICAgQ29tcHV0ZVNoYWRlclRlc3QoKSB7fQorfTsKKworY2xhc3MgQ29tcHV0ZVNo
YWRlclRlc3RFUzMgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBDb21w
dXRlU2hhZGVyVGVzdEVTMygpIHt9Cit9OworCisvLyBsaW5rIGEgc2ltcGxlIGNvbXB1dGUgcHJv
Z3JhbS4gSXQgc2hvdWxkIGJlIHN1Y2Nlc3NmdWwuCitURVNUX1AoQ29tcHV0ZVNoYWRlclRlc3Qs
IExpbmtDb21wdXRlUHJvZ3JhbSkKK3sKKyAgICBpZiAoSXNJbnRlbCgpICYmIElzTGludXgoKSkK
KyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIExpbnV4
IGR1ZSB0byBmYWlsdXJlcy4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGNzU291cmNlID0KKyAgICAgICAgIiN2ZXJzaW9uIDMx
MCBlc1xuIgorICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeD0xKSBpbjtcbiIKKyAgICAgICAg
InZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICJ9XG4iOworCisgICAgQU5H
TEVfR0xfQ09NUFVURV9QUk9HUkFNKHByb2dyYW0sIGNzU291cmNlKTsKKworICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworfQorCisvLyBsaW5rIGEgc2ltcGxlIGNvbXB1dGUgcHJvZ3JhbS4gVGhl
cmUgaXMgbm8gbG9jYWwgc2l6ZSBhbmQgbGlua2luZyBzaG91bGQgZmFpbC4KK1RFU1RfUChDb21w
dXRlU2hhZGVyVGVzdCwgTGlua0NvbXB1dGVQcm9ncmFtTm9Mb2NhbFNpemVMaW5rRXJyb3IpCit7
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgY3NTb3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24gMzEw
IGVzXG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAi
fVxuIjsKKworICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZUNvbXB1dGVQcm9ncmFtKGNzU291
cmNlLCBmYWxzZSk7CisgICAgRVhQRUNUX0VRKDB1LCBwcm9ncmFtKTsKKworICAgIGdsRGVsZXRl
UHJvZ3JhbShwcm9ncmFtKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworfQorCisvLyBs
aW5rIGEgc2ltcGxlIGNvbXB1dGUgcHJvZ3JhbS4KKy8vIG1ha2Ugc3VyZSB0aGF0IHVuaWZvcm1z
IGFuZCB1bmlmb3JtIHNhbXBsZXJzIGdldCByZWNvcmRlZAorVEVTVF9QKENvbXB1dGVTaGFkZXJU
ZXN0LCBMaW5rQ29tcHV0ZVByb2dyYW1XaXRoVW5pZm9ybXMpCit7CisgICAgaWYgKElzSW50ZWwo
KSAmJiBJc0xpbnV4KCkpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBl
ZCBvbiBJbnRlbCBMaW51eCBkdWUgdG8gZmFpbHVyZXMuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgY3NTb3VyY2UgPQorICAgICAg
ICAiI3ZlcnNpb24gMzEwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVy
MkQ7XG4iCisgICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94PTEpIGluO1xuIgorICAgICAgICAi
dW5pZm9ybSBpbnQgbXlVbmlmb3JtSW50O1xuIgorICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQg
bXlVbmlmb3JtU2FtcGxlcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7
XG4iCisgICAgICAgICJpbnQgcSA9IG15VW5pZm9ybUludDtcbiIKKyAgICAgICAgInRleHR1cmUo
bXlVbmlmb3JtU2FtcGxlciwgdmVjMigwLjApKTtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBB
TkdMRV9HTF9DT01QVVRFX1BST0dSQU0ocHJvZ3JhbSwgY3NTb3VyY2UpOworCisgICAgR0xpbnQg
dW5pZm9ybUxvYyA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0uZ2V0KCksICJteVVuaWZv
cm1JbnQiKTsKKyAgICBFWFBFQ1RfTkUoLTEsIHVuaWZvcm1Mb2MpOworCisgICAgdW5pZm9ybUxv
YyA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0uZ2V0KCksICJteVVuaWZvcm1TYW1wbGVy
Iik7CisgICAgRVhQRUNUX05FKC0xLCB1bmlmb3JtTG9jKTsKKworICAgIEVYUEVDVF9HTF9OT19F
UlJPUigpOworfQorCisvLyBBdHRhY2ggYm90aCBjb21wdXRlIGFuZCBub24tY29tcHV0ZSBzaGFk
ZXJzLiBBIGxpbmsgdGltZSBlcnJvciBzaG91bGQgb2NjdXIuCisvLyBPcGVuR0wgRVMgMy4xMCwg
Ny4zIFByb2dyYW0gT2JqZWN0cworVEVTVF9QKENvbXB1dGVTaGFkZXJUZXN0LCBBdHRhY2hNdWx0
aXBsZVNoYWRlcnMpCit7CisgICAgaWYgKElzSW50ZWwoKSAmJiBJc0xpbnV4KCkpCisgICAgewor
ICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBMaW51eCBkdWUgdG8g
ZmFpbHVyZXMuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY29u
c3Qgc3RkOjpzdHJpbmcgY3NTb3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCisg
ICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94PTEpIGluO1xuIgorICAgICAgICAidm9pZCBtYWlu
KClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBjb25zdCBzdGQ6OnN0
cmluZyB2c1NvdXJjZSA9CisgICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKKyAgICAgICAgInZv
aWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICJ9XG4iOworCisgICAgY29uc3Qg
c3RkOjpzdHJpbmcgZnNTb3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCisgICAg
ICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAifVxuIjsKKworICAg
IEdMdWludCBwcm9ncmFtID0gZ2xDcmVhdGVQcm9ncmFtKCk7CisKKyAgICBHTHVpbnQgdnMgPSBD
b21waWxlU2hhZGVyKEdMX1ZFUlRFWF9TSEFERVIsIHZzU291cmNlKTsKKyAgICBHTHVpbnQgZnMg
PSBDb21waWxlU2hhZGVyKEdMX0ZSQUdNRU5UX1NIQURFUiwgZnNTb3VyY2UpOworICAgIEdMdWlu
dCBjcyA9IENvbXBpbGVTaGFkZXIoR0xfQ09NUFVURV9TSEFERVIsIGNzU291cmNlKTsKKworICAg
IEVYUEVDVF9ORSgwdSwgdnMpOworICAgIEVYUEVDVF9ORSgwdSwgZnMpOworICAgIEVYUEVDVF9O
RSgwdSwgY3MpOworCisgICAgZ2xBdHRhY2hTaGFkZXIocHJvZ3JhbSwgdnMpOworICAgIGdsRGVs
ZXRlU2hhZGVyKHZzKTsKKworICAgIGdsQXR0YWNoU2hhZGVyKHByb2dyYW0sIGZzKTsKKyAgICBn
bERlbGV0ZVNoYWRlcihmcyk7CisKKyAgICBnbEF0dGFjaFNoYWRlcihwcm9ncmFtLCBjcyk7Cisg
ICAgZ2xEZWxldGVTaGFkZXIoY3MpOworCisgICAgZ2xMaW5rUHJvZ3JhbShwcm9ncmFtKTsKKwor
ICAgIEdMaW50IGxpbmtTdGF0dXM7CisgICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xfTElO
S19TVEFUVVMsICZsaW5rU3RhdHVzKTsKKworICAgIEVYUEVDVF9FUSgwLCBsaW5rU3RhdHVzKTsK
KworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworfQorCisvLyBBdHRhY2ggYSB2ZXJ0ZXgsIGZy
YWdtZW50IGFuZCBjb21wdXRlIHNoYWRlci4KKy8vIFF1ZXJ5IGZvciB0aGUgbnVtYmVyIG9mIGF0
dGFjaGVkIHNoYWRlcnMgYW5kIGNoZWNrIHRoZSBjb3VudC4KK1RFU1RfUChDb21wdXRlU2hhZGVy
VGVzdCwgQXR0YWNobWVudENvdW50KQoreworICAgIGlmIChJc0ludGVsKCkgJiYgSXNMaW51eCgp
KQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgTGlu
dXggZHVlIHRvIGZhaWx1cmVzLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGNzU291cmNlID0KKyAgICAgICAgIiN2ZXJzaW9uIDMx
MCBlc1xuIgorICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeD0xKSBpbjtcbiIKKyAgICAgICAg
InZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICJ9XG4iOworCisgICAgY29u
c3Qgc3RkOjpzdHJpbmcgdnNTb3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCisg
ICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAifVxuIjsKKwor
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZzU291cmNlID0KKyAgICAgICAgIiN2ZXJzaW9uIDMxMCBl
c1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIn1c
biI7CisKKyAgICBHTHVpbnQgcHJvZ3JhbSA9IGdsQ3JlYXRlUHJvZ3JhbSgpOworCisgICAgR0x1
aW50IHZzID0gQ29tcGlsZVNoYWRlcihHTF9WRVJURVhfU0hBREVSLCB2c1NvdXJjZSk7CisgICAg
R0x1aW50IGZzID0gQ29tcGlsZVNoYWRlcihHTF9GUkFHTUVOVF9TSEFERVIsIGZzU291cmNlKTsK
KyAgICBHTHVpbnQgY3MgPSBDb21waWxlU2hhZGVyKEdMX0NPTVBVVEVfU0hBREVSLCBjc1NvdXJj
ZSk7CisKKyAgICBFWFBFQ1RfTkUoMHUsIHZzKTsKKyAgICBFWFBFQ1RfTkUoMHUsIGZzKTsKKyAg
ICBFWFBFQ1RfTkUoMHUsIGNzKTsKKworICAgIGdsQXR0YWNoU2hhZGVyKHByb2dyYW0sIHZzKTsK
KyAgICBnbERlbGV0ZVNoYWRlcih2cyk7CisKKyAgICBnbEF0dGFjaFNoYWRlcihwcm9ncmFtLCBm
cyk7CisgICAgZ2xEZWxldGVTaGFkZXIoZnMpOworCisgICAgZ2xBdHRhY2hTaGFkZXIocHJvZ3Jh
bSwgY3MpOworICAgIGdsRGVsZXRlU2hhZGVyKGNzKTsKKworICAgIEdMaW50IG51bUF0dGFjaGVk
U2hhZGVyczsKKyAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9BVFRBQ0hFRF9TSEFERVJT
LCAmbnVtQXR0YWNoZWRTaGFkZXJzKTsKKworICAgIEVYUEVDVF9FUSgzLCBudW1BdHRhY2hlZFNo
YWRlcnMpOworCisgICAgZ2xEZWxldGVQcm9ncmFtKHByb2dyYW0pOworCisgICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7Cit9CisKKy8vIENoZWNrIHRoYXQgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGNy
ZWF0ZSBhIGNvbXB1dGUgc2hhZGVyIHdoZW4gdGhlIGNvbnRleHQgZG9lcyBub3Qgc3VwcG9ydCBF
UworLy8gMy4xMAorVEVTVF9QKENvbXB1dGVTaGFkZXJUZXN0RVMzLCBOb3RTdXBwb3J0ZWQpCit7
CisgICAgR0x1aW50IGNvbXB1dGVTaGFkZXJIYW5kbGUgPSBnbENyZWF0ZVNoYWRlcihHTF9DT01Q
VVRFX1NIQURFUik7CisgICAgRVhQRUNUX0VRKDB1LCBjb21wdXRlU2hhZGVySGFuZGxlKTsKKyAg
ICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKK30KKworQU5HTEVfSU5TVEFOVElB
VEVfVEVTVChDb21wdXRlU2hhZGVyVGVzdCwgRVMzMV9PUEVOR0woKSwgRVMzMV9PUEVOR0xFUygp
KTsKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoQ29tcHV0ZVNoYWRlclRlc3RFUzMsIEVTM19PUEVO
R0woKSwgRVMzX09QRU5HTEVTKCkpOworCit9ICAvLyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Db3B5Q29tcHJlc3NlZFRleHR1cmVU
ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
Z2xfdGVzdHMvQ29weUNvbXByZXNzZWRUZXh0dXJlVGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NvcHlDb21wcmVzc2Vk
VGV4dHVyZVRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzY5IEBACisvLworLy8g
Q29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworCisvLyBDb3B5Q29tcHJlc3NlZFRleHR1cmVUZXN0LmNwcDogVGVzdHMgb2YgdGhlIEdMX0NI
Uk9NSVVNX2NvcHlfY29tcHJlc3NlZF90ZXh0dXJlIGV4dGVuc2lvbgorCisjaW5jbHVkZSAidGVz
dF91dGlscy9BTkdMRVRlc3QuaCIKKworbmFtZXNwYWNlIGFuZ2xlCit7CisKK2NsYXNzIENvcHlD
b21wcmVzc2VkVGV4dHVyZVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoK
KyAgICBDb3B5Q29tcHJlc3NlZFRleHR1cmVUZXN0KCkKKyAgICB7CisgICAgICAgIHNldFdpbmRv
d1dpZHRoKDI1Nik7CisgICAgICAgIHNldFdpbmRvd0hlaWdodCgyNTYpOworICAgICAgICBzZXRD
b25maWdSZWRCaXRzKDgpOworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAg
IHNldENvbmZpZ0JsdWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Cisg
ICAgfQorCisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBTkdMRVRl
c3Q6OlNldFVwKCk7CisKKyAgICAgICAgZ2xHZW5UZXh0dXJlcygyLCBtVGV4dHVyZXMpOworCisg
ICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0oCisgICAgICAgICAgICAiYXR0cmlidXRl
IHZlYzIgYV9wb3NpdGlvbjtcbiIKKyAgICAgICAgICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhjb29y
ZDtcbiIKKyAgICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAgICAgIntcbiIKKyAg
ICAgICAgICAgICIgICBnbF9Qb3NpdGlvbiA9IHZlYzQoYV9wb3NpdGlvbiwgMC4wLCAxLjApO1xu
IgorICAgICAgICAgICAgIiAgIHZfdGV4Y29vcmQgPSAoYV9wb3NpdGlvbiArIDEuMCkgKiAwLjU7
XG4iCisgICAgICAgICAgICAifVxuIiwKKyAgICAgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDtcbiIKKyAgICAgICAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCB1X3RleHR1cmU7XG4iCisg
ICAgICAgICAgICAidmFyeWluZyB2ZWMyIHZfdGV4Y29vcmQ7XG4iCisgICAgICAgICAgICAidm9p
ZCBtYWluKClcbiIKKyAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAiICAgIGdsX0ZyYWdD
b2xvciA9IHRleHR1cmUyRCh1X3RleHR1cmUsIHZfdGV4Y29vcmQpO1xuIgorICAgICAgICAgICAg
In1cbiIpOworICAgICAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsKKworICAgICAgICBpZiAo
ZXh0ZW5zaW9uRW5hYmxlZCgiR0xfQ0hST01JVU1fY29weV9jb21wcmVzc2VkX3RleHR1cmUiKSkK
KyAgICAgICAgeworICAgICAgICAgICAgZ2xDb21wcmVzc2VkQ29weVRleHR1cmVDSFJPTUlVTSA9
CisgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTENPTVBSRVNTRURDT1BZVEVY
VFVSRUNIUk9NSVVNUFJPQz4oCisgICAgICAgICAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNz
KCJnbENvbXByZXNzZWRDb3B5VGV4dHVyZUNIUk9NSVVNIikpOworICAgICAgICB9CisgICAgfQor
CisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBnbERlbGV0ZVRl
eHR1cmVzKDIsIG1UZXh0dXJlcyk7CisgICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7
CisKKyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOworICAgIH0KKworICAgIGJvb2wgY2hl
Y2tFeHRlbnNpb25zKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghZXh0ZW5zaW9uRW5hYmxl
ZCgiR0xfQ0hST01JVU1fY29weV9jb21wcmVzc2VkX3RleHR1cmUiKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RkOjpjb3V0CisgICAgICAgICAgICAgICAgPDwgIlRlc3Qgc2tpcHBlZCBiZWNh
dXNlIEdMX0NIUk9NSVVNX2NvcHlfY29tcHJlc3NlZF90ZXh0dXJlIGlzIG5vdCBhdmFpbGFibGUu
IgorICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorCisgICAgICAgIEVYUEVDVF9ORShudWxscHRyLCBnbENvbXByZXNzZWRD
b3B5VGV4dHVyZUNIUk9NSVVNKTsKKyAgICAgICAgaWYgKGdsQ29tcHJlc3NlZENvcHlUZXh0dXJl
Q0hST01JVU0gPT0gbnVsbHB0cikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgR0x1aW50
IG1Qcm9ncmFtICAgICA9IDA7CisgICAgR0x1aW50IG1UZXh0dXJlc1syXSA9IHswLCAwfTsKKwor
ICAgIFBGTkdMQ09NUFJFU1NFRENPUFlURVhUVVJFQ0hST01JVU1QUk9DIGdsQ29tcHJlc3NlZENv
cHlUZXh0dXJlQ0hST01JVU0gPSBudWxscHRyOworfTsKKworbmFtZXNwYWNlCit7CisKK2NvbnN0
IEdMQ29sb3IgJkNvbXByZXNzZWRJbWFnZUNvbG9yID0gR0xDb2xvcjo6cmVkOworCisvLyBTaW5n
bGUgY29tcHJlc3NlZCBBVEMgYmxvY2sgb2Ygc291cmNlIHBpeGVscyBhbGwgc2V0IHRvOgorLy8g
Q29tcHJlc3NlZEltYWdlQ29sb3IuCitjb25zdCB1aW50OF90IENvbXByZXNzZWRJbWFnZUFUQ1s4
XSA9IHsweDAsIDB4N2MsIDB4MCwgMHhmOCwgMHg1NSwgMHg1NSwgMHg1NSwgMHg1NX07CisKKy8v
IFNpbmdsZSBjb21wcmVzc2VkIEFUQ0lBIGJsb2NrIG9mIHNvdXJjZSBwaXhlbHMgYWxsIHNldCB0
bzoKKy8vIENvbXByZXNzZWRJbWFnZUNvbG9yLgorY29uc3QgdWludDhfdCBDb21wcmVzc2VkSW1h
Z2VBVENJQVsxNl0gPSB7MHhmZiwgMHhmZiwgMHgwLCAweDAsICAweDAsICAweDAsICAweDAsICAw
eDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsICAweDdj
LCAweDAsIDB4ZjgsIDB4NTUsIDB4NTUsIDB4NTUsIDB4NTV9OworCisvLyBTaW5nbGUgY29tcHJl
c3NlZCBEWFQxIGJsb2NrIG9mIHNvdXJjZSBwaXhlbHMgYWxsIHNldCB0bzoKKy8vIENvbXByZXNz
ZWRJbWFnZUNvbG9yLgorY29uc3QgdWludDhfdCBDb21wcmVzc2VkSW1hZ2VEWFQxWzhdID0gezB4
MDAsIDB4ZjgsIDB4MDAsIDB4ZjgsIDB4YWEsIDB4YWEsIDB4YWEsIDB4YWF9OworCisvLyBTaW5n
bGUgY29tcHJlc3NlZCBEWFQ1IGJsb2NrIG9mIHNvdXJjZSBwaXhlbHMgYWxsIHNldCB0bzoKKy8v
IENvbXByZXNzZWRJbWFnZUNvbG9yLgorY29uc3QgdWludDhfdCBDb21wcmVzc2VkSW1hZ2VEWFQ1
WzE2XSA9IHsweGZmLCAweGZmLCAweDAsIDB4MCwgIDB4MCwgIDB4MCwgIDB4MCwgIDB4MCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAgMHhmOCwgMHgwLCAw
eGY4LCAweGFhLCAweGFhLCAweGFhLCAweGFhfTsKKworLy8gU2luZ2xlIGNvbXByZXNzZWQgRFhU
MSBibG9jayBvZiBzb3VyY2UgcGl4ZWxzIGFsbCBzZXQgdG86CisvLyBDb21wcmVzc2VkSW1hZ2VD
b2xvci4KK2NvbnN0IHVpbnQ4X3QgQ29tcHJlc3NlZEltYWdlRVRDMVs4XSA9IHsweDAsIDB4MCwg
MHhmOCwgMHgyLCAweGZmLCAweGZmLCAweDAsIDB4MH07CisKK30gIC8vIGFub255bW91cyBuYW1l
c3BhY2UKKworLy8gVGVzdCB0byBlbnN1cmUgdGhhdCB0aGUgYmFzaWMgZnVuY3Rpb25hbGl0eSBv
ZiB0aGUgZXh0ZW5zaW9uIHdvcmtzLgorVEVTVF9QKENvcHlDb21wcmVzc2VkVGV4dHVyZVRlc3Qs
IEJhc2ljKQoreworICAgIGlmICghY2hlY2tFeHRlbnNpb25zKCkpCisgICAgeworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfdGV4dHVy
ZV9jb21wcmVzc2lvbl9keHQxIikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qg
c2tpcHBlZCBiZWNhdXNlIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEgaXMgbm90IGF2
YWlsYWJsZS4iCisgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sw
XSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9T
LCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOworICAgIGdsVGV4UGFyYW1ldGVy
aShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdM
X05FQVJFU1QpOworICAgIGdsQ29tcHJlc3NlZFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwg
R0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCwgNCwgNCwgMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVvZihDb21wcmVzc2VkSW1hZ2VEWFQxKSwgQ29tcHJlc3NlZEltYWdl
RFhUMSk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sxXSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRV
UkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBnbFRleFBh
cmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VE
R0UpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19G
SUxURVIsIEdMX05FQVJFU1QpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgIGdsQ29tcHJlc3NlZENvcHlU
ZXh0dXJlQ0hST01JVU0obVRleHR1cmVzWzBdLCBtVGV4dHVyZXNbMV0pOworICAgIEFTU0VSVF9H
TF9OT19FUlJPUigpOworCisgICAgLy8gTG9hZCB0ZXh0dXJlLgorICAgIGdsQWN0aXZlVGV4dHVy
ZShHTF9URVhUVVJFMCk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVy
ZXNbMV0pOworICAgIEdMaW50IHRleHR1cmVMb2MgPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJv
Z3JhbSwgInVfdGV4dHVyZSIpOworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgZ2xV
bmlmb3JtMWkodGV4dHVyZUxvYywgMCk7CisKKyAgICAvLyBEcmF3LgorICAgIGRyYXdRdWFkKG1Q
cm9ncmFtLCAiYV9wb3NpdGlvbiIsIDAuNWYpOworCisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VR
KGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIENvbXByZXNzZWRJ
bWFnZUNvbG9yKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKK30KKworLy8gVGVzdCB2YWxp
ZGF0aW9uIG9mIGNvbXByZXNzZWQgZm9ybWF0cworVEVTVF9QKENvcHlDb21wcmVzc2VkVGV4dHVy
ZVRlc3QsIEludGVybmFsRm9ybWF0KQoreworICAgIGlmICghY2hlY2tFeHRlbnNpb25zKCkpCisg
ICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RydWN0IERhdGEKKyAgICB7Cisg
ICAgICAgIEdMaW50IGZvcm1hdDsKKyAgICAgICAgY29uc3QgdWludDhfdCAqZGF0YTsKKyAgICAg
ICAgR0xzaXplaSBkYXRhU2l6ZTsKKworICAgICAgICBEYXRhKCkgOiBEYXRhKEdMX05PTkUsIG51
bGxwdHIsIDApIHt9CisgICAgICAgIERhdGEoR0xpbnQgZm9ybWF0LCBjb25zdCB1aW50OF90ICpk
YXRhLCBHTHNpemVpIGRhdGFTaXplKQorICAgICAgICAgICAgOiBmb3JtYXQoZm9ybWF0KSwgZGF0
YShkYXRhKSwgZGF0YVNpemUoZGF0YVNpemUpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgIH07
CisgICAgc3RkOjp2ZWN0b3I8RGF0YT4gc3VwcG9ydGVkRm9ybWF0czsKKworICAgIGlmIChleHRl
bnNpb25FbmFibGVkKCJHTF9BTURfY29tcHJlc3NlZF9BVENfdGV4dHVyZSIpKQorICAgIHsKKyAg
ICAgICAgc3VwcG9ydGVkRm9ybWF0cy5wdXNoX2JhY2soCisgICAgICAgICAgICBEYXRhKEdMX0FU
Q19SR0JfQU1ELCBDb21wcmVzc2VkSW1hZ2VBVEMsIHNpemVvZihDb21wcmVzc2VkSW1hZ2VBVEMp
KSk7CisgICAgICAgIHN1cHBvcnRlZEZvcm1hdHMucHVzaF9iYWNrKERhdGEoR0xfQVRDX1JHQkFf
SU5URVJQT0xBVEVEX0FMUEhBX0FNRCwgQ29tcHJlc3NlZEltYWdlQVRDSUEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKENvbXByZXNzZWRJbWFnZUFUQ0lB
KSkpOworICAgIH0KKyAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29t
cHJlc3Npb25fZHh0MSIpKQorICAgIHsKKyAgICAgICAgc3VwcG9ydGVkRm9ybWF0cy5wdXNoX2Jh
Y2soRGF0YShHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhULCBDb21wcmVzc2VkSW1hZ2VE
WFQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihDb21w
cmVzc2VkSW1hZ2VEWFQxKSkpOworICAgIH0KKyAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCgiR0xf
QU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1IikpCisgICAgeworICAgICAgICBzdXBwb3J0
ZWRGb3JtYXRzLnB1c2hfYmFjayhEYXRhKEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhU
LCBDb21wcmVzc2VkSW1hZ2VEWFQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVvZihDb21wcmVzc2VkSW1hZ2VEWFQ1KSkpOworICAgIH0KKyAgICBpZiAoZXh0
ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKSkKKyAg
ICB7CisgICAgICAgIHN1cHBvcnRlZEZvcm1hdHMucHVzaF9iYWNrKAorICAgICAgICAgICAgRGF0
YShHTF9FVEMxX1JHQjhfT0VTLCBDb21wcmVzc2VkSW1hZ2VFVEMxLCBzaXplb2YoQ29tcHJlc3Nl
ZEltYWdlRVRDMSkpKTsKKyAgICB9CisKKyAgICBmb3IgKGNvbnN0IGF1dG8gJnN1cHBvcnRlZEZv
cm1hdCA6IHN1cHBvcnRlZEZvcm1hdHMpCisgICAgeworICAgICAgICBnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xB
TVBfVE9fRURHRSk7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgICAgICBnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICAg
ICAgZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBzdXBwb3J0ZWRGb3Jt
YXQuZm9ybWF0LCA0LCA0LCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBv
cnRlZEZvcm1hdC5kYXRhU2l6ZSwgc3VwcG9ydGVkRm9ybWF0LmRhdGEpOworICAgICAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKKworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQs
IG1UZXh0dXJlc1sxXSk7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAgIGdsVGV4UGFyYW1l
dGVyZihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7
CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19G
SUxURVIsIEdMX05FQVJFU1QpOworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICAgICAgZ2xDb21wcmVz
c2VkQ29weVRleHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIG1UZXh0dXJlc1sxXSk7CisgICAg
ICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIH0KK30KKworLy8gVGVzdCB0aGF0IHVuY29t
cHJlc3NlZCB0ZXh0dXJlcyBnZW5lcmF0ZSBlcnJvcnMgd2hlbiBjb3B5aW5nCitURVNUX1AoQ29w
eUNvbXByZXNzZWRUZXh0dXJlVGVzdCwgSW50ZXJuYWxGb3JtYXROb3RTdXBwb3J0ZWQpCit7Cisg
ICAgaWYgKCFjaGVja0V4dGVuc2lvbnMoKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7CisgICAg
Z2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFN
UF9UT19FREdFKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgIGdsVGV4UGFy
YW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1Qp
OworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxLCAxLCAwLCBH
TF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAmR0xDb2xvcjo6cmVkKTsKKyAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKKworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVz
WzFdKTsKKyAgICBnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQ
X1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgIGdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgZ2xUZXhQYXJhbWV0
ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Cisg
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwg
R0xfTkVBUkVTVCk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBDaGVjayB0
aGF0IHRoZSBHTF9SR0JBIGZvcm1hdCByZXBvcnRzIGFuIGVycm9yLgorICAgIGdsQ29tcHJlc3Nl
ZENvcHlUZXh0dXJlQ0hST01JVU0obVRleHR1cmVzWzBdLCBtVGV4dHVyZXNbMV0pOworICAgIEVY
UEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKKy8vIFRlc3QgdmFsaWRh
dGlvbiBvZiB0ZXh0dXJlIElEcworVEVTVF9QKENvcHlDb21wcmVzc2VkVGV4dHVyZVRlc3QsIElu
dmFsaWRUZXh0dXJlSWRzKQoreworICAgIGlmICghY2hlY2tFeHRlbnNpb25zKCkpCisgICAgewor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJE
LCBtVGV4dHVyZXNbMF0pOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9O
RUFSRVNUKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9N
QUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBnbENvbXByZXNzZWRUZXhJbWFnZTJEKEdMX1RF
WFRVUkVfMkQsIDAsIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQsIDQsIDQsIDAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoQ29tcHJlc3NlZEltYWdlRFhUMSksIENv
bXByZXNzZWRJbWFnZURYVDEpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xC
aW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMV0pOworICAgIGdsVGV4UGFyYW1l
dGVyZihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7
CisgICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBH
TF9DTEFNUF9UT19FREdFKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xf
VEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKKworICAgIGdsQ29tcHJlc3NlZENvcHlUZXh0dXJlQ0hST01JVU0o
bVRleHR1cmVzWzBdLCA5OTk5Myk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFM
VUUpOworCisgICAgZ2xDb21wcmVzc2VkQ29weVRleHR1cmVDSFJPTUlVTSg5OTk5NCwgbVRleHR1
cmVzWzFdKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7CisKKyAgICBn
bENvbXByZXNzZWRDb3B5VGV4dHVyZUNIUk9NSVVNKDk5OTk1LCA5OTk5Nik7CisgICAgRVhQRUNU
X0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOworCisgICAgZ2xDb21wcmVzc2VkQ29weVRleHR1
cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIG1UZXh0dXJlc1sxXSk7CisgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7Cit9CisKKy8vIFRlc3QgdGhhdCBvbmx5IDJEIHRleHR1cmVzIGFyZSB2YWxpZAor
VEVTVF9QKENvcHlDb21wcmVzc2VkVGV4dHVyZVRlc3QsIEJpbmRpbmdQb2ludHMpCit7CisgICAg
aWYgKCFjaGVja0V4dGVuc2lvbnMoKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIG1UZXh0dXJlc1swXSk7Cisg
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIEdMX1RFWFRVUkVfV1JBUF9T
LCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9DVUJF
X01BUCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOworICAgIGdsVGV4UGFy
YW1ldGVyaShHTF9URVhUVVJFX0NVQkVfTUFQLCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05F
QVJFU1QpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0NVQkVfTUFQLCBHTF9URVhU
VVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOworICAgIGZvciAoR0xlbnVtIGZhY2UgPSBHTF9U
RVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1g7IGZhY2UgPD0gR0xfVEVYVFVSRV9DVUJFX01BUF9O
RUdBVElWRV9aOworICAgICAgICAgZmFjZSsrKQorICAgIHsKKyAgICAgICAgZ2xDb21wcmVzc2Vk
VGV4SW1hZ2UyRChmYWNlLCAwLCBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhULCA0LCA0
LCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihDb21wcmVzc2VkSW1h
Z2VEWFQxKSwgQ29tcHJlc3NlZEltYWdlRFhUMSk7CisgICAgfQorICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOworCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFX0NVQkVfTUFQLCBtVGV4dHVy
ZXNbMV0pOworICAgIGdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJFX0NVQkVfTUFQLCBHTF9URVhU
VVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RF
WFRVUkVfQ1VCRV9NQVAsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKyAg
ICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9DVUJFX01BUCwgR0xfVEVYVFVSRV9NQUdfRklM
VEVSLCBHTF9ORUFSRVNUKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9DVUJFX01B
UCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKKworICAgIGdsQ29tcHJlc3NlZENvcHlUZXh0dXJlQ0hST01JVU0obVRleHR1cmVz
WzBdLCBtVGV4dHVyZXNbMV0pOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVF
KTsKK30KKworLy8gVGVzdCB0aGUgZGVzdGluYXRpb24gdGV4dHVyZSBjYW5ub3QgYmUgaW1tdXRh
YmxlCitURVNUX1AoQ29weUNvbXByZXNzZWRUZXh0dXJlVGVzdCwgSW1tdXRhYmxlKQoreworICAg
IGlmICghY2hlY2tFeHRlbnNpb25zKCkgfHwgZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGdsQmluZFRleHR1cmUoR0xfVEVY
VFVSRV8yRCwgbVRleHR1cmVzWzBdKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7
CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRF
UiwgR0xfTkVBUkVTVCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgZ2xDb21wcmVzc2VkVGV4SW1hZ2Uy
RChHTF9URVhUVVJFXzJELCAwLCBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhULCA0LCA0
LCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKENvbXByZXNzZWRJbWFnZURY
VDEpLCBDb21wcmVzc2VkSW1hZ2VEWFQxKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKwor
ICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzFdKTsKKyAgICBnbFRl
eFN0b3JhZ2UyRChHTF9URVhUVVJFXzJELCAxLCBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFf
RVhULCA0LCA0KTsKKyAgICBnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgIGdsVGV4UGFyYW1ldGVyZihHTF9URVhU
VVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgZ2xUZXhQ
YXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVT
VCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJ
TFRFUiwgR0xfTkVBUkVTVCk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbENv
bXByZXNzZWRDb3B5VGV4dHVyZUNIUk9NSVVNKG1UZXh0dXJlc1swXSwgbVRleHR1cmVzWzFdKTsK
KyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCisvLyBVc2Ug
dGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIs
IHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UKKy8vIHRlc3RzIHNob3VsZCBiZSBydW4g
YWdhaW5zdC4KK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoQ29weUNvbXByZXNzZWRUZXh0dXJlVGVz
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgRVMyX0QzRDExKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19EM0QxMSgpLAor
ICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAg
ICAgIEVTM19PUEVOR0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCks
CisgICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygpKTsKKworfSAgLy8gbmFtZXNw
YWNlIGFuZ2xlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVz
dHMvQ29weVRleEltYWdlVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NvcHlUZXhJbWFnZVRlc3QuY3BwCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Db3B5VGV4
SW1hZ2VUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0MyBAQAorLy8KKy8vIENv
cHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
KworI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKK25hbWVzcGFjZSBhbmdsZQor
eworCitjbGFzcyBDb3B5VGV4SW1hZ2VUZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90
ZWN0ZWQ6CisgICAgQ29weVRleEltYWdlVGVzdCgpCisgICAgeworICAgICAgICBzZXRXaW5kb3dX
aWR0aCgxNik7CisgICAgICAgIHNldFdpbmRvd0hlaWdodCgxNik7CisgICAgICAgIHNldENvbmZp
Z1JlZEJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICAgICAgc2V0
Q29uZmlnQmx1ZUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKKyAgICB9
CisKKyAgICBHTHVpbnQgY3JlYXRlRnJhbWVidWZmZXIoR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5
cGUsIEdMZmxvYXQgY29sb3JbNF0pIGNvbnN0CisgICAgeworICAgICAgICBHTHVpbnQgZmJvOwor
ICAgICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmZmJvKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVi
dWZmZXIoR0xfRlJBTUVCVUZGRVIsIGZibyk7CisKKyAgICAgICAgR0x1aW50IHRleHR1cmUgPSBj
cmVhdGVUZXh0dXJlKGZvcm1hdCwgdHlwZSk7CisgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVY
VFVSRV8yRCwgdGV4dHVyZSk7CisgICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJB
TUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXh0dXJlLCAw
KTsKKworICAgICAgICBnbENsZWFyQ29sb3IoY29sb3JbMF0sIGNvbG9yWzFdLCBjb2xvclsyXSwg
Y29sb3JbM10pOworICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworCisgICAg
ICAgIHJldHVybiBmYm87CisgICAgfQorCisgICAgR0x1aW50IGNyZWF0ZVRleHR1cmUoR0xlbnVt
IGZvcm1hdCwgR0xlbnVtIHR5cGUpIGNvbnN0CisgICAgeworICAgICAgICBHTHVpbnQgdGV4Owor
ICAgICAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXgpOworICAgICAgICBnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQsIHRleCk7CisgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAw
LCBmb3JtYXQsIDE2LCAxNiwgMCwgZm9ybWF0LCB0eXBlLCBudWxscHRyKTsKKworICAgICAgICAv
LyBEaXNhYmxlIG1pcG1hcHBpbmcKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
MkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgICAgIGdsVGV4UGFy
YW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1Qp
OworCisgICAgICAgIHJldHVybiB0ZXg7CisgICAgfQorCisgICAgR0x1aW50IGNyZWF0ZVRleHR1
cmVGcm9tQ29weVRleEltYWdlKEdMdWludCBmYm8sIEdMZW51bSBmb3JtYXQpIGNvbnN0CisgICAg
eworICAgICAgICBHTHVpbnQgdGV4OworICAgICAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXgpOwor
ICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleCk7CisKKyAgICAgICAgZ2xC
aW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIGZibyk7CisgICAgICAgIGdsQ29weVRleElt
YWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgZm9ybWF0LCAwLCAwLCAxNiwgMTYsIDApOworCisgICAg
ICAgIC8vIERpc2FibGUgbWlwbWFwcGluZworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVY
VFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICAgICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVB
UkVTVCk7CisKKyAgICAgICAgcmV0dXJuIHRleDsKKyAgICB9CisKKyAgICB2b2lkIGNvcHlUZXh0
dXJlV2l0aENvcHlUZXhTdWJJbWFnZShHTHVpbnQgZmJvLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCB0ZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgeW9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSB3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgaCkgY29uc3QKKyAgICB7CisgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8y
RCwgdGV4dHVyZSk7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBm
Ym8pOworICAgICAgICBnbENvcHlUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIHhvZmZz
ZXQsIHlvZmZzZXQsIHgsIHksIHcsIGgpOworICAgIH0KKworICAgIHZvaWQgU2V0VXAoKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOworCisgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nIHZzU291cmNlID0KKyAgICAgICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxv
YXQ7XG4iCisgICAgICAgICAgICAiYXR0cmlidXRlIHZlYzQgcG9zaXRpb247XG4iCisgICAgICAg
ICAgICAidmFyeWluZyB2ZWMyIHRleGNvb3JkO1xuIgorICAgICAgICAgICAgIlxuIgorICAgICAg
ICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgIiAg
ICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uO1xuIgorICAgICAgICAgICAgIiAgICB0ZXhjb29yZCA9
IChwb3NpdGlvbi54eSAqIDAuNSkgKyAwLjU7XG4iCisgICAgICAgICAgICAiICAgIHRleGNvb3Jk
LnkgPSAxLjAgLSB0ZXhjb29yZC55O1xuIgorICAgICAgICAgICAgIn1cbiI7CisKKyAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgdGV4dHVyZUZTU291cmNlID0KKyAgICAgICAgICAgICJwcmVjaXNp
b24gaGlnaHAgZmxvYXQ7XG4iCisgICAgICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQgdGV4O1xu
IgorICAgICAgICAgICAgInZhcnlpbmcgdmVjMiB0ZXhjb29yZDtcbiIKKyAgICAgICAgICAgICJc
biIKKyAgICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAgICAgIntcbiIKKyAgICAg
ICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHRleCwgdGV4Y29vcmQpO1xuIgor
ICAgICAgICAgICAgIn1cbiI7CisKKyAgICAgICAgbVRleHR1cmVQcm9ncmFtID0gQ29tcGlsZVBy
b2dyYW0odnNTb3VyY2UsIHRleHR1cmVGU1NvdXJjZSk7CisgICAgICAgIGlmIChtVGV4dHVyZVBy
b2dyYW0gPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgRkFJTCgpIDw8ICJzaGFkZXIgY29t
cGlsYXRpb24gZmFpbGVkLiI7CisgICAgICAgIH0KKworICAgICAgICBtVGV4dHVyZVVuaWZvcm1M
b2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1UZXh0dXJlUHJvZ3JhbSwgInRleCIpOwor
CisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIH0KKworICAgIHZvaWQgVGVhckRv
d24oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1UZXh0dXJlUHJv
Z3JhbSk7CisKKyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOworICAgIH0KKworICAgIHZv
aWQgdmVyaWZ5UmVzdWx0cyhHTHVpbnQgdGV4dHVyZSwgR0x1Ynl0ZSBkYXRhWzRdLCBHTGludCB4
LCBHTGludCB5KQorICAgIHsKKyAgICAgICAgZ2xWaWV3cG9ydCgwLCAwLCAxNiwgMTYpOworCisg
ICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsKKworICAgICAgICAv
LyBEcmF3IGEgcXVhZCB3aXRoIHRoZSB0YXJnZXQgdGV4dHVyZQorICAgICAgICBnbFVzZVByb2dy
YW0obVRleHR1cmVQcm9ncmFtKTsKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJE
LCB0ZXh0dXJlKTsKKyAgICAgICAgZ2xVbmlmb3JtMWkobVRleHR1cmVVbmlmb3JtTG9jYXRpb24s
IDApOworCisgICAgICAgIGRyYXdRdWFkKG1UZXh0dXJlUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41
Zik7CisKKyAgICAgICAgLy8gRXhwZWN0IHRoYXQgdGhlIHJlbmRlcmVkIHF1YWQgaGFzIHRoZSBz
YW1lIGNvbG9yIGFzIHRoZSBzb3VyY2UgdGV4dHVyZQorICAgICAgICBFWFBFQ1RfUElYRUxfTkVB
Uih4LCB5LCBkYXRhWzBdLCBkYXRhWzFdLCBkYXRhWzJdLCBkYXRhWzNdLCAxLjApOworICAgIH0K
KworICAgIEdMdWludCBtVGV4dHVyZVByb2dyYW07CisgICAgR0xpbnQgbVRleHR1cmVVbmlmb3Jt
TG9jYXRpb247Cit9OworCitURVNUX1AoQ29weVRleEltYWdlVGVzdCwgUkdCQVRvTCkKK3sKKyAg
ICBHTGZsb2F0IGNvbG9yW10gPSB7CisgICAgICAgIDAuMjVmLCAxLjBmLCAwLjc1ZiwgMC41ZiwK
KyAgICB9OworCisgICAgR0x1aW50IGZibyA9IGNyZWF0ZUZyYW1lYnVmZmVyKEdMX1JHQkEsIEdM
X1VOU0lHTkVEX0JZVEUsIGNvbG9yKTsKKyAgICBHTHVpbnQgdGV4ID0gY3JlYXRlVGV4dHVyZUZy
b21Db3B5VGV4SW1hZ2UoZmJvLCBHTF9MVU1JTkFOQ0UpOworCisgICAgR0x1Ynl0ZSBleHBlY3Rl
ZFtdID0geworICAgICAgICA2NCwgNjQsIDY0LCAyNTUsCisgICAgfTsKKyAgICB2ZXJpZnlSZXN1
bHRzKHRleCwgZXhwZWN0ZWQsIDAsIDApOworfQorCitURVNUX1AoQ29weVRleEltYWdlVGVzdCwg
UkdCVG9MKQoreworICAgIC8vIFRPRE8gKGdlb2ZmbGFuZyk6IEZpZ3VyZSBvdXQgd2h5IENvcHlU
ZXhbU3ViXUltYWdlIGRvZXNuJ3Qgd29yayB3aXRoCisgICAgLy8gUkdCLT5MIG9uIG9sZGVyIElu
dGVsIGNoaXBzCisgICAgaWYgKElzSW50ZWwoKSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0g
RUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFKQorICAgIHsKKyAgICAgICAgc3Rk
Ojpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgT3BlbkdMLiIgPDwgc3RkOjplbmRsOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR0xmbG9hdCBjb2xvcltdID0geworICAgICAg
ICAwLjI1ZiwgMS4wZiwgMC43NWYsIDAuNWYsCisgICAgfTsKKworICAgIEdMdWludCBmYm8gPSBj
cmVhdGVGcmFtZWJ1ZmZlcihHTF9SR0IsIEdMX1VOU0lHTkVEX0JZVEUsIGNvbG9yKTsKKyAgICBH
THVpbnQgdGV4ID0gY3JlYXRlVGV4dHVyZUZyb21Db3B5VGV4SW1hZ2UoZmJvLCBHTF9MVU1JTkFO
Q0UpOworCisgICAgR0x1Ynl0ZSBleHBlY3RlZFtdID0geworICAgICAgICA2NCwgNjQsIDY0LCAy
NTUsCisgICAgfTsKKyAgICB2ZXJpZnlSZXN1bHRzKHRleCwgZXhwZWN0ZWQsIDAsIDApOworfQor
CitURVNUX1AoQ29weVRleEltYWdlVGVzdCwgUkdCQVRvTEEpCit7CisgICAgR0xmbG9hdCBjb2xv
cltdID0geworICAgICAgICAwLjI1ZiwgMS4wZiwgMC43NWYsIDAuNWYsCisgICAgfTsKKworICAg
IEdMdWludCBmYm8gPSBjcmVhdGVGcmFtZWJ1ZmZlcihHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRF
LCBjb2xvcik7CisgICAgR0x1aW50IHRleCA9IGNyZWF0ZVRleHR1cmVGcm9tQ29weVRleEltYWdl
KGZibywgR0xfTFVNSU5BTkNFX0FMUEhBKTsKKworICAgIEdMdWJ5dGUgZXhwZWN0ZWRbXSA9IHsK
KyAgICAgICAgNjQsIDY0LCA2NCwgMTI3LAorICAgIH07CisgICAgdmVyaWZ5UmVzdWx0cyh0ZXgs
IGV4cGVjdGVkLCAwLCAwKTsKK30KKworVEVTVF9QKENvcHlUZXhJbWFnZVRlc3QsIFJHQkFUb0Ep
Cit7CisgICAgR0xmbG9hdCBjb2xvcltdID0geworICAgICAgICAwLjI1ZiwgMS4wZiwgMC43NWYs
IDAuNWYsCisgICAgfTsKKworICAgIEdMdWludCBmYm8gPSBjcmVhdGVGcmFtZWJ1ZmZlcihHTF9S
R0JBLCBHTF9VTlNJR05FRF9CWVRFLCBjb2xvcik7CisgICAgR0x1aW50IHRleCA9IGNyZWF0ZVRl
eHR1cmVGcm9tQ29weVRleEltYWdlKGZibywgR0xfQUxQSEEpOworCisgICAgR0x1Ynl0ZSBleHBl
Y3RlZFtdID0geworICAgICAgICAwLCAwLCAwLCAxMjcsCisgICAgfTsKKyAgICB2ZXJpZnlSZXN1
bHRzKHRleCwgZXhwZWN0ZWQsIDAsIDApOworfQorCitURVNUX1AoQ29weVRleEltYWdlVGVzdCwg
U3ViSW1hZ2VSR0JBVG9MKQoreworICAgIEdMZmxvYXQgY29sb3IwW10gPSB7CisgICAgICAgIDAu
MjVmLCAxLjBmLCAwLjc1ZiwgMC41ZiwKKyAgICB9OworICAgIEdMdWludCBmYm8wID0gY3JlYXRl
RnJhbWVidWZmZXIoR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgY29sb3IwKTsKKyAgICBHTHVp
bnQgdGV4ICA9IGNyZWF0ZVRleHR1cmVGcm9tQ29weVRleEltYWdlKGZibzAsIEdMX0xVTUlOQU5D
RSk7CisKKyAgICBHTGZsb2F0IGNvbG9yMVtdID0geworICAgICAgICAwLjVmLCAwLjI1ZiwgMS4w
ZiwgMC43NWYsCisgICAgfTsKKyAgICBHTHVpbnQgZmJvMSA9IGNyZWF0ZUZyYW1lYnVmZmVyKEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGNvbG9yMSk7CisgICAgY29weVRleHR1cmVXaXRoQ29w
eVRleFN1YkltYWdlKGZibzEsIHRleCwgMiwgNCwgNSwgNiwgOCwgOCk7CisKKyAgICBHTHVieXRl
IGV4cGVjdGVkMFtdID0geworICAgICAgICA2NCwgNjQsIDY0LCAyNTUsCisgICAgfTsKKyAgICB2
ZXJpZnlSZXN1bHRzKHRleCwgZXhwZWN0ZWQwLCAwLCAwKTsKKworICAgIEdMdWJ5dGUgZXhwZWN0
ZWQxW10gPSB7CisgICAgICAgIDEyNywgMTI3LCAxMjcsIDI1NSwKKyAgICB9OworICAgIHZlcmlm
eVJlc3VsdHModGV4LCBleHBlY3RlZDEsIDcsIDcpOworfQorCitURVNUX1AoQ29weVRleEltYWdl
VGVzdCwgU3ViSW1hZ2VSR0JBVG9MQSkKK3sKKyAgICBHTGZsb2F0IGNvbG9yMFtdID0geworICAg
ICAgICAwLjI1ZiwgMS4wZiwgMC43NWYsIDAuNWYsCisgICAgfTsKKyAgICBHTHVpbnQgZmJvMCA9
IGNyZWF0ZUZyYW1lYnVmZmVyKEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGNvbG9yMCk7Cisg
ICAgR0x1aW50IHRleCAgPSBjcmVhdGVUZXh0dXJlRnJvbUNvcHlUZXhJbWFnZShmYm8wLCBHTF9M
VU1JTkFOQ0VfQUxQSEEpOworCisgICAgR0xmbG9hdCBjb2xvcjFbXSA9IHsKKyAgICAgICAgMC41
ZiwgMC4yNWYsIDEuMGYsIDAuNzVmLAorICAgIH07CisgICAgR0x1aW50IGZibzEgPSBjcmVhdGVG
cmFtZWJ1ZmZlcihHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBjb2xvcjEpOworICAgIGNvcHlU
ZXh0dXJlV2l0aENvcHlUZXhTdWJJbWFnZShmYm8xLCB0ZXgsIDIsIDQsIDUsIDYsIDgsIDgpOwor
CisgICAgR0x1Ynl0ZSBleHBlY3RlZDBbXSA9IHsKKyAgICAgICAgNjQsIDY0LCA2NCwgMTI3LAor
ICAgIH07CisgICAgdmVyaWZ5UmVzdWx0cyh0ZXgsIGV4cGVjdGVkMCwgMCwgMCk7CisKKyAgICBH
THVieXRlIGV4cGVjdGVkMVtdID0geworICAgICAgICAxMjcsIDEyNywgMTI3LCAxOTIsCisgICAg
fTsKKyAgICB2ZXJpZnlSZXN1bHRzKHRleCwgZXhwZWN0ZWQxLCA3LCA3KTsKK30KKworVEVTVF9Q
KENvcHlUZXhJbWFnZVRlc3QsIFN1YkltYWdlUkdCVG9MKQoreworICAgIC8vIFRPRE8gKGdlb2Zm
bGFuZyk6IEZpZ3VyZSBvdXQgd2h5IENvcHlUZXhbU3ViXUltYWdlIGRvZXNuJ3Qgd29yayB3aXRo
CisgICAgLy8gUkdCLT5MIG9uIG9sZGVyIEludGVsIGNoaXBzCisgICAgaWYgKElzSW50ZWwoKSAm
JiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdM
X0FOR0xFKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50
ZWwgT3BlbkdMLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
R0xmbG9hdCBjb2xvcjBbXSA9IHsKKyAgICAgICAgMC4yNWYsIDEuMGYsIDAuNzVmLCAwLjVmLAor
ICAgIH07CisgICAgR0x1aW50IGZibzAgPSBjcmVhdGVGcmFtZWJ1ZmZlcihHTF9SR0IsIEdMX1VO
U0lHTkVEX0JZVEUsIGNvbG9yMCk7CisgICAgR0x1aW50IHRleCAgPSBjcmVhdGVUZXh0dXJlRnJv
bUNvcHlUZXhJbWFnZShmYm8wLCBHTF9MVU1JTkFOQ0UpOworCisgICAgR0xmbG9hdCBjb2xvcjFb
XSA9IHsKKyAgICAgICAgMC41ZiwgMC4yNWYsIDEuMGYsIDAuNzVmLAorICAgIH07CisgICAgR0x1
aW50IGZibzEgPSBjcmVhdGVGcmFtZWJ1ZmZlcihHTF9SR0IsIEdMX1VOU0lHTkVEX0JZVEUsIGNv
bG9yMSk7CisgICAgY29weVRleHR1cmVXaXRoQ29weVRleFN1YkltYWdlKGZibzEsIHRleCwgMiwg
NCwgNSwgNiwgOCwgOCk7CisKKyAgICBHTHVieXRlIGV4cGVjdGVkMFtdID0geworICAgICAgICA2
NCwgNjQsIDY0LCAyNTUsCisgICAgfTsKKyAgICB2ZXJpZnlSZXN1bHRzKHRleCwgZXhwZWN0ZWQw
LCAwLCAwKTsKKworICAgIEdMdWJ5dGUgZXhwZWN0ZWQxW10gPSB7CisgICAgICAgIDEyNywgMTI3
LCAxMjcsIDI1NSwKKyAgICB9OworICAgIHZlcmlmeVJlc3VsdHModGV4LCBleHBlY3RlZDEsIDcs
IDcpOworfQorCisvLyBzcGVjaWFsaXphdGlvbiBvZiBDb3B5VGV4SW1hZ2VUZXN0IGlzIGFkZGVk
IHNvIHRoYXQgc29tZSB0ZXN0cyBjYW4gYmUgZXhwbGljaXRseSBydW4gd2l0aCBhbiBFUzMKKy8v
IGNvbnRleHQKK2NsYXNzIENvcHlUZXhJbWFnZVRlc3RFUzMgOiBwdWJsaWMgQ29weVRleEltYWdl
VGVzdAoreworfTsKKworLy8gIFRoZSB0ZXN0IHZlcmlmaWVzIHRoYXQgZ2xDb3B5VGV4U3ViSW1h
Z2UyRCBnZW5lcmF0ZXMgYSBHTF9JTlZBTElEX09QRVJBVElPTiBlcnJvcgorLy8gIHdoZW4gdGhl
IHJlYWQgYnVmZmVyIGlzIEdMX05PTkUuCisvLyAgUmVmZXJlbmNlOiBHTEVTIDMuMC40LCBTZWN0
aW9uIDMuOC41IEFsdGVybmF0ZSBUZXh0dXJlIEltYWdlIFNwZWNpZmljYXRpb24gQ29tbWFuZHMK
K1RFU1RfUChDb3B5VGV4SW1hZ2VUZXN0RVMzLCBSZWFkQnVmZmVySXNOb25lKQoreworICAgIEdM
ZmxvYXQgY29sb3JbXSA9IHsKKyAgICAgICAgMC4yNWYsIDEuMGYsIDAuNzVmLCAwLjVmLAorICAg
IH07CisKKyAgICBHTHVpbnQgZmJvID0gY3JlYXRlRnJhbWVidWZmZXIoR0xfUkdCQSwgR0xfVU5T
SUdORURfQllURSwgY29sb3IpOworICAgIEdMdWludCB0ZXggPSBjcmVhdGVUZXh0dXJlRnJvbUNv
cHlUZXhJbWFnZShmYm8sIEdMX1JHQkEpOworCisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJB
TUVCVUZGRVIsIGZibyk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXgpOwor
CisgICAgZ2xSZWFkQnVmZmVyKEdMX05PTkUpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
CisgICAgZ2xDb3B5VGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCAwLCAwLCAwLCAwLCA0
LCA0KTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAg
Z2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZibyk7CisgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAm
dGV4KTsKK30KKworLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChl
LmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlCisvLyB0
ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCitBTkdMRV9JTlNUQU5USUFURV9URVNUKENvcHlU
ZXhJbWFnZVRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCisgICAgICAg
ICAgICAgICAgICAgICAgIEVTMl9EM0QxMShFR0xfRVhQRVJJTUVOVEFMX1BSRVNFTlRfUEFUSF9D
T1BZX0FOR0xFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKEVHTF9FWFBFUklN
RU5UQUxfUFJFU0VOVF9QQVRIX0ZBU1RfQU5HTEUpLAorICAgICAgICAgICAgICAgICAgICAgICBF
UzJfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woMywgMyksCisg
ICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpKTsKKworQU5HTEVfSU5TVEFOVElB
VEVfVEVTVChDb3B5VGV4SW1hZ2VUZXN0RVMzLCBFUzNfRDNEMTEoKSwgRVMzX09QRU5HTCgpLCBF
UzNfT1BFTkdMRVMoKSk7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvZ2xfdGVzdHMvQ29weVRleHR1cmVUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQ29weVRleHR1cmVUZXN0LmNwcAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMv
Q29weVRleHR1cmVUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2NiBAQAorLy8K
Ky8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKworLy8gQ29weVRleHR1cmVUZXN0LmNwcDogVGVzdHMgb2YgdGhlIEdMX0NIUk9NSVVN
X2NvcHlfdGV4dHVyZSBleHRlbnNpb24KKworI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0
LmgiCisKK25hbWVzcGFjZSBhbmdsZQoreworCitjbGFzcyBDb3B5VGV4dHVyZVRlc3QgOiBwdWJs
aWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBDb3B5VGV4dHVyZVRlc3QoKQorICAg
IHsKKyAgICAgICAgc2V0V2luZG93V2lkdGgoMjU2KTsKKyAgICAgICAgc2V0V2luZG93SGVpZ2h0
KDI1Nik7CisgICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0dy
ZWVuQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7CisgICAgICAgIHNldENv
bmZpZ0FscGhhQml0cyg4KTsKKyAgICB9CisKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKKworICAgICAgICBnbEdlblRleHR1cmVz
KDIsIG1UZXh0dXJlcyk7CisgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRl
eHR1cmVzWzFdKTsKKworICAgICAgICBnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICBnbFRleFBhcmFtZXRl
cmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOwor
ICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklM
VEVSLCBHTF9ORUFSRVNUKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisKKyAgICAgICAgZ2xHZW5GcmFt
ZWJ1ZmZlcnMoMSwgJm1GcmFtZWJ1ZmZlcik7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdM
X0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZmZXIpOworICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVy
ZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwg
bVRleHR1cmVzWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworCisgICAg
ICAgIGlmIChleHRlbnNpb25FbmFibGVkKCJHTF9DSFJPTUlVTV9jb3B5X3RleHR1cmUiKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgZ2xDb3B5VGV4dHVyZUNIUk9NSVVNID0gcmVpbnRlcnByZXRf
Y2FzdDxQRk5HTENPUFlURVhUVVJFQ0hST01JVU1QUk9DPigKKyAgICAgICAgICAgICAgICBlZ2xH
ZXRQcm9jQWRkcmVzcygiZ2xDb3B5VGV4dHVyZUNIUk9NSVVNIikpOworICAgICAgICAgICAgZ2xD
b3B5U3ViVGV4dHVyZUNIUk9NSVVNID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTENPUFlTVUJURVhU
VVJFQ0hST01JVU1QUk9DPigKKyAgICAgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xD
b3B5U3ViVGV4dHVyZUNIUk9NSVVNIikpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBU
ZWFyRG93bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDIsIG1U
ZXh0dXJlcyk7CisgICAgICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZtRnJhbWVidWZmZXIp
OworCisgICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKKyAgICB9CisKKyAgICBib29sIGNo
ZWNrRXh0ZW5zaW9ucygpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIWV4dGVuc2lvbkVuYWJs
ZWQoIkdMX0NIUk9NSVVNX2NvcHlfdGV4dHVyZSIpKQorICAgICAgICB7CisgICAgICAgICAgICBz
dGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEdMX0NIUk9NSVVNX2NvcHlfdGV4dHVy
ZSBpcyBub3QgYXZhaWxhYmxlLiIKKyAgICAgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBFWFBFQ1Rf
TkUobnVsbHB0ciwgZ2xDb3B5VGV4dHVyZUNIUk9NSVVNKTsKKyAgICAgICAgRVhQRUNUX05FKG51
bGxwdHIsIGdsQ29weVN1YlRleHR1cmVDSFJPTUlVTSk7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIEdMdWludCBtVGV4dHVyZXNbMl0gPSB7CisgICAgICAgIDAsIDAsCisgICAg
fTsKKyAgICBHTHVpbnQgbUZyYW1lYnVmZmVyID0gMDsKKworICAgIFBGTkdMQ09QWVRFWFRVUkVD
SFJPTUlVTVBST0MgZ2xDb3B5VGV4dHVyZUNIUk9NSVVNICAgICAgID0gbnVsbHB0cjsKKyAgICBQ
Rk5HTENPUFlTVUJURVhUVVJFQ0hST01JVU1QUk9DIGdsQ29weVN1YlRleHR1cmVDSFJPTUlVTSA9
IG51bGxwdHI7Cit9OworCisvLyBUZXN0IHRvIGVuc3VyZSB0aGF0IHRoZSBiYXNpYyBmdW5jdGlv
bmFsaXR5IG9mIHRoZSBleHRlbnNpb24gd29ya3MuCitURVNUX1AoQ29weVRleHR1cmVUZXN0LCBC
YXNpY0NvcHlUZXh0dXJlKQoreworICAgIGlmICghY2hlY2tFeHRlbnNpb25zKCkpCisgICAgewor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR0xDb2xvciBwaXhlbHMgPSBHTENvbG9yOjpy
ZWQ7CisKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7Cisg
ICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDEsIDEsIDAsIEdMX1JH
QkEsIEdMX1VOU0lHTkVEX0JZVEUsICZwaXhlbHMpOworCisgICAgZ2xDb3B5VGV4dHVyZUNIUk9N
SVVNKG1UZXh0dXJlc1swXSwgbVRleHR1cmVzWzFdLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRF
LCBmYWxzZSwgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKKworICAg
IEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAs
IHBpeGVscyk7Cit9CisKKy8vIFRlc3QgdG8gZW5zdXJlIHRoYXQgdGhlIGJhc2ljIGZ1bmN0aW9u
YWxpdHkgb2YgdGhlIGV4dGVuc2lvbiB3b3Jrcy4KK1RFU1RfUChDb3B5VGV4dHVyZVRlc3QsIEJh
c2ljQ29weVN1YlRleHR1cmUpCit7CisgICAgaWYgKCFjaGVja0V4dGVuc2lvbnMoKSkKKyAgICB7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHTENvbG9yIHBpeGVscyA9IEdMQ29sb3I6
OnJlZDsKKworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdKTsK
KyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMSwgMSwgMCwgR0xf
UkdCQSwgR0xfVU5TSUdORURfQllURSwgJnBpeGVscyk7CisKKyAgICBnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sxXSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVf
MkQsIDAsIEdMX1JHQkEsIDEsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxw
dHIpOworCisgICAgZ2xDb3B5U3ViVGV4dHVyZUNIUk9NSVVNKG1UZXh0dXJlc1swXSwgbVRleHR1
cmVzWzFdLCAwLCAwLCAwLCAwLCAxLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKworICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gQ2hlY2sgdGhhdCBGQiBpcyBjb21wbGV0ZS4K
KyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFLCBnbENoZWNrRnJh
bWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKKworICAgIEVYUEVDVF9QSVhFTF9DT0xP
Ul9FUSgwLCAwLCBwaXhlbHMpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8v
IFRlc3QgdGhhdCBDb3B5VGV4dHVyZSBjYW5ub3QgcmVkZWZpbmUgYW4gaW1tdXRhYmxlIHRleHR1
cmUgYW5kIENvcHlTdWJUZXh0dXJlIGNhbiBjb3B5IGRhdGEgdG8KKy8vIGltbXV0YWJsZSB0ZXh0
dXJlcworVEVTVF9QKENvcHlUZXh0dXJlVGVzdCwgSW1tdXRhYmxlVGV4dHVyZSkKK3sKKyAgICBp
ZiAoIWNoZWNrRXh0ZW5zaW9ucygpKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMgJiYKKyAgICAgICAgKCFleHRlbnNp
b25FbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9zdG9yYWdlIikgfHwgIWV4dGVuc2lvbkVuYWJsZWQo
IkdMX09FU19yZ2I4X3JnYmE4IikpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0CisgICAgICAg
ICAgICA8PCAiVGVzdCBza2lwcGVkIGR1ZSB0byBtaXNzaW5nIEVTMyBvciBHTF9FWFRfdGV4dHVy
ZV9zdG9yYWdlIG9yIEdMX09FU19yZ2I4X3JnYmE4IgorICAgICAgICAgICAgPDwgc3RkOjplbmRs
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR0xDb2xvciBwaXhlbHMgPSBHTENvbG9y
OjpyZWQ7CisKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7
CisgICAgZ2xUZXhTdG9yYWdlMkRFWFQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdCQThfT0VTLCAx
LCAxKTsKKyAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwgMSwgMSwg
R0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgJnBpeGVscyk7CisKKyAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sxXSk7CisgICAgZ2xUZXhTdG9yYWdlMkRFWFQoR0xf
VEVYVFVSRV8yRCwgMSwgR0xfUkdCQThfT0VTLCAxLCAxKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4
dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8y
RCwgbVRleHR1cmVzWzFdLCAwKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIC8v
IFNob3VsZCBnZW5lcmF0ZSBhbiBlcnJvciB3aGVuIHRoZSB0ZXh0dXJlIGlzIHJlZGVmaW5lZAor
ICAgIGdsQ29weVRleHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIG1UZXh0dXJlc1sxXSwgR0xf
UkdCQSwgR0xfVU5TSUdORURfQllURSwgZmFsc2UsIGZhbHNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBmYWxzZSk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKKworICAgIC8vIFNob3VsZCBzdWNjZWVkIHdoZW4gdXNpbmcgQ29weVN1YlRleHR1cmUKKyAg
ICBnbENvcHlTdWJUZXh0dXJlQ0hST01JVU0obVRleHR1cmVzWzBdLCBtVGV4dHVyZXNbMV0sIDAs
IDAsIDAsIDAsIDEsIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworICAgIEVYUEVDVF9HTF9OT19F
UlJPUigpOworCisgICAgLy8gQ2hlY2sgdGhhdCBGQiBpcyBjb21wbGV0ZS4KKyAgICBFWFBFQ1Rf
R0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFLCBnbENoZWNrRnJhbWVidWZmZXJTdGF0
dXMoR0xfRlJBTUVCVUZGRVIpKTsKKworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBw
aXhlbHMpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFRlc3QgdmFsaWRh
dGlvbiBvZiBpbnRlcm5hbCBmb3JtYXRzIGluIENvcHlUZXh0dXJlIGFuZCBDb3B5U3ViVGV4dHVy
ZQorVEVTVF9QKENvcHlUZXh0dXJlVGVzdCwgSW50ZXJuYWxGb3JtYXQpCit7CisgICAgaWYgKCFj
aGVja0V4dGVuc2lvbnMoKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBz
dGQ6OnZlY3RvcjxHTGludD4gc291cmNlRm9ybWF0czsKKyAgICBzb3VyY2VGb3JtYXRzLnB1c2hf
YmFjayhHTF9BTFBIQSk7CisgICAgc291cmNlRm9ybWF0cy5wdXNoX2JhY2soR0xfUkdCKTsKKyAg
ICBzb3VyY2VGb3JtYXRzLnB1c2hfYmFjayhHTF9SR0JBKTsKKyAgICBzb3VyY2VGb3JtYXRzLnB1
c2hfYmFjayhHTF9MVU1JTkFOQ0UpOworICAgIHNvdXJjZUZvcm1hdHMucHVzaF9iYWNrKEdMX0xV
TUlOQU5DRV9BTFBIQSk7CisKKyAgICBzdGQ6OnZlY3RvcjxHTGludD4gZGVzdEZvcm1hdHM7Cisg
ICAgZGVzdEZvcm1hdHMucHVzaF9iYWNrKEdMX1JHQik7CisgICAgZGVzdEZvcm1hdHMucHVzaF9i
YWNrKEdMX1JHQkEpOworCisgICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF90ZXh0dXJl
X2Zvcm1hdF9CR1JBODg4OCIpKQorICAgIHsKKyAgICAgICAgc291cmNlRm9ybWF0cy5wdXNoX2Jh
Y2soR0xfQkdSQV9FWFQpOworICAgICAgICBkZXN0Rm9ybWF0cy5wdXNoX2JhY2soR0xfQkdSQV9F
WFQpOworICAgIH0KKworICAgIC8vIFRlc3Qgd2l0aCBnbENvcHlUZXh0dXJlCisgICAgZm9yIChH
TGludCBzb3VyY2VGb3JtYXQgOiBzb3VyY2VGb3JtYXRzKQorICAgIHsKKyAgICAgICAgZm9yIChH
TGludCBkZXN0Rm9ybWF0IDogZGVzdEZvcm1hdHMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGds
QmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdKTsKKyAgICAgICAgICAgIGds
VGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBzb3VyY2VGb3JtYXQsIDEsIDEsIDAsIHNvdXJj
ZUZvcm1hdCwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
cHRyKTsKKyAgICAgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgICAgICAgICBn
bENvcHlUZXh0dXJlQ0hST01JVU0obVRleHR1cmVzWzBdLCBtVGV4dHVyZXNbMV0sIGRlc3RGb3Jt
YXQsIEdMX1VOU0lHTkVEX0JZVEUsIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZhbHNlLCBmYWxzZSk7CisKKyAgICAgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OworICAgICAgICB9CisgICAgfQorCisgICAgLy8gVGVzdCB3aXRoIGdsQ29weVN1YlRleHR1cmUK
KyAgICBmb3IgKEdMaW50IHNvdXJjZUZvcm1hdCA6IHNvdXJjZUZvcm1hdHMpCisgICAgeworICAg
ICAgICBmb3IgKEdMaW50IGRlc3RGb3JtYXQgOiBkZXN0Rm9ybWF0cykKKyAgICAgICAgeworICAg
ICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0pOworICAg
ICAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIHNvdXJjZUZvcm1hdCwgMSwg
MSwgMCwgc291cmNlRm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAg
ICAgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzFdKTsKKyAg
ICAgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBkZXN0Rm9ybWF0LCAxLCAx
LCAwLCBkZXN0Rm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIpOworICAgICAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAg
ICAgICAgIGdsQ29weVN1YlRleHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIG1UZXh0dXJlc1sx
XSwgMCwgMCwgMCwgMCwgMSwgMSwgZmFsc2UsIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZhbHNlKTsKKworICAgICAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIENoZWNrIHRoYXQgaW52YWxpZCBpbnRlcm5h
bCBmb3JtYXRzIHJldHVybiBlcnJvcnMuCitURVNUX1AoQ29weVRleHR1cmVUZXN0LCBJbnRlcm5h
bEZvcm1hdE5vdFN1cHBvcnRlZCkKK3sKKyAgICBpZiAoIWNoZWNrRXh0ZW5zaW9ucygpKQorICAg
IHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVS
RV8yRCwgbVRleHR1cmVzWzBdKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwg
R0xfUkdCQSwgMSwgMSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7Cisg
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBzdGQ6OnZlY3RvcjxHTGludD4gdW5zdXBw
b3J0ZWREZXN0Rm9ybWF0czsKKyAgICB1bnN1cHBvcnRlZERlc3RGb3JtYXRzLnB1c2hfYmFjayhH
TF9BTFBIQSk7CisgICAgdW5zdXBwb3J0ZWREZXN0Rm9ybWF0cy5wdXNoX2JhY2soR0xfTFVNSU5B
TkNFKTsKKyAgICB1bnN1cHBvcnRlZERlc3RGb3JtYXRzLnB1c2hfYmFjayhHTF9MVU1JTkFOQ0Vf
QUxQSEEpOworCisgICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9mb3Jt
YXRfQkdSQTg4ODgiKSkKKyAgICB7CisgICAgICAgIHVuc3VwcG9ydGVkRGVzdEZvcm1hdHMucHVz
aF9iYWNrKEdMX0JHUkFfRVhUKTsKKyAgICB9CisKKyAgICAvLyBDaGVjayB1bnN1cHBvcnRlZCBm
b3JtYXQgcmVwb3J0cyBhbiBlcnJvci4KKyAgICBmb3IgKEdMaW50IHVuc3VwcG9ydGVkRGVzdEZv
cm1hdCA6IHVuc3VwcG9ydGVkRGVzdEZvcm1hdHMpCisgICAgeworICAgICAgICBnbENvcHlUZXh0
dXJlQ0hST01JVU0obVRleHR1cmVzWzBdLCBtVGV4dHVyZXNbMV0sIHVuc3VwcG9ydGVkRGVzdEZv
cm1hdCwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZh
bHNlLCBmYWxzZSwgZmFsc2UpOworICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOworICAgIH0KKworICAgIGZvciAoR0xpbnQgdW5zdXBwb3J0ZWREZXN0Rm9ybWF0
IDogdW5zdXBwb3J0ZWREZXN0Rm9ybWF0cykKKyAgICB7CisgICAgICAgIGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzFdKTsKKyAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RF
WFRVUkVfMkQsIDAsIHVuc3VwcG9ydGVkRGVzdEZvcm1hdCwgMSwgMSwgMCwgdW5zdXBwb3J0ZWRE
ZXN0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgbnVsbHB0
cik7CisgICAgICAgIGdsQ29weVN1YlRleHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIG1UZXh0
dXJlc1sxXSwgMCwgMCwgMCwgMCwgMSwgMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisgICAgICAg
IEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgfQorfQorCisvLyBU
ZXN0IHRvIGVuc3VyZSB0aGF0IHRoZSBkZXN0aW5hdGlvbiB0ZXh0dXJlIGlzIHJlZGVmaW5lZCBp
ZiB0aGUgcHJvcGVydGllcyBhcmUgZGlmZmVyZW50LgorVEVTVF9QKENvcHlUZXh0dXJlVGVzdCwg
UmVkZWZpbmVEZXN0aW5hdGlvblRleHR1cmUpCit7CisgICAgaWYgKCFjaGVja0V4dGVuc2lvbnMo
KSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHTENvbG9yIHBpeGVsc1s0
XSA9IHtHTENvbG9yOjpyZWQsIEdMQ29sb3I6OnJlZCwgR0xDb2xvcjo6cmVkLCBHTENvbG9yOjpy
ZWR9OworCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0pOwor
ICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAyLCAyLCAwLCBHTF9S
R0JBLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbHMpOworCisgICAgZ2xCaW5kVGV4dHVyZShHTF9U
RVhUVVJFXzJELCBtVGV4dHVyZXNbMV0pOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJE
LCAwLCBHTF9CR1JBX0VYVCwgMSwgMSwgMCwgR0xfQkdSQV9FWFQsIEdMX1VOU0lHTkVEX0JZVEUs
IHBpeGVscyk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBHTF9JTlZBTElE
X09QRVJBVElPTiBkdWUgdG8gImludHJpbnNpYyBmb3JtYXQiICE9ICJpbnRlcm5hbCBmb3JtYXQi
LgorICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCAwLCAwLCAxLCAxLCBHTF9S
R0JBLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbHMpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9J
TlZBTElEX09QRVJBVElPTik7CisgICAgLy8gR0xfSU5WQUxJRF9WQUxVRSBkdWUgdG8gYmFkIGRp
bWVuc2lvbnMuCisgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDEsIDEsIDEs
IDEsIEdMX0JHUkFfRVhULCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbHMpOworICAgIEVYUEVDVF9H
TF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKKworICAgIC8vIElmIHRoZSBkZXN0IHRleHR1cmUg
aGFzIGRpZmZlcmVudCBwcm9wZXJ0aWVzLCBnbENvcHlUZXh0dXJlQ0hST01JVU0oKQorICAgIC8v
IHJlZGVmaW5lcyB0aGVtLgorICAgIGdsQ29weVRleHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0s
IG1UZXh0dXJlc1sxXSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgZmFsc2UsIGZhbHNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7CisKKyAgICAvLyBnbFRleFN1YkltYWdlMkQoKSBzdWNjZWVkcyBiZWNhdXNlIG1UZXh0dXJl
c1sxXSBpcyByZWRlZmluZWQgaW50byAyeDIKKyAgICAvLyBkaW1lbnNpb24gYW5kIEdMX1JHQkEg
Zm9ybWF0LgorICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzFdKTsK
KyAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMSwgMSwgMSwgMSwgR0xfUkdC
QSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
KworICAgIC8vIENoZWNrIHRoYXQgRkIgaXMgY29tcGxldGUuCisgICAgRVhQRUNUX0dMRU5VTV9F
UShHTF9GUkFNRUJVRkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZS
QU1FQlVGRkVSKSk7CisKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMSwgMSwgcGl4ZWxzWzNd
KTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKK30KKworLy8gVGVzdCB0aGF0IGludmFsaWQg
ZGltZW5zaW9ucyBpbiBDb3B5U3ViVGV4dHVyZSBhcmUgdmFsaWRhdGVkCitURVNUX1AoQ29weVRl
eHR1cmVUZXN0LCBDb3B5U3ViVGV4dHVyZURpbWVuc2lvbikKK3sKKyAgICBpZiAoIWNoZWNrRXh0
ZW5zaW9ucygpKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGdsQmluZFRl
eHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdKTsKKyAgICBnbFRleEltYWdlMkQoR0xf
VEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllU
RSwgbnVsbHB0cik7CisKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJl
c1sxXSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDMsIDMs
IDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOworCisgICAgZ2xDb3B5U3Vi
VGV4dHVyZUNIUk9NSVVNKG1UZXh0dXJlc1swXSwgbVRleHR1cmVzWzFdLCAxLCAxLCAwLCAwLCAx
LCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKwor
ICAgIC8vIHhvZmZzZXQgPCAwCisgICAgZ2xDb3B5U3ViVGV4dHVyZUNIUk9NSVVNKG1UZXh0dXJl
c1swXSwgbVRleHR1cmVzWzFdLCAtMSwgMSwgMCwgMCwgMSwgMSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOworCisgICAgLy8geCA8
IDAKKyAgICBnbENvcHlTdWJUZXh0dXJlQ0hST01JVU0obVRleHR1cmVzWzBdLCBtVGV4dHVyZXNb
MV0sIDEsIDEsIC0xLCAwLCAxLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICBFWFBFQ1Rf
R0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7CisKKyAgICAvLyB4b2Zmc2V0ICsgd2lkdGggPiBk
ZXN0X3dpZHRoCisgICAgZ2xDb3B5U3ViVGV4dHVyZUNIUk9NSVVNKG1UZXh0dXJlc1swXSwgbVRl
eHR1cmVzWzFdLCAyLCAyLCAwLCAwLCAyLCAyLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICBF
WFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7CisKKyAgICAvLyB4ICsgd2lkdGggPiBz
b3VyY2Vfd2lkdGgKKyAgICBnbENvcHlTdWJUZXh0dXJlQ0hST01JVU0obVRleHR1cmVzWzBdLCBt
VGV4dHVyZXNbMV0sIDAsIDAsIDEsIDEsIDIsIDIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworICAg
IEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKK30KKworLy8gVGVzdCB0aGF0IGlu
dmFsaWQgSURzIGluIENvcHlUZXh0dXJlIGFyZSB2YWxpZGF0ZWQKK1RFU1RfUChDb3B5VGV4dHVy
ZVRlc3QsIENvcHlUZXh0dXJlSW52YWxpZFRleHR1cmVJZHMpCit7CisgICAgaWYgKCFjaGVja0V4
dGVuc2lvbnMoKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBnbEJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7CisgICAgZ2xUZXhJbWFnZTJEKEdM
X1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDIsIDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsIG51bGxwdHIpOworCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVy
ZXNbMV0pOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAzLCAz
LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKKworICAgIGdsQ29weVRl
eHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIDk5OTkzLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9C
WVRFLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJ
RF9WQUxVRSk7CisKKyAgICBnbENvcHlUZXh0dXJlQ0hST01JVU0oOTk5OTQsIG1UZXh0dXJlc1sx
XSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisgICAg
RVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOworCisgICAgZ2xDb3B5VGV4dHVyZUNI
Uk9NSVVNKDk5OTk1LCA5OTk5NiwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOworCisg
ICAgZ2xDb3B5VGV4dHVyZUNIUk9NSVVNKG1UZXh0dXJlc1swXSwgbVRleHR1cmVzWzFdLCBHTF9S
R0JBLCBHTF9VTlNJR05FRF9CWVRFLCBmYWxzZSwgZmFsc2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZhbHNlKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKK30KKworLy8gVGVzdCB0
aGF0IGludmFsaWQgSURzIGluIENvcHlTdWJUZXh0dXJlIGFyZSB2YWxpZGF0ZWQKK1RFU1RfUChD
b3B5VGV4dHVyZVRlc3QsIENvcHlTdWJUZXh0dXJlSW52YWxpZFRleHR1cmVJZHMpCit7CisgICAg
aWYgKCFjaGVja0V4dGVuc2lvbnMoKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7CisgICAgZ2xU
ZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDIsIDIsIDAsIEdMX1JHQkEsIEdM
X1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOworCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
XzJELCBtVGV4dHVyZXNbMV0pOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBH
TF9SR0JBLCAzLCAzLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKKwor
ICAgIGdsQ29weVN1YlRleHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIDk5OTkzLCAxLCAxLCAw
LCAwLCAxLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xf
SU5WQUxJRF9WQUxVRSk7CisKKyAgICBnbENvcHlTdWJUZXh0dXJlQ0hST01JVU0oOTk5OTQsIG1U
ZXh0dXJlc1sxXSwgMSwgMSwgMCwgMCwgMSwgMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisgICAg
RVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOworCisgICAgZ2xDb3B5U3ViVGV4dHVy
ZUNIUk9NSVVNKDk5OTk1LCA5OTk5NiwgMSwgMSwgMCwgMCwgMSwgMSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOworCisgICAgZ2xD
b3B5U3ViVGV4dHVyZUNIUk9NSVVNKG1UZXh0dXJlc1swXSwgbVRleHR1cmVzWzFdLCAxLCAxLCAw
LCAwLCAxLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1Io
KTsKK30KKworLy8gVGVzdCB0aGF0IHVzaW5nIGFuIG9mZnNldCBpbiBDb3B5U3ViVGV4dHVyZSB3
b3JrcyBjb3JyZWN0bHkKK1RFU1RfUChDb3B5VGV4dHVyZVRlc3QsIENvcHlTdWJUZXh0dXJlT2Zm
c2V0KQoreworICAgIGlmICghY2hlY2tFeHRlbnNpb25zKCkpCisgICAgeworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgR0xDb2xvciByZ2JhUGl4ZWxzWzQgKiA0XSA9IHtHTENvbG9yOjpy
ZWQsIEdMQ29sb3I6OmdyZWVuLCBHTENvbG9yOjpibHVlLCBHTENvbG9yOjpibGFja307CisgICAg
Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0pOworICAgIGdsVGV4SW1h
Z2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAyLCAyLCAwLCBHTF9SR0JBLCBHTF9VTlNJ
R05FRF9CWVRFLCByZ2JhUGl4ZWxzKTsKKworICAgIEdMQ29sb3IgdHJhbnNwYXJlbnRQaXhlbHNb
NCAqIDRdID0ge0dMQ29sb3I6OnRyYW5zcGFyZW50QmxhY2ssIEdMQ29sb3I6OnRyYW5zcGFyZW50
QmxhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xDb2xvcjo6
dHJhbnNwYXJlbnRCbGFjaywgR0xDb2xvcjo6dHJhbnNwYXJlbnRCbGFja307CisgICAgZ2xCaW5k
VGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMV0pOworICAgIGdsVGV4SW1hZ2UyRChH
TF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAyLCAyLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9C
WVRFLCB0cmFuc3BhcmVudFBpeGVscyk7CisKKyAgICBnbENvcHlTdWJUZXh0dXJlQ0hST01JVU0o
bVRleHR1cmVzWzBdLCBtVGV4dHVyZXNbMV0sIDEsIDEsIDAsIDAsIDEsIDEsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgIGdsQ29weVN1YlRleHR1
cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIG1UZXh0dXJlc1sxXSwgMSwgMCwgMSwgMCwgMSwgMSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgZ2xD
b3B5U3ViVGV4dHVyZUNIUk9NSVVNKG1UZXh0dXJlc1swXSwgbVRleHR1cmVzWzFdLCAwLCAxLCAw
LCAxLCAxLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1Io
KTsKKworICAgIC8vIENoZWNrIHRoYXQgRkIgaXMgY29tcGxldGUuCisgICAgRVhQRUNUX0dMRU5V
TV9FUShHTF9GUkFNRUJVRkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdM
X0ZSQU1FQlVGRkVSKSk7CisKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xv
cjo6dHJhbnNwYXJlbnRCbGFjayk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDEsIDEsIEdM
Q29sb3I6OnJlZCk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDEsIDAsIEdMQ29sb3I6Omdy
ZWVuKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMSwgR0xDb2xvcjo6Ymx1ZSk7Cisg
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFRlc3QgdGhhdCBmbGlwcGluZyB0aGUg
WSBjb21wb25lbnQgd29ya3MgY29ycmVjdGx5CitURVNUX1AoQ29weVRleHR1cmVUZXN0LCBGbGlw
WSkKK3sKKyAgICBpZiAoIWNoZWNrRXh0ZW5zaW9ucygpKQorICAgIHsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIEdMQ29sb3IgcmdiYVBpeGVsc1s0XSA9IHtHTENvbG9yKDI1NXUsIDI1
NXUsIDI1NXUsIDI1NXUpLCBHTENvbG9yKDEyN3UsIDEyN3UsIDEyN3UsIDEyN3UpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTENvbG9yKDYzdSwgNjN1LCA2M3UsIDEyN3UpLCBHTENv
bG9yKDI1NXUsIDI1NXUsIDI1NXUsIDB1KX07CisKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfMkQsIG1UZXh0dXJlc1swXSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAs
IEdMX1JHQkEsIDIsIDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHJnYmFQaXhlbHMp
OworCisgICAgZ2xDb3B5VGV4dHVyZUNIUk9NSVVNKG1UZXh0dXJlc1swXSwgbVRleHR1cmVzWzFd
LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBHTF9UUlVFLCBHTF9GQUxTRSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfRkFMU0UpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwor
CisgICAgLy8gQ2hlY2sgdGhhdCBGQiBpcyBjb21wbGV0ZS4KKyAgICBFWFBFQ1RfR0xFTlVNX0VR
KEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFLCBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJB
TUVCVUZGRVIpKTsKKworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCByZ2JhUGl4ZWxz
WzJdKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMSwgMCwgcmdiYVBpeGVsc1szXSk7Cisg
ICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDEsIHJnYmFQaXhlbHNbMF0pOworICAgIEVYUEVD
VF9QSVhFTF9DT0xPUl9FUSgxLCAxLCByZ2JhUGl4ZWxzWzFdKTsKKyAgICBFWFBFQ1RfR0xfTk9f
RVJST1IoKTsKK30KKworLy8gVGVzdCB0aGF0IHByZW11bHRpcHlpbmcgdGhlIGFscGhhIG9uIGNv
cHkgd29ya3MgY29ycmVjdGx5CitURVNUX1AoQ29weVRleHR1cmVUZXN0LCBQcmVtdWx0aXBseUFs
cGhhKQoreworICAgIGlmICghY2hlY2tFeHRlbnNpb25zKCkpCisgICAgeworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgR0xDb2xvciByZ2JhUGl4ZWxzWzRdID0ge0dMQ29sb3IoMjU1dSwg
MjU1dSwgMjU1dSwgMjU1dSksIEdMQ29sb3IoMjU1dSwgMjU1dSwgMjU1dSwgMTI3dSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMQ29sb3IoMTI3dSwgMTI3dSwgMTI3dSwgMTI3dSks
IEdMQ29sb3IoMjU1dSwgMjU1dSwgMjU1dSwgMHUpfTsKKworICAgIGdsQmluZFRleHR1cmUoR0xf
VEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8y
RCwgMCwgR0xfUkdCQSwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcmdiYVBp
eGVscyk7CisKKyAgICBnbENvcHlUZXh0dXJlQ0hST01JVU0obVRleHR1cmVzWzBdLCBtVGV4dHVy
ZXNbMV0sIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIEdMX0ZBTFNFLCBHTF9UUlVFLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9GQUxTRSk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7CisKKyAgICAvLyBDaGVjayB0aGF0IEZCIGlzIGNvbXBsZXRlLgorICAgIEVYUEVDVF9HTEVO
VU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhH
TF9GUkFNRUJVRkZFUikpOworCisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX05FQVIoMCwgMCwgR0xD
b2xvcigyNTUsIDI1NSwgMjU1LCAyNTUpLCAxLjApOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9O
RUFSKDEsIDAsIEdMQ29sb3IoMTI3LCAxMjcsIDEyNywgMTI3KSwgMS4wKTsKKyAgICBFWFBFQ1Rf
UElYRUxfQ09MT1JfTkVBUigwLCAxLCBHTENvbG9yKDYzLCA2MywgNjMsIDEyNyksIDEuMCk7Cisg
ICAgRVhQRUNUX1BJWEVMX0NPTE9SX05FQVIoMSwgMSwgR0xDb2xvcigwLCAwLCAwLCAwKSwgMS4w
KTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKK30KKworLy8gVGVzdCB0aGF0IHVubXVsdGlw
eWluZyB0aGUgYWxwaGEgb24gY29weSB3b3JrcyBjb3JyZWN0bHkKK1RFU1RfUChDb3B5VGV4dHVy
ZVRlc3QsIFVubXVsdGlwbHlBbHBoYSkKK3sKKyAgICBpZiAoIWNoZWNrRXh0ZW5zaW9ucygpKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdMQ29sb3IgcmdiYVBpeGVsc1s0
XSA9IHtHTENvbG9yKDI1NXUsIDI1NXUsIDI1NXUsIDI1NXUpLCBHTENvbG9yKDEyN3UsIDEyN3Us
IDEyN3UsIDEyN3UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTENvbG9yKDYzdSwg
NjN1LCA2M3UsIDEyN3UpLCBHTENvbG9yKDI1NXUsIDI1NXUsIDI1NXUsIDB1KX07CisKKyAgICBn
bEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7CisgICAgZ2xUZXhJbWFn
ZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDIsIDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lH
TkVEX0JZVEUsIHJnYmFQaXhlbHMpOworCisgICAgZ2xDb3B5VGV4dHVyZUNIUk9NSVVNKG1UZXh0
dXJlc1swXSwgbVRleHR1cmVzWzFdLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBHTF9GQUxT
RSwgR0xfRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1RSVUUpOworICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gQ2hlY2sgdGhhdCBGQiBpcyBjb21wbGV0ZS4K
KyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFLCBnbENoZWNrRnJh
bWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKKworICAgIEVYUEVDVF9QSVhFTF9DT0xP
Ul9ORUFSKDAsIDAsIEdMQ29sb3IoMjU1LCAyNTUsIDI1NSwgMjU1KSwgMS4wKTsKKyAgICBFWFBF
Q1RfUElYRUxfQ09MT1JfTkVBUigxLCAwLCBHTENvbG9yKDI1NSwgMjU1LCAyNTUsIDEyNyksIDEu
MCk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX05FQVIoMCwgMSwgR0xDb2xvcigxMjcsIDEyNywg
MTI3LCAxMjcpLCAxLjApOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9ORUFSKDEsIDEsIEdMQ29s
b3IoMjU1LCAyNTUsIDI1NSwgMCksIDEuMCk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9
CisKKy8vIFRlc3QgdGhhdCB1bm11bHRpcHlpbmcgYW5kIHByZW11bHRpcGx5aW5nIHRoZSBhbHBo
YSBpcyB0aGUgc2FtZSBhcyBkb2luZyBuZWl0aGVyCitURVNUX1AoQ29weVRleHR1cmVUZXN0LCBV
bm11bHRpcGx5QW5kUHJlbXVsdHBseUFscGhhKQoreworICAgIGlmICghY2hlY2tFeHRlbnNpb25z
KCkpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR0xDb2xvciByZ2JhUGl4
ZWxzWzRdID0ge0dMQ29sb3IoMjU1dSwgMjU1dSwgMjU1dSwgMjU1dSksIEdMQ29sb3IoMTI3dSwg
MTI3dSwgMTI3dSwgMTI3dSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMQ29sb3Io
NjN1LCA2M3UsIDYzdSwgMTI3dSksIEdMQ29sb3IoMjU1dSwgMjU1dSwgMjU1dSwgMHUpfTsKKwor
ICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdKTsKKyAgICBnbFRl
eEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMiwgMiwgMCwgR0xfUkdCQSwgR0xf
VU5TSUdORURfQllURSwgcmdiYVBpeGVscyk7CisKKyAgICBnbENvcHlUZXh0dXJlQ0hST01JVU0o
bVRleHR1cmVzWzBdLCBtVGV4dHVyZXNbMV0sIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIEdM
X0ZBTFNFLCBHTF9UUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9UUlVFKTsKKyAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIENoZWNrIHRoYXQgRkIgaXMgY29tcGxl
dGUuCisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GUkFNRUJVRkZFUl9DT01QTEVURSwgZ2xDaGVj
a0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7CisKKyAgICBFWFBFQ1RfUElYRUxf
Q09MT1JfTkVBUigwLCAwLCBHTENvbG9yKDI1NSwgMjU1LCAyNTUsIDI1NSksIDEuMCk7CisgICAg
RVhQRUNUX1BJWEVMX0NPTE9SX05FQVIoMSwgMCwgR0xDb2xvcigxMjcsIDEyNywgMTI3LCAxMjcp
LCAxLjApOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9ORUFSKDAsIDEsIEdMQ29sb3IoNjMsIDYz
LCA2MywgMTI3KSwgMS4wKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfTkVBUigxLCAxLCBHTENv
bG9yKDI1NSwgMjU1LCAyNTUsIDApLCAxLjApOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwor
fQorCisvLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hp
Y2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UKKy8vIHRlc3RzIHNo
b3VsZCBiZSBydW4gYWdhaW5zdC4KK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoQ29weVRleHR1cmVU
ZXN0LCBFUzJfRDNEOSgpLCBFUzJfRDNEMTEoKSwgRVMyX09QRU5HTCgpLCBFUzJfT1BFTkdMRVMo
KSk7CisKK30gIC8vIG5hbWVzcGFjZSBhbmdsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0N1YmVNYXBUZXh0dXJlVGVzdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0N1YmVNYXBUZXh0
dXJlVGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL2dsX3Rlc3RzL0N1YmVNYXBUZXh0dXJlVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMzggQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVz
dC5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKK2NsYXNzIEN1YmVNYXBUZXh0dXJlVGVz
dCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIEN1YmVNYXBUZXh0dXJl
VGVzdCgpCisgICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0aCgyNTYpOworICAgICAgICBzZXRX
aW5kb3dIZWlnaHQoMjU2KTsKKyAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKKyAgICAgICAg
c2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKKyAg
ICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBT
ZXRVcCgpCisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7CisKKyAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcgdnNTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgICAgICgKKyAgICAg
ICAgICAgIGF0dHJpYnV0ZSBoaWdocCB2ZWM0IHBvc2l0aW9uOworICAgICAgICAgICAgdm9pZCBt
YWluKHZvaWQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBw
b3NpdGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyBmc1NvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAg
dW5pZm9ybSBoaWdocCB2ZWM0IGNvbG9yOworICAgICAgICAgICAgdm9pZCBtYWluKHZvaWQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gY29sb3I7CisgICAg
ICAgICAgICB9CisgICAgICAgICk7CisKKyAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3Jh
bSh2c1NvdXJjZSwgZnNTb3VyY2UpOworICAgICAgICBpZiAobVByb2dyYW0gPT0gMCkKKyAgICAg
ICAgeworICAgICAgICAgICAgRkFJTCgpIDw8ICJzaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLiI7
CisgICAgICAgIH0KKworICAgICAgICBtQ29sb3JMb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0
aW9uKG1Qcm9ncmFtLCAiY29sb3IiKTsKKworICAgICAgICBnbFVzZVByb2dyYW0obVByb2dyYW0p
OworCisgICAgICAgIGdsQ2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKKyAgICAgICAgZ2xDbGVhckRl
cHRoZigwLjApOworICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBU
SF9CVUZGRVJfQklUKTsKKworICAgICAgICBnbEVuYWJsZShHTF9CTEVORCk7CisgICAgICAgIGds
RGlzYWJsZShHTF9ERVBUSF9URVNUKTsKKworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQorICAgIHsKKyAgICAgICAgZ2xE
ZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKKworICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7
CisgICAgfQorCisgICAgR0x1aW50IG1Qcm9ncmFtOworICAgIEdMaW50IG1Db2xvckxvY2F0aW9u
OworfTsKKworLy8gVmVyaWZ5IHRoYXQgcmVuZGVyaW5nIHRvIHRoZSBmYWNlcyBvZiBhIGN1YmUg
bWFwIGNvbnNlY3V0aXZlbHkgd2lsbCBjb3JyZWN0bHkgcmVuZGVyIHRvIGVhY2ggZmFjZS4KK1RF
U1RfUChDdWJlTWFwVGV4dHVyZVRlc3QsIFJlbmRlclRvRmFjZXNDb25zZWN1dGl2ZWx5KQorewor
ICAgIGNvbnN0IEdMZmxvYXQgZmFjZUNvbG9yc1tdID0KKyAgICB7CisgICAgICAgIDEuMGYsIDAu
MGYsIDAuMGYsIDEuMGYsCisgICAgICAgIDAuMGYsIDEuMGYsIDAuMGYsIDEuMGYsCisgICAgICAg
IDAuMGYsIDAuMGYsIDEuMGYsIDEuMGYsCisgICAgICAgIDEuMGYsIDEuMGYsIDAuMGYsIDEuMGYs
CisgICAgICAgIDEuMGYsIDAuMGYsIDEuMGYsIDEuMGYsCisgICAgICAgIDAuMGYsIDEuMGYsIDEu
MGYsIDEuMGYsCisgICAgfTsKKworICAgIEdMdWludCB0ZXggPSAwOworICAgIGdsR2VuVGV4dHVy
ZXMoMSwgJnRleCk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFX0NVQkVfTUFQLCB0ZXgp
OworICAgIGdsVGV4U3RvcmFnZTJERVhUKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIDEsIEdMX1JHQkE4
X09FUywgMSwgMSk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBHTHVpbnQgZmJv
ID0gMDsKKyAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmZmJvKTsKKyAgICBnbEJpbmRGcmFtZWJ1
ZmZlcihHTF9GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKwor
ICAgIGZvciAoR0xlbnVtIGZhY2UgPSAwOyBmYWNlIDwgNjsgZmFjZSsrKQorICAgIHsKKyAgICAg
ICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNI
TUVOVDAsIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCArIGZhY2UsIHRleCwgMCk7Cisg
ICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgICAgIGdsVXNlUHJvZ3JhbShtUHJv
Z3JhbSk7CisKKyAgICAgICAgY29uc3QgR0xmbG9hdCAqZmFjZUNvbG9yID0gZmFjZUNvbG9ycyAr
IChmYWNlICogNCk7CisgICAgICAgIGdsVW5pZm9ybTRmKG1Db2xvckxvY2F0aW9uLCBmYWNlQ29s
b3JbMF0sIGZhY2VDb2xvclsxXSwgZmFjZUNvbG9yWzJdLCBmYWNlQ29sb3JbM10pOworCisgICAg
ICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICAgICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7CisgICAgfQorCisgICAgZm9yIChHTGVudW0gZmFjZSA9IDA7IGZhY2Ug
PCA2OyBmYWNlKyspCisgICAgeworICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZS
QU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJ
VElWRV9YICsgZmFjZSwgdGV4LCAwKTsKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisK
KyAgICAgICAgY29uc3QgR0xmbG9hdCAqZmFjZUNvbG9yID0gZmFjZUNvbG9ycyArIChmYWNlICog
NCk7CisgICAgICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCBmYWNlQ29sb3JbMF0gKiAyNTUsIGZh
Y2VDb2xvclsxXSAqIDI1NSwgZmFjZUNvbG9yWzJdICogMjU1LCBmYWNlQ29sb3JbM10gKiAyNTUp
OworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICB9CisKKyAgICBnbERlbGV0ZUZy
YW1lYnVmZmVycygxLCAmZmJvKTsKKyAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0ZXgpOworCisg
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGlj
aCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2
ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCitBTkdMRV9JTlNUQU5U
SUFURV9URVNUKEN1YmVNYXBUZXh0dXJlVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMy
X0QzRDExKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDlfMygpLAorICAg
ICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAg
IEVTM19PUEVOR0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCksCisg
ICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygpKTsKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9EM0QxMUVtdWxhdGVkSW5kZXhlZEJ1ZmZl
clRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9nbF90ZXN0cy9EM0QxMUVtdWxhdGVkSW5kZXhlZEJ1ZmZlclRlc3QuY3BwCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9EM0QxMUVt
dWxhdGVkSW5kZXhlZEJ1ZmZlclRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkz
IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworLy8gRDNEMTFFbXVsYXRlZEluZGV4ZWRCdWZmZXJUZXN0OgorLy8gICBU
ZXN0cyB0byB2YWxpZGF0ZSBvdXIgRDNEMTEgc3VwcG9ydCBmb3IgZW11bGF0aW5nIGFuIGluZGV4
ZWQKKy8vICAgdmVydGV4IGJ1ZmZlci4KKy8vCisKKyNpbmNsdWRlICJsaWJBTkdMRS9hbmdsZXR5
cGVzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dC5oIgorI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9CdWZmZXIxMS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9Db250ZXh0MTEuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvUmVuZGVyZXIxMS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9J
bmRleERhdGFNYW5hZ2VyLmgiCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKyNp
bmNsdWRlICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfaW5zdGFudGlhdGUuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIGFuZ2xlOworCituYW1lc3BhY2UKK3sKKworY2xhc3MgRDNEMTFFbXVsYXRlZEluZGV4
ZWRCdWZmZXJUZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisKKyAgICB2
b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsK
KyAgICAgICAgQVNTRVJUX0VRKEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFLCBH
ZXRQYXJhbSgpLmdldFJlbmRlcmVyKCkpOworCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0
ID0gcmVpbnRlcnByZXRfY2FzdDxnbDo6Q29udGV4dCAqPihnZXRFR0xXaW5kb3coKS0+Z2V0Q29u
dGV4dCgpKTsKKyAgICAgICAgcng6OkNvbnRleHQxMSAqY29udGV4dDExID0gcng6OkdldEltcGxB
czxyeDo6Q29udGV4dDExPihjb250ZXh0KTsKKyAgICAgICAgbVJlbmRlcmVyICAgICAgICAgICAg
ICAgID0gY29udGV4dDExLT5nZXRSZW5kZXJlcigpOworCisgICAgICAgIG1Tb3VyY2VCdWZmZXIg
PSBuZXcgcng6OkJ1ZmZlcjExKG1SZW5kZXJlcik7CisgICAgICAgIEdMZmxvYXQgdGVzdERhdGFb
XSA9IHsgMS4wZiwgMi4wZiwgMy4wZiwgNC4wZiwgNS4wZiwgNi4wZiB9OworICAgICAgICBnbDo6
RXJyb3IgZXJyb3IgPQorICAgICAgICAgICAgbVNvdXJjZUJ1ZmZlci0+c2V0RGF0YShHTF9BUlJB
WV9CVUZGRVIsIHRlc3REYXRhLCBzaXplb2YodGVzdERhdGEpLCBHTF9TVEFUSUNfRFJBVyk7Cisg
ICAgICAgIEFTU0VSVF9GQUxTRShlcnJvci5pc0Vycm9yKCkpOworCisgICAgICAgIG1UcmFuc2xh
dGVkQXR0cmlidXRlLmJhc2VPZmZzZXQgICAgICAgICAgICA9IDA7CisgICAgICAgIG1UcmFuc2xh
dGVkQXR0cmlidXRlLnVzZXNGaXJzdFZlcnRleE9mZnNldCA9IGZhbHNlOworICAgICAgICBtVHJh
bnNsYXRlZEF0dHJpYnV0ZS5zdHJpZGUgPSBzaXplb2YoR0xmbG9hdCk7CisKKyAgICAgICAgR0x1
Ynl0ZSBpbmRpY2VzW10gPSB7MCwgMCwgMywgNCwgMiwgMSwgMX07CisKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBBcnJheVNpemUoaW5kaWNlcyk7IGkrKykKKyAgICAgICAgeworICAg
ICAgICAgICAgbUV4cGVjdGVkRXhwYW5kZWREYXRhLnB1c2hfYmFjayh0ZXN0RGF0YVtpbmRpY2Vz
W2ldXSk7CisgICAgICAgICAgICBtdWJ5dGVJbmRpY2VzLnB1c2hfYmFjayhpbmRpY2VzW2ldKTsK
KyAgICAgICAgICAgIG11aW50SW5kaWNlcy5wdXNoX2JhY2soaW5kaWNlc1tpXSk7CisgICAgICAg
ICAgICBtdXNob3J0SW5kaWNlcy5wdXNoX2JhY2soaW5kaWNlc1tpXSk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFNhZmVE
ZWxldGUobVNvdXJjZUJ1ZmZlcik7CisgICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKKyAg
ICB9CisKKyAgICB2b2lkIGNyZWF0ZU1hcHBhYmxlQ29tcGFyZUJ1ZmZlckZyb21FbXVsYXRlZEJ1
ZmZlcihJRDNEMTFCdWZmZXIgKnNvdXJjZUJ1ZmZlciwgR0x1aW50IHNpemUsIElEM0QxMUJ1ZmZl
ciAqKm1hcHBhYmxlQnVmZmVyKQorICAgIHsKKyAgICAgICAgKm1hcHBhYmxlQnVmZmVyID0gbnVs
bHB0cjsKKworICAgICAgICBEM0QxMV9CVUZGRVJfREVTQyBidWZmZXJEZXNjOworICAgICAgICBi
dWZmZXJEZXNjLkJ5dGVXaWR0aCA9IHNpemU7CisgICAgICAgIGJ1ZmZlckRlc2MuTWlzY0ZsYWdz
ID0gMDsKKyAgICAgICAgYnVmZmVyRGVzYy5TdHJ1Y3R1cmVCeXRlU3RyaWRlID0gMDsKKyAgICAg
ICAgYnVmZmVyRGVzYy5Vc2FnZSA9IEQzRDExX1VTQUdFX1NUQUdJTkc7CisgICAgICAgIGJ1ZmZl
ckRlc2MuQmluZEZsYWdzID0gMDsKKyAgICAgICAgYnVmZmVyRGVzYy5DUFVBY2Nlc3NGbGFncyA9
IEQzRDExX0NQVV9BQ0NFU1NfUkVBRCB8IEQzRDExX0NQVV9BQ0NFU1NfV1JJVEU7CisKKyAgICAg
ICAgSFJFU1VMVCBociA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCktPkNyZWF0ZUJ1ZmZlcigmYnVm
ZmVyRGVzYywgbnVsbHB0ciwgbWFwcGFibGVCdWZmZXIpOworICAgICAgICBBU1NFUlRfVFJVRShT
VUNDRUVERUQoaHIpKTsKKworICAgICAgICBEM0QxMV9CT1ggc3JjQm94OworICAgICAgICBzcmNC
b3gubGVmdCA9IDA7CisgICAgICAgIHNyY0JveC5yaWdodCA9IHNpemU7CisgICAgICAgIHNyY0Jv
eC50b3AgPSAwOworICAgICAgICBzcmNCb3guYm90dG9tID0gMTsKKyAgICAgICAgc3JjQm94LmZy
b250ID0gMDsKKyAgICAgICAgc3JjQm94LmJhY2sgPSAxOworCisgICAgICAgIG1SZW5kZXJlci0+
Z2V0RGV2aWNlQ29udGV4dCgpLT5Db3B5U3VicmVzb3VyY2VSZWdpb24oKm1hcHBhYmxlQnVmZmVy
LCAwLCAwLCAwLCAwLCBzb3VyY2VCdWZmZXIsIDAsICZzcmNCb3gpOworICAgIH0KKworICAgIHZv
aWQgY29tcGFyZUNvbnRlbnRzKElEM0QxMUJ1ZmZlciAqYWN0dWFsKQorICAgIHsKKyAgICAgICAg
SUQzRDExQnVmZmVyICpjb21wYXJlQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgY3JlYXRlTWFw
cGFibGVDb21wYXJlQnVmZmVyRnJvbUVtdWxhdGVkQnVmZmVyKAorICAgICAgICAgICAgYWN0dWFs
LCBzaXplb2YoR0xmbG9hdCkgKiBzdGF0aWNfY2FzdDxHTHVpbnQ+KG1FeHBlY3RlZEV4cGFuZGVk
RGF0YS5zaXplKCkpLAorICAgICAgICAgICAgJmNvbXBhcmVCdWZmZXIpOworCisgICAgICAgIEQz
RDExX01BUFBFRF9TVUJSRVNPVVJDRSBtYXBwZWRSZXNvdXJjZTsKKyAgICAgICAgSFJFU1VMVCBo
ciA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpLT5NYXAoY29tcGFyZUJ1ZmZlciwgMCwg
RDNEMTFfTUFQX1JFQUQsIDAsICZtYXBwZWRSZXNvdXJjZSk7CisgICAgICAgIEFTU0VSVF9UUlVF
KFNVQ0NFRURFRChocikpOworCisgICAgICAgIEdMZmxvYXQqIGNvbXBhcmVEYXRhID0gc3RhdGlj
X2Nhc3Q8R0xmbG9hdCo+KG1hcHBlZFJlc291cmNlLnBEYXRhKTsKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtRXhwZWN0ZWRFeHBhbmRlZERhdGEuc2l6ZSgpOyBpKyspCisgICAgICAg
IHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShtRXhwZWN0ZWRFeHBhbmRlZERhdGFbaV0sIGNvbXBh
cmVEYXRhW2ldKTsKKyAgICAgICAgfQorCisgICAgICAgIG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29u
dGV4dCgpLT5Vbm1hcChjb21wYXJlQnVmZmVyLCAwKTsKKyAgICAgICAgU2FmZVJlbGVhc2UoY29t
cGFyZUJ1ZmZlcik7CisgICAgfQorCisgICAgdm9pZCBlbXVsYXRlQW5kQ29tcGFyZShyeDo6U291
cmNlSW5kZXhEYXRhICpzcmNEYXRhKQorICAgIHsKKyAgICAgICAgYXV0byBidWZmZXJPckVycm9y
ID0KKyAgICAgICAgICAgIG1Tb3VyY2VCdWZmZXItPmdldEVtdWxhdGVkSW5kZXhlZEJ1ZmZlcihz
cmNEYXRhLCBtVHJhbnNsYXRlZEF0dHJpYnV0ZSwgMCk7CisgICAgICAgIEFTU0VSVF9GQUxTRShi
dWZmZXJPckVycm9yLmlzRXJyb3IoKSk7CisgICAgICAgIElEM0QxMUJ1ZmZlciAqZW11bGF0ZWRC
dWZmZXIgPSBidWZmZXJPckVycm9yLmdldFJlc3VsdCgpOworICAgICAgICBBU1NFUlRfVFJVRShl
bXVsYXRlZEJ1ZmZlciAhPSBudWxscHRyKTsKKyAgICAgICAgY29tcGFyZUNvbnRlbnRzKGVtdWxh
dGVkQnVmZmVyKTsKKyAgICB9CisKKyAgcHJvdGVjdGVkOgorICAgIHJ4OjpCdWZmZXIxMSAqbVNv
dXJjZUJ1ZmZlcjsKKyAgICByeDo6UmVuZGVyZXIxMSAqbVJlbmRlcmVyOworICAgIHJ4OjpUcmFu
c2xhdGVkQXR0cmlidXRlIG1UcmFuc2xhdGVkQXR0cmlidXRlOworICAgIHN0ZDo6dmVjdG9yPEdM
ZmxvYXQ+IG1FeHBlY3RlZEV4cGFuZGVkRGF0YTsKKyAgICBzdGQ6OnZlY3RvcjxHTHVieXRlPiBt
dWJ5dGVJbmRpY2VzOworICAgIHN0ZDo6dmVjdG9yPEdMdWludD4gbXVpbnRJbmRpY2VzOworICAg
IHN0ZDo6dmVjdG9yPEdMdXNob3J0PiBtdXNob3J0SW5kaWNlczsKK307CisKKy8vIFRoaXMgdGVz
dHMgdGhhdCBhIEdMX1VOU0lHTkVEX0JZVEUgaW5kaWNlcyBsaXN0IGNhbiBiZSBzdWNjZXNzZnVs
bHkgZXhwYW5kZWQKKy8vIGludG8gYSB2YWxpZCBlbXVsYXRlZCBpbmRleGVkIGJ1ZmZlci4KK1RF
U1RfUChEM0QxMUVtdWxhdGVkSW5kZXhlZEJ1ZmZlclRlc3QsIFRlc3ROYXRpdmVUb0V4cGFuZGVk
VXNpbmdHTHVieXRlSW5kaWNlcykKK3sKKyAgICByeDo6U291cmNlSW5kZXhEYXRhIHNyY0RhdGEg
PSB7bnVsbHB0ciwgbXVieXRlSW5kaWNlcy5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4obXVieXRlSW5kaWNlcy5zaXpl
KCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRF
LCBmYWxzZX07CisgICAgZW11bGF0ZUFuZENvbXBhcmUoJnNyY0RhdGEpOworfQorCisvLyBUaGlz
IHRlc3RzIHRoYXQgYSBHTF9VTlNJR05FRF9TSE9SVCBpbmRpY2VzIGxpc3QgY2FuIGJlIHN1Y2Nl
c3NmdWxseSBleHBhbmRlZAorLy8gaW50byBhIHZhbGlkIGVtdWxhdGVkIGluZGV4ZWQgYnVmZmVy
LgorVEVTVF9QKEQzRDExRW11bGF0ZWRJbmRleGVkQnVmZmVyVGVzdCwgVGVzdE5hdGl2ZVRvRXhw
YW5kZWRVc2luZ0dMdXNob3J0SW5kaWNlcykKK3sKKyAgICByeDo6U291cmNlSW5kZXhEYXRhIHNy
Y0RhdGEgPSB7bnVsbHB0ciwgbXVzaG9ydEluZGljZXMuZGF0YSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG11c2hvcnRJbmRp
Y2VzLnNpemUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lH
TkVEX1NIT1JULCBmYWxzZX07CisgICAgZW11bGF0ZUFuZENvbXBhcmUoJnNyY0RhdGEpOworfQor
CisvLyBUaGlzIHRlc3RzIHRoYXQgYSBHTF9VTlNJR05FRF9JTlQgaW5kaWNlcyBsaXN0IGNhbiBi
ZSBzdWNjZXNzZnVsbHkgZXhwYW5kZWQKKy8vIGludG8gYSB2YWxpZCBlbXVsYXRlZCBpbmRleGVk
IGJ1ZmZlci4KK1RFU1RfUChEM0QxMUVtdWxhdGVkSW5kZXhlZEJ1ZmZlclRlc3QsIFRlc3ROYXRp
dmVUb0V4cGFuZGVkVXNpbmdHTHVpbnRJbmRpY2VzKQoreworICAgIHJ4OjpTb3VyY2VJbmRleERh
dGEgc3JjRGF0YSA9IHtudWxscHRyLCBtdWludEluZGljZXMuZGF0YSgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG11aW50SW5k
aWNlcy5zaXplKCkpLCBHTF9VTlNJR05FRF9JTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZhbHNlfTsKKyAgICBlbXVsYXRlQW5kQ29tcGFyZSgmc3JjRGF0YSk7Cit9CisK
Ky8vIFRoaXMgdGVzdHMgdmVyaWZpZXMgdGhhdCBhIEJ1ZmZlcjExIGNvbnRlbnRzIHJlbWFpbiB1
bmNoYW5nZWQgYWZ0ZXIgY2FsbGluZyBnZXRFbXVsYXRlZEluZGV4ZWRCdWZmZXIKK1RFU1RfUChE
M0QxMUVtdWxhdGVkSW5kZXhlZEJ1ZmZlclRlc3QsIFRlc3RTb3VyY2VCdWZmZXJSZW1haW5zVW50
b3VjaGVkQWZ0ZXJFeHBhbmRPcGVyYXRpb24pCit7CisgICAgLy8gQ29weSB0aGUgb3JpZ2luYWwg
c291cmNlIGJ1ZmZlciBiZWZvcmUgYW55IGV4cGFuZCBjYWxscyBoYXZlIGJlZW4gbWFkZQorICAg
IHJ4OjpCdWZmZXIxMSAqY2xlYW5Tb3VyY2VCdWZmZXIgPSBuZXcgcng6OkJ1ZmZlcjExKG1SZW5k
ZXJlcik7CisgICAgY2xlYW5Tb3VyY2VCdWZmZXItPmNvcHlTdWJEYXRhKG1Tb3VyY2VCdWZmZXIs
IDAsIDAsIG1Tb3VyY2VCdWZmZXItPmdldFNpemUoKSk7CisKKyAgICAvLyBEbyBhIGJhc2ljIGV4
YW5kZWQgYW5kIGNvbXBhcmUgdGVzdC4KKyAgICByeDo6U291cmNlSW5kZXhEYXRhIHNyY0RhdGEg
PSB7bnVsbHB0ciwgbXVpbnRJbmRpY2VzLmRhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihtdWludEluZGljZXMuc2l6ZSgp
KSwgR0xfVU5TSUdORURfSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
YWxzZX07CisgICAgZW11bGF0ZUFuZENvbXBhcmUoJnNyY0RhdGEpOworCisgICAgY29uc3QgdWlu
dDhfdCAqc291cmNlQnVmZmVyTWVtID0gbnVsbHB0cjsKKyAgICBjb25zdCB1aW50OF90ICpjbGVh
bkJ1ZmZlck1lbSA9IG51bGxwdHI7CisKKyAgICBnbDo6RXJyb3IgZXJyb3IgPSBtU291cmNlQnVm
ZmVyLT5nZXREYXRhKCZzb3VyY2VCdWZmZXJNZW0pOworICAgIEFTU0VSVF9GQUxTRShlcnJvci5p
c0Vycm9yKCkpOworCisgICAgZXJyb3IgPSBjbGVhblNvdXJjZUJ1ZmZlci0+Z2V0RGF0YSgmY2xl
YW5CdWZmZXJNZW0pOworICAgIEFTU0VSVF9GQUxTRShlcnJvci5pc0Vycm9yKCkpOworCisgICAg
aW50IHJlc3VsdCA9IG1lbWNtcChzb3VyY2VCdWZmZXJNZW0sIGNsZWFuQnVmZmVyTWVtLCBjbGVh
blNvdXJjZUJ1ZmZlci0+Z2V0U2l6ZSgpKTsKKyAgICBBU1NFUlRfRVEocmVzdWx0LCAwKTsKKwor
ICAgIFNhZmVEZWxldGUoY2xlYW5Tb3VyY2VCdWZmZXIpOworfQorCitBTkdMRV9JTlNUQU5USUFU
RV9URVNUKEQzRDExRW11bGF0ZWRJbmRleGVkQnVmZmVyVGVzdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgRVMyX0QzRDExKCkpOworCit9IC8vIGFub255bW91cyBuYW1lc3BhY2UKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9EM0QxMUZvcm1hdFRhYmxl
c1Rlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9nbF90ZXN0cy9EM0QxMUZvcm1hdFRhYmxlc1Rlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9EM0QxMUZvcm1hdFRhYmxl
c1Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTUzIEBACisvLworLy8gQ29weXJp
Z2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8g
RDNEMTFGb3JtYXRUYWJsZXNUZXN0OgorLy8gICBUZXN0cyB0byB2YWxpZGF0ZSBvdXIgRDNEMTEg
c3VwcG9ydCB0YWJsZXMgbWF0Y2ggaGFyZHdhcmUgc3VwcG9ydC4KKy8vCisKKyNpbmNsdWRlICJs
aWJBTkdMRS9hbmdsZXR5cGVzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dC5oIgorI2lu
Y2x1ZGUgImxpYkFOR0xFL2Zvcm1hdHV0aWxzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL0NvbnRleHQxMS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9keGdpX3N1cHBvcnRfdGFibGUuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvZm9ybWF0dXRpbHMxMS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9SZW5kZXJlcjExLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlLmgiCisjaW5jbHVkZSAidGVzdF91dGlscy9hbmds
ZV90ZXN0X2luc3RhbnRpYXRlLmgiCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIK
KwordXNpbmcgbmFtZXNwYWNlIGFuZ2xlOworCituYW1lc3BhY2UKK3sKKworY2xhc3MgRDNEMTFG
b3JtYXRUYWJsZXNUZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworCit9OworCisvLyBUaGlzIHRl
c3QgZW51bWVyYXRlcyBhbGwgR0wgZm9ybWF0cyAtIGZvciBlYWNoLCBpdCBxdWVyaWVzIHRoZSBE
M0Qgc3VwcG9ydCBmb3IKKy8vIHVzaW5nIGl0IGFzIGEgdGV4dHVyZSwgYSByZW5kZXIgdGFyZ2V0
LCBhbmQgc2FtcGxpbmcgZnJvbSBpdCBpbiB0aGUgc2hhZGVyLiBJdAorLy8gY2hlY2tzIHRoaXMg
YWdhaW5zdCBvdXIgc3BlZWQtb3B0aW1pemVkIGJha2VkIHRhYmxlcywgYW5kIHZhbGlkYXRlcyB0
aGV5IHdvdWxkCisvLyBnaXZlIHRoZSBzYW1lIHJlc3VsdC4KKy8vIFRPRE8oam1hZGlsbCk6IEZp
bmQgb3V0IHdoeSBpbiA5XzMsIHNvbWUgZm9ybWF0IHF1ZXJpZXMgcmV0dXJuIGFuIGVycm9yLgor
Ly8gVGhlIGVycm9yIHNlZW1zIHRvIGFwcGVhciBmb3IgZm9ybWF0cyB0aGF0IGFyZSBub3Qgc3Vw
cG9ydGVkIG9uIDlfMy4KK1RFU1RfUChEM0QxMUZvcm1hdFRhYmxlc1Rlc3QsIFRlc3RGb3JtYXRT
dXBwb3J0KQoreworICAgIEFTU0VSVF9FUShFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9B
TkdMRSwgR2V0UGFyYW0oKS5nZXRSZW5kZXJlcigpKTsKKworICAgIC8vIEhhY2sgdGhlIGFuZ2xl
IQorICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxnbDo6Q29udGV4
dCAqPihnZXRFR0xXaW5kb3coKS0+Z2V0Q29udGV4dCgpKTsKKyAgICByeDo6Q29udGV4dDExICpj
b250ZXh0MTEgPSByeDo6R2V0SW1wbEFzPHJ4OjpDb250ZXh0MTE+KGNvbnRleHQpOworICAgIHJ4
OjpSZW5kZXJlcjExICpyZW5kZXJlciA9IGNvbnRleHQxMS0+Z2V0UmVuZGVyZXIoKTsKKyAgICBj
b25zdCBhdXRvICZ0ZXh0dXJlQ2FwcyAgPSByZW5kZXJlci0+Z2V0TmF0aXZlVGV4dHVyZUNhcHMo
KTsKKworICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gcmVuZGVyZXItPmdldERldmljZSgpOwor
CisgICAgY29uc3QgZ2w6OkZvcm1hdFNldCAmYWxsRm9ybWF0cyA9IGdsOjpHZXRBbGxTaXplZElu
dGVybmFsRm9ybWF0cygpOworICAgIGZvciAoR0xlbnVtIGludGVybmFsRm9ybWF0IDogYWxsRm9y
bWF0cykKKyAgICB7CisgICAgICAgIGNvbnN0IHJ4OjpkM2QxMTo6Rm9ybWF0ICZmb3JtYXRJbmZv
ID0KKyAgICAgICAgICAgIHJ4OjpkM2QxMTo6Rm9ybWF0OjpHZXQoaW50ZXJuYWxGb3JtYXQsIHJl
bmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpKTsKKyAgICAgICAgY29uc3QgYXV0byAm
dGV4dHVyZUluZm8gPSB0ZXh0dXJlQ2Fwcy5nZXQoaW50ZXJuYWxGb3JtYXQpOworCisgICAgICAg
IC8vIEJpdHMgZm9yIHRleHR1cmluZworICAgICAgICBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQg
JmludGVybmFsRm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oaW50ZXJuYWxG
b3JtYXQpOworCisgICAgICAgIFVJTlQgdGV4U3VwcG9ydE1hc2sgPSBEM0QxMV9GT1JNQVRfU1VQ
UE9SVF9URVhUVVJFMkQ7CisgICAgICAgIGlmIChpbnRlcm5hbEZvcm1hdEluZm8uZGVwdGhCaXRz
ID09IDAgJiYgaW50ZXJuYWxGb3JtYXRJbmZvLnN0ZW5jaWxCaXRzID09IDApCisgICAgICAgIHsK
KyAgICAgICAgICAgIHRleFN1cHBvcnRNYXNrIHw9IEQzRDExX0ZPUk1BVF9TVVBQT1JUX1RFWFRV
UkVDVUJFOworICAgICAgICAgICAgaWYgKEdldFBhcmFtKCkubWFqb3JWZXJzaW9uID4gMikKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0ZXhTdXBwb3J0TWFzayB8PSBEM0QxMV9GT1JN
QVRfU1VQUE9SVF9URVhUVVJFM0Q7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICBVSU5UIHRleFN1cHBvcnQgID0gMDsKKyAgICAgICAgYm9vbCB0ZXhTdWNjZXNzICA9IFNVQ0NF
RURFRChkZXZpY2UtPkNoZWNrRm9ybWF0U3VwcG9ydChmb3JtYXRJbmZvLnRleEZvcm1hdCwgJnRl
eFN1cHBvcnQpKTsKKyAgICAgICAgYm9vbCB0ZXh0dXJlYWJsZSA9IHRleFN1Y2Nlc3MgJiYgKCh0
ZXhTdXBwb3J0ICYgdGV4U3VwcG9ydE1hc2spID09IHRleFN1cHBvcnRNYXNrKTsKKyAgICAgICAg
RVhQRUNUX0VRKHRleHR1cmVhYmxlLCB0ZXh0dXJlSW5mby50ZXh0dXJhYmxlKTsKKworICAgICAg
ICAvLyBCaXRzIGZvciBtaXBtYXAgYXV0by1nZW4uCisgICAgICAgIGJvb2wgZXhwZWN0ZWRNaXBH
ZW4gPSB0ZXhTdWNjZXNzICYmICgodGV4U3VwcG9ydCAmIEQzRDExX0ZPUk1BVF9TVVBQT1JUX01J
UF9BVVRPR0VOKSAhPSAwKTsKKyAgICAgICAgYXV0byBmZWF0dXJlTGV2ZWwgICA9IHJlbmRlcmVy
LT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpLmZlYXR1cmVMZXZlbDsKKyAgICAgICAgY29uc3Qg
YXV0byAmZHhnaVN1cHBvcnQgPSByeDo6ZDNkMTE6OkdldERYR0lTdXBwb3J0KGZvcm1hdEluZm8u
dGV4Rm9ybWF0LCBmZWF0dXJlTGV2ZWwpOworICAgICAgICBib29sIGFjdHVhbE1pcEdlbiA9Cisg
ICAgICAgICAgICAoKGR4Z2lTdXBwb3J0LmFsd2F5c1N1cHBvcnRlZEZsYWdzICYgRDNEMTFfRk9S
TUFUX1NVUFBPUlRfTUlQX0FVVE9HRU4pICE9IDApOworICAgICAgICBFWFBFQ1RfRVEoMHUsIGR4
Z2lTdXBwb3J0Lm9wdGlvbmFsbHlTdXBwb3J0ZWRGbGFncyAmIEQzRDExX0ZPUk1BVF9TVVBQT1JU
X01JUF9BVVRPR0VOKTsKKyAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkTWlwR2VuLCBhY3R1YWxN
aXBHZW4pOworCisgICAgICAgIC8vIEJpdHMgZm9yIGZpbHRlcmluZworICAgICAgICBVSU5UIGZp
bHRlclN1cHBvcnQgPSAwOworICAgICAgICBib29sIGZpbHRlclN1Y2Nlc3MgPQorICAgICAgICAg
ICAgU1VDQ0VFREVEKGRldmljZS0+Q2hlY2tGb3JtYXRTdXBwb3J0KGZvcm1hdEluZm8uc3J2Rm9y
bWF0LCAmZmlsdGVyU3VwcG9ydCkpOworICAgICAgICBib29sIGZpbHRlcmFibGUgPSBmaWx0ZXJT
dWNjZXNzICYmICgoZmlsdGVyU3VwcG9ydCAmIEQzRDExX0ZPUk1BVF9TVVBQT1JUX1NIQURFUl9T
QU1QTEUpICE9IDApOworICAgICAgICBFWFBFQ1RfRVEoZmlsdGVyYWJsZSwgdGV4dHVyZUluZm8u
ZmlsdGVyYWJsZSk7CisKKyAgICAgICAgLy8gQml0cyBmb3IgcmVuZGVyYWJsZQorICAgICAgICBi
b29sIHJlbmRlcmFibGUgPSBmYWxzZTsKKyAgICAgICAgVUlOVCByZW5kZXJTdXBwb3J0ICAgICAg
ID0gMHU7CisgICAgICAgIERYR0lfRk9STUFUIHJlbmRlckZvcm1hdCA9IERYR0lfRk9STUFUX1VO
S05PV047CisgICAgICAgIGlmIChpbnRlcm5hbEZvcm1hdEluZm8uZGVwdGhCaXRzID4gMCB8fCBp
bnRlcm5hbEZvcm1hdEluZm8uc3RlbmNpbEJpdHMgPiAwKQorICAgICAgICB7CisgICAgICAgICAg
ICByZW5kZXJGb3JtYXQgPSBmb3JtYXRJbmZvLmRzdkZvcm1hdDsKKyAgICAgICAgICAgIGJvb2wg
ZGVwdGhTdWNjZXNzID0KKyAgICAgICAgICAgICAgICBTVUNDRUVERUQoZGV2aWNlLT5DaGVja0Zv
cm1hdFN1cHBvcnQoZm9ybWF0SW5mby5kc3ZGb3JtYXQsICZyZW5kZXJTdXBwb3J0KSk7CisgICAg
ICAgICAgICByZW5kZXJhYmxlID0KKyAgICAgICAgICAgICAgICBkZXB0aFN1Y2Nlc3MgJiYgKChy
ZW5kZXJTdXBwb3J0ICYgRDNEMTFfRk9STUFUX1NVUFBPUlRfREVQVEhfU1RFTkNJTCkgIT0gMCk7
CisgICAgICAgICAgICBpZiAocmVuZGVyYWJsZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBFWFBFQ1RfTkUoRFhHSV9GT1JNQVRfVU5LTk9XTiwgZm9ybWF0SW5mby5kc3ZGb3JtYXQp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAg
ICAgICAgICAgcmVuZGVyRm9ybWF0ID0gZm9ybWF0SW5mby5ydHZGb3JtYXQ7CisgICAgICAgICAg
ICBib29sIHJ0U3VjY2VzcyA9CisgICAgICAgICAgICAgICAgU1VDQ0VFREVEKGRldmljZS0+Q2hl
Y2tGb3JtYXRTdXBwb3J0KGZvcm1hdEluZm8ucnR2Rm9ybWF0LCAmcmVuZGVyU3VwcG9ydCkpOwor
ICAgICAgICAgICAgcmVuZGVyYWJsZSA9IHJ0U3VjY2VzcyAmJiAoKHJlbmRlclN1cHBvcnQgJiBE
M0QxMV9GT1JNQVRfU1VQUE9SVF9SRU5ERVJfVEFSR0VUKSAhPSAwKTsKKyAgICAgICAgICAgIGlm
IChyZW5kZXJhYmxlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEVYUEVDVF9ORShE
WEdJX0ZPUk1BVF9VTktOT1dOLCBmb3JtYXRJbmZvLnJ0dkZvcm1hdCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgRVhQRUNUX0VRKHJlbmRlcmFibGUsIHRleHR1cmVJbmZvLnJl
bmRlcmFibGUpOworICAgICAgICBpZiAoIXRleHR1cmVJbmZvLnNhbXBsZUNvdW50cy5lbXB0eSgp
KQorICAgICAgICB7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShyZW5kZXJhYmxlKTsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIE11bHRpc2FtcGxlIGNvdW50cworICAgICAgICBpZiAocmVuZGVy
YWJsZSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKChyZW5kZXJTdXBwb3J0ICYgRDNEMTFf
Rk9STUFUX1NVUFBPUlRfTVVMVElTQU1QTEVfUkVOREVSVEFSR0VUKSAhPSAwKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKCF0ZXh0dXJlSW5mby5zYW1wbGVDb3Vu
dHMuZW1wdHkoKSk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgc2FtcGxlQ291
bnQgPSAxOworICAgICAgICAgICAgICAgICAgICAgc2FtcGxlQ291bnQgPD0gRDNEMTFfTUFYX01V
TFRJU0FNUExFX1NBTVBMRV9DT1VOVDsgc2FtcGxlQ291bnQgKj0gMikKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIFVJTlQgcXVhbGl0eUNvdW50ICA9IDA7CisgICAgICAg
ICAgICAgICAgICAgIGJvb2wgc2FtcGxlU3VjY2VzcyA9IFNVQ0NFRURFRChkZXZpY2UtPkNoZWNr
TXVsdGlzYW1wbGVRdWFsaXR5TGV2ZWxzKAorICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVy
Rm9ybWF0LCBzYW1wbGVDb3VudCwgJnF1YWxpdHlDb3VudCkpOworICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgZXhwZWN0ZWRDb3VudCA9ICghc2FtcGxlU3VjY2VzcyB8fCBxdWFsaXR5Q291bnQg
PT0gMCkgPyAwIDogMTsKKyAgICAgICAgICAgICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkQ291
bnQsIHRleHR1cmVJbmZvLnNhbXBsZUNvdW50cy5jb3VudChzYW1wbGVDb3VudCkpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRSh0ZXh0dXJlSW5mby5zYW1wbGVDb3VudHMu
ZW1wdHkoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK0FOR0xFX0lO
U1RBTlRJQVRFX1RFU1QoRDNEMTFGb3JtYXRUYWJsZXNUZXN0LAorICAgICAgICAgICAgICAgICAg
ICAgICBFUzJfRDNEMTFfRkw5XzMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDEx
X0ZMMTBfMCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkwxMF8xKCksCisg
ICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDExXzAoKSk7CisKK30gLy8gYW5vbnlt
b3VzIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2ds
X3Rlc3RzL0QzRDExSW5wdXRMYXlvdXRDYWNoZVRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9EM0QxMUlucHV0TGF5b3V0Q2Fj
aGVUZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZ2xfdGVzdHMvRDNEMTFJbnB1dExheW91dENhY2hlVGVzdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxMjYgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBEM0QxMUlucHV0TGF5b3V0Q2FjaGVU
ZXN0OgorLy8gICBTdHJlc3MgdG8gdG8gcmVwcm9kdWNlIGEgYnVnIHdoZXJlIHdlIHdlcmVuJ3Qg
Zmx1aW5nIHRoZSBjYXNlIGNvcnJlY3RseS4KKy8vCisKKyNpbmNsdWRlIDxzc3RyZWFtPgorCisj
aW5jbHVkZSAibGliQU5HTEUvQ29udGV4dC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9Db250ZXh0MTEuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvUmVuZGVyZXIxMS5oIgorI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisj
aW5jbHVkZSAidGVzdF91dGlscy9hbmdsZV90ZXN0X2luc3RhbnRpYXRlLmgiCisKK3VzaW5nIG5h
bWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNlCit7CisKK2NsYXNzIEQzRDExSW5wdXRMYXlvdXRD
YWNoZVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBEM0QxMUlu
cHV0TGF5b3V0Q2FjaGVUZXN0KCkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRoKDY0KTsK
KyAgICAgICAgc2V0V2luZG93SGVpZ2h0KDY0KTsKKyAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4
KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAgIH0KKworICAgIEdMdWludCBt
YWtlUHJvZ3JhbVdpdGhBdHRyaWJDb3VudCh1bnNpZ25lZCBpbnQgYXR0cmliQ291bnQpCisgICAg
eworICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzdHJzdHI7CisKKyAgICAgICAgc3Ryc3RyIDw8
ICJhdHRyaWJ1dGUgdmVjMiBwb3NpdGlvbjsiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpbnQgYXR0cmliSW5kZXggPSAwOyBhdHRyaWJJbmRleCA8IGF0dHJpYkNvdW50OyAr
K2F0dHJpYkluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBzdHJzdHIgPDwgImF0dHJpYnV0
ZSBmbG9hdCBhIiA8PCBhdHRyaWJJbmRleCA8PCAiOyIgPDwgc3RkOjplbmRsOworICAgICAgICB9
CisgICAgICAgIHN0cnN0ciA8PCAidmFyeWluZyBmbG9hdCB2OyIgPDwgc3RkOjplbmRsCisgICAg
ICAgICAgICAgICA8PCAidm9pZCBtYWluKCkgeyIgPDwgc3RkOjplbmRsCisgICAgICAgICAgICAg
ICA8PCAiICAgIHYgPSAwLjA7IiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIGZvciAodW5zaWduZWQg
aW50IGF0dHJpYkluZGV4ID0gMDsgYXR0cmliSW5kZXggPCBhdHRyaWJDb3VudDsgKythdHRyaWJJ
bmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgc3Ryc3RyIDw8ICIgICAgdiArPSBhIiA8PCBh
dHRyaWJJbmRleCA8PCAiOyIgPDwgc3RkOjplbmRsOworICAgICAgICB9CisgICAgICAgIHN0cnN0
ciA8PCAiICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMC4wLCAxLjApOyIgPDwgc3Rk
OjplbmRsCisgICAgICAgICAgICAgICA8PCAifSIgPDwgc3RkOjplbmRsOworCisgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nIGJhc2ljRnJhZ21lbnRTaGFkZXIgPQorICAgICAgICAgICAgInZhcnlp
bmcgaGlnaHAgZmxvYXQgdjtcbiIKKyAgICAgICAgICAgICJ2b2lkIG1haW4oKSB7IgorICAgICAg
ICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHZlYzQodiAvIDI1NS4wLCAwLjAsIDAuMCwgMS4wKTtc
biIKKyAgICAgICAgICAgICJ9XG4iOworCisgICAgICAgIHJldHVybiBDb21waWxlUHJvZ3JhbShz
dHJzdHIuc3RyKCksIGJhc2ljRnJhZ21lbnRTaGFkZXIpOworICAgIH0KK307CisKKy8vIFN0cmVz
cyB0aGUgY2FjaGUgYnkgc2V0dGluZyBhIHNtYWxsIGNhY2hlIHNpemUgYW5kIGRyYXdpbmcgd2l0
aCBhIGJ1bmNoIG9mIHNoYWRlcnMKKy8vIHdpdGggZGlmZmVyZW50IGlucHV0IHNpZ25hdHVyZXMu
CitURVNUX1AoRDNEMTFJbnB1dExheW91dENhY2hlVGVzdCwgU3RyZXNzVGVzdCkKK3sKKyAgICAv
LyBIYWNrIHRoZSBBTkdMRSEKKyAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8Z2w6OkNvbnRleHQgKj4oZ2V0RUdMV2luZG93KCktPmdldENvbnRleHQoKSk7CisgICAg
cng6OkNvbnRleHQxMSAqY29udGV4dDExICAgICAgICAgICAgICAgPSByeDo6R2V0SW1wbEFzPHJ4
OjpDb250ZXh0MTE+KGNvbnRleHQpOworICAgIHJ4OjpSZW5kZXJlcjExICpyZW5kZXJlcjExICAg
ICAgICAgICAgID0gY29udGV4dDExLT5nZXRSZW5kZXJlcigpOworICAgIHJ4OjpJbnB1dExheW91
dENhY2hlICppbnB1dExheW91dENhY2hlID0gcmVuZGVyZXIxMS0+Z2V0SW5wdXRMYXlvdXRDYWNo
ZSgpOworCisgICAgLy8gQ2xhbXAgdGhlIGNhY2hlIHNpemUgdG8gc29tZXRoaW5nIHRpbnkKKyAg
ICBpbnB1dExheW91dENhY2hlLT5zZXRDYWNoZVNpemUoNCk7CisKKyAgICBHTGludCBtYXhBdHRy
aWJzID0gMDsKKyAgICBjb250ZXh0LT5nZXRJbnRlZ2VydihHTF9NQVhfVkVSVEVYX0FUVFJJQlMs
ICZtYXhBdHRyaWJzKTsKKworICAgIC8vIFJlc2VydmUgb25lIGF0dHJpYiBmb3IgcG9zaXRpb24K
KyAgICB1bnNpZ25lZCBpbnQgbWF4SW5wdXRzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Piht
YXhBdHRyaWJzKSAtIDI7CisKKyAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IHByb2dyYW1zOworICAg
IGZvciAodW5zaWduZWQgaW50IGF0dHJpYkNvdW50ID0gMDsgYXR0cmliQ291bnQgPD0gbWF4SW5w
dXRzOyArK2F0dHJpYkNvdW50KQorICAgIHsKKyAgICAgICAgR0x1aW50IHByb2dyYW0gPSBtYWtl
UHJvZ3JhbVdpdGhBdHRyaWJDb3VudChhdHRyaWJDb3VudCk7CisgICAgICAgIEFTU0VSVF9ORSgw
dSwgcHJvZ3JhbSk7CisgICAgICAgIHByb2dyYW1zLnB1c2hfYmFjayhwcm9ncmFtKTsKKyAgICB9
CisKKyAgICAvLyBJdGVyYXRpdmVseSBkbyBhIHNpbXBsZSBkcm9wIG9wZXJhdGlvbiwgdHJ5aW5n
IGV2ZXJ5IGF0dHJpYnV0ZSBjb3VudCBmcm9tIDAuLk1BWF9BVFRSSUJTLgorICAgIC8vIFRoaXMg
c2hvdWxkIHRocmFzaCB0aGUgY2FjaGUuCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaXRlcmF0aW9u
Q291bnQgPSAwOyBpdGVyYXRpb25Db3VudCA8IDEwOyArK2l0ZXJhdGlvbkNvdW50KQorICAgIHsK
KyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
bnQgYXR0cmliQ291bnQgPSAwOyBhdHRyaWJDb3VudCA8PSBtYXhJbnB1dHM7ICsrYXR0cmliQ291
bnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEdMdWludCBwcm9ncmFtID0gcHJvZ3JhbXNbYXR0
cmliQ291bnRdOworICAgICAgICAgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0pOworCisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGludCBhdHRyaWJJbmRleCA9IDA7IGF0dHJpYkluZGV4IDwgYXR0
cmliQ291bnQ7ICsrYXR0cmliSW5kZXgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
c3RkOjpzdHJpbmdzdHJlYW0gYXR0cmliTmFtZVN0cjsKKyAgICAgICAgICAgICAgICBhdHRyaWJO
YW1lU3RyIDw8ICJhIiA8PCBhdHRyaWJJbmRleDsKKyAgICAgICAgICAgICAgICBzdGQ6OnN0cmlu
ZyBhdHRyaWJOYW1lID0gYXR0cmliTmFtZVN0ci5zdHIoKTsKKworICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBhdHRyaWJOYW1lLmNf
c3RyKCkpOworICAgICAgICAgICAgICAgIEFTU0VSVF9ORSgtMSwgbG9jYXRpb24pOworICAgICAg
ICAgICAgICAgIGdsVmVydGV4QXR0cmliMWYobG9jYXRpb24sIDEuMGYpOworICAgICAgICAgICAg
ICAgIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGxvY2F0aW9uKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgZHJhd1F1YWQocHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAg
ICAgICAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgYXR0cmliQ291bnQsIDAsIDAsIDI1NXUpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChHTHVpbnQgcHJvZ3JhbSA6IHByb2dyYW1zKQor
ICAgIHsKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKHByb2dyYW0pOworICAgIH0KK30KKworQU5H
TEVfSU5TVEFOVElBVEVfVEVTVChEM0QxMUlucHV0TGF5b3V0Q2FjaGVUZXN0LCBFUzJfRDNEMTEo
KSk7CisKK30gIC8vIGFub255bW91cyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9EM0RJbWFnZUZvcm1hdENvbnZlcnNpb25UZXN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVz
dHMvRDNESW1hZ2VGb3JtYXRDb252ZXJzaW9uVGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0QzREltYWdlRm9ybWF0Q29u
dmVyc2lvblRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjA3IEBACisvLworLy8g
Q29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworLy8gRDNESW1hZ2VGb3JtYXRDb252ZXJzaW9uVGVzdDoKKy8vICAgQmFzaWMgdGVzdHMgdG8g
dmFsaWRhdGUgY29kZSByZWxhdGluZyB0byBEM0QgSW1hZ2UgZm9ybWF0IGNvbnZlcnNpb25zLgor
CisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKworI2luY2x1ZGUgImltYWdlX3V0
aWwvaW1hZ2Vmb3JtYXRzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNl
Cit7CisKK2NsYXNzIEQzREltYWdlRm9ybWF0Q29udmVyc2lvblRlc3QgOiBwdWJsaWMgQU5HTEVU
ZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBEM0RJbWFnZUZvcm1hdENvbnZlcnNpb25UZXN0KCkK
KyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7CisgICAgICAgIHNldFdpbmRvd0hl
aWdodCgxMjgpOworICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOworICAgICAgICBzZXRDb25m
aWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOworICAgICAgICBz
ZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgfQorCisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRl
CisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7CisKKyAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQorICAgICAgICAoCisg
ICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisgICAgICAgICAgICBhdHRyaWJ1dGUg
dmVjNCBwb3NpdGlvbjsKKyAgICAgICAgICAgIHZhcnlpbmcgdmVjMiB0ZXhjb29yZDsKKworICAg
ICAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbF9Q
b3NpdGlvbiA9IHZlYzQocG9zaXRpb24ueHksIDAuMCwgMS4wKTsKKyAgICAgICAgICAgICAgICB0
ZXhjb29yZCA9IChwb3NpdGlvbi54eSAqIDAuNSkgKyAwLjU7CisgICAgICAgICAgICB9CisgICAg
ICAgICk7CisKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2Uy
RCA9IFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hw
IGZsb2F0OworICAgICAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdGV4OworICAgICAgICAgICAg
dmFyeWluZyB2ZWMyIHRleGNvb3JkOworCisgICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh0ZXgsIHRl
eGNvb3JkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICBtMkRQcm9ncmFt
ID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJj
ZTJEKTsKKyAgICAgICAgbVRleHR1cmUyRFVuaWZvcm1Mb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxv
Y2F0aW9uKG0yRFByb2dyYW0sICJ0ZXgiKTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtMkRQcm9ncmFtKTsKKwor
ICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7CisgICAgfQorCisgICAgLy8gVXNlcyBDb2xv
clN0cnVjdFR5cGU6OndyaXRlQ29sb3IgdG8gcG9wdWxhdGUgaW5pdGlhbCBkYXRhIGZvciBhIHRl
eHR1cmUsIHBhc3MgaXQgdG8gZ2xUZXhJbWFnZTJELCB0aGVuIHJlbmRlciB3aXRoIGl0LgorICAg
IC8vIFRoZSByZXN1bHRpbmcgY29sb3JzIHNob3VsZCBtYXRjaCB0aGUgY29sb3JzIHBhc3NlZCBp
bnRvIDo6d3JpdGVDb2xvci4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sb3JTdHJ1Y3RUeXBl
PgorICAgIHZvaWQgcnVuVGVzdChHTGVudW0gdGV4MkRGb3JtYXQsIEdMZW51bSB0ZXgyRFR5cGUp
CisgICAgeworICAgICAgICBnbDo6Q29sb3JGIHNyY0NvbG9yRls0XTsKKyAgICAgICAgQ29sb3JT
dHJ1Y3RUeXBlIHBpeGVsc1s0XTsKKworICAgICAgICBHTHVpbnQgdGV4ID0gMDsKKyAgICAgICAg
R0x1aW50IGZibyA9IDA7CisgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleCk7CisgICAgICAg
IGdsR2VuRnJhbWVidWZmZXJzKDEsICZmYm8pOworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1Io
KTsKKworICAgICAgICBzcmNDb2xvckZbMF0ucmVkID0gMS4wZjsgc3JjQ29sb3JGWzBdLmdyZWVu
ID0gMC4wZjsgc3JjQ29sb3JGWzBdLmJsdWUgPSAwLjBmOyBzcmNDb2xvckZbMF0uYWxwaGEgPSAx
LjBmOyAvLyBSZWQKKyAgICAgICAgc3JjQ29sb3JGWzFdLnJlZCA9IDAuMGY7IHNyY0NvbG9yRlsx
XS5ncmVlbiA9IDEuMGY7IHNyY0NvbG9yRlsxXS5ibHVlID0gMC4wZjsgc3JjQ29sb3JGWzFdLmFs
cGhhID0gMS4wZjsgLy8gR3JlZW4KKyAgICAgICAgc3JjQ29sb3JGWzJdLnJlZCA9IDAuMGY7IHNy
Y0NvbG9yRlsyXS5ncmVlbiA9IDAuMGY7IHNyY0NvbG9yRlsyXS5ibHVlID0gMS4wZjsgc3JjQ29s
b3JGWzJdLmFscGhhID0gMS4wZjsgLy8gQmx1ZQorICAgICAgICBzcmNDb2xvckZbM10ucmVkID0g
MS4wZjsgc3JjQ29sb3JGWzNdLmdyZWVuID0gMS4wZjsgc3JjQ29sb3JGWzNdLmJsdWUgPSAwLjBm
OyBzcmNDb2xvckZbM10uYWxwaGEgPSAxLjBmOyAvLyBSZWQgKyBHcmVlbiAoWWVsbG93KQorCisg
ICAgICAgIC8vIENvbnZlcnQgdGhlIENvbG9yRiBpbnRvIHRoZSBwaXhlbHMgdGhhdCB3aWxsIGJl
IGZlZCB0byBnbFRleEltYWdlMkQKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg
PCA0OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIENvbG9yU3RydWN0VHlwZTo6d3JpdGVD
b2xvcigmKHBpeGVsc1tpXSksICYoc3JjQ29sb3JGW2ldKSk7CisgICAgICAgIH0KKworICAgICAg
ICAvLyBHZW5lcmF0ZSB0aGUgdGV4dHVyZQorICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfMkQsIHRleCk7CisgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCB0ZXgy
REZvcm1hdCwgMiwgMiwgMCwgdGV4MkRGb3JtYXQsIHRleDJEVHlwZSwgcGl4ZWxzKTsKKyAgICAg
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwg
R0xfTkVBUkVTVCk7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJS
T1IoKTsKKworICAgICAgICAvLyBEcmF3IGEgcXVhZCB1c2luZyB0aGUgdGV4dHVyZQorICAgICAg
ICBnbENsZWFyQ29sb3IoMCwgMCwgMCwgMCk7CisgICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVG
RkVSX0JJVCk7CisgICAgICAgIGdsVXNlUHJvZ3JhbShtMkRQcm9ncmFtKTsKKyAgICAgICAgZ2xV
bmlmb3JtMWkobVRleHR1cmUyRFVuaWZvcm1Mb2NhdGlvbiwgMCk7CisgICAgICAgIGRyYXdRdWFk
KG0yRFByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJS
T1IoKTsKKworICAgICAgICAvLyBDaGVjayB0aGF0IHRoZSBwaXhlbCBjb2xvcnMgbWF0Y2ggc3Jj
Q29sb3JGCisgICAgICAgIEVYUEVDVF9QSVhFTF9FUSggICAgICAgICAgICAgICAgICAgIDAsICAg
ICAgICAgICAgICAgICAgICAwLCAyNTUsICAgMCwgICAwLCAyNTUpOworICAgICAgICBFWFBFQ1Rf
UElYRUxfRVEoZ2V0V2luZG93SGVpZ2h0KCkgLSAxLCAgICAgICAgICAgICAgICAgICAgMCwgICAw
LCAyNTUsICAgMCwgMjU1KTsKKyAgICAgICAgRVhQRUNUX1BJWEVMX0VRKCAgICAgICAgICAgICAg
ICAgICAgMCwgZ2V0V2luZG93V2lkdGgoKSAtIDEsICAgMCwgICAwLCAyNTUsIDI1NSk7CisgICAg
ICAgIEVYUEVDVF9QSVhFTF9FUShnZXRXaW5kb3dIZWlnaHQoKSAtIDEsIGdldFdpbmRvd1dpZHRo
KCkgLSAxLCAyNTUsIDI1NSwgICAwLCAyNTUpOworICAgICAgICBzd2FwQnVmZmVycygpOworCisg
ICAgICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZmYm8pOworICAgICAgICBnbERlbGV0ZVRl
eHR1cmVzKDEsICZ0ZXgpOworICAgIH0KKworICAgIEdMdWludCBtMkRQcm9ncmFtOworICAgIEdM
aW50IG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRpb247Cit9OworCisvLyBWYWxpZGF0aW9uIHRlc3Qg
Zm9yIHJ4OjpSNEc0QjRBNCdzIHdyaXRlQ29sb3IgZnVuY3Rpb25zCitURVNUX1AoRDNESW1hZ2VG
b3JtYXRDb252ZXJzaW9uVGVzdCwgV3JpdGVDb2xvckZ1bmN0aW9uUjRHNEI0QTQpCit7CisgICAg
Ly8gVGhlc2UgdGVzdHMgZmFpbCBvbiBjZXJ0YWluIEludGVsIG1hY2hpbmVzIHJ1bm5pbmcgYW4g
dW4tdXBkYXRlZCB2ZXJzaW9uIG9mIFdpbjcKKyAgICAvLyBUaGUgdGVzdHMgcGFzcyBhZnRlciBp
bnN0YWxsaW5nIHRoZSBsYXRlc3QgdXBkYXRlcyBmcm9tIFdpbmRvd3MgVXBkYXRlLgorICAgIC8v
IFRPRE86IHJlZW5hYmxlIHRoZXNlIHRlc3RzIG9uY2UgdGhlIGJvdHMgaGF2ZSBiZWVuIHVwZGF0
ZWQKKyAgICBpZiAoSXNJbnRlbCgpICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExB
VEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8
PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIEQzRDExLiIgPDwgc3RkOjplbmRsOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgcnVuVGVzdDxSNEc0QjRBND4oR0xfUkdCQSwgR0xfVU5TSUdO
RURfU0hPUlRfNF80XzRfNCk7Cit9CisKKy8vIFZhbGlkYXRpb24gdGVzdCBmb3Igcng6OlI1RzVC
NUExJ3Mgd3JpdGVDb2xvciBmdW5jdGlvbnMKK1RFU1RfUChEM0RJbWFnZUZvcm1hdENvbnZlcnNp
b25UZXN0LCBXcml0ZUNvbG9yRnVuY3Rpb25SNUc1QjVBMSkKK3sKKyAgICAvLyBUaGVzZSB0ZXN0
cyBmYWlsIG9uIGNlcnRhaW4gSW50ZWwgbWFjaGluZXMgcnVubmluZyBhbiB1bi11cGRhdGVkIHZl
cnNpb24gb2YgV2luNworICAgIC8vIFRoZSB0ZXN0cyBwYXNzIGFmdGVyIGluc3RhbGxpbmcgdGhl
IGxhdGVzdCB1cGRhdGVzIGZyb20gV2luZG93cyBVcGRhdGUuCisgICAgLy8gVE9ETzogcmVlbmFi
bGUgdGhlc2UgdGVzdHMgb25jZSB0aGUgYm90cyBoYXZlIGJlZW4gdXBkYXRlZAorICAgIGlmIChJ
c0ludGVsKCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9U
WVBFX0QzRDExX0FOR0xFKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBw
ZWQgb24gSW50ZWwgRDNEMTEuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBydW5UZXN0PFI1RzVCNUExPihHTF9SR0JBLCBHTF9VTlNJR05FRF9TSE9SVF81XzVf
NV8xKTsKK30KKworLy8gVmFsaWRhdGlvbiB0ZXN0IGZvciByeDo6UjVHNkI1J3Mgd3JpdGVDb2xv
ciBmdW5jdGlvbnMKK1RFU1RfUChEM0RJbWFnZUZvcm1hdENvbnZlcnNpb25UZXN0LCBXcml0ZUNv
bG9yRnVuY3Rpb25SNUc2QjUpCit7CisgICAgLy8gVGhlc2UgdGVzdHMgZmFpbCBvbiBjZXJ0YWlu
IEludGVsIG1hY2hpbmVzIHJ1bm5pbmcgYW4gdW4tdXBkYXRlZCB2ZXJzaW9uIG9mIFdpbjcKKyAg
ICAvLyBUaGUgdGVzdHMgcGFzcyBhZnRlciBpbnN0YWxsaW5nIHRoZSBsYXRlc3QgdXBkYXRlcyBm
cm9tIFdpbmRvd3MgVXBkYXRlLgorICAgIC8vIFRPRE86IHJlZW5hYmxlIHRoZXNlIHRlc3RzIG9u
Y2UgdGhlIGJvdHMgaGF2ZSBiZWVuIHVwZGF0ZWQKKyAgICBpZiAoSXNJbnRlbCgpICYmIGdldFBs
YXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSkK
KyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIEQzRDEx
LiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcnVuVGVzdDxS
NUc2QjU+KEdMX1JHQiwgR0xfVU5TSUdORURfU0hPUlRfNV82XzUpOworfQorCisvLyBWYWxpZGF0
aW9uIHRlc3QgZm9yIHJ4OjpSOEc4QjhBOCdzIHdyaXRlQ29sb3IgZnVuY3Rpb25zCitURVNUX1Ao
RDNESW1hZ2VGb3JtYXRDb252ZXJzaW9uVGVzdCwgV3JpdGVDb2xvckZ1bmN0aW9uUjhHOEI4QTgp
Cit7CisgICAgLy8gVGhlc2UgdGVzdHMgZmFpbCBvbiBjZXJ0YWluIEludGVsIG1hY2hpbmVzIHJ1
bm5pbmcgYW4gdW4tdXBkYXRlZCB2ZXJzaW9uIG9mIFdpbjcKKyAgICAvLyBUaGUgdGVzdHMgcGFz
cyBhZnRlciBpbnN0YWxsaW5nIHRoZSBsYXRlc3QgdXBkYXRlcyBmcm9tIFdpbmRvd3MgVXBkYXRl
LgorICAgIC8vIFRPRE86IHJlZW5hYmxlIHRoZXNlIHRlc3RzIG9uY2UgdGhlIGJvdHMgaGF2ZSBi
ZWVuIHVwZGF0ZWQKKyAgICBpZiAoSXNJbnRlbCgpICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9
PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSkKKyAgICB7CisgICAgICAgIHN0
ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIEQzRDExLiIgPDwgc3RkOjplbmRsOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcnVuVGVzdDxSOEc4QjhBOD4oR0xfUkdCQSwg
R0xfVU5TSUdORURfQllURSk7Cit9CisKKy8vIFZhbGlkYXRpb24gdGVzdCBmb3Igcng6OlI4RzhC
OCdzIHdyaXRlQ29sb3IgZnVuY3Rpb25zCitURVNUX1AoRDNESW1hZ2VGb3JtYXRDb252ZXJzaW9u
VGVzdCwgV3JpdGVDb2xvckZ1bmN0aW9uUjhHOEI4KQoreworICAgIC8vIFRoZXNlIHRlc3RzIGZh
aWwgb24gY2VydGFpbiBJbnRlbCBtYWNoaW5lcyBydW5uaW5nIGFuIHVuLXVwZGF0ZWQgdmVyc2lv
biBvZiBXaW43CisgICAgLy8gVGhlIHRlc3RzIHBhc3MgYWZ0ZXIgaW5zdGFsbGluZyB0aGUgbGF0
ZXN0IHVwZGF0ZXMgZnJvbSBXaW5kb3dzIFVwZGF0ZS4KKyAgICAvLyBUT0RPOiByZWVuYWJsZSB0
aGVzZSB0ZXN0cyBvbmNlIHRoZSBib3RzIGhhdmUgYmVlbiB1cGRhdGVkCisgICAgaWYgKElzSW50
ZWwoKSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVf
RDNEMTFfQU5HTEUpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBv
biBJbnRlbCBEM0QxMS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX0FMSUdOTUVOVCwgMSk7CisgICAgcnVuVGVzdDxS
OEc4Qjg+KEdMX1JHQiwgR0xfVU5TSUdORURfQllURSk7Cit9CisKKy8vIFVzZSB0aGlzIHRvIHNl
bGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xF
UyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCisvLyBF
dmVuIHRob3VnaCB0aGlzIHRlc3QgaXMgb25seSBydW4gb24gV2luZG93cyAoc2luY2UgaXQgaW5j
bHVkZXMgaW1hZ2Vmb3JtYXRzLmggZnJvbSB0aGUgRDNEIHJlbmRlcmVyKSwgd2UgY2FuIHN0aWxs
IHJ1biB0aGUgdGVzdAorLy8gYWdhaW5zdCBPcGVuR0wuIFRoaXMgaXMgdmFsdWFibGUsIHNpbmNl
IGl0IHByb3ZpZGVzIGV4dHJhIHZhbGlkYXRpb24gdXNpbmcgYSByZW5kZXJlciB0aGF0IGRvZXNu
J3QgdXNlIGltYWdlZm9ybWF0cy5oIGl0c2VsZi4KK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoRDNE
SW1hZ2VGb3JtYXRDb252ZXJzaW9uVGVzdCwgRVMyX0QzRDkoKSwgRVMyX0QzRDExKCksIEVTMl9E
M0QxMV9GTDlfMygpLCBFUzJfT1BFTkdMKCkpOworCit9IC8vIG5hbWVzcGFjZQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0RYVDFDb21wcmVzc2VkVGV4
dHVyZVRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9nbF90ZXN0cy9EWFQxQ29tcHJlc3NlZFRleHR1cmVUZXN0LmNwcAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRFhUMUNvbXBy
ZXNzZWRUZXh0dXJlVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMjYgQEAKKy8v
CisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorCisjaW5jbHVkZSAi
bWVkaWEvcGl4ZWwuaW5sIgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKK2NsYXNzIERYVDFD
b21wcmVzc2VkVGV4dHVyZVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoK
KyAgICBEWFQxQ29tcHJlc3NlZFRleHR1cmVUZXN0KCkKKyAgICB7CisgICAgICAgIHNldFdpbmRv
d1dpZHRoKDUxMik7CisgICAgICAgIHNldFdpbmRvd0hlaWdodCg1MTIpOworICAgICAgICBzZXRD
b25maWdSZWRCaXRzKDgpOworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAg
IHNldENvbmZpZ0JsdWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKKyAgICB7CisgICAgICAgIEFOR0xFVGVz
dDo6U2V0VXAoKTsKKworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB2c1NvdXJjZSA9IFNIQURF
Ul9TT1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0Owor
ICAgICAgICAgICAgYXR0cmlidXRlIHZlYzQgcG9zaXRpb247CisgICAgICAgICAgICB2YXJ5aW5n
IHZlYzIgdGV4Y29vcmQ7CisKKyAgICAgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICAgICAgICAgICAg
ICB0ZXhjb29yZCA9IChwb3NpdGlvbi54eSAqIDAuNSkgKyAwLjU7CisgICAgICAgICAgICAgICAg
dGV4Y29vcmQueSA9IDEuMCAtIHRleGNvb3JkLnk7CisgICAgICAgICAgICB9CisgICAgICAgICk7
CisKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGV4dHVyZUZTU291cmNlID0gU0hBREVSX1NP
VVJDRQorICAgICAgICAoCisgICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisgICAg
ICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7CisgICAgICAgICAgICB2YXJ5aW5nIHZlYzIg
dGV4Y29vcmQ7CisKKyAgICAgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHRleCwgdGV4Y29vcmQpOworICAg
ICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAgIG1UZXh0dXJlUHJvZ3JhbSA9IENvbXBp
bGVQcm9ncmFtKHZzU291cmNlLCB0ZXh0dXJlRlNTb3VyY2UpOworICAgICAgICBpZiAobVRleHR1
cmVQcm9ncmFtID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIEZBSUwoKSA8PCAic2hhZGVy
IGNvbXBpbGF0aW9uIGZhaWxlZC4iOworICAgICAgICB9CisKKyAgICAgICAgbVRleHR1cmVVbmlm
b3JtTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtVGV4dHVyZVByb2dyYW0sICJ0ZXgi
KTsKKworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgVGVhckRvd24oKQorICAgIHsKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1UZXh0dXJl
UHJvZ3JhbSk7CisKKyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOworICAgIH0KKworICAg
IEdMdWludCBtVGV4dHVyZVByb2dyYW07CisgICAgR0xpbnQgbVRleHR1cmVVbmlmb3JtTG9jYXRp
b247Cit9OworCitURVNUX1AoRFhUMUNvbXByZXNzZWRUZXh0dXJlVGVzdCwgQ29tcHJlc3NlZFRl
eEltYWdlKQoreworICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29t
cHJlc3Npb25fZHh0MSIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBw
ZWQgYmVjYXVzZSBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIGlzIG5vdCBhdmFpbGFi
bGUuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHTHVpbnQg
dGV4dHVyZTsKKyAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXh0dXJlKTsKKyAgICBnbEJpbmRUZXh0
dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7CisgICAgZ2xUZXhQYXJh
bWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsK
KyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdM
X0NMQU1QX1RPX0VER0UpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CisKKyAgICBnbENvbXByZXNzZWRUZXhJ
bWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhU
LCBwaXhlbF8wX3dpZHRoLCBwaXhlbF8wX2hlaWdodCwgMCwgcGl4ZWxfMF9zaXplLCBwaXhlbF8w
X2RhdGEpOworICAgIGdsQ29tcHJlc3NlZFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xf
Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzFfd2lkdGgsIHBpeGVsXzFfaGVp
Z2h0LCAwLCBwaXhlbF8xX3NpemUsIHBpeGVsXzFfZGF0YSk7CisgICAgZ2xDb21wcmVzc2VkVGV4
SW1hZ2UyRChHTF9URVhUVVJFXzJELCAyLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VY
VCwgcGl4ZWxfMl93aWR0aCwgcGl4ZWxfMl9oZWlnaHQsIDAsIHBpeGVsXzJfc2l6ZSwgcGl4ZWxf
Ml9kYXRhKTsKKyAgICBnbENvbXByZXNzZWRUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDMsIEdM
X0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF8zX3dpZHRoLCBwaXhlbF8zX2hl
aWdodCwgMCwgcGl4ZWxfM19zaXplLCBwaXhlbF8zX2RhdGEpOworICAgIGdsQ29tcHJlc3NlZFRl
eEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgNCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9F
WFQsIHBpeGVsXzRfd2lkdGgsIHBpeGVsXzRfaGVpZ2h0LCAwLCBwaXhlbF80X3NpemUsIHBpeGVs
XzRfZGF0YSk7CisgICAgZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCA1LCBH
TF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgcGl4ZWxfNV93aWR0aCwgcGl4ZWxfNV9o
ZWlnaHQsIDAsIHBpeGVsXzVfc2l6ZSwgcGl4ZWxfNV9kYXRhKTsKKyAgICBnbENvbXByZXNzZWRU
ZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDYsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFf
RVhULCBwaXhlbF82X3dpZHRoLCBwaXhlbF82X2hlaWdodCwgMCwgcGl4ZWxfNl9zaXplLCBwaXhl
bF82X2RhdGEpOworICAgIGdsQ29tcHJlc3NlZFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgNywg
R0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzdfd2lkdGgsIHBpeGVsXzdf
aGVpZ2h0LCAwLCBwaXhlbF83X3NpemUsIHBpeGVsXzdfZGF0YSk7CisgICAgZ2xDb21wcmVzc2Vk
VGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCA4LCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQx
X0VYVCwgcGl4ZWxfOF93aWR0aCwgcGl4ZWxfOF9oZWlnaHQsIDAsIHBpeGVsXzhfc2l6ZSwgcGl4
ZWxfOF9kYXRhKTsKKyAgICBnbENvbXByZXNzZWRUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDks
IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF85X3dpZHRoLCBwaXhlbF85
X2hlaWdodCwgMCwgcGl4ZWxfOV9zaXplLCBwaXhlbF85X2RhdGEpOworCisgICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7CisKKyAgICBnbFVzZVByb2dyYW0obVRleHR1cmVQcm9ncmFtKTsKKyAgICBn
bFVuaWZvcm0xaShtVGV4dHVyZVVuaWZvcm1Mb2NhdGlvbiwgMCk7CisKKyAgICBkcmF3UXVhZCht
VGV4dHVyZVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworCisgICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7CisKKyAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0ZXh0dXJlKTsKKworICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOworfQorCitURVNUX1AoRFhUMUNvbXByZXNzZWRUZXh0dXJlVGVzdCwg
Q29tcHJlc3NlZFRleFN0b3JhZ2UpCit7CisgICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9F
WFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQg
PDwgIlRlc3Qgc2tpcHBlZCBkdWUgdG8gbWlzc2luZyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lv
bl9keHQxIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmCisgICAgICAgICghZXh0ZW5zaW9uRW5hYmxl
ZCgiR0xfRVhUX3RleHR1cmVfc3RvcmFnZSIpIHx8ICFleHRlbnNpb25FbmFibGVkKCJHTF9PRVNf
cmdiOF9yZ2JhOCIpKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVk
IGR1ZSB0byBtaXNzaW5nIEVTMyBvciBHTF9FWFRfdGV4dHVyZV9zdG9yYWdlIG9yIEdMX09FU19y
Z2I4X3JnYmE4IiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBH
THVpbnQgdGV4dHVyZTsKKyAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXh0dXJlKTsKKyAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUpOworICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7CisgICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElO
RUFSKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQ
X1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CisKKyAgICBpZiAoZ2V0Q2xp
ZW50TWFqb3JWZXJzaW9uKCkgPCAzKQorICAgIHsKKyAgICAgICAgZ2xUZXhTdG9yYWdlMkRFWFQo
R0xfVEVYVFVSRV8yRCwgcGl4ZWxfbGV2ZWxzLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQx
X0VYVCwgcGl4ZWxfMF93aWR0aCwgcGl4ZWxfMF9oZWlnaHQpOworICAgIH0KKyAgICBlbHNlCisg
ICAgeworICAgICAgICBnbFRleFN0b3JhZ2UyRChHTF9URVhUVVJFXzJELCBwaXhlbF9sZXZlbHMs
IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF8wX3dpZHRoLCBwaXhlbF8w
X2hlaWdodCk7CisgICAgfQorICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xDb21w
cmVzc2VkVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCAwLCAwLCBwaXhlbF8wX3dpZHRo
LCBwaXhlbF8wX2hlaWdodCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVs
XzBfc2l6ZSwgcGl4ZWxfMF9kYXRhKTsKKyAgICBnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdM
X1RFWFRVUkVfMkQsIDEsIDAsIDAsIHBpeGVsXzFfd2lkdGgsIHBpeGVsXzFfaGVpZ2h0LCBHTF9D
T01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgcGl4ZWxfMV9zaXplLCBwaXhlbF8xX2RhdGEp
OworICAgIGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMiwgMCwgMCwg
cGl4ZWxfMl93aWR0aCwgcGl4ZWxfMl9oZWlnaHQsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RY
VDFfRVhULCBwaXhlbF8yX3NpemUsIHBpeGVsXzJfZGF0YSk7CisgICAgZ2xDb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAzLCAwLCAwLCBwaXhlbF8zX3dpZHRoLCBwaXhlbF8z
X2hlaWdodCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzNfc2l6ZSwg
cGl4ZWxfM19kYXRhKTsKKyAgICBnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVf
MkQsIDQsIDAsIDAsIHBpeGVsXzRfd2lkdGgsIHBpeGVsXzRfaGVpZ2h0LCBHTF9DT01QUkVTU0VE
X1JHQkFfUzNUQ19EWFQxX0VYVCwgcGl4ZWxfNF9zaXplLCBwaXhlbF80X2RhdGEpOworICAgIGds
Q29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgNSwgMCwgMCwgcGl4ZWxfNV93
aWR0aCwgcGl4ZWxfNV9oZWlnaHQsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBw
aXhlbF81X3NpemUsIHBpeGVsXzVfZGF0YSk7CisgICAgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2Uy
RChHTF9URVhUVVJFXzJELCA2LCAwLCAwLCBwaXhlbF82X3dpZHRoLCBwaXhlbF82X2hlaWdodCwg
R0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzZfc2l6ZSwgcGl4ZWxfNl9k
YXRhKTsKKyAgICBnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDcsIDAs
IDAsIHBpeGVsXzdfd2lkdGgsIHBpeGVsXzdfaGVpZ2h0LCBHTF9DT01QUkVTU0VEX1JHQkFfUzNU
Q19EWFQxX0VYVCwgcGl4ZWxfN19zaXplLCBwaXhlbF83X2RhdGEpOworICAgIGdsQ29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgOCwgMCwgMCwgcGl4ZWxfOF93aWR0aCwgcGl4
ZWxfOF9oZWlnaHQsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF84X3Np
emUsIHBpeGVsXzhfZGF0YSk7CisgICAgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHTF9URVhU
VVJFXzJELCA5LCAwLCAwLCBwaXhlbF85X3dpZHRoLCBwaXhlbF85X2hlaWdodCwgR0xfQ09NUFJF
U1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzlfc2l6ZSwgcGl4ZWxfOV9kYXRhKTsKKwor
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xVc2VQcm9ncmFtKG1UZXh0dXJlUHJv
Z3JhbSk7CisgICAgZ2xVbmlmb3JtMWkobVRleHR1cmVVbmlmb3JtTG9jYXRpb24sIDApOworCisg
ICAgZHJhd1F1YWQobVRleHR1cmVQcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGV4dHVyZSk7
CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKK30KKworY2xhc3MgRFhUMUNvbXByZXNzZWRU
ZXh0dXJlVGVzdEVTMyA6IHB1YmxpYyBEWFQxQ29tcHJlc3NlZFRleHR1cmVUZXN0IHsgfTsKKwor
Y2xhc3MgRFhUMUNvbXByZXNzZWRUZXh0dXJlVGVzdEQzRDExIDogcHVibGljIERYVDFDb21wcmVz
c2VkVGV4dHVyZVRlc3QgeyB9OworCitURVNUX1AoRFhUMUNvbXByZXNzZWRUZXh0dXJlVGVzdEVT
MywgUEJPQ29tcHJlc3NlZFRleEltYWdlKQoreworICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgi
R0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIpKQorICAgIHsKKyAgICAgICAgc3RkOjpj
b3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9k
eHQxIGlzIG5vdCBhdmFpbGFibGUuIgorICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR0x1aW50IHRleHR1cmU7CisgICAgZ2xHZW5U
ZXh0dXJlcygxLCAmdGV4dHVyZSk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0
ZXh0dXJlKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9N
SU5fRklMVEVSLCBHTF9MSU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAg
ICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NM
QU1QX1RPX0VER0UpOworCisgICAgR0x1aW50IGJ1ZmZlcjsKKyAgICBnbEdlbkJ1ZmZlcnMoMSwg
JmJ1ZmZlcik7CisgICAgZ2xCaW5kQnVmZmVyKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIGJ1ZmZl
cik7CisgICAgZ2xCdWZmZXJEYXRhKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIHBpeGVsXzBfc2l6
ZSwgTlVMTCwgR0xfU1RSRUFNX0RSQVcpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisg
ICAgZ2xCdWZmZXJTdWJEYXRhKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIDAsIHBpeGVsXzBfc2l6
ZSwgcGl4ZWxfMF9kYXRhKTsKKyAgICBnbENvbXByZXNzZWRUZXhJbWFnZTJEKEdMX1RFWFRVUkVf
MkQsIDAsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF8wX3dpZHRoLCBw
aXhlbF8wX2hlaWdodCwgMCwgcGl4ZWxfMF9zaXplLCBOVUxMKTsKKyAgICBnbEJ1ZmZlclN1YkRh
dGEoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgMCwgcGl4ZWxfMV9zaXplLCBwaXhlbF8xX2RhdGEp
OworICAgIGdsQ29tcHJlc3NlZFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfQ09NUFJF
U1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzFfd2lkdGgsIHBpeGVsXzFfaGVpZ2h0LCAw
LCBwaXhlbF8xX3NpemUsIE5VTEwpOworICAgIGdsQnVmZmVyU3ViRGF0YShHTF9QSVhFTF9VTlBB
Q0tfQlVGRkVSLCAwLCBwaXhlbF8yX3NpemUsIHBpeGVsXzJfZGF0YSk7CisgICAgZ2xDb21wcmVz
c2VkVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAyLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19E
WFQxX0VYVCwgcGl4ZWxfMl93aWR0aCwgcGl4ZWxfMl9oZWlnaHQsIDAsIHBpeGVsXzJfc2l6ZSwg
TlVMTCk7CisgICAgZ2xCdWZmZXJTdWJEYXRhKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIDAsIHBp
eGVsXzNfc2l6ZSwgcGl4ZWxfM19kYXRhKTsKKyAgICBnbENvbXByZXNzZWRUZXhJbWFnZTJEKEdM
X1RFWFRVUkVfMkQsIDMsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF8z
X3dpZHRoLCBwaXhlbF8zX2hlaWdodCwgMCwgcGl4ZWxfM19zaXplLCBOVUxMKTsKKyAgICBnbEJ1
ZmZlclN1YkRhdGEoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgMCwgcGl4ZWxfNF9zaXplLCBwaXhl
bF80X2RhdGEpOworICAgIGdsQ29tcHJlc3NlZFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgNCwg
R0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzRfd2lkdGgsIHBpeGVsXzRf
aGVpZ2h0LCAwLCBwaXhlbF80X3NpemUsIE5VTEwpOworICAgIGdsQnVmZmVyU3ViRGF0YShHTF9Q
SVhFTF9VTlBBQ0tfQlVGRkVSLCAwLCBwaXhlbF81X3NpemUsIHBpeGVsXzVfZGF0YSk7CisgICAg
Z2xDb21wcmVzc2VkVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCA1LCBHTF9DT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQxX0VYVCwgcGl4ZWxfNV93aWR0aCwgcGl4ZWxfNV9oZWlnaHQsIDAsIHBpeGVs
XzVfc2l6ZSwgTlVMTCk7CisgICAgZ2xCdWZmZXJTdWJEYXRhKEdMX1BJWEVMX1VOUEFDS19CVUZG
RVIsIDAsIHBpeGVsXzZfc2l6ZSwgcGl4ZWxfNl9kYXRhKTsKKyAgICBnbENvbXByZXNzZWRUZXhJ
bWFnZTJEKEdMX1RFWFRVUkVfMkQsIDYsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhU
LCBwaXhlbF82X3dpZHRoLCBwaXhlbF82X2hlaWdodCwgMCwgcGl4ZWxfNl9zaXplLCBOVUxMKTsK
KyAgICBnbEJ1ZmZlclN1YkRhdGEoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgMCwgcGl4ZWxfN19z
aXplLCBwaXhlbF83X2RhdGEpOworICAgIGdsQ29tcHJlc3NlZFRleEltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgNywgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzdfd2lkdGgs
IHBpeGVsXzdfaGVpZ2h0LCAwLCBwaXhlbF83X3NpemUsIE5VTEwpOworICAgIGdsQnVmZmVyU3Vi
RGF0YShHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCAwLCBwaXhlbF84X3NpemUsIHBpeGVsXzhfZGF0
YSk7CisgICAgZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCA4LCBHTF9DT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgcGl4ZWxfOF93aWR0aCwgcGl4ZWxfOF9oZWlnaHQs
IDAsIHBpeGVsXzhfc2l6ZSwgTlVMTCk7CisgICAgZ2xCdWZmZXJTdWJEYXRhKEdMX1BJWEVMX1VO
UEFDS19CVUZGRVIsIDAsIHBpeGVsXzlfc2l6ZSwgcGl4ZWxfOV9kYXRhKTsKKyAgICBnbENvbXBy
ZXNzZWRUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDksIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RD
X0RYVDFfRVhULCBwaXhlbF85X3dpZHRoLCBwaXhlbF85X2hlaWdodCwgMCwgcGl4ZWxfOV9zaXpl
LCBOVUxMKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xVc2VQcm9ncmFt
KG1UZXh0dXJlUHJvZ3JhbSk7CisgICAgZ2xVbmlmb3JtMWkobVRleHR1cmVVbmlmb3JtTG9jYXRp
b24sIDApOworCisgICAgZHJhd1F1YWQobVRleHR1cmVQcm9ncmFtLCAicG9zaXRpb24iLCAwLjVm
KTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xEZWxldGVUZXh0dXJlcygx
LCAmYnVmZmVyKTsKKyAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0ZXh0dXJlKTsKKworICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOworfQorCisKK1RFU1RfUChEWFQxQ29tcHJlc3NlZFRleHR1cmVU
ZXN0RDNEMTEsIFBCT0NvbXByZXNzZWRUZXhTdG9yYWdlKQoreworICAgIGlmIChnZXRDbGllbnRN
YWpvclZlcnNpb24oKSA8IDMgJiYgIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2Nv
bXByZXNzaW9uX2R4dDEiKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmCisgICAgICAgICghZXh0ZW5zaW9uRW5h
YmxlZCgiR0xfRVhUX3RleHR1cmVfc3RvcmFnZSIpIHx8ICFleHRlbnNpb25FbmFibGVkKCJHTF9P
RVNfcmdiOF9yZ2JhOCIpKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBH
THVpbnQgdGV4dHVyZTsKKyAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXh0dXJlKTsKKyAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUpOworICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7CisgICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElO
RUFSKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQ
X1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CisKKyAgICBpZiAoZ2V0Q2xp
ZW50TWFqb3JWZXJzaW9uKCkgPCAzKQorICAgIHsKKyAgICAgICAgZ2xUZXhTdG9yYWdlMkRFWFQo
R0xfVEVYVFVSRV8yRCwgcGl4ZWxfbGV2ZWxzLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQx
X0VYVCwgcGl4ZWxfMF93aWR0aCwgcGl4ZWxfMF9oZWlnaHQpOworICAgIH0KKyAgICBlbHNlCisg
ICAgeworICAgICAgICBnbFRleFN0b3JhZ2UyRChHTF9URVhUVVJFXzJELCBwaXhlbF9sZXZlbHMs
IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF8wX3dpZHRoLCBwaXhlbF8w
X2hlaWdodCk7CisgICAgfQorICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgR0x1aW50
IGJ1ZmZlcjsKKyAgICBnbEdlbkJ1ZmZlcnMoMSwgJmJ1ZmZlcik7CisgICAgZ2xCaW5kQnVmZmVy
KEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIGJ1ZmZlcik7CisgICAgZ2xCdWZmZXJEYXRhKEdMX1BJ
WEVMX1VOUEFDS19CVUZGRVIsIHBpeGVsXzBfc2l6ZSwgTlVMTCwgR0xfU1RSRUFNX0RSQVcpOwor
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xCdWZmZXJTdWJEYXRhKEdMX1BJWEVM
X1VOUEFDS19CVUZGRVIsIDAsIHBpeGVsXzBfc2l6ZSwgcGl4ZWxfMF9kYXRhKTsKKyAgICBnbENv
bXByZXNzZWRUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIHBpeGVsXzBfd2lk
dGgsIHBpeGVsXzBfaGVpZ2h0LCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgcGl4
ZWxfMF9zaXplLCBOVUxMKTsKKyAgICBnbEJ1ZmZlclN1YkRhdGEoR0xfUElYRUxfVU5QQUNLX0JV
RkZFUiwgMCwgcGl4ZWxfMV9zaXplLCBwaXhlbF8xX2RhdGEpOworICAgIGdsQ29tcHJlc3NlZFRl
eFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgMCwgMCwgcGl4ZWxfMV93aWR0aCwgcGl4ZWxf
MV9oZWlnaHQsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF8xX3NpemUs
IE5VTEwpOworICAgIGdsQnVmZmVyU3ViRGF0YShHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCAwLCBw
aXhlbF8yX3NpemUsIHBpeGVsXzJfZGF0YSk7CisgICAgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2Uy
RChHTF9URVhUVVJFXzJELCAyLCAwLCAwLCBwaXhlbF8yX3dpZHRoLCBwaXhlbF8yX2hlaWdodCwg
R0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzJfc2l6ZSwgTlVMTCk7Cisg
ICAgZ2xCdWZmZXJTdWJEYXRhKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIDAsIHBpeGVsXzNfc2l6
ZSwgcGl4ZWxfM19kYXRhKTsKKyAgICBnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdMX1RFWFRV
UkVfMkQsIDMsIDAsIDAsIHBpeGVsXzNfd2lkdGgsIHBpeGVsXzNfaGVpZ2h0LCBHTF9DT01QUkVT
U0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgcGl4ZWxfM19zaXplLCBOVUxMKTsKKyAgICBnbEJ1ZmZl
clN1YkRhdGEoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgMCwgcGl4ZWxfNF9zaXplLCBwaXhlbF80
X2RhdGEpOworICAgIGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgNCwg
MCwgMCwgcGl4ZWxfNF93aWR0aCwgcGl4ZWxfNF9oZWlnaHQsIEdMX0NPTVBSRVNTRURfUkdCQV9T
M1RDX0RYVDFfRVhULCBwaXhlbF80X3NpemUsIE5VTEwpOworICAgIGdsQnVmZmVyU3ViRGF0YShH
TF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCAwLCBwaXhlbF81X3NpemUsIHBpeGVsXzVfZGF0YSk7Cisg
ICAgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCA1LCAwLCAwLCBwaXhl
bF81X3dpZHRoLCBwaXhlbF81X2hlaWdodCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9F
WFQsIHBpeGVsXzVfc2l6ZSwgTlVMTCk7CisgICAgZ2xCdWZmZXJTdWJEYXRhKEdMX1BJWEVMX1VO
UEFDS19CVUZGRVIsIDAsIHBpeGVsXzZfc2l6ZSwgcGl4ZWxfNl9kYXRhKTsKKyAgICBnbENvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDYsIDAsIDAsIHBpeGVsXzZfd2lkdGgs
IHBpeGVsXzZfaGVpZ2h0LCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgcGl4ZWxf
Nl9zaXplLCBOVUxMKTsKKyAgICBnbEJ1ZmZlclN1YkRhdGEoR0xfUElYRUxfVU5QQUNLX0JVRkZF
UiwgMCwgcGl4ZWxfN19zaXplLCBwaXhlbF83X2RhdGEpOworICAgIGdsQ29tcHJlc3NlZFRleFN1
YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgNywgMCwgMCwgcGl4ZWxfN193aWR0aCwgcGl4ZWxfN19o
ZWlnaHQsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF83X3NpemUsIE5V
TEwpOworICAgIGdsQnVmZmVyU3ViRGF0YShHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCAwLCBwaXhl
bF84X3NpemUsIHBpeGVsXzhfZGF0YSk7CisgICAgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChH
TF9URVhUVVJFXzJELCA4LCAwLCAwLCBwaXhlbF84X3dpZHRoLCBwaXhlbF84X2hlaWdodCwgR0xf
Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzhfc2l6ZSwgTlVMTCk7CisgICAg
Z2xCdWZmZXJTdWJEYXRhKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIDAsIHBpeGVsXzlfc2l6ZSwg
cGl4ZWxfOV9kYXRhKTsKKyAgICBnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVf
MkQsIDksIDAsIDAsIHBpeGVsXzlfd2lkdGgsIHBpeGVsXzlfaGVpZ2h0LCBHTF9DT01QUkVTU0VE
X1JHQkFfUzNUQ19EWFQxX0VYVCwgcGl4ZWxfOV9zaXplLCBOVUxMKTsKKworICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworCisgICAgZ2xVc2VQcm9ncmFtKG1UZXh0dXJlUHJvZ3JhbSk7CisgICAg
Z2xVbmlmb3JtMWkobVRleHR1cmVVbmlmb3JtTG9jYXRpb24sIDApOworCisgICAgZHJhd1F1YWQo
bVRleHR1cmVQcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgIEVYUEVDVF9HTF9OT19F
UlJPUigpOworCisgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGV4dHVyZSk7CisKKyAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKK30KKworLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZp
Z3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24p
IHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KK0FOR0xFX0lOU1RBTlRJQVRFX1RF
U1QoRFhUMUNvbXByZXNzZWRUZXh0dXJlVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMy
X0QzRDkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCisgICAgICAgICAg
ICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDlfMygpLAorICAgICAgICAgICAgICAgICAgICAgICBF
UzJfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCksCisgICAgICAgICAgICAgICAgICAgICAg
IEVTM19PUEVOR0xFUygpKTsKKworLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3Vy
YXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRo
ZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1Qo
RFhUMUNvbXByZXNzZWRUZXh0dXJlVGVzdEVTMywgRVMzX0QzRDExKCksIEVTM19PUEVOR0woKSwg
RVMzX09QRU5HTEVTKCkpOworCitBTkdMRV9JTlNUQU5USUFURV9URVNUKERYVDFDb21wcmVzc2Vk
VGV4dHVyZVRlc3REM0QxMSwgRVMyX0QzRDExKCksIEVTM19EM0QxMSgpLCBFUzJfRDNEMTFfRkw5
XzMoKSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMv
RGVidWdNYXJrZXJUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvZ2xfdGVzdHMvRGVidWdNYXJrZXJUZXN0LmNwcAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRGVidWdNYXJrZXJU
ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcxIEBACisvLworLy8gQ29weXJpZ2h0
IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gRGVi
dWdNYXJrZXJUZXN0OgorLy8gICBCYXNpYyB0ZXN0cyB0byBlbnN1cmUgRVhUX2RlYnVnX21hcmtl
ciBlbnRyeSBwb2ludHMgd29yay4KKworI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0Lmgi
CisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNlCit7CisKK2NsYXNzIERlYnVn
TWFya2VyVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIERlYnVn
TWFya2VyVGVzdCgpCisgICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOworICAgICAg
ICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKKyAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKKyAg
ICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4
KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAgIH0KK307CisKKy8vIFNpbXBs
ZSB0ZXN0IHRvIGVuc3VyZSB0aGUgdmFyaW91cyBFWFRfZGVidWdfbWFya2VyIGVudHJ5IHBvaW50
cyBkb24ndCBjcmFzaC4KKy8vIFRoZSBkZWJ1ZyBtYXJrZXJzIGNhbiBiZSB2YWxpZGF0ZWQgYnkg
Y2FwdHVyaW5nIHRoaXMgdGVzdCB1bmRlciBQSVgvR3JhcGhpY3MgRGlhZ25vc3RpY3MuCitURVNU
X1AoRGVidWdNYXJrZXJUZXN0LCBCYXNpY1ZhbGlkYXRpb24pCit7CisgICAgaWYgKCFleHRlbnNp
b25FbmFibGVkKCJHTF9FWFRfZGVidWdfbWFya2VyIikpCisgICAgeworICAgICAgICBzdGQ6OmNv
dXQgPDwgIlRlc3Qgc2tpcHBlZCBkdWUgdG8gbWlzc2luZyBHTF9FWFRfZGVidWdfbWFya2VyIiA8
PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdGQ6OnN0cmluZyBl
dmVudE1hcmtlckNhcHRpb24gPSAiVGVzdCBldmVudCBtYXJrZXIgY2FwdGlvbiI7CisgICAgc3Rk
OjpzdHJpbmcgZ3JvdXBNYXJrZXJDYXB0aW9uID0gIlRlc3QgZ3JvdXAgbWFya2VyIGNhcHRpb24i
OworCisgICAgZ2xQdXNoR3JvdXBNYXJrZXJFWFQoc3RhdGljX2Nhc3Q8R0xzaXplaT4oZ3JvdXBN
YXJrZXJDYXB0aW9uLmxlbmd0aCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBncm91cE1h
cmtlckNhcHRpb24uY19zdHIoKSk7CisKKyAgICAvLyBEbyBzb21lIGJhc2ljIG9wZXJhdGlvbnMg
YmV0d2VlbiBjYWxscyB0byBleHRlbnNpb24gZW50cnkgcG9pbnRzCisgICAgZ2xDbGVhckNvbG9y
KDEuMGYsIDEuMGYsIDEuMGYsIDEuMGYpOworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJ
VCk7CisKKyAgICBnbEluc2VydEV2ZW50TWFya2VyRVhUKHN0YXRpY19jYXN0PEdMc2l6ZWk+KGV2
ZW50TWFya2VyQ2FwdGlvbi5sZW5ndGgoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBl
dmVudE1hcmtlckNhcHRpb24uY19zdHIoKSk7CisgICAgZ2xDbGVhckNvbG9yKDEuMGYsIDAuMGYs
IDAuMGYsIDEuMGYpOworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisKKyAgICBn
bFB1c2hHcm91cE1hcmtlckVYVCgwLCBOVUxMKTsKKyAgICBnbENsZWFyQ29sb3IoMC4wZiwgMS4w
ZiwgMC4wZiwgMC4wZik7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAg
IGdsUG9wR3JvdXBNYXJrZXJFWFQoKTsKKyAgICBnbENsZWFyQ29sb3IoMC4wZiwgMC4wZiwgMS4w
ZiwgMC4wZik7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAgIGdsUG9w
R3JvdXBNYXJrZXJFWFQoKTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworfQorCisvLyBV
c2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVy
ZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBh
Z2FpbnN0LgorQU5HTEVfSU5TVEFOVElBVEVfVEVTVChEZWJ1Z01hcmtlclRlc3QsIEVTMl9EM0Q5
KCksIEVTMl9EM0QxMSgpLCBFUzJfT1BFTkdMKCksIEVTMl9PUEVOR0xFUygpKTsKKworfSAvLyBu
YW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0
cy9EZWJ1Z1Rlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9nbF90ZXN0cy9EZWJ1Z1Rlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9EZWJ1Z1Rlc3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDUxIEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBEZWJ1Z1Rlc3QuY3BwIDog
VGVzdHMgb2YgdGhlIEdMX0tIUl9kZWJ1ZyBleHRlbnNpb24KKworI2luY2x1ZGUgInRlc3RfdXRp
bHMvQU5HTEVUZXN0LmgiCisKK25hbWVzcGFjZSBhbmdsZQoreworCitjbGFzcyBEZWJ1Z1Rlc3Qg
OiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBEZWJ1Z1Rlc3QoKSA6IG1E
ZWJ1Z0V4dGVuc2lvbkF2YWlsYWJsZShmYWxzZSkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dp
ZHRoKDEyOCk7CisgICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOworICAgICAgICBzZXRDb25m
aWdSZWRCaXRzKDgpOworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNl
dENvbmZpZ0JsdWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAg
ICAgIHNldENvbmZpZ0RlcHRoQml0cygyNCk7CisgICAgICAgIHNldERlYnVnRW5hYmxlZCh0cnVl
KTsKKyAgICB9CisKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFO
R0xFVGVzdDo6U2V0VXAoKTsKKworICAgICAgICBtRGVidWdFeHRlbnNpb25BdmFpbGFibGUgPSBl
eHRlbnNpb25FbmFibGVkKCJHTF9LSFJfZGVidWciKTsKKyAgICAgICAgaWYgKG1EZWJ1Z0V4dGVu
c2lvbkF2YWlsYWJsZSkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xFbmFibGUoR0xfREVCVUdf
T1VUUFVUKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGJvb2wgbURlYnVnRXh0ZW5zaW9uQXZh
aWxhYmxlOworfTsKKworc3RydWN0IE1lc3NhZ2UKK3sKKyAgICBHTGVudW0gc291cmNlOworICAg
IEdMZW51bSB0eXBlOworICAgIEdMdWludCBpZDsKKyAgICBHTGVudW0gc2V2ZXJpdHk7CisgICAg
c3RkOjpzdHJpbmcgbWVzc2FnZTsKKyAgICBjb25zdCB2b2lkICp1c2VyUGFyYW07Cit9OworCitz
dGF0aWMgdm9pZCBHTF9BUElFTlRSWSBDYWxsYmFjayhHTGVudW0gc291cmNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gc2V2ZXJpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hh
ciAqbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQg
KnVzZXJQYXJhbSkKK3sKKyAgICBNZXNzYWdlIG17c291cmNlLCB0eXBlLCBpZCwgc2V2ZXJpdHks
IHN0ZDo6c3RyaW5nKG1lc3NhZ2UsIGxlbmd0aCksIHVzZXJQYXJhbX07CisgICAgc3RkOjp2ZWN0
b3I8TWVzc2FnZT4gKm1lc3NhZ2VzID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjp2ZWN0b3I8
TWVzc2FnZT4gKj4oY29uc3RfY2FzdDx2b2lkICo+KHVzZXJQYXJhbSkpOworICAgIG1lc3NhZ2Vz
LT5wdXNoX2JhY2sobSk7Cit9CisKKy8vIFRlc3QgdGhhdCBhbGwgQU5HTEUgYmFjay1lbmRzIGhh
dmUgR0xfS0hSX2RlYnVnIGVuYWJsZWQKK1RFU1RfUChEZWJ1Z1Rlc3QsIEVuYWJsZWQpCit7Cisg
ICAgQVNTRVJUX1RSVUUobURlYnVnRXh0ZW5zaW9uQXZhaWxhYmxlKTsKK30KKworLy8gVGVzdCB0
aGF0IHdoZW4gZGVidWcgb3V0cHV0IGlzIGRpc2FibGVkLCBubyBtZXNzYWdlIGFyZSBvdXRwdXR0
ZWQKK1RFU1RfUChEZWJ1Z1Rlc3QsIERpc2FibGVkT3V0cHV0KQoreworICAgIGlmICghbURlYnVn
RXh0ZW5zaW9uQXZhaWxhYmxlKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNr
aXBwZWQgYmVjYXVzZSBHTF9LSFJfZGVidWcgaXMgbm90IGF2YWlsYWJsZS4iIDw8IHN0ZDo6ZW5k
bDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGdsRGlzYWJsZShHTF9ERUJVR19PVVRQ
VVQpOworCisgICAgZ2xEZWJ1Z01lc3NhZ2VJbnNlcnRLSFIoR0xfREVCVUdfU09VUkNFX0FQUExJ
Q0FUSU9OLCBHTF9ERUJVR19UWVBFX09USEVSLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX0RFQlVHX1NFVkVSSVRZX05PVElGSUNBVElPTiwgLTEsICJkaXNjYXJkZWQiKTsKKwor
ICAgIEdMaW50IG51bU1lc3NhZ2VzID0gMDsKKyAgICBnbEdldEludGVnZXJ2KEdMX0RFQlVHX0xP
R0dFRF9NRVNTQUdFUywgJm51bU1lc3NhZ2VzKTsKKyAgICBBU1NFUlRfRVEoMCwgbnVtTWVzc2Fn
ZXMpOworCisgICAgc3RkOjp2ZWN0b3I8TWVzc2FnZT4gbWVzc2FnZXM7CisgICAgZ2xEZWJ1Z01l
c3NhZ2VDYWxsYmFja0tIUihDYWxsYmFjaywgJm1lc3NhZ2VzKTsKKyAgICBnbEVuYWJsZShHTF9E
RUJVR19PVVRQVVRfU1lOQ0hST05PVVMpOworCisgICAgQVNTRVJUX0VRKDB1LCBtZXNzYWdlcy5z
aXplKCkpOworfQorCisvLyBUZXN0IGEgYmFzaWMgZmxvdyBvZiBpbnNlcnRpbmcgYSBtZXNzYWdl
IGFuZCByZWFkaW5nIGl0IGJhY2sKK1RFU1RfUChEZWJ1Z1Rlc3QsIEluc2VydE1lc3NhZ2UpCit7
CisgICAgaWYgKCFtRGVidWdFeHRlbnNpb25BdmFpbGFibGUpCisgICAgeworICAgICAgICBzdGQ6
OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEdMX0tIUl9kZWJ1ZyBpcyBub3QgYXZhaWxh
YmxlLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3Qg
R0xlbnVtIHNvdXJjZSAgICAgICA9IEdMX0RFQlVHX1NPVVJDRV9BUFBMSUNBVElPTjsKKyAgICBj
b25zdCBHTGVudW0gdHlwZSAgICAgICAgID0gR0xfREVCVUdfVFlQRV9PVEhFUjsKKyAgICBjb25z
dCBHTHVpbnQgaWQgICAgICAgICAgID0gMTsKKyAgICBjb25zdCBHTGVudW0gc2V2ZXJpdHkgICAg
ID0gR0xfREVCVUdfU0VWRVJJVFlfTk9USUZJQ0FUSU9OOworICAgIGNvbnN0IHN0ZDo6c3RyaW5n
IG1lc3NhZ2UgPSAiTWVzc2FnZSI7CisKKyAgICBnbERlYnVnTWVzc2FnZUluc2VydEtIUihzb3Vy
Y2UsIHR5cGUsIGlkLCBzZXZlcml0eSwgLTEsIG1lc3NhZ2UuY19zdHIoKSk7CisKKyAgICBHTGlu
dCBudW1NZXNzYWdlcyA9IDA7CisgICAgZ2xHZXRJbnRlZ2VydihHTF9ERUJVR19MT0dHRURfTUVT
U0FHRVMsICZudW1NZXNzYWdlcyk7CisgICAgQVNTRVJUX0VRKDEsIG51bU1lc3NhZ2VzKTsKKwor
ICAgIEdMaW50IG1lc3NhZ2VMZW5ndGggPSAwOworICAgIGdsR2V0SW50ZWdlcnYoR0xfREVCVUdf
TkVYVF9MT0dHRURfTUVTU0FHRV9MRU5HVEgsICZtZXNzYWdlTGVuZ3RoKTsKKyAgICBFWFBFQ1Rf
RVEoc3RhdGljX2Nhc3Q8R0xpbnQ+KG1lc3NhZ2UubGVuZ3RoKCkpLCBtZXNzYWdlTGVuZ3RoKTsK
KworICAgIEdMZW51bSBzb3VyY2VCdWYgICA9IDA7CisgICAgR0xlbnVtIHR5cGVCdWYgICAgID0g
MDsKKyAgICBHTGVudW0gaWRCdWYgICAgICAgPSAwOworICAgIEdMZW51bSBzZXZlcml0eUJ1ZiA9
IDA7CisgICAgR0xzaXplaSBsZW5ndGhCdWYgPSAwOworICAgIHN0ZDo6dmVjdG9yPGNoYXI+IG1l
c3NhZ2VCdWYobWVzc2FnZUxlbmd0aCArIDEpOworICAgIEdMdWludCByZXQgPQorICAgICAgICBn
bEdldERlYnVnTWVzc2FnZUxvZ0tIUigxLCBzdGF0aWNfY2FzdDxHTHNpemVpPihtZXNzYWdlQnVm
LnNpemUoKSksICZzb3VyY2VCdWYsICZ0eXBlQnVmLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmaWRCdWYsICZzZXZlcml0eUJ1ZiwgJmxlbmd0aEJ1ZiwgbWVzc2FnZUJ1Zi5kYXRh
KCkpOworICAgIEVYUEVDVF9FUSgxdSwgcmV0KTsKKyAgICBFWFBFQ1RfRVEoc291cmNlLCBzb3Vy
Y2VCdWYpOworICAgIEVYUEVDVF9FUSh0eXBlLCB0eXBlQnVmKTsKKyAgICBFWFBFQ1RfRVEoaWQs
IGlkQnVmKTsKKyAgICBFWFBFQ1RfRVEoc2V2ZXJpdHksIHNldmVyaXR5QnVmKTsKKyAgICBFWFBF
Q1RfRVEobGVuZ3RoQnVmLCBtZXNzYWdlTGVuZ3RoKTsKKyAgICBFWFBFQ1RfU1RSRVEobWVzc2Fn
ZS5jX3N0cigpLCBtZXNzYWdlQnVmLmRhdGEoKSk7CisKKyAgICBnbEdldEludGVnZXJ2KEdMX0RF
QlVHX0xPR0dFRF9NRVNTQUdFUywgJm51bU1lc3NhZ2VzKTsKKyAgICBFWFBFQ1RfRVEoMCwgbnVt
TWVzc2FnZXMpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFRlc3QgaW5z
ZXJ0aW5nIG11bHRpcGxlIG1lc3NhZ2VzCitURVNUX1AoRGVidWdUZXN0LCBJbnNlcnRNZXNzYWdl
TXVsdGlwbGUpCit7CisgICAgaWYgKCFtRGVidWdFeHRlbnNpb25BdmFpbGFibGUpCisgICAgewor
ICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEdMX0tIUl9kZWJ1ZyBp
cyBub3QgYXZhaWxhYmxlLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgY29uc3QgR0xlbnVtIHNvdXJjZSAgICAgICAgICA9IEdMX0RFQlVHX1NPVVJDRV9BUFBM
SUNBVElPTjsKKyAgICBjb25zdCBHTGVudW0gdHlwZSAgICAgICAgICAgID0gR0xfREVCVUdfVFlQ
RV9PVEhFUjsKKyAgICBjb25zdCBHTHVpbnQgc3RhcnRJRCAgICAgICAgID0gMTsKKyAgICBjb25z
dCBHTGVudW0gc2V2ZXJpdHkgICAgICAgID0gR0xfREVCVUdfU0VWRVJJVFlfTk9USUZJQ0FUSU9O
OworICAgIGNvbnN0IGNoYXIgbWVzc2FnZVJlcGVhdENoYXIgPSAnbSc7CisgICAgY29uc3Qgc2l6
ZV90IG1lc3NhZ2VDb3VudCAgICA9IDMyOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
ZXNzYWdlQ291bnQ7IGkrKykKKyAgICB7CisgICAgICAgIHN0ZDo6c3RyaW5nIG1lc3NhZ2UoaSAr
IDEsIG1lc3NhZ2VSZXBlYXRDaGFyKTsKKyAgICAgICAgZ2xEZWJ1Z01lc3NhZ2VJbnNlcnRLSFIo
c291cmNlLCB0eXBlLCBzdGFydElEICsgc3RhdGljX2Nhc3Q8R0x1aW50PihpKSwgc2V2ZXJpdHks
IC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLmNfc3RyKCkpOwor
ICAgIH0KKworICAgIEdMaW50IG51bU1lc3NhZ2VzID0gMDsKKyAgICBnbEdldEludGVnZXJ2KEdM
X0RFQlVHX0xPR0dFRF9NRVNTQUdFUywgJm51bU1lc3NhZ2VzKTsKKyAgICBBU1NFUlRfRVEoc3Rh
dGljX2Nhc3Q8R0xpbnQ+KG1lc3NhZ2VDb3VudCksIG51bU1lc3NhZ2VzKTsKKworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbWVzc2FnZUNvdW50OyBpKyspCisgICAgeworICAgICAgICBnbEdl
dEludGVnZXJ2KEdMX0RFQlVHX0xPR0dFRF9NRVNTQUdFUywgJm51bU1lc3NhZ2VzKTsKKyAgICAg
ICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PEdMaW50PihtZXNzYWdlQ291bnQgLSBpKSwgbnVtTWVz
c2FnZXMpOworCisgICAgICAgIHN0ZDo6c3RyaW5nIGV4cGVjdGVkTWVzc2FnZShpICsgMSwgbWVz
c2FnZVJlcGVhdENoYXIpOworCisgICAgICAgIEdMaW50IG1lc3NhZ2VMZW5ndGggPSAwOworICAg
ICAgICBnbEdldEludGVnZXJ2KEdMX0RFQlVHX05FWFRfTE9HR0VEX01FU1NBR0VfTEVOR1RILCAm
bWVzc2FnZUxlbmd0aCk7CisgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxHTGludD4oZXhw
ZWN0ZWRNZXNzYWdlLmxlbmd0aCgpKSwgbWVzc2FnZUxlbmd0aCk7CisKKyAgICAgICAgR0xlbnVt
IHNvdXJjZUJ1ZiAgID0gMDsKKyAgICAgICAgR0xlbnVtIHR5cGVCdWYgICAgID0gMDsKKyAgICAg
ICAgR0xlbnVtIGlkQnVmICAgICAgID0gMDsKKyAgICAgICAgR0xlbnVtIHNldmVyaXR5QnVmID0g
MDsKKyAgICAgICAgR0xzaXplaSBsZW5ndGhCdWYgPSAwOworICAgICAgICBzdGQ6OnZlY3Rvcjxj
aGFyPiBtZXNzYWdlQnVmKG1lc3NhZ2VMZW5ndGggKyAxKTsKKyAgICAgICAgR0x1aW50IHJldCA9
CisgICAgICAgICAgICBnbEdldERlYnVnTWVzc2FnZUxvZ0tIUigxLCBzdGF0aWNfY2FzdDxHTHNp
emVpPihtZXNzYWdlQnVmLnNpemUoKSksICZzb3VyY2VCdWYsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmdHlwZUJ1ZiwgJmlkQnVmLCAmc2V2ZXJpdHlCdWYsICZsZW5ndGhC
dWYsIG1lc3NhZ2VCdWYuZGF0YSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCByZXQpOworICAg
ICAgICBFWFBFQ1RfRVEoc291cmNlLCBzb3VyY2VCdWYpOworICAgICAgICBFWFBFQ1RfRVEodHlw
ZSwgdHlwZUJ1Zik7CisgICAgICAgIEVYUEVDVF9FUShzdGFydElEICsgaSwgaWRCdWYpOworICAg
ICAgICBFWFBFQ1RfRVEoc2V2ZXJpdHksIHNldmVyaXR5QnVmKTsKKyAgICAgICAgRVhQRUNUX0VR
KGxlbmd0aEJ1ZiwgbWVzc2FnZUxlbmd0aCk7CisgICAgICAgIEVYUEVDVF9TVFJFUShleHBlY3Rl
ZE1lc3NhZ2UuY19zdHIoKSwgbWVzc2FnZUJ1Zi5kYXRhKCkpOworICAgIH0KKworICAgIGdsR2V0
SW50ZWdlcnYoR0xfREVCVUdfTE9HR0VEX01FU1NBR0VTLCAmbnVtTWVzc2FnZXMpOworICAgIEVY
UEVDVF9FUSgwLCBudW1NZXNzYWdlcyk7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKK30K
KworLy8gVGVzdCB1c2luZyBhIGRlYnVnIGNhbGxiYWNrCitURVNUX1AoRGVidWdUZXN0LCBEZWJ1
Z0NhbGxiYWNrKQoreworICAgIGlmICghbURlYnVnRXh0ZW5zaW9uQXZhaWxhYmxlKQorICAgIHsK
KyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBHTF9LSFJfZGVidWcg
aXMgbm90IGF2YWlsYWJsZS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHN0ZDo6dmVjdG9yPE1lc3NhZ2U+IG1lc3NhZ2VzOworCisgICAgZ2xEZWJ1Z01lc3Nh
Z2VDYWxsYmFja0tIUihDYWxsYmFjaywgJm1lc3NhZ2VzKTsKKyAgICBnbEVuYWJsZShHTF9ERUJV
R19PVVRQVVRfU1lOQ0hST05PVVMpOworCisgICAgY29uc3QgR0xlbnVtIHNvdXJjZSAgICAgICA9
IEdMX0RFQlVHX1NPVVJDRV9BUFBMSUNBVElPTjsKKyAgICBjb25zdCBHTGVudW0gdHlwZSAgICAg
ICAgID0gR0xfREVCVUdfVFlQRV9PVEhFUjsKKyAgICBjb25zdCBHTHVpbnQgaWQgICAgICAgICAg
ID0gMTsKKyAgICBjb25zdCBHTGVudW0gc2V2ZXJpdHkgICAgID0gR0xfREVCVUdfU0VWRVJJVFlf
Tk9USUZJQ0FUSU9OOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIG1lc3NhZ2UgPSAiTWVzc2FnZSI7
CisKKyAgICBnbERlYnVnTWVzc2FnZUluc2VydEtIUihzb3VyY2UsIHR5cGUsIGlkLCBzZXZlcml0
eSwgLTEsIG1lc3NhZ2UuY19zdHIoKSk7CisKKyAgICBHTGludCBudW1NZXNzYWdlcyA9IDA7Cisg
ICAgZ2xHZXRJbnRlZ2VydihHTF9ERUJVR19MT0dHRURfTUVTU0FHRVMsICZudW1NZXNzYWdlcyk7
CisgICAgRVhQRUNUX0VRKDAsIG51bU1lc3NhZ2VzKTsKKworICAgIEFTU0VSVF9FUSgxdSwgbWVz
c2FnZXMuc2l6ZSgpKTsKKworICAgIGNvbnN0IE1lc3NhZ2UgJm0gPSBtZXNzYWdlcy5mcm9udCgp
OworICAgIEVYUEVDVF9FUShzb3VyY2UsIG0uc291cmNlKTsKKyAgICBFWFBFQ1RfRVEodHlwZSwg
bS50eXBlKTsKKyAgICBFWFBFQ1RfRVEoaWQsIG0uaWQpOworICAgIEVYUEVDVF9FUShzZXZlcml0
eSwgbS5zZXZlcml0eSk7CisgICAgRVhQRUNUX0VRKG1lc3NhZ2UsIG0ubWVzc2FnZSk7CisKKyAg
ICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKK30KKworLy8gVGVzdCB0aGUgZ2xHZXRQb2ludGVydktI
UiBlbnRyeSBwb2ludAorVEVTVF9QKERlYnVnVGVzdCwgR2V0UG9pbnRlcikKK3sKKyAgICBpZiAo
IW1EZWJ1Z0V4dGVuc2lvbkF2YWlsYWJsZSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAi
VGVzdCBza2lwcGVkIGJlY2F1c2UgR0xfS0hSX2RlYnVnIGlzIG5vdCBhdmFpbGFibGUuIiA8PCBz
dGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdGQ6OnZlY3RvcjxNZXNz
YWdlPiBtZXNzYWdlczsKKworICAgIGdsRGVidWdNZXNzYWdlQ2FsbGJhY2tLSFIoQ2FsbGJhY2ss
ICZtZXNzYWdlcyk7CisKKyAgICB2b2lkICpjYWxsYmFjayA9IG51bGxwdHI7CisgICAgZ2xHZXRQ
b2ludGVydktIUihHTF9ERUJVR19DQUxMQkFDS19GVU5DVElPTiwgJmNhbGxiYWNrKTsKKyAgICBF
WFBFQ1RfRVEocmVpbnRlcnByZXRfY2FzdDx2b2lkICo+KENhbGxiYWNrKSwgY2FsbGJhY2spOwor
CisgICAgdm9pZCAqdXNlckRhdGEgPSBudWxscHRyOworICAgIGdsR2V0UG9pbnRlcnZLSFIoR0xf
REVCVUdfQ0FMTEJBQ0tfVVNFUl9QQVJBTSwgJnVzZXJEYXRhKTsKKyAgICBFWFBFQ1RfRVEoc3Rh
dGljX2Nhc3Q8dm9pZCAqPigmbWVzc2FnZXMpLCB1c2VyRGF0YSk7Cit9CisKKy8vIFRlc3QgdXNh
Z2Ugb2YgbWVzc2FnZSBjb250cm9sLiAgRXhhbXBsZSB0YWtlbiBmcm9tIEdMX0tIUl9kZWJ1ZyBz
cGVjLgorVEVTVF9QKERlYnVnVGVzdCwgTWVzc2FnZUNvbnRyb2wxKQoreworICAgIGlmICghbURl
YnVnRXh0ZW5zaW9uQXZhaWxhYmxlKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0
IHNraXBwZWQgYmVjYXVzZSBHTF9LSFJfZGVidWcgaXMgbm90IGF2YWlsYWJsZS4iIDw8IHN0ZDo6
ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0ZDo6dmVjdG9yPE1lc3NhZ2U+
IG1lc3NhZ2VzOworCisgICAgZ2xEZWJ1Z01lc3NhZ2VDYWxsYmFja0tIUihDYWxsYmFjaywgJm1l
c3NhZ2VzKTsKKyAgICBnbEVuYWJsZShHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVMpOworCisg
ICAgLy8gU2V0dXAgb2YgdGhlIGRlZmF1bHQgYWN0aXZlIGRlYnVnIGdyb3VwOiBGaWx0ZXIgZXZl
cnl0aGluZyBpbgorICAgIGdsRGVidWdNZXNzYWdlQ29udHJvbEtIUihHTF9ET05UX0NBUkUsIEdM
X0RPTlRfQ0FSRSwgR0xfRE9OVF9DQVJFLCAwLCBOVUxMLCBHTF9UUlVFKTsKKworICAgIC8vIEdl
bmVyYXRlIGEgZGVidWcgbWFya2VyIGRlYnVnIG91dHB1dCBtZXNzYWdlCisgICAgZ2xEZWJ1Z01l
c3NhZ2VJbnNlcnRLSFIoR0xfREVCVUdfU09VUkNFX0FQUExJQ0FUSU9OLCBHTF9ERUJVR19UWVBF
X01BUktFUiwgMTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0RFQlVHX1NFVkVS
SVRZX05PVElGSUNBVElPTiwgLTEsICJNZXNzYWdlIDEiKTsKKworICAgIC8vIFB1c2ggZGVidWcg
Z3JvdXAgMQorICAgIGdsUHVzaERlYnVnR3JvdXBLSFIoR0xfREVCVUdfU09VUkNFX0FQUExJQ0FU
SU9OLCAxLCAtMSwgIk1lc3NhZ2UgMiIpOworCisgICAgLy8gU2V0dXAgb2YgdGhlIGRlYnVnIGdy
b3VwIDE6IEZpbHRlciBldmVyeXRoaW5nIG91dAorICAgIGdsRGVidWdNZXNzYWdlQ29udHJvbEtI
UihHTF9ET05UX0NBUkUsIEdMX0RPTlRfQ0FSRSwgR0xfRE9OVF9DQVJFLCAwLCBOVUxMLCBHTF9G
QUxTRSk7CisKKyAgICAvLyBUaGlzIG1lc3NhZ2Ugd29uJ3QgYXBwZWFyIGluIHRoZSBkZWJ1ZyBv
dXRwdXQgbG9nIG9mCisgICAgZ2xEZWJ1Z01lc3NhZ2VJbnNlcnRLSFIoR0xfREVCVUdfU09VUkNF
X0FQUExJQ0FUSU9OLCBHTF9ERUJVR19UWVBFX01BUktFUiwgMTAwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX0RFQlVHX1NFVkVSSVRZX05PVElGSUNBVElPTiwgLTEsICJNZXNzYWdl
IDMiKTsKKworICAgIC8vIFBvcCBkZWJ1ZyBncm91cCAxLCByZXN0b3JlIHRoZSB2b2x1bWUgY29u
dHJvbCBvZiB0aGUgZGVmYXVsdCBkZWJ1ZyBncm91cC4KKyAgICBnbFBvcERlYnVnR3JvdXBLSFIo
KTsKKworICAgIC8vIEdlbmVyYXRlIGEgZGVidWcgbWFya2VyIGRlYnVnIG91dHB1dCBtZXNzYWdl
CisgICAgZ2xEZWJ1Z01lc3NhZ2VJbnNlcnRLSFIoR0xfREVCVUdfU09VUkNFX0FQUExJQ0FUSU9O
LCBHTF9ERUJVR19UWVBFX01BUktFUiwgMTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX0RFQlVHX1NFVkVSSVRZX05PVElGSUNBVElPTiwgLTEsICJNZXNzYWdlIDUiKTsKKworICAg
IC8vIEV4cGVjdGVkIGRlYnVnIG91dHB1dCBmcm9tIHRoZSBHTCBpbXBsZW1lbnRhdGlvbgorICAg
IC8vIE1lc3NhZ2UgMQorICAgIC8vIE1lc3NhZ2UgMgorICAgIC8vIE1lc3NhZ2UgMgorICAgIC8v
IE1lc3NhZ2UgNQorICAgIEVYUEVDVF9FUSg0dSwgbWVzc2FnZXMuc2l6ZSgpKTsKKyAgICBFWFBF
Q1RfU1RSRVEobWVzc2FnZXNbMF0ubWVzc2FnZS5jX3N0cigpLCAiTWVzc2FnZSAxIik7CisgICAg
RVhQRUNUX1NUUkVRKG1lc3NhZ2VzWzFdLm1lc3NhZ2UuY19zdHIoKSwgIk1lc3NhZ2UgMiIpOwor
ICAgIEVYUEVDVF9TVFJFUShtZXNzYWdlc1syXS5tZXNzYWdlLmNfc3RyKCksICJNZXNzYWdlIDIi
KTsKKyAgICBFWFBFQ1RfU1RSRVEobWVzc2FnZXNbM10ubWVzc2FnZS5jX3N0cigpLCAiTWVzc2Fn
ZSA1Iik7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKK30KKworLy8gVGVzdCB1c2FnZSBv
ZiBtZXNzYWdlIGNvbnRyb2wuICBFeGFtcGxlIHRha2VuIGZyb20gR0xfS0hSX2RlYnVnIHNwZWMu
CitURVNUX1AoRGVidWdUZXN0LCBNZXNzYWdlQ29udHJvbDIpCit7CisgICAgaWYgKCFtRGVidWdF
eHRlbnNpb25BdmFpbGFibGUpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tp
cHBlZCBiZWNhdXNlIEdMX0tIUl9kZWJ1ZyBpcyBub3QgYXZhaWxhYmxlLiIgPDwgc3RkOjplbmRs
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RkOjp2ZWN0b3I8TWVzc2FnZT4gbWVz
c2FnZXM7CisKKyAgICBnbERlYnVnTWVzc2FnZUNhbGxiYWNrS0hSKENhbGxiYWNrLCAmbWVzc2Fn
ZXMpOworICAgIGdsRW5hYmxlKEdMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9VUyk7CisKKyAgICAv
LyBTZXR1cCB0aGUgY29udHJvbCBvZiBkZSBkZWJ1ZyBvdXRwdXQgZm9yIHRoZSBkZWZhdWx0IGRl
YnVnIGdyb3VwCisgICAgZ2xEZWJ1Z01lc3NhZ2VDb250cm9sS0hSKEdMX0RPTlRfQ0FSRSwgR0xf
RE9OVF9DQVJFLCBHTF9ET05UX0NBUkUsIDAsIE5VTEwsIEdMX0ZBTFNFKTsKKyAgICBnbERlYnVn
TWVzc2FnZUNvbnRyb2xLSFIoR0xfREVCVUdfU09VUkNFX1RISVJEX1BBUlRZLCBHTF9ET05UX0NB
UkUsIEdMX0RPTlRfQ0FSRSwgMCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfRkFMU0UpOworICAgIHN0ZDo6dmVjdG9yPEdMdWludD4gaWRzMCA9IHsxMjM0LCAyMzQ1LCAz
NDU2LCA0NTY3fTsKKyAgICBnbERlYnVnTWVzc2FnZUNvbnRyb2xLSFIoR0xfREVCVUdfU09VUkNF
X0FQUExJQ0FUSU9OLCBHTF9ERUJVR19UWVBFX09USEVSLCBHTF9ET05UX0NBUkUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMdWludD4oaWRzMC5zaXplKCkpLCBp
ZHMwLmRhdGEoKSwgR0xfRkFMU0UpOworICAgIGdsRGVidWdNZXNzYWdlQ29udHJvbEtIUihHTF9E
RUJVR19TT1VSQ0VfQVBQTElDQVRJT04sIEdMX0RFQlVHX1RZUEVfUE9SVEFCSUxJVFksIEdMX0RP
TlRfQ0FSRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0x1aW50
PihpZHMwLnNpemUoKSksIGlkczAuZGF0YSgpLCBHTF9GQUxTRSk7CisKKyAgICAvLyBQdXNoIGRl
YnVnIGdyb3VwIDEKKyAgICAvLyBJbmhlcml0IG9mIHRoZSBkZWZhdWx0IGRlYnVnIGdyb3VwIGRl
YnVnIG91dHB1dCB2b2x1bWUgY29udHJvbAorICAgIC8vIEZpbHRlcmVkIG91dCBieSBnbERlYnVn
TWVzc2FnZUNvbnRyb2wKKyAgICBnbFB1c2hEZWJ1Z0dyb3VwS0hSKEdMX0RFQlVHX1NPVVJDRV9B
UFBMSUNBVElPTiwgMSwgLTEsICJNZXNzYWdlIDEiKTsKKworICAgIC8vIEluIHRoaXMgc2VjdGlv
biBvZiB0aGUgY29kZSwgd2UgYXJlIGludGVyZXN0ZWQgaW4gcGVyZm9ybWFuY2VzLgorICAgIGds
RGVidWdNZXNzYWdlQ29udHJvbEtIUihHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT04sIEdMX0RF
QlVHX1RZUEVfUEVSRk9STUFOQ0UsIEdMX0RPTlRfQ0FSRSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMCwgTlVMTCwgR0xfVFJVRSk7CisgICAgLy8gQnV0IHdlIGFscmVhZHkgaWRlbnRp
ZnkgdGhhdCBzb21lIG1lc3NhZ2VzIGFyZSBub3QgcmVhbGx5IHVzZWZ1bCBmb3IgdXMuCisgICAg
c3RkOjp2ZWN0b3I8R0x1aW50PiBpZHMxID0gezU2NzgsIDY3ODl9OworICAgIGdsRGVidWdNZXNz
YWdlQ29udHJvbEtIUihHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT04sIEdMX0RFQlVHX1RZUEVf
T1RIRVIsIEdMX0RPTlRfQ0FSRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8R0x1aW50PihpZHMxLnNpemUoKSksIGlkczEuZGF0YSgpLCBHTF9GQUxTRSk7CisKKyAg
ICBnbERlYnVnTWVzc2FnZUluc2VydEtIUihHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT04sIEdM
X0RFQlVHX1RZUEVfUEVSRk9STUFOQ0UsIDEzNTcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfREVCVUdfU0VWRVJJVFlfTUVESVVNLCAtMSwgIk1lc3NhZ2UgMiIpOworICAgIGdsRGVi
dWdNZXNzYWdlSW5zZXJ0S0hSKEdMX0RFQlVHX1NPVVJDRV9USElSRF9QQVJUWSwgIC8vIFdlIHN0
aWxsIGZpbHRlciBvdXQgdGhlc2UgbWVzc2FnZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfREVCVUdfVFlQRV9PVEhFUiwgMzU3OSwgR0xfREVCVUdfU0VWRVJJVFlfTUVESVVNLCAt
MSwgIk1lc3NhZ2UgMyIpOworCisgICAgZ2xQb3BEZWJ1Z0dyb3VwS0hSKCk7CisKKyAgICAvLyBF
eHBlY3RlZCBkZWJ1ZyBvdXRwdXQgZnJvbSB0aGUgR0wgaW1wbGVtZW50YXRpb24KKyAgICAvLyBN
ZXNzYWdlIDIKKyAgICBFWFBFQ1RfRVEoMXUsIG1lc3NhZ2VzLnNpemUoKSk7CisgICAgRVhQRUNU
X1NUUkVRKG1lc3NhZ2VzWzBdLm1lc3NhZ2UuY19zdHIoKSwgIk1lc3NhZ2UgMiIpOworCisgICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFRlc3QgYmFzaWMgdXNhZ2Ugb2Ygc2V0dGlu
ZyBhbmQgZ2V0dGluZyBsYWJlbHMKK1RFU1RfUChEZWJ1Z1Rlc3QsIE9iamVjdExhYmVscykKK3sK
KyAgICBpZiAoIW1EZWJ1Z0V4dGVuc2lvbkF2YWlsYWJsZSkKKyAgICB7CisgICAgICAgIHN0ZDo6
Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgR0xfS0hSX2RlYnVnIGlzIG5vdCBhdmFpbGFi
bGUuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHTHVpbnQg
cmVuZGVyYnVmZmVyID0gMDsKKyAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJnJlbmRlcmJ1ZmZl
cik7CisgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVy
KTsKKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZsYWJlbCA9ICJyZW5kZXJidWZmZXIiOworICAg
IGdsT2JqZWN0TGFiZWxLSFIoR0xfUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIsIC0xLCBsYWJl
bC5jX3N0cigpKTsKKworICAgIHN0ZDo6dmVjdG9yPGNoYXI+IGxhYmVsQnVmKGxhYmVsLmxlbmd0
aCgpICsgMSk7CisgICAgR0xzaXplaSBsYWJlbExlbmd0aEJ1ZiA9IDA7CisgICAgZ2xHZXRPYmpl
Y3RMYWJlbEtIUihHTF9SRU5ERVJCVUZGRVIsIHJlbmRlcmJ1ZmZlciwgc3RhdGljX2Nhc3Q8R0xz
aXplaT4obGFiZWxCdWYuc2l6ZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICZsYWJlbExl
bmd0aEJ1ZiwgbGFiZWxCdWYuZGF0YSgpKTsKKworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxH
THNpemVpPihsYWJlbC5sZW5ndGgoKSksIGxhYmVsTGVuZ3RoQnVmKTsKKyAgICBFWFBFQ1RfU1RS
RVEobGFiZWwuY19zdHIoKSwgbGFiZWxCdWYuZGF0YSgpKTsKKworICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOworCisgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZyZW5kZXJidWZmZXIpOwor
CisgICAgZ2xPYmplY3RMYWJlbEtIUihHTF9SRU5ERVJCVUZGRVIsIHJlbmRlcmJ1ZmZlciwgLTEs
IGxhYmVsLmNfc3RyKCkpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsK
KworICAgIGdsR2V0T2JqZWN0TGFiZWxLSFIoR0xfUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIs
IHN0YXRpY19jYXN0PEdMc2l6ZWk+KGxhYmVsQnVmLnNpemUoKSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAmbGFiZWxMZW5ndGhCdWYsIGxhYmVsQnVmLmRhdGEoKSk7CisgICAgRVhQRUNUX0dM
X0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOworfQorCisvLyBUZXN0IGJhc2ljIHVzYWdlIG9mIHNl
dHRpbmcgYW5kIGdldHRpbmcgbGFiZWxzCitURVNUX1AoRGVidWdUZXN0LCBPYmplY3RQdHJMYWJl
bHMpCit7CisgICAgaWYgKCFtRGVidWdFeHRlbnNpb25BdmFpbGFibGUgfHwgZ2V0Q2xpZW50TWFq
b3JWZXJzaW9uKCkgPCAzKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBw
ZWQgYmVjYXVzZSBHTF9LSFJfZGVidWcgb3IgRVMzIGlzIG5vdCBhdmFpbGFibGUuIiA8PCBzdGQ6
OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHTHN5bmMgc3luYyA9IGdsRmVu
Y2VTeW5jKEdMX1NZTkNfR1BVX0NPTU1BTkRTX0NPTVBMRVRFLCAwKTsKKworICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZsYWJlbCA9ICJzeW5jIjsKKyAgICBnbE9iamVjdFB0ckxhYmVsS0hSKHN5bmMs
IC0xLCBsYWJlbC5jX3N0cigpKTsKKworICAgIHN0ZDo6dmVjdG9yPGNoYXI+IGxhYmVsQnVmKGxh
YmVsLmxlbmd0aCgpICsgMSk7CisgICAgR0xzaXplaSBsYWJlbExlbmd0aEJ1ZiA9IDA7CisgICAg
Z2xHZXRPYmplY3RQdHJMYWJlbEtIUihzeW5jLCBzdGF0aWNfY2FzdDxHTHNpemVpPihsYWJlbEJ1
Zi5zaXplKCkpLCAmbGFiZWxMZW5ndGhCdWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBs
YWJlbEJ1Zi5kYXRhKCkpOworCisgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PEdMc2l6ZWk+KGxh
YmVsLmxlbmd0aCgpKSwgbGFiZWxMZW5ndGhCdWYpOworICAgIEVYUEVDVF9TVFJFUShsYWJlbC5j
X3N0cigpLCBsYWJlbEJ1Zi5kYXRhKCkpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisK
KyAgICBnbERlbGV0ZVN5bmMoc3luYyk7CisKKyAgICBnbE9iamVjdFB0ckxhYmVsS0hSKHN5bmMs
IC0xLCBsYWJlbC5jX3N0cigpKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxV
RSk7CisKKyAgICBnbEdldE9iamVjdFB0ckxhYmVsS0hSKHN5bmMsIHN0YXRpY19jYXN0PEdMc2l6
ZWk+KGxhYmVsQnVmLnNpemUoKSksICZsYWJlbExlbmd0aEJ1ZiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxhYmVsQnVmLmRhdGEoKSk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFM
SURfVkFMVUUpOworfQorCisvLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlv
bnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UK
Ky8vIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1Qo
RGVidWdUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX0Qz
RDExKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgRVMzX09QRU5HTCgpKTsKKworfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRGVwdGhTdGVuY2ls
Rm9ybWF0c1Rlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9nbF90ZXN0cy9EZXB0aFN0ZW5jaWxGb3JtYXRzVGVzdC5jcHAJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0RlcHRoU3Rl
bmNpbEZvcm1hdHNUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5MiBAQAorLy8K
Ky8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKworI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKK3VzaW5nIG5hbWVz
cGFjZSBhbmdsZTsKKworY2xhc3MgRGVwdGhTdGVuY2lsRm9ybWF0c1Rlc3RCYXNlIDogcHVibGlj
IEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgRGVwdGhTdGVuY2lsRm9ybWF0c1Rlc3RC
YXNlKCkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7CisgICAgICAgIHNldFdp
bmRvd0hlaWdodCgxMjgpOworICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOworICAgICAgICBz
ZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOworICAg
ICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgfQorCisgICAgYm9vbCBjaGVja1RleElt
YWdlRm9ybWF0U3VwcG9ydChHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSkKKyAgICB7CisgICAg
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgICAgIEdMdWludCB0ZXggPSAwOworICAg
ICAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXgpOworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RF
WFRVUkVfMkQsIHRleCk7CisgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBm
b3JtYXQsIDEsIDEsIDAsIGZvcm1hdCwgdHlwZSwgTlVMTCk7CisgICAgICAgIGdsRGVsZXRlVGV4
dHVyZXMoMSwgJnRleCk7CisKKyAgICAgICAgcmV0dXJuIChnbEdldEVycm9yKCkgPT0gR0xfTk9f
RVJST1IpOworICAgIH0KKworICAgIGJvb2wgY2hlY2tUZXhTdG9yYWdlRm9ybWF0U3VwcG9ydChH
TGVudW0gaW50ZXJuYWxGb3JtYXQpCisgICAgeworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1Io
KTsKKworICAgICAgICBHTHVpbnQgdGV4ID0gMDsKKyAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAm
dGV4KTsKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXgpOworICAgICAg
ICBnbFRleFN0b3JhZ2UyREVYVChHTF9URVhUVVJFXzJELCAxLCBpbnRlcm5hbEZvcm1hdCwgMSwg
MSk7CisgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRleCk7CisKKyAgICAgICAgcmV0dXJu
IChnbEdldEVycm9yKCkgPT0gR0xfTk9fRVJST1IpOworICAgIH0KKworICAgIGJvb2wgY2hlY2tS
ZW5kZXJidWZmZXJGb3JtYXRTdXBwb3J0KEdMZW51bSBpbnRlcm5hbEZvcm1hdCkKKyAgICB7Cisg
ICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgICAgIEdMdWludCByYiA9IDA7Cisg
ICAgICAgIGdsR2VuUmVuZGVyYnVmZmVycygxLCAmcmIpOworICAgICAgICBnbEJpbmRSZW5kZXJi
dWZmZXIoR0xfUkVOREVSQlVGRkVSLCByYik7CisgICAgICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFn
ZShHTF9SRU5ERVJCVUZGRVIsIGludGVybmFsRm9ybWF0LCAxLCAxKTsKKyAgICAgICAgZ2xEZWxl
dGVSZW5kZXJidWZmZXJzKDEsICZyYik7CisKKyAgICAgICAgcmV0dXJuIChnbEdldEVycm9yKCkg
PT0gR0xfTk9fRVJST1IpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCisgICAg
eworICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7CisKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgdmVydGV4U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQorICAgICAgICAoCisgICAgICAg
ICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisgICAgICAgICAgICBhdHRyaWJ1dGUgdmVjNCBw
b3NpdGlvbjsKKyAgICAgICAgICAgIHZhcnlpbmcgdmVjMiB0ZXhjb29yZDsKKworICAgICAgICAg
ICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbF9Qb3NpdGlv
biA9IHBvc2l0aW9uOworICAgICAgICAgICAgICAgIHRleGNvb3JkID0gKHBvc2l0aW9uLnh5ICog
MC41KSArIDAuNTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAgICAg
KAorICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworICAgICAgICAgICAgdW5pZm9y
bSBzYW1wbGVyMkQgdGV4OworICAgICAgICAgICAgdmFyeWluZyB2ZWMyIHRleGNvb3JkOworCisg
ICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGds
X0ZyYWdDb2xvciA9IHRleHR1cmUyRCh0ZXgsIHRleGNvb3JkKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgKTsKKworICAgICAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRl
clNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOworICAgICAgICBpZiAobVByb2dyYW0gPT0g
MCkKKyAgICAgICAgeworICAgICAgICAgICAgRkFJTCgpIDw8ICJzaGFkZXIgY29tcGlsYXRpb24g
ZmFpbGVkLiI7CisgICAgICAgIH0KKworICAgICAgICBtVGV4dHVyZVVuaWZvcm1Mb2NhdGlvbiA9
IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidGV4Iik7CisgICAgICAgIEVYUEVDVF9O
RSgtMSwgbVRleHR1cmVVbmlmb3JtTG9jYXRpb24pOworCisgICAgICAgIGdsR2VuVGV4dHVyZXMo
MSwgJm1UZXh0dXJlKTsKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKKyAgICB7CisgICAgICAgIGdsRGVsZXRlUHJvZ3Jh
bShtUHJvZ3JhbSk7CisgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0dXJlKTsKKwor
ICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7CisgICAgfQorCisgICAgR0x1aW50IG1Qcm9n
cmFtOworICAgIEdMdWludCBtVGV4dHVyZTsKKyAgICBHTGludCBtVGV4dHVyZVVuaWZvcm1Mb2Nh
dGlvbjsKK307CisKK2NsYXNzIERlcHRoU3RlbmNpbEZvcm1hdHNUZXN0IDogcHVibGljIERlcHRo
U3RlbmNpbEZvcm1hdHNUZXN0QmFzZQore307CisKK2NsYXNzIERlcHRoU3RlbmNpbEZvcm1hdHNU
ZXN0RVMzIDogcHVibGljIERlcHRoU3RlbmNpbEZvcm1hdHNUZXN0QmFzZQore307CisKK1RFU1Rf
UChEZXB0aFN0ZW5jaWxGb3JtYXRzVGVzdCwgRGVwdGhUZXh0dXJlKQoreworICAgIGJvb2wgc2hv
dWxkSGF2ZVRleHR1cmVTdXBwb3J0ID0gZXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfZGVwdGhf
dGV4dHVyZSIpOworICAgIEVYUEVDVF9FUShzaG91bGRIYXZlVGV4dHVyZVN1cHBvcnQsIGNoZWNr
VGV4SW1hZ2VGb3JtYXRTdXBwb3J0KEdMX0RFUFRIX0NPTVBPTkVOVCwgR0xfVU5TSUdORURfU0hP
UlQpKTsKKyAgICBFWFBFQ1RfRVEoc2hvdWxkSGF2ZVRleHR1cmVTdXBwb3J0LCBjaGVja1RleElt
YWdlRm9ybWF0U3VwcG9ydChHTF9ERVBUSF9DT01QT05FTlQsIEdMX1VOU0lHTkVEX0lOVCkpOwor
CisgICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX3N0b3JhZ2UiKSkKKyAg
ICB7CisgICAgICAgIEVYUEVDVF9FUShzaG91bGRIYXZlVGV4dHVyZVN1cHBvcnQsIGNoZWNrVGV4
U3RvcmFnZUZvcm1hdFN1cHBvcnQoR0xfREVQVEhfQ09NUE9ORU5UMTYpKTsKKyAgICAgICAgRVhQ
RUNUX0VRKHNob3VsZEhhdmVUZXh0dXJlU3VwcG9ydCwgY2hlY2tUZXhTdG9yYWdlRm9ybWF0U3Vw
cG9ydChHTF9ERVBUSF9DT01QT05FTlQzMl9PRVMpKTsKKyAgICB9Cit9CisKK1RFU1RfUChEZXB0
aFN0ZW5jaWxGb3JtYXRzVGVzdCwgUGFja2VkRGVwdGhTdGVuY2lsKQoreworICAgIC8vIEV4cGVj
dGVkIHRvIGZhaWwgaW4gRDNEOSBpZiBHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwgaXMgbm90
IHByZXNlbnQuCisgICAgLy8gRXhwZWN0ZWQgdG8gZmFpbCBpbiBEM0QxMSBpZiBHTF9PRVNfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwgb3IgR0xfQU5HTEVfZGVwdGhfdGV4dHVyZSBpcyBub3QgcHJlc2Vu
dC4KKworICAgIGJvb2wgc2hvdWxkSGF2ZVJlbmRlcmJ1ZmZlclN1cHBvcnQgPSBleHRlbnNpb25F
bmFibGVkKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAgICBFWFBFQ1RfRVEoc2hv
dWxkSGF2ZVJlbmRlcmJ1ZmZlclN1cHBvcnQsIGNoZWNrUmVuZGVyYnVmZmVyRm9ybWF0U3VwcG9y
dChHTF9ERVBUSDI0X1NURU5DSUw4X09FUykpOworCisgICAgYm9vbCBzaG91bGRIYXZlVGV4dHVy
ZVN1cHBvcnQgPSBleHRlbnNpb25FbmFibGVkKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwi
KSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uRW5hYmxl
ZCgiR0xfQU5HTEVfZGVwdGhfdGV4dHVyZSIpOworICAgIEVYUEVDVF9FUShzaG91bGRIYXZlVGV4
dHVyZVN1cHBvcnQsIGNoZWNrVGV4SW1hZ2VGb3JtYXRTdXBwb3J0KEdMX0RFUFRIX1NURU5DSUxf
T0VTLCBHTF9VTlNJR05FRF9JTlRfMjRfOF9PRVMpKTsKKworICAgIGlmIChleHRlbnNpb25FbmFi
bGVkKCJHTF9FWFRfdGV4dHVyZV9zdG9yYWdlIikpCisgICAgeworICAgICAgICBFWFBFQ1RfRVEo
c2hvdWxkSGF2ZVRleHR1cmVTdXBwb3J0LCBjaGVja1RleFN0b3JhZ2VGb3JtYXRTdXBwb3J0KEdM
X0RFUFRIMjRfU1RFTkNJTDhfT0VTKSk7CisgICAgfQorfQorCitURVNUX1AoRGVwdGhTdGVuY2ls
Rm9ybWF0c1Rlc3RFUzMsIERyYXdXaXRoRGVwdGhTdGVuY2lsKQoreworICAgIEdMdXNob3J0IGRh
dGFbMTZdOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgMTY7IGkrKykKKyAgICB7
CisgICAgICAgIGRhdGFbaV0gPSBzdGQ6Om51bWVyaWNfbGltaXRzPEdMdXNob3J0Pjo6bWF4KCk7
CisgICAgfQorICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUpOworICAg
IGdsVGV4U3RvcmFnZTJEKEdMX1RFWFRVUkVfMkQsIDEsIEdMX0RFUFRIX0NPTVBPTkVOVDE2LCA0
LCA0KTsKKyAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwgNCwgNCwg
R0xfREVQVEhfQ09NUE9ORU5ULCBHTF9VTlNJR05FRF9TSE9SVCwgZGF0YSk7CisKKyAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFS
RVNUKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdf
RklMVEVSLCBHTF9ORUFSRVNUKTsKKworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAg
Z2xVbmlmb3JtMWkobVRleHR1cmVVbmlmb3JtTG9jYXRpb24sIDApOworCisgICAgZ2xDbGVhcihH
TF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwg
MC41Zik7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIEdMdWJ5dGUgcGl4ZWxb
NF07CisgICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsICZwaXhlbCk7CisKKyAgICAvLyBPbmx5IHJlcXVpcmUgdGhlIHJlZCBhbmQgYWxwaGEgY2hh
bm5lbHMgaGF2ZSB0aGUgY29ycmVjdCB2YWx1ZXMsIHRoZSBkZXB0aCB0ZXh0dXJlIGV4dGVuc2lv
bnMKKyAgICAvLyBsZWF2ZSB0aGUgZ3JlZW4gYW5kIGJsdWUgY2hhbm5lbHMgdW5kZWZpbmVkCisg
ICAgQVNTRVJUX05FQVIoMjU1LCBwaXhlbFswXSwgMi4wKTsKKyAgICBBU1NFUlRfRVEoMjU1LCBw
aXhlbFszXSk7Cit9CisKKy8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9u
cyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0
ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCitBTkdMRV9JTlNUQU5USUFURV9URVNUKERlcHRo
U3RlbmNpbEZvcm1hdHNUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAor
ICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgRVMyX09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSk7
CitBTkdMRV9JTlNUQU5USUFURV9URVNUKERlcHRoU3RlbmNpbEZvcm1hdHNUZXN0RVMzLCBFUzNf
RDNEMTEoKSwgRVMzX09QRU5HTCgpLCBFUzNfT1BFTkdMRVMoKSk7CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRGlmZmVyZW50U3RlbmNpbE1hc2tzVGVz
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2ds
X3Rlc3RzL0RpZmZlcmVudFN0ZW5jaWxNYXNrc1Rlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9EaWZmZXJlbnRTdGVuY2ls
TWFza3NUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3OCBAQAorLy8KKy8vIENv
cHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
Ky8vIERpZmZlcmVudFN0ZW5jaWxNYXNrc1Rlc3Q6CisvLyAgIFRlc3RzIHRoZSBlcXVhbGl0eSBi
ZXR3ZWVuIHN0ZW5jaWxXcml0ZU1hc2sgYW5kIHN0ZW5jaWxCYWNrV3JpdGVNYXNrLgorLy8KKwor
I2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBhbmds
ZTsKKworbmFtZXNwYWNlCit7CitjbGFzcyBEaWZmZXJlbnRTdGVuY2lsTWFza3NUZXN0IDogcHVi
bGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgRGlmZmVyZW50U3RlbmNpbE1hc2tz
VGVzdCgpIDogbVByb2dyYW0oMCkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7
CisgICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOworICAgICAgICBzZXRDb25maWdSZWRCaXRz
KDgpOworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0Js
dWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgICAgIHNldENv
bmZpZ0RlcHRoQml0cygyNCk7CisgICAgICAgIHNldENvbmZpZ1N0ZW5jaWxCaXRzKDgpOworICAg
IH0KKworICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0
OjpTZXRVcCgpOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJj
ZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hw
IGZsb2F0OworICAgICAgICAgICAgYXR0cmlidXRlIHZlYzQgcG9zaXRpb247CisKKyAgICAgICAg
ICAgIHZvaWQgbWFpbigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xfUG9zaXRp
b24gPSBwb3NpdGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAg
ICAgKAorICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworCisgICAgICAgICAgICB2
b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9
IHZlYzQoMC4wLCAwLjAsIDEuMCwgMS4wKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKwor
ICAgICAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJh
Z21lbnRTaGFkZXJTb3VyY2UpOworICAgICAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsKKwor
ICAgICAgICBnbEVuYWJsZShHTF9TVEVOQ0lMX1RFU1QpOworICAgICAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIGdsRGlzYWJsZShHTF9TVEVOQ0lMX1RFU1QpOworICAgICAgICBpZiAobVByb2dyYW0g
IT0gMCkKKyAgICAgICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7CisKKyAgICAgICAg
QU5HTEVUZXN0OjpUZWFyRG93bigpOworICAgIH0KKworICAgIEdMdWludCBtUHJvZ3JhbTsKK307
CisKKy8vIFRlc3RzIHRoYXQgZWZmZWN0aXZlbHkgc2FtZSBmcm9udCBhbmQgYmFjayBtYXNrcyBh
cmUgbGVnYWwuCitURVNUX1AoRGlmZmVyZW50U3RlbmNpbE1hc2tzVGVzdCwgRHJhd1dpdGhTYW1l
RWZmZWN0aXZlTWFzaykKK3sKKyAgICAvLyAweDAwZmYgYW5kIDB4MDFmZiBhcmUgZWZmZWN0aXZl
bHkgMHgwMGZmIGJ5IGJlaW5nIG1hc2tlZCBieSB0aGUgY3VycmVudCBzdGVuY2lsIGJpdHMsIDgu
CisgICAgZ2xTdGVuY2lsTWFza1NlcGFyYXRlKEdMX0ZST05ULCAweDAwZmYpOworICAgIGdsU3Rl
bmNpbE1hc2tTZXBhcmF0ZShHTF9CQUNLLCAweDAxZmYpOworCisgICAgZ2xVc2VQcm9ncmFtKG1Q
cm9ncmFtKTsKKworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKwor
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworfQorCisvLyBUZXN0cyB0aGF0IGVmZmVjdGl2ZWx5
IGRpZmZlcmVudCBmcm9udCBhbmQgYmFjayBtYXNrcyBhcmUgaWxsZWdhbC4KK1RFU1RfUChEaWZm
ZXJlbnRTdGVuY2lsTWFza3NUZXN0LCBEcmF3V2l0aERpZmZlcmVudE1hc2spCit7CisgICAgZ2xT
dGVuY2lsTWFza1NlcGFyYXRlKEdMX0ZST05ULCAweDAwMDEpOworICAgIGdsU3RlbmNpbE1hc2tT
ZXBhcmF0ZShHTF9CQUNLLCAweDAwMDIpOworCisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsK
KworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgIEVYUEVD
VF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2NsYXNzIERpZmZlcmVudFN0
ZW5jaWxNYXNrc1dpdGhvdXRTdGVuY2lsQnVmZmVyVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sK
KyAgcHJvdGVjdGVkOgorICAgIERpZmZlcmVudFN0ZW5jaWxNYXNrc1dpdGhvdXRTdGVuY2lsQnVm
ZmVyVGVzdCgpIDogbVByb2dyYW0oMCkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRoKDEy
OCk7CisgICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOworICAgICAgICBzZXRDb25maWdSZWRC
aXRzKDgpOworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZp
Z0JsdWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgICAgIHNl
dENvbmZpZ0RlcHRoQml0cygwKTsKKyAgICAgICAgc2V0Q29uZmlnU3RlbmNpbEJpdHMoMCk7Cisg
ICAgfQorCisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBTkdMRVRl
c3Q6OlNldFVwKCk7CisKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291
cmNlID0gU0hBREVSX1NPVVJDRQorICAgICAgICAoCisgICAgICAgICAgICBwcmVjaXNpb24gaGln
aHAgZmxvYXQ7CisgICAgICAgICAgICBhdHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjsKKworICAgICAg
ICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbF9Qb3Np
dGlvbiA9IHBvc2l0aW9uOworICAgICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQorICAg
ICAgICAoCisgICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisKKyAgICAgICAgICAg
IHZvaWQgbWFpbigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9y
ID0gdmVjNCgwLjAsIDAuMCwgMS4wLCAxLjApOworICAgICAgICAgICAgfQorICAgICAgICApOwor
CisgICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBm
cmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOwor
CisgICAgICAgIGdsRW5hYmxlKEdMX1NURU5DSUxfVEVTVCk7CisgICAgICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgZ2xEaXNhYmxlKEdMX1NURU5DSUxfVEVTVCk7CisgICAgICAgIGlmIChtUHJvZ3Jh
bSAhPSAwKQorICAgICAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKKworICAgICAg
ICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7CisgICAgfQorCisgICAgR0x1aW50IG1Qcm9ncmFtOwor
fTsKKworLy8gVGVzdHMgdGhhdCBlZmZlY3RpdmVseSBkaWZmZXJlbnQgZnJvbnQgYW5kIGJhY2sg
bWFza3MsIHdpdGhvdXQgc3RlbmNpbCBiaXRzLCBhcmUgbGVnYWwuCitURVNUX1AoRGlmZmVyZW50
U3RlbmNpbE1hc2tzV2l0aG91dFN0ZW5jaWxCdWZmZXJUZXN0LCBEcmF3V2l0aERpZmZlcmVudE1h
c2spCit7CisgICAgZ2xTdGVuY2lsTWFza1NlcGFyYXRlKEdMX0ZST05ULCAweDAwMDEpOworICAg
IGdsU3RlbmNpbE1hc2tTZXBhcmF0ZShHTF9CQUNLLCAweDAwMDIpOworCisgICAgZ2xVc2VQcm9n
cmFtKG1Qcm9ncmFtKTsKKworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVm
KTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworfQorCisvLyBVc2UgdGhpcyB0byBzZWxl
Y3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMg
bWFqb3IgdmVyc2lvbikgdGhlc2UKKy8vIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KK0FO
R0xFX0lOU1RBTlRJQVRFX1RFU1QoRGlmZmVyZW50U3RlbmNpbE1hc2tzVGVzdCwgRVMyX0QzRDko
KSwgRVMyX0QzRDExKCksIEVTM19EM0QxMSgpLCBFUzJfT1BFTkdMKCksIEVTM19PUEVOR0woKSk7
CitBTkdMRV9JTlNUQU5USUFURV9URVNUKERpZmZlcmVudFN0ZW5jaWxNYXNrc1dpdGhvdXRTdGVu
Y2lsQnVmZmVyVGVzdCwgRVMyX0QzRDkoKSwgRVMyX0QzRDExKCksIEVTM19EM0QxMSgpLCBFUzJf
T1BFTkdMKCksIEVTM19PUEVOR0woKSk7Cit9IC8vIGFub255bW91cyBuYW1lc3BhY2UKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9EaXNjYXJkRnJhbWVi
dWZmZXJFWFRUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvZ2xfdGVzdHMvRGlzY2FyZEZyYW1lYnVmZmVyRVhUVGVzdC5jcHAJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0Rpc2Nh
cmRGcmFtZWJ1ZmZlckVYVFRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQzIEBA
CisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKwordXNpbmcg
bmFtZXNwYWNlIGFuZ2xlOworCitjbGFzcyBEaXNjYXJkRnJhbWVidWZmZXJFWFRUZXN0IDogcHVi
bGljIEFOR0xFVGVzdAoreworcHJvdGVjdGVkOgorICAgIERpc2NhcmRGcmFtZWJ1ZmZlckVYVFRl
c3QoKQorICAgIHsKKyAgICAgICAgc2V0V2luZG93V2lkdGgoMjU2KTsKKyAgICAgICAgc2V0V2lu
ZG93SGVpZ2h0KDI1Nik7CisgICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7CisgICAgICAgIHNl
dENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7CisgICAg
ICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnRGVwdGhCaXRzKDI0
KTsKKyAgICAgICAgc2V0Q29uZmlnU3RlbmNpbEJpdHMoOCk7CisgICAgfQorfTsKKworVEVTVF9Q
KERpc2NhcmRGcmFtZWJ1ZmZlckVYVFRlc3QsIEV4dGVuc2lvbkVuYWJsZWQpCit7CisgICAgRUdM
UGxhdGZvcm1QYXJhbWV0ZXJzIHBsYXRmb3JtID0gR2V0UGFyYW0oKS5lZ2xQYXJhbWV0ZXJzOwor
CisgICAgaWYgKHBsYXRmb3JtLnJlbmRlcmVyID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0Qz
RDExX0FOR0xFKQorICAgIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoZXh0ZW5zaW9uRW5hYmxlZCgi
RVhUX2Rpc2NhcmRfZnJhbWVidWZmZXIiKSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAg
ICAgIC8vIE90aGVyIHBsYXRmb3JtcyBkb24ndCBjdXJyZW50bHkgaW1wbGVtZW50IHRoaXMgZXh0
ZW5zaW9uCisgICAgICAgIEVYUEVDVF9GQUxTRShleHRlbnNpb25FbmFibGVkKCJFWFRfZGlzY2Fy
ZF9mcmFtZWJ1ZmZlciIpKTsKKyAgICB9Cit9CisKK1RFU1RfUChEaXNjYXJkRnJhbWVidWZmZXJF
WFRUZXN0LCBEZWZhdWx0RnJhbWVidWZmZXIpCit7CisgICAgaWYgKCFleHRlbnNpb25FbmFibGVk
KCJFWFRfZGlzY2FyZF9mcmFtZWJ1ZmZlciIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8
ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBFWFRfZGlzY2FyZF9mcmFtZWJ1ZmZlciBpcyBub3QgYXZh
aWxhYmxlLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
VGhlc2Ugc2hvdWxkIHN1Y2NlZWQgb24gdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIKKyAgICBjb25z
dCBHTGVudW0gZGlzY2FyZHMxW10gPSB7IEdMX0NPTE9SX0VYVCB9OworICAgIGdsRGlzY2FyZEZy
YW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSLCAxLCBkaXNjYXJkczEpOworICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworCisgICAgY29uc3QgR0xlbnVtIGRpc2NhcmRzMltdID0geyBHTF9ERVBU
SF9FWFQgfTsKKyAgICBnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUiwgMSwg
ZGlzY2FyZHMyKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGNvbnN0IEdMZW51
bSBkaXNjYXJkczNbXSA9IHsgR0xfU1RFTkNJTF9FWFQgfTsKKyAgICBnbERpc2NhcmRGcmFtZWJ1
ZmZlckVYVChHTF9GUkFNRUJVRkZFUiwgMSwgZGlzY2FyZHMzKTsKKyAgICBFWFBFQ1RfR0xfTk9f
RVJST1IoKTsKKworICAgIGNvbnN0IEdMZW51bSBkaXNjYXJkczRbXSA9IHsgR0xfU1RFTkNJTF9F
WFQsIEdMX0NPTE9SX0VYVCwgR0xfREVQVEhfRVhUIH07CisgICAgZ2xEaXNjYXJkRnJhbWVidWZm
ZXJFWFQoR0xfRlJBTUVCVUZGRVIsIDMsIGRpc2NhcmRzNCk7CisgICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7CisKKyAgICAvLyBUaGVzZSBzaG91bGQgZmFpbCBvbiB0aGUgZGVmYXVsdCBmcmFtZWJ1
ZmZlcgorICAgIGNvbnN0IEdMZW51bSBkaXNjYXJkczVbXSA9IHsgR0xfQ09MT1JfQVRUQUNITUVO
VDAgfTsKKyAgICBnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUiwgMSwgZGlz
Y2FyZHM1KTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKKworICAgIGNv
bnN0IEdMZW51bSBkaXNjYXJkczZbXSA9IHsgR0xfREVQVEhfQVRUQUNITUVOVCB9OworICAgIGds
RGlzY2FyZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSLCAxLCBkaXNjYXJkczYpOworICAg
IEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOworCisgICAgY29uc3QgR0xlbnVtIGRp
c2NhcmRzN1tdID0geyBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQgfTsKKyAgICBnbERpc2NhcmRGcmFt
ZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUiwgMSwgZGlzY2FyZHM3KTsKKyAgICBFWFBFQ1RfR0xf
RVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKK30KKworVEVTVF9QKERpc2NhcmRGcmFtZWJ1ZmZlckVY
VFRlc3QsIE5vbkRlZmF1bHRGcmFtZWJ1ZmZlcikKK3sKKyAgICBpZiAoIWV4dGVuc2lvbkVuYWJs
ZWQoIkVYVF9kaXNjYXJkX2ZyYW1lYnVmZmVyIikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQg
PDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEVYVF9kaXNjYXJkX2ZyYW1lYnVmZmVyIGlzIG5vdCBh
dmFpbGFibGUuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBH
THVpbnQgdGV4MkQ7CisgICAgR0x1aW50IGZyYW1lYnVmZmVyOworCisgICAgLy8gQ3JlYXRlIGEg
YmFzaWMgb2ZmLXNjcmVlbiBmcmFtZWJ1ZmZlcgorICAgIC8vIERvbid0IGNyZWF0ZSBhIGRlcHRo
L3N0ZW5jaWwgdGV4dHVyZSwgdG8gZW5zdXJlIHRoYXQgYWxzbyB3b3JrcyBjb3JyZWN0bHkKKyAg
ICBnbEdlblRleHR1cmVzKDEsICZ0ZXgyRCk7CisgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJmZy
YW1lYnVmZmVyKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleDJEKTsKKyAg
ICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgZnJhbWVidWZmZXIpOworICAgIGds
VGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0IsIGdldFdpbmRvd1dpZHRoKCksIGdl
dFdpbmRvd0hlaWdodCgpLCAwLCBHTF9SR0IsIEdMX1VOU0lHTkVEX0JZVEUsIE5VTEwpOworICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdM
X0xJTkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
TUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZS
QU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgdGV4MkQsIDAp
OworICAgIEFTU0VSVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOworCisgICAgLy8gVGhlc2Ugc2hvdWxk
IGZhaWwgb24gdGhlIG5vbi1kZWZhdWx0IGZyYW1lYnVmZmVyCisgICAgY29uc3QgR0xlbnVtIGRp
c2NhcmRzMVtdID0geyBHTF9DT0xPUl9FWFQgfTsKKyAgICBnbERpc2NhcmRGcmFtZWJ1ZmZlckVY
VChHTF9GUkFNRUJVRkZFUiwgMSwgZGlzY2FyZHMxKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xf
SU5WQUxJRF9FTlVNKTsKKworICAgIGNvbnN0IEdMZW51bSBkaXNjYXJkczJbXSA9IHsgR0xfREVQ
VEhfRVhUIH07CisgICAgZ2xEaXNjYXJkRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVIsIDEs
IGRpc2NhcmRzMik7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7CisKKyAg
ICBjb25zdCBHTGVudW0gZGlzY2FyZHMzW10gPSB7IEdMX1NURU5DSUxfRVhUIH07CisgICAgZ2xE
aXNjYXJkRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVIsIDEsIGRpc2NhcmRzMyk7CisgICAg
RVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7CisKKyAgICBjb25zdCBHTGVudW0gZGlz
Y2FyZHM0W10gPSB7IEdMX1NURU5DSUxfRVhULCBHTF9DT0xPUl9FWFQsIEdMX0RFUFRIX0VYVCB9
OworICAgIGdsRGlzY2FyZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSLCAzLCBkaXNjYXJk
czQpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOworCisgICAgLy8gVGhl
c2Ugc2hvdWxkIHN1Y2NlZWQgb24gdGhlIG5vbi1kZWZhdWx0IGZyYW1lYnVmZmVyCisgICAgY29u
c3QgR0xlbnVtIGRpc2NhcmRzNVtdID0geyBHTF9DT0xPUl9BVFRBQ0hNRU5UMCB9OworICAgIGds
RGlzY2FyZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSLCAxLCBkaXNjYXJkczUpOworICAg
IEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgY29uc3QgR0xlbnVtIGRpc2NhcmRzNltdID0g
eyBHTF9ERVBUSF9BVFRBQ0hNRU5UIH07CisgICAgZ2xEaXNjYXJkRnJhbWVidWZmZXJFWFQoR0xf
RlJBTUVCVUZGRVIsIDEsIGRpc2NhcmRzNik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisK
KyAgICBjb25zdCBHTGVudW0gZGlzY2FyZHM3W10gPSB7IEdMX1NURU5DSUxfQVRUQUNITUVOVCB9
OworICAgIGdsRGlzY2FyZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSLCAxLCBkaXNjYXJk
czcpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworfQorCisvLyBVc2UgdGhpcyB0byBzZWxl
Y3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMg
bWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgorQU5HTEVf
SU5TVEFOVElBVEVfVEVTVChEaXNjYXJkRnJhbWVidWZmZXJFWFRUZXN0LAorICAgICAgICAgICAg
ICAgICAgICAgICBFUzJfRDNEOSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8zKCksCisgICAgICAgICAg
ICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09Q
RU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0RyYXdCdWZmZXJzVGVzdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0RyYXdCdWZmZXJz
VGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsX3Rlc3RzL0RyYXdCdWZmZXJzVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw1MTcgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgor
I2luY2x1ZGUgInRlc3RfdXRpbHMvZ2xfcmFpaS5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7
CisKK2NsYXNzIERyYXdCdWZmZXJzVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJvdGVj
dGVkOgorICAgIERyYXdCdWZmZXJzVGVzdCgpCisgICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0
aCgxMjgpOworICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKKyAgICAgICAgc2V0Q29uZmln
UmVkQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAgICBzZXRD
b25maWdCbHVlQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAgICAg
ICBzZXRDb25maWdEZXB0aEJpdHMoMjQpOworICAgICAgICBtTWF4RHJhd0J1ZmZlcnMgPSAwOwor
ICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCisgICAgeworICAgICAgICBBTkdMRVRl
c3Q6OlNldFVwKCk7CisKKyAgICAgICAgLy8gVGhpcyB0ZXN0IHNlZW1zIHRvIGZhaWwgb24gYW4g
blZpZGlhIG1hY2hpbmUgd2hlbiB0aGUgd2luZG93IGlzIGhpZGRlbgorICAgICAgICBTZXRXaW5k
b3dWaXNpYmxlKHRydWUpOworCisgICAgICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZtRkJPKTsK
KyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GQk8pOworCisgICAg
ICAgIGdsR2VuVGV4dHVyZXMoNCwgbVRleHR1cmVzKTsKKworICAgICAgICBmb3IgKHNpemVfdCB0
ZXhJbmRleCA9IDA7IHRleEluZGV4IDwgQXJyYXlTaXplKG1UZXh0dXJlcyk7IHRleEluZGV4Kysp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRl
eHR1cmVzW3RleEluZGV4XSk7CisgICAgICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8y
RCwgMCwgR0xfUkdCQSwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIDAsIEdM
X1JHQkEsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgbnVsbHB0
cik7CisgICAgICAgIH0KKworICAgICAgICBHTGZsb2F0IGRhdGFbXSA9CisgICAgICAgIHsKKyAg
ICAgICAgICAgIC0xLjBmLCAxLjBmLAorICAgICAgICAgICAgLTEuMGYsIC0yLjBmLAorICAgICAg
ICAgICAgMi4wZiwgMS4wZgorICAgICAgICB9OworCisgICAgICAgIGdsR2VuQnVmZmVycygxLCAm
bUJ1ZmZlcik7CisgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1CdWZmZXIp
OworICAgICAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBzaXplb2YoR0xmbG9hdCkg
KiA2LCBkYXRhLCBHTF9TVEFUSUNfRFJBVyk7CisKKyAgICAgICAgZ2xHZXRJbnRlZ2VydihHTF9N
QVhfRFJBV19CVUZGRVJTLCAmbU1heERyYXdCdWZmZXJzKTsKKworICAgICAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQorICAgIHsK
KyAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1GQk8pOworICAgICAgICBnbERlbGV0
ZVRleHR1cmVzKDQsIG1UZXh0dXJlcyk7CisgICAgICAgIGdsRGVsZXRlQnVmZmVycygxLCAmbUJ1
ZmZlcik7CisKKyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOworICAgIH0KKworICAgIHZv
aWQgc2V0dXBNUlRQcm9ncmFtRVNTTDMoYm9vbCBidWZmZXJFbmFibGVkWzhdLCBHTHVpbnQgKnBy
b2dyYW1PdXQpCisgICAgeworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJT
b3VyY2UgPQorICAgICAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAgICAgImlu
IHZlYzQgcG9zaXRpb247XG4iCisgICAgICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAg
ICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uO1xuIgorICAgICAgICAgICAgIn1cbiI7
CisKKyAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gc3Ryc3RyOworCisgICAgICAgIHN0cnN0ciA8
PCAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICAgICAgICAgICAicHJlY2lzaW9uIGhpZ2hw
IGZsb2F0O1xuIjsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpbmRleCA9IDA7IGluZGV4
IDwgODsgaW5kZXgrKykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGJ1ZmZlckVuYWJsZWRb
aW5kZXhdKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN0cnN0ciA8PCAibGF5b3V0
KGxvY2F0aW9uID0gIiA8PCBpbmRleCA8PCAiKSAiCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICJvdXQgdmVjNCB2YWx1ZSIgPDwgaW5kZXggPDwgIjtcbiI7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICBzdHJzdHIgPDwgInZvaWQgbWFpbigpXG4iCisgICAgICAgICAgICAg
ICAgICAie1xuIjsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpbmRleCA9IDA7IGluZGV4
IDwgODsgaW5kZXgrKykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGJ1ZmZlckVuYWJsZWRb
aW5kZXhdKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCByID0g
KGluZGV4ICsgMSkgJiAxOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBnID0gKGluZGV4
ICsgMSkgJiAyOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBiID0gKGluZGV4ICsgMSkg
JiA0OworCisgICAgICAgICAgICAgICAgc3Ryc3RyIDw8ICIgICAgdmFsdWUiIDw8IGluZGV4IDw8
ICIgPSB2ZWM0KCIKKyAgICAgICAgICAgICAgICAgICAgICAgPDwgciA8PCAiLjAsICIgPDwgZyA8
PCAiLjAsICIKKyAgICAgICAgICAgICAgICAgICAgICAgPDwgYiA8PCAiLjAsIDEuMCk7XG4iOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgc3Ryc3RyIDw8ICJ9XG4iOworCisg
ICAgICAgICpwcm9ncmFtT3V0ID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBz
dHJzdHIuc3RyKCkpOworICAgICAgICBpZiAoKnByb2dyYW1PdXQgPT0gMCkKKyAgICAgICAgewor
ICAgICAgICAgICAgRkFJTCgpIDw8ICJzaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLiI7CisgICAg
ICAgIH0KKworICAgICAgICBnbFVzZVByb2dyYW0oKnByb2dyYW1PdXQpOworCisgICAgICAgIEdM
aW50IGxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbigqcHJvZ3JhbU91dCwgInBvc2l0aW9u
Iik7CisgICAgICAgIEFTU0VSVF9ORShsb2NhdGlvbiwgLTEpOworICAgICAgICBnbEJpbmRCdWZm
ZXIoR0xfQVJSQVlfQlVGRkVSLCBtQnVmZmVyKTsKKyAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2lu
dGVyKGxvY2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDgsIE5VTEwpOworICAgICAgICBn
bEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGxvY2F0aW9uKTsKKyAgICB9CisKKyAgICB2b2lkIHNl
dHVwTVJUUHJvZ3JhbUVTU0wxKGJvb2wgYnVmZmVyRW5hYmxlZFs4XSwgR0x1aW50ICpwcm9ncmFt
T3V0KQorICAgIHsKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNl
ID0KKyAgICAgICAgICAgICJhdHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjtcbiIKKyAgICAgICAgICAg
ICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRp
b247XG4iCisgICAgICAgICAgICAifVxuIjsKKworICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBz
dHJzdHI7CisKKyAgICAgICAgc3Ryc3RyIDw8ICIjZXh0ZW5zaW9uIEdMX0VYVF9kcmF3X2J1ZmZl
cnMgOiBlbmFibGVcbiIKKyAgICAgICAgICAgICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7
XG4iCisgICAgICAgICAgICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgICAgICAgICAg
ICJ7XG4iOworCisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGluZGV4ID0gMDsgaW5kZXggPCA4
OyBpbmRleCsrKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoYnVmZmVyRW5hYmxlZFtpbmRl
eF0pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHIgPSAoaW5k
ZXggKyAxKSAmIDE7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGcgPSAoaW5kZXggKyAx
KSAmIDI7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGIgPSAoaW5kZXggKyAxKSAmIDQ7
CisKKyAgICAgICAgICAgICAgICBzdHJzdHIgPDwgIiAgICBnbF9GcmFnRGF0YVsiIDw8IGluZGV4
IDw8ICJdID0gdmVjNCgiCisgICAgICAgICAgICAgICAgICAgIDw8IHIgPDwgIi4wLCAiIDw8IGcg
PDwgIi4wLCAiCisgICAgICAgICAgICAgICAgICAgIDw8IGIgPDwgIi4wLCAxLjApO1xuIjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHN0cnN0ciA8PCAifVxuIjsKKworICAg
ICAgICAqcHJvZ3JhbU91dCA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgc3Ry
c3RyLnN0cigpKTsKKyAgICAgICAgaWYgKCpwcm9ncmFtT3V0ID09IDApCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEZBSUwoKSA8PCAic2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZC4iOworICAgICAg
ICB9CisKKyAgICAgICAgZ2xVc2VQcm9ncmFtKCpwcm9ncmFtT3V0KTsKKworICAgICAgICBHTGlu
dCBsb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24oKnByb2dyYW1PdXQsICJwb3NpdGlvbiIp
OworICAgICAgICBBU1NFUlRfTkUobG9jYXRpb24sIC0xKTsKKyAgICAgICAgZ2xCaW5kQnVmZmVy
KEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZlcik7CisgICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRl
cihsb2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCA4LCBOVUxMKTsKKyAgICAgICAgZ2xF
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheShsb2NhdGlvbik7CisgICAgfQorCisgICAgdm9pZCBzZXR1
cE1SVFByb2dyYW0oYm9vbCBidWZmZXJFbmFibGVkWzhdLCBHTHVpbnQgKnByb2dyYW1PdXQpCisg
ICAgeworICAgICAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPT0gMykKKyAgICAgICAg
eworICAgICAgICAgICAgc2V0dXBNUlRQcm9ncmFtRVNTTDMoYnVmZmVyRW5hYmxlZCwgcHJvZ3Jh
bU91dCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBB
U1NFUlRfRVEoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCksIDIpOworICAgICAgICAgICAgc2V0dXBN
UlRQcm9ncmFtRVNTTDEoYnVmZmVyRW5hYmxlZCwgcHJvZ3JhbU91dCk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBzdGF0aWMgR0xDb2xvciBnZXRDb2xvckZvckluZGV4KHVuc2lnbmVkIGludCBp
bmRleCkKKyAgICB7CisgICAgICAgIEdMdWJ5dGUgciA9ICgoKGluZGV4ICsgMSkgJiAxKSA+IDAp
ID8gMjU1IDogMDsKKyAgICAgICAgR0x1Ynl0ZSBnID0gKCgoaW5kZXggKyAxKSAmIDIpID4gMCkg
PyAyNTUgOiAwOworICAgICAgICBHTHVieXRlIGIgPSAoKChpbmRleCArIDEpICYgNCkgPiAwKSA/
IDI1NSA6IDA7CisgICAgICAgIHJldHVybiBHTENvbG9yKHIsIGcsIGIsIDI1NXUpOworICAgIH0K
KworICAgIHZvaWQgdmVyaWZ5QXR0YWNobWVudDJEKHVuc2lnbmVkIGludCBpbmRleCwgR0x1aW50
IHRleHR1cmVOYW1lLCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCkKKyAgICB7CisgICAgICAg
IGZvciAoR0xpbnQgY29sb3JBdHRhY2htZW50ID0gMDsgY29sb3JBdHRhY2htZW50IDwgbU1heERy
YXdCdWZmZXJzOyBjb2xvckF0dGFjaG1lbnQrKykKKyAgICAgICAgeworICAgICAgICAgICAgZ2xG
cmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAg
KyBjb2xvckF0dGFjaG1lbnQsIEdMX1RFWFRVUkVfMkQsIDAsIDApOworICAgICAgICB9CisKKyAg
ICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRU
QUNITUVOVDAsIHRhcmdldCwgdGV4dHVyZU5hbWUsIGxldmVsKTsKKworICAgICAgICBFWFBFQ1Rf
UElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8g
MiwgZ2V0Q29sb3JGb3JJbmRleChpbmRleCkpOworICAgIH0KKworICAgIHZvaWQgdmVyaWZ5QXR0
YWNobWVudExheWVyKHVuc2lnbmVkIGludCBpbmRleCwgR0x1aW50IHRleHR1cmUsIEdMaW50IGxl
dmVsLCBHTGludCBsYXllcikKKyAgICB7CisgICAgICAgIGZvciAoR0xpbnQgY29sb3JBdHRhY2ht
ZW50ID0gMDsgY29sb3JBdHRhY2htZW50IDwgbU1heERyYXdCdWZmZXJzOyBjb2xvckF0dGFjaG1l
bnQrKykKKyAgICAgICAgeworICAgICAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9G
UkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAgKyBjb2xvckF0dGFjaG1lbnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1RFWFRVUkVfMkQsIDAsIDApOworICAg
ICAgICB9CisKKyAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmVMYXllcihHTF9GUkFNRUJVRkZF
UiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIHRleHR1cmUsIGxldmVsLCBsYXllcik7CisKKyAgICAg
ICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dI
ZWlnaHQoKSAvIDIsIGdldENvbG9yRm9ySW5kZXgoaW5kZXgpKTsKKyAgICB9CisKKyAgICBHTHVp
bnQgbUZCTzsKKyAgICBHTHVpbnQgbVRleHR1cmVzWzRdOworICAgIEdMdWludCBtQnVmZmVyOwor
ICAgIEdMaW50IG1NYXhEcmF3QnVmZmVyczsKK307CisKKy8vIFZlcmlmeSB0aGF0IEdMX01BWF9E
UkFXX0JVRkZFUlMgcmV0dXJucyB0aGUgZXhwZWN0ZWQgdmFsdWVzIGZvciBEM0QxMQorVEVTVF9Q
KERyYXdCdWZmZXJzVGVzdCwgVmVyaWZ5RDNETGltaXRzKQoreworICAgIEVHTFBsYXRmb3JtUGFy
YW1ldGVycyBwbGF0Zm9ybSA9IEdldFBhcmFtKCkuZWdsUGFyYW1ldGVyczsKKyAgICBpZiAocGxh
dGZvcm0ucmVuZGVyZXIgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUpCisg
ICAgeworICAgICAgICBpZiAocGxhdGZvcm0ubWFqb3JWZXJzaW9uID09IDkgJiYgcGxhdGZvcm0u
bWlub3JWZXJzaW9uID09IDMpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIEQzRDExIEZlYXR1
cmUgTGV2ZWwgOV8zIHN1cHBvcnRzIDQgZHJhdyBidWZmZXJzCisgICAgICAgICAgICBBU1NFUlRf
RVEobU1heERyYXdCdWZmZXJzLCA0KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAg
IHsKKyAgICAgICAgICAgIC8vIEQzRDExIEZlYXR1cmUgTGV2ZWwgMTBfMCsgc3VwcG9ydHMgOCBk
cmF3IGJ1ZmZlcnMKKyAgICAgICAgICAgIEFTU0VSVF9FUShtTWF4RHJhd0J1ZmZlcnMsIDgpOwor
ICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAi
VGVzdCBza2lwcGVkIGZvciBub24tRDNEMTEgcmVuZGVyZXJzLiIgPDwgc3RkOjplbmRsOworICAg
ICAgICByZXR1cm47CisgICAgfQorfQorCitURVNUX1AoRHJhd0J1ZmZlcnNUZXN0LCBHYXBzKQor
eworICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMgJiYgIWV4dGVuc2lvbkVuYWJs
ZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAi
VGVzdCBza2lwcGVkIGJlY2F1c2UgRVMzIG9yIEdMX0VYVF9kcmF3X2J1ZmZlcnMgaXMgbm90IGF2
YWlsYWJsZS4iCisgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoSXNXaW5kb3dzKCkgJiYgSXNBTUQoKSAmJiBJc0Rlc2t0b3BP
cGVuR0woKSkKKyAgICB7CisgICAgICAgIC8vIFRPRE8oeW5vdmlrb3YpOiBJbnZlc3RpZ2F0ZSB0
aGUgZmFpbHVyZSAoaHR0cDovL2FuZ2xlYnVnLmNvbS8xNTM1KQorICAgICAgICBzdGQ6OmNvdXQg
PDwgIlRlc3QgZGlzYWJsZWQgb24gV2luZG93cyBBTUQgT3BlbkdMLiIgPDwgc3RkOjplbmRsOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJE
LCBtVGV4dHVyZXNbMF0pOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZG
RVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQxLCBHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0sIDAp
OworCisgICAgYm9vbCBmbGFnc1s4XSA9IHsgZmFsc2UsIHRydWUgfTsKKworICAgIEdMdWludCBw
cm9ncmFtOworICAgIHNldHVwTVJUUHJvZ3JhbShmbGFncywgJnByb2dyYW0pOworCisgICAgY29u
c3QgR0xlbnVtIGJ1ZnNbXSA9CisgICAgeworICAgICAgICBHTF9OT05FLAorICAgICAgICBHTF9D
T0xPUl9BVFRBQ0hNRU5UMQorICAgIH07CisgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0pOworICAg
IGdsRHJhd0J1ZmZlcnNFWFQoMiwgYnVmcyk7CisgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xF
UywgMCwgMyk7CisKKyAgICB2ZXJpZnlBdHRhY2htZW50MkQoMSwgbVRleHR1cmVzWzBdLCBHTF9U
RVhUVVJFXzJELCAwKTsKKworICAgIGdsRGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKK30KKworVEVT
VF9QKERyYXdCdWZmZXJzVGVzdCwgRmlyc3RBbmRMYXN0KQoreworICAgIGlmIChnZXRDbGllbnRN
YWpvclZlcnNpb24oKSA8IDMgJiYgIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZl
cnMiKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2Ug
RVMzIG9yIEdMX0VYVF9kcmF3X2J1ZmZlcnMgaXMgbm90IGF2YWlsYWJsZS4iCisgICAgICAgICAg
ICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
SXNXaW5kb3dzKCkgJiYgSXNBTUQoKSAmJiBJc0Rlc2t0b3BPcGVuR0woKSkKKyAgICB7CisgICAg
ICAgIC8vIFRPRE8oeW5vdmlrb3YpOiBJbnZlc3RpZ2F0ZSB0aGUgZmFpbHVyZSAoaHR0cHM6Ly9h
bmdsZWJ1Zy5jb20vMTUzMykKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVkIG9u
IFdpbmRvd3MgQU1EIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdKTsKKyAg
ICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hN
RU5UMCwgR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdLCAwKTsKKworICAgIGdsQmluZFRleHR1
cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzFdKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVy
ZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMywgR0xfVEVYVFVSRV8yRCwg
bVRleHR1cmVzWzFdLCAwKTsKKworICAgIGJvb2wgZmxhZ3NbOF0gPSB7IHRydWUsIGZhbHNlLCBm
YWxzZSwgdHJ1ZSB9OworCisgICAgR0x1aW50IHByb2dyYW07CisgICAgc2V0dXBNUlRQcm9ncmFt
KGZsYWdzLCAmcHJvZ3JhbSk7CisKKyAgICBjb25zdCBHTGVudW0gYnVmc1tdID0KKyAgICB7Cisg
ICAgICAgIEdMX0NPTE9SX0FUVEFDSE1FTlQwLAorICAgICAgICBHTF9OT05FLAorICAgICAgICBH
TF9OT05FLAorICAgICAgICBHTF9DT0xPUl9BVFRBQ0hNRU5UMworICAgIH07CisKKyAgICBnbFVz
ZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgZ2xEcmF3QnVmZmVyc0VYVCg0LCBidWZzKTsKKyAgICBn
bERyYXdBcnJheXMoR0xfVFJJQU5HTEVTLCAwLCAzKTsKKworICAgIHZlcmlmeUF0dGFjaG1lbnQy
RCgwLCBtVGV4dHVyZXNbMF0sIEdMX1RFWFRVUkVfMkQsIDApOworICAgIHZlcmlmeUF0dGFjaG1l
bnQyRCgzLCBtVGV4dHVyZXNbMV0sIEdMX1RFWFRVUkVfMkQsIDApOworCisgICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7CisKKyAgICBnbERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Cit9CisKK1RFU1Rf
UChEcmF3QnVmZmVyc1Rlc3QsIEZpcnN0SGFsZk5VTEwpCit7CisgICAgaWYgKGdldENsaWVudE1h
am9yVmVyc2lvbigpIDwgMyAmJiAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVy
cyIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBF
UzMgb3IgR0xfRVhUX2RyYXdfYnVmZmVycyBpcyBub3QgYXZhaWxhYmxlLiIKKyAgICAgICAgICAg
ICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChJ
c1dpbmRvd3MoKSAmJiBJc0FNRCgpICYmIElzRGVza3RvcE9wZW5HTCgpKQorICAgIHsKKyAgICAg
ICAgLy8gVE9ETyh5bm92aWtvdik6IEludmVzdGlnYXRlIHRoZSBmYWlsdXJlIChodHRwczovL2Fu
Z2xlYnVnLmNvbS8xNTMzKQorICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3QgZGlzYWJsZWQgb24g
V2luZG93cyBBTUQgT3BlbkdMLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgYm9vbCBmbGFnc1s4XSA9IHsgZmFsc2UgfTsKKyAgICBHTGVudW0gYnVmc1s4XSA9
IHsgR0xfTk9ORSB9OworCisgICAgR0x1aW50IGhhbGZNYXhEcmF3QnVmZmVycyA9IHN0YXRpY19j
YXN0PEdMdWludD4obU1heERyYXdCdWZmZXJzKSAvIDI7CisKKyAgICBmb3IgKEdMdWludCB0ZXhJ
bmRleCA9IDA7IHRleEluZGV4IDwgaGFsZk1heERyYXdCdWZmZXJzOyB0ZXhJbmRleCsrKQorICAg
IHsKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbdGV4SW5k
ZXhdKTsKKyAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xf
Q09MT1JfQVRUQUNITUVOVDAgKyBoYWxmTWF4RHJhd0J1ZmZlcnMgKyB0ZXhJbmRleCwgR0xfVEVY
VFVSRV8yRCwgbVRleHR1cmVzW3RleEluZGV4XSwgMCk7CisgICAgICAgIGZsYWdzW3RleEluZGV4
ICsgaGFsZk1heERyYXdCdWZmZXJzXSA9IHRydWU7CisgICAgICAgIGJ1ZnNbdGV4SW5kZXggKyBo
YWxmTWF4RHJhd0J1ZmZlcnNdID0gR0xfQ09MT1JfQVRUQUNITUVOVDAgKyBoYWxmTWF4RHJhd0J1
ZmZlcnMgKyB0ZXhJbmRleDsKKyAgICB9CisKKyAgICBHTHVpbnQgcHJvZ3JhbTsKKyAgICBzZXR1
cE1SVFByb2dyYW0oZmxhZ3MsICZwcm9ncmFtKTsKKworICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFt
KTsKKyAgICBnbERyYXdCdWZmZXJzRVhUKG1NYXhEcmF3QnVmZmVycywgYnVmcyk7CisgICAgZ2xE
cmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMCwgMyk7CisKKyAgICBmb3IgKEdMdWludCB0ZXhJbmRl
eCA9IDA7IHRleEluZGV4IDwgaGFsZk1heERyYXdCdWZmZXJzOyB0ZXhJbmRleCsrKQorICAgIHsK
KyAgICAgICAgdmVyaWZ5QXR0YWNobWVudDJEKHRleEluZGV4ICsgaGFsZk1heERyYXdCdWZmZXJz
LCBtVGV4dHVyZXNbdGV4SW5kZXhdLCBHTF9URVhUVVJFXzJELCAwKTsKKyAgICB9CisKKyAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsRGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKK30K
KworVEVTVF9QKERyYXdCdWZmZXJzVGVzdCwgVW53cml0dGVuT3V0cHV0VmFyaWFibGVzU2hvdWxk
Tm90Q3Jhc2gpCit7CisgICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAmJiAhZXh0
ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVycyIpKQorICAgIHsKKyAgICAgICAgc3Rk
Ojpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBFUzMgb3IgR0xfRVhUX2RyYXdfYnVmZmVy
cyBpcyBub3QgYXZhaWxhYmxlLiIKKyAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEJpbmQgdHdvIHJlbmRlciB0YXJnZXRzIGJ1
dCB1c2UgYSBzaGFkZXIgd2hpY2ggd3JpdGVzIG9ubHkgdG8gdGhlIGZpcnN0IG9uZS4KKyAgICBn
bEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7CisgICAgZ2xGcmFtZWJ1
ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RF
WFRVUkVfMkQsIG1UZXh0dXJlc1swXSwgMCk7CisKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfMkQsIG1UZXh0dXJlc1sxXSk7CisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFN
RUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDEsIEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sx
XSwgMCk7CisKKyAgICBib29sIGZsYWdzWzhdID0geyB0cnVlLCBmYWxzZSB9OworCisgICAgR0x1
aW50IHByb2dyYW07CisgICAgc2V0dXBNUlRQcm9ncmFtKGZsYWdzLCAmcHJvZ3JhbSk7CisKKyAg
ICBjb25zdCBHTGVudW0gYnVmc1tdID0KKyAgICB7CisgICAgICAgIEdMX0NPTE9SX0FUVEFDSE1F
TlQwLAorICAgICAgICBHTF9DT0xPUl9BVFRBQ0hNRU5UMSwKKyAgICAgICAgR0xfTk9ORSwKKyAg
ICAgICAgR0xfTk9ORSwKKyAgICB9OworCisgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0pOworICAg
IGdsRHJhd0J1ZmZlcnNFWFQoNCwgYnVmcyk7CisKKyAgICAvLyBUaGlzIGNhbGwgc2hvdWxkIG5v
dCBjcmFzaCB3aGVuIHdlIGR5bmFtaWNhbGx5IGdlbmVyYXRlIHRoZSBITFNMIGNvZGUuCisgICAg
Z2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMCwgMyk7CisKKyAgICB2ZXJpZnlBdHRhY2htZW50
MkQoMCwgbVRleHR1cmVzWzBdLCBHTF9URVhUVVJFXzJELCAwKTsKKworICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOworCisgICAgZ2xEZWxldGVQcm9ncmFtKHByb2dyYW0pOworfQorCisvLyBUZXN0
IHRoYXQgYmluZGluZyBtdWx0aXBsZSBsYXllcnMgb2YgYSAzRCB0ZXh0dXJlIHdvcmtzIGNvcnJl
Y3RseQorVEVTVF9QKERyYXdCdWZmZXJzVGVzdCwgM0RUZXh0dXJlcykKK3sKKyAgICBpZiAoZ2V0
Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJU
ZXN0IHNraXBwZWQgYmVjYXVzZSBFUzMgaXMgbm90IGF2YWlsYWJsZS4iIDw8IHN0ZDo6ZW5kbDsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdMVGV4dHVyZSB0ZXh0dXJlOworICAgIGds
QmluZFRleHR1cmUoR0xfVEVYVFVSRV8zRCwgdGV4dHVyZS5nZXQoKSk7CisgICAgZ2xUZXhJbWFn
ZTNEKEdMX1RFWFRVUkVfM0QsIDAsIEdMX1JHQkEsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRv
d0hlaWdodCgpLCBnZXRXaW5kb3dXaWR0aCgpLAorICAgICAgICAgICAgICAgICAwLCBHTF9SR0JB
LCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKKworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJl
TGF5ZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCB0ZXh0dXJlLmdldCgp
LCAwLCAwKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdMX0ZSQU1FQlVGRkVSLCBH
TF9DT0xPUl9BVFRBQ0hNRU5UMSwgdGV4dHVyZS5nZXQoKSwgMCwgMSk7CisgICAgZ2xGcmFtZWJ1
ZmZlclRleHR1cmVMYXllcihHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDIsIHRl
eHR1cmUuZ2V0KCksIDAsIDIpOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0xfRlJB
TUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQzLCB0ZXh0dXJlLmdldCgpLCAwLCAzKTsKKwor
ICAgIGJvb2wgZmxhZ3NbOF0gPSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2V9OworCisg
ICAgR0x1aW50IHByb2dyYW07CisgICAgc2V0dXBNUlRQcm9ncmFtKGZsYWdzLCAmcHJvZ3JhbSk7
CisKKyAgICBjb25zdCBHTGVudW0gYnVmc1tdID0geworICAgICAgICBHTF9DT0xPUl9BVFRBQ0hN
RU5UMCwgR0xfQ09MT1JfQVRUQUNITUVOVDEsIEdMX0NPTE9SX0FUVEFDSE1FTlQyLCBHTF9DT0xP
Ul9BVFRBQ0hNRU5UMywKKyAgICB9OworCisgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0pOworICAg
IGdsRHJhd0J1ZmZlcnNFWFQoNCwgYnVmcyk7CisKKyAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5H
TEVTLCAwLCAzKTsKKworICAgIHZlcmlmeUF0dGFjaG1lbnRMYXllcigwLCB0ZXh0dXJlLmdldCgp
LCAwLCAwKTsKKyAgICB2ZXJpZnlBdHRhY2htZW50TGF5ZXIoMSwgdGV4dHVyZS5nZXQoKSwgMCwg
MSk7CisgICAgdmVyaWZ5QXR0YWNobWVudExheWVyKDIsIHRleHR1cmUuZ2V0KCksIDAsIDIpOwor
ICAgIHZlcmlmeUF0dGFjaG1lbnRMYXllcigzLCB0ZXh0dXJlLmdldCgpLCAwLCAzKTsKKworICAg
IEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xEZWxldGVQcm9ncmFtKHByb2dyYW0pOwor
fQorCisvLyBUZXN0IHRoYXQgYmluZGluZyBtdWx0aXBsZSBsYXllcnMgb2YgYSAyRCBhcnJheSB0
ZXh0dXJlIHdvcmtzIGNvcnJlY3RseQorVEVTVF9QKERyYXdCdWZmZXJzVGVzdCwgMkRBcnJheVRl
eHR1cmVzKQoreworICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCisgICAgewor
ICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEVTMyBpcyBub3QgYXZh
aWxhYmxlLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR0xU
ZXh0dXJlIHRleHR1cmU7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJEX0FSUkFZLCB0
ZXh0dXJlLmdldCgpKTsKKyAgICBnbFRleEltYWdlM0QoR0xfVEVYVFVSRV8yRF9BUlJBWSwgMCwg
R0xfUkdCQSwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksCisgICAgICAgICAg
ICAgICAgIGdldFdpbmRvd1dpZHRoKCksIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51
bGxwdHIpOworCisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmVMYXllcihHTF9GUkFNRUJVRkZFUiwg
R0xfQ09MT1JfQVRUQUNITUVOVDAsIHRleHR1cmUuZ2V0KCksIDAsIDApOworICAgIGdsRnJhbWVi
dWZmZXJUZXh0dXJlTGF5ZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQxLCB0
ZXh0dXJlLmdldCgpLCAwLCAxKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdMX0ZS
QU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMiwgdGV4dHVyZS5nZXQoKSwgMCwgMik7Cisg
ICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmVMYXllcihHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRU
QUNITUVOVDMsIHRleHR1cmUuZ2V0KCksIDAsIDMpOworCisgICAgYm9vbCBmbGFnc1s4XSA9IHt0
cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZX07CisKKyAgICBHTHVpbnQgcHJvZ3JhbTsKKyAg
ICBzZXR1cE1SVFByb2dyYW0oZmxhZ3MsICZwcm9ncmFtKTsKKworICAgIGNvbnN0IEdMZW51bSBi
dWZzW10gPSB7CisgICAgICAgIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9DT0xPUl9BVFRBQ0hN
RU5UMSwgR0xfQ09MT1JfQVRUQUNITUVOVDIsIEdMX0NPTE9SX0FUVEFDSE1FTlQzLAorICAgIH07
CisKKyAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgZ2xEcmF3QnVmZmVyc0VYVCg0LCBi
dWZzKTsKKworICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDMpOworCisgICAgdmVy
aWZ5QXR0YWNobWVudExheWVyKDAsIHRleHR1cmUuZ2V0KCksIDAsIDApOworICAgIHZlcmlmeUF0
dGFjaG1lbnRMYXllcigxLCB0ZXh0dXJlLmdldCgpLCAwLCAxKTsKKyAgICB2ZXJpZnlBdHRhY2ht
ZW50TGF5ZXIoMiwgdGV4dHVyZS5nZXQoKSwgMCwgMik7CisgICAgdmVyaWZ5QXR0YWNobWVudExh
eWVyKDMsIHRleHR1cmUuZ2V0KCksIDAsIDMpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
CisKKyAgICBnbERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Cit9CisKKy8vIFVzZSB0aGlzIHRvIHNl
bGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xF
UyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCitBTkdM
RV9JTlNUQU5USUFURV9URVNUKERyYXdCdWZmZXJzVGVzdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgRVMyX0QzRDExKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19EM0QxMSgpLAorICAg
ICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzMoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgRVMyX09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKCks
CisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpLAorICAgICAgICAgICAgICAg
ICAgICAgICBFUzNfT1BFTkdMRVMoKSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvZ2xfdGVzdHMvRHJhd0VsZW1lbnRzVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0RyYXdFbGVtZW50c1Rlc3Qu
Y3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9n
bF90ZXN0cy9EcmF3RWxlbWVudHNUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIy
NiBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKy8vIERyYXdFbGVtZW50c1Rlc3Q6CisvLyAgIFRlc3RzIGZvciBpbmRl
eGVkIGRyYXdzLgorLy8KKworI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNlCit7CisKK2NsYXNzIERyYXdFbGVtZW50
c1Rlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBEcmF3RWxlbWVu
dHNUZXN0KCkgOiBtUHJvZ3JhbSgwdSkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRoKDY0
KTsKKyAgICAgICAgc2V0V2luZG93SGVpZ2h0KDY0KTsKKyAgICAgICAgc2V0Q29uZmlnUmVkQml0
cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAgIH0KKworICAgIH5EcmF3
RWxlbWVudHNUZXN0KCkKKyAgICB7CisgICAgICAgIGZvciAoR0x1aW50IGluZGV4QnVmZmVyIDog
bUluZGV4QnVmZmVycykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGluZGV4QnVmZmVyICE9
IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZp
bmRleEJ1ZmZlcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmb3IgKEdM
dWludCB2ZXJ0ZXhBcnJheSA6IG1WZXJ0ZXhBcnJheXMpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmICh2ZXJ0ZXhBcnJheSAhPSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGds
RGVsZXRlVmVydGV4QXJyYXlzKDEsICZ2ZXJ0ZXhBcnJheSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICBmb3IgKEdMdWludCB2ZXJ0ZXhCdWZmZXIgOiBtVmVydGV4QnVmZmVy
cykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHZlcnRleEJ1ZmZlciAhPSAwKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGdsRGVsZXRlQnVmZmVycygxLCAmdmVydGV4QnVmZmVy
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChtUHJvZ3JhbSAhPSAw
dSkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHN0ZDo6dmVjdG9yPEdMdWludD4gbUluZGV4QnVmZmVyczsK
KyAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IG1WZXJ0ZXhBcnJheXM7CisgICAgc3RkOjp2ZWN0b3I8
R0x1aW50PiBtVmVydGV4QnVmZmVyczsKKyAgICBHTHVpbnQgbVByb2dyYW07Cit9OworCisvLyBU
ZXN0IGEgc3RhdGUgZGVzeW5jIHRoYXQgY2FuIG9jY3VyIHdoZW4gdXNpbmcgYSBzdHJlYW1pbmcg
aW5kZXggYnVmZmVyIGluIEdMIGluIGNvbmNlcnQgd2l0aAorLy8gZGVsZXRpbmcgdGhlIGFwcGxp
ZWQgaW5kZXggYnVmZmVyLgorVEVTVF9QKERyYXdFbGVtZW50c1Rlc3QsIERlbGV0aW5nQWZ0ZXJT
dHJlYW1pbmdJbmRleGVzKQoreworICAgIC8vIEluaXQgcHJvZ3JhbQorICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZ2ZXJ0ZXhTaGFkZXIgPQorICAgICAgICAiYXR0cmlidXRlIHZlYzIgcG9zaXRpb247
XG4iCisgICAgICAgICJhdHRyaWJ1dGUgdmVjMiB0ZXN0RmxhZztcbiIKKyAgICAgICAgInZhcnlp
bmcgdmVjMiB2X2RhdGE7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIg
IGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMCwgMSk7XG4iCisgICAgICAgICIgIHZfZGF0
YSA9IHRlc3RGbGFnO1xuIgorICAgICAgICAifSI7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAm
ZnJhZ21lbnRTaGFkZXIgPQorICAgICAgICAidmFyeWluZyBoaWdocCB2ZWMyIHZfZGF0YTtcbiIK
KyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdmVj
NCh2X2RhdGEsIDAsIDEpO1xuIgorICAgICAgICAifSI7CisKKyAgICBtUHJvZ3JhbSA9IENvbXBp
bGVQcm9ncmFtKHZlcnRleFNoYWRlciwgZnJhZ21lbnRTaGFkZXIpOworICAgIEFTU0VSVF9ORSgw
dSwgbVByb2dyYW0pOworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisKKyAgICBHTGludCBw
b3NpdGlvbkxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgInBvc2l0aW9u
Iik7CisgICAgQVNTRVJUX05FKC0xLCBwb3NpdGlvbkxvY2F0aW9uKTsKKworICAgIEdMaW50IHRl
c3RGbGFnTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAidGVzdEZsYWci
KTsKKyAgICBBU1NFUlRfTkUoLTEsIHRlc3RGbGFnTG9jYXRpb24pOworCisgICAgbUluZGV4QnVm
ZmVycy5yZXNpemUoM3UpOworICAgIGdsR2VuQnVmZmVycygzLCAmbUluZGV4QnVmZmVyc1swXSk7
CisKKyAgICBtVmVydGV4QXJyYXlzLnJlc2l6ZSgyKTsKKyAgICBnbEdlblZlcnRleEFycmF5cygy
LCAmbVZlcnRleEFycmF5c1swXSk7CisKKyAgICBtVmVydGV4QnVmZmVycy5yZXNpemUoMik7Cisg
ICAgZ2xHZW5CdWZmZXJzKDIsICZtVmVydGV4QnVmZmVyc1swXSk7CisKKyAgICBzdGQ6OnZlY3Rv
cjxHTHVpbnQ+IGluZGV4RGF0YVsyXTsKKyAgICBpbmRleERhdGFbMF0ucHVzaF9iYWNrKDApOwor
ICAgIGluZGV4RGF0YVswXS5wdXNoX2JhY2soMSk7CisgICAgaW5kZXhEYXRhWzBdLnB1c2hfYmFj
aygyKTsKKyAgICBpbmRleERhdGFbMF0ucHVzaF9iYWNrKDIpOworICAgIGluZGV4RGF0YVswXS5w
dXNoX2JhY2soMyk7CisgICAgaW5kZXhEYXRhWzBdLnB1c2hfYmFjaygwKTsKKworICAgIGluZGV4
RGF0YVsxXSA9IGluZGV4RGF0YVswXTsKKyAgICBmb3IgKEdMdWludCAmaXRlbSA6IGluZGV4RGF0
YVsxXSkKKyAgICB7CisgICAgICAgIGl0ZW0gKz0gNHU7CisgICAgfQorCisgICAgc3RkOjp2ZWN0
b3I8R0xmbG9hdD4gcG9zaXRpb25EYXRhOworICAgIC8vIHF1YWQgdmVydHMKKyAgICBwb3NpdGlv
bkRhdGEucHVzaF9iYWNrKC0xLjBmKTsKKyAgICBwb3NpdGlvbkRhdGEucHVzaF9iYWNrKDEuMGYp
OworICAgIHBvc2l0aW9uRGF0YS5wdXNoX2JhY2soLTEuMGYpOworICAgIHBvc2l0aW9uRGF0YS5w
dXNoX2JhY2soLTEuMGYpOworICAgIHBvc2l0aW9uRGF0YS5wdXNoX2JhY2soMS4wZik7CisgICAg
cG9zaXRpb25EYXRhLnB1c2hfYmFjaygtMS4wZik7CisgICAgcG9zaXRpb25EYXRhLnB1c2hfYmFj
aygxLjBmKTsKKyAgICBwb3NpdGlvbkRhdGEucHVzaF9iYWNrKDEuMGYpOworCisgICAgLy8gUmVw
ZWF0IHBvc2l0aW9uIGRhdGEKKyAgICBwb3NpdGlvbkRhdGEucHVzaF9iYWNrKC0xLjBmKTsKKyAg
ICBwb3NpdGlvbkRhdGEucHVzaF9iYWNrKDEuMGYpOworICAgIHBvc2l0aW9uRGF0YS5wdXNoX2Jh
Y2soLTEuMGYpOworICAgIHBvc2l0aW9uRGF0YS5wdXNoX2JhY2soLTEuMGYpOworICAgIHBvc2l0
aW9uRGF0YS5wdXNoX2JhY2soMS4wZik7CisgICAgcG9zaXRpb25EYXRhLnB1c2hfYmFjaygtMS4w
Zik7CisgICAgcG9zaXRpb25EYXRhLnB1c2hfYmFjaygxLjBmKTsKKyAgICBwb3NpdGlvbkRhdGEu
cHVzaF9iYWNrKDEuMGYpOworCisgICAgc3RkOjp2ZWN0b3I8R0xmbG9hdD4gdGVzdEZsYWdEYXRh
OworICAgIC8vIHJlZAorICAgIHRlc3RGbGFnRGF0YS5wdXNoX2JhY2soMS4wZik7CisgICAgdGVz
dEZsYWdEYXRhLnB1c2hfYmFjaygwLjBmKTsKKyAgICB0ZXN0RmxhZ0RhdGEucHVzaF9iYWNrKDEu
MGYpOworICAgIHRlc3RGbGFnRGF0YS5wdXNoX2JhY2soMC4wZik7CisgICAgdGVzdEZsYWdEYXRh
LnB1c2hfYmFjaygxLjBmKTsKKyAgICB0ZXN0RmxhZ0RhdGEucHVzaF9iYWNrKDAuMGYpOworICAg
IHRlc3RGbGFnRGF0YS5wdXNoX2JhY2soMS4wZik7CisgICAgdGVzdEZsYWdEYXRhLnB1c2hfYmFj
aygwLjBmKTsKKworICAgIC8vIGdyZWVuCisgICAgdGVzdEZsYWdEYXRhLnB1c2hfYmFjaygwLjBm
KTsKKyAgICB0ZXN0RmxhZ0RhdGEucHVzaF9iYWNrKDEuMGYpOworICAgIHRlc3RGbGFnRGF0YS5w
dXNoX2JhY2soMC4wZik7CisgICAgdGVzdEZsYWdEYXRhLnB1c2hfYmFjaygxLjBmKTsKKyAgICB0
ZXN0RmxhZ0RhdGEucHVzaF9iYWNrKDAuMGYpOworICAgIHRlc3RGbGFnRGF0YS5wdXNoX2JhY2so
MS4wZik7CisgICAgdGVzdEZsYWdEYXRhLnB1c2hfYmFjaygwLjBmKTsKKyAgICB0ZXN0RmxhZ0Rh
dGEucHVzaF9iYWNrKDEuMGYpOworCisgICAgZ2xCaW5kQnVmZmVyKEdMX0VMRU1FTlRfQVJSQVlf
QlVGRkVSLCBtSW5kZXhCdWZmZXJzWzBdKTsKKyAgICBnbEJ1ZmZlckRhdGEoR0xfRUxFTUVOVF9B
UlJBWV9CVUZGRVIsIHNpemVvZihHTHVpbnQpICogaW5kZXhEYXRhWzBdLnNpemUoKSwgJmluZGV4
RGF0YVswXVswXSwKKyAgICAgICAgICAgICAgICAgR0xfU1RBVElDX0RSQVcpOworCisgICAgZ2xC
aW5kQnVmZmVyKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBtSW5kZXhCdWZmZXJzWzJdKTsKKyAg
ICBnbEJ1ZmZlckRhdGEoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIHNpemVvZihHTHVpbnQpICog
aW5kZXhEYXRhWzBdLnNpemUoKSwgJmluZGV4RGF0YVswXVswXSwKKyAgICAgICAgICAgICAgICAg
R0xfU1RBVElDX0RSQVcpOworCisgICAgZ2xCaW5kQnVmZmVyKEdMX0VMRU1FTlRfQVJSQVlfQlVG
RkVSLCBtSW5kZXhCdWZmZXJzWzFdKTsKKyAgICBnbEJ1ZmZlckRhdGEoR0xfRUxFTUVOVF9BUlJB
WV9CVUZGRVIsIHNpemVvZihHTHVpbnQpICogaW5kZXhEYXRhWzFdLnNpemUoKSwgJmluZGV4RGF0
YVsxXVswXSwKKyAgICAgICAgICAgICAgICAgR0xfU1RBVElDX0RSQVcpOworCisgICAgLy8gSW5p
dGlhbGl6ZSBmaXJzdCB2ZXJ0ZXggYXJyYXkgd2l0aCBzZWNvbmQgaW5kZXggYnVmZmVyCisgICAg
Z2xCaW5kVmVydGV4QXJyYXkobVZlcnRleEFycmF5c1swXSk7CisKKyAgICBnbEJpbmRCdWZmZXIo
R0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG1JbmRleEJ1ZmZlcnNbMV0pOworICAgIGdsQmluZEJ1
ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1WZXJ0ZXhCdWZmZXJzWzBdKTsKKyAgICBnbEJ1ZmZlckRh
dGEoR0xfQVJSQVlfQlVGRkVSLCBzaXplb2YoR0xmbG9hdCkgKiBwb3NpdGlvbkRhdGEuc2l6ZSgp
LCAmcG9zaXRpb25EYXRhWzBdLAorICAgICAgICAgICAgICAgICBHTF9TVEFUSUNfRFJBVyk7Cisg
ICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0aW9uTG9jYXRpb24sIDIsIEdMX0ZMT0FULCBH
TF9GQUxTRSwgc2l6ZW9mKEdMZmxvYXQpICogMiwgbnVsbHB0cik7CisgICAgZ2xFbmFibGVWZXJ0
ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxvY2F0aW9uKTsKKworICAgIGdsQmluZEJ1ZmZlcihHTF9B
UlJBWV9CVUZGRVIsIG1WZXJ0ZXhCdWZmZXJzWzFdKTsKKyAgICBnbEJ1ZmZlckRhdGEoR0xfQVJS
QVlfQlVGRkVSLCBzaXplb2YoR0xmbG9hdCkgKiB0ZXN0RmxhZ0RhdGEuc2l6ZSgpLCAmdGVzdEZs
YWdEYXRhWzBdLAorICAgICAgICAgICAgICAgICBHTF9TVEFUSUNfRFJBVyk7CisgICAgZ2xWZXJ0
ZXhBdHRyaWJQb2ludGVyKHRlc3RGbGFnTG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwg
c2l6ZW9mKEdMZmxvYXQpICogMiwgbnVsbHB0cik7CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheSh0ZXN0RmxhZ0xvY2F0aW9uKTsKKworICAgIC8vIEluaXRpYWxpemUgc2Vjb25kIHZlcnRl
eCBhcnJheSB3aXRoIGZpcnN0IGluZGV4IGJ1ZmZlcgorICAgIGdsQmluZFZlcnRleEFycmF5KG1W
ZXJ0ZXhBcnJheXNbMV0pOworCisgICAgZ2xCaW5kQnVmZmVyKEdMX0VMRU1FTlRfQVJSQVlfQlVG
RkVSLCBtSW5kZXhCdWZmZXJzWzBdKTsKKworICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZG
RVIsIG1WZXJ0ZXhCdWZmZXJzWzBdKTsKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRp
b25Mb2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCBzaXplb2YoR0xmbG9hdCkgKiAyLCBu
dWxscHRyKTsKKyAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHBvc2l0aW9uTG9jYXRpb24p
OworCisgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbVZlcnRleEJ1ZmZlcnNbMV0p
OworICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcih0ZXN0RmxhZ0xvY2F0aW9uLCAyLCBHTF9GTE9B
VCwgR0xfRkFMU0UsIHNpemVvZihHTGZsb2F0KSAqIDIsIG51bGxwdHIpOworICAgIGdsRW5hYmxl
VmVydGV4QXR0cmliQXJyYXkodGVzdEZsYWdMb2NhdGlvbik7CisKKyAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKKworICAgIGdsQmluZFZlcnRleEFycmF5KG1WZXJ0ZXhBcnJheXNbMF0pOworICAg
IGdsRHJhd0VsZW1lbnRzKEdMX1RSSUFOR0xFUywgNiwgR0xfVU5TSUdORURfSU5ULCBudWxscHRy
KTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMCwgMjU1LCAwLCAyNTUpOworCisgICAgZ2xC
aW5kVmVydGV4QXJyYXkobVZlcnRleEFycmF5c1sxXSk7CisgICAgZ2xEcmF3RWxlbWVudHMoR0xf
VFJJQU5HTEVTLCA2LCBHTF9VTlNJR05FRF9JTlQsIG51bGxwdHIpOworICAgIEVYUEVDVF9QSVhF
TF9FUSgwLCAwLCAyNTUsIDAsIDAsIDI1NSk7CisKKyAgICBnbEJpbmRWZXJ0ZXhBcnJheShtVmVy
dGV4QXJyYXlzWzBdKTsKKyAgICBnbERyYXdFbGVtZW50cyhHTF9UUklBTkdMRVMsIDYsIEdMX1VO
U0lHTkVEX0lOVCwgbnVsbHB0cik7CisgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDAsIDI1NSwg
MCwgMjU1KTsKKworICAgIC8vIFRyaWdnZXIgdGhlIGJ1ZyBoZXJlLgorICAgIGdsRGVsZXRlQnVm
ZmVycygxLCAmbUluZGV4QnVmZmVyc1syXSk7CisKKyAgICBnbERyYXdFbGVtZW50cyhHTF9UUklB
TkdMRVMsIDYsIEdMX1VOU0lHTkVEX0lOVCwgbnVsbHB0cik7CisgICAgRVhQRUNUX1BJWEVMX0VR
KDAsIDAsIDAsIDI1NSwgMCwgMjU1KTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworfQor
CitBTkdMRV9JTlNUQU5USUFURV9URVNUKERyYXdFbGVtZW50c1Rlc3QsIEVTM19PUEVOR0woKSwg
RVMzX09QRU5HTEVTKCkpOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsX3Rlc3RzL0VUQ1RleHR1cmVUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRVRDVGV4dHVyZVRlc3QuY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9F
VENUZXh0dXJlVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NSBAQAorLy8KKy8v
IENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKy8vIEVUQ1RleHR1cmVUZXN0OgorLy8gICBUZXN0cyBmb3IgRVRDIGxvc3N5IGRlY29kZSBm
b3JtYXRzLgorLy8KKworI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNlCit7CisKK2NsYXNzIEVUQ1RleHR1cmVUZXN0
IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgRVRDVGV4dHVyZVRlc3Qo
KSA6IG1UZXh0dXJlKDB1KQorICAgIHsKKyAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKKyAg
ICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7CisgICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7
CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQmx1ZUJp
dHMoOCk7CisgICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKKyAgICB9CisKKyAgICB2b2lk
IFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKKwor
ICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtVGV4dHVyZSk7CisgICAgICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbVRleHR1cmUpOworCisgICAgICAgIEFOR0xF
VGVzdDo6VGVhckRvd24oKTsKKyAgICB9CisKKyAgICBHTHVpbnQgbVRleHR1cmU7Cit9OworCisv
LyBUZXN0cyBhIHRleHR1cmUgd2l0aCBFVEMxIGxvc3N5IGRlY29kZSBmb3JtYXQKK1RFU1RfUChF
VENUZXh0dXJlVGVzdCwgRVRDMVZhbGlkYXRpb24pCit7CisgICAgYm9vbCBzdXBwb3J0ZWQgPSBl
eHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9sb3NzeV9ldGNfZGVjb2RlIik7CisKKyAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlKTsKKworICAgIEdMdWJ5dGUgcGl4ZWxb
OF0gPSB7IDB4MCwgMHgwLCAweGY4LCAweDIsIDB4NDMsIDB4ZmYsIDB4NCwgMHgxMiB9OworICAg
IGdsQ29tcHJlc3NlZFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfRVRDMV9SR0I4X0xP
U1NZX0RFQ09ERV9BTkdMRSwgNCwgNCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVvZihwaXhlbCksIHBpeGVsKTsKKyAgICBpZiAoc3VwcG9ydGVkKQorICAgIHsKKyAgICAgICAg
RVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2Uy
RChHTF9URVhUVVJFXzJELCAwLCAwLCAwLCA0LCA0LCBHTF9FVEMxX1JHQjhfTE9TU1lfREVDT0RF
X0FOR0xFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihwaXhlbCks
IHBpeGVsKTsKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKworICAgICAgICBnbENv
bXByZXNzZWRUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDEsIEdMX0VUQzFfUkdCOF9MT1NTWV9E
RUNPREVfQU5HTEUsIDIsIDIsIDAsCisgICAgICAgICAgICBzaXplb2YocGl4ZWwpLCBwaXhlbCk7
CisgICAgICAgIGdsQ29tcHJlc3NlZFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMiwgR0xfRVRD
MV9SR0I4X0xPU1NZX0RFQ09ERV9BTkdMRSwgMSwgMSwgMCwKKyAgICAgICAgICAgIHNpemVvZihw
aXhlbCksIHBpeGVsKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgRVhQRUNUX0dM
X0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7CisgICAgfQorfQorCitBTkdMRV9JTlNUQU5USUFURV9U
RVNUKEVUQ1RleHR1cmVUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAor
ICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgRVMyX0QzRDExX0ZMOV8zKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19EM0QxMSgp
LAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCisgICAgICAgICAgICAgICAg
ICAgICAgIEVTM19PUEVOR0woKSk7Cit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRmVuY2VTeW5jVGVzdHMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90
ZXN0cy9GZW5jZVN5bmNUZXN0cy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0ZlbmNlU3luY1Rlc3RzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDI4MiBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgInRlc3RfdXRpbHMv
QU5HTEVUZXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKworY2xhc3MgRmVuY2VOVlRl
c3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBGZW5jZU5WVGVzdCgp
CisgICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOworICAgICAgICBzZXRXaW5kb3dI
ZWlnaHQoMTI4KTsKKyAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKKyAgICAgICAgc2V0Q29u
ZmlnR3JlZW5CaXRzKDgpOworICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKKyAgICAgICAg
c2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAgICAgICBzZXRDb25maWdEZXB0aEJpdHMoMjQpOwor
ICAgIH0KK307CisKK2NsYXNzIEZlbmNlU3luY1Rlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7Cisg
IHByb3RlY3RlZDoKKyAgICBGZW5jZVN5bmNUZXN0KCkKKyAgICB7CisgICAgICAgIHNldFdpbmRv
d1dpZHRoKDEyOCk7CisgICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOworICAgICAgICBzZXRD
b25maWdSZWRCaXRzKDgpOworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAg
IHNldENvbmZpZ0JsdWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Cisg
ICAgICAgIHNldENvbmZpZ0RlcHRoQml0cygyNCk7CisgICAgfQorfTsKKworLy8gRmVuY2VOViBv
YmplY3RzIHNob3VsZCByZXNwb25kIGZhbHNlIHRvIGdsSXNGZW5jZU5WIHVudGlsIHRoZXkndmUg
YmVlbiBzZXQKK1RFU1RfUChGZW5jZU5WVGVzdCwgSXNGZW5jZSkKK3sKKyAgICBpZiAoIWV4dGVu
c2lvbkVuYWJsZWQoIkdMX05WX2ZlbmNlIikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwg
IlRlc3Qgc2tpcHBlZCBkdWUgdG8gbWlzc2luZyBHTF9OVl9mZW5jZSBleHRlbnNpb24uIiA8PCBz
dGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHTHVpbnQgZmVuY2UgPSAw
OworICAgIGdsR2VuRmVuY2VzTlYoMSwgJmZlbmNlKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1Io
KTsKKworICAgIEVYUEVDVF9FUShHTF9GQUxTRSwgZ2xJc0ZlbmNlTlYoZmVuY2UpKTsKKyAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsU2V0RmVuY2VOVihmZW5jZSwgR0xfQUxMX0NP
TVBMRVRFRF9OVik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBFWFBFQ1RfRVEo
R0xfVFJVRSwgZ2xJc0ZlbmNlTlYoZmVuY2UpKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
K30KKworLy8gVGVzdCBlcnJvciBjYXNlcyBmb3IgYWxsIEZlbmNlTlYgZnVuY3Rpb25zCitURVNU
X1AoRmVuY2VOVlRlc3QsIEVycm9ycykKK3sKKyAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdM
X05WX2ZlbmNlIikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBk
dWUgdG8gbWlzc2luZyBHTF9OVl9mZW5jZSBleHRlbnNpb24uIiA8PCBzdGQ6OmVuZGw7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBnbFRlc3RGZW5jZU5WIHNob3VsZCBzdGlsbCBy
ZXR1cm4gVFJVRSBmb3IgYW4gaW52YWxpZCBmZW5jZSBhbmQgZ2VuZXJhdGUgYW4gSU5WQUxJRF9P
UEVSQVRJT04KKyAgICBFWFBFQ1RfRVEoR0xfVFJVRSwgZ2xUZXN0RmVuY2VOVigxMCkpOworICAg
IEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7CisKKyAgICBHTHVpbnQgZmVu
Y2UgPSAyMDsKKworICAgIC8vIGdsR2VuRmVuY2VzTlYgc2hvdWxkIGdlbmVyYXRlIElOVkFMSURf
VkFMVUUgZm9yIGEgbmVnYXRpdmUgbiBhbmQgbm90IHdyaXRlIGFueXRoaW5nIHRvIHRoZSBmZW5j
ZXMgcG9pbnRlcgorICAgIGdsR2VuRmVuY2VzTlYoLTEsICZmZW5jZSk7CisgICAgRVhQRUNUX0dM
X0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOworICAgIEVYUEVDVF9FUSgyMHUsIGZlbmNlKTsKKwor
ICAgIC8vIEdlbmVyYXRlIGEgcmVhbCBmZW5jZQorICAgIGdsR2VuRmVuY2VzTlYoMSwgJmZlbmNl
KTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIGdsVGVzdEZlbmNlTlYgc2hv
dWxkIHN0aWxsIHJldHVybiBUUlVFIGZvciBhIGZlbmNlIHRoYXQgaXMgbm90IHN0YXJ0ZWQgYW5k
IGdlbmVyYXRlIGFuIElOVkFMSURfT1BFUkFUSU9OCisgICAgRVhQRUNUX0VRKEdMX1RSVUUsIGds
VGVzdEZlbmNlTlYoZmVuY2UpKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOworCisgICAgLy8gZ2xHZXRGZW5jZWl2TlYgc2hvdWxkIGdlbmVyYXRlIGFuIElOVkFM
SURfT1BFUkFUSU9OIGZvciBhbiBpbnZhbGlkIG9yIHVuc3RhcnRlZCBmZW5jZSBhbmQgbm90IG1v
ZGlmeSB0aGUgcGFyYW1zCisgICAgR0xpbnQgcmVzdWx0ID0gMzA7CisgICAgZ2xHZXRGZW5jZWl2
TlYoMTAsIEdMX0ZFTkNFX1NUQVRVU19OViwgJnJlc3VsdCk7CisgICAgRVhQRUNUX0dMX0VSUk9S
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICBFWFBFQ1RfRVEoMzAsIHJlc3VsdCk7CisKKyAg
ICBnbEdldEZlbmNlaXZOVihmZW5jZSwgR0xfRkVOQ0VfU1RBVFVTX05WLCAmcmVzdWx0KTsKKyAg
ICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIEVYUEVDVF9FUSgz
MCwgcmVzdWx0KTsKKworICAgIC8vIGdsU2V0RmVuY2VOViBzaG91bGQgZ2VuZXJhdGUgYW4gZXJy
b3IgZm9yIGFueSBjb25kaXRpb24gdGhhdCBpcyBub3QgQUxMX0NPTVBMRVRFRF9OVgorICAgIGds
U2V0RmVuY2VOVihmZW5jZSwgMCk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5V
TSk7CisKKyAgICAvLyBnbFNldEZlbmNlTlYgc2hvdWxkIGdlbmVyYXRlIElOVkFMSURfT1BFUkFU
SU9OIGZvciBhbiBpbnZhbGlkIGZlbmNlCisgICAgZ2xTZXRGZW5jZU5WKDEwLCBHTF9BTExfQ09N
UExFVEVEX05WKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwor
fQorCisvLyBUZXN0IHRoYXQgYmFzaWMgdXNhZ2Ugd29ya3MgYW5kIGRvZXNuJ3QgZ2VuZXJhdGUg
ZXJyb3JzIG9yIGNyYXNoCitURVNUX1AoRmVuY2VOVlRlc3QsIEJhc2ljT3BlcmF0aW9ucykKK3sK
KyAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX05WX2ZlbmNlIikpCisgICAgeworICAgICAg
ICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBkdWUgdG8gbWlzc2luZyBHTF9OVl9mZW5jZSBl
eHRlbnNpb24uIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBn
bENsZWFyQ29sb3IoMS4wZiwgMC4wZiwgMS4wZiwgMS4wZik7CisKKyAgICBHTHVpbnQgZmVuY2Vz
WzIwXSA9IHsgMCB9OworICAgIGdsR2VuRmVuY2VzTlYoc3RhdGljX2Nhc3Q8R0xzaXplaT4oQXJy
YXlTaXplKGZlbmNlcykpLCBmZW5jZXMpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisg
ICAgZm9yIChHTHVpbnQgZmVuY2UgOiBmZW5jZXMpCisgICAgeworICAgICAgICBnbFNldEZlbmNl
TlYoZmVuY2UsIEdMX0FMTF9DT01QTEVURURfTlYpOworCisgICAgICAgIGdsQ2xlYXIoR0xfQ09M
T1JfQlVGRkVSX0JJVCk7CisgICAgfQorCisgICAgZ2xGaW5pc2goKTsKKworICAgIGZvciAoR0x1
aW50IGZlbmNlIDogZmVuY2VzKQorICAgIHsKKyAgICAgICAgR0xpbnQgc3RhdHVzID0gMDsKKyAg
ICAgICAgZ2xHZXRGZW5jZWl2TlYoZmVuY2UsIEdMX0ZFTkNFX1NUQVRVU19OViwgJnN0YXR1cyk7
CisgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgICAgIC8vIEZlbmNlIHNob3Vs
ZCBiZSBjb21wbGV0ZSBub3cgdGhhdCBGaW5pc2ggaGFzIGJlZW4gY2FsbGVkCisgICAgICAgIEVY
UEVDVF9FUShHTF9UUlVFLCBzdGF0dXMpOworICAgIH0KKworICAgIEVYUEVDVF9QSVhFTF9FUSgw
LCAwLCAyNTUsIDAsIDI1NSwgMjU1KTsKK30KKworLy8gRmVuY2VTeW5jIG9iamVjdHMgc2hvdWxk
IHJlc3BvbmQgdHJ1ZSB0byBJc1N5bmMgYWZ0ZXIgdGhleSBhcmUgY3JlYXRlZCB3aXRoIGdsRmVu
Y2VTeW5jCitURVNUX1AoRmVuY2VTeW5jVGVzdCwgSXNTeW5jKQoreworICAgIEdMc3luYyBzeW5j
ID0gZ2xGZW5jZVN5bmMoR0xfU1lOQ19HUFVfQ09NTUFORFNfQ09NUExFVEUsIDApOworICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOworCisgICAgRVhQRUNUX0VRKEdMX1RSVUUsIGdsSXNTeW5jKHN5
bmMpKTsKKyAgICBFWFBFQ1RfRVEoR0xfRkFMU0UsIGdsSXNTeW5jKHJlaW50ZXJwcmV0X2Nhc3Q8
R0xzeW5jPig0MCkpKTsKK30KKworLy8gVGVzdCBlcnJvciBjYXNlcyBmb3IgYWxsIEZlbmNlU3lu
YyBmdW5jdGlvbgorVEVTVF9QKEZlbmNlU3luY1Rlc3QsIEVycm9ycykKK3sKKyAgICBHTHN5bmMg
c3luYyA9IGdsRmVuY2VTeW5jKEdMX1NZTkNfR1BVX0NPTU1BTkRTX0NPTVBMRVRFLCAwKTsKKwor
ICAgIC8vIERlbGV0ZVN5bmMgZ2VuZXJhdGVzIElOVkFMSURfVkFMVUUgd2hlbiB0aGUgc3luYyBp
cyBub3QgdmFsaWQKKyAgICBnbERlbGV0ZVN5bmMocmVpbnRlcnByZXRfY2FzdDxHTHN5bmM+KDIw
KSk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOworCisgICAgLy8gZ2xG
ZW5jZVN5bmMgZ2VuZXJhdGVzIEdMX0lOVkFMSURfRU5VTSBpZiB0aGUgY29uZGl0aW9uIGlzIG5v
dCBHTF9TWU5DX0dQVV9DT01NQU5EU19DT01QTEVURQorICAgIEVYUEVDVF9FUSgwLCBnbEZlbmNl
U3luYygwLCAwKSk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7CisKKyAg
ICAvLyBnbEZlbmNlU3luYyBnZW5lcmF0ZXMgR0xfSU5WQUxJRF9FTlVNIGlmIHRoZSBmbGFncyBp
cyBub3QgMAorICAgIEVYUEVDVF9FUSgwLCBnbEZlbmNlU3luYyhHTF9TWU5DX0dQVV9DT01NQU5E
U19DT01QTEVURSwgMTApKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7
CisKKyAgICAvLyBnbENsaWVudFdhaXRTeW5jIGdlbmVyYXRlcyBHTF9JTlZBTElEX1ZBTFVFIGFu
ZCByZXR1cm5zIEdMX1dBSVRfRkFJTEVEIGlmIGZsYWdzIGNvbnRhaW5zIG1vcmUgdGhhbiBqdXN0
IEdMX1NZTkNfRkxVU0hfQ09NTUFORFNfQklUCisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9XQUlU
X0ZBSUxFRCwgZ2xDbGllbnRXYWl0U3luYyhzeW5jLCBHTF9TWU5DX0ZMVVNIX0NPTU1BTkRTX0JJ
VCB8IDB4MiwgMCkpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKKwor
ICAgIC8vIGdsQ2xpZW50V2FpdFN5bmMgZ2VuZXJhdGVzIEdMX0lOVkFMSURfVkFMVUUgYW5kIHJl
dHVybnMgR0xfV0FJVF9GQUlMRUQgaWYgdGhlIHN5bmMgb2JqZWN0IGlzIG5vdCB2YWxpZAorICAg
IEVYUEVDVF9HTEVOVU1fRVEoR0xfV0FJVF9GQUlMRUQsIGdsQ2xpZW50V2FpdFN5bmMocmVpbnRl
cnByZXRfY2FzdDxHTHN5bmM+KDMwKSwgR0xfU1lOQ19GTFVTSF9DT01NQU5EU19CSVQsIDApKTsK
KyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7CisKKyAgICAvLyBnbFdhaXRT
eW5jIGdlbmVyYXRlcyBHTF9JTlZBTElEX1ZBTFVFIGlmIGZsYWdzIGlzIG5vbi16ZXJvCisgICAg
Z2xXYWl0U3luYyhzeW5jLCAxLCBHTF9USU1FT1VUX0lHTk9SRUQpOworICAgIEVYUEVDVF9HTF9F
UlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKKworICAgIC8vIGdsV2FpdFN5bmMgZ2VuZXJhdGVzIEdM
X0lOVkFMSURfVkFMVUUgaWYgR0x1aW50NjQgaXMgbm90IEdMX1RJTUVPVVRfSUdOT1JFRAorICAg
IGdsV2FpdFN5bmMoc3luYywgMCwgMCk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURf
VkFMVUUpOworCisgICAgLy8gZ2xXYWl0U3luYyBnZW5lcmF0ZXMgR0xfSU5WQUxJRF9WQUxVRSBp
ZiB0aGUgc3luYyBvYmplY3QgaXMgbm90IHZhbGlkCisgICAgZ2xXYWl0U3luYyhyZWludGVycHJl
dF9jYXN0PEdMc3luYz4oMzApLCAwLCBHTF9USU1FT1VUX0lHTk9SRUQpOworICAgIEVYUEVDVF9H
TF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKKworICAgIC8vIGdsR2V0U3luY2l2IGdlbmVyYXRl
cyBHTF9JTlZBTElEX1ZBTFVFIGlmIGJ1ZlNpemUgaXMgbGVzcyB0aGFuIHplcm8sIHJlc3VsdHMg
c2hvdWxkIGJlIHVudG91Y2hlZAorICAgIEdMc2l6ZWkgbGVuZ3RoID0gMjA7CisgICAgR0xpbnQg
dmFsdWUgPSAzMDsKKyAgICBnbEdldFN5bmNpdihzeW5jLCBHTF9PQkpFQ1RfVFlQRSwgLTEsICZs
ZW5ndGgsICZ2YWx1ZSk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwor
ICAgIEVYUEVDVF9FUSgyMCwgbGVuZ3RoKTsKKyAgICBFWFBFQ1RfRVEoMzAsIHZhbHVlKTsKKwor
ICAgIC8vIGdsR2V0U3luY2l2IGdlbmVyYXRlcyBHTF9JTlZBTElEX1ZBTFVFIGlmIHRoZSBzeW5j
IG9iamVjdCB0aXMgbm90IHZhbGlkLCByZXN1bHRzIHNob3VsZCBiZSB1bnRvdWNoZWQKKyAgICBn
bEdldFN5bmNpdihyZWludGVycHJldF9jYXN0PEdMc3luYz4oMzApLCBHTF9PQkpFQ1RfVFlQRSwg
MSwgJmxlbmd0aCwgJnZhbHVlKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxV
RSk7CisgICAgRVhQRUNUX0VRKDIwLCBsZW5ndGgpOworICAgIEVYUEVDVF9FUSgzMCwgdmFsdWUp
OworfQorCisvLyBUZXN0IHVzYWdlIG9mIGdsR2V0U3luY2l2CitURVNUX1AoRmVuY2VTeW5jVGVz
dCwgQmFzaWNRdWVyaWVzKQoreworICAgIEdMc2l6ZWkgbGVuZ3RoID0gMDsKKyAgICBHTGludCB2
YWx1ZSA9IDA7CisgICAgR0xzeW5jIHN5bmMgPSBnbEZlbmNlU3luYyhHTF9TWU5DX0dQVV9DT01N
QU5EU19DT01QTEVURSwgMCk7CisKKyAgICBnbEdldFN5bmNpdihzeW5jLCBHTF9TWU5DX0NPTkRJ
VElPTiwgMSwgJmxlbmd0aCwgJnZhbHVlKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAg
ICBFWFBFQ1RfRVEoR0xfU1lOQ19HUFVfQ09NTUFORFNfQ09NUExFVEUsIHZhbHVlKTsKKworICAg
IGdsR2V0U3luY2l2KHN5bmMsIEdMX09CSkVDVF9UWVBFLCAxLCAmbGVuZ3RoLCAmdmFsdWUpOwor
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9FUShHTF9TWU5DX0ZFTkNFLCB2
YWx1ZSk7CisKKyAgICBnbEdldFN5bmNpdihzeW5jLCBHTF9TWU5DX0ZMQUdTLCAxLCAmbGVuZ3Ro
LCAmdmFsdWUpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9FUSgwLCB2
YWx1ZSk7Cit9CisKKy8vIFRlc3QgdGhhdCBiYXNpYyB1c2FnZSB3b3JrcyBhbmQgZG9lc24ndCBn
ZW5lcmF0ZSBlcnJvcnMgb3IgY3Jhc2gKK1RFU1RfUChGZW5jZVN5bmNUZXN0LCBCYXNpY09wZXJh
dGlvbnMpCit7CisgICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBGaWd1cmUgb3V0IHdoeSB0aGlzIGlz
IGJyb2tlbiBvbiBJbnRlbCBPcGVuR0wKKyAgICBpZiAoSXNJbnRlbCgpICYmIGdldFBsYXRmb3Jt
UmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUpCisgICAg
eworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBPcGVuR0wuIiA8
PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBnbENsZWFyQ29sb3Io
MS4wZiwgMC4wZiwgMS4wZiwgMS4wZik7CisKKyAgICBHTHN5bmMgc3luYyA9IGdsRmVuY2VTeW5j
KEdMX1NZTkNfR1BVX0NPTU1BTkRTX0NPTVBMRVRFLCAwKTsKKworICAgIGdsQ2xlYXIoR0xfQ09M
T1JfQlVGRkVSX0JJVCk7CisgICAgZ2xXYWl0U3luYyhzeW5jLCAwLCBHTF9USU1FT1VUX0lHTk9S
RUQpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgR0xzaXplaSBsZW5ndGggPSAw
OworICAgIEdMaW50IHZhbHVlID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgbG9vcENvdW50ID0gMDsK
KworICAgIGdsRmx1c2goKTsKKworICAgIC8vIFVzZSAnbG9vcENvdW50JyB0byBtYWtlIHN1cmUg
dGhlIHRlc3QgZG9lc24ndCBnZXQgc3R1Y2sgaW4gYW4gaW5maW5pdGUgbG9vcAorICAgIHdoaWxl
ICh2YWx1ZSAhPSBHTF9TSUdOQUxFRCAmJiBsb29wQ291bnQgPD0gMTAwMDAwMCkKKyAgICB7Cisg
ICAgICAgIGxvb3BDb3VudCsrOworCisgICAgICAgIGdsR2V0U3luY2l2KHN5bmMsIEdMX1NZTkNf
U1RBVFVTLCAxLCAmbGVuZ3RoLCAmdmFsdWUpOworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1Io
KTsKKyAgICB9CisKKyAgICBBU1NFUlRfR0xFTlVNX0VRKEdMX1NJR05BTEVELCB2YWx1ZSk7CisK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDIwOyBpKyspCisgICAgeworICAgICAgICBnbENs
ZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAgICAgICBnbENsaWVudFdhaXRTeW5jKHN5bmMs
IEdMX1NZTkNfRkxVU0hfQ09NTUFORFNfQklULCBHTF9USU1FT1VUX0lHTk9SRUQpOworICAgICAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICB9Cit9CisKKy8vIFVzZSB0aGlzIHRvIHNlbGVj
dCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBt
YWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCitBTkdMRV9J
TlNUQU5USUFURV9URVNUKEZlbmNlTlZUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICBFUzJf
RDNEOSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgRVMzX0QzRDExKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVO
R0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgpLAorICAgICAgICAgICAg
ICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09Q
RU5HTEVTKCkpOworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChGZW5jZVN5bmNUZXN0LCBFUzNfRDNE
MTEoKSwgRVMzX09QRU5HTCgpLCBFUzNfT1BFTkdMRVMoKSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRnJhbWVidWZmZXJNaXhlZFNhbXBsZXNUZXN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xf
dGVzdHMvRnJhbWVidWZmZXJNaXhlZFNhbXBsZXNUZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRnJhbWVidWZmZXJNaXhl
ZFNhbXBsZXNUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5MSBAQAorLy8KKy8v
IENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKy8vIENIUk9NSVVNRnJhbWVidWZmZXJNaXhlZFNhbXBsZXNUZXN0CisvLyAgIFRlc3QgQ0hS
T01JVU0gc3Vic2V0IG9mIE5WX2ZyYW1lYnVmZmVyX21peGVkX3NhbXBsZXMuCisvLyAgIFRoaXMg
ZXh0ZW5zaW9uIGFsbG93cyByZW5kZXJpbmcgdG8gYSBmcmFtZWJ1ZmZlciB0aGF0IGhhcyBkaWZm
ZXJlbnQKKy8vICAgc2FtcGxlIGNvdW50cyBmb3IgZGlmZmVyZW50IHJlbmRlciBidWZmZXJzIChz
dGVuY2lsLCBkZXB0aCwgY29sb3IpCisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5o
IgorI2luY2x1ZGUgInNoYWRlcl91dGlscy5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisK
K25hbWVzcGFjZQoreworCitjb25zdCBHTHVpbnQga1dpZHRoICA9IDEwMDsKK2NvbnN0IEdMdWlu
dCBrSGVpZ2h0ID0gMTAwOworCitjbGFzcyBDSFJPTUlVTUZyYW1lYnVmZmVyTWl4ZWRTYW1wbGVz
VGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIGVudW0gU2V0dXBG
Qk9UeXBlCisgICAgeworICAgICAgICBNaXhlZFNhbXBsZUZCTywgICAvLyAxIGNvbG9yIHNhbXBs
ZSwgTiBzdGVuY2lsIHNhbXBsZXMuCisgICAgICAgIFNpbmdsZVNhbXBsZUZCTywgIC8vIDEgY29s
b3Igc2FtcGxlLCAxIHN0ZW5jaWwgc2FtcGxlLgorICAgIH07CisKKyAgICBib29sIGlzQXBwbGlj
YWJsZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZXh0ZW5zaW9uRW5hYmxlZCgiR0xf
Q0hST01JVU1fZnJhbWVidWZmZXJfbWl4ZWRfc2FtcGxlcyIpICYmCisgICAgICAgICAgICAgICBl
eHRlbnNpb25FbmFibGVkKCJHTF9PRVNfcmdiOF9yZ2JhOCIpOworICAgIH0KKworICAgIHZvaWQg
U2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOworCisg
ICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGtW
ZXJ0ZXhTaGFkZXJTb3VyY2UgPQorICAgICAgICAgICAgImF0dHJpYnV0ZSBtZWRpdW1wIHZlYzQg
cG9zaXRpb247XG4iCisgICAgICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAgICAg
IiAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjtcbiIKKyAgICAgICAgICAgICJ9XG4iOworCisgICAg
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBrRnJhZ21lbnRTaGFkZXJTb3VyY2UgPQorICAgICAgICAg
ICAgInVuaWZvcm0gbWVkaXVtcCB2ZWM0IGNvbG9yO1xuIgorICAgICAgICAgICAgInZvaWQgbWFp
bigpIHtcbiIKKyAgICAgICAgICAgICIgIGdsX0ZyYWdDb2xvciA9IGNvbG9yO1xuIgorICAgICAg
ICAgICAgIn1cbiI7CisKKyAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9uCisgICAgICAgIG1Qcm9n
cmFtID0gQ29tcGlsZVByb2dyYW0oa1ZlcnRleFNoYWRlclNvdXJjZSwga0ZyYWdtZW50U2hhZGVy
U291cmNlKTsKKworICAgICAgICBHTHVpbnQgcG9zaXRpb25fbG9jID0gZ2xHZXRBdHRyaWJMb2Nh
dGlvbihtUHJvZ3JhbSwgInBvc2l0aW9uIik7CisgICAgICAgIG1Db2xvckxvYyAgICAgICAgICAg
PSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgImNvbG9yIik7CisKKyAgICAgICAgZ2xH
ZW5CdWZmZXJzKDEsICZtVkJPKTsKKyAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZF
UiwgbVZCTyk7CisKKyAgICAgICAgc3RhdGljIGZsb2F0IHZlcnRpY2VzW10gPSB7CisgICAgICAg
ICAgICAxLjBmLCAgMS4wZiwgLTEuMGYsIDEuMGYsICAtMS4wZiwgLTEuMGYsIC0xLjBmLCAxLjBm
LCAtMS4wZiwKKyAgICAgICAgICAgIC0xLjBmLCAxLjBmLCAtMS4wZiwgLTEuMGYsIC0xLjBmLCAx
LjBmLCAgLTEuMGYsIDEuMGYsIDEuMGYsCisgICAgICAgIH07CisgICAgICAgIGdsQnVmZmVyRGF0
YShHTF9BUlJBWV9CVUZGRVIsIHNpemVvZih2ZXJ0aWNlcyksIHZlcnRpY2VzLCBHTF9TVEFUSUNf
RFJBVyk7CisgICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25fbG9jKTsK
KyAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0aW9uX2xvYywgMiwgR0xfRkxPQVQs
IEdMX0ZBTFNFLCAwLCAwKTsKKworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICB9
CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGdsRGVsZXRl
QnVmZmVycygxLCAmbVZCTyk7CisgICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7CisK
KyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgQU5HTEVUZXN0OjpUZWFy
RG93bigpOworICAgIH0KKworICAgIHZvaWQgcHJlcGFyZUZvckRyYXcoU2V0dXBGQk9UeXBlIGZi
b190eXBlKQorICAgIHsKKyAgICAgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKKyAg
ICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbVRleHR1cmUpOworICAgICAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICAgICAg
Z2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFN
UF9UT19FREdFKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOworICAgICAg
ICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwga1dpZHRoLCBrSGVpZ2h0
LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICAgICAgTlVM
TCk7CisgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgMCk7CisKKyAgICAgICAg
Z2xHZW5SZW5kZXJidWZmZXJzKDEsICZtU3RlbmNpbFJCKTsKKyAgICAgICAgZ2xCaW5kUmVuZGVy
YnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbVN0ZW5jaWxSQik7CisKKyAgICAgICAgaWYgKGZib190
eXBlID09IE1peGVkU2FtcGxlRkJPKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBDcmVhdGUg
YSBzYW1wbGUgYnVmZmVyLgorICAgICAgICAgICAgR0xzaXplaSBudW1fc2FtcGxlcyA9IDgsIG1h
eF9zYW1wbGVzID0gMDsKKyAgICAgICAgICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1NBTVBMRVMs
ICZtYXhfc2FtcGxlcyk7CisgICAgICAgICAgICBudW1fc2FtcGxlcyA9IHN0ZDo6bWluKG51bV9z
YW1wbGVzLCBtYXhfc2FtcGxlcyk7CisgICAgICAgICAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VN
dWx0aXNhbXBsZUFOR0xFKEdMX1JFTkRFUkJVRkZFUiwgbnVtX3NhbXBsZXMsIEdMX1NURU5DSUxf
SU5ERVg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBrV2lkdGgsIGtIZWlnaHQpOworICAgICAgICAgICAgR0xpbnQgcGFyYW0gPSAwOworICAgICAg
ICAgICAgZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHTF9SRU5ERVJCVUZGRVIsIEdMX1JF
TkRFUkJVRkZFUl9TQU1QTEVTLCAmcGFyYW0pOworICAgICAgICAgICAgRVhQRUNUX0dUKHBhcmFt
LCAxKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGds
UmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZGRVIsIEdMX1NURU5DSUxfSU5ERVg4LCBr
V2lkdGgsIGtIZWlnaHQpOworICAgICAgICB9CisgICAgICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihH
TF9SRU5ERVJCVUZGRVIsIDApOworCisgICAgICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZtU2Ft
cGxlRkJPKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1TYW1w
bGVGQk8pOworICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBH
TF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUsIDApOworICAgICAg
ICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9TVEVOQ0lMX0FU
VEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtU3RlbmNpbFJCKTsKKyAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PEdMZW51bT4o
R0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpLAorICAgICAgICAgICAgICAgICAgZ2xDaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7CisKKyAgICAgICAgZ2xVc2VQcm9ncmFtKG1Q
cm9ncmFtKTsKKyAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgMCk7CisgICAg
ICAgIGdsVmlld3BvcnQoMCwgMCwga1dpZHRoLCBrSGVpZ2h0KTsKKyAgICAgICAgZ2xDbGVhckNv
bG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYpOworICAgICAgICBnbENsZWFyU3RlbmNpbCgxKTsK
KyAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJf
QklUKTsKKyAgICAgICAgZ2xFbmFibGUoR0xfU1RFTkNJTF9URVNUKTsKKyAgICAgICAgZ2xFbmFi
bGUoR0xfQkxFTkQpOworICAgICAgICBnbEJsZW5kRnVuYyhHTF9TUkNfQUxQSEEsIEdMX09ORV9N
SU5VU19TUkNfQUxQSEEpOworICAgICAgICBnbFN0ZW5jaWxNYXNrKDB4ZmZmZmZmZmYpOworICAg
ICAgICBnbFN0ZW5jaWxGdW5jKEdMX0VRVUFMLCAxLCAweGZmZmZmZmZmKTsKKyAgICAgICAgZ2xT
dGVuY2lsT3AoR0xfS0VFUCwgR0xfS0VFUCwgR0xfWkVSTyk7CisKKyAgICAgICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7CisgICAgfQorCisgICAgdm9pZCBjbGVhbnVwKCkKKyAgICB7CisgICAgICAg
IGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsKKyAgICAgICAgZ2xEZWxldGVG
cmFtZWJ1ZmZlcnMoMSwgJm1TYW1wbGVGQk8pOworICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEs
ICZtVGV4dHVyZSk7CisgICAgICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmbVN0ZW5jaWxS
Qik7CisKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgfQorCisgICAgR0x1aW50
IG1TYW1wbGVGQk87CisgICAgR0x1aW50IG1TdGVuY2lsUkI7CisgICAgR0x1aW50IG1UZXh0dXJl
OworCisgICAgR0x1aW50IG1Qcm9ncmFtOworICAgIEdMdWludCBtVkJPOworICAgIEdMaW50IG1D
b2xvckxvYzsKK307CisKK30gIC8vCisKK1RFU1RfUChDSFJPTUlVTUZyYW1lYnVmZmVyTWl4ZWRT
YW1wbGVzVGVzdCwgU3RhdGVTZXR0aW5nVGVzdCkKK3sKKyAgICBpZiAoIWlzQXBwbGljYWJsZSgp
KQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdMaW50IHZhbHVlID0gLTE7
CisgICAgZ2xHZXRJbnRlZ2VydihHTF9DT1ZFUkFHRV9NT0RVTEFUSU9OX0NIUk9NSVVNLCAmdmFs
dWUpOworICAgIEVYUEVDVF9FUShHTF9OT05FLCB2YWx1ZSk7CisgICAgR0xlbnVtIGtWYWx1ZXNb
XSA9IHtHTF9OT05FLCBHTF9SR0IsIEdMX1JHQkEsIEdMX0FMUEhBfTsKKyAgICBmb3IgKGF1dG8g
ZXhwZWN0IDoga1ZhbHVlcykKKyAgICB7CisgICAgICAgIGdsQ292ZXJhZ2VNb2R1bGF0aW9uQ0hS
T01JVU0oZXhwZWN0KTsKKyAgICAgICAgdmFsdWUgPSAtMTsKKyAgICAgICAgZ2xHZXRJbnRlZ2Vy
dihHTF9DT1ZFUkFHRV9NT0RVTEFUSU9OX0NIUk9NSVVNLCAmdmFsdWUpOworICAgICAgICBFWFBF
Q1RfRVEoZXhwZWN0LCBzdGF0aWNfY2FzdDxHTGVudW0+KHZhbHVlKSk7CisgICAgICAgIEVYUEVD
VF9FUShzdGF0aWNfY2FzdDxHTGVudW0+KEdMX05PX0VSUk9SKSwgZ2xHZXRFcnJvcigpKTsKKyAg
ICB9CisKKyAgICBnbENvdmVyYWdlTW9kdWxhdGlvbkNIUk9NSVVNKEdMX0JZVEUpOworICAgIEVY
UEVDVF9FUShzdGF0aWNfY2FzdDxHTGVudW0+KEdMX0lOVkFMSURfRU5VTSksIGdsR2V0RXJyb3Io
KSk7CisgICAgdmFsdWUgPSAtMTsKKyAgICBnbEdldEludGVnZXJ2KEdMX0NPVkVSQUdFX01PRFVM
QVRJT05fQ0hST01JVU0sICZ2YWx1ZSk7CisgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PEdMZW51
bT4oR0xfQUxQSEEpLCBzdGF0aWNfY2FzdDxHTGVudW0+KHZhbHVlKSk7CisgICAgRVhQRUNUX0VR
KHN0YXRpY19jYXN0PEdMZW51bT4oR0xfTk9fRVJST1IpLCBnbEdldEVycm9yKCkpOworfQorCisv
LyBUaGUgdGVzdCBwYXR0ZXJuIGlzIGFzIGZvbGxvd3M6CisvLyBBIGdyZWVuIHRyaWFuZ2xlIChi
b3R0b20gbGVmdCwgdG9wIHJpZ2h0LCB0b3AgbGVmdCkuCisvLyBBIGJsdWUgdHJpYW5nbGUgKHRv
cCBsZWZ0LCBib3R0b20gcmlnaHQsIGJvdHRvbSBsZWZ0KS4KKy8vIFRoZSB0cmlhbmdsZXMgd2ls
bCBvdmVybGFwIGJ1dCBvdmVybGFwIG9ubHkgY29udGFpbnMgZ3JlZW4gcGl4ZWxzLAorLy8gZHVl
IHRvIGVhY2ggZHJhdyBlcmFzaW5nIGl0cyBhcmVhIGZyb20gc3RlbmNpbC4KKy8vIFRoZSBibHVl
IHRyaWFuZ2xlIHdpbGwgZmlsbCBvbmx5IHRoZSBhcmVhIChib3R0b20gbGVmdCwgY2VudGVyLAor
Ly8gYm90dG9tIHJpZ2h0KS4KKworLy8gVGhlIHRlc3QgdGVzdHMgdGhhdCBDb3ZlcmFnZU1vZHVs
YXRpb24gY2FsbCB3b3Jrcy4KKy8vIFRoZSBmcmFjdGlvbmFsIHBpeGVscyBvZiBib3RoIHRyaWFu
Z2xlcyBlbmQgdXAgYmVpbmcgbW9kdWxhdGVkCisvLyBieSB0aGUgY292ZXJhZ2Ugb2YgdGhlIGZy
YWdtZW50LiBUZXN0IHRoYXQgZHJhd2luZyB3aXRoIGFuZCB3aXRob3V0CisvLyBDb3ZlcmFnZU1v
ZHVsYXRpb24gY2F1c2VzIHRoZSByZXN1bHQgdG8gYmUgZGlmZmVyZW50LgorVEVTVF9QKENIUk9N
SVVNRnJhbWVidWZmZXJNaXhlZFNhbXBsZXNUZXN0LCBDb3ZlcmFnZU1vZHVsYXRpb24pCit7Cisg
ICAgaWYgKCFpc0FwcGxpY2FibGUoKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgc3RhdGljIGNvbnN0IGZsb2F0IGtCbHVlW10gID0gezAuMGYsIDAuMGYsIDEuMGYsIDEuMGZ9
OworICAgIHN0YXRpYyBjb25zdCBmbG9hdCBrR3JlZW5bXSA9IHswLjBmLCAxLjBmLCAwLjBmLCAx
LjBmfTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8dWludDhfdFtdPiByZXN1bHRzWzNdOworICAgIGNv
bnN0IEdMaW50IGtSZXN1bHRTaXplID0ga1dpZHRoICoga0hlaWdodCAqIDQ7CisKKyAgICBmb3Ig
KGludCBwYXNzID0gMDsgcGFzcyA8IDM7ICsrcGFzcykKKyAgICB7CisgICAgICAgIHByZXBhcmVG
b3JEcmF3KE1peGVkU2FtcGxlRkJPKTsKKyAgICAgICAgaWYgKHBhc3MgPT0gMSkKKyAgICAgICAg
eworICAgICAgICAgICAgZ2xDb3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTShHTF9SR0JBKTsKKyAg
ICAgICAgfQorICAgICAgICBnbFVuaWZvcm00ZnYobUNvbG9yTG9jLCAxLCBrR3JlZW4pOworICAg
ICAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVTLCAwLCAzKTsKKworICAgICAgICBnbFVuaWZv
cm00ZnYobUNvbG9yTG9jLCAxLCBrQmx1ZSk7CisgICAgICAgIGdsRHJhd0FycmF5cyhHTF9UUklB
TkdMRVMsIDMsIDMpOworICAgICAgICBpZiAocGFzcyA9PSAxKQorICAgICAgICB7CisgICAgICAg
ICAgICBnbENvdmVyYWdlTW9kdWxhdGlvbkNIUk9NSVVNKEdMX05PTkUpOworICAgICAgICB9Cisg
ICAgICAgIHJlc3VsdHNbcGFzc10ucmVzZXQobmV3IHVpbnQ4X3Rba1Jlc3VsdFNpemVdKTsKKyAg
ICAgICAgbWVtc2V0KHJlc3VsdHNbcGFzc10uZ2V0KCksIDEyM3UsIGtSZXN1bHRTaXplKTsKKyAg
ICAgICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIGtXaWR0aCwga0hlaWdodCwgR0xfUkdCQSwgR0xfVU5T
SUdORURfQllURSwgcmVzdWx0c1twYXNzXS5nZXQoKSk7CisKKyAgICAgICAgY2xlYW51cCgpOwor
ICAgIH0KKworICAgIEVYUEVDVF9ORSgwLCBtZW1jbXAocmVzdWx0c1swXS5nZXQoKSwgcmVzdWx0
c1sxXS5nZXQoKSwga1Jlc3VsdFNpemUpKTsKKyAgICAvLyBWZXJpZnkgdGhhdCByZW5kZXJpbmcg
aXMgZGV0ZXJtaW5pc3RpYywgc28gdGhhdCB0aGUgcGFzcyBhYm92ZSBkb2VzIG5vdAorICAgIC8v
IGNvbWUgZnJvbSBub24tZGV0ZXJtaW5pc3RpYyByZW5kZXJpbmcuCisgICAgRVhQRUNUX0VRKDAs
IG1lbWNtcChyZXN1bHRzWzBdLmdldCgpLCByZXN1bHRzWzJdLmdldCgpLCBrUmVzdWx0U2l6ZSkp
OworfQorCisvLyBUaGUgdGVzdCB0ZXN0cyB0aGF0IHRoZSBzdGVuY2lsIGJ1ZmZlciBjYW4gYmUg
bXVsdGlzYW1wbGVkLCBldmVuIHRob3VnaCB0aGUKKy8vIGNvbG9yIGJ1ZmZlciBpcyBzaW5nbGUt
c2FtcGxlZC4gRHJhd3MgdGhlIHNhbWUgcGF0dGVybiB3aXRoIHNpbmdsZS1zYW1wbGUKKy8vIHN0
ZW5jaWwgYnVmZmVyIGFuZCB3aXRoIG11bHRpc2FtcGxlIHN0ZW5jaWwgYnVmZmVyLiBUaGUgaW1h
Z2VzIHNob3VsZCBkaWZmZXIuCitURVNUX1AoQ0hST01JVU1GcmFtZWJ1ZmZlck1peGVkU2FtcGxl
c1Rlc3QsIE11bHRpc2FtcGxlU3RlbmNpbEVmZmVjdGl2ZSkKK3sKKyAgICBpZiAoIWlzQXBwbGlj
YWJsZSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0YXRpYyBjb25z
dCBmbG9hdCBrQmx1ZVtdICA9IHswLjBmLCAwLjBmLCAxLjBmLCAxLjBmfTsKKyAgICBzdGF0aWMg
Y29uc3QgZmxvYXQga0dyZWVuW10gPSB7MC4wZiwgMS4wZiwgMC4wZiwgMS4wZn07CisKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8dWludDhfdFtdPiByZXN1bHRzWzNdOworICAgIGNvbnN0IEdMaW50IGtS
ZXN1bHRTaXplID0ga1dpZHRoICoga0hlaWdodCAqIDQ7CisKKyAgICBmb3IgKGludCBwYXNzID0g
MDsgcGFzcyA8IDM7ICsrcGFzcykKKyAgICB7CisgICAgICAgIGlmIChwYXNzID09IDEpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHByZXBhcmVGb3JEcmF3KE1peGVkU2FtcGxlRkJPKTsKKyAgICAg
ICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHByZXBhcmVGb3JEcmF3
KFNpbmdsZVNhbXBsZUZCTyk7CisgICAgICAgIH0KKyAgICAgICAgZ2xVbmlmb3JtNGZ2KG1Db2xv
ckxvYywgMSwga0dyZWVuKTsKKyAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMCwg
Myk7CisKKyAgICAgICAgZ2xVbmlmb3JtNGZ2KG1Db2xvckxvYywgMSwga0JsdWUpOworICAgICAg
ICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVTLCAzLCAzKTsKKworICAgICAgICByZXN1bHRzW3Bh
c3NdLnJlc2V0KG5ldyB1aW50OF90W2tSZXN1bHRTaXplXSk7CisgICAgICAgIG1lbXNldChyZXN1
bHRzW3Bhc3NdLmdldCgpLCAxMnUsIGtSZXN1bHRTaXplKTsKKyAgICAgICAgZ2xSZWFkUGl4ZWxz
KDAsIDAsIGtXaWR0aCwga0hlaWdodCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcmVzdWx0
c1twYXNzXS5nZXQoKSk7CisKKyAgICAgICAgY2xlYW51cCgpOworICAgIH0KKworICAgIEVYUEVD
VF9ORSgwLCBtZW1jbXAocmVzdWx0c1swXS5nZXQoKSwgcmVzdWx0c1sxXS5nZXQoKSwga1Jlc3Vs
dFNpemUpKTsKKyAgICAvLyBWZXJpZnkgdGhhdCByZW5kZXJpbmcgaXMgZGV0ZXJtaW5pc3RpYywg
c28gdGhhdCB0aGUgcGFzcyBhYm92ZSBkb2VzIG5vdAorICAgIC8vIGNvbWUgZnJvbSBub24tZGV0
ZXJtaW5pc3RpYyByZW5kZXJpbmcuCisgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChyZXN1bHRzWzBd
LmdldCgpLCByZXN1bHRzWzJdLmdldCgpLCBrUmVzdWx0U2l6ZSkpOworfQorCitBTkdMRV9JTlNU
QU5USUFURV9URVNUKENIUk9NSVVNRnJhbWVidWZmZXJNaXhlZFNhbXBsZXNUZXN0LAorICAgICAg
ICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVT
Ml9PUEVOR0xFUygpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKCkpOwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0ZyYW1lYnVmZmVy
UmVuZGVyTWlwbWFwVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0ZyYW1lYnVmZmVyUmVuZGVyTWlwbWFwVGVzdC5jcHAJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3Rz
L0ZyYW1lYnVmZmVyUmVuZGVyTWlwbWFwVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwyMDQgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgor
Cit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKK2NsYXNzIEZyYW1lYnVmZmVyUmVuZGVyTWlwbWFw
VGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIEZyYW1lYnVmZmVy
UmVuZGVyTWlwbWFwVGVzdCgpCisgICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0aCgyNTYpOwor
ICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMjU2KTsKKyAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4
KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAgICBzZXRDb25maWdCbHVl
Qml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAgIH0KKworICAgIHZp
cnR1YWwgdm9pZCBTZXRVcCgpCisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7CisK
KyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdnNTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAg
ICAgICgKKyAgICAgICAgICAgIGF0dHJpYnV0ZSBoaWdocCB2ZWM0IHBvc2l0aW9uOworICAgICAg
ICAgICAgdm9pZCBtYWluKHZvaWQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xf
UG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyBmc1NvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKAor
ICAgICAgICAgICAgdW5pZm9ybSBoaWdocCB2ZWM0IGNvbG9yOworICAgICAgICAgICAgdm9pZCBt
YWluKHZvaWQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0g
Y29sb3I7CisgICAgICAgICAgICB9CisgICAgICAgICk7CisKKyAgICAgICAgbVByb2dyYW0gPSBD
b21waWxlUHJvZ3JhbSh2c1NvdXJjZSwgZnNTb3VyY2UpOworICAgICAgICBpZiAobVByb2dyYW0g
PT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgRkFJTCgpIDw8ICJzaGFkZXIgY29tcGlsYXRp
b24gZmFpbGVkLiI7CisgICAgICAgIH0KKworICAgICAgICBtQ29sb3JMb2NhdGlvbiA9IGdsR2V0
VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAiY29sb3IiKTsKKworICAgICAgICBnbFVzZVByb2dy
YW0obVByb2dyYW0pOworCisgICAgICAgIGdsQ2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKKyAgICAg
ICAgZ2xDbGVhckRlcHRoZigwLjApOworICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9C
SVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUKTsKKworICAgICAgICBnbEVuYWJsZShHTF9CTEVORCk7
CisgICAgICAgIGdsRGlzYWJsZShHTF9ERVBUSF9URVNUKTsKKworICAgICAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQorICAgIHsK
KyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKKworICAgICAgICBBTkdMRVRlc3Q6
OlRlYXJEb3duKCk7CisgICAgfQorCisgICAgR0x1aW50IG1Qcm9ncmFtOworICAgIEdMaW50IG1D
b2xvckxvY2F0aW9uOworfTsKKworLy8gVmFsaWRhdGUgdGhhdCBpZiB3ZSBhcmUgaW4gRVMzIG9y
IEdMX09FU19mYm9fcmVuZGVyX21pcG1hcCBleGlzdHMsIHRoZXJlIGFyZSBubyB2YWxpZGF0aW9u
IGVycm9ycworLy8gd2hlbiB1c2luZyBhIG5vbi16ZXJvIGxldmVsIGluIGdsRnJhbWVidWZmZXJU
ZXh0dXJlMkQuCitURVNUX1AoRnJhbWVidWZmZXJSZW5kZXJNaXBtYXBUZXN0LCBWYWxpZGF0aW9u
KQoreworICAgIGJvb2wgcmVuZGVyVG9NaXBtYXBTdXBwb3J0ZWQgPQorICAgICAgICBleHRlbnNp
b25FbmFibGVkKCJHTF9PRVNfZmJvX3JlbmRlcl9taXBtYXAiKSB8fCBnZXRDbGllbnRNYWpvclZl
cnNpb24oKSA+IDI7CisKKyAgICBHTHVpbnQgdGV4ID0gMDsKKyAgICBnbEdlblRleHR1cmVzKDEs
ICZ0ZXgpOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4KTsKKworICAgIGNv
bnN0IEdMaW50IGxldmVscyA9IDU7CisgICAgZm9yIChHTGludCBpID0gMDsgaSA8IGxldmVsczsg
aSsrKQorICAgIHsKKyAgICAgICAgR0xzaXplaSBzaXplID0gMSA8PCAoKGxldmVscyAtIDEpIC0g
aSk7CisgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCBpLCBHTF9SR0JBLCBzaXpl
LCBzaXplLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBOVUxMKTsKKyAgICB9CisKKyAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIEdMdWludCBmYm8gPSAwOworICAgIGdsR2Vu
RnJhbWVidWZmZXJzKDEsICZmYm8pOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVG
RkVSLCBmYm8pOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZm9yIChHTGludCBp
ID0gMDsgaSA8IGxldmVsczsgaSsrKQorICAgIHsKKyAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1
cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQs
IHRleCwgaSk7CisKKyAgICAgICAgaWYgKGkgPiAwICYmICFyZW5kZXJUb01pcG1hcFN1cHBvcnRl
ZCkKKyAgICAgICAgeworICAgICAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFM
VUUpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZ2xDaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSwgR0xlbnVtKEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRF
KSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmZmJv
KTsKKyAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0ZXgpOworfQorCisvLyBSZW5kZXIgdG8gdmFy
aW91cyBsZXZlbHMgb2YgYSB0ZXh0dXJlIGFuZCBjaGVjayB0aGF0IHRoZXkgaGF2ZSB0aGUgY29y
cmVjdCBjb2xvciBkYXRhIHZpYSBSZWFkUGl4ZWxzCitURVNUX1AoRnJhbWVidWZmZXJSZW5kZXJN
aXBtYXBUZXN0LCBSZW5kZXJUb01pcG1hcCkKK3sKKyAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IEZp
Z3VyZSBvdXQgd2h5IHRoaXMgaXMgYnJva2VuIG9uIEludGVsIE9wZW5HTAorICAgIGlmIChJc0lu
dGVsKCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBF
X09QRU5HTF9BTkdMRSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVk
IG9uIEludGVsIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGJvb2wgcmVuZGVyVG9NaXBtYXBTdXBwb3J0ZWQgPQorICAgICAgICBleHRlbnNpb25F
bmFibGVkKCJHTF9PRVNfZmJvX3JlbmRlcl9taXBtYXAiKSB8fCBnZXRDbGllbnRNYWpvclZlcnNp
b24oKSA+IDI7CisgICAgaWYgKCFyZW5kZXJUb01pcG1hcFN1cHBvcnRlZCkKKyAgICB7CisgICAg
ICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgR0xfT0VTX2Zib19yZW5kZXJf
bWlwbWFwIG9yIEVTMyBpcyBub3QgYXZhaWxhYmxlLiIgPDwgc3RkOjplbmRsOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgY29uc3QgR0xmbG9hdCBsZXZlbENvbG9yc1tdID0KKyAgICB7
CisgICAgICAgIDEuMGYsIDAuMGYsIDAuMGYsIDEuMGYsCisgICAgICAgIDAuMGYsIDEuMGYsIDAu
MGYsIDEuMGYsCisgICAgICAgIDAuMGYsIDAuMGYsIDEuMGYsIDEuMGYsCisgICAgICAgIDEuMGYs
IDEuMGYsIDAuMGYsIDEuMGYsCisgICAgICAgIDEuMGYsIDAuMGYsIDEuMGYsIDEuMGYsCisgICAg
ICAgIDAuMGYsIDEuMGYsIDEuMGYsIDEuMGYsCisgICAgfTsKKyAgICBjb25zdCBHTGludCB0ZXN0
TGV2ZWxzID0gc3RhdGljX2Nhc3Q8R0xpbnQ+KEFycmF5U2l6ZShsZXZlbENvbG9ycykgLyA0KTsK
KworICAgIEdMdWludCB0ZXggPSAwOworICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleCk7CisgICAg
Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXgpOworCisgICAgZm9yIChHTGludCBpID0g
MDsgaSA8IHRlc3RMZXZlbHM7IGkrKykKKyAgICB7CisgICAgICAgIEdMc2l6ZWkgc2l6ZSA9IDEg
PDwgKCh0ZXN0TGV2ZWxzIC0gMSkgLSBpKTsKKyAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRV
UkVfMkQsIGksIEdMX1JHQkEsIHNpemUsIHNpemUsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsIE5VTEwpOworICAgIH0KKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgR0x1
aW50IGZibyA9IDA7CisgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJmZibyk7CisgICAgZ2xCaW5k
RnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIGZibyk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7CisKKyAgICAvLyBSZW5kZXIgdG8gdGhlIGxldmVscyBvZiB0aGUgdGV4dHVyZSB3aXRoIGRp
ZmZlcmVudCBjb2xvcnMKKyAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgdGVzdExldmVsczsgaSsr
KQorICAgIHsKKyAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwg
R0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIHRleCwgaSk7CisgICAgICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOworCisgICAgICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7Cisg
ICAgICAgIGdsVW5pZm9ybTRmdihtQ29sb3JMb2NhdGlvbiwgMSwgbGV2ZWxDb2xvcnMgKyAoaSAq
IDQpKTsKKworICAgICAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Cisg
ICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgIH0KKworICAgIC8vIFRlc3QgdGhhdCB0
aGUgbGV2ZWxzIG9mIHRoZSB0ZXh0dXJlIGFyZSBjb3JyZWN0CisgICAgZm9yIChHTGludCBpID0g
MDsgaSA8IHRlc3RMZXZlbHM7IGkrKykKKyAgICB7CisgICAgICAgIGdsRnJhbWVidWZmZXJUZXh0
dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJE
LCB0ZXgsIGkpOworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgICAgICBjb25z
dCBHTGZsb2F0ICpjb2xvciA9IGxldmVsQ29sb3JzICsgKGkgKiA0KTsKKyAgICAgICAgRVhQRUNU
X1BJWEVMX0VRKDAsIDAsIGNvbG9yWzBdICogMjU1LCBjb2xvclsxXSAqIDI1NSwgY29sb3JbMl0g
KiAyNTUsIGNvbG9yWzNdICogMjU1KTsKKyAgICB9CisKKyAgICBnbERlbGV0ZUZyYW1lYnVmZmVy
cygxLCAmZmJvKTsKKyAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0ZXgpOworCisgICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1
cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0
aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCitBTkdMRV9JTlNUQU5USUFURV9URVNU
KEZyYW1lYnVmZmVyUmVuZGVyTWlwbWFwVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMy
X0QzRDkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCisgICAgICAgICAg
ICAgICAgICAgICAgIEVTM19EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BF
TkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgRVMyX09QRU5HTEVTKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19P
UEVOR0xFUygpKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90
ZXN0cy9GcmFtZWJ1ZmZlclRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9GcmFtZWJ1ZmZlclRlc3QuY3BwCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9GcmFtZWJ1
ZmZlclRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzc5IEBACisvLworLy8gQ29w
eXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLwor
Ly8gRnJhbWVidWZmZXIgdGVzdHM6CisvLyAgIFZhcmlvdXMgdGVzdHMgcmVsYXRlZCBmb3IgRnJh
bWJ1ZmZlcnMuCisvLworCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKwordXNp
bmcgbmFtZXNwYWNlIGFuZ2xlOworCitjbGFzcyBGcmFtZWJ1ZmZlckZvcm1hdHNUZXN0IDogcHVi
bGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgRnJhbWVidWZmZXJGb3JtYXRzVGVz
dCgpIDogbUZyYW1lYnVmZmVyKDApLCBtVGV4dHVyZSgwKSwgbVJlbmRlcmJ1ZmZlcigwKSwgbVBy
b2dyYW0oMCkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7CisgICAgICAgIHNl
dFdpbmRvd0hlaWdodCgxMjgpOworICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOworICAgICAg
ICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwor
ICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgfQorCisgICAgdm9pZCBjaGVja0Jp
dENvdW50KEdMdWludCBmYm8sIEdMZW51bSBjaGFubmVsLCBHTGludCBtaW5CaXRzKQorICAgIHsK
KyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIGZibyk7CisKKyAgICAg
ICAgR0xpbnQgYml0cyA9IDA7CisgICAgICAgIGdsR2V0SW50ZWdlcnYoY2hhbm5lbCwgJmJpdHMp
OworCisgICAgICAgIGlmIChtaW5CaXRzID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIEVY
UEVDVF9FUShtaW5CaXRzLCBiaXRzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAg
IHsKKyAgICAgICAgICAgIEVYUEVDVF9HRShiaXRzLCBtaW5CaXRzKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHZvaWQgdGVzdEJpdENvdW50cyhHTHVpbnQgZmJvLAorICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBtaW5SZWRCaXRzLAorICAgICAgICAgICAgICAgICAgICAgICBHTGludCBt
aW5HcmVlbkJpdHMsCisgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IG1pbkJsdWVCaXRzLAor
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBtaW5BbHBoYUJpdHMsCisgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IG1pbkRlcHRoQml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbWluU3RlbmNpbEJpdHMpCisgICAgeworICAgICAgICBjaGVja0JpdENvdW50KGZibywgR0xf
UkVEX0JJVFMsIG1pblJlZEJpdHMpOworICAgICAgICBjaGVja0JpdENvdW50KGZibywgR0xfR1JF
RU5fQklUUywgbWluR3JlZW5CaXRzKTsKKyAgICAgICAgY2hlY2tCaXRDb3VudChmYm8sIEdMX0JM
VUVfQklUUywgbWluQmx1ZUJpdHMpOworICAgICAgICBjaGVja0JpdENvdW50KGZibywgR0xfQUxQ
SEFfQklUUywgbWluQWxwaGFCaXRzKTsKKyAgICAgICAgY2hlY2tCaXRDb3VudChmYm8sIEdMX0RF
UFRIX0JJVFMsIG1pbkRlcHRoQml0cyk7CisgICAgICAgIGNoZWNrQml0Q291bnQoZmJvLCBHTF9T
VEVOQ0lMX0JJVFMsIG1pblN0ZW5jaWxCaXRzKTsKKyAgICB9CisKKyAgICB2b2lkIHRlc3RUZXh0
dXJlRm9ybWF0KEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IG1pblJlZEJpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBt
aW5HcmVlbkJpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBtaW5CbHVlQml0
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IG1pbkFscGhhQml0cykKKyAgICB7
CisgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1UZXh0dXJlKTsKKyAgICAgICAgZ2xCaW5kVGV4
dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZSk7CisgICAgICAgIGdsVGV4U3RvcmFnZTJERVhU
KEdMX1RFWFRVUkVfMkQsIDEsIGludGVybmFsRm9ybWF0LCAxLCAxKTsKKworICAgICAgICBnbEZy
YW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwg
R0xfVEVYVFVSRV8yRCwgbVRleHR1cmUsIDApOworCisgICAgICAgIHRlc3RCaXRDb3VudHMobUZy
YW1lYnVmZmVyLCBtaW5SZWRCaXRzLCBtaW5HcmVlbkJpdHMsIG1pbkJsdWVCaXRzLCBtaW5BbHBo
YUJpdHMsIDAsIDApOworICAgIH0KKworICAgIHZvaWQgdGVzdFJlbmRlcmJ1ZmZlck11bHRpc2Ft
cGxlRm9ybWF0KGludCBtaW5FU1ZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnRUeXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCkKKyAgICB7Cisg
ICAgICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogRmlndXJlIG91dCB3aHkgdGhpcyBpcyBicm9rZW4g
b24gSW50ZWwgT3BlbkdMCisgICAgICAgIGlmIChJc0ludGVsKCkgJiYgZ2V0UGxhdGZvcm1SZW5k
ZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkKKyAgICAgICAg
eworICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgT3BlbkdM
LiIgPDwgc3RkOjplbmRsOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgaW50IGNsaWVudFZlcnNpb24gPSBnZXRDbGllbnRNYWpvclZlcnNpb24oKTsKKyAgICAgICAg
aWYgKGNsaWVudFZlcnNpb24gPCBtaW5FU1ZlcnNpb24pCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENoZWNrIHRoYXQgbXVsdGlzYW1wbGUg
aXMgc3VwcG9ydGVkIHdpdGggYXQgbGVhc3QgdHdvIHNhbXBsZXMgKG1pbmltdW0gcmVxdWlyZWQg
aXMgMSkKKyAgICAgICAgYm9vbCBzdXBwb3J0czJTYW1wbGVzID0gZmFsc2U7CisKKyAgICAgICAg
aWYgKGNsaWVudFZlcnNpb24gPT0gMikKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGV4dGVu
c2lvbkVuYWJsZWQoIkFOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIikpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgaW50IG1heFNhbXBsZXM7CisgICAgICAgICAgICAgICAgZ2xH
ZXRJbnRlZ2VydihHTF9NQVhfU0FNUExFU19BTkdMRSwgJm1heFNhbXBsZXMpOworICAgICAgICAg
ICAgICAgIHN1cHBvcnRzMlNhbXBsZXMgPSBtYXhTYW1wbGVzID49IDI7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBhc3NlcnQo
Y2xpZW50VmVyc2lvbiA+PSAzKTsKKyAgICAgICAgICAgIGludCBtYXhTYW1wbGVzOworICAgICAg
ICAgICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfU0FNUExFUywgJm1heFNhbXBsZXMpOworICAgICAg
ICAgICAgc3VwcG9ydHMyU2FtcGxlcyA9IG1heFNhbXBsZXMgPj0gMjsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghc3VwcG9ydHMyU2FtcGxlcykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZtUmVuZGVy
YnVmZmVyKTsKKyAgICAgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbVJl
bmRlcmJ1ZmZlcik7CisKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgICAgIGds
UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0xfUkVOREVSQlVGRkVSLCAyLCBp
bnRlcm5hbEZvcm1hdCwgMTI4LCAxMjgpOworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
KyAgICAgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgYXR0YWNo
bWVudFR5cGUsIEdMX1JFTkRFUkJVRkZFUiwgbVJlbmRlcmJ1ZmZlcik7CisgICAgICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOworICAgIH0KKworICAgIHZvaWQgdGVzdFplcm9IZWlnaHRSZW5kZXJi
dWZmZXIoKQorICAgIHsKKyAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZtUmVuZGVyYnVm
ZmVyKTsKKyAgICAgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbVJlbmRl
cmJ1ZmZlcik7CisgICAgICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZGRVIs
IEdMX1JHQkE4LCAxLCAwKTsKKyAgICAgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9G
UkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1JFTkRFUkJVRkZFUiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUmVuZGVyYnVmZmVyKTsKKyAgICAgICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7CisgICAgfQorCisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7CisKKyAgICAgICAgZ2xHZW5GcmFtZWJ1
ZmZlcnMoMSwgJm1GcmFtZWJ1ZmZlcik7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZS
QU1FQlVGRkVSLCBtRnJhbWVidWZmZXIpOworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBv
dmVycmlkZQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOworCisgICAgICAg
IGlmIChtVGV4dHVyZSAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICBnbERlbGV0ZVRleHR1
cmVzKDEsICZtVGV4dHVyZSk7CisgICAgICAgICAgICBtVGV4dHVyZSA9IDA7CisgICAgICAgIH0K
KworICAgICAgICBpZiAobVJlbmRlcmJ1ZmZlciAhPSAwKQorICAgICAgICB7CisgICAgICAgICAg
ICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1SZW5kZXJidWZmZXIpOworICAgICAgICAgICAg
bVJlbmRlcmJ1ZmZlciA9IDA7CisgICAgICAgIH0KKworICAgICAgICBpZiAobUZyYW1lYnVmZmVy
ICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZt
RnJhbWVidWZmZXIpOworICAgICAgICAgICAgbUZyYW1lYnVmZmVyID0gMDsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChtUHJvZ3JhbSAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICBnbERl
bGV0ZVByb2dyYW0obVByb2dyYW0pOworICAgICAgICAgICAgbVByb2dyYW0gPSAwOworICAgICAg
ICB9CisgICAgfQorCisgICAgR0x1aW50IG1GcmFtZWJ1ZmZlcjsKKyAgICBHTHVpbnQgbVRleHR1
cmU7CisgICAgR0x1aW50IG1SZW5kZXJidWZmZXI7CisgICAgR0x1aW50IG1Qcm9ncmFtOworfTsK
KworVEVTVF9QKEZyYW1lYnVmZmVyRm9ybWF0c1Rlc3QsIFJHQkE0KQoreworICAgIHRlc3RUZXh0
dXJlRm9ybWF0KEdMX1JHQkE0LCA0LCA0LCA0LCA0KTsKK30KKworVEVTVF9QKEZyYW1lYnVmZmVy
Rm9ybWF0c1Rlc3QsIFJHQjU2NSkKK3sKKyAgICB0ZXN0VGV4dHVyZUZvcm1hdChHTF9SR0I1NjUs
IDUsIDYsIDUsIDApOworfQorCitURVNUX1AoRnJhbWVidWZmZXJGb3JtYXRzVGVzdCwgUkdCOCkK
K3sKKyAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFleHRlbnNpb25FbmFi
bGVkKCJHTF9PRVNfcmdiOF9yZ2JhOCIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJU
ZXN0IHNraXBwZWQgZHVlIHRvIG1pc3NpbmcgRVMzIG9yIEdMX09FU19yZ2I4X3JnYmE4LiIgPDwg
c3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdGVzdFRleHR1cmVGb3Jt
YXQoR0xfUkdCOF9PRVMsIDgsIDgsIDgsIDApOworfQorCitURVNUX1AoRnJhbWVidWZmZXJGb3Jt
YXRzVGVzdCwgQkdSQTgpCit7CisgICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfdGV4
dHVyZV9mb3JtYXRfQkdSQTg4ODgiKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVz
dCBza2lwcGVkIGR1ZSB0byBtaXNzaW5nIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OC4i
IDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHRlc3RUZXh0dXJl
Rm9ybWF0KEdMX0JHUkE4X0VYVCwgOCwgOCwgOCwgOCk7Cit9CisKK1RFU1RfUChGcmFtZWJ1ZmZl
ckZvcm1hdHNUZXN0LCBSR0JBOCkKK3sKKyAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkg
PCAzICYmICFleHRlbnNpb25FbmFibGVkKCJHTF9PRVNfcmdiOF9yZ2JhOCIpKQorICAgIHsKKyAg
ICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgZHVlIHRvIG1pc3NpbmcgRVMzIG9yIEdM
X09FU19yZ2I4X3JnYmE4LiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgdGVzdFRleHR1cmVGb3JtYXQoR0xfUkdCQThfT0VTLCA4LCA4LCA4LCA4KTsKK30KKwor
VEVTVF9QKEZyYW1lYnVmZmVyRm9ybWF0c1Rlc3QsIFJlbmRlcmJ1ZmZlck11bHRpc2FtcGxlX0RF
UFRIMTYpCit7CisgICAgdGVzdFJlbmRlcmJ1ZmZlck11bHRpc2FtcGxlRm9ybWF0KDIsIEdMX0RF
UFRIX0FUVEFDSE1FTlQsIEdMX0RFUFRIX0NPTVBPTkVOVDE2KTsKK30KKworVEVTVF9QKEZyYW1l
YnVmZmVyRm9ybWF0c1Rlc3QsIFJlbmRlcmJ1ZmZlck11bHRpc2FtcGxlX0RFUFRIMjQpCit7Cisg
ICAgdGVzdFJlbmRlcmJ1ZmZlck11bHRpc2FtcGxlRm9ybWF0KDMsIEdMX0RFUFRIX0FUVEFDSE1F
TlQsIEdMX0RFUFRIX0NPTVBPTkVOVDI0KTsKK30KKworVEVTVF9QKEZyYW1lYnVmZmVyRm9ybWF0
c1Rlc3QsIFJlbmRlcmJ1ZmZlck11bHRpc2FtcGxlX0RFUFRIMzJGKQoreworICAgIGlmIChnZXRD
bGllbnRNYWpvclZlcnNpb24oKSA8IDMpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRl
c3Qgc2tpcHBlZCBkdWUgdG8gbWlzc2luZyBFUzMuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICB0ZXN0UmVuZGVyYnVmZmVyTXVsdGlzYW1wbGVGb3JtYXQoMywg
R0xfREVQVEhfQVRUQUNITUVOVCwgR0xfREVQVEhfQ09NUE9ORU5UMzJGKTsKK30KKworVEVTVF9Q
KEZyYW1lYnVmZmVyRm9ybWF0c1Rlc3QsIFJlbmRlcmJ1ZmZlck11bHRpc2FtcGxlX0RFUFRIMjRf
U1RFTkNJTDgpCit7CisgICAgdGVzdFJlbmRlcmJ1ZmZlck11bHRpc2FtcGxlRm9ybWF0KDMsIEdM
X0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgR0xfREVQVEgyNF9TVEVOQ0lMOCk7Cit9CisKK1RF
U1RfUChGcmFtZWJ1ZmZlckZvcm1hdHNUZXN0LCBSZW5kZXJidWZmZXJNdWx0aXNhbXBsZV9ERVBU
SDMyRl9TVEVOQ0lMOCkKK3sKKyAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQor
ICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgZHVlIHRvIG1pc3Npbmcg
RVMzLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdGVzdFJl
bmRlcmJ1ZmZlck11bHRpc2FtcGxlRm9ybWF0KDMsIEdMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVO
VCwgR0xfREVQVEgzMkZfU1RFTkNJTDgpOworfQorCitURVNUX1AoRnJhbWVidWZmZXJGb3JtYXRz
VGVzdCwgUmVuZGVyYnVmZmVyTXVsdGlzYW1wbGVfU1RFTkNJTF9JTkRFWDgpCit7CisgICAgLy8g
VE9ETyhnZW9mZmxhbmcpOiBGaWd1cmUgb3V0IGhvdyB0byBzdXBwb3J0IEdMU1RFTkNJTF9JTkRF
WDggb24gZGVza3RvcCBHTAorICAgIGlmIChHZXRQYXJhbSgpLmdldFJlbmRlcmVyKCkgPT0gRUdM
X1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFKQorICAgIHsKKyAgICAgICAgc3RkOjpj
b3V0IDw8ICJUZXN0IHNraXBwZWQgb24gRGVza3RvcCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0ZXN0UmVuZGVyYnVmZmVyTXVsdGlzYW1wbGVG
b3JtYXQoMiwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5ULCBHTF9TVEVOQ0lMX0lOREVYOCk7Cit9CisK
Ky8vIFRlc3QgdGhhdCBiaW5kaW5nIGFuIGluY29tcGxldGUgY3ViZSBtYXAgaXMgcmVqZWN0ZWQg
YnkgQU5HTEUuCitURVNUX1AoRnJhbWVidWZmZXJGb3JtYXRzVGVzdCwgSW5jb21wbGV0ZUN1YmVN
YXApCit7CisgICAgLy8gRmlyc3QgbWFrZSBhIGNvbXBsZXRlIEN1YmVNYXAuCisgICAgZ2xHZW5U
ZXh0dXJlcygxLCAmbVRleHR1cmUpOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV9DVUJF
X01BUCwgbVRleHR1cmUpOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFX0NVQkVfTUFQX1BP
U0lUSVZFX1gsIDAsIEdMX1JHQkEsIDgsIDgsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUs
CisgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJF
X0NVQkVfTUFQX1BPU0lUSVZFX1ksIDAsIEdMX1JHQkEsIDgsIDgsIDAsIEdMX1JHQkEsIEdMX1VO
U0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgIGdsVGV4SW1hZ2Uy
RChHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1osIDAsIEdMX1JHQkEsIDgsIDgsIDAsIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAg
IGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1gsIDAsIEdMX1JHQkEs
IDgsIDgsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgIG51
bGxwdHIpOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ks
IDAsIEdMX1JHQkEsIDgsIDgsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAg
ICAgICAgICAgIG51bGxwdHIpOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFX0NVQkVfTUFQ
X05FR0FUSVZFX1osIDAsIEdMX1JHQkEsIDgsIDgsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsCisgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFX0NVQkVfTUFQLCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0NVQkVfTUFQLCBHTF9URVhUVVJFX01BR19GSUxU
RVIsIEdMX05FQVJFU1QpOworCisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJV
RkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVf
WCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1UZXh0dXJlLCAwKTsKKworICAgIC8vIFZl
cmlmeSB0aGUgZnJhbWVidWZmZXIgaXMgY29tcGxldGUuCisgICAgQVNTRVJUX0dMRU5VTV9FUShH
TF9GUkFNRUJVRkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1F
QlVGRkVSKSk7CisKKyAgICAvLyBNYWtlIHRoZSBDdWJlTWFwIGN1YmUtaW5jb21wbGV0ZS4KKyAg
ICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aLCAwLCBHTF9SR0JB
LCAxNiwgMTYsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAg
IG51bGxwdHIpOworCisgICAgLy8gVmVyaWZ5IHRoZSBmcmFtZWJ1ZmZlciBpcyBpbmNvbXBsZXRl
LgorICAgIEFTU0VSVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hN
RU5ULAorICAgICAgICAgICAgICAgICAgICAgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZS
QU1FQlVGRkVSKSk7CisKKyAgICAvLyBWZXJpZnkgZHJhd2luZyB3aXRoIHRoZSBpbmNvbXBsZXRl
IGZyYW1lYnVmZmVyIHByb2R1Y2VzIGEgR0wgZXJyb3IKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAm
dnMgPSAiYXR0cmlidXRlIHZlYzQgcG9zaXRpb247IHZvaWQgbWFpbigpIHsgZ2xfUG9zaXRpb24g
PSBwb3NpdGlvbjsgfSI7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnBzID0gInZvaWQgbWFpbigp
IHsgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLCAwLCAwLCAxKTsgfSI7CisgICAgbVByb2dyYW0gPSBD
b21waWxlUHJvZ3JhbSh2cywgcHMpOworICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOworICAg
IGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICBBU1NFUlRfR0xfRVJS
T1IoR0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04pOworfQorCisvLyBUZXN0IHRoYXQg
YSByZW5kZXJidWZmZXIgd2l0aCB6ZXJvIGhlaWdodCBidXQgbm9uemVybyB3aWR0aCBpcyBoYW5k
bGVkIHdpdGhvdXQgY3Jhc2hlcy9hc3NlcnRzLgorVEVTVF9QKEZyYW1lYnVmZmVyRm9ybWF0c1Rl
c3QsIFplcm9IZWlnaHRSZW5kZXJidWZmZXIpCit7CisgICAgaWYgKGdldENsaWVudE1ham9yVmVy
c2lvbigpIDwgMykKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGR1
ZSB0byBtaXNzaW5nIEVTMyIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgdGVzdFplcm9IZWlnaHRSZW5kZXJidWZmZXIoKTsKK30KKworLy8gVXNlIHRoaXMgdG8g
c2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBH
TEVTIG1ham9yIHZlcnNpb24pIHRoZXNlCisvLyB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3Qu
CitBTkdMRV9JTlNUQU5USUFURV9URVNUKEZyYW1lYnVmZmVyRm9ybWF0c1Rlc3QsCisgICAgICAg
ICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9E
M0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfRDNEMTEoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgRVMyX09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BF
TkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpLAorICAgICAgICAg
ICAgICAgICAgICAgICBFUzNfT1BFTkdMRVMoKSk7CisKK2NsYXNzIEZyYW1lYnVmZmVySW52YWxp
ZGF0ZVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBGcmFtZWJ1
ZmZlckludmFsaWRhdGVUZXN0KCkgOiBtRnJhbWVidWZmZXIoMCksIG1SZW5kZXJidWZmZXIoMCkg
e30KKworICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0
OjpTZXRVcCgpOworCisgICAgICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZtRnJhbWVidWZmZXIp
OworICAgICAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1SZW5kZXJidWZmZXIpOworICAgIH0K
KworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgZ2xEZWxldGVG
cmFtZWJ1ZmZlcnMoMSwgJm1GcmFtZWJ1ZmZlcik7CisgICAgICAgIGdsRGVsZXRlUmVuZGVyYnVm
ZmVycygxLCAmbVJlbmRlcmJ1ZmZlcik7CisgICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsK
KyAgICB9CisKKyAgICBHTHVpbnQgbUZyYW1lYnVmZmVyOworICAgIEdMdWludCBtUmVuZGVyYnVm
ZmVyOworfTsKKworLy8gQ292ZXJzIGludmFsaWRhdGluZyBhbiBpbmNvbXBsZXRlIGZyYW1lYnVm
ZmVyLiBUaGlzIHNob3VsZCBiZSBhIG5vLW9wLCBidXQgc2hvdWxkIG5vdCBlcnJvci4KK1RFU1Rf
UChGcmFtZWJ1ZmZlckludmFsaWRhdGVUZXN0LCBJbmNvbXBsZXRlKQoreworICAgIGdsQmluZEZy
YW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZmZXIpOworICAgIGdsQmluZFJlbmRl
cmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1SZW5kZXJidWZmZXIpOworICAgIGdsRnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9S
RU5ERVJCVUZGRVIsIG1SZW5kZXJidWZmZXIpOworICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRlJB
TUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5ULAorICAgICAgICAgICAgICAgICAgICAgZ2xD
aGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7CisKKyAgICBzdGQ6OnZlY3Rv
cjxHTGVudW0+IGF0dGFjaG1lbnRzOworICAgIGF0dGFjaG1lbnRzLnB1c2hfYmFjayhHTF9DT0xP
Ul9BVFRBQ0hNRU5UMCk7CisKKyAgICBnbEludmFsaWRhdGVGcmFtZWJ1ZmZlcihHTF9GUkFNRUJV
RkZFUiwgMSwgYXR0YWNobWVudHMuZGF0YSgpKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
K30KKworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChGcmFtZWJ1ZmZlckludmFsaWRhdGVUZXN0LCBF
UzNfRDNEMTEoKSwgRVMzX09QRU5HTCgpLCBFUzNfT1BFTkdMRVMoKSk7CkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvR0xTTFRlc3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9HTFNMVGVz
dC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2dsX3Rlc3RzL0dMU0xUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI0NDMgQEAK
Ky8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vCisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorCisjaW5jbHVk
ZSAibGliQU5HTEUvQ29udGV4dC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1Byb2dyYW0uaCIKKyNp
bmNsdWRlICJ0ZXN0X3V0aWxzL2dsX3JhaWkuaCIKKwordXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwor
CituYW1lc3BhY2UKK3sKKworY2xhc3MgR0xTTFRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7Cisg
IHByb3RlY3RlZDoKKyAgICBHTFNMVGVzdCgpCisgICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0
aCgxMjgpOworICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKKyAgICAgICAgc2V0Q29uZmln
UmVkQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAgICBzZXRD
b25maWdCbHVlQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAgIH0K
KworICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNl
dFVwKCk7CisKKyAgICAgICAgbVNpbXBsZVZTU291cmNlID0gU0hBREVSX1NPVVJDRQorICAgICAg
ICAoCisgICAgICAgICAgICBhdHRyaWJ1dGUgdmVjNCBpbnB1dEF0dHJpYnV0ZTsKKyAgICAgICAg
ICAgIHZvaWQgbWFpbigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xfUG9zaXRp
b24gPSBpbnB1dEF0dHJpYnV0ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKyAgICB9CisK
KyAgICBzdGQ6OnN0cmluZyBHZW5lcmF0ZVZhcnlpbmdUeXBlKEdMaW50IHZlY3RvclNpemUpCisg
ICAgeworICAgICAgICBjaGFyIHZhcnlpbmdUeXBlWzEwXTsKKworICAgICAgICBpZiAodmVjdG9y
U2l6ZSA9PSAxKQorICAgICAgICB7CisgICAgICAgICAgICBzcHJpbnRmKHZhcnlpbmdUeXBlLCAi
ZmxvYXQiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAg
IHNwcmludGYodmFyeWluZ1R5cGUsICJ2ZWMlZCIsIHZlY3RvclNpemUpOworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKHZhcnlpbmdUeXBlKTsKKyAgICB9CisKKyAgICBz
dGQ6OnN0cmluZyBHZW5lcmF0ZVZlY3RvclZhcnlpbmdEZWNsYXJhdGlvbihHTGludCB2ZWN0b3JT
aXplLCBHTGludCBhcnJheVNpemUsIEdMaW50IGlkKQorICAgIHsKKyAgICAgICAgY2hhciBidWZm
WzEwMF07CisKKyAgICAgICAgaWYgKGFycmF5U2l6ZSA9PSAxKQorICAgICAgICB7CisgICAgICAg
ICAgICBzcHJpbnRmKGJ1ZmYsICJ2YXJ5aW5nICVzIHYlZDtcbiIsIEdlbmVyYXRlVmFyeWluZ1R5
cGUodmVjdG9yU2l6ZSkuY19zdHIoKSwgaWQpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAg
ICAgICAgeworICAgICAgICAgICAgc3ByaW50ZihidWZmLCAidmFyeWluZyAlcyB2JWRbJWRdO1xu
IiwgR2VuZXJhdGVWYXJ5aW5nVHlwZSh2ZWN0b3JTaXplKS5jX3N0cigpLCBpZCwgYXJyYXlTaXpl
KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBzdGQ6OnN0cmluZyhidWZmKTsKKyAgICB9
CisKKyAgICBzdGQ6OnN0cmluZyBHZW5lcmF0ZVZlY3RvclZhcnlpbmdTZXR0aW5nQ29kZShHTGlu
dCB2ZWN0b3JTaXplLCBHTGludCBhcnJheVNpemUsIEdMaW50IGlkKQorICAgIHsKKyAgICAgICAg
c3RkOjpzdHJpbmcgcmV0dXJuU3RyaW5nOworICAgICAgICBjaGFyIGJ1ZmZbMTAwXTsKKworICAg
ICAgICBpZiAoYXJyYXlTaXplID09IDEpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNwcmludGYo
YnVmZiwgIlx0IHYlZCA9ICVzKDEuMCk7XG4iLCBpZCwgR2VuZXJhdGVWYXJ5aW5nVHlwZSh2ZWN0
b3JTaXplKS5jX3N0cigpKTsKKyAgICAgICAgICAgIHJldHVyblN0cmluZyArPSBidWZmOworICAg
ICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBhcnJheVNpemU7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBz
cHJpbnRmKGJ1ZmYsICJcdCB2JWRbJWRdID0gJXMoMS4wKTtcbiIsIGlkLCBpLCBHZW5lcmF0ZVZh
cnlpbmdUeXBlKHZlY3RvclNpemUpLmNfc3RyKCkpOworICAgICAgICAgICAgICAgIHJldHVyblN0
cmluZyArPSBidWZmOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJu
IHJldHVyblN0cmluZzsKKyAgICB9CisKKyAgICBzdGQ6OnN0cmluZyBHZW5lcmF0ZVZlY3RvclZh
cnlpbmdVc2VDb2RlKEdMaW50IGFycmF5U2l6ZSwgR0xpbnQgaWQpCisgICAgeworICAgICAgICBp
ZiAoYXJyYXlTaXplID09IDEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNoYXIgYnVmZlsxMDBd
OworICAgICAgICAgICAgc3ByaW50ZihidWZmLCAidiVkICsgIiwgaWQpOworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6c3RyaW5nKGJ1ZmYpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RkOjpzdHJpbmcgcmV0dXJuU3RyaW5nOworICAgICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBhcnJheVNpemU7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBjaGFyIGJ1ZmZbMTAwXTsKKyAgICAgICAgICAgICAgICBzcHJpbnRmKGJ1ZmYs
ICJ2JWRbJWRdICsgIiwgaWQsIGkpOworICAgICAgICAgICAgICAgIHJldHVyblN0cmluZyArPSBi
dWZmOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHJldHVyblN0cmluZzsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHZvaWQgR2VuZXJhdGVHTFNMV2l0aFZhcnlpbmdzKEdMaW50
IGZsb2F0Q291bnQsIEdMaW50IGZsb2F0QXJyYXlDb3VudCwgR0xpbnQgdmVjMkNvdW50LCBHTGlu
dCB2ZWMyQXJyYXlDb3VudCwgR0xpbnQgdmVjM0NvdW50LCBHTGludCB2ZWMzQXJyYXlDb3VudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2ZWM0Q291bnQsIEdMaW50
IHZlYzRBcnJheUNvdW50LCBib29sIHVzZUZyYWdDb29yZCwgYm9vbCB1c2VQb2ludENvb3JkLCBi
b29sIHVzZVBvaW50U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OnN0cmluZyogZnJhZ21lbnRTaGFkZXIsIHN0ZDo6c3RyaW5nKiB2ZXJ0ZXhTaGFkZXIpCisgICAg
eworICAgICAgICAvLyBHZW5lcmF0ZSBhIHN0cmluZyBkZWNsYXJpbmcgdGhlIHZhcnlpbmdzLCB0
byBzaGFyZSBiZXR3ZWVuIHRoZSBmcmFnbWVudCBzaGFkZXIgYW5kIHRoZSB2ZXJ0ZXggc2hhZGVy
LgorICAgICAgICBzdGQ6OnN0cmluZyB2YXJ5aW5nRGVjbGFyYXRpb247CisKKyAgICAgICAgdW5z
aWduZWQgaW50IHZhcnlpbmdDb3VudCA9IDA7CisKKyAgICAgICAgZm9yIChHTGludCBpID0gMDsg
aSA8IGZsb2F0Q291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgdmFyeWluZ0RlY2xh
cmF0aW9uICs9IEdlbmVyYXRlVmVjdG9yVmFyeWluZ0RlY2xhcmF0aW9uKDEsIDEsIHZhcnlpbmdD
b3VudCk7CisgICAgICAgICAgICB2YXJ5aW5nQ291bnQgKz0gMTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCBmbG9hdEFycmF5Q291bnQ7IGkrKykKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyeWluZ0RlY2xhcmF0aW9uICs9IEdlbmVyYXRlVmVjdG9yVmFyeWlu
Z0RlY2xhcmF0aW9uKDEsIDIsIHZhcnlpbmdDb3VudCk7CisgICAgICAgICAgICB2YXJ5aW5nQ291
bnQgKz0gMTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCB2ZWMy
Q291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgdmFyeWluZ0RlY2xhcmF0aW9uICs9
IEdlbmVyYXRlVmVjdG9yVmFyeWluZ0RlY2xhcmF0aW9uKDIsIDEsIHZhcnlpbmdDb3VudCk7Cisg
ICAgICAgICAgICB2YXJ5aW5nQ291bnQgKz0gMTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAo
R0xpbnQgaSA9IDA7IGkgPCB2ZWMyQXJyYXlDb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXJ5aW5nRGVjbGFyYXRpb24gKz0gR2VuZXJhdGVWZWN0b3JWYXJ5aW5nRGVjbGFyYXRp
b24oMiwgMiwgdmFyeWluZ0NvdW50KTsKKyAgICAgICAgICAgIHZhcnlpbmdDb3VudCArPSAxOwor
ICAgICAgICB9CisKKyAgICAgICAgZm9yIChHTGludCBpID0gMDsgaSA8IHZlYzNDb3VudDsgaSsr
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXJ5aW5nRGVjbGFyYXRpb24gKz0gR2VuZXJhdGVW
ZWN0b3JWYXJ5aW5nRGVjbGFyYXRpb24oMywgMSwgdmFyeWluZ0NvdW50KTsKKyAgICAgICAgICAg
IHZhcnlpbmdDb3VudCArPSAxOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChHTGludCBpID0g
MDsgaSA8IHZlYzNBcnJheUNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhcnlp
bmdEZWNsYXJhdGlvbiArPSBHZW5lcmF0ZVZlY3RvclZhcnlpbmdEZWNsYXJhdGlvbigzLCAyLCB2
YXJ5aW5nQ291bnQpOworICAgICAgICAgICAgdmFyeWluZ0NvdW50ICs9IDE7CisgICAgICAgIH0K
KworICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgdmVjNENvdW50OyBpKyspCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhcnlpbmdEZWNsYXJhdGlvbiArPSBHZW5lcmF0ZVZlY3RvclZhcnlp
bmdEZWNsYXJhdGlvbig0LCAxLCB2YXJ5aW5nQ291bnQpOworICAgICAgICAgICAgdmFyeWluZ0Nv
dW50ICs9IDE7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgdmVj
NEFycmF5Q291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgdmFyeWluZ0RlY2xhcmF0
aW9uICs9IEdlbmVyYXRlVmVjdG9yVmFyeWluZ0RlY2xhcmF0aW9uKDQsIDIsIHZhcnlpbmdDb3Vu
dCk7CisgICAgICAgICAgICB2YXJ5aW5nQ291bnQgKz0gMTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIEdlbmVyYXRlIHRoZSB2ZXJ0ZXggc2hhZGVyCisgICAgICAgIHZlcnRleFNoYWRlci0+Y2xl
YXIoKTsKKyAgICAgICAgdmVydGV4U2hhZGVyLT5hcHBlbmQodmFyeWluZ0RlY2xhcmF0aW9uKTsK
KyAgICAgICAgdmVydGV4U2hhZGVyLT5hcHBlbmQoIlxudm9pZCBtYWluKClcbntcbiIpOworCisg
ICAgICAgIHVuc2lnbmVkIGludCBjdXJyZW50VlNWYXJ5aW5nID0gMDsKKworICAgICAgICBmb3Ig
KEdMaW50IGkgPSAwOyBpIDwgZmxvYXRDb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAg
ICB2ZXJ0ZXhTaGFkZXItPmFwcGVuZChHZW5lcmF0ZVZlY3RvclZhcnlpbmdTZXR0aW5nQ29kZSgx
LCAxLCBjdXJyZW50VlNWYXJ5aW5nKSk7CisgICAgICAgICAgICBjdXJyZW50VlNWYXJ5aW5nICs9
IDE7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgZmxvYXRBcnJh
eUNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHZlcnRleFNoYWRlci0+YXBwZW5k
KEdlbmVyYXRlVmVjdG9yVmFyeWluZ1NldHRpbmdDb2RlKDEsIDIsIGN1cnJlbnRWU1Zhcnlpbmcp
KTsKKyAgICAgICAgICAgIGN1cnJlbnRWU1ZhcnlpbmcgKz0gMTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCB2ZWMyQ291bnQ7IGkrKykKKyAgICAgICAgeworICAg
ICAgICAgICAgdmVydGV4U2hhZGVyLT5hcHBlbmQoR2VuZXJhdGVWZWN0b3JWYXJ5aW5nU2V0dGlu
Z0NvZGUoMiwgMSwgY3VycmVudFZTVmFyeWluZykpOworICAgICAgICAgICAgY3VycmVudFZTVmFy
eWluZyArPSAxOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChHTGludCBpID0gMDsgaSA8IHZl
YzJBcnJheUNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHZlcnRleFNoYWRlci0+
YXBwZW5kKEdlbmVyYXRlVmVjdG9yVmFyeWluZ1NldHRpbmdDb2RlKDIsIDIsIGN1cnJlbnRWU1Zh
cnlpbmcpKTsKKyAgICAgICAgICAgIGN1cnJlbnRWU1ZhcnlpbmcgKz0gMTsKKyAgICAgICAgfQor
CisgICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCB2ZWMzQ291bnQ7IGkrKykKKyAgICAgICAg
eworICAgICAgICAgICAgdmVydGV4U2hhZGVyLT5hcHBlbmQoR2VuZXJhdGVWZWN0b3JWYXJ5aW5n
U2V0dGluZ0NvZGUoMywgMSwgY3VycmVudFZTVmFyeWluZykpOworICAgICAgICAgICAgY3VycmVu
dFZTVmFyeWluZyArPSAxOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChHTGludCBpID0gMDsg
aSA8IHZlYzNBcnJheUNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHZlcnRleFNo
YWRlci0+YXBwZW5kKEdlbmVyYXRlVmVjdG9yVmFyeWluZ1NldHRpbmdDb2RlKDMsIDIsIGN1cnJl
bnRWU1ZhcnlpbmcpKTsKKyAgICAgICAgICAgIGN1cnJlbnRWU1ZhcnlpbmcgKz0gMTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCB2ZWM0Q291bnQ7IGkrKykKKyAg
ICAgICAgeworICAgICAgICAgICAgdmVydGV4U2hhZGVyLT5hcHBlbmQoR2VuZXJhdGVWZWN0b3JW
YXJ5aW5nU2V0dGluZ0NvZGUoNCwgMSwgY3VycmVudFZTVmFyeWluZykpOworICAgICAgICAgICAg
Y3VycmVudFZTVmFyeWluZyArPSAxOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChHTGludCBp
ID0gMDsgaSA8IHZlYzRBcnJheUNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHZl
cnRleFNoYWRlci0+YXBwZW5kKEdlbmVyYXRlVmVjdG9yVmFyeWluZ1NldHRpbmdDb2RlKDQsIDIs
IGN1cnJlbnRWU1ZhcnlpbmcpKTsKKyAgICAgICAgICAgIGN1cnJlbnRWU1ZhcnlpbmcgKz0gMTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICh1c2VQb2ludFNpemUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZlcnRleFNoYWRlci0+YXBwZW5kKCJnbF9Qb2ludFNpemUgPSAxLjA7XG4iKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHZlcnRleFNoYWRlci0+YXBwZW5kKCJ9XG4iKTsKKworICAgICAg
ICAvLyBHZW5lcmF0ZSB0aGUgZnJhZ21lbnQgc2hhZGVyCisgICAgICAgIGZyYWdtZW50U2hhZGVy
LT5jbGVhcigpOworICAgICAgICBmcmFnbWVudFNoYWRlci0+YXBwZW5kKCJwcmVjaXNpb24gaGln
aHAgZmxvYXQ7XG4iKTsKKyAgICAgICAgZnJhZ21lbnRTaGFkZXItPmFwcGVuZCh2YXJ5aW5nRGVj
bGFyYXRpb24pOworICAgICAgICBmcmFnbWVudFNoYWRlci0+YXBwZW5kKCJcbnZvaWQgbWFpbigp
IFxueyBcblx0dmVjNCByZXRDb2xvciA9IHZlYzQoMCwwLDAsMCk7XG4iKTsKKworICAgICAgICB1
bnNpZ25lZCBpbnQgY3VycmVudEZTVmFyeWluZyA9IDA7CisKKyAgICAgICAgLy8gTWFrZSB1c2Ug
b2YgdGhlIGZsb2F0IHZhcnlpbmdzCisgICAgICAgIGZyYWdtZW50U2hhZGVyLT5hcHBlbmQoIlx0
cmV0Q29sb3IgKz0gdmVjNCgiKTsKKworICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgZmxv
YXRDb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBmcmFnbWVudFNoYWRlci0+YXBw
ZW5kKEdlbmVyYXRlVmVjdG9yVmFyeWluZ1VzZUNvZGUoMSwgY3VycmVudEZTVmFyeWluZykpOwor
ICAgICAgICAgICAgY3VycmVudEZTVmFyeWluZyArPSAxOworICAgICAgICB9CisKKyAgICAgICAg
Zm9yIChHTGludCBpID0gMDsgaSA8IGZsb2F0QXJyYXlDb3VudDsgaSsrKQorICAgICAgICB7Cisg
ICAgICAgICAgICBmcmFnbWVudFNoYWRlci0+YXBwZW5kKEdlbmVyYXRlVmVjdG9yVmFyeWluZ1Vz
ZUNvZGUoMiwgY3VycmVudEZTVmFyeWluZykpOworICAgICAgICAgICAgY3VycmVudEZTVmFyeWlu
ZyArPSAxOworICAgICAgICB9CisKKyAgICAgICAgZnJhZ21lbnRTaGFkZXItPmFwcGVuZCgiMC4w
LCAwLjAsIDAuMCwgMC4wKTtcbiIpOworCisgICAgICAgIC8vIE1ha2UgdXNlIG9mIHRoZSB2ZWMy
IHZhcnlpbmdzCisgICAgICAgIGZyYWdtZW50U2hhZGVyLT5hcHBlbmQoIlx0cmV0Q29sb3IgKz0g
dmVjNCgiKTsKKworICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgdmVjMkNvdW50OyBpKysp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGZyYWdtZW50U2hhZGVyLT5hcHBlbmQoR2VuZXJhdGVW
ZWN0b3JWYXJ5aW5nVXNlQ29kZSgxLCBjdXJyZW50RlNWYXJ5aW5nKSk7CisgICAgICAgICAgICBj
dXJyZW50RlNWYXJ5aW5nICs9IDE7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKEdMaW50IGkg
PSAwOyBpIDwgdmVjMkFycmF5Q291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgZnJh
Z21lbnRTaGFkZXItPmFwcGVuZChHZW5lcmF0ZVZlY3RvclZhcnlpbmdVc2VDb2RlKDIsIGN1cnJl
bnRGU1ZhcnlpbmcpKTsKKyAgICAgICAgICAgIGN1cnJlbnRGU1ZhcnlpbmcgKz0gMTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZyYWdtZW50U2hhZGVyLT5hcHBlbmQoInZlYzIoMC4wLCAwLjApLCAw
LjAsIDAuMCk7XG4iKTsKKworICAgICAgICAvLyBNYWtlIHVzZSBvZiB0aGUgdmVjMyB2YXJ5aW5n
cworICAgICAgICBmcmFnbWVudFNoYWRlci0+YXBwZW5kKCJcdHJldENvbG9yICs9IHZlYzQoIik7
CisKKyAgICAgICAgZm9yIChHTGludCBpID0gMDsgaSA8IHZlYzNDb3VudDsgaSsrKQorICAgICAg
ICB7CisgICAgICAgICAgICBmcmFnbWVudFNoYWRlci0+YXBwZW5kKEdlbmVyYXRlVmVjdG9yVmFy
eWluZ1VzZUNvZGUoMSwgY3VycmVudEZTVmFyeWluZykpOworICAgICAgICAgICAgY3VycmVudEZT
VmFyeWluZyArPSAxOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChHTGludCBpID0gMDsgaSA8
IHZlYzNBcnJheUNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGZyYWdtZW50U2hh
ZGVyLT5hcHBlbmQoR2VuZXJhdGVWZWN0b3JWYXJ5aW5nVXNlQ29kZSgyLCBjdXJyZW50RlNWYXJ5
aW5nKSk7CisgICAgICAgICAgICBjdXJyZW50RlNWYXJ5aW5nICs9IDE7CisgICAgICAgIH0KKwor
ICAgICAgICBmcmFnbWVudFNoYWRlci0+YXBwZW5kKCJ2ZWMzKDAuMCwgMC4wLCAwLjApLCAwLjAp
O1xuIik7CisKKyAgICAgICAgLy8gTWFrZSB1c2Ugb2YgdGhlIHZlYzQgdmFyeWluZ3MKKyAgICAg
ICAgZnJhZ21lbnRTaGFkZXItPmFwcGVuZCgiXHRyZXRDb2xvciArPSAiKTsKKworICAgICAgICBm
b3IgKEdMaW50IGkgPSAwOyBpIDwgdmVjNENvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGZyYWdtZW50U2hhZGVyLT5hcHBlbmQoR2VuZXJhdGVWZWN0b3JWYXJ5aW5nVXNlQ29kZSgx
LCBjdXJyZW50RlNWYXJ5aW5nKSk7CisgICAgICAgICAgICBjdXJyZW50RlNWYXJ5aW5nICs9IDE7
CisgICAgICAgIH0KKworICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgdmVjNEFycmF5Q291
bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXItPmFwcGVuZChH
ZW5lcmF0ZVZlY3RvclZhcnlpbmdVc2VDb2RlKDIsIGN1cnJlbnRGU1ZhcnlpbmcpKTsKKyAgICAg
ICAgICAgIGN1cnJlbnRGU1ZhcnlpbmcgKz0gMTsKKyAgICAgICAgfQorCisgICAgICAgIGZyYWdt
ZW50U2hhZGVyLT5hcHBlbmQoInZlYzQoMC4wLCAwLjAsIDAuMCwgMC4wKTtcbiIpOworCisgICAg
ICAgIC8vIFNldCBnbF9GcmFnQ29sb3IsIGFuZCB1c2Ugc3BlY2lhbCB2YXJpYWJsZXMgaWYgcmVx
dWVzdGVkCisgICAgICAgIGZyYWdtZW50U2hhZGVyLT5hcHBlbmQoIlx0Z2xfRnJhZ0NvbG9yID0g
cmV0Q29sb3IiKTsKKyAgICAgICAgCisgICAgICAgIGlmICh1c2VGcmFnQ29vcmQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGZyYWdtZW50U2hhZGVyLT5hcHBlbmQoIiArIGdsX0ZyYWdDb29yZCIp
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKHVzZVBvaW50Q29vcmQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGZyYWdtZW50U2hhZGVyLT5hcHBlbmQoIiArIHZlYzQoZ2xfUG9pbnRDb29yZCwg
MC4wLCAwLjApIik7CisgICAgICAgIH0KKworICAgICAgICBmcmFnbWVudFNoYWRlci0+YXBwZW5k
KCI7XG59Iik7CisgICAgfQorCisgICAgdm9pZCBWYXJ5aW5nVGVzdEJhc2UoR0xpbnQgZmxvYXRD
b3VudCwgR0xpbnQgZmxvYXRBcnJheUNvdW50LCBHTGludCB2ZWMyQ291bnQsIEdMaW50IHZlYzJB
cnJheUNvdW50LCBHTGludCB2ZWMzQ291bnQsIEdMaW50IHZlYzNBcnJheUNvdW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHZlYzRDb3VudCwgR0xpbnQgdmVjNEFycmF5Q291bnQs
IGJvb2wgdXNlRnJhZ0Nvb3JkLCBib29sIHVzZVBvaW50Q29vcmQsIGJvb2wgdXNlUG9pbnRTaXpl
LCBib29sIGV4cGVjdFN1Y2Nlc3MpCisgICAgeworICAgICAgICBzdGQ6OnN0cmluZyBmcmFnbWVu
dFNoYWRlclNvdXJjZTsKKyAgICAgICAgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlOwor
CisgICAgICAgIEdlbmVyYXRlR0xTTFdpdGhWYXJ5aW5ncyhmbG9hdENvdW50LCBmbG9hdEFycmF5
Q291bnQsIHZlYzJDb3VudCwgdmVjMkFycmF5Q291bnQsIHZlYzNDb3VudCwgdmVjM0FycmF5Q291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWM0Q291bnQsIHZlYzRBcnJh
eUNvdW50LCB1c2VGcmFnQ29vcmQsIHVzZVBvaW50Q29vcmQsIHVzZVBvaW50U2l6ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmcmFnbWVudFNoYWRlclNvdXJjZSwgJnZlcnRl
eFNoYWRlclNvdXJjZSk7CisKKyAgICAgICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3Jh
bSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKKworICAgICAgICBp
ZiAoZXhwZWN0U3VjY2VzcykKKyAgICAgICAgeworICAgICAgICAgICAgRVhQRUNUX05FKDB1LCBw
cm9ncmFtKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAg
IEVYUEVDVF9FUSgwdSwgcHJvZ3JhbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIENv
bXBpbGVHTFNMV2l0aFVuaWZvcm1zQW5kU2FtcGxlcnMoR0xpbnQgdmVydGV4VW5pZm9ybUNvdW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBmcmFn
bWVudFVuaWZvcm1Db3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgdmVydGV4U2FtcGxlcnNDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZnJhZ21lbnRTYW1wbGVyc0NvdW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGV4cGVjdFN1Y2Nlc3Mp
CisgICAgeworICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSB2ZXJ0ZXhTaGFkZXI7CisgICAgICAg
IHN0ZDo6c3RyaW5nc3RyZWFtIGZyYWdtZW50U2hhZGVyOworCisgICAgICAgIC8vIEdlbmVyYXRl
IHRoZSB2ZXJ0ZXggc2hhZGVyCisgICAgICAgIHZlcnRleFNoYWRlciA8PCAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7XG4iOworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdmVydGV4VW5p
Zm9ybUNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHZlcnRleFNoYWRlciA8PCAi
dW5pZm9ybSB2ZWM0IHYiIDw8IGkgPDwgIjtcbiI7CisgICAgICAgIH0KKworICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IHZlcnRleFNhbXBsZXJzQ291bnQ7IGkrKykKKyAgICAgICAgeworICAg
ICAgICAgICAgdmVydGV4U2hhZGVyIDw8ICJ1bmlmb3JtIHNhbXBsZXIyRCBzIiA8PCBpIDw8ICI7
XG4iOworICAgICAgICB9CisKKyAgICAgICAgdmVydGV4U2hhZGVyIDw8ICJ2b2lkIG1haW4oKVxu
e1xuIjsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHZlcnRleFVuaWZvcm1Db3VudDsg
aSsrKQorICAgICAgICB7CisgICAgICAgICAgICB2ZXJ0ZXhTaGFkZXIgPDwgIiAgICBnbF9Qb3Np
dGlvbiArPSAgdiIgPDwgaSA8PCAiO1xuIjsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgdmVydGV4U2FtcGxlcnNDb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAg
ICAgICB2ZXJ0ZXhTaGFkZXIgPDwgIiAgICBnbF9Qb3NpdGlvbiArPSAgdGV4dHVyZTJEKHMiIDw8
IGkgPDwgIiwgdmVjMigwLjAsIDAuMCkpO1xuIjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh2
ZXJ0ZXhVbmlmb3JtQ291bnQgPT0gMCAmJiB2ZXJ0ZXhTYW1wbGVyc0NvdW50ID09IDApCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZlcnRleFNoYWRlciA8PCAiICAgZ2xfUG9zaXRpb24gPSB2ZWM0
KDAuMCk7XG4iOworICAgICAgICB9CisKKyAgICAgICAgdmVydGV4U2hhZGVyIDw8ICJ9XG4iOwor
CisgICAgICAgIC8vIEdlbmVyYXRlIHRoZSBmcmFnbWVudCBzaGFkZXIKKyAgICAgICAgZnJhZ21l
bnRTaGFkZXIgPDwgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIjsKKworICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGZyYWdtZW50VW5pZm9ybUNvdW50OyBpKyspCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGZyYWdtZW50U2hhZGVyIDw8ICJ1bmlmb3JtIHZlYzQgdiIgPDwgaSA8PCAiO1xu
IjsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZnJhZ21lbnRTYW1w
bGVyc0NvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGZyYWdtZW50U2hhZGVyIDw8
ICJ1bmlmb3JtIHNhbXBsZXIyRCBzIiA8PCBpIDw8ICI7XG4iOworICAgICAgICB9CisKKyAgICAg
ICAgZnJhZ21lbnRTaGFkZXIgPDwgInZvaWQgbWFpbigpXG57XG4iOworCisgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgZnJhZ21lbnRVbmlmb3JtQ291bnQ7IGkrKykKKyAgICAgICAgeworICAg
ICAgICAgICAgZnJhZ21lbnRTaGFkZXIgPDwgIiAgICBnbF9GcmFnQ29sb3IgKz0gIHYiIDw8IGkg
PDwgIjtcbiI7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZyYWdt
ZW50U2FtcGxlcnNDb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBmcmFnbWVudFNo
YWRlciA8PCAiICAgIGdsX0ZyYWdDb2xvciArPSAgdGV4dHVyZTJEKHMiIDw8IGkgPDwgIiwgdmVj
MigwLjAsIDAuMCkpO1xuIjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmcmFnbWVudFVuaWZv
cm1Db3VudCA9PSAwICYmIGZyYWdtZW50U2FtcGxlcnNDb3VudCA9PSAwKQorICAgICAgICB7Cisg
ICAgICAgICAgICBmcmFnbWVudFNoYWRlciA8PCAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4w
LCAxLjAsIDAuMCwgMS4wKTtcbiI7CisgICAgICAgIH0KKworICAgICAgICBmcmFnbWVudFNoYWRl
ciA8PCAifVxuIjsKKworICAgICAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZl
cnRleFNoYWRlci5zdHIoKSwgZnJhZ21lbnRTaGFkZXIuc3RyKCkpOworCisgICAgICAgIGlmIChl
eHBlY3RTdWNjZXNzKQorICAgICAgICB7CisgICAgICAgICAgICBFWFBFQ1RfTkUoMHUsIHByb2dy
YW0pOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgRVhQ
RUNUX0VRKDB1LCBwcm9ncmFtKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0ZDo6c3RyaW5n
IG1TaW1wbGVWU1NvdXJjZTsKK307CisKK2NsYXNzIEdMU0xUZXN0X0VTMyA6IHB1YmxpYyBHTFNM
VGVzdAoreworICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQU5HTEVU
ZXN0OjpTZXRVcCgpOworCisgICAgICAgIG1TaW1wbGVWU1NvdXJjZSA9CisgICAgICAgICAgICAi
I3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICAgICAiaW4gdmVjNCBpbnB1dEF0dHJpYnV0ZTsi
CisgICAgICAgICAgICAidm9pZCBtYWluKCkiCisgICAgICAgICAgICAieyIKKyAgICAgICAgICAg
ICIgICAgZ2xfUG9zaXRpb24gPSBpbnB1dEF0dHJpYnV0ZTsiCisgICAgICAgICAgICAifSI7Cisg
ICAgfQorfTsKKworVEVTVF9QKEdMU0xUZXN0LCBOYW1lbGVzc1Njb3BlZFN0cnVjdHMpCit7Cisg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNF
CisgICAgKAorICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAgICAgICB2b2lk
IG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICBzdHJ1Y3QKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBmbG9hdCBxOworICAgICAgICAgICAgfSBiOworCisgICAgICAgICAgICBn
bF9GcmFnQ29sb3IgPSB2ZWM0KDEsIDAsIDAsIDEpOworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9y
LmEgKz0gYi5xOworICAgICAgICB9CisgICAgKTsKKworICAgIEdMdWludCBwcm9ncmFtID0gQ29t
cGlsZVByb2dyYW0obVNpbXBsZVZTU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAg
RVhQRUNUX05FKDB1LCBwcm9ncmFtKTsKK30KKworVEVTVF9QKEdMU0xUZXN0LCBTY29wZWRTdHJ1
Y3RzT3JkZXJCdWcpCit7CisgICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBGaW5kIG91dCB3aHkgdGhp
cyBkb2Vzbid0IGNvbXBpbGUgb24gQXBwbGUgT3BlbkdMIGRyaXZlcnMKKyAgICAvLyAoaHR0cDov
L2FuZ2xlYnVnLmNvbS8xMjkyKQorICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogRmluZCBvdXQgd2h5
IHRoaXMgZG9lc24ndCBjb21waWxlIG9uIEFNRCBPcGVuR0wgZHJpdmVycworICAgIC8vIChodHRw
Oi8vYW5nbGVidWcuY29tLzEyOTEpCisgICAgaWYgKElzRGVza3RvcE9wZW5HTCgpICYmIChJc09T
WCgpIHx8ICFJc05WSURJQSgpKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBk
aXNhYmxlZCBvbiB0aGlzIE9wZW5HTCBjb25maWd1cmF0aW9uLiIgPDwgc3RkOjplbmRsOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFk
ZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgKAorICAgICAgICBwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKworICAgICAgICBzdHJ1Y3QgVAorICAgICAgICB7CisgICAgICAgICAgICBmbG9h
dCBmOworICAgICAgICB9OworCisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIFQgYTsKKworICAgICAgICAgICAgc3RydWN0IFQKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBmbG9hdCBxOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgVCBiOwor
CisgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEsIDAsIDAsIDEpOworICAgICAgICAg
ICAgZ2xfRnJhZ0NvbG9yLmEgKz0gYS5mOworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yLmEgKz0g
Yi5xOworICAgICAgICB9CisgICAgKTsKKworICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVBy
b2dyYW0obVNpbXBsZVZTU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgRVhQRUNU
X05FKDB1LCBwcm9ncmFtKTsKK30KKworVEVTVF9QKEdMU0xUZXN0LCBTY29wZWRTdHJ1Y3RzQnVn
KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0gU0hBREVS
X1NPVVJDRQorICAgICgKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgICAg
ICAgc3RydWN0IFRfMAorICAgICAgICB7CisgICAgICAgICAgICBmbG9hdCBmOworICAgICAgICB9
OworCisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsX0ZyYWdD
b2xvciA9IHZlYzQoMSwgMCwgMCwgMSk7CisKKyAgICAgICAgICAgIHN0cnVjdCBUCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgdmVjMiB2OworICAgICAgICAgICAgfTsKKworICAgICAg
ICAgICAgVF8wIGE7CisgICAgICAgICAgICBUIGI7CisKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xv
ci5hICs9IGEuZjsKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xvci5hICs9IGIudi54OworICAgICAg
ICB9CisgICAgKTsKKworICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0obVNpbXBs
ZVZTU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgRVhQRUNUX05FKDB1LCBwcm9n
cmFtKTsKK30KKworVEVTVF9QKEdMU0xUZXN0LCBEeFBvc2l0aW9uQnVnKQoreworICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZ2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgKAor
ICAgICAgICBhdHRyaWJ1dGUgdmVjNCBpbnB1dEF0dHJpYnV0ZTsKKyAgICAgICAgdmFyeWluZyBm
bG9hdCBkeF9Qb3NpdGlvbjsKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGlucHV0QXR0cmlidXRlKTsKKyAgICAgICAgICAgIGR4
X1Bvc2l0aW9uID0gMC4wOworICAgICAgICB9CisgICAgKTsKKworICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZmcmFnbWVudFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAoCisgICAgICAg
IHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisgICAgICAgIHZhcnlpbmcgZmxvYXQgZHhfUG9z
aXRpb247CisKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xf
RnJhZ0NvbG9yID0gdmVjNChkeF9Qb3NpdGlvbiwgMCwgMCwgMSk7CisgICAgICAgIH0KKyAgICAp
OworCisgICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3Vy
Y2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKKyAgICBFWFBFQ1RfTkUoMHUsIHByb2dyYW0pOwor
fQorCitURVNUX1AoR0xTTFRlc3QsIEVsc2VJZlJld3JpdGluZykKK3sKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyAmdmVydGV4U2hhZGVyU291cmNlID0KKyAgICAgICAgImF0dHJpYnV0ZSB2ZWM0IGFf
cG9zaXRpb247XG4iCisgICAgICAgICJ2YXJ5aW5nIGZsb2F0IHY7XG4iCisgICAgICAgICJ2b2lk
IG1haW4oKSB7XG4iCisgICAgICAgICIgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjtcbiIKKyAg
ICAgICAgIiAgdiA9IDEuMDtcbiIKKyAgICAgICAgIiAgaWYgKGFfcG9zaXRpb24ueCA8PSAwLjUp
IHtcbiIKKyAgICAgICAgIiAgICB2ID0gMC4wO1xuIgorICAgICAgICAiICB9IGVsc2UgaWYgKGFf
cG9zaXRpb24ueCA+PSAwLjUpIHtcbiIKKyAgICAgICAgIiAgICB2ID0gMi4wO1xuIgorICAgICAg
ICAiICB9XG4iCisgICAgICAgICJ9XG4iOworCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdt
ZW50U2hhZGVyU291cmNlID0KKyAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKKyAg
ICAgICAgInZhcnlpbmcgZmxvYXQgdjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAg
ICAgICAgIiAgdmVjNCBjb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTtcbiIKKyAgICAg
ICAgIiAgaWYgKHYgPj0gMS4wKSBjb2xvciA9IHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKTtcbiIK
KyAgICAgICAgIiAgaWYgKHYgPj0gMi4wKSBjb2xvciA9IHZlYzQoMC4wLCAwLjAsIDEuMCwgMS4w
KTtcbiIKKyAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gY29sb3I7XG4iCisgICAgICAgICJ9XG4i
OworCisgICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3Vy
Y2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKKyAgICBBU1NFUlRfTkUoMHUsIHByb2dyYW0pOwor
CisgICAgZHJhd1F1YWQocHJvZ3JhbSwgImFfcG9zaXRpb24iLCAwLjVmKTsKKworICAgIEVYUEVD
VF9QSVhFTF9FUSgwLCAwLCAyNTUsIDAsIDAsIDI1NSk7CisgICAgRVhQRUNUX1BJWEVMX0VRKGdl
dFdpbmRvd1dpZHRoKCktMSwgMCwgMCwgMjU1LCAwLCAyNTUpOworfQorCitURVNUX1AoR0xTTFRl
c3QsIFR3b0Vsc2VJZlJld3JpdGluZykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmVydGV4
U2hhZGVyU291cmNlID0KKyAgICAgICAgImF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247XG4iCisg
ICAgICAgICJ2YXJ5aW5nIGZsb2F0IHY7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisg
ICAgICAgICIgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjtcbiIKKyAgICAgICAgIiAgaWYgKGFf
cG9zaXRpb24ueCA9PSAwLjApIHtcbiIKKyAgICAgICAgIiAgICB2ID0gMS4wO1xuIgorICAgICAg
ICAiICB9IGVsc2UgaWYgKGFfcG9zaXRpb24ueCA+IDAuNSkge1xuIgorICAgICAgICAiICAgIHYg
PSAwLjA7XG4iCisgICAgICAgICIgIH0gZWxzZSBpZiAoYV9wb3NpdGlvbi54ID4gMC43NSkge1xu
IgorICAgICAgICAiICAgIHYgPSAwLjU7XG4iCisgICAgICAgICIgIH1cbiIKKyAgICAgICAgIn1c
biI7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQorICAg
ICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgorICAgICAgICAidmFyeWluZyBmbG9hdCB2
O1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICBnbF9GcmFnQ29sb3Ig
PSB2ZWM0KHYsIDAuMCwgMC4wLCAxLjApO1xuIgorICAgICAgICAifVxuIjsKKworICAgIEdMdWlu
dCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNo
YWRlclNvdXJjZSk7CisgICAgRVhQRUNUX05FKDB1LCBwcm9ncmFtKTsKK30KKworVEVTVF9QKEdM
U0xUZXN0LCBGcm9udEZhY2luZ0FuZFZhcnlpbmcpCit7CisgICAgRUdMUGxhdGZvcm1QYXJhbWV0
ZXJzIHBsYXRmb3JtID0gR2V0UGFyYW0oKS5lZ2xQYXJhbWV0ZXJzOworCisgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQorICAgICgKKyAgICAg
ICAgYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsKKyAgICAgICAgdmFyeWluZyBmbG9hdCB2X3Zh
cnlpbmc7CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZfdmFy
eWluZyA9IGFfcG9zaXRpb24ueDsKKyAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlv
bjsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNo
YWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAoCisgICAgICAgIHByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworICAgICAgICB2YXJ5aW5nIGZsb2F0IHZfdmFyeWluZzsKKyAgICAgICAgdm9p
ZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgdmVjNCBjOworCisgICAgICAgICAgICBp
ZiAoZ2xfRnJvbnRGYWNpbmcpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYyA9IHZl
YzQodl92YXJ5aW5nLCAwLCAwLCAxLjApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGMgPSB2ZWM0KDAsIHZfdmFyeWluZywg
MCwgMS4wKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IGM7Cisg
ICAgICAgIH0KKyAgICApOworCisgICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2
ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKKworICAgIC8vIENvbXBp
bGF0aW9uIHNob3VsZCBmYWlsIG9uIEQzRDExIGZlYXR1cmUgbGV2ZWwgOV8zLCBzaW5jZSBnbF9G
cm9udEZhY2luZyBpc24ndCBzdXBwb3J0ZWQuCisgICAgaWYgKHBsYXRmb3JtLnJlbmRlcmVyID09
IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFKQorICAgIHsKKyAgICAgICAgaWYg
KHBsYXRmb3JtLm1ham9yVmVyc2lvbiA9PSA5ICYmIHBsYXRmb3JtLm1pbm9yVmVyc2lvbiA9PSAz
KQorICAgICAgICB7CisgICAgICAgICAgICBFWFBFQ1RfRVEoMHUsIHByb2dyYW0pOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gT3RoZXJ3aXNlLCBjb21w
aWxhdGlvbiBzaG91bGQgc3VjY2VlZAorICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7Cit9CisK
Ky8vIFZlcmlmeSB0aGF0IGxpbmtpbmcgc2hhZGVycyBkZWNsYXJpbmcgZGlmZmVyZW50IHNoYWRp
bmcgbGFuZ3VhZ2UgdmVyc2lvbnMgZmFpbHMuCitURVNUX1AoR0xTTFRlc3RfRVMzLCBWZXJzaW9u
TWlzbWF0Y2gpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2Ux
MDAgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ2YXJ5
aW5nIGZsb2F0IHZfdmFyeWluZztcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHsgZ2xfRnJhZ0Nv
bG9yID0gdmVjNCh2X3ZhcnlpbmcsIDAsIDAsIDEuMCk7IH1cbiI7CisKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UxMDAgPQorICAgICAgICAiYXR0cmlidXRlIHZlYzQg
YV9wb3NpdGlvbjtcbiIKKyAgICAgICAgInZhcnlpbmcgZmxvYXQgdl92YXJ5aW5nO1xuIgorICAg
ICAgICAidm9pZCBtYWluKCkgeyB2X3ZhcnlpbmcgPSBhX3Bvc2l0aW9uLng7IGdsX1Bvc2l0aW9u
ID0gYV9wb3NpdGlvbjsgfVxuIjsKKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hh
ZGVyU291cmNlMzAwID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJpbiBmbG9hdCB2X3Zhcnlpbmc7XG4i
CisgICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4o
KSB7IG15X0ZyYWdDb2xvciA9IHZlYzQodl92YXJ5aW5nLCAwLCAwLCAxLjApOyB9XG4iOworCisg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlMzAwID0KKyAgICAgICAgIiN2
ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAiaW4gdmVjNCBhX3Bvc2l0aW9uO1xuIgorICAgICAg
ICAib3V0IGZsb2F0IHZfdmFyeWluZztcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHsgdl92YXJ5
aW5nID0gYV9wb3NpdGlvbi54OyBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247IH1cbiI7CisKKyAg
ICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZTMwMCwg
ZnJhZ21lbnRTaGFkZXJTb3VyY2UxMDApOworICAgIEVYUEVDVF9FUSgwdSwgcHJvZ3JhbSk7CisK
KyAgICBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlMTAwLCBmcmFn
bWVudFNoYWRlclNvdXJjZTMwMCk7CisgICAgRVhQRUNUX0VRKDB1LCBwcm9ncmFtKTsKK30KKwor
Ly8gVmVyaWZ5IHRoYXQgZGVjbGFyaW5nIHZhcnlpbmcgYXMgaW52YXJpYW50IG9ubHkgaW4gdmVy
dGV4IHNoYWRlciBmYWlscyBpbiBFU1NMIDEuMDAuCitURVNUX1AoR0xTTFRlc3QsIEludmFyaWFu
dFZhcnlpbmdPdXQpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3Vy
Y2UgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ2YXJ5
aW5nIGZsb2F0IHZfdmFyeWluZztcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHsgZ2xfRnJhZ0Nv
bG9yID0gdmVjNCh2X3ZhcnlpbmcsIDAsIDAsIDEuMCk7IH1cbiI7CisKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQorICAgICAgICAiYXR0cmlidXRlIHZlYzQgYV9w
b3NpdGlvbjtcbiIKKyAgICAgICAgImludmFyaWFudCB2YXJ5aW5nIGZsb2F0IHZfdmFyeWluZztc
biIKKyAgICAgICAgInZvaWQgbWFpbigpIHsgdl92YXJ5aW5nID0gYV9wb3NpdGlvbi54OyBnbF9Q
b3NpdGlvbiA9IGFfcG9zaXRpb247IH1cbiI7CisKKyAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBp
bGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOworICAg
IEVYUEVDVF9FUSgwdSwgcHJvZ3JhbSk7Cit9CisKKy8vIFZlcmlmeSB0aGF0IGRlY2xhcmluZyB2
YXJ5aW5nIGFzIGludmFyaWFudCBvbmx5IGluIHZlcnRleCBzaGFkZXIgc3VjY2VlZHMgaW4gRVNT
TCAzLjAwLgorVEVTVF9QKEdMU0xUZXN0X0VTMywgSW52YXJpYW50VmFyeWluZ091dCkKK3sKKyAg
ICAvLyBUT0RPOiBFU1NMIDMuMDAgLT4gR0xTTCAxLjIwIHRyYW5zbGF0aW9uIHNob3VsZCBhZGQg
ImludmFyaWFudCIgaW4gZnJhZ21lbnQgc2hhZGVyCisgICAgLy8gZm9yIHZhcnlpbmdzIHdoaWNo
IGFyZSBpbnZhcmlhbnQgaW4gdmVydGV4IHNoYWRlciAoaHR0cDovL2FuZ2xlYnVnLmNvbS8xMjkz
KQorICAgIGlmIChJc0Rlc2t0b3BPcGVuR0woKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8
PCAiVGVzdCBkaXNhYmxlZCBvbiBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9
CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0O1xuIgorICAgICAgICAiaW4gZmxvYXQgdl92YXJ5aW5nO1xuIgorICAgICAgICAib3V0
IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKCkgeyBteV9GcmFnQ29s
b3IgPSB2ZWM0KHZfdmFyeWluZywgMCwgMCwgMS4wKTsgfVxuIjsKKworICAgIGNvbnN0IHN0ZDo6
c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIK
KyAgICAgICAgImluIHZlYzQgYV9wb3NpdGlvbjtcbiIKKyAgICAgICAgImludmFyaWFudCBvdXQg
ZmxvYXQgdl92YXJ5aW5nO1xuIgorICAgICAgICAidm9pZCBtYWluKCkgeyB2X3ZhcnlpbmcgPSBh
X3Bvc2l0aW9uLng7IGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsgfVxuIjsKKworICAgIEdMdWlu
dCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNo
YWRlclNvdXJjZSk7CisgICAgRVhQRUNUX05FKDB1LCBwcm9ncmFtKTsKK30KKworLy8gVmVyaWZ5
IHRoYXQgZGVjbGFyaW5nIHZhcnlpbmcgYXMgaW52YXJpYW50IG9ubHkgaW4gZnJhZ21lbnQgc2hh
ZGVyIGZhaWxzIGluIEVTU0wgMS4wMC4KK1RFU1RfUChHTFNMVGVzdCwgSW52YXJpYW50VmFyeWlu
Z0luKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0KKyAg
ICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAiaW52YXJpYW50IHZh
cnlpbmcgZmxvYXQgdl92YXJ5aW5nO1xuIgorICAgICAgICAidm9pZCBtYWluKCkgeyBnbF9GcmFn
Q29sb3IgPSB2ZWM0KHZfdmFyeWluZywgMCwgMCwgMS4wKTsgfVxuIjsKKworICAgIGNvbnN0IHN0
ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9CisgICAgICAgICJhdHRyaWJ1dGUgdmVjNCBh
X3Bvc2l0aW9uO1xuIgorICAgICAgICAidmFyeWluZyBmbG9hdCB2X3Zhcnlpbmc7XG4iCisgICAg
ICAgICJ2b2lkIG1haW4oKSB7IHZfdmFyeWluZyA9IGFfcG9zaXRpb24ueDsgZ2xfUG9zaXRpb24g
PSBhX3Bvc2l0aW9uOyB9XG4iOworCisgICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3Jh
bSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKKyAgICBFWFBFQ1Rf
RVEoMHUsIHByb2dyYW0pOworfQorCisvLyBWZXJpZnkgdGhhdCBkZWNsYXJpbmcgdmFyeWluZyBh
cyBpbnZhcmlhbnQgb25seSBpbiBmcmFnbWVudCBzaGFkZXIgZmFpbHMgaW4gRVNTTCAzLjAwLgor
VEVTVF9QKEdMU0xUZXN0X0VTMywgSW52YXJpYW50VmFyeWluZ0luKQoreworICAgIGNvbnN0IHN0
ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBl
c1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJpbnZh
cmlhbnQgaW4gZmxvYXQgdl92YXJ5aW5nO1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0Nv
bG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKCkgeyBteV9GcmFnQ29sb3IgPSB2ZWM0KHZfdmFy
eWluZywgMCwgMCwgMS4wKTsgfVxuIjsKKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNo
YWRlclNvdXJjZSA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgImluIHZl
YzQgYV9wb3NpdGlvbjtcbiIKKyAgICAgICAgIm91dCBmbG9hdCB2X3Zhcnlpbmc7XG4iCisgICAg
ICAgICJ2b2lkIG1haW4oKSB7IHZfdmFyeWluZyA9IGFfcG9zaXRpb24ueDsgZ2xfUG9zaXRpb24g
PSBhX3Bvc2l0aW9uOyB9XG4iOworCisgICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3Jh
bSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKKyAgICBFWFBFQ1Rf
RVEoMHUsIHByb2dyYW0pOworfQorCisvLyBWZXJpZnkgdGhhdCBkZWNsYXJpbmcgdmFyeWluZyBh
cyBpbnZhcmlhbnQgaW4gYm90aCBzaGFkZXJzIHN1Y2NlZWRzIGluIEVTU0wgMS4wMC4KK1RFU1Rf
UChHTFNMVGVzdCwgSW52YXJpYW50VmFyeWluZ0JvdGgpCit7CisgICAgY29uc3Qgc3RkOjpzdHJp
bmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7XG4iCisgICAgICAgICJpbnZhcmlhbnQgdmFyeWluZyBmbG9hdCB2X3Zhcnlpbmc7XG4iCisg
ICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX0ZyYWdDb2xvciA9IHZlYzQodl92YXJ5aW5nLCAwLCAw
LCAxLjApOyB9XG4iOworCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNl
ID0KKyAgICAgICAgImF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247XG4iCisgICAgICAgICJpbnZh
cmlhbnQgdmFyeWluZyBmbG9hdCB2X3Zhcnlpbmc7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7
IHZfdmFyeWluZyA9IGFfcG9zaXRpb24ueDsgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOyB9XG4i
OworCisgICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3Vy
Y2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKKyAgICBFWFBFQ1RfTkUoMHUsIHByb2dyYW0pOwor
fQorCisvLyBWZXJpZnkgdGhhdCBkZWNsYXJpbmcgdmFyeWluZyBhcyBpbnZhcmlhbnQgaW4gYm90
aCBzaGFkZXJzIGZhaWxzIGluIEVTU0wgMy4wMC4KK1RFU1RfUChHTFNMVGVzdF9FUzMsIEludmFy
aWFudFZhcnlpbmdCb3RoKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVy
U291cmNlID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJpbnZhcmlhbnQgaW4gZmxvYXQgdl92YXJ5aW5n
O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9pZCBt
YWluKCkgeyBteV9GcmFnQ29sb3IgPSB2ZWM0KHZfdmFyeWluZywgMCwgMCwgMS4wKTsgfVxuIjsK
KworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9CisgICAgICAgICIj
dmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgImluIHZlYzQgYV9wb3NpdGlvbjtcbiIKKyAgICAg
ICAgImludmFyaWFudCBvdXQgZmxvYXQgdl92YXJ5aW5nO1xuIgorICAgICAgICAidm9pZCBtYWlu
KCkgeyB2X3ZhcnlpbmcgPSBhX3Bvc2l0aW9uLng7IGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsg
fVxuIjsKKworICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVy
U291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgRVhQRUNUX0VRKDB1LCBwcm9ncmFt
KTsKK30KKworLy8gVmVyaWZ5IHRoYXQgZGVjbGFyaW5nIGdsX1Bvc2l0aW9uIGFzIGludmFyaWFu
dCBzdWNjZWVkcyBpbiBFU1NMIDEuMDAuCitURVNUX1AoR0xTTFRlc3QsIEludmFyaWFudEdMUG9z
aXRpb24pCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQor
ICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ2YXJ5aW5nIGZs
b2F0IHZfdmFyeWluZztcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHsgZ2xfRnJhZ0NvbG9yID0g
dmVjNCh2X3ZhcnlpbmcsIDAsIDAsIDEuMCk7IH1cbiI7CisKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQorICAgICAgICAiYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlv
bjtcbiIKKyAgICAgICAgImludmFyaWFudCBnbF9Qb3NpdGlvbjtcbiIKKyAgICAgICAgInZhcnlp
bmcgZmxvYXQgdl92YXJ5aW5nO1xuIgorICAgICAgICAidm9pZCBtYWluKCkgeyB2X3Zhcnlpbmcg
PSBhX3Bvc2l0aW9uLng7IGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsgfVxuIjsKKworICAgIEdM
dWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVu
dFNoYWRlclNvdXJjZSk7CisgICAgRVhQRUNUX05FKDB1LCBwcm9ncmFtKTsKK30KKworLy8gVmVy
aWZ5IHRoYXQgZGVjbGFyaW5nIGdsX1Bvc2l0aW9uIGFzIGludmFyaWFudCBzdWNjZWVkcyBpbiBF
U1NMIDMuMDAuCitURVNUX1AoR0xTTFRlc3RfRVMzLCBJbnZhcmlhbnRHTFBvc2l0aW9uKQorewor
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0KKyAgICAgICAgIiN2
ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisg
ICAgICAgICJpbiBmbG9hdCB2X3Zhcnlpbmc7XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9GcmFn
Q29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7IG15X0ZyYWdDb2xvciA9IHZlYzQodl92
YXJ5aW5nLCAwLCAwLCAxLjApOyB9XG4iOworCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4
U2hhZGVyU291cmNlID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAiaW4g
dmVjNCBhX3Bvc2l0aW9uO1xuIgorICAgICAgICAiaW52YXJpYW50IGdsX1Bvc2l0aW9uO1xuIgor
ICAgICAgICAib3V0IGZsb2F0IHZfdmFyeWluZztcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHsg
dl92YXJ5aW5nID0gYV9wb3NpdGlvbi54OyBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247IH1cbiI7
CisKKyAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJj
ZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOworICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7Cit9
CisKKy8vIFZlcmlmeSB0aGF0IHVzaW5nIGludmFyaWFudChhbGwpIGluIGJvdGggc2hhZGVycyBz
dWNjZWVkcyBpbiBFU1NMIDEuMDAuCitURVNUX1AoR0xTTFRlc3QsIEludmFyaWFudEFsbEJvdGgp
Cit7CisgICAgLy8gVE9ETzogRVNTTCAxLjAwIC0+IEdMU0wgMS4yMCB0cmFuc2xhdGlvbiBzaG91
bGQgYWRkICJpbnZhcmlhbnQiIGluIGZyYWdtZW50IHNoYWRlcgorICAgIC8vIGZvciB2YXJ5aW5n
cyB3aGljaCBhcmUgaW52YXJpYW50IGluIHZlcnRleCBzaGFkZXIgaW5kaXZpZHVhbGx5LAorICAg
IC8vIGFuZCByZW1vdmUgaW52YXJpYW50KGFsbCkgZnJvbSBmcmFnbWVudCBzaGFkZXIgKGh0dHA6
Ly9hbmdsZWJ1Zy5jb20vMTI5MykKKyAgICBpZiAoSXNEZXNrdG9wT3BlbkdMKCkpCisgICAgewor
ICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3QgZGlzYWJsZWQgb24gT3BlbkdMLiIgPDwgc3RkOjpl
bmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJh
Z21lbnRTaGFkZXJTb3VyY2UgPQorICAgICAgICAiI3ByYWdtYSBTVERHTCBpbnZhcmlhbnQoYWxs
KVxuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ2YXJ5
aW5nIGZsb2F0IHZfdmFyeWluZztcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHsgZ2xfRnJhZ0Nv
bG9yID0gdmVjNCh2X3ZhcnlpbmcsIDAsIDAsIDEuMCk7IH1cbiI7CisKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQorICAgICAgICAiI3ByYWdtYSBTVERHTCBpbnZh
cmlhbnQoYWxsKVxuIgorICAgICAgICAiYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjtcbiIKKyAg
ICAgICAgInZhcnlpbmcgZmxvYXQgdl92YXJ5aW5nO1xuIgorICAgICAgICAidm9pZCBtYWluKCkg
eyB2X3ZhcnlpbmcgPSBhX3Bvc2l0aW9uLng7IGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsgfVxu
IjsKKworICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291
cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgRVhQRUNUX05FKDB1LCBwcm9ncmFtKTsK
K30KKworLy8gVmVyaWZ5IHRoYXQgZnVuY3Rpb25zIHdpdGhvdXQgcmV0dXJuIHN0YXRlbWVudHMg
c3RpbGwgY29tcGlsZQorVEVTVF9QKEdMU0xUZXN0LCBNaXNzaW5nUmV0dXJuRmxvYXQpCit7Cisg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0KKyAgICAgICAgInZhcnlp
bmcgZmxvYXQgdl92YXJ5aW5nO1xuIgorICAgICAgICAiZmxvYXQgZigpIHsgaWYgKHZfdmFyeWlu
ZyA+IDAuMCkgcmV0dXJuIDEuMDsgfVxuIgorICAgICAgICAidm9pZCBtYWluKCkgeyBnbF9Qb3Np
dGlvbiA9IHZlYzQoZigpLCAwLCAwLCAxKTsgfVxuIjsKKworICAgIGNvbnN0IHN0ZDo6c3RyaW5n
IGZyYWdtZW50U2hhZGVyU291cmNlID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
O1xuIgorICAgICAgICAidm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAsIDAsIDAs
IDEpOyB9XG4iOworCisgICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhT
aGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKKyAgICBFWFBFQ1RfTkUoMHUsIHBy
b2dyYW0pOworfQorCisvLyBWZXJpZnkgdGhhdCBmdW5jdGlvbnMgd2l0aG91dCByZXR1cm4gc3Rh
dGVtZW50cyBzdGlsbCBjb21waWxlCitURVNUX1AoR0xTTFRlc3QsIE1pc3NpbmdSZXR1cm5WZWMy
KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9CisgICAgICAg
ICJ2YXJ5aW5nIGZsb2F0IHZfdmFyeWluZztcbiIKKyAgICAgICAgInZlYzIgZigpIHsgaWYgKHZf
dmFyeWluZyA+IDAuMCkgcmV0dXJuIHZlYzIoMS4wLCAxLjApOyB9XG4iCisgICAgICAgICJ2b2lk
IG1haW4oKSB7IGdsX1Bvc2l0aW9uID0gdmVjNChmKCkueCwgMCwgMCwgMSk7IH1cbiI7CisKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9CisgICAgICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHsgZ2xfRnJhZ0Nv
bG9yID0gdmVjNCgwLCAwLCAwLCAxKTsgfVxuIjsKKworICAgIEdMdWludCBwcm9ncmFtID0gQ29t
cGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7Cisg
ICAgRVhQRUNUX05FKDB1LCBwcm9ncmFtKTsKK30KKworLy8gVmVyaWZ5IHRoYXQgZnVuY3Rpb25z
IHdpdGhvdXQgcmV0dXJuIHN0YXRlbWVudHMgc3RpbGwgY29tcGlsZQorVEVTVF9QKEdMU0xUZXN0
LCBNaXNzaW5nUmV0dXJuVmVjMykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFk
ZXJTb3VyY2UgPQorICAgICAgICAidmFyeWluZyBmbG9hdCB2X3Zhcnlpbmc7XG4iCisgICAgICAg
ICJ2ZWMzIGYoKSB7IGlmICh2X3ZhcnlpbmcgPiAwLjApIHJldHVybiB2ZWMzKDEuMCwgMS4wLCAx
LjApOyB9XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX1Bvc2l0aW9uID0gdmVjNChmKCku
eCwgMCwgMCwgMSk7IH1cbiI7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRl
clNvdXJjZSA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAg
InZvaWQgbWFpbigpIHsgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLCAwLCAwLCAxKTsgfVxuIjsKKwor
ICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBm
cmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgRVhQRUNUX05FKDB1LCBwcm9ncmFtKTsKK30KKwor
Ly8gVmVyaWZ5IHRoYXQgZnVuY3Rpb25zIHdpdGhvdXQgcmV0dXJuIHN0YXRlbWVudHMgc3RpbGwg
Y29tcGlsZQorVEVTVF9QKEdMU0xUZXN0LCBNaXNzaW5nUmV0dXJuVmVjNCkKK3sKKyAgICBjb25z
dCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQorICAgICAgICAidmFyeWluZyBmbG9h
dCB2X3Zhcnlpbmc7XG4iCisgICAgICAgICJ2ZWM0IGYoKSB7IGlmICh2X3ZhcnlpbmcgPiAwLjAp
IHJldHVybiB2ZWM0KDEuMCwgMS4wLCAxLjAsIDEuMCk7IH1cbiIKKyAgICAgICAgInZvaWQgbWFp
bigpIHsgZ2xfUG9zaXRpb24gPSB2ZWM0KGYoKS54LCAwLCAwLCAxKTsgfVxuIjsKKworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0KKyAgICAgICAgInByZWNpc2lv
biBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3Ig
PSB2ZWM0KDAsIDAsIDAsIDEpOyB9XG4iOworCisgICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxl
UHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKKyAgICBF
WFBFQ1RfTkUoMHUsIHByb2dyYW0pOworfQorCisvLyBWZXJpZnkgdGhhdCBmdW5jdGlvbnMgd2l0
aG91dCByZXR1cm4gc3RhdGVtZW50cyBzdGlsbCBjb21waWxlCitURVNUX1AoR0xTTFRlc3QsIE1p
c3NpbmdSZXR1cm5JVmVjNCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJT
b3VyY2UgPQorICAgICAgICAidmFyeWluZyBmbG9hdCB2X3Zhcnlpbmc7XG4iCisgICAgICAgICJp
dmVjNCBmKCkgeyBpZiAodl92YXJ5aW5nID4gMC4wKSByZXR1cm4gaXZlYzQoMSwgMSwgMSwgMSk7
IH1cbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHsgZ2xfUG9zaXRpb24gPSB2ZWM0KGYoKS54LCAw
LCAwLCAxKTsgfVxuIjsKKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291
cmNlID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidm9p
ZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAsIDAsIDAsIDEpOyB9XG4iOworCisgICAg
R0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdt
ZW50U2hhZGVyU291cmNlKTsKKyAgICBFWFBFQ1RfTkUoMHUsIHByb2dyYW0pOworfQorCisvLyBW
ZXJpZnkgdGhhdCBmdW5jdGlvbnMgd2l0aG91dCByZXR1cm4gc3RhdGVtZW50cyBzdGlsbCBjb21w
aWxlCitURVNUX1AoR0xTTFRlc3QsIE1pc3NpbmdSZXR1cm5NYXQ0KQoreworICAgIGNvbnN0IHN0
ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9CisgICAgICAgICJ2YXJ5aW5nIGZsb2F0IHZf
dmFyeWluZztcbiIKKyAgICAgICAgIm1hdDQgZigpIHsgaWYgKHZfdmFyeWluZyA+IDAuMCkgcmV0
dXJuIG1hdDQoMS4wKTsgfVxuIgorICAgICAgICAidm9pZCBtYWluKCkgeyBnbF9Qb3NpdGlvbiA9
IHZlYzQoZigpWzBdWzBdLCAwLCAwLCAxKTsgfVxuIjsKKworICAgIGNvbnN0IHN0ZDo6c3RyaW5n
IGZyYWdtZW50U2hhZGVyU291cmNlID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
O1xuIgorICAgICAgICAidm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAsIDAsIDAs
IDEpOyB9XG4iOworCisgICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhT
aGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKKyAgICBFWFBFQ1RfTkUoMHUsIHBy
b2dyYW0pOworfQorCisvLyBWZXJpZnkgdGhhdCBmdW5jdGlvbnMgd2l0aG91dCByZXR1cm4gc3Rh
dGVtZW50cyBzdGlsbCBjb21waWxlCitURVNUX1AoR0xTTFRlc3QsIE1pc3NpbmdSZXR1cm5TdHJ1
Y3QpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0KKyAgICAg
ICAgInZhcnlpbmcgZmxvYXQgdl92YXJ5aW5nO1xuIgorICAgICAgICAic3RydWN0IHMgeyBmbG9h
dCBhOyBpbnQgYjsgdmVjMiBjOyB9O1xuIgorICAgICAgICAicyBmKCkgeyBpZiAodl92YXJ5aW5n
ID4gMC4wKSByZXR1cm4gcygxLjAsIDEsIHZlYzIoMS4wLCAxLjApKTsgfVxuIgorICAgICAgICAi
dm9pZCBtYWluKCkgeyBnbF9Qb3NpdGlvbiA9IHZlYzQoZigpLmEsIDAsIDAsIDEpOyB9XG4iOwor
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQorICAgICAgICAi
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX0Zy
YWdDb2xvciA9IHZlYzQoMCwgMCwgMCwgMSk7IH1cbiI7CisKKyAgICBHTHVpbnQgcHJvZ3JhbSA9
IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2Up
OworICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7Cit9CisKKy8vIFZlcmlmeSB0aGF0IGZ1bmN0
aW9ucyB3aXRob3V0IHJldHVybiBzdGF0ZW1lbnRzIHN0aWxsIGNvbXBpbGUKK1RFU1RfUChHTFNM
VGVzdF9FUzMsIE1pc3NpbmdSZXR1cm5BcnJheSkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyB2
ZXJ0ZXhTaGFkZXJTb3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAg
ICJpbiBmbG9hdCB2X3Zhcnlpbmc7XG4iCisgICAgICAgICJ2ZWMyWzJdIGYoKSB7IGlmICh2X3Zh
cnlpbmcgPiAwLjApIHsgcmV0dXJuIHZlYzJbMl0odmVjMigxLjAsIDEuMCksIHZlYzIoMS4wLCAx
LjApKTsgfSB9XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX1Bvc2l0aW9uID0gdmVjNChm
KClbMF0ueCwgMCwgMCwgMSk7IH1cbiI7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVu
dFNoYWRlclNvdXJjZSA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9y
O1xuIgorICAgICAgICAidm9pZCBtYWluKCkgeyBteV9GcmFnQ29sb3IgPSB2ZWM0KDAsIDAsIDAs
IDEpOyB9XG4iOworCisgICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhT
aGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKKyAgICBFWFBFQ1RfTkUoMHUsIHBy
b2dyYW0pOworfQorCisvLyBWZXJpZnkgdGhhdCBmdW5jdGlvbnMgd2l0aG91dCByZXR1cm4gc3Rh
dGVtZW50cyBzdGlsbCBjb21waWxlCitURVNUX1AoR0xTTFRlc3RfRVMzLCBNaXNzaW5nUmV0dXJu
QXJyYXlPZlN0cnVjdHMpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291
cmNlID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAiaW4gZmxvYXQgdl92
YXJ5aW5nO1xuIgorICAgICAgICAic3RydWN0IHMgeyBmbG9hdCBhOyBpbnQgYjsgdmVjMiBjOyB9
O1xuIgorICAgICAgICAic1syXSBmKCkgeyBpZiAodl92YXJ5aW5nID4gMC4wKSB7IHJldHVybiBz
WzJdKHMoMS4wLCAxLCB2ZWMyKDEuMCwgMS4wKSksIHMoMS4wLCAxLCAiCisgICAgICAgICJ2ZWMy
KDEuMCwgMS4wKSkpOyB9IH1cbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHsgZ2xfUG9zaXRpb24g
PSB2ZWM0KGYoKVswXS5hLCAwLCAwLCAxKTsgfVxuIjsKKworICAgIGNvbnN0IHN0ZDo6c3RyaW5n
IGZyYWdtZW50U2hhZGVyU291cmNlID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAg
ICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9G
cmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7IG15X0ZyYWdDb2xvciA9IHZlYzQo
MCwgMCwgMCwgMSk7IH1cbiI7CisKKyAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFt
KHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOworICAgIEVYUEVDVF9O
RSgwdSwgcHJvZ3JhbSk7Cit9CisKKy8vIFZlcmlmeSB0aGF0IGZ1bmN0aW9ucyB3aXRob3V0IHJl
dHVybiBzdGF0ZW1lbnRzIHN0aWxsIGNvbXBpbGUKK1RFU1RfUChHTFNMVGVzdF9FUzMsIE1pc3Np
bmdSZXR1cm5TdHJ1Y3RPZkFycmF5cykKK3sKKyAgICAvLyBUT0RPKGN3YWxsZXopIHJlbW92ZSB0
aGUgc3VwcHJlc3Npb24gb25jZSBOVklESUEgcmVtb3ZlcyB0aGUgcmVzdHJpY3Rpb24gZm9yCisg
ICAgLy8gR0xTTCA+PSAzMDAuIEl0IHdhcyBkZWZpbmVkIG9ubHkgaW4gR0xTTCAyLjAsIHNlY3Rp
b24gNi4xLgorICAgIGlmIChJc05WSURJQSgpICYmIElzT3BlbkdMRVMoKSkKKyAgICB7CisgICAg
ICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIE5WSURJQSBPcGVuR0wgRVMgYmVjYXVz
ZSBpdCBkaXNhbGxvd3MgcmV0dXJuaW5nICIKKyAgICAgICAgICAgICAgICAgICAgICJzdHJ1Y3R1
cmUgb2YgYXJyYXlzIgorICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNl
ID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAiaW4gZmxvYXQgdl92YXJ5
aW5nO1xuIgorICAgICAgICAic3RydWN0IHMgeyBmbG9hdCBhWzJdOyBpbnQgYlsyXTsgdmVjMiBj
WzJdOyB9O1xuIgorICAgICAgICAicyBmKCkgeyBpZiAodl92YXJ5aW5nID4gMC4wKSB7IHJldHVy
biBzKGZsb2F0WzJdKDEuMCwgMS4wKSwgaW50WzJdKDEsIDEpLCIKKyAgICAgICAgInZlYzJbMl0o
dmVjMigxLjAsIDEuMCksIHZlYzIoMS4wLCAxLjApKSk7IH0gfVxuIgorICAgICAgICAidm9pZCBt
YWluKCkgeyBnbF9Qb3NpdGlvbiA9IHZlYzQoZigpLmFbMF0sIDAsIDAsIDEpOyB9XG4iOworCisg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQorICAgICAgICAiI3Zl
cnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAg
ICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHsg
bXlfRnJhZ0NvbG9yID0gdmVjNCgwLCAwLCAwLCAxKTsgfVxuIjsKKworICAgIEdMdWludCBwcm9n
cmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNv
dXJjZSk7CisgICAgRVhQRUNUX05FKDB1LCBwcm9ncmFtKTsKK30KKworLy8gVmVyaWZ5IHRoYXQg
dXNpbmcgaW52YXJpYW50KGFsbCkgaW4gYm90aCBzaGFkZXJzIGZhaWxzIGluIEVTU0wgMy4wMC4K
K1RFU1RfUChHTFNMVGVzdF9FUzMsIEludmFyaWFudEFsbEJvdGgpCit7CisgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVz
XG4iCisgICAgICAgICIjcHJhZ21hIFNUREdMIGludmFyaWFudChhbGwpXG4iCisgICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgImluIGZsb2F0IHZfdmFyeWluZztc
biIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFp
bigpIHsgbXlfRnJhZ0NvbG9yID0gdmVjNCh2X3ZhcnlpbmcsIDAsIDAsIDEuMCk7IH1cbiI7CisK
KyAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQorICAgICAgICAiI3Zl
cnNpb24gMzAwIGVzXG4iCisgICAgICAgICIjcHJhZ21hIFNUREdMIGludmFyaWFudChhbGwpXG4i
CisgICAgICAgICJpbiB2ZWM0IGFfcG9zaXRpb247XG4iCisgICAgICAgICJvdXQgZmxvYXQgdl92
YXJ5aW5nO1xuIgorICAgICAgICAidm9pZCBtYWluKCkgeyB2X3ZhcnlpbmcgPSBhX3Bvc2l0aW9u
Lng7IGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsgfVxuIjsKKworICAgIEdMdWludCBwcm9ncmFt
ID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJj
ZSk7CisgICAgRVhQRUNUX0VRKDB1LCBwcm9ncmFtKTsKK30KKworLy8gVmVyaWZ5IHRoYXQgdXNp
bmcgaW52YXJpYW50KGFsbCkgb25seSBpbiBmcmFnbWVudCBzaGFkZXIgZmFpbHMgaW4gRVNTTCAx
LjAwLgorVEVTVF9QKEdMU0xUZXN0LCBJbnZhcmlhbnRBbGxJbikKK3sKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9CisgICAgICAgICIjcHJhZ21hIFNUREdMIGlu
dmFyaWFudChhbGwpXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAg
ICAgICAgInZhcnlpbmcgZmxvYXQgdl92YXJ5aW5nO1xuIgorICAgICAgICAidm9pZCBtYWluKCkg
eyBnbF9GcmFnQ29sb3IgPSB2ZWM0KHZfdmFyeWluZywgMCwgMCwgMS4wKTsgfVxuIjsKKworICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9CisgICAgICAgICJhdHRyaWJ1
dGUgdmVjNCBhX3Bvc2l0aW9uO1xuIgorICAgICAgICAidmFyeWluZyBmbG9hdCB2X3Zhcnlpbmc7
XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7IHZfdmFyeWluZyA9IGFfcG9zaXRpb24ueDsgZ2xf
UG9zaXRpb24gPSBhX3Bvc2l0aW9uOyB9XG4iOworCisgICAgR0x1aW50IHByb2dyYW0gPSBDb21w
aWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKKyAg
ICBFWFBFQ1RfRVEoMHUsIHByb2dyYW0pOworfQorCisvLyBWZXJpZnkgdGhhdCB1c2luZyBpbnZh
cmlhbnQoYWxsKSBvbmx5IGluIGZyYWdtZW50IHNoYWRlciBmYWlscyBpbiBFU1NMIDMuMDAuCitU
RVNUX1AoR0xTTFRlc3RfRVMzLCBJbnZhcmlhbnRBbGxJbikKK3sKKyAgICBjb25zdCBzdGQ6OnN0
cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIK
KyAgICAgICAgIiNwcmFnbWEgU1RER0wgaW52YXJpYW50KGFsbClcbiIKKyAgICAgICAgInByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAiaW4gZmxvYXQgdl92YXJ5aW5nO1xuIgor
ICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKCkg
eyBteV9GcmFnQ29sb3IgPSB2ZWM0KHZfdmFyeWluZywgMCwgMCwgMS4wKTsgfVxuIjsKKworICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9CisgICAgICAgICIjdmVyc2lv
biAzMDAgZXNcbiIKKyAgICAgICAgImluIHZlYzQgYV9wb3NpdGlvbjtcbiIKKyAgICAgICAgIm91
dCBmbG9hdCB2X3Zhcnlpbmc7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7IHZfdmFyeWluZyA9
IGFfcG9zaXRpb24ueDsgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOyB9XG4iOworCisgICAgR0x1
aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50
U2hhZGVyU291cmNlKTsKKyAgICBFWFBFQ1RfRVEoMHUsIHByb2dyYW0pOworfQorCisvLyBWZXJp
ZnkgdGhhdCB1c2luZyBpbnZhcmlhbnQoYWxsKSBvbmx5IGluIHZlcnRleCBzaGFkZXIgZmFpbHMg
aW4gRVNTTCAxLjAwLgorVEVTVF9QKEdMU0xUZXN0LCBJbnZhcmlhbnRBbGxPdXQpCit7CisgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQorICAgICAgICAicHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ2YXJ5aW5nIGZsb2F0IHZfdmFyeWluZztc
biIKKyAgICAgICAgInZvaWQgbWFpbigpIHsgZ2xfRnJhZ0NvbG9yID0gdmVjNCh2X3Zhcnlpbmcs
IDAsIDAsIDEuMCk7IH1cbiI7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJT
b3VyY2UgPQorICAgICAgICAiI3ByYWdtYSBTVERHTCBpbnZhcmlhbnQoYWxsKVxuIgorICAgICAg
ICAiYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjtcbiIKKyAgICAgICAgInZhcnlpbmcgZmxvYXQg
dl92YXJ5aW5nO1xuIgorICAgICAgICAidm9pZCBtYWluKCkgeyB2X3ZhcnlpbmcgPSBhX3Bvc2l0
aW9uLng7IGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsgfVxuIjsKKworICAgIEdMdWludCBwcm9n
cmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNv
dXJjZSk7CisgICAgRVhQRUNUX0VRKDB1LCBwcm9ncmFtKTsKK30KKworLy8gVmVyaWZ5IHRoYXQg
dXNpbmcgaW52YXJpYW50KGFsbCkgb25seSBpbiB2ZXJ0ZXggc2hhZGVyIHN1Y2NlZWRzIGluIEVT
U0wgMy4wMC4KK1RFU1RfUChHTFNMVGVzdF9FUzMsIEludmFyaWFudEFsbE91dCkKK3sKKyAgICAv
LyBUT0RPOiBFU1NMIDMuMDAgLT4gR0xTTCAxLjIwIHRyYW5zbGF0aW9uIHNob3VsZCBhZGQgImlu
dmFyaWFudCIgaW4gZnJhZ21lbnQgc2hhZGVyCisgICAgLy8gZm9yIHZhcnlpbmdzIHdoaWNoIGFy
ZSBpbnZhcmlhbnQgaW4gdmVydGV4IHNoYWRlciwKKyAgICAvLyBiZWNhdXNlIG9mIGludmFyaWFu
dChhbGwpIGJlaW5nIHVzZWQgaW4gdmVydGV4IHNoYWRlciAoaHR0cDovL2FuZ2xlYnVnLmNvbS8x
MjkzKQorICAgIGlmIChJc0Rlc2t0b3BPcGVuR0woKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291
dCA8PCAiVGVzdCBkaXNhYmxlZCBvbiBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJj
ZSA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0O1xuIgorICAgICAgICAiaW4gZmxvYXQgdl92YXJ5aW5nO1xuIgorICAgICAgICAi
b3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKCkgeyBteV9GcmFn
Q29sb3IgPSB2ZWM0KHZfdmFyeWluZywgMCwgMCwgMS4wKTsgfVxuIjsKKworICAgIGNvbnN0IHN0
ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNc
biIKKyAgICAgICAgIiNwcmFnbWEgU1RER0wgaW52YXJpYW50KGFsbClcbiIKKyAgICAgICAgImlu
IHZlYzQgYV9wb3NpdGlvbjtcbiIKKyAgICAgICAgIm91dCBmbG9hdCB2X3Zhcnlpbmc7XG4iCisg
ICAgICAgICJ2b2lkIG1haW4oKSB7IHZfdmFyeWluZyA9IGFfcG9zaXRpb24ueDsgZ2xfUG9zaXRp
b24gPSBhX3Bvc2l0aW9uOyB9XG4iOworCisgICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJv
Z3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKKyAgICBFWFBF
Q1RfTkUoMHUsIHByb2dyYW0pOworfQorCitURVNUX1AoR0xTTFRlc3QsIE1heFZhcnlpbmdWZWM0
KQoreworI2lmIGRlZmluZWQoX19BUFBMRV9fKQorICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogRmlu
ZCBvdXQgd2h5IHRoaXMgZG9lc24ndCBjb21waWxlIG9uIEFwcGxlIEFORCBPcGVuR0wgZHJpdmVy
cworICAgIC8vIChodHRwOi8vYW5nbGVidWcuY29tLzEyOTEpCisgICAgaWYgKElzQU1EKCkgJiYg
Z2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9B
TkdMRSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxlZCBvbiBBcHBs
ZSBBTUQgT3BlbkdMLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vu
ZGlmCisKKyAgICBHTGludCBtYXhWYXJ5aW5ncyA9IDA7CisgICAgZ2xHZXRJbnRlZ2VydihHTF9N
QVhfVkFSWUlOR19WRUNUT1JTLCAmbWF4VmFyeWluZ3MpOworCisgICAgVmFyeWluZ1Rlc3RCYXNl
KDAsIDAsIDAsIDAsIDAsIDAsIG1heFZhcnlpbmdzLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0
cnVlKTsKK30KKworVEVTVF9QKEdMU0xUZXN0LCBNYXhNaW51c1R3b1ZhcnlpbmdWZWM0UGx1c1R3
b1NwZWNpYWxWYXJpYWJsZXMpCit7CisgICAgR0xpbnQgbWF4VmFyeWluZ3MgPSAwOworICAgIGds
R2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJTkdfVkVDVE9SUywgJm1heFZhcnlpbmdzKTsKKworICAg
IC8vIEdlbmVyYXRlIHNoYWRlciBjb2RlIHRoYXQgdXNlcyBnbF9GcmFnQ29vcmQgYW5kIGdsX1Bv
aW50Q29vcmQsIHR3byBzcGVjaWFsIGZyYWdtZW50IHNoYWRlciB2YXJpYWJsZXMuCisgICAgVmFy
eWluZ1Rlc3RCYXNlKDAsIDAsIDAsIDAsIDAsIDAsIG1heFZhcnlpbmdzIC0gMiwgMCwgdHJ1ZSwg
dHJ1ZSwgZmFsc2UsIHRydWUpOworfQorCitURVNUX1AoR0xTTFRlc3QsIE1heE1pbnVzVHdvVmFy
eWluZ1ZlYzRQbHVzVGhyZWVTcGVjaWFsVmFyaWFibGVzKQoreworICAgIC8vIFRPRE8oZ2VvZmZs
YW5nKTogRmlndXJlIG91dCB3aHkgdGhpcyBmYWlscyBvbiBPcGVuR0wgQU1EIChodHRwOi8vYW5n
bGVidWcuY29tLzEyOTEpCisgICAgaWYgKElzQU1EKCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJlcigp
ID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkKKyAgICB7CisgICAgICAg
IHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxlZCBvbiBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHTGludCBtYXhWYXJ5aW5ncyA9IDA7CisgICAg
Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19WRUNUT1JTLCAmbWF4VmFyeWluZ3MpOworCisg
ICAgLy8gR2VuZXJhdGUgc2hhZGVyIGNvZGUgdGhhdCB1c2VzIGdsX0ZyYWdDb29yZCwgZ2xfUG9p
bnRDb29yZCBhbmQgZ2xfUG9pbnRTaXplLgorICAgIFZhcnlpbmdUZXN0QmFzZSgwLCAwLCAwLCAw
LCAwLCAwLCBtYXhWYXJ5aW5ncyAtIDIsIDAsIHRydWUsIHRydWUsIHRydWUsIHRydWUpOworfQor
CisvLyBEaXNhYmxlZCBiZWNhdXNlIGRyaXZlcnMgYXJlIGFsbG93ZWQgdG8gc3VjY2Vzc2Z1bGx5
IGNvbXBpbGUgc2hhZGVycyB0aGF0IGhhdmUgbW9yZSB0aGFuIHRoZQorLy8gbWF4aW11bSBudW1i
ZXIgb2YgdmFyeWluZ3MuIChodHRwOi8vYW5nbGVidWcuY29tLzEyOTYpCitURVNUX1AoR0xTTFRl
c3QsIERJU0FCTEVEX01heFZhcnlpbmdWZWM0UGx1c0ZyYWdDb29yZCkKK3sKKyAgICBHTGludCBt
YXhWYXJ5aW5ncyA9IDA7CisgICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19WRUNUT1JT
LCAmbWF4VmFyeWluZ3MpOworCisgICAgLy8gR2VuZXJhdGUgc2hhZGVyIGNvZGUgdGhhdCB1c2Vz
IGdsX0ZyYWdDb29yZCwgYSBzcGVjaWFsIGZyYWdtZW50IHNoYWRlciB2YXJpYWJsZXMuCisgICAg
Ly8gVGhpcyB0ZXN0IHNob3VsZCBmYWlsLCBzaW5jZSB3ZSBhcmUgcmVhbGx5IHVzaW5nIChtYXhW
YXJ5aW5ncyArIDEpIHZhcnlpbmdzLgorICAgIFZhcnlpbmdUZXN0QmFzZSgwLCAwLCAwLCAwLCAw
LCAwLCBtYXhWYXJ5aW5ncywgMCwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7Cit9CisKKy8v
IERpc2FibGVkIGJlY2F1c2UgZHJpdmVycyBhcmUgYWxsb3dlZCB0byBzdWNjZXNzZnVsbHkgY29t
cGlsZSBzaGFkZXJzIHRoYXQgaGF2ZSBtb3JlIHRoYW4gdGhlCisvLyBtYXhpbXVtIG51bWJlciBv
ZiB2YXJ5aW5ncy4gKGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTI5NikKK1RFU1RfUChHTFNMVGVzdCwg
RElTQUJMRURfTWF4VmFyeWluZ1ZlYzRQbHVzUG9pbnRDb29yZCkKK3sKKyAgICBHTGludCBtYXhW
YXJ5aW5ncyA9IDA7CisgICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19WRUNUT1JTLCAm
bWF4VmFyeWluZ3MpOworCisgICAgLy8gR2VuZXJhdGUgc2hhZGVyIGNvZGUgdGhhdCB1c2VzIGds
X0ZyYWdDb29yZCwgYSBzcGVjaWFsIGZyYWdtZW50IHNoYWRlciB2YXJpYWJsZXMuCisgICAgLy8g
VGhpcyB0ZXN0IHNob3VsZCBmYWlsLCBzaW5jZSB3ZSBhcmUgcmVhbGx5IHVzaW5nIChtYXhWYXJ5
aW5ncyArIDEpIHZhcnlpbmdzLgorICAgIFZhcnlpbmdUZXN0QmFzZSgwLCAwLCAwLCAwLCAwLCAw
LCBtYXhWYXJ5aW5ncywgMCwgZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSk7Cit9CisKK1RFU1Rf
UChHTFNMVGVzdCwgTWF4VmFyeWluZ1ZlYzMpCit7CisgICAgR0xpbnQgbWF4VmFyeWluZ3MgPSAw
OworICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJTkdfVkVDVE9SUywgJm1heFZhcnlpbmdz
KTsKKworICAgIFZhcnlpbmdUZXN0QmFzZSgwLCAwLCAwLCAwLCBtYXhWYXJ5aW5ncywgMCwgMCwg
MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSk7Cit9CisKK1RFU1RfUChHTFNMVGVzdCwgTWF4
VmFyeWluZ1ZlYzNBcnJheSkKK3sKKyAgICBHTGludCBtYXhWYXJ5aW5ncyA9IDA7CisgICAgZ2xH
ZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19WRUNUT1JTLCAmbWF4VmFyeWluZ3MpOworCisgICAg
VmFyeWluZ1Rlc3RCYXNlKDAsIDAsIDAsIDAsIDAsIG1heFZhcnlpbmdzIC8gMiwgMCwgMCwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSk7Cit9CisKKy8vIERpc2FibGVkIGJlY2F1c2Ugb2YgYSBm
YWlsdXJlIGluIEQzRDkKK1RFU1RfUChHTFNMVGVzdCwgTWF4VmFyeWluZ1ZlYzNBbmRPbmVGbG9h
dCkKK3sKKyAgICBpZiAoSXNEM0Q5KCkpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRl
c3QgZGlzYWJsZWQgb24gRDNEOS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIEdMaW50IG1heFZhcnlpbmdzID0gMDsKKyAgICBnbEdldEludGVnZXJ2KEdMX01B
WF9WQVJZSU5HX1ZFQ1RPUlMsICZtYXhWYXJ5aW5ncyk7CisKKyAgICBWYXJ5aW5nVGVzdEJhc2Uo
MSwgMCwgMCwgMCwgbWF4VmFyeWluZ3MsIDAsIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRy
dWUpOworfQorCisvLyBEaXNhYmxlZCBiZWNhdXNlIG9mIGEgZmFpbHVyZSBpbiBEM0Q5CitURVNU
X1AoR0xTTFRlc3QsIE1heFZhcnlpbmdWZWMzQXJyYXlBbmRPbmVGbG9hdEFycmF5KQoreworICAg
IGlmIChJc0QzRDkoKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxl
ZCBvbiBEM0Q5LiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
R0xpbnQgbWF4VmFyeWluZ3MgPSAwOworICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJTkdf
VkVDVE9SUywgJm1heFZhcnlpbmdzKTsKKworICAgIFZhcnlpbmdUZXN0QmFzZSgwLCAxLCAwLCAw
LCAwLCBtYXhWYXJ5aW5ncyAvIDIsIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpOwor
fQorCisvLyBEaXNhYmxlZCBiZWNhdXNlIG9mIGEgZmFpbHVyZSBpbiBEM0Q5CitURVNUX1AoR0xT
TFRlc3QsIFR3aWNlTWF4VmFyeWluZ1ZlYzIpCit7CisgICAgaWYgKElzRDNEOSgpKQorICAgIHsK
KyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVkIG9uIEQzRDkuIiA8PCBzdGQ6OmVu
ZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZ2V0UGxhdGZvcm1SZW5kZXJl
cigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTEVTX0FOR0xFKQorICAgIHsKKyAg
ICAgICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBGaWd1cmUgb3V0IHdoeSB0aGlzIGZhaWxzIG9uIE5W
SURJQSdzIEdMRVMgZHJpdmVyCisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxlZCBv
biBPcGVuR0wgRVMuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNp
ZiBkZWZpbmVkKF9fQVBQTEVfXykKKyAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IEZpbmQgb3V0IHdo
eSB0aGlzIGRvZXNuJ3QgY29tcGlsZSBvbiBBcHBsZSBBTkQgT3BlbkdMIGRyaXZlcnMKKyAgICAv
LyAoaHR0cDovL2FuZ2xlYnVnLmNvbS8xMjkxKQorICAgIGlmIChJc0FNRCgpICYmIGdldFBsYXRm
b3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUpCisg
ICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3QgZGlzYWJsZWQgb24gQXBwbGUgQU1EIE9w
ZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisg
ICAgR0xpbnQgbWF4VmFyeWluZ3MgPSAwOworICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJ
TkdfVkVDVE9SUywgJm1heFZhcnlpbmdzKTsKKworICAgIFZhcnlpbmdUZXN0QmFzZSgwLCAwLCAy
ICogbWF4VmFyeWluZ3MsIDAsIDAsIDAsIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUp
OworfQorCisvLyBEaXNhYmxlZCBiZWNhdXNlIG9mIGEgZmFpbHVyZSBpbiBEM0Q5CitURVNUX1Ao
R0xTTFRlc3QsIE1heFZhcnlpbmdWZWMyQXJyYXlzKQoreworICAgIGlmIChJc0QzRFNNMygpKQor
ICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVkIG9uIFNNMy4iIDw8IHN0
ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChnZXRQbGF0Zm9ybVJl
bmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEUpCisgICAg
eworICAgICAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IEZpZ3VyZSBvdXQgd2h5IHRoaXMgZmFpbHMg
b24gTlZJRElBJ3MgR0xFUyBkcml2ZXIKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2Fi
bGVkIG9uIE9wZW5HTCBFUy4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworI2lmIGRlZmluZWQoX19BUFBMRV9fKQorICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogRmluZCBv
dXQgd2h5IHRoaXMgZG9lc24ndCBjb21waWxlIG9uIEFwcGxlIEFORCBPcGVuR0wgZHJpdmVycwor
ICAgIC8vIChodHRwOi8vYW5nbGVidWcuY29tLzEyOTEpCisgICAgaWYgKElzQU1EKCkgJiYgZ2V0
UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdM
RSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxlZCBvbiBBcHBsZSBB
TUQgT3BlbkdMLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlm
CisKKyAgICBHTGludCBtYXhWYXJ5aW5ncyA9IDA7CisgICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhf
VkFSWUlOR19WRUNUT1JTLCAmbWF4VmFyeWluZ3MpOworCisgICAgVmFyeWluZ1Rlc3RCYXNlKDAs
IDAsIDAsIG1heFZhcnlpbmdzLCAwLCAwLCAwLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVl
KTsKK30KKworLy8gRGlzYWJsZWQgYmVjYXVzZSBkcml2ZXJzIGFyZSBhbGxvd2VkIHRvIHN1Y2Nl
c3NmdWxseSBjb21waWxlIHNoYWRlcnMgdGhhdCBoYXZlIG1vcmUgdGhhbiB0aGUKKy8vIG1heGlt
dW0gbnVtYmVyIG9mIHZhcnlpbmdzLiAoaHR0cDovL2FuZ2xlYnVnLmNvbS8xMjk2KQorVEVTVF9Q
KEdMU0xUZXN0LCBESVNBQkxFRF9NYXhQbHVzT25lVmFyeWluZ1ZlYzMpCit7CisgICAgR0xpbnQg
bWF4VmFyeWluZ3MgPSAwOworICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJTkdfVkVDVE9S
UywgJm1heFZhcnlpbmdzKTsKKworICAgIFZhcnlpbmdUZXN0QmFzZSgwLCAwLCAwLCAwLCBtYXhW
YXJ5aW5ncyArIDEsIDAsIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKK30KKwor
Ly8gRGlzYWJsZWQgYmVjYXVzZSBkcml2ZXJzIGFyZSBhbGxvd2VkIHRvIHN1Y2Nlc3NmdWxseSBj
b21waWxlIHNoYWRlcnMgdGhhdCBoYXZlIG1vcmUgdGhhbiB0aGUKKy8vIG1heGltdW0gbnVtYmVy
IG9mIHZhcnlpbmdzLiAoaHR0cDovL2FuZ2xlYnVnLmNvbS8xMjk2KQorVEVTVF9QKEdMU0xUZXN0
LCBESVNBQkxFRF9NYXhQbHVzT25lVmFyeWluZ1ZlYzNBcnJheSkKK3sKKyAgICBHTGludCBtYXhW
YXJ5aW5ncyA9IDA7CisgICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19WRUNUT1JTLCAm
bWF4VmFyeWluZ3MpOworCisgICAgVmFyeWluZ1Rlc3RCYXNlKDAsIDAsIDAsIDAsIDAsIG1heFZh
cnlpbmdzIC8gMiArIDEsIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKK30KKwor
Ly8gRGlzYWJsZWQgYmVjYXVzZSBkcml2ZXJzIGFyZSBhbGxvd2VkIHRvIHN1Y2Nlc3NmdWxseSBj
b21waWxlIHNoYWRlcnMgdGhhdCBoYXZlIG1vcmUgdGhhbiB0aGUKKy8vIG1heGltdW0gbnVtYmVy
IG9mIHZhcnlpbmdzLiAoaHR0cDovL2FuZ2xlYnVnLmNvbS8xMjk2KQorVEVTVF9QKEdMU0xUZXN0
LCBESVNBQkxFRF9NYXhWYXJ5aW5nVmVjM0FuZE9uZVZlYzIpCit7CisgICAgR0xpbnQgbWF4VmFy
eWluZ3MgPSAwOworICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJTkdfVkVDVE9SUywgJm1h
eFZhcnlpbmdzKTsKKworICAgIFZhcnlpbmdUZXN0QmFzZSgwLCAwLCAxLCAwLCBtYXhWYXJ5aW5n
cywgMCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworfQorCisvLyBEaXNhYmxl
ZCBiZWNhdXNlIGRyaXZlcnMgYXJlIGFsbG93ZWQgdG8gc3VjY2Vzc2Z1bGx5IGNvbXBpbGUgc2hh
ZGVycyB0aGF0IGhhdmUgbW9yZSB0aGFuIHRoZQorLy8gbWF4aW11bSBudW1iZXIgb2YgdmFyeWlu
Z3MuIChodHRwOi8vYW5nbGVidWcuY29tLzEyOTYpCitURVNUX1AoR0xTTFRlc3QsIERJU0FCTEVE
X01heFBsdXNPbmVWYXJ5aW5nVmVjMikKK3sKKyAgICBHTGludCBtYXhWYXJ5aW5ncyA9IDA7Cisg
ICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19WRUNUT1JTLCAmbWF4VmFyeWluZ3MpOwor
CisgICAgVmFyeWluZ1Rlc3RCYXNlKDAsIDAsIDIgKiBtYXhWYXJ5aW5ncyArIDEsIDAsIDAsIDAs
IDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKK30KKworLy8gRGlzYWJsZWQgYmVj
YXVzZSBkcml2ZXJzIGFyZSBhbGxvd2VkIHRvIHN1Y2Nlc3NmdWxseSBjb21waWxlIHNoYWRlcnMg
dGhhdCBoYXZlIG1vcmUgdGhhbiB0aGUKKy8vIG1heGltdW0gbnVtYmVyIG9mIHZhcnlpbmdzLiAo
aHR0cDovL2FuZ2xlYnVnLmNvbS8xMjk2KQorVEVTVF9QKEdMU0xUZXN0LCBESVNBQkxFRF9NYXhW
YXJ5aW5nVmVjM0FycmF5QW5kTWF4UGx1c09uZUZsb2F0QXJyYXkpCit7CisgICAgR0xpbnQgbWF4
VmFyeWluZ3MgPSAwOworICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJTkdfVkVDVE9SUywg
Jm1heFZhcnlpbmdzKTsKKworICAgIFZhcnlpbmdUZXN0QmFzZSgwLCBtYXhWYXJ5aW5ncyAvIDIg
KyAxLCAwLCAwLCAwLCAwLCAwLCBtYXhWYXJ5aW5ncyAvIDIsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlKTsKK30KKworLy8gVmVyaWZ5IHNoYWRlciBzb3VyY2Ugd2l0aCBhIGZpeGVkIGxlbmd0
aCB0aGF0IGlzIGxlc3MgdGhhbiB0aGUgbnVsbC10ZXJtaW5hdGVkIGxlbmd0aCB3aWxsIGNvbXBp
bGUuCitURVNUX1AoR0xTTFRlc3QsIEZpeGVkU2hhZGVyTGVuZ3RoKQoreworICAgIEdMdWludCBz
aGFkZXIgPSBnbENyZWF0ZVNoYWRlcihHTF9GUkFHTUVOVF9TSEFERVIpOworCisgICAgY29uc3Qg
c3RkOjpzdHJpbmcgYXBwZW5kR2FyYmFnZSA9ICJhYmNhc2RmYXNkZmFzZGZhc2RmYXNkZiI7Cisg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgc291cmNlID0gInZvaWQgbWFpbigpIHsgZ2xfRnJhZ0NvbG9y
ID0gdmVjNCgwLCAwLCAwLCAwKTsgfSIgKyBhcHBlbmRHYXJiYWdlOworICAgIGNvbnN0IGNoYXIg
KnNvdXJjZUFycmF5WzFdID0geyBzb3VyY2UuY19zdHIoKSB9OworICAgIEdMaW50IGxlbmd0aHNb
MV0gPSB7IHN0YXRpY19jYXN0PEdMaW50Pihzb3VyY2UubGVuZ3RoKCkgLSBhcHBlbmRHYXJiYWdl
Lmxlbmd0aCgpKSB9OworICAgIGdsU2hhZGVyU291cmNlKHNoYWRlciwgc3RhdGljX2Nhc3Q8R0xz
aXplaT4oQXJyYXlTaXplKHNvdXJjZUFycmF5KSksIHNvdXJjZUFycmF5LCBsZW5ndGhzKTsKKyAg
ICBnbENvbXBpbGVTaGFkZXIoc2hhZGVyKTsKKworICAgIEdMaW50IGNvbXBpbGVSZXN1bHQ7Cisg
ICAgZ2xHZXRTaGFkZXJpdihzaGFkZXIsIEdMX0NPTVBJTEVfU1RBVFVTLCAmY29tcGlsZVJlc3Vs
dCk7CisgICAgRVhQRUNUX05FKGNvbXBpbGVSZXN1bHQsIDApOworfQorCisvLyBWZXJpZnkgdGhh
dCBhIG5lZ2F0aXZlIHNoYWRlciBzb3VyY2UgbGVuZ3RoIGlzIHRyZWF0ZWQgYXMgYSBudWxsLXRl
cm1pbmF0ZWQgbGVuZ3RoLgorVEVTVF9QKEdMU0xUZXN0LCBOZWdhdGl2ZVNoYWRlckxlbmd0aCkK
K3sKKyAgICBHTHVpbnQgc2hhZGVyID0gZ2xDcmVhdGVTaGFkZXIoR0xfRlJBR01FTlRfU0hBREVS
KTsKKworICAgIGNvbnN0IGNoYXIgKnNvdXJjZUFycmF5WzFdID0geyAidm9pZCBtYWluKCkgeyBn
bF9GcmFnQ29sb3IgPSB2ZWM0KDAsIDAsIDAsIDApOyB9IiB9OworICAgIEdMaW50IGxlbmd0aHNb
MV0gPSB7IC0xMCB9OworICAgIGdsU2hhZGVyU291cmNlKHNoYWRlciwgc3RhdGljX2Nhc3Q8R0xz
aXplaT4oQXJyYXlTaXplKHNvdXJjZUFycmF5KSksIHNvdXJjZUFycmF5LCBsZW5ndGhzKTsKKyAg
ICBnbENvbXBpbGVTaGFkZXIoc2hhZGVyKTsKKworICAgIEdMaW50IGNvbXBpbGVSZXN1bHQ7Cisg
ICAgZ2xHZXRTaGFkZXJpdihzaGFkZXIsIEdMX0NPTVBJTEVfU1RBVFVTLCAmY29tcGlsZVJlc3Vs
dCk7CisgICAgRVhQRUNUX05FKGNvbXBpbGVSZXN1bHQsIDApOworfQorCisvLyBDaGVjayB0aGF0
IGhhdmluZyBhbiBpbnZhbGlkIGNoYXIgYWZ0ZXIgdGhlICIuIiBkb2Vzbid0IGNhdXNlIGFuIGFz
c2VydC4KK1RFU1RfUChHTFNMVGVzdCwgSW52YWxpZEZpZWxkRmlyc3RDaGFyKQoreworICAgIEdM
dWludCBzaGFkZXIgICAgICA9IGdsQ3JlYXRlU2hhZGVyKEdMX1ZFUlRFWF9TSEFERVIpOworICAg
IGNvbnN0IGNoYXIgKnNvdXJjZSA9ICJ2b2lkIG1haW4oKSB7dmVjNCB4OyB4Ln0iOworICAgIGds
U2hhZGVyU291cmNlKHNoYWRlciwgMSwgJnNvdXJjZSwgMCk7CisgICAgZ2xDb21waWxlU2hhZGVy
KHNoYWRlcik7CisKKyAgICBHTGludCBjb21waWxlUmVzdWx0OworICAgIGdsR2V0U2hhZGVyaXYo
c2hhZGVyLCBHTF9DT01QSUxFX1NUQVRVUywgJmNvbXBpbGVSZXN1bHQpOworICAgIEVYUEVDVF9F
USgwLCBjb21waWxlUmVzdWx0KTsKK30KKworLy8gVmVyaWZ5IHRoYXQgYSBsZW5ndGggYXJyYXkg
d2l0aCBtaXhlZCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgdmFsdWVzIGNvbXBpbGVzLgorVEVTVF9Q
KEdMU0xUZXN0LCBNaXhlZFNoYWRlckxlbmd0aHMpCit7CisgICAgR0x1aW50IHNoYWRlciA9IGds
Q3JlYXRlU2hhZGVyKEdMX0ZSQUdNRU5UX1NIQURFUik7CisKKyAgICBjb25zdCBjaGFyICpzb3Vy
Y2VBcnJheVtdID0KKyAgICB7CisgICAgICAgICJ2b2lkIG1haW4oKSIsCisgICAgICAgICJ7IiwK
KyAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAsIDAsIDAsIDApOyIsCisgICAgICAg
ICJ9IiwKKyAgICB9OworICAgIEdMaW50IGxlbmd0aHNbXSA9CisgICAgeworICAgICAgICAtMTAs
CisgICAgICAgIDEsCisgICAgICAgIHN0YXRpY19jYXN0PEdMaW50PihzdHJsZW4oc291cmNlQXJy
YXlbMl0pKSwKKyAgICAgICAgLTEsCisgICAgfTsKKyAgICBBU1NFUlRfRVEoQXJyYXlTaXplKHNv
dXJjZUFycmF5KSwgQXJyYXlTaXplKGxlbmd0aHMpKTsKKworICAgIGdsU2hhZGVyU291cmNlKHNo
YWRlciwgc3RhdGljX2Nhc3Q8R0xzaXplaT4oQXJyYXlTaXplKHNvdXJjZUFycmF5KSksIHNvdXJj
ZUFycmF5LCBsZW5ndGhzKTsKKyAgICBnbENvbXBpbGVTaGFkZXIoc2hhZGVyKTsKKworICAgIEdM
aW50IGNvbXBpbGVSZXN1bHQ7CisgICAgZ2xHZXRTaGFkZXJpdihzaGFkZXIsIEdMX0NPTVBJTEVf
U1RBVFVTLCAmY29tcGlsZVJlc3VsdCk7CisgICAgRVhQRUNUX05FKGNvbXBpbGVSZXN1bHQsIDAp
OworfQorCisvLyBWZXJpZnkgdGhhdCB6ZXJvLWxlbmd0aCBzaGFkZXIgc291cmNlIGRvZXMgbm90
IGFmZmVjdCBzaGFkZXIgY29tcGlsYXRpb24uCitURVNUX1AoR0xTTFRlc3QsIFplcm9TaGFkZXJM
ZW5ndGgpCit7CisgICAgR0x1aW50IHNoYWRlciA9IGdsQ3JlYXRlU2hhZGVyKEdMX0ZSQUdNRU5U
X1NIQURFUik7CisKKyAgICBjb25zdCBjaGFyICpzb3VyY2VBcnJheVtdID0KKyAgICB7CisgICAg
ICAgICJhZGZhc2RmIiwKKyAgICAgICAgIjM0NTM0IiwKKyAgICAgICAgInZvaWQgbWFpbigpIHsg
Z2xfRnJhZ0NvbG9yID0gdmVjNCgwLCAwLCAwLCAwKTsgfSIsCisgICAgICAgICIiLAorICAgICAg
ICAiYXNkZmFzZGZzZHNkZiIsCisgICAgfTsKKyAgICBHTGludCBsZW5ndGhzW10gPQorICAgIHsK
KyAgICAgICAgMCwKKyAgICAgICAgMCwKKyAgICAgICAgLTEsCisgICAgICAgIDAsCisgICAgICAg
IDAsCisgICAgfTsKKyAgICBBU1NFUlRfRVEoQXJyYXlTaXplKHNvdXJjZUFycmF5KSwgQXJyYXlT
aXplKGxlbmd0aHMpKTsKKworICAgIGdsU2hhZGVyU291cmNlKHNoYWRlciwgc3RhdGljX2Nhc3Q8
R0xzaXplaT4oQXJyYXlTaXplKHNvdXJjZUFycmF5KSksIHNvdXJjZUFycmF5LCBsZW5ndGhzKTsK
KyAgICBnbENvbXBpbGVTaGFkZXIoc2hhZGVyKTsKKworICAgIEdMaW50IGNvbXBpbGVSZXN1bHQ7
CisgICAgZ2xHZXRTaGFkZXJpdihzaGFkZXIsIEdMX0NPTVBJTEVfU1RBVFVTLCAmY29tcGlsZVJl
c3VsdCk7CisgICAgRVhQRUNUX05FKGNvbXBpbGVSZXN1bHQsIDApOworfQorCisvLyBUZXN0cyB0
aGF0IGJhZCBpbmRleCBleHByZXNzaW9ucyBkb24ndCBjcmFzaCBBTkdMRSdzIHRyYW5zbGF0b3Iu
CisvLyBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2FuZ2xlcHJvamVjdC9pc3N1ZXMvZGV0YWls
P2lkPTg1NworVEVTVF9QKEdMU0xUZXN0LCBCYWRJbmRleEJ1ZykKK3sKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyAmZnJhZ21lbnRTaGFkZXJTb3VyY2VWZWMgPQorICAgICAgICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzQgdW5pZm9ybVZlYztcbiIKKyAg
ICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgZ2xfRnJh
Z0NvbG9yID0gdmVjNCh1bmlmb3JtVmVjW2ludCgpXSk7XG4iCisgICAgICAgICJ9IjsKKworICAg
IEdMdWludCBzaGFkZXIgPSBDb21waWxlU2hhZGVyKEdMX0ZSQUdNRU5UX1NIQURFUiwgZnJhZ21l
bnRTaGFkZXJTb3VyY2VWZWMpOworICAgIEVYUEVDVF9FUSgwdSwgc2hhZGVyKTsKKworICAgIGlm
IChzaGFkZXIgIT0gMCkKKyAgICB7CisgICAgICAgIGdsRGVsZXRlU2hhZGVyKHNoYWRlcik7Cisg
ICAgfQorCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdtZW50U2hhZGVyU291cmNlTWF0ID0K
KyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidW5pZm9ybSBt
YXQ0IHVuaWZvcm1NYXQ7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xu
IgorICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQodW5pZm9ybU1hdFtpbnQoKV0pO1xu
IgorICAgICAgICAifSI7CisKKyAgICBzaGFkZXIgPSBDb21waWxlU2hhZGVyKEdMX0ZSQUdNRU5U
X1NIQURFUiwgZnJhZ21lbnRTaGFkZXJTb3VyY2VNYXQpOworICAgIEVYUEVDVF9FUSgwdSwgc2hh
ZGVyKTsKKworICAgIGlmIChzaGFkZXIgIT0gMCkKKyAgICB7CisgICAgICAgIGdsRGVsZXRlU2hh
ZGVyKHNoYWRlcik7CisgICAgfQorCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdtZW50U2hh
ZGVyU291cmNlQXJyYXkgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisg
ICAgICAgICJ1bmlmb3JtIHZlYzQgdW5pZm9ybUFycmF5O1xuIgorICAgICAgICAidm9pZCBtYWlu
KClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHVu
aWZvcm1BcnJheVtpbnQoKV0pO1xuIgorICAgICAgICAifSI7CisKKyAgICBzaGFkZXIgPSBDb21w
aWxlU2hhZGVyKEdMX0ZSQUdNRU5UX1NIQURFUiwgZnJhZ21lbnRTaGFkZXJTb3VyY2VBcnJheSk7
CisgICAgRVhQRUNUX0VRKDB1LCBzaGFkZXIpOworCisgICAgaWYgKHNoYWRlciAhPSAwKQorICAg
IHsKKyAgICAgICAgZ2xEZWxldGVTaGFkZXIoc2hhZGVyKTsKKyAgICB9Cit9CisKKy8vIFRlc3Qg
dGhhdCBzdHJ1Y3RzIGRlZmluZWQgaW4gdW5pZm9ybXMgYXJlIHRyYW5zbGF0ZWQgY29ycmVjdGx5
LgorVEVTVF9QKEdMU0xUZXN0LCBTdHJ1Y3RTcGVjaWZpZXJzVW5pZm9ybXMpCit7CisgICAgY29u
c3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAg
KAorICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAgICAgICB1bmlmb3JtIHN0
cnVjdCBTIHsgZmxvYXQgZmllbGQ7fSBzOworCisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMSwgMCwgMCwgMSk7CisgICAgICAg
ICAgICBnbF9GcmFnQ29sb3IuYSArPSBzLmZpZWxkOworICAgICAgICB9CisgICAgKTsKKworICAg
IEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0obVNpbXBsZVZTU291cmNlLCBmcmFnbWVu
dFNoYWRlclNvdXJjZSk7CisgICAgRVhQRUNUX05FKDB1LCBwcm9ncmFtKTsKK30KKworLy8gVGVz
dCB0aGF0IGdsX0RlcHRoUmFuZ2UgaXMgbm90IHN0b3JlZCBhcyBhIHVuaWZvcm0gbG9jYXRpb24u
IFNpbmNlIHVuaWZvcm1zCisvLyBiZWdpbm5pbmcgd2l0aCAiZ2xfIiBhcmUgZmlsdGVyZWQgb3V0
IGJ5IG91ciB2YWxpZGF0aW9uIGxvZ2ljLCB3ZSBtdXN0CisvLyBieXBhc3MgdGhlIHZhbGlkYXRp
b24gdG8gdGVzdCB0aGUgYmVoYXZpb3VyIG9mIHRoZSBpbXBsZW1lbnRhdGlvbi4KKy8vIChub3Rl
IHRoaXMgdGVzdCBpcyBzdGlsbCBJbXBsLWluZGVwZW5kZW50KQorVEVTVF9QKEdMU0xUZXN0LCBE
ZXB0aFJhbmdlVW5pZm9ybXMpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFk
ZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgKAorICAgICAgICBwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICBn
bF9GcmFnQ29sb3IgPSB2ZWM0KGdsX0RlcHRoUmFuZ2UubmVhciwgZ2xfRGVwdGhSYW5nZS5mYXIs
IGdsX0RlcHRoUmFuZ2UuZGlmZiwgMSk7CisgICAgICAgIH0KKyAgICApOworCisgICAgR0x1aW50
IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbShtU2ltcGxlVlNTb3VyY2UsIGZyYWdtZW50U2hhZGVy
U291cmNlKTsKKyAgICBFWFBFQ1RfTkUoMHUsIHByb2dyYW0pOworCisgICAgLy8gZGl2ZSBpbnRv
IHRoZSBBTkdMRSBpbnRlcm5hbHMsIHNvIHdlIGNhbiBieXBhc3MgdmFsaWRhdGlvbi4KKyAgICBn
bDo6Q29udGV4dCAqY29udGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Z2w6OkNvbnRleHQgKj4oZ2V0
RUdMV2luZG93KCktPmdldENvbnRleHQoKSk7CisgICAgZ2w6OlByb2dyYW0gKmdsUHJvZ3JhbSA9
IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAgR0xpbnQgbmVhckluZGV4ID0gZ2xQ
cm9ncmFtLT5nZXRVbmlmb3JtTG9jYXRpb24oImdsX0RlcHRoUmFuZ2UubmVhciIpOworICAgIEVY
UEVDVF9FUSgtMSwgbmVhckluZGV4KTsKKworICAgIC8vIFRlc3QgZHJhd2luZyBkb2VzIG5vdCB0
aHJvdyBhbiBleGNlcHRpb24uCisgICAgZHJhd1F1YWQocHJvZ3JhbSwgImlucHV0QXR0cmlidXRl
IiwgMC41Zik7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsRGVsZXRlUHJv
Z3JhbShwcm9ncmFtKTsKK30KKworc3RkOjpzdHJpbmcgR2VuZXJhdGVTbWFsbFBvd1NoYWRlcihk
b3VibGUgYmFzZSwgZG91YmxlIGV4cG9uZW50KQoreworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0
cmVhbTsKKworICAgIHN0cmVhbS5wcmVjaXNpb24oOCk7CisKKyAgICBkb3VibGUgcmVzdWx0ID0g
cG93KGJhc2UsIGV4cG9uZW50KTsKKworICAgIHN0cmVhbSA8PCAicHJlY2lzaW9uIGhpZ2hwIGZs
b2F0O1xuIgorICAgICAgICAgICA8PCAiZmxvYXQgZnVuKGZsb2F0IGFyZylcbiIKKyAgICAgICAg
ICAgPDwgIntcbiIKKyAgICAgICAgICAgPDwgIiAgICByZXR1cm4gcG93KGFyZywgIiA8PCBzdGQ6
OmZpeGVkIDw8IGV4cG9uZW50IDw8ICIpO1xuIgorICAgICAgICAgICA8PCAifVxuIgorICAgICAg
ICAgICA8PCAiXG4iCisgICAgICAgICAgIDw8ICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAgICA8
PCAie1xuIgorICAgICAgICAgICA8PCAiICAgIGNvbnN0IGZsb2F0IGEgPSAiIDw8IHN0ZDo6c2Np
ZW50aWZpYyA8PCBiYXNlIDw8ICI7XG4iCisgICAgICAgICAgIDw8ICIgICAgZmxvYXQgYiA9IGZ1
bihhKTtcbiIKKyAgICAgICAgICAgPDwgIiAgICBpZiAoYWJzKCIgPDwgcmVzdWx0IDw8ICIgLSBi
KSA8ICIgPDwgc3RkOjphYnMocmVzdWx0ICogMC4wMDEpIDw8ICIpXG4iCisgICAgICAgICAgIDw8
ICIgICAge1xuIgorICAgICAgICAgICA8PCAiICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAu
MCwgMS4wLCAwLjAsIDEuMCk7XG4iCisgICAgICAgICAgIDw8ICIgICAgfVxuIgorICAgICAgICAg
ICA8PCAiICAgIGVsc2VcbiIKKyAgICAgICAgICAgPDwgIiAgICB7XG4iCisgICAgICAgICAgIDw8
ICIgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTtcbiIKKyAg
ICAgICAgICAgPDwgIiAgICB9XG4iCisgICAgICAgICAgIDw8ICJ9XG4iOworCisgICAgcmV0dXJu
IHN0cmVhbS5zdHIoKTsKK30KKworLy8gQ292ZXJzIHRoZSBXZWJHTCB0ZXN0ICdnbHNsL2J1Z3Mv
cG93LW9mLXNtYWxsLWNvbnN0YW50LWluLXVzZXItZGVmaW5lZC1mdW5jdGlvbicKKy8vIFNlZSBo
dHRwOi8vYW5nbGVidWcuY29tLzg1MQorVEVTVF9QKEdMU0xUZXN0LCBQb3dPZlNtYWxsQ29uc3Rh
bnQpCit7CisgICAgc3RkOjp2ZWN0b3I8ZG91YmxlPiBiYWRzOworICAgIGZvciAoaW50IGVwcyA9
IC0xOyBlcHMgPD0gMTsgKytlcHMpCisgICAgeworICAgICAgICBmb3IgKGludCBpID0gLTQ7IGkg
PD0gNTsgKytpKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaSA+PSAtMSAmJiBpIDw9IDEp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBjb25zdCBkb3VibGUgZXBz
aWxvbiA9IDEuMGUtODsKKyAgICAgICAgICAgIGRvdWJsZSBiYWQgICAgICAgICAgID0gc3RhdGlj
X2Nhc3Q8ZG91YmxlPihpKSArIHN0YXRpY19jYXN0PGRvdWJsZT4oZXBzKSAqIGVwc2lsb247Cisg
ICAgICAgICAgICBiYWRzLnB1c2hfYmFjayhiYWQpOworICAgICAgICB9CisgICAgfQorCisgICAg
Zm9yIChkb3VibGUgYmFkIDogYmFkcykKKyAgICB7CisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZmcmFnbWVudFNoYWRlclNvdXJjZSA9IEdlbmVyYXRlU21hbGxQb3dTaGFkZXIoMS4wZS02LCBi
YWQpOworCisgICAgICAgIEFOR0xFX0dMX1BST0dSQU0ocHJvZ3JhbSwgbVNpbXBsZVZTU291cmNl
LCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisKKyAgICAgICAgZHJhd1F1YWQocHJvZ3JhbS5nZXQo
KSwgImlucHV0QXR0cmlidXRlIiwgMC41Zik7CisKKyAgICAgICAgRVhQRUNUX1BJWEVMX0NPTE9S
X0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
CisgICAgfQorfQorCisvLyBUZXN0IHRoYXQgZnJhZ21lbnQgc2hhZGVycyB3aGljaCBjb250YWlu
IG5vbi1jb25zdGFudCBsb29wIGluZGV4ZXJzIGFuZCBjb21waWxlZCBmb3IgRkw5XzMgYW5kCisv
LyBiZWxvdworLy8gZmFpbCB3aXRoIGEgc3BlY2lmaWMgZXJyb3IgbWVzc2FnZS4KKy8vIEFkZGl0
aW9uYWxseSB0ZXN0IHRoYXQgdGhlIHNhbWUgZnJhZ21lbnQgc2hhZGVyIGNvbXBpbGVzIHN1Y2Nl
c3NmdWxseSB3aXRoIGZlYXR1cmUgbGV2ZWxzIGdyZWF0ZXIKKy8vIHRoYW4gRkw5XzMuCitURVNU
X1AoR0xTTFRlc3QsIExvb3BJbmRleGluZ1ZhbGlkYXRpb24pCit7CisgICAgY29uc3Qgc3RkOjpz
dHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgKAorICAgICAg
ICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAgICAgICB1bmlmb3JtIGZsb2F0IGxvb3BN
YXg7CisKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xfRnJh
Z0NvbG9yID0gdmVjNCgxLCAwLCAwLCAxKTsKKyAgICAgICAgICAgIGZvciAoZmxvYXQgbCA9IDAu
MDsgbCA8IGxvb3BNYXg7IGwrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAo
bG9vcE1heCA+IDMuMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGds
X0ZyYWdDb2xvci5hICs9IDAuMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICApOworCisgICAgR0x1aW50IHNoYWRlciA9IGdsQ3JlYXRlU2hhZGVyKEdM
X0ZSQUdNRU5UX1NIQURFUik7CisKKyAgICBjb25zdCBjaGFyICpzb3VyY2VBcnJheVsxXSA9IHtm
cmFnbWVudFNoYWRlclNvdXJjZS5jX3N0cigpfTsKKyAgICBnbFNoYWRlclNvdXJjZShzaGFkZXIs
IDEsIHNvdXJjZUFycmF5LCBudWxscHRyKTsKKyAgICBnbENvbXBpbGVTaGFkZXIoc2hhZGVyKTsK
KworICAgIEdMaW50IGNvbXBpbGVSZXN1bHQ7CisgICAgZ2xHZXRTaGFkZXJpdihzaGFkZXIsIEdM
X0NPTVBJTEVfU1RBVFVTLCAmY29tcGlsZVJlc3VsdCk7CisKKyAgICAvLyBJZiB0aGUgdGVzdCBp
cyBjb25maWd1cmVkIHRvIHJ1biBsaW1pdGVkIHRvIEZlYXR1cmUgTGV2ZWwgOV8zLCB0aGVuIGl0
IGlzCisgICAgLy8gYXNzdW1lZCB0aGF0IHNoYWRlciBjb21waWxhdGlvbiB3aWxsIGZhaWwgd2l0
aCBhbiBleHBlY3RlZCBlcnJvciBtZXNzYWdlIGNvbnRhaW5pbmcKKyAgICAvLyAiTG9vcCBpbmRl
eCBjYW5ub3QgYmUgY29tcGFyZWQgd2l0aCBub24tY29uc3RhbnQgZXhwcmVzc2lvbiIKKyAgICBp
ZiAoKEdldFBhcmFtKCkgPT0gRVMyX0QzRDExX0ZMOV8zKCkgfHwgR2V0UGFyYW0oKSA9PSBFUzJf
RDNEOSgpKSkKKyAgICB7CisgICAgICAgIGlmIChjb21waWxlUmVzdWx0ICE9IDApCisgICAgICAg
IHsKKyAgICAgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwg
ZXhwZWN0ZWQgZmFpbHVyZSI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7Cisg
ICAgICAgICAgICBHTGludCBpbmZvTG9nTGVuZ3RoOworICAgICAgICAgICAgZ2xHZXRTaGFkZXJp
dihzaGFkZXIsIEdMX0lORk9fTE9HX0xFTkdUSCwgJmluZm9Mb2dMZW5ndGgpOworCisgICAgICAg
ICAgICBzdGQ6OnN0cmluZyBpbmZvTG9nOworICAgICAgICAgICAgaW5mb0xvZy5yZXNpemUoaW5m
b0xvZ0xlbmd0aCk7CisgICAgICAgICAgICBnbEdldFNoYWRlckluZm9Mb2coc2hhZGVyLCBzdGF0
aWNfY2FzdDxHTHNpemVpPihpbmZvTG9nLnNpemUoKSksIE5VTEwsICZpbmZvTG9nWzBdKTsKKwor
ICAgICAgICAgICAgaWYgKGluZm9Mb2cuZmluZCgiTG9vcCBpbmRleCBjYW5ub3QgYmUgY29tcGFy
ZWQgd2l0aCBub24tY29uc3RhbnQgZXhwcmVzc2lvbiIpID09CisgICAgICAgICAgICAgICAgc3Rk
OjpzdHJpbmc6Om5wb3MpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRkFJTCgpIDw8
ICJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkIHdpdGggdW5leHBlY3RlZCBlcnJvciBtZXNzYWdl
IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAg
ICAgICBFWFBFQ1RfTkUoMCwgY29tcGlsZVJlc3VsdCk7CisgICAgfQorCisgICAgaWYgKHNoYWRl
ciAhPSAwKQorICAgIHsKKyAgICAgICAgZ2xEZWxldGVTaGFkZXIoc2hhZGVyKTsKKyAgICB9Cit9
CisKKy8vIFRlc3RzIHRoYXQgdGhlIG1heGltdW0gdW5pZm9ybXMgY291bnQgcmV0dXJuZWQgZnJv
bSBxdWVyeWluZyBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUworLy8gY2FuIGFjdHVhbGx5
IGJlIHVzZWQuCitURVNUX1AoR0xTTFRlc3QsIFZlcmlmeU1heFZlcnRleFVuaWZvcm1WZWN0b3Jz
KQoreworICAgIGludCBtYXhVbmlmb3JtcyA9IDEwMDAwOworICAgIGdsR2V0SW50ZWdlcnYoR0xf
TUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMsICZtYXhVbmlmb3Jtcyk7CisgICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7CisgICAgc3RkOjpjb3V0IDw8ICJWYWxpZGF0aW5nIEdMX01BWF9WRVJURVhf
VU5JRk9STV9WRUNUT1JTID0gIiA8PCBtYXhVbmlmb3JtcyA8PCBzdGQ6OmVuZGw7CisKKyAgICBD
b21waWxlR0xTTFdpdGhVbmlmb3Jtc0FuZFNhbXBsZXJzKG1heFVuaWZvcm1zLCAwLCAwLCAwLCB0
cnVlKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgbWF4aW11bSB1bmlmb3JtcyBjb3VudCByZXR1
cm5lZCBmcm9tIHF1ZXJ5aW5nIEdMX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTCisvLyBjYW4g
YWN0dWFsbHkgYmUgdXNlZCBhbG9uZyB3aXRoIHRoZSBtYXhpbXVtIG51bWJlciBvZiB0ZXh0dXJl
IHNhbXBsZXJzLgorVEVTVF9QKEdMU0xUZXN0LCBWZXJpZnlNYXhWZXJ0ZXhVbmlmb3JtVmVjdG9y
c1dpdGhTYW1wbGVycykKK3sKKyAgICBpZiAoR2V0UGFyYW0oKS5lZ2xQYXJhbWV0ZXJzLnJlbmRl
cmVyID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSB8fAorICAgICAgICBH
ZXRQYXJhbSgpLmVnbFBhcmFtZXRlcnMucmVuZGVyZXIgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZ
UEVfT1BFTkdMRVNfQU5HTEUpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3QgZGlz
YWJsZWQgb24gT3BlbkdMLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaW50IG1heFVuaWZvcm1zID0gMTAwMDA7CisgICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhf
VkVSVEVYX1VOSUZPUk1fVkVDVE9SUywgJm1heFVuaWZvcm1zKTsKKyAgICBFWFBFQ1RfR0xfTk9f
RVJST1IoKTsKKyAgICBzdGQ6OmNvdXQgPDwgIlZhbGlkYXRpbmcgR0xfTUFYX1ZFUlRFWF9VTklG
T1JNX1ZFQ1RPUlMgPSAiIDw8IG1heFVuaWZvcm1zIDw8IHN0ZDo6ZW5kbDsKKworICAgIGludCBt
YXhUZXh0dXJlSW1hZ2VVbml0cyA9IDA7CisgICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVkVSVEVY
X1RFWFRVUkVfSU1BR0VfVU5JVFMsICZtYXhUZXh0dXJlSW1hZ2VVbml0cyk7CisKKyAgICBDb21w
aWxlR0xTTFdpdGhVbmlmb3Jtc0FuZFNhbXBsZXJzKG1heFVuaWZvcm1zLCAwLCBtYXhUZXh0dXJl
SW1hZ2VVbml0cywgMCwgdHJ1ZSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhlIG1heGltdW0gdW5p
Zm9ybXMgY291bnQgKyAxIGZyb20gcXVlcnlpbmcgR0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RP
UlMKKy8vIGZhaWxzIHNoYWRlciBjb21waWxhdGlvbi4KK1RFU1RfUChHTFNMVGVzdCwgVmVyaWZ5
TWF4VmVydGV4VW5pZm9ybVZlY3RvcnNFeGNlZWRlZCkKK3sKKyAgICBpbnQgbWF4VW5pZm9ybXMg
PSAxMDAwMDsKKyAgICBnbEdldEludGVnZXJ2KEdMX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JT
LCAmbWF4VW5pZm9ybXMpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgIHN0ZDo6Y291
dCA8PCAiVmFsaWRhdGluZyBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUyArIDEgPSAiIDw8
IG1heFVuaWZvcm1zICsgMSA8PCBzdGQ6OmVuZGw7CisKKyAgICBDb21waWxlR0xTTFdpdGhVbmlm
b3Jtc0FuZFNhbXBsZXJzKG1heFVuaWZvcm1zICsgMSwgMCwgMCwgMCwgZmFsc2UpOworfQorCisv
LyBUZXN0cyB0aGF0IHRoZSBtYXhpbXVtIHVuaWZvcm1zIGNvdW50IHJldHVybmVkIGZyb20gcXVl
cnlpbmcgR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUworLy8gY2FuIGFjdHVhbGx5IGJl
IHVzZWQuCitURVNUX1AoR0xTTFRlc3QsIFZlcmlmeU1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMp
Cit7CisgICAgaW50IG1heFVuaWZvcm1zID0gMTAwMDA7CisgICAgZ2xHZXRJbnRlZ2VydihHTF9N
QVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTLCAmbWF4VW5pZm9ybXMpOworICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworICAgIHN0ZDo6Y291dCA8PCAiVmFsaWRhdGluZyBHTF9NQVhfRlJBR01F
TlRfVU5JRk9STV9WRUNUT1JTID0gIiA8PCBtYXhVbmlmb3JtcyA8PCBzdGQ6OmVuZGw7CisKKyAg
ICBDb21waWxlR0xTTFdpdGhVbmlmb3Jtc0FuZFNhbXBsZXJzKDAsIG1heFVuaWZvcm1zLCAwLCAw
LCB0cnVlKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgbWF4aW11bSB1bmlmb3JtcyBjb3VudCBy
ZXR1cm5lZCBmcm9tIHF1ZXJ5aW5nIEdMX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMKKy8v
IGNhbiBhY3R1YWxseSBiZSB1c2VkIGFsb25nIHdpdGggdGhlIG1heGltdW0gbnVtYmVyIG9mIHRl
eHR1cmUgc2FtcGxlcnMuCitURVNUX1AoR0xTTFRlc3QsIFZlcmlmeU1heEZyYWdtZW50VW5pZm9y
bVZlY3RvcnNXaXRoU2FtcGxlcnMpCit7CisgICAgaWYgKEdldFBhcmFtKCkuZWdsUGFyYW1ldGVy
cy5yZW5kZXJlciA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUgfHwKKyAg
ICAgICAgR2V0UGFyYW0oKS5lZ2xQYXJhbWV0ZXJzLnJlbmRlcmVyID09IEVHTF9QTEFURk9STV9B
TkdMRV9UWVBFX09QRU5HTEVTX0FOR0xFKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJU
ZXN0IGRpc2FibGVkIG9uIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGludCBtYXhVbmlmb3JtcyA9IDEwMDAwOworICAgIGdsR2V0SW50ZWdlcnYo
R0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUywgJm1heFVuaWZvcm1zKTsKKyAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKKworICAgIGludCBtYXhUZXh0dXJlSW1hZ2VVbml0cyA9IDA7Cisg
ICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVEVYVFVSRV9JTUFHRV9VTklUUywgJm1heFRleHR1cmVJ
bWFnZVVuaXRzKTsKKworICAgIENvbXBpbGVHTFNMV2l0aFVuaWZvcm1zQW5kU2FtcGxlcnMoMCwg
bWF4VW5pZm9ybXMsIDAsIG1heFRleHR1cmVJbWFnZVVuaXRzLCB0cnVlKTsKK30KKworLy8gVGVz
dHMgdGhhdCB0aGUgbWF4aW11bSB1bmlmb3JtcyBjb3VudCArIDEgZnJvbSBxdWVyeWluZyBHTF9N
QVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTCisvLyBmYWlscyBzaGFkZXIgY29tcGlsYXRpb24u
CitURVNUX1AoR0xTTFRlc3QsIFZlcmlmeU1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnNFeGNlZWRl
ZCkKK3sKKyAgICBpbnQgbWF4VW5pZm9ybXMgPSAxMDAwMDsKKyAgICBnbEdldEludGVnZXJ2KEdM
X01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMsICZtYXhVbmlmb3Jtcyk7CisgICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7CisgICAgc3RkOjpjb3V0IDw8ICJWYWxpZGF0aW5nIEdMX01BWF9GUkFH
TUVOVF9VTklGT1JNX1ZFQ1RPUlMgKyAxID0gIiA8PCBtYXhVbmlmb3JtcyArIDEKKyAgICAgICAg
ICAgICAgPDwgc3RkOjplbmRsOworCisgICAgQ29tcGlsZUdMU0xXaXRoVW5pZm9ybXNBbmRTYW1w
bGVycygwLCBtYXhVbmlmb3JtcyArIDEsIDAsIDAsIGZhbHNlKTsKK30KKworLy8gVGVzdCB0aGF0
IHR3byBjb25zdHJ1Y3RvcnMgd2hpY2ggaGF2ZSB2ZWM0IGFuZCBtYXQyIHBhcmFtZXRlcnMgZ2V0
IGRpc2FtYmlndWF0ZWQgKGlzc3VlIGluCisvLyBITFNMKS4KK1RFU1RfUChHTFNMVGVzdF9FUzMs
IEFtYmlndW91c0NvbnN0cnVjdG9yQ2FsbDJ4MikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBm
cmFnbWVudFNoYWRlclNvdXJjZSA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAg
ICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdD
b2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAg
ICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLjApO1xuIgorICAgICAgICAifSI7CisKKyAgICBj
b25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24g
MzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCisgICAgICAgICJp
biB2ZWM0IGFfdmVjO1xuIgorICAgICAgICAiaW4gbWF0MiBhX21hdDtcbiIKKyAgICAgICAgInZv
aWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSB2
ZWM0KGFfdmVjKSArIHZlYzQoYV9tYXQpO1xuIgorICAgICAgICAifSI7CisKKyAgICBHTHVpbnQg
cHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFk
ZXJTb3VyY2UpOworICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7Cit9CisKKy8vIFRlc3QgdGhh
dCB0d28gY29uc3RydWN0b3JzIHdoaWNoIGhhdmUgbWF0MngzIGFuZCBtYXQzeDIgcGFyYW1ldGVy
cyBnZXQgZGlzYW1iaWd1YXRlZC4KKy8vIFRoaXMgd2FzIHN1c3BlY3RlZCB0byBiZSBhbiBpc3N1
ZSBpbiBITFNMLCBidXQgSExTTCBzZWVtcyB0byBiZSBhYmxlIHRvIG5hdGl2ZWx5IGNob29zZSBi
ZXR3ZWVuCisvLyB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlcyBpbiB0aGlzIGNhc2UuCitURVNUX1Ao
R0xTTFRlc3RfRVMzLCBBbWJpZ3VvdXNDb25zdHJ1Y3RvckNhbGwyeDMpCit7CisgICAgY29uc3Qg
c3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24gMzAw
IGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQg
dmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAi
e1xuIgorICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKKyAgICAgICAg
In0iOworCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0KKyAgICAg
ICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xu
IgorICAgICAgICAiaW4gbWF0M3gyIGFfbWF0QTtcbiIKKyAgICAgICAgImluIG1hdDJ4MyBhX21h
dEI7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAi
ICAgIGdsX1Bvc2l0aW9uID0gdmVjNChhX21hdEEpICsgdmVjNChhX21hdEIpO1xuIgorICAgICAg
ICAifSI7CisKKyAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRl
clNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOworICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3Jh
bSk7Cit9CisKKy8vIFRlc3QgdGhhdCB0d28gZnVuY3Rpb25zIHdoaWNoIGhhdmUgdmVjNCBhbmQg
bWF0MiBwYXJhbWV0ZXJzIGdldCBkaXNhbWJpZ3VhdGVkIChpc3N1ZSBpbiBITFNMKS4KK1RFU1Rf
UChHTFNMVGVzdF9FUzMsIEFtYmlndW91c0Z1bmN0aW9uQ2FsbDJ4MikKK3sKKyAgICBjb25zdCBz
dGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9CisgICAgICAgICIjdmVyc2lvbiAzMDAg
ZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2
ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7
XG4iCisgICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLjApO1xuIgorICAgICAgICAi
fSI7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQorICAgICAg
ICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4i
CisgICAgICAgICJpbiB2ZWM0IGFfdmVjO1xuIgorICAgICAgICAiaW4gbWF0MiBhX21hdDtcbiIK
KyAgICAgICAgInZlYzQgZm9vKHZlYzQgYSlcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAg
ICByZXR1cm4gYTtcbiIKKyAgICAgICAgIn1cbiIKKyAgICAgICAgInZlYzQgZm9vKG1hdDIgYSlc
biIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICByZXR1cm4gdmVjNChhWzBdWzBdKTtcbiIK
KyAgICAgICAgIn1cbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisg
ICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSBmb28oYV92ZWMpICsgZm9vKGFfbWF0KTtcbiIKKyAg
ICAgICAgIn0iOworCisgICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhT
aGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKKyAgICBFWFBFQ1RfTkUoMHUsIHBy
b2dyYW0pOworfQorCisvLyBUZXN0IHRoYXQgYW4gdXNlci1kZWZpbmVkIGZ1bmN0aW9uIHdpdGgg
YSBsYXJnZSBudW1iZXIgb2YgZmxvYXQ0IHBhcmFtZXRlcnMgZG9lc24ndCBmYWlsIGR1ZSB0bwor
Ly8gdGhlIGZ1bmN0aW9uIG5hbWUgYmVpbmcgdG9vIGxvbmcuCitURVNUX1AoR0xTTFRlc3RfRVMz
LCBMYXJnZU51bWJlck9mRmxvYXQ0UGFyYW1ldGVycykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAg
ICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0Zy
YWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAg
ICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLjApO1xuIgorICAgICAgICAifSI7CisKKyAg
ICBzdGQ6OnN0cmluZ3N0cmVhbSB2ZXJ0ZXhTaGFkZXJTdHJlYW07CisgICAgY29uc3QgdW5zaWdu
ZWQgaW50IHBhcmFtQ291bnQgPSAxMDI0dTsKKworICAgIHZlcnRleFNoYWRlclN0cmVhbSA8PCAi
I3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICJwcmVjaXNpb24g
aGlnaHAgZmxvYXQ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiB2ZWM0IGFfdmVj
O1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAidmVjNCBsb3RzT2ZWZWM0UGFyYW1ldGVy
cygiOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGFyYW1Db3VudDsgKytpKQor
ICAgIHsKKyAgICAgICAgdmVydGV4U2hhZGVyU3RyZWFtIDw8ICJ2ZWM0IGEiIDw8IGkgPDwgIiwg
IjsKKyAgICB9CisgICAgdmVydGV4U2hhZGVyU3RyZWFtIDw8ICJ2ZWM0IGFMYXN0KVxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAi
ICAgIHJldHVybiAiOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGFyYW1Db3Vu
dDsgKytpKQorICAgIHsKKyAgICAgICAgdmVydGV4U2hhZGVyU3RyZWFtIDw8ICJhIiA8PCBpIDw8
ICIgKyAiOworICAgIH0KKyAgICB2ZXJ0ZXhTaGFkZXJTdHJlYW0gPDwgImFMYXN0O1xuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAi
dm9pZCBtYWluKClcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IGxvdHNPZlZlYzRQYXJhbWV0ZXJz
KCI7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwYXJhbUNvdW50OyArK2kpCisg
ICAgeworICAgICAgICB2ZXJ0ZXhTaGFkZXJTdHJlYW0gPDwgImFfdmVjLCAiOworICAgIH0KKyAg
ICB2ZXJ0ZXhTaGFkZXJTdHJlYW0gPDwgImFfdmVjKTtcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIn0iOworCisgICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhT
aGFkZXJTdHJlYW0uc3RyKCksIGZyYWdtZW50U2hhZGVyU291cmNlKTsKKyAgICBFWFBFQ1RfTkUo
MHUsIHByb2dyYW0pOworfQorCisvLyBUaGlzIHRlc3Qgd2FzIHdyaXR0ZW4gc3BlY2lmaWNhbGx5
IHRvIHN0cmVzcyBEZWZlckdsb2JhbEluaXRpYWxpemVycyBBU1QgdHJhbnNmb3JtYXRpb24uCisv
LyBUZXN0IGEgc2hhZGVyIHdoZXJlIGEgZ2xvYmFsIGNvbnN0YW50IGFycmF5IGlzIGluaXRpYWxp
emVkIHdpdGggYW4gZXhwcmVzc2lvbiBjb250YWluaW5nIGFycmF5CisvLyBpbmRleGluZy4gVGhp
cyBpbml0aWFsaXplciBpcyB0cmlja3kgdG8gY29uc3RhbnQgZm9sZCwgc28gaWYgaXQncyBub3Qg
Y29uc3RhbnQgZm9sZGVkIGl0IG5lZWRzIHRvCisvLyBiZSBoYW5kbGVkIGluIGEgd2F5IHRoYXQg
ZG9lc24ndCBnZW5lcmF0ZSBzdGF0ZW1lbnRzIGluIHRoZSBnbG9iYWwgc2NvcGUgaW4gSExTTCBv
dXRwdXQuCisvLyBBbHNvIGluY2x1ZGVzIG11bHRpcGxlIGFycmF5IGluaXRpYWxpemVycyBpbiBv
bmUgZGVjbGFyYXRpb24sIHdoZXJlIG9ubHkgdGhlIHNlY29uZCBvbmUgaGFzCisvLyBhcnJheSBp
bmRleGluZy4gVGhpcyBtYWtlcyBzdXJlIHRoYXQgdGhlIHF1YWxpZmllciBmb3IgdGhlIGRlY2xh
cmF0aW9uIGlzIHNldCBjb3JyZWN0bHkgaWYKKy8vIHRyYW5zZm9ybWF0aW9ucyBhcmUgYXBwbGll
ZCB0byB0aGUgZGVjbGFyYXRpb24gYWxzbyBpbiB0aGUgY2FzZSBvZiBFU1NMIG91dHB1dC4KK1RF
U1RfUChHTFNMVGVzdF9FUzMsIEluaXRHbG9iYWxBcnJheVdpdGhBcnJheUluZGV4aW5nKQorewor
ICAgIC8vIFRPRE8oeW5vdmlrb3YpOiByZS1lbmFibGUgb25jZSByb290IGNhdXNlIG9mIGh0dHA6
Ly9hbmdsZWJ1Zy5jb20vMTQyOCBpcyBmaXhlZAorICAgIGlmIChJc0FuZHJvaWQoKSAmJiBJc0Fk
cmVubygpICYmIElzT3BlbkdMRVMoKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVz
dCBza2lwcGVkIG9uIEFkcmVubyBPcGVuR0xFUyBvbiBBbmRyb2lkLiIgPDwgc3RkOjplbmRsOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hh
ZGVyU291cmNlID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lz
aW9uIGhpZ2hwIGZsb2F0O1xuIgorICAgICAgICAiaW4gdmVjNCBhX3ZlYztcbiIKKyAgICAgICAg
InZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgZ2xfUG9zaXRpb24g
PSB2ZWM0KGFfdmVjKTtcbiIKKyAgICAgICAgIn0iOworCisgICAgY29uc3Qgc3RkOjpzdHJpbmcg
ZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAg
ICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9GcmFn
Q29sb3I7XG4iCisgICAgICAgICJjb25zdCBoaWdocCBmbG9hdCBmWzJdID0gZmxvYXRbMl0oMC4x
LCAwLjIpO1xuIgorICAgICAgICAiY29uc3QgaGlnaHAgZmxvYXRbMl0gZyA9IGZsb2F0WzJdKDAu
MywgMC40KSwgaCA9IGZsb2F0WzJdKDAuNSwgZlsxXSk7XG4iCisgICAgICAgICJ2b2lkIG1haW4o
KVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoaFsx
XSk7XG4iCisgICAgICAgICJ9IjsKKworICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dy
YW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgRVhQRUNU
X05FKDB1LCBwcm9ncmFtKTsKK30KKworLy8gVGVzdCB0aGF0IGluZGV4LWNvbnN0YW50IHNhbXBs
ZXIgYXJyYXkgaW5kZXhpbmcgaXMgc3VwcG9ydGVkLgorVEVTVF9QKEdMU0xUZXN0LCBJbmRleENv
bnN0YW50U2FtcGxlckFycmF5SW5kZXhpbmcpCit7CisgICAgaWYgKElzRDNEMTFfRkw5MygpKSB7
CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEQzRDExIEZMIDkuMy4iIDw8
IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nIHZlcnRleFNoYWRlclNvdXJjZSA9CisgICAgICAgICJhdHRyaWJ1dGUgdmVjNCB2UG9zaXRp
b247XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAi
ICAgICAgZ2xfUG9zaXRpb24gPSB2UG9zaXRpb247XG4iCisgICAgICAgICJ9IjsKKworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0KKyAgICAgICAgInByZWNpc2lv
biBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQgdW5pWzJdO1xu
IgorICAgICAgICAiXG4iCisgICAgICAgICJmbG9hdCB6ZXJvKGludCB4KVxuIgorICAgICAgICAi
e1xuIgorICAgICAgICAiICAgIHJldHVybiBmbG9hdCh4KSAtIGZsb2F0KHgpO1xuIgorICAgICAg
ICAifVxuIgorICAgICAgICAiXG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAi
e1xuIgorICAgICAgICAiICAgIHZlYzQgYyA9IHZlYzQoMCwwLDAsMCk7XG4iCisgICAgICAgICIg
ICAgZm9yIChpbnQgaWkgPSAxOyBpaSA8IDM7ICsraWkpIHtcbiIKKyAgICAgICAgIiAgICAgICAg
aWYgKGMueCA+IDI1NS4wKSB7XG4iCisgICAgICAgICIgICAgICAgICAgICBjLnggPSAyNTUuMCAr
IHplcm8oaWkpO1xuIgorICAgICAgICAiICAgICAgICAgICAgYnJlYWs7XG4iCisgICAgICAgICIg
ICAgICAgIH1cbiIKKyAgICAgICAgLy8gSW5kZXggdGhlIHNhbXBsZXIgYXJyYXkgd2l0aCBhIHBy
ZWRpY3RhYmxlIGxvb3AgaW5kZXggKGluZGV4LWNvbnN0YW50KSBhcyBvcHBvc2VkIHRvCisgICAg
ICAgIC8vIGEgdHJ1ZSBjb25zdGFudC4gVGhpcyBpcyB2YWxpZCBpbiBPcGVuR0wgRVMgYnV0IGlz
bid0IGluIG1hbnkgRGVza3RvcCBPcGVuR0wgdmVyc2lvbnMsCisgICAgICAgIC8vIHdpdGhvdXQg
YW4gZXh0ZW5zaW9uLgorICAgICAgICAiICAgICAgICBjICs9IHRleHR1cmUyRCh1bmlbaWkgLSAx
XSwgdmVjMigwLjUsIDAuNSkpO1xuIgorICAgICAgICAiICAgIH1cbiIKKyAgICAgICAgIiAgICBn
bF9GcmFnQ29sb3IgPSBjO1xuIgorICAgICAgICAifSI7CisKKyAgICBHTHVpbnQgcHJvZ3JhbSA9
IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2Up
OworICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7Cit9CisKKy8vIFRlc3QgdGhhdCB0aGUgI3By
YWdtYSBkaXJlY3RpdmUgaXMgc3VwcG9ydGVkIGFuZCBkb2Vzbid0IHRyaWdnZXIgYSBjb21waWxh
dGlvbiBmYWlsdXJlIG9uIHRoZQorLy8gbmF0aXZlIGRyaXZlci4gVGhlIG9ubHkgcHJhZ21hIHRo
YXQgZ2V0cyBwYXNzZWQgdG8gdGhlIE9wZW5HTCBkcml2ZXIgaXMgImludmFyaWFudCIgYnV0IHdl
IGRvbid0CisvLyB3YW50IHRvIHRlc3QgaXRzIGJlaGF2aW9yLCBzbyBkb24ndCB1c2UgYW55IHZh
cnlpbmdzLgorVEVTVF9QKEdMU0xUZXN0LCBQcmFnbWFEaXJlY3RpdmUpCit7CisgICAgY29uc3Qg
c3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0KKyAgICAgICAgIiNwcmFnbWEgU1RER0wg
aW52YXJpYW50KGFsbClcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4i
CisgICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7XG4i
CisgICAgICAgICJ9XG4iOworCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJT
b3VyY2UgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ2
b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9
IHZlYzQoMS4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBHTHVpbnQgcHJvZ3JhbSA9IENv
bXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwor
ICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7Cit9CisKKy8vIFNlcXVlbmNlIG9wZXJhdG9yIGV2
YWx1YXRlcyBvcGVyYW5kcyBmcm9tIGxlZnQgdG8gcmlnaHQgKEVTU0wgMy4wMCBzZWN0aW9uIDUu
OSkuCisvLyBUaGUgZnVuY3Rpb24gY2FsbCB0aGF0IHJldHVybnMgdGhlIGFycmF5IG5lZWRzIHRv
IGJlIGV2YWx1YXRlZCBhZnRlciArK2ogZm9yIHRoZSBleHByZXNzaW9uIHRvCisvLyByZXR1cm4g
dGhlIGNvcnJlY3QgdmFsdWUgKHRydWUpLgorVEVTVF9QKEdMU0xUZXN0X0VTMywgU2VxdWVuY2VP
cGVyYXRvckV2YWx1YXRpb25PcmRlckFycmF5KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZm
cmFnbWVudFNoYWRlclNvdXJjZSA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAg
ICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJh
Z0NvbG9yOyBcbiIKKyAgICAgICAgImludFsyXSBmdW5jKGludCBwYXJhbSkge1xuIgorICAgICAg
ICAiICAgIHJldHVybiBpbnRbMl0ocGFyYW0sIHBhcmFtKTtcbiIKKyAgICAgICAgIn1cbiIKKyAg
ICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgICBpbnQgYVsyXTsgXG4iCisgICAg
ICAgICIgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyOyArK2kpIHtcbiIKKyAgICAgICAgIiAgICAg
ICAgYVtpXSA9IDE7XG4iCisgICAgICAgICIgICAgfVxuIgorICAgICAgICAiICAgIGludCBqID0g
MDsgXG4iCisgICAgICAgICIgICAgYm9vbCByZXN1bHQgPSAoKCsraiksIChhID09IGZ1bmMoaikp
KTtcbiIKKyAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgKHJlc3VsdCA/IDEu
MCA6IDAuMCksIDAuMCwgMS4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBHTHVpbnQgcHJv
Z3JhbSA9IENvbXBpbGVQcm9ncmFtKG1TaW1wbGVWU1NvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3Vy
Y2UpOworICAgIEFTU0VSVF9ORSgwdSwgcHJvZ3JhbSk7CisKKyAgICBkcmF3UXVhZChwcm9ncmFt
LCAiaW5wdXRBdHRyaWJ1dGUiLCAwLjVmKTsKKworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgw
LCAwLCBHTENvbG9yOjpncmVlbik7Cit9CisKKy8vIFNlcXVlbmNlIG9wZXJhdG9yIGV2YWx1YXRl
cyBvcGVyYW5kcyBmcm9tIGxlZnQgdG8gcmlnaHQgKEVTU0wgMy4wMCBzZWN0aW9uIDUuOSkuCisv
LyBUaGUgc2hvcnQtY2lyY3VpdGluZyBleHByZXNzaW9uIG5lZWRzIHRvIGJlIGV2YWx1YXRlZCBh
ZnRlciArK2ogZm9yIHRoZSBleHByZXNzaW9uIHRvIHJldHVybiB0aGUKKy8vIGNvcnJlY3QgdmFs
dWUgKHRydWUpLgorVEVTVF9QKEdMU0xUZXN0X0VTMywgU2VxdWVuY2VPcGVyYXRvckV2YWx1YXRp
b25PcmRlclNob3J0Q2lyY3VpdCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ21lbnRT
aGFkZXJTb3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjsg
XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICAgaW50IGogPSAwOyBc
biIKKyAgICAgICAgIiAgICBib29sIHJlc3VsdCA9ICgoKytqKSwgKGogPT0gMSA/IHRydWUgOiAo
KytqID09IDMpKSk7XG4iCisgICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLjAsICgo
cmVzdWx0ICYmIGogPT0gMSkgPyAxLjAgOiAwLjApLCAwLjAsIDEuMCk7XG4iCisgICAgICAgICJ9
XG4iOworCisgICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbShtU2ltcGxlVlNTb3Vy
Y2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKKyAgICBBU1NFUlRfTkUoMHUsIHByb2dyYW0pOwor
CisgICAgZHJhd1F1YWQocHJvZ3JhbSwgImlucHV0QXR0cmlidXRlIiwgMC41Zik7CisKKyAgICBF
WFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4pOworfQorCisvLyBTZXF1
ZW5jZSBvcGVyYXRvciBldmFsdWF0ZXMgb3BlcmFuZHMgZnJvbSBsZWZ0IHRvIHJpZ2h0IChFU1NM
IDMuMDAgc2VjdGlvbiA1LjkpLgorLy8gSW5kZXhpbmcgdGhlIHZlY3RvciBuZWVkcyB0byBiZSBl
dmFsdWF0ZWQgYWZ0ZXIgZnVuYygpIGZvciB0aGUgcmlnaHQgcmVzdWx0LgorVEVTVF9QKEdMU0xU
ZXN0X0VTMywgU2VxdWVuY2VPcGVyYXRvckV2YWx1YXRpb25PcmRlckR5bmFtaWNWZWN0b3JJbmRl
eGluZ0luTFZhbHVlKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnbWVudFNoYWRlclNv
dXJjZSA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAg
ICAgICAidW5pZm9ybSBpbnQgdV96ZXJvO1xuIgorICAgICAgICAiaW50IHNpZGVFZmZlY3RDb3Vu
dCA9IDA7XG4iCisgICAgICAgICJmbG9hdCBmdW5jKCkge1xuIgorICAgICAgICAiICAgICsrc2lk
ZUVmZmVjdENvdW50O1xuIgorICAgICAgICAiICAgIHJldHVybiAtMS4wO1xuIgorICAgICAgICAi
fVxuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgIHZlYzQgdiA9IHZl
YzQoMC4wLCAyLjAsIDQuMCwgNi4wKTsgXG4iCisgICAgICAgICIgICAgZmxvYXQgZiA9IChmdW5j
KCksICgrK3ZbdV96ZXJvICsgc2lkZUVmZmVjdENvdW50XSkpO1xuIgorICAgICAgICAiICAgIGJv
b2wgZ3JlZW4gPSBhYnMoZiAtIDMuMCkgPCAwLjAxICYmIGFicyh2WzFdIC0gMy4wKSA8IDAuMDEg
JiYgc2lkZUVmZmVjdENvdW50ID09IDE7XG4iCisgICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0g
dmVjNCgwLjAsIChncmVlbiA/IDEuMCA6IDAuMCksIDAuMCwgMS4wKTtcbiIKKyAgICAgICAgIn1c
biI7CisKKyAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKG1TaW1wbGVWU1NvdXJj
ZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOworICAgIEFTU0VSVF9ORSgwdSwgcHJvZ3JhbSk7CisK
KyAgICBkcmF3UXVhZChwcm9ncmFtLCAiaW5wdXRBdHRyaWJ1dGUiLCAwLjVmKTsKKworICAgIEVY
UEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpncmVlbik7Cit9CisKKy8vIFRlc3Qg
dGhhdCB1c2luZyBnbF9Qb2ludENvb3JkIHdpdGggR0xfVFJJQU5HTEVTIGRvZXNuJ3QgcHJvZHVj
ZSBhIGxpbmsgZXJyb3IuCisvLyBGcm9tIFdlYkdMIHRlc3QgY29uZm9ybWFuY2UvcmVuZGVyaW5n
L3BvaW50LXNwZWNpZmljLXNoYWRlci12YXJpYWJsZXMuaHRtbAorLy8gU2VlIGh0dHA6Ly9hbmds
ZWJ1Zy5jb20vMTM4MAorVEVTVF9QKEdMU0xUZXN0LCBSZW5kZXJUcmlzV2l0aFBvaW50Q29vcmQp
Cit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZlcnQgPQorICAgICAgICAiYXR0cmlidXRlIHZl
YzIgYVBvc2l0aW9uO1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIK
KyAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoYVBvc2l0aW9uLCAwLCAxKTtcbiIKKyAg
ICAgICAgIiAgICBnbF9Qb2ludFNpemUgPSAxLjA7XG4iCisgICAgICAgICJ9IjsKKyAgICBjb25z
dCBzdGQ6OnN0cmluZyAmZnJhZyA9CisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAi
e1xuIgorICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoZ2xfUG9pbnRDb29yZC54eSwg
MCwgMSk7XG4iCisgICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLCAxLCAwLCAxKTtc
biIKKyAgICAgICAgIn0iOworCisgICAgQU5HTEVfR0xfUFJPR1JBTShwcm9nLCB2ZXJ0LCBmcmFn
KTsKKyAgICBkcmF3UXVhZChwcm9nLmdldCgpLCAiYVBvc2l0aW9uIiwgMC41Zik7CisgICAgRVhQ
RUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsKK30KKworLy8gQ29udmVy
cyBhIGJ1ZyB3aXRoIHRoZSBpbnRlZ2VyIHBvdyBzdGF0ZW1lbnQgd29ya2Fyb3VuZC4KK1RFU1Rf
UChHTFNMVGVzdCwgTmVzdGVkUG93U3RhdGVtZW50cykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyAmdmVydCA9CisgICAgICAgICJhdHRyaWJ1dGUgdmVjMiBwb3NpdGlvbjtcbiIKKyAgICAgICAg
InZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgZ2xfUG9zaXRpb24g
PSB2ZWM0KHBvc2l0aW9uLCAwLCAxKTtcbiIKKyAgICAgICAgIn0iOworICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZmcmFnID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAg
ICAgICAiZmxvYXQgZnVuYyhmbG9hdCB2KVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAg
ZmxvYXQgZjEgPSBwb3codiwgMi4wKTtcbiIKKyAgICAgICAgIiAgIHJldHVybiBwb3coZjEgKyB2
LCAyLjApO1xuIgorICAgICAgICAifVxuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAg
ICAgIntcbiIKKyAgICAgICAgIiAgICBmbG9hdCB2ID0gZnVuYygyLjApO1xuIgorICAgICAgICAi
ICAgIGdsX0ZyYWdDb2xvciA9IGFicyh2IC0gMzYuMCkgPCAwLjAwMSA/IHZlYzQoMCwgMSwgMCwg
MSkgOiB2ZWM0KDEsIDAsIDAsIDEpO1xuIgorICAgICAgICAifSI7CisKKyAgICBBTkdMRV9HTF9Q
Uk9HUkFNKHByb2csIHZlcnQsIGZyYWcpOworICAgIGRyYXdRdWFkKHByb2cuZ2V0KCksICJwb3Np
dGlvbiIsIDAuNWYpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpn
cmVlbik7Cit9CisKKy8vIENvbnZlcnMgYSBidWcgd2l0aCB0aGUgdW5hcnkgbWludXMgb3BlcmF0
b3Igb24gc2lnbmVkIGludGVnZXIgd29ya2Fyb3VuZC4KK1RFU1RfUChHTFNMVGVzdF9FUzMsIFVu
YXJ5TWludXNPcGVyYXRvclNpZ25lZEludCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmVy
dCA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgImluIGhpZ2hwIHZlYzQg
cG9zaXRpb247XG4iCisgICAgICAgICJvdXQgbWVkaXVtcCB2ZWM0IHZfY29sb3I7XG4iCisgICAg
ICAgICJ1bmlmb3JtIGludCB1aV9vbmU7XG4iCisgICAgICAgICJ1bmlmb3JtIGludCB1aV90d287
XG4iCisgICAgICAgICJ1bmlmb3JtIGludCB1aV90aHJlZTtcbiIKKyAgICAgICAgInZvaWQgbWFp
bigpIHtcbiIKKyAgICAgICAgIiAgICBpbnQgc1szXTtcbiIKKyAgICAgICAgIiAgICBzWzBdID0g
dWlfb25lO1xuIgorICAgICAgICAiICAgIHNbMV0gPSAtKC0oLXVpX3R3byArIDEpICsgMSk7XG4i
ICAvLyBzWzFdID0gLXVpX3R3bworICAgICAgICAiICAgIHNbMl0gPSB1aV90aHJlZTtcbiIKKyAg
ICAgICAgIiAgICBpbnQgcmVzdWx0ID0gMDtcbiIKKyAgICAgICAgIiAgICBmb3IgKGludCBpID0g
MDsgaSA8IHVpX3RocmVlOyBpKyspIHtcbiIKKyAgICAgICAgIiAgICAgICAgcmVzdWx0ICs9IHNb
aV07XG4iCisgICAgICAgICIgICAgfVxuIgorICAgICAgICAiICAgIHZfY29sb3IgPSAocmVzdWx0
ID09IDIpID8gdmVjNCgwLCAxLCAwLCAxKSA6IHZlYzQoMSwgMCwgMCwgMSk7XG4iCisgICAgICAg
ICIgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29u
c3Qgc3RkOjpzdHJpbmcgJmZyYWcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAg
ICAgICJpbiBtZWRpdW1wIHZlYzQgdl9jb2xvcjtcbiIKKyAgICAgICAgImxheW91dChsb2NhdGlv
bj0wKSBvdXQgbWVkaXVtcCB2ZWM0IG9fY29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7
XG4iCisgICAgICAgICIgICAgb19jb2xvciA9IHZfY29sb3I7XG4iCisgICAgICAgICJ9XG4iOwor
CisgICAgQU5HTEVfR0xfUFJPR1JBTShwcm9nLCB2ZXJ0LCBmcmFnKTsKKworICAgIGdsOjpDb250
ZXh0ICpjb250ZXh0ICAgPSByZWludGVycHJldF9jYXN0PGdsOjpDb250ZXh0ICo+KGdldEVHTFdp
bmRvdygpLT5nZXRDb250ZXh0KCkpOworICAgIGdsOjpQcm9ncmFtICpnbFByb2dyYW0gPSBjb250
ZXh0LT5nZXRQcm9ncmFtKHByb2cuZ2V0KCkpOworICAgIEdMaW50IG9uZUluZGV4ICAgICAgICAg
PSBnbFByb2dyYW0tPmdldFVuaWZvcm1Mb2NhdGlvbigidWlfb25lIik7CisgICAgQVNTRVJUX05F
KC0xLCBvbmVJbmRleCk7CisgICAgR0xpbnQgdHdvSW5kZXggPSBnbFByb2dyYW0tPmdldFVuaWZv
cm1Mb2NhdGlvbigidWlfdHdvIik7CisgICAgQVNTRVJUX05FKC0xLCB0d29JbmRleCk7CisgICAg
R0xpbnQgdGhyZWVJbmRleCA9IGdsUHJvZ3JhbS0+Z2V0VW5pZm9ybUxvY2F0aW9uKCJ1aV90aHJl
ZSIpOworICAgIEFTU0VSVF9ORSgtMSwgdGhyZWVJbmRleCk7CisgICAgZ2xVc2VQcm9ncmFtKHBy
b2cuZ2V0KCkpOworICAgIGdsVW5pZm9ybTFpKG9uZUluZGV4LCAxKTsKKyAgICBnbFVuaWZvcm0x
aSh0d29JbmRleCwgMik7CisgICAgZ2xVbmlmb3JtMWkodGhyZWVJbmRleCwgMyk7CisKKyAgICBk
cmF3UXVhZChwcm9nLmdldCgpLCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICBFWFBFQ1RfUElYRUxf
Q09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4pOworfQorCisvLyBDb252ZXJzIGEgYnVnIHdp
dGggdGhlIHVuYXJ5IG1pbnVzIG9wZXJhdG9yIG9uIHVuc2lnbmVkIGludGVnZXIgd29ya2Fyb3Vu
ZC4KK1RFU1RfUChHTFNMVGVzdF9FUzMsIFVuYXJ5TWludXNPcGVyYXRvclVuc2lnbmVkSW50KQor
eworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2ZXJ0ID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBl
c1xuIgorICAgICAgICAiaW4gaGlnaHAgdmVjNCBwb3NpdGlvbjtcbiIKKyAgICAgICAgIm91dCBt
ZWRpdW1wIHZlYzQgdl9jb2xvcjtcbiIKKyAgICAgICAgInVuaWZvcm0gdWludCB1aV9vbmU7XG4i
CisgICAgICAgICJ1bmlmb3JtIHVpbnQgdWlfdHdvO1xuIgorICAgICAgICAidW5pZm9ybSB1aW50
IHVpX3RocmVlO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgIHVp
bnQgc1szXTtcbiIKKyAgICAgICAgIiAgICBzWzBdID0gdWlfb25lO1xuIgorICAgICAgICAiICAg
IHNbMV0gPSAtKC0oLXVpX3R3byArIDF1KSArIDF1KTtcbiIgIC8vIHNbMV0gPSAtdWlfdHdvCisg
ICAgICAgICIgICAgc1syXSA9IHVpX3RocmVlO1xuIgorICAgICAgICAiICAgIHVpbnQgcmVzdWx0
ID0gMHU7XG4iCisgICAgICAgICIgICAgZm9yICh1aW50IGkgPSAwdTsgaSA8IHVpX3RocmVlOyBp
KyspIHtcbiIKKyAgICAgICAgIiAgICAgICAgcmVzdWx0ICs9IHNbaV07XG4iCisgICAgICAgICIg
ICAgfVxuIgorICAgICAgICAiICAgIHZfY29sb3IgPSAocmVzdWx0ID09IDJ1KSA/IHZlYzQoMCwg
MSwgMCwgMSkgOiB2ZWM0KDEsIDAsIDAsIDEpO1xuIgorICAgICAgICAiICAgIGdsX1Bvc2l0aW9u
ID0gcG9zaXRpb247XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZm
cmFnID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAiaW4gbWVkaXVtcCB2
ZWM0IHZfY29sb3I7XG4iCisgICAgICAgICJsYXlvdXQobG9jYXRpb249MCkgb3V0IG1lZGl1bXAg
dmVjNCBvX2NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAg
IG9fY29sb3IgPSB2X2NvbG9yO1xuIgorICAgICAgICAifVxuIjsKKworICAgIEFOR0xFX0dMX1BS
T0dSQU0ocHJvZywgdmVydCwgZnJhZyk7CisKKyAgICBnbDo6Q29udGV4dCAqY29udGV4dCAgID0g
cmVpbnRlcnByZXRfY2FzdDxnbDo6Q29udGV4dCAqPihnZXRFR0xXaW5kb3coKS0+Z2V0Q29udGV4
dCgpKTsKKyAgICBnbDo6UHJvZ3JhbSAqZ2xQcm9ncmFtID0gY29udGV4dC0+Z2V0UHJvZ3JhbShw
cm9nLmdldCgpKTsKKyAgICBHTGludCBvbmVJbmRleCAgICAgICAgID0gZ2xQcm9ncmFtLT5nZXRV
bmlmb3JtTG9jYXRpb24oInVpX29uZSIpOworICAgIEFTU0VSVF9ORSgtMSwgb25lSW5kZXgpOwor
ICAgIEdMaW50IHR3b0luZGV4ID0gZ2xQcm9ncmFtLT5nZXRVbmlmb3JtTG9jYXRpb24oInVpX3R3
byIpOworICAgIEFTU0VSVF9ORSgtMSwgdHdvSW5kZXgpOworICAgIEdMaW50IHRocmVlSW5kZXgg
PSBnbFByb2dyYW0tPmdldFVuaWZvcm1Mb2NhdGlvbigidWlfdGhyZWUiKTsKKyAgICBBU1NFUlRf
TkUoLTEsIHRocmVlSW5kZXgpOworICAgIGdsVXNlUHJvZ3JhbShwcm9nLmdldCgpKTsKKyAgICBn
bFVuaWZvcm0xdWkob25lSW5kZXgsIDF1KTsKKyAgICBnbFVuaWZvcm0xdWkodHdvSW5kZXgsIDJ1
KTsKKyAgICBnbFVuaWZvcm0xdWkodGhyZWVJbmRleCwgM3UpOworCisgICAgZHJhd1F1YWQocHJv
Zy5nZXQoKSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAs
IDAsIEdMQ29sb3I6OmdyZWVuKTsKK30KKworLy8gVGVzdCBhIG5lc3RlZCBzZXF1ZW5jZSBvcGVy
YXRvciB3aXRoIGEgdGVybmFyeSBvcGVyYXRvciBpbnNpZGUuIFRoZSB0ZXJuYXJ5IG9wZXJhdG9y
IGlzCisvLyBpbnRlbmRlZCB0byBiZSBzdWNoIHRoYXQgaXQgZ2V0cyBjb252ZXJ0ZWQgdG8gYW4g
aWYgc3RhdGVtZW50IG9uIHRoZSBITFNMIGJhY2tlbmQuCitURVNUX1AoR0xTTFRlc3QsIE5lc3Rl
ZFNlcXVlbmNlT3BlcmF0b3JXaXRoVGVybmFyeUluc2lkZSkKK3sKKyAgICBjb25zdCBzdGQ6OnN0
cmluZyAmdmVydCA9CisgICAgICAgICJhdHRyaWJ1dGUgdmVjMiBwb3NpdGlvbjtcbiIKKyAgICAg
ICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgZ2xfUG9zaXRp
b24gPSB2ZWM0KHBvc2l0aW9uLCAwLCAxKTtcbiIKKyAgICAgICAgIn0iOworCisgICAgLy8gTm90
ZSB0aGF0IHRoZSB1bmlmb3JtIGtlZXBfZmxvcF9wb3NpdGl2ZSBkb2Vzbid0IG5lZWQgdG8gYmUg
c2V0IC0gdGhlIHRlc3QgZXhwZWN0cyBpdCB0byBoYXZlCisgICAgLy8gaXRzIGRlZmF1bHQgdmFs
dWUgZmFsc2UuCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWcgPQorICAgICAgICAicHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ1bmlmb3JtIGJvb2wga2VlcF9mbG9wX3Bv
c2l0aXZlO1xuIgorICAgICAgICAiZmxvYXQgZmxvcDtcbiIKKyAgICAgICAgInZvaWQgbWFpbigp
IHtcbiIKKyAgICAgICAgIiAgICBmbG9wID0gLTEuMCxcbiIKKyAgICAgICAgIiAgICAoZmxvcCAq
PSAtMS4wLFxuIgorICAgICAgICAiICAgIGtlZXBfZmxvcF9wb3NpdGl2ZSA/IDAuMCA6IGZsb3Ag
Kj0gLTEuMCksXG4iCisgICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLCAtZmxvcCwg
MCwgMSk7XG4iCisgICAgICAgICJ9IjsKKworICAgIEFOR0xFX0dMX1BST0dSQU0ocHJvZywgdmVy
dCwgZnJhZyk7CisgICAgZHJhd1F1YWQocHJvZy5nZXQoKSwgInBvc2l0aW9uIiwgMC41Zik7Cisg
ICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsKK30KKworLy8g
VGVzdCB0aGF0IHVzaW5nIGEgc2FtcGxlcjJEIGFuZCBzYW1wbGVyRXh0ZXJuYWxPRVMgaW4gdGhl
IHNhbWUgc2hhZGVyIHdvcmtzIChhbmdsZWJ1Zy5jb20vMTUzNCkKK1RFU1RfUChHTFNMVGVzdCwg
RXh0ZXJuYWxBbmQyRFNhbXBsZXIpCit7CisgICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9P
RVNfRUdMX2ltYWdlX2V4dGVybmFsIikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRl
c3Qgc2tpcHBlZCBiZWNhdXNlIEdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwgaXMgbm90IGF2YWls
YWJsZS4iCisgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlciA9CisgICAgICAg
ICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gc2FtcGxlckV4
dGVybmFsT0VTIHRleDA7XG4iCisgICAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCB0ZXgxO1xuIgor
ICAgICAgICAidm9pZCBtYWluKHZvaWQpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgdmVj
MiB1diA9IHZlYzIoMC4wLCAwLjApOyIKKyAgICAgICAgIiBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJl
MkQodGV4MCwgdXYpICsgdGV4dHVyZTJEKHRleDEsIHV2KTtcbiIKKyAgICAgICAgIn1cbiI7CisK
KyAgICBBTkdMRV9HTF9QUk9HUkFNKHByb2dyYW0sIG1TaW1wbGVWU1NvdXJjZSwgZnJhZ21lbnRT
aGFkZXIpOworfQorCisvLyBUZXN0IHRoYXQgdXNpbmcgYW4gaW52YWxpZCBjb25zdGFudCByaWdo
dC1zaGlmdCBwcm9kdWNlcyBhbiBlcnJvci4KK1RFU1RfUChHTFNMVGVzdF9FUzMsIEZvbGRlZElu
dmFsaWRSaWdodFNoaWZ0KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnbWVudFNoYWRl
ciA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0IHZlYzQgY29sb3I7XG4iCisgICAgICAgICJ2b2lk
IG1haW4odm9pZClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiBpbnQgZGlmZiA9IC0xMDAg
Pj4gLTEwMDtcbiIKKyAgICAgICAgIiBjb2xvciA9IHZlYzQoZmxvYXQoZGlmZikpO1xuIgorICAg
ICAgICAifVxuIjsKKworICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0obVNpbXBs
ZVZTU291cmNlLCBmcmFnbWVudFNoYWRlcik7CisgICAgRVhQRUNUX0VRKDB1LCBwcm9ncmFtKTsK
KyAgICBnbERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Cit9CisKKy8vIFRlc3QgdGhhdCB1c2luZyBh
biBpbnZhbGlkIGNvbnN0YW50IGxlZnQtc2hpZnQgcHJvZHVjZXMgYW4gZXJyb3IuCitURVNUX1Ao
R0xTTFRlc3RfRVMzLCBGb2xkZWRJbnZhbGlkTGVmdFNoaWZ0KQoreworICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZmcmFnbWVudFNoYWRlciA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAg
ICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0IHZlYzQgY29s
b3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4odm9pZClcbiIKKyAgICAgICAgIntcbiIKKyAgICAg
ICAgIiBpbnQgZGlmZiA9IC0xMDAgPDwgLTEwMDtcbiIKKyAgICAgICAgIiBjb2xvciA9IHZlYzQo
ZmxvYXQoZGlmZikpO1xuIgorICAgICAgICAifVxuIjsKKworICAgIEdMdWludCBwcm9ncmFtID0g
Q29tcGlsZVByb2dyYW0obVNpbXBsZVZTU291cmNlLCBmcmFnbWVudFNoYWRlcik7CisgICAgRVhQ
RUNUX0VRKDB1LCBwcm9ncmFtKTsKKyAgICBnbERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Cit9CisK
K30gIC8vIGFub255bW91cyBuYW1lc3BhY2UKKworLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNo
IGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZl
cnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KK0FOR0xFX0lOU1RBTlRJ
QVRFX1RFU1QoR0xTTFRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCisg
ICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAg
ICBFUzJfRDNEMTFfRkw5XzMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgp
LAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKCksCisgICAgICAgICAgICAgICAg
ICAgICAgIEVTMl9PUEVOR0xFUygpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdM
RVMoKSk7CisKKy8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5n
LiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBz
aG91bGQgYmUgcnVuIGFnYWluc3QuCitBTkdMRV9JTlNUQU5USUFURV9URVNUKEdMU0xUZXN0X0VT
MywgRVMzX0QzRDExKCksIEVTM19PUEVOR0woKSwgRVMzX09QRU5HTEVTKCkpOwpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0ltYWdlVGVzdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0lt
YWdlVGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL2dsX3Rlc3RzL0ltYWdlVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
OTczIEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisvLworLy8gSW1hZ2VUZXN0OgorLy8gICBUZXN0cyB0aGUgY29ycmVjdG5l
c3Mgb2YgZWdsSW1hZ2UuCisvLworCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIK
KworbmFtZXNwYWNlIGFuZ2xlCit7CitjbGFzcyBJbWFnZVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0
Cit7CisgIHByb3RlY3RlZDoKKyAgICBJbWFnZVRlc3QoKQorICAgIHsKKyAgICAgICAgc2V0V2lu
ZG93V2lkdGgoMTI4KTsKKyAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7CisgICAgICAgIHNl
dENvbmZpZ1JlZEJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICAg
ICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsK
KyAgICAgICAgc2V0Q29uZmlnRGVwdGhCaXRzKDI0KTsKKyAgICB9CisKKyAgICB2b2lkIFNldFVw
KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKKworICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyB2c1NvdXJjZSA9CisgICAgICAgICAgICAicHJlY2lzaW9uIGhp
Z2hwIGZsb2F0O1xuIgorICAgICAgICAgICAgImF0dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uO1xuIgor
ICAgICAgICAgICAgInZhcnlpbmcgdmVjMiB0ZXhjb29yZDtcbiIKKyAgICAgICAgICAgICJcbiIK
KyAgICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAgICAgIntcbiIKKyAgICAgICAg
ICAgICIgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjtcbiIKKyAgICAgICAgICAgICIgICAgdGV4
Y29vcmQgPSAocG9zaXRpb24ueHkgKiAwLjUpICsgMC41O1xuIgorICAgICAgICAgICAgIiAgICB0
ZXhjb29yZC55ID0gMS4wIC0gdGV4Y29vcmQueTtcbiIKKyAgICAgICAgICAgICJ9XG4iOworICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyB2c0VTU0wzU291cmNlID0KKyAgICAgICAgICAgICIjdmVy
c2lvbiAzMDAgZXNcbiIKKyAgICAgICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCisg
ICAgICAgICAgICAiaW4gdmVjNCBwb3NpdGlvbjtcbiIKKyAgICAgICAgICAgICJvdXQgdmVjMiB0
ZXhjb29yZDtcbiIKKyAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICJ2b2lkIG1haW4oKVxu
IgorICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSBwb3Np
dGlvbjtcbiIKKyAgICAgICAgICAgICIgICAgdGV4Y29vcmQgPSAocG9zaXRpb24ueHkgKiAwLjUp
ICsgMC41O1xuIgorICAgICAgICAgICAgIiAgICB0ZXhjb29yZC55ID0gMS4wIC0gdGV4Y29vcmQu
eTtcbiIKKyAgICAgICAgICAgICJ9XG4iOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHRl
eHR1cmVGU1NvdXJjZSA9CisgICAgICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgor
ICAgICAgICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHRleDtcbiIKKyAgICAgICAgICAgICJ2YXJ5
aW5nIHZlYzIgdGV4Y29vcmQ7XG4iCisgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAidm9p
ZCBtYWluKClcbiIKKyAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAiICAgIGdsX0ZyYWdD
b2xvciA9IHRleHR1cmUyRCh0ZXgsIHRleGNvb3JkKTtcbiIKKyAgICAgICAgICAgICJ9XG4iOwor
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB0ZXh0dXJlRXh0ZXJuYWxGU1NvdXJjZSA9CisgICAg
ICAgICAgICAiI2V4dGVuc2lvbiBHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIDogcmVxdWlyZVxu
IgorICAgICAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKKyAgICAgICAgICAgICJ1
bmlmb3JtIHNhbXBsZXJFeHRlcm5hbE9FUyB0ZXg7XG4iCisgICAgICAgICAgICAidmFyeWluZyB2
ZWMyIHRleGNvb3JkO1xuIgorICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgInZvaWQgbWFp
bigpXG4iCisgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgIiAgICBnbF9GcmFnQ29sb3Ig
PSB0ZXh0dXJlMkQodGV4LCB0ZXhjb29yZCk7XG4iCisgICAgICAgICAgICAifVxuIjsKKyAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgdGV4dHVyZUV4dGVybmFsRVNTTDNGU1NvdXJjZSA9CisgICAg
ICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICAgICAiI2V4dGVuc2lvbiBHTF9P
RVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vzc2wzIDogcmVxdWlyZVxuIgorICAgICAgICAgICAgInBy
ZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKKyAgICAgICAgICAgICJ1bmlmb3JtIHNhbXBsZXJFeHRl
cm5hbE9FUyB0ZXg7XG4iCisgICAgICAgICAgICAiaW4gdmVjMiB0ZXhjb29yZDtcbiIKKyAgICAg
ICAgICAgICJvdXQgdmVjNCBjb2xvcjsiCisgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAi
dm9pZCBtYWluKClcbiIKKyAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAiICAgIGNvbG9y
ID0gdGV4dHVyZSh0ZXgsIHRleGNvb3JkKTtcbiIKKyAgICAgICAgICAgICJ9XG4iOworCisgICAg
ICAgIG1UZXh0dXJlUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZzU291cmNlLCB0ZXh0dXJlRlNT
b3VyY2UpOworICAgICAgICBpZiAobVRleHR1cmVQcm9ncmFtID09IDApCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEZBSUwoKSA8PCAic2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZC4iOworICAgICAg
ICB9CisKKyAgICAgICAgbVRleHR1cmVVbmlmb3JtTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2Nh
dGlvbihtVGV4dHVyZVByb2dyYW0sICJ0ZXgiKTsKKworICAgICAgICBpZiAoZXh0ZW5zaW9uRW5h
YmxlZCgiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpKQorICAgICAgICB7CisgICAgICAgICAg
ICBtVGV4dHVyZUV4dGVybmFsUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZzU291cmNlLCB0ZXh0
dXJlRXh0ZXJuYWxGU1NvdXJjZSk7CisgICAgICAgICAgICBBU1NFUlRfTkUoMHUsIG1UZXh0dXJl
RXh0ZXJuYWxQcm9ncmFtKSA8PCAic2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZC4iOworCisgICAg
ICAgICAgICBtVGV4dHVyZUV4dGVybmFsVW5pZm9ybUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9j
YXRpb24obVRleHR1cmVFeHRlcm5hbFByb2dyYW0sICJ0ZXgiKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChleHRlbnNpb25FbmFibGVkKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vzc2wz
IikpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1UZXh0dXJlRXh0ZXJuYWxFU1NMM1Byb2dyYW0g
PQorICAgICAgICAgICAgICAgIENvbXBpbGVQcm9ncmFtKHZzRVNTTDNTb3VyY2UsIHRleHR1cmVF
eHRlcm5hbEVTU0wzRlNTb3VyY2UpOworICAgICAgICAgICAgQVNTRVJUX05FKDB1LCBtVGV4dHVy
ZUV4dGVybmFsRVNTTDNQcm9ncmFtKSA8PCAic2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZC4iOwor
CisgICAgICAgICAgICBtVGV4dHVyZUV4dGVybmFsRVNTTDNVbmlmb3JtTG9jYXRpb24gPQorICAg
ICAgICAgICAgICAgIGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1UZXh0dXJlRXh0ZXJuYWxFU1NMM1By
b2dyYW0sICJ0ZXgiKTsKKyAgICAgICAgfQorCisgICAgICAgIGVnbENyZWF0ZUltYWdlS0hSID0K
KyAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZORUdMQ1JFQVRFSU1BR0VLSFJQUk9DPihl
Z2xHZXRQcm9jQWRkcmVzcygiZWdsQ3JlYXRlSW1hZ2VLSFIiKSk7CisgICAgICAgIGVnbERlc3Ry
b3lJbWFnZUtIUiA9CisgICAgICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkVHTERFU1RST1lJ
TUFHRUtIUlBST0M+KGVnbEdldFByb2NBZGRyZXNzKCJlZ2xEZXN0cm95SW1hZ2VLSFIiKSk7CisK
KyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93
bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBnbERlbGV0ZVByb2dyYW0obVRleHR1cmVQcm9n
cmFtKTsKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1UZXh0dXJlRXh0ZXJuYWxQcm9ncmFtKTsK
KyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1UZXh0dXJlRXh0ZXJuYWxFU1NMM1Byb2dyYW0pOwor
CisgICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKKyAgICB9CisKKyAgICB2b2lkIGNyZWF0
ZUVHTEltYWdlMkRUZXh0dXJlU291cmNlKHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50ICpvdXRTb3VyY2VUZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRUdMSW1hZ2VLSFIgKm91dFNvdXJjZUltYWdlKQorICAgIHsKKyAg
ICAgICAgLy8gQ3JlYXRlIGEgc291cmNlIDJEIHRleHR1cmUKKyAgICAgICAgR0x1aW50IHNvdXJj
ZTsKKyAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmc291cmNlKTsKKyAgICAgICAgZ2xCaW5kVGV4
dHVyZShHTF9URVhUVVJFXzJELCBzb3VyY2UpOworCisgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9U
RVhUVVJFXzJELCAwLCBmb3JtYXQsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHdpZHRoKSwKKyAgICAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMc2l6ZWk+KGhlaWdodCksIDAsIGZvcm1hdCwg
dHlwZSwgZGF0YSk7CisKKyAgICAgICAgLy8gRGlzYWJsZSBtaXBtYXBwaW5nCisgICAgICAgIGds
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05F
QVJFU1QpOworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKKworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1Io
KTsKKworICAgICAgICAvLyBDcmVhdGUgYW4gaW1hZ2UgZnJvbSB0aGUgc291cmNlIHRleHR1cmUK
KyAgICAgICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKKyAgICAgICAgRUdM
SW1hZ2VLSFIgaW1hZ2UgPQorICAgICAgICAgICAgZWdsQ3JlYXRlSW1hZ2VLSFIod2luZG93LT5n
ZXREaXNwbGF5KCksIHdpbmRvdy0+Z2V0Q29udGV4dCgpLCBFR0xfR0xfVEVYVFVSRV8yRF9LSFIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldEhlbHBlcjxFR0xDbGll
bnRCdWZmZXI+KHNvdXJjZSksIG51bGxwdHIpOworCisgICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VT
UygpOworCisgICAgICAgICpvdXRTb3VyY2VUZXh0dXJlID0gc291cmNlOworICAgICAgICAqb3V0
U291cmNlSW1hZ2UgICA9IGltYWdlOworICAgIH0KKworICAgIHZvaWQgY3JlYXRlRUdMSW1hZ2VD
dWJlbWFwVGV4dHVyZVNvdXJjZShzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpkYXRhLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGF0YVN0cmlkZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMZW51bSBpbWFnZVRhcmdl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpv
dXRTb3VyY2VUZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBFR0xJbWFnZUtIUiAqb3V0U291cmNlSW1hZ2UpCisgICAgeworICAgICAgICAvLyBDcmVh
dGUgYSBzb3VyY2UgY3ViZSBtYXAgdGV4dHVyZQorICAgICAgICBHTHVpbnQgc291cmNlOworICAg
ICAgICBnbEdlblRleHR1cmVzKDEsICZzb3VyY2UpOworICAgICAgICBnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfQ1VCRV9NQVAsIHNvdXJjZSk7CisKKyAgICAgICAgZm9yIChHTGVudW0gZmFjZUlk
eCA9IDA7IGZhY2VJZHggPCA2OyBmYWNlSWR4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGds
VGV4SW1hZ2UyRChmYWNlSWR4ICsgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAwLCBm
b3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0xzaXplaT4od2lk
dGgpLCBzdGF0aWNfY2FzdDxHTHNpemVpPihoZWlnaHQpLCAwLCBmb3JtYXQsIHR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgZGF0YSArIChmYWNlSWR4ICogZGF0YVN0cmlkZSkpOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gRGlzYWJsZSBtaXBtYXBwaW5nCisgICAgICAgIGdsVGV4UGFy
YW1ldGVyaShHTF9URVhUVVJFX0NVQkVfTUFQLCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05F
QVJFU1QpOworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9DVUJFX01BUCwgR0xf
VEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKKworICAgICAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKKworICAgICAgICAvLyBDcmVhdGUgYW4gaW1hZ2UgZnJvbSB0aGUgc291cmNlIHRl
eHR1cmUKKyAgICAgICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKKyAgICAg
ICAgRUdMSW1hZ2VLSFIgaW1hZ2UgPQorICAgICAgICAgICAgZWdsQ3JlYXRlSW1hZ2VLSFIod2lu
ZG93LT5nZXREaXNwbGF5KCksIHdpbmRvdy0+Z2V0Q29udGV4dCgpLCBpbWFnZVRhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0SGVscGVyPEVHTENsaWVudEJ1
ZmZlcj4oc291cmNlKSwgbnVsbHB0cik7CisKKyAgICAgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7
CisKKyAgICAgICAgKm91dFNvdXJjZVRleHR1cmUgPSBzb3VyY2U7CisgICAgICAgICpvdXRTb3Vy
Y2VJbWFnZSAgID0gaW1hZ2U7CisgICAgfQorCisgICAgdm9pZCBjcmVhdGVFR0xJbWFnZTNEVGV4
dHVyZVNvdXJjZShzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9p
ZCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBp
bWFnZUxheWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
ICpvdXRTb3VyY2VUZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRUdMSW1hZ2VLSFIgKm91dFNvdXJjZUltYWdlKQorICAgIHsKKyAgICAgICAgLy8gQ3JlYXRl
IGEgc291cmNlIDNEIHRleHR1cmUKKyAgICAgICAgR0x1aW50IHNvdXJjZTsKKyAgICAgICAgZ2xH
ZW5UZXh0dXJlcygxLCAmc291cmNlKTsKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
XzNELCBzb3VyY2UpOworCisgICAgICAgIGdsVGV4SW1hZ2UzRChHTF9URVhUVVJFXzNELCAwLCBm
b3JtYXQsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHdpZHRoKSwKKyAgICAgICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PEdMc2l6ZWk+KGhlaWdodCksIHN0YXRpY19jYXN0PEdMc2l6ZWk+KGRlcHRo
KSwgMCwgZm9ybWF0LCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgZGF0YSk7CisKKyAgICAg
ICAgLy8gRGlzYWJsZSBtaXBtYXBwaW5nCisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFXzNELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgICAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8zRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFS
RVNUKTsKKworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgICAgICAvLyBDcmVh
dGUgYW4gaW1hZ2UgZnJvbSB0aGUgc291cmNlIHRleHR1cmUKKyAgICAgICAgRUdMV2luZG93ICp3
aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKKworICAgICAgICBFR0xpbnQgYXR0cmlic1tdID0gewor
ICAgICAgICAgICAgRUdMX0dMX1RFWFRVUkVfWk9GRlNFVF9LSFIsIHN0YXRpY19jYXN0PEVHTGlu
dD4oaW1hZ2VMYXllciksIEVHTF9OT05FLAorICAgICAgICB9OworICAgICAgICBFR0xJbWFnZUtI
UiBpbWFnZSA9CisgICAgICAgICAgICBlZ2xDcmVhdGVJbWFnZUtIUih3aW5kb3ctPmdldERpc3Bs
YXkoKSwgd2luZG93LT5nZXRDb250ZXh0KCksIEVHTF9HTF9URVhUVVJFXzNEX0tIUiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0SGVscGVyPEVHTENsaWVudEJ1ZmZl
cj4oc291cmNlKSwgYXR0cmlicyk7CisKKyAgICAgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CisK
KyAgICAgICAgKm91dFNvdXJjZVRleHR1cmUgPSBzb3VyY2U7CisgICAgICAgICpvdXRTb3VyY2VJ
bWFnZSAgID0gaW1hZ2U7CisgICAgfQorCisgICAgdm9pZCBjcmVhdGVFR0xJbWFnZVJlbmRlcmJ1
ZmZlclNvdXJjZShzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1Ynl0ZSBkYXRhWzRdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpvdXRTb3VyY2VSZW5kZXJidWZmZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xJbWFnZUtIUiAqb3V0
U291cmNlSW1hZ2UpCisgICAgeworICAgICAgICAvLyBDcmVhdGUgYSBzb3VyY2UgcmVuZGVyYnVm
ZmVyCisgICAgICAgIEdMdWludCBzb3VyY2U7CisgICAgICAgIGdsR2VuUmVuZGVyYnVmZmVycygx
LCAmc291cmNlKTsKKyAgICAgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwg
c291cmNlKTsKKyAgICAgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwg
aW50ZXJuYWxGb3JtYXQsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHdpZHRoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMc2l6ZWk+KGhlaWdodCkpOworCisgICAg
ICAgIC8vIENyZWF0ZSBhIGZyYW1lYnVmZmVyIGFuZCBjbGVhciBpdCB0byBzZXQgdGhlIGRhdGEK
KyAgICAgICAgR0x1aW50IGZyYW1lYnVmZmVyOworICAgICAgICBnbEdlbkZyYW1lYnVmZmVycygx
LCAmZnJhbWVidWZmZXIpOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZF
UiwgZnJhbWVidWZmZXIpOworICAgICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZS
QU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfUkVOREVSQlVGRkVSLCBzb3VyY2Up
OworCisgICAgICAgIGdsQ2xlYXJDb2xvcihkYXRhWzBdIC8gMjU1LjBmLCBkYXRhWzFdIC8gMjU1
LjBmLCBkYXRhWzJdIC8gMjU1LjBmLCBkYXRhWzNdIC8gMjU1LjBmKTsKKyAgICAgICAgZ2xDbGVh
cihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygx
LCAmZnJhbWVidWZmZXIpOworCisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAg
ICAgIC8vIENyZWF0ZSBhbiBpbWFnZSBmcm9tIHRoZSBzb3VyY2UgcmVuZGVyYnVmZmVyCisgICAg
ICAgIEVHTFdpbmRvdyAqd2luZG93ID0gZ2V0RUdMV2luZG93KCk7CisgICAgICAgIEVHTEltYWdl
S0hSIGltYWdlID0KKyAgICAgICAgICAgIGVnbENyZWF0ZUltYWdlS0hSKHdpbmRvdy0+Z2V0RGlz
cGxheSgpLCB3aW5kb3ctPmdldENvbnRleHQoKSwgRUdMX0dMX1JFTkRFUkJVRkZFUl9LSFIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldEhlbHBlcjxFR0xDbGllbnRC
dWZmZXI+KHNvdXJjZSksIG51bGxwdHIpOworCisgICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygp
OworCisgICAgICAgICpvdXRTb3VyY2VSZW5kZXJidWZmZXIgPSBzb3VyY2U7CisgICAgICAgICpv
dXRTb3VyY2VJbWFnZSAgICAgICAgPSBpbWFnZTsKKyAgICB9CisKKyAgICB2b2lkIGNyZWF0ZUVH
TEltYWdlVGFyZ2V0VGV4dHVyZTJEKEVHTEltYWdlS0hSIGltYWdlLCBHTHVpbnQgKm91dFRhcmdl
dFRleHR1cmUpCisgICAgeworICAgICAgICAvLyBDcmVhdGUgYSB0YXJnZXQgdGV4dHVyZSBmcm9t
IHRoZSBpbWFnZQorICAgICAgICBHTHVpbnQgdGFyZ2V0OworICAgICAgICBnbEdlblRleHR1cmVz
KDEsICZ0YXJnZXQpOworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRhcmdl
dCk7CisgICAgICAgIGdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMoR0xfVEVYVFVSRV8yRCwg
aW1hZ2UpOworCisgICAgICAgIC8vIERpc2FibGUgbWlwbWFwcGluZworICAgICAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNU
KTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFH
X0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisK
KyAgICAgICAgKm91dFRhcmdldFRleHR1cmUgPSB0YXJnZXQ7CisgICAgfQorCisgICAgdm9pZCBj
cmVhdGVFR0xJbWFnZVRhcmdldFRleHR1cmVFeHRlcm5hbChFR0xJbWFnZUtIUiBpbWFnZSwgR0x1
aW50ICpvdXRUYXJnZXRUZXh0dXJlKQorICAgIHsKKyAgICAgICAgLy8gQ3JlYXRlIGEgdGFyZ2V0
IHRleHR1cmUgZnJvbSB0aGUgaW1hZ2UKKyAgICAgICAgR0x1aW50IHRhcmdldDsKKyAgICAgICAg
Z2xHZW5UZXh0dXJlcygxLCAmdGFyZ2V0KTsKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFX0VYVEVSTkFMX09FUywgdGFyZ2V0KTsKKyAgICAgICAgZ2xFR0xJbWFnZVRhcmdldFRleHR1
cmUyRE9FUyhHTF9URVhUVVJFX0VYVEVSTkFMX09FUywgaW1hZ2UpOworCisgICAgICAgIC8vIERp
c2FibGUgbWlwbWFwcGluZworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9FWFRF
Uk5BTF9PRVMsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgICAgIGds
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0VYVEVSTkFMX09FUywgR0xfVEVYVFVSRV9NQUdfRklM
VEVSLCBHTF9ORUFSRVNUKTsKKworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAg
ICAgICAqb3V0VGFyZ2V0VGV4dHVyZSA9IHRhcmdldDsKKyAgICB9CisKKyAgICB2b2lkIGNyZWF0
ZUVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyKEVHTEltYWdlS0hSIGltYWdlLCBHTHVpbnQgKm91
dFRhcmdldFJlbmRlcmJ1ZmZlcikKKyAgICB7CisgICAgICAgIC8vIENyZWF0ZSBhIHRhcmdldCB0
ZXh0dXJlIGZyb20gdGhlIGltYWdlCisgICAgICAgIEdMdWludCB0YXJnZXQ7CisgICAgICAgIGds
R2VuUmVuZGVyYnVmZmVycygxLCAmdGFyZ2V0KTsKKyAgICAgICAgZ2xCaW5kUmVuZGVyYnVmZmVy
KEdMX1JFTkRFUkJVRkZFUiwgdGFyZ2V0KTsKKyAgICAgICAgZ2xFR0xJbWFnZVRhcmdldFJlbmRl
cmJ1ZmZlclN0b3JhZ2VPRVMoR0xfUkVOREVSQlVGRkVSLCBpbWFnZSk7CisKKyAgICAgICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgKm91dFRhcmdldFJlbmRlcmJ1ZmZlciA9IHRh
cmdldDsKKyAgICB9CisKKyAgICB2b2lkIHZlcmlmeVJlc3VsdHNUZXh0dXJlKEdMdWludCB0ZXh0
dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1Ynl0ZSBkYXRhWzRdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRleHR1cmVUYXJnZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCB0ZXh0dXJlVW5pZm9ybSkKKyAgICB7CisgICAgICAgIC8vIERy
YXcgYSBxdWFkIHdpdGggdGhlIHRhcmdldCB0ZXh0dXJlCisgICAgICAgIGdsVXNlUHJvZ3JhbShw
cm9ncmFtKTsKKyAgICAgICAgZ2xCaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCB0ZXh0dXJlKTsK
KyAgICAgICAgZ2xVbmlmb3JtMWkodGV4dHVyZVVuaWZvcm0sIDApOworCisgICAgICAgIGRyYXdR
dWFkKHByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworCisgICAgICAgIC8vIEV4cGVjdCB0aGF0
IHRoZSByZW5kZXJlZCBxdWFkIGhhcyB0aGUgc2FtZSBjb2xvciBhcyB0aGUgc291cmNlIHRleHR1
cmUKKyAgICAgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFb
Ml0sIGRhdGFbM10pOworICAgIH0KKworICAgIHZvaWQgdmVyaWZ5UmVzdWx0czJEKEdMdWludCB0
ZXh0dXJlLCBHTHVieXRlIGRhdGFbNF0pCisgICAgeworICAgICAgICB2ZXJpZnlSZXN1bHRzVGV4
dHVyZSh0ZXh0dXJlLCBkYXRhLCBHTF9URVhUVVJFXzJELCBtVGV4dHVyZVByb2dyYW0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9uKTsKKyAgICB9
CisKKyAgICB2b2lkIHZlcmlmeVJlc3VsdHNFeHRlcm5hbChHTHVpbnQgdGV4dHVyZSwgR0x1Ynl0
ZSBkYXRhWzRdKQorICAgIHsKKyAgICAgICAgdmVyaWZ5UmVzdWx0c1RleHR1cmUodGV4dHVyZSwg
ZGF0YSwgR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIG1UZXh0dXJlRXh0ZXJuYWxQcm9ncmFtLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVGV4dHVyZUV4dGVybmFsVW5pZm9ybUxvY2F0
aW9uKTsKKyAgICB9CisKKyAgICB2b2lkIHZlcmlmeVJlc3VsdHNFeHRlcm5hbEVTU0wzKEdMdWlu
dCB0ZXh0dXJlLCBHTHVieXRlIGRhdGFbNF0pCisgICAgeworICAgICAgICB2ZXJpZnlSZXN1bHRz
VGV4dHVyZSh0ZXh0dXJlLCBkYXRhLCBHTF9URVhUVVJFX0VYVEVSTkFMX09FUywgbVRleHR1cmVF
eHRlcm5hbEVTU0wzUHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVRleHR1
cmVFeHRlcm5hbEVTU0wzVW5pZm9ybUxvY2F0aW9uKTsKKyAgICB9CisKKyAgICB2b2lkIHZlcmlm
eVJlc3VsdHNSZW5kZXJidWZmZXIoR0x1aW50IHJlbmRlcmJ1ZmZlciwgR0x1Ynl0ZSBkYXRhWzRd
KQorICAgIHsKKyAgICAgICAgLy8gQmluZCB0aGUgcmVuZGVyYnVmZmVyIHRvIGEgZnJhbWVidWZm
ZXIKKyAgICAgICAgR0x1aW50IGZyYW1lYnVmZmVyOworICAgICAgICBnbEdlbkZyYW1lYnVmZmVy
cygxLCAmZnJhbWVidWZmZXIpOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJV
RkZFUiwgZnJhbWVidWZmZXIpOworICAgICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdM
X0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfUkVOREVSQlVGRkVSLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmJ1ZmZlcik7CisKKyAgICAgICAg
Ly8gRXhwZWN0IHRoYXQgdGhlIHJlbmRlcmVkIHF1YWQgaGFzIHRoZSBzYW1lIGNvbG9yIGFzIHRo
ZSBzb3VyY2UgdGV4dHVyZQorICAgICAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgZGF0YVswXSwg
ZGF0YVsxXSwgZGF0YVsyXSwgZGF0YVszXSk7CisKKyAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZl
cnMoMSwgJmZyYW1lYnVmZmVyKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgZGVz
dFR5cGUsIHR5cGVuYW1lIHNvdXJjZXR5cGU+CisgICAgZGVzdFR5cGUgcmVpbnRlcnByZXRIZWxw
ZXIoc291cmNldHlwZSBzb3VyY2UpCisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVv
ZihkZXN0VHlwZSkgPT0gc2l6ZW9mKHNpemVfdCksCisgICAgICAgICAgICAgICAgICAgICAgImRl
c3RUeXBlIHNob3VsZCBiZSB0aGUgc2FtZSBzaXplIGFzIGEgc2l6ZV90Iik7CisgICAgICAgIHNp
emVfdCBzb3VyY2VTaXplVCA9IHN0YXRpY19jYXN0PHNpemVfdD4oc291cmNlKTsKKyAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8ZGVzdFR5cGU+KHNvdXJjZVNpemVUKTsKKyAgICB9CisK
KyAgICBHTHVpbnQgbVRleHR1cmVQcm9ncmFtOworICAgIEdMaW50IG1UZXh0dXJlVW5pZm9ybUxv
Y2F0aW9uOworCisgICAgR0x1aW50IG1UZXh0dXJlRXh0ZXJuYWxQcm9ncmFtICAgICAgICA9IDA7
CisgICAgR0xpbnQgbVRleHR1cmVFeHRlcm5hbFVuaWZvcm1Mb2NhdGlvbiA9IC0xOworCisgICAg
R0x1aW50IG1UZXh0dXJlRXh0ZXJuYWxFU1NMM1Byb2dyYW0gICAgICAgID0gMDsKKyAgICBHTGlu
dCBtVGV4dHVyZUV4dGVybmFsRVNTTDNVbmlmb3JtTG9jYXRpb24gPSAtMTsKKworICAgIFBGTkVH
TENSRUFURUlNQUdFS0hSUFJPQyBlZ2xDcmVhdGVJbWFnZUtIUjsKKyAgICBQRk5FR0xERVNUUk9Z
SU1BR0VLSFJQUk9DIGVnbERlc3Ryb3lJbWFnZUtIUjsKK307CisKK2NsYXNzIEltYWdlVGVzdEVT
MyA6IHB1YmxpYyBJbWFnZVRlc3QKK3sKK307CisKKy8vIENoZWNrIHZhbGlkYXRpb24gZnJvbSB0
aGUgRUdMX0tIUl9pbWFnZV9iYXNlIGV4dGVuc2lvbgorVEVTVF9QKEltYWdlVGVzdCwgVmFsaWRh
dGlvbkltYWdlQmFzZSkKK3sKKyAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygp
OworICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiT0VTX0VHTF9pbWFnZSIpIHx8CisgICAgICAg
ICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9L
SFJfaW1hZ2VfYmFzZSIpIHx8CisgICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3
aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSIpKQorICAg
IHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBPRVNfRUdMX2lt
YWdlLCBFR0xfS0hSX2ltYWdlX2Jhc2Ugb3IgIgorICAgICAgICAgICAgICAgICAgICAgIkVHTF9L
SFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSBpcyBub3QgYXZhaWxhYmxlLiIKKyAgICAgICAgICAgICAg
ICAgIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdMdWludCBn
bFRleHR1cmUyRDsKKyAgICBnbEdlblRleHR1cmVzKDEsICZnbFRleHR1cmUyRCk7CisgICAgZ2xC
aW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBnbFRleHR1cmUyRCk7CisgICAgZ2xUZXhJbWFnZTJE
KEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDEsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVE
X0JZVEUsIG51bGxwdHIpOworCisgICAgRUdMRGlzcGxheSBkaXNwbGF5ICAgICAgICA9IHdpbmRv
dy0+Z2V0RGlzcGxheSgpOworICAgIEVHTENvbnRleHQgY29udGV4dCAgICAgICAgPSB3aW5kb3ct
PmdldENvbnRleHQoKTsKKyAgICBFR0xDb25maWcgY29uZmlnICAgICAgICAgID0gd2luZG93LT5n
ZXRDb25maWcoKTsKKyAgICBFR0xJbWFnZUtIUiBpbWFnZSAgICAgICAgID0gRUdMX05PX0lNQUdF
X0tIUjsKKyAgICBFR0xDbGllbnRCdWZmZXIgdGV4dHVyZTJEID0gcmVpbnRlcnByZXRIZWxwZXI8
RUdMQ2xpZW50QnVmZmVyPihnbFRleHR1cmUyRCk7CisKKyAgICAvLyBUZXN0IHZhbGlkYXRpb24g
b2YgZWdsQ3JlYXRlSW1hZ2VLSFIKKworICAgIC8vIElmIDxkcHk+IGlzIG5vdCB0aGUgaGFuZGxl
IG9mIGEgdmFsaWQgRUdMRGlzcGxheSBvYmplY3QsIHRoZSBlcnJvciBFR0xfQkFEX0RJU1BMQVkg
aXMKKyAgICAvLyBnZW5lcmF0ZWQuCisgICAgaW1hZ2UgPSBlZ2xDcmVhdGVJbWFnZUtIUihyZWlu
dGVycHJldEhlbHBlcjxFR0xEaXNwbGF5PigweEJBQURGMDBEKSwgY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEVHTF9HTF9URVhUVVJFXzJEX0tIUiwgdGV4dHVyZTJELCBu
dWxscHRyKTsKKyAgICBFWFBFQ1RfRVEoaW1hZ2UsIEVHTF9OT19JTUFHRV9LSFIpOworICAgIEVY
UEVDVF9FR0xfRVJST1IoRUdMX0JBRF9ESVNQTEFZKTsKKworICAgIC8vIElmIDxjdHg+IGlzIG5l
aXRoZXIgdGhlIGhhbmRsZSBvZiBhIHZhbGlkIEVHTENvbnRleHQgb2JqZWN0IG9uIDxkcHk+IG5v
ciBFR0xfTk9fQ09OVEVYVCwgdGhlCisgICAgLy8gZXJyb3IgRUdMX0JBRF9DT05URVhUIGlzIGdl
bmVyYXRlZC4KKyAgICBpbWFnZSA9IGVnbENyZWF0ZUltYWdlS0hSKGRpc3BsYXksIHJlaW50ZXJw
cmV0SGVscGVyPEVHTENvbnRleHQ+KDB4QkFBREYwMEQpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRUdMX0dMX1RFWFRVUkVfMkRfS0hSLCB0ZXh0dXJlMkQsIG51bGxwdHIpOworICAg
IEVYUEVDVF9FUShpbWFnZSwgRUdMX05PX0lNQUdFX0tIUik7CisgICAgRVhQRUNUX0VHTF9FUlJP
UihFR0xfQkFEX0NPTlRFWFQpOworCisgICAgLy8gVGVzdCBFR0xfTk9fQ09OVEVYVCB3aXRoIGEg
MkQgdGV4dHVyZSB0YXJnZXQgd2hpY2ggZG9lcyByZXF1aXJlIGEgY29udGV4dC4KKyAgICBpbWFn
ZSA9IGVnbENyZWF0ZUltYWdlS0hSKGRpc3BsYXksIEVHTF9OT19DT05URVhULCBFR0xfR0xfVEVY
VFVSRV8yRF9LSFIsIHRleHR1cmUyRCwgbnVsbHB0cik7CisgICAgRVhQRUNUX0VRKGltYWdlLCBF
R0xfTk9fSU1BR0VfS0hSKTsKKyAgICBFWFBFQ1RfRUdMX0VSUk9SKEVHTF9CQURfQ09OVEVYVCk7
CisKKyAgICAvLyBJZiBhbiBhdHRyaWJ1dGUgc3BlY2lmaWVkIGluIDxhdHRyaWJfbGlzdD4gaXMg
bm90IG9uZSBvZiB0aGUgYXR0cmlidXRlcyBsaXN0ZWQgaW4gVGFibGUgYmJiLAorICAgIC8vIHRo
ZSBlcnJvciBFR0xfQkFEX1BBUkFNRVRFUiBpcyBnZW5lcmF0ZWQuCisgICAgRUdMaW50IGJhZEF0
dHJpYnV0ZXNbXSA9IHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8RUdMaW50PigweERFQURCRUVGKSwg
MCwgRUdMX05PTkUsCisgICAgfTsKKworICAgIGltYWdlID0gZWdsQ3JlYXRlSW1hZ2VLSFIoZGlz
cGxheSwgY29udGV4dCwgRUdMX0dMX1RFWFRVUkVfMkRfS0hSLCB0ZXh0dXJlMkQsIGJhZEF0dHJp
YnV0ZXMpOworICAgIEVYUEVDVF9FUShpbWFnZSwgRUdMX05PX0lNQUdFX0tIUik7CisgICAgRVhQ
RUNUX0VHTF9FUlJPUihFR0xfQkFEX1BBUkFNRVRFUik7CisKKyAgICAvLyBJZiB0aGUgcmVzb3Vy
Y2Ugc3BlY2lmaWVkIGJ5IDxkcHk+LCA8Y3R4PiwgPHRhcmdldD4sIDxidWZmZXI+IGFuZCA8YXR0
cmliX2xpc3Q+IGhhcyBhbiBvZmYgLQorICAgIC8vIHNjcmVlbiBidWZmZXIgYm91bmQgdG8gaXQo
ZS5nLiwgYnkgYQorICAgIC8vIHByZXZpb3VzIGNhbGwgdG8gZWdsQmluZFRleEltYWdlKSwgdGhl
IGVycm9yIEVHTF9CQURfQUNDRVNTIGlzIGdlbmVyYXRlZC4KKyAgICBFR0xpbnQgc3VyZmFjZVR5
cGUgPSAwOworICAgIGVnbEdldENvbmZpZ0F0dHJpYihkaXNwbGF5LCBjb25maWcsIEVHTF9TVVJG
QUNFX1RZUEUsICZzdXJmYWNlVHlwZSk7CisKKyAgICBFR0xpbnQgYmluZFRvVGV4dHVyZVJHQkEg
PSAwOworICAgIGVnbEdldENvbmZpZ0F0dHJpYihkaXNwbGF5LCBjb25maWcsIEVHTF9CSU5EX1RP
X1RFWFRVUkVfUkdCQSwgJmJpbmRUb1RleHR1cmVSR0JBKTsKKyAgICBpZiAoKHN1cmZhY2VUeXBl
ICYgRUdMX1BCVUZGRVJfQklUKSAhPSAwICYmIGJpbmRUb1RleHR1cmVSR0JBID09IEVHTF9UUlVF
KQorICAgIHsKKyAgICAgICAgRUdMaW50IHBidWZmZXJBdHRyaWJ1dGVzW10gPSB7CisgICAgICAg
ICAgICBFR0xfV0lEVEgsICAgICAgICAgIDEsCisgICAgICAgICAgICBFR0xfSEVJR0hULCAgICAg
ICAgIDEsCisgICAgICAgICAgICBFR0xfVEVYVFVSRV9GT1JNQVQsIEVHTF9URVhUVVJFX1JHQkEs
CisgICAgICAgICAgICBFR0xfVEVYVFVSRV9UQVJHRVQsIEVHTF9URVhUVVJFXzJELAorICAgICAg
ICAgICAgRUdMX05PTkUsICAgICAgICAgICBFR0xfTk9ORSwKKyAgICAgICAgfTsKKyAgICAgICAg
RUdMU3VyZmFjZSBwYnVmZmVyID0gZWdsQ3JlYXRlUGJ1ZmZlclN1cmZhY2UoZGlzcGxheSwgY29u
ZmlnLCBwYnVmZmVyQXR0cmlidXRlcyk7CisgICAgICAgIEFTU0VSVF9ORShwYnVmZmVyLCBFR0xf
Tk9fU1VSRkFDRSk7CisgICAgICAgIEVYUEVDVF9FR0xfU1VDQ0VTUygpOworCisgICAgICAgIGVn
bEJpbmRUZXhJbWFnZShkaXNwbGF5LCBwYnVmZmVyLCBFR0xfQkFDS19CVUZGRVIpOworICAgICAg
ICBFWFBFQ1RfRUdMX1NVQ0NFU1MoKTsKKworICAgICAgICBpbWFnZSA9IGVnbENyZWF0ZUltYWdl
S0hSKGRpc3BsYXksIGNvbnRleHQsIEVHTF9HTF9URVhUVVJFXzJEX0tIUiwgdGV4dHVyZTJELCBu
dWxscHRyKTsKKyAgICAgICAgRVhQRUNUX0VRKGltYWdlLCBFR0xfTk9fSU1BR0VfS0hSKTsKKyAg
ICAgICAgRVhQRUNUX0VHTF9FUlJPUihFR0xfQkFEX0FDQ0VTUyk7CisKKyAgICAgICAgZWdsUmVs
ZWFzZVRleEltYWdlKGRpc3BsYXksIHBidWZmZXIsIEVHTF9CQUNLX0JVRkZFUik7CisgICAgICAg
IGVnbERlc3Ryb3lTdXJmYWNlKGRpc3BsYXksIHBidWZmZXIpOworICAgICAgICBnbFRleEltYWdl
MkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMSwgMSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdO
RURfQllURSwgbnVsbHB0cik7CisgICAgICAgIEVYUEVDVF9FR0xfU1VDQ0VTUygpOworICAgICAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICB9CisKKyAgICAvLyBJZiB0aGUgcmVzb3VyY2Ug
c3BlY2lmaWVkIGJ5IDxkcHk+LCA8Y3R4PiwgPHRhcmdldD4sIDxidWZmZXI+IGFuZAorICAgIC8v
IDxhdHRyaWJfbGlzdD4gaXMgaXRzZWxmIGFuIEVHTEltYWdlIHNpYmxpbmcsIHRoZSBlcnJvciBF
R0xfQkFEX0FDQ0VTUyBpcyBnZW5lcmF0ZWQuCisgICAgaW1hZ2UgPSBlZ2xDcmVhdGVJbWFnZUtI
UihkaXNwbGF5LCBjb250ZXh0LCBFR0xfR0xfVEVYVFVSRV8yRF9LSFIsIHRleHR1cmUyRCwgbnVs
bHB0cik7CisgICAgRVhQRUNUX05FKGltYWdlLCBFR0xfTk9fSU1BR0VfS0hSKTsKKyAgICBFWFBF
Q1RfRUdMX1NVQ0NFU1MoKTsKKworICAgIC8qIFRPRE8oZ2VvZmZsYW5nKTogRW5hYmxlIHRoaXMg
dmFsaWRhdGlvbiB3aGVuIGl0IHBhc3Nlcy4KKyAgICBFR0xJbWFnZUtIUiBpbWFnZTIgPSBlZ2xD
cmVhdGVJbWFnZUtIUihkaXNwbGF5LCBjb250ZXh0LCBFR0xfR0xfVEVYVFVSRV8yRF9LSFIsCisg
ICAgcmVpbnRlcnByZXRfY2FzdDxFR0xDbGllbnRCdWZmZXI+KHRleHR1cmUyRCksIG51bGxwdHIp
OworICAgIEVYUEVDVF9FUShpbWFnZTIsIEVHTF9OT19JTUFHRV9LSFIpOworICAgIEVYUEVDVF9F
R0xfRVJST1IoRUdMX0JBRF9BQ0NFU1MpOworICAgICovCisKKyAgICAvLyBUZXN0IHZhbGlkYXRp
b24gb2YgZWdsRGVzdHJveUltYWdlS0hSCisgICAgLy8gTm90ZTogaW1hZ2UgaXMgbm93IGEgdmFs
aWQgRUdMIGltYWdlCisgICAgRUdMQm9vbGVhbiByZXN1bHQgPSBFR0xfRkFMU0U7CisKKyAgICAv
LyBJZiA8ZHB5PiBpcyBub3QgdGhlIGhhbmRsZSBvZiBhIHZhbGlkIEVHTERpc3BsYXkgb2JqZWN0
LCB0aGUgZXJyb3IgRUdMX0JBRF9ESVNQTEFZIGlzCisgICAgLy8gZ2VuZXJhdGVkLgorICAgIHJl
c3VsdCA9IGVnbERlc3Ryb3lJbWFnZUtIUihyZWludGVycHJldEhlbHBlcjxFR0xEaXNwbGF5Pigw
eEJBQURGMDBEKSwgaW1hZ2UpOworICAgIEVYUEVDVF9FUShyZXN1bHQsIHN0YXRpY19jYXN0PEVH
TEJvb2xlYW4+KEVHTF9GQUxTRSkpOworICAgIEVYUEVDVF9FR0xfRVJST1IoRUdMX0JBRF9ESVNQ
TEFZKTsKKworICAgIC8vIElmIDxpbWFnZT4gaXMgbm90IGEgdmFsaWQgRUdMSW1hZ2VLSFIgb2Jq
ZWN0IGNyZWF0ZWQgd2l0aCByZXNwZWN0IHRvIDxkcHk+LCB0aGUgZXJyb3IKKyAgICAvLyBFR0xf
QkFEX1BBUkFNRVRFUiBpcyBnZW5lcmF0ZWQuCisgICAgcmVzdWx0ID0gZWdsRGVzdHJveUltYWdl
S0hSKGRpc3BsYXksIHJlaW50ZXJwcmV0SGVscGVyPEVHTEltYWdlS0hSPigweEJBQURGMDBEKSk7
CisgICAgRVhQRUNUX0VRKHJlc3VsdCwgc3RhdGljX2Nhc3Q8RUdMQm9vbGVhbj4oRUdMX0ZBTFNF
KSk7CisgICAgRVhQRUNUX0VHTF9FUlJPUihFR0xfQkFEX1BBUkFNRVRFUik7CisKKyAgICAvLyBD
bGVhbiB1cCBhbmQgdmFsaWRhdGUgaW1hZ2UgaXMgZGVzdHJveWVkCisgICAgcmVzdWx0ID0gZWds
RGVzdHJveUltYWdlS0hSKGRpc3BsYXksIGltYWdlKTsKKyAgICBFWFBFQ1RfRVEocmVzdWx0LCBz
dGF0aWNfY2FzdDxFR0xCb29sZWFuPihFR0xfVFJVRSkpOworICAgIEVYUEVDVF9FR0xfU1VDQ0VT
UygpOworCisgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmZ2xUZXh0dXJlMkQpOworICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOworfQorCisvLyBDaGVjayB2YWxpZGF0aW9uIGZyb20gdGhlIEVHTF9L
SFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSBleHRlbnNpb24KK1RFU1RfUChJbWFnZVRlc3QsIFZhbGlk
YXRpb25JbWFnZVBpeG1hcCkKK3sKKyAgICAvLyBUaGlzIGV4dGVuc2lvbiBpcyBub3QgaW1wbGVt
ZW50ZWQgYW55d2hlcmUgeWV0LiAgVGhpcyBtYWtlcyBzdXJlIHRoYXQgaXQgaXMgdGVzdGVkIG9u
Y2UgaXQgaXMKKyAgICAvLyBhZGRlZC4KKyAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVHTFdp
bmRvdygpOworICAgIEVYUEVDVF9GQUxTRShlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5k
b3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfaW1hZ2VfcGl4bWFwIikpOworfQorCisvLyBDaGVj
ayB2YWxpZGF0aW9uIGZyb20gdGhlIEVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSwgRUdMX0tI
Ul9nbF90ZXh0dXJlX2N1YmVtYXBfaW1hZ2UsCisvLyBFR0xfS0hSX2dsX3RleHR1cmVfM0RfaW1h
Z2UgYW5kIEVHTF9LSFJfZ2xfcmVuZGVyYnVmZmVyX2ltYWdlIGV4dGVuc2lvbnMKK1RFU1RfUChJ
bWFnZVRlc3QsIFZhbGlkYXRpb25HTEltYWdlKQoreworICAgIEVHTFdpbmRvdyAqd2luZG93ID0g
Z2V0RUdMV2luZG93KCk7CisgICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJPRVNfRUdMX2ltYWdl
IikgfHwKKyAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlz
cGxheSgpLCAiRUdMX0tIUl9pbWFnZV9iYXNlIikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQg
PDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIE9FU19FR0xfaW1hZ2Ugb3IgRUdMX0tIUl9pbWFnZV9i
YXNlIGlzIG5vdCBhdmFpbGFibGUuIgorICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gd2luZG93
LT5nZXREaXNwbGF5KCk7CisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gd2luZG93LT5nZXRDb250
ZXh0KCk7CisgICAgRUdMSW1hZ2VLSFIgaW1hZ2UgID0gRUdMX05PX0lNQUdFX0tIUjsKKworICAg
IGlmIChlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVH
TF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSIpKQorICAgIHsKKyAgICAgICAgLy8gSWYgPHRhcmdl
dD4gaXMgRUdMX0dMX1RFWFRVUkVfMkRfS0hSLCBFR0xfR0xfVEVYVFVSRV9DVUJFX01BUF8qX0tI
UiBvcgorICAgICAgICAvLyBFR0xfR0xfVEVYVFVSRV8zRF9LSFIgYW5kIDxidWZmZXI+IGlzIG5v
dCB0aGUgbmFtZSBvZiBhIHRleHR1cmUgb2JqZWN0IG9mIHR5cGUgPHRhcmdldD4sCisgICAgICAg
IC8vIHRoZSBlcnJvciBFR0xfQkFEX1BBUkFNRVRFUiBpcyBnZW5lcmF0ZWQuCisgICAgICAgIEdM
dWludCB0ZXh0dXJlQ3ViZTsKKyAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4dHVyZUN1YmUp
OworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIHRleHR1cmVDdWJl
KTsKKyAgICAgICAgZm9yIChHTGVudW0gZmFjZSA9IEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJ
VkVfWDsgZmFjZSA8PSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1o7CisgICAgICAgICAg
ICAgZmFjZSsrKQorICAgICAgICB7CisgICAgICAgICAgICBnbFRleEltYWdlMkQoZmFjZSwgMCwg
R0xfUkdCQSwgMSwgMSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7Cisg
ICAgICAgIH0KKworICAgICAgICBpbWFnZSA9IGVnbENyZWF0ZUltYWdlS0hSKGRpc3BsYXksIGNv
bnRleHQsIEVHTF9HTF9URVhUVVJFXzJEX0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZWludGVycHJldEhlbHBlcjxFR0xDbGllbnRCdWZmZXI+KHRleHR1cmVDdWJlKSwg
bnVsbHB0cik7CisgICAgICAgIEVYUEVDVF9FUShpbWFnZSwgRUdMX05PX0lNQUdFX0tIUik7Cisg
ICAgICAgIEVYUEVDVF9FR0xfRVJST1IoRUdMX0JBRF9QQVJBTUVURVIpOworCisgICAgICAgIC8v
IElmIEVHTF9HTF9URVhUVVJFX0xFVkVMX0tIUiBpcyAwLCA8dGFyZ2V0PiBpcyBFR0xfR0xfVEVY
VFVSRV8yRF9LSFIsCisgICAgICAgIC8vIEVHTF9HTF9URVhUVVJFX0NVQkVfTUFQXypfS0hSIG9y
IEVHTF9HTF9URVhUVVJFXzNEX0tIUiwgPGJ1ZmZlcj4gaXMgdGhlIG5hbWUgb2YgYW4KKyAgICAg
ICAgLy8gaW5jb21wbGV0ZSBHTCB0ZXh0dXJlIG9iamVjdCwgYW5kIGFueSBtaXBtYXAgbGV2ZWxz
IG90aGVyIHRoYW4gbWlwbWFwIGxldmVsIDAgYXJlCisgICAgICAgIC8vIHNwZWNpZmllZCwgdGhl
IGVycm9yIEVHTF9CQURfUEFSQU1FVEVSIGlzIGdlbmVyYXRlZC4KKyAgICAgICAgR0x1aW50IGlu
Y29tcGxldGVUZXh0dXJlOworICAgICAgICBnbEdlblRleHR1cmVzKDEsICZpbmNvbXBsZXRlVGV4
dHVyZSk7CisgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgaW5jb21wbGV0ZVRl
eHR1cmUpOworICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwg
MiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7CisgICAgICAgIGds
VGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAxLCBHTF9SR0JBLCAyLCAyLCAwLCBHTF9SR0JBLCBH
TF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKKworICAgICAgICBFR0xpbnQgbGV2ZWwwQXR0cmli
dXRlW10gPSB7CisgICAgICAgICAgICBFR0xfR0xfVEVYVFVSRV9MRVZFTF9LSFIsIDAsIEVHTF9O
T05FLAorICAgICAgICB9OworICAgICAgICBpbWFnZSA9IGVnbENyZWF0ZUltYWdlS0hSKGRpc3Bs
YXksIGNvbnRleHQsIEVHTF9HTF9URVhUVVJFXzJEX0tIUiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZWludGVycHJldEhlbHBlcjxFR0xDbGllbnRCdWZmZXI+KGluY29tcGxl
dGVUZXh0dXJlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDBBdHRy
aWJ1dGUpOworICAgICAgICBFWFBFQ1RfRVEoaW1hZ2UsIEVHTF9OT19JTUFHRV9LSFIpOworICAg
ICAgICBFWFBFQ1RfRUdMX0VSUk9SKEVHTF9CQURfUEFSQU1FVEVSKTsKKworICAgICAgICAvLyBJ
ZiBFR0xfR0xfVEVYVFVSRV9MRVZFTF9LSFIgaXMgMCwgPHRhcmdldD4gaXMgRUdMX0dMX1RFWFRV
UkVfMkRfS0hSIG9yCisgICAgICAgIC8vIEVHTF9HTF9URVhUVVJFXzNEX0tIUiwgPGJ1ZmZlcj4g
aXMgbm90IHRoZSBuYW1lIG9mIGEgY29tcGxldGUgR0wgdGV4dHVyZSBvYmplY3QsIGFuZAorICAg
ICAgICAvLyBtaXBtYXAgbGV2ZWwgMCBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZXJyb3IgRUdMX0JB
RF9QQVJBTUVURVIgaXMgZ2VuZXJhdGVkLgorICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgMCwgR0xfUkdCQSwgMCwgMCwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVs
bHB0cik7CisgICAgICAgIGltYWdlID0gZWdsQ3JlYXRlSW1hZ2VLSFIoZGlzcGxheSwgY29udGV4
dCwgRUdMX0dMX1RFWFRVUkVfMkRfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlaW50ZXJwcmV0SGVscGVyPEVHTENsaWVudEJ1ZmZlcj4oaW5jb21wbGV0ZVRleHR1cmUp
LCBudWxscHRyKTsKKyAgICAgICAgRVhQRUNUX0VRKGltYWdlLCBFR0xfTk9fSU1BR0VfS0hSKTsK
KyAgICAgICAgRVhQRUNUX0VHTF9FUlJPUihFR0xfQkFEX1BBUkFNRVRFUik7CisKKyAgICAgICAg
Ly8gSWYgPHRhcmdldD4gaXMgRUdMX0dMX1RFWFRVUkVfMkRfS0hSLCBFR0xfR0xfVEVYVFVSRV9D
VUJFX01BUF8qX0tIUiwKKyAgICAgICAgLy8gRUdMX0dMX1JFTkRFUkJVRkZFUl9LSFIgb3IgRUdM
X0dMX1RFWFRVUkVfM0RfS0hSIGFuZCA8YnVmZmVyPiByZWZlcnMgdG8gdGhlIGRlZmF1bHQgR0wK
KyAgICAgICAgLy8gdGV4dHVyZSBvYmplY3QoMCkgZm9yIHRoZSBjb3JyZXNwb25kaW5nIEdMIHRh
cmdldCwgdGhlIGVycm9yIEVHTF9CQURfUEFSQU1FVEVSIGlzCisgICAgICAgIC8vIGdlbmVyYXRl
ZC4KKyAgICAgICAgaW1hZ2UgPSBlZ2xDcmVhdGVJbWFnZUtIUihkaXNwbGF5LCBjb250ZXh0LCBF
R0xfR0xfVEVYVFVSRV8yRF9LSFIsIDAsIG51bGxwdHIpOworICAgICAgICBFWFBFQ1RfRVEoaW1h
Z2UsIEVHTF9OT19JTUFHRV9LSFIpOworICAgICAgICBFWFBFQ1RfRUdMX0VSUk9SKEVHTF9CQURf
UEFSQU1FVEVSKTsKKworICAgICAgICAvLyBJZiA8dGFyZ2V0PiBpcyBFR0xfR0xfVEVYVFVSRV8y
RF9LSFIsIEVHTF9HTF9URVhUVVJFX0NVQkVfTUFQXypfS0hSLCBvcgorICAgICAgICAvLyBFR0xf
R0xfVEVYVFVSRV8zRF9LSFIsIGFuZCB0aGUgdmFsdWUgc3BlY2lmaWVkIGluIDxhdHRyX2xpc3Q+
IGZvcgorICAgICAgICAvLyBFR0xfR0xfVEVYVFVSRV9MRVZFTF9LSFIgaXMgbm90IGEgdmFsaWQg
bWlwbWFwIGxldmVsIGZvciB0aGUgc3BlY2lmaWVkIEdMIHRleHR1cmUgb2JqZWN0CisgICAgICAg
IC8vIDxidWZmZXI+LCB0aGUgZXJyb3IgRUdMX0JBRF9NQVRDSCBpcyBnZW5lcmF0ZWQuCisgICAg
ICAgIEVHTGludCBsZXZlbDJBdHRyaWJ1dGVbXSA9IHsKKyAgICAgICAgICAgIEVHTF9HTF9URVhU
VVJFX0xFVkVMX0tIUiwgMiwgRUdMX05PTkUsCisgICAgICAgIH07CisgICAgICAgIGltYWdlID0g
ZWdsQ3JlYXRlSW1hZ2VLSFIoZGlzcGxheSwgY29udGV4dCwgRUdMX0dMX1RFWFRVUkVfMkRfS0hS
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0SGVscGVyPEVH
TENsaWVudEJ1ZmZlcj4oaW5jb21wbGV0ZVRleHR1cmUpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxldmVsMkF0dHJpYnV0ZSk7CisgICAgICAgIEVYUEVDVF9FUShpbWFnZSwg
RUdMX05PX0lNQUdFX0tIUik7CisgICAgICAgIEVYUEVDVF9FR0xfRVJST1IoRUdMX0JBRF9QQVJB
TUVURVIpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBHTHVpbnQgdGV4dHVyZTJE
OworICAgICAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXh0dXJlMkQpOworICAgICAgICBnbEJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUyRCk7CisgICAgICAgIGdsVGV4SW1hZ2UyRChH
TF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxLCAxLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9C
WVRFLCBudWxscHRyKTsKKworICAgICAgICAvLyBGcm9tIEVHTF9LSFJfaW1hZ2VfYmFzZToKKyAg
ICAgICAgLy8gSWYgPHRhcmdldD4gaXMgbm90IG9uZSBvZiB0aGUgdmFsdWVzIGluIFRhYmxlIGFh
YSwgdGhlIGVycm9yIEVHTF9CQURfUEFSQU1FVEVSIGlzCisgICAgICAgIC8vIGdlbmVyYXRlZC4K
KyAgICAgICAgaW1hZ2UgPSBlZ2xDcmVhdGVJbWFnZUtIUihkaXNwbGF5LCBjb250ZXh0LCBFR0xf
R0xfVEVYVFVSRV8yRF9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVp
bnRlcnByZXRIZWxwZXI8RUdMQ2xpZW50QnVmZmVyPih0ZXh0dXJlMkQpLCBudWxscHRyKTsKKyAg
ICAgICAgRVhQRUNUX0VRKGltYWdlLCBFR0xfTk9fSU1BR0VfS0hSKTsKKyAgICAgICAgRVhQRUNU
X0VHTF9FUlJPUihFR0xfQkFEX1BBUkFNRVRFUik7CisgICAgfQorCisgICAgaWYgKGVnbERpc3Bs
YXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9nbF90ZXh0
dXJlX2N1YmVtYXBfaW1hZ2UiKSkKKyAgICB7CisgICAgICAgIC8vIElmIEVHTF9HTF9URVhUVVJF
X0xFVkVMX0tIUiBpcyAwLCA8dGFyZ2V0PiBpcyBFR0xfR0xfVEVYVFVSRV9DVUJFX01BUF8qX0tI
UiwgPGJ1ZmZlcj4gaXMKKyAgICAgICAgLy8gbm90IHRoZSBuYW1lIG9mIGEgY29tcGxldGUgR0wg
dGV4dHVyZSBvYmplY3QsIGFuZCBvbmUgb3IgbW9yZSBmYWNlcyBkbyBub3QgaGF2ZSBtaXBtYXAK
KyAgICAgICAgLy8gbGV2ZWwgMCBzcGVjaWZpZWQsIHRoZSBlcnJvciBFR0xfQkFEX1BBUkFNRVRF
UiBpcyBnZW5lcmF0ZWQuCisgICAgICAgIEdMdWludCBpbmNvbXBsZXRlVGV4dHVyZUN1YmU7Cisg
ICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJmluY29tcGxldGVUZXh0dXJlQ3ViZSk7CisgICAgICAg
IGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV9DVUJFX01BUCwgaW5jb21wbGV0ZVRleHR1cmVDdWJl
KTsKKyAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwg
MCwgR0xfUkdCQSwgMSwgMSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAg
ICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV9D
VUJFX01BUF9ORUdBVElWRV9YLCAwLCBHTF9SR0JBLCAxLCAxLCAwLCBHTF9SR0JBLCBHTF9VTlNJ
R05FRF9CWVRFLAorICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgIGdsVGV4
SW1hZ2UyRChHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ksIDAsIEdMX1JHQkEsIDEsIDEs
IDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgICAgICBudWxs
cHRyKTsKKyAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVf
WSwgMCwgR0xfUkdCQSwgMSwgMSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVS
RV9DVUJFX01BUF9QT1NJVElWRV9aLCAwLCBHTF9SR0JBLCAxLCAxLCAwLCBHTF9SR0JBLCBHTF9V
TlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisKKyAgICAgICAg
RUdMaW50IGxldmVsMEF0dHJpYnV0ZVtdID0geworICAgICAgICAgICAgRUdMX0dMX1RFWFRVUkVf
TEVWRUxfS0hSLCAwLCBFR0xfTk9ORSwKKyAgICAgICAgfTsKKyAgICAgICAgaW1hZ2UgPSBlZ2xD
cmVhdGVJbWFnZUtIUihkaXNwbGF5LCBjb250ZXh0LCBFR0xfR0xfVEVYVFVSRV9DVUJFX01BUF9Q
T1NJVElWRV9YX0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVy
cHJldEhlbHBlcjxFR0xDbGllbnRCdWZmZXI+KGluY29tcGxldGVUZXh0dXJlQ3ViZSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwwQXR0cmlidXRlKTsKKyAgICAgICAg
RVhQRUNUX0VRKGltYWdlLCBFR0xfTk9fSU1BR0VfS0hSKTsKKyAgICAgICAgRVhQRUNUX0VHTF9F
UlJPUihFR0xfQkFEX1BBUkFNRVRFUik7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAg
IEdMdWludCB0ZXh0dXJlQ3ViZTsKKyAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4dHVyZUN1
YmUpOworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIHRleHR1cmVD
dWJlKTsKKyAgICAgICAgZm9yIChHTGVudW0gZmFjZSA9IEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9T
SVRJVkVfWDsgZmFjZSA8PSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1o7CisgICAgICAg
ICAgICAgZmFjZSsrKQorICAgICAgICB7CisgICAgICAgICAgICBnbFRleEltYWdlMkQoZmFjZSwg
MCwgR0xfUkdCQSwgMSwgMSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7
CisgICAgICAgIH0KKworICAgICAgICAvLyBGcm9tIEVHTF9LSFJfaW1hZ2VfYmFzZToKKyAgICAg
ICAgLy8gSWYgPHRhcmdldD4gaXMgbm90IG9uZSBvZiB0aGUgdmFsdWVzIGluIFRhYmxlIGFhYSwg
dGhlIGVycm9yIEVHTF9CQURfUEFSQU1FVEVSIGlzCisgICAgICAgIC8vIGdlbmVyYXRlZC4KKyAg
ICAgICAgaW1hZ2UgPSBlZ2xDcmVhdGVJbWFnZUtIUihkaXNwbGF5LCBjb250ZXh0LCBFR0xfR0xf
VEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YX0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWludGVycHJldEhlbHBlcjxFR0xDbGllbnRCdWZmZXI+KHRleHR1cmVDdWJl
KSwgbnVsbHB0cik7CisgICAgICAgIEVYUEVDVF9FUShpbWFnZSwgRUdMX05PX0lNQUdFX0tIUik7
CisgICAgICAgIEVYUEVDVF9FR0xfRVJST1IoRUdMX0JBRF9QQVJBTUVURVIpOworICAgIH0KKwor
ICAgIGlmIChlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwg
IkVHTF9LSFJfZ2xfdGV4dHVyZV8zRF9pbWFnZSIpICYmCisgICAgICAgIGdldENsaWVudE1ham9y
VmVyc2lvbigpID49IDMpCisgICAgeworICAgICAgICAvLyBJZiA8dGFyZ2V0PiBpcyBFR0xfR0xf
VEVYVFVSRV8zRF9LSFIsIGFuZCB0aGUgdmFsdWUgc3BlY2lmaWVkIGluIDxhdHRyX2xpc3Q+IGZv
cgorICAgICAgICAvLyBFR0xfR0xfVEVYVFVSRV9aT0ZGU0VUX0tIUiBleGNlZWRzIHRoZSBkZXB0
aCBvZiB0aGUgc3BlY2lmaWVkIG1pcG1hcCBsZXZlbCAtIG9mIC0gZGV0YWlsCisgICAgICAgIC8v
IGluIDxidWZmZXI+LCB0aGUgZXJyb3IgRUdMX0JBRF9QQVJBTUVURVIgaXMgZ2VuZXJhdGVkLgor
ICAgICAgICBHTHVpbnQgdGV4dHVyZTNEOworICAgICAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXh0
dXJlM0QpOworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfM0QsIHRleHR1cmUzRCk7
CisgICAgICAgIGdsVGV4SW1hZ2UzRChHTF9URVhUVVJFXzNELCAwLCBHTF9SR0JBLCAyLCAyLCAy
LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKKworICAgICAgICBFR0xp
bnQgek9mZnNldDNQYXJhbWV0ZXJbXSA9IHsKKyAgICAgICAgICAgIEVHTF9HTF9URVhUVVJFX1pP
RkZTRVRfS0hSLCAzLCBFR0xfTk9ORSwKKyAgICAgICAgfTsKKyAgICAgICAgaW1hZ2UgPSBlZ2xD
cmVhdGVJbWFnZUtIUihkaXNwbGF5LCBjb250ZXh0LCBFR0xfR0xfVEVYVFVSRV8zRF9LSFIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRIZWxwZXI8RUdMQ2xp
ZW50QnVmZmVyPih0ZXh0dXJlM0QpLCB6T2Zmc2V0M1BhcmFtZXRlcik7CisgICAgICAgIEVYUEVD
VF9FUShpbWFnZSwgRUdMX05PX0lNQUdFX0tIUik7CisgICAgICAgIEVYUEVDVF9FR0xfRVJST1Io
RUdMX0JBRF9QQVJBTUVURVIpOworCisgICAgICAgIEVHTGludCB6T2Zmc2V0TmVnYXRpdmUxUGFy
YW1ldGVyW10gPSB7CisgICAgICAgICAgICBFR0xfR0xfVEVYVFVSRV9aT0ZGU0VUX0tIUiwgLTEs
IEVHTF9OT05FLAorICAgICAgICB9OworICAgICAgICBpbWFnZSA9IGVnbENyZWF0ZUltYWdlS0hS
KGRpc3BsYXksIGNvbnRleHQsIEVHTF9HTF9URVhUVVJFXzNEX0tIUiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWludGVycHJldEhlbHBlcjxFR0xDbGllbnRCdWZmZXI+KHRl
eHR1cmUzRCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgek9mZnNldE5lZ2F0
aXZlMVBhcmFtZXRlcik7CisgICAgICAgIEVYUEVDVF9FUShpbWFnZSwgRUdMX05PX0lNQUdFX0tI
Uik7CisgICAgICAgIEVYUEVDVF9FR0xfRVJST1IoRUdMX0JBRF9QQVJBTUVURVIpOworICAgIH0K
KyAgICBlbHNlCisgICAgeworICAgICAgICBpZiAoZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQo
d2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2dsX3RleHR1cmVfMkRfaW1hZ2UiKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgR0x1aW50IHRleHR1cmUyRDsKKyAgICAgICAgICAgIGdsR2Vu
VGV4dHVyZXMoMSwgJnRleHR1cmUyRCk7CisgICAgICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RF
WFRVUkVfMkQsIHRleHR1cmUyRCk7CisgICAgICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgMCwgR0xfUkdCQSwgMSwgMSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVs
bHB0cik7CisKKyAgICAgICAgICAgIC8vIFZlcmlmeSBFR0xfR0xfVEVYVFVSRV9aT0ZGU0VUX0tI
UiBpcyBub3QgYSB2YWxpZCBwYXJhbWV0ZXIKKyAgICAgICAgICAgIEVHTGludCB6T2Zmc2V0MFBh
cmFtZXRlcltdID0geworICAgICAgICAgICAgICAgIEVHTF9HTF9URVhUVVJFX1pPRkZTRVRfS0hS
LCAwLCBFR0xfTk9ORSwKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGltYWdlID0KKyAg
ICAgICAgICAgICAgICBlZ2xDcmVhdGVJbWFnZUtIUihkaXNwbGF5LCBjb250ZXh0LCBFR0xfR0xf
VEVYVFVSRV8yRF9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRl
cnByZXRIZWxwZXI8RUdMQ2xpZW50QnVmZmVyPih0ZXh0dXJlMkQpLCB6T2Zmc2V0MFBhcmFtZXRl
cik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoaW1hZ2UsIEVHTF9OT19JTUFHRV9LSFIpOworICAg
ICAgICAgICAgRVhQRUNUX0VHTF9FUlJPUihFR0xfQkFEX1BBUkFNRVRFUik7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPj0gMykKKyAgICAgICAgewor
ICAgICAgICAgICAgR0x1aW50IHRleHR1cmUzRDsKKyAgICAgICAgICAgIGdsR2VuVGV4dHVyZXMo
MSwgJnRleHR1cmUzRCk7CisgICAgICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfM0Qs
IHRleHR1cmUzRCk7CisgICAgICAgICAgICBnbFRleEltYWdlM0QoR0xfVEVYVFVSRV8zRCwgMCwg
R0xfUkdCQSwgMSwgMSwgMSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7
CisKKyAgICAgICAgICAgIC8vIEZyb20gRUdMX0tIUl9pbWFnZV9iYXNlOgorICAgICAgICAgICAg
Ly8gSWYgPHRhcmdldD4gaXMgbm90IG9uZSBvZiB0aGUgdmFsdWVzIGluIFRhYmxlIGFhYSwgdGhl
IGVycm9yIEVHTF9CQURfUEFSQU1FVEVSIGlzCisgICAgICAgICAgICAvLyBnZW5lcmF0ZWQuCisg
ICAgICAgICAgICBpbWFnZSA9IGVnbENyZWF0ZUltYWdlS0hSKGRpc3BsYXksIGNvbnRleHQsIEVH
TF9HTF9URVhUVVJFXzNEX0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVpbnRlcnByZXRIZWxwZXI8RUdMQ2xpZW50QnVmZmVyPih0ZXh0dXJlM0QpLCBudWxscHRy
KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShpbWFnZSwgRUdMX05PX0lNQUdFX0tIUik7CisgICAg
ICAgICAgICBFWFBFQ1RfRUdMX0VSUk9SKEVHTF9CQURfUEFSQU1FVEVSKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGlmIChlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERp
c3BsYXkoKSwgIkVHTF9LSFJfZ2xfcmVuZGVyYnVmZmVyX2ltYWdlIikpCisgICAgeworICAgICAg
ICAvLyBJZiA8dGFyZ2V0PiBpcyBFR0xfR0xfUkVOREVSQlVGRkVSX0tIUiBhbmQgPGJ1ZmZlcj4g
aXMgbm90IHRoZSBuYW1lIG9mIGEgcmVuZGVyYnVmZmVyCisgICAgICAgIC8vIG9iamVjdCwgb3Ig
aWYgPGJ1ZmZlcj4gaXMgdGhlIG5hbWUgb2YgYSBtdWx0aXNhbXBsZWQgcmVuZGVyYnVmZmVyIG9i
amVjdCwgdGhlIGVycm9yCisgICAgICAgIC8vIEVHTF9CQURfUEFSQU1FVEVSIGlzIGdlbmVyYXRl
ZC4KKyAgICAgICAgaW1hZ2UgPSBlZ2xDcmVhdGVJbWFnZUtIUihkaXNwbGF5LCBjb250ZXh0LCBF
R0xfR0xfUkVOREVSQlVGRkVSX0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZWludGVycHJldF9jYXN0PEVHTENsaWVudEJ1ZmZlcj4oMCksIG51bGxwdHIpOworICAgICAg
ICBFWFBFQ1RfRVEoaW1hZ2UsIEVHTF9OT19JTUFHRV9LSFIpOworICAgICAgICBFWFBFQ1RfRUdM
X0VSUk9SKEVHTF9CQURfUEFSQU1FVEVSKTsKKworICAgICAgICBpZiAoZXh0ZW5zaW9uRW5hYmxl
ZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKSkKKyAgICAgICAgeworICAgICAg
ICAgICAgR0x1aW50IHJlbmRlcmJ1ZmZlcjsKKyAgICAgICAgICAgIGdsR2VuUmVuZGVyYnVmZmVy
cygxLCAmcmVuZGVyYnVmZmVyKTsKKyAgICAgICAgICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9S
RU5ERVJCVUZGRVIsIHJlbmRlcmJ1ZmZlcik7CisgICAgICAgICAgICBnbFJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdMX1JFTkRFUkJVRkZFUiwgMSwgR0xfUkdCQTgsIDEsIDEp
OworICAgICAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgICAgIGltYWdl
ID0gZWdsQ3JlYXRlSW1hZ2VLSFIoZGlzcGxheSwgY29udGV4dCwgRUdMX0dMX1JFTkRFUkJVRkZF
Ul9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8RUdMQ2xpZW50QnVmZmVyPigwKSwgbnVsbHB0cik7CisgICAgICAgICAgICBFWFBFQ1Rf
RVEoaW1hZ2UsIEVHTF9OT19JTUFHRV9LSFIpOworICAgICAgICAgICAgRVhQRUNUX0VHTF9FUlJP
UihFR0xfQkFEX1BBUkFNRVRFUik7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgR0x1aW50IHJlbmRlcmJ1ZmZlcjsKKyAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJz
KDEsICZyZW5kZXJidWZmZXIpOworICAgICAgICBnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVS
QlVGRkVSLCByZW5kZXJidWZmZXIpOworICAgICAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xf
UkVOREVSQlVGRkVSLCBHTF9SR0JBNCwgMSwgMSk7CisKKyAgICAgICAgLy8gRnJvbSBFR0xfS0hS
X2ltYWdlX2Jhc2U6CisgICAgICAgIC8vIElmIDx0YXJnZXQ+IGlzIG5vdCBvbmUgb2YgdGhlIHZh
bHVlcyBpbiBUYWJsZSBhYWEsIHRoZSBlcnJvciBFR0xfQkFEX1BBUkFNRVRFUiBpcworICAgICAg
ICAvLyBnZW5lcmF0ZWQuCisgICAgICAgIGltYWdlID0gZWdsQ3JlYXRlSW1hZ2VLSFIoZGlzcGxh
eSwgY29udGV4dCwgRUdMX0dMX1JFTkRFUkJVRkZFUl9LSFIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVpbnRlcnByZXRIZWxwZXI8RUdMQ2xpZW50QnVmZmVyPihyZW5kZXJi
dWZmZXIpLCBudWxscHRyKTsKKyAgICAgICAgRVhQRUNUX0VRKGltYWdlLCBFR0xfTk9fSU1BR0Vf
S0hSKTsKKyAgICAgICAgRVhQRUNUX0VHTF9FUlJPUihFR0xfQkFEX1BBUkFNRVRFUik7CisgICAg
fQorfQorCisvLyBDaGVjayB2YWxpZGF0aW9uIGZyb20gdGhlIEdMX09FU19FR0xfaW1hZ2UgZXh0
ZW5zaW9uCitURVNUX1AoSW1hZ2VUZXN0LCBWYWxpZGF0aW9uR0xFR0xJbWFnZSkKK3sKKyAgICBF
R0xXaW5kb3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygpOworICAgIGlmICghZXh0ZW5zaW9uRW5h
YmxlZCgiT0VTX0VHTF9pbWFnZSIpIHx8CisgICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5h
YmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfaW1hZ2VfYmFzZSIpIHx8CisgICAg
ICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVH
TF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8
ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBPRVNfRUdMX2ltYWdlLCBFR0xfS0hSX2ltYWdlX2Jhc2Ug
b3IgIgorICAgICAgICAgICAgICAgICAgICAgIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSBp
cyBub3QgYXZhaWxhYmxlLiIKKyAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIEdMdWJ5dGUgZGF0YVs0XSA9IHsyNTUsIDAsIDI1NSwg
MjU1fTsKKworICAgIC8vIENyZWF0ZSB0aGUgSW1hZ2UKKyAgICBHTHVpbnQgc291cmNlOworICAg
IEVHTEltYWdlS0hSIGltYWdlOworICAgIGNyZWF0ZUVHTEltYWdlMkRUZXh0dXJlU291cmNlKDEs
IDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGRhdGEsICZzb3VyY2UsICZpbWFnZSk7CisK
KyAgICAvLyBJZiA8dGFyZ2V0PiBpcyBub3QgVEVYVFVSRV8yRCwgdGhlIGVycm9yIElOVkFMSURf
RU5VTSBpcyBnZW5lcmF0ZWQuCisgICAgZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyhHTF9U
RVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsIGltYWdlKTsKKyAgICBFWFBFQ1RfR0xfRVJST1Io
R0xfSU5WQUxJRF9FTlVNKTsKKworICAgIC8vIElmIDxpbWFnZT4gZG9lcyBub3QgcmVmZXIgdG8g
YSB2YWxpZCBlZ2xJbWFnZU9FUyBvYmplY3QsIHRoZSBlcnJvciBJTlZBTElEX1ZBTFVFIGlzCisg
ICAgLy8gZ2VuZXJhdGVkLgorICAgIEdMdWludCB0ZXh0dXJlOworICAgIGdsR2VuVGV4dHVyZXMo
MSwgJnRleHR1cmUpOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSk7
CisgICAgZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyhHTF9URVhUVVJFXzJELCByZWludGVy
cHJldEhlbHBlcjxHTGVnbEltYWdlT0VTPigweEJBQURGMDBEKSk7CisgICAgRVhQRUNUX0dMX0VS
Uk9SKEdMX0lOVkFMSURfVkFMVUUpOworCisgICAgLy8gPHRhcmdldD4gbXVzdCBiZSBSRU5ERVJC
VUZGRVJfT0VTLCBhbmQgPGltYWdlPiBtdXN0IGJlIHRoZSBoYW5kbGUgb2YgYSB2YWxpZCBFR0xJ
bWFnZQorICAgIC8vIHJlc291cmNlLCBjYXN0IGludG8gdGhlIHR5cGUKKyAgICAvLyBlZ2xJbWFn
ZU9FUy4KKyAgICBnbEVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3RvcmFnZU9FUyhHTF9URVhU
VVJFXzJELCBpbWFnZSk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7CisK
KyAgICAvLyBJZiB0aGUgR0wgaXMgdW5hYmxlIHRvIGNyZWF0ZSBhIHJlbmRlcmJ1ZmZlciB1c2lu
ZyB0aGUgc3BlY2lmaWVkIGVnbEltYWdlT0VTLCB0aGUgZXJyb3IKKyAgICAvLyBJTlZBTElEX09Q
RVJBVElPTiBpcyBnZW5lcmF0ZWQuSWYgPGltYWdlPgorICAgIC8vIGRvZXMgbm90IHJlZmVyIHRv
IGEgdmFsaWQgZWdsSW1hZ2VPRVMgb2JqZWN0LCB0aGUgZXJyb3IgSU5WQUxJRF9WQUxVRSBpcyBn
ZW5lcmF0ZWQuCisgICAgR0x1aW50IHJlbmRlcmJ1ZmZlcjsKKyAgICBnbEdlblJlbmRlcmJ1ZmZl
cnMoMSwgJnJlbmRlcmJ1ZmZlcik7CisgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJV
RkZFUiwgcmVuZGVyYnVmZmVyKTsKKyAgICBnbEVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3Rv
cmFnZU9FUyhHTF9SRU5ERVJCVUZGRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVpbnRlcnByZXRIZWxwZXI8R0xlZ2xJbWFnZU9FUz4oMHhCQUFERjAwRCkp
OworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKKworICAgIC8vIENsZWFu
IHVwCisgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmc291cmNlKTsKKyAgICBlZ2xEZXN0cm95SW1h
Z2VLSFIod2luZG93LT5nZXREaXNwbGF5KCksIGltYWdlKTsKKyAgICBnbERlbGV0ZVRleHR1cmVz
KDEsICZ0ZXh0dXJlKTsKKyAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJnJlbmRlcmJ1ZmZl
cik7Cit9CisKKy8vIENoZWNrIHZhbGlkYXRpb24gZnJvbSB0aGUgR0xfT0VTX0VHTF9pbWFnZV9l
eHRlcm5hbCBleHRlbnNpb24KK1RFU1RfUChJbWFnZVRlc3QsIFZhbGlkYXRpb25HTEVHTEltYWdl
RXh0ZXJuYWwpCit7CisgICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9PRVNfRUdMX2ltYWdl
X2V4dGVybmFsIikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBi
ZWNhdXNlIEdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwgaXMgbm90IGF2YWlsYWJsZS4iCisgICAg
ICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBHTHVpbnQgdGV4dHVyZTsKKyAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXh0dXJlKTsKKyAgICBn
bEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCB0ZXh0dXJlKTsKKworICAgIC8v
IEluIHRoZSBpbml0aWFsIHN0YXRlIG9mIGEgVEVYVFVSRV9FWFRFUk5BTF9PRVMgdGV4dHVyZSBv
YmplY3QsIHRoZSB2YWx1ZSBhc3NpZ25lZCB0bworICAgIC8vIFRFWFRVUkVfTUlOX0ZJTFRFUiBh
bmQgVEVYVFVSRV9NQUdfRklMVEVSIGlzIExJTkVBUiwgYW5kIHRoZSBzIGFuZCB0IHdyYXAgbW9k
ZXMgYXJlIGJvdGggc2V0CisgICAgLy8gdG8gQ0xBTVBfVE9fRURHRQorICAgIGF1dG8gZ2V0VGV4
UGFyYW0gPSBbXShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUpCisgICAgeworICAgICAgICBH
TGludCB2YWx1ZSA9IDA7CisgICAgICAgIGdsR2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFt
ZSwgJnZhbHVlKTsKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgICAgIHJldHVy
biB2YWx1ZTsKKyAgICB9OworICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfTElORUFSLCBnZXRUZXhQ
YXJhbShHTF9URVhUVVJFX0VYVEVSTkFMX09FUywgR0xfVEVYVFVSRV9NSU5fRklMVEVSKSk7Cisg
ICAgRVhQRUNUX0dMRU5VTV9FUShHTF9MSU5FQVIsIGdldFRleFBhcmFtKEdMX1RFWFRVUkVfRVhU
RVJOQUxfT0VTLCBHTF9URVhUVVJFX01BR19GSUxURVIpKTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VR
KEdMX0NMQU1QX1RPX0VER0UsIGdldFRleFBhcmFtKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCBH
TF9URVhUVVJFX1dSQVBfUykpOworICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfQ0xBTVBfVE9fRURH
RSwgZ2V0VGV4UGFyYW0oR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIEdMX1RFWFRVUkVfV1JBUF9U
KSk7CisKKyAgICAvLyAiV2hlbiA8dGFyZ2V0PiBpcyBURVhUVVJFX0VYVEVSTkFMX09FUyBvbmx5
IE5FQVJFU1QgYW5kIExJTkVBUiBhcmUgYWNjZXB0ZWQgYXMKKyAgICAvLyBURVhUVVJFX01JTl9G
SUxURVIsIG9ubHkgQ0xBTVBfVE9fRURHRSBpcyBhY2NlcHRlZCBhcyBURVhUVVJFX1dSQVBfUyBh
bmQgVEVYVFVSRV9XUkFQX1QsIGFuZAorICAgIC8vIG9ubHkgRkFMU0UgaXMgYWNjZXB0ZWQgYXMg
R0VORVJBVEVfTUlQTUFQLiBBdHRlbXB0aW5nIHRvIHNldCBvdGhlciB2YWx1ZXMgZm9yCisgICAg
Ly8gVEVYVFVSRV9NSU5fRklMVEVSLCBURVhUVVJFX1dSQVBfUywgVEVYVFVSRV9XUkFQX1QsIG9y
IEdFTkVSQVRFX01JUE1BUCB3aWxsIHJlc3VsdCBpbiBhbgorICAgIC8vIElOVkFMSURfRU5VTSBl
cnJvci4KKyAgICBHTGVudW0gdmFsaWRNaW5GaWx0ZXJzW117CisgICAgICAgIEdMX05FQVJFU1Qs
IEdMX0xJTkVBUiwKKyAgICB9OworICAgIGZvciAoYXV0byBtaW5GaWx0ZXIgOiB2YWxpZE1pbkZp
bHRlcnMpCisgICAgeworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9FWFRFUk5B
TF9PRVMsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgbWluRmlsdGVyKTsKKyAgICAgICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7CisgICAgfQorCisgICAgR0xlbnVtIGludmFsaWRNaW5GaWx0ZXJzW117
CisgICAgICAgIEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUiwgR0xfTkVBUkVTVF9NSVBNQVBfTkVB
UkVTVCwgR0xfTElORUFSX01JUE1BUF9MSU5FQVIsCisgICAgICAgIEdMX0xJTkVBUl9NSVBNQVBf
TkVBUkVTVCwKKyAgICB9OworICAgIGZvciAoYXV0byBtaW5GaWx0ZXIgOiBpbnZhbGlkTWluRmls
dGVycykKKyAgICB7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0VYVEVSTkFM
X09FUywgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBtaW5GaWx0ZXIpOworICAgICAgICBFWFBFQ1Rf
R0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICB9CisKKyAgICBHTGVudW0gdmFsaWRXcmFw
TW9kZXNbXXsKKyAgICAgICAgR0xfQ0xBTVBfVE9fRURHRSwKKyAgICB9OworICAgIGZvciAoYXV0
byBtaW5GaWx0ZXIgOiB2YWxpZFdyYXBNb2RlcykKKyAgICB7CisgICAgICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFX0VYVEVSTkFMX09FUywgR0xfVEVYVFVSRV9XUkFQX1MsIG1pbkZpbHRl
cik7CisgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgICAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIEdMX1RFWFRVUkVfV1JBUF9ULCBtaW5GaWx0ZXIp
OworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICB9CisKKyAgICBHTGVudW0gaW52
YWxpZFdyYXBNb2Rlc1tdeworICAgICAgICBHTF9SRVBFQVQsIEdMX01JUlJPUkVEX1JFUEVBVCwK
KyAgICB9OworICAgIGZvciAoYXV0byBtaW5GaWx0ZXIgOiBpbnZhbGlkV3JhcE1vZGVzKQorICAg
IHsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCBHTF9U
RVhUVVJFX1dSQVBfUywgbWluRmlsdGVyKTsKKyAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lO
VkFMSURfRU5VTSk7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0VYVEVSTkFM
X09FUywgR0xfVEVYVFVSRV9XUkFQX1QsIG1pbkZpbHRlcik7CisgICAgICAgIEVYUEVDVF9HTF9F
UlJPUihHTF9JTlZBTElEX0VOVU0pOworICAgIH0KKworICAgIC8vIFdoZW4gPHRhcmdldD4gaXMg
c2V0IHRvIFRFWFRVUkVfRVhURVJOQUxfT0VTLCBHZW5lcmF0ZU1pcG1hcCBhbHdheXMgZmFpbHMg
YW5kIGdlbmVyYXRlcyBhbgorICAgIC8vIElOVkFMSURfRU5VTSBlcnJvci4KKyAgICBnbEdlbmVy
YXRlTWlwbWFwKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTKTsKKyAgICBFWFBFQ1RfR0xfRVJST1Io
R0xfSU5WQUxJRF9FTlVNKTsKKworICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRleHR1cmUpOwor
fQorCisvLyBDaGVjayB2YWxpZGF0aW9uIGZyb20gdGhlIEdMX09FU19FR0xfaW1hZ2VfZXh0ZXJu
YWxfZXNzbDMgZXh0ZW5zaW9uCitURVNUX1AoSW1hZ2VUZXN0LCBWYWxpZGF0aW9uR0xFR0xJbWFn
ZUV4dGVybmFsRVNTTDMpCit7CisgICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9PRVNfRUdM
X2ltYWdlX2V4dGVybmFsX2Vzc2wzIikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRl
c3Qgc2tpcHBlZCBiZWNhdXNlIEdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwgaXMgbm90IGF2YWls
YWJsZS4iCisgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICAvLyBNYWtlIHN1cmUgdGhpcyBleHRlbnNpb24gaXMgbm90IGV4cG9zZWQg
d2l0aG91dCBFUzMuCisgICAgQVNTRVJUX0dFKGdldENsaWVudE1ham9yVmVyc2lvbigpLCAzKTsK
KworICAgIEdMdWludCB0ZXh0dXJlOworICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleHR1cmUpOwor
ICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIHRleHR1cmUpOworCisg
ICAgLy8gSXQgaXMgYW4gSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IgdG8gc2V0IHRoZSBURVhUVVJF
X0JBU0VfTEVWRUwgdG8gYSB2YWx1ZSBvdGhlciB0aGFuIHplcm8uCisgICAgZ2xUZXhQYXJhbWV0
ZXJpKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCBHTF9URVhUVVJFX0JBU0VfTEVWRUwsIDEpOwor
ICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7CisKKyAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwg
MTApOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7CisKKyAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIEdMX1RFWFRVUkVfQkFTRV9M
RVZFTCwgMCk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbERlbGV0ZVRleHR1
cmVzKDEsICZ0ZXh0dXJlKTsKK30KKworVEVTVF9QKEltYWdlVGVzdCwgU291cmNlMkRUYXJnZXQy
RCkKK3sKKyAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygpOworICAgIGlmICgh
ZXh0ZW5zaW9uRW5hYmxlZCgiT0VTX0VHTF9pbWFnZSIpIHx8CisgICAgICAgICFlZ2xEaXNwbGF5
RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfaW1hZ2VfYmFz
ZSIpIHx8CisgICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERp
c3BsYXkoKSwgIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSIpKQorICAgIHsKKyAgICAgICAg
c3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBPRVNfRUdMX2ltYWdlLCBFR0xfS0hS
X2ltYWdlX2Jhc2Ugb3IgIgorICAgICAgICAgICAgICAgICAgICAgIkVHTF9LSFJfZ2xfdGV4dHVy
ZV8yRF9pbWFnZSBpcyBub3QgYXZhaWxhYmxlLiIKKyAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6
ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdMdWJ5dGUgZGF0YVs0XSA9IHsy
NTUsIDAsIDI1NSwgMjU1fTsKKworICAgIC8vIENyZWF0ZSB0aGUgSW1hZ2UKKyAgICBHTHVpbnQg
c291cmNlOworICAgIEVHTEltYWdlS0hSIGltYWdlOworICAgIGNyZWF0ZUVHTEltYWdlMkRUZXh0
dXJlU291cmNlKDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGRhdGEsICZzb3VyY2Us
ICZpbWFnZSk7CisKKyAgICAvLyBDcmVhdGUgdGhlIHRhcmdldAorICAgIEdMdWludCB0YXJnZXQ7
CisgICAgY3JlYXRlRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkQoaW1hZ2UsICZ0YXJnZXQpOworCisg
ICAgLy8gRXhwZWN0IHRoYXQgdGhlIHRhcmdldCB0ZXh0dXJlIGhhcyB0aGUgc2FtZSBjb2xvciBh
cyB0aGUgc291cmNlIHRleHR1cmUKKyAgICB2ZXJpZnlSZXN1bHRzMkQodGFyZ2V0LCBkYXRhKTsK
KworICAgIC8vIENsZWFuIHVwCisgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmc291cmNlKTsKKyAg
ICBlZ2xEZXN0cm95SW1hZ2VLSFIod2luZG93LT5nZXREaXNwbGF5KCksIGltYWdlKTsKKyAgICBn
bERlbGV0ZVRleHR1cmVzKDEsICZ0YXJnZXQpOworfQorCitURVNUX1AoSW1hZ2VUZXN0LCBTb3Vy
Y2UyRFRhcmdldFJlbmRlcmJ1ZmZlcikKK3sKKyAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVH
TFdpbmRvdygpOworICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiT0VTX0VHTF9pbWFnZSIpIHx8
CisgICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXko
KSwgIkVHTF9LSFJfaW1hZ2VfYmFzZSIpIHx8CisgICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9u
RW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFn
ZSIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBP
RVNfRUdMX2ltYWdlLCBFR0xfS0hSX2ltYWdlX2Jhc2Ugb3IgIgorICAgICAgICAgICAgICAgICAg
ICAgIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSBpcyBub3QgYXZhaWxhYmxlLiIKKyAgICAg
ICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IEdMdWJ5dGUgZGF0YVs0XSA9IHsyNTUsIDAsIDI1NSwgMjU1fTsKKworICAgIC8vIENyZWF0ZSB0
aGUgSW1hZ2UKKyAgICBHTHVpbnQgc291cmNlOworICAgIEVHTEltYWdlS0hSIGltYWdlOworICAg
IGNyZWF0ZUVHTEltYWdlMkRUZXh0dXJlU291cmNlKDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVE
X0JZVEUsIGRhdGEsICZzb3VyY2UsICZpbWFnZSk7CisKKyAgICAvLyBDcmVhdGUgdGhlIHRhcmdl
dAorICAgIEdMdWludCB0YXJnZXQ7CisgICAgY3JlYXRlRUdMSW1hZ2VUYXJnZXRSZW5kZXJidWZm
ZXIoaW1hZ2UsICZ0YXJnZXQpOworCisgICAgLy8gRXhwZWN0IHRoYXQgdGhlIHRhcmdldCByZW5k
ZXJidWZmZXIgaGFzIHRoZSBzYW1lIGNvbG9yIGFzIHRoZSBzb3VyY2UgdGV4dHVyZQorICAgIHZl
cmlmeVJlc3VsdHNSZW5kZXJidWZmZXIodGFyZ2V0LCBkYXRhKTsKKworICAgIC8vIENsZWFuIHVw
CisgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmc291cmNlKTsKKyAgICBlZ2xEZXN0cm95SW1hZ2VL
SFIod2luZG93LT5nZXREaXNwbGF5KCksIGltYWdlKTsKKyAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZl
cnMoMSwgJnRhcmdldCk7Cit9CisKK1RFU1RfUChJbWFnZVRlc3QsIFNvdXJjZTJEVGFyZ2V0RXh0
ZXJuYWwpCit7CisgICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKKyAgICBp
ZiAoIWV4dGVuc2lvbkVuYWJsZWQoIk9FU19FR0xfaW1hZ2UiKSB8fCAhZXh0ZW5zaW9uRW5hYmxl
ZCgiT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpIHx8CisgICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5z
aW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfaW1hZ2VfYmFzZSIpIHx8
CisgICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXko
KSwgIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSIpKQorICAgIHsKKyAgICAgICAgc3RkOjpj
b3V0CisgICAgICAgICAgICA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgT0VTX0VHTF9pbWFnZSwg
T0VTX0VHTF9pbWFnZV9leHRlcm5hbCwgRUdMX0tIUl9pbWFnZV9iYXNlIG9yICIKKyAgICAgICAg
ICAgICAgICJFR0xfS0hSX2dsX3RleHR1cmVfMkRfaW1hZ2UgaXMgbm90IGF2YWlsYWJsZS4iCisg
ICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBH
THVieXRlIGRhdGFbNF0gPSB7MjU1LCAwLCAyNTUsIDI1NX07CisKKyAgICAvLyBDcmVhdGUgdGhl
IEltYWdlCisgICAgR0x1aW50IHNvdXJjZTsKKyAgICBFR0xJbWFnZUtIUiBpbWFnZTsKKyAgICBj
cmVhdGVFR0xJbWFnZTJEVGV4dHVyZVNvdXJjZSgxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9C
WVRFLCBkYXRhLCAmc291cmNlLCAmaW1hZ2UpOworCisgICAgLy8gQ3JlYXRlIHRoZSB0YXJnZXQK
KyAgICBHTHVpbnQgdGFyZ2V0OworICAgIGNyZWF0ZUVHTEltYWdlVGFyZ2V0VGV4dHVyZUV4dGVy
bmFsKGltYWdlLCAmdGFyZ2V0KTsKKworICAgIC8vIEV4cGVjdCB0aGF0IHRoZSB0YXJnZXQgcmVu
ZGVyYnVmZmVyIGhhcyB0aGUgc2FtZSBjb2xvciBhcyB0aGUgc291cmNlIHRleHR1cmUKKyAgICB2
ZXJpZnlSZXN1bHRzRXh0ZXJuYWwodGFyZ2V0LCBkYXRhKTsKKworICAgIC8vIENsZWFuIHVwCisg
ICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmc291cmNlKTsKKyAgICBlZ2xEZXN0cm95SW1hZ2VLSFIo
d2luZG93LT5nZXREaXNwbGF5KCksIGltYWdlKTsKKyAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMo
MSwgJnRhcmdldCk7Cit9CisKK1RFU1RfUChJbWFnZVRlc3RFUzMsIFNvdXJjZTJEVGFyZ2V0RXh0
ZXJuYWxFU1NMMykKK3sKKyAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygpOwor
ICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiT0VTX0VHTF9pbWFnZSIpIHx8ICFleHRlbnNpb25F
bmFibGVkKCJPRVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vzc2wzIikgfHwKKyAgICAgICAgIWVnbERp
c3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9pbWFn
ZV9iYXNlIikgfHwKKyAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+
Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9nbF90ZXh0dXJlXzJEX2ltYWdlIikpCisgICAgeworICAg
ICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIE9FU19FR0xfaW1hZ2UsIE9F
U19FR0xfaW1hZ2VfZXh0ZXJuYWxfZXNzbDMsICIKKyAgICAgICAgICAgICAgICAgICAgICJFR0xf
S0hSX2ltYWdlX2Jhc2Ugb3IgIgorICAgICAgICAgICAgICAgICAgICAgIkVHTF9LSFJfZ2xfdGV4
dHVyZV8yRF9pbWFnZSBpcyBub3QgYXZhaWxhYmxlLiIKKyAgICAgICAgICAgICAgICAgIDw8IHN0
ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdMdWJ5dGUgZGF0YVs0XSA9
IHsyNTUsIDAsIDI1NSwgMjU1fTsKKworICAgIC8vIENyZWF0ZSB0aGUgSW1hZ2UKKyAgICBHTHVp
bnQgc291cmNlOworICAgIEVHTEltYWdlS0hSIGltYWdlOworICAgIGNyZWF0ZUVHTEltYWdlMkRU
ZXh0dXJlU291cmNlKDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGRhdGEsICZzb3Vy
Y2UsICZpbWFnZSk7CisKKyAgICAvLyBDcmVhdGUgdGhlIHRhcmdldAorICAgIEdMdWludCB0YXJn
ZXQ7CisgICAgY3JlYXRlRUdMSW1hZ2VUYXJnZXRUZXh0dXJlRXh0ZXJuYWwoaW1hZ2UsICZ0YXJn
ZXQpOworCisgICAgLy8gRXhwZWN0IHRoYXQgdGhlIHRhcmdldCByZW5kZXJidWZmZXIgaGFzIHRo
ZSBzYW1lIGNvbG9yIGFzIHRoZSBzb3VyY2UgdGV4dHVyZQorICAgIHZlcmlmeVJlc3VsdHNFeHRl
cm5hbEVTU0wzKHRhcmdldCwgZGF0YSk7CisKKyAgICAvLyBDbGVhbiB1cAorICAgIGdsRGVsZXRl
VGV4dHVyZXMoMSwgJnNvdXJjZSk7CisgICAgZWdsRGVzdHJveUltYWdlS0hSKHdpbmRvdy0+Z2V0
RGlzcGxheSgpLCBpbWFnZSk7CisgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZ0YXJnZXQp
OworfQorCitURVNUX1AoSW1hZ2VUZXN0LCBTb3VyY2VDdWJlVGFyZ2V0MkQpCit7CisgICAgRUdM
V2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKKyAgICBpZiAoIWV4dGVuc2lvbkVuYWJs
ZWQoIk9FU19FR0xfaW1hZ2UiKSB8fAorICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJs
ZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2ltYWdlX2Jhc2UiKSB8fAorICAgICAg
ICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xf
S0hSX2dsX3RleHR1cmVfY3ViZW1hcF9pbWFnZSIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0
IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBPRVNfRUdMX2ltYWdlLCBFR0xfS0hSX2ltYWdlX2Jh
c2Ugb3IgIgorICAgICAgICAgICAgICAgICAgICAgIkVHTF9LSFJfZ2xfdGV4dHVyZV9jdWJlbWFw
X2ltYWdlIGlzIG5vdCBhdmFpbGFibGUuIgorICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRs
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR0x1Ynl0ZSBkYXRhWzI0XSA9IHsKKyAg
ICAgICAgMjU1LCAwLCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAsIDAsIDI1
NSwKKyAgICAgICAgMCwgICAwLCAyNTUsIDI1NSwgMCwgICAyNTUsIDAsICAgMjU1LCAwLCAgIDAs
IDAsIDI1NSwKKyAgICB9OworCisgICAgZm9yIChFR0xlbnVtIGZhY2VJZHggPSAwOyBmYWNlSWR4
IDwgNjsgZmFjZUlkeCsrKQorICAgIHsKKyAgICAgICAgLy8gQ3JlYXRlIHRoZSBJbWFnZQorICAg
ICAgICBHTHVpbnQgc291cmNlOworICAgICAgICBFR0xJbWFnZUtIUiBpbWFnZTsKKyAgICAgICAg
Y3JlYXRlRUdMSW1hZ2VDdWJlbWFwVGV4dHVyZVNvdXJjZSgKKyAgICAgICAgICAgIDEsIDEsIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCAqPihkYXRh
KSwgc2l6ZW9mKEdMdWJ5dGUpICogNCwKKyAgICAgICAgICAgIEVHTF9HTF9URVhUVVJFX0NVQkVf
TUFQX1BPU0lUSVZFX1hfS0hSICsgZmFjZUlkeCwgJnNvdXJjZSwgJmltYWdlKTsKKworICAgICAg
ICAvLyBDcmVhdGUgdGhlIHRhcmdldAorICAgICAgICBHTHVpbnQgdGFyZ2V0OworICAgICAgICBj
cmVhdGVFR0xJbWFnZVRhcmdldFRleHR1cmUyRChpbWFnZSwgJnRhcmdldCk7CisKKyAgICAgICAg
Ly8gRXhwZWN0IHRoYXQgdGhlIHRhcmdldCB0ZXh0dXJlIGhhcyB0aGUgc2FtZSBjb2xvciBhcyB0
aGUgc291cmNlIHRleHR1cmUKKyAgICAgICAgdmVyaWZ5UmVzdWx0czJEKHRhcmdldCwgJmRhdGFb
ZmFjZUlkeCAqIDRdKTsKKworICAgICAgICAvLyBDbGVhbiB1cAorICAgICAgICBnbERlbGV0ZVRl
eHR1cmVzKDEsICZzb3VyY2UpOworICAgICAgICBlZ2xEZXN0cm95SW1hZ2VLSFIod2luZG93LT5n
ZXREaXNwbGF5KCksIGltYWdlKTsKKyAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGFyZ2V0
KTsKKyAgICB9Cit9CisKK1RFU1RfUChJbWFnZVRlc3QsIFNvdXJjZUN1YmVUYXJnZXRSZW5kZXJi
dWZmZXIpCit7CisgICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKKyAgICBp
ZiAoIWV4dGVuc2lvbkVuYWJsZWQoIk9FU19FR0xfaW1hZ2UiKSB8fAorICAgICAgICAhZWdsRGlz
cGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2ltYWdl
X2Jhc2UiKSB8fAorICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5n
ZXREaXNwbGF5KCksICJFR0xfS0hSX2dsX3RleHR1cmVfY3ViZW1hcF9pbWFnZSIpKQorICAgIHsK
KyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBPRVNfRUdMX2ltYWdl
LCBFR0xfS0hSX2ltYWdlX2Jhc2Ugb3IgIgorICAgICAgICAgICAgICAgICAgICAgIkVHTF9LSFJf
Z2xfdGV4dHVyZV9jdWJlbWFwX2ltYWdlIGlzIG5vdCBhdmFpbGFibGUuIgorICAgICAgICAgICAg
ICAgICAgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR0x1Ynl0
ZSBkYXRhWzI0XSA9IHsKKyAgICAgICAgMjU1LCAwLCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwg
MjU1LCAyNTUsIDAsIDAsIDI1NSwKKyAgICAgICAgMCwgICAwLCAyNTUsIDI1NSwgMCwgICAyNTUs
IDAsICAgMjU1LCAwLCAgIDAsIDAsIDI1NSwKKyAgICB9OworCisgICAgZm9yIChFR0xlbnVtIGZh
Y2VJZHggPSAwOyBmYWNlSWR4IDwgNjsgZmFjZUlkeCsrKQorICAgIHsKKyAgICAgICAgLy8gQ3Jl
YXRlIHRoZSBJbWFnZQorICAgICAgICBHTHVpbnQgc291cmNlOworICAgICAgICBFR0xJbWFnZUtI
UiBpbWFnZTsKKyAgICAgICAgY3JlYXRlRUdMSW1hZ2VDdWJlbWFwVGV4dHVyZVNvdXJjZSgKKyAg
ICAgICAgICAgIDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCAqPihkYXRhKSwgc2l6ZW9mKEdMdWJ5dGUpICogNCwKKyAgICAgICAgICAgIEVH
TF9HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1hfS0hSICsgZmFjZUlkeCwgJnNvdXJjZSwg
JmltYWdlKTsKKworICAgICAgICAvLyBDcmVhdGUgdGhlIHRhcmdldAorICAgICAgICBHTHVpbnQg
dGFyZ2V0OworICAgICAgICBjcmVhdGVFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlcihpbWFnZSwg
JnRhcmdldCk7CisKKyAgICAgICAgLy8gRXhwZWN0IHRoYXQgdGhlIHRhcmdldCB0ZXh0dXJlIGhh
cyB0aGUgc2FtZSBjb2xvciBhcyB0aGUgc291cmNlIHRleHR1cmUKKyAgICAgICAgdmVyaWZ5UmVz
dWx0c1JlbmRlcmJ1ZmZlcih0YXJnZXQsICZkYXRhW2ZhY2VJZHggKiA0XSk7CisKKyAgICAgICAg
Ly8gQ2xlYW4gdXAKKyAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmc291cmNlKTsKKyAgICAg
ICAgZWdsRGVzdHJveUltYWdlS0hSKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCBpbWFnZSk7CisgICAg
ICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmdGFyZ2V0KTsKKyAgICB9Cit9CisKKy8vIFRl
c3QgY3ViZW1hcCAtPiBleHRlcm5hbCB0ZXh0dXJlIEVHTCBpbWFnZXMuCitURVNUX1AoSW1hZ2VU
ZXN0LCBTb3VyY2VDdWJlVGFyZ2V0RXh0ZXJuYWwpCit7CisgICAgRUdMV2luZG93ICp3aW5kb3cg
PSBnZXRFR0xXaW5kb3coKTsKKyAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIk9FU19FR0xfaW1h
Z2UiKSB8fCAhZXh0ZW5zaW9uRW5hYmxlZCgiT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpIHx8Cisg
ICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwg
IkVHTF9LSFJfaW1hZ2VfYmFzZSIpIHx8CisgICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5h
YmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfZ2xfdGV4dHVyZV9jdWJlbWFwX2lt
YWdlIikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQKKyAgICAgICAgICAgIDw8ICJUZXN0IHNr
aXBwZWQgYmVjYXVzZSBPRVNfRUdMX2ltYWdlLCBPRVNfRUdMX2ltYWdlX2V4dGVybmFsLCBFR0xf
S0hSX2ltYWdlX2Jhc2Ugb3IgIgorICAgICAgICAgICAgICAgIkVHTF9LSFJfZ2xfdGV4dHVyZV9j
dWJlbWFwX2ltYWdlIGlzIG5vdCBhdmFpbGFibGUuIgorICAgICAgICAgICAgPDwgc3RkOjplbmRs
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR0x1Ynl0ZSBkYXRhWzI0XSA9IHsKKyAg
ICAgICAgMjU1LCAwLCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAsIDAsIDI1
NSwKKyAgICAgICAgMCwgICAwLCAyNTUsIDI1NSwgMCwgICAyNTUsIDAsICAgMjU1LCAwLCAgIDAs
IDAsIDI1NSwKKyAgICB9OworCisgICAgZm9yIChFR0xlbnVtIGZhY2VJZHggPSAwOyBmYWNlSWR4
IDwgNjsgZmFjZUlkeCsrKQorICAgIHsKKyAgICAgICAgLy8gQ3JlYXRlIHRoZSBJbWFnZQorICAg
ICAgICBHTHVpbnQgc291cmNlOworICAgICAgICBFR0xJbWFnZUtIUiBpbWFnZTsKKyAgICAgICAg
Y3JlYXRlRUdMSW1hZ2VDdWJlbWFwVGV4dHVyZVNvdXJjZSgKKyAgICAgICAgICAgIDEsIDEsIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCAqPihkYXRh
KSwgc2l6ZW9mKEdMdWJ5dGUpICogNCwKKyAgICAgICAgICAgIEVHTF9HTF9URVhUVVJFX0NVQkVf
TUFQX1BPU0lUSVZFX1hfS0hSICsgZmFjZUlkeCwgJnNvdXJjZSwgJmltYWdlKTsKKworICAgICAg
ICAvLyBDcmVhdGUgdGhlIHRhcmdldAorICAgICAgICBHTHVpbnQgdGFyZ2V0OworICAgICAgICBj
cmVhdGVFR0xJbWFnZVRhcmdldFRleHR1cmVFeHRlcm5hbChpbWFnZSwgJnRhcmdldCk7CisKKyAg
ICAgICAgLy8gRXhwZWN0IHRoYXQgdGhlIHRhcmdldCB0ZXh0dXJlIGhhcyB0aGUgc2FtZSBjb2xv
ciBhcyB0aGUgc291cmNlIHRleHR1cmUKKyAgICAgICAgdmVyaWZ5UmVzdWx0c0V4dGVybmFsKHRh
cmdldCwgJmRhdGFbZmFjZUlkeCAqIDRdKTsKKworICAgICAgICAvLyBDbGVhbiB1cAorICAgICAg
ICBnbERlbGV0ZVRleHR1cmVzKDEsICZzb3VyY2UpOworICAgICAgICBlZ2xEZXN0cm95SW1hZ2VL
SFIod2luZG93LT5nZXREaXNwbGF5KCksIGltYWdlKTsKKyAgICAgICAgZ2xEZWxldGVSZW5kZXJi
dWZmZXJzKDEsICZ0YXJnZXQpOworICAgIH0KK30KKworLy8gVGVzdCBjdWJlbWFwIC0+IGV4dGVy
bmFsIHRleHR1cmUgRUdMIGltYWdlcyB1c2luZyBFU1NMMyBzaGFkZXJzLgorVEVTVF9QKEltYWdl
VGVzdEVTMywgU291cmNlQ3ViZVRhcmdldEV4dGVybmFsRVNTTDMpCit7CisgICAgRUdMV2luZG93
ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKKyAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIk9F
U19FR0xfaW1hZ2UiKSB8fCAhZXh0ZW5zaW9uRW5hYmxlZCgiT0VTX0VHTF9pbWFnZV9leHRlcm5h
bF9lc3NsMyIpIHx8CisgICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ct
PmdldERpc3BsYXkoKSwgIkVHTF9LSFJfaW1hZ2VfYmFzZSIpIHx8CisgICAgICAgICFlZ2xEaXNw
bGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfZ2xfdGV4
dHVyZV9jdWJlbWFwX2ltYWdlIikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qg
c2tpcHBlZCBiZWNhdXNlIE9FU19FR0xfaW1hZ2UsIE9FU19FR0xfaW1hZ2VfZXh0ZXJuYWxfZXNz
bDMsICIKKyAgICAgICAgICAgICAgICAgICAgICJFR0xfS0hSX2ltYWdlX2Jhc2Ugb3IgIgorICAg
ICAgICAgICAgICAgICAgICAgIkVHTF9LSFJfZ2xfdGV4dHVyZV9jdWJlbWFwX2ltYWdlIGlzIG5v
dCBhdmFpbGFibGUuIgorICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgR0x1Ynl0ZSBkYXRhWzI0XSA9IHsKKyAgICAgICAgMjU1LCAw
LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAsIDAsIDI1NSwKKyAgICAgICAg
MCwgICAwLCAyNTUsIDI1NSwgMCwgICAyNTUsIDAsICAgMjU1LCAwLCAgIDAsIDAsIDI1NSwKKyAg
ICB9OworCisgICAgZm9yIChFR0xlbnVtIGZhY2VJZHggPSAwOyBmYWNlSWR4IDwgNjsgZmFjZUlk
eCsrKQorICAgIHsKKyAgICAgICAgLy8gQ3JlYXRlIHRoZSBJbWFnZQorICAgICAgICBHTHVpbnQg
c291cmNlOworICAgICAgICBFR0xJbWFnZUtIUiBpbWFnZTsKKyAgICAgICAgY3JlYXRlRUdMSW1h
Z2VDdWJlbWFwVGV4dHVyZVNvdXJjZSgKKyAgICAgICAgICAgIDEsIDEsIEdMX1JHQkEsIEdMX1VO
U0lHTkVEX0JZVEUsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCAqPihkYXRhKSwgc2l6ZW9mKEdM
dWJ5dGUpICogNCwKKyAgICAgICAgICAgIEVHTF9HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZF
X1hfS0hSICsgZmFjZUlkeCwgJnNvdXJjZSwgJmltYWdlKTsKKworICAgICAgICAvLyBDcmVhdGUg
dGhlIHRhcmdldAorICAgICAgICBHTHVpbnQgdGFyZ2V0OworICAgICAgICBjcmVhdGVFR0xJbWFn
ZVRhcmdldFRleHR1cmVFeHRlcm5hbChpbWFnZSwgJnRhcmdldCk7CisKKyAgICAgICAgLy8gRXhw
ZWN0IHRoYXQgdGhlIHRhcmdldCB0ZXh0dXJlIGhhcyB0aGUgc2FtZSBjb2xvciBhcyB0aGUgc291
cmNlIHRleHR1cmUKKyAgICAgICAgdmVyaWZ5UmVzdWx0c0V4dGVybmFsRVNTTDModGFyZ2V0LCAm
ZGF0YVtmYWNlSWR4ICogNF0pOworCisgICAgICAgIC8vIENsZWFuIHVwCisgICAgICAgIGdsRGVs
ZXRlVGV4dHVyZXMoMSwgJnNvdXJjZSk7CisgICAgICAgIGVnbERlc3Ryb3lJbWFnZUtIUih3aW5k
b3ctPmdldERpc3BsYXkoKSwgaW1hZ2UpOworICAgICAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMo
MSwgJnRhcmdldCk7CisgICAgfQorfQorCitURVNUX1AoSW1hZ2VUZXN0LCBTb3VyY2UzRFRhcmdl
dFRleHR1cmUpCit7CisgICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKKyAg
ICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIk9FU19FR0xfaW1hZ2UiKSB8fAorICAgICAgICAhZWds
RGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2lt
YWdlX2Jhc2UiKSB8fAorICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93
LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2dsX3RleHR1cmVfM0RfaW1hZ2UiKSkKKyAgICB7Cisg
ICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgT0VTX0VHTF9pbWFnZSwg
RUdMX0tIUl9pbWFnZV9iYXNlIG9yICIKKyAgICAgICAgICAgICAgICAgICAgICJFR0xfS0hSX2ds
X3RleHR1cmVfM0RfaW1hZ2UgaXMgbm90IGF2YWlsYWJsZS4iCisgICAgICAgICAgICAgICAgICA8
PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZ2V0Q2xpZW50
TWFqb3JWZXJzaW9uKCkgPCAzICYmICFleHRlbnNpb25FbmFibGVkKCJHTF9PRVNfdGV4dHVyZV8z
RCIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSAz
RCB0ZXh0dXJlcyBhcmUgbm90IGF2YWlsYWJsZS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGNvbnN0IHNpemVfdCBkZXB0aCAgICAgID0gMjsKKyAgICBHTHVi
eXRlIGRhdGFbNCAqIGRlcHRoXSA9IHsKKyAgICAgICAgMjU1LCAwLCAyNTUsIDI1NSwgMjU1LCAy
NTUsIDAsIDI1NSwKKyAgICB9OworCisgICAgZm9yIChzaXplX3QgbGF5ZXIgPSAwOyBsYXllciA8
IGRlcHRoOyBsYXllcisrKQorICAgIHsKKyAgICAgICAgLy8gQ3JlYXRlIHRoZSBJbWFnZQorICAg
ICAgICBHTHVpbnQgc291cmNlOworICAgICAgICBFR0xJbWFnZUtIUiBpbWFnZTsKKyAgICAgICAg
Y3JlYXRlRUdMSW1hZ2UzRFRleHR1cmVTb3VyY2UoMSwgMSwgZGVwdGgsIEdMX1JHQkEsIEdMX1VO
U0lHTkVEX0JZVEUsIGRhdGEsIGxheWVyLCAmc291cmNlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmaW1hZ2UpOworCisgICAgICAgIC8vIENyZWF0ZSB0aGUgdGFyZ2V0
CisgICAgICAgIEdMdWludCB0YXJnZXQ7CisgICAgICAgIGNyZWF0ZUVHTEltYWdlVGFyZ2V0VGV4
dHVyZTJEKGltYWdlLCAmdGFyZ2V0KTsKKworICAgICAgICAvLyBFeHBlY3QgdGhhdCB0aGUgdGFy
Z2V0IHJlbmRlcmJ1ZmZlciBoYXMgdGhlIHNhbWUgY29sb3IgYXMgdGhlIHNvdXJjZSB0ZXh0dXJl
CisgICAgICAgIHZlcmlmeVJlc3VsdHMyRCh0YXJnZXQsICZkYXRhW2xheWVyICogNF0pOworCisg
ICAgICAgIC8vIENsZWFuIHVwCisgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnNvdXJjZSk7
CisgICAgICAgIGVnbERlc3Ryb3lJbWFnZUtIUih3aW5kb3ctPmdldERpc3BsYXkoKSwgaW1hZ2Up
OworICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0YXJnZXQpOworICAgIH0KK30KKworVEVT
VF9QKEltYWdlVGVzdCwgU291cmNlM0RUYXJnZXRSZW5kZXJidWZmZXIpCit7CisgICAgRUdMV2lu
ZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKKyAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQo
Ik9FU19FR0xfaW1hZ2UiKSB8fAorICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQo
d2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2ltYWdlX2Jhc2UiKSB8fAorICAgICAgICAh
ZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hS
X2dsX3RleHR1cmVfM0RfaW1hZ2UiKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVz
dCBza2lwcGVkIGJlY2F1c2UgT0VTX0VHTF9pbWFnZSwgRUdMX0tIUl9pbWFnZV9iYXNlIG9yICIK
KyAgICAgICAgICAgICAgICAgICAgICJFR0xfS0hSX2dsX3RleHR1cmVfM0RfaW1hZ2UgaXMgbm90
IGF2YWlsYWJsZS4iCisgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFl
eHRlbnNpb25FbmFibGVkKCJHTF9PRVNfdGV4dHVyZV8zRCIpKQorICAgIHsKKyAgICAgICAgc3Rk
Ojpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSAzRCB0ZXh0dXJlcyBhcmUgbm90IGF2YWls
YWJsZS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0
IHNpemVfdCBkZXB0aCAgICAgID0gMjsKKyAgICBHTHVieXRlIGRhdGFbNCAqIGRlcHRoXSA9IHsK
KyAgICAgICAgMjU1LCAwLCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAsIDI1NSwKKyAgICB9OworCisg
ICAgZm9yIChzaXplX3QgbGF5ZXIgPSAwOyBsYXllciA8IGRlcHRoOyBsYXllcisrKQorICAgIHsK
KyAgICAgICAgLy8gQ3JlYXRlIHRoZSBJbWFnZQorICAgICAgICBHTHVpbnQgc291cmNlOworICAg
ICAgICBFR0xJbWFnZUtIUiBpbWFnZTsKKyAgICAgICAgY3JlYXRlRUdMSW1hZ2UzRFRleHR1cmVT
b3VyY2UoMSwgMSwgZGVwdGgsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGRhdGEsIGxheWVy
LCAmc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW1hZ2Up
OworCisgICAgICAgIC8vIENyZWF0ZSB0aGUgdGFyZ2V0CisgICAgICAgIEdMdWludCB0YXJnZXQ7
CisgICAgICAgIGNyZWF0ZUVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyKGltYWdlLCAmdGFyZ2V0
KTsKKworICAgICAgICAvLyBFeHBlY3QgdGhhdCB0aGUgdGFyZ2V0IHJlbmRlcmJ1ZmZlciBoYXMg
dGhlIHNhbWUgY29sb3IgYXMgdGhlIHNvdXJjZSB0ZXh0dXJlCisgICAgICAgIHZlcmlmeVJlc3Vs
dHNSZW5kZXJidWZmZXIodGFyZ2V0LCAmZGF0YVtsYXllciAqIDRdKTsKKworICAgICAgICAvLyBD
bGVhbiB1cAorICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZzb3VyY2UpOworICAgICAgICBl
Z2xEZXN0cm95SW1hZ2VLSFIod2luZG93LT5nZXREaXNwbGF5KCksIGltYWdlKTsKKyAgICAgICAg
Z2xEZWxldGVUZXh0dXJlcygxLCAmdGFyZ2V0KTsKKyAgICB9Cit9CisKKy8vIFRlc3QgM0QgLT4g
ZXh0ZXJuYWwgdGV4dHVyZSBFR0wgaW1hZ2VzLgorVEVTVF9QKEltYWdlVGVzdCwgU291cmNlM0RU
YXJnZXRFeHRlcm5hbCkKK3sKKyAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygp
OworICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiT0VTX0VHTF9pbWFnZSIpIHx8ICFleHRlbnNp
b25FbmFibGVkKCJPRVNfRUdMX2ltYWdlX2V4dGVybmFsIikgfHwKKyAgICAgICAgIWVnbERpc3Bs
YXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9pbWFnZV9i
YXNlIikgfHwKKyAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0
RGlzcGxheSgpLCAiRUdMX0tIUl9nbF90ZXh0dXJlXzNEX2ltYWdlIikpCisgICAgeworICAgICAg
ICBzdGQ6OmNvdXQKKyAgICAgICAgICAgIDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBPRVNfRUdM
X2ltYWdlLCBPRVNfRUdMX2ltYWdlX2V4dGVybmFsLCBFR0xfS0hSX2ltYWdlX2Jhc2Ugb3IgIgor
ICAgICAgICAgICAgICAgIkVHTF9LSFJfZ2xfdGV4dHVyZV8zRF9pbWFnZSBpcyBub3QgYXZhaWxh
YmxlLiIKKyAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMgJiYgIWV4dGVuc2lvbkVuYWJs
ZWQoIkdMX09FU190ZXh0dXJlXzNEIikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRl
c3Qgc2tpcHBlZCBiZWNhdXNlIDNEIHRleHR1cmVzIGFyZSBub3QgYXZhaWxhYmxlLiIgPDwgc3Rk
OjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3Qgc2l6ZV90IGRlcHRo
ICAgICAgPSAyOworICAgIEdMdWJ5dGUgZGF0YVs0ICogZGVwdGhdID0geworICAgICAgICAyNTUs
IDAsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCwgMjU1LAorICAgIH07CisKKyAgICBmb3IgKHNpemVf
dCBsYXllciA9IDA7IGxheWVyIDwgZGVwdGg7IGxheWVyKyspCisgICAgeworICAgICAgICAvLyBD
cmVhdGUgdGhlIEltYWdlCisgICAgICAgIEdMdWludCBzb3VyY2U7CisgICAgICAgIEVHTEltYWdl
S0hSIGltYWdlOworICAgICAgICBjcmVhdGVFR0xJbWFnZTNEVGV4dHVyZVNvdXJjZSgxLCAxLCBk
ZXB0aCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgZGF0YSwgbGF5ZXIsICZzb3VyY2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbWFnZSk7CisKKyAgICAgICAg
Ly8gQ3JlYXRlIHRoZSB0YXJnZXQKKyAgICAgICAgR0x1aW50IHRhcmdldDsKKyAgICAgICAgY3Jl
YXRlRUdMSW1hZ2VUYXJnZXRUZXh0dXJlRXh0ZXJuYWwoaW1hZ2UsICZ0YXJnZXQpOworCisgICAg
ICAgIC8vIEV4cGVjdCB0aGF0IHRoZSB0YXJnZXQgcmVuZGVyYnVmZmVyIGhhcyB0aGUgc2FtZSBj
b2xvciBhcyB0aGUgc291cmNlIHRleHR1cmUKKyAgICAgICAgdmVyaWZ5UmVzdWx0c0V4dGVybmFs
KHRhcmdldCwgJmRhdGFbbGF5ZXIgKiA0XSk7CisKKyAgICAgICAgLy8gQ2xlYW4gdXAKKyAgICAg
ICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmc291cmNlKTsKKyAgICAgICAgZWdsRGVzdHJveUltYWdl
S0hSKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCBpbWFnZSk7CisgICAgICAgIGdsRGVsZXRlVGV4dHVy
ZXMoMSwgJnRhcmdldCk7CisgICAgfQorfQorCisvLyBUZXN0IDNEIC0+IGV4dGVybmFsIHRleHR1
cmUgRUdMIGltYWdlcyB1c2luZyBFU1NMMyBzaGFkZXJzLgorVEVTVF9QKEltYWdlVGVzdEVTMywg
U291cmNlM0RUYXJnZXRFeHRlcm5hbEVTU0wzKQoreworICAgIEVHTFdpbmRvdyAqd2luZG93ID0g
Z2V0RUdMV2luZG93KCk7CisgICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJPRVNfRUdMX2ltYWdl
IikgfHwgIWV4dGVuc2lvbkVuYWJsZWQoIk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWxfZXNzbDMiKSB8
fAorICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5
KCksICJFR0xfS0hSX2ltYWdlX2Jhc2UiKSB8fAorICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lv
bkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2dsX3RleHR1cmVfM0RfaW1h
Z2UiKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2Ug
T0VTX0VHTF9pbWFnZSwgT0VTX0VHTF9pbWFnZV9leHRlcm5hbF9lc3NsMywgIgorICAgICAgICAg
ICAgICAgICAgICAgIkVHTF9LSFJfaW1hZ2VfYmFzZSBvciAiCisgICAgICAgICAgICAgICAgICAg
ICAiRUdMX0tIUl9nbF90ZXh0dXJlXzNEX2ltYWdlIGlzIG5vdCBhdmFpbGFibGUuIgorICAgICAg
ICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAmJiAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xf
T0VTX3RleHR1cmVfM0QiKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lw
cGVkIGJlY2F1c2UgM0QgdGV4dHVyZXMgYXJlIG5vdCBhdmFpbGFibGUuIiA8PCBzdGQ6OmVuZGw7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCBzaXplX3QgZGVwdGggICAgICA9
IDI7CisgICAgR0x1Ynl0ZSBkYXRhWzQgKiBkZXB0aF0gPSB7CisgICAgICAgIDI1NSwgMCwgMjU1
LCAyNTUsIDI1NSwgMjU1LCAwLCAyNTUsCisgICAgfTsKKworICAgIGZvciAoc2l6ZV90IGxheWVy
ID0gMDsgbGF5ZXIgPCBkZXB0aDsgbGF5ZXIrKykKKyAgICB7CisgICAgICAgIC8vIENyZWF0ZSB0
aGUgSW1hZ2UKKyAgICAgICAgR0x1aW50IHNvdXJjZTsKKyAgICAgICAgRUdMSW1hZ2VLSFIgaW1h
Z2U7CisgICAgICAgIGNyZWF0ZUVHTEltYWdlM0RUZXh0dXJlU291cmNlKDEsIDEsIGRlcHRoLCBH
TF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBkYXRhLCBsYXllciwgJnNvdXJjZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmltYWdlKTsKKworICAgICAgICAvLyBDcmVh
dGUgdGhlIHRhcmdldAorICAgICAgICBHTHVpbnQgdGFyZ2V0OworICAgICAgICBjcmVhdGVFR0xJ
bWFnZVRhcmdldFRleHR1cmVFeHRlcm5hbChpbWFnZSwgJnRhcmdldCk7CisKKyAgICAgICAgLy8g
RXhwZWN0IHRoYXQgdGhlIHRhcmdldCByZW5kZXJidWZmZXIgaGFzIHRoZSBzYW1lIGNvbG9yIGFz
IHRoZSBzb3VyY2UgdGV4dHVyZQorICAgICAgICB2ZXJpZnlSZXN1bHRzRXh0ZXJuYWxFU1NMMyh0
YXJnZXQsICZkYXRhW2xheWVyICogNF0pOworCisgICAgICAgIC8vIENsZWFuIHVwCisgICAgICAg
IGdsRGVsZXRlVGV4dHVyZXMoMSwgJnNvdXJjZSk7CisgICAgICAgIGVnbERlc3Ryb3lJbWFnZUtI
Uih3aW5kb3ctPmdldERpc3BsYXkoKSwgaW1hZ2UpOworICAgICAgICBnbERlbGV0ZVRleHR1cmVz
KDEsICZ0YXJnZXQpOworICAgIH0KK30KKworVEVTVF9QKEltYWdlVGVzdCwgU291cmNlUmVuZGVy
YnVmZmVyVGFyZ2V0VGV4dHVyZSkKK3sKKyAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVHTFdp
bmRvdygpOworICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiT0VTX0VHTF9pbWFnZSIpIHx8Cisg
ICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwg
IkVHTF9LSFJfaW1hZ2VfYmFzZSIpIHx8CisgICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5h
YmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfZ2xfcmVuZGVyYnVmZmVyX2ltYWdl
IikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIE9F
U19FR0xfaW1hZ2UsIEVHTF9LSFJfaW1hZ2VfYmFzZSBvciAiCisgICAgICAgICAgICAgICAgICAg
ICAiRUdMX0tIUl9nbF9yZW5kZXJidWZmZXJfaW1hZ2UgaXMgbm90IGF2YWlsYWJsZS4iCisgICAg
ICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBHTHVieXRlIGRhdGFbNF0gPSB7MjU1LCAwLCAyNTUsIDI1NX07CisKKyAgICAvLyBDcmVhdGUg
dGhlIEltYWdlCisgICAgR0x1aW50IHNvdXJjZTsKKyAgICBFR0xJbWFnZUtIUiBpbWFnZTsKKyAg
ICBjcmVhdGVFR0xJbWFnZVJlbmRlcmJ1ZmZlclNvdXJjZSgxLCAxLCBHTF9SR0JBOF9PRVMsIGRh
dGEsICZzb3VyY2UsICZpbWFnZSk7CisKKyAgICAvLyBDcmVhdGUgdGhlIHRhcmdldAorICAgIEdM
dWludCB0YXJnZXQ7CisgICAgY3JlYXRlRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkQoaW1hZ2UsICZ0
YXJnZXQpOworCisgICAgLy8gRXhwZWN0IHRoYXQgdGhlIHRhcmdldCB0ZXh0dXJlIGhhcyB0aGUg
c2FtZSBjb2xvciBhcyB0aGUgc291cmNlIHRleHR1cmUKKyAgICB2ZXJpZnlSZXN1bHRzMkQodGFy
Z2V0LCBkYXRhKTsKKworICAgIC8vIENsZWFuIHVwCisgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJz
KDEsICZzb3VyY2UpOworICAgIGVnbERlc3Ryb3lJbWFnZUtIUih3aW5kb3ctPmdldERpc3BsYXko
KSwgaW1hZ2UpOworICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRhcmdldCk7Cit9CisKKy8vIFRl
c3QgcmVuZGVyYnVmZmVyIC0+IGV4dGVybmFsIHRleHR1cmUgRUdMIGltYWdlcy4KK1RFU1RfUChJ
bWFnZVRlc3QsIFNvdXJjZVJlbmRlcmJ1ZmZlclRhcmdldFRleHR1cmVFeHRlcm5hbCkKK3sKKyAg
ICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygpOworICAgIGlmICghZXh0ZW5zaW9u
RW5hYmxlZCgiT0VTX0VHTF9pbWFnZSIpIHx8ICFleHRlbnNpb25FbmFibGVkKCJPRVNfRUdMX2lt
YWdlX2V4dGVybmFsIikgfHwKKyAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdp
bmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9pbWFnZV9iYXNlIikgfHwKKyAgICAgICAgIWVn
bERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9n
bF9yZW5kZXJidWZmZXJfaW1hZ2UiKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dAorICAgICAg
ICAgICAgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIE9FU19FR0xfaW1hZ2UsIE9FU19FR0xfaW1h
Z2VfZXh0ZXJuYWwsIEVHTF9LSFJfaW1hZ2VfYmFzZSBvciAiCisgICAgICAgICAgICAgICAiRUdM
X0tIUl9nbF9yZW5kZXJidWZmZXJfaW1hZ2UgaXMgbm90IGF2YWlsYWJsZS4iCisgICAgICAgICAg
ICA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHTHVieXRlIGRh
dGFbNF0gPSB7MjU1LCAwLCAyNTUsIDI1NX07CisKKyAgICAvLyBDcmVhdGUgdGhlIEltYWdlCisg
ICAgR0x1aW50IHNvdXJjZTsKKyAgICBFR0xJbWFnZUtIUiBpbWFnZTsKKyAgICBjcmVhdGVFR0xJ
bWFnZVJlbmRlcmJ1ZmZlclNvdXJjZSgxLCAxLCBHTF9SR0JBOF9PRVMsIGRhdGEsICZzb3VyY2Us
ICZpbWFnZSk7CisKKyAgICAvLyBDcmVhdGUgdGhlIHRhcmdldAorICAgIEdMdWludCB0YXJnZXQ7
CisgICAgY3JlYXRlRUdMSW1hZ2VUYXJnZXRUZXh0dXJlRXh0ZXJuYWwoaW1hZ2UsICZ0YXJnZXQp
OworCisgICAgLy8gRXhwZWN0IHRoYXQgdGhlIHRhcmdldCB0ZXh0dXJlIGhhcyB0aGUgc2FtZSBj
b2xvciBhcyB0aGUgc291cmNlIHRleHR1cmUKKyAgICB2ZXJpZnlSZXN1bHRzRXh0ZXJuYWwodGFy
Z2V0LCBkYXRhKTsKKworICAgIC8vIENsZWFuIHVwCisgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJz
KDEsICZzb3VyY2UpOworICAgIGVnbERlc3Ryb3lJbWFnZUtIUih3aW5kb3ctPmdldERpc3BsYXko
KSwgaW1hZ2UpOworICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRhcmdldCk7Cit9CisKKy8vIFRl
c3QgcmVuZGVyYnVmZmVyIC0+IGV4dGVybmFsIHRleHR1cmUgRUdMIGltYWdlcyB1c2luZyBFU1NM
MyBzaGFkZXJzLgorVEVTVF9QKEltYWdlVGVzdEVTMywgU291cmNlUmVuZGVyYnVmZmVyVGFyZ2V0
VGV4dHVyZUV4dGVybmFsRVNTTDMpCit7CisgICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xX
aW5kb3coKTsKKyAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIk9FU19FR0xfaW1hZ2UiKSB8fCAh
ZXh0ZW5zaW9uRW5hYmxlZCgiT0VTX0VHTF9pbWFnZV9leHRlcm5hbF9lc3NsMyIpIHx8CisgICAg
ICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVH
TF9LSFJfaW1hZ2VfYmFzZSIpIHx8CisgICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxl
ZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfZ2xfcmVuZGVyYnVmZmVyX2ltYWdlIikp
CisgICAgeworICAgICAgICBzdGQ6OmNvdXQKKyAgICAgICAgICAgIDw8ICJUZXN0IHNraXBwZWQg
YmVjYXVzZSBPRVNfRUdMX2ltYWdlLCBPRVNfRUdMX2ltYWdlX2V4dGVybmFsLCBFR0xfS0hSX2lt
YWdlX2Jhc2Ugb3IgIgorICAgICAgICAgICAgICAgIkVHTF9LSFJfZ2xfcmVuZGVyYnVmZmVyX2lt
YWdlIGlzIG5vdCBhdmFpbGFibGUuIgorICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgR0x1Ynl0ZSBkYXRhWzRdID0gezI1NSwgMCwgMjU1LCAy
NTV9OworCisgICAgLy8gQ3JlYXRlIHRoZSBJbWFnZQorICAgIEdMdWludCBzb3VyY2U7CisgICAg
RUdMSW1hZ2VLSFIgaW1hZ2U7CisgICAgY3JlYXRlRUdMSW1hZ2VSZW5kZXJidWZmZXJTb3VyY2Uo
MSwgMSwgR0xfUkdCQThfT0VTLCBkYXRhLCAmc291cmNlLCAmaW1hZ2UpOworCisgICAgLy8gQ3Jl
YXRlIHRoZSB0YXJnZXQKKyAgICBHTHVpbnQgdGFyZ2V0OworICAgIGNyZWF0ZUVHTEltYWdlVGFy
Z2V0VGV4dHVyZUV4dGVybmFsKGltYWdlLCAmdGFyZ2V0KTsKKworICAgIC8vIEV4cGVjdCB0aGF0
IHRoZSB0YXJnZXQgdGV4dHVyZSBoYXMgdGhlIHNhbWUgY29sb3IgYXMgdGhlIHNvdXJjZSB0ZXh0
dXJlCisgICAgdmVyaWZ5UmVzdWx0c0V4dGVybmFsRVNTTDModGFyZ2V0LCBkYXRhKTsKKworICAg
IC8vIENsZWFuIHVwCisgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZzb3VyY2UpOworICAg
IGVnbERlc3Ryb3lJbWFnZUtIUih3aW5kb3ctPmdldERpc3BsYXkoKSwgaW1hZ2UpOworICAgIGds
RGVsZXRlVGV4dHVyZXMoMSwgJnRhcmdldCk7Cit9CisKK1RFU1RfUChJbWFnZVRlc3QsIFNvdXJj
ZVJlbmRlcmJ1ZmZlclRhcmdldFJlbmRlcmJ1ZmZlcikKK3sKKyAgICBFR0xXaW5kb3cgKndpbmRv
dyA9IGdldEVHTFdpbmRvdygpOworICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiT0VTX0VHTF9p
bWFnZSIpIHx8CisgICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdl
dERpc3BsYXkoKSwgIkVHTF9LSFJfaW1hZ2VfYmFzZSIpIHx8CisgICAgICAgICFlZ2xEaXNwbGF5
RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfZ2xfcmVuZGVy
YnVmZmVyX2ltYWdlIikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBl
ZCBiZWNhdXNlIE9FU19FR0xfaW1hZ2UsIEVHTF9LSFJfaW1hZ2VfYmFzZSBvciAiCisgICAgICAg
ICAgICAgICAgICAgICAiRUdMX0tIUl9nbF9yZW5kZXJidWZmZXJfaW1hZ2UgaXMgbm90IGF2YWls
YWJsZS4iCisgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBHTHVieXRlIGRhdGFbNF0gPSB7MjU1LCAwLCAyNTUsIDI1NX07CisKKyAg
ICAvLyBDcmVhdGUgdGhlIEltYWdlCisgICAgR0x1aW50IHNvdXJjZTsKKyAgICBFR0xJbWFnZUtI
UiBpbWFnZTsKKyAgICBjcmVhdGVFR0xJbWFnZVJlbmRlcmJ1ZmZlclNvdXJjZSgxLCAxLCBHTF9S
R0JBOF9PRVMsIGRhdGEsICZzb3VyY2UsICZpbWFnZSk7CisKKyAgICAvLyBDcmVhdGUgdGhlIHRh
cmdldAorICAgIEdMdWludCB0YXJnZXQ7CisgICAgY3JlYXRlRUdMSW1hZ2VUYXJnZXRSZW5kZXJi
dWZmZXIoaW1hZ2UsICZ0YXJnZXQpOworCisgICAgLy8gRXhwZWN0IHRoYXQgdGhlIHRhcmdldCBy
ZW5kZXJidWZmZXIgaGFzIHRoZSBzYW1lIGNvbG9yIGFzIHRoZSBzb3VyY2UgdGV4dHVyZQorICAg
IHZlcmlmeVJlc3VsdHNSZW5kZXJidWZmZXIodGFyZ2V0LCBkYXRhKTsKKworICAgIC8vIENsZWFu
IHVwCisgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZzb3VyY2UpOworICAgIGVnbERlc3Ry
b3lJbWFnZUtIUih3aW5kb3ctPmdldERpc3BsYXkoKSwgaW1hZ2UpOworICAgIGdsRGVsZXRlUmVu
ZGVyYnVmZmVycygxLCAmdGFyZ2V0KTsKK30KKworLy8gRGVsZXRlIHRoZSBzb3VyY2UgdGV4dHVy
ZSBhbmQgRUdMIGltYWdlLiAgVGhlIGltYWdlIHRhcmdldHMgc2hvdWxkIHN0aWxsIGhhdmUgdGhl
IHNhbWUgZGF0YQorLy8gYmVjYXVzZQorLy8gdGhleSBob2xkIHJlZnMgdG8gdGhlIGltYWdlLgor
VEVTVF9QKEltYWdlVGVzdCwgRGVsZXRpb24pCit7CisgICAgRUdMV2luZG93ICp3aW5kb3cgPSBn
ZXRFR0xXaW5kb3coKTsKKyAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIk9FU19FR0xfaW1hZ2Ui
KSB8fAorICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNw
bGF5KCksICJFR0xfS0hSX2ltYWdlX2Jhc2UiKSB8fAorICAgICAgICAhZWdsRGlzcGxheUV4dGVu
c2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2dsX3RleHR1cmVfMkRf
aW1hZ2UiKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1
c2UgT0VTX0VHTF9pbWFnZSwgRUdMX0tIUl9pbWFnZV9iYXNlIG9yICIKKyAgICAgICAgICAgICAg
ICAgICAgICJFR0xfS0hSX2dsX3RleHR1cmVfMkRfaW1hZ2UgaXMgbm90IGF2YWlsYWJsZS4iCisg
ICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBHTHVieXRlIG9yaWdpbmFsRGF0YVs0XSA9IHsyNTUsIDAsIDI1NSwgMjU1fTsKKyAgICBH
THVieXRlIHVwZGF0ZURhdGFbNF0gICA9IHswLCAyNTUsIDAsIDI1NX07CisKKyAgICAvLyBDcmVh
dGUgdGhlIEltYWdlCisgICAgR0x1aW50IHNvdXJjZTsKKyAgICBFR0xJbWFnZUtIUiBpbWFnZTsK
KyAgICBjcmVhdGVFR0xJbWFnZTJEVGV4dHVyZVNvdXJjZSgxLCAxLCBHTF9SR0JBLCBHTF9VTlNJ
R05FRF9CWVRFLCBvcmlnaW5hbERhdGEsICZzb3VyY2UsICZpbWFnZSk7CisKKyAgICAvLyBDcmVh
dGUgbXVsdGlwbGUgdGFyZ2V0cworICAgIEdMdWludCB0YXJnZXRUZXh0dXJlOworICAgIGNyZWF0
ZUVHTEltYWdlVGFyZ2V0VGV4dHVyZTJEKGltYWdlLCAmdGFyZ2V0VGV4dHVyZSk7CisKKyAgICBH
THVpbnQgdGFyZ2V0UmVuZGVyYnVmZmVyOworICAgIGNyZWF0ZUVHTEltYWdlVGFyZ2V0UmVuZGVy
YnVmZmVyKGltYWdlLCAmdGFyZ2V0UmVuZGVyYnVmZmVyKTsKKworICAgIC8vIERlbGV0ZSB0aGUg
c291cmNlIHRleHR1cmUKKyAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZzb3VyY2UpOworICAgIHNv
dXJjZSA9IDA7CisKKyAgICAvLyBFeHBlY3QgdGhhdCBib3RoIHRoZSB0YXJnZXRzIGhhdmUgdGhl
IG9yaWdpbmFsIGRhdGEKKyAgICB2ZXJpZnlSZXN1bHRzMkQodGFyZ2V0VGV4dHVyZSwgb3JpZ2lu
YWxEYXRhKTsKKyAgICB2ZXJpZnlSZXN1bHRzUmVuZGVyYnVmZmVyKHRhcmdldFJlbmRlcmJ1ZmZl
ciwgb3JpZ2luYWxEYXRhKTsKKworICAgIC8vIFVwZGF0ZSB0aGUgZGF0YSBvZiB0aGUgdGFyZ2V0
CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0YXJnZXRUZXh0dXJlKTsKKyAgICBn
bFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwgMSwgMSwgR0xfUkdCQSwgR0xf
VU5TSUdORURfQllURSwgdXBkYXRlRGF0YSk7CisKKyAgICAvLyBFeHBlY3QgdGhhdCBib3RoIHRh
cmdldHMgaGF2ZSB0aGUgdXBkYXRlZCBkYXRhCisgICAgdmVyaWZ5UmVzdWx0czJEKHRhcmdldFRl
eHR1cmUsIHVwZGF0ZURhdGEpOworICAgIHZlcmlmeVJlc3VsdHNSZW5kZXJidWZmZXIodGFyZ2V0
UmVuZGVyYnVmZmVyLCB1cGRhdGVEYXRhKTsKKworICAgIC8vIERlbGV0ZSB0aGUgRUdMIGltYWdl
CisgICAgZWdsRGVzdHJveUltYWdlS0hSKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCBpbWFnZSk7Cisg
ICAgaW1hZ2UgPSBFR0xfTk9fSU1BR0VfS0hSOworCisgICAgLy8gVXBkYXRlIHRoZSBkYXRhIG9m
IHRoZSB0YXJnZXQgYmFjayB0byB0aGUgb3JpZ2luYWwgZGF0YQorICAgIGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV8yRCwgdGFyZ2V0VGV4dHVyZSk7CisgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RF
WFRVUkVfMkQsIDAsIDAsIDAsIDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG9yaWdp
bmFsRGF0YSk7CisKKyAgICAvLyBFeHBlY3QgdGhhdCBib3RoIHRhcmdldHMgaGF2ZSB0aGUgb3Jp
Z2luYWwgZGF0YSBhZ2FpbgorICAgIHZlcmlmeVJlc3VsdHMyRCh0YXJnZXRUZXh0dXJlLCBvcmln
aW5hbERhdGEpOworICAgIHZlcmlmeVJlc3VsdHNSZW5kZXJidWZmZXIodGFyZ2V0UmVuZGVyYnVm
ZmVyLCBvcmlnaW5hbERhdGEpOworCisgICAgLy8gQ2xlYW4gdXAKKyAgICBnbERlbGV0ZVRleHR1
cmVzKDEsICZ0YXJnZXRUZXh0dXJlKTsKKyAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJnRh
cmdldFJlbmRlcmJ1ZmZlcik7Cit9CisKK1RFU1RfUChJbWFnZVRlc3QsIE1pcExldmVscykKK3sK
KyAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygpOworICAgIGlmICghZXh0ZW5z
aW9uRW5hYmxlZCgiT0VTX0VHTF9pbWFnZSIpIHx8CisgICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5z
aW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfaW1hZ2VfYmFzZSIpIHx8
CisgICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXko
KSwgIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSIpKQorICAgIHsKKyAgICAgICAgc3RkOjpj
b3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBPRVNfRUdMX2ltYWdlLCBFR0xfS0hSX2ltYWdl
X2Jhc2Ugb3IgIgorICAgICAgICAgICAgICAgICAgICAgIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9p
bWFnZSBpcyBub3QgYXZhaWxhYmxlLiIKKyAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IHNpemVfdCBtaXBMZXZlbHMgICA9
IDM7CisgICAgY29uc3Qgc2l6ZV90IHRleHR1cmVTaXplID0gNDsKKyAgICBzdGQ6OnZlY3RvcjxH
THVpbnQ+IG1pcDBEYXRhKHRleHR1cmVTaXplICogdGV4dHVyZVNpemUsIDB4RkZGRjAwMDApOwor
ICAgIHN0ZDo6dmVjdG9yPEdMdWludD4gbWlwMURhdGEobWlwMERhdGEuc2l6ZSgpIDw8IDEsIDB4
RkYwMEZGMDApOworICAgIHN0ZDo6dmVjdG9yPEdMdWludD4gbWlwMkRhdGEobWlwMERhdGEuc2l6
ZSgpIDw8IDIsIDB4RkYwMDAwRkYpOworICAgIEdMdWJ5dGUgKmRhdGFbbWlwTGV2ZWxzXSA9IHsK
KyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHTHVieXRlICo+KCZtaXAwRGF0YVswXSksIHJlaW50
ZXJwcmV0X2Nhc3Q8R0x1Ynl0ZSAqPigmbWlwMURhdGFbMF0pLAorICAgICAgICByZWludGVycHJl
dF9jYXN0PEdMdWJ5dGUgKj4oJm1pcDJEYXRhWzBdKSwKKyAgICB9OworCisgICAgR0x1aW50IHNv
dXJjZTsKKyAgICBnbEdlblRleHR1cmVzKDEsICZzb3VyY2UpOworICAgIGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV8yRCwgc291cmNlKTsKKworICAgIGZvciAoc2l6ZV90IGxldmVsID0gMDsgbGV2
ZWwgPCBtaXBMZXZlbHM7IGxldmVsKyspCisgICAgeworICAgICAgICBnbFRleEltYWdlMkQoR0xf
VEVYVFVSRV8yRCwgc3RhdGljX2Nhc3Q8R0xpbnQ+KGxldmVsKSwgR0xfUkdCQSwgdGV4dHVyZVNp
emUgPj4gbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlU2l6ZSA+PiBsZXZlbCwg
MCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgZGF0YVtsZXZlbF0pOworICAgIH0KKworICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgZm9yIChzaXplX3QgbGV2ZWwgPSAwOyBsZXZl
bCA8IG1pcExldmVsczsgbGV2ZWwrKykKKyAgICB7CisgICAgICAgIC8vIENyZWF0ZSB0aGUgSW1h
Z2UKKyAgICAgICAgRUdMaW50IGF0dHJpYnNbXSA9IHsKKyAgICAgICAgICAgIEVHTF9HTF9URVhU
VVJFX0xFVkVMX0tIUiwgc3RhdGljX2Nhc3Q8RUdMaW50PihsZXZlbCksIEVHTF9OT05FLAorICAg
ICAgICB9OworICAgICAgICBFR0xJbWFnZUtIUiBpbWFnZSA9CisgICAgICAgICAgICBlZ2xDcmVh
dGVJbWFnZUtIUih3aW5kb3ctPmdldERpc3BsYXkoKSwgd2luZG93LT5nZXRDb250ZXh0KCksIEVH
TF9HTF9URVhUVVJFXzJEX0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50
ZXJwcmV0SGVscGVyPEVHTENsaWVudEJ1ZmZlcj4oc291cmNlKSwgYXR0cmlicyk7CisgICAgICAg
IEFTU0VSVF9FR0xfU1VDQ0VTUygpOworCisgICAgICAgIC8vIENyZWF0ZSBhIHRleHR1cmUgYW5k
IHJlbmRlcmJ1ZmZlciB0YXJnZXQKKyAgICAgICAgR0x1aW50IHRleHR1cmVUYXJnZXQ7CisgICAg
ICAgIGNyZWF0ZUVHTEltYWdlVGFyZ2V0VGV4dHVyZTJEKGltYWdlLCAmdGV4dHVyZVRhcmdldCk7
CisKKyAgICAgICAgLy8gRGlzYWJsZSBtaXBtYXBwaW5nCisgICAgICAgIGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV8yRCwgdGV4dHVyZVRhcmdldCk7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgICAg
ICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBH
TF9ORUFSRVNUKTsKKworICAgICAgICBHTHVpbnQgcmVuZGVyYnVmZmVyVGFyZ2V0OworICAgICAg
ICBjcmVhdGVFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlcihpbWFnZSwgJnJlbmRlcmJ1ZmZlclRh
cmdldCk7CisKKyAgICAgICAgLy8gRXhwZWN0IHRoYXQgdGhlIHRhcmdldHMgaGF2ZSB0aGUgc2Ft
ZSBjb2xvciBhcyB0aGUgc291cmNlIHRleHR1cmUKKyAgICAgICAgdmVyaWZ5UmVzdWx0czJEKHRl
eHR1cmVUYXJnZXQsIGRhdGFbbGV2ZWxdKTsKKyAgICAgICAgdmVyaWZ5UmVzdWx0c1JlbmRlcmJ1
ZmZlcihyZW5kZXJidWZmZXJUYXJnZXQsIGRhdGFbbGV2ZWxdKTsKKworICAgICAgICAvLyBDbGVh
biB1cAorICAgICAgICBlZ2xEZXN0cm95SW1hZ2VLSFIod2luZG93LT5nZXREaXNwbGF5KCksIGlt
YWdlKTsKKyAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGV4dHVyZVRhcmdldCk7CisgICAg
ICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmcmVuZGVyYnVmZmVyVGFyZ2V0KTsKKyAgICB9
CisKKyAgICAvLyBDbGVhbiB1cAorICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnNvdXJjZSk7Cit9
CisKKy8vIFJlc3BlY2lmeSB0aGUgc291cmNlIHRleHR1cmUsIG9ycGhhbmluZyBpdC4gIFRoZSB0
YXJnZXQgdGV4dHVyZSBzaG91bGQgbm90IGhhdmUgdXBkYXRlZCBkYXRhLgorVEVTVF9QKEltYWdl
VGVzdCwgUmVzcGVjaWZpY2F0aW9uKQoreworICAgIEVHTFdpbmRvdyAqd2luZG93ID0gZ2V0RUdM
V2luZG93KCk7CisgICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJPRVNfRUdMX2ltYWdlIikgfHwK
KyAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgp
LCAiRUdMX0tIUl9pbWFnZV9iYXNlIikgfHwKKyAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25F
bmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9nbF90ZXh0dXJlXzJEX2ltYWdl
IikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIE9F
U19FR0xfaW1hZ2UsIEVHTF9LSFJfaW1hZ2VfYmFzZSBvciAiCisgICAgICAgICAgICAgICAgICAg
ICAiRUdMX0tIUl9nbF90ZXh0dXJlXzJEX2ltYWdlIGlzIG5vdCBhdmFpbGFibGUuIgorICAgICAg
ICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
R0x1Ynl0ZSBvcmlnaW5hbERhdGFbNF0gPSB7MjU1LCAwLCAyNTUsIDI1NX07CisgICAgR0x1Ynl0
ZSB1cGRhdGVEYXRhWzRdICAgPSB7MCwgMjU1LCAwLCAyNTV9OworCisgICAgLy8gQ3JlYXRlIHRo
ZSBJbWFnZQorICAgIEdMdWludCBzb3VyY2U7CisgICAgRUdMSW1hZ2VLSFIgaW1hZ2U7CisgICAg
Y3JlYXRlRUdMSW1hZ2UyRFRleHR1cmVTb3VyY2UoMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURf
QllURSwgb3JpZ2luYWxEYXRhLCAmc291cmNlLCAmaW1hZ2UpOworCisgICAgLy8gQ3JlYXRlIHRo
ZSB0YXJnZXQKKyAgICBHTHVpbnQgdGFyZ2V0OworICAgIGNyZWF0ZUVHTEltYWdlVGFyZ2V0VGV4
dHVyZTJEKGltYWdlLCAmdGFyZ2V0KTsKKworICAgIC8vIFJlc3BlY2lmeSBzb3VyY2UKKyAgICBn
bEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHNvdXJjZSk7CisgICAgZ2xUZXhJbWFnZTJEKEdM
X1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDEsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsIHVwZGF0ZURhdGEpOworCisgICAgLy8gRXhwZWN0IHRoYXQgdGhlIHRhcmdldCB0ZXh0dXJl
IGhhcyB0aGUgb3JpZ2luYWwgZGF0YQorICAgIHZlcmlmeVJlc3VsdHMyRCh0YXJnZXQsIG9yaWdp
bmFsRGF0YSk7CisKKyAgICAvLyBFeHBlY3QgdGhhdCB0aGUgc291cmNlIHRleHR1cmUgaGFzIHRo
ZSB1cGRhdGVkIGRhdGEKKyAgICB2ZXJpZnlSZXN1bHRzMkQoc291cmNlLCB1cGRhdGVEYXRhKTsK
KworICAgIC8vIENsZWFuIHVwCisgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmc291cmNlKTsKKyAg
ICBlZ2xEZXN0cm95SW1hZ2VLSFIod2luZG93LT5nZXREaXNwbGF5KCksIGltYWdlKTsKKyAgICBn
bERlbGV0ZVRleHR1cmVzKDEsICZ0YXJnZXQpOworfQorCisvLyBGaXJzdCByZW5kZXIgdG8gYSB0
YXJnZXQgdGV4dHVyZSwgdGhlbiByZXNwZWNpZnkgdGhlIHNvdXJjZSB0ZXh0dXJlLCBvcnBoYW5p
bmcgaXQuCisvLyBUaGUgdGFyZ2V0IHRleHR1cmUncyBGQk8gc2hvdWxkIGJlIG5vdGlmaWVkIG9m
IHRoZSB0YXJnZXQgdGV4dHVyZSdzIG9ycGhhbmluZy4KK1RFU1RfUChJbWFnZVRlc3QsIFJlc3Bl
Y2lmaWNhdGlvbldpdGhGQk8pCit7CisgICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5k
b3coKTsKKyAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIk9FU19FR0xfaW1hZ2UiKSB8fAorICAg
ICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJF
R0xfS0hSX2ltYWdlX2Jhc2UiKSB8fAorICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJs
ZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2dsX3RleHR1cmVfMkRfaW1hZ2UiKSkK
KyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgT0VTX0VH
TF9pbWFnZSwgRUdMX0tIUl9pbWFnZV9iYXNlIG9yICIKKyAgICAgICAgICAgICAgICAgICAgICJF
R0xfS0hSX2dsX3RleHR1cmVfMkRfaW1hZ2UgaXMgbm90IGF2YWlsYWJsZS4iCisgICAgICAgICAg
ICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBT
aW1wbGUgc2hhZGVyCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZlcnRleFNvdXJjZSA9CisgICAg
ICAgICJhdHRyaWJ1dGUgdmVjMiBwb3NpdGlvbjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4i
CisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9u
LCAwLCAxKTtcbiIKKyAgICAgICAgIn0iOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnbWVu
dFNvdXJjZSA9CisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAg
ICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAwLjAsIDEuMCwgMS4wKTtcbiIKKyAgICAg
ICAgIn0iOworICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U291cmNl
LCBmcmFnbWVudFNvdXJjZSk7CisgICAgQVNTRVJUX05FKDB1LCBwcm9ncmFtKTsKKworICAgIEdM
dWJ5dGUgb3JpZ2luYWxEYXRhWzRdID0gezI1NSwgMCwgMjU1LCAyNTV9OworICAgIEdMdWJ5dGUg
dXBkYXRlRGF0YVs0XSAgID0gezAsIDI1NSwgMCwgMjU1fTsKKworICAgIC8vIENyZWF0ZSB0aGUg
SW1hZ2UKKyAgICBHTHVpbnQgc291cmNlOworICAgIEVHTEltYWdlS0hSIGltYWdlOworICAgIGNy
ZWF0ZUVHTEltYWdlMkRUZXh0dXJlU291cmNlKDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsIG9yaWdpbmFsRGF0YSwgJnNvdXJjZSwgJmltYWdlKTsKKworICAgIC8vIENyZWF0ZSB0aGUg
dGFyZ2V0CisgICAgR0x1aW50IHRhcmdldDsKKyAgICBjcmVhdGVFR0xJbWFnZVRhcmdldFRleHR1
cmUyRChpbWFnZSwgJnRhcmdldCk7CisKKyAgICAvLyBSZW5kZXIgdG8gdGhlIHRhcmdldCB0ZXh0
dXJlCisgICAgR0x1aW50IGZibzsKKyAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmZmJvKTsKKyAg
ICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICBnbEZyYW1lYnVm
ZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVY
VFVSRV8yRCwgdGFyZ2V0LCAwKTsKKyAgICBkcmF3UXVhZChwcm9ncmFtLCAicG9zaXRpb24iLCAw
LjVmKTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMCwgMCwgMjU1LCAyNTUpOworCisgICAg
Ly8gUmVzcGVjaWZ5IHNvdXJjZSB3aXRoIHNhbWUgcGFyYW1ldGVycy4gVGhpcyBzaG91bGQgbm90
IGNoYW5nZSB0aGUgdGV4dHVyZSBzdG9yYWdlIGluIEQzRDExLgorICAgIGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV8yRCwgc291cmNlKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwg
MCwgR0xfUkdCQSwgMSwgMSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgdXBkYXRlRGF0
YSk7CisKKyAgICAvLyBFeHBlY3QgdGhhdCB0aGUgc291cmNlIHRleHR1cmUgaGFzIHRoZSB1cGRh
dGVkIGRhdGEKKyAgICB2ZXJpZnlSZXN1bHRzMkQoc291cmNlLCB1cGRhdGVEYXRhKTsKKworICAg
IC8vIFJlbmRlciB0byB0aGUgdGFyZ2V0IHRleHR1cmUgYWdhaW4gYW5kIHZlcmlmeSBpdCBnZXRz
IHRoZSByZW5kZXJlZCBwaXhlbHMuCisgICAgZHJhd1F1YWQocHJvZ3JhbSwgInBvc2l0aW9uIiwg
MC41Zik7CisgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDAsIDAsIDI1NSwgMjU1KTsKKworICAg
IC8vIENsZWFuIHVwCisgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmc291cmNlKTsKKyAgICBlZ2xE
ZXN0cm95SW1hZ2VLSFIod2luZG93LT5nZXREaXNwbGF5KCksIGltYWdlKTsKKyAgICBnbERlbGV0
ZVRleHR1cmVzKDEsICZ0YXJnZXQpOworICAgIGdsRGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKKyAg
ICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmZmJvKTsKK30KKworLy8gVGVzdCB0aGF0IHJlc3Bl
Y2lmeWluZyBhIGxldmVsIG9mIHRoZSB0YXJnZXQgdGV4dHVyZSBvcnBoYW5zIGl0IGFuZCBrZWVw
cyBhIGNvcHkgb2YgdGhlIEVHTGltYWdlCisvLyBkYXRhCitURVNUX1AoSW1hZ2VUZXN0LCBSZXNw
ZWNpZmljYXRpb25PZk90aGVyTGV2ZWwpCit7CisgICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRF
R0xXaW5kb3coKTsKKyAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIk9FU19FR0xfaW1hZ2UiKSB8
fAorICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5
KCksICJFR0xfS0hSX2ltYWdlX2Jhc2UiKSB8fAorICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lv
bkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2dsX3RleHR1cmVfMkRfaW1h
Z2UiKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2Ug
T0VTX0VHTF9pbWFnZSwgRUdMX0tIUl9pbWFnZV9iYXNlIG9yICIKKyAgICAgICAgICAgICAgICAg
ICAgICJFR0xfS0hSX2dsX3RleHR1cmVfMkRfaW1hZ2UgaXMgbm90IGF2YWlsYWJsZS4iCisgICAg
ICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBHTHVieXRlIG9yaWdpbmFsRGF0YVsyICogMiAqIDRdID0geworICAgICAgICAyNTUsIDAsIDI1
NSwgMjU1LCAyNTUsIDAsIDI1NSwgMjU1LCAyNTUsIDAsIDI1NSwgMjU1LCAyNTUsIDAsIDI1NSwg
MjU1LAorICAgIH07CisKKyAgICBHTHVieXRlIHVwZGF0ZURhdGFbMiAqIDIgKiA0XSA9IHsKKyAg
ICAgICAgMCwgMjU1LCAwLCAyNTUsIDAsIDI1NSwgMCwgMjU1LCAwLCAyNTUsIDAsIDI1NSwgMCwg
MjU1LCAwLCAyNTUsCisgICAgfTsKKworICAgIC8vIENyZWF0ZSB0aGUgSW1hZ2UKKyAgICBHTHVp
bnQgc291cmNlOworICAgIEVHTEltYWdlS0hSIGltYWdlOworICAgIGNyZWF0ZUVHTEltYWdlMkRU
ZXh0dXJlU291cmNlKDIsIDIsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG9yaWdpbmFsRGF0
YSwgJnNvdXJjZSwgJmltYWdlKTsKKworICAgIC8vIENyZWF0ZSB0aGUgdGFyZ2V0CisgICAgR0x1
aW50IHRhcmdldDsKKyAgICBjcmVhdGVFR0xJbWFnZVRhcmdldFRleHR1cmUyRChpbWFnZSwgJnRh
cmdldCk7CisKKyAgICAvLyBFeHBlY3QgdGhhdCB0aGUgdGFyZ2V0IGFuZCBzb3VyY2UgdGV4dHVy
ZXMgaGF2ZSB0aGUgb3JpZ2luYWwgZGF0YQorICAgIHZlcmlmeVJlc3VsdHMyRChzb3VyY2UsIG9y
aWdpbmFsRGF0YSk7CisgICAgdmVyaWZ5UmVzdWx0czJEKHRhcmdldCwgb3JpZ2luYWxEYXRhKTsK
KworICAgIC8vIEFkZCBhIG5ldyBtaXBMZXZlbCB0byB0aGUgdGFyZ2V0LCBvcnBoYW5pbmcgaXQK
KyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRhcmdldCk7CisgICAgZ2xUZXhJbWFn
ZTJEKEdMX1RFWFRVUkVfMkQsIDEsIEdMX1JHQkEsIDEsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lH
TkVEX0JZVEUsIG9yaWdpbmFsRGF0YSk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAg
ICAvLyBFeHBlY3QgdGhhdCB0aGUgdGFyZ2V0IGFuZCBzb3VyY2UgdGV4dHVyZXMgc3RpbGwgaGF2
ZSB0aGUgb3JpZ2luYWwgZGF0YQorICAgIHZlcmlmeVJlc3VsdHMyRChzb3VyY2UsIG9yaWdpbmFs
RGF0YSk7CisgICAgdmVyaWZ5UmVzdWx0czJEKHRhcmdldCwgb3JpZ2luYWxEYXRhKTsKKworICAg
IC8vIFVwZGF0ZSB0aGUgc291cmNlJ3MgZGF0YQorICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVS
RV8yRCwgc291cmNlKTsKKyAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwg
MCwgMiwgMiwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgdXBkYXRlRGF0YSk7CisKKyAgICAv
LyBFeHBlY3QgdGhhdCB0aGUgdGFyZ2V0IHN0aWxsIGhhcyB0aGUgb3JpZ2luYWwgZGF0YSBhbmQg
c291cmNlIGhhcyB0aGUgdXBkYXRlZCBkYXRhCisgICAgdmVyaWZ5UmVzdWx0czJEKHNvdXJjZSwg
dXBkYXRlRGF0YSk7CisgICAgdmVyaWZ5UmVzdWx0czJEKHRhcmdldCwgb3JpZ2luYWxEYXRhKTsK
KworICAgIC8vIENsZWFuIHVwCisgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmc291cmNlKTsKKyAg
ICBlZ2xEZXN0cm95SW1hZ2VLSFIod2luZG93LT5nZXREaXNwbGF5KCksIGltYWdlKTsKKyAgICBn
bERlbGV0ZVRleHR1cmVzKDEsICZ0YXJnZXQpOworfQorCisvLyBVcGRhdGUgdGhlIGRhdGEgb2Yg
dGhlIHNvdXJjZSBhbmQgdGFyZ2V0IHRleHR1cmVzLiAgQWxsIGltYWdlIHNpYmxpbmdzIHNob3Vs
ZCBoYXZlIHRoZSBuZXcgZGF0YS4KK1RFU1RfUChJbWFnZVRlc3QsIFVwZGF0ZWREYXRhKQorewor
ICAgIEVHTFdpbmRvdyAqd2luZG93ID0gZ2V0RUdMV2luZG93KCk7CisgICAgaWYgKCFleHRlbnNp
b25FbmFibGVkKCJPRVNfRUdMX2ltYWdlIikgfHwKKyAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNp
b25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9pbWFnZV9iYXNlIikgfHwK
KyAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgp
LCAiRUdMX0tIUl9nbF90ZXh0dXJlXzJEX2ltYWdlIikpCisgICAgeworICAgICAgICBzdGQ6OmNv
dXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIE9FU19FR0xfaW1hZ2UsIEVHTF9LSFJfaW1hZ2Vf
YmFzZSBvciAiCisgICAgICAgICAgICAgICAgICAgICAiRUdMX0tIUl9nbF90ZXh0dXJlXzJEX2lt
YWdlIGlzIG5vdCBhdmFpbGFibGUuIgorICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR0x1Ynl0ZSBvcmlnaW5hbERhdGFbNF0gPSB7
MjU1LCAwLCAyNTUsIDI1NX07CisgICAgR0x1Ynl0ZSB1cGRhdGVEYXRhWzRdICAgPSB7MCwgMjU1
LCAwLCAyNTV9OworCisgICAgLy8gQ3JlYXRlIHRoZSBJbWFnZQorICAgIEdMdWludCBzb3VyY2U7
CisgICAgRUdMSW1hZ2VLSFIgaW1hZ2U7CisgICAgY3JlYXRlRUdMSW1hZ2UyRFRleHR1cmVTb3Vy
Y2UoMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgb3JpZ2luYWxEYXRhLCAmc291cmNl
LCAmaW1hZ2UpOworCisgICAgLy8gQ3JlYXRlIG11bHRpcGxlIHRhcmdldHMKKyAgICBHTHVpbnQg
dGFyZ2V0VGV4dHVyZTsKKyAgICBjcmVhdGVFR0xJbWFnZVRhcmdldFRleHR1cmUyRChpbWFnZSwg
JnRhcmdldFRleHR1cmUpOworCisgICAgR0x1aW50IHRhcmdldFJlbmRlcmJ1ZmZlcjsKKyAgICBj
cmVhdGVFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlcihpbWFnZSwgJnRhcmdldFJlbmRlcmJ1ZmZl
cik7CisKKyAgICAvLyBFeHBlY3QgdGhhdCBib3RoIHRoZSBzb3VyY2UgYW5kIHRhcmdldHMgaGF2
ZSB0aGUgb3JpZ2luYWwgZGF0YQorICAgIHZlcmlmeVJlc3VsdHMyRChzb3VyY2UsIG9yaWdpbmFs
RGF0YSk7CisgICAgdmVyaWZ5UmVzdWx0czJEKHRhcmdldFRleHR1cmUsIG9yaWdpbmFsRGF0YSk7
CisgICAgdmVyaWZ5UmVzdWx0c1JlbmRlcmJ1ZmZlcih0YXJnZXRSZW5kZXJidWZmZXIsIG9yaWdp
bmFsRGF0YSk7CisKKyAgICAvLyBVcGRhdGUgdGhlIGRhdGEgb2YgdGhlIHNvdXJjZQorICAgIGds
QmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgc291cmNlKTsKKyAgICBnbFRleFN1YkltYWdlMkQo
R0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwg
dXBkYXRlRGF0YSk7CisKKyAgICAvLyBFeHBlY3QgdGhhdCBib3RoIHRoZSBzb3VyY2UgYW5kIHRh
cmdldHMgaGF2ZSB0aGUgdXBkYXRlZCBkYXRhCisgICAgdmVyaWZ5UmVzdWx0czJEKHNvdXJjZSwg
dXBkYXRlRGF0YSk7CisgICAgdmVyaWZ5UmVzdWx0czJEKHRhcmdldFRleHR1cmUsIHVwZGF0ZURh
dGEpOworICAgIHZlcmlmeVJlc3VsdHNSZW5kZXJidWZmZXIodGFyZ2V0UmVuZGVyYnVmZmVyLCB1
cGRhdGVEYXRhKTsKKworICAgIC8vIFVwZGF0ZSB0aGUgZGF0YSBvZiB0aGUgdGFyZ2V0IGJhY2sg
dG8gdGhlIG9yaWdpbmFsIGRhdGEKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRh
cmdldFRleHR1cmUpOworICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCAwLCAw
LCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBvcmlnaW5hbERhdGEpOworCisgICAg
Ly8gRXhwZWN0IHRoYXQgYm90aCB0aGUgc291cmNlIGFuZCB0YXJnZXRzIGhhdmUgdGhlIG9yaWdp
bmFsIGRhdGEgYWdhaW4KKyAgICB2ZXJpZnlSZXN1bHRzMkQoc291cmNlLCBvcmlnaW5hbERhdGEp
OworICAgIHZlcmlmeVJlc3VsdHMyRCh0YXJnZXRUZXh0dXJlLCBvcmlnaW5hbERhdGEpOworICAg
IHZlcmlmeVJlc3VsdHNSZW5kZXJidWZmZXIodGFyZ2V0UmVuZGVyYnVmZmVyLCBvcmlnaW5hbERh
dGEpOworCisgICAgLy8gQ2xlYW4gdXAKKyAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZzb3VyY2Up
OworICAgIGVnbERlc3Ryb3lJbWFnZUtIUih3aW5kb3ctPmdldERpc3BsYXkoKSwgaW1hZ2UpOwor
ICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRhcmdldFRleHR1cmUpOworICAgIGdsRGVsZXRlUmVu
ZGVyYnVmZmVycygxLCAmdGFyZ2V0UmVuZGVyYnVmZmVyKTsKK30KKworLy8gVXNlIHRoaXMgdG8g
c2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBH
TEVTIG1ham9yIHZlcnNpb24pIHRoZXNlCisvLyB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3Qu
CitBTkdMRV9JTlNUQU5USUFURV9URVNUKEltYWdlVGVzdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgRVMyX0QzRDkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCisgICAg
ICAgICAgICAgICAgICAgICAgIEVTM19EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBF
UzJfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCksCisgICAgICAgICAgICAgICAgICAgICAg
IEVTM19PUEVOR0xFUygpKTsKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoSW1hZ2VUZXN0RVMzLCBF
UzNfRDNEMTEoKSwgRVMzX09QRU5HTCgpLCBFUzNfT1BFTkdMRVMoKSk7Cit9CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvSW5jb21wbGV0ZVRleHR1cmVU
ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
Z2xfdGVzdHMvSW5jb21wbGV0ZVRleHR1cmVUZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvSW5jb21wbGV0ZVRleHR1cmVU
ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3MCBAQAorLy8KKy8vIENvcHlyaWdo
dCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2lu
Y2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKKyNpbmNsdWRlIDx2ZWN0b3I+CisKK3Vz
aW5nIG5hbWVzcGFjZSBhbmdsZTsKKworY2xhc3MgSW5jb21wbGV0ZVRleHR1cmVUZXN0IDogcHVi
bGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgSW5jb21wbGV0ZVRleHR1cmVUZXN0
KCkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7CisgICAgICAgIHNldFdpbmRv
d0hlaWdodCgxMjgpOworICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOworICAgICAgICBzZXRD
b25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOworICAgICAg
ICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIFNldFVw
KCkKKyAgICB7CisgICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKKworICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgICAgICgK
KyAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKKyAgICAgICAgICAgIGF0dHJpYnV0
ZSB2ZWM0IHBvc2l0aW9uOworICAgICAgICAgICAgdmFyeWluZyB2ZWMyIHRleGNvb3JkOworCisg
ICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGds
X1Bvc2l0aW9uID0gcG9zaXRpb247CisgICAgICAgICAgICAgICAgdGV4Y29vcmQgPSAocG9zaXRp
b24ueHkgKiAwLjUpICsgMC41OworICAgICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQor
ICAgICAgICAoCisgICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisgICAgICAgICAg
ICB1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7CisgICAgICAgICAgICB2YXJ5aW5nIHZlYzIgdGV4Y29v
cmQ7CisKKyAgICAgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHRleCwgdGV4Y29vcmQpOworICAgICAgICAg
ICAgfQorICAgICAgICApOworCisgICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVy
dGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgICAgIGlmIChtUHJv
Z3JhbSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBGQUlMKCkgPDwgInNoYWRlciBjb21w
aWxhdGlvbiBmYWlsZWQuIjsKKyAgICAgICAgfQorCisgICAgICAgIG1UZXh0dXJlVW5pZm9ybUxv
Y2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ0ZXgiKTsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQorICAgIHsKKyAgICAgICAgZ2xEZWxldGVQcm9n
cmFtKG1Qcm9ncmFtKTsKKworICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7CisgICAgfQor
CisgICAgdm9pZCBmaWxsVGV4dHVyZURhdGEoc3RkOjp2ZWN0b3I8R0x1Ynl0ZT4gJmJ1ZmZlciwg
R0x1Ynl0ZSByLCBHTHVieXRlIGcsIEdMdWJ5dGUgYiwgR0x1Ynl0ZSBhKQorICAgIHsKKyAgICAg
ICAgc2l6ZV90IGNvdW50ID0gYnVmZmVyLnNpemUoKSAvIDQ7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgYnVmZmVyW2kg
KiA0ICsgMF0gPSByOworICAgICAgICAgICAgYnVmZmVyW2kgKiA0ICsgMV0gPSBnOworICAgICAg
ICAgICAgYnVmZmVyW2kgKiA0ICsgMl0gPSBiOworICAgICAgICAgICAgYnVmZmVyW2kgKiA0ICsg
M10gPSBhOworICAgICAgICB9CisgICAgfQorCisgICAgR0x1aW50IG1Qcm9ncmFtOworICAgIEdM
aW50IG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9uOworfTsKKworVEVTVF9QKEluY29tcGxldGVUZXh0
dXJlVGVzdCwgSW5jb21wbGV0ZVRleHR1cmUyRCkKK3sKKyAgICBHTHVpbnQgdGV4OworICAgIGds
R2VuVGV4dHVyZXMoMSwgJnRleCk7CisgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsK
KyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleCk7CisKKyAgICBnbFVzZVByb2dy
YW0obVByb2dyYW0pOworICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9uLCAw
KTsKKworICAgIGNvbnN0IEdMc2l6ZWkgdGV4dHVyZVdpZHRoID0gMjsKKyAgICBjb25zdCBHTHNp
emVpIHRleHR1cmVIZWlnaHQgPSAyOworICAgIHN0ZDo6dmVjdG9yPEdMdWJ5dGU+IHRleHR1cmVE
YXRhKHRleHR1cmVXaWR0aCAqIHRleHR1cmVIZWlnaHQgKiA0KTsKKyAgICBmaWxsVGV4dHVyZURh
dGEodGV4dHVyZURhdGEsIDI1NSwgMCwgMCwgMjU1KTsKKworICAgIGdsVGV4SW1hZ2UyRChHTF9U
RVhUVVJFXzJELCAwLCBHTF9SR0JBLCB0ZXh0dXJlV2lkdGgsIHRleHR1cmVIZWlnaHQsIDAsIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsICZ0ZXh0dXJlRGF0YVswXSk7CisgICAgZ2xUZXhQYXJh
bWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7
CisKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgRVhQRUNU
X1BJWEVMX0VRKDAsIDAsIDI1NSwgMCwgMCwgMjU1KTsKKworICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUl9NSVBNQVBfTElO
RUFSKTsKKworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICBF
WFBFQ1RfUElYRUxfRVEoMCwgMCwgMCwgMCwgMCwgMjU1KTsKKworICAgIGdsVGV4SW1hZ2UyRChH
TF9URVhUVVJFXzJELCAxLCBHTF9SR0JBLCB0ZXh0dXJlV2lkdGggPj4gMSwgdGV4dHVyZUhlaWdo
dCA+PiAxLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAmdGV4dHVyZURhdGFbMF0pOwor
CisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworICAgIEVYUEVDVF9Q
SVhFTF9FUSgwLCAwLCAyNTUsIDAsIDAsIDI1NSk7CisKKyAgICBnbERlbGV0ZVRleHR1cmVzKDEs
ICZ0ZXgpOworfQorCitURVNUX1AoSW5jb21wbGV0ZVRleHR1cmVUZXN0LCBVcGRhdGVUZXh0dXJl
KQoreworICAgIEdMdWludCB0ZXg7CisgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4KTsKKyAgICBn
bEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVS
RV8yRCwgdGV4KTsKKworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgZ2xVbmlmb3Jt
MWkobVRleHR1cmVVbmlmb3JtTG9jYXRpb24sIDApOworCisgICAgY29uc3QgR0xzaXplaSByZWRU
ZXh0dXJlV2lkdGggPSA2NDsKKyAgICBjb25zdCBHTHNpemVpIHJlZFRleHR1cmVIZWlnaHQgPSA2
NDsKKyAgICBzdGQ6OnZlY3RvcjxHTHVieXRlPiByZWRUZXh0dXJlRGF0YShyZWRUZXh0dXJlV2lk
dGggKiByZWRUZXh0dXJlSGVpZ2h0ICogNCk7CisgICAgZmlsbFRleHR1cmVEYXRhKHJlZFRleHR1
cmVEYXRhLCAyNTUsIDAsIDAsIDI1NSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA3OyBp
KyspCisgICAgeworICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgc3RhdGljX2Nh
c3Q8R0xpbnQ+KGkpLCBHTF9SR0JBLCByZWRUZXh0dXJlV2lkdGggPj4gaSwKKyAgICAgICAgICAg
ICAgICAgICAgIHJlZFRleHR1cmVIZWlnaHQgPj4gaSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURf
QllURSwgJnJlZFRleHR1cmVEYXRhWzBdKTsKKyAgICB9CisKKyAgICBnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xB
TVBfVE9fRURHRSk7CisKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7
CisgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDI1NSwgMCwgMCwgMjU1KTsKKworICAgIGNvbnN0
IEdMc2l6ZWkgZ3JlZW5UZXh0dXJlV2lkdGggPSAzMjsKKyAgICBjb25zdCBHTHNpemVpIGdyZWVu
VGV4dHVyZUhlaWdodCA9IDMyOworICAgIHN0ZDo6dmVjdG9yPEdMdWJ5dGU+IGdyZWVuVGV4dHVy
ZURhdGEoZ3JlZW5UZXh0dXJlV2lkdGggKiBncmVlblRleHR1cmVIZWlnaHQgKiA0KTsKKyAgICBm
aWxsVGV4dHVyZURhdGEoZ3JlZW5UZXh0dXJlRGF0YSwgMCwgMjU1LCAwLCAyNTUpOworCisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCA2OyBpKyspCisgICAgeworICAgICAgICBnbFRleFN1Yklt
YWdlMkQoR0xfVEVYVFVSRV8yRCwgc3RhdGljX2Nhc3Q8R0xpbnQ+KGkpLCBncmVlblRleHR1cmVX
aWR0aCA+PiBpLAorICAgICAgICAgICAgICAgICAgICAgICAgZ3JlZW5UZXh0dXJlSGVpZ2h0ID4+
IGksIGdyZWVuVGV4dHVyZVdpZHRoID4+IGksIGdyZWVuVGV4dHVyZUhlaWdodCA+PiBpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgJmdyZWVuVGV4
dHVyZURhdGFbMF0pOworICAgIH0KKworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24i
LCAwLjVmKTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoZ2V0V2luZG93V2lkdGgoKSAtIGdyZWVuVGV4
dHVyZVdpZHRoLCBnZXRXaW5kb3dIZWlnaHQoKSAtIGdyZWVuVGV4dHVyZVdpZHRoLCAwLCAyNTUs
IDAsIDI1NSk7CisKKyAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0ZXgpOworfQorCisvLyBVc2Ug
dGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIs
IHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2Fp
bnN0LgorQU5HTEVfSU5TVEFOVElBVEVfVEVTVChJbmNvbXBsZXRlVGV4dHVyZVRlc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVT
Ml9EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCisgICAgICAg
ICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9JbmRleEJ1ZmZlck9mZnNldFRlc3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9JbmRl
eEJ1ZmZlck9mZnNldFRlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9JbmRleEJ1ZmZlck9mZnNldFRlc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTU2IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBJbmRleEJ1ZmZlck9m
ZnNldFRlc3QuY3BwOiBUZXN0IGdsRHJhd0VsZW1lbnRzIHdpdGggYW4gb2Zmc2V0IGFuZCBhbiBp
bmRleCBidWZmZXIKKworI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisjaW5jbHVk
ZSAic3lzdGVtX3V0aWxzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKworY2xhc3MgSW5k
ZXhCdWZmZXJPZmZzZXRUZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6Cisg
ICAgSW5kZXhCdWZmZXJPZmZzZXRUZXN0KCkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRo
KDEyOCk7CisgICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOworICAgICAgICBzZXRDb25maWdS
ZWRCaXRzKDgpOworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENv
bmZpZ0JsdWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgfQor
CisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNl
dFVwKCk7CisKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0K
KyAgICAgICAgICAgIFNIQURFUl9TT1VSQ0UocHJlY2lzaW9uIGhpZ2hwIGZsb2F0OyBhdHRyaWJ1
dGUgdmVjMiBwb3NpdGlvbjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIG1haW4o
KQorICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAuMCwgMS4wKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRT
aGFkZXJTb3VyY2UgPQorICAgICAgICAgICAgU0hBREVSX1NPVVJDRShwcmVjaXNpb24gaGlnaHAg
ZmxvYXQ7IHVuaWZvcm0gdmVjNCBjb2xvcjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICB2
b2lkIG1haW4oKQorICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSBjb2xvcjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFk
ZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKKyAgICAgICAgQVNTRVJUX05FKDB1LCBt
UHJvZ3JhbSk7CisKKyAgICAgICAgbUNvbG9yVW5pZm9ybUxvY2F0aW9uICAgICAgPSBnbEdldFVu
aWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgImNvbG9yIik7CisgICAgICAgIG1Qb3NpdGlvbkF0dHJp
YnV0ZUxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgInBvc2l0aW9uIik7
CisKKyAgICAgICAgY29uc3QgR0xmbG9hdCB2ZXJ0aWNlc1tdID0KKyAgICAgICAgeworICAgICAg
ICAgICAgLTEuMGYsIC0xLjBmLAorICAgICAgICAgICAgLTEuMGYsICAxLjBmLAorICAgICAgICAg
ICAgIDEuMGYsIC0xLjBmLAorICAgICAgICAgICAgIDEuMGYsICAxLjBmCisgICAgICAgIH07Cisg
ICAgICAgIGdsR2VuQnVmZmVycygxLCAmbVZlcnRleEJ1ZmZlcik7CisgICAgICAgIGdsQmluZEJ1
ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1WZXJ0ZXhCdWZmZXIpOworICAgICAgICBnbEJ1ZmZlckRh
dGEoR0xfQVJSQVlfQlVGRkVSLCBzaXplb2YodmVydGljZXMpLCAmdmVydGljZXNbMF0sIEdMX1NU
QVRJQ19EUkFXKTsKKworICAgICAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1JbmRleEJ1ZmZlcik7Cisg
ICAgICAgIGdsQmluZEJ1ZmZlcihHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbUluZGV4QnVmZmVy
KTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IGdsRGVsZXRlQnVmZmVycygxLCAmbVZlcnRleEJ1ZmZlcik7CisgICAgICAgIGdsRGVsZXRlQnVm
ZmVycygxLCAmbUluZGV4QnVmZmVyKTsKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFt
KTsKKyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOworICAgIH0KKworICAgIHZvaWQgcnVu
VGVzdChHTGVudW0gdHlwZSwgaW50IHR5cGVXaWR0aCwgdm9pZCAqaW5kZXhEYXRhKQorICAgIHsK
KyAgICAgICAgZ2xDbGVhckNvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOworICAgICAgICBn
bENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworCisgICAgICAgIEdMdWludCBudWxsSW5kZXhE
YXRhW10gPSB7MCwgMCwgMCwgMCwgMCwgMH07CisKKyAgICAgICAgc2l6ZV90IGluZGV4RGF0YVdp
ZHRoID0gNiAqIHR5cGVXaWR0aDsKKworICAgICAgICBnbEJ1ZmZlckRhdGEoR0xfRUxFTUVOVF9B
UlJBWV9CVUZGRVIsIDMgKiBpbmRleERhdGFXaWR0aCwgbnVsbHB0ciwgR0xfRFlOQU1JQ19EUkFX
KTsKKyAgICAgICAgZ2xCdWZmZXJTdWJEYXRhKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCAwLCBp
bmRleERhdGFXaWR0aCwgbnVsbEluZGV4RGF0YSk7CisgICAgICAgIGdsQnVmZmVyU3ViRGF0YShH
TF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgaW5kZXhEYXRhV2lkdGgsIGluZGV4RGF0YVdpZHRoLCBp
bmRleERhdGEpOworICAgICAgICBnbEJ1ZmZlclN1YkRhdGEoR0xfRUxFTUVOVF9BUlJBWV9CVUZG
RVIsIDIgKiBpbmRleERhdGFXaWR0aCwgaW5kZXhEYXRhV2lkdGgsIG51bGxJbmRleERhdGEpOwor
CisgICAgICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisKKyAgICAgICAgZ2xCaW5kQnVmZmVy
KEdMX0FSUkFZX0JVRkZFUiwgbVZlcnRleEJ1ZmZlcik7CisgICAgICAgIGdsVmVydGV4QXR0cmli
UG9pbnRlcihtUG9zaXRpb25BdHRyaWJ1dGVMb2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNF
LCAwLCAwKTsKKyAgICAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtUG9zaXRpb25BdHRy
aWJ1dGVMb2NhdGlvbik7CisKKyAgICAgICAgZ2xVbmlmb3JtNGYobUNvbG9yVW5pZm9ybUxvY2F0
aW9uLCAxLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKKworICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IDE2OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsRHJhd0VsZW1lbnRzKEdMX1RS
SUFOR0xFUywgNiwgdHlwZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQgKj4oaW5kZXhEYXRhV2lk
dGgpKTsKKyAgICAgICAgICAgIEVYUEVDVF9QSVhFTF9FUSg2NCwgNjQsIDI1NSwgMCwgMCwgMjU1
KTsKKyAgICAgICAgfQorCisgICAgICAgIGdsQnVmZmVyU3ViRGF0YShHTF9FTEVNRU5UX0FSUkFZ
X0JVRkZFUiwgaW5kZXhEYXRhV2lkdGgsIGluZGV4RGF0YVdpZHRoLCBudWxsSW5kZXhEYXRhKTsK
KyAgICAgICAgZ2xCdWZmZXJTdWJEYXRhKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCAyICogaW5k
ZXhEYXRhV2lkdGgsIGluZGV4RGF0YVdpZHRoLCBpbmRleERhdGEpOworCisgICAgICAgIGdsVW5p
Zm9ybTRmKG1Db2xvclVuaWZvcm1Mb2NhdGlvbiwgMC4wZiwgMS4wZiwgMC4wZiwgMS4wZik7Cisg
ICAgICAgIGdsRHJhd0VsZW1lbnRzKEdMX1RSSUFOR0xFUywgNiwgdHlwZSwgcmVpbnRlcnByZXRf
Y2FzdDxHTHZvaWQgKj4oaW5kZXhEYXRhV2lkdGggKiAyKSk7CisgICAgICAgIEVYUEVDVF9QSVhF
TF9FUSg2NCwgNjQsIDAsIDI1NSwgMCwgMjU1KTsKKworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJS
T1IoKTsKKyAgICAgICAgc3dhcEJ1ZmZlcnMoKTsKKyAgICB9CisKKyAgICBHTHVpbnQgbVByb2dy
YW07CisgICAgR0xpbnQgbUNvbG9yVW5pZm9ybUxvY2F0aW9uOworICAgIEdMaW50IG1Qb3NpdGlv
bkF0dHJpYnV0ZUxvY2F0aW9uOworICAgIEdMdWludCBtVmVydGV4QnVmZmVyOworICAgIEdMdWlu
dCBtSW5kZXhCdWZmZXI7Cit9OworCisvLyBUZXN0IHVzaW5nIGFuIG9mZnNldCBmb3IgYW4gVUlu
dDggaW5kZXggYnVmZmVyCitURVNUX1AoSW5kZXhCdWZmZXJPZmZzZXRUZXN0LCBVSW50OEluZGV4
KQoreworICAgIEdMdWJ5dGUgaW5kZXhEYXRhW10gPSB7MCwgMSwgMiwgMSwgMiwgM307CisgICAg
cnVuVGVzdChHTF9VTlNJR05FRF9CWVRFLCAxLCBpbmRleERhdGEpOworfQorCisvLyBUZXN0IHVz
aW5nIGFuIG9mZnNldCBmb3IgYW4gVUludDE2IGluZGV4IGJ1ZmZlcgorVEVTVF9QKEluZGV4QnVm
ZmVyT2Zmc2V0VGVzdCwgVUludDE2SW5kZXgpCit7CisgICAgR0x1c2hvcnQgaW5kZXhEYXRhW10g
PSB7MCwgMSwgMiwgMSwgMiwgM307CisgICAgcnVuVGVzdChHTF9VTlNJR05FRF9TSE9SVCwgMiwg
aW5kZXhEYXRhKTsKK30KKworLy8gVGVzdCB1c2luZyBhbiBvZmZzZXQgZm9yIGFuIFVJbnQzMiBp
bmRleCBidWZmZXIKK1RFU1RfUChJbmRleEJ1ZmZlck9mZnNldFRlc3QsIFVJbnQzMkluZGV4KQor
eworICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMgJiYgIWV4dGVuc2lvbkVuYWJs
ZWQoIkdMX09FU19lbGVtZW50X2luZGV4X3VpbnQiKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291
dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgRVMzIG9yIEdMX09FU19lbGVtZW50X2luZGV4X3Vp
bnQgaXMgbm90IGF2YWlsYWJsZS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIEdMdWludCBpbmRleERhdGFbXSA9IHswLCAxLCAyLCAxLCAyLCAzfTsKKyAgICBy
dW5UZXN0KEdMX1VOU0lHTkVEX0lOVCwgNCwgaW5kZXhEYXRhKTsKK30KKworQU5HTEVfSU5TVEFO
VElBVEVfVEVTVChJbmRleEJ1ZmZlck9mZnNldFRlc3QsCisgICAgICAgICAgICAgICAgICAgICAg
IEVTMl9EM0Q5KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAorICAgICAg
ICAgICAgICAgICAgICAgICBFUzNfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMy
X09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKCksCisgICAgICAg
ICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpLAorICAgICAgICAgICAgICAgICAgICAgICBF
UzNfT1BFTkdMRVMoKSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
Z2xfdGVzdHMvSW5kZXhlZFBvaW50c1Rlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9JbmRleGVkUG9pbnRzVGVzdC5jcHAJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3Rz
L0luZGV4ZWRQb2ludHNUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQwMyBAQAor
Ly8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgorLy8KKworI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKK3VzaW5nIG5h
bWVzcGFjZSBhbmdsZTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEluZGV4VHlwZSwgR0xlbnVtIElu
ZGV4VHlwZU5hbWU+CitjbGFzcyBJbmRleGVkUG9pbnRzVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QK
K3sKKyAgcHJvdGVjdGVkOgorICAgIEluZGV4ZWRQb2ludHNUZXN0KCkKKyAgICB7CisgICAgICAg
IHNldFdpbmRvd1dpZHRoKDEyOCk7CisgICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOworICAg
ICAgICBzZXRDb25maWdSZWRCaXRzKDgpOworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7
CisgICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJp
dHMoOCk7CisgICAgICAgIHNldENvbmZpZ0RlcHRoQml0cygyNCk7CisgICAgfQorCisgICAgZmxv
YXQgZ2V0SW5kZXhQb3NpdGlvblgoc2l6ZV90IGlkeCkKKyAgICB7CisgICAgICAgIHJldHVybiAo
aWR4ID09IDAgfHwgaWR4ID09IDMpID8gLTAuNWYgOiAwLjVmOworICAgIH0KKworICAgIGZsb2F0
IGdldEluZGV4UG9zaXRpb25ZKHNpemVfdCBpZHgpCisgICAgeworICAgICAgICByZXR1cm4gKGlk
eCA9PSAyIHx8IGlkeCA9PSAzKSA/IC0wLjVmIDogMC41ZjsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgU2V0VXAoKQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOworCisgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UK
KyAgICAgICAgKAorICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworICAgICAgICAg
ICAgYXR0cmlidXRlIHZlYzIgcG9zaXRpb247CisKKyAgICAgICAgICAgIHZvaWQgbWFpbigpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xfUG9pbnRTaXplID0gNS4wOworICAgICAg
ICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMC4wLCAxLjApOworICAgICAg
ICAgICAgfQorICAgICAgICApOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50
U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQorICAgICAgICAoCisgICAgICAgICAgICBwcmVj
aXNpb24gaGlnaHAgZmxvYXQ7CisKKyAgICAgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAx
LjApOworICAgICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAgIG1Qcm9ncmFtID0gQ29t
cGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7Cisg
ICAgICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nIHZlcnRleFNoYWRlclNvdXJjZTIgPSBTSEFERVJfU09VUkNFCisgICAgICAgICgKKyAgICAg
ICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKKyAgICAgICAgICAgIGF0dHJpYnV0ZSB2ZWMy
IHBvc2l0aW9uOworICAgICAgICAgICAgYXR0cmlidXRlIHZlYzQgY29sb3I7CisgICAgICAgICAg
ICB2YXJ5aW5nIHZlYzQgdmNvbG9yOworCisgICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGdsX1BvaW50U2l6ZSA9IDUuMDsKKyAgICAgICAgICAg
ICAgICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAuMCwgMS4wKTsKKyAgICAgICAgICAg
ICAgICB2Y29sb3IgPSBjb2xvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZTIgPSBTSEFERVJfU09VUkNF
CisgICAgICAgICgKKyAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKKyAgICAgICAg
ICAgIHZhcnlpbmcgdmVjNCB2Y29sb3I7CisgICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQodmNvbG9yLnh5eiwg
MS4wKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICBtVmVydGV4V2l0aENv
bG9yQnVmZmVyUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZTIsIGZy
YWdtZW50U2hhZGVyU291cmNlMik7CisgICAgICAgIEFTU0VSVF9ORSgwdSwgbVZlcnRleFdpdGhD
b2xvckJ1ZmZlclByb2dyYW0pOworCisgICAgICAgIC8vIENvbnN0cnVjdCBhIHZlcnRleCBidWZm
ZXIgb2YgcG9zaXRpb24gdmFsdWVzIGFuZCBjb2xvciB2YWx1ZXMKKyAgICAgICAgLy8gY29udGFp
bmVkIGluIGEgc2luZ2xlIHN0cnVjdHVyZQorICAgICAgICBjb25zdCBmbG9hdCB2ZXJ0aWNlc1dp
dGhDb2xvcltdID0KKyAgICAgICAgeworICAgICAgICAgICAgZ2V0SW5kZXhQb3NpdGlvblgoMCks
IGdldEluZGV4UG9zaXRpb25ZKDApLCAwLjBmLCAxLjBmLCAwLjBmLAorICAgICAgICAgICAgZ2V0
SW5kZXhQb3NpdGlvblgoMiksIGdldEluZGV4UG9zaXRpb25ZKDIpLCAwLjBmLCAxLjBmLCAwLjBm
LAorICAgICAgICAgICAgZ2V0SW5kZXhQb3NpdGlvblgoMSksIGdldEluZGV4UG9zaXRpb25ZKDEp
LCAwLjBmLCAxLjBmLCAwLjBmLAorICAgICAgICAgICAgZ2V0SW5kZXhQb3NpdGlvblgoMyksIGdl
dEluZGV4UG9zaXRpb25ZKDMpLCAwLjBmLCAxLjBmLCAwLjBmLAorICAgICAgICB9OworCisgICAg
ICAgIGdsR2VuQnVmZmVycygxLCAmbVZlcnRleFdpdGhDb2xvckJ1ZmZlcik7CisgICAgICAgIGds
QmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1WZXJ0ZXhXaXRoQ29sb3JCdWZmZXIpOworICAg
ICAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBzaXplb2YodmVydGljZXNXaXRoQ29s
b3IpLCAmdmVydGljZXNXaXRoQ29sb3JbMF0sIEdMX1NUQVRJQ19EUkFXKTsKKworICAgICAgICAv
LyBDb25zdHJ1Y3QgYSB2ZXJ0ZXggYnVmZmVyIG9mIHBvc2l0aW9uIHZhbHVlcyBvbmx5CisgICAg
ICAgIGNvbnN0IEdMZmxvYXQgdmVydGljZXNbXSA9CisgICAgICAgIHsKKyAgICAgICAgICAgIGdl
dEluZGV4UG9zaXRpb25YKDApLCBnZXRJbmRleFBvc2l0aW9uWSgwKSwKKyAgICAgICAgICAgIGdl
dEluZGV4UG9zaXRpb25YKDIpLCBnZXRJbmRleFBvc2l0aW9uWSgyKSwKKyAgICAgICAgICAgIGdl
dEluZGV4UG9zaXRpb25YKDEpLCBnZXRJbmRleFBvc2l0aW9uWSgxKSwKKyAgICAgICAgICAgIGdl
dEluZGV4UG9zaXRpb25YKDMpLCBnZXRJbmRleFBvc2l0aW9uWSgzKSwKKyAgICAgICAgfTsKKyAg
ICAgICAgZ2xHZW5CdWZmZXJzKDEsICZtVmVydGV4QnVmZmVyKTsKKyAgICAgICAgZ2xCaW5kQnVm
ZmVyKEdMX0FSUkFZX0JVRkZFUiwgbVZlcnRleEJ1ZmZlcik7CisgICAgICAgIGdsQnVmZmVyRGF0
YShHTF9BUlJBWV9CVUZGRVIsIHNpemVvZih2ZXJ0aWNlcyksICZ2ZXJ0aWNlc1swXSwgR0xfU1RB
VElDX0RSQVcpOworCisgICAgICAgIC8vIFRoZSBpbmRpY2VzIGJ1ZmZlciBpcyBzaGFyZWQgYmV0
d2VlbiBib3RoIHZhcmlhdGlvbnMgb2YgdGVzdHMKKyAgICAgICAgY29uc3QgSW5kZXhUeXBlIGlu
ZGljZXNbXSA9IHsgMCwgMiwgMSwgMyB9OworICAgICAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1JbmRl
eEJ1ZmZlcik7CisgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwg
bUluZGV4QnVmZmVyKTsKKyAgICAgICAgZ2xCdWZmZXJEYXRhKEdMX0VMRU1FTlRfQVJSQVlfQlVG
RkVSLCBzaXplb2YoaW5kaWNlcyksICZpbmRpY2VzWzBdLCBHTF9TVEFUSUNfRFJBVyk7CisgICAg
fQorCisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKKyAgICB7CisgICAgICAgIGdsRGVsZXRl
QnVmZmVycygxLCAmbVZlcnRleEJ1ZmZlcik7CisgICAgICAgIGdsRGVsZXRlQnVmZmVycygxLCAm
bUluZGV4QnVmZmVyKTsKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKKworICAg
ICAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1WZXJ0ZXhXaXRoQ29sb3JCdWZmZXIpOworICAgICAg
ICBnbERlbGV0ZVByb2dyYW0obVZlcnRleFdpdGhDb2xvckJ1ZmZlclByb2dyYW0pOworICAgICAg
ICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7CisgICAgfQorCisgICAgdm9pZCBydW5UZXN0KEdMdWlu
dCBmaXJzdEluZGV4LCBib29sIHVzZVZlcnRleEJ1ZmZlcldpdGhDb2xvciA9IGZhbHNlKQorICAg
IHsKKyAgICAgICAgZ2xDbGVhckNvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOworICAgICAg
ICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworCisgICAgICAgIEdMaW50IHZpZXdwb3J0
U2l6ZVs0XTsKKyAgICAgICAgZ2xHZXRJbnRlZ2VydihHTF9WSUVXUE9SVCwgdmlld3BvcnRTaXpl
KTsKKworICAgICAgICAvLyBDaG9vc2UgYXBwcm9wcmlhdGUgcHJvZ3JhbSB0byBhcHBseSBmb3Ig
dGhlIHRlc3QKKyAgICAgICAgR0x1aW50IHByb2dyYW0gPSB1c2VWZXJ0ZXhCdWZmZXJXaXRoQ29s
b3IgPyBtVmVydGV4V2l0aENvbG9yQnVmZmVyUHJvZ3JhbSA6IG1Qcm9ncmFtOworCisgICAgICAg
IGlmICh1c2VWZXJ0ZXhCdWZmZXJXaXRoQ29sb3IpCisgICAgICAgIHsKKyAgICAgICAgICAgIGds
QmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1WZXJ0ZXhXaXRoQ29sb3JCdWZmZXIpOworICAg
ICAgICAgICAgR0xpbnQgdmVydGV4TG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKHByb2dy
YW0sICJwb3NpdGlvbiIpOworICAgICAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHZlcnRl
eExvY2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgR0xzaXplaT4oVmVydGV4V2l0aENvbG9yU2l6
ZSksIDApOworICAgICAgICAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh2ZXJ0ZXhMb2Nh
dGlvbik7CisKKyAgICAgICAgICAgIEdMaW50IHZlcnRleENvbG9yTG9jYXRpb24gPSBnbEdldEF0
dHJpYkxvY2F0aW9uKHByb2dyYW0sICJjb2xvciIpOworICAgICAgICAgICAgZ2xWZXJ0ZXhBdHRy
aWJQb2ludGVyKHZlcnRleENvbG9yTG9jYXRpb24sIDMsIEdMX0ZMT0FULCBHTF9GQUxTRSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBHTHNpemVp
PihWZXJ0ZXhXaXRoQ29sb3JTaXplKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoR0x2b2lkICopKChzaXplb2YoZmxvYXQpICogMikpKTsKKyAgICAgICAgICAgIGdsRW5hYmxl
VmVydGV4QXR0cmliQXJyYXkodmVydGV4Q29sb3JMb2NhdGlvbik7CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVG
RkVSLCBtVmVydGV4QnVmZmVyKTsKKyAgICAgICAgICAgIEdMaW50IHZlcnRleExvY2F0aW9uID0g
Z2xHZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAicG9zaXRpb24iKTsKKyAgICAgICAgICAgIGds
VmVydGV4QXR0cmliUG9pbnRlcih2ZXJ0ZXhMb2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNF
LCAwLCAwKTsKKyAgICAgICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkodmVydGV4TG9j
YXRpb24pOworICAgICAgICB9CisKKyAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0VMRU1FTlRfQVJS
QVlfQlVGRkVSLCBtSW5kZXhCdWZmZXIpOworICAgICAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbSk7
CisKKyAgICAgICAgZ2xEcmF3RWxlbWVudHMoR0xfUE9JTlRTLCBtUG9pbnRDb3VudCAtIGZpcnN0
SW5kZXgsIEluZGV4VHlwZU5hbWUsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGZpcnN0SW5kZXgg
KiBzaXplb2YoSW5kZXhUeXBlKSkpOworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bVBvaW50Q291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgR0x1aW50IHggPSBzdGF0
aWNfY2FzdDxHTHVpbnQ+KHZpZXdwb3J0U2l6ZVswXSArIChnZXRJbmRleFBvc2l0aW9uWChpKSAq
IDAuNWYgKyAwLjVmKSAqICh2aWV3cG9ydFNpemVbMl0gLSB2aWV3cG9ydFNpemVbMF0pKTsKKyAg
ICAgICAgICAgIEdMdWludCB5ID0gc3RhdGljX2Nhc3Q8R0x1aW50Pih2aWV3cG9ydFNpemVbMV0g
KyAoZ2V0SW5kZXhQb3NpdGlvblkoaSkgKiAwLjVmICsgMC41ZikgKiAodmlld3BvcnRTaXplWzNd
IC0gdmlld3BvcnRTaXplWzFdKSk7CisKKyAgICAgICAgICAgIGlmIChpIDwgZmlyc3RJbmRleCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfUElYRUxfRVEoeCwgeSwgMCwg
MCwgMCwgMjU1KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBpZiAodXNlVmVydGV4QnVmZmVyV2l0aENvbG9yKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gUGl4ZWwgZGF0YSBpcyBhc3N1bWVk
IHRvIGJlIEdSRUVOCisgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9QSVhFTF9FUSh4LCB5LCAw
LCAyNTUsIDAsIDI1NSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIFBpeGVsIGRhdGEgaXMg
YXNzdW1lZCB0byBiZSBSRUQKKyAgICAgICAgICAgICAgICAgICAgRVhQRUNUX1BJWEVMX0VRKHgs
IHksIDI1NSwgMCwgMCwgMjU1KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgc3dhcEJ1ZmZlcnMoKTsKKyAgICB9CisKKyAgICBHTHVpbnQgbVBy
b2dyYW07CisgICAgR0x1aW50IG1WZXJ0ZXhCdWZmZXI7CisgICAgR0x1aW50IG1JbmRleEJ1ZmZl
cjsKKworICAgIEdMdWludCBtVmVydGV4V2l0aENvbG9yQnVmZmVyUHJvZ3JhbTsKKyAgICBHTHVp
bnQgbVZlcnRleFdpdGhDb2xvckJ1ZmZlcjsKKworICAgIHN0YXRpYyBjb25zdCBHTHVpbnQgbVBv
aW50Q291bnQgPSA0OworCisgIHByaXZhdGU6CisgICAgY29uc3Qgc2l6ZV90IFZlcnRleFdpdGhD
b2xvclNpemUgPSBzaXplb2YoZmxvYXQpICogNTsKK307CisKK3R5cGVkZWYgSW5kZXhlZFBvaW50
c1Rlc3Q8R0x1Ynl0ZSwgR0xfVU5TSUdORURfQllURT4gSW5kZXhlZFBvaW50c1Rlc3RVQnl0ZTsK
KworVEVTVF9QKEluZGV4ZWRQb2ludHNUZXN0VUJ5dGUsIFVuc2lnbmVkQnl0ZU9mZnNldDApCit7
CisgICAgcnVuVGVzdCgwKTsKK30KKworVEVTVF9QKEluZGV4ZWRQb2ludHNUZXN0VUJ5dGUsIFVu
c2lnbmVkQnl0ZU9mZnNldDEpCit7CisgICAgcnVuVGVzdCgxKTsKK30KKworVEVTVF9QKEluZGV4
ZWRQb2ludHNUZXN0VUJ5dGUsIFVuc2lnbmVkQnl0ZU9mZnNldDIpCit7CisgICAgcnVuVGVzdCgy
KTsKK30KKworVEVTVF9QKEluZGV4ZWRQb2ludHNUZXN0VUJ5dGUsIFVuc2lnbmVkQnl0ZU9mZnNl
dDMpCit7CisgICAgcnVuVGVzdCgzKTsKK30KKworVEVTVF9QKEluZGV4ZWRQb2ludHNUZXN0VUJ5
dGUsIFZlcnRleFdpdGhDb2xvclVuc2lnbmVkQnl0ZU9mZnNldDApCit7CisgICAgcnVuVGVzdCgw
LCB0cnVlKTsKK30KKworVEVTVF9QKEluZGV4ZWRQb2ludHNUZXN0VUJ5dGUsIFZlcnRleFdpdGhD
b2xvclVuc2lnbmVkQnl0ZU9mZnNldDEpCit7CisgICAgcnVuVGVzdCgxLCB0cnVlKTsKK30KKwor
VEVTVF9QKEluZGV4ZWRQb2ludHNUZXN0VUJ5dGUsIFZlcnRleFdpdGhDb2xvclVuc2lnbmVkQnl0
ZU9mZnNldDIpCit7CisgICAgcnVuVGVzdCgyLCB0cnVlKTsKK30KKworVEVTVF9QKEluZGV4ZWRQ
b2ludHNUZXN0VUJ5dGUsIFZlcnRleFdpdGhDb2xvclVuc2lnbmVkQnl0ZU9mZnNldDMpCit7Cisg
ICAgcnVuVGVzdCgzLCB0cnVlKTsKK30KKwordHlwZWRlZiBJbmRleGVkUG9pbnRzVGVzdDxHTHVz
aG9ydCwgR0xfVU5TSUdORURfU0hPUlQ+IEluZGV4ZWRQb2ludHNUZXN0VVNob3J0OworCitURVNU
X1AoSW5kZXhlZFBvaW50c1Rlc3RVU2hvcnQsIFVuc2lnbmVkU2hvcnRPZmZzZXQwKQoreworICAg
IHJ1blRlc3QoMCk7Cit9CisKK1RFU1RfUChJbmRleGVkUG9pbnRzVGVzdFVTaG9ydCwgVW5zaWdu
ZWRTaG9ydE9mZnNldDEpCit7CisgICAgcnVuVGVzdCgxKTsKK30KKworVEVTVF9QKEluZGV4ZWRQ
b2ludHNUZXN0VVNob3J0LCBVbnNpZ25lZFNob3J0T2Zmc2V0MikKK3sKKyAgICBydW5UZXN0KDIp
OworfQorCitURVNUX1AoSW5kZXhlZFBvaW50c1Rlc3RVU2hvcnQsIFVuc2lnbmVkU2hvcnRPZmZz
ZXQzKQoreworICAgIHJ1blRlc3QoMyk7Cit9CisKK1RFU1RfUChJbmRleGVkUG9pbnRzVGVzdFVT
aG9ydCwgVmVydGV4V2l0aENvbG9yVW5zaWduZWRTaG9ydE9mZnNldDApCit7CisgICAgcnVuVGVz
dCgwLCB0cnVlKTsKK30KKworVEVTVF9QKEluZGV4ZWRQb2ludHNUZXN0VVNob3J0LCBWZXJ0ZXhX
aXRoQ29sb3JVbnNpZ25lZFNob3J0T2Zmc2V0MSkKK3sKKyAgICBydW5UZXN0KDEsIHRydWUpOwor
fQorCitURVNUX1AoSW5kZXhlZFBvaW50c1Rlc3RVU2hvcnQsIFZlcnRleFdpdGhDb2xvclVuc2ln
bmVkU2hvcnRPZmZzZXQyKQoreworICAgIHJ1blRlc3QoMiwgdHJ1ZSk7Cit9CisKK1RFU1RfUChJ
bmRleGVkUG9pbnRzVGVzdFVTaG9ydCwgVmVydGV4V2l0aENvbG9yVW5zaWduZWRTaG9ydE9mZnNl
dDMpCit7CisgICAgcnVuVGVzdCgzLCB0cnVlKTsKK30KKworVEVTVF9QKEluZGV4ZWRQb2ludHNU
ZXN0VVNob3J0LCBWZXJ0ZXhXaXRoQ29sb3JVbnNpZ25lZFNob3J0T2Zmc2V0Q2hhbmdpbmdJbmRp
Y2VzKQoreworICAgIHJ1blRlc3QoMywgdHJ1ZSk7CisgICAgcnVuVGVzdCgxLCB0cnVlKTsKKyAg
ICBydW5UZXN0KDAsIHRydWUpOworICAgIHJ1blRlc3QoMiwgdHJ1ZSk7Cit9CisKK3R5cGVkZWYg
SW5kZXhlZFBvaW50c1Rlc3Q8R0x1aW50LCBHTF9VTlNJR05FRF9JTlQ+IEluZGV4ZWRQb2ludHNU
ZXN0VUludDsKKworVEVTVF9QKEluZGV4ZWRQb2ludHNUZXN0VUludCwgVW5zaWduZWRJbnRPZmZz
ZXQwKQoreworICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMgJiYgIWV4dGVuc2lv
bkVuYWJsZWQoIkdMX09FU19lbGVtZW50X2luZGV4X3VpbnQiKSkKKyAgICB7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBydW5UZXN0KDApOworfQorCitURVNUX1AoSW5kZXhlZFBvaW50
c1Rlc3RVSW50LCBVbnNpZ25lZEludE9mZnNldDEpCit7CisgICAgaWYgKGdldENsaWVudE1ham9y
VmVyc2lvbigpIDwgMyAmJiAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2VsZW1lbnRfaW5kZXhf
dWludCIpKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHJ1blRlc3QoMSk7
Cit9CisKK1RFU1RfUChJbmRleGVkUG9pbnRzVGVzdFVJbnQsIFVuc2lnbmVkSW50T2Zmc2V0MikK
K3sKKyAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFleHRlbnNpb25FbmFi
bGVkKCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50IikpCisgICAgeworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgcnVuVGVzdCgyKTsKK30KKworVEVTVF9QKEluZGV4ZWRQb2ludHNUZXN0
VUludCwgVW5zaWduZWRJbnRPZmZzZXQzKQoreworICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNp
b24oKSA8IDMgJiYgIWV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19lbGVtZW50X2luZGV4X3VpbnQi
KSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBydW5UZXN0KDMpOworfQor
CitURVNUX1AoSW5kZXhlZFBvaW50c1Rlc3RVSW50LCBWZXJ0ZXhXaXRoQ29sb3JVbnNpZ25lZElu
dE9mZnNldDApCit7CisgICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAmJiAhZXh0
ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIHJ1blRlc3QoMCwgZmFsc2UpOworfQorCitURVNUX1Ao
SW5kZXhlZFBvaW50c1Rlc3RVSW50LCBWZXJ0ZXhXaXRoQ29sb3JVbnNpZ25lZEludE9mZnNldDEp
Cit7CisgICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAmJiAhZXh0ZW5zaW9uRW5h
YmxlZCgiR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpKQorICAgIHsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIHJ1blRlc3QoMSwgZmFsc2UpOworfQorCitURVNUX1AoSW5kZXhlZFBv
aW50c1Rlc3RVSW50LCBWZXJ0ZXhXaXRoQ29sb3JVbnNpZ25lZEludE9mZnNldDIpCit7CisgICAg
aWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAmJiAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xf
T0VTX2VsZW1lbnRfaW5kZXhfdWludCIpKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHJ1blRlc3QoMiwgZmFsc2UpOworfQorCitURVNUX1AoSW5kZXhlZFBvaW50c1Rlc3RV
SW50LCBWZXJ0ZXhXaXRoQ29sb3JVbnNpZ25lZEludE9mZnNldDMpCit7CisgICAgaWYgKGdldENs
aWVudE1ham9yVmVyc2lvbigpIDwgMyAmJiAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2VsZW1l
bnRfaW5kZXhfdWludCIpKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHJ1
blRlc3QoMywgZmFsc2UpOworfQorCisvLyBUT0RPKGdlb2ZmbGFuZyk6IEZpZ3VyZSBvdXQgd2h5
IHRoaXMgdGVzdCBmYWlscyBvbiBJbnRlbCBPcGVuR0wKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1Qo
SW5kZXhlZFBvaW50c1Rlc3RVQnl0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDEx
KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDlfMygpLAorICAgICAgICAg
ICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9P
UEVOR0xFUygpKTsKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoSW5kZXhlZFBvaW50c1Rlc3RVU2hv
cnQsCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICBFUzJfRDNEMTFfRkw5XzMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09Q
RU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSk7CitBTkdMRV9J
TlNUQU5USUFURV9URVNUKEluZGV4ZWRQb2ludHNUZXN0VUludCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgRVMyX0QzRDExKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDlf
MygpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCisgICAgICAgICAgICAg
ICAgICAgICAgIEVTMl9PUEVOR0xFUygpKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9nbF90ZXN0cy9JbnN0YW5jaW5nVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0luc3RhbmNpbmdUZXN0LmNw
cAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xf
dGVzdHMvSW5zdGFuY2luZ1Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDY4IEBA
CisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKwordXNpbmcg
bmFtZXNwYWNlIGFuZ2xlOworCitjbGFzcyBJbnN0YW5jaW5nVGVzdCA6IHB1YmxpYyBBTkdMRVRl
c3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIEluc3RhbmNpbmdUZXN0KCkgOiBtUHJvZ3JhbSgwKSwg
bVZlcnRleEJ1ZmZlcigwKQorICAgIHsKKyAgICAgICAgc2V0V2luZG93V2lkdGgoMjU2KTsKKyAg
ICAgICAgc2V0V2luZG93SGVpZ2h0KDI1Nik7CisgICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7
CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQmx1ZUJp
dHMoOCk7CisgICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKKyAgICB9CisKKyAgICB+SW5z
dGFuY2luZ1Rlc3QoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgZ2xEZWxldGVCdWZmZXJzKDEs
ICZtVmVydGV4QnVmZmVyKTsKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKKyAg
ICB9CisKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFOR0xFVGVz
dDo6U2V0VXAoKTsKKworICAgICAgICBtVmVydGV4QXR0cmliRGl2aXNvckFOR0xFID0gTlVMTDsK
KyAgICAgICAgbURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSA9IE5VTEw7CisgICAgICAgIG1EcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IE5VTEw7CisKKyAgICAgICAgY2hhciAqZXh0ZW5zaW9u
U3RyaW5nID0gKGNoYXIqKWdsR2V0U3RyaW5nKEdMX0VYVEVOU0lPTlMpOworICAgICAgICBpZiAo
c3Ryc3RyKGV4dGVuc2lvblN0cmluZywgIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgbVZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSA9IChQRk5HTFZF
UlRFWEFUVFJJQkRJVklTT1JBTkdMRVBST0MpZWdsR2V0UHJvY0FkZHJlc3MoImdsVmVydGV4QXR0
cmliRGl2aXNvckFOR0xFIik7CisgICAgICAgICAgICBtRHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
ID0gKFBGTkdMRFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFUFJPQyllZ2xHZXRQcm9jQWRkcmVzcygi
Z2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUiKTsKKyAgICAgICAgICAgIG1EcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRSA9IChQRk5HTERSQVdFTEVNRU5UU0lOU1RBTkNFREFOR0xFUFJPQyllZ2xH
ZXRQcm9jQWRkcmVzcygiZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSIpOworICAgICAgICB9
CisKKyAgICAgICAgQVNTRVJUX1RSVUUobVZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSAhPSBOVUxM
KTsKKyAgICAgICAgQVNTRVJUX1RSVUUobURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSAhPSBOVUxM
KTsKKyAgICAgICAgQVNTRVJUX1RSVUUobURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFICE9IE5V
TEwpOworCisgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIHZlcnRleCBhbmQgaW5kZXggdmVjdG9y
cworICAgICAgICBHTGZsb2F0IHF2ZXJ0ZXgxWzNdID0gey1xdWFkUmFkaXVzLCAgcXVhZFJhZGl1
cywgMC4wZn07CisgICAgICAgIEdMZmxvYXQgcXZlcnRleDJbM10gPSB7LXF1YWRSYWRpdXMsIC1x
dWFkUmFkaXVzLCAwLjBmfTsKKyAgICAgICAgR0xmbG9hdCBxdmVydGV4M1szXSA9IHsgcXVhZFJh
ZGl1cywgLXF1YWRSYWRpdXMsIDAuMGZ9OworICAgICAgICBHTGZsb2F0IHF2ZXJ0ZXg0WzNdID0g
eyBxdWFkUmFkaXVzLCAgcXVhZFJhZGl1cywgMC4wZn07CisgICAgICAgIG1RdWFkVmVydGljZXMu
aW5zZXJ0KG1RdWFkVmVydGljZXMuZW5kKCksIHF2ZXJ0ZXgxLCBxdmVydGV4MSArIDMpOworICAg
ICAgICBtUXVhZFZlcnRpY2VzLmluc2VydChtUXVhZFZlcnRpY2VzLmVuZCgpLCBxdmVydGV4Miwg
cXZlcnRleDIgKyAzKTsKKyAgICAgICAgbVF1YWRWZXJ0aWNlcy5pbnNlcnQobVF1YWRWZXJ0aWNl
cy5lbmQoKSwgcXZlcnRleDMsIHF2ZXJ0ZXgzICsgMyk7CisgICAgICAgIG1RdWFkVmVydGljZXMu
aW5zZXJ0KG1RdWFkVmVydGljZXMuZW5kKCksIHF2ZXJ0ZXg0LCBxdmVydGV4NCArIDMpOworCisg
ICAgICAgIEdMZmxvYXQgY29vcmQxWzJdID0gezAuMGYsIDAuMGZ9OworICAgICAgICBHTGZsb2F0
IGNvb3JkMlsyXSA9IHswLjBmLCAxLjBmfTsKKyAgICAgICAgR0xmbG9hdCBjb29yZDNbMl0gPSB7
MS4wZiwgMS4wZn07CisgICAgICAgIEdMZmxvYXQgY29vcmQ0WzJdID0gezEuMGYsIDAuMGZ9Owor
ICAgICAgICBtVGV4Y29vcmRzLmluc2VydChtVGV4Y29vcmRzLmVuZCgpLCBjb29yZDEsIGNvb3Jk
MSArIDIpOworICAgICAgICBtVGV4Y29vcmRzLmluc2VydChtVGV4Y29vcmRzLmVuZCgpLCBjb29y
ZDIsIGNvb3JkMiArIDIpOworICAgICAgICBtVGV4Y29vcmRzLmluc2VydChtVGV4Y29vcmRzLmVu
ZCgpLCBjb29yZDMsIGNvb3JkMyArIDIpOworICAgICAgICBtVGV4Y29vcmRzLmluc2VydChtVGV4
Y29vcmRzLmVuZCgpLCBjb29yZDQsIGNvb3JkNCArIDIpOworCisgICAgICAgIG1JbmRpY2VzLnB1
c2hfYmFjaygwKTsKKyAgICAgICAgbUluZGljZXMucHVzaF9iYWNrKDEpOworICAgICAgICBtSW5k
aWNlcy5wdXNoX2JhY2soMik7CisgICAgICAgIG1JbmRpY2VzLnB1c2hfYmFjaygwKTsKKyAgICAg
ICAgbUluZGljZXMucHVzaF9iYWNrKDIpOworICAgICAgICBtSW5kaWNlcy5wdXNoX2JhY2soMyk7
CisKKyAgICAgICAgZm9yIChzaXplX3QgdmVydGV4SW5kZXggPSAwOyB2ZXJ0ZXhJbmRleCA8IDY7
ICsrdmVydGV4SW5kZXgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1Ob25JbmRleGVkVmVydGlj
ZXMuaW5zZXJ0KG1Ob25JbmRleGVkVmVydGljZXMuZW5kKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtUXVhZFZlcnRpY2VzLmJlZ2luKCkgKyBtSW5kaWNlc1t2ZXJ0
ZXhJbmRleF0gKiAzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVF1
YWRWZXJ0aWNlcy5iZWdpbigpICsgbUluZGljZXNbdmVydGV4SW5kZXhdICogMyArIDMpOworICAg
ICAgICB9CisKKyAgICAgICAgZm9yIChzaXplX3QgdmVydGV4SW5kZXggPSAwOyB2ZXJ0ZXhJbmRl
eCA8IDY7ICsrdmVydGV4SW5kZXgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1Ob25JbmRleGVk
VmVydGljZXMuaW5zZXJ0KG1Ob25JbmRleGVkVmVydGljZXMuZW5kKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtUXVhZFZlcnRpY2VzLmJlZ2luKCkgKyBtSW5kaWNl
c1t2ZXJ0ZXhJbmRleF0gKiAzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbVF1YWRWZXJ0aWNlcy5iZWdpbigpICsgbUluZGljZXNbdmVydGV4SW5kZXhdICogMyArIDMp
OworICAgICAgICB9CisKKyAgICAgICAgLy8gVGlsZSBhIDJ4MiBncmlkIG9mIHRoZSB0aWxlcwor
ICAgICAgICBmb3IgKGZsb2F0IHkgPSAtMS4wZiArIHF1YWRSYWRpdXM7IHkgPCAxLjBmIC0gcXVh
ZFJhZGl1czsgeSArPSBxdWFkUmFkaXVzICogMykKKyAgICAgICAgeworICAgICAgICAgICAgZm9y
IChmbG9hdCB4ID0gLTEuMGYgKyBxdWFkUmFkaXVzOyB4IDwgMS4wZiAtIHF1YWRSYWRpdXM7IHgg
Kz0gcXVhZFJhZGl1cyAqIDMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgR0xmbG9h
dCBpbnN0YW5jZVszXSA9IHt4ICsgcXVhZFJhZGl1cywgeSArIHF1YWRSYWRpdXMsIDAuMGZ9Owor
ICAgICAgICAgICAgICAgIG1JbnN0YW5jZXMuaW5zZXJ0KG1JbnN0YW5jZXMuZW5kKCksIGluc3Rh
bmNlLCBpbnN0YW5jZSArIDMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
Z2xDbGVhckNvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOworCisgICAgICAgIGdsR2VuQnVm
ZmVycygxLCAmbVZlcnRleEJ1ZmZlcik7CisKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
CisgICAgfQorCisgICAgdm9pZCBzZXR1cERyYXdBcnJheXNUZXN0KGNvbnN0IHN0ZDo6c3RyaW5n
ICZ2cykKKyAgICB7CisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZzID0gU0hBREVSX1NPVVJD
RQorICAgICAgICAoCisgICAgICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgICAg
ICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xfRnJh
Z0NvbG9yID0gdmVjNCgxLjAsIDAsIDAsIDEuMCk7CisgICAgICAgICAgICB9CisgICAgICAgICk7
CisKKyAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2cywgZnMpOworICAgICAgICBB
U1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsKKworICAgICAgICAvLyBTZXQgdGhlIHZpZXdwb3J0Cisg
ICAgICAgIGdsVmlld3BvcnQoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0
KCkpOworCisgICAgICAgIC8vIENsZWFyIHRoZSBjb2xvciBidWZmZXIKKyAgICAgICAgZ2xDbGVh
cihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAgICAgICAvLyBVc2UgdGhlIHByb2dyYW0gb2Jq
ZWN0CisgICAgICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgfQorCisgICAgdm9pZCBz
ZXR1cEluc3RhbmNlZFBvaW50c1Rlc3QoKQorICAgIHsKKyAgICAgICAgbUluZGljZXMuY2xlYXIo
KTsKKyAgICAgICAgbUluZGljZXMucHVzaF9iYWNrKDApOworICAgICAgICBtSW5kaWNlcy5wdXNo
X2JhY2soMSk7CisgICAgICAgIG1JbmRpY2VzLnB1c2hfYmFjaygyKTsKKyAgICAgICAgbUluZGlj
ZXMucHVzaF9iYWNrKDMpOworCisgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgdnMgPSBTSEFERVJfU09VUkNFCisgICAgICAgICgKKyAgICAgICAg
ICAgIGF0dHJpYnV0ZSB2ZWMzIGFfcG9zaXRpb247CisgICAgICAgICAgICBhdHRyaWJ1dGUgdmVj
MyBhX2luc3RhbmNlUG9zOworICAgICAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiAgPSB2ZWM0KGFfcG9zaXRpb24ueHl6LCAxLjAp
OworICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uICA9IHZlYzQoYV9pbnN0YW5jZVBvcy54eXos
IDEuMCk7CisgICAgICAgICAgICAgICAgZ2xfUG9pbnRTaXplID0gNi4wOworICAgICAgICAgICAg
fQorICAgICAgICApOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZzID0gU0hBREVSX1NP
VVJDRQorICAgICAgICAoCisgICAgICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAg
ICAgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xf
RnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAsIDAsIDEuMCk7CisgICAgICAgICAgICB9CisgICAgICAg
ICk7CisgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorCisgICAgICAgIG1Qcm9ncmFtID0gQ29t
cGlsZVByb2dyYW0odnMsIGZzKTsKKyAgICAgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7CisK
KyAgICAgICAgLy8gU2V0IHRoZSB2aWV3cG9ydAorICAgICAgICBnbFZpZXdwb3J0KDAsIDAsIGdl
dFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpKTsKKworICAgICAgICAvLyBDbGVhciB0
aGUgY29sb3IgYnVmZmVyCisgICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisK
KyAgICAgICAgLy8gVXNlIHRoZSBwcm9ncmFtIG9iamVjdAorICAgICAgICBnbFVzZVByb2dyYW0o
bVByb2dyYW0pOworICAgIH0KKworICAgIHZvaWQgcnVuRHJhd0FycmF5c1Rlc3QoR0xpbnQgZmly
c3QsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VDb3VudCwgZmxvYXQgKm9mZnNldCkK
KyAgICB7CisgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1WZXJ0ZXhCdWZm
ZXIpOworICAgICAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBtSW5zdGFuY2VzLnNp
emUoKSAqIHNpemVvZihtSW5zdGFuY2VzWzBdKSwgJm1JbnN0YW5jZXNbMF0sIEdMX1NUQVRJQ19E
UkFXKTsKKyAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgMCk7CisKKyAgICAg
ICAgLy8gR2V0IHRoZSBhdHRyaWJ1dGUgbG9jYXRpb25zCisgICAgICAgIEdMaW50IHBvc2l0aW9u
TG9jICAgID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgImFfcG9zaXRpb24iKTsKKyAg
ICAgICAgR0xpbnQgaW5zdGFuY2VQb3NMb2MgPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFt
LCAiYV9pbnN0YW5jZVBvcyIpOworCisgICAgICAgIC8vIExvYWQgdGhlIHZlcnRleCBwb3NpdGlv
bgorICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25Mb2MsIDMsIEdMX0ZMT0FU
LCBHTF9GQUxTRSwgMCwgbU5vbkluZGV4ZWRWZXJ0aWNlcy5kYXRhKCkpOworICAgICAgICBnbEVu
YWJsZVZlcnRleEF0dHJpYkFycmF5KHBvc2l0aW9uTG9jKTsKKworICAgICAgICAvLyBMb2FkIHRo
ZSBpbnN0YW5jZSBwb3NpdGlvbgorICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVS
LCBtVmVydGV4QnVmZmVyKTsKKyAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKGluc3RhbmNl
UG9zTG9jLCAzLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIDApOworICAgICAgICBnbEJpbmRCdWZm
ZXIoR0xfQVJSQVlfQlVGRkVSLCAwKTsKKyAgICAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJh
eShpbnN0YW5jZVBvc0xvYyk7CisKKyAgICAgICAgLy8gRW5hYmxlIGluc3RhbmNpbmcKKyAgICAg
ICAgbVZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShpbnN0YW5jZVBvc0xvYywgMSk7CisKKyAgICAg
ICAgLy8gT2Zmc2V0CisgICAgICAgIEdMaW50IHVuaWZvcm1Mb2MgPSBnbEdldFVuaWZvcm1Mb2Nh
dGlvbihtUHJvZ3JhbSwgInVfb2Zmc2V0Iik7CisgICAgICAgIEFTU0VSVF9ORSh1bmlmb3JtTG9j
LCAtMSk7CisgICAgICAgIGdsVW5pZm9ybTNmdih1bmlmb3JtTG9jLCAxLCBvZmZzZXQpOworCisg
ICAgICAgIC8vIERvIHRoZSBpbnN0YW5jZWQgZHJhdworICAgICAgICBtRHJhd0FycmF5c0luc3Rh
bmNlZEFOR0xFKEdMX1RSSUFOR0xFUywgZmlyc3QsIGNvdW50LCBpbnN0YW5jZUNvdW50KTsKKwor
ICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
cnVuRHJhd0VsZW1lbnRzVGVzdChzdGQ6OnN0cmluZyB2cywgYm9vbCBzaG91bGRBdHRyaWJaZXJv
QmVJbnN0YW5jZWQpCisgICAgeworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmcyA9IFNIQURF
Ul9TT1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisgICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLCAwLCAxLjApOworICAgICAgICAgICAgfQorICAg
ICAgICApOworCisgICAgICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odnMsIGZz
KTsKKyAgICAgICAgQVNTRVJUX05FKHByb2dyYW0sIDB1KTsKKworICAgICAgICAvLyBHZXQgdGhl
IGF0dHJpYnV0ZSBsb2NhdGlvbnMKKyAgICAgICAgR0xpbnQgcG9zaXRpb25Mb2MgPSBnbEdldEF0
dHJpYkxvY2F0aW9uKHByb2dyYW0sICJhX3Bvc2l0aW9uIik7CisgICAgICAgIEdMaW50IGluc3Rh
bmNlUG9zTG9jID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAiYV9pbnN0YW5jZVBvcyIp
OworCisgICAgICAgIC8vIElmIHRoaXMgQVNTRVJUIGZhaWxzIHRoZW4gdGhlIHZlcnRleCBzaGFk
ZXIgY29kZSBzaG91bGQgYmUgcmVmYWN0b3JlZAorICAgICAgICBBU1NFUlRfRVEoc2hvdWxkQXR0
cmliWmVyb0JlSW5zdGFuY2VkLCAoaW5zdGFuY2VQb3NMb2MgPT0gMCkpOworCisgICAgICAgIC8v
IFNldCB0aGUgdmlld3BvcnQKKyAgICAgICAgZ2xWaWV3cG9ydCgwLCAwLCBnZXRXaW5kb3dXaWR0
aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7CisKKyAgICAgICAgLy8gQ2xlYXIgdGhlIGNvbG9yIGJ1
ZmZlcgorICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworCisgICAgICAgIC8v
IFVzZSB0aGUgcHJvZ3JhbSBvYmplY3QKKyAgICAgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0pOwor
CisgICAgICAgIC8vIExvYWQgdGhlIHZlcnRleCBwb3NpdGlvbgorICAgICAgICBnbFZlcnRleEF0
dHJpYlBvaW50ZXIocG9zaXRpb25Mb2MsIDMsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgbVF1YWRW
ZXJ0aWNlcy5kYXRhKCkpOworICAgICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHBvc2l0
aW9uTG9jKTsKKworICAgICAgICAvLyBMb2FkIHRoZSBpbnN0YW5jZSBwb3NpdGlvbgorICAgICAg
ICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoaW5zdGFuY2VQb3NMb2MsIDMsIEdMX0ZMT0FULCBHTF9G
QUxTRSwgMCwgbUluc3RhbmNlcy5kYXRhKCkpOworICAgICAgICBnbEVuYWJsZVZlcnRleEF0dHJp
YkFycmF5KGluc3RhbmNlUG9zTG9jKTsKKworICAgICAgICAvLyBFbmFibGUgaW5zdGFuY2luZwor
ICAgICAgICBtVmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluc3RhbmNlUG9zTG9jLCAxKTsKKwor
ICAgICAgICAvLyBEbyB0aGUgaW5zdGFuY2VkIGRyYXcKKyAgICAgICAgbURyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFKEdMX1RSSUFOR0xFUywgc3RhdGljX2Nhc3Q8R0xzaXplaT4obUluZGljZXMu
c2l6ZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVE
X1NIT1JULCBtSW5kaWNlcy5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxHTHNpemVpPihtSW5zdGFuY2VzLnNpemUoKSkgLyAzKTsKKworICAg
ICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgICAgICBjaGVja1F1YWRzKCk7CisgICAg
fQorCisgICAgdm9pZCBjaGVja1F1YWRzKCkKKyAgICB7CisgICAgICAgIC8vIENoZWNrIHRoYXQg
dmFyaW91cyBwaXhlbHMgYXJlIHRoZSBleHBlY3RlZCBjb2xvci4KKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpbnQgcXVhZEluZGV4ID0gMDsgcXVhZEluZGV4IDwgNDsgKytxdWFkSW5kZXgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBiYXNlT2Zmc2V0ID0gcXVhZEluZGV4ICog
MzsKKworICAgICAgICAgICAgaW50IHF1YWR4ID0gc3RhdGljX2Nhc3Q8aW50PigoKG1JbnN0YW5j
ZXNbYmFzZU9mZnNldCArIDBdKSAqIDAuNWYgKyAwLjVmKSAqIGdldFdpbmRvd1dpZHRoKCkpOwor
ICAgICAgICAgICAgaW50IHF1YWR5ID0gc3RhdGljX2Nhc3Q8aW50PigoKG1JbnN0YW5jZXNbYmFz
ZU9mZnNldCArIDFdKSAqIDAuNWYgKyAwLjVmKSAqIGdldFdpbmRvd0hlaWdodCgpKTsKKworICAg
ICAgICAgICAgRVhQRUNUX1BJWEVMX0VRKHF1YWR4LCBxdWFkeSwgMjU1LCAwLCAwLCAyNTUpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgLy8gTG9hZGVkIGVudHJ5IHBvaW50cworICAgIFBGTkdM
VkVSVEVYQVRUUklCRElWSVNPUkFOR0xFUFJPQyBtVmVydGV4QXR0cmliRGl2aXNvckFOR0xFOwor
ICAgIFBGTkdMRFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFUFJPQyBtRHJhd0FycmF5c0luc3RhbmNl
ZEFOR0xFOworICAgIFBGTkdMRFJBV0VMRU1FTlRTSU5TVEFOQ0VEQU5HTEVQUk9DIG1EcmF3RWxl
bWVudHNJbnN0YW5jZWRBTkdMRTsKKworICAgIC8vIFZlcnRleCBkYXRhCisgICAgc3RkOjp2ZWN0
b3I8R0xmbG9hdD4gbVF1YWRWZXJ0aWNlczsKKyAgICBzdGQ6OnZlY3RvcjxHTGZsb2F0PiBtTm9u
SW5kZXhlZFZlcnRpY2VzOworICAgIHN0ZDo6dmVjdG9yPEdMZmxvYXQ+IG1UZXhjb29yZHM7Cisg
ICAgc3RkOjp2ZWN0b3I8R0xmbG9hdD4gbUluc3RhbmNlczsKKyAgICBzdGQ6OnZlY3RvcjxHTHVz
aG9ydD4gbUluZGljZXM7CisKKyAgICBjb25zdCBHTGZsb2F0IHF1YWRSYWRpdXMgPSAwLjMwZjsK
KworICAgIEdMdWludCBtUHJvZ3JhbTsKKyAgICBHTHVpbnQgbVZlcnRleEJ1ZmZlcjsKK307CisK
K2NsYXNzIEluc3RhbmNpbmdUZXN0QWxsQ29uZmlncyA6IHB1YmxpYyBJbnN0YW5jaW5nVGVzdAor
eworICBwcm90ZWN0ZWQ6CisgICAgSW5zdGFuY2luZ1Rlc3RBbGxDb25maWdzKCkge30KK307CisK
K2NsYXNzIEluc3RhbmNpbmdUZXN0Tm85XzMgOiBwdWJsaWMgSW5zdGFuY2luZ1Rlc3QKK3sKKyAg
cHJvdGVjdGVkOgorICAgIEluc3RhbmNpbmdUZXN0Tm85XzMoKSB7fQorfTsKKworY2xhc3MgSW5z
dGFuY2luZ1Rlc3RQb2ludHMgOiBwdWJsaWMgSW5zdGFuY2luZ1Rlc3QKK3sKKyAgcHJvdGVjdGVk
OgorICAgIEluc3RhbmNpbmdUZXN0UG9pbnRzKCkge30KK307CisKKy8vIFRoaXMgdGVzdCB1c2Vz
IGEgdmVydGV4IHNoYWRlciB3aXRoIHRoZSBmaXJzdCBhdHRyaWJ1dGUgKGF0dHJpYnV0ZSB6ZXJv
KSBpbnN0YW5jZWQuCisvLyBPbiBEM0Q5IGFuZCBEM0QxMSBGTDlfMywgdGhpcyB0cmlnZ2VycyBh
IHNwZWNpYWwgY29kZXBhdGggdGhhdCByZWFycmFuZ2VzIHRoZSBpbnB1dCBsYXlvdXQgc2VudCB0
byBEM0QsCisvLyB0byBlbnN1cmUgdGhhdCBzbG90L3N0cmVhbSB6ZXJvIG9mIHRoZSBpbnB1dCBs
YXlvdXQgZG9lc24ndCBjb250YWluIHBlci1pbnN0YW5jZSBkYXRhLgorVEVTVF9QKEluc3RhbmNp
bmdUZXN0QWxsQ29uZmlncywgQXR0cmlidXRlWmVyb0luc3RhbmNlZCkKK3sKKyAgICBjb25zdCBz
dGQ6OnN0cmluZyB2cyA9IFNIQURFUl9TT1VSQ0UKKyAgICAoCisgICAgICAgIGF0dHJpYnV0ZSB2
ZWMzIGFfaW5zdGFuY2VQb3M7CisgICAgICAgIGF0dHJpYnV0ZSB2ZWMzIGFfcG9zaXRpb247Cisg
ICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0g
dmVjNChhX3Bvc2l0aW9uLnh5eiArIGFfaW5zdGFuY2VQb3MueHl6LCAxLjApOworICAgICAgICB9
CisgICAgKTsKKworICAgIHJ1bkRyYXdFbGVtZW50c1Rlc3QodnMsIHRydWUpOworfQorCisvLyBT
YW1lIGFzIEF0dHJpYnV0ZVplcm9JbnN0YW5jZWQsIGJ1dCBhdHRyaWJ1dGUgemVybyBpcyBub3Qg
aW5zdGFuY2VkLgorLy8gVGhpcyBlbnN1cmVzIHRoZSBnZW5lcmFsIGluc3RhbmNpbmcgY29kZXBh
dGggKGkuZS4gd2l0aG91dCByZWFycmFuZ2luZyB0aGUgaW5wdXQgbGF5b3V0KSB3b3JrcyBhcyBl
eHBlY3RlZC4KK1RFU1RfUChJbnN0YW5jaW5nVGVzdEFsbENvbmZpZ3MsIEF0dHJpYnV0ZVplcm9O
b3RJbnN0YW5jZWQpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgdnMgPSBTSEFERVJfU09VUkNF
CisgICAgKAorICAgICAgICBhdHRyaWJ1dGUgdmVjMyBhX3Bvc2l0aW9uOworICAgICAgICBhdHRy
aWJ1dGUgdmVjMyBhX2luc3RhbmNlUG9zOworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7
CisgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoYV9wb3NpdGlvbi54eXogKyBhX2luc3Rh
bmNlUG9zLnh5eiwgMS4wKTsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBydW5EcmF3RWxlbWVu
dHNUZXN0KHZzLCBmYWxzZSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhlICJmaXJzdCIgcGFyYW1l
dGVyIHRvIGdsRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFIGlzIG9ubHkgYW4gb2Zmc2V0IGludG8K
Ky8vIHRoZSBub24taW5zdGFuY2VkIHZlcnRleCBhdHRyaWJ1dGVzLgorVEVTVF9QKEluc3RhbmNp
bmdUZXN0Tm85XzMsIERyYXdBcnJheXNXaXRoT2Zmc2V0KQoreworICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nIHZzID0gU0hBREVSX1NPVVJDRQorICAgICgKKyAgICAgICAgYXR0cmlidXRlIHZlYzMgYV9w
b3NpdGlvbjsKKyAgICAgICAgYXR0cmlidXRlIHZlYzMgYV9pbnN0YW5jZVBvczsKKyAgICAgICAg
dW5pZm9ybSB2ZWMzIHVfb2Zmc2V0OworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7Cisg
ICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoYV9wb3NpdGlvbi54eXogKyBhX2luc3RhbmNl
UG9zLnh5eiArIHVfb2Zmc2V0LCAxLjApOworICAgICAgICB9CisgICAgKTsKKworICAgIHNldHVw
RHJhd0FycmF5c1Rlc3QodnMpOworCisgICAgZmxvYXQgb2Zmc2V0MVszXSA9IHsgMCwgMCwgMCB9
OworICAgIHJ1bkRyYXdBcnJheXNUZXN0KDAsIDYsIDIsIG9mZnNldDEpOworCisgICAgZmxvYXQg
b2Zmc2V0MlszXSA9IHsgMC4wZiwgMS4wZiwgMCB9OworICAgIHJ1bkRyYXdBcnJheXNUZXN0KDYs
IDYsIDIsIG9mZnNldDIpOworCisgICAgY2hlY2tRdWFkcygpOworfQorCisvLyBUaGlzIHRlc3Qg
dmVyaWZpZXMgaW5zdGFuY2luZyB3aXRoIEdMX1BPSU5UUyB3aXRoIGdsRHJhd0FycmF5c0luc3Rh
bmNlZCB3b3Jrcy4KKy8vIE9uIEQzRDExIEZMOV8zLCB0aGlzIHRyaWdnZXJzIGEgc3BlY2lhbCBj
b2RlcGF0aCB0aGF0IGVtdWxhdGVzIGluc3RhbmNlZCBwb2ludHMgcmVuZGVyaW5nLgorVEVTVF9Q
KEluc3RhbmNpbmdUZXN0UG9pbnRzLCBEcmF3QXJyYXlzKQoreworICAgIC8vIERpc2FibGUgRDNE
MTEgU0RLIExheWVycyB3YXJuaW5ncyBjaGVja3MsIHNlZSBBTkdMRSBpc3N1ZSA2NjcgZm9yIGRl
dGFpbHMKKyAgICAvLyBPbiBXaW43LCB0aGUgRDNEIFNESyBMYXllcnMgZW1pdHMgYSBmYWxzZSB3
YXJuaW5nIGZvciB0aGVzZSB0ZXN0cy4KKyAgICAvLyBUaGlzIGRvZXNuJ3Qgb2NjdXIgb24gV2lu
ZG93cyAxMCAoVmVyc2lvbiAxNTExKSB0aG91Z2guCisgICAgaWdub3JlRDNEMTFTREtMYXllcnNX
YXJuaW5ncygpOworCisgICAgc2V0dXBJbnN0YW5jZWRQb2ludHNUZXN0KCk7CisKKyAgICBnbEJp
bmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtVmVydGV4QnVmZmVyKTsKKyAgICBnbEJ1ZmZlckRh
dGEoR0xfQVJSQVlfQlVGRkVSLCBtSW5zdGFuY2VzLnNpemUoKSAqIHNpemVvZihtSW5zdGFuY2Vz
WzBdKSwgJm1JbnN0YW5jZXNbMF0sCisgICAgICAgICAgICAgICAgIEdMX1NUQVRJQ19EUkFXKTsK
KyAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCAwKTsKKworICAgIC8vIEdldCB0aGUg
YXR0cmlidXRlIGxvY2F0aW9ucworICAgIEdMaW50IHBvc2l0aW9uTG9jICAgID0gZ2xHZXRBdHRy
aWJMb2NhdGlvbihtUHJvZ3JhbSwgImFfcG9zaXRpb24iKTsKKyAgICBHTGludCBpbnN0YW5jZVBv
c0xvYyA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJhX2luc3RhbmNlUG9zIik7CisK
KyAgICAvLyBMb2FkIHRoZSB2ZXJ0ZXggcG9zaXRpb24KKyAgICBHTGZsb2F0IHBvc1szXSA9IHsw
LCAwLCAwfTsKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25Mb2MsIDMsIEdMX0ZM
T0FULCBHTF9GQUxTRSwgMCwgcG9zKTsKKyAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHBv
c2l0aW9uTG9jKTsKKworICAgIC8vIExvYWQgdGhlIGluc3RhbmNlIHBvc2l0aW9uCisgICAgZ2xC
aW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbVZlcnRleEJ1ZmZlcik7CisgICAgZ2xWZXJ0ZXhB
dHRyaWJQb2ludGVyKGluc3RhbmNlUG9zTG9jLCAzLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIDAp
OworICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIDApOworICAgIGdsRW5hYmxlVmVy
dGV4QXR0cmliQXJyYXkoaW5zdGFuY2VQb3NMb2MpOworCisgICAgLy8gRW5hYmxlIGluc3RhbmNp
bmcKKyAgICBtVmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluc3RhbmNlUG9zTG9jLCAxKTsKKwor
ICAgIC8vIERvIHRoZSBpbnN0YW5jZWQgZHJhdworICAgIG1EcmF3QXJyYXlzSW5zdGFuY2VkQU5H
TEUoR0xfUE9JTlRTLCAwLCAxLCBzdGF0aWNfY2FzdDxHTHNpemVpPihtSW5zdGFuY2VzLnNpemUo
KSkgLyAzKTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgY2hlY2tRdWFkcygp
OworfQorCisvLyBUaGlzIHRlc3QgdmVyaWZpZXMgaW5zdGFuY2luZyB3aXRoIEdMX1BPSU5UUyB3
aXRoIGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkIHdvcmtzLgorLy8gT24gRDNEMTEgRkw5XzMsIHRo
aXMgdHJpZ2dlcnMgYSBzcGVjaWFsIGNvZGVwYXRoIHRoYXQgZW11bGF0ZXMgaW5zdGFuY2VkIHBv
aW50cyByZW5kZXJpbmcuCitURVNUX1AoSW5zdGFuY2luZ1Rlc3RQb2ludHMsIERyYXdFbGVtZW50
cykKK3sKKyAgICAvLyBEaXNhYmxlIEQzRDExIFNESyBMYXllcnMgd2FybmluZ3MgY2hlY2tzLCBz
ZWUgQU5HTEUgaXNzdWUgNjY3IGZvciBkZXRhaWxzCisgICAgLy8gT24gV2luNywgdGhlIEQzRCBT
REsgTGF5ZXJzIGVtaXRzIGEgZmFsc2Ugd2FybmluZyBmb3IgdGhlc2UgdGVzdHMuCisgICAgLy8g
VGhpcyBkb2Vzbid0IG9jY3VyIG9uIFdpbmRvd3MgMTAgKFZlcnNpb24gMTUxMSkgdGhvdWdoLgor
ICAgIGlnbm9yZUQzRDExU0RLTGF5ZXJzV2FybmluZ3MoKTsKKworICAgIHNldHVwSW5zdGFuY2Vk
UG9pbnRzVGVzdCgpOworCisgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbVZlcnRl
eEJ1ZmZlcik7CisgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgbUluc3RhbmNlcy5z
aXplKCkgKiBzaXplb2YobUluc3RhbmNlc1swXSksICZtSW5zdGFuY2VzWzBdLAorICAgICAgICAg
ICAgICAgICBHTF9TVEFUSUNfRFJBVyk7CisgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZF
UiwgMCk7CisKKyAgICAvLyBHZXQgdGhlIGF0dHJpYnV0ZSBsb2NhdGlvbnMKKyAgICBHTGludCBw
b3NpdGlvbkxvYyAgICA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJhX3Bvc2l0aW9u
Iik7CisgICAgR0xpbnQgaW5zdGFuY2VQb3NMb2MgPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9n
cmFtLCAiYV9pbnN0YW5jZVBvcyIpOworCisgICAgLy8gTG9hZCB0aGUgdmVydGV4IHBvc2l0aW9u
CisgICAgR0xmbG9hdCBwb3NbM10gPSB7MCwgMCwgMH07CisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2lu
dGVyKHBvc2l0aW9uTG9jLCAzLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIHBvcyk7CisgICAgZ2xF
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxvYyk7CisKKyAgICAvLyBMb2FkIHRoZSBp
bnN0YW5jZSBwb3NpdGlvbgorICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1WZXJ0
ZXhCdWZmZXIpOworICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihpbnN0YW5jZVBvc0xvYywgMywg
R0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCAwKTsKKyAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVG
RkVSLCAwKTsKKyAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluc3RhbmNlUG9zTG9jKTsK
KworICAgIC8vIEVuYWJsZSBpbnN0YW5jaW5nCisgICAgbVZlcnRleEF0dHJpYkRpdmlzb3JBTkdM
RShpbnN0YW5jZVBvc0xvYywgMSk7CisKKyAgICAvLyBEbyB0aGUgaW5zdGFuY2VkIGRyYXcKKyAg
ICBtRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0xfUE9JTlRTLCBzdGF0aWNfY2FzdDxHTHNp
emVpPihtSW5kaWNlcy5zaXplKCkpLCBHTF9VTlNJR05FRF9TSE9SVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbUluZGljZXMuZGF0YSgpLCBzdGF0aWNfY2FzdDxHTHNpemVpPiht
SW5zdGFuY2VzLnNpemUoKSkgLyAzKTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisg
ICAgY2hlY2tRdWFkcygpOworfQorCisvLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmln
dXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikg
dGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgorLy8gV2UgdGVzdCBvbiBEM0Q5IGFu
ZCBEM0QxMSA5XzMgYmVjYXVzZSB0aGV5IHVzZSBzcGVjaWFsIGNvZGVwYXRocyB3aGVuIGF0dHJp
YnV0ZSB6ZXJvIGlzIGluc3RhbmNlZCwgdW5saWtlIEQzRDExLgorQU5HTEVfSU5TVEFOVElBVEVf
VEVTVChJbnN0YW5jaW5nVGVzdEFsbENvbmZpZ3MsCisgICAgICAgICAgICAgICAgICAgICAgIEVT
Ml9EM0Q5KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
RVMyX09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSk7CisK
Ky8vIFRPRE8oam1hZGlsbCk6IEZpZ3VyZSBvdXQgdGhlIHNpdHVhdGlvbiB3aXRoIERyYXdJbnN0
YW5jZWQgb24gRkwgOV8zCitBTkdMRV9JTlNUQU5USUFURV9URVNUKEluc3RhbmNpbmdUZXN0Tm85
XzMsIEVTMl9EM0Q5KCksIEVTMl9EM0QxMSgpKTsKKworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChJ
bnN0YW5jaW5nVGVzdFBvaW50cywgRVMyX0QzRDExKCksIEVTMl9EM0QxMV9GTDlfMygpKTsKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9MaW5lTG9vcFRl
c3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9n
bF90ZXN0cy9MaW5lTG9vcFRlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9MaW5lTG9vcFRlc3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMjI2IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAidGVzdF91dGlscy9B
TkdMRVRlc3QuaCIKKwordXNpbmcgbmFtZXNwYWNlIGFuZ2xlOworCitjbGFzcyBMaW5lTG9vcFRl
c3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBMaW5lTG9vcFRlc3Qo
KQorICAgIHsKKyAgICAgICAgc2V0V2luZG93V2lkdGgoMjU2KTsKKyAgICAgICAgc2V0V2luZG93
SGVpZ2h0KDI1Nik7CisgICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7CisgICAgICAgIHNldENv
bmZpZ0dyZWVuQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7CisgICAgICAg
IHNldENvbmZpZ0FscGhhQml0cyg4KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgU2V0VXAo
KQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOworCisgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nIHZzU291cmNlID0gU0hBREVSX1NPVVJDRQorICAgICAgICAoCisgICAgICAgICAg
ICBhdHRyaWJ1dGUgaGlnaHAgdmVjNCBwb3NpdGlvbjsKKworICAgICAgICAgICAgdm9pZCBtYWlu
KHZvaWQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBwb3Np
dGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyBmc1NvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAgdW5p
Zm9ybSBoaWdocCB2ZWM0IGNvbG9yOworICAgICAgICAgICAgdm9pZCBtYWluKHZvaWQpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gY29sb3I7CisgICAgICAg
ICAgICB9CisgICAgICAgICk7CisKKyAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2
c1NvdXJjZSwgZnNTb3VyY2UpOworICAgICAgICBpZiAobVByb2dyYW0gPT0gMCkKKyAgICAgICAg
eworICAgICAgICAgICAgRkFJTCgpIDw8ICJzaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLiI7Cisg
ICAgICAgIH0KKworICAgICAgICBtUG9zaXRpb25Mb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRp
b24obVByb2dyYW0sICJwb3NpdGlvbiIpOworICAgICAgICBtQ29sb3JMb2NhdGlvbiA9IGdsR2V0
VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAiY29sb3IiKTsKKworICAgICAgICBnbEJsZW5kRnVu
YyhHTF9PTkUsIEdMX09ORSk7CisgICAgICAgIGdsRW5hYmxlKEdMX0JMRU5EKTsKKyAgICAgICAg
Z2xDbGVhckNvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOworCisgICAgICAgIEFTU0VSVF9H
TF9OT19FUlJPUigpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCisgICAg
eworICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOworCisgICAgICAgIEFOR0xFVGVz
dDo6VGVhckRvd24oKTsKKyAgICB9CisKKyAgICB2b2lkIHJ1blRlc3QoR0xlbnVtIGluZGV4VHlw
ZSwgR0x1aW50IGluZGV4QnVmZmVyLCBjb25zdCBHTHZvaWQgKmluZGV4UHRyKQorICAgIHsKKyAg
ICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAgICAgICBzdGF0aWMgY29u
c3QgR0xmbG9hdCBsb29wUG9zaXRpb25zW10gPQorICAgICAgICB7CisgICAgICAgICAgICAgMC4w
ZiwgIDAuMGYsCisgICAgICAgICAgICAgMC4wZiwgIDAuMGYsCisgICAgICAgICAgICAgMC4wZiwg
IDAuMGYsCisgICAgICAgICAgICAgMC4wZiwgIDAuMGYsCisgICAgICAgICAgICAgMC4wZiwgIDAu
MGYsCisgICAgICAgICAgICAgMC4wZiwgIDAuMGYsCisgICAgICAgICAgICAtMC41ZiwgLTAuNWYs
CisgICAgICAgICAgICAtMC41ZiwgIDAuNWYsCisgICAgICAgICAgICAgMC41ZiwgIDAuNWYsCisg
ICAgICAgICAgICAgMC41ZiwgLTAuNWYKKyAgICAgICAgfTsKKworICAgICAgICBzdGF0aWMgY29u
c3QgR0xmbG9hdCBzdHJpcFBvc2l0aW9uc1tdID0KKyAgICAgICAgeworICAgICAgICAgICAgLTAu
NWYsIC0wLjVmLAorICAgICAgICAgICAgLTAuNWYsICAwLjVmLAorICAgICAgICAgICAgIDAuNWYs
ICAwLjVmLAorICAgICAgICAgICAgIDAuNWYsIC0wLjVmCisgICAgICAgIH07CisgICAgICAgIHN0
YXRpYyBjb25zdCBHTHVieXRlIHN0cmlwSW5kaWNlc1tdID0KKyAgICAgICAgeworICAgICAgICAg
ICAgMSwgMCwgMywgMiwgMQorICAgICAgICB9OworCisgICAgICAgIGdsVXNlUHJvZ3JhbShtUHJv
Z3JhbSk7CisgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgaW5k
ZXhCdWZmZXIpOworICAgICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1Qb3NpdGlvbkxv
Y2F0aW9uKTsKKyAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKG1Qb3NpdGlvbkxvY2F0aW9u
LCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIGxvb3BQb3NpdGlvbnMpOworICAgICAgICBnbFVu
aWZvcm00ZihtQ29sb3JMb2NhdGlvbiwgMC4wZiwgMC4wZiwgMS4wZiwgMS4wZik7CisgICAgICAg
IGdsRHJhd0VsZW1lbnRzKEdMX0xJTkVfTE9PUCwgNCwgaW5kZXhUeXBlLCBpbmRleFB0cik7CisK
KyAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCAwKTsKKyAgICAg
ICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKG1Qb3NpdGlvbkxvY2F0aW9uLCAyLCBHTF9GTE9BVCwg
R0xfRkFMU0UsIDAsIHN0cmlwUG9zaXRpb25zKTsKKyAgICAgICAgZ2xVbmlmb3JtNGYobUNvbG9y
TG9jYXRpb24sIDAsIDEsIDAsIDEpOworICAgICAgICBnbERyYXdFbGVtZW50cyhHTF9MSU5FX1NU
UklQLCA1LCBHTF9VTlNJR05FRF9CWVRFLCBzdHJpcEluZGljZXMpOworCisgICAgICAgIHN0ZDo6
dmVjdG9yPEdMdWJ5dGU+IHBpeGVscyhnZXRXaW5kb3dXaWR0aCgpICogZ2V0V2luZG93SGVpZ2h0
KCkgKiA0KTsKKyAgICAgICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdl
dFdpbmRvd0hlaWdodCgpLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAmcGl4ZWxzWzBdKTsK
KworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgICAgICBmb3IgKGludCB5ID0g
MDsgeSA8IGdldFdpbmRvd0hlaWdodCgpOyB5KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGZv
ciAoaW50IHggPSAwOyB4IDwgZ2V0V2luZG93V2lkdGgoKTsgeCsrKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUqIHBpeGVsID0gJnBpeGVsc1swXSArICgoeSAq
IGdldFdpbmRvd1dpZHRoKCkgKyB4KSAqIDQpOworCisgICAgICAgICAgICAgICAgRVhQRUNUX0VR
KHBpeGVsWzBdLCAwKTsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfRVEocGl4ZWxbMV0sIHBpeGVs
WzJdKTsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfRVEocGl4ZWxbM10sIDI1NSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBHTHVpbnQgbVByb2dyYW07CisgICAgR0xp
bnQgbVBvc2l0aW9uTG9jYXRpb247CisgICAgR0xpbnQgbUNvbG9yTG9jYXRpb247Cit9OworCitU
RVNUX1AoTGluZUxvb3BUZXN0LCBMaW5lTG9vcFVCeXRlSW5kaWNlcykKK3sKKyAgICAvLyBEaXNh
YmxlIEQzRDExIFNESyBMYXllcnMgd2FybmluZ3MgY2hlY2tzLCBzZWUgQU5HTEUgaXNzdWUgNjY3
IGZvciBkZXRhaWxzCisgICAgLy8gT24gV2luNywgdGhlIEQzRCBTREsgTGF5ZXJzIGVtaXRzIGEg
ZmFsc2Ugd2FybmluZyBmb3IgdGhlc2UgdGVzdHMuCisgICAgLy8gVGhpcyBkb2Vzbid0IG9jY3Vy
IG9uIFdpbmRvd3MgMTAgKFZlcnNpb24gMTUxMSkgdGhvdWdoLgorICAgIGlnbm9yZUQzRDExU0RL
TGF5ZXJzV2FybmluZ3MoKTsKKworICAgIHN0YXRpYyBjb25zdCBHTHVieXRlIGluZGljZXNbXSA9
IHsgMCwgNywgNiwgOSwgOCwgMCB9OworICAgIHJ1blRlc3QoR0xfVU5TSUdORURfQllURSwgMCwg
aW5kaWNlcyArIDEpOworfQorCitURVNUX1AoTGluZUxvb3BUZXN0LCBMaW5lTG9vcFVTaG9ydElu
ZGljZXMpCit7CisgICAgLy8gRGlzYWJsZSBEM0QxMSBTREsgTGF5ZXJzIHdhcm5pbmdzIGNoZWNr
cywgc2VlIEFOR0xFIGlzc3VlIDY2NyBmb3IgZGV0YWlscworICAgIGlnbm9yZUQzRDExU0RLTGF5
ZXJzV2FybmluZ3MoKTsKKworICAgIHN0YXRpYyBjb25zdCBHTHVzaG9ydCBpbmRpY2VzW10gPSB7
IDAsIDcsIDYsIDksIDgsIDAgfTsKKyAgICBydW5UZXN0KEdMX1VOU0lHTkVEX1NIT1JULCAwLCBp
bmRpY2VzICsgMSk7Cit9CisKK1RFU1RfUChMaW5lTG9vcFRlc3QsIExpbmVMb29wVUludEluZGlj
ZXMpCit7CisgICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9PRVNfZWxlbWVudF9pbmRleF91
aW50IikpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRGlzYWJsZSBE
M0QxMSBTREsgTGF5ZXJzIHdhcm5pbmdzIGNoZWNrcywgc2VlIEFOR0xFIGlzc3VlIDY2NyBmb3Ig
ZGV0YWlscworICAgIGlnbm9yZUQzRDExU0RLTGF5ZXJzV2FybmluZ3MoKTsKKworICAgIHN0YXRp
YyBjb25zdCBHTHVpbnQgaW5kaWNlc1tdID0geyAwLCA3LCA2LCA5LCA4LCAwIH07CisgICAgcnVu
VGVzdChHTF9VTlNJR05FRF9JTlQsIDAsIGluZGljZXMgKyAxKTsKK30KKworVEVTVF9QKExpbmVM
b29wVGVzdCwgTGluZUxvb3BVQnl0ZUluZGV4QnVmZmVyKQoreworICAgIC8vIERpc2FibGUgRDNE
MTEgU0RLIExheWVycyB3YXJuaW5ncyBjaGVja3MsIHNlZSBBTkdMRSBpc3N1ZSA2NjcgZm9yIGRl
dGFpbHMKKyAgICBpZ25vcmVEM0QxMVNES0xheWVyc1dhcm5pbmdzKCk7CisKKyAgICBzdGF0aWMg
Y29uc3QgR0x1Ynl0ZSBpbmRpY2VzW10gPSB7IDAsIDcsIDYsIDksIDgsIDAgfTsKKworICAgIEdM
dWludCBidWY7CisgICAgZ2xHZW5CdWZmZXJzKDEsICZidWYpOworICAgIGdsQmluZEJ1ZmZlcihH
TF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgYnVmKTsKKyAgICBnbEJ1ZmZlckRhdGEoR0xfRUxFTUVO
VF9BUlJBWV9CVUZGRVIsIHNpemVvZihpbmRpY2VzKSwgaW5kaWNlcywgR0xfU1RBVElDX0RSQVcp
OworCisgICAgcnVuVGVzdChHTF9VTlNJR05FRF9CWVRFLCBidWYsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3Qgdm9pZCAqPihzaXplb2YoR0x1Ynl0ZSkpKTsKKworICAgIGdsRGVsZXRlQnVmZmVycygx
LCAmYnVmKTsKK30KKworVEVTVF9QKExpbmVMb29wVGVzdCwgTGluZUxvb3BVU2hvcnRJbmRleEJ1
ZmZlcikKK3sKKyAgICAvLyBEaXNhYmxlIEQzRDExIFNESyBMYXllcnMgd2FybmluZ3MgY2hlY2tz
LCBzZWUgQU5HTEUgaXNzdWUgNjY3IGZvciBkZXRhaWxzCisgICAgaWdub3JlRDNEMTFTREtMYXll
cnNXYXJuaW5ncygpOworCisgICAgc3RhdGljIGNvbnN0IEdMdXNob3J0IGluZGljZXNbXSA9IHsg
MCwgNywgNiwgOSwgOCwgMCB9OworCisgICAgR0x1aW50IGJ1ZjsKKyAgICBnbEdlbkJ1ZmZlcnMo
MSwgJmJ1Zik7CisgICAgZ2xCaW5kQnVmZmVyKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBidWYp
OworICAgIGdsQnVmZmVyRGF0YShHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgc2l6ZW9mKGluZGlj
ZXMpLCBpbmRpY2VzLCBHTF9TVEFUSUNfRFJBVyk7CisKKyAgICBydW5UZXN0KEdMX1VOU0lHTkVE
X1NIT1JULCBidWYsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCAqPihzaXplb2YoR0x1c2hv
cnQpKSk7CisKKyAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJmJ1Zik7Cit9CisKK1RFU1RfUChMaW5l
TG9vcFRlc3QsIExpbmVMb29wVUludEluZGV4QnVmZmVyKQoreworICAgIGlmICghZXh0ZW5zaW9u
RW5hYmxlZCgiR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpKQorICAgIHsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIC8vIERpc2FibGUgRDNEMTEgU0RLIExheWVycyB3YXJuaW5ncyBj
aGVja3MsIHNlZSBBTkdMRSBpc3N1ZSA2NjcgZm9yIGRldGFpbHMKKyAgICBpZ25vcmVEM0QxMVNE
S0xheWVyc1dhcm5pbmdzKCk7CisKKyAgICBzdGF0aWMgY29uc3QgR0x1aW50IGluZGljZXNbXSA9
IHsgMCwgNywgNiwgOSwgOCwgMCB9OworCisgICAgR0x1aW50IGJ1ZjsKKyAgICBnbEdlbkJ1ZmZl
cnMoMSwgJmJ1Zik7CisgICAgZ2xCaW5kQnVmZmVyKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBi
dWYpOworICAgIGdsQnVmZmVyRGF0YShHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgc2l6ZW9mKGlu
ZGljZXMpLCBpbmRpY2VzLCBHTF9TVEFUSUNfRFJBVyk7CisKKyAgICBydW5UZXN0KEdMX1VOU0lH
TkVEX0lOVCwgYnVmLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQgKj4oc2l6ZW9mKEdMdWlu
dCkpKTsKKworICAgIGdsRGVsZXRlQnVmZmVycygxLCAmYnVmKTsKK30KKworLy8gVXNlIHRoaXMg
dG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGlj
aCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4K
K0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoTGluZUxvb3BUZXN0LCBFUzJfRDNEOSgpLCBFUzJfRDNE
MTEoKSwgRVMyX09QRU5HTCgpLCBFUzJfT1BFTkdMRVMoKSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvTWF4VGV4dHVyZVNpemVUZXN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvTWF4
VGV4dHVyZVNpemVUZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvTWF4VGV4dHVyZVNpemVUZXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDI5OSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgInRlc3RfdXRpbHMv
QU5HTEVUZXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKworY2xhc3MgTWF4VGV4dHVy
ZVNpemVUZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgTWF4VGV4
dHVyZVNpemVUZXN0KCkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRoKDUxMik7CisgICAg
ICAgIHNldFdpbmRvd0hlaWdodCg1MTIpOworICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOwor
ICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0JsdWVCaXRz
KDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgfQorCisgICAgdm9pZCBT
ZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7CisKKyAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdnNTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgICAg
ICgKKyAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKKyAgICAgICAgICAgIGF0dHJp
YnV0ZSB2ZWM0IHBvc2l0aW9uOworICAgICAgICAgICAgdmFyeWluZyB2ZWMyIHRleGNvb3JkOwor
CisgICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGdsX1Bvc2l0aW9uID0gcG9zaXRpb247CisgICAgICAgICAgICAgICAgdGV4Y29vcmQgPSAocG9z
aXRpb24ueHkgKiAwLjUpICsgMC41OworICAgICAgICAgICAgfQorICAgICAgICApOworCisgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHRleHR1cmVGU1NvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAg
ICAgICAgKAorICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworICAgICAgICAgICAg
dW5pZm9ybSBzYW1wbGVyMkQgdGV4OworICAgICAgICAgICAgdmFyeWluZyB2ZWMyIHRleGNvb3Jk
OworCisgICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh0ZXgsIHRleGNvb3JkKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgKTsKKworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBibHVlRlNTb3VyY2Ug
PSBTSEFERVJfU09VUkNFCisgICAgICAgICgKKyAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBm
bG9hdDsKKworICAgICAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMC4wLCAxLjAsIDEuMCk7CisgICAgICAg
ICAgICB9CisgICAgICAgICk7CisKKyAgICAgICAgbVRleHR1cmVQcm9ncmFtID0gQ29tcGlsZVBy
b2dyYW0odnNTb3VyY2UsIHRleHR1cmVGU1NvdXJjZSk7CisgICAgICAgIG1CbHVlUHJvZ3JhbSA9
IENvbXBpbGVQcm9ncmFtKHZzU291cmNlLCBibHVlRlNTb3VyY2UpOworICAgICAgICBpZiAobVRl
eHR1cmVQcm9ncmFtID09IDAgfHwgbUJsdWVQcm9ncmFtID09IDApCisgICAgICAgIHsKKyAgICAg
ICAgICAgIEZBSUwoKSA8PCAic2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZC4iOworICAgICAgICB9
CisKKyAgICAgICAgbVRleHR1cmVVbmlmb3JtTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlv
bihtVGV4dHVyZVByb2dyYW0sICJ0ZXgiKTsKKworICAgICAgICBnbEdldEludGVnZXJ2KEdMX01B
WF9URVhUVVJFX1NJWkUsICZtTWF4VGV4dHVyZTJEU2l6ZSk7CisgICAgICAgIGdsR2V0SW50ZWdl
cnYoR0xfTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRSwgJm1NYXhUZXh0dXJlQ3ViZVNpemUpOwor
ICAgICAgICBnbEdldEludGVnZXJ2KEdMX01BWF9SRU5ERVJCVUZGRVJfU0laRSwgJm1NYXhSZW5k
ZXJidWZmZXJTaXplKTsKKworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICB9CisK
KyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGdsRGVsZXRlUHJv
Z3JhbShtVGV4dHVyZVByb2dyYW0pOworICAgICAgICBnbERlbGV0ZVByb2dyYW0obUJsdWVQcm9n
cmFtKTsKKworICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7CisgICAgfQorCisgICAgR0x1
aW50IG1UZXh0dXJlUHJvZ3JhbTsKKyAgICBHTGludCBtVGV4dHVyZVVuaWZvcm1Mb2NhdGlvbjsK
KworICAgIEdMdWludCBtQmx1ZVByb2dyYW07CisKKyAgICBHTGludCBtTWF4VGV4dHVyZTJEU2l6
ZTsKKyAgICBHTGludCBtTWF4VGV4dHVyZUN1YmVTaXplOworICAgIEdMaW50IG1NYXhSZW5kZXJi
dWZmZXJTaXplOworfTsKKworVEVTVF9QKE1heFRleHR1cmVTaXplVGVzdCwgU3BlY2lmaWNhdGlv
blRleEltYWdlKQoreworICAgIEdMdWludCB0ZXg7CisgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4
KTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleCk7CisKKyAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIp
OworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxU
RVIsIEdMX0xJTkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xf
VEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOworCisgICAg
R0xzaXplaSB0ZXh0dXJlV2lkdGggPSBtTWF4VGV4dHVyZTJEU2l6ZTsKKyAgICBHTHNpemVpIHRl
eHR1cmVIZWlnaHQgPSA2NDsKKworICAgIHN0ZDo6dmVjdG9yPEdMdWJ5dGU+IGRhdGEodGV4dHVy
ZVdpZHRoICogdGV4dHVyZUhlaWdodCAqIDQpOworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgdGV4
dHVyZUhlaWdodDsgeSsrKQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB0ZXh0
dXJlV2lkdGg7IHgrKykKKyAgICAgICAgeworICAgICAgICAgICAgR0x1Ynl0ZSogcGl4ZWwgPSAm
ZGF0YVswXSArICgoeSAqIHRleHR1cmVXaWR0aCArIHgpICogNCk7CisKKyAgICAgICAgICAgIC8v
IERyYXcgYSBncmFkaWVudCwgcmVkIGluIGRpcmVjdGlvbiwgZ3JlZW4gaW4geSBkaXJlY3Rpb24K
KyAgICAgICAgICAgIHBpeGVsWzBdID0gc3RhdGljX2Nhc3Q8R0x1Ynl0ZT4oKGZsb2F0KHgpIC8g
dGV4dHVyZVdpZHRoKSAqIDI1NSk7CisgICAgICAgICAgICBwaXhlbFsxXSA9IHN0YXRpY19jYXN0
PEdMdWJ5dGU+KChmbG9hdCh5KSAvIHRleHR1cmVIZWlnaHQpICogMjU1KTsKKyAgICAgICAgICAg
IHBpeGVsWzJdID0gMDsKKyAgICAgICAgICAgIHBpeGVsWzNdID0gMjU1OworICAgICAgICB9Cisg
ICAgfQorCisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIHRleHR1
cmVXaWR0aCwgdGV4dHVyZUhlaWdodCwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgJmRh
dGFbMF0pOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xVc2VQcm9ncmFtKG1U
ZXh0dXJlUHJvZ3JhbSk7CisgICAgZ2xVbmlmb3JtMWkobVRleHR1cmVVbmlmb3JtTG9jYXRpb24s
IDApOworCisgICAgZHJhd1F1YWQobVRleHR1cmVQcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsK
KworICAgIHN0ZDo6dmVjdG9yPEdMdWJ5dGU+IHBpeGVscyhnZXRXaW5kb3dXaWR0aCgpICogZ2V0
V2luZG93SGVpZ2h0KCkgKiA0KTsKKyAgICBnbFJlYWRQaXhlbHMoMCwgMCwgZ2V0V2luZG93V2lk
dGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsICZwaXhl
bHNbMF0pOworCisgICAgZm9yIChpbnQgeSA9IDE7IHkgPCBnZXRXaW5kb3dIZWlnaHQoKTsgeSsr
KQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgeCA9IDE7IHggPCBnZXRXaW5kb3dXaWR0aCgpOyB4
KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUqIHByZXZQaXhlbCA9ICZw
aXhlbHNbMF0gKyAoKCh5IC0gMSkgKiBnZXRXaW5kb3dXaWR0aCgpICsgKHggLSAxKSkgKiA0KTsK
KyAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUqIGN1clBpeGVsID0gJnBpeGVsc1swXSArICgoeSAq
IGdldFdpbmRvd1dpZHRoKCkgKyB4KSAqIDQpOworCisgICAgICAgICAgICBFWFBFQ1RfR0UoY3Vy
UGl4ZWxbMF0sIHByZXZQaXhlbFswXSk7CisgICAgICAgICAgICBFWFBFQ1RfR0UoY3VyUGl4ZWxb
MV0sIHByZXZQaXhlbFsxXSk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoY3VyUGl4ZWxbMl0sIHBy
ZXZQaXhlbFsyXSk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoY3VyUGl4ZWxbM10sIHByZXZQaXhl
bFszXSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK1RFU1RfUChNYXhUZXh0dXJlU2l6ZVRlc3Qs
IFNwZWNpZmljYXRpb25UZXhTdG9yYWdlKQoreworICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNp
b24oKSA8IDMgJiYKKyAgICAgICAgKCFleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9z
dG9yYWdlIikgfHwgIWV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19yZ2I4X3JnYmE4IikpKQorICAg
IHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdMdWludCB0ZXg7CisgICAgZ2xHZW5U
ZXh0dXJlcygxLCAmdGV4KTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleCk7
CisKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklM
VEVSLCBHTF9MSU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RP
X0VER0UpOworCisgICAgR0xzaXplaSB0ZXh0dXJlV2lkdGggPSA2NDsKKyAgICBHTHNpemVpIHRl
eHR1cmVIZWlnaHQgPSBtTWF4VGV4dHVyZTJEU2l6ZTsKKworICAgIHN0ZDo6dmVjdG9yPEdMdWJ5
dGU+IGRhdGEodGV4dHVyZVdpZHRoICogdGV4dHVyZUhlaWdodCAqIDQpOworICAgIGZvciAoaW50
IHkgPSAwOyB5IDwgdGV4dHVyZUhlaWdodDsgeSsrKQorICAgIHsKKyAgICAgICAgZm9yIChpbnQg
eCA9IDA7IHggPCB0ZXh0dXJlV2lkdGg7IHgrKykKKyAgICAgICAgeworICAgICAgICAgICAgR0x1
Ynl0ZSogcGl4ZWwgPSAmZGF0YVswXSArICgoeSAqIHRleHR1cmVXaWR0aCArIHgpICogNCk7CisK
KyAgICAgICAgICAgIC8vIERyYXcgYSBncmFkaWVudCwgcmVkIGluIGRpcmVjdGlvbiwgZ3JlZW4g
aW4geSBkaXJlY3Rpb24KKyAgICAgICAgICAgIHBpeGVsWzBdID0gc3RhdGljX2Nhc3Q8R0x1Ynl0
ZT4oKGZsb2F0KHgpIC8gdGV4dHVyZVdpZHRoKSAqIDI1NSk7CisgICAgICAgICAgICBwaXhlbFsx
XSA9IHN0YXRpY19jYXN0PEdMdWJ5dGU+KChmbG9hdCh5KSAvIHRleHR1cmVIZWlnaHQpICogMjU1
KTsKKyAgICAgICAgICAgIHBpeGVsWzJdID0gMDsKKyAgICAgICAgICAgIHBpeGVsWzNdID0gMjU1
OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwg
MykKKyAgICB7CisgICAgICAgIGdsVGV4U3RvcmFnZTJERVhUKEdMX1RFWFRVUkVfMkQsIDEsIEdM
X1JHQkE4X09FUywgdGV4dHVyZVdpZHRoLCB0ZXh0dXJlSGVpZ2h0KTsKKyAgICB9CisgICAgZWxz
ZQorICAgIHsKKyAgICAgICAgZ2xUZXhTdG9yYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdC
QThfT0VTLCB0ZXh0dXJlV2lkdGgsIHRleHR1cmVIZWlnaHQpOworICAgIH0KKyAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKKworICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCAw
LCAwLCB0ZXh0dXJlV2lkdGgsIHRleHR1cmVIZWlnaHQsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsICZkYXRhWzBdKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsVXNlUHJv
Z3JhbShtVGV4dHVyZVByb2dyYW0pOworICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJlVW5pZm9ybUxv
Y2F0aW9uLCAwKTsKKworICAgIGRyYXdRdWFkKG1UZXh0dXJlUHJvZ3JhbSwgInBvc2l0aW9uIiwg
MC41Zik7CisKKyAgICBzdGQ6OnZlY3RvcjxHTHVieXRlPiBwaXhlbHMoZ2V0V2luZG93V2lkdGgo
KSAqIGdldFdpbmRvd0hlaWdodCgpICogNCk7CisgICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIGdldFdp
bmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRF
LCAmcGl4ZWxzWzBdKTsKKworICAgIGZvciAoaW50IHkgPSAxOyB5IDwgZ2V0V2luZG93SGVpZ2h0
KCk7IHkrKykKKyAgICB7CisgICAgICAgIGZvciAoaW50IHggPSAxOyB4IDwgZ2V0V2luZG93V2lk
dGgoKTsgeCsrKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBHTHVieXRlKiBwcmV2UGl4
ZWwgPSAmcGl4ZWxzWzBdICsgKCgoeSAtIDEpICogZ2V0V2luZG93V2lkdGgoKSArICh4IC0gMSkp
ICogNCk7CisgICAgICAgICAgICBjb25zdCBHTHVieXRlKiBjdXJQaXhlbCA9ICZwaXhlbHNbMF0g
KyAoKHkgKiBnZXRXaW5kb3dXaWR0aCgpICsgeCkgKiA0KTsKKworICAgICAgICAgICAgRVhQRUNU
X0dFKGN1clBpeGVsWzBdLCBwcmV2UGl4ZWxbMF0pOworICAgICAgICAgICAgRVhQRUNUX0dFKGN1
clBpeGVsWzFdLCBwcmV2UGl4ZWxbMV0pOworICAgICAgICAgICAgRVhQRUNUX0VRKGN1clBpeGVs
WzJdLCBwcmV2UGl4ZWxbMl0pOworICAgICAgICAgICAgRVhQRUNUX0VRKGN1clBpeGVsWzNdLCBw
cmV2UGl4ZWxbM10pOworICAgICAgICB9CisgICAgfQorfQorCitURVNUX1AoTWF4VGV4dHVyZVNp
emVUZXN0LCBSZW5kZXJUb1RleHR1cmUpCit7CisgICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lv
bigpIDwgMyAmJiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQi
KSkpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBkdWUgdG8gbWlz
c2luZyBnbEJsaXRGcmFtZWJ1ZmZlcltBTkdMRV0gc3VwcG9ydC4iIDw8IHN0ZDo6ZW5kbDsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdMdWludCBmYm8gPSAwOworICAgIEdMdWludCB0
ZXh0dXJlSWQgPSAwOworICAgIC8vIGNyZWF0ZSBhIDEtbGV2ZWwgdGV4dHVyZSBhdCBtYXhpbXVt
IHNpemUKKyAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXh0dXJlSWQpOworICAgIGdsQmluZFRleHR1
cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZUlkKTsKKworICAgIEdMc2l6ZWkgdGV4dHVyZVdpZHRo
ID0gNjQ7CisgICAgR0xzaXplaSB0ZXh0dXJlSGVpZ2h0ID0gbU1heFRleHR1cmUyRFNpemU7CisK
KyAgICAvLyB0ZXh0dXJlIHNldHVwIGNvZGUKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUik7Cisg
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwg
R0xfTElORUFSKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgZ2xUZXhJ
bWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX0JHUkFfRVhULCB0ZXh0dXJlV2lkdGgsIHRleHR1
cmVIZWlnaHQsIDAsIEdMX0JHUkFfRVhULCBHTF9VTlNJR05FRF9CWVRFLCBOVUxMKTsKKyAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIGNyZWF0ZSBhbiBGQk8gYW5kIGF0dGFjaCB0
aGUgdGV4dHVyZQorICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZmYm8pOworICAgIGdsQmluZEZy
YW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBmYm8pOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJl
MkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCB0
ZXh0dXJlSWQsIDApOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgRVhQRUNUX0dM
RU5VTV9FUShHTF9GUkFNRUJVRkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KEdMX0ZSQU1FQlVGRkVSKSk7CisKKyAgICBjb25zdCBpbnQgZnJhbWVDb3VudCA9IDY0OworICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgZnJhbWVDb3VudDsgaSsrKQorICAgIHsKKyAgICAgICAgLy8g
Y2xlYXIgdGhlIHNjcmVlbgorICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZF
UiwgMCk7CisKKyAgICAgICAgR0x1Ynl0ZSBjbGVhclJlZCA9IHN0YXRpY19jYXN0PEdMdWJ5dGU+
KChmbG9hdChpKSAvIGZyYW1lQ291bnQpICogMjU1KTsKKyAgICAgICAgR0x1Ynl0ZSBjbGVhckdy
ZWVuID0gMjU1IC0gY2xlYXJSZWQ7CisgICAgICAgIEdMdWJ5dGUgY2xlYXJCbHVlID0gMDsKKwor
ICAgICAgICBnbENsZWFyQ29sb3IoY2xlYXJSZWQgLyAyNTUuMGYsIGNsZWFyR3JlZW4gLyAyNTUu
MGYsIGNsZWFyQmx1ZSAvIDI1NS4wZiwgMS4wZik7CisgICAgICAgIGdsQ2xlYXIoR0xfQ09MT1Jf
QlVGRkVSX0JJVCk7CisKKyAgICAgICAgLy8gcmVuZGVyIGJsdWUgaW50byB0aGUgdGV4dHVyZQor
ICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICAgICAg
ZHJhd1F1YWQobUJsdWVQcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgICAgICAvLyBj
b3B5IGNvcm5lciBvZiB0ZXh0dXJlIHRvIExMIGNvcm5lciBvZiB3aW5kb3cKKyAgICAgICAgZ2xC
aW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUl9BTkdMRSwgMCk7CisgICAgICAgIGds
QmluZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJBTUVCVUZGRVJfQU5HTEUsIGZibyk7CisgICAgICAg
IGdsQmxpdEZyYW1lYnVmZmVyQU5HTEUoMCwgMCwgdGV4dHVyZVdpZHRoIC0gMSwgZ2V0V2luZG93
SGVpZ2h0KCkgLSAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIHRleHR1
cmVXaWR0aCAtIDEsIGdldFdpbmRvd0hlaWdodCgpIC0gMSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9ORUFSRVNUKTsKKyAgICAgICAgZ2xC
aW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSwgMCk7CisgICAgICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOworCisgICAgICAgIEVYUEVDVF9QSVhFTF9FUSh0ZXh0dXJlV2lk
dGggLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIDAsIDAsIDI1NSwgMjU1KTsKKyAgICAgICAg
RVhQRUNUX1BJWEVMX0VRKHRleHR1cmVXaWR0aCArIDEwLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIs
IGNsZWFyUmVkLCBjbGVhckdyZWVuLCBjbGVhckJsdWUsIDI1NSk7CisKKyAgICAgICAgc3dhcEJ1
ZmZlcnMoKTsKKyAgICB9CisKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwg
MCk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCAwKTsKKworICAgIGdsRGVsZXRl
RnJhbWVidWZmZXJzKDEsICZmYm8pOworICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRleHR1cmVJ
ZCk7Cit9CisKKy8vIFRPRE8oZ2VvZmZsYW5nKTogRml4IHRoZSBkZXBlbmRlbmNlIG9uIGdsQmxp
dEZyYW1lYnVmZmVyQU5HTEUgd2l0aG91dCBjaGVja3MgYW5kIGFzc3VtaW5nIHRoZQorLy8gZGVm
YXVsdCBmcmFtZWJ1ZmZlciBpcyBCR1JBIHRvIGVuYWJsZSB0aGUgR0wgYW5kIEdMRVMgYmFja2Vu
ZHMuIChodHRwOi8vYW5nbGVidWcuY29tLzEyODkpCisKKy8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3
aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpv
ciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCitBTkdMRV9JTlNU
QU5USUFURV9URVNUKE1heFRleHR1cmVTaXplVGVzdCwgRVMyX0QzRDkoKSwgRVMyX0QzRDExKCks
IEVTMl9EM0QxMV9GTDlfMygpKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9nbF90ZXN0cy9NaXBtYXBUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvTWlwbWFwVGVzdC5jcHAJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL01pcG1hcFRl
c3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE0MSBAQAorLy8KKy8vIENvcHlyaWdo
dCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2lu
Y2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsK
KworbmFtZXNwYWNlCit7CisKK3ZvaWQgVGV4SW1hZ2VDdWJlTWFwRmFjZXMoR0xpbnQgbGV2ZWws
CisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnBpeGVscykKK3sKKyAgICBnbFRl
eEltYWdlMkQoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCB3aWR0aCwgMCwgZm9ybWF0LAorICAgICAgICAgICAgICAgICB0eXBlLCBw
aXhlbHMpOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1gs
IGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIHdpZHRoLCAwLCBmb3JtYXQsCisgICAgICAg
ICAgICAgICAgIHR5cGUsIHBpeGVscyk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfQ1VC
RV9NQVBfUE9TSVRJVkVfWSwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgd2lkdGgsIDAs
IGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgdHlwZSwgcGl4ZWxzKTsKKyAgICBnbFRleEltYWdl
MkQoR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZLCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCB3aWR0aCwgMCwgZm9ybWF0LAorICAgICAgICAgICAgICAgICB0eXBlLCBwaXhlbHMp
OworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1osIGxldmVs
LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIHdpZHRoLCAwLCBmb3JtYXQsCisgICAgICAgICAgICAg
ICAgIHR5cGUsIHBpeGVscyk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfQ1VCRV9NQVBf
TkVHQVRJVkVfWiwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgd2lkdGgsIDAsIGZvcm1h
dCwKKyAgICAgICAgICAgICAgICAgdHlwZSwgcGl4ZWxzKTsKK30KKworY2xhc3MgQmFzZU1pcG1h
cFRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICB2b2lkIGNsZWFy
QW5kRHJhd1F1YWQoR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgdmlld3BvcnRXaWR0aCwgR0xzaXpl
aSB2aWV3cG9ydEhlaWdodCkKKyAgICB7CisgICAgICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBm
LCAwLjBmLCAxLjBmKTsKKyAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAg
ICAgICAgZ2xWaWV3cG9ydCgwLCAwLCB2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCk7Cisg
ICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgICAgIGRyYXdRdWFkKHByb2dyYW0s
ICJwb3NpdGlvbiIsIDAuMGYpOworICAgIH0KK307CisKK30gIC8vIG5hbWVzcGFjZQorCitjbGFz
cyBNaXBtYXBUZXN0IDogcHVibGljIEJhc2VNaXBtYXBUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAg
ICBNaXBtYXBUZXN0KCkKKyAgICAgICAgOiBtMkRQcm9ncmFtKDApLAorICAgICAgICAgIG1DdWJl
UHJvZ3JhbSgwKSwKKyAgICAgICAgICBtVGV4dHVyZTJEKDApLAorICAgICAgICAgIG1UZXh0dXJl
Q3ViZSgwKSwKKyAgICAgICAgICBtTGV2ZWxaZXJvQmx1ZUluaXREYXRhKG51bGxwdHIpLAorICAg
ICAgICAgIG1MZXZlbFplcm9XaGl0ZUluaXREYXRhKG51bGxwdHIpLAorICAgICAgICAgIG1MZXZl
bE9uZUluaXREYXRhKG51bGxwdHIpLAorICAgICAgICAgIG1MZXZlbFR3b0luaXREYXRhKG51bGxw
dHIpLAorICAgICAgICAgIG1PZmZzY3JlZW5GcmFtZWJ1ZmZlcigwKQorICAgIHsKKyAgICAgICAg
c2V0V2luZG93V2lkdGgoMTI4KTsKKyAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7CisgICAg
ICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsK
KyAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0FscGhhQml0
cyg4KTsKKyAgICB9CisKKyAgICB2b2lkIHNldFVwMkRQcm9ncmFtKCkKKyAgICB7CisgICAgICAg
IC8vIFZlcnRleCBTaGFkZXIgc291cmNlCisgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdnMgPSBTSEFERVJfU09VUkNFCisgICAgICAgICgKKyAg
ICAgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uOworICAgICAgICAgICAgdmFyeWluZyB2
ZWMyIHZUZXhDb29yZDsKKworICAgICAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOworICAgICAgICAgICAgICAg
IHZUZXhDb29yZCAgID0gKHBvc2l0aW9uLnh5ICogMC41KSArIDAuNTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgKTsKKworICAgICAgICAvLyBGcmFnbWVudCBTaGFkZXIgc291cmNlCisgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIGZzID0gU0hBREVSX1NPVVJDRQorICAgICAgICAoCisgICAgICAg
ICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAgICAgICAgICAgdW5pZm9ybSBzYW1w
bGVyMkQgdVRleHR1cmU7CisgICAgICAgICAgICB2YXJ5aW5nIHZlYzIgdlRleENvb3JkOworCisg
ICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGds
X0ZyYWdDb2xvciA9IHRleHR1cmUyRCh1VGV4dHVyZSwgdlRleENvb3JkKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgKTsKKyAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9uCisKKyAgICAgICAgbTJE
UHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZzLCBmcyk7CisgICAgICAgIEFTU0VSVF9ORSgwdSwg
bTJEUHJvZ3JhbSk7CisgICAgfQorCisgICAgdm9pZCBzZXRVcEN1YmVQcm9ncmFtKCkKKyAgICB7
CisgICAgICAgIC8vIEEgc2ltcGxlIHZlcnRleCBzaGFkZXIgZm9yIHRoZSB0ZXh0dXJlIGN1YmUK
KyAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgorICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBj
dWJlVlMgPSBTSEFERVJfU09VUkNFCisgICAgICAgICgKKyAgICAgICAgICAgIGF0dHJpYnV0ZSB2
ZWM0IHBvc2l0aW9uOworICAgICAgICAgICAgdmFyeWluZyB2ZWM0IHZQb3NpdGlvbjsKKyAgICAg
ICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xfUG9z
aXRpb24gPSBwb3NpdGlvbjsKKyAgICAgICAgICAgICAgICB2UG9zaXRpb24gPSBwb3NpdGlvbjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICAvLyBBIHZlcnkgc2ltcGxlIGZy
YWdtZW50IHNoYWRlciB0byBzYW1wbGUgZnJvbSB0aGUgbmVnYXRpdmUtWSBmYWNlIG9mIGEgdGV4
dHVyZSBjdWJlLgorICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBjdWJlRlMgPSBTSEFERVJfU09V
UkNFCisgICAgICAgICgKKyAgICAgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAg
ICAgICAgICAgdW5pZm9ybSBzYW1wbGVyQ3ViZSB1VGV4dHVyZTsKKyAgICAgICAgICAgIHZhcnlp
bmcgdmVjNCB2UG9zaXRpb247CisKKyAgICAgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZUN1YmUodVRleHR1cmUs
IHZlYzModlBvc2l0aW9uLngsIC0xLCB2UG9zaXRpb24ueSkpOworICAgICAgICAgICAgfQorICAg
ICAgICApOworICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb24KKworICAgICAgICBtQ3ViZVByb2dy
YW0gPSBDb21waWxlUHJvZ3JhbShjdWJlVlMsIGN1YmVGUyk7CisgICAgICAgIEFTU0VSVF9ORSgw
dSwgbUN1YmVQcm9ncmFtKTsKKyAgICB9CisKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKKworICAgICAgICBzZXRVcDJEUHJvZ3Jh
bSgpOworCisgICAgICAgIHNldFVwQ3ViZVByb2dyYW0oKTsKKworICAgICAgICBtTGV2ZWxaZXJv
Qmx1ZUluaXREYXRhID0gY3JlYXRlUkdCSW5pdERhdGEoZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2lu
ZG93SGVpZ2h0KCksIDAsIDAsIDI1NSk7IC8vIEJsdWUKKyAgICAgICAgbUxldmVsWmVyb1doaXRl
SW5pdERhdGEgPSBjcmVhdGVSR0JJbml0RGF0YShnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dI
ZWlnaHQoKSwgMjU1LCAyNTUsIDI1NSk7IC8vIFdoaXRlCisgICAgICAgIG1MZXZlbE9uZUluaXRE
YXRhID0gY3JlYXRlUkdCSW5pdERhdGEoKGdldFdpbmRvd1dpZHRoKCkgLyAyKSwgKGdldFdpbmRv
d0hlaWdodCgpIC8gMiksIDAsIDI1NSwgMCk7ICAgLy8gR3JlZW4KKyAgICAgICAgbUxldmVsVHdv
SW5pdERhdGEgPSBjcmVhdGVSR0JJbml0RGF0YSgoZ2V0V2luZG93V2lkdGgoKSAvIDQpLCAoZ2V0
V2luZG93SGVpZ2h0KCkgLyA0KSwgMjU1LCAwLCAwKTsgICAvLyBSZWQKKworICAgICAgICBnbEdl
bkZyYW1lYnVmZmVycygxLCAmbU9mZnNjcmVlbkZyYW1lYnVmZmVyKTsKKyAgICAgICAgZ2xHZW5U
ZXh0dXJlcygxLCAmbVRleHR1cmUyRCk7CisKKyAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgdGV4
dHVyZTJEIHRvIGJlIGVtcHR5LCBhbmQgZG9uJ3QgdXNlIG1pcHMuCisgICAgICAgIGdsQmluZFRl
eHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7CisgICAgICAgIGdsVGV4SW1hZ2UyRChH
TF9URVhUVVJFXzJELCAwLCBHTF9SR0IsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdo
dCgpLCAwLCBHTF9SR0IsIEdMX1VOU0lHTkVEX0JZVEUsIE5VTEwpOworICAgICAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIp
OworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5f
RklMVEVSLCBHTF9MSU5FQVIpOworCisgICAgICAgIEFTU0VSVF9FUShnZXRXaW5kb3dXaWR0aCgp
LCBnZXRXaW5kb3dIZWlnaHQoKSk7CisKKyAgICAgICAgLy8gQ3JlYXRlIGEgbm9uLW1pcHBlZCB0
ZXh0dXJlIGN1YmUuIFNldCB0aGUgbmVnYXRpdmUtWSBmYWNlIHRvIGJlIGJsdWUuCisgICAgICAg
IGdsR2VuVGV4dHVyZXMoMSwgJm1UZXh0dXJlQ3ViZSk7CisgICAgICAgIGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV9DVUJFX01BUCwgbVRleHR1cmVDdWJlKTsKKyAgICAgICAgVGV4SW1hZ2VDdWJl
TWFwRmFjZXMoMCwgR0xfUkdCLCBnZXRXaW5kb3dXaWR0aCgpLCBHTF9SR0IsIEdMX1VOU0lHTkVE
X0JZVEUsIG51bGxwdHIpOworICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV9DVUJFX01B
UF9ORUdBVElWRV9ZLCAwLCBHTF9SR0IsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd1dpZHRo
KCksCisgICAgICAgICAgICAgICAgICAgICAwLCBHTF9SR0IsIEdMX1VOU0lHTkVEX0JZVEUsIG1M
ZXZlbFplcm9CbHVlSW5pdERhdGEpOworCisgICAgICAgIC8vIENvbXBsZXRlIHRoZSB0ZXh0dXJl
IGN1YmUgd2l0aG91dCBtaXBtYXBzIHRvIHN0YXJ0IHdpdGguCisgICAgICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFX0NVQkVfTUFQLCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJF
U1QpOworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9DVUJFX01BUCwgR0xfVEVY
VFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKworICAgICAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIGdsRGVsZXRlUHJvZ3JhbShtMkRQcm9ncmFtKTsKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFt
KG1DdWJlUHJvZ3JhbSk7CisgICAgICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZtT2Zmc2Ny
ZWVuRnJhbWVidWZmZXIpOworICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtVGV4dHVyZTJE
KTsKKyAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbVRleHR1cmVDdWJlKTsKKworICAgICAg
ICBTYWZlRGVsZXRlQXJyYXkobUxldmVsWmVyb0JsdWVJbml0RGF0YSk7CisgICAgICAgIFNhZmVE
ZWxldGVBcnJheShtTGV2ZWxaZXJvV2hpdGVJbml0RGF0YSk7CisgICAgICAgIFNhZmVEZWxldGVB
cnJheShtTGV2ZWxPbmVJbml0RGF0YSk7CisgICAgICAgIFNhZmVEZWxldGVBcnJheShtTGV2ZWxU
d29Jbml0RGF0YSk7CisKKyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOworICAgIH0KKwor
ICAgIEdMdWJ5dGUgKmNyZWF0ZVJHQkluaXREYXRhKEdMaW50IHdpZHRoLCBHTGludCBoZWlnaHQs
IEdMaW50IHIsIEdMaW50IGcsIEdMaW50IGIpCisgICAgeworICAgICAgICBHTHVieXRlICpkYXRh
ID0gbmV3IEdMdWJ5dGVbMyAqIHdpZHRoICogaGVpZ2h0XTsKKworICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IHdpZHRoICogaGVpZ2h0OyBpKz0xKQorICAgICAgICB7CisgICAgICAgICAgICBk
YXRhWzMgKiBpICsgMF0gPSBzdGF0aWNfY2FzdDxHTHVieXRlPihyKTsKKyAgICAgICAgICAgIGRh
dGFbMyAqIGkgKyAxXSA9IHN0YXRpY19jYXN0PEdMdWJ5dGU+KGcpOworICAgICAgICAgICAgZGF0
YVszICogaSArIDJdID0gc3RhdGljX2Nhc3Q8R0x1Ynl0ZT4oYik7CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4gZGF0YTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyVGV4dHVyZUxldmVsMChH
TGVudW0gdGV4dGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB0ZXh0
dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgcmVkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgZ3JlZW4sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xmbG9hdCBibHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQg
YWxwaGEpCisgICAgeworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwg
bU9mZnNjcmVlbkZyYW1lYnVmZmVyKTsKKyAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChH
TF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIHRleHRhcmdldCwgdGV4dHVyZSwg
MCk7CisgICAgICAgIEFTU0VSVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUsIGds
Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOworICAgICAgICBnbENsZWFy
Q29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworICAgICAgICBnbENsZWFyKEdMX0NPTE9S
X0JVRkZFUl9CSVQpOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwg
MCk7CisgICAgfQorCisgICAgR0x1aW50IG0yRFByb2dyYW07CisgICAgR0x1aW50IG1DdWJlUHJv
Z3JhbTsKKyAgICBHTHVpbnQgbVRleHR1cmUyRDsKKyAgICBHTHVpbnQgbVRleHR1cmVDdWJlOwor
CisgICAgR0x1Ynl0ZSogbUxldmVsWmVyb0JsdWVJbml0RGF0YTsKKyAgICBHTHVieXRlKiBtTGV2
ZWxaZXJvV2hpdGVJbml0RGF0YTsKKyAgICBHTHVieXRlKiBtTGV2ZWxPbmVJbml0RGF0YTsKKyAg
ICBHTHVieXRlKiBtTGV2ZWxUd29Jbml0RGF0YTsKKworICBwcml2YXRlOgorICAgIEdMdWludCBt
T2Zmc2NyZWVuRnJhbWVidWZmZXI7Cit9OworCitjbGFzcyBNaXBtYXBUZXN0RVMzIDogcHVibGlj
IEJhc2VNaXBtYXBUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBNaXBtYXBUZXN0RVMzKCkKKyAg
ICAgICAgOiBtVGV4dHVyZSgwKSwKKyAgICAgICAgICBtQXJyYXlQcm9ncmFtKDApLAorICAgICAg
ICAgIG1UZXh0dXJlQXJyYXlTbGljZVVuaWZvcm1Mb2NhdGlvbigtMSksCisgICAgICAgICAgbTNE
UHJvZ3JhbSgwKSwKKyAgICAgICAgICBtVGV4dHVyZTNEU2xpY2VVbmlmb3JtTG9jYXRpb24oLTEp
LAorICAgICAgICAgIG1UZXh0dXJlM0RMT0RVbmlmb3JtTG9jYXRpb24oLTEpLAorICAgICAgICAg
IG0yRFByb2dyYW0oMCkKKworICAgIHsKKyAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKKyAg
ICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7CisgICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7
CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQmx1ZUJp
dHMoOCk7CisgICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKKyAgICB9CisKKyAgICBzdGQ6
OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UoKQorICAgIHsKKyAgICAgICAgLy8gRG9uJ3QgcHV0
ICIjdmVyc2lvbiAuLi4iIG9uIGl0cyBvd24gbGluZS4gU2VlIFtjcHBdcDE6CisgICAgICAgIC8v
ICJJZiB0aGVyZSBhcmUgc2VxdWVuY2VzIG9mIHByZXByb2Nlc3NpbmcgdG9rZW5zIHdpdGhpbiB0
aGUgbGlzdCBvZiBhcmd1bWVudHMgdGhhdAorICAgICAgICAvLyAgd291bGQgb3RoZXJ3aXNlIGFj
dCBhcyBwcmVwcm9jZXNzaW5nIGRpcmVjdGl2ZXMsIHRoZSBiZWhhdmlvciBpcyB1bmRlZmluZWQi
CisgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgICAgICAgcmV0dXJuIFNIQURFUl9TT1VS
Q0UKKyAgICAgICAgKCAgICN2ZXJzaW9uIDMwMCBlc1xuCisgICAgICAgICAgICBwcmVjaXNpb24g
aGlnaHAgZmxvYXQ7CisgICAgICAgICAgICBpbiB2ZWM0IHBvc2l0aW9uOworICAgICAgICAgICAg
b3V0IHZlYzIgdGV4Y29vcmQ7CisKKyAgICAgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLnh5LCAwLjAs
IDEuMCk7CisgICAgICAgICAgICAgICAgdGV4Y29vcmQgPSAocG9zaXRpb24ueHkgKiAwLjUpICsg
MC41OworICAgICAgICAgICAgfQorICAgICAgICApOworICAgICAgICAvLyBjbGFuZy1mb3JtYXQg
b24KKyAgICB9CisKKyAgICB2b2lkIHNldFVwQXJyYXlQcm9ncmFtKCkKKyAgICB7CisgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlQXJyYXkgPSBTSEFERVJfU09V
UkNFCisgICAgICAgICggICAjdmVyc2lvbiAzMDAgZXNcbgorICAgICAgICAgICAgcHJlY2lzaW9u
IGhpZ2hwIGZsb2F0OworICAgICAgICAgICAgdW5pZm9ybSBoaWdocCBzYW1wbGVyMkRBcnJheSB0
ZXg7CisgICAgICAgICAgICB1bmlmb3JtIGludCBzbGljZTsKKyAgICAgICAgICAgIGluIHZlYzIg
dGV4Y29vcmQ7CisgICAgICAgICAgICBvdXQgdmVjNCBvdXRfRnJhZ0NvbG9yOworCisgICAgICAg
ICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dF9GcmFn
Q29sb3IgPSB0ZXh0dXJlKHRleCwgdmVjMyh0ZXhjb29yZCwgZmxvYXQoc2xpY2UpKSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICk7CisKKyAgICAgICAgbUFycmF5UHJvZ3JhbSA9IENvbXBpbGVQ
cm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSgpLCBmcmFnbWVudFNoYWRlclNvdXJjZUFycmF5KTsK
KyAgICAgICAgaWYgKG1BcnJheVByb2dyYW0gPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAg
RkFJTCgpIDw8ICJzaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLiI7CisgICAgICAgIH0KKworICAg
ICAgICBtVGV4dHVyZUFycmF5U2xpY2VVbmlmb3JtTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2Nh
dGlvbihtQXJyYXlQcm9ncmFtLCAic2xpY2UiKTsKKyAgICAgICAgQVNTRVJUX05FKC0xLCBtVGV4
dHVyZUFycmF5U2xpY2VVbmlmb3JtTG9jYXRpb24pOworCisgICAgICAgIGdsVXNlUHJvZ3JhbSht
QXJyYXlQcm9ncmFtKTsKKyAgICAgICAgZ2xVc2VQcm9ncmFtKDApOworICAgICAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKKyAgICB9CisKKyAgICB2b2lkIHNldFVwM0RQcm9ncmFtKCkKKyAgICB7
CisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlM0QgPSBTSEFE
RVJfU09VUkNFCisgICAgICAgICggICAjdmVyc2lvbiAzMDAgZXNcbgorICAgICAgICAgICAgcHJl
Y2lzaW9uIGhpZ2hwIGZsb2F0OworICAgICAgICAgICAgdW5pZm9ybSBoaWdocCBzYW1wbGVyM0Qg
dGV4OworICAgICAgICAgICAgdW5pZm9ybSBmbG9hdCBzbGljZTsKKyAgICAgICAgICAgIHVuaWZv
cm0gZmxvYXQgbG9kOworICAgICAgICAgICAgaW4gdmVjMiB0ZXhjb29yZDsKKyAgICAgICAgICAg
IG91dCB2ZWM0IG91dF9GcmFnQ29sb3I7CisKKyAgICAgICAgICAgIHZvaWQgbWFpbigpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0X0ZyYWdDb2xvciA9IHRleHR1cmVMb2QodGV4
LCB2ZWMzKHRleGNvb3JkLCBzbGljZSksIGxvZCk7CisgICAgICAgICAgICB9CisgICAgICAgICk7
CisKKyAgICAgICAgbTNEUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJj
ZSgpLCBmcmFnbWVudFNoYWRlclNvdXJjZTNEKTsKKyAgICAgICAgaWYgKG0zRFByb2dyYW0gPT0g
MCkKKyAgICAgICAgeworICAgICAgICAgICAgRkFJTCgpIDw8ICJzaGFkZXIgY29tcGlsYXRpb24g
ZmFpbGVkLiI7CisgICAgICAgIH0KKworICAgICAgICBtVGV4dHVyZTNEU2xpY2VVbmlmb3JtTG9j
YXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtM0RQcm9ncmFtLCAic2xpY2UiKTsKKyAgICAg
ICAgQVNTRVJUX05FKC0xLCBtVGV4dHVyZTNEU2xpY2VVbmlmb3JtTG9jYXRpb24pOworCisgICAg
ICAgIG1UZXh0dXJlM0RMT0RVbmlmb3JtTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbiht
M0RQcm9ncmFtLCAibG9kIik7CisgICAgICAgIEFTU0VSVF9ORSgtMSwgbVRleHR1cmUzRExPRFVu
aWZvcm1Mb2NhdGlvbik7CisKKyAgICAgICAgZ2xVc2VQcm9ncmFtKG0zRFByb2dyYW0pOworICAg
ICAgICBnbFVuaWZvcm0xZihtVGV4dHVyZTNETE9EVW5pZm9ybUxvY2F0aW9uLCAwKTsKKyAgICAg
ICAgZ2xVc2VQcm9ncmFtKDApOworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICB9
CisKKyAgICB2b2lkIHNldFVwMkRQcm9ncmFtKCkKKyAgICB7CisgICAgICAgIC8vIGNsYW5nLWZv
cm1hdCBvZmYKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2Uy
RCA9IFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKCAgICN2ZXJzaW9uIDMwMCBlc1xuCisgICAgICAg
ICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisgICAgICAgICAgICB1bmlmb3JtIGhpZ2hwIHNh
bXBsZXIyRCB0ZXg7CisgICAgICAgICAgICBpbiB2ZWMyIHRleGNvb3JkOworICAgICAgICAgICAg
b3V0IHZlYzQgb3V0X0ZyYWdDb2xvcjsKKworICAgICAgICAgICAgdm9pZCBtYWluKCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXRfRnJhZ0NvbG9yID0gdGV4dHVyZSh0ZXgsIHRl
eGNvb3JkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKyAgICAgICAgLy8gY2xhbmctZm9y
bWF0IG9uCisKKyAgICAgICAgbTJEUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRl
clNvdXJjZSgpLCBmcmFnbWVudFNoYWRlclNvdXJjZTJEKTsKKyAgICAgICAgQVNTRVJUX05FKDB1
LCBtMkRQcm9ncmFtKTsKKworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICB9CisK
KyAgICB2b2lkIHNldFVwQ3ViZVByb2dyYW0oKQorICAgIHsKKyAgICAgICAgLy8gQSB2ZXJ5IHNp
bXBsZSBmcmFnbWVudCBzaGFkZXIgdG8gc2FtcGxlIGZyb20gdGhlIG5lZ2F0aXZlLVkgZmFjZSBv
ZiBhIHRleHR1cmUgY3ViZS4KKyAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgorICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyBjdWJlRlMgPSBTSEFERVJfU09VUkNFCisgICAgICAgICggICAjdmVy
c2lvbiAzMDAgZXNcbgorICAgICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAg
ICAgICAgICB1bmlmb3JtIHNhbXBsZXJDdWJlIHVUZXh0dXJlOworICAgICAgICAgICAgaW4gdmVj
MiB0ZXhjb29yZDsKKyAgICAgICAgICAgIG91dCB2ZWM0IG91dF9GcmFnQ29sb3I7CisKKyAgICAg
ICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0X0Zy
YWdDb2xvciA9IHRleHR1cmUodVRleHR1cmUsIHZlYzModGV4Y29vcmQueCwgLTEsIHRleGNvb3Jk
LnkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKyAgICAgICAgLy8gY2xhbmctZm9ybWF0
IG9uCisKKyAgICAgICAgbUN1YmVQcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVy
U291cmNlKCksIGN1YmVGUyk7CisgICAgICAgIEFTU0VSVF9ORSgwdSwgbUN1YmVQcm9ncmFtKTsK
KworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICB9CisKKyAgICB2b2lkIFNldFVw
KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKKworICAgICAg
ICBnbEdlblRleHR1cmVzKDEsICZtVGV4dHVyZSk7CisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOworCisgICAgICAgIHNldFVwQXJyYXlQcm9ncmFtKCk7CisgICAgICAgIHNldFVwM0RQcm9n
cmFtKCk7CisgICAgICAgIHNldFVwMkRQcm9ncmFtKCk7CisgICAgICAgIHNldFVwQ3ViZVByb2dy
YW0oKTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0dXJlKTsKKworICAgICAgICBnbERlbGV0ZVBy
b2dyYW0obUFycmF5UHJvZ3JhbSk7CisgICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtM0RQcm9ncmFt
KTsKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG0yRFByb2dyYW0pOworICAgICAgICBnbERlbGV0
ZVByb2dyYW0obUN1YmVQcm9ncmFtKTsKKworICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7
CisgICAgfQorCisgICAgR0x1aW50IG1UZXh0dXJlOworCisgICAgR0x1aW50IG1BcnJheVByb2dy
YW07CisgICAgR0xpbnQgbVRleHR1cmVBcnJheVNsaWNlVW5pZm9ybUxvY2F0aW9uOworCisgICAg
R0x1aW50IG0zRFByb2dyYW07CisgICAgR0xpbnQgbVRleHR1cmUzRFNsaWNlVW5pZm9ybUxvY2F0
aW9uOworICAgIEdMaW50IG1UZXh0dXJlM0RMT0RVbmlmb3JtTG9jYXRpb247CisKKyAgICBHTHVp
bnQgbTJEUHJvZ3JhbTsKKworICAgIEdMdWludCBtQ3ViZVByb2dyYW07Cit9OworCisvLyBUaGlz
IHRlc3QgdXNlcyBpbml0IGRhdGEgZm9yIHRoZSBmaXJzdCB0aHJlZSBsZXZlbHMgb2YgdGhlIHRl
eHR1cmUuIEl0IHBhc3NlcyB0aGUgbGV2ZWwgMCBkYXRhIGluLCB0aGVuIHJlbmRlcnMsIHRoZW4g
bGV2ZWwgMSwgdGhlbiByZW5kZXJzLCBldGMuCisvLyBUaGlzIGVuc3VyZXMgdGhhdCByZW5kZXJl
cnMgdXNpbmcgdGhlIHplcm8gTE9EIHdvcmthcm91bmQgKGUuZy4gRDNEMTEgRkw5XzMpIGNvcnJl
Y3RseSBwYXNzIGluaXQgZGF0YSB0byB0aGUgbWlwbWFwcGVkIHRleHR1cmUsCisvLyBldmVuIGlm
IHRoZSB0aGUgemVyby1MT0QgdGV4dHVyZSBpcyBjdXJyZW50bHkgaW4gdXNlLgorVEVTVF9QKE1p
cG1hcFRlc3QsIERJU0FCTEVEX1RocmVlTGV2ZWxzSW5pdERhdGEpCit7CisgICAgLy8gUGFzcyBp
biBsZXZlbCB6ZXJvIGluaXQgZGF0YS4KKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQs
IG1UZXh0dXJlMkQpOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0Is
IGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAwLCBHTF9SR0IsIEdMX1VOU0lH
TkVEX0JZVEUsIG1MZXZlbFplcm9CbHVlSW5pdERhdGEpOworICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOworCisgICAgLy8gRGlzYWJsZSBtaXBzLgorICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworCisgICAgLy8gRHJh
dyBhIGZ1bGwtc2l6ZWQgcXVhZCwgYW5kIGNoZWNrIGl0J3MgYmx1ZS4KKyAgICBjbGVhckFuZERy
YXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpKTsK
KyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRv
d0hlaWdodCgpIC8gMiwgR0xDb2xvcjo6Ymx1ZSk7CisKKyAgICAvLyBEcmF3IGEgaGFsZi1zaXpl
ZCBxdWFkLCBhbmQgY2hlY2sgaXQncyBibHVlLgorICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJv
Z3JhbSwgZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMik7CisgICAg
RVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyA0LCBnZXRXaW5kb3dIZWln
aHQoKSAvIDQsIEdMQ29sb3I6OmJsdWUpOworCisgICAgLy8gRHJhdyBhIHF1YXJ0ZXItc2l6ZWQg
cXVhZCwgYW5kIGNoZWNrIGl0J3MgYmx1ZS4KKyAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dy
YW0sIGdldFdpbmRvd1dpZHRoKCkgLyA0LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDQpOworICAgIEVY
UEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8gOCwgZ2V0V2luZG93SGVpZ2h0
KCkgLyA4LCBHTENvbG9yOjpibHVlKTsKKworICAgIC8vIENvbXBsZXRlIHRoZSB0ZXh0dXJlIGJ5
IGluaXRpYWxpemluZyB0aGUgcmVtYWluaW5nIGxldmVscy4KKyAgICBpbnQgbiA9IDE7CisgICAg
d2hpbGUgKGdldFdpbmRvd1dpZHRoKCkgLyAoMVUgPDwgbikgPj0gMSkKKyAgICB7CisgICAgICAg
IGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCBuLCBHTF9SR0IsIGdldFdpbmRvd1dpZHRoKCkg
LyAoMVUgPDwgbiksIGdldFdpbmRvd1dpZHRoKCkgLyAoMVUgPDwgbiksIDAsIEdMX1JHQiwgR0xf
VU5TSUdORURfQllURSwgTlVMTCk7CisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAg
ICAgICBuKz0xOworICAgIH0KKworICAgIC8vIFBhc3MgaW4gbGV2ZWwgb25lIGluaXQgZGF0YS4K
KyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdCLCBnZXRXaW5kb3dXaWR0
aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCAwLCBHTF9SR0IsIEdMX1VOU0lHTkVEX0JZ
VEUsIG1MZXZlbE9uZUluaXREYXRhKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAg
IC8vIERyYXcgYSBmdWxsLXNpemVkIHF1YWQsIGFuZCBjaGVjayBpdCdzIGJsdWUuCisgICAgY2xl
YXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWln
aHQoKSk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBn
ZXRXaW5kb3dIZWlnaHQoKSAvIDIsIEdMQ29sb3I6OmJsdWUpOworCisgICAgLy8gRHJhdyBhIGhh
bGYtc2l6ZWQgcXVhZCwgYW5kIGNoZWNrIGl0J3MgYmx1ZS4gV2UndmUgbm90IGVuYWJsZWQgbWlw
bWFwcyB5ZXQsIHNvIG91ciBpbml0IGRhdGEgZm9yIGxldmVsIG9uZSBzaG91bGRuJ3QgYmUgdXNl
ZC4KKyAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCkgLyAy
LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRX
aW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCBHTENvbG9yOjpibHVlKTsK
KworICAgIC8vIEVuYWJsZSBtaXBtYXBzLgorICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUl9NSVBNQVBfTkVBUkVTVCk7CisK
KyAgICAvLyBEcmF3IGEgaGFsZi1zaXplZCBxdWFkLCBhbmQgY2hlY2sgaXQncyBncmVlbi4KKyAg
ICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRX
aW5kb3dIZWlnaHQoKSAvIDIpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dX
aWR0aCgpIC8gNCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCBHTENvbG9yOjpncmVlbik7CisKKyAg
ICAvLyBEcmF3IGEgcXVhcnRlci1zaXplZCBxdWFkLCBhbmQgY2hlY2sgaXQncyBibGFjaywgc2lu
Y2Ugd2UndmUgbm90IHBhc3NlZCBhbnkgaW5pdCBkYXRhIGZvciBsZXZlbCB0d28uCisgICAgY2xl
YXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93
SGVpZ2h0KCkgLyA0KTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgo
KSAvIDgsIGdldFdpbmRvd0hlaWdodCgpIC8gOCwgR0xDb2xvcjo6YmxhY2spOworCisgICAgLy8g
UGFzcyBpbiBsZXZlbCB0d28gaW5pdCBkYXRhLgorICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJF
XzJELCAyLCBHTF9SR0IsIGdldFdpbmRvd1dpZHRoKCkgLyA0LCBnZXRXaW5kb3dIZWlnaHQoKSAv
IDQsIDAsIEdMX1JHQiwgR0xfVU5TSUdORURfQllURSwgbUxldmVsVHdvSW5pdERhdGEpOworICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gRHJhdyBhIGZ1bGwtc2l6ZWQgcXVhZCwg
YW5kIGNoZWNrIGl0J3MgYmx1ZS4KKyAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdl
dFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09M
T1JfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgR0xDb2xv
cjo6Ymx1ZSk7CisKKyAgICAvLyBEcmF3IGEgaGFsZi1zaXplZCBxdWFkLCBhbmQgY2hlY2sgaXQn
cyBncmVlbi4KKyAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRo
KCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9F
UShnZXRXaW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCBHTENvbG9yOjpn
cmVlbik7CisKKyAgICAvLyBEcmF3IGEgcXVhcnRlci1zaXplZCBxdWFkLCBhbmQgY2hlY2sgaXQn
cyByZWQuCisgICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgp
IC8gNCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA0KTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEo
Z2V0V2luZG93V2lkdGgoKSAvIDgsIGdldFdpbmRvd0hlaWdodCgpIC8gOCwgR0xDb2xvcjo6cmVk
KTsKKworICAgIC8vIE5vdyBkaXNhYmxlIG1pcG1hcHMgYWdhaW4sIGFuZCByZW5kZXIgbXVsdGlw
bGUgc2l6ZWQgcXVhZHMuIFRoZXkgc2hvdWxkIGFsbCBiZSBibHVlLCBzaW5jZSBsZXZlbCAwIGlz
IGJsdWUuCisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlO
X0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBn
ZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7CisgICAgRVhQRUNUX1BJWEVMX0NP
TE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIEdMQ29s
b3I6OmJsdWUpOworICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lk
dGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMik7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9S
X0VRKGdldFdpbmRvd1dpZHRoKCkgLyA0LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIEdMQ29sb3I6
OmJsdWUpOworICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgo
KSAvIDQsIGdldFdpbmRvd0hlaWdodCgpIC8gNCk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VR
KGdldFdpbmRvd1dpZHRoKCkgLyA4LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDgsIEdMQ29sb3I6OmJs
dWUpOworCisgICAgLy8gTm93IHJlc2V0IGxldmVsIDAgdG8gd2hpdGUsIGtlZXBpbmcgbWlwbWFw
cyBkaXNhYmxlZC4gVGhlbiwgcmVuZGVyIHZhcmlvdXMgc2l6ZWQgcXVhZHMuIFRoZXkgc2hvdWxk
IGJlIHdoaXRlLgorICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0IsIGdl
dFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAwLCBHTF9SR0IsIEdMX1VOU0lHTkVE
X0JZVEUsIG1MZXZlbFplcm9XaGl0ZUluaXREYXRhKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1Io
KTsKKworICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSwg
Z2V0V2luZG93SGVpZ2h0KCkpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dX
aWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCBHTENvbG9yOjp3aGl0ZSk7CisgICAg
Y2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2lu
ZG93SGVpZ2h0KCkgLyAyKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lk
dGgoKSAvIDQsIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgR0xDb2xvcjo6d2hpdGUpOworICAgIGNs
ZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSAvIDQsIGdldFdpbmRv
d0hlaWdodCgpIC8gNCk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRo
KCkgLyA4LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDgsIEdMQ29sb3I6OndoaXRlKTsKKworICAgIC8v
IFRoZW4gZW5hYmxlIG1pcG1hcHMgYWdhaW4uIFRoZSBxdWFkcyBzaG91bGQgYmUgd2hpdGUsIGdy
ZWVuLCByZWQgcmVzcGVjdGl2ZWx5LgorICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUl9NSVBNQVBfTkVBUkVTVCk7CisKKyAg
ICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRv
d0hlaWdodCgpKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgoKSAv
IDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgR0xDb2xvcjo6d2hpdGUpOworICAgIGNsZWFyQW5k
RHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdo
dCgpIC8gMik7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyA0
LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIEdMQ29sb3I6OmdyZWVuKTsKKyAgICBjbGVhckFuZERy
YXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCkgLyA0LCBnZXRXaW5kb3dIZWlnaHQo
KSAvIDQpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8gOCwg
Z2V0V2luZG93SGVpZ2h0KCkgLyA4LCBHTENvbG9yOjpyZWQpOworfQorCisvLyBUaGlzIHRlc3Qg
Z2VuZXJhdGVzIChhbmQgdXNlcykgbWlwbWFwcyBvbiBhIHRleHR1cmUgdXNpbmcgaW5pdCBkYXRh
LiBEM0QxMSB3aWxsIHVzZSBhIG5vbi1yZW5kZXJhYmxlIFRleHR1cmVTdG9yYWdlIGZvciB0aGlz
LgorLy8gVGhlIHRlc3QgdGhlbiBkaXNhYmxlcyBtaXBzLCByZW5kZXJzIHRvIGxldmVsIHplcm8g
b2YgdGhlIHRleHR1cmUsIGFuZCByZWVuYWJsZXMgbWlwcyBiZWZvcmUgdXNpbmcgdGhlIHRleHR1
cmUgYWdhaW4uCisvLyBUbyBkbyB0aGlzLCBEM0QxMSBoYXMgdG8gY29udmVydCB0aGUgVGV4dHVy
ZVN0b3JhZ2UgaW50byBhIHJlbmRlcmFibGUgb25lLgorLy8gVGhpcyB0ZXN0IGVuc3VyZXMgdGhh
dCB0aGUgY29udmVyc2lvbiB3b3JrcyBjb3JyZWN0bHkuCisvLyBJbiBwYXJ0aWN1bGFyLCBvbiBE
M0QxMSBGZWF0dXJlIExldmVsIDlfMyBpdCBlbnN1cmVzIHRoYXQgYm90aCB0aGUgemVybyBMT0Qg
d29ya2Fyb3VuZCB0ZXh0dXJlIEFORCB0aGUgJ25vcm1hbCcgdGV4dHVyZSBhcmUgY29waWVkIGR1
cmluZyBjb252ZXJzaW9uLgorVEVTVF9QKE1pcG1hcFRlc3QsIEdlbmVyYXRlTWlwbWFwRnJvbUlu
aXREYXRhVGhlblJlbmRlcikKK3sKKyAgICAvLyBQYXNzIGluIGluaXRpYWwgZGF0YSBzbyB0aGUg
dGV4dHVyZSBpcyBibHVlLgorICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1
cmUyRCk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQiwgZ2V0V2lu
ZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIDAsIEdMX1JHQiwgR0xfVU5TSUdORURfQllU
RSwgbUxldmVsWmVyb0JsdWVJbml0RGF0YSk7CisKKyAgICAvLyBUaGVuIGdlbmVyYXRlIHRoZSBt
aXBzLgorICAgIGdsR2VuZXJhdGVNaXBtYXAoR0xfVEVYVFVSRV8yRCk7CisgICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7CisKKyAgICAvLyBFbmFibGUgbWlwbWFwcy4KKyAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVJfTUlQTUFQ
X05FQVJFU1QpOworCisgICAgLy8gTm93IGRyYXcgdGhlIHRleHR1cmUgdG8gdmFyaW91cyBkaWZm
ZXJlbnQgc2l6ZWQgYXJlYXMuCisgICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRX
aW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9S
X0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIEdMQ29sb3I6
OmJsdWUpOworCisgICAgLy8gVXNlIG1pcCBsZXZlbCAxCisgICAgY2xlYXJBbmREcmF3UXVhZCht
MkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyKTsK
KyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDQsIGdldFdpbmRv
d0hlaWdodCgpIC8gNCwgR0xDb2xvcjo6Ymx1ZSk7CisKKyAgICAvLyBVc2UgbWlwIGxldmVsIDIK
KyAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCkgLyA0LCBn
ZXRXaW5kb3dIZWlnaHQoKSAvIDQpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5k
b3dXaWR0aCgpIC8gOCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA4LCBHTENvbG9yOjpibHVlKTsKKwor
ICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gRGlzYWJsZSBtaXBzLiBSZW5kZXIg
YSBxdWFkIHVzaW5nIHRoZSB0ZXh0dXJlIGFuZCBlbnN1cmUgaXQncyBibHVlLgorICAgIGdsVGV4
UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJF
U1QpOworICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSwg
Z2V0V2luZG93SGVpZ2h0KCkpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dX
aWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCBHTENvbG9yOjpibHVlKTsKKworICAg
IC8vIENsZWFyIGxldmVsIDAgb2YgdGhlIHRleHR1cmUgdG8gcmVkLgorICAgIGNsZWFyVGV4dHVy
ZUxldmVsMChHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJELCAxLjBmLCAwLjBmLCAwLjBmLCAxLjBm
KTsKKworICAgIC8vIFJlZW5hYmxlIG1pcHMsIGFuZCB0cnkgcmVuZGVyaW5nIGRpZmZlcmVudC1z
aXplZCBxdWFkcy4KKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9NSU5fRklMVEVSLCBHTF9MSU5FQVJfTUlQTUFQX05FQVJFU1QpOworCisgICAgLy8gTGV2ZWwg
MCBpcyBub3cgcmVkLCBzbyB0aGlzIHNob3VsZCByZW5kZXIgcmVkLgorICAgIGNsZWFyQW5kRHJh
d1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwor
ICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93
SGVpZ2h0KCkgLyAyLCBHTENvbG9yOjpyZWQpOworCisgICAgLy8gVXNlIG1pcCBsZXZlbCAxLCBi
bHVlLgorICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSAv
IDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMik7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdl
dFdpbmRvd1dpZHRoKCkgLyA0LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIEdMQ29sb3I6OmJsdWUp
OworCisgICAgLy8gVXNlIG1pcCBsZXZlbCAyLCBibHVlLgorICAgIGNsZWFyQW5kRHJhd1F1YWQo
bTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSAvIDQsIGdldFdpbmRvd0hlaWdodCgpIC8gNCk7
CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyA4LCBnZXRXaW5k
b3dIZWlnaHQoKSAvIDgsIEdMQ29sb3I6OmJsdWUpOworfQorCisvLyBUaGlzIHRlc3QgZW5zdXJl
cyB0aGF0IG1pcHMgYXJlIGNvcnJlY3RseSBnZW5lcmF0ZWQgZnJvbSBhIHJlbmRlcmVkIGltYWdl
LgorLy8gSW4gcGFydGljdWxhciwgb24gRDNEMTEgRmVhdHVyZSBMZXZlbCA5XzMsIHRoZSBjbGVh
ciBjYWxsIHdpbGwgYmUgcGVyZm9ybWVkIG9uIHRoZSB6ZXJvLWxldmVsIHRleHR1cmUsIHJhdGhl
ciB0aGFuIHRoZSBtaXBwZWQgb25lLgorLy8gVGhlIHRlc3QgZW5zdXJlcyB0aGF0IHRoZSB6ZXJv
LWxldmVsIHRleHR1cmUgaXMgY29ycmVjdGx5IGNvcGllZCBpbnRvIHRoZSBtaXBwZWQgdGV4dHVy
ZSBiZWZvcmUgdGhlIG1pcG1hcHMgYXJlIGdlbmVyYXRlZC4KK1RFU1RfUChNaXBtYXBUZXN0LCBH
ZW5lcmF0ZU1pcG1hcEZyb21SZW5kZXJlZEltYWdlKQoreworICAgIGdsQmluZFRleHR1cmUoR0xf
VEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7CisgICAgLy8gQ2xlYXIgdGhlIHRleHR1cmUgdG8gYmx1
ZS4KKyAgICBjbGVhclRleHR1cmVMZXZlbDAoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCwgMC4w
ZiwgMC4wZiwgMS4wZiwgMS4wZik7CisKKyAgICAvLyBUaGVuIGdlbmVyYXRlIHRoZSBtaXBzCisg
ICAgZ2xHZW5lcmF0ZU1pcG1hcChHTF9URVhUVVJFXzJEKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKKworICAgIC8vIEVuYWJsZSBtaXBzLgorICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUl9NSVBNQVBfTkVBUkVTVCk7
CisKKyAgICAvLyBOb3cgZHJhdyB0aGUgdGV4dHVyZSB0byB2YXJpb3VzIGRpZmZlcmVudCBzaXpl
ZCBhcmVhcy4KKyAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRo
KCksIGdldFdpbmRvd0hlaWdodCgpKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2lu
ZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgR0xDb2xvcjo6Ymx1ZSk7CisK
KyAgICAvLyBVc2UgbWlwIGxldmVsIDEKKyAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0s
IGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIpOworICAgIEVYUEVD
VF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93SGVpZ2h0KCkg
LyA0LCBHTENvbG9yOjpibHVlKTsKKworICAgIC8vIFVzZSBtaXAgbGV2ZWwgMgorICAgIGNsZWFy
QW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSAvIDQsIGdldFdpbmRvd0hl
aWdodCgpIC8gNCk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkg
LyA4LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDgsIEdMQ29sb3I6OmJsdWUpOworfQorCisvLyBUZXN0
IHRvIGVuc3VyZSB0aGF0IHJlbmRlcmluZyB0byBhIG1pcG1hcHBlZCB0ZXh0dXJlIHdvcmtzLCBy
ZWdhcmRsZXNzIG9mIHdoZXRoZXIgbWlwbWFwcyBhcmUgZW5hYmxlZCBvciBub3QuCisvLyBUT0RP
OiBUaGlzIHRlc3QgaGl0cyBhIHRleHR1cmUgcmViaW5kIGJ1ZyBpbiB0aGUgRDNEMTEgcmVuZGVy
ZXIuIEZpeCB0aGlzLgorVEVTVF9QKE1pcG1hcFRlc3QsIFJlbmRlck9udG9MZXZlbFplcm9BZnRl
ckdlbmVyYXRlTWlwbWFwKQoreworICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogRmlndXJlIG91dCB3
aHkgdGhpcyBpcyBicm9rZW4gb24gQU1EIE9wZW5HTAorICAgIGlmICgoSXNBTUQoKSB8fCBJc0lu
dGVsKCkpICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQ
RV9PUEVOR0xfQU5HTEUpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBl
ZCBvbiBJbnRlbC9BTUQgT3BlbkdMLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEKTsKKwor
ICAgIC8vIENsZWFyIHRoZSB0ZXh0dXJlIHRvIGJsdWUuCisgICAgY2xlYXJUZXh0dXJlTGV2ZWww
KEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQsIDAuMGYsIDAuMGYsIDEuMGYsIDEuMGYpOworCisg
ICAgLy8gTm93LCBkcmF3IHRoZSB0ZXh0dXJlIHRvIGEgcXVhZCB0aGF0J3MgdGhlIHNhbWUgc2l6
ZSBhcyB0aGUgdGV4dHVyZS4gVGhpcyBkcmF3cyB0byB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlci4K
KyAgICAvLyBUaGUgcXVhZCBzaG91bGQgYmUgYmx1ZS4KKyAgICBjbGVhckFuZERyYXdRdWFkKG0y
RFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpKTsKKyAgICBFWFBF
Q1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgp
IC8gMiwgR0xDb2xvcjo6Ymx1ZSk7CisKKyAgICAvLyBOb3cgZ28gYmFjayB0byB0aGUgdGV4dHVy
ZSwgYW5kIGdlbmVyYXRlIG1pcHMgb24gaXQuCisgICAgZ2xHZW5lcmF0ZU1pcG1hcChHTF9URVhU
VVJFXzJEKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIE5vdyB0cnkgcmVu
ZGVyaW5nIHRoZSB0ZXh0dXJlZCBxdWFkIGFnYWluLiBOb3RlOiB3ZSd2ZSBub3QgdG9sZCBHTCB0
byB1c2UgdGhlIGdlbmVyYXRlZCBtaXBzLgorICAgIC8vIFRoZSBxdWFkIHNob3VsZCBiZSBibHVl
LgorICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0
V2luZG93SGVpZ2h0KCkpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0
aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCBHTENvbG9yOjpibHVlKTsKKworICAgIC8v
IE5vdyB0ZWxsIEdMIHRvIHVzZSB0aGUgZ2VuZXJhdGVkIG1pcHMuCisgICAgZ2xUZXhQYXJhbWV0
ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSX01JUE1B
UF9ORUFSRVNUKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIE5vdyByZW5k
ZXIgdGhlIHRleHR1cmVkIHF1YWQgYWdhaW4uIEl0IHNob3VsZCBiZSBzdGlsbCBiZSBibHVlLgor
ICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2lu
ZG93SGVpZ2h0KCkpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgp
IC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCBHTENvbG9yOjpibHVlKTsKKworICAgIC8vIE5v
dyByZW5kZXIgdGhlIHRleHR1cmVkIHF1YWQgdG8gYW4gYXJlYSBzbWFsbGVyIHRoYW4gdGhlIHRl
eHR1cmUgKGkuZS4gdG8gZm9yY2UgbWluaWZpY2F0aW9uKS4gVGhpcyBzaG91bGQgYmUgYmx1ZS4K
KyAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCkgLyA0LCBn
ZXRXaW5kb3dIZWlnaHQoKSAvIDQpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5k
b3dXaWR0aCgpIC8gOCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA4LCBHTENvbG9yOjpibHVlKTsKKwor
ICAgIC8vIE5vdyBjbGVhciB0aGUgdGV4dHVyZSB0byBncmVlbi4gVGhpcyBqdXN0IGNsZWFycyB0
aGUgdG9wIGxldmVsLiBUaGUgbG93ZXIgbWlwcyBzaG91bGQgcmVtYWluIGJsdWUuCisgICAgY2xl
YXJUZXh0dXJlTGV2ZWwwKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQsIDAuMGYsIDEuMGYsIDAu
MGYsIDEuMGYpOworCisgICAgLy8gUmVuZGVyIGEgdGV4dHVyZWQgcXVhZCBlcXVhbCBpbiBzaXpl
IHRvIHRoZSB0ZXh0dXJlLiBUaGlzIHNob3VsZCBiZSBncmVlbiwgc2luY2Ugd2UganVzdCBjbGVh
cmVkIGxldmVsIDAuCisgICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dX
aWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdl
dFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIEdMQ29sb3I6OmdyZWVu
KTsKKworICAgIC8vIFJlbmRlciBhIHNtYWxsIHRleHR1cmVkIHF1YWQuIFRoaXMgZm9yY2VzIG1p
bmlmaWNhdGlvbiwgc28gc2hvdWxkIHJlbmRlciBibHVlICh0aGUgY29sb3Igb2YgbGV2ZWxzIDEr
KS4KKyAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCkgLyA0
LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDQpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRX
aW5kb3dXaWR0aCgpIC8gOCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA4LCBHTENvbG9yOjpibHVlKTsK
KworICAgIC8vIERpc2FibGUgbWlwbWFwcyBhZ2FpbgorICAgIGdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7CisgICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBSZW5kZXIgYSB0ZXh0dXJlZCBxdWFkIGVxdWFsIGlu
IHNpemUgdG8gdGhlIHRleHR1cmUuIFRoaXMgc2hvdWxkIGJlIGdyZWVuLCB0aGUgY29sb3Igb2Yg
bGV2ZWwgMCBpbiB0aGUgdGV4dHVyZS4KKyAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0s
IGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpKTsKKyAgICBFWFBFQ1RfUElYRUxf
Q09MT1JfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgR0xD
b2xvcjo6Z3JlZW4pOworCisgICAgLy8gUmVuZGVyIGEgc21hbGwgdGV4dHVyZWQgcXVhZC4gVGhp
cyB3b3VsZCBmb3JjZSBtaW5pZmljYXRpb24gaWYgbWlwcyB3ZXJlIGVuYWJsZWQsIGJ1dCB0aGV5
J3JlIG5vdC4gVGhlcmVmb3JlLCB0aGlzIHNob3VsZCBiZSBncmVlbi4KKyAgICBjbGVhckFuZERy
YXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCkgLyA0LCBnZXRXaW5kb3dIZWlnaHQo
KSAvIDQpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8gOCwg
Z2V0V2luZG93SGVpZ2h0KCkgLyA4LCBHTENvbG9yOjpncmVlbik7Cit9CisKKy8vIFRoaXMgdGVz
dCBlbnN1cmVzIHRoYXQgdGhlIGxldmVsLXplcm8gd29ya2Fyb3VuZCBmb3IgVGV4dHVyZUN1YmVz
IChvbiBEM0QxMSBGZWF0dXJlIExldmVsIDlfMykKKy8vIHdvcmtzIGFzIGV4cGVjdGVkLiBJdCB0
ZXN0cyBlbmFibGluZy9kaXNhYmxpbmcgbWlwbWFwcywgZ2VuZXJhdGluZyBtaXBtYXBzLCBhbmQg
cmVuZGVyaW5nIHRvIGxldmVsIHplcm8uCitURVNUX1AoTWlwbWFwVGVzdCwgVGV4dHVyZUN1YmVH
ZW5lcmFsTGV2ZWxaZXJvKQoreworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV9DVUJFX01B
UCwgbVRleHR1cmVDdWJlKTsKKworICAgIC8vIERyYXcuIFNpbmNlIHRoZSBuZWdhdGl2ZS1ZIGZh
Y2UncyBpcyBibHVlLCB0aGlzIHNob3VsZCBiZSBibHVlLgorICAgIGNsZWFyQW5kRHJhd1F1YWQo
bUN1YmVQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7CisgICAg
RVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmJsdWUpOworCisgICAgLy8gR2Vu
ZXJhdGUgbWlwbWFwcywgYW5kIHJlbmRlci4gVGhpcyBzaG91bGQgYmUgYmx1ZS4KKyAgICBnbEdl
bmVyYXRlTWlwbWFwKEdMX1RFWFRVUkVfQ1VCRV9NQVApOworICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFX0NVQkVfTUFQLCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUl9NSVBN
QVBfTkVBUkVTVCk7CisgICAgY2xlYXJBbmREcmF3UXVhZChtQ3ViZVByb2dyYW0sIGdldFdpbmRv
d1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEo
MCwgMCwgR0xDb2xvcjo6Ymx1ZSk7CisKKyAgICAvLyBEcmF3IHVzaW5nIGEgc21hbGxlciB2aWV3
cG9ydCAodG8gZm9yY2UgYSBsb3dlciBMT0Qgb2YgdGhlIHRleHR1cmUpLiBUaGlzIHNob3VsZCBz
dGlsbCBiZSBibHVlLgorICAgIGNsZWFyQW5kRHJhd1F1YWQobUN1YmVQcm9ncmFtLCBnZXRXaW5k
b3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA0KTsKKyAgICBFWFBFQ1RfUElYRUxf
Q09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Ymx1ZSk7CisKKyAgICAvLyBOb3cgY2xlYXIgdGhlIG5l
Z2F0aXZlLVkgZmFjZSBvZiB0aGUgY3ViZSB0byByZWQuCisgICAgY2xlYXJUZXh0dXJlTGV2ZWww
KEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSwgbVRleHR1cmVDdWJlLCAxLjBmLCAwLjBm
LCAwLjBmLCAxLjBmKTsKKworICAgIC8vIERyYXcgdXNpbmcgYSBmdWxsLXNpemUgdmlld3BvcnQu
IFRoaXMgc2hvdWxkIGJlIHJlZC4KKyAgICBjbGVhckFuZERyYXdRdWFkKG1DdWJlUHJvZ3JhbSwg
Z2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOworICAgIEVYUEVDVF9QSVhFTF9D
T0xPUl9FUSgwLCAwLCBHTENvbG9yOjpyZWQpOworCisgICAgLy8gRHJhdyB1c2luZyBhIHF1YXJ0
ZXItc2l6ZSB2aWV3cG9ydCwgdG8gZm9yY2UgYSBsb3dlciBMT0QuIFRoaXMgc2hvdWxkIGJlICpC
TFVFKiwgc2luY2Ugd2Ugb25seSBjbGVhcmVkIGxldmVsIHplcm8KKyAgICAvLyBvZiB0aGUgbmVn
YXRpdmUtWSBmYWNlIHRvIHJlZCwgYW5kIGxlZnQgaXRzIG1pcG1hcHMgYmx1ZS4KKyAgICBjbGVh
ckFuZERyYXdRdWFkKG1DdWJlUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSAvIDQsIGdldFdpbmRv
d0hlaWdodCgpIC8gNCk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6
OmJsdWUpOworCisgICAgLy8gRGlzYWJsZSBtaXBtYXBzIGFnYWluLCBhbmQgZHJhdyBhIHRvIGEg
cXVhcnRlci1zaXplIHZpZXdwb3J0LgorICAgIC8vIFNpbmNlIHRoaXMgc2hvdWxkIHVzZSBsZXZl
bCB6ZXJvIG9mIHRoZSB0ZXh0dXJlLCB0aGlzIHNob3VsZCBiZSAqUkVEKi4KKyAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV9DVUJFX01BUCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9O
RUFSRVNUKTsKKyAgICBjbGVhckFuZERyYXdRdWFkKG1DdWJlUHJvZ3JhbSwgZ2V0V2luZG93V2lk
dGgoKSAvIDQsIGdldFdpbmRvd0hlaWdodCgpIC8gNCk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9S
X0VRKDAsIDAsIEdMQ29sb3I6OnJlZCk7Cit9CisKKy8vIFRoaXMgdGVzdCBlbnN1cmVzIHRoYXQg
cmVuZGVyaW5nIHRvIGxldmVsLXplcm8gb2YgYSBUZXh0dXJlQ3ViZSB3b3JrcyBhcyBleHBlY3Rl
ZC4KK1RFU1RfUChNaXBtYXBUZXN0LCBUZXh0dXJlQ3ViZVJlbmRlclRvTGV2ZWxaZXJvKQorewor
ICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV9DVUJFX01BUCwgbVRleHR1cmVDdWJlKTsKKwor
ICAgIC8vIERyYXcuIFNpbmNlIHRoZSBuZWdhdGl2ZS1ZIGZhY2UncyBpcyBibHVlLCB0aGlzIHNo
b3VsZCBiZSBibHVlLgorICAgIGNsZWFyQW5kRHJhd1F1YWQobUN1YmVQcm9ncmFtLCBnZXRXaW5k
b3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VR
KDAsIDAsIEdMQ29sb3I6OmJsdWUpOworCisgICAgLy8gTm93IGNsZWFyIHRoZSBuZWdhdGl2ZS1Z
IGZhY2Ugb2YgdGhlIGN1YmUgdG8gcmVkLgorICAgIGNsZWFyVGV4dHVyZUxldmVsMChHTF9URVhU
VVJFX0NVQkVfTUFQX05FR0FUSVZFX1ksIG1UZXh0dXJlQ3ViZSwgMS4wZiwgMC4wZiwgMC4wZiwg
MS4wZik7CisKKyAgICAvLyBEcmF3IHVzaW5nIGEgZnVsbC1zaXplIHZpZXdwb3J0LiBUaGlzIHNo
b3VsZCBiZSByZWQuCisgICAgY2xlYXJBbmREcmF3UXVhZChtQ3ViZVByb2dyYW0sIGdldFdpbmRv
d1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEo
MCwgMCwgR0xDb2xvcjo6cmVkKTsKKworICAgIC8vIERyYXcgYSB0byBhIHF1YXJ0ZXItc2l6ZSB2
aWV3cG9ydC4gVGhpcyBzaG91bGQgYWxzbyBiZSByZWQuCisgICAgY2xlYXJBbmREcmF3UXVhZCht
Q3ViZVByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCkgLyA0LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDQp
OworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpyZWQpOworfQorCisv
LyBDcmVhdGVzIGEgbWlwbWFwcGVkIDJEIGFycmF5IHRleHR1cmUgd2l0aCB0aHJlZSBsYXllcnMs
IGFuZCBjYWxscyBBTkdMRSdzIEdlbmVyYXRlTWlwbWFwLgorLy8gVGhlbiB0ZXN0cyBpZiB0aGUg
bWlwbWFwcyBhcmUgcmVuZGVyZWQgY29ycmVjdGx5IGZvciBhbGwgdGhyZWUgbGF5ZXJzLgorVEVT
VF9QKE1pcG1hcFRlc3RFUzMsIE1pcG1hcHNGb3JUZXh0dXJlQXJyYXkpCit7CisgICAgaW50IHB4
ID0gZ2V0V2luZG93V2lkdGgoKSAvIDI7CisgICAgaW50IHB5ID0gZ2V0V2luZG93SGVpZ2h0KCkg
LyAyOworCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJEX0FSUkFZLCBtVGV4dHVyZSk7
CisKKyAgICBnbFRleFN0b3JhZ2UzRChHTF9URVhUVVJFXzJEX0FSUkFZLCA1LCBHTF9SR0JBOCwg
MTYsIDE2LCAzKTsKKworICAgIC8vIEZpbGwgdGhlIGZpcnN0IGxheWVyIHdpdGggcmVkCisgICAg
c3RkOjp2ZWN0b3I8R0xDb2xvcj4gcGl4ZWxzUmVkKDE2ICogMTYsIEdMQ29sb3I6OnJlZCk7Cisg
ICAgZ2xUZXhTdWJJbWFnZTNEKEdMX1RFWFRVUkVfMkRfQVJSQVksIDAsIDAsIDAsIDAsIDE2LCAx
NiwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAgICAgcGl4
ZWxzUmVkLmRhdGEoKSk7CisKKyAgICAvLyBGaWxsIHRoZSBzZWNvbmQgbGF5ZXIgd2l0aCBncmVl
bgorICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHBpeGVsc0dyZWVuKDE2ICogMTYsIEdMQ29sb3I6
OmdyZWVuKTsKKyAgICBnbFRleFN1YkltYWdlM0QoR0xfVEVYVFVSRV8yRF9BUlJBWSwgMCwgMCwg
MCwgMSwgMTYsIDE2LCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAg
ICAgICAgICBwaXhlbHNHcmVlbi5kYXRhKCkpOworCisgICAgLy8gRmlsbCB0aGUgdGhpcmQgbGF5
ZXIgd2l0aCBibHVlCisgICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gcGl4ZWxzQmx1ZSgxNiAqIDE2
LCBHTENvbG9yOjpibHVlKTsKKyAgICBnbFRleFN1YkltYWdlM0QoR0xfVEVYVFVSRV8yRF9BUlJB
WSwgMCwgMCwgMCwgMiwgMTYsIDE2LCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAg
ICAgICAgICAgICAgICAgICBwaXhlbHNCbHVlLmRhdGEoKSk7CisKKyAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRF9BUlJBWSwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVJf
TUlQTUFQX05FQVJFU1QpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJEX0FSUkFZ
LCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7CisKKyAgICBFWFBFQ1RfR0xfTk9f
RVJST1IoKTsKKworICAgIGdsR2VuZXJhdGVNaXBtYXAoR0xfVEVYVFVSRV8yRF9BUlJBWSk7CisK
KyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsVXNlUHJvZ3JhbShtQXJyYXlQcm9n
cmFtKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gRHJhdyB0aGUgZmly
c3Qgc2xpY2UKKyAgICBnbFVuaWZvcm0xaShtVGV4dHVyZUFycmF5U2xpY2VVbmlmb3JtTG9jYXRp
b24sIDApOworICAgIGRyYXdRdWFkKG1BcnJheVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwor
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShweCwg
cHksIEdMQ29sb3I6OnJlZCk7CisKKyAgICAvLyBEcmF3IHRoZSBzZWNvbmQgc2xpY2UKKyAgICBn
bFVuaWZvcm0xaShtVGV4dHVyZUFycmF5U2xpY2VVbmlmb3JtTG9jYXRpb24sIDEpOworICAgIGRy
YXdRdWFkKG1BcnJheVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShweCwgcHksIEdMQ29sb3I6Omdy
ZWVuKTsKKworICAgIC8vIERyYXcgdGhlIHRoaXJkIHNsaWNlCisgICAgZ2xVbmlmb3JtMWkobVRl
eHR1cmVBcnJheVNsaWNlVW5pZm9ybUxvY2F0aW9uLCAyKTsKKyAgICBkcmF3UXVhZChtQXJyYXlQ
cm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAg
ICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEocHgsIHB5LCBHTENvbG9yOjpibHVlKTsKK30KKworLy8g
Q3JlYXRlIGEgbWlwbWFwcGVkIDJEIGFycmF5IHRleHR1cmUgd2l0aCBtb3JlIGxheWVycyB0aGFu
IHdpZHRoIC8gaGVpZ2h0LCBhbmQgY2FsbAorLy8gR2VuZXJhdGVNaXBtYXAuCitURVNUX1AoTWlw
bWFwVGVzdEVTMywgTWlwbWFwRm9yRGVlcFRleHR1cmVBcnJheSkKK3sKKyAgICBpbnQgcHggPSBn
ZXRXaW5kb3dXaWR0aCgpIC8gMjsKKyAgICBpbnQgcHkgPSBnZXRXaW5kb3dIZWlnaHQoKSAvIDI7
CisKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkRfQVJSQVksIG1UZXh0dXJlKTsKKwor
ICAgIC8vIEZpbGwgdGhlIHdob2xlIHRleHR1cmUgd2l0aCByZWQuCisgICAgc3RkOjp2ZWN0b3I8
R0xDb2xvcj4gcGl4ZWxzUmVkKDIgKiAyICogNCwgR0xDb2xvcjo6cmVkKTsKKyAgICBnbFRleElt
YWdlM0QoR0xfVEVYVFVSRV8yRF9BUlJBWSwgMCwgR0xfUkdCQTgsIDIsIDIsIDQsIDAsIEdMX1JH
QkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgIHBpeGVsc1JlZC5kYXRhKCkp
OworCisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkRfQVJSQVksIEdMX1RFWFRVUkVf
TUlOX0ZJTFRFUiwgR0xfTElORUFSX01JUE1BUF9ORUFSRVNUKTsKKyAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRF9BUlJBWSwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIp
OworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbEdlbmVyYXRlTWlwbWFwKEdM
X1RFWFRVUkVfMkRfQVJSQVkpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBn
bFVzZVByb2dyYW0obUFycmF5UHJvZ3JhbSk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
KworICAgIC8vIERyYXcgdGhlIGZpcnN0IHNsaWNlCisgICAgZ2xVbmlmb3JtMWkobVRleHR1cmVB
cnJheVNsaWNlVW5pZm9ybUxvY2F0aW9uLCAwKTsKKyAgICBkcmF3UXVhZChtQXJyYXlQcm9ncmFt
LCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBF
Q1RfUElYRUxfQ09MT1JfRVEocHgsIHB5LCBHTENvbG9yOjpyZWQpOworCisgICAgLy8gRHJhdyB0
aGUgZm91cnRoIHNsaWNlCisgICAgZ2xVbmlmb3JtMWkobVRleHR1cmVBcnJheVNsaWNlVW5pZm9y
bUxvY2F0aW9uLCAzKTsKKyAgICBkcmF3UXVhZChtQXJyYXlQcm9ncmFtLCAicG9zaXRpb24iLCAw
LjVmKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1Jf
RVEocHgsIHB5LCBHTENvbG9yOjpyZWQpOworfQorCisvLyBDcmVhdGVzIGEgbWlwbWFwcGVkIDNE
IHRleHR1cmUgd2l0aCB0d28gbGF5ZXJzLCBhbmQgY2FsbHMgQU5HTEUncyBHZW5lcmF0ZU1pcG1h
cC4KKy8vIFRoZW4gdGVzdHMgaWYgdGhlIG1pcG1hcHMgYXJlIHJlbmRlcmVkIGNvcnJlY3RseSBm
b3IgYWxsIHR3byBsYXllcnMuCitURVNUX1AoTWlwbWFwVGVzdEVTMywgTWlwbWFwc0ZvclRleHR1
cmUzRCkKK3sKKyAgICBpbnQgcHggPSBnZXRXaW5kb3dXaWR0aCgpIC8gMjsKKyAgICBpbnQgcHkg
PSBnZXRXaW5kb3dIZWlnaHQoKSAvIDI7CisKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVf
M0QsIG1UZXh0dXJlKTsKKworICAgIGdsVGV4U3RvcmFnZTNEKEdMX1RFWFRVUkVfM0QsIDUsIEdM
X1JHQkE4LCAxNiwgMTYsIDIpOworCisgICAgLy8gRmlsbCB0aGUgZmlyc3QgbGF5ZXIgd2l0aCBy
ZWQKKyAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBwaXhlbHNSZWQoMTYgKiAxNiwgR0xDb2xvcjo6
cmVkKTsKKyAgICBnbFRleFN1YkltYWdlM0QoR0xfVEVYVFVSRV8zRCwgMCwgMCwgMCwgMCwgMTYs
IDE2LCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICAgICBw
aXhlbHNSZWQuZGF0YSgpKTsKKworICAgIC8vIEZpbGwgdGhlIHNlY29uZCBsYXllciB3aXRoIGdy
ZWVuCisgICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gcGl4ZWxzR3JlZW4oMTYgKiAxNiwgR0xDb2xv
cjo6Z3JlZW4pOworICAgIGdsVGV4U3ViSW1hZ2UzRChHTF9URVhUVVJFXzNELCAwLCAwLCAwLCAx
LCAxNiwgMTYsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAg
ICAgIHBpeGVsc0dyZWVuLmRhdGEoKSk7CisKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8zRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUKTsK
KyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8zRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVS
LCBHTF9MSU5FQVIpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbEdlbmVy
YXRlTWlwbWFwKEdMX1RFWFRVUkVfM0QpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisK
KyAgICBnbFVzZVByb2dyYW0obTNEUHJvZ3JhbSk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1Io
KTsKKworICAgIC8vIE1pcG1hcCBsZXZlbCAwCisgICAgLy8gRHJhdyB0aGUgZmlyc3Qgc2xpY2UK
KyAgICBnbFVuaWZvcm0xZihtVGV4dHVyZTNETE9EVW5pZm9ybUxvY2F0aW9uLCAwLik7CisgICAg
Z2xVbmlmb3JtMWYobVRleHR1cmUzRFNsaWNlVW5pZm9ybUxvY2F0aW9uLCAwLjI1Zik7CisgICAg
ZHJhd1F1YWQobTNEUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKHB4LCBweSwgR0xDb2xvcjo6cmVk
KTsKKworICAgIC8vIERyYXcgdGhlIHNlY29uZCBzbGljZQorICAgIGdsVW5pZm9ybTFmKG1UZXh0
dXJlM0RTbGljZVVuaWZvcm1Mb2NhdGlvbiwgMC43NWYpOworICAgIGRyYXdRdWFkKG0zRFByb2dy
YW0sICJwb3NpdGlvbiIsIDAuNWYpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgIEVY
UEVDVF9QSVhFTF9DT0xPUl9FUShweCwgcHksIEdMQ29sb3I6OmdyZWVuKTsKKworICAgIC8vIE1p
cG1hcCBsZXZlbCAxCisgICAgLy8gVGhlIHNlY29uZCBtaXBtYXAgc2hvdWxkIG9ubHkgaGF2ZSBv
bmUgc2xpY2UuCisgICAgZ2xVbmlmb3JtMWYobVRleHR1cmUzRExPRFVuaWZvcm1Mb2NhdGlvbiwg
MS4pOworICAgIGRyYXdRdWFkKG0zRFByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9QSVhFTF9ORUFSKHB4LCBweSwgMTI3LCAx
MjcsIDAsIDI1NSwgMS4wKTsKKworICAgIGdsVW5pZm9ybTFmKG1UZXh0dXJlM0RTbGljZVVuaWZv
cm1Mb2NhdGlvbiwgMC43NWYpOworICAgIGRyYXdRdWFkKG0zRFByb2dyYW0sICJwb3NpdGlvbiIs
IDAuNWYpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9QSVhFTF9ORUFS
KHB4LCBweSwgMTI3LCAxMjcsIDAsIDI1NSwgMS4wKTsKK30KKworLy8gQ3JlYXRlIGEgMkQgdGV4
dHVyZSB3aXRoIGxldmVscyAwLTIsIGNhbGwgR2VuZXJhdGVNaXBtYXAgd2l0aCBiYXNlIGxldmVs
IDEgc28gdGhhdCBsZXZlbCAwIHN0YXlzCisvLyB0aGUgc2FtZSwgYW5kIHRoZW4gc2FtcGxlIGxl
dmVscyAwIGFuZCAyLgorLy8gR0xFUyAzLjAuNCBzZWN0aW9uIDMuOC4xMDoKKy8vICJNaXBtYXAg
Z2VuZXJhdGlvbiByZXBsYWNlcyB0ZXhlbCBhcnJheSBsZXZlbHMgbGV2ZWxiYXNlICsgMSB0aHJv
dWdoIHEgd2l0aCBhcnJheXMgZGVyaXZlZCBmcm9tCisvLyB0aGUgbGV2ZWxiYXNlIGFycmF5LCBy
ZWdhcmRsZXNzIG9mIHRoZWlyIHByZXZpb3VzIGNvbnRlbnRzLiBBbGwgb3RoZXIgbWlwbWFwIGFy
cmF5cywgaW5jbHVkaW5nCisvLyB0aGUgbGV2ZWxiYXNlIGFycmF5LCBhcmUgbGVmdCB1bmNoYW5n
ZWQgYnkgdGhpcyBjb21wdXRhdGlvbi4iCitURVNUX1AoTWlwbWFwVGVzdEVTMywgR2VuZXJhdGVN
aXBtYXBCYXNlTGV2ZWwpCit7CisgICAgaWYgKElzQU1EKCkgJiYgSXNEZXNrdG9wT3BlbkdMKCkp
CisgICAgeworICAgICAgICAvLyBPYnNlcnZlZCBpbmNvcnJlY3QgcmVuZGVyaW5nIG9uIEFNRCwg
c2FtcGxpbmcgbGV2ZWwgMiByZXR1cm5zIGJsYWNrLgorICAgICAgICBzdGQ6OmNvdXQgPDwgIlRl
c3Qgc2tpcHBlZCBvbiBBTUQgT3BlbkdMLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZSk7CisK
KyAgICAvLyBGaWxsIGxldmVsIDAgd2l0aCBibHVlCisgICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4g
cGl4ZWxzQmx1ZShnZXRXaW5kb3dXaWR0aCgpICogZ2V0V2luZG93SGVpZ2h0KCksIEdMQ29sb3I6
OmJsdWUpOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBOCwgZ2V0
V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIDAsIEdMX1JHQkEsCisgICAgICAgICAg
ICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVsc0JsdWUuZGF0YSgpKTsKKworICAgIC8vIEZp
bGwgbGV2ZWwgMSB3aXRoIHJlZAorICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHBpeGVsc1JlZChn
ZXRXaW5kb3dXaWR0aCgpICogZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCBHTENvbG9yOjpyZWQpOwor
ICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAxLCBHTF9SR0JBOCwgZ2V0V2luZG93V2lk
dGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgMCwKKyAgICAgICAgICAgICAgICAgR0xf
UkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzUmVkLmRhdGEoKSk7CisKKyAgICAvLyBGaWxs
IGxldmVsIDIgd2l0aCBncmVlbgorICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHBpeGVsc0dyZWVu
KGdldFdpbmRvd1dpZHRoKCkgKiBnZXRXaW5kb3dIZWlnaHQoKSAvIDE2LCBHTENvbG9yOjpncmVl
bik7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDIsIEdMX1JHQkE4LCBnZXRXaW5k
b3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAwLAorICAgICAgICAgICAgICAg
ICBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbHNHcmVlbi5kYXRhKCkpOworCisgICAg
Z2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xf
TkVBUkVTVF9NSVBNQVBfTkVBUkVTVCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
MkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAxKTsKKworICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOworCisgICAgLy8gVGhlIGJsdWUgbGV2ZWwgMCBzaG91bGQgYmUgdW50
b3VjaGVkIGJ5IHRoaXMgc2luY2UgYmFzZSBsZXZlbCBpcyAxLgorICAgIGdsR2VuZXJhdGVNaXBt
YXAoR0xfVEVYVFVSRV8yRCk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIC8v
IERyYXcgdXNpbmcgbGV2ZWwgMi4gSXQgc2hvdWxkIGJlIHNldCB0byByZWQgYnkgR2VuZXJhdGVN
aXBtYXAuCisgICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgp
IC8gNCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA0KTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEo
Z2V0V2luZG93V2lkdGgoKSAvIDgsIGdldFdpbmRvd0hlaWdodCgpIC8gOCwgR0xDb2xvcjo6cmVk
KTsKKworICAgIGlmIChJc05WSURJQSgpICYmIElzT3BlbkdMKCkpCisgICAgeworICAgICAgICAv
LyBPYnNlcnZlZCBpbmNvcnJlY3QgcmVuZGVyaW5nIG9uIE5WSURJQSwgbGV2ZWwgemVybyBzZWVt
cyB0byBiZSBpbmNvcnJlY3RseSBhZmZlY3RlZCBieQorICAgICAgICAvLyBHZW5lcmF0ZU1pcG1h
cC4KKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHBhcnRpYWxseSBza2lwcGVkIG9uIE5WSURJ
QSBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAv
LyBEcmF3IHVzaW5nIGxldmVsIDAuIEl0IHNob3VsZCBzdGlsbCBiZSBibHVlLgorICAgIGdsVGV4
UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX0JBU0VfTEVWRUwsIDApOworICAg
IGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93
SGVpZ2h0KCkpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8g
MiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCBHTENvbG9yOjpibHVlKTsKK30KKworLy8gQ3JlYXRl
IGEgY3ViZSBtYXAgd2l0aCBsZXZlbHMgMC0yLCBjYWxsIEdlbmVyYXRlTWlwbWFwIHdpdGggYmFz
ZSBsZXZlbCAxIHNvIHRoYXQgbGV2ZWwgMCBzdGF5cworLy8gdGhlIHNhbWUsIGFuZCB0aGVuIHNh
bXBsZSBsZXZlbHMgMCBhbmQgMi4KKy8vIEdMRVMgMy4wLjQgc2VjdGlvbiAzLjguMTA6CisvLyAi
TWlwbWFwIGdlbmVyYXRpb24gcmVwbGFjZXMgdGV4ZWwgYXJyYXkgbGV2ZWxzIGxldmVsYmFzZSAr
IDEgdGhyb3VnaCBxIHdpdGggYXJyYXlzIGRlcml2ZWQgZnJvbQorLy8gdGhlIGxldmVsYmFzZSBh
cnJheSwgcmVnYXJkbGVzcyBvZiB0aGVpciBwcmV2aW91cyBjb250ZW50cy4gQWxsIG90aGVyIG1p
cG1hcCBhcnJheXMsIGluY2x1ZGluZworLy8gdGhlIGxldmVsYmFzZSBhcnJheSwgYXJlIGxlZnQg
dW5jaGFuZ2VkIGJ5IHRoaXMgY29tcHV0YXRpb24uIgorVEVTVF9QKE1pcG1hcFRlc3RFUzMsIEdl
bmVyYXRlTWlwbWFwQ3ViZUJhc2VMZXZlbCkKK3sKKyAgICBpZiAoSXNBTUQoKSAmJiBJc0Rlc2t0
b3BPcGVuR0woKSkKKyAgICB7CisgICAgICAgIC8vIE9ic2VydmVkIGluY29ycmVjdCByZW5kZXJp
bmcgb24gQU1ELCBzYW1wbGluZyBsZXZlbCAyIHJldHVybnMgYmxhY2suCisgICAgICAgIHN0ZDo6
Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEFNRCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlRfRVEoZ2V0V2luZG93V2lkdGgoKSwgZ2V0
V2luZG93SGVpZ2h0KCkpOworCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFX0NVQkVfTUFQ
LCBtVGV4dHVyZSk7CisgICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gcGl4ZWxzQmx1ZShnZXRXaW5k
b3dXaWR0aCgpICogZ2V0V2luZG93V2lkdGgoKSwgR0xDb2xvcjo6Ymx1ZSk7CisgICAgVGV4SW1h
Z2VDdWJlTWFwRmFjZXMoMCwgR0xfUkdCQTgsIGdldFdpbmRvd1dpZHRoKCksIEdMX1JHQkEsIEdM
X1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxzQmx1ZS5kYXRh
KCkpOworCisgICAgLy8gRmlsbCBsZXZlbCAxIHdpdGggcmVkCisgICAgc3RkOjp2ZWN0b3I8R0xD
b2xvcj4gcGl4ZWxzUmVkKGdldFdpbmRvd1dpZHRoKCkgKiBnZXRXaW5kb3dXaWR0aCgpIC8gNCwg
R0xDb2xvcjo6cmVkKTsKKyAgICBUZXhJbWFnZUN1YmVNYXBGYWNlcygxLCBHTF9SR0JBOCwgZ2V0
V2luZG93V2lkdGgoKSAvIDIsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgcGl4ZWxzUmVkLmRhdGEoKSk7CisKKyAgICAvLyBGaWxsIGxldmVsIDIg
d2l0aCBncmVlbgorICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHBpeGVsc0dyZWVuKGdldFdpbmRv
d1dpZHRoKCkgKiBnZXRXaW5kb3dXaWR0aCgpIC8gMTYsIEdMQ29sb3I6OmdyZWVuKTsKKyAgICBU
ZXhJbWFnZUN1YmVNYXBGYWNlcygyLCBHTF9SR0JBOCwgZ2V0V2luZG93V2lkdGgoKSAvIDQsIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxz
R3JlZW4uZGF0YSgpKTsKKworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0NVQkVfTUFQ
LCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QpOworICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0NVQkVfTUFQLCBHTF9URVhUVVJFX01BR19GSUxU
RVIsIEdMX0xJTkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfQ1VCRV9NQVAs
IEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwgMSk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
KworICAgIC8vIFRoZSBibHVlIGxldmVsIDAgc2hvdWxkIGJlIHVudG91Y2hlZCBieSB0aGlzIHNp
bmNlIGJhc2UgbGV2ZWwgaXMgMS4KKyAgICBnbEdlbmVyYXRlTWlwbWFwKEdMX1RFWFRVUkVfQ1VC
RV9NQVApOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBEcmF3IHVzaW5n
IGxldmVsIDIuIEl0IHNob3VsZCBiZSBzZXQgdG8gcmVkIGJ5IEdlbmVyYXRlTWlwbWFwLgorICAg
IGNsZWFyQW5kRHJhd1F1YWQobUN1YmVQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgZ2V0
V2luZG93SGVpZ2h0KCkgLyA0KTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93
V2lkdGgoKSAvIDgsIGdldFdpbmRvd0hlaWdodCgpIC8gOCwgR0xDb2xvcjo6cmVkKTsKKworICAg
IGlmIChJc05WSURJQSgpICYmIElzT3BlbkdMKCkpCisgICAgeworICAgICAgICAvLyBPYnNlcnZl
ZCBpbmNvcnJlY3QgcmVuZGVyaW5nIG9uIE5WSURJQSwgbGV2ZWwgemVybyBzZWVtcyB0byBiZSBp
bmNvcnJlY3RseSBhZmZlY3RlZCBieQorICAgICAgICAvLyBHZW5lcmF0ZU1pcG1hcC4KKyAgICAg
ICAgc3RkOjpjb3V0IDw8ICJUZXN0IHBhcnRpYWxseSBza2lwcGVkIG9uIE5WSURJQSBPcGVuR0wu
IiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBEcmF3IHVz
aW5nIGxldmVsIDAuIEl0IHNob3VsZCBzdGlsbCBiZSBibHVlLgorICAgIGdsVGV4UGFyYW1ldGVy
aShHTF9URVhUVVJFX0NVQkVfTUFQLCBHTF9URVhUVVJFX0JBU0VfTEVWRUwsIDApOworICAgIGNs
ZWFyQW5kRHJhd1F1YWQobUN1YmVQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dI
ZWlnaHQoKSk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyAy
LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIEdMQ29sb3I6OmJsdWUpOworfQorCisvLyBDcmVhdGUg
YSB0ZXh0dXJlIHdpdGggbGV2ZWxzIDAtMiwgY2FsbCBHZW5lcmF0ZU1pcG1hcCB3aXRoIG1heCBs
ZXZlbCAxIHNvIHRoYXQgbGV2ZWwgMiBzdGF5cyB0aGUKKy8vIHNhbWUsIGFuZCB0aGVuIHNhbXBs
ZSBsZXZlbHMgMSBhbmQgMi4KKy8vIEdMRVMgMy4wLjQgc2VjdGlvbiAzLjguMTA6CisvLyAiTWlw
bWFwIGdlbmVyYXRpb24gcmVwbGFjZXMgdGV4ZWwgYXJyYXkgbGV2ZWxzIGxldmVsYmFzZSArIDEg
dGhyb3VnaCBxIHdpdGggYXJyYXlzIGRlcml2ZWQgZnJvbQorLy8gdGhlIGxldmVsYmFzZSBhcnJh
eSwgcmVnYXJkbGVzcyBvZiB0aGVpciBwcmV2aW91cyBjb250ZW50cy4gQWxsIG90aGVyIG1pcG1h
cCBhcnJheXMsIGluY2x1ZGluZworLy8gdGhlIGxldmVsYmFzZSBhcnJheSwgYXJlIGxlZnQgdW5j
aGFuZ2VkIGJ5IHRoaXMgY29tcHV0YXRpb24uIgorVEVTVF9QKE1pcG1hcFRlc3RFUzMsIEdlbmVy
YXRlTWlwbWFwTWF4TGV2ZWwpCit7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBt
VGV4dHVyZSk7CisKKyAgICAvLyBGaWxsIGxldmVsIDAgd2l0aCBibHVlCisgICAgc3RkOjp2ZWN0
b3I8R0xDb2xvcj4gcGl4ZWxzQmx1ZShnZXRXaW5kb3dXaWR0aCgpICogZ2V0V2luZG93SGVpZ2h0
KCksIEdMQ29sb3I6OmJsdWUpOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBH
TF9SR0JBOCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIDAsIEdMX1JHQkEs
CisgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVsc0JsdWUuZGF0YSgpKTsK
KworICAgIC8vIEZpbGwgbGV2ZWwgMSB3aXRoIHJlZAorICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+
IHBpeGVsc1JlZChnZXRXaW5kb3dXaWR0aCgpICogZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCBHTENv
bG9yOjpyZWQpOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAxLCBHTF9SR0JBOCwg
Z2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgMCwKKyAgICAgICAg
ICAgICAgICAgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzUmVkLmRhdGEoKSk7CisK
KyAgICAvLyBGaWxsIGxldmVsIDIgd2l0aCBncmVlbgorICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+
IHBpeGVsc0dyZWVuKGdldFdpbmRvd1dpZHRoKCkgKiBnZXRXaW5kb3dIZWlnaHQoKSAvIDE2LCBH
TENvbG9yOjpncmVlbik7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDIsIEdMX1JH
QkE4LCBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAwLAorICAg
ICAgICAgICAgICAgICBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbHNHcmVlbi5kYXRh
KCkpOworCisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlO
X0ZJTFRFUiwgR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQVhfTEVWRUwsIDEpOwor
CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBUaGUgZ3JlZW4gbGV2ZWwgMiBz
aG91bGQgYmUgdW50b3VjaGVkIGJ5IHRoaXMgc2luY2UgbWF4IGxldmVsIGlzIDEuCisgICAgZ2xH
ZW5lcmF0ZU1pcG1hcChHTF9URVhUVVJFXzJEKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OworCisgICAgLy8gRHJhdyB1c2luZyBsZXZlbCAxLiBJdCBzaG91bGQgYmUgc2V0IHRvIGJsdWUg
YnkgR2VuZXJhdGVNaXBtYXAuCisgICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRX
aW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyKTsKKyAgICBFWFBFQ1RfUElY
RUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDQsIGdldFdpbmRvd0hlaWdodCgpIC8gNCwg
R0xDb2xvcjo6Ymx1ZSk7CisKKyAgICAvLyBEcmF3IHVzaW5nIGxldmVsIDIuIEl0IHNob3VsZCBz
dGlsbCBiZSBncmVlbi4KKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVY
VFVSRV9NQVhfTEVWRUwsIDIpOworICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0
V2luZG93V2lkdGgoKSAvIDQsIGdldFdpbmRvd0hlaWdodCgpIC8gNCk7CisgICAgRVhQRUNUX1BJ
WEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyA4LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDgs
IEdMQ29sb3I6OmdyZWVuKTsKK30KKworLy8gQ2FsbCBHZW5lcmF0ZU1pcG1hcCB3aXRoIG91dC1v
Zi1yYW5nZSBiYXNlIGxldmVsLiBUaGUgc3BlYyBpcyBpbnRlcnByZXRlZCBzbyB0aGF0IGFuIG91
dC1vZi1yYW5nZQorLy8gYmFzZSBsZXZlbCBkb2VzIG5vdCBoYXZlIGEgY29sb3ItcmVuZGVyYWJs
ZS90ZXh0dXJlLWZpbHRlcmFibGUgaW50ZXJuYWwgZm9ybWF0LCBzbyB0aGUKKy8vIEdlbmVyYXRl
TWlwbWFwIGNhbGwgZ2VuZXJhdGVzIElOVkFMSURfT1BFUkFUSU9OLiBHTEVTIDMuMC40IHNlY3Rp
b24gMy44LjEwOgorLy8gIklmIHRoZSBsZXZlbGJhc2UgYXJyYXkgd2FzIG5vdCBzcGVjaWZpZWQg
d2l0aCBhbiB1bnNpemVkIGludGVybmFsIGZvcm1hdCBmcm9tIHRhYmxlIDMuMyBvciBhCisvLyBz
aXplZCBpbnRlcm5hbCBmb3JtYXQgdGhhdCBpcyBib3RoIGNvbG9yLXJlbmRlcmFibGUgYW5kIHRl
eHR1cmUtZmlsdGVyYWJsZSBhY2NvcmRpbmcgdG8gdGFibGUKKy8vIDMuMTMsIGFuIElOVkFMSURf
T1BFUkFUSU9OIGVycm9yIGlzIGdlbmVyYXRlZC4iCitURVNUX1AoTWlwbWFwVGVzdEVTMywgR2Vu
ZXJhdGVNaXBtYXBCYXNlTGV2ZWxPdXRPZlJhbmdlKQoreworICAgIGdsQmluZFRleHR1cmUoR0xf
VEVYVFVSRV8yRCwgbVRleHR1cmUpOworCisgICAgLy8gRmlsbCBsZXZlbCAwIHdpdGggYmx1ZQor
ICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHBpeGVsc0JsdWUoZ2V0V2luZG93V2lkdGgoKSAqIGdl
dFdpbmRvd0hlaWdodCgpLCBHTENvbG9yOjpibHVlKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVY
VFVSRV8yRCwgMCwgR0xfUkdCQTgsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgp
LCAwLCBHTF9SR0JBLAorICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbHNC
bHVlLmRhdGEoKSk7CisKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVY
VFVSRV9CQVNFX0xFVkVMLCAxMDAwKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisg
ICAgLy8gRXhwZWN0aW5nIHRoZSBvdXQtb2YtcmFuZ2UgYmFzZSBsZXZlbCB0byBiZSB0cmVhdGVk
IGFzIG5vdCBjb2xvci1yZW5kZXJhYmxlIGFuZAorICAgIC8vIHRleHR1cmUtZmlsdGVyYWJsZS4K
KyAgICBnbEdlbmVyYXRlTWlwbWFwKEdMX1RFWFRVUkVfMkQpOworICAgIEVYUEVDVF9HTF9FUlJP
UihHTF9JTlZBTElEX09QRVJBVElPTik7CisKKyAgICAvLyBEcmF3IHVzaW5nIGxldmVsIDAuIEl0
IHNob3VsZCBzdGlsbCBiZSBibHVlLgorICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX0JBU0VfTEVWRUwsIDApOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgIGdsVGV4UGFy
YW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1Qp
OworICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0
V2luZG93SGVpZ2h0KCkpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0
aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCBHTENvbG9yOjpibHVlKTsKK30KKworLy8g
Q2FsbCBHZW5lcmF0ZU1pcG1hcCB3aXRoIG91dC1vZi1yYW5nZSBiYXNlIGxldmVsIG9uIGFuIGlt
bXV0YWJsZSB0ZXh0dXJlLiBUaGUgYmFzZSBsZXZlbCBzaG91bGQKKy8vIGJlIGNsYW1wZWQsIHNv
IHRoZSBjYWxsIGRvZXNuJ3QgZ2VuZXJhdGUgYW4gZXJyb3IuCitURVNUX1AoTWlwbWFwVGVzdEVT
MywgR2VuZXJhdGVNaXBtYXBCYXNlTGV2ZWxPdXRPZlJhbmdlSW1tdXRhYmxlVGV4dHVyZSkKK3sK
KyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlKTsKKworICAgIGdsVGV4
U3RvcmFnZTJEKEdMX1RFWFRVUkVfMkQsIDEsIEdMX1JHQkE4LCAxLCAxKTsKKyAgICBnbFRleFN1
YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdO
RURfQllURSwgJkdMQ29sb3I6OmdyZWVuKTsKKworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFXzJELCBHTF9URVhUVVJFX0JBU0VfTEVWRUwsIDEwMDApOworCisgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7CisKKyAgICAvLyBUaGlzIGlzIGVzc2VudGlhbGx5IGEgbm8tb3AsIHNpbmNlIHRo
ZSB0ZXh0dXJlIG9ubHkgaGFzIG9uZSBsZXZlbC4KKyAgICBnbEdlbmVyYXRlTWlwbWFwKEdMX1RF
WFRVUkVfMkQpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBUaGUgb25s
eSBsZXZlbCBvZiB0aGUgdGV4dHVyZSBzaG91bGQgc3RpbGwgYmUgZ3JlZW4uCisgICAgZ2xUZXhQ
YXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVT
VCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJ
TFRFUiwgR0xfTkVBUkVTVCk7CisgICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRX
aW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9S
X0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIEdMQ29sb3I6
OmdyZWVuKTsKK30KKworLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25z
IChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlIHRl
c3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KKy8vIE5vdGU6IHdlIHJ1biB0aGVzZSB0ZXN0cyBh
Z2FpbnN0IDlfMyBvbiBXQVJQIGR1ZSB0byBoYXJkd2FyZSBkcml2ZXIgaXNzdWVzIG9uIFdpbjcK
K0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoTWlwbWFwVGVzdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgRVMyX0QzRDkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKEVHTF9FWFBF
UklNRU5UQUxfUFJFU0VOVF9QQVRIX0NPUFlfQU5HTEUpLAorICAgICAgICAgICAgICAgICAgICAg
ICBFUzJfRDNEMTEoRUdMX0VYUEVSSU1FTlRBTF9QUkVTRU5UX1BBVEhfRkFTVF9BTkdMRSksCisg
ICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDlfM19XQVJQKCksCisgICAgICAgICAg
ICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09Q
RU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChN
aXBtYXBUZXN0RVMzLCBFUzNfRDNEMTEoKSwgRVMzX09QRU5HTCgpLCBFUzNfT1BFTkdMRVMoKSk7
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvTXVsdGlz
YW1wbGVDb21wYXRpYmlsaXR5VGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL011bHRpc2FtcGxlQ29tcGF0aWJpbGl0eVRlc3Qu
Y3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9n
bF90ZXN0cy9NdWx0aXNhbXBsZUNvbXBhdGliaWxpdHlUZXN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDMwMCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFN0YXRlQ2hhbmdlVGVzdDoKKy8vICAgU3Bl
Y2lmaWNhbGx5IGRlc2lnbmVkIGZvciBhbiBBTkdMRSBpbXBsZW1lbnRhdGlvbiBvZiBHTCwgdGhl
c2UgdGVzdHMgdmFsaWRhdGUgdGhhdAorLy8gICBBTkdMRSdzIGRpcnR5IGJpdHMgc3lzdGVtcyBk
b24ndCBnZXQgY29uZnVzZWQgYnkgY2VydGFpbiBzZXF1ZW5jZXMgb2Ygc3RhdGUgY2hhbmdlcy4K
Ky8vCisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorI2luY2x1ZGUgInNoYWRl
cl91dGlscy5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKK25hbWVzcGFjZQoreworCitj
b25zdCBHTGludCBrV2lkdGggPSA2NDsKK2NvbnN0IEdMaW50IGtIZWlnaHQgPSA2NDsKKworLy8g
dGVzdCBkcmF3aW5nIHdpdGggR0xfTVVMVElTQU1QTEVfRVhUIGVuYWJsZWQvZGlzYWJsZWQuCitj
bGFzcyBFWFRNdWx0aXNhbXBsZUNvbXBhdGliaWxpdHlUZXN0IDogcHVibGljIEFOR0xFVGVzdAor
eworCitwcm90ZWN0ZWQ6CisgICAgRVhUTXVsdGlzYW1wbGVDb21wYXRpYmlsaXR5VGVzdCgpCisg
ICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0aCg2NCk7CisgICAgICAgIHNldFdpbmRvd0hlaWdo
dCg2NCk7CisgICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0Js
dWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgfQorCisgICAg
dm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7
CisKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHZfc2hhZGVyX3N0ciA9CisgICAgICAgICAg
ICAiYXR0cmlidXRlIHZlYzQgYV9Qb3NpdGlvbjtcbiIKKyAgICAgICAgICAgICJ2b2lkIG1haW4o
KVxuIgorICAgICAgICAgICAgInsgZ2xfUG9zaXRpb24gPSBhX1Bvc2l0aW9uOyB9IjsKKworICAg
ICAgICBzdGF0aWMgY29uc3QgY2hhciogZl9zaGFkZXJfc3RyID0KKyAgICAgICAgICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgICAgICJ1bmlmb3JtIHZlYzQgY29sb3I7
IgorICAgICAgICAgICAgInZvaWQgbWFpbigpIHsgZ2xfRnJhZ0NvbG9yID0gY29sb3I7IH0iOwor
CisgICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odl9zaGFkZXJfc3RyLCBmX3NoYWRl
cl9zdHIpOworCisgICAgICAgIEdMdWludCBwb3NpdGlvbl9sb2MgPSBnbEdldEF0dHJpYkxvY2F0
aW9uKG1Qcm9ncmFtLCAiYV9Qb3NpdGlvbiIpOworICAgICAgICBtQ29sb3JMb2MgPSBnbEdldFVu
aWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgImNvbG9yIik7CisKKyAgICAgICAgZ2xHZW5CdWZmZXJz
KDEsICZtVkJPKTsKKyAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbVZCTyk7
CisgICAgICAgIHN0YXRpYyBmbG9hdCB2ZXJ0aWNlc1tdID0geworICAgICAgICAgICAgMS4wZiwg
IDEuMGYsIC0xLjBmLCAxLjBmLCAgLTEuMGYsIC0xLjBmLCAtMS4wZiwgMS4wZiwgLTEuMGYsCisg
ICAgICAgICAgICAtMS4wZiwgMS4wZiwgLTEuMGYsIC0xLjBmLCAtMS4wZiwgMS4wZiwgIC0xLjBm
LCAxLjBmLCAxLjBmLAorICAgICAgICB9OworICAgICAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlf
QlVGRkVSLCBzaXplb2YodmVydGljZXMpLCB2ZXJ0aWNlcywgR0xfU1RBVElDX0RSQVcpOworICAg
ICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHBvc2l0aW9uX2xvYyk7CisgICAgICAgIGds
VmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbl9sb2MsIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwg
MCwgMCk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAgeworICAg
ICAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1WQk8pOworICAgICAgICBnbERlbGV0ZVByb2dyYW0o
bVByb2dyYW0pOworCisgICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKKyAgICB9CisKKyAg
ICB2b2lkIHByZXBhcmVGb3JEcmF3KCkKKyAgICB7CisgICAgICAgIC8vIENyZWF0ZSBhIHNhbXBs
ZSBidWZmZXIuCisgICAgICAgIEdMc2l6ZWkgbnVtX3NhbXBsZXMgPSA0LCBtYXhfc2FtcGxlcyA9
IDA7CisgICAgICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1NBTVBMRVMsICZtYXhfc2FtcGxlcyk7
CisgICAgICAgIG51bV9zYW1wbGVzID0gc3RkOjptaW4obnVtX3NhbXBsZXMsIG1heF9zYW1wbGVz
KTsKKworICAgICAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1TYW1wbGVSQik7CisgICAgICAg
IGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1TYW1wbGVSQik7CisgICAgICAg
IGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0xfUkVOREVSQlVGRkVSLCBu
dW1fc2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1JHQkE4X09FUywga1dpZHRoLCBrSGVpZ2h0KTsKKyAgICAgICAgR0xpbnQgcGFyYW0gPSAw
OworICAgICAgICBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdMX1JFTkRFUkJVRkZFUiwg
R0xfUkVOREVSQlVGRkVSX1NBTVBMRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmcGFyYW0pOworICAgICAgICBFWFBFQ1RfR0UocGFyYW0sIG51bV9zYW1wbGVzKTsKKworICAg
ICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbVNhbXBsZUZCTyk7CisgICAgICAgIGdsQmluZEZy
YW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtU2FtcGxlRkJPKTsKKyAgICAgICAgZ2xGcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRU5ERVJCVUZGRVIsIG1TYW1wbGVSQik7
CisgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxHTGVudW0+KEdMX0ZSQU1FQlVGRkVSX0NP
TVBMRVRFKSwKKyAgICAgICAgICBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZG
RVIpKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApOworCisg
ICAgICAgIC8vIENyZWF0ZSBhbm90aGVyIEZCTyB0byByZXNvbHZlIHRoZSBtdWx0aXNhbXBsZSBi
dWZmZXIgaW50by4KKyAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbVJlc29sdmVUZXgpOworICAg
ICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1SZXNvbHZlVGV4KTsKKyAgICAgICAg
Z2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIGtXaWR0aCwga0hlaWdodCwg
MCwgR0xfUkdCQSwKKyAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgTlVMTCk7CisgICAgICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdM
X0xJTkVBUik7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhU
VVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xB
TVBfVE9fRURHRSk7CisgICAgICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZtUmVzb2x2ZUZCTyk7
CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtUmVzb2x2ZUZCTyk7
CisgICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9S
X0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
bVJlc29sdmVUZXgsIDApOworICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8R0xlbnVtPihH
TF9GUkFNRUJVRkZFUl9DT01QTEVURSksCisgICAgICAgICAgZ2xDaGVja0ZyYW1lYnVmZmVyU3Rh
dHVzKEdMX0ZSQU1FQlVGRkVSKSk7CisKKyAgICAgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsK
KyAgICAgICAgZ2xWaWV3cG9ydCgwLCAwLCBrV2lkdGgsIGtIZWlnaHQpOworICAgICAgICBnbEJs
ZW5kRnVuYyhHTF9TUkNfQUxQSEEsIEdMX09ORV9NSU5VU19TUkNfQUxQSEEpOworICAgICAgICBn
bEVuYWJsZShHTF9CTEVORCk7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVG
RkVSLCBtU2FtcGxlRkJPKTsKKyAgICAgICAgZ2xDbGVhckNvbG9yKDAuMGYsIDAuMGYsIDAuMGYs
IDAuMGYpOworICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAgIH0KKwor
ICAgIHZvaWQgcHJlcGFyZUZvclZlcmlmeSgpCisgICAgeworICAgICAgICAvLyBSZXNvbHZlLgor
ICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVSLCBtU2FtcGxlRkJP
KTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUiwgbVJlc29s
dmVGQk8pOworICAgICAgICBnbENsZWFyQ29sb3IoMS4wZiwgMC4wZiwgMC4wZiwgMC4wZik7Cisg
ICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgICAgIGdsQmxpdEZyYW1l
YnVmZmVyQU5HTEUoMCwgMCwga1dpZHRoLCBrSGVpZ2h0LCAwLCAwLCBrV2lkdGgsIGtIZWlnaHQs
CisgICAgICAgICAgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTkVBUkVTVCk7CisgICAgICAgIGds
QmluZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJBTUVCVUZGRVIsIG1SZXNvbHZlRkJPKTsKKworICAg
ICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFudXAoKQor
ICAgIHsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApOworICAg
ICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbVJlc29sdmVGQk8pOworICAgICAgICBnbERl
bGV0ZUZyYW1lYnVmZmVycygxLCAmbVNhbXBsZUZCTyk7CisgICAgICAgIGdsRGVsZXRlVGV4dHVy
ZXMoMSwgJm1SZXNvbHZlVGV4KTsKKyAgICAgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZt
U2FtcGxlUkIpOworCisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgfQorCisg
ICAgYm9vbCBpc0FwcGxpY2FibGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGV4dGVu
c2lvbkVuYWJsZWQoIkdMX0VYVF9tdWx0aXNhbXBsZV9jb21wYXRpYmlsaXR5IikgJiYKKyAgICAg
ICAgICAgICBleHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBs
ZSIpICYmCisgICAgICAgICAgICAgZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3JnYjhfcmdiYTgi
KSAmJgorICAgICAgICAgICAgICFJc0FNRCgpOworICAgIH0KKyAgICBHTHVpbnQgbVNhbXBsZUZC
TzsKKyAgICBHTHVpbnQgbVJlc29sdmVGQk87CisgICAgR0x1aW50IG1TYW1wbGVSQjsKKyAgICBH
THVpbnQgbVJlc29sdmVUZXg7CisKKyAgICBHTHVpbnQgbUNvbG9yTG9jOworICAgIEdMdWludCBt
UHJvZ3JhbTsKKyAgICBHTHVpbnQgbVZCTzsKK307CisKK30gLy8KKworLy8gVGVzdCBzaW1wbGUg
c3RhdGUgdHJhY2tpbmcKK1RFU1RfUChFWFRNdWx0aXNhbXBsZUNvbXBhdGliaWxpdHlUZXN0LCBU
ZXN0U3RhdGVUcmFja2luZykKK3sKKyAgICBpZiAoIWlzQXBwbGljYWJsZSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBFWFBFQ1RfVFJVRShnbElzRW5hYmxlZChHTF9NVUxUSVNBTVBMRV9FWFQp
KTsKKyAgICBnbERpc2FibGUoR0xfTVVMVElTQU1QTEVfRVhUKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
Z2xJc0VuYWJsZWQoR0xfTVVMVElTQU1QTEVfRVhUKSk7CisgICAgZ2xFbmFibGUoR0xfTVVMVElT
QU1QTEVfRVhUKTsKKyAgICBFWFBFQ1RfVFJVRShnbElzRW5hYmxlZChHTF9NVUxUSVNBTVBMRV9F
WFQpKTsKKworICAgIEVYUEVDVF9GQUxTRShnbElzRW5hYmxlZChHTF9TQU1QTEVfQUxQSEFfVE9f
T05FX0VYVCkpOworICAgIGdsRW5hYmxlKEdMX1NBTVBMRV9BTFBIQV9UT19PTkVfRVhUKTsKKyAg
ICBFWFBFQ1RfVFJVRShnbElzRW5hYmxlZChHTF9TQU1QTEVfQUxQSEFfVE9fT05FX0VYVCkpOwor
ICAgIGdsRGlzYWJsZShHTF9TQU1QTEVfQUxQSEFfVE9fT05FX0VYVCk7CisgICAgRVhQRUNUX0ZB
TFNFKGdsSXNFbmFibGVkKEdMX1NBTVBMRV9BTFBIQV9UT19PTkVfRVhUKSk7CisKKyAgICBFWFBF
Q1RfRVEoc3RhdGljX2Nhc3Q8R0xlbnVtPihHTF9OT19FUlJPUiksIGdsR2V0RXJyb3IoKSk7Cit9
CisKKy8vIFRlc3QgdGhhdCBkaXNhYmxpbmcgR0xfTVVMVElTQU1QTEVfRVhUIGlzIGhhbmRsZWQg
Y29ycmVjdGx5LgorVEVTVF9QKEVYVE11bHRpc2FtcGxlQ29tcGF0aWJpbGl0eVRlc3QsIERyYXdB
bmRSZXNvbHZlKQoreworICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIHN0YXRpYyBjb25zdCBmbG9hdCBrQmx1ZVtdID0gezAuMGYsIDAuMGYsIDEuMGYsIDEu
MGZ9OworICAgIHN0YXRpYyBjb25zdCBmbG9hdCBrR3JlZW5bXSA9IHswLjBmLCAxLjBmLCAwLjBm
LCAxLjBmfTsKKyAgICBzdGF0aWMgY29uc3QgZmxvYXQga1JlZFtdID0gezEuMGYsIDAuMGYsIDAu
MGYsIDEuMGZ9OworCisgICAgLy8gRGlmZmVyZW50IGRyaXZlcnMgc2VlbSB0byBiZWhhdmUgZGlm
ZmVyZW50bHkgd2l0aCByZXNwZWN0IHRvIHJlc3VsdGluZworICAgIC8vIHZhbHVlcy4gVGhlc2Ug
bWlnaHQgYmUgZHVlIHRvIGRpZmZlcmVudCBNU0FBIHNhbXBsZSBjb3VudHMgY2F1c2luZworICAg
IC8vIGRpZmZlcmVudCBzYW1wbGVzIHRvIGhpdC4gIE90aGVyIG9wdGlvbiBpcyBkcml2ZXIgYnVn
cy4gSnVzdCB0ZXN0IHRoYXQKKyAgICAvLyBkaXNhYmxpbmcgbXVsdGlzYW1wbGUgY2F1c2VzIGEg
ZGlmZmVyZW5jZS4KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8dWludDhfdFtdPiByZXN1bHRzWzNdOwor
ICAgIGNvbnN0IEdMaW50IGtSZXN1bHRTaXplID0ga1dpZHRoICoga0hlaWdodCAqIDQ7CisgICAg
Zm9yIChpbnQgcGFzcyA9IDA7IHBhc3MgPCAzOyBwYXNzKyspCisgICAgeworICAgICAgICBwcmVw
YXJlRm9yRHJhdygpOworICAgICAgICAvLyBHcmVlbjogZnJvbSB0b3AgcmlnaHQgdG8gYm90dG9t
IGxlZnQuCisgICAgICAgIGdsVW5pZm9ybTRmdihtQ29sb3JMb2MsIDEsIGtHcmVlbik7CisgICAg
ICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDMpOworCisgICAgICAgIC8vIEJsdWU6
IGZyb20gdG9wIGxlZnQgdG8gYm90dG9tIHJpZ2h0LgorICAgICAgICBnbFVuaWZvcm00ZnYobUNv
bG9yTG9jLCAxLCBrQmx1ZSk7CisgICAgICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDMs
IDMpOworCisgICAgICAgIC8vIFJlZCwgd2l0aCBhbmQgd2l0aG91dCBNU0FBOiBmcm9tIGJvdHRv
bSBsZWZ0IHRvIHRvcCByaWdodC4KKyAgICAgICAgaWYgKHBhc3MgPT0gMSkKKyAgICAgICAgewor
ICAgICAgICAgICAgZ2xEaXNhYmxlKEdMX01VTFRJU0FNUExFX0VYVCk7CisgICAgICAgIH0KKyAg
ICAgICAgZ2xVbmlmb3JtNGZ2KG1Db2xvckxvYywgMSwga1JlZCk7CisgICAgICAgIGdsRHJhd0Fy
cmF5cyhHTF9UUklBTkdMRVMsIDYsIDMpOworICAgICAgICBpZiAocGFzcyA9PSAxKQorICAgICAg
ICB7CisgICAgICAgICAgICBnbEVuYWJsZShHTF9NVUxUSVNBTVBMRV9FWFQpOworICAgICAgICB9
CisgICAgICAgIHByZXBhcmVGb3JWZXJpZnkoKTsKKyAgICAgICAgcmVzdWx0c1twYXNzXS5yZXNl
dChuZXcgdWludDhfdFtrUmVzdWx0U2l6ZV0pOworICAgICAgICBtZW1zZXQocmVzdWx0c1twYXNz
XS5nZXQoKSwgMTIzdSwga1Jlc3VsdFNpemUpOworICAgICAgICBnbFJlYWRQaXhlbHMoMCwgMCwg
a1dpZHRoLCBrSGVpZ2h0LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAg
ICAgICAgIHJlc3VsdHNbcGFzc10uZ2V0KCkpOworCisgICAgICAgIGNsZWFudXAoKTsKKyAgICB9
CisgICAgRVhQRUNUX05FKDAsIG1lbWNtcChyZXN1bHRzWzBdLmdldCgpLCByZXN1bHRzWzFdLmdl
dCgpLCBrUmVzdWx0U2l6ZSkpOworICAgIC8vIFZlcmlmeSB0aGF0IHJlbmRlcmluZyBpcyBkZXRl
cm1pbmlzdGljLCBzbyB0aGF0IHRoZSBwYXNzIGFib3ZlIGRvZXMgbm90CisgICAgLy8gY29tZSBm
cm9tIG5vbi1kZXRlcm1pbmlzdGljIHJlbmRlcmluZy4KKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21w
KHJlc3VsdHNbMF0uZ2V0KCksIHJlc3VsdHNbMl0uZ2V0KCksIGtSZXN1bHRTaXplKSk7Cit9CisK
Ky8vIFRlc3QgdGhhdCBlbmFibGluZyBHTF9TQU1QTEVfQUxQSEFfVE9fT05FX0VYVCBhZmZlY3Rz
IHJlbmRlcmluZy4KK1RFU1RfUChFWFRNdWx0aXNhbXBsZUNvbXBhdGliaWxpdHlUZXN0LCBEcmF3
QWxwaGFPbmVBbmRSZXNvbHZlKQoreworICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIC8vIFNBTVBMRV9BTFBIQV9UT19PTkUgaXMgc3BlY2lmaWVkIHRvIHRy
YW5zZm9ybSBhbHBoYSB2YWx1ZXMgb2YKKyAgICAvLyBjb3ZlcmVkIHNhbXBsZXMgdG8gMS4wLiBJ
biBvcmRlciB0byBkZXRlY3QgaXQsIHdlIHVzZSBub24tMS4wCisgICAgLy8gYWxwaGEuCisgICAg
c3RhdGljIGNvbnN0IGZsb2F0IGtCbHVlW10gPSB7MC4wZiwgMC4wZiwgMS4wZiwgMC41Zn07Cisg
ICAgc3RhdGljIGNvbnN0IGZsb2F0IGtHcmVlbltdID0gezAuMGYsIDEuMGYsIDAuMGYsIDAuNWZ9
OworICAgIHN0YXRpYyBjb25zdCBmbG9hdCBrUmVkW10gPSB7MS4wZiwgMC4wZiwgMC4wZiwgMC41
Zn07CisKKyAgICAvLyBEaWZmZXJlbnQgZHJpdmVycyBzZWVtIHRvIGJlaGF2ZSBkaWZmZXJlbnRs
eSB3aXRoIHJlc3BlY3QgdG8gcmVzdWx0aW5nCisgICAgLy8gYWxwaGEgdmFsdWUuIFRoZXNlIG1p
Z2h0IGJlIGR1ZSB0byBkaWZmZXJlbnQgTVNBQSBzYW1wbGUgY291bnRzIGNhdXNpbmcKKyAgICAv
LyBkaWZmZXJlbnQgc2FtcGxlcyB0byBoaXQuICBPdGhlciBvcHRpb24gaXMgZHJpdmVyIGJ1Z3Mu
IFRlc3RpbmcgZXhhY3Qgb3IKKyAgICAvLyBldmVuIGFwcHJveGltYXRlIHNhbXBsZSB2YWx1ZXMg
aXMgbm90IHRoYXQgZWFzeS4gIFRodXMsIGp1c3QgdGVzdAorICAgIC8vIHJlcHJlc2VudGF0aXZl
IHBvc2l0aW9ucyB3aGljaCBoYXZlIGZyYWN0aW9uYWwgcGl4ZWxzLCBpbnNwZWN0aW5nIHRoYXQK
KyAgICAvLyBub3JtYWwgcmVuZGVyaW5nIGlzIGRpZmZlcmVudCB0byBTQU1QTEVfQUxQSEFfVE9f
T05FIHJlbmRlcmluZy4KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8dWludDhfdFtdPiByZXN1bHRzWzNd
OworICAgIGNvbnN0IEdMaW50IGtSZXN1bHRTaXplID0ga1dpZHRoICoga0hlaWdodCAqIDQ7CisK
KyAgICBmb3IgKGludCBwYXNzID0gMDsgcGFzcyA8IDM7ICsrcGFzcykKKyAgICB7CisgICAgICAg
IHByZXBhcmVGb3JEcmF3KCk7CisgICAgICAgIGlmIChwYXNzID09IDEpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGdsRW5hYmxlKEdMX1NBTVBMRV9BTFBIQV9UT19PTkVfRVhUKTsKKyAgICAgICAg
fQorICAgICAgICBnbEVuYWJsZShHTF9NVUxUSVNBTVBMRV9FWFQpOworICAgICAgICBnbFVuaWZv
cm00ZnYobUNvbG9yTG9jLCAxLCBrR3JlZW4pOworICAgICAgICBnbERyYXdBcnJheXMoR0xfVFJJ
QU5HTEVTLCAwLCAzKTsKKworICAgICAgICBnbFVuaWZvcm00ZnYobUNvbG9yTG9jLCAxLCBrQmx1
ZSk7CisgICAgICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDMsIDMpOworCisgICAgICAg
IGdsRGlzYWJsZShHTF9NVUxUSVNBTVBMRV9FWFQpOworICAgICAgICBnbFVuaWZvcm00ZnYobUNv
bG9yTG9jLCAxLCBrUmVkKTsKKyAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgNiwg
Myk7CisKKyAgICAgICAgcHJlcGFyZUZvclZlcmlmeSgpOworICAgICAgICByZXN1bHRzW3Bhc3Nd
LnJlc2V0KG5ldyB1aW50OF90W2tSZXN1bHRTaXplXSk7CisgICAgICAgIG1lbXNldChyZXN1bHRz
W3Bhc3NdLmdldCgpLCAxMjN1LCBrUmVzdWx0U2l6ZSk7CisgICAgICAgIGdsUmVhZFBpeGVscygw
LCAwLCBrV2lkdGgsIGtIZWlnaHQsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAg
ICAgICByZXN1bHRzW3Bhc3NdLmdldCgpKTsKKyAgICAgICAgaWYgKHBhc3MgPT0gMSkKKyAgICAg
ICAgeworICAgICAgICAgICAgZ2xEaXNhYmxlKEdMX1NBTVBMRV9BTFBIQV9UT19PTkVfRVhUKTsK
KyAgICAgICAgfQorCisgICAgICAgIGNsZWFudXAoKTsKKyAgICB9CisgICAgRVhQRUNUX05FKDAs
IG1lbWNtcChyZXN1bHRzWzBdLmdldCgpLCByZXN1bHRzWzFdLmdldCgpLCBrUmVzdWx0U2l6ZSkp
OworICAgIC8vIFZlcmlmeSB0aGF0IHJlbmRlcmluZyBpcyBkZXRlcm1pbmlzdGljLCBzbyB0aGF0
IHRoZSBwYXNzIGFib3ZlIGRvZXMgbm90CisgICAgLy8gY29tZSBmcm9tIG5vbi1kZXRlcm1pbmlz
dGljIHJlbmRlcmluZy4KKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKHJlc3VsdHNbMF0uZ2V0KCks
IHJlc3VsdHNbMl0uZ2V0KCksIGtSZXN1bHRTaXplKSk7Cit9CisKKworQU5HTEVfSU5TVEFOVElB
VEVfVEVTVChFWFRNdWx0aXNhbXBsZUNvbXBhdGliaWxpdHlUZXN0LCBFUzJfT1BFTkdMKCksIEVT
Ml9PUEVOR0xFUygpLCBFUzNfT1BFTkdMKCkpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9PYmplY3RB
bGxvY2F0aW9uVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2dsX3Rlc3RzL09iamVjdEFsbG9jYXRpb25UZXN0LmNwcAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvT2JqZWN0QWxs
b2NhdGlvblRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTQgQEAKKy8vCisvLyBD
b3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8v
CisvLyBPYmplY3RBbGxvY2F0aW9uVGVzdAorLy8gICBUZXN0cyBmb3Igb2JqZWN0IGFsbG9jYXRp
b25zIGFuZCBsaWZldGltZXMuCisvLworCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3Qu
aCIKKwordXNpbmcgbmFtZXNwYWNlIGFuZ2xlOworCituYW1lc3BhY2UKK3sKKworY2xhc3MgT2Jq
ZWN0QWxsb2NhdGlvblRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAg
ICBPYmplY3RBbGxvY2F0aW9uVGVzdCgpIHt9Cit9OworCisvLyBUZXN0IHRoYXQgd2UgZG9uJ3Qg
cmUtYWxsb2NhdGUgYSBib3VuZCBmcmFtZWJ1ZmZlciBJRC4KK1RFU1RfUChPYmplY3RBbGxvY2F0
aW9uVGVzdCwgQmluZEZyYW1lYnVmZmVyQmVmb3JlR2VuKQoreworICAgIGdsQmluZEZyYW1lYnVm
ZmVyKEdMX0ZSQU1FQlVGRkVSLCAxKTsKKyAgICBHTHVpbnQgZmJvID0gMDsKKyAgICBnbEdlbkZy
YW1lYnVmZmVycygxLCAmZmJvKTsKKyAgICBFWFBFQ1RfTkUoMXUsIGZibyk7CisgICAgZ2xEZWxl
dGVGcmFtZWJ1ZmZlcnMoMSwgJmZibyk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9CisK
Ky8vIFRlc3QgdGhhdCB3ZSBkb24ndCByZS1hbGxvY2F0ZSBhIGJvdW5kIGZyYW1lYnVmZmVyIElE
LCBvdGhlciBwYXR0ZXJuLgorVEVTVF9QKE9iamVjdEFsbG9jYXRpb25UZXN0LCBCaW5kRnJhbWVi
dWZmZXJBZnRlckdlbikKK3sKKyAgICBHTHVpbnQgZmlyc3RGQk8gPSAwOworICAgIGdsR2VuRnJh
bWVidWZmZXJzKDEsICZmaXJzdEZCTyk7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVC
VUZGRVIsIDEpOworICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZmaXJzdEZCTyk7CisKKyAg
ICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMik7CisgICAgR0x1aW50IHNlY29u
ZEZCT3NbMl0gPSB7MH07CisgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMiwgc2Vjb25kRkJPcyk7Cisg
ICAgRVhQRUNUX05FKDJ1LCBzZWNvbmRGQk9zWzBdKTsKKyAgICBFWFBFQ1RfTkUoMnUsIHNlY29u
ZEZCT3NbMV0pOworICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDIsIHNlY29uZEZCT3MpOworCisg
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9CisKK30gIC8vIGFub255bW91cyBuYW1lc3BhY2UK
KworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChPYmplY3RBbGxvY2F0aW9uVGVzdCwgRVMzX09QRU5H
TCgpLCBFUzNfRDNEMTEoKSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL09jY2x1c2lvblF1ZXJpZXNU
ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
Z2xfdGVzdHMvT2NjbHVzaW9uUXVlcmllc1Rlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9PY2NsdXNpb25RdWVyaWVzVGVz
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNjYgQEAKKy8vCisvLyBDb3B5cmlnaHQg
MjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpbmNs
dWRlICJzeXN0ZW1fdXRpbHMuaCIKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgor
I2luY2x1ZGUgInJhbmRvbV91dGlscy5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKK2Ns
YXNzIE9jY2x1c2lvblF1ZXJpZXNUZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0
ZWQ6CisgICAgT2NjbHVzaW9uUXVlcmllc1Rlc3QoKSA6IG1Qcm9ncmFtKDApLCBtUk5HKDEpCisg
ICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOworICAgICAgICBzZXRXaW5kb3dIZWln
aHQoMTI4KTsKKyAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmln
R3JlZW5CaXRzKDgpOworICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKKyAgICAgICAgc2V0
Q29uZmlnQWxwaGFCaXRzKDgpOworICAgICAgICBzZXRDb25maWdEZXB0aEJpdHMoMjQpOworICAg
IH0KKworICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0
OjpTZXRVcCgpOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHBhc3N0aHJvdWdoVlMgPSBT
SEFERVJfU09VUkNFCisgICAgICAgICgKKyAgICAgICAgICAgIGF0dHJpYnV0ZSBoaWdocCB2ZWM0
IHBvc2l0aW9uOworICAgICAgICAgICAgdm9pZCBtYWluKHZvaWQpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgKTsKKworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBwYXNzdGhyb3VnaFBTID0gU0hB
REVSX1NPVVJDRQorICAgICAgICAoCisgICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7
CisgICAgICAgICAgICB2b2lkIG1haW4odm9pZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgKTsKKworICAgICAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHBhc3N0
aHJvdWdoVlMsIHBhc3N0aHJvdWdoUFMpOworICAgICAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFt
KTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7CisKKyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93
bigpOworICAgIH0KKworICAgIEdMdWludCBtUHJvZ3JhbTsKKyAgICBSTkcgbVJORzsKK307CisK
K1RFU1RfUChPY2NsdXNpb25RdWVyaWVzVGVzdCwgSXNPY2NsdWRlZCkKK3sKKyAgICBpZiAoZ2V0
Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfb2Nj
bHVzaW9uX3F1ZXJ5X2Jvb2xlYW4iKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVz
dCBza2lwcGVkIGJlY2F1c2UgRVMzIG9yIEdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbiBh
cmUgbm90IGF2YWlsYWJsZS4iCisgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBnbERlcHRoTWFzayhHTF9UUlVFKTsKKyAgICBnbENs
ZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJ
TF9CVUZGRVJfQklUKTsKKworICAgIC8vIGRyYXcgYSBxdWFkIGF0IGRlcHRoIDAuMworICAgIGds
RW5hYmxlKEdMX0RFUFRIX1RFU1QpOworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAg
ZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuM2YpOworICAgIGdsVXNlUHJvZ3JhbSgw
KTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgR0x1aW50IHF1ZXJ5ID0gMDsK
KyAgICBnbEdlblF1ZXJpZXNFWFQoMSwgJnF1ZXJ5KTsKKyAgICBnbEJlZ2luUXVlcnlFWFQoR0xf
QU5ZX1NBTVBMRVNfUEFTU0VEX0VYVCwgcXVlcnkpOworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAi
cG9zaXRpb24iLCAwLjhmKTsgLy8gdGhpcyBxdWFkIHNob3VsZCBiZSBvY2NsdWRlZCBieSBmaXJz
dCBxdWFkCisgICAgZ2xFbmRRdWVyeUVYVChHTF9BTllfU0FNUExFU19QQVNTRURfRVhUKTsKKwor
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgc3dhcEJ1ZmZlcnMoKTsKKworICAgIEdM
dWludCByZWFkeSA9IEdMX0ZBTFNFOworICAgIHdoaWxlIChyZWFkeSA9PSBHTF9GQUxTRSkKKyAg
ICB7CisgICAgICAgIGFuZ2xlOjpTbGVlcCgwKTsKKyAgICAgICAgZ2xHZXRRdWVyeU9iamVjdHVp
dkVYVChxdWVyeSwgR0xfUVVFUllfUkVTVUxUX0FWQUlMQUJMRV9FWFQsICZyZWFkeSk7CisgICAg
fQorCisgICAgR0x1aW50IHJlc3VsdCA9IEdMX1RSVUU7CisgICAgZ2xHZXRRdWVyeU9iamVjdHVp
dkVYVChxdWVyeSwgR0xfUVVFUllfUkVTVUxUX0VYVCwgJnJlc3VsdCk7CisKKyAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKKworICAgIGdsRGVsZXRlUXVlcmllc0VYVCgxLCAmcXVlcnkpOworCisg
ICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GQUxTRSwgcmVzdWx0KTsKK30KKworVEVTVF9QKE9jY2x1
c2lvblF1ZXJpZXNUZXN0LCBJc05vdE9jY2x1ZGVkKQoreworICAgIGlmIChnZXRDbGllbnRNYWpv
clZlcnNpb24oKSA8IDMgJiYgIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9vY2NsdXNpb25fcXVl
cnlfYm9vbGVhbiIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQg
YmVjYXVzZSBFUzMgb3IgR0xfRVhUX29jY2x1c2lvbl9xdWVyeV9ib29sZWFuIGFyZSBub3QgYXZh
aWxhYmxlLiIKKyAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGdsRGVwdGhNYXNrKEdMX1RSVUUpOworICAgIGdsQ2xlYXIoR0xfQ09M
T1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9C
SVQpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBHTHVpbnQgcXVlcnkgPSAw
OworICAgIGdsR2VuUXVlcmllc0VYVCgxLCAmcXVlcnkpOworICAgIGdsQmVnaW5RdWVyeUVYVChH
TF9BTllfU0FNUExFU19QQVNTRURfRVhULCBxdWVyeSk7CisgICAgZHJhd1F1YWQobVByb2dyYW0s
ICJwb3NpdGlvbiIsIDAuOGYpOyAvLyB0aGlzIHF1YWQgc2hvdWxkIG5vdCBiZSBvY2NsdWRlZAor
ICAgIGdsRW5kUXVlcnlFWFQoR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0VYVCk7CisKKyAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKKworICAgIHN3YXBCdWZmZXJzKCk7CisKKyAgICBHTHVpbnQgcmVz
dWx0ID0gR0xfVFJVRTsKKyAgICBnbEdldFF1ZXJ5T2JqZWN0dWl2RVhUKHF1ZXJ5LCBHTF9RVUVS
WV9SRVNVTFRfRVhULCAmcmVzdWx0KTsgLy8gd2lsbCBibG9jayB3YWl0aW5nIGZvciByZXN1bHQK
KworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xEZWxldGVRdWVyaWVzRVhUKDEs
ICZxdWVyeSk7CisKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX1RSVUUsIHJlc3VsdCk7Cit9CisK
K1RFU1RfUChPY2NsdXNpb25RdWVyaWVzVGVzdCwgRXJyb3JzKQoreworICAgIGlmIChnZXRDbGll
bnRNYWpvclZlcnNpb24oKSA8IDMgJiYgIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9vY2NsdXNp
b25fcXVlcnlfYm9vbGVhbiIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNr
aXBwZWQgYmVjYXVzZSBFUzMgb3IgR0xfRVhUX29jY2x1c2lvbl9xdWVyeV9ib29sZWFuIGFyZSBu
b3QgYXZhaWxhYmxlLiIKKyAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGdsRGVwdGhNYXNrKEdMX1RSVUUpOworICAgIGdsQ2xlYXIo
R0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JV
RkZFUl9CSVQpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBHTHVpbnQgcXVl
cnkgPSAwOworICAgIEdMdWludCBxdWVyeTIgPSAwOworICAgIGdsR2VuUXVlcmllc0VYVCgxLCAm
cXVlcnkpOworCisgICAgRVhQRUNUX0VRKGdsSXNRdWVyeUVYVChxdWVyeSksIEdMX0ZBTFNFKTsK
KyAgICBFWFBFQ1RfRVEoZ2xJc1F1ZXJ5RVhUKHF1ZXJ5MiksIEdMX0ZBTFNFKTsKKworICAgIGds
QmVnaW5RdWVyeUVYVChHTF9BTllfU0FNUExFU19QQVNTRURfRVhULCAwKTsgLy8gY2FuJ3QgcGFz
cyAwIGFzIHF1ZXJ5IGlkCisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKKworICAgIGdsQmVnaW5RdWVyeUVYVChHTF9BTllfU0FNUExFU19QQVNTRURfRVhULCBxdWVy
eSk7CisgICAgZ2xCZWdpblF1ZXJ5RVhUKEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJ
VkVfRVhULCBxdWVyeTIpOyAvLyBjYW4ndCBpbml0aWF0ZSBhIHF1ZXJ5IHdoaWxlIG9uZSdzIGFs
cmVhZHkgYWN0aXZlCisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
KworICAgIEVYUEVDVF9FUShnbElzUXVlcnlFWFQocXVlcnkpLCBHTF9UUlVFKTsKKyAgICBFWFBF
Q1RfRVEoZ2xJc1F1ZXJ5RVhUKHF1ZXJ5MiksIEdMX0ZBTFNFKTsgLy8gaGF2ZSBub3QgY2FsbGVk
IGJlZ2luCisKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC44Zik7IC8vIHRo
aXMgcXVhZCBzaG91bGQgbm90IGJlIG9jY2x1ZGVkCisgICAgZ2xFbmRRdWVyeUVYVChHTF9BTllf
U0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFX0VYVCk7IC8vIG5vIGFjdGl2ZSBxdWVyeSBmb3Ig
dGhpcyB0YXJnZXQKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwor
ICAgIGdsRW5kUXVlcnlFWFQoR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0VYVCk7CisKKyAgICBnbEJl
Z2luUXVlcnlFWFQoR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRV9FWFQsIHF1ZXJ5
KTsgLy8gY2FuJ3QgYmVnaW4gYSBxdWVyeSBhcyBhIGRpZmZlcmVudCB0eXBlIHRoYW4gcHJldmlv
dXNseSB1c2VkCisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKwor
ICAgIGdsQmVnaW5RdWVyeUVYVChHTF9BTllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFX0VY
VCwgcXVlcnkyKTsgLy8gaGF2ZSB0byBjYWxsIGdlbnF1ZXJpZXMgZmlyc3QKKyAgICBFWFBFQ1Rf
R0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgZ2xHZW5RdWVyaWVzRVhUKDEs
ICZxdWVyeTIpOworICAgIGdsQmVnaW5RdWVyeUVYVChHTF9BTllfU0FNUExFU19QQVNTRURfQ09O
U0VSVkFUSVZFX0VYVCwgcXVlcnkyKTsgLy8gc2hvdWxkIGJlIG9rIG5vdworICAgIEVYUEVDVF9F
UShnbElzUXVlcnlFWFQocXVlcnkyKSwgR0xfVFJVRSk7CisKKyAgICBkcmF3UXVhZChtUHJvZ3Jh
bSwgInBvc2l0aW9uIiwgMC4zZik7IC8vIHRoaXMgc2hvdWxkIGRyYXcgaW4gZnJvbnQgb2Ygb3Ro
ZXIgcXVhZAorICAgIGdsRGVsZXRlUXVlcmllc0VYVCgxLCAmcXVlcnkyKTsgLy8gc2hvdWxkIGRl
bGV0ZSB3aGVuIHF1ZXJ5IGJlY29tZXMgaW5hY3RpdmUKKyAgICBnbEVuZFF1ZXJ5RVhUKEdMX0FO
WV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkVfRVhUKTsgLy8gc2hvdWxkIG5vdCBpbmN1ciBl
cnJvcjsgc2hvdWxkIGRlbGV0ZSBxdWVyeSArIDEgYXQgZW5kIG9mIGV4ZWN1dGlvbi4KKyAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIHN3YXBCdWZmZXJzKCk7CisKKyAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKKworICAgIEdMdWludCByZWFkeSA9IEdMX0ZBTFNFOworICAgIGdsR2V0
UXVlcnlPYmplY3R1aXZFWFQocXVlcnkyLCBHTF9RVUVSWV9SRVNVTFRfQVZBSUxBQkxFX0VYVCwg
JnJlYWR5KTsgLy8gdGhpcyBxdWVyeSBpcyBub3cgZGVsZXRlZAorICAgIEVYUEVDVF9HTF9FUlJP
UihHTF9JTlZBTElEX09QRVJBVElPTik7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKK30K
KworLy8gVGVzdCB0aGF0IHJ1bm5pbmcgbXVsdGlwbGUgc2ltdWx0YW5lb3VzIHF1ZXJpZXMgZnJv
bSBtdWx0aXBsZSBFR0wgY29udGV4dHMgcmV0dXJucyB0aGUgY29ycmVjdAorLy8gcmVzdWx0IGZv
ciBlYWNoIHF1ZXJ5LiAgSGVscHMgZXhwb3NlIGJ1Z3MgaW4gQU5HTEUncyB2aXJ0dWFsIGNvbnRl
eHRzLgorVEVTVF9QKE9jY2x1c2lvblF1ZXJpZXNUZXN0LCBNdWx0aUNvbnRleHQpCit7CisgICAg
aWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAmJiAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xf
RVhUX29jY2x1c2lvbl9xdWVyeV9ib29sZWFuIikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQg
PDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEVTMyBvciBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jv
b2xlYW4gYXJlIG5vdCBhdmFpbGFibGUuIgorICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRs
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKEdldFBhcmFtKCkgPT0gRVMyX0Qz
RDkoKSB8fCBHZXRQYXJhbSgpID09IEVTMl9EM0QxMSgpIHx8IEdldFBhcmFtKCkgPT0gRVMzX0Qz
RDExKCkpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNl
IHRoZSBEM0QgYmFja2VuZHMgY2Fubm90IHN1cHBvcnQgc2ltdWx0YW5lb3VzIHF1ZXJpZXMgb24g
IgorICAgICAgICAgICAgICAgICAgICAgIm11bHRpcGxlIGNvbnRleHRzIHlldC4iCisgICAgICAg
ICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBn
bERlcHRoTWFzayhHTF9UUlVFKTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBH
TF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKKworICAgIC8vIGRy
YXcgYSBxdWFkIGF0IGRlcHRoIDAuNQorICAgIGdsRW5hYmxlKEdMX0RFUFRIX1RFU1QpOworICAg
IGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgIEVHTFdpbmRvdyAq
d2luZG93ID0gZ2V0RUdMV2luZG93KCk7CisKKyAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSB3aW5k
b3ctPmdldERpc3BsYXkoKTsKKyAgICBFR0xDb25maWcgY29uZmlnICAgPSB3aW5kb3ctPmdldENv
bmZpZygpOworICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IHdpbmRvdy0+Z2V0U3VyZmFjZSgpOwor
CisgICAgRUdMaW50IGNvbnRleHRBdHRyaWJ1dGVzW10gPSB7CisgICAgICAgIEVHTF9DT05URVhU
X01BSk9SX1ZFUlNJT05fS0hSLAorICAgICAgICBHZXRQYXJhbSgpLm1ham9yVmVyc2lvbiwKKyAg
ICAgICAgRUdMX0NPTlRFWFRfTUlOT1JfVkVSU0lPTl9LSFIsCisgICAgICAgIEdldFBhcmFtKCku
bWlub3JWZXJzaW9uLAorICAgICAgICBFR0xfTk9ORSwKKyAgICB9OworCisgICAgY29uc3Qgc2l6
ZV90IHBhc3NDb3VudCA9IDU7CisgICAgc3RydWN0IENvbnRleHRJbmZvCisgICAgeworICAgICAg
ICBFR0xDb250ZXh0IGNvbnRleHQ7CisgICAgICAgIEdMdWludCBwcm9ncmFtOworICAgICAgICBH
THVpbnQgcXVlcnk7CisgICAgICAgIGJvb2wgdmlzaWJsZVBhc3Nlc1twYXNzQ291bnRdOworICAg
ICAgICBib29sIHNob3VsZFBhc3M7CisgICAgfTsKKworICAgIENvbnRleHRJbmZvIGNvbnRleHRz
W10gPSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIEVHTF9OT19DT05URVhULCAwLCAwLCB7ZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlfSwgZmFsc2UsCisgICAgICAgIH0sCisgICAg
ICAgIHsKKyAgICAgICAgICAgIEVHTF9OT19DT05URVhULCAwLCAwLCB7ZmFsc2UsIHRydWUsIGZh
bHNlLCB0cnVlLCBmYWxzZX0sIHRydWUsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEVHTF9OT19DT05URVhULCAwLCAwLCB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlfSwgZmFsc2UsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIEVHTF9OT19D
T05URVhULCAwLCAwLCB7dHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWV9LCB0cnVlLAorICAg
ICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICBFR0xfTk9fQ09OVEVYVCwgMCwgMCwge2Zh
bHNlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlfSwgdHJ1ZSwKKyAgICAgICAgfSwKKyAgICAgICAg
eworICAgICAgICAgICAgRUdMX05PX0NPTlRFWFQsIDAsIDAsIHt0cnVlLCBmYWxzZSwgZmFsc2Us
IHRydWUsIGZhbHNlfSwgdHJ1ZSwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAg
RUdMX05PX0NPTlRFWFQsIDAsIDAsIHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2V9
LCBmYWxzZSwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgRUdMX05PX0NPTlRF
WFQsIDAsIDAsIHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2V9LCBmYWxzZSwKKyAg
ICAgICAgfSwKKyAgICB9OworCisgICAgZm9yIChhdXRvICZjb250ZXh0IDogY29udGV4dHMpCisg
ICAgeworICAgICAgICBjb250ZXh0LmNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXks
IGNvbmZpZywgRUdMX05PX0NPTlRFWFQsIGNvbnRleHRBdHRyaWJ1dGVzKTsKKyAgICAgICAgQVNT
RVJUX05FKGNvbnRleHQuY29udGV4dCwgRUdMX05PX0NPTlRFWFQpOworCisgICAgICAgIGVnbE1h
a2VDdXJyZW50KGRpc3BsYXksIHN1cmZhY2UsIHN1cmZhY2UsIGNvbnRleHQuY29udGV4dCk7CisK
KyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgcGFzc3Rocm91Z2hWUyA9IFNIQURFUl9TT1VSQ0UK
KyAgICAgICAgKAorICAgICAgICAgICAgYXR0cmlidXRlIGhpZ2hwIHZlYzQgcG9zaXRpb247Cisg
ICAgICAgICAgICB2b2lkIG1haW4odm9pZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOworICAgICAgICAgICAgfQorICAgICAgICApOworCisg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHBhc3N0aHJvdWdoUFMgPSBTSEFERVJfU09VUkNFCisg
ICAgICAgICgKKyAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKKyAgICAgICAgICAg
IHZvaWQgbWFpbih2b2lkKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgZ2xfRnJhZ0Nv
bG9yID0gdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjApOworICAgICAgICAgICAgfQorICAgICAgICAp
OworCisgICAgICAgIGNvbnRleHQucHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHBhc3N0aHJvdWdo
VlMsIHBhc3N0aHJvdWdoUFMpOworICAgICAgICBBU1NFUlRfTkUoY29udGV4dC5wcm9ncmFtLCAw
dSk7CisKKyAgICAgICAgZ2xEZXB0aE1hc2soR0xfRkFMU0UpOworICAgICAgICBnbEVuYWJsZShH
TF9ERVBUSF9URVNUKTsKKworICAgICAgICBnbEdlblF1ZXJpZXNFWFQoMSwgJmNvbnRleHQucXVl
cnkpOworICAgICAgICBnbEJlZ2luUXVlcnlFWFQoR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0VYVCwg
Y29udGV4dC5xdWVyeSk7CisKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgfQor
CisgICAgZm9yIChzaXplX3QgcGFzcyA9IDA7IHBhc3MgPCBwYXNzQ291bnQ7IHBhc3MrKykKKyAg
ICB7CisgICAgICAgIGZvciAoY29uc3QgYXV0byAmY29udGV4dCA6IGNvbnRleHRzKQorICAgICAg
ICB7CisgICAgICAgICAgICBlZ2xNYWtlQ3VycmVudChkaXNwbGF5LCBzdXJmYWNlLCBzdXJmYWNl
LCBjb250ZXh0LmNvbnRleHQpOworCisgICAgICAgICAgICBmbG9hdCBkZXB0aCA9IGNvbnRleHQu
dmlzaWJsZVBhc3Nlc1twYXNzXSA/IG1STkcucmFuZG9tRmxvYXRCZXR3ZWVuKDAuMGYsIDAuNGYp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
IG1STkcucmFuZG9tRmxvYXRCZXR3ZWVuKDAuNmYsIDEuMGYpOworICAgICAgICAgICAgZHJhd1F1
YWQoY29udGV4dC5wcm9ncmFtLCAicG9zaXRpb24iLCBkZXB0aCk7CisKKyAgICAgICAgICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOworICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChjb25zdCBh
dXRvICZjb250ZXh0IDogY29udGV4dHMpCisgICAgeworICAgICAgICBlZ2xNYWtlQ3VycmVudChk
aXNwbGF5LCBzdXJmYWNlLCBzdXJmYWNlLCBjb250ZXh0LmNvbnRleHQpOworICAgICAgICBnbEVu
ZFF1ZXJ5RVhUKEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9FWFQpOworCisgICAgICAgIEdMdWludCBy
ZXN1bHQgPSBHTF9UUlVFOworICAgICAgICBnbEdldFF1ZXJ5T2JqZWN0dWl2RVhUKGNvbnRleHQu
cXVlcnksIEdMX1FVRVJZX1JFU1VMVF9FWFQsICZyZXN1bHQpOworCisgICAgICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworCisgICAgICAgIEdMdWludCBleHBlY3RhdGlvbiA9IGNvbnRleHQuc2hv
dWxkUGFzcyA/IEdMX1RSVUUgOiBHTF9GQUxTRTsKKyAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGF0
aW9uLCByZXN1bHQpOworICAgIH0KKworICAgIGVnbE1ha2VDdXJyZW50KGRpc3BsYXksIHN1cmZh
Y2UsIHN1cmZhY2UsIHdpbmRvdy0+Z2V0Q29udGV4dCgpKTsKKworICAgIGZvciAoYXV0byAmY29u
dGV4dCA6IGNvbnRleHRzKQorICAgIHsKKyAgICAgICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxh
eSwgY29udGV4dC5jb250ZXh0KTsKKyAgICAgICAgY29udGV4dC5jb250ZXh0ID0gRUdMX05PX0NP
TlRFWFQ7CisgICAgfQorfQorCisvLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJh
dGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhl
c2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgorQU5HTEVfSU5TVEFOVElBVEVfVEVTVChP
Y2NsdXNpb25RdWVyaWVzVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCisgICAgICAgICAgICAgICAgICAg
ICAgIEVTM19EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCisg
ICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgRVMyX09QRU5HTEVTKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygp
KTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9QQk9F
eHRlbnNpb25UZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvZ2xfdGVzdHMvUEJPRXh0ZW5zaW9uVGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1BCT0V4dGVuc2lvblRl
c3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTUzIEBACisvLworLy8gQ29weXJpZ2h0
IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5j
bHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKwordXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwor
CitjbGFzcyBQQk9FeHRlbnNpb25UZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0
ZWQ6CisgICAgUEJPRXh0ZW5zaW9uVGVzdCgpCisgICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0
aCgzMik7CisgICAgICAgIHNldFdpbmRvd0hlaWdodCgzMik7CisgICAgICAgIHNldENvbmZpZ1Jl
ZEJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICAgICAgc2V0Q29u
ZmlnQmx1ZUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpTZXRV
cCgpOworCisgICAgICAgIGlmIChleHRlbnNpb25FbmFibGVkKCJOVl9waXhlbF9idWZmZXJfb2Jq
ZWN0IikpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsR2VuQnVmZmVycygxLCAmbVBCTyk7Cisg
ICAgICAgICAgICBnbEJpbmRCdWZmZXIoR0xfUElYRUxfUEFDS19CVUZGRVIsIG1QQk8pOworICAg
ICAgICAgICAgZ2xCdWZmZXJEYXRhKEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCA0ICogZ2V0V2luZG93
V2lkdGgoKSAqIGdldFdpbmRvd0hlaWdodCgpLCBOVUxMLCBHTF9TVEFUSUNfRFJBVyk7CisgICAg
ICAgICAgICBnbEJpbmRCdWZmZXIoR0xfUElYRUxfUEFDS19CVUZGRVIsIDApOworCisgICAgICAg
ICAgICBjb25zdCBjaGFyICp2ZXJ0ZXhTaGFkZXJTcmMgPSBTSEFERVJfU09VUkNFCisgICAgICAg
ICAgICAoCisgICAgICAgICAgICAgICAgYXR0cmlidXRlIHZlYzQgYVRlc3Q7CisgICAgICAgICAg
ICAgICAgYXR0cmlidXRlIHZlYzIgYVBvc2l0aW9uOworICAgICAgICAgICAgICAgIHZhcnlpbmcg
dmVjNCB2VGVzdDsKKworICAgICAgICAgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICB2VGVzdCA9IGFUZXN0OworICAgICAgICAgICAgICAg
ICAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoYVBvc2l0aW9uLCAwLjAsIDEuMCk7CisgICAgICAgICAg
ICAgICAgICAgIGdsX1BvaW50U2l6ZSA9IDEuMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICApOworCisgICAgICAgICAgICBjb25zdCBjaGFyICpmcmFnbWVudFNoYWRlclNyYyA9IFNI
QURFUl9TT1VSQ0UKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICBwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKyAgICAgICAgICAgICAgICB2YXJ5aW5nIHZlYzQgdlRlc3Q7CisKKyAgICAg
ICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgZ2xfRnJhZ0NvbG9yID0gdlRlc3Q7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgKTsKKworICAgICAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFk
ZXJTcmMsIGZyYWdtZW50U2hhZGVyU3JjKTsKKworICAgICAgICAgICAgZ2xHZW5CdWZmZXJzKDEs
ICZtUG9zaXRpb25WQk8pOworICAgICAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZF
UiwgbVBvc2l0aW9uVkJPKTsKKyAgICAgICAgICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZG
RVIsIDEyOCwgTlVMTCwgR0xfRFlOQU1JQ19EUkFXKTsKKyAgICAgICAgICAgIGdsQmluZEJ1ZmZl
cihHTF9BUlJBWV9CVUZGRVIsIDApOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCisgICAgeworICAg
ICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7CisKKyAgICAgICAgZ2xEZWxldGVCdWZmZXJzKDEs
ICZtUEJPKTsKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICB9CisKKyAg
ICBHTHVpbnQgbVBCTzsKKyAgICBHTHVpbnQgbVByb2dyYW07CisgICAgR0x1aW50IG1Qb3NpdGlv
blZCTzsKK307CisKK1RFU1RfUChQQk9FeHRlbnNpb25UZXN0LCBQQk9XaXRoT3RoZXJUYXJnZXQp
Cit7CisgICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQoIk5WX3BpeGVsX2J1ZmZlcl9vYmplY3QiKSkK
KyAgICB7CisgICAgICAgIGdsQ2xlYXJDb2xvcigxLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKKyAg
ICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICAgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7CisKKyAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCBt
UEJPKTsKKyAgICAgICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIDE2LCAxNiwgR0xfUkdCQSwgR0xfVU5T
SUdORURfQllURSwgMCk7CisKKyAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX1BJWEVMX1BBQ0tfQlVG
RkVSLCAwKTsKKyAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbVBCTyk7CisK
KyAgICAgICAgR0x2b2lkICptYXBwZWRQdHIgPSBnbE1hcEJ1ZmZlclJhbmdlRVhUKEdMX0FSUkFZ
X0JVRkZFUiwgMCwgMzIsIEdMX01BUF9SRUFEX0JJVCk7CisgICAgICAgIHVuc2lnbmVkIGNoYXIg
KmRhdGFQdHIgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KG1hcHBlZFB0cik7CisgICAg
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgICAgIEVYUEVDVF9FUSgyNTUsIGRhdGFQ
dHJbMF0pOworICAgICAgICBFWFBFQ1RfRVEoMCwgICBkYXRhUHRyWzFdKTsKKyAgICAgICAgRVhQ
RUNUX0VRKDAsICAgZGF0YVB0clsyXSk7CisgICAgICAgIEVYUEVDVF9FUSgyNTUsIGRhdGFQdHJb
M10pOworCisgICAgICAgIGdsVW5tYXBCdWZmZXJPRVMoR0xfQVJSQVlfQlVGRkVSKTsKKyAgICB9
CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9CisKK1RFU1RfUChQQk9FeHRlbnNpb25UZXN0
LCBQQk9XaXRoRXhpc3RpbmdEYXRhKQoreworICAgIGlmIChleHRlbnNpb25FbmFibGVkKCJOVl9w
aXhlbF9idWZmZXJfb2JqZWN0IikpCisgICAgeworICAgICAgICAvLyBDbGVhciBiYWNrYnVmZmVy
IHRvIHJlZAorICAgICAgICBnbENsZWFyQ29sb3IoMS4wZiwgMC4wZiwgMC4wZiwgMS4wZik7Cisg
ICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOworCisgICAgICAgIC8vIFJlYWQgMTZ4MTYgcmVnaW9uIGZyb20gcmVkIGJhY2ti
dWZmZXIgdG8gUEJPCisgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9QQUNLX0JVRkZFUiwg
bVBCTyk7CisgICAgICAgIGdsUmVhZFBpeGVscygwLCAwLCAxNiwgMTYsIEdMX1JHQkEsIEdMX1VO
U0lHTkVEX0JZVEUsIDApOworCisgICAgICAgIC8vIENsZWFyIGJhY2tidWZmZXIgdG8gZ3JlZW4K
KyAgICAgICAgZ2xDbGVhckNvbG9yKDAuMGYsIDEuMGYsIDAuMGYsIDEuMGYpOworICAgICAgICBn
bENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1Io
KTsKKworICAgICAgICAvLyBSZWFkIDE2eDE2IHJlZ2lvbiBmcm9tIGdyZWVuIGJhY2tidWZmZXIg
dG8gUEJPIGF0IG9mZnNldCAxNgorICAgICAgICBnbFJlYWRQaXhlbHMoMCwgMCwgMTYsIDE2LCBH
TF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KDE2KSk7
CisgICAgICAgIEdMdm9pZCAqIG1hcHBlZFB0ciA9IGdsTWFwQnVmZmVyUmFuZ2VFWFQoR0xfUElY
RUxfUEFDS19CVUZGRVIsIDAsIDMyLCBHTF9NQVBfUkVBRF9CSVQpOworICAgICAgICB1bnNpZ25l
ZCBjaGFyICpkYXRhUHRyID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihtYXBwZWRQdHIp
OworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgICAgICAvLyBUZXN0IHBpeGVs
IDAgaXMgcmVkIChleGlzdGluZyBkYXRhKQorICAgICAgICBFWFBFQ1RfRVEoMjU1LCBkYXRhUHRy
WzBdKTsKKyAgICAgICAgRVhQRUNUX0VRKDAsIGRhdGFQdHJbMV0pOworICAgICAgICBFWFBFQ1Rf
RVEoMCwgZGF0YVB0clsyXSk7CisgICAgICAgIEVYUEVDVF9FUSgyNTUsIGRhdGFQdHJbM10pOwor
CisgICAgICAgIC8vIFRlc3QgcGl4ZWwgMTYgaXMgZ3JlZW4gKG5ldyBkYXRhKQorICAgICAgICBF
WFBFQ1RfRVEoMCwgZGF0YVB0clsxNiAqIDQgKyAwXSk7CisgICAgICAgIEVYUEVDVF9FUSgyNTUs
IGRhdGFQdHJbMTYgKiA0ICsgMV0pOworICAgICAgICBFWFBFQ1RfRVEoMCwgZGF0YVB0clsxNiAq
IDQgKyAyXSk7CisgICAgICAgIEVYUEVDVF9FUSgyNTUsIGRhdGFQdHJbMTYgKiA0ICsgM10pOwor
CisgICAgICAgIGdsVW5tYXBCdWZmZXJPRVMoR0xfUElYRUxfUEFDS19CVUZGRVIpOworICAgIH0K
KyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKK30KKworLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdo
aWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9y
IHZlcnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KK0FOR0xFX0lOU1RB
TlRJQVRFX1RFU1QoUEJPRXh0ZW5zaW9uVGVzdCwgRVMyX0QzRDExKCksIEVTM19EM0QxMSgpLCBF
UzNfT1BFTkdMKCksIEVTM19PUEVOR0xFUygpKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9QYWNrVW5wYWNrVGVzdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1BhY2tVbnBhY2tUZXN0
LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
Z2xfdGVzdHMvUGFja1VucGFja1Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjY4
IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworLy8gUGFja1VucGFja1Rlc3Q6CisvLyAgIFRlc3RzIHRoZSBjb3JycmVj
dG5lc3Mgb2Ygb3BlbmdsIDQuMSBlbXVsYXRpb24gb2YgcGFjay91bnBhY2sgYnVpbHQtaW4gZnVu
Y3Rpb25zLgorLy8KKworI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNlCit7CisKK2NsYXNzIFBhY2tVbnBhY2tUZXN0
IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgUGFja1VucGFja1Rlc3Qo
KQorICAgIHsKKyAgICAgICAgc2V0V2luZG93V2lkdGgoMTYpOworICAgICAgICBzZXRXaW5kb3dI
ZWlnaHQoMTYpOworICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOworICAgICAgICBzZXRDb25m
aWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOworICAgICAgICBz
ZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgfQorCisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRl
CisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7CisKKyAgICAgICAgLy8gVmVydGV4
IFNoYWRlciBzb3VyY2UKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdnMgPSBTSEFERVJfU09V
UkNFCisgICAgICAgICggICAjdmVyc2lvbiAzMDAgZXNcbgorICAgICAgICAgICAgcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisgICAgICAgICAgICBpbiB2ZWM0IHBvc2l0aW9uOworCisgICAgICAg
ICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsX1Bvc2l0
aW9uID0gcG9zaXRpb247CisgICAgICAgICAgICB9CisgICAgICAgICk7CisKKyAgICAgICAgLy8g
Y2xhbmctZm9ybWF0IG9mZgorICAgICAgICAvLyBGcmFnbWVudCBTaGFkZXIgc291cmNlCisgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHNOb3JtRlMgPSBTSEFERVJfU09VUkNFCisgICAgICAgICgg
ICAjdmVyc2lvbiAzMDAgZXNcbgorICAgICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisgICAgICAgICAgICB1bmlmb3JtIG1lZGl1bXAgdmVjMiB2OworICAgICAgICAgICAgbGF5b3V0
KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBmcmFnQ29sb3I7CisKKyAgICAgICAgICAg
IHZvaWQgbWFpbigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdWludCB1ID0gcGFj
a1Nub3JtMngxNih2KTsKKyAgICAgICAgICAgICAgICB2ZWMyIHIgPSB1bnBhY2tTbm9ybTJ4MTYo
dSk7CisgICAgICAgICAgICAgICAgZnJhZ0NvbG9yID0gdmVjNChyLCAwLjAsIDEuMCk7CisgICAg
ICAgICAgICB9CisgICAgICAgICk7CisKKyAgICAgICAgLy8gRnJhZ21lbnQgU2hhZGVyIHNvdXJj
ZQorICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB1Tm9ybUZTID0gU0hBREVSX1NPVVJDRQorICAg
ICAgICAoICAgI3ZlcnNpb24gMzAwIGVzXG4KKyAgICAgICAgICAgIHByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OworICAgICAgICAgICAgdW5pZm9ybSBtZWRpdW1wIHZlYzIgdjsKKyAgICAgICAgICAg
IGxheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgZnJhZ0NvbG9yOworCisgICAg
ICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHVpbnQg
dSA9IHBhY2tVbm9ybTJ4MTYodik7CisgICAgICAgICAgICAgICAgdmVjMiByID0gdW5wYWNrVW5v
cm0yeDE2KHUpOworICAgICAgICAgICAgICAgIGZyYWdDb2xvciA9IHZlYzQociwgMC4wLCAxLjAp
OworICAgICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAgIC8vIEZyYWdtZW50IFNoYWRl
ciBzb3VyY2UKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgaGFsZkZTID0gU0hBREVSX1NPVVJD
RQorICAgICAgICAoICAgI3ZlcnNpb24gMzAwIGVzXG4KKyAgICAgICAgICAgIHByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OworICAgICAgICAgICAgdW5pZm9ybSBtZWRpdW1wIHZlYzIgdjsKKyAgICAg
ICAgICAgIGxheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgZnJhZ0NvbG9yOwor
CisgICAgICAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgIHVpbnQgdSA9IHBhY2tIYWxmMngxNih2KTsKKyAgICAgICAgICAgICAgICAgdmVjMiByID0g
dW5wYWNrSGFsZjJ4MTYodSk7CisgICAgICAgICAgICAgICAgIGZyYWdDb2xvciA9IHZlYzQociwg
MC4wLCAxLjApOworICAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKyAgICAgICAgLy8gY2xhbmct
Zm9ybWF0IG9uCisKKyAgICAgICAgbVNOb3JtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZzLCBz
Tm9ybUZTKTsKKyAgICAgICAgbVVOb3JtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZzLCB1Tm9y
bUZTKTsKKyAgICAgICAgbUhhbGZQcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odnMsIGhhbGZGUyk7
CisgICAgICAgIGlmIChtU05vcm1Qcm9ncmFtID09IDAgfHwgbVVOb3JtUHJvZ3JhbSA9PSAwIHx8
IG1IYWxmUHJvZ3JhbSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBGQUlMKCkgPDwgInNo
YWRlciBjb21waWxhdGlvbiBmYWlsZWQuIjsKKyAgICAgICAgfQorCisgICAgICAgIGdsR2VuVGV4
dHVyZXMoMSwgJm1PZmZzY3JlZW5UZXh0dXJlMkQpOworICAgICAgICBnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQsIG1PZmZzY3JlZW5UZXh0dXJlMkQpOworICAgICAgICBnbFRleFN0b3JhZ2Uy
RChHTF9URVhUVVJFXzJELCAxLCBHTF9SRzMyRiwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93
SGVpZ2h0KCkpOworCisgICAgICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZtT2Zmc2NyZWVuRnJh
bWVidWZmZXIpOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbU9m
ZnNjcmVlbkZyYW1lYnVmZmVyKTsKKyAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9G
UkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1PZmZzY3Jl
ZW5UZXh0dXJlMkQsIDApOworCisgICAgICAgIGdsVmlld3BvcnQoMCwgMCwgMTYsIDE2KTsKKwor
ICAgICAgICBjb25zdCBHTGZsb2F0IGNvbG9yW10gPSB7IDEuMGYsIDEuMGYsIDAuMGYsIDEuMGYg
fTsKKyAgICAgICAgZ2xDbGVhckJ1ZmZlcmZ2KEdMX0NPTE9SLCAwLCBjb2xvcik7CisgICAgfQor
CisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBnbERlbGV0ZVRl
eHR1cmVzKDEsICZtT2Zmc2NyZWVuVGV4dHVyZTJEKTsKKyAgICAgICAgZ2xEZWxldGVGcmFtZWJ1
ZmZlcnMoMSwgJm1PZmZzY3JlZW5GcmFtZWJ1ZmZlcik7CisgICAgICAgIGdsRGVsZXRlUHJvZ3Jh
bShtU05vcm1Qcm9ncmFtKTsKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1VTm9ybVByb2dyYW0p
OworICAgICAgICBnbERlbGV0ZVByb2dyYW0obUhhbGZQcm9ncmFtKTsKKworICAgICAgICBBTkdM
RVRlc3Q6OlRlYXJEb3duKCk7CisgICAgfQorCisgICAgdm9pZCBjb21wYXJlQmVmb3JlQWZ0ZXIo
R0x1aW50IHByb2dyYW0sIGZsb2F0IGlucHV0MSwgZmxvYXQgaW5wdXQyKQorICAgIHsKKyAgICAg
ICAgY29tcGFyZUJlZm9yZUFmdGVyKHByb2dyYW0sIGlucHV0MSwgaW5wdXQyLCBpbnB1dDEsIGlu
cHV0Mik7CisgICAgfQorCisgICAgdm9pZCBjb21wYXJlQmVmb3JlQWZ0ZXIoR0x1aW50IHByb2dy
YW0sIGZsb2F0IGlucHV0MSwgZmxvYXQgaW5wdXQyLCBmbG9hdCBleHBlY3QxLCBmbG9hdCBleHBl
Y3QyKQorICAgIHsKKyAgICAgICAgR0xpbnQgdmVjMkxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9j
YXRpb24ocHJvZ3JhbSwgInYiKTsKKworICAgICAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbSk7Cisg
ICAgICAgIGdsVW5pZm9ybTJmKHZlYzJMb2NhdGlvbiwgaW5wdXQxLCBpbnB1dDIpOworCisgICAg
ICAgIGRyYXdRdWFkKHByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworCisgICAgICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOworCisgICAgICAgIEdMZmxvYXQgcFsyXSA9IHsgMCB9OworICAgICAg
ICBnbFJlYWRQaXhlbHMoOCwgOCwgMSwgMSwgR0xfUkcsIEdMX0ZMT0FULCBwKTsKKworICAgICAg
ICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgICAgICBzdGF0aWMgY29uc3QgZG91YmxlIGVw
c2lsb24gPSAwLjAwMDU7CisgICAgICAgIEVYUEVDVF9ORUFSKHBbMF0sIGV4cGVjdDEsIGVwc2ls
b24pOworICAgICAgICBFWFBFQ1RfTkVBUihwWzFdLCBleHBlY3QyLCBlcHNpbG9uKTsKKyAgICB9
CisKKyAgICBHTHVpbnQgbVNOb3JtUHJvZ3JhbTsKKyAgICBHTHVpbnQgbVVOb3JtUHJvZ3JhbTsK
KyAgICBHTHVpbnQgbUhhbGZQcm9ncmFtOworICAgIEdMdWludCBtT2Zmc2NyZWVuRnJhbWVidWZm
ZXI7CisgICAgR0x1aW50IG1PZmZzY3JlZW5UZXh0dXJlMkQ7Cit9OworCisvLyBUZXN0IHRoZSBj
b3JyZWN0bmVzcyBvZiBwYWNrU25vcm0yeDE2IGFuZCB1bnBhY2tTbm9ybTJ4MTYgZnVuY3Rpb25z
IGNhbGN1bGF0aW5nIG5vcm1hbCBmbG9hdGluZyBudW1iZXJzLgorVEVTVF9QKFBhY2tVbnBhY2tU
ZXN0LCBQYWNrVW5wYWNrU25vcm1Ob3JtYWwpCit7CisgICAgLy8gRXhwZWN0IHRoZSBzaGFkZXIg
dG8gb3V0cHV0IHRoZSBzYW1lIHZhbHVlIGFzIHRoZSBpbnB1dAorICAgIGNvbXBhcmVCZWZvcmVB
ZnRlcihtU05vcm1Qcm9ncmFtLCAwLjVmLCAtMC4yZik7CisgICAgY29tcGFyZUJlZm9yZUFmdGVy
KG1TTm9ybVByb2dyYW0sIC0wLjM1ZiwgMC43NWYpOworICAgIGNvbXBhcmVCZWZvcmVBZnRlciht
U05vcm1Qcm9ncmFtLCAwLjAwMzkyZiwgLTAuOTkyMTVmKTsKKyAgICBjb21wYXJlQmVmb3JlQWZ0
ZXIobVNOb3JtUHJvZ3JhbSwgMS4wZiwgLTAuMDAzOTJmKTsKK30KKworLy8gVGVzdCB0aGUgY29y
cmVjdG5lc3Mgb2YgcGFja1Nub3JtMngxNiBhbmQgdW5wYWNrU25vcm0yeDE2IGZ1bmN0aW9ucyBj
YWxjdWxhdGluZyBub3JtYWwgZmxvYXRpbmcKKy8vIG51bWJlcnMuCitURVNUX1AoUGFja1VucGFj
a1Rlc3QsIFBhY2tVbnBhY2tVbm9ybU5vcm1hbCkKK3sKKyAgICAvLyBFeHBlY3QgdGhlIHNoYWRl
ciB0byBvdXRwdXQgdGhlIHNhbWUgdmFsdWUgYXMgdGhlIGlucHV0CisgICAgY29tcGFyZUJlZm9y
ZUFmdGVyKG1VTm9ybVByb2dyYW0sIDAuNWYsIDAuMmYsIDAuNWYsIDAuMmYpOworICAgIGNvbXBh
cmVCZWZvcmVBZnRlcihtVU5vcm1Qcm9ncmFtLCAwLjM1ZiwgMC43NWYsIDAuMzVmLCAwLjc1Zik7
CisgICAgY29tcGFyZUJlZm9yZUFmdGVyKG1VTm9ybVByb2dyYW0sIDAuMDAzOTJmLCAwLjk5MjE1
ZiwgMC4wMDM5MmYsIDAuOTkyMTVmKTsKKyAgICBjb21wYXJlQmVmb3JlQWZ0ZXIobVVOb3JtUHJv
Z3JhbSwgMS4wZiwgMC4wMDM5MmYsIDEuMGYsIDAuMDAzOTJmKTsKK30KKworLy8gVGVzdCB0aGUg
Y29ycmVjdG5lc3Mgb2YgcGFja0hhbGYyeDE2IGFuZCB1bnBhY2tIYWxmMngxNiBmdW5jdGlvbnMg
Y2FsY3VsYXRpbmcgbm9ybWFsIGZsb2F0aW5nIG51bWJlcnMuCitURVNUX1AoUGFja1VucGFja1Rl
c3QsIFBhY2tVbnBhY2tIYWxmTm9ybWFsKQoreworICAgIC8vIFRPRE8oY3dhbGxleikgZmlndXJl
IG91dCB3aHkgaXQgaXMgYnJva2VuIG9uIEludGVsIG9uIE1hYworI2lmIGRlZmluZWQoQU5HTEVf
UExBVEZPUk1fQVBQTEUpCisgICAgaWYgKElzSW50ZWwoKSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVy
KCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFKQorICAgIHsKKyAgICAg
ICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgb24gTWFjLiIgPDwgc3RkOjpl
bmRsOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAgICAvLyBFeHBlY3QgdGhl
IHNoYWRlciB0byBvdXRwdXQgdGhlIHNhbWUgdmFsdWUgYXMgdGhlIGlucHV0CisgICAgY29tcGFy
ZUJlZm9yZUFmdGVyKG1IYWxmUHJvZ3JhbSwgMC41ZiwgLTAuMmYpOworICAgIGNvbXBhcmVCZWZv
cmVBZnRlcihtSGFsZlByb2dyYW0sIC0wLjM1ZiwgMC43NWYpOworICAgIGNvbXBhcmVCZWZvcmVB
ZnRlcihtSGFsZlByb2dyYW0sIDAuMDAzOTJmLCAtMC45OTIxNWYpOworICAgIGNvbXBhcmVCZWZv
cmVBZnRlcihtSGFsZlByb2dyYW0sIDEuMGYsIC0wLjAwMzkyZik7Cit9CisKKy8vIFRlc3QgdGhl
IGNvcnJlY3RuZXNzIG9mIHBhY2tTbm9ybTJ4MTYgYW5kIHVucGFja1Nub3JtMngxNiBmdW5jdGlv
bnMgY2FsY3VsYXRpbmcgc3Vibm9ybWFsIGZsb2F0aW5nIG51bWJlcnMuCitURVNUX1AoUGFja1Vu
cGFja1Rlc3QsIFBhY2tVbnBhY2tTbm9ybVN1Ym5vcm1hbCkKK3sKKyAgICAvLyBFeHBlY3QgdGhl
IHNoYWRlciB0byBvdXRwdXQgdGhlIHNhbWUgdmFsdWUgYXMgdGhlIGlucHV0CisgICAgY29tcGFy
ZUJlZm9yZUFmdGVyKG1TTm9ybVByb2dyYW0sIDAuMDAwMDFmLCAtMC4wMDAwMWYpOworfQorCisv
LyBUZXN0IHRoZSBjb3JyZWN0bmVzcyBvZiBwYWNrVW5vcm0yeDE2IGFuZCB1bnBhY2tVbm9ybTJ4
MTYgZnVuY3Rpb25zIGNhbGN1bGF0aW5nIHN1Ym5vcm1hbAorLy8gZmxvYXRpbmcgbnVtYmVycy4K
K1RFU1RfUChQYWNrVW5wYWNrVGVzdCwgUGFja1VucGFja1Vub3JtU3Vibm9ybWFsKQoreworICAg
IC8vIEV4cGVjdCB0aGUgc2hhZGVyIHRvIG91dHB1dCB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgaW5w
dXQgZm9yIHBvc2l0aXZlIG51bWJlcnMgYW5kIGNsYW1wCisgICAgLy8gdG8gWzAsIDFdCisgICAg
Y29tcGFyZUJlZm9yZUFmdGVyKG1VTm9ybVByb2dyYW0sIDAuMDAwMDFmLCAtMC4wMDAwMWYsIDAu
MDAwMDFmLCAwLjBmKTsKK30KKworLy8gVGVzdCB0aGUgY29ycmVjdG5lc3Mgb2YgcGFja0hhbGYy
eDE2IGFuZCB1bnBhY2tIYWxmMngxNiBmdW5jdGlvbnMgY2FsY3VsYXRpbmcgc3Vibm9ybWFsIGZs
b2F0aW5nIG51bWJlcnMuCitURVNUX1AoUGFja1VucGFja1Rlc3QsIFBhY2tVbnBhY2tIYWxmU3Vi
bm9ybWFsKQoreworICAgIC8vIEV4cGVjdCB0aGUgc2hhZGVyIHRvIG91dHB1dCB0aGUgc2FtZSB2
YWx1ZSBhcyB0aGUgaW5wdXQKKyAgICBjb21wYXJlQmVmb3JlQWZ0ZXIobUhhbGZQcm9ncmFtLCAw
LjAwMDAxZiwgLTAuMDAwMDFmKTsKK30KKworLy8gVGVzdCB0aGUgY29ycmVjdG5lc3Mgb2YgcGFj
a1Nub3JtMngxNiBhbmQgdW5wYWNrU25vcm0yeDE2IGZ1bmN0aW9ucyBjYWxjdWxhdGluZyB6ZXJv
IGZsb2F0aW5nIG51bWJlcnMuCitURVNUX1AoUGFja1VucGFja1Rlc3QsIFBhY2tVbnBhY2tTbm9y
bVplcm8pCit7CisgICAgLy8gRXhwZWN0IHRoZSBzaGFkZXIgdG8gb3V0cHV0IHRoZSBzYW1lIHZh
bHVlIGFzIHRoZSBpbnB1dAorICAgIGNvbXBhcmVCZWZvcmVBZnRlcihtU05vcm1Qcm9ncmFtLCAw
LjAwMDAwZiwgLTAuMDAwMDBmKTsKK30KKworLy8gVGVzdCB0aGUgY29ycmVjdG5lc3Mgb2YgcGFj
a1Vub3JtMngxNiBhbmQgdW5wYWNrVW5vcm0yeDE2IGZ1bmN0aW9ucyBjYWxjdWxhdGluZyB6ZXJv
IGZsb2F0aW5nCisvLyBudW1iZXJzLgorVEVTVF9QKFBhY2tVbnBhY2tUZXN0LCBQYWNrVW5wYWNr
VW5vcm1aZXJvKQoreworICAgIGNvbXBhcmVCZWZvcmVBZnRlcihtVU5vcm1Qcm9ncmFtLCAwLjAw
MDAwZiwgLTAuMDAwMDBmLCAwLjAwMDAwZiwgMC4wMDAwMGYpOworfQorCisvLyBUZXN0IHRoZSBj
b3JyZWN0bmVzcyBvZiBwYWNrSGFsZjJ4MTYgYW5kIHVucGFja0hhbGYyeDE2IGZ1bmN0aW9ucyBj
YWxjdWxhdGluZyB6ZXJvIGZsb2F0aW5nIG51bWJlcnMuCitURVNUX1AoUGFja1VucGFja1Rlc3Qs
IFBhY2tVbnBhY2tIYWxmWmVybykKK3sKKyAgICAvLyBFeHBlY3QgdGhlIHNoYWRlciB0byBvdXRw
dXQgdGhlIHNhbWUgdmFsdWUgYXMgdGhlIGlucHV0CisgICAgY29tcGFyZUJlZm9yZUFmdGVyKG1I
YWxmUHJvZ3JhbSwgMC4wMDAwMGYsIC0wLjAwMDAwZik7Cit9CisKKy8vIFRlc3QgdGhlIGNvcnJl
Y3RuZXNzIG9mIHBhY2tVbm9ybTJ4MTYgYW5kIHVucGFja1Vub3JtMngxNiBmdW5jdGlvbnMgY2Fs
Y3VsYXRpbmcgb3ZlcmZsb3cgZmxvYXRpbmcKKy8vIG51bWJlcnMuCitURVNUX1AoUGFja1VucGFj
a1Rlc3QsIFBhY2tVbnBhY2tVbm9ybU92ZXJmbG93KQoreworICAgIC8vIEV4cGVjdCB0aGUgc2hh
ZGVyIHRvIGNsYW1wIHRoZSBpbnB1dCB0byBbMCwgMV0KKyAgICBjb21wYXJlQmVmb3JlQWZ0ZXIo
bVVOb3JtUHJvZ3JhbSwgNjcwMDAuMGYsIC02NzAwMC4wZiwgMS4wZiwgMC4wZik7Cit9CisKKy8v
IFRlc3QgdGhlIGNvcnJlY3RuZXNzIG9mIHBhY2tTbm9ybTJ4MTYgYW5kIHVucGFja1Nub3JtMngx
NiBmdW5jdGlvbnMgY2FsY3VsYXRpbmcgb3ZlcmZsb3cgZmxvYXRpbmcgbnVtYmVycy4KK1RFU1Rf
UChQYWNrVW5wYWNrVGVzdCwgUGFja1VucGFja1Nub3JtT3ZlcmZsb3cpCit7CisgICAgLy8gRXhw
ZWN0IHRoZSBzaGFkZXIgdG8gY2xhbXAgdGhlIGlucHV0IHRvIFstMSwgMV0KKyAgICBjb21wYXJl
QmVmb3JlQWZ0ZXIobVNOb3JtUHJvZ3JhbSwgNjcwMDAuMGYsIC02NzAwMC4wZiwgMS4wZiwgLTEu
MGYpOworfQorCisvLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUu
Zy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMg
c2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgorQU5HTEVfSU5TVEFOVElBVEVfVEVTVChQYWNrVW5wYWNr
VGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgzLCAzKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgRVMzX09QRU5HTCg0LCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
RVMzX09QRU5HTCg0LCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCg0LCAy
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCg0LCAzKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgRVMzX09QRU5HTCg0LCA0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMz
X09QRU5HTCg0LCA1KSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOwor
fQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1BhdGhS
ZW5kZXJpbmdUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvZ2xfdGVzdHMvUGF0aFJlbmRlcmluZ1Rlc3QuY3BwCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9QYXRoUmVuZGVyaW5n
VGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOTg0IEBACisvLworLy8gQ29weXJp
Z2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8g
Q0hST01JVU1QYXRoUmVuZGVyaW5nVGVzdAorLy8gICBUZXN0IENIUk9NSVVNIHN1YnNldCBvZiBO
Vl9wYXRoX3JlbmRlcmluZworLy8gICBUaGlzIGV4dGVuc2lvbiBhbGxvd3MgdG8gcmVuZGVyIGdl
b21ldHJpYyBwYXRocyBhcyBmaXJzdCBjbGFzcyBHTCBvYmplY3RzLgorCisjaW5jbHVkZSAidGVz
dF91dGlscy9BTkdMRVRlc3QuaCIKKyNpbmNsdWRlICJzaGFkZXJfdXRpbHMuaCIKKworI2luY2x1
ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisKKyNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxj
c3RyaW5nPgorI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8ZnN0cmVhbT4KKwordXNpbmcg
bmFtZXNwYWNlIGFuZ2xlOworCituYW1lc3BhY2UKK3sKKworYm9vbCBDaGVja1BpeGVscyhHTGlu
dCB4LAorICAgICAgICAgICAgICAgICBHTGludCB5LAorICAgICAgICAgICAgICAgICBHTHNpemVp
IHdpZHRoLAorICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAg
ICAgR0xpbnQgdG9sZXJhbmNlLAorICAgICAgICAgICAgICAgICBjb25zdCBhbmdsZTo6R0xDb2xv
ciAmY29sb3IpCit7CisgICAgZm9yIChHTGludCB5eSA9IDA7IHl5IDwgaGVpZ2h0OyArK3l5KQor
ICAgIHsKKyAgICAgICAgZm9yIChHTGludCB4eCA9IDA7IHh4IDwgd2lkdGg7ICsreHgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8gcHggPSB4ICsgeHg7CisgICAgICAgICAgICBj
b25zdCBhdXRvIHB5ID0geSArIHl5OworICAgICAgICAgICAgRVhQRUNUX1BJWEVMX05FQVIocHgs
IHB5LCBjb2xvci5SLCBjb2xvci5HLCBjb2xvci5CLCBjb2xvci5BLCB0b2xlcmFuY2UpOworICAg
ICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgRXhwZWN0RXF1YWxN
YXRyaXgoY29uc3QgR0xmbG9hdCAqZXhwZWN0ZWQsIGNvbnN0IEdMZmxvYXQgKmFjdHVhbCkKK3sK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDE2OyArK2kpCisgICAgeworICAgICAgICBFWFBF
Q1RfRVEoZXhwZWN0ZWRbaV0sIGFjdHVhbFtpXSk7CisgICAgfQorfQorCit2b2lkIEV4cGVjdEVx
dWFsTWF0cml4KGNvbnN0IEdMZmxvYXQgKmV4cGVjdGVkLCBjb25zdCBHTGludCAqYWN0dWFsKQor
eworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTY7ICsraSkKKyAgICB7CisgICAgICAgIEVY
UEVDVF9FUShzdGF0aWNfY2FzdDxHTGludD4oc3RkOjpyb3VuZGYoZXhwZWN0ZWRbaV0pKSwgYWN0
dWFsW2ldKTsKKyAgICB9Cit9CisKK2NvbnN0IGludCBrUmVzb2x1dGlvbiA9IDMwMDsKKworY2xh
c3MgQ0hST01JVU1QYXRoUmVuZGVyaW5nVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJv
dGVjdGVkOgorICAgIENIUk9NSVVNUGF0aFJlbmRlcmluZ1Rlc3QoKQorICAgIHsKKyAgICAgICAg
c2V0V2luZG93V2lkdGgoa1Jlc29sdXRpb24pOworICAgICAgICBzZXRXaW5kb3dIZWlnaHQoa1Jl
c29sdXRpb24pOworICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOworICAgICAgICBzZXRDb25m
aWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOworICAgICAgICBz
ZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0RlcHRoQml0cyg4KTsKKyAg
ICAgICAgc2V0Q29uZmlnU3RlbmNpbEJpdHMoOCk7CisgICAgfQorCisgICAgYm9vbCBpc0FwcGxp
Y2FibGUoKSBjb25zdCB7IHJldHVybiBleHRlbnNpb25FbmFibGVkKCJHTF9DSFJPTUlVTV9wYXRo
X3JlbmRlcmluZyIpOyB9CisKKyAgICB2b2lkIHRyeUFsbERyYXdGdW5jdGlvbnMoR0x1aW50IHBh
dGgsIEdMZW51bSBlcnIpCisgICAgeworICAgICAgICBnbFN0ZW5jaWxGaWxsUGF0aENIUk9NSVVN
KHBhdGgsIEdMX0NPVU5UX1VQX0NIUk9NSVVNLCAweDdGKTsKKyAgICAgICAgRVhQRUNUX0dMX0VS
Uk9SKGVycik7CisKKyAgICAgICAgZ2xTdGVuY2lsRmlsbFBhdGhDSFJPTUlVTShwYXRoLCBHTF9D
T1VOVF9ET1dOX0NIUk9NSVVNLCAweDdGKTsKKyAgICAgICAgRVhQRUNUX0dMX0VSUk9SKGVycik7
CisKKyAgICAgICAgZ2xTdGVuY2lsU3Ryb2tlUGF0aENIUk9NSVVNKHBhdGgsIDB4ODAsIDB4ODAp
OworICAgICAgICBFWFBFQ1RfR0xfRVJST1IoZXJyKTsKKworICAgICAgICBnbENvdmVyRmlsbFBh
dGhDSFJPTUlVTShwYXRoLCBHTF9CT1VORElOR19CT1hfQ0hST01JVU0pOworICAgICAgICBFWFBF
Q1RfR0xfRVJST1IoZXJyKTsKKworICAgICAgICBnbENvdmVyU3Ryb2tlUGF0aENIUk9NSVVNKHBh
dGgsIEdMX0JPVU5ESU5HX0JPWF9DSFJPTUlVTSk7CisgICAgICAgIEVYUEVDVF9HTF9FUlJPUihl
cnIpOworCisgICAgICAgIGdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlVTShwYXRo
LCAweDgwLCAweDgwLCBHTF9CT1VORElOR19CT1hfQ0hST01JVU0pOworICAgICAgICBFWFBFQ1Rf
R0xfRVJST1IoZXJyKTsKKworICAgICAgICBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENIUk9N
SVVNKHBhdGgsIEdMX0NPVU5UX1VQX0NIUk9NSVVNLCAweDdGLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0JPVU5ESU5HX0JPWF9DSFJPTUlVTSk7CisgICAg
ICAgIEVYUEVDVF9HTF9FUlJPUihlcnIpOworICAgIH0KK307CisKKy8vIFRlc3Qgc2V0dGluZyBh
bmQgZ2V0dGluZyBvZiBwYXRoIHJlbmRlcmluZyBtYXRyaWNlcy4KK1RFU1RfUChDSFJPTUlVTVBh
dGhSZW5kZXJpbmdUZXN0LCBUZXN0TWF0cml4KQoreworICAgIGlmICghaXNBcHBsaWNhYmxlKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIHN0YXRpYyBjb25zdCBHTGZsb2F0IGtJZGVudGl0eU1h
dHJpeFsxNl0gPSB7MS4wZiwgMC4wZiwgMC4wZiwgMC4wZiwgMC4wZiwgMS4wZiwgMC4wZiwgMC4w
ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMGYs
IDAuMGYsIDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYsIDEuMGZ9OworCisgICAgc3RhdGlj
IGNvbnN0IEdMZmxvYXQga1NlcU1hdHJpeFsxNl0gPSB7MC41ZiwgICAtMC41ZiwgIC0wLjFmLCAg
LTAuOGYsIDQuNGYsICAgNS41ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA2LjZmLCAgIDcuN2YsICAgOC44ZiwgICA5LjlmLCAgMTAuMTFmLCAxMS4yMmYsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuMzNmLCAxMy40NGYs
IDE0LjU1ZiwgMTUuNjZmfTsKKworICAgIHN0YXRpYyBjb25zdCBHTGVudW0ga01hdHJpeE1vZGVz
W10gPSB7R0xfUEFUSF9NT0RFTFZJRVdfQ0hST01JVU0sIEdMX1BBVEhfUFJPSkVDVElPTl9DSFJP
TUlVTX07CisKKyAgICBzdGF0aWMgY29uc3QgR0xlbnVtIGtHZXRNYXRyaXhNb2Rlc1tdID0ge0dM
X1BBVEhfTU9ERUxWSUVXX01BVFJJWF9DSFJPTUlVTSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1BBVEhfUFJPSkVDVElPTl9NQVRSSVhfQ0hST01JVU19
OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAyOyArK2kpCisgICAgeworICAgICAgICBH
TGZsb2F0IG1mWzE2XTsKKyAgICAgICAgR0xpbnQgbWlbMTZdOworICAgICAgICBzdGQ6Om1lbXNl
dChtZiwgMCwgc2l6ZW9mKG1mKSk7CisgICAgICAgIHN0ZDo6bWVtc2V0KG1pLCAwLCBzaXplb2Yo
bWkpKTsKKyAgICAgICAgZ2xHZXRGbG9hdHYoa0dldE1hdHJpeE1vZGVzW2ldLCBtZik7CisgICAg
ICAgIGdsR2V0SW50ZWdlcnYoa0dldE1hdHJpeE1vZGVzW2ldLCBtaSk7CisgICAgICAgIEV4cGVj
dEVxdWFsTWF0cml4KGtJZGVudGl0eU1hdHJpeCwgbWYpOworICAgICAgICBFeHBlY3RFcXVhbE1h
dHJpeChrSWRlbnRpdHlNYXRyaXgsIG1pKTsKKworICAgICAgICBnbE1hdHJpeExvYWRmQ0hST01J
VU0oa01hdHJpeE1vZGVzW2ldLCBrU2VxTWF0cml4KTsKKyAgICAgICAgc3RkOjptZW1zZXQobWYs
IDAsIHNpemVvZihtZikpOworICAgICAgICBzdGQ6Om1lbXNldChtaSwgMCwgc2l6ZW9mKG1pKSk7
CisgICAgICAgIGdsR2V0RmxvYXR2KGtHZXRNYXRyaXhNb2Rlc1tpXSwgbWYpOworICAgICAgICBn
bEdldEludGVnZXJ2KGtHZXRNYXRyaXhNb2Rlc1tpXSwgbWkpOworICAgICAgICBFeHBlY3RFcXVh
bE1hdHJpeChrU2VxTWF0cml4LCBtZik7CisgICAgICAgIEV4cGVjdEVxdWFsTWF0cml4KGtTZXFN
YXRyaXgsIG1pKTsKKworICAgICAgICBnbE1hdHJpeExvYWRJZGVudGl0eUNIUk9NSVVNKGtNYXRy
aXhNb2Rlc1tpXSk7CisgICAgICAgIHN0ZDo6bWVtc2V0KG1mLCAwLCBzaXplb2YobWYpKTsKKyAg
ICAgICAgc3RkOjptZW1zZXQobWksIDAsIHNpemVvZihtaSkpOworICAgICAgICBnbEdldEZsb2F0
dihrR2V0TWF0cml4TW9kZXNbaV0sIG1mKTsKKyAgICAgICAgZ2xHZXRJbnRlZ2VydihrR2V0TWF0
cml4TW9kZXNbaV0sIG1pKTsKKyAgICAgICAgRXhwZWN0RXF1YWxNYXRyaXgoa0lkZW50aXR5TWF0
cml4LCBtZik7CisgICAgICAgIEV4cGVjdEVxdWFsTWF0cml4KGtJZGVudGl0eU1hdHJpeCwgbWkp
OworCisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIH0KK30KKworLy8gVGVzdCB0
aGF0IHRyeWluZyB0byBzZXQgaW5jb3JyZWN0IG1hdHJpeCB0YXJnZXQgcmVzdWx0cworLy8gaW4g
YSBHTCBlcnJvci4KK1RFU1RfUChDSFJPTUlVTVBhdGhSZW5kZXJpbmdUZXN0LCBUZXN0TWF0cml4
RXJyb3JzKQoreworICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEdMZmxvYXQgbWZbMTZdOworICAgIHN0ZDo6bWVtc2V0KG1mLCAwLCBzaXplb2YobWYpKTsK
KworICAgIGdsTWF0cml4TG9hZGZDSFJPTUlVTShHTF9QQVRIX01PREVMVklFV19DSFJPTUlVTSwg
bWYpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xNYXRyaXhMb2FkSWRlbnRp
dHlDSFJPTUlVTShHTF9QQVRIX1BST0pFQ1RJT05fQ0hST01JVU0pOworICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOworCisgICAgLy8gVGVzdCB0aGF0IGludmFsaWQgbWF0cml4IHRhcmdldHMgZmFp
bC4KKyAgICBnbE1hdHJpeExvYWRmQ0hST01JVU0oR0xfUEFUSF9NT0RFTFZJRVdfQ0hST01JVU0g
LSAxLCBtZik7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7CisKKyAgICAv
LyBUZXN0IHRoYXQgaW52YWxpZCBtYXRyaXggdGFyZ2V0cyBmYWlsLgorICAgIGdsTWF0cml4TG9h
ZElkZW50aXR5Q0hST01JVU0oR0xfUEFUSF9QUk9KRUNUSU9OX0NIUk9NSVVNICsgMSk7CisgICAg
RVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Cit9CisKKy8vIFRlc3QgYmFzaWMgcGF0
aCBjcmVhdGUgYW5kIGRlbGV0ZS4KK1RFU1RfUChDSFJPTUlVTVBhdGhSZW5kZXJpbmdUZXN0LCBU
ZXN0R2VuRGVsZXRlKQoreworICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIFRoaXMgaXMgdW5zcGVjaWZpZWQgaW4gTlZfcGF0aF9yZW5kZXJpbmcuCisg
ICAgRVhQRUNUX0VRKDB1LCBnbEdlblBhdGhzQ0hST01JVU0oMCkpOworICAgIEVYUEVDVF9HTF9F
UlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKKworICAgIEdMdWludCBwYXRoID0gZ2xHZW5QYXRoc0NI
Uk9NSVVNKDEpOworICAgIEVYUEVDVF9ORSgwdSwgcGF0aCk7CisgICAgZ2xEZWxldGVQYXRoc0NI
Uk9NSVVNKHBhdGgsIDEpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgR0x1aW50
IGZpcnN0X3BhdGggPSBnbEdlblBhdGhzQ0hST01JVU0oNSk7CisgICAgRVhQRUNUX05FKDB1LCBm
aXJzdF9wYXRoKTsKKyAgICBnbERlbGV0ZVBhdGhzQ0hST01JVU0oZmlyc3RfcGF0aCwgNSk7Cisg
ICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBUZXN0IGRlbGV0aW5nIHBhdGhzIHRo
YXQgYXJlIG5vdCBhY3R1YWxseSBhbGxvY2F0ZWQ6CisgICAgLy8gInVudXNlZCBuYW1lcyBpbiAv
cGF0aHMvIGFyZSBzaWxlbnRseSBpZ25vcmVkIi4KKyAgICBmaXJzdF9wYXRoID0gZ2xHZW5QYXRo
c0NIUk9NSVVNKDUpOworICAgIEVYUEVDVF9ORSgwdSwgZmlyc3RfcGF0aCk7CisgICAgZ2xEZWxl
dGVQYXRoc0NIUk9NSVVNKGZpcnN0X3BhdGgsIDYpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigp
OworCisgICAgR0xzaXplaSBiaWdfcmFuZ2UgPSAweGZmZmY7CisgICAgZmlyc3RfcGF0aCA9IGds
R2VuUGF0aHNDSFJPTUlVTShiaWdfcmFuZ2UpOworICAgIEVYUEVDVF9ORSgwdSwgZmlyc3RfcGF0
aCk7CisgICAgZ2xEZWxldGVQYXRoc0NIUk9NSVVNKGZpcnN0X3BhdGgsIGJpZ19yYW5nZSk7Cisg
ICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBUZXN0IGdsSXNQYXRoQ0hST01JVU0o
KS4gQSBwYXRoIG9iamVjdCBpcyBub3QgY29uc2lkZXJlZCBhIHBhdGggdW50aWxsCisgICAgLy8g
aXQgaGFzIGFjdHVhbGx5IGJlZW4gc3BlY2lmaWVkIHdpdGggYSBwYXRoIGRhdGEuCisKKyAgICBw
YXRoID0gZ2xHZW5QYXRoc0NIUk9NSVVNKDEpOworICAgIEFTU0VSVF9UUlVFKGdsSXNQYXRoQ0hS
T01JVU0ocGF0aCkgPT0gR0xfRkFMU0UpOworCisgICAgLy8gc3BlY2lmeSB0aGUgZGF0YS4KKyAg
ICBHTHVieXRlIGNvbW1hbmRzW10gPSB7R0xfTU9WRV9UT19DSFJPTUlVTSwgR0xfQ0xPU0VfUEFU
SF9DSFJPTUlVTX07CisgICAgR0xmbG9hdCBjb29yZHNbXSA9IHs1MC4wZiwgNTAuMGZ9OworICAg
IGdsUGF0aENvbW1hbmRzQ0hST01JVU0ocGF0aCwgMiwgY29tbWFuZHMsIDIsIEdMX0ZMT0FULCBj
b29yZHMpOworICAgIEFTU0VSVF9UUlVFKGdsSXNQYXRoQ0hST01JVU0ocGF0aCkgPT0gR0xfVFJV
RSk7CisgICAgZ2xEZWxldGVQYXRoc0NIUk9NSVVNKHBhdGgsIDEpOworICAgIEFTU0VSVF9UUlVF
KGdsSXNQYXRoQ0hST01JVU0ocGF0aCkgPT0gR0xfRkFMU0UpOworfQorCisvLyBUZXN0IGluY29y
cmVjdCBwYXRoIGNyZWF0aW9uIGFuZCBkZWxldGlvbiBhbmQgZXhwZWN0IEdMIGVycm9ycy4KK1RF
U1RfUChDSFJPTUlVTVBhdGhSZW5kZXJpbmdUZXN0LCBUZXN0R2VuRGVsZXRlRXJyb3JzKQorewor
ICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEdlblBh
dGhzIC8gRGVsZXRlUGF0aHMgdGVzdHMuCisgICAgLy8gc3RkOjpudW1lcmljX2xpbWl0czxHTHVp
bnQ+OjptYXgoKSBpcyB3cm9uZyBmb3IgR0xzaXplaS4KKyAgICBHTHVpbnQgZmlyc3RfcGF0aCA9
IGdsR2VuUGF0aHNDSFJPTUlVTShzdGQ6Om51bWVyaWNfbGltaXRzPEdMdWludD46Om1heCgpKTsK
KyAgICBFWFBFQ1RfRVEoZmlyc3RfcGF0aCwgMHUpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9J
TlZBTElEX1ZBTFVFKTsKKworICAgIGZpcnN0X3BhdGggPSBnbEdlblBhdGhzQ0hST01JVU0oLTEp
OworICAgIEVYUEVDVF9FUSgwdSwgZmlyc3RfcGF0aCk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdM
X0lOVkFMSURfVkFMVUUpOworCisgICAgZ2xEZWxldGVQYXRoc0NIUk9NSVVNKDEsIC01KTsKKyAg
ICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7CisKKyAgICBmaXJzdF9wYXRoID0g
Z2xHZW5QYXRoc0NIUk9NSVVNKC0xKTsKKyAgICBFWFBFQ1RfRVEoMHUsIGZpcnN0X3BhdGgpOwor
ICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKK30KKworLy8gVGVzdCBzZXR0
aW5nIGFuZCBnZXR0aW5nIHBhdGggcGFyYW1ldGVycy4KK1RFU1RfUChDSFJPTUlVTVBhdGhSZW5k
ZXJpbmdUZXN0LCBUZXN0UGF0aFBhcmFtZXRlcikKK3sKKyAgICBpZiAoIWlzQXBwbGljYWJsZSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBHTHVpbnQgcGF0aCA9IGdsR2VuUGF0aHNDSFJPTUlV
TSgxKTsKKworICAgIC8vIHNwZWNpZnkgdGhlIGRhdGEuCisgICAgR0x1Ynl0ZSBjb21tYW5kc1td
ID0ge0dMX01PVkVfVE9fQ0hST01JVU0sIEdMX0NMT1NFX1BBVEhfQ0hST01JVU19OworICAgIEdM
ZmxvYXQgY29vcmRzW10gPSB7NTAuMGYsIDUwLjBmfTsKKyAgICBnbFBhdGhDb21tYW5kc0NIUk9N
SVVNKHBhdGgsIDIsIGNvbW1hbmRzLCAyLCBHTF9GTE9BVCwgY29vcmRzKTsKKyAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfVFJVRShnbElzUGF0aENIUk9NSVVNKHBhdGgpID09
IEdMX1RSVUUpOworCisgICAgc3RhdGljIGNvbnN0IEdMZW51bSBrRW5kQ2Fwc1tdID0ge0dMX0ZM
QVRfQ0hST01JVU0sIEdMX1NRVUFSRV9DSFJPTUlVTSwgR0xfUk9VTkRfQ0hST01JVU19OworICAg
IGZvciAoc3RkOjpzaXplX3QgaSA9IDA7IGkgPCAzOyArK2kpCisgICAgeworICAgICAgICBHTGlu
dCB4OworICAgICAgICBnbFBhdGhQYXJhbWV0ZXJpQ0hST01JVU0ocGF0aCwgR0xfUEFUSF9FTkRf
Q0FQU19DSFJPTUlVTSwgc3RhdGljX2Nhc3Q8R0xlbnVtPihrRW5kQ2Fwc1tpXSkpOworICAgICAg
ICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICAgICAgZ2xHZXRQYXRoUGFyYW1ldGVyaXZDSFJP
TUlVTShwYXRoLCBHTF9QQVRIX0VORF9DQVBTX0NIUk9NSVVNLCAmeCk7CisgICAgICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOworICAgICAgICBFWFBFQ1RfRVEoa0VuZENhcHNbaV0sIHN0YXRpY19j
YXN0PEdMZW51bT4oeCkpOworCisgICAgICAgIEdMZmxvYXQgZjsKKyAgICAgICAgZ2xQYXRoUGFy
YW1ldGVyZkNIUk9NSVVNKHBhdGgsIEdMX1BBVEhfRU5EX0NBUFNfQ0hST01JVU0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTGZsb2F0PihrRW5kQ2Fwc1so
aSArIDEpICUgM10pKTsKKyAgICAgICAgZ2xHZXRQYXRoUGFyYW1ldGVyZnZDSFJPTUlVTShwYXRo
LCBHTF9QQVRIX0VORF9DQVBTX0NIUk9NSVVNLCAmZik7CisgICAgICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOworICAgICAgICBFWFBFQ1RfRVEoa0VuZENhcHNbKGkgKyAxKSAlIDNdLCBzdGF0aWNf
Y2FzdDxHTGVudW0+KGYpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgR0xlbnVtIGtKb2lu
U3R5bGVzW10gPSB7R0xfTUlURVJfUkVWRVJUX0NIUk9NSVVNLCBHTF9CRVZFTF9DSFJPTUlVTSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUk9VTkRfQ0hST01J
VU19OworICAgIGZvciAoc3RkOjpzaXplX3QgaSA9IDA7IGkgPCAzOyArK2kpCisgICAgeworICAg
ICAgICBHTGludCB4OworICAgICAgICBnbFBhdGhQYXJhbWV0ZXJpQ0hST01JVU0ocGF0aCwgR0xf
UEFUSF9KT0lOX1NUWUxFX0NIUk9NSVVNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8R0xlbnVtPihrSm9pblN0eWxlc1tpXSkpOworICAgICAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKKyAgICAgICAgZ2xHZXRQYXRoUGFyYW1ldGVyaXZDSFJPTUlVTShwYXRo
LCBHTF9QQVRIX0pPSU5fU1RZTEVfQ0hST01JVU0sICZ4KTsKKyAgICAgICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7CisgICAgICAgIEVYUEVDVF9FUShrSm9pblN0eWxlc1tpXSwgc3RhdGljX2Nhc3Q8
R0xlbnVtPih4KSk7CisKKyAgICAgICAgR0xmbG9hdCBmOworICAgICAgICBnbFBhdGhQYXJhbWV0
ZXJmQ0hST01JVU0ocGF0aCwgR0xfUEFUSF9KT0lOX1NUWUxFX0NIUk9NSVVNLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0xmbG9hdD4oa0pvaW5TdHlsZXNb
KGkgKyAxKSAlIDNdKSk7CisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgICAgICBn
bEdldFBhdGhQYXJhbWV0ZXJmdkNIUk9NSVVNKHBhdGgsIEdMX1BBVEhfSk9JTl9TVFlMRV9DSFJP
TUlVTSwgJmYpOworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICAgICAgRVhQRUNU
X0VRKGtKb2luU3R5bGVzWyhpICsgMSkgJSAzXSwgc3RhdGljX2Nhc3Q8R0xlbnVtPihmKSk7Cisg
ICAgfQorCisgICAgeworICAgICAgICBnbFBhdGhQYXJhbWV0ZXJmQ0hST01JVU0ocGF0aCwgR0xf
UEFUSF9TVFJPS0VfV0lEVEhfQ0hST01JVU0sIDUuMGYpOworICAgICAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKKworICAgICAgICBHTGZsb2F0IGY7CisgICAgICAgIGdsR2V0UGF0aFBhcmFtZXRl
cmZ2Q0hST01JVU0ocGF0aCwgR0xfUEFUSF9TVFJPS0VfV0lEVEhfQ0hST01JVU0sICZmKTsKKyAg
ICAgICAgRVhQRUNUX0VRKDUuMGYsIGYpOworICAgIH0KKworICAgIGdsRGVsZXRlUGF0aHNDSFJP
TUlVTShwYXRoLCAxKTsKK30KKworLy8gVGVzdCB0aGF0IHNldHRpbmcgaW5jb3JyZWN0IHBhdGgg
cGFyYW1ldGVyIGdlbmVyYXRlcyBHTCBlcnJvci4KK1RFU1RfUChDSFJPTUlVTVBhdGhSZW5kZXJp
bmdUZXN0LCBUZXN0UGF0aFBhcmFtZXRlckVycm9ycykKK3sKKyAgICBpZiAoIWlzQXBwbGljYWJs
ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBHTHVpbnQgcGF0aCA9IGdsR2VuUGF0aHNDSFJP
TUlVTSgxKTsKKworICAgIC8vIFBhdGhQYXJhbWV0ZXIqOiBXcm9uZyB2YWx1ZSBmb3IgdGhlIHBu
YW1lIHNob3VsZCBmYWlsLgorICAgIGdsUGF0aFBhcmFtZXRlcmlDSFJPTUlVTShwYXRoLCBHTF9Q
QVRIX0pPSU5fU1RZTEVfQ0hST01JVU0sIEdMX0ZMQVRfQ0hST01JVU0pOworICAgIEVYUEVDVF9H
TF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOworCisgICAgZ2xQYXRoUGFyYW1ldGVyZkNIUk9NSVVN
KHBhdGgsIEdMX1BBVEhfRU5EX0NBUFNfQ0hST01JVU0sIEdMX01JVEVSX1JFVkVSVF9DSFJPTUlV
TSk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7CisKKyAgICAvLyBQYXRo
UGFyYW1ldGVyKjogV3JvbmcgZmxvYXRpbmctcG9pbnQgdmFsdWUgc2hvdWxkIGZhaWwuCisgICAg
Z2xQYXRoUGFyYW1ldGVyZkNIUk9NSVVNKHBhdGgsIEdMX1BBVEhfU1RST0tFX1dJRFRIX0NIUk9N
SVVNLCAtMC4xZik7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOworCisg
ICAgLy8gUGF0aFBhcmFtZXRlcio6IFdyb25nIHBuYW1lIHNob3VsZCBmYWlsLgorICAgIGdsUGF0
aFBhcmFtZXRlcmlDSFJPTUlVTShwYXRoLCBHTF9QQVRIX1NUUk9LRV9XSURUSF9DSFJPTUlVTSAt
IDEsIDUpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOworCisgICAgZ2xE
ZWxldGVQYXRoc0NIUk9NSVVNKHBhdGgsIDEpOworfQorCisvLyBUZXN0IGV4cGVjdGVkIHBhdGgg
b2JqZWN0IHN0YXRlLgorVEVTVF9QKENIUk9NSVVNUGF0aFJlbmRlcmluZ1Rlc3QsIFRlc3RQYXRo
T2JqZWN0U3RhdGUpCit7CisgICAgaWYgKCFpc0FwcGxpY2FibGUoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgZ2xWaWV3cG9ydCgwLCAwLCBrUmVzb2x1dGlvbiwga1Jlc29sdXRpb24pOworICAg
IGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKKyAgICBnbFN0ZW5jaWxNYXNr
KDB4ZmZmZmZmZmYpOworICAgIGdsQ2xlYXJTdGVuY2lsKDApOworICAgIGdsQ2xlYXIoR0xfQ09M
T1JfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7CisgICAgZ2xQYXRoU3RlbmNp
bEZ1bmNDSFJPTUlVTShHTF9BTFdBWVMsIDAsIDB4RkYpOworICAgIGdsU3RlbmNpbE9wKEdMX0tF
RVAsIEdMX0tFRVAsIEdMX1pFUk8pOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAg
Ly8gVGVzdCB0aGF0IHRyeWluZyB0byBkcmF3IG5vbi1leGlzdGluZyBwYXRocyBkb2VzIG5vdCBw
cm9kdWNlIGVycm9ycyBvciByZXN1bHRzLgorICAgIEdMdWludCBub25fZXhpc3RpbmdfcGF0aHNb
XSA9IHswLCA1NSwgNzQ3NDR9OworICAgIGZvciAoYXV0byAmcCA6IG5vbl9leGlzdGluZ19wYXRo
cykKKyAgICB7CisgICAgICAgIEVYUEVDVF9UUlVFKGdsSXNQYXRoQ0hST01JVU0ocCkgPT0gR0xf
RkFMU0UpOworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICAgICAgdHJ5QWxsRHJh
d0Z1bmN0aW9ucyhwLCBHTF9OT19FUlJPUik7CisgICAgfQorCisgICAgLy8gUGF0aCBuYW1lIG1h
cmtlZCBhcyB1c2VkIGJ1dCB3aXRob3V0IHBhdGggb2JqZWN0IHN0YXRlIGNhdXNlcworICAgIC8v
IGEgR0wgZXJyb3IgdXBvbiBhbnkgZHJhdyBjb21tYW5kLgorICAgIEdMdWludCBwYXRoID0gZ2xH
ZW5QYXRoc0NIUk9NSVVNKDEpOworICAgIEVYUEVDVF9UUlVFKGdsSXNQYXRoQ0hST01JVU0ocGF0
aCkgPT0gR0xfRkFMU0UpOworICAgIHRyeUFsbERyYXdGdW5jdGlvbnMocGF0aCwgR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOworICAgIGdsRGVsZXRlUGF0aHNDSFJPTUlVTShwYXRoLCAxKTsKKworICAg
IC8vIERvY3VtZW50IGEgYml0IG9mIGFuIGluY29uc2lzdGVuY3k6IHBhdGggbmFtZSBtYXJrZWQg
YXMgdXNlZCBidXQgd2l0aG91dAorICAgIC8vIHBhdGggb2JqZWN0IHN0YXRlIGNhdXNlcyBhIEdM
IGVycm9yIHVwb24gYW55IGRyYXcgY29tbWFuZCAodGVzdGVkIGFib3ZlKS4KKyAgICAvLyBQYXRo
IG5hbWUgdGhhdCBoYWQgcGF0aCBvYmplY3Qgc3RhdGUsIGJ1dCB0aGVuIHdhcyAiY2xlYXJlZCIs
IHN0aWxsIGhhcyBhCisgICAgLy8gcGF0aCBvYmplY3Qgc3RhdGUsIGV2ZW4gdGhvdWdoIHRoZSBz
dGF0ZSBpcyBlbXB0eS4KKyAgICBwYXRoID0gZ2xHZW5QYXRoc0NIUk9NSVVNKDEpOworICAgIEVY
UEVDVF9UUlVFKGdsSXNQYXRoQ0hST01JVU0ocGF0aCkgPT0gR0xfRkFMU0UpOworCisgICAgR0x1
Ynl0ZSBjb21tYW5kc1tdID0ge0dMX01PVkVfVE9fQ0hST01JVU0sIEdMX0NMT1NFX1BBVEhfQ0hS
T01JVU19OworICAgIEdMZmxvYXQgY29vcmRzW10gPSB7NTAuMGYsIDUwLjBmfTsKKyAgICBnbFBh
dGhDb21tYW5kc0NIUk9NSVVNKHBhdGgsIDIsIGNvbW1hbmRzLCAyLCBHTF9GTE9BVCwgY29vcmRz
KTsKKyAgICBFWFBFQ1RfVFJVRShnbElzUGF0aENIUk9NSVVNKHBhdGgpID09IEdMX1RSVUUpOwor
CisgICAgZ2xQYXRoQ29tbWFuZHNDSFJPTUlVTShwYXRoLCAwLCBOVUxMLCAwLCBHTF9GTE9BVCwg
TlVMTCk7CisgICAgRVhQRUNUX1RSVUUoZ2xJc1BhdGhDSFJPTUlVTShwYXRoKSA9PSBHTF9UUlVF
KTsgIC8vIFRoZSBzdXJwcmlzZS4KKworICAgIHRyeUFsbERyYXdGdW5jdGlvbnMocGF0aCwgR0xf
Tk9fRVJST1IpOworICAgIGdsRGVsZXRlUGF0aHNDSFJPTUlVTShwYXRoLCAxKTsKKworICAgIC8v
IE1ha2Ugc3VyZSBub3RoaW5nIGdvdCBkcmF3biBieSB0aGUgZHJhd2luZyBjb21tYW5kcyB0aGF0
IHNob3VsZCBub3QgcHJvZHVjZQorICAgIC8vIGFueXRoaW5nLgorICAgIGNvbnN0IGFuZ2xlOjpH
TENvbG9yIGJsYWNrID0gezAsIDAsIDAsIDB9OworICAgIEVYUEVDVF9UUlVFKENoZWNrUGl4ZWxz
KDAsIDAsIGtSZXNvbHV0aW9uLCBrUmVzb2x1dGlvbiwgMCwgYmxhY2spKTsKK30KKworLy8gVGVz
dCB0aGF0IHRyeWluZyB0byB1c2UgcGF0aCBvYmplY3QgdGhhdCBkb2Vzbid0IGV4aXN0IGdlbmVy
YXRlcworLy8gYSBHTCBlcnJvci4KK1RFU1RfUChDSFJPTUlVTVBhdGhSZW5kZXJpbmdUZXN0LCBU
ZXN0VW5uYW1lZFBhdGhzRXJyb3JzKQoreworICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIFVubmFtZWQgcGF0aHM6IFRyeWluZyB0byBjcmVhdGUgYSBw
YXRoIG9iamVjdCB3aXRoIG5vbi1leGlzdGluZyBwYXRoIG5hbWUKKyAgICAvLyBwcm9kdWNlcyBl
cnJvci4gIChOb3QgYSBlcnJvciBpbiByZWFsIE5WX3BhdGhfcmVuZGVyaW5nKS4KKyAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKKyAgICBHTHVieXRlIGNvbW1hbmRzW10gPSB7R0xfTU9WRV9UT19D
SFJPTUlVTSwgR0xfQ0xPU0VfUEFUSF9DSFJPTUlVTX07CisgICAgR0xmbG9hdCBjb29yZHNbXSA9
IHs1MC4wZiwgNTAuMGZ9OworICAgIGdsUGF0aENvbW1hbmRzQ0hST01JVU0oNTU1LCAyLCBjb21t
YW5kcywgMiwgR0xfRkxPQVQsIGNvb3Jkcyk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKKworICAgIC8vIFBhdGhQYXJhbWV0ZXIqOiBVc2luZyBub24tZXhpc3Rp
bmcgcGF0aCBvYmplY3QgcHJvZHVjZXMgZXJyb3IuCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
CisgICAgZ2xQYXRoUGFyYW1ldGVyZkNIUk9NSVVNKDU1NSwgR0xfUEFUSF9TVFJPS0VfV0lEVEhf
Q0hST01JVU0sIDUuMGYpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElP
Tik7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICBnbFBhdGhQYXJhbWV0ZXJpQ0hS
T01JVU0oNTU1LCBHTF9QQVRIX0pPSU5fU1RZTEVfQ0hST01JVU0sIEdMX1JPVU5EX0NIUk9NSVVN
KTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCisvLyBU
ZXN0IHRoYXQgc2V0dGluZyBpbmNvcnJlY3QgcGF0aCBkYXRhIGdlbmVyYXRlcyBhIEdMIGVycm9y
LgorVEVTVF9QKENIUk9NSVVNUGF0aFJlbmRlcmluZ1Rlc3QsIFRlc3RQYXRoQ29tbWFuZHNFcnJv
cnMpCit7CisgICAgaWYgKCFpc0FwcGxpY2FibGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
c3RhdGljIGNvbnN0IEdMZW51bSBrSW52YWxpZENvb3JkVHlwZSA9IEdMX05PTkU7CisKKyAgICBH
THVpbnQgcGF0aCAgICAgICAgPSBnbEdlblBhdGhzQ0hST01JVU0oMSk7CisgICAgR0x1Ynl0ZSBj
b21tYW5kc1tdID0ge0dMX01PVkVfVE9fQ0hST01JVU0sIEdMX0NMT1NFX1BBVEhfQ0hST01JVU19
OworICAgIEdMZmxvYXQgY29vcmRzW10gICA9IHs1MC4wZiwgNTAuMGZ9OworCisgICAgZ2xQYXRo
Q29tbWFuZHNDSFJPTUlVTShwYXRoLCAyLCBjb21tYW5kcywgLTQsIEdMX0ZMT0FULCBjb29yZHMp
OworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKKworICAgIGdsUGF0aENv
bW1hbmRzQ0hST01JVU0ocGF0aCwgLTEsIGNvbW1hbmRzLCAyLCBHTF9GTE9BVCwgY29vcmRzKTsK
KyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7CisKKyAgICBnbFBhdGhDb21t
YW5kc0NIUk9NSVVNKHBhdGgsIDIsIGNvbW1hbmRzLCAyLCBrSW52YWxpZENvb3JkVHlwZSwgY29v
cmRzKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKKworICAgIC8vIGlu
Y29ycmVjdCBudW1iZXIgb2YgY29vcmRpbmF0ZXMKKyAgICBnbFBhdGhDb21tYW5kc0NIUk9NSVVN
KHBhdGgsIDIsIGNvbW1hbmRzLCBzdGQ6Om51bWVyaWNfbGltaXRzPEdMc2l6ZWk+OjptYXgoKSwg
R0xfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29yZHMpOworICAgIEVYUEVD
VF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKKworICAgIC8vIFRoaXMgc2hvdWxkIGZhaWwg
ZHVlIHRvIGNtZCBjb3VudCArIGNvb3JkIGNvdW50ICogc2hvcnQgc2l6ZS4KKyAgICBnbFBhdGhD
b21tYW5kc0NIUk9NSVVNKHBhdGgsIDIsIGNvbW1hbmRzLCBzdGQ6Om51bWVyaWNfbGltaXRzPEdM
c2l6ZWk+OjptYXgoKSwgR0xfU0hPUlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29y
ZHMpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7CisKKyAgICBn
bERlbGV0ZVBhdGhzQ0hST01JVU0ocGF0aCwgMSk7Cit9CisKKy8vIFRlc3QgdGhhdCB0cnlpbmcg
dG8gcmVuZGVyIGEgcGF0aCB3aXRoIGludmFsaWQgYXJndW1lbnRzCisvLyBnZW5lcmF0ZXMgYSBH
TCBlcnJvci4KK1RFU1RfUChDSFJPTUlVTVBhdGhSZW5kZXJpbmdUZXN0LCBUZXN0UGF0aFJlbmRl
cmluZ0ludmFsaWRBcmdzKQoreworICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIEdMdWludCBwYXRoID0gZ2xHZW5QYXRoc0NIUk9NSVVNKDEpOworICAgIGds
UGF0aENvbW1hbmRzQ0hST01JVU0ocGF0aCwgMCwgTlVMTCwgMCwgR0xfRkxPQVQsIE5VTEwpOwor
CisgICAgLy8gVmVyaWZ5IHRoYXQgbm9ybWFsIGNhbGxzIHdvcmsuCisgICAgZ2xTdGVuY2lsRmls
bFBhdGhDSFJPTUlVTShwYXRoLCBHTF9DT1VOVF9VUF9DSFJPTUlVTSwgMHg3Rik7CisgICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7CisgICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlV
TShwYXRoLCBHTF9DT1VOVF9VUF9DSFJPTUlVTSwgMHg3RiwgR0xfQk9VTkRJTkdfQk9YX0NIUk9N
SVVNKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIFVzaW5nIGludmFsaWQg
ZmlsbCBtb2RlIGNhdXNlcyBJTlZBTElEX0VOVU0uCisgICAgZ2xTdGVuY2lsRmlsbFBhdGhDSFJP
TUlVTShwYXRoLCBHTF9DT1VOVF9VUF9DSFJPTUlVTSAtIDEsIDB4N0YpOworICAgIEVYUEVDVF9H
TF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOworICAgIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRo
Q0hST01JVU0ocGF0aCwgR0xfQ09VTlRfVVBfQ0hST01JVU0gLSAxLCAweDdGLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQk9VTkRJTkdfQk9YX0NIUk9NSVVNKTsK
KyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKKworICAgIC8vIFVzaW5nIGlu
dmFsaWQgY292ZXIgbW9kZSBjYXVzZXMgSU5WQUxJRF9FTlVNLgorICAgIGdsQ292ZXJGaWxsUGF0
aENIUk9NSVVNKHBhdGgsIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNIC0gMSk7CisgICAgRVhQRUNU
X0VRKHN0YXRpY19jYXN0PEdMZW51bT4oR0xfSU5WQUxJRF9FTlVNKSwgZ2xHZXRFcnJvcigpKTsK
KyAgICBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNKHBhdGgsIEdMX0NPVU5UX1VQ
X0NIUk9NSVVNLCAweDdGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfQk9VTkRJTkdfQk9YX0NIUk9NSVVNICsgMSk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lO
VkFMSURfRU5VTSk7CisKKyAgICAvLyBVc2luZyBtYXNrKzEgbm90IGJlaW5nIHBvd2VyIG9mIHR3
byBjYXVzZXMgSU5WQUxJRF9WQUxVRSB3aXRoIHVwL2Rvd24gZmlsbCBtb2RlCisgICAgZ2xTdGVu
Y2lsRmlsbFBhdGhDSFJPTUlVTShwYXRoLCBHTF9DT1VOVF9VUF9DSFJPTUlVTSwgMHg0MCk7Cisg
ICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOworCisgICAgZ2xTdGVuY2lsVGhl
bkNvdmVyRmlsbFBhdGhDSFJPTUlVTShwYXRoLCBHTF9DT1VOVF9ET1dOX0NIUk9NSVVNLCAxMiwg
R0xfQk9VTkRJTkdfQk9YX0NIUk9NSVVNKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJ
RF9WQUxVRSk7CisKKyAgICAvLyBjaGVjayBpbmNvcnJlY3QgaW5zdGFuY2UgcGFyYW1ldGVycy4K
KworICAgIC8vIENvdmVyRmlsbFBhdGhJbnN0YW5jZWQKKyAgICB7CisgICAgICAgIGdsQ292ZXJG
aWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKC0xLCBHTF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLCBH
TF9DT05WRVhfSFVMTF9DSFJPTUlVTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfTk9ORSwgTlVMTCk7CisgICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZB
TElEX1ZBTFVFKTsKKworICAgICAgICBnbENvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSgx
LCBHTF9GTE9BVCwgJnBhdGgsIDAsIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNLCBHTF9OT05FLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAg
RVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7CisKKyAgICAgICAgZ2xDb3ZlckZpbGxQ
YXRoSW5zdGFuY2VkQ0hST01JVU0oMSwgR0xfVU5TSUdORURfSU5ULCBOVUxMLCAwLCBHTF9DT05W
RVhfSFVMTF9DSFJPTUlVTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfTk9ORSwgTlVMTCk7CisgICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZB
TFVFKTsKKworICAgICAgICBnbENvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9V
TlNJR05FRF9JTlQsICZwYXRoLCAwLCBHTF9VTlNJR05FRF9JTlQsIEdMX05PTkUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICBFWFBFQ1Rf
R0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKKworICAgICAgICBnbENvdmVyRmlsbFBhdGhJbnN0
YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLCBHTF9DT05WRVhfSFVM
TF9DSFJPTUlVTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
VU5TSUdORURfSU5ULCBOVUxMKTsKKyAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURf
RU5VTSk7CisKKyAgICAgICAgZ2xDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oMSwgR0xf
VU5TSUdORURfSU5ULCAmcGF0aCwgMCwgR0xfQ09OVkVYX0hVTExfQ0hST01JVU0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1RSQU5TTEFURV9YX0NIUk9NSVVN
LCBOVUxMKTsKKyAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOworICAg
IH0KKworICAgIC8vIENvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZAorICAgIHsKKyAgICAgICAgZ2xD
b3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSgtMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0
aCwgMCwgR0xfQ09OVkVYX0hVTExfQ0hST01JVU0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfTk9ORSwgTlVMTCk7CisgICAgICAgIEVYUEVDVF9HTF9FUlJP
UihHTF9JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICBnbENvdmVyU3Ryb2tlUGF0aEluc3RhbmNl
ZENIUk9NSVVNKDEsIEdMX0ZMT0FULCAmcGF0aCwgMCwgR0xfQ09OVkVYX0hVTExfQ0hST01JVU0s
IEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVM
TCk7CisgICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOworCisgICAgICAg
IGdsQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oMSwgR0xfVU5TSUdORURfSU5ULCBO
VUxMLCAwLCBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9OT05FLCBOVUxMKTsKKyAgICAgICAgRVhQRUNUX0dMX0VS
Uk9SKEdMX0lOVkFMSURfVkFMVUUpOworCisgICAgICAgIGdsQ292ZXJTdHJva2VQYXRoSW5zdGFu
Y2VkQ0hST01JVU0oMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aCwgMCwgR0xfVU5TSUdORURfSU5U
LCBHTF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5V
TEwpOworICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKKworICAgICAg
ICBnbENvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwg
JnBhdGgsIDAsIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgTlVMTCk7CisgICAgICAgIEVY
UEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOworCisgICAgICAgIGdsQ292ZXJTdHJva2VQ
YXRoSW5zdGFuY2VkQ0hST01JVU0oMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aCwgMCwgR0xfQ09O
VkVYX0hVTExfQ0hST01JVU0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfVFJBTlNMQVRFX1hfQ0hST01JVU0sIE5VTEwpOworICAgICAgICBFWFBFQ1RfR0xf
RVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgfQorCisgICAgLy8gU3RlbmNpbEZpbGxQYXRo
SW5zdGFuY2VkCisgICAgeworICAgICAgICBnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9N
SVVNKC0xLCBHTF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLCBHTF9DT1VOVF9VUF9DSFJPTUlVTSwg
MHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUs
IE5VTEwpOworICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7CisKKyAg
ICAgICAgZ2xTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9GTE9BVCwgJnBh
dGgsIDAsIEdMX0NPVU5UX1VQX0NIUk9NSVVNLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwgTlVMTCk7CisgICAgICAgIEVYUEVDVF9HTF9F
UlJPUihHTF9JTlZBTElEX0VOVU0pOworCisgICAgICAgIGdsU3RlbmNpbEZpbGxQYXRoSW5zdGFu
Y2VkQ0hST01JVU0oMSwgR0xfVU5TSUdORURfSU5ULCBOVUxMLCAwLCBHTF9DT1VOVF9VUF9DSFJP
TUlVTSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X05PTkUsIE5VTEwpOworICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7
CisKKyAgICAgICAgZ2xTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJ
R05FRF9JTlQsICZwYXRoLCAwLCBHTF9VTlNJR05FRF9JTlQsIDB4MCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLCBOVUxMKTsKKyAgICAgICAgRVhQ
RUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7CisKKyAgICAgICAgZ2xTdGVuY2lsRmlsbFBh
dGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLCBHTF9DT1VO
VF9VUF9DSFJPTUlVTSwgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX05PTkUsIE5VTEwpOworICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJ
RF9WQUxVRSk7CisKKyAgICAgICAgZ2xTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSgx
LCBHTF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLCBHTF9DT1VOVF9VUF9DSFJPTUlVTSwgMHgwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lO
VCwgTlVMTCk7CisgICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOworCisg
ICAgICAgIGdsU3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oMSwgR0xfVU5TSUdORURf
SU5ULCAmcGF0aCwgMCwgR0xfQ09VTlRfVVBfQ0hST01JVU0sIDB4MCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9UUkFOU0xBVEVfWF9DSFJPTUlVTSwgTlVM
TCk7CisgICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICB9CisK
KyAgICAvLyBTdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZAorICAgIHsKKyAgICAgICAgZ2xTdGVu
Y2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKC0xLCBHTF9VTlNJR05FRF9JTlQsICZwYXRo
LCAwLCAweDAwLCAweDAwLCBHTF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElE
X1ZBTFVFKTsKKworICAgICAgICBnbFN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0o
MSwgR0xfRkxPQVQsICZwYXRoLCAwLCAweDAwLCAweDAwLCBHTF9OT05FLCBOVUxMKTsKKyAgICAg
ICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7CisKKyAgICAgICAgZ2xTdGVuY2ls
U3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgbnVsbHB0ciwg
MCwgMHgwMCwgMHgwMCwgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5VTEwpOworICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9W
QUxVRSk7CisKKyAgICAgICAgZ2xTdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKDEs
IEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsIDB4MDAsIDB4MDAsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsIE5VTEwpOworICAg
ICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKKworICAgICAgICBnbFN0ZW5j
aWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aCwg
MCwgMHgwMCwgMHgwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1RSQU5TTEFURV9YX0NIUk9NSVVNLCBOVUxMKTsKKyAgICAgICAgRVhQRUNUX0dMX0VS
Uk9SKEdMX0lOVkFMSURfVkFMVUUpOworICAgIH0KKworICAgIC8vIFN0ZW5jaWxUaGVuQ292ZXJG
aWxsUGF0aEluc3RhbmNlZAorICAgIHsKKyAgICAgICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBh
dGhJbnN0YW5jZWRDSFJPTUlVTSgtMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aCwgMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT1VOVF9V
UF9DSFJPTUlVTSwgMCwgR0xfQ09VTlRfVVBfQ0hST01JVU0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwgTlVMTCk7CisgICAgICAg
IEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICBnbFN0ZW5jaWxU
aGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX0ZMT0FULCAmcGF0aCwgMCwg
R0xfQ09OVkVYX0hVTExfQ0hST01JVU0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMCwgR0xfQ09VTlRfVVBfQ0hST01JVU0sIEdMX05PTkUsIE5V
TEwpOworICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKKworICAgICAg
ICBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lH
TkVEX0lOVCwgTlVMTCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTSwgMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT1VOVF9VUF9DSFJPTUlV
TSwgR0xfTk9ORSwgTlVMTCk7CisgICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZB
TFVFKTsKKworICAgICAgICBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9N
SVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsIEdMX1VOU0lHTkVEX0lOVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBHTF9DT1VO
VF9VUF9DSFJPTUlVTSwgR0xfTk9ORSwgTlVMTCk7CisgICAgICAgIEVYUEVDVF9HTF9FUlJPUihH
TF9JTlZBTElEX0VOVU0pOworCisgICAgICAgIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5z
dGFuY2VkQ0hST01JVU0oMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aCwgMCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT05WRVhfSFVMTF9D
SFJPTUlVTSwgMCwgR0xfVU5TSUdORURfSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsIE5VTEwpOworICAgICAgICBFWFBFQ1Rf
R0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKKworICAgICAgICBnbFN0ZW5jaWxUaGVuQ292ZXJG
aWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09O
VkVYX0hVTExfQ0hST01JVU0sIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfQ09VTlRfVVBfQ0hST01JVU0sIEdMX0ZMT0FULCBOVUxMKTsK
KyAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7CisKKyAgICAgICAgZ2xT
dGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSgKKyAgICAgICAgICAgIDEs
IEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNLCAwLCBH
TF9DT1VOVF9VUF9DSFJPTUlVTSwKKyAgICAgICAgICAgIEdMX1RSQU5TTEFURV9YX0NIUk9NSVVN
LCBOVUxMKTsKKyAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOworICAg
IH0KKworICAgIC8vIFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkCisgICAgewor
ICAgICAgICBnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oLTEs
IEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09OVkVYX0hVTExfQ0hST01J
VU0sIEdMX05PTkUsIE5VTEwpOworICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9W
QUxVRSk7CisKKyAgICAgICAgZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENI
Uk9NSVVNKDEsIEdMX0ZMT0FULCAmcGF0aCwgMCwgMHgwLCAweDAsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT05WRVhfSFVMTF9DSFJP
TUlVTSwgR0xfTk9ORSwgTlVMTCk7CisgICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElE
X0VOVU0pOworCisgICAgICAgIGdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRD
SFJPTUlVTSgxLCBHTF9VTlNJR05FRF9JTlQsIE5VTEwsIDAsIDB4MCwgMHgwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09OVkVYX0hV
TExfQ0hST01JVU0sIEdMX05PTkUsIE5VTEwpOworICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xf
SU5WQUxJRF9WQUxVRSk7CisKKyAgICAgICAgZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aElu
c3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsIDB4MCwgMHgwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
RkxPQVQsIEdMX05PTkUsIE5VTEwpOworICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJ
RF9FTlVNKTsKKworICAgICAgICBnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2Vk
Q0hST01JVU0oMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aCwgMCwgMHgwLCAweDAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT05WRVhf
SFVMTF9DSFJPTUlVTSwgR0xfRkxPQVQsIE5VTEwpOworICAgICAgICBFWFBFQ1RfR0xfRVJST1Io
R0xfSU5WQUxJRF9FTlVNKTsKKworICAgICAgICBnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRo
SW5zdGFuY2VkQ0hST01JVU0oMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aCwgMCwgMHgwLCAweDAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9DT05WRVhfSFVMTF9DSFJPTUlVTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1RSQU5TTEFURV9YX0NIUk9NSVVNLCBOVUxMKTsKKyAg
ICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOworICAgIH0KKworICAgIGds
RGVsZXRlUGF0aHNDSFJPTUlVTShwYXRoLCAxKTsKK30KKworY29uc3QgR0xmbG9hdCBrUHJvamVj
dGlvbk1hdHJpeFsxNl0gPSB7Mi4wZiAvIGtSZXNvbHV0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMC4wZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAuMGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LjBmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wZiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMGYgLyBrUmVzb2x1dGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMGYsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwLjBmLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMC4wZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAuMGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMS4wZiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMGYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMS4wZiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC0xLjBmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMC4wZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEu
MGZ9OworCitjbGFzcyBDSFJPTUlVTVBhdGhSZW5kZXJpbmdEcmF3VGVzdCA6IHB1YmxpYyBBTkdM
RVRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIENIUk9NSVVNUGF0aFJlbmRlcmluZ0RyYXdUZXN0
KCkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRoKGtSZXNvbHV0aW9uKTsKKyAgICAgICAg
c2V0V2luZG93SGVpZ2h0KGtSZXNvbHV0aW9uKTsKKyAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4
KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAgICBzZXRDb25maWdCbHVl
Qml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAgICAgICBzZXRDb25m
aWdEZXB0aEJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ1N0ZW5jaWxCaXRzKDgpOworICAgIH0K
KworICAgIGJvb2wgaXNBcHBsaWNhYmxlKCkgY29uc3QgeyByZXR1cm4gZXh0ZW5zaW9uRW5hYmxl
ZCgiR0xfQ0hST01JVU1fcGF0aF9yZW5kZXJpbmciKTsgfQorCisgICAgdm9pZCBzZXR1cFN0YXRl
Rm9yVGVzdFBhdHRlcm4oKQorICAgIHsKKyAgICAgICAgZ2xWaWV3cG9ydCgwLCAwLCBrUmVzb2x1
dGlvbiwga1Jlc29sdXRpb24pOworICAgICAgICBnbENsZWFyQ29sb3IoMC4wZiwgMC4wZiwgMC4w
ZiwgMC4wZik7CisgICAgICAgIGdsU3RlbmNpbE1hc2soMHhmZmZmZmZmZik7CisgICAgICAgIGds
Q2xlYXJTdGVuY2lsKDApOworICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBH
TF9TVEVOQ0lMX0JVRkZFUl9CSVQpOworICAgICAgICBnbEVuYWJsZShHTF9TVEVOQ0lMX1RFU1Qp
OworCisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyICprVmVydGV4U2hhZGVyU291cmNlID0KKyAg
ICAgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICAgICAiICBnbF9Qb3NpdGlvbiA9
IHZlYzQoMS4wKTsgXG4iCisgICAgICAgICAgICAifSI7CisKKyAgICAgICAgc3RhdGljIGNvbnN0
IGNoYXIgKmtGcmFnbWVudFNoYWRlclNvdXJjZSA9CisgICAgICAgICAgICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICAgICAidW5pZm9ybSB2ZWM0IGNvbG9yO1xuIgorICAg
ICAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgICAgICIgIGdsX0ZyYWdDb2xvciA9
IGNvbG9yO1xuIgorICAgICAgICAgICAgIn0iOworCisgICAgICAgIEdMdWludCBwcm9ncmFtID0g
Q29tcGlsZVByb2dyYW0oa1ZlcnRleFNoYWRlclNvdXJjZSwga0ZyYWdtZW50U2hhZGVyU291cmNl
KTsKKyAgICAgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0pOworICAgICAgICBtQ29sb3JMb2MgPSBn
bEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiY29sb3IiKTsKKyAgICAgICAgZ2xEZWxldGVQ
cm9ncmFtKHByb2dyYW0pOworCisgICAgICAgIC8vIFNldCB1cCBvcnRob2dvbmFsIHByb2plY3Rp
b24gd2l0aCBuZWFyL2ZhciBwbGFuZSBkaXN0YW5jZSBvZiAyLgorICAgICAgICBnbE1hdHJpeExv
YWRmQ0hST01JVU0oR0xfUEFUSF9QUk9KRUNUSU9OX0NIUk9NSVVNLCBrUHJvamVjdGlvbk1hdHJp
eCk7CisgICAgICAgIGdsTWF0cml4TG9hZElkZW50aXR5Q0hST01JVU0oR0xfUEFUSF9NT0RFTFZJ
RVdfQ0hST01JVU0pOworCisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIH0KKwor
ICAgIHZvaWQgc2V0dXBQYXRoU3RhdGVGb3JUZXN0UGF0dGVybihHTHVpbnQgcGF0aCkKKyAgICB7
CisgICAgICAgIHN0YXRpYyBjb25zdCBHTHVieXRlIGtDb21tYW5kc1tdID0ge0dMX01PVkVfVE9f
Q0hST01JVU0sIEdMX0xJTkVfVE9fQ0hST01JVU0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1FVQURSQVRJQ19DVVJWRV9UT19DSFJPTUlVTSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ1VCSUNfQ1VSVkVfVE9f
Q0hST01JVU0sIEdMX0NMT1NFX1BBVEhfQ0hST01JVU19OworCisgICAgICAgIHN0YXRpYyBjb25z
dCBHTGZsb2F0IGtDb29yZHNbXSA9IHs1MC4wZiwgNTAuMGYsIDc1LjBmLCA3NS4wZiwgMTAwLjBm
LCA2Mi41ZiwgNTAuMGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyNS41ZiwgMC4wZiwgIDYyLjVmLCA1MC4wZiwgNTAuMGYsICAyNS4wZiwgNzUuMGZ9OworCisg
ICAgICAgIGdsUGF0aENvbW1hbmRzQ0hST01JVU0ocGF0aCwgNSwga0NvbW1hbmRzLCAxNCwgR0xf
RkxPQVQsIGtDb29yZHMpOworICAgICAgICBnbFBhdGhQYXJhbWV0ZXJmQ0hST01JVU0ocGF0aCwg
R0xfUEFUSF9TVFJPS0VfV0lEVEhfQ0hST01JVU0sIDUuMGYpOworICAgICAgICBnbFBhdGhQYXJh
bWV0ZXJmQ0hST01JVU0ocGF0aCwgR0xfUEFUSF9NSVRFUl9MSU1JVF9DSFJPTUlVTSwgMS4wZik7
CisgICAgICAgIGdsUGF0aFBhcmFtZXRlcmZDSFJPTUlVTShwYXRoLCBHTF9QQVRIX1NUUk9LRV9C
T1VORF9DSFJPTUlVTSwgLjAyZik7CisgICAgICAgIGdsUGF0aFBhcmFtZXRlcmlDSFJPTUlVTShw
YXRoLCBHTF9QQVRIX0pPSU5fU1RZTEVfQ0hST01JVU0sIEdMX1JPVU5EX0NIUk9NSVVNKTsKKyAg
ICAgICAgZ2xQYXRoUGFyYW1ldGVyaUNIUk9NSVVNKHBhdGgsIEdMX1BBVEhfRU5EX0NBUFNfQ0hS
T01JVU0sIEdMX1NRVUFSRV9DSFJPTUlVTSk7CisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigp
OworICAgIH0KKworICAgIHZvaWQgdmVyaWZ5VGVzdFBhdHRlcm5GaWxsKEdMZmxvYXQgZmx4LCBH
TGZsb2F0IGZseSkKKyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBHTGludCBrRmlsbENvb3Jk
c1tdICA9IHs1NSwgNTQsIDUwLCAyOCwgNjYsIDYzfTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGFu
Z2xlOjpHTENvbG9yIGtCbHVlID0gezAsIDAsIDI1NSwgMjU1fTsKKworICAgICAgICBHTGludCB4
ID0gc3RhdGljX2Nhc3Q8R0xpbnQ+KGZseCk7CisgICAgICAgIEdMaW50IHkgPSBzdGF0aWNfY2Fz
dDxHTGludD4oZmx5KTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDY7IGkgKz0g
MikKKyAgICAgICAgeworICAgICAgICAgICAgR0xpbnQgZnggPSBrRmlsbENvb3Jkc1tpXTsKKyAg
ICAgICAgICAgIEdMaW50IGZ5ID0ga0ZpbGxDb29yZHNbaSArIDFdOworICAgICAgICAgICAgRVhQ
RUNUX1RSVUUoQ2hlY2tQaXhlbHMoeCArIGZ4LCB5ICsgZnksIDEsIDEsIDAsIGtCbHVlKSk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgdm9pZCB2ZXJpZnlUZXN0UGF0dGVybkJnKEdMZmxvYXQgZngs
IEdMZmxvYXQgZnkpCisgICAgeworICAgICAgICBzdGF0aWMgY29uc3QgR0xpbnQga0JhY2tncm91
bmRDb29yZHNbXSAgICAgPSB7ODAsIDgwLCAyMCwgMjAsIDkwLCAxfTsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IGFuZ2xlOjpHTENvbG9yIGtFeHBlY3RlZENvbG9yID0gezAsIDAsIDAsIDB9OworCisg
ICAgICAgIEdMaW50IHggPSBzdGF0aWNfY2FzdDxHTGludD4oZngpOworICAgICAgICBHTGludCB5
ID0gc3RhdGljX2Nhc3Q8R0xpbnQ+KGZ5KTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IDY7IGkgKz0gMikKKyAgICAgICAgeworICAgICAgICAgICAgR0xpbnQgYnggPSBrQmFja2dy
b3VuZENvb3Jkc1tpXTsKKyAgICAgICAgICAgIEdMaW50IGJ5ID0ga0JhY2tncm91bmRDb29yZHNb
aSArIDFdOworICAgICAgICAgICAgRVhQRUNUX1RSVUUoQ2hlY2tQaXhlbHMoeCArIGJ4LCB5ICsg
YnksIDEsIDEsIDAsIGtFeHBlY3RlZENvbG9yKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2
b2lkIHZlcmlmeVRlc3RQYXR0ZXJuU3Ryb2tlKEdMZmxvYXQgZngsIEdMZmxvYXQgZnkpCisgICAg
eworICAgICAgICBHTGludCB4ID0gc3RhdGljX2Nhc3Q8R0xpbnQ+KGZ4KTsKKyAgICAgICAgR0xp
bnQgeSA9IHN0YXRpY19jYXN0PEdMaW50PihmeSk7CisKKyAgICAgICAgLy8gSW5zaWRlIHRoZSBz
dHJva2Ugd2Ugc2hvdWxkIGhhdmUgZ3JlZW4uCisgICAgICAgIHN0YXRpYyBjb25zdCBhbmdsZTo6
R0xDb2xvciBrR3JlZW4gPSB7MCwgMjU1LCAwLCAyNTV9OworICAgICAgICBFWFBFQ1RfVFJVRShD
aGVja1BpeGVscyh4ICsgNTAsIHkgKyA1MywgMSwgMSwgMCwga0dyZWVuKSk7CisgICAgICAgIEVY
UEVDVF9UUlVFKENoZWNrUGl4ZWxzKHggKyAyNiwgeSArIDc2LCAxLCAxLCAwLCBrR3JlZW4pKTsK
KworICAgICAgICAvLyBPdXRzaWRlIHRoZSBwYXRoIHdlIHNob3VsZCBoYXZlIGJsYWNrLgorICAg
ICAgICBzdGF0aWMgY29uc3QgYW5nbGU6OkdMQ29sb3IgYmxhY2sgPSB7MCwgMCwgMCwgMH07Cisg
ICAgICAgIEVYUEVDVF9UUlVFKENoZWNrUGl4ZWxzKHggKyAxMCwgeSArIDEwLCAxLCAxLCAwLCBi
bGFjaykpOworICAgICAgICBFWFBFQ1RfVFJVRShDaGVja1BpeGVscyh4ICsgODAsIHkgKyA4MCwg
MSwgMSwgMCwgYmxhY2spKTsKKyAgICB9CisKKyAgICBHTHVpbnQgbUNvbG9yTG9jOworfTsKKwor
Ly8gVGVzdHMgdGhhdCBiYXNpYyBwYXRoIHJlbmRlcmluZyBmdW5jdGlvbnMgd29yay4KK1RFU1Rf
UChDSFJPTUlVTVBhdGhSZW5kZXJpbmdEcmF3VGVzdCwgVGVzdFBhdGhSZW5kZXJpbmcpCit7Cisg
ICAgaWYgKCFpc0FwcGxpY2FibGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RhdGljIGNv
bnN0IGZsb2F0IGtCbHVlW10gID0gezAuMGYsIDAuMGYsIDEuMGYsIDEuMGZ9OworICAgIHN0YXRp
YyBjb25zdCBmbG9hdCBrR3JlZW5bXSA9IHswLjBmLCAxLjBmLCAwLjBmLCAxLjBmfTsKKworICAg
IHNldHVwU3RhdGVGb3JUZXN0UGF0dGVybigpOworCisgICAgR0x1aW50IHBhdGggPSBnbEdlblBh
dGhzQ0hST01JVU0oMSk7CisgICAgc2V0dXBQYXRoU3RhdGVGb3JUZXN0UGF0dGVybihwYXRoKTsK
KworICAgIC8vIERvIHRoZSBzdGVuY2lsIGZpbGwsIGNvdmVyIGZpbGwsIHN0ZW5jaWwgc3Ryb2tl
LCBjb3ZlciBzdHJva2UKKyAgICAvLyBpbiB1bmNvbnZlbnRpb25hbCBvcmRlcjoKKyAgICAvLyAx
KSBzdGVuY2lsIHRoZSBzdHJva2UgaW4gc3RlbmNpbCBoaWdoIGJpdAorICAgIC8vIDIpIHN0ZW5j
aWwgdGhlIGZpbGwgaW4gbG93IGJpdHMKKyAgICAvLyAzKSBjb3ZlciB0aGUgZmlsbAorICAgIC8v
IDQpIGNvdmVyIHRoZSBzdHJva2UKKyAgICAvLyBUaGlzIGlzIGRvbmUgdG8gY2hlY2sgdGhhdCBn
bFBhdGhTdGVuY2lsRnVuYyB3b3JrcywgZWcgdGhlIG1hc2sKKyAgICAvLyBnb2VzIHRocm91Z2gu
IFN0ZW5jaWwgZnVuYyBpcyBub3QgdGVzdGVkIEFUTSwgZm9yIHNpbXBsaWNpdHkuCisKKyAgICBn
bFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNKEdMX0FMV0FZUywgMCwgMHhGRik7CisgICAgZ2xTdGVu
Y2lsU3Ryb2tlUGF0aENIUk9NSVVNKHBhdGgsIDB4ODAsIDB4ODApOworCisgICAgZ2xQYXRoU3Rl
bmNpbEZ1bmNDSFJPTUlVTShHTF9BTFdBWVMsIDAsIDB4N0YpOworICAgIGdsU3RlbmNpbEZpbGxQ
YXRoQ0hST01JVU0ocGF0aCwgR0xfQ09VTlRfVVBfQ0hST01JVU0sIDB4N0YpOworCisgICAgZ2xT
dGVuY2lsRnVuYyhHTF9MRVNTLCAwLCAweDdGKTsKKyAgICBnbFN0ZW5jaWxPcChHTF9LRUVQLCBH
TF9LRUVQLCBHTF9aRVJPKTsKKyAgICBnbFVuaWZvcm00ZnYobUNvbG9yTG9jLCAxLCBrQmx1ZSk7
CisgICAgZ2xDb3ZlckZpbGxQYXRoQ0hST01JVU0ocGF0aCwgR0xfQk9VTkRJTkdfQk9YX0NIUk9N
SVVNKTsKKworICAgIGdsU3RlbmNpbEZ1bmMoR0xfRVFVQUwsIDB4ODAsIDB4ODApOworICAgIGds
U3RlbmNpbE9wKEdMX0tFRVAsIEdMX0tFRVAsIEdMX1pFUk8pOworICAgIGdsVW5pZm9ybTRmdiht
Q29sb3JMb2MsIDEsIGtHcmVlbik7CisgICAgZ2xDb3ZlclN0cm9rZVBhdGhDSFJPTUlVTShwYXRo
LCBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTSk7CisKKyAgICBnbERlbGV0ZVBhdGhzQ0hST01JVU0o
cGF0aCwgMSk7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIFZlcmlmeSB0
aGUgaW1hZ2UuCisgICAgdmVyaWZ5VGVzdFBhdHRlcm5GaWxsKDAsIDApOworICAgIHZlcmlmeVRl
c3RQYXR0ZXJuQmcoMCwgMCk7CisgICAgdmVyaWZ5VGVzdFBhdHRlcm5TdHJva2UoMCwgMCk7Cit9
CisKKy8vIFRlc3QgdGhhdCBTdGVuY2lsVGhlbntTdHJva2UsRmlsbH0gcGF0aCByZW5kZXJpbmcg
ZnVuY3Rpb25zIHdvcmsKK1RFU1RfUChDSFJPTUlVTVBhdGhSZW5kZXJpbmdEcmF3VGVzdCwgVGVz
dFBhdGhSZW5kZXJpbmdUaGVuRnVuY3Rpb25zKQoreworICAgIGlmICghaXNBcHBsaWNhYmxlKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIHN0YXRpYyBmbG9hdCBrQmx1ZVtdICA9IHswLjBmLCAw
LjBmLCAxLjBmLCAxLjBmfTsKKyAgICBzdGF0aWMgZmxvYXQga0dyZWVuW10gPSB7MC4wZiwgMS4w
ZiwgMC4wZiwgMS4wZn07CisKKyAgICBzZXR1cFN0YXRlRm9yVGVzdFBhdHRlcm4oKTsKKworICAg
IEdMdWludCBwYXRoID0gZ2xHZW5QYXRoc0NIUk9NSVVNKDEpOworICAgIHNldHVwUGF0aFN0YXRl
Rm9yVGVzdFBhdHRlcm4ocGF0aCk7CisKKyAgICBnbFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNKEdM
X0FMV0FZUywgMCwgMHhGRik7CisgICAgZ2xTdGVuY2lsRnVuYyhHTF9FUVVBTCwgMHg4MCwgMHg4
MCk7CisgICAgZ2xTdGVuY2lsT3AoR0xfS0VFUCwgR0xfS0VFUCwgR0xfWkVSTyk7CisgICAgZ2xV
bmlmb3JtNGZ2KG1Db2xvckxvYywgMSwga0dyZWVuKTsKKyAgICBnbFN0ZW5jaWxUaGVuQ292ZXJT
dHJva2VQYXRoQ0hST01JVU0ocGF0aCwgMHg4MCwgMHg4MCwgR0xfQk9VTkRJTkdfQk9YX0NIUk9N
SVVNKTsKKworICAgIGdsUGF0aFN0ZW5jaWxGdW5jQ0hST01JVU0oR0xfQUxXQVlTLCAwLCAweDdG
KTsKKyAgICBnbFN0ZW5jaWxGdW5jKEdMX0xFU1MsIDAsIDB4N0YpOworICAgIGdsU3RlbmNpbE9w
KEdMX0tFRVAsIEdMX0tFRVAsIEdMX1pFUk8pOworICAgIGdsVW5pZm9ybTRmdihtQ29sb3JMb2Ms
IDEsIGtCbHVlKTsKKyAgICBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNKHBhdGgs
IEdMX0NPVU5UX1VQX0NIUk9NSVVNLCAweDdGLCBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTSk7CisK
KyAgICBnbERlbGV0ZVBhdGhzQ0hST01JVU0ocGF0aCwgMSk7CisKKyAgICAvLyBWZXJpZnkgdGhl
IGltYWdlLgorICAgIHZlcmlmeVRlc3RQYXR0ZXJuRmlsbCgwLCAwKTsKKyAgICB2ZXJpZnlUZXN0
UGF0dGVybkJnKDAsIDApOworICAgIHZlcmlmeVRlc3RQYXR0ZXJuU3Ryb2tlKDAsIDApOworfQor
CisvLyBUZXN0cyB0aGF0IGRyYXdpbmcgd2l0aCAqSW5zdGFuY2VkIGZ1bmN0aW9ucyB3b3JrLgor
VEVTVF9QKENIUk9NSVVNUGF0aFJlbmRlcmluZ0RyYXdUZXN0LCBUZXN0UGF0aFJlbmRlcmluZ0lu
c3RhbmNlZCkKK3sKKyAgICBpZiAoIWlzQXBwbGljYWJsZSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBzdGF0aWMgY29uc3QgZmxvYXQga0JsdWVbXSAgPSB7MC4wZiwgMC4wZiwgMS4wZiwgMS4w
Zn07CisgICAgc3RhdGljIGNvbnN0IGZsb2F0IGtHcmVlbltdID0gezAuMGYsIDEuMGYsIDAuMGYs
IDEuMGZ9OworCisgICAgc2V0dXBTdGF0ZUZvclRlc3RQYXR0ZXJuKCk7CisKKyAgICBHTHVpbnQg
cGF0aCA9IGdsR2VuUGF0aHNDSFJPTUlVTSgxKTsKKyAgICBzZXR1cFBhdGhTdGF0ZUZvclRlc3RQ
YXR0ZXJuKHBhdGgpOworCisgICAgY29uc3QgR0x1aW50IGtQYXRoc1tdICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IHsxLCAxLCAxLCAxLCAxfTsKKyAgICBjb25zdCBHTHNpemVpIGtQYXRo
Q291bnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gNTsKKyAgICBjb25zdCBHTGZsb2F0IGtT
aGFwZVNpemUgICAgICAgICAgICAgICAgICAgICAgICAgID0gODAuMGY7CisgICAgc3RhdGljIGNv
bnN0IEdMZmxvYXQga1RyYW5zZm9ybXNba1BhdGhDb3VudCAqIDEyXSA9IHsKKyAgICAgICAgMS4w
ZiwgMC4wZiwgMC4wZiwgMC4wZiwgMS4wZiwgMC4wZiwgMC4wZiwgMC4wZiwgMS4wZiwgMC4wZiwg
ICAgICAgICAgIDAuMGYsICAgICAgIDAuMGYsCisgICAgICAgIDEuMGYsIDAuMGYsIDAuMGYsIDAu
MGYsIDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYsIGtTaGFwZVNpemUsICAgICAwLjBmLCAg
ICAgICAwLjBmLAorICAgICAgICAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLCAxLjBmLCAwLjBmLCAw
LjBmLCAwLjBmLCAxLjBmLCBrU2hhcGVTaXplICogMiwgMC4wZiwgICAgICAgMC4wZiwKKyAgICAg
ICAgMS4wZiwgMC4wZiwgMC4wZiwgMC4wZiwgMS4wZiwgMC4wZiwgMC4wZiwgMC4wZiwgMS4wZiwg
MC4wZiwgICAgICAgICAgIGtTaGFwZVNpemUsIDAuMGYsCisgICAgICAgIDEuMGYsIDAuMGYsIDAu
MGYsIDAuMGYsIDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYsIGtTaGFwZVNpemUsICAgICBr
U2hhcGVTaXplLCAwLjBmfTsKKworICAgIC8vIFRoZSB0ZXN0IHBhdHRlcm4gaXMgdGhlIHNhbWUg
YXMgaW4gdGhlIHNpbXBsZSBkcmF3IGNhc2UgYWJvdmUsCisgICAgLy8gZXhjZXB0IHRoYXQgdGhl
IHBhdGggaXMgZHJhd24ga1BhdGhDb3VudCB0aW1lcyB3aXRoIGRpZmZlcmVudCBvZmZzZXRzLgor
ICAgIGdsUGF0aFN0ZW5jaWxGdW5jQ0hST01JVU0oR0xfQUxXQVlTLCAwLCAweEZGKTsKKyAgICBn
bFN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oa1BhdGhDb3VudCwgR0xfVU5TSUdO
RURfSU5ULCBrUGF0aHMsIHBhdGggLSAxLCAweDgwLCAweDgwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9BRkZJTkVfM0RfQ0hST01JVU0sIGtUcmFuc2Zvcm1z
KTsKKworICAgIGdsUGF0aFN0ZW5jaWxGdW5jQ0hST01JVU0oR0xfQUxXQVlTLCAwLCAweDdGKTsK
KyAgICBnbFVuaWZvcm00ZnYobUNvbG9yTG9jLCAxLCBrQmx1ZSk7CisgICAgZ2xTdGVuY2lsRmls
bFBhdGhJbnN0YW5jZWRDSFJPTUlVTShrUGF0aENvdW50LCBHTF9VTlNJR05FRF9JTlQsIGtQYXRo
cywgcGF0aCAtIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9D
T1VOVF9VUF9DSFJPTUlVTSwgMHg3RiwgR0xfQUZGSU5FXzNEX0NIUk9NSVVNLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga1RyYW5zZm9ybXMpOworCisgICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7CisKKyAgICBnbFN0ZW5jaWxGdW5jKEdMX0xFU1MsIDAsIDB4N0YpOwor
ICAgIGdsU3RlbmNpbE9wKEdMX0tFRVAsIEdMX0tFRVAsIEdMX1pFUk8pOworICAgIGdsQ292ZXJG
aWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKGtQYXRoQ291bnQsIEdMX1VOU0lHTkVEX0lOVCwga1Bh
dGhzLCBwYXRoIC0gMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9C
T1VORElOR19CT1hfT0ZfQk9VTkRJTkdfQk9YRVNfQ0hST01JVU0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfQUZGSU5FXzNEX0NIUk9NSVVNLCBrVHJhbnNmb3Jtcyk7
CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIGdsU3RlbmNpbEZ1bmMoR0xfRVFV
QUwsIDB4ODAsIDB4ODApOworICAgIGdsU3RlbmNpbE9wKEdMX0tFRVAsIEdMX0tFRVAsIEdMX1pF
Uk8pOworICAgIGdsVW5pZm9ybTRmdihtQ29sb3JMb2MsIDEsIGtHcmVlbik7CisgICAgZ2xDb3Zl
clN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTShrUGF0aENvdW50LCBHTF9VTlNJR05FRF9JTlQs
IGtQYXRocywgcGF0aCAtIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9CT1VORElOR19CT1hfT0ZfQk9VTkRJTkdfQk9YRVNfQ0hST01JVU0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9BRkZJTkVfM0RfQ0hST01JVU0sIGtUcmFu
c2Zvcm1zKTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xEZWxldGVQYXRo
c0NIUk9NSVVNKHBhdGgsIDEpOworCisgICAgLy8gVmVyaWZ5IHRoZSBpbWFnZS4KKyAgICB2ZXJp
ZnlUZXN0UGF0dGVybkZpbGwoMC4wZiwgMC4wZik7CisgICAgdmVyaWZ5VGVzdFBhdHRlcm5CZygw
LjBmLCAwLjBmKTsKKyAgICB2ZXJpZnlUZXN0UGF0dGVyblN0cm9rZSgwLjBmLCAwLjBmKTsKKwor
ICAgIHZlcmlmeVRlc3RQYXR0ZXJuRmlsbChrU2hhcGVTaXplLCAwLjBmKTsKKyAgICB2ZXJpZnlU
ZXN0UGF0dGVybkJnKGtTaGFwZVNpemUsIDAuMGYpOworICAgIHZlcmlmeVRlc3RQYXR0ZXJuU3Ry
b2tlKGtTaGFwZVNpemUsIDAuMGYpOworCisgICAgdmVyaWZ5VGVzdFBhdHRlcm5GaWxsKGtTaGFw
ZVNpemUgKiAyLCAwLjBmKTsKKyAgICB2ZXJpZnlUZXN0UGF0dGVybkJnKGtTaGFwZVNpemUgKiAy
LCAwLjBmKTsKKyAgICB2ZXJpZnlUZXN0UGF0dGVyblN0cm9rZShrU2hhcGVTaXplICogMiwgMC4w
Zik7CisKKyAgICB2ZXJpZnlUZXN0UGF0dGVybkZpbGwoMC4wZiwga1NoYXBlU2l6ZSk7CisgICAg
dmVyaWZ5VGVzdFBhdHRlcm5CZygwLjBmLCBrU2hhcGVTaXplKTsKKyAgICB2ZXJpZnlUZXN0UGF0
dGVyblN0cm9rZSgwLjBmLCBrU2hhcGVTaXplKTsKKworICAgIHZlcmlmeVRlc3RQYXR0ZXJuRmls
bChrU2hhcGVTaXplLCBrU2hhcGVTaXplKTsKKyAgICB2ZXJpZnlUZXN0UGF0dGVybkJnKGtTaGFw
ZVNpemUsIGtTaGFwZVNpemUpOworICAgIHZlcmlmeVRlc3RQYXR0ZXJuU3Ryb2tlKGtTaGFwZVNp
emUsIGtTaGFwZVNpemUpOworfQorCisvLyBUZXN0IHRoYXQgaW5zdGFuY2VkIGZpbGwvc3Ryb2tl
IHRoZW4gY292ZXIgZnVuY3Rpb25zIHdvcmsuCitURVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5n
RHJhd1Rlc3QsIFRlc3RQYXRoUmVuZGVyaW5nVGhlbkZ1bmN0aW9uc0luc3RhbmNlZCkKK3sKKyAg
ICBpZiAoIWlzQXBwbGljYWJsZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzdGF0aWMgY29u
c3QgZmxvYXQga0JsdWVbXSAgPSB7MC4wZiwgMC4wZiwgMS4wZiwgMS4wZn07CisgICAgc3RhdGlj
IGNvbnN0IGZsb2F0IGtHcmVlbltdID0gezAuMGYsIDEuMGYsIDAuMGYsIDEuMGZ9OworCisgICAg
c2V0dXBTdGF0ZUZvclRlc3RQYXR0ZXJuKCk7CisKKyAgICBHTHVpbnQgcGF0aCA9IGdsR2VuUGF0
aHNDSFJPTUlVTSgxKTsKKyAgICBzZXR1cFBhdGhTdGF0ZUZvclRlc3RQYXR0ZXJuKHBhdGgpOwor
CisgICAgY29uc3QgR0x1aW50IGtQYXRoc1tdICAgICAgICAgICAgICA9IHsxLCAxLCAxLCAxLCAx
fTsKKyAgICBjb25zdCBHTHNpemVpIGtQYXRoQ291bnQgICAgICAgICAgID0gNTsKKyAgICBjb25z
dCBHTGZsb2F0IGtTaGFwZVNpemUgICAgICAgICAgID0gODAuMGY7CisgICAgc3RhdGljIGNvbnN0
IEdMZmxvYXQga1RyYW5zZm9ybXNbXSA9IHsKKyAgICAgICAgMC4wZiwgMC4wZiwga1NoYXBlU2l6
ZSwgMC4wZiwgICAgICAga1NoYXBlU2l6ZSAqIDIsCisgICAgICAgIDAuMGYsIDAuMGYsIGtTaGFw
ZVNpemUsIGtTaGFwZVNpemUsIGtTaGFwZVNpemUsCisgICAgfTsKKworICAgIGdsUGF0aFN0ZW5j
aWxGdW5jQ0hST01JVU0oR0xfQUxXQVlTLCAwLCAweEZGKTsKKyAgICBnbFN0ZW5jaWxGdW5jKEdM
X0VRVUFMLCAweDgwLCAweDgwKTsKKyAgICBnbFN0ZW5jaWxPcChHTF9LRUVQLCBHTF9LRUVQLCBH
TF9aRVJPKTsKKyAgICBnbFVuaWZvcm00ZnYobUNvbG9yTG9jLCAxLCBrR3JlZW4pOworICAgIGds
U3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSgKKyAgICAgICAga1Bh
dGhDb3VudCwgR0xfVU5TSUdORURfSU5ULCBrUGF0aHMsIHBhdGggLSAxLCAweDgwLCAweDgwLAor
ICAgICAgICBHTF9CT1VORElOR19CT1hfT0ZfQk9VTkRJTkdfQk9YRVNfQ0hST01JVU0sIEdMX1RS
QU5TTEFURV8yRF9DSFJPTUlVTSwga1RyYW5zZm9ybXMpOworCisgICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7CisKKyAgICBnbFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNKEdMX0FMV0FZUywgMCwgMHg3
Rik7CisgICAgZ2xTdGVuY2lsRnVuYyhHTF9MRVNTLCAwLCAweDdGKTsKKyAgICBnbFN0ZW5jaWxP
cChHTF9LRUVQLCBHTF9LRUVQLCBHTF9aRVJPKTsKKyAgICBnbFVuaWZvcm00ZnYobUNvbG9yTG9j
LCAxLCBrQmx1ZSk7CisgICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJP
TUlVTSgKKyAgICAgICAga1BhdGhDb3VudCwgR0xfVU5TSUdORURfSU5ULCBrUGF0aHMsIHBhdGgg
LSAxLCBHTF9DT1VOVF9VUF9DSFJPTUlVTSwgMHg3RiwKKyAgICAgICAgR0xfQk9VTkRJTkdfQk9Y
X09GX0JPVU5ESU5HX0JPWEVTX0NIUk9NSVVNLCBHTF9UUkFOU0xBVEVfMkRfQ0hST01JVU0sIGtU
cmFuc2Zvcm1zKTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xEZWxldGVQ
YXRoc0NIUk9NSVVNKHBhdGgsIDEpOworCisgICAgLy8gVmVyaWZ5IHRoZSBpbWFnZS4KKyAgICB2
ZXJpZnlUZXN0UGF0dGVybkZpbGwoMC4wZiwgMC4wZik7CisgICAgdmVyaWZ5VGVzdFBhdHRlcm5C
ZygwLjBmLCAwLjBmKTsKKyAgICB2ZXJpZnlUZXN0UGF0dGVyblN0cm9rZSgwLjBmLCAwLjBmKTsK
KworICAgIHZlcmlmeVRlc3RQYXR0ZXJuRmlsbChrU2hhcGVTaXplLCAwLjBmKTsKKyAgICB2ZXJp
ZnlUZXN0UGF0dGVybkJnKGtTaGFwZVNpemUsIDAuMGYpOworICAgIHZlcmlmeVRlc3RQYXR0ZXJu
U3Ryb2tlKGtTaGFwZVNpemUsIDAuMGYpOworCisgICAgdmVyaWZ5VGVzdFBhdHRlcm5GaWxsKGtT
aGFwZVNpemUgKiAyLCAwLjBmKTsKKyAgICB2ZXJpZnlUZXN0UGF0dGVybkJnKGtTaGFwZVNpemUg
KiAyLCAwLjBmKTsKKyAgICB2ZXJpZnlUZXN0UGF0dGVyblN0cm9rZShrU2hhcGVTaXplICogMiwg
MC4wZik7CisKKyAgICB2ZXJpZnlUZXN0UGF0dGVybkZpbGwoMC4wZiwga1NoYXBlU2l6ZSk7Cisg
ICAgdmVyaWZ5VGVzdFBhdHRlcm5CZygwLjBmLCBrU2hhcGVTaXplKTsKKyAgICB2ZXJpZnlUZXN0
UGF0dGVyblN0cm9rZSgwLjBmLCBrU2hhcGVTaXplKTsKKworICAgIHZlcmlmeVRlc3RQYXR0ZXJu
RmlsbChrU2hhcGVTaXplLCBrU2hhcGVTaXplKTsKKyAgICB2ZXJpZnlUZXN0UGF0dGVybkJnKGtT
aGFwZVNpemUsIGtTaGFwZVNpemUpOworICAgIHZlcmlmeVRlc3RQYXR0ZXJuU3Ryb2tlKGtTaGFw
ZVNpemUsIGtTaGFwZVNpemUpOworfQorCisKKy8vIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBhIHRl
c3QgdGhhdCBkcmF3cyBhIGdyaWQgb2Ygdi1zaGFwZXMuIFRoZSBncmlkIGlzCisvLyBkcmF3biBz
byB0aGF0IGV2ZW4gcm93cyAoZnJvbSB0aGUgYm90dG9tKSBhcmUgZHJhd24gd2l0aCBEcmF3QXJy
YXlzIGFuZCBvZGQKKy8vIHJvd3MgYXJlIGRyYXduIHdpdGggcGF0aCByZW5kZXJpbmcuICBJdCBj
YW4gYmUgdXNlZCB0byB0ZXN0IHZhcmlvdXMgdGV4dHVyaW5nCisvLyBtb2RlcywgY29tcGFyaW5n
IGhvdyB0aGUgZmlsbCB3b3VsZCB3b3JrIGluIG5vcm1hbCBHTCByZW5kZXJpbmcgYW5kIGhvdyB0
bworLy8gc2V0dXAgc2FtZSBzb3J0IG9mIGZpbGwgd2l0aCBwYXRoIHJlbmRlcmluZy4KKy8vIFRo
ZSB0ZXh0dXJpbmcgdGVzdCBpcyBwYXJhbWV0cml6ZWQgdG8gcnVuIHRoZSB0ZXN0IHdpdGggYW5k
IHdpdGhvdXQKKy8vIEFOR0xFIG5hbWUgaGFzaGluZy4KK2NsYXNzIENIUk9NSVVNUGF0aFJlbmRl
cmluZ1dpdGhUZXh0dXJpbmdUZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6
CisgICAgQ0hST01JVU1QYXRoUmVuZGVyaW5nV2l0aFRleHR1cmluZ1Rlc3QoKSA6IG1Qcm9ncmFt
KDApCisgICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0aChrUmVzb2x1dGlvbik7CisgICAgICAg
IHNldFdpbmRvd0hlaWdodChrUmVzb2x1dGlvbik7CisgICAgICAgIHNldENvbmZpZ1JlZEJpdHMo
OCk7CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQmx1
ZUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKKyAgICAgICAgc2V0Q29u
ZmlnRGVwdGhCaXRzKDgpOworICAgICAgICBzZXRDb25maWdTdGVuY2lsQml0cyg4KTsKKyAgICB9
CisKKyAgICBib29sIGlzQXBwbGljYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGV4dGVuc2lvbkVuYWJs
ZWQoIkdMX0NIUk9NSVVNX3BhdGhfcmVuZGVyaW5nIik7IH0KKworICAgIHZvaWQgVGVhckRvd24o
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKG1Qcm9ncmFtKQorICAgICAgICB7CisgICAg
ICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOworICAgICAgICAgICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7CisgICAgICAgIH0KKworICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7
CisgICAgfQorCisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBTkdM
RVRlc3Q6OlNldFVwKCk7CisgICAgICAgIG1CaW5kVW5pZm9ybUxvY2F0aW9uID0gcmVpbnRlcnBy
ZXRfY2FzdDxQRk5HTEJJTkRVTklGT1JNTE9DQVRJT05DSFJPTUlVTVBST0M+KAorICAgICAgICAg
ICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsQmluZFVuaWZvcm1Mb2NhdGlvbkNIUk9NSVVNIikpOwor
ICAgIH0KKworICAgIC8vIFNldHMgdXAgdGhlIEdMIHByb2dyYW0gc3RhdGUgZm9yIHRoZSB0ZXN0
LgorICAgIC8vIFZlcnRleCBzaGFkZXIgbmVlZHMgYXQgbGVhc3QgZm9sbG93aW5nIHZhcmlhYmxl
czoKKyAgICAvLyAgdW5pZm9ybSBtYXQ0IHZpZXdfbWF0cml4OworICAgIC8vICB1bmlmb3JtIG1h
dD8gY29sb3JfbWF0cml4OyAoYWNjZXNzaWJsZSB3aXRoIGtDb2xvck1hdHJpeExvY2F0aW9uKQor
ICAgIC8vICB1bmlmb3JtIHZlYzIgbW9kZWxfdHJhbnNsYXRlOworICAgIC8vICBhdHRyaWJ1dGUg
dmVjMiBwb3NpdGlvbjsKKyAgICAvLyAgdmFyeWluZyB2ZWM0IGNvbG9yOworICAgIC8vCisgICAg
Ly8gRnJhZ21lbnQgc2hhZGVyIG5lZWRzIGF0IGxlYXN0IGZvbGxvd2luZyB2YXJpYWJsZXM6Cisg
ICAgLy8gIHZhcnlpbmcgdmVjNCBjb2xvcjsKKyAgICAvLworICAgIC8vICAoPyBjYW4gYmUgYW55
dGhpbmcpCisgICAgdm9pZCBjb21waWxlUHJvZ3JhbShjb25zdCBjaGFyICp2ZXJ0ZXhTaGFkZXJT
b3VyY2UsIGNvbnN0IGNoYXIgKmZyYWdtZW50U2hhZGVyU291cmNlKQorICAgIHsKKyAgICAgICAg
Z2xWaWV3cG9ydCgwLCAwLCBrUmVzb2x1dGlvbiwga1Jlc29sdXRpb24pOworICAgICAgICBnbENs
ZWFyQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgMC4wZik7CisgICAgICAgIGdsU3RlbmNpbE1hc2so
MHhmZmZmZmZmZik7CisgICAgICAgIGdsQ2xlYXJTdGVuY2lsKDApOworICAgICAgICBnbENsZWFy
KEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOworICAgICAgICBn
bEVuYWJsZShHTF9CTEVORCk7CisgICAgICAgIGdsQmxlbmRGdW5jKEdMX1NSQ19BTFBIQSwgR0xf
T05FX01JTlVTX1NSQ19BTFBIQSk7CisKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisK
KyAgICAgICAgR0x1aW50IHZTaGFkZXIgPSBjb21waWxlU2hhZGVyKEdMX1ZFUlRFWF9TSEFERVIs
IHZlcnRleFNoYWRlclNvdXJjZSk7CisgICAgICAgIEdMdWludCBmU2hhZGVyID0gY29tcGlsZVNo
YWRlcihHTF9GUkFHTUVOVF9TSEFERVIsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKKyAgICAgICAg
QVNTRVJUX05FKDB1LCB2U2hhZGVyKTsKKyAgICAgICAgQVNTRVJUX05FKDB1LCBmU2hhZGVyKTsK
KworICAgICAgICBtUHJvZ3JhbSA9IGdsQ3JlYXRlUHJvZ3JhbSgpOworCisgICAgICAgIGdsQXR0
YWNoU2hhZGVyKG1Qcm9ncmFtLCB2U2hhZGVyKTsKKyAgICAgICAgZ2xBdHRhY2hTaGFkZXIobVBy
b2dyYW0sIGZTaGFkZXIpOworICAgICAgICBnbERlbGV0ZVNoYWRlcih2U2hhZGVyKTsKKyAgICAg
ICAgZ2xEZWxldGVTaGFkZXIoZlNoYWRlcik7CisKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7CisgICAgfQorCisgICAgdm9pZCBiaW5kUHJvZ3JhbSgpCisgICAgeworICAgICAgICBnbEJp
bmRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwga1Bvc2l0aW9uTG9jYXRpb24sICJwb3NpdGlvbiIp
OworICAgICAgICBtQmluZFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwga1ZpZXdNYXRyaXhMb2Nh
dGlvbiwgInZpZXdfbWF0cml4Iik7CisgICAgICAgIG1CaW5kVW5pZm9ybUxvY2F0aW9uKG1Qcm9n
cmFtLCBrQ29sb3JNYXRyaXhMb2NhdGlvbiwgImNvbG9yX21hdHJpeCIpOworICAgICAgICBtQmlu
ZFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwga01vZGVsVHJhbnNsYXRlTG9jYXRpb24sICJtb2Rl
bF90cmFuc2xhdGUiKTsKKyAgICAgICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01J
VU0obVByb2dyYW0sIGtDb2xvckZyYWdtZW50SW5wdXRMb2NhdGlvbiwgImNvbG9yIik7CisKKyAg
ICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgfQorCisgICAgYm9vbCBsaW5rUHJvZ3Jh
bSgpCisgICAgeworICAgICAgICBnbExpbmtQcm9ncmFtKG1Qcm9ncmFtKTsKKworICAgICAgICBH
TGludCBsaW5rZWQgPSAwOworICAgICAgICBnbEdldFByb2dyYW1pdihtUHJvZ3JhbSwgR0xfTElO
S19TVEFUVVMsICZsaW5rZWQpOworICAgICAgICBpZiAobGlua2VkKQorICAgICAgICB7CisgICAg
ICAgICAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIChsaW5rZWQgPT0gMSk7CisgICAgfQorCisgICAgdm9pZCBkcmF3VGVzdFBhdHRlcm4oKQor
ICAgIHsKKyAgICAgICAgLy8gVGhpcyB2LXNoYXBlIGlzIHVzZWQgYm90aCBmb3IgRHJhd0FycmF5
cyBhbmQgcGF0aCByZW5kZXJpbmcuCisgICAgICAgIHN0YXRpYyBjb25zdCBHTGZsb2F0IGtWZXJ0
aWNlc1tdID0gezc1LjBmLCA3NS4wZiwgNTAuMGYsIDI1LjVmLCA1MC4wZiwgNTAuMGYsIDI1LjBm
LCA3NS4wZn07CisKKyAgICAgICAgR0x1aW50IHZibyA9IDA7CisgICAgICAgIGdsR2VuQnVmZmVy
cygxLCAmdmJvKTsKKyAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgdmJvKTsK
KyAgICAgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgc2l6ZW9mKGtWZXJ0aWNlcyks
IGtWZXJ0aWNlcywgR0xfU1RBVElDX0RSQVcpOworICAgICAgICBnbEVuYWJsZVZlcnRleEF0dHJp
YkFycmF5KGtQb3NpdGlvbkxvY2F0aW9uKTsKKyAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVy
KGtQb3NpdGlvbkxvY2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIDApOworCisgICAg
ICAgIC8vIFNldHVwIHN0YXRlIGZvciBkcmF3aW5nIHRoZSBzaGFwZSB3aXRoIHBhdGggcmVuZGVy
aW5nLgorICAgICAgICBnbFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNKEdMX0FMV0FZUywgMCwgMHg3
Rik7CisgICAgICAgIGdsU3RlbmNpbEZ1bmMoR0xfTEVTUywgMCwgMHg3Rik7CisgICAgICAgIGds
U3RlbmNpbE9wKEdMX0tFRVAsIEdMX0tFRVAsIEdMX1pFUk8pOworICAgICAgICBnbE1hdHJpeExv
YWRmQ0hST01JVU0oR0xfUEFUSF9QUk9KRUNUSU9OX0NIUk9NSVVNLCBrUHJvamVjdGlvbk1hdHJp
eCk7CisgICAgICAgIGdsTWF0cml4TG9hZElkZW50aXR5Q0hST01JVU0oR0xfUEFUSF9NT0RFTFZJ
RVdfQ0hST01JVU0pOworCisgICAgICAgIHN0YXRpYyBjb25zdCBHTHVieXRlIGtDb21tYW5kc1td
ID0ge0dMX01PVkVfVE9fQ0hST01JVU0sIEdMX0xJTkVfVE9fQ0hST01JVU0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0xJTkVfVE9fQ0hST01JVU0sIEdM
X0xJTkVfVE9fQ0hST01JVU0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX0NMT1NFX1BBVEhfQ0hST01JVU19OworCisgICAgICAgIHN0YXRpYyBjb25zdCBH
TGZsb2F0IGtDb29yZHNbXSA9IHsKKyAgICAgICAgICAgIGtWZXJ0aWNlc1swXSwga1ZlcnRpY2Vz
WzFdLCBrVmVydGljZXNbMl0sIGtWZXJ0aWNlc1szXSwKKyAgICAgICAgICAgIGtWZXJ0aWNlc1s2
XSwga1ZlcnRpY2VzWzddLCBrVmVydGljZXNbNF0sIGtWZXJ0aWNlc1s1XSwKKyAgICAgICAgfTsK
KworICAgICAgICBHTHVpbnQgcGF0aCA9IGdsR2VuUGF0aHNDSFJPTUlVTSgxKTsKKyAgICAgICAg
Z2xQYXRoQ29tbWFuZHNDSFJPTUlVTShwYXRoLCBzdGF0aWNfY2FzdDxHTHNpemVpPihBcnJheVNp
emUoa0NvbW1hbmRzKSksIGtDb21tYW5kcywKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMc2l6
ZWk+KEFycmF5U2l6ZShrQ29vcmRzKSksIEdMX0ZMT0FULCBrQ29vcmRzKTsKKyAgICAgICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgR0xmbG9hdCBwYXRoX21vZGVsX3RyYW5zbGF0
ZVsxNl0gPSB7CisgICAgICAgICAgICAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLCAwLjBmLCAxLjBm
LCAwLjBmLCAwLjBmLAorICAgICAgICAgICAgMC4wZiwgMC4wZiwgMS4wZiwgMC4wZiwgMC4wZiwg
MC4wZiwgMC4wZiwgMS4wZiwKKyAgICAgICAgfTsKKworICAgICAgICAvLyBEcmF3cyB0aGUgc2hh
cGVzLiBFdmVyeSBldmVuIHJvdyBmcm9tIHRoZSBib3R0b20gaXMgZHJhd24gd2l0aAorICAgICAg
ICAvLyBEcmF3QXJyYXlzLCBvZGQgcm93IHdpdGggcGF0aCByZW5kZXJpbmcuIFRoZSBzaGFkZXIg
cHJvZ3JhbSBpcworICAgICAgICAvLyB0aGUgc2FtZSBmb3IgdGhlIGJvdGggZHJhd3MuCisgICAg
ICAgIGZvciAoaW50IGogPSAwOyBqIDwga1Rlc3RSb3dzOyArK2opCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwga1Rlc3RDb2x1bW5zOyArK2kpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgaWYgKGogJSAyID09IDApCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBnbERpc2FibGUoR0xfU1RFTkNJTF9URVNUKTsKKyAgICAgICAg
ICAgICAgICAgICAgZ2xVbmlmb3JtMmYoa01vZGVsVHJhbnNsYXRlTG9jYXRpb24sIHN0YXRpY19j
YXN0PEdMZmxvYXQ+KGkgKiBrU2hhcGVXaWR0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PEdMZmxvYXQ+KGogKiBrU2hhcGVIZWlnaHQpKTsKKyAgICAgICAg
ICAgICAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFX1NUUklQLCAwLCA0KTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgZ2xFbmFibGUoR0xfU1RFTkNJTF9URVNUKTsKKyAgICAgICAgICAg
ICAgICAgICAgcGF0aF9tb2RlbF90cmFuc2xhdGVbMTJdID0gc3RhdGljX2Nhc3Q8R0xmbG9hdD4o
aSAqIGtTaGFwZVdpZHRoKTsKKyAgICAgICAgICAgICAgICAgICAgcGF0aF9tb2RlbF90cmFuc2xh
dGVbMTNdID0gc3RhdGljX2Nhc3Q8R0xmbG9hdD4oaiAqIGtTaGFwZUhlaWdodCk7CisgICAgICAg
ICAgICAgICAgICAgIGdsTWF0cml4TG9hZGZDSFJPTUlVTShHTF9QQVRIX01PREVMVklFV19DSFJP
TUlVTSwgcGF0aF9tb2RlbF90cmFuc2xhdGUpOworICAgICAgICAgICAgICAgICAgICBnbFN0ZW5j
aWxUaGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNKHBhdGgsIEdMX0NPVU5UX1VQX0NIUk9NSVVNLCAw
eDdGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX0JPVU5ESU5HX0JPWF9DSFJPTUlVTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAg
ICAgIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGtQb3NpdGlvbkxvY2F0aW9uKTsKKyAgICAg
ICAgZ2xEZWxldGVCdWZmZXJzKDEsICZ2Ym8pOworICAgICAgICBnbERlbGV0ZVBhdGhzQ0hST01J
VU0ocGF0aCwgMSk7CisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIH0KKworICAg
IGVudW0KKyAgICB7CisgICAgICAgIGtTaGFwZVdpZHRoICA9IDc1LAorICAgICAgICBrU2hhcGVI
ZWlnaHQgPSA3NSwKKyAgICAgICAga1Rlc3RSb3dzICAgID0ga1Jlc29sdXRpb24gLyBrU2hhcGVI
ZWlnaHQsCisgICAgICAgIGtUZXN0Q29sdW1ucyA9IGtSZXNvbHV0aW9uIC8ga1NoYXBlV2lkdGgs
CisgICAgfTsKKworICAgIHR5cGVkZWYgdm9pZChHTF9BUElFTlRSWVAgUEZOR0xCSU5EVU5JRk9S
TUxPQ0FUSU9OQ0hST01JVU1QUk9DKShHTHVpbnQgbVByb2dyYW0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpOworICAgIFBGTkdMQklO
RFVOSUZPUk1MT0NBVElPTkNIUk9NSVVNUFJPQyBtQmluZFVuaWZvcm1Mb2NhdGlvbiA9IG51bGxw
dHI7CisKKyAgICBHTHVpbnQgbVByb2dyYW07CisKKyAgICAvLyBUaGlzIHVuaWZvcm0gYmUgY2Fu
IHNldCBieSB0aGUgdGVzdC4gSXQgc2hvdWxkIGJlIHVzZWQgdG8gc2V0IHRoZSBjb2xvciBmb3IK
KyAgICAvLyBkcmF3aW5nIHdpdGggRHJhd0FycmF5cy4KKyAgICBzdGF0aWMgY29uc3QgR0xpbnQg
a0NvbG9yTWF0cml4TG9jYXRpb24gPSA0OworCisgICAgLy8gVGhpcyBmcmFnbWVudCBpbnB1dCBj
YW4gYmUgc2V0IGJ5IHRoZSB0ZXN0LiBJdCBzaG91bGQgYmUgdXNlZCB0byBzZXQgdGhlCisgICAg
Ly8gY29sb3IgZm9yIGRyYXdpbmcgd2l0aCBwYXRoIHJlbmRlcmluZy4KKyAgICBzdGF0aWMgY29u
c3QgR0xpbnQga0NvbG9yRnJhZ21lbnRJbnB1dExvY2F0aW9uID0gNzsKKworICAgIHN0YXRpYyBj
b25zdCBHTGludCBrTW9kZWxUcmFuc2xhdGVMb2NhdGlvbiA9IDM7CisgICAgc3RhdGljIGNvbnN0
IEdMaW50IGtQb3NpdGlvbkxvY2F0aW9uICAgICAgID0gMDsKKyAgICBzdGF0aWMgY29uc3QgR0xp
bnQga1ZpZXdNYXRyaXhMb2NhdGlvbiAgICAgPSA3OworfTsKKworLy8gVGVzdCBzdWNjZXNzIGFu
ZCBlcnJvciBjYXNlcyBmb3IgYmluZGluZyBmcmFnbWVudCBpbnB1dCBsb2NhdGlvbi4KK1RFU1Rf
UChDSFJPTUlVTVBhdGhSZW5kZXJpbmdXaXRoVGV4dHVyaW5nVGVzdCwgVGVzdEJpbmRGcmFnbWVu
dElucHV0TG9jYXRpb24pCit7CisgICAgaWYgKCFpc0FwcGxpY2FibGUoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gb3JpZ2luYWwgTlZfcGF0aF9yZW5kZXJpbmcgc3BlY2lmaWNhdGlvbiBk
b2Vzbid0IGRlZmluZSB3aGV0aGVyIHRoZQorICAgIC8vIGZyYWdtZW50IHNoYWRlciBpbnB1dCB2
YXJpYWJsZXMgc2hvdWxkIGJlIGRlZmluZWQgaW4gdGhlIHZlcnRleCBzaGFkZXIgb3IKKyAgICAv
LyBub3QuIEluIGZhY3QgaXQgZG9lc24ndCBldmVuIHJlcXVpcmUgYSB2ZXJ0ZXggc2hhZGVyLgor
ICAgIC8vIEhvd2V2ZXIgdGhlIEdMRVMzLjEgc3BlYyBiYXNpY2FsbHkgc2F5cyB0aGF0IGZyYWdt
ZW50IGlucHV0cyBhcmUKKyAgICAvLyBlaXRoZXIgYnVpbHQtaW5zIG9yIGNvbWUgZnJvbSB0aGUg
cHJldmlvdXMgc2hhZGVyIHN0YWdlLgorICAgIC8vICjCpyAxNC4xLCBGcmFnbWVudCBTaGFkZXIg
VmFyaWFibGVzKS4KKyAgICAvLyBBZGRpdGlvbmFsbHkgdGhlcmUgYXJlIG1hbnkgcGxhY2VzIHRo
YXQgYXJlIGJhc2VkIG9uIHRoZSBhc3N1bXB0aW9uIG9mIGhhdmluZworICAgIC8vIGEgdmVydGV4
IHNoYWRlciAoY29tbWFuZCBidWZmZXIsIGFuZ2xlKSBzbyB3ZSdyZSBnb2luZyB0byBzdGljayB0
byB0aGUgc2FtZQorICAgIC8vIHNlbWFudGljcyBhbmQgcmVxdWlyZSBhIHZlcnRleCBzaGFkZXIg
YW5kIHRvIGhhdmUgdGhlIHZlcnRleCBzaGFkZXIgZGVmaW5lIHRoZQorICAgIC8vIHZhcnlpbmcg
ZnJhZ21lbnQgc2hhZGVyIGlucHV0LgorCisgICAgLy8gY2xhbmctZm9ybWF0IG9mZgorICAgIGNv
bnN0IGNoYXIqIGtWZXJ0ZXhTaGFkZXJTb3VyY2UgPQorICAgICAgICJ2YXJ5aW5nIHZlYzQgY29s
b3I7XG4iCisgICAgICAgInZvaWQgbWFpbigpIHt9XG4iOworCisgICAgY29uc3QgY2hhcioga0Zy
YWdtZW50U2hhZGVyU291cmNlID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xu
IgorICAgICAgICAidmFyeWluZyB2ZWM0IGNvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKCkg
e1xuIgorICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XG4iCisgICAgICAgICJ9
XG4iOworCisgICAgLy8gY2xhbmctZm9ybWF0IG9uCisgICAgY29tcGlsZVByb2dyYW0oa1ZlcnRl
eFNoYWRlclNvdXJjZSwga0ZyYWdtZW50U2hhZGVyU291cmNlKTsKKworICAgIGVudW0ga0JpbmRM
b2NhdGlvbnMKKyAgICB7CisgICAgICAgIGtDb2xvckxvY2F0aW9uICAgICA9IDUsCisgICAgICAg
IGtGcmFnQ29sb3JMb2NhdGlvbiA9IDYKKyAgICB9OworCisgICAgLy8gc3VjY2Vzc2Z1bCBiaW5k
LgorICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29s
b3JMb2NhdGlvbiwgImNvbG9yIik7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAv
LyBhbnkgbmFtZSBjYW4gYmUgYm91bmQgYW5kIG5hbWVzIHRoYXQgZG8gbm90IGFjdHVhbGx5IGV4
aXN0IGluIHRoZSBwcm9ncmFtIGFmdGVyCisgICAgLy8gbGlua2luZyBhcmUgaWdub3JlZC4KKyAg
ICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yTG9j
YXRpb24sICJkb2VzbnRfZXhpc3QiKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAg
IC8vIGlsbGVnYWwgcHJvZ3JhbQorICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9N
SVVNKG1Qcm9ncmFtICsgMSwga0NvbG9yTG9jYXRpb24sICJjb2xvciIpOworICAgIEVYUEVDVF9H
TF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7CisKKyAgICAvLyBpbGxlZ2FsIGJpbmQgKGJ1
aWx0LWluKQorICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNKG1Qcm9ncmFt
LCBrRnJhZ0NvbG9yTG9jYXRpb24sICJnbF9GcmFnQ29sb3IiKTsKKyAgICBFWFBFQ1RfR0xfRVJS
T1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0
aW9uQ0hST01JVU0obVByb2dyYW0sIGtGcmFnQ29sb3JMb2NhdGlvbiwgTlVMTCk7CisgICAgRVhQ
RUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOworCisgICAgZ2xCaW5kRnJhZ21lbnRJbnB1
dExvY2F0aW9uQ0hST01JVU0obVByb2dyYW0sIDB4ZmZmZmZmLCAiY29sb3IiKTsKKyAgICBFWFBF
Q1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7CisKKyAgICBBU1NFUlRfVFJVRShsaW5rUHJv
Z3JhbSgpID09IHRydWUpOworCisgICAgY29uc3QgR0xmbG9hdCBrQ29lZmZpY2llbnRzMTZbXSA9
IHsxLjBmLCAyLjBmLCAgMy4wZiwgIDQuMGYsICA1LjBmLCAgNi4wZiwgIDcuMGYsICA4LjBmLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS4wZiwgMTAuMGYsIDExLjBm
LCAxMi4wZiwgMTMuMGYsIDE0LjBmLCAxNS4wZiwgMTYuMGZ9OworCisgICAgZ2xQcm9ncmFtUGF0
aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yTG9jYXRpb24sIEdMX0VZ
RV9MSU5FQVJfQ0hST01JVU0sIDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBrQ29lZmZpY2llbnRzMTYpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisg
ICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwgLTEsIEdM
X0VZRV9MSU5FQVJfQ0hST01JVU0sIDQsIGtDb2VmZmljaWVudHMxNik7CisgICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7Cit9CisKKy8vIFRlc3QgZnJhZ21lbnQgaW5wdXQgaW50ZXJwb2xhdGlvbiBp
biBDSFJPTUlVTV9FWUUgY29vcmRpbmF0ZXMuCitURVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5n
V2l0aFRleHR1cmluZ1Rlc3QsIFRlc3RQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlV
TV9FWUUpCit7CisgICAgaWYgKCFpc0FwcGxpY2FibGUoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gY2xhbmctZm9ybWF0IG9mZgorICAgIGNvbnN0IGNoYXIgKmtWZXJ0ZXhTaGFkZXJTb3Vy
Y2UgPQorICAgICAgICAidW5pZm9ybSBtYXQ0IHZpZXdfbWF0cml4O1xuIgorICAgICAgICAidW5p
Zm9ybSBtYXQ0IGNvbG9yX21hdHJpeDtcbiIKKyAgICAgICAgInVuaWZvcm0gdmVjMiBtb2RlbF90
cmFuc2xhdGU7XG4iCisgICAgICAgICJhdHRyaWJ1dGUgdmVjMiBwb3NpdGlvbjtcbiIKKyAgICAg
ICAgInZhcnlpbmcgdmVjMyBjb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAg
ICAgICAgIiAgdmVjNCBwID0gdmVjNChtb2RlbF90cmFuc2xhdGUgKyBwb3NpdGlvbiwgMS4wLCAx
LjApO1xuIgorICAgICAgICAiICBjb2xvciA9IChjb2xvcl9tYXRyaXggKiBwKS5yZ2I7XG4iCisg
ICAgICAgICIgIGdsX1Bvc2l0aW9uID0gdmlld19tYXRyaXggKiBwO1xuIgorICAgICAgICAifVxu
IjsKKworICAgIGNvbnN0IGNoYXIgKmtGcmFnbWVudFNoYWRlclNvdXJjZSA9CisgICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInZhcnlpbmcgdmVjMyBjb2xvcjtc
biIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0g
dmVjNChjb2xvciwgMS4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgLy8gY2xhbmctZm9ybWF0
IG9uCisKKyAgICBjb21waWxlUHJvZ3JhbShrVmVydGV4U2hhZGVyU291cmNlLCBrRnJhZ21lbnRT
aGFkZXJTb3VyY2UpOworICAgIGJpbmRQcm9ncmFtKCk7CisgICAgQVNTRVJUX1RSVUUobGlua1By
b2dyYW0oKSA9PSB0cnVlKTsKKworICAgIGdsVW5pZm9ybU1hdHJpeDRmdihrVmlld01hdHJpeExv
Y2F0aW9uLCAxLCBHTF9GQUxTRSwga1Byb2plY3Rpb25NYXRyaXgpOworCisgICAgc3RhdGljIGNv
bnN0IEdMZmxvYXQga0NvbG9yTWF0cml4WzE2XSA9IHsKKyAgICAgICAgMS4wZiAvIGtSZXNvbHV0
aW9uLCAwLjBmLCAwLjBmLCAwLjBmLAorICAgICAgICAwLjBmLCAxLjBmIC8ga1Jlc29sdXRpb24s
IDAuMGYsIDAuMGYsCisgICAgICAgIDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYsCisgICAgICAgIDAu
MGYsIDAuMGYsIDAuMGYsIDAuMGZ9OworCisgICAgZ2xVbmlmb3JtTWF0cml4NGZ2KGtDb2xvck1h
dHJpeExvY2F0aW9uLCAxLCBHTF9GQUxTRSwga0NvbG9yTWF0cml4KTsKKworICAgIC8vIFRoaXMg
aXMgdGhlIGZ1bmN0aW9uYWxpdHkgd2UgYXJlIHRlc3Rpbmc6IFByb2dyYW1QYXRoRnJhZ21lbnRJ
bnB1dEdlbgorICAgIC8vIGRvZXMgdGhlIHNhbWUgd29yayBhcyB0aGUgY29sb3IgdHJhbnNmb3Jt
IGluIHZlcnRleCBzaGFkZXIuCisgICAgc3RhdGljIGNvbnN0IEdMZmxvYXQga0NvbG9yQ29lZmZp
Y2llbnRzWzEyXSA9IHsKKyAgICAgICAgMS4wZiAvIGtSZXNvbHV0aW9uLCAwLjBmLCAwLjBmLAor
ICAgICAgICAwLjBmLCAwLjBmLCAxLjBmIC8ga1Jlc29sdXRpb24sCisgICAgICAgIDAuMGYsIDAu
MGYsIDAuMGYsCisgICAgICAgIDAuMGYsIDAuMGYsIDAuMGZ9OworICAgIGdsUHJvZ3JhbVBhdGhG
cmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIGtDb2xvckZyYWdtZW50SW5wdXRMb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0VZRV9M
SU5FQVJfQ0hST01JVU0sIDMsIGtDb2xvckNvZWZmaWNpZW50cyk7CisgICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7CisKKyAgICBkcmF3VGVzdFBhdHRlcm4oKTsKKworICAgIGNvbnN0IEdMZmxvYXQg
a0ZpbGxDb29yZHNbNl0gPSB7NTkuMGYsIDUwLjBmLCA1MC4wZiwgMjguMGYsIDY2LjBmLCA2My4w
Zn07CisKKyAgICBmb3IgKGludCBqID0gMDsgaiA8IGtUZXN0Um93czsgKytqKQorICAgIHsKKyAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrVGVzdENvbHVtbnM7ICsraSkKKyAgICAgICAgewor
ICAgICAgICAgICAgZm9yIChzaXplX3QgayA9IDA7IGsgPCBBcnJheVNpemUoa0ZpbGxDb29yZHMp
OyBrICs9IDIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgZngg
PSBrRmlsbENvb3Jkc1trXTsKKyAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCBmeSA9IGtGaWxs
Q29vcmRzW2sgKyAxXTsKKyAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCBweCA9IHN0YXRpY19j
YXN0PGZsb2F0PihpICoga1NoYXBlV2lkdGgpOworICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0
IHB5ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGogKiBrU2hhcGVIZWlnaHQpOworCisgICAgICAgICAg
ICAgICAgYW5nbGU6OkdMQ29sb3IgY29sb3I7CisgICAgICAgICAgICAgICAgY29sb3IuUiA9IHN0
YXRpY19jYXN0PEdMdWJ5dGU+KHN0ZDo6cm91bmRmKChweCArIGZ4KSAvIGtSZXNvbHV0aW9uICog
MjU1LjBmKSk7CisgICAgICAgICAgICAgICAgY29sb3IuRyA9IHN0YXRpY19jYXN0PEdMdWJ5dGU+
KHN0ZDo6cm91bmRmKChweSArIGZ5KSAvIGtSZXNvbHV0aW9uICogMjU1LjBmKSk7CisgICAgICAg
ICAgICAgICAgY29sb3IuQiA9IDA7CisgICAgICAgICAgICAgICAgY29sb3IuQSA9IDI1NTsKKyAg
ICAgICAgICAgICAgICBDaGVja1BpeGVscyhzdGF0aWNfY2FzdDxHTGludD4ocHggKyBmeCksIHN0
YXRpY19jYXN0PEdMaW50PihweSArIGZ5KSwgMSwgMSwgMiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb2xvcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8v
IFRlc3QgZnJhZ21lbnQgaW5wdXQgaW50ZXJwb2xhdGlvbiBpbiBDSFJPTUlVTV9PQkpFQ1QgY29v
cmRpbmF0ZXMuCitURVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5nV2l0aFRleHR1cmluZ1Rlc3Qs
IFRlc3RQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTV9PQkpFQ1QpCit7CisgICAg
aWYgKCFpc0FwcGxpY2FibGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gY2xhbmctZm9y
bWF0IG9mZgorICAgIGNvbnN0IGNoYXIgKmtWZXJ0ZXhTaGFkZXJTb3VyY2UgPQorICAgICAgICAi
dW5pZm9ybSBtYXQ0IHZpZXdfbWF0cml4O1xuIgorICAgICAgICAidW5pZm9ybSBtYXQ0IGNvbG9y
X21hdHJpeDtcbiIKKyAgICAgICAgInVuaWZvcm0gdmVjMiBtb2RlbF90cmFuc2xhdGU7XG4iCisg
ICAgICAgICJhdHRyaWJ1dGUgdmVjMiBwb3NpdGlvbjtcbiIKKyAgICAgICAgInZhcnlpbmcgdmVj
MyBjb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgY29sb3Ig
PSAoY29sb3JfbWF0cml4ICogdmVjNChwb3NpdGlvbiwgMS4wLCAxLjApKS5yZ2I7XG4iCisgICAg
ICAgICIgIHZlYzQgcCA9IHZlYzQobW9kZWxfdHJhbnNsYXRlICsgcG9zaXRpb24sIDEuMCwgMS4w
KTtcbiIKKyAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSB2aWV3X21hdHJpeCAqIHA7XG4iCisgICAg
ICAgICJ9IjsKKworICAgIGNvbnN0IGNoYXIgKmtGcmFnbWVudFNoYWRlclNvdXJjZSA9CisgICAg
ICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInZhcnlpbmcgdmVjMyBj
b2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgZ2xfRnJhZ0Nv
bG9yID0gdmVjNChjb2xvci5yZ2IsIDEuMCk7XG4iCisgICAgICAgICJ9IjsKKyAgICAvLyBjbGFu
Zy1mb3JtYXQgb24KKworICAgIGNvbXBpbGVQcm9ncmFtKGtWZXJ0ZXhTaGFkZXJTb3VyY2UsIGtG
cmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgYmluZFByb2dyYW0oKTsKKyAgICBBU1NFUlRfVFJV
RShsaW5rUHJvZ3JhbSgpID09IHRydWUpOworCisgICAgZ2xVbmlmb3JtTWF0cml4NGZ2KGtWaWV3
TWF0cml4TG9jYXRpb24sIDEsIEdMX0ZBTFNFLCBrUHJvamVjdGlvbk1hdHJpeCk7CisKKyAgICBz
dGF0aWMgY29uc3QgR0xmbG9hdCBrQ29sb3JNYXRyaXhbMTZdID0geworICAgICAgICAxLjBmIC8g
a1NoYXBlV2lkdGgsIDAuMGYsIDAuMGYsIDAuMGYsCisgICAgICAgIDAuMGYsIDEuMGYgLyBrU2hh
cGVIZWlnaHQsIDAuMGYsIDAuMGYsCisgICAgICAgIDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYsCisg
ICAgICAgIDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYgfTsKKyAgICBnbFVuaWZvcm1NYXRyaXg0ZnYo
a0NvbG9yTWF0cml4TG9jYXRpb24sIDEsIEdMX0ZBTFNFLCBrQ29sb3JNYXRyaXgpOworCisgICAg
Ly8gVGhpcyBpcyB0aGUgZnVuY3Rpb25hbGl0eSB3ZSBhcmUgdGVzdGluZzogUHJvZ3JhbVBhdGhG
cmFnbWVudElucHV0R2VuCisgICAgLy8gZG9lcyB0aGUgc2FtZSB3b3JrIGFzIHRoZSBjb2xvciB0
cmFuc2Zvcm0gaW4gdmVydGV4IHNoYWRlci4KKyAgICBzdGF0aWMgY29uc3QgR0xmbG9hdCBrQ29s
b3JDb2VmZmljaWVudHNbOV0gPSB7CisgICAgICAgIDEuMGYgLyBrU2hhcGVXaWR0aCwgMC4wZiwg
MC4wZiwgMC4wZiwgMS4wZiAvIGtTaGFwZUhlaWdodCwgMC4wZiwgMC4wZiwgMC4wZiwgMC4wZn07
CisgICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwga0Nv
bG9yRnJhZ21lbnRJbnB1dExvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfT0JKRUNUX0xJTkVBUl9DSFJPTUlVTSwgMywga0NvbG9yQ29lZmZpY2ll
bnRzKTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgZHJhd1Rlc3RQYXR0ZXJu
KCk7CisKKyAgICBjb25zdCBHTGZsb2F0IGtGaWxsQ29vcmRzWzZdID0gezU5LjBmLCA1MC4wZiwg
NTAuMGYsIDI4LjBmLCA2Ni4wZiwgNjMuMGZ9OworCisgICAgZm9yIChpbnQgaiA9IDA7IGogPCBr
VGVzdFJvd3M7ICsraikKKyAgICB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwga1Rlc3RD
b2x1bW5zOyArK2kpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGsgPSAwOyBr
IDwgQXJyYXlTaXplKGtGaWxsQ29vcmRzKTsgayArPSAyKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGNvbnN0IGZsb2F0IGZ4ID0ga0ZpbGxDb29yZHNba107CisgICAgICAgICAgICAg
ICAgY29uc3QgZmxvYXQgZnkgPSBrRmlsbENvb3Jkc1trICsgMV07CisgICAgICAgICAgICAgICAg
Y29uc3QgZmxvYXQgcHggPSBzdGF0aWNfY2FzdDxmbG9hdD4oaSAqIGtTaGFwZVdpZHRoKTsKKyAg
ICAgICAgICAgICAgICBjb25zdCBmbG9hdCBweSA9IHN0YXRpY19jYXN0PGZsb2F0PihqICoga1No
YXBlSGVpZ2h0KTsKKworICAgICAgICAgICAgICAgIGFuZ2xlOjpHTENvbG9yIGNvbG9yOworICAg
ICAgICAgICAgICAgIGNvbG9yLlIgPSBzdGF0aWNfY2FzdDxHTHVieXRlPihzdGQ6OnJvdW5kZihm
eCAvIGtTaGFwZVdpZHRoICogMjU1LjBmKSk7CisgICAgICAgICAgICAgICAgY29sb3IuRyA9IHN0
YXRpY19jYXN0PEdMdWJ5dGU+KHN0ZDo6cm91bmRmKGZ5IC8ga1NoYXBlSGVpZ2h0ICogMjU1LjBm
KSk7CisgICAgICAgICAgICAgICAgY29sb3IuQiA9IDA7CisgICAgICAgICAgICAgICAgY29sb3Iu
QSA9IDI1NTsKKyAgICAgICAgICAgICAgICBDaGVja1BpeGVscyhzdGF0aWNfY2FzdDxHTGludD4o
cHggKyBmeCksIHN0YXRpY19jYXN0PEdMaW50PihweSArIGZ5KSwgMSwgMSwgMiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb2xvcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9Cit9CisKKy8vIFRlc3Qgc3VjY2VzcyBhbmQgZXJyb3IgY2FzZXMgZm9yIHNldHRpbmcgaW50
ZXJwb2xhdGlvbiBwYXJhbWV0ZXJzLgorVEVTVF9QKENIUk9NSVVNUGF0aFJlbmRlcmluZ1dpdGhU
ZXh0dXJpbmdUZXN0LCBUZXN0UHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQXJncykKK3sKKyAg
ICBpZiAoIWlzQXBwbGljYWJsZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBjbGFuZy1m
b3JtYXQgb2ZmCisgICAgY29uc3QgY2hhciAqa1ZlcnRleFNoYWRlclNvdXJjZSA9CisgICAgICAg
ICJ2YXJ5aW5nIHZlYzIgdmVjMl92YXI7XG4iCisgICAgICAgICJ2YXJ5aW5nIHZlYzMgdmVjM192
YXI7XG4iCisgICAgICAgICJ2YXJ5aW5nIHZlYzQgdmVjNF92YXI7XG4iCisgICAgICAgICJ2YXJ5
aW5nIGZsb2F0IGZsb2F0X3ZhcjtcbiIKKyAgICAgICAgInZhcnlpbmcgbWF0MiBtYXQyX3Zhcjtc
biIKKyAgICAgICAgInZhcnlpbmcgbWF0MyBtYXQzX3ZhcjtcbiIKKyAgICAgICAgInZhcnlpbmcg
bWF0NCBtYXQ0X3ZhcjtcbiIKKyAgICAgICAgImF0dHJpYnV0ZSBmbG9hdCBhdm9pZF9vcHQ7XG4i
CisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgIHZlYzJfdmFyID0gdmVjMigx
LjAsIDIuMCArIGF2b2lkX29wdCk7XG4iCisgICAgICAgICIgIHZlYzNfdmFyID0gdmVjMygxLjAs
IDIuMCwgMy4wICsgYXZvaWRfb3B0KTtcbiIKKyAgICAgICAgIiAgdmVjNF92YXIgPSB2ZWM0KDEu
MCwgMi4wLCAzLjAsIDQuMCArIGF2b2lkX29wdCk7XG4iCisgICAgICAgICIgIGZsb2F0X3ZhciA9
IDUuMCArIGF2b2lkX29wdDtcbiIKKyAgICAgICAgIiAgbWF0Ml92YXIgPSBtYXQyKDIuMCArIGF2
b2lkX29wdCk7XG4iCisgICAgICAgICIgIG1hdDNfdmFyID0gbWF0MygzLjAgKyBhdm9pZF9vcHQp
O1xuIgorICAgICAgICAiICBtYXQ0X3ZhciA9IG1hdDQoNC4wICsgYXZvaWRfb3B0KTtcbiIKKyAg
ICAgICAgIiAgZ2xfUG9zaXRpb24gPSB2ZWM0KDEuMCk7XG4iCisgICAgICAgICJ9IjsKKworICAg
IGNvbnN0IGNoYXIqIGtGcmFnbWVudFNoYWRlclNvdXJjZSA9CisgICAgICAgICJwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInZhcnlpbmcgdmVjMiB2ZWMyX3ZhcjtcbiIKKyAg
ICAgICAgInZhcnlpbmcgdmVjMyB2ZWMzX3ZhcjtcbiIKKyAgICAgICAgInZhcnlpbmcgdmVjNCB2
ZWM0X3ZhcjtcbiIKKyAgICAgICAgInZhcnlpbmcgZmxvYXQgZmxvYXRfdmFyO1xuIgorICAgICAg
ICAidmFyeWluZyBtYXQyIG1hdDJfdmFyO1xuIgorICAgICAgICAidmFyeWluZyBtYXQzIG1hdDNf
dmFyO1xuIgorICAgICAgICAidmFyeWluZyBtYXQ0IG1hdDRfdmFyO1xuIgorICAgICAgICAidm9p
ZCBtYWluKCkge1xuIgorICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHZlYzJfdmFyLCAw
LCAwKSArIHZlYzQodmVjM192YXIsIDApICsgdmVjNF92YXIgKyAiCisgICAgICAgICIgICAgICAg
ICAgICAgICB2ZWM0KGZsb2F0X3ZhcikgKyAiCisgICAgICAgICIgICAgICAgICAgICAgICB2ZWM0
KG1hdDJfdmFyWzBdWzBdLCBtYXQzX3ZhclsxXVsxXSwgbWF0NF92YXJbMl1bMl0sIDEpO1xuIgor
ICAgICAgICAifSI7CisgICAgLy8gY2xhbmctZm9ybWF0IG9uCisKKyAgICBlbnVtCisgICAgewor
ICAgICAgICBrVmVjMkxvY2F0aW9uID0gMCwKKyAgICAgICAga1ZlYzNMb2NhdGlvbiwKKyAgICAg
ICAga1ZlYzRMb2NhdGlvbiwKKyAgICAgICAga0Zsb2F0TG9jYXRpb24sCisgICAgICAgIGtNYXQy
TG9jYXRpb24sCisgICAgICAgIGtNYXQzTG9jYXRpb24sCisgICAgICAgIGtNYXQ0TG9jYXRpb24s
CisgICAgfTsKKyAgICBzdHJ1Y3QKKyAgICB7CisgICAgICAgIEdMaW50IGxvY2F0aW9uOworICAg
ICAgICBjb25zdCBjaGFyICpuYW1lOworICAgICAgICBHTGludCBjb21wb25lbnRzOworICAgIH0g
dmFyaWFibGVzW10gPSB7CisgICAgICAgIHtrVmVjMkxvY2F0aW9uLCAidmVjMl92YXIiLCAyfSwK
KyAgICAgICAge2tWZWMzTG9jYXRpb24sICJ2ZWMzX3ZhciIsIDN9LAorICAgICAgICB7a1ZlYzRM
b2NhdGlvbiwgInZlYzRfdmFyIiwgNH0sCisgICAgICAgIHtrRmxvYXRMb2NhdGlvbiwgImZsb2F0
X3ZhciIsIDF9LAorICAgICAgICAvLyBJZiBhIHZhcnlpbmcgaXMgbm90IHNpbmdsZS1wcmVjaXNp
b24gZmxvYXRpbmctcG9pbnQgc2NhbGFyIG9yCisgICAgICAgIC8vIHZlY3RvciwgaXQgYWx3YXlz
IGNhdXNlcyBhbiBpbnZhbGlkIG9wZXJhdGlvbi4KKyAgICAgICAge2tNYXQyTG9jYXRpb24sICJt
YXQyX3ZhciIsIC0xfSwKKyAgICAgICAge2tNYXQzTG9jYXRpb24sICJtYXQzX3ZhciIsIC0xfSwK
KyAgICAgICAge2tNYXQ0TG9jYXRpb24sICJtYXQ0X3ZhciIsIC0xfSwKKyAgICB9OworCisgICAg
Y29tcGlsZVByb2dyYW0oa1ZlcnRleFNoYWRlclNvdXJjZSwga0ZyYWdtZW50U2hhZGVyU291cmNl
KTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgQXJyYXlTaXplKHZhcmlhYmxlcyk7ICsr
aSkKKyAgICB7CisgICAgICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNKG1Q
cm9ncmFtLCB2YXJpYWJsZXNbaV0ubG9jYXRpb24sIHZhcmlhYmxlc1tpXS5uYW1lKTsKKyAgICB9
CisKKyAgICAvLyB0ZXN0IHRoYXQgdXNpbmcgaW52YWxpZCAobm90IGxpbmtlZCkgcHJvZ3JhbSBp
cyBhbiBpbnZhbGlkIG9wZXJhdGlvbi4KKyAgICAvLyBTZWUgc2ltaWxhciBjYWxscyBhdCB0aGUg
ZW5kIG9mIHRoZSB0ZXN0IGZvciBkaXNjdXNzaW9uIGFib3V0IHRoZSBhcmd1bWVudHMuCisgICAg
Z2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwgLTEsIEdMX05P
TkUsIDAsIE5VTEwpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7
CisKKyAgICBBU1NFUlRfVFJVRShsaW5rUHJvZ3JhbSgpID09IHRydWUpOworCisgICAgY29uc3Qg
R0xmbG9hdCBrQ29lZmZpY2llbnRzMTZbXSA9IHsxLjBmLCAyLjBmLCAgMy4wZiwgIDQuMGYsICA1
LjBmLCAgNi4wZiwgIDcuMGYsICA4LjBmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOS4wZiwgMTAuMGYsIDExLjBmLCAxMi4wZiwgMTMuMGYsIDE0LjBmLCAxNS4wZiwg
MTYuMGZ9OworICAgIGNvbnN0IEdMZW51bSBrR2VuTW9kZXNbXSA9IHtHTF9OT05FLCBHTF9FWUVf
TElORUFSX0NIUk9NSVVNLCBHTF9PQkpFQ1RfTElORUFSX0NIUk9NSVVNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9DT05TVEFOVF9DSFJPTUlVTX07CisKKyAgICBmb3IgKHNp
emVfdCB2YXJpYWJsZSA9IDA7IHZhcmlhYmxlIDwgQXJyYXlTaXplKHZhcmlhYmxlcyk7ICsrdmFy
aWFibGUpCisgICAgeworICAgICAgICBmb3IgKEdMaW50IGNvbXBvbmVudHMgPSAwOyBjb21wb25l
bnRzIDw9IDQ7ICsrY29tcG9uZW50cykKKyAgICAgICAgeworICAgICAgICAgICAgZm9yIChzaXpl
X3QgZ2VubW9kZSA9IDA7IGdlbm1vZGUgPCBBcnJheVNpemUoa0dlbk1vZGVzKTsgKytnZW5tb2Rl
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElu
cHV0R2VuQ0hST01JVU0obVByb2dyYW0sIHZhcmlhYmxlc1t2YXJpYWJsZV0ubG9jYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrR2Vu
TW9kZXNbZ2VubW9kZV0sIGNvbXBvbmVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBrQ29lZmZpY2llbnRzMTYpOworCisgICAgICAgICAg
ICAgICAgaWYgKGNvbXBvbmVudHMgPT0gMCAmJiBrR2VuTW9kZXNbZ2VubW9kZV0gPT0gR0xfTk9O
RSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYWJsZXNb
dmFyaWFibGVdLmNvbXBvbmVudHMgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIENsZWFyaW5nIGEgZnJhZ21lbnQgaW5wdXQgdGhhdCBpcyBu
b3Qgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZworICAgICAgICAgICAgICAgICAgICAgICAgLy8g
cG9pbnQgc2NhbGFyIG9yIHZlY3RvciBpcyBhbiBpbnZhbGlkIG9wZXJhdGlvbi4KKyAgICAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBDbGVhcmluZyBhIHZhbGlk
IGZyYWdtZW50IGlucHV0IGlzIG9rLgorICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgZWxzZSBpZiAoY29tcG9uZW50cyA9PSAwIHx8IGtHZW5Nb2Rlc1tnZW5t
b2RlXSA9PSBHTF9OT05FKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
QVNTRVJUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBpZiAoY29tcG9uZW50cyA9PSB2YXJpYWJsZXNbdmFyaWFibGVdLmNvbXBvbmVudHMpCisgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNldHRpbmcgYSBn
ZW5lcmF0b3IgZm9yIGEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludAorICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gc2NhbGFyIG9yIHZlY3RvciBmcmFnbWVudCBpbnB1dCBpcyBvay4K
KyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2V0dGluZyBhIGdlbmVyYXRvciB3aGVu
IGNvbXBvbmVudHMgZG8gbm90IG1hdGNoIGlzIGFuIGludmFsaWQgb3BlcmF0aW9uLgorICAgICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKworICAgIGVudW0KKyAgICB7CisgICAgICAgIGtWYWxpZEdlbk1v
ZGUgICAgICA9IEdMX0NPTlNUQU5UX0NIUk9NSVVNLAorICAgICAgICBrVmFsaWRDb21wb25lbnRz
ICAgPSAzLAorICAgICAgICBrSW52YWxpZEdlbk1vZGUgICAgPSAweEFCLAorICAgICAgICBrSW52
YWxpZENvbXBvbmVudHMgPSA1LAorICAgIH07CisKKyAgICAvLyBUaGUgbG9jYXRpb24gPT0gLTEg
d291bGQgbWVhbiBmcmFnbWVudCBpbnB1dCB3YXMgb3B0aW1pemVkIGF3YXkuIEF0IHRoZQorICAg
IC8vIHRpbWUgb2Ygd3JpdGluZywgLTEgY2FuIG5vdCBoYXBwZW4gYmVjYXVzZSB0aGUgb25seSB3
YXkgdG8gb2J0YWluIHRoZQorICAgIC8vIGxvY2F0aW9uIG51bWJlcnMgaXMgdGhyb3VnaCBiaW5k
LiBUZXN0IGp1c3QgdG8gYmUgY29uc2lzdGVudC4KKyAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJ
bnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCAtMSwga1ZhbGlkR2VuTW9kZSwga1ZhbGlkQ29tcG9u
ZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDb2VmZmlj
aWVudHMxNik7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBUZXN0IHRoYXQg
ZXZlbiB0aG91Z2ggdGhlIHNwZWMgc2F5cyBsb2NhdGlvbiA9PSAtMSBjYXVzZXMgdGhlIG9wZXJh
dGlvbiB0bworICAgIC8vIGJlIHNraXBwZWQsIHRoZSB2ZXJpZmljYXRpb24gb2Ygb3RoZXIgcGFy
YW1ldGVycyBpcyBzdGlsbCBkb25lLiBUaGlzIGlzIGEKKyAgICAvLyBHTCBwb2xpY3kuCisgICAg
Z2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwgLTEsIGtJbnZh
bGlkR2VuTW9kZSwga1ZhbGlkQ29tcG9uZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGtDb2VmZmljaWVudHMxNik7CisgICAgQVNTRVJUX0dMX0VSUk9SKEdM
X0lOVkFMSURfRU5VTSk7CisKKyAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9N
SVVNKG1Qcm9ncmFtLCAtMSwga0ludmFsaWRHZW5Nb2RlLCBrSW52YWxpZENvbXBvbmVudHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ29lZmZpY2llbnRzMTYp
OworICAgIEFTU0VSVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOworCisgICAgZ2xQcm9ncmFt
UGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwgLTEsIGtWYWxpZEdlbk1vZGUs
IGtJbnZhbGlkQ29tcG9uZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGtDb2VmZmljaWVudHMxNik7CisgICAgQVNTRVJUX0dMX0VSUk9SKEdMX0lOVkFMSURf
VkFMVUUpOworCisgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKKworICAgIC8vIFRlc3Qg
dGhhdCB1c2luZyBpbnZhbGlkIChkZWxldGVkKSBwcm9ncmFtIGlzIGFuIGludmFsaWQgb3BlcmF0
aW9uLgorICAgIEVYUEVDVF9GQUxTRShnbElzUHJvZ3JhbShtUHJvZ3JhbSkgPT0gR0xfRkFMU0Up
OworCisgICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwg
LTEsIGtWYWxpZEdlbk1vZGUsIGtWYWxpZENvbXBvbmVudHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBrQ29lZmZpY2llbnRzMTYpOworICAgIEFTU0VSVF9HTF9F
UlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7CisKKyAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJ
bnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCAtMSwga0ludmFsaWRHZW5Nb2RlLCBrVmFsaWRDb21w
b25lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0NvZWZm
aWNpZW50czE2KTsKKyAgICBBU1NFUlRfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwor
CisgICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwgLTEs
IGtJbnZhbGlkR2VuTW9kZSwga0ludmFsaWRDb21wb25lbnRzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAga0NvZWZmaWNpZW50czE2KTsKKyAgICBBU1NFUlRfR0xf
RVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50
SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwgLTEsIGtWYWxpZEdlbk1vZGUsIGtJbnZhbGlkQ29t
cG9uZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDb2Vm
ZmljaWVudHMxNik7CisgICAgQVNTRVJUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
KworICAgIG1Qcm9ncmFtID0gMHU7Cit9CisKKy8vIFRlc3QgdGhhdCBoYXZpbmcgaW5wdXQgc3Rh
dGljYWxseSBhbGlhc2VkIGZyYWdtZW50IGlucHV0cyB0aGUgbGlua2luZyBmYWlscworLy8gYW5k
IHRoZW4gc3VjY2VlZHMgd2hlbiB0aGUgY29uZmxpY3QgaXMgcmVzb2x2ZWQuCitURVNUX1AoQ0hS
T01JVU1QYXRoUmVuZGVyaW5nV2l0aFRleHR1cmluZ1Rlc3QsIFRlc3RDb25mbGljdGluZ0JpbmQp
Cit7CisgICAgaWYgKCFpc0FwcGxpY2FibGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
Y2xhbmctZm9ybWF0IG9mZgorICAgIGNvbnN0IGNoYXIqIGtWZXJ0ZXhTaGFkZXJTb3VyY2UgPQor
ICAgICAgICAiYXR0cmlidXRlIHZlYzQgcG9zaXRpb247XG4iCisgICAgICAgICJ2YXJ5aW5nIHZl
YzQgY29sb3JBO1xuIgorICAgICAgICAidmFyeWluZyB2ZWM0IGNvbG9yQjtcbiIKKyAgICAgICAg
InZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjtcbiIK
KyAgICAgICAgIiAgY29sb3JBID0gcG9zaXRpb24gKyB2ZWM0KDEpO1xuIgorICAgICAgICAiICBj
b2xvckIgPSBwb3NpdGlvbiArIHZlYzQoMik7XG4iCisgICAgICAgICJ9IjsKKworICAgIGNvbnN0
IGNoYXIqIGtGcmFnbWVudFNoYWRlclNvdXJjZSA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDtcbiIKKyAgICAgICAgInZhcnlpbmcgdmVjNCBjb2xvckE7XG4iCisgICAgICAgICJ2
YXJ5aW5nIHZlYzQgY29sb3JCO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAg
ICAiICBnbF9GcmFnQ29sb3IgPSBjb2xvckEgKyBjb2xvckI7XG4iCisgICAgICAgICJ9IjsKKyAg
ICAvLyBjbGFuZy1mb3JtYXQgb24KKworICAgIGNvbnN0IEdMaW50IGtDb2xvckFMb2NhdGlvbiA9
IDM7CisgICAgY29uc3QgR0xpbnQga0NvbG9yQkxvY2F0aW9uID0gNDsKKworICAgIGNvbXBpbGVQ
cm9ncmFtKGtWZXJ0ZXhTaGFkZXJTb3VyY2UsIGtGcmFnbWVudFNoYWRlclNvdXJjZSk7CisKKyAg
ICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yQUxv
Y2F0aW9uLCAiY29sb3JBIik7CisgICAgLy8gQmluZCBjb2xvckIgdG8gbG9jYXRpb24gYSwgY2F1
c2luZyBjb25mbGljdHMuIExpbmtpbmcgc2hvdWxkIGZhaWwuCisgICAgZ2xCaW5kRnJhZ21lbnRJ
bnB1dExvY2F0aW9uQ0hST01JVU0obVByb2dyYW0sIGtDb2xvckFMb2NhdGlvbiwgImNvbG9yQiIp
OworCisgICAgLy8gU2hvdWxkIGZhaWwgbm93LgorICAgIEFTU0VSVF9UUlVFKGxpbmtQcm9ncmFt
KCkgPT0gZmFsc2UpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gUmVzb2x2
ZSB0aGUgYmluZCBjb25mbGljdC4KKyAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJP
TUlVTShtUHJvZ3JhbSwga0NvbG9yQkxvY2F0aW9uLCAiY29sb3JCIik7CisKKyAgICBBU1NFUlRf
VFJVRShsaW5rUHJvZ3JhbSgpID09IHRydWUpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwor
fQorCisvLyBUZXN0IGJpbmRpbmcgd2l0aCBhcnJheSB2YXJpYWJsZXMsIHVzaW5nIHplcm8gaW5k
aWNlcy4gVGVzdHMgdGhhdAorLy8gYmluZGluZyBjb2xvckFbMF0gd2l0aCBleHBsaWNpdCAiY29s
b3JBWzBdIiBhcyB3ZWxsIGFzICJjb2xvckEiIHByb2R1Y2VzCisvLyBhIGNvcnJlY3QgbG9jYXRp
b24gdGhhdCBjYW4gYmUgdXNlZCB3aXRoIFBhdGhQcm9ncmFtRnJhZ21lbnRJbnB1dEdlbi4KKy8v
IEZvciBwYXRoIHJlbmRlcmluZywgY29sb3JBWzBdIGlzIGJvdW5kIHRvIGEgbG9jYXRpb24uIFRo
ZSBpbnB1dCBnZW5lcmF0b3IgZm9yCisvLyB0aGUgbG9jYXRpb24gaXMgc2V0IHRvIHByb2R1Y2Ug
dmVjNCgwLCAwLjEsIDAsIDAuMSkuCisvLyBUaGUgZGVmYXVsdCB2YXJ5aW5nLCBjb2xvciwgaXMg
Ym91bmQgdG8gYSBsb2NhdGlvbiBhbmQgaXRzIGdlbmVyYXRvcgorLy8gd2lsbCBwcm9kdWNlIHZl
YzQoMTAuMCkuICBUaGUgc2hhZGVyIHByb2dyYW0gcHJvZHVjZXMgZ3JlZW4gcGl4ZWxzLgorLy8g
Rm9yIHZlcnRleC1iYXNlZCByZW5kZXJpbmcsIHRoZSB2ZXJ0ZXggc2hhZGVyIHByb2R1Y2VzIHRo
ZSBzYW1lIGVmZmVjdCBhcworLy8gdGhlIGlucHV0IGdlbmVyYXRvciBmb3IgcGF0aCByZW5kZXJp
bmcuCitURVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5nV2l0aFRleHR1cmluZ1Rlc3QsIEJpbmRG
cmFnbWVudElucHV0QXJyYXkpCit7CisgICAgaWYgKCFpc0FwcGxpY2FibGUoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy9jbGFuZy1mb3JtYXQgb2ZmCisgICAgY29uc3QgY2hhcioga1ZlcnRl
eFNoYWRlclNvdXJjZSA9CisgICAgICAgICJ1bmlmb3JtIG1hdDQgdmlld19tYXRyaXg7XG4iCisg
ICAgICAgICJ1bmlmb3JtIG1hdDQgY29sb3JfbWF0cml4O1xuIgorICAgICAgICAidW5pZm9ybSB2
ZWMyIG1vZGVsX3RyYW5zbGF0ZTtcbiIKKyAgICAgICAgImF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9u
O1xuIgorICAgICAgICAidmFyeWluZyB2ZWM0IGNvbG9yO1xuIgorICAgICAgICAidmFyeWluZyB2
ZWM0IGNvbG9yQVs0XTtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAg
dmVjNCBwID0gdmVjNChtb2RlbF90cmFuc2xhdGUgKyBwb3NpdGlvbiwgMSwgMSk7XG4iCisgICAg
ICAgICIgIGdsX1Bvc2l0aW9uID0gdmlld19tYXRyaXggKiBwO1xuIgorICAgICAgICAiICBjb2xv
ckFbMF0gPSB2ZWM0KDAuMCwgMC4xLCAwLCAwLjEpO1xuIgorICAgICAgICAiICBjb2xvckFbMV0g
PSB2ZWM0KDAuMik7XG4iCisgICAgICAgICIgIGNvbG9yQVsyXSA9IHZlYzQoMC4zKTtcbiIKKyAg
ICAgICAgIiAgY29sb3JBWzNdID0gdmVjNCgwLjQpO1xuIgorICAgICAgICAiICBjb2xvciA9IHZl
YzQoMTAuMCk7XG4iCisgICAgICAgICJ9IjsKKworICAgIGNvbnN0IGNoYXIqIGtGcmFnbWVudFNo
YWRlclNvdXJjZSA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAg
ICAgInZhcnlpbmcgdmVjNCBjb2xvcjtcbiIKKyAgICAgICAgInZhcnlpbmcgdmVjNCBjb2xvckFb
NF07XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgIGdsX0ZyYWdDb2xv
ciA9IGNvbG9yQVswXSAqIGNvbG9yO1xuIgorICAgICAgICAifSI7CisgICAgLy8gY2xhbmctZm9y
bWF0IG9uCisKKyAgICBjb25zdCBHTGludCBrQ29sb3JBMExvY2F0aW9uID0gNDsKKyAgICBjb25z
dCBHTGludCBrVW51c2VkTG9jYXRpb24gID0gNTsKKyAgICBjb25zdCBHTGZsb2F0IGtDb2xvckEw
W10gICAgID0gezAuMGYsIDAuMWYsIDAuMGYsIDAuMWZ9OworICAgIGNvbnN0IEdMZmxvYXQga0Nv
bG9yW10gICAgICAgPSB7MTAuMGYsIDEwLjBmLCAxMC4wZiwgMTAuMGZ9OworICAgIGNvbnN0IEdM
ZmxvYXQga0ZpbGxDb29yZHNbNl0gPSB7NTkuMGYsIDUwLjBmLCA1MC4wZiwgMjguMGYsIDY2LjBm
LCA2My4wZn07CisKKyAgICBmb3IgKGludCBwYXNzID0gMDsgcGFzcyA8IDI7ICsrcGFzcykKKyAg
ICB7CisgICAgICAgIGNvbXBpbGVQcm9ncmFtKGtWZXJ0ZXhTaGFkZXJTb3VyY2UsIGtGcmFnbWVu
dFNoYWRlclNvdXJjZSk7CisgICAgICAgIGlmIChwYXNzID09IDApCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNKG1Qcm9ncmFtLCBrVW51
c2VkTG9jYXRpb24sICJjb2xvckFbMF0iKTsKKyAgICAgICAgICAgIGdsQmluZEZyYWdtZW50SW5w
dXRMb2NhdGlvbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JBMExvY2F0aW9uLCAiY29sb3JBIik7
CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBnbEJpbmRG
cmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSwga1VudXNlZExvY2F0aW9uLCAi
Y29sb3JBIik7CisgICAgICAgICAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlV
TShtUHJvZ3JhbSwga0NvbG9yQTBMb2NhdGlvbiwgImNvbG9yQVswXSIpOworICAgICAgICB9CisK
KyAgICAgICAgYmluZFByb2dyYW0oKTsKKworICAgICAgICBBU1NFUlRfVFJVRShsaW5rUHJvZ3Jh
bSgpID09IHRydWUpOworCisgICAgICAgIGdsVW5pZm9ybU1hdHJpeDRmdihrVmlld01hdHJpeExv
Y2F0aW9uLCAxLCBHTF9GQUxTRSwga1Byb2plY3Rpb25NYXRyaXgpOworICAgICAgICBnbFByb2dy
YW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JBMExvY2F0aW9u
LCBHTF9DT05TVEFOVF9DSFJPTUlVTSwgNCwga0NvbG9yQTApOworICAgICAgICBnbFByb2dyYW1Q
YXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JGcmFnbWVudElucHV0
TG9jYXRpb24sIEdMX0NPTlNUQU5UX0NIUk9NSVVNLCA0LCBrQ29sb3IpOworICAgICAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKKworICAgICAgICBkcmF3VGVzdFBhdHRlcm4oKTsKKworICAgICAg
ICBmb3IgKGludCBqID0gMDsgaiA8IGtUZXN0Um93czsgKytqKQorICAgICAgICB7CisgICAgICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IGtUZXN0Q29sdW1uczsgKytpKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgQXJyYXlTaXplKGtGaWxs
Q29vcmRzKTsgayArPSAyKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZmxvYXQgZnggPSBrRmlsbENvb3Jkc1trXTsKKyAgICAgICAgICAgICAgICAgICAgY29u
c3QgZmxvYXQgZnkgPSBrRmlsbENvb3Jkc1trICsgMV07CisgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGZsb2F0IHB4ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGkgKiBrU2hhcGVXaWR0aCk7CisgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0IHB5ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGogKiBr
U2hhcGVIZWlnaHQpOworCisgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpHTENvbG9yIGNvbG9y
OworICAgICAgICAgICAgICAgICAgICBjb2xvci5SID0gMDsKKyAgICAgICAgICAgICAgICAgICAg
Y29sb3IuRyA9IDI1NTsKKyAgICAgICAgICAgICAgICAgICAgY29sb3IuQiA9IDA7CisgICAgICAg
ICAgICAgICAgICAgIGNvbG9yLkEgPSAyNTU7CisgICAgICAgICAgICAgICAgICAgIENoZWNrUGl4
ZWxzKHN0YXRpY19jYXN0PEdMaW50PihweCArIGZ4KSwgc3RhdGljX2Nhc3Q8R0xpbnQ+KHB5ICsg
ZnkpLCAxLCAxLCAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcik7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCisv
LyBUZXN0IGJpbmRpbmcgYXJyYXkgdmFyaWFibGVzLiBUaGlzIGlzIGxpa2UgQmluZEZyYWdtZW50
SW5wdXRBcnJheS4KKy8vIEN1cnJlbnRseSBkaXNhYmxlZCBzaW5jZSBpdCBzZWVtcyB0aGVyZSdz
IGEgZHJpdmVyIGJ1ZyB3aXRoIHRoZQorLy8gb2xkZXIgZHJpdmVycy4gVGhpcyBzaG91bGQgd29y
ayB3aXRoIGRyaXZlciA+PSAzNjQuMTIKK1RFU1RfUChDSFJPTUlVTVBhdGhSZW5kZXJpbmdXaXRo
VGV4dHVyaW5nVGVzdCwKKyAgICBESVNBQkxFRF9CaW5kRnJhZ21lbnRJbnB1dEFycmF5Tm9uWmVy
b0luZGV4KQoreworICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgICBjb25zdCBjaGFyKiBrVmVydGV4U2hhZGVyU291
cmNlID0KKyAgICAgICAgInVuaWZvcm0gbWF0NCB2aWV3X21hdHJpeDtcbiIKKyAgICAgICAgInVu
aWZvcm0gbWF0NCBjb2xvcl9tYXRyaXg7XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzIgbW9kZWxf
dHJhbnNsYXRlO1xuIgorICAgICAgICAiYXR0cmlidXRlIHZlYzIgcG9zaXRpb247XG4iCisgICAg
ICAgICJ2YXJ5aW5nIHZlYzQgY29sb3I7XG4iCisgICAgICAgICJ2YXJ5aW5nIHZlYzQgY29sb3JB
WzRdO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICB2ZWM0IHAgPSB2
ZWM0KG1vZGVsX3RyYW5zbGF0ZSArIHBvc2l0aW9uLCAxLCAxKTtcbiIKKyAgICAgICAgIiAgZ2xf
UG9zaXRpb24gPSB2aWV3X21hdHJpeCAqIHA7XG4iCisgICAgICAgICIgIGNvbG9yQVswXSA9IHZl
YzQoMCwgMC4xLCAwLCAwLjEpO1xuIgorICAgICAgICAiICBjb2xvckFbMV0gPSB2ZWM0KDAsIDEs
IDAsIDEpO1xuIgorICAgICAgICAiICBjb2xvckFbMl0gPSB2ZWM0KDAsIDAuOCwgMCwgMC44KTtc
biIKKyAgICAgICAgIiAgY29sb3JBWzNdID0gdmVjNCgwLCAwLjUsIDAsIDAuNSk7XG4iCisgICAg
ICAgICIgIGNvbG9yID0gdmVjNCgwLjIpO1xuIgorICAgICAgICAifVxuIjsKKworICAgIGNvbnN0
IGNoYXIqIGtGcmFnbWVudFNoYWRlclNvdXJjZSA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDtcbiIKKyAgICAgICAgInZhcnlpbmcgdmVjNCBjb2xvckFbNF07XG4iCisgICAgICAg
ICJ2YXJ5aW5nIHZlYzQgY29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAg
ICAgICIgIGdsX0ZyYWdDb2xvciA9IChjb2xvckFbMF0gKiBjb2xvckFbMV0pICtcbiIKKyAgICAg
ICAgIiAgICAgIGNvbG9yQVsyXSArIChjb2xvckFbM10gKiBjb2xvcik7XG4iCisgICAgICAgICJ9
XG4iOworICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorCisgICAgY29uc3QgR0xpbnQga0NvbG9yQTBM
b2NhdGlvbiA9IDQ7CisgICAgY29uc3QgR0xpbnQga0NvbG9yQTFMb2NhdGlvbiA9IDE7CisgICAg
Y29uc3QgR0xpbnQga0NvbG9yQTJMb2NhdGlvbiA9IDI7CisgICAgY29uc3QgR0xpbnQga0NvbG9y
QTNMb2NhdGlvbiA9IDM7CisgICAgY29uc3QgR0xpbnQga1VudXNlZExvY2F0aW9uID0gNTsKKyAg
ICBjb25zdCBHTGZsb2F0IGtDb2xvckEwW10gPSB7MC4wZiwgMC4xZiwgMC4wZiwgMC4xZn07Cisg
ICAgY29uc3QgR0xmbG9hdCBrQ29sb3JBMVtdID0gezAuMGYsIDEuMGYsIDAuMGYsIDEuMGZ9Owor
ICAgIGNvbnN0IEdMZmxvYXQga0NvbG9yQTJbXSA9IHswLjBmLCAwLjhmLCAwLjBmLCAwLjhmfTsK
KyAgICBjb25zdCBHTGZsb2F0IGtDb2xvckEzW10gPSB7MC4wZiwgMC41ZiwgMC4wZiwgMC41Zn07
CisgICAgY29uc3QgR0xmbG9hdCBrQ29sb3JbXSA9IHswLjJmLCAwLjJmLCAwLjJmLCAwLjJmfTsK
KyAgICBjb25zdCBHTGZsb2F0IGtGaWxsQ29vcmRzWzZdID0gezU5LjBmLCA1MC4wZiwgNTAuMGYs
IDI4LjBmLCA2Ni4wZiwgNjMuMGZ9OworCisgICAgY29tcGlsZVByb2dyYW0oa1ZlcnRleFNoYWRl
clNvdXJjZSwga0ZyYWdtZW50U2hhZGVyU291cmNlKTsKKworICAgIGdsQmluZEZyYWdtZW50SW5w
dXRMb2NhdGlvbkNIUk9NSVVNKG1Qcm9ncmFtLCBrVW51c2VkTG9jYXRpb24sICJjb2xvckFbMF0i
KTsKKyAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSwga0Nv
bG9yQTFMb2NhdGlvbiwgImNvbG9yQVsxXSIpOworICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2Nh
dGlvbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JBMkxvY2F0aW9uLCAiY29sb3JBWzJdIik7Cisg
ICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0obVByb2dyYW0sIGtDb2xvckEz
TG9jYXRpb24sICJjb2xvckFbM10iKTsKKyAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25D
SFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yQTBMb2NhdGlvbiwgImNvbG9yQSIpOworICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOworCisgICAgYmluZFByb2dyYW0oKTsKKyAgICBBU1NFUlRfVFJVRShs
aW5rUHJvZ3JhbSgpID09IHRydWUpOworCisgICAgZ2xVbmlmb3JtTWF0cml4NGZ2KGtWaWV3TWF0
cml4TG9jYXRpb24sIDEsIEdMX0ZBTFNFLCBrUHJvamVjdGlvbk1hdHJpeCk7CisKKyAgICBnbFBy
b2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JBMExvY2F0
aW9uLCBHTF9DT05TVEFOVF9DSFJPTUlVTSwgNCwga0NvbG9yQTApOworICAgIGdsUHJvZ3JhbVBh
dGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIGtDb2xvckExTG9jYXRpb24sIEdM
X0NPTlNUQU5UX0NIUk9NSVVNLCA0LCBrQ29sb3JBMSk7CisgICAgZ2xQcm9ncmFtUGF0aEZyYWdt
ZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yQTJMb2NhdGlvbiwgR0xfQ09OU1RB
TlRfQ0hST01JVU0sIDQsIGtDb2xvckEyKTsKKyAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1
dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JBM0xvY2F0aW9uLCBHTF9DT05TVEFOVF9DSFJP
TUlVTSwgNCwga0NvbG9yQTMpOworICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hS
T01JVU0obVByb2dyYW0sIGtDb2xvckZyYWdtZW50SW5wdXRMb2NhdGlvbiwKKyAgICAgICAgR0xf
Q09OU1RBTlRfQ0hST01JVU0sIDQsIGtDb2xvcik7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
CisKKyAgICBkcmF3VGVzdFBhdHRlcm4oKTsKKworICAgIGZvciAoaW50IGogPSAwOyBqIDwga1Rl
c3RSb3dzOyArK2opCisgICAgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGtUZXN0Q29s
dW1uczsgKytpKQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBrID0gMDsgayA8
IEFycmF5U2l6ZShrRmlsbENvb3Jkcyk7IGsgKz0gMikKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjb25zdCBmbG9hdCBmeCA9IGtGaWxsQ29vcmRzW2tdOworICAgICAgICAgICAgICAg
IGNvbnN0IGZsb2F0IGZ5ID0ga0ZpbGxDb29yZHNbayArIDFdOworICAgICAgICAgICAgICAgIGNv
bnN0IGZsb2F0IHB4ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGkgKiBrU2hhcGVXaWR0aCk7CisgICAg
ICAgICAgICAgICAgY29uc3QgZmxvYXQgcHkgPSBzdGF0aWNfY2FzdDxmbG9hdD4oaiAqIGtTaGFw
ZUhlaWdodCk7CisKKyAgICAgICAgICAgICAgICBhbmdsZTo6R0xDb2xvciBjb2xvcjsKKyAgICAg
ICAgICAgICAgICBjb2xvci5SID0gMDsKKyAgICAgICAgICAgICAgICBjb2xvci5HID0gMjU1Owor
ICAgICAgICAgICAgICAgIGNvbG9yLkIgPSAwOworICAgICAgICAgICAgICAgIGNvbG9yLkEgPSAy
NTU7CisgICAgICAgICAgICAgICAgQ2hlY2tQaXhlbHMoc3RhdGljX2Nhc3Q8R0xpbnQ+KHB4ICsg
ZngpLCBzdGF0aWNfY2FzdDxHTGludD4ocHkgKyBmeSksIDEsIDEsIDIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29sb3IpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
fQorCitURVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5nV2l0aFRleHR1cmluZ1Rlc3QsIFVudXNl
ZEZyYWdtZW50SW5wdXRVcGRhdGUpCit7CisgICAgaWYgKCFpc0FwcGxpY2FibGUoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgICBjb25zdCBjaGFyKiBrVmVy
dGV4U2hhZGVyU3RyaW5nID0KKyAgICAgICAgImF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247XG4i
CisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgIGdsX1Bvc2l0aW9uID0gYV9w
b3NpdGlvbjtcbiIKKyAgICAgICAgIn0iOworCisgICAgY29uc3QgY2hhcioga0ZyYWdtZW50U2hh
ZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAg
ICAidW5pZm9ybSB2ZWM0IHVfY29sb3JBO1xuIgorICAgICAgICAidW5pZm9ybSBmbG9hdCB1X2Nv
bG9yVTtcbiIKKyAgICAgICAgInVuaWZvcm0gdmVjNCB1X2NvbG9yQztcbiIKKyAgICAgICAgInZv
aWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdV9jb2xvckEgKyB1X2Nv
bG9yQztcbiIKKyAgICAgICAgIn0iOworICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorCisgICAgY29u
c3QgR0xpbnQga0NvbG9yVUxvY2F0aW9uID0gMTsKKyAgICBjb25zdCBHTGludCBrTm9uZXhpc3Rp
bmdMb2NhdGlvbiA9IDU7CisgICAgY29uc3QgR0xpbnQga1VuYm91bmRMb2NhdGlvbiA9IDY7CisK
KyAgICBjb21waWxlUHJvZ3JhbShrVmVydGV4U2hhZGVyU3RyaW5nLCBrRnJhZ21lbnRTaGFkZXJT
dHJpbmcpOworCisgICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0obVByb2dy
YW0sIGtDb2xvclVMb2NhdGlvbiwgInVfY29sb3JVIik7CisKKyAgICAvLyBUaGUgbm9uLWV4aXN0
aW5nIGlucHV0IHNob3VsZCBiZWhhdmUgbGlrZSBleGlzdGluZyBidXQgb3B0aW1pemVkIGF3YXkg
aW5wdXQuCisgICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0obVByb2dyYW0s
IGtOb25leGlzdGluZ0xvY2F0aW9uLCAibm9uZXhpc3RpbmciKTsKKworICAgIC8vIExldCBBIGFu
ZCBDIGJlIGFzc2lnbmVkIGF1dG9tYXRpYyBsb2NhdGlvbnMuCisgICAgQVNTRVJUX1RSVUUobGlu
a1Byb2dyYW0oKSA9PSB0cnVlKTsKKworICAgIGNvbnN0IEdMZmxvYXQga0NvbG9yWzE2XSA9IHt9
OworCisgICAgLy8gTm8gZXJyb3JzIG9uIGJvdW5kIGxvY2F0aW9ucywgc2luY2UgY2FsbGVyIGRv
ZXMgbm90IGtub3cKKyAgICAvLyBpZiB0aGUgZHJpdmVyIG9wdGltaXplcyB0aGVtIGF3YXkgb3Ig
bm90LgorICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0s
IGtDb2xvclVMb2NhdGlvbiwgR0xfQ09OU1RBTlRfQ0hST01JVU0sIDEsIGtDb2xvcik7CisgICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBObyBlcnJvcnMgb24gYm91bmQgbG9jYXRp
b25zIG9mIG5hbWVzIHRoYXQgZG8gbm90IGV4aXN0CisgICAgLy8gaW4gdGhlIHNoYWRlci4gT3Ro
ZXJ3aXNlIGl0IHdvdWxkIGJlIGluY29uc2lzdGVudCB3cnQgdGhlCisgICAgLy8gb3B0aW1pemF0
aW9uIGNhc2UuCisgICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJv
Z3JhbSwga05vbmV4aXN0aW5nTG9jYXRpb24sIEdMX0NPTlNUQU5UX0NIUk9NSVVNLCAxLCBrQ29s
b3IpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gVGhlIGFib3ZlIGFyZSBl
cXVhbCB0byB1cGRhdGluZyAtMS4KKyAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNI
Uk9NSVVNKG1Qcm9ncmFtLCAtMSwgR0xfQ09OU1RBTlRfQ0hST01JVU0sIDEsIGtDb2xvcik7Cisg
ICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBObyBlcnJvcnMgd2hlbiB1cGRhdGlu
ZyB3aXRoIG90aGVyIHR5cGUgZWl0aGVyLgorICAgIC8vIFRoZSB0eXBlIGNhbiBub3QgYmUga25v
d24gd2l0aCB0aGUgbm9uLWV4aXN0aW5nIGNhc2UuCisgICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50
SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yVUxvY2F0aW9uLCBHTF9DT05TVEFOVF9D
SFJPTUlVTSwgNCwga0NvbG9yKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIGds
UHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIGtOb25leGlzdGlu
Z0xvY2F0aW9uLCBHTF9DT05TVEFOVF9DSFJPTUlVTSwgNCwga0NvbG9yKTsKKyAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKKworICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01J
VU0obVByb2dyYW0sIC0xLCBHTF9DT05TVEFOVF9DSFJPTUlVTSwgNCwga0NvbG9yKTsKKyAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIFVwZGF0aW5nIGFuIHVuYm91bmQsIG5vbi1l
eGlzdGluZyBsb2NhdGlvbiBzdGlsbCBjYXVzZXMgYW4gZXJyb3IuCisgICAgZ2xQcm9ncmFtUGF0
aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwga1VuYm91bmRMb2NhdGlvbiwgR0xf
Q09OU1RBTlRfQ0hST01JVU0sIDQsIGtDb2xvcik7CisgICAgQVNTRVJUX0dMX0VSUk9SKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKK30KKworCit9ICAvLyBuYW1lc3BhY2UKKworQU5HTEVfSU5TVEFO
VElBVEVfVEVTVChDSFJPTUlVTVBhdGhSZW5kZXJpbmdUZXN0LAorICAgICAgICAgICAgICAgICAg
ICAgICBFUzJfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygp
LAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKCksCisgICAgICAgICAgICAgICAg
ICAgICAgIEVTM19PUEVOR0xFUygpKTsKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoQ0hST01JVU1Q
YXRoUmVuZGVyaW5nRHJhd1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0wo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCksCisgICAgICAgICAgICAg
ICAgICAgICAgIEVTM19PUEVOR0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5H
TEVTKCkpOworCitBTkdMRV9JTlNUQU5USUFURV9URVNUKENIUk9NSVVNUGF0aFJlbmRlcmluZ1dp
dGhUZXh0dXJpbmdUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCisg
ICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpLAorICAgICAgICAgICAgICAgICAg
ICAgICBFUzNfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygp
KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvUGJ1ZmZlclRlc3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9QYnVmZmVyVGVzdC5jcHAJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rl
c3RzL1BidWZmZXJUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0MyBAQAorLy8K
Ky8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKworI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKK3VzaW5nIG5hbWVz
cGFjZSBhbmdsZTsKKworY2xhc3MgUGJ1ZmZlclRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7Cisg
IHByb3RlY3RlZDoKKyAgICBQYnVmZmVyVGVzdCgpCisgICAgeworICAgICAgICBzZXRXaW5kb3dX
aWR0aCg1MTIpOworICAgICAgICBzZXRXaW5kb3dIZWlnaHQoNTEyKTsKKyAgICAgICAgc2V0Q29u
ZmlnUmVkQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAgICBz
ZXRDb25maWdCbHVlQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAg
IH0KKworICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCisgICAgeworICAgICAgICBBTkdMRVRlc3Q6
OlNldFVwKCk7CisKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdnNTb3VyY2UgPSBTSEFERVJf
U09VUkNFCisgICAgICAgICgKKyAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKKyAg
ICAgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uOworICAgICAgICAgICAgdmFyeWluZyB2
ZWMyIHRleGNvb3JkOworCisgICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247CisgICAgICAgICAgICAgICAg
dGV4Y29vcmQgPSAocG9zaXRpb24ueHkgKiAwLjUpICsgMC41OworICAgICAgICAgICAgICAgIHRl
eGNvb3JkLnkgPSAxLjAgLSB0ZXhjb29yZC55OworICAgICAgICAgICAgfQorICAgICAgICApOwor
CisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHRleHR1cmVGU1NvdXJjZSA9IFNIQURFUl9TT1VS
Q0UKKyAgICAgICAgKAorICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworICAgICAg
ICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdGV4OworICAgICAgICAgICAgdmFyeWluZyB2ZWMyIHRl
eGNvb3JkOworCisgICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh0ZXgsIHRleGNvb3JkKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICBtVGV4dHVyZVByb2dyYW0gPSBDb21waWxl
UHJvZ3JhbSh2c1NvdXJjZSwgdGV4dHVyZUZTU291cmNlKTsKKyAgICAgICAgaWYgKG1UZXh0dXJl
UHJvZ3JhbSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBGQUlMKCkgPDwgInNoYWRlciBj
b21waWxhdGlvbiBmYWlsZWQuIjsKKyAgICAgICAgfQorCisgICAgICAgIG1UZXh0dXJlVW5pZm9y
bUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVRleHR1cmVQcm9ncmFtLCAidGV4Iik7
CisKKyAgICAgICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKKworICAgICAg
ICBFR0xpbnQgc3VyZmFjZVR5cGUgPSAwOworICAgICAgICBlZ2xHZXRDb25maWdBdHRyaWIod2lu
ZG93LT5nZXREaXNwbGF5KCksIHdpbmRvdy0+Z2V0Q29uZmlnKCksIEVHTF9TVVJGQUNFX1RZUEUs
ICZzdXJmYWNlVHlwZSk7CisgICAgICAgIG1TdXBwb3J0c1BidWZmZXJzID0gKHN1cmZhY2VUeXBl
ICYgRUdMX1BCVUZGRVJfQklUKSAhPSAwOworCisgICAgICAgIEVHTGludCBiaW5kVG9UZXh0dXJl
UkdCQSA9IDA7CisgICAgICAgIGVnbEdldENvbmZpZ0F0dHJpYih3aW5kb3ctPmdldERpc3BsYXko
KSwgd2luZG93LT5nZXRDb25maWcoKSwgRUdMX0JJTkRfVE9fVEVYVFVSRV9SR0JBLCAmYmluZFRv
VGV4dHVyZVJHQkEpOworICAgICAgICBtU3VwcG9ydHNCaW5kVGV4SW1hZ2UgPSAoYmluZFRvVGV4
dHVyZVJHQkEgPT0gRUdMX1RSVUUpOworCisgICAgICAgIGNvbnN0IEVHTGludCBwQnVmZmVyQXR0
cmlidXRlc1tdID0KKyAgICAgICAgeworICAgICAgICAgICAgRUdMX1dJRFRILCBzdGF0aWNfY2Fz
dDxFR0xpbnQ+KG1QYnVmZmVyU2l6ZSksCisgICAgICAgICAgICBFR0xfSEVJR0hULCBzdGF0aWNf
Y2FzdDxFR0xpbnQ+KG1QYnVmZmVyU2l6ZSksCisgICAgICAgICAgICBFR0xfVEVYVFVSRV9GT1JN
QVQsIG1TdXBwb3J0c0JpbmRUZXhJbWFnZSA/IEVHTF9URVhUVVJFX1JHQkEgOiBFR0xfTk9fVEVY
VFVSRSwKKyAgICAgICAgICAgIEVHTF9URVhUVVJFX1RBUkdFVCwgbVN1cHBvcnRzQmluZFRleElt
YWdlID8gRUdMX1RFWFRVUkVfMkQgOiBFR0xfTk9fVEVYVFVSRSwKKyAgICAgICAgICAgIEVHTF9O
T05FLCBFR0xfTk9ORSwKKyAgICAgICAgfTsKKworICAgICAgICBtUGJ1ZmZlciA9IGVnbENyZWF0
ZVBidWZmZXJTdXJmYWNlKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCB3aW5kb3ctPmdldENvbmZpZygp
LCBwQnVmZmVyQXR0cmlidXRlcyk7CisgICAgICAgIGlmIChtU3VwcG9ydHNQYnVmZmVycykKKyAg
ICAgICAgeworICAgICAgICAgICAgQVNTRVJUX05FKG1QYnVmZmVyLCBFR0xfTk9fU1VSRkFDRSk7
CisgICAgICAgICAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKyAgICAgICAgfQorICAgICAgICBl
bHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVF9FUShtUGJ1ZmZlciwgRUdMX05PX1NV
UkZBQ0UpOworICAgICAgICAgICAgQVNTRVJUX0VHTF9FUlJPUihFR0xfQkFEX01BVENIKTsKKyAg
ICAgICAgfQorCisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIH0KKworICAgIHZp
cnR1YWwgdm9pZCBUZWFyRG93bigpCisgICAgeworICAgICAgICBnbERlbGV0ZVByb2dyYW0obVRl
eHR1cmVQcm9ncmFtKTsKKworICAgICAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVHTFdpbmRv
dygpOworICAgICAgICBlZ2xEZXN0cm95U3VyZmFjZSh3aW5kb3ctPmdldERpc3BsYXkoKSwgbVBi
dWZmZXIpOworCisgICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKKyAgICB9CisKKyAgICBH
THVpbnQgbVRleHR1cmVQcm9ncmFtOworICAgIEdMaW50IG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9u
OworCisgICAgY29uc3Qgc2l6ZV90IG1QYnVmZmVyU2l6ZSA9IDMyOworICAgIEVHTFN1cmZhY2Ug
bVBidWZmZXI7CisgICAgYm9vbCBtU3VwcG9ydHNQYnVmZmVyczsKKyAgICBib29sIG1TdXBwb3J0
c0JpbmRUZXhJbWFnZTsKK307CisKKy8vIFRlc3QgY2xlYXJpbmcgYSBQYnVmZmVyIGFuZCBjaGVj
a2luZyB0aGUgY29sb3IgaXMgY29ycmVjdAorVEVTVF9QKFBidWZmZXJUZXN0LCBDbGVhcmluZykK
K3sKKyAgICBpZiAoIW1TdXBwb3J0c1BidWZmZXJzKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0
IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBQYnVmZmVycyBhcmUgbm90IHN1cHBvcnRlZC4iIDw8
IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEVHTFdpbmRvdyAqd2lu
ZG93ID0gZ2V0RUdMV2luZG93KCk7CisKKyAgICAvLyBDbGVhciB0aGUgd2luZG93IHN1cmZhY2Ug
dG8gYmx1ZSBhbmQgdmVyaWZ5CisgICAgZWdsTWFrZUN1cnJlbnQod2luZG93LT5nZXREaXNwbGF5
KCksIHdpbmRvdy0+Z2V0U3VyZmFjZSgpLCB3aW5kb3ctPmdldFN1cmZhY2UoKSwgd2luZG93LT5n
ZXRDb250ZXh0KCkpOworICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworCisgICAgZ2xDbGVhckNv
bG9yKDAuMGYsIDAuMGYsIDEuMGYsIDEuMGYpOworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVS
X0JJVCk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgRVhQRUNUX1BJWEVMX0VRKGdl
dFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIDAsIDAsIDI1NSwgMjU1
KTsKKworICAgIC8vIEFwcGx5IHRoZSBQYnVmZmVyIGFuZCBjbGVhciBpdCB0byBwdXJwbGUgYW5k
IHZlcmlmeQorICAgIGVnbE1ha2VDdXJyZW50KHdpbmRvdy0+Z2V0RGlzcGxheSgpLCBtUGJ1ZmZl
ciwgbVBidWZmZXIsIHdpbmRvdy0+Z2V0Q29udGV4dCgpKTsKKyAgICBBU1NFUlRfRUdMX1NVQ0NF
U1MoKTsKKworICAgIGdsVmlld3BvcnQoMCwgMCwgc3RhdGljX2Nhc3Q8R0xzaXplaT4obVBidWZm
ZXJTaXplKSwgc3RhdGljX2Nhc3Q8R0xzaXplaT4obVBidWZmZXJTaXplKSk7CisgICAgZ2xDbGVh
ckNvbG9yKDEuMGYsIDAuMGYsIDEuMGYsIDEuMGYpOworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVG
RkVSX0JJVCk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgRVhQRUNUX1BJWEVMX0VR
KHN0YXRpY19jYXN0PEdMaW50PihtUGJ1ZmZlclNpemUpIC8gMiwgc3RhdGljX2Nhc3Q8R0xpbnQ+
KG1QYnVmZmVyU2l6ZSkgLyAyLCAyNTUsCisgICAgICAgICAgICAgICAgICAgIDAsIDI1NSwgMjU1
KTsKKworICAgIC8vIFJlYmluZCB0aGUgd2luZG93IHN1cmZhY2UgYW5kIHZlcmlmeSB0aGF0IGl0
IGlzIHN0aWxsIGJsdWUKKyAgICBlZ2xNYWtlQ3VycmVudCh3aW5kb3ctPmdldERpc3BsYXkoKSwg
d2luZG93LT5nZXRTdXJmYWNlKCksIHdpbmRvdy0+Z2V0U3VyZmFjZSgpLCB3aW5kb3ctPmdldENv
bnRleHQoKSk7CisgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CisgICAgRVhQRUNUX1BJWEVMX0VR
KGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIDAsIDAsIDI1NSwg
MjU1KTsKK30KKworLy8gQmluZCB0aGUgUGJ1ZmZlciB0byBhIHRleHR1cmUgYW5kIHZlcmlmeSBp
dCByZW5kZXJzIGNvcnJlY3RseQorVEVTVF9QKFBidWZmZXJUZXN0LCBCaW5kVGV4SW1hZ2UpCit7
CisgICAgaWYgKCFtU3VwcG9ydHNQYnVmZmVycykKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8
PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgUGJ1ZmZlcnMgYXJlIG5vdCBzdXBwb3J0ZWQuIiA8PCBz
dGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1TdXBwb3J0c0Jp
bmRUZXhJbWFnZSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJl
Y2F1c2UgUGJ1ZmZlciBkb2VzIG5vdCBzdXBwb3J0IGJpbmRpbmcgdG8gUkdCQSB0ZXh0dXJlcy4i
IDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEVHTFdpbmRvdyAq
d2luZG93ID0gZ2V0RUdMV2luZG93KCk7CisKKyAgICAvLyBBcHBseSB0aGUgUGJ1ZmZlciBhbmQg
Y2xlYXIgaXQgdG8gcHVycGxlCisgICAgZWdsTWFrZUN1cnJlbnQod2luZG93LT5nZXREaXNwbGF5
KCksIG1QYnVmZmVyLCBtUGJ1ZmZlciwgd2luZG93LT5nZXRDb250ZXh0KCkpOworICAgIEFTU0VS
VF9FR0xfU1VDQ0VTUygpOworCisgICAgZ2xWaWV3cG9ydCgwLCAwLCBzdGF0aWNfY2FzdDxHTHNp
emVpPihtUGJ1ZmZlclNpemUpLCBzdGF0aWNfY2FzdDxHTHNpemVpPihtUGJ1ZmZlclNpemUpKTsK
KyAgICBnbENsZWFyQ29sb3IoMS4wZiwgMC4wZiwgMS4wZiwgMS4wZik7CisgICAgZ2xDbGVhcihH
TF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIEVY
UEVDVF9QSVhFTF9FUShzdGF0aWNfY2FzdDxHTGludD4obVBidWZmZXJTaXplKSAvIDIsIHN0YXRp
Y19jYXN0PEdMaW50PihtUGJ1ZmZlclNpemUpIC8gMiwgMjU1LAorICAgICAgICAgICAgICAgICAg
ICAwLCAyNTUsIDI1NSk7CisKKyAgICAvLyBBcHBseSB0aGUgd2luZG93IHN1cmZhY2UKKyAgICBl
Z2xNYWtlQ3VycmVudCh3aW5kb3ctPmdldERpc3BsYXkoKSwgd2luZG93LT5nZXRTdXJmYWNlKCks
IHdpbmRvdy0+Z2V0U3VyZmFjZSgpLCB3aW5kb3ctPmdldENvbnRleHQoKSk7CisKKyAgICAvLyBD
cmVhdGUgYSB0ZXh0dXJlIGFuZCBiaW5kIHRoZSBQYnVmZmVyIHRvIGl0CisgICAgR0x1aW50IHRl
eHR1cmUgPSAwOworICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleHR1cmUpOworICAgIGdsQmluZFRl
eHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgZ2xUZXhQ
YXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVT
VCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9T
LCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOworICAgIEVYUEVDVF9HTF9OT19F
UlJPUigpOworCisgICAgZWdsQmluZFRleEltYWdlKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCBtUGJ1
ZmZlciwgRUdMX0JBQ0tfQlVGRkVSKTsKKyAgICBnbFZpZXdwb3J0KDAsIDAsIGdldFdpbmRvd1dp
ZHRoKCksIGdldFdpbmRvd0hlaWdodCgpKTsKKyAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKwor
ICAgIC8vIERyYXcgYSBxdWFkIGFuZCB2ZXJpZnkgdGhhdCBpdCBpcyBwdXJwbGUKKyAgICBnbFVz
ZVByb2dyYW0obVRleHR1cmVQcm9ncmFtKTsKKyAgICBnbFVuaWZvcm0xaShtVGV4dHVyZVVuaWZv
cm1Mb2NhdGlvbiwgMCk7CisKKyAgICBkcmF3UXVhZChtVGV4dHVyZVByb2dyYW0sICJwb3NpdGlv
biIsIDAuNWYpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gVW5iaW5kIHRo
ZSB0ZXh0dXJlCisgICAgZWdsUmVsZWFzZVRleEltYWdlKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCBt
UGJ1ZmZlciwgRUdMX0JBQ0tfQlVGRkVSKTsKKyAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKwor
ICAgIC8vIFZlcmlmeSB0aGF0IHB1cnBsZSB3YXMgZHJhd24KKyAgICBFWFBFQ1RfUElYRUxfRVEo
Z2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgMjU1LCAwLCAyNTUs
IDI1NSk7CisKKyAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0ZXh0dXJlKTsKK30KKworLy8gVmVy
aWZ5IHRoYXQgd2hlbiBlZ2xCaW5kL1JlbGVhc2VUZXhJbWFnZSBhcmUgY2FsbGVkLCB0aGUgdGV4
dHVyZSBpbWFnZXMgYXJlIGZyZWVkIGFuZCB0aGVpcgorLy8gc2l6ZSBpbmZvcm1hdGlvbiBpcyBj
b3JyZWN0bHkgdXBkYXRlZC4KK1RFU1RfUChQYnVmZmVyVGVzdCwgVGV4dHVyZVNpemVSZXNldCkK
K3sKKyAgICBpZiAoIW1TdXBwb3J0c1BidWZmZXJzKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0
IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBQYnVmZmVycyBhcmUgbm90IHN1cHBvcnRlZC4iIDw8
IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbVN1cHBvcnRz
QmluZFRleEltYWdlKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQg
YmVjYXVzZSBQYnVmZmVyIGRvZXMgbm90IHN1cHBvcnQgYmluZGluZyB0byBSR0JBIHRleHR1cmVz
LiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR0x1aW50IHRl
eHR1cmUgPSAwOworICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleHR1cmUpOworICAgIGdsQmluZFRl
eHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgZ2xUZXhQ
YXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVT
VCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9T
LCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOworICAgIEVYUEVDVF9HTF9OT19F
UlJPUigpOworCisgICAgZ2xVc2VQcm9ncmFtKG1UZXh0dXJlUHJvZ3JhbSk7CisgICAgZ2xVbmlm
b3JtMWkobVRleHR1cmVVbmlmb3JtTG9jYXRpb24sIDApOworCisgICAgLy8gRmlsbCB0aGUgdGV4
dHVyZSB3aXRoIHdoaXRlIHBpeGVscworICAgIHN0ZDo6dmVjdG9yPEdMdWJ5dGU+IHdoaXRlUGl4
ZWxzKG1QYnVmZmVyU2l6ZSAqIG1QYnVmZmVyU2l6ZSAqIDQsIDI1NSk7CisgICAgZ2xUZXhJbWFn
ZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1QYnVm
ZmVyU2l6ZSksCisgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1QYnVmZmVy
U2l6ZSksIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsICZ3aGl0ZVBpeGVsc1swXSk7Cisg
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBEcmF3IHRoZSB3aGl0ZSB0ZXh0dXJl
IGFuZCB2ZXJpZnkgdGhhdCB0aGUgcGl4ZWxzIGFyZSBjb3JyZWN0CisgICAgZHJhd1F1YWQobVRl
eHR1cmVQcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoMCwg
MCwgMjU1LCAyNTUsIDI1NSwgMjU1KTsKKworICAgIC8vIEJpbmQgdGhlIEVHTCBzdXJmYWNlIGFu
ZCBkcmF3IHdpdGggaXQsIHJlc3VsdHMgYXJlIHVuZGVmaW5lZCBzaW5jZSBub3RoaW5nIGhhcwor
ICAgIC8vIGJlZW4gd3JpdHRlbiB0byBpdAorICAgIEVHTFdpbmRvdyAqd2luZG93ID0gZ2V0RUdM
V2luZG93KCk7CisgICAgZWdsQmluZFRleEltYWdlKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCBtUGJ1
ZmZlciwgRUdMX0JBQ0tfQlVGRkVSKTsKKyAgICBkcmF3UXVhZChtVGV4dHVyZVByb2dyYW0sICJw
b3NpdGlvbiIsIDAuNWYpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gQ2xl
YXIgdGhlIGJhY2sgYnVmZmVyIHRvIGEgdW5pcXVlIGNvbG9yIChncmVlbikKKyAgICBnbENsZWFy
Q29sb3IoMC4wZiwgMS4wZiwgMC4wZiwgMS4wZik7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZG
RVJfQklUKTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMCwgMjU1LCAwLCAyNTUpOworCisg
ICAgLy8gVW5iaW5kIHRoZSBFR0wgc3VyZmFjZSBhbmQgdHJ5IHRvIGRyYXcgd2l0aCB0aGUgdGV4
dHVyZSBhZ2FpbiwgdGhlIHRleHR1cmUncyBzaXplIHNob3VsZAorICAgIC8vIG5vdyBiZSB6ZXJv
IGFuZCBpbmNvbXBsZXRlIHNvIHRoZSBiYWNrIGJ1ZmZlciBzaG91bGQgYmUgYmxhY2sKKyAgICBl
Z2xSZWxlYXNlVGV4SW1hZ2Uod2luZG93LT5nZXREaXNwbGF5KCksIG1QYnVmZmVyLCBFR0xfQkFD
S19CVUZGRVIpOworICAgIGRyYXdRdWFkKG1UZXh0dXJlUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41
Zik7CisgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDAsIDAsIDAsIDI1NSk7Cit9CisKKy8vIEJp
bmQgYSBQYnVmZmVyLCByZWRlZmluZSB0aGUgdGV4dHVyZSwgYW5kIHZlcmlmeSBpdCByZW5kZXJz
IGNvcnJlY3RseQorVEVTVF9QKFBidWZmZXJUZXN0LCBCaW5kVGV4SW1hZ2VBbmRSZWRlZmluZVRl
eHR1cmUpCit7CisgICAgaWYgKCFtU3VwcG9ydHNQYnVmZmVycykKKyAgICB7CisgICAgICAgIHN0
ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgUGJ1ZmZlcnMgYXJlIG5vdCBzdXBwb3J0
ZWQuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1T
dXBwb3J0c0JpbmRUZXhJbWFnZSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBz
a2lwcGVkIGJlY2F1c2UgUGJ1ZmZlciBkb2VzIG5vdCBzdXBwb3J0IGJpbmRpbmcgdG8gUkdCQSB0
ZXh0dXJlcy4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEVH
TFdpbmRvdyAqd2luZG93ID0gZ2V0RUdMV2luZG93KCk7CisKKyAgICAvLyBBcHBseSB0aGUgUGJ1
ZmZlciBhbmQgY2xlYXIgaXQgdG8gcHVycGxlCisgICAgZWdsTWFrZUN1cnJlbnQod2luZG93LT5n
ZXREaXNwbGF5KCksIG1QYnVmZmVyLCBtUGJ1ZmZlciwgd2luZG93LT5nZXRDb250ZXh0KCkpOwor
ICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworCisgICAgZ2xWaWV3cG9ydCgwLCAwLCBzdGF0aWNf
Y2FzdDxHTHNpemVpPihtUGJ1ZmZlclNpemUpLCBzdGF0aWNfY2FzdDxHTHNpemVpPihtUGJ1ZmZl
clNpemUpKTsKKyAgICBnbENsZWFyQ29sb3IoMS4wZiwgMC4wZiwgMS4wZiwgMS4wZik7CisgICAg
Z2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
KworICAgIEVYUEVDVF9QSVhFTF9FUShzdGF0aWNfY2FzdDxHTGludD4obVBidWZmZXJTaXplKSAv
IDIsIHN0YXRpY19jYXN0PEdMaW50PihtUGJ1ZmZlclNpemUpIC8gMiwgMjU1LAorICAgICAgICAg
ICAgICAgICAgICAwLCAyNTUsIDI1NSk7CisKKyAgICAvLyBBcHBseSB0aGUgd2luZG93IHN1cmZh
Y2UKKyAgICBlZ2xNYWtlQ3VycmVudCh3aW5kb3ctPmdldERpc3BsYXkoKSwgd2luZG93LT5nZXRT
dXJmYWNlKCksIHdpbmRvdy0+Z2V0U3VyZmFjZSgpLCB3aW5kb3ctPmdldENvbnRleHQoKSk7CisK
KyAgICAvLyBDcmVhdGUgYSB0ZXh0dXJlIGFuZCBiaW5kIHRoZSBQYnVmZmVyIHRvIGl0CisgICAg
R0x1aW50IHRleHR1cmUgPSAwOworICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleHR1cmUpOworICAg
IGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgZ2xUZXhQYXJhbWV0
ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Cisg
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwg
R0xfTkVBUkVTVCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRV
UkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVY
VFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOworICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOworCisgICAgZWdsQmluZFRleEltYWdlKHdpbmRvdy0+Z2V0RGlzcGxh
eSgpLCBtUGJ1ZmZlciwgRUdMX0JBQ0tfQlVGRkVSKTsKKyAgICBnbFZpZXdwb3J0KDAsIDAsIGdl
dFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpKTsKKyAgICBBU1NFUlRfRUdMX1NVQ0NF
U1MoKTsKKworICAgIC8vIFJlZGVmaW5lIHRoZSB0ZXh0dXJlCisgICAgdW5zaWduZWQgaW50IHBp
eGVsVmFsdWUgPSAweEZGRkYwMEZGOworICAgIHN0ZDo6dmVjdG9yPHVuc2lnbmVkIGludD4gcGl4
ZWxEYXRhKGdldFdpbmRvd1dpZHRoKCkgKiBnZXRXaW5kb3dIZWlnaHQoKSwgcGl4ZWxWYWx1ZSk7
CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIGdldFdpbmRvd1dp
ZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAm
cGl4ZWxEYXRhWzBdKTsKKworICAgIC8vIERyYXcgYSBxdWFkIGFuZCB2ZXJpZnkgdGhhdCBpdCBp
cyBtYWdlbnRhCisgICAgZ2xVc2VQcm9ncmFtKG1UZXh0dXJlUHJvZ3JhbSk7CisgICAgZ2xVbmlm
b3JtMWkobVRleHR1cmVVbmlmb3JtTG9jYXRpb24sIDApOworCisgICAgZHJhd1F1YWQobVRleHR1
cmVQcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
KworICAgIC8vIFZlcmlmeSB0aGF0IG1hZ2VudGEgd2FzIGRyYXduCisgICAgRVhQRUNUX1BJWEVM
X0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIDI1NSwgMCwg
MjU1LCAyNTUpOworCisgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGV4dHVyZSk7Cit9CisKKy8v
IFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5k
ZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVu
IGFnYWluc3QuCitBTkdMRV9JTlNUQU5USUFURV9URVNUKFBidWZmZXJUZXN0LAorICAgICAgICAg
ICAgICAgICAgICAgICBFUzJfRDNEOSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNE
MTEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAorICAgICAgICAgICAg
ICAgICAgICAgICBFUzJfRDNEMTFfV0FSUCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJf
RDNEMTFfUkVGRVJFTkNFKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygp
KTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Qb2lu
dFNwcml0ZXNUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvZ2xfdGVzdHMvUG9pbnRTcHJpdGVzVGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1BvaW50U3ByaXRlc1Rl
c3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTI2IEBACisvLworLy8gQ29weXJpZ2h0
IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gU29t
ZSBvZiB0aGUgcG9pbnRzcHJpdGUgdGVzdHMgYmVsb3cgd2VyZSBwb3J0ZWQgZnJvbSBLaHJvbm9z
IFdlYkdMCisvLyBjb25mb3JtYW5jZSB0ZXN0IHN1aXRlLgorCisjaW5jbHVkZSAidGVzdF91dGls
cy9BTkdMRVRlc3QuaCIKKworI2luY2x1ZGUgPGNtYXRoPgorCit1c2luZyBuYW1lc3BhY2UgYW5n
bGU7CisKK2NsYXNzIFBvaW50U3ByaXRlc1Rlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHBy
b3RlY3RlZDoKKyAgICBjb25zdCBpbnQgd2luZG93V2lkdGggPSAyNTY7CisgICAgY29uc3QgaW50
IHdpbmRvd0hlaWdodCA9IDI1NjsKKyAgICBQb2ludFNwcml0ZXNUZXN0KCkKKyAgICB7CisgICAg
ICAgIHNldFdpbmRvd1dpZHRoKHdpbmRvd1dpZHRoKTsKKyAgICAgICAgc2V0V2luZG93SGVpZ2h0
KHdpbmRvd0hlaWdodCk7CisgICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7CisgICAgICAgIHNl
dENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7CisgICAg
ICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgU2V0
VXAoKQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOworICAgIH0KKworICAgIGZs
b2F0IHMycChmbG9hdCBzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIChzICsgMS4wZikgKiAwLjVm
ICogKEdMZmxvYXQpd2luZG93V2lkdGg7CisgICAgfQorfTsKKworLy8gQ2hlY2tzIGdsX1BvaW50
Q29vcmQgYW5kIGdsX1BvaW50U2l6ZQorLy8gaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvcmVnaXN0
cnkvd2ViZ2wvc2RrL3Rlc3RzL2NvbmZvcm1hbmNlL2dsc2wvdmFyaWFibGVzL2dsLXBvaW50Y29v
cmQuaHRtbAorVEVTVF9QKFBvaW50U3ByaXRlc1Rlc3QsIFBvaW50Q29vcmRBbmRQb2ludFNpemVD
b21wbGlhbmNlKQoreworICAgIC8vIFRPRE8oam1hZGlsbCk6IGZpZ3VyZSBvdXQgd2h5IHRoaXMg
ZmFpbHMKKyAgICBpZiAoSXNJbnRlbCgpICYmIEdldFBhcmFtKCkgPT0gRVMyX0QzRDkoKSkKKyAg
ICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIGR1ZSB0byBm
YWlsdXJlcy4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nIGZzID0gU0hBREVSX1NPVVJDRQorICAgICgKKyAgICAgICAgcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoCisgICAgICAgICAgICAgICAgZ2xfUG9pbnRDb29y
ZC54LAorICAgICAgICAgICAgICAgIGdsX1BvaW50Q29vcmQueSwKKyAgICAgICAgICAgICAgICAw
LAorICAgICAgICAgICAgICAgIDEpOworICAgICAgICB9CisgICAgKTsKKworICAgIGNvbnN0IHN0
ZDo6c3RyaW5nIHZzID0gU0hBREVSX1NPVVJDRQorICAgICgKKyAgICAgICAgYXR0cmlidXRlIHZl
YzQgdlBvc2l0aW9uOworICAgICAgICB1bmlmb3JtIGZsb2F0IHVQb2ludFNpemU7CisgICAgICAg
IHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsX1BvaW50U2l6ZSA9IHVQb2lu
dFNpemU7CisgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHZQb3NpdGlvbjsKKyAgICAgICAgfQor
ICAgICk7CisKKyAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZzLCBmcyk7Cisg
ICAgQVNTRVJUX05FKHByb2dyYW0sIDB1KTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKwor
ICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKKworICAgIEdMZmxvYXQgcG9pbnRTaXplUmFuZ2Vb
Ml0gPSB7fTsKKyAgICBnbEdldEZsb2F0dihHTF9BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UsIHBv
aW50U2l6ZVJhbmdlKTsKKworICAgIEdMZmxvYXQgbWF4UG9pbnRTaXplID0gcG9pbnRTaXplUmFu
Z2VbMV07CisKKyAgICBBU1NFUlRfVFJVRShtYXhQb2ludFNpemUgPj0gMSk7CisgICAgbWF4UG9p
bnRTaXplID0gZmxvb3JmKG1heFBvaW50U2l6ZSk7CisgICAgQVNTRVJUX1RSVUUoKGludCltYXhQ
b2ludFNpemUgJSAxID09IDApOworCisgICAgbWF4UG9pbnRTaXplID0gc3RkOjptaW4obWF4UG9p
bnRTaXplLCA2NC4wZik7CisgICAgR0xmbG9hdCBwb2ludFdpZHRoID0gbWF4UG9pbnRTaXplIC8g
d2luZG93V2lkdGg7CisgICAgR0xpbnQgc3RlcCA9IHN0YXRpY19jYXN0PEdMaW50PihmbG9vcmYo
bWF4UG9pbnRTaXplIC8gNCkpOworICAgIEdMaW50IHBvaW50U3RlcCA9IHN0ZDo6bWF4PEdMaW50
PigxLCBzdGVwKTsKKworICAgIEdMaW50IHBvaW50U2l6ZUxvYyA9IGdsR2V0VW5pZm9ybUxvY2F0
aW9uKHByb2dyYW0sICJ1UG9pbnRTaXplIik7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisK
KyAgICBnbFVuaWZvcm0xZihwb2ludFNpemVMb2MsIG1heFBvaW50U2l6ZSk7CisgICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7CisKKyAgICBHTGZsb2F0IHBpeGVsT2Zmc2V0ID0gKChpbnQpbWF4UG9p
bnRTaXplICUgMikgPyAoMS4wZiAvIChHTGZsb2F0KXdpbmRvd1dpZHRoKSA6IDA7CisgICAgR0x1
aW50IHZlcnRleE9iamVjdCA9IDA7CisgICAgZ2xHZW5CdWZmZXJzKDEsICZ2ZXJ0ZXhPYmplY3Qp
OworICAgIEFTU0VSVF9ORSh2ZXJ0ZXhPYmplY3QsIDBVKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKKworICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIHZlcnRleE9iamVjdCk7
CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBHTGZsb2F0IHRoZVBvaW50c1tdID0g
eyAtMC41ZiArIHBpeGVsT2Zmc2V0LCAtMC41ZiArIHBpeGVsT2Zmc2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLjVmICsgcGl4ZWxPZmZzZXQsIC0wLjVmICsgcGl4ZWxPZmZzZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTAuNWYgKyBwaXhlbE9mZnNldCwgIDAuNWYg
KyBwaXhlbE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC41ZiArIHBpeGVs
T2Zmc2V0LCAgMC41ZiArIHBpeGVsT2Zmc2V0IH07CisKKyAgICBnbEJ1ZmZlckRhdGEoR0xfQVJS
QVlfQlVGRkVSLCBzaXplb2YodGhlUG9pbnRzKSwgdGhlUG9pbnRzLCBHTF9TVEFUSUNfRFJBVyk7
CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5KDApOworICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcigwLCAyLCBHTF9GTE9BVCwgR0xfRkFM
U0UsIDAsIDApOworCisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhf
QlVGRkVSX0JJVCk7CisKKyAgICBnbERyYXdBcnJheXMoR0xfUE9JTlRTLCAwLCA0KTsKKyAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIGdsRGVsZXRlQnVmZmVycygxLCAmdmVydGV4T2Jq
ZWN0KTsKKworICAgIHN0ZDo6c3RyaW5nIGRlYnVnVGV4dDsKKyAgICBmb3IgKGZsb2F0IHB5ID0g
MDsgcHkgPCAyOyArK3B5KSB7CisgICAgICAgIGZvciAoZmxvYXQgcHggPSAwOyBweCA8IDI7ICsr
cHgpIHsKKyAgICAgICAgICAgIGZsb2F0IHBvaW50WCA9IC0wLjVmICsgcHggKyBwaXhlbE9mZnNl
dDsKKyAgICAgICAgICAgIGZsb2F0IHBvaW50WSA9IC0wLjVmICsgcHkgKyBwaXhlbE9mZnNldDsK
KyAgICAgICAgICAgIGZvciAoaW50IHl5ID0gMDsgeXkgPCBtYXhQb2ludFNpemU7IHl5ICs9IHBv
aW50U3RlcCkgeworICAgICAgICAgICAgICAgIGZvciAoaW50IHh4ID0gMDsgeHggPCBtYXhQb2lu
dFNpemU7IHh4ICs9IHBvaW50U3RlcCkgeworICAgICAgICAgICAgICAgICAgICAvLyBmb3JtdWxh
IGZvciBzIGFuZCB0IGZyb20gT3BlbkdMIEVTIDIuMCBzcGVjIHNlY3Rpb24gMy4zCisgICAgICAg
ICAgICAgICAgICAgIGZsb2F0IHh3ID0gczJwKHBvaW50WCk7CisgICAgICAgICAgICAgICAgICAg
IGZsb2F0IHl3ID0gczJwKHBvaW50WSk7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IHUgPSB4
eCAvIG1heFBvaW50U2l6ZSAqIDIgLSAxOworICAgICAgICAgICAgICAgICAgICBmbG9hdCB2ID0g
eXkgLyBtYXhQb2ludFNpemUgKiAyIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHhmID0g
c3RhdGljX2Nhc3Q8aW50PihmbG9vcmYoczJwKHBvaW50WCArIHUgKiBwb2ludFdpZHRoKSkpOwor
ICAgICAgICAgICAgICAgICAgICBpbnQgeWYgPSBzdGF0aWNfY2FzdDxpbnQ+KGZsb29yZihzMnAo
cG9pbnRZICsgdiAqIHBvaW50V2lkdGgpKSk7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IHMg
PSAwLjVmICsgKHhmICsgMC41ZiAtIHh3KSAvIG1heFBvaW50U2l6ZTsKKyAgICAgICAgICAgICAg
ICAgICAgZmxvYXQgdCA9IDAuNWYgKyAoeWYgKyAwLjVmIC0geXcpIC8gbWF4UG9pbnRTaXplOwor
ICAgICAgICAgICAgICAgICAgICBHTHVieXRlIGNvbG9yWzRdID0geyBzdGF0aWNfY2FzdDxHTHVi
eXRlPihmbG9vcmYocyAqIDI1NSkpLCBzdGF0aWNfY2FzdDxHTHVieXRlPihmbG9vcmYoKDEgLSB0
KSAqIDI1NSkpLCAwLCAyNTUgfTsKKyAgICAgICAgICAgICAgICAgICAgRVhQRUNUX1BJWEVMX05F
QVIoeGYsIHlmLCBjb2xvclswXSwgY29sb3JbMV0sIGNvbG9yWzJdLCBjb2xvclszXSwgNCk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCisv
LyBWZXJpZnkgdGhhdCBkcmF3aW5nIGEgcG9pbnQgd2l0aG91dCBlbmFibGluZyBhbnkgYXR0cmli
dXRlcyBzdWNjZWVkcworLy8gaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvcmVnaXN0cnkvd2ViZ2wv
c2RrL3Rlc3RzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9wb2ludC1uby1hdHRyaWJ1dGVzLmh0bWwK
K1RFU1RfUChQb2ludFNwcml0ZXNUZXN0LCBQb2ludFdpdGhvdXRBdHRyaWJ1dGVzQ29tcGxpYW5j
ZSkKK3sKKyAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnMg
PSBTSEFERVJfU09VUkNFCisgICAgKAorICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9y
ID0gdmVjNCgwLjAsIDEuMCwgMC4wLCAxLjApOworICAgICAgICB9CisgICAgKTsKKworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nIHZzID0gU0hBREVSX1NPVVJDRQorICAgICgKKyAgICAgICAgdm9pZCBt
YWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xfUG9pbnRTaXplID0gMi4wOworICAgICAg
ICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgICAgIH0K
KyAgICApOworICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorCisgICAgR0x1aW50IHByb2dyYW0gPSBD
b21waWxlUHJvZ3JhbSh2cywgZnMpOworICAgIEFTU0VSVF9ORShwcm9ncmFtLCAwdSk7CisgICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbSk7CisKKyAg
ICBnbERyYXdBcnJheXMoR0xfUE9JTlRTLCAwLCAxKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1Io
KTsKKworICAgIC8vIGV4cGVjdCB0aGUgY2VudGVyIHBpeGVsIHRvIGJlIGdyZWVuCisgICAgRVhQ
RUNUX1BJWEVMX0VRKCh3aW5kb3dXaWR0aCAtIDEpIC8gMiwgKHdpbmRvd0hlaWdodCAtIDEpIC8g
MiwgMCwgMjU1LCAwLCAyNTUpOworfQorCisvLyBUaGlzIGlzIGEgcmVncmVzc2lvbiB0ZXN0IGZv
ciBhIGdyYXBoaWNzIGRyaXZlciBidWcgYWZmZWN0aW5nIGVuZCBjYXBzIG9uIHJvYWRzIGluIE1h
cHNHTAorLy8gaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvcmVnaXN0cnkvd2ViZ2wvc2RrL3Rlc3Rz
L2NvbmZvcm1hbmNlL3JlbmRlcmluZy9wb2ludC13aXRoLWdsLXBvaW50Y29vcmQtaW4tZnJhZ21l
bnQtc2hhZGVyLmh0bWwKK1RFU1RfUChQb2ludFNwcml0ZXNUZXN0LCBQb2ludENvb3JkUmVncmVz
c2lvblRlc3QpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnMgPSBTSEFERVJfU09VUkNFCisg
ICAgKAorICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgICAgICAgdmFyeWluZyB2
ZWM0IHZfY29sb3I7CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAg
IC8vIEl0IHNlZW1zIGFzIGxvbmcgYXMgdGhpcyBtYXRoZW1hdGljYWwgZXhwcmVzc2lvbiByZWZl
cmVuY2VzCisgICAgICAgICAgICAvLyBnbF9Qb2ludENvb3JkLCB0aGUgZnJhZ21lbnQncyBjb2xv
ciBpcyBpbmNvcnJlY3QuCisgICAgICAgICAgICB2ZWMyIGRpZmYgPSBnbF9Qb2ludENvb3JkIC0g
dmVjMiguNSwgLjUpOworICAgICAgICAgICAgaWYgKGxlbmd0aChkaWZmKSA+IDAuNSkKKyAgICAg
ICAgICAgICAgICBkaXNjYXJkOworCisgICAgICAgICAgICAvLyBUaGUgcG9pbnQgc2hvdWxkIGJl
IGEgc29saWQgY29sb3IuCisgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2X2NvbG9yOworICAg
ICAgICB9CisgICAgKTsKKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzID0gU0hBREVSX1NPVVJD
RQorICAgICgKKyAgICAgICAgdmFyeWluZyB2ZWM0IHZfY29sb3I7CisgICAgICAgIC8vIFRoZSBY
IGFuZCBZIGNvb3JkaW5hdGVzIG9mIHRoZSBjZW50ZXIgb2YgdGhlIHBvaW50LgorICAgICAgICBh
dHRyaWJ1dGUgdmVjMiBhX3ZlcnRleDsKKyAgICAgICAgdW5pZm9ybSBmbG9hdCB1X3BvaW50U2l6
ZTsKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xfUG9pbnRT
aXplID0gdV9wb2ludFNpemU7CisgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoYV92ZXJ0
ZXgsIDAuMCwgMS4wKTsKKyAgICAgICAgICAgIC8vIFRoZSBjb2xvciBvZiB0aGUgcG9pbnQuCisg
ICAgICAgICAgICB2X2NvbG9yID0gdmVjNCgwLjAsIDEuMCwgMC4wLCAxLjApOworICAgICAgICB9
CisgICAgKTsKKworICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odnMsIGZzKTsK
KyAgICBBU1NFUlRfTkUocHJvZ3JhbSwgMHUpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwor
CisgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0pOworCisgICAgR0xmbG9hdCBwb2ludFNpemVSYW5n
ZVsyXSA9IHt9OworICAgIGdsR2V0RmxvYXR2KEdMX0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRSwg
cG9pbnRTaXplUmFuZ2UpOworCisgICAgR0xmbG9hdCBtYXhQb2ludFNpemUgPSBwb2ludFNpemVS
YW5nZVsxXTsKKworICAgIEFTU0VSVF9UUlVFKG1heFBvaW50U2l6ZSA+IDIpOworCisgICAgZ2xD
bGVhckNvbG9yKDAsIDAsIDAsIDEpOworICAgIGdsRGlzYWJsZShHTF9ERVBUSF9URVNUKTsKKyAg
ICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworCisgICAgR0xpbnQgcG9pbnRTaXplTG9j
ID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVfcG9pbnRTaXplIik7CisgICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBHTGZsb2F0IHBvaW50U2l6ZSA9IHN0ZDo6bWluPEdM
ZmxvYXQ+KDIwLjBmLCBtYXhQb2ludFNpemUpOworICAgIGdsVW5pZm9ybTFmKHBvaW50U2l6ZUxv
YywgcG9pbnRTaXplKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIEdMdWludCB2
ZXJ0ZXhPYmplY3QgPSAwOworICAgIGdsR2VuQnVmZmVycygxLCAmdmVydGV4T2JqZWN0KTsKKyAg
ICBBU1NFUlRfTkUodmVydGV4T2JqZWN0LCAwVSk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
CisKKyAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhPYmplY3QpOworICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgR0xmbG9hdCB0aGVQb2ludHNbXSA9IHsgMC4w
ZiwgMC4wZiB9OworCisgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgc2l6ZW9mKHRo
ZVBvaW50cyksIHRoZVBvaW50cywgR0xfU1RBVElDX0RSQVcpOworICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOworCisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKyAgICBnbFZlcnRl
eEF0dHJpYlBvaW50ZXIoMCwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCAwKTsKKworICAgIGds
RHJhd0FycmF5cyhHTF9QT0lOVFMsIDAsIDEpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwor
CisgICAgLy8gZXhwZWN0IHRoZSBjZW50ZXIgcGl4ZWwgdG8gYmUgZ3JlZW4KKyAgICBFWFBFQ1Rf
UElYRUxfRVEoKHdpbmRvd1dpZHRoIC0gMSkgLyAyLCAod2luZG93SGVpZ2h0IC0gMSkgLyAyLCAw
LCAyNTUsIDAsIDI1NSk7CisKKyAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJnZlcnRleE9iamVjdCk7
Cit9CisKKy8vIFZlcmlmeSBHTF9WRVJURVhfUFJPR1JBTV9QT0lOVF9TSVpFIGlzIGVuYWJsZWQK
Ky8vIGh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3dlYmdsL3Nkay90ZXN0cy9jb25m
b3JtYW5jZS9yZW5kZXJpbmcvcG9pbnQtc2l6ZS5odG1sCitURVNUX1AoUG9pbnRTcHJpdGVzVGVz
dCwgUG9pbnRTaXplRW5hYmxlZENvbXBsaWFuY2UpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcg
ZnMgPSBTSEFERVJfU09VUkNFCisgICAgKAorICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKyAgICAgICAgdmFyeWluZyB2ZWM0IGNvbG9yOworCisgICAgICAgIHZvaWQgbWFpbigpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IGNvbG9yOworICAgICAgICB9Cisg
ICAgKTsKKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzID0gU0hBREVSX1NPVVJDRQorICAgICgK
KyAgICAgICAgYXR0cmlidXRlIHZlYzMgcG9zOworICAgICAgICBhdHRyaWJ1dGUgdmVjNCBjb2xv
ckluOworICAgICAgICB1bmlmb3JtIGZsb2F0IHBvaW50U2l6ZTsKKyAgICAgICAgdmFyeWluZyB2
ZWM0IGNvbG9yOworCisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGdsX1BvaW50U2l6ZSA9IHBvaW50U2l6ZTsKKyAgICAgICAgICAgIGNvbG9yID0gY29sb3JJbjsK
KyAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3MsIDEuMCk7CisgICAgICAgIH0KKyAg
ICApOworCisgICAgLy8gVGhlIFdlYkdMIHRlc3QgaXMgZHJhd24gb24gYSAyeDIgY2FudmFzLiBF
bXVsYXRlIHRoaXMgYnkgc2V0dGluZyBhIDJ4MiB2aWV3cG9ydC4KKyAgICBnbFZpZXdwb3J0KDAs
IDAsIDIsIDIpOworCisgICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2cywgZnMp
OworICAgIEFTU0VSVF9ORShwcm9ncmFtLCAwdSk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
CisKKyAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICBnbERpc2FibGUoR0xfQkxFTkQp
OworCisgICAgLy8gVGhlIGNob2ljZSBvZiAoMC40LCAwLjQpIGVuc3VyZXMgdGhhdCB0aGUgY2Vu
dGVycyBvZiB0aGUgc3Vycm91bmRpbmcKKyAgICAvLyBwaXhlbHMgYXJlIG5vdCBjb250YWluZWQg
d2l0aGluIHRoZSBwb2ludCB3aGVuIGl0IGlzIG9mIHNpemUgMSwgYnV0CisgICAgLy8gdGhhdCB0
aGV5IGRlZmluaXRlbHkgYXJlIHdoZW4gaXQgaXMgb2Ygc2l6ZSAyLgorICAgIEdMZmxvYXQgdmVy
dGljZXNbXSA9IHsgMC40ZiwgMC40ZiwgMC4wZiB9OworICAgIEdMdWJ5dGUgY29sb3JzW10gPSB7
IDI1NSwgMCwgMCwgMjU1IH07CisKKyAgICBHTHVpbnQgdmVydGV4T2JqZWN0ID0gMDsKKyAgICBn
bEdlbkJ1ZmZlcnMoMSwgJnZlcnRleE9iamVjdCk7CisgICAgQVNTRVJUX05FKHZlcnRleE9iamVj
dCwgMFUpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xCaW5kQnVmZmVyKEdM
X0FSUkFZX0JVRkZFUiwgdmVydGV4T2JqZWN0KTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
KworICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIHNpemVvZih2ZXJ0aWNlcykgKyBz
aXplb2YoY29sb3JzKSwgTlVMTCwgR0xfU1RBVElDX0RSQVcpOworICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOworCisgICAgZ2xCdWZmZXJTdWJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgMCwgc2l6ZW9m
KHZlcnRpY2VzKSwgdmVydGljZXMpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAg
Z2xCdWZmZXJTdWJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgc2l6ZW9mKHZlcnRpY2VzKSwgc2l6ZW9m
KGNvbG9ycyksIGNvbG9ycyk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbENs
ZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUKTsKKworICAgIGds
VmVydGV4QXR0cmliUG9pbnRlcigwLCAzLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIDApOworICAg
IGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7CisKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50
ZXIoMSwgNCwgR0xfVU5TSUdORURfQllURSwgR0xfVFJVRSwgMCwgKEdMdm9pZCopc2l6ZW9mKHZl
cnRpY2VzKSk7CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgxKTsKKworICAgIEdMaW50
IHBvaW50U2l6ZUxvYyA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJwb2ludFNpemUi
KTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIGdsVW5pZm9ybTFmKHBvaW50U2l6
ZUxvYywgMS4wZik7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbERyYXdBcnJh
eXMoR0xfUE9JTlRTLCAwLCBzdGF0aWNfY2FzdDxHTHNpemVpPihBcnJheVNpemUodmVydGljZXMp
KSAvIDMpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gVGVzdCB0aGUgcGl4
ZWxzIGFyb3VuZCB0aGUgdGFyZ2V0IFJlZCBwaXhlbCB0byBlbnN1cmUKKyAgICAvLyB0aGV5IGFy
ZSB0aGUgZXhwZWN0ZWQgY29sb3IgdmFsdWVzCisgICAgZm9yIChHTGludCB5ID0gMDsgeSA8IDI7
ICsreSkKKyAgICB7CisgICAgICAgIGZvciAoR0xpbnQgeCA9IDA7IHggPCAyOyArK3gpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIC8vIDF4MSBpcyBleHBlY3RlZCB0byBiZSBhIHJlZCBwaXhlbAor
ICAgICAgICAgICAgLy8gQWxsIG90aGVycyBhcmUgYmxhY2sKKyAgICAgICAgICAgIEdMdWJ5dGUg
ZXhwZWN0ZWRDb2xvcls0XSA9IHsgMCwgMCwgMCwgMCB9OworICAgICAgICAgICAgaWYgKHggPT0g
MSAmJiB5ID09IDEpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRDb2xv
clswXSA9IDI1NTsKKyAgICAgICAgICAgICAgICBleHBlY3RlZENvbG9yWzNdID0gMjU1OworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgRVhQRUNUX1BJWEVMX0VRKHgsIHksIGV4cGVjdGVkQ29s
b3JbMF0sIGV4cGVjdGVkQ29sb3JbMV0sIGV4cGVjdGVkQ29sb3JbMl0sIGV4cGVjdGVkQ29sb3Jb
M10pOworICAgICAgICB9CisgICAgfQorCisgICAgR0xmbG9hdCBwb2ludFNpemVSYW5nZVsyXSA9
IHt9OworICAgIGdsR2V0RmxvYXR2KEdMX0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRSwgcG9pbnRT
aXplUmFuZ2UpOworCisgICAgaWYgKHBvaW50U2l6ZVJhbmdlWzFdID49IDIuMCkKKyAgICB7Cisg
ICAgICAgIC8vIERyYXcgYSBwb2ludCBvZiBzaXplIDIgYW5kIHZlcmlmeSBpdCBmaWxscyB0aGUg
YXBwcm9wcmlhdGUgcmVnaW9uLgorICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQg
fCBHTF9ERVBUSF9CVUZGRVJfQklUKTsKKworICAgICAgICBnbFVuaWZvcm0xZihwb2ludFNpemVM
b2MsIDIuMGYpOworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgICAgICBnbERy
YXdBcnJheXMoR0xfUE9JTlRTLCAwLCBzdGF0aWNfY2FzdDxHTHNpemVpPihBcnJheVNpemUodmVy
dGljZXMpKSAvIDMpOworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgICAgICAv
LyBUZXN0IHRoZSBwaXhlbHMgdG8gZW5zdXJlIHRoZSB0YXJnZXQgaXMgQUxMIFJlZCBwaXhlbHMK
KyAgICAgICAgZm9yIChHTGludCB5ID0gMDsgeSA8IDI7ICsreSkKKyAgICAgICAgeworICAgICAg
ICAgICAgZm9yIChHTGludCB4ID0gMDsgeCA8IDI7ICsreCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBFWFBFQ1RfUElYRUxfRVEoeCwgeSwgMjU1LCAwLCAwLCAyNTUpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZ2ZXJ0
ZXhPYmplY3QpOworfQorCisvLyBWZXJpZnkgdGhhdCByZW5kZXJpbmcgd29ya3MgY29ycmVjdGx5
IHdoZW4gZ2xfUG9pbnRTaXplIGlzIGRlY2xhcmVkIGluIGEgc2hhZGVyIGJ1dCBpc24ndCB1c2Vk
CitURVNUX1AoUG9pbnRTcHJpdGVzVGVzdCwgUG9pbnRTaXplRGVjbGFyZWRCdXRVbnVzZWQpCit7
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgdnMgPSBTSEFERVJfU09VUkNFCisgICAgKAorICAgICAg
ICBhdHRyaWJ1dGUgaGlnaHAgdmVjNCBwb3NpdGlvbjsKKworICAgICAgICB2b2lkIG1haW4odm9p
ZCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xfUG9pbnRTaXplID0gMS4wOworICAgICAgICAg
ICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBjb25z
dCBzdGQ6OnN0cmluZyBmcyA9IFNIQURFUl9TT1VSQ0UKKyAgICAoCisgICAgICAgIHZvaWQgbWFp
bih2b2lkKQorICAgICAgICB7CisgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwg
MC4wLCAwLjAsIDEuMCk7CisgICAgICAgIH0KKyAgICApOworCisgICAgR0x1aW50IHByb2dyYW0g
PSBDb21waWxlUHJvZ3JhbSh2cywgZnMpOworICAgIEFTU0VSVF9ORShwcm9ncmFtLCAwdSk7Cisg
ICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbSk7Cisg
ICAgZHJhd1F1YWQocHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41ZiwgMS4wZik7CisgICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBleHBlY3QgdGhlIGNlbnRlciBwaXhlbCB0byBiZSBy
ZWQKKyAgICBFWFBFQ1RfUElYRUxfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hl
aWdodCgpIC8gMiwgMjU1LCAwLCAwLCAyNTUpOworCisgICAgZ2xEZWxldGVQcm9ncmFtKHByb2dy
YW0pOworfQorCisvLyBUZXN0IHRvIGNvdmVyIGEgYnVnIHdoZXJlIHRoZSBEM0QxMSByYXN0ZXJp
emVyIHN0YXRlIHdvdWxkIG5vdCBiZSB1cGRhdGUgd2hlbiBzd2l0Y2hpbmcgYmV0d2VlbgorLy8g
ZHJhdyB0eXBlcy4gIFRoaXMgY2F1c2VzIHRoZSBjdWxsIGZhY2UgdG8gcG90ZW50aWFsbHkgYmUg
aW5jb3JyZWN0IHdoZW4gZHJhd2luZyBlbXVsYXRlZCBwb2ludAorLy8gc3BpdGVzLgorVEVTVF9Q
KFBvaW50U3ByaXRlc1Rlc3QsIFBvaW50U3ByaXRlQWx0ZXJuYXRpbmdEcmF3VHlwZXMpCit7Cisg
ICAgLy8gY2xhbmctZm9ybWF0IG9mZgorICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHBvaW50RlMgPSBT
SEFERVJfU09VUkNFCisgICAgKAorICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAg
ICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0g
dmVjNCgwLjAsIDEuMCwgMC4wLCAxLjApOworICAgICAgICB9CisgICAgKTsKKworICAgIGNvbnN0
IHN0ZDo6c3RyaW5nIHBvaW50VlMgPSBTSEFERVJfU09VUkNFCisgICAgKAorICAgICAgICB2b2lk
IG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICBnbF9Qb2ludFNpemUgPSAxNi4wOworICAg
ICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgICAg
IH0KKyAgICApOworCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgcXVhZEZTID0gU0hBREVSX1NPVVJD
RQorICAgICgKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgIHZvaWQg
bWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAw
LjAsIDAuMCwgMS4wKTsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyBxdWFkVlMgPSBTSEFERVJfU09VUkNFCisgICAgKAorICAgICAgICBwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKyAgICAgICAgYXR0cmlidXRlIHZlYzQgcG9zOworICAgICAgICB2b2lkIG1haW4o
KQorICAgICAgICB7CisgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHBvczsKKyAgICAgICAgfQor
ICAgICk7CisgICAgLy8gY2xhbmctZm9ybWF0IG9uCisKKyAgICBHTHVpbnQgcG9pbnRQcm9ncmFt
ID0gQ29tcGlsZVByb2dyYW0ocG9pbnRWUywgcG9pbnRGUyk7CisgICAgQVNTRVJUX05FKHBvaW50
UHJvZ3JhbSwgMHUpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgR0x1aW50IHF1
YWRQcm9ncmFtID0gQ29tcGlsZVByb2dyYW0ocXVhZFZTLCBxdWFkRlMpOworICAgIEFTU0VSVF9O
RShwb2ludFByb2dyYW0sIDB1KTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIGds
RW5hYmxlKEdMX0NVTExfRkFDRSk7CisgICAgZ2xDdWxsRmFjZShHTF9GUk9OVCk7CisKKyAgICBj
b25zdCBHTGZsb2F0IHF1YWRWZXJ0aWNlc1tdID0geworICAgICAgICAtMS4wZiwgMS4wZiwgMC41
ZiwgMS4wZiwgLTEuMGYsIDAuNWYsIC0xLjBmLCAtMS4wZiwgMC41ZiwKKworICAgICAgICAtMS4w
ZiwgMS4wZiwgMC41ZiwgMS4wZiwgMS4wZiwgIDAuNWYsIDEuMGYsICAtMS4wZiwgMC41ZiwKKyAg
ICB9OworCisgICAgZ2xVc2VQcm9ncmFtKHF1YWRQcm9ncmFtKTsKKyAgICBHTGludCBwb3NpdGlv
bkxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihxdWFkUHJvZ3JhbSwgInBvcyIpOworICAg
IGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxvY2F0aW9uLCAzLCBHTF9GTE9BVCwgR0xf
RkFMU0UsIDAsIHF1YWRWZXJ0aWNlcyk7CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShw
b3NpdGlvbkxvY2F0aW9uKTsKKyAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVTLCAwLCA2KTsK
KworICAgIGdsVXNlUHJvZ3JhbShwb2ludFByb2dyYW0pOworICAgIGdsRHJhd0FycmF5cyhHTF9Q
T0lOVFMsIDAsIDEpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gZXhwZWN0
IHRoZSBjZW50ZXIgcGl4ZWwgdG8gYmUgZ3JlZW4KKyAgICBFWFBFQ1RfUElYRUxfRVEoZ2V0V2lu
ZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgMCwgMjU1LCAwLCAyNTUpOwor
CisgICAgZ2xEZWxldGVQcm9ncmFtKHBvaW50UHJvZ3JhbSk7CisgICAgZ2xEZWxldGVQcm9ncmFt
KHF1YWRQcm9ncmFtKTsKK30KKworLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3Vy
YXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTCisvLyBtYWpvciB2ZXJzaW9u
KSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCisvLworLy8gV2UgdGVzdCBvbiBE
M0QxMSA5XzMgYmVjYXVzZSB0aGUgZXhpc3RpbmcgRDNEMTEgUG9pbnRTcHJpdGUgaW1wbGVtZW50
YXRpb24KKy8vIHVzZXMgR2VvbWV0cnkgU2hhZGVycyB3aGljaCBhcmUgbm90IHN1cHBvcnRlZCBm
b3IgOV8zLgorLy8gRDNEOSBhbmQgRDNEMTEgYXJlIGFsc28gdGVzdGVkIHRvIGVuc3VyZSBubyBy
ZWdyZXNzaW9ucy4KK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoUG9pbnRTcHJpdGVzVGVzdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
RVMyX0QzRDExKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDlfMygpLAor
ICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAg
ICAgIEVTMl9PUEVOR0xFUygpKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9nbF90ZXN0cy9Qcm9ncmFtQmluYXJ5VGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1Byb2dyYW1CaW5hcnlUZXN0LmNw
cAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xf
dGVzdHMvUHJvZ3JhbUJpbmFyeVRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjM5
IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKworI2lu
Y2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI2luY2x1ZGUgIkVHTFdpbmRv
dy5oIgorI2luY2x1ZGUgIk9TV2luZG93LmgiCisjaW5jbHVkZSAidGVzdF91dGlscy9hbmdsZV90
ZXN0X2NvbmZpZ3MuaCIKKwordXNpbmcgbmFtZXNwYWNlIGFuZ2xlOworCitjbGFzcyBQcm9ncmFt
QmluYXJ5VGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIFByb2dy
YW1CaW5hcnlUZXN0KCkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7CisgICAg
ICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOworICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOwor
ICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0JsdWVCaXRz
KDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgfQorCisgICAgdm9pZCBT
ZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7CisKKyAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJD
RQorICAgICAgICAoCisgICAgICAgICAgICBhdHRyaWJ1dGUgdmVjNCBpbnB1dEF0dHJpYnV0ZTsK
KyAgICAgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Z2xfUG9zaXRpb24gPSBpbnB1dEF0dHJpYnV0ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsK
KworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9IFNIQURF
Ul9TT1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEsMCwwLDEpOworICAgICAg
ICAgICAgfQorICAgICAgICApOworCisgICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0o
dmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgICAgIGlmICht
UHJvZ3JhbSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBGQUlMKCkgPDwgInNoYWRlciBj
b21waWxhdGlvbiBmYWlsZWQuIjsKKyAgICAgICAgfQorCisgICAgICAgIGdsR2VuQnVmZmVycygx
LCAmbUJ1ZmZlcik7CisgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1CdWZm
ZXIpOworICAgICAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCAxMjgsIE5VTEwsIEdM
X1NUQVRJQ19EUkFXKTsKKyAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgMCk7
CisKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgfQorCisgICAgdm9pZCBUZWFy
RG93bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0p
OworICAgICAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1CdWZmZXIpOworCisgICAgICAgIEFOR0xF
VGVzdDo6VGVhckRvd24oKTsKKyAgICB9CisKKyAgICBHTGludCBnZXRBdmFpbGFibGVQcm9ncmFt
QmluYXJ5Rm9ybWF0Q291bnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgR0xpbnQgZm9ybWF0Q291
bnQ7CisgICAgICAgIGdsR2V0SW50ZWdlcnYoR0xfTlVNX1BST0dSQU1fQklOQVJZX0ZPUk1BVFNf
T0VTLCAmZm9ybWF0Q291bnQpOworICAgICAgICByZXR1cm4gZm9ybWF0Q291bnQ7CisgICAgfQor
CisgICAgR0x1aW50IG1Qcm9ncmFtOworICAgIEdMdWludCBtQnVmZmVyOworfTsKKworLy8gVGhp
cyB0ZXN0cyB0aGUgYXNzdW1wdGlvbiB0aGF0IGZsb2F0IGF0dHJpYnMgb2YgZGlmZmVyZW50IHNp
emUKKy8vIHNob3VsZCBub3QgaW50ZXJuYWxseSBjYXVzZSBhIHZlcnRleCBzaGFkZXIgcmVjb21w
aWxlIChmb3IgY29udmVyc2lvbikuCitURVNUX1AoUHJvZ3JhbUJpbmFyeVRlc3QsIEZsb2F0RHlu
YW1pY1NoYWRlclNpemUpCit7CisgICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9PRVNfZ2V0
X3Byb2dyYW1fYmluYXJ5IikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tp
cHBlZCBiZWNhdXNlIEdMX09FU19nZXRfcHJvZ3JhbV9iaW5hcnkgaXMgbm90IGF2YWlsYWJsZS4i
CisgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoZ2V0QXZhaWxhYmxlUHJvZ3JhbUJpbmFyeUZvcm1hdENvdW50KCkgPT0gMCkK
KyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2Ugbm8gcHJv
Z3JhbSBiaW5hcnkgZm9ybWF0cyBhcmUgYXZhaWxhYmxlLiIgPDwgc3RkOjplbmRsOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICBnbEJp
bmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtQnVmZmVyKTsKKworICAgIGdsVmVydGV4QXR0cmli
UG9pbnRlcigwLCA0LCBHTF9GTE9BVCwgR0xfRkFMU0UsIDgsIE5VTEwpOworICAgIGdsRW5hYmxl
VmVydGV4QXR0cmliQXJyYXkoMCk7CisgICAgZ2xEcmF3QXJyYXlzKEdMX1BPSU5UUywgMCwgMSk7
CisKKyAgICBHTGludCBwcm9ncmFtTGVuZ3RoOworICAgIGdsR2V0UHJvZ3JhbWl2KG1Qcm9ncmFt
LCBHTF9QUk9HUkFNX0JJTkFSWV9MRU5HVEhfT0VTLCAmcHJvZ3JhbUxlbmd0aCk7CisKKyAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGZvciAoR0xzaXplaSBzaXplID0gMTsgc2l6ZSA8
PSAzOyBzaXplKyspCisgICAgeworICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoMCwgc2l6
ZSwgR0xfRkxPQVQsIEdMX0ZBTFNFLCA4LCBOVUxMKTsKKyAgICAgICAgZ2xFbmFibGVWZXJ0ZXhB
dHRyaWJBcnJheSgwKTsKKyAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1BPSU5UUywgMCwgMSk7CisK
KyAgICAgICAgR0xpbnQgbmV3UHJvZ3JhbUxlbmd0aDsKKyAgICAgICAgZ2xHZXRQcm9ncmFtaXYo
bVByb2dyYW0sIEdMX1BST0dSQU1fQklOQVJZX0xFTkdUSF9PRVMsICZuZXdQcm9ncmFtTGVuZ3Ro
KTsKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgICAgIEVYUEVDVF9FUShwcm9n
cmFtTGVuZ3RoLCBuZXdQcm9ncmFtTGVuZ3RoKTsKKyAgICB9Cit9CisKKy8vIFRlc3RzIHRoYXQg
c3dpdGNoaW5nIGJldHdlZW4gc2lnbmVkIGFuZCB1bnNpZ25lZCB1bi1ub3JtYWxpemVkIGRhdGEg
ZG9lc24ndCB0cmlnZ2VyIGEgYnVnCisvLyBpbiB0aGUgRDNEMTEgYmFjay1lbmQuCitURVNUX1Ao
UHJvZ3JhbUJpbmFyeVRlc3QsIER5bmFtaWNTaGFkZXJzU2lnbmF0dXJlQnVnKQoreworICAgIGds
VXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwg
bUJ1ZmZlcik7CisKKyAgICBHTGludCBhdHRyaWJMb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRp
b24obVByb2dyYW0sICJpbnB1dEF0dHJpYnV0ZSIpOworICAgIEFTU0VSVF9ORSgtMSwgYXR0cmli
TG9jYXRpb24pOworICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoYXR0cmliTG9jYXRpb24p
OworCisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKGF0dHJpYkxvY2F0aW9uLCAyLCBHTF9CWVRF
LCBHTF9GQUxTRSwgMCwgbnVsbHB0cik7CisgICAgZ2xEcmF3QXJyYXlzKEdMX1BPSU5UUywgMCwg
MSk7CisKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoYXR0cmliTG9jYXRpb24sIDIsIEdMX1VO
U0lHTkVEX0JZVEUsIEdMX0ZBTFNFLCAwLCBudWxscHRyKTsKKyAgICBnbERyYXdBcnJheXMoR0xf
UE9JTlRTLCAwLCAxKTsKK30KKworLy8gVGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSB0byBzdWNjZXNz
ZnVsbHkgc2F2ZSBhbmQgbG9hZCBhIHByb2dyYW0gYmluYXJ5LgorVEVTVF9QKFByb2dyYW1CaW5h
cnlUZXN0LCBTYXZlQW5kTG9hZEJpbmFyeSkKK3sKKyAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQo
IkdMX09FU19nZXRfcHJvZ3JhbV9iaW5hcnkiKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8
PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgR0xfT0VTX2dldF9wcm9ncmFtX2JpbmFyeSBpcyBub3Qg
YXZhaWxhYmxlLiIKKyAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmIChnZXRBdmFpbGFibGVQcm9ncmFtQmluYXJ5Rm9ybWF0Q291
bnQoKSA9PSAwKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVj
YXVzZSBubyBwcm9ncmFtIGJpbmFyeSBmb3JtYXRzIGFyZSBhdmFpbGFibGUuIiA8PCBzdGQ6OmVu
ZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHTGludCBwcm9ncmFtTGVuZ3RoID0g
MDsKKyAgICBHTGludCB3cml0dGVuTGVuZ3RoID0gMDsKKyAgICBHTGVudW0gYmluYXJ5Rm9ybWF0
ID0gMDsKKworICAgIGdsR2V0UHJvZ3JhbWl2KG1Qcm9ncmFtLCBHTF9QUk9HUkFNX0JJTkFSWV9M
RU5HVEhfT0VTLCAmcHJvZ3JhbUxlbmd0aCk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisK
KyAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBiaW5hcnkocHJvZ3JhbUxlbmd0aCk7CisgICAgZ2xH
ZXRQcm9ncmFtQmluYXJ5T0VTKG1Qcm9ncmFtLCBwcm9ncmFtTGVuZ3RoLCAmd3JpdHRlbkxlbmd0
aCwgJmJpbmFyeUZvcm1hdCwgYmluYXJ5LmRhdGEoKSk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7CisKKyAgICAvLyBUaGUgbGVuZ3RocyByZXBvcnRlZCBieSBnbEdldFByb2dyYW1pdiBhbmQg
Z2xHZXRQcm9ncmFtQmluYXJ5T0VTIHNob3VsZCBtYXRjaAorICAgIEVYUEVDVF9FUShwcm9ncmFt
TGVuZ3RoLCB3cml0dGVuTGVuZ3RoKTsKKworICAgIGlmICh3cml0dGVuTGVuZ3RoKQorICAgIHsK
KyAgICAgICAgR0x1aW50IHByb2dyYW0yID0gZ2xDcmVhdGVQcm9ncmFtKCk7CisgICAgICAgIGds
UHJvZ3JhbUJpbmFyeU9FUyhwcm9ncmFtMiwgYmluYXJ5Rm9ybWF0LCBiaW5hcnkuZGF0YSgpLCB3
cml0dGVuTGVuZ3RoKTsKKworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgICAg
ICBHTGludCBsaW5rU3RhdHVzOworICAgICAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtMiwgR0xf
TElOS19TVEFUVVMsICZsaW5rU3RhdHVzKTsKKyAgICAgICAgaWYgKGxpbmtTdGF0dXMgPT0gMCkK
KyAgICAgICAgeworICAgICAgICAgICAgR0xpbnQgaW5mb0xvZ0xlbmd0aDsKKyAgICAgICAgICAg
IGdsR2V0UHJvZ3JhbWl2KHByb2dyYW0yLCBHTF9JTkZPX0xPR19MRU5HVEgsICZpbmZvTG9nTGVu
Z3RoKTsKKworICAgICAgICAgICAgaWYgKGluZm9Mb2dMZW5ndGggPiAwKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPEdMY2hhcj4gaW5mb0xvZyhpbmZvTG9nTGVu
Z3RoKTsKKyAgICAgICAgICAgICAgICBnbEdldFByb2dyYW1JbmZvTG9nKHByb2dyYW0yLCBzdGF0
aWNfY2FzdDxHTHNpemVpPihpbmZvTG9nLnNpemUoKSksIE5VTEwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmaW5mb0xvZ1swXSk7CisgICAgICAgICAgICAgICAgRkFJTCgp
IDw8ICJwcm9ncmFtIGxpbmsgZmFpbGVkOiAiIDw8ICZpbmZvTG9nWzBdOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEZBSUwo
KSA8PCAicHJvZ3JhbSBsaW5rIGZhaWxlZC4iOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0y
KTsKKyAgICAgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1CdWZmZXIpOwor
CisgICAgICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoMCwgNCwgR0xfRkxPQVQsIEdMX0ZB
TFNFLCA4LCBOVUxMKTsKKyAgICAgICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7
CisgICAgICAgICAgICBnbERyYXdBcnJheXMoR0xfUE9JTlRTLCAwLCAxKTsKKworICAgICAgICAg
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgICAgIH0KKworICAgICAgICBnbERlbGV0ZVBy
b2dyYW0ocHJvZ3JhbTIpOworICAgIH0KK30KKworLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNo
IGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZl
cnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KK0FOR0xFX0lOU1RBTlRJ
QVRFX1RFU1QoUHJvZ3JhbUJpbmFyeVRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9E
M0Q5KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAorICAgICAgICAgICAg
ICAgICAgICAgICBFUzNfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5H
TCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKCkpOworCitjbGFzcyBQcm9n
cmFtQmluYXJ5VHJhbnNmb3JtRmVlZGJhY2tUZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBw
cm90ZWN0ZWQ6CisgICAgUHJvZ3JhbUJpbmFyeVRyYW5zZm9ybUZlZWRiYWNrVGVzdCgpCisgICAg
eworICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOworICAgICAgICBzZXRXaW5kb3dIZWlnaHQo
MTI4KTsKKyAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnR3Jl
ZW5CaXRzKDgpOworICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKKyAgICAgICAgc2V0Q29u
ZmlnQWxwaGFCaXRzKDgpOworICAgIH0KKworICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nIHZlcnRleFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKCAgICN2ZXJz
aW9uIDMwMCBlc1xuCisgICAgICAgICAgICBpbiB2ZWM0IGlucHV0QXR0cmlidXRlOworICAgICAg
ICAgICAgb3V0IHZlYzQgb3V0cHV0VmFyeWluZzsKKyAgICAgICAgICAgIHZvaWQgbWFpbigpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0cHV0VmFyeWluZyA9IGlucHV0QXR0cmli
dXRlOworICAgICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQorICAgICAgICAoICAgI3Zl
cnNpb24gMzAwIGVzXG4KKyAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKKyAgICAg
ICAgICAgIG91dCB2ZWM0IG91dHB1dENvbG9yOworICAgICAgICAgICAgdm9pZCBtYWluKCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXRwdXRDb2xvciA9IHZlYzQoMSwwLDAsMSk7
CisgICAgICAgICAgICB9CisgICAgICAgICk7CisKKyAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpz
dHJpbmc+IHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3M7CisgICAgICAgIHRyYW5zZm9ybUZlZWRi
YWNrVmFyeWluZ3MucHVzaF9iYWNrKCJvdXRwdXRWYXJ5aW5nIik7CisKKyAgICAgICAgbVByb2dy
YW0gPSBDb21waWxlUHJvZ3JhbVdpdGhUcmFuc2Zvcm1GZWVkYmFjaygKKyAgICAgICAgICAgIHZl
cnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UsIHRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZ3MsCisgICAgICAgICAgICBHTF9TRVBBUkFURV9BVFRSSUJTKTsKKyAgICAgICAgaWYg
KG1Qcm9ncmFtID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIEZBSUwoKSA8PCAic2hhZGVy
IGNvbXBpbGF0aW9uIGZhaWxlZC4iOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAgewor
ICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOworCisgICAgICAgIEFOR0xFVGVzdDo6
VGVhckRvd24oKTsKKyAgICB9CisKKyAgICBHTGludCBnZXRBdmFpbGFibGVQcm9ncmFtQmluYXJ5
Rm9ybWF0Q291bnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgR0xpbnQgZm9ybWF0Q291bnQ7Cisg
ICAgICAgIGdsR2V0SW50ZWdlcnYoR0xfTlVNX1BST0dSQU1fQklOQVJZX0ZPUk1BVFNfT0VTLCAm
Zm9ybWF0Q291bnQpOworICAgICAgICByZXR1cm4gZm9ybWF0Q291bnQ7CisgICAgfQorCisgICAg
R0x1aW50IG1Qcm9ncmFtOworfTsKKworLy8gVGhpcyB0ZXN0cyB0aGUgYXNzdW1wdGlvbiB0aGF0
IGZsb2F0IGF0dHJpYnMgb2YgZGlmZmVyZW50IHNpemUKKy8vIHNob3VsZCBub3QgaW50ZXJuYWxs
eSBjYXVzZSBhIHZlcnRleCBzaGFkZXIgcmVjb21waWxlIChmb3IgY29udmVyc2lvbikuCitURVNU
X1AoUHJvZ3JhbUJpbmFyeVRyYW5zZm9ybUZlZWRiYWNrVGVzdCwgR2V0VHJhbnNmb3JtRmVlZGJh
Y2tWYXJ5aW5nKQoreworICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2dldF9wcm9n
cmFtX2JpbmFyeSIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQg
YmVjYXVzZSBHTF9PRVNfZ2V0X3Byb2dyYW1fYmluYXJ5IGlzIG5vdCBhdmFpbGFibGUuIgorICAg
ICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKGdldEF2YWlsYWJsZVByb2dyYW1CaW5hcnlGb3JtYXRDb3VudCgpID09IDApCisgICAg
eworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIG5vIHByb2dyYW0g
YmluYXJ5IGZvcm1hdHMgYXJlIGF2YWlsYWJsZS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IGJpbmFyeSgwKTsKKyAgICBH
TGludCBwcm9ncmFtTGVuZ3RoID0gMDsKKyAgICBHTGludCB3cml0dGVuTGVuZ3RoID0gMDsKKyAg
ICBHTGVudW0gYmluYXJ5Rm9ybWF0ID0gMDsKKworICAgIC8vIFNhdmUgdGhlIHByb2dyYW0gYmlu
YXJ5IG91dAorICAgIGdsR2V0UHJvZ3JhbWl2KG1Qcm9ncmFtLCBHTF9QUk9HUkFNX0JJTkFSWV9M
RU5HVEhfT0VTLCAmcHJvZ3JhbUxlbmd0aCk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cisg
ICAgYmluYXJ5LnJlc2l6ZShwcm9ncmFtTGVuZ3RoKTsKKyAgICBnbEdldFByb2dyYW1CaW5hcnlP
RVMobVByb2dyYW0sIHByb2dyYW1MZW5ndGgsICZ3cml0dGVuTGVuZ3RoLCAmYmluYXJ5Rm9ybWF0
LCBiaW5hcnkuZGF0YSgpKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIGdsRGVs
ZXRlUHJvZ3JhbShtUHJvZ3JhbSk7CisKKyAgICAvLyBMb2FkIHByb2dyYW0gYmluYXJ5CisgICAg
bVByb2dyYW0gPSBnbENyZWF0ZVByb2dyYW0oKTsKKyAgICBnbFByb2dyYW1CaW5hcnlPRVMobVBy
b2dyYW0sIGJpbmFyeUZvcm1hdCwgYmluYXJ5LmRhdGEoKSwgd3JpdHRlbkxlbmd0aCk7CisKKyAg
ICAvLyBFbnN1cmUgdGhlIGxvYWRlZCBiaW5hcnkgaXMgbGlua2VkCisgICAgR0xpbnQgbGlua1N0
YXR1czsKKyAgICBnbEdldFByb2dyYW1pdihtUHJvZ3JhbSwgR0xfTElOS19TVEFUVVMsICZsaW5r
U3RhdHVzKTsKKyAgICBFWFBFQ1RfVFJVRShsaW5rU3RhdHVzICE9IDApOworCisgICAgLy8gUXVl
cnkgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHRyYW5zZm9ybSBmZWVkYmFjayB2YXJ5aW5nCisgICAg
Y2hhciB2YXJ5aW5nTmFtZVs2NF07CisgICAgR0xzaXplaSB2YXJ5aW5nU2l6ZSA9IDA7CisgICAg
R0xlbnVtIHZhcnlpbmdUeXBlID0gR0xfTk9ORTsKKworICAgIGdsR2V0VHJhbnNmb3JtRmVlZGJh
Y2tWYXJ5aW5nKG1Qcm9ncmFtLCAwLCA2NCwgJndyaXR0ZW5MZW5ndGgsICZ2YXJ5aW5nU2l6ZSwg
JnZhcnlpbmdUeXBlLCB2YXJ5aW5nTmFtZSk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisK
KyAgICBFWFBFQ1RfRVEoMTMsIHdyaXR0ZW5MZW5ndGgpOworICAgIEVYUEVDVF9TVFJFUSgib3V0
cHV0VmFyeWluZyIsIHZhcnlpbmdOYW1lKTsKKyAgICBFWFBFQ1RfRVEoMSwgdmFyeWluZ1NpemUp
OworICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRkxPQVRfVkVDNCwgdmFyeWluZ1R5cGUpOworCisg
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGlj
aCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2
ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCitBTkdMRV9JTlNUQU5U
SUFURV9URVNUKFByb2dyYW1CaW5hcnlUcmFuc2Zvcm1GZWVkYmFja1Rlc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgIEVTM19EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BF
TkdMKCkpOworCisvLyBGb3IgdGhlIFByb2dyYW1CaW5hcmllc0Fjcm9zc1BsYXRmb3JtcyB0ZXN0
cywgd2UgbmVlZCB0d28gc2V0cyBvZiBwYXJhbXM6CisvLyAtIGEgc2V0IHRvIHNhdmUgdGhlIHBy
b2dyYW0gYmluYXJ5CisvLyAtIGEgc2V0IHRvIGxvYWQgdGhlIHByb2dyYW0gYmluYXJ5CisvLyBX
ZSBjb21iaW5lIHRoZXNlIGludG8gb25lIHN0cnVjdCBleHRlbmRpbmcgUGxhdGZvcm1QYXJhbWV0
ZXJzIHNvIHdlIGNhbiByZXVzZSBleGlzdGluZyBBTkdMRSB0ZXN0IG1hY3Jvcworc3RydWN0IFBs
YXRmb3Jtc1dpdGhMaW5rUmVzdWx0IDogUGxhdGZvcm1QYXJhbWV0ZXJzCit7CisgICAgUGxhdGZv
cm1zV2l0aExpbmtSZXN1bHQoUGxhdGZvcm1QYXJhbWV0ZXJzIHNhdmVQYXJhbXMsIFBsYXRmb3Jt
UGFyYW1ldGVycyBsb2FkUGFyYW1zSW4sIGJvb2wgZXhwZWN0ZWRMaW5rUmVzdWx0SW4pCisgICAg
eworICAgICAgICBtYWpvclZlcnNpb24gPSBzYXZlUGFyYW1zLm1ham9yVmVyc2lvbjsKKyAgICAg
ICAgbWlub3JWZXJzaW9uID0gc2F2ZVBhcmFtcy5taW5vclZlcnNpb247CisgICAgICAgIGVnbFBh
cmFtZXRlcnMgPSBzYXZlUGFyYW1zLmVnbFBhcmFtZXRlcnM7CisgICAgICAgIGxvYWRQYXJhbXMg
PSBsb2FkUGFyYW1zSW47CisgICAgICAgIGV4cGVjdGVkTGlua1Jlc3VsdCA9IGV4cGVjdGVkTGlu
a1Jlc3VsdEluOworICAgIH0KKworICAgIFBsYXRmb3JtUGFyYW1ldGVycyBsb2FkUGFyYW1zOwor
ICAgIGJvb2wgZXhwZWN0ZWRMaW5rUmVzdWx0OworfTsKKworLy8gUHJvdmlkZSBhIGN1c3RvbSBn
dGVzdCBwYXJhbWV0ZXIgbmFtZSBmdW5jdGlvbiBmb3IgUGxhdGZvcm1zV2l0aExpbmtSZXN1bHQK
Ky8vIHRvIGF2b2lkIHJldHVybmluZyB0aGUgc2FtZSBwYXJhbWV0ZXIgbmFtZSB0d2ljZS4gU3Vj
aCBhIGNvbmZsaWN0IHdvdWxkIGhhcHBlbgorLy8gYmV0d2VlbiBFUzJfRDNEMTFfdG9fRVMyRDNE
MTEgYW5kIEVTMl9EM0QxMV90b19FUzNEM0QxMSBhcyB0aGV5IHdlcmUgYm90aAorLy8gbmFtZWQg
RVMyX0QzRDExCitzdGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBzdHJlYW0s
IGNvbnN0IFBsYXRmb3Jtc1dpdGhMaW5rUmVzdWx0ICZwbGF0Zm9ybSkKK3sKKyAgICBjb25zdCBQ
bGF0Zm9ybVBhcmFtZXRlcnMgJnBsYXRmb3JtMSA9IHBsYXRmb3JtOworICAgIGNvbnN0IFBsYXRm
b3JtUGFyYW1ldGVycyAmcGxhdGZvcm0yID0gcGxhdGZvcm0ubG9hZFBhcmFtczsKKyAgICBzdHJl
YW0gPDwgcGxhdGZvcm0xIDw8ICJfdG9fIiA8PCBwbGF0Zm9ybTI7CisgICAgcmV0dXJuIHN0cmVh
bTsKK30KKworY2xhc3MgUHJvZ3JhbUJpbmFyaWVzQWNyb3NzUGxhdGZvcm1zIDogcHVibGljIHRl
c3Rpbmc6OlRlc3RXaXRoUGFyYW08UGxhdGZvcm1zV2l0aExpbmtSZXN1bHQ+Cit7CisgIHB1Ymxp
YzoKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIG1PU1dpbmRvdyA9
IENyZWF0ZU9TV2luZG93KCk7CisgICAgICAgIGJvb2wgcmVzdWx0ID0gbU9TV2luZG93LT5pbml0
aWFsaXplKCJQcm9ncmFtQmluYXJpZXNBY3Jvc3NSZW5kZXJlcnNUZXN0cyIsIDEwMCwgMTAwKTsK
KworICAgICAgICBpZiAocmVzdWx0ID09IGZhbHNlKQorICAgICAgICB7CisgICAgICAgICAgICBG
QUlMKCkgPDwgIkZhaWxlZCB0byBjcmVhdGUgT1Mgd2luZG93IjsKKyAgICAgICAgfQorICAgIH0K
KworICAgIEVHTFdpbmRvdyAqY3JlYXRlQW5kSW5pdEVHTFdpbmRvdyhhbmdsZTo6UGxhdGZvcm1Q
YXJhbWV0ZXJzICZwYXJhbSkKKyAgICB7CisgICAgICAgIEVHTFdpbmRvdyAqZWdsV2luZG93ID0K
KyAgICAgICAgICAgIG5ldyBFR0xXaW5kb3cocGFyYW0ubWFqb3JWZXJzaW9uLCBwYXJhbS5taW5v
clZlcnNpb24sIHBhcmFtLmVnbFBhcmFtZXRlcnMpOworICAgICAgICBib29sIHJlc3VsdCA9IGVn
bFdpbmRvdy0+aW5pdGlhbGl6ZUdMKG1PU1dpbmRvdyk7CisgICAgICAgIGlmIChyZXN1bHQgPT0g
ZmFsc2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIFNhZmVEZWxldGUoZWdsV2luZG93KTsKKyAg
ICAgICAgICAgIGVnbFdpbmRvdyA9IG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gZWdsV2luZG93OworICAgIH0KKworICAgIHZvaWQgZGVzdHJveUVHTFdpbmRvdyhFR0xXaW5k
b3cgKiplZ2xXaW5kb3cpCisgICAgeworICAgICAgICBBU1NFUlQoKmVnbFdpbmRvdyAhPSBudWxs
cHRyKTsKKyAgICAgICAgKCplZ2xXaW5kb3cpLT5kZXN0cm95R0woKTsKKyAgICAgICAgU2FmZURl
bGV0ZSgqZWdsV2luZG93KTsKKyAgICAgICAgKmVnbFdpbmRvdyA9IG51bGxwdHI7CisgICAgfQor
CisgICAgR0x1aW50IGNyZWF0ZUVTMlByb2dyYW1Gcm9tU291cmNlKCkKKyAgICB7CisgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIHRlc3RWZXJ0ZXhTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNF
CisgICAgICAgICgKKyAgICAgICAgICAgIGF0dHJpYnV0ZSBoaWdocCB2ZWM0IHBvc2l0aW9uOwor
CisgICAgICAgICAgICB2b2lkIG1haW4odm9pZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOworICAgICAgICAgICAgfQorICAgICAgICApOwor
CisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHRlc3RGcmFnbWVudFNoYWRlclNvdXJjZSA9IFNI
QURFUl9TT1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAgdm9pZCBtYWluKHZvaWQpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwg
MC4wLCAxLjApOworICAgICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAgIHJldHVybiBD
b21waWxlUHJvZ3JhbSh0ZXN0VmVydGV4U2hhZGVyU291cmNlLCB0ZXN0RnJhZ21lbnRTaGFkZXJT
b3VyY2UpOworICAgIH0KKworICAgIEdMdWludCBjcmVhdGVFUzNQcm9ncmFtRnJvbVNvdXJjZSgp
CisgICAgeworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB0ZXN0VmVydGV4U2hhZGVyU291cmNl
ID0gU0hBREVSX1NPVVJDRQorICAgICAgICAoICAgI3ZlcnNpb24gMzAwIGVzXG4KKyAgICAgICAg
ICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKKyAgICAgICAgICAgIGluIGhpZ2hwIHZlYzQgcG9z
aXRpb247CisKKyAgICAgICAgICAgIHZvaWQgbWFpbih2b2lkKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247CisgICAgICAgICAgICB9CisgICAg
ICAgICk7CisKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdEZyYWdtZW50U2hhZGVyU291
cmNlID0gU0hBREVSX1NPVVJDRQorICAgICAgICAoICAgI3ZlcnNpb24gMzAwIGVzIFxuCisgICAg
ICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisgICAgICAgICAgICBvdXQgdmVjNCBvdXRf
RnJhZ0NvbG9yOworCisgICAgICAgICAgICB2b2lkIG1haW4odm9pZCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBvdXRfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjAp
OworICAgICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAgIHJldHVybiBDb21waWxlUHJv
Z3JhbSh0ZXN0VmVydGV4U2hhZGVyU291cmNlLCB0ZXN0RnJhZ21lbnRTaGFkZXJTb3VyY2UpOwor
ICAgIH0KKworICAgIHZvaWQgZHJhd1dpdGhQcm9ncmFtKEdMdWludCBwcm9ncmFtKQorICAgIHsK
KyAgICAgICAgZ2xDbGVhckNvbG9yKDAsIDAsIDAsIDEpOworICAgICAgICBnbENsZWFyKEdMX0NP
TE9SX0JVRkZFUl9CSVQpOworCisgICAgICAgIEdMaW50IHBvc2l0aW9uTG9jYXRpb24gPSBnbEdl
dEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sICJwb3NpdGlvbiIpOworCisgICAgICAgIGdsVXNlUHJv
Z3JhbShwcm9ncmFtKTsKKworICAgICAgICBjb25zdCBHTGZsb2F0IHZlcnRpY2VzW10gPQorICAg
ICAgICB7CisgICAgICAgICAgICAtMS4wZiwgIDEuMGYsIDAuNWYsCisgICAgICAgICAgICAtMS4w
ZiwgLTEuMGYsIDAuNWYsCisgICAgICAgICAgICAgMS4wZiwgLTEuMGYsIDAuNWYsCisKKyAgICAg
ICAgICAgIC0xLjBmLCAgMS4wZiwgMC41ZiwKKyAgICAgICAgICAgICAxLjBmLCAtMS4wZiwgMC41
ZiwKKyAgICAgICAgICAgICAxLjBmLCAgMS4wZiwgMC41ZiwKKyAgICAgICAgfTsKKworICAgICAg
ICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25Mb2NhdGlvbiwgMywgR0xfRkxPQVQsIEdM
X0ZBTFNFLCAwLCB2ZXJ0aWNlcyk7CisgICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXko
cG9zaXRpb25Mb2NhdGlvbik7CisKKyAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywg
MCwgNik7CisKKyAgICAgICAgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2Nh
dGlvbik7CisgICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxvY2F0aW9uLCA0
LCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIE5VTEwpOworCisgICAgICAgIEVYUEVDVF9QSVhFTF9F
UShtT1NXaW5kb3ctPmdldFdpZHRoKCkgLyAyLCBtT1NXaW5kb3ctPmdldEhlaWdodCgpIC8gMiwg
MjU1LCAwLCAwLCAyNTUpOworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgbU9TV2luZG93LT5kZXN0cm95KCk7CisgICAgICAgIFNhZmVEZWxldGUo
bU9TV2luZG93KTsKKyAgICB9CisKKyAgICBPU1dpbmRvdyAqbU9TV2luZG93OworfTsKKworLy8g
VHJpZXMgdG8gY3JlYXRlIGEgcHJvZ3JhbSBiaW5hcnkgdXNpbmcgb25lIHNldCBvZiBwbGF0Zm9y
bSBwYXJhbXMsIHRoZW4gbG9hZCBpdCB1c2luZyBhIGRpZmZlcmVudCBzZW50IG9mIHBhcmFtcwor
VEVTVF9QKFByb2dyYW1CaW5hcmllc0Fjcm9zc1BsYXRmb3JtcywgQ3JlYXRlQW5kUmVsb2FkQmlu
YXJ5KQoreworICAgIGFuZ2xlOjpQbGF0Zm9ybVBhcmFtZXRlcnMgZmlyc3RSZW5kZXJlciAgPSBH
ZXRQYXJhbSgpOworICAgIGFuZ2xlOjpQbGF0Zm9ybVBhcmFtZXRlcnMgc2Vjb25kUmVuZGVyZXIg
PSBHZXRQYXJhbSgpLmxvYWRQYXJhbXM7CisgICAgYm9vbCBleHBlY3RlZExpbmtSZXN1bHQgICAg
ICAgICAgICAgICAgICA9IEdldFBhcmFtKCkuZXhwZWN0ZWRMaW5rUmVzdWx0OworCisgICAgaWYg
KCEoSXNQbGF0Zm9ybUF2YWlsYWJsZShmaXJzdFJlbmRlcmVyKSkpCisgICAgeworICAgICAgICBz
dGQ6OmNvdXQgPDwgIkZpcnN0IHJlbmRlcmVyIG5vdCBzdXBwb3J0ZWQsIHNraXBwaW5nIHRlc3Qi
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCEoSXNQbGF0Zm9ybUF2YWlsYWJs
ZShzZWNvbmRSZW5kZXJlcikpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJTZWNvbmQg
cmVuZGVyZXIgbm90IHN1cHBvcnRlZCwgc2tpcHBpbmcgdGVzdCI7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBFR0xXaW5kb3cgKmVnbFdpbmRvdyA9IG51bGxwdHI7CisgICAgc3RkOjp2
ZWN0b3I8dWludDhfdD4gYmluYXJ5KDApOworICAgIEdMdWludCBwcm9ncmFtID0gMDsKKworICAg
IEdMaW50IHByb2dyYW1MZW5ndGggPSAwOworICAgIEdMaW50IHdyaXR0ZW5MZW5ndGggPSAwOwor
ICAgIEdMZW51bSBiaW5hcnlGb3JtYXQgPSAwOworCisgICAgLy8gQ3JlYXRlIGEgRUdMIHdpbmRv
dyB3aXRoIHRoZSBmaXJzdCByZW5kZXJlcgorICAgIGVnbFdpbmRvdyA9IGNyZWF0ZUFuZEluaXRF
R0xXaW5kb3coZmlyc3RSZW5kZXJlcik7CisgICAgaWYgKGVnbFdpbmRvdyA9PSBudWxscHRyKQor
ICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJGYWlsZWQgdG8gY3JlYXRlIEVHTCB3aW5kb3ciOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gSWYgdGhlIHRlc3QgaXMgdHJ5aW5nIHRv
IHVzZSBib3RoIHRoZSBkZWZhdWx0IEdQVSBhbmQgV0FSUCwgYnV0IHRoZSBkZWZhdWx0IEdQVSAq
SVMqIFdBUlAsCisgICAgLy8gdGhlbiBvdXIgZXhwZWN0YXRpb25zIGZvciB0aGUgdGVzdCByZXN1
bHRzIHdpbGwgYmUgaW52YWxpZC4KKyAgICBpZiAoZmlyc3RSZW5kZXJlci5lZ2xQYXJhbWV0ZXJz
LmRldmljZVR5cGUgIT0gRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX1dBUlBfQU5HTEUg
JiYKKyAgICAgICAgc2Vjb25kUmVuZGVyZXIuZWdsUGFyYW1ldGVycy5kZXZpY2VUeXBlID09IEVH
TF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9XQVJQX0FOR0xFKQorICAgIHsKKyAgICAgICAg
c3RkOjpzdHJpbmcgcmVuZGVyZXJTdHJpbmcgPSBzdGQ6OnN0cmluZyhyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihnbEdldFN0cmluZyhHTF9SRU5ERVJFUikpKTsKKyAgICAgICAgc3RkOjp0
cmFuc2Zvcm0ocmVuZGVyZXJTdHJpbmcuYmVnaW4oKSwgcmVuZGVyZXJTdHJpbmcuZW5kKCksIHJl
bmRlcmVyU3RyaW5nLmJlZ2luKCksIDo6dG9sb3dlcik7CisKKyAgICAgICAgYXV0byBiYXNpY1Jl
bmRlclBvcyA9IHJlbmRlcmVyU3RyaW5nLmZpbmQoc3RkOjpzdHJpbmcoIm1pY3Jvc29mdCBiYXNp
YyByZW5kZXIiKSk7CisgICAgICAgIGF1dG8gc29mdHdhcmVBZGFwdGVyUG9zID0gcmVuZGVyZXJT
dHJpbmcuZmluZChzdGQ6OnN0cmluZygic29mdHdhcmUgYWRhcHRlciIpKTsKKworICAgICAgICBp
ZiAoYmFzaWNSZW5kZXJQb3MgIT0gc3RkOjpzdHJpbmc6Om5wb3MgfHwgc29mdHdhcmVBZGFwdGVy
UG9zICE9IHN0ZDo6c3RyaW5nOjpucG9zKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBUaGUg
Zmlyc3QgcmVuZGVyZXIgaXMgdXNpbmcgV0FSUCwgZXZlbiB0aG91Z2ggd2UgZGlkbid0IGV4cGxp
Y3RseSByZXF1ZXN0IGl0CisgICAgICAgICAgICAvLyBXZSBzaG91bGQgc2tpcCB0aGlzIHRlc3QK
KyAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIHdoZW4gZGVmYXVsdCBH
UFUgaXMgV0FSUC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgIH0KKworICAgIC8vIENyZWF0ZSBhIHByb2dyYW0KKyAgICBpZiAoZmlyc3RSZW5kZXJl
ci5tYWpvclZlcnNpb24gPT0gMykKKyAgICB7CisgICAgICAgIHByb2dyYW0gPSBjcmVhdGVFUzNQ
cm9ncmFtRnJvbVNvdXJjZSgpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBwcm9n
cmFtID0gY3JlYXRlRVMyUHJvZ3JhbUZyb21Tb3VyY2UoKTsKKyAgICB9CisKKyAgICBpZiAocHJv
Z3JhbSA9PSAwKQorICAgIHsKKyAgICAgICAgZGVzdHJveUVHTFdpbmRvdygmZWdsV2luZG93KTsK
KyAgICAgICAgRkFJTCgpIDw8ICJGYWlsZWQgdG8gY3JlYXRlIHByb2dyYW0gZnJvbSBzb3VyY2Ui
OworICAgIH0KKworICAgIC8vIERyYXcgdXNpbmcgdGhlIHByb2dyYW0gdG8gZW5zdXJlIGl0IHdv
cmtzIGFzIGV4cGVjdGVkCisgICAgZHJhd1dpdGhQcm9ncmFtKHByb2dyYW0pOworICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOworCisgICAgLy8gU2F2ZSB0aGUgcHJvZ3JhbSBiaW5hcnkgb3V0IGZy
b20gdGhpcyByZW5kZXJlcgorICAgIGdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdMX1BST0dSQU1f
QklOQVJZX0xFTkdUSF9PRVMsICZwcm9ncmFtTGVuZ3RoKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJS
T1IoKTsKKyAgICBiaW5hcnkucmVzaXplKHByb2dyYW1MZW5ndGgpOworICAgIGdsR2V0UHJvZ3Jh
bUJpbmFyeU9FUyhwcm9ncmFtLCBwcm9ncmFtTGVuZ3RoLCAmd3JpdHRlbkxlbmd0aCwgJmJpbmFy
eUZvcm1hdCwgYmluYXJ5LmRhdGEoKSk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAg
ICAvLyBEZXN0cm95IHRoZSBmaXJzdCByZW5kZXJlcgorICAgIGdsRGVsZXRlUHJvZ3JhbShwcm9n
cmFtKTsKKyAgICBkZXN0cm95RUdMV2luZG93KCZlZ2xXaW5kb3cpOworCisgICAgLy8gQ3JlYXRl
IGFuIEVHTCB3aW5kb3cgd2l0aCB0aGUgc2Vjb25kIHJlbmRlcmVyCisgICAgZWdsV2luZG93ID0g
Y3JlYXRlQW5kSW5pdEVHTFdpbmRvdyhzZWNvbmRSZW5kZXJlcik7CisgICAgaWYgKGVnbFdpbmRv
dyA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJGYWlsZWQgdG8gY3JlYXRl
IEVHTCB3aW5kb3ciOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcHJvZ3JhbSA9IGds
Q3JlYXRlUHJvZ3JhbSgpOworICAgIGdsUHJvZ3JhbUJpbmFyeU9FUyhwcm9ncmFtLCBiaW5hcnlG
b3JtYXQsIGJpbmFyeS5kYXRhKCksIHdyaXR0ZW5MZW5ndGgpOworCisgICAgR0xpbnQgbGlua1N0
YXR1czsKKyAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9MSU5LX1NUQVRVUywgJmxpbmtT
dGF0dXMpOworICAgIEVYUEVDVF9FUShleHBlY3RlZExpbmtSZXN1bHQsIChsaW5rU3RhdHVzICE9
IDApKTsKKworICAgIGlmIChsaW5rU3RhdHVzICE9IDApCisgICAgeworICAgICAgICAvLyBJZiB0
aGUgbGluayB3YXMgc3VjY2Vzc2Z1bCwgdGhlbiB3ZSBzaG91bGQgdHJ5IHRvIGRyYXcgdXNpbmcg
dGhlIHByb2dyYW0gdG8gZW5zdXJlIGl0IHdvcmtzIGFzIGV4cGVjdGVkCisgICAgICAgIGRyYXdX
aXRoUHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAg
fQorCisgICAgLy8gRGVzdHJveSB0aGUgc2Vjb25kIHJlbmRlcmVyCisgICAgZ2xEZWxldGVQcm9n
cmFtKHByb2dyYW0pOworICAgIGRlc3Ryb3lFR0xXaW5kb3coJmVnbFdpbmRvdyk7Cit9CisKK0FO
R0xFX0lOU1RBTlRJQVRFX1RFU1QoUHJvZ3JhbUJpbmFyaWVzQWNyb3NzUGxhdGZvcm1zLAorICAg
ICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgIHwgU2F2ZSB0aGUgcHJv
Z3JhbSAgIHwgTG9hZCB0aGUgcHJvZ3JhbSAgICAgIHwgRXhwZWN0ZWQKKyAgICAgICAgICAgICAg
ICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICB8IHVzaW5nIHRoZXNlIHBhcmFtcyB8IHVz
aW5nIHRoZXNlIHBhcmFtcyAgICB8IGxpbmsgcmVzdWx0CisgICAgICAgICAgICAgICAgICAgICAg
IFBsYXRmb3Jtc1dpdGhMaW5rUmVzdWx0KEVTMl9EM0QxMSgpLCAgICAgICAgIEVTMl9EM0QxMSgp
LCAgICAgICAgICAgIHRydWUgICAgICAgICApLCAvLyBMb2FkaW5nICsgcmVsb2FkaW5nIGJpbmFy
eSBzaG91bGQgd29yaworICAgICAgICAgICAgICAgICAgICAgICBQbGF0Zm9ybXNXaXRoTGlua1Jl
c3VsdChFUzNfRDNEMTEoKSwgICAgICAgICBFUzNfRDNEMTEoKSwgICAgICAgICAgICB0cnVlICAg
ICAgICAgKSwgLy8gTG9hZGluZyArIHJlbG9hZGluZyBiaW5hcnkgc2hvdWxkIHdvcmsKKyAgICAg
ICAgICAgICAgICAgICAgICAgUGxhdGZvcm1zV2l0aExpbmtSZXN1bHQoRVMyX0QzRDExX0ZMMTFf
MCgpLCAgRVMyX0QzRDExX0ZMOV8zKCksICAgICAgZmFsc2UgICAgICAgICksIC8vIFN3aXRjaGlu
ZyBmZWF0dXJlIGxldmVsIHNob3VsZG4ndCB3b3JrCisgICAgICAgICAgICAgICAgICAgICAgIFBs
YXRmb3Jtc1dpdGhMaW5rUmVzdWx0KEVTMl9EM0QxMSgpLCAgICAgICAgIEVTMl9EM0QxMV9XQVJQ
KCksICAgICAgIGZhbHNlICAgICAgICApLCAvLyBTd2l0Y2hpbmcgZnJvbSBoYXJkd2FyZSB0byBz
b2Z0d2FyZSBzaG91bGRuJ3Qgd29yaworICAgICAgICAgICAgICAgICAgICAgICBQbGF0Zm9ybXNX
aXRoTGlua1Jlc3VsdChFUzJfRDNEMTFfRkw5XzMoKSwgICBFUzJfRDNEMTFfRkw5XzNfV0FSUCgp
LCBmYWxzZSAgICAgICAgKSwgLy8gU3dpdGNoaW5nIGZyb20gaGFyZHdhcmUgdG8gc29mdHdhcmUg
c2hvdWxkbid0IHdvcmsgZm9yIEZMOSBlaXRoZXIKKyAgICAgICAgICAgICAgICAgICAgICAgUGxh
dGZvcm1zV2l0aExpbmtSZXN1bHQoRVMyX0QzRDExKCksICAgICAgICAgRVMyX0QzRDkoKSwgICAg
ICAgICAgICAgZmFsc2UgICAgICAgICksIC8vIFN3aXRjaGluZyBmcm9tIEQzRDExIHRvIEQzRDkg
c2hvdWxkbid0IHdvcmsKKyAgICAgICAgICAgICAgICAgICAgICAgUGxhdGZvcm1zV2l0aExpbmtS
ZXN1bHQoRVMyX0QzRDkoKSwgICAgICAgICAgRVMyX0QzRDExKCksICAgICAgICAgICAgZmFsc2Ug
ICAgICAgICksIC8vIFN3aXRjaGluZyBmcm9tIEQzRDkgdG8gRDNEMTEgc2hvdWxkbid0IHdvcmsK
KyAgICAgICAgICAgICAgICAgICAgICAgUGxhdGZvcm1zV2l0aExpbmtSZXN1bHQoRVMyX0QzRDEx
KCksICAgICAgICAgRVMzX0QzRDExKCksICAgICAgICAgICAgdHJ1ZSAgICAgICAgICkgIC8vIFN3
aXRjaGluZyB0byBuZXdlciBjbGllbnQgdmVyc2lvbiBzaG91bGQgd29yaworCisgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFRPRE86IEFOR0xFIGlzc3VlIDUyMworICAgICAgICAgICAgICAgICAg
ICAgICAvLyBDb21waWxpbmcgYSBwcm9ncmFtIHdpdGggY2xpZW50IHZlcnNpb24gMywgc2F2aW5n
IHRoZSBiaW5hcnksIHRoZW4gbG9hZGluZyBpdCB3aXRoIGNsaWVudCB2ZXJzaW9uIDIgc2hvdWxk
IG5vdCB3b3JrCisgICAgICAgICAgICAgICAgICAgICAgIC8vIFBsYXRmb3Jtc1dpdGhMaW5rUmVz
dWx0KEVTM19EM0QxMSgpLCAgICAgICAgIEVTMl9EM0QxMSgpLCAgICAgICAgICAgIGZhbHNlICAg
ICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Qcm92b2tpbmdWZXJ0ZXhUZXN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvUHJvdm9r
aW5nVmVydGV4VGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1Byb3Zva2luZ1ZlcnRleFRlc3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMzE2IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gUHJvdmtpbmdWZXJ0ZXhUZXN0Ogor
Ly8gICBUZXN0cyBvbiB0aGUgY29uZm9ybWFuY2Ugb2YgdGhlIHByb3Zva2luZyB2ZXJ0ZXgsIHdo
aWNoIGFwcGxpZXMgdG8gZmxhdAorLy8gICBzaGFkaW5nIGFuZCBjb21wYXRpYmlsaXR5IHdpdGgg
RDNELiBTZWUgdGhlIHNlY3Rpb24gb24gJ2ZsYXRzaGFkaW5nJworLy8gICBpbiB0aGUgRVMgMyBz
cGVjcy4KKy8vCisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorCit1c2luZyBu
YW1lc3BhY2UgYW5nbGU7CisKK25hbWVzcGFjZQoreworCitjbGFzcyBQcm92b2tpbmdWZXJ0ZXhU
ZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgUHJvdm9raW5nVmVy
dGV4VGVzdCgpCisgICAgICAgIDogbVByb2dyYW0oMCksCisgICAgICAgICAgbUZyYW1lYnVmZmVy
KDApLAorICAgICAgICAgIG1UZXh0dXJlKDApLAorICAgICAgICAgIG1UcmFuc2Zvcm1GZWVkYmFj
aygwKSwKKyAgICAgICAgICBtQnVmZmVyKDApLAorICAgICAgICAgIG1JbnRBdHRyaWJMb2NhdGlv
bigtMSkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRoKDY0KTsKKyAgICAgICAgc2V0V2lu
ZG93SGVpZ2h0KDY0KTsKKyAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKKyAgICAgICAgc2V0
Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKKyAgICAg
ICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAgICAgICBzZXRDb25maWdEZXB0aEJpdHMoMjQp
OworICAgIH0KKworICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQU5H
TEVUZXN0OjpTZXRVcCgpOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2ZXJ0ZXhTaGFk
ZXIgPQorICAgICAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAgICAgImluIGlu
dCBpbnRBdHRyaWI7XG4iCisgICAgICAgICAgICAiaW4gdmVjMiBwb3NpdGlvbjtcbiIKKyAgICAg
ICAgICAgICJmbGF0IG91dCBpbnQgYXR0cmliO1xuIgorICAgICAgICAgICAgInZvaWQgbWFpbigp
IHtcbiIKKyAgICAgICAgICAgICIgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMCwgMSk7
XG4iCisgICAgICAgICAgICAiICBhdHRyaWIgPSBpbnRBdHRyaWI7XG4iCisgICAgICAgICAgICAi
fSI7CisKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdtZW50U2hhZGVyID0KKyAgICAg
ICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgICAgICJmbGF0IGluIGludCBhdHRy
aWI7XG4iCisgICAgICAgICAgICAib3V0IGludCBmcmFnQ29sb3I7XG4iCisgICAgICAgICAgICAi
dm9pZCBtYWluKCkge1xuIgorICAgICAgICAgICAgIiAgZnJhZ0NvbG9yID0gYXR0cmliO1xuIgor
ICAgICAgICAgICAgIn0iOworCisgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB0ZlZh
cnlpbmdzOworICAgICAgICB0ZlZhcnlpbmdzLnB1c2hfYmFjaygiYXR0cmliIik7CisgICAgICAg
IG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW1XaXRoVHJhbnNmb3JtRmVlZGJhY2sodmVydGV4U2hh
ZGVyLCBmcmFnbWVudFNoYWRlciwgdGZWYXJ5aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9TRVBBUkFURV9BVFRSSUJTKTsKKyAg
ICAgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7CisKKyAgICAgICAgZ2xHZW5UZXh0dXJlcygx
LCAmbVRleHR1cmUpOworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0
dXJlKTsKKyAgICAgICAgZ2xUZXhTdG9yYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUjMySSwg
Z2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOworCisgICAgICAgIGdsR2VuRnJh
bWVidWZmZXJzKDEsICZtRnJhbWVidWZmZXIpOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihH
TF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVyKTsKKyAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1
cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQs
IG1UZXh0dXJlLCAwKTsKKworICAgICAgICBtSW50QXR0cmliTG9jYXRpb24gPSBnbEdldEF0dHJp
YkxvY2F0aW9uKG1Qcm9ncmFtLCAiaW50QXR0cmliIik7CisgICAgICAgIEFTU0VSVF9ORSgtMSwg
bUludEF0dHJpYkxvY2F0aW9uKTsKKyAgICAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSht
SW50QXR0cmliTG9jYXRpb24pOworCisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAg
IH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKG1Q
cm9ncmFtICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJv
Z3JhbSk7CisgICAgICAgICAgICBtUHJvZ3JhbSA9IDA7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAobUZyYW1lYnVmZmVyICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsRGVsZXRlRnJh
bWVidWZmZXJzKDEsICZtRnJhbWVidWZmZXIpOworICAgICAgICAgICAgbUZyYW1lYnVmZmVyID0g
MDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtVGV4dHVyZSAhPSAwKQorICAgICAgICB7Cisg
ICAgICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtVGV4dHVyZSk7CisgICAgICAgICAgICBt
VGV4dHVyZSA9IDA7CisgICAgICAgIH0KKworICAgICAgICBpZiAobVRyYW5zZm9ybUZlZWRiYWNr
ICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsRGVsZXRlVHJhbnNmb3JtRmVlZGJhY2tz
KDEsICZtVHJhbnNmb3JtRmVlZGJhY2spOworICAgICAgICAgICAgbVRyYW5zZm9ybUZlZWRiYWNr
ID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtQnVmZmVyICE9IDApCisgICAgICAgIHsK
KyAgICAgICAgICAgIGdsRGVsZXRlQnVmZmVycygxLCAmbUJ1ZmZlcik7CisgICAgICAgICAgICBt
QnVmZmVyID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsK
KyAgICB9CisKKyAgICBHTHVpbnQgbVByb2dyYW07CisgICAgR0x1aW50IG1GcmFtZWJ1ZmZlcjsK
KyAgICBHTHVpbnQgbVRleHR1cmU7CisgICAgR0x1aW50IG1UcmFuc2Zvcm1GZWVkYmFjazsKKyAg
ICBHTHVpbnQgbUJ1ZmZlcjsKKyAgICBHTGludCBtSW50QXR0cmliTG9jYXRpb247Cit9OworCisv
LyBUZXN0IGRyYXdpbmcgYSBzaW1wbGUgdHJpYW5nbGUgd2l0aCBmbGF0IHNoYWRpbmcsIGFuZCBk
aWZmZXJlbnQgdmFsdWVkIHZlcnRpY2VzLgorVEVTVF9QKFByb3Zva2luZ1ZlcnRleFRlc3QsIEZs
YXRUcmlhbmdsZSkKK3sKKyAgICBHTGludCB2ZXJ0ZXhEYXRhW10gPSB7MSwgMiwgMywgMSwgMiwg
M307CisgICAgZ2xWZXJ0ZXhBdHRyaWJJUG9pbnRlcihtSW50QXR0cmliTG9jYXRpb24sIDEsIEdM
X0lOVCwgMCwgdmVydGV4RGF0YSk7CisKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9u
IiwgMC41Zik7CisKKyAgICBHTGludCBwaXhlbFZhbHVlID0gMDsKKyAgICBnbFJlYWRQaXhlbHMo
MCwgMCwgMSwgMSwgR0xfUkVEX0lOVEVHRVIsIEdMX0lOVCwgJnBpeGVsVmFsdWUpOworCisgICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgRVhQRUNUX0VRKHZlcnRleERhdGFbMl0sIHBpeGVs
VmFsdWUpOworfQorCisvLyBFbnN1cmUgdGhhdCBhbnkgcHJvdm9raW5nIHZlcnRleCBzaGVuYW5p
Z2FucyBzdGlsbCBnaXZlcyBjb3JyZWN0IHZlcnRleCBzdHJlYW1zLgorVEVTVF9QKFByb3Zva2lu
Z1ZlcnRleFRlc3QsIEZsYXRUcmlXaXRoVHJhbnNmb3JtRmVlZGJhY2spCit7CisgICAgLy8gVE9E
Tyhjd2FsbGV6KSBmaWd1cmUgb3V0IHdoeSBpdCBpcyBicm9rZW4gb24gQU1EIG9uIE1hYworI2lm
IGRlZmluZWQoQU5HTEVfUExBVEZPUk1fQVBQTEUpCisgICAgaWYgKElzQU1EKCkpCisgICAgewor
ICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBBTUQgb24gTWFjLiIgPDwgc3Rk
OjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAgICBnbEdlblRyYW5z
Zm9ybUZlZWRiYWNrcygxLCAmbVRyYW5zZm9ybUZlZWRiYWNrKTsKKyAgICBnbEJpbmRUcmFuc2Zv
cm1GZWVkYmFjayhHTF9UUkFOU0ZPUk1fRkVFREJBQ0ssIG1UcmFuc2Zvcm1GZWVkYmFjayk7CisK
KyAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1CdWZmZXIpOworICAgIGdsQmluZEJ1ZmZlcihHTF9UUkFO
U0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBtQnVmZmVyKTsKKyAgICBnbEJ1ZmZlckRhdGEoR0xfVFJB
TlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMTI4LCBudWxscHRyLCBHTF9TVFJFQU1fRFJBVyk7CisK
KyAgICBnbEJpbmRCdWZmZXJCYXNlKEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIG1C
dWZmZXIpOworCisgICAgR0xpbnQgdmVydGV4RGF0YVtdID0gezEsIDIsIDMsIDEsIDIsIDN9Owor
ICAgIGdsVmVydGV4QXR0cmliSVBvaW50ZXIobUludEF0dHJpYkxvY2F0aW9uLCAxLCBHTF9JTlQs
IDAsIHZlcnRleERhdGEpOworCisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICBnbEJl
Z2luVHJhbnNmb3JtRmVlZGJhY2soR0xfVFJJQU5HTEVTKTsKKyAgICBkcmF3UXVhZChtUHJvZ3Jh
bSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgZ2xFbmRUcmFuc2Zvcm1GZWVkYmFjaygpOworICAg
IGdsVXNlUHJvZ3JhbSgwKTsKKworICAgIEdMaW50IHBpeGVsVmFsdWUgPSAwOworICAgIGdsUmVh
ZFBpeGVscygwLCAwLCAxLCAxLCBHTF9SRURfSU5URUdFUiwgR0xfSU5ULCAmcGl4ZWxWYWx1ZSk7
CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfRVEodmVydGV4RGF0YVsy
XSwgcGl4ZWxWYWx1ZSk7CisKKyAgICBHTHZvaWQgKm1hcFBvaW50ZXIgPQorICAgICAgICBnbE1h
cEJ1ZmZlclJhbmdlKEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIHNpemVvZihpbnQp
ICogNiwgR0xfTUFQX1JFQURfQklUKTsKKyAgICBBU1NFUlRfTkUobnVsbHB0ciwgbWFwUG9pbnRl
cik7CisKKyAgICBpbnQgKm1hcHBlZEludHMgPSBzdGF0aWNfY2FzdDxpbnQgKj4obWFwUG9pbnRl
cik7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgY250ID0gMDsgY250IDwgNjsgKytjbnQpCisgICAg
eworICAgICAgICBFWFBFQ1RfRVEodmVydGV4RGF0YVtjbnRdLCBtYXBwZWRJbnRzW2NudF0pOwor
ICAgIH0KK30KKworLy8gVGVzdCBkcmF3aW5nIGEgc2ltcGxlIGxpbmUgd2l0aCBmbGF0IHNoYWRp
bmcsIGFuZCBkaWZmZXJlbnQgdmFsdWVkIHZlcnRpY2VzLgorVEVTVF9QKFByb3Zva2luZ1ZlcnRl
eFRlc3QsIEZsYXRMaW5lKQoreworICAgIEdMZmxvYXQgaGFsZlBpeGVsID0gMS4wZiAvIHN0YXRp
Y19jYXN0PEdMZmxvYXQ+KGdldFdpbmRvd1dpZHRoKCkpOworCisgICAgR0xpbnQgdmVydGV4RGF0
YVtdICAgICA9IHsxLCAyfTsKKyAgICBHTGZsb2F0IHBvc2l0aW9uRGF0YVtdID0gey0xLjBmICsg
aGFsZlBpeGVsLCAtMS4wZiwgLTEuMGYgKyBoYWxmUGl4ZWwsIDEuMGZ9OworCisgICAgZ2xWZXJ0
ZXhBdHRyaWJJUG9pbnRlcihtSW50QXR0cmliTG9jYXRpb24sIDEsIEdMX0lOVCwgMCwgdmVydGV4
RGF0YSk7CisKKyAgICBHTGludCBwb3NpdGlvbkxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlv
bihtUHJvZ3JhbSwgInBvc2l0aW9uIik7CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShw
b3NpdGlvbkxvY2F0aW9uKTsKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25Mb2Nh
dGlvbiwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCBwb3NpdGlvbkRhdGEpOworCisgICAgZ2xV
c2VQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICBnbERyYXdBcnJheXMoR0xfTElORVMsIDAsIDIpOwor
CisgICAgR0xpbnQgcGl4ZWxWYWx1ZSA9IDA7CisgICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIDEsIDEs
IEdMX1JFRF9JTlRFR0VSLCBHTF9JTlQsICZwaXhlbFZhbHVlKTsKKworICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOworICAgIEVYUEVDVF9FUSh2ZXJ0ZXhEYXRhWzFdLCBwaXhlbFZhbHVlKTsKK30K
KworLy8gVGVzdCBkcmF3aW5nIGEgc2ltcGxlIHRyaWFuZ2xlIHN0cmlwIHdpdGggZmxhdCBzaGFk
aW5nLCBhbmQgZGlmZmVyZW50IHZhbHVlZCB2ZXJ0aWNlcy4KK1RFU1RfUChQcm92b2tpbmdWZXJ0
ZXhUZXN0LCBGbGF0VHJpU3RyaXApCit7CisgICAgR0xpbnQgdmVydGV4RGF0YVtdICAgICA9IHsx
LCAyLCAzLCA0LCA1LCA2fTsKKyAgICBHTGZsb2F0IHBvc2l0aW9uRGF0YVtdID0gey0xLjBmLCAt
MS4wZiwgLTEuMGYsIDEuMGYsICAwLjBmLCAtMS4wZiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuMGYsICAxLjBmLCAgMS4wZiwgIC0xLjBmLCAxLjBmLCAxLjBmfTsKKworICAgIGds
VmVydGV4QXR0cmliSVBvaW50ZXIobUludEF0dHJpYkxvY2F0aW9uLCAxLCBHTF9JTlQsIDAsIHZl
cnRleERhdGEpOworCisgICAgR0xpbnQgcG9zaXRpb25Mb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9j
YXRpb24obVByb2dyYW0sICJwb3NpdGlvbiIpOworICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJy
YXkocG9zaXRpb25Mb2NhdGlvbik7CisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0aW9u
TG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgcG9zaXRpb25EYXRhKTsKKworICAg
IGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFX1NU
UklQLCAwLCA2KTsKKworICAgIHN0ZDo6dmVjdG9yPEdMaW50PiBwaXhlbEJ1ZmZlcihnZXRXaW5k
b3dXaWR0aCgpICogZ2V0V2luZG93SGVpZ2h0KCksIDApOworICAgIGdsUmVhZFBpeGVscygwLCAw
LCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgR0xfUkVEX0lOVEVHRVIsIEdM
X0lOVCwKKyAgICAgICAgICAgICAgICAgJnBpeGVsQnVmZmVyWzBdKTsKKworICAgIEFTU0VSVF9H
TF9OT19FUlJPUigpOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgdHJpSW5kZXggPSAwOyB0cmlJ
bmRleCA8IDQ7ICsrdHJpSW5kZXgpCisgICAgeworICAgICAgICBHTGZsb2F0IHN1bVggPSBwb3Np
dGlvbkRhdGFbdHJpSW5kZXggKiAyICsgMF0gKyBwb3NpdGlvbkRhdGFbdHJpSW5kZXggKiAyICsg
Ml0gKworICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbkRhdGFbdHJpSW5kZXggKiAyICsg
NF07CisgICAgICAgIEdMZmxvYXQgc3VtWSA9IHBvc2l0aW9uRGF0YVt0cmlJbmRleCAqIDIgKyAx
XSArIHBvc2l0aW9uRGF0YVt0cmlJbmRleCAqIDIgKyAzXSArCisgICAgICAgICAgICAgICAgICAg
ICAgIHBvc2l0aW9uRGF0YVt0cmlJbmRleCAqIDIgKyA1XTsKKworICAgICAgICBmbG9hdCBjZW50
ZXJYID0gc3VtWCAvIDMuMGYgKiAwLjVmICsgMC41ZjsKKyAgICAgICAgZmxvYXQgY2VudGVyWSA9
IHN1bVkgLyAzLjBmICogMC41ZiArIDAuNWY7CisgICAgICAgIHVuc2lnbmVkIGludCBwaXhlbFgg
PQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihjZW50ZXJYICogc3RhdGlj
X2Nhc3Q8R0xmbG9hdD4oZ2V0V2luZG93V2lkdGgoKSkpOworICAgICAgICB1bnNpZ25lZCBpbnQg
cGl4ZWxZID0KKyAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oY2VudGVyWSAq
IHN0YXRpY19jYXN0PEdMZmxvYXQ+KGdldFdpbmRvd0hlaWdodCgpKSk7CisgICAgICAgIHVuc2ln
bmVkIGludCBwaXhlbEluZGV4ID0gcGl4ZWxZICogZ2V0V2luZG93V2lkdGgoKSArIHBpeGVsWDsK
KworICAgICAgICB1bnNpZ25lZCBpbnQgcHJvdm9raW5nVmVydGV4SW5kZXggPSB0cmlJbmRleCAr
IDI7CisKKyAgICAgICAgRVhQRUNUX0VRKHZlcnRleERhdGFbcHJvdm9raW5nVmVydGV4SW5kZXhd
LCBwaXhlbEJ1ZmZlcltwaXhlbEluZGV4XSk7CisgICAgfQorfQorCisvLyBUZXN0IGRyYXdpbmcg
YW4gaW5kZXhlZCB0cmlhbmdsZSBzdHJpcCB3aXRoIGZsYXQgc2hhZGluZyBhbmQgcHJpbWl0aXZl
IHJlc3RhcnQuCitURVNUX1AoUHJvdm9raW5nVmVydGV4VGVzdCwgRmxhdFRyaVN0cmlwUHJpbWl0
aXZlUmVzdGFydCkKK3sKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBJbXBsZW1lbnQgb24gdGhlIEQz
RCBiYWNrLWVuZC4KKyAgICBpZiAoSXNEM0QxMSgpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0
IDw8ICJUZXN0IGRpc2FibGVkIG9uIEQzRDExLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgR0xpbnQgaW5kZXhEYXRhW10gICAgICA9IHswLCAxLCAyLCAtMSwg
MSwgMiwgMywgNCwgLTEsIDMsIDQsIDV9OworICAgIEdMaW50IHZlcnRleERhdGFbXSAgICAgPSB7
MSwgMiwgMywgNCwgNSwgNn07CisgICAgR0xmbG9hdCBwb3NpdGlvbkRhdGFbXSA9IHstMS4wZiwg
LTEuMGYsIC0xLjBmLCAxLjBmLCAgMC4wZiwgLTEuMGYsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLjBmLCAgMS4wZiwgIDEuMGYsICAtMS4wZiwgMS4wZiwgMS4wZn07CisKKyAgICBn
bFZlcnRleEF0dHJpYklQb2ludGVyKG1JbnRBdHRyaWJMb2NhdGlvbiwgMSwgR0xfSU5ULCAwLCB2
ZXJ0ZXhEYXRhKTsKKworICAgIEdMaW50IHBvc2l0aW9uTG9jYXRpb24gPSBnbEdldEF0dHJpYkxv
Y2F0aW9uKG1Qcm9ncmFtLCAicG9zaXRpb24iKTsKKyAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5KHBvc2l0aW9uTG9jYXRpb24pOworICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlv
bkxvY2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIHBvc2l0aW9uRGF0YSk7CisKKyAg
ICBnbERpc2FibGUoR0xfQ1VMTF9GQUNFKTsKKyAgICBnbEVuYWJsZShHTF9QUklNSVRJVkVfUkVT
VEFSVF9GSVhFRF9JTkRFWCk7CisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICBnbERy
YXdFbGVtZW50cyhHTF9UUklBTkdMRV9TVFJJUCwgMTIsIEdMX1VOU0lHTkVEX0lOVCwgaW5kZXhE
YXRhKTsKKworICAgIHN0ZDo6dmVjdG9yPEdMaW50PiBwaXhlbEJ1ZmZlcihnZXRXaW5kb3dXaWR0
aCgpICogZ2V0V2luZG93SGVpZ2h0KCksIDApOworICAgIGdsUmVhZFBpeGVscygwLCAwLCBnZXRX
aW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgR0xfUkVEX0lOVEVHRVIsIEdMX0lOVCwK
KyAgICAgICAgICAgICAgICAgJnBpeGVsQnVmZmVyWzBdKTsKKworICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOworCisgICAgLy8gQWNjb3VudCBmb3IgcHJpbWl0aXZlIHJlc3RhcnQgd2hlbiBjaGVj
a2luZyB0aGUgdHJpcy4KKyAgICBHTGludCB0cmlPZmZzZXRzW10gPSB7MCwgNCwgNSwgOX07CisK
KyAgICBmb3IgKHVuc2lnbmVkIGludCB0cmlJbmRleCA9IDA7IHRyaUluZGV4IDwgNDsgKyt0cmlJ
bmRleCkKKyAgICB7CisgICAgICAgIEdMaW50IHZlcnRleEEgPSBpbmRleERhdGFbdHJpT2Zmc2V0
c1t0cmlJbmRleF0gKyAwXTsKKyAgICAgICAgR0xpbnQgdmVydGV4QiA9IGluZGV4RGF0YVt0cmlP
ZmZzZXRzW3RyaUluZGV4XSArIDFdOworICAgICAgICBHTGludCB2ZXJ0ZXhDID0gaW5kZXhEYXRh
W3RyaU9mZnNldHNbdHJpSW5kZXhdICsgMl07CisKKyAgICAgICAgR0xmbG9hdCBzdW1YID0KKyAg
ICAgICAgICAgIHBvc2l0aW9uRGF0YVt2ZXJ0ZXhBICogMl0gKyBwb3NpdGlvbkRhdGFbdmVydGV4
QiAqIDJdICsgcG9zaXRpb25EYXRhW3ZlcnRleEMgKiAyXTsKKyAgICAgICAgR0xmbG9hdCBzdW1Z
ID0gcG9zaXRpb25EYXRhW3ZlcnRleEEgKiAyICsgMV0gKyBwb3NpdGlvbkRhdGFbdmVydGV4QiAq
IDIgKyAxXSArCisgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uRGF0YVt2ZXJ0ZXhDICog
MiArIDFdOworCisgICAgICAgIGZsb2F0IGNlbnRlclggPSBzdW1YIC8gMy4wZiAqIDAuNWYgKyAw
LjVmOworICAgICAgICBmbG9hdCBjZW50ZXJZID0gc3VtWSAvIDMuMGYgKiAwLjVmICsgMC41ZjsK
KyAgICAgICAgdW5zaWduZWQgaW50IHBpeGVsWCA9CisgICAgICAgICAgICBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBpbnQ+KGNlbnRlclggKiBzdGF0aWNfY2FzdDxHTGZsb2F0PihnZXRXaW5kb3dXaWR0
aCgpKSk7CisgICAgICAgIHVuc2lnbmVkIGludCBwaXhlbFkgPQorICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgaW50PihjZW50ZXJZICogc3RhdGljX2Nhc3Q8R0xmbG9hdD4oZ2V0V2lu
ZG93SGVpZ2h0KCkpKTsKKyAgICAgICAgdW5zaWduZWQgaW50IHBpeGVsSW5kZXggPSBwaXhlbFkg
KiBnZXRXaW5kb3dXaWR0aCgpICsgcGl4ZWxYOworCisgICAgICAgIHVuc2lnbmVkIGludCBwcm92
b2tpbmdWZXJ0ZXhJbmRleCA9IHRyaUluZGV4ICsgMjsKKworICAgICAgICBFWFBFQ1RfRVEodmVy
dGV4RGF0YVtwcm92b2tpbmdWZXJ0ZXhJbmRleF0sIHBpeGVsQnVmZmVyW3BpeGVsSW5kZXhdKTsK
KyAgICB9Cit9CisKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoUHJvdm9raW5nVmVydGV4VGVzdCwg
RVMzX0QzRDExKCksIEVTM19PUEVOR0woKSwgRVMzX09QRU5HTEVTKCkpOworCit9ICAvLyBhbm9u
eW1vdXMgbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
Z2xfdGVzdHMvUmVhZFBpeGVsc1Rlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9SZWFkUGl4ZWxzVGVzdC5jcHAJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1JlYWRQ
aXhlbHNUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcyMiBAQAorLy8KKy8vIENv
cHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
Ky8vIFJlYWRQaXhlbHNUZXN0OgorLy8gICBUZXN0cyBjYWxscyByZWxhdGVkIHRvIGdsUmVhZFBp
eGVscy4KKy8vCisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorCisjaW5jbHVk
ZSA8YXJyYXk+CisKKyNpbmNsdWRlICJyYW5kb21fdXRpbHMuaCIKKwordXNpbmcgbmFtZXNwYWNl
IGFuZ2xlOworCituYW1lc3BhY2UKK3sKKworY2xhc3MgUmVhZFBpeGVsc1Rlc3QgOiBwdWJsaWMg
QU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBSZWFkUGl4ZWxzVGVzdCgpCisgICAgewor
ICAgICAgICBzZXRXaW5kb3dXaWR0aCgzMik7CisgICAgICAgIHNldFdpbmRvd0hlaWdodCgzMik7
CisgICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0
cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0Fs
cGhhQml0cyg4KTsKKyAgICB9Cit9OworCisvLyBUZXN0IG91dCBvZiBib3VuZHMgZnJhbWVidWZm
ZXIgcmVhZHMuCitURVNUX1AoUmVhZFBpeGVsc1Rlc3QsIE91dE9mQm91bmRzKQoreworICAgIC8v
IFRPRE86IHJlLWVuYWJsZSBvbmNlIHJvb3QgY2F1c2Ugb2YgaHR0cDovL2FuZ2xlYnVnLmNvbS8x
NDEzIGlzIGZpeGVkCisgICAgaWYgKElzQW5kcm9pZCgpICYmIElzQWRyZW5vKCkgJiYgSXNPcGVu
R0xFUygpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gQWRy
ZW5vIE9wZW5HTEVTIG9uIEFuZHJvaWQuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBnbENsZWFyQ29sb3IoMS4wZiwgMC4wZiwgMC4wZiwgMS4wZik7CisgICAg
Z2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
KworICAgIEdMc2l6ZWkgcGl4ZWxzV2lkdGggPSAzMjsKKyAgICBHTHNpemVpIHBpeGVsc0hlaWdo
dCA9IDMyOworICAgIEdMaW50IG9mZnNldCA9IDE2OworICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+
IHBpeGVscygocGl4ZWxzV2lkdGggKyBvZmZzZXQpICogKHBpeGVsc0hlaWdodCArIG9mZnNldCkp
OworCisgICAgZ2xSZWFkUGl4ZWxzKC1vZmZzZXQsIC1vZmZzZXQsIHBpeGVsc1dpZHRoICsgb2Zm
c2V0LCBwaXhlbHNIZWlnaHQgKyBvZmZzZXQsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsICZw
aXhlbHNbMF0pOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gRXhwZWN0IHRo
YXQgYWxsIHBpeGVscyB3aGljaCBmZWxsIHdpdGhpbiB0aGUgZnJhbWVidWZmZXIgYXJlIHJlZAor
ICAgIGZvciAoaW50IHkgPSBwaXhlbHNIZWlnaHQgLyAyOyB5IDwgcGl4ZWxzSGVpZ2h0OyB5Kysp
CisgICAgeworICAgICAgICBmb3IgKGludCB4ID0gcGl4ZWxzV2lkdGggLyAyOyB4IDwgcGl4ZWxz
V2lkdGg7IHgrKykKKyAgICAgICAgeworICAgICAgICAgICAgRVhQRUNUX0VRKEdMQ29sb3I6OnJl
ZCwgcGl4ZWxzW3kgKiAocGl4ZWxzV2lkdGggKyBvZmZzZXQpICsgeF0pOworICAgICAgICB9Cisg
ICAgfQorfQorCitjbGFzcyBSZWFkUGl4ZWxzUEJPVGVzdCA6IHB1YmxpYyBSZWFkUGl4ZWxzVGVz
dAoreworICBwcm90ZWN0ZWQ6CisgICAgUmVhZFBpeGVsc1BCT1Rlc3QoKSA6IG1QQk8oMCksIG1U
ZXh0dXJlKDApLCBtRkJPKDApIHt9CisKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKKworICAgICAgICBnbEdlbkJ1ZmZlcnMoMSwg
Jm1QQk8pOworICAgICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbUZCTyk7CisKKyAgICAgICAg
UmVzZXQoNCAqIGdldFdpbmRvd1dpZHRoKCkgKiBnZXRXaW5kb3dIZWlnaHQoKSwgNCwgMSk7Cisg
ICAgfQorCisgICAgdm9pZCBSZXNldChHTHVpbnQgYnVmZmVyU2l6ZSwgR0x1aW50IGZib1dpZHRo
LCBHTHVpbnQgZmJvSGVpZ2h0KQorICAgIHsKKyAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX1BJWEVM
X1BBQ0tfQlVGRkVSLCBtUEJPKTsKKyAgICAgICAgZ2xCdWZmZXJEYXRhKEdMX1BJWEVMX1BBQ0tf
QlVGRkVSLCBidWZmZXJTaXplLCBudWxscHRyLCBHTF9TVEFUSUNfRFJBVyk7CisgICAgICAgIGds
QmluZEJ1ZmZlcihHTF9QSVhFTF9QQUNLX0JVRkZFUiwgMCk7CisKKyAgICAgICAgZ2xEZWxldGVU
ZXh0dXJlcygxLCAmbVRleHR1cmUpOworICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtVGV4dHVy
ZSk7CisgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUpOworICAg
ICAgICBnbFRleFN0b3JhZ2UyRChHTF9URVhUVVJFXzJELCAxLCBHTF9SR0JBOCwgZmJvV2lkdGgs
IGZib0hlaWdodCk7CisKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIs
IG1GQk8pOworICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBH
TF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUsIDApOworICAgICAg
ICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7CisKKyAgICAgICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1QQk8pOworICAgICAgICBnbERlbGV0
ZVRleHR1cmVzKDEsICZtVGV4dHVyZSk7CisgICAgICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEs
ICZtRkJPKTsKKworICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7CisgICAgfQorCisgICAg
R0x1aW50IG1QQk8gICAgID0gMDsKKyAgICBHTHVpbnQgbVRleHR1cmUgPSAwOworICAgIEdMdWlu
dCBtRkJPICAgICA9IDA7Cit9OworCisvLyBUZXN0IGJhc2ljIHVzYWdlIG9mIFBCT3MuCitURVNU
X1AoUmVhZFBpeGVsc1BCT1Rlc3QsIEJhc2ljKQoreworICAgIGdsQ2xlYXJDb2xvcigxLjBmLCAw
LjBmLCAwLjBmLCAxLjBmKTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAg
IEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xCaW5kQnVmZmVyKEdMX1BJWEVMX1BBQ0tf
QlVGRkVSLCBtUEJPKTsKKyAgICBnbFJlYWRQaXhlbHMoMCwgMCwgMTYsIDE2LCBHTF9SR0JBLCBH
TF9VTlNJR05FRF9CWVRFLCAwKTsKKworICAgIEdMdm9pZCAqbWFwcGVkUHRyICA9IGdsTWFwQnVm
ZmVyUmFuZ2UoR0xfUElYRUxfUEFDS19CVUZGRVIsIDAsIDMyLCBHTF9NQVBfUkVBRF9CSVQpOwor
ICAgIEdMQ29sb3IgKmRhdGFDb2xvciA9IHN0YXRpY19jYXN0PEdMQ29sb3IgKj4obWFwcGVkUHRy
KTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIEVYUEVDVF9FUShHTENvbG9yOjpy
ZWQsIGRhdGFDb2xvclswXSk7CisKKyAgICBnbFVubWFwQnVmZmVyKEdMX1BJWEVMX1BBQ0tfQlVG
RkVSKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKK30KKworLy8gVGVzdCBhbiBlcnJvciBp
cyBnZW5lcmF0ZWQgd2hlbiB0aGUgUEJPIGlzIHRvbyBzbWFsbC4KK1RFU1RfUChSZWFkUGl4ZWxz
UEJPVGVzdCwgUEJPVG9vU21hbGwpCit7CisgICAgUmVzZXQoNCAqIDE2ICogMTYgLSAxLCAxNiwg
MTYpOworCisgICAgZ2xDbGVhckNvbG9yKDEuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOworICAgIGds
Q2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisK
KyAgICBnbEJpbmRCdWZmZXIoR0xfUElYRUxfUEFDS19CVUZGRVIsIG1QQk8pOworICAgIGdsUmVh
ZFBpeGVscygwLCAwLCAxNiwgMTYsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDApOworCisg
ICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworLy8gVGVzdCBh
biBlcnJvciBpcyBnZW5lcmF0ZWQgd2hlbiB0aGUgUEJPIGlzIG1hcHBlZC4KK1RFU1RfUChSZWFk
UGl4ZWxzUEJPVGVzdCwgUEJPTWFwcGVkKQoreworICAgIGdsQ2xlYXJDb2xvcigxLjBmLCAwLjBm
LCAwLjBmLCAxLjBmKTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xCaW5kQnVmZmVyKEdMX1BJWEVMX1BBQ0tfQlVG
RkVSLCBtUEJPKTsKKyAgICBnbE1hcEJ1ZmZlclJhbmdlKEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCAw
LCAzMiwgR0xfTUFQX1JFQURfQklUKTsKKyAgICBnbFJlYWRQaXhlbHMoMCwgMCwgMTYsIDE2LCBH
TF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKKworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9J
TlZBTElEX09QRVJBVElPTik7Cit9CisKKy8vIFRlc3QgdGhhdCBiaW5kaW5nIGEgUEJPIHRvIEFS
UkFZX0JVRkZFUiB3b3JrcyBhcyBleHBlY3RlZC4KK1RFU1RfUChSZWFkUGl4ZWxzUEJPVGVzdCwg
QXJyYXlCdWZmZXJUYXJnZXQpCit7CisgICAgZ2xDbGVhckNvbG9yKDEuMGYsIDAuMGYsIDAuMGYs
IDEuMGYpOworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7CisKKyAgICBnbEJpbmRCdWZmZXIoR0xfUElYRUxfUEFDS19CVUZGRVIsIG1Q
Qk8pOworICAgIGdsUmVhZFBpeGVscygwLCAwLCAxNiwgMTYsIEdMX1JHQkEsIEdMX1VOU0lHTkVE
X0JZVEUsIDApOworCisgICAgZ2xCaW5kQnVmZmVyKEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCAwKTsK
KyAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtUEJPKTsKKworICAgIEdMdm9pZCAq
bWFwcGVkUHRyID0gZ2xNYXBCdWZmZXJSYW5nZShHTF9BUlJBWV9CVUZGRVIsIDAsIDMyLCBHTF9N
QVBfUkVBRF9CSVQpOworICAgIEdMQ29sb3IgKmRhdGFDb2xvciA9IHN0YXRpY19jYXN0PEdMQ29s
b3IgKj4obWFwcGVkUHRyKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIEVYUEVD
VF9FUShHTENvbG9yOjpyZWQsIGRhdGFDb2xvclswXSk7CisKKyAgICBnbFVubWFwQnVmZmVyKEdM
X0FSUkFZX0JVRkZFUik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFRlc3Qg
dGhhdCB1c2luZyBhIFBCTyBkb2VzIG5vdCBvdmVyd3JpdGUgZXhpc3RpbmcgZGF0YS4KK1RFU1Rf
UChSZWFkUGl4ZWxzUEJPVGVzdCwgRXhpc3RpbmdEYXRhUHJlc2VydmVkKQoreworICAgIC8vIFRP
RE8oZ2VvZmZsYW5nKTogRmlndXJlIG91dCB3aHkgdGhpcyBmYWlscyBvbiBBTUQgT3BlbkdMICho
dHRwOi8vYW5nbGVidWcuY29tLzEyOTEpCisgICAgaWYgKElzQU1EKCkgJiYgZ2V0UGxhdGZvcm1S
ZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkKKyAgICB7
CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxlZCBvbiBBTUQgT3BlbkdMLiIgPDwg
c3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gQ2xlYXIgYmFja2J1
ZmZlciB0byByZWQKKyAgICBnbENsZWFyQ29sb3IoMS4wZiwgMC4wZiwgMC4wZiwgMS4wZik7Cisg
ICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1Io
KTsKKworICAgIC8vIFJlYWQgMTZ4MTYgcmVnaW9uIGZyb20gcmVkIGJhY2tidWZmZXIgdG8gUEJP
CisgICAgZ2xCaW5kQnVmZmVyKEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCBtUEJPKTsKKyAgICBnbFJl
YWRQaXhlbHMoMCwgMCwgMTYsIDE2LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKKwor
ICAgIC8vIENsZWFyIGJhY2tidWZmZXIgdG8gZ3JlZW4KKyAgICBnbENsZWFyQ29sb3IoMC4wZiwg
MS4wZiwgMC4wZiwgMS4wZik7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIFJlYWQgMTZ4MTYgcmVnaW9uIGZyb20g
Z3JlZW4gYmFja2J1ZmZlciB0byBQQk8gYXQgb2Zmc2V0IDE2CisgICAgZ2xSZWFkUGl4ZWxzKDAs
IDAsIDE2LCAxNiwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcmVpbnRlcnByZXRfY2FzdDxH
THZvaWQqPigxNikpOworICAgIEdMdm9pZCAqbWFwcGVkUHRyICA9IGdsTWFwQnVmZmVyUmFuZ2Uo
R0xfUElYRUxfUEFDS19CVUZGRVIsIDAsIDMyLCBHTF9NQVBfUkVBRF9CSVQpOworICAgIEdMQ29s
b3IgKmRhdGFDb2xvciA9IHN0YXRpY19jYXN0PEdMQ29sb3IgKj4obWFwcGVkUHRyKTsKKyAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIFRlc3QgcGl4ZWwgMCBpcyByZWQgKGV4aXN0
aW5nIGRhdGEpCisgICAgRVhQRUNUX0VRKEdMQ29sb3I6OnJlZCwgZGF0YUNvbG9yWzBdKTsKKwor
ICAgIC8vIFRlc3QgcGl4ZWwgMTYgaXMgZ3JlZW4gKG5ldyBkYXRhKQorICAgIEVYUEVDVF9FUShH
TENvbG9yOjpncmVlbiwgZGF0YUNvbG9yWzE2XSk7CisKKyAgICBnbFVubWFwQnVmZmVyKEdMX1BJ
WEVMX1BBQ0tfQlVGRkVSKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKK30KKworLy8gVGVz
dCB0aGF0IGNhbGxpbmcgU3ViRGF0YSBwcmVzZXJ2ZXMgUEJPIGRhdGEuCitURVNUX1AoUmVhZFBp
eGVsc1BCT1Rlc3QsIFN1YkRhdGFQcmVzZXJ2ZXNDb250ZW50cykKK3sKKyAgICBnbENsZWFyQ29s
b3IoMS4wZiwgMC4wZiwgMC4wZiwgMS4wZik7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJf
QklUKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsQmluZEJ1ZmZlcihHTF9Q
SVhFTF9QQUNLX0JVRkZFUiwgbVBCTyk7CisgICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIDE2LCAxNiwg
R0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMCk7CisKKyAgICB1bnNpZ25lZCBjaGFyIGRhdGFb
NF0gPSB7IDEsIDIsIDMsIDQgfTsKKworICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9QQUNLX0JV
RkZFUiwgMCk7CisgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbVBCTyk7CisgICAg
Z2xCdWZmZXJTdWJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgMCwgNCwgZGF0YSk7CisKKyAgICBHTHZv
aWQgKm1hcHBlZFB0ciAgPSBnbE1hcEJ1ZmZlclJhbmdlKEdMX0FSUkFZX0JVRkZFUiwgMCwgMzIs
IEdMX01BUF9SRUFEX0JJVCk7CisgICAgR0xDb2xvciAqZGF0YUNvbG9yID0gc3RhdGljX2Nhc3Q8
R0xDb2xvciAqPihtYXBwZWRQdHIpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAg
RVhQRUNUX0VRKEdMQ29sb3IoMSwgMiwgMywgNCksIGRhdGFDb2xvclswXSk7CisKKyAgICBnbFVu
bWFwQnVmZmVyKEdMX0FSUkFZX0JVRkZFUik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9
CisKKy8vIFNhbWUgYXMgdGhlIHByaW9yIHRlc3QsIGJ1dCB3aXRoIGFuIG9mZnNldC4KK1RFU1Rf
UChSZWFkUGl4ZWxzUEJPVGVzdCwgU3ViRGF0YU9mZnNldFByZXNlcnZlc0NvbnRlbnRzKQorewor
ICAgIC8vIFRPRE86IHJlLWVuYWJsZSBvbmNlIHJvb3QgY2F1c2Ugb2YgaHR0cDovL2FuZ2xlYnVn
LmNvbS8xNDE1IGlzIGZpeGVkCisgICAgaWYgKElzQW5kcm9pZCgpICYmIElzQWRyZW5vKCkgJiYg
SXNPcGVuR0xFUygpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQg
b24gQWRyZW5vIE9wZW5HTEVTIG9uIEFuZHJvaWQuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBnbENsZWFyQ29sb3IoMS4wZiwgMC4wZiwgMC4wZiwgMS4wZik7
CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJS
T1IoKTsKKworICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9QQUNLX0JVRkZFUiwgbVBCTyk7Cisg
ICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIDE2LCAxNiwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwg
MCk7CisKKyAgICB1bnNpZ25lZCBjaGFyIGRhdGFbNF0gPSB7IDEsIDIsIDMsIDQgfTsKKworICAg
IGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9QQUNLX0JVRkZFUiwgMCk7CisgICAgZ2xCaW5kQnVmZmVy
KEdMX0FSUkFZX0JVRkZFUiwgbVBCTyk7CisgICAgZ2xCdWZmZXJTdWJEYXRhKEdMX0FSUkFZX0JV
RkZFUiwgMTYsIDQsIGRhdGEpOworCisgICAgR0x2b2lkICptYXBwZWRQdHIgID0gZ2xNYXBCdWZm
ZXJSYW5nZShHTF9BUlJBWV9CVUZGRVIsIDAsIDMyLCBHTF9NQVBfUkVBRF9CSVQpOworICAgIEdM
Q29sb3IgKmRhdGFDb2xvciA9IHN0YXRpY19jYXN0PEdMQ29sb3IgKj4obWFwcGVkUHRyKTsKKyAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIEVYUEVDVF9FUShHTENvbG9yOjpyZWQsIGRh
dGFDb2xvclswXSk7CisgICAgRVhQRUNUX0VRKEdMQ29sb3IoMSwgMiwgMywgNCksIGRhdGFDb2xv
cls0XSk7CisKKyAgICBnbFVubWFwQnVmZmVyKEdMX0FSUkFZX0JVRkZFUik7CisgICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7Cit9CisKK2NsYXNzIFJlYWRQaXhlbHNQQk9EcmF3VGVzdCA6IHB1Ymxp
YyBSZWFkUGl4ZWxzUEJPVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgUmVhZFBpeGVsc1BCT0Ry
YXdUZXN0KCkgOiBtUHJvZ3JhbSgwKSwgbVBvc2l0aW9uVkJPKDApIHt9CisKKyAgICB2b2lkIFNl
dFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFJlYWRQaXhlbHNQQk9UZXN0OjpTZXRVcCgp
OworCisgICAgICAgIGNvbnN0IGNoYXIgKnZlcnRleFNoYWRlclNyYyA9CisgICAgICAgICAgICAi
YXR0cmlidXRlIHZlYzQgYVRlc3Q7IGF0dHJpYnV0ZSB2ZWMyIGFQb3NpdGlvbjsgdmFyeWluZyB2
ZWM0IHZUZXN0O1xuIgorICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICAgICAi
e1xuIgorICAgICAgICAgICAgIiAgICB2VGVzdCAgICAgICAgPSBhVGVzdDtcbiIKKyAgICAgICAg
ICAgICIgICAgZ2xfUG9zaXRpb24gID0gdmVjNChhUG9zaXRpb24sIDAuMCwgMS4wKTtcbiIKKyAg
ICAgICAgICAgICIgICAgZ2xfUG9pbnRTaXplID0gMS4wO1xuIgorICAgICAgICAgICAgIn0iOwor
CisgICAgICAgIGNvbnN0IGNoYXIgKmZyYWdtZW50U2hhZGVyU3JjID0KKyAgICAgICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsgdmFyeWluZyB2ZWM0IHZUZXN0O1xuIgorICAgICAgICAg
ICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgIiAgICBn
bF9GcmFnQ29sb3IgPSB2VGVzdDtcbiIKKyAgICAgICAgICAgICJ9IjsKKworICAgICAgICBtUHJv
Z3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNyYywgZnJhZ21lbnRTaGFkZXJTcmMp
OworICAgICAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsKKworICAgICAgICBnbEdlbkJ1ZmZl
cnMoMSwgJm1Qb3NpdGlvblZCTyk7CisgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZG
RVIsIG1Qb3NpdGlvblZCTyk7CisgICAgICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIs
IDEyOCwgTlVMTCwgR0xfRFlOQU1JQ19EUkFXKTsKKyAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FS
UkFZX0JVRkZFUiwgMCk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOworICAgICAgICBnbERlbGV0
ZUJ1ZmZlcnMoMSwgJm1Qb3NpdGlvblZCTyk7CisgICAgICAgIFJlYWRQaXhlbHNQQk9UZXN0OjpU
ZWFyRG93bigpOworICAgIH0KKworICAgIEdMdWludCBtUHJvZ3JhbTsKKyAgICBHTHVpbnQgbVBv
c2l0aW9uVkJPOworfTsKKworLy8gVGVzdCB0aGF0IHdlIGNhbiBkcmF3IHdpdGggUEJPIGRhdGEu
CitURVNUX1AoUmVhZFBpeGVsc1BCT0RyYXdUZXN0LCBEcmF3V2l0aFBCTykKK3sKKyAgICBHTENv
bG9yIGNvbG9yKDEsIDIsIDMsIDQpOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwg
bVRleHR1cmUpOworICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCAwLCAwLCAx
LCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAmY29sb3IpOworICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOworCisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZFUiwg
bUZCTyk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbEJpbmRCdWZmZXIoR0xf
UElYRUxfUEFDS19CVUZGRVIsIG1QQk8pOworICAgIGdsUmVhZFBpeGVscygwLCAwLCAxLCAxLCBH
TF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKKyAgICBnbEJpbmRCdWZmZXIoR0xfUElYRUxf
UEFDS19CVUZGRVIsIDApOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZmxvYXQg
cG9zaXRpb25EYXRhW10gPSB7IDAuNWYsIDAuNWYgfTsKKworICAgIGdsVXNlUHJvZ3JhbShtUHJv
Z3JhbSk7CisgICAgZ2xWaWV3cG9ydCgwLCAwLCAxLCAxKTsKKyAgICBnbEJpbmRCdWZmZXIoR0xf
QVJSQVlfQlVGRkVSLCBtUG9zaXRpb25WQk8pOworICAgIGdsQnVmZmVyU3ViRGF0YShHTF9BUlJB
WV9CVUZGRVIsIDAsIDEgKiAyICogNCwgcG9zaXRpb25EYXRhKTsKKyAgICBFWFBFQ1RfR0xfTk9f
RVJST1IoKTsKKworICAgIEdMaW50IHBvc2l0aW9uTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0
aW9uKG1Qcm9ncmFtLCAiYVBvc2l0aW9uIik7CisgICAgRVhQRUNUX05FKC0xLCBwb3NpdGlvbkxv
Y2F0aW9uKTsKKworICAgIEdMaW50IHRlc3RMb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24o
bVByb2dyYW0sICJhVGVzdCIpOworICAgIEVYUEVDVF9ORSgtMSwgdGVzdExvY2F0aW9uKTsKKwor
ICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxvY2F0aW9uLCAyLCBHTF9GTE9BVCwg
R0xfRkFMU0UsIDAsIDApOworICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25M
b2NhdGlvbik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbEJpbmRCdWZmZXIo
R0xfQVJSQVlfQlVGRkVSLCBtUEJPKTsKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIodGVzdExv
Y2F0aW9uLCA0LCBHTF9VTlNJR05FRF9CWVRFLCBHTF9GQUxTRSwgMCwgMCk7CisgICAgZ2xFbmFi
bGVWZXJ0ZXhBdHRyaWJBcnJheSh0ZXN0TG9jYXRpb24pOworICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOworCisgICAgZ2xEcmF3QXJyYXlzKEdMX1BPSU5UUywgMCwgMSk7CisgICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7CisKKyAgICBjb2xvciA9IEdMQ29sb3IoMCwgMCwgMCwgMCk7CisgICAgZ2xS
ZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsICZjb2xvcik7
CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBFWFBFQ1RfRVEoR0xDb2xvcigxLCAy
LCAzLCA0KSwgY29sb3IpOworfQorCitjbGFzcyBSZWFkUGl4ZWxzTXVsdGlzYW1wbGVUZXN0IDog
cHVibGljIFJlYWRQaXhlbHNUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBSZWFkUGl4ZWxzTXVs
dGlzYW1wbGVUZXN0KCkgOiBtRkJPKDApLCBtUkJPKDApLCBtUEJPKDApIHt9CisKKyAgICB2b2lk
IFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKKwor
ICAgICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbUZCTyk7CisgICAgICAgIGdsQmluZEZyYW1l
YnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRkJPKTsKKworICAgICAgICBnbEdlblJlbmRlcmJ1ZmZl
cnMoMSwgJm1SQk8pOworICAgICAgICBnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVS
LCBtUkJPKTsKKworICAgICAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1QQk8pOworICAgICAgICBnbEJp
bmRCdWZmZXIoR0xfUElYRUxfUEFDS19CVUZGRVIsIG1QQk8pOworICAgICAgICBnbEJ1ZmZlckRh
dGEoR0xfUElYRUxfUEFDS19CVUZGRVIsIDQgKiBnZXRXaW5kb3dXaWR0aCgpICogZ2V0V2luZG93
SGVpZ2h0KCksIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICBHTF9TVEFUSUNfRFJBVyk7
CisgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9QQUNLX0JVRkZFUiwgMCk7CisKKyAgICAg
ICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92
ZXJyaWRlCisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7CisKKyAgICAgICAg
Z2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1GQk8pOworICAgICAgICBnbERlbGV0ZVJlbmRlcmJ1
ZmZlcnMoMSwgJm1SQk8pOworICAgICAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1QQk8pOworICAg
IH0KKworICAgIEdMdWludCBtRkJPOworICAgIEdMdWludCBtUkJPOworICAgIEdMdWludCBtUEJP
OworfTsKKworLy8gVGVzdCBSZWFkUGl4ZWxzIGZyb20gYSBtdWx0aXNhbXBsZWQgZnJhbWVidWZm
ZXIuCitURVNUX1AoUmVhZFBpeGVsc011bHRpc2FtcGxlVGVzdCwgQmFzaWNDbGVhcikKK3sKKyAg
ICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFleHRlbnNpb25FbmFibGVkKCJH
TF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpKQorICAgIHsKKyAgICAgICAgc3RkOjpj
b3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBFUzMgb3IgR0xfQU5HTEVfZnJhbWVidWZmZXJf
bXVsdGlzYW1wbGUgaXMgbm90IGF2YWlsYWJsZS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmIChleHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1
ZmZlcl9tdWx0aXNhbXBsZSIpKQorICAgIHsKKyAgICAgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGVBTkdMRShHTF9SRU5ERVJCVUZGRVIsIDIsIEdMX1JHQkE4LCA0LCA0KTsKKyAg
ICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGUoR0xfUkVOREVSQlVGRkVSLCAyLCBHTF9SR0JBOCwgNCwgNCk7CisgICAgfQorCisgICAg
Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNI
TUVOVDAsIEdMX1JFTkRFUkJVRkZFUiwgbVJCTyk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
CisKKyAgICBnbENsZWFyQ29sb3IoMS4wZiwgMC4wZiwgMC4wZiwgMS4wZik7CisgICAgZ2xDbGVh
cihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9QQUNL
X0JVRkZFUiwgbVBCTyk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbFJlYWRQ
aXhlbHMoMCwgMCwgMSwgMSwgR0xfUkdCQTgsIEdMX1VOU0lHTkVEX0JZVEUsIE5VTEwpOworICAg
IEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2NsYXNzIFJlYWRQ
aXhlbHNUZXh0dXJlVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHVibGljOgorICAgIFJl
YWRQaXhlbHNUZXh0dXJlVGVzdCgpIDogbUZCTygwKSwgbVRleHR1cmUoMCkKKyAgICB7CisgICAg
ICAgIHNldFdpbmRvd1dpZHRoKDMyKTsKKyAgICAgICAgc2V0V2luZG93SGVpZ2h0KDMyKTsKKyAg
ICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgp
OworICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFC
aXRzKDgpOworICAgIH0KKworICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgQU5HTEVUZXN0OjpTZXRVcCgpOworCisgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1UZXh0
dXJlKTsKKyAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1GQk8pOworICAgICAgICBnbEJp
bmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZCTyk7CisgICAgfQorCisgICAgdm9pZCBU
ZWFyRG93bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygx
LCAmbUZCTyk7CisgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0dXJlKTsKKworICAg
ICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7CisgICAgfQorCisgICAgdm9pZCBpbml0VGV4dHVy
ZShHTGVudW0gdGV4dHVyZVRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVs
cywKKyAgICAgICAgICAgICAgICAgICAgIEdMaW50IGF0dGFjaG1lbnRMZXZlbCwKKyAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGF0dGFjaG1lbnRMYXllcikKKyAgICB7CisgICAgICAgIGdsQmlu
ZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbVRleHR1cmUpOworICAgICAgICBnbFRleFN0b3JhZ2Uz
RCh0ZXh0dXJlVGFyZ2V0LCBsZXZlbHMsIEdMX1JHQkE4LCA0LCA0LCA0KTsKKyAgICAgICAgZ2xG
cmFtZWJ1ZmZlclRleHR1cmVMYXllcihHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVO
VDAsIG1UZXh0dXJlLCBhdHRhY2htZW50TGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXR0YWNobWVudExheWVyKTsKKyAgICAgICAgaW5pdGlhbGl6ZVRleHR1cmVEYXRh
KHRleHR1cmVUYXJnZXQsIGxldmVscyk7CisgICAgfQorCisgICAgdm9pZCB0ZXN0UmVhZChHTGVu
dW0gdGV4dHVyZVRhcmdldCwgR0xpbnQgbGV2ZWxzLCBHTGludCBhdHRhY2htZW50TGV2ZWwsIEdM
aW50IGF0dGFjaG1lbnRMYXllcikKKyAgICB7CisgICAgICAgIGluaXRUZXh0dXJlKHRleHR1cmVU
YXJnZXQsIGxldmVscywgYXR0YWNobWVudExldmVsLCBhdHRhY2htZW50TGF5ZXIpOworICAgICAg
ICB2ZXJpZnlDb2xvcihhdHRhY2htZW50TGV2ZWwsIGF0dGFjaG1lbnRMYXllcik7CisgICAgfQor
CisgICAgdm9pZCBpbml0UEJPKCkKKyAgICB7CisgICAgICAgIGdsR2VuQnVmZmVycygxLCAmbUJ1
ZmZlcik7CisgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9QQUNLX0JVRkZFUiwgbUJ1ZmZl
cik7CisgICAgICAgIGdsQnVmZmVyRGF0YShHTF9QSVhFTF9QQUNLX0JVRkZFUiwgc2l6ZW9mKGFu
Z2xlOjpHTENvbG9yKSwgbnVsbHB0ciwgR0xfU1RSRUFNX0NPUFkpOworICAgICAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKKyAgICB9CisKKyAgICB2b2lkIHRlc3RQQk9SZWFkKEdMZW51bSB0ZXh0
dXJlVGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWxzLAorICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgYXR0YWNobWVudExldmVsLAorICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgYXR0YWNobWVudExheWVyKQorICAgIHsKKyAgICAgICAgaW5pdFBCTygpOworICAgICAg
ICBpbml0VGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBsZXZlbHMsIGF0dGFjaG1lbnRMZXZlbCwgYXR0
YWNobWVudExheWVyKTsKKyAgICAgICAgdmVyaWZ5UEJPKGF0dGFjaG1lbnRMZXZlbCwgYXR0YWNo
bWVudExheWVyKTsKKyAgICB9CisKKyAgICAvLyBHaXZlIGVhY2gge2xldmVsLGxheWVyfSBwYWly
IGEgKHByb2JhYmx5KSB1bmlxdWUgY29sb3IgdmlhIHJhbmRvbS4KKyAgICBHTHVpbnQgZ2V0Q29s
b3JWYWx1ZShHTGludCBsZXZlbCwgR0xpbnQgbGF5ZXIpCisgICAgeworICAgICAgICBtUk5HLnJl
c2VlZChsZXZlbCArIGxheWVyICogMzIpOworICAgICAgICByZXR1cm4gbVJORy5yYW5kb21VSW50
KCk7CisgICAgfQorCisgICAgdm9pZCB2ZXJpZnlDb2xvcihHTGludCBsZXZlbCwgR0xpbnQgbGF5
ZXIpCisgICAgeworICAgICAgICBhbmdsZTo6R0xDb2xvciBjb2xvclZhbHVlKGdldENvbG9yVmFs
dWUobGV2ZWwsIGxheWVyKSk7CisgICAgICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBj
b2xvclZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIHZlcmlmeVBCTyhHTGludCBsZXZlbCwgR0xp
bnQgbGF5ZXIpCisgICAgeworICAgICAgICBnbFJlYWRQaXhlbHMoMCwgMCwgMSwgMSwgR0xfUkdC
QSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7CisKKyAgICAgICAgYW5nbGU6OkdMQ29sb3Ig
ZXhwZWN0ZWRDb2xvcihnZXRDb2xvclZhbHVlKGxldmVsLCBsYXllcikpOworICAgICAgICB2b2lk
ICptYXBQb2ludGVyID0KKyAgICAgICAgICAgIGdsTWFwQnVmZmVyUmFuZ2UoR0xfUElYRUxfUEFD
S19CVUZGRVIsIDAsIHNpemVvZihhbmdsZTo6R0xDb2xvciksIEdMX01BUF9SRUFEX0JJVCk7Cisg
ICAgICAgIEFTU0VSVF9ORShudWxscHRyLCBtYXBQb2ludGVyKTsKKyAgICAgICAgYW5nbGU6OkdM
Q29sb3IgYWN0dWFsQ29sb3I7CisgICAgICAgIG1lbWNweSgmYWN0dWFsQ29sb3IsIG1hcFBvaW50
ZXIsIHNpemVvZihhbmdsZTo6R0xDb2xvcikpOworICAgICAgICBnbFVubWFwQnVmZmVyKEdMX1BJ
WEVMX1BBQ0tfQlVGRkVSKTsKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgICAg
IEVYUEVDVF9FUShleHBlY3RlZENvbG9yLCBhY3R1YWxDb2xvcik7CisgICAgfQorCisgICAgdm9p
ZCBpbml0aWFsaXplVGV4dHVyZURhdGEoR0xlbnVtIHRleHR1cmVUYXJnZXQsIEdMaW50IGxldmVs
cykKKyAgICB7CisgICAgICAgIGZvciAoR0xpbnQgbGV2ZWwgPSAwOyBsZXZlbCA8IGxldmVsczsg
KytsZXZlbCkKKyAgICAgICAgeworICAgICAgICAgICAgR0xpbnQgbWlwU2l6ZSA9IDQgPj4gbGV2
ZWw7CisgICAgICAgICAgICBHTGludCBsYXllcnMgID0gKHRleHR1cmVUYXJnZXQgPT0gR0xfVEVY
VFVSRV8zRCA/IG1pcFNpemUgOiA0KTsKKworICAgICAgICAgICAgc2l6ZV90IGxheWVyU2l6ZSA9
IG1pcFNpemUgKiBtaXBTaXplOworICAgICAgICAgICAgc3RkOjp2ZWN0b3I8R0x1aW50PiB0ZXh0
dXJlRGF0YShsYXllcnMgKiBsYXllclNpemUpOworCisgICAgICAgICAgICBmb3IgKEdMaW50IGxh
eWVyID0gMDsgbGF5ZXIgPCBsYXllcnM7ICsrbGF5ZXIpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgR0x1aW50IGNvbG9yVmFsdWUgPSBnZXRDb2xvclZhbHVlKGxldmVsLCBsYXllcik7
CisgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IChsYXllciAqIGxheWVyU2l6ZSk7Cisg
ICAgICAgICAgICAgICAgc3RkOjpmaWxsKHRleHR1cmVEYXRhLmJlZ2luKCkgKyBvZmZzZXQsIHRl
eHR1cmVEYXRhLmJlZ2luKCkgKyBvZmZzZXQgKyBsYXllclNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbG9yVmFsdWUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBnbFRl
eFN1YkltYWdlM0QodGV4dHVyZVRhcmdldCwgbGV2ZWwsIDAsIDAsIDAsIG1pcFNpemUsIG1pcFNp
emUsIGxheWVycywgR0xfUkdCQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJ
R05FRF9CWVRFLCB0ZXh0dXJlRGF0YS5kYXRhKCkpOworICAgICAgICB9CisgICAgfQorCisgICAg
YW5nbGU6OlJORyBtUk5HOworICAgIEdMdWludCBtRkJPOworICAgIEdMdWludCBtVGV4dHVyZTsK
KyAgICBHTHVpbnQgbUJ1ZmZlcjsKK307CisKKy8vIFRlc3QgM0QgYXR0YWNobWVudCByZWFkYmFj
ay4KK1RFU1RfUChSZWFkUGl4ZWxzVGV4dHVyZVRlc3QsIEJhc2ljQXR0YWNobWVudDNEKQorewor
ICAgIHRlc3RSZWFkKEdMX1RFWFRVUkVfM0QsIDEsIDAsIDApOworfQorCisvLyBUZXN0IDNEIGF0
dGFjaG1lbnQgcmVhZGJhY2ssIG5vbi16ZXJvIG1pcC4KK1RFU1RfUChSZWFkUGl4ZWxzVGV4dHVy
ZVRlc3QsIE1pcEF0dGFjaG1lbnQzRCkKK3sKKyAgICB0ZXN0UmVhZChHTF9URVhUVVJFXzNELCAy
LCAxLCAwKTsKK30KKworLy8gVGVzdCAzRCBhdHRhY2htZW50IHJlYWRiYWNrLCBub24temVybyBs
YXllci4KK1RFU1RfUChSZWFkUGl4ZWxzVGV4dHVyZVRlc3QsIExheWVyQXR0YWNobWVudDNEKQor
eworICAgIHRlc3RSZWFkKEdMX1RFWFRVUkVfM0QsIDEsIDAsIDEpOworfQorCisvLyBUZXN0IDNE
IGF0dGFjaG1lbnQgcmVhZGJhY2ssIG5vbi16ZXJvIG1pcCBhbmQgbGF5ZXIuCitURVNUX1AoUmVh
ZFBpeGVsc1RleHR1cmVUZXN0LCBNaXBMYXllckF0dGFjaG1lbnQzRCkKK3sKKyAgICB0ZXN0UmVh
ZChHTF9URVhUVVJFXzNELCAyLCAxLCAxKTsKK30KKworLy8gVGVzdCAyRCBhcnJheSBhdHRhY2ht
ZW50IHJlYWRiYWNrLgorVEVTVF9QKFJlYWRQaXhlbHNUZXh0dXJlVGVzdCwgQmFzaWNBdHRhY2ht
ZW50MkRBcnJheSkKK3sKKyAgICB0ZXN0UmVhZChHTF9URVhUVVJFXzJEX0FSUkFZLCAxLCAwLCAw
KTsKK30KKworLy8gVGVzdCAzRCBhdHRhY2htZW50IHJlYWRiYWNrLCBub24temVybyBtaXAuCitU
RVNUX1AoUmVhZFBpeGVsc1RleHR1cmVUZXN0LCBNaXBBdHRhY2htZW50MkRBcnJheSkKK3sKKyAg
ICB0ZXN0UmVhZChHTF9URVhUVVJFXzJEX0FSUkFZLCAyLCAxLCAwKTsKK30KKworLy8gVGVzdCAz
RCBhdHRhY2htZW50IHJlYWRiYWNrLCBub24temVybyBsYXllci4KK1RFU1RfUChSZWFkUGl4ZWxz
VGV4dHVyZVRlc3QsIExheWVyQXR0YWNobWVudDJEQXJyYXkpCit7CisgICAgdGVzdFJlYWQoR0xf
VEVYVFVSRV8yRF9BUlJBWSwgMSwgMCwgMSk7Cit9CisKKy8vIFRlc3QgM0QgYXR0YWNobWVudCBy
ZWFkYmFjaywgbm9uLXplcm8gbWlwIGFuZCBsYXllci4KK1RFU1RfUChSZWFkUGl4ZWxzVGV4dHVy
ZVRlc3QsIE1pcExheWVyQXR0YWNobWVudDJEQXJyYXkpCit7CisgICAgdGVzdFJlYWQoR0xfVEVY
VFVSRV8yRF9BUlJBWSwgMiwgMSwgMSk7Cit9CisKKy8vIFRlc3QgM0QgYXR0YWNobWVudCBQQk8g
cmVhZGJhY2suCitURVNUX1AoUmVhZFBpeGVsc1RleHR1cmVUZXN0LCBCYXNpY0F0dGFjaG1lbnQz
RFBCTykKK3sKKyAgICB0ZXN0UEJPUmVhZChHTF9URVhUVVJFXzNELCAxLCAwLCAwKTsKK30KKwor
Ly8gVGVzdCAzRCBhdHRhY2htZW50IHJlYWRiYWNrLCBub24temVybyBtaXAuCitURVNUX1AoUmVh
ZFBpeGVsc1RleHR1cmVUZXN0LCBNaXBBdHRhY2htZW50M0RQQk8pCit7CisgICAgdGVzdFBCT1Jl
YWQoR0xfVEVYVFVSRV8zRCwgMiwgMSwgMCk7Cit9CisKKy8vIFRlc3QgM0QgYXR0YWNobWVudCBy
ZWFkYmFjaywgbm9uLXplcm8gbGF5ZXIuCitURVNUX1AoUmVhZFBpeGVsc1RleHR1cmVUZXN0LCBM
YXllckF0dGFjaG1lbnQzRFBCTykKK3sKKyAgICB0ZXN0UEJPUmVhZChHTF9URVhUVVJFXzNELCAx
LCAwLCAxKTsKK30KKworLy8gVGVzdCAzRCBhdHRhY2htZW50IHJlYWRiYWNrLCBub24temVybyBt
aXAgYW5kIGxheWVyLgorVEVTVF9QKFJlYWRQaXhlbHNUZXh0dXJlVGVzdCwgTWlwTGF5ZXJBdHRh
Y2htZW50M0RQQk8pCit7CisgICAgdGVzdFBCT1JlYWQoR0xfVEVYVFVSRV8zRCwgMiwgMSwgMSk7
Cit9CisKKy8vIFRlc3QgMkQgYXJyYXkgYXR0YWNobWVudCByZWFkYmFjay4KK1RFU1RfUChSZWFk
UGl4ZWxzVGV4dHVyZVRlc3QsIEJhc2ljQXR0YWNobWVudDJEQXJyYXlQQk8pCit7CisgICAgdGVz
dFBCT1JlYWQoR0xfVEVYVFVSRV8yRF9BUlJBWSwgMSwgMCwgMCk7Cit9CisKKy8vIFRlc3QgM0Qg
YXR0YWNobWVudCByZWFkYmFjaywgbm9uLXplcm8gbWlwLgorVEVTVF9QKFJlYWRQaXhlbHNUZXh0
dXJlVGVzdCwgTWlwQXR0YWNobWVudDJEQXJyYXlQQk8pCit7CisgICAgdGVzdFBCT1JlYWQoR0xf
VEVYVFVSRV8yRF9BUlJBWSwgMiwgMSwgMCk7Cit9CisKKy8vIFRlc3QgM0QgYXR0YWNobWVudCBy
ZWFkYmFjaywgbm9uLXplcm8gbGF5ZXIuCitURVNUX1AoUmVhZFBpeGVsc1RleHR1cmVUZXN0LCBM
YXllckF0dGFjaG1lbnQyREFycmF5UEJPKQoreworICAgIHRlc3RQQk9SZWFkKEdMX1RFWFRVUkVf
MkRfQVJSQVksIDEsIDAsIDEpOworfQorCisvLyBUZXN0IDNEIGF0dGFjaG1lbnQgcmVhZGJhY2ss
IG5vbi16ZXJvIG1pcCBhbmQgbGF5ZXIuCitURVNUX1AoUmVhZFBpeGVsc1RleHR1cmVUZXN0LCBN
aXBMYXllckF0dGFjaG1lbnQyREFycmF5UEJPKQoreworICAgIHRlc3RQQk9SZWFkKEdMX1RFWFRV
UkVfMkRfQVJSQVksIDIsIDEsIDEpOworfQorCisvLyBhIHRlc3QgY2xhc3MgdG8gYmUgdXNlZCBm
b3IgZXJyb3IgY2hlY2tpbmcgb2YgZ2xSZWFkUGl4ZWxzCitjbGFzcyBSZWFkUGl4ZWxzRXJyb3JU
ZXN0IDogcHVibGljIFJlYWRQaXhlbHNUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBSZWFkUGl4
ZWxzRXJyb3JUZXN0KCkgOiBtVGV4dHVyZSgwKSwgbUZCTygwKSB7fQorCisgICAgdm9pZCBTZXRV
cCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7CisKKyAgICAg
ICAgZ2xHZW5UZXh0dXJlcygxLCAmbVRleHR1cmUpOworICAgICAgICBnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQsIG1UZXh0dXJlKTsKKyAgICAgICAgZ2xUZXhTdG9yYWdlMkQoR0xfVEVYVFVS
RV8yRCwgMSwgR0xfUkdCQTgsIDQsIDEpOworCisgICAgICAgIGdsR2VuRnJhbWVidWZmZXJzKDEs
ICZtRkJPKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GQk8p
OworICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xP
Ul9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUsIDApOworICAgICAgICBnbEJp
bmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7CisKKyAgICAgICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAgewor
ICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7CisKKyAgICAgICAgZ2xEZWxldGVUZXh0dXJl
cygxLCAmbVRleHR1cmUpOworICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbUZCTyk7
CisgICAgfQorCisgICAgR0x1aW50IG1UZXh0dXJlOworICAgIEdMdWludCBtRkJPOworfTsKKwor
Ly8gIFRoZSB0ZXN0IHZlcmlmaWVzIHRoYXQgZ2xSZWFkUGl4ZWxzIGdlbmVyYXRlcyBhIEdMX0lO
VkFMSURfT1BFUkFUSU9OIGVycm9yCisvLyAgd2hlbiB0aGUgcmVhZCBidWZmZXIgaXMgR0xfTk9O
RS4KKy8vICBSZWZlcmVuY2U6IEdMRVMgMy4wLjQsIFNlY3Rpb24gNC4zLjIgUmVhZGluZyBQaXhl
bHMKK1RFU1RfUChSZWFkUGl4ZWxzRXJyb3JUZXN0LCBSZWFkQnVmZmVySXNOb25lKQoreworICAg
IGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRkJPKTsKKyAgICBnbFJlYWRCdWZm
ZXIoR0xfTk9ORSk7CisgICAgc3RkOjp2ZWN0b3I8R0x1Ynl0ZT4gcGl4ZWxzKDQpOworICAgIGds
UmVhZFBpeGVscygwLCAwLCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbHMu
ZGF0YSgpKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQor
Cit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKKy8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGlj
aCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2
ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCitBTkdMRV9JTlNUQU5U
SUFURV9URVNUKFJlYWRQaXhlbHNUZXN0LCBFUzJfRDNEMTEoKSwgRVMyX09QRU5HTCgpLCBFUzJf
T1BFTkdMRVMoKSk7CitBTkdMRV9JTlNUQU5USUFURV9URVNUKFJlYWRQaXhlbHNQQk9UZXN0LCBF
UzNfRDNEMTEoKSwgRVMzX09QRU5HTCgpLCBFUzNfT1BFTkdMRVMoKSk7CitBTkdMRV9JTlNUQU5U
SUFURV9URVNUKFJlYWRQaXhlbHNQQk9EcmF3VGVzdCwgRVMzX0QzRDExKCksIEVTM19PUEVOR0wo
KSwgRVMzX09QRU5HTEVTKCkpOworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChSZWFkUGl4ZWxzTXVs
dGlzYW1wbGVUZXN0LCBFUzNfRDNEMTEoKSwgRVMzX09QRU5HTCgpLCBFUzNfT1BFTkdMRVMoKSk7
CitBTkdMRV9JTlNUQU5USUFURV9URVNUKFJlYWRQaXhlbHNUZXh0dXJlVGVzdCwgRVMzX0QzRDEx
KCksIEVTM19PUEVOR0woKSwgRVMzX09QRU5HTEVTKCkpOworQU5HTEVfSU5TVEFOVElBVEVfVEVT
VChSZWFkUGl4ZWxzRXJyb3JUZXN0LCBFUzNfRDNEMTEoKSwgRVMzX09QRU5HTCgpLCBFUzNfT1BF
TkdMRVMoKSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVz
dHMvUmVuZGVyZXJUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvZ2xfdGVzdHMvUmVuZGVyZXJUZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvUmVuZGVyZXJUZXN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIxMCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFJlbmRlcmVy
VGVzdDoKKy8vICAgVGhlc2UgdGVzdHMgYXJlIGRlc2lnbmVkIHRvIGVuc3VyZSB0aGF0IHRoZSB2
YXJpb3VzIGNvbmZpZ3VyYXRpb25zIG9mIHRoZSB0ZXN0IGZpeHR1cmVzIHdvcmsgYXMgZXhwZWN0
ZWQuCisvLyAgIElmIG9uZSBvZiB0aGVzZSB0ZXN0cyBmYWlscywgdGhlbiBpdCBpcyBsaWtlbHkg
dGhhdCBzb21lIG9mIHRoZSBvdGhlciB0ZXN0cyBhcmUgYmVpbmcgY29uZmlndXJlZCBpbmNvcnJl
Y3RseS4KKy8vICAgRm9yIGV4YW1wbGUsIHRoZXkgbWlnaHQgYmUgdXNpbmcgdGhlIEQzRDExIHJl
bmRlcmVyIHdoZW4gdGhlIHRlc3QgaXMgbWVhbnQgdG8gYmUgdXNpbmcgdGhlIEQzRDkgcmVuZGVy
ZXIuCisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgYW5nbGU7CisKK25hbWVzcGFjZQoreworCitjbGFzcyBSZW5kZXJlclRlc3QgOiBwdWJsaWMg
QU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBSZW5kZXJlclRlc3QoKQorICAgIHsKKyAg
ICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKKyAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7
CisgICAgfQorfTsKKworVEVTVF9QKFJlbmRlcmVyVGVzdCwgUmVxdWVzdGVkUmVuZGVyZXJDcmVh
dGVkKQoreworICAgIHN0ZDo6c3RyaW5nIHJlbmRlcmVyU3RyaW5nID0gc3RkOjpzdHJpbmcocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2xHZXRTdHJpbmcoR0xfUkVOREVSRVIpKSk7Cisg
ICAgc3RkOjp0cmFuc2Zvcm0ocmVuZGVyZXJTdHJpbmcuYmVnaW4oKSwgcmVuZGVyZXJTdHJpbmcu
ZW5kKCksIHJlbmRlcmVyU3RyaW5nLmJlZ2luKCksIDo6dG9sb3dlcik7CisKKyAgICBzdGQ6OnN0
cmluZyB2ZXJzaW9uU3RyaW5nID0gc3RkOjpzdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oZ2xHZXRTdHJpbmcoR0xfVkVSU0lPTikpKTsKKyAgICBzdGQ6OnRyYW5zZm9ybSh2ZXJz
aW9uU3RyaW5nLmJlZ2luKCksIHZlcnNpb25TdHJpbmcuZW5kKCksIHZlcnNpb25TdHJpbmcuYmVn
aW4oKSwgOjp0b2xvd2VyKTsKKworICAgIGNvbnN0IEVHTFBsYXRmb3JtUGFyYW1ldGVycyAmcGxh
dGZvcm0gPSBHZXRQYXJhbSgpLmVnbFBhcmFtZXRlcnM7CisKKyAgICAvLyBFbnN1cmUgdGhhdCB0
aGUgcmVuZGVyZXIgc3RyaW5nIGNvbnRhaW5zIEQzRDExLCBpZiB3ZSByZXF1ZXN0ZWQgYSBEM0Qx
MSByZW5kZXJlci4KKyAgICBpZiAocGxhdGZvcm0ucmVuZGVyZXIgPT0gRUdMX1BMQVRGT1JNX0FO
R0xFX1RZUEVfRDNEMTFfQU5HTEUpCisgICAgeworICAgICAgICBBU1NFUlRfTkUocmVuZGVyZXJT
dHJpbmcuZmluZChzdGQ6OnN0cmluZygiZGlyZWN0M2QxMSIpKSwgc3RkOjpzdHJpbmc6Om5wb3Mp
OworICAgIH0KKworICAgIC8vIEVuc3VyZSB0aGF0IHRoZSByZW5kZXJlciBzdHJpbmcgY29udGFp
bnMgRDNEOSwgaWYgd2UgcmVxdWVzdGVkIGEgRDNEOSByZW5kZXJlci4KKyAgICBpZiAocGxhdGZv
cm0ucmVuZGVyZXIgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEOV9BTkdMRSkKKyAgICB7
CisgICAgICAgIEFTU0VSVF9ORShyZW5kZXJlclN0cmluZy5maW5kKHN0ZDo6c3RyaW5nKCJkaXJl
Y3QzZDkiKSksIHN0ZDo6c3RyaW5nOjpucG9zKTsKKyAgICB9CisKKyAgICAvLyBFbnN1cmUgdGhh
dCB0aGUgbWFqb3IgYW5kIG1pbm9yIHZlcnNpb25zIHRyaWdnZXIgZXhwZWN0ZWQgYmVoYXZpb3Ig
aW4gRDNEMTEKKyAgICBpZiAocGxhdGZvcm0ucmVuZGVyZXIgPT0gRUdMX1BMQVRGT1JNX0FOR0xF
X1RZUEVfRDNEMTFfQU5HTEUpCisgICAgeworICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgcmVu
ZGVyZXIgdXNlcyBXQVJQLCBpZiB3ZSByZXF1ZXN0ZWQgaXQuCisgICAgICAgIGlmIChwbGF0Zm9y
bS5kZXZpY2VUeXBlID09IEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9XQVJQX0FOR0xF
KQorICAgICAgICB7CisgICAgICAgICAgICBhdXRvIGJhc2ljUmVuZGVyUG9zID0gcmVuZGVyZXJT
dHJpbmcuZmluZChzdGQ6OnN0cmluZygibWljcm9zb2Z0IGJhc2ljIHJlbmRlciIpKTsKKyAgICAg
ICAgICAgIGF1dG8gc29mdHdhcmVBZGFwdGVyUG9zID0gcmVuZGVyZXJTdHJpbmcuZmluZChzdGQ6
OnN0cmluZygic29mdHdhcmUgYWRhcHRlciIpKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKGJh
c2ljUmVuZGVyUG9zICE9IHN0ZDo6c3RyaW5nOjpucG9zIHx8IHNvZnR3YXJlQWRhcHRlclBvcyAh
PSBzdGQ6OnN0cmluZzo6bnBvcyk7CisgICAgICAgIH0KKworICAgICAgICBzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4gYWNjZXB0YWJsZVNoYWRlck1vZGVsczsKKworICAgICAgICAvLyBXaGVuIG5v
IHNwZWNpZmljIG1ham9yL21pbm9yIHZlcnNpb24gaXMgcmVxdWVzdGVkLCB0aGVuIEFOR0xFIHNo
b3VsZCByZXR1cm4gdGhlIGhpZ2hlc3QgcG9zc2libGUgZmVhdHVyZSBsZXZlbCBieSBkZWZhdWx0
LgorICAgICAgICAvLyBUaGUgY3VycmVudCBoYXJkd2FyZSBkcml2ZXIgbWlnaHQgbm90IHN1cHBv
cnQgRmVhdHVyZSBMZXZlbCAxMV8wLCBidXQgV0FSUCBhbHdheXMgZG9lcy4KKyAgICAgICAgLy8g
VGhlcmVmb3JlIGlmIFdBUlAgaXMgc3BlY2lmaWVkIGJ1dCBubyBtYWpvci9taW5vciB2ZXJzaW9u
IGlzIHNwZWNpZmllZCwgdGhlbiB3ZSB0ZXN0IHRvIGNoZWNrIHRoYXQgQU5HTEUgcmV0dXJucyBG
TDExXzAuCisgICAgICAgIGlmIChwbGF0Zm9ybS5tYWpvclZlcnNpb24gPj0gMTEgfHwgcGxhdGZv
cm0ubWFqb3JWZXJzaW9uID09IEVHTF9ET05UX0NBUkUpCisgICAgICAgIHsKKyAgICAgICAgICAg
IC8vIEZlYXR1cmUgTGV2ZWwgMTBfMCBjb3JyZXNwb25kcyB0byBzaGFkZXIgbW9kZWwgNV8wCisg
ICAgICAgICAgICBhY2NlcHRhYmxlU2hhZGVyTW9kZWxzLnB1c2hfYmFjaygicHNfNV8wIik7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAocGxhdGZvcm0ubWFqb3JWZXJzaW9uID49IDEwIHx8IHBs
YXRmb3JtLm1ham9yVmVyc2lvbiA9PSBFR0xfRE9OVF9DQVJFKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAocGxhdGZvcm0ubWlub3JWZXJzaW9uID49IDEgfHwgcGxhdGZvcm0ubWlub3JWZXJz
aW9uID09IEVHTF9ET05UX0NBUkUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8g
RmVhdHVyZSBMZXZlbCAxMF8xIGNvcnJlc3BvbmRzIHRvIHNoYWRlciBtb2RlbCA0XzEKKyAgICAg
ICAgICAgICAgICBhY2NlcHRhYmxlU2hhZGVyTW9kZWxzLnB1c2hfYmFjaygicHNfNF8xIik7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChwbGF0Zm9ybS5taW5vclZlcnNpb24gPj0g
MCB8fCBwbGF0Zm9ybS5taW5vclZlcnNpb24gPT0gRUdMX0RPTlRfQ0FSRSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAvLyBGZWF0dXJlIExldmVsIDEwXzAgY29ycmVzcG9uZHMgdG8g
c2hhZGVyIG1vZGVsIDRfMAorICAgICAgICAgICAgICAgIGFjY2VwdGFibGVTaGFkZXJNb2RlbHMu
cHVzaF9iYWNrKCJwc180XzAiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IGlmIChwbGF0Zm9ybS5tYWpvclZlcnNpb24gPT0gOSAmJiBwbGF0Zm9ybS5taW5vclZlcnNpb24g
PT0gMykKKyAgICAgICAgeworICAgICAgICAgICAgYWNjZXB0YWJsZVNoYWRlck1vZGVscy5wdXNo
X2JhY2soInBzXzRfMF9sZXZlbF85XzMiKTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgZm91
bmQgPSBmYWxzZTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhY2NlcHRhYmxlU2hh
ZGVyTW9kZWxzLnNpemUoKTsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAocmVuZGVy
ZXJTdHJpbmcuZmluZChhY2NlcHRhYmxlU2hhZGVyTW9kZWxzW2ldKSAhPSBzdGQ6OnN0cmluZzo6
bnBvcykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlRfVFJVRShmb3VuZCk7CisgICAg
fQorCisgICAgRUdMaW50IGdsZXNNYWpvclZlcnNpb24gPSBHZXRQYXJhbSgpLm1ham9yVmVyc2lv
bjsKKworICAgIC8vIEVuc3VyZSB0aGF0IHRoZSByZW5kZXJlciBzdHJpbmcgY29udGFpbnMgR0wg
RVMgMy4wLCBpZiB3ZSByZXF1ZXN0ZWQgYSBHTCBFUyAzLjAKKyAgICBpZiAoZ2xlc01ham9yVmVy
c2lvbiA9PSAzKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05FKHZlcnNpb25TdHJpbmcuZmluZChz
dGQ6OnN0cmluZygiZXMgMy4wIikpLCBzdGQ6OnN0cmluZzo6bnBvcyk7CisgICAgfQorCisgICAg
Ly8gRW5zdXJlIHRoYXQgdGhlIHZlcnNpb24gc3RyaW5nIGNvbnRhaW5zIEdMIEVTIDIuMCwgaWYg
d2UgcmVxdWVzdGVkIEdMIEVTIDIuMAorICAgIGlmIChnbGVzTWFqb3JWZXJzaW9uID09IDIpCisg
ICAgeworICAgICAgICBBU1NFUlRfTkUodmVyc2lvblN0cmluZy5maW5kKHN0ZDo6c3RyaW5nKCJl
cyAyLjAiKSksIHN0ZDo6c3RyaW5nOjpucG9zKTsKKyAgICB9Cit9CisKKy8vIFBlcmZvcm0gYSBz
aW1wbGUgb3BlcmF0aW9uIChjbGVhciBhbmQgcmVhZCBwaXhlbHMpIHRvIHZlcmlmeSB0aGUgZGV2
aWNlIGlzIHdvcmtpbmcKK1RFU1RfUChSZW5kZXJlclRlc3QsIFNpbXBsZU9wZXJhdGlvbikKK3sK
KyAgICBnbENsZWFyQ29sb3IoMC4wZiwgMS4wZiwgMC4wZiwgMS4wZik7CisgICAgZ2xDbGVhcihH
TF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMCwgMjU1LCAw
LCAyNTUpOworfQorCisvLyBTZWxlY3QgY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVy
ZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBh
Z2FpbnN0LgorCitBTkdMRV9JTlNUQU5USUFURV9URVNUKFJlbmRlcmVyVGVzdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgLy8gRVMyIG9uIHRvcCBvZiBEM0Q5CisgICAgICAgICAgICAgICAgICAg
ICAgIEVTMl9EM0Q5KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5X1JFRkVSRU5D
RSgpLAorCisgICAgICAgICAgICAgICAgICAgICAgIC8vIEVTMiBvbiB0b3Agb2YgRDNEMTEgZmVh
dHVyZSBsZXZlbCA5LjMgdG8gMTEuMAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMMTFfMCgpLAorICAgICAgICAg
ICAgICAgICAgICAgICBFUzJfRDNEMTFfRkwxMF8xKCksCisgICAgICAgICAgICAgICAgICAgICAg
IEVTMl9EM0QxMV9GTDEwXzAoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZM
OV8zKCksCisKKyAgICAgICAgICAgICAgICAgICAgICAgLy8gRVMyIG9uIHRvcCBvZiBEM0QxMSBX
QVJQIGZlYXR1cmUgbGV2ZWwgOS4zIHRvIDExLjAKKyAgICAgICAgICAgICAgICAgICAgICAgRVMy
X0QzRDExX1dBUlAoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMMTFfMF9X
QVJQKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDEwXzFfV0FSUCgpLAor
ICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkwxMF8wX1dBUlAoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8zX1dBUlAoKSwKKworICAgICAgICAgICAgICAg
ICAgICAgICAvLyBFUzIgb24gdG9wIG9mIEQzRDExIHJlZmVyZW5jZSBmZWF0dXJlIGxldmVsIDku
MyB0byAxMS4wCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9SRUZFUkVOQ0UoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMMTFfMF9SRUZFUkVOQ0UoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMMTBfMV9SRUZFUkVOQ0UoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMMTBfMF9SRUZFUkVOQ0UoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8zX1JFRkVSRU5DRSgpLAorCisgICAgICAgICAg
ICAgICAgICAgICAgIC8vIEVTMyBvbiB0b3Agb2YgRDNEMTEgZmVhdHVyZSBsZXZlbCA5LjMgdG8g
MTEuMAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfRDNEMTEoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgRVMzX0QzRDExX0ZMMTFfMCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNf
RDNEMTFfRkwxMF8xKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19EM0QxMV9GTDEwXzAo
KSwKKworICAgICAgICAgICAgICAgICAgICAgICAvLyBFUzMgb24gdG9wIG9mIEQzRDExIFdBUlAg
ZmVhdHVyZSBsZXZlbCA5LjMgdG8gMTEuMAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfRDNE
MTFfV0FSUCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfRDNEMTFfRkwxMV8wX1dBUlAo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExX0ZMMTBfMV9XQVJQKCksCisgICAg
ICAgICAgICAgICAgICAgICAgIEVTM19EM0QxMV9GTDEwXzBfV0FSUCgpLAorCisgICAgICAgICAg
ICAgICAgICAgICAgIC8vIEVTMyBvbiB0b3Agb2YgRDNEMTEgcmVmZXJlbmNlIGZlYXR1cmUgbGV2
ZWwgOS4zIHRvIDExLjAKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExX1JFRkVSRU5D
RSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfRDNEMTFfRkwxMV8wX1JFRkVSRU5DRSgp
LAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfRDNEMTFfRkwxMF8xX1JFRkVSRU5DRSgpLAor
ICAgICAgICAgICAgICAgICAgICAgICBFUzNfRDNEMTFfRkwxMF8wX1JFRkVSRU5DRSgpLAorCisg
ICAgICAgICAgICAgICAgICAgICAgIC8vIEVTMiBvbiB0b3Agb2YgZGVza3RvcCBPcGVuR0wgdmVy
c2lvbnMgMi4xIHRvIDQuNQorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCisg
ICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woMiwgMSksCisgICAgICAgICAgICAgICAg
ICAgICAgIEVTMl9PUEVOR0woMywgMCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVO
R0woMywgMSksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woMywgMiksCisgICAg
ICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woMywgMyksCisgICAgICAgICAgICAgICAgICAg
ICAgIEVTMl9PUEVOR0woNCwgMCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0wo
NCwgMSksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woNCwgMiksCisgICAgICAg
ICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woNCwgMyksCisgICAgICAgICAgICAgICAgICAgICAg
IEVTMl9PUEVOR0woNCwgNCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woNCwg
NSksCisKKyAgICAgICAgICAgICAgICAgICAgICAgLy8gRVMyIG9uIHRvcCBvZiBkZXNrdG9wIE9w
ZW5HTCB2ZXJzaW9ucyAzLjIgdG8gNC41CisgICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVO
R0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgzLCAyKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgRVMzX09QRU5HTCgzLCAzKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
RVMzX09QRU5HTCg0LCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCg0LCAx
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCg0LCAyKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgRVMzX09QRU5HTCg0LCAzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMz
X09QRU5HTCg0LCA0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCg0LCA1KSwK
KworICAgICAgICAgICAgICAgICAgICAgICAvLyBFUzIgb24gdG9wIG9mIE9wZW5HTCBFUyAyLjAg
dG8gMy4yCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpLAorICAgICAgICAg
ICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoMiwgMCksCisgICAgICAgICAgICAgICAgICAgICAg
IEVTMl9PUEVOR0xFUygzLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVT
KDMsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoMywgMiksCisKKyAg
ICAgICAgICAgICAgICAgICAgICAgLy8gRVMyIG9uIHRvcCBvZiBPcGVuR0wgRVMgMy4wIHRvIDMu
MgorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMRVMoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgRVMzX09QRU5HTEVTKDMsIDApLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNf
T1BFTkdMRVMoMywgMSksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygzLCAy
KSk7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMv
Um9idXN0Q2xpZW50TWVtb3J5VGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1JvYnVzdENsaWVudE1lbW9yeVRlc3QuY3BwCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0
cy9Sb2J1c3RDbGllbnRNZW1vcnlUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM4
NSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKworLy8gUm9idXN0Q2xpZW50TWVtb3J5VGVzdC5jcHAgOiBUZXN0cyBv
ZiB0aGUgR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkgZXh0ZW5zaW9uLgorCisjaW5jbHVk
ZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKworI2luY2x1ZGUgInRlc3RfdXRpbHMvZ2xfcmFp
aS5oIgorCituYW1lc3BhY2UgYW5nbGUKK3sKK2NsYXNzIFJvYnVzdENsaWVudE1lbW9yeVRlc3Qg
OiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBSb2J1c3RDbGllbnRNZW1v
cnlUZXN0KCkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7CisgICAgICAgIHNl
dFdpbmRvd0hlaWdodCgxMjgpOworICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOworICAgICAg
ICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwor
ICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgfQorCisgICAgdm9pZCBTZXRVcCgp
IG92ZXJyaWRlCisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7CisKKyAgICAgICAg
Z2xHZXRCb29sZWFudlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVEJPT0xF
QU5WUk9CVVNUQU5HTEU+KAorICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0Qm9v
bGVhbnZSb2J1c3RBTkdMRSIpKTsKKyAgICAgICAgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVEJVRkZFUlBBUkFNRVRFUklWUk9CVVNU
QU5HTEU+KAorICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0QnVmZmVyUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRSIpKTsKKyAgICAgICAgZ2xHZXRGbG9hdHZSb2J1c3RBTkdMRSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRGTE9BVFZST0JVU1RBTkdMRT4oCisgICAgICAgICAgICBl
Z2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRGbG9hdHZSb2J1c3RBTkdMRSIpKTsKKyAgICAgICAgZ2xH
ZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFID0KKyAgICAgICAg
ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRGUkFNRUJVRkZFUkFUVEFDSE1FTlRQQVJBTUVU
RVJJVlJPQlVTVEFOR0xFPigKKyAgICAgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xH
ZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFIikpOworICAgICAg
ICBnbEdldEludGVnZXJ2Um9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VUSU5U
RUdFUlZST0JVU1RBTkdMRT4oCisgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRJ
bnRlZ2VydlJvYnVzdEFOR0xFIikpOworICAgICAgICBnbEdldFByb2dyYW1pdlJvYnVzdEFOR0xF
ID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVFBST0dSQU1JVlJPQlVTVEFOR0xFPigKKyAgICAg
ICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldFByb2dyYW1pdlJvYnVzdEFOR0xFIikpOwor
ICAgICAgICBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUgPQorICAgICAg
ICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVFJFTkRFUkJVRkZFUlBBUkFNRVRFUklWUk9C
VVNUQU5HTEU+KAorICAgICAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUiKSk7CisgICAgICAgIGdsR2V0U2hhZGVyaXZS
b2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRTSEFERVJJVlJPQlVTVEFOR0xF
PigKKyAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldFNoYWRlcml2Um9idXN0QU5H
TEUiKSk7CisgICAgICAgIGdsR2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8UEZOR0xHRVRURVhQQVJBTUVURVJGVlJPQlVTVEFOR0xFPigKKyAgICAgICAgICAg
IGVnbEdldFByb2NBZGRyZXNzKCJnbEdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUiKSk7Cisg
ICAgICAgIGdsR2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
UEZOR0xHRVRURVhQQVJBTUVURVJJVlJPQlVTVEFOR0xFPigKKyAgICAgICAgICAgIGVnbEdldFBy
b2NBZGRyZXNzKCJnbEdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUiKSk7CisgICAgICAgIGds
R2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VUVU5JRk9S
TUZWUk9CVVNUQU5HTEU+KAorICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0VW5p
Zm9ybWZ2Um9idXN0QU5HTEUiKSk7CisgICAgICAgIGdsR2V0VW5pZm9ybWl2Um9idXN0QU5HTEUg
PSByZWludGVycHJldF9jYXN0PFBGTkdMR0VUVU5JRk9STUlWUk9CVVNUQU5HTEU+KAorICAgICAg
ICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0VW5pZm9ybWl2Um9idXN0QU5HTEUiKSk7Cisg
ICAgICAgIGdsR2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
UEZOR0xHRVRWRVJURVhBVFRSSUJGVlJPQlVTVEFOR0xFPigKKyAgICAgICAgICAgIGVnbEdldFBy
b2NBZGRyZXNzKCJnbEdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUiKSk7CisgICAgICAgIGds
R2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRW
RVJURVhBVFRSSUJJVlJPQlVTVEFOR0xFPigKKyAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNz
KCJnbEdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUiKSk7CisgICAgICAgIGdsR2V0VmVydGV4
QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRSA9CisgICAgICAgICAgICByZWludGVycHJldF9jYXN0
PFBGTkdMR0VUVkVSVEVYQVRUUklCUE9JTlRFUlZST0JVU1RBTkdMRT4oCisgICAgICAgICAgICAg
ICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdM
RSIpKTsKKyAgICAgICAgZ2xSZWFkUGl4ZWxzUm9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0
PFBGTkdMUkVBRFBJWEVMU1JPQlVTVEFOR0xFPigKKyAgICAgICAgICAgIGVnbEdldFByb2NBZGRy
ZXNzKCJnbFJlYWRQaXhlbHNSb2J1c3RBTkdMRSIpKTsKKyAgICAgICAgZ2xUZXhJbWFnZTJEUm9i
dXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMVEVYSU1BR0UyRFJPQlVTVEFOR0xFPigK
KyAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbFRleEltYWdlMkRSb2J1c3RBTkdMRSIp
KTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2Fz
dDxQRk5HTFRFWFBBUkFNRVRFUkZWUk9CVVNUQU5HTEU+KAorICAgICAgICAgICAgZWdsR2V0UHJv
Y0FkZHJlc3MoImdsVGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSIpKTsKKyAgICAgICAgZ2xUZXhQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTFRFWFBBUkFNRVRF
UklWUk9CVVNUQU5HTEU+KAorICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsVGV4UGFy
YW1ldGVyaXZSb2J1c3RBTkdMRSIpKTsKKyAgICAgICAgZ2xUZXhTdWJJbWFnZTJEUm9idXN0QU5H
TEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMVEVYU1VCSU1BR0UyRFJPQlVTVEFOR0xFPigKKyAg
ICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRSIp
KTsKKyAgICAgICAgZ2xUZXhJbWFnZTNEUm9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBG
TkdMVEVYSU1BR0UzRFJPQlVTVEFOR0xFPigKKyAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNz
KCJnbFRleEltYWdlM0RSb2J1c3RBTkdMRSIpKTsKKyAgICAgICAgZ2xUZXhTdWJJbWFnZTNEUm9i
dXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMVEVYU1VCSU1BR0UzRFJPQlVTVEFOR0xF
PigKKyAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbFRleFN1YkltYWdlM0RSb2J1c3RB
TkdMRSIpKTsKKyAgICAgICAgZ2xHZXRRdWVyeWl2Um9idXN0QU5HTEUgPSByZWludGVycHJldF9j
YXN0PFBGTkdMR0VUUVVFUllJVlJPQlVTVEFOR0xFPigKKyAgICAgICAgICAgIGVnbEdldFByb2NB
ZGRyZXNzKCJnbEdldFF1ZXJ5aXZSb2J1c3RBTkdMRSIpKTsKKyAgICAgICAgZ2xHZXRRdWVyeU9i
amVjdHVpdlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVFFVRVJZT0JKRUNU
VUlWUk9CVVNUQU5HTEU+KAorICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0UXVl
cnlPYmplY3R1aXZSb2J1c3RBTkdMRSIpKTsKKyAgICAgICAgZ2xHZXRCdWZmZXJQb2ludGVydlJv
YnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVEJVRkZFUlBPSU5URVJWUk9CVVNU
QU5HTEU+KAorICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0QnVmZmVyUG9pbnRl
cnZSb2J1c3RBTkdMRSIpKTsKKyAgICAgICAgZ2xHZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUgPSBy
ZWludGVycHJldF9jYXN0PFBGTkdMR0VUSU5URUdFUklfVlJPQlVTVEFOR0xFPigKKyAgICAgICAg
ICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldEludGVnZXJpX3ZSb2J1c3RBTkdMRSIpKTsKKyAg
ICAgICAgZ2xHZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0
PFBGTkdFVElOVEVSTkFMRk9STUFUSVZST0JVU1RBTkdMRT4oCisgICAgICAgICAgICBlZ2xHZXRQ
cm9jQWRkcmVzcygiZ2xHZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUiKSk7CisgICAgICAg
IGdsR2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdM
R0VUVkVSVEVYQVRUUklCSUlWUk9CVVNUQU5HTEU+KAorICAgICAgICAgICAgZWdsR2V0UHJvY0Fk
ZHJlc3MoImdsR2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUiKSk7CisgICAgICAgIGdsR2V0
VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVFZF
UlRFWEFUVFJJQklVSVZST0JVU1RBTkdMRT4oCisgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVz
cygiZ2xHZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUiKSk7CisgICAgICAgIGdsR2V0VW5p
Zm9ybXVpdlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVFVOSUZPUk1VSVZS
T0JVU1RBTkdMRT4oCisgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRVbmlmb3Jt
dWl2Um9idXN0QU5HTEUiKSk7CisgICAgICAgIGdsR2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1
c3RBTkdMRSA9CisgICAgICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMR0VUQUNUSVZFVU5J
Rk9STUJMT0NLSVZST0JVU1RBTkdMRT4oCisgICAgICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJl
c3MoImdsR2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRSIpKTsKKyAgICAgICAgZ2xH
ZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VUSU5URUdF
UjY0VlJPQlVTVEFOR0xFPigKKyAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldElu
dGVnZXI2NHZSb2J1c3RBTkdMRSIpKTsKKyAgICAgICAgZ2xHZXRJbnRlZ2VyNjRpX3ZSb2J1c3RB
TkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRJTlRFR0VSNjRJX1ZST0JVU1RBTkdMRT4o
CisgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRJbnRlZ2VyNjRpX3ZSb2J1c3RB
TkdMRSIpKTsKKyAgICAgICAgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUgPQor
ICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVEJVRkZFUlBBUkFNRVRFUkk2NFZS
T0JVU1RBTkdMRT4oCisgICAgICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0QnVm
ZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFIikpOworICAgICAgICBnbFNhbXBsZXJQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTFNBTVBMRVJQQVJBTUVURVJJ
VlJPQlVTVEFOR0xFPigKKyAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbFNhbXBsZXJQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFIikpOworICAgICAgICBnbFNhbXBsZXJQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTFNBTVBMRVJQQVJBTUVURVJGVlJPQlVT
VEFOR0xFPigKKyAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbFNhbXBsZXJQYXJhbWV0
ZXJmdlJvYnVzdEFOR0xFIikpOworICAgICAgICBnbEdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFID0KKyAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRTQU1QTEVSUEFS
QU1FVEVSSVZST0JVU1RBTkdMRT4oCisgICAgICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3Mo
ImdsR2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUiKSk7CisgICAgICAgIGdsR2V0U2Ft
cGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUgPQorICAgICAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDxQRk5HTEdFVFNBTVBMRVJQQVJBTUVURVJGVlJPQlVTVEFOR0xFPigKKyAgICAgICAgICAgICAg
ICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSIp
KTsKKyAgICAgICAgZ2xHZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUgPQorICAg
ICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVEZSQU1FQlVGRkVSUEFSQU1FVEVSSVZS
T0JVU1RBTkdMRT4oCisgICAgICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0RnJh
bWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFIikpOworICAgICAgICBnbEdldFByb2dyYW1J
bnRlcmZhY2VpdlJvYnVzdEFOR0xFID0KKyAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZO
R0xHRVRQUk9HUkFNSU5URVJGQUNFSVZST0JVU1RBTkdMRT4oCisgICAgICAgICAgICAgICAgZWds
R2V0UHJvY0FkZHJlc3MoImdsR2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUiKSk7Cisg
ICAgICAgIGdsR2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5H
TEdFVEJPT0xFQU5JX1ZST0JVU1RBTkdMRT4oCisgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVz
cygiZ2xHZXRCb29sZWFuaV92Um9idXN0QU5HTEUiKSk7CisgICAgICAgIGdsR2V0TXVsdGlzYW1w
bGVmdlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVE1VTFRJU0FNUExFRlZS
T0JVU1RBTkdMRT4oCisgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRNdWx0aXNh
bXBsZWZ2Um9idXN0QU5HTEUiKSk7CisgICAgICAgIGdsR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFID0KKyAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRURVhMRVZF
TFBBUkFNRVRFUklWUk9CVVNUQU5HTEU+KAorICAgICAgICAgICAgICAgIGVnbEdldFByb2NBZGRy
ZXNzKCJnbEdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSIpKTsKKyAgICAgICAgZ2xH
ZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUgPQorICAgICAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDxQRk5HTEdFVFRFWExFVkVMUEFSQU1FVEVSRlZST0JVU1RBTkdMRT4oCisgICAgICAg
ICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVz
dEFOR0xFIikpOworICAgICAgICBnbEdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRSA9
CisgICAgICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMR0VUUE9JTlRFUlZST0JVU1RBTkdM
RVJPQlVTVEFOR0xFPigKKyAgICAgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRQ
b2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUiKSk7CisgICAgICAgIGdsUmVhZG5QaXhlbHNS
b2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xSRUFETlBJWEVMU1JPQlVTVEFOR0xF
PigKKyAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbFJlYWRuUGl4ZWxzUm9idXN0QU5H
TEUiKSk7CisgICAgICAgIGdsR2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRf
Y2FzdDxQRk5HTEdFVE5VTklGT1JNRlZST0JVU1RBTkdMRT4oCisgICAgICAgICAgICBlZ2xHZXRQ
cm9jQWRkcmVzcygiZ2xHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUiKSk7CisgICAgICAgIGdsR2V0
blVuaWZvcm1pdlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVE5VTklGT1JN
SVZST0JVU1RBTkdMRT4oCisgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRuVW5p
Zm9ybWl2Um9idXN0QU5HTEUiKSk7CisgICAgICAgIGdsR2V0blVuaWZvcm11aXZSb2J1c3RBTkdM
RSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVROVU5JRk9STVVJVlJPQlVTVEFOR0xFPigKKyAg
ICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUi
KSk7CisgICAgICAgIGdsVGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUgPSByZWludGVycHJldF9j
YXN0PFBGTkdMVEVYUEFSQU1FVEVSSUlWUk9CVVNUQU5HTEU+KAorICAgICAgICAgICAgZWdsR2V0
UHJvY0FkZHJlc3MoImdsVGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUiKSk7CisgICAgICAgIGds
VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTFRFWFBB
UkFNRVRFUklVSVZST0JVU1RBTkdMRT4oCisgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygi
Z2xUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUiKSk7CisgICAgICAgIGdsR2V0VGV4UGFyYW1l
dGVySWl2Um9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VUVEVYUEFSQU1FVEVS
SUlWUk9CVVNUQU5HTEU+KAorICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0VGV4
UGFyYW1ldGVySWl2Um9idXN0QU5HTEUiKSk7CisgICAgICAgIGdsR2V0VGV4UGFyYW1ldGVySXVp
dlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVFRFWFBBUkFNRVRFUklVSVZS
T0JVU1RBTkdMRT4oCisgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRUZXhQYXJh
bWV0ZXJJdWl2Um9idXN0QU5HTEUiKSk7CisgICAgICAgIGdsU2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTFNBTVBMRVJQQVJBTUVURVJJSVZST0JV
U1RBTkdMRT4oCisgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xTYW1wbGVyUGFyYW1l
dGVySWl2Um9idXN0QU5HTEUiKSk7CisgICAgICAgIGdsU2FtcGxlclBhcmFtZXRlckl1aXZSb2J1
c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xTQU1QTEVSUEFSQU1FVEVSSVVJVlJPQlVT
VEFOR0xFPigKKyAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbFNhbXBsZXJQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEUiKSk7CisgICAgICAgIGdsR2V0U2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFID0KKyAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRTQU1QTEVS
UEFSQU1FVEVSSUlWUk9CVVNUQU5HTEU+KAorICAgICAgICAgICAgICAgIGVnbEdldFByb2NBZGRy
ZXNzKCJnbEdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSIpKTsKKyAgICAgICAgZ2xH
ZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFID0KKyAgICAgICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8UEZOR0xHRVRTQU1QTEVSUEFSQU1FVEVSSVVJVlJPQlVTVEFOR0xFPigKKyAgICAg
ICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJv
YnVzdEFOR0xFIikpOworICAgICAgICBnbEdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRRVUVSWU9CSkVDVElWUk9CVVNUQU5HTEU+KAorICAgICAg
ICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFIikp
OworICAgICAgICBnbEdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRf
Y2FzdDxQRk5HTEdFVFFVRVJZT0JKRUNUSTY0VlJPQlVTVEFOR0xFPigKKyAgICAgICAgICAgIGVn
bEdldFByb2NBZGRyZXNzKCJnbEdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFIikpOworICAg
ICAgICBnbEdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
UEZOR0xHRVRRVUVSWU9CSkVDVFVJNjRWUk9CVVNUQU5HTEU+KAorICAgICAgICAgICAgZWdsR2V0
UHJvY0FkZHJlc3MoImdsR2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFIikpOworICAgIH0K
KworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZSB7IEFOR0xFVGVzdDo6VGVhckRvd24oKTsg
fQorCisgICAgYm9vbCBleHRlbnNpb25zUHJlc2VudCgpIGNvbnN0CisgICAgeworICAgICAgICBp
ZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5IikpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2Ug
R0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkgaXMgbm90IGF2YWlsYWJsZS4iOworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgUEZOR0xHRVRCT09MRUFOVlJPQlVTVEFOR0xFIGdsR2V0Qm9vbGVhbnZSb2J1
c3RBTkdMRSAgICAgICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xHRVRCVUZGRVJQ
QVJBTUVURVJJVlJPQlVTVEFOR0xFIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSA9
IG51bGxwdHI7CisgICAgUEZOR0xHRVRGTE9BVFZST0JVU1RBTkdMRSBnbEdldEZsb2F0dlJvYnVz
dEFOR0xFICAgICAgICAgICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xHRVRGUkFN
RUJVRkZFUkFUVEFDSE1FTlRQQVJBTUVURVJJVlJPQlVTVEFOR0xFCisgICAgZ2xHZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xHRVRJTlRFR0VSVlJPQlVTVEFOR0xF
IGdsR2V0SW50ZWdlcnZSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IG51bGxwdHI7CisgICAgUEZOR0xHRVRQUk9HUkFNSVZST0JVU1RBTkdMRSBnbEdldFByb2dyYW1p
dlJvYnVzdEFOR0xFICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAg
UEZOR0xHRVRSRU5ERVJCVUZGRVJQQVJBTUVURVJJVlJPQlVTVEFOR0xFIGdsR2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSA9IG51bGxwdHI7CisgICAgUEZOR0xHRVRTSEFERVJJ
VlJPQlVTVEFOR0xFIGdsR2V0U2hhZGVyaXZSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xHRVRURVhQQVJBTUVURVJGVlJPQlVTVEFO
R0xFIGdsR2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAgICA9IG51
bGxwdHI7CisgICAgUEZOR0xHRVRURVhQQVJBTUVURVJJVlJPQlVTVEFOR0xFIGdsR2V0VGV4UGFy
YW1ldGVyaXZSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgUEZO
R0xHRVRVTklGT1JNRlZST0JVU1RBTkdMRSBnbEdldFVuaWZvcm1mdlJvYnVzdEFOR0xFICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xHRVRVTklGT1JNSVZS
T0JVU1RBTkdMRSBnbEdldFVuaWZvcm1pdlJvYnVzdEFOR0xFICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xHRVRWRVJURVhBVFRSSUJGVlJPQlVTVEFOR0xF
IGdsR2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAgICA9IG51bGxw
dHI7CisgICAgUEZOR0xHRVRWRVJURVhBVFRSSUJJVlJPQlVTVEFOR0xFIGdsR2V0VmVydGV4QXR0
cmliaXZSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xH
RVRWRVJURVhBVFRSSUJQT0lOVEVSVlJPQlVTVEFOR0xFIGdsR2V0VmVydGV4QXR0cmliUG9pbnRl
cnZSb2J1c3RBTkdMRSAgICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xSRUFEUElYRUxTUk9CVVNU
QU5HTEUgZ2xSZWFkUGl4ZWxzUm9idXN0QU5HTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xURVhJTUFHRTJEUk9CVVNUQU5HTEUgZ2xUZXhJbWFn
ZTJEUm9idXN0QU5HTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG51bGxwdHI7
CisgICAgUEZOR0xURVhQQVJBTUVURVJGVlJPQlVTVEFOR0xFIGdsVGV4UGFyYW1ldGVyZnZSb2J1
c3RBTkdMRSAgICAgICAgICAgICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xURVhQ
QVJBTUVURVJJVlJPQlVTVEFOR0xFIGdsVGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSAgICAgICAg
ICAgICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xURVhTVUJJTUFHRTJEUk9CVVNU
QU5HTEUgZ2xUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IG51bGxwdHI7CisgICAgUEZOR0xURVhJTUFHRTNEUk9CVVNUQU5HTEUgZ2xUZXhJbWFnZTNE
Um9idXN0QU5HTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG51bGxwdHI7Cisg
ICAgUEZOR0xURVhTVUJJTUFHRTNEUk9CVVNUQU5HTEUgZ2xUZXhTdWJJbWFnZTNEUm9idXN0QU5H
TEUgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xHRVRRVUVS
WUlWUk9CVVNUQU5HTEUgZ2xHZXRRdWVyeWl2Um9idXN0QU5HTEUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xHRVRRVUVSWU9CSkVDVFVJVlJPQlVT
VEFOR0xFIGdsR2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAgICA9
IG51bGxwdHI7CisgICAgUEZOR0xHRVRCVUZGRVJQT0lOVEVSVlJPQlVTVEFOR0xFIGdsR2V0QnVm
ZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAg
UEZOR0xHRVRJTlRFR0VSSV9WUk9CVVNUQU5HTEUgZ2xHZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgUEZOR0VUSU5URVJOQUxG
T1JNQVRJVlJPQlVTVEFOR0xFIGdsR2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFICAgICAg
ICAgICAgICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xHRVRWRVJURVhBVFRSSUJJSVZST0JVU1RB
TkdMRSBnbEdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFICAgICAgICAgICAgICAgICA9IG51
bGxwdHI7CisgICAgUEZOR0xHRVRWRVJURVhBVFRSSUJJVUlWUk9CVVNUQU5HTEUgZ2xHZXRWZXJ0
ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUgICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgUEZO
R0xHRVRVTklGT1JNVUlWUk9CVVNUQU5HTEUgZ2xHZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xHRVRBQ1RJVkVVTklG
T1JNQkxPQ0tJVlJPQlVTVEFOR0xFIGdsR2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdM
RSAgICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xHRVRJTlRFR0VSNjRWUk9CVVNUQU5HTEUgZ2xH
ZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG51bGxw
dHI7CisgICAgUEZOR0xHRVRJTlRFR0VSNjRJX1ZST0JVU1RBTkdMRSBnbEdldEludGVnZXI2NGlf
dlJvYnVzdEFOR0xFICAgICAgICAgICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xH
RVRCVUZGRVJQQVJBTUVURVJJNjRWUk9CVVNUQU5HTEUgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2
Um9idXN0QU5HTEUgICAgICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xTQU1QTEVSUEFSQU1FVEVS
SVZST0JVU1RBTkdMRSBnbFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFICAgICAgICAgICAg
ICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xTQU1QTEVSUEFSQU1FVEVSRlZST0JVU1RBTkdMRSBn
bFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFICAgICAgICAgICAgICAgICA9IG51bGxwdHI7
CisgICAgUEZOR0xHRVRTQU1QTEVSUEFSQU1FVEVSSVZST0JVU1RBTkdMRSBnbEdldFNhbXBsZXJQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFICAgICAgICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xHRVRT
QU1QTEVSUEFSQU1FVEVSRlZST0JVU1RBTkdMRSBnbEdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVz
dEFOR0xFICAgICAgICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xHRVRGUkFNRUJVRkZFUlBBUkFN
RVRFUklWUk9CVVNUQU5HTEUgZ2xHZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUg
ICA9IG51bGxwdHI7CisgICAgUEZOR0xHRVRQUk9HUkFNSU5URVJGQUNFSVZST0JVU1RBTkdMRSBn
bEdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFICAgICAgICAgICA9IG51bGxwdHI7Cisg
ICAgUEZOR0xHRVRCT09MRUFOSV9WUk9CVVNUQU5HTEUgZ2xHZXRCb29sZWFuaV92Um9idXN0QU5H
TEUgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xHRVRNVUxU
SVNBTVBMRUZWUk9CVVNUQU5HTEUgZ2xHZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUgICAgICAg
ICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xHRVRURVhMRVZFTFBBUkFNRVRFUklW
Uk9CVVNUQU5HTEUgZ2xHZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUgICAgICAgICA9
IG51bGxwdHI7CisgICAgUEZOR0xHRVRURVhMRVZFTFBBUkFNRVRFUkZWUk9CVVNUQU5HTEUgZ2xH
ZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUgICAgICAgICA9IG51bGxwdHI7CisgICAg
UEZOR0xHRVRQT0lOVEVSVlJPQlVTVEFOR0xFUk9CVVNUQU5HTEUgZ2xHZXRQb2ludGVydlJvYnVz
dEFOR0xFUm9idXN0QU5HTEUgICAgICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xSRUFETlBJWEVM
U1JPQlVTVEFOR0xFIGdsUmVhZG5QaXhlbHNSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xHRVROVU5JRk9STUZWUk9CVVNUQU5HTEUg
Z2xHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG51
bGxwdHI7CisgICAgUEZOR0xHRVROVU5JRk9STUlWUk9CVVNUQU5HTEUgZ2xHZXRuVW5pZm9ybWl2
Um9idXN0QU5HTEUgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgUEZO
R0xHRVROVU5JRk9STVVJVlJPQlVTVEFOR0xFIGdsR2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRSAg
ICAgICAgICAgICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xURVhQQVJBTUVURVJJ
SVZST0JVU1RBTkdMRSBnbFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFICAgICAgICAgICAgICAg
ICAgICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xURVhQQVJBTUVURVJJVUlWUk9CVVNUQU5HTEUg
Z2xUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUgICAgICAgICAgICAgICAgICAgICA9IG51bGxw
dHI7CisgICAgUEZOR0xHRVRURVhQQVJBTUVURVJJSVZST0JVU1RBTkdMRSBnbEdldFRleFBhcmFt
ZXRlcklpdlJvYnVzdEFOR0xFICAgICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xH
RVRURVhQQVJBTUVURVJJVUlWUk9CVVNUQU5HTEUgZ2xHZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0
QU5HTEUgICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xTQU1QTEVSUEFSQU1FVEVS
SUlWUk9CVVNUQU5HTEUgZ2xTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUgICAgICAgICAg
ICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xTQU1QTEVSUEFSQU1FVEVSSVVJVlJPQlVTVEFOR0xF
IGdsU2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSAgICAgICAgICAgICA9IG51bGxwdHI7
CisgICAgUEZOR0xHRVRTQU1QTEVSUEFSQU1FVEVSSUlWUk9CVVNUQU5HTEUgZ2xHZXRTYW1wbGVy
UGFyYW1ldGVySWl2Um9idXN0QU5HTEUgICAgICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xHRVRT
QU1QTEVSUEFSQU1FVEVSSVVJVlJPQlVTVEFOR0xFIGdsR2V0U2FtcGxlclBhcmFtZXRlckl1aXZS
b2J1c3RBTkdMRSAgICAgICA9IG51bGxwdHI7CisgICAgUEZOR0xHRVRRVUVSWU9CSkVDVElWUk9C
VVNUQU5HTEUgZ2xHZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUgICAgICAgICAgICAgICAgICAg
ICA9IG51bGxwdHI7CisgICAgUEZOR0xHRVRRVUVSWU9CSkVDVEk2NFZST0JVU1RBTkdMRSBnbEdl
dFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFICAgICAgICAgICAgICAgICA9IG51bGxwdHI7Cisg
ICAgUEZOR0xHRVRRVUVSWU9CSkVDVFVJNjRWUk9CVVNUQU5HTEUgZ2xHZXRRdWVyeU9iamVjdHVp
NjR2Um9idXN0QU5HTEUgICAgICAgICAgICAgICA9IG51bGxwdHI7Cit9OworCisvLyBUZXN0IGJh
c2ljIHVzYWdlIGFuZCB2YWxpZGF0aW9uIG9mIGdsR2V0SW50ZWdlcnZSb2J1c3RBTkdMRQorVEVT
VF9QKFJvYnVzdENsaWVudE1lbW9yeVRlc3QsIEdldEludGVnZXIpCit7CisgICAgaWYgKCFleHRl
bnNpb25zUHJlc2VudCgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8v
IFZlcmlmeSB0aGF0IHRoZSByb2J1c3QgYW5kIHJlZ3VsYXIgZW50cnkgcG9pbnRzIHJldHVybiB0
aGUgc2FtZSB2YWx1ZXMKKyAgICBHTGludCByZXN1bHRSb2J1c3Q7CisgICAgR0xzaXplaSBsZW5n
dGg7CisgICAgZ2xHZXRJbnRlZ2VydlJvYnVzdEFOR0xFKEdMX01BWF9WRVJURVhfQVRUUklCUywg
MSwgJmxlbmd0aCwgJnJlc3VsdFJvYnVzdCk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cisg
ICAgRVhQRUNUX0VRKDEsIGxlbmd0aCk7CisKKyAgICBHTGludCByZXN1bHRSZWd1bGFyOworICAg
IGdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZFUlRFWF9BVFRSSUJTLCAmcmVzdWx0UmVndWxhcik7Cisg
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgRVhQRUNUX0VRKHJlc3VsdFJlZ3VsYXIsIHJl
c3VsdFJvYnVzdCk7CisKKyAgICAvLyBRdWVyeSBhIGR5bmFtaWMgdmFsdWUKKyAgICBHTGludCBu
dW1Db21wcmVzc2VkRm9ybWF0czsKKyAgICBnbEdldEludGVnZXJ2Um9idXN0QU5HTEUoR0xfTlVN
X0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTLCAxLCAmbGVuZ3RoLCAmbnVtQ29tcHJlc3NlZEZv
cm1hdHMpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9FUSgxLCBsZW5n
dGgpOworCisgICAgaWYgKG51bUNvbXByZXNzZWRGb3JtYXRzID4gMCkKKyAgICB7CisgICAgICAg
IHN0ZDo6dmVjdG9yPEdMaW50PiByZXN1bHRCdWYobnVtQ29tcHJlc3NlZEZvcm1hdHMgKiAyLCAw
KTsKKworICAgICAgICAvLyBUZXN0IHdoZW4gdGhlIGJ1ZlNpemUgaXMgdG9vIGxvdworICAgICAg
ICBnbEdldEludGVnZXJ2Um9idXN0QU5HTEUoR0xfQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMs
IG51bUNvbXByZXNzZWRGb3JtYXRzIC0gMSwgJmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdEJ1Zi5kYXRhKCkpOworICAgICAgICBFWFBFQ1RfR0xfRVJST1Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICBFWFBFQ1RfVFJVRShzdGQ6OmFsbF9vZihy
ZXN1bHRCdWYuYmVnaW4oKSwgcmVzdWx0QnVmLmVuZCgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbXShHTGludCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gMDsgfSkpOworCisg
ICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgR0wgZG9lc24ndCB0b3VjaCB0aGUgZW5kIG9mIHRoZSBi
dWZmZXIKKyAgICAgICAgZ2xHZXRJbnRlZ2VydlJvYnVzdEFOR0xFKEdMX0NPTVBSRVNTRURfVEVY
VFVSRV9GT1JNQVRTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8R0xzaXplaT4ocmVzdWx0QnVmLnNpemUoKSksICZsZW5ndGgsIHJlc3VsdEJ1Zi5kYXRhKCkp
OworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICAgICAgRVhQRUNUX0VRKG51bUNv
bXByZXNzZWRGb3JtYXRzLCBsZW5ndGgpOworICAgICAgICBFWFBFQ1RfVFJVRShzdGQ6Om5vbmVf
b2YocmVzdWx0QnVmLmJlZ2luKCksIHJlc3VsdEJ1Zi5iZWdpbigpICsgbGVuZ3RoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgW10oR0xpbnQgdmFsdWUpIHsgcmV0dXJuIHZhbHVl
ID09IDA7IH0pKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3RkOjphbGxfb2YocmVzdWx0QnVmLmJl
Z2luKCkgKyBsZW5ndGgsIHJlc3VsdEJ1Zi5lbmQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW10oR0xpbnQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID09IDA7IH0pKTsKKyAgICB9
CisKKyAgICAvLyBUZXN0IHdpdGggbnVsbCBsZW5ndGgKKyAgICBnbEdldEludGVnZXJ2Um9idXN0
QU5HTEUoR0xfTUFYX1ZBUllJTkdfVkVDVE9SUywgMSwgbnVsbHB0ciwgJnJlc3VsdFJvYnVzdCk7
CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbEdldEludGVnZXJ2Um9idXN0QU5H
TEUoR0xfTUFYX1ZJRVdQT1JUX0RJTVMsIDEsIG51bGxwdHIsICZyZXN1bHRSb2J1c3QpOworICAg
IEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7CisKKyAgICBHTGludCBtYXhW
aWV3cG9ydERpbXNbMl07CisgICAgZ2xHZXRJbnRlZ2VydlJvYnVzdEFOR0xFKEdMX01BWF9WSUVX
UE9SVF9ESU1TLCAyLCBudWxscHRyLCBtYXhWaWV3cG9ydERpbXMpOworICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOworfQorCisvLyBUZXN0IGJhc2ljIHVzYWdlIGFuZCB2YWxpZGF0aW9uIG9mIGds
VGV4SW1hZ2UyRFJvYnVzdEFOR0xFCitURVNUX1AoUm9idXN0Q2xpZW50TWVtb3J5VGVzdCwgVGV4
SW1hZ2UyRCkKK3sKKyAgICBpZiAoIWV4dGVuc2lvbnNQcmVzZW50KCkpCisgICAgeworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIEdMVGV4dHVyZSB0ZXg7CisgICAgZ2xCaW5kVGV4dHVyZShH
TF9URVhUVVJFXzJELCB0ZXguZ2V0KCkpOworCisgICAgR0xzaXplaSBkYXRhRGltZW5zaW9uID0g
MTAyNDsKKyAgICBzdGQ6OnZlY3RvcjxHTHVieXRlPiByZ2JhRGF0YShkYXRhRGltZW5zaW9uICog
ZGF0YURpbWVuc2lvbiAqIDQpOworCisgICAgLy8gVGVzdCB0aGUgcmVndWxhciBjYXNlCisgICAg
Z2xUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgZGF0YURp
bWVuc2lvbiwgZGF0YURpbWVuc2lvbiwgMCwgR0xfUkdCQSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBzdGF0aWNfY2FzdDxHTHNpemVpPihyZ2JhRGF0YS5z
aXplKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJnYmFEYXRhLmRhdGEoKSk7Cisg
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBUZXN0IHdpdGggYSBkYXRhIHNpemUg
dGhhdCBpcyB0b28gc21hbGwKKyAgICBnbFRleEltYWdlMkRSb2J1c3RBTkdMRShHTF9URVhUVVJF
XzJELCAwLCBHTF9SR0JBLCBkYXRhRGltZW5zaW9uLCBkYXRhRGltZW5zaW9uLCAwLCBHTF9SR0JB
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIHN0YXRpY19j
YXN0PEdMc2l6ZWk+KHJnYmFEYXRhLnNpemUoKSkgLyAyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJnYmFEYXRhLmRhdGEoKSk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKKworICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA+PSAzKQorICAg
IHsKKyAgICAgICAgLy8gU2V0IGFuIHVucGFjayBwYXJhbWV0ZXIgdGhhdCB3b3VsZCBjYXVzZSB0
aGUgZHJpdmVyIHRvIHJlYWQgcGFzdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIKKyAgICAgICAgZ2xQ
aXhlbFN0b3JlaShHTF9VTlBBQ0tfUk9XX0xFTkdUSCwgZGF0YURpbWVuc2lvbiArIDEpOworICAg
ICAgICBnbFRleEltYWdlMkRSb2J1c3RBTkdMRShHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCBk
YXRhRGltZW5zaW9uLCBkYXRhRGltZW5zaW9uLCAwLCBHTF9SR0JBLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBzdGF0aWNfY2FzdDxHTHNpemVpPihy
Z2JhRGF0YS5zaXplKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZ2JhRGF0
YS5kYXRhKCkpOworICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OworICAgIH0KK30KKworLy8gVGVzdCBiYXNpYyB1c2FnZSBhbmQgdmFsaWRhdGlvbiBvZiBnbFJl
YWRQaXhlbHNSb2J1c3RBTkdMRQorVEVTVF9QKFJvYnVzdENsaWVudE1lbW9yeVRlc3QsIFJlYWRQ
aXhlbHMpCit7CisgICAgaWYgKCFleHRlbnNpb25zUHJlc2VudCgpKQorICAgIHsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIEdMc2l6ZWkgZGF0YURpbWVuc2lvbiA9IDE2OworICAgIHN0
ZDo6dmVjdG9yPEdMdWJ5dGU+IHJnYmFEYXRhKGRhdGFEaW1lbnNpb24gKiBkYXRhRGltZW5zaW9u
ICogNCk7CisKKyAgICAvLyBUZXN0IHRoZSByZWd1bGFyIGNhc2UKKyAgICBHTHNpemVpIGxlbmd0
aCA9IDA7CisgICAgZ2xSZWFkUGl4ZWxzUm9idXN0QU5HTEUoMCwgMCwgZGF0YURpbWVuc2lvbiwg
ZGF0YURpbWVuc2lvbiwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHNpemVpPihyZ2JhRGF0YS5zaXplKCkpLCAmbGVu
Z3RoLCByZ2JhRGF0YS5kYXRhKCkpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgIEVY
UEVDVF9FUShzdGF0aWNfY2FzdDxHTHNpemVpPihyZ2JhRGF0YS5zaXplKCkpLCBsZW5ndGgpOwor
CisgICAgLy8gVGVzdCB3aXRoIGEgZGF0YSBzaXplIHRoYXQgaXMgdG9vIHNtYWxsCisgICAgZ2xS
ZWFkUGl4ZWxzUm9idXN0QU5HTEUoMCwgMCwgZGF0YURpbWVuc2lvbiwgZGF0YURpbWVuc2lvbiwg
R0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxHTHNpemVpPihyZ2JhRGF0YS5zaXplKCkpIC0gMSwgJmxlbmd0aCwgcmdiYURh
dGEuZGF0YSgpKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwor
CisgICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpID49IDMpCisgICAgeworICAgICAgICAv
LyBTZXQgYSBwYWNrIHBhcmFtZXRlciB0aGF0IHdvdWxkIGNhdXNlIHRoZSBkcml2ZXIgdG8gd3Jp
dGUgcGFzdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIKKyAgICAgICAgZ2xQaXhlbFN0b3JlaShHTF9Q
QUNLX1JPV19MRU5HVEgsIGRhdGFEaW1lbnNpb24gKyAxKTsKKyAgICAgICAgZ2xSZWFkUGl4ZWxz
Um9idXN0QU5HTEUoMCwgMCwgZGF0YURpbWVuc2lvbiwgZGF0YURpbWVuc2lvbiwgR0xfUkdCQSwg
R0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8R0xzaXplaT4ocmdiYURhdGEuc2l6ZSgpKSwgJmxlbmd0aCwgcmdiYURhdGEuZGF0YSgp
KTsKKyAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICB9
Cit9CisKKy8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3
aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZQorLy8gdGVzdHMg
c2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgorQU5HTEVfSU5TVEFOVElBVEVfVEVTVChSb2J1c3RDbGll
bnRNZW1vcnlUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAorICAgICAg
ICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMz
X0QzRDExKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDlfMygpLAorICAg
ICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAg
IEVTM19PUEVOR0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCksCisg
ICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygpKTsKKworfSAgLy8gbmFtZXNwYWNl
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvU1JHQlRl
eHR1cmVUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZ2xfdGVzdHMvU1JHQlRleHR1cmVUZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvU1JHQlRleHR1cmVUZXN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1NCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUg
InRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKworbmFt
ZXNwYWNlCit7CisKK2NsYXNzIFNSR0JUZXh0dXJlVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sK
KyAgcHJvdGVjdGVkOgorICAgIFNSR0JUZXh0dXJlVGVzdCgpCisgICAgeworICAgICAgICBzZXRX
aW5kb3dXaWR0aCgxMjgpOworICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKKyAgICAgICAg
c2V0Q29uZmlnUmVkQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAg
ICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgp
OworICAgIH0KKworICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQU5H
TEVUZXN0OjpTZXRVcCgpOworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOworICAgIH0KK307CisKK1RFU1Rf
UChTUkdCVGV4dHVyZVRlc3QsIFNSR0JWYWxpZGF0aW9uKQoreworICAgIGJvb2wgc3VwcG9ydGVk
ID0gZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3NSR0IiKSB8fCBnZXRDbGllbnRNYWpvclZlcnNp
b24oKSA9PSAzOworCisgICAgR0x1aW50IHRleCA9IDA7CisgICAgZ2xHZW5UZXh0dXJlcygxLCAm
dGV4KTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleCk7CisKKyAgICBHTHVi
eXRlIHBpeGVsWzNdID0geyAwIH07CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAs
IEdMX1NSR0IsIDEsIDEsIDAsIEdMX1NSR0IsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVsKTsKKyAg
ICBpZiAoc3VwcG9ydGVkKQorICAgIHsKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisK
KyAgICAgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDAsIDAsIEdM
X1NSR0IsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVsKTsKKyAgICAgICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7CisKKyAgICAgICAgZ2xHZW5lcmF0ZU1pcG1hcChHTF9URVhUVVJFXzJEKTsKKyAgICAg
ICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICB9CisgICAgZWxz
ZQorICAgIHsKKyAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7CisgICAg
fQorCisgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGV4KTsKK30KKworVEVTVF9QKFNSR0JUZXh0
dXJlVGVzdCwgU1JHQkFWYWxpZGF0aW9uKQoreworICAgIGJvb2wgc3VwcG9ydGVkID0gZXh0ZW5z
aW9uRW5hYmxlZCgiR0xfRVhUX3NSR0IiKSB8fCBnZXRDbGllbnRNYWpvclZlcnNpb24oKSA9PSAz
OworCisgICAgR0x1aW50IHRleCA9IDA7CisgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4KTsKKyAg
ICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleCk7CisKKyAgICBHTHVieXRlIHBpeGVs
WzRdID0geyAwIH07CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1NSR0Jf
QUxQSEFfRVhULCAxLCAxLCAwLCBHTF9TUkdCX0FMUEhBX0VYVCwgR0xfVU5TSUdORURfQllURSwg
cGl4ZWwpOworICAgIGlmIChzdXBwb3J0ZWQpCisgICAgeworICAgICAgICBFWFBFQ1RfR0xfTk9f
RVJST1IoKTsKKworICAgICAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwg
MCwgMCwgMCwgR0xfU1JHQl9BTFBIQV9FWFQsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVsKTsKKyAg
ICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgZ2xHZW5lcmF0ZU1pcG1hcChH
TF9URVhUVVJFXzJEKTsKKyAgICAgICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpID09IDIp
CisgICAgICAgIHsKKyAgICAgICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJB
VElPTik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgewor
ICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICB9CisKKyAgICBn
bERlbGV0ZVRleHR1cmVzKDEsICZ0ZXgpOworfQorCitURVNUX1AoU1JHQlRleHR1cmVUZXN0LCBT
UkdCQVJlbmRlcmJ1ZmZlcikKK3sKKyAgICBib29sIHN1cHBvcnRlZCA9IGV4dGVuc2lvbkVuYWJs
ZWQoIkdMX0VYVF9zUkdCIikgfHwgZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPT0gMzsKKworICAg
IEdMdWludCByYm8gPSAwOworICAgIGdsR2VuUmVuZGVyYnVmZmVycygxLCAmcmJvKTsKKyAgICBn
bEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCByYm8pOworCisgICAgZ2xSZW5kZXJi
dWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgR0xfU1JHQjhfQUxQSEE4X0VYVCwgMSwgMSk7
CisgICAgaWYgKHN1cHBvcnRlZCkKKyAgICB7CisgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5W
QUxJRF9FTlVNKTsKKworICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIHJibyBoYXMgYSBzaXplIGZv
ciBmdXR1cmUgdGVzdHMKKyAgICAgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJV
RkZFUiwgR0xfUkdCQThfT0VTLCAxLCAxKTsKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
CisgICAgfQorCisgICAgR0x1aW50IGZibyA9IDA7CisgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwg
JmZibyk7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIGZibyk7CisgICAg
Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNI
TUVOVDAsIEdMX1JFTkRFUkJVRkZFUiwgcmJvKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
KworICAgIEdMaW50IGNvbG9yRW5jb2RpbmcgPSAwOworICAgIGdsR2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaXYoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfRlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19FWFQsICZjb2xvckVuY29kaW5nKTsKKyAgICBpZiAo
c3VwcG9ydGVkKQorICAgIHsKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgICAg
IEVYUEVDVF9FUShHTF9TUkdCX0VYVCwgY29sb3JFbmNvZGluZyk7CisgICAgfQorICAgIGVsc2UK
KyAgICB7CisgICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOworICAgIH0K
KworICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZmYm8pOworICAgIGdsRGVsZXRlUmVuZGVy
YnVmZmVycygxLCAmcmJvKTsKK30KKworLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZp
Z3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24p
IHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KK0FOR0xFX0lOU1RBTlRJQVRFX1RF
U1QoU1JHQlRleHR1cmVUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAor
ICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgRVMzX0QzRDExKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCkpOworCit9IC8vIG5hbWVzcGFjZQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1NpbXBsZU9w
ZXJhdGlvblRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9nbF90ZXN0cy9TaW1wbGVPcGVyYXRpb25UZXN0LmNwcAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvU2ltcGxlT3BlcmF0
aW9uVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMTIgQEAKKy8vCisvLyBDb3B5
cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisv
LyBTaW1wbGVPcGVyYXRpb25UZXN0OgorLy8gICBCYXNpYyBHTCBjb21tYW5kcyBzdWNoIGFzIGxp
bmtpbmcgYSBwcm9ncmFtLCBpbml0aWFsaXppbmcgYSBidWZmZXIsIGV0Yy4KKworI2luY2x1ZGUg
InRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKKyNpbmNsdWRlIDx2ZWN0b3I+CisKK3VzaW5nIG5h
bWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNlCit7CisKK2NsYXNzIFNpbXBsZU9wZXJhdGlvblRl
c3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBTaW1wbGVPcGVyYXRp
b25UZXN0KCkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7CisgICAgICAgIHNl
dFdpbmRvd0hlaWdodCgxMjgpOworICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOworICAgICAg
ICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwor
ICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgfQorfTsKKworVEVTVF9QKFNpbXBs
ZU9wZXJhdGlvblRlc3QsIENvbXBpbGVWZXJ0ZXhTaGFkZXIpCit7CisgICAgY29uc3Qgc3RkOjpz
dHJpbmcgc291cmNlID0gU0hBREVSX1NPVVJDRQorICAgICgKKyAgICAgICAgYXR0cmlidXRlIHZl
YzQgYV9pbnB1dDsKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAg
Z2xfUG9zaXRpb24gPSBhX2lucHV0OworICAgICAgICB9CisgICAgKTsKKworICAgIEdMdWludCBz
aGFkZXIgPSBDb21waWxlU2hhZGVyKEdMX1ZFUlRFWF9TSEFERVIsIHNvdXJjZSk7CisgICAgRVhQ
RUNUX05FKHNoYWRlciwgMHUpOworICAgIGdsRGVsZXRlU2hhZGVyKHNoYWRlcik7CisKKyAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKK30KKworVEVTVF9QKFNpbXBsZU9wZXJhdGlvblRlc3QsIENv
bXBpbGVGcmFnbWVudFNoYWRlcikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBzb3VyY2UgPSBT
SEFERVJfU09VUkNFCisgICAgKAorICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAg
ICAgICAgdmFyeWluZyB2ZWM0IHZfaW5wdXQ7CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZfaW5wdXQ7CisgICAgICAgIH0KKyAgICAp
OworCisgICAgR0x1aW50IHNoYWRlciA9IENvbXBpbGVTaGFkZXIoR0xfRlJBR01FTlRfU0hBREVS
LCBzb3VyY2UpOworICAgIEVYUEVDVF9ORShzaGFkZXIsIDB1KTsKKyAgICBnbERlbGV0ZVNoYWRl
cihzaGFkZXIpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9CisKK1RFU1RfUChTaW1w
bGVPcGVyYXRpb25UZXN0LCBMaW5rUHJvZ3JhbSkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyB2
c1NvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAoCisgICAgICAgIHZvaWQgbWFpbigpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjAp
OworICAgICAgICB9CisgICAgKTsKKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZzU291cmNlID0g
U0hBREVSX1NPVVJDRQorICAgICgKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjApOworICAgICAg
ICB9CisgICAgKTsKKworICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odnNTb3Vy
Y2UsIGZzU291cmNlKTsKKyAgICBFWFBFQ1RfTkUocHJvZ3JhbSwgMHUpOworICAgIGdsRGVsZXRl
UHJvZ3JhbShwcm9ncmFtKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworfQorCitURVNU
X1AoU2ltcGxlT3BlcmF0aW9uVGVzdCwgTGlua1Byb2dyYW1XaXRoVW5pZm9ybXMpCit7CisgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgdnNTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgKAorICAgICAg
ICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHZlYzQo
MS4wLCAxLjAsIDEuMCwgMS4wKTsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyBmc1NvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAoCisgICAgICAgIHByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworICAgICAgICB1bmlmb3JtIHZlYzQgdV9pbnB1dDsKKyAgICAgICAg
dm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdV9pbnB1
dDsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9n
cmFtKHZzU291cmNlLCBmc1NvdXJjZSk7CisgICAgRVhQRUNUX05FKHByb2dyYW0sIDB1KTsKKwor
ICAgIEdMaW50IHVuaWZvcm1Mb2MgPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidV9p
bnB1dCIpOworICAgIEVYUEVDVF9ORSgtMSwgdW5pZm9ybUxvYyk7CisKKyAgICBnbERlbGV0ZVBy
b2dyYW0ocHJvZ3JhbSk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKK30KKworVEVTVF9Q
KFNpbXBsZU9wZXJhdGlvblRlc3QsIExpbmtQcm9ncmFtV2l0aEF0dHJpYnV0ZXMpCit7CisgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgdnNTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgKAorICAgICAg
ICBhdHRyaWJ1dGUgdmVjNCBhX2lucHV0OworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7
CisgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IGFfaW5wdXQ7CisgICAgICAgIH0KKyAgICApOwor
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnNTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgKAor
ICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICBnbF9GcmFnQ29sb3Ig
PSB2ZWM0KDEuMCwgMS4wLCAxLjAsIDEuMCk7CisgICAgICAgIH0KKyAgICApOworCisgICAgR0x1
aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2c1NvdXJjZSwgZnNTb3VyY2UpOworICAgIEVY
UEVDVF9ORShwcm9ncmFtLCAwdSk7CisKKyAgICBHTGludCBhdHRyaWJMb2MgPSBnbEdldEF0dHJp
YkxvY2F0aW9uKHByb2dyYW0sICJhX2lucHV0Iik7CisgICAgRVhQRUNUX05FKC0xLCBhdHRyaWJM
b2MpOworCisgICAgZ2xEZWxldGVQcm9ncmFtKHByb2dyYW0pOworCisgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7Cit9CisKK1RFU1RfUChTaW1wbGVPcGVyYXRpb25UZXN0LCBCdWZmZXJEYXRhV2l0
aERhdGEpCit7CisgICAgR0x1aW50IGJ1ZmZlcjsKKyAgICBnbEdlbkJ1ZmZlcnMoMSwgJmJ1ZmZl
cik7CisgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgYnVmZmVyKTsKKworICAgIHN0
ZDo6dmVjdG9yPHVpbnQ4X3Q+IGRhdGEoMTAyNCk7CisgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZ
X0JVRkZFUiwgZGF0YS5zaXplKCksICZkYXRhWzBdLCBHTF9TVEFUSUNfRFJBVyk7CisKKyAgICBn
bERlbGV0ZUJ1ZmZlcnMoMSwgJmJ1ZmZlcik7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
K30KKworVEVTVF9QKFNpbXBsZU9wZXJhdGlvblRlc3QsIEJ1ZmZlckRhdGFXaXRoTm9EYXRhKQor
eworICAgIEdMdWludCBidWZmZXI7CisgICAgZ2xHZW5CdWZmZXJzKDEsICZidWZmZXIpOworICAg
IGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIGJ1ZmZlcik7CisgICAgZ2xCdWZmZXJEYXRh
KEdMX0FSUkFZX0JVRkZFUiwgMTAyNCwgbnVsbHB0ciwgR0xfU1RBVElDX0RSQVcpOworICAgIGds
RGVsZXRlQnVmZmVycygxLCAmYnVmZmVyKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwor
fQorCitURVNUX1AoU2ltcGxlT3BlcmF0aW9uVGVzdCwgQnVmZmVyU3ViRGF0YSkKK3sKKyAgICBH
THVpbnQgYnVmZmVyOworICAgIGdsR2VuQnVmZmVycygxLCAmYnVmZmVyKTsKKyAgICBnbEJpbmRC
dWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBidWZmZXIpOworCisgICAgY29uc3Qgc2l6ZV90IGJ1ZmZl
clNpemUgPSAxMDI0OworICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIGJ1ZmZlclNp
emUsIG51bGxwdHIsIEdMX1NUQVRJQ19EUkFXKTsKKworICAgIGNvbnN0IHNpemVfdCBzdWJEYXRh
Q291bnQgPSAxNjsKKyAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBkYXRhKGJ1ZmZlclNpemUgLyBz
dWJEYXRhQ291bnQpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3ViRGF0YUNvdW50OyBp
KyspCisgICAgeworICAgICAgICBnbEJ1ZmZlclN1YkRhdGEoR0xfQVJSQVlfQlVGRkVSLCBkYXRh
LnNpemUoKSAqIGksIGRhdGEuc2l6ZSgpLCAmZGF0YVswXSk7CisgICAgfQorCisgICAgZ2xEZWxl
dGVCdWZmZXJzKDEsICZidWZmZXIpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9CisK
Ky8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCBy
ZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUg
cnVuIGFnYWluc3QuCitBTkdMRV9JTlNUQU5USUFURV9URVNUKFNpbXBsZU9wZXJhdGlvblRlc3Qs
CisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCisgICAgICAgICAgICAgICAgICAg
ICAgIEVTMl9EM0QxMShFR0xfRVhQRVJJTUVOVEFMX1BSRVNFTlRfUEFUSF9DT1BZX0FOR0xFKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKEVHTF9FWFBFUklNRU5UQUxfUFJFU0VO
VF9QQVRIX0ZBU1RfQU5HTEUpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfRDNEMTEoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAg
ICAgICBFUzNfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygp
LAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMRVMoKSk7CisKK30gLy8gbmFtZXNw
YWNlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvU2l4
dGVlbkJwcFRleHR1cmVUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvU2l4dGVlbkJwcFRleHR1cmVUZXN0LmNwcAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvU2l4
dGVlbkJwcFRleHR1cmVUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1MSBAQAor
Ly8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgorLy8KKy8vIFNpeHRlZW5CcHBUZXh0dXJlVGVzdDoKKy8vICAgQmFzaWMgdGVzdHMgdXNp
bmcgMTZicHAgdGV4dHVyZSBmb3JtYXRzIChlLmcuIEdMX1JHQjU2NSkuCisKKyNpbmNsdWRlICJ0
ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorI2luY2x1ZGUgInRlc3RfdXRpbHMvZ2xfcmFpaS5oIgor
CisjaW5jbHVkZSAiaW1hZ2VfdXRpbC9pbWFnZWZvcm1hdHMuaCIKKwordXNpbmcgbmFtZXNwYWNl
IGFuZ2xlOworCituYW1lc3BhY2UKK3sKKworR0xDb2xvciBDb252ZXJ0NTY1KGNvbnN0IFI1RzZC
NSAmcmdiNTY1KQoreworICAgIGdsOjpDb2xvckYgY29sb3JmOworICAgIFI1RzZCNTo6cmVhZENv
bG9yKCZjb2xvcmYsICZyZ2I1NjUpOworICAgIFZlY3RvcjQgdmVjQ29sb3IoY29sb3JmLnJlZCwg
Y29sb3JmLmdyZWVuLCBjb2xvcmYuYmx1ZSwgY29sb3JmLmFscGhhKTsKKyAgICByZXR1cm4gR0xD
b2xvcih2ZWNDb2xvcik7Cit9CisKK1I1RzZCNSBDb252ZXJ0NTY1KGNvbnN0IEdMQ29sb3IgJmds
Q29sb3IpCit7CisgICAgY29uc3QgVmVjdG9yNCAmdmVjQ29sb3IgPSBnbENvbG9yLnRvTm9ybWFs
aXplZFZlY3RvcigpOworICAgIGdsOjpDb2xvckYgY29sb3JmKHZlY0NvbG9yLngsIHZlY0NvbG9y
LnksIHZlY0NvbG9yLnosIHZlY0NvbG9yLncpOworICAgIFI1RzZCNSByZ2I1NjU7CisgICAgUjVH
NkI1Ojp3cml0ZUNvbG9yKCZyZ2I1NjUsICZjb2xvcmYpOworICAgIHJldHVybiByZ2I1NjU7Cit9
CisKK2NsYXNzIFNpeHRlZW5CcHBUZXh0dXJlVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAg
cHJvdGVjdGVkOgorICAgIFNpeHRlZW5CcHBUZXh0dXJlVGVzdCgpCisgICAgeworICAgICAgICBz
ZXRXaW5kb3dXaWR0aCgxMjgpOworICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKKyAgICAg
ICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOwor
ICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRz
KDgpOworICAgIH0KKworICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAg
QU5HTEVUZXN0OjpTZXRVcCgpOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNo
YWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAgcHJlY2lz
aW9uIGhpZ2hwIGZsb2F0OworICAgICAgICAgICAgYXR0cmlidXRlIHZlYzQgcG9zaXRpb247Cisg
ICAgICAgICAgICB2YXJ5aW5nIHZlYzIgdGV4Y29vcmQ7CisKKyAgICAgICAgICAgIHZvaWQgbWFp
bigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBv
c2l0aW9uLnh5LCAwLjAsIDEuMCk7CisgICAgICAgICAgICAgICAgdGV4Y29vcmQgPSAocG9zaXRp
b24ueHkgKiAwLjUpICsgMC41OworICAgICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlMkQgPSBTSEFERVJfU09VUkNF
CisgICAgICAgICgKKyAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKKyAgICAgICAg
ICAgIHVuaWZvcm0gc2FtcGxlcjJEIHRleDsKKyAgICAgICAgICAgIHZhcnlpbmcgdmVjMiB0ZXhj
b29yZDsKKworICAgICAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQodGV4LCB0ZXhjb29yZCk7CisgICAgICAg
ICAgICB9CisgICAgICAgICk7CisKKyAgICAgICAgbTJEUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFt
KHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UyRCk7CisgICAgICAgIG1U
ZXh0dXJlMkRVbmlmb3JtTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtMkRQcm9ncmFt
LCAidGV4Iik7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAgewor
ICAgICAgICBnbERlbGV0ZVByb2dyYW0obTJEUHJvZ3JhbSk7CisKKyAgICAgICAgQU5HTEVUZXN0
OjpUZWFyRG93bigpOworICAgIH0KKworICAgIHZvaWQgc2ltcGxlVmFsaWRhdGlvbkJhc2UoR0x1
aW50IHRleCkKKyAgICB7CisgICAgICAgIC8vIERyYXcgYSBxdWFkIHVzaW5nIHRoZSB0ZXh0dXJl
CisgICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgICAgIGdsVXNlUHJv
Z3JhbShtMkRQcm9ncmFtKTsKKyAgICAgICAgZ2xVbmlmb3JtMWkobVRleHR1cmUyRFVuaWZvcm1M
b2NhdGlvbiwgMCk7CisgICAgICAgIGRyYXdRdWFkKG0yRFByb2dyYW0sICJwb3NpdGlvbiIsIDAu
NWYpOworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgICAgICBpbnQgdyA9IGdl
dFdpbmRvd1dpZHRoKCkgLSAxOworICAgICAgICBpbnQgaCA9IGdldFdpbmRvd0hlaWdodCgpIC0g
MTsKKworICAgICAgICAvLyBDaGVjayB0aGF0IGl0IGRyZXcgYXMgZXhwZWN0ZWQKKyAgICAgICAg
RVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OnJlZCk7CisgICAgICAgIEVYUEVD
VF9QSVhFTF9DT0xPUl9FUSh3LCAwLCBHTENvbG9yOjpncmVlbik7CisgICAgICAgIEVYUEVDVF9Q
SVhFTF9DT0xPUl9FUSgwLCBoLCBHTENvbG9yOjpibHVlKTsKKyAgICAgICAgRVhQRUNUX1BJWEVM
X0NPTE9SX0VRKHcsIGgsIEdMQ29sb3I6OnllbGxvdyk7CisKKyAgICAgICAgLy8gR2VuZXJhdGUg
bWlwbWFwcworICAgICAgICBnbEdlbmVyYXRlTWlwbWFwKEdMX1RFWFRVUkVfMkQpOworCisgICAg
ICAgIC8vIERyYXcgYSBxdWFkIHVzaW5nIHRoZSB0ZXh0dXJlCisgICAgICAgIGdsQ2xlYXIoR0xf
Q09MT1JfQlVGRkVSX0JJVCk7CisgICAgICAgIGdsVXNlUHJvZ3JhbShtMkRQcm9ncmFtKTsKKyAg
ICAgICAgZ2xVbmlmb3JtMWkobVRleHR1cmUyRFVuaWZvcm1Mb2NhdGlvbiwgMCk7CisgICAgICAg
IGRyYXdRdWFkKG0yRFByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworICAgICAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKKworICAgICAgICAvLyBDaGVjayB0aGF0IGl0IGRyZXcgYXMgZXhwZWN0
ZWQKKyAgICAgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OnJlZCk7Cisg
ICAgICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSh3LCAwLCBHTENvbG9yOjpncmVlbik7CisgICAg
ICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCBoLCBHTENvbG9yOjpibHVlKTsKKyAgICAgICAg
RVhQRUNUX1BJWEVMX0NPTE9SX0VRKHcsIGgsIEdMQ29sb3I6OnllbGxvdyk7CisKKyAgICAgICAg
Ly8gQmluZCB0aGUgdGV4dHVyZSBhcyBhIGZyYW1lYnVmZmVyLCByZW5kZXIgdG8gaXQsIHRoZW4g
Y2hlY2sgdGhlIHJlc3VsdHMKKyAgICAgICAgR0xGcmFtZWJ1ZmZlciBmYm87CisgICAgICAgIGds
QmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBmYm8uZ2V0KCkpOworICAgICAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIDApOworICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVy
ZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwg
dGV4LCAwKTsKKworICAgICAgICBpZiAoZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1F
QlVGRkVSKSAhPSBHTF9GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZ2xDbGVhckNvbG9yKDEuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOworICAgICAgICAgICAg
Z2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICAgICAgICAgIEVYUEVDVF9QSVhFTF9F
USgwLCAwLCAyNTUsIDAsIDAsIDI1NSk7CisgICAgICAgICAgICBFWFBFQ1RfUElYRUxfRVEoMSwg
MCwgMjU1LCAwLCAwLCAyNTUpOworICAgICAgICAgICAgRVhQRUNUX1BJWEVMX0VRKDEsIDEsIDI1
NSwgMCwgMCwgMjU1KTsKKyAgICAgICAgICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAxLCAyNTUsIDAs
IDAsIDI1NSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAg
ICBzdGQ6OmNvdXQgPDwgIlNraXBwaW5nIHJlbmRlcmluZyB0byBhbiB1bnN1cHBvcnRlZCBmcmFt
ZWJ1ZmZlciBmb3JtYXQiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgfQorICAgIH0KKworICAgIEdM
dWludCBtMkRQcm9ncmFtOworICAgIEdMaW50IG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRpb247Cit9
OworCitjbGFzcyBTaXh0ZWVuQnBwVGV4dHVyZVRlc3RFUzMgOiBwdWJsaWMgU2l4dGVlbkJwcFRl
eHR1cmVUZXN0Cit7Cit9OworCisvLyBTaW1wbGUgdmFsaWRhdGlvbiB0ZXN0IGZvciBHTF9SR0I1
NjUgdGV4dHVyZXMuCisvLyBTYW1wbGVzIGZyb20gdGhlIHRleHR1cmUsIHJlbmRlcnMgdG8gaXQs
IGdlbmVyYXRlcyBtaXBtYXBzIGV0Yy4KK1RFU1RfUChTaXh0ZWVuQnBwVGV4dHVyZVRlc3QsIFJH
QjU2NVZhbGlkYXRpb24pCit7CisgICAgLy8gVGhlc2UgdGVzdHMgZmFpbCBvbiBjZXJ0YWluIElu
dGVsIG1hY2hpbmVzIHJ1bm5pbmcgYW4gdW4tdXBkYXRlZCB2ZXJzaW9uIG9mIFdpbjcKKyAgICAv
LyBUaGUgdGVzdHMgcGFzcyBhZnRlciBpbnN0YWxsaW5nIHRoZSBsYXRlc3QgdXBkYXRlcyBmcm9t
IFdpbmRvd3MgVXBkYXRlLgorICAgIC8vIFRPRE86IHJlZW5hYmxlIHRoZXNlIHRlc3RzIG9uY2Ug
dGhlIGJvdHMgaGF2ZSBiZWVuIHVwZGF0ZWQKKyAgICBpZiAoSXNJbnRlbCgpICYmIGdldFBsYXRm
b3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSkKKyAg
ICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIEQzRDExLiIg
PDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR0x1aW50IHRlc3Q7
CisgICAgbWVtY3B5KCZ0ZXN0LCAmR0xDb2xvcjo6YmxhY2ssIDQpOworCisgICAgUjVHNkI1IHBp
eGVsc1s0XSA9IHtDb252ZXJ0NTY1KEdMQ29sb3I6OnJlZCksIENvbnZlcnQ1NjUoR0xDb2xvcjo6
Z3JlZW4pLAorICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVydDU2NShHTENvbG9yOjpibHVl
KSwgQ29udmVydDU2NShHTENvbG9yOjp5ZWxsb3cpfTsKKworICAgIGdsQ2xlYXJDb2xvcigwLCAw
LCAwLCAwKTsKKworICAgIC8vIENyZWF0ZSBhIHNpbXBsZSBSR0I1NjUgdGV4dHVyZQorICAgIEdM
VGV4dHVyZSB0ZXg7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXguZ2V0KCkp
OworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0IsIDIsIDIsIDAsIEdM
X1JHQiwgR0xfVU5TSUdORURfU0hPUlRfNV82XzUsIG51bGxwdHIpOworICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwor
ICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIs
IEdMX05FQVJFU1QpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gU3VwcGx5
IHRoZSBkYXRhIHRvIGl0CisgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAs
IDAsIDIsIDIsIEdMX1JHQiwgR0xfVU5TSUdORURfU0hPUlRfNV82XzUsIHBpeGVscyk7CisgICAg
RVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBzaW1wbGVWYWxpZGF0aW9uQmFzZSh0ZXguZ2V0
KCkpOworfQorCisvLyBTaW1wbGUgdmFsaWRhdGlvbiB0ZXN0IGZvciBHTF9SR0JBNTU1MSB0ZXh0
dXJlcy4KKy8vIFNhbXBsZXMgZnJvbSB0aGUgdGV4dHVyZSwgcmVuZGVycyB0byBpdCwgZ2VuZXJh
dGVzIG1pcG1hcHMgZXRjLgorVEVTVF9QKFNpeHRlZW5CcHBUZXh0dXJlVGVzdCwgUkdCQTU1NTFW
YWxpZGF0aW9uKQoreworICAgIC8vIFRoZXNlIHRlc3RzIGZhaWwgb24gY2VydGFpbiBJbnRlbCBt
YWNoaW5lcyBydW5uaW5nIGFuIHVuLXVwZGF0ZWQgdmVyc2lvbiBvZiBXaW43CisgICAgLy8gVGhl
IHRlc3RzIHBhc3MgYWZ0ZXIgaW5zdGFsbGluZyB0aGUgbGF0ZXN0IHVwZGF0ZXMgZnJvbSBXaW5k
b3dzIFVwZGF0ZS4KKyAgICAvLyBUT0RPOiByZWVuYWJsZSB0aGVzZSB0ZXN0cyBvbmNlIHRoZSBi
b3RzIGhhdmUgYmVlbiB1cGRhdGVkCisgICAgaWYgKElzSW50ZWwoKSAmJiBnZXRQbGF0Zm9ybVJl
bmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUpCisgICAgewor
ICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBEM0QxMS4iIDw8IHN0
ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdMdXNob3J0IHBpeGVsc1s0
XSA9CisgICAgeworICAgICAgICAweEY4MDEsIC8vIFJlZAorICAgICAgICAweDA3QzEsIC8vIEdy
ZWVuCisgICAgICAgIDB4MDAzRiwgLy8gQmx1ZQorICAgICAgICAweEZGQzEgIC8vIFJlZCArIEdy
ZWVuCisgICAgfTsKKworICAgIC8vIENyZWF0ZSBhIHNpbXBsZSA1NTUxIHRleHR1cmUKKyAgICBH
TFRleHR1cmUgdGV4OworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4LmdldCgp
KTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMiwgMiwgMCwg
R0xfUkdCQSwgR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMSwgbnVsbHB0cik7CisgICAgZ2xUZXhQ
YXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVT
VCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJ
TFRFUiwgR0xfTkVBUkVTVCk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbFRl
eFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwgMiwgMiwgR0xfUkdCQSwgR0xfVU5T
SUdORURfU0hPUlRfNV81XzVfMSwgcGl4ZWxzKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
KworICAgIHNpbXBsZVZhbGlkYXRpb25CYXNlKHRleC5nZXQoKSk7Cit9CisKKy8vIFRlc3QgdG8g
ZW5zdXJlIGNhbGxpbmcgQ2xlYXIoKSBvbiBhbiBSR0JBNTU1MSB0ZXh0dXJlIGRvZXMgc29tZXRo
aW5nIHJlYXNvbmFibGUKKy8vIEJhc2VkIG9uIFdlYkdMIHRlc3QgY29uZm9ybWFuY2UvdGV4dHVy
ZXMvdGV4dHVyZS1hdHRhY2htZW50LWZvcm1hdHMuaHRtbAorVEVTVF9QKFNpeHRlZW5CcHBUZXh0
dXJlVGVzdCwgUkdCQTU1NTFDbGVhckFscGhhKQoreworICAgIC8vIFRoZXNlIHRlc3RzIGZhaWwg
b24gY2VydGFpbiBJbnRlbCBtYWNoaW5lcyBydW5uaW5nIGFuIHVuLXVwZGF0ZWQgdmVyc2lvbiBv
ZiBXaW43CisgICAgLy8gVGhlIHRlc3RzIHBhc3MgYWZ0ZXIgaW5zdGFsbGluZyB0aGUgbGF0ZXN0
IHVwZGF0ZXMgZnJvbSBXaW5kb3dzIFVwZGF0ZS4KKyAgICAvLyBUT0RPOiByZWVuYWJsZSB0aGVz
ZSB0ZXN0cyBvbmNlIHRoZSBib3RzIGhhdmUgYmVlbiB1cGRhdGVkCisgICAgaWYgKElzSW50ZWwo
KSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNE
MTFfQU5HTEUpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJ
bnRlbCBEM0QxMS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IEdMVGV4dHVyZSB0ZXg7CisgICAgR0xGcmFtZWJ1ZmZlciBmYm87CisKKyAgICAvLyBDcmVhdGUg
YSBzaW1wbGUgNTU1MSB0ZXh0dXJlCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0
ZXguZ2V0KCkpOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAy
LCAyLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xLCBudWxscHRyKTsKKyAg
ICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBH
TF9ORUFSRVNUKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKwor
ICAgIC8vIEJpbmQgdGhlIHRleHR1cmUgYXMgYSBmcmFtZWJ1ZmZlciwgY2xlYXIgaXQsIHRoZW4g
Y2hlY2sgdGhlIHJlc3VsdHMKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwg
ZmJvLmdldCgpKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIDApOworICAgIGds
RnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQw
LCBHTF9URVhUVVJFXzJELCB0ZXguZ2V0KCksIDApOworCisgICAgaWYgKGdsQ2hlY2tGcmFtZWJ1
ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikgIT0gR0xfRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQp
CisgICAgeworICAgICAgICBnbENsZWFyQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgMC4wZik7Cisg
ICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgICAgIEVYUEVDVF9QSVhF
TF9FUSgwLCAwLCAwLCAwLCAwLCAwKTsKKworICAgICAgICBnbENsZWFyQ29sb3IoMC4wZiwgMC4w
ZiwgMC4wZiwgMS4wZik7CisgICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Cisg
ICAgICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAwLCAwLCAwLCAyNTUpOworICAgIH0KKyAgICBl
bHNlCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlNraXBwaW5nIHJlbmRlcmluZyB0byBh
biB1bnN1cHBvcnRlZCBmcmFtZWJ1ZmZlciBmb3JtYXQiIDw8IHN0ZDo6ZW5kbDsKKyAgICB9Cit9
CisKKy8vIFNpbXBsZSB2YWxpZGF0aW9uIHRlc3QgZm9yIEdMX1JHQkE0NDQ0IHRleHR1cmVzLgor
Ly8gU2FtcGxlcyBmcm9tIHRoZSB0ZXh0dXJlLCByZW5kZXJzIHRvIGl0LCBnZW5lcmF0ZXMgbWlw
bWFwcyBldGMuCitURVNUX1AoU2l4dGVlbkJwcFRleHR1cmVUZXN0LCBSR0JBNDQ0NFZhbGlkYXRp
b24pCit7CisgICAgLy8gVGhlc2UgdGVzdHMgZmFpbCBvbiBjZXJ0YWluIEludGVsIG1hY2hpbmVz
IHJ1bm5pbmcgYW4gdW4tdXBkYXRlZCB2ZXJzaW9uIG9mIFdpbjcKKyAgICAvLyBUaGUgdGVzdHMg
cGFzcyBhZnRlciBpbnN0YWxsaW5nIHRoZSBsYXRlc3QgdXBkYXRlcyBmcm9tIFdpbmRvd3MgVXBk
YXRlLgorICAgIC8vIFRPRE86IHJlZW5hYmxlIHRoZXNlIHRlc3RzIG9uY2UgdGhlIGJvdHMgaGF2
ZSBiZWVuIHVwZGF0ZWQKKyAgICBpZiAoSXNJbnRlbCgpICYmIGdldFBsYXRmb3JtUmVuZGVyZXIo
KSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSkKKyAgICB7CisgICAgICAg
IHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIEQzRDExLiIgPDwgc3RkOjplbmRs
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR0x1c2hvcnQgcGl4ZWxzWzRdID0KKyAg
ICB7CisgICAgICAgIDB4RjAwRiwgLy8gUmVkCisgICAgICAgIDB4MEYwRiwgLy8gR3JlZW4KKyAg
ICAgICAgMHgwMEZGLCAvLyBCbHVlCisgICAgICAgIDB4RkYwRiAgLy8gUmVkICsgR3JlZW4KKyAg
ICB9OworCisgICAgZ2xDbGVhckNvbG9yKDAsIDAsIDAsIDApOworCisgICAgLy8gR2VuZXJhdGUg
YSBSR0JBNDQ0NCB0ZXh0dXJlLCBubyBtaXBtYXBzCisgICAgR0xUZXh0dXJlIHRleDsKKyAgICBn
bEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleC5nZXQoKSk7CisgICAgZ2xUZXhJbWFnZTJE
KEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDIsIDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVE
X1NIT1JUXzRfNF80XzQsIG51bGxwdHIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwor
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gUHJvdmlkZSBzb21lIGRhdGEgZm9y
IHRoZSB0ZXh0dXJlCisgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAs
IDIsIDIsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQsIHBpeGVscyk7CisgICAg
RVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBzaW1wbGVWYWxpZGF0aW9uQmFzZSh0ZXguZ2V0
KCkpOworfQorCisvLyBUZXN0IHVwbG9hZGluZyBSR0JBOCBkYXRhIHRvIFJHQkE0IHRleHR1cmVz
LgorVEVTVF9QKFNpeHRlZW5CcHBUZXh0dXJlVGVzdEVTMywgUkdCQTRVcGxvYWRSR0JBOCkKK3sK
KyAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBmb3VyQ29sb3JzOworICAgIGZvdXJDb2xvcnMucHVz
aF9iYWNrKEdMQ29sb3I6OnJlZCk7CisgICAgZm91ckNvbG9ycy5wdXNoX2JhY2soR0xDb2xvcjo6
Z3JlZW4pOworICAgIGZvdXJDb2xvcnMucHVzaF9iYWNrKEdMQ29sb3I6OmJsdWUpOworICAgIGZv
dXJDb2xvcnMucHVzaF9iYWNrKEdMQ29sb3I6OnllbGxvdyk7CisKKyAgICBHTFRleHR1cmUgdGV4
OworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4LmdldCgpKTsKKyAgICBnbFRl
eEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQTQsIDIsIDIsIDAsIEdMX1JHQkEsIEdM
X1VOU0lHTkVEX0JZVEUsIGZvdXJDb2xvcnMuZGF0YSgpKTsKKyAgICBnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9O
RUFSRVNUKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICBzaW1wbGVWYWxpZGF0aW9u
QmFzZSh0ZXguZ2V0KCkpOworfQorCisvLyBUZXN0IHVwbG9hZGluZyBSR0I4IGRhdGEgdG8gUkdC
NTY1IHRleHR1cmVzLgorVEVTVF9QKFNpeHRlZW5CcHBUZXh0dXJlVGVzdEVTMywgUkdCNTY1VXBs
b2FkUkdCOCkKK3sKKyAgICBzdGQ6OnZlY3RvcjxHTENvbG9yUkdCPiBmb3VyQ29sb3JzOworICAg
IGZvdXJDb2xvcnMucHVzaF9iYWNrKEdMQ29sb3JSR0I6OnJlZCk7CisgICAgZm91ckNvbG9ycy5w
dXNoX2JhY2soR0xDb2xvclJHQjo6Z3JlZW4pOworICAgIGZvdXJDb2xvcnMucHVzaF9iYWNrKEdM
Q29sb3JSR0I6OmJsdWUpOworICAgIGZvdXJDb2xvcnMucHVzaF9iYWNrKEdMQ29sb3JSR0I6Onll
bGxvdyk7CisKKyAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19BTElHTk1FTlQsIDEpOworCisg
ICAgR0xUZXh0dXJlIHRleDsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleC5n
ZXQoKSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQjU2NSwgMiwg
MiwgMCwgR0xfUkdCLCBHTF9VTlNJR05FRF9CWVRFLCBmb3VyQ29sb3JzLmRhdGEoKSk7CisgICAg
Z2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xf
TkVBUkVTVCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
TUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAg
ICBzaW1wbGVWYWxpZGF0aW9uQmFzZSh0ZXguZ2V0KCkpOworfQorCisvLyBUZXN0IHVwbG9hZGlu
ZyBSR0JBOCBkYXRhIHRvIFJHQjVBNDEgdGV4dHVyZXMuCitURVNUX1AoU2l4dGVlbkJwcFRleHR1
cmVUZXN0RVMzLCBSR0I1QTFVcGxvYWRSR0JBOCkKK3sKKyAgICBzdGQ6OnZlY3RvcjxHTENvbG9y
PiBmb3VyQ29sb3JzOworICAgIGZvdXJDb2xvcnMucHVzaF9iYWNrKEdMQ29sb3I6OnJlZCk7Cisg
ICAgZm91ckNvbG9ycy5wdXNoX2JhY2soR0xDb2xvcjo6Z3JlZW4pOworICAgIGZvdXJDb2xvcnMu
cHVzaF9iYWNrKEdMQ29sb3I6OmJsdWUpOworICAgIGZvdXJDb2xvcnMucHVzaF9iYWNrKEdMQ29s
b3I6OnllbGxvdyk7CisKKyAgICBHTFRleHR1cmUgdGV4OworICAgIGdsQmluZFRleHR1cmUoR0xf
VEVYVFVSRV8yRCwgdGV4LmdldCgpKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwg
MCwgR0xfUkdCNV9BMSwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAg
ICAgICAgICAgICAgZm91ckNvbG9ycy5kYXRhKCkpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgIGdsVGV4
UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJF
U1QpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIHNpbXBsZVZhbGlkYXRpb25CYXNl
KHRleC5nZXQoKSk7Cit9CisKKy8vIFRlc3QgdXBsb2FkaW5nIFJHQjEwQTIgZGF0YSB0byBSR0I1
QTEgdGV4dHVyZXMuCitURVNUX1AoU2l4dGVlbkJwcFRleHR1cmVUZXN0RVMzLCBSR0I1QTFVcGxv
YWRSR0IxMEEyKQoreworICAgIHN0cnVjdCBSR0IxMEEyCisgICAgeworICAgICAgICBSR0IxMEEy
KHVpbnQzMl90IHIsIHVpbnQzMl90IGcsIHVpbnQzMl90IGIsIHVpbnQzMl90IGEpIDogUihyKSwg
RyhnKSwgQihiKSwgQShhKSB7fQorCisgICAgICAgIHVpbnQzMl90IFIgOiAxMDsKKyAgICAgICAg
dWludDMyX3QgRyA6IDEwOworICAgICAgICB1aW50MzJfdCBCIDogMTA7CisgICAgICAgIHVpbnQz
Ml90IEEgOiAyOworICAgIH07CisKKyAgICB1aW50MzJfdCBvbmUxMCA9ICgxdSA8PCAxMHUpIC0g
MXU7CisKKyAgICBSR0IxMEEyIHJlZChvbmUxMCwgMHUsIDB1LCAweDN1KTsKKyAgICBSR0IxMEEy
IGdyZWVuKDB1LCBvbmUxMCwgMHUsIDB4M3UpOworICAgIFJHQjEwQTIgYmx1ZSgwdSwgMHUsIG9u
ZTEwLCAweDN1KTsKKyAgICBSR0IxMEEyIHllbGxvdyhvbmUxMCwgb25lMTAsIDB1LCAweDN1KTsK
KworICAgIHN0ZDo6dmVjdG9yPFJHQjEwQTI+IGZvdXJDb2xvcnM7CisgICAgZm91ckNvbG9ycy5w
dXNoX2JhY2socmVkKTsKKyAgICBmb3VyQ29sb3JzLnB1c2hfYmFjayhncmVlbik7CisgICAgZm91
ckNvbG9ycy5wdXNoX2JhY2soYmx1ZSk7CisgICAgZm91ckNvbG9ycy5wdXNoX2JhY2soeWVsbG93
KTsKKworICAgIEdMVGV4dHVyZSB0ZXg7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJE
LCB0ZXguZ2V0KCkpOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0I1
X0ExLCAyLCAyLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYsCisg
ICAgICAgICAgICAgICAgIGZvdXJDb2xvcnMuZGF0YSgpKTsKKyAgICBnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9O
RUFSRVNUKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICBzaW1wbGVWYWxpZGF0aW9u
QmFzZSh0ZXguZ2V0KCkpOworfQorCisvLyBUZXN0IHJlYWRpbmcgZnJvbSBSR0JBNCB0ZXh0dXJl
cyBhdHRhY2hlZCB0byBGQk8uCitURVNUX1AoU2l4dGVlbkJwcFRleHR1cmVUZXN0RVMzLCBSR0JB
NEZyYW1lYnVmZmVyUmVhZGJhY2spCit7CisgICAgLy8gVE9ETyhqbWFkaWxsKTogRml4IGJ1ZyB3
aXRoIEdMRVMKKyAgICBpZiAoSXNPcGVuR0xFUygpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0
IDw8ICJUZXN0IHNraXBwZWQgb24gR0xFUy4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIFZlY3RvcjQgcmF3Q29sb3IoMC41ZiwgMC43ZiwgMS4wZiwgMC4wZik7
CisgICAgR0xDb2xvciBleHBlY3RlZENvbG9yKHJhd0NvbG9yKTsKKworICAgIEdMRnJhbWVidWZm
ZXIgZmJvOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBmYm8uZ2V0KCkp
OworCisgICAgR0xUZXh0dXJlIHRleDsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQs
IHRleC5nZXQoKSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkE0
LCAyLCAyLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKKyAgICBnbEZy
YW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwg
R0xfVEVYVFVSRV8yRCwgdGV4LmdldCgpLCAwKTsKKworICAgIGdsQ2xlYXJDb2xvcihyYXdDb2xv
ci54LCByYXdDb2xvci55LCByYXdDb2xvci56LCByYXdDb2xvci53KTsKKyAgICBnbENsZWFyKEdM
X0NPTE9SX0JVRkZFUl9CSVQpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBH
TGVudW0gY29sb3JSZWFkRm9ybWF0ID0gR0xfTk9ORTsKKyAgICBHTGVudW0gY29sb3JSZWFkVHlw
ZSAgID0gR0xfTk9ORTsKKyAgICBnbEdldEludGVnZXJ2KEdMX0lNUExFTUVOVEFUSU9OX0NPTE9S
X1JFQURfRk9STUFULCByZWludGVycHJldF9jYXN0PEdMaW50ICo+KCZjb2xvclJlYWRGb3JtYXQp
KTsKKyAgICBnbEdldEludGVnZXJ2KEdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRSwg
cmVpbnRlcnByZXRfY2FzdDxHTGludCAqPigmY29sb3JSZWFkVHlwZSkpOworCisgICAgaWYgKGNv
bG9yUmVhZEZvcm1hdCA9PSBHTF9SR0JBICYmIGNvbG9yUmVhZFR5cGUgPT0gR0xfVU5TSUdORURf
QllURSkKKyAgICB7CisgICAgICAgIEdMQ29sb3IgYWN0dWFsQ29sb3IgPSBHTENvbG9yOjpibGFj
azsKKyAgICAgICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIGNvbG9yUmVhZEZvcm1hdCwgY29s
b3JSZWFkVHlwZSwgJmFjdHVhbENvbG9yKTsKKyAgICAgICAgRVhQRUNUX0NPTE9SX05FQVIoZXhw
ZWN0ZWRDb2xvciwgYWN0dWFsQ29sb3IsIDIwKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAg
ICAgICAgQVNTRVJUX0dMRU5VTV9FUShHTF9SR0JBLCBjb2xvclJlYWRGb3JtYXQpOworICAgICAg
ICBBU1NFUlRfVFJVRShjb2xvclJlYWRUeXBlID09IEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzRf
UkVWX0VYVCB8fAorICAgICAgICAgICAgICAgICAgICBjb2xvclJlYWRUeXBlID09IEdMX1VOU0lH
TkVEX1NIT1JUXzRfNF80XzQpOworCisgICAgICAgIHVpbnQxNl90IHJnYmEgPSAwOworICAgICAg
ICBnbFJlYWRQaXhlbHMoMCwgMCwgMSwgMSwgY29sb3JSZWFkRm9ybWF0LCBjb2xvclJlYWRUeXBl
LCAmcmdiYSk7CisKKyAgICAgICAgR0x1Ynl0ZSByOCA9IHN0YXRpY19jYXN0PEdMdWJ5dGU+KChy
Z2JhICYgMHhGMDAwKSA+PiAxMik7CisgICAgICAgIEdMdWJ5dGUgZzggPSBzdGF0aWNfY2FzdDxH
THVieXRlPigocmdiYSAmIDB4MEYwMCkgPj4gOCk7CisgICAgICAgIEdMdWJ5dGUgYjggPSBzdGF0
aWNfY2FzdDxHTHVieXRlPigocmdiYSAmIDB4MDBGMCkgPj4gNCk7CisgICAgICAgIEdMdWJ5dGUg
YTggPSBzdGF0aWNfY2FzdDxHTHVieXRlPigocmdiYSAmIDB4MDAwRikpOworCisgICAgICAgIEdM
Q29sb3IgYWN0dWFsQ29sb3IocjggPDwgNCwgZzggPDwgNCwgYjggPDwgNCwgYTggPDwgNCk7Cisg
ICAgICAgIEVYUEVDVF9DT0xPUl9ORUFSKGV4cGVjdGVkQ29sb3IsIGFjdHVhbENvbG9yLCAyMCk7
CisgICAgfQorCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFRlc3QgcmVhZGlu
ZyBmcm9tIFJHQjU2NSB0ZXh0dXJlcyBhdHRhY2hlZCB0byBGQk8uCitURVNUX1AoU2l4dGVlbkJw
cFRleHR1cmVUZXN0RVMzLCBSR0I1NjVGcmFtZWJ1ZmZlclJlYWRiYWNrKQoreworICAgIC8vIFRP
RE8oam1hZGlsbCk6IEZpeCBidWcgd2l0aCBHTEVTCisgICAgaWYgKElzT3BlbkdMRVMoKSkKKyAg
ICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEdMRVMuIiA8PCBzdGQ6
OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHTEZyYW1lYnVmZmVyIGZibzsK
KyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgZmJvLmdldCgpKTsKKworICAg
IHN0ZDo6dmVjdG9yPEdMQ29sb3I+IGZvdXJDb2xvcnM7CisgICAgZm91ckNvbG9ycy5wdXNoX2Jh
Y2soR0xDb2xvcjo6cmVkKTsKKyAgICBmb3VyQ29sb3JzLnB1c2hfYmFjayhHTENvbG9yOjpncmVl
bik7CisgICAgZm91ckNvbG9ycy5wdXNoX2JhY2soR0xDb2xvcjo6Ymx1ZSk7CisgICAgZm91ckNv
bG9ycy5wdXNoX2JhY2soR0xDb2xvcjo6d2hpdGUpOworCisgICAgY29uc3Qgc3RkOjpzdHJpbmcg
JnZlcnRleFNoYWRlciA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgImlu
IHZlYzQgY29sb3I7XG4iCisgICAgICAgICJpbiB2ZWMyIHBvc2l0aW9uO1xuIgorICAgICAgICAi
b3V0IHZlYzQgZmNvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAi
ICAgIGZjb2xvciA9IGNvbG9yO1xuIgorICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gdmVjNChw
b3NpdGlvbiwgMC41LCAxLjApO1xuIgorICAgICAgICAifSI7CisgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJmZyYWdtZW50U2hhZGVyID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAg
ICAiaW4gbWVkaXVtcCB2ZWM0IGZjb2xvcjtcbiIKKyAgICAgICAgIm91dCBtZWRpdW1wIHZlYzQg
Y29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICAgY29sb3Ig
PSBmY29sb3I7XG4iCisgICAgICAgICJ9IjsKKworICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGls
ZVByb2dyYW0odmVydGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlcik7CisgICAgZ2xVc2VQcm9ncmFt
KHByb2dyYW0pOworCisgICAgR0xpbnQgY29sb3JMb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRp
b24ocHJvZ3JhbSwgImNvbG9yIik7CisgICAgQVNTRVJUX05FKC0xLCBjb2xvckxvY2F0aW9uKTsK
KyAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGNvbG9yTG9jYXRpb24pOworICAgIGdsVmVy
dGV4QXR0cmliUG9pbnRlcihjb2xvckxvY2F0aW9uLCA0LCBHTF9VTlNJR05FRF9CWVRFLCBHTF9U
UlVFLCAwLCBmb3VyQ29sb3JzLmRhdGEoKSk7CisKKyAgICBpbnQgdyA9IGdldFdpbmRvd1dpZHRo
KCk7CisgICAgaW50IGggPSBnZXRXaW5kb3dIZWlnaHQoKTsKKworICAgIGdsVmlld3BvcnQoMCwg
MCwgdywgaCk7CisKKyAgICBHTFRleHR1cmUgdGV4OworICAgIGdsQmluZFRleHR1cmUoR0xfVEVY
VFVSRV8yRCwgdGV4LmdldCgpKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwg
R0xfUkdCNTY1LCB3LCBoLCAwLCBHTF9SR0IsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOwor
ICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFD
SE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXguZ2V0KCksIDApOworCisgICAgZHJhd0luZGV4ZWRR
dWFkKHByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7CisKKyAgICBpbnQgdCA9IDEyOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9ORUFSKDAsIGgg
LSAxLCBHTENvbG9yOjpyZWQsIHQpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9ORUFSKDAsIDAs
IEdMQ29sb3I6OmdyZWVuLCB0KTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfTkVBUih3IC0gMSwg
MCwgR0xDb2xvcjo6Ymx1ZSwgdCk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX05FQVIodyAtIDEs
IGggLSAxLCBHTENvbG9yOjp3aGl0ZSwgdCk7CisKKyAgICBHTGVudW0gY29sb3JSZWFkRm9ybWF0
ID0gR0xfTk9ORTsKKyAgICBHTGVudW0gY29sb3JSZWFkVHlwZSAgID0gR0xfTk9ORTsKKyAgICBn
bEdldEludGVnZXJ2KEdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFULCByZWludGVy
cHJldF9jYXN0PEdMaW50ICo+KCZjb2xvclJlYWRGb3JtYXQpKTsKKyAgICBnbEdldEludGVnZXJ2
KEdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRSwgcmVpbnRlcnByZXRfY2FzdDxHTGlu
dCAqPigmY29sb3JSZWFkVHlwZSkpOworCisgICAgaWYgKGNvbG9yUmVhZEZvcm1hdCA9PSBHTF9S
R0IgJiYgY29sb3JSZWFkVHlwZSA9PSBHTF9VTlNJR05FRF9TSE9SVF81XzZfNSkKKyAgICB7Cisg
ICAgICAgIHN0ZDo6dmVjdG9yPFI1RzZCNT4gcmVhZENvbG9ycyh3ICogaCk7CisgICAgICAgIGds
UmVhZFBpeGVscygwLCAwLCB3LCBoLCBHTF9SR0IsIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81LCBy
ZWFkQ29sb3JzLmRhdGEoKSk7CisKKyAgICAgICAgaW50IGhvZmZzZXQgPSAoaCAtIDEpICogdzsK
KyAgICAgICAgRVhQRUNUX0NPTE9SX05FQVIoR0xDb2xvcjo6cmVkLCBDb252ZXJ0NTY1KHJlYWRD
b2xvcnNbaG9mZnNldF0pLCB0KTsKKyAgICAgICAgRVhQRUNUX0NPTE9SX05FQVIoR0xDb2xvcjo6
Z3JlZW4sIENvbnZlcnQ1NjUocmVhZENvbG9yc1swXSksIHQpOworICAgICAgICBFWFBFQ1RfQ09M
T1JfTkVBUihHTENvbG9yOjpibHVlLCBDb252ZXJ0NTY1KHJlYWRDb2xvcnNbdyAtIDFdKSwgdCk7
CisgICAgICAgIEVYUEVDVF9DT0xPUl9ORUFSKEdMQ29sb3I6OndoaXRlLCBDb252ZXJ0NTY1KHJl
YWRDb2xvcnNbdyAtIDEgKyBob2Zmc2V0XSksIHQpOworICAgIH0KKworICAgIGdsRGVsZXRlUHJv
Z3JhbShwcm9ncmFtKTsKK30KKworLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3Vy
YXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRo
ZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1Qo
U2l4dGVlbkJwcFRleHR1cmVUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgp
LAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgRVMyX0QzRDExX0ZMOV8zKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVO
R0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCkpOworCitBTkdMRV9J
TlNUQU5USUFURV9URVNUKFNpeHRlZW5CcHBUZXh0dXJlVGVzdEVTMywgRVMzX0QzRDExKCksIEVT
M19PUEVOR0woKSwgRVMzX09QRU5HTEVTKCkpOworCit9IC8vIG5hbWVzcGFjZQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1N0YXRlQ2hhbmdlVGVzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rl
c3RzL1N0YXRlQ2hhbmdlVGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1N0YXRlQ2hhbmdlVGVzdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw1OTEgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBTdGF0ZUNoYW5nZVRlc3Q6Cisv
LyAgIFNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgYW4gQU5HTEUgaW1wbGVtZW50YXRpb24gb2Yg
R0wsIHRoZXNlIHRlc3RzIHZhbGlkYXRlIHRoYXQKKy8vICAgQU5HTEUncyBkaXJ0eSBiaXRzIHN5
c3RlbXMgZG9uJ3QgZ2V0IGNvbmZ1c2VkIGJ5IGNlcnRhaW4gc2VxdWVuY2VzIG9mIHN0YXRlIGNo
YW5nZXMuCisvLworCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKyNpbmNsdWRl
ICJ0ZXN0X3V0aWxzL2dsX3JhaWkuaCIKKwordXNpbmcgbmFtZXNwYWNlIGFuZ2xlOworCituYW1l
c3BhY2UKK3sKKworY2xhc3MgU3RhdGVDaGFuZ2VUZXN0IDogcHVibGljIEFOR0xFVGVzdAorewor
ICBwcm90ZWN0ZWQ6CisgICAgU3RhdGVDaGFuZ2VUZXN0KCkKKyAgICB7CisgICAgICAgIHNldFdp
bmRvd1dpZHRoKDY0KTsKKyAgICAgICAgc2V0V2luZG93SGVpZ2h0KDY0KTsKKyAgICAgICAgc2V0
Q29uZmlnUmVkQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAg
ICBzZXRDb25maWdCbHVlQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOwor
CisgICAgICAgIC8vIEVuYWJsZSB0aGUgbm8gZXJyb3IgZXh0ZW5zaW9uIHRvIGF2b2lkIHN5bmNp
bmcgdGhlIEZCTyBzdGF0ZSBvbiB2YWxpZGF0aW9uLgorICAgICAgICBzZXROb0Vycm9yRW5hYmxl
ZCh0cnVlKTsKKyAgICB9CisKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKKworICAgICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAm
bUZyYW1lYnVmZmVyKTsKKyAgICAgICAgZ2xHZW5UZXh0dXJlcygyLCBtVGV4dHVyZXMuZGF0YSgp
KTsKKyAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZtUmVuZGVyYnVmZmVyKTsKKworICAg
ICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmIChtRnJhbWVidWZmZXIgIT0gMCkKKyAgICAgICAg
eworICAgICAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1GcmFtZWJ1ZmZlcik7Cisg
ICAgICAgICAgICBtRnJhbWVidWZmZXIgPSAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFt
VGV4dHVyZXMuZW1wdHkoKSkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xEZWxldGVUZXh0dXJl
cyhzdGF0aWNfY2FzdDxHTHNpemVpPihtVGV4dHVyZXMuc2l6ZSgpKSwgbVRleHR1cmVzLmRhdGEo
KSk7CisgICAgICAgICAgICBtVGV4dHVyZXMuY2xlYXIoKTsKKyAgICAgICAgfQorCisgICAgICAg
IGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmbVJlbmRlcmJ1ZmZlcik7CisKKyAgICAgICAgQU5H
TEVUZXN0OjpUZWFyRG93bigpOworICAgIH0KKworICAgIEdMdWludCBtRnJhbWVidWZmZXIgICAg
ICAgICAgID0gMDsKKyAgICBHTHVpbnQgbVJlbmRlcmJ1ZmZlciAgICAgICAgICA9IDA7CisgICAg
c3RkOjp2ZWN0b3I8R0x1aW50PiBtVGV4dHVyZXMgPSB7MCwgMH07Cit9OworCitjbGFzcyBTdGF0
ZUNoYW5nZVRlc3RFUzMgOiBwdWJsaWMgU3RhdGVDaGFuZ2VUZXN0Cit7CisgIHByb3RlY3RlZDoK
KyAgICBTdGF0ZUNoYW5nZVRlc3RFUzMoKSB7fQorfTsKKworfSAgLy8gYW5vbnltb3VzIG5hbWVz
cGFjZQorCisvLyBFbnN1cmUgdGhhdCBDb3B5VGV4SW1hZ2UyRCBzeW5jcyBmcmFtZWJ1ZmZlciBj
aGFuZ2VzLgorVEVTVF9QKFN0YXRlQ2hhbmdlVGVzdCwgQ29weVRleEltYWdlMkRTeW5jKQorewor
ICAgIGlmIChJc0FNRCgpICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1f
QU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUpCisgICAgeworICAgICAgICAvLyBUT0RPKGdlb2ZmbGFu
Zyk6IEZpeCBvbiBMaW51eCBBTUQgZHJpdmVycyAoaHR0cDovL2FuZ2xlYnVnLmNvbS8xMjkxKQor
ICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3QgZGlzYWJsZWQgb24gQU1EIE9wZW5HTC4iIDw8IHN0
ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGdsQmluZEZyYW1lYnVmZmVy
KEdMX0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZmZXIpOworCisgICAgLy8gSW5pdCBmaXJzdCB0ZXh0
dXJlIHRvIHJlZAorICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBd
KTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMTYsIDE2LCAw
LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKKyAgICBnbEZyYW1lYnVmZmVy
VGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVS
RV8yRCwgbVRleHR1cmVzWzBdLCAwKTsKKyAgICBnbENsZWFyQ29sb3IoMS4wZiwgMC4wZiwgMC4w
ZiwgMS4wZik7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBFWFBFQ1Rf
UElYRUxfRVEoMCwgMCwgMjU1LCAwLCAwLCAyNTUpOworCisgICAgLy8gSW5pdCBzZWNvbmQgdGV4
dHVyZSB0byBncmVlbgorICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVz
WzFdKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMTYsIDE2
LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKKyAgICBnbEZyYW1lYnVm
ZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVY
VFVSRV8yRCwgbVRleHR1cmVzWzFdLCAwKTsKKyAgICBnbENsZWFyQ29sb3IoMC4wZiwgMS4wZiwg
MC4wZiwgMS4wZik7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBFWFBF
Q1RfUElYRUxfRVEoMCwgMCwgMCwgMjU1LCAwLCAyNTUpOworCisgICAgLy8gQ29weSBpbiB0aGUg
cmVkIHRleHR1cmUgdG8gdGhlIGdyZWVuIG9uZS4KKyAgICAvLyBDb3B5VGV4SW1hZ2Ugc2hvdWxk
IHN5bmMgdGhlIGZyYW1lYnVmZmVyIGF0dGFjaG1lbnQgY2hhbmdlLgorICAgIGdsRnJhbWVidWZm
ZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhU
VVJFXzJELCBtVGV4dHVyZXNbMF0sIDApOworICAgIGdsQ29weVRleEltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgMCwgR0xfUkdCQSwgMCwgMCwgMTYsIDE2LCAwKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4
dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8y
RCwgbVRleHR1cmVzWzFdLCAwKTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMjU1LCAwLCAw
LCAyNTUpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIEVuc3VyZSB0aGF0
IENvcHlUZXhTdWJJbWFnZTJEIHN5bmNzIGZyYW1lYnVmZmVyIGNoYW5nZXMuCitURVNUX1AoU3Rh
dGVDaGFuZ2VUZXN0LCBDb3B5VGV4U3ViSW1hZ2UyRFN5bmMpCit7CisgICAgZ2xCaW5kRnJhbWVi
dWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GcmFtZWJ1ZmZlcik7CisKKyAgICAvLyBJbml0IGZpcnN0
IHRleHR1cmUgdG8gcmVkCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVy
ZXNbMF0pOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxNiwg
MTYsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOworICAgIGdsRnJhbWVi
dWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9U
RVhUVVJFXzJELCBtVGV4dHVyZXNbMF0sIDApOworICAgIGdsQ2xlYXJDb2xvcigxLjBmLCAwLjBm
LCAwLjBmLCAxLjBmKTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAgIEVY
UEVDVF9QSVhFTF9FUSgwLCAwLCAyNTUsIDAsIDAsIDI1NSk7CisKKyAgICAvLyBJbml0IHNlY29u
ZCB0ZXh0dXJlIHRvIGdyZWVuCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4
dHVyZXNbMV0pOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAx
NiwgMTYsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOworICAgIGdsRnJh
bWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBH
TF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMV0sIDApOworICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAx
LjBmLCAwLjBmLCAxLjBmKTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAg
IEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAwLCAyNTUsIDAsIDI1NSk7CisKKyAgICAvLyBDb3B5IGlu
IHRoZSByZWQgdGV4dHVyZSB0byB0aGUgZ3JlZW4gb25lLgorICAgIC8vIENvcHlUZXhJbWFnZSBz
aG91bGQgc3luYyB0aGUgZnJhbWVidWZmZXIgYXR0YWNobWVudCBjaGFuZ2UuCisgICAgZ2xGcmFt
ZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdM
X1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSwgMCk7CisgICAgZ2xDb3B5VGV4U3ViSW1hZ2UyRChH
TF9URVhUVVJFXzJELCAwLCAwLCAwLCAwLCAwLCAxNiwgMTYpOworICAgIGdsRnJhbWVidWZmZXJU
ZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJF
XzJELCBtVGV4dHVyZXNbMV0sIDApOworICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAyNTUsIDAs
IDAsIDI1NSk7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKK30KKworLy8gVGVzdCB0aGF0
IEZyYW1lYnVmZmVyIGNvbXBsZXRlbmVzcyBjYWNoaW5nIHdvcmtzIHdoZW4gY29sb3IgYXR0YWNo
bWVudHMgY2hhbmdlLgorVEVTVF9QKFN0YXRlQ2hhbmdlVGVzdCwgRnJhbWVidWZmZXJJbmNvbXBs
ZXRlQ29sb3JBdHRhY2htZW50KQoreworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVG
RkVSLCBtRnJhbWVidWZmZXIpOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRl
eHR1cmVzWzBdKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwg
MTYsIDE2LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKKyAgICBnbEZy
YW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwg
R0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdLCAwKTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdM
X0ZSQU1FQlVGRkVSX0NPTVBMRVRFLCBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVC
VUZGRVIpKTsKKworICAgIC8vIENoYW5nZSB0aGUgdGV4dHVyZSBhdCBjb2xvciBhdHRhY2htZW50
IDAgdG8gYmUgbm9uLWNvbG9yLXJlbmRlcmFibGUuCisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRV
UkVfMkQsIDAsIEdMX0FMUEhBLCAxNiwgMTYsIDAsIEdMX0FMUEhBLCBHTF9VTlNJR05FRF9CWVRF
LCBudWxscHRyKTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExF
VEVfQVRUQUNITUVOVCwKKyAgICAgICAgICAgICAgICAgICAgIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0
YXR1cyhHTF9GUkFNRUJVRkZFUikpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9CisK
Ky8vIFRlc3QgdGhhdCBjYWNoaW5nIHdvcmtzIHdoZW4gY29sb3IgYXR0YWNobWVudHMgY2hhbmdl
IHdpdGggVGV4U3RvcmFnZS4KK1RFU1RfUChTdGF0ZUNoYW5nZVRlc3QsIEZyYW1lYnVmZmVySW5j
b21wbGV0ZVdpdGhUZXhTdG9yYWdlKQoreworICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xf
RVhUX3RleHR1cmVfc3RvcmFnZSIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0
IHNraXBwZWQgYmVjYXVzZSBUZXhTdG9yYWdlMkRFWFQgbm90IGF2YWlsYWJsZS4iIDw8IHN0ZDo6
ZW5kbDsKKyAgICB9CisKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZy
YW1lYnVmZmVyKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sw
XSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDE2LCAxNiwg
MCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7CisgICAgZ2xGcmFtZWJ1ZmZl
clRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRV
UkVfMkQsIG1UZXh0dXJlc1swXSwgMCk7CisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GUkFNRUJV
RkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7
CisKKyAgICAvLyBDaGFuZ2UgdGhlIHRleHR1cmUgYXQgY29sb3IgYXR0YWNobWVudCAwIHRvIGJl
IG5vbi1jb2xvci1yZW5kZXJhYmxlLgorICAgIGdsVGV4U3RvcmFnZTJERVhUKEdMX1RFWFRVUkVf
MkQsIDEsIEdMX0FMUEhBOF9FWFQsIDE2LCAxNik7CisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9G
UkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQsCisgICAgICAgICAgICAgICAgICAgICBn
bENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKKworICAgIEFTU0VSVF9H
TF9OT19FUlJPUigpOworfQorCisvLyBUZXN0IHRoYXQgY2FjaGluZyB3b3JrcyB3aGVuIGNvbG9y
IGF0dGFjaG1lbnRzIGNoYW5nZSB3aXRoIENvbXByZXNzZWRUZXhJbWFnZTJELgorVEVTVF9QKFN0
YXRlQ2hhbmdlVGVzdEVTMywgRnJhbWVidWZmZXJJbmNvbXBsZXRlV2l0aENvbXByZXNzZWRUZXgp
Cit7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GcmFtZWJ1ZmZlcik7
CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0pOworICAgIGds
VGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxNiwgMTYsIDAsIEdMX1JHQkEs
IEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQo
R0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBtVGV4
dHVyZXNbMF0sIDApOworICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09NUExF
VEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOworCisgICAgLy8g
Q2hhbmdlIHRoZSB0ZXh0dXJlIGF0IGNvbG9yIGF0dGFjaG1lbnQgMCB0byBiZSBub24tY29sb3It
cmVuZGVyYWJsZS4KKyAgICBnbENvbXByZXNzZWRUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAs
IEdMX0NPTVBSRVNTRURfUkdCOF9FVEMyLCAxNiwgMTYsIDAsIDY0LCBudWxscHRyKTsKKyAgICBF
WFBFQ1RfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVCwKKyAg
ICAgICAgICAgICAgICAgICAgIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZF
UikpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFRlc3QgdGhhdCBjYWNo
aW5nIHdvcmtzIHdoZW4gY29sb3IgYXR0YWNobWVudHMgYXJlIGRlbGV0ZWQuCitURVNUX1AoU3Rh
dGVDaGFuZ2VUZXN0RVMzLCBGcmFtZWJ1ZmZlckluY29tcGxldGVXaGVuQXR0YWNobWVudERlbGV0
ZWQpCit7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GcmFtZWJ1ZmZl
cik7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0pOworICAg
IGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxNiwgMTYsIDAsIEdMX1JH
QkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJl
MkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBt
VGV4dHVyZXNbMF0sIDApOworICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09N
UExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOworCisgICAg
Ly8gRGVsZXRlIHRoZSB0ZXh0dXJlIGF0IGNvbG9yIGF0dGFjaG1lbnQgMC4KKyAgICBnbERlbGV0
ZVRleHR1cmVzKDEsICZtVGV4dHVyZXNbMF0pOworICAgIG1UZXh0dXJlc1swXSA9IDA7CisgICAg
RVhQRUNUX0dMRU5VTV9FUShHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNI
TUVOVCwKKyAgICAgICAgICAgICAgICAgICAgIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9G
UkFNRUJVRkZFUikpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFRlc3Qg
dGhhdCBGcmFtZWJ1ZmZlciBjb21wbGV0ZW5lc3MgY2FjaGluZyB3b3JrcyB3aGVuIGRlcHRoIGF0
dGFjaG1lbnRzIGNoYW5nZS4KK1RFU1RfUChTdGF0ZUNoYW5nZVRlc3QsIEZyYW1lYnVmZmVySW5j
b21wbGV0ZURlcHRoQXR0YWNobWVudCkKK3sKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFN
RUJVRkZFUiwgbUZyYW1lYnVmZmVyKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQs
IG1UZXh0dXJlc1swXSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JH
QkEsIDE2LCAxNiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7CisgICAg
Z2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVO
VDAsIEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSwgMCk7CisgICAgZ2xCaW5kUmVuZGVyYnVm
ZmVyKEdMX1JFTkRFUkJVRkZFUiwgbVJlbmRlcmJ1ZmZlcik7CisgICAgZ2xSZW5kZXJidWZmZXJT
dG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgR0xfREVQVEhfQ09NUE9ORU5UMTYsIDE2LCAxNik7Cisg
ICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfREVQVEhfQVRU
QUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLCBtUmVuZGVyYnVmZmVyKTsKKyAgICBFWFBFQ1RfR0xF
TlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFLCBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMo
R0xfRlJBTUVCVUZGRVIpKTsKKworICAgIC8vIENoYW5nZSB0aGUgdGV4dHVyZSBhdCBjb2xvciBh
dHRhY2htZW50IDAgdG8gYmUgbm9uLWRlcHRoLXJlbmRlcmFibGUuCisgICAgZ2xSZW5kZXJidWZm
ZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgR0xfUkdCQTgsIDE2LCAxNik7CisgICAgRVhQRUNU
X0dMRU5VTV9FUShHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQsCisgICAgICAg
ICAgICAgICAgICAgICBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsK
KworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworfQorCisvLyBUZXN0IHRoYXQgRnJhbWVidWZm
ZXIgY29tcGxldGVuZXNzIGNhY2hpbmcgd29ya3Mgd2hlbiBzdGVuY2lsIGF0dGFjaG1lbnRzIGNo
YW5nZS4KK1RFU1RfUChTdGF0ZUNoYW5nZVRlc3QsIEZyYW1lYnVmZmVySW5jb21wbGV0ZVN0ZW5j
aWxBdHRhY2htZW50KQoreworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBt
RnJhbWVidWZmZXIpOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVz
WzBdKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMTYsIDE2
LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKKyAgICBnbEZyYW1lYnVm
ZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVY
VFVSRV8yRCwgbVRleHR1cmVzWzBdLCAwKTsKKyAgICBnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVO
REVSQlVGRkVSLCBtUmVuZGVyYnVmZmVyKTsKKyAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xf
UkVOREVSQlVGRkVSLCBHTF9TVEVOQ0lMX0lOREVYOCwgMTYsIDE2KTsKKyAgICBnbEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQsIEdM
X1JFTkRFUkJVRkZFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1SZW5kZXJidWZm
ZXIpOworICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hl
Y2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOworCisgICAgLy8gQ2hhbmdlIHRo
ZSB0ZXh0dXJlIGF0IHRoZSBzdGVuY2lsIGF0dGFjaG1lbnQgdG8gYmUgbm9uLXN0ZW5jaWwtcmVu
ZGVyYWJsZS4KKyAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBHTF9S
R0JBOCwgMTYsIDE2KTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0lOQ09N
UExFVEVfQVRUQUNITUVOVCwKKyAgICAgICAgICAgICAgICAgICAgIGdsQ2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9
CisKKy8vIFRlc3QgdGhhdCBGcmFtZWJ1ZmZlciBjb21wbGV0ZW5lc3MgY2FjaGluZyB3b3JrcyB3
aGVuIGRlcHRoLXN0ZW5jaWwgYXR0YWNobWVudHMgY2hhbmdlLgorVEVTVF9QKFN0YXRlQ2hhbmdl
VGVzdCwgRnJhbWVidWZmZXJJbmNvbXBsZXRlRGVwdGhTdGVuY2lsQXR0YWNobWVudCkKK3sKKyAg
ICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFleHRlbnNpb25FbmFibGVkKCJH
TF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8
PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgcGFja2VkIGRlcHRoK3N0ZW5jaWwgbm90IGF2YWlsYmxl
LiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKElzV2lu
ZG93cygpICYmIElzSW50ZWwoKSAmJiBJc09wZW5HTCgpKQorICAgIHsKKyAgICAgICAgLy8gVE9E
TyhqbWFkaWxsKTogSW52ZXN0aWdhdGUgdGhlIGZhaWx1cmUgKGh0dHBzOi8vYW5nbGVidWcuY29t
LzEzODgpCisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxlZCBvbiBXaW5kb3dzIElu
dGVsIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZmZXIpOworICAgIGds
QmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdKTsKKyAgICBnbFRleEltYWdl
MkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMTYsIDE2LCAwLCBHTF9SR0JBLCBHTF9VTlNJ
R05FRF9CWVRFLCBudWxscHRyKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1F
QlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBd
LCAwKTsKKyAgICBnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtUmVuZGVyYnVm
ZmVyKTsKKyAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBHTF9ERVBU
SDI0X1NURU5DSUw4LCAxNiwgMTYpOworICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xf
RlJBTUVCVUZGRVIsIEdMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVGRkVS
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVJlbmRlcmJ1ZmZlcik7CisgICAgRVhQ
RUNUX0dMRU5VTV9FUShHTF9GUkFNRUJVRkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7CisKKyAgICAvLyBDaGFuZ2UgdGhlIHRleHR1cmUgdGhl
IGRlcHRoLXN0ZW5jaWwgYXR0YWNobWVudCB0byBiZSBub24tZGVwdGgtc3RlbmNpbC1yZW5kZXJh
YmxlLgorICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZGRVIsIEdMX1JHQkE4
LCAxNiwgMTYpOworICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVU
RV9BVFRBQ0hNRU5ULAorICAgICAgICAgICAgICAgICAgICAgZ2xDaGVja0ZyYW1lYnVmZmVyU3Rh
dHVzKEdMX0ZSQU1FQlVGRkVSKSk7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKK30KKwor
Ly8gRW5zdXJlIHRoYXQgQ29weVRleFN1YkltYWdlM0Qgc3luY3MgZnJhbWVidWZmZXIgY2hhbmdl
cy4KK1RFU1RfUChTdGF0ZUNoYW5nZVRlc3RFUzMsIENvcHlUZXhTdWJJbWFnZTNEU3luYykKK3sK
KyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVyKTsKKwor
ICAgIC8vIEluaXQgZmlyc3QgdGV4dHVyZSB0byByZWQKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RF
WFRVUkVfM0QsIG1UZXh0dXJlc1swXSk7CisgICAgZ2xUZXhJbWFnZTNEKEdMX1RFWFRVUkVfM0Qs
IDAsIEdMX1JHQkEsIDE2LCAxNiwgMTYsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51
bGxwdHIpOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0xfRlJBTUVCVUZGRVIsIEdM
X0NPTE9SX0FUVEFDSE1FTlQwLCBtVGV4dHVyZXNbMF0sIDAsIDApOworICAgIGdsQ2xlYXJDb2xv
cigxLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9C
SVQpOworICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAyNTUsIDAsIDAsIDI1NSk7CisKKyAgICAv
LyBJbml0IHNlY29uZCB0ZXh0dXJlIHRvIGdyZWVuCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFXzNELCBtVGV4dHVyZXNbMV0pOworICAgIGdsVGV4SW1hZ2UzRChHTF9URVhUVVJFXzNELCAw
LCBHTF9SR0JBLCAxNiwgMTYsIDE2LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxs
cHRyKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9D
T0xPUl9BVFRBQ0hNRU5UMCwgbVRleHR1cmVzWzFdLCAwLCAwKTsKKyAgICBnbENsZWFyQ29sb3Io
MC4wZiwgMS4wZiwgMC4wZiwgMS4wZik7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklU
KTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMCwgMjU1LCAwLCAyNTUpOworCisgICAgLy8g
Q29weSBpbiB0aGUgcmVkIHRleHR1cmUgdG8gdGhlIGdyZWVuIG9uZS4KKyAgICAvLyBDb3B5VGV4
SW1hZ2Ugc2hvdWxkIHN5bmMgdGhlIGZyYW1lYnVmZmVyIGF0dGFjaG1lbnQgY2hhbmdlLgorICAg
IGdsRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFD
SE1FTlQwLCBtVGV4dHVyZXNbMF0sIDAsIDApOworICAgIGdsQ29weVRleFN1YkltYWdlM0QoR0xf
VEVYVFVSRV8zRCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYsIDE2KTsKKyAgICBnbEZyYW1lYnVmZmVy
VGV4dHVyZUxheWVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgbVRleHR1
cmVzWzFdLCAwLCAwKTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMjU1LCAwLCAwLCAyNTUp
OworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIEVuc3VyZSB0aGF0IEJsaXRG
cmFtZWJ1ZmZlciBzeW5jcyBmcmFtZWJ1ZmZlciBjaGFuZ2VzLgorVEVTVF9QKFN0YXRlQ2hhbmdl
VGVzdEVTMywgQmxpdEZyYW1lYnVmZmVyU3luYykKK3sKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihH
TF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVyKTsKKworICAgIC8vIEluaXQgZmlyc3QgdGV4dHVy
ZSB0byByZWQKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7
CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDE2LCAxNiwgMCwg
R0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7CisgICAgZ2xGcmFtZWJ1ZmZlclRl
eHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVf
MkQsIG1UZXh0dXJlc1swXSwgMCk7CisgICAgZ2xDbGVhckNvbG9yKDEuMGYsIDAuMGYsIDAuMGYs
IDEuMGYpOworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgRVhQRUNUX1BJ
WEVMX0VRKDAsIDAsIDI1NSwgMCwgMCwgMjU1KTsKKworICAgIC8vIEluaXQgc2Vjb25kIHRleHR1
cmUgdG8gZ3JlZW4KKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sx
XSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDE2LCAxNiwg
MCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7CisgICAgZ2xGcmFtZWJ1ZmZl
clRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRV
UkVfMkQsIG1UZXh0dXJlc1sxXSwgMCk7CisgICAgZ2xDbGVhckNvbG9yKDAuMGYsIDEuMGYsIDAu
MGYsIDEuMGYpOworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgRVhQRUNU
X1BJWEVMX0VRKDAsIDAsIDAsIDI1NSwgMCwgMjU1KTsKKworICAgIC8vIENoYW5nZSB0byB0aGUg
cmVkIHRleHR1cmVzIGFuZCBibGl0LgorICAgIC8vIEJsaXRGcmFtZWJ1ZmZlciBzaG91bGQgc3lu
YyB0aGUgZnJhbWVidWZmZXIgYXR0YWNobWVudCBjaGFuZ2UuCisgICAgZ2xCaW5kRnJhbWVidWZm
ZXIoR0xfRFJBV19GUkFNRUJVRkZFUiwgMCk7CisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChH
TF9SRUFEX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwg
bVRleHR1cmVzWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisgICAgZ2xCbGl0
RnJhbWVidWZmZXIoMCwgMCwgMTYsIDE2LCAwLCAwLCAxNiwgMTYsIEdMX0NPTE9SX0JVRkZFUl9C
SVQsIEdMX05FQVJFU1QpOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJBTUVCVUZG
RVIsIDApOworICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAyNTUsIDAsIDAsIDI1NSk7CisKKyAg
ICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKK30KKworLy8gRW5zdXJlIHRoYXQgUmVhZEJ1ZmZlciBh
bmQgRHJhd0J1ZmZlcnMgc3luYyBmcmFtZWJ1ZmZlciBjaGFuZ2VzLgorVEVTVF9QKFN0YXRlQ2hh
bmdlVGVzdEVTMywgUmVhZEJ1ZmZlckFuZERyYXdCdWZmZXJzU3luYykKK3sKKyAgICBnbEJpbmRG
cmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVyKTsKKworICAgIC8vIEluaXRp
YWxpemUgdHdvIEZCTyBhdHRhY2htZW50cworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8y
RCwgbVRleHR1cmVzWzBdKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xf
UkdCQSwgMTYsIDE2LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKKyAg
ICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hN
RU5UMCwgR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdLCAwKTsKKyAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sxXSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRV
UkVfMkQsIDAsIEdMX1JHQkEsIDE2LCAxNiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwg
bnVsbHB0cik7CisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xf
Q09MT1JfQVRUQUNITUVOVDEsIEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sxXSwgMCk7CisKKyAg
ICAvLyBDbGVhciBmaXJzdCBhdHRhY2htZW50IHRvIHJlZAorICAgIEdMZW51bSBidWZzMVtdID0g
e0dMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9OT05FfTsKKyAgICBnbERyYXdCdWZmZXJzKDIsIGJ1
ZnMxKTsKKyAgICBnbENsZWFyQ29sb3IoMS4wZiwgMC4wZiwgMC4wZiwgMS4wZik7CisgICAgZ2xD
bGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAgIC8vIENsZWFyIHNlY29uZCB0ZXh0dXJl
IHRvIGdyZWVuCisgICAgR0xlbnVtIGJ1ZnMyW10gPSB7R0xfTk9ORSwgR0xfQ09MT1JfQVRUQUNI
TUVOVDF9OworICAgIGdsRHJhd0J1ZmZlcnMoMiwgYnVmczIpOworICAgIGdsQ2xlYXJDb2xvcigw
LjBmLCAxLjBmLCAwLjBmLCAxLjBmKTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQp
OworCisgICAgLy8gVmVyaWZ5IGZpcnN0IGF0dGFjaG1lbnQgaXMgcmVkIGFuZCBzZWNvbmQgaXMg
Z3JlZW4KKyAgICBnbFJlYWRCdWZmZXIoR0xfQ09MT1JfQVRUQUNITUVOVDEpOworICAgIEVYUEVD
VF9QSVhFTF9FUSgwLCAwLCAwLCAyNTUsIDAsIDI1NSk7CisKKyAgICBnbFJlYWRCdWZmZXIoR0xf
Q09MT1JfQVRUQUNITUVOVDApOworICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAyNTUsIDAsIDAs
IDI1NSk7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKK30KKworLy8gVGVzdHMgY2FsbGlu
ZyBpbnZhbGlkYXRlIG9uIGluY29tcGxldGUgZnJhbWVidWZmZXJzIGFmdGVyIHN3aXRjaGluZyBh
dHRhY2htZW50cy4KKy8vIEFkYXB0ZWQgcGFydGlhbGx5IGZyb20gV2ViR0wgMiB0ZXN0ICJyZW5k
ZXJidWZmZXJzL2ludmFsaWRhdGUtZnJhbWVidWZmZXIiCitURVNUX1AoU3RhdGVDaGFuZ2VUZXN0
RVMzLCBJbmNvbXBsZXRlUmVuZGVyYnVmZmVyQXR0YWNobWVudEludmFsaWRhdGVTeW5jKQorewor
ICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZmZXIpOworICAg
IGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1SZW5kZXJidWZmZXIpOworICAg
IEdMaW50IHNhbXBsZXMgPSAwOworICAgIGdsR2V0SW50ZXJuYWxmb3JtYXRpdihHTF9SRU5ERVJC
VUZGRVIsIEdMX1JHQkE4LCBHTF9TQU1QTEVTLCAxLCAmc2FtcGxlcyk7CisgICAgZ2xGcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdM
X1JFTkRFUkJVRkZFUiwgbVJlbmRlcmJ1ZmZlcik7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
CisKKyAgICAvLyBpbnZhbGlkYXRlIHRoZSBmcmFtZWJ1ZmZlciB3aGVuIHRoZSBhdHRhY2htZW50
IGlzIGluY29tcGxldGU6IG5vIHN0b3JhZ2UgYWxsb2NhdGVkIHRvIHRoZQorICAgIC8vIGF0dGFj
aGVkIHJlbmRlcmJ1ZmZlcgorICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfSU5D
T01QTEVURV9BVFRBQ0hNRU5ULAorICAgICAgICAgICAgICAgICAgICAgZ2xDaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7CisgICAgR0xlbnVtIGF0dGFjaG1lbnRzMVtdID0g
e0dMX0NPTE9SX0FUVEFDSE1FTlQwfTsKKyAgICBnbEludmFsaWRhdGVGcmFtZWJ1ZmZlcihHTF9G
UkFNRUJVRkZFUiwgMSwgYXR0YWNobWVudHMxKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
KworICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdMX1JFTkRFUkJVRkZFUiwg
c3RhdGljX2Nhc3Q8R0xzaXplaT4oc2FtcGxlcyksIEdMX1JHQkE4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgp
KTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFLCBnbENoZWNr
RnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKKyAgICBnbENsZWFyKEdMX0NPTE9S
X0JVRkZFUl9CSVQpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgR0xSZW5kZXJi
dWZmZXIgcmVuZGVyYnVmOworCisgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZF
UiwgcmVuZGVyYnVmLmdldCgpKTsKKyAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZS
QU1FQlVGRkVSLCBHTF9ERVBUSF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJidWYuZ2V0KCkpOworICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOworCisgICAgLy8gaW52YWxpZGF0ZSB0aGUgZnJhbWVidWZmZXIgd2hlbiB0aGUg
YXR0YWNobWVudCBpcyBpbmNvbXBsZXRlOiBubyBzdG9yYWdlIGFsbG9jYXRlZCB0byB0aGUKKyAg
ICAvLyBhdHRhY2hlZCByZW5kZXJidWZmZXIKKyAgICAvLyBOb3RlOiB0aGUgYnVnIHdpbGwgb25s
eSByZXBybyAqd2l0aG91dCogYSBjYWxsIHRvIGNoZWNrU3RhdHVzIGJlZm9yZSB0aGUgaW52YWxp
ZGF0ZS4KKyAgICBHTGVudW0gYXR0YWNobWVudHMyW10gPSB7R0xfREVQVEhfQVRUQUNITUVOVH07
CisgICAgZ2xJbnZhbGlkYXRlRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDEsIGF0dGFjaG1l
bnRzMik7CisKKyAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHTF9SRU5ERVJC
VUZGRVIsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHNhbXBsZXMpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX0RFUFRIX0NPTVBPTkVOVDE2LCBnZXRXaW5kb3dXaWR0aCgp
LCBnZXRXaW5kb3dIZWlnaHQoKSk7CisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GUkFNRUJVRkZF
Ul9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7Cisg
ICAgZ2xDbGVhcihHTF9ERVBUSF9CVUZGRVJfQklUKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1Io
KTsKK30KKworY2xhc3MgU3RhdGVDaGFuZ2VSZW5kZXJUZXN0IDogcHVibGljIFN0YXRlQ2hhbmdl
VGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgU3RhdGVDaGFuZ2VSZW5kZXJUZXN0KCkgOiBtUHJv
Z3JhbSgwKSwgbVJlbmRlcmJ1ZmZlcigwKSB7fQorCisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRl
CisgICAgeworICAgICAgICBTdGF0ZUNoYW5nZVRlc3Q6OlNldFVwKCk7CisKKyAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0KKyAgICAgICAgICAgICJhdHRyaWJ1
dGUgdmVjMiBwb3NpdGlvbjtcbiIKKyAgICAgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAg
ICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMCwgMSk7XG4iCisgICAg
ICAgICAgICAifSI7CisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291
cmNlID0KKyAgICAgICAgICAgICJ1bmlmb3JtIGhpZ2hwIHZlYzQgdW5pZm9ybUNvbG9yO1xuIgor
ICAgICAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgICAgICIgICAgZ2xfRnJhZ0Nv
bG9yID0gdW5pZm9ybUNvbG9yO1xuIgorICAgICAgICAgICAgIn0iOworCisgICAgICAgIG1Qcm9n
cmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNv
dXJjZSk7CisgICAgICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOworCisgICAgICAgIGdsR2Vu
UmVuZGVyYnVmZmVycygxLCAmbVJlbmRlcmJ1ZmZlcik7CisgICAgfQorCisgICAgdm9pZCBUZWFy
RG93bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0p
OworICAgICAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1SZW5kZXJidWZmZXIpOworCisg
ICAgICAgIFN0YXRlQ2hhbmdlVGVzdDo6VGVhckRvd24oKTsKKyAgICB9CisKKyAgICB2b2lkIHNl
dFVuaWZvcm1Db2xvcihjb25zdCBHTENvbG9yICZjb2xvcikKKyAgICB7CisgICAgICAgIGdsVXNl
UHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgICAgIGNvbnN0IFZlY3RvcjQgJm5vcm1hbGl6ZWRDb2xv
ciA9IGNvbG9yLnRvTm9ybWFsaXplZFZlY3RvcigpOworICAgICAgICBHTGludCB1bmlmb3JtTG9j
YXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInVuaWZvcm1Db2xvciIpOwor
ICAgICAgICBBU1NFUlRfTkUoLTEsIHVuaWZvcm1Mb2NhdGlvbik7CisgICAgICAgIGdsVW5pZm9y
bTRmdih1bmlmb3JtTG9jYXRpb24sIDEsIG5vcm1hbGl6ZWRDb2xvci5kYXRhKCkpOworICAgIH0K
KworICAgIEdMdWludCBtUHJvZ3JhbTsKKyAgICBHTHVpbnQgbVJlbmRlcmJ1ZmZlcjsKK307CisK
Ky8vIFRlc3QgdGhhdCByZS1jcmVhdGluZyBhIGN1cnJlbnRseSBhdHRhY2hlZCB0ZXh0dXJlIHdv
cmtzIGFzIGV4cGVjdGVkLgorVEVTVF9QKFN0YXRlQ2hhbmdlUmVuZGVyVGVzdCwgUmVjcmVhdGVU
ZXh0dXJlKQoreworICAgIGlmIChJc0ludGVsKCkgJiYgSXNMaW51eCgpKQorICAgIHsKKyAgICAg
ICAgLy8gVE9ETyhjd2FsbGV6KTogRml4IG9uIExpbnV4IEludGVsIGRyaXZlcnMgKGh0dHA6Ly9h
bmdsZWJ1Zy5jb20vMTM0NikKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVkIG9u
IExpbnV4IEludGVsIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZmZXIp
OworCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0pOworICAg
IGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxNiwgMTYsIDAsIEdMX1JH
QkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJl
MkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBt
VGV4dHVyZXNbMF0sIDApOworCisgICAgLy8gRHJhdyB3aXRoIHJlZCB0byB0aGUgRkJPLgorICAg
IEdMQ29sb3IgcmVkKDI1NSwgMCwgMCwgMjU1KTsKKyAgICBzZXRVbmlmb3JtQ29sb3IocmVkKTsK
KyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgRVhQRUNUX1BJ
WEVMX0NPTE9SX0VRKDAsIDAsIHJlZCk7CisKKyAgICAvLyBSZWNyZWF0ZSB0aGUgdGV4dHVyZSB3
aXRoIGdyZWVuLgorICAgIEdMQ29sb3IgZ3JlZW4oMCwgMjU1LCAwLCAyNTUpOworICAgIHN0ZDo6
dmVjdG9yPEdMQ29sb3I+IGdyZWVuUGl4ZWxzKDMyICogMzIsIGdyZWVuKTsKKyAgICBnbFRleElt
YWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMzIsIDMyLCAwLCBHTF9SR0JBLCBHTF9V
TlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICBncmVlblBpeGVscy5kYXRhKCkpOworICAg
IEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBncmVlbik7CisKKyAgICAvLyBWZXJpZnkgZHJh
d2luZyBibHVlIGdpdmVzIGJsdWUuIFRoaXMgY292ZXJzIHRoZSBGQk8gc3luYyB3aXRoIEQzRCBk
aXJ0eSBiaXRzLgorICAgIEdMQ29sb3IgYmx1ZSgwLCAwLCAyNTUsIDI1NSk7CisgICAgc2V0VW5p
Zm9ybUNvbG9yKGJsdWUpOworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVm
KTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgYmx1ZSk7CisKKyAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKK30KKworLy8gVGVzdCB0aGF0IHJlLWNyZWF0aW5nIGEgY3VycmVudGx5
IGF0dGFjaGVkIHJlbmRlcmJ1ZmZlciB3b3JrcyBhcyBleHBlY3RlZC4KK1RFU1RfUChTdGF0ZUNo
YW5nZVJlbmRlclRlc3QsIFJlY3JlYXRlUmVuZGVyYnVmZmVyKQoreworICAgIGdsQmluZEZyYW1l
YnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZmZXIpOworCisgICAgZ2xCaW5kUmVuZGVy
YnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbVJlbmRlcmJ1ZmZlcik7CisgICAgZ2xSZW5kZXJidWZm
ZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgR0xfUkdCQTgsIDE2LCAxNik7CisgICAgZ2xGcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAs
IEdMX1JFTkRFUkJVRkZFUiwgbVJlbmRlcmJ1ZmZlcik7CisKKyAgICAvLyBEcmF3IHdpdGggcmVk
IHRvIHRoZSBGQk8uCisgICAgR0xDb2xvciByZWQoMjU1LCAwLCAwLCAyNTUpOworICAgIHNldFVu
aWZvcm1Db2xvcihyZWQpOworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVm
KTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgcmVkKTsKKworICAgIC8vIFJlY3Jl
YXRlIHRoZSByZW5kZXJidWZmZXIgYW5kIGNsZWFyIHRvIGdyZWVuLgorICAgIGdsUmVuZGVyYnVm
ZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZGRVIsIEdMX1JHQkE4LCAzMiwgMzIpOworICAgIGdsQ2xl
YXJDb2xvcigwLjBmLCAxLjBmLCAwLjBmLCAxLjBmKTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JV
RkZFUl9CSVQpOworICAgIEdMQ29sb3IgZ3JlZW4oMCwgMjU1LCAwLCAyNTUpOworICAgIEVYUEVD
VF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBncmVlbik7CisKKyAgICAvLyBWZXJpZnkgZHJhd2luZyBi
bHVlIGdpdmVzIGJsdWUuIFRoaXMgY292ZXJzIHRoZSBGQk8gc3luYyB3aXRoIEQzRCBkaXJ0eSBi
aXRzLgorICAgIEdMQ29sb3IgYmx1ZSgwLCAwLCAyNTUsIDI1NSk7CisgICAgc2V0VW5pZm9ybUNv
bG9yKGJsdWUpOworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAg
ICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgYmx1ZSk7CisKKyAgICBFWFBFQ1RfR0xfTk9f
RVJST1IoKTsKK30KKworLy8gVGVzdCB0aGF0IHJlY3JlYXRpbmcgYSB0ZXh0dXJlIHdpdGggR2Vu
ZXJhdGVNaXBtYXBzIHNpZ25hbHMgdGhlIEZCTyBpcyBkaXJ0eS4KK1RFU1RfUChTdGF0ZUNoYW5n
ZVJlbmRlclRlc3QsIEdlbmVyYXRlTWlwbWFwKQoreworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdM
X0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZmZXIpOworCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFXzJELCBtVGV4dHVyZXNbMF0pOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAw
LCBHTF9SR0JBLCAxNiwgMTYsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIp
OworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAxLCBHTF9SR0JBLCA4LCA4LCAwLCBH
TF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKKyAgICBnbFRleEltYWdlMkQoR0xf
VEVYVFVSRV8yRCwgMiwgR0xfUkdCQSwgNCwgNCwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllU
RSwgbnVsbHB0cik7CisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwg
R0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSwgMCk7CisK
KyAgICAvLyBEcmF3IG9uY2UgdG8gc2V0IHRoZSBSZW5kZXJUYXJnZXQgaW4gRDNEMTEKKyAgICBH
TENvbG9yIHJlZCgyNTUsIDAsIDAsIDI1NSk7CisgICAgc2V0VW5pZm9ybUNvbG9yKHJlZCk7Cisg
ICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworICAgIEVYUEVDVF9QSVhF
TF9DT0xPUl9FUSgwLCAwLCByZWQpOworCisgICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgdGhlIHRl
eHR1cmUgdG8gYmUgcmUtY3JlYXRlZCBvbiBGTDlfMy4KKyAgICBnbEdlbmVyYXRlTWlwbWFwKEdM
X1RFWFRVUkVfMkQpOworCisgICAgLy8gTm93IGVuc3VyZSB3ZSBkb24ndCBoYXZlIGEgc3RhbGUg
cmVuZGVyIHRhcmdldC4KKyAgICBHTENvbG9yIGJsdWUoMCwgMCwgMjU1LCAyNTUpOworICAgIHNl
dFVuaWZvcm1Db2xvcihibHVlKTsKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwg
MC41Zik7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIGJsdWUpOworCisgICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7Cit9CisKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoU3RhdGVDaGFu
Z2VUZXN0LCBFUzJfRDNEOSgpLCBFUzJfRDNEMTEoKSwgRVMyX09QRU5HTCgpKTsKK0FOR0xFX0lO
U1RBTlRJQVRFX1RFU1QoU3RhdGVDaGFuZ2VSZW5kZXJUZXN0LAorICAgICAgICAgICAgICAgICAg
ICAgICBFUzJfRDNEOSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAg
ICBFUzJfRDNEMTFfRkw5XzMoKSk7CitBTkdMRV9JTlNUQU5USUFURV9URVNUKFN0YXRlQ2hhbmdl
VGVzdEVTMywgRVMzX0QzRDExKCksIEVTM19PUEVOR0woKSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvU3dpenpsZVRlc3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Td2l6emxlVGVz
dC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2dsX3Rlc3RzL1N3aXp6bGVUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0MSBA
QAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKworI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKKyNpbmNs
dWRlIDx2ZWN0b3I+CisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNlCit7CisK
K2NsYXNzIFN3aXp6bGVUZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6Cisg
ICAgU3dpenpsZVRlc3QoKQorICAgIHsKKyAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKKyAg
ICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7CisgICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7
CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQmx1ZUJp
dHMoOCk7CisgICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKKworICAgICAgICBHTGVudW0g
c3dpenpsZXNbXSA9CisgICAgICAgIHsKKyAgICAgICAgICAgIEdMX1JFRCwKKyAgICAgICAgICAg
IEdMX0dSRUVOLAorICAgICAgICAgICAgR0xfQkxVRSwKKyAgICAgICAgICAgIEdMX0FMUEhBLAor
ICAgICAgICAgICAgR0xfWkVSTywKKyAgICAgICAgICAgIEdMX09ORSwKKyAgICAgICAgfTsKKwor
ICAgICAgICBmb3IgKGludCByID0gMDsgciA8IDY7IHIrKykKKyAgICAgICAgeworICAgICAgICAg
ICAgZm9yIChpbnQgZyA9IDA7IGcgPCA2OyBnKyspCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgZm9yIChpbnQgYiA9IDA7IGIgPCA2OyBiKyspCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBmb3IgKGludCBhID0gMDsgYSA8IDY7IGErKykKKyAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgc3dpenpsZVBlcm11dGF0aW9uIHBl
cm11dGF0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgcGVybXV0YXRpb24uc3dpenpsZVJl
ZCA9IHN3aXp6bGVzW3JdOworICAgICAgICAgICAgICAgICAgICAgICAgcGVybXV0YXRpb24uc3dp
enpsZUdyZWVuID0gc3dpenpsZXNbZ107CisgICAgICAgICAgICAgICAgICAgICAgICBwZXJtdXRh
dGlvbi5zd2l6emxlQmx1ZSA9IHN3aXp6bGVzW2JdOworICAgICAgICAgICAgICAgICAgICAgICAg
cGVybXV0YXRpb24uc3dpenpsZUFscGhhID0gc3dpenpsZXNbYV07CisgICAgICAgICAgICAgICAg
ICAgICAgICBtUGVybXV0YXRpb25zLnB1c2hfYmFjayhwZXJtdXRhdGlvbik7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFOR0xF
VGVzdDo6U2V0VXAoKTsKKworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJT
b3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgICAgICgKKyAgICAgICAgICAgIHByZWNpc2lvbiBo
aWdocCBmbG9hdDsKKyAgICAgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uOworICAgICAg
ICAgICAgdmFyeWluZyB2ZWMyIHRleGNvb3JkOworCisgICAgICAgICAgICB2b2lkIG1haW4oKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247Cisg
ICAgICAgICAgICAgICAgdGV4Y29vcmQgPSAocG9zaXRpb24ueHkgKiAwLjUpICsgMC41OworICAg
ICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdt
ZW50U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQorICAgICAgICAoCisgICAgICAgICAgICBw
cmVjaXNpb24gaGlnaHAgZmxvYXQ7CisgICAgICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7
CisgICAgICAgICAgICB2YXJ5aW5nIHZlYzIgdGV4Y29vcmQ7CisKKyAgICAgICAgICAgIHZvaWQg
bWFpbigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdGV4
dHVyZTJEKHRleCwgdGV4Y29vcmQpOworICAgICAgICAgICAgfQorICAgICAgICApOworCisgICAg
ICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVu
dFNoYWRlclNvdXJjZSk7CisgICAgICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOworCisgICAg
ICAgIG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dy
YW0sICJ0ZXgiKTsKKyAgICAgICAgQVNTRVJUX05FKC0xLCBtVGV4dHVyZVVuaWZvcm1Mb2NhdGlv
bik7CisKKyAgICAgICAgZ2xDbGVhckNvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYpOworICAg
ICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAg
ICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0dXJlKTsKKworICAgICAgICBBTkdMRVRlc3Q6
OlRlYXJEb3duKCk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgdm9p
ZCBpbml0MkRUZXh0dXJlKEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xlbnVtIGRhdGFGb3JtYXQs
IEdMZW51bSBkYXRhVHlwZSwgY29uc3QgVCogZGF0YSkKKyAgICB7CisgICAgICAgIGdsR2VuVGV4
dHVyZXMoMSwgJm1UZXh0dXJlKTsKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJE
LCBtVGV4dHVyZSk7CisgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBpbnRl
cm5hbEZvcm1hdCwgMSwgMSwgMCwgZGF0YUZvcm1hdCwgZGF0YVR5cGUsIGRhdGEpOworCisgICAg
ICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIs
IEdMX05FQVJFU1QpOworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICB9CisKKyAgICB2b2lkIGluaXQy
RENvbXByZXNzZWRUZXh0dXJlKEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGF0YVNpemUsIGNvbnN0IEdMdWJ5dGUqIGRhdGEpCisg
ICAgeworICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtVGV4dHVyZSk7CisgICAgICAgIGdsQmlu
ZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUpOworICAgICAgICBnbENvbXByZXNzZWRU
ZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFf
RVhULCB3aWR0aCwgaGVpZ2h0LCAwLCBkYXRhU2l6ZSwgZGF0YSk7CisKKyAgICAgICAgZ2xUZXhQ
YXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVT
VCk7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01B
R19GSUxURVIsIEdMX05FQVJFU1QpOworICAgIH0KKworICAgIEdMdWJ5dGUgZ2V0RXhwZWN0ZWRW
YWx1ZShHTGVudW0gc3dpenpsZSwgR0x1Ynl0ZSB1bnN3aXp6bGVkWzRdKQorICAgIHsKKyAgICAg
ICAgc3dpdGNoIChzd2l6emxlKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9SRUQ6ICAg
cmV0dXJuIHVuc3dpenpsZWRbMF07CisgICAgICAgICAgY2FzZSBHTF9HUkVFTjogcmV0dXJuIHVu
c3dpenpsZWRbMV07CisgICAgICAgICAgY2FzZSBHTF9CTFVFOiAgcmV0dXJuIHVuc3dpenpsZWRb
Ml07CisgICAgICAgICAgY2FzZSBHTF9BTFBIQTogcmV0dXJuIHVuc3dpenpsZWRbM107CisgICAg
ICAgICAgY2FzZSBHTF9aRVJPOiAgcmV0dXJuIDA7CisgICAgICAgICAgY2FzZSBHTF9PTkU6ICAg
cmV0dXJuIDI1NTsKKyAgICAgICAgICBkZWZhdWx0OiAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHZvaWQgcnVuVGVzdDJEKCkKKyAgICB7CisgICAgICAgIC8vIFRPRE8o
am1hZGlsbCk6IEZpZ3VyZSBvdXQgd2h5IHRoaXMgZmFpbHMgb24gSW50ZWwuCisgICAgICAgIGlm
IChJc0ludGVsKCkgJiYgR2V0UGFyYW0oKS5nZXRSZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9B
TkdMRV9UWVBFX09QRU5HTF9BTkdMRSkKKyAgICAgICAgeworICAgICAgICAgICAgc3RkOjpjb3V0
IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworICAg
ICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlKTsKKyAgICAgICAgZ2xV
bmlmb3JtMWkobVRleHR1cmVVbmlmb3JtTG9jYXRpb24sIDApOworCisgICAgICAgIGdsVGV4UGFy
YW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1NXSVpaTEVfUiwgR0xfUkVEKTsKKyAg
ICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfU1dJWlpMRV9H
LCBHTF9HUkVFTik7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX1NXSVpaTEVfQiwgR0xfQkxVRSk7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFXzJELCBHTF9URVhUVVJFX1NXSVpaTEVfQSwgR0xfQUxQSEEpOworCisgICAgICAgIGds
Q2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAi
cG9zaXRpb24iLCAwLjVmKTsKKworICAgICAgICBHTHVieXRlIHVuc3dpenpsZWRbNF07CisgICAg
ICAgIGdsUmVhZFBpeGVscygwLCAwLCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAm
dW5zd2l6emxlZCk7CisKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtUGVybXV0YXRpb25zLnNpemUoKTsgaSsrKQorICAgICAg
ICB7CisgICAgICAgICAgICBjb25zdCBzd2l6emxlUGVybXV0YXRpb24mIHBlcm11dGF0aW9uID0g
bVBlcm11dGF0aW9uc1tpXTsKKworICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRV
UkVfMkQsIEdMX1RFWFRVUkVfU1dJWlpMRV9SLCBwZXJtdXRhdGlvbi5zd2l6emxlUmVkKTsKKyAg
ICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1NXSVpa
TEVfRywgcGVybXV0YXRpb24uc3dpenpsZUdyZWVuKTsKKyAgICAgICAgICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1NXSVpaTEVfQiwgcGVybXV0YXRpb24uc3dp
enpsZUJsdWUpOworICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdM
X1RFWFRVUkVfU1dJWlpMRV9BLCBwZXJtdXRhdGlvbi5zd2l6emxlQWxwaGEpOworCisgICAgICAg
ICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAgICAgICAgICAgZHJhd1F1YWQo
bVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworCisgICAgICAgICAgICBFWFBFQ1RfUElYRUxf
RVEoMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRFeHBlY3RlZFZhbHVlKHBl
cm11dGF0aW9uLnN3aXp6bGVSZWQsIHVuc3dpenpsZWQpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdldEV4cGVjdGVkVmFsdWUocGVybXV0YXRpb24uc3dpenpsZUdyZWVuLCB1bnN3aXp6
bGVkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRFeHBlY3RlZFZhbHVlKHBlcm11
dGF0aW9uLnN3aXp6bGVCbHVlLCB1bnN3aXp6bGVkKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnZXRFeHBlY3RlZFZhbHVlKHBlcm11dGF0aW9uLnN3aXp6bGVBbHBoYSwgdW5zd2l6emxl
ZCkpOworCisgICAgICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIEdMdWludCBtUHJvZ3JhbTsKKyAgICBHTGludCBtVGV4dHVyZVVuaWZvcm1Mb2Nh
dGlvbjsKKworICAgIEdMdWludCBtVGV4dHVyZTsKKworICAgIHN0cnVjdCBzd2l6emxlUGVybXV0
YXRpb24KKyAgICB7CisgICAgICAgIEdMZW51bSBzd2l6emxlUmVkOworICAgICAgICBHTGVudW0g
c3dpenpsZUdyZWVuOworICAgICAgICBHTGVudW0gc3dpenpsZUJsdWU7CisgICAgICAgIEdMZW51
bSBzd2l6emxlQWxwaGE7CisgICAgfTsKKyAgICBzdGQ6OnZlY3Rvcjxzd2l6emxlUGVybXV0YXRp
b24+IG1QZXJtdXRhdGlvbnM7Cit9OworCitjbGFzcyBTd2l6emxlSW50ZWdlclRlc3QgOiBwdWJs
aWMgU3dpenpsZVRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIHZvaWQgU2V0VXAoKSBvdmVycmlk
ZQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOworCisgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9CisgICAgICAgICAgICAiI3ZlcnNpb24gMzAw
IGVzXG4iCisgICAgICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgorICAgICAgICAg
ICAgImluIHZlYzQgcG9zaXRpb247XG4iCisgICAgICAgICAgICAib3V0IHZlYzIgdGV4Y29vcmQ7
XG4iCisgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAg
ICAgICAgICJ7XG4iCisgICAgICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247XG4i
CisgICAgICAgICAgICAiICAgIHRleGNvb3JkID0gKHBvc2l0aW9uLnh5ICogMC41KSArIDAuNTtc
biIKKyAgICAgICAgICAgICJ9XG4iOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdt
ZW50U2hhZGVyU291cmNlID0KKyAgICAgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAg
ICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCisgICAgICAgICAgICAicHJlY2lzaW9u
IGhpZ2hwIHVzYW1wbGVyMkQ7XG4iCisgICAgICAgICAgICAidW5pZm9ybSB1c2FtcGxlcjJEIHRl
eDtcbiIKKyAgICAgICAgICAgICJpbiB2ZWMyIHRleGNvb3JkO1xuIgorICAgICAgICAgICAgIm91
dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICJ2
b2lkIG1haW4oKVxuIgorICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICIgICAgdXZlYzQg
cyA9IHRleHR1cmUodGV4LCB0ZXhjb29yZCk7XG4iCisgICAgICAgICAgICAiICAgIGlmIChzWzBd
ID09IDF1KSBzWzBdID0gMjU1dTtcbiIKKyAgICAgICAgICAgICIgICAgaWYgKHNbMV0gPT0gMXUp
IHNbMV0gPSAyNTV1O1xuIgorICAgICAgICAgICAgIiAgICBpZiAoc1syXSA9PSAxdSkgc1syXSA9
IDI1NXU7XG4iCisgICAgICAgICAgICAiICAgIGlmIChzWzNdID09IDF1KSBzWzNdID0gMjU1dTtc
biIKKyAgICAgICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNChzKSAvIDI1NS4wO1xuIgor
ICAgICAgICAgICAgIn1cbiI7CisKKyAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2
ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKKyAgICAgICAgQVNTRVJU
X05FKDB1LCBtUHJvZ3JhbSk7CisKKyAgICAgICAgbVRleHR1cmVVbmlmb3JtTG9jYXRpb24gPSBn
bEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInRleCIpOworICAgICAgICBBU1NFUlRfTkUo
LTEsIG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9uKTsKKworICAgICAgICBnbENsZWFyQ29sb3IoMC4w
ZiwgMC4wZiwgMC4wZiwgMC4wZik7CisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAg
IH0KK307CisKK1RFU1RfUChTd2l6emxlVGVzdCwgUkdCQThfMkQpCit7CisgICAgR0x1Ynl0ZSBk
YXRhW10gPSB7IDEsIDY0LCAxMjgsIDIwMCB9OworICAgIGluaXQyRFRleHR1cmUoR0xfUkdCQTgs
IEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGRhdGEpOworICAgIHJ1blRlc3QyRCgpOworfQor
CitURVNUX1AoU3dpenpsZVRlc3QsIFJHQjhfMkQpCit7CisgICAgR0x1Ynl0ZSBkYXRhW10gPSB7
IDc3LCA2NiwgNTUgfTsKKyAgICBpbml0MkRUZXh0dXJlKEdMX1JHQjgsIEdMX1JHQiwgR0xfVU5T
SUdORURfQllURSwgZGF0YSk7CisgICAgcnVuVGVzdDJEKCk7Cit9CisKK1RFU1RfUChTd2l6emxl
VGVzdCwgUkc4XzJEKQoreworICAgIEdMdWJ5dGUgZGF0YVtdID0geyAxMSwgOTkgfTsKKyAgICBp
bml0MkRUZXh0dXJlKEdMX1JHOCwgR0xfUkcsIEdMX1VOU0lHTkVEX0JZVEUsIGRhdGEpOworICAg
IHJ1blRlc3QyRCgpOworfQorCitURVNUX1AoU3dpenpsZVRlc3QsIFI4XzJEKQoreworICAgIEdM
dWJ5dGUgZGF0YVtdID0geyAyIH07CisgICAgaW5pdDJEVGV4dHVyZShHTF9SOCwgR0xfUkVELCBH
TF9VTlNJR05FRF9CWVRFLCBkYXRhKTsKKyAgICBydW5UZXN0MkQoKTsKK30KKworVEVTVF9QKFN3
aXp6bGVUZXN0LCBSR0IxMF9BMl8yRCkKK3sKKyAgICBHTHVpbnQgZGF0YVtdID0gezIwdSB8ICg0
MHUgPDwgMTApIHwgKDYwdSA8PCAyMCkgfCAoMnUgPDwgMzApfTsKKyAgICBpbml0MkRUZXh0dXJl
KEdMX1JHQjEwX0EyLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYsIGRh
dGEpOworICAgIHJ1blRlc3QyRCgpOworfQorCitURVNUX1AoU3dpenpsZVRlc3QsIFJHQkEzMkZf
MkQpCit7CisgICAgR0xmbG9hdCBkYXRhW10gPSB7IDAuMjVmLCAwLjVmLCAwLjc1ZiwgMC44ZiB9
OworICAgIGluaXQyRFRleHR1cmUoR0xfUkdCQTMyRiwgR0xfUkdCQSwgR0xfRkxPQVQsIGRhdGEp
OworICAgIHJ1blRlc3QyRCgpOworfQorCitURVNUX1AoU3dpenpsZVRlc3QsIFJHQjMyRl8yRCkK
K3sKKyAgICBHTGZsb2F0IGRhdGFbXSA9IHsgMC4xZiwgMC4yZiwgMC4zZiB9OworICAgIGluaXQy
RFRleHR1cmUoR0xfUkdCMzJGLCBHTF9SR0IsIEdMX0ZMT0FULCBkYXRhKTsKKyAgICBydW5UZXN0
MkQoKTsKK30KKworVEVTVF9QKFN3aXp6bGVUZXN0LCBSRzMyRl8yRCkKK3sKKyAgICBHTGZsb2F0
IGRhdGFbXSA9IHsgMC45ZiwgMC4xZiAgfTsKKyAgICBpbml0MkRUZXh0dXJlKEdMX1JHMzJGLCBH
TF9SRywgR0xfRkxPQVQsIGRhdGEpOworICAgIHJ1blRlc3QyRCgpOworfQorCitURVNUX1AoU3dp
enpsZVRlc3QsIFIzMkZfMkQpCit7CisgICAgR0xmbG9hdCBkYXRhW10gPSB7IDAuNWYgfTsKKyAg
ICBpbml0MkRUZXh0dXJlKEdMX1IzMkYsIEdMX1JFRCwgR0xfRkxPQVQsIGRhdGEpOworICAgIHJ1
blRlc3QyRCgpOworfQorCitURVNUX1AoU3dpenpsZVRlc3QsIEQzMkZfMkQpCit7CisgICAgR0xm
bG9hdCBkYXRhW10gPSB7IDAuNWYgfTsKKyAgICBpbml0MkRUZXh0dXJlKEdMX0RFUFRIX0NPTVBP
TkVOVDMyRiwgR0xfREVQVEhfQ09NUE9ORU5ULCBHTF9GTE9BVCwgZGF0YSk7CisgICAgcnVuVGVz
dDJEKCk7Cit9CisKK1RFU1RfUChTd2l6emxlVGVzdCwgRDE2XzJEKQoreworICAgIEdMdXNob3J0
IGRhdGFbXSA9IHsgMHhGRiB9OworICAgIGluaXQyRFRleHR1cmUoR0xfREVQVEhfQ09NUE9ORU5U
MTYsIEdMX0RFUFRIX0NPTVBPTkVOVCwgR0xfVU5TSUdORURfU0hPUlQsIGRhdGEpOworICAgIHJ1
blRlc3QyRCgpOworfQorCitURVNUX1AoU3dpenpsZVRlc3QsIEQyNF8yRCkKK3sKKyAgICBHTHVp
bnQgZGF0YVtdID0geyAweEZGRkYgfTsKKyAgICBpbml0MkRUZXh0dXJlKEdMX0RFUFRIX0NPTVBP
TkVOVDI0LCBHTF9ERVBUSF9DT01QT05FTlQsIEdMX1VOU0lHTkVEX0lOVCwgZGF0YSk7CisgICAg
cnVuVGVzdDJEKCk7Cit9CisKK1RFU1RfUChTd2l6emxlVGVzdCwgTDhfMkQpCit7CisgICAgR0x1
Ynl0ZSBkYXRhW10gPSB7MHg3N307CisgICAgaW5pdDJEVGV4dHVyZShHTF9MVU1JTkFOQ0UsIEdM
X0xVTUlOQU5DRSwgR0xfVU5TSUdORURfQllURSwgZGF0YSk7CisgICAgcnVuVGVzdDJEKCk7Cit9
CisKK1RFU1RfUChTd2l6emxlVGVzdCwgQThfMkQpCit7CisgICAgR0x1Ynl0ZSBkYXRhW10gPSB7
MHg1NX07CisgICAgaW5pdDJEVGV4dHVyZShHTF9BTFBIQSwgR0xfQUxQSEEsIEdMX1VOU0lHTkVE
X0JZVEUsIGRhdGEpOworICAgIHJ1blRlc3QyRCgpOworfQorCitURVNUX1AoU3dpenpsZVRlc3Qs
IExBOF8yRCkKK3sKKyAgICBHTHVieXRlIGRhdGFbXSA9IHsweDc3LCAweDY2fTsKKyAgICBpbml0
MkRUZXh0dXJlKEdMX0xVTUlOQU5DRV9BTFBIQSwgR0xfTFVNSU5BTkNFX0FMUEhBLCBHTF9VTlNJ
R05FRF9CWVRFLCBkYXRhKTsKKyAgICBydW5UZXN0MkQoKTsKK30KKworVEVTVF9QKFN3aXp6bGVU
ZXN0LCBMMzJGXzJEKQoreworICAgIEdMZmxvYXQgZGF0YVtdID0gezAuN2Z9OworICAgIGluaXQy
RFRleHR1cmUoR0xfTFVNSU5BTkNFLCBHTF9MVU1JTkFOQ0UsIEdMX0ZMT0FULCBkYXRhKTsKKyAg
ICBydW5UZXN0MkQoKTsKK30KKworVEVTVF9QKFN3aXp6bGVUZXN0LCBBMzJGXzJEKQoreworICAg
IEdMZmxvYXQgZGF0YVtdID0geworICAgICAgICAwLjRmLAorICAgIH07CisgICAgaW5pdDJEVGV4
dHVyZShHTF9BTFBIQSwgR0xfQUxQSEEsIEdMX0ZMT0FULCBkYXRhKTsKKyAgICBydW5UZXN0MkQo
KTsKK30KKworVEVTVF9QKFN3aXp6bGVUZXN0LCBMQTMyRl8yRCkKK3sKKyAgICBHTGZsb2F0IGRh
dGFbXSA9IHsKKyAgICAgICAgMC41ZiwgMC42ZiwKKyAgICB9OworICAgIGluaXQyRFRleHR1cmUo
R0xfTFVNSU5BTkNFX0FMUEhBLCBHTF9MVU1JTkFOQ0VfQUxQSEEsIEdMX0ZMT0FULCBkYXRhKTsK
KyAgICBydW5UZXN0MkQoKTsKK30KKworI2luY2x1ZGUgIm1lZGlhL3BpeGVsLmlubCIKKworVEVT
VF9QKFN3aXp6bGVUZXN0LCBDb21wcmVzc2VkRFhUXzJEKQoreworICAgIGlmICghZXh0ZW5zaW9u
RW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIpKQorICAgIHsKKyAgICAg
ICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgZHVlIHRvIG1pc3NpbmcgR0xfRVhUX3RleHR1
cmVfY29tcHJlc3Npb25fZHh0MS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGluaXQyRENvbXByZXNzZWRUZXh0dXJlKEdMX0NPTVBSRVNTRURfUkdCQV9TM1RD
X0RYVDFfRVhULCBwaXhlbF8wX3dpZHRoLCBwaXhlbF8wX2hlaWdodCwgcGl4ZWxfMF9zaXplLCBw
aXhlbF8wX2RhdGEpOworICAgIHJ1blRlc3QyRCgpOworfQorCitURVNUX1AoU3dpenpsZUludGVn
ZXJUZXN0LCBSR0I4VUlfMkQpCit7CisgICAgR0x1Ynl0ZSBkYXRhW10gPSB7NzcsIDY2LCA1NX07
CisgICAgaW5pdDJEVGV4dHVyZShHTF9SR0I4VUksIEdMX1JHQl9JTlRFR0VSLCBHTF9VTlNJR05F
RF9CWVRFLCBkYXRhKTsKKyAgICBydW5UZXN0MkQoKTsKK30KKworLy8gVGVzdCB0aGF0IHVwZGF0
aW5nIHRoZSB0ZXh0dXJlIGRhdGEgc3RpbGwgZ2VuZXJhdGVzIHRoZSBjb3JyZWN0IHN3aXp6bGVz
CitURVNUX1AoU3dpenpsZVRlc3QsIFN1YlVwZGF0ZSkKK3sKKyAgICBHTENvbG9yIGRhdGEoMSwg
NjQsIDEyOCwgMjAwKTsKKyAgICBpbml0MkRUZXh0dXJlKEdMX1JHQkE4LCBHTF9SR0JBLCBHTF9V
TlNJR05FRF9CWVRFLCAmZGF0YSk7CisKKyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworICAg
IGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUpOworICAgIGdsVW5pZm9ybTFp
KG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9uLCAwKTsKKworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFXzJELCBHTF9URVhUVVJFX1NXSVpaTEVfUiwgR0xfUkVEKTsKKyAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9TV0laWkxFX0csIEdMX1JFRCk7CisgICAg
Z2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfU1dJWlpMRV9CLCBHTF9S
RUQpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1NXSVpa
TEVfQSwgR0xfUkVEKTsKKworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAg
ZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworCisgICAgR0xDb2xvciBleHBl
Y3RlZERhdGEoZGF0YS5SLCBkYXRhLlIsIGRhdGEuUiwgZGF0YS5SKTsKKyAgICBFWFBFQ1RfUElY
RUxfQ09MT1JfRVEoMCwgMCwgZXhwZWN0ZWREYXRhKTsKKworICAgIEdMQ29sb3IgdXBkYXRlRGF0
YSgzMiwgMjM0LCAyOCwgMjMyKTsKKyAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwg
MCwgMCwgMCwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgJnVwZGF0ZURhdGEpOwor
CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBkcmF3UXVhZChtUHJvZ3Jh
bSwgInBvc2l0aW9uIiwgMC41Zik7CisKKyAgICBHTENvbG9yIGV4cGVjdGVkVXBkYXRlRGF0YSh1
cGRhdGVEYXRhLlIsIHVwZGF0ZURhdGEuUiwgdXBkYXRlRGF0YS5SLCB1cGRhdGVEYXRhLlIpOwor
ICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBleHBlY3RlZFVwZGF0ZURhdGEpOworfQor
CisvLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2gg
cmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJl
IHJ1biBhZ2FpbnN0LgorQU5HTEVfSU5TVEFOVElBVEVfVEVTVChTd2l6emxlVGVzdCwgRVMzX0Qz
RDExKCksIEVTM19PUEVOR0woKSwgRVMzX09QRU5HTCgzLCAzKSwgRVMzX09QRU5HTEVTKCkpOwor
QU5HTEVfSU5TVEFOVElBVEVfVEVTVChTd2l6emxlSW50ZWdlclRlc3QsCisgICAgICAgICAgICAg
ICAgICAgICAgIEVTM19EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdM
KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woMywgMyksCisgICAgICAgICAg
ICAgICAgICAgICAgIEVTM19PUEVOR0xFUygpKTsKKworfSAvLyBuYW1lc3BhY2UKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9TeW5jUXVlcmllc1Rlc3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90
ZXN0cy9TeW5jUXVlcmllc1Rlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9TeW5jUXVlcmllc1Rlc3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTA4IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBTeW5jUXVlcmllc1Rlc3Qu
Y3BwOiBUZXN0cyBvZiB0aGUgR0xfQ0hST01JVU1fc3luY19xdWVyeSBleHRlbnNpb24KKworI2lu
Y2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKK25hbWVzcGFjZSBhbmdsZQoreworCitj
bGFzcyBTeW5jUXVlcmllc1Rlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoK
KyAgICBTeW5jUXVlcmllc1Rlc3QoKQorICAgIHsKKyAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4
KTsKKyAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7CisgICAgICAgIHNldENvbmZpZ1JlZEJp
dHMoOCk7CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmln
Qmx1ZUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKKyAgICAgICAgc2V0
Q29uZmlnRGVwdGhCaXRzKDI0KTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIGlmIChtUXVlcnkgIT0gMCkKKyAgICAgICAgeworICAgICAgICAg
ICAgZ2xEZWxldGVRdWVyaWVzRVhUKDEsICZtUXVlcnkpOworICAgICAgICAgICAgbVF1ZXJ5ID0g
MDsKKyAgICAgICAgfQorCisgICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKKyAgICB9CisK
KyAgICBHTHVpbnQgbVF1ZXJ5ID0gMDsKK307CisKKy8vIFRlc3QgYmFzaWMgdXNhZ2Ugb2Ygc3lu
YyBxdWVyaWVzCitURVNUX1AoU3luY1F1ZXJpZXNUZXN0LCBCYXNpYykKK3sKKyAgICBpZiAoIWV4
dGVuc2lvbkVuYWJsZWQoIkdMX0NIUk9NSVVNX3N5bmNfcXVlcnkiKSkKKyAgICB7CisgICAgICAg
IHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgR0xfQ0hST01JVU1fc3luY19xdWVy
eSBpcyBub3QgYXZhaWxhYmxlLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgZ2xHZW5RdWVyaWVzRVhUKDEsICZtUXVlcnkpOworICAgIGdsQmVnaW5RdWVyeUVY
VChHTF9DT01NQU5EU19DT01QTEVURURfQ0hST01JVU0sIG1RdWVyeSk7CisgICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7CisKKyAgICBnbENsZWFyQ29sb3IoMC4wLCAwLjAsIDEuMCwgMS4wKTsKKyAg
ICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworCisgICAgZ2xFbmRRdWVyeUVYVChHTF9D
T01NQU5EU19DT01QTEVURURfQ0hST01JVU0pOworCisgICAgZ2xGbHVzaCgpOworICAgIEdMdWlu
dCByZXN1bHQgPSAwOworICAgIGdsR2V0UXVlcnlPYmplY3R1aXZFWFQobVF1ZXJ5LCBHTF9RVUVS
WV9SRVNVTFRfRVhULCAmcmVzdWx0KTsKKyAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8R0x1aW50
PihHTF9UUlVFKSwgcmVzdWx0KTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKK30KKworLy8g
VGVzdCB0aGF0IHRoZSBzeW5jIHF1ZXJ5IGVudW1zIGFyZSBub3QgYWNjZXB0ZWQgdW5sZXNzIHRo
ZSBleHRlbnNpb24gaXMgYXZhaWxhYmxlCitURVNUX1AoU3luY1F1ZXJpZXNUZXN0LCBWYWxpZGF0
aW9uKQoreworICAgIC8vIE5lZWQgdGhlIEdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbiBl
eHRlbnNpb24gZm9yIHRoZSBlbnRyeSBwb2ludHMKKyAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQo
IkdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbiIpKQorICAgIHsKKyAgICAgICAgc3RkOjpj
b3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jvb2xl
YW4gaXMgbm90IGF2YWlsYWJsZS4iCisgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBib29sIGV4dGVuc2lvbkF2YWlsYWJsZSA9IGV4
dGVuc2lvbkVuYWJsZWQoIkdMX0NIUk9NSVVNX3N5bmNfcXVlcnkiKTsKKworICAgIGdsR2VuUXVl
cmllc0VYVCgxLCAmbVF1ZXJ5KTsKKworICAgIGdsQmVnaW5RdWVyeUVYVChHTF9DT01NQU5EU19D
T01QTEVURURfQ0hST01JVU0sIG1RdWVyeSk7CisgICAgaWYgKGV4dGVuc2lvbkF2YWlsYWJsZSkK
KyAgICB7CisgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgIH0KKyAgICBlbHNlCisg
ICAgeworICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICB9CisK
KyAgICBnbERlbGV0ZVF1ZXJpZXNFWFQoMSwgJm1RdWVyeSk7CisKKyAgICBFWFBFQ1RfR0xfTk9f
RVJST1IoKTsKK30KKworLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25z
IChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlCisv
LyB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCitBTkdMRV9JTlNUQU5USUFURV9URVNUKFN5
bmNRdWVyaWVzVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVT
M19EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCisgICAgICAg
ICAgICAgICAgICAgICAgIEVTM19PUEVOR0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMy
X09QRU5HTEVTKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygpKTsKKwor
fSAgLy8gbmFtZXNwYWNlIGFuZ2xlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZ2xfdGVzdHMvVGV4dHVyZVRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9UZXh0dXJlVGVzdC5jcHAJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1RleHR1
cmVUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM3MzcgQEAKKy8vCisvLyBDb3B5
cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisK
KyNpbmNsdWRlICJjb21tb24vbWF0aHV0aWwuaCIKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xF
VGVzdC5oIgorI2luY2x1ZGUgInRlc3RfdXRpbHMvZ2xfcmFpaS5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgYW5nbGU7CisKK25hbWVzcGFjZQoreworCisvLyBUYWtlIGEgcGl4ZWwsIGFuZCByZXNldCB0
aGUgY29tcG9uZW50cyBub3QgY292ZXJlZCBieSB0aGUgZm9ybWF0IHRvIGRlZmF1bHQKKy8vIHZh
bHVlcy4gSW4gcGFydGljdWxhciwgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBhbHBoYSBjb21w
b25lbnQgaXMgMjU1CisvLyAoMS4wIGFzIHVuc2lnbmVkIG5vcm1hbGl6ZWQgZml4ZWQgcG9pbnQg
dmFsdWUpLgorR0xDb2xvciBTbGljZUZvcm1hdENvbG9yKEdMZW51bSBmb3JtYXQsIEdMQ29sb3Ig
ZnVsbCkKK3sKKyAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfUkVE
OgorICAgICAgICAgICAgcmV0dXJuIEdMQ29sb3IoZnVsbC5SLCAwLCAwLCAyNTV1KTsKKyAgICAg
ICAgY2FzZSBHTF9SRzoKKyAgICAgICAgICAgIHJldHVybiBHTENvbG9yKGZ1bGwuUiwgZnVsbC5H
LCAwLCAyNTV1KTsKKyAgICAgICAgY2FzZSBHTF9SR0I6CisgICAgICAgICAgICByZXR1cm4gR0xD
b2xvcihmdWxsLlIsIGZ1bGwuRywgZnVsbC5CLCAyNTV1KTsKKyAgICAgICAgY2FzZSBHTF9SR0JB
OgorICAgICAgICAgICAgcmV0dXJuIGZ1bGw7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIEdMQ29sb3I6OndoaXRlOworICAg
IH0KK30KKworY2xhc3MgVGV4Q29vcmREcmF3VGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAg
cHJvdGVjdGVkOgorICAgIFRleENvb3JkRHJhd1Rlc3QoKSA6IEFOR0xFVGVzdCgpLCBtUHJvZ3Jh
bSgwKSwgbUZyYW1lYnVmZmVyKDApLCBtRnJhbWVidWZmZXJDb2xvclRleHR1cmUoMCkKKyAgICB7
CisgICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7CisgICAgICAgIHNldFdpbmRvd0hlaWdodCgx
MjgpOworICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOworICAgICAgICBzZXRDb25maWdHcmVl
bkJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOworICAgICAgICBzZXRDb25m
aWdBbHBoYUJpdHMoOCk7CisgICAgfQorCisgICAgdmlydHVhbCBzdGQ6OnN0cmluZyBnZXRWZXJ0
ZXhTaGFkZXJTb3VyY2UoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKFNIQURF
Ul9TT1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0Owor
ICAgICAgICAgICAgYXR0cmlidXRlIHZlYzQgcG9zaXRpb247CisgICAgICAgICAgICB2YXJ5aW5n
IHZlYzIgdGV4Y29vcmQ7CisKKyAgICAgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLnh5LCAwLjAsIDEu
MCk7CisgICAgICAgICAgICAgICAgdGV4Y29vcmQgPSAocG9zaXRpb24ueHkgKiAwLjUpICsgMC41
OworICAgICAgICAgICAgfQorICAgICAgICApCisgICAgICAgICk7CisgICAgfQorCisgICAgdmly
dHVhbCBzdGQ6OnN0cmluZyBnZXRGcmFnbWVudFNoYWRlclNvdXJjZSgpID0gMDsKKworICAgIHZp
cnR1YWwgdm9pZCBzZXRVcFByb2dyYW0oKQorICAgIHsKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgdmVydGV4U2hhZGVyU291cmNlICAgPSBnZXRWZXJ0ZXhTaGFkZXJTb3VyY2UoKTsKKyAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBnZXRGcmFnbWVudFNo
YWRlclNvdXJjZSgpOworCisgICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4
U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgICAgIEFTU0VSVF9ORSgw
dSwgbVByb2dyYW0pOworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICB9CisKKyAg
ICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFOR0xFVGVzdDo6U2V0VXAo
KTsKKworICAgICAgICBzZXRVcEZyYW1lYnVmZmVyKCk7CisgICAgfQorCisgICAgdm9pZCBUZWFy
RG93bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFN
RUJVRkZFUiwgMCk7CisgICAgICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZtRnJhbWVidWZm
ZXIpOworICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtRnJhbWVidWZmZXJDb2xvclRleHR1
cmUpOworICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOworICAgICAgICBBTkdMRVRl
c3Q6OlRlYXJEb3duKCk7CisgICAgfQorCisgICAgdm9pZCBzZXRVcEZyYW1lYnVmZmVyKCkKKyAg
ICB7CisgICAgICAgIC8vIFdlIHVzZSBhbiBGQk8gdG8gd29yayBhcm91bmQgYW4gaXNzdWUgd2hl
cmUgdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIgYXBwbGllcyBTUkdCCisgICAgICAgIC8vIGNvbnZl
cnNpb24gKHBhcnRpY3VsYXJseSBrbm93biB0byBoYXBwZW4gaW5jb3JyZWN0bHkgb24gSW50ZWwg
R0wgZHJpdmVycykuIEl0J3Mgbm90CisgICAgICAgIC8vIGNsZWFyIHdoZXRoZXIgdGhpcyBpc3N1
ZSBjYW4gZXZlbiBiZSBmaXhlZCBvbiBhbGwgYmFja2VuZHMuIEZvciBleGFtcGxlIEdMRVMgMy4w
LjQgc3BlYworICAgICAgICAvLyBzZWN0aW9uIDQuNCBzYXlzIHRoYXQgdGhlIGZvcm1hdCBvZiB0
aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciBpcyBlbnRpcmVseSB1cCB0byB0aGUgd2luZG93CisgICAg
ICAgIC8vIHN5c3RlbSwgc28gaXQgbWlnaHQgYmUgU1JHQiwgYW5kIEdMRVMgMy4wIGRvZXNuJ3Qg
aGF2ZSBhICJGUkFNRUJVRkZFUl9TUkdCIiB0byB0dXJuIG9mZgorICAgICAgICAvLyBTUkdCIGNv
bnZlcnNpb24gbGlrZSBkZXNrdG9wIEdMIGRvZXMuCisgICAgICAgIC8vIFRPRE8ob2V0dWFobyk6
IEdldCByaWQgb2YgdGhpcyBpZiB0aGUgdW5kZXJseWluZyBpc3N1ZSBpcyBmaXhlZC4KKyAgICAg
ICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1GcmFtZWJ1ZmZlcik7CisgICAgICAgIGdsQmluZEZy
YW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZmZXIpOworCisgICAgICAgIGdsR2Vu
VGV4dHVyZXMoMSwgJm1GcmFtZWJ1ZmZlckNvbG9yVGV4dHVyZSk7CisgICAgICAgIGdsQmluZFRl
eHR1cmUoR0xfVEVYVFVSRV8yRCwgbUZyYW1lYnVmZmVyQ29sb3JUZXh0dXJlKTsKKyAgICAgICAg
Z2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIGdldFdpbmRvd1dpZHRoKCks
IGdldFdpbmRvd0hlaWdodCgpLCAwLCBHTF9SR0JBLAorICAgICAgICAgICAgICAgICAgICAgR0xf
VU5TSUdORURfQllURSwgbnVsbHB0cik7CisgICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQo
R0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1GcmFtZWJ1ZmZlckNvbG9yVGV4dHVyZSwgMCk7
CisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgICAgICBBU1NFUlRfR0xFTlVNX0VR
KEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFLCBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJB
TUVCVUZGRVIpKTsKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCAwKTsKKyAg
ICB9CisKKyAgICAvLyBSZXR1cm5zIHRoZSBjcmVhdGVkIHRleHR1cmUgSUQuCisgICAgR0x1aW50
IGNyZWF0ZTJEVGV4dHVyZSgpCisgICAgeworICAgICAgICBHTHVpbnQgdGV4dHVyZTJEOworICAg
ICAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXh0dXJlMkQpOworICAgICAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIHRleHR1cmUyRCk7CisgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhU
VVJFXzJELCAwLCBHTF9SR0JBLCAxLCAxLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBO
VUxMKTsKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgICAgIHJldHVybiB0ZXh0
dXJlMkQ7CisgICAgfQorCisgICAgR0x1aW50IG1Qcm9ncmFtOworICAgIEdMdWludCBtRnJhbWVi
dWZmZXI7CisKKyAgcHJpdmF0ZToKKyAgICBHTHVpbnQgbUZyYW1lYnVmZmVyQ29sb3JUZXh0dXJl
OworfTsKKworY2xhc3MgVGV4dHVyZTJEVGVzdCA6IHB1YmxpYyBUZXhDb29yZERyYXdUZXN0Cit7
CisgIHByb3RlY3RlZDoKKyAgICBUZXh0dXJlMkRUZXN0KCkgOiBUZXhDb29yZERyYXdUZXN0KCks
IG1UZXh0dXJlMkQoMCksIG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRpb24oLTEpIHt9CisKKyAgICBz
dGQ6OnN0cmluZyBnZXRGcmFnbWVudFNoYWRlclNvdXJjZSgpIG92ZXJyaWRlCisgICAgeworICAg
ICAgICByZXR1cm4gc3RkOjpzdHJpbmcoU0hBREVSX1NPVVJDRQorICAgICAgICAoCisgICAgICAg
ICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisgICAgICAgICAgICB1bmlmb3JtIHNhbXBsZXIy
RCB0ZXg7CisgICAgICAgICAgICB2YXJ5aW5nIHZlYzIgdGV4Y29vcmQ7CisKKyAgICAgICAgICAg
IHZvaWQgbWFpbigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9y
ID0gdGV4dHVyZTJEKHRleCwgdGV4Y29vcmQpOworICAgICAgICAgICAgfQorICAgICAgICApCisg
ICAgICAgICk7CisgICAgfQorCisgICAgdmlydHVhbCBjb25zdCBjaGFyICpnZXRUZXh0dXJlVW5p
Zm9ybU5hbWUoKSB7IHJldHVybiAidGV4IjsgfQorCisgICAgdm9pZCBzZXRVcFByb2dyYW0oKSBv
dmVycmlkZQorICAgIHsKKyAgICAgICAgVGV4Q29vcmREcmF3VGVzdDo6c2V0VXBQcm9ncmFtKCk7
CisgICAgICAgIG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlv
bihtUHJvZ3JhbSwgZ2V0VGV4dHVyZVVuaWZvcm1OYW1lKCkpOworICAgICAgICBBU1NFUlRfTkUo
LTEsIG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRpb24pOworICAgIH0KKworICAgIHZvaWQgU2V0VXAo
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgVGV4Q29vcmREcmF3VGVzdDo6U2V0VXAoKTsKKyAg
ICAgICAgbVRleHR1cmUyRCA9IGNyZWF0ZTJEVGV4dHVyZSgpOworCisgICAgICAgIEFTU0VSVF9H
TF9OT19FUlJPUigpOworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbVRleHR1cmUyRCk7CisgICAgICAgIFRl
eENvb3JkRHJhd1Rlc3Q6OlRlYXJEb3duKCk7CisgICAgfQorCisgICAgLy8gVGVzdHMgQ29weVRl
eFN1YkltYWdlIHdpdGggZmxvYXRpbmcgcG9pbnQgdGV4dHVyZXMgb2YgdmFyaW91cyBmb3JtYXRz
LgorICAgIHZvaWQgdGVzdEZsb2F0Q29weVN1YkltYWdlKGludCBzb3VyY2VJbWFnZUNoYW5uZWxz
LCBpbnQgZGVzdEltYWdlQ2hhbm5lbHMpCisgICAgeworICAgICAgICAvLyBUT0RPKGptYWRpbGwp
OiBGaWd1cmUgb3V0IHdoeSB0aGlzIGlzIGJyb2tlbiBvbiBJbnRlbCBEM0QxMQorICAgICAgICBp
ZiAoSXNJbnRlbCgpICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5H
TEVfVFlQRV9EM0QxMV9BTkdMRSkKKyAgICAgICAgeworICAgICAgICAgICAgc3RkOjpjb3V0IDw8
ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgRDNEMTEuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzZXRVcFByb2dyYW0oKTsKKworICAgICAg
ICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0IikpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgZHVlIHRv
IG1pc3NpbmcgR0xfT0VTX3RleHR1cmVfZmxvYXQuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoKHNvdXJjZUlt
YWdlQ2hhbm5lbHMgPCAzIHx8IGRlc3RJbWFnZUNoYW5uZWxzIDwgMykgJiYgIWV4dGVuc2lvbkVu
YWJsZWQoIkdMX0VYVF90ZXh0dXJlX3JnIikpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgZHVlIHRvIG1pc3NpbmcgR0xfRVhUX3RleHR1
cmVfcmcuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgR0xmbG9hdCBzb3VyY2VJbWFnZURhdGFbNF1bMTZd
ID0KKyAgICAgICAgeworICAgICAgICAgICAgeyAvLyBSCisgICAgICAgICAgICAgICAgMS4wZiwK
KyAgICAgICAgICAgICAgICAwLjBmLAorICAgICAgICAgICAgICAgIDAuMGYsCisgICAgICAgICAg
ICAgICAgMS4wZgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsgLy8gUkcKKyAgICAgICAg
ICAgICAgICAxLjBmLCAwLjBmLAorICAgICAgICAgICAgICAgIDAuMGYsIDEuMGYsCisgICAgICAg
ICAgICAgICAgMC4wZiwgMC4wZiwKKyAgICAgICAgICAgICAgICAxLjBmLCAxLjBmCisgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgeyAvLyBSR0IKKyAgICAgICAgICAgICAgICAxLjBmLCAwLjBm
LCAwLjBmLAorICAgICAgICAgICAgICAgIDAuMGYsIDEuMGYsIDAuMGYsCisgICAgICAgICAgICAg
ICAgMC4wZiwgMC4wZiwgMS4wZiwKKyAgICAgICAgICAgICAgICAxLjBmLCAxLjBmLCAwLjBmCisg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgeyAvLyBSR0JBCisgICAgICAgICAgICAgICAgMS4w
ZiwgMC4wZiwgMC4wZiwgMS4wZiwKKyAgICAgICAgICAgICAgICAwLjBmLCAxLjBmLCAwLjBmLCAx
LjBmLAorICAgICAgICAgICAgICAgIDAuMGYsIDAuMGYsIDEuMGYsIDEuMGYsCisgICAgICAgICAg
ICAgICAgMS4wZiwgMS4wZiwgMC4wZiwgMS4wZgorICAgICAgICAgICAgfSwKKyAgICAgICAgfTsK
KworICAgICAgICBHTGVudW0gaW1hZ2VGb3JtYXRzW10gPQorICAgICAgICB7CisgICAgICAgICAg
ICBHTF9SMzJGLAorICAgICAgICAgICAgR0xfUkczMkYsCisgICAgICAgICAgICBHTF9SR0IzMkYs
CisgICAgICAgICAgICBHTF9SR0JBMzJGLAorICAgICAgICB9OworCisgICAgICAgIEdMZW51bSBz
b3VyY2VVbnNpemVkRm9ybWF0c1tdID0KKyAgICAgICAgeworICAgICAgICAgICAgR0xfUkVELAor
ICAgICAgICAgICAgR0xfUkcsCisgICAgICAgICAgICBHTF9SR0IsCisgICAgICAgICAgICBHTF9S
R0JBLAorICAgICAgICB9OworCisgICAgICAgIEdMdWludCB0ZXh0dXJlc1syXTsKKworICAgICAg
ICBnbEdlblRleHR1cmVzKDIsIHRleHR1cmVzKTsKKworICAgICAgICBHTGZsb2F0ICppbWFnZURh
dGEgPSBzb3VyY2VJbWFnZURhdGFbc291cmNlSW1hZ2VDaGFubmVscyAtIDFdOworICAgICAgICBH
TGVudW0gc291cmNlSW1hZ2VGb3JtYXQgPSBpbWFnZUZvcm1hdHNbc291cmNlSW1hZ2VDaGFubmVs
cyAtIDFdOworICAgICAgICBHTGVudW0gc291cmNlVW5zaXplZEZvcm1hdCA9IHNvdXJjZVVuc2l6
ZWRGb3JtYXRzW3NvdXJjZUltYWdlQ2hhbm5lbHMgLSAxXTsKKyAgICAgICAgR0xlbnVtIGRlc3RJ
bWFnZUZvcm1hdCA9IGltYWdlRm9ybWF0c1tkZXN0SW1hZ2VDaGFubmVscyAtIDFdOworCisgICAg
ICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZXNbMF0pOworICAgICAgICBn
bFRleFN0b3JhZ2UyREVYVChHTF9URVhUVVJFXzJELCAxLCBzb3VyY2VJbWFnZUZvcm1hdCwgMiwg
Mik7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01J
Tl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICAgICAgZ2xUZXhT
dWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDIsIDIsIHNvdXJjZVVuc2l6ZWRGb3Jt
YXQsIEdMX0ZMT0FULCBpbWFnZURhdGEpOworCisgICAgICAgIGlmIChzb3VyY2VJbWFnZUNoYW5u
ZWxzIDwgMyAmJiAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfcmciKSkKKyAgICAg
ICAgeworICAgICAgICAgICAgLy8gVGhpcyBpcyBub3Qgc3VwcG9ydGVkCisgICAgICAgICAgICBB
U1NFUlRfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICB9CisgICAgICAg
IGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAg
ICAgIH0KKworICAgICAgICBHTHVpbnQgZmJvOworICAgICAgICBnbEdlbkZyYW1lYnVmZmVycygx
LCAmZmJvKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIGZibyk7
CisgICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9S
X0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXh0dXJlc1swXSwgMCk7CisKKyAgICAgICAg
Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlc1sxXSk7CisgICAgICAgIGdsVGV4
U3RvcmFnZTJERVhUKEdMX1RFWFRVUkVfMkQsIDEsIGRlc3RJbWFnZUZvcm1hdCwgMiwgMik7Cisg
ICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxU
RVIsIEdMX05FQVJFU1QpOworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKKworICAgICAgICBnbENvcHlUZXhT
dWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDAsIDAsIDIsIDIpOworICAgICAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFN
RUJVRkZFUiwgMCk7CisgICAgICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVm
KTsKKworICAgICAgICBpbnQgdGVzdEltYWdlQ2hhbm5lbHMgPSBzdGQ6Om1pbihzb3VyY2VJbWFn
ZUNoYW5uZWxzLCBkZXN0SW1hZ2VDaGFubmVscyk7CisKKyAgICAgICAgRVhQRUNUX1BJWEVMX0NP
TE9SX0VRKDAsIDAsIEdMQ29sb3I6OnJlZCk7CisgICAgICAgIGlmICh0ZXN0SW1hZ2VDaGFubmVs
cyA+IDEpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVYUEVDVF9QSVhFTF9FUShnZXRXaW5kb3dI
ZWlnaHQoKSAtIDEsIDAsIDAsIDI1NSwgMCwgMjU1KTsKKyAgICAgICAgICAgIEVYUEVDVF9QSVhF
TF9FUShnZXRXaW5kb3dIZWlnaHQoKSAtIDEsIGdldFdpbmRvd1dpZHRoKCkgLSAxLCAyNTUsIDI1
NSwgMCwgMjU1KTsKKyAgICAgICAgICAgIGlmICh0ZXN0SW1hZ2VDaGFubmVscyA+IDIpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgRVhQRUNUX1BJWEVMX0VRKDAsIGdldFdpbmRvd1dp
ZHRoKCkgLSAxLCAwLCAwLCAyNTUsIDI1NSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmZmJvKTsKKyAgICAgICAgZ2xEZWxldGVU
ZXh0dXJlcygyLCB0ZXh0dXJlcyk7CisKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cisg
ICAgfQorCisgICAgR0x1aW50IG1UZXh0dXJlMkQ7CisgICAgR0xpbnQgbVRleHR1cmUyRFVuaWZv
cm1Mb2NhdGlvbjsKK307CisKK2NsYXNzIFRleHR1cmUyRFRlc3RFUzMgOiBwdWJsaWMgVGV4dHVy
ZTJEVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgVGV4dHVyZTJEVGVzdEVTMygpIDogVGV4dHVy
ZTJEVGVzdCgpIHt9CisKKyAgICBzdGQ6OnN0cmluZyBnZXRWZXJ0ZXhTaGFkZXJTb3VyY2UoKSBv
dmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKAorICAgICAgICAgICAg
IiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAgICAgIm91dCB2ZWMyIHRleGNvb3JkO1xuIgor
ICAgICAgICAgICAgImluIHZlYzQgcG9zaXRpb247XG4iCisgICAgICAgICAgICAidm9pZCBtYWlu
KClcbiIKKyAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0g
dmVjNChwb3NpdGlvbi54eSwgMC4wLCAxLjApO1xuIgorICAgICAgICAgICAgIiAgICB0ZXhjb29y
ZCA9IChwb3NpdGlvbi54eSAqIDAuNSkgKyAwLjU7XG4iCisgICAgICAgICAgICAifVxuIik7Cisg
ICAgfQorCisgICAgc3RkOjpzdHJpbmcgZ2V0RnJhZ21lbnRTaGFkZXJTb3VyY2UoKSBvdmVycmlk
ZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKAorICAgICAgICAgICAgIiN2ZXJz
aW9uIDMwMCBlc1xuIgorICAgICAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKKyAg
ICAgICAgICAgICJ1bmlmb3JtIGhpZ2hwIHNhbXBsZXIyRCB0ZXg7XG4iCisgICAgICAgICAgICAi
aW4gdmVjMiB0ZXhjb29yZDtcbiIKKyAgICAgICAgICAgICJvdXQgdmVjNCBmcmFnQ29sb3I7XG4i
CisgICAgICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgICAgICJ7XG4iCisgICAgICAg
ICAgICAiICAgIGZyYWdDb2xvciA9IHRleHR1cmUodGV4LCB0ZXhjb29yZCk7XG4iCisgICAgICAg
ICAgICAifVxuIik7CisgICAgfQorCisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgewor
ICAgICAgICBUZXh0dXJlMkRUZXN0OjpTZXRVcCgpOworICAgICAgICBzZXRVcFByb2dyYW0oKTsK
KyAgICB9Cit9OworCitjbGFzcyBUZXh0dXJlMkRJbnRlZ2VyQWxwaGExVGVzdEVTMyA6IHB1Ymxp
YyBUZXh0dXJlMkRUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBUZXh0dXJlMkRJbnRlZ2VyQWxw
aGExVGVzdEVTMygpIDogVGV4dHVyZTJEVGVzdCgpIHt9CisKKyAgICBzdGQ6OnN0cmluZyBnZXRW
ZXJ0ZXhTaGFkZXJTb3VyY2UoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
c3RyaW5nKAorICAgICAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAgICAgIm91
dCB2ZWMyIHRleGNvb3JkO1xuIgorICAgICAgICAgICAgImluIHZlYzQgcG9zaXRpb247XG4iCisg
ICAgICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAg
ICAiICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbi54eSwgMC4wLCAxLjApO1xuIgorICAg
ICAgICAgICAgIiAgICB0ZXhjb29yZCA9IChwb3NpdGlvbi54eSAqIDAuNSkgKyAwLjU7XG4iCisg
ICAgICAgICAgICAifVxuIik7CisgICAgfQorCisgICAgc3RkOjpzdHJpbmcgZ2V0RnJhZ21lbnRT
aGFkZXJTb3VyY2UoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5n
KAorICAgICAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAgICAgInByZWNpc2lv
biBoaWdocCBmbG9hdDtcbiIKKyAgICAgICAgICAgICJ1bmlmb3JtIGhpZ2hwIGlzYW1wbGVyMkQg
dGV4O1xuIgorICAgICAgICAgICAgImluIHZlYzIgdGV4Y29vcmQ7XG4iCisgICAgICAgICAgICAi
b3V0IHZlYzQgZnJhZ0NvbG9yO1xuIgorICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAg
ICAgICAgICAie1xuIgorICAgICAgICAgICAgIiAgICB2ZWM0IGdyZWVuID0gdmVjNCgwLCAxLCAw
LCAxKTtcbiIKKyAgICAgICAgICAgICIgICAgdmVjNCBibGFjayA9IHZlYzQoMCwgMCwgMCwgMCk7
XG4iCisgICAgICAgICAgICAiICAgIGZyYWdDb2xvciA9ICh0ZXh0dXJlKHRleCwgdGV4Y29vcmQp
LmEgPT0gMSkgPyBncmVlbiA6IGJsYWNrO1xuIgorICAgICAgICAgICAgIn1cbiIpOworICAgIH0K
KworICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgVGV4dHVyZTJEVGVz
dDo6U2V0VXAoKTsKKyAgICAgICAgc2V0VXBQcm9ncmFtKCk7CisgICAgfQorfTsKKworY2xhc3Mg
VGV4dHVyZTJEVW5zaWduZWRJbnRlZ2VyQWxwaGExVGVzdEVTMyA6IHB1YmxpYyBUZXh0dXJlMkRU
ZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBUZXh0dXJlMkRVbnNpZ25lZEludGVnZXJBbHBoYTFU
ZXN0RVMzKCkgOiBUZXh0dXJlMkRUZXN0KCkge30KKworICAgIHN0ZDo6c3RyaW5nIGdldFZlcnRl
eFNoYWRlclNvdXJjZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjpzdHJp
bmcoCisgICAgICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICAgICAib3V0IHZl
YzIgdGV4Y29vcmQ7XG4iCisgICAgICAgICAgICAiaW4gdmVjNCBwb3NpdGlvbjtcbiIKKyAgICAg
ICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICIg
ICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLnh5LCAwLjAsIDEuMCk7XG4iCisgICAgICAg
ICAgICAiICAgIHRleGNvb3JkID0gKHBvc2l0aW9uLnh5ICogMC41KSArIDAuNTtcbiIKKyAgICAg
ICAgICAgICJ9XG4iKTsKKyAgICB9CisKKyAgICBzdGQ6OnN0cmluZyBnZXRGcmFnbWVudFNoYWRl
clNvdXJjZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoCisg
ICAgICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICAgICAicHJlY2lzaW9uIGhp
Z2hwIGZsb2F0O1xuIgorICAgICAgICAgICAgInVuaWZvcm0gaGlnaHAgdXNhbXBsZXIyRCB0ZXg7
XG4iCisgICAgICAgICAgICAiaW4gdmVjMiB0ZXhjb29yZDtcbiIKKyAgICAgICAgICAgICJvdXQg
dmVjNCBmcmFnQ29sb3I7XG4iCisgICAgICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAg
ICAgICJ7XG4iCisgICAgICAgICAgICAiICAgIHZlYzQgZ3JlZW4gPSB2ZWM0KDAsIDEsIDAsIDEp
O1xuIgorICAgICAgICAgICAgIiAgICB2ZWM0IGJsYWNrID0gdmVjNCgwLCAwLCAwLCAwKTtcbiIK
KyAgICAgICAgICAgICIgICAgZnJhZ0NvbG9yID0gKHRleHR1cmUodGV4LCB0ZXhjb29yZCkuYSA9
PSAxdSkgPyBncmVlbiA6IGJsYWNrO1xuIgorICAgICAgICAgICAgIn1cbiIpOworICAgIH0KKwor
ICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgVGV4dHVyZTJEVGVzdDo6
U2V0VXAoKTsKKyAgICAgICAgc2V0VXBQcm9ncmFtKCk7CisgICAgfQorfTsKKworY2xhc3MgVGV4
dHVyZTJEVGVzdFdpdGhEcmF3U2NhbGUgOiBwdWJsaWMgVGV4dHVyZTJEVGVzdAoreworICBwcm90
ZWN0ZWQ6CisgICAgVGV4dHVyZTJEVGVzdFdpdGhEcmF3U2NhbGUoKSA6IFRleHR1cmUyRFRlc3Qo
KSwgbURyYXdTY2FsZVVuaWZvcm1Mb2NhdGlvbigtMSkge30KKworICAgIHN0ZDo6c3RyaW5nIGdl
dFZlcnRleFNoYWRlclNvdXJjZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gc3Rk
OjpzdHJpbmcoU0hBREVSX1NPVVJDRQorICAgICAgICAoCisgICAgICAgICAgICBwcmVjaXNpb24g
aGlnaHAgZmxvYXQ7CisgICAgICAgICAgICBhdHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjsKKyAgICAg
ICAgICAgIHZhcnlpbmcgdmVjMiB0ZXhjb29yZDsKKworICAgICAgICAgICAgdW5pZm9ybSB2ZWMy
IGRyYXdTY2FsZTsKKworICAgICAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24ueHkgKiBkcmF3U2NhbGUs
IDAuMCwgMS4wKTsKKyAgICAgICAgICAgICAgICB0ZXhjb29yZCA9IChwb3NpdGlvbi54eSAqIDAu
NSkgKyAwLjU7CisgICAgICAgICAgICB9CisgICAgICAgICkKKyAgICAgICAgKTsKKyAgICB9CisK
KyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFRleHR1cmUyRFRlc3Q6
OlNldFVwKCk7CisKKyAgICAgICAgc2V0VXBQcm9ncmFtKCk7CisKKyAgICAgICAgbURyYXdTY2Fs
ZVVuaWZvcm1Mb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAiZHJhd1Nj
YWxlIik7CisgICAgICAgIEFTU0VSVF9ORSgtMSwgbURyYXdTY2FsZVVuaWZvcm1Mb2NhdGlvbik7
CisKKyAgICAgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICAgICAgZ2xVbmlmb3JtMmYo
bURyYXdTY2FsZVVuaWZvcm1Mb2NhdGlvbiwgMS4wZiwgMS4wZik7CisgICAgICAgIGdsVXNlUHJv
Z3JhbSgwKTsKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgfQorCisgICAgR0xp
bnQgbURyYXdTY2FsZVVuaWZvcm1Mb2NhdGlvbjsKK307CisKK2NsYXNzIFNhbXBsZXIyREFzRnVu
Y3Rpb25QYXJhbWV0ZXJUZXN0IDogcHVibGljIFRleHR1cmUyRFRlc3QKK3sKKyAgcHJvdGVjdGVk
OgorICAgIFNhbXBsZXIyREFzRnVuY3Rpb25QYXJhbWV0ZXJUZXN0KCkgOiBUZXh0dXJlMkRUZXN0
KCkge30KKworICAgIHN0ZDo6c3RyaW5nIGdldEZyYWdtZW50U2hhZGVyU291cmNlKCkgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnN0cmluZyhTSEFERVJfU09VUkNFCisgICAg
ICAgICgKKyAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKKyAgICAgICAgICAgIHVu
aWZvcm0gc2FtcGxlcjJEIHRleDsKKyAgICAgICAgICAgIHZhcnlpbmcgdmVjMiB0ZXhjb29yZDsK
KworICAgICAgICAgICAgdmVjNCBjb21wdXRlRnJhZ0NvbG9yKHNhbXBsZXIyRCBhVGV4KQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlMkQoYVRleCwgdGV4Y29v
cmQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IGNvbXB1dGVGcmFnQ29sb3IodGV4
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKQorICAgICAgICApOworICAgIH0KKworICAgIHZv
aWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgVGV4dHVyZTJEVGVzdDo6U2V0VXAo
KTsKKyAgICAgICAgc2V0VXBQcm9ncmFtKCk7CisgICAgfQorfTsKKworY2xhc3MgVGV4dHVyZUN1
YmVUZXN0IDogcHVibGljIFRleENvb3JkRHJhd1Rlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIFRl
eHR1cmVDdWJlVGVzdCgpCisgICAgICAgIDogVGV4Q29vcmREcmF3VGVzdCgpLAorICAgICAgICAg
IG1UZXh0dXJlMkQoMCksCisgICAgICAgICAgbVRleHR1cmVDdWJlKDApLAorICAgICAgICAgIG1U
ZXh0dXJlMkRVbmlmb3JtTG9jYXRpb24oLTEpLAorICAgICAgICAgIG1UZXh0dXJlQ3ViZVVuaWZv
cm1Mb2NhdGlvbigtMSkKKyAgICB7CisgICAgfQorCisgICAgc3RkOjpzdHJpbmcgZ2V0RnJhZ21l
bnRTaGFkZXJTb3VyY2UoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6c3Ry
aW5nKFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hw
IGZsb2F0OworICAgICAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdGV4MkQ7CisgICAgICAgICAg
ICB1bmlmb3JtIHNhbXBsZXJDdWJlIHRleEN1YmU7CisgICAgICAgICAgICB2YXJ5aW5nIHZlYzIg
dGV4Y29vcmQ7CisKKyAgICAgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHRleDJELCB0ZXhjb29yZCk7Cisg
ICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yICs9IHRleHR1cmVDdWJlKHRleEN1YmUsIHZlYzMo
dGV4Y29vcmQsIDApKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKQorICAgICAgICApOworICAg
IH0KKworICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgVGV4Q29vcmRE
cmF3VGVzdDo6U2V0VXAoKTsKKworICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtVGV4dHVyZUN1
YmUpOworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIG1UZXh0dXJl
Q3ViZSk7CisgICAgICAgIGdsVGV4U3RvcmFnZTJERVhUKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIDEs
IEdMX1JHQkE4LCAxLCAxKTsKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAg
ICAgbVRleHR1cmUyRCA9IGNyZWF0ZTJEVGV4dHVyZSgpOworCisgICAgICAgIHNldFVwUHJvZ3Jh
bSgpOworCisgICAgICAgIG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRpb24gPSBnbEdldFVuaWZvcm1M
b2NhdGlvbihtUHJvZ3JhbSwgInRleDJEIik7CisgICAgICAgIEFTU0VSVF9ORSgtMSwgbVRleHR1
cmUyRFVuaWZvcm1Mb2NhdGlvbik7CisgICAgICAgIG1UZXh0dXJlQ3ViZVVuaWZvcm1Mb2NhdGlv
biA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidGV4Q3ViZSIpOworICAgICAgICBB
U1NFUlRfTkUoLTEsIG1UZXh0dXJlQ3ViZVVuaWZvcm1Mb2NhdGlvbik7CisgICAgfQorCisgICAg
dm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBnbERlbGV0ZVRleHR1cmVz
KDEsICZtVGV4dHVyZUN1YmUpOworICAgICAgICBUZXhDb29yZERyYXdUZXN0OjpUZWFyRG93bigp
OworICAgIH0KKworICAgIEdMdWludCBtVGV4dHVyZTJEOworICAgIEdMdWludCBtVGV4dHVyZUN1
YmU7CisgICAgR0xpbnQgbVRleHR1cmUyRFVuaWZvcm1Mb2NhdGlvbjsKKyAgICBHTGludCBtVGV4
dHVyZUN1YmVVbmlmb3JtTG9jYXRpb247Cit9OworCitjbGFzcyBTYW1wbGVyQXJyYXlUZXN0IDog
cHVibGljIFRleENvb3JkRHJhd1Rlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIFNhbXBsZXJBcnJh
eVRlc3QoKQorICAgICAgICA6IFRleENvb3JkRHJhd1Rlc3QoKSwKKyAgICAgICAgICBtVGV4dHVy
ZTJEQSgwKSwKKyAgICAgICAgICBtVGV4dHVyZTJEQigwKSwKKyAgICAgICAgICBtVGV4dHVyZTBV
bmlmb3JtTG9jYXRpb24oLTEpLAorICAgICAgICAgIG1UZXh0dXJlMVVuaWZvcm1Mb2NhdGlvbigt
MSkKKyAgICB7CisgICAgfQorCisgICAgc3RkOjpzdHJpbmcgZ2V0RnJhZ21lbnRTaGFkZXJTb3Vy
Y2UoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKFNIQURFUl9T
T1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cisg
ICAgICAgICAgICB1bmlmb3JtIGhpZ2hwIHNhbXBsZXIyRCB0ZXgyREFycmF5WzJdOworICAgICAg
ICAgICAgdmFyeWluZyB2ZWMyIHRleGNvb3JkOworICAgICAgICAgICAgdm9pZCBtYWluKCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQodGV4
MkRBcnJheVswXSwgdGV4Y29vcmQpOworICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciArPSB0
ZXh0dXJlMkQodGV4MkRBcnJheVsxXSwgdGV4Y29vcmQpOworICAgICAgICAgICAgfQorICAgICAg
ICApCisgICAgICAgICk7CisgICAgfQorCisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAg
eworICAgICAgICBUZXhDb29yZERyYXdUZXN0OjpTZXRVcCgpOworCisgICAgICAgIHNldFVwUHJv
Z3JhbSgpOworCisgICAgICAgIG1UZXh0dXJlMFVuaWZvcm1Mb2NhdGlvbiA9IGdsR2V0VW5pZm9y
bUxvY2F0aW9uKG1Qcm9ncmFtLCAidGV4MkRBcnJheVswXSIpOworICAgICAgICBBU1NFUlRfTkUo
LTEsIG1UZXh0dXJlMFVuaWZvcm1Mb2NhdGlvbik7CisgICAgICAgIG1UZXh0dXJlMVVuaWZvcm1M
b2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidGV4MkRBcnJheVsxXSIp
OworICAgICAgICBBU1NFUlRfTkUoLTEsIG1UZXh0dXJlMVVuaWZvcm1Mb2NhdGlvbik7CisKKyAg
ICAgICAgbVRleHR1cmUyREEgPSBjcmVhdGUyRFRleHR1cmUoKTsKKyAgICAgICAgbVRleHR1cmUy
REIgPSBjcmVhdGUyRFRleHR1cmUoKTsKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cisg
ICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBnbERl
bGV0ZVRleHR1cmVzKDEsICZtVGV4dHVyZTJEQSk7CisgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMo
MSwgJm1UZXh0dXJlMkRCKTsKKyAgICAgICAgVGV4Q29vcmREcmF3VGVzdDo6VGVhckRvd24oKTsK
KyAgICB9CisKKyAgICB2b2lkIHRlc3RTYW1wbGVyQXJyYXlEcmF3KCkKKyAgICB7CisgICAgICAg
IEdMdWJ5dGUgdGV4RGF0YVs0XTsKKyAgICAgICAgdGV4RGF0YVswXSA9IDA7CisgICAgICAgIHRl
eERhdGFbMV0gPSA2MDsKKyAgICAgICAgdGV4RGF0YVsyXSA9IDA7CisgICAgICAgIHRleERhdGFb
M10gPSAyNTU7CisKKyAgICAgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKKyAgICAg
ICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEQSk7CisgICAgICAgIGds
VGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCAwLCAwLCAxLCAxLCBHTF9SR0JBLCBHTF9V
TlNJR05FRF9CWVRFLCB0ZXhEYXRhKTsKKworICAgICAgICB0ZXhEYXRhWzFdID0gMTIwOworICAg
ICAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTEpOworICAgICAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkRCKTsKKyAgICAgICAgZ2xUZXhTdWJJbWFnZTJEKEdM
X1RFWFRVUkVfMkQsIDAsIDAsIDAsIDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHRl
eERhdGEpOworICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfTk9fRVJST1IpOworCisgICAgICAg
IGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJlMFVu
aWZvcm1Mb2NhdGlvbiwgMCk7CisgICAgICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJlMVVuaWZvcm1M
b2NhdGlvbiwgMSk7CisgICAgICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVm
KTsKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgRVhQRUNUX1BJWEVM
X05FQVIoMCwgMCwgMCwgMTgwLCAwLCAyNTUsIDIpOworICAgIH0KKworICAgIEdMdWludCBtVGV4
dHVyZTJEQTsKKyAgICBHTHVpbnQgbVRleHR1cmUyREI7CisgICAgR0xpbnQgbVRleHR1cmUwVW5p
Zm9ybUxvY2F0aW9uOworICAgIEdMaW50IG1UZXh0dXJlMVVuaWZvcm1Mb2NhdGlvbjsKK307CisK
KworY2xhc3MgU2FtcGxlckFycmF5QXNGdW5jdGlvblBhcmFtZXRlclRlc3QgOiBwdWJsaWMgU2Ft
cGxlckFycmF5VGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgU2FtcGxlckFycmF5QXNGdW5jdGlv
blBhcmFtZXRlclRlc3QoKSA6IFNhbXBsZXJBcnJheVRlc3QoKSB7fQorCisgICAgc3RkOjpzdHJp
bmcgZ2V0RnJhZ21lbnRTaGFkZXJTb3VyY2UoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6c3RyaW5nKFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAgcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgICAgICB1bmlmb3JtIGhpZ2hwIHNhbXBsZXIy
RCB0ZXgyREFycmF5WzJdOworICAgICAgICAgICAgdmFyeWluZyB2ZWMyIHRleGNvb3JkOworCisg
ICAgICAgICAgICB2ZWM0IGNvbXB1dGVGcmFnQ29sb3IoaGlnaHAgc2FtcGxlcjJEIGFUZXgyREFy
cmF5WzJdKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlMkQo
YVRleDJEQXJyYXlbMF0sIHRleGNvb3JkKSArIHRleHR1cmUyRChhVGV4MkRBcnJheVsxXSwgdGV4
Y29vcmQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IGNvbXB1dGVGcmFnQ29sb3Io
dGV4MkRBcnJheSk7CisgICAgICAgICAgICB9CisgICAgICAgICkKKyAgICAgICAgKTsKKyAgICB9
Cit9OworCitjbGFzcyBUZXh0dXJlMkRBcnJheVRlc3RFUzMgOiBwdWJsaWMgVGV4Q29vcmREcmF3
VGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgVGV4dHVyZTJEQXJyYXlUZXN0RVMzKCkgOiBUZXhD
b29yZERyYXdUZXN0KCksIG0yREFycmF5VGV4dHVyZSgwKSwgbVRleHR1cmVBcnJheUxvY2F0aW9u
KC0xKSB7fQorCisgICAgc3RkOjpzdHJpbmcgZ2V0VmVydGV4U2hhZGVyU291cmNlKCkgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnN0cmluZygKKyAgICAgICAgICAgICIjdmVy
c2lvbiAzMDAgZXNcbiIKKyAgICAgICAgICAgICJvdXQgdmVjMiB0ZXhjb29yZDtcbiIKKyAgICAg
ICAgICAgICJpbiB2ZWM0IHBvc2l0aW9uO1xuIgorICAgICAgICAgICAgInZvaWQgbWFpbigpXG4i
CisgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQo
cG9zaXRpb24ueHksIDAuMCwgMS4wKTtcbiIKKyAgICAgICAgICAgICIgICAgdGV4Y29vcmQgPSAo
cG9zaXRpb24ueHkgKiAwLjUpICsgMC41O1xuIgorICAgICAgICAgICAgIn1cbiIpOworICAgIH0K
KworICAgIHN0ZDo6c3RyaW5nIGdldEZyYWdtZW50U2hhZGVyU291cmNlKCkgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIHJldHVybiBzdGQ6OnN0cmluZygKKyAgICAgICAgICAgICIjdmVyc2lvbiAz
MDAgZXNcbiIKKyAgICAgICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCisgICAgICAg
ICAgICAidW5pZm9ybSBoaWdocCBzYW1wbGVyMkRBcnJheSB0ZXgyREFycmF5O1xuIgorICAgICAg
ICAgICAgImluIHZlYzIgdGV4Y29vcmQ7XG4iCisgICAgICAgICAgICAib3V0IHZlYzQgZnJhZ0Nv
bG9yO1xuIgorICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICAgICAie1xuIgor
ICAgICAgICAgICAgIiAgICBmcmFnQ29sb3IgPSB0ZXh0dXJlKHRleDJEQXJyYXksIHZlYzModGV4
Y29vcmQueCwgdGV4Y29vcmQueSwgMC4wKSk7XG4iCisgICAgICAgICAgICAifVxuIik7CisgICAg
fQorCisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBUZXhDb29yZERy
YXdUZXN0OjpTZXRVcCgpOworCisgICAgICAgIHNldFVwUHJvZ3JhbSgpOworCisgICAgICAgIG1U
ZXh0dXJlQXJyYXlMb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidGV4
MkRBcnJheSIpOworICAgICAgICBBU1NFUlRfTkUoLTEsIG1UZXh0dXJlQXJyYXlMb2NhdGlvbik7
CisKKyAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbTJEQXJyYXlUZXh0dXJlKTsKKyAgICAgICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtMkRBcnJheVRleHR1cmUp
OworICAgICAgICBUZXhDb29yZERyYXdUZXN0OjpUZWFyRG93bigpOworICAgIH0KKworICAgIEdM
dWludCBtMkRBcnJheVRleHR1cmU7CisgICAgR0xpbnQgbVRleHR1cmVBcnJheUxvY2F0aW9uOwor
fTsKKworY2xhc3MgVGV4dHVyZVNpemVUZXh0dXJlQXJyYXlUZXN0IDogcHVibGljIFRleENvb3Jk
RHJhd1Rlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIFRleHR1cmVTaXplVGV4dHVyZUFycmF5VGVz
dCgpCisgICAgICAgIDogVGV4Q29vcmREcmF3VGVzdCgpLAorICAgICAgICAgIG1UZXh0dXJlMkRB
KDApLAorICAgICAgICAgIG1UZXh0dXJlMkRCKDApLAorICAgICAgICAgIG1UZXh0dXJlMExvY2F0
aW9uKC0xKSwKKyAgICAgICAgICBtVGV4dHVyZTFMb2NhdGlvbigtMSkKKyAgICB7CisgICAgfQor
CisgICAgc3RkOjpzdHJpbmcgZ2V0VmVydGV4U2hhZGVyU291cmNlKCkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIHJldHVybiBzdGQ6OnN0cmluZygKKyAgICAgICAgICAgICIjdmVyc2lvbiAzMDAg
ZXNcbiIKKyAgICAgICAgICAgICJpbiB2ZWM0IHBvc2l0aW9uO1xuIgorICAgICAgICAgICAgInZv
aWQgbWFpbigpXG4iCisgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgIiAgICBnbF9Qb3Np
dGlvbiA9IHZlYzQocG9zaXRpb24ueHksIDAuMCwgMS4wKTtcbiIKKyAgICAgICAgICAgICJ9XG4i
KTsKKyAgICB9CisKKyAgICBzdGQ6OnN0cmluZyBnZXRGcmFnbWVudFNoYWRlclNvdXJjZSgpIG92
ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoCisgICAgICAgICAgICAi
I3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xu
IgorICAgICAgICAgICAgInVuaWZvcm0gaGlnaHAgc2FtcGxlcjJEIHRleDJEQXJyYXlbMl07XG4i
CisgICAgICAgICAgICAib3V0IHZlYzQgZnJhZ0NvbG9yO1xuIgorICAgICAgICAgICAgInZvaWQg
bWFpbigpXG4iCisgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgIiAgICBmbG9hdCByZWQg
PSBmbG9hdCh0ZXh0dXJlU2l6ZSh0ZXgyREFycmF5WzBdLCAwKS54KSAvIDI1NS4wO1xuIgorICAg
ICAgICAgICAgIiAgICBmbG9hdCBncmVlbiA9IGZsb2F0KHRleHR1cmVTaXplKHRleDJEQXJyYXlb
MV0sIDApLngpIC8gMjU1LjA7XG4iCisgICAgICAgICAgICAiICAgIGZyYWdDb2xvciA9IHZlYzQo
cmVkLCBncmVlbiwgMC4wLCAxLjApO1xuIgorICAgICAgICAgICAgIn1cbiIpOworICAgIH0KKwor
ICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgVGV4Q29vcmREcmF3VGVz
dDo6U2V0VXAoKTsKKworICAgICAgICBzZXRVcFByb2dyYW0oKTsKKworICAgICAgICBtVGV4dHVy
ZTBMb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidGV4MkRBcnJheVsw
XSIpOworICAgICAgICBBU1NFUlRfTkUoLTEsIG1UZXh0dXJlMExvY2F0aW9uKTsKKyAgICAgICAg
bVRleHR1cmUxTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInRleDJE
QXJyYXlbMV0iKTsKKyAgICAgICAgQVNTRVJUX05FKC0xLCBtVGV4dHVyZTFMb2NhdGlvbik7CisK
KyAgICAgICAgbVRleHR1cmUyREEgPSBjcmVhdGUyRFRleHR1cmUoKTsKKyAgICAgICAgbVRleHR1
cmUyREIgPSBjcmVhdGUyRFRleHR1cmUoKTsKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBn
bERlbGV0ZVRleHR1cmVzKDEsICZtVGV4dHVyZTJEQSk7CisgICAgICAgIGdsRGVsZXRlVGV4dHVy
ZXMoMSwgJm1UZXh0dXJlMkRCKTsKKyAgICAgICAgVGV4Q29vcmREcmF3VGVzdDo6VGVhckRvd24o
KTsKKyAgICB9CisKKyAgICBHTHVpbnQgbVRleHR1cmUyREE7CisgICAgR0x1aW50IG1UZXh0dXJl
MkRCOworICAgIEdMaW50IG1UZXh0dXJlMExvY2F0aW9uOworICAgIEdMaW50IG1UZXh0dXJlMUxv
Y2F0aW9uOworfTsKKworY2xhc3MgVGV4dHVyZTNEVGVzdEVTMyA6IHB1YmxpYyBUZXhDb29yZERy
YXdUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBUZXh0dXJlM0RUZXN0RVMzKCkgOiBUZXhDb29y
ZERyYXdUZXN0KCksIG1UZXh0dXJlM0QoMCksIG1UZXh0dXJlM0RVbmlmb3JtTG9jYXRpb24oLTEp
IHt9CisKKyAgICBzdGQ6OnN0cmluZyBnZXRWZXJ0ZXhTaGFkZXJTb3VyY2UoKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKAorICAgICAgICAgICAgIiN2ZXJzaW9u
IDMwMCBlc1xuIgorICAgICAgICAgICAgIm91dCB2ZWMyIHRleGNvb3JkO1xuIgorICAgICAgICAg
ICAgImluIHZlYzQgcG9zaXRpb247XG4iCisgICAgICAgICAgICAidm9pZCBtYWluKClcbiIKKyAg
ICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3Np
dGlvbi54eSwgMC4wLCAxLjApO1xuIgorICAgICAgICAgICAgIiAgICB0ZXhjb29yZCA9IChwb3Np
dGlvbi54eSAqIDAuNSkgKyAwLjU7XG4iCisgICAgICAgICAgICAifVxuIik7CisgICAgfQorCisg
ICAgc3RkOjpzdHJpbmcgZ2V0RnJhZ21lbnRTaGFkZXJTb3VyY2UoKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKAorICAgICAgICAgICAgIiN2ZXJzaW9uIDMwMCBl
c1xuIgorICAgICAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKKyAgICAgICAgICAg
ICJ1bmlmb3JtIGhpZ2hwIHNhbXBsZXIzRCB0ZXgzRDtcbiIKKyAgICAgICAgICAgICJpbiB2ZWMy
IHRleGNvb3JkO1xuIgorICAgICAgICAgICAgIm91dCB2ZWM0IGZyYWdDb2xvcjtcbiIKKyAgICAg
ICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICIg
ICAgZnJhZ0NvbG9yID0gdGV4dHVyZSh0ZXgzRCwgdmVjMyh0ZXhjb29yZCwgMC4wKSk7XG4iCisg
ICAgICAgICAgICAifVxuIik7CisgICAgfQorCisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBUZXhDb29yZERyYXdUZXN0OjpTZXRVcCgpOworCisgICAgICAgIGdsR2Vu
VGV4dHVyZXMoMSwgJm1UZXh0dXJlM0QpOworCisgICAgICAgIHNldFVwUHJvZ3JhbSgpOworCisg
ICAgICAgIG1UZXh0dXJlM0RVbmlmb3JtTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbiht
UHJvZ3JhbSwgInRleDNEIik7CisgICAgICAgIEFTU0VSVF9ORSgtMSwgbVRleHR1cmUzRFVuaWZv
cm1Mb2NhdGlvbik7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAg
eworICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtVGV4dHVyZTNEKTsKKyAgICAgICAgVGV4
Q29vcmREcmF3VGVzdDo6VGVhckRvd24oKTsKKyAgICB9CisKKyAgICBHTHVpbnQgbVRleHR1cmUz
RDsKKyAgICBHTGludCBtVGV4dHVyZTNEVW5pZm9ybUxvY2F0aW9uOworfTsKKworY2xhc3MgU2hh
ZG93U2FtcGxlclBsdXNTYW1wbGVyM0RUZXN0RVMzIDogcHVibGljIFRleENvb3JkRHJhd1Rlc3QK
K3sKKyAgcHJvdGVjdGVkOgorICAgIFNoYWRvd1NhbXBsZXJQbHVzU2FtcGxlcjNEVGVzdEVTMygp
CisgICAgICAgIDogVGV4Q29vcmREcmF3VGVzdCgpLAorICAgICAgICAgIG1UZXh0dXJlU2hhZG93
KDApLAorICAgICAgICAgIG1UZXh0dXJlM0QoMCksCisgICAgICAgICAgbVRleHR1cmVTaGFkb3dV
bmlmb3JtTG9jYXRpb24oLTEpLAorICAgICAgICAgIG1UZXh0dXJlM0RVbmlmb3JtTG9jYXRpb24o
LTEpLAorICAgICAgICAgIG1EZXB0aFJlZlVuaWZvcm1Mb2NhdGlvbigtMSkKKyAgICB7CisgICAg
fQorCisgICAgc3RkOjpzdHJpbmcgZ2V0VmVydGV4U2hhZGVyU291cmNlKCkgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIHJldHVybiBzdGQ6OnN0cmluZygKKyAgICAgICAgICAgICIjdmVyc2lvbiAz
MDAgZXNcbiIKKyAgICAgICAgICAgICJvdXQgdmVjMiB0ZXhjb29yZDtcbiIKKyAgICAgICAgICAg
ICJpbiB2ZWM0IHBvc2l0aW9uO1xuIgorICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAg
ICAgICAgICAie1xuIgorICAgICAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRp
b24ueHksIDAuMCwgMS4wKTtcbiIKKyAgICAgICAgICAgICIgICAgdGV4Y29vcmQgPSAocG9zaXRp
b24ueHkgKiAwLjUpICsgMC41O1xuIgorICAgICAgICAgICAgIn1cbiIpOworICAgIH0KKworICAg
IHN0ZDo6c3RyaW5nIGdldEZyYWdtZW50U2hhZGVyU291cmNlKCkgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIHJldHVybiBzdGQ6OnN0cmluZygKKyAgICAgICAgICAgICIjdmVyc2lvbiAzMDAgZXNc
biIKKyAgICAgICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCisgICAgICAgICAgICAi
dW5pZm9ybSBoaWdocCBzYW1wbGVyMkRTaGFkb3cgdGV4MkRTaGFkb3c7XG4iCisgICAgICAgICAg
ICAidW5pZm9ybSBoaWdocCBzYW1wbGVyM0QgdGV4M0Q7XG4iCisgICAgICAgICAgICAiaW4gdmVj
MiB0ZXhjb29yZDtcbiIKKyAgICAgICAgICAgICJ1bmlmb3JtIGZsb2F0IGRlcHRoUmVmO1xuIgor
ICAgICAgICAgICAgIm91dCB2ZWM0IGZyYWdDb2xvcjtcbiIKKyAgICAgICAgICAgICJ2b2lkIG1h
aW4oKVxuIgorICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICIgICAgZnJhZ0NvbG9yID0g
dmVjNCh0ZXh0dXJlKHRleDJEU2hhZG93LCB2ZWMzKHRleGNvb3JkLCBkZXB0aFJlZikpICogMC41
KTtcbiIKKyAgICAgICAgICAgICIgICAgZnJhZ0NvbG9yICs9IHRleHR1cmUodGV4M0QsIHZlYzMo
dGV4Y29vcmQsIDAuMCkpO1xuIgorICAgICAgICAgICAgIn1cbiIpOworICAgIH0KKworICAgIHZv
aWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgVGV4Q29vcmREcmF3VGVzdDo6U2V0
VXAoKTsKKworICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtVGV4dHVyZTNEKTsKKworICAgICAg
ICBnbEdlblRleHR1cmVzKDEsICZtVGV4dHVyZVNoYWRvdyk7CisgICAgICAgIGdsQmluZFRleHR1
cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVTaGFkb3cpOworICAgICAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9DT01QQVJFX01PREUsIEdMX0NPTVBBUkVfUkVG
X1RPX1RFWFRVUkUpOworCisgICAgICAgIHNldFVwUHJvZ3JhbSgpOworCisgICAgICAgIG1UZXh0
dXJlU2hhZG93VW5pZm9ybUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0s
ICJ0ZXgyRFNoYWRvdyIpOworICAgICAgICBBU1NFUlRfTkUoLTEsIG1UZXh0dXJlU2hhZG93VW5p
Zm9ybUxvY2F0aW9uKTsKKyAgICAgICAgbVRleHR1cmUzRFVuaWZvcm1Mb2NhdGlvbiA9IGdsR2V0
VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidGV4M0QiKTsKKyAgICAgICAgQVNTRVJUX05FKC0x
LCBtVGV4dHVyZTNEVW5pZm9ybUxvY2F0aW9uKTsKKyAgICAgICAgbURlcHRoUmVmVW5pZm9ybUxv
Y2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJkZXB0aFJlZiIpOworICAg
ICAgICBBU1NFUlRfTkUoLTEsIG1EZXB0aFJlZlVuaWZvcm1Mb2NhdGlvbik7CisgICAgfQorCisg
ICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBnbERlbGV0ZVRleHR1
cmVzKDEsICZtVGV4dHVyZVNoYWRvdyk7CisgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1U
ZXh0dXJlM0QpOworICAgICAgICBUZXhDb29yZERyYXdUZXN0OjpUZWFyRG93bigpOworICAgIH0K
KworICAgIEdMdWludCBtVGV4dHVyZVNoYWRvdzsKKyAgICBHTHVpbnQgbVRleHR1cmUzRDsKKyAg
ICBHTGludCBtVGV4dHVyZVNoYWRvd1VuaWZvcm1Mb2NhdGlvbjsKKyAgICBHTGludCBtVGV4dHVy
ZTNEVW5pZm9ybUxvY2F0aW9uOworICAgIEdMaW50IG1EZXB0aFJlZlVuaWZvcm1Mb2NhdGlvbjsK
K307CisKK2NsYXNzIFNhbXBsZXJUeXBlTWl4VGVzdEVTMyA6IHB1YmxpYyBUZXhDb29yZERyYXdU
ZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBTYW1wbGVyVHlwZU1peFRlc3RFUzMoKQorICAgICAg
ICA6IFRleENvb3JkRHJhd1Rlc3QoKSwKKyAgICAgICAgICBtVGV4dHVyZTJEKDApLAorICAgICAg
ICAgIG1UZXh0dXJlQ3ViZSgwKSwKKyAgICAgICAgICBtVGV4dHVyZTJEU2hhZG93KDApLAorICAg
ICAgICAgIG1UZXh0dXJlQ3ViZVNoYWRvdygwKSwKKyAgICAgICAgICBtVGV4dHVyZTJEVW5pZm9y
bUxvY2F0aW9uKC0xKSwKKyAgICAgICAgICBtVGV4dHVyZUN1YmVVbmlmb3JtTG9jYXRpb24oLTEp
LAorICAgICAgICAgIG1UZXh0dXJlMkRTaGFkb3dVbmlmb3JtTG9jYXRpb24oLTEpLAorICAgICAg
ICAgIG1UZXh0dXJlQ3ViZVNoYWRvd1VuaWZvcm1Mb2NhdGlvbigtMSksCisgICAgICAgICAgbURl
cHRoUmVmVW5pZm9ybUxvY2F0aW9uKC0xKQorICAgIHsKKyAgICB9CisKKyAgICBzdGQ6OnN0cmlu
ZyBnZXRWZXJ0ZXhTaGFkZXJTb3VyY2UoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6c3RyaW5nKAorICAgICAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAg
ICAgIm91dCB2ZWMyIHRleGNvb3JkO1xuIgorICAgICAgICAgICAgImluIHZlYzQgcG9zaXRpb247
XG4iCisgICAgICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgICAgICJ7XG4iCisgICAg
ICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbi54eSwgMC4wLCAxLjApO1xu
IgorICAgICAgICAgICAgIiAgICB0ZXhjb29yZCA9IChwb3NpdGlvbi54eSAqIDAuNSkgKyAwLjU7
XG4iCisgICAgICAgICAgICAifVxuIik7CisgICAgfQorCisgICAgc3RkOjpzdHJpbmcgZ2V0RnJh
Z21lbnRTaGFkZXJTb3VyY2UoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
c3RyaW5nKAorICAgICAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAgICAgInBy
ZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKKyAgICAgICAgICAgICJ1bmlmb3JtIGhpZ2hwIHNhbXBs
ZXIyRCB0ZXgyRDtcbiIKKyAgICAgICAgICAgICJ1bmlmb3JtIGhpZ2hwIHNhbXBsZXJDdWJlIHRl
eEN1YmU7XG4iCisgICAgICAgICAgICAidW5pZm9ybSBoaWdocCBzYW1wbGVyMkRTaGFkb3cgdGV4
MkRTaGFkb3c7XG4iCisgICAgICAgICAgICAidW5pZm9ybSBoaWdocCBzYW1wbGVyQ3ViZVNoYWRv
dyB0ZXhDdWJlU2hhZG93O1xuIgorICAgICAgICAgICAgImluIHZlYzIgdGV4Y29vcmQ7XG4iCisg
ICAgICAgICAgICAidW5pZm9ybSBmbG9hdCBkZXB0aFJlZjtcbiIKKyAgICAgICAgICAgICJvdXQg
dmVjNCBmcmFnQ29sb3I7XG4iCisgICAgICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAg
ICAgICJ7XG4iCisgICAgICAgICAgICAiICAgIGZyYWdDb2xvciA9IHRleHR1cmUodGV4MkQsIHRl
eGNvb3JkKTtcbiIKKyAgICAgICAgICAgICIgICAgZnJhZ0NvbG9yICs9IHRleHR1cmUodGV4Q3Vi
ZSwgdmVjMygxLjAsIDAuMCwgMC4wKSk7XG4iCisgICAgICAgICAgICAiICAgIGZyYWdDb2xvciAr
PSB2ZWM0KHRleHR1cmUodGV4MkRTaGFkb3csIHZlYzModGV4Y29vcmQsIGRlcHRoUmVmKSkgKiAw
LjI1KTtcbiIKKyAgICAgICAgICAgICIgICAgZnJhZ0NvbG9yICs9IHZlYzQodGV4dHVyZSh0ZXhD
dWJlU2hhZG93LCB2ZWM0KDEuMCwgMC4wLCAwLjAsIGRlcHRoUmVmKSkgKiAiCisgICAgICAgICAg
ICAiMC4xMjUpO1xuIgorICAgICAgICAgICAgIn1cbiIpOworICAgIH0KKworICAgIHZvaWQgU2V0
VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgVGV4Q29vcmREcmF3VGVzdDo6U2V0VXAoKTsK
KworICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtVGV4dHVyZTJEKTsKKyAgICAgICAgZ2xHZW5U
ZXh0dXJlcygxLCAmbVRleHR1cmVDdWJlKTsKKworICAgICAgICBnbEdlblRleHR1cmVzKDEsICZt
VGV4dHVyZTJEU2hhZG93KTsKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBt
VGV4dHVyZTJEU2hhZG93KTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfQ09NUEFSRV9NT0RFLCBHTF9DT01QQVJFX1JFRl9UT19URVhUVVJFKTsKKwor
ICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtVGV4dHVyZUN1YmVTaGFkb3cpOworICAgICAgICBn
bEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIG1UZXh0dXJlQ3ViZVNoYWRvdyk7Cisg
ICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0NVQkVfTUFQLCBHTF9URVhUVVJFX0NP
TVBBUkVfTU9ERSwgR0xfQ09NUEFSRV9SRUZfVE9fVEVYVFVSRSk7CisKKyAgICAgICAgc2V0VXBQ
cm9ncmFtKCk7CisKKyAgICAgICAgbVRleHR1cmUyRFVuaWZvcm1Mb2NhdGlvbiA9IGdsR2V0VW5p
Zm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidGV4MkQiKTsKKyAgICAgICAgQVNTRVJUX05FKC0xLCBt
VGV4dHVyZTJEVW5pZm9ybUxvY2F0aW9uKTsKKyAgICAgICAgbVRleHR1cmVDdWJlVW5pZm9ybUxv
Y2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ0ZXhDdWJlIik7CisgICAg
ICAgIEFTU0VSVF9ORSgtMSwgbVRleHR1cmVDdWJlVW5pZm9ybUxvY2F0aW9uKTsKKyAgICAgICAg
bVRleHR1cmUyRFNoYWRvd1VuaWZvcm1Mb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Q
cm9ncmFtLCAidGV4MkRTaGFkb3ciKTsKKyAgICAgICAgQVNTRVJUX05FKC0xLCBtVGV4dHVyZTJE
U2hhZG93VW5pZm9ybUxvY2F0aW9uKTsKKyAgICAgICAgbVRleHR1cmVDdWJlU2hhZG93VW5pZm9y
bUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ0ZXhDdWJlU2hhZG93
Iik7CisgICAgICAgIEFTU0VSVF9ORSgtMSwgbVRleHR1cmVDdWJlU2hhZG93VW5pZm9ybUxvY2F0
aW9uKTsKKyAgICAgICAgbURlcHRoUmVmVW5pZm9ybUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9j
YXRpb24obVByb2dyYW0sICJkZXB0aFJlZiIpOworICAgICAgICBBU1NFUlRfTkUoLTEsIG1EZXB0
aFJlZlVuaWZvcm1Mb2NhdGlvbik7CisKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cisg
ICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBnbERl
bGV0ZVRleHR1cmVzKDEsICZtVGV4dHVyZTJEKTsKKyAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygx
LCAmbVRleHR1cmVDdWJlKTsKKyAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbVRleHR1cmUy
RFNoYWRvdyk7CisgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0dXJlQ3ViZVNoYWRv
dyk7CisgICAgICAgIFRleENvb3JkRHJhd1Rlc3Q6OlRlYXJEb3duKCk7CisgICAgfQorCisgICAg
R0x1aW50IG1UZXh0dXJlMkQ7CisgICAgR0x1aW50IG1UZXh0dXJlQ3ViZTsKKyAgICBHTHVpbnQg
bVRleHR1cmUyRFNoYWRvdzsKKyAgICBHTHVpbnQgbVRleHR1cmVDdWJlU2hhZG93OworICAgIEdM
aW50IG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRpb247CisgICAgR0xpbnQgbVRleHR1cmVDdWJlVW5p
Zm9ybUxvY2F0aW9uOworICAgIEdMaW50IG1UZXh0dXJlMkRTaGFkb3dVbmlmb3JtTG9jYXRpb247
CisgICAgR0xpbnQgbVRleHR1cmVDdWJlU2hhZG93VW5pZm9ybUxvY2F0aW9uOworICAgIEdMaW50
IG1EZXB0aFJlZlVuaWZvcm1Mb2NhdGlvbjsKK307CisKK2NsYXNzIFNhbXBsZXJJblN0cnVjdFRl
c3QgOiBwdWJsaWMgVGV4dHVyZTJEVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgU2FtcGxlcklu
U3RydWN0VGVzdCgpIDogVGV4dHVyZTJEVGVzdCgpIHt9CisKKyAgICBjb25zdCBjaGFyICpnZXRU
ZXh0dXJlVW5pZm9ybU5hbWUoKSBvdmVycmlkZSB7IHJldHVybiAidXMudGV4IjsgfQorCisgICAg
c3RkOjpzdHJpbmcgZ2V0RnJhZ21lbnRTaGFkZXJTb3VyY2UoKSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKAorICAgICAgICAgICAgInByZWNpc2lvbiBoaWdocCBm
bG9hdDtcbiIKKyAgICAgICAgICAgICJzdHJ1Y3QgU1xuIgorICAgICAgICAgICAgIntcbiIKKyAg
ICAgICAgICAgICIgICAgdmVjNCBhO1xuIgorICAgICAgICAgICAgIiAgICBoaWdocCBzYW1wbGVy
MkQgdGV4O1xuIgorICAgICAgICAgICAgIn07XG4iCisgICAgICAgICAgICAidW5pZm9ybSBTIHVz
O1xuIgorICAgICAgICAgICAgInZhcnlpbmcgdmVjMiB0ZXhjb29yZDtcbiIKKyAgICAgICAgICAg
ICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICIgICAgZ2xf
RnJhZ0NvbG9yID0gdGV4dHVyZTJEKHVzLnRleCwgdGV4Y29vcmQgKyB1cy5hLngpO1xuIgorICAg
ICAgICAgICAgIn1cbiIpOworICAgIH0KKworICAgIHZvaWQgcnVuU2FtcGxlckluU3RydWN0VGVz
dCgpCisgICAgeworICAgICAgICBzZXRVcFByb2dyYW0oKTsKKworICAgICAgICBnbEFjdGl2ZVRl
eHR1cmUoR0xfVEVYVFVSRTApOworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQs
IG1UZXh0dXJlMkQpOworICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xf
UkdCQSwgMSwgMSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAg
ICAgICAgICZHTENvbG9yOjpncmVlbik7CisgICAgICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9z
aXRpb24iLCAwLjVmKTsKKyAgICAgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29s
b3I6OmdyZWVuKTsKKyAgICB9Cit9OworCitjbGFzcyBTYW1wbGVySW5TdHJ1Y3RBc0Z1bmN0aW9u
UGFyYW1ldGVyVGVzdCA6IHB1YmxpYyBTYW1wbGVySW5TdHJ1Y3RUZXN0Cit7CisgIHByb3RlY3Rl
ZDoKKyAgICBTYW1wbGVySW5TdHJ1Y3RBc0Z1bmN0aW9uUGFyYW1ldGVyVGVzdCgpIDogU2FtcGxl
ckluU3RydWN0VGVzdCgpIHt9CisKKyAgICBzdGQ6OnN0cmluZyBnZXRGcmFnbWVudFNoYWRlclNv
dXJjZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoCisgICAg
ICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgorICAgICAgICAgICAgInN0cnVjdCBT
XG4iCisgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgIiAgICB2ZWM0IGE7XG4iCisgICAg
ICAgICAgICAiICAgIGhpZ2hwIHNhbXBsZXIyRCB0ZXg7XG4iCisgICAgICAgICAgICAifTtcbiIK
KyAgICAgICAgICAgICJ1bmlmb3JtIFMgdXM7XG4iCisgICAgICAgICAgICAidmFyeWluZyB2ZWMy
IHRleGNvb3JkO1xuIgorICAgICAgICAgICAgInZlYzQgc2FtcGxlRnJvbShTIHMpIHtcbiIKKyAg
ICAgICAgICAgICIgICAgcmV0dXJuIHRleHR1cmUyRChzLnRleCwgdGV4Y29vcmQgKyBzLmEueCk7
XG4iCisgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAg
ICAgICAgICAie1xuIgorICAgICAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSBzYW1wbGVGcm9t
KHVzKTtcbiIKKyAgICAgICAgICAgICJ9XG4iKTsKKyAgICB9Cit9OworCitjbGFzcyBTYW1wbGVy
SW5TdHJ1Y3RBcnJheUFzRnVuY3Rpb25QYXJhbWV0ZXJUZXN0IDogcHVibGljIFNhbXBsZXJJblN0
cnVjdFRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIFNhbXBsZXJJblN0cnVjdEFycmF5QXNGdW5j
dGlvblBhcmFtZXRlclRlc3QoKSA6IFNhbXBsZXJJblN0cnVjdFRlc3QoKSB7fQorCisgICAgY29u
c3QgY2hhciAqZ2V0VGV4dHVyZVVuaWZvcm1OYW1lKCkgb3ZlcnJpZGUgeyByZXR1cm4gInVzWzBd
LnRleCI7IH0KKworICAgIHN0ZDo6c3RyaW5nIGdldEZyYWdtZW50U2hhZGVyU291cmNlKCkgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnN0cmluZygKKyAgICAgICAgICAgICJw
cmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCisgICAgICAgICAgICAic3RydWN0IFNcbiIKKyAgICAg
ICAgICAgICJ7XG4iCisgICAgICAgICAgICAiICAgIHZlYzQgYTtcbiIKKyAgICAgICAgICAgICIg
ICAgaGlnaHAgc2FtcGxlcjJEIHRleDtcbiIKKyAgICAgICAgICAgICJ9O1xuIgorICAgICAgICAg
ICAgInVuaWZvcm0gUyB1c1sxXTtcbiIKKyAgICAgICAgICAgICJ2YXJ5aW5nIHZlYzIgdGV4Y29v
cmQ7XG4iCisgICAgICAgICAgICAidmVjNCBzYW1wbGVGcm9tKFMgcykge1xuIgorICAgICAgICAg
ICAgIiAgICByZXR1cm4gdGV4dHVyZTJEKHMudGV4LCB0ZXhjb29yZCArIHMuYS54KTtcbiIKKyAg
ICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgICAg
ICJ7XG4iCisgICAgICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHNhbXBsZUZyb20odXNbMF0p
O1xuIgorICAgICAgICAgICAgIn1cbiIpOworICAgIH0KK307CisKK2NsYXNzIFNhbXBsZXJJbk5l
c3RlZFN0cnVjdEFzRnVuY3Rpb25QYXJhbWV0ZXJUZXN0IDogcHVibGljIFNhbXBsZXJJblN0cnVj
dFRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIFNhbXBsZXJJbk5lc3RlZFN0cnVjdEFzRnVuY3Rp
b25QYXJhbWV0ZXJUZXN0KCkgOiBTYW1wbGVySW5TdHJ1Y3RUZXN0KCkge30KKworICAgIGNvbnN0
IGNoYXIgKmdldFRleHR1cmVVbmlmb3JtTmFtZSgpIG92ZXJyaWRlIHsgcmV0dXJuICJ1c1swXS5z
dWIudGV4IjsgfQorCisgICAgc3RkOjpzdHJpbmcgZ2V0RnJhZ21lbnRTaGFkZXJTb3VyY2UoKSBv
dmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKAorICAgICAgICAgICAg
InByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKKyAgICAgICAgICAgICJzdHJ1Y3QgU1VCXG4iCisg
ICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgIiAgICB2ZWM0IGE7XG4iCisgICAgICAgICAg
ICAiICAgIGhpZ2hwIHNhbXBsZXIyRCB0ZXg7XG4iCisgICAgICAgICAgICAifTtcbiIKKyAgICAg
ICAgICAgICJzdHJ1Y3QgU1xuIgorICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICIgICAg
U1VCIHN1YjtcbiIKKyAgICAgICAgICAgICJ9O1xuIgorICAgICAgICAgICAgInVuaWZvcm0gUyB1
c1sxXTtcbiIKKyAgICAgICAgICAgICJ2YXJ5aW5nIHZlYzIgdGV4Y29vcmQ7XG4iCisgICAgICAg
ICAgICAidmVjNCBzYW1wbGVGcm9tKFNVQiBzKSB7XG4iCisgICAgICAgICAgICAiICAgIHJldHVy
biB0ZXh0dXJlMkQocy50ZXgsIHRleGNvb3JkICsgcy5hLngpO1xuIgorICAgICAgICAgICAgIn1c
biIKKyAgICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAgICAgIntcbiIKKyAgICAg
ICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gc2FtcGxlRnJvbSh1c1swXS5zdWIpO1xuIgorICAg
ICAgICAgICAgIn1cbiIpOworICAgIH0KK307CisKK2NsYXNzIFNhbXBsZXJJblN0cnVjdEFuZE90
aGVyVmFyaWFibGVUZXN0IDogcHVibGljIFNhbXBsZXJJblN0cnVjdFRlc3QKK3sKKyAgcHJvdGVj
dGVkOgorICAgIFNhbXBsZXJJblN0cnVjdEFuZE90aGVyVmFyaWFibGVUZXN0KCkgOiBTYW1wbGVy
SW5TdHJ1Y3RUZXN0KCkge30KKworICAgIHN0ZDo6c3RyaW5nIGdldEZyYWdtZW50U2hhZGVyU291
cmNlKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnN0cmluZygKKyAgICAg
ICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCisgICAgICAgICAgICAic3RydWN0IFNc
biIKKyAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAiICAgIHZlYzQgYTtcbiIKKyAgICAg
ICAgICAgICIgICAgaGlnaHAgc2FtcGxlcjJEIHRleDtcbiIKKyAgICAgICAgICAgICJ9O1xuIgor
ICAgICAgICAgICAgInVuaWZvcm0gUyB1cztcbiIKKyAgICAgICAgICAgICJ1bmlmb3JtIGZsb2F0
IHVzX3RleDtcbiIKKyAgICAgICAgICAgICJ2YXJ5aW5nIHZlYzIgdGV4Y29vcmQ7XG4iCisgICAg
ICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAi
ICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh1cy50ZXgsIHRleGNvb3JkICsgdXMuYS54ICsg
dXNfdGV4KTtcbiIKKyAgICAgICAgICAgICJ9XG4iKTsKKyAgICB9Cit9OworCitURVNUX1AoVGV4
dHVyZTJEVGVzdCwgTmVnYXRpdmVBUElTdWJJbWFnZSkKK3sKKyAgICBnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9OT19FUlJP
Uik7CisKKyAgICBzZXRVcFByb2dyYW0oKTsKKworICAgIGNvbnN0IEdMdWJ5dGUgKnBpeGVsc1sy
MF0gPSB7IDAgfTsKKyAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMSwgMSwg
MSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzKTsKKyAgICBFWFBFQ1RfR0xf
RVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Cit9CisKKy8vIFRlc3QgdGhhdCBxdWVyeWluZyBHTF9U
RVhUVVJFX0JJTkRJTkcqIGRvZXNuJ3QgY2F1c2UgYW4gdW5leHBlY3RlZCBlcnJvci4KK1RFU1Rf
UChUZXh0dXJlMkRUZXN0LCBRdWVyeUJpbmRpbmcpCit7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9U
RVhUVVJFXzJELCAwKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfTk9fRVJST1IpOworCisgICAg
R0xpbnQgdGV4dHVyZUJpbmRpbmc7CisgICAgZ2xHZXRJbnRlZ2VydihHTF9URVhUVVJFX0JJTkRJ
TkdfMkQsICZ0ZXh0dXJlQmluZGluZyk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAg
RVhQRUNUX0VRKDAsIHRleHR1cmVCaW5kaW5nKTsKKworICAgIGdsR2V0SW50ZWdlcnYoR0xfVEVY
VFVSRV9CSU5ESU5HX0VYVEVSTkFMX09FUywgJnRleHR1cmVCaW5kaW5nKTsKKyAgICBpZiAoZXh0
ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpIHx8CisgICAgICAgIGV4
dGVuc2lvbkVuYWJsZWQoIkdMX05WX0VHTF9zdHJlYW1fY29uc3VtZXJfZXh0ZXJuYWwiKSkKKyAg
ICB7CisgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgICAgICBFWFBFQ1RfRVEoMCwg
dGV4dHVyZUJpbmRpbmcpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBFWFBFQ1Rf
R0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICB9Cit9CisKK1RFU1RfUChUZXh0dXJlMkRU
ZXN0LCBaZXJvU2l6ZWRVcGxvYWRzKQoreworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8y
RCwgbVRleHR1cmUyRCk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX05PX0VSUk9SKTsKKworICAg
IHNldFVwUHJvZ3JhbSgpOworCisgICAgLy8gVXNlIHRoZSB0ZXh0dXJlIGZpcnN0IHRvIG1ha2Ug
c3VyZSBpdCdzIGluIHZpZGVvIG1lbW9yeQorICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7Cisg
ICAgZ2xVbmlmb3JtMWkobVRleHR1cmUyRFVuaWZvcm1Mb2NhdGlvbiwgMCk7CisgICAgZHJhd1F1
YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworCisgICAgY29uc3QgR0x1Ynl0ZSAqcGl4
ZWxbNF0gPSB7IDAgfTsKKworICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCAw
LCAwLCAwLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbCk7CisgICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7CisKKyAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwg
MCwgMCwgMCwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWwpOworICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOworCisgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAs
IDAsIDAsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVsKTsKKyAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKK30KKworLy8gVGVzdCBkcmF3aW5nIHdpdGggdHdvIHRleHR1cmUg
dHlwZXMsIHRvIHRyaWdnZXIgYW4gQU5HTEUgYnVnIGluIHZhbGlkYXRpb24KK1RFU1RfUChUZXh0
dXJlQ3ViZVRlc3QsIEN1YmVNYXBCdWcpCit7CisgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRV
UkUwKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOworICAg
IGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMSk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFX0NVQkVfTUFQLCBtVGV4dHVyZUN1YmUpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9OT19F
UlJPUik7CisKKyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworICAgIGdsVW5pZm9ybTFpKG1U
ZXh0dXJlMkRVbmlmb3JtTG9jYXRpb24sIDApOworICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJlQ3Vi
ZVVuaWZvcm1Mb2NhdGlvbiwgMSk7CisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIs
IDAuNWYpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworfQorCisvLyBUZXN0IGRyYXdpbmcg
d2l0aCB0d28gdGV4dHVyZSB0eXBlcyBhY2Nlc3NlZCBmcm9tIHRoZSBzYW1lIHNoYWRlciBhbmQg
Y2hlY2sgdGhhdCB0aGUgcmVzdWx0IG9mCisvLyBkcmF3aW5nIGlzIGNvcnJlY3QuCitURVNUX1Ao
VGV4dHVyZUN1YmVUZXN0LCBDdWJlTWFwRHJhdykKK3sKKyAgICBHTHVieXRlIHRleERhdGFbNF07
CisgICAgdGV4RGF0YVswXSA9IDA7CisgICAgdGV4RGF0YVsxXSA9IDYwOworICAgIHRleERhdGFb
Ml0gPSAwOworICAgIHRleERhdGFbM10gPSAyNTU7CisKKyAgICBnbEFjdGl2ZVRleHR1cmUoR0xf
VEVYVFVSRTApOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7
CisgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDEsIDEsIEdMX1JH
QkEsIEdMX1VOU0lHTkVEX0JZVEUsIHRleERhdGEpOworCisgICAgZ2xBY3RpdmVUZXh0dXJlKEdM
X1RFWFRVUkUxKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIG1UZXh0
dXJlQ3ViZSk7CisgICAgdGV4RGF0YVsxXSA9IDEyMDsKKyAgICBnbFRleFN1YkltYWdlMkQoR0xf
VEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAwLCAwLCAwLCAxLCAxLCBHTF9SR0JBLCBHTF9V
TlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICAgICB0ZXhEYXRhKTsKKyAgICBFWFBFQ1Rf
R0xfRVJST1IoR0xfTk9fRVJST1IpOworCisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKKyAg
ICBnbFVuaWZvcm0xaShtVGV4dHVyZTJEVW5pZm9ybUxvY2F0aW9uLCAwKTsKKyAgICBnbFVuaWZv
cm0xaShtVGV4dHVyZUN1YmVVbmlmb3JtTG9jYXRpb24sIDEpOworICAgIGRyYXdRdWFkKG1Qcm9n
cmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAg
IGludCBweCA9IGdldFdpbmRvd1dpZHRoKCkgLSAxOworICAgIGludCBweSA9IDA7CisgICAgRVhQ
RUNUX1BJWEVMX05FQVIocHgsIHB5LCAwLCAxODAsIDAsIDI1NSwgMik7Cit9CisKK1RFU1RfUChT
YW1wbGVyMkRBc0Z1bmN0aW9uUGFyYW1ldGVyVGVzdCwgU2FtcGxlcjJEQXNGdW5jdGlvblBhcmFt
ZXRlcikKK3sKKyAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOworICAgIGdsQmluZFRl
eHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7CisgICAgR0x1Ynl0ZSB0ZXhEYXRhWzRd
OworICAgIHRleERhdGFbMF0gPSAwOworICAgIHRleERhdGFbMV0gPSAxMjg7CisgICAgdGV4RGF0
YVsyXSA9IDA7CisgICAgdGV4RGF0YVszXSA9IDI1NTsKKyAgICBnbFRleFN1YkltYWdlMkQoR0xf
VEVYVFVSRV8yRCwgMCwgMCwgMCwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgdGV4
RGF0YSk7CisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICBnbFVuaWZvcm0xaShtVGV4
dHVyZTJEVW5pZm9ybUxvY2F0aW9uLCAwKTsKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0
aW9uIiwgMC41Zik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBFWFBFQ1RfUElY
RUxfTkVBUigwLCAwLCAwLCAxMjgsIDAsIDI1NSwgMik7Cit9CisKKy8vIFRlc3QgZHJhd2luZyB3
aXRoIHR3byB0ZXh0dXJlcyBwYXNzZWQgdG8gdGhlIHNoYWRlciBpbiBhIHNhbXBsZXIgYXJyYXku
CitURVNUX1AoU2FtcGxlckFycmF5VGVzdCwgU2FtcGxlckFycmF5RHJhdykKK3sKKyAgICB0ZXN0
U2FtcGxlckFycmF5RHJhdygpOworfQorCisvLyBUZXN0IGRyYXdpbmcgd2l0aCB0d28gdGV4dHVy
ZXMgcGFzc2VkIHRvIHRoZSBzaGFkZXIgaW4gYSBzYW1wbGVyIGFycmF5IHdoaWNoIGlzIHBhc3Nl
ZCB0byBhCisvLyB1c2VyLWRlZmluZWQgZnVuY3Rpb24gaW4gdGhlIHNoYWRlci4KK1RFU1RfUChT
YW1wbGVyQXJyYXlBc0Z1bmN0aW9uUGFyYW1ldGVyVGVzdCwgU2FtcGxlckFycmF5QXNGdW5jdGlv
blBhcmFtZXRlcikKK3sKKyAgICB0ZXN0U2FtcGxlckFycmF5RHJhdygpOworfQorCisvLyBDb3B5
IG9mIGEgdGVzdCBpbiBjb25mb3JtYW5jZS90ZXh0dXJlcy90ZXh0dXJlLW1pcHMsIHRvIHRlc3Qg
Z2VuZXJhdGUgbWlwbWFwcworVEVTVF9QKFRleHR1cmUyRFRlc3RXaXRoRHJhd1NjYWxlLCBNaXBt
YXBzVHdpY2UpCit7CisgICAgaW50IHB4ID0gZ2V0V2luZG93V2lkdGgoKSAvIDI7CisgICAgaW50
IHB5ID0gZ2V0V2luZG93SGVpZ2h0KCkgLyAyOworCisgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RF
WFRVUkUwKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOwor
CisgICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gcGl4ZWxzUmVkKDE2dSAqIDE2dSwgR0xDb2xvcjo6
cmVkKTsKKworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxNiwg
MTYsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVsc1JlZC5kYXRhKCkpOworICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdM
X0xJTkVBUl9NSVBNQVBfTkVBUkVTVCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
MkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICBnbEdlbmVyYXRlTWlw
bWFwKEdMX1RFWFRVUkVfMkQpOworCisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICBn
bFVuaWZvcm0xaShtVGV4dHVyZTJEVW5pZm9ybUxvY2F0aW9uLCAwKTsKKyAgICBnbFVuaWZvcm0y
ZihtRHJhd1NjYWxlVW5pZm9ybUxvY2F0aW9uLCAwLjA2MjVmLCAwLjA2MjVmKTsKKyAgICBkcmF3
UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKHB4LCBweSwgR0xDb2xvcjo6cmVkKTsKKwor
ICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHBpeGVsc0JsdWUoMTZ1ICogMTZ1LCBHTENvbG9yOjpi
bHVlKTsKKworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxNiwg
MTYsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgIHBpeGVs
c0JsdWUuZGF0YSgpKTsKKyAgICBnbEdlbmVyYXRlTWlwbWFwKEdMX1RFWFRVUkVfMkQpOworCisg
ICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gcGl4ZWxzR3JlZW4oMTZ1ICogMTZ1LCBHTENvbG9yOjpn
cmVlbik7CisKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMTYs
IDE2LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICBwaXhl
bHNHcmVlbi5kYXRhKCkpOworICAgIGdsR2VuZXJhdGVNaXBtYXAoR0xfVEVYVFVSRV8yRCk7CisK
KyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisKKyAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEocHgsIHB5LCBHTENvbG9y
OjpncmVlbik7Cit9CisKKy8vIFRlc3QgY3JlYXRpbmcgYSBGQk8gd2l0aCBhIGN1YmUgbWFwIHJl
bmRlciB0YXJnZXQsIHRvIHRlc3QgYW4gQU5HTEUgYnVnCisvLyBodHRwczovL2NvZGUuZ29vZ2xl
LmNvbS9wL2FuZ2xlcHJvamVjdC9pc3N1ZXMvZGV0YWlsP2lkPTg0OQorVEVTVF9QKFRleHR1cmVD
dWJlVGVzdCwgQ3ViZU1hcEZCTykKK3sKKyAgICBHTHVpbnQgZmJvOworICAgIGdsR2VuRnJhbWVi
dWZmZXJzKDEsICZmYm8pOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBm
Ym8pOworCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFX0NVQkVfTUFQLCBtVGV4dHVyZUN1
YmUpOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9S
X0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ksIG1UZXh0dXJlQ3Vi
ZSwgMCk7CisKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFLCBn
bENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKKworICAgIGdsRGVsZXRl
RnJhbWVidWZmZXJzKDEsICZmYm8pOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9CisK
Ky8vIFRlc3QgdGhhdCBnbFRleFN1YkltYWdlMkQgd29ya3MgcHJvcGVybHkgd2hlbiBnbFRleFN0
b3JhZ2UyREVYVCBoYXMgaW5pdGlhbGl6ZWQgdGhlIGltYWdlIHdpdGggYSBkZWZhdWx0IGNvbG9y
LgorVEVTVF9QKFRleHR1cmUyRFRlc3QsIFRleFN0b3JhZ2UpCit7CisgICAgaW50IHdpZHRoID0g
Z2V0V2luZG93V2lkdGgoKTsKKyAgICBpbnQgaGVpZ2h0ID0gZ2V0V2luZG93SGVpZ2h0KCk7CisK
KyAgICBHTHVpbnQgdGV4MkQ7CisgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4MkQpOworICAgIGds
QWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
XzJELCB0ZXgyRCk7CisKKyAgICAvLyBGaWxsIHdpdGggcmVkCisgICAgc3RkOjp2ZWN0b3I8R0x1
Ynl0ZT4gcGl4ZWxzKDMgKiAxNiAqIDE2KTsKKyAgICBmb3IgKHNpemVfdCBwaXhlbElkID0gMDsg
cGl4ZWxJZCA8IDE2ICogMTY7ICsrcGl4ZWxJZCkKKyAgICB7CisgICAgICAgIHBpeGVsc1twaXhl
bElkICogMyArIDBdID0gMjU1OworICAgICAgICBwaXhlbHNbcGl4ZWxJZCAqIDMgKyAxXSA9IDA7
CisgICAgICAgIHBpeGVsc1twaXhlbElkICogMyArIDJdID0gMDsKKyAgICB9CisKKyAgICAvLyBB
TkdMRSBpbnRlcm5hbGx5IHVzZXMgUkdCQSBhcyB0aGUgRGlyZWN0WCBmb3JtYXQgZm9yIFJHQiBp
bWFnZXMKKyAgICAvLyB0aGVyZWZvcmUgZ2xUZXhTdG9yYWdlMkRFWFQgaW5pdGlhbGl6ZXMgdGhl
IGltYWdlIHRvIGEgZGVmYXVsdCBjb2xvciB0byBnZXQgYSBjb25zaXN0ZW50IGFscGhhIGNvbG9y
LgorICAgIC8vIFRoZSBkYXRhIGlzIGtlcHQgaW4gYSBDUFUtc2lkZSBpbWFnZSBhbmQgdGhlIGlt
YWdlIGlzIG1hcmtlZCBhcyBkaXJ0eS4KKyAgICBnbFRleFN0b3JhZ2UyREVYVChHTF9URVhUVVJF
XzJELCAxLCBHTF9SR0I4LCAxNiwgMTYpOworCisgICAgLy8gSW5pdGlhbGl6ZXMgdGhlIGNvbG9y
IG9mIHRoZSB1cHBlci1sZWZ0IDh4OCBwaXhlbHMsIGxlYXZlcyB0aGUgb3RoZXIgcGl4ZWxzIHVu
dG91Y2hlZC4KKyAgICAvLyBnbFRleFN1YkltYWdlMkQgc2hvdWxkIHRha2UgaW50byBhY2NvdW50
IHRoYXQgdGhlIGltYWdlIGlzIGRpcnR5LgorICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJF
XzJELCAwLCAwLCAwLCA4LCA4LCBHTF9SR0IsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVscy5kYXRh
KCkpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9G
SUxURVIsIEdMX0xJTkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdM
X1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKKworICAgIHNldFVwUHJvZ3JhbSgpOwor
CisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICBnbFVuaWZvcm0xaShtVGV4dHVyZTJE
VW5pZm9ybUxvY2F0aW9uLCAwKTsKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwg
MC41Zik7CisgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGV4MkQpOworICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOworICAgIEVYUEVDVF9QSVhFTF9FUSh3aWR0aCAvIDQsIGhlaWdodCAvIDQsIDI1
NSwgMCwgMCwgMjU1KTsKKworICAgIC8vIFZhbGlkYXRlIHRoYXQgdGhlIHJlZ2lvbiBvZiB0aGUg
dGV4dHVyZSB3aXRob3V0IGRhdGEgaGFzIGFuIGFscGhhIG9mIDEuMAorICAgIEdMdWJ5dGUgcGl4
ZWxbNF07CisgICAgZ2xSZWFkUGl4ZWxzKDMgKiB3aWR0aCAvIDQsIDMgKiBoZWlnaHQgLyA0LCAx
LCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbCk7CisgICAgRVhQRUNUX0VRKHBp
eGVsWzNdLCAyNTUpOworfQorCisvLyBUZXN0IHRoYXQgZ2xUZXhTdWJJbWFnZTJEIGNvbWJpbmVk
IHdpdGggYSBQQk8gd29ya3MgcHJvcGVybHkgd2hlbiBnbFRleFN0b3JhZ2UyREVYVCBoYXMgaW5p
dGlhbGl6ZWQgdGhlIGltYWdlIHdpdGggYSBkZWZhdWx0IGNvbG9yLgorVEVTVF9QKFRleHR1cmUy
RFRlc3QsIFRleFN0b3JhZ2VXaXRoUEJPKQoreworICAgIGlmIChleHRlbnNpb25FbmFibGVkKCJO
Vl9waXhlbF9idWZmZXJfb2JqZWN0IikpCisgICAgeworICAgICAgICBpbnQgd2lkdGggPSBnZXRX
aW5kb3dXaWR0aCgpOworICAgICAgICBpbnQgaGVpZ2h0ID0gZ2V0V2luZG93SGVpZ2h0KCk7CisK
KyAgICAgICAgR0x1aW50IHRleDJEOworICAgICAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXgyRCk7
CisgICAgICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7CisgICAgICAgIGdsQmluZFRl
eHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4MkQpOworCisgICAgICAgIC8vIEZpbGwgd2l0aCByZWQK
KyAgICAgICAgc3RkOjp2ZWN0b3I8R0x1Ynl0ZT4gcGl4ZWxzKDMgKiAxNiAqIDE2KTsKKyAgICAg
ICAgZm9yIChzaXplX3QgcGl4ZWxJZCA9IDA7IHBpeGVsSWQgPCAxNiAqIDE2OyArK3BpeGVsSWQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHBpeGVsc1twaXhlbElkICogMyArIDBdID0gMjU1Owor
ICAgICAgICAgICAgcGl4ZWxzW3BpeGVsSWQgKiAzICsgMV0gPSAwOworICAgICAgICAgICAgcGl4
ZWxzW3BpeGVsSWQgKiAzICsgMl0gPSAwOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmVhZCAx
NngxNiByZWdpb24gZnJvbSByZWQgYmFja2J1ZmZlciB0byBQQk8KKyAgICAgICAgR0x1aW50IHBi
bzsKKyAgICAgICAgZ2xHZW5CdWZmZXJzKDEsICZwYm8pOworICAgICAgICBnbEJpbmRCdWZmZXIo
R0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgcGJvKTsKKyAgICAgICAgZ2xCdWZmZXJEYXRhKEdMX1BJ
WEVMX1VOUEFDS19CVUZGRVIsIDMgKiAxNiAqIDE2LCBwaXhlbHMuZGF0YSgpLCBHTF9TVEFUSUNf
RFJBVyk7CisKKyAgICAgICAgLy8gQU5HTEUgaW50ZXJuYWxseSB1c2VzIFJHQkEgYXMgdGhlIERp
cmVjdFggZm9ybWF0IGZvciBSR0IgaW1hZ2VzCisgICAgICAgIC8vIHRoZXJlZm9yZSBnbFRleFN0
b3JhZ2UyREVYVCBpbml0aWFsaXplcyB0aGUgaW1hZ2UgdG8gYSBkZWZhdWx0IGNvbG9yIHRvIGdl
dCBhIGNvbnNpc3RlbnQgYWxwaGEgY29sb3IuCisgICAgICAgIC8vIFRoZSBkYXRhIGlzIGtlcHQg
aW4gYSBDUFUtc2lkZSBpbWFnZSBhbmQgdGhlIGltYWdlIGlzIG1hcmtlZCBhcyBkaXJ0eS4KKyAg
ICAgICAgZ2xUZXhTdG9yYWdlMkRFWFQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdCOCwgMTYsIDE2
KTsKKworICAgICAgICAvLyBJbml0aWFsaXplcyB0aGUgY29sb3Igb2YgdGhlIHVwcGVyLWxlZnQg
OHg4IHBpeGVscywgbGVhdmVzIHRoZSBvdGhlciBwaXhlbHMgdW50b3VjaGVkLgorICAgICAgICAv
LyBnbFRleFN1YkltYWdlMkQgc2hvdWxkIHRha2UgaW50byBhY2NvdW50IHRoYXQgdGhlIGltYWdl
IGlzIGRpcnR5LgorICAgICAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwg
MCwgOCwgOCwgR0xfUkdCLCBHTF9VTlNJR05FRF9CWVRFLCBOVUxMKTsKKyAgICAgICAgZ2xUZXhQ
YXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFS
KTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFH
X0ZJTFRFUiwgR0xfTElORUFSKTsKKworICAgICAgICBzZXRVcFByb2dyYW0oKTsKKworICAgICAg
ICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworICAgICAgICBnbFVuaWZvcm0xaShtVGV4dHVyZTJE
VW5pZm9ybUxvY2F0aW9uLCAwKTsKKyAgICAgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlv
biIsIDAuNWYpOworICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0ZXgyRCk7CisgICAgICAg
IGdsRGVsZXRlQnVmZmVycygxLCAmcGJvKTsKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
CisgICAgICAgIEVYUEVDVF9QSVhFTF9FUSgzICogd2lkdGggLyA0LCAzICogaGVpZ2h0IC8gNCwg
MCwgMCwgMCwgMjU1KTsKKyAgICAgICAgRVhQRUNUX1BJWEVMX0VRKHdpZHRoIC8gNCwgaGVpZ2h0
IC8gNCwgMjU1LCAwLCAwLCAyNTUpOworICAgIH0KK30KKworLy8gU2VlIGRlc2NyaXB0aW9uIG9u
IHRlc3RGbG9hdENvcHlTdWJJbWFnZQorVEVTVF9QKFRleHR1cmUyRFRlc3QsIENvcHlTdWJJbWFn
ZUZsb2F0X1JfUikKK3sKKyAgICB0ZXN0RmxvYXRDb3B5U3ViSW1hZ2UoMSwgMSk7Cit9CisKK1RF
U1RfUChUZXh0dXJlMkRUZXN0LCBDb3B5U3ViSW1hZ2VGbG9hdF9SR19SKQoreworICAgIHRlc3RG
bG9hdENvcHlTdWJJbWFnZSgyLCAxKTsKK30KKworVEVTVF9QKFRleHR1cmUyRFRlc3QsIENvcHlT
dWJJbWFnZUZsb2F0X1JHX1JHKQoreworICAgIHRlc3RGbG9hdENvcHlTdWJJbWFnZSgyLCAyKTsK
K30KKworVEVTVF9QKFRleHR1cmUyRFRlc3QsIENvcHlTdWJJbWFnZUZsb2F0X1JHQl9SKQorewor
ICAgIGlmIChJc0ludGVsKCkgJiYgSXNMaW51eCgpKQorICAgIHsKKyAgICAgICAgLy8gVE9ETyhj
d2FsbGV6KTogRml4IG9uIExpbnV4IEludGVsIGRyaXZlcnMgKGh0dHA6Ly9hbmdsZWJ1Zy5jb20v
MTM0NikKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVkIG9uIExpbnV4IEludGVs
IE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHRl
c3RGbG9hdENvcHlTdWJJbWFnZSgzLCAxKTsKK30KKworVEVTVF9QKFRleHR1cmUyRFRlc3QsIENv
cHlTdWJJbWFnZUZsb2F0X1JHQl9SRykKK3sKKyAgICBpZiAoSXNJbnRlbCgpICYmIElzTGludXgo
KSkKKyAgICB7CisgICAgICAgIC8vIFRPRE8oY3dhbGxleik6IEZpeCBvbiBMaW51eCBJbnRlbCBk
cml2ZXJzIChodHRwOi8vYW5nbGVidWcuY29tLzEzNDYpCisgICAgICAgIHN0ZDo6Y291dCA8PCAi
VGVzdCBkaXNhYmxlZCBvbiBMaW51eCBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0ZXN0RmxvYXRDb3B5U3ViSW1hZ2UoMywgMik7Cit9
CisKK1RFU1RfUChUZXh0dXJlMkRUZXN0LCBDb3B5U3ViSW1hZ2VGbG9hdF9SR0JfUkdCKQorewor
ICAgIGlmIChJc0ludGVsKCkgJiYgSXNMaW51eCgpKQorICAgIHsKKyAgICAgICAgLy8gVE9ETyhj
d2FsbGV6KTogRml4IG9uIExpbnV4IEludGVsIGRyaXZlcnMgKGh0dHA6Ly9hbmdsZWJ1Zy5jb20v
MTM0NikKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVkIG9uIExpbnV4IEludGVs
IE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8v
IFRPRE8gKGJ1ZyAxMjg0KTogSW52ZXN0aWdhdGUgUkdCQTMyZiBEM0QgU0RLIExheWVycyBtZXNz
YWdlcyBvbiBEM0QxMV9GTDlfMworICAgIGlmIChJc0QzRDExX0ZMOTMoKSkKKyAgICB7CisgICAg
ICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEZlYXR1cmUgTGV2ZWwgOV8zLiIgPDwg
c3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdGVzdEZsb2F0Q29weVN1
YkltYWdlKDMsIDMpOworfQorCitURVNUX1AoVGV4dHVyZTJEVGVzdCwgQ29weVN1YkltYWdlRmxv
YXRfUkdCQV9SKQoreworICAgIHRlc3RGbG9hdENvcHlTdWJJbWFnZSg0LCAxKTsKK30KKworVEVT
VF9QKFRleHR1cmUyRFRlc3QsIENvcHlTdWJJbWFnZUZsb2F0X1JHQkFfUkcpCit7CisgICAgdGVz
dEZsb2F0Q29weVN1YkltYWdlKDQsIDIpOworfQorCitURVNUX1AoVGV4dHVyZTJEVGVzdCwgQ29w
eVN1YkltYWdlRmxvYXRfUkdCQV9SR0IpCit7CisgICAgLy8gVE9ETyAoYnVnIDEyODQpOiBJbnZl
c3RpZ2F0ZSBSR0JBMzJmIEQzRCBTREsgTGF5ZXJzIG1lc3NhZ2VzIG9uIEQzRDExX0ZMOV8zCisg
ICAgaWYgKElzRDNEMTFfRkw5MygpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0
IHNraXBwZWQgb24gRmVhdHVyZSBMZXZlbCA5XzMuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICB0ZXN0RmxvYXRDb3B5U3ViSW1hZ2UoNCwgMyk7Cit9CisKK1RF
U1RfUChUZXh0dXJlMkRUZXN0LCBDb3B5U3ViSW1hZ2VGbG9hdF9SR0JBX1JHQkEpCit7CisgICAg
Ly8gVE9ETyAoYnVnIDEyODQpOiBJbnZlc3RpZ2F0ZSBSR0JBMzJmIEQzRCBTREsgTGF5ZXJzIG1l
c3NhZ2VzIG9uIEQzRDExX0ZMOV8zCisgICAgaWYgKElzRDNEMTFfRkw5MygpKQorICAgIHsKKyAg
ICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gRmVhdHVyZSBMZXZlbCA5XzMuIiA8
PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0ZXN0RmxvYXRDb3B5
U3ViSW1hZ2UoNCwgNCk7Cit9CisKKy8vIFBvcnQgb2YgaHR0cHM6Ly93d3cua2hyb25vcy5vcmcv
cmVnaXN0cnkvd2ViZ2wvY29uZm9ybWFuY2Utc3VpdGVzLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1
cmVzL3RleHR1cmUtbnBvdC5odG1sCisvLyBSdW4gYWdhaW5zdCBHTF9BTFBIQS9VTlNJR05FRF9C
WVRFIGZvcm1hdCwgdG8gZW5zdXJlIHRoYXQgRDNEMTEgRmVhdHVyZSBMZXZlbCA5XzMgY29ycmVj
dGx5IGhhbmRsZXMgR0xfQUxQSEEKK1RFU1RfUChUZXh0dXJlMkRUZXN0LCBUZXh0dXJlTlBPVF9H
TF9BTFBIQV9VQllURSkKK3sKKyAgICBjb25zdCBpbnQgbnBvdFRleFNpemUgPSA1OworICAgIGNv
bnN0IGludCBwb3RUZXhTaXplID0gNDsgLy8gU2hvdWxkIGJlIGxlc3MgdGhhbiBucG90VGV4U2l6
ZQorICAgIEdMdWludCB0ZXgyRDsKKworICAgIGlmIChleHRlbnNpb25FbmFibGVkKCJHTF9PRVNf
dGV4dHVyZV9ucG90IikpCisgICAgeworICAgICAgICAvLyBUaGlzIHRlc3QgaXNuJ3QgYXBwbGlj
YWJsZSBpZiB0ZXh0dXJlX25wb3QgaXMgZW5hYmxlZAorICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgc2V0VXBQcm9ncmFtKCk7CisKKyAgICBnbENsZWFyQ29sb3IoMC4wZiwgMC4wZiwgMC4w
ZiwgMC4wZik7CisKKyAgICAvLyBEZWZhdWx0IHVucGFjayBhbGlnbm1lbnQgaXMgNC4gVGhlIHZh
bHVlcyBvZiAncGl4ZWxzJyBiZWxvdyBuZWVkcyBpdCB0byBiZSAxLgorICAgIGdsUGl4ZWxTdG9y
ZWkoR0xfVU5QQUNLX0FMSUdOTUVOVCwgMSk7CisKKyAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVY
VFVSRTApOworICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleDJEKTsKKyAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIHRleDJEKTsKKworICAgIHN0ZDo6dmVjdG9yPEdMdWJ5dGU+IHBpeGVs
cygxICogbnBvdFRleFNpemUgKiBucG90VGV4U2l6ZSk7CisgICAgZm9yIChzaXplX3QgcGl4ZWxJ
ZCA9IDA7IHBpeGVsSWQgPCBucG90VGV4U2l6ZSAqIG5wb3RUZXhTaXplOyArK3BpeGVsSWQpCisg
ICAgeworICAgICAgICBwaXhlbHNbcGl4ZWxJZF0gPSA2NDsKKyAgICB9CisKKyAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIp
OworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxU
RVIsIEdMX0xJTkVBUik7CisKKyAgICAvLyBDaGVjayB0aGF0IGFuIE5QT1QgdGV4dHVyZSBub3Qg
b24gbGV2ZWwgMCBnZW5lcmF0ZXMgSU5WQUxJRF9WQUxVRQorICAgIGdsVGV4SW1hZ2UyRChHTF9U
RVhUVVJFXzJELCAxLCBHTF9BTFBIQSwgbnBvdFRleFNpemUsIG5wb3RUZXhTaXplLCAwLCBHTF9B
TFBIQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzLmRhdGEoKSk7CisgICAgRVhQRUNUX0dMX0VS
Uk9SKEdMX0lOVkFMSURfVkFMVUUpOworCisgICAgLy8gQ2hlY2sgdGhhdCBhbiBOUE9UIHRleHR1
cmUgb24gbGV2ZWwgMCBzdWNjZWVkcworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAw
LCBHTF9BTFBIQSwgbnBvdFRleFNpemUsIG5wb3RUZXhTaXplLCAwLCBHTF9BTFBIQSwgR0xfVU5T
SUdORURfQllURSwgcGl4ZWxzLmRhdGEoKSk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisK
KyAgICAvLyBDaGVjayB0aGF0IGdlbmVyYXRlTWlwbWFwIGZhaWxzIG9uIE5QT1QKKyAgICBnbEdl
bmVyYXRlTWlwbWFwKEdMX1RFWFRVUkVfMkQpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZB
TElEX09QRVJBVElPTik7CisKKyAgICAvLyBDaGVjayB0aGF0IG5vdGhpbmcgaXMgZHJhd24gaWYg
ZmlsdGVyaW5nIGlzIG5vdCBjb3JyZWN0IGZvciBOUE9UCisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVB
UkVTVCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JB
UF9TLCBHTF9SRVBFQVQpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX1dSQVBfVCwgR0xfUkVQRUFUKTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9C
SVQpOworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAxLjBmKTsKKyAgICBFWFBF
Q1RfUElYRUxfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwg
MCwgMCwgMCwgMjU1KTsKKworICAgIC8vIE5QT1QgdGV4dHVyZSB3aXRoIFRFWFRVUkVfTUlOX0ZJ
TFRFUiBub3QgTkVBUkVTVCBvciBMSU5FQVIgc2hvdWxkIGRyYXcgd2l0aCAwLDAsMCwyNTUKKyAg
ICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NM
QU1QX1RPX0VER0UpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhU
VVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVF9NSVBNQVBfTElORUFS
KTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAgIGRyYXdRdWFkKG1Qcm9n
cmFtLCAicG9zaXRpb24iLCAxLjBmKTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoZ2V0V2luZG93V2lk
dGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgMCwgMCwgMCwgMjU1KTsKKworICAgIC8v
IE5QT1QgdGV4dHVyZSB3aXRoIFRFWFRVUkVfTUlOX0ZJTFRFUiBzZXQgdG8gTElORUFSIHNob3Vs
ZCBkcmF3CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlO
X0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwor
ICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAxLjBmKTsKKyAgICBFWFBFQ1RfUElY
RUxfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgMCwgMCwg
MCwgNjQpOworCisgICAgLy8gQ2hlY2sgdGhhdCBnbFRleEltYWdlMkQgZm9yIFBPVCB0ZXh0dXJl
IHN1Y2NlZWRzCisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX0FMUEhBLCBw
b3RUZXhTaXplLCBwb3RUZXhTaXplLCAwLCBHTF9BTFBIQSwgR0xfVU5TSUdORURfQllURSwgcGl4
ZWxzLmRhdGEoKSk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBDaGVjayB0
aGF0IGdlbmVyYXRlTWlwbWFwIGZvciBhbiBQT1QgdGV4dHVyZSBzdWNjZWVkcworICAgIGdsR2Vu
ZXJhdGVNaXBtYXAoR0xfVEVYVFVSRV8yRCk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisK
KyAgICAvLyBQT1QgdGV4dHVyZSB3aXRoIFRFWFRVUkVfTUlOX0ZJTFRFUiBzZXQgdG8gTElORUFS
X01JUE1BUF9MSU5FQVIgc2hvdWxkIGRyYXcKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUik7Cisg
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwg
R0xfTElORUFSKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9XUkFQX1MsIEdMX1JFUEVBVCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9SRVBFQVQpOworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVG
RkVSX0JJVCk7CisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDEuMGYpOworICAg
IEVYUEVDVF9QSVhFTF9FUShnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkg
LyAyLCAwLCAwLCAwLCA2NCk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFRl
c3QgdG8gZW5zdXJlIHRoYXQgZ2xUZXhTdWJJbWFnZTJEIGFsd2F5cyBhY2NlcHRzIGRhdGEgZm9y
IG5vbi1wb3dlci1vZi10d28gc3VicmVnaW9ucy4KKy8vIEFOR0xFIHByZXZpb3VzbHkgcmVqZWN0
ZWQgdGhpcyBpZiBHTF9PRVNfdGV4dHVyZV9ucG90IHdhc24ndCBhY3RpdmUsIHdoaWNoIGlzIGlu
Y29ycmVjdC4KK1RFU1RfUChUZXh0dXJlMkRUZXN0LCBOUE9UU3ViSW1hZ2VQYXJhbWV0ZXJzKQor
eworICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogQWxsb3cgdGhlIEdMIGJhY2tlbmQgdG8gYWNjZXB0
IFN1YkltYWdlIGNhbGxzIHdpdGggYSBudWxsIGRhdGEgcHRyLiAoYnVnCisgICAgLy8gMTI3OCkK
KyAgICBpZiAoZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBF
X09QRU5HTF9BTkdMRSB8fAorICAgICAgICBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BM
QVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEUpCisgICAgeworICAgICAgICBzdGQ6OmNv
dXQgPDwgIlRlc3QgZGlzYWJsZWQgb24gT3BlbkdMLiIgPDwgc3RkOjplbmRsOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKKyAgICBn
bEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOworCisgICAgLy8gQ3JlYXRl
IGFuIDh4OCAoaS5lLiBwb3dlci1vZi10d28pIHRleHR1cmUuCisgICAgZ2xUZXhJbWFnZTJEKEdM
X1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDgsIDgsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsIG51bGxwdHIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhU
VVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUl9NSVBNQVBfTkVBUkVTVCk7CisgICAgZ2xUZXhQYXJh
bWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsK
KyAgICBnbEdlbmVyYXRlTWlwbWFwKEdMX1RFWFRVUkVfMkQpOworCisgICAgLy8gU3VwcGx5IGEg
M3gzIChpLmUuIG5vbi1wb3dlci1vZi10d28pIHN1YmltYWdlIHRvIHRoZSB0ZXh0dXJlLgorICAg
IC8vIFRoaXMgc2hvdWxkIGFsd2F5cyB3b3JrLCBldmVuIGlmIEdMX09FU190ZXh0dXJlX25wb3Qg
aXNuJ3QgYWN0aXZlLgorICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAxLCAwLCAw
LCAzLCAzLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKKworICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOworfQorCisvLyBUZXN0IHRvIGNoZWNrIHRoYXQgdGV4dHVyZSBjb21w
bGV0ZW5lc3MgaXMgZGV0ZXJtaW5lZCBjb3JyZWN0bHkgd2hlbiB0aGUgdGV4dHVyZSBiYXNlIGxl
dmVsIGlzCisvLyBncmVhdGVyIHRoYW4gMCwgYW5kIGFsc28gdGhhdCBsZXZlbCAwIGlzIG5vdCBz
YW1wbGVkIHdoZW4gYmFzZSBsZXZlbCBpcyBncmVhdGVyIHRoYW4gMC4KK1RFU1RfUChUZXh0dXJl
MkRUZXN0RVMzLCBEcmF3V2l0aEJhc2VMZXZlbDEpCit7CisgICAgZ2xBY3RpdmVUZXh0dXJlKEdM
X1RFWFRVUkUwKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQp
OworCisgICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gdGV4RGF0YVJlZCg0dSAqIDR1LCBHTENvbG9y
OjpyZWQpOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCA0LCA0
LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCB0ZXhEYXRhUmVkLmRhdGEoKSk7CisgICAg
c3RkOjp2ZWN0b3I8R0xDb2xvcj4gdGV4RGF0YUdyZWVuKDJ1ICogMnUsIEdMQ29sb3I6OmdyZWVu
KTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdCQSwgMiwgMiwgMCwg
R0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAgdGV4RGF0YUdyZWVu
LmRhdGEoKSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDIsIEdMX1JHQkEsIDEs
IDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgIHRleERh
dGFHcmVlbi5kYXRhKCkpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSX01JUE1BUF9MSU5FQVIp
OworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX0JBU0VfTEVW
RUwsIDEpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBkcmF3UXVhZChtUHJv
Z3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwg
MCwgR0xDb2xvcjo6Z3JlZW4pOworfQorCisvLyBUZXN0IHRoYXQgZHJhd2luZyB3b3JrcyBjb3Jy
ZWN0bHkgd2hlbiBsZXZlbHMgb3V0c2lkZSB0aGUgQkFTRV9MRVZFTC9NQVhfTEVWRUwgcmFuZ2Ug
ZG8gbm90CisvLyBoYXZlIGltYWdlcyBkZWZpbmVkLgorVEVTVF9QKFRleHR1cmUyRFRlc3RFUzMs
IERyYXdXaXRoTGV2ZWxzT3V0c2lkZVJhbmdlVW5kZWZpbmVkKQoreworICAgIGlmIChJc0FNRCgp
ICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVO
R0xfQU5HTEUpCisgICAgeworICAgICAgICAvLyBPYnNlcnZlZCBjcmFzaGluZyBvbiBBTUQuIE9k
ZGx5IHRoZSBjcmFzaCBvbmx5IGhhcHBlbnMgd2l0aCAyRCB0ZXh0dXJlcywgbm90IDNEIG9yIGFy
cmF5LgorICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBBTUQgT3BlbkdMLiIg
PDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChJc09TWCgpKQor
ICAgIHsKKyAgICAgICAgLy8gT2JzZXJ2ZWQgaW5jb3JyZWN0IHJlbmRlcmluZyBvbiBPU1guCisg
ICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIE9TWC4iIDw8IHN0ZDo6ZW5kbDsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTAp
OworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7CisgICAgc3Rk
Ojp2ZWN0b3I8R0xDb2xvcj4gdGV4RGF0YUdyZWVuKDJ1ICogMnUsIEdMQ29sb3I6OmdyZWVuKTsK
KyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdCQTgsIDIsIDIsIDAsIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgIHRleERhdGFHcmVlbi5k
YXRhKCkpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01B
R19GSUxURVIsIEdMX0xJTkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSX01JUE1BUF9MSU5FQVIpOworICAgIGds
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX0JBU0VfTEVWRUwsIDEpOwor
ICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BWF9MRVZFTCwg
MSk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGRyYXdRdWFkKG1Qcm9ncmFt
LCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBH
TENvbG9yOjpncmVlbik7Cit9CisKKy8vIFRlc3QgdGhhdCBkcmF3aW5nIHdvcmtzIGNvcnJlY3Rs
eSB3aGVuIGxldmVsIDAgaXMgdW5kZWZpbmVkIGFuZCBiYXNlIGxldmVsIGlzIDEuCitURVNUX1Ao
VGV4dHVyZTJEVGVzdEVTMywgRHJhd1dpdGhMZXZlbFplcm9VbmRlZmluZWQpCit7CisgICAgaWYg
KElzQU1EKCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9U
WVBFX09QRU5HTF9BTkdMRSkKKyAgICB7CisgICAgICAgIC8vIE9ic2VydmVkIGNyYXNoaW5nIG9u
IEFNRC4gT2RkbHkgdGhlIGNyYXNoIG9ubHkgaGFwcGVucyB3aXRoIDJEIHRleHR1cmVzLCBub3Qg
M0Qgb3IgYXJyYXkuCisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEFNRCBP
cGVuR0wuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKElz
T1NYKCkpCisgICAgeworICAgICAgICAvLyBPYnNlcnZlZCBpbmNvcnJlY3QgcmVuZGVyaW5nIG9u
IE9TWC4KKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gT1NYLiIgPDwgc3Rk
OjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGdsQWN0aXZlVGV4dHVyZShHTF9U
RVhUVVJFMCk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEKTsK
KyAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiB0ZXhEYXRhR3JlZW4oMnUgKiAydSwgR0xDb2xvcjo6
Z3JlZW4pOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAxLCBHTF9SR0JBOCwgMiwg
MiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAgdGV4RGF0
YUdyZWVuLmRhdGEoKSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVY
VFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUik7
CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfQkFTRV9MRVZF
TCwgMSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFY
X0xFVkVMLCAyKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gVGV4dHVy
ZSBpcyBpbmNvbXBsZXRlLgorICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVm
KTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6YmxhY2spOworCisg
ICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDIsIEdMX1JHQkE4LCAxLCAxLCAwLCBHTF9S
R0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICB0ZXhEYXRhR3JlZW4uZGF0
YSgpKTsKKworICAgIC8vIFRleHR1cmUgaXMgbm93IGNvbXBsZXRlLgorICAgIGRyYXdRdWFkKG1Q
cm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwg
MCwgR0xDb2xvcjo6Z3JlZW4pOworfQorCisvLyBUZXN0IHRoYXQgZHJhd2luZyB3b3JrcyBjb3Jy
ZWN0bHkgd2hlbiBsZXZlbHMgb3V0c2lkZSB0aGUgQkFTRV9MRVZFTC9NQVhfTEVWRUwgcmFuZ2Ug
aGF2ZQorLy8gZGltZW5zaW9ucyB0aGF0IGRvbid0IGZpdCB0aGUgaW1hZ2VzIGluc2lkZSB0aGUg
cmFuZ2UuCisvLyBHTEVTIDMuMC40IHNlY3Rpb24gMy44LjEzIFRleHR1cmUgY29tcGxldGVuZXNz
CitURVNUX1AoVGV4dHVyZTJEVGVzdEVTMywgRHJhd1dpdGhMZXZlbHNPdXRzaWRlUmFuZ2VXaXRo
SW5jb25zaXN0ZW50RGltZW5zaW9ucykKK3sKKyAgICBpZiAoSXNPU1goKSkKKyAgICB7CisgICAg
ICAgIC8vIE9ic2VydmVkIGluY29ycmVjdCByZW5kZXJpbmcgb24gT1NYLgorICAgICAgICBzdGQ6
OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBPU1guIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKKyAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOworICAgIHN0ZDo6dmVjdG9yPEdM
Q29sb3I+IHRleERhdGFSZWQoOHUgKiA4dSwgR0xDb2xvcjo6cmVkKTsKKyAgICBzdGQ6OnZlY3Rv
cjxHTENvbG9yPiB0ZXhEYXRhR3JlZW4oMnUgKiAydSwgR0xDb2xvcjo6Z3JlZW4pOworICAgIHN0
ZDo6dmVjdG9yPEdMQ29sb3I+IHRleERhdGFDeWFuKDJ1ICogMnUsIEdMQ29sb3I6OmN5YW4pOwor
CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRF
UiwgR0xfTElORUFSKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVY
VFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUik7CisKKyAgICAvLyBUd28g
bGV2ZWxzIHRoYXQgYXJlIGluaXRpYWxseSB1bnVzZWQuCisgICAgZ2xUZXhJbWFnZTJEKEdMX1RF
WFRVUkVfMkQsIDAsIEdMX1JHQkE4LCA4LCA4LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRF
LCB0ZXhEYXRhUmVkLmRhdGEoKSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDIs
IEdMX1JHQkE4LCAyLCAyLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAg
ICAgICAgICB0ZXhEYXRhQ3lhbi5kYXRhKCkpOworCisgICAgLy8gT25lIGxldmVsIHRoYXQgaXMg
dXNlZCAtIG9ubHkgdGhpcyBsZXZlbCBzaG91bGQgYWZmZWN0IGNvbXBsZXRlbmVzcy4KKyAgICBn
bFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdCQTgsIDIsIDIsIDAsIEdMX1JHQkEs
IEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgIHRleERhdGFHcmVlbi5kYXRhKCkp
OworCisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfQkFTRV9M
RVZFTCwgMSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
TUFYX0xFVkVMLCAxKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZHJhd1F1
YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworCisgICAgRVhQRUNUX1BJWEVMX0NPTE9S
X0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsKKworICAgIGlmIChJc0ludGVsKCkgJiYgZ2V0UGxh
dGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkK
KyAgICB7CisgICAgICAgIC8vIEludGVsIHdhcyBvYnNlcnZlZCBkcmF3aW5nIGNvbG9yIDAsMCww
LDAgaW5zdGVhZCBvZiB0aGUgdGV4dHVyZSBjb2xvciBhZnRlciB0aGUgYmFzZQorICAgICAgICAv
LyBsZXZlbCB3YXMgY2hhbmdlZC4KKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHBhcnRpYWxs
eSBza2lwcGVkIG9uIEludGVsIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIC8vIFN3aXRjaCB0aGUgbGV2ZWwgdGhhdCBpcyBiZWluZyB1c2VkIHRv
IHRoZSBjeWFuIGxldmVsIDIuCisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdM
X1RFWFRVUkVfQkFTRV9MRVZFTCwgMik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
MkQsIEdMX1RFWFRVUkVfTUFYX0xFVkVMLCAyKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OworCisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworCisgICAgRVhQ
RUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmN5YW4pOworfQorCisvLyBUZXN0IHRo
YXQgZHJhd2luZyB3b3JrcyBjb3JyZWN0bHkgd2hlbiBsZXZlbHMgb3V0c2lkZSB0aGUgQkFTRV9M
RVZFTC9NQVhfTEVWRUwgcmFuZ2UgZG8gbm90CisvLyBoYXZlIGltYWdlcyBkZWZpbmVkLgorVEVT
VF9QKFRleHR1cmUzRFRlc3RFUzMsIERyYXdXaXRoTGV2ZWxzT3V0c2lkZVJhbmdlVW5kZWZpbmVk
KQoreworICAgIGlmIChJc09TWCgpKQorICAgIHsKKyAgICAgICAgLy8gT2JzZXJ2ZWQgaW5jb3Jy
ZWN0IHJlbmRlcmluZyBvbiBPU1guCisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVk
IG9uIE9TWC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBnbEFj
dGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8z
RCwgbVRleHR1cmUzRCk7CisgICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gdGV4RGF0YUdyZWVuKDJ1
ICogMnUgKiAydSwgR0xDb2xvcjo6Z3JlZW4pOworICAgIGdsVGV4SW1hZ2UzRChHTF9URVhUVVJF
XzNELCAxLCBHTF9SR0JBOCwgMiwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwK
KyAgICAgICAgICAgICAgICAgdGV4RGF0YUdyZWVuLmRhdGEoKSk7CisgICAgZ2xUZXhQYXJhbWV0
ZXJpKEdMX1RFWFRVUkVfM0QsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAg
ICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8zRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBH
TF9MSU5FQVJfTUlQTUFQX0xJTkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
M0QsIEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwgMSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfM0QsIEdMX1RFWFRVUkVfTUFYX0xFVkVMLCAxKTsKKworICAgIEVYUEVDVF9HTF9OT19F
UlJPUigpOworCisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworCisg
ICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsKK30KKworLy8g
VGVzdCB0aGF0IGRyYXdpbmcgd29ya3MgY29ycmVjdGx5IHdoZW4gbGV2ZWxzIG91dHNpZGUgdGhl
IEJBU0VfTEVWRUwvTUFYX0xFVkVMIHJhbmdlIGhhdmUKKy8vIGRpbWVuc2lvbnMgdGhhdCBkb24n
dCBmaXQgdGhlIGltYWdlcyBpbnNpZGUgdGhlIHJhbmdlLgorLy8gR0xFUyAzLjAuNCBzZWN0aW9u
IDMuOC4xMyBUZXh0dXJlIGNvbXBsZXRlbmVzcworVEVTVF9QKFRleHR1cmUzRFRlc3RFUzMsIERy
YXdXaXRoTGV2ZWxzT3V0c2lkZVJhbmdlV2l0aEluY29uc2lzdGVudERpbWVuc2lvbnMpCit7Cisg
ICAgaWYgKElzT1NYKCkpCisgICAgeworICAgICAgICAvLyBPYnNlcnZlZCBpbmNvcnJlY3QgcmVu
ZGVyaW5nIG9uIE9TWC4KKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gT1NY
LiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGdsQWN0aXZlVGV4
dHVyZShHTF9URVhUVVJFMCk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzNELCBtVGV4
dHVyZTNEKTsKKyAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiB0ZXhEYXRhUmVkKDh1ICogOHUgKiA4
dSwgR0xDb2xvcjo6cmVkKTsKKyAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiB0ZXhEYXRhR3JlZW4o
MnUgKiAydSAqIDJ1LCBHTENvbG9yOjpncmVlbik7CisgICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4g
dGV4RGF0YUN5YW4oMnUgKiAydSAqIDJ1LCBHTENvbG9yOjpjeWFuKTsKKworICAgIGdsVGV4UGFy
YW1ldGVyaShHTF9URVhUVVJFXzNELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7
CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfM0QsIEdMX1RFWFRVUkVfTUlOX0ZJTFRF
UiwgR0xfTElORUFSX01JUE1BUF9MSU5FQVIpOworCisgICAgLy8gVHdvIGxldmVscyB0aGF0IGFy
ZSBpbml0aWFsbHkgdW51c2VkLgorICAgIGdsVGV4SW1hZ2UzRChHTF9URVhUVVJFXzNELCAwLCBH
TF9SR0JBOCwgOCwgOCwgOCwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAg
ICAgICAgICAgdGV4RGF0YVJlZC5kYXRhKCkpOworICAgIGdsVGV4SW1hZ2UzRChHTF9URVhUVVJF
XzNELCAyLCBHTF9SR0JBOCwgMiwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwK
KyAgICAgICAgICAgICAgICAgdGV4RGF0YUN5YW4uZGF0YSgpKTsKKworICAgIC8vIE9uZSBsZXZl
bCB0aGF0IGlzIHVzZWQgLSBvbmx5IHRoaXMgbGV2ZWwgc2hvdWxkIGFmZmVjdCBjb21wbGV0ZW5l
c3MuCisgICAgZ2xUZXhJbWFnZTNEKEdMX1RFWFRVUkVfM0QsIDEsIEdMX1JHQkE4LCAyLCAyLCAy
LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICB0ZXhEYXRh
R3JlZW4uZGF0YSgpKTsKKworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzNELCBHTF9U
RVhUVVJFX0JBU0VfTEVWRUwsIDEpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzNE
LCBHTF9URVhUVVJFX01BWF9MRVZFTCwgMSk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
KworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgIEVYUEVD
VF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpncmVlbik7CisKKyAgICBpZiAoSXNJbnRl
bCgpICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9P
UEVOR0xfQU5HTEUpCisgICAgeworICAgICAgICAvLyBJbnRlbCB3YXMgb2JzZXJ2ZWQgZHJhd2lu
ZyBjb2xvciAwLDAsMCwwIGluc3RlYWQgb2YgdGhlIHRleHR1cmUgY29sb3IgYWZ0ZXIgdGhlIGJh
c2UKKyAgICAgICAgLy8gbGV2ZWwgd2FzIGNoYW5nZWQuCisgICAgICAgIHN0ZDo6Y291dCA8PCAi
VGVzdCBwYXJ0aWFsbHkgc2tpcHBlZCBvbiBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBTd2l0Y2ggdGhlIGxldmVsIHRoYXQgaXMg
YmVpbmcgdXNlZCB0byB0aGUgY3lhbiBsZXZlbCAyLgorICAgIGdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFXzNELCBHTF9URVhUVVJFX0JBU0VfTEVWRUwsIDIpOworICAgIGdsVGV4UGFyYW1ldGVy
aShHTF9URVhUVVJFXzNELCBHTF9URVhUVVJFX01BWF9MRVZFTCwgMik7CisKKyAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKKworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVm
KTsKKworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpjeWFuKTsKK30K
KworLy8gVGVzdCB0aGF0IGRyYXdpbmcgd29ya3MgY29ycmVjdGx5IHdoZW4gbGV2ZWxzIG91dHNp
ZGUgdGhlIEJBU0VfTEVWRUwvTUFYX0xFVkVMIHJhbmdlIGRvIG5vdAorLy8gaGF2ZSBpbWFnZXMg
ZGVmaW5lZC4KK1RFU1RfUChUZXh0dXJlMkRBcnJheVRlc3RFUzMsIERyYXdXaXRoTGV2ZWxzT3V0
c2lkZVJhbmdlVW5kZWZpbmVkKQoreworICAgIGlmIChJc09TWCgpKQorICAgIHsKKyAgICAgICAg
Ly8gT2JzZXJ2ZWQgaW5jb3JyZWN0IHJlbmRlcmluZyBvbiBPU1guCisgICAgICAgIHN0ZDo6Y291
dCA8PCAiVGVzdCBza2lwcGVkIG9uIE9TWC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOworICAgIGdsQmluZFRl
eHR1cmUoR0xfVEVYVFVSRV8yRF9BUlJBWSwgbTJEQXJyYXlUZXh0dXJlKTsKKyAgICBzdGQ6OnZl
Y3RvcjxHTENvbG9yPiB0ZXhEYXRhR3JlZW4oMnUgKiAydSAqIDJ1LCBHTENvbG9yOjpncmVlbik7
CisgICAgZ2xUZXhJbWFnZTNEKEdMX1RFWFRVUkVfMkRfQVJSQVksIDEsIEdMX1JHQkE4LCAyLCAy
LCAyLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICB0ZXhE
YXRhR3JlZW4uZGF0YSgpKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRF9BUlJB
WSwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVy
aShHTF9URVhUVVJFXzJEX0FSUkFZLCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUl9N
SVBNQVBfTElORUFSKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRF9BUlJBWSwg
R0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAxKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRF9BUlJBWSwgR0xfVEVYVFVSRV9NQVhfTEVWRUwsIDEpOworCisgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7CisKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisK
KyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4pOworfQorCisv
LyBUZXN0IHRoYXQgZHJhd2luZyB3b3JrcyBjb3JyZWN0bHkgd2hlbiBsZXZlbHMgb3V0c2lkZSB0
aGUgQkFTRV9MRVZFTC9NQVhfTEVWRUwgcmFuZ2UgaGF2ZQorLy8gZGltZW5zaW9ucyB0aGF0IGRv
bid0IGZpdCB0aGUgaW1hZ2VzIGluc2lkZSB0aGUgcmFuZ2UuCisvLyBHTEVTIDMuMC40IHNlY3Rp
b24gMy44LjEzIFRleHR1cmUgY29tcGxldGVuZXNzCitURVNUX1AoVGV4dHVyZTJEQXJyYXlUZXN0
RVMzLCBEcmF3V2l0aExldmVsc091dHNpZGVSYW5nZVdpdGhJbmNvbnNpc3RlbnREaW1lbnNpb25z
KQoreworICAgIGlmIChJc09TWCgpKQorICAgIHsKKyAgICAgICAgLy8gT2JzZXJ2ZWQgaW5jb3Jy
ZWN0IHJlbmRlcmluZyBvbiBPU1guCisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVk
IG9uIE9TWC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBnbEFj
dGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8z
RCwgbTJEQXJyYXlUZXh0dXJlKTsKKyAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiB0ZXhEYXRhUmVk
KDh1ICogOHUgKiA4dSwgR0xDb2xvcjo6cmVkKTsKKyAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiB0
ZXhEYXRhR3JlZW4oMnUgKiAydSAqIDJ1LCBHTENvbG9yOjpncmVlbik7CisgICAgc3RkOjp2ZWN0
b3I8R0xDb2xvcj4gdGV4RGF0YUN5YW4oMnUgKiAydSAqIDJ1LCBHTENvbG9yOjpjeWFuKTsKKwor
ICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJEX0FSUkFZLCBHTF9URVhUVVJFX01BR19G
SUxURVIsIEdMX0xJTkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkRfQVJS
QVksIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSX01JUE1BUF9MSU5FQVIpOworCisg
ICAgLy8gVHdvIGxldmVscyB0aGF0IGFyZSBpbml0aWFsbHkgdW51c2VkLgorICAgIGdsVGV4SW1h
Z2UzRChHTF9URVhUVVJFXzJEX0FSUkFZLCAwLCBHTF9SR0JBOCwgOCwgOCwgOCwgMCwgR0xfUkdC
QSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAgdGV4RGF0YVJlZC5kYXRhKCkp
OworICAgIGdsVGV4SW1hZ2UzRChHTF9URVhUVVJFXzJEX0FSUkFZLCAyLCBHTF9SR0JBOCwgMiwg
MiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAgdGV4
RGF0YUN5YW4uZGF0YSgpKTsKKworICAgIC8vIE9uZSBsZXZlbCB0aGF0IGlzIHVzZWQgLSBvbmx5
IHRoaXMgbGV2ZWwgc2hvdWxkIGFmZmVjdCBjb21wbGV0ZW5lc3MuCisgICAgZ2xUZXhJbWFnZTNE
KEdMX1RFWFRVUkVfMkRfQVJSQVksIDEsIEdMX1JHQkE4LCAyLCAyLCAyLCAwLCBHTF9SR0JBLCBH
TF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICB0ZXhEYXRhR3JlZW4uZGF0YSgpKTsK
KworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJEX0FSUkFZLCBHTF9URVhUVVJFX0JB
U0VfTEVWRUwsIDEpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJEX0FSUkFZLCBH
TF9URVhUVVJFX01BWF9MRVZFTCwgMSk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKwor
ICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgIEVYUEVDVF9Q
SVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpncmVlbik7CisKKyAgICBpZiAoSXNJbnRlbCgp
ICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVO
R0xfQU5HTEUpCisgICAgeworICAgICAgICAvLyBJbnRlbCB3YXMgb2JzZXJ2ZWQgZHJhd2luZyBj
b2xvciAwLDAsMCwwIGluc3RlYWQgb2YgdGhlIHRleHR1cmUgY29sb3IgYWZ0ZXIgdGhlIGJhc2UK
KyAgICAgICAgLy8gbGV2ZWwgd2FzIGNoYW5nZWQuCisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVz
dCBwYXJ0aWFsbHkgc2tpcHBlZCBvbiBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKElzTlZJRElBKCkgJiYgKGdldFBsYXRmb3JtUmVu
ZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUgfHwKKyAgICAg
ICAgICAgICAgICAgICAgICAgZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9B
TkdMRV9UWVBFX09QRU5HTEVTX0FOR0xFKSkKKyAgICB7CisgICAgICAgIC8vIE5WSURJQSB3YXMg
b2JzZXJ2ZWQgZHJhd2luZyBjb2xvciAwLDAsMCwwIGluc3RlYWQgb2YgdGhlIHRleHR1cmUgY29s
b3IgYWZ0ZXIgdGhlIGJhc2UKKyAgICAgICAgLy8gbGV2ZWwgd2FzIGNoYW5nZWQuCisgICAgICAg
IHN0ZDo6Y291dCA8PCAiVGVzdCBwYXJ0aWFsbHkgc2tpcHBlZCBvbiBOVklESUEgT3BlbkdMLiIg
PDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gU3dpdGNoIHRo
ZSBsZXZlbCB0aGF0IGlzIGJlaW5nIHVzZWQgdG8gdGhlIGN5YW4gbGV2ZWwgMi4KKyAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRF9BUlJBWSwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAy
KTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRF9BUlJBWSwgR0xfVEVYVFVSRV9N
QVhfTEVWRUwsIDIpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBkcmF3UXVh
ZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1Jf
RVEoMCwgMCwgR0xDb2xvcjo6Y3lhbik7Cit9CisKKy8vIFRlc3QgdGhhdCB0ZXh0dXJlIGNvbXBs
ZXRlbmVzcyBpcyB1cGRhdGVkIGlmIHRleHR1cmUgbWF4IGxldmVsIGNoYW5nZXMuCisvLyBHTEVT
IDMuMC40IHNlY3Rpb24gMy44LjEzIFRleHR1cmUgY29tcGxldGVuZXNzCitURVNUX1AoVGV4dHVy
ZTJEVGVzdEVTMywgVGV4dHVyZUNvbXBsZXRlbmVzc0NoYW5nZXNXaXRoTWF4TGV2ZWwpCit7Cisg
ICAgaWYgKElzSW50ZWwoKSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JN
X0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFKQorICAgIHsKKyAgICAgICAgLy8gSW50ZWwgd2FzIG9i
c2VydmVkIGhhdmluZyB3cm9uZyBiZWhhdmlvciBhZnRlciB0aGUgdGV4dHVyZSBpcyBtYWRlIGlu
Y29tcGxldGUgYnkgY2hhbmdpbmcKKyAgICAgICAgLy8gdGhlIGJhc2UgbGV2ZWwuCisgICAgICAg
IHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIE9wZW5HTC4iIDw8IHN0ZDo6ZW5k
bDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoSXNPU1goKSkKKyAgICB7CisgICAg
ICAgIC8vIE9ic2VydmVkIGluY29ycmVjdCByZW5kZXJpbmcgb24gT1NYLgorICAgICAgICBzdGQ6
OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBPU1guIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOworICAgIGds
QmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7CisgICAgc3RkOjp2ZWN0b3I8
R0xDb2xvcj4gdGV4RGF0YUdyZWVuKDh1ICogOHUsIEdMQ29sb3I6OmdyZWVuKTsKKworICAgIGds
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJ
TkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlO
X0ZJTFRFUiwgR0xfTElORUFSX01JUE1BUF9MSU5FQVIpOworCisgICAgLy8gQSBsZXZlbCB0aGF0
IGlzIGluaXRpYWxseSB1bnVzZWQuCisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDEs
IEdMX1JHQkE4LCA4LCA4LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAg
ICAgICAgICB0ZXhEYXRhR3JlZW4uZGF0YSgpKTsKKworICAgIC8vIE9uZSBsZXZlbCB0aGF0IGlz
IGluaXRpYWxseSB1c2VkIC0gb25seSB0aGlzIGxldmVsIHNob3VsZCBhZmZlY3QgY29tcGxldGVu
ZXNzLgorICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBOCwgMiwgMiwg
MCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAgdGV4RGF0YUdy
ZWVuLmRhdGEoKSk7CisKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVY
VFVSRV9CQVNFX0xFVkVMLCAwKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9NQVhfTEVWRUwsIDApOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisK
KyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisKKyAgICBFWFBFQ1Rf
UElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4pOworCisgICAgLy8gU3dpdGNoIHRo
ZSBtYXggbGV2ZWwgdG8gbGV2ZWwgMS4gVGhlIGxldmVscyB3aXRoaW4gdGhlIHVzZWQgcmFuZ2Ug
bm93IGhhdmUgaW5jb25zaXN0ZW50CisgICAgLy8gZGltZW5zaW9ucyBhbmQgdGhlIHRleHR1cmUg
c2hvdWxkIGJlIGluY29tcGxldGUuCisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfTUFYX0xFVkVMLCAxKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwor
CisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworCisgICAgRVhQRUNU
X1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmJsYWNrKTsKK30KKworLy8gVGVzdCB0aGF0
IDNEIHRleHR1cmUgY29tcGxldGVuZXNzIGlzIHVwZGF0ZWQgaWYgdGV4dHVyZSBtYXggbGV2ZWwg
Y2hhbmdlcy4KKy8vIEdMRVMgMy4wLjQgc2VjdGlvbiAzLjguMTMgVGV4dHVyZSBjb21wbGV0ZW5l
c3MKK1RFU1RfUChUZXh0dXJlM0RUZXN0RVMzLCBUZXh0dXJlM0RDb21wbGV0ZW5lc3NDaGFuZ2Vz
V2l0aE1heExldmVsKQoreworICAgIGlmIChJc0ludGVsKCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJl
cigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkKKyAgICB7CisgICAg
ICAgIC8vIEludGVsIHdhcyBvYnNlcnZlZCBoYXZpbmcgd3JvbmcgYmVoYXZpb3IgYWZ0ZXIgdGhl
IHRleHR1cmUgaXMgbWFkZSBpbmNvbXBsZXRlIGJ5IGNoYW5naW5nCisgICAgICAgIC8vIHRoZSBi
YXNlIGxldmVsLgorICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBP
cGVuR0wuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKElz
T1NYKCkpCisgICAgeworICAgICAgICAvLyBPYnNlcnZlZCBpbmNvcnJlY3QgcmVuZGVyaW5nIG9u
IE9TWC4KKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gT1NYLiIgPDwgc3Rk
OjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZ2xBY3RpdmVUZXh0dXJlKEdM
X1RFWFRVUkUwKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfM0QsIG1UZXh0dXJlM0Qp
OworICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHRleERhdGFHcmVlbigydSAqIDJ1ICogMnUsIEdM
Q29sb3I6OmdyZWVuKTsKKworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzNELCBHTF9U
RVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfM0QsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSX01JUE1BUF9MSU5FQVIp
OworCisgICAgLy8gQSBsZXZlbCB0aGF0IGlzIGluaXRpYWxseSB1bnVzZWQuCisgICAgZ2xUZXhJ
bWFnZTNEKEdMX1RFWFRVUkVfM0QsIDEsIEdMX1JHQkE4LCAxLCAxLCAyLCAwLCBHTF9SR0JBLCBH
TF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICB0ZXhEYXRhR3JlZW4uZGF0YSgpKTsK
KworICAgIC8vIE9uZSBsZXZlbCB0aGF0IGlzIGluaXRpYWxseSB1c2VkIC0gb25seSB0aGlzIGxl
dmVsIHNob3VsZCBhZmZlY3QgY29tcGxldGVuZXNzLgorICAgIGdsVGV4SW1hZ2UzRChHTF9URVhU
VVJFXzNELCAwLCBHTF9SR0JBOCwgMiwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllU
RSwKKyAgICAgICAgICAgICAgICAgdGV4RGF0YUdyZWVuLmRhdGEoKSk7CisKKyAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8zRCwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAwKTsKKyAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8zRCwgR0xfVEVYVFVSRV9NQVhfTEVWRUwsIDApOwor
CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBv
c2l0aW9uIiwgMC41Zik7CisKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xv
cjo6Z3JlZW4pOworCisgICAgLy8gU3dpdGNoIHRoZSBtYXggbGV2ZWwgdG8gbGV2ZWwgMS4gVGhl
IGxldmVscyB3aXRoaW4gdGhlIHVzZWQgcmFuZ2Ugbm93IGhhdmUgaW5jb25zaXN0ZW50CisgICAg
Ly8gZGltZW5zaW9ucyBhbmQgdGhlIHRleHR1cmUgc2hvdWxkIGJlIGluY29tcGxldGUuCisgICAg
Z2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfM0QsIEdMX1RFWFRVUkVfTUFYX0xFVkVMLCAxKTsK
KworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZHJhd1F1YWQobVByb2dyYW0sICJw
b3NpdGlvbiIsIDAuNWYpOworCisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29s
b3I6OmJsYWNrKTsKK30KKworLy8gVGVzdCB0aGF0IHRleHR1cmUgY29tcGxldGVuZXNzIGlzIHVw
ZGF0ZWQgaWYgdGV4dHVyZSBiYXNlIGxldmVsIGNoYW5nZXMuCisvLyBHTEVTIDMuMC40IHNlY3Rp
b24gMy44LjEzIFRleHR1cmUgY29tcGxldGVuZXNzCitURVNUX1AoVGV4dHVyZTJEVGVzdEVTMywg
VGV4dHVyZUNvbXBsZXRlbmVzc0NoYW5nZXNXaXRoQmFzZUxldmVsKQoreworICAgIGlmIChJc0lu
dGVsKCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBF
X09QRU5HTF9BTkdMRSkKKyAgICB7CisgICAgICAgIC8vIEludGVsIHdhcyBvYnNlcnZlZCBoYXZp
bmcgd3JvbmcgYmVoYXZpb3IgYWZ0ZXIgdGhlIHRleHR1cmUgaXMgbWFkZSBpbmNvbXBsZXRlIGJ5
IGNoYW5naW5nCisgICAgICAgIC8vIHRoZSBiYXNlIGxldmVsLgorICAgICAgICBzdGQ6OmNvdXQg
PDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOworICAg
IGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7CisgICAgc3RkOjp2ZWN0
b3I8R0xDb2xvcj4gdGV4RGF0YUdyZWVuKDh1ICogOHUsIEdMQ29sb3I6OmdyZWVuKTsKKworICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdM
X0xJTkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
TUlOX0ZJTFRFUiwgR0xfTElORUFSX01JUE1BUF9MSU5FQVIpOworCisgICAgLy8gVHdvIGxldmVs
cyB0aGF0IGFyZSBpbml0aWFsbHkgdW51c2VkLgorICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJF
XzJELCAwLCBHTF9SR0JBOCwgOCwgOCwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAg
ICAgICAgICAgICAgICAgdGV4RGF0YUdyZWVuLmRhdGEoKSk7CisgICAgZ2xUZXhJbWFnZTJEKEdM
X1RFWFRVUkVfMkQsIDEsIEdMX1JHQkE4LCAyLCAyLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9C
WVRFLAorICAgICAgICAgICAgICAgICB0ZXhEYXRhR3JlZW4uZGF0YSgpKTsKKworICAgIC8vIE9u
ZSBsZXZlbCB0aGF0IGlzIGluaXRpYWxseSB1c2VkIC0gb25seSB0aGlzIGxldmVsIHNob3VsZCBh
ZmZlY3QgY29tcGxldGVuZXNzLgorICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAyLCBH
TF9SR0JBOCwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAg
ICAgICAgdGV4RGF0YUdyZWVuLmRhdGEoKSk7CisKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVY
VFVSRV8yRCwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAyKTsKKyAgICBnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQVhfTEVWRUwsIDIpOworCisgICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7CisKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7
CisKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4pOworCisg
ICAgLy8gU3dpdGNoIHRoZSBiYXNlIGxldmVsIHRvIGxldmVsIDEuIFRoZSBsZXZlbHMgd2l0aGlu
IHRoZSB1c2VkIHJhbmdlIG5vdyBoYXZlIGluY29uc2lzdGVudAorICAgIC8vIGRpbWVuc2lvbnMg
YW5kIHRoZSB0ZXh0dXJlIHNob3VsZCBiZSBpbmNvbXBsZXRlLgorICAgIGdsVGV4UGFyYW1ldGVy
aShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX0JBU0VfTEVWRUwsIDEpOworCisgICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7CisKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41
Zik7CisKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6YmxhY2spOwor
fQorCisvLyBUZXN0IHRoYXQgdGV4dHVyZSBpcyBub3QgY29tcGxldGUgaWYgYmFzZSBsZXZlbCBp
cyBncmVhdGVyIHRoYW4gbWF4IGxldmVsLgorLy8gR0xFUyAzLjAuNCBzZWN0aW9uIDMuOC4xMyBU
ZXh0dXJlIGNvbXBsZXRlbmVzcworVEVTVF9QKFRleHR1cmUyRFRlc3RFUzMsIFRleHR1cmVCYXNl
TGV2ZWxHcmVhdGVyVGhhbk1heExldmVsKQoreworICAgIGlmIChJc0ludGVsKCkgJiYgZ2V0UGxh
dGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkK
KyAgICB7CisgICAgICAgIC8vIEludGVsIFdpbmRvd3MgT3BlbkdMIGRyaXZlciBjcmFzaGVzIGlm
IHRoZSBiYXNlIGxldmVsIG9mIGEgbm9uLWltbXV0YWJsZSB0ZXh0dXJlIGlzIG91dAorICAgICAg
ICAvLyBvZiByYW5nZS4KKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50
ZWwgT3BlbkdMLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Z2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfMkQsIG1UZXh0dXJlMkQpOworCisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisKKyAg
ICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQTgsIDEsIDEsIDAsIEdMX1JH
QkEsIEdMX1VOU0lHTkVEX0JZVEUsICZHTENvbG9yOjpncmVlbik7CisKKyAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAxMDAwMCk7CisgICAg
Z2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFYX0xFVkVMLCAwKTsK
KworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZHJhd1F1YWQobVByb2dyYW0sICJw
b3NpdGlvbiIsIDAuNWYpOworCisgICAgLy8gVGV4dHVyZSBzaG91bGQgYmUgaW5jb21wbGV0ZS4K
KyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6YmxhY2spOworfQorCisv
LyBUZXN0IHRoYXQgaW1tdXRhYmxlIHRleHR1cmUgYmFzZSBsZXZlbCBhbmQgbWF4IGxldmVsIGFy
ZSBjbGFtcGVkLgorLy8gR0xFUyAzLjAuNCBzZWN0aW9uIDMuOC4xMCBzdWJzZWN0aW9uIE1pcG1h
cHBpbmcKK1RFU1RfUChUZXh0dXJlMkRUZXN0RVMzLCBJbW11dGFibGVUZXh0dXJlQmFzZUxldmVs
T3V0T2ZSYW5nZSkKK3sKKyAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOworICAgIGds
QmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7CisKKyAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsK
KyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVS
LCBHTF9ORUFSRVNUKTsKKworICAgIGdsVGV4U3RvcmFnZTJEKEdMX1RFWFRVUkVfMkQsIDEsIEdM
X1JHQkE4LCAxLCAxKTsKKworICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCAw
LCAwLCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAmR0xDb2xvcjo6Z3JlZW4pOwor
CisgICAgLy8gRm9yIGltbXV0YWJsZS1mb3JtYXQgdGV4dHVyZXMsIGJhc2UgbGV2ZWwgc2hvdWxk
IGJlIGNsYW1wZWQgdG8gWzAsIGxldmVscyAtIDFdLCBhbmQgbWF4IGxldmVsCisgICAgLy8gc2hv
dWxkIGJlIGNsYW1wZWQgdG8gW2Jhc2VfbGV2ZWwsIGxldmVscyAtIDFdLgorICAgIC8vIEdMRVMg
My4wLjQgc2VjdGlvbiAzLjguMTAgc3Vic2VjdGlvbiBNaXBtYXBwaW5nCisgICAgLy8gSW4gdGhl
IGNhc2Ugb2YgdGhpcyB0ZXN0LCB0aG9zZSBydWxlcyBtYWtlIHRoZSBlZmZlY3RpdmUgYmFzZSBs
ZXZlbCBhbmQgbWF4IGxldmVsIDAuCisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwgMTAwMDApOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFXzJELCBHTF9URVhUVVJFX01BWF9MRVZFTCwgMTAwMDApOworCisgICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7CisKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7
CisKKyAgICAvLyBUZXh0dXJlIHNob3VsZCBiZSBjb21wbGV0ZS4KKyAgICBFWFBFQ1RfUElYRUxf
Q09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4pOworfQorCisvLyBUZXN0IHRoYXQgY2hhbmdp
bmcgYmFzZSBsZXZlbCB3b3JrcyB3aGVuIGl0IGFmZmVjdHMgdGhlIGZvcm1hdCBvZiB0aGUgdGV4
dHVyZS4KK1RFU1RfUChUZXh0dXJlMkRUZXN0RVMzLCBUZXh0dXJlRm9ybWF0Q2hhbmdlc1dpdGhC
YXNlTGV2ZWwpCit7CisgICAgaWYgKElzTlZJRElBKCkgJiYgSXNPcGVuR0woKSkKKyAgICB7Cisg
ICAgICAgIC8vIE9ic2VydmVkIHJlbmRlcmluZyBjb3JydXB0aW9uIG9uIE5WSURJQSBPcGVuR0wu
CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIE5WSURJQSBPcGVuR0wuIiA8
PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKElzSW50ZWwoKSAm
JiBJc0Rlc2t0b3BPcGVuR0woKSkKKyAgICB7CisgICAgICAgIC8vIE9ic2VydmVkIGluY29ycmVj
dCByZW5kZXJpbmcgb24gSW50ZWwgT3BlbkdMLgorICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qg
c2tpcHBlZCBvbiBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgaWYgKElzQU1EKCkgJiYgSXNEZXNrdG9wT3BlbkdMKCkpCisgICAgeworICAg
ICAgICAvLyBPYnNlcnZlZCBpbmNvcnJlY3QgcmVuZGVyaW5nIG9uIEFNRCBPcGVuR0wuCisgICAg
ICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEFNRCBPcGVuR0wuIiA8PCBzdGQ6OmVu
ZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVY
VFVSRTApOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7Cisg
ICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gdGV4RGF0YUN5YW4oNHUgKiA0dSwgR0xDb2xvcjo6Y3lh
bik7CisgICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gdGV4RGF0YUdyZWVuKDR1ICogNHUsIEdMQ29s
b3I6OmdyZWVuKTsKKworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhU
VVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRV
UkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSX01JUE1BUF9MSU5FQVIpOwor
CisgICAgLy8gUkdCQTggbGV2ZWwgdGhhdCdzIGluaXRpYWxseSB1bnVzZWQuCisgICAgZ2xUZXhJ
bWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkE4LCA0LCA0LCAwLCBHTF9SR0JBLCBHTF9V
TlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICB0ZXhEYXRhQ3lhbi5kYXRhKCkpOworCisg
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwg
MSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFYX0xF
VkVMLCAxKTsKKworICAgIC8vIFJHOCBsZXZlbCB0aGF0J3MgaW5pdGlhbGx5IHVzZWQsIHdpdGgg
Y29uc2lzdGVudCBkaW1lbnNpb25zIHdpdGggbGV2ZWwgMCBidXQgYSBkaWZmZXJlbnQKKyAgICAv
LyBmb3JtYXQuIEl0IHJlYWRzIGdyZWVuIGNoYW5uZWwgZGF0YSBmcm9tIHRoZSBncmVlbiBhbmQg
YWxwaGEgY2hhbm5lbHMgb2YgdGV4RGF0YUdyZWVuCisgICAgLy8gKHRoaXMgaXMgYSBiaXQgaGFj
a3kgYnV0IHdvcmtzKS4KKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkc4
LCAyLCAyLCAwLCBHTF9SRywgR0xfVU5TSUdORURfQllURSwgdGV4RGF0YUdyZWVuLmRhdGEoKSk7
CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAi
cG9zaXRpb24iLCAwLjVmKTsKKworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENv
bG9yOjpncmVlbik7CisKKyAgICAvLyBTd2l0Y2ggdGhlIHRleHR1cmUgdG8gdXNlIHRoZSBjeWFu
IGxldmVsIDAgd2l0aCB0aGUgUkdCQSBmb3JtYXQuCisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwgMCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFYX0xFVkVMLCAwKTsKKworICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworCisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYp
OworCisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmN5YW4pOworfQor
CisvLyBUZXN0IHRoYXQgc2V0dGluZyBhIHRleHR1cmUgaW1hZ2Ugd29ya3Mgd2hlbiBiYXNlIGxl
dmVsIGlzIG91dCBvZiByYW5nZS4KK1RFU1RfUChUZXh0dXJlMkRUZXN0RVMzLCBTZXRJbWFnZVdo
ZW5CYXNlTGV2ZWxPdXRPZlJhbmdlKQoreworICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJF
MCk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEKTsKKworICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdM
X05FQVJFU1QpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJF
X01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworCisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRV
UkVfMkQsIEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwgMTAwMDApOworICAgIGdsVGV4UGFyYW1ldGVy
aShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BWF9MRVZFTCwgMTAwMDApOworCisgICAgZ2xU
ZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkE4LCAxLCAxLCAwLCBHTF9SR0JBLCBH
TF9VTlNJR05FRF9CWVRFLCAmR0xDb2xvcjo6Z3JlZW4pOworCisgICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7CisKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9C
QVNFX0xFVkVMLCAwKTsKKworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVm
KTsKKworICAgIC8vIFRleHR1cmUgc2hvdWxkIGJlIGNvbXBsZXRlLgorICAgIEVYUEVDVF9QSVhF
TF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpncmVlbik7Cit9CisKKy8vIEluIHRoZSBEM0QxMSBy
ZW5kZXJlciwgd2UgbmVlZCB0byBpbml0aWFsaXplIHNvbWUgdGV4dHVyZSBmb3JtYXRzLCB0byBm
aWxsIGVtcHR5IGNoYW5uZWxzLiBFRyBSQkEtPlJHQkE4LCB3aXRoIDEuMAorLy8gaW4gdGhlIGFs
cGhhIGNoYW5uZWwuIFRoaXMgdGVzdCBjb3ZlcnMgYSBidWcgd2hlcmUgcmVkZWZpbmluZyBhcnJh
eSB0ZXh0dXJlcyB3aXRoIHRoZXNlIGZvcm1hdHMgZG9lcyBub3Qgd29yayBhcworLy8gZXhwZWN0
ZWQuCitURVNUX1AoVGV4dHVyZTJEQXJyYXlUZXN0RVMzLCBSZWRlZmluZUluaXR0YWJsZUFycmF5
KQoreworICAgIHN0ZDo6dmVjdG9yPEdMdWJ5dGU+IHBpeGVsRGF0YTsKKyAgICBmb3IgKHNpemVf
dCBjb3VudCA9IDA7IGNvdW50IDwgNTAwMDsgY291bnQrKykKKyAgICB7CisgICAgICAgIHBpeGVs
RGF0YS5wdXNoX2JhY2soMHUpOworICAgICAgICBwaXhlbERhdGEucHVzaF9iYWNrKDI1NXUpOwor
ICAgICAgICBwaXhlbERhdGEucHVzaF9iYWNrKDB1KTsKKyAgICB9CisKKyAgICBnbEJpbmRUZXh0
dXJlKEdMX1RFWFRVUkVfMkRfQVJSQVksIG0yREFycmF5VGV4dHVyZSk7CisgICAgZ2xVc2VQcm9n
cmFtKG1Qcm9ncmFtKTsKKyAgICBnbFVuaWZvcm0xaShtVGV4dHVyZUFycmF5TG9jYXRpb24sIDAp
OworCisgICAgLy8gVGhlIGZpcnN0IGRyYXcgd29ya2VkIGNvcnJlY3RseS4KKyAgICBnbFRleElt
YWdlM0QoR0xfVEVYVFVSRV8yRF9BUlJBWSwgMCwgR0xfUkdCLCA0LCA0LCAyLCAwLCBHTF9SR0Is
IEdMX1VOU0lHTkVEX0JZVEUsICZwaXhlbERhdGFbMF0pOworCisgICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfMkRfQVJSQVksIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7
CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkRfQVJSQVksIEdMX1RFWFRVUkVfTUFH
X0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkRf
QVJSQVksIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9SRVBFQVQpOworICAgIGdsVGV4UGFyYW1ldGVy
aShHTF9URVhUVVJFXzJEX0FSUkFZLCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfUkVQRUFUKTsKKyAg
ICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMS4wZik7CisgICAgRVhQRUNUX1BJWEVM
X0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsKKworICAgIC8vIFRoZSBkaW1lbnNpb24g
b2YgdGhlIHJlc3BlY2lmaWNhdGlvbiBtdXN0IG1hdGNoIHRoZSBvcmlnaW5hbCBleGFjdGx5IHRv
IHRyaWdnZXIgdGhlIGJ1Zy4KKyAgICBnbFRleEltYWdlM0QoR0xfVEVYVFVSRV8yRF9BUlJBWSwg
MCwgR0xfUkdCLCA0LCA0LCAyLCAwLCBHTF9SR0IsIEdMX1VOU0lHTkVEX0JZVEUsICZwaXhlbERh
dGFbMF0pOworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAxLjBmKTsKKyAgICBF
WFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4pOworCisgICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFRlc3Qgc2hhZG93IHNhbXBsZXIgYW5kIHJlZ3VsYXIg
bm9uLXNoYWRvdyBzYW1wbGVyIGNvZXhpc3RpbmcgaW4gdGhlIHNhbWUgc2hhZGVyLgorLy8gVGhp
cyB0ZXN0IGlzIG5lZWRlZCBlc3BlY2lhbGx5IHRvIGNvbmZpcm0gdGhhdCBzYW1wbGVyIHJlZ2lz
dGVycyBnZXQgYXNzaWduZWQgY29ycmVjdGx5IG9uCisvLyB0aGUgSExTTCBiYWNrZW5kIGV2ZW4g
d2hlbiB0aGVyZSdzIGEgbWl4IG9mIGRpZmZlcmVudCBITFNMIHNhbXBsZXIgYW5kIHRleHR1cmUg
dHlwZXMuCitURVNUX1AoU2hhZG93U2FtcGxlclBsdXNTYW1wbGVyM0RUZXN0RVMzLCBTaGFkb3dT
YW1wbGVyUGx1c1NhbXBsZXIzRERyYXcpCit7CisgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRV
UkUwKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfM0QsIG1UZXh0dXJlM0QpOworICAg
IEdMdWJ5dGUgdGV4RGF0YVs0XTsKKyAgICB0ZXhEYXRhWzBdID0gMDsKKyAgICB0ZXhEYXRhWzFd
ID0gNjA7CisgICAgdGV4RGF0YVsyXSA9IDA7CisgICAgdGV4RGF0YVszXSA9IDI1NTsKKyAgICBn
bFRleEltYWdlM0QoR0xfVEVYVFVSRV8zRCwgMCwgR0xfUkdCQSwgMSwgMSwgMSwgMCwgR0xfUkdC
QSwgR0xfVU5TSUdORURfQllURSwgdGV4RGF0YSk7CisKKyAgICBnbEFjdGl2ZVRleHR1cmUoR0xf
VEVYVFVSRTEpOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVTaGFk
b3cpOworICAgIEdMZmxvYXQgZGVwdGhUZXhEYXRhWzFdOworICAgIGRlcHRoVGV4RGF0YVswXSA9
IDAuNWY7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX0RFUFRIX0NPTVBP
TkVOVDMyRiwgMSwgMSwgMCwgR0xfREVQVEhfQ09NUE9ORU5ULCBHTF9GTE9BVCwKKyAgICAgICAg
ICAgICAgICAgZGVwdGhUZXhEYXRhKTsKKworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7Cisg
ICAgZ2xVbmlmb3JtMWYobURlcHRoUmVmVW5pZm9ybUxvY2F0aW9uLCAwLjNmKTsKKyAgICBnbFVu
aWZvcm0xaShtVGV4dHVyZTNEVW5pZm9ybUxvY2F0aW9uLCAwKTsKKyAgICBnbFVuaWZvcm0xaSht
VGV4dHVyZVNoYWRvd1VuaWZvcm1Mb2NhdGlvbiwgMSk7CisKKyAgICBnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMsIEdMX0xFUVVBTCk7CisgICAg
ZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworICAgIEVYUEVDVF9HTF9OT19F
UlJPUigpOworICAgIC8vIFRoZSBzaGFkZXIgd3JpdGVzIDAuNSAqIDxjb21wYXJpc29uIHJlc3Vs
dCAoMS4wKT4gKyA8dGV4dHVyZSBjb2xvcj4KKyAgICBFWFBFQ1RfUElYRUxfTkVBUigwLCAwLCAx
MjgsIDE4OCwgMTI4LCAyNTUsIDIpOworCisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
MkQsIEdMX1RFWFRVUkVfQ09NUEFSRV9GVU5DLCBHTF9HUkVBVEVSKTsKKyAgICBkcmF3UXVhZCht
UHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cisg
ICAgLy8gVGhlIHNoYWRlciB3cml0ZXMgMC41ICogPGNvbXBhcmlzb24gcmVzdWx0ICgwLjApPiAr
IDx0ZXh0dXJlIGNvbG9yPgorICAgIEVYUEVDVF9QSVhFTF9ORUFSKDAsIDAsIDAsIDYwLCAwLCAy
NTUsIDIpOworfQorCisvLyBUZXN0IG11bHRpcGxlIGRpZmZlcmVudCBzYW1wbGVyIHR5cGVzIGlu
IHRoZSBzYW1lIHNoYWRlci4KKy8vIFRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgZXZlbiBpZiBz
YW1wbGVyIC8gdGV4dHVyZSByZWdpc3RlcnMgZ2V0IGdyb3VwZWQgdG9nZXRoZXIgYmFzZWQgb24g
dHlwZQorLy8gb3Igb3RoZXJ3aXNlIGdldCBzaHVmZmxlZCBhcm91bmQgaW4gdGhlIEhMU0wgYmFj
a2VuZCBvZiB0aGUgc2hhZGVyIHRyYW5zbGF0b3IsIHRoZSBEM0QgcmVuZGVyZXIKKy8vIHN0aWxs
IGhhcyB0aGUgcmlnaHQgcmVnaXN0ZXIgaW5kZXggaW5mb3JtYXRpb24gZm9yIGVhY2ggRVNTTCBz
YW1wbGVyLgorLy8gVGhlIHRlc3RlZCBFU1NMIHNhbXBsZXJzIGhhdmUgdGhlIGZvbGxvd2luZyB0
eXBlcyBpbiBEM0QxMSBITFNMOgorLy8gc2FtcGxlcjJEOiAgICAgICAgIFRleHR1cmUyRCAgICsg
U2FtcGxlclN0YXRlCisvLyBzYW1wbGVyQ3ViZTogICAgICAgVGV4dHVyZUN1YmUgKyBTYW1wbGVy
U3RhdGUKKy8vIHNhbXBsZXIyRFNoYWRvdzogICBUZXh0dXJlMkQgICArIFNhbXBsZXJDb21wYXJp
c29uU3RhdGUKKy8vIHNhbXBsZXJDdWJlU2hhZG93OiBUZXh0dXJlQ3ViZSArIFNhbXBsZXJDb21w
YXJpc29uU3RhdGUKK1RFU1RfUChTYW1wbGVyVHlwZU1peFRlc3RFUzMsIFNhbXBsZXJUeXBlTWl4
RHJhdykKK3sKKyAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOworICAgIGdsQmluZFRl
eHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7CisgICAgR0x1Ynl0ZSB0ZXhEYXRhWzRd
OworICAgIHRleERhdGFbMF0gPSAwOworICAgIHRleERhdGFbMV0gPSAwOworICAgIHRleERhdGFb
Ml0gPSAxMjA7CisgICAgdGV4RGF0YVszXSA9IDI1NTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVY
VFVSRV8yRCwgMCwgR0xfUkdCQSwgMSwgMSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwg
dGV4RGF0YSk7CisKKyAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTEpOworICAgIGdsQmlu
ZFRleHR1cmUoR0xfVEVYVFVSRV9DVUJFX01BUCwgbVRleHR1cmVDdWJlKTsKKyAgICB0ZXhEYXRh
WzBdID0gMDsKKyAgICB0ZXhEYXRhWzFdID0gOTA7CisgICAgdGV4RGF0YVsyXSA9IDA7CisgICAg
dGV4RGF0YVszXSA9IDI1NTsKKyAgICBnbFRleFN0b3JhZ2UyRChHTF9URVhUVVJFX0NVQkVfTUFQ
LCAxLCBHTF9SR0JBOCwgMSwgMSk7CisgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfQ1VC
RV9NQVBfUE9TSVRJVkVfWCwgMCwgMCwgMCwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllU
RSwKKyAgICAgICAgICAgICAgICAgICAgdGV4RGF0YSk7CisKKyAgICBnbEFjdGl2ZVRleHR1cmUo
R0xfVEVYVFVSRTIpOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUy
RFNoYWRvdyk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
Q09NUEFSRV9GVU5DLCBHTF9MRVFVQUwpOworICAgIEdMZmxvYXQgZGVwdGhUZXhEYXRhWzFdOwor
ICAgIGRlcHRoVGV4RGF0YVswXSA9IDAuNWY7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVf
MkQsIDAsIEdMX0RFUFRIX0NPTVBPTkVOVDMyRiwgMSwgMSwgMCwgR0xfREVQVEhfQ09NUE9ORU5U
LCBHTF9GTE9BVCwKKyAgICAgICAgICAgICAgICAgZGVwdGhUZXhEYXRhKTsKKworICAgIGdsQWN0
aXZlVGV4dHVyZShHTF9URVhUVVJFMyk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFX0NV
QkVfTUFQLCBtVGV4dHVyZUN1YmVTaGFkb3cpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFX0NVQkVfTUFQLCBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQywgR0xfTEVRVUFMKTsKKyAgICBk
ZXB0aFRleERhdGFbMF0gPSAwLjJmOworICAgIGdsVGV4U3RvcmFnZTJEKEdMX1RFWFRVUkVfQ1VC
RV9NQVAsIDEsIEdMX0RFUFRIX0NPTVBPTkVOVDMyRiwgMSwgMSk7CisgICAgZ2xUZXhTdWJJbWFn
ZTJEKEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwgMCwgMCwgMCwgMSwgMSwgR0xfREVQ
VEhfQ09NUE9ORU5ULCBHTF9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgZGVwdGhUZXhEYXRh
KTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9n
cmFtKTsKKyAgICBnbFVuaWZvcm0xZihtRGVwdGhSZWZVbmlmb3JtTG9jYXRpb24sIDAuM2YpOwor
ICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRpb24sIDApOworICAgIGdsVW5p
Zm9ybTFpKG1UZXh0dXJlQ3ViZVVuaWZvcm1Mb2NhdGlvbiwgMSk7CisgICAgZ2xVbmlmb3JtMWko
bVRleHR1cmUyRFNoYWRvd1VuaWZvcm1Mb2NhdGlvbiwgMik7CisgICAgZ2xVbmlmb3JtMWkobVRl
eHR1cmVDdWJlU2hhZG93VW5pZm9ybUxvY2F0aW9uLCAzKTsKKworICAgIGRyYXdRdWFkKG1Qcm9n
cmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICAv
LyBUaGUgc2hhZGVyIHdyaXRlczoKKyAgICAvLyA8dGV4dHVyZSAyZCBjb2xvcj4gKworICAgIC8v
IDxjdWJlIG1hcCBjb2xvcj4gKworICAgIC8vIDAuMjUgKiA8Y29tcGFyaXNvbiByZXN1bHQgKDEu
MCk+ICsKKyAgICAvLyAwLjEyNSAqIDxjb21wYXJpc29uIHJlc3VsdCAoMC4wKT4KKyAgICBFWFBF
Q1RfUElYRUxfTkVBUigwLCAwLCA2NCwgMTU0LCAxODQsIDI1NSwgMik7Cit9CisKKy8vIFRlc3Qg
ZGlmZmVyZW50IGJhc2UgbGV2ZWxzIG9uIHRleHR1cmVzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIHNh
bWUgc2FtcGxlciBhcnJheS4KKy8vIENhbGxpbmcgdGV4dHVyZVNpemUoKSBvbiB0aGUgc2FtcGxl
cnMgaGl0cyB0aGUgRDNEIHNhbXBsZXIgbWV0YWRhdGEgd29ya2Fyb3VuZC4KK1RFU1RfUChUZXh0
dXJlU2l6ZVRleHR1cmVBcnJheVRlc3QsIEJhc2VMZXZlbFZhcmllc0luVGV4dHVyZUFycmF5KQor
eworICAgIGlmICgoSXNBTUQoKSB8fCBJc0ludGVsKCkpICYmIGdldFBsYXRmb3JtUmVuZGVyZXIo
KSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSkKKyAgICB7CisgICAgICAg
IHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIGFuZCBBTUQgRDNELiIgPDwgc3Rk
OjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGdsQWN0aXZlVGV4dHVyZShHTF9U
RVhUVVJFMCk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEQSk7
CisgICAgR0xzaXplaSBzaXplID0gNjQ7CisgICAgZm9yIChHTGludCBsZXZlbCA9IDA7IGxldmVs
IDwgNzsgKytsZXZlbCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9MVCgwLCBzaXplKTsKKyAgICAg
ICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIGxldmVsLCBHTF9SR0JBLCBzaXplLCBzaXpl
LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0cik7CisgICAgICAgIHNpemUgPSBzaXplIC8gMjsKKyAgICB9CisgICAgQVNTRVJUX0VRKDAs
IHNpemUpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX0JB
U0VfTEVWRUwsIDEpOworCisgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUxKTsKKyAgICBn
bEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkRCKTsKKyAgICBzaXplID0gMTI4
OworICAgIGZvciAoR0xpbnQgbGV2ZWwgPSAwOyBsZXZlbCA8IDg7ICsrbGV2ZWwpCisgICAgewor
ICAgICAgICBBU1NFUlRfTFQoMCwgc2l6ZSk7CisgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhU
VVJFXzJELCBsZXZlbCwgR0xfUkdCQSwgc2l6ZSwgc2l6ZSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdO
RURfQllURSwKKyAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICBzaXplID0g
c2l6ZSAvIDI7CisgICAgfQorICAgIEFTU0VSVF9FUSgwLCBzaXplKTsKKyAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAzKTsKKyAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgZ2xV
bmlmb3JtMWkobVRleHR1cmUwTG9jYXRpb24sIDApOworICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJl
MUxvY2F0aW9uLCAxKTsKKworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVm
KTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICAvLyBSZWQgY2hhbm5lbDogd2lkdGgg
b2YgbGV2ZWwgMSBvZiB0ZXh0dXJlIEE6IDMyLgorICAgIC8vIEdyZWVuIGNoYW5uZWw6IHdpZHRo
IG9mIGxldmVsIDMgb2YgdGV4dHVyZSBCOiAxNi4KKyAgICBFWFBFQ1RfUElYRUxfTkVBUigwLCAw
LCAzMiwgMTYsIDAsIDI1NSwgMik7Cit9CisKKy8vIFdoZW4gc2FtcGxpbmcgYSB0ZXh0dXJlIHdp
dGhvdXQgYW4gYWxwaGEgY2hhbm5lbCwgIjEiIGlzIHJldHVybmVkIGFzIHRoZSBhbHBoYSB2YWx1
ZS4KKy8vIEVTIDMuMC40IHRhYmxlIDMuMjQKK1RFU1RfUChUZXh0dXJlMkRUZXN0RVMzLCBUZXh0
dXJlUkdCSW1wbGljaXRBbHBoYTEpCit7CisgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUw
KTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOworICAgIGds
VGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0I4LCAxLCAxLCAwLCBHTF9SR0IsIEdM
X1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisg
ICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworCisgICAgRVhQRUNUX1BJ
WEVMX0FMUEhBX0VRKDAsIDAsIDI1NSk7Cit9CisKKy8vIFdoZW4gc2FtcGxpbmcgYSB0ZXh0dXJl
IHdpdGhvdXQgYW4gYWxwaGEgY2hhbm5lbCwgIjEiIGlzIHJldHVybmVkIGFzIHRoZSBhbHBoYSB2
YWx1ZS4KKy8vIEVTIDMuMC40IHRhYmxlIDMuMjQKK1RFU1RfUChUZXh0dXJlMkRUZXN0RVMzLCBU
ZXh0dXJlTHVtaW5hbmNlSW1wbGljaXRBbHBoYTEpCit7CisgICAgZ2xBY3RpdmVUZXh0dXJlKEdM
X1RFWFRVUkUwKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQp
OworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9MVU1JTkFOQ0UsIDEsIDEs
IDAsIEdMX0xVTUlOQU5DRSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7CisgICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7CisKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41
Zik7CisKKyAgICBFWFBFQ1RfUElYRUxfQUxQSEFfRVEoMCwgMCwgMjU1KTsKK30KKworLy8gV2hl
biBzYW1wbGluZyBhIHRleHR1cmUgd2l0aG91dCBhbiBhbHBoYSBjaGFubmVsLCAiMSIgaXMgcmV0
dXJuZWQgYXMgdGhlIGFscGhhIHZhbHVlLgorLy8gRVMgMy4wLjQgdGFibGUgMy4yNAorVEVTVF9Q
KFRleHR1cmUyRFRlc3RFUzMsIFRleHR1cmVMdW1pbmFuY2UzMkltcGxpY2l0QWxwaGExKQorewor
ICAgIGlmIChleHRlbnNpb25FbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpKQorICAgIHsK
KyAgICAgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKKyAgICAgICAgZ2xCaW5kVGV4
dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEKTsKKyAgICAgICAgZ2xUZXhJbWFnZTJEKEdM
X1RFWFRVUkVfMkQsIDAsIEdMX0xVTUlOQU5DRSwgMSwgMSwgMCwgR0xfTFVNSU5BTkNFLCBHTF9G
TE9BVCwgbnVsbHB0cik7CisgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgICAg
IGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgICAgICBFWFBFQ1Rf
UElYRUxfQUxQSEFfRVEoMCwgMCwgMjU1KTsKKyAgICB9Cit9CisKKy8vIFdoZW4gc2FtcGxpbmcg
YSB0ZXh0dXJlIHdpdGhvdXQgYW4gYWxwaGEgY2hhbm5lbCwgIjEiIGlzIHJldHVybmVkIGFzIHRo
ZSBhbHBoYSB2YWx1ZS4KKy8vIEVTIDMuMC40IHRhYmxlIDMuMjQKK1RFU1RfUChUZXh0dXJlMkRU
ZXN0RVMzLCBUZXh0dXJlTHVtaW5hbmNlMTZJbXBsaWNpdEFscGhhMSkKK3sKKyAgICBpZiAoZXh0
ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpKQorICAgIHsKKyAgICAg
ICAgaWYgKElzTlZJRElBKCkgJiYgSXNPcGVuR0xFUygpKQorICAgICAgICB7CisgICAgICAgICAg
ICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBOVklESUEiIDw8IHN0ZDo6ZW5kbDsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvLyBUT0RPKHlub3Zpa292KTog
cmUtZW5hYmxlIG9uY2Ugcm9vdCBjYXVzZSBvZiBodHRwOi8vYW5nbGVidWcuY29tLzE0MjAgaXMg
Zml4ZWQKKyAgICAgICAgaWYgKElzQW5kcm9pZCgpICYmIElzQWRyZW5vKCkgJiYgSXNPcGVuR0xF
UygpKQorICAgICAgICB7CisgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBv
biBBZHJlbm8gT3BlbkdMRVMgb24gQW5kcm9pZC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJF
MCk7CisgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7Cisg
ICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9MVU1JTkFOQ0UsIDEsIDEs
IDAsIEdMX0xVTUlOQU5DRSwgR0xfSEFMRl9GTE9BVF9PRVMsCisgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyKTsKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgZHJh
d1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworCisgICAgICAgIEVYUEVDVF9QSVhF
TF9BTFBIQV9FUSgwLCAwLCAyNTUpOworICAgIH0KK30KKworLy8gV2hlbiBzYW1wbGluZyBhIHRl
eHR1cmUgd2l0aG91dCBhbiBhbHBoYSBjaGFubmVsLCAiMSIgaXMgcmV0dXJuZWQgYXMgdGhlIGFs
cGhhIHZhbHVlLgorLy8gRVMgMy4wLjQgdGFibGUgMy4yNAorVEVTVF9QKFRleHR1cmUyRFVuc2ln
bmVkSW50ZWdlckFscGhhMVRlc3RFUzMsIFRleHR1cmVSR0I4VUlJbXBsaWNpdEFscGhhMSkKK3sK
KyAgICBpZiAoSXNJbnRlbCgpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRp
c2FibGVkIG9uIEludGVsLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9U
RVhUVVJFXzJELCBtVGV4dHVyZTJEKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwg
MCwgR0xfUkdCOFVJLCAxLCAxLCAwLCBHTF9SR0JfSU5URUdFUiwgR0xfVU5TSUdORURfQllURSwg
bnVsbHB0cik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
TUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
MkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7CisKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisK
KyAgICBFWFBFQ1RfUElYRUxfQUxQSEFfRVEoMCwgMCwgMjU1KTsKK30KKworLy8gV2hlbiBzYW1w
bGluZyBhIHRleHR1cmUgd2l0aG91dCBhbiBhbHBoYSBjaGFubmVsLCAiMSIgaXMgcmV0dXJuZWQg
YXMgdGhlIGFscGhhIHZhbHVlLgorLy8gRVMgMy4wLjQgdGFibGUgMy4yNAorVEVTVF9QKFRleHR1
cmUyREludGVnZXJBbHBoYTFUZXN0RVMzLCBUZXh0dXJlUkdCOElJbXBsaWNpdEFscGhhMSkKK3sK
KyAgICBpZiAoSXNJbnRlbCgpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRp
c2FibGVkIG9uIEludGVsLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9U
RVhUVVJFXzJELCBtVGV4dHVyZTJEKTsKKworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJE
LCAwLCBHTF9SR0I4SSwgMSwgMSwgMCwgR0xfUkdCX0lOVEVHRVIsIEdMX0JZVEUsIG51bGxwdHIp
OworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxU
RVIsIEdMX05FQVJFU1QpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OworCisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworCisgICAgRVhQ
RUNUX1BJWEVMX0FMUEhBX0VRKDAsIDAsIDI1NSk7Cit9CisKKy8vIFdoZW4gc2FtcGxpbmcgYSB0
ZXh0dXJlIHdpdGhvdXQgYW4gYWxwaGEgY2hhbm5lbCwgIjEiIGlzIHJldHVybmVkIGFzIHRoZSBh
bHBoYSB2YWx1ZS4KKy8vIEVTIDMuMC40IHRhYmxlIDMuMjQKK1RFU1RfUChUZXh0dXJlMkRVbnNp
Z25lZEludGVnZXJBbHBoYTFUZXN0RVMzLCBUZXh0dXJlUkdCMTZVSUltcGxpY2l0QWxwaGExKQor
eworICAgIGlmIChJc0ludGVsKCkpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qg
ZGlzYWJsZWQgb24gSW50ZWwuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJE
LCAwLCBHTF9SR0IxNlVJLCAxLCAxLCAwLCBHTF9SR0JfSU5URUdFUiwgR0xfVU5TSUdORURfU0hP
UlQsIG51bGxwdHIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhU
VVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworCisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYp
OworCisgICAgRVhQRUNUX1BJWEVMX0FMUEhBX0VRKDAsIDAsIDI1NSk7Cit9CisKKy8vIFdoZW4g
c2FtcGxpbmcgYSB0ZXh0dXJlIHdpdGhvdXQgYW4gYWxwaGEgY2hhbm5lbCwgIjEiIGlzIHJldHVy
bmVkIGFzIHRoZSBhbHBoYSB2YWx1ZS4KKy8vIEVTIDMuMC40IHRhYmxlIDMuMjQKK1RFU1RfUChU
ZXh0dXJlMkRJbnRlZ2VyQWxwaGExVGVzdEVTMywgVGV4dHVyZVJHQjE2SUltcGxpY2l0QWxwaGEx
KQoreworICAgIGlmIChJc0ludGVsKCkpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRl
c3QgZGlzYWJsZWQgb24gSW50ZWwuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKKyAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJF
XzJELCAwLCBHTF9SR0IxNkksIDEsIDEsIDAsIEdMX1JHQl9JTlRFR0VSLCBHTF9TSE9SVCwgbnVs
bHB0cik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFH
X0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7CisKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisKKyAg
ICBFWFBFQ1RfUElYRUxfQUxQSEFfRVEoMCwgMCwgMjU1KTsKK30KKworLy8gV2hlbiBzYW1wbGlu
ZyBhIHRleHR1cmUgd2l0aG91dCBhbiBhbHBoYSBjaGFubmVsLCAiMSIgaXMgcmV0dXJuZWQgYXMg
dGhlIGFscGhhIHZhbHVlLgorLy8gRVMgMy4wLjQgdGFibGUgMy4yNAorVEVTVF9QKFRleHR1cmUy
RFVuc2lnbmVkSW50ZWdlckFscGhhMVRlc3RFUzMsIFRleHR1cmVSR0IzMlVJSW1wbGljaXRBbHBo
YTEpCit7CisgICAgaWYgKElzSW50ZWwoKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAi
VGVzdCBkaXNhYmxlZCBvbiBJbnRlbC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOworICAgIGdsQmluZFRleHR1
cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRV
UkVfMkQsIDAsIEdMX1JHQjMyVUksIDEsIDEsIDAsIEdMX1JHQl9JTlRFR0VSLCBHTF9VTlNJR05F
RF9JTlQsIG51bGxwdHIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOworCisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAu
NWYpOworCisgICAgRVhQRUNUX1BJWEVMX0FMUEhBX0VRKDAsIDAsIDI1NSk7Cit9CisKKy8vIFdo
ZW4gc2FtcGxpbmcgYSB0ZXh0dXJlIHdpdGhvdXQgYW4gYWxwaGEgY2hhbm5lbCwgIjEiIGlzIHJl
dHVybmVkIGFzIHRoZSBhbHBoYSB2YWx1ZS4KKy8vIEVTIDMuMC40IHRhYmxlIDMuMjQKK1RFU1Rf
UChUZXh0dXJlMkRJbnRlZ2VyQWxwaGExVGVzdEVTMywgVGV4dHVyZVJHQjMySUltcGxpY2l0QWxw
aGExKQoreworICAgIGlmIChJc0ludGVsKCkpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwg
IlRlc3QgZGlzYWJsZWQgb24gSW50ZWwuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKKyAgICBnbEJpbmRUZXh0
dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhU
VVJFXzJELCAwLCBHTF9SR0IzMkksIDEsIDEsIDAsIEdMX1JHQl9JTlRFR0VSLCBHTF9JTlQsIG51
bGxwdHIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01B
R19GSUxURVIsIEdMX05FQVJFU1QpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgIEVYUEVDVF9HTF9OT19F
UlJPUigpOworCisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworCisg
ICAgRVhQRUNUX1BJWEVMX0FMUEhBX0VRKDAsIDAsIDI1NSk7Cit9CisKKy8vIFdoZW4gc2FtcGxp
bmcgYSB0ZXh0dXJlIHdpdGhvdXQgYW4gYWxwaGEgY2hhbm5lbCwgIjEiIGlzIHJldHVybmVkIGFz
IHRoZSBhbHBoYSB2YWx1ZS4KKy8vIEVTIDMuMC40IHRhYmxlIDMuMjQKK1RFU1RfUChUZXh0dXJl
MkRUZXN0RVMzLCBUZXh0dXJlUkdCU05PUk1JbXBsaWNpdEFscGhhMSkKK3sKKyAgICBnbEFjdGl2
ZVRleHR1cmUoR0xfVEVYVFVSRTApOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwg
bVRleHR1cmUyRCk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQjhf
U05PUk0sIDEsIDEsIDAsIEdMX1JHQiwgR0xfQllURSwgbnVsbHB0cik7CisgICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7CisKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7
CisKKyAgICBFWFBFQ1RfUElYRUxfQUxQSEFfRVEoMCwgMCwgMjU1KTsKK30KKworLy8gV2hlbiBz
YW1wbGluZyBhIHRleHR1cmUgd2l0aG91dCBhbiBhbHBoYSBjaGFubmVsLCAiMSIgaXMgcmV0dXJu
ZWQgYXMgdGhlIGFscGhhIHZhbHVlLgorLy8gRVMgMy4wLjQgdGFibGUgMy4yNAorVEVTVF9QKFRl
eHR1cmUyRFRlc3RFUzMsIFRleHR1cmVSR0I5RTVJbXBsaWNpdEFscGhhMSkKK3sKKyAgICBnbEFj
dGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8y
RCwgbVRleHR1cmUyRCk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JH
QjlfRTUsIDEsIDEsIDAsIEdMX1JHQiwgR0xfVU5TSUdORURfSU5UXzVfOV85XzlfUkVWLAorICAg
ICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAg
IGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgIEVYUEVDVF9QSVhF
TF9BTFBIQV9FUSgwLCAwLCAyNTUpOworfQorCisvLyBXaGVuIHNhbXBsaW5nIGEgdGV4dHVyZSB3
aXRob3V0IGFuIGFscGhhIGNoYW5uZWwsICIxIiBpcyByZXR1cm5lZCBhcyB0aGUgYWxwaGEgdmFs
dWUuCisvLyBFUyAzLjAuNCB0YWJsZSAzLjI0CitURVNUX1AoVGV4dHVyZTJEVGVzdEVTMywgVGV4
dHVyZUNPTVBSRVNTRURSR0I4RVRDMkltcGxpY2l0QWxwaGExKQoreworICAgIGdsQWN0aXZlVGV4
dHVyZShHTF9URVhUVVJFMCk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4
dHVyZTJEKTsKKyAgICBnbENvbXByZXNzZWRUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdM
X0NPTVBSRVNTRURfUkdCOF9FVEMyLCAxLCAxLCAwLCA4LCBudWxscHRyKTsKKyAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKKworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVm
KTsKKworICAgIEVYUEVDVF9QSVhFTF9BTFBIQV9FUSgwLCAwLCAyNTUpOworfQorCisvLyBXaGVu
IHNhbXBsaW5nIGEgdGV4dHVyZSB3aXRob3V0IGFuIGFscGhhIGNoYW5uZWwsICIxIiBpcyByZXR1
cm5lZCBhcyB0aGUgYWxwaGEgdmFsdWUuCisvLyBFUyAzLjAuNCB0YWJsZSAzLjI0CitURVNUX1Ao
VGV4dHVyZTJEVGVzdEVTMywgVGV4dHVyZUNPTVBSRVNTRURTUkdCOEVUQzJJbXBsaWNpdEFscGhh
MSkKK3sKKyAgICBpZiAoSXNJbnRlbCgpICYmIElzTGludXgoKSkKKyAgICB7CisgICAgICAgIC8v
IFRPRE8oY3dhbGxleik6IEZpeCBvbiBMaW51eCBJbnRlbCBkcml2ZXJzIChodHRwOi8vYW5nbGVi
dWcuY29tLzEzNDYpCisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxlZCBvbiBMaW51
eCBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOworICAgIGdsQmluZFRleHR1cmUoR0xf
VEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7CisgICAgZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRChHTF9U
RVhUVVJFXzJELCAwLCBHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIsIDEsIDEsIDAsIDgsIG51bGxw
dHIpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZHJhd1F1YWQobVByb2dyYW0s
ICJwb3NpdGlvbiIsIDAuNWYpOworCisgICAgRVhQRUNUX1BJWEVMX0FMUEhBX0VRKDAsIDAsIDI1
NSk7Cit9CisKKy8vIFVzZSBhIHNhbXBsZXIgaW4gYSB1bmlmb3JtIHN0cnVjdC4KK1RFU1RfUChT
YW1wbGVySW5TdHJ1Y3RUZXN0LCBTYW1wbGVySW5TdHJ1Y3QpCit7CisgICAgcnVuU2FtcGxlcklu
U3RydWN0VGVzdCgpOworfQorCisvLyBVc2UgYSBzYW1wbGVyIGluIGEgdW5pZm9ybSBzdHJ1Y3Qg
dGhhdCdzIHBhc3NlZCBhcyBhIGZ1bmN0aW9uIHBhcmFtZXRlci4KK1RFU1RfUChTYW1wbGVySW5T
dHJ1Y3RBc0Z1bmN0aW9uUGFyYW1ldGVyVGVzdCwgU2FtcGxlckluU3RydWN0QXNGdW5jdGlvblBh
cmFtZXRlcikKK3sKKyAgICAvLyBUT0RPKHlub3Zpa292KTogcmUtZW5hYmxlIG9uY2Ugcm9vdCBj
YXVzZSBvZiBodHRwOi8vYW5nbGVidWcuY29tLzE0MjcgaXMgZml4ZWQKKyAgICBpZiAoSXNBbmRy
b2lkKCkgJiYgSXNBZHJlbm8oKSAmJiBJc09wZW5HTEVTKCkpCisgICAgeworICAgICAgICBzdGQ6
OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBBZHJlbm8gT3BlbkdMRVMgb24gQW5kcm9pZC4iIDw8
IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChJc1dpbmRvd3Mo
KSAmJiBJc0ludGVsKCkgJiYgSXNPcGVuR0woKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8
PCAiVGVzdCBza2lwcGVkIG9uIFdpbmRvd3MgT3BlbkdMIG9uIEludGVsLiIgPDwgc3RkOjplbmRs
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcnVuU2FtcGxlckluU3RydWN0VGVzdCgp
OworfQorCisvLyBVc2UgYSBzYW1wbGVyIGluIGEgdW5pZm9ybSBzdHJ1Y3QgYXJyYXkgd2l0aCBh
IHN0cnVjdCBmcm9tIHRoZSBhcnJheSBwYXNzZWQgYXMgYSBmdW5jdGlvbgorLy8gcGFyYW1ldGVy
LgorVEVTVF9QKFNhbXBsZXJJblN0cnVjdEFycmF5QXNGdW5jdGlvblBhcmFtZXRlclRlc3QsIFNh
bXBsZXJJblN0cnVjdEFycmF5QXNGdW5jdGlvblBhcmFtZXRlcikKK3sKKyAgICBpZiAoSXNJbnRl
bCgpICYmIEdldFBhcmFtKCkuZ2V0UmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQ
RV9PUEVOR0xfQU5HTEUpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBl
ZCBvbiBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgLy8gVE9ETyh5bm92aWtvdik6IHJlLWVuYWJsZSBvbmNlIHJvb3QgY2F1c2Ugb2YgaHR0
cDovL2FuZ2xlYnVnLmNvbS8xNDI3IGlzIGZpeGVkCisgICAgaWYgKElzQW5kcm9pZCgpICYmIElz
QWRyZW5vKCkgJiYgSXNPcGVuR0xFUygpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJU
ZXN0IHNraXBwZWQgb24gQWRyZW5vIE9wZW5HTEVTIG9uIEFuZHJvaWQuIiA8PCBzdGQ6OmVuZGw7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgcnVuU2FtcGxlckluU3RydWN0VGVzdCgpOwor
fQorCisvLyBVc2UgYSBzYW1wbGVyIGluIGEgc3RydWN0IGluc2lkZSBhIHVuaWZvcm0gc3RydWN0
IHdpdGggdGhlIG5lc3RlZCBzdHJ1Y3QgcGFzc2VkIGFzIGEgZnVuY3Rpb24KKy8vIHBhcmFtZXRl
ci4KK1RFU1RfUChTYW1wbGVySW5OZXN0ZWRTdHJ1Y3RBc0Z1bmN0aW9uUGFyYW1ldGVyVGVzdCwg
U2FtcGxlckluTmVzdGVkU3RydWN0QXNGdW5jdGlvblBhcmFtZXRlcikKK3sKKyAgICBpZiAoSXNJ
bnRlbCgpICYmIEdldFBhcmFtKCkuZ2V0UmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVf
VFlQRV9PUEVOR0xfQU5HTEUpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tp
cHBlZCBvbiBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgLy8gVE9ETyh5bm92aWtvdik6IHJlLWVuYWJsZSBvbmNlIHJvb3QgY2F1c2Ugb2Yg
aHR0cDovL2FuZ2xlYnVnLmNvbS8xNDI3IGlzIGZpeGVkCisgICAgaWYgKElzQW5kcm9pZCgpICYm
IElzQWRyZW5vKCkgJiYgSXNPcGVuR0xFUygpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8
ICJUZXN0IHNraXBwZWQgb24gQWRyZW5vIE9wZW5HTEVTIG9uIEFuZHJvaWQuIiA8PCBzdGQ6OmVu
ZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgcnVuU2FtcGxlckluU3RydWN0VGVzdCgp
OworfQorCisvLyBNYWtlIHN1cmUgdGhhdCB0aGVyZSBpc24ndCBhIG5hbWUgY29uZmxpY3QgYmV0
d2VlbiBzYW1wbGVyIGV4dHJhY3RlZCBmcm9tIGEgc3RydWN0IGFuZCBhCisvLyBzaW1pbGFybHkg
bmFtZWQgdW5pZm9ybS4KK1RFU1RfUChTYW1wbGVySW5TdHJ1Y3RBbmRPdGhlclZhcmlhYmxlVGVz
dCwgU2FtcGxlckluU3RydWN0QW5kT3RoZXJWYXJpYWJsZSkKK3sKKyAgICBydW5TYW1wbGVySW5T
dHJ1Y3RUZXN0KCk7Cit9CisKK2NsYXNzIFRleHR1cmVMaW1pdHNUZXN0IDogcHVibGljIEFOR0xF
VGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgc3RydWN0IFJHQkE4CisgICAgeworICAgICAgICB1
aW50OF90IFIsIEcsIEIsIEE7CisgICAgfTsKKworICAgIFRleHR1cmVMaW1pdHNUZXN0KCkKKyAg
ICAgICAgOiBtUHJvZ3JhbSgwKSwgbU1heFZlcnRleFRleHR1cmVzKDApLCBtTWF4RnJhZ21lbnRU
ZXh0dXJlcygwKSwgbU1heENvbWJpbmVkVGV4dHVyZXMoMCkKKyAgICB7CisgICAgICAgIHNldFdp
bmRvd1dpZHRoKDEyOCk7CisgICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOworICAgICAgICBz
ZXRDb25maWdSZWRCaXRzKDgpOworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAg
ICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7
CisgICAgfQorCisgICAgflRleHR1cmVMaW1pdHNUZXN0KCkKKyAgICB7CisgICAgICAgIGlmICht
UHJvZ3JhbSAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICBnbERlbGV0ZVByb2dyYW0obVBy
b2dyYW0pOworICAgICAgICAgICAgbVByb2dyYW0gPSAwOworCisgICAgICAgICAgICBpZiAoIW1U
ZXh0dXJlcy5lbXB0eSgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsRGVsZXRl
VGV4dHVyZXMoc3RhdGljX2Nhc3Q8R0xzaXplaT4obVRleHR1cmVzLnNpemUoKSksICZtVGV4dHVy
ZXNbMF0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBTZXRV
cCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7CisKKyAgICAg
ICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMsICZtTWF4
VmVydGV4VGV4dHVyZXMpOworICAgICAgICBnbEdldEludGVnZXJ2KEdMX01BWF9URVhUVVJFX0lN
QUdFX1VOSVRTLCAmbU1heEZyYWdtZW50VGV4dHVyZXMpOworICAgICAgICBnbEdldEludGVnZXJ2
KEdMX01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTLCAmbU1heENvbWJpbmVkVGV4dHVy
ZXMpOworCisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIH0KKworICAgIHZvaWQg
Y29tcGlsZVByb2dyYW1XaXRoVGV4dHVyZUNvdW50cyhjb25zdCBzdGQ6OnN0cmluZyAmdmVydGV4
UHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2
ZXJ0ZXhUZXh0dXJlQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHZlcnRleEFjdGl2ZVRleHR1cmVDb3VudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdQcmVmaXgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZyYWdtZW50VGV4dHVy
ZUNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBm
cmFnbWVudEFjdGl2ZVRleHR1cmVDb3VudCkKKyAgICB7CisgICAgICAgIHN0ZDo6c3RyaW5nc3Ry
ZWFtIHZlcnRleFNoYWRlclN0cjsKKyAgICAgICAgdmVydGV4U2hhZGVyU3RyIDw8ICJhdHRyaWJ1
dGUgdmVjMiBwb3NpdGlvbjtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJ2YXJ5aW5n
IHZlYzQgY29sb3I7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICA8PCAidmFyeWluZyB2ZWMy
IHRleENvb3JkO1xuIjsKKworICAgICAgICBmb3IgKEdMaW50IHRleHR1cmVJbmRleCA9IDA7IHRl
eHR1cmVJbmRleCA8IHZlcnRleFRleHR1cmVDb3VudDsgKyt0ZXh0dXJlSW5kZXgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZlcnRleFNoYWRlclN0ciA8PCAidW5pZm9ybSBzYW1wbGVyMkQgIiA8
PCB2ZXJ0ZXhQcmVmaXggPDwgdGV4dHVyZUluZGV4IDw8ICI7XG4iOworICAgICAgICB9CisKKyAg
ICAgICAgdmVydGV4U2hhZGVyU3RyIDw8ICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICA8PCAiICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAsIDEpO1xuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiAgdGV4Q29vcmQgPSAocG9zaXRpb24gKiAwLjUp
ICsgMC41O1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiAgY29sb3IgPSB2ZWM0KDAp
O1xuIjsKKworICAgICAgICBmb3IgKEdMaW50IHRleHR1cmVJbmRleCA9IDA7IHRleHR1cmVJbmRl
eCA8IHZlcnRleEFjdGl2ZVRleHR1cmVDb3VudDsgKyt0ZXh0dXJlSW5kZXgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZlcnRleFNoYWRlclN0ciA8PCAiICBjb2xvciArPSB0ZXh0dXJlMkQoIiA8
PCB2ZXJ0ZXhQcmVmaXggPDwgdGV4dHVyZUluZGV4CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgIiwgdGV4Q29vcmQpO1xuIjsKKyAgICAgICAgfQorCisgICAgICAgIHZlcnRleFNoYWRl
clN0ciA8PCAifSI7CisKKyAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZnJhZ21lbnRTaGFkZXJT
dHI7CisgICAgICAgIGZyYWdtZW50U2hhZGVyU3RyIDw8ICJ2YXJ5aW5nIG1lZGl1bXAgdmVjNCBj
b2xvcjtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgInZhcnlpbmcgbWVkaXVtcCB2
ZWMyIHRleENvb3JkO1xuIjsKKworICAgICAgICBmb3IgKEdMaW50IHRleHR1cmVJbmRleCA9IDA7
IHRleHR1cmVJbmRleCA8IGZyYWdtZW50VGV4dHVyZUNvdW50OyArK3RleHR1cmVJbmRleCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXJTdHIgPDwgInVuaWZvcm0gc2FtcGxl
cjJEICIgPDwgZnJhZ1ByZWZpeCA8PCB0ZXh0dXJlSW5kZXggPDwgIjtcbiI7CisgICAgICAgIH0K
KworICAgICAgICBmcmFnbWVudFNoYWRlclN0ciA8PCAidm9pZCBtYWluKCkge1xuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICA8PCAiICBnbF9GcmFnQ29sb3IgPSBjb2xvcjtcbiI7CisKKyAg
ICAgICAgZm9yIChHTGludCB0ZXh0dXJlSW5kZXggPSAwOyB0ZXh0dXJlSW5kZXggPCBmcmFnbWVu
dEFjdGl2ZVRleHR1cmVDb3VudDsgKyt0ZXh0dXJlSW5kZXgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGZyYWdtZW50U2hhZGVyU3RyIDw8ICIgIGdsX0ZyYWdDb2xvciArPSB0ZXh0dXJlMkQoIiA8
PCBmcmFnUHJlZml4IDw8IHRleHR1cmVJbmRleAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgIiwgdGV4Q29vcmQpO1xuIjsKKyAgICAgICAgfQorCisgICAgICAgIGZyYWdtZW50U2hh
ZGVyU3RyIDw8ICJ9IjsKKworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmVydGV4U2hhZGVy
U291cmNlICAgPSB2ZXJ0ZXhTaGFkZXJTdHIuc3RyKCk7CisgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZmcmFnbWVudFNoYWRlclNvdXJjZSA9IGZyYWdtZW50U2hhZGVyU3RyLnN0cigpOworCisg
ICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFn
bWVudFNoYWRlclNvdXJjZSk7CisgICAgfQorCisgICAgUkdCQTggZ2V0UGl4ZWwoR0xpbnQgdGV4
SW5kZXgpCisgICAgeworICAgICAgICBSR0JBOCBwaXhlbCA9IHtzdGF0aWNfY2FzdDx1aW50OF90
Pih0ZXhJbmRleCAmIDB4N3UpLCBzdGF0aWNfY2FzdDx1aW50OF90Pih0ZXhJbmRleCA+PiAzKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgMCwgMjU1dX07CisgICAgICAgIHJldHVybiBwaXhlbDsK
KyAgICB9CisKKyAgICB2b2lkIGluaXRUZXh0dXJlcyhHTGludCB0ZXgyRENvdW50LCBHTGludCB0
ZXhDdWJlQ291bnQpCisgICAgeworICAgICAgICBHTGludCB0b3RhbENvdW50ID0gdGV4MkRDb3Vu
dCArIHRleEN1YmVDb3VudDsKKyAgICAgICAgbVRleHR1cmVzLmFzc2lnbih0b3RhbENvdW50LCAw
KTsKKyAgICAgICAgZ2xHZW5UZXh0dXJlcyh0b3RhbENvdW50LCAmbVRleHR1cmVzWzBdKTsKKyAg
ICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgc3RkOjp2ZWN0b3I8UkdCQTg+
IHRleERhdGEoMTYgKiAxNik7CisKKyAgICAgICAgR0xpbnQgdGV4SW5kZXggPSAwOworICAgICAg
ICBmb3IgKDsgdGV4SW5kZXggPCB0ZXgyRENvdW50OyArK3RleEluZGV4KQorICAgICAgICB7Cisg
ICAgICAgICAgICB0ZXhEYXRhLmFzc2lnbih0ZXhEYXRhLnNpemUoKSwgZ2V0UGl4ZWwodGV4SW5k
ZXgpKTsKKyAgICAgICAgICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCArIHRleEluZGV4
KTsKKyAgICAgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzW3Rl
eEluZGV4XSk7CisgICAgICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xf
UkdCQSwgMTYsIDE2LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICZ0ZXhEYXRhWzBdKTsKKyAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgICAg
ICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRF
UiwgR0xfTkVBUkVTVCk7CisgICAgICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICAgICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9U
T19FREdFKTsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisg
ICAgICAgIGZvciAoOyB0ZXhJbmRleCA8IHRleEN1YmVDb3VudDsgKyt0ZXhJbmRleCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdGV4RGF0YS5hc3NpZ24odGV4RGF0YS5zaXplKCksIGdldFBpeGVs
KHRleEluZGV4KSk7CisgICAgICAgICAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTAgKyB0
ZXhJbmRleCk7CisgICAgICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfQ1VCRV9NQVAs
IG1UZXh0dXJlc1t0ZXhJbmRleF0pOworICAgICAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRV
UkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwgMCwgR0xfUkdCQSwgMTYsIDE2LCAwLCBHTF9SR0JBLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICZ0ZXhEYXRhWzBdKTsK
KyAgICAgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ks
IDAsIEdMX1JHQkEsIDE2LCAxNiwgMCwgR0xfUkdCQSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9VTlNJR05FRF9CWVRFLCAmdGV4RGF0YVswXSk7CisgICAgICAgICAgICBnbFRleEltYWdl
MkQoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aLCAwLCBHTF9SR0JBLCAxNiwgMTYsIDAs
IEdMX1JHQkEsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgJnRl
eERhdGFbMF0pOworICAgICAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfQ1VCRV9NQVBf
TkVHQVRJVkVfWCwgMCwgR0xfUkdCQSwgMTYsIDE2LCAwLCBHTF9SR0JBLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICZ0ZXhEYXRhWzBdKTsKKyAgICAgICAgICAg
IGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ksIDAsIEdMX1JHQkEs
IDE2LCAxNiwgMCwgR0xfUkdCQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05F
RF9CWVRFLCAmdGV4RGF0YVswXSk7CisgICAgICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVS
RV9DVUJFX01BUF9ORUdBVElWRV9aLCAwLCBHTF9SR0JBLCAxNiwgMTYsIDAsIEdMX1JHQkEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgJnRleERhdGFbMF0pOwor
ICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIEdMX1RFWFRV
UkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgICAgICAgICBnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV9DVUJFX01BUCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsK
KyAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0NVQkVfTUFQLCBHTF9URVhU
VVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAgICAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV9DVUJFX01BUCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VE
R0UpOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgfQor
CisgICAgdm9pZCB0ZXN0V2l0aFRleHR1cmVzKEdMaW50IHZlcnRleFRleHR1cmVDb3VudCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZlcnRleFRleHR1cmVQ
cmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZyYWdtZW50VGV4dHVyZUNv
dW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ21l
bnRUZXh0dXJlUHJlZml4KQorICAgIHsKKyAgICAgICAgLy8gR2VuZXJhdGUgdGV4dHVyZXMKKyAg
ICAgICAgaW5pdFRleHR1cmVzKHZlcnRleFRleHR1cmVDb3VudCArIGZyYWdtZW50VGV4dHVyZUNv
dW50LCAwKTsKKworICAgICAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworICAgICAgICBSR0JB
OCBleHBlY3RlZFN1bSA9IHswfTsKKyAgICAgICAgZm9yIChHTGludCB0ZXhJbmRleCA9IDA7IHRl
eEluZGV4IDwgdmVydGV4VGV4dHVyZUNvdW50OyArK3RleEluZGV4KQorICAgICAgICB7CisgICAg
ICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSB1bmlmb3JtTmFtZVN0cjsKKyAgICAgICAgICAgIHVu
aWZvcm1OYW1lU3RyIDw8IHZlcnRleFRleHR1cmVQcmVmaXggPDwgdGV4SW5kZXg7CisgICAgICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdW5pZm9ybU5hbWUgPSB1bmlmb3JtTmFtZVN0ci5zdHIo
KTsKKyAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVBy
b2dyYW0sIHVuaWZvcm1OYW1lLmNfc3RyKCkpOworICAgICAgICAgICAgQVNTRVJUX05FKC0xLCBs
b2NhdGlvbik7CisKKyAgICAgICAgICAgIGdsVW5pZm9ybTFpKGxvY2F0aW9uLCB0ZXhJbmRleCk7
CisgICAgICAgICAgICBSR0JBOCBjb250cmlidXRpb24gPSBnZXRQaXhlbCh0ZXhJbmRleCk7Cisg
ICAgICAgICAgICBleHBlY3RlZFN1bS5SICs9IGNvbnRyaWJ1dGlvbi5SOworICAgICAgICAgICAg
ZXhwZWN0ZWRTdW0uRyArPSBjb250cmlidXRpb24uRzsKKyAgICAgICAgfQorCisgICAgICAgIGZv
ciAoR0xpbnQgdGV4SW5kZXggPSAwOyB0ZXhJbmRleCA8IGZyYWdtZW50VGV4dHVyZUNvdW50OyAr
K3RleEluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSB1bmlm
b3JtTmFtZVN0cjsKKyAgICAgICAgICAgIHVuaWZvcm1OYW1lU3RyIDw8IGZyYWdtZW50VGV4dHVy
ZVByZWZpeCA8PCB0ZXhJbmRleDsKKyAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ1bmlm
b3JtTmFtZSA9IHVuaWZvcm1OYW1lU3RyLnN0cigpOworICAgICAgICAgICAgR0xpbnQgbG9jYXRp
b24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgdW5pZm9ybU5hbWUuY19zdHIoKSk7
CisgICAgICAgICAgICBBU1NFUlRfTkUoLTEsIGxvY2F0aW9uKTsKKworICAgICAgICAgICAgZ2xV
bmlmb3JtMWkobG9jYXRpb24sIHRleEluZGV4ICsgdmVydGV4VGV4dHVyZUNvdW50KTsKKyAgICAg
ICAgICAgIFJHQkE4IGNvbnRyaWJ1dGlvbiA9IGdldFBpeGVsKHRleEluZGV4ICsgdmVydGV4VGV4
dHVyZUNvdW50KTsKKyAgICAgICAgICAgIGV4cGVjdGVkU3VtLlIgKz0gY29udHJpYnV0aW9uLlI7
CisgICAgICAgICAgICBleHBlY3RlZFN1bS5HICs9IGNvbnRyaWJ1dGlvbi5HOworICAgICAgICB9
CisKKyAgICAgICAgQVNTRVJUX0dFKDI1NnUsIGV4cGVjdGVkU3VtLkcpOworCisgICAgICAgIGRy
YXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICAgICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7CisgICAgICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCBleHBlY3RlZFN1bS5SLCBl
eHBlY3RlZFN1bS5HLCAwLCAyNTUpOworICAgIH0KKworICAgIEdMdWludCBtUHJvZ3JhbTsKKyAg
ICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IG1UZXh0dXJlczsKKyAgICBHTGludCBtTWF4VmVydGV4VGV4
dHVyZXM7CisgICAgR0xpbnQgbU1heEZyYWdtZW50VGV4dHVyZXM7CisgICAgR0xpbnQgbU1heENv
bWJpbmVkVGV4dHVyZXM7Cit9OworCisvLyBUZXN0IHJlbmRlcmluZyB3aXRoIHRoZSBtYXhpbXVt
IHZlcnRleCB0ZXh0dXJlIHVuaXRzLgorVEVTVF9QKFRleHR1cmVMaW1pdHNUZXN0LCBNYXhWZXJ0
ZXhUZXh0dXJlcykKK3sKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBGaWd1cmUgb3V0IHdoeSB0aGlz
IGZhaWxzIG9uIEludGVsLgorICAgIGlmIChJc0ludGVsKCkgJiYgR2V0UGFyYW0oKS5nZXRSZW5k
ZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkKKyAgICB7Cisg
ICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsLiIgPDwgc3RkOjplbmRs
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29tcGlsZVByb2dyYW1XaXRoVGV4dHVy
ZUNvdW50cygidGV4IiwgbU1heFZlcnRleFRleHR1cmVzLCBtTWF4VmVydGV4VGV4dHVyZXMsICJ0
ZXgiLCAwLCAwKTsKKyAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsKKyAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKKworICAgIHRlc3RXaXRoVGV4dHVyZXMobU1heFZlcnRleFRleHR1cmVzLCAi
dGV4IiwgMCwgInRleCIpOworfQorCisvLyBUZXN0IHJlbmRlcmluZyB3aXRoIHRoZSBtYXhpbXVt
IGZyYWdtZW50IHRleHR1cmUgdW5pdHMuCitURVNUX1AoVGV4dHVyZUxpbWl0c1Rlc3QsIE1heEZy
YWdtZW50VGV4dHVyZXMpCit7CisgICAgLy8gVE9ETyhqbWFkaWxsKTogRmlndXJlIG91dCB3aHkg
dGhpcyBmYWlscyBvbiBJbnRlbC4KKyAgICBpZiAoSXNJbnRlbCgpICYmIEdldFBhcmFtKCkuZ2V0
UmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUpCisgICAg
eworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbC4iIDw8IHN0ZDo6
ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbXBpbGVQcm9ncmFtV2l0aFRl
eHR1cmVDb3VudHMoInRleCIsIDAsIDAsICJ0ZXgiLCBtTWF4RnJhZ21lbnRUZXh0dXJlcywgbU1h
eEZyYWdtZW50VGV4dHVyZXMpOworICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOworICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOworCisgICAgdGVzdFdpdGhUZXh0dXJlcyhtTWF4RnJhZ21lbnRU
ZXh0dXJlcywgInRleCIsIDAsICJ0ZXgiKTsKK30KKworLy8gVGVzdCByZW5kZXJpbmcgd2l0aCBt
YXhpbXVtIGNvbWJpbmVkIHRleHR1cmUgdW5pdHMuCitURVNUX1AoVGV4dHVyZUxpbWl0c1Rlc3Qs
IE1heENvbWJpbmVkVGV4dHVyZXMpCit7CisgICAgLy8gVE9ETyhqbWFkaWxsKTogSW52ZXN0aWdh
dGUgd29ya2Fyb3VuZC4KKyAgICBpZiAoSXNJbnRlbCgpICYmIEdldFBhcmFtKCkgPT0gRVMyX09Q
RU5HTCgpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50
ZWwuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHTGludCB2
ZXJ0ZXhUZXh0dXJlcyA9IG1NYXhWZXJ0ZXhUZXh0dXJlczsKKworICAgIGlmICh2ZXJ0ZXhUZXh0
dXJlcyArIG1NYXhGcmFnbWVudFRleHR1cmVzID4gbU1heENvbWJpbmVkVGV4dHVyZXMpCisgICAg
eworICAgICAgICB2ZXJ0ZXhUZXh0dXJlcyA9IG1NYXhDb21iaW5lZFRleHR1cmVzIC0gbU1heEZy
YWdtZW50VGV4dHVyZXM7CisgICAgfQorCisgICAgY29tcGlsZVByb2dyYW1XaXRoVGV4dHVyZUNv
dW50cygidnRleCIsIHZlcnRleFRleHR1cmVzLCB2ZXJ0ZXhUZXh0dXJlcywgImZ0ZXgiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbU1heEZyYWdtZW50VGV4dHVyZXMsIG1N
YXhGcmFnbWVudFRleHR1cmVzKTsKKyAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsKKyAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIHRlc3RXaXRoVGV4dHVyZXModmVydGV4VGV4dHVy
ZXMsICJ2dGV4IiwgbU1heEZyYWdtZW50VGV4dHVyZXMsICJmdGV4Iik7Cit9CisKKy8vIE5lZ2F0
aXZlIHRlc3QgZm9yIGV4Y2VlZGluZyB0aGUgbnVtYmVyIG9mIHZlcnRleCB0ZXh0dXJlcworVEVT
VF9QKFRleHR1cmVMaW1pdHNUZXN0LCBFeGNlc3NpdmVWZXJ0ZXhUZXh0dXJlcykKK3sKKyAgICBj
b21waWxlUHJvZ3JhbVdpdGhUZXh0dXJlQ291bnRzKCJ0ZXgiLCBtTWF4VmVydGV4VGV4dHVyZXMg
KyAxLCBtTWF4VmVydGV4VGV4dHVyZXMgKyAxLCAidGV4IiwgMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDApOworICAgIEFTU0VSVF9FUSgwdSwgbVByb2dyYW0pOworfQor
CisvLyBOZWdhdGl2ZSB0ZXN0IGZvciBleGNlZWRpbmcgdGhlIG51bWJlciBvZiBmcmFnbWVudCB0
ZXh0dXJlcworVEVTVF9QKFRleHR1cmVMaW1pdHNUZXN0LCBFeGNlc3NpdmVGcmFnbWVudFRleHR1
cmVzKQoreworICAgIGNvbXBpbGVQcm9ncmFtV2l0aFRleHR1cmVDb3VudHMoInRleCIsIDAsIDAs
ICJ0ZXgiLCBtTWF4RnJhZ21lbnRUZXh0dXJlcyArIDEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtTWF4RnJhZ21lbnRUZXh0dXJlcyArIDEpOworICAgIEFTU0VSVF9FUSgw
dSwgbVByb2dyYW0pOworfQorCisvLyBUZXN0IGFjdGl2ZSB2ZXJ0ZXggdGV4dHVyZXMgdW5kZXIg
dGhlIGxpbWl0LCBidXQgZXhjZXNzaXZlIHRleHR1cmVzIHNwZWNpZmllZC4KK1RFU1RfUChUZXh0
dXJlTGltaXRzVGVzdCwgTWF4QWN0aXZlVmVydGV4VGV4dHVyZXMpCit7CisgICAgLy8gVE9ETyhq
bWFkaWxsKTogRmlndXJlIG91dCB3aHkgdGhpcyBmYWlscyBvbiBJbnRlbC4KKyAgICBpZiAoSXNJ
bnRlbCgpICYmIEdldFBhcmFtKCkuZ2V0UmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVf
VFlQRV9PUEVOR0xfQU5HTEUpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tp
cHBlZCBvbiBJbnRlbC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGNvbXBpbGVQcm9ncmFtV2l0aFRleHR1cmVDb3VudHMoInRleCIsIG1NYXhWZXJ0ZXhUZXh0
dXJlcyArIDQsIG1NYXhWZXJ0ZXhUZXh0dXJlcywgInRleCIsIDAsIDApOworICAgIEFTU0VSVF9O
RSgwdSwgbVByb2dyYW0pOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgdGVzdFdp
dGhUZXh0dXJlcyhtTWF4VmVydGV4VGV4dHVyZXMsICJ0ZXgiLCAwLCAidGV4Iik7Cit9CisKKy8v
IFRlc3QgYWN0aXZlIGZyYWdtZW50IHRleHR1cmVzIHVuZGVyIHRoZSBsaW1pdCwgYnV0IGV4Y2Vz
c2l2ZSB0ZXh0dXJlcyBzcGVjaWZpZWQuCitURVNUX1AoVGV4dHVyZUxpbWl0c1Rlc3QsIE1heEFj
dGl2ZUZyYWdtZW50VGV4dHVyZXMpCit7CisgICAgLy8gVE9ETyhqbWFkaWxsKTogRmlndXJlIG91
dCB3aHkgdGhpcyBmYWlscyBvbiBJbnRlbC4KKyAgICBpZiAoSXNJbnRlbCgpICYmIEdldFBhcmFt
KCkuZ2V0UmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUp
CisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbC4iIDw8
IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbXBpbGVQcm9ncmFt
V2l0aFRleHR1cmVDb3VudHMoInRleCIsIDAsIDAsICJ0ZXgiLCBtTWF4RnJhZ21lbnRUZXh0dXJl
cyArIDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtTWF4RnJhZ21lbnRU
ZXh0dXJlcyk7CisgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7CisgICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7CisKKyAgICB0ZXN0V2l0aFRleHR1cmVzKDAsICJ0ZXgiLCBtTWF4RnJhZ21lbnRU
ZXh0dXJlcywgInRleCIpOworfQorCisvLyBOZWdhdGl2ZSB0ZXN0IGZvciBwb2ludGluZyB0d28g
c2FtcGxlciB1bmlmb3JtcyBvZiBkaWZmZXJlbnQgdHlwZXMgdG8gdGhlIHNhbWUgdGV4dHVyZS4K
Ky8vIEdMRVMgMi4wLjI1IHNlY3Rpb24gMi4xMC40IHBhZ2UgMzkuCitURVNUX1AoVGV4dHVyZUxp
bWl0c1Rlc3QsIFRleHR1cmVUeXBlQ29uZmxpY3QpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcg
JnZlcnRleFNoYWRlciA9CisgICAgICAgICJhdHRyaWJ1dGUgdmVjMiBwb3NpdGlvbjtcbiIKKyAg
ICAgICAgInZhcnlpbmcgZmxvYXQgY29sb3I7XG4iCisgICAgICAgICJ1bmlmb3JtIHNhbXBsZXIy
RCB0ZXgyRDtcbiIKKyAgICAgICAgInVuaWZvcm0gc2FtcGxlckN1YmUgdGV4Q3ViZTtcbiIKKyAg
ICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBv
c2l0aW9uLCAwLCAxKTtcbiIKKyAgICAgICAgIiAgdmVjMiB0ZXhDb29yZCA9IChwb3NpdGlvbiAq
IDAuNSkgKyAwLjU7XG4iCisgICAgICAgICIgIGNvbG9yID0gdGV4dHVyZTJEKHRleDJELCB0ZXhD
b29yZCkueDtcbiIKKyAgICAgICAgIiAgY29sb3IgKz0gdGV4dHVyZUN1YmUodGV4Q3ViZSwgdmVj
Myh0ZXhDb29yZCwgMCkpLng7XG4iCisgICAgICAgICJ9IjsKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyAmZnJhZ21lbnRTaGFkZXIgPQorICAgICAgICAidmFyeWluZyBtZWRpdW1wIGZsb2F0IGNvbG9y
O1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICBnbF9GcmFnQ29sb3Ig
PSB2ZWM0KGNvbG9yLCAwLCAwLCAxKTtcbiIKKyAgICAgICAgIn0iOworCisgICAgbVByb2dyYW0g
PSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyKTsKKyAgICBBU1NF
UlRfTkUoMHUsIG1Qcm9ncmFtKTsKKworICAgIGluaXRUZXh0dXJlcygxLCAwKTsKKworICAgIGds
VXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgR0xpbnQgdGV4MkRMb2NhdGlvbiA9IGdsR2V0VW5p
Zm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidGV4MkQiKTsKKyAgICBBU1NFUlRfTkUoLTEsIHRleDJE
TG9jYXRpb24pOworICAgIEdMaW50IHRleEN1YmVMb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0
aW9uKG1Qcm9ncmFtLCAidGV4Q3ViZSIpOworICAgIEFTU0VSVF9ORSgtMSwgdGV4Q3ViZUxvY2F0
aW9uKTsKKworICAgIGdsVW5pZm9ybTFpKHRleDJETG9jYXRpb24sIDApOworICAgIGdsVW5pZm9y
bTFpKHRleEN1YmVMb2NhdGlvbiwgMCk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAg
ICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgRVhQRUNUX0dMX0VS
Uk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworLy8gTmVnYXRpdmUgdGVzdCBmb3IgcmVu
ZGVyaW5nIHdpdGggdGV4dHVyZSBvdXRzaWRlIHRoZSB2YWxpZCByYW5nZS4KKy8vIFRPRE8oam1h
ZGlsbCk6IFBvc3NpYmx5IGFkanVzdCB0aGUgdGVzdCBhY2NvcmRpbmcgdG8gdGhlIHNwZWM6Cisv
LyBHTEVTIDMuMC40IHNlY3Rpb24gMi4xMi43IG1lbnRpb25zIHRoYXQgc3BlY2lmeWluZyBhbiBv
dXQtb2YtcmFuZ2Ugc2FtcGxlciB1bmlmb3JtIHZhbHVlCisvLyBnZW5lcmF0ZXMgYW4gSU5WQUxJ
RF9WQUxVRSBlcnJvciAtIEdMRVMgMi4wIGRvZXNuJ3QgeWV0IGhhdmUgdGhpcyBtZW50aW9uLgor
VEVTVF9QKFRleHR1cmVMaW1pdHNUZXN0LCBEcmF3V2l0aFRleHR1cmVQYXN0TWF4aW11bSkKK3sK
KyAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmVydGV4U2hhZGVyID0KKyAgICAgICAgImF0dHJpYnV0
ZSB2ZWMyIHBvc2l0aW9uO1xuIgorICAgICAgICAidmFyeWluZyBmbG9hdCBjb2xvcjtcbiIKKyAg
ICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHRleDJEO1xuIgorICAgICAgICAidm9pZCBtYWluKCkg
e1xuIgorICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAsIDEpO1xuIgor
ICAgICAgICAiICB2ZWMyIHRleENvb3JkID0gKHBvc2l0aW9uICogMC41KSArIDAuNTtcbiIKKyAg
ICAgICAgIiAgY29sb3IgPSB0ZXh0dXJlMkQodGV4MkQsIHRleENvb3JkKS54O1xuIgorICAgICAg
ICAifSI7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdtZW50U2hhZGVyID0KKyAgICAgICAg
InZhcnlpbmcgbWVkaXVtcCBmbG9hdCBjb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtc
biIKKyAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdmVjNChjb2xvciwgMCwgMCwgMSk7XG4iCisg
ICAgICAgICJ9IjsKKworICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVy
LCBmcmFnbWVudFNoYWRlcik7CisgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7CisKKyAgICBn
bFVzZVByb2dyYW0obVByb2dyYW0pOworICAgIEdMaW50IHRleDJETG9jYXRpb24gPSBnbEdldFVu
aWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInRleDJEIik7CisgICAgQVNTRVJUX05FKC0xLCB0ZXgy
RExvY2F0aW9uKTsKKworICAgIGdsVW5pZm9ybTFpKHRleDJETG9jYXRpb24sIG1NYXhDb21iaW5l
ZFRleHR1cmVzKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIGRyYXdRdWFkKG1Q
cm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOworfQorCitjbGFzcyBUZXh0dXJlMkROb3JtMTZUZXN0RVMzIDogcHVibGlj
IFRleHR1cmUyRFRlc3RFUzMKK3sKKyAgcHJvdGVjdGVkOgorICAgIFRleHR1cmUyRE5vcm0xNlRl
c3RFUzMoKSA6IFRleHR1cmUyRFRlc3RFUzMoKSwgbVRleHR1cmVzezAsIDAsIDB9LCBtRkJPKDAp
LCBtUmVuZGVyYnVmZmVyKDApIHt9CisKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIFRleHR1cmUyRFRlc3RFUzM6OlNldFVwKCk7CisKKyAgICAgICAgZ2xBY3RpdmVU
ZXh0dXJlKEdMX1RFWFRVUkUwKTsKKyAgICAgICAgZ2xHZW5UZXh0dXJlcygzLCBtVGV4dHVyZXMp
OworICAgICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbUZCTyk7CisgICAgICAgIGdsR2VuUmVu
ZGVyYnVmZmVycygxLCAmbVJlbmRlcmJ1ZmZlcik7CisKKyAgICAgICAgZm9yIChzaXplX3QgdGV4
dHVyZUluZGV4ID0gMDsgdGV4dHVyZUluZGV4IDwgMzsgdGV4dHVyZUluZGV4KyspCisgICAgICAg
IHsKKyAgICAgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzW3Rl
eHR1cmVJbmRleF0pOworICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICAgICAgICAgIGdsVGV4UGFy
YW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7
CisgICAgICAgIH0KKworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIDApOwor
CisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIH0KKworICAgIHZvaWQgVGVhckRv
d24oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygzLCBtVGV4dHVy
ZXMpOworICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbUZCTyk7CisgICAgICAgIGds
RGVsZXRlUmVuZGVyYnVmZmVycygxLCAmbVJlbmRlcmJ1ZmZlcik7CisKKyAgICAgICAgVGV4dHVy
ZTJEVGVzdEVTMzo6VGVhckRvd24oKTsKKyAgICB9CisKKyAgICB2b2lkIHRlc3ROb3JtMTZUZXh0
dXJlKEdMaW50IGludGVybmFsZm9ybWF0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSkKKyAg
ICB7CisgICAgICAgIEdMdXNob3J0IHBpeGVsVmFsdWUgID0gKHR5cGUgPT0gR0xfU0hPUlQpID8g
MHg3RkZGIDogMHg2QTM1OworICAgICAgICBHTHVzaG9ydCBpbWFnZURhdGFbXSA9IHtwaXhlbFZh
bHVlLCBwaXhlbFZhbHVlLCBwaXhlbFZhbHVlLCBwaXhlbFZhbHVlfTsKKworICAgICAgICBzZXRV
cFByb2dyYW0oKTsKKworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwg
bUZCTyk7CisgICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdM
X0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9U
RVhUVVJFXzJELCBtVGV4dHVyZXNbMF0pOworICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgMCwgR0xfUkdCQTE2X0VYVCwgMSwgMSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfU0hP
UlQsIG51bGxwdHIpOworCisgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRl
eHR1cmVzWzFdKTsKKyAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIGludGVy
bmFsZm9ybWF0LCAxLCAxLCAwLCBmb3JtYXQsIHR5cGUsIGltYWdlRGF0YSk7CisKKyAgICAgICAg
RVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3Np
dGlvbiIsIDAuNWYpOworCisgICAgICAgIEdMdWJ5dGUgZXhwZWN0ZWRWYWx1ZSA9ICh0eXBlID09
IEdMX1NIT1JUKSA/IDB4RkYgOiBzdGF0aWNfY2FzdDxHTHVieXRlPihwaXhlbFZhbHVlID4+IDgp
OworCisgICAgICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgKKyAgICAgICAgICAgIDAsIDAsIFNs
aWNlRm9ybWF0Q29sb3IoCisgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCBHTENvbG9yKGV4
cGVjdGVkVmFsdWUsIGV4cGVjdGVkVmFsdWUsIGV4cGVjdGVkVmFsdWUsIGV4cGVjdGVkVmFsdWUp
KSk7CisKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApOworCisg
ICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIH0KKworICAgIHZvaWQgdGVzdE5vcm0x
NlJlbmRlcihHTGludCBpbnRlcm5hbGZvcm1hdCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUp
CisgICAgeworICAgICAgICBHTHVzaG9ydCBwaXhlbFZhbHVlID0gMHg2QTM1OworICAgICAgICBH
THVzaG9ydCBpbWFnZURhdGFbXSA9IHtwaXhlbFZhbHVlLCBwaXhlbFZhbHVlLCBwaXhlbFZhbHVl
LCBwaXhlbFZhbHVlfTsKKworICAgICAgICBzZXRVcFByb2dyYW0oKTsKKworICAgICAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sxXSk7CisgICAgICAgIGdsVGV4SW1h
Z2UyRChHTF9URVhUVVJFXzJELCAwLCBpbnRlcm5hbGZvcm1hdCwgMSwgMSwgMCwgZm9ybWF0LCB0
eXBlLCBudWxscHRyKTsKKworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZF
UiwgbUZCTyk7CisgICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIs
IEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShH
TF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMl0pOworICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVY
VFVSRV8yRCwgMCwgaW50ZXJuYWxmb3JtYXQsIDEsIDEsIDAsIGZvcm1hdCwgdHlwZSwgaW1hZ2VE
YXRhKTsKKworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgICAgICBkcmF3UXVh
ZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisKKyAgICAgICAgR0x1Ynl0ZSBleHBlY3Rl
ZFZhbHVlID0gc3RhdGljX2Nhc3Q8R0x1Ynl0ZT4ocGl4ZWxWYWx1ZSA+PiA4KTsKKyAgICAgICAg
RVhQRUNUX1BJWEVMX0NPTE9SX0VRKAorICAgICAgICAgICAgMCwgMCwgU2xpY2VGb3JtYXRDb2xv
cigKKyAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIEdMQ29sb3IoZXhwZWN0ZWRWYWx1ZSwg
ZXhwZWN0ZWRWYWx1ZSwgZXhwZWN0ZWRWYWx1ZSwgZXhwZWN0ZWRWYWx1ZSkpKTsKKworICAgICAg
ICBnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtUmVuZGVyYnVmZmVyKTsKKyAg
ICAgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgaW50ZXJuYWxmb3Jt
YXQsIDEsIDEpOworICAgICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVG
RkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfUkVOREVSQlVGRkVSLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1SZW5kZXJidWZmZXIpOworICAgICAgICBnbEJpbmRSZW5k
ZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCAwKTsKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7CisKKyAgICAgICAgZ2xDbGVhckNvbG9yKDEuMGYsIDEuMGYsIDEuMGYsIDEuMGYpOworICAg
ICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworCisgICAgICAgIGdsQ29weVRleFN1
YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwgMCwgMCwgMSwgMSk7CisKKyAgICAgICAg
RVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIFNsaWNlRm9ybWF0Q29sb3IoZm9ybWF0LCBHTENv
bG9yOjp3aGl0ZSkpOworCisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVS
LCAwKTsKKworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICB9CisKKyAgICBHTHVp
bnQgbVRleHR1cmVzWzNdOworICAgIEdMdWludCBtRkJPOworICAgIEdMdWludCBtUmVuZGVyYnVm
ZmVyOworfTsKKworLy8gVGVzdCB0ZXh0dXJlIGZvcm1hdHMgZW5hYmxlZCBieSB0aGUgR0xfRVhU
X3RleHR1cmVfbm9ybTE2IGV4dGVuc2lvbi4KK1RFU1RfUChUZXh0dXJlMkROb3JtMTZUZXN0RVMz
LCBUZXh0dXJlTm9ybTE2VGVzdCkKK3sKKyAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0VY
VF90ZXh0dXJlX25vcm0xNiIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNr
aXBwZWQgZHVlIHRvIG1pc3NpbmcgR0xfRVhUX3RleHR1cmVfbm9ybTE2LiIgPDwgc3RkOjplbmRs
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdGVzdE5vcm0xNlRleHR1cmUoR0xfUjE2
X0VYVCwgR0xfUkVELCBHTF9VTlNJR05FRF9TSE9SVCk7CisgICAgdGVzdE5vcm0xNlRleHR1cmUo
R0xfUkcxNl9FWFQsIEdMX1JHLCBHTF9VTlNJR05FRF9TSE9SVCk7CisgICAgdGVzdE5vcm0xNlRl
eHR1cmUoR0xfUkdCMTZfRVhULCBHTF9SR0IsIEdMX1VOU0lHTkVEX1NIT1JUKTsKKyAgICB0ZXN0
Tm9ybTE2VGV4dHVyZShHTF9SR0JBMTZfRVhULCBHTF9SR0JBLCBHTF9VTlNJR05FRF9TSE9SVCk7
CisgICAgdGVzdE5vcm0xNlRleHR1cmUoR0xfUjE2X1NOT1JNX0VYVCwgR0xfUkVELCBHTF9TSE9S
VCk7CisgICAgdGVzdE5vcm0xNlRleHR1cmUoR0xfUkcxNl9TTk9STV9FWFQsIEdMX1JHLCBHTF9T
SE9SVCk7CisgICAgdGVzdE5vcm0xNlRleHR1cmUoR0xfUkdCMTZfU05PUk1fRVhULCBHTF9SR0Is
IEdMX1NIT1JUKTsKKyAgICB0ZXN0Tm9ybTE2VGV4dHVyZShHTF9SR0JBMTZfU05PUk1fRVhULCBH
TF9SR0JBLCBHTF9TSE9SVCk7CisKKyAgICB0ZXN0Tm9ybTE2UmVuZGVyKEdMX1IxNl9FWFQsIEdM
X1JFRCwgR0xfVU5TSUdORURfU0hPUlQpOworICAgIHRlc3ROb3JtMTZSZW5kZXIoR0xfUkcxNl9F
WFQsIEdMX1JHLCBHTF9VTlNJR05FRF9TSE9SVCk7CisgICAgdGVzdE5vcm0xNlJlbmRlcihHTF9S
R0JBMTZfRVhULCBHTF9SR0JBLCBHTF9VTlNJR05FRF9TSE9SVCk7Cit9CisKKy8vIFRlc3QgdGhh
dCBVTlBBQ0tfU0tJUF9JTUFHRVMgZG9lc24ndCBoYXZlIGFuIGVmZmVjdCBvbiAyRCB0ZXh0dXJl
IHVwbG9hZHMuCisvLyBHTEVTIDMuMC40IHNlY3Rpb24gMy44LjMuCitURVNUX1AoVGV4dHVyZTJE
VGVzdEVTMywgVW5wYWNrU2tpcEltYWdlczJEKQoreworICAgIGlmIChJc0ludGVsKCkgJiYgSXNE
ZXNrdG9wT3BlbkdMKCkpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBl
ZCBvbiBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgLy8gVE9ETyh5bm92aWtvdik6IHJlLWVuYWJsZSBvbmNlIHJvb3QgY2F1c2Ugb2YgaHR0
cDovL2FuZ2xlYnVnLmNvbS8xNDI5IGlzIGZpeGVkCisgICAgaWYgKElzQW5kcm9pZCgpICYmIElz
QWRyZW5vKCkgJiYgSXNPcGVuR0xFUygpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJU
ZXN0IHNraXBwZWQgb24gQWRyZW5vIE9wZW5HTEVTIG9uIEFuZHJvaWQuIiA8PCBzdGQ6OmVuZGw7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVf
MkQsIG1UZXh0dXJlMkQpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKKworICAgIC8vIFNLSVBfSU1BR0VTIHNob3VsZCBub3QgaGF2ZSBhbiBl
ZmZlY3Qgb24gdXBsb2FkaW5nIDJEIHRleHR1cmVzCisgICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBB
Q0tfU0tJUF9JTUFHRVMsIDEwMDApOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAg
c3RkOjp2ZWN0b3I8R0xDb2xvcj4gcGl4ZWxzR3JlZW4oMTI4dSAqIDEyOHUsIEdMQ29sb3I6Omdy
ZWVuKTsKKworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBOCwgMTI4
LCAxMjgsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgIHBp
eGVsc0dyZWVuLmRhdGEoKSk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbFRl
eFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwgMTI4LCAxMjgsIEdMX1JHQkEsIEdM
X1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgICAgIHBpeGVsc0dyZWVuLmRhdGEoKSk7
CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0p
OworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKKworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9y
OjpncmVlbik7Cit9CisKKy8vIFRlc3QgdGhhdCBza2lwIGRlZmluZWQgaW4gdW5wYWNrIHBhcmFt
ZXRlcnMgaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gZGV0ZXJtaW5pbmcgd2hldGhlcgorLy8g
dW5wYWNraW5nIHNvdXJjZSBleHRlbmRzIG91dHNpZGUgdW5wYWNrIGJ1ZmZlciBib3VuZHMuCitU
RVNUX1AoVGV4dHVyZTJEVGVzdEVTMywgVW5wYWNrU2tpcFBpeGVsc091dE9mQm91bmRzKQorewor
ICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7CisgICAgZ2xUZXhQ
YXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFS
KTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklM
VEVSLCBHTF9MSU5FQVIpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgR0xCdWZm
ZXIgYnVmOworICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCBidWYuZ2V0
KCkpOworICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHBpeGVsc0dyZWVuKDEyOHUgKiAxMjh1LCBH
TENvbG9yOjpncmVlbik7CisgICAgZ2xCdWZmZXJEYXRhKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIs
IHBpeGVsc0dyZWVuLnNpemUoKSAqIDR1LCBwaXhlbHNHcmVlbi5kYXRhKCksCisgICAgICAgICAg
ICAgICAgIEdMX0RZTkFNSUNfQ09QWSk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAg
ICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQTgsIDEyOCwgMTI4LCAwLCBH
TF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
KworICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUElYRUxTLCAxKTsKKyAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKKworICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAw
LCAwLCAwLCAxMjgsIDEyOCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMCk7CisgICAgRVhQ
RUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKworICAgIGdsUGl4ZWxTdG9yZWko
R0xfVU5QQUNLX1NLSVBfUElYRUxTLCAwKTsKKyAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19T
S0lQX1JPV1MsIDEpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xUZXhTdWJJ
bWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDEyOCwgMTI4LCBHTF9SR0JBLCBHTF9VTlNJ
R05FRF9CWVRFLCAwKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OworfQorCisvLyBUZXN0IHRoYXQgdW5wYWNraW5nIHJvd3MgdGhhdCBvdmVybGFwIGluIGEgcGl4
ZWwgdW5wYWNrIGJ1ZmZlciB3b3JrcyBhcyBleHBlY3RlZC4KK1RFU1RfUChUZXh0dXJlMkRUZXN0
RVMzLCBVbnBhY2tPdmVybGFwcGluZ1Jvd3NGcm9tVW5wYWNrQnVmZmVyKQoreworICAgIGlmIChJ
c0QzRDExKCkpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBE
M0QuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKElzT1NY
KCkgJiYgSXNBTUQoKSkKKyAgICB7CisgICAgICAgIC8vIEluY29ycmVjdCByZW5kZXJpbmcgcmVz
dWx0cyBzZWVuIG9uIE9TWCBBTUQuCisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVk
IG9uIE9TWCBBTUQuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBjb25zdCBHTHVpbnQgd2lkdGggICAgICAgICAgICA9IDh1OworICAgIGNvbnN0IEdMdWludCBo
ZWlnaHQgICAgICAgICAgID0gOHU7CisgICAgY29uc3QgR0x1aW50IHVucGFja1Jvd0xlbmd0aCAg
PSA1dTsKKyAgICBjb25zdCBHTHVpbnQgdW5wYWNrU2tpcFBpeGVscyA9IDF1OworCisgICAgc2V0
V2luZG93V2lkdGgod2lkdGgpOworICAgIHNldFdpbmRvd0hlaWdodChoZWlnaHQpOworCisgICAg
Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEKTsKKyAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOwor
ICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIs
IEdMX0xJTkVBUik7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBHTEJ1ZmZlciBi
dWY7CisgICAgZ2xCaW5kQnVmZmVyKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIGJ1Zi5nZXQoKSk7
CisgICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gcGl4ZWxzR3JlZW4oKGhlaWdodCAtIDF1KSAqIHVu
cGFja1Jvd0xlbmd0aCArIHdpZHRoICsgdW5wYWNrU2tpcFBpeGVscywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTENvbG9yOjpncmVlbik7CisKKyAgICBmb3IgKEdMdWlu
dCBza2lwcGVkUGl4ZWwgPSAwdTsgc2tpcHBlZFBpeGVsIDwgdW5wYWNrU2tpcFBpeGVsczsgKytz
a2lwcGVkUGl4ZWwpCisgICAgeworICAgICAgICBwaXhlbHNHcmVlbltza2lwcGVkUGl4ZWxdID0g
R0xDb2xvcigyNTUsIDAsIDAsIDI1NSk7CisgICAgfQorCisgICAgZ2xCdWZmZXJEYXRhKEdMX1BJ
WEVMX1VOUEFDS19CVUZGRVIsIHBpeGVsc0dyZWVuLnNpemUoKSAqIDR1LCBwaXhlbHNHcmVlbi5k
YXRhKCksCisgICAgICAgICAgICAgICAgIEdMX0RZTkFNSUNfQ09QWSk7CisgICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7CisKKyAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19ST1dfTEVOR1RILCB1
bnBhY2tSb3dMZW5ndGgpOworICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUElYRUxT
LCB1bnBhY2tTa2lwUGl4ZWxzKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIGds
VGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBOCwgd2lkdGgsIGhlaWdodCwgMCwg
R0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMCk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
CisKKyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAi
cG9zaXRpb24iLCAwLjVmKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIEdMdWlu
dCB3aW5kb3dQaXhlbENvdW50ID0gZ2V0V2luZG93V2lkdGgoKSAqIGdldFdpbmRvd0hlaWdodCgp
OworICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IGFjdHVhbCh3aW5kb3dQaXhlbENvdW50LCBHTENv
bG9yOjpibGFjayk7CisgICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdl
dFdpbmRvd0hlaWdodCgpLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAg
ICAgICBhY3R1YWwuZGF0YSgpKTsKKyAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBleHBlY3RlZCh3
aW5kb3dQaXhlbENvdW50LCBHTENvbG9yOjpncmVlbik7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVk
LCBhY3R1YWwpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK1QgVU5vcm0oZG91YmxlIHZh
bHVlKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPih2YWx1ZSAqIHN0YXRpY19jYXN0PGRv
dWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4KCkpKTsKK30KKworLy8gVGVzdCByZW5k
ZXJpbmcgYSBkZXB0aCB0ZXh0dXJlIHdpdGggbWlwbWFwcy4KK1RFU1RfUChUZXh0dXJlMkRUZXN0
RVMzLCBEZXB0aFRleHR1cmVzV2l0aE1pcG1hcHMpCit7CisgICAgLy9UT0RPKGN3YWxsZXopIHRo
aXMgaXMgZmFpbGluZyBvbiBJbnRlbCBXaW43IE9wZW5HTAorICAgIGlmIChJc0ludGVsKCkgJiYg
SXNXaW5kb3dzKCkgJiYgSXNPcGVuR0woKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAi
VGVzdCBza2lwcGVkIG9uIEludGVsIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGNvbnN0IGludCBzaXplID0gZ2V0V2luZG93V2lkdGgoKTsKKwor
ICAgIGF1dG8gZGltICAgPSBbc2l6ZV0oaW50IGxldmVsKSB7IHJldHVybiBzaXplID4+IGxldmVs
OyB9OworICAgIGludCBsZXZlbHMgPSBnbDo6bG9nMihzaXplKTsKKworICAgIGdsQWN0aXZlVGV4
dHVyZShHTF9URVhUVVJFMCk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4
dHVyZTJEKTsKKyAgICBnbFRleFN0b3JhZ2UyRChHTF9URVhUVVJFXzJELCBsZXZlbHMsIEdMX0RF
UFRIX0NPTVBPTkVOVDI0LCBzaXplLCBzaXplKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVY
VFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUX01JUE1BUF9ORUFSRVNU
KTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklM
VEVSLCBHTF9ORUFSRVNUKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAg
Z2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfQUxJR05NRU5ULCAxKTsKKyAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKKworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgZ2xVbmlmb3JtMWko
bVRleHR1cmUyRFVuaWZvcm1Mb2NhdGlvbiwgMCk7CisKKyAgICBzdGQ6OnZlY3Rvcjx1bnNpZ25l
ZCBjaGFyPiBleHBlY3RlZDsKKworICAgIGZvciAoaW50IGxldmVsID0gMDsgbGV2ZWwgPCBsZXZl
bHM7ICsrbGV2ZWwpCisgICAgeworICAgICAgICBkb3VibGUgdmFsdWUgPSAoc3RhdGljX2Nhc3Q8
ZG91YmxlPihsZXZlbCkgLyBzdGF0aWNfY2FzdDxkb3VibGU+KGxldmVscyAtIDEpKTsKKyAgICAg
ICAgZXhwZWN0ZWQucHVzaF9iYWNrKFVOb3JtPHVuc2lnbmVkIGNoYXI+KHZhbHVlKSk7CisKKyAg
ICAgICAgaW50IGxldmVsRGltID0gZGltKGxldmVsKTsKKworICAgICAgICBBU1NFUlRfR1QobGV2
ZWxEaW0sIDApOworCisgICAgICAgIHN0ZDo6dmVjdG9yPHVuc2lnbmVkIGludD4gaW5pdERhdGEo
bGV2ZWxEaW0gKiBsZXZlbERpbSwgVU5vcm08dW5zaWduZWQgaW50Pih2YWx1ZSkpOworICAgICAg
ICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgbGV2ZWwsIDAsIDAsIGxldmVsRGltLCBs
ZXZlbERpbSwgR0xfREVQVEhfQ09NUE9ORU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgR0xf
VU5TSUdORURfSU5ULCBpbml0RGF0YS5kYXRhKCkpOworICAgIH0KKyAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKKworICAgIGZvciAoaW50IGxldmVsID0gMDsgbGV2ZWwgPCBsZXZlbHM7ICsrbGV2
ZWwpCisgICAgeworICAgICAgICBnbFZpZXdwb3J0KDAsIDAsIGRpbShsZXZlbCksIGRpbShsZXZl
bCkpOworICAgICAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAg
ICAgIEdMQ29sb3IgYWN0dWFsID0gUmVhZENvbG9yKDAsIDApOworICAgICAgICBFWFBFQ1RfTkVB
UihleHBlY3RlZFtsZXZlbF0sIGFjdHVhbC5SLCAxMHUpOworICAgIH0KKworICAgIEFTU0VSVF9H
TF9OT19FUlJPUigpOworfQorCisvLyBUZXN0cyB1bnBhY2tpbmcgaW50byB0aGUgdW5zaXplZCBH
TF9BTFBIQSBmb3JtYXQuCitURVNUX1AoVGV4dHVyZTJEVGVzdEVTMywgVW5zaXplZEFscGhhVW5w
YWNrQnVmZmVyKQoreworICAgIC8vIFRPRE8oam1hZGlsbCk6IEZpZ3VyZSBvdXQgd2h5IHRoaXMg
ZmFpbHMgb24gT1NYLgorICAgIEFOR0xFX1NLSVBfVEVTVF9JRihJc09TWCgpKTsKKworICAgIC8v
IEluaXRpYWxpemUgdGhlIHRleHVyZS4KKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQs
IG1UZXh0dXJlMkQpOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9BTFBI
QSwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIDAsIEdMX0FMUEhBLAorICAg
ICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKKyAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsK
KyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVS
LCBHTF9ORUFSRVNUKTsKKworICAgIHN0ZDo6dmVjdG9yPEdMdWJ5dGU+IGJ1ZmZlckRhdGEoZ2V0
V2luZG93V2lkdGgoKSAqIGdldFdpbmRvd0hlaWdodCgpLCAxMjcpOworCisgICAgLy8gUHVsbCBp
biB0aGUgY29sb3IgZGF0YSBmcm9tIHRoZSB1bnBhY2sgYnVmZmVyLgorICAgIEdMQnVmZmVyIHVu
cGFja0J1ZmZlcjsKKyAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19BTElHTk1FTlQsIDEpOwor
ICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCB1bnBhY2tCdWZmZXIuZ2V0
KCkpOworICAgIGdsQnVmZmVyRGF0YShHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCBnZXRXaW5kb3dX
aWR0aCgpICogZ2V0V2luZG93SGVpZ2h0KCksIGJ1ZmZlckRhdGEuZGF0YSgpLAorICAgICAgICAg
ICAgICAgICBHTF9TVEFUSUNfRFJBVyk7CisKKyAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgMCwgMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIEdMX0FM
UEhBLAorICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKKwor
ICAgIC8vIENsZWFyIHRvIGEgd2VpcmQgY29sb3IgdG8gbWFrZSBzdXJlIHdlJ3JlIGRyYXdpbmcg
c29tZXRoaW5nLgorICAgIGdsQ2xlYXJDb2xvcigwLjVmLCAwLjhmLCAxLjBmLCAwLjJmKTsKKyAg
ICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworCisgICAgLy8gRHJhdyB3aXRoIHRoZSBh
bHBoYSB0ZXh0dXJlIGFuZCB2ZXJpZnkuCisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlv
biIsIDAuNWYpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgRVhQRUNUX1BJWEVM
X05FQVIoMCwgMCwgMCwgMCwgMCwgMTI3LCAxKTsKK30KKworLy8gRW5zdXJlIHN0YWxlIHVucGFj
ayBkYXRhIGRvZXNuJ3QgcHJvcGFnYXRlIGluIEQzRDExLgorVEVTVF9QKFRleHR1cmUyRFRlc3RF
UzMsIFN0YWxlVW5wYWNrRGF0YSkKK3sKKyAgICAvLyBJbml0IHVucGFjayBidWZmZXIuCisgICAg
R0xzaXplaSBwaXhlbENvdW50ID0gZ2V0V2luZG93V2lkdGgoKSAqIGdldFdpbmRvd0hlaWdodCgp
IC8gMjsKKyAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBwaXhlbHMocGl4ZWxDb3VudCwgR0xDb2xv
cjo6cmVkKTsKKworICAgIEdMQnVmZmVyIHVucGFja0J1ZmZlcjsKKyAgICBnbFBpeGVsU3RvcmVp
KEdMX1VOUEFDS19BTElHTk1FTlQsIDEpOworICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9VTlBB
Q0tfQlVGRkVSLCB1bnBhY2tCdWZmZXIuZ2V0KCkpOworICAgIEdMc2l6ZWkgYnVmZmVyU2l6ZSA9
IHBpeGVsQ291bnQgKiBzaXplb2YoR0xDb2xvcik7CisgICAgZ2xCdWZmZXJEYXRhKEdMX1BJWEVM
X1VOUEFDS19CVUZGRVIsIGJ1ZmZlclNpemUsIHBpeGVscy5kYXRhKCksIEdMX1NUQVRJQ19EUkFX
KTsKKworICAgIC8vIENyZWF0ZSBmcm9tIHVucGFjayBidWZmZXIuCisgICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgMCwgR0xfUkdCQTgsIGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQo
KSAvIDIsIDAsCisgICAgICAgICAgICAgICAgIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51
bGxwdHIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01J
Tl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOworCisgICAgZHJhd1F1YWQobVBy
b2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cisg
ICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OnJlZCk7CisKKyAgICAvLyBG
aWxsIHVucGFjayB3aXRoIGdyZWVuLCByZWNyZWF0aW5nIGJ1ZmZlci4KKyAgICBwaXhlbHMuYXNz
aWduKGdldFdpbmRvd1dpZHRoKCkgKiBnZXRXaW5kb3dIZWlnaHQoKSwgR0xDb2xvcjo6Z3JlZW4p
OworICAgIEdMc2l6ZWkgc2l6ZTIgPSBnZXRXaW5kb3dXaWR0aCgpICogZ2V0V2luZG93SGVpZ2h0
KCkgKiBzaXplb2YoR0xDb2xvcik7CisgICAgZ2xCdWZmZXJEYXRhKEdMX1BJWEVMX1VOUEFDS19C
VUZGRVIsIHNpemUyLCBwaXhlbHMuZGF0YSgpLCBHTF9TVEFUSUNfRFJBVyk7CisKKyAgICAvLyBS
ZWluaXQgdGV4dHVyZSB3aXRoIGdyZWVuLgorICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJF
XzJELCAwLCAwLCAwLCBnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAy
LCBHTF9SR0JBLAorICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRy
KTsKKworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENv
bG9yOjpncmVlbik7Cit9CisKKy8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0
aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVz
ZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCisvLyBUT0RPKG9ldHVhaG8pOiBFbmFibGUg
YWxsIGJlbG93IHRlc3RzIG9uIE9wZW5HTC4gUmVxdWlyZXMgYSBmaXggZm9yIEFOR0xFIGJ1ZyAx
Mjc4LgorQU5HTEVfSU5TVEFOVElBVEVfVEVTVChUZXh0dXJlMkRUZXN0LAorICAgICAgICAgICAg
ICAgICAgICAgICBFUzJfRDNEOSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8zKCksCisgICAgICAgICAg
ICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09Q
RU5HTEVTKCkpOworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChUZXh0dXJlQ3ViZVRlc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVT
Ml9EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzMoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAg
ICBFUzJfT1BFTkdMRVMoKSk7CitBTkdMRV9JTlNUQU5USUFURV9URVNUKFRleHR1cmUyRFRlc3RX
aXRoRHJhd1NjYWxlLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAorICAgICAg
ICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMy
X0QzRDExX0ZMOV8zKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCkpOworQU5HTEVfSU5TVEFOVElBVEVf
VEVTVChTYW1wbGVyMkRBc0Z1bmN0aW9uUGFyYW1ldGVyVGVzdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgRVMyX0QzRDkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCisg
ICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDlfMygpLAorICAgICAgICAgICAgICAg
ICAgICAgICBFUzJfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xF
UygpKTsKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoU2FtcGxlckFycmF5VGVzdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0Qz
RDExKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDlfMygpLAorICAgICAg
ICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVT
Ml9PUEVOR0xFUygpKTsKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoU2FtcGxlckFycmF5QXNGdW5j
dGlvblBhcmFtZXRlclRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCisg
ICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAg
ICBFUzJfRDNEMTFfRkw5XzMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgp
LAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSk7CitBTkdMRV9JTlNUQU5U
SUFURV9URVNUKFRleHR1cmUyRFRlc3RFUzMsIEVTM19EM0QxMSgpLCBFUzNfT1BFTkdMKCksIEVT
M19PUEVOR0xFUygpKTsKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoVGV4dHVyZTNEVGVzdEVTMywg
RVMzX0QzRDExKCksIEVTM19PUEVOR0woKSwgRVMzX09QRU5HTEVTKCkpOworQU5HTEVfSU5TVEFO
VElBVEVfVEVTVChUZXh0dXJlMkRJbnRlZ2VyQWxwaGExVGVzdEVTMywgRVMzX0QzRDExKCksIEVT
M19PUEVOR0woKSwgRVMzX09QRU5HTEVTKCkpOworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChUZXh0
dXJlMkRVbnNpZ25lZEludGVnZXJBbHBoYTFUZXN0RVMzLAorICAgICAgICAgICAgICAgICAgICAg
ICBFUzNfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgpLAorICAg
ICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMRVMoKSk7CitBTkdMRV9JTlNUQU5USUFURV9U
RVNUKFNoYWRvd1NhbXBsZXJQbHVzU2FtcGxlcjNEVGVzdEVTMywKKyAgICAgICAgICAgICAgICAg
ICAgICAgRVMzX0QzRDExKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOworQU5HTEVfSU5TVEFOVElB
VEVfVEVTVChTYW1wbGVyVHlwZU1peFRlc3RFUzMsIEVTM19EM0QxMSgpLCBFUzNfT1BFTkdMKCks
IEVTM19PUEVOR0xFUygpKTsKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoVGV4dHVyZTJEQXJyYXlU
ZXN0RVMzLCBFUzNfRDNEMTEoKSwgRVMzX09QRU5HTCgpLCBFUzNfT1BFTkdMRVMoKSk7CitBTkdM
RV9JTlNUQU5USUFURV9URVNUKFRleHR1cmVTaXplVGV4dHVyZUFycmF5VGVzdCwgRVMzX0QzRDEx
KCksIEVTM19PUEVOR0woKSk7CitBTkdMRV9JTlNUQU5USUFURV9URVNUKFNhbXBsZXJJblN0cnVj
dFRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAorICAgICAgICAgICAg
ICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMy
X0QzRDkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAorICAgICAgICAg
ICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSk7CitBTkdMRV9JTlNUQU5USUFURV9URVNUKFNh
bXBsZXJJblN0cnVjdEFzRnVuY3Rpb25QYXJhbWV0ZXJUZXN0LAorICAgICAgICAgICAgICAgICAg
ICAgICBFUzJfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8z
KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCisgICAgICAgICAgICAgICAg
ICAgICAgIEVTMl9PUEVOR0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVT
KCkpOworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChTYW1wbGVySW5TdHJ1Y3RBcnJheUFzRnVuY3Rp
b25QYXJhbWV0ZXJUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8zKCksCisgICAgICAgICAgICAgICAg
ICAgICAgIEVTMl9EM0Q5KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCkpOworQU5HTEVfSU5TVEFOVElB
VEVfVEVTVChTYW1wbGVySW5OZXN0ZWRTdHJ1Y3RBc0Z1bmN0aW9uUGFyYW1ldGVyVGVzdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCisgICAgICAgICAgICAgICAgICAgICAg
IEVTMl9EM0QxMV9GTDlfMygpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAor
ICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAg
ICAgIEVTMl9PUEVOR0xFUygpKTsKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoU2FtcGxlckluU3Ry
dWN0QW5kT3RoZXJWYXJpYWJsZVRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Qx
MSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzMoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09Q
RU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSk7CitBTkdMRV9J
TlNUQU5USUFURV9URVNUKFRleHR1cmVMaW1pdHNUZXN0LCBFUzJfRDNEMTEoKSwgRVMyX09QRU5H
TCgpLCBFUzJfT1BFTkdMRVMoKSk7CitBTkdMRV9JTlNUQU5USUFURV9URVNUKFRleHR1cmUyRE5v
cm0xNlRlc3RFUzMsIEVTM19EM0QxMSgpLCBFUzNfT1BFTkdMKCksIEVTM19PUEVOR0xFUygpKTsK
KworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1RpbWVyUXVlcmllc1Rlc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9UaW1lclF1ZXJpZXNU
ZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvZ2xfdGVzdHMvVGltZXJRdWVyaWVzVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw1OTAgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisvLyBUaW1lclF1ZXJpZXNUZXN0LmNwcAorLy8gICBWYXJpb3Vz
IHRlc3RzIGZvciBFWFRfZGlzam9pbnRfdGltZXJfcXVlcnkgZnVuY3Rpb25hbGl0eSBhbmQgdmFs
aWRhdGlvbgorLy8KKworI2luY2x1ZGUgInN5c3RlbV91dGlscy5oIgorI2luY2x1ZGUgInRlc3Rf
dXRpbHMvQU5HTEVUZXN0LmgiCisjaW5jbHVkZSAicmFuZG9tX3V0aWxzLmgiCisKK3VzaW5nIG5h
bWVzcGFjZSBhbmdsZTsKKworY2xhc3MgVGltZXJRdWVyaWVzVGVzdCA6IHB1YmxpYyBBTkdMRVRl
c3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIFRpbWVyUXVlcmllc1Rlc3QoKSA6IG1Qcm9ncmFtKDAp
LCBtUHJvZ3JhbUNvc3RseSgwKQorICAgIHsKKyAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsK
KyAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7CisgICAgICAgIHNldENvbmZpZ1JlZEJpdHMo
OCk7CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQmx1
ZUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKKyAgICAgICAgc2V0Q29u
ZmlnRGVwdGhCaXRzKDI0KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQorICAg
IHsKKyAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nIHBhc3N0aHJvdWdoVlMgPQorICAgICAgICAgICAgImF0dHJpYnV0ZSBoaWdocCB2ZWM0IHBv
c2l0aW9uOyB2b2lkIG1haW4odm9pZClcbiIKKyAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAg
ICAiICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247XG4iCisgICAgICAgICAgICAifVxuIjsKKwor
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBwYXNzdGhyb3VnaFBTID0KKyAgICAgICAgICAgICJw
cmVjaXNpb24gaGlnaHAgZmxvYXQ7IHZvaWQgbWFpbih2b2lkKVxuIgorICAgICAgICAgICAgIntc
biIKKyAgICAgICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDEuMCwgMS4wLCAx
LjApO1xuIgorICAgICAgICAgICAgIn1cbiI7CisKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcg
Y29zdGx5VlMgPQorICAgICAgICAgICAgImF0dHJpYnV0ZSBoaWdocCB2ZWM0IHBvc2l0aW9uOyB2
YXJ5aW5nIGhpZ2hwIHZlYzQgdGVzdFBvczsgdm9pZCBtYWluKHZvaWQpXG4iCisgICAgICAgICAg
ICAie1xuIgorICAgICAgICAgICAgIiAgICB0ZXN0UG9zICAgICA9IHBvc2l0aW9uO1xuIgorICAg
ICAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uO1xuIgorICAgICAgICAgICAgIn1c
biI7CisKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgY29zdGx5UFMgPQorICAgICAgICAgICAg
InByZWNpc2lvbiBoaWdocCBmbG9hdDsgdmFyeWluZyBoaWdocCB2ZWM0IHRlc3RQb3M7IHZvaWQg
bWFpbih2b2lkKVxuIgorICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICIgICAgdmVjNCB0
ZXN0ID0gdGVzdFBvcztcbiIKKyAgICAgICAgICAgICIgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1
MDA7IGkrKylcbiIKKyAgICAgICAgICAgICIgICAge1xuIgorICAgICAgICAgICAgIiAgICAgICAg
dGVzdCA9IHNxcnQodGVzdCk7XG4iCisgICAgICAgICAgICAiICAgIH1cbiIKKyAgICAgICAgICAg
ICIgICAgZ2xfRnJhZ0NvbG9yID0gdGVzdDtcbiIKKyAgICAgICAgICAgICJ9XG4iOworCisgICAg
ICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0ocGFzc3Rocm91Z2hWUywgcGFzc3Rocm91Z2hQ
Uyk7CisgICAgICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pIDw8ICJzaGFkZXIgY29tcGlsYXRp
b24gZmFpbGVkLiI7CisKKyAgICAgICAgbVByb2dyYW1Db3N0bHkgPSBDb21waWxlUHJvZ3JhbShj
b3N0bHlWUywgY29zdGx5UFMpOworICAgICAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtQ29zdGx5
KSA8PCAic2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZC4iOworICAgIH0KKworICAgIHZpcnR1YWwg
dm9pZCBUZWFyRG93bigpCisgICAgeworICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0p
OworICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW1Db3N0bHkpOworICAgICAgICBBTkdM
RVRlc3Q6OlRlYXJEb3duKCk7CisgICAgfQorCisgICAgR0x1aW50IG1Qcm9ncmFtOworICAgIEdM
dWludCBtUHJvZ3JhbUNvc3RseTsKK307CisKKy8vIFRlc3QgdGhhdCBhbGwgcHJvYyBhZGRyZXNz
ZXMgYXJlIGxvYWRhYmxlCitURVNUX1AoVGltZXJRdWVyaWVzVGVzdCwgUHJvY0FkZHJlc3NlcykK
K3sKKyAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kaXNqb2ludF90aW1lcl9xdWVy
eSIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBH
TF9FWFRfZGlzam9pbnRfdGltZXJfcXVlcnkgaXMgbm90IGF2YWlsYWJsZS4iCisgICAgICAgICAg
ICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NF
UlRfTkUobnVsbHB0ciwgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2VuUXVlcmllc0VYVCIpKTsKKyAg
ICBBU1NFUlRfTkUobnVsbHB0ciwgZWdsR2V0UHJvY0FkZHJlc3MoImdsRGVsZXRlUXVlcmllc0VY
VCIpKTsKKyAgICBBU1NFUlRfTkUobnVsbHB0ciwgZWdsR2V0UHJvY0FkZHJlc3MoImdsSXNRdWVy
eUVYVCIpKTsKKyAgICBBU1NFUlRfTkUobnVsbHB0ciwgZWdsR2V0UHJvY0FkZHJlc3MoImdsQmVn
aW5RdWVyeUVYVCIpKTsKKyAgICBBU1NFUlRfTkUobnVsbHB0ciwgZWdsR2V0UHJvY0FkZHJlc3Mo
ImdsRW5kUXVlcnlFWFQiKSk7CisgICAgQVNTRVJUX05FKG51bGxwdHIsIGVnbEdldFByb2NBZGRy
ZXNzKCJnbFF1ZXJ5Q291bnRlckVYVCIpKTsKKyAgICBBU1NFUlRfTkUobnVsbHB0ciwgZWdsR2V0
UHJvY0FkZHJlc3MoImdsR2V0UXVlcnlpdkVYVCIpKTsKKyAgICBBU1NFUlRfTkUobnVsbHB0ciwg
ZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0UXVlcnlPYmplY3RpdkVYVCIpKTsKKyAgICBBU1NFUlRf
TkUobnVsbHB0ciwgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0UXVlcnlPYmplY3R1aXZFWFQiKSk7
CisgICAgQVNTRVJUX05FKG51bGxwdHIsIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldFF1ZXJ5T2Jq
ZWN0aTY0dkVYVCIpKTsKKyAgICBBU1NFUlRfTkUobnVsbHB0ciwgZWdsR2V0UHJvY0FkZHJlc3Mo
ImdsR2V0UXVlcnlPYmplY3R1aTY0dkVYVCIpKTsKK30KKworLy8gVGVzdHMgdGhlIHRpbWUgZWxh
cHNlZCBxdWVyeQorVEVTVF9QKFRpbWVyUXVlcmllc1Rlc3QsIFRpbWVFbGFwc2VkKQoreworICAg
IGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5IikpCisg
ICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEdMX0VYVF9k
aXNqb2ludF90aW1lcl9xdWVyeSBpcyBub3QgYXZhaWxhYmxlLiIKKyAgICAgICAgICAgICAgICAg
IDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdMaW50IHF1ZXJ5
VGltZUVsYXBzZWRCaXRzID0gMDsKKyAgICBnbEdldFF1ZXJ5aXZFWFQoR0xfVElNRV9FTEFQU0VE
X0VYVCwgR0xfUVVFUllfQ09VTlRFUl9CSVRTX0VYVCwgJnF1ZXJ5VGltZUVsYXBzZWRCaXRzKTsK
KyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIHN0ZDo6Y291dCA8PCAiVGltZSBlbGFw
c2VkIGNvdW50ZXIgYml0czogIiA8PCBxdWVyeVRpbWVFbGFwc2VkQml0cyA8PCBzdGQ6OmVuZGw7
CisKKyAgICAvLyBTa2lwIHRlc3QgaWYgdGhlIG51bWJlciBvZiBiaXRzIGlzIDAKKyAgICBpZiAo
cXVlcnlUaW1lRWxhcHNlZEJpdHMgPT0gMCkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAi
VGVzdCBza2lwcGVkIGJlY2F1c2Ugb2YgMCBjb3VudGVyIGJpdHMiIDw8IHN0ZDo6ZW5kbDsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGdsRGVwdGhNYXNrKEdMX1RSVUUpOworICAgIGds
Q2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQgfCBHTF9TVEVO
Q0lMX0JVRkZFUl9CSVQpOworCisgICAgR0x1aW50IHF1ZXJ5MSA9IDA7CisgICAgR0x1aW50IHF1
ZXJ5MiA9IDA7CisgICAgZ2xHZW5RdWVyaWVzRVhUKDEsICZxdWVyeTEpOworICAgIGdsR2VuUXVl
cmllc0VYVCgxLCAmcXVlcnkyKTsKKworICAgIC8vIFRlc3QgdGltZSBlbGFwc2VkIGZvciBhIHNp
bmdsZSBxdWFkCisgICAgZ2xCZWdpblF1ZXJ5RVhUKEdMX1RJTUVfRUxBUFNFRF9FWFQsIHF1ZXJ5
MSk7CisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuOGYpOworICAgIGdsRW5k
UXVlcnlFWFQoR0xfVElNRV9FTEFQU0VEX0VYVCk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
CisKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklU
IHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKKworICAgIC8vIFRlc3QgdGltZSBlbGFwc2VkIGZv
ciBjb3N0bHkgcXVhZAorICAgIGdsQmVnaW5RdWVyeUVYVChHTF9USU1FX0VMQVBTRURfRVhULCBx
dWVyeTIpOworICAgIGRyYXdRdWFkKG1Qcm9ncmFtQ29zdGx5LCAicG9zaXRpb24iLCAwLjhmKTsK
KyAgICBnbEVuZFF1ZXJ5RVhUKEdMX1RJTUVfRUxBUFNFRF9FWFQpOworICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOworCisgICAgc3dhcEJ1ZmZlcnMoKTsKKworICAgIGludCB0aW1lb3V0ICA9IDIw
MDAwMDsKKyAgICBHTHVpbnQgcmVhZHkgPSBHTF9GQUxTRTsKKyAgICB3aGlsZSAocmVhZHkgPT0g
R0xfRkFMU0UgJiYgdGltZW91dCA+IDApCisgICAgeworICAgICAgICBhbmdsZTo6U2xlZXAoMCk7
CisgICAgICAgIGdsR2V0UXVlcnlPYmplY3R1aXZFWFQocXVlcnkxLCBHTF9RVUVSWV9SRVNVTFRf
QVZBSUxBQkxFX0VYVCwgJnJlYWR5KTsKKyAgICAgICAgdGltZW91dC0tOworICAgIH0KKyAgICBy
ZWFkeSA9IEdMX0ZBTFNFOworICAgIHdoaWxlIChyZWFkeSA9PSBHTF9GQUxTRSAmJiB0aW1lb3V0
ID4gMCkKKyAgICB7CisgICAgICAgIGFuZ2xlOjpTbGVlcCgwKTsKKyAgICAgICAgZ2xHZXRRdWVy
eU9iamVjdHVpdkVYVChxdWVyeTIsIEdMX1FVRVJZX1JFU1VMVF9BVkFJTEFCTEVfRVhULCAmcmVh
ZHkpOworICAgICAgICB0aW1lb3V0LS07CisgICAgfQorICAgIEFTU0VSVF9MVCgwLCB0aW1lb3V0
KSA8PCAiUXVlcnkgcmVzdWx0IGF2YWlsYWJsZSB0aW1lZCBvdXQiIDw8IHN0ZDo6ZW5kbDsKKwor
ICAgIEdMdWludDY0IHJlc3VsdDEgPSAwOworICAgIEdMdWludDY0IHJlc3VsdDIgPSAwOworICAg
IGdsR2V0UXVlcnlPYmplY3R1aTY0dkVYVChxdWVyeTEsIEdMX1FVRVJZX1JFU1VMVF9FWFQsICZy
ZXN1bHQxKTsKKyAgICBnbEdldFF1ZXJ5T2JqZWN0dWk2NHZFWFQocXVlcnkyLCBHTF9RVUVSWV9S
RVNVTFRfRVhULCAmcmVzdWx0Mik7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBn
bERlbGV0ZVF1ZXJpZXNFWFQoMSwgJnF1ZXJ5MSk7CisgICAgZ2xEZWxldGVRdWVyaWVzRVhUKDEs
ICZxdWVyeTIpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgc3RkOjpjb3V0IDw8
ICJFbGFwc2VkIHRpbWU6ICIgPDwgcmVzdWx0MSA8PCAiIGNoZWFwIHF1YWQiIDw8IHN0ZDo6ZW5k
bDsKKyAgICBzdGQ6OmNvdXQgPDwgIkVsYXBzZWQgdGltZTogIiA8PCByZXN1bHQyIDw8ICIgY29z
dGx5IHF1YWQiIDw8IHN0ZDo6ZW5kbDsKKworICAgIC8vIFRoZSB0aW1lIGVsYXBzZWQgc2hvdWxk
IGJlIG5vbnplcm8KKyAgICBFWFBFQ1RfTFQoMHVsLCByZXN1bHQxKTsKKyAgICBFWFBFQ1RfTFQo
MHVsLCByZXN1bHQyKTsKKworICAgIC8vIFRoZSBjb3N0bHkgcXVhZCBzaG91bGQgdGFrZSBsb25n
ZXIgdGhhbiB0aGUgY2hlYXAgcXVhZAorICAgIEVYUEVDVF9MVChyZXN1bHQxLCByZXN1bHQyKTsK
K30KKworLy8gVGVzdHMgdGltZSBlbGFwc2VkIGZvciBhIG5vbiBkcmF3IGNhbGwgKHRleHR1cmUg
dXBsb2FkKQorVEVTVF9QKFRpbWVyUXVlcmllc1Rlc3QsIFRpbWVFbGFwc2VkVGV4dHVyZVRlc3Qp
Cit7CisgICAgLy8gT1NYIGRyaXZlcnMgZG9uJ3Qgc2VlbSB0byBwcm9wZXJseSB0aW1lIG5vbi1k
cmF3IGNhbGxzIHNvIHdlIHNraXAgdGhlIHRlc3Qgb24gTWFjCisgICAgaWYgKElzT1NYKCkpCisg
ICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBPU1giIDw8IHN0ZDo6
ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghZXh0ZW5zaW9uRW5hYmxl
ZCgiR0xfRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5IikpCisgICAgeworICAgICAgICBzdGQ6OmNv
dXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEdMX0VYVF9kaXNqb2ludF90aW1lcl9xdWVyeSBp
cyBub3QgYXZhaWxhYmxlLiIKKyAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIEdMaW50IHF1ZXJ5VGltZUVsYXBzZWRCaXRzID0gMDsK
KyAgICBnbEdldFF1ZXJ5aXZFWFQoR0xfVElNRV9FTEFQU0VEX0VYVCwgR0xfUVVFUllfQ09VTlRF
Ul9CSVRTX0VYVCwgJnF1ZXJ5VGltZUVsYXBzZWRCaXRzKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKKworICAgIHN0ZDo6Y291dCA8PCAiVGltZSBlbGFwc2VkIGNvdW50ZXIgYml0czogIiA8
PCBxdWVyeVRpbWVFbGFwc2VkQml0cyA8PCBzdGQ6OmVuZGw7CisKKyAgICAvLyBTa2lwIHRlc3Qg
aWYgdGhlIG51bWJlciBvZiBiaXRzIGlzIDAKKyAgICBpZiAocXVlcnlUaW1lRWxhcHNlZEJpdHMg
PT0gMCkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2Ug
b2YgMCBjb3VudGVyIGJpdHMiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIEdMdWJ5dGUgcGl4ZWxzW10gPSB7MCwgMCwgMCwgMjU1LCAyNTUsIDI1NSwgMjU1LCAy
NTUsIDI1NSwgMCwgMCwgMH07CisKKyAgICAvLyBRdWVyeSBhbmQgdGV4dHVyZSBpbml0aWFsaXph
dGlvbgorICAgIEdMdWludCB0ZXh0dXJlOworICAgIEdMdWludCBxdWVyeSA9IDA7CisgICAgZ2xH
ZW5RdWVyaWVzRVhUKDEsICZxdWVyeSk7CisgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4dHVyZSk7
CisKKyAgICAvLyBVcGxvYWQgYSB0ZXh0dXJlIGluc2lkZSB0aGUgcXVlcnkKKyAgICBnbEJlZ2lu
UXVlcnlFWFQoR0xfVElNRV9FTEFQU0VEX0VYVCwgcXVlcnkpOworICAgIGdsQ2xlYXIoR0xfQ09M
T1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9C
SVQpOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgZ2xU
ZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQiwgMiwgMiwgMCwgR0xfUkdCLCBHTF9V
TlNJR05FRF9CWVRFLCBwaXhlbHMpOworICAgIGdsR2VuZXJhdGVNaXBtYXAoR0xfVEVYVFVSRV8y
RCk7CisgICAgZ2xGaW5pc2goKTsKKyAgICBnbEVuZFF1ZXJ5RVhUKEdMX1RJTUVfRUxBUFNFRF9F
WFQpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgaW50IHRpbWVvdXQgID0gMjAw
MDAwOworICAgIEdMdWludCByZWFkeSA9IEdMX0ZBTFNFOworICAgIHdoaWxlIChyZWFkeSA9PSBH
TF9GQUxTRSAmJiB0aW1lb3V0ID4gMCkKKyAgICB7CisgICAgICAgIGFuZ2xlOjpTbGVlcCgwKTsK
KyAgICAgICAgZ2xHZXRRdWVyeU9iamVjdHVpdkVYVChxdWVyeSwgR0xfUVVFUllfUkVTVUxUX0FW
QUlMQUJMRV9FWFQsICZyZWFkeSk7CisgICAgICAgIHRpbWVvdXQtLTsKKyAgICB9CisgICAgQVNT
RVJUX0xUKDAsIHRpbWVvdXQpIDw8ICJRdWVyeSByZXN1bHQgYXZhaWxhYmxlIHRpbWVkIG91dCIg
PDwgc3RkOjplbmRsOworCisgICAgR0x1aW50NjQgcmVzdWx0ID0gMDsKKyAgICBnbEdldFF1ZXJ5
T2JqZWN0dWk2NHZFWFQocXVlcnksIEdMX1FVRVJZX1JFU1VMVF9FWFQsICZyZXN1bHQpOworICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGV4dHVy
ZSk7CisgICAgZ2xEZWxldGVRdWVyaWVzRVhUKDEsICZxdWVyeSk7CisKKyAgICBzdGQ6OmNvdXQg
PDwgIkVsYXBzZWQgdGltZTogIiA8PCByZXN1bHQgPDwgc3RkOjplbmRsOworICAgIEVYUEVDVF9M
VCgwdWwsIHJlc3VsdCk7Cit9CisKKy8vIFRlc3RzIHZhbGlkYXRpb24gb2YgcXVlcnkgZnVuY3Rp
b25zIHdpdGggcmVzcGVjdCB0byBlbGFwc2VkIHRpbWUgcXVlcnkKK1RFU1RfUChUaW1lclF1ZXJp
ZXNUZXN0LCBUaW1lRWxhcHNlZFZhbGlkYXRpb25UZXN0KQoreworICAgIGlmICghZXh0ZW5zaW9u
RW5hYmxlZCgiR0xfRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5IikpCisgICAgeworICAgICAgICBz
dGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEdMX0VYVF9kaXNqb2ludF90aW1lcl9x
dWVyeSBpcyBub3QgYXZhaWxhYmxlLiIKKyAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdMaW50IHF1ZXJ5VGltZUVsYXBzZWRCaXRz
ID0gMDsKKyAgICBnbEdldFF1ZXJ5aXZFWFQoR0xfVElNRV9FTEFQU0VEX0VYVCwgR0xfUVVFUllf
Q09VTlRFUl9CSVRTX0VYVCwgJnF1ZXJ5VGltZUVsYXBzZWRCaXRzKTsKKyAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKKworICAgIHN0ZDo6Y291dCA8PCAiVGltZSBlbGFwc2VkIGNvdW50ZXIgYml0
czogIiA8PCBxdWVyeVRpbWVFbGFwc2VkQml0cyA8PCBzdGQ6OmVuZGw7CisKKyAgICAvLyBTa2lw
IHRlc3QgaWYgdGhlIG51bWJlciBvZiBiaXRzIGlzIDAKKyAgICBpZiAocXVlcnlUaW1lRWxhcHNl
ZEJpdHMgPT0gMCkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJl
Y2F1c2Ugb2YgMCBjb3VudGVyIGJpdHMiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIEdMdWludCBxdWVyeSA9IDA7CisgICAgZ2xHZW5RdWVyaWVzRVhUKC0xLCAm
cXVlcnkpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKKworICAgIGds
R2VuUXVlcmllc0VYVCgxLCAmcXVlcnkpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisg
ICAgZ2xCZWdpblF1ZXJ5RVhUKEdMX1RJTUVTVEFNUF9FWFQsIHF1ZXJ5KTsKKyAgICBFWFBFQ1Rf
R0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKKworICAgIGdsQmVnaW5RdWVyeUVYVChHTF9USU1F
X0VMQVBTRURfRVhULCAwKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOworCisgICAgZ2xFbmRRdWVyeUVYVChHTF9USU1FX0VMQVBTRURfRVhUKTsKKyAgICBFWFBF
Q1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgZ2xCZWdpblF1ZXJ5RVhU
KEdMX1RJTUVfRUxBUFNFRF9FWFQsIHF1ZXJ5KTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
KworICAgIGdsQmVnaW5RdWVyeUVYVChHTF9USU1FX0VMQVBTRURfRVhULCBxdWVyeSk7CisgICAg
RVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKworICAgIGdsRW5kUXVlcnlF
WFQoR0xfVElNRV9FTEFQU0VEX0VYVCk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAg
ICBnbEVuZFF1ZXJ5RVhUKEdMX1RJTUVfRUxBUFNFRF9FWFQpOworICAgIEVYUEVDVF9HTF9FUlJP
UihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKKy8vIFRlc3RzIHRpbWVyIHF1ZXJpZXMgb3Bl
cmF0aW5nIHVuZGVyIG11bHRpcGxlIEVHTCBjb250ZXh0cyB3aXRoIG1pZC1xdWVyeSBzd2l0Y2hp
bmcKK1RFU1RfUChUaW1lclF1ZXJpZXNUZXN0LCBUaW1lRWxhcHNlZE11bHRpY29udGV4dFRlc3Qp
Cit7CisgICAgaWYgKElzQU1EKCkgJiYgSXNPcGVuR0woKSAmJiBJc1dpbmRvd3MoKSAmJiBJc0Rl
YnVnKCkpCisgICAgeworICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBGaWd1cmUgb3V0IHdoeSB0
aGlzIHRlc3QgaXMgZmxha3kgb24gV2luL0FNRC9PcGVuR0wvRGVidWcuCisgICAgICAgIHN0ZDo6
Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIFdpbmRvd3MgQU1EIE9wZW5HTCBEZWJ1Zy4iIDw8IHN0
ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghZXh0ZW5zaW9uRW5h
YmxlZCgiR0xfRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5IikpCisgICAgeworICAgICAgICBzdGQ6
OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEdMX0VYVF9kaXNqb2ludF90aW1lcl9xdWVy
eSBpcyBub3QgYXZhaWxhYmxlLiIKKyAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdMaW50IHF1ZXJ5VGltZUVsYXBzZWRCaXRzID0g
MDsKKyAgICBnbEdldFF1ZXJ5aXZFWFQoR0xfVElNRV9FTEFQU0VEX0VYVCwgR0xfUVVFUllfQ09V
TlRFUl9CSVRTX0VYVCwgJnF1ZXJ5VGltZUVsYXBzZWRCaXRzKTsKKyAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKKworICAgIHN0ZDo6Y291dCA8PCAiVGltZSBlbGFwc2VkIGNvdW50ZXIgYml0czog
IiA8PCBxdWVyeVRpbWVFbGFwc2VkQml0cyA8PCBzdGQ6OmVuZGw7CisKKyAgICAvLyBTa2lwIHRl
c3QgaWYgdGhlIG51bWJlciBvZiBiaXRzIGlzIDAKKyAgICBpZiAocXVlcnlUaW1lRWxhcHNlZEJp
dHMgPT0gMCkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1
c2Ugb2YgMCBjb3VudGVyIGJpdHMiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIC8vIFdpdGhvdXQgYSBnbENsZWFyLCB0aGUgZmlyc3QgZHJhdyBjYWxsIG9uIEdM
IHRha2VzIGEgaHVnZSBhbW91bnQgb2YgdGltZSB3aGVuIHJ1biBhZnRlciB0aGUKKyAgICAvLyBE
M0QgdGVzdCBvbiBjZXJ0YWluIE5WSURJQSBkcml2ZXJzCisgICAgZ2xEZXB0aE1hc2soR0xfVFJV
RSk7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJ
VCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7CisKKyAgICBFR0xpbnQgY29udGV4dEF0dHJpYnV0
ZXNbXSA9IHsKKyAgICAgICAgRUdMX0NPTlRFWFRfTUFKT1JfVkVSU0lPTl9LSFIsCisgICAgICAg
IEdldFBhcmFtKCkubWFqb3JWZXJzaW9uLAorICAgICAgICBFR0xfQ09OVEVYVF9NSU5PUl9WRVJT
SU9OX0tIUiwKKyAgICAgICAgR2V0UGFyYW0oKS5taW5vclZlcnNpb24sCisgICAgICAgIEVHTF9O
T05FLAorICAgIH07CisKKyAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygpOwor
CisgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gd2luZG93LT5nZXREaXNwbGF5KCk7CisgICAgRUdM
Q29uZmlnIGNvbmZpZyAgID0gd2luZG93LT5nZXRDb25maWcoKTsKKyAgICBFR0xTdXJmYWNlIHN1
cmZhY2UgPSB3aW5kb3ctPmdldFN1cmZhY2UoKTsKKworICAgIHN0cnVjdCBDb250ZXh0SW5mbwor
ICAgIHsKKyAgICAgICAgRUdMQ29udGV4dCBjb250ZXh0OworICAgICAgICBHTHVpbnQgcHJvZ3Jh
bTsKKyAgICAgICAgR0x1aW50IHF1ZXJ5OworICAgICAgICBFR0xEaXNwbGF5IGRpc3BsYXk7CisK
KyAgICAgICAgQ29udGV4dEluZm8oKSA6IGNvbnRleHQoRUdMX05PX0NPTlRFWFQpLCBwcm9ncmFt
KDApLCBxdWVyeSgwKSwgZGlzcGxheShFR0xfTk9fRElTUExBWSkge30KKworICAgICAgICB+Q29u
dGV4dEluZm8oKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoY29udGV4dCAhPSBFR0xfTk9f
Q09OVEVYVCAmJiBkaXNwbGF5ICE9IEVHTF9OT19ESVNQTEFZKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfTsKKyAgICBDb250ZXh0SW5mbyBjb250ZXh0c1syXTsK
KworICAgIC8vIFNoYWRlcnMKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBjaGVhcFZTID0KKyAgICAg
ICAgImF0dHJpYnV0ZSBoaWdocCB2ZWM0IHBvc2l0aW9uOyB2b2lkIG1haW4odm9pZClcbiIKKyAg
ICAgICAgIntcbiIKKyAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uO1xuIgorICAg
ICAgICAifVxuIjsKKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGNoZWFwUFMgPQorICAgICAgICAi
cHJlY2lzaW9uIGhpZ2hwIGZsb2F0OyB2b2lkIG1haW4odm9pZClcbiIKKyAgICAgICAgIntcbiIK
KyAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMS4wLCAxLjAsIDEuMCk7XG4i
CisgICAgICAgICJ9XG4iOworCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgY29zdGx5VlMgPQorICAg
ICAgICAiYXR0cmlidXRlIGhpZ2hwIHZlYzQgcG9zaXRpb247IHZhcnlpbmcgaGlnaHAgdmVjNCB0
ZXN0UG9zOyB2b2lkIG1haW4odm9pZClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICB0
ZXN0UG9zICAgICA9IHBvc2l0aW9uO1xuIgorICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gcG9z
aXRpb247XG4iCisgICAgICAgICJ9XG4iOworCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgY29zdGx5
UFMgPQorICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0OyB2YXJ5aW5nIGhpZ2hwIHZlYzQg
dGVzdFBvczsgdm9pZCBtYWluKHZvaWQpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAg
dmVjNCB0ZXN0ID0gdGVzdFBvcztcbiIKKyAgICAgICAgIiAgICBmb3IgKGludCBpID0gMDsgaSA8
IDUwMDsgaSsrKVxuIgorICAgICAgICAiICAgIHtcbiIKKyAgICAgICAgIiAgICAgICAgdGVzdCA9
IHNxcnQodGVzdCk7XG4iCisgICAgICAgICIgICAgfVxuIgorICAgICAgICAiICAgIGdsX0ZyYWdD
b2xvciA9IHRlc3Q7XG4iCisgICAgICAgICJ9XG4iOworCisgICAgLy8gU2V0dXAgdGhlIGZpcnN0
IGNvbnRleHQgd2l0aCBhIGNoZWFwIHNoYWRlcgorICAgIGNvbnRleHRzWzBdLmNvbnRleHQgPSBl
Z2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGNvbmZpZywgRUdMX05PX0NPTlRFWFQsIGNvbnRleHRB
dHRyaWJ1dGVzKTsKKyAgICBjb250ZXh0c1swXS5kaXNwbGF5ID0gZGlzcGxheTsKKyAgICBBU1NF
UlRfTkUoY29udGV4dHNbMF0uY29udGV4dCwgRUdMX05PX0NPTlRFWFQpOworICAgIGVnbE1ha2VD
dXJyZW50KGRpc3BsYXksIHN1cmZhY2UsIHN1cmZhY2UsIGNvbnRleHRzWzBdLmNvbnRleHQpOwor
ICAgIGNvbnRleHRzWzBdLnByb2dyYW0gPSBDb21waWxlUHJvZ3JhbShjaGVhcFZTLCBjaGVhcFBT
KTsKKyAgICBnbEdlblF1ZXJpZXNFWFQoMSwgJmNvbnRleHRzWzBdLnF1ZXJ5KTsKKyAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIFNldHVwIHRoZSBzZWNvbmQgY29udGV4dCB3aXRo
IGFuIGV4cGVuc2l2ZSBzaGFkZXIKKyAgICBjb250ZXh0c1sxXS5jb250ZXh0ID0gZWdsQ3JlYXRl
Q29udGV4dChkaXNwbGF5LCBjb25maWcsIEVHTF9OT19DT05URVhULCBjb250ZXh0QXR0cmlidXRl
cyk7CisgICAgY29udGV4dHNbMV0uZGlzcGxheSA9IGRpc3BsYXk7CisgICAgQVNTRVJUX05FKGNv
bnRleHRzWzFdLmNvbnRleHQsIEVHTF9OT19DT05URVhUKTsKKyAgICBlZ2xNYWtlQ3VycmVudChk
aXNwbGF5LCBzdXJmYWNlLCBzdXJmYWNlLCBjb250ZXh0c1sxXS5jb250ZXh0KTsKKyAgICBjb250
ZXh0c1sxXS5wcm9ncmFtID0gQ29tcGlsZVByb2dyYW0oY29zdGx5VlMsIGNvc3RseVBTKTsKKyAg
ICBnbEdlblF1ZXJpZXNFWFQoMSwgJmNvbnRleHRzWzFdLnF1ZXJ5KTsKKyAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKKworICAgIC8vIFN0YXJ0IHRoZSBxdWVyeSBhbmQgZHJhdyBhIHF1YWQgb24g
dGhlIGZpcnN0IGNvbnRleHQgd2l0aG91dCBlbmRpbmcgdGhlIHF1ZXJ5CisgICAgZWdsTWFrZUN1
cnJlbnQoZGlzcGxheSwgc3VyZmFjZSwgc3VyZmFjZSwgY29udGV4dHNbMF0uY29udGV4dCk7Cisg
ICAgZ2xCZWdpblF1ZXJ5RVhUKEdMX1RJTUVfRUxBUFNFRF9FWFQsIGNvbnRleHRzWzBdLnF1ZXJ5
KTsKKyAgICBkcmF3UXVhZChjb250ZXh0c1swXS5wcm9ncmFtLCAicG9zaXRpb24iLCAwLjhmKTsK
KyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIFN3aXRjaCBjb250ZXh0cywgZHJh
dyB0aGUgZXhwZW5zaXZlIHF1YWQgYW5kIGVuZCBpdHMgcXVlcnkKKyAgICBlZ2xNYWtlQ3VycmVu
dChkaXNwbGF5LCBzdXJmYWNlLCBzdXJmYWNlLCBjb250ZXh0c1sxXS5jb250ZXh0KTsKKyAgICBn
bEJlZ2luUXVlcnlFWFQoR0xfVElNRV9FTEFQU0VEX0VYVCwgY29udGV4dHNbMV0ucXVlcnkpOwor
ICAgIGRyYXdRdWFkKGNvbnRleHRzWzFdLnByb2dyYW0sICJwb3NpdGlvbiIsIDAuOGYpOworICAg
IGdsRW5kUXVlcnlFWFQoR0xfVElNRV9FTEFQU0VEX0VYVCk7CisgICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7CisKKyAgICAvLyBHbyBiYWNrIHRvIHRoZSBmaXJzdCBjb250ZXh0LCBlbmQgaXRzIHF1
ZXJ5LCBhbmQgZ2V0IHRoZSByZXN1bHQKKyAgICBlZ2xNYWtlQ3VycmVudChkaXNwbGF5LCBzdXJm
YWNlLCBzdXJmYWNlLCBjb250ZXh0c1swXS5jb250ZXh0KTsKKyAgICBnbEVuZFF1ZXJ5RVhUKEdM
X1RJTUVfRUxBUFNFRF9FWFQpOworCisgICAgR0x1aW50NjQgcmVzdWx0MSA9IDA7CisgICAgR0x1
aW50NjQgcmVzdWx0MiA9IDA7CisgICAgZ2xHZXRRdWVyeU9iamVjdHVpNjR2RVhUKGNvbnRleHRz
WzBdLnF1ZXJ5LCBHTF9RVUVSWV9SRVNVTFRfRVhULCAmcmVzdWx0MSk7CisgICAgZ2xEZWxldGVR
dWVyaWVzRVhUKDEsICZjb250ZXh0c1swXS5xdWVyeSk7CisgICAgZ2xEZWxldGVQcm9ncmFtKGNv
bnRleHRzWzBdLnByb2dyYW0pOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgLy8g
R2V0IHRoZSAybmQgY29udGV4dCdzIHJlc3VsdHMKKyAgICBlZ2xNYWtlQ3VycmVudChkaXNwbGF5
LCBzdXJmYWNlLCBzdXJmYWNlLCBjb250ZXh0c1sxXS5jb250ZXh0KTsKKyAgICBnbEdldFF1ZXJ5
T2JqZWN0dWk2NHZFWFQoY29udGV4dHNbMV0ucXVlcnksIEdMX1FVRVJZX1JFU1VMVF9FWFQsICZy
ZXN1bHQyKTsKKyAgICBnbERlbGV0ZVF1ZXJpZXNFWFQoMSwgJmNvbnRleHRzWzFdLnF1ZXJ5KTsK
KyAgICBnbERlbGV0ZVByb2dyYW0oY29udGV4dHNbMV0ucHJvZ3JhbSk7CisgICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7CisKKyAgICAvLyBTd2l0Y2ggYmFjayB0byBtYWluIGNvbnRleHQKKyAgICBl
Z2xNYWtlQ3VycmVudChkaXNwbGF5LCBzdXJmYWNlLCBzdXJmYWNlLCB3aW5kb3ctPmdldENvbnRl
eHQoKSk7CisKKyAgICAvLyBDb21wYXJlIHRoZSByZXN1bHRzLiBUaGUgY2hlYXAgcXVhZCBzaG91
bGQgYmUgc21hbGxlciB0aGFuIHRoZSBleHBlbnNpdmUgb25lIGlmCisgICAgLy8gdmlydHVhbGl6
YXRpb24gaXMgd29ya2luZyBjb3JyZWN0bHkKKyAgICBzdGQ6OmNvdXQgPDwgIkVsYXBzZWQgdGlt
ZTogIiA8PCByZXN1bHQxIDw8ICIgY2hlYXAgcXVhZCIgPDwgc3RkOjplbmRsOworICAgIHN0ZDo6
Y291dCA8PCAiRWxhcHNlZCB0aW1lOiAiIDw8IHJlc3VsdDIgPDwgIiBjb3N0bHkgcXVhZCIgPDwg
c3RkOjplbmRsOworICAgIEVYUEVDVF9MVCgwdWwsIHJlc3VsdDEpOworICAgIEVYUEVDVF9MVCgw
dWwsIHJlc3VsdDIpOworICAgIEVYUEVDVF9MVChyZXN1bHQxLCByZXN1bHQyKTsKK30KKworLy8g
VGVzdHMgR1BVIHRpbWVzdGFtcCBmdW5jdGlvbmFsaXR5CitURVNUX1AoVGltZXJRdWVyaWVzVGVz
dCwgVGltZXN0YW1wKQoreworICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2Rpc2pv
aW50X3RpbWVyX3F1ZXJ5IikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tp
cHBlZCBiZWNhdXNlIEdMX0VYVF9kaXNqb2ludF90aW1lcl9xdWVyeSBpcyBub3QgYXZhaWxhYmxl
LiIKKyAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIEdMaW50IHF1ZXJ5VGltZXN0YW1wQml0cyA9IDA7CisgICAgZ2xHZXRRdWVyeWl2
RVhUKEdMX1RJTUVTVEFNUF9FWFQsIEdMX1FVRVJZX0NPVU5URVJfQklUU19FWFQsICZxdWVyeVRp
bWVzdGFtcEJpdHMpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgc3RkOjpjb3V0
IDw8ICJUaW1lc3RhbXAgY291bnRlciBiaXRzOiAiIDw8IHF1ZXJ5VGltZXN0YW1wQml0cyA8PCBz
dGQ6OmVuZGw7CisKKyAgICAvLyBNYWNzIGZvciBzb21lIHJlYXNvbiByZXR1cm4gMCBiaXRzIHNv
IHNraXAgdGhlIHRlc3QgZm9yIG5vdyBpZiBlaXRoZXIgYXJlIDAKKyAgICBpZiAocXVlcnlUaW1l
c3RhbXBCaXRzID09IDApCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBl
ZCBiZWNhdXNlIG9mIDAgY291bnRlciBiaXRzIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBnbERlcHRoTWFzayhHTF9UUlVFKTsKKyAgICBnbENsZWFyKEdMX0NP
TE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJf
QklUKTsKKworICAgIEdMdWludCBxdWVyeTEgPSAwOworICAgIEdMdWludCBxdWVyeTIgPSAwOwor
ICAgIGdsR2VuUXVlcmllc0VYVCgxLCAmcXVlcnkxKTsKKyAgICBnbEdlblF1ZXJpZXNFWFQoMSwg
JnF1ZXJ5Mik7CisgICAgZ2xRdWVyeUNvdW50ZXJFWFQocXVlcnkxLCBHTF9USU1FU1RBTVBfRVhU
KTsKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC44Zik7CisgICAgZ2xRdWVy
eUNvdW50ZXJFWFQocXVlcnkyLCBHTF9USU1FU1RBTVBfRVhUKTsKKworICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOworCisgICAgc3dhcEJ1ZmZlcnMoKTsKKworICAgIGludCB0aW1lb3V0ICA9IDIw
MDAwMDsKKyAgICBHTHVpbnQgcmVhZHkgPSBHTF9GQUxTRTsKKyAgICB3aGlsZSAocmVhZHkgPT0g
R0xfRkFMU0UgJiYgdGltZW91dCA+IDApCisgICAgeworICAgICAgICBhbmdsZTo6U2xlZXAoMCk7
CisgICAgICAgIGdsR2V0UXVlcnlPYmplY3R1aXZFWFQocXVlcnkxLCBHTF9RVUVSWV9SRVNVTFRf
QVZBSUxBQkxFX0VYVCwgJnJlYWR5KTsKKyAgICAgICAgdGltZW91dC0tOworICAgIH0KKyAgICBy
ZWFkeSA9IEdMX0ZBTFNFOworICAgIHdoaWxlIChyZWFkeSA9PSBHTF9GQUxTRSAmJiB0aW1lb3V0
ID4gMCkKKyAgICB7CisgICAgICAgIGFuZ2xlOjpTbGVlcCgwKTsKKyAgICAgICAgZ2xHZXRRdWVy
eU9iamVjdHVpdkVYVChxdWVyeTIsIEdMX1FVRVJZX1JFU1VMVF9BVkFJTEFCTEVfRVhULCAmcmVh
ZHkpOworICAgICAgICB0aW1lb3V0LS07CisgICAgfQorICAgIEFTU0VSVF9MVCgwLCB0aW1lb3V0
KSA8PCAiUXVlcnkgcmVzdWx0IGF2YWlsYWJsZSB0aW1lZCBvdXQiIDw8IHN0ZDo6ZW5kbDsKKwor
ICAgIEdMdWludDY0IHJlc3VsdDEgPSAwOworICAgIEdMdWludDY0IHJlc3VsdDIgPSAwOworICAg
IGdsR2V0UXVlcnlPYmplY3R1aTY0dkVYVChxdWVyeTEsIEdMX1FVRVJZX1JFU1VMVF9FWFQsICZy
ZXN1bHQxKTsKKyAgICBnbEdldFF1ZXJ5T2JqZWN0dWk2NHZFWFQocXVlcnkyLCBHTF9RVUVSWV9S
RVNVTFRfRVhULCAmcmVzdWx0Mik7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAg
IGdsRGVsZXRlUXVlcmllc0VYVCgxLCAmcXVlcnkxKTsKKyAgICBnbERlbGV0ZVF1ZXJpZXNFWFQo
MSwgJnF1ZXJ5Mik7CisKKyAgICBzdGQ6OmNvdXQgPDwgIlRpbWVzdGFtcHM6ICIgPDwgcmVzdWx0
MSA8PCAiICIgPDwgcmVzdWx0MiA8PCBzdGQ6OmVuZGw7CisgICAgRVhQRUNUX0xUKDB1bCwgcmVz
dWx0MSk7CisgICAgRVhQRUNUX0xUKDB1bCwgcmVzdWx0Mik7CisgICAgRVhQRUNUX0xUKHJlc3Vs
dDEsIHJlc3VsdDIpOworfQorCitjbGFzcyBUaW1lclF1ZXJpZXNUZXN0RVMzIDogcHVibGljIFRp
bWVyUXVlcmllc1Rlc3QKK3sKK307CisKKy8vIFRlc3RzIGdldHRpbmcgdGltZXN0YW1wcyB2aWEg
Z2xHZXRJbnRlZ2VyNjR2CitURVNUX1AoVGltZXJRdWVyaWVzVGVzdEVTMywgVGltZXN0YW1wR2V0
SW50ZWdlcjY0KQoreworICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2Rpc2pvaW50
X3RpbWVyX3F1ZXJ5IikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBl
ZCBiZWNhdXNlIEdMX0VYVF9kaXNqb2ludF90aW1lcl9xdWVyeSBpcyBub3QgYXZhaWxhYmxlLiIK
KyAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIEdMaW50IHF1ZXJ5VGltZXN0YW1wQml0cyA9IDA7CisgICAgZ2xHZXRRdWVyeWl2RVhU
KEdMX1RJTUVTVEFNUF9FWFQsIEdMX1FVRVJZX0NPVU5URVJfQklUU19FWFQsICZxdWVyeVRpbWVz
dGFtcEJpdHMpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgc3RkOjpjb3V0IDw8
ICJUaW1lc3RhbXAgY291bnRlciBiaXRzOiAiIDw8IHF1ZXJ5VGltZXN0YW1wQml0cyA8PCBzdGQ6
OmVuZGw7CisKKyAgICBpZiAocXVlcnlUaW1lc3RhbXBCaXRzID09IDApCisgICAgeworICAgICAg
ICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIG9mIDAgY291bnRlciBiaXRzIiA8
PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBnbERlcHRoTWFzayhH
TF9UUlVFKTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZG
RVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKKworICAgIEdMaW50NjQgcmVzdWx0MSA9
IDA7CisgICAgR0xpbnQ2NCByZXN1bHQyID0gMDsKKyAgICBnbEdldEludGVnZXI2NHYoR0xfVElN
RVNUQU1QX0VYVCwgJnJlc3VsdDEpOworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24i
LCAwLjhmKTsKKyAgICBnbEdldEludGVnZXI2NHYoR0xfVElNRVNUQU1QX0VYVCwgJnJlc3VsdDIp
OworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIHN0ZDo6Y291dCA8PCAiVGltZXN0YW1w
cyAoZ2V0SW50ZWdlcjY0dik6ICIgPDwgcmVzdWx0MSA8PCAiICIgPDwgcmVzdWx0MiA8PCBzdGQ6
OmVuZGw7CisgICAgRVhQRUNUX0xUKDBsLCByZXN1bHQxKTsKKyAgICBFWFBFQ1RfTFQoMGwsIHJl
c3VsdDIpOworICAgIEVYUEVDVF9MVChyZXN1bHQxLCByZXN1bHQyKTsKK30KKworQU5HTEVfSU5T
VEFOVElBVEVfVEVTVChUaW1lclF1ZXJpZXNUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICBF
UzJfRDNEOSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgRVMzX0QzRDExKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9P
UEVOR0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgpKTsKKworQU5HTEVf
SU5TVEFOVElBVEVfVEVTVChUaW1lclF1ZXJpZXNUZXN0RVMzLCBFUzNfRDNEMTEoKSwgRVMzX09Q
RU5HTCgpKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvVHJhbnNmb3JtRmVlZGJhY2tUZXN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMv
VHJhbnNmb3JtRmVlZGJhY2tUZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvVHJhbnNmb3JtRmVlZGJhY2tUZXN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk3NCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgInRl
c3RfdXRpbHMvQU5HTEVUZXN0LmgiCisjaW5jbHVkZSAicmFuZG9tX3V0aWxzLmgiCisjaW5jbHVk
ZSAiVmVjdG9yLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNlCit7CisK
K2NsYXNzIFRyYW5zZm9ybUZlZWRiYWNrVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJv
dGVjdGVkOgorICAgIFRyYW5zZm9ybUZlZWRiYWNrVGVzdCgpCisgICAgICAgIDogbVByb2dyYW0o
MCksCisgICAgICAgICAgbVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyKDApLAorICAgICAgICAgIG1U
cmFuc2Zvcm1GZWVkYmFjaygwKQorICAgIHsKKyAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsK
KyAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7CisgICAgICAgIHNldENvbmZpZ1JlZEJpdHMo
OCk7CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQmx1
ZUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKKyAgICB9CisKKyAgICB2
b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsK
KworICAgICAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcik7Cisg
ICAgICAgIGdsQmluZEJ1ZmZlcihHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBtVHJhbnNm
b3JtRmVlZGJhY2tCdWZmZXIpOworICAgICAgICBnbEJ1ZmZlckRhdGEoR0xfVFJBTlNGT1JNX0ZF
RURCQUNLX0JVRkZFUiwgbVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyU2l6ZSwgTlVMTCwKKyAgICAg
ICAgICAgICAgICAgICAgIEdMX1NUQVRJQ19EUkFXKTsKKworICAgICAgICBnbEdlblRyYW5zZm9y
bUZlZWRiYWNrcygxLCAmbVRyYW5zZm9ybUZlZWRiYWNrKTsKKworICAgICAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIGlmIChtUHJvZ3JhbSAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICBnbERl
bGV0ZVByb2dyYW0obVByb2dyYW0pOworICAgICAgICAgICAgbVByb2dyYW0gPSAwOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlciAhPSAwKQorICAgICAg
ICB7CisgICAgICAgICAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1UcmFuc2Zvcm1GZWVkYmFja0J1
ZmZlcik7CisgICAgICAgICAgICBtVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXIgPSAwOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKG1UcmFuc2Zvcm1GZWVkYmFjayAhPSAwKQorICAgICAgICB7Cisg
ICAgICAgICAgICBnbERlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrcygxLCAmbVRyYW5zZm9ybUZlZWRi
YWNrKTsKKyAgICAgICAgICAgIG1UcmFuc2Zvcm1GZWVkYmFjayA9IDA7CisgICAgICAgIH0KKwor
ICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7CisgICAgfQorCisgICAgdm9pZCBjb21waWxl
RGVmYXVsdFByb2dyYW0oY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+ICZ0ZlZhcnlpbmdz
LCBHTGVudW0gYnVmZmVyTW9kZSkKKyAgICB7CisgICAgICAgIEFTU0VSVF9FUSgwdSwgbVByb2dy
YW0pOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9IFNI
QURFUl9TT1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0
OworICAgICAgICAgICAgYXR0cmlidXRlIHZlYzQgcG9zaXRpb247CisKKyAgICAgICAgICAgIHZv
aWQgbWFpbigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBw
b3NpdGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKAor
ICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworCisgICAgICAgICAgICB2b2lkIG1h
aW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQo
MS4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAg
ICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtV2l0aFRyYW5zZm9ybUZlZWRiYWNrKHZlcnRleFNo
YWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGZWYXJ5aW5ncywgYnVmZmVyTW9kZSk7
CisgICAgICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOworICAgIH0KKworICAgIEdMdWludCBt
UHJvZ3JhbTsKKworICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbVRyYW5zZm9ybUZlZWRiYWNrQnVm
ZmVyU2l6ZSA9IDEgPDwgMjQ7CisgICAgR0x1aW50IG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcjsK
KyAgICBHTHVpbnQgbVRyYW5zZm9ybUZlZWRiYWNrOworfTsKKworVEVTVF9QKFRyYW5zZm9ybUZl
ZWRiYWNrVGVzdCwgWmVyb1NpemVkVmlld3BvcnQpCit7CisgICAgLy8gU2V0IHRoZSBwcm9ncmFt
J3MgdHJhbnNmb3JtIGZlZWRiYWNrIHZhcnlpbmdzIChqdXN0IGdsX1Bvc2l0aW9uKQorICAgIHN0
ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB0ZlZhcnlpbmdzOworICAgIHRmVmFyeWluZ3MucHVzaF9i
YWNrKCJnbF9Qb3NpdGlvbiIpOworICAgIGNvbXBpbGVEZWZhdWx0UHJvZ3JhbSh0ZlZhcnlpbmdz
LCBHTF9JTlRFUkxFQVZFRF9BVFRSSUJTKTsKKworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7
CisKKyAgICAvLyBCaW5kIHRoZSBidWZmZXIgZm9yIHRyYW5zZm9ybSBmZWVkYmFjayBvdXRwdXQg
YW5kIHN0YXJ0IHRyYW5zZm9ybSBmZWVkYmFjaworICAgIGdsQmluZEJ1ZmZlckJhc2UoR0xfVFJB
TlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCwgbVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyKTsKKyAg
ICBnbEJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0xfVFJJQU5HTEVTKTsKKworICAgIC8vIENyZWF0
ZSBhIHF1ZXJ5IHRvIGNoZWNrIGhvdyBtYW55IHByaW1pdGl2ZXMgd2VyZSB3cml0dGVuCisgICAg
R0x1aW50IHByaW1pdGl2ZXNXcml0dGVuUXVlcnkgPSAwOworICAgIGdsR2VuUXVlcmllcygxLCAm
cHJpbWl0aXZlc1dyaXR0ZW5RdWVyeSk7CisgICAgZ2xCZWdpblF1ZXJ5KEdMX1RSQU5TRk9STV9G
RUVEQkFDS19QUklNSVRJVkVTX1dSSVRURU4sIHByaW1pdGl2ZXNXcml0dGVuUXVlcnkpOworCisg
ICAgLy8gU2V0IGEgdmlld3BvcnQgdGhhdCB3b3VsZCByZXN1bHQgaW4gbm8gcGl4ZWxzIGJlaW5n
IHdyaXR0ZW4gdG8gdGhlIGZyYW1lYnVmZmVyIGFuZCBkcmF3CisgICAgLy8gYSBxdWFkCisgICAg
Z2xWaWV3cG9ydCgwLCAwLCAwLCAwKTsKKworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRp
b24iLCAwLjVmKTsKKworICAgIC8vIEVuZCB0aGUgcXVlcnkgYW5kIHRyYW5zZm9ybSBmZWVka2Jh
Y2sKKyAgICBnbEVuZFF1ZXJ5KEdMX1RSQU5TRk9STV9GRUVEQkFDS19QUklNSVRJVkVTX1dSSVRU
RU4pOworICAgIGdsRW5kVHJhbnNmb3JtRmVlZGJhY2soKTsKKworICAgIGdsVXNlUHJvZ3JhbSgw
KTsKKworICAgIC8vIENoZWNrIGhvdyBtYW55IHByaW1pdGl2ZXMgd2VyZSB3cml0dGVuIGFuZCB2
ZXJpZnkgdGhhdCBzb21lIHdlcmUgd3JpdHRlbiBldmVuIGlmCisgICAgLy8gbm8gcGl4ZWxzIHdl
cmUgcmVuZGVyZWQKKyAgICBHTHVpbnQgcHJpbWl0aXZlc1dyaXR0ZW4gPSAwOworICAgIGdsR2V0
UXVlcnlPYmplY3R1aXYocHJpbWl0aXZlc1dyaXR0ZW5RdWVyeSwgR0xfUVVFUllfUkVTVUxUX0VY
VCwgJnByaW1pdGl2ZXNXcml0dGVuKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAg
IEVYUEVDVF9FUSgydSwgcHJpbWl0aXZlc1dyaXR0ZW4pOworfQorCisvLyBUZXN0IHRoYXQgcmVi
aW5kaW5nIGEgYnVmZmVyIHdpdGggdGhlIHNhbWUgb2Zmc2V0IHJlc2V0cyB0aGUgb2Zmc2V0IChu
byBsb25nZXIgYXBwZW5kaW5nIGZyb20gdGhlCisvLyBvbGQgcG9zaXRpb24pCitURVNUX1AoVHJh
bnNmb3JtRmVlZGJhY2tUZXN0LCBCdWZmZXJSZWJpbmRpbmcpCit7CisgICAgZ2xEaXNhYmxlKEdM
X0RFUFRIX1RFU1QpOworCisgICAgLy8gU2V0IHRoZSBwcm9ncmFtJ3MgdHJhbnNmb3JtIGZlZWRi
YWNrIHZhcnlpbmdzIChqdXN0IGdsX1Bvc2l0aW9uKQorICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3Ry
aW5nPiB0ZlZhcnlpbmdzOworICAgIHRmVmFyeWluZ3MucHVzaF9iYWNrKCJnbF9Qb3NpdGlvbiIp
OworICAgIGNvbXBpbGVEZWZhdWx0UHJvZ3JhbSh0ZlZhcnlpbmdzLCBHTF9JTlRFUkxFQVZFRF9B
VFRSSUJTKTsKKworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisKKyAgICAvLyBNYWtlIHN1
cmUgdGhlIGJ1ZmZlciBoYXMgemVybydkIGRhdGEKKyAgICBzdGQ6OnZlY3RvcjxmbG9hdD4gZGF0
YShtVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJTaXplIC8gc2l6ZW9mKGZsb2F0KSwgMC4wZik7Cisg
ICAgZ2xCaW5kQnVmZmVyKEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIG1UcmFuc2Zvcm1G
ZWVkYmFja0J1ZmZlcik7CisgICAgZ2xCdWZmZXJEYXRhKEdMX1RSQU5TRk9STV9GRUVEQkFDS19C
VUZGRVIsIG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlclNpemUsIGRhdGEuZGF0YSgpLAorICAgICAg
ICAgICAgICAgICBHTF9TVEFUSUNfRFJBVyk7CisKKworICAgIC8vIENyZWF0ZSBhIHF1ZXJ5IHRv
IGNoZWNrIGhvdyBtYW55IHByaW1pdGl2ZXMgd2VyZSB3cml0dGVuCisgICAgR0x1aW50IHByaW1p
dGl2ZXNXcml0dGVuUXVlcnkgPSAwOworICAgIGdsR2VuUXVlcmllcygxLCAmcHJpbWl0aXZlc1dy
aXR0ZW5RdWVyeSk7CisgICAgZ2xCZWdpblF1ZXJ5KEdMX1RSQU5TRk9STV9GRUVEQkFDS19QUklN
SVRJVkVTX1dSSVRURU4sIHByaW1pdGl2ZXNXcml0dGVuUXVlcnkpOworCisgICAgY29uc3QgZmxv
YXQgZmluYWxaID0gMC45NWY7CisKKyAgICBSTkcgcm5nOworCisgICAgY29uc3Qgc2l6ZV90IGxv
b3BDb3VudCA9IDY0OworICAgIGZvciAoc2l6ZV90IGxvb3BJZHggPSAwOyBsb29wSWR4IDwgbG9v
cENvdW50OyBsb29wSWR4KyspCisgICAgeworICAgICAgICAvLyBCaW5kIHRoZSBidWZmZXIgZm9y
IHRyYW5zZm9ybSBmZWVkYmFjayBvdXRwdXQgYW5kIHN0YXJ0IHRyYW5zZm9ybSBmZWVkYmFjawor
ICAgICAgICBnbEJpbmRCdWZmZXJCYXNlKEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAs
IG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcik7CisgICAgICAgIGdsQmVnaW5UcmFuc2Zvcm1GZWVk
YmFjayhHTF9UUklBTkdMRVMpOworCisgICAgICAgIGZsb2F0IHogPSAobG9vcElkeCArIDEgPT0g
bG9vcENvdW50KSA/IGZpbmFsWiA6IHJuZy5yYW5kb21GbG9hdEJldHdlZW4oMC4xZiwgMC41Zik7
CisgICAgICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCB6KTsKKworICAgICAgICBn
bEVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgfQorCisgICAgLy8gRW5kIHRoZSBxdWVyeSBh
bmQgdHJhbnNmb3JtIGZlZWRiYWNrCisgICAgZ2xFbmRRdWVyeShHTF9UUkFOU0ZPUk1fRkVFREJB
Q0tfUFJJTUlUSVZFU19XUklUVEVOKTsKKworICAgIGdsVXNlUHJvZ3JhbSgwKTsKKworICAgIC8v
IENoZWNrIGhvdyBtYW55IHByaW1pdGl2ZXMgd2VyZSB3cml0dGVuIGFuZCB2ZXJpZnkgdGhhdCBz
b21lIHdlcmUgd3JpdHRlbiBldmVuIGlmCisgICAgLy8gbm8gcGl4ZWxzIHdlcmUgcmVuZGVyZWQK
KyAgICBHTHVpbnQgcHJpbWl0aXZlc1dyaXR0ZW4gPSAwOworICAgIGdsR2V0UXVlcnlPYmplY3R1
aXYocHJpbWl0aXZlc1dyaXR0ZW5RdWVyeSwgR0xfUVVFUllfUkVTVUxUX0VYVCwgJnByaW1pdGl2
ZXNXcml0dGVuKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIEVYUEVDVF9FUShs
b29wQ291bnQgKiAyLCBwcmltaXRpdmVzV3JpdHRlbik7CisKKyAgICAvLyBDaGVjayB0aGUgYnVm
ZmVyIGRhdGEKKyAgICBjb25zdCBmbG9hdCAqYnVmZmVyRGF0YSA9IHN0YXRpY19jYXN0PGZsb2F0
ICo+KGdsTWFwQnVmZmVyUmFuZ2UoCisgICAgICAgIEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZG
RVIsIDAsIG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlclNpemUsIEdMX01BUF9SRUFEX0JJVCkpOwor
CisgICAgZm9yIChzaXplX3QgdmVydGV4SWR4ID0gMDsgdmVydGV4SWR4IDwgNjsgdmVydGV4SWR4
KyspCisgICAgeworICAgICAgICAvLyBDaGVjayB0aGUgdGhpcmQgKFopIGNvbXBvbmVudCBvZiBl
YWNoIHZlcnRleCB3cml0dGVuIGFuZCBtYWtlIHN1cmUgaXQgaGFzIHRoZSBmaW5hbAorICAgICAg
ICAvLyB2YWx1ZQorICAgICAgICBFWFBFQ1RfTkVBUihmaW5hbFosIGJ1ZmZlckRhdGFbdmVydGV4
SWR4ICogNCArIDJdLCAwLjAwMDEpOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGRhdGFJZHgg
PSAyNDsgZGF0YUlkeCA8IG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlclNpemUgLyBzaXplb2YoZmxv
YXQpOyBkYXRhSWR4KyspCisgICAgeworICAgICAgICBFWFBFQ1RfRVEoZGF0YVtkYXRhSWR4XSwg
YnVmZmVyRGF0YVtkYXRhSWR4XSkgPDwgIkJ1ZmZlciBvdmVycnVuIGRldGVjdGVkLiI7CisgICAg
fQorCisgICAgZ2xVbm1hcEJ1ZmZlcihHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSKTsKKwor
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworfQorCisvLyBUZXN0IHRoYXQgWEZCIGNhbiB3cml0
ZSBiYWNrIHZlcnRpY2VzIHRvIGEgYnVmZmVyIGFuZCB0aGF0IHdlIGNhbiBkcmF3IGZyb20gdGhp
cyBidWZmZXIgYWZ0ZXJ3YXJkLgorVEVTVF9QKFRyYW5zZm9ybUZlZWRiYWNrVGVzdCwgUmVjb3Jk
QW5kRHJhdykKK3sKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBGaWd1cmUgb3V0IHdoeSB0aGlzIGZh
aWxzIG9uIEludGVsLgorICAgIGlmIChJc0ludGVsKCkgJiYgR2V0UGFyYW0oKS5nZXRSZW5kZXJl
cigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFKQorICAgIHsKKyAgICAg
ICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwuIiA8PCBzdGQ6OmVuZGw7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBnbENsZWFyQ29sb3IoMC4wZiwgMC4wZiwgMC4w
ZiwgMC4wZik7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAgIC8vIFNl
dCB0aGUgcHJvZ3JhbSdzIHRyYW5zZm9ybSBmZWVkYmFjayB2YXJ5aW5ncyAoanVzdCBnbF9Qb3Np
dGlvbikKKyAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdGZWYXJ5aW5nczsKKyAgICB0ZlZh
cnlpbmdzLnB1c2hfYmFjaygiZ2xfUG9zaXRpb24iKTsKKyAgICBjb21waWxlRGVmYXVsdFByb2dy
YW0odGZWYXJ5aW5ncywgR0xfSU5URVJMRUFWRURfQVRUUklCUyk7CisKKyAgICBnbFVzZVByb2dy
YW0obVByb2dyYW0pOworCisgICAgR0xpbnQgcG9zaXRpb25Mb2NhdGlvbiA9IGdsR2V0QXR0cmli
TG9jYXRpb24obVByb2dyYW0sICJwb3NpdGlvbiIpOworCisgICAgLy8gRmlyc3QgcGFzczogZHJh
dyA2IHBvaW50cyB0byB0aGUgWEZCIGJ1ZmZlcgorICAgIGdsRW5hYmxlKEdMX1JBU1RFUklaRVJf
RElTQ0FSRCk7CisKKyAgICBjb25zdCBHTGZsb2F0IHZlcnRpY2VzW10gPQorICAgIHsKKyAgICAg
ICAgLTEuMGYsICAxLjBmLCAwLjVmLAorICAgICAgICAtMS4wZiwgLTEuMGYsIDAuNWYsCisgICAg
ICAgICAxLjBmLCAtMS4wZiwgMC41ZiwKKworICAgICAgICAtMS4wZiwgIDEuMGYsIDAuNWYsCisg
ICAgICAgICAxLjBmLCAtMS4wZiwgMC41ZiwKKyAgICAgICAgIDEuMGYsICAxLjBmLCAwLjVmLAor
ICAgIH07CisKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25Mb2NhdGlvbiwgMywg
R0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCB2ZXJ0aWNlcyk7CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheShwb3NpdGlvbkxvY2F0aW9uKTsKKworICAgIC8vIEJpbmQgdGhlIGJ1ZmZlciBmb3Ig
dHJhbnNmb3JtIGZlZWRiYWNrIG91dHB1dCBhbmQgc3RhcnQgdHJhbnNmb3JtIGZlZWRiYWNrCisg
ICAgZ2xCaW5kQnVmZmVyQmFzZShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAwLCBtVHJh
bnNmb3JtRmVlZGJhY2tCdWZmZXIpOworICAgIGdsQmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHTF9Q
T0lOVFMpOworCisgICAgLy8gQ3JlYXRlIGEgcXVlcnkgdG8gY2hlY2sgaG93IG1hbnkgcHJpbWl0
aXZlcyB3ZXJlIHdyaXR0ZW4KKyAgICBHTHVpbnQgcHJpbWl0aXZlc1dyaXR0ZW5RdWVyeSA9IDA7
CisgICAgZ2xHZW5RdWVyaWVzKDEsICZwcmltaXRpdmVzV3JpdHRlblF1ZXJ5KTsKKyAgICBnbEJl
Z2luUXVlcnkoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFTiwgcHJpbWl0
aXZlc1dyaXR0ZW5RdWVyeSk7CisKKyAgICBnbERyYXdBcnJheXMoR0xfUE9JTlRTLCAwLCA2KTsK
KworICAgIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHBvc2l0aW9uTG9jYXRpb24pOworICAg
IGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxvY2F0aW9uLCA0LCBHTF9GTE9BVCwgR0xf
RkFMU0UsIDAsIE5VTEwpOworICAgIC8vIEVuZCB0aGUgcXVlcnkgYW5kIHRyYW5zZm9ybSBmZWVk
a2JhY2sKKyAgICBnbEVuZFF1ZXJ5KEdMX1RSQU5TRk9STV9GRUVEQkFDS19QUklNSVRJVkVTX1dS
SVRURU4pOworICAgIGdsRW5kVHJhbnNmb3JtRmVlZGJhY2soKTsKKworICAgIGdsQmluZEJ1ZmZl
ckJhc2UoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCwgMCk7CisKKyAgICBnbERpc2Fi
bGUoR0xfUkFTVEVSSVpFUl9ESVNDQVJEKTsKKworICAgIC8vIENoZWNrIGhvdyBtYW55IHByaW1p
dGl2ZXMgd2VyZSB3cml0dGVuIGFuZCB2ZXJpZnkgdGhhdCBzb21lIHdlcmUgd3JpdHRlbiBldmVu
IGlmCisgICAgLy8gbm8gcGl4ZWxzIHdlcmUgcmVuZGVyZWQKKyAgICBHTHVpbnQgcHJpbWl0aXZl
c1dyaXR0ZW4gPSAwOworICAgIGdsR2V0UXVlcnlPYmplY3R1aXYocHJpbWl0aXZlc1dyaXR0ZW5R
dWVyeSwgR0xfUVVFUllfUkVTVUxUX0VYVCwgJnByaW1pdGl2ZXNXcml0dGVuKTsKKyAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKKworICAgIEVYUEVDVF9FUSg2dSwgcHJpbWl0aXZlc1dyaXR0ZW4p
OworCisgICAgLy8gTm90aGluZyBzaG91bGQgaGF2ZSBiZWVuIGRyYXduIHRvIHRoZSBmcmFtZWJ1
ZmZlcgorICAgIEVYUEVDVF9QSVhFTF9FUShnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93
SGVpZ2h0KCkgLyAyLCAwLCAwLCAwLCAwKTsKKworICAgIC8vIFNlY29uZCBwYXNzOiBkcmF3IGZy
b20gdGhlIGZlZWRiYWNrIGJ1ZmZlcgorCisgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZF
UiwgbVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyKTsKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIo
cG9zaXRpb25Mb2NhdGlvbiwgNCwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCAwKTsKKyAgICBnbEVu
YWJsZVZlcnRleEF0dHJpYkFycmF5KHBvc2l0aW9uTG9jYXRpb24pOworCisgICAgZ2xEcmF3QXJy
YXlzKEdMX1RSSUFOR0xFUywgMCwgNik7CisKKyAgICBFWFBFQ1RfUElYRUxfRVEoZ2V0V2luZG93
V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgMjU1LCAgIDAsICAgMCwgMjU1KTsK
KyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKK30KKworLy8gVGVzdCB0aGF0IGJ1ZmZlciBiaW5k
aW5nIGhhcHBlbnMgb25seSBvbiB0aGUgY3VycmVudCB0cmFuc2Zvcm0gZmVlZGJhY2sgb2JqZWN0
CitURVNUX1AoVHJhbnNmb3JtRmVlZGJhY2tUZXN0LCBCdWZmZXJCaW5kaW5nKQoreworICAgIC8v
IFJlc2V0IGFueSBzdGF0ZQorICAgIGdsQmluZFRyYW5zZm9ybUZlZWRiYWNrKEdMX1RSQU5TRk9S
TV9GRUVEQkFDSywgMCk7CisgICAgZ2xCaW5kQnVmZmVyKEdMX1RSQU5TRk9STV9GRUVEQkFDS19C
VUZGRVIsIDApOworCisgICAgLy8gR2VuZXJhdGUgYSBuZXcgYnVmZmVyCisgICAgR0x1aW50IHNj
cmF0Y2hCdWZmZXIgPSAwOworICAgIGdsR2VuQnVmZmVycygxLCAmc2NyYXRjaEJ1ZmZlcik7CisK
KyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIEJpbmQgVEYgMCBhbmQgYSBidWZm
ZXIKKyAgICBnbEJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHTF9UUkFOU0ZPUk1fRkVFREJBQ0ssIDAp
OworICAgIGdsQmluZEJ1ZmZlcihHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBtVHJhbnNm
b3JtRmVlZGJhY2tCdWZmZXIpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAv
LyBDaGVjayB0aGF0IHRoZSBidWZmZXIgSUQgbWF0Y2hlcyB0aGUgb25lIHRoYXQgd2FzIGp1c3Qg
Ym91bmQKKyAgICBHTGludCBjdXJyZW50QnVmZmVyQmluZGluZyA9IDA7CisgICAgZ2xHZXRJbnRl
Z2VydihHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkcsICZjdXJyZW50QnVmZmVy
QmluZGluZyk7CisgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PEdMdWludD4oY3VycmVudEJ1ZmZl
ckJpbmRpbmcpLCBtVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXIpOworCisgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7CisKKyAgICAvLyBDaGVjayB0aGF0IHRoZSBidWZmZXIgSUQgZm9yIHRoZSBuZXds
eSBib3VuZCB0cmFuc2Zvcm0gZmVlZGJhY2sgaXMgemVybworICAgIGdsQmluZFRyYW5zZm9ybUZl
ZWRiYWNrKEdMX1RSQU5TRk9STV9GRUVEQkFDSywgbVRyYW5zZm9ybUZlZWRiYWNrKTsKKworICAg
IGdsR2V0SW50ZWdlcnYoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HLCAmY3Vy
cmVudEJ1ZmZlckJpbmRpbmcpOworICAgIEVYUEVDVF9FUSgwLCBjdXJyZW50QnVmZmVyQmluZGlu
Zyk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIEJpbmQgYSBidWZmZXIg
dG8gdGhpcyBURgorICAgIGdsQmluZEJ1ZmZlclJhbmdlKEdMX1RSQU5TRk9STV9GRUVEQkFDS19C
VUZGRVIsIDAsIHNjcmF0Y2hCdWZmZXIsIDAsIDMyKTsKKworICAgIGdsR2V0SW50ZWdlcmlfdihH
TF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkcsIDAsICZjdXJyZW50QnVmZmVyQmlu
ZGluZyk7CisgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PEdMdWludD4oY3VycmVudEJ1ZmZlckJp
bmRpbmcpLCBzY3JhdGNoQnVmZmVyKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisg
ICAgLy8gUmViaW5kIHRoZSBvcmlnaW5hbCBURiBhbmQgY2hlY2sgaXQncyBiaW5kaW5ncworICAg
IGdsQmluZFRyYW5zZm9ybUZlZWRiYWNrKEdMX1RSQU5TRk9STV9GRUVEQkFDSywgMCk7CisKKyAg
ICBnbEdldEludGVnZXJpX3YoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HLCAw
LCAmY3VycmVudEJ1ZmZlckJpbmRpbmcpOworICAgIEVYUEVDVF9FUSgwLCBjdXJyZW50QnVmZmVy
QmluZGluZyk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIENsZWFuIHVw
CisgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZzY3JhdGNoQnVmZmVyKTsKK30KKworLy8gVGVzdCB0
aGF0IHdlIGNhbiBjYXB0dXJlIHZhcnlpbmdzIG9ubHkgdXNlZCBpbiB0aGUgdmVydGV4IHNoYWRl
ci4KK1RFU1RfUChUcmFuc2Zvcm1GZWVkYmFja1Rlc3QsIFZlcnRleE9ubHkpCit7CisgICAgY29u
c3Qgc3RkOjpzdHJpbmcgJnZlcnRleFNoYWRlclNvdXJjZSA9CisgICAgICAgICIjdmVyc2lvbiAz
MDAgZXNcbiIKKyAgICAgICAgImluIHZlYzIgcG9zaXRpb247XG4iCisgICAgICAgICJpbiBmbG9h
dCBhdHRyaWI7XG4iCisgICAgICAgICJvdXQgZmxvYXQgdmFyeWluZ0F0dHJpYjtcbiIKKyAgICAg
ICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0
aW9uLCAwLCAxKTtcbiIKKyAgICAgICAgIiAgdmFyeWluZ0F0dHJpYiA9IGF0dHJpYjtcbiIKKyAg
ICAgICAgIn0iOworCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdtZW50U2hhZGVyU291cmNl
ID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAib3V0IG1lZGl1bXAgdmVj
NCBjb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgY29sb3Ig
PSB2ZWM0KDAuMCwgMS4wLCAwLjAsIDEuMCk7XG4iCisgICAgICAgICJ9IjsKKworICAgIHN0ZDo6
dmVjdG9yPHN0ZDo6c3RyaW5nPiB0ZlZhcnlpbmdzOworICAgIHRmVmFyeWluZ3MucHVzaF9iYWNr
KCJ2YXJ5aW5nQXR0cmliIik7CisKKyAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtV2l0aFRy
YW5zZm9ybUZlZWRiYWNrKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZlZh
cnlpbmdzLCBHTF9JTlRFUkxFQVZFRF9BVFRSSUJTKTsKKyAgICBBU1NFUlRfTkUoMHUsIG1Qcm9n
cmFtKTsKKworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisKKyAgICBnbEJpbmRUcmFuc2Zv
cm1GZWVkYmFjayhHTF9UUkFOU0ZPUk1fRkVFREJBQ0ssIG1UcmFuc2Zvcm1GZWVkYmFjayk7Cisg
ICAgZ2xCaW5kQnVmZmVyQmFzZShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAwLCBtVHJh
bnNmb3JtRmVlZGJhY2tCdWZmZXIpOworCisgICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IGF0dHJpYkRh
dGE7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgY250ID0gMDsgY250IDwgMTAwOyArK2NudCkKKyAg
ICB7CisgICAgICAgIGF0dHJpYkRhdGEucHVzaF9iYWNrKHN0YXRpY19jYXN0PGZsb2F0PihjbnQp
KTsKKyAgICB9CisKKyAgICBHTGludCBhdHRyaWJMb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRp
b24obVByb2dyYW0sICJhdHRyaWIiKTsKKyAgICBBU1NFUlRfTkUoLTEsIGF0dHJpYkxvY2F0aW9u
KTsKKworICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihhdHRyaWJMb2NhdGlvbiwgMSwgR0xfRkxP
QVQsIEdMX0ZBTFNFLCA0LCAmYXR0cmliRGF0YVswXSk7CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheShhdHRyaWJMb2NhdGlvbik7CisKKyAgICBnbEJlZ2luVHJhbnNmb3JtRmVlZGJhY2so
R0xfVFJJQU5HTEVTKTsKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7
CisgICAgZ2xFbmRUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigp
OworCisgICAgZ2xVc2VQcm9ncmFtKDApOworCisgICAgR0x2b2lkICptYXBwZWRCdWZmZXIgPQor
ICAgICAgICBnbE1hcEJ1ZmZlclJhbmdlKEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAs
IHNpemVvZihmbG9hdCkgKiA2LCBHTF9NQVBfUkVBRF9CSVQpOworICAgIEFTU0VSVF9ORShudWxs
cHRyLCBtYXBwZWRCdWZmZXIpOworCisgICAgZmxvYXQgKm1hcHBlZEZsb2F0cyA9IHN0YXRpY19j
YXN0PGZsb2F0ICo+KG1hcHBlZEJ1ZmZlcik7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgY250ID0g
MDsgY250IDwgNjsgKytjbnQpCisgICAgeworICAgICAgICBFWFBFQ1RfRVEoYXR0cmliRGF0YVtj
bnRdLCBtYXBwZWRGbG9hdHNbY250XSk7CisgICAgfQorCisgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7Cit9CisKKy8vIFRlc3QgdGhhdCBtdWx0aXBsZSBwYXVzZWQgdHJhbnNmb3JtIGZlZWRiYWNr
cyBkbyBub3QgZ2VuZXJhdGUgZXJyb3JzIG9yIGNyYXNoCitURVNUX1AoVHJhbnNmb3JtRmVlZGJh
Y2tUZXN0LCBNdWx0aXBsZVBhdXNlZCkKK3sKKyAgICBjb25zdCBzaXplX3QgZHJhd1NpemUgPSAx
MDI0OworICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiB0cmFuc2Zvcm1GZWVkYmFja0RhdGEoZHJhd1Np
emUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZHJhd1NpemU7IGkrKykKKyAgICB7Cisg
ICAgICAgIHRyYW5zZm9ybUZlZWRiYWNrRGF0YVtpXSA9IHN0YXRpY19jYXN0PGZsb2F0PihpICsg
MSk7CisgICAgfQorCisgICAgLy8gSW5pdGlhbGl6ZSB0aGUgYnVmZmVycyB0byB6ZXJvCisgICAg
c2l6ZV90IGJ1ZmZlclNpemUgPSBkcmF3U2l6ZTsKKyAgICBzdGQ6OnZlY3RvcjxmbG9hdD4gYnVm
ZmVySW5pdGlhbERhdGEoYnVmZmVyU2l6ZSwgMCk7CisKKyAgICBjb25zdCBzaXplX3QgdHJhbnNm
b3JtRmVlZGJhY2tDb3VudCA9IDg7CisKKyAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgICAgY29u
c3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQorICAgICgg
ICN2ZXJzaW9uIDMwMCBlc1xuCisgICAgICAgaW4gaGlnaHAgdmVjNCBwb3NpdGlvbjsKKyAgICAg
ICBpbiBmbG9hdCB0cmFuc2Zvcm1GZWVkYmFja0lucHV0OworICAgICAgIG91dCBmbG9hdCB0cmFu
c2Zvcm1GZWVkYmFja091dHB1dDsKKyAgICAgICB2b2lkIG1haW4odm9pZCkKKyAgICAgICB7Cisg
ICAgICAgICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247CisgICAgICAgICAgIHRyYW5zZm9ybUZl
ZWRiYWNrT3V0cHV0ID0gdHJhbnNmb3JtRmVlZGJhY2tJbnB1dDsKKyAgICAgICB9CisgICAgKTsK
KworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0gU0hBREVSX1NP
VVJDRQorICAgICggICN2ZXJzaW9uIDMwMCBlc1xuCisgICAgICAgb3V0IG1lZGl1bXAgdmVjNCBj
b2xvcjsKKyAgICAgICB2b2lkIG1haW4odm9pZCkKKyAgICAgICB7CisgICAgICAgICAgIGNvbG9y
ID0gdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjApOworICAgICAgIH0KKyAgICApOworICAgIC8vIGNs
YW5nLWZvcm1hdCBvbgorCisgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHRmVmFyeWluZ3M7
CisgICAgdGZWYXJ5aW5ncy5wdXNoX2JhY2soInRyYW5zZm9ybUZlZWRiYWNrT3V0cHV0Iik7CisK
KyAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtV2l0aFRyYW5zZm9ybUZlZWRiYWNrKHZlcnRl
eFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZlZhcnlpbmdzLCBHTF9JTlRFUkxFQVZF
RF9BVFRSSUJTKTsKKyAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsKKyAgICBnbFVzZVByb2dy
YW0obVByb2dyYW0pOworCisgICAgR0xpbnQgcG9zaXRpb25Mb2NhdGlvbiA9IGdsR2V0QXR0cmli
TG9jYXRpb24obVByb2dyYW0sICJwb3NpdGlvbiIpOworICAgIGdsRGlzYWJsZVZlcnRleEF0dHJp
YkFycmF5KHBvc2l0aW9uTG9jYXRpb24pOworICAgIGdsVmVydGV4QXR0cmliNGYocG9zaXRpb25M
b2NhdGlvbiwgMC4wZiwgMC4wZiwgMC4wZiwgMS4wZik7CisKKyAgICBHTGludCB0ZklucHV0TG9j
YXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAidHJhbnNmb3JtRmVlZGJhY2tJ
bnB1dCIpOworICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkodGZJbnB1dExvY2F0aW9uKTsK
KyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIodGZJbnB1dExvY2F0aW9uLCAxLCBHTF9GTE9BVCwg
ZmFsc2UsIDAsICZ0cmFuc2Zvcm1GZWVkYmFja0RhdGFbMF0pOworCisgICAgZ2xEZXB0aE1hc2so
R0xfRkFMU0UpOworICAgIGdsRW5hYmxlKEdMX0RFUFRIX1RFU1QpOworICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOworCisgICAgR0x1aW50IHRyYW5zZm9ybUZlZWRiYWNrc1t0cmFuc2Zvcm1GZWVk
YmFja0NvdW50XTsKKyAgICBnbEdlblRyYW5zZm9ybUZlZWRiYWNrcyh0cmFuc2Zvcm1GZWVkYmFj
a0NvdW50LCB0cmFuc2Zvcm1GZWVkYmFja3MpOworCisgICAgR0x1aW50IGJ1ZmZlcnNbdHJhbnNm
b3JtRmVlZGJhY2tDb3VudF07CisgICAgZ2xHZW5CdWZmZXJzKHRyYW5zZm9ybUZlZWRiYWNrQ291
bnQsIGJ1ZmZlcnMpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFuc2Zvcm1GZWVk
YmFja0NvdW50OyBpKyspCisgICAgeworICAgICAgICBnbEJpbmRUcmFuc2Zvcm1GZWVkYmFjayhH
TF9UUkFOU0ZPUk1fRkVFREJBQ0ssIHRyYW5zZm9ybUZlZWRiYWNrc1tpXSk7CisKKyAgICAgICAg
Z2xCaW5kQnVmZmVyKEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIGJ1ZmZlcnNbaV0pOwor
ICAgICAgICBnbEJ1ZmZlckRhdGEoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgYnVmZmVy
U2l6ZSAqIHNpemVvZihHTGZsb2F0KSwKKyAgICAgICAgICAgICAgICAgICAgICZidWZmZXJJbml0
aWFsRGF0YVswXSwgR0xfRFlOQU1JQ19EUkFXKTsKKyAgICAgICAgZ2xCaW5kQnVmZmVyQmFzZShH
TF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAwLCBidWZmZXJzW2ldKTsKKyAgICAgICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgZ2xCZWdpblRyYW5zZm9ybUZlZWRiYWNrKEdM
X1BPSU5UUyk7CisKKyAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1BPSU5UUywgMCwgc3RhdGljX2Nh
c3Q8R0xzaXplaT4oZHJhd1NpemUpKTsKKworICAgICAgICBnbFBhdXNlVHJhbnNmb3JtRmVlZGJh
Y2soKTsKKworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICB9CisKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHRyYW5zZm9ybUZlZWRiYWNrQ291bnQ7IGkrKykKKyAgICB7Cisg
ICAgICAgIGdsQmluZFRyYW5zZm9ybUZlZWRiYWNrKEdMX1RSQU5TRk9STV9GRUVEQkFDSywgdHJh
bnNmb3JtRmVlZGJhY2tzW2ldKTsKKyAgICAgICAgZ2xFbmRUcmFuc2Zvcm1GZWVkYmFjaygpOwor
ICAgICAgICBnbERlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrcygxLCAmdHJhbnNmb3JtRmVlZGJhY2tz
W2ldKTsKKworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICB9Cit9CisvLyBUZXN0
IHRoYXQgcnVubmluZyBtdWx0aXBsZSBzaW11bHRhbmVvdXMgcXVlcmllcyBhbmQgdHJhbnNmb3Jt
IGZlZWRiYWNrcyBmcm9tIG11bHRpcGxlIEVHTAorLy8gY29udGV4dHMgcmV0dXJucyB0aGUgY29y
cmVjdCByZXN1bHRzLiAgSGVscHMgZXhwb3NlIGJ1Z3MgaW4gQU5HTEUncyB2aXJ0dWFsIGNvbnRl
eHRzLgorVEVTVF9QKFRyYW5zZm9ybUZlZWRiYWNrVGVzdCwgTXVsdGlDb250ZXh0KQoreworI2lm
IGRlZmluZWQoQU5HTEVfUExBVEZPUk1fQVBQTEUpCisgICAgaWYgKChJc05WSURJQSgpIHx8IElz
QU1EKCkpICYmIEdldFBhcmFtKCkgPT0gRVMzX09QRU5HTCgpKQorICAgIHsKKyAgICAgICAgc3Rk
Ojpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gTlZpZGlhIGFuZCBBTUQgT3BlbkdMIG9uIE9TWC4i
IDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisjaWYgZGVm
aW5lZChBTkdMRV9QTEFURk9STV9MSU5VWCkKKyAgICBpZiAoSXNBTUQoKSAmJiBHZXRQYXJhbSgp
ID09IEVTM19PUEVOR0woKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lw
cGVkIG9uIEFNRCBPcGVuR0wgb24gTGludXguIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisjZW5kaWYKKworICAgIEVHTGludCBjb250ZXh0QXR0cmlidXRlc1tdID0gewor
ICAgICAgICBFR0xfQ09OVEVYVF9NQUpPUl9WRVJTSU9OX0tIUiwKKyAgICAgICAgR2V0UGFyYW0o
KS5tYWpvclZlcnNpb24sCisgICAgICAgIEVHTF9DT05URVhUX01JTk9SX1ZFUlNJT05fS0hSLAor
ICAgICAgICBHZXRQYXJhbSgpLm1pbm9yVmVyc2lvbiwKKyAgICAgICAgRUdMX05PTkUsCisgICAg
fTsKKworICAgIEVHTFdpbmRvdyAqd2luZG93ID0gZ2V0RUdMV2luZG93KCk7CisKKyAgICBFR0xE
aXNwbGF5IGRpc3BsYXkgPSB3aW5kb3ctPmdldERpc3BsYXkoKTsKKyAgICBFR0xDb25maWcgY29u
ZmlnICAgPSB3aW5kb3ctPmdldENvbmZpZygpOworICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IHdp
bmRvdy0+Z2V0U3VyZmFjZSgpOworCisgICAgY29uc3Qgc2l6ZV90IHBhc3NDb3VudCA9IDU7Cisg
ICAgc3RydWN0IENvbnRleHRJbmZvCisgICAgeworICAgICAgICBFR0xDb250ZXh0IGNvbnRleHQ7
CisgICAgICAgIEdMdWludCBwcm9ncmFtOworICAgICAgICBHTHVpbnQgcXVlcnk7CisgICAgICAg
IEdMdWludCBidWZmZXI7CisgICAgICAgIHNpemVfdCBwcmltaXRpdmVDb3VudHNbcGFzc0NvdW50
XTsKKyAgICB9OworICAgIENvbnRleHRJbmZvIGNvbnRleHRzWzMyXTsKKworICAgIGNvbnN0IHNp
emVfdCBtYXhEcmF3U2l6ZSA9IDEwMjQ7CisKKyAgICBzdGQ6OnZlY3RvcjxmbG9hdD4gdHJhbnNm
b3JtRmVlZGJhY2tEYXRhKG1heERyYXdTaXplKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1heERyYXdTaXplOyBpKyspCisgICAgeworICAgICAgICB0cmFuc2Zvcm1GZWVkYmFja0RhdGFb
aV0gPSBzdGF0aWNfY2FzdDxmbG9hdD4oaSArIDEpOworICAgIH0KKworICAgIC8vIEluaXRpYWxp
emUgdGhlIGJ1ZmZlcnMgdG8gemVybworICAgIHNpemVfdCBidWZmZXJTaXplID0gbWF4RHJhd1Np
emUgKiBwYXNzQ291bnQ7CisgICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IGJ1ZmZlckluaXRpYWxEYXRh
KGJ1ZmZlclNpemUsIDApOworCisgICAgZm9yIChhdXRvICZjb250ZXh0IDogY29udGV4dHMpCisg
ICAgeworICAgICAgICBjb250ZXh0LmNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXks
IGNvbmZpZywgRUdMX05PX0NPTlRFWFQsIGNvbnRleHRBdHRyaWJ1dGVzKTsKKyAgICAgICAgQVNT
RVJUX05FKGNvbnRleHQuY29udGV4dCwgRUdMX05PX0NPTlRFWFQpOworCisgICAgICAgIGVnbE1h
a2VDdXJyZW50KGRpc3BsYXksIHN1cmZhY2UsIHN1cmZhY2UsIGNvbnRleHQuY29udGV4dCk7CisK
KyAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgorICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB2
ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgICAgICggICAjdmVyc2lvbiAz
MDAgZXNcbgorICAgICAgICAgICAgaW4gaGlnaHAgdmVjNCBwb3NpdGlvbjsKKyAgICAgICAgICAg
IGluIGZsb2F0IHRyYW5zZm9ybUZlZWRiYWNrSW5wdXQ7CisgICAgICAgICAgICBvdXQgZmxvYXQg
dHJhbnNmb3JtRmVlZGJhY2tPdXRwdXQ7CisgICAgICAgICAgICB2b2lkIG1haW4odm9pZCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOworICAg
ICAgICAgICAgICAgIHRyYW5zZm9ybUZlZWRiYWNrT3V0cHV0ID0gdHJhbnNmb3JtRmVlZGJhY2tJ
bnB1dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKCAgICN2
ZXJzaW9uIDMwMCBlc1xuCisgICAgICAgICAgICBvdXQgbWVkaXVtcCB2ZWM0IGNvbG9yOworICAg
ICAgICAgICAgdm9pZCBtYWluKHZvaWQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Y29sb3IgPSB2ZWM0KDEuMCwgMS4wLCAxLjAsIDEuMCk7CisgICAgICAgICAgICB9CisgICAgICAg
ICk7CisgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorCisgICAgICAgIHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiB0ZlZhcnlpbmdzOworICAgICAgICB0ZlZhcnlpbmdzLnB1c2hfYmFjaygidHJh
bnNmb3JtRmVlZGJhY2tPdXRwdXQiKTsKKworICAgICAgICBjb250ZXh0LnByb2dyYW0gPSBDb21w
aWxlUHJvZ3JhbVdpdGhUcmFuc2Zvcm1GZWVkYmFjaygKKyAgICAgICAgICAgIHZlcnRleFNoYWRl
clNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UsIHRmVmFyeWluZ3MsIEdMX0lOVEVSTEVBVkVE
X0FUVFJJQlMpOworICAgICAgICBBU1NFUlRfTkUoY29udGV4dC5wcm9ncmFtLCAwdSk7CisgICAg
ICAgIGdsVXNlUHJvZ3JhbShjb250ZXh0LnByb2dyYW0pOworCisgICAgICAgIEdMaW50IHBvc2l0
aW9uTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKGNvbnRleHQucHJvZ3JhbSwgInBvc2l0
aW9uIik7CisgICAgICAgIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHBvc2l0aW9uTG9jYXRp
b24pOworICAgICAgICBnbFZlcnRleEF0dHJpYjRmKHBvc2l0aW9uTG9jYXRpb24sIDAuMGYsIDAu
MGYsIDAuMGYsIDEuMGYpOworCisgICAgICAgIEdMaW50IHRmSW5wdXRMb2NhdGlvbiA9IGdsR2V0
QXR0cmliTG9jYXRpb24oY29udGV4dC5wcm9ncmFtLCAidHJhbnNmb3JtRmVlZGJhY2tJbnB1dCIp
OworICAgICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHRmSW5wdXRMb2NhdGlvbik7Cisg
ICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcih0ZklucHV0TG9jYXRpb24sIDEsIEdMX0ZMT0FU
LCBmYWxzZSwgMCwgJnRyYW5zZm9ybUZlZWRiYWNrRGF0YVswXSk7CisKKyAgICAgICAgZ2xEZXB0
aE1hc2soR0xfRkFMU0UpOworICAgICAgICBnbEVuYWJsZShHTF9ERVBUSF9URVNUKTsKKyAgICAg
ICAgZ2xHZW5RdWVyaWVzRVhUKDEsICZjb250ZXh0LnF1ZXJ5KTsKKyAgICAgICAgZ2xCZWdpblF1
ZXJ5RVhUKEdMX1RSQU5TRk9STV9GRUVEQkFDS19QUklNSVRJVkVTX1dSSVRURU4sIGNvbnRleHQu
cXVlcnkpOworCisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgICAgIGdsR2Vu
QnVmZmVycygxLCAmY29udGV4dC5idWZmZXIpOworICAgICAgICBnbEJpbmRCdWZmZXIoR0xfVFJB
TlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgY29udGV4dC5idWZmZXIpOworICAgICAgICBnbEJ1ZmZl
ckRhdGEoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgYnVmZmVyU2l6ZSAqIHNpemVvZihH
TGZsb2F0KSwKKyAgICAgICAgICAgICAgICAgICAgICZidWZmZXJJbml0aWFsRGF0YVswXSwgR0xf
RFlOQU1JQ19EUkFXKTsKKyAgICAgICAgZ2xCaW5kQnVmZmVyQmFzZShHTF9UUkFOU0ZPUk1fRkVF
REJBQ0tfQlVGRkVSLCAwLCBjb250ZXh0LmJ1ZmZlcik7CisKKyAgICAgICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7CisKKyAgICAgICAgLy8gRm9yIGVhY2ggcGFzcywgZHJhdyBiZXR3ZWVuIDAgYW5k
IG1heERyYXdTaXplIHByaW1pdGl2ZXMKKyAgICAgICAgZm9yIChhdXRvICZwcmltQ291bnQgOiBj
b250ZXh0LnByaW1pdGl2ZUNvdW50cykKKyAgICAgICAgeworICAgICAgICAgICAgcHJpbUNvdW50
ID0gcmFuZCgpICUgbWF4RHJhd1NpemU7CisgICAgICAgIH0KKworICAgICAgICBnbEJlZ2luVHJh
bnNmb3JtRmVlZGJhY2soR0xfUE9JTlRTKTsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBwYXNz
ID0gMDsgcGFzcyA8IHBhc3NDb3VudDsgcGFzcysrKQorICAgIHsKKyAgICAgICAgZm9yIChjb25z
dCBhdXRvICZjb250ZXh0IDogY29udGV4dHMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVnbE1h
a2VDdXJyZW50KGRpc3BsYXksIHN1cmZhY2UsIHN1cmZhY2UsIGNvbnRleHQuY29udGV4dCk7CisK
KyAgICAgICAgICAgIGdsRHJhd0FycmF5cyhHTF9QT0lOVFMsIDAsIHN0YXRpY19jYXN0PEdMc2l6
ZWk+KGNvbnRleHQucHJpbWl0aXZlQ291bnRzW3Bhc3NdKSk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBmb3IgKGNvbnN0IGF1dG8gJmNvbnRleHQgOiBjb250ZXh0cykKKyAgICB7CisgICAgICAg
IGVnbE1ha2VDdXJyZW50KGRpc3BsYXksIHN1cmZhY2UsIHN1cmZhY2UsIGNvbnRleHQuY29udGV4
dCk7CisKKyAgICAgICAgZ2xFbmRUcmFuc2Zvcm1GZWVkYmFjaygpOworCisgICAgICAgIGdsRW5k
UXVlcnlFWFQoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFTik7CisKKyAg
ICAgICAgR0x1aW50IHJlc3VsdCA9IDA7CisgICAgICAgIGdsR2V0UXVlcnlPYmplY3R1aXZFWFQo
Y29udGV4dC5xdWVyeSwgR0xfUVVFUllfUkVTVUxUX0VYVCwgJnJlc3VsdCk7CisKKyAgICAgICAg
RVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgc2l6ZV90IHRvdGFsUHJpbUNvdW50ID0g
MDsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvICZwcmltQ291bnQgOiBjb250ZXh0LnByaW1pdGl2
ZUNvdW50cykKKyAgICAgICAgeworICAgICAgICAgICAgdG90YWxQcmltQ291bnQgKz0gcHJpbUNv
dW50OworICAgICAgICB9CisgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxHTHVpbnQ+KHRv
dGFsUHJpbUNvdW50KSwgcmVzdWx0KTsKKworICAgICAgICBjb25zdCBmbG9hdCAqYnVmZmVyRGF0
YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQgKj4oZ2xNYXBCdWZmZXJSYW5nZSgKKyAgICAgICAg
ICAgIEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIGJ1ZmZlclNpemUgKiBzaXplb2Yo
R0xmbG9hdCksIEdMX01BUF9SRUFEX0JJVCkpOworCisgICAgICAgIHNpemVfdCBjdXJCdWZmZXJJ
bmRleCA9IDA7CisgICAgICAgIGZvciAoY29uc3QgYXV0byAmcHJpbUNvdW50IDogY29udGV4dC5w
cmltaXRpdmVDb3VudHMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IHByaW0g
PSAwOyBwcmltIDwgcHJpbUNvdW50OyBwcmltKyspCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgRVhQRUNUX0VRKGJ1ZmZlckRhdGFbY3VyQnVmZmVySW5kZXhdLCBwcmltICsgMSk7Cisg
ICAgICAgICAgICAgICAgY3VyQnVmZmVySW5kZXgrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgIHdoaWxlIChjdXJCdWZmZXJJbmRleCA8IGJ1ZmZlclNpemUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShidWZmZXJEYXRhW2N1ckJ1ZmZlckluZGV4XSwgMC4w
Zik7CisgICAgICAgICAgICBjdXJCdWZmZXJJbmRleCsrOworICAgICAgICB9CisKKyAgICAgICAg
Z2xVbm1hcEJ1ZmZlcihHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSKTsKKyAgICB9CisKKyAg
ICBlZ2xNYWtlQ3VycmVudChkaXNwbGF5LCBzdXJmYWNlLCBzdXJmYWNlLCB3aW5kb3ctPmdldENv
bnRleHQoKSk7CisKKyAgICBmb3IgKGF1dG8gJmNvbnRleHQgOiBjb250ZXh0cykKKyAgICB7Cisg
ICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQuY29udGV4dCk7CisgICAg
ICAgIGNvbnRleHQuY29udGV4dCA9IEVHTF9OT19DT05URVhUOworICAgIH0KK30KKworLy8gVGVz
dCB0aGF0IHdoZW4gdHdvIHZlYzJzIGFyZSBwYWNrZWQgaW50byB0aGUgc2FtZSByZWdpc3Rlciwg
d2UgY2FuIHN0aWxsIGNhcHR1cmUgYm90aCBvZiB0aGVtLgorVEVTVF9QKFRyYW5zZm9ybUZlZWRi
YWNrVGVzdCwgUGFja2luZ0J1ZykKK3sKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBXaXRoIHBvaW50
cyBhbmQgcmFzdGVyaXplciBkaXNjYXJkPworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2ZXJ0ZXhT
aGFkZXJTb3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJpbiB2
ZWMyIGluQXR0cmliMTtcbiIKKyAgICAgICAgImluIHZlYzIgaW5BdHRyaWIyO1xuIgorICAgICAg
ICAib3V0IHZlYzIgb3V0QXR0cmliMTtcbiIKKyAgICAgICAgIm91dCB2ZWMyIG91dEF0dHJpYjI7
XG4iCisgICAgICAgICJpbiB2ZWMyIHBvc2l0aW9uO1xuIgorICAgICAgICAidm9pZCBtYWluKCkg
eyIKKyAgICAgICAgIiAgb3V0QXR0cmliMSA9IGluQXR0cmliMTtcbiIKKyAgICAgICAgIiAgb3V0
QXR0cmliMiA9IGluQXR0cmliMjtcbiIKKyAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBv
c2l0aW9uLCAwLCAxKTtcbiIKKyAgICAgICAgIn0iOworCisgICAgY29uc3Qgc3RkOjpzdHJpbmcg
JmZyYWdtZW50U2hhZGVyU291cmNlID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAg
ICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgdmVjNCBjb2xv
cjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgY29sb3IgPSB2ZWM0
KDApO1xuIgorICAgICAgICAifSI7CisKKyAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdGZW
YXJ5aW5nczsKKyAgICB0ZlZhcnlpbmdzLnB1c2hfYmFjaygib3V0QXR0cmliMSIpOworICAgIHRm
VmFyeWluZ3MucHVzaF9iYWNrKCJvdXRBdHRyaWIyIik7CisKKyAgICBtUHJvZ3JhbSA9IENvbXBp
bGVQcm9ncmFtV2l0aFRyYW5zZm9ybUZlZWRiYWNrKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21l
bnRTaGFkZXJTb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZlZhcnlpbmdzLCBHTF9JTlRFUkxFQVZFRF9BVFRSSUJTKTsKKyAgICBBU1NF
UlRfTkUoMHUsIG1Qcm9ncmFtKTsKKworICAgIGdsQmluZEJ1ZmZlcihHTF9UUkFOU0ZPUk1fRkVF
REJBQ0tfQlVGRkVSLCBtVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXIpOworICAgIGdsQnVmZmVyRGF0
YShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBzaXplb2YoVmVjdG9yMikgKiAyICogNiwg
bnVsbHB0ciwgR0xfU1RSRUFNX0RSQVcpOworCisgICAgZ2xCaW5kVHJhbnNmb3JtRmVlZGJhY2so
R0xfVFJBTlNGT1JNX0ZFRURCQUNLLCBtVHJhbnNmb3JtRmVlZGJhY2spOworICAgIGdsQmluZEJ1
ZmZlckJhc2UoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCwgbVRyYW5zZm9ybUZlZWRi
YWNrQnVmZmVyKTsKKworICAgIEdMaW50IGF0dHJpYjFMb2MgPSBnbEdldEF0dHJpYkxvY2F0aW9u
KG1Qcm9ncmFtLCAiaW5BdHRyaWIxIik7CisgICAgR0xpbnQgYXR0cmliMkxvYyA9IGdsR2V0QXR0
cmliTG9jYXRpb24obVByb2dyYW0sICJpbkF0dHJpYjIiKTsKKworICAgIFZlY3RvcjIgYXR0cmli
MURhdGFbXSA9IHtWZWN0b3IyKDEuMCwgMi4wKSwgVmVjdG9yMigzLjAsIDQuMCksIFZlY3RvcjIo
NS4wLCA2LjApfTsKKyAgICBWZWN0b3IyIGF0dHJpYjJEYXRhW10gPSB7VmVjdG9yMigxMS4wLCAx
Mi4wKSwgVmVjdG9yMigxMy4wLCAxNC4wKSwgVmVjdG9yMigxNS4wLCAxNi4wKX07CisKKyAgICBn
bEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGF0dHJpYjFMb2MpOworICAgIGdsRW5hYmxlVmVydGV4
QXR0cmliQXJyYXkoYXR0cmliMkxvYyk7CisKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoYXR0
cmliMUxvYywgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCBhdHRyaWIxRGF0YSk7CisgICAgZ2xW
ZXJ0ZXhBdHRyaWJQb2ludGVyKGF0dHJpYjJMb2MsIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwg
YXR0cmliMkRhdGEpOworCisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICBnbEJlZ2lu
VHJhbnNmb3JtRmVlZGJhY2soR0xfVFJJQU5HTEVTKTsKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwg
InBvc2l0aW9uIiwgMC41Zik7CisgICAgZ2xFbmRUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIGds
VXNlUHJvZ3JhbSgwKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIGNvbnN0IEdM
dm9pZCAqbWFwUG9pbnRlciA9CisgICAgICAgIGdsTWFwQnVmZmVyUmFuZ2UoR0xfVFJBTlNGT1JN
X0ZFRURCQUNLX0JVRkZFUiwgMCwgc2l6ZW9mKFZlY3RvcjIpICogMiAqIDYsIEdMX01BUF9SRUFE
X0JJVCk7CisgICAgQVNTRVJUX05FKG51bGxwdHIsIG1hcFBvaW50ZXIpOworCisgICAgY29uc3Qg
VmVjdG9yMiAqdmVjUG9pbnRlciA9IHN0YXRpY19jYXN0PGNvbnN0IFZlY3RvcjIgKj4obWFwUG9p
bnRlcik7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgdmVjdG9ySW5kZXggPSAwOyB2ZWN0b3JJbmRl
eCA8IDM7ICsrdmVjdG9ySW5kZXgpCisgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgc3RyZWFt
MUluZGV4ID0gdmVjdG9ySW5kZXggKiAyOworICAgICAgICB1bnNpZ25lZCBpbnQgc3RyZWFtMklu
ZGV4ID0gdmVjdG9ySW5kZXggKiAyICsgMTsKKyAgICAgICAgRVhQRUNUX0VRKGF0dHJpYjFEYXRh
W3ZlY3RvckluZGV4XSwgdmVjUG9pbnRlcltzdHJlYW0xSW5kZXhdKTsKKyAgICAgICAgRVhQRUNU
X0VRKGF0dHJpYjJEYXRhW3ZlY3RvckluZGV4XSwgdmVjUG9pbnRlcltzdHJlYW0ySW5kZXhdKTsK
KyAgICB9CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKK30KKworLy8gVGVzdCB0aGF0IHRy
YW5zZm9ybSBmZWVkYmFjayB2YXJ5aW5ncyB0aGF0IGNhbiBiZSBvcHRpbWl6ZWQgb3V0IHlldCBk
byBub3QgY2F1c2UgcHJvZ3JhbQorLy8gY29tcGlsYXRpb24gdG8gZmFpbAorVEVTVF9QKFRyYW5z
Zm9ybUZlZWRiYWNrVGVzdCwgT3B0aW1pemVkVmFyeWluZ3MpCit7CisgICAgY29uc3Qgc3RkOjpz
dHJpbmcgJnZlcnRleFNoYWRlclNvdXJjZSA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIK
KyAgICAgICAgImluIHZlYzQgYV92ZXJ0ZXg7XG4iCisgICAgICAgICJpbiB2ZWMzIGFfbm9ybWFs
OyBcbiIKKyAgICAgICAgIlxuIgorICAgICAgICAidW5pZm9ybSBUcmFuc2Zvcm1cbiIKKyAgICAg
ICAgIntcbiIKKyAgICAgICAgIiAgICBtYXQ0IHVfbW9kZWxWaWV3TWF0cml4O1xuIgorICAgICAg
ICAiICAgIG1hdDQgdV9wcm9qZWN0aW9uTWF0cml4O1xuIgorICAgICAgICAiICAgIG1hdDMgdV9u
b3JtYWxNYXRyaXg7XG4iCisgICAgICAgICJ9O1xuIgorICAgICAgICAiXG4iCisgICAgICAgICJv
dXQgdmVjMyBub3JtYWw7XG4iCisgICAgICAgICJvdXQgdmVjNCBlY1Bvc2l0aW9uO1xuIgorICAg
ICAgICAiXG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAg
ICAiICAgIG5vcm1hbCA9IG5vcm1hbGl6ZSh1X25vcm1hbE1hdHJpeCAqIGFfbm9ybWFsKTtcbiIK
KyAgICAgICAgIiAgICBlY1Bvc2l0aW9uID0gdV9tb2RlbFZpZXdNYXRyaXggKiBhX3ZlcnRleDtc
biIKKyAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHVfcHJvamVjdGlvbk1hdHJpeCAqIGVjUG9z
aXRpb247XG4iCisgICAgICAgICJ9XG4iOworCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdt
ZW50U2hhZGVyU291cmNlID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAi
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJcbiIKKyAgICAgICAgImluIHZl
YzMgbm9ybWFsO1xuIgorICAgICAgICAiaW4gdmVjNCBlY1Bvc2l0aW9uO1xuIgorICAgICAgICAi
XG4iCisgICAgICAgICJvdXQgdmVjNCBmcmFnQ29sb3I7XG4iCisgICAgICAgICJcbiIKKyAgICAg
ICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgZnJhZ0NvbG9y
ID0gdmVjNChub3JtYWwvMi4wK3ZlYzMoMC41KSwgMSk7XG4iCisgICAgICAgICJ9XG4iOworCisg
ICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHRmVmFyeWluZ3M7CisgICAgdGZWYXJ5aW5ncy5w
dXNoX2JhY2soIm5vcm1hbCIpOworICAgIHRmVmFyeWluZ3MucHVzaF9iYWNrKCJlY1Bvc2l0aW9u
Iik7CisKKyAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtV2l0aFRyYW5zZm9ybUZlZWRiYWNr
KHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZlZhcnlpbmdzLCBHTF9JTlRF
UkxFQVZFRF9BVFRSSUJTKTsKKyAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsKK30KKworLy8g
VGVzdCBhbiBlZGdlIGNhc2Ugd2hlcmUgdHdvIHZhcnlpbmdzIGFyZSB1bnJlZmVyZW5jZWQgaW4g
dGhlIGZyYWcgc2hhZGVyLgorVEVTVF9QKFRyYW5zZm9ybUZlZWRiYWNrVGVzdCwgVHdvVW5yZWZl
cmVuY2VkSW5GcmFnU2hhZGVyKQoreworICAgIC8vIFRPRE8oam1hZGlsbCk6IFdpdGggcG9pbnRz
IGFuZCByYXN0ZXJpemVyIGRpc2NhcmQ/CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZlcnRleFNo
YWRlclNvdXJjZSA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgImluIHZl
YzMgcG9zaXRpb247XG4iCisgICAgICAgICJvdXQgdmVjMyBvdXRBdHRyaWIxO1xuIgorICAgICAg
ICAib3V0IHZlYzMgb3V0QXR0cmliMjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHsiCisgICAg
ICAgICIgIG91dEF0dHJpYjEgPSBwb3NpdGlvbjtcbiIKKyAgICAgICAgIiAgb3V0QXR0cmliMiA9
IHBvc2l0aW9uO1xuIgorICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDEp
O1xuIgorICAgICAgICAifSI7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ21lbnRTaGFk
ZXJTb3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IGNvbG9yO1xuIgorICAgICAg
ICAiaW4gdmVjMyBvdXRBdHRyaWIxO1xuIgorICAgICAgICAiaW4gdmVjMyBvdXRBdHRyaWIyO1xu
IgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICBjb2xvciA9IHZlYzQoMCk7
XG4iCisgICAgICAgICJ9IjsKKworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB0ZlZhcnlp
bmdzOworICAgIHRmVmFyeWluZ3MucHVzaF9iYWNrKCJvdXRBdHRyaWIxIik7CisgICAgdGZWYXJ5
aW5ncy5wdXNoX2JhY2soIm91dEF0dHJpYjIiKTsKKworICAgIG1Qcm9ncmFtID0gQ29tcGlsZVBy
b2dyYW1XaXRoVHJhbnNmb3JtRmVlZGJhY2sodmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNo
YWRlclNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRmVmFyeWluZ3MsIEdMX0lOVEVSTEVBVkVEX0FUVFJJQlMpOworICAgIEFTU0VSVF9O
RSgwdSwgbVByb2dyYW0pOworCisgICAgZ2xCaW5kQnVmZmVyKEdMX1RSQU5TRk9STV9GRUVEQkFD
S19CVUZGRVIsIG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcik7CisgICAgZ2xCdWZmZXJEYXRhKEdM
X1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIHNpemVvZihWZWN0b3IzKSAqIDIgKiA2LCBudWxs
cHRyLCBHTF9TVFJFQU1fRFJBVyk7CisKKyAgICBnbEJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHTF9U
UkFOU0ZPUk1fRkVFREJBQ0ssIG1UcmFuc2Zvcm1GZWVkYmFjayk7CisgICAgZ2xCaW5kQnVmZmVy
QmFzZShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAwLCBtVHJhbnNmb3JtRmVlZGJhY2tC
dWZmZXIpOworCisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICBnbEJlZ2luVHJhbnNm
b3JtRmVlZGJhY2soR0xfVFJJQU5HTEVTKTsKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0
aW9uIiwgMC41Zik7CisgICAgZ2xFbmRUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIGdsVXNlUHJv
Z3JhbSgwKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIGNvbnN0IEdMdm9pZCAq
bWFwUG9pbnRlciA9CisgICAgICAgIGdsTWFwQnVmZmVyUmFuZ2UoR0xfVFJBTlNGT1JNX0ZFRURC
QUNLX0JVRkZFUiwgMCwgc2l6ZW9mKFZlY3RvcjIpICogMiAqIDYsIEdMX01BUF9SRUFEX0JJVCk7
CisgICAgQVNTRVJUX05FKG51bGxwdHIsIG1hcFBvaW50ZXIpOworCisgICAgY29uc3QgYXV0byAm
cXVhZFZlcnRpY2VzID0gR2V0UXVhZFZlcnRpY2VzKCk7CisKKyAgICBjb25zdCBWZWN0b3IzICp2
ZWNQb2ludGVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgVmVjdG9yMyAqPihtYXBQb2ludGVyKTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGludCB2ZWN0b3JJbmRleCA9IDA7IHZlY3RvckluZGV4IDwgMzsgKyt2
ZWN0b3JJbmRleCkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGludCBzdHJlYW0xSW5kZXggPSB2
ZWN0b3JJbmRleCAqIDI7CisgICAgICAgIHVuc2lnbmVkIGludCBzdHJlYW0ySW5kZXggPSB2ZWN0
b3JJbmRleCAqIDIgKyAxOworICAgICAgICBFWFBFQ1RfRVEocXVhZFZlcnRpY2VzW3ZlY3Rvcklu
ZGV4XSwgdmVjUG9pbnRlcltzdHJlYW0xSW5kZXhdKTsKKyAgICAgICAgRVhQRUNUX0VRKHF1YWRW
ZXJ0aWNlc1t2ZWN0b3JJbmRleF0sIHZlY1BvaW50ZXJbc3RyZWFtMkluZGV4XSk7CisgICAgfQor
CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9CitjbGFzcyBUcmFuc2Zvcm1GZWVkYmFja0xp
ZmV0aW1lVGVzdCA6IHB1YmxpYyBUcmFuc2Zvcm1GZWVkYmFja1Rlc3QKK3sKKyAgcHJvdGVjdGVk
OgorICAgIFRyYW5zZm9ybUZlZWRiYWNrTGlmZXRpbWVUZXN0KCkgOiBtVmVydGV4QXJyYXkoMCkg
e30KKworICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0
OjpTZXRVcCgpOworCisgICAgICAgIGdsR2VuVmVydGV4QXJyYXlzKDEsICZtVmVydGV4QXJyYXkp
OworICAgICAgICBnbEJpbmRWZXJ0ZXhBcnJheShtVmVydGV4QXJyYXkpOworCisgICAgICAgIHN0
ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB0ZlZhcnlpbmdzOworICAgICAgICB0ZlZhcnlpbmdzLnB1
c2hfYmFjaygiZ2xfUG9zaXRpb24iKTsKKyAgICAgICAgY29tcGlsZURlZmF1bHRQcm9ncmFtKHRm
VmFyeWluZ3MsIEdMX1NFUEFSQVRFX0FUVFJJQlMpOworCisgICAgICAgIGdsR2VuQnVmZmVycygx
LCAmbVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyKTsKKyAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX1RS
QU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcik7CisgICAg
ICAgIGdsQnVmZmVyRGF0YShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBtVHJhbnNmb3Jt
RmVlZGJhY2tCdWZmZXJTaXplLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgR0xfRFlOQU1J
Q19EUkFXKTsKKyAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZG
RVIsIDApOworCisgICAgICAgIGdsR2VuVHJhbnNmb3JtRmVlZGJhY2tzKDEsICZtVHJhbnNmb3Jt
RmVlZGJhY2spOworCisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIH0KKworICAg
IHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgZ2xEZWxldGVWZXJ0ZXhB
cnJheXMoMSwgJm1WZXJ0ZXhBcnJheSk7CisgICAgICAgIFRyYW5zZm9ybUZlZWRiYWNrVGVzdDo6
VGVhckRvd24oKTsKKyAgICB9CisKKyAgICBHTHVpbnQgbVZlcnRleEFycmF5OworfTsKKworLy8g
VGVzdHMgYSBidWcgd2l0aCBzdGF0ZSBzeW5jaW5nIGFuZCBkZWxldGVkIHRyYW5zZm9ybSBmZWVk
YmFjayBidWZmZXJzLgorVEVTVF9QKFRyYW5zZm9ybUZlZWRiYWNrTGlmZXRpbWVUZXN0LCBEZWxl
dGVkQnVmZmVyKQoreworICAgIC8vIEZpcnN0IHN0cmVhbSB2ZXJ0ZXggZGF0YSB0byBtVHJhbnNm
b3JtRmVlZGJhY2tCdWZmZXIuCisgICAgZ2xCaW5kVHJhbnNmb3JtRmVlZGJhY2soR0xfVFJBTlNG
T1JNX0ZFRURCQUNLLCBtVHJhbnNmb3JtRmVlZGJhY2spOworICAgIGdsQmluZEJ1ZmZlckJhc2Uo
R0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCwgbVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVy
KTsKKworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisKKyAgICBnbEJlZ2luVHJhbnNmb3Jt
RmVlZGJhY2soR0xfVFJJQU5HTEVTKTsKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9u
IiwgMC41ZiwgMS4wZiwgdHJ1ZSk7CisgICAgZ2xFbmRUcmFuc2Zvcm1GZWVkYmFjaygpOworCisg
ICAgZ2xCaW5kVHJhbnNmb3JtRmVlZGJhY2soR0xfVFJBTlNGT1JNX0ZFRURCQUNLLCAwKTsKKwor
ICAgIC8vIFRPRE8oam1hZGlsbCk6IFJlbW92ZSB0aGlzIHdoZW4gaHR0cDovL2FuZ2xlYnVnLmNv
bS8xMzUxIGlzIGZpeGVkLgorICAgIGdsQmluZFZlcnRleEFycmF5KDApOworICAgIGRyYXdRdWFk
KG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICBnbEJpbmRWZXJ0ZXhBcnJheSgxKTsK
KworICAgIC8vIE5leHQsIGRyYXcgdmVydGljZXMgd2l0aCBtVHJhbnNmb3JtRmVlZGJhY2tCdWZm
ZXIuIFRoaXMgd2lsbCBsaW5rIHRvIG1WZXJ0ZXhBcnJheS4KKyAgICBnbEJpbmRCdWZmZXIoR0xf
QVJSQVlfQlVGRkVSLCBtVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXIpOworICAgIEdMaW50IGxvYyA9
IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJwb3NpdGlvbiIpOworICAgIEFTU0VSVF9O
RSgtMSwgbG9jKTsKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIobG9jLCAxLCBHTF9GTE9BVCwg
R0xfRkFMU0UsIDQsIG51bGxwdHIpOworICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkobG9j
KTsKKyAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCAwKTsKKyAgICBnbERyYXdBcnJh
eXMoR0xfVFJJQU5HTEVTLCAwLCAzKTsKKworICAgIC8vIERlbGV0ZSByZXNvdXJjZXMsIG1ha2lu
ZyBhIHN0cmFuZGVkIHBvaW50ZXIgdG8gbVZlcnRleEFycmF5IGluIG1UcmFuc2Zvcm1GZWVkYmFj
a0J1ZmZlci4KKyAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZl
cik7CisgICAgbVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyID0gMDsKKyAgICBnbERlbGV0ZVZlcnRl
eEFycmF5cygxLCAmbVZlcnRleEFycmF5KTsKKyAgICBtVmVydGV4QXJyYXkgPSAwOworCisgICAg
Ly8gVGhlbiBkcmF3IGFnYWluIHdpdGggdHJhbnNmb3JtIGZlZWRiYWNrLCBkZXJlZmVyZW5jaW5n
IHRoZSBzdHJhbmRlZCBwb2ludGVyLgorICAgIGdsQmluZFRyYW5zZm9ybUZlZWRiYWNrKEdMX1RS
QU5TRk9STV9GRUVEQkFDSywgbVRyYW5zZm9ybUZlZWRiYWNrKTsKKyAgICBnbEJlZ2luVHJhbnNm
b3JtRmVlZGJhY2soR0xfVFJJQU5HTEVTKTsKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0
aW9uIiwgMC41ZiwgMS4wZiwgdHJ1ZSk7CisgICAgZ2xFbmRUcmFuc2Zvcm1GZWVkYmFjaygpOwor
ICAgIGdsQmluZFRyYW5zZm9ybUZlZWRiYWNrKEdMX1RSQU5TRk9STV9GRUVEQkFDSywgMCk7CisK
KyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKK30KKworLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdo
aWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9y
IHZlcnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KK0FOR0xFX0lOU1RB
TlRJQVRFX1RFU1QoVHJhbnNmb3JtRmVlZGJhY2tUZXN0LCBFUzNfRDNEMTEoKSwgRVMzX09QRU5H
TCgpLCBFUzNfT1BFTkdMRVMoKSk7CitBTkdMRV9JTlNUQU5USUFURV9URVNUKFRyYW5zZm9ybUZl
ZWRiYWNrTGlmZXRpbWVUZXN0LCBFUzNfRDNEMTEoKSwgRVMzX09QRU5HTCgpLCBFUzNfT1BFTkdM
RVMoKSk7CisKK30gIC8vIGFub255bW91cyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Vbmlmb3JtQnVmZmVyVGVzdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1VuaWZv
cm1CdWZmZXJUZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvZ2xfdGVzdHMvVW5pZm9ybUJ1ZmZlclRlc3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNTkwIEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdM
RVRlc3QuaCIKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL2dsX3JhaWkuaCIKKwordXNpbmcgbmFtZXNw
YWNlIGFuZ2xlOworCituYW1lc3BhY2UKK3sKKworY2xhc3MgVW5pZm9ybUJ1ZmZlclRlc3QgOiBw
dWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBVbmlmb3JtQnVmZmVyVGVzdCgp
CisgICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOworICAgICAgICBzZXRXaW5kb3dI
ZWlnaHQoMTI4KTsKKyAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKKyAgICAgICAgc2V0Q29u
ZmlnR3JlZW5CaXRzKDgpOworICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKKyAgICAgICAg
c2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgp
CisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7CisKKyAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQorICAgICAgICAoICAg
I3ZlcnNpb24gMzAwIGVzXG4KKyAgICAgICAgICAgIGluIHZlYzQgcG9zaXRpb247CisgICAgICAg
ICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsX1Bvc2l0
aW9uID0gcG9zaXRpb247CisgICAgICAgICAgICB9CisgICAgICAgICk7CisgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQorICAgICAg
ICAoICAgI3ZlcnNpb24gMzAwIGVzXG4KKyAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9h
dDsKKyAgICAgICAgICAgIHVuaWZvcm0gdW5pIHsKKyAgICAgICAgICAgICAgICB2ZWM0IGNvbG9y
OworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgb3V0IHZlYzQgZnJhZ0NvbG9yOworCisg
ICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZy
YWdDb2xvciA9IGNvbG9yOworICAgICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAgIG1Q
cm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRl
clNvdXJjZSk7CisgICAgICAgIEFTU0VSVF9ORShtUHJvZ3JhbSwgMHUpOworCisgICAgICAgIG1V
bmlmb3JtQnVmZmVySW5kZXggPSBnbEdldFVuaWZvcm1CbG9ja0luZGV4KG1Qcm9ncmFtLCAidW5p
Iik7CisgICAgICAgIEFTU0VSVF9ORShtVW5pZm9ybUJ1ZmZlckluZGV4LCAtMSk7CisKKyAgICAg
ICAgZ2xHZW5CdWZmZXJzKDEsICZtVW5pZm9ybUJ1ZmZlcik7CisKKyAgICAgICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKKyAgICB7
CisgICAgICAgIGdsRGVsZXRlQnVmZmVycygxLCAmbVVuaWZvcm1CdWZmZXIpOworICAgICAgICBn
bERlbGV0ZVByb2dyYW0obVByb2dyYW0pOworICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7
CisgICAgfQorCisgICAgR0x1aW50IG1Qcm9ncmFtOworICAgIEdMaW50IG1Vbmlmb3JtQnVmZmVy
SW5kZXg7CisgICAgR0x1aW50IG1Vbmlmb3JtQnVmZmVyOworfTsKKworLy8gQmFzaWMgVUJPIGZ1
bmN0aW9uYWxpdHkuCitURVNUX1AoVW5pZm9ybUJ1ZmZlclRlc3QsIFNpbXBsZSkKK3sKKyAgICBn
bENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAgIGZsb2F0IGZsb2F0RGF0YVs0XSA9IHsw
LjVmLCAwLjc1ZiwgMC4yNWYsIDEuMGZ9OworCisgICAgZ2xCaW5kQnVmZmVyKEdMX1VOSUZPUk1f
QlVGRkVSLCBtVW5pZm9ybUJ1ZmZlcik7CisgICAgZ2xCdWZmZXJEYXRhKEdMX1VOSUZPUk1fQlVG
RkVSLCBzaXplb2YoZmxvYXQpICogNCwgZmxvYXREYXRhLCBHTF9TVEFUSUNfRFJBVyk7CisKKyAg
ICBnbEJpbmRCdWZmZXJCYXNlKEdMX1VOSUZPUk1fQlVGRkVSLCAwLCBtVW5pZm9ybUJ1ZmZlcik7
CisKKyAgICBnbFVuaWZvcm1CbG9ja0JpbmRpbmcobVByb2dyYW0sIG1Vbmlmb3JtQnVmZmVySW5k
ZXgsIDApOworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9QSVhFTF9ORUFSKDAsIDAsIDEyOCwg
MTkxLCA2NCwgMjU1LCAxKTsKK30KKworLy8gVGVzdCB0aGF0IHVzaW5nIGEgVUJPIHdpdGggYSBu
b24temVybyBvZmZzZXQgYW5kIHNpemUgYWN0dWFsbHkgd29ya3MuCisvLyBUaGUgZmlyc3Qgc3Rl
cCBvZiB0aGlzIHRlc3QgcmVuZGVycyBhIGNvbG9yIGZyb20gYSBVQk8gd2l0aCBhIHplcm8gb2Zm
c2V0LgorLy8gVGhlIHNlY29uZCBzdGVwIHJlbmRlcnMgYSBjb2xvciBmcm9tIGEgVUJPIHdpdGgg
YSBub24temVybyBvZmZzZXQuCitURVNUX1AoVW5pZm9ybUJ1ZmZlclRlc3QsIFVuaWZvcm1CdWZm
ZXJSYW5nZSkKK3sKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBGaWd1cmUgb3V0IHdoeSB0aGlzIGZh
aWxzIG9uIEludGVsLgorICAgIGlmIChJc0ludGVsKCkgJiYgSXNEM0QxMSgpKQorICAgIHsKKyAg
ICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgRDNEMTEuIiA8PCBzdGQ6
OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbnQgcHggPSBnZXRXaW5kb3dX
aWR0aCgpIC8gMjsKKyAgICBpbnQgcHkgPSBnZXRXaW5kb3dIZWlnaHQoKSAvIDI7CisKKyAgICAv
LyBRdWVyeSB0aGUgdW5pZm9ybSBidWZmZXIgYWxpZ25tZW50IHJlcXVpcmVtZW50CisgICAgR0xp
bnQgYWxpZ25tZW50OworICAgIGdsR2V0SW50ZWdlcnYoR0xfVU5JRk9STV9CVUZGRVJfT0ZGU0VU
X0FMSUdOTUVOVCwgJmFsaWdubWVudCk7CisKKyAgICBHTGludDY0IG1heFVuaWZvcm1CbG9ja1Np
emU7CisgICAgZ2xHZXRJbnRlZ2VyNjR2KEdMX01BWF9VTklGT1JNX0JMT0NLX1NJWkUsICZtYXhV
bmlmb3JtQmxvY2tTaXplKTsKKyAgICBpZiAoYWxpZ25tZW50ID49IG1heFVuaWZvcm1CbG9ja1Np
emUpCisgICAgeworICAgICAgICAvLyBBTkdMRSBkb2Vzbid0IGltcGxlbWVudCBVQk8gb2Zmc2V0
cyBmb3IgdGhpcyBwbGF0Zm9ybS4KKyAgICAgICAgLy8gSWdub3JlIHRoZSB0ZXN0IGNhc2UuCisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAg
IC8vIExldCdzIGNyZWF0ZSBhIGJ1ZmZlciB3aGljaCBjb250YWlucyB0d28gdmVjNC4KKyAgICBH
THVpbnQgdmVjNFNpemUgPSA0ICogc2l6ZW9mKGZsb2F0KTsKKyAgICBHTHVpbnQgc3RyaWRlID0g
MDsKKyAgICBkbworICAgIHsKKyAgICAgICAgc3RyaWRlICs9IGFsaWdubWVudDsKKyAgICB9Cisg
ICAgd2hpbGUgKHN0cmlkZSA8IHZlYzRTaXplKTsKKworICAgIHN0ZDo6dmVjdG9yPGNoYXI+IHYo
MiAqIHN0cmlkZSk7CisgICAgZmxvYXQgKmZpcnN0ID0gcmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+
KHYuZGF0YSgpKTsKKyAgICBmbG9hdCAqc2Vjb25kID0gcmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+
KHYuZGF0YSgpICsgc3RyaWRlKTsKKworICAgIGZpcnN0WzBdID0gMTAuZiAvIDI1NS5mOworICAg
IGZpcnN0WzFdID0gMjAuZiAvIDI1NS5mOworICAgIGZpcnN0WzJdID0gMzAuZiAvIDI1NS5mOwor
ICAgIGZpcnN0WzNdID0gNDAuZiAvIDI1NS5mOworCisgICAgc2Vjb25kWzBdID0gMTEwLmYgLyAy
NTUuZjsKKyAgICBzZWNvbmRbMV0gPSAxMjAuZiAvIDI1NS5mOworICAgIHNlY29uZFsyXSA9IDEz
MC5mIC8gMjU1LmY7CisgICAgc2Vjb25kWzNdID0gMTQwLmYgLyAyNTUuZjsKKworICAgIGdsQmlu
ZEJ1ZmZlcihHTF9VTklGT1JNX0JVRkZFUiwgbVVuaWZvcm1CdWZmZXIpOworICAgIC8vIFdlIHVz
ZSBvbiBwdXJwb3NlIGEgc2l6ZSB3aGljaCBpcyBub3QgYSBtdWx0aXBsZSBvZiB0aGUgYWxpZ25t
ZW50LgorICAgIGdsQnVmZmVyRGF0YShHTF9VTklGT1JNX0JVRkZFUiwgc3RyaWRlICsgdmVjNFNp
emUsIHYuZGF0YSgpLCBHTF9TVEFUSUNfRFJBVyk7CisKKyAgICBnbFVuaWZvcm1CbG9ja0JpbmRp
bmcobVByb2dyYW0sIG1Vbmlmb3JtQnVmZmVySW5kZXgsIDApOworCisgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7CisKKyAgICAvLyBCaW5kIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZSB1bmlmb3JtIGJ1
ZmZlciBhbmQgZHJhdworICAgIC8vIFVzZSBhIHNpemUgd2hpY2ggaXMgc21hbGxlciB0aGFuIHRo
ZSBhbGlnbm1lbnQgdG8gY2hlY2sKKyAgICAvLyB0byBjaGVjayB0aGF0IHRoaXMgY2FzZSBpcyBo
YW5kbGUgY29ycmVjdGx5IGluIHRoZSBjb252ZXJzaW9uIHRvIDExLjEuCisgICAgZ2xCaW5kQnVm
ZmVyUmFuZ2UoR0xfVU5JRk9STV9CVUZGRVIsIDAsIG1Vbmlmb3JtQnVmZmVyLCAwLCB2ZWM0U2l6
ZSk7CisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9QSVhFTF9FUShweCwgcHksIDEwLCAyMCwgMzAs
IDQwKTsKKworICAgIC8vIEJpbmQgdGhlIHNlY29uZCBwYXJ0IG9mIHRoZSB1bmlmb3JtIGJ1ZmZl
ciBhbmQgZHJhdworICAgIC8vIEZ1cnRoZXJtb3JlIHRoZSBEM0QxMS4xIGJhY2tlbmQgd2lsbCBp
bnRlcm5hbGx5IHJvdW5kIHRoZSB2ZWM0U2l6ZSAoMTYgYnl0ZXMpIHRvIGEgc3RyaWRlICgyNTYg
Ynl0ZXMpCisgICAgLy8gaGVuY2UgaXQgd2lsbCB0cnkgdG8gbWFwIHRoZSByYW5nZSBbc3RyaWRl
LCAyICogc3RyaWRlXSB3aGljaCBpcworICAgIC8vIG91dC1vZi1ib3VuZCBvZiB0aGUgYnVmZmVy
IGJ1ZmZlclNpemUgPSBzdHJpZGUgKyB2ZWM0U2l6ZSA8IDIgKiBzdHJpZGUuCisgICAgLy8gRW5z
dXJlIHRoYXQgdGhpcyBiZWhhdmlvdXIgd29ya3MuCisgICAgZ2xCaW5kQnVmZmVyUmFuZ2UoR0xf
VU5JRk9STV9CVUZGRVIsIDAsIG1Vbmlmb3JtQnVmZmVyLCBzdHJpZGUsIHZlYzRTaXplKTsKKyAg
ICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7CisgICAgRVhQRUNUX1BJWEVMX0VRKHB4LCBweSwgMTEwLCAxMjAsIDEzMCwgMTQw
KTsKK30KKworLy8gVGVzdCB1bmlmb3JtIGJsb2NrIGJpbmRpbmdzLgorVEVTVF9QKFVuaWZvcm1C
dWZmZXJUZXN0LCBVbmlmb3JtQnVmZmVyQmluZGluZ3MpCit7CisgICAgaW50IHB4ID0gZ2V0V2lu
ZG93V2lkdGgoKSAvIDI7CisgICAgaW50IHB5ID0gZ2V0V2luZG93SGVpZ2h0KCkgLyAyOworCisg
ICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBMZXQncyBjcmVhdGUgYSBidWZmZXIg
d2hpY2ggY29udGFpbnMgb25lIHZlYzQuCisgICAgR0x1aW50IHZlYzRTaXplID0gNCAqIHNpemVv
ZihmbG9hdCk7CisgICAgc3RkOjp2ZWN0b3I8Y2hhcj4gdih2ZWM0U2l6ZSk7CisgICAgZmxvYXQg
KmZpcnN0ID0gcmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KHYuZGF0YSgpKTsKKworICAgIGZpcnN0
WzBdID0gMTAuZiAvIDI1NS5mOworICAgIGZpcnN0WzFdID0gMjAuZiAvIDI1NS5mOworICAgIGZp
cnN0WzJdID0gMzAuZiAvIDI1NS5mOworICAgIGZpcnN0WzNdID0gNDAuZiAvIDI1NS5mOworCisg
ICAgZ2xCaW5kQnVmZmVyKEdMX1VOSUZPUk1fQlVGRkVSLCBtVW5pZm9ybUJ1ZmZlcik7CisgICAg
Z2xCdWZmZXJEYXRhKEdMX1VOSUZPUk1fQlVGRkVSLCB2ZWM0U2l6ZSwgdi5kYXRhKCksIEdMX1NU
QVRJQ19EUkFXKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gVHJ5IHRv
IGJpbmQgdGhlIGJ1ZmZlciB0byBiaW5kaW5nIHBvaW50IDIKKyAgICBnbFVuaWZvcm1CbG9ja0Jp
bmRpbmcobVByb2dyYW0sIG1Vbmlmb3JtQnVmZmVySW5kZXgsIDIpOworICAgIGdsQmluZEJ1ZmZl
ckJhc2UoR0xfVU5JRk9STV9CVUZGRVIsIDIsIG1Vbmlmb3JtQnVmZmVyKTsKKyAgICBkcmF3UXVh
ZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
CisgICAgRVhQRUNUX1BJWEVMX0VRKHB4LCBweSwgMTAsIDIwLCAzMCwgNDApOworCisgICAgLy8g
Q2xlYXIgdGhlIGZyYW1lYnVmZmVyCisgICAgZ2xDbGVhckNvbG9yKDAuMCwgMC4wLCAwLjAsIDAu
MCk7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBFWFBFQ1RfUElYRUxf
RVEocHgsIHB5LCAwLCAwLCAwLCAwKTsKKworICAgIC8vIFRyeSB0byBiaW5kIHRoZSBidWZmZXIg
dG8gYW5vdGhlciBiaW5kaW5nIHBvaW50CisgICAgZ2xVbmlmb3JtQmxvY2tCaW5kaW5nKG1Qcm9n
cmFtLCBtVW5pZm9ybUJ1ZmZlckluZGV4LCA1KTsKKyAgICBnbEJpbmRCdWZmZXJCYXNlKEdMX1VO
SUZPUk1fQlVGRkVSLCA1LCBtVW5pZm9ybUJ1ZmZlcik7CisgICAgZHJhd1F1YWQobVByb2dyYW0s
ICJwb3NpdGlvbiIsIDAuNWYpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVD
VF9QSVhFTF9FUShweCwgcHksIDEwLCAyMCwgMzAsIDQwKTsKK30KKworLy8gVGVzdCB0aGF0IEFO
R0xFIGhhbmRsZXMgdXNlZCBidXQgdW5ib3VuZCBVQk8uCisvLyBUT0RPOiBBIHRlc3QgY2FzZSBz
aG91bGRuJ3QgZGVwZW5kIG9uIHRoZSBlcnJvciBjb2RlIG9mIGFuIHVuZGVmaW5lZCBiZWhhdmlv
dXIuIE1vdmUgdGhpcyB0byB1bml0IHRlc3RzIG9mIHRoZSB2YWxpZGF0aW9uIGxheWVyLgorVEVT
VF9QKFVuaWZvcm1CdWZmZXJUZXN0LCBVbmJvdW5kVW5pZm9ybUJ1ZmZlcikKK3sKKyAgICBnbFVu
aWZvcm1CbG9ja0JpbmRpbmcobVByb2dyYW0sIG1Vbmlmb3JtQnVmZmVySW5kZXgsIDApOworICAg
IGdsQmluZEJ1ZmZlckJhc2UoR0xfVU5JRk9STV9CVUZGRVIsIDAsIDApOworICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworCisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYp
OworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKKy8vIFVw
ZGF0ZSBhIFVCTyBtYW55IHRpbWUgYW5kIHZlcmlmeSB0aGF0IEFOR0xFIHVzZXMgdGhlIGxhdGVz
dCB2ZXJzaW9uIG9mIHRoZSBkYXRhLgorLy8gaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9hbmds
ZXByb2plY3QvaXNzdWVzL2RldGFpbD9pZD05NjUKK1RFU1RfUChVbmlmb3JtQnVmZmVyVGVzdCwg
VW5pZm9ybUJ1ZmZlck1hbnlVcGRhdGVzKQoreworICAgIC8vIFRPRE8oam1hZGlsbCk6IEZpZ3Vy
ZSBvdXQgd2h5IHRoaXMgZmFpbHMgb24gSW50ZWwgT3BlbkdMLgorICAgIGlmIChJc0ludGVsKCkg
JiYgSXNPcGVuR0woKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVk
IG9uIEludGVsIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGludCBweCA9IGdldFdpbmRvd1dpZHRoKCkgLyAyOworICAgIGludCBweSA9IGdldFdp
bmRvd0hlaWdodCgpIC8gMjsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgZmxv
YXQgZGF0YVs0XTsKKworICAgIGdsQmluZEJ1ZmZlcihHTF9VTklGT1JNX0JVRkZFUiwgbVVuaWZv
cm1CdWZmZXIpOworICAgIGdsQnVmZmVyRGF0YShHTF9VTklGT1JNX0JVRkZFUiwgc2l6ZW9mKGRh
dGEpLCBOVUxMLCBHTF9EWU5BTUlDX0RSQVcpOworICAgIGdsVW5pZm9ybUJsb2NrQmluZGluZyht
UHJvZ3JhbSwgbVVuaWZvcm1CdWZmZXJJbmRleCwgMCk7CisgICAgZ2xCaW5kQnVmZmVyQmFzZShH
TF9VTklGT1JNX0JVRkZFUiwgMCwgbVVuaWZvcm1CdWZmZXIpOworCisgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7CisKKyAgICAvLyBSZXBldGVhZGx5IHVwZGF0ZSB0aGUgZGF0YSBhbmQgZHJhdwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTA7ICsraSkKKyAgICB7CisgICAgICAgIGRhdGFb
MF0gPSAoaSArIDEwLmYpIC8gMjU1LmY7CisgICAgICAgIGRhdGFbMV0gPSAoaSArIDIwLmYpIC8g
MjU1LmY7CisgICAgICAgIGRhdGFbMl0gPSAoaSArIDMwLmYpIC8gMjU1LmY7CisgICAgICAgIGRh
dGFbM10gPSAoaSArIDQwLmYpIC8gMjU1LmY7CisKKyAgICAgICAgZ2xCdWZmZXJTdWJEYXRhKEdM
X1VOSUZPUk1fQlVGRkVSLCAwLCBzaXplb2YoZGF0YSksIGRhdGEpOworCisgICAgICAgIGRyYXdR
dWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICAgICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7CisgICAgICAgIEVYUEVDVF9QSVhFTF9FUShweCwgcHksIGkgKyAxMCwgaSArIDIwLCBp
ICsgMzAsIGkgKyA0MCk7CisgICAgfQorfQorCisvLyBVc2UgYSBsYXJnZSBudW1iZXIgb2YgYnVm
ZmVyIHJhbmdlcyAoY29tcGFyZWQgdG8gdGhlIGFjdHVhbCBzaXplIG9mIHRoZSBVQk8pCitURVNU
X1AoVW5pZm9ybUJ1ZmZlclRlc3QsIE1hbnlVbmlmb3JtQnVmZmVyUmFuZ2UpCit7CisgICAgLy8g
VE9ETyhqbWFkaWxsKTogRmlndXJlIG91dCB3aHkgdGhpcyBmYWlscyBvbiBJbnRlbC4KKyAgICBp
ZiAoSXNJbnRlbCgpICYmIElzRDNEMTEoKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAi
VGVzdCBza2lwcGVkIG9uIEludGVsIEQzRDExLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGludCBweCA9IGdldFdpbmRvd1dpZHRoKCkgLyAyOworICAgIGludCBw
eSA9IGdldFdpbmRvd0hlaWdodCgpIC8gMjsKKworICAgIC8vIFF1ZXJ5IHRoZSB1bmlmb3JtIGJ1
ZmZlciBhbGlnbm1lbnQgcmVxdWlyZW1lbnQKKyAgICBHTGludCBhbGlnbm1lbnQ7CisgICAgZ2xH
ZXRJbnRlZ2VydihHTF9VTklGT1JNX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5ULCAmYWxpZ25tZW50
KTsKKworICAgIEdMaW50NjQgbWF4VW5pZm9ybUJsb2NrU2l6ZTsKKyAgICBnbEdldEludGVnZXI2
NHYoR0xfTUFYX1VOSUZPUk1fQkxPQ0tfU0laRSwgJm1heFVuaWZvcm1CbG9ja1NpemUpOworICAg
IGlmIChhbGlnbm1lbnQgPj0gbWF4VW5pZm9ybUJsb2NrU2l6ZSkKKyAgICB7CisgICAgICAgIC8v
IEFOR0xFIGRvZXNuJ3QgaW1wbGVtZW50IFVCTyBvZmZzZXRzIGZvciB0aGlzIHBsYXRmb3JtLgor
ICAgICAgICAvLyBJZ25vcmUgdGhlIHRlc3QgY2FzZS4KKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gTGV0J3MgY3JlYXRlIGEgYnVm
ZmVyIHdoaWNoIGNvbnRhaW5zIGVpZ2h0IHZlYzQuCisgICAgR0x1aW50IHZlYzRTaXplID0gNCAq
IHNpemVvZihmbG9hdCk7CisgICAgR0x1aW50IHN0cmlkZSA9IDA7CisgICAgZG8KKyAgICB7Cisg
ICAgICAgIHN0cmlkZSArPSBhbGlnbm1lbnQ7CisgICAgfQorICAgIHdoaWxlIChzdHJpZGUgPCB2
ZWM0U2l6ZSk7CisKKyAgICBzdGQ6OnZlY3RvcjxjaGFyPiB2KDggKiBzdHJpZGUpOworCisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCA4OyArK2kpCisgICAgeworICAgICAgICBmbG9hdCAqZGF0
YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPih2LmRhdGEoKSArIGkgKiBzdHJpZGUpOworCisg
ICAgICAgIGRhdGFbMF0gPSAoaSArIDEwLmYpIC8gMjU1LmY7CisgICAgICAgIGRhdGFbMV0gPSAo
aSArIDIwLmYpIC8gMjU1LmY7CisgICAgICAgIGRhdGFbMl0gPSAoaSArIDMwLmYpIC8gMjU1LmY7
CisgICAgICAgIGRhdGFbM10gPSAoaSArIDQwLmYpIC8gMjU1LmY7CisgICAgfQorCisgICAgZ2xC
aW5kQnVmZmVyKEdMX1VOSUZPUk1fQlVGRkVSLCBtVW5pZm9ybUJ1ZmZlcik7CisgICAgZ2xCdWZm
ZXJEYXRhKEdMX1VOSUZPUk1fQlVGRkVSLCB2LnNpemUoKSwgdi5kYXRhKCksIEdMX1NUQVRJQ19E
UkFXKTsKKworICAgIGdsVW5pZm9ybUJsb2NrQmluZGluZyhtUHJvZ3JhbSwgbVVuaWZvcm1CdWZm
ZXJJbmRleCwgMCk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIEJpbmQg
ZWFjaCBwb3NzaWJsZSBvZmZzZXQKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDg7ICsraSkK
KyAgICB7CisgICAgICAgIGdsQmluZEJ1ZmZlclJhbmdlKEdMX1VOSUZPUk1fQlVGRkVSLCAwLCBt
VW5pZm9ybUJ1ZmZlciwgaSAqIHN0cmlkZSwgc3RyaWRlKTsKKyAgICAgICAgZHJhd1F1YWQobVBy
b2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
KyAgICAgICAgRVhQRUNUX1BJWEVMX0VRKHB4LCBweSwgMTAgKyBpLCAyMCArIGksIDMwICsgaSwg
NDAgKyBpKTsKKyAgICB9CisKKyAgICAvLyBUcnkgdG8gYmluZCBsYXJnZXIgcmFuZ2UKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IDc7ICsraSkKKyAgICB7CisgICAgICAgIGdsQmluZEJ1ZmZl
clJhbmdlKEdMX1VOSUZPUk1fQlVGRkVSLCAwLCBtVW5pZm9ybUJ1ZmZlciwgaSAqIHN0cmlkZSwg
MiAqIHN0cmlkZSk7CisgICAgICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVm
KTsKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgICAgIEVYUEVDVF9QSVhFTF9F
UShweCwgcHksIDEwICsgaSwgMjAgKyBpLCAzMCArIGksIDQwICsgaSk7CisgICAgfQorCisgICAg
Ly8gVHJ5IHRvIGJpbmQgZXZlbiBsYXJnZXIgcmFuZ2UKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IDU7ICsraSkKKyAgICB7CisgICAgICAgIGdsQmluZEJ1ZmZlclJhbmdlKEdMX1VOSUZPUk1f
QlVGRkVSLCAwLCBtVW5pZm9ybUJ1ZmZlciwgaSAqIHN0cmlkZSwgNCAqIHN0cmlkZSk7CisgICAg
ICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICAgICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7CisgICAgICAgIEVYUEVDVF9QSVhFTF9FUShweCwgcHksIDEwICsgaSwg
MjAgKyBpLCAzMCArIGksIDQwICsgaSk7CisgICAgfQorfQorCisvLyBUZXN0cyB0aGF0IGFjdGl2
ZSB1bmlmb3JtcyBoYXZlIHRoZSByaWdodCBuYW1lcy4KK1RFU1RfUChVbmlmb3JtQnVmZmVyVGVz
dCwgQWN0aXZlVW5pZm9ybU5hbWVzKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2ZXJ0ZXhT
aGFkZXJTb3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJpbiB2
ZWMyIHBvc2l0aW9uO1xuIgorICAgICAgICAib3V0IGZsb2F0IHY7XG4iCisgICAgICAgICJ1bmlm
b3JtIGJsb2NrTmFtZSB7XG4iCisgICAgICAgICIgIGZsb2F0IGY7XG4iCisgICAgICAgICJ9IGlu
c3RhbmNlTmFtZTtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgdiA9
IGluc3RhbmNlTmFtZS5mO1xuIgorICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRp
b24sIDAsIDEpO1xuIgorICAgICAgICAifSI7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJh
Z21lbnRTaGFkZXJTb3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAg
ICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCisgICAgICAgICJpbiBmbG9hdCB2O1xuIgorICAg
ICAgICAib3V0IHZlYzQgY29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAg
ICAgICIgIGNvbG9yID0gdmVjNCh2LCAwLCAwLCAxKTtcbiIKKyAgICAgICAgIn0iOworCisgICAg
R0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdt
ZW50U2hhZGVyU291cmNlKTsKKyAgICBBU1NFUlRfTkUoMHUsIHByb2dyYW0pOworCisgICAgR0xp
bnQgYWN0aXZlVW5pZm9ybXM7CisgICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xfQUNUSVZF
X1VOSUZPUk1TLCAmYWN0aXZlVW5pZm9ybXMpOworCisgICAgQVNTRVJUX0VRKDEsIGFjdGl2ZVVu
aWZvcm1zKTsKKworICAgIEdMaW50IG1heExlbmd0aCwgc2l6ZTsKKyAgICBHTGVudW0gdHlwZTsK
KyAgICBHTHNpemVpIGxlbmd0aDsKKyAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9BQ1RJ
VkVfVU5JRk9STV9NQVhfTEVOR1RILCAmbWF4TGVuZ3RoKTsKKyAgICBzdGQ6OnZlY3RvcjxHTGNo
YXI+IHN0ckJ1ZmZlcihtYXhMZW5ndGggKyAxLCAwKTsKKyAgICBnbEdldEFjdGl2ZVVuaWZvcm0o
cHJvZ3JhbSwgMCwgbWF4TGVuZ3RoLCAmbGVuZ3RoLCAmc2l6ZSwgJnR5cGUsICZzdHJCdWZmZXJb
MF0pOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgRVhQRUNUX0VRKDEsIHNpemUp
OworICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRkxPQVQsIHR5cGUpOworICAgIEVYUEVDVF9FUSgi
YmxvY2tOYW1lLmYiLCBzdGQ6OnN0cmluZygmc3RyQnVmZmVyWzBdKSk7Cit9CisKKy8vIFRlc3Rz
IGFjdGl2ZSB1bmlmb3JtcyBhbmQgYmxvY2tzIHdoZW4gdGhlIGxheW91dCBpcyBzdGQxNDAsIHNo
YXJlZCBhbmQgcGFja2VkLgorVEVTVF9QKFVuaWZvcm1CdWZmZXJUZXN0LCBBY3RpdmVVbmlmb3Jt
TnVtYmVyQW5kTmFtZSkKK3sKKyAgICAvLyBUT0RPKEppYWppYSk6IEZpZ3VyZSBvdXQgd2h5IHRo
aXMgZmFpbHMgb24gSW50ZWwgb24gTWFjLgorICAgIC8vIFRoaXMgY2FzZSBjYW4gcGFzcyBvbiBJ
bnRlbCBNYWMtMTAuMTEvMTAuMTIuIEJ1dCBpdCBmYWlscyBvbiBJbnRlbCBNYWMtMTAuMTAuCisg
ICAgaWYgKElzSW50ZWwoKSAmJiBJc09TWCgpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8
ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgb24gTWFjLiIgPDwgc3RkOjplbmRsOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgLy8gVGhpcyBjYXNlIGZhaWxzIG9uIGFsbCBBTUQgcGxhdGZv
cm1zIChNYWMsIExpbnV4LCBXaW4pLgorICAgIGlmIChJc0FNRCgpKQorICAgIHsKKyAgICAgICAg
c3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gQU1ELiIgPDwgc3RkOjplbmRsOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZlcnRleFNoYWRlclNv
dXJjZSA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgImluIHZlYzIgcG9z
aXRpb247XG4iCisgICAgICAgICJvdXQgZmxvYXQgdjtcbiIKKyAgICAgICAgInN0cnVjdCBTIHtc
biIKKyAgICAgICAgIiAgaGlnaHAgaXZlYzMgYTtcbiIKKyAgICAgICAgIiAgbWVkaXVtcCBpdmVj
MiBiWzRdO1xuIgorICAgICAgICAifTtcbiIKKyAgICAgICAgInN0cnVjdCBUIHtcbiIKKyAgICAg
ICAgIiAgUyBjWzJdO1xuIgorICAgICAgICAifTtcbiIKKyAgICAgICAgImxheW91dChzdGQxNDAp
IHVuaWZvcm0gYmxvY2tOYW1lMCB7XG4iCisgICAgICAgICIgIFMgczA7XG4iCisgICAgICAgICIg
IGxvd3AgdmVjMiB2MDtcbiIKKyAgICAgICAgIiAgVCB0MFsyXTtcbiIKKyAgICAgICAgIiAgaGln
aHAgdWludCB1MDtcbiIKKyAgICAgICAgIn07XG4iCisgICAgICAgICJsYXlvdXQoc3RkMTQwKSB1
bmlmb3JtIGJsb2NrTmFtZTEge1xuIgorICAgICAgICAiICBmbG9hdCBmMTtcbiIKKyAgICAgICAg
IiAgYm9vbCBiMTtcbiIKKyAgICAgICAgIn0gaW5zdGFuY2VOYW1lMTtcbiIKKyAgICAgICAgImxh
eW91dChzaGFyZWQpIHVuaWZvcm0gYmxvY2tOYW1lMiB7XG4iCisgICAgICAgICIgIGZsb2F0IGYy
O1xuIgorICAgICAgICAifTtcbiIKKyAgICAgICAgImxheW91dChwYWNrZWQpIHVuaWZvcm0gYmxv
Y2tOYW1lMyB7XG4iCisgICAgICAgICIgIGZsb2F0IGYzO1xuIgorICAgICAgICAifTtcbiIKKyAg
ICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgdiA9IGluc3RhbmNlTmFtZTEuZjE7
XG4iCisgICAgICAgICIgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMCwgMSk7XG4iCisg
ICAgICAgICJ9IjsKKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnbWVudFNoYWRlclNvdXJj
ZSA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBoaWdo
cCBmbG9hdDtcbiIKKyAgICAgICAgImluIGZsb2F0IHY7XG4iCisgICAgICAgICJvdXQgdmVjNCBj
b2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgY29sb3IgPSB2
ZWM0KHYsIDAsIDAsIDEpO1xuIgorICAgICAgICAifSI7CisKKyAgICBBTkdMRV9HTF9QUk9HUkFN
KHByb2dyYW0sIHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOworCisg
ICAgR0xpbnQgYWN0aXZlVW5pZm9ybXM7CisgICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbS5nZXQo
KSwgR0xfQUNUSVZFX1VOSUZPUk1TLCAmYWN0aXZlVW5pZm9ybXMpOworCisgICAgQVNTRVJUX0VR
KDE1LCBhY3RpdmVVbmlmb3Jtcyk7CisKKyAgICBHTGludCBhY3RpdmVVbmlmb3JtQmxvY2tzOwor
ICAgIGdsR2V0UHJvZ3JhbWl2KHByb2dyYW0uZ2V0KCksIEdMX0FDVElWRV9VTklGT1JNX0JMT0NL
UywgJmFjdGl2ZVVuaWZvcm1CbG9ja3MpOworCisgICAgQVNTRVJUX0VRKDMsIGFjdGl2ZVVuaWZv
cm1CbG9ja3MpOworCisgICAgR0xpbnQgbWF4TGVuZ3RoLCBzaXplOworICAgIEdMZW51bSB0eXBl
OworICAgIEdMc2l6ZWkgbGVuZ3RoOworICAgIGdsR2V0UHJvZ3JhbWl2KHByb2dyYW0uZ2V0KCks
IEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEgsICZtYXhMZW5ndGgpOworICAgIHN0ZDo6dmVj
dG9yPEdMY2hhcj4gc3RyQnVmZmVyKG1heExlbmd0aCArIDEsIDApOworCisgICAgZ2xHZXRBY3Rp
dmVVbmlmb3JtKHByb2dyYW0uZ2V0KCksIDAsIG1heExlbmd0aCwgJmxlbmd0aCwgJnNpemUsICZ0
eXBlLCAmc3RyQnVmZmVyWzBdKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBF
Q1RfRVEoMSwgc2l6ZSk7CisgICAgRVhQRUNUX0VRKCJzMC5hIiwgc3RkOjpzdHJpbmcoJnN0ckJ1
ZmZlclswXSkpOworCisgICAgZ2xHZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0uZ2V0KCksIDEsIG1h
eExlbmd0aCwgJmxlbmd0aCwgJnNpemUsICZ0eXBlLCAmc3RyQnVmZmVyWzBdKTsKKyAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfRVEoNCwgc2l6ZSk7CisgICAgRVhQRUNUX0VR
KCJzMC5iWzBdIiwgc3RkOjpzdHJpbmcoJnN0ckJ1ZmZlclswXSkpOworCisgICAgZ2xHZXRBY3Rp
dmVVbmlmb3JtKHByb2dyYW0uZ2V0KCksIDIsIG1heExlbmd0aCwgJmxlbmd0aCwgJnNpemUsICZ0
eXBlLCAmc3RyQnVmZmVyWzBdKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBF
Q1RfRVEoMSwgc2l6ZSk7CisgICAgRVhQRUNUX0VRKCJ2MCIsIHN0ZDo6c3RyaW5nKCZzdHJCdWZm
ZXJbMF0pKTsKKworICAgIGdsR2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLmdldCgpLCAzLCBtYXhM
ZW5ndGgsICZsZW5ndGgsICZzaXplLCAmdHlwZSwgJnN0ckJ1ZmZlclswXSk7CisgICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7CisgICAgRVhQRUNUX0VRKDEsIHNpemUpOworICAgIEVYUEVDVF9FUSgi
dDBbMF0uY1swXS5hIiwgc3RkOjpzdHJpbmcoJnN0ckJ1ZmZlclswXSkpOworCisgICAgZ2xHZXRB
Y3RpdmVVbmlmb3JtKHByb2dyYW0uZ2V0KCksIDQsIG1heExlbmd0aCwgJmxlbmd0aCwgJnNpemUs
ICZ0eXBlLCAmc3RyQnVmZmVyWzBdKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICBF
WFBFQ1RfRVEoNCwgc2l6ZSk7CisgICAgRVhQRUNUX0VRKCJ0MFswXS5jWzBdLmJbMF0iLCBzdGQ6
OnN0cmluZygmc3RyQnVmZmVyWzBdKSk7CisKKyAgICBnbEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3Jh
bS5nZXQoKSwgNSwgbWF4TGVuZ3RoLCAmbGVuZ3RoLCAmc2l6ZSwgJnR5cGUsICZzdHJCdWZmZXJb
MF0pOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9FUSgxLCBzaXplKTsK
KyAgICBFWFBFQ1RfRVEoInQwWzBdLmNbMV0uYSIsIHN0ZDo6c3RyaW5nKCZzdHJCdWZmZXJbMF0p
KTsKKworICAgIGdsR2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLmdldCgpLCA2LCBtYXhMZW5ndGgs
ICZsZW5ndGgsICZzaXplLCAmdHlwZSwgJnN0ckJ1ZmZlclswXSk7CisgICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7CisgICAgRVhQRUNUX0VRKDQsIHNpemUpOworICAgIEVYUEVDVF9FUSgidDBbMF0u
Y1sxXS5iWzBdIiwgc3RkOjpzdHJpbmcoJnN0ckJ1ZmZlclswXSkpOworCisgICAgZ2xHZXRBY3Rp
dmVVbmlmb3JtKHByb2dyYW0uZ2V0KCksIDcsIG1heExlbmd0aCwgJmxlbmd0aCwgJnNpemUsICZ0
eXBlLCAmc3RyQnVmZmVyWzBdKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBF
Q1RfRVEoMSwgc2l6ZSk7CisgICAgRVhQRUNUX0VRKCJ0MFsxXS5jWzBdLmEiLCBzdGQ6OnN0cmlu
Zygmc3RyQnVmZmVyWzBdKSk7CisKKyAgICBnbEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbS5nZXQo
KSwgOCwgbWF4TGVuZ3RoLCAmbGVuZ3RoLCAmc2l6ZSwgJnR5cGUsICZzdHJCdWZmZXJbMF0pOwor
ICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9FUSg0LCBzaXplKTsKKyAgICBF
WFBFQ1RfRVEoInQwWzFdLmNbMF0uYlswXSIsIHN0ZDo6c3RyaW5nKCZzdHJCdWZmZXJbMF0pKTsK
KworICAgIGdsR2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLmdldCgpLCA5LCBtYXhMZW5ndGgsICZs
ZW5ndGgsICZzaXplLCAmdHlwZSwgJnN0ckJ1ZmZlclswXSk7CisgICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7CisgICAgRVhQRUNUX0VRKDEsIHNpemUpOworICAgIEVYUEVDVF9FUSgidDBbMV0uY1sx
XS5hIiwgc3RkOjpzdHJpbmcoJnN0ckJ1ZmZlclswXSkpOworCisgICAgZ2xHZXRBY3RpdmVVbmlm
b3JtKHByb2dyYW0uZ2V0KCksIDEwLCBtYXhMZW5ndGgsICZsZW5ndGgsICZzaXplLCAmdHlwZSwg
JnN0ckJ1ZmZlclswXSk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgRVhQRUNUX0VR
KDQsIHNpemUpOworICAgIEVYUEVDVF9FUSgidDBbMV0uY1sxXS5iWzBdIiwgc3RkOjpzdHJpbmco
JnN0ckJ1ZmZlclswXSkpOworCisgICAgZ2xHZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0uZ2V0KCks
IDExLCBtYXhMZW5ndGgsICZsZW5ndGgsICZzaXplLCAmdHlwZSwgJnN0ckJ1ZmZlclswXSk7Cisg
ICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgRVhQRUNUX0VRKDEsIHNpemUpOworICAgIEVY
UEVDVF9FUSgidTAiLCBzdGQ6OnN0cmluZygmc3RyQnVmZmVyWzBdKSk7CisKKyAgICBnbEdldEFj
dGl2ZVVuaWZvcm0ocHJvZ3JhbS5nZXQoKSwgMTIsIG1heExlbmd0aCwgJmxlbmd0aCwgJnNpemUs
ICZ0eXBlLCAmc3RyQnVmZmVyWzBdKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICBF
WFBFQ1RfRVEoMSwgc2l6ZSk7CisgICAgRVhQRUNUX0VRKCJibG9ja05hbWUxLmYxIiwgc3RkOjpz
dHJpbmcoJnN0ckJ1ZmZlclswXSkpOworCisgICAgZ2xHZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0u
Z2V0KCksIDEzLCBtYXhMZW5ndGgsICZsZW5ndGgsICZzaXplLCAmdHlwZSwgJnN0ckJ1ZmZlclsw
XSk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgRVhQRUNUX0VRKDEsIHNpemUpOwor
ICAgIEVYUEVDVF9FUSgiYmxvY2tOYW1lMS5iMSIsIHN0ZDo6c3RyaW5nKCZzdHJCdWZmZXJbMF0p
KTsKKworICAgIGdsR2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLmdldCgpLCAxNCwgbWF4TGVuZ3Ro
LCAmbGVuZ3RoLCAmc2l6ZSwgJnR5cGUsICZzdHJCdWZmZXJbMF0pOworICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOworICAgIEVYUEVDVF9FUSgxLCBzaXplKTsKKyAgICBFWFBFQ1RfRVEoImYyIiwg
c3RkOjpzdHJpbmcoJnN0ckJ1ZmZlclswXSkpOworfQorCisvLyBUZXN0IHRoYXQgdXNpbmcgYSB2
ZXJ5IGxhcmdlIGJ1ZmZlciB0byBiYWNrIGEgc21hbGwgdW5pZm9ybSBibG9jayB3b3JrcyBPSy4K
K1RFU1RfUChVbmlmb3JtQnVmZmVyVGVzdCwgVmVyeUxhcmdlKQoreworICAgIC8vIFRPRE8oam1h
ZGlsbCk6IEZpZ3VyZSBvdXQgd2h5IHRoaXMgZmFpbHMgb24gSW50ZWwuCisgICAgLy8gU2VlIGh0
dHA6Ly9jcmJ1Zy5jb20vNTkzMDI0CisgICAgaWYgKElzSW50ZWwoKSAmJiBJc0QzRDExKCkpCisg
ICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBEM0QxMS4i
IDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGdsQ2xlYXIoR0xf
Q09MT1JfQlVGRkVSX0JJVCk7CisgICAgZmxvYXQgZmxvYXREYXRhWzRdID0gezAuNWYsIDAuNzVm
LCAwLjI1ZiwgMS4wZn07CisKKyAgICBHTHNpemVpIGJpZ1NpemUgPSA0MDk2ICogNjQ7CisKKyAg
ICBnbEJpbmRCdWZmZXIoR0xfVU5JRk9STV9CVUZGRVIsIG1Vbmlmb3JtQnVmZmVyKTsKKyAgICBn
bEJ1ZmZlckRhdGEoR0xfVU5JRk9STV9CVUZGRVIsIGJpZ1NpemUsIG51bGxwdHIsIEdMX1NUQVRJ
Q19EUkFXKTsKKyAgICBnbEJ1ZmZlclN1YkRhdGEoR0xfVU5JRk9STV9CVUZGRVIsIDAsIHNpemVv
ZihmbG9hdCkgKiA0LCBmbG9hdERhdGEpOworCisgICAgZ2xCaW5kQnVmZmVyQmFzZShHTF9VTklG
T1JNX0JVRkZFUiwgMCwgbVVuaWZvcm1CdWZmZXIpOworCisgICAgZ2xVbmlmb3JtQmxvY2tCaW5k
aW5nKG1Qcm9ncmFtLCBtVW5pZm9ybUJ1ZmZlckluZGV4LCAwKTsKKyAgICBkcmF3UXVhZChtUHJv
Z3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAg
ICBFWFBFQ1RfUElYRUxfTkVBUigwLCAwLCAxMjgsIDE5MSwgNjQsIDI1NSwgMSk7Cit9CisKKy8v
IFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5k
ZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVu
IGFnYWluc3QuCitBTkdMRV9JTlNUQU5USUFURV9URVNUKFVuaWZvcm1CdWZmZXJUZXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICBFUzNfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
RVMzX0QzRDExX0ZMMTFfMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfRDNEMTFfRkwx
MV8xX1JFRkVSRU5DRSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKCksCisg
ICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygpKTsKKworfSAvLyBuYW1lc3BhY2UK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Vbmlmb3Jt
VGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2dsX3Rlc3RzL1VuaWZvcm1UZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvVW5pZm9ybVRlc3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNjM0IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAidGVzdF91dGlscy9B
TkdMRVRlc3QuaCIKKworI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPGNtYXRoPgorCit1c2lu
ZyBuYW1lc3BhY2UgYW5nbGU7CisKK25hbWVzcGFjZQoreworCitjbGFzcyBVbmlmb3JtVGVzdCA6
IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIFVuaWZvcm1UZXN0KCkgOiBt
UHJvZ3JhbSgwKSwgbVVuaWZvcm1GTG9jYXRpb24oLTEpLCBtVW5pZm9ybUlMb2NhdGlvbigtMSks
IG1Vbmlmb3JtQkxvY2F0aW9uKC0xKQorICAgIHsKKyAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4
KTsKKyAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7CisgICAgICAgIHNldENvbmZpZ1JlZEJp
dHMoOCk7CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmln
Qmx1ZUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKKyAgICB9CisKKyAg
ICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFOR0xFVGVzdDo6U2V0VXAo
KTsKKworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmVydGV4U2hhZGVyID0gInZvaWQgbWFp
bigpIHsgZ2xfUG9zaXRpb24gPSB2ZWM0KDEpOyB9IjsKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJmZyYWdTaGFkZXIgPQorICAgICAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xu
IgorICAgICAgICAgICAgInVuaWZvcm0gZmxvYXQgdW5pRjtcbiIKKyAgICAgICAgICAgICJ1bmlm
b3JtIGludCB1bmlJO1xuIgorICAgICAgICAgICAgInVuaWZvcm0gYm9vbCB1bmlCO1xuIgorICAg
ICAgICAgICAgInVuaWZvcm0gYm9vbCB1bmlCQXJyWzRdO1xuIgorICAgICAgICAgICAgInZvaWQg
bWFpbigpIHtcbiIKKyAgICAgICAgICAgICIgIGdsX0ZyYWdDb2xvciA9IHZlYzQodW5pRiArIGZs
b2F0KHVuaUkpKTtcbiIKKyAgICAgICAgICAgICIgIGdsX0ZyYWdDb2xvciArPSB2ZWM0KHVuaUIg
PyAxLjAgOiAwLjApO1xuIgorICAgICAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yICs9IHZlYzQodW5p
QkFyclswXSA/IDEuMCA6IDAuMCk7XG4iCisgICAgICAgICAgICAifSI7CisKKyAgICAgICAgbVBy
b2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXIsIGZyYWdTaGFkZXIpOworICAgICAg
ICBBU1NFUlRfTkUobVByb2dyYW0sIDB1KTsKKworICAgICAgICBtVW5pZm9ybUZMb2NhdGlvbiA9
IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidW5pRiIpOworICAgICAgICBBU1NFUlRf
TkUobVVuaWZvcm1GTG9jYXRpb24sIC0xKTsKKworICAgICAgICBtVW5pZm9ybUlMb2NhdGlvbiA9
IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidW5pSSIpOworICAgICAgICBBU1NFUlRf
TkUobVVuaWZvcm1JTG9jYXRpb24sIC0xKTsKKworICAgICAgICBtVW5pZm9ybUJMb2NhdGlvbiA9
IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidW5pQiIpOworICAgICAgICBBU1NFUlRf
TkUobVVuaWZvcm1CTG9jYXRpb24sIC0xKTsKKworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1Io
KTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24o
KTsKKyAgICB9CisKKyAgICBHTHVpbnQgbVByb2dyYW07CisgICAgR0xpbnQgbVVuaWZvcm1GTG9j
YXRpb247CisgICAgR0xpbnQgbVVuaWZvcm1JTG9jYXRpb247CisgICAgR0xpbnQgbVVuaWZvcm1C
TG9jYXRpb247Cit9OworCitURVNUX1AoVW5pZm9ybVRlc3QsIEdldFVuaWZvcm1Ob0N1cnJlbnRQ
cm9ncmFtKQoreworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgZ2xVbmlmb3JtMWYo
bVVuaWZvcm1GTG9jYXRpb24sIDEuMGYpOworICAgIGdsVW5pZm9ybTFpKG1Vbmlmb3JtSUxvY2F0
aW9uLCAxKTsKKyAgICBnbFVzZVByb2dyYW0oMCk7CisKKyAgICBHTGZsb2F0IGY7CisgICAgZ2xH
ZXRuVW5pZm9ybWZ2RVhUKG1Qcm9ncmFtLCBtVW5pZm9ybUZMb2NhdGlvbiwgNCwgJmYpOworICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9FUSgxLjBmLCBmKTsKKworICAgIGds
R2V0VW5pZm9ybWZ2KG1Qcm9ncmFtLCBtVW5pZm9ybUZMb2NhdGlvbiwgJmYpOworICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9FUSgxLjBmLCBmKTsKKworICAgIEdMaW50IGk7
CisgICAgZ2xHZXRuVW5pZm9ybWl2RVhUKG1Qcm9ncmFtLCBtVW5pZm9ybUlMb2NhdGlvbiwgNCwg
JmkpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9FUSgxLCBpKTsKKwor
ICAgIGdsR2V0VW5pZm9ybWl2KG1Qcm9ncmFtLCBtVW5pZm9ybUlMb2NhdGlvbiwgJmkpOworICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9FUSgxLCBpKTsKK30KKworVEVTVF9Q
KFVuaWZvcm1UZXN0LCBVbmlmb3JtQXJyYXlMb2NhdGlvbnMpCit7CisgICAgLy8gVE9ETyhnZW9m
ZmxhbmcpOiBGaWd1cmUgb3V0IHdoeSB0aGlzIGlzIGJyb2tlbiBvbiBJbnRlbCBPcGVuR0wKKyAg
ICBpZiAoSXNJbnRlbCgpICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1f
QU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRl
c3Qgc2tpcHBlZCBvbiBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXIgPSBTSEFERVJf
U09VUkNFCisgICAgKAorICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgICAgICAg
dW5pZm9ybSBmbG9hdCB1UG9zaXRpb25bNF07CisgICAgICAgIHZvaWQgbWFpbih2b2lkKQorICAg
ICAgICB7CisgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHZlYzQodVBvc2l0aW9uWzBdLCB1UG9z
aXRpb25bMV0sIHVQb3NpdGlvblsyXSwgdVBvc2l0aW9uWzNdKTsKKyAgICAgICAgfQorICAgICk7
CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnU2hhZGVyID0gU0hBREVSX1NPVVJDRQorICAg
ICgKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgIHVuaWZvcm0gZmxv
YXQgdUNvbG9yWzRdOworICAgICAgICB2b2lkIG1haW4odm9pZCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh1Q29sb3JbMF0sIHVDb2xvclsxXSwgdUNvbG9yWzJd
LCB1Q29sb3JbM10pOworICAgICAgICB9CisgICAgKTsKKworICAgIEdMdWludCBwcm9ncmFtID0g
Q29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyLCBmcmFnU2hhZGVyKTsKKyAgICBBU1NFUlRfTkUo
cHJvZ3JhbSwgMHUpOworCisgICAgLy8gQXJyYXkgaW5kZXggemVybyBzaG91bGQgYmUgZXF1aXZh
bGVudCB0byB0aGUgdW4taW5kZXhlZCB1bmlmb3JtCisgICAgRVhQRUNUX05FKC0xLCBnbEdldFVu
aWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidVBvc2l0aW9uIikpOworICAgIEVYUEVDVF9FUShnbEdl
dFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidVBvc2l0aW9uIiksIGdsR2V0VW5pZm9ybUxvY2F0
aW9uKHByb2dyYW0sICJ1UG9zaXRpb25bMF0iKSk7CisKKyAgICBFWFBFQ1RfTkUoLTEsIGdsR2V0
VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1Q29sb3IiKSk7CisgICAgRVhQRUNUX0VRKGdsR2V0
VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1Q29sb3IiKSwgZ2xHZXRVbmlmb3JtTG9jYXRpb24o
cHJvZ3JhbSwgInVDb2xvclswXSIpKTsKKworICAgIC8vIEFsbCBhcnJheSB1bmlmb3JtIGxvY2F0
aW9ucyBzaG91bGQgYmUgdW5pcXVlCisgICAgR0xpbnQgcG9zaXRpb25Mb2NhdGlvbnNbNF0gPQor
ICAgIHsKKyAgICAgICAgZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVQb3NpdGlvblsw
XSIpLAorICAgICAgICBnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidVBvc2l0aW9uWzFd
IiksCisgICAgICAgIGdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1UG9zaXRpb25bMl0i
KSwKKyAgICAgICAgZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVQb3NpdGlvblszXSIp
LAorICAgIH07CisKKyAgICBHTGludCBjb2xvckxvY2F0aW9uc1s0XSA9CisgICAgeworICAgICAg
ICBnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidUNvbG9yWzBdIiksCisgICAgICAgIGds
R2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1Q29sb3JbMV0iKSwKKyAgICAgICAgZ2xHZXRV
bmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVDb2xvclsyXSIpLAorICAgICAgICBnbEdldFVuaWZv
cm1Mb2NhdGlvbihwcm9ncmFtLCAidUNvbG9yWzNdIiksCisgICAgfTsKKworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgNDsgaSsrKQorICAgIHsKKyAgICAgICAgRVhQRUNUX05FKC0xLCBwb3Np
dGlvbkxvY2F0aW9uc1tpXSk7CisgICAgICAgIEVYUEVDVF9ORSgtMSwgY29sb3JMb2NhdGlvbnNb
aV0pOworCisgICAgICAgIGZvciAoc2l6ZV90IGogPSBpICsgMTsgaiA8IDQ7IGorKykKKyAgICAg
ICAgeworICAgICAgICAgICAgRVhQRUNUX05FKHBvc2l0aW9uTG9jYXRpb25zW2ldLCBwb3NpdGlv
bkxvY2F0aW9uc1tqXSk7CisgICAgICAgICAgICBFWFBFQ1RfTkUoY29sb3JMb2NhdGlvbnNbaV0s
IGNvbG9yTG9jYXRpb25zW2pdKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGdsRGVsZXRlUHJv
Z3JhbShwcm9ncmFtKTsKK30KKworLy8gVGVzdCB0aGF0IGZsb2F0IHRvIGludGVnZXIgR2V0VW5p
Zm9ybSByb3VuZHMgdmFsdWVzIGNvcnJlY3RseS4KK1RFU1RfUChVbmlmb3JtVGVzdCwgRmxvYXRV
bmlmb3JtU3RhdGVRdWVyeSkKK3sKKyAgICBzdGQ6OnZlY3Rvcjxkb3VibGU+IGluVmFsdWVzOwor
ICAgIHN0ZDo6dmVjdG9yPEdMZmxvYXQ+IGV4cGVjdGVkRlZhbHVlczsKKyAgICBzdGQ6OnZlY3Rv
cjxHTGludD4gZXhwZWN0ZWRJVmFsdWVzOworCisgICAgZG91YmxlIGludE1heEQgPSBzdGF0aWNf
Y2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8R0xpbnQ+OjptYXgoKSk7CisgICAgZG91
YmxlIGludE1pbkQgPSBzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8R0xp
bnQ+OjptaW4oKSk7CisKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBJbnZlc3RpZ2F0ZSByb3VuZGlu
ZyBvZiAuNQorICAgIGluVmFsdWVzLnB1c2hfYmFjaygtMS4wKTsKKyAgICBpblZhbHVlcy5wdXNo
X2JhY2soLTAuNik7CisgICAgLy8gaW5WYWx1ZXMucHVzaF9iYWNrKC0wLjUpOyAvLyB1bmRlZmlu
ZWQgYmVoYXZpb3VyPworICAgIGluVmFsdWVzLnB1c2hfYmFjaygtMC40KTsKKyAgICBpblZhbHVl
cy5wdXNoX2JhY2soMC4wKTsKKyAgICBpblZhbHVlcy5wdXNoX2JhY2soMC40KTsKKyAgICAvLyBp
blZhbHVlcy5wdXNoX2JhY2soMC41KTsgLy8gdW5kZWZpbmVkIGJlaGF2aW91cj8KKyAgICBpblZh
bHVlcy5wdXNoX2JhY2soMC42KTsKKyAgICBpblZhbHVlcy5wdXNoX2JhY2soMS4wKTsKKyAgICBp
blZhbHVlcy5wdXNoX2JhY2soOTk5OTk5LjIpOworICAgIGluVmFsdWVzLnB1c2hfYmFjayhpbnRN
YXhEICogMi4wKTsKKyAgICBpblZhbHVlcy5wdXNoX2JhY2soaW50TWF4RCArIDEuMCk7CisgICAg
aW5WYWx1ZXMucHVzaF9iYWNrKGludE1pbkQgKiAyLjApOworICAgIGluVmFsdWVzLnB1c2hfYmFj
ayhpbnRNaW5EIC0gMS4wKTsKKworICAgIGZvciAoZG91YmxlIHZhbHVlIDogaW5WYWx1ZXMpCisg
ICAgeworICAgICAgICBleHBlY3RlZEZWYWx1ZXMucHVzaF9iYWNrKHN0YXRpY19jYXN0PEdMZmxv
YXQ+KHZhbHVlKSk7CisKKyAgICAgICAgZG91YmxlIGNsYW1wZWRWYWx1ZSA9IHN0ZDo6bWF4KGlu
dE1pbkQsIHN0ZDo6bWluKGludE1heEQsIHZhbHVlKSk7CisgICAgICAgIGRvdWJsZSByb3VuZGVk
ID0gcm91bmQoY2xhbXBlZFZhbHVlKTsKKyAgICAgICAgZXhwZWN0ZWRJVmFsdWVzLnB1c2hfYmFj
ayhzdGF0aWNfY2FzdDxHTGludD4ocm91bmRlZCkpOworICAgIH0KKworICAgIGdsVXNlUHJvZ3Jh
bShtUHJvZ3JhbSk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBmb3IgKHNpemVf
dCBpbmRleCA9IDA7IGluZGV4IDwgaW5WYWx1ZXMuc2l6ZSgpOyArK2luZGV4KQorICAgIHsKKyAg
ICAgICAgR0xmbG9hdCBpblZhbHVlICAgICAgID0gc3RhdGljX2Nhc3Q8R0xmbG9hdD4oaW5WYWx1
ZXNbaW5kZXhdKTsKKyAgICAgICAgR0xmbG9hdCBleHBlY3RlZFZhbHVlID0gZXhwZWN0ZWRGVmFs
dWVzW2luZGV4XTsKKworICAgICAgICBnbFVuaWZvcm0xZihtVW5pZm9ybUZMb2NhdGlvbiwgaW5W
YWx1ZSk7CisgICAgICAgIEdMZmxvYXQgdGVzdFZhbHVlOworICAgICAgICBnbEdldFVuaWZvcm1m
dihtUHJvZ3JhbSwgbVVuaWZvcm1GTG9jYXRpb24sICZ0ZXN0VmFsdWUpOworICAgICAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKKyAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkVmFsdWUsIHRlc3RW
YWx1ZSk7CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGluVmFs
dWVzLnNpemUoKTsgKytpbmRleCkKKyAgICB7CisgICAgICAgIEdMZmxvYXQgaW5WYWx1ZSAgICAg
PSBzdGF0aWNfY2FzdDxHTGZsb2F0PihpblZhbHVlc1tpbmRleF0pOworICAgICAgICBHTGludCBl
eHBlY3RlZFZhbHVlID0gZXhwZWN0ZWRJVmFsdWVzW2luZGV4XTsKKworICAgICAgICBnbFVuaWZv
cm0xZihtVW5pZm9ybUZMb2NhdGlvbiwgaW5WYWx1ZSk7CisgICAgICAgIEdMaW50IHRlc3RWYWx1
ZTsKKyAgICAgICAgZ2xHZXRVbmlmb3JtaXYobVByb2dyYW0sIG1Vbmlmb3JtRkxvY2F0aW9uLCAm
dGVzdFZhbHVlKTsKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgICAgIEVYUEVD
VF9FUShleHBlY3RlZFZhbHVlLCB0ZXN0VmFsdWUpOworICAgIH0KK30KKworLy8gVGVzdCB0aGF0
IGludGVnZXIgdG8gZmxvYXQgR2V0VW5pZm9ybSByb3VuZHMgdmFsdWVzIGNvcnJlY3RseS4KK1RF
U1RfUChVbmlmb3JtVGVzdCwgSW50VW5pZm9ybVN0YXRlUXVlcnkpCit7CisgICAgc3RkOjp2ZWN0
b3I8R0xpbnQ+IGluVmFsdWVzOworICAgIHN0ZDo6dmVjdG9yPEdMaW50PiBleHBlY3RlZElWYWx1
ZXM7CisgICAgc3RkOjp2ZWN0b3I8R0xmbG9hdD4gZXhwZWN0ZWRGVmFsdWVzOworCisgICAgR0xp
bnQgaW50TWF4ID0gc3RkOjpudW1lcmljX2xpbWl0czxHTGludD46Om1heCgpOworICAgIEdMaW50
IGludE1pbiA9IHN0ZDo6bnVtZXJpY19saW1pdHM8R0xpbnQ+OjptaW4oKTsKKworICAgIGluVmFs
dWVzLnB1c2hfYmFjaygtMSk7CisgICAgaW5WYWx1ZXMucHVzaF9iYWNrKDApOworICAgIGluVmFs
dWVzLnB1c2hfYmFjaygxKTsKKyAgICBpblZhbHVlcy5wdXNoX2JhY2soOTk5OTk5KTsKKyAgICBp
blZhbHVlcy5wdXNoX2JhY2soaW50TWF4KTsKKyAgICBpblZhbHVlcy5wdXNoX2JhY2soaW50TWF4
IC0gMSk7CisgICAgaW5WYWx1ZXMucHVzaF9iYWNrKGludE1pbik7CisgICAgaW5WYWx1ZXMucHVz
aF9iYWNrKGludE1pbiArIDEpOworCisgICAgZm9yIChHTGludCB2YWx1ZSA6IGluVmFsdWVzKQor
ICAgIHsKKyAgICAgICAgZXhwZWN0ZWRJVmFsdWVzLnB1c2hfYmFjayh2YWx1ZSk7CisgICAgICAg
IGV4cGVjdGVkRlZhbHVlcy5wdXNoX2JhY2soc3RhdGljX2Nhc3Q8R0xmbG9hdD4odmFsdWUpKTsK
KyAgICB9CisKKyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGluVmFsdWVzLnNp
emUoKTsgKytpbmRleCkKKyAgICB7CisgICAgICAgIEdMaW50IGluVmFsdWUgICAgICAgPSBpblZh
bHVlc1tpbmRleF07CisgICAgICAgIEdMaW50IGV4cGVjdGVkVmFsdWUgPSBleHBlY3RlZElWYWx1
ZXNbaW5kZXhdOworCisgICAgICAgIGdsVW5pZm9ybTFpKG1Vbmlmb3JtSUxvY2F0aW9uLCBpblZh
bHVlKTsKKyAgICAgICAgR0xpbnQgdGVzdFZhbHVlOworICAgICAgICBnbEdldFVuaWZvcm1pdiht
UHJvZ3JhbSwgbVVuaWZvcm1JTG9jYXRpb24sICZ0ZXN0VmFsdWUpOworICAgICAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKKyAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkVmFsdWUsIHRlc3RWYWx1
ZSk7CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGluVmFsdWVz
LnNpemUoKTsgKytpbmRleCkKKyAgICB7CisgICAgICAgIEdMaW50IGluVmFsdWUgICAgICAgICA9
IGluVmFsdWVzW2luZGV4XTsKKyAgICAgICAgR0xmbG9hdCBleHBlY3RlZFZhbHVlID0gZXhwZWN0
ZWRGVmFsdWVzW2luZGV4XTsKKworICAgICAgICBnbFVuaWZvcm0xaShtVW5pZm9ybUlMb2NhdGlv
biwgaW5WYWx1ZSk7CisgICAgICAgIEdMZmxvYXQgdGVzdFZhbHVlOworICAgICAgICBnbEdldFVu
aWZvcm1mdihtUHJvZ3JhbSwgbVVuaWZvcm1JTG9jYXRpb24sICZ0ZXN0VmFsdWUpOworICAgICAg
ICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkVmFsdWUs
IHRlc3RWYWx1ZSk7CisgICAgfQorfQorCisvLyBUZXN0IHRoYXQgcXVlcmllcyBvZiBib29sZWFu
IHVuaWZvcm1zIHJvdW5kIGNvcnJlY3RseS4KK1RFU1RfUChVbmlmb3JtVGVzdCwgQm9vbGVhblVu
aWZvcm1TdGF0ZVF1ZXJ5KQoreworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgR0xp
bnQgaW50VmFsdWUgICAgID0gMDsKKyAgICBHTGZsb2F0IGZsb2F0VmFsdWUgPSAwLjBmOworCisg
ICAgLy8gQ2FsbGluZyBVbmlmb3JtMWkKKyAgICBnbFVuaWZvcm0xaShtVW5pZm9ybUJMb2NhdGlv
biwgR0xfRkFMU0UpOworCisgICAgZ2xHZXRVbmlmb3JtaXYobVByb2dyYW0sIG1Vbmlmb3JtQkxv
Y2F0aW9uLCAmaW50VmFsdWUpOworICAgIEVYUEVDVF9FUSgwLCBpbnRWYWx1ZSk7CisKKyAgICBn
bEdldFVuaWZvcm1mdihtUHJvZ3JhbSwgbVVuaWZvcm1CTG9jYXRpb24sICZmbG9hdFZhbHVlKTsK
KyAgICBFWFBFQ1RfRVEoMC4wZiwgZmxvYXRWYWx1ZSk7CisKKyAgICBnbFVuaWZvcm0xaShtVW5p
Zm9ybUJMb2NhdGlvbiwgR0xfVFJVRSk7CisKKyAgICBnbEdldFVuaWZvcm1pdihtUHJvZ3JhbSwg
bVVuaWZvcm1CTG9jYXRpb24sICZpbnRWYWx1ZSk7CisgICAgRVhQRUNUX0VRKDEsIGludFZhbHVl
KTsKKworICAgIGdsR2V0VW5pZm9ybWZ2KG1Qcm9ncmFtLCBtVW5pZm9ybUJMb2NhdGlvbiwgJmZs
b2F0VmFsdWUpOworICAgIEVYUEVDVF9FUSgxLjBmLCBmbG9hdFZhbHVlKTsKKworICAgIC8vIENh
bGxpbmcgVW5pZm9ybTFmCisgICAgZ2xVbmlmb3JtMWYobVVuaWZvcm1CTG9jYXRpb24sIDAuMGYp
OworCisgICAgZ2xHZXRVbmlmb3JtaXYobVByb2dyYW0sIG1Vbmlmb3JtQkxvY2F0aW9uLCAmaW50
VmFsdWUpOworICAgIEVYUEVDVF9FUSgwLCBpbnRWYWx1ZSk7CisKKyAgICBnbEdldFVuaWZvcm1m
dihtUHJvZ3JhbSwgbVVuaWZvcm1CTG9jYXRpb24sICZmbG9hdFZhbHVlKTsKKyAgICBFWFBFQ1Rf
RVEoMC4wZiwgZmxvYXRWYWx1ZSk7CisKKyAgICBnbFVuaWZvcm0xZihtVW5pZm9ybUJMb2NhdGlv
biwgMS4wZik7CisKKyAgICBnbEdldFVuaWZvcm1pdihtUHJvZ3JhbSwgbVVuaWZvcm1CTG9jYXRp
b24sICZpbnRWYWx1ZSk7CisgICAgRVhQRUNUX0VRKDEsIGludFZhbHVlKTsKKworICAgIGdsR2V0
VW5pZm9ybWZ2KG1Qcm9ncmFtLCBtVW5pZm9ybUJMb2NhdGlvbiwgJmZsb2F0VmFsdWUpOworICAg
IEVYUEVDVF9FUSgxLjBmLCBmbG9hdFZhbHVlKTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigp
OworfQorCisvLyBUZXN0IHF1ZXJpZXMgZm9yIGFycmF5cyBvZiBib29sZWFuIHVuaWZvcm1zLgor
VEVTVF9QKFVuaWZvcm1UZXN0LCBCb29sZWFuQXJyYXlVbmlmb3JtU3RhdGVRdWVyeSkKK3sKKyAg
ICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworICAgIEdMaW50IGJvb2xWYWx1ZXNpWzRdICAgPSB7
MCwgMSwgMCwgMX07CisgICAgR0xmbG9hdCBib29sVmFsdWVzZls0XSA9IHswLCAxLCAwLCAxfTsK
KworICAgIEdMaW50IGxvY2F0aW9uc1s0XSA9IHsKKyAgICAgICAgZ2xHZXRVbmlmb3JtTG9jYXRp
b24obVByb2dyYW0sICJ1bmlCQXJyIiksCisgICAgICAgIGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Q
cm9ncmFtLCAidW5pQkFyclsxXSIpLAorICAgICAgICBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJv
Z3JhbSwgInVuaUJBcnJbMl0iKSwKKyAgICAgICAgZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dy
YW0sICJ1bmlCQXJyWzNdIiksCisgICAgfTsKKworICAgIC8vIENhbGxpbmcgVW5pZm9ybTFpdgor
ICAgIGdsVW5pZm9ybTFpdihsb2NhdGlvbnNbMF0sIDQsIGJvb2xWYWx1ZXNpKTsKKworICAgIGZv
ciAodW5zaWduZWQgaW50IGlkeCA9IDA7IGlkeCA8IDQ7ICsraWR4KQorICAgIHsKKyAgICAgICAg
aW50IHZhbHVlID0gLTE7CisgICAgICAgIGdsR2V0VW5pZm9ybWl2KG1Qcm9ncmFtLCBsb2NhdGlv
bnNbaWR4XSwgJnZhbHVlKTsKKyAgICAgICAgRVhQRUNUX0VRKGJvb2xWYWx1ZXNpW2lkeF0sIHZh
bHVlKTsKKyAgICB9CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpZHggPSAwOyBpZHggPCA0OyAr
K2lkeCkKKyAgICB7CisgICAgICAgIGZsb2F0IHZhbHVlID0gLTEuMGY7CisgICAgICAgIGdsR2V0
VW5pZm9ybWZ2KG1Qcm9ncmFtLCBsb2NhdGlvbnNbaWR4XSwgJnZhbHVlKTsKKyAgICAgICAgRVhQ
RUNUX0VRKGJvb2xWYWx1ZXNmW2lkeF0sIHZhbHVlKTsKKyAgICB9CisKKyAgICAvLyBDYWxsaW5n
IFVuaWZvcm0xZnYKKyAgICBnbFVuaWZvcm0xZnYobG9jYXRpb25zWzBdLCA0LCBib29sVmFsdWVz
Zik7CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpZHggPSAwOyBpZHggPCA0OyArK2lkeCkKKyAg
ICB7CisgICAgICAgIGludCB2YWx1ZSA9IC0xOworICAgICAgICBnbEdldFVuaWZvcm1pdihtUHJv
Z3JhbSwgbG9jYXRpb25zW2lkeF0sICZ2YWx1ZSk7CisgICAgICAgIEVYUEVDVF9FUShib29sVmFs
dWVzaVtpZHhdLCB2YWx1ZSk7CisgICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaWR4ID0g
MDsgaWR4IDwgNDsgKytpZHgpCisgICAgeworICAgICAgICBmbG9hdCB2YWx1ZSA9IC0xLjBmOwor
ICAgICAgICBnbEdldFVuaWZvcm1mdihtUHJvZ3JhbSwgbG9jYXRpb25zW2lkeF0sICZ2YWx1ZSk7
CisgICAgICAgIEVYUEVDVF9FUShib29sVmFsdWVzZltpZHhdLCB2YWx1ZSk7CisgICAgfQorCisg
ICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9CisKK2NsYXNzIFVuaWZvcm1UZXN0RVMzIDogcHVi
bGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgVW5pZm9ybVRlc3RFUzMoKSA6IG1Q
cm9ncmFtKDApIHt9CisKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IEFOR0xFVGVzdDo6U2V0VXAoKTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIGlmIChtUHJvZ3JhbSAhPSAwKQorICAgICAgICB7CisgICAgICAg
ICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOworICAgICAgICAgICAgbVByb2dyYW0gPSAw
OworICAgICAgICB9CisgICAgfQorCisgICAgR0x1aW50IG1Qcm9ncmFtOworfTsKKworLy8gVGVz
dCBxdWVyaWVzIGZvciB0cmFuc3Bvc2VkIGFycmF5cyBvZiBub24tc3F1YXJlIG1hdHJpeCB1bmlm
b3Jtcy4KK1RFU1RfUChVbmlmb3JtVGVzdEVTMywgVHJhbnBvc2VkTWF0cml4QXJyYXlVbmlmb3Jt
U3RhdGVRdWVyeSkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmVydGV4U2hhZGVyID0KKyAg
ICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAidm9pZCBtYWluKCkgeyBnbF9Qb3Np
dGlvbiA9IHZlYzQoMSk7IH0iOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnU2hhZGVyID0K
KyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7XG4iCisgICAgICAgICJ1bmlmb3JtIG1hdDN4MiB1bmlNYXQzeDJbNV07XG4iCisgICAg
ICAgICJvdXQgdmVjNCBjb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAg
ICAgIiAgY29sb3IgPSB2ZWM0KHVuaU1hdDN4MlswXVswXVswXSk7XG4iCisgICAgICAgICJ9IjsK
KworICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyLCBmcmFnU2hhZGVy
KTsKKyAgICBBU1NFUlRfTkUobVByb2dyYW0sIDB1KTsKKworICAgIGdsVXNlUHJvZ3JhbShtUHJv
Z3JhbSk7CisKKyAgICBzdGQ6OnZlY3RvcjxHTGZsb2F0PiB0cmFuc3Bvc2VkVmFsdWVzOworCisg
ICAgZm9yIChzaXplX3QgYXJyYXlFbGVtZW50ID0gMDsgYXJyYXlFbGVtZW50IDwgNTsgKythcnJh
eUVsZW1lbnQpCisgICAgeworICAgICAgICB0cmFuc3Bvc2VkVmFsdWVzLnB1c2hfYmFjaygxLjBm
ICsgYXJyYXlFbGVtZW50KTsKKyAgICAgICAgdHJhbnNwb3NlZFZhbHVlcy5wdXNoX2JhY2soMy4w
ZiArIGFycmF5RWxlbWVudCk7CisgICAgICAgIHRyYW5zcG9zZWRWYWx1ZXMucHVzaF9iYWNrKDUu
MGYgKyBhcnJheUVsZW1lbnQpOworICAgICAgICB0cmFuc3Bvc2VkVmFsdWVzLnB1c2hfYmFjaygy
LjBmICsgYXJyYXlFbGVtZW50KTsKKyAgICAgICAgdHJhbnNwb3NlZFZhbHVlcy5wdXNoX2JhY2so
NC4wZiArIGFycmF5RWxlbWVudCk7CisgICAgICAgIHRyYW5zcG9zZWRWYWx1ZXMucHVzaF9iYWNr
KDYuMGYgKyBhcnJheUVsZW1lbnQpOworICAgIH0KKworICAgIC8vIFNldHRpbmcgYXMgYSBjbHVt
cAorICAgIEdMaW50IGJhc2VMb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFt
LCAidW5pTWF0M3gyIik7CisgICAgQVNTRVJUX05FKC0xLCBiYXNlTG9jYXRpb24pOworCisgICAg
Z2xVbmlmb3JtTWF0cml4M3gyZnYoYmFzZUxvY2F0aW9uLCA1LCBHTF9UUlVFLCAmdHJhbnNwb3Nl
ZFZhbHVlc1swXSk7CisKKyAgICBmb3IgKHNpemVfdCBhcnJheUVsZW1lbnQgPSAwOyBhcnJheUVs
ZW1lbnQgPCA1OyArK2FycmF5RWxlbWVudCkKKyAgICB7CisgICAgICAgIHN0ZDo6c3RyaW5nc3Ry
ZWFtIG5hbWVTdHI7CisgICAgICAgIG5hbWVTdHIgPDwgInVuaU1hdDN4MlsiIDw8IGFycmF5RWxl
bWVudCA8PCAiXSI7CisgICAgICAgIHN0ZDo6c3RyaW5nIG5hbWUgPSBuYW1lU3RyLnN0cigpOwor
ICAgICAgICBHTGludCBsb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCBu
YW1lLmNfc3RyKCkpOworICAgICAgICBBU1NFUlRfTkUoLTEsIGxvY2F0aW9uKTsKKworICAgICAg
ICBzdGQ6OnZlY3RvcjxHTGZsb2F0PiBzZXF1ZW50aWFsVmFsdWVzKDYsIDApOworICAgICAgICBn
bEdldFVuaWZvcm1mdihtUHJvZ3JhbSwgbG9jYXRpb24sICZzZXF1ZW50aWFsVmFsdWVzWzBdKTsK
KworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgICAgICBmb3IgKHNpemVfdCBj
b21wID0gMDsgY29tcCA8IDY7ICsrY29tcCkKKyAgICAgICAgeworICAgICAgICAgICAgRVhQRUNU
X0VRKHN0YXRpY19jYXN0PEdMZmxvYXQ+KGNvbXAgKyAxICsgYXJyYXlFbGVtZW50KSwgc2VxdWVu
dGlhbFZhbHVlc1tjb21wXSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIENoZWNrIHRoYXQg
c2FtcGxlciB1bmlmb3JtcyBvbmx5IHNob3cgdXAgb25lIHRpbWUgaW4gdGhlIGxpc3QKK1RFU1Rf
UChVbmlmb3JtVGVzdCwgU2FtcGxlclVuaWZvcm1zQXBwZWFyT25jZSkKK3sKKyAgICBpbnQgbWF4
VmVydGV4VGV4dHVyZUltYWdlVW5pdHMgPSAwOworICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZF
UlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTLCAmbWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMpOwor
CisgICAgaWYgKG1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzID09IDApCisgICAgeworICAgICAg
ICBzdGQ6OmNvdXQgPDwgIlJlbmRlcmVyIGRvZXNuJ3Qgc3VwcG9ydCB2ZXJ0ZXggdGV4dHVyZSBm
ZXRjaCwgc2tpcHBpbmcgdGVzdCIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZlcnRTaGFkZXIgPQorICAgICAgICAiYXR0cmli
dXRlIHZlYzIgcG9zaXRpb247XG4iCisgICAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCB0ZXgyRDtc
biIKKyAgICAgICAgInZhcnlpbmcgdmVjNCBjb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigp
IHtcbiIKKyAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAwLCAxKTtcbiIK
KyAgICAgICAgIiAgY29sb3IgPSB0ZXh0dXJlMkQodGV4MkQsIHZlYzIoMCkpO1xuIgorICAgICAg
ICAifSI7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ1NoYWRlciA9CisgICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInZhcnlpbmcgdmVjNCBjb2xvcjtc
biIKKyAgICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHRleDJEO1xuIgorICAgICAgICAidm9pZCBt
YWluKCkge1xuIgorICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQodGV4MkQsIHZl
YzIoMCkpICsgY29sb3I7XG4iCisgICAgICAgICJ9IjsKKworICAgIEdMdWludCBwcm9ncmFtID0g
Q29tcGlsZVByb2dyYW0odmVydFNoYWRlciwgZnJhZ1NoYWRlcik7CisgICAgQVNTRVJUX05FKDB1
LCBwcm9ncmFtKTsKKworICAgIEdMaW50IGFjdGl2ZVVuaWZvcm1zQ291bnQgPSAwOworICAgIGds
R2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdMX0FDVElWRV9VTklGT1JNUywgJmFjdGl2ZVVuaWZvcm1z
Q291bnQpOworICAgIEFTU0VSVF9FUSgxLCBhY3RpdmVVbmlmb3Jtc0NvdW50KTsKKworICAgIEdM
aW50IHNpemUgICAgICAgPSAwOworICAgIEdMZW51bSB0eXBlICAgICAgPSBHTF9OT05FOworICAg
IEdMY2hhciBuYW1lWzEyMF0gPSB7MH07CisgICAgZ2xHZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0s
IDAsIDEwMCwgbnVsbHB0ciwgJnNpemUsICZ0eXBlLCBuYW1lKTsKKyAgICBFWFBFQ1RfRVEoMSwg
c2l6ZSk7CisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9TQU1QTEVSXzJELCB0eXBlKTsKKyAgICBF
WFBFQ1RfU1RSRVEoInRleDJEIiwgbmFtZSk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
KworICAgIGdsRGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIEdldFVuaWZvcm1WPgordm9pZCBDaGVja09uZUVsZW1lbnQoR2V0VW5pZm9y
bVYgZ2V0VW5pZm9ybXYsCisgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgaW50IGNvbXBvbmVudHMsCisgICAgICAgICAgICAgICAgICAgICBUIGNhbmFyeSkK
K3sKKyAgICAvLyBUaGUgYnVmZmVyIGdldHRpbmcgdGhlIHJlc3VsdHMgaGFzIHRocmVlIGNodW5r
cworICAgIC8vICAtIEEgY2h1bmsgdG8gc2VlIHVuZGVyZmxvd3MKKyAgICAvLyAgLSBBIGNodW5r
IHRoYXQgd2lsbCBob2xkIHRoZSByZXN1bHQKKyAgICAvLyAgLSBBIGNodW5rIHRvIHNlZSBvdmVy
Zmxvd3MgZm9yIHdoZW4gY29tcG9uZW50cyA9IGtDaHVua1NpemUKKyAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IGtDaHVua1NpemUgPSA0OworICAgIHN0ZDo6YXJyYXk8VCwgMyAqIGtDaHVua1NpemU+
IGJ1ZmZlcjsKKyAgICBidWZmZXIuZmlsbChjYW5hcnkpOworCisgICAgR0xpbnQgbG9jYXRpb24g
PSBnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lLmNfc3RyKCkpOworICAgIEFTU0VS
VF9ORShsb2NhdGlvbiwgLTEpOworCisgICAgZ2V0VW5pZm9ybXYocHJvZ3JhbSwgbG9jYXRpb24s
ICZidWZmZXJba0NodW5rU2l6ZV0pOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga0NodW5r
U2l6ZTsgaSsrKQorICAgIHsKKyAgICAgICAgQVNTRVJUX0VRKGNhbmFyeSwgYnVmZmVyW2ldKTsK
KyAgICB9CisgICAgZm9yIChzaXplX3QgaSA9IGtDaHVua1NpemUgKyBjb21wb25lbnRzOyBpIDwg
YnVmZmVyLnNpemUoKTsgaSsrKQorICAgIHsKKyAgICAgICAgQVNTRVJUX0VRKGNhbmFyeSwgYnVm
ZmVyW2ldKTsKKyAgICB9Cit9CisKKy8vIENoZWNrIHRoYXQgZ2V0dGluZyBhbiBlbGVtZW50IGFy
cmF5IGRvZXNuJ3QgcmV0dXJuIHRoZSB3aG9sZSBhcnJheS4KK1RFU1RfUChVbmlmb3JtVGVzdEVT
MywgUmV0dXJuc09ubHlPbmVBcnJheUVsZW1lbnQpCit7CisgICAgc3RhdGljIGNvbnN0IHNpemVf
dCBrQXJyYXlTaXplID0gNDsKKyAgICBzdHJ1Y3QgVW5pZm9ybUFycmF5SW5mbworICAgIHsKKyAg
ICAgICAgVW5pZm9ybUFycmF5SW5mbyhzdGQ6OnN0cmluZyB0eXBlLCBzdGQ6OnN0cmluZyBuYW1l
LCBpbnQgY29tcG9uZW50cykKKyAgICAgICAgICAgIDogdHlwZSh0eXBlKSwgbmFtZShuYW1lKSwg
Y29tcG9uZW50cyhjb21wb25lbnRzKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgc3Rk
OjpzdHJpbmcgdHlwZTsKKyAgICAgICAgc3RkOjpzdHJpbmcgbmFtZTsKKyAgICAgICAgaW50IGNv
bXBvbmVudHM7CisgICAgfTsKKworICAgIC8vIENoZWNrIGZvciB2YXJpb3VzIG51bWJlciBvZiBj
b21wb25lbnRzIGFuZCB0eXBlcworICAgIHN0ZDo6dmVjdG9yPFVuaWZvcm1BcnJheUluZm8+IHVu
aWZvcm1BcnJheXM7CisgICAgdW5pZm9ybUFycmF5cy5lbXBsYWNlX2JhY2soImJvb2wiLCAidUJv
b2wiLCAxKTsKKyAgICB1bmlmb3JtQXJyYXlzLmVtcGxhY2VfYmFjaygidmVjMiIsICJ1RmxvYXQi
LCAyKTsKKyAgICB1bmlmb3JtQXJyYXlzLmVtcGxhY2VfYmFjaygiaXZlYzMiLCAidUludCIsIDMp
OworICAgIHVuaWZvcm1BcnJheXMuZW1wbGFjZV9iYWNrKCJ1dmVjNCIsICJ1VWludCIsIDQpOwor
CisgICAgc3RkOjpvc3RyaW5nc3RyZWFtIHVuaWZvcm1TdHJlYW07CisgICAgc3RkOjpvc3RyaW5n
c3RyZWFtIGFkZGl0aW9uU3RyZWFtOworICAgIGZvciAoY29uc3QgYXV0byAmYXJyYXkgOiB1bmlm
b3JtQXJyYXlzKQorICAgIHsKKyAgICAgICAgdW5pZm9ybVN0cmVhbSA8PCAidW5pZm9ybSAiIDw8
IGFycmF5LnR5cGUgPDwgIiAiIDw8IGFycmF5Lm5hbWUgPDwgIlsiCisgICAgICAgICAgICAgICAg
ICAgICAgPDwgVG9TdHJpbmcoa0FycmF5U2l6ZSkgPDwgIl07XG4iOworCisgICAgICAgIC8vIFdl
IG5lZWQgdG8gbWFrZSB1c2Ugb2YgdGhlIHVuaWZvcm1zIG9yIHRoZXkgZ2V0IGNvbXBpbGVkIG91
dC4KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmIChhcnJheS5jb21wb25lbnRzID09IDEpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgYWRkaXRpb25TdHJlYW0gPDwgIiArIGZsb2F0KCIgPDwgYXJyYXkubmFtZSA8PCAi
WyIgPDwgaSA8PCAiXSkiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbXBvbmVudCA9IDA7IGNvbXBvbmVu
dCA8IGFycmF5LmNvbXBvbmVudHM7IGNvbXBvbmVudCsrKQorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgYWRkaXRpb25TdHJlYW0gPDwgIiArIGZsb2F0KCIgPDwgYXJyYXku
bmFtZSA8PCAiWyIgPDwgaSA8PCAiXVsiIDw8IGNvbXBvbmVudAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8PCAiXSkiOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2ZXJ0ZXhTaGFk
ZXIgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iICsKKyAgICAgICAgdW5pZm9ybVN0cmVh
bS5zdHIoKSArCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAg
ICAiICAgIGdsX1Bvc2l0aW9uID0gdmVjNCgxLjAiICsgYWRkaXRpb25TdHJlYW0uc3RyKCkgKyAi
KTtcbiIKKyAgICAgICAgIn0iOworCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdtZW50U2hh
ZGVyID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgdmVjNCBjb2xvcjtcbiIKKyAgICAgICAgInZv
aWQgbWFpbiAoKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGNvbG9yID0gdmVjNCgx
LCAwLCAwLCAxKTtcbiIKKyAgICAgICAgIn0iOworCisgICAgbVByb2dyYW0gPSBDb21waWxlUHJv
Z3JhbSh2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyKTsKKyAgICBBU1NFUlRfTkUoMHUsIG1Q
cm9ncmFtKTsKKworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisKKyAgICBmb3IgKGNvbnN0
IGF1dG8gJnVuaWZvcm1BcnJheSA6IHVuaWZvcm1BcnJheXMpCisgICAgeworICAgICAgICBmb3Ig
KHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwga0FycmF5U2l6ZTsgaW5kZXgrKykKKyAgICAgICAg
eworICAgICAgICAgICAgc3RkOjpzdHJpbmcgc3RySW5kZXggPSAiWyIgKyBUb1N0cmluZyhpbmRl
eCkgKyAiXSI7CisgICAgICAgICAgICAvLyBDaGVjayBhbGwgdGhlIGRpZmZlcmVudCBnbEdldFVu
aWZvcm12IGZ1bmN0aW9ucworICAgICAgICAgICAgQ2hlY2tPbmVFbGVtZW50PGZsb2F0PihnbEdl
dFVuaWZvcm1mdiwgbVByb2dyYW0sIHVuaWZvcm1BcnJheS5uYW1lICsgc3RySW5kZXgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWZvcm1BcnJheS5jb21wb25lbnRzLCA0
Mi40MjQyZik7CisgICAgICAgICAgICBDaGVja09uZUVsZW1lbnQ8aW50PihnbEdldFVuaWZvcm1p
diwgbVByb2dyYW0sIHVuaWZvcm1BcnJheS5uYW1lICsgc3RySW5kZXgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bmlmb3JtQXJyYXkuY29tcG9uZW50cywgMHg3QkFEQkVENSk7
CisgICAgICAgICAgICBDaGVja09uZUVsZW1lbnQ8dW5zaWduZWQgaW50PihnbEdldFVuaWZvcm11
aXYsIG1Qcm9ncmFtLCB1bmlmb3JtQXJyYXkubmFtZSArIHN0ckluZGV4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pZm9ybUFycmF5LmNvbXBvbmVudHMsIDB4
REVBREJFRUYpOworICAgICAgICB9CisgICAgfQorfQorCisvLyBVc2UgdGhpcyB0byBzZWxlY3Qg
d2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFq
b3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgorQU5HTEVfSU5T
VEFOVElBVEVfVEVTVChVbmlmb3JtVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0Qz
RDkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCisgICAgICAgICAgICAg
ICAgICAgICAgIEVTMl9EM0QxMV9GTDlfMygpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJf
T1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpKTsKK0FOR0xF
X0lOU1RBTlRJQVRFX1RFU1QoVW5pZm9ybVRlc3RFUzMsIEVTM19EM0QxMSgpLCBFUzNfT1BFTkdM
KCksIEVTM19PUEVOR0xFUygpKTsKKworfSAvLyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9VbnBhY2tBbGlnbm1lbnRUZXN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMv
VW5wYWNrQWxpZ25tZW50VGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1VucGFja0FsaWdubWVudFRlc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMzI1IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAidGVzdF91
dGlscy9BTkdMRVRlc3QuaCIKKwordXNpbmcgbmFtZXNwYWNlIGFuZ2xlOworCituYW1lc3BhY2UK
K3sKKworY2xhc3MgVW5wYWNrQWxpZ25tZW50VGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAg
cHJvdGVjdGVkOgorICAgIFVucGFja0FsaWdubWVudFRlc3QoKQorICAgIHsKKyAgICAgICAgc2V0
V2luZG93V2lkdGgoMTI4KTsKKyAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7CisgICAgICAg
IHNldENvbmZpZ1JlZEJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKKyAg
ICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4
KTsKKyAgICAgICAgc2V0Q29uZmlnRGVwdGhCaXRzKDI0KTsKKworICAgICAgICBtUHJvZ3JhbSA9
IDA7CisgICAgfQorCisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBB
TkdMRVRlc3Q6OlNldFVwKCk7CisKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hh
ZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQorICAgICAgICAoCisgICAgICAgICAgICBwcmVjaXNp
b24gaGlnaHAgZmxvYXQ7CisgICAgICAgICAgICBhdHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjsKKwor
ICAgICAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBn
bF9Qb3NpdGlvbiA9IHBvc2l0aW9uOworICAgICAgICAgICAgfQorICAgICAgICApOworCisgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJD
RQorICAgICAgICAoCisgICAgICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7CisKKyAgICAg
ICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xfRnJh
Z0NvbG9yID0gdGV4dHVyZTJEKHRleCwgdmVjMigwLjAsIDEuMCkpOworICAgICAgICAgICAgfQor
ICAgICAgICApOworCisgICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hh
ZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgICAgIGlmIChtUHJvZ3JhbSA9
PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBGQUlMKCkgPDwgInNoYWRlciBjb21waWxhdGlv
biBmYWlsZWQuIjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKKworICAgICAg
ICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7CisgICAgfQorCisgICAgdm9pZCBnZXRQaXhlbFNpemUo
R0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIHVuc2lnbmVkIGludCogc2l6ZSkKKyAgICB7Cisg
ICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfVU5TSUdO
RURfU0hPUlRfNV81XzVfMToKKyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81
OgorICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNDoKKyAgICAgICAgICAg
ICpzaXplID0gc2l6ZW9mKEdMdXNob3J0KTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBjb21wQ291bnQgPSAwOworICAgICAgICAgICAgICAgIHN3aXRjaCAoZm9y
bWF0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdCQTog
ICAgICAgICAgICBjb21wQ291bnQgPSA0OyBicmVhazsKKyAgICAgICAgICAgICAgICAgIGNhc2Ug
R0xfUkdCOiAgICAgICAgICAgICBjb21wQ291bnQgPSAzOyBicmVhazsKKyAgICAgICAgICAgICAg
ICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBOiBjb21wQ291bnQgPSAyOyBicmVhazsKKyAgICAg
ICAgICAgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFOiAgICAgICBjb21wQ291bnQgPSAxOyBicmVh
azsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfQUxQSEE6ICAgICAgICAgICBjb21wQ291bnQg
PSAxOyBicmVhazsKKyAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICBG
QUlMKCkgPDwgInVua25vd24gcGl4ZWwgZm9ybWF0LiI7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICpzaXplID0gc2l6ZW9mKEdMdWJ5dGUpICogY29tcENvdW50OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIEZBSUwoKSA8PCAidW5rbm93biBwaXhlbCB0eXBlLiI7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBib29sIGZvcm1hdEhhc1JHQihHTGVudW0gZm9ybWF0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIChmb3JtYXQgIT0gR0xfQUxQSEEpOworICAgIH0KKworICAgIHZvaWQgdGVzdEFsaWdubWVu
dChpbnQgYWxpZ25tZW50LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBHTGVudW0gZm9ybWF0LCBHTGVu
dW0gdHlwZSkKKyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgd2lkdGgg
PSA3OworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGhlaWdodCA9IDI7CisKKyAg
ICAgICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfQUxJR05NRU5ULCBhbGlnbm1lbnQpOworCisg
ICAgICAgIEdMaW50IHJlYWRiYWNrQWxpZ25tZW50OworICAgICAgICBnbEdldEludGVnZXJ2KEdM
X1VOUEFDS19BTElHTk1FTlQsICZyZWFkYmFja0FsaWdubWVudCk7CisgICAgICAgIEVYUEVDVF9F
UShhbGlnbm1lbnQsIHJlYWRiYWNrQWxpZ25tZW50KTsKKworICAgICAgICBHTHVieXRlIGJ1Zlsx
MDI0XTsKKyAgICAgICAgbWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mKGJ1ZikpOworCisgICAgICAgIHVu
c2lnbmVkIGludCBwaXhlbFNpemU7CisgICAgICAgIGdldFBpeGVsU2l6ZShmb3JtYXQsIHR5cGUs
ICZwaXhlbFNpemUpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVs
U2l6ZTsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBidWZbb2Zmc2V0K2ldID0gMHhGRjsK
KyAgICAgICAgfQorCisgICAgICAgIEdMdWludCB0ZXg7CisgICAgICAgIGdsR2VuVGV4dHVyZXMo
MSwgJnRleCk7CisgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4KTsKKwor
ICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCAwLCBmb3JtYXQsIHR5cGUsICZidWZbMF0pOworICAgICAgICBnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOworICAgICAg
ICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NM
QU1QX1RPX0VER0UpOworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOworCisgICAgICAgIGRyYXdRdWFkKG1Q
cm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgICAgICBHTHVieXRlIGV4cGVjdGVkUkdC
ID0gZm9ybWF0SGFzUkdCKGZvcm1hdCkgPyAyNTUgOiAwOworICAgICAgICBFWFBFQ1RfUElYRUxf
RVEoMCwgMCwgZXhwZWN0ZWRSR0IsIGV4cGVjdGVkUkdCLCBleHBlY3RlZFJHQiwgMjU1KTsKKwor
ICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0ZXgpOworICAgIH0KKworICAgIEdMdWludCBt
UHJvZ3JhbTsKK307CisKK1RFU1RfUChVbnBhY2tBbGlnbm1lbnRUZXN0LCBEZWZhdWx0QWxpZ25t
ZW50KQoreworICAgIEdMaW50IGRlZmF1bHRBbGlnbm1lbnQ7CisgICAgZ2xHZXRJbnRlZ2VydihH
TF9VTlBBQ0tfQUxJR05NRU5ULCAmZGVmYXVsdEFsaWdubWVudCk7CisgICAgRVhQRUNUX0VRKGRl
ZmF1bHRBbGlnbm1lbnQsIDQpOworfQorCisKK1RFU1RfUChVbnBhY2tBbGlnbm1lbnRUZXN0LCBB
bGlnbm1lbnQxUkdCQVVCeXRlKQoreworICAgIHRlc3RBbGlnbm1lbnQoMSwgNyAqIDQsIEdMX1JH
QkEsIEdMX1VOU0lHTkVEX0JZVEUpOworfQorCitURVNUX1AoVW5wYWNrQWxpZ25tZW50VGVzdCwg
QWxpZ25tZW50MVJHQlVCeXRlKQoreworICAgIHRlc3RBbGlnbm1lbnQoMSwgNyAqIDMsIEdMX1JH
QiwgR0xfVU5TSUdORURfQllURSk7Cit9CisKK1RFU1RfUChVbnBhY2tBbGlnbm1lbnRUZXN0LCBB
bGlnbm1lbnQxUkdCQVVTaG9ydDQ0NDQpCit7CisgICAgdGVzdEFsaWdubWVudCgxLCA3ICogMiwg
R0xfUkdCQSwgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNCk7Cit9CisKK1RFU1RfUChVbnBhY2tB
bGlnbm1lbnRUZXN0LCBBbGlnbm1lbnQxUkdCQVVTaG9ydDU1NTEpCit7CisgICAgdGVzdEFsaWdu
bWVudCgxLCA3ICogMiwgR0xfUkdCQSwgR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMSk7Cit9CisK
K1RFU1RfUChVbnBhY2tBbGlnbm1lbnRUZXN0LCBBbGlnbm1lbnQxUkdCQVVTaG9ydDU2NSkKK3sK
KyAgICB0ZXN0QWxpZ25tZW50KDEsIDcgKiAyLCBHTF9SR0IsIEdMX1VOU0lHTkVEX1NIT1JUXzVf
Nl81KTsKK30KKworVEVTVF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVudDFMQVVCeXRl
KQoreworICAgIHRlc3RBbGlnbm1lbnQoMSwgNyAqIDIsIEdMX0xVTUlOQU5DRV9BTFBIQSwgR0xf
VU5TSUdORURfQllURSk7Cit9CisKK1RFU1RfUChVbnBhY2tBbGlnbm1lbnRUZXN0LCBBbGlnbm1l
bnQxTFVCeXRlKQoreworICAgIHRlc3RBbGlnbm1lbnQoMSwgNywgR0xfTFVNSU5BTkNFLCBHTF9V
TlNJR05FRF9CWVRFKTsKK30KKworVEVTVF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVu
dDFBVUJ5dGUpCit7CisgICAgdGVzdEFsaWdubWVudCgxLCA3LCBHTF9BTFBIQSwgR0xfVU5TSUdO
RURfQllURSk7Cit9CisKKworVEVTVF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVudDJS
R0JBVUJ5dGUpCit7CisgICAgdGVzdEFsaWdubWVudCgyLCA3ICogNCwgR0xfUkdCQSwgR0xfVU5T
SUdORURfQllURSk7Cit9CisKK1RFU1RfUChVbnBhY2tBbGlnbm1lbnRUZXN0LCBBbGlnbm1lbnQy
UkdCVUJ5dGUpCit7CisgICAgdGVzdEFsaWdubWVudCgyLCA3ICogMyArIDEsIEdMX1JHQiwgR0xf
VU5TSUdORURfQllURSk7Cit9CisKK1RFU1RfUChVbnBhY2tBbGlnbm1lbnRUZXN0LCBBbGlnbm1l
bnQyUkdCQVVTaG9ydDQ0NDQpCit7CisgICAgdGVzdEFsaWdubWVudCgyLCA3ICogMiwgR0xfUkdC
QSwgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNCk7Cit9CisKK1RFU1RfUChVbnBhY2tBbGlnbm1l
bnRUZXN0LCBBbGlnbm1lbnQyUkdCQVVTaG9ydDU1NTEpCit7CisgICAgdGVzdEFsaWdubWVudCgy
LCA3ICogMiwgR0xfUkdCQSwgR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMSk7Cit9CisKK1RFU1Rf
UChVbnBhY2tBbGlnbm1lbnRUZXN0LCBBbGlnbm1lbnQyUkdCQVVTaG9ydDU2NSkKK3sKKyAgICB0
ZXN0QWxpZ25tZW50KDIsIDcgKiAyLCBHTF9SR0IsIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81KTsK
K30KKworVEVTVF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVudDJMQVVCeXRlKQorewor
ICAgIHRlc3RBbGlnbm1lbnQoMiwgNyAqIDIsIEdMX0xVTUlOQU5DRV9BTFBIQSwgR0xfVU5TSUdO
RURfQllURSk7Cit9CisKK1RFU1RfUChVbnBhY2tBbGlnbm1lbnRUZXN0LCBBbGlnbm1lbnQyTEFC
eXRlKQoreworICAgIHRlc3RBbGlnbm1lbnQoMiwgNyArIDEsIEdMX0xVTUlOQU5DRSwgR0xfVU5T
SUdORURfQllURSk7Cit9CisKK1RFU1RfUChVbnBhY2tBbGlnbm1lbnRUZXN0LCBBbGlnbm1lbnQy
QVVCeXRlKQoreworICAgIHRlc3RBbGlnbm1lbnQoMiwgNyArIDEsIEdMX0FMUEhBLCBHTF9VTlNJ
R05FRF9CWVRFKTsKK30KKworCitURVNUX1AoVW5wYWNrQWxpZ25tZW50VGVzdCwgQWxpZ25tZW50
NFJHQkFVQnl0ZSkKK3sKKyAgICB0ZXN0QWxpZ25tZW50KDQsIDcgKiA0LCBHTF9SR0JBLCBHTF9V
TlNJR05FRF9CWVRFKTsKK30KKworVEVTVF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVu
dDRSR0JVQnl0ZSkKK3sKKyAgICB0ZXN0QWxpZ25tZW50KDQsIDcgKiAzICsgMywgR0xfUkdCLCBH
TF9VTlNJR05FRF9CWVRFKTsKK30KKworVEVTVF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdu
bWVudDRSR0JBVVNob3J0NDQ0NCkKK3sKKyAgICB0ZXN0QWxpZ25tZW50KDQsIDcgKiAyICsgMiwg
R0xfUkdCQSwgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNCk7Cit9CisKK1RFU1RfUChVbnBhY2tB
bGlnbm1lbnRUZXN0LCBBbGlnbm1lbnQ0UkdCQVVTaG9ydDU1NTEpCit7CisgICAgdGVzdEFsaWdu
bWVudCg0LCA3ICogMiArIDIsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEpOwor
fQorCitURVNUX1AoVW5wYWNrQWxpZ25tZW50VGVzdCwgQWxpZ25tZW50NFJHQkFVU2hvcnQ1NjUp
Cit7CisgICAgdGVzdEFsaWdubWVudCg0LCA3ICogMiArIDIsIEdMX1JHQiwgR0xfVU5TSUdORURf
U0hPUlRfNV82XzUpOworfQorCitURVNUX1AoVW5wYWNrQWxpZ25tZW50VGVzdCwgQWxpZ25tZW50
NExBVUJ5dGUpCit7CisgICAgdGVzdEFsaWdubWVudCg0LCA3ICogMiArIDIsIEdMX0xVTUlOQU5D
RV9BTFBIQSwgR0xfVU5TSUdORURfQllURSk7Cit9CisKK1RFU1RfUChVbnBhY2tBbGlnbm1lbnRU
ZXN0LCBBbGlnbm1lbnQ0TFVCeXRlKQoreworICAgIHRlc3RBbGlnbm1lbnQoNCwgNyArIDEsIEdM
X0xVTUlOQU5DRSwgR0xfVU5TSUdORURfQllURSk7Cit9CisKK1RFU1RfUChVbnBhY2tBbGlnbm1l
bnRUZXN0LCBBbGlnbm1lbnQ0QVVCeXRlKQoreworICAgIHRlc3RBbGlnbm1lbnQoNCwgNyArIDEs
IEdMX0FMUEhBLCBHTF9VTlNJR05FRF9CWVRFKTsKK30KKworCitURVNUX1AoVW5wYWNrQWxpZ25t
ZW50VGVzdCwgQWxpZ25tZW50OFJHQkFVQnl0ZSkKK3sKKyAgICB0ZXN0QWxpZ25tZW50KDgsIDcg
KiA0ICsgNCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSk7Cit9CisKK1RFU1RfUChVbnBhY2tB
bGlnbm1lbnRUZXN0LCBBbGlnbm1lbnQ4UkdCVUJ5dGUpCit7CisgICAgdGVzdEFsaWdubWVudCg4
LCA3ICogMyArIDMsIEdMX1JHQiwgR0xfVU5TSUdORURfQllURSk7Cit9CisKK1RFU1RfUChVbnBh
Y2tBbGlnbm1lbnRUZXN0LCBBbGlnbm1lbnQ4UkdCQVVTaG9ydDQ0NDQpCit7CisgICAgdGVzdEFs
aWdubWVudCg4LCA3ICogMiArIDIsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQp
OworfQorCitURVNUX1AoVW5wYWNrQWxpZ25tZW50VGVzdCwgQWxpZ25tZW50OFJHQkFVU2hvcnQ1
NTUxKQoreworICAgIHRlc3RBbGlnbm1lbnQoOCwgNyAqIDIgKyAyLCBHTF9SR0JBLCBHTF9VTlNJ
R05FRF9TSE9SVF81XzVfNV8xKTsKK30KKworVEVTVF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFs
aWdubWVudDhSR0JBVVNob3J0NTY1KQoreworICAgIHRlc3RBbGlnbm1lbnQoOCwgNyAqIDIgKyAy
LCBHTF9SR0IsIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81KTsKK30KKworVEVTVF9QKFVucGFja0Fs
aWdubWVudFRlc3QsIEFsaWdubWVudDhMQVVCeXRlKQoreworICAgIHRlc3RBbGlnbm1lbnQoOCwg
NyAqIDIgKyAyLCBHTF9MVU1JTkFOQ0VfQUxQSEEsIEdMX1VOU0lHTkVEX0JZVEUpOworfQorCitU
RVNUX1AoVW5wYWNrQWxpZ25tZW50VGVzdCwgQWxpZ25tZW50OExVQnl0ZSkKK3sKKyAgICB0ZXN0
QWxpZ25tZW50KDgsIDcgKyAxLCBHTF9MVU1JTkFOQ0UsIEdMX1VOU0lHTkVEX0JZVEUpOworfQor
CitURVNUX1AoVW5wYWNrQWxpZ25tZW50VGVzdCwgQWxpZ25tZW50OEFVQnl0ZSkKK3sKKyAgICB0
ZXN0QWxpZ25tZW50KDgsIDcgKyAxLCBHTF9BTFBIQSwgR0xfVU5TSUdORURfQllURSk7Cit9CisK
Ky8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCBy
ZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUg
cnVuIGFnYWluc3QuCitBTkdMRV9JTlNUQU5USUFURV9URVNUKFVucGFja0FsaWdubWVudFRlc3Qs
CisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCisgICAgICAgICAgICAgICAgICAg
ICAgIEVTMl9EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCisg
ICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgRVMyX09QRU5HTEVTKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygp
KTsKKworfSAvLyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9nbF90ZXN0cy9VbnBhY2tSb3dMZW5ndGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9VbnBhY2tSb3dMZW5ndGguY3BwCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0
cy9VbnBhY2tSb3dMZW5ndGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMwIEBACisv
LworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIGFuZ2xlOworCituYW1lc3BhY2UKK3sKKworY2xhc3MgVW5wYWNrUm93TGVuZ3RoVGVz
dCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIFVucGFja1Jvd0xlbmd0
aFRlc3QoKQorICAgIHsKKyAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKKyAgICAgICAgc2V0
V2luZG93SGVpZ2h0KDEyOCk7CisgICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7CisgICAgICAg
IHNldENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Cisg
ICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnRGVwdGhCaXRz
KDI0KTsKKworICAgICAgICBtUHJvZ3JhbSA9IDA7CisgICAgfQorCisgICAgdm9pZCBTZXRVcCgp
IG92ZXJyaWRlCisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7CisKKyAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQorICAg
ICAgICAoCisgICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisgICAgICAgICAgICBh
dHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjsKKworICAgICAgICAgICAgdm9pZCBtYWluKCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOworICAgICAg
ICAgICAgfQorICAgICAgICApOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50
U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQorICAgICAgICAoCisgICAgICAgICAgICB1bmlm
b3JtIHNhbXBsZXIyRCB0ZXg7CisKKyAgICAgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHRleCwgdmVjMigw
LjAsIDEuMCkpOworICAgICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAgIG1Qcm9ncmFt
ID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJj
ZSk7CisgICAgICAgIGlmIChtUHJvZ3JhbSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBG
QUlMKCkgPDwgInNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQuIjsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgZ2xEZWxldGVQ
cm9ncmFtKG1Qcm9ncmFtKTsKKworICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7CisgICAg
fQorCisgICAgdm9pZCB0ZXN0Um93TGVuZ3RoKGludCB0ZXhTaXplLCBpbnQgcm93TGVuZ3RoKQor
ICAgIHsKKyAgICAgICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfUk9XX0xFTkdUSCwgcm93TGVu
Z3RoKTsKKworICAgICAgICBpZiAoKGdldENsaWVudE1ham9yVmVyc2lvbigpID09IDMpIHx8IGV4
dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF91bnBhY2tfc3ViaW1hZ2UiKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgLy8gT25seSB0ZXhTaXplICogdGV4U2l6ZSByZWdpb24gaXMgZmlsbGVkIGFzIFdI
SVRFLCBvdGhlciBwYXJ0cyBhcmUgQkxBQ0suCisgICAgICAgICAgICAvLyBJZiB0aGUgVU5QQUNL
X1JPV19MRU5HVEggaXMgaW1wbGVtZW50ZWQgY29ycmVjdGx5LCBhbGwgdGV4ZWxzIGluc2lkZSB0
aGlzIHRleHR1cmUgYXJlIFdISVRFLgorICAgICAgICAgICAgc3RkOjp2ZWN0b3I8R0x1Ynl0ZT4g
YnVmKHJvd0xlbmd0aCAqIHRleFNpemUgKiA0KTsKKyAgICAgICAgICAgIGZvciAoaW50IHkgPSAw
OyB5IDwgdGV4U2l6ZTsgeSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN0ZDo6
dmVjdG9yPEdMdWJ5dGU+OjppdGVyYXRvciByb3dJdGVyID0gYnVmLmJlZ2luKCkgKyB5ICogcm93
TGVuZ3RoICogNDsKKyAgICAgICAgICAgICAgICBzdGQ6OmZpbGwocm93SXRlciwgcm93SXRlciAr
IHRleFNpemUgKiA0LCBzdGF0aWNfY2FzdDxHTHVieXRlPigyNTV1KSk7CisgICAgICAgICAgICAg
ICAgc3RkOjpmaWxsKHJvd0l0ZXIgKyB0ZXhTaXplICogNCwgcm93SXRlciArIHJvd0xlbmd0aCAq
IDQsIHN0YXRpY19jYXN0PEdMdWJ5dGU+KDB1KSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIEdMdWludCB0ZXg7CisgICAgICAgICAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXgpOworICAg
ICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXgpOworCisgICAgICAgICAg
ICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgdGV4U2l6ZSwgdGV4U2l6
ZSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgJmJ1ZlswXSk7CisgICAgICAgICAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9M
SU5FQVIpOworICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICAgICAgICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7
CisKKyAgICAgICAgICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKwor
ICAgICAgICAgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDI1NSwgMjU1LCAyNTUsIDI1NSk7Cisg
ICAgICAgICAgICBFWFBFQ1RfUElYRUxfRVEoMSwgMCwgMjU1LCAyNTUsIDI1NSwgMjU1KTsKKwor
ICAgICAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGV4KTsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElE
X0VOVU0pOworICAgICAgICB9CisgICAgfQorCisgICAgR0x1aW50IG1Qcm9ncmFtOworfTsKKwor
VEVTVF9QKFVucGFja1Jvd0xlbmd0aFRlc3QsIFJvd0xlbmd0aDEyOCkKK3sKKyAgICB0ZXN0Um93
TGVuZ3RoKDEyOCwgMTI4KTsKK30KKworVEVTVF9QKFVucGFja1Jvd0xlbmd0aFRlc3QsIFJvd0xl
bmd0aDEwMjQpCit7CisgICAgdGVzdFJvd0xlbmd0aCgxMjgsIDEwMjQpOworfQorCisvLyBVc2Ug
dGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIs
IHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2Fp
bnN0LgorQU5HTEVfSU5TVEFOVElBVEVfVEVTVChVbnBhY2tSb3dMZW5ndGhUZXN0LAorICAgICAg
ICAgICAgICAgICAgICAgICBFUzNfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMy
X0QzRDExKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCisgICAgICAgICAg
ICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09Q
RU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOworCit9IC8vIG5hbWVzcGFjZQpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1ZlcnRleEF0dHJpYnV0
ZVRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9nbF90ZXN0cy9WZXJ0ZXhBdHRyaWJ1dGVUZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvVmVydGV4QXR0cmlidXRlVGVz
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4OTQgQEAKKy8vCisvLyBDb3B5cmlnaHQg
MjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpbmNs
dWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisK
K25hbWVzcGFjZQoreworCitHTHNpemVpIFR5cGVTdHJpZGUoR0xlbnVtIGF0dHJpYlR5cGUpCit7
CisgICAgc3dpdGNoIChhdHRyaWJUeXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05F
RF9CWVRFOgorICAgICAgICBjYXNlIEdMX0JZVEU6CisgICAgICAgICAgICByZXR1cm4gMTsKKyAg
ICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAgICAgICAgY2FzZSBHTF9TSE9SVDoKKyAg
ICAgICAgICAgIHJldHVybiAyOworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKKyAgICAg
ICAgY2FzZSBHTF9JTlQ6CisgICAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICByZXR1
cm4gNDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorR0xm
bG9hdCBOb3JtYWxpemUoVCB2YWx1ZSkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfaW50
ZWdyYWw8VD46OnZhbHVlLCAiSW50ZWdlciByZXF1aXJlZC4iKTsKKyAgICBpZiAoc3RkOjppc19z
aWduZWQ8VD46OnZhbHVlKQorICAgIHsKKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Om1h
a2VfdW5zaWduZWQ8VD46OnR5cGUgdW5zaWduZWRfdHlwZTsKKyAgICAgICAgcmV0dXJuICgyLjBm
ICogc3RhdGljX2Nhc3Q8R0xmbG9hdD4odmFsdWUpICsgMS4wZikgLworICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8R0xmbG9hdD4oc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZF90eXBlPjo6
bWF4KCkpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8R0xmbG9hdD4odmFsdWUpIC8gc3RhdGljX2Nhc3Q8R0xmbG9hdD4oc3RkOjpudW1lcmljX2xp
bWl0czxUPjo6bWF4KCkpOworICAgIH0KK30KKworY2xhc3MgVmVydGV4QXR0cmlidXRlVGVzdCA6
IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIFZlcnRleEF0dHJpYnV0ZVRl
c3QoKQorICAgICAgICA6IG1Qcm9ncmFtKDApLCBtVGVzdEF0dHJpYigtMSksIG1FeHBlY3RlZEF0
dHJpYigtMSksIG1CdWZmZXIoMCksIG1RdWFkQnVmZmVyKDApCisgICAgeworICAgICAgICBzZXRX
aW5kb3dXaWR0aCgxMjgpOworICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKKyAgICAgICAg
c2V0Q29uZmlnUmVkQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAg
ICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgp
OworICAgICAgICBzZXRDb25maWdEZXB0aEJpdHMoMjQpOworICAgIH0KKworICAgIGVudW0gY2xh
c3MgU291cmNlCisgICAgeworICAgICAgICBCVUZGRVIsCisgICAgICAgIElNTUVESUFURSwKKyAg
ICB9OworCisgICAgc3RydWN0IFRlc3REYXRhIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCisg
ICAgeworICAgICAgICBUZXN0RGF0YShHTGVudW0gdHlwZUluLAorICAgICAgICAgICAgICAgICBH
TGJvb2xlYW4gbm9ybWFsaXplZEluLAorICAgICAgICAgICAgICAgICBTb3VyY2Ugc291cmNlSW4s
CisgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmlucHV0RGF0YUluLAorICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICpleHBlY3RlZERhdGFJbikKKyAgICAgICAgICAgIDogdHlwZSh0
eXBlSW4pLAorICAgICAgICAgICAgICBub3JtYWxpemVkKG5vcm1hbGl6ZWRJbiksCisgICAgICAg
ICAgICAgIGJ1ZmZlck9mZnNldCgwKSwKKyAgICAgICAgICAgICAgc291cmNlKHNvdXJjZUluKSwK
KyAgICAgICAgICAgICAgaW5wdXREYXRhKGlucHV0RGF0YUluKSwKKyAgICAgICAgICAgICAgZXhw
ZWN0ZWREYXRhKGV4cGVjdGVkRGF0YUluKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAg
ICBHTGVudW0gdHlwZTsKKyAgICAgICAgR0xib29sZWFuIG5vcm1hbGl6ZWQ7CisgICAgICAgIHNp
emVfdCBidWZmZXJPZmZzZXQ7CisgICAgICAgIFNvdXJjZSBzb3VyY2U7CisKKyAgICAgICAgY29u
c3Qgdm9pZCAqaW5wdXREYXRhOworICAgICAgICBjb25zdCBHTGZsb2F0ICpleHBlY3RlZERhdGE7
CisgICAgfTsKKworICAgIHZvaWQgc2V0dXBUZXN0KGNvbnN0IFRlc3REYXRhICZ0ZXN0LCBHTGlu
dCB0eXBlU2l6ZSkKKyAgICB7CisgICAgICAgIGlmIChtUHJvZ3JhbSA9PSAwKQorICAgICAgICB7
CisgICAgICAgICAgICBpbml0QmFzaWNQcm9ncmFtKCk7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAodGVzdC5zb3VyY2UgPT0gU291cmNlOjpCVUZGRVIpCisgICAgICAgIHsKKyAgICAgICAgICAg
IEdMc2l6ZWkgZGF0YVNpemUgPSBtVmVydGV4Q291bnQgKiBUeXBlU3RyaWRlKHRlc3QudHlwZSkg
KiB0eXBlU2l6ZTsKKyAgICAgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1C
dWZmZXIpOworICAgICAgICAgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgZGF0YVNp
emUsIHRlc3QuaW5wdXREYXRhLCBHTF9TVEFUSUNfRFJBVyk7CisgICAgICAgICAgICBnbFZlcnRl
eEF0dHJpYlBvaW50ZXIobVRlc3RBdHRyaWIsIHR5cGVTaXplLCB0ZXN0LnR5cGUsIHRlc3Qubm9y
bWFsaXplZCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJl
dF9jYXN0PEdMdm9pZCAqPih0ZXN0LmJ1ZmZlck9mZnNldCkpOworICAgICAgICAgICAgZ2xCaW5k
QnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgMCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAg
ICAgICB7CisgICAgICAgICAgICBBU1NFUlRfRVEoU291cmNlOjpJTU1FRElBVEUsIHRlc3Quc291
cmNlKTsKKyAgICAgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIDApOworICAg
ICAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKG1UZXN0QXR0cmliLCB0eXBlU2l6ZSwgdGVz
dC50eXBlLCB0ZXN0Lm5vcm1hbGl6ZWQsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdC5pbnB1dERhdGEpOworICAgICAgICB9CisKKyAgICAgICAgZ2xWZXJ0ZXhBdHRy
aWJQb2ludGVyKG1FeHBlY3RlZEF0dHJpYiwgdHlwZVNpemUsIEdMX0ZMT0FULCBHTF9GQUxTRSwg
MCwgdGVzdC5leHBlY3RlZERhdGEpOworCisgICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJy
YXkobVRlc3RBdHRyaWIpOworICAgICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1FeHBl
Y3RlZEF0dHJpYik7CisgICAgfQorCisgICAgdm9pZCBjaGVja1BpeGVscygpCisgICAgeworICAg
ICAgICBHTGludCB2aWV3cG9ydFNpemVbNF07CisgICAgICAgIGdsR2V0SW50ZWdlcnYoR0xfVklF
V1BPUlQsIHZpZXdwb3J0U2l6ZSk7CisKKyAgICAgICAgR0xpbnQgbWlkUGl4ZWxYID0gKHZpZXdw
b3J0U2l6ZVswXSArIHZpZXdwb3J0U2l6ZVsyXSkgLyAyOworICAgICAgICBHTGludCBtaWRQaXhl
bFkgPSAodmlld3BvcnRTaXplWzFdICsgdmlld3BvcnRTaXplWzNdKSAvIDI7CisKKyAgICAgICAg
Ly8gV2UgbmVlZCB0byBvZmZzZXQgb3VyIGNoZWNrcyBmcm9tIHRyaWFuZ2xlIGVkZ2VzIHRvIGVu
c3VyZSB3ZSBkb24ndCBmYWxsIG9uIGEgc2luZ2xlIHRyaQorICAgICAgICAvLyBBdm9pZCBtYWtp
bmcgYXNzdW1wdGlvbnMgb2YgZHJhd1F1YWQgd2l0aCBmb3VyIGNoZWNrcyB0byBjaGVjayB0aGUg
Zm91ciBwb3NzaWJsZSB0cmkKKyAgICAgICAgLy8gcmVnaW9ucworICAgICAgICBFWFBFQ1RfUElY
RUxfRVEoKG1pZFBpeGVsWCArIHZpZXdwb3J0U2l6ZVswXSkgLyAyLCBtaWRQaXhlbFksIDI1NSwg
MjU1LCAyNTUsIDI1NSk7CisgICAgICAgIEVYUEVDVF9QSVhFTF9FUSgobWlkUGl4ZWxYICsgdmll
d3BvcnRTaXplWzJdKSAvIDIsIG1pZFBpeGVsWSwgMjU1LCAyNTUsIDI1NSwgMjU1KTsKKyAgICAg
ICAgRVhQRUNUX1BJWEVMX0VRKG1pZFBpeGVsWCwgKG1pZFBpeGVsWSArIHZpZXdwb3J0U2l6ZVsx
XSkgLyAyLCAyNTUsIDI1NSwgMjU1LCAyNTUpOworICAgICAgICBFWFBFQ1RfUElYRUxfRVEobWlk
UGl4ZWxYLCAobWlkUGl4ZWxZICsgdmlld3BvcnRTaXplWzNdKSAvIDIsIDI1NSwgMjU1LCAyNTUs
IDI1NSk7CisgICAgfQorCisgICAgdm9pZCBydW5UZXN0KGNvbnN0IFRlc3REYXRhICZ0ZXN0KQor
ICAgIHsKKyAgICAgICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBGaWd1cmUgb3V0IHdoeSB0aGlzIGlz
IGJyb2tlbiBvbiBBTUQgT3BlbkdMCisgICAgICAgIGlmIChJc0FNRCgpICYmIGdldFBsYXRmb3Jt
UmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEFNRCBPcGVu
R0wuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgNDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAg
ICBHTGludCB0eXBlU2l6ZSA9IGkgKyAxOworICAgICAgICAgICAgc2V0dXBUZXN0KHRlc3QsIHR5
cGVTaXplKTsKKworICAgICAgICAgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAu
NWYpOworCisgICAgICAgICAgICBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShtVGVzdEF0dHJp
Yik7CisgICAgICAgICAgICBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShtRXhwZWN0ZWRBdHRy
aWIpOworCisgICAgICAgICAgICBjaGVja1BpeGVscygpOworICAgICAgICB9CisgICAgfQorCisg
ICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNldFVw
KCk7CisKKyAgICAgICAgZ2xDbGVhckNvbG9yKDAsIDAsIDAsIDApOworICAgICAgICBnbENsZWFy
RGVwdGhmKDAuMCk7CisgICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RF
UFRIX0JVRkZFUl9CSVQpOworCisgICAgICAgIGdsRGlzYWJsZShHTF9ERVBUSF9URVNUKTsKKwor
ICAgICAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1CdWZmZXIpOworICAgIH0KKworICAgIHZvaWQgVGVh
ckRvd24oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFt
KTsKKyAgICAgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtQnVmZmVyKTsKKyAgICAgICAgZ2xEZWxl
dGVCdWZmZXJzKDEsICZtUXVhZEJ1ZmZlcik7CisKKyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93
bigpOworICAgIH0KKworICAgIEdMdWludCBjb21waWxlTXVsdGlBdHRyaWJQcm9ncmFtKEdMaW50
IGF0dHJpYkNvdW50KQorICAgIHsKKyAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gc2hhZGVyU3Ry
ZWFtOworCisgICAgICAgIHNoYWRlclN0cmVhbSA8PCAiYXR0cmlidXRlIG1lZGl1bXAgdmVjNCBw
b3NpdGlvbjsiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgZm9yIChHTGludCBhdHRyaWJJbmRleCA9
IDA7IGF0dHJpYkluZGV4IDwgYXR0cmliQ291bnQ7ICsrYXR0cmliSW5kZXgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHNoYWRlclN0cmVhbSA8PCAiYXR0cmlidXRlIGZsb2F0IGEiIDw8IGF0dHJp
YkluZGV4IDw8ICI7IiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIH0KKyAgICAgICAgc2hhZGVyU3Ry
ZWFtIDw8ICJ2YXJ5aW5nIG1lZGl1bXAgZmxvYXQgY29sb3I7IiA8PCBzdGQ6OmVuZGwKKyAgICAg
ICAgICAgICAgICAgICAgIDw8ICJ2b2lkIG1haW4oKSB7IiA8PCBzdGQ6OmVuZGwKKyAgICAgICAg
ICAgICAgICAgICAgIDw8ICIgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247IiA8PCBzdGQ6OmVuZGwK
KyAgICAgICAgICAgICAgICAgICAgIDw8ICIgIGNvbG9yID0gMC4wOyIgPDwgc3RkOjplbmRsOwor
ICAgICAgICBmb3IgKEdMaW50IGF0dHJpYkluZGV4ID0gMDsgYXR0cmliSW5kZXggPCBhdHRyaWJD
b3VudDsgKythdHRyaWJJbmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgc2hhZGVyU3RyZWFt
IDw8ICIgIGNvbG9yICs9IGEiIDw8IGF0dHJpYkluZGV4IDw8ICI7IiA8PCBzdGQ6OmVuZGw7Cisg
ICAgICAgIH0KKyAgICAgICAgc2hhZGVyU3RyZWFtIDw8ICJ9IiA8PCBzdGQ6OmVuZGw7CisKKyAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdEZyYWdtZW50U2hhZGVyU291cmNlID0KKyAgICAg
ICAgICAgIFNIQURFUl9TT1VSQ0UodmFyeWluZyBtZWRpdW1wIGZsb2F0IGNvbG9yOyB2b2lkIG1h
aW4odm9pZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChjb2xvciwgMC4wLCAwLjAsIDEuMCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgIHJldHVybiBDb21waWxlUHJv
Z3JhbShzaGFkZXJTdHJlYW0uc3RyKCksIHRlc3RGcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAg
fQorCisgICAgdm9pZCBzZXR1cE11bHRpQXR0cmlicyhHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgYXR0
cmliQ291bnQsIEdMZmxvYXQgdmFsdWUpCisgICAgeworICAgICAgICBnbFVzZVByb2dyYW0ocHJv
Z3JhbSk7CisgICAgICAgIGZvciAoR0xpbnQgYXR0cmliSW5kZXggPSAwOyBhdHRyaWJJbmRleCA8
IGF0dHJpYkNvdW50OyArK2F0dHJpYkluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBzdGQ6
OnN0cmluZ3N0cmVhbSBhdHRyaWJTdHJlYW07CisgICAgICAgICAgICBhdHRyaWJTdHJlYW0gPDwg
ImEiIDw8IGF0dHJpYkluZGV4OworICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24gPSBnbEdldEF0
dHJpYkxvY2F0aW9uKHByb2dyYW0sIGF0dHJpYlN0cmVhbS5zdHIoKS5jX3N0cigpKTsKKyAgICAg
ICAgICAgIEFTU0VSVF9ORSgtMSwgbG9jYXRpb24pOworICAgICAgICAgICAgZ2xWZXJ0ZXhBdHRy
aWIxZihsb2NhdGlvbiwgdmFsdWUpOworICAgICAgICAgICAgZ2xEaXNhYmxlVmVydGV4QXR0cmli
QXJyYXkobG9jYXRpb24pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBpbml0QmFzaWNQ
cm9ncmFtKCkKKyAgICB7CisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHRlc3RWZXJ0ZXhTaGFk
ZXJTb3VyY2UgPQorICAgICAgICAgICAgImF0dHJpYnV0ZSBtZWRpdW1wIHZlYzQgcG9zaXRpb247
XG4iCisgICAgICAgICAgICAiYXR0cmlidXRlIG1lZGl1bXAgdmVjNCB0ZXN0O1xuIgorICAgICAg
ICAgICAgImF0dHJpYnV0ZSBtZWRpdW1wIHZlYzQgZXhwZWN0ZWQ7XG4iCisgICAgICAgICAgICAi
dmFyeWluZyBtZWRpdW1wIHZlYzQgY29sb3I7XG4iCisgICAgICAgICAgICAidm9pZCBtYWluKHZv
aWQpXG4iCisgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9
IHBvc2l0aW9uO1xuIgorICAgICAgICAgICAgIiAgICB2ZWM0IHRocmVzaG9sZCA9IG1heChhYnMo
ZXhwZWN0ZWQpICogMC4wMSwgMS4wIC8gNjQuMCk7XG4iCisgICAgICAgICAgICAiICAgIGNvbG9y
ID0gdmVjNChsZXNzVGhhbkVxdWFsKGFicyh0ZXN0IC0gZXhwZWN0ZWQpLCB0aHJlc2hvbGQpKTtc
biIKKyAgICAgICAgICAgICJ9XG4iOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHRlc3RG
cmFnbWVudFNoYWRlclNvdXJjZSA9CisgICAgICAgICAgICAidmFyeWluZyBtZWRpdW1wIHZlYzQg
Y29sb3I7XG4iCisgICAgICAgICAgICAidm9pZCBtYWluKHZvaWQpXG4iCisgICAgICAgICAgICAi
e1xuIgorICAgICAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSBjb2xvcjtcbiIKKyAgICAgICAg
ICAgICJ9XG4iOworCisgICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odGVzdFZlcnRl
eFNoYWRlclNvdXJjZSwgdGVzdEZyYWdtZW50U2hhZGVyU291cmNlKTsKKyAgICAgICAgQVNTRVJU
X05FKDB1LCBtUHJvZ3JhbSk7CisKKyAgICAgICAgbVRlc3RBdHRyaWIgPSBnbEdldEF0dHJpYkxv
Y2F0aW9uKG1Qcm9ncmFtLCAidGVzdCIpOworICAgICAgICBBU1NFUlRfTkUoLTEsIG1UZXN0QXR0
cmliKTsKKyAgICAgICAgbUV4cGVjdGVkQXR0cmliID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJv
Z3JhbSwgImV4cGVjdGVkIik7CisgICAgICAgIEFTU0VSVF9ORSgtMSwgbUV4cGVjdGVkQXR0cmli
KTsKKworICAgICAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworICAgIH0KKworICAgIHN0YXRp
YyBjb25zdCBzaXplX3QgbVZlcnRleENvdW50ID0gMjQ7CisKKyAgICBHTHVpbnQgbVByb2dyYW07
CisgICAgR0xpbnQgbVRlc3RBdHRyaWI7CisgICAgR0xpbnQgbUV4cGVjdGVkQXR0cmliOworICAg
IEdMdWludCBtQnVmZmVyOworICAgIEdMdWludCBtUXVhZEJ1ZmZlcjsKK307CisKK1RFU1RfUChW
ZXJ0ZXhBdHRyaWJ1dGVUZXN0LCBVbnNpZ25lZEJ5dGVVbm5vcm1hbGl6ZWQpCit7CisgICAgR0x1
Ynl0ZSBpbnB1dERhdGFbbVZlcnRleENvdW50XSA9IHsgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywg
MTI1LCAxMjYsIDEyNywgMTI4LCAxMjksIDI1MCwgMjUxLCAyNTIsIDI1MywgMjU0LCAyNTUgfTsK
KyAgICBHTGZsb2F0IGV4cGVjdGVkRGF0YVttVmVydGV4Q291bnRdOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbVZlcnRleENvdW50OyBpKyspCisgICAgeworICAgICAgICBleHBlY3RlZERh
dGFbaV0gPSBpbnB1dERhdGFbaV07CisgICAgfQorCisgICAgVGVzdERhdGEgZGF0YShHTF9VTlNJ
R05FRF9CWVRFLCBHTF9GQUxTRSwgU291cmNlOjpJTU1FRElBVEUsIGlucHV0RGF0YSwgZXhwZWN0
ZWREYXRhKTsKKyAgICBydW5UZXN0KGRhdGEpOworfQorCitURVNUX1AoVmVydGV4QXR0cmlidXRl
VGVzdCwgVW5zaWduZWRCeXRlTm9ybWFsaXplZCkKK3sKKyAgICBHTHVieXRlIGlucHV0RGF0YVtt
VmVydGV4Q291bnRdID0geyAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCAxMjUsIDEyNiwgMTI3LCAx
MjgsIDEyOSwgMjUwLCAyNTEsIDI1MiwgMjUzLCAyNTQsIDI1NSB9OworICAgIEdMZmxvYXQgZXhw
ZWN0ZWREYXRhW21WZXJ0ZXhDb3VudF07CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtVmVy
dGV4Q291bnQ7IGkrKykKKyAgICB7CisgICAgICAgIGV4cGVjdGVkRGF0YVtpXSA9IE5vcm1hbGl6
ZShpbnB1dERhdGFbaV0pOworICAgIH0KKworICAgIFRlc3REYXRhIGRhdGEoR0xfVU5TSUdORURf
QllURSwgR0xfVFJVRSwgU291cmNlOjpJTU1FRElBVEUsIGlucHV0RGF0YSwgZXhwZWN0ZWREYXRh
KTsKKyAgICBydW5UZXN0KGRhdGEpOworfQorCitURVNUX1AoVmVydGV4QXR0cmlidXRlVGVzdCwg
Qnl0ZVVubm9ybWFsaXplZCkKK3sKKyAgICBHTGJ5dGUgaW5wdXREYXRhW21WZXJ0ZXhDb3VudF0g
PSB7IDAsIDEsIDIsIDMsIDQsIC0xLCAtMiwgLTMsIC00LCAxMjUsIDEyNiwgMTI3LCAtMTI4LCAt
MTI3LCAtMTI2IH07CisgICAgR0xmbG9hdCBleHBlY3RlZERhdGFbbVZlcnRleENvdW50XTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1WZXJ0ZXhDb3VudDsgaSsrKQorICAgIHsKKyAgICAg
ICAgZXhwZWN0ZWREYXRhW2ldID0gaW5wdXREYXRhW2ldOworICAgIH0KKworICAgIFRlc3REYXRh
IGRhdGEoR0xfQllURSwgR0xfRkFMU0UsIFNvdXJjZTo6SU1NRURJQVRFLCBpbnB1dERhdGEsIGV4
cGVjdGVkRGF0YSk7CisgICAgcnVuVGVzdChkYXRhKTsKK30KKworVEVTVF9QKFZlcnRleEF0dHJp
YnV0ZVRlc3QsIEJ5dGVOb3JtYWxpemVkKQoreworICAgIEdMYnl0ZSBpbnB1dERhdGFbbVZlcnRl
eENvdW50XSA9IHsgMCwgMSwgMiwgMywgNCwgLTEsIC0yLCAtMywgLTQsIDEyNSwgMTI2LCAxMjcs
IC0xMjgsIC0xMjcsIC0xMjYgfTsKKyAgICBHTGZsb2F0IGV4cGVjdGVkRGF0YVttVmVydGV4Q291
bnRdOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVZlcnRleENvdW50OyBpKyspCisgICAg
eworICAgICAgICBleHBlY3RlZERhdGFbaV0gPSBOb3JtYWxpemUoaW5wdXREYXRhW2ldKTsKKyAg
ICB9CisKKyAgICBUZXN0RGF0YSBkYXRhKEdMX0JZVEUsIEdMX1RSVUUsIFNvdXJjZTo6SU1NRURJ
QVRFLCBpbnB1dERhdGEsIGV4cGVjdGVkRGF0YSk7CisgICAgcnVuVGVzdChkYXRhKTsKK30KKwor
VEVTVF9QKFZlcnRleEF0dHJpYnV0ZVRlc3QsIFVuc2lnbmVkU2hvcnRVbm5vcm1hbGl6ZWQpCit7
CisgICAgR0x1c2hvcnQgaW5wdXREYXRhW21WZXJ0ZXhDb3VudF0gPSB7IDAsIDEsIDIsIDMsIDI1
NCwgMjU1LCAyNTYsIDMyNzY2LCAzMjc2NywgMzI3NjgsIDY1NTMzLCA2NTUzNCwgNjU1MzUgfTsK
KyAgICBHTGZsb2F0IGV4cGVjdGVkRGF0YVttVmVydGV4Q291bnRdOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbVZlcnRleENvdW50OyBpKyspCisgICAgeworICAgICAgICBleHBlY3RlZERh
dGFbaV0gPSBpbnB1dERhdGFbaV07CisgICAgfQorCisgICAgVGVzdERhdGEgZGF0YShHTF9VTlNJ
R05FRF9TSE9SVCwgR0xfRkFMU0UsIFNvdXJjZTo6SU1NRURJQVRFLCBpbnB1dERhdGEsIGV4cGVj
dGVkRGF0YSk7CisgICAgcnVuVGVzdChkYXRhKTsKK30KKworVEVTVF9QKFZlcnRleEF0dHJpYnV0
ZVRlc3QsIFVuc2lnbmVkU2hvcnROb3JtYWxpemVkKQoreworICAgIEdMdXNob3J0IGlucHV0RGF0
YVttVmVydGV4Q291bnRdID0geyAwLCAxLCAyLCAzLCAyNTQsIDI1NSwgMjU2LCAzMjc2NiwgMzI3
NjcsIDMyNzY4LCA2NTUzMywgNjU1MzQsIDY1NTM1IH07CisgICAgR0xmbG9hdCBleHBlY3RlZERh
dGFbbVZlcnRleENvdW50XTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1WZXJ0ZXhDb3Vu
dDsgaSsrKQorICAgIHsKKyAgICAgICAgZXhwZWN0ZWREYXRhW2ldID0gTm9ybWFsaXplKGlucHV0
RGF0YVtpXSk7CisgICAgfQorCisgICAgVGVzdERhdGEgZGF0YShHTF9VTlNJR05FRF9TSE9SVCwg
R0xfVFJVRSwgU291cmNlOjpJTU1FRElBVEUsIGlucHV0RGF0YSwgZXhwZWN0ZWREYXRhKTsKKyAg
ICBydW5UZXN0KGRhdGEpOworfQorCitURVNUX1AoVmVydGV4QXR0cmlidXRlVGVzdCwgU2hvcnRV
bm5vcm1hbGl6ZWQpCit7CisgICAgR0xzaG9ydCBpbnB1dERhdGFbbVZlcnRleENvdW50XSA9IHsg
IDAsIDEsIDIsIDMsIC0xLCAtMiwgLTMsIC00LCAzMjc2NiwgMzI3NjcsIC0zMjc2OCwgLTMyNzY3
LCAtMzI3NjYgfTsKKyAgICBHTGZsb2F0IGV4cGVjdGVkRGF0YVttVmVydGV4Q291bnRdOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVZlcnRleENvdW50OyBpKyspCisgICAgeworICAgICAg
ICBleHBlY3RlZERhdGFbaV0gPSBpbnB1dERhdGFbaV07CisgICAgfQorCisgICAgVGVzdERhdGEg
ZGF0YShHTF9TSE9SVCwgR0xfRkFMU0UsIFNvdXJjZTo6SU1NRURJQVRFLCBpbnB1dERhdGEsIGV4
cGVjdGVkRGF0YSk7CisgICAgcnVuVGVzdChkYXRhKTsKK30KKworVEVTVF9QKFZlcnRleEF0dHJp
YnV0ZVRlc3QsIFNob3J0Tm9ybWFsaXplZCkKK3sKKyAgICBHTHNob3J0IGlucHV0RGF0YVttVmVy
dGV4Q291bnRdID0geyAgMCwgMSwgMiwgMywgLTEsIC0yLCAtMywgLTQsIDMyNzY2LCAzMjc2Nywg
LTMyNzY4LCAtMzI3NjcsIC0zMjc2NiB9OworICAgIEdMZmxvYXQgZXhwZWN0ZWREYXRhW21WZXJ0
ZXhDb3VudF07CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtVmVydGV4Q291bnQ7IGkrKykK
KyAgICB7CisgICAgICAgIGV4cGVjdGVkRGF0YVtpXSA9IE5vcm1hbGl6ZShpbnB1dERhdGFbaV0p
OworICAgIH0KKworICAgIFRlc3REYXRhIGRhdGEoR0xfU0hPUlQsIEdMX1RSVUUsIFNvdXJjZTo6
SU1NRURJQVRFLCBpbnB1dERhdGEsIGV4cGVjdGVkRGF0YSk7CisgICAgcnVuVGVzdChkYXRhKTsK
K30KKworY2xhc3MgVmVydGV4QXR0cmlidXRlVGVzdEVTMyA6IHB1YmxpYyBWZXJ0ZXhBdHRyaWJ1
dGVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBWZXJ0ZXhBdHRyaWJ1dGVUZXN0RVMzKCkge30K
K307CisKK1RFU1RfUChWZXJ0ZXhBdHRyaWJ1dGVUZXN0RVMzLCBJbnRVbm5vcm1hbGl6ZWQpCit7
CisgICAgR0xpbnQgbG8gICAgICAgICAgICAgICAgICAgICAgPSBzdGQ6Om51bWVyaWNfbGltaXRz
PEdMaW50Pjo6bWluKCk7CisgICAgR0xpbnQgaGkgICAgICAgICAgICAgICAgICAgICAgPSBzdGQ6
Om51bWVyaWNfbGltaXRzPEdMaW50Pjo6bWF4KCk7CisgICAgR0xpbnQgaW5wdXREYXRhW21WZXJ0
ZXhDb3VudF0gPSB7MCwgMSwgMiwgMywgLTEsIC0yLCAtMywgLTQsIC0xLCBoaSwgaGkgLSAxLCBs
bywgbG8gKyAxfTsKKyAgICBHTGZsb2F0IGV4cGVjdGVkRGF0YVttVmVydGV4Q291bnRdOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVZlcnRleENvdW50OyBpKyspCisgICAgeworICAgICAg
ICBleHBlY3RlZERhdGFbaV0gPSBzdGF0aWNfY2FzdDxHTGZsb2F0PihpbnB1dERhdGFbaV0pOwor
ICAgIH0KKworICAgIFRlc3REYXRhIGRhdGEoR0xfSU5ULCBHTF9GQUxTRSwgU291cmNlOjpCVUZG
RVIsIGlucHV0RGF0YSwgZXhwZWN0ZWREYXRhKTsKKyAgICBydW5UZXN0KGRhdGEpOworfQorCitU
RVNUX1AoVmVydGV4QXR0cmlidXRlVGVzdEVTMywgSW50Tm9ybWFsaXplZCkKK3sKKyAgICBHTGlu
dCBsbyAgICAgICAgICAgICAgICAgICAgICA9IHN0ZDo6bnVtZXJpY19saW1pdHM8R0xpbnQ+Ojpt
aW4oKTsKKyAgICBHTGludCBoaSAgICAgICAgICAgICAgICAgICAgICA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8R0xpbnQ+OjptYXgoKTsKKyAgICBHTGludCBpbnB1dERhdGFbbVZlcnRleENvdW50XSA9
IHswLCAxLCAyLCAzLCAtMSwgLTIsIC0zLCAtNCwgLTEsIGhpLCBoaSAtIDEsIGxvLCBsbyArIDF9
OworICAgIEdMZmxvYXQgZXhwZWN0ZWREYXRhW21WZXJ0ZXhDb3VudF07CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtVmVydGV4Q291bnQ7IGkrKykKKyAgICB7CisgICAgICAgIGV4cGVjdGVk
RGF0YVtpXSA9IE5vcm1hbGl6ZShpbnB1dERhdGFbaV0pOworICAgIH0KKworICAgIFRlc3REYXRh
IGRhdGEoR0xfSU5ULCBHTF9UUlVFLCBTb3VyY2U6OkJVRkZFUiwgaW5wdXREYXRhLCBleHBlY3Rl
ZERhdGEpOworICAgIHJ1blRlc3QoZGF0YSk7Cit9CisKK1RFU1RfUChWZXJ0ZXhBdHRyaWJ1dGVU
ZXN0RVMzLCBVbnNpZ25lZEludFVubm9ybWFsaXplZCkKK3sKKyAgICBHTHVpbnQgbWlkICAgICAg
ICAgICAgICAgICAgICAgPSBzdGQ6Om51bWVyaWNfbGltaXRzPEdMdWludD46Om1heCgpID4+IDE7
CisgICAgR0x1aW50IGhpICAgICAgICAgICAgICAgICAgICAgID0gc3RkOjpudW1lcmljX2xpbWl0
czxHTHVpbnQ+OjptYXgoKTsKKyAgICBHTHVpbnQgaW5wdXREYXRhW21WZXJ0ZXhDb3VudF0gPSB7
MCwgICAgICAgMSwgICAyLCAgICAgICAzLCAgICAgIDI1NCwgICAgMjU1LCAyNTYsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pZCAtIDEsIG1pZCwgbWlkICsgMSwgaGkg
LSAyLCBoaSAtIDEsIGhpfTsKKyAgICBHTGZsb2F0IGV4cGVjdGVkRGF0YVttVmVydGV4Q291bnRd
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVZlcnRleENvdW50OyBpKyspCisgICAgewor
ICAgICAgICBleHBlY3RlZERhdGFbaV0gPSBzdGF0aWNfY2FzdDxHTGZsb2F0PihpbnB1dERhdGFb
aV0pOworICAgIH0KKworICAgIFRlc3REYXRhIGRhdGEoR0xfVU5TSUdORURfSU5ULCBHTF9GQUxT
RSwgU291cmNlOjpCVUZGRVIsIGlucHV0RGF0YSwgZXhwZWN0ZWREYXRhKTsKKyAgICBydW5UZXN0
KGRhdGEpOworfQorCitURVNUX1AoVmVydGV4QXR0cmlidXRlVGVzdEVTMywgVW5zaWduZWRJbnRO
b3JtYWxpemVkKQoreworICAgIEdMdWludCBtaWQgICAgICAgICAgICAgICAgICAgICA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8R0x1aW50Pjo6bWF4KCkgPj4gMTsKKyAgICBHTHVpbnQgaGkgICAgICAg
ICAgICAgICAgICAgICAgPSBzdGQ6Om51bWVyaWNfbGltaXRzPEdMdWludD46Om1heCgpOworICAg
IEdMdWludCBpbnB1dERhdGFbbVZlcnRleENvdW50XSA9IHswLCAgICAgICAxLCAgIDIsICAgICAg
IDMsICAgICAgMjU0LCAgICAyNTUsIDI1NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWlkIC0gMSwgbWlkLCBtaWQgKyAxLCBoaSAtIDIsIGhpIC0gMSwgaGl9OworICAg
IEdMZmxvYXQgZXhwZWN0ZWREYXRhW21WZXJ0ZXhDb3VudF07CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtVmVydGV4Q291bnQ7IGkrKykKKyAgICB7CisgICAgICAgIGV4cGVjdGVkRGF0YVtp
XSA9IE5vcm1hbGl6ZShpbnB1dERhdGFbaV0pOworICAgIH0KKworICAgIFRlc3REYXRhIGRhdGEo
R0xfVU5TSUdORURfSU5ULCBHTF9UUlVFLCBTb3VyY2U6OkJVRkZFUiwgaW5wdXREYXRhLCBleHBl
Y3RlZERhdGEpOworICAgIHJ1blRlc3QoZGF0YSk7Cit9CisKKy8vIFZhbGlkYXRlIHRoYXQgd2Ug
Y2FuIHN1cHBvcnQgR0xfTUFYX0FUVFJJQlMgYXR0cmlicworVEVTVF9QKFZlcnRleEF0dHJpYnV0
ZVRlc3QsIE1heEF0dHJpYnMpCit7CisgICAgLy8gVE9ETyhqbWFkaWxsKTogRmlndXJlIG91dCB3
aHkgd2UgZ2V0IHRoaXMgZXJyb3Igb24gQU1EL09wZW5HTCBhbmQgSW50ZWwuCisgICAgaWYgKChJ
c0ludGVsKCkgfHwgSXNBTUQoKSkgJiYgR2V0UGFyYW0oKS5nZXRSZW5kZXJlcigpID09IEVHTF9Q
TEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291
dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIGFuZCBBTUQuIiA8PCBzdGQ6OmVuZGw7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHTGludCBtYXhBdHRyaWJzOworICAgIGdsR2V0SW50
ZWdlcnYoR0xfTUFYX1ZFUlRFWF9BVFRSSUJTLCAmbWF4QXR0cmlicyk7CisgICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7CisKKyAgICAvLyBSZXNlcnZlIG9uZSBhdHRyaWIgZm9yIHBvc2l0aW9uCisg
ICAgR0xpbnQgZHJhd0F0dHJpYnMgPSBtYXhBdHRyaWJzIC0gMTsKKworICAgIEdMdWludCBwcm9n
cmFtID0gY29tcGlsZU11bHRpQXR0cmliUHJvZ3JhbShkcmF3QXR0cmlicyk7CisgICAgQVNTRVJU
X05FKDB1LCBwcm9ncmFtKTsKKworICAgIHNldHVwTXVsdGlBdHRyaWJzKHByb2dyYW0sIGRyYXdB
dHRyaWJzLCAwLjVmIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRyYXdBdHRyaWJzKSk7CisgICAgZHJh
d1F1YWQocHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJS
T1IoKTsKKyAgICBFWFBFQ1RfUElYRUxfTkVBUigwLCAwLCAxMjgsIDAsIDAsIDI1NSwgMSk7Cit9
CisKKy8vIFZhbGlkYXRlIHRoYXQgd2UgY2Fubm90IHN1cHBvcnQgR0xfTUFYX0FUVFJJQlMrMSBh
dHRyaWJzCitURVNUX1AoVmVydGV4QXR0cmlidXRlVGVzdCwgTWF4QXR0cmlic1BsdXNPbmUpCit7
CisgICAgLy8gVE9ETyhqbWFkaWxsKTogRmlndXJlIG91dCB3aHkgd2UgZ2V0IHRoaXMgZXJyb3Ig
b24gQU1EL0VTMi9PcGVuR0wKKyAgICBpZiAoSXNBTUQoKSAmJiBHZXRQYXJhbSgpID09IEVTMl9P
UEVOR0woKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxlZCBvbiBB
TUQvRVMyL09wZW5HTCIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgR0xpbnQgbWF4QXR0cmliczsKKyAgICBnbEdldEludGVnZXJ2KEdMX01BWF9WRVJURVhfQVRU
UklCUywgJm1heEF0dHJpYnMpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgLy8g
RXhjZWVkIGF0dHJpYiBjb3VudCBieSBvbmUgKGNvdW50aW5nIHBvc2l0aW9uKQorICAgIEdMaW50
IGRyYXdBdHRyaWJzID0gbWF4QXR0cmliczsKKworICAgIEdMdWludCBwcm9ncmFtID0gY29tcGls
ZU11bHRpQXR0cmliUHJvZ3JhbShkcmF3QXR0cmlicyk7CisgICAgQVNTRVJUX0VRKDB1LCBwcm9n
cmFtKTsKK30KKworLy8gU2ltcGxlIHRlc3QgZm9yIHdoZW4gd2UgdXNlIGdsQmluZEF0dHJpYkxv
Y2F0aW9uCitURVNUX1AoVmVydGV4QXR0cmlidXRlVGVzdCwgU2ltcGxlQmluZEF0dHJpYkxvY2F0
aW9uKQoreworICAgIC8vIFRPRE8oam1hZGlsbCk6IEZpZ3VyZSBvdXQgd2h5IHRoaXMgZmFpbHMg
b24gSW50ZWwuCisgICAgaWYgKElzSW50ZWwoKSAmJiBHZXRQYXJhbSgpLmdldFJlbmRlcmVyKCkg
PT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFKQorICAgIHsKKyAgICAgICAg
c3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwuIiA8PCBzdGQ6OmVuZGw7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBSZS11c2UgdGhlIG11bHRpLWF0dHJpYiBwcm9n
cmFtLCBiaW5kaW5nIGF0dHJpYnV0ZSAwCisgICAgR0x1aW50IHByb2dyYW0gPSBjb21waWxlTXVs
dGlBdHRyaWJQcm9ncmFtKDEpOworICAgIGdsQmluZEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIDIs
ICJwb3NpdGlvbiIpOworICAgIGdsQmluZEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIDMsICJhMCIp
OworICAgIGdsTGlua1Byb2dyYW0ocHJvZ3JhbSk7CisKKyAgICAvLyBTZXR1cCBhbmQgZHJhdyB0
aGUgcXVhZAorICAgIHNldHVwTXVsdGlBdHRyaWJzKHByb2dyYW0sIDEsIDAuNWYpOworICAgIGRy
YXdRdWFkKHByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOworICAgIEVYUEVDVF9QSVhFTF9ORUFSKDAsIDAsIDEyOCwgMCwgMCwgMjU1LCAxKTsKK30K
KworLy8gVmVyaWZ5IHRoYXQgZHJhd2luZyB3aXRoIGEgbGFyZ2Ugb3V0LW9mLXJhbmdlIG9mZnNl
dCBnZW5lcmF0ZXMgSU5WQUxJRF9PUEVSQVRJT04uCitURVNUX1AoVmVydGV4QXR0cmlidXRlVGVz
dCwgRHJhd0FycmF5c0J1ZmZlclRvb1NtYWxsKQoreworICAgIEdMZmxvYXQgaW5wdXREYXRhW21W
ZXJ0ZXhDb3VudF07CisgICAgR0xmbG9hdCBleHBlY3RlZERhdGFbbVZlcnRleENvdW50XTsKKyAg
ICBmb3IgKHNpemVfdCBjb3VudCA9IDA7IGNvdW50IDwgbVZlcnRleENvdW50OyArK2NvdW50KQor
ICAgIHsKKyAgICAgICAgaW5wdXREYXRhW2NvdW50XSAgICA9IHN0YXRpY19jYXN0PEdMZmxvYXQ+
KGNvdW50KTsKKyAgICAgICAgZXhwZWN0ZWREYXRhW2NvdW50XSA9IGlucHV0RGF0YVtjb3VudF07
CisgICAgfQorCisgICAgVGVzdERhdGEgZGF0YShHTF9GTE9BVCwgR0xfRkFMU0UsIFNvdXJjZTo6
QlVGRkVSLCBpbnB1dERhdGEsIGV4cGVjdGVkRGF0YSk7CisgICAgZGF0YS5idWZmZXJPZmZzZXQg
PSBtVmVydGV4Q291bnQgKiBUeXBlU3RyaWRlKEdMX0ZMT0FUKTsKKworICAgIHNldHVwVGVzdChk
YXRhLCAxKTsKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAg
RVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworLy8gVmVyaWZ5IHRo
YXQgaW5kZXggZHJhdyB3aXRoIGFuIG91dC1vZi1yYW5nZSBvZmZzZXQgZ2VuZXJhdGVzIElOVkFM
SURfT1BFUkFUSU9OLgorVEVTVF9QKFZlcnRleEF0dHJpYnV0ZVRlc3QsIERyYXdFbGVtZW50c0J1
ZmZlclRvb1NtYWxsKQoreworICAgIEdMZmxvYXQgaW5wdXREYXRhW21WZXJ0ZXhDb3VudF07Cisg
ICAgR0xmbG9hdCBleHBlY3RlZERhdGFbbVZlcnRleENvdW50XTsKKyAgICBmb3IgKHNpemVfdCBj
b3VudCA9IDA7IGNvdW50IDwgbVZlcnRleENvdW50OyArK2NvdW50KQorICAgIHsKKyAgICAgICAg
aW5wdXREYXRhW2NvdW50XSAgICA9IHN0YXRpY19jYXN0PEdMZmxvYXQ+KGNvdW50KTsKKyAgICAg
ICAgZXhwZWN0ZWREYXRhW2NvdW50XSA9IGlucHV0RGF0YVtjb3VudF07CisgICAgfQorCisgICAg
VGVzdERhdGEgZGF0YShHTF9GTE9BVCwgR0xfRkFMU0UsIFNvdXJjZTo6QlVGRkVSLCBpbnB1dERh
dGEsIGV4cGVjdGVkRGF0YSk7CisgICAgZGF0YS5idWZmZXJPZmZzZXQgPSAobVZlcnRleENvdW50
IC0gMykgKiBUeXBlU3RyaWRlKEdMX0ZMT0FUKTsKKworICAgIHNldHVwVGVzdChkYXRhLCAxKTsK
KyAgICBkcmF3SW5kZXhlZFF1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworICAgIEVY
UEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKKy8vIFZlcmlmeSB0aGF0
IHVzaW5nIGEgZGlmZmVyZW50IHN0YXJ0IHZlcnRleCBkb2Vzbid0IG1lc3MgdXAgdGhlIGRyYXcu
CitURVNUX1AoVmVydGV4QXR0cmlidXRlVGVzdCwgRHJhd0FycmF5c1dpdGhCdWZmZXJPZmZzZXQp
Cit7CisgICAgLy8gVE9ETyhqbWFkaWxsKTogRGlhZ25vc2UgdGhpcyBmYWlsdXJlLgorICAgIGlm
IChJc0QzRDExX0ZMOTMoKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNh
YmxlZCBvbiBEM0QxMSBGTCA5XzMiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogRmlndXJlIG91dCB3aHkgdGhpcyBpcyBicm9r
ZW4gb24gQU1EIE9wZW5HTAorICAgIGlmIChJc0FNRCgpICYmIGdldFBsYXRmb3JtUmVuZGVyZXIo
KSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUpCisgICAgeworICAgICAg
ICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBBTUQgT3BlbkdMLiIgPDwgc3RkOjplbmRs
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW5pdEJhc2ljUHJvZ3JhbSgpOworICAg
IGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisKKyAgICBHTGZsb2F0IGlucHV0RGF0YVttVmVydGV4
Q291bnRdOworICAgIEdMZmxvYXQgZXhwZWN0ZWREYXRhW21WZXJ0ZXhDb3VudF07CisgICAgZm9y
IChzaXplX3QgY291bnQgPSAwOyBjb3VudCA8IG1WZXJ0ZXhDb3VudDsgKytjb3VudCkKKyAgICB7
CisgICAgICAgIGlucHV0RGF0YVtjb3VudF0gICAgPSBzdGF0aWNfY2FzdDxHTGZsb2F0Pihjb3Vu
dCk7CisgICAgICAgIGV4cGVjdGVkRGF0YVtjb3VudF0gPSBpbnB1dERhdGFbY291bnRdOworICAg
IH0KKworICAgIGF1dG8gcXVhZFZlcnRpY2VzICAgICAgICA9IEdldFF1YWRWZXJ0aWNlcygpOwor
ICAgIEdMc2l6ZWkgcXVhZFZlcnRpY2VzU2l6ZSA9IHN0YXRpY19jYXN0PEdMc2l6ZWk+KHF1YWRW
ZXJ0aWNlcy5zaXplKCkgKiBzaXplb2YocXVhZFZlcnRpY2VzWzBdKSk7CisKKyAgICBnbEdlbkJ1
ZmZlcnMoMSwgJm1RdWFkQnVmZmVyKTsKKyAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVS
LCBtUXVhZEJ1ZmZlcik7CisgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgcXVhZFZl
cnRpY2VzU2l6ZSArIHNpemVvZihWZWN0b3IzKSwgbnVsbHB0ciwgR0xfU1RBVElDX0RSQVcpOwor
ICAgIGdsQnVmZmVyU3ViRGF0YShHTF9BUlJBWV9CVUZGRVIsIDAsIHF1YWRWZXJ0aWNlc1NpemUs
IHF1YWRWZXJ0aWNlcy5kYXRhKCkpOworCisgICAgR0xpbnQgcG9zaXRpb25Mb2NhdGlvbiA9IGds
R2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJwb3NpdGlvbiIpOworICAgIEFTU0VSVF9ORSgt
MSwgcG9zaXRpb25Mb2NhdGlvbik7CisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0aW9u
TG9jYXRpb24sIDMsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgbnVsbHB0cik7CisgICAgZ2xFbmFi
bGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxvY2F0aW9uKTsKKworICAgIEdMc2l6ZWkgZGF0
YVNpemUgPSBtVmVydGV4Q291bnQgKiBUeXBlU3RyaWRlKEdMX0ZMT0FUKTsKKyAgICBnbEJpbmRC
dWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtQnVmZmVyKTsKKyAgICBnbEJ1ZmZlckRhdGEoR0xfQVJS
QVlfQlVGRkVSLCBkYXRhU2l6ZSArIFR5cGVTdHJpZGUoR0xfRkxPQVQpLCBudWxscHRyLCBHTF9T
VEFUSUNfRFJBVyk7CisgICAgZ2xCdWZmZXJTdWJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgMCwgZGF0
YVNpemUsIGlucHV0RGF0YSk7CisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKG1UZXN0QXR0cmli
LCAxLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIG51bGxwdHIpOworICAgIGdsRW5hYmxlVmVydGV4
QXR0cmliQXJyYXkobVRlc3RBdHRyaWIpOworCisgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JV
RkZFUiwgMCk7CisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKG1FeHBlY3RlZEF0dHJpYiwgMSwg
R0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCBleHBlY3RlZERhdGEpOworICAgIGdsRW5hYmxlVmVydGV4
QXR0cmliQXJyYXkobUV4cGVjdGVkQXR0cmliKTsKKworICAgIC8vIFZlcnRleCBkcmF3IHdpdGgg
bm8gc3RhcnQgdmVydGV4IG9mZnNldCAoc2Vjb25kIGFyZ3VtZW50IGlzIHplcm8pLgorICAgIGds
RHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDYpOworICAgIGNoZWNrUGl4ZWxzKCk7CisKKyAg
ICAvLyBEcmF3IG9mZnNldCBieSBvbmUgdmVydGV4LgorICAgIGdsRHJhd0FycmF5cyhHTF9UUklB
TkdMRVMsIDEsIDYpOworICAgIGNoZWNrUGl4ZWxzKCk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJS
T1IoKTsKK30KKworY2xhc3MgVmVydGV4QXR0cmlidXRlQ2FjaGluZ1Rlc3QgOiBwdWJsaWMgVmVy
dGV4QXR0cmlidXRlVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgVmVydGV4QXR0cmlidXRlQ2Fj
aGluZ1Rlc3QoKSB7fQorCisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlOworCisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIERlc3RUPgorICAgIHN0YXRpYyBzdGQ6OnZlY3RvcjxHTGZsb2F0PiBHZXRF
eHBlY3RlZERhdGEoY29uc3Qgc3RkOjp2ZWN0b3I8R0x1Ynl0ZT4gJnNyY0RhdGEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYXR0cmliVHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiBub3JtYWxpemVkKTsKKworICAgIHZvaWQgaW5pdERvdWJsZUF0dHJpYlByb2dyYW0oKQor
ICAgIHsKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdFZlcnRleFNoYWRlclNvdXJjZSA9
CisgICAgICAgICAgICAiYXR0cmlidXRlIG1lZGl1bXAgdmVjNCBwb3NpdGlvbjtcbiIKKyAgICAg
ICAgICAgICJhdHRyaWJ1dGUgbWVkaXVtcCB2ZWM0IHRlc3Q7XG4iCisgICAgICAgICAgICAiYXR0
cmlidXRlIG1lZGl1bXAgdmVjNCBleHBlY3RlZDtcbiIKKyAgICAgICAgICAgICJhdHRyaWJ1dGUg
bWVkaXVtcCB2ZWM0IHRlc3QyO1xuIgorICAgICAgICAgICAgImF0dHJpYnV0ZSBtZWRpdW1wIHZl
YzQgZXhwZWN0ZWQyO1xuIgorICAgICAgICAgICAgInZhcnlpbmcgbWVkaXVtcCB2ZWM0IGNvbG9y
O1xuIgorICAgICAgICAgICAgInZvaWQgbWFpbih2b2lkKVxuIgorICAgICAgICAgICAgIntcbiIK
KyAgICAgICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjtcbiIKKyAgICAgICAgICAg
ICIgICAgdmVjNCB0aHJlc2hvbGQgPSBtYXgoYWJzKGV4cGVjdGVkKSAqIDAuMDEsIDEuMCAvIDY0
LjApO1xuIgorICAgICAgICAgICAgIiAgICBjb2xvciA9IHZlYzQobGVzc1RoYW5FcXVhbChhYnMo
dGVzdCAtIGV4cGVjdGVkKSwgdGhyZXNob2xkKSk7XG4iCisgICAgICAgICAgICAiICAgIHZlYzQg
dGhyZXNob2xkMiA9IG1heChhYnMoZXhwZWN0ZWQyKSAqIDAuMDEsIDEuMCAvIDY0LjApO1xuIgor
ICAgICAgICAgICAgIiAgICBjb2xvciArPSB2ZWM0KGxlc3NUaGFuRXF1YWwoYWJzKHRlc3QyIC0g
ZXhwZWN0ZWQyKSwgdGhyZXNob2xkMikpO1xuIgorICAgICAgICAgICAgIn1cbiI7CisKKyAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdEZyYWdtZW50U2hhZGVyU291cmNlID0KKyAgICAgICAg
ICAgICJ2YXJ5aW5nIG1lZGl1bXAgdmVjNCBjb2xvcjtcbiIKKyAgICAgICAgICAgICJ2b2lkIG1h
aW4odm9pZClcbiIKKyAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAiICAgIGdsX0ZyYWdD
b2xvciA9IGNvbG9yO1xuIgorICAgICAgICAgICAgIn1cbiI7CisKKyAgICAgICAgbVByb2dyYW0g
PSBDb21waWxlUHJvZ3JhbSh0ZXN0VmVydGV4U2hhZGVyU291cmNlLCB0ZXN0RnJhZ21lbnRTaGFk
ZXJTb3VyY2UpOworICAgICAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsKKworICAgICAgICBt
VGVzdEF0dHJpYiA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJ0ZXN0Iik7CisgICAg
ICAgIEFTU0VSVF9ORSgtMSwgbVRlc3RBdHRyaWIpOworICAgICAgICBtRXhwZWN0ZWRBdHRyaWIg
PSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAiZXhwZWN0ZWQiKTsKKyAgICAgICAgQVNT
RVJUX05FKC0xLCBtRXhwZWN0ZWRBdHRyaWIpOworCisgICAgICAgIGdsVXNlUHJvZ3JhbShtUHJv
Z3JhbSk7CisgICAgfQorCisgICAgc3RydWN0IEF0dHJpYkRhdGEKKyAgICB7CisgICAgICAgIEF0
dHJpYkRhdGEoR0xlbnVtIHR5cGVJbiwgR0xpbnQgc2l6ZUluLCBHTGJvb2xlYW4gbm9ybWFsaXpl
ZEluLCBHTHNpemVpIHN0cmlkZUluKTsKKworICAgICAgICBHTGVudW0gdHlwZTsKKyAgICAgICAg
R0xpbnQgc2l6ZTsKKyAgICAgICAgR0xib29sZWFuIG5vcm1hbGl6ZWQ7CisgICAgICAgIEdMc2l6
ZWkgc3RyaWRlOworICAgIH07CisKKyAgICBzdGQ6OnZlY3RvcjxBdHRyaWJEYXRhPiBtVGVzdERh
dGE7CisgICAgc3RkOjptYXA8R0xlbnVtLCBzdGQ6OnZlY3RvcjxHTGZsb2F0Pj4gbUV4cGVjdGVk
RGF0YTsKKyAgICBzdGQ6Om1hcDxHTGVudW0sIHN0ZDo6dmVjdG9yPEdMZmxvYXQ+PiBtTm9ybUV4
cGVjdGVkRGF0YTsKK307CisKK1ZlcnRleEF0dHJpYnV0ZUNhY2hpbmdUZXN0OjpBdHRyaWJEYXRh
OjpBdHRyaWJEYXRhKEdMZW51bSB0eXBlSW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzaXplSW4sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gbm9ybWFsaXplZEluLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBzdHJpZGVJbikKKyAgICA6IHR5cGUodHlwZUluKSwgc2l6ZShzaXplSW4pLCBub3JtYWxpemVk
KG5vcm1hbGl6ZWRJbiksIHN0cmlkZShzdHJpZGVJbikKK3sKK30KKworLy8gc3RhdGljCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgRGVzdFQ+CitzdGQ6OnZlY3RvcjxHTGZsb2F0PiBWZXJ0ZXhBdHRyaWJ1
dGVDYWNoaW5nVGVzdDo6R2V0RXhwZWN0ZWREYXRhKAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEdM
dWJ5dGU+ICZzcmNEYXRhLAorICAgIEdMZW51bSBhdHRyaWJUeXBlLAorICAgIEdMYm9vbGVhbiBu
b3JtYWxpemVkKQoreworICAgIHN0ZDo6dmVjdG9yPEdMZmxvYXQ+IGV4cGVjdGVkRGF0YTsKKwor
ICAgIGNvbnN0IERlc3RUICp0eXBlZFNyY1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRGVz
dFQgKj4oc3JjRGF0YS5kYXRhKCkpOworICAgIHNpemVfdCBpdGVyYXRpb25zICAgICAgICA9IHNy
Y0RhdGEuc2l6ZSgpIC8gVHlwZVN0cmlkZShhdHRyaWJUeXBlKTsKKworICAgIGlmIChub3JtYWxp
emVkKQorICAgIHsKKyAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGl0ZXJh
dGlvbnM7ICsraW5kZXgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGV4cGVjdGVkRGF0YS5wdXNo
X2JhY2soTm9ybWFsaXplKHR5cGVkU3JjUHRyW2luZGV4XSkpOworICAgICAgICB9CisgICAgfQor
ICAgIGVsc2UKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBp
dGVyYXRpb25zOyArK2luZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBleHBlY3RlZERhdGEu
cHVzaF9iYWNrKHN0YXRpY19jYXN0PEdMZmxvYXQ+KHR5cGVkU3JjUHRyW2luZGV4XSkpOworICAg
ICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGV4cGVjdGVkRGF0YTsKK30KKwordm9pZCBWZXJ0
ZXhBdHRyaWJ1dGVDYWNoaW5nVGVzdDo6U2V0VXAoKQoreworICAgIFZlcnRleEF0dHJpYnV0ZVRl
c3Q6OlNldFVwKCk7CisKKyAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtQnVmZmVy
KTsKKworICAgIHN0ZDo6dmVjdG9yPEdMdWJ5dGU+IHNyY0RhdGE7CisgICAgZm9yIChzaXplX3Qg
Y291bnQgPSAwOyBjb3VudCA8IDQ7ICsrY291bnQpCisgICAgeworICAgICAgICBmb3IgKEdMdWJ5
dGUgaSA9IDA7IGkgPCBzdGQ6Om51bWVyaWNfbGltaXRzPEdMdWJ5dGU+OjptYXgoKTsgKytpKQor
ICAgICAgICB7CisgICAgICAgICAgICBzcmNEYXRhLnB1c2hfYmFjayhpKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIHNyY0RhdGEuc2l6ZSgp
LCBzcmNEYXRhLmRhdGEoKSwgR0xfU1RBVElDX0RSQVcpOworCisgICAgR0xpbnQgdmlld3BvcnRT
aXplWzRdOworICAgIGdsR2V0SW50ZWdlcnYoR0xfVklFV1BPUlQsIHZpZXdwb3J0U2l6ZSk7CisK
KyAgICBzdGQ6OnZlY3RvcjxHTGVudW0+IGF0dHJpYlR5cGVzOworICAgIGF0dHJpYlR5cGVzLnB1
c2hfYmFjayhHTF9CWVRFKTsKKyAgICBhdHRyaWJUeXBlcy5wdXNoX2JhY2soR0xfVU5TSUdORURf
QllURSk7CisgICAgYXR0cmliVHlwZXMucHVzaF9iYWNrKEdMX1NIT1JUKTsKKyAgICBhdHRyaWJU
eXBlcy5wdXNoX2JhY2soR0xfVU5TSUdORURfU0hPUlQpOworCisgICAgaWYgKGdldENsaWVudE1h
am9yVmVyc2lvbigpID49IDMpCisgICAgeworICAgICAgICBhdHRyaWJUeXBlcy5wdXNoX2JhY2so
R0xfSU5UKTsKKyAgICAgICAgYXR0cmliVHlwZXMucHVzaF9iYWNrKEdMX1VOU0lHTkVEX0lOVCk7
CisgICAgfQorCisgICAgY29uc3QgR0xpbnQgbWF4U2l6ZSAgICAgPSA0OworICAgIGNvbnN0IEdM
c2l6ZWkgbWF4U3RyaWRlID0gNDsKKworICAgIGZvciAoR0xlbnVtIGF0dHJpYlR5cGUgOiBhdHRy
aWJUeXBlcykKKyAgICB7CisgICAgICAgIGZvciAoR0xpbnQgYXR0cmliU2l6ZSA9IDE7IGF0dHJp
YlNpemUgPD0gbWF4U2l6ZTsgKythdHRyaWJTaXplKQorICAgICAgICB7CisgICAgICAgICAgICBm
b3IgKEdMc2l6ZWkgc3RyaWRlID0gMTsgc3RyaWRlIDw9IG1heFN0cmlkZTsgKytzdHJpZGUpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbVRlc3REYXRhLnB1c2hfYmFjayhBdHRyaWJE
YXRhKGF0dHJpYlR5cGUsIGF0dHJpYlNpemUsIEdMX0ZBTFNFLCBzdHJpZGUpKTsKKyAgICAgICAg
ICAgICAgICBpZiAoYXR0cmliVHlwZSAhPSBHTF9GTE9BVCkKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIG1UZXN0RGF0YS5wdXNoX2JhY2soQXR0cmliRGF0YShhdHRyaWJU
eXBlLCBhdHRyaWJTaXplLCBHTF9UUlVFLCBzdHJpZGUpKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtRXhwZWN0ZWREYXRhW0dMX0JZ
VEVdICAgICAgICAgID0gR2V0RXhwZWN0ZWREYXRhPEdMYnl0ZT4oc3JjRGF0YSwgR0xfQllURSwg
R0xfRkFMU0UpOworICAgIG1FeHBlY3RlZERhdGFbR0xfVU5TSUdORURfQllURV0gPSBHZXRFeHBl
Y3RlZERhdGE8R0x1Ynl0ZT4oc3JjRGF0YSwgR0xfVU5TSUdORURfQllURSwgR0xfRkFMU0UpOwor
ICAgIG1FeHBlY3RlZERhdGFbR0xfU0hPUlRdID0gR2V0RXhwZWN0ZWREYXRhPEdMc2hvcnQ+KHNy
Y0RhdGEsIEdMX1NIT1JULCBHTF9GQUxTRSk7CisgICAgbUV4cGVjdGVkRGF0YVtHTF9VTlNJR05F
RF9TSE9SVF0gPQorICAgICAgICBHZXRFeHBlY3RlZERhdGE8R0x1c2hvcnQ+KHNyY0RhdGEsIEdM
X1VOU0lHTkVEX1NIT1JULCBHTF9GQUxTRSk7CisgICAgbUV4cGVjdGVkRGF0YVtHTF9JTlRdICAg
ICAgICAgID0gR2V0RXhwZWN0ZWREYXRhPEdMaW50PihzcmNEYXRhLCBHTF9JTlQsIEdMX0ZBTFNF
KTsKKyAgICBtRXhwZWN0ZWREYXRhW0dMX1VOU0lHTkVEX0lOVF0gPSBHZXRFeHBlY3RlZERhdGE8
R0x1aW50PihzcmNEYXRhLCBHTF9VTlNJR05FRF9JTlQsIEdMX0ZBTFNFKTsKKworICAgIG1Ob3Jt
RXhwZWN0ZWREYXRhW0dMX0JZVEVdID0gR2V0RXhwZWN0ZWREYXRhPEdMYnl0ZT4oc3JjRGF0YSwg
R0xfQllURSwgR0xfVFJVRSk7CisgICAgbU5vcm1FeHBlY3RlZERhdGFbR0xfVU5TSUdORURfQllU
RV0gPQorICAgICAgICBHZXRFeHBlY3RlZERhdGE8R0x1Ynl0ZT4oc3JjRGF0YSwgR0xfVU5TSUdO
RURfQllURSwgR0xfVFJVRSk7CisgICAgbU5vcm1FeHBlY3RlZERhdGFbR0xfU0hPUlRdID0gR2V0
RXhwZWN0ZWREYXRhPEdMc2hvcnQ+KHNyY0RhdGEsIEdMX1NIT1JULCBHTF9UUlVFKTsKKyAgICBt
Tm9ybUV4cGVjdGVkRGF0YVtHTF9VTlNJR05FRF9TSE9SVF0gPQorICAgICAgICBHZXRFeHBlY3Rl
ZERhdGE8R0x1c2hvcnQ+KHNyY0RhdGEsIEdMX1VOU0lHTkVEX1NIT1JULCBHTF9UUlVFKTsKKyAg
ICBtTm9ybUV4cGVjdGVkRGF0YVtHTF9JTlRdICAgICAgICAgID0gR2V0RXhwZWN0ZWREYXRhPEdM
aW50PihzcmNEYXRhLCBHTF9JTlQsIEdMX1RSVUUpOworICAgIG1Ob3JtRXhwZWN0ZWREYXRhW0dM
X1VOU0lHTkVEX0lOVF0gPSBHZXRFeHBlY3RlZERhdGE8R0x1aW50PihzcmNEYXRhLCBHTF9VTlNJ
R05FRF9JTlQsIEdMX1RSVUUpOworfQorCisvLyBJbiBEM0QxMSwgd2UgbXVzdCBzb21ldGltZXMg
dHJhbnNsYXRlIGJ1ZmZlciBkYXRhIGludG8gc3RhdGljIGF0dHJpYnV0ZSBjYWNoZXMuIFdlIGFs
c28gdXNlIGEKKy8vIGNhY2hlIG1hbmFnZW1lbnQgc2NoZW1lIHdoaWNoIGdhcmJhZ2UgY29sbGVj
dHMgb2xkIGF0dHJpYnV0ZXMgYWZ0ZXIgd2Ugc3RhcnQgdXNpbmcgdG9vIG11Y2gKKy8vIGNhY2hl
IGRhdGEuIFRoaXMgdGVzdCB0cmllcyB0byBtYWtlIGFzIG1hbnkgYXR0cmlidXRlIGNhY2hlcyBm
cm9tIGEgc2luZ2xlIGJ1ZmZlciBhcyBwb3NzaWJsZQorLy8gdG8gc3RyZXNzLXRlc3QgdGhlIGNh
Y2hpbmcgY29kZS4KK1RFU1RfUChWZXJ0ZXhBdHRyaWJ1dGVDYWNoaW5nVGVzdCwgQnVmZmVyTXVs
dGljYWNoaW5nKQoreworICAgIGlmIChJc0FNRCgpICYmIElzRGVza3RvcE9wZW5HTCgpKQorICAg
IHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gQU1EIE9wZW5HTC4iIDw8
IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGluaXRCYXNpY1Byb2dy
YW0oKTsKKworICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkobVRlc3RBdHRyaWIpOworICAg
IGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkobUV4cGVjdGVkQXR0cmliKTsKKworICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOworCisgICAgZm9yIChjb25zdCBhdXRvICZkYXRhIDogbVRlc3REYXRh
KQorICAgIHsKKyAgICAgICAgY29uc3QgYXV0byAmZXhwZWN0ZWQgPQorICAgICAgICAgICAgKGRh
dGEubm9ybWFsaXplZCkgPyBtTm9ybUV4cGVjdGVkRGF0YVtkYXRhLnR5cGVdIDogbUV4cGVjdGVk
RGF0YVtkYXRhLnR5cGVdOworCisgICAgICAgIEdMc2l6ZWkgYmFzZVN0cmlkZSA9IHN0YXRpY19j
YXN0PEdMc2l6ZWk+KGRhdGEuc2l6ZSkgKiBkYXRhLnN0cmlkZTsKKyAgICAgICAgR0xzaXplaSBz
dHJpZGUgICAgID0gVHlwZVN0cmlkZShkYXRhLnR5cGUpICogYmFzZVN0cmlkZTsKKworICAgICAg
ICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtQnVmZmVyKTsKKyAgICAgICAgZ2xWZXJ0
ZXhBdHRyaWJQb2ludGVyKG1UZXN0QXR0cmliLCBkYXRhLnNpemUsIGRhdGEudHlwZSwgZGF0YS5u
b3JtYWxpemVkLCBzdHJpZGUsIG51bGxwdHIpOworICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJS
QVlfQlVGRkVSLCAwKTsKKyAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKG1FeHBlY3RlZEF0
dHJpYiwgZGF0YS5zaXplLCBHTF9GTE9BVCwgR0xfRkFMU0UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplb2YoR0xmbG9hdCkgKiBiYXNlU3RyaWRlLCBleHBlY3RlZC5kYXRhKCkp
OworICAgICAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgICAgICBFWFBFQ1RfUElYRUxfRVEoZ2V0V2luZG93
V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgMjU1LCAyNTUsIDI1NSwgMjU1KTsK
KyAgICB9Cit9CisKKy8vIFdpdGggRDNEMTEgZGlydHkgYml0cyBmb3IgVmVydHhBcnJheTExLCB3
ZSBjYW4gbGVhdmUgdmVydGV4IHN0YXRlIHVuY2hhbmdlZCBpZiB0aGVyZSBhcmVuJ3QgYW55Cisv
LyBHTCBjYWxscyB0aGF0IGFmZmVjdCBpdC4gVGhpcyB0ZXN0IHRhcmdldHMgbGVhdmluZyBvbmUg
dmVydGV4IGF0dHJpYnV0ZSB1bmNoYW5nZWQgYmV0d2VlbiBkcmF3CisvLyBjYWxscyB3aGlsZSBj
aGFuZ2luZyBhbm90aGVyIHZlcnRleCBhdHRyaWJ1dGUgZW5vdWdoIHRoYXQgaXQgY2xlYXJzIHRo
ZSBzdGF0aWMgYnVmZmVyIGNhY2hlCisvLyBhZnRlciBlbm91Z2ggaXRlcmF0aW9ucy4gSXQgdmFs
aWRhdGVzIHRoZSB1bmNoYW5nZWQgYXR0cmlidXRlcyBkb24ndCBnZXQgZGVsZXRlZCBpbmNpZGVu
dGFsbHkuCitURVNUX1AoVmVydGV4QXR0cmlidXRlQ2FjaGluZ1Rlc3QsIEJ1ZmZlck11bHRpY2Fj
aGluZ1dpdGhPbmVVbmNoYW5nZWRBdHRyaWIpCit7CisgICAgaWYgKElzQU1EKCkgJiYgSXNEZXNr
dG9wT3BlbkdMKCkpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBv
biBBTUQgT3BlbkdMLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaW5pdERvdWJsZUF0dHJpYlByb2dyYW0oKTsKKworICAgIEdMaW50IHRlc3RBdHRyaWIyTG9j
YXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAidGVzdDIiKTsKKyAgICBBU1NF
UlRfTkUoLTEsIHRlc3RBdHRyaWIyTG9jYXRpb24pOworICAgIEdMaW50IGV4cGVjdGVkQXR0cmli
MkxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgImV4cGVjdGVkMiIpOwor
ICAgIEFTU0VSVF9ORSgtMSwgZXhwZWN0ZWRBdHRyaWIyTG9jYXRpb24pOworCisgICAgZ2xFbmFi
bGVWZXJ0ZXhBdHRyaWJBcnJheShtVGVzdEF0dHJpYik7CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheShtRXhwZWN0ZWRBdHRyaWIpOworICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXko
dGVzdEF0dHJpYjJMb2NhdGlvbik7CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShleHBl
Y3RlZEF0dHJpYjJMb2NhdGlvbik7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAg
IC8vIFVzZSBhbiBhdHRyaWJ1dGUgdGhhdCB3ZSBrbm93IG11c3QgYmUgY29udmVydGVkLiBUaGlz
IGlzIGEgYml0IHNlbnNpdGl2ZS4KKyAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBt
QnVmZmVyKTsKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIodGVzdEF0dHJpYjJMb2NhdGlvbiwg
MywgR0xfVU5TSUdORURfU0hPUlQsIEdMX0ZBTFNFLCA2LCBudWxscHRyKTsKKyAgICBnbEJpbmRC
dWZmZXIoR0xfQVJSQVlfQlVGRkVSLCAwKTsKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoZXhw
ZWN0ZWRBdHRyaWIyTG9jYXRpb24sIDMsIEdMX0ZMT0FULCBHTF9GQUxTRSwgc2l6ZW9mKEdMZmxv
YXQpICogMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbUV4cGVjdGVkRGF0YVtHTF9VTlNJ
R05FRF9TSE9SVF0uZGF0YSgpKTsKKworICAgIGZvciAoY29uc3QgYXV0byAmZGF0YSA6IG1UZXN0
RGF0YSkKKyAgICB7CisgICAgICAgIGNvbnN0IGF1dG8gJmV4cGVjdGVkID0KKyAgICAgICAgICAg
IChkYXRhLm5vcm1hbGl6ZWQpID8gbU5vcm1FeHBlY3RlZERhdGFbZGF0YS50eXBlXSA6IG1FeHBl
Y3RlZERhdGFbZGF0YS50eXBlXTsKKworICAgICAgICBHTHNpemVpIGJhc2VTdHJpZGUgPSBzdGF0
aWNfY2FzdDxHTHNpemVpPihkYXRhLnNpemUpICogZGF0YS5zdHJpZGU7CisgICAgICAgIEdMc2l6
ZWkgc3RyaWRlICAgICA9IFR5cGVTdHJpZGUoZGF0YS50eXBlKSAqIGJhc2VTdHJpZGU7CisKKyAg
ICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZlcik7CisgICAgICAgIGds
VmVydGV4QXR0cmliUG9pbnRlcihtVGVzdEF0dHJpYiwgZGF0YS5zaXplLCBkYXRhLnR5cGUsIGRh
dGEubm9ybWFsaXplZCwgc3RyaWRlLCBudWxscHRyKTsKKyAgICAgICAgZ2xCaW5kQnVmZmVyKEdM
X0FSUkFZX0JVRkZFUiwgMCk7CisgICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihtRXhwZWN0
ZWRBdHRyaWIsIGRhdGEuc2l6ZSwgR0xfRkxPQVQsIEdMX0ZBTFNFLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZW9mKEdMZmxvYXQpICogYmFzZVN0cmlkZSwgZXhwZWN0ZWQuZGF0
YSgpKTsKKyAgICAgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworCisg
ICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgICAgICBFWFBFQ1RfUElYRUxfRVEoZ2V0
V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgMjU1LCAyNTUsIDI1NSwg
MjU1KTsKKyAgICB9Cit9CisKKy8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0
aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVz
ZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCisvLyBEM0QxMSBGZWF0dXJlIExldmVsIDlf
MyB1c2VzIGRpZmZlcmVudCBEM0QgZm9ybWF0cyBmb3IgdmVydGV4IGF0dHJpYnMgY29tcGFyZWQg
dG8gRmVhdHVyZSBMZXZlbHMgMTBfMCssIHNvIHdlIHNob3VsZCB0ZXN0IHRoZW0gc2VwYXJhdGVs
eS4KK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoVmVydGV4QXR0cmlidXRlVGVzdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0Qz
RDExKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDlfMygpLAorICAgICAg
ICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVT
M19PUEVOR0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCksCisgICAg
ICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygpKTsKKworQU5HTEVfSU5TVEFOVElBVEVf
VEVTVChWZXJ0ZXhBdHRyaWJ1dGVUZXN0RVMzLCBFUzNfRDNEMTEoKSwgRVMzX09QRU5HTCgpLCBF
UzNfT1BFTkdMRVMoKSk7CisKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoVmVydGV4QXR0cmlidXRl
Q2FjaGluZ1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCisgICAgICAg
ICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNf
RDNEMTEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgpKTsKKworfSAgLy8g
YW5vbnltb3VzIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsX3Rlc3RzL1ZpZXdwb3J0VGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1ZpZXdwb3J0VGVzdC5jcHAJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1ZpZXdw
b3J0VGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNzIgQEAKKy8vCisvLyBDb3B5
cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisK
KyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5n
bGU7CisKK25hbWVzcGFjZQoreworCitjbGFzcyBWaWV3cG9ydFRlc3QgOiBwdWJsaWMgQU5HTEVU
ZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBWaWV3cG9ydFRlc3QoKQorICAgIHsKKyAgICAgICAg
c2V0V2luZG93V2lkdGgoNTEyKTsKKyAgICAgICAgc2V0V2luZG93SGVpZ2h0KDUxMik7CisgICAg
ICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsK
KyAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0FscGhhQml0
cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnRGVwdGhCaXRzKDI0KTsKKworICAgICAgICBtUHJvZ3Jh
bSA9IDA7CisgICAgfQorCisgICAgdm9pZCBydW5Ob25TY2lzc29yZWRUZXN0KCkKKyAgICB7Cisg
ICAgICAgIGdsQ2xlYXJDb2xvcigwLCAwLCAwLCAxKTsKKyAgICAgICAgZ2xDbGVhcihHTF9DT0xP
Ul9CVUZGRVJfQklUKTsKKworICAgICAgICBydW5UZXN0KCk7CisgICAgfQorCisgICAgdm9pZCBy
dW5TY2lzc29yZWRUZXN0KCkKKyAgICB7CisgICAgICAgIGdsQ2xlYXJDb2xvcigwLCAwLCAwLCAx
KTsKKyAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAgICAgICBnbEVu
YWJsZShHTF9TQ0lTU09SX1RFU1QpOworICAgICAgICBnbFNjaXNzb3IoMCwgZ2V0V2luZG93SGVp
Z2h0KCkgLyAyLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIpOworCisg
ICAgICAgIHJ1blRlc3QoKTsKKyAgICB9CisKKyAgICB2b2lkIHJ1blRlc3QoKQorICAgIHsKKyAg
ICAgICAgLy8gRmlyc3RseSBlbnN1cmUgdGhhdCBubyBlcnJvcnMgaGF2ZSBiZWVuIGhpdC4KKyAg
ICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgR0xpbnQgdmlld3BvcnRTaXpl
WzRdOworICAgICAgICBnbEdldEludGVnZXJ2KEdMX1ZJRVdQT1JULCB2aWV3cG9ydFNpemUpOwor
CisgICAgICAgIC8vIENsZWFyIHRvIGdyZWVuLiBNaWdodCBiZSBhIHNjaXNzb3JlZCBjbGVhciwg
aWYgc2Npc3NvclNpemUgIT0gd2luZG93IHNpemUKKyAgICAgICAgZ2xDbGVhckNvbG9yKDAsIDEs
IDAsIDEpOworICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworCisgICAgICAg
IC8vIERyYXcgYSByZWQgcXVhZCBjZW50ZXJlZCBpbiB0aGUgbWlkZGxlIG9mIHRoZSB2aWV3cG9y
dCwgd2l0aCBkaW1lbnNpb25zIDI1JSBvZiB0aGUgc2l6ZSBvZiB0aGUgdmlld3BvcnQuCisgICAg
ICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmLCAwLjI1Zik7CisKKyAgICAg
ICAgR0xpbnQgY2VudGVyVmlld3BvcnRYID0gdmlld3BvcnRTaXplWzBdICsgKHZpZXdwb3J0U2l6
ZVsyXSAvIDIpOworICAgICAgICBHTGludCBjZW50ZXJWaWV3cG9ydFkgPSB2aWV3cG9ydFNpemVb
MV0gKyAodmlld3BvcnRTaXplWzNdIC8gMik7CisKKyAgICAgICAgR0xpbnQgcmVkUXVhZExlZnRT
aWRlWCAgID0gdmlld3BvcnRTaXplWzBdICsgdmlld3BvcnRTaXplWzJdICogMyAvIDg7CisgICAg
ICAgIEdMaW50IHJlZFF1YWRSaWdodFNpZGVYICA9IHZpZXdwb3J0U2l6ZVswXSArIHZpZXdwb3J0
U2l6ZVsyXSAqIDUgLyA4OworICAgICAgICBHTGludCByZWRRdWFkVG9wU2lkZVkgICAgPSB2aWV3
cG9ydFNpemVbMV0gKyB2aWV3cG9ydFNpemVbM10gKiAzIC8gODsKKyAgICAgICAgR0xpbnQgcmVk
UXVhZEJvdHRvbVNpZGVZID0gdmlld3BvcnRTaXplWzFdICsgdmlld3BvcnRTaXplWzNdICogNSAv
IDg7CisKKyAgICAgICAgLy8gVGhlIG1pZHBvaW50IG9mIHRoZSB2aWV3cG9ydCBzaG91bGQgYmUg
cmVkLgorICAgICAgICBjaGVja1BpeGVsKGNlbnRlclZpZXdwb3J0WCwgY2VudGVyVmlld3BvcnRZ
LCB0cnVlKTsKKworICAgICAgICAvLyBQaXhlbHMganVzdCBpbnNpZGUgdGhlIHJlZCBxdWFkIHNo
b3VsZCBiZSByZWQuCisgICAgICAgIGNoZWNrUGl4ZWwocmVkUXVhZExlZnRTaWRlWCwgICAgICBy
ZWRRdWFkVG9wU2lkZVksICAgICAgICB0cnVlKTsKKyAgICAgICAgY2hlY2tQaXhlbChyZWRRdWFk
TGVmdFNpZGVYLCAgICAgIHJlZFF1YWRCb3R0b21TaWRlWSAtIDEsIHRydWUpOworICAgICAgICBj
aGVja1BpeGVsKHJlZFF1YWRSaWdodFNpZGVYIC0gMSwgcmVkUXVhZFRvcFNpZGVZLCAgICAgICAg
dHJ1ZSk7CisgICAgICAgIGNoZWNrUGl4ZWwocmVkUXVhZFJpZ2h0U2lkZVggLSAxLCByZWRRdWFk
Qm90dG9tU2lkZVkgLSAxLCB0cnVlKTsKKworICAgICAgICAvLyBQaXhlbHMganVzdCBvdXRzaWRl
IHRoZSByZWQgcXVhZCBzaG91bGRuJ3QgYmUgcmVkLgorICAgICAgICBjaGVja1BpeGVsKHJlZFF1
YWRMZWZ0U2lkZVggLSAxLCAgcmVkUXVhZFRvcFNpZGVZIC0gMSwgZmFsc2UpOworICAgICAgICBj
aGVja1BpeGVsKHJlZFF1YWRMZWZ0U2lkZVggLSAxLCAgcmVkUXVhZEJvdHRvbVNpZGVZLCAgZmFs
c2UpOworICAgICAgICBjaGVja1BpeGVsKHJlZFF1YWRSaWdodFNpZGVYLCAgICAgcmVkUXVhZFRv
cFNpZGVZIC0gMSwgZmFsc2UpOworICAgICAgICBjaGVja1BpeGVsKHJlZFF1YWRSaWdodFNpZGVY
LCAgICAgcmVkUXVhZEJvdHRvbVNpZGVZLCAgZmFsc2UpOworCisgICAgICAgIC8vIFBpeGVscyBq
dXN0IHdpdGhpbiB0aGUgdmlld3BvcnQgc2hvdWxkbid0IGJlIHJlZC4KKyAgICAgICAgY2hlY2tQ
aXhlbCh2aWV3cG9ydFNpemVbMF0sICAgICAgICAgICAgICAgICAgICAgICAgdmlld3BvcnRTaXpl
WzFdLCAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpOworICAgICAgICBjaGVja1BpeGVsKHZp
ZXdwb3J0U2l6ZVswXSwgICAgICAgICAgICAgICAgICAgICAgICB2aWV3cG9ydFNpemVbMV0gKyB2
aWV3cG9ydFNpemVbM10gLSAxLCBmYWxzZSk7CisgICAgICAgIGNoZWNrUGl4ZWwodmlld3BvcnRT
aXplWzBdICsgdmlld3BvcnRTaXplWzJdIC0gMSwgIHZpZXdwb3J0U2l6ZVsxXSwgICAgICAgICAg
ICAgICAgICAgICAgIGZhbHNlKTsKKyAgICAgICAgY2hlY2tQaXhlbCh2aWV3cG9ydFNpemVbMF0g
KyB2aWV3cG9ydFNpemVbMl0gLSAxLCAgdmlld3BvcnRTaXplWzFdICsgdmlld3BvcnRTaXplWzNd
IC0gMSwgZmFsc2UpOworICAgIH0KKworICAgIHZvaWQgY2hlY2tQaXhlbChHTGludCB4LCBHTGlu
dCB5LCBHTGJvb2xlYW4gcmVuZGVyZWRSZWQpCisgICAgeworICAgICAgICAvLyBCeSBkZWZhdWx0
LCBleHBlY3QgdGhlIHBpeGVsIHRvIGJlIGJsYWNrLgorICAgICAgICBHTGludCBleHBlY3RlZFJl
ZENoYW5uZWwgPSAwOworICAgICAgICBHTGludCBleHBlY3RlZEdyZWVuQ2hhbm5lbCA9IDA7CisK
KyAgICAgICAgR0xpbnQgc2Npc3NvclNpemVbNF07CisgICAgICAgIGdsR2V0SW50ZWdlcnYoR0xf
U0NJU1NPUl9CT1gsIHNjaXNzb3JTaXplKTsKKworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1Io
KTsKKworICAgICAgICBpZiAoc2Npc3NvclNpemVbMF0gPD0geCAmJiB4IDwgc2Npc3NvclNpemVb
MF0gKyBzY2lzc29yU2l6ZVsyXQorICAgICAgICAgICAgJiYgc2Npc3NvclNpemVbMV0gPD0geSAm
JiB5IDwgc2Npc3NvclNpemVbMV0gKyBzY2lzc29yU2l6ZVszXSkKKyAgICAgICAgeworICAgICAg
ICAgICAgLy8gSWYgdGhlIHBpeGVsIGxpZXMgd2l0aGluIHRoZSBzY2lzc29yIHJlY3QsIHRoZW4g
aXQgc2hvdWxkIGhhdmUgYmVlbiBjbGVhcmVkIHRvIGdyZWVuLgorICAgICAgICAgICAgLy8gSWYg
d2UgcmVuZGVyZWQgYSByZWQgc3F1YXJlIG9uIHRvcCBvZiBpdCwgdGhlbiB0aGUgcGl4ZWwgc2hv
dWxkIGJlIHJlZCAodGhlIGdyZWVuIGNoYW5uZWwgd2lsbCBoYXZlIGJlZW4gcmVzZXQgdG8gMCku
CisgICAgICAgICAgICBleHBlY3RlZFJlZENoYW5uZWwgPSByZW5kZXJlZFJlZCA/IDI1NSA6IDA7
CisgICAgICAgICAgICBleHBlY3RlZEdyZWVuQ2hhbm5lbCA9IHJlbmRlcmVkUmVkID8gMCA6IDI1
NTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIHRoZSBwaXhlbCBpcyB3aXRoaW4gdGhlIGJv
dW5kcyBvZiB0aGUgd2luZG93LCB0aGVuIHdlIGNoZWNrIGl0LiBPdGhlcndpc2Ugd2Ugc2tpcCBp
dC4KKyAgICAgICAgaWYgKDAgPD0geCAmJiB4IDwgZ2V0V2luZG93V2lkdGgoKSAmJiAwIDw9IHkg
JiYgeSA8IGdldFdpbmRvd0hlaWdodCgpKQorICAgICAgICB7CisgICAgICAgICAgICBFWFBFQ1Rf
UElYRUxfRVEoeCwgeSwgZXhwZWN0ZWRSZWRDaGFubmVsLCBleHBlY3RlZEdyZWVuQ2hhbm5lbCwg
MCwgMjU1KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOworCisgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nIHRlc3RWZXJ0ZXhTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgICAgICgK
KyAgICAgICAgICAgIGF0dHJpYnV0ZSBoaWdocCB2ZWM0IHBvc2l0aW9uOworCisgICAgICAgICAg
ICB2b2lkIG1haW4odm9pZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbF9Qb3Np
dGlvbiA9IHBvc2l0aW9uOworICAgICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nIHRlc3RGcmFnbWVudFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UK
KyAgICAgICAgKAorICAgICAgICAgICAgdm9pZCBtYWluKHZvaWQpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApOwor
ICAgICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVBy
b2dyYW0odGVzdFZlcnRleFNoYWRlclNvdXJjZSwgdGVzdEZyYWdtZW50U2hhZGVyU291cmNlKTsK
KyAgICAgICAgaWYgKG1Qcm9ncmFtID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIEZBSUwo
KSA8PCAic2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZC4iOworICAgICAgICB9CisKKyAgICAgICAg
Z2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKKworICAgICAgICBnbENsZWFyQ29sb3IoMCwgMCwgMCwg
MSk7CisgICAgICAgIGdsQ2xlYXJEZXB0aGYoMC4wKTsKKyAgICAgICAgZ2xDbGVhcihHTF9DT0xP
Ul9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCk7CisKKyAgICAgICAgLy8gQ2FsbCBn
bFZpZXdwb3J0IGFuZCBnbFNjaXNzb3Igd2l0aCBkZWZhdWx0IHBhcmFtZXRlcnMuCisgICAgICAg
IGdsU2Npc3NvcigwLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7Cisg
ICAgICAgIGdsVmlld3BvcnQoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0
KCkpOworCisgICAgICAgIGdsRGlzYWJsZShHTF9ERVBUSF9URVNUKTsKKyAgICB9CisKKyAgICB2
b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGdsRGVsZXRlUHJvZ3JhbSht
UHJvZ3JhbSk7CisKKyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOworICAgIH0KKworICAg
IEdMdWludCBtUHJvZ3JhbTsKK307CisKK1RFU1RfUChWaWV3cG9ydFRlc3QsIFF1YXJ0ZXJXaW5k
b3cpCit7CisgICAgZ2xWaWV3cG9ydCgwLCAwLCBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2lu
ZG93SGVpZ2h0KCkgLyA0KTsKKworICAgIHJ1bk5vblNjaXNzb3JlZFRlc3QoKTsKKworICAgIHJ1
blNjaXNzb3JlZFRlc3QoKTsKK30KKworVEVTVF9QKFZpZXdwb3J0VGVzdCwgUXVhcnRlcldpbmRv
d0NlbnRlcmVkKQoreworICAgIGdsVmlld3BvcnQoZ2V0V2luZG93V2lkdGgoKSAqIDMgLyA4LCBn
ZXRXaW5kb3dIZWlnaHQoKSAqIDMgLyA4LCBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93
SGVpZ2h0KCkgLyA0KTsKKworICAgIHJ1bk5vblNjaXNzb3JlZFRlc3QoKTsKKworICAgIHJ1blNj
aXNzb3JlZFRlc3QoKTsKK30KKworVEVTVF9QKFZpZXdwb3J0VGVzdCwgRnVsbFdpbmRvdykKK3sK
KyAgICBnbFZpZXdwb3J0KDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgp
KTsKKworICAgIHJ1bk5vblNjaXNzb3JlZFRlc3QoKTsKKworICAgIHJ1blNjaXNzb3JlZFRlc3Qo
KTsKK30KKworVEVTVF9QKFZpZXdwb3J0VGVzdCwgRnVsbFdpbmRvd09mZkNlbnRlcikKK3sKKyAg
ICBnbFZpZXdwb3J0KC1nZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAy
LCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7CisKKyAgICBydW5Ob25TY2lz
c29yZWRUZXN0KCk7CisKKyAgICBydW5TY2lzc29yZWRUZXN0KCk7Cit9CisKK1RFU1RfUChWaWV3
cG9ydFRlc3QsIERvdWJsZVdpbmRvdykKK3sKKyAgICBnbFZpZXdwb3J0KDAsIDAsIGdldFdpbmRv
d1dpZHRoKCkgKiAyLCBnZXRXaW5kb3dIZWlnaHQoKSAqIDIpOworCisgICAgcnVuTm9uU2Npc3Nv
cmVkVGVzdCgpOworCisgICAgcnVuU2Npc3NvcmVkVGVzdCgpOworfQorCitURVNUX1AoVmlld3Bv
cnRUZXN0LCBEb3VibGVXaW5kb3dDZW50ZXJlZCkKK3sKKyAgICBnbFZpZXdwb3J0KC1nZXRXaW5k
b3dXaWR0aCgpIC8gMiwgLWdldFdpbmRvd0hlaWdodCgpIC8gMiwgZ2V0V2luZG93V2lkdGgoKSAq
IDIsIGdldFdpbmRvd0hlaWdodCgpICogMik7CisKKyAgICBydW5Ob25TY2lzc29yZWRUZXN0KCk7
CisKKyAgICBydW5TY2lzc29yZWRUZXN0KCk7Cit9CisKK1RFU1RfUChWaWV3cG9ydFRlc3QsIERv
dWJsZVdpbmRvd09mZkNlbnRlcikKK3sKKyAgICBnbFZpZXdwb3J0KC1nZXRXaW5kb3dXaWR0aCgp
ICogMyAvIDQsIGdldFdpbmRvd0hlaWdodCgpICogMyAvIDQsIGdldFdpbmRvd1dpZHRoKCksIGdl
dFdpbmRvd0hlaWdodCgpKTsKKworICAgIHJ1bk5vblNjaXNzb3JlZFRlc3QoKTsKKworICAgIHJ1
blNjaXNzb3JlZFRlc3QoKTsKK30KKworVEVTVF9QKFZpZXdwb3J0VGVzdCwgVHJpcGxlV2luZG93
KQoreworICAgIGdsVmlld3BvcnQoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSAqIDMsIGdldFdpbmRv
d0hlaWdodCgpICogMyk7CisKKyAgICBydW5Ob25TY2lzc29yZWRUZXN0KCk7CisKKyAgICBydW5T
Y2lzc29yZWRUZXN0KCk7Cit9CisKK1RFU1RfUChWaWV3cG9ydFRlc3QsIFRyaXBsZVdpbmRvd0Nl
bnRlcmVkKQoreworICAgIGdsVmlld3BvcnQoLWdldFdpbmRvd1dpZHRoKCksIC1nZXRXaW5kb3dI
ZWlnaHQoKSwgZ2V0V2luZG93V2lkdGgoKSAqIDMsIGdldFdpbmRvd0hlaWdodCgpICogMyk7CisK
KyAgICBydW5Ob25TY2lzc29yZWRUZXN0KCk7CisKKyAgICBydW5TY2lzc29yZWRUZXN0KCk7Cit9
CisKK1RFU1RfUChWaWV3cG9ydFRlc3QsIFRyaXBsZVdpbmRvd09mZkNlbnRlcikKK3sKKyAgICBn
bFZpZXdwb3J0KC1nZXRXaW5kb3dXaWR0aCgpICogMyAvIDIsIC1nZXRXaW5kb3dIZWlnaHQoKSAq
IDMgLyAyLCBnZXRXaW5kb3dXaWR0aCgpICogMywgZ2V0V2luZG93SGVpZ2h0KCkgKiAzKTsKKwor
ICAgIHJ1bk5vblNjaXNzb3JlZFRlc3QoKTsKKworICAgIHJ1blNjaXNzb3JlZFRlc3QoKTsKK30K
KworLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNo
IHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBi
ZSBydW4gYWdhaW5zdC4KKy8vIEQzRDExIEZlYXR1cmUgTGV2ZWwgOSBhbmQgRDNEOSBlbXVsYXRl
IGxhcmdlIGFuZCBuZWdhdGl2ZSB2aWV3cG9ydHMgaW4gdGhlIHZlcnRleCBzaGFkZXIuIFdlIHNo
b3VsZCB0ZXN0IGJvdGggb2YgdGhlc2UgYXMgd2VsbCBhcyBEM0QxMSBGZWF0dXJlIExldmVsIDEw
XzArLgorQU5HTEVfSU5TVEFOVElBVEVfVEVTVChWaWV3cG9ydFRlc3QsCisgICAgICAgICAgICAg
ICAgICAgICAgIEVTMl9EM0Q5KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMShF
R0xfRVhQRVJJTUVOVEFMX1BSRVNFTlRfUEFUSF9DT1BZX0FOR0xFKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgRVMyX0QzRDExKEVHTF9FWFBFUklNRU5UQUxfUFJFU0VOVF9QQVRIX0ZBU1RfQU5H
TEUpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzMoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVT
M19PUEVOR0xFUygpKTsKKworfSAvLyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9XZWJHTENvbXBhdGliaWxpdHlUZXN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvV2Vi
R0xDb21wYXRpYmlsaXR5VGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1dlYkdMQ29tcGF0aWJpbGl0eVRlc3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTI3IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBXZWJHTENvbXBh
dGliaWxpdHlUZXN0LmNwcCA6IFRlc3RzIG9mIHRoZSBHTF9BTkdMRV93ZWJnbF9jb21wYXRpYmls
aXR5IGV4dGVuc2lvbi4KKworI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKKyNp
bmNsdWRlICJ0ZXN0X3V0aWxzL2dsX3JhaWkuaCIKKworbmFtZXNwYWNlIGFuZ2xlCit7CisKK2Ns
YXNzIFdlYkdMQ29tcGF0aWJpbGl0eVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3Rl
Y3RlZDoKKyAgICBXZWJHTENvbXBhdGliaWxpdHlUZXN0KCkKKyAgICB7CisgICAgICAgIHNldFdp
bmRvd1dpZHRoKDEyOCk7CisgICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOworICAgICAgICBz
ZXRDb25maWdSZWRCaXRzKDgpOworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAg
ICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7
CisgICAgICAgIHNldFdlYkdMQ29tcGF0aWJpbGl0eUVuYWJsZWQodHJ1ZSk7CisgICAgfQorCisg
ICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNldFVw
KCk7CisgICAgICAgIGdsRW5hYmxlRXh0ZW5zaW9uQU5HTEUgPSByZWludGVycHJldF9jYXN0PFBG
TkdMRU5BQkxFRVhURU5TSU9OQU5HTEVQUk9DPigKKyAgICAgICAgICAgIGVnbEdldFByb2NBZGRy
ZXNzKCJnbEVuYWJsZUV4dGVuc2lvbkFOR0xFIikpOworICAgIH0KKworICAgIHZvaWQgVGVhckRv
d24oKSBvdmVycmlkZSB7IEFOR0xFVGVzdDo6VGVhckRvd24oKTsgfQorCisgICAgUEZOR0xFTkFC
TEVFWFRFTlNJT05BTkdMRVBST0MgZ2xFbmFibGVFeHRlbnNpb25BTkdMRSA9IG51bGxwdHI7Cit9
OworCisvLyBDb250ZXh0IGNyZWF0aW9uIHdvdWxkIGZhaWwgaWYgRUdMX0FOR0xFX2NyZWF0ZV9j
b250ZXh0X3dlYmdsX2NvbXBhdGliaWxpdHkgd2FzIG5vdCBhdmFpbGFibGUgc28KKy8vIHRoZSBH
TCBleHRlbnNpb24gc2hvdWxkIGFsd2F5cyBiZSBwcmVzZW50CitURVNUX1AoV2ViR0xDb21wYXRp
YmlsaXR5VGVzdCwgRXh0ZW5zaW9uU3RyaW5nRXhwb3NlZCkKK3sKKyAgICBFWFBFQ1RfVFJVRShl
eHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV93ZWJnbF9jb21wYXRpYmlsaXR5IikpOworfQorCisv
LyBWZXJpZnkgdGhhdCBhbGwgZXh0ZW5zaW9uIGVudHJ5IHBvaW50cyBhcmUgYXZhaWxhYmxlCitU
RVNUX1AoV2ViR0xDb21wYXRpYmlsaXR5VGVzdCwgRW50cnlQb2ludHMpCit7CisgICAgaWYgKGV4
dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX3dlYmdsX2NvbXBhdGliaWxpdHkiKSkKKyAgICB7Cisg
ICAgICAgIEVYUEVDVF9ORShudWxscHRyLCBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xFbmFibGVFeHRl
bnNpb25BTkdMRSIpKTsKKyAgICB9Cit9CisKKy8vIFdlYkdMIDEgYWxsb3dzIEdMX0RFUFRIX1NU
RU5DSUxfQVRUQUNITUVOVCBhcyBhIHZhbGlkIGJpbmRpbmcgcG9pbnQuICBNYWtlIHN1cmUgaXQg
aXMgdXNhYmxlLAorLy8gZXZlbiBpbiBFUzIgY29udGV4dHMuCitURVNUX1AoV2ViR0xDb21wYXRp
YmlsaXR5VGVzdCwgRGVwdGhTdGVuY2lsQmluZGluZ1BvaW50KQoreworICAgIEdMUmVuZGVyYnVm
ZmVyIHJlbmRlcmJ1ZmZlcjsKKyAgICBnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVS
LCByZW5kZXJidWZmZXIuZ2V0KCkpOworICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5E
RVJCVUZGRVIsIEdMX0RFUFRIMjRfU1RFTkNJTDgsIDMyLCAzMik7CisKKyAgICBHTEZyYW1lYnVm
ZmVyIGZyYW1lYnVmZmVyOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBm
cmFtZWJ1ZmZlci5nZXQoKSk7CisgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFN
RUJVRkZFUiwgR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJidWZmZXIuZ2V0KCkpOworCisgICAg
RVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFRlc3QgdGhhdCBhdHRlbXB0aW5nIHRvIGVu
YWJsZSBhbiBleHRlbnNpb24gdGhhdCBkb2Vzbid0IGV4aXN0IGdlbmVyYXRlcyBHTF9JTlZBTElE
X09QRVJBVElPTgorVEVTVF9QKFdlYkdMQ29tcGF0aWJpbGl0eVRlc3QsIEVuYWJsZUV4dGVuc2lv
blZhbGlkYXRpb24pCit7CisgICAgRVhQRUNUX0VRKEdMX0ZBTFNFLCBnbEVuYWJsZUV4dGVuc2lv
bkFOR0xFKCJpbnZhbGlkX2V4dGVuc2lvbl9zdHJpbmciKSk7CisgICAgRVhQRUNUX0dMX0VSUk9S
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworLy8gVGVzdCBlbmFibGluZyB0aGUgR0xfT0VT
X2VsZW1lbnRfaW5kZXhfdWludCBleHRlbnNpb24KK1RFU1RfUChXZWJHTENvbXBhdGliaWxpdHlU
ZXN0LCBFbmFibGVFeHRlbnNpb25VaW50SW5kaWNlcykKK3sKKyAgICBpZiAoZ2V0Q2xpZW50TWFq
b3JWZXJzaW9uKCkgIT0gMikKKyAgICB7CisgICAgICAgIC8vIFRoaXMgdGVzdCBvbmx5IHdvcmtz
IG9uIEVTMiB3aGVyZSB1aW50IGluZGljZXMgYXJlIG5vdCBhdmFpbGFibGUgYnkgZGVmYXVsdAor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgRVhQRUNUX0ZBTFNFKGV4dGVuc2lvbkVuYWJs
ZWQoIkdMX09FU19lbGVtZW50X2luZGV4X3VpbnQiKSk7CisKKyAgICBHTEJ1ZmZlciBpbmRleEJ1
ZmZlcjsKKyAgICBnbEJpbmRCdWZmZXIoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZGV4QnVm
ZmVyLmdldCgpKTsKKworICAgIEdMdWludCBkYXRhW10gPSB7MCwgMSwgMiwgMSwgMywgMn07Cisg
ICAgZ2xCdWZmZXJEYXRhKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBzaXplb2YoZGF0YSksIGRh
dGEsIEdMX1NUQVRJQ19EUkFXKTsKKworICAgIEFOR0xFX0dMX1BST0dSQU0ocHJvZ3JhbSwgInZv
aWQgbWFpbigpIHsgZ2xfUG9zaXRpb24gPSB2ZWM0KDAsIDAsIDAsIDEpOyB9IiwKKyAgICAgICAg
ICAgICAgICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX0ZyYWdDb2xvciA9IHZlYzQoMCwgMSwgMCwg
MSk7IH0iKQorICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtLmdldCgpKTsKKworICAgIGdsRHJhd0Vs
ZW1lbnRzKEdMX1RSSUFOR0xFUywgMiwgR0xfVU5TSUdORURfSU5ULCBudWxscHRyKTsKKyAgICBF
WFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKKworICAgIGlmIChnbEVuYWJsZUV4dGVu
c2lvbkFOR0xFKCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50IikpCisgICAgeworICAgICAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoZXh0ZW5zaW9uRW5hYmxl
ZCgiR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpKTsKKworICAgICAgICBnbERyYXdFbGVtZW50
cyhHTF9UUklBTkdMRVMsIDIsIEdMX1VOU0lHTkVEX0lOVCwgbnVsbHB0cik7CisgICAgICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOworICAgIH0KK30KKworLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdo
aWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9y
IHZlcnNpb24pIHRoZXNlCisvLyB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCitBTkdMRV9J
TlNUQU5USUFURV9URVNUKFdlYkdMQ29tcGF0aWJpbGl0eVRlc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgIEVTMl9EM0Q5KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAor
ICAgICAgICAgICAgICAgICAgICAgICBFUzNfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgRVMyX0QzRDExX0ZMOV8zKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0wo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgpLAorICAgICAgICAgICAgICAg
ICAgICAgICBFUzJfT1BFTkdMRVMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5H
TEVTKCkpOworCit9ICAvLyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9nbF90ZXN0cy9tZWRpYS9waXhlbC5pbmwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL21lZGlhL3BpeGVsLmlubAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMv
bWVkaWEvcGl4ZWwuaW5sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEwMDAgQEAKKy8vIEF1
dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGhlYWRlciBmcm9tIHBpeGVsLmRkcywgYSA1MTJ4NTEyICgx
MCBtaXAgbGV2ZWxzKQorLy8gRFhUMSB0ZXh0dXJlIHVzaW5nIEREU1RvSGVhZGVyLmV4ZS4KK3N0
YXRpYyBjb25zdCBzaXplX3QgcGl4ZWxfd2lkdGggPSA1MTI7CitzdGF0aWMgY29uc3Qgc2l6ZV90
IHBpeGVsX2hlaWdodCA9IDUxMjsKK3N0YXRpYyBjb25zdCBzaXplX3QgcGl4ZWxfbGV2ZWxzID0g
MTA7CisKK3N0YXRpYyBjb25zdCBzaXplX3QgcGl4ZWxfMF93aWR0aCA9IDUxMjsKK3N0YXRpYyBj
b25zdCBzaXplX3QgcGl4ZWxfMF9oZWlnaHQgPSA1MTI7CitzdGF0aWMgY29uc3Qgc2l6ZV90IHBp
eGVsXzBfc2l6ZSA9IDEzMTA3MjsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHBpeGVsXzBf
ZGF0YVsxMzEwNzJdID0KK3sKKyAgICAweDQ2LDB4NjIsMHg2MywweDQxLDB4OEIsMHg4QiwweEZE
LDB4NTUsMHhFNSwweDUxLDB4MjIsMHgzOSwweEFBLDB4QTgsMHhGRSwweEQ1LAorICAgIDB4QzUs
MHg1MSwweDIzLDB4MzksMHg2MCwweDYwLDB4QUUsMHhBRiwweEE1LDB4NDksMHgwMiwweDM5LDB4
MEIsMHgyRCwweDk3LDB4RkYsCisgICAgMHg0NywweDYyLDB4MDIsMHgzOSwweDBBLDB4QUIsMHg1
RiwweDdELDB4RTUsMHg1MSwweEMxLDB4MzAsMHg4MCwweEFBLDB4REYsMHhENSwKKyAgICAweEE1
LDB4NDksMHgyMywweDM5LDB4NjAsMHhFRiwweEU5LDB4MkQsMHhDNSwweDUxLDB4RTIsMHgzMCww
eEFELDB4RkQsMHhGRiwweDgwLAorICAgIDB4MjcsMHg1QSwweDQzLDB4MzksMHgwRSwweEY1LDB4
NTUsMHg3RiwweEU1LDB4NDksMHhDMSwweDMwLDB4QTgsMHhGRiwweEQ1LDB4RjcsCisgICAgMHhF
NSwweDQ5LDB4MjMsMHgzOSwweEVCLDB4RUQsMHhBRiwweDJCLDB4QzksMHg2QSwweDIzLDB4Mzks
MHg1NSwweDU1LDB4RjcsMHg4MiwKKyAgICAweDA2LDB4NTIsMHgwMywweDMxLDB4RkQsMHg3RCww
eDZCLDB4QTgsMHg4NCwweDQxLDB4RTIsMHgzMCwweEFFLDB4RDUsMHhERiwweDdDLAorICAgIDB4
QzUsMHg0OSwweDQzLDB4MzksMHg1RCwweEJGLDB4MDksMHgyOSwweEE4LDB4NkEsMHg0MiwweDM5
LDB4NTUsMHg1RiwweEUyLDB4ODIsCisgICAgMHhFNiwweDUxLDB4MjMsMHgzOSwweDU1LDB4NUUs
MHhFQSwweEE4LDB4ODQsMHg0MSwweEUyLDB4MzAsMHhENSwweEQ1LDB4REUsMHhEOCwKKyAgICAw
eEM1LDB4NDksMHg0MywweDQxLDB4RkQsMHgzNywweDJGLDB4M0QsMHhFOSwweDcyLDB4NDMsMHg0
MSwweDU1LDB4RUEsMHg4MiwweEJCLAorICAgIDB4QzUsMHg0OSwweEUyLDB4MzgsMHg3RiwweEVB
LDB4RTgsMHhBQSwweDQ0LDB4NDEsMHhDMiwweDMwLDB4MkQsMHhCNSwweERFLDB4RjgsCisgICAg
MHhFNSwweDUxLDB4RTIsMHgzMCwweEFCLDB4MkIsMHhBQiwweEI1LDB4NjcsMHg2MiwweDY0LDB4
NDEsMHg1QiwweEMwLDB4ODMsMHhENywKKyAgICAweEE1LDB4NDksMHgwMiwweDM5LDB4N0IsMHhG
QSwweDg4LDB4RkUsMHhBNSwweDUxLDB4MDIsMHgzOSwweDJELDB4M0YsMHhCRSwweEFBLAorICAg
IDB4NjcsMHg2MiwweDg0LDB4NDksMHgyQSwweDJBLDB4QjcsMHg3RCwweDg4LDB4NkEsMHg2NCww
eDQ5LDB4QTgsMHhGQSwweEZFLDB4NTUsCisgICAgMHgwNiwweDVBLDB4NjQsMHg0OSwweDY4LDB4
RTgsMHhCQiwweEZGLDB4QTUsMHg1MSwweDAyLDB4MzksMHgzNywweDk3LDB4REUsMHg3OCwKKyAg
ICAweDQ3LDB4NjIsMHgwMiwweDM5LDB4MEEsMHhBQiwweEQ3LDB4NTUsMHhBOSwweDZBLDB4QzIs
MHgzMCwweEU4LDB4RkEsMHhGRiwweEQ1LAorICAgIDB4QTUsMHg0OSwweDIzLDB4MzksMHhFMCww
eEI3LDB4QjcsMHhBRiwweEE1LDB4NDksMHgwMiwweDM5LDB4MkQsMHhENywweERBLDB4RkEsCisg
ICAgMHgyNywweDVBLDB4MDMsMHgzOSwweDBBLDB4RkYsMHg1NSwweDU1LDB4QTUsMHg0OSwweDIz
LDB4MzksMHgyOCwweDZGLDB4N0QsMHhBRCwKKyAgICAweEM2LDB4NTEsMHgwMywweDM5LDB4N0Us
MHhGRiwweEJELDB4MEIsMHhDNSwweDUxLDB4RTIsMHgzOCwweEFELDB4RDcsMHhGRSwweEU4LAor
ICAgIDB4ODUsMHg0OSwweEUyLDB4MzAsMHgwQSwweERGLDB4RDcsMHg3RSwweEE1LDB4NDksMHgy
NCwweDM5LDB4RjgsMHg3RCwweEY5LDB4MEIsCisgICAgMHgyNywweDVBLDB4NDMsMHgzOSwweDU1
LDB4N0QsMHhGRiwweDgyLDB4ODUsMHg0OSwweEMyLDB4MzAsMHhFRiwweDdGLDB4QTgsMHgwMiwK
KyAgICAweDg1LDB4NDksMHhDMywweDMwLDB4QUIsMHhCRCwweDNGLDB4RkEsMHhDNiwweDUxLDB4
MjMsMHgzOSwweEQ1LDB4QkYsMHgwMiwweDAyLAorICAgIDB4RTYsMHg1MSwweDAzLDB4MzksMHg3
RiwweEVBLDB4QTAsMHg4MCwweEM2LDB4NTEsMHgwMiwweDM5LDB4NTUsMHg1RSwweEVBLDB4MDgs
CisgICAgMHhDNSwweDUxLDB4MjMsMHgzOSwweEJELDB4MkQsMHhBNSwweEQ1LDB4NDcsMHg1QSww
eDY0LDB4NDEsMHg3RiwweDhBLDB4MEIsMHg4QiwKKyAgICAweEU2LDB4NTEsMHg0MywweDQxLDB4
NUQsMHhFRSwweEI4LDB4RTAsMHg4NSwweDQ5LDB4MDMsMHgzOSwweDU3LDB4NzYsMHhGMCwweEMw
LAorICAgIDB4QzUsMHg1MSwweEUzLDB4MzAsMHgyQiwweDBCLDB4MkIsMHhBNSwweEM5LDB4NzIs
MHhBNCwweDQ5LDB4NUQsMHgwQSwweDhCLDB4RDUsCisgICAgMHg4OCwweDZBLDB4QTUsMHg1MSww
eDVGLDB4ODIsMHgwMCwweDVGLDB4MDYsMHg1QSwweDY0LDB4NDEsMHg1QiwweEI4LDB4QUUsMHhC
RSwKKyAgICAweEM1LDB4NTEsMHg2MywweDQxLDB4QUUsMHgyOCwweENBLDB4NUYsMHhDNiwweDUx
LDB4NDMsMHgzOSwweDAwLDB4ODAsMHhBQSwweEY3LAorICAgIDB4MDYsMHg1MiwweDIzLDB4Mzks
MHhGQSwweDJBLDB4M0EsMHg5NSwweDY2LDB4NjIsMHg2MywweDQxLDB4RDUsMHhBRSwweDIyLDB4
MjIsCisgICAgMHg0NywweDYyLDB4QTQsMHg0OSwweERELDB4QUIsMHhBMCwweDgwLDB4NjgsMHg2
MiwweEU1LDB4NTEsMHhBRCwweDBCLDB4QUEsMHgyQSwKKyAgICAweDY3LDB4NkEsMHhFNSwweDUx
LDB4NTYsMHgyOCwweDJFLDB4M0IsMHhDNywweDcyLDB4MjQsMHg1QSwweEQ1LDB4QkYsMHgyRiww
eDZFLAorICAgIDB4QTcsMHg2QSwweDA1LDB4NUEsMHhBRSwweDgyLDB4QTgsMHg3NSwweDY2LDB4
NjIsMHhDNCwweDUxLDB4MDgsMHgyQSwweEVBLDB4RkQsCisgICAgMHg2NywweDZBLDB4RTUsMHg1
MSwweDJDLDB4OEEsMHg4QSwweEE2LDB4ODgsMHg2QSwweDQ3LDB4NjIsMHg3NywweDVGLDB4RDcs
MHg5OSwKKyAgICAweDg3LDB4NkEsMHgyNSwweDVBLDB4NjgsMHhBQSwweEVCLDB4RkIsMHhBNyww
eDZBLDB4QzUsMHg1MSwweDdBLDB4RTgsMHg4QSwweDJBLAorICAgIDB4NDYsMHg1QSwweDIzLDB4
MzksMHg1NSwweDVFLDB4REEsMHhBMCwweDg1LDB4NDksMHgyMywweDM5LDB4MEYsMHhGNSwweDM1
LDB4RDcsCisgICAgMHg2OCwweDYyLDB4NDQsMHg0MSwweDU3LDB4NzUsMHgyNywweDNELDB4ODgs
MHg2MiwweDY0LDB4NDEsMHg1NSwweDU1LDB4REUsMHhGMCwKKyAgICAweEE1LDB4NDksMHgwMyww
eDMxLDB4RTcsMHhGRiwweDYwLDB4NTgsMHhFNiwweDUxLDB4NDMsMHgzOSwweDU1LDB4MzUsMHhC
OSwweEI1LAorICAgIDB4MEEsMHg3MywweDQzLDB4MzksMHg1NSwweEZCLDB4RTIsMHg4QiwweEM1
LDB4NDksMHgwMywweDM5LDB4NUYsMHg3QSwweEM4LDB4ODAsCisgICAgMHg2NCwweDQxLDB4RTIs
MHgzMCwweDJBLDB4MDksMHgyRiwweEZFLDB4QTgsMHg2QSwweDg0LDB4NDEsMHg3RCwweDhCLDB4
MjksMHhENSwKKyAgICAweDg4LDB4NjIsMHg2MywweDM5LDB4NTUsMHhGRSwweEYwLDB4RkEsMHhB
NSwweDQ5LDB4MDIsMHgzOSwweEJELDB4QjYsMHhGQywweDc4LAorICAgIDB4NjgsMHg2MiwweDAy
LDB4MzksMHhGQiwweDBBLDB4OEIsMHhGNSwweDg4LDB4NjIsMHhDNSwweDUxLDB4NzUsMHhDMCww
eEZFLDB4NTUsCisgICAgMHg1MiwweEM1LDB4QzUsMHg1MSwweDM1LDB4RDUsMHg1NSwweDU1LDB4
NTUsMHhFNiwweDQ2LDB4NjIsMHgwMCwweDAyLDB4MEQsMHhCNSwKKyAgICAweEI2LDB4RUUsMHgz
NSwweEU2LDB4ODgsMHgyMCwweDIyLDB4OEQsMHhCNiwweEVFLDB4OTYsMHhFRSwweERGLDB4N0Ys
MHg2RiwweDdGLAorICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHhFRCwweEVELDB4RjksMHg5Nyww
eDk2LDB4RjYsMHhCNiwweEVFLDB4RUUsMHhGQSwweDdGLDB4QkYsCisgICAgMHhCNiwweEY2LDB4
OTYsMHhFRSwweEFFLDB4QjksMHgzRCwweDU3LDB4OTYsMHhGNiwweEI2LDB4RUUsMHhGRSwweDdF
LDB4RjYsMHhGNywKKyAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4NzUsMHhCNSwweEE1LDB4QUQs
MHhGNywweEY2LDB4OTYsMHhFRSwweEFBLDB4QUEsMHhBOCwweDdGLAorICAgIDB4RDcsMHhGNiww
eDk2LDB4RUUsMHhGQSwweEZBLDB4QkEsMHhERSwweEQ2LDB4RjYsMHhCNiwweEVFLDB4QUYsMHhB
QiwweDhGLDB4MkQsCisgICAgMHhENiwweEY2LDB4OTYsMHhFRSwweEU4LDB4RjAsMHhFOCwweDc4
LDB4QjYsMHhFRSwweDc1LDB4RTYsMHg1NywweEJFLDB4MkUsMHhCQSwKKyAgICAweEQ2LDB4RjYs
MHg5NiwweEVFLDB4RjcsMHhCRiwweDJBLDB4MDMsMHhGNywweEY2LDB4OTYsMHhFRSwweEY3LDB4
QUEsMHhCQSwweEFDLAorICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHhDMCwweDYwLDB4NzgsMHgw
OCwweEY3LDB4RjYsMHhCNywweEVFLDB4RjUsMHhCRCwweEFGLDB4OEEsCisgICAgMHhGNywweEY2
LDB4RDcsMHhGNiwweEQ1LDB4MzUsMHgwRiwweDBBLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhCRiww
eEFGLDB4QkIsMHhBRiwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4QUIsMHg3QSwweDZCLDB4
RUUsMHgxOCwweEZGLDB4RjgsMHhGNiwweEFGLDB4OEIsMHgwQiwweEFBLAorICAgIDB4MTgsMHhG
RiwweEY3LDB4RUUsMHhBOCwweEE4LDB4ODAsMHgwOCwweEY4LDB4RkUsMHgxOCwweEY3LDB4M0Ys
MHhBRCwweEZELDB4RjcsCisgICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweEZGLDB4RkIsMHhCRSww
eEYwLDB4MTgsMHhGNywweEQ3LDB4RjYsMHhCRiwweEVCLDB4OEUsMHhCQSwKKyAgICAweDE4LDB4
RkYsMHhGNywweEY2LDB4QkQsMHhGRiwweEQ1LDB4RDUsMHgzNywweEY3LDB4RDgsMHhGNiwweERG
LDB4QkYsMHhERiwweEY1LAorICAgIDB4RjgsMHhGNiwweEQ3LDB4RjYsMHg1RiwweDIwLDB4MDAs
MHhCOCwweEY3LDB4RjYsMHhCNiwweEVFLDB4QUIsMHg3QiwweDZDLDB4OEEsCisgICAgMHhENyww
eEY2LDB4OTcsMHhFRSwweDAwLDB4MDgsMHg5RSwweDc4LDB4RjgsMHhGNiwweEI3LDB4RUUsMHhC
RiwweEY2LDB4RUEsMHgzRCwKKyAgICAweEY3LDB4RjYsMHhCNywweEVFLDB4ODMsMHhBRiwweEU1
LDB4N0IsMHhGNywweEY2LDB4QjcsMHhFRSwweEFBLDB4MEEsMHhBQSwweEI1LAorICAgIDB4Rjcs
MHhGNiwweDk2LDB4RUUsMHg3RiwweEVBLDB4MjIsMHgyQSwweEQ3LDB4RjYsMHg3NSwweEU2LDB4
N0UsMHhGRiwweERFLDB4QjgsCisgICAgMHg5NiwweEVFLDB4NTUsMHhFNiwweDZBLDB4NkEsMHhG
OCwweEVDLDB4MzUsMHhFNiwweDEwLDB4QkQsMHhGQywweDc4LDB4NzgsMHg3MCwKKyAgICAweDM0
LDB4RTYsMHgxMCwweEM1LDB4MDAsMHgwMywweDBCLDB4MjksMHg1NSwweEU2LDB4RjMsMHhERCww
eDdFLDB4RkUsMHhGRSwweEZDLAorICAgIDB4MTQsMHhERSwweEQzLDB4REQsMHhFMiwweDYyLDB4
ODAsMHhBMCwweDE0LDB4REUsMHhEMywweERELDB4QjMsMHhCQSwweEJFLDB4REUsCisgICAgMHgx
NCwweERFLDB4RDIsMHhERCwweEEzLDB4QTAsMHg4OCwweEJCLDB4MTQsMHhERSwweEIyLDB4RDUs
MHhFOCwweEEyLDB4QTIsMHg4OCwKKyAgICAweEYzLDB4REQsMHhEMywweEQ1LDB4MjcsMHgwRSww
eEI2LDB4OEEsMHgxNCwweERFLDB4RDMsMHhERCwweEVBLDB4QzIsMHhDOCwweEQyLAorICAgIDB4
ODcsMHg2QSwweDYzLDB4NDksMHhGNSwweDNELDB4QjcsMHhERCwweDI5LDB4N0IsMHgwNSwweDVB
LDB4NTUsMHhBMCwweDg4LDB4QkQsCisgICAgMHg4OCwweDYyLDB4NjQsMHg0OSwweDc3LDB4N0Us
MHhGOCwweEY4LDB4QzYsMHg1MSwweDYzLDB4NDEsMHhGNSwweDdCLDB4QTgsMHg2QiwKKyAgICAw
eEE1LDB4NDksMHg0MywweDQxLDB4RTgsMHhBOCwweDIwLDB4REUsMHhFNiwweDUxLDB4MjMsMHgz
OSwweDU1LDB4NUYsMHhFQSwweENCLAorICAgIDB4RTYsMHg1MSwweEUyLDB4MzAsMHgyQSwweDBC
LDB4QUIsMHg1NywweDg4LDB4NkEsMHgwMiwweDMxLDB4ODAsMHgwQSwweEZCLDB4NTUsCisgICAg
MHhFNiwweDUxLDB4MDIsMHgzMSwweEE4LDB4QTAsMHhGRSwweDU3LDB4QTUsMHg0OSwweDAyLDB4
MzEsMHg1RSwweDY4LDB4Q0IsMHhDQiwKKyAgICAweEE1LDB4NDksMHgwMiwweDMxLDB4MDIsMHgy
OSwweDU1LDB4NTcsMHhBOSwweDZBLDB4QzEsMHgyOCwweDAyLDB4QUIsMHhGRiwweEQ1LAorICAg
IDB4MjcsMHg1QSwweDAyLDB4MzEsMHhBOCwweEZBLDB4RjcsMHg1RiwweEM1LDB4NDksMHhFMiww
eDMwLDB4NzgsMHg2RSwweEVCLDB4RTIsCisgICAgMHg4NSwweDQ5LDB4RTIsMHgzMCwweDBCLDB4
QkYsMHg3NywweDZBLDB4MDYsMHg1QSwweEUyLDB4MzAsMHgwMiwweEI3LDB4RDUsMHg3NSwKKyAg
ICAweEM1LDB4NDksMHgyMywweDM5LDB4QUMsMHg1RiwweDVELDB4QkIsMHgwNSwweDUyLDB4MDIs
MHgzMSwweDVGLDB4QjcsMHhCRCwweDAwLAorICAgIDB4QTUsMHg0MSwweDAyLDB4MzksMHhGRiww
eDU1LDB4NkUsMHg4OCwweDg0LDB4NDksMHhFMiwweDMwLDB4MzAsMHhENSwweDk3LDB4REYsCisg
ICAgMHhDNSwweDQ5LDB4MjMsMHgzOSwweDc1LDB4NTUsMHhCRiwweDIzLDB4ODcsMHg2MiwweDIy
LDB4MzksMHg1NSwweDU1LDB4REYsMHhDMiwKKyAgICAweDg1LDB4NDksMHhFMiwweDMwLDB4NTUs
MHg3NywweEVBLDB4ODAsMHgyMywweDM5LDB4RTIsMHgzMCwweDJELDB4MzUsMHg5NywweDU4LAor
ICAgIDB4QTUsMHg1MSwweEMyLDB4MzAsMHhGRCwweEJFLDB4MkEsMHgyQiwweDI3LDB4NjIsMHg2
MywweDQxLDB4NzUsMHg3RCwweEVBLDB4QTAsCisgICAgMHhBNSwweDUxLDB4NjQsMHg0OSwweENE
LDB4OTUsMHhGRiwweEEwLDB4QTUsMHg1MSwweDQ0LDB4NDksMHhFRiwweDlBLDB4QkEsMHgzQSwK
KyAgICAweDA3LDB4NjIsMHg2NCwweDQ5LDB4RkQsMHgyRCwweDNGLDB4RkYsMHg0OCwweDZBLDB4
NjQsMHg0MSwweDVGLDB4RTAsMHg4MCwweEVBLAorICAgIDB4QzUsMHg1MSwweDIzLDB4MzksMHg1
NywweDdGLDB4RkEsMHhBQywweDg1LDB4NDksMHhFMywweDMwLDB4QTUsMHgyRiwweEJFLDB4NUYs
CisgICAgMHhFNiwweDU5LDB4MjMsMHgzOSwweEFBLDB4MjIsMHhBQSwweEY1LDB4NjgsMHg2Miww
eDQ0LDB4NDEsMHg1RiwweEYwLDB4RUEsMHg1RCwKKyAgICAweDg1LDB4NDksMHgyMywweDM5LDB4
RkYsMHhBOCwweEE4LDB4RjUsMHg4NSwweDQ5LDB4RTMsMHgzMCwweDBELDB4MkQsMHhENywweDdG
LAorICAgIDB4QTksMHg2QSwweDQ0LDB4NDEsMHgwRiwweDJGLDB4RjUsMHg1NSwweDg5LDB4NkEs
MHgwMywweDMxLDB4RkEsMHhCMCwweEZFLDB4NTUsCisgICAgMHhDNiwweDUxLDB4MjMsMHgzOSww
eDdBLDB4NjIsMHhFQSwweEY1LDB4RTYsMHg1MSwweEMyLDB4MzAsMHgwRiwweEE3LDB4RjcsMHhG
RSwKKyAgICAweDY4LDB4NjIsMHg0NCwweDM5LDB4ODIsMHhBRiwweDU1LDB4NTUsMHhFNiwweDUx
LDB4QzIsMHgzMCwweDg4LDB4QTgsMHhGRiwweEQ3LAorICAgIDB4ODUsMHg0OSwweEMyLDB4MzAs
MHg3QywweEU4LDB4QUUsMHgyMywweEM1LDB4NDksMHhFMiwweDM4LDB4MkIsMHhCNSwweEY3LDB4
MjAsCisgICAgMHhFNiwweDU5LDB4MDIsMHgzMSwweDAwLDB4RkUsMHg3RiwweEVFLDB4RTYsMHg1
MSwweEUyLDB4MzAsMHhBOCwweEZGLDB4RjUsMHhGRiwKKyAgICAweDI2LDB4NUEsMHg0MywweDQx
LDB4NTUsMHg1RiwweEFGLDB4MEIsMHg4OCwweDYyLDB4MjIsMHgzOSwweEZELDB4NTUsMHhGRiww
eEEwLAorICAgIDB4RTUsMHg1MSwweDAzLDB4MzksMHhCOCwweDdGLDB4N0YsMHhBQSwweEE1LDB4
NDksMHgwMiwweDM5LDB4Q0UsMHhCRCwweDI1LDB4QjcsCisgICAgMHhBOCwweDZBLDB4MjMsMHgz
OSwweDU1LDB4NUQsMHhBRiwweDJGLDB4QTgsMHg2QSwweDQzLDB4NDEsMHg1NSwweEZGLDB4QUUs
MHgwMCwKKyAgICAweDg4LDB4NkEsMHg2NCwweDQxLDB4NTUsMHg1NSwweEZFLDB4RjgsMHgwNiww
eDVBLDB4NDMsMHg0MSwweDU1LDB4RkYsMHhBQSwweEEwLAorICAgIDB4MDYsMHg1QSwweDQzLDB4
NDEsMHg1NSwweEY3LDB4MkUsMHgwQSwweDI3LDB4NUEsMHg0NCwweDQxLDB4RjUsMHhBRiwweEFD
LDB4QTgsCisgICAgMHhFNiwweDUxLDB4NjQsMHg0OSwweEY1LDB4MkUsMHhBQSwweDgyLDB4NDcs
MHg2MiwweEM2LDB4NTEsMHgwMywweEFCLDB4NzUsMHhENSwKKyAgICAweDg5LDB4NkEsMHhFNiww
eDUxLDB4RkEsMHg4QSwweEUxLDB4RUQsMHg4OCwweDZBLDB4MjcsMHg1QSwweEY3LDB4REQsMHhF
RCwweEFELAorICAgIDB4ODgsMHg2QSwweEU2LDB4NTksMHhCQSwweDI3LDB4MkMsMHhCQSwweDg3
LDB4NkEsMHgwNSwweDVBLDB4NjAsMHhFMCwweDQyLDB4QTAsCisgICAgMHhFNSwweDUxLDB4MjMs
MHg0MSwweDJFLDB4REYsMHg1NiwweDVDLDB4ODcsMHg2QSwweDYzLDB4NDEsMHhBRiwweDJBLDB4
QkQsMHhENSwKKyAgICAweDQ3LDB4NjIsMHg4NCwweDQ5LDB4QkEsMHhFMCwweEI4LDB4NTUsMHg0
NywweDYyLDB4NjQsMHg0OSwweDIyLDB4MkEsMHgyRSwweDk1LAorICAgIDB4ODcsMHg2QSwweDI2
LDB4NjIsMHhBOCwweEUyLDB4MkUsMHg1OSwweDg3LDB4NkEsMHgyNiwweDVBLDB4ODgsMHg4Miww
eEFCLDB4RDUsCisgICAgMHg4NywweDYyLDB4MjYsMHg1QSwweEUzLDB4QzAsMHhFQSwweDc1LDB4
MDYsMHg1QSwweDAzLDB4MzksMHg3RSwweDc4LDB4RTAsMHhFMCwKKyAgICAweEU2LDB4NTEsMHgy
MywweDM5LDB4MkQsMHhCRCwweDU1LDB4NTUsMHg2OCwweDYyLDB4MjMsMHgzOSwweEEwLDB4RUEs
MHg1NSwweERELAorICAgIDB4NDcsMHg2MiwweDQ0LDB4MzksMHg3RiwweDU3LDB4NUQsMHg4Qiww
eDg1LDB4NDksMHgwMiwweDMxLDB4QjcsMHhENywweERGLDB4ODAsCisgICAgMHgwNiwweDUyLDB4
MjMsMHgzOSwweDBCLDB4RjUsMHhGRiwweEJGLDB4QzUsMHg0OSwweDIzLDB4MzksMHhBOCwweEQ3
LDB4RkYsMHhCQSwKKyAgICAweEE1LDB4NDksMHgwMywweDMxLDB4NUUsMHg1RiwweEFBLDB4QTAs
MHg2NCwweDQxLDB4MjMsMHgzOSwweEJELDB4RjUsMHhFMiwweDQwLAorICAgIDB4ODQsMHg0MSww
eDIzLDB4MzksMHhBQSwweEZGLDB4M0YsMHhBRCwweEU2LDB4NTEsMHg0MywweDM5LDB4NTUsMHg3
NywweEVCLDB4MEIsCisgICAgMHhFNiwweDUxLDB4RTIsMHgzMCwweEJGLDB4NUYsMHg3RSwweEU4
LDB4QTUsMHg0OSwweDAyLDB4MzksMHgwMCwweDhCLDB4QUQsMHhCNSwKKyAgICAweEE1LDB4NDks
MHg2NCwweDQ5LDB4QkUsMHhCNiwweDhBLDB4NjgsMHhBOCwweDcyLDB4ODQsMHg0OSwweDNELDB4
RjUsMHhENSwweDU1LAorICAgIDB4NzUsMHhFRSwweEM1LDB4NTEsMHgwMiwweDJELDB4QjUsMHhE
NSwweDk2LDB4RUUsMHg4RiwweEFDLDB4MDAsMHgwMCwweDAwLDB4MDksCisgICAgMHhCNiwweEY2
LDB4OTYsMHhFRSwweEI3LDB4M0YsMHhCNSwweDdELDB4QjYsMHhGNiwweDk2LDB4RUUsMHg2Miww
eEMwLDB4Q0IsMHg0QSwKKyAgICAweEI2LDB4RUUsMHg5NiwweEVFLDB4QkQsMHhBRCwweEFBLDB4
MkIsMHhENywweEY2LDB4OTYsMHhFRSwweEJGLDB4MkYsMHgwQSwweDBBLAorICAgIDB4RDcsMHhG
NiwweDc1LDB4RUUsMHgwMCwweDg4LDB4QTgsMHg3OCwweEI2LDB4RUUsMHg3NSwweEU2LDB4QTgs
MHhCRSwweEJGLDB4QkYsCisgICAgMHhCNiwweEVFLDB4OTYsMHhFRSwweEJCLDB4RDksMHhFQyww
eDc1LDB4RDcsMHhGNiwweDk2LDB4RUUsMHgwNywweDBGLDB4QUYsMHhBRCwKKyAgICAweEQ2LDB4
RjYsMHg5NiwweEVFLDB4N0EsMHhGQSwweEVBLDB4NkIsMHhENywweEY2LDB4NTQsMHhFNiwweEEy
LDB4QTgsMHhBQSwweDk3LAorICAgIDB4RjcsMHhGNiwweDk2LDB4RUUsMHg4QSwweDJBLDB4RkEs
MHhGNywweEY3LDB4RjYsMHhCNiwweEVFLDB4OEEsMHgyOCwweEVCLDB4RkYsCisgICAgMHhGNyww
eEY2LDB4QjcsMHhGNiwweDA4LDB4MkUsMHhCRiwweDdFLDB4RjcsMHhGNiwweDk2LDB4RUUsMHgw
MCwweDAwLDB4MkIsMHhERiwKKyAgICAweEY3LDB4RjYsMHg5NiwweEVFLDB4MDAsMHgwMCwweDAw
LDB4M0QsMHgxOCwweEZGLDB4RjcsMHhGNiwweDU1LDB4NTcsMHg3RiwweDU1LAorICAgIDB4MTgs
MHhGRiwweEQ3LDB4RjYsMHhFQSwweEZFLDB4RkIsMHhGRSwweDE4LDB4RjcsMHhENywweEY2LDB4
MkEsMHhBRSwweEY3LDB4RkYsCisgICAgMHgxOCwweEY3LDB4RjcsMHhGNiwweDJCLDB4QTcsMHg1
NSwweDU1LDB4MTgsMHhGNywweEQ3LDB4RjYsMHgyMiwweDBBLDB4MkUsMHhGRiwKKyAgICAweDE4
LDB4RjcsMHhEOCwweEY2LDB4QTgsMHg4OCwweDJBLDB4QTksMHgxOCwweEZGLDB4RjgsMHhGNiww
eDU3LDB4RjYsMHhCRiwweEFGLAorICAgIDB4MTgsMHhGNywweEY3LDB4RjYsMHg1NSwweDYyLDB4
ODgsMHgwMCwweDE4LDB4RjcsMHhENywweEVFLDB4REYsMHhGNywweEFFLDB4QTgsCisgICAgMHgx
OCwweEY3LDB4RDcsMHhGNiwweDc3LDB4RkYsMHhBRSwweEFBLDB4MTgsMHhGNywweEQ3LDB4RjYs
MHhGRiwweDdGLDB4NkUsMHg3QSwKKyAgICAweEY3LDB4RjYsMHhCNywweEVFLDB4NzgsMHhFRSww
eEJGLDB4RUIsMHhENywweEY2LDB4NzUsMHhFNiwweEFFLDB4N0MsMHhFMCwweDAyLAorICAgIDB4
RDcsMHhGNiwweDk2LDB4RUUsMHg4OCwweDAxLDB4MEQsMHgzNywweEQ3LDB4RjYsMHhCNiwweEVF
LDB4QTUsMHhBRCwweEFFLDB4OTgsCisgICAgMHhENywweEY2LDB4OTYsMHhFRSwweDAyLDB4QTYs
MHhGRSwweEZDLDB4RDcsMHhGNiwweDk2LDB4RUUsMHhFMCwweDg4LDB4MDIsMHhBRSwKKyAgICAw
eEQ2LDB4RjYsMHgzNCwweEU2LDB4N0EsMHg3RSwweDdFLDB4RjgsMHgzNCwweEU2LDB4NzEsMHhD
RCwweDcwLDB4NzAsMHg2MCwweDYwLAorICAgIDB4RjMsMHhERCwweDEwLDB4QzUsMHgyRiwweDNE
LDB4QjUsMHhBNSwweDM0LDB4RTYsMHhEMywweEQ1LDB4QTAsMHhBMiwweDhCLDB4MDksCisgICAg
MHgxNCwweERFLDB4QjIsMHhENSwweEE4LDB4QUEsMHg4MCwweEM4LDB4MTMsMHhERSwweEQyLDB4
RDUsMHhEQSwweEVDLDB4QjgsMHhCRSwKKyAgICAweDEzLDB4REUsMHhEMywweERELDB4QkQsMHgy
RiwweEFBLDB4MEEsMHgzNCwweEU2LDB4RjMsMHhERCwweEY3LDB4RUEsMHg2QSwweEZBLAorICAg
IDB4RjMsMHhERCwweEQzLDB4RDUsMHgyMCwweDNBLDB4QTAsMHgwMCwweDEzLDB4REUsMHhEMyww
eEQ1LDB4QTgsMHhFRiwweEZFLDB4RkEsCisgICAgMHg4NCwweDQ5LDB4MDMsMHgzOSwweEVGLDB4
QjUsMHhBNywweDI2LDB4NjcsMHg2MiwweDQzLDB4NDEsMHg1NSwweEZELDB4MEIsMHgwRiwKKyAg
ICAweEVBLDB4NzIsMHg2NCwweDQxLDB4NTUsMHhENSwweEEyLDB4MDIsMHhDOCwweDcyLDB4NDMs
MHgzOSwweDc1LDB4NTcsMHhGQSwweDIwLAorICAgIDB4RTYsMHg3MiwweDYyLDB4NDEsMHg1NSww
eDU1LDB4RkEsMHhBMCwweDA2LDB4NTIsMHg2NCwweDQxLDB4RTUsMHhBRiwweEZFLDB4RUMsCisg
ICAgMHhDNSwweDQ5LDB4RTIsMHgzMCwweDVGLDB4N0EsMHhBQSwweDgyLDB4NjQsMHg0MSwweEEx
LDB4MjgsMHhGNSwweEJGLDB4RkEsMHhFOCwKKyAgICAweEU1LDB4NTEsMHg0MywweDM5LDB4NTUs
MHhFRCwweDI5LDB4QUQsMHhFOSwweDZBLDB4NDMsMHgzOSwweEY1LDB4RjMsMHg4MiwweEVGLAor
ICAgIDB4RTUsMHg1MSwweDQzLDB4MzksMHg3QiwweEJBLDB4QTgsMHhGOCwweDg1LDB4NDEsMHhF
MiwweDMwLDB4QjUsMHhERSwweEU4LDB4RUEsCisgICAgMHhBNSwweDQ5LDB4MDIsMHgzMSwweEEy
LDB4MEEsMHgyRCwweDk1LDB4QTgsMHg2QSwweDY0LDB4NDEsMHhFQiwweDAzLDB4QUYsMHg1NSwK
KyAgICAweEU2LDB4NTEsMHgwMiwweDMxLDB4RUEsMHhFOCwweEY4LDB4RDcsMHg4NSwweDQxLDB4
RTIsMHgzMCwweDdCLDB4NzAsMHg3RSwweDZCLAorICAgIDB4QTUsMHg0OSwweDAyLDB4MzEsMHgw
QiwweDA5LDB4QjUsMHg1NSwweEU4LDB4NkEsMHgyMywweDM5LDB4ODIsMHhBQiwweEY3LDB4NTUs
CisgICAgMHgyNywweDVBLDB4MDIsMHgzMSwweEJBLDB4RTgsMHhGQiwweDU3LDB4NjQsMHg0MSww
eEMyLDB4MjgsMHg1QSwweEY4LDB4RjgsMHhCQiwKKyAgICAweEU2LDB4NTEsMHhDMSwweDI4LDB4
MkIsMHhBRCwweEQ1LDB4RkYsMHg4NywweDYyLDB4MjMsMHgzOSwweDgyLDB4RkYsMHg1NSwweDU1
LAorICAgIDB4ODQsMHg0OSwweEUyLDB4MzAsMHgwMCwweDA4LDB4RkYsMHhGNSwweDY0LDB4NDEs
MHgwMiwweDM5LDB4NUUsMHhGMCwweEUwLDB4ODAsCisgICAgMHg4NSwweDQ5LDB4RTIsMHgzMCww
eDJGLDB4MkQsMHhCRiwweDhBLDB4RTUsMHg1OSwweDQ0LDB4NDEsMHhBOCwweEZGLDB4NUQsMHhE
RiwKKyAgICAweEM1LDB4NTEsMHg2NCwweDQ5LDB4N0MsMHhENSwweDc1LDB4M0YsMHhFNSwweDU5
LDB4NDQsMHg0OSwweDdCLDB4RUIsMHhCQSwweEFBLAorICAgIDB4NDcsMHg2QSwweDQ0LDB4NDks
MHg3NywweDVGLDB4RkUsMHhBMiwweEE1LDB4NTEsMHgwMiwweDM5LDB4QUEsMHg2QiwweENCLDB4
QUEsCisgICAgMHg2NCwweDQxLDB4QzEsMHgzMCwweEVFLDB4OTUsMHhGRiwweEZDLDB4QzUsMHg1
MSwweEUyLDB4MzAsMHg3RCwweEVGLDB4MkIsMHgwQiwKKyAgICAweEVBLDB4NzIsMHhFMiwweDM4
LDB4NTUsMHhGRiwweEZFLDB4ODIsMHhDNiwweDUxLDB4MjMsMHgzOSwweDU1LDB4NUUsMHhFQSww
eEE4LAorICAgIDB4ODUsMHg0MSwweEUyLDB4MzAsMHg5NSwweDM1LDB4MUUsMHg3QSwweEE4LDB4
NkEsMHg0NCwweDQxLDB4NTUsMHhCRiwweDJELDB4QjksCisgICAgMHg2QSwweDgzLDB4MjMsMHgz
OSwweDU1LDB4N0YsMHhFMiwweDgyLDB4QTUsMHg0OSwweDAzLDB4MzksMHg1RiwweEZBLDB4QTAs
MHg4MCwKKyAgICAweEE1LDB4NDksMHhFMiwweDMwLDB4MjUsMHhBNSwweEJFLDB4N0UsMHgyNyww
eDVBLDB4ODQsMHg0MSwweDI3LDB4MEYsMHgyQiwweDc1LAorICAgIDB4NjgsMHg2MiwweDg0LDB4
NDEsMHg3NywweDdDLDB4RkEsMHg3RSwweEE1LDB4NDksMHgwMywweDM5LDB4NTYsMHhFMCwweDg4
LDB4QUUsCisgICAgMHhFNiwweDUxLDB4MDMsMHgzOSwweEJELDB4MzcsMHhCNSwweDU3LDB4ODgs
MHg2QSwweDIzLDB4MzksMHg4QSwweEFBLDB4RUYsMHg3NSwKKyAgICAweDA2LDB4NUEsMHg2Myww
eDQxLDB4RkUsMHhFQywweEZBLDB4RDUsMHhBNCwweDQ5LDB4MDMsMHgzOSwweDdDLDB4N0MsMHhF
QSwweEFBLAorICAgIDB4MDYsMHg1QSwweDAyLDB4MzEsMHgwOSwweDBELDB4RDUsMHg1NSwweEM5
LDB4NkEsMHgyMiwweDM5LDB4RTIsMHg4QSwweERGLDB4RDUsCisgICAgMHhDNSwweDUxLDB4NjMs
MHgzOSwweEI4LDB4RTAsMHg3QSwweEJGLDB4QTUsMHg0OSwweEUyLDB4MzAsMHhGQywweDUyLDB4
RUEsMHgwMCwKKyAgICAweDI2LDB4NUEsMHgwMywweDMxLDB4MkIsMHhCRCwweEZELDB4QTIsMHg4
OCwweDZBLDB4NDMsMHgzOSwweDAwLDB4RkYsMHg3NSwweEZGLAorICAgIDB4ODgsMHg2QSwweDQz
LDB4NDEsMHhBOCwweEZGLDB4NTUsMHg3RiwweEU2LDB4NTEsMHhFMywweDM4LDB4MDAsMHhGQSww
eDU1LDB4RjcsCisgICAgMHgwNiwweDVBLDB4NDQsMHg0MSwweDg4LDB4RkYsMHhGRCwweDJGLDB4
ODcsMHg2MiwweEE0LDB4NDksMHg1RiwweDU1LDB4RkQsMHgwMCwKKyAgICAweDQ2LDB4NUEsMHg2
NCwweDQxLDB4NkYsMHg1NywweEZBLDB4RTAsMHhDNiwweDUxLDB4NjQsMHg0MSwweEZFLDB4N0Qs
MHhCQiwweDgyLAorICAgIDB4MjYsMHg1QSwweDY0LDB4NDEsMHgwQiwweDJELDB4QUYsMHhCRiww
eDY4LDB4NjIsMHhDNSwweDUxLDB4ODIsMHg4QSwweEE4LDB4RTUsCisgICAgMHg2NywweDYyLDB4
NjMsMHg0MSwweDA4LDB4QUEsMHhGRiwweEQ1LDB4NjcsMHg2QSwweEM1LDB4NTEsMHhBMCwweERG
LDB4QkQsMHgzNSwKKyAgICAweDY3LDB4NkEsMHg0MywweDQxLDB4N0EsMHg3QSwweEVBLDB4RTgs
MHhDNSwweDUxLDB4RTIsMHgzOCwweEI3LDB4QjcsMHhGQSwweEYwLAorICAgIDB4RTUsMHg1OSww
eDQzLDB4NDEsMHhENywweEY5LDB4MkIsMHhBNSwweDg4LDB4NkEsMHg2NCwweDQ5LDB4RDUsMHhE
RiwweEMyLDB4QUEsCisgICAgMHgyNiwweDYyLDB4QTUsMHg0OSwweDhBLDB4RUIsMHhCQSwweDVF
LDB4RTUsMHg1MSwweDAzLDB4MzksMHg4QSwweEFFLDB4REUsMHhERSwKKyAgICAweDI2LDB4NUEs
MHg0MywweDQxLDB4QUYsMHgzRiwweDJGLDB4RjUsMHg2OCwweDYyLDB4ODQsMHg0OSwweDdGLDB4
RkUsMHhGOCwweERELAorICAgIDB4RTYsMHg1MSwweDQzLDB4NDEsMHg1RiwweDc4LDB4NDAsMHg1
QiwweDY0LDB4NDEsMHgwMywweDM5LDB4MDMsMHgzRCwweDU1LDB4NUUsCisgICAgMHgwQSwweDdC
LDB4MjMsMHgzOSwweDhCLDB4QUYsMHhGRCwweDU1LDB4NDcsMHg1QSwweDIzLDB4MzksMHhCRSww
eEE4LDB4RkUsMHg1NSwKKyAgICAweEU1LDB4NTEsMHgwMywweDM5LDB4OEEsMHhBQSwweEZBLDB4
NTcsMHhBNSwweDQ5LDB4MDMsMHgzOSwweDAwLDB4QUMsMHhGRiwweDU1LAorICAgIDB4QTUsMHg0
OSwweDAzLDB4MzksMHg4OCwweEJFLDB4NzYsMHg1NSwweDg1LDB4NDksMHgwMywweDM5LDB4RTgs
MHhGOCwweDU1LDB4NTUsCisgICAgMHg0MywweDM5LDB4RTMsMHgzOCwweDhFLDB4QUEsMHhFQSww
eEZELDB4RTYsMHg1MSwweEUyLDB4MzgsMHgwQSwweEJGLDB4RjUsMHg1RCwKKyAgICAweEU2LDB4
NTEsMHhFMiwweDM4LDB4QTgsMHhGRSwweDVGLDB4RjUsMHg2NCwweDQxLDB4MDIsMHgzOSwweEZD
LDB4N0EsMHg3QiwweEZBLAorICAgIDB4NjQsMHg0OSwweDAyLDB4MzksMHhBOCwweEZELDB4N0Qs
MHhGRSwweDY0LDB4NDksMHgwMiwweDM5LDB4MDgsMHhGRiwweEFGLDB4QUQsCisgICAgMHhBNiww
eDUxLDB4MDIsMHgzOSwweDI4LDB4QjksMHhCRCwweDJGLDB4NTQsMHhFNiwweDA2LDB4NUEsMHgy
OSwweEI1LDB4RDUsMHhENSwKKyAgICAweDk2LDB4RUUsMHhDRSwweEI0LDB4MDAsMHgwMCwweDAz
LDB4MDksMHhCNiwweEY2LDB4OTYsMHhFRSwweEFBLDB4RUUsMHhBQSwweDBFLAorICAgIDB4Rjcs
MHhGNiwweDk2LDB4RUUsMHhGNywweEJGLDB4QkQsMHgyQiwweEQ3LDB4RjYsMHg5NiwweEVFLDB4
MDAsMHhFMCwweDY4LDB4NzAsCisgICAgMHhCNiwweEY2LDB4NzYsMHhFRSwweDdBLDB4N0YsMHhE
NiwweDc1LDB4QjYsMHhFRSwweDc2LDB4RUUsMHhCRCwweEFELDB4M0QsMHhBRCwKKyAgICAweEI2
LDB4RUUsMHg5NiwweEVFLDB4REQsMHhCNSwweEU3LDB4NzcsMHhENywweEY2LDB4OTYsMHhFRSww
eEVGLDB4RkIsMHg2OSwweEU5LAorICAgIDB4OTYsMHhFRSwweEY0LDB4REQsMHg4MCwweDgwLDB4
RjAsMHg3MCwweDc2LDB4RTYsMHhGNCwweERELDB4M0UsMHhCRCwweDNELDB4QUQsCisgICAgMHhC
NiwweEVFLDB4NTUsMHhFNiwweDBBLDB4MkYsMHhBOSwweEI3LDB4RDcsMHhGNiwweDc1LDB4RTYs
MHgwRSwweDJCLDB4RkIsMHhGRiwKKyAgICAweEQ2LDB4RjYsMHg5NiwweEVFLDB4MjAsMHgyMiww
eEFGLDB4RkQsMHhGOCwweEZFLDB4NzUsMHhFNiwweDVFLDB4QUEsMHg4MiwweDBBLAorICAgIDB4
RjgsMHhGNiwweDU1LDB4RTYsMHhGRiwweDVGLDB4RTAsMHhBMCwweEQ3LDB4RjYsMHgzNCwweERF
LDB4MjIsMHhFRiwweDVGLDB4RjgsCisgICAgMHhENywweEY2LDB4MzQsMHhERSwweDAwLDB4MDIs
MHhFNywweDU1LDB4RjcsMHhGNiwweDU0LDB4RTYsMHgwMCwweDAwLDB4MkEsMHhCNSwKKyAgICAw
eDM4LDB4RjcsMHhENywweEY2LDB4NTcsMHg3RiwweEZGLDB4QjUsMHhGNywweEY2LDB4RDcsMHhG
NiwweEJGLDB4QUIsMHhCMCwweDIwLAorICAgIDB4RjgsMHhGNiwweEQ3LDB4RjYsMHg3NSwweDRF
LDB4ODgsMHg4MCwweDE4LDB4RjcsMHhENywweEY2LDB4MjcsMHg1RCwweDU3LDB4RUIsCisgICAg
MHgxOCwweEY3LDB4RDcsMHhGNiwweDgyLDB4RkYsMHhENSwweEQ3LDB4MTgsMHhGNywweEQ3LDB4
RUUsMHgyOCwweEE4LDB4RUYsMHhFNywKKyAgICAweDE4LDB4RjcsMHhENywweEY2LDB4OEEsMHgw
MiwweEEyLDB4N0IsMHgxOCwweEY3LDB4QjcsMHhGNiwweEUwLDB4QUEsMHhBQSwweEEyLAorICAg
IDB4RjgsMHhGRSwweEQ3LDB4RUUsMHg3QSwweEVBLDB4RUEsMHg3QSwweEY3LDB4RjYsMHhCNyww
eEVFLDB4QjcsMHg3RiwweEJGLDB4ODIsCisgICAgMHhENywweEY2LDB4OTYsMHhFRSwweDVFLDB4
NjIsMHg4QSwweDAwLDB4RDcsMHhGNiwweDc1LDB4RTYsMHgyMiwweEE5LDB4MkYsMHg5RiwKKyAg
ICAweEQ3LDB4RjYsMHhCNywweEVFLDB4NjIsMHgwQiwweEE3LDB4RUIsMHhENywweEY2LDB4NzYs
MHhFRSwweEFFLDB4QkUsMHhGRSwweDc4LAorICAgIDB4RDcsMHhGNiwweDc1LDB4RTYsMHg3MCww
eDczLDB4RkYsMHhFQSwweDk2LDB4RUUsMHhEMiwweEQ1LDB4N0UsMHg1QSwweDdBLDB4NkEsCisg
ICAgMHg5MiwweENELDB4MzAsMHhDNSwweEE1LDB4RDYsMHhCQywweEFDLDB4MzQsMHhFNiwweDkx
LDB4Q0QsMHgwOSwweDJELDB4QUQsMHgzNSwKKyAgICAweDE0LDB4RTYsMHhGMywweEQ1LDB4Rjgs
MHhGQywweDdFLDB4RkEsMHgxNCwweERFLDB4RDIsMHhERCwweEFGLDB4QUIsMHg4QSwweDBBLAor
ICAgIDB4MzQsMHhFNiwweEYzLDB4REQsMHgyNywweDJGLDB4QUIsMHg4QSwweDMzLDB4RTYsMHhG
MywweERELDB4N0EsMHg3RSwweDdFLDB4N0MsCisgICAgMHgxNSwweEU2LDB4RjMsMHhENSwweEZG
LDB4QkYsMHg5RiwweEI3LDB4MTQsMHhERSwweEYzLDB4REQsMHg5RiwweDlFLDB4QjgsMHhCNCwK
KyAgICAweDI1LDB4NUEsMHg0MywweDQxLDB4NTUsMHg1RSwweDVFLDB4NjgsMHgyNywweDVBLDB4
MjMsMHgzOSwweDBCLDB4QUEsMHhERCwweEY1LAorICAgIDB4QTksMHg2QSwweDY0LDB4NDEsMHgw
QSwweEVGLDB4NzUsMHg1NSwweDg3LDB4NkEsMHg0MywweDQxLDB4QTAsMHhGQiwweDU1LDB4Nzcs
CisgICAgMHg0NSwweDVBLDB4MjIsMHgzOSwweDI4LDB4RkYsMHg1RiwweDU3LDB4RTUsMHg1MSww
eDQzLDB4MzksMHhBOCwweERGLDB4RDUsMHhGNSwKKyAgICAweEE1LDB4NDksMHgwMywweDM5LDB4
ODgsMHhGQywweERFLDB4RkEsMHhBNSwweDQ5LDB4MDIsMHgzMSwweDYyLDB4OEIsMHgwQiwweDAy
LAorICAgIDB4QzUsMHg0OSwweEUyLDB4MzAsMHhFRCwweEY3LDB4QUEsMHhBMCwweEE1LDB4NDks
MHgwMiwweDMxLDB4OEYsMHg1RiwweDZBLDB4MkEsCisgICAgMHg0MywweDQxLDB4QzEsMHgyOCww
eEFBLDB4RjUsMHhCNywweEJDLDB4ODQsMHg0MSwweDIzLDB4MzksMHgwNSwweEE1LDB4N0EsMHhB
MiwKKyAgICAweEE5LDB4NkEsMHhFMiwweDMwLDB4NTUsMHhGRiwweEVBLDB4MDIsMHhDNiwweDQ5
LDB4MjMsMHgzOSwweDVELDB4N0YsMHhBOSwweDgwLAorICAgIDB4NjQsMHg0MSwweEMxLDB4Mjgs
MHg5NSwweDlGLDB4QkEsMHhFOCwweEM1LDB4NDksMHgwMywweDMxLDB4RjcsMHhBQSwweDJCLDB4
MEQsCisgICAgMHhFQSwweDcyLDB4NDMsMHgzOSwweDU1LDB4RkYsMHg4QiwweEFCLDB4MjcsMHg1
QSwweDQzLDB4NDEsMHg1NSwweEY1LDB4QkUsMHhFMCwKKyAgICAweEM1LDB4NDksMHhFMiwweDMw
LDB4RDUsMHg1NiwweDdFLDB4NzgsMHg4NSwweDQxLDB4RTIsMHgzMCwweEFBLDB4MkIsMHgwOSww
eDJGLAorICAgIDB4QTksMHg2QSwweDY0LDB4NDEsMHg1NywweDgzLDB4OEIsMHhGNywweEU2LDB4
NTEsMHgyMywweDM5LDB4RjUsMHhBRSwweEE4LDB4RUUsCisgICAgMHhBNSwweDQ5LDB4RTIsMHgz
MCwweEQ3LDB4N0EsMHhFMCwweEEyLDB4QTQsMHg0OSwweEUyLDB4MzAsMHhBQSwweDJCLDB4MkQs
MHhENSwKKyAgICAweEE5LDB4NkEsMHg0NCwweDQxLDB4QUIsMHg4QiwweEVGLDB4NTUsMHhDNiww
eDUxLDB4NDMsMHg0OSwweEZBLDB4RkMsMHhGQywweEZGLAorICAgIDB4QTUsMHg1MSwweDY0LDB4
NTEsMHgyRSwweDJBLDB4MkIsMHhDOSwweEU2LDB4NjEsMHg4NCwweDUxLDB4RkEsMHhFRCwweENG
LDB4ODIsCisgICAgMHgyNywweDZBLDB4QTQsMHg1OSwweEMzLDB4RkQsMHhENSwweEY1LDB4QTUs
MHg1OSwweDIzLDB4NDEsMHhFOCwweEY4LDB4N0MsMHhGOCwKKyAgICAweDg0LDB4NDksMHhFMiww
eDM4LDB4N0UsMHg3OCwweEVBLDB4MjAsMHhBNSwweDQ5LDB4RTIsMHgzMCwweDAxLDB4QUQsMHhE
NywweEJBLAorICAgIDB4NjgsMHg2MiwweDQ0LDB4NDEsMHgwMiwweEZGLDB4NUQsMHhERCwweDQ4
LDB4NjIsMHgyMywweDM5LDB4RkMsMHg1NywweDc3LDB4RkYsCisgICAgMHhBNSwweDQ5LDB4RTIs
MHgzMCwweDdBLDB4RUUsMHhBQSwweDAwLDB4QzYsMHg1MSwweDAzLDB4MzEsMHgwRiwweDU1LDB4
QkYsMHhBQSwKKyAgICAweDA2LDB4NTIsMHg0MywweDQxLDB4ODAsMHhERCwweEJGLDB4RUUsMHhD
NSwweDQ5LDB4MjMsMHgzOSwweEZBLDB4N0UsMHhFQSwweDBBLAorICAgIDB4QTUsMHg0OSwweDAy
LDB4MzEsMHg3QSwweEEyLDB4MDIsMHgwMCwweEM1LDB4NDksMHgyMywweDM5LDB4RjUsMHhCRCww
eDJBLDB4QUEsCisgICAgMHhFNiwweDUxLDB4NDMsMHgzOSwweEY3LDB4REIsMHhBMCwweEFBLDB4
QzYsMHg0OSwweDQ0LDB4NDEsMHg5NSwweEFGLDB4MkEsMHhBQSwKKyAgICAweEM2LDB4NTEsMHgw
MiwweDM5LDB4NUUsMHg3MCwweEUwLDB4QTgsMHg4NCwweDQ5LDB4RTEsMHgzMCwweEFELDB4MkYs
MHgzRiwweEY2LAorICAgIDB4MjYsMHg1QSwweDQ0LDB4NDEsMHhCRiwweDJCLDB4QkYsMHhCNSww
eDg3LDB4NjIsMHhBNCwweDQ5LDB4N0QsMHg4MiwweEEwLDB4RDUsCisgICAgMHhFNSwweDUxLDB4
MjIsMHgzMSwweDU4LDB4RTgsMHhFQywweEJFLDB4ODUsMHg0MSwweDIzLDB4MzksMHgyRCwweEJE
LDB4RDYsMHg3RSwKKyAgICAweEU1LDB4NTEsMHg0MywweDM5LDB4MDAsMHg4QSwweEFBLDB4REQs
MHgwNiwweDUyLDB4ODQsMHg0MSwweDAwLDB4MEEsMHg5RiwweEY1LAorICAgIDB4ODgsMHg2Miww
eDQzLDB4MzksMHgwMiwweDgyLDB4RjcsMHhENywweDA2LDB4NTIsMHg2NCwweDQxLDB4QzAsMHhC
MCwweEZGLDB4NTUsCisgICAgMHhFNiwweDUxLDB4NDMsMHgzOSwweDgwLDB4QTgsMHhCQiwweEQ3
LDB4QTUsMHg0OSwweDAzLDB4MzEsMHg1QywweEY4LDB4NkEsMHhGRiwKKyAgICAweEU1LDB4NTEs
MHgwMywweDMxLDB4MkYsMHhCRCwweEY1LDB4NTcsMHg0NywweDYyLDB4MDMsMHgzMSwweDAyLDB4
QUIsMHhGRiwweDU1LAorICAgIDB4NjYsMHg2MiwweDAzLDB4MzEsMHhFOCwweEZFLDB4RkYsMHg1
NSwweEE1LDB4NDksMHhFMiwweDMwLDB4MDAsMHg4OCwweEVBLDB4N0QsCisgICAgMHhDNSwweDQ5
LDB4RTIsMHgzMCwweDIyLDB4OEEsMHhGRiwweDU1LDB4QzUsMHg1MSwweDIyLDB4MzksMHgwQSww
eDJBLDB4RUQsMHhENSwKKyAgICAweDQ2LDB4NUEsMHhFMiwweDMwLDB4RjcsMHg1RSwweDdBLDB4
QzIsMHhFNiwweDUxLDB4RTIsMHgzMCwweDAyLDB4QkYsMHhENSwweDU3LAorICAgIDB4NDYsMHg2
MiwweDAyLDB4MzksMHhBMCwweEZGLDB4NTUsMHg1NSwweEM1LDB4NTEsMHgwMiwweDM5LDB4Nzgs
MHhGQSwweDk1LDB4QjUsCisgICAgMHhFNiwweDU5LDB4MDIsMHgzOSwweEY1LDB4NUYsMHg1RSww
eDYwLDB4QTUsMHg1MSwweDAyLDB4MzksMHgwMCwweDdELDB4NTUsMHhENywKKyAgICAweEE1LDB4
NDksMHgwMywweDM5LDB4QzgsMHhERiwweERELDB4MkIsMHgwNiwweDVBLDB4NDMsMHg0MSwweDc1
LDB4RTUsMHgwRiwweDBBLAorICAgIDB4MDYsMHg1QSwweDAzLDB4MzksMHhGNSwweEY3LDB4RkEs
MHhBMCwweEE0LDB4NDksMHgwMywweDM5LDB4RkYsMHhGRiwweEZELDB4QTAsCisgICAgMHhDNSww
eDUxLDB4MDIsMHgzOSwweDc1LDB4NzUsMHhGRCwweDAyLDB4QzUsMHg1MSwweEUzLDB4MzgsMHg1
RiwweERGLDB4RkYsMHgwMCwKKyAgICAweEU1LDB4NTEsMHhFMiwweDMwLDB4RkQsMHhGRCwweEI3
LDB4MDIsMHgwNywweDVBLDB4RTIsMHgzMCwweDU3LDB4N0QsMHhFQiwweDAyLAorICAgIDB4Mjcs
MHg1QSwweDIzLDB4MzksMHg1NSwweDU1LDB4REYsMHgwOCwweDA2LDB4NUEsMHgwMiwweDM5LDB4
NTUsMHhENSwweEJBLDB4MDAsCisgICAgMHgwNiwweDYyLDB4MDMsMHgzOSwweDU1LDB4N0UsMHhB
QSwweDAwLDB4NjcsMHg2MiwweDAzLDB4MzksMHg3NSwweDdELDB4QUEsMHg4OCwKKyAgICAweDA2
LDB4NUEsMHg0MywweDQxLDB4NTUsMHhGNSwweDIwLDB4MjAsMHg0NywweDYyLDB4NDMsMHg0MSww
eDU1LDB4RjcsMHhBMiwweDgwLAorICAgIDB4NDcsMHg2MiwweDIzLDB4MzksMHhENSwweEJGLDB4
MDAsMHgwMiwweDI3LDB4NjIsMHg0NCwweDQxLDB4NTUsMHg4QSwweDAwLDB4MDAsCisgICAgMHg0
OCwweDZBLDB4NjQsMHg0OSwweDU1LDB4RUEsMHhBMCwweDJBLDB4NDgsMHg2QSwweEE1LDB4NTEs
MHg1NSwweEFBLDB4MEEsMHg4OCwKKyAgICAweDBBLDB4ODMsMHhDNiwweDUxLDB4RDUsMHhCRiww
eEFGLDB4MkIsMHg5MiwweEQ1LDB4NDcsMHg2MiwweEQ1LDB4QkYsMHgyRiwweDJCLAorICAgIDB4
NzUsMHhFRSwweDBGLDB4QzUsMHgwOSwweDBCLDB4MDIsMHgwMiwweEQ3LDB4RjYsMHg5NiwweEY2
LDB4RUQsMHhBRiwweEJGLDB4MEIsCisgICAgMHhENywweEY2LDB4QjYsMHhFRSwweEMzLDB4QzIs
MHhFMCwweEMwLDB4QjYsMHhGNiwweDc2LDB4RUUsMHhFMCwweEU4LDB4QkEsMHhCOCwKKyAgICAw
eDk2LDB4RjYsMHg3NSwweEU2LDB4QkUsMHhERSwweERBLDB4NkEsMHg5NiwweEVFLDB4NTUsMHhF
RSwweDBCLDB4MEIsMHhBQiwweDZCLAorICAgIDB4OTYsMHhFRSwweDM0LDB4RTYsMHg4OCwweEE4
LDB4N0UsMHhENywweEI2LDB4RUUsMHg1NSwweEU2LDB4OEIsMHhGRiwweEQ1LDB4NTUsCisgICAg
MHg3NiwweEVFLDB4QjMsMHhENSwweEYwLDB4RjgsMHg3RSwweEZFLDB4NTUsMHhFNiwweEY0LDB4
REQsMHgyOSwweEVELDB4QjcsMHgwRiwKKyAgICAweDc1LDB4RTYsMHhEMywweEQ1LDB4MjgsMHhB
RSwweDdBLDB4QUEsMHg3NSwweEVFLDB4NzEsMHhDRCwweDAwLDB4MEEsMHhGRiwweDdCLAorICAg
IDB4OTYsMHhFRSwweDUxLDB4QzUsMHgwMCwweDIyLDB4QUEsMHhERCwweDE4LDB4RkYsMHhGMyww
eERELDB4MEEsMHgyQSwweEJGLDB4RjUsCisgICAgMHgxOCwweEZGLDB4OTUsMHhFNiwweEU4LDB4
ODAsMHhBQiwweEZELDB4QjcsMHhGNiwweEQ2LDB4RUUsMHhCQSwweEFBLDB4QkIsMHhBQiwKKyAg
ICAweEQ3LDB4RjYsMHg1NSwweEU2LDB4NUYsMHhFMCwweDgyLDB4OEEsMHhCNiwweEVFLDB4MzUs
MHhERSwweEQ1LDB4RkYsMHhFQywweEEwLAorICAgIDB4RDcsMHhGNiwweDM1LDB4REUsMHgyQiww
eEQ1LDB4NUYsMHhFRSwweDE4LDB4RjcsMHgzNSwweEU2LDB4MEEsMHgyQSwweEFGLDB4RDUsCisg
ICAgMHgxOCwweEZGLDB4OTYsMHhFRSwweDJBLDB4MjAsMHgwQiwweEFELDB4MTgsMHhGRiwweEQ3
LDB4RjYsMHhBOCwweEVFLDB4N0EsMHhFOCwKKyAgICAweDE4LDB4RjcsMHhENywweEY2LDB4OEUs
MHg4QSwweDhCLDB4REYsMHgxOCwweEZGLDB4RDcsMHhGNiwweEZFLDB4RUEsMHhCQSwweDdGLAor
ICAgIDB4MTgsMHhGNywweEQ3LDB4RUUsMHg1RiwweDVFLDB4RjAsMHhFMiwweEQ3LDB4RjYsMHhG
NywweEVFLDB4QTgsMHhBOCwweDAyLDB4MjIsCisgICAgMHhENywweEY2LDB4QjcsMHhFRSwweEM4
LDB4RUMsMHg4QSwweDgwLDB4RDcsMHhGNiwweEI3LDB4RUUsMHgwMCwweDdFLDB4NkIsMHhBQSwK
KyAgICAweEY3LDB4RjYsMHhCNywweEVFLDB4RUEsMHhBRiwweEJELDB4QTcsMHhGNywweEY2LDB4
NTUsMHhFNiwweERBLDB4NjAsMHhFOCwweEEyLAorICAgIDB4RDcsMHhGNiwweDU1LDB4RTYsMHg4
MiwweDBCLDB4MDksMHgzNSwweEQ3LDB4RjYsMHg1NSwweEU2LDB4NzgsMHhGQSwweDc4LDB4Njgs
CisgICAgMHhCNiwweEVFLDB4NTUsMHhFNiwweDBCLDB4MEYsMHhCRiwweEY1LDB4NzUsMHhFRSww
eEQyLDB4RDUsMHg2OCwweDY4LDB4NjAsMHhDMCwKKyAgICAweEQzLDB4REQsMHg1MSwweENELDB4
RDYsMHhFRSwweEJFLDB4RkMsMHhGMywweERELDB4NzEsMHhDRCwweDNGLDB4QkQsMHhCRCwweEJG
LAorICAgIDB4MTQsMHhERSwweEYzLDB4REQsMHgzNCwweEYwLDB4RTIsMHg4MSwweDE0LDB4REUs
MHhGMywweERELDB4QUYsMHhFRiwweEI3LDB4MDMsCisgICAgMHgzNCwweEU2LDB4RjQsMHhERCww
eDBCLDB4ODMsMHhBQiwweEVBLDB4MzQsMHhFNiwweEYzLDB4REQsMHg3OCwweDdBLDB4RkYsMHhG
RiwKKyAgICAweDE0LDB4REUsMHhGMywweERELDB4Q0YsMHg1RiwweEQ3LDB4RjUsMHgxNCwweERF
LDB4RDMsMHhENSwweDhFLDB4QTcsMHhBQSwweDhBLAorICAgIDB4MjUsMHg1QSwweDYzLDB4NDEs
MHg3OCwweEUyLDB4ODAsMHg4QSwweEE0LDB4NDksMHgwMiwweDM5LDB4M0YsMHhBRiwweDJCLDB4
OUUsCisgICAgMHg2OCwweDYyLDB4NjMsMHg0MSwweEJGLDB4MEYsMHgyRiwweEZELDB4ODgsMHg2
MiwweDQzLDB4NDEsMHhCQSwweDAwLDB4ODgsMHg3RiwKKyAgICAweDI3LDB4NUEsMHg2NCwweDQx
LDB4NTcsMHhGOCwweEU4LDB4N0YsMHhDNSwweDUxLDB4NjMsMHg0MSwweEZGLDB4ODMsMHhBOCww
eDVGLAorICAgIDB4QzUsMHg0OSwweDY0LDB4NDEsMHg2QSwweDBBLDB4MEEsMHhENSwweEM1LDB4
NDksMHg0MywweDM5LDB4MkEsMHhBOCwweEU4LDB4NTcsCisgICAgMHhDNSwweDQ5LDB4MjMsMHgz
OSwweEE4LDB4MjIsMHhBQiwweEY1LDB4QTUsMHg0OSwweDAyLDB4MzEsMHgyQSwweEFBLDB4RkIs
MHg1NywKKyAgICAweEM1LDB4NDksMHgwMiwweDMxLDB4N0UsMHhFMywweEE5LDB4MkQsMHhBNSww
eDQ5LDB4MjMsMHgzOSwweDJCLDB4MzUsMHhGNSwweEFCLAorICAgIDB4QTgsMHg2MiwweDg0LDB4
NDEsMHhBOSwweDU1LDB4NTUsMHgwRCwweEE4LDB4NjIsMHg0MywweDM5LDB4RkUsMHg3NSwweDU3
LDB4RTAsCisgICAgMHg4NCwweDQxLDB4MDIsMHgzMSwweDc4LDB4N0QsMHg1NywweDcwLDB4QTUs
MHg0MSwweEUyLDB4MjgsMHhBRCwweEY1LDB4QkYsMHgyRiwKKyAgICAweEM1LDB4NDksMHgyMyww
eDM5LDB4RTIsMHhGRCwweEJGLDB4QTgsMHhBOCwweDZBLDB4NDMsMHgzOSwweDdGLDB4RDUsMHhB
QiwweDgyLAorICAgIDB4RTYsMHg1MSwweDIzLDB4MzEsMHg3NiwweERGLDB4QkUsMHhGOCwweEM2
LDB4NTEsMHhDMiwweDMwLDB4RDcsMHhENiwweEY4LDB4NjgsCisgICAgMHg4NCwweDQ5LDB4MjMs
MHgzOSwweERGLDB4QUYsMHgwMywweEFELDB4ODQsMHg0MSwweDQzLDB4NDEsMHhGQiwweENFLDB4
MDgsMHgwMiwKKyAgICAweDg0LDB4NDksMHgyMywweDM5LDB4QjUsMHgzRiwweDJGLDB4OEUsMHhB
NSwweDQ5LDB4MDMsMHgzOSwweEQ3LDB4QkEsMHhBOCwweEFFLAorICAgIDB4QTUsMHg1MSwweDIz
LDB4NDEsMHhENSwweEZCLDB4RkEsMHg5RiwweDg0LDB4NTEsMHg0NCwweDQ5LDB4QUQsMHg5RSww
eDNBLDB4OTUsCisgICAgMHgwNiwweDYyLDB4NDMsMHg0OSwweEFGLDB4MjksMHgzRiwweEJGLDB4
RTUsMHg2OSwweEM1LDB4NjEsMHhFRiwweDZCLDB4MzksMHg3NywKKyAgICAweEU1LDB4NjEsMHhB
NCwweDU5LDB4RTgsMHg2MCwweEUwLDB4RUMsMHhDNSwweDU5LDB4NjQsMHg1MSwweEJCLDB4QjIs
MHhFMiwweDdBLAorICAgIDB4QTUsMHg1MSwweDQ0LDB4NDksMHgyMiwweEJFLDB4OTcsMHg3Riww
eEE1LDB4NDksMHgyNCwweDQxLDB4QTgsMHhCQSwweEZFLDB4NTUsCisgICAgMHg4NSwweDQ5LDB4
MjQsMHg0MSwweDAyLDB4M0UsMHgyRiwweEY3LDB4QTUsMHg0OSwweDQ0LDB4NDEsMHg4MiwweEVC
LDB4RkYsMHg5NSwKKyAgICAweEE1LDB4NDksMHgyNCwweDM5LDB4MjAsMHhFMiwweENFLDB4N0Ys
MHhBNSwweDQ5LDB4MjMsMHgzOSwweDAyLDB4QkEsMHgyQiwweDVGLAorICAgIDB4ODUsMHg0MSww
eDAzLDB4MzksMHgwMCwweEE4LDB4RjgsMHg3NywweDg1LDB4NDksMHgwMywweDM5LDB4QTAsMHgy
QSwweEFBLDB4NTUsCisgICAgMHhBNSwweDQ5LDB4MDMsMHgzOSwweEEyLDB4RUYsMHhFRiwweDc1
LDB4ODQsMHg0MSwweEMyLDB4MzAsMHgwMCwweEEwLDB4QkEsMHg1NywKKyAgICAweDg0LDB4NDks
MHhFMiwweDMwLDB4MDAsMHgyQSwweEFGLDB4NTUsMHhBNSwweDQ5LDB4RTIsMHgzMCwweDBBLDB4
QUEsMHhGQiwweDU1LAorICAgIDB4QTQsMHg0OSwweEUyLDB4MzAsMHgwQSwweEFBLDB4RjcsMHg1
NSwweDY0LDB4NDEsMHhDMiwweDMwLDB4RjgsMHg2QiwweEVCLDB4MEIsCisgICAgMHg4NCwweDQx
LDB4RTIsMHgzMCwweDAzLDB4QUQsMHg1NSwweDU1LDB4NjMsMHg0MSwweEMyLDB4MzAsMHgwMCww
eEE4LDB4RDcsMHhGRCwKKyAgICAweDY0LDB4NDEsMHhDMSwweDMwLDB4MDAsMHhCRiwweERGLDB4
RkYsMHhDNSwweDUxLDB4MjIsMHgzOSwweDdGLDB4RkQsMHhCNSwweDA1LAorICAgIDB4QTUsMHg0
OSwweDAyLDB4MzEsMHhCRiwweDU1LDB4NTcsMHg1QywweDY0LDB4NDEsMHgwMiwweDMxLDB4Mjgs
MHg1RCwweDU1LDB4RkQsCisgICAgMHg4NCwweDQxLDB4MDIsMHgzMSwweDdGLDB4NTUsMHg1RCww
eDhGLDB4NjQsMHg0MSwweEMyLDB4MjgsMHhCQSwweEY1LDB4RkYsMHgyOCwKKyAgICAweDY0LDB4
NDEsMHhFMiwweDMwLDB4RkIsMHg1RiwweDdGLDB4MDIsMHhFNSwweDUxLDB4MDIsMHgzMSwweEQ1
LDB4QjUsMHhCNSwweDBBLAorICAgIDB4MDYsMHg1QSwweDAyLDB4MzEsMHg1RiwweDVFLDB4RjAs
MHg4MCwweEM2LDB4NTEsMHhDMiwweDMwLDB4NzUsMHhENSwweEJCLDB4MDAsCisgICAgMHhFNyww
eDU5LDB4MDMsMHgzMSwweDU1LDB4NTUsMHhGRiwweDgwLDB4RTYsMHg1OSwweEUyLDB4MzAsMHg1
NSwweDU1LDB4QUYsMHgwMCwKKyAgICAweEU2LDB4NTksMHgwMywweDMxLDB4NTUsMHg1NSwweDNC
LDB4MDAsMHgyNiwweDVBLDB4MjMsMHgzOSwweDU1LDB4RjUsMHhBQSwweDA4LAorICAgIDB4Njcs
MHg2MiwweEM1LDB4NTEsMHg0MywweEU5LDB4RkQsMHhCQSwweDA2LDB4NUEsMHgwMywweDM5LDB4
NTcsMHhGQSwweDg4LDB4MDAsCisgICAgMHgwNiwweDVBLDB4MjQsMHg0MSwweDU1LDB4QkEsMHgw
OCwweDAyLDB4MjYsMHg2MiwweDIzLDB4NDEsMHhGRCwweEFBLDB4MDIsMHg4QSwKKyAgICAweDI3
LDB4NjIsMHhDNSwweDUxLDB4NDMsMHg2QSwweEE4LDB4QUEsMHgyNywweDYyLDB4QTUsMHg1MSww
eDU1LDB4QTMsMHgyOCwweEE4LAorICAgIDB4MjYsMHg2MiwweEE0LDB4NTEsMHhCRCwweEE4LDB4
MjIsMHg4QSwweDQ3LDB4NjIsMHhDNSwweDUxLDB4N0YsMHhBRSwweDJBLDB4REYsCisgICAgMHgy
NiwweDYyLDB4QTUsMHg1MSwweDIyLDB4MkEsMHhBOCwweEJELDB4MjYsMHg2MiwweEM1LDB4NTEs
MHhEQSwweEEyLDB4QUEsMHg2RiwKKyAgICAweDI3LDB4NjIsMHhDNSwweDUxLDB4MkYsMHhCRSww
eDJBLDB4RjYsMHgyNywweDYyLDB4QTUsMHg1MSwweEE4LDB4MDgsMHgwQSwweDk3LAorICAgIDB4
MjcsMHg2MiwweEM0LDB4NTEsMHhFQSwweEEyLDB4RkMsMHhENywweDQ3LDB4NjIsMHhBNCwweDUx
LDB4OEIsMHg4QSwweERGLDB4QkYsCisgICAgMHhBOCwweDcyLDB4QzYsMHg1MSwweEVGLDB4RUYs
MHg1NywweDNCLDB4QTgsMHg3MiwweDg1LDB4NTEsMHhBQSwweEZCLDB4RDcsMHgwMCwKKyAgICAw
eDI5LDB4ODMsMHhFNSwweDU5LDB4NUQsMHg1NSwweDU1LDB4MEIsMHg4QiwweDhCLDB4QTQsMHg1
MSwweEY3LDB4NzUsMHhGRCwweDAwLAorICAgIDB4NEQsMHhBNCwweDA1LDB4NUEsMHg1NSwweDU1
LDB4NTUsMHgwMiwweENGLDB4QjQsMHhFNSwweDU5LDB4NTUsMHg1NSwweERELDB4MDAsCisgICAg
MHgzMCwweEJELDB4RTUsMHg1OSwweDU1LDB4NTUsMHhGRiwweDAwLDB4NzEsMHhDNSwweDA1LDB4
NUEsMHg1NSwweDU1LDB4RUYsMHgwMCwKKyAgICAweEIzLDB4RDUsMHgwNywweDYyLDB4NTUsMHg1
NSwweEFCLDB4MDAsMHgxNCwweERFLDB4NDcsMHg2MiwweDU1LDB4NTUsMHhBQSwweDAwLAorICAg
IDB4MzQsMHhFNiwweDg3LDB4NkEsMHhENSwweEJELDB4MjIsMHgwMCwweDU1LDB4RTYsMHg0RCww
eEFDLDB4QkQsMHgyQiwweDAwLDB4MDAsCisgICAgMHhENywweEY2LDB4MzUsMHhFNiwweEFELDB4
QUQsMHhBQiwweDBCLDB4RjgsMHhGRSwweEI3LDB4RjYsMHhCRCwweEVGLDB4NkIsMHg3QSwKKyAg
ICAweEQ2LDB4RjYsMHg5NiwweEVFLDB4RUMsMHhGNywweEJGLDB4N0IsMHhCNiwweEY2LDB4NzYs
MHhFRSwweEZBLDB4QkEsMHg3QSwweDdFLAorICAgIDB4OTYsMHhFRSwweDc1LDB4RUUsMHg1OCww
eEZGLDB4RUQsMHg3RiwweDc2LDB4RUUsMHhGMywweERELDB4QzIsMHhFOCwweDc4LDB4N0EsCisg
ICAgMHgzNCwweEU2LDB4RDMsMHhENSwweDJFLDB4QkQsMHhCRCwweEE1LDB4NzUsMHhFRSwweDE0
LDB4REUsMHhBRiwweEVGLDB4QUQsMHgyQiwKKyAgICAweDk2LDB4RUUsMHhGMywweERELDB4Rjcs
MHg5RiwweEJGLDB4MjIsMHg5NiwweEVFLDB4MzQsMHhFNiwweDdELDB4RkIsMHhBMiwweDgwLAor
ICAgIDB4NzUsMHhFRSwweDM1LDB4RTYsMHhFOSwweDBCLDB4MDIsMHgwQSwweDk2LDB4RUUsMHgx
NCwweERFLDB4N0YsMHhBOCwweDAwLDB4MEEsCisgICAgMHg5NiwweEVFLDB4NTEsMHhDRCwweDU3
LDB4QTAsMHgwMCwweDAwLDB4OTYsMHhFRSwweDEwLDB4QzUsMHhCRCwweDU3LDB4RTAsMHgwMCwK
KyAgICAweDk2LDB4RUUsMHg3MSwweEM1LDB4MEEsMHhCRCwweEQ1LDB4NUUsMHhCNiwweEVFLDB4
OTIsMHhDRCwweDAwLDB4MEEsMHhBRiwweEZELAorICAgIDB4RDcsMHhGNiwweDU1LDB4RTYsMHhB
QSwweEEyLDB4MEIsMHhGNSwweEQ3LDB4RjYsMHg5NiwweEVFLDB4NEIsMHgyQiwweDJCLDB4MkIs
CisgICAgMHhENywweEY2LDB4OTYsMHhFRSwweDU1LDB4QkYsMHgyMCwweDAwLDB4RDcsMHhGNiww
eEQzLDB4RDUsMHhGQSwweDc4LDB4NjAsMHhBMCwKKyAgICAweEI2LDB4RUUsMHg3MiwweENELDB4
MDIsMHgwQiwweEE1LDB4RDUsMHgxOCwweEY3LDB4NTUsMHhFNiwweDAyLDB4MEEsMHhCQiwweEI1
LAorICAgIDB4MTgsMHhGRiwweEQ4LDB4RjYsMHhGRSwweEVFLDB4QTIsMHgwQiwweDE4LDB4RkYs
MHhENywweEY2LDB4RkQsMHhFRiwweEJBLDB4QUEsCisgICAgMHgxOCwweEY3LDB4RjcsMHhGNiww
eEY5LDB4NzcsMHhGRCwweEY3LDB4MTgsMHhGNywweEQ3LDB4RUUsMHhGQSwweEJBLDB4QUYsMHhC
QSwKKyAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4RjIsMHhGQSwweEZDLDB4RTAsMHhCNywweEY2
LDB4RjcsMHhFRSwweEFGLDB4RUIsMHhBQSwweEFCLAorICAgIDB4RjcsMHhGNiwweDk2LDB4RUUs
MHhGRiwweEZFLDB4RkEsMHg2QSwweEQ3LDB4RjYsMHg5NiwweEVFLDB4RTAsMHg4QiwweEVCLDB4
RUYsCisgICAgMHhCNiwweEVFLDB4MTQsMHhERSwweDJGLDB4MzYsMHhERSwweDdFLDB4RDcsMHhG
NiwweDU1LDB4RTYsMHg3OCwweEVBLDB4RUEsMHhFQiwKKyAgICAweDk2LDB4RUUsMHgzNCwweEU2
LDB4MkQsMHg4RiwweEJFLDB4QjcsMHg5NiwweEVFLDB4MTQsMHhERSwweDYwLDB4NDAsMHg2Miww
eEU4LAorICAgIDB4RjMsMHhERCwweDcyLDB4Q0QsMHhERSwweDdFLDB4NUMsMHg1QywweEIyLDB4
RDUsMHg3MiwweENELDB4M0UsMHhCRiwweEY3LDB4RjUsCisgICAgMHgxNCwweERFLDB4RDMsMHhE
NSwweDhCLDB4MEQsMHhBOSwweDI5LDB4MzQsMHhFNiwweEY0LDB4REQsMHhBNywweEJGLDB4RUEs
MHhBQiwKKyAgICAweDM0LDB4RTYsMHgxNCwweERFLDB4NzAsMHg4MCwweDJFLDB4MkYsMHgzNCww
eEU2LDB4RjQsMHhERCwweERFLDB4RkEsMHhGOCwweEZGLAorICAgIDB4MTQsMHhERSwweEQzLDB4
RDUsMHhGRSwweEJBLDB4NkUsMHhGMiwweDM0LDB4RTYsMHhGNCwweERELDB4RjUsMHhCRCwweDJE
LDB4M0YsCisgICAgMHg0NiwweDYyLDB4QzUsMHg1MSwweDdGLDB4RjYsMHhENiwweEZDLDB4MDUs
MHg1MiwweDIzLDB4MzksMHhERSwweDdBLDB4NjAsMHg2MCwKKyAgICAweEM1LDB4NDksMHgyMiww
eDM5LDB4RUYsMHhFRCwweEU5LDB4MzUsMHgyNywweDYyLDB4NDMsMHg0MSwweDU1LDB4QkQsMHgw
MywweDBCLAorICAgIDB4ODgsMHg2QSwweDYzLDB4NDEsMHg1NSwweEZGLDB4ODAsMHhFQSwweEM1
LDB4NDksMHg0MywweDQxLDB4NTUsMHhBQSwweEE4LDB4RTgsCisgICAgMHhDNCwweDQ5LDB4NDIs
MHgzOSwweEZELDB4MkEsMHhBQSwweEZCLDB4QTQsMHg0OSwweDQzLDB4MzksMHhEQSwweDI4LDB4
QUEsMHhFRiwKKyAgICAweEE0LDB4NDksMHg2NCwweDQxLDB4QUUsMHgyOCwweEZDLDB4NTksMHhB
NSwweDQ5LDB4NDMsMHgzOSwweDZCLDB4RjAsMHhGQSwweDdCLAorICAgIDB4ODQsMHg0MSwweDIz
LDB4MzksMHhCRCwweEZBLDB4Q0EsMHhBQSwweEE1LDB4NDksMHgwMiwweDMxLDB4MjIsMHgwMyww
eDJELDB4RTUsCisgICAgMHhDQSwweDhCLDB4QTQsMHg0OSwweDBELDB4QjUsMHg1NSwweDU1LDB4
RUMsMHg4QiwweDYzLDB4NDEsMHhFMCwweEVBLDB4NTcsMHg1NSwKKyAgICAweEE1LDB4NDksMHgw
MywweDMxLDB4NjAsMHhFMCwweEM4LDB4RUUsMHg0NCwweDMxLDB4QTEsMHgyOCwweDJCLDB4RkUs
MHhERSwweDVGLAorICAgIDB4ODQsMHg0MSwweEMxLDB4MjgsMHgyOCwweEFBLDB4QUIsMHhBRCww
eDI2LDB4NUEsMHgwMiwweDMxLDB4MDIsMHhGRiwweEZGLDB4NzUsCisgICAgMHhDNSwweDQ5LDB4
MDIsMHgzOSwweEI4LDB4RkUsMHhGQiwweDU1LDB4RTYsMHg1MSwweDAzLDB4MzksMHg3MiwweEUz
LDB4RUYsMHg1NSwKKyAgICAweDQ0LDB4NDEsMHhDMSwweDMwLDB4MEIsMHg4RiwweEY4LDB4NTgs
MHhBNCwweDQ5LDB4RTEsMHgzMCwweEEyLDB4QkEsMHhGRiwweDU1LAorICAgIDB4ODQsMHg0OSww
eEUyLDB4MzAsMHgyOCwweEY4LDB4RkYsMHg1NSwweDY0LDB4NDEsMHhDMSwweDMwLDB4MDAsMHg4
MiwweEZCLDB4NTUsCisgICAgMHg2NCwweDQ5LDB4QzEsMHgzMCwweDAwLDB4MDAsMHhGRiwweDU1
LDB4ODQsMHg1MSwweDAyLDB4MzksMHgzQSwweDBFLDB4MkQsMHgwNSwKKyAgICAweDI2LDB4NkEs
MHg4NCwweDU5LDB4RkQsMHhCRiwweDJCLDB4QUIsMHg0NywweDcyLDB4QzUsMHg2MSwweEY1LDB4
QkYsMHhGOCwweEVBLAorICAgIDB4MjYsMHg3MiwweEU1LDB4NjEsMHg3MywweDVDLDB4QkUsMHhF
QSwweDA1LDB4NkEsMHg2NCwweDUxLDB4N0UsMHg3RSwweDU4LDB4NjAsCisgICAgMHg4NSwweDU5
LDB4MDQsMHg0MSwweEZBLDB4N0UsMHg1OCwweDdBLDB4MDQsMHg0MSwweEEyLDB4MzAsMHgwMCww
eEZBLDB4NUUsMHg4MCwKKyAgICAweDI0LDB4NDEsMHhBMiwweDMwLDB4M0UsMHg3RiwweDdGLDB4
MEIsMHgyNCwweDQxLDB4QTIsMHgyOCwweEFDLDB4N0YsMHg3RiwweDAyLAorICAgIDB4NDQsMHg0
MSwweEEyLDB4MjgsMHhFQiwweDVELDB4RkIsMHgyMCwweDg1LDB4NDksMHhDMiwweDMwLDB4NTUs
MHg1NSwweERELDB4MjAsCisgICAgMHg4NSwweDQ5LDB4QzMsMHgzMCwweDc1LDB4NTUsMHhGRiww
eDAwLDB4QTUsMHg1MSwweEUyLDB4MzAsMHg1NSwweDU1LDB4RjcsMHgwMCwKKyAgICAweDI3LDB4
NUEsMHhFMywweDM4LDB4NTUsMHhENSwweEY3LDB4QTgsMHgwNywweDVBLDB4QTIsMHgyOCwweDU1
LDB4NUYsMHhBRSwweDAyLAorICAgIDB4MDcsMHg1QSwweEMyLDB4MzAsMHg1NSwweDdGLDB4QUIs
MHgyMCwweDA2LDB4NUEsMHhDMiwweDMwLDB4NTUsMHhGRCwweEJBLDB4MDAsCisgICAgMHgyNyww
eDVBLDB4RTIsMHgzMCwweDU1LDB4RkYsMHhBQSwweDAyLDB4MDYsMHg1QSwweDAzLDB4MzksMHhB
RCwweEFGLDB4MjAsMHgwMCwKKyAgICAweDY3LDB4NjIsMHgyMywweDM5LDB4NTcsMHhGRiwweEFB
LDB4QTIsMHgyNywweDVBLDB4MjMsMHgzOSwweDU1LDB4QUIsMHgwOCwweDgwLAorICAgIDB4MDYs
MHg1QSwweDQzLDB4NDEsMHhENSwweDJCLDB4MDAsMHgwMCwweDQ2LDB4NjIsMHhBNCwweDQ5LDB4
RDUsMHhBRiwweEFBLDB4RUEsCisgICAgMHgyNywweDYyLDB4ODQsMHg0OSwweEQ3LDB4MkEsMHgw
MCwweEEyLDB4MjcsMHg1QSwweDg0LDB4NDksMHhGNSwweDhBLDB4QTAsMHhFQSwKKyAgICAweDA2
LDB4NUEsMHhBNSwweDQ5LDB4RjUsMHg4QSwweDAwLDB4QTIsMHg0NiwweDVBLDB4QTUsMHg1MSww
eEQ3LDB4MkEsMHhBMCwweEJCLAorICAgIDB4MjYsMHg1QSwweEE0LDB4NTEsMHhBQiwweDgwLDB4
MjAsMHhENywweDI2LDB4NUEsMHg4NCwweDQ5LDB4MjIsMHhBOCwweEE4LDB4RjcsCisgICAgMHgy
NywweDYyLDB4ODQsMHg0OSwweEE4LDB4ODIsMHhBQSwweEI1LDB4MDcsMHg1QSwweEE1LDB4NTEs
MHhDMiwweDJGLDB4RTksMHhERSwKKyAgICAweDI4LDB4NjIsMHg4NSwweDUxLDB4QTAsMHg4QSww
eEY1LDB4QUUsMHg0OCwweDZBLDB4NjUsMHg0OSwweEFBLDB4RUEsMHg1RiwweDJCLAorICAgIDB4
NjgsMHg3MiwweDg1LDB4NDksMHhGQiwweEZGLDB4N0YsMHg4QSwweDQ3LDB4NjIsMHhBNSwweDUx
LDB4QkUsMHhCRiwweEY1LDB4MDIsCisgICAgMHg4OCwweDcyLDB4MDYsMHg1QSwweDdGLDB4N0Ys
MHhGNSwweDNCLDB4NkIsMHg4QiwweDg0LDB4NDksMHg1RiwweDVELDB4RkYsMHgwMiwKKyAgICAw
eDRFLDB4QUMsMHhDNSwweDUxLDB4NTUsMHg1NSwweEQ1LDB4MDAsMHhCMCwweEI0LDB4QzUsMHg1
MSwweDU1LDB4NTUsMHhGRiwweDAwLAorICAgIDB4NTIsMHhDNSwweEM2LDB4NTksMHg1NSwweDU1
LDB4RkYsMHgwMCwweDkzLDB4Q0QsMHhDNSwweDU5LDB4NTUsMHg1NSwweEFGLDB4MDAsCisgICAg
MHhCMywweEQ1LDB4RTYsMHg1OSwweDU1LDB4NTUsMHhBQSwweDAwLDB4RjUsMHhERCwweDg1LDB4
NTEsMHg1NSwweEZGLDB4QUEsMHgwMCwKKyAgICAweDU2LDB4RTYsMHhBNSwweDUxLDB4NTUsMHhG
RiwweEFBLDB4MDAsMHg5NywweEVFLDB4MjYsMHg2MiwweDU1LDB4RkYsMHhBQSwweDAwLAorICAg
IDB4MTUsMHhERSwweDI3LDB4NjIsMHg1NSwweEFCLDB4MjAsMHgwMCwweDM2LDB4RTYsMHg4OCww
eDZBLDB4NTUsMHhBQSwweDAwLDB4MDAsCisgICAgMHg3NSwweEU2LDB4MjksMHg4MywweDU1LDB4
QUEsMHgwOCwweDAwLDB4OTYsMHhFRSwweENCLDB4OTMsMHg1NSwweEFBLDB4MDAsMHgwMCwKKyAg
ICAweDk2LDB4RUUsMHgwRCwweDlDLDB4RDUsMHhBQSwweDAwLDB4MDAsMHg5NywweEVFLDB4OTAs
MHhBQywweEY1LDB4QTIsMHgwMCwweDAwLAorICAgIDB4OTYsMHhFRSwweDExLDB4QkQsMHhGNSww
eEFBLDB4MDAsMHgwMCwweEI2LDB4RUUsMHg3MiwweENELDB4RDUsMHhBQSwweDAwLDB4MDAsCisg
ICAgMHg5NiwweEVFLDB4RDMsMHhENSwweEQ1LDB4QUEsMHgwMCwweDAwLDB4QjYsMHhFRSwweEQz
LDB4RDUsMHhGRCwweEFBLDB4MDAsMHgwMCwKKyAgICAweEY2LDB4RjYsMHgzNCwweERFLDB4NTUs
MHhGRiwweEVCLDB4QUEsMHhCNiwweEVFLDB4MzQsMHhERSwweEY3LDB4QUEsMHg4MiwweDAwLAor
ICAgIDB4QjYsMHhFRSwweDU1LDB4RTYsMHhERCwweEFBLDB4MjIsMHgwMCwweEI2LDB4RUUsMHg1
NSwweEU2LDB4RUQsMHhBQSwweDAyLDB4MDAsCisgICAgMHhENiwweEY2LDB4NzUsMHhFNiwweERE
LDB4RUIsMHhBQSwweDJBLDB4RjgsMHhGNiwweDk2LDB4RUUsMHg1NSwweEQ3LDB4QUYsMHhBQiwK
KyAgICAweEY3LDB4RkUsMHg5NiwweEVFLDB4QkQsMHhBQiwweEFBLDB4QjgsMHhENiwweEY2LDB4
OTYsMHhFRSwweEY4LDB4RkUsMHhGRSwweEZBLAorICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHhF
OCwweEJBLDB4RDIsMHhGMywweDk2LDB4RUUsMHg1NSwweEVFLDB4RTAsMHhFMCwweDgwLDB4ODIs
CisgICAgMHg3NSwweEVFLDB4MzQsMHhFNiwweDg4LDB4RUEsMHhBOCwweDc4LDB4NTUsMHhFNiww
eEYzLDB4REQsMHg3QSwweDc4LDB4N0UsMHg3RSwKKyAgICAweDU1LDB4RTYsMHg5MiwweEQ1LDB4
QjcsMHg5NywweEFBLDB4MDAsMHhENywweEY2LDB4MTQsMHhERSwweEJELDB4QUQsMHhBRiwweDJC
LAorICAgIDB4RjcsMHhGNiwweDk2LDB4RUUsMHhGRCwweEFGLDB4MEEsMHg4QSwweEY3LDB4RjYs
MHg5NiwweEY2LDB4NkIsMHg4QSwweDgwLDB4QTIsCisgICAgMHhENywweEY2LDB4NzUsMHhFNiww
eDU3LDB4REEsMHhFOCwweDI4LDB4OTYsMHhFRSwweDU1LDB4RTYsMHhBRiwweEZBLDB4RkEsMHhD
OCwKKyAgICAweEI2LDB4RUUsMHg3NSwweEU2LDB4QkYsMHhENSwweDk1LDB4N0YsMHhCNiwweEVF
LDB4NTUsMHhFNiwweDg4LDB4QUEsMHhCQiwweEZGLAorICAgIDB4OTYsMHhFRSwweEYzLDB4RDUs
MHg3MCwweDAwLDB4MDAsMHgwMCwweDk2LDB4RUUsMHhCMywweEQ1LDB4RDUsMHhERSwweEUwLDB4
MDAsCisgICAgMHg1NSwweEU2LDB4RjQsMHhENSwweDJBLDB4MjksMHhBRCwweDk4LDB4QjcsMHhF
RSwweDM1LDB4RTYsMHgwMiwweEFGLDB4QjksMHhGRCwKKyAgICAweEY4LDB4RjYsMHg3NSwweEU2
LDB4MkEsMHgyRiwweEE1LDB4NzUsMHhGNywweEY2LDB4QjcsMHhGNiwweEZBLDB4QTAsMHg4QSww
eDJELAorICAgIDB4RjcsMHhGNiwweEQzLDB4RDUsMHg1RSwweEVBLDB4MjAsMHgwMCwweEY4LDB4
RjYsMHhCMywweEQ1LDB4QkQsMHhGRiwweEU4LDB4MDAsCisgICAgMHhENywweEY2LDB4MzQsMHhE
RSwweDBBLDB4MEIsMHhCNSwweEJBLDB4MTgsMHhGRiwweDk2LDB4RTYsMHhBMCwweDgyLDB4MkYs
MHhBRCwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4OTUsMHhERSwweERGLDB4QkEsMHgxOCww
eEY3LDB4RjcsMHhGNiwweDdBLDB4RkYsMHg1RiwweDVELAorICAgIDB4MTgsMHhGRiwweEQ3LDB4
RjYsMHg2RiwweEZBLDB4QTIsMHhFMiwweEY3LDB4RjYsMHhCNiwweEVFLDB4RUEsMHhCQiwweEZD
LDB4RjAsCisgICAgMHhENywweEY2LDB4QjYsMHhFRSwweERBLDB4RkUsMHhGQywweDU0LDB4QjYs
MHhFRSwweDk2LDB4RUUsMHhCMiwweEIyLDB4NTAsMHhEMCwKKyAgICAweEI2LDB4RUUsMHgxMyww
eERFLDB4NTgsMHhGOCwweEUwLDB4RjgsMHg5NiwweEVFLDB4MzQsMHhFNiwweDgzLDB4MEIsMHg4
OSwweEE1LAorICAgIDB4NzUsMHhFRSwweDE0LDB4REUsMHgzNiwweEJFLDB4REMsMHhGQywweDc1
LDB4RUUsMHg1NSwweEU2LDB4NzgsMHg3QiwweEVELDB4RkQsCisgICAgMHgzNCwweEU2LDB4OTIs
MHhDRCwweDVFLDB4NUUsMHg1QywweDU4LDB4OTIsMHhDRCwweDMxLDB4Q0QsMHgyQSwweDNBLDB4
QTgsMHgwOCwKKyAgICAweDM0LDB4RTYsMHg5MiwweENELDB4QUIsMHhBQiwweDI5LDB4MkIsMHg1
NSwweEU2LDB4RjMsMHhERCwweEJELDB4RjcsMHhGNSwweEFCLAorICAgIDB4MzQsMHhFNiwweEY0
LDB4REQsMHg4QSwweEVDLDB4Q0EsMHhFMiwweDM1LDB4RTYsMHhGNCwweERELDB4QjcsMHhGRiww
eEFGLDB4RUYsCisgICAgMHgxNCwweERFLDB4RjMsMHhERCwweEZBLDB4MjgsMHhCMCwweDdFLDB4
MzQsMHhFNiwweEY0LDB4REQsMHhGNywweERGLDB4NzcsMHhFRSwKKyAgICAweDg4LDB4NkEsMHhB
NSwweDUxLDB4NTgsMHg3OCwweEUwLDB4RjAsMHhFNiwweDU5LDB4ODQsMHg0MSwweDdBLDB4RjIs
MHhBRSwweEYwLAorICAgIDB4ODQsMHg0OSwweEUxLDB4MzAsMHgyRiwweEZFLDB4NUMsMHg1OCww
eEM1LDB4NTEsMHhDMSwweDMwLDB4MEIsMHhBQiwweEJGLDB4RDUsCisgICAgMHhFNSwweDUxLDB4
MDIsMHgzMSwweEEwLDB4OEIsMHhFQSwweDU3LDB4QzQsMHg0OSwweEUxLDB4MjgsMHhBMiwweDg4
LDB4QTgsMHg1RCwKKyAgICAweEE1LDB4NDksMHhDMiwweDMwLDB4OEEsMHgwOCwweEVBLDB4REYs
MHhDNSwweDQ5LDB4QTEsMHgyOCwweEFBLDB4MDIsMHhFQSwweDdGLAorICAgIDB4NjQsMHg0MSww
eEMxLDB4MjgsMHgwMCwweDAwLDB4QkYsMHhFOSwweDY0LDB4NDEsMHhFMiwweDMwLDB4MDAsMHgy
OCwweDVGLDB4RkYsCisgICAgMHhBNSwweDQ5LDB4MDIsMHgzMSwweEU4LDB4QjcsMHhCNSwweDBE
LDB4NjQsMHg0MSwweEMxLDB4MjgsMHhCNiwweDVDLDB4QjgsMHg4MCwKKyAgICAweDQzLDB4Mzks
MHhDMSwweDI4LDB4MkEsMHhERiwweEZGLDB4RUEsMHg0NCwweDM5LDB4QzIsMHgyOCwweDI4LDB4
RDcsMHg3RiwweEVGLAorICAgIDB4NjQsMHg0MSwweEExLDB4MjgsMHhGQiwweEZELDB4RkQsMHg4
MiwweDY0LDB4NDEsMHhDMiwweDI4LDB4NTcsMHg1RCwweEZGLDB4MkIsCisgICAgMHg2NCwweDQx
LDB4QzEsMHgyOCwweDc1LDB4RDUsMHhFRiwweDAyLDB4ODUsMHg0OSwweEMxLDB4MjgsMHg1NSww
eEQ1LDB4RkYsMHg4MiwKKyAgICAweEE2LDB4NDksMHhFMiwweDMwLDB4NUQsMHg1NSwweDVELDB4
OEEsMHhDNSwweDUxLDB4RTIsMHgzMCwweEY1LDB4OTUsMHg5NSwweDAyLAorICAgIDB4RTYsMHg1
MSwweEUyLDB4MzAsMHg1RSwweEZBLDB4RUEsMHgwMCwweDA2LDB4NTIsMHhDMSwweDMwLDB4NTUs
MHhENSwweEVCLDB4MDgsCisgICAgMHgwNiwweDVBLDB4QzEsMHgzMCwweDU1LDB4NzcsMHhBQSww
eDBBLDB4MDYsMHg1QSwweEMxLDB4MzAsMHg1NSwweEZELDB4QUEsMHgwMiwKKyAgICAweDA2LDB4
NjIsMHhDMSwweDMwLDB4NTUsMHhGRiwweEFBLDB4MDAsMHgwNiwweDYyLDB4MDIsMHg0MSwweEI1
LDB4RUYsMHgyQSwweEEwLAorICAgIDB4MjcsMHg3MiwweEE0LDB4NTksMHgzRCwweDJGLDB4MDcs
MHhBRiwweDI2LDB4NzIsMHhFNSwweDY5LDB4ODIsMHgwMiwweEU4LDB4RkUsCisgICAgMHgyNiww
eDcyLDB4RTUsMHg2OSwweEZBLDB4MjIsMHhBRiwweERELDB4NDYsMHg3MiwweEU2LDB4NjksMHg1
QSwweERDLDB4QTcsMHhGRCwKKyAgICAweDI2LDB4NkEsMHg4NSwweDU5LDB4NTYsMHhGOCwweEE4
LDB4QTIsMHgwNiwweDYyLDB4NjQsMHg0OSwweDdFLDB4QUEsMHgwQSwweDhDLAorICAgIDB4MDYs
MHg2MiwweDY0LDB4NDksMHg3NSwweEE4LDB4QjAsMHhCQSwweDA2LDB4NUEsMHg4NCwweDQ5LDB4
RjUsMHgyQSwweEFBLDB4QUEsCisgICAgMHgyNywweDVBLDB4QTUsMHg1MSwweERGLDB4MzIsMHhB
QiwweDU3LDB4MDcsMHg1QSwweDg0LDB4NDksMHhBRSwweEEyLDB4ODIsMHg3QiwKKyAgICAweEU2
LDB4NTksMHg4NCwweDQ5LDB4MkEsMHgwMiwweEEwLDB4NzcsMHgwNywweDVBLDB4ODQsMHg0OSww
eEE4LDB4MEEsMHhBQiwweERGLAorICAgIDB4MjcsMHg2MiwweDg0LDB4NDksMHg4QSwweEFCLDB4
RkYsMHhGNSwweDI3LDB4NjIsMHhBNCwweDUxLDB4MkEsMHhFQiwweDdFLDB4NTcsCisgICAgMHg0
NiwweDYyLDB4ODQsMHg0OSwweEJBLDB4QUIsMHg3RCwweDNELDB4NDcsMHg2MiwweDQ0LDB4NDks
MHhBQSwweEVBLDB4RkYsMHgwOCwKKyAgICAweEM4LDB4NzIsMHg4MywweDQ5LDB4RkYsMHhGRiww
eEY1LDB4MkEsMHgyQSwweDdCLDB4ODQsMHg1MSwweEZGLDB4NTcsMHg1RCwweDAyLAorICAgIDB4
QUMsMHg5MywweEE1LDB4NTEsMHhENywweDU1LDB4RDUsMHgyMiwweDBELDB4QTQsMHhDNSwweDUx
LDB4NTUsMHg1NSwweDc3LDB4MDIsCisgICAgMHg2RiwweEFDLDB4NDMsMHg0MSwweEY3LDB4NTUs
MHhCRiwweDAwLDB4RDEsMHhCQywweEM1LDB4NTEsMHg1NSwweDU1LDB4RkYsMHgwMCwKKyAgICAw
eDcyLDB4Q0QsMHhFNiwweDU5LDB4NTUsMHg1NSwweEZGLDB4MDAsMHg5MywweENELDB4RTUsMHg1
OSwweDU1LDB4NTUsMHhCQiwweDAwLAorICAgIDB4QjMsMHhENSwweDYzLDB4NDksMHg1NSwweEZG
LDB4QUEsMHgwMCwweEY0LDB4REQsMHhBNCwweDUxLDB4NTUsMHhGRCwweEFBLDB4MDAsCisgICAg
MHg1NiwweEVFLDB4QTQsMHg1MSwweDU1LDB4RkYsMHgyQSwweDAwLDB4NzYsMHhFRSwweDA2LDB4
NjIsMHg1NSwweEZGLDB4MkEsMHgwMCwKKyAgICAweEY0LDB4REQsMHhFNSwweDU5LDB4NTUsMHhB
QSwweDIwLDB4MDAsMHgxNSwweEU2LDB4QTgsMHg3MiwweDU1LDB4QUEsMHgwMCwweDAwLAorICAg
IDB4NTUsMHhFNiwweDJCLDB4ODMsMHg1NSwweEFBLDB4MDgsMHgwMCwweDU1LDB4RTYsMHg4Qyww
eDkzLDB4RDUsMHhBQSwweDAwLDB4MDAsCisgICAgMHgzNSwweEU2LDB4MkQsMHhBNCwweDU1LDB4
QUEsMHhBMCwweDgwLDB4NTIsMHhDRCwweENDLDB4OUIsMHg1NSwweEU4LDB4RTAsMHg3OCwKKyAg
ICAweEFDLDB4OTMsMHg0NiwweDZBLDB4RUEsMHg2MCwweDU4LDB4NTYsMHhBRiwweEI0LDB4MDYs
MHg2MiwweDJCLDB4MkYsMHgyNSwweEI1LAorICAgIDB4NzYsMHhFRSwweDEwLDB4QkQsMHhBRiww
eDJCLDB4MDksMHgwOSwweEI3LDB4RjYsMHhGNCwweERELDB4NTUsMHhBQSwweDIyLDB4MDIsCisg
ICAgMHhCNywweEY2LDB4MTUsMHhERSwweEY1LDB4RUEsMHgwMiwweDAwLDB4RDcsMHhGNiwweDM1
LDB4RTYsMHhGNSwweEFCLDB4MkEsMHgyQSwKKyAgICAweEQ3LDB4RjYsMHg1NSwweEU2LDB4NTcs
MHhBRSwweEEyLDB4MkEsMHhENywweEY2LDB4NzYsMHhFRSwweDc1LDB4QkUsMHgyQSwweDgyLAor
ICAgIDB4RDcsMHhGNiwweDc2LDB4RUUsMHhGRCwweEFBLDB4MjgsMHgwOCwweEQ3LDB4RjYsMHg5
NiwweEVFLDB4NzUsMHhERSwweEFBLDB4QTgsCisgICAgMHhENywweEY2LDB4NzYsMHhFRSwweEZE
LDB4QkYsMHhBQSwweDI4LDB4RDYsMHhGNiwweEI3LDB4RUUsMHg3NSwweEZELDB4NkEsMHhGQSwK
KyAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4QkYsMHhFRiwweEFBLDB4QUEsMHg5NiwweEY2LDB4
RDcsMHhFRSwweEFFLDB4QkYsMHhGNywweEZGLAorICAgIDB4RDcsMHhGNiwweDk2LDB4RUUsMHhE
NywweEZGLDB4QUEsMHgyQSwweEQ2LDB4RjYsMHhCNywweEVFLDB4NzcsMHhGRiwweEZBLDB4NkIs
CisgICAgMHhCNywweEY2LDB4QjYsMHhFRSwweEZGLDB4RkIsMHhFRiwweEZGLDB4RDcsMHhGNiww
eEI2LDB4RUUsMHhGRCwweDZGLDB4RUIsMHhFQSwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4
QTksMHhCOSwweEJGLDB4RkQsMHhENywweEY2LDB4QjYsMHhFRSwweEZGLDB4RUEsMHg2OCwweEZB
LAorICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHg1NSwweEJGLDB4NzcsMHhGRiwweEI2LDB4RjYs
MHhENywweEVFLDB4OEEsMHhDOCwweDgyLDB4MjIsCisgICAgMHhENywweEY2LDB4QjYsMHhFRSww
eDdCLDB4N0IsMHhGQiwweEJCLDB4RDcsMHhGNiwweDk2LDB4RUUsMHhCQSwweEJBLDB4QkUsMHhG
RSwKKyAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4MkIsMHgzMiwweDI4LDB4MkEsMHhGNywweEY2
LDB4QjYsMHhGNiwweDhFLDB4ODMsMHhBMCwweDcyLAorICAgIDB4RDYsMHhGNiwweDk2LDB4RUUs
MHhBOCwweEI4LDB4RkYsMHhENywweEI2LDB4RjYsMHg5NiwweEVFLDB4QTIsMHg2MCwweDdBLDB4
QjcsCisgICAgMHg5NiwweEVFLDB4NzUsMHhFRSwweDAwLDB4QkIsMHg1RiwweDVDLDB4QjcsMHhG
NiwweDM1LDB4RTYsMHhBMiwweEVBLDB4RUUsMHg1RiwKKyAgICAweDU1LDB4RTYsMHgxNCwweERF
LDB4QTgsMHhCQSwweEE3LDB4QUYsMHg5NiwweEVFLDB4RjMsMHhERCwweEQ3LDB4QkYsMHhCRiww
eDJGLAorICAgIDB4RDcsMHhGNiwweDM0LDB4RTYsMHhGNywweEZGLDB4MEEsMHgyMiwweEY3LDB4
RjYsMHg5NiwweEVFLDB4QkQsMHgwQiwweEEyLDB4OEEsCisgICAgMHhGNywweEY2LDB4RDcsMHhG
NiwweEE3LDB4QTcsMHhBMiwweEVCLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhFQSwweDZBLDB4RkIs
MHhFRCwKKyAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4RkEsMHhGQSwweEVBLDB4QTIsMHhENyww
eEY2LDB4OTYsMHhFRSwweDVFLDB4RUUsMHhDQSwweDgwLAorICAgIDB4QjYsMHhFRSwweDc2LDB4
RUUsMHg3QiwweEFCLDB4QUEsMHgwMCwweEI2LDB4RUUsMHg3NiwweEU2LDB4RDUsMHhGRSwweEZB
LDB4RkMsCisgICAgMHg5NiwweEVFLDB4NzYsMHhFNiwweEVGLDB4REUsMHg2RiwweEJBLDB4QjYs
MHhFRSwweDU2LDB4RTYsMHgyQSwweDJBLDB4MkIsMHgwQSwKKyAgICAweEY3LDB4RjYsMHg1NSww
eEU2LDB4NUUsMHg3QSwweEVBLDB4QUEsMHhENywweEY2LDB4MzQsMHhERSwweEI1LDB4RkYsMHhB
QSwweDgwLAorICAgIDB4QjYsMHhFRSwweDc1LDB4RTYsMHg1RCwweEFGLDB4QUIsMHhBMCwweEY3
LDB4RjYsMHg5NiwweEVFLDB4MkQsMHhCRCwweEU1LDB4QkYsCisgICAgMHgxOCwweEZGLDB4RDcs
MHhGNiwweEFBLDB4QkIsMHhCRCwweEI1LDB4MTgsMHhGNywweEQ3LDB4RjYsMHhGRCwweEJBLDB4
RUEsMHhBOCwKKyAgICAweEY4LDB4RjYsMHhENywweEY2LDB4NTYsMHhGOCwweDA4LDB4QUMsMHhG
OCwweEY2LDB4QjcsMHhFRSwweDU1LDB4N0EsMHhDMCwweDAwLAorICAgIDB4MTgsMHhGRiwweDk2
LDB4RTYsMHg4MiwweDBELDB4QjcsMHhGRSwweDE4LDB4RkYsMHhENywweEVFLDB4QUUsMHhBRSww
eEFFLDB4QUQsCisgICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweEY3LDB4RDcsMHhBRiwweEJELDB4
MTgsMHhGRiwweEQ3LDB4RjYsMHg1QSwweDdFLDB4N0UsMHg3QSwKKyAgICAweEQ3LDB4RjYsMHg5
NiwweEVFLDB4RkUsMHg3MiwweEVGLDB4RUIsMHhCNiwweEVFLDB4NzUsMHhFNiwweEFBLDB4QkEs
MHg3RSwweDdFLAorICAgIDB4OTYsMHhFRSwweDE0LDB4REUsMHhFMCwweEUwLDB4RTgsMHg3Qiww
eDk2LDB4RUUsMHhGMywweERELDB4MkQsMHhCRCwweEI1LDB4RDUsCisgICAgMHg3NSwweEVFLDB4
RjMsMHhERCwweEZDLDB4NzgsMHhGMCwweEY4LDB4NTUsMHhFNiwweDE0LDB4RTYsMHg4QSwweEEz
LDB4QTksMHhGRCwKKyAgICAweDM0LDB4RTYsMHg5MiwweENELDB4NzgsMHg3OCwweDcwLDB4Njgs
MHg5MiwweENELDB4NTEsMHhDNSwweDNFLDB4QjUsMHhENSwweDlFLAorICAgIDB4MTQsMHhFNiww
eDkyLDB4Q0QsMHgwQiwweDBCLDB4MjksMHgwRiwweDU0LDB4RTYsMHgxNCwweERFLDB4RUIsMHhE
RiwweDU3LDB4RDcsCisgICAgMHgzNCwweEU2LDB4RjQsMHhERCwweEMyLDB4QUEsMHhBRSwweDZF
LDB4MTQsMHhERSwweEIzLDB4RDUsMHgwQSwweEE4LDB4QUEsMHgyQiwKKyAgICAweDE0LDB4REUs
MHhEMywweEQ1LDB4MzcsMHgyRiwweDJBLDB4MjAsMHgzNCwweEU2LDB4RjQsMHhERCwweEVBLDB4
N0UsMHg1RiwweDc2LAorICAgIDB4OEIsMHg4QiwweDA2LDB4NUEsMHg3RSwweDdFLDB4NzgsMHg3
OCwweDA2LDB4NUEsMHhBNSwweDQ5LDB4REUsMHhGQSwweDU4LDB4NjAsCisgICAgMHhBNSwweDQ5
LDB4QzEsMHgzMCwweDY4LDB4RTgsMHg4MiwweDAwLDB4QTUsMHg0OSwweEExLDB4MjgsMHhENSww
eEZGLDB4QUEsMHgwOCwKKyAgICAweDQ3LDB4NjIsMHhFMSwweDMwLDB4NTUsMHhENSwweEFCLDB4
MEEsMHg4OCwweDZBLDB4RTEsMHgzMCwweDU1LDB4RkYsMHgyQSwweDAwLAorICAgIDB4RTksMHg3
MiwweDIzLDB4MzksMHg1NSwweEFCLDB4MEEsMHgyMiwweEU5LDB4NzIsMHg4NCwweDQxLDB4NTUs
MHhGQSwweEEwLDB4QTgsCisgICAgMHg2NywweDYyLDB4NjQsMHg0MSwweEY1LDB4QUEsMHgwMCww
eEEwLDB4ODcsMHg2MiwweDY0LDB4NDEsMHg1NSwweEZFLDB4QTgsMHhBQSwKKyAgICAweDY4LDB4
NjIsMHg0MywweDM5LDB4QkQsMHhBQSwweDIyLDB4QUEsMHgyNywweDVBLDB4ODQsMHg0OSwweDVF
LDB4QTAsMHhBOCwweEFBLAorICAgIDB4MDcsMHg1QSwweDg0LDB4NDEsMHg1NSwweDIwLDB4MDAs
MHhBMCwweDI3LDB4NUEsMHg4NCwweDQ5LDB4NTUsMHgwOCwweDAwLDB4RkIsCisgICAgMHgyNyww
eDVBLDB4ODQsMHg0OSwweEJELDB4QTAsMHg4OCwweEVGLDB4MDcsMHg1QSwweEE1LDB4NDksMHhB
RCwweDI4LDB4MjYsMHg3NywKKyAgICAweDI3LDB4NUEsMHg4NCwweDQ5LDB4QUEsMHgwMCwweEFG
LDB4NzcsMHg0NywweDVBLDB4ODUsMHg0OSwweEVCLDB4QTIsMHhGQiwweDU1LAorICAgIDB4MDcs
MHg1QSwweDY0LDB4NDksMHgyQSwweDAyLDB4QUEsMHg1NSwweDI3LDB4NjIsMHg4NCwweDQ5LDB4
QUEsMHhGMCwweDdGLDB4NTUsCisgICAgMHg0NywweDYyLDB4NjQsMHg0OSwweDAyLDB4RUEsMHg3
RiwweDU1LDB4MjcsMHg1QSwweDY1LDB4NDksMHgwMCwweEE4LDB4NTcsMHhENSwKKyAgICAweDI3
LDB4NjIsMHg4NSwweDQ5LDB4MEEsMHg4QSwweDU1LDB4NTUsMHgwNiwweDVBLDB4NjUsMHg0OSww
eDgwLDB4RTMsMHhERCwweDNBLAorICAgIDB4NDcsMHg2QSwweDY0LDB4NDksMHhFQSwweEZGLDB4
NTUsMHg4MiwweDQ3LDB4NkEsMHg4NCwweDUxLDB4RkUsMHg1RiwweEQ1LDB4RTgsCisgICAgMHgw
NiwweDZBLDB4QzUsMHg2MSwweEJCLDB4OUYsMHhBOSwweEE1LDB4MDYsMHg3MiwweEU1LDB4Njks
MHhENCwweDVGLDB4NUYsMHg1QSwKKyAgICAweDQ2LDB4N0EsMHhFNSwweDY5LDB4RjUsMHhGRCww
eEFGLDB4RjksMHgyNiwweDcyLDB4RTUsMHg2OSwweDZGLDB4RkYsMHhBMiwweDJBLAorICAgIDB4
ODgsMHg4MiwweEU2LDB4NjksMHg3RiwweEFELDB4MjksMHgyQiwweDRFLDB4QUMsMHhBNSwweDU5
LDB4NTUsMHg1NywweEFGLDB4MEEsCisgICAgMHg3MywweENELDB4RTYsMHg2MSwweDU1LDB4NTUs
MHhBQiwweDA4LDB4QjMsMHhENSwweDg0LDB4NTEsMHg1NSwweERELDB4QUEsMHgwMCwKKyAgICAw
eDE0LDB4REUsMHg4MywweDQ5LDB4NTUsMHhGRiwweEFBLDB4MDAsMHgzNCwweERFLDB4RTUsMHg1
OSwweDU1LDB4RkYsMHgyQSwweDAwLAorICAgIDB4OTUsMHhFRSwweDI2LDB4NjIsMHg1NSwweEZG
LDB4MkEsMHgwMCwweEYzLDB4REQsMHg0NiwweDYyLDB4NTUsMHhBQiwweDA4LDB4MDAsCisgICAg
MHgxNCwweERFLDB4ODgsMHg2QSwweDU1LDB4QUEsMHgwMCwweDAwLDB4MzQsMHhERSwweDBBLDB4
N0IsMHg1NSwweEFBLDB4MDAsMHgwMCwKKyAgICAweDU1LDB4RTYsMHg2QiwweDhCLDB4NUQsMHhB
QSwweDAwLDB4MDAsMHg3NSwweEU2LDB4MkQsMHg5QywweDU1LDB4QUEsMHgwMCwweDAwLAorICAg
IDB4OTYsMHhFRSwweDZFLDB4QUMsMHg1NSwweDJBLDB4MDAsMHgwMCwweDk2LDB4RUUsMHhGMCww
eEJDLDB4NTUsMHhBQSwweDAwLDB4MDAsCisgICAgMHhCNiwweEVFLDB4NTIsMHhDNSwweDc1LDB4
QUEsMHgyMiwweDgwLDB4QjYsMHhFRSwweDkzLDB4Q0QsMHhENSwweEFBLDB4MDAsMHgwMCwKKyAg
ICAweDk2LDB4RUUsMHhGNCwweERELDB4NTUsMHhCQiwweDAwLDB4MDAsMHhCNiwweEY2LDB4MTQs
MHhERSwweDU1LDB4QUUsMHhBQSwweDAwLAorICAgIDB4QjYsMHhGNiwweDE1LDB4REUsMHhGNyww
eEFBLDB4MjgsMHgwMCwweEI2LDB4RUUsMHgzNSwweEU2LDB4NUQsMHhBQSwweDI4LDB4MDAsCisg
ICAgMHhCNiwweEVFLDB4NTUsMHhFNiwweDdELDB4RUEsMHgyMiwweDAwLDB4QjYsMHhFRSwweDU1
LDB4RTYsMHhGRCwweDJBLDB4MDAsMHgwMCwKKyAgICAweEI2LDB4RUUsMHg3NiwweEVFLDB4NTcs
MHhCQiwweDIyLDB4MDAsMHhCNiwweEY2LDB4NTYsMHhFRSwweEY3LDB4QUYsMHgwQSwweDAwLAor
ICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHg3NSwweEVELDB4QjgsMHgwMCwweEI2LDB4RjYsMHg5
NiwweEVFLDB4RjUsMHhGRSwweEZBLDB4MDAsCisgICAgMHg5NiwweEY2LDB4QjYsMHhFRSwweEE4
LDB4RUUsMHhFRSwweEQ1LDB4QjYsMHhGNiwweDE0LDB4RTYsMHhBQSwweEUwLDB4NkEsMHg2MCwK
KyAgICAweDM0LDB4RTYsMHg0RSwweEFDLDB4QTAsMHhFOCwweDY4LDB4N0EsMHhBRiwweEJDLDB4
MDYsMHg2MiwweEUwLDB4RjgsMHg3RSwweDVFLAorICAgIDB4NjYsMHg3MiwweEU2LDB4NjEsMHhG
QywweDdCLDB4N0UsMHg1RSwweEU5LDB4ODIsMHhDNSwweDYxLDB4M0QsMHhCRCwweEI3LDB4RDUs
CisgICAgMHg3NSwweEVFLDB4OEIsMHg5MywweDBCLDB4MjksMHgwRCwweDJELDB4MTgsMHhGRiww
eDk2LDB4RUUsMHhGNSwweEZGLDB4QUIsMHgyQiwKKyAgICAweEY4LDB4RjYsMHhCNywweEY2LDB4
RDUsMHhCRiwweDJBLDB4MDgsMHhGNywweEY2LDB4QjcsMHhFRSwweEZELDB4QUEsMHgwMCwweDAw
LAorICAgIDB4MTcsMHhGRiwweEQ3LDB4RjYsMHg3RCwweEJGLDB4RUEsMHhBQSwweDE4LDB4Rjcs
MHhENywweEY2LDB4RDUsMHhCQSwweDNCLDB4QUEsCisgICAgMHhGNywweEY2LDB4QjYsMHhFRSww
eEVBLDB4RTgsMHhEMCwweEU4LDB4RjcsMHhGNiwweEI2LDB4RUUsMHhEQiwweEJCLDB4QUEsMHhB
QiwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4QkEsMHgyOCwweDBBLDB4MjIsMHhENywweEY2
LDB4QjcsMHhFRSwweDgyLDB4ODIsMHgwMCwweDAyLAorICAgIDB4RDcsMHhGNiwweEI3LDB4RUUs
MHhGMCwweDNBLDB4ODIsMHg4OSwweEQ3LDB4RjYsMHhCNywweEVFLDB4OUMsMHhCRSwweEFCLDB4
ODIsCisgICAgMHhENywweEY2LDB4QjcsMHhFRSwweDNGLDB4RkIsMHhBRSwweDBFLDB4RDcsMHhG
NiwweEI3LDB4RUUsMHhFQSwweEUyLDB4QUEsMHhBOCwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEVF
LDB4RUYsMHhBMiwweEEwLDB4QTAsMHhENywweEY2LDB4QjYsMHhFRSwweEYxLDB4RUIsMHhBOCww
eEFBLAorICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHhCRiwweEVCLDB4NEEsMHhBQSwweEQ2LDB4
RjYsMHhCNywweEVFLDB4RDcsMHhGNSwweEFGLDB4OEEsCisgICAgMHhENywweEY2LDB4QjYsMHhF
RSwweDdGLDB4RkIsMHhGQSwweEVBLDB4RDcsMHhGNiwweEI2LDB4RUUsMHhFMywweDhBLDB4N0Qs
MHgyRiwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4RUYsMHg2QSwweDJCLDB4MjksMHhGNyww
eEY2LDB4QjYsMHhFRSwweDVELDB4RkYsMHhCRiwweDJCLAorICAgIDB4RjcsMHhGNiwweEI2LDB4
RjYsMHgyQiwweDhBLDB4RTIsMHhGOCwweEQ3LDB4RjYsMHg3NSwweEVFLDB4RjAsMHhGOCwweDdF
LDB4RkUsCisgICAgMHg5NiwweEVFLDB4NzUsMHhFRSwweDI2LDB4QkYsMHg2NCwweDZELDB4QjYs
MHhGNiwweDc1LDB4RUUsMHhBQiwweDdCLDB4N0YsMHg1NSwKKyAgICAweDk2LDB4RUUsMHgzNCww
eEU2LDB4QzAsMHhFOCwweEVFLDB4N0EsMHg1NSwweEU2LDB4RjMsMHhERCwweEEwLDB4QTgsMHhG
QSwweDdFLAorICAgIDB4NTUsMHhFNiwweEYzLDB4REQsMHgyQSwweDJBLDB4MkIsMHgwOSwweEI3
LDB4RjYsMHg1NSwweEU2LDB4MkQsMHgyQiwweDBCLDB4OEIsCisgICAgMHhENywweEY2LDB4OTYs
MHhFRSwweDNBLDB4RTgsMHhFQSwweEZGLDB4RDcsMHhGNiwweDk2LDB4RUUsMHgwMiwweDNCLDB4
QUIsMHgyQiwKKyAgICAweDE3LDB4RjcsMHhCNywweEY2LDB4RkIsMHhGRiwweEZELDB4NTUsMHhG
NywweEY2LDB4RDcsMHhGNiwweEFELDB4QUQsMHg2NSwweDZELAorICAgIDB4RjcsMHhGNiwweDk3
LDB4RUUsMHgyOCwweDg4LDB4QUEsMHg4RSwweEY3LDB4RjYsMHhENywweEY2LDB4RDYsMHhGNiww
eDU1LDB4NzcsCisgICAgMHhENywweEY2LDB4QjcsMHhFRSwweDdFLDB4QjgsMHhBOCwweDA4LDB4
RDcsMHhGNiwweDk2LDB4RUUsMHhGQiwweEZBLDB4RUEsMHgwOCwKKyAgICAweDk2LDB4RjYsMHhC
NywweEVFLDB4QkIsMHhERCwweDdELDB4NTUsMHhCNywweEVFLDB4OTYsMHhFRSwweEY1LDB4N0Us
MHg2OCwweDgwLAorICAgIDB4QjYsMHhFRSwweDk2LDB4RUUsMHgwMywweEI1LDB4QjYsMHgyRSww
eEY3LDB4RjYsMHhCNiwweEVFLDB4N0YsMHhBRCwweDJELDB4QUQsCisgICAgMHhGNywweEY2LDB4
QjYsMHhFRSwweDU1LDB4NUEsMHg2QSwweDIwLDB4RDcsMHhGNiwweEI3LDB4RUUsMHhFNSwweEVE
LDB4RUYsMHg5OCwKKyAgICAweDE4LDB4RkYsMHhCNiwweEY2LDB4QkYsMHhBRCwweEJFLDB4QUIs
MHgzOCwweEZGLDB4RjgsMHhGNiwweEZGLDB4QUYsMHhBOSwweEFGLAorICAgIDB4MzksMHhGRiww
eEY4LDB4RjYsMHg1NywweDVFLDB4N0EsMHhGQSwweDE4LDB4RjcsMHhENywweEY2LDB4RkEsMHg3
QiwweEZBLDB4RjgsCisgICAgMHhGNywweEY2LDB4OTYsMHhFRSwweDY4LDB4ODAsMHgwMiwweDA4
LDB4RjcsMHhGNiwweEI2LDB4RUUsMHgyRCwweEI3LDB4RDYsMHg3RSwKKyAgICAweEY3LDB4RjYs
MHhENywweEY2LDB4MDIsMHgwQSwweDIwLDB4MjksMHgzOCwweEZGLDB4RDcsMHhGNiwweDdGLDB4
N0IsMHhGRiwweDdELAorICAgIDB4RDcsMHhGNiwweDk2LDB4RUUsMHhGRSwweEVDLDB4RkUsMHhC
OCwweEI2LDB4RUUsMHg1NSwweEU2LDB4RkEsMHg3OCwweEY4LDB4N0EsCisgICAgMHg3NSwweEU2
LDB4MTQsMHhERSwweDZBLDB4NkEsMHg2RSwweDY4LDB4MzQsMHhFNiwweDkyLDB4Q0QsMHhBRSww
eDNGLDB4OTUsMHhENSwKKyAgICAweDU1LDB4RTYsMHgxNCwweEU2LDB4NzIsMHg2MiwweDQyLDB4
NjMsMHhGNCwweEU1LDB4MzQsMHhERSwweDdGLDB4RkEsMHhGQSwweEZBLAorICAgIDB4NTUsMHhF
RSwweEIzLDB4RDUsMHg2MCwweDY4LDB4RTAsMHhFMiwweEIyLDB4RDUsMHg1MSwweEM1LDB4MkYs
MHhCNywweEY2LDB4RjYsCisgICAgMHgzNCwweEU2LDB4OTIsMHhDRCwweDJGLDB4MEYsMHhBOSww
eDI5LDB4MzQsMHhFNiwweDE0LDB4REUsMHgwMiwweDg4LDB4MEIsMHhGQSwKKyAgICAweDM1LDB4
RTYsMHhGNCwweERELDB4RkEsMHhGRSwweDlFLDB4QjcsMHgxNCwweERFLDB4RDMsMHhERCwweDNF
LDB4RkMsMHhFRSwweEJBLAorICAgIDB4MTQsMHhERSwweEQzLDB4REQsMHgyOCwweEJBLDB4OUYs
MHhFNywweDE0LDB4REUsMHg5MiwweENELDB4QTgsMHhBOCwweEVBLDB4NjAsCisgICAgMHg1MSww
eEM1LDB4ODcsMHg2QSwweDVFLDB4NzgsMHhFMCwweDgwLDB4Q0IsMHg5MywweEM1LDB4NTEsMHg1
NywweDU3LDB4NUUsMHhFOCwKKyAgICAweEU1LDB4NTksMHg2MywweDQ5LDB4QUUsMHhBRiwweEY3
LDB4QTAsMHhFNSwweDU5LDB4NDIsMHg0MSwweDIyLDB4MEEsMHhGRiwweERGLAorICAgIDB4NDcs
MHg2MiwweDQzLDB4NDEsMHgwMCwweEFFLDB4RkYsMHhFNywweDY3LDB4NjIsMHg0MywweDQxLDB4
MDAsMHhCQSwweDdGLDB4RkEsCisgICAgMHg4OCwweDZBLDB4ODQsMHg0OSwweDIwLDB4RkYsMHg1
NSwweEZGLDB4NjcsMHg2QSwweDg0LDB4NDksMHg4QSwweDZGLDB4NzUsMHgyMCwKKyAgICAweEM5
LDB4N0EsMHg4NCwweDQ5LDB4RkYsMHg1RCwweDU1LDB4MDIsMHg2QiwweDhCLDB4ODQsMHg0OSww
eDdGLDB4NTUsMHg1NSwweDAyLAorICAgIDB4RUQsMHg5QiwweDg0LDB4NDksMHg1NSwweDU1LDB4
RkYsMHgwMCwweDZFLDB4QUMsMHhBNSwweDQ5LDB4NTUsMHg1NSwweEZGLDB4MDAsCisgICAgMHhE
MCwweEI0LDB4QTUsMHg1MSwweDU1LDB4NTUsMHhGRiwweDAwLDB4MzIsMHhCRCwweEE1LDB4NTEs
MHg1NSwweDU1LDB4RUYsMHgwMCwKKyAgICAweDMyLDB4QzUsMHhBNSwweDUxLDB4NTUsMHg1NSww
eEFBLDB4MDAsMHg5MiwweENELDB4QTUsMHg0OSwweDU1LDB4RjUsMHhBQSwweDAwLAorICAgIDB4
RjMsMHhERCwweDg0LDB4NDksMHg1NSwweEZGLDB4QUEsMHgwMCwweDM0LDB4RTYsMHhBNSwweDUx
LDB4NTUsMHhGRiwweEFBLDB4MDAsCisgICAgMHgxNCwweERFLDB4MDYsMHg1QSwweDU1LDB4RkYs
MHg4QSwweDAwLDB4QjMsMHhENSwweEM1LDB4NTEsMHg1NSwweEFBLDB4MDAsMHgwMCwKKyAgICAw
eEY0LDB4REQsMHg2NywweDZBLDB4NTUsMHhBQSwweDAwLDB4MDAsMHgxNCwweERFLDB4RTksMHg3
MiwweDU1LDB4QUEsMHgwMCwweDAwLAorICAgIDB4MzUsMHhERSwweDZCLDB4OEIsMHg1NSwweEFB
LDB4MDgsMHgwMCwweDM1LDB4RTYsMHhBRCwweDkzLDB4RjUsMHhBQSwweDAwLDB4MDAsCisgICAg
MHgzNSwweEU2LDB4NzAsMHhBQywweDU1LDB4QUEsMHgwMCwweDAwLDB4MzUsMHhFNiwweEE4LDB4
N0EsMHg3RSwweEZBLDB4RTAsMHhFMCwKKyAgICAweDg3LDB4N0EsMHg4NCwweDU5LDB4RjcsMHhG
NiwweDU0LDB4NTQsMHhFNSwweDY5LDB4QTQsMHg2MSwweDIwLDB4MjIsMHgyMywweDNELAorICAg
IDB4MDUsMHg3MiwweEM1LDB4NjksMHhCRSwweEJGLDB4M0UsMHgzNywweDI2LDB4NzIsMHhFNSww
eDY5LDB4RkEsMHhCQSwweEI4LDB4RDcsCisgICAgMHg4OCwweDdBLDB4MDYsMHg3MiwweDJELDB4
QkQsMHhCNSwweEQ1LDB4NkUsMHhCNCwweDY3LDB4NzIsMHgwQiwweDJELDB4QjUsMHhGNSwKKyAg
ICAweDM1LDB4RTYsMHgwQywweEFDLDB4MkEsMHgwQiwweDJGLDB4QUQsMHg5NiwweEY2LDB4MzUs
MHhFNiwweEI1LDB4QUEsMHhBQiwweDA5LAorICAgIDB4QjYsMHhGNiwweDU1LDB4RTYsMHhERCww
eEZCLDB4QUIsMHgyQSwweEI2LDB4RjYsMHg3NSwweEVFLDB4NTUsMHhGRiwweEVBLDB4QUEsCisg
ICAgMHg5NiwweEY2LDB4NzUsMHhFNiwweDVGLDB4QUUsMHg4QiwweDA4LDB4QjYsMHhGNiwweDc1
LDB4RTYsMHhENywweEVGLDB4MkEsMHgyMiwKKyAgICAweEI2LDB4RjYsMHg5NiwweEU2LDB4NTcs
MHhBQiwweEFFLDB4QTIsMHhCNiwweEY2LDB4NzUsMHhFRSwweEZELDB4RUUsMHhCMCwweDNBLAor
ICAgIDB4QjcsMHhGNiwweDc1LDB4RUUsMHhCRCwweEJCLDB4QUEsMHhBQSwweEI2LDB4RjYsMHg5
NiwweEVFLDB4N0UsMHhDQSwweDAzLDB4MEYsCisgICAgMHg5NiwweEY2LDB4QjYsMHhFRSwweDc2
LDB4NUYsMHg3NywweEZGLDB4RDcsMHhGNiwweDk2LDB4RUUsMHhENSwweEZGLDB4RkYsMHhCQywK
KyAgICAweEI2LDB4RjYsMHg5NSwweEVFLDB4RUYsMHhBQSwweDBBLDB4MEEsMHg5NiwweEZFLDB4
QjYsMHhFRSwweDdELDB4RjcsMHhERiwweEZGLAorICAgIDB4QjcsMHhGNiwweEI2LDB4RUUsMHhG
RiwweEJFLDB4RUIsMHhBQSwweEQ2LDB4RjYsMHg5NSwweEVFLDB4RkIsMHhBQSwweDI5LDB4QUYs
CisgICAgMHhENywweEY2LDB4QjYsMHhFRSwweDdELDB4QUEsMHgwMCwweDAyLDB4RjYsMHhGNiww
eEQ3LDB4RjYsMHg1NSwweDU3LDB4N0YsMHhFQiwKKyAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4
RDcsMHhBQiwweDgyLDB4MDAsMHhGNywweEY2LDB4QjcsMHhFRSwweEY3LDB4MkEsMHgyMiwweDgw
LAorICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHhGQiwweEVBLDB4OEEsMHgyMiwweEY3LDB4RjYs
MHhCNiwweEVFLDB4QkYsMHgyQSwweDAwLDB4MDAsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiww
eDU1LDB4NTgsMHhFMiwweEEwLDB4RjgsMHhGRSwweEI2LDB4RjYsMHhERCwweEFBLDB4MkIsMHhF
QSwKKyAgICAweEQ3LDB4RjYsMHg3NSwweEVFLDB4ODgsMHg4MCwweEUwLDB4NjAsMHhCNiwweEY2
LDB4RUYsMHhCQywweEEwLDB4RTgsMHhFQSwweDdBLAorICAgIDB4NTEsMHhDRCwweDg3LDB4N0Es
MHhFMCwweEU4LDB4NUEsMHg1RSwweEM4LDB4N0EsMHgyNiwweDZBLDB4N0MsMHhGRiwweEY1LDB4
RjUsCisgICAgMHg0NiwweDcyLDB4RTUsMHg2MSwweDdDLDB4QzAsMHg4OCwweDYwLDB4NjYsMHg3
MiwweEM1LDB4NjEsMHgxNSwweDk1LDB4OUUsMHhCRiwKKyAgICAweDc1LDB4RUUsMHg4QSwweDkz
LDB4MkQsMHgyRCwweDJELDB4MkQsMHgxOCwweEZGLDB4OTYsMHhGNiwweDI5LDB4MkIsMHhBQiww
eDhCLAorICAgIDB4RjgsMHhGRSwweDE3LDB4RjcsMHhBQSwweEFBLDB4QUEsMHhFMiwweDE4LDB4
RkYsMHhGNywweEY2LDB4RDcsMHhENSwweEFGLDB4QkUsCisgICAgMHgxOCwweEZGLDB4RjcsMHhG
NiwweEFGLDB4RkYsMHhFRSwweEI5LDB4MTgsMHhGRiwweEY3LDB4RjYsMHg3RSwweEFBLDB4QUEs
MHg2RSwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4NzAsMHhFOCwweEUyLDB4QTgsMHhGNyww
eEY2LDB4RDcsMHhGNiwweERCLDB4REEsMHg1RCwweEQ1LAorICAgIDB4RjcsMHhGNiwweEQ3LDB4
RjYsMHg1NSwweDVELDB4NkIsMHg3QiwweEY2LDB4RjYsMHhENywweEY2LDB4NTUsMHg1RiwweDdF
LDB4N0YsCisgICAgMHhCNywweEY2LDB4RDYsMHhFRSwweEJBLDB4RUEsMHhBQSwweEZCLDB4RDcs
MHhGNiwweEI3LDB4RUUsMHg4QSwweDAyLDB4MDIsMHhDOCwKKyAgICAweEQ3LDB4RjYsMHhCNiww
eEVFLDB4QUEsMHgyMiwweDI4LDB4MkYsMHhENywweEY2LDB4QjcsMHhFRSwweDgyLDB4MDIsMHgy
OCwweDJFLAorICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHg4MCwweEE4LDB4M0UsMHhBMywweEQ3
LDB4RjYsMHhGNywweEVFLDB4MDAsMHgwQSwweDgyLDB4ODIsCisgICAgMHhGNywweEY2LDB4QjYs
MHhFRSwweEZGLDB4REEsMHhGRSwweEJBLDB4RDcsMHhGNiwweEI2LDB4RUUsMHg4QiwweDhBLDB4
QTIsMHgyOCwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4RTIsMHhFQSwweEJFLDB4QkUsMHhG
NywweEY2LDB4QjYsMHhFRSwweEY3LDB4RkYsMHhFQSwweEVBLAorICAgIDB4RjcsMHhGNiwweEQ3
LDB4RjYsMHg1NSwweDVGLDB4QkQsMHgyRCwweDE4LDB4RkYsMHhENywweEY2LDB4QUQsMHhFOSww
eEZCLDB4NUUsCisgICAgMHhGNywweEY2LDB4OTYsMHhFRSwweEU4LDB4RkEsMHhERSwweDdFLDB4
QjYsMHhGNiwweDk2LDB4RUUsMHhERSwweDdELDB4NzcsMHg3RiwKKyAgICAweDk2LDB4RUUsMHg3
NSwweEVFLDB4NzIsMHhGQSwweDVFLDB4NTQsMHg5NiwweEVFLDB4MTQsMHhFNiwweEVBLDB4Rjgs
MHg3QSwweDVBLAorICAgIDB4NTUsMHhFRSwweEY0LDB4REQsMHhBMCwweEEyLDB4RUEsMHhGRiww
eDE0LDB4REUsMHg3MSwweENELDB4ODAsMHhFOCwweDdDLDB4RDYsCisgICAgMHg1NSwweEU2LDB4
QjIsMHhENSwweDAzLDB4QUQsMHhCRCwweDhCLDB4NzYsMHhFRSwweDE0LDB4REUsMHgwMCwweEVC
LDB4NTUsMHhGMiwKKyAgICAweDk2LDB4RUUsMHhCMiwweEQ1LDB4MDAsMHgyQSwweEQ3LDB4NUYs
MHg5NiwweEY2LDB4RDMsMHhENSwweDAwLDB4MDAsMHhBRiwweEQ1LAorICAgIDB4QjcsMHhGNiww
eDE0LDB4REUsMHgwOCwweDAyLDB4QUEsMHhGNSwweEQ3LDB4RjYsMHg1NSwweEU2LDB4MDAsMHg4
OCwweEVCLDB4RjcsCisgICAgMHhENywweEY2LDB4OTYsMHhFRSwweDBBLDB4MEEsMHgyRCwweEQ1
LDB4RjcsMHhGNiwweEI2LDB4RjYsMHhFRSwweDBBLDB4MkIsMHhCRCwKKyAgICAweEY3LDB4RjYs
MHhENywweEY2LDB4NzUsMHhENiwweEI3LDB4MjksMHhGOCwweEY2LDB4RDcsMHhGNiwweDU1LDB4
RkQsMHhERiwweEU3LAorICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHg1RSwweDU4LDB4RjgsMHg3
MCwweDk3LDB4RjYsMHhCNiwweEVFLDB4REYsMHhGRiwweEZGLDB4NUYsCisgICAgMHhENywweEY2
LDB4OTYsMHhFRSwweDJFLDB4QTMsMHhGRSwweEZBLDB4RDcsMHhGNiwweEI3LDB4RUUsMHgwOCww
eDJBLDB4QUYsMHhGNSwKKyAgICAweEY3LDB4RjYsMHhCNywweEVFLDB4ODIsMHhBQSwweEFGLDB4
MEIsMHhGNywweEY2LDB4RDcsMHhGNiwweEVBLDB4MDgsMHgyMCwweDgyLAorICAgIDB4MTgsMHhG
NywweEQ4LDB4RjYsMHgzRCwweEFGLDB4QkYsMHhFQiwweDM4LDB4RkYsMHhGNywweEY2LDB4QUIs
MHgyRSwweEFCLDB4QUYsCisgICAgMHgzOSwweEZGLDB4MTgsMHhGNywweDdGLDB4RUEsMHhFQSww
eDIyLDB4MzgsMHhGRiwweEY4LDB4RjYsMHg1RiwweERFLDB4RkYsMHg2OCwKKyAgICAweDE4LDB4
RjcsMHhENywweEY2LDB4QkYsMHhGQSwweEVBLDB4RkUsMHhGNywweEY2LDB4QjcsMHhFRSwweEU4
LDB4QTAsMHhBMiwweEZBLAorICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHgwRCwweDI1LDB4MTcs
MHhENywweEY3LDB4RjYsMHg5NywweEVFLDB4QTAsMHg4OCwweEE4LDB4RUEsCisgICAgMHhENyww
eEY2LDB4OTYsMHhFRSwweEVBLDB4RkEsMHg2MCwweEUyLDB4OTYsMHhFRSwweDU1LDB4RTYsMHhF
MCwweEUwLDB4RTAsMHhFMCwKKyAgICAweDU1LDB4RTYsMHhEMywweEQ1LDB4NjAsMHhFQSwweEYy
LDB4RjAsMHhCMywweEQ1LDB4MEYsMHhCRCwweDJFLDB4MkUsMHgzRSwweDE2LAorICAgIDB4NTUs
MHhFNiwweEYzLDB4REQsMHhBMywweDBCLDB4MDksMHhBOSwweDE0LDB4REUsMHhCMywweERELDB4
MEEsMHgwQSwweEE4LDB4QkEsCisgICAgMHgzNCwweEU2LDB4RjQsMHhERCwweDgyLDB4RUEsMHhF
QiwweDhCLDB4RDMsMHhENSwweDMwLDB4QzUsMHhENiwweERDLDB4REMsMHg1QywKKyAgICAweDE0
LDB4RTYsMHg3MSwweENELDB4MkIsMHgyOSwweDJELDB4MEYsMHgzNCwweEU2LDB4MTQsMHhERSww
eEQ0LDB4RjUsMHg5NSwweDU1LAorICAgIDB4MzUsMHhFNiwweEYzLDB4REQsMHhFRiwweEVFLDB4
REEsMHhFMCwweDE0LDB4REUsMHhGMywweERELDB4RkEsMHgwMCwweDI4LDB4NTQsCisgICAgMHgx
NCwweERFLDB4RDMsMHhERCwweEFBLDB4QkMsMHhGRSwweDNBLDB4RjMsMHhERCwweDEwLDB4QzUs
MHhDMCwweDYwLDB4NjAsMHg2MCwKKyAgICAweEI2LDB4RUUsMHg5MiwweENELDB4N0YsMHhGQSww
eEE4LDB4ODAsMHg1NSwweEU2LDB4MkQsMHhBNCwweDVFLDB4QUEsMHgyMCwweDAwLAorICAgIDB4
MTQsMHhERSwweDI5LDB4N0IsMHg1NSwweEFBLDB4ODAsMHgwMCwweEY0LDB4REQsMHhDOCwweDcy
LDB4NTUsMHhBQSwweDAwLDB4MDAsCisgICAgMHgxNCwweERFLDB4MDksMHg3QiwweDU1LDB4QUEs
MHgwMiwweDAwLDB4MTUsMHhERSwweDhCLDB4OEIsMHg1NSwweEFBLDB4MDAsMHgwMCwKKyAgICAw
eDM1LDB4RTYsMHgwRCwweDlDLDB4NTUsMHhBQSwweDAwLDB4MDAsMHg1NSwweEU2LDB4NzAsMHhB
QywweDU1LDB4QUEsMHgwOCwweDAwLAorICAgIDB4NTUsMHhFNiwweEYxLDB4QkMsMHg1NSwweEFB
LDB4MEEsMHgwMCwweDc2LDB4RTYsMHgzMiwweEM1LDB4NTcsMHhBQiwweDI4LDB4MDAsCisgICAg
MHg3NiwweEVFLDB4NzIsMHhDRCwweEQ1LDB4QkEsMHgwOCwweDAwLDB4NzUsMHhFRSwweEQzLDB4
RDUsMHg1NSwweEJCLDB4MjAsMHgwMCwKKyAgICAweDc1LDB4RUUsMHhEMywweEQ1LDB4NTUsMHhF
QSwweDAwLDB4MDAsMHg3NSwweEVFLDB4RDQsMHhENSwweERELDB4QUEsMHg4MiwweDAwLAorICAg
IDB4NzYsMHhFRSwweEY0LDB4REQsMHg3NSwweDgyLDB4MDIsMHgwMCwweDk2LDB4RjYsMHgxNCww
eERFLDB4NTcsMHhFRSwweEFBLDB4MEEsCisgICAgMHg5NSwweEVFLDB4MzQsMHhFNiwweDU1LDB4
QkIsMHhBQSwweDAwLDB4OTYsMHhFRSwweDM0LDB4RTYsMHg3RiwweEFFLDB4OEEsMHgwOCwKKyAg
ICAweDk2LDB4RUUsMHgzNCwweEU2LDB4RDcsMHhFQSwweEFBLDB4ODgsMHg5NiwweEVFLDB4NTUs
MHhFNiwweEZELDB4QUYsMHhBOCwweEE4LAorICAgIDB4OTYsMHhFRSwweDM0LDB4RTYsMHhGRCww
eEE4LDB4QTgsMHgwOCwweEI3LDB4RjYsMHg1NSwweEU2LDB4REQsMHhGRiwweEJGLDB4MkIsCisg
ICAgMHg5NiwweEVFLDB4NzUsMHhFRSwweEZELDB4OEIsMHgyMywweDAwLDB4OTYsMHhFRSwweDc2
LDB4RUUsMHg1NSwweEYwLDB4MDAsMHgwMCwKKyAgICAweEI2LDB4RjYsMHg3NiwweEVFLDB4RjUs
MHhGRCwweEJCLDB4QUQsMHhCNiwweEY2LDB4NEQsMHhBQywweDc4LDB4NkEsMHg3OCwweDY4LAor
ICAgIDB4QzgsMHg4MiwweDgzLDB4NjEsMHg1NCwweEQ4LDB4N0MsMHhGQywweEU1LDB4NjksMHg4
NCwweDYxLDB4M0IsMHg1NywweEZGLDB4QkYsCisgICAgMHgyNiwweDcyLDB4ODQsMHg2MSwweDJG
LDB4MjcsMHhCRiwweEJGLDB4MjYsMHg3MiwweEU1LDB4NjksMHhERiwweEYwLDB4QTgsMHgwMiwK
KyAgICAweDI3LDB4NzIsMHhBNCwweDY5LDB4MjAsMHgyQiwweDJFLDB4OTYsMHhFOCwweDgyLDB4
MjYsMHg3MiwweDNELDB4RDUsMHhENSwweDU1LAorICAgIDB4NTEsMHhDRCwweEE4LDB4ODIsMHgw
QiwweDJELDB4QkQsMHhCNSwweDk2LDB4RjYsMHgzMSwweENELDB4MEEsMHgwQiwweDJGLDB4M0Qs
CisgICAgMHg5NiwweEY2LDB4QjYsMHhFRSwweEEzLDB4QTgsMHhBMCwweDgwLDB4QjYsMHhGNiww
eDk2LDB4RUUsMHhFRiwweDJCLDB4QkEsMHhBOCwKKyAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4
MkYsMHhFOCwweDJCLDB4QTcsMHhCNiwweEY2LDB4OTYsMHhFRSwweEJGLDB4QkYsMHhGQSwweEE4
LAorICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHhCOCwweEVBLDB4QUEsMHgyRiwweEI2LDB4RjYs
MHg5NiwweEVFLDB4RjMsMHhCQiwweEZCLDB4QkEsCisgICAgMHhCNiwweEY2LDB4OTYsMHhFRSww
eEVBLDB4RkEsMHhGRSwweDlGLDB4QjcsMHhGNiwweDk2LDB4RUUsMHgwNywweEJCLDB4RTgsMHg4
QSwKKyAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4ODgsMHhBQSwweEZGLDB4QUIsMHhCNiwweEY2
LDB4OTYsMHhFRSwweDBFLDB4MEYsMHg4MiwweDgyLAorICAgIDB4QjYsMHhGNiwweDk2LDB4RUUs
MHhFQSwweEFCLDB4QkEsMHhBOCwweEI2LDB4RjYsMHg5NywweEVFLDB4OEIsMHhBMCwweDBBLDB4
MjIsCisgICAgMHhCNiwweEY2LDB4RDcsMHhFRSwweDA4LDB4QTAsMHhBOCwweEU4LDB4RDcsMHhG
NiwweEI2LDB4RUUsMHhERCwweDFELDB4QUIsMHgyMiwKKyAgICAweEY3LDB4RjYsMHhENywweEY2
LDB4QjUsMHgyNSwweDIzLDB4MEEsMHhENywweEZFLDB4RjcsMHhGNiwweERELDB4NzcsMHg1RCww
eEY1LAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg4OCwweEFBLDB4QTIsMHgwOCwweDE3LDB4
RkYsMHhENywweEY2LDB4NkUsMHg2RSwweEZCLDB4RUYsCisgICAgMHgxNywweEZGLDB4RDcsMHhG
NiwweEVELDB4QUQsMHhCRiwweEJGLDB4RjcsMHhGRSwweEY3LDB4RjYsMHhGRiwweERGLDB4Nzcs
MHhGNywKKyAgICAweEQ3LDB4RkUsMHhGNywweEY2LDB4RjcsMHhFRCwweEZGLDB4QUIsMHhGNyww
eEZFLDB4QjYsMHhGNiwweEE4LDB4QUEsMHhFQSwweDdBLAorICAgIDB4QjcsMHhGNiwweDkyLDB4
RDUsMHg4MCwweEUwLDB4RTgsMHg3QSwweEQyLDB4REQsMHhBNywweDgyLDB4QTAsMHhFOCwweEU4
LDB4N0EsCisgICAgMHg4QSwweDkzLDB4MjYsMHg3MiwweDdDLDB4NUUsMHhGRiwweDdELDB4QTcs
MHg4MiwweDI2LDB4NzIsMHhGNiwweEU3LDB4QkEsMHhBQSwKKyAgICAweEE3LDB4N0EsMHgwNSww
eDZBLDB4N0YsMHhGRSwweEVBLDB4Q0UsMHg4NywweDdBLDB4RTQsMHg2MSwweEY3LDB4OTUsMHgz
NywweDM3LAorICAgIDB4NzUsMHhFRSwweENDLDB4QTMsMHgyRCwweDJELDB4MkQsMHgyOSwweEY3
LDB4RjYsMHg5NiwweEY2LDB4MDMsMHgwOSwweDBCLDB4MDIsCisgICAgMHgxOCwweEZGLDB4Rjcs
MHhGNiwweEY3LDB4RTUsMHhGRiwweEI2LDB4MTcsMHhGRiwweEY3LDB4RjYsMHhFRiwweEJELDB4
RUQsMHg5RiwKKyAgICAweEY4LDB4RkUsMHgxNywweEY3LDB4N0YsMHg3NywweEZGLDB4RkYsMHgx
OCwweEZGLDB4RjcsMHhGNiwweEY4LDB4MjgsMHhGMCwweDRBLAorICAgIDB4MTcsMHhGRiwweEQ3
LDB4RjYsMHhGQSwweEVBLDB4QUEsMHg3QSwweEY3LDB4RjYsMHhENywweEY2LDB4NzcsMHhERCww
eDNELDB4MkQsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEVGLDB4REQsMHhGRCwweEZBLDB4
RjcsMHhGNiwweEQ3LDB4RjYsMHhENiwweEZGLDB4RkIsMHhCQiwKKyAgICAweEQ3LDB4RjYsMHhC
NiwweEVFLDB4MEEsMHgwMCwweDg4LDB4MjAsMHhENywweEY2LDB4RjYsMHhFRSwweDAyLDB4MjAs
MHgyOCwweDI4LAorICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHhCRCwweEFBLDB4MkEsMHhBRSww
eEQ3LDB4RjYsMHhCNiwweEVFLDB4MDgsMHhBMiwweDgwLDB4MDgsCisgICAgMHhENywweEY2LDB4
QjcsMHhFRSwweDA4LDB4QkUsMHgyMCwweDgwLDB4RDcsMHhGNiwweEQ2LDB4RUUsMHhBOCwweEFB
LDB4QUEsMHhBQSwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4MjAsMHhBOCwweEE4LDB4MjAs
MHhENywweEY2LDB4RjcsMHhFRSwweDIwLDB4MjAsMHhFOCwweEEwLAorICAgIDB4RjcsMHhGNiww
eEI2LDB4RUUsMHhCRSwweEZBLDB4QUUsMHhCRSwweEY3LDB4RjYsMHhENywweEY2LDB4NTUsMHg1
NSwweEY1LDB4MkQsCisgICAgMHhGNywweEZFLDB4RDcsMHhFRSwweEFCLDB4OEEsMHhFMCwweDdB
LDB4RjcsMHhGNiwweEI2LDB4RjYsMHhFMCwweDdBLDB4NUUsMHg1NywKKyAgICAweEQ2LDB4RjYs
MHg5NiwweEVFLDB4NUUsMHhERSwweDVFLDB4NUYsMHg3NSwweEY2LDB4OTYsMHhFRSwweDU1LDB4
RjcsMHhGRCwweEU3LAorICAgIDB4OTYsMHhFRSwweDM0LDB4RTYsMHhBQSwweEJBLDB4RjAsMHg3
QSwweDU1LDB4RTYsMHhGMywweERELDB4N0MsMHg3QywweDdBLDB4NUUsCisgICAgMHhGMywweERE
LDB4OTIsMHhENSwweEMyLDB4RkEsMHg2OCwweEYyLDB4MzQsMHhFNiwweDUxLDB4Q0QsMHhGNyww
eDlELDB4MjcsMHgwQiwKKyAgICAweEI2LDB4RjYsMHgxMywweERFLDB4QUQsMHgyQiwweDBBLDB4
MDIsMHhCNiwweEY2LDB4NzYsMHhFRSwweDdFLDB4MDgsMHgwOCwweDIwLAorICAgIDB4OTYsMHhF
RSwweEY0LDB4REQsMHg3RSwweEY4LDB4ODAsMHgwMCwweDU1LDB4RUUsMHhEMywweEQ1LDB4NTcs
MHhGQSwweDhBLDB4MDAsCisgICAgMHg1NSwweEVFLDB4RjMsMHhERCwweEZELDB4RkQsMHgyQyww
eDAyLDB4NzUsMHhFRSwweDE0LDB4REUsMHhBQiwweEI1LDB4RkEsMHgwQSwKKyAgICAweDk2LDB4
RUUsMHgzNCwweEU2LDB4MkIsMHhCRCwweEY1LDB4N0EsMHhENiwweEY2LDB4NTUsMHhFNiwweDBB
LDB4QUYsMHhFRCwweEY1LAorICAgIDB4RjgsMHhGNiwweDk2LDB4RUUsMHgwQSwweEFCLDB4QkYs
MHhENSwweEY3LDB4RjYsMHhCNiwweEY2LDB4QTIsMHhBQSwweDJCLDB4QTcsCisgICAgMHhGOCww
eEY2LDB4QjYsMHhFRSwweDdCLDB4RkEsMHhFOCwweEFBLDB4RDcsMHhGNiwweEI3LDB4RUUsMHhF
NywweEFGLDB4MjIsMHgwMiwKKyAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4RkUsMHg2QSwweEYw
LDB4MjAsMHhENywweEY2LDB4OTYsMHhFRSwweDhELDB4QUQsMHhGNywweEJFLAorICAgIDB4Rjcs
MHhGNiwweEI3LDB4RUUsMHgyRiwweEJCLDB4QUIsMHhBQiwweDE4LDB4RkYsMHhENywweEY2LDB4
RkYsMHhCRiwweDJCLDB4QUUsCisgICAgMHgxOCwweEY3LDB4RjgsMHhGNiwweEFELDB4RDYsMHhE
NiwweEVFLDB4MTgsMHhGNywweEY4LDB4RjYsMHgyNywweDk1LDB4RDUsMHhGNywKKyAgICAweDM5
LDB4RkYsMHhGNywweEY2LDB4MDIsMHgyQiwweDBCLDB4QjcsMHgzOCwweEZGLDB4RjgsMHhGNiww
eEUwLDB4QTgsMHgyMCwweDAyLAorICAgIDB4MTgsMHhGRiwweEQ3LDB4RUUsMHhGRSwweEY4LDB4
RkMsMHg3OCwweEI3LDB4RjYsMHhENywweEVFLDB4RkQsMHhEQiwweEZGLDB4QkIsCisgICAgMHhC
NiwweEVFLDB4NzYsMHhFNiwweDI4LDB4QjgsMHg1OCwweDU4LDB4RDcsMHhGNiwweDk2LDB4RUUs
MHg4MCwweDhBLDB4MDksMHgwRCwKKyAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4RTIsMHhFMiww
eDZBLDB4N0EsMHhCNiwweEVFLDB4NTUsMHhFNiwweDYyLDB4NkUsMHhFRSwweEVGLAorICAgIDB4
NzUsMHhFRSwweEQzLDB4RDUsMHg2QSwweDZBLDB4N0EsMHg3OCwweDcxLDB4Q0QsMHhFRiwweEJD
LDB4M0MsMHgxNiwweDM0LDB4RDQsCisgICAgMHg1NSwweEVFLDB4QjIsMHhENSwweDgzLDB4MEIs
MHgwOSwweDBELDB4NTUsMHhFNiwweEYzLDB4REQsMHg1NywweDVFLDB4NUMsMHg1RSwKKyAgICAw
eDM0LDB4RTYsMHhGNCwweERELDB4ODksMHhCRCwweEFGLDB4QkQsMHgzNCwweEU2LDB4MzAsMHhD
NSwweDVFLDB4NUMsMHg1QSwweDU4LAorICAgIDB4NzUsMHhFRSwweDMwLDB4QzUsMHgyRCwweDJE
LDB4MkQsMHhCRCwweEI2LDB4RjYsMHgxNCwweERFLDB4NzcsMHg4MCwweDgwLDB4MjIsCisgICAg
MHg5NiwweEVFLDB4RjQsMHhERCwweDdGLDB4RkEsMHhBMCwweDA4LDB4NzUsMHhFRSwweEYzLDB4
REQsMHg1NywweEZGLDB4QTgsMHgwMCwKKyAgICAweDU1LDB4RTYsMHhGMywweERELDB4NUYsMHg3
NywweEZGLDB4RjgsMHgxNCwweERFLDB4MzEsMHhDNSwweDYyLDB4QzgsMHg4MCwweDAwLAorICAg
IDB4OTYsMHhGNiwweEI2LDB4RUUsMHhBNSwweEQ3LDB4NzUsMHg3NSwweEI2LDB4RUUsMHg3Niww
eEVFLDB4NUQsMHhFRSwweEFBLDB4QTAsCisgICAgMHg5NSwweEVFLDB4NTUsMHhFNiwweEZFLDB4
QkUsMHgwOCwweDAwLDB4QjYsMHhFRSwweDU1LDB4RTYsMHhERCwweEZGLDB4QUUsMHg4QiwKKyAg
ICAweEI2LDB4RUUsMHg1NSwweEU2LDB4NTcsMHhCRiwweEFBLDB4MDIsMHhCNiwweEVFLDB4NTQs
MHhFNiwweEY1LDB4QkEsMHhBQSwweEEwLAorICAgIDB4QjYsMHhFRSwweDU1LDB4RTYsMHg3Riww
eEJGLDB4QUEsMHg4OCwweEI2LDB4RUUsMHg1NSwweEU2LDB4RDcsMHhGRiwweEFBLDB4MDAsCisg
ICAgMHhCNiwweEVFLDB4NzUsMHhFNiwweEQ1LDB4QkYsMHhBRiwweDgwLDB4QjYsMHhFRSwweDc1
LDB4RTYsMHg1RCwweEZBLDB4RkEsMHg4QSwKKyAgICAweEI2LDB4RUUsMHg3NSwweEVFLDB4NUYs
MHhCQSwweEFBLDB4MEEsMHhCNiwweEY2LDB4NzUsMHhFNiwweEY3LDB4QUYsMHg4QSwweDIwLAor
ICAgIDB4OTYsMHhFRSwweDc1LDB4RUUsMHhGRiwweDg4LDB4ODAsMHg4MCwweDk2LDB4RUUsMHg3
NSwweEVFLDB4RkUsMHhDOCwweDA4LDB4MjAsCisgICAgMHg5NiwweEVFLDB4NzUsMHhFRSwweEI3
LDB4OEEsMHgyMCwweDI4LDB4QjYsMHhFRSwweDc1LDB4RUUsMHhERCwweEZBLDB4RkYsMHhERSwK
KyAgICAweDk2LDB4RUUsMHg3NSwweEVFLDB4QTgsMHhBRSwweEZFLDB4MkUsMHg3NiwweEY2LDB4
OTYsMHhFRSwweDdELDB4N0YsMHg3RiwweEY5LAorICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHg3
RiwweDcyLDB4QzIsMHg4NiwweEI2LDB4RjYsMHg5NiwweEVFLDB4NzksMHhBQSwweDJBLDB4MDIs
CisgICAgMHhCNiwweEY2LDB4OTYsMHhFRSwweEZGLDB4MEIsMHgzRSwweEEwLDB4RDYsMHhGNiww
eDk2LDB4RUUsMHg5RCwweEZGLDB4MDgsMHgyQSwKKyAgICAweEQ2LDB4RjYsMHg5NiwweEVFLDB4
RkYsMHhBQSwweEFBLDB4MkEsMHhENiwweEY2LDB4OTYsMHhFRSwweERGLDB4RjcsMHhCMywweEJB
LAorICAgIDB4RDYsMHhGNiwweDk2LDB4RUUsMHhGNSwweDVCLDB4RkUsMHhDQSwweDM0LDB4RTYs
MHhBQSwweDlCLDB4NjAsMHg3MCwweDYwLDB4NjAsCisgICAgMHg4NywweDdBLDB4QTQsMHg2MSww
eDVDLDB4RkMsMHhGRSwweEZFLDB4RTUsMHg2OSwweDg0LDB4NjEsMHhGRiwweDUzLDB4RjgsMHhB
QSwKKyAgICAweEM1LDB4NjksMHg2NCwweDYxLDB4MEEsMHgyRCwweDhBLDB4MEEsMHg0OCwweDdB
LDB4QzUsMHg2OSwweDJCLDB4OEQsMHhERCwweDU1LAorICAgIDB4MDYsMHg3MiwweEM2LDB4Njks
MHhCQywweEVFLDB4ODgsMHgwMCwweDg4LDB4ODIsMHgwNiwweDcyLDB4MTUsMHg1NSwweEQ1LDB4
RjUsCisgICAgMHg0QiwweDlCLDB4MDYsMHg2QSwweDJGLDB4QkQsMHhGRCwweEZELDB4RDMsMHhE
RCwweEU5LDB4ODIsMHgwQSwweDBCLDB4MkQsMHhCNSwKKyAgICAweDk2LDB4RjYsMHhGMywweERE
LDB4MDIsMHgwMiwweDAzLDB4MEQsMHhCNiwweEY2LDB4OTYsMHhFRSwweEE4LDB4QTAsMHhBMiww
eEFBLAorICAgIDB4RDYsMHhGNiwweDk2LDB4RUUsMHhGRSwweEZGLDB4RkYsMHgzRiwweEQ2LDB4
RjYsMHg5NywweEVFLDB4RUYsMHhBRiwweEFCLDB4RUEsCisgICAgMHhCNywweEY2LDB4QjUsMHhF
RSwweEE4LDB4QUEsMHhBQSwweEFBLDB4QjYsMHhGNiwweDk2LDB4RUUsMHhFRSwweEEyLDB4MjAs
MHg4OCwKKyAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4RUYsMHgyQSwweEFBLDB4MkEsMHhENyww
eEY2LDB4OTYsMHhFRSwweEVCLDB4QkIsMHhCQSwweEFBLAorICAgIDB4QjYsMHhGNiwweDk2LDB4
RUUsMHgzQywweEJCLDB4QjgsMHgwOCwweEI2LDB4RjYsMHg5NiwweEVFLDB4ODgsMHhFMiwweEE4
LDB4MDAsCisgICAgMHhCNiwweEY2LDB4OTYsMHhFRSwweDgwLDB4MDIsMHgwMCwweEMwLDB4QjYs
MHhGNiwweEQ4LDB4RUUsMHgwMCwweEEyLDB4MDgsMHhBMCwKKyAgICAweEI2LDB4RjYsMHhENiww
eEVFLDB4QUEsMHhFOCwweEY4LDB4QjgsMHhGNywweEY2LDB4QjYsMHhFRSwweDNGLDB4QkIsMHhC
RiwweDJGLAorICAgIDB4RDcsMHhGRSwweEY3LDB4RjYsMHg1RCwweDU3LDB4NUYsMHhERiwweEY3
LDB4RkUsMHhGNywweEY2LDB4RDcsMHhGNywweDVGLDB4REYsCisgICAgMHgxNywweEZGLDB4Rjcs
MHhGNiwweDdELDB4RkQsMHhGNSwweEY5LDB4RjYsMHhGRSwweEY3LDB4RjYsMHg3RCwweEY3LDB4
RkYsMHhERiwKKyAgICAweEY3LDB4RjYsMHhENiwweEY2LDB4MkEsMHgyQSwweDIyLDB4ODgsMHhE
NywweEZFLDB4RjcsMHhGNiwweEY1LDB4NTcsMHhGNSwweDk1LAorICAgIDB4RjcsMHhGRSwweEQ3
LDB4RjYsMHhFQiwweDhBLDB4RUEsMHg1QSwweEI2LDB4RjYsMHhEMywweERELDB4MDAsMHg4MCww
eEUwLDB4NzAsCisgICAgMHgzNSwweEVFLDB4OEIsMHg5QiwweEEwLDB4RTgsMHg3QSwweDdFLDB4
NkYsMHhCNCwweDg3LDB4N0EsMHg3OCwweDVFLDB4NTcsMHg1NSwKKyAgICAweDg3LDB4N0EsMHg0
NywweDdBLDB4OEEsMHg4MCwweDBFLDB4QTcsMHhBNywweDgyLDB4NDYsMHg3MiwweEJELDB4NkIs
MHg2QSwweEFBLAorICAgIDB4ODcsMHg3QSwweDI2LDB4NzIsMHhDMiwweDVBLDB4NkEsMHhFMCww
eDhCLDB4OUIsMHgyNiwweDcyLDB4OTUsMHg5NSwweDM1LDB4M0QsCisgICAgMHhCNywweEY2LDB4
NkUsMHhCNCwweDJELDB4MkQsMHgyRCwweDJCLDB4MTcsMHhGRiwweEQ3LDB4RjYsMHhBRCwweDhG
LDB4QUQsMHhGQiwKKyAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4QkIsMHhBQiwweEFCLDB4QUEs
MHgxNywweEZGLDB4RjgsMHhGNiwweEFBLDB4RUYsMHgyRSwweDJBLAorICAgIDB4MTgsMHhGRiww
eEY3LDB4RjYsMHhBQiwweEFBLDB4RTgsMHhBMCwweDE4LDB4RkYsMHhGNywweEVFLDB4ODIsMHg4
MiwweEEwLDB4OEEsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDYwLDB4QTAsMHhFMCwweEUw
LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBQiwweEE4LDB4QTIsMHhCOCwKKyAgICAweEY3LDB4RjYs
MHhENywweEY2LDB4RjMsMHhENSwweEZGLDB4RkYsMHhGNywweEY2LDB4RDcsMHhGNiwweDdGLDB4
QkYsMHhBRCwweEVELAorICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHhCRiwweEFFLDB4RUEsMHhG
QSwweEY3LDB4RjYsMHhCNiwweEVFLDB4RUEsMHhBQiwweEFFLDB4RkYsCisgICAgMHhGNywweEY2
LDB4RDcsMHhGNiwweDdGLDB4QUYsMHhBRCwweEFELDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhENSww
eDc1LDB4NUYsMHg3RiwKKyAgICAweEI3LDB4RjYsMHhGNywweEVFLDB4QUEsMHhBQSwweEJBLDB4
QkUsMHhENywweEY2LDB4RjcsMHhFRSwweDAwLDB4QjgsMHgyOCwweDgyLAorICAgIDB4RjcsMHhG
NiwweEQ3LDB4RjYsMHg2OSwweEZELDB4NTUsMHg3OSwweEY3LDB4RjYsMHhCNiwweEVFLDB4RkUs
MHhBQSwweEFGLDB4QUYsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEQ1LDB4REYsMHgxRSww
eDM3LDB4MTcsMHhGRiwweEQ3LDB4RjYsMHhCRCwweEU5LDB4QUEsMHhGRSwKKyAgICAweEY3LDB4
RjYsMHg5NiwweEVFLDB4RTAsMHhGOCwweDY4LDB4RkUsMHhCNiwweEY2LDB4OTYsMHhFRSwweEFB
LDB4QUEsMHhGQiwweEZCLAorICAgIDB4OTYsMHhFRSwweDU1LDB4RUUsMHgwMCwweDgwLDB4QzAs
MHg4MCwweDk2LDB4RUUsMHg1NSwweEVFLDB4QzIsMHhBMiwweEYwLDB4NTgsCisgICAgMHg1NSww
eEU2LDB4MTQsMHhERSwweEEwLDB4RjgsMHg1QSwweDVGLDB4MzQsMHhFNiwweEQzLDB4RDUsMHhF
QywweERFLDB4RkUsMHhERiwKKyAgICAweDU1LDB4RTYsMHhEMywweEQ1LDB4N0YsMHhCRCwweEJG
LDB4MEYsMHhCNywweEY2LDB4MTQsMHhERSwweEFELDB4MkIsMHgyMywweDBBLAorICAgIDB4Rjcs
MHhGNiwweEI3LDB4RjYsMHhENSwweDU1LDB4QkIsMHhCRSwweEQ3LDB4RjYsMHhCNiwweEY2LDB4
RkYsMHg4QywweEJFLDB4RUUsCisgICAgMHhENywweEY2LDB4OTYsMHhFRSwweEVGLDB4RjgsMHhG
QSwweEZBLDB4QjcsMHhGNiwweDc2LDB4RUUsMHg3QSwweEEwLDB4MjAsMHgwMiwKKyAgICAweEI2
LDB4RjYsMHgzNSwweEU2LDB4REYsMHhGQSwweDAwLDB4MDAsMHhENiwweEY2LDB4NTUsMHhFNiww
eEQ1LDB4NzUsMHhFMiwweDg4LAorICAgIDB4QjYsMHhFRSwweDc1LDB4RUUsMHg1RiwweEFELDB4
RkIsMHhCOCwweEI2LDB4RUUsMHg1NSwweEU2LDB4NUQsMHhBQSwweDAwLDB4MDAsCisgICAgMHhC
NiwweEVFLDB4NzUsMHhFNiwweEJELDB4RDcsMHhGQSwweEFDLDB4RDcsMHhGNiwweDc2LDB4RTYs
MHgwQiwweEFCLDB4QkYsMHhERiwKKyAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4QUEsMHg4QSww
eDJGLDB4MzUsMHhGNywweEY2LDB4RDcsMHhGNiwweEY1LDB4QkYsMHhGQiwweEJBLAorICAgIDB4
RjcsMHhGNiwweEI3LDB4RUUsMHhGQSwweEZBLDB4QTgsMHhBMiwweEQ3LDB4RjYsMHg5NywweEVF
LDB4OUUsMHhFRSwweEFBLDB4QTIsCisgICAgMHhGOCwweEY2LDB4QjcsMHhFRSwweDJGLDB4QUQs
MHgzRiwweEFCLDB4RDcsMHhGRSwweDE4LDB4RjcsMHhGRiwweEZBLDB4RUYsMHhBRSwKKyAgICAw
eDE4LDB4RkYsMHhGOCwweEY2LDB4QUUsMHgzQiwweEVELDB4OTUsMHgxOCwweEZGLDB4RjgsMHhG
NiwweEZGLDB4QUIsMHhBRSwweERFLAorICAgIDB4MTgsMHhGNywweEY4LDB4RjYsMHgzNywweEI2
LDB4NUUsMHhGNywweDM4LDB4RkYsMHhGNywweEY2LDB4ODIsMHgyMiwweDJCLDB4QUYsCisgICAg
MHgzOCwweEZGLDB4RjcsMHhGNiwweDVFLDB4NjIsMHg2MiwweDY4LDB4RjcsMHhGNiwweDk2LDB4
RUUsMHhCQSwweEZBLDB4N0MsMHg3RSwKKyAgICAweEI2LDB4RUUsMHg1NSwweEU2LDB4N0EsMHg3
OCwweEZFLDB4N0IsMHhENywweEY2LDB4NTQsMHhFNiwweDBCLDB4MEIsMHgyRCwweDJELAorICAg
IDB4RDcsMHhGNiwweDM0LDB4REUsMHhBMCwweEY4LDB4RkEsMHg3OCwweDk2LDB4RUUsMHgzNCww
eEU2LDB4OEYsMHhCRiwweERELDB4RjUsCisgICAgMHg1NSwweEU2LDB4MzEsMHhDNSwweEUwLDB4
NjAsMHg2OCwweDc4LDB4MzEsMHhDNSwweEQwLDB4QkMsMHg5QywweDE2LDB4M0YsMHgyRiwKKyAg
ICAweDU1LDB4RTYsMHg3MiwweENELDB4MDksMHgyRCwweDJELDB4MkQsMHg1NSwweEU2LDB4QjIs
MHhENSwweEZDLDB4RjgsMHg1OCwweDdBLAorICAgIDB4MTQsMHhERSwweEIyLDB4RDUsMHgyQSww
eEFFLDB4MzUsMHgxNSwweDU1LDB4RTYsMHgxMCwweEJELDB4NzgsMHg3OCwweDdBLDB4NzgsCisg
ICAgMHgxNCwweERFLDB4RjAsMHhCQywweDJELDB4MkQsMHhCRCwweEY1LDB4QjYsMHhGNiwweDky
LDB4Q0QsMHgyMiwweDBBLDB4QUYsMHhCRCwKKyAgICAweDk2LDB4RUUsMHg1NSwweEVFLDB4Rjgs
MHhFMiwweEYyLDB4RkYsMHg5NSwweEVFLDB4NTUsMHhFNiwweEVCLDB4RkYsMHhGNywweDU1LAor
ICAgIDB4OTUsMHhFRSwweDU1LDB4RTYsMHg1NywweDdCLDB4RkYsMHgyRiwweDk2LDB4RUUsMHgz
NCwweEU2LDB4NUQsMHg4RSwweEFFLDB4QkUsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDU2
LDB4REUsMHg2QSwweDc1LDB4RDYsMHhGNiwweEI2LDB4RUUsMHg1RCwweDc1LDB4NkYsMHhFNSwK
KyAgICAweEY2LDB4RjYsMHg5NiwweEVFLDB4REQsMHhGNSwweDdGLDB4N0UsMHhENiwweEY2LDB4
OTYsMHhFRSwweEVCLDB4RkIsMHhCQSwweDdCLAorICAgIDB4OTYsMHhGNiwweEI2LDB4RUUsMHg3
RiwweDc3LDB4OUYsMHg3NSwweEQ1LDB4RjYsMHg5NiwweEVFLDB4N0EsMHhCQiwweEVFLDB4QkEs
CisgICAgMHhENywweEY2LDB4OTYsMHhFRSwweDdFLDB4RkUsMHgzQSwweDJBLDB4OTYsMHhGNiww
eEQ2LDB4RUUsMHhFQSwweEJCLDB4QkIsMHhCRiwKKyAgICAweEI2LDB4RUUsMHg5NiwweEVFLDB4
QjAsMHg4MCwweDg4LDB4QjgsMHhCNiwweEVFLDB4OTYsMHhFRSwweDJBLDB4MkUsMHgyQSwweDAy
LAorICAgIDB4RDcsMHhGNiwweDk2LDB4RUUsMHhCRiwweEZBLDB4RkEsMHhFQiwweDk1LDB4RjYs
MHhENiwweEVFLDB4QUEsMHhFRiwweEJGLDB4QUYsCisgICAgMHhCNiwweEVFLDB4NzUsMHhFRSww
eEZBLDB4RjgsMHhFMCwweEUwLDB4OTYsMHhFRSwweDc1LDB4RUUsMHgwMCwweDBFLDB4MEUsMHhB
MiwKKyAgICAweDk2LDB4RUUsMHg3NSwweEVFLDB4QTgsMHhBRSwweDMyLDB4MjgsMHg5NiwweEY2
LDB4OTUsMHhFRSwweEQ3LDB4RkYsMHhGRiwweERGLAorICAgIDB4QjYsMHhGRSwweDk2LDB4RUUs
MHg1NywweDU3LDB4NUYsMHhGNywweEI2LDB4RjYsMHg3NSwweEVFLDB4RTYsMHgyRSwweEFCLDB4
MkEsCisgICAgMHhENiwweEY2LDB4OTYsMHhFRSwweEZGLDB4QkYsMHhBQiwweEFCLDB4RDcsMHhG
NiwweEI2LDB4RjYsMHhGRCwweEQ3LDB4REQsMHgyRiwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEVF
LDB4N0YsMHhBRSwweENCLDB4QTgsMHhCNiwweEY2LDB4RDcsMHhFRSwweDhBLDB4QUUsMHhFRSww
eEJFLAorICAgIDB4QjYsMHhGNiwweEQ2LDB4RUUsMHhBQSwweDJFLDB4QTksMHhGRiwweEQ3LDB4
RjYsMHhCNiwweEY2LDB4NzUsMHhCRCwweDFELDB4QUIsCisgICAgMHhENywweEY2LDB4QjYsMHhG
NiwweDZBLDB4RTIsMHhFOCwweEJBLDB4NzYsMHhGNiwweDhBLDB4OUIsMHg2MCwweDYwLDB4RTAs
MHhFMCwKKyAgICAweEE4LDB4ODIsMHhBNCwweDYxLDB4RkUsMHhGRSwweDVDLDB4N0MsMHgyNiww
eDdBLDB4QzUsMHg2OSwweDdCLDB4REEsMHhERSwweEUzLAorICAgIDB4MDYsMHg3MiwweEE1LDB4
NjksMHhENywweEY1LDB4RkUsMHg2MiwweEU2LDB4NzEsMHg4NCwweDYxLDB4MkYsMHhBRiwweEFE
LDB4QUQsCisgICAgMHgyNywweDdBLDB4QzUsMHg2OSwweEJBLDB4QkIsMHhBRCwweDNELDB4Mjcs
MHg3MiwweEU2LDB4NjksMHgzQiwweEJGLDB4NzQsMHg1QSwKKyAgICAweDg3LDB4N0EsMHhFNiww
eDY5LDB4MEEsMHhBQSwweEFGLDB4RjcsMHgyRCwweEFDLDB4NjcsMHg3QSwweDJGLDB4QkQsMHhG
RCwweEY1LAorICAgIDB4MzUsMHhFRSwweDhCLDB4OUIsMHgwMiwweDAzLDB4MkIsMHgyRCwweEI2
LDB4RjYsMHg3NiwweEY2LDB4QUEsMHg4QSwweEFBLDB4ODMsCisgICAgMHhCNiwweEY2LDB4OTYs
MHhFRSwweEE4LDB4QkUsMHgyMywweEEyLDB4QjYsMHhGNiwweDk2LDB4RUUsMHgwMiwweDgwLDB4
ODIsMHhBMCwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEY2LDB4RDUsMHhGQiwweDVCLDB4QjUsMHhC
NiwweEY2LDB4RDYsMHhFRSwweDI4LDB4ODAsMHgwOCwweDAyLAorICAgIDB4QjYsMHhGNiwweEI3
LDB4RUUsMHg4QSwweEE4LDB4MDAsMHgyQSwweDk2LDB4RjYsMHhENywweEVFLDB4RkEsMHhFRSww
eEFCLDB4RUYsCisgICAgMHhCNiwweEY2LDB4OTYsMHhFRSwweDA4LDB4MDIsMHgyMCwweEE4LDB4
QjYsMHhGNiwweDk2LDB4RUUsMHgwMiwweDAwLDB4MDIsMHhFOCwKKyAgICAweEQ3LDB4RjYsMHg5
NiwweEVFLDB4QUUsMHhBRSwweEFGLDB4QkIsMHhENywweEY2LDB4QjYsMHhGNiwweERFLDB4REUs
MHhCMywweDJCLAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhCNCwweEEyLDB4OEIsMHhFQSww
eEQ3LDB4RjYsMHhCNiwweEVFLDB4MEEsMHgwQiwweDJCLDB4M0YsCisgICAgMHgxNywweEZGLDB4
RDcsMHhGNiwweEZGLDB4QkQsMHhCRSwweEFCLDB4MTcsMHhGRiwweEY3LDB4RjYsMHg1RCwweDU1
LDB4NUYsMHg1RiwKKyAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4REQsMHhGOSwweENGLDB4NkQs
MHgxNywweEZGLDB4RjcsMHhGNiwweDdELDB4NzcsMHhENSwweDc1LAorICAgIDB4RDYsMHhGRSww
eEY3LDB4RjYsMHg1RCwweDU1LDB4RDcsMHhERiwweDE4LDB4RkYsMHhENywweEY2LDB4RUEsMHhF
RiwweEZGLDB4N0YsCisgICAgMHhGNiwweEZFLDB4MTQsMHhFNiwweDgwLDB4RTAsMHhGOCwweDdB
LDB4MzQsMHhFNiwweEFCLDB4OUIsMHg4MCwweEEwLDB4RTgsMHg3QSwKKyAgICAweEFGLDB4QkMs
MHg0NiwweDcyLDB4NjgsMHg3QywweDVFLDB4NTcsMHg2NywweDgyLDB4NDYsMHg3MiwweEJCLDB4
MkIsMHgzMywweDBBLAorICAgIDB4ODcsMHg4MiwweDQ2LDB4N0EsMHgzRCwweDNGLDB4OEMsMHgz
QSwweEM3LDB4OEEsMHg4NywweDgyLDB4RjUsMHhDRSwweEFELDB4M0QsCisgICAgMHhFOCwweDhB
LDB4NjYsMHg3QSwweDdFLDB4RkIsMHhGMCwweDcwLDB4OEUsMHhCQywweDQ2LDB4N0EsMHhCNSww
eEI1LDB4MzUsMHgyNSwKKyAgICAweEQ3LDB4RkUsMHgzMCwweENELDB4MkQsMHgwRCwweDA5LDB4
MkIsMHhGNywweEZFLDB4MTgsMHhGNywweEUwLDB4QTAsMHg4OCwweEEwLAorICAgIDB4MTcsMHhG
RiwweEY3LDB4RjYsMHhCRSwweEFBLDB4MEEsMHgwRiwweDE3LDB4RkYsMHhGNywweEY2LDB4MkEs
MHgyQSwweEJFLDB4M0YsCisgICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweDhBLDB4MkEsMHhBQiww
eEFFLDB4MTgsMHhGRiwweEY3LDB4RjYsMHhFMywweEZBLDB4RjgsMHhCOCwKKyAgICAweEY3LDB4
RjYsMHhENywweEY2LDB4QTAsMHhCQywweDJBLDB4ODAsMHhGNywweEY2LDB4RDcsMHhGNiwweEFB
LDB4QUUsMHgyMCwweDg4LAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhCQSwweEVBLDB4QUUs
MHhGQSwweEY3LDB4RjYsMHhENywweEY2LDB4RjksMHhGRiwweDVELDB4NTcsCisgICAgMHhENyww
eEY2LDB4QjcsMHhFRSwweEEwLDB4MkEsMHg4MywweDg4LDB4RDcsMHhGNiwweEI3LDB4RUUsMHgy
QSwweEEyLDB4ODIsMHhBQSwKKyAgICAweEQ3LDB4RjYsMHhENywweEVFLDB4MDAsMHg4QSwweDIw
LDB4MjIsMHhGNywweEY2LDB4RDcsMHhGNiwweDVGLDB4RjUsMHhBRCwweEJELAorICAgIDB4Rjcs
MHhGNiwweEQ3LDB4RjYsMHhCRCwweDU1LDB4NzcsMHhFNSwweEQ3LDB4RjYsMHhGNywweEVFLDB4
MEEsMHg4MiwweDAwLDB4MjIsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDdGLDB4NUQsMHhG
RCwweDJCLDB4MTcsMHhGRiwweEQ3LDB4RjYsMHg3NSwweEQ3LDB4RjcsMHgzRiwKKyAgICAweDE3
LDB4RkYsMHhENywweEY2LDB4MkQsMHhBRiwweDhBLDB4NzAsMHhGNywweEY2LDB4QjYsMHhFRSww
eEUwLDB4RjAsMHg1NCwweDVGLAorICAgIDB4OTYsMHhGNiwweEQ2LDB4RUUsMHhCQiwweEFGLDB4
QkYsMHgyQSwweEI2LDB4RjYsMHg3NiwweEVFLDB4QTIsMHhGQSwweERFLDB4REUsCisgICAgMHg5
NiwweEVFLDB4NTUsMHhFRSwweEE4LDB4NkEsMHg3OCwweDc4LDB4NzUsMHhFRSwweDE0LDB4REUs
MHhGOCwweDc4LDB4NUEsMHg1RiwKKyAgICAweDM1LDB4RTYsMHhCMiwweEQ1LDB4QTIsMHhGQSww
eDdFLDB4NUYsMHg3NSwweEVFLDB4QjIsMHhENSwweEY3LDB4RDUsMHhCNSwweDM1LAorICAgIDB4
QjYsMHhGNiwweDE0LDB4REUsMHhCRCwweDJELDB4MkEsMHgwMiwweEQ3LDB4RjYsMHg5NiwweEVF
LDB4OUQsMHhGRSwweEFBLDB4QUEsCisgICAgMHhENywweEY2LDB4QjYsMHhFRSwweDBBLDB4OEIs
MHgyQiwweDgwLDB4RDcsMHhGNiwweEI3LDB4RUUsMHhFMCwweDgwLDB4QTIsMHhBMCwKKyAgICAw
eEQ3LDB4RjYsMHg5NiwweEVFLDB4NkEsMHhBOCwweEE4LDB4MjIsMHhENywweEY2LDB4OTYsMHhF
RSwweEFCLDB4RjksMHhCQSwweEVBLAorICAgIDB4RDYsMHhGNiwweDk2LDB4RUUsMHhBRSwweEFF
LDB4QTcsMHhGNywweEQ2LDB4RjYsMHhCNiwweEVFLDB4QUEsMHhFQiwweEU5LDB4RTUsCisgICAg
MHhENiwweEY2LDB4QjYsMHhFRSwweDdFLDB4REUsMHhEMCwweDVFLDB4RDcsMHhGNiwweEI2LDB4
RUUsMHgyRCwweDBGLDB4QkYsMHg1NywKKyAgICAweEY3LDB4RjYsMHg5NiwweEVFLDB4N0UsMHhG
QSwweDJBLDB4MkIsMHhGNywweEY2LDB4OTYsMHhFRSwweDU1LDB4NTcsMHg3QSwweDgwLAorICAg
IDB4RjcsMHhGNiwweDk2LDB4RUUsMHgyNywweEJELDB4RTUsMHhGRiwweEY3LDB4RjYsMHhENyww
eEY2LDB4RjIsMHhFMiwweDI1LDB4MEQsCisgICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweEZCLDB4
RkYsMHg3RSwweEZBLDB4RjcsMHhGNiwweEI3LDB4RUUsMHhCNiwweEFGLDB4RkEsMHhBQSwKKyAg
ICAweEY4LDB4RjYsMHhENywweEY2LDB4RTUsMHhDRCwweDJCLDB4QzIsMHhGOCwweEY2LDB4RDcs
MHhFRSwweERBLDB4QkIsMHhCRiwweEFFLAorICAgIDB4RjgsMHhGNiwweEQ3LDB4RUUsMHgzQiww
eEYyLDB4RjgsMHg1OCwweDE4LDB4RjcsMHhENywweEY2LDB4QUEsMHhBQiwweEFGLDB4QUQsCisg
ICAgMHgxNywweEY3LDB4RjgsMHhGNiwweEY2LDB4N0EsMHhGQSwweDVELDB4MTgsMHhGNywweEQ3
LDB4RjYsMHgyQSwweEJBLDB4RUUsMHhENSwKKyAgICAweDM4LDB4RkYsMHhGNywweEY2LDB4RUEs
MHhGQSwweEY1LDB4NzUsMHhGNywweEY2LDB4OTYsMHhFRSwweDdBLDB4NzgsMHg3OCwweDc4LAor
ICAgIDB4OTYsMHhFRSwweDU1LDB4RTYsMHg2MiwweEZBLDB4RkEsMHg3QSwweEQ3LDB4RjYsMHgz
NCwweERFLDB4MkYsMHhCNywweEI1LDB4QjUsCisgICAgMHhCNiwweEVFLDB4MTQsMHhFNiwweEYw
LDB4RTAsMHg2MCwweDQwLDB4NTUsMHhFNiwweDE0LDB4REUsMHgwRCwweEE3LDB4MzUsMHhGRCwK
KyAgICAweDU1LDB4RTYsMHg1MSwweEM1LDB4NzgsMHg1OCwweDc4LDB4N0EsMHgxMCwweEM1LDB4
RjAsMHhCQywweDI1LDB4MkUsMHgzNiwweDE0LAorICAgIDB4MzQsMHhFNiwweDcxLDB4Q0QsMHgy
RCwweDI5LDB4QUQsMHgyRCwweDM0LDB4RTYsMHg5MiwweENELDB4RTAsMHhFOCwweEUyLDB4NjAs
CisgICAgMHhGMywweERELDB4OTIsMHhDRCwweDJGLDB4MkUsMHhCNSwweEJELDB4RjQsMHhERCww
eDMwLDB4QzUsMHg3MCwweDYwLDB4NDAsMHhDMCwKKyAgICAweDEwLDB4QzUsMHg2RCwweEFDLDB4
MkUsMHg5RiwweERGLDB4QkUsMHg1NSwweEU2LDB4MzEsMHhDNSwweDJGLDB4MEQsMHgyOSwweDBC
LAorICAgIDB4OTYsMHhFRSwweDU1LDB4RTYsMHhGRiwweDZCLDB4N0EsMHhFMCwweDc1LDB4RUUs
MHg1NSwweEU2LDB4NTcsMHg1NSwweEI3LDB4RTYsCisgICAgMHg3NSwweEVFLDB4NTUsMHhFNiww
eDA5LDB4RkQsMHgyNywweDM3LDB4OTYsMHhFRSwweDc1LDB4RUUsMHg1RCwweDNGLDB4QkQsMHhG
NSwKKyAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4RUYsMHhCRSwweEFCLDB4RUYsMHhENiwweEY2
LDB4QjYsMHhFRSwweEFGLDB4QkYsMHhGRCwweEQ3LAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUs
MHg1RiwweDU3LDB4NTcsMHg3QiwweEQ2LDB4RjYsMHhCNiwweEVFLDB4REQsMHhGNywweDZELDB4
RkQsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEZELDB4NzUsMHg3RCwweEYzLDB4RDYsMHhG
NiwweEI2LDB4RUUsMHhCRiwweEVBLDB4QkQsMHhGRiwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEVF
LDB4RDEsMHg5RiwweDVGLDB4N0YsMHhENywweEY2LDB4QjYsMHhFRSwweERGLDB4RjcsMHhERCww
eEY1LAorICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHg1NywweEVELDB4RkYsMHhFNCwweEQ3LDB4
RjYsMHhCNiwweEVFLDB4NzcsMHg3RiwweEY1LDB4RkQsCisgICAgMHhENywweEY2LDB4QjYsMHhF
RSwweDc1LDB4RDUsMHhGNywweEZGLDB4RDYsMHhGNiwweDk2LDB4RUUsMHg3QSwweEVBLDB4RUEs
MHhFQSwKKyAgICAweEI2LDB4RUUsMHg5NiwweEVFLDB4NjgsMHg3NiwweDVFLDB4NzYsMHhCNiww
eEY2LDB4NzUsMHhFRSwweEZGLDB4QUYsMHhBNywweEJGLAorICAgIDB4NzUsMHhGNiwweDk1LDB4
RUUsMHg3RCwweDc1LDB4NUQsMHg1NywweDc2LDB4RjYsMHg5NSwweEVFLDB4NTUsMHg3NSwweDVG
LDB4N0QsCisgICAgMHhCNiwweEY2LDB4OTUsMHhFRSwweEFFLDB4RjYsMHgzQiwweEZBLDB4OTYs
MHhGNiwweEI2LDB4RUUsMHhGRiwweEZGLDB4QkIsMHhCQiwKKyAgICAweEI2LDB4RjYsMHhENyww
eEVFLDB4QTgsMHhBQSwweEFBLDB4QjgsMHhENywweEY2LDB4QjYsMHhFRSwweDJCLDB4MEEsMHhB
QSwweDgyLAorICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHhGOCwweEUyLDB4RUEsMHg5OCwweEY3
LDB4RjYsMHhCNiwweEVFLDB4NzcsMHhBRiwweEFCLDB4QUYsCisgICAgMHhENywweEY2LDB4QjYs
MHhFRSwweEFGLDB4QUEsMHg4OCwweDJBLDB4RDcsMHhGNiwweEI2LDB4RjYsMHhFNywweEI1LDB4
REUsMHhBRSwKKyAgICAweEQ3LDB4RjYsMHg5NSwweEY2LDB4RUEsMHhGQSwweEZBLDB4RTgsMHg3
NSwweEVFLDB4MjksMHg5MywweEUwLDB4RTAsMHg3OCwweDc4LAorICAgIDB4QzgsMHg4QSwweEE1
LDB4NjEsMHg3QywweERFLDB4NTYsMHg1NywweDI2LDB4N0EsMHhFNSwweDY5LDB4RUYsMHg4RCww
eEFELDB4MkQsCisgICAgMHgyNiwweDdBLDB4QzUsMHg2OSwweDdCLDB4RkMsMHg4MCwweDgyLDB4
QzUsMHg2OSwweDY0LDB4NjEsMHgyQSwweEY4LDB4RkMsMHhCMCwKKyAgICAweDA2LDB4NzIsMHg4
NCwweDYxLDB4MkIsMHgyRiwweEJGLDB4REYsMHgyNywweDcyLDB4QzUsMHg2OSwweEUyLDB4RkEs
MHhFQSwweDc1LAorICAgIDB4MjYsMHg3MiwweEM1LDB4NjksMHgyQywweEJBLDB4QUYsMHhCNiww
eEU4LDB4ODIsMHhFNSwweDY5LDB4MkYsMHgyRiwweEJELDB4RjUsCisgICAgMHhEMiwweERELDB4
MDgsMHg4QiwweDJELDB4QjUsMHhGNSwweEQ1LDB4OTUsMHhGNiwweEVFLDB4QkMsMHgwMCwweDAy
LDB4MEIsMHgyOSwKKyAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4QTAsMHg4OCwweDAwLDB4MDAs
MHhENSwweEY2LDB4QjYsMHhGNiwweDVELDB4NUQsMHhGNywweEJGLAorICAgIDB4RDYsMHhGNiww
eEI2LDB4RjYsMHhFQiwweEU3LDB4RUYsMHhGQSwweEQ2LDB4RjYsMHhCNiwweEY2LDB4REQsMHhG
NywweERBLDB4QUEsCisgICAgMHhGNiwweEY2LDB4QjYsMHhGNiwweDU1LDB4NTUsMHg1RiwweDVG
LDB4QjYsMHhGNiwweEI3LDB4RUUsMHgwOCwweEEwLDB4MkEsMHhBMiwKKyAgICAweEQ3LDB4RjYs
MHg5NiwweEVFLDB4RkUsMHhGQSwweEJFLDB4QUEsMHhCNiwweEY2LDB4RDcsMHhFRSwweDAyLDB4
ODIsMHg4MCwweDAwLAorICAgIDB4RDcsMHhGNiwweEI2LDB4RjYsMHg1OSwweDU3LDB4RjUsMHhE
RCwweEQ3LDB4RjYsMHhCNiwweEY2LDB4QUYsMHg4RCwweDM3LDB4OUQsCisgICAgMHhENywweEY2
LDB4QjYsMHhFRSwweDIyLDB4MjgsMHg2MCwweEUyLDB4RjcsMHhGNiwweEI2LDB4RUUsMHhCRiww
eDJCLDB4QkIsMHgzRiwKKyAgICAweDE3LDB4RkYsMHhENiwweEY2LDB4QUIsMHhFRiwweEZGLDB4
REUsMHhGNywweEY2LDB4RDYsMHhGNiwweDgwLDB4MjIsMHgwMiwweEFBLAorICAgIDB4MTcsMHhG
RiwweEY3LDB4RjYsMHg3NSwweDVELDB4NUQsMHg3RiwweDE3LDB4RkYsMHhGNywweEY2LDB4QjUs
MHhERCwweEY1LDB4NzUsCisgICAgMHhGNywweEZFLDB4RDYsMHhGNiwweEVCLDB4QTgsMHhBQSww
eEJDLDB4RjcsMHhGRSwweDM0LDB4RTYsMHhBMCwweEEwLDB4RTgsMHg3QSwKKyAgICAweDc1LDB4
RUUsMHg0RCwweEI0LDB4QTAsMHhFMCwweEY4LDB4N0UsMHhFRiwweEM0LDB4NjYsMHg3QSwweDYw
LDB4NzgsMHg1RSwweDU3LAorICAgIDB4NjcsMHg3QSwweDA1LDB4NkEsMHhCRSwweDg2LDB4OEEs
MHgwMiwweDY3LDB4N0EsMHgwNiwweDcyLDB4MjgsMHgyMCwweDJBLDB4REUsCisgICAgMHhBOCww
eDhBLDB4NDYsMHg3QSwweEJGLDB4OEQsMHg4QSwweDgzLDB4QzgsMHg4QSwweDY3LDB4ODIsMHgy
NywweEE1LDB4QUUsMHg4QiwKKyAgICAweEM4LDB4OEEsMHg2NiwweDdBLDB4ODAsMHhCMCwweDlB
LDB4RjIsMHgxMSwweENELDB4NjcsMHg3QSwweDM1LDB4MzUsMHgyNSwweDJELAorICAgIDB4Rjcs
MHhGRSwweEQzLDB4REQsMHgwOSwweDI5LDB4MEIsMHgwQiwweDE3LDB4RkYsMHhGOCwweEY2LDB4
QUUsMHhBQSwweEJBLDB4NzIsCisgICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweEFBLDB4QkEsMHhB
QSwweEFBLDB4RjcsMHhGRSwweDE4LDB4RjcsMHg3QiwweDdFLDB4NzksMHg1RiwKKyAgICAweDM4
LDB4RkYsMHgxNywweEY3LDB4NzUsMHhGNywweEZGLDB4REIsMHgxNywweEZGLDB4RjcsMHhGNiww
eEEwLDB4RUIsMHhFRSwweEVCLAorICAgIDB4RjcsMHhGNiwweEY3LDB4RjYsMHgwMCwweDAwLDB4
MDAsMHgwMCwweEY3LDB4RjYsMHhENywweEY2LDB4QUEsMHhBQSwweEEyLDB4NUEsCisgICAgMHhG
NywweEY2LDB4RDcsMHhGNiwweEFCLDB4OEIsMHg3RCwweDVGLDB4RjcsMHhGNiwweEQ3LDB4RjYs
MHg1NywweDdGLDB4N0EsMHg1QiwKKyAgICAweEQ3LDB4RjYsMHhGNiwweEVFLDB4MDAsMHhBMiww
eEEyLDB4QTgsMHhENywweEY2LDB4RDYsMHhFRSwweEFBLDB4MjAsMHgwQSwweDA4LAorICAgIDB4
RjcsMHhGNiwweEI2LDB4RUUsMHhCQSwweDdBLDB4QkEsMHhCRSwweEY3LDB4RjYsMHhENywweEY2
LDB4NjUsMHg3RiwweDc5LDB4QUEsCisgICAgMHhENywweEY2LDB4RjcsMHhFRSwweEEwLDB4MDAs
MHg4MCwweEEwLDB4RjYsMHhGNiwweEQ3LDB4RjYsMHhERCwweEY1LDB4NTcsMHhBRiwKKyAgICAw
eEY3LDB4RjYsMHhCNiwweEVFLDB4MDMsMHgwRiwweDIxLDB4MDIsMHgxOCwweEZGLDB4RjcsMHhG
NiwweEE1LDB4ODksMHg4MywweEMwLAorICAgIDB4MTgsMHhGNywweEQ3LDB4RjYsMHg3OCwweDVF
LDB4NUYsMHg1NywweDk1LDB4RjYsMHhENiwweEVFLDB4RkQsMHhBQiwweEFGLDB4QkIsCisgICAg
MHg3NiwweEY2LDB4QjYsMHhFRSwweEZELDB4QUQsMHhCRiwweDJFLDB4OTYsMHhGNiwweDU1LDB4
RTYsMHhBQSwweEZBLDB4QUEsMHg3QiwKKyAgICAweDc1LDB4RUUsMHgxNCwweERFLDB4QTgsMHhG
OCwweEZFLDB4N0YsMHgzNCwweEU2LDB4OTIsMHhDRCwweEU4LDB4RTgsMHhGOCwweDdFLAorICAg
IDB4MTQsMHhERSwweDUxLDB4QzUsMHhGRSwweEZFLDB4QjcsMHgyNSwweDk2LDB4RUUsMHg5Miww
eEQ1LDB4MkQsMHgwQiwweDAyLDB4MDAsCisgICAgMHhENywweEY2LDB4QjYsMHhFRSwweDk1LDB4
QkYsMHhCRiwweDg4LDB4RDcsMHhGNiwweEI2LDB4RUUsMHgzMywweDgyLDB4QTAsMHg4MCwKKyAg
ICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4ODAsMHhCMCwweDNFLDB4QUMsMHhENywweEY2LDB4QjYs
MHhFRSwweDBCLDB4OEUsMHhBOCwweEEyLAorICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHhBMiww
eEEyLDB4MDgsMHhCQSwweEQ3LDB4RjYsMHhCNiwweEVFLDB4RUIsMHhFQSwweEFBLDB4RUEsCisg
ICAgMHhENywweEY2LDB4OTYsMHhFRSwweEZGLDB4RkEsMHhFQSwweEJBLDB4RDcsMHhGNiwweDk2
LDB4RUUsMHhBNywweEZGLDB4RUEsMHhBQSwKKyAgICAweDk3LDB4RkUsMHhCNiwweEVFLDB4RDUs
MHg1RiwweDc1LDB4NUYsMHg5NiwweEY2LDB4QjYsMHhFRSwweDc3LDB4NTcsMHhENSwweEY1LAor
ICAgIDB4RDcsMHhGNiwweDk2LDB4RUUsMHgyRSwweDNGLDB4QkQsMHhCRiwweEY3LDB4RjYsMHhC
NywweEVFLDB4MDIsMHgwMiwweDJGLDB4MkQsCisgICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweDVG
LDB4RkUsMHhBQSwweDJBLDB4MTcsMHhGNywweEI4LDB4RjYsMHhBQiwweEFBLDB4QUEsMHgwMiwK
KyAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4NkUsMHg2RiwweENCLDB4MDIsMHgxOCwweEY3LDB4
RDcsMHhGNiwweEZGLDB4RkIsMHhGOCwweEY4LAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RUUsMHhB
MiwweEZBLDB4NjgsMHhBMiwweEY4LDB4RjYsMHhENywweEVFLDB4MkMsMHgyQSwweDAzLDB4MkEs
CisgICAgMHgxOCwweEY3LDB4QjcsMHhGNiwweERBLDB4RjgsMHhFRSwweEVBLDB4RjgsMHhGNiww
eEQ3LDB4RjYsMHg4RCwweDg4LDB4RTMsMHhEQiwKKyAgICAweEY4LDB4RjYsMHhENywweEY2LDB4
MDAsMHgyMSwweEFDLDB4RkUsMHhGNywweEY2LDB4RDcsMHhGNiwweEZELDB4RjgsMHg3OCwweDVB
LAorICAgIDB4RjgsMHhGNiwweEI3LDB4RUUsMHhBQSwweEJFLDB4RkYsMHhGNiwweEQ3LDB4RjYs
MHg5NiwweEVFLDB4RTAsMHg2OCwweEU4LDB4QUEsCisgICAgMHg5NiwweEVFLDB4MzQsMHhERSww
eEJBLDB4NkUsMHg3OCwweDc4LDB4OTYsMHhFRSwweDEzLDB4REUsMHgzRCwweDI3LDB4QjUsMHhC
NSwKKyAgICAweEQ3LDB4RjYsMHg1NCwweEU2LDB4NjIsMHhFMiwweEUwLDB4QUEsMHg3NSwweEVF
LDB4MTQsMHhERSwweDdELDB4RkUsMHhBQSwweEFDLAorICAgIDB4NTUsMHhFNiwweDcxLDB4Q0Qs
MHg3QSwweDU4LDB4NzgsMHg3OCwweDUxLDB4QzUsMHhFRiwweEJDLDB4OTYsMHhCOCwweDIwLDB4
MDAsCisgICAgMHgxMywweERFLDB4NTEsMHhDNSwweDI5LDB4MjksMHhBRCwweEJELDB4NTUsMHhF
NiwweEIyLDB4RDUsMHg3QSwweEYyLDB4N0EsMHg2QiwKKyAgICAweEIyLDB4RDUsMHg3MiwweENE
LDB4MkUsMHhBRiwweEJGLDB4MkYsMHhGMywweERELDB4NzEsMHhDRCwweDYyLDB4NDMsMHhFMiww
eDgyLAorICAgIDB4RDMsMHhENSwweEFFLDB4QjQsMHhENSwweDM3LDB4MkYsMHgyRSwweEQ2LDB4
RjYsMHhCMiwweEQ1LDB4QUQsMHgyQiwweDBCLDB4MkIsCisgICAgMHhCNiwweEY2LDB4NTUsMHhF
NiwweEZBLDB4RjgsMHg2MCwweEUwLDB4NzYsMHhFNiwweDM1LDB4RTYsMHhGRSwweEY2LDB4RDcs
MHhERSwKKyAgICAweDU1LDB4RUUsMHgzNCwweEU2LDB4MDgsMHgyQywweDVFLDB4NTUsMHg5Niww
eEVFLDB4MzQsMHhFNiwweEFCLDB4MkIsMHhBRiwweEFELAorICAgIDB4RDYsMHhGNiwweEI2LDB4
RUUsMHhENSwweEE1LDB4RkQsMHg5NSwweEQ2LDB4RjYsMHhCNiwweEVFLDB4N0QsMHg3RSwweDVF
LDB4NzUsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDcyLDB4NUIsMHg5NSwweEE5LDB4RDYs
MHhGNiwweEI2LDB4RUUsMHhERiwweEI2LDB4QkUsMHg3NywKKyAgICAweEQ2LDB4RjYsMHhCNiww
eEVFLDB4NEQsMHg4QiwweEFCLDB4RkQsMHhENiwweEY2LDB4OTYsMHhFRSwweEFFLDB4OEEsMHg4
MiwweDhGLAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhGQiwweEU5LDB4QjUsMHg1QiwweEQ2
LDB4RjYsMHhCNiwweEVFLDB4RkQsMHhBRSwweDM5LDB4NzcsCisgICAgMHhENiwweEY2LDB4QjYs
MHhFRSwweEJFLDB4M0YsMHhCQSwweEFBLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBRiwweEU3LDB4
RkYsMHhENiwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4RUUsMHhFQiwweDdCLDB4RUYsMHhE
NiwweEY2LDB4QjYsMHhFRSwweEZCLDB4RkYsMHg3QSwweEZFLAorICAgIDB4RDYsMHhFRSwweDc1
LDB4RUUsMHhGRSwweERFLDB4RkYsMHhGOCwweEI2LDB4RjYsMHg3NSwweEVFLDB4RkEsMHhCQSww
eEVBLDB4RkEsCisgICAgMHhCNSwweEY2LDB4NTUsMHhFNiwweEFBLDB4QTIsMHhBQSwweEVBLDB4
QjYsMHhGNiwweDk1LDB4RUUsMHhERiwweEZELDB4QkIsMHg2QSwKKyAgICAweEI1LDB4RUUsMHg5
NSwweEVFLDB4QUYsMHhGQiwweEZGLDB4RjksMHhCNywweEY2LDB4OTYsMHhFRSwweEY5LDB4REYs
MHhENywweEFELAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBRiwweDhELDB4QkQsMHhCNSww
eEQ3LDB4RjYsMHhCNiwweEVFLDB4QTIsMHg4RSwweDBBLDB4MDIsCisgICAgMHhENywweEY2LDB4
RjcsMHhFRSwweDAwLDB4MjAsMHg4OCwweDg4LDB4RDYsMHhGNiwweEI3LDB4RTYsMHgwQSwweDIy
LDB4MjAsMHg4MiwKKyAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4RkUsMHhCRSwweEFBLDB4RUEs
MHhENiwweEY2LDB4QjcsMHhGNiwweEFFLDB4QUEsMHgwMCwweEE4LAorICAgIDB4RDcsMHhGRSww
eDM0LDB4RUUsMHhFMCwweEM4LDB4NjAsMHg2QSwweEYyLDB4REQsMHg0NiwweDcyLDB4NzgsMHg3
QywweDVFLDB4NUUsCisgICAgMHg0NywweDdBLDB4ODUsMHg2MSwweEZBLDB4RTIsMHhFOCwweEYw
LDB4MjYsMHg3MiwweDQzLDB4NTksMHgwQSwweEFCLDB4QUYsMHg5NSwKKyAgICAweDI2LDB4NzIs
MHhFNiwweDcxLDB4RUEsMHg2MywweEZCLDB4RDcsMHgwNiwweDcyLDB4QTUsMHg2OSwweDU1LDB4
N0UsMHg2OCwweEVBLAorICAgIDB4QTUsMHg2OSwweDY0LDB4NjEsMHhDMCwweEY5LDB4NTcsMHg1
QywweEM1LDB4NjksMHg4NSwweDYxLDB4MEEsMHg4QiwweEJCLDB4RkYsCisgICAgMHhFNiwweDY5
LDB4NjQsMHg1OSwweDJBLDB4OEEsMHgyQiwweDI5LDB4NDYsMHg3MiwweEM1LDB4NjEsMHgyRiww
eDJELDB4QkYsMHhENywKKyAgICAweDY5LDB4OTMsMHgyNiwweDcyLDB4MkYsMHhCRCwweEJELDB4
RjUsMHgzNSwweEVFLDB4MjksMHg4QiwweDBCLDB4MEQsMHgyRCwweEI1LAorICAgIDB4RDcsMHhG
RSwweDU1LDB4RUUsMHhBQSwweDJBLDB4MEIsMHgyRCwweEQ3LDB4RjYsMHhCNiwweEY2LDB4NzUs
MHg1QiwweEZBLDB4QUEsCisgICAgMHhENiwweEY2LDB4QjYsMHhGNiwweEZELDB4QTUsMHg4Nyww
eDhGLDB4RDYsMHhGNiwweEI2LDB4RjYsMHhBRCwweEJGLDB4QTMsMHgwQSwKKyAgICAweEQ2LDB4
RjYsMHhCNiwweEY2LDB4QTgsMHhBQSwweEJFLDB4OTcsMHhENiwweEY2LDB4QjYsMHhGNiwweEQ0
LDB4N0MsMHg1QywweDc3LAorICAgIDB4QjYsMHhGNiwweEQ3LDB4RUUsMHgwQSwweDAyLDB4MDgs
MHgwOCwweEI2LDB4RjYsMHg5NiwweEVFLDB4MDgsMHgwQSwweDg4LDB4MDAsCisgICAgMHhCNiww
eEY2LDB4RDYsMHhFRSwweEEwLDB4MDAsMHgwOCwweDI4LDB4RDcsMHhGNiwweEI2LDB4RjYsMHhB
RiwweEJELDB4QjUsMHhFRiwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4QTAsMHg3QSwweDNB
LDB4QUYsMHhGNywweEY2LDB4RDYsMHhGNiwweDlELDB4REQsMHhCRiwweEI3LAorICAgIDB4RDcs
MHhGRSwweEY3LDB4RjYsMHhERiwweDdELDB4NTcsMHg1NSwweEY2LDB4RkUsMHhGNywweEY2LDB4
RkQsMHg3RiwweEY3LDB4RkQsCisgICAgMHhENywweEZFLDB4RjcsMHhGNiwweDU1LDB4NTUsMHg3
RCwweEZELDB4RjcsMHhGRSwweEQ3LDB4RjYsMHhBOCwweEFFLDB4QUIsMHg4MiwKKyAgICAweEY3
LDB4RkUsMHg1NSwweEVFLDB4QTAsMHhBOCwweEUwLDB4N0EsMHhCNiwweEY2LDB4QUYsMHhCQyww
eEEwLDB4RTgsMHhGQSwweDdBLAorICAgIDB4MzAsMHhDRCwweDY2LDB4N0EsMHhFMCwweDc4LDB4
NUUsMHg1RiwweDY2LDB4N0EsMHgwNSwweDcyLDB4QTAsMHhEQSwweEZFLDB4QUUsCisgICAgMHg2
NiwweDdBLDB4MjYsMHg3QSwweDhBLDB4OUIsMHg5RSwweEJBLDB4NDYsMHg4MiwweDI2LDB4N0Es
MHg3RiwweEZGLDB4QUQsMHhCMywKKyAgICAweDg3LDB4OEEsMHgyNiwweDdBLDB4MkIsMHhBOSww
eEFCLDB4OEEsMHhBOCwweDhBLDB4NjcsMHg4MiwweEJBLDB4RjMsMHhCMywweEZFLAorICAgIDB4
ODcsMHg4MiwweDQ2LDB4N0EsMHhBMCwweEUyLDB4N0EsMHgzOCwweDE0LDB4RTYsMHgwOSwweDkz
LDB4MzUsMHhBRCwweDJELDB4MkQsCisgICAgMHhGNywweEZFLDB4NTUsMHhFRSwweDBELDB4MDEs
MHgwMywweDAzLDB4MTcsMHhGRiwweEY3LDB4RjYsMHhGMCwweEFBLDB4RUEsMHhDQSwKKyAgICAw
eDE3LDB4RkYsMHhGOCwweEY2LDB4QUIsMHhCOCwweEFFLDB4QUIsMHgzOCwweEZGLDB4RjcsMHhG
NiwweEFGLDB4QUIsMHhFRCwweEFCLAorICAgIDB4MTgsMHhGRiwweDE3LDB4RjcsMHhFRiwweEJC
LDB4RkUsMHhCRSwweDM2LDB4RkYsMHgxOCwweEY3LDB4NUQsMHg3NywweEY3LDB4RkYsCisgICAg
MHgzNywweEY3LDB4RDcsMHhGNiwweERFLDB4N0YsMHhENywweDVGLDB4RjcsMHhGNiwweEQ3LDB4
RjYsMHhFOCwweEEyLDB4QUYsMHhCRiwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4N0EsMHhG
MiwweEJCLDB4QkQsMHhGNywweEY2LDB4RDcsMHhGNiwweEZELDB4N0QsMHhENywweEZELAorICAg
IDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhGRCwweEZELDB4RDYsMHg1NiwweEY3LDB4RjYsMHhENyww
eEY2LDB4RDcsMHg3NSwweEQ3LDB4N0YsCisgICAgMHhENywweEY2LDB4QjcsMHhFRSwweDIwLDB4
MDAsMHg2OCwweDgwLDB4RjcsMHhGNiwweEI3LDB4RjYsMHgyMiwweEFBLDB4QTksMHhBRiwKKyAg
ICAweEY3LDB4RjYsMHhENywweEY2LDB4NzUsMHhGNSwweDk3LDB4QUYsMHgzNywweEZGLDB4RDcs
MHhGNiwweDc1LDB4RjcsMHhGNSwweEI3LAorICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYsMHgyRiww
eDhBLDB4ODIsMHhDMCwweDE3LDB4RkYsMHhCNiwweEVFLDB4QTgsMHhGQSwweDdFLDB4RDcsCisg
ICAgMHhCNiwweEY2LDB4RDYsMHhFRSwweDJELDB4MkIsMHgwQSwweDgwLDB4QjYsMHhGNiwweDc1
LDB4RUUsMHhFOCwweDZBLDB4RkMsMHhGQSwKKyAgICAweDk2LDB4RUUsMHg3NSwweEVFLDB4RTAs
MHg2OCwweDRDLDB4RkEsMHg3NSwweEVFLDB4MTQsMHhFNiwweEEwLDB4NzgsMHhGOCwweDdFLAor
ICAgIDB4MzUsMHhFNiwweEIzLDB4RDUsMHhDOCwweEUyLDB4RkEsMHhERSwweDE0LDB4REUsMHg3
MSwweENELDB4N0UsMHhERiwweDk3LDB4MkQsCisgICAgMHhCNiwweEY2LDB4OTIsMHhDRCwweEE1
LDB4MkYsMHgyMiwweDAyLDB4RDcsMHhGNiwweDk2LDB4RUUsMHgwOSwweDBBLDB4MDIsMHgwOCwK
KyAgICAweEQ3LDB4RjYsMHhENiwweEVFLDB4MjAsMHgyMiwweDIyLDB4MDAsMHhGNywweEY2LDB4
QjYsMHhFRSwweEFCLDB4QkIsMHhBRSwweEIzLAorICAgIDB4RDcsMHhGNiwweEY3LDB4RUUsMHgw
MCwweDAwLDB4OEEsMHgwQSwweEQ3LDB4RjYsMHhCNiwweEVFLDB4ODAsMHgwMCwweEEwLDB4QzAs
CisgICAgMHhENywweEY2LDB4QjcsMHhFRSwweDI4LDB4MjIsMHhFOCwweEVBLDB4RDcsMHhGNiww
eEI3LDB4RUUsMHhGQywweDU3LDB4NzYsMHhFRiwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4
OTcsMHg4RiwweDJGLDB4MkEsMHhENywweEY2LDB4QjcsMHhFRSwweEUzLDB4QTIsMHhBMiwweDIy
LAorICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHg1RiwweEVBLDB4RjIsMHhGRSwweEQ3LDB4RjYs
MHhCNiwweEVFLDB4NUYsMHg1RSwweDVFLDB4N0UsCisgICAgMHhCNiwweEVFLDB4OTYsMHhFRSww
eEEzLDB4RkUsMHgzQSwweDAwLDB4RjcsMHhGNiwweDk2LDB4RUUsMHgyRiwweEJELDB4QkYsMHhG
RCwKKyAgICAweDE3LDB4RkYsMHhCNywweEVFLDB4QUEsMHgyRSwweEFGLDB4RkQsMHgxOCwweEZG
LDB4RjcsMHhGNiwweEJCLDB4MEIsMHgwQSwweDJCLAorICAgIDB4MzgsMHhGRiwweDE4LDB4Rjcs
MHhGNywweEVGLDB4Q0IsMHhFQiwweDM5LDB4RkYsMHhGNywweEY2LDB4N0UsMHhGQSwweEVBLDB4
OEIsCisgICAgMHgxOCwweEZGLDB4RDcsMHhFRSwweEZGLDB4QkYsMHhCRSwweEY4LDB4MTgsMHhG
NywweEY4LDB4RjYsMHg1NSwweDVGLDB4RDUsMHhGRCwKKyAgICAweEY4LDB4RjYsMHhENywweEY2
LDB4QUEsMHhBOCwweEIwLDB4ODAsMHhGOCwweEY2LDB4RDcsMHhGNiwweDU1LDB4QjcsMHhDRiww
eDZCLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhCRSwweDBBLDB4MEEsMHgwOSwweEY3LDB4
RjYsMHhCNywweEVFLDB4NjgsMHhFMCwweDc4LDB4N0EsCisgICAgMHhENywweEY2LDB4QjcsMHhF
RSwweDhELDB4MDIsMHg4MiwweEFCLDB4RDcsMHhGNiwweEI3LDB4RUUsMHhFQSwweDg4LDB4QUEs
MHhBQSwKKyAgICAweEI2LDB4RUUsMHg1NSwweEU2LDB4NTgsMHg3OCwweDY4LDB4RTAsMHg1NSww
eEU2LDB4RjMsMHhENSwweDI2LDB4MzcsMHgxRiwweDE2LAorICAgIDB4RDcsMHhGNiwweDk2LDB4
RUUsMHgyQiwweEE5LDB4MkIsMHgyRCwweEI3LDB4RUUsMHgzNCwweEU2LDB4NUUsMHg3QywweDc4
LDB4NTgsCisgICAgMHgzNCwweEU2LDB4OTIsMHhDRCwweDcwLDB4NzgsMHg3MCwweDc4LDB4OTIs
MHhENSwweDMwLDB4QzUsMHhGQiwweDZBLDB4NjgsMHhCMCwKKyAgICAweEQzLDB4REQsMHg1MSww
eEM1LDB4MkQsMHgyRCwweDNELDB4QTcsMHgxNCwweERFLDB4QjIsMHhENSwweDgyLDB4QzIsMHg0
MiwweEMyLAorICAgIDB4QjIsMHhENSwweDMwLDB4QzUsMHgyQSwweEJFLDB4OUYsMHhENiwweEY0
LDB4REQsMHg1MSwweENELDB4ODIsMHg4QiwweENCLDB4N0QsCisgICAgMHhGMywweERELDB4MzEs
MHhDNSwweDM3LDB4MkUsMHhBNiwweEFELDB4QjYsMHhGNiwweEYzLDB4REQsMHgwQiwweDI5LDB4
MDksMHgwQiwKKyAgICAweEQ3LDB4RjYsMHg3NSwweEVFLDB4N0EsMHhGQSwweEZBLDB4Q0EsMHg5
NiwweEVFLDB4MzQsMHhFNiwweEZFLDB4NTYsMHg1QSwweEZDLAorICAgIDB4NTUsMHhFNiwweDM0
LDB4RTYsMHgwOSwweDI1LDB4OUQsMHhGRSwweDk2LDB4RUUsMHgzNCwweEU2LDB4QUQsMHhBQiww
eEFGLDB4QUYsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEFGLDB4QkIsMHg3RCwweDdELDB4
RDUsMHhGNiwweEI2LDB4RUUsMHg1NywweDc1LDB4RjUsMHhGNywKKyAgICAweEQ2LDB4RjYsMHhC
NiwweEVFLDB4RDksMHhERiwweEZBLDB4RUIsMHhENiwweEY2LDB4QjYsMHhFRSwweEQ5LDB4N0Es
MHhBRSwweEE3LAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHg3RiwweDZCLDB4QUIsMHg4RCww
eEQ2LDB4RjYsMHhCNiwweEVFLDB4QUQsMHhDRiwweEZFLDB4RkUsCisgICAgMHhENiwweEY2LDB4
OTYsMHhFRSwweDZBLDB4QUEsMHgzMiwweDM4LDB4RDYsMHhGNiwweEI2LDB4RUUsMHhFMywweEVB
LDB4REEsMHg3RSwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4REQsMHg1NywweEQ2LDB4Qjcs
MHhCNiwweEY2LDB4RDcsMHhFRSwweEVCLDB4RUIsMHhFQSwweEZCLAorICAgIDB4RDcsMHhGNiww
eEI2LDB4RUUsMHhGRiwweEZFLDB4N0UsMHg1QSwweEQ2LDB4RjYsMHhCNiwweEVFLDB4QUYsMHgy
QiwweEFCLDB4RkUsCisgICAgMHhCNiwweEVFLDB4OTUsMHhFRSwweEY4LDB4QTAsMHg3OCwweDUw
LDB4QjYsMHhGNiwweDk1LDB4RUUsMHg3NywweEVFLDB4RUIsMHhGNywKKyAgICAweEI2LDB4RjYs
MHg3NSwweEVFLDB4NkYsMHgzRSwweEFGLDB4M0EsMHhCNSwweEY2LDB4OTYsMHhFRSwweDBCLDB4
Q0EsMHhCQSwweDdFLAorICAgIDB4OTUsMHhGNiwweEI2LDB4RUUsMHhGRiwweEZCLDB4RkEsMHhB
RSwweDk2LDB4RjYsMHhCNiwweEVFLDB4RTUsMHhGRCwweDdCLDB4NUUsCisgICAgMHhENiwweEY2
LDB4QjYsMHhFRSwweDk1LDB4QjUsMHhBQiwweEJBLDB4RDcsMHhGNiwweEI2LDB4RTYsMHg4MCww
eDIyLDB4QTIsMHgyMCwKKyAgICAweEQ3LDB4RjYsMHhGNiwweEVFLDB4MjAsMHgyMiwweDI4LDB4
MDAsMHhENywweEY2LDB4QjYsMHhFRSwweDhBLDB4NUUsMHhGRSwweEFBLAorICAgIDB4RjgsMHhG
NiwweEQ3LDB4RjYsMHg3RCwweDc5LDB4N0QsMHhENSwweEQ2LDB4RjYsMHhCNiwweEY2LDB4MTgs
MHhCRSwweEFBLDB4MjAsCisgICAgMHhCNiwweEY2LDB4NTIsMHhDRCwweEMwLDB4QzAsMHg2MCww
eDQwLDB4MkMsMHhBQywweDA1LDB4NkEsMHg1OCwweDVDLDB4NTQsMHg1RSwKKyAgICAweDA2LDB4
NkEsMHg2NCwweDU5LDB4QjAsMHg2QSwweDdFLDB4NzcsMHg2NCwweDYxLDB4RTIsMHg0OCwweDJB
LDB4OTYsMHhERSwweERFLAorICAgIDB4MDYsMHg3MiwweDIzLDB4NTksMHhBQSwweDBCLDB4QTks
MHgyRCwweDA2LDB4NzIsMHhBNSwweDYxLDB4NzgsMHhBOCwweEEyLDB4RUEsCisgICAgMHhBNSww
eDY5LDB4NDQsMHg1OSwweDI4LDB4RUMsMHg3RSwweDk4LDB4ODUsMHg2MSwweDQ0LDB4NTksMHhF
QSwweDRFLDB4QTYsMHgyNywKKyAgICAweEM1LDB4NjEsMHgyMywweDUxLDB4M0IsMHhCNywweEJG
LDB4QTUsMHhFNiwweDY5LDB4ODUsMHg1OSwweDNGLDB4QkQsMHhCRiwweDk3LAorICAgIDB4ODgs
MHg3QSwweDA2LDB4NkEsMHgwRCwweDNELDB4M0QsMHgzNSwweDJDLDB4QUMsMHg0NywweDcyLDB4
MkYsMHhBRiwweEJGLDB4QkQsCisgICAgMHg5NiwweEY2LDB4MEMsMHhBNCwweDAyLDB4MEIsMHgw
RCwweDI1LDB4RjcsMHhGRSwweDk2LDB4RjYsMHhBQSwweEFBLDB4QUIsMHhBOSwKKyAgICAweEQ2
LDB4RkUsMHhENywweEY2LDB4RkYsMHhGRiwweEZGLDB4RkYsMHhCNiwweEZFLDB4RDcsMHhGNiww
eDU1LDB4NzUsMHg2NywweDdELAorICAgIDB4RjcsMHhGRSwweEI2LDB4RjYsMHhENywweDVFLDB4
NzYsMHg3RSwweEQ3LDB4RjYsMHhCNiwweEY2LDB4NkUsMHhDRiwweEJELDB4REYsCisgICAgMHhE
NywweEY2LDB4QjYsMHhGNiwweDU1LDB4NTYsMHg1NCwweDU3LDB4RDcsMHhGNiwweEI2LDB4RjYs
MHg3NSwweEJELDB4QjcsMHgyRiwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEY2LDB4REUsMHhGOCww
eEJDLDB4NTMsMHhENiwweEY2LDB4QjYsMHhGNiwweDZELDB4RkYsMHhGNiwweEE0LAorICAgIDB4
RDYsMHhGNiwweEI2LDB4RjYsMHgxRiwweDBGLDB4OEIsMHhCOCwweEY3LDB4RjYsMHhENiwweEY2
LDB4MzUsMHgxNSwweDk1LDB4NTUsCisgICAgMHgxNywweEZGLDB4RDcsMHhGNiwweEVFLDB4RUEs
MHhFRiwweEVGLDB4MTcsMHhGRiwweEY3LDB4RjYsMHhENSwweDc1LDB4RkQsMHhGRCwKKyAgICAw
eEQ3LDB4RkUsMHhGNywweEY2LDB4RjksMHhCNywweEFELDB4MkIsMHhGNywweEZFLDB4OTUsMHhF
RSwweDAwLDB4QUEsMHhFQSwweDc4LAorICAgIDB4RDYsMHhGNiwweEYwLDB4QzQsMHhBMCwweEU4
LDB4NkEsMHg1QSwweDcxLDB4RDUsMHg0NiwweDdBLDB4RTAsMHhFOCwweDVBLDB4NUUsCisgICAg
MHhDOCwweDgyLDB4QzUsMHg2OSwweEU4LDB4QkUsMHhGQiwweEY3LDB4NDYsMHg3QSwweDA1LDB4
NzIsMHhFOCwweDkwLDB4NjAsMHg4RiwKKyAgICAweDQ2LDB4ODIsMHhFNSwweDcxLDB4QUMsMHhC
QSwweDJELDB4RUEsMHg4NywweDhBLDB4MjYsMHg3QSwweEJELDB4RjMsMHg4OSwweDJCLAorICAg
IDB4QTgsMHg4QSwweDQ2LDB4ODIsMHgyQSwweEJGLDB4REYsMHhGRSwweEE4LDB4OEEsMHgyNiww
eDdBLDB4QTgsMHhBMCwweEVGLDB4REYsCisgICAgMHhBOCwweDgyLDB4RTUsMHg3MSwweDJBLDB4
M0UsMHgxRiwweDM3LDB4NTUsMHhFRSwweDhBLDB4OUIsMHgwRCwweDI5LDB4MDksMHgwQiwKKyAg
ICAweDE4LDB4RkYsMHhENywweEZFLDB4MzksMHhBOSwweEFCLDB4MkIsMHgxNywweEZGLDB4MTgs
MHhGNywweEY4LDB4QTgsMHhCQSwweEVBLAorICAgIDB4MTcsMHhGRiwweDE4LDB4RjcsMHhGQiww
eEJFLDB4RUIsMHhFRSwweDE4LDB4RkYsMHgxNywweEY3LDB4RkYsMHhFRiwweEZFLDB4RUIsCisg
ICAgMHgxOCwweEZGLDB4MTcsMHhGNywweEVFLDB4RkUsMHhBRiwweEZCLDB4MTgsMHhGRiwweEY3
LDB4RjYsMHg4MiwweEUwLDB4NzAsMHg3QSwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4Nzgs
MHhGQSwweDVFLDB4QUEsMHhGNywweEY2LDB4RDcsMHhGNiwweEFBLDB4QUEsMHg4QSwweDgzLAor
ICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhGRCwweEZBLDB4QkEsMHhBNiwweEY3LDB4RjYsMHhE
NywweEY2LDB4RjcsMHhCRiwweEZGLDB4RkYsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDM2
LDB4QkEsMHg3NiwweDVFLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg3NSwweEQ3LDB4OUQsMHhENSwK
KyAgICAweEY3LDB4RjYsMHg5NywweEY2LDB4QjIsMHhBQSwweEEwLDB4QTIsMHhENywweEY2LDB4
RjcsMHhFRSwweDgwLDB4QTAsMHgwMCwweEEwLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg4
RiwweEVELDB4MzUsMHgzMSwweDE4LDB4RkYsMHhGNywweEY2LDB4MzUsMHgwRCwweEJBLDB4RUEs
CisgICAgMHgxOCwweEZGLDB4QjYsMHhFRSwweEUwLDB4NzgsMHhGRSwweERGLDB4QjcsMHhGNiww
eEI2LDB4RUUsMHhGRiwweDk3LDB4QkYsMHhBQSwKKyAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4
QTIsMHhBQSwweEEwLDB4RkEsMHg5NiwweEY2LDB4NzUsMHhFRSwweDcwLDB4NjAsMHhFOCwweDc4
LAorICAgIDB4OTYsMHhFRSwweDE0LDB4REUsMHhBOCwweEU4LDB4RTgsMHg1QSwweDU1LDB4RTYs
MHhCMywweEQ1LDB4QTgsMHhBQSwweEUyLDB4N0EsCisgICAgMHgxNCwweERFLDB4NzEsMHhDRCww
eDc4LDB4N0EsMHhENywweDI1LDB4QjYsMHhGNiwweDkyLDB4RDUsMHhCRCwweDJELDB4MEIsMHgw
MiwKKyAgICAweEY3LDB4RkUsMHg5NiwweEY2LDB4QkQsMHhBRiwweEJCLDB4OEEsMHhGNywweEY2
LDB4QjcsMHhFRSwweEVBLDB4QkEsMHhFQSwweEFFLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYs
MHhGRiwweERELDB4NTcsMHg1NSwweEY3LDB4RjYsMHhENywweEY2LDB4NTksMHhENSwweDU1LDB4
QjUsCisgICAgMHhGOCwweEY2LDB4QjYsMHhFRSwweEVFLDB4N0YsMHhCRSwweDJBLDB4RjcsMHhG
NiwweEI3LDB4RUUsMHhGRiwweEZGLDB4RUIsMHhBQSwKKyAgICAweEQ3LDB4RjYsMHhCNywweEVF
LDB4RUMsMHhCRiwweEFDLDB4MzgsMHhENywweEY2LDB4QjcsMHhFRSwweEFCLDB4MkUsMHg4RSww
eEFBLAorICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHgwOCwweEEyLDB4QTgsMHhFQSwweEQ3LDB4
RjYsMHhCNiwweEVFLDB4ODgsMHgzRSwweEJFLDB4QjcsCisgICAgMHhENywweEY2LDB4QjYsMHhF
RSwweEZFLDB4NkUsMHhGRSwweDdFLDB4RDcsMHhGNiwweEI2LDB4RUUsMHhGRiwweDNGLDB4M0Ys
MHhBRiwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4REQsMHg3RSwweDcwLDB4RUEsMHhENiww
eEY2LDB4QjcsMHhFRSwweDVELDB4NUYsMHg1RiwweEZCLAorICAgIDB4RDcsMHhGNiwweEI3LDB4
RUUsMHhBRCwweEZELDB4QUQsMHhCNywweEY4LDB4RkUsMHhENywweEVFLDB4MkIsMHgyNywweDJE
LDB4RjUsCisgICAgMHgzOCwweEZGLDB4RjgsMHhGNiwweDJBLDB4QUEsMHhBRiwweEJGLDB4Mzgs
MHhGRiwweDE5LDB4RkYsMHgyRSwweEE2LDB4QUYsMHhBRiwKKyAgICAweDM4LDB4RkYsMHhGNyww
eEY2LDB4N0EsMHhFQSwweEUwLDB4ODAsMHgxOCwweEY3LDB4RjcsMHhGNiwweDU1LDB4NTUsMHg1
NywweDVFLAorICAgIDB4RjgsMHhGNiwweEQ3LDB4RjYsMHhFOCwweEFBLDB4RkIsMHgyRSwweEY3
LDB4RjYsMHhENywweEY2LDB4NkEsMHgyRSwweDJCLDB4QTgsCisgICAgMHhGNywweEY2LDB4RDcs
MHhGNiwweEE1LDB4RDYsMHhGQSwweDdBLDB4RjcsMHhGNiwweDk2LDB4RUUsMHhFMCwweEFBLDB4
RDgsMHhGQSwKKyAgICAweEI3LDB4RjYsMHhENywweEVFLDB4QkUsMHg4QSwweEFBLDB4QTAsMHhE
NywweEY2LDB4QjYsMHhFRSwweDJCLDB4MkEsMHhBQSwweDBGLAorICAgIDB4RDcsMHhGNiwweDM0
LDB4REUsMHhGOCwweDc4LDB4RTgsMHg3OCwweDU0LDB4RTYsMHhEMiwweEQ1LDB4MzYsMHgzNiww
eDNFLDB4MkUsCisgICAgMHhENywweEY2LDB4NzUsMHhFNiwweDBGLDB4ODksMHgwMSwweDBCLDB4
RDcsMHhGNiwweDM0LDB4RTYsMHg3OCwweDc4LDB4RTgsMHhFMiwKKyAgICAweDM0LDB4RTYsMHg5
MiwweENELDB4NTgsMHg1QSwweDU4LDB4NzgsMHhCMywweEQ1LDB4NzEsMHhDRCwweDVGLDB4RUEs
MHhDMywweEMyLAorICAgIDB4RDIsMHhENSwweDcxLDB4Q0QsMHgyRCwweDE3LDB4QTUsMHhBNSww
eDE0LDB4REUsMHhEMywweERELDB4NjMsMHhFQiwweDhBLDB4Q0QsCisgICAgMHg5MiwweENELDB4
RUYsMHhCQywweEVBLDB4QjgsMHhGOCwweDVDLDB4NTEsMHhDNSwweDEwLDB4QzUsMHgyOCwweEJF
LDB4QkUsMHg1NSwKKyAgICAweDc1LDB4RUUsMHg1MSwweENELDB4QkQsMHhBNSwweDJELDB4MEQs
MHhENywweEY2LDB4NzUsMHhFRSwweEFELDB4MjksMHgwQSwweDAyLAorICAgIDB4RDcsMHhGNiww
eDc1LDB4RUUsMHhDMiwweEFBLDB4NjgsMHhBOCwweDk2LDB4RUUsMHgzNCwweEU2LDB4N0MsMHhG
QSwweDdBLDB4NkUsCisgICAgMHg1NSwweEU2LDB4MzQsMHhFNiwweERFLDB4REIsMHg3NywweDVC
LDB4NzUsMHhFRSwweDU1LDB4RTYsMHgwNywweDA5LDB4MjksMHg3NSwKKyAgICAweEQ2LDB4RjYs
MHg5NSwweEVFLDB4QUYsMHhBOSwweEFCLDB4QUIsMHhCNSwweEY2LDB4RDYsMHhFRSwweEFGLDB4
QUEsMHhGQSwweEUyLAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHg4RiwweDc4LDB4NTAsMHg3
MSwweEQ2LDB4RjYsMHhCNiwweEVFLDB4QUQsMHhBQiwweEZGLDB4QTcsCisgICAgMHhENiwweEY2
LDB4QjYsMHhFRSwweEFELDB4NzcsMHg3NywweEZGLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhFQSww
eEJCLDB4QUIsMHg4QSwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4QkYsMHg2RiwweDZBLDB4
NzIsMHhENiwweEY2LDB4QjYsMHhFRSwweDVGLDB4NTksMHhGRSwweDdFLAorICAgIDB4RDYsMHhG
NiwweEI2LDB4RUUsMHgyQiwweEFGLDB4RkYsMHhGNywweEQ2LDB4RjYsMHhCNiwweEVFLDB4QUUs
MHhCQSwweERFLDB4RkIsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDc4LDB4QkYsMHg3NSww
eEZELDB4RDYsMHhGNiwweEI2LDB4RUUsMHhGRSwweEZFLDB4RkYsMHg2QiwKKyAgICAweEQ2LDB4
RjYsMHg5NSwweEVFLDB4NTYsMHhEQSwweDdFLDB4RkYsMHhCNiwweEY2LDB4OTYsMHhFRSwweERG
LDB4NzcsMHhCRiwweENELAorICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHg5QSwweDdFLDB4RjIs
MHhFMiwweEI1LDB4RjYsMHg5NiwweEVFLDB4NUUsMHhERiwweEZGLDB4RkUsCisgICAgMHhCNiww
eEY2LDB4OTYsMHhFRSwweEZCLDB4RUIsMHhGRCwweEVELDB4RDYsMHhGNiwweDk2LDB4RUUsMHhB
RCwweEFGLDB4QkQsMHhGRiwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4QkEsMHgzNiwweDJG
LDB4MEIsMHhGNiwweEY2LDB4QjcsMHhFRSwweEJFLDB4QkUsMHhBQSwweEFCLAorICAgIDB4RDcs
MHhGNiwweEI2LDB4RUUsMHhFQywweEFDLDB4QTgsMHgyOCwweEQ3LDB4RjYsMHhGNiwweEVFLDB4
MDAsMHhBOCwweEE4LDB4ODgsCisgICAgMHhENiwweEY2LDB4RjcsMHhFRSwweDg4LDB4MEEsMHgw
MiwweDAwLDB4RDYsMHhGNiwweEI3LDB4RjYsMHhFOCwweEMyLDB4RTAsMHhGQSwKKyAgICAweEI2
LDB4RjYsMHg3MiwweEQ1LDB4NjAsMHg2MCwweDYwLDB4NDAsMHg4QiwweDlCLDB4ODQsMHg1OSww
eDdDLDB4NUMsMHg1QywweDVDLAorICAgIDB4QTUsMHg2MSwweDQzLDB4NTEsMHhFQywweDdBLDB4
RkEsMHg4RiwweDY1LDB4NTksMHhFMywweDQ4LDB4RUUsMHg2QSwweDc4LDB4RTAsCisgICAgMHhB
NSwweDYxLDB4QzIsMHg0OCwweDBGLDB4MkQsMHhCRCwweEJGLDB4MDYsMHg3MiwweDg0LDB4NTks
MHg4QSwweEFBLDB4RkYsMHhCRCwKKyAgICAweEM1LDB4NjksMHg2NCwweDU5LDB4NTgsMHg3RSww
eEVFLDB4NkEsMHg2NCwweDU5LDB4MDQsMHg1MSwweDhBLDB4QUEsMHg5OCwweEFBLAorICAgIDB4
NjQsMHg1OSwweDI0LDB4NTEsMHgyRiwweEZCLDB4RkEsMHhBQiwweEM1LDB4NjEsMHg0NCwweDUx
LDB4MkUsMHgzRiwweEJELDB4RDUsCisgICAgMHgyNywweDcyLDB4QzUsMHg2MSwweDJGLDB4MkQs
MHg1RCwweDU1LDB4MDksMHg4QiwweEU2LDB4NjEsMHgyQiwweEFGLDB4QkQsMHhCNSwKKyAgICAw
eDkyLDB4RDUsMHgyOSwweDhCLDB4MkQsMHhCRCwweEY1LDB4NTUsMHhCNiwweEY2LDB4NkUsMHhC
NCwweDAwLDB4MDIsMHgwQiwweDBELAorICAgIDB4RDcsMHhGRSwweEQ2LDB4RjYsMHhGRiwweEZF
LDB4RUEsMHhBQSwweEI3LDB4RkUsMHhENywweEY2LDB4NzcsMHhGRCwweDU3LDB4NTUsCisgICAg
MHhENywweEY2LDB4QjYsMHhGNiwweEY4LDB4RTIsMHhFMCwweDgwLDB4RDcsMHhGNiwweEI2LDB4
RjYsMHg3RSwweEVCLDB4RjksMHhBOSwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEY2LDB4RDUsMHhC
NSwweEFGLDB4QkYsMHhENywweEY2LDB4QjYsMHhGNiwweEFFLDB4RjYsMHhBQSwweEVCLAorICAg
IDB4RDYsMHhGNiwweEI3LDB4RjYsMHg2MCwweEUyLDB4MjAsMHhBQSwweEQ2LDB4RjYsMHhCNiww
eEY2LDB4MUEsMHhBRSwweDlBLDB4M0EsCisgICAgMHhENiwweEY2LDB4QjcsMHhGNiwweDc4LDB4
Q0EsMHg4MCwweEEwLDB4RjcsMHhGRSwweEI2LDB4RjYsMHhBQiwweEJGLDB4QTcsMHhBRCwKKyAg
ICAweEY3LDB4RkUsMHhENywweEY2LDB4OEIsMHhBQSwweDhCLDB4QUIsMHhGNywweEZFLDB4RDcs
MHhGNiwweDhCLDB4QUUsMHhBQSwweEFBLAorICAgIDB4RjcsMHhGRSwweEI2LDB4RjYsMHhBOCww
eEEyLDB4RUEsMHg2OCwweEI2LDB4RjYsMHgzMSwweENELDB4ODAsMHg4MCwweEU4LDB4NzgsCisg
ICAgMHg3MiwweEQ1LDB4MjUsMHg3MiwweEEwLDB4RTAsMHg3OCwweDdFLDB4MDksMHg4QiwweEU1
LDB4NjksMHhEQywweERFLDB4RDcsMHhGRCwKKyAgICAweDQ2LDB4N0EsMHgwNSwweDcyLDB4RDEs
MHhBRiwweDNGLDB4MkEsMHg2NywweDgyLDB4MjYsMHg3QSwweEI1LDB4NUYsMHgxRiwweDAzLAor
ICAgIDB4NjcsMHg4MiwweDI2LDB4N0EsMHg1NywweERDLDB4MzgsMHg4MCwweDg3LDB4OEEsMHgw
NiwweDdBLDB4MjMsMHg4MiwweENBLDB4NUUsCisgICAgMHg2NywweDgyLDB4MjYsMHg3QSwweDI4
LDB4RTIsMHhDQiwweDU5LDB4NjcsMHg4MiwweDI2LDB4N0EsMHhCMiwweEJFLDB4QkQsMHg3NywK
KyAgICAweDBELDB4QUMsMHg2NiwweDdBLDB4RDUsMHg5NSwweEI1LDB4MzUsMHhENywweEZFLDB4
OEUsMHhCQywweDJELDB4MjksMHgwOSwweDBCLAorICAgIDB4MTgsMHhGRiwweEY3LDB4RkUsMHhC
RCwweEI1LDB4QUQsMHgyRCwweEY3LDB4RkUsMHgzOCwweEY3LDB4QkUsMHhFQSwweEZBLDB4N0Us
CisgICAgMHgxOCwweEZGLDB4MzcsMHhGNywweDgyLDB4QUEsMHhBQiwweEFCLDB4MzgsMHhGRiww
eDE3LDB4RjcsMHg3NywweDVGLDB4REQsMHhGRSwKKyAgICAweDM4LDB4RkYsMHhGNywweEY2LDB4
QUIsMHhCQSwweEFCLDB4QUEsMHgxOCwweEZGLDB4RjcsMHhGNiwweDdCLDB4RUEsMHhGOCwweEQ4
LAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBMCwweEIwLDB4RTgsMHhBRSwweEY3LDB4RjYs
MHhENywweEY2LDB4QUEsMHhFRSwweEFFLDB4QTgsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiww
eEJCLDB4RUEsMHhFQSwweEMyLDB4RjcsMHhGNiwweEI3LDB4RUUsMHhCQSwweEY4LDB4QUEsMHgy
QSwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4RDUsMHg1NSwweDU3LDB4MjgsMHhGNywweEY2
LDB4RDcsMHhGNiwweEY1LDB4QUQsMHhFQiwweEM4LAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYs
MHg3RSwweERGLDB4RUYsMHgwRSwweEY3LDB4RjYsMHhENywweEY2LDB4QjUsMHg1RiwweDlFLDB4
MkUsCisgICAgMHgxNywweEZGLDB4RDcsMHhGNiwweEFGLDB4MEIsMHhBQiwweEEyLDB4MTcsMHhG
RiwweEI2LDB4RjYsMHhDOCwweEU4LDB4NUEsMHg1NywKKyAgICAweEQ2LDB4RjYsMHg5NiwweEVF
LDB4MjgsMHhBQSwweEJGLDB4QUYsMHhCNiwweEY2LDB4RDcsMHhFRSwweDhBLDB4MEEsMHgyMCww
eDgyLAorICAgIDB4RDYsMHhGNiwweDk2LDB4RUUsMHg3RiwweDVFLDB4NUUsMHg3RSwweDk2LDB4
RUUsMHgzNCwweEU2LDB4QTAsMHhFOCwweEY4LDB4RkUsCisgICAgMHg3NSwweEU2LDB4RjMsMHhE
NSwweEY4LDB4RkEsMHg2QSwweDdBLDB4MzUsMHhFNiwweDkyLDB4Q0QsMHg3QSwweDVFLDB4QkYs
MHgyRSwKKyAgICAweEQ3LDB4RjYsMHg5MiwweEQ1LDB4QjUsMHhBRiwweDJBLDB4MDIsMHhENyww
eEY2LDB4QjYsMHhGNiwweDIxLDB4MEQsMHgwRCwweDA5LAorICAgIDB4RjcsMHhGNiwweEQ3LDB4
RjYsMHg3OSwweEZELDB4RjUsMHg1NSwweEY3LDB4RjYsMHhENywweEY2LDB4RjUsMHhGQiwweDVG
LDB4NUQsCisgICAgMHhGNywweEY2LDB4QjcsMHhFRSwweEFCLDB4QUIsMHhBRiwweEFGLDB4Rjcs
MHhGNiwweEI3LDB4RUUsMHgyQSwweEFBLDB4RUEsMHhGQSwKKyAgICAweEQ3LDB4RjYsMHhGNyww
eEVFLDB4MkEsMHgwMCwweDAwLDB4MjAsMHhENywweEY2LDB4QjcsMHhFRSwweDgyLDB4ODAsMHhB
MCwweDgwLAorICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHhBOCwweEVCLDB4ODIsMHhDOCwweEQ3
LDB4RjYsMHhCNywweEVFLDB4MjgsMHgwMiwweEMyLDB4RUEsCisgICAgMHhENywweEY2LDB4Qjcs
MHhFRSwweEY4LDB4MkEsMHhBRSwweEFGLDB4RDcsMHhGNiwweEI2LDB4RUUsMHhBNywweEI1LDB4
RkYsMHhERiwKKyAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4NzcsMHhCRSwweEJDLDB4QTgsMHhE
NywweEY2LDB4QjYsMHhFRSwweDhCLDB4OEIsMHgyRiwweEJFLAorICAgIDB4RDcsMHhGNiwweEI3
LDB4RUUsMHhDOCwweDgyLDB4MDAsMHg4MCwweEQ3LDB4RjYsMHhCNywweEVFLDB4RTgsMHhBRSww
eEVBLDB4MkEsCisgICAgMHhENywweEY2LDB4QjYsMHhFRSwweEVGLDB4RkIsMHhBQSwweEFGLDB4
RDcsMHhGNiwweEI2LDB4RUUsMHgyOSwweEVGLDB4QUEsMHgwQSwKKyAgICAweDE4LDB4RjcsMHhE
NywweEY2LDB4MkIsMHhBQiwweEFGLDB4QkQsMHgzOCwweEZGLDB4RjcsMHhGNiwweEFCLDB4MkEs
MHgyQiwweEVELAorICAgIDB4MzksMHhGRiwweDM4LDB4RkYsMHhFQiwweEFGLDB4QUYsMHhCRiww
eDM4LDB4RkYsMHhGNywweEY2LDB4NUUsMHg3QSwweDc4LDB4NjAsCisgICAgMHhGNywweEY2LDB4
RDcsMHhGNiwweEFGLDB4MDksMHhBOCwweDgzLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhDOCwweDYy
LDB4N0UsMHg1NywKKyAgICAweEY3LDB4RjYsMHg5NiwweEVFLDB4QTAsMHhBQSwweEVBLDB4REYs
MHhENywweEY2LDB4OTYsMHhFRSwweDcwLDB4RkUsMHg1RiwweDU3LAorICAgIDB4QjYsMHhFRSww
eDk2LDB4RUUsMHg4QSwweEFGLDB4M0YsMHhBNSwweEQ3LDB4RjYsMHhCNiwweEVFLDB4MEQsMHgw
RCwweDJELDB4MjUsCisgICAgMHhENywweEY2LDB4RjQsMHhERCwweEU4LDB4RTAsMHg2MCwweDYw
LDB4MTQsMHhERSwweDUxLDB4QzUsMHgwMCwweDIwLDB4MkUsMHgzNSwKKyAgICAweEQ2LDB4RjYs
MHg1NSwweEU2LDB4MDksMHgyRCwweEFELDB4QkQsMHhENywweEY2LDB4NTUsMHhFRSwweDYyLDB4
RTgsMHhFQSwweEU4LAorICAgIDB4MzUsMHhFNiwweDkyLDB4Q0QsMHg1QSwweDU4LDB4NTgsMHg1
OCwweEIyLDB4RDUsMHg3MSwweENELDB4NjMsMHhDMiwweEMyLDB4QzIsCisgICAgMHhCMiwweEQ1
LDB4NzEsMHhDRCwweEI1LDB4QUQsMHgyRCwweDJELDB4MTMsMHhERSwweEIyLDB4RDUsMHg4Qiww
eDgzLDB4MjksMHhBOSwKKyAgICAweDkyLDB4RDUsMHhDRiwweEJDLDB4N0MsMHg1QywweDVDLDB4
NUMsMHgzMSwweEM1LDB4QUUsMHhCNCwweDBCLDB4MkIsMHhCNSwweEQ3LAorICAgIDB4OTYsMHhF
RSwweDUxLDB4Q0QsMHgyRCwweEFGLDB4QkQsMHhGNSwweEQ3LDB4RjYsMHhGMywweERELDB4MDAs
MHgwQSwweDBCLDB4MkQsCisgICAgMHhENywweEY2LDB4NzUsMHhFRSwweEVBLDB4RjgsMHg1OCww
eEZBLDB4NzUsMHhFRSwweDM0LDB4RTYsMHhFOCwweEMwLDB4NzAsMHg3OCwKKyAgICAweDM1LDB4
RUUsMHg1NCwweEU2LDB4RTUsMHg1NywweERGLDB4NzYsMHg3NiwweEVFLDB4MzUsMHhFNiwweEZC
LDB4QUYsMHhCNiwweEZFLAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhGRCwweEZFLDB4RUUs
MHgyQSwweEQ2LDB4RjYsMHhCNiwweEVFLDB4REIsMHhGRiwweDdCLDB4NkEsCisgICAgMHhENiww
eEY2LDB4QjYsMHhFRSwweEFELDB4RUYsMHhBRCwweDNGLDB4QjYsMHhGNiwweEQ2LDB4RUUsMHhG
RiwweEZGLDB4RkYsMHhBRiwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4QTYsMHhFQSwweEVB
LDB4QUEsMHhENiwweEY2LDB4QjYsMHhFRSwweEYyLDB4QUYsMHhBQSwweEEyLAorICAgIDB4RDYs
MHhGNiwweEI2LDB4RUUsMHhBMSwweDhFLDB4RkUsMHhBQSwweEQ2LDB4RjYsMHhCNiwweEVFLDB4
RTIsMHhBMywweDgyLDB4QkEsCisgICAgMHhENiwweEY2LDB4OTYsMHhFRSwweEEyLDB4OEEsMHhE
OCwweDhBLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhFQiwweEEyLDB4NjgsMHhBMiwKKyAgICAweEQ2
LDB4RjYsMHhCNiwweEVFLDB4NkUsMHhGMiwweEUyLDB4RUIsMHhENiwweEY2LDB4QjYsMHhFRSww
eEY5LDB4RkYsMHg3QSwweEFBLAorICAgIDB4RDYsMHhGNiwweDk2LDB4RUUsMHhGRiwweERGLDB4
RkEsMHhGQSwweEI2LDB4RjYsMHg5NiwweEVFLDB4OUYsMHhBQSwweDhCLDB4QkEsCisgICAgMHg5
NiwweEY2LDB4QjYsMHhFRSwweEJGLDB4RUQsMHhCQiwweEZGLDB4QjYsMHhGNiwweDk2LDB4RUUs
MHg3RSwweEZBLDB4Q0EsMHhBOCwKKyAgICAweDk2LDB4RjYsMHhCNiwweEVFLDB4N0UsMHg3Riww
eEY3LDB4RjcsMHhCNiwweEVFLDB4OTYsMHhFRSwweDIyLDB4MkEsMHhBQSwweEMyLAorICAgIDB4
RDYsMHhGNiwweEI2LDB4RUUsMHg4RiwweDBCLDB4MDMsMHgyRCwweEY2LDB4RjYsMHhCNiwweEVF
LDB4RUUsMHhGQSwweEZBLDB4RkUsCisgICAgMHhENiwweEY2LDB4QjcsMHhFNiwweDIwLDB4QTIs
MHgwQSwweDgwLDB4RDYsMHhGNiwweEY2LDB4RUUsMHgwOCwweDI4LDB4MjAsMHgwMiwKKyAgICAw
eEY2LDB4RjYsMHhCNiwweEVFLDB4RUIsMHhBRiwweEFGLDB4RkUsMHhENiwweEY2LDB4QjYsMHhG
NiwweDcyLDB4REEsMHhCQSwweDIwLAorICAgIDB4RDYsMHhGNiwweEIyLDB4RDUsMHg2MCwweDYw
LDB4NjAsMHhFMCwweDZDLDB4QUMsMHg4MywweDUxLDB4NUUsMHg1QywweDVDLDB4NUMsCisgICAg
MHhBNSwweDYxLDB4MjMsMHg1MSwweDJGLDB4QjcsMHg3RiwweERBLDB4ODUsMHg1OSwweDIzLDB4
NTEsMHg2QSwweEU4LDB4QUEsMHhCNywKKyAgICAweDg1LDB4NTksMHgyMywweDUxLDB4RjUsMHg3
NywweDVDLDB4RUUsMHhDNiwweDYxLDB4MjQsMHg1MSwweDBCLDB4QUYsMHhFRiwweDU3LAorICAg
IDB4QTYsMHg2MSwweDQ0LDB4NTEsMHg4OCwweEVCLDB4N0UsMHg2QiwweDY0LDB4NTksMHgwMyww
eDQ5LDB4MkEsMHhGRSwweERFLDB4RkYsCisgICAgMHg0NCwweDUxLDB4MDMsMHg0OSwweDAwLDB4
QUUsMHg5NiwweDU3LDB4ODUsMHg1OSwweDIzLDB4NDksMHhBRiwweDJGLDB4QUYsMHhGRCwKKyAg
ICAweEU1LDB4NjEsMHg2NSwweDUxLDB4MkEsMHgyRiwweEFELDB4QUQsMHg4NywweDdBLDB4RTUs
MHg2MSwweDNELDB4RUQsMHgzNSwweEI1LAorICAgIDB4NEIsMHg5MywweDg4LDB4N0EsMHgyQiww
eDJELDB4MkQsMHgyRCwweEQzLDB4REQsMHg2QSwweDkzLDB4MkQsMHhCRCwweEY1LDB4RDUsCisg
ICAgMHhCNiwweEY2LDB4MEQsMHhBNCwweDAwLDB4MDIsMHgyRiwweEI1LDB4RDcsMHhGRSwweEY0
LDB4REQsMHgwMCwweDAwLDB4QUEsMHhGNSwKKyAgICAweEQ3LDB4RjYsMHhCMiwweEQ1LDB4MDAs
MHg4MCwweEVBLDB4NUYsMHhCNiwweEY2LDB4NTAsMHhDRCwweDAwLDB4MDAsMHgwQSwweEY1LAor
ICAgIDB4RDYsMHhGNiwweDU1LDB4RUUsMHg4MCwweDIyLDB4MjIsMHhCRCwweEQ2LDB4RjYsMHhC
NiwweEY2LDB4RUQsMHg3RiwweDdBLDB4OUQsCisgICAgMHhENiwweEY2LDB4QjYsMHhGNiwweDJG
LDB4QUIsMHhCQiwweDU1LDB4RDYsMHhGNiwweEI2LDB4RjYsMHhBOCwweERFLDB4RkUsMHhCRiwK
KyAgICAweEQ2LDB4RjYsMHhCNiwweEY2LDB4QTMsMHgyQiwweDg4LDB4NkEsMHhGNywweEZFLDB4
QjYsMHhGNiwweEE5LDB4QTcsMHgzRCwweDBELAorICAgIDB4RjcsMHhGRSwweEQ3LDB4RjYsMHg2
RiwweEJGLDB4RTgsMHhGQywweEY3LDB4RkUsMHhENywweEY2LDB4MkEsMHgyQiwweENBLDB4NjAs
CisgICAgMHhENywweEZFLDB4NzIsMHhENSwweDgwLDB4ODAsMHhFMCwweDdBLDB4MzQsMHhFNiww
eDg3LDB4N0EsMHhBMCwweEU4LDB4NkEsMHg3RSwKKyAgICAweDhCLDB4OUIsMHgwNSwweDcyLDB4
NTgsMHg1RSwweDU3LDB4NTUsMHg0NiwweDdBLDB4MDUsMHg3MiwweEE3LDB4RUYsMHhFOCwweDAz
LAorICAgIDB4NjcsMHg4MiwweDI2LDB4N0EsMHgyRiwweDBELDB4MDUsMHgyRCwweDg3LDB4OEEs
MHg0NiwweDgyLDB4MzksMHgyRSwweEFGLDB4RTIsCisgICAgMHg4OCwweDhBLDB4MjYsMHg4Miww
eEE4LDB4RTIsMHg1MywweDdCLDB4NjcsMHg4QSwweEU1LDB4NzksMHg3NiwweEYwLDB4RkUsMHhF
RiwKKyAgICAweDQ2LDB4ODIsMHhFNCwweDcxLDB4RUIsMHg2RiwweENCLDB4MDMsMHhDOCwweDky
LDB4MjUsMHg3QSwweERELDB4RjcsMHhCRiwweDJGLAorICAgIDB4NTIsMHhENSwweEE4LDB4OEEs
MHgzNSwweDM1LDB4M0QsMHgyRCwweEY4LDB4RkUsMHhEMywweEU1LDB4MkQsMHgwQiwweDBCLDB4
MDMsCisgICAgMHgxNywweEZGLDB4RjgsMHhGRSwweEI5LDB4QTksMHhFRiwweEJCLDB4MzgsMHhG
RiwweEY3LDB4RjYsMHhBQiwweEJCLDB4QUYsMHg4RiwKKyAgICAweDE4LDB4RkYsMHgzNywweEY3
LDB4RUIsMHhBQSwweEJBLDB4QUEsMHgzOCwweEZGLDB4MTgsMHhGRiwweDVFLDB4NUEsMHhEQSww
eEJGLAorICAgIDB4MTgsMHhGRiwweDM4LDB4RjcsMHgyOCwweEEyLDB4MjgsMHhBQSwweDE4LDB4
RkYsMHhGNywweEY2LDB4NzgsMHg3OCwweDdDLDB4NzgsCisgICAgMHhGNywweEY2LDB4RDcsMHhG
NiwweEQ2LDB4QUMsMHgyQSwweDAyLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhGOCwweEU4LDB4MkEs
MHhBRSwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4RUEsMHg2MiwweDhBLDB4QUEsMHhGNyww
eEY2LDB4RDcsMHhGNiwweDBFLDB4M0EsMHhFRSwweEY2LAorICAgIDB4RjcsMHhGNiwweEQ3LDB4
RjYsMHg4MCwweDAwLDB4QkEsMHhCRiwweEY3LDB4RjYsMHhENywweEY2LDB4QTgsMHhGRSwweEI4
LDB4QUEsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDJDLDB4QUMsMHhBQSwweDI4LDB4MTcs
MHhGRiwweEQ3LDB4RjYsMHhCRiwweDBCLDB4MEIsMHg4MiwKKyAgICAweDE4LDB4RjcsMHhCNiww
eEY2LDB4RTAsMHhGOCwweDc4LDB4NUYsMHhENiwweEY2LDB4OTYsMHhFRSwweEZBLDB4RkEsMHhF
QSwweEZGLAorICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHgyQiwweEFGLDB4RjcsMHg1RiwweEI2
LDB4RjYsMHg5NiwweEVFLDB4MzgsMHhFRiwweDVGLDB4N0QsCisgICAgMHhCNywweEY2LDB4NTUs
MHhFNiwweEU4LDB4RkEsMHg2RSwweDU3LDB4NzUsMHhFRSwweDE0LDB4RTYsMHhFOCwweEUyLDB4
RkEsMHg3RiwKKyAgICAweDk2LDB4RUUsMHhGMywweERELDB4NUIsMHhCRiwweEFGLDB4MEYsMHhE
NywweEZFLDB4MzQsMHhFNiwweEI1LDB4MkYsMHgwMiwweDAyLAorICAgIDB4RjcsMHhGNiwweEI3
LDB4RjYsMHhGRiwweEZBLDB4RUEsMHhBOCwweEY3LDB4RjYsMHhENywweEY2LDB4NTUsMHhFRiww
eDlELDB4M0QsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDVGLDB4NzYsMHg1RiwweEZGLDB4
RjcsMHhGNiwweEI2LDB4RUUsMHhEQiwweEFCLDB4QUUsMHhBRSwKKyAgICAweEQ3LDB4RjYsMHhG
NywweEVFLDB4MDAsMHg4MiwweEEyLDB4MDgsMHhCNywweEY2LDB4RjcsMHhFRSwweEFCLDB4MkYs
MHhBQiwweDJBLAorICAgIDB4RjcsMHhGNiwweEI3LDB4RjYsMHgyQSwweEJCLDB4RUYsMHhGRiww
eEQ3LDB4RjYsMHhCNiwweEVFLDB4ODAsMHhFMCwweEY4LDB4RkMsCisgICAgMHhENywweEY2LDB4
QjcsMHhFRSwweDRFLDB4QUEsMHhBQSwweDBBLDB4RDcsMHhGNiwweEI3LDB4RUUsMHhBQSwweEFF
LDB4RkEsMHg0QSwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4RUYsMHhGRiwweEVGLDB4QTIs
MHhENywweEY2LDB4QjcsMHhFRSwweEZGLDB4QUEsMHg4MiwweDAwLAorICAgIDB4RDcsMHhGNiww
eEI3LDB4RUUsMHgyQSwweDgyLDB4QTgsMHhCQSwweEQ3LDB4RjYsMHhCNywweEVFLDB4QTgsMHgw
OCwweDAwLDB4MDAsCisgICAgMHhGNywweEY2LDB4QjYsMHhFRSwweEZGLDB4RUIsMHhFQSwweEVB
LDB4RDcsMHhGNiwweEI2LDB4RUUsMHg4OCwweEFDLDB4M0UsMHhBQSwKKyAgICAweEI3LDB4RjYs
MHhGNywweEVFLDB4QkEsMHhGQSwweEFFLDB4QUUsMHhGNywweEY2LDB4RDcsMHhFRSwweEY1LDB4
RkQsMHhBRiwweEE5LAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhFRCwweEFELDB4QkUsMHhB
RSwweDE4LDB4RkYsMHhENywweEY2LDB4MEIsMHgyOSwweEFGLDB4QUYsCisgICAgMHgzOCwweEZG
LDB4MTgsMHhGNywweDIzLDB4MkIsMHhBRiwweEI1LDB4MzgsMHhGRiwweEY4LDB4RjYsMHhFOCww
eEU4LDB4QTAsMHhBMiwKKyAgICAweDE4LDB4RjcsMHhENywweEY2LDB4N0UsMHg1RSwweDVFLDB4
NTAsMHhENywweEY2LDB4QjcsMHhFRSwweEU4LDB4NzAsMHg3MiwweDVFLAorICAgIDB4RDcsMHhG
NiwweDk2LDB4RUUsMHhGQSwweEZFLDB4N0YsMHhERiwweDk2LDB4RUUsMHg5NywweEU2LDB4MDAs
MHg4OCwweDIyLDB4ODAsCisgICAgMHg5NiwweEVFLDB4NzYsMHhFNiwweDIwLDB4MjAsMHgwQiww
eDA4LDB4RDcsMHhGNiwweDk2LDB4RUUsMHgyRiwweDFELDB4QTcsMHgzRCwKKyAgICAweEQ3LDB4
RjYsMHhGNCwweERELDB4NjAsMHg2MCwweDYwLDB4NjgsMHhGMywweEQ1LDB4RUYsMHhCQywweEJG
LDB4MjcsMHhCRiwweDNGLAorICAgIDB4QjcsMHhGNiwweDM0LDB4RTYsMHgyOSwweDA5LDB4MkIs
MHgyOSwweEI2LDB4RjYsMHg3NiwweEVFLDB4RTgsMHhBOCwweEUyLDB4NkEsCisgICAgMHg1NSww
eEVFLDB4OTIsMHhENSwweDU4LDB4NTgsMHg1OCwweEY4LDB4RDMsMHhENSwweDkyLDB4Q0QsMHg1
NSwweDdCLDB4NkEsMHg3RSwKKyAgICAweEIyLDB4RDUsMHg3MSwweENELDB4MEQsMHgzNSwweEY1
LDB4OTcsMHhGMywweERELDB4QjIsMHhENSwweDBGLDB4MEQsMHgwRiwweDAxLAorICAgIDB4OTIs
MHhENSwweDhFLDB4QjQsMHhEOCwweEZDLDB4NTgsMHg3QywweENGLDB4QkMsMHg0RCwweEE0LDB4
MkEsMHgwQSwweDJCLDB4MjcsCisgICAgMHhEMywweERELDB4MTAsMHhDNSwweDA5LDB4MjksMHhB
OSwweEFELDB4NzUsMHhFRSwweEQzLDB4RDUsMHgyRCwweDNELDB4QjUsMHhGNSwKKyAgICAweEI2
LDB4RjYsMHg1NSwweEU2LDB4OEEsMHhBQSwweEVCLDB4QjUsMHg3NSwweEVFLDB4MzQsMHhFNiww
eDYwLDB4RjAsMHhFMCwweDIyLAorICAgIDB4NTUsMHhFNiwweDM0LDB4RTYsMHgzQiwweDI4LDB4
NDgsMHg1QywweDc1LDB4RUUsMHgzNCwweEU2LDB4RjcsMHhGNSwweEI1LDB4QjUsCisgICAgMHhE
NiwweEY2LDB4QjYsMHhFRSwweEFBLDB4QTgsMHhBRCwweEVELDB4RDYsMHhGNiwweEI2LDB4RUUs
MHhGQiwweEFGLDB4QUIsMHhBMiwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4RkMsMHhCMCww
eEFBLDB4RkEsMHhENiwweEY2LDB4QjcsMHhFRSwweEVBLDB4RkEsMHhGOCwweEU4LAorICAgIDB4
RDcsMHhGNiwweEI2LDB4RUUsMHhBQiwweEFBLDB4QUEsMHhBQiwweEQ2LDB4RjYsMHhENywweEVF
LDB4QUEsMHg4QSwweEE4LDB4OEEsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEFBLDB4RUEs
MHhFMCwweDAyLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhFQSwweDIxLDB4RUUsMHhCMiwKKyAgICAw
eEQ2LDB4RjYsMHhCNiwweEVFLDB4RkYsMHhGRSwweEJFLDB4MjIsMHhENiwweEY2LDB4QjYsMHhF
RSwweERBLDB4NzcsMHhERSwweDkwLAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhFOSwweEFC
LDB4QUIsMHgyQiwweEQ2LDB4RjYsMHhCNiwweEVFLDB4MkEsMHgzRCwweDA3LDB4NUEsCisgICAg
MHhENiwweEY2LDB4OTYsMHhFRSwweEZFLDB4RkUsMHhGRSwweEZFLDB4QjYsMHhGNiwweDk2LDB4
RUUsMHhEQSwweEJBLDB4OUUsMHg3RiwKKyAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4QUUsMHhB
RSwweDhBLDB4MkIsMHg5NiwweEY2LDB4QjYsMHhFRSwweEJGLDB4QUIsMHhBRiwweEY3LAorICAg
IDB4OTUsMHhGNiwweEI2LDB4RUUsMHhGRCwweEQ1LDB4NTYsMHg1NywweEQ2LDB4RjYsMHg5NSww
eEVFLDB4RUIsMHhGRiwweDlGLDB4MkYsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDJELDB4
MkIsMHgwRCwweDJFLDB4RDYsMHhGNiwweEY3LDB4RUUsMHg4MCwweEEwLDB4MDAsMHgyOCwKKyAg
ICAweEY2LDB4RjYsMHhCNiwweEVFLDB4RTIsMHhCQSwweEVFLDB4RkYsMHhGNiwweEY2LDB4RDYs
MHhGNiwweDU2LDB4RDUsMHhGRCwweEZGLAorICAgIDB4RjYsMHhGNiwweEI2LDB4RUUsMHhCRiww
eEFFLDB4RkUsMHhFQSwweEY1LDB4RkUsMHhENywweEY2LDB4NTcsMHg1NSwweEY1LDB4NUQsCisg
ICAgMHhENywweEY2LDB4MzMsMHhFRSwweDYwLDB4RTAsMHg4MCwweEEwLDB4RjIsMHhERCwweDgz
LDB4NTksMHg1RSwweDVDLDB4NzgsMHg3OCwKKyAgICAweDg0LDB4NTEsMHgwMywweDQ5LDB4QTAs
MHg3RSwweEZFLDB4N0UsMHg2NCwweDUxLDB4MDMsMHg0OSwweDNFLDB4RDcsMHhCQiwweEJCLAor
ICAgIDB4NjQsMHg1OSwweDIzLDB4NDksMHhCOCwweEJDLDB4RkIsMHg3RiwweDYzLDB4NTEsMHgy
NCwweDUxLDB4NUUsMHg3RSwweEJBLDB4NUYsCisgICAgMHg0NSwweDUxLDB4MDQsMHg0OSwweDAy
LDB4QjcsMHg1OCwweDVELDB4MjQsMHg1MSwweEUzLDB4NDAsMHgwOCwweEFBLDB4NzcsMHg3NywK
KyAgICAweDI0LDB4NDksMHhDMiwweDQwLDB4QTgsMHhBRSwweDA5LDB4QjcsMHg4NSwweDU5LDB4
MDMsMHg0OSwweEJCLDB4MDcsMHgyRCwweEJELAorICAgIDB4MDYsMHg2QSwweDY0LDB4NTksMHhB
QiwweEFGLDB4QUYsMHgyRCwweEE4LDB4N0EsMHhDNSwweDYxLDB4QjUsMHhBRCwweDJGLDB4MkIs
CisgICAgMHgyQSwweDhCLDB4ODgsMHg3MiwweDJELDB4MkYsMHhCRCwweEFELDB4QUIsMHg5Qiww
eDBBLDB4OEIsMHgyQiwweEFGLDB4QTksMHhCRCwKKyAgICAweDRFLDB4QUMsMHg2QSwweDkzLDB4
M0YsMHhERCwweDU1LDB4NTUsMHgzMSwweEM1LDB4NkIsMHg5MywweDAyLDB4RkYsMHg1NSwweDU1
LAorICAgIDB4MzEsMHhDNSwweDRBLDB4OEIsMHhBMCwweEZCLDB4RjcsMHg1RCwweDBGLDB4QzUs
MHg0QSwweDhCLDB4MkEsMHhBRiwweERGLDB4NTUsCisgICAgMHgzNCwweEU2LDB4OEIsMHg5Myww
eDAyLDB4QkIsMHhGNSwweDU1LDB4NzUsMHhFRSwweDhBLDB4OTMsMHgwMCwweDhBLDB4RkYsMHg1
NSwKKyAgICAweDk2LDB4RjYsMHgyQywweEE0LDB4MDAsMHgwMiwweEFGLDB4NTUsMHg5NiwweEY2
LDB4Q0YsMHhCQywweDAwLDB4MDAsMHhBQSwweDU1LAorICAgIDB4QjYsMHhGNiwweENGLDB4QkMs
MHgwMCwweDIyLDB4RkUsMHg1NSwweEQ3LDB4RjYsMHhGMCwweEM0LDB4MDAsMHgwMiwweDJCLDB4
QkQsCisgICAgMHhENywweEZFLDB4MTQsMHhFNiwweDAwLDB4MDAsMHg4MiwweDU1LDB4QjcsMHhG
NiwweEQwLDB4QzQsMHgwMCwweDgwLDB4QTAsMHg3RSwKKyAgICAweDE1LDB4RTYsMHhDOSwweDgy
LDB4QTAsMHhFOCwweDdBLDB4NUYsMHhDQywweEEzLDB4RTUsMHg2OSwweDc4LDB4NUUsMHg1Riww
eDc1LAorICAgIDB4MjYsMHg3MiwweEM0LDB4NjksMHhEQSwweDhBLDB4MDgsMHhFQSwweDQ2LDB4
ODIsMHgwNSwweDcyLDB4OEYsMHg4MSwweDhCLDB4RUIsCisgICAgMHg4NywweDhBLDB4NDcsMHg4
MiwweEJELDB4MDMsMHgyOSwweDc1LDB4ODgsMHg4QSwweDA1LDB4N0EsMHhBMCwweDk4LDB4Qjgs
MHhGMywKKyAgICAweDY3LDB4OEEsMHhFNSwweDc5LDB4RUEsMHhBQSwweEZFLDB4RjYsMHg2Nyww
eDhBLDB4RTUsMHg3OSwweEE3LDB4QUIsMHgyNywweDBGLAorICAgIDB4QTgsMHg5MiwweDA1LDB4
ODIsMHhCRCwweEZGLDB4MkEsMHgyQSwweDI5LDB4OUIsMHg2NywweDgyLDB4QjUsMHhCRiwweEFC
LDB4MkYsCisgICAgMHhEMywweEU1LDB4MjksMHg5QiwweDI1LDB4M0QsMHgyRCwweDJELDB4Rjcs
MHhGRSwweDU1LDB4RUUsMHgwMSwweDA5LDB4MDMsMHgwMywKKyAgICAweDE4LDB4RkYsMHhGOCww
eEZFLDB4QUIsMHhBRCwweEZCLDB4QkIsMHgzOCwweEZGLDB4RjgsMHhGNiwweEFGLDB4RUYsMHhG
RiwweEFGLAorICAgIDB4MTgsMHhGRiwweDM4LDB4RjcsMHhBMiwweEEwLDB4MjIsMHhBOCwweDM4
LDB4RkYsMHgxOCwweEY3LDB4QUYsMHhGRiwweEJFLDB4QUYsCisgICAgMHgzOCwweEZGLDB4MTgs
MHhGRiwweEZFLDB4N0EsMHg3QSwweDZFLDB4MTgsMHhGRiwweEY3LDB4RjYsMHg3OCwweDdFLDB4
REEsMHhFQSwKKyAgICAweDE3LDB4RkYsMHhGNywweEY2LDB4RDcsMHg1RCwweDU1LDB4N0QsMHhG
NywweEY2LDB4RDcsMHhGNiwweEE4LDB4MEUsMHgyQiwweDg4LAorICAgIDB4RjcsMHhGRSwweEY3
LDB4RjYsMHhGRCwweEQ3LDB4N0QsMHhERiwweEY3LDB4RjYsMHhENywweEY2LDB4NjAsMHhGMCww
eDgwLDB4OEIsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEFCLDB4MEEsMHgyRiwweDI2LDB4
RDcsMHhGRSwweEY3LDB4RjYsMHhERCwweEQ3LDB4NTcsMHhENSwKKyAgICAweDE4LDB4RkYsMHhG
NywweEY2LDB4OTUsMHgyRCwweDJCLDB4Q0YsMHgxNywweEZGLDB4QjYsMHhGNiwweEEwLDB4RTAs
MHg3QywweDdFLAorICAgIDB4RDYsMHhGNiwweDk2LDB4RUUsMHhGQSwweEZBLDB4REUsMHhGRSww
eEI2LDB4RjYsMHg5NiwweEVFLDB4RkYsMHhCRiwweDNGLDB4NzcsCisgICAgMHhCNiwweEY2LDB4
OTYsMHhFRSwweEZGLDB4QUYsMHhBOSwweDJCLDB4QjYsMHhGNiwweDM1LDB4RTYsMHhBQSwweEUw
LDB4RkEsMHg3OCwKKyAgICAweDU1LDB4RTYsMHhEMywweERELDB4MjAsMHhFMiwweEZBLDB4NUEs
MHgzNSwweEU2LDB4OTMsMHhDRCwweDIwLDB4QUEsMHhCNywweDM3LAorICAgIDB4RDcsMHhGRSww
eDU1LDB4RTYsMHhCNSwweEE1LDB4QUQsMHgyQiwweEQ3LDB4RjYsMHhCNywweEY2LDB4MDEsMHgy
RCwweDA4LDB4MDIsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweERGLDB4RUQsMHg3RCwweEZC
LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBRiwweEUzLDB4RUQsMHg1QiwKKyAgICAweEY3LDB4RjYs
MHhENywweEY2LDB4NkEsMHhFRSwweEZELDB4NTUsMHhGNywweEY2LDB4QjYsMHhFRSwweEFBLDB4
RkYsMHhBNiwweEFGLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg3NSwweDc3LDB4NTUsMHhG
RCwweEQ3LDB4RjYsMHhCNiwweEVFLDB4RDgsMHhFOCwweDgwLDB4ODAsCisgICAgMHhENywweEY2
LDB4QjYsMHhFRSwweDNCLDB4QkIsMHg3QywweEUwLDB4RDcsMHhGNiwweEI2LDB4RUUsMHg3RSww
eEVGLDB4MkIsMHg4QSwKKyAgICAweEY3LDB4RjYsMHhCNywweEVFLDB4QUIsMHhFRSwweEUyLDB4
RkEsMHhENywweEY2LDB4QjcsMHhFRSwweEE4LDB4ODAsMHgwMiwweDAyLAorICAgIDB4RDcsMHhG
NiwweEI3LDB4RUUsMHg4MiwweEJBLDB4M0EsMHhGQSwweEQ3LDB4RjYsMHhCNywweEVFLDB4ODgs
MHgyQSwweEZBLDB4RUEsCisgICAgMHhENywweEY2LDB4QjcsMHhFRSwweEFFLDB4QUYsMHhFQiww
eDdELDB4RDcsMHhGNiwweEI2LDB4RUUsMHg4QSwweDIzLDB4MEEsMHg1RiwKKyAgICAweEY3LDB4
RjYsMHhCNywweEVFLDB4RUEsMHhBQiwweEZCLDB4RkYsMHhENywweEY2LDB4QjcsMHhFRSwweEFB
LDB4QjIsMHhBOCwweDBBLAorICAgIDB4RDcsMHhGNiwweEQ3LDB4RUUsMHhFMiwweEE4LDB4QUEs
MHhBQSwweEQ3LDB4RjYsMHhGNywweEU2LDB4ODgsMHgyMCwweDgyLDB4MjAsCisgICAgMHhENyww
eEY2LDB4RjcsMHhFRSwweEFBLDB4QTgsMHg4MCwweDAwLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhC
QSwweEFGLDB4QkYsMHhGRCwKKyAgICAweDM4LDB4RkYsMHhGNywweEY2LDB4QUYsMHhCRCwweEI1
LDB4RDUsMHgxOCwweEZGLDB4MzgsMHhGNywweEFDLDB4QTIsMHhBOCwweDgwLAorICAgIDB4Mzgs
MHhGRiwweEQ3LDB4RjYsMHg1QSwweDdBLDB4NjgsMHhFOCwweEQ3LDB4RjYsMHg5NiwweEVFLDB4
N0EsMHg1QSwweDVFLDB4NUMsCisgICAgMHg5NiwweEVFLDB4NzYsMHhFNiwweDIwLDB4MzgsMHhD
MCwweDgwLDB4OTYsMHhFRSwweDc2LDB4RTYsMHhGMCwweDM4LDB4ODAsMHhCOSwKKyAgICAweDk2
LDB4RUUsMHg3NiwweEVFLDB4MDgsMHgyMCwweEE4LDB4NUUsMHhENywweEY2LDB4NzYsMHhFRSww
eDJFLDB4QUYsMHhCRiwweEJELAorICAgIDB4QjcsMHhGNiwweDEzLDB4REUsMHg2MCwweDQwLDB4
NjAsMHg0MCwweEQyLDB4RDUsMHgzMCwweEM1LDB4MTcsMHgzNywweDM3LDB4MzcsCisgICAgMHhC
NiwweEY2LDB4MTQsMHhERSwweDA5LDB4MjksMHgyOSwweDJELDB4QjYsMHhGNiwweDc2LDB4RUUs
MHhFMiwweEUyLDB4RTgsMHhBMCwKKyAgICAweDc2LDB4RUUsMHhEMywweEQ1LDB4NUEsMHg1OCww
eDU4LDB4NzgsMHg5MywweEQ1LDB4RDIsMHhDRCwweEFCLDB4QUEsMHhBRSwweEJGLAorICAgIDB4
QjIsMHhENSwweDcyLDB4Q0QsMHhCRSwweEFFLDB4QUEsMHhBQiwweDE1LDB4REUsMHhCMywweEQ1
LDB4QUYsMHgzRCwweEE1LDB4QTcsCisgICAgMHhCMywweEQ1LDB4NEQsMHhBQywweDU4LDB4Nzgs
MHg3OCwweDc4LDB4Q0UsMHhCQywweDJDLDB4QTQsMHhCRiwweEJGLDB4QkYsMHgzNSwKKyAgICAw
eDcxLDB4Q0QsMHhFRiwweEJDLDB4MDksMHgyRCwweEFELDB4MDMsMHhGNCwweERELDB4NzIsMHhD
RCwweDJCLDB4MkQsMHgzRiwweDJGLAorICAgIDB4OTUsMHhFRSwweEYzLDB4REQsMHgyQiwweDhG
LDB4MkYsMHgyOSwweDk2LDB4RUUsMHg1NSwweEU2LDB4QkUsMHg3RSwweDdBLDB4NUUsCisgICAg
MHg3NSwweEVFLDB4MzUsMHhFNiwweDdDLDB4RjIsMHhFQiwweEVCLDB4NzUsMHhFRSwweDM0LDB4
RTYsMHhBRCwweDNGLDB4QkYsMHg1NiwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4QUQsMHhG
QSwweEZBLDB4RUEsMHhENiwweEY2LDB4QjYsMHhFRSwweEJBLDB4QUIsMHg5QiwweDcyLAorICAg
IDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBQSwweDJBLDB4QUUsMHhGNywweEQ3LDB4RjYsMHhCNiww
eEVFLDB4MkEsMHhBOCwweDM4LDB4MzYsCisgICAgMHhENywweEY2LDB4QjYsMHhFRSwweEJFLDB4
QjgsMHgwOSwweDJCLDB4RDYsMHhGNiwweEI2LDB4RUUsMHg4QiwweEFBLDB4MjIsMHgwMCwKKyAg
ICAweEQ3LDB4RjYsMHhGNiwweEVFLDB4ODAsMHhBMCwweDg4LDB4MjIsMHhENiwweEY2LDB4RDcs
MHhFRSwweDhBLDB4QUEsMHhBMiwweEFBLAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHg4QSww
eDBBLDB4MjIsMHgwMiwweEQ2LDB4RjYsMHhGNywweEVFLDB4MDAsMHgwQSwweDI4LDB4ODIsCisg
ICAgMHhGNywweEY2LDB4QjYsMHhFRSwweEZGLDB4RUIsMHhFQywweEVBLDB4RDYsMHhGNiwweEI2
LDB4RUUsMHg3NiwweDVCLDB4RkUsMHhGRSwKKyAgICAweDk2LDB4RjYsMHhCNiwweEVFLDB4RUQs
MHhCRCwweEVELDB4RTUsMHhCNiwweEY2LDB4OTYsMHhFRSwweEFBLDB4QkEsMHgyQSwweDgyLAor
ICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHhBRSwweEY4LDB4QUIsMHg4MSwweEI3LDB4RjYsMHhC
NiwweEVFLDB4NkIsMHhFQSwweEVFLDB4RkYsCisgICAgMHg5NSwweEY2LDB4QjYsMHhFRSwweDdE
LDB4NTcsMHg1NSwweDU1LDB4RDYsMHhGNiwweEI2LDB4RUUsMHhCNSwweEZGLDB4QkYsMHhGNywK
KyAgICAweEQ2LDB4RjYsMHhGNiwweEVFLDB4ODAsMHhBOCwweEEwLDB4ODAsMHhGNywweEY2LDB4
RDYsMHhGNiwweDc1LDB4N0IsMHg1QSwweDdBLAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhB
MiwweDI4LDB4QTAsMHgwMCwweEQ2LDB4RjYsMHhCNiwweEVFLDB4MDIsMHgwMCwweDI4LDB4QTAs
CisgICAgMHhGNiwweEY2LDB4RDYsMHhGNiwweDVGLDB4NUYsMHhCNiwweEI1LDB4RDYsMHhGNiww
eEQ3LDB4RUUsMHgwQSwweDI4LDB4MkEsMHhBOCwKKyAgICAweEY3LDB4RkUsMHhCNiwweEY2LDB4
N0UsMHhFQSwweEFCLDB4REEsMHg5NSwweEVFLDB4MjYsMHg2MiwweDc4LDB4NjAsMHhFMCwweEUw
LAorICAgIDB4ODQsMHg1MSwweDAzLDB4NDEsMHg3RiwweDdDLDB4RDQsMHg1QywweDY1LDB4NTEs
MHhFMywweDQwLDB4MkEsMHg4MywweEEyLDB4QTksCisgICAgMHg0NCwweDUxLDB4RTIsMHg0MCww
eEFFLDB4MjYsMHhGMCwweDhBLDB4NDQsMHg1MSwweDAzLDB4NDksMHg0QiwweDdBLDB4NEQsMHhB
QiwKKyAgICAweDI0LDB4NDksMHgwMywweDQ5LDB4NDksMHhGNCwweEZFLDB4NzgsMHgyNCwweDQ5
LDB4QzIsMHgzOCwweEZBLDB4REEsMHhGMiwweEY4LAorICAgIDB4MjMsMHg0MSwweEUzLDB4NDAs
MHg3NSwweDg1LDB4NjksMHhGNSwweDY0LDB4NTEsMHhFMiwweDQwLDB4MEYsMHgwQiwweDJGLDB4
MjUsCisgICAgMHgyNiwweDZBLDB4NjQsMHg1MSwweDM1LDB4MEYsMHgwRiwweDI5LDB4QzksMHg3
QSwweDY3LDB4NzIsMHgyRCwweDI5LDB4MjksMHgwRCwKKyAgICAweDA5LDB4ODMsMHhBOCwweDdB
LDB4QUYsMHhCOSwweEY3LDB4MkYsMHg2QSwweDkzLDB4RTksMHg4MiwweDJCLDB4MDksMHhBRCww
eEJGLAorICAgIDB4NkIsMHg5MywweDA5LDB4OEIsMHg4QSwweDBBLDB4RkIsMHg3RSwweDRBLDB4
OEIsMHhDOSwweDgyLDB4MjAsMHhCMiwweEZBLDB4NzcsCisgICAgMHg0QSwweDhCLDB4QTgsMHg3
QSwweDg4LDB4RkMsMHg1RiwweDU3LDB4MjksMHg4QiwweEE4LDB4N0EsMHgwOCwweEVBLDB4RkQs
MHg1NSwKKyAgICAweDZBLDB4OTMsMHhDOCwweDdBLDB4MEYsMHhCNywweEQ1LDB4NTUsMHg4Qiww
eDkzLDB4RTksMHg4MiwweDA4LDB4QUYsMHhGRiwweDc1LAorICAgIDB4Q0IsMHg5QiwweDA5LDB4
OEIsMHgyMCwweEFCLDB4QUYsMHhCNSwweDJDLDB4QUMsMHg2QSwweDkzLDB4MkEsMHhBRiwweEJE
LDB4N0QsCisgICAgMHgyRCwweEFDLDB4Q0MsMHhBMywweDAyLDB4RkUsMHhGRiwweDdELDB4RjAs
MHhDNCwweDhCLDB4OUIsMHgyQiwweEJGLDB4RDUsMHg1NSwKKyAgICAweDEwLDB4Q0QsMHhFOCww
eDhBLDB4MDAsMHhFQSwweEZGLDB4N0YsMHg2RSwweEI0LDB4NDYsMHg3QSwweDgwLDB4RkEsMHg3
RiwweDVGLAorICAgIDB4RTksMHg4QSwweEU1LDB4NjksMHhGOCwweDdFLDB4N0YsMHg3RiwweDY3
LDB4N0EsMHgwNSwweDZBLDB4N0YsMHhBNSwweEFGLDB4RUIsCisgICAgMHg0NywweDdBLDB4RTUs
MHg3MSwweDVBLDB4NzgsMHg1QSwweDdFLDB4MjYsMHg3QSwweEM1LDB4NzEsMHhCMiwweDJGLDB4
QkYsMHhGRCwKKyAgICAweDQ2LDB4ODIsMHhFNSwweDcxLDB4MEEsMHgwQiwweEVBLDB4RjUsMHg0
NywweDgyLDB4RTUsMHg3OSwweEY4LDB4RUIsMHg2QiwweEFCLAorICAgIDB4NjcsMHg4QSwweEU1
LDB4NzksMHg5RSwweEJCLDB4MkQsMHgyQSwweEM5LDB4OTIsMHg0NiwweDgyLDB4RjUsMHhCRCww
eEJBLDB4QTIsCisgICAgMHhBOCwweDkyLDB4NDYsMHg4MiwweERGLDB4MTcsMHgyRSwweDg4LDB4
NEEsMHg5QiwweEM4LDB4OTIsMHhCRCwweEJELDB4QkQsMHgzNSwKKyAgICAweDc2LDB4RjYsMHhB
QiwweEFCLDB4MkQsMHgwRCwweDJCLDB4MDksMHhGNywweEZFLDB4QjYsMHhGNiwweDAzLDB4MDMs
MHgwMCwweDAwLAorICAgIDB4MTcsMHhGRiwweEY3LDB4RjYsMHhFRiwweEVGLDB4QUEsMHhBQiww
eDM4LDB4RkYsMHhGNywweEY2LDB4RUYsMHhBRCwweEFGLDB4QkYsCisgICAgMHgzOCwweEZGLDB4
MTcsMHhGNywweEZGLDB4QkQsMHhENywweEY1LDB4MzcsMHhGRiwweDE4LDB4RjcsMHhCRSwweEJG
LDB4RkYsMHhGRiwKKyAgICAweDM4LDB4RkYsMHgxNywweEY3LDB4RkEsMHg2RSwweEZFLDB4REYs
MHhGNywweEZFLDB4MTgsMHhGNywweEZELDB4NUYsMHhGRiwweDdGLAorICAgIDB4MTcsMHhGNyww
eEY3LDB4RjYsMHg3NywweEY2LDB4N0UsMHhGMiwweDE3LDB4RjcsMHhGNywweEY2LDB4NTUsMHg3
NywweDU2LDB4NTcsCisgICAgMHgxNywweEZGLDB4RjcsMHhGNiwweEQ3LDB4N0YsMHhGNywweDU1
LDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhGQiwweEFCLDB4RUEsMHhGRSwKKyAgICAweDE4LDB4RkYs
MHhENywweEY2LDB4RkYsMHhGQiwweEFCLDB4MkEsMHgxOCwweEZGLDB4RjcsMHhGNiwweDdELDB4
QUYsMHgwRCwweDgyLAorICAgIDB4MTgsMHhGRiwweDk1LDB4RUUsMHhBMCwweEE4LDB4NzgsMHg1
NiwweEQ2LDB4RjYsMHg3NCwweEVFLDB4QTAsMHhBQSwweEZBLDB4RkQsCisgICAgMHhCNiwweEY2
LDB4OTYsMHhFRSwweDIyLDB4OEYsMHgyQiwweEFBLDB4RDYsMHhGNiwweDk3LDB4RUUsMHg3RSww
eEJBLDB4QUIsMHhCRiwKKyAgICAweEQ3LDB4RjYsMHg3NiwweEVFLDB4OEUsMHhFQSwweEZFLDB4
N0IsMHg5NiwweEVFLDB4MzQsMHhFNiwweEY4LDB4N0EsMHg1RSwweDdFLAorICAgIDB4NzYsMHhF
RSwweDkyLDB4RDUsMHg3RSwweDVFLDB4QUYsMHgwMiwweEY3LDB4RkUsMHhCMywweEQ1LDB4QjUs
MHgyRiwweDBBLDB4MjIsCisgICAgMHhGNywweEZFLDB4QjcsMHhGNiwweEJGLDB4QUIsMHhBQSww
eEFBLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhGRCwweEQ3LDB4REQsMHg1RiwKKyAgICAweEY3LDB4
RjYsMHhENywweEY2LDB4OEYsMHhBRCwweEI2LDB4RjcsMHhGNywweEY2LDB4RDcsMHhGNiwweDRF
LDB4N0EsMHg3OCwweEY4LAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg3NSwweDU3LDB4NUYs
MHhERiwweEQ3LDB4RjYsMHhCNywweEVFLDB4MDIsMHhBOCwweEEyLDB4ODAsCisgICAgMHhENyww
eEY2LDB4QjYsMHhFRSwweDAwLDB4MEEsMHgyQiwweEVFLDB4RDcsMHhGNiwweEY3LDB4RUUsMHgw
MiwweDIwLDB4QTAsMHgwMCwKKyAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4RkUsMHhFOCwweEFB
LDB4QkEsMHhENywweEY2LDB4QjYsMHhFRSwweDA4LDB4MDIsMHgwMCwweEFDLAorICAgIDB4Rjcs
MHhGNiwweEI3LDB4RUUsMHhGMiwweEZBLDB4RUYsMHhCQiwweEQ3LDB4RjYsMHhCNywweEVFLDB4
OEEsMHgwQSwweEFBLDB4RkEsCisgICAgMHhENywweEY2LDB4QjcsMHhFRSwweEVBLDB4NjgsMHhG
QSwweEIyLDB4RDcsMHhGNiwweEI2LDB4RUUsMHg3NywweEZELDB4N0IsMHg3RiwKKyAgICAweEQ3
LDB4RjYsMHhCNiwweEVFLDB4NkQsMHhFRCwweEFELDB4RUEsMHhENywweEY2LDB4QjcsMHhFRSww
eDdGLDB4RTksMHhCRiwweEJFLAorICAgIDB4QjcsMHhGNiwweEQ3LDB4RUUsMHhFRSwweEFCLDB4
RkEsMHhGOSwweEQ3LDB4RjYsMHg5NywweEVFLDB4OEEsMHhFMiwweEFBLDB4MDgsCisgICAgMHhE
NywweEY2LDB4QjcsMHhFRSwweDg4LDB4QTIsMHg4OCwweDAwLDB4RDcsMHhGNiwweEY3LDB4RUUs
MHg4OCwweEEwLDB4ODgsMHgwMiwKKyAgICAweEY4LDB4RjYsMHhENywweEY2LDB4NzUsMHg4Riww
eEFGLDB4QUIsMHgxOCwweEZGLDB4RDcsMHhGNiwweEU5LDB4RkIsMHhGQSwweEFCLAorICAgIDB4
MTksMHhGNywweEY4LDB4RjYsMHhENSwweEVELDB4QjUsMHg1NywweDM4LDB4RkYsMHhGOCwweEY2
LDB4QUYsMHhBQiwweDlGLDB4NzUsCisgICAgMHgzOCwweEZGLDB4RjgsMHhGNiwweDcyLDB4NkEs
MHg3QSwweEZCLDB4RjgsMHhGNiwweDU2LDB4RTYsMHhGRSwweEVDLDB4RkMsMHhGOCwKKyAgICAw
eEI3LDB4RUUsMHg3NiwweEVFLDB4RkYsMHhGQSwweEZFLDB4RkEsMHg5NiwweEVFLDB4NzYsMHhF
NiwweEVGLDB4QUYsMHhDMCwweEFBLAorICAgIDB4OTYsMHhFRSwweDU1LDB4RTYsMHhFQSwweEFB
LDB4RUIsMHhGOCwweEI3LDB4RjYsMHg3NiwweEVFLDB4M0QsMHgzRCwweDI1LDB4QjUsCisgICAg
MHhCNywweEY2LDB4MTMsMHhERSwweDQwLDB4NjAsMHg2MCwweEUwLDB4MTMsMHhERSwweDBGLDB4
QzUsMHhCNSwweDM3LDB4MzcsMHhCNywKKyAgICAweDk2LDB4RUUsMHgxNCwweERFLDB4MEQsMHgy
QiwweDI5LDB4MEYsMHhCNywweEY2LDB4OTYsMHhFRSwweEFBLDB4QUEsMHgyQSwweERBLAorICAg
IDB4NzYsMHhFRSwweEQzLDB4RDUsMHg2MCwweEY4LDB4NjAsMHhFMCwweEQzLDB4REQsMHhCMyww
eEQ1LDB4NkEsMHg4MiwweEUyLDB4QkYsCisgICAgMHhCMywweEQ1LDB4OTIsMHhDRCwweEY2LDB4
MTQsMHhCQywweDcwLDB4RjMsMHhERCwweDkyLDB4Q0QsMHgyRiwweEI3LDB4QUYsMHhGRiwKKyAg
ICAweEIyLDB4RDUsMHgwQywweDlDLDB4RjgsMHg3MCwweDc4LDB4N0EsMHg3MSwweENELDB4NEQs
MHhBQywweEI1LDB4MzUsMHgyNSwweDJELAorICAgIDB4MTMsMHhERSwweDcxLDB4Q0QsMHhFRCww
eEFGLDB4QUEsMHhBQiwweDM1LDB4RTYsMHhCMywweEQ1LDB4RTUsMHhGRCwweEFCLDB4MkUsCisg
ICAgMHg5NiwweEVFLDB4MTQsMHhFNiwweDJELDB4MEQsMHgwQiwweEE5LDB4OTYsMHhFRSwweDU1
LDB4RTYsMHg3OCwweDVFLDB4N0UsMHg1QSwKKyAgICAweDU1LDB4RTYsMHgzNCwweEU2LDB4MDQs
MHgwQywweEIyLDB4NzksMHg1NSwweEU2LDB4MzQsMHhFNiwweEEyLDB4M0YsMHhCOSwweDM3LAor
ICAgIDB4QjYsMHhGNiwweEQ2LDB4RUUsMHhGRiwweEFCLDB4Q0YsMHg2QiwweEQ2LDB4RjYsMHhC
NywweEVFLDB4ODIsMHhBQSwweDgyLDB4RTgsCisgICAgMHhENiwweEY2LDB4QjcsMHhFRSwweEFB
LDB4RUEsMHgwOCwweDgwLDB4RDYsMHhGNiwweEI2LDB4RUUsMHgzRiwweEFCLDB4QUEsMHhBMiwK
KyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4ODIsMHg4MCwweEUwLDB4NzAsMHhENywweEY2LDB4
QjYsMHhFRSwweDgyLDB4MDcsMHhBRSwweEFBLAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHgw
MiwweDA5LDB4MkIsMHhBQSwweEQ2LDB4RjYsMHhCNiwweEU2LDB4MDAsMHg4OCwweDIwLDB4MkEs
CisgICAgMHhENiwweEY2LDB4RjgsMHhFRSwweDg4LDB4MDgsMHhBMiwweDA4LDB4RjcsMHhGNiww
eEI2LDB4RUUsMHhFQSwweENFLDB4QkIsMHg2QiwKKyAgICAweEQ3LDB4RjYsMHhGNiwweEVFLDB4
MDgsMHgyMCwweDIwLDB4MkEsMHhCNiwweEY2LDB4RDcsMHhFRSwweEVELDB4RkYsMHhCNywweEZE
LAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHg1NywweDVFLDB4REUsMHg1RSwweDk2LDB4RjYs
MHhCNiwweEVFLDB4REQsMHhGRCwweDU1LDB4RDUsCisgICAgMHhENiwweEY2LDB4OTYsMHhFRSww
eEFCLDB4MjksMHhCQiwweEFCLDB4RDYsMHhGNiwweEI2LDB4RUUsMHg1RiwweEZFLDB4QkQsMHhE
NSwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4RjUsMHhGNywweDdFLDB4NUQsMHhENiwweEY2
LDB4QjYsMHhFRSwweERELDB4RUIsMHhGOSwweDVGLAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUs
MHgyMiwweDhBLDB4MkEsMHgwMiwweEQ2LDB4RjYsMHhGNiwweEVFLDB4QUEsMHg4MCwweDg4LDB4
ODgsCisgICAgMHhGNywweEY2LDB4RDYsMHhGNiwweDc3LDB4REQsMHg3NSwweEZGLDB4RjcsMHhG
NiwweEI1LDB4RjYsMHhFQSwweEE4LDB4MkIsMHhBRiwKKyAgICAweEY3LDB4RjYsMHhENiwweEY2
LDB4RjUsMHg3RiwweDZFLDB4NkEsMHhGNywweEY2LDB4RDcsMHhGNiwweDVGLDB4QkIsMHhCRiww
eEZELAorICAgIDB4QjYsMHhGRSwweEY3LDB4RjYsMHhBRSwweEFELDB4QkYsMHhFRiwweEI2LDB4
RjYsMHg4RSwweEFDLDB4NjAsMHg2MCwweEMwLDB4QzAsCisgICAgMHhDQywweDlCLDB4MDIsMHg0
MSwweDU3LDB4NTYsMHg1RSwweDVDLDB4NjQsMHg1MSwweEUyLDB4MzgsMHhBRiwweDM5LDB4QUEs
MHhBRCwKKyAgICAweDY0LDB4NTEsMHgyMywweDQ5LDB4QUYsMHhFMiwweEZGLDB4NzcsMHgyMyww
eDQ5LDB4RTIsMHg0MCwweDI4LDB4ODgsMHg2OCwweDYyLAorICAgIDB4MjQsMHg0OSwweEUyLDB4
NDAsMHg3OCwweDZFLDB4N0EsMHhGQiwweDAzLDB4NDEsMHhDMiwweDM4LDB4QUYsMHhBNywweERG
LDB4OUEsCisgICAgMHgyMywweDQ5LDB4QzIsMHgzOCwweEY3LDB4QjcsMHhCRCwweDJGLDB4ODQs
MHg1MSwweDAzLDB4NDEsMHhBNSwweEFGLDB4QTUsMHgyNywKKyAgICAweDA2LDB4NkEsMHg4NCww
eDUxLDB4MEYsMHhBRCwweEFELDB4MkQsMHhBOCwweDdBLDB4MDYsMHg2MiwweDIzLDB4MEQsMHgy
NywweEJELAorICAgIDB4MkEsMHg4QiwweDg3LDB4NzIsMHgyQiwweDI5LDB4M0QsMHhBRCwweDRB
LDB4OTMsMHhFOSwweDgyLDB4MkEsMHg4OCwweDdBLDB4RDIsCisgICAgMHg0QSwweDkzLDB4QTgs
MHg3QSwweEVDLDB4RkUsMHg1RiwweDVGLDB4QTgsMHg3QSwweDg4LDB4NzIsMHhFMCwweDUyLDB4
QzAsMHgyMywKKyAgICAweEE4LDB4N0EsMHg0NywweDZBLDB4ODIsMHhFQywweDdBLDB4RTgsMHhD
OCwweDdBLDB4NDcsMHg2QSwweDhBLDB4RUYsMHhCRCwweEY3LAorICAgIDB4QzksMHg3QSwweDY3
LDB4NzIsMHgzQSwweEZFLDB4REUsMHhCNywweEU5LDB4ODIsMHg4NywweDcyLDB4MDMsMHhBRCww
eEU1LDB4REYsCisgICAgMHg2QSwweDkzLDB4QTgsMHg3QSwweDJCLDB4MkYsMHgyRCwweDJELDB4
OEEsMHg5QiwweDRBLDB4OTMsMHgyQSwweEFCLDB4QjUsMHhCRiwKKyAgICAweENDLDB4QTMsMHg2
QSwweDkzLDB4ODMsMHg4QiwweEVGLDB4N0QsMHg2QiwweDlCLDB4QzgsMHg4MiwweEE4LDB4Njgs
MHg3OCwweDdFLAorICAgIDB4MDksMHg5MywweDI2LDB4NzIsMHg4MCwweEU4LDB4RkEsMHg3RSww
eDY2LDB4N0EsMHhDNCwweDY5LDB4QTgsMHhGQywweDdFLDB4NUYsCisgICAgMHg0NywweDdBLDB4
QTMsMHg2MSwweEFBLDB4QUYsMHhCNSwweDI3LDB4ODgsMHg4MiwweDI3LDB4NzIsMHg2RCwweEVG
LDB4RUIsMHgyRiwKKyAgICAweDQ3LDB4N0EsMHhDNSwweDY5LDB4RkEsMHhGQywweDVBLDB4Nzgs
MHgwNiwweDdBLDB4QzUsMHg3MSwweEE5LDB4QUUsMHhERiwweEQ1LAorICAgIDB4MDYsMHg3QSww
eEM1LDB4NzEsMHg5RSwweEFGLDB4M0YsMHhCRSwweDQ3LDB4OEEsMHhFNiwweDc5LDB4QUYsMHgy
OSwweEFELDB4MkIsCisgICAgMHg4NywweDhBLDB4MjYsMHg4MiwweEFELDB4QTUsMHhBRCwweEFC
LDB4QzgsMHg5MiwweDY3LDB4OEEsMHhGMCwweDY5LDB4RkMsMHg1RCwKKyAgICAweDJBLDB4QTMs
MHg4OCwweDhBLDB4RkQsMHhCRCwweEFELDB4M0QsMHg0QSwweEEzLDB4QzgsMHg5MiwweDJELDB4
OEEsMHg4MiwweDJBLAorICAgIDB4QjYsMHhGNiwweEFDLDB4QUIsMHgwOSwweDBELDB4MkQsMHgy
RCwweEQ3LDB4RkUsMHgxOCwweEY3LDB4QUEsMHhBRSwweEVFLDB4QkMsCisgICAgMHgxOCwweEZG
LDB4RjcsMHhGNiwweEFCLDB4MkIsMHhBQiwweEEzLDB4MTcsMHhGRiwweEY4LDB4RjYsMHgyQSww
eDBBLDB4OEEsMHgyQSwKKyAgICAweDE3LDB4RkYsMHgzOSwweEY3LDB4QTIsMHg4OCwweEIwLDB4
QTgsMHgzNywweEZGLDB4MTgsMHhGNywweEZCLDB4RkQsMHhGNywweEZGLAorICAgIDB4MzgsMHhG
RiwweDE3LDB4RjcsMHg3NywweDU3LDB4REQsMHg3QiwweDM4LDB4RkYsMHgxNywweEY3LDB4N0Ys
MHhERCwweDdGLDB4RkYsCisgICAgMHgxNywweEZGLDB4MzgsMHhGNywweDBBLDB4MDgsMHhBMiww
eEFFLDB4MTcsMHhGRiwweEY3LDB4RjYsMHg3NiwweDdGLDB4QUEsMHhBOCwKKyAgICAweDE3LDB4
RkYsMHhENywweEY2LDB4QkYsMHhCRiwweEIyLDB4QTAsMHgxNywweEZGLDB4RjcsMHhGNiwweDc3
LDB4QTcsMHhBRSwweDA4LAorICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHhBQiwweDBCLDB4MEEs
MHhBMCwweDE4LDB4RkYsMHhCNiwweEVFLDB4NjAsMHg3OCwweDU4LDB4NUUsCisgICAgMHhCNiww
eEVFLDB4NzUsMHhFRSwweDdFLDB4RDcsMHhCRiwweDhBLDB4OTYsMHhGNiwweDc1LDB4RTYsMHhC
NSwweEZELDB4RkUsMHg4OCwKKyAgICAweEI2LDB4RjYsMHg3NSwweEVFLDB4QUIsMHhBRCwweEY1
LDB4N0YsMHhCNiwweEY2LDB4NTUsMHhFRSwweDJBLDB4QUEsMHhFRiwweERGLAorICAgIDB4OTYs
MHhFRSwweDc1LDB4RUUsMHg0MCwweDI4LDB4NjYsMHg1RCwweEI2LDB4RjYsMHg1NCwweEU2LDB4
QkYsMHgyRiwweEVGLDB4NzUsCisgICAgMHhENywweEY2LDB4NTQsMHhFNiwweDAyLDB4MDIsMHhC
QSwweEQ1LDB4RjcsMHhGRSwweDc2LDB4RUUsMHgwMiwweDIyLDB4QUYsMHhERCwKKyAgICAweEY3
LDB4RkUsMHhENywweEY2LDB4QUEsMHhBQSwweDNGLDB4OTUsMHhGNywweEY2LDB4RDcsMHhGNiww
eDdBLDB4RTIsMHg4QSwweEE4LAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg4RiwweDg1LDB4
QjcsMHhFNywweEY3LDB4RjYsMHhENywweEY2LDB4RkEsMHhERSwweEQ2LDB4RkUsCisgICAgMHhG
NywweEY2LDB4RDcsMHhGNiwweDVCLDB4NUEsMHhGQSwweDAwLDB4RjcsMHhGNiwweEQ3LDB4RjYs
MHg3NSwweDdCLDB4NUUsMHhFNCwKKyAgICAweEY3LDB4RjYsMHhCNywweEY2LDB4RkYsMHhFRiww
eEFCLDB4MDgsMHhENywweEY2LDB4QjcsMHhFRSwweDBBLDB4MDIsMHgwQSwweDAwLAorICAgIDB4
RDcsMHhGNiwweEI2LDB4RUUsMHhBOCwweEEwLDB4MjgsMHgwMCwweEQ3LDB4RjYsMHhCNywweEVF
LDB4N0MsMHhCRSwweEVBLDB4MDAsCisgICAgMHhENywweEY2LDB4QjYsMHhFRSwweDI4LDB4M0Us
MHg3QSwweDVBLDB4RDcsMHhGNiwweEI3LDB4RUUsMHhGOCwweEFBLDB4RUEsMHhGRSwKKyAgICAw
eEQ3LDB4RjYsMHhCNywweEVFLDB4QUEsMHhBQiwweEE1LDB4RUUsMHhENywweEY2LDB4QjcsMHhF
RSwweEY3LDB4MkYsMHhBRSwweEFBLAorICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHgzQSwweEJF
LDB4QUEsMHhCRSwweEQ3LDB4RjYsMHhCNywweEVFLDB4QTMsMHhBNiwweEZFLDB4QUMsCisgICAg
MHhGNywweEY2LDB4QjcsMHhGNiwweEZGLDB4RkUsMHhGRiwweENCLDB4RjgsMHhGNiwweDk3LDB4
RUUsMHhBRSwweDJBLDB4MkEsMHgwQSwKKyAgICAweEY4LDB4RjYsMHhCNywweEY2LDB4QUYsMHhB
RSwweEJBLDB4MEEsMHhGOCwweEY2LDB4RDcsMHhGNiwweERELDB4QkQsMHgyQSwweDI4LAorICAg
IDB4RjgsMHhGNiwweEQ3LDB4RjYsMHhFQSwweEFFLDB4QUEsMHgzQSwweEY4LDB4RjYsMHhENyww
eEY2LDB4MDAsMHgwOCwweEFBLDB4MjIsCisgICAgMHhGOCwweEY2LDB4RDgsMHhGNiwweDAwLDB4
MjgsMHhCRSwweEFBLDB4RDcsMHhGRSwweEY4LDB4RjYsMHg1NSwweDc3LDB4NUQsMHg3RiwKKyAg
ICAweDE4LDB4RkYsMHhGOCwweEY2LDB4MkEsMHgyQSwweDJGLDB4MkQsMHgxOCwweEZGLDB4NzYs
MHhFNiwweDU4LDB4N0EsMHhGOCwweEY4LAorICAgIDB4OTYsMHhFRSwweDU1LDB4RTYsMHg4MCww
eDJBLDB4QjYsMHhCQSwweDk2LDB4RUUsMHg3NiwweEU2LDB4QjIsMHhFRiwweDM3LDB4QTMsCisg
ICAgMHg5NiwweEVFLDB4NzYsMHhFRSwweDVDLDB4RDcsMHhCRSwweEY2LDB4QjYsMHhGNiwweDc2
LDB4RUUsMHhCNSwweDNGLDB4QTksMHhCRCwKKyAgICAweEI3LDB4RjYsMHhGMywweERELDB4Qzgs
MHg2MCwweDYwLDB4NjAsMHhEMywweEQ1LDB4RjAsMHhCQywweDNFLDB4MkYsMHgzNywweDNGLAor
ICAgIDB4OTYsMHhFRSwweEY0LDB4REQsMHgyQiwweDBELDB4MEIsMHgyOSwweEI2LDB4RjYsMHg5
NiwweEVFLDB4N0YsMHhGNiwweDc4LDB4RkIsCisgICAgMHg5NiwweEVFLDB4MTQsMHhERSwweDc4
LDB4NzgsMHg3OCwweDY4LDB4QjMsMHhENSwweDUxLDB4QzUsMHgwMCwweEI4LDB4N0MsMHg3RSwK
KyAgICAweEIzLDB4RDUsMHg3MSwweENELDB4QTAsMHhGQSwweDc1LDB4NTUsMHhCMiwweENELDB4
NTEsMHhDNSwweEFBLDB4OEEsMHhBQSwweEVELAorICAgIDB4NzIsMHhDRCwweDBDLDB4QTQsMHg3
OCwweDc4LDB4NzgsMHhGOCwweEIzLDB4RDUsMHg4RSwweEFDLDB4MkQsMHgyRCwweDI5LDB4MDks
CisgICAgMHgxNCwweERFLDB4QjIsMHhENSwweEFELDB4MkYsMHhCNywweEI1LDB4NTUsMHhFRSww
eEYzLDB4REQsMHhCRiwweEJGLDB4QUYsMHgzNywKKyAgICAweDk2LDB4RUUsMHgzNCwweEU2LDB4
MkYsMHhBRCwweEJGLDB4MkYsMHg5NiwweEVFLDB4NTUsMHhFNiwweDc4LDB4RkEsMHhBOCwweDdB
LAorICAgIDB4NTUsMHhFNiwweDE0LDB4RTYsMHhFMCwweDA4LDB4QTgsMHg4MCwweDU1LDB4RTYs
MHgzNSwweEU2LDB4M0YsMHg5RSwweERCLDB4MjMsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSww
eEFGLDB4RUEsMHhBQSwweEFBLDB4RDcsMHhGNiwweEI2LDB4RUUsMHhCQSwweEU4LDB4QkUsMHhC
QSwKKyAgICAweEI3LDB4RjYsMHhENiwweEVFLDB4QkYsMHhGRiwweEI3LDB4MUYsMHhENywweEY2
LDB4QjYsMHhFRSwweEEyLDB4QjMsMHgyQSwweEJCLAorICAgIDB4RDcsMHhGNiwweEI2LDB4RUUs
MHhBMiwweDBBLDB4ODIsMHgwMiwweEQ2LDB4RjYsMHhENywweEVFLDB4QUEsMHhBQSwweEEyLDB4
QUEsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDIxLDB4Q0IsMHgwQSwweEFBLDB4RDYsMHhG
NiwweEI2LDB4RUUsMHhBMiwweEE4LDB4MkEsMHgwMiwKKyAgICAweEQ3LDB4RjYsMHhENiwweEVF
LDB4QTIsMHhBQiwweDJBLDB4QTgsMHhGNywweEY2LDB4QjYsMHhFRSwweEJGLDB4QUUsMHhBQiww
eEFGLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhGRCwweEY1LDB4RDcsMHg1RSwweEY3LDB4
RjYsMHhCNiwweEVFLDB4RkEsMHhFQSwweEVFLDB4RUEsCisgICAgMHhENiwweEY2LDB4QjYsMHhF
RSwweDVFLDB4NUUsMHg1RiwweEZGLDB4RDYsMHhGNiwweDk2LDB4RUUsMHhGRSwweEVGLDB4QUEs
MHhGQSwKKyAgICAweEQ2LDB4RjYsMHg5NSwweEVFLDB4QUYsMHhCNywweEZGLDB4RkYsMHhENiww
eEY2LDB4QjYsMHhFRSwweEZELDB4NUYsMHhGRiwweDdELAorICAgIDB4QjcsMHhGNiwweEI2LDB4
RUUsMHhGRCwweEZGLDB4RDcsMHhGRiwweEQ2LDB4RjYsMHhCNiwweEVFLDB4QkQsMHhCNywweEQ1
LDB4QjUsCisgICAgMHhENiwweEY2LDB4RjgsMHhFRSwweEEwLDB4ODgsMHgyMCwweDA4LDB4RDcs
MHhGNiwweEY2LDB4RUUsMHgwMiwweEE4LDB4MkEsMHg4MCwKKyAgICAweEY3LDB4RjYsMHhCNiww
eEVFLDB4QkUsMHhBRiwweEVCLDB4OEEsMHhGNywweEY2LDB4QjYsMHhFRSwweEI2LDB4QUIsMHhC
QSwweEFCLAorICAgIDB4RDYsMHhGNiwweEY4LDB4RUUsMHgyMCwweDg4LDB4MjAsMHgwMCwweEY3
LDB4RjYsMHhENywweEY2LDB4RkQsMHhFRiwweEY1LDB4NTUsCisgICAgMHhGNywweEY2LDB4QjYs
MHhGNiwweEJBLDB4RkEsMHhGOCwweEZFLDB4QjcsMHhGNiwweDE0LDB4REUsMHg0MCwweEMwLDB4
QzAsMHgwMCwKKyAgICAweDUxLDB4QzUsMHg0MywweDQ5LDB4NUUsMHg1QywweDVDLDB4NTgsMHgy
MywweDQxLDB4RTIsMHg0MCwweDAxLDB4MkQsMHhERCwweEVGLAorICAgIDB4NDMsMHg0OSwweDAz
LDB4NDEsMHhCOCwweDJBLDB4MkYsMHgwRCwweDY0LDB4NTEsMHgyMywweDQxLDB4NUQsMHhBQiww
eDJFLDB4QkIsCisgICAgMHg0NCwweDQ5LDB4MDMsMHg0MSwweDU3LDB4RDgsMHg3MCwweDcwLDB4
NDQsMHg0OSwweEUyLDB4MzgsMHhGNywweEY3LDB4QkYsMHgyRSwKKyAgICAweDY0LDB4NTEsMHgw
MywweDQxLDB4RDcsMHhCNywweDBGLDB4MDIsMHhFNSwweDU5LDB4NDMsMHg0OSwweEI1LDB4MkYs
MHgwNSwweEFELAorICAgIDB4NDcsMHg2QSwweEE0LDB4NTksMHhBRCwweDJCLDB4MkIsMHgwQSww
eDg4LDB4NzIsMHgyNiwweDZBLDB4MjksMHg4RiwweEFGLDB4QzMsCisgICAgMHhDOCwweDdBLDB4
NjcsMHg3MiwweDAzLDB4QUEsMHgyQiwweEM5LDB4MDksMHg4MywweEE4LDB4N0EsMHg4MiwweDgz
LDB4RUQsMHg1RCwKKyAgICAweEM5LDB4ODIsMHg0NywweDcyLDB4RjgsMHhFMiwweEVBLDB4N0Is
MHhBOCwweDdBLDB4NDcsMHg2QSwweDJFLDB4RkEsMHhERiwweDlGLAorICAgIDB4QTgsMHg3QSww
eDQ3LDB4NkEsMHhFMiwweEZBLDB4NUYsMHg1NywweDg3LDB4NzIsMHgyNiwweDZBLDB4QTgsMHhC
NiwweDBBLDB4OEUsCisgICAgMHg2NywweDcyLDB4MjYsMHg2QSwweDNDLDB4RjcsMHhCMCwweDIw
LDB4QzgsMHg3QSwweDI2LDB4NkEsMHhBQSwweEEzLDB4QTksMHhGQiwKKyAgICAweDRBLDB4OTMs
MHg4NywweDcyLDB4MkYsMHhBRiwweEU1LDB4N0QsMHg2QiwweDlCLDB4QzgsMHg4MiwweDBBLDB4
OEIsMHhBRiwweEZELAorICAgIDB4OEIsMHg5QiwweDA5LDB4OEIsMHhDQSwweDhCLDB4RUEsMHhG
RCwweDI5LDB4OEIsMHhDOCwweDgyLDB4RDgsMHhGOCwweDc4LDB4NjAsCisgICAgMHhDOCwweDgy
LDB4RTYsMHg2OSwweEY4LDB4RTgsMHhGOCwweDVBLDB4MDUsMHg2QSwweEE0LDB4NjEsMHhGOCww
eERFLDB4REEsMHhGQSwKKyAgICAweDQ3LDB4NzIsMHhDNCwweDY5LDB4QjUsMHhCRiwweEI5LDB4
MjUsMHg4OCwweDgyLDB4MjcsMHg3MiwweEFCLDB4QUEsMHgyQiwweEU1LAorICAgIDB4NDcsMHg3
QSwweDg0LDB4NjksMHhGMCwweDYwLDB4RTAsMHhFOCwweEM1LDB4NzEsMHg2NCwweDYxLDB4Mjgs
MHgyRSwweEI1LDB4RjUsCisgICAgMHgwNiwweDgyLDB4QTUsMHg2OSwweEFGLDB4QkYsMHhCRCww
eEJGLDB4NjcsMHg4QSwweEU2LDB4NzksMHhBRCwweEE3LDB4MkYsMHhBRSwKKyAgICAweDg3LDB4
OEEsMHg0NiwweDgyLDB4NEYsMHhFNywweDc3LDB4NUQsMHg4NywweDhBLDB4MjYsMHg4MiwweDI4
LDB4QkEsMHhCNywweDU1LAorICAgIDB4RTgsMHg5MiwweDQ2LDB4ODIsMHgyRCwweEI1LDB4QkYs
MHhGRiwweDZBLDB4QTMsMHhBOCwweDhBLDB4MkIsMHhBOSwweEFELDB4MjUsCisgICAgMHg5Niww
eEY2LDB4OEEsMHhBMywweDJELDB4MkQsMHgyRCwweDJELDB4RDcsMHhGRSwweDE3LDB4RjcsMHhG
OCwweEU4LDB4RjgsMHhFQSwKKyAgICAweDE3LDB4RkYsMHhGNywweEY2LDB4QUEsMHhBMiwweEFB
LDB4MEIsMHgxOCwweEZGLDB4RjcsMHhGNiwweDhBLDB4MDIsMHgwQSwweDJBLAorICAgIDB4MTgs
MHhGRiwweEY3LDB4RUUsMHg4QSwweDhBLDB4MDAsMHg4MCwweDM4LDB4RkYsMHgxNywweEY3LDB4
QjcsMHhFRCwweEVGLDB4RkQsCisgICAgMHgxOCwweEZGLDB4MzgsMHhGNywweEVFLDB4QUYsMHhB
RSwweEE4LDB4MzcsMHhGRiwweDE4LDB4RjcsMHhCRSwweEFGLDB4REIsMHhCRiwKKyAgICAweDM4
LDB4RkYsMHgxOCwweEZGLDB4QUEsMHhFQSwweDhBLDB4OEIsMHgzOCwweEZGLDB4MTgsMHhGNyww
eEZGLDB4QUIsMHhBOCwweEE4LAorICAgIDB4MTgsMHhGRiwweDM3LDB4RjcsMHgwQSwweDJBLDB4
MEEsMHgwMiwweDE4LDB4RkYsMHgzNywweEY3LDB4MDgsMHgyMCwweEIwLDB4MjAsCisgICAgMHgx
OCwweEZGLDB4QjYsMHhFRSwweEEwLDB4RTgsMHg3OCwweDdBLDB4RDcsMHhGNiwweDk2LDB4RUUs
MHhEOCwweDVFLDB4RkYsMHhFRSwKKyAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4QUYsMHhGRSww
eEZFLDB4QTAsMHhCNiwweEY2LDB4OTYsMHhFRSwweEVBLDB4RUIsMHhFQSwweEZCLAorICAgIDB4
OTYsMHhFRSwweDU0LDB4RUUsMHhFMCwweEMwLDB4QzAsMHhDMCwweDU0LDB4RTYsMHg3MSwweENE
LDB4MDAsMHg4MCwweEE4LDB4NzgsCisgICAgMHg1NSwweEVFLDB4MTAsMHhDNSwweDAwLDB4QUEs
MHhGQiwweDU3LDB4MTQsMHhFNiwweDcxLDB4Q0QsMHg4MCwweEVBLDB4RkQsMHgwOSwKKyAgICAw
eEYzLDB4REQsMHgxMCwweEM1LDB4MDAsMHhGRSwweDdFLDB4QTgsMHg1NSwweEU2LDB4MzEsMHhD
NSwweDAwLDB4MEYsMHhCRCwweEY3LAorICAgIDB4RDcsMHhGRSwweDE0LDB4REUsMHgwMiwweDJC
LDB4MkYsMHhBRCwweEY3LDB4RjYsMHg5NiwweEY2LDB4ODIsMHgyQSwweEFBLDB4QUIsCisgICAg
MHhGNywweEY2LDB4RDcsMHhGNiwweEE3LDB4QkQsMHhFRCwweEE2LDB4RjcsMHhGNiwweEQ3LDB4
RjYsMHhBQiwweDIxLDB4ODksMHhBMiwKKyAgICAweDE4LDB4RkYsMHhENywweEY2LDB4QkUsMHhF
QSwweEZCLDB4RkIsMHhENywweEZFLDB4RjcsMHhGNiwweEZELDB4NUQsMHhGNSwweEY3LAorICAg
IDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBOCwweDVFLDB4NTUsMHhGRiwweEY3LDB4RjYsMHhENyww
eEY2LDB4NTUsMHhENSwweEFCLDB4QUEsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDVGLDB4
RkIsMHg3RiwweEJDLDB4RDcsMHhGNiwweEY3LDB4RUUsMHgyMCwweDA4LDB4MDAsMHgyMiwKKyAg
ICAweEQ3LDB4RjYsMHhCNywweEVFLDB4QjgsMHhBOCwweEM4LDB4NDIsMHhENywweEY2LDB4QjYs
MHhFRSwweEE0LDB4MjIsMHhCRiwweEZELAorICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHhFRSww
eDJBLDB4OEEsMHgwMiwweEI2LDB4RjYsMHhGNywweEVFLDB4QUEsMHhBQSwweEJCLDB4RkEsCisg
ICAgMHhGNywweEY2LDB4QjYsMHhFRSwweERGLDB4RkYsMHhBRiwweEFCLDB4RjcsMHhGNiwweEI3
LDB4RUUsMHhBRiwweEE5LDB4MkYsMHhBOCwKKyAgICAweEY3LDB4RjYsMHhEOCwweEY2LDB4OEYs
MHg4QSwweEE4LDB4QTAsMHhGOCwweEY2LDB4RDcsMHhGNiwweEEyLDB4RjgsMHhERSwweEVBLAor
ICAgIDB4RjgsMHhGNiwweEQ3LDB4RjYsMHhCQSwweEFCLDB4M0UsMHg4QSwweDE4LDB4RkYsMHhE
NywweEY2LDB4QUYsMHhBQiwweEZFLDB4QkYsCisgICAgMHhGNywweEZFLDB4RjgsMHhGNiwweEY3
LDB4RkQsMHhENywweDdGLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhFRSwweEFBLDB4RUUsMHg3RiwK
KyAgICAweEY3LDB4RjYsMHhCOCwweEY2LDB4QTIsMHhBRSwweEFBLDB4RUIsMHhGOCwweEY2LDB4
RDcsMHhGNiwweEZGLDB4REUsMHg1RCwweDU1LAorICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYsMHgy
QiwweDNGLDB4QkQsMHhCRiwweDE4LDB4RkYsMHhCNiwweEVFLDB4NTgsMHg3OCwweEZBLDB4RkEs
CisgICAgMHhCNiwweEVFLDB4NzYsMHhFNiwweDU3LDB4NTcsMHhGRSwweEZDLDB4NzYsMHhFRSww
eDk2LDB4RTYsMHgyRiwweDhCLDB4QUEsMHgyOCwKKyAgICAweDk2LDB4RUUsMHg3NiwweEVFLDB4
OUIsMHhBMiwweEZCLDB4RkQsMHg5NiwweEVFLDB4NzYsMHhFRSwweDBELDB4MkIsMHgyRCwweDNG
LAorICAgIDB4QjYsMHhGNiwweEY0LDB4REQsMHg2MCwweDYwLDB4NjgsMHg2MiwweEQzLDB4RDUs
MHhGMCwweEJDLDB4MzcsMHgzRiwweDJGLDB4MkUsCisgICAgMHg5NiwweEY2LDB4MTQsMHhFNiww
eDJELDB4QUQsMHhBRCwweDI1LDB4QjYsMHhGNiwweDc2LDB4RUUsMHhFQSwweEZCLDB4RkYsMHhG
RiwKKyAgICAweDk2LDB4RUUsMHgxNCwweEU2LDB4NjAsMHg3MCwweEVBLDB4RTgsMHhGNCwweERE
LDB4MzEsMHhDNSwweDdFLDB4N0EsMHg3QywweEY4LAorICAgIDB4NzEsMHhDRCwweDUxLDB4QzUs
MHgyRSwweEI5LDB4RTcsMHhDRSwweDcxLDB4Q0QsMHg1MSwweEM1LDB4MjAsMHgyRSwweDI1LDB4
M0QsCisgICAgMHg3MiwweENELDB4Q0YsMHhCNCwweDVDLDB4NUMsMHg3QywweEE4LDB4QjMsMHhE
NSwweDEwLDB4QzUsMHgwRCwweDBCLDB4MDMsMHgwQSwKKyAgICAweDE0LDB4REUsMHhCMywweEQ1
LDB4QkQsMHgzRiwweDJGLDB4MjMsMHg1NSwweEU2LDB4RjQsMHhERCwweDJELDB4MzUsMHhCNyww
eEI3LAorICAgIDB4NzYsMHhFRSwweDU1LDB4RTYsMHgyMywweDgyLDB4MEIsMHgwRCwweDk2LDB4
RUUsMHgzNSwweEU2LDB4QTgsMHhDOCwweEE4LDB4QUEsCisgICAgMHg3NSwweEVFLDB4MzUsMHhF
NiwweEZGLDB4RjgsMHhGQSwweEVBLDB4MzUsMHhFRSwweDU1LDB4RTYsMHg3NywweDZELDB4N0Ys
MHg1RiwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4QUEsMHhBQSwweDhBLDB4MDIsMHhENyww
eEY2LDB4QjUsMHhFRSwweDIyLDB4MjIsMHgyOCwweDIwLAorICAgIDB4RDcsMHhGNiwweEI2LDB4
RUUsMHg2RSwweEM4LDB4RjgsMHhDOCwweEQ2LDB4RjYsMHhCNiwweEVFLDB4QjksMHgyMywweDAy
LDB4MDIsCisgICAgMHhENiwweEY2LDB4QjcsMHhFNiwweDA4LDB4OEEsMHgwOCwweEEyLDB4Rjcs
MHhGNiwweEI2LDB4RUUsMHhEQiwweDVBLDB4RkYsMHhCRiwKKyAgICAweEQ3LDB4RjYsMHhCNiww
eEVFLDB4MUIsMHgyOSwweDJDLDB4MDAsMHhENywweEY2LDB4RDYsMHhFRSwweEFBLDB4MjIsMHhB
QSwweEFBLAorICAgIDB4RDcsMHhGNiwweEY3LDB4RUUsMHgyOCwweDA4LDB4MjAsMHhBQSwweEY2
LDB4RjYsMHhCNywweEVFLDB4QTcsMHhCRSwweEFCLDB4QUIsCisgICAgMHhENiwweEY2LDB4Rjcs
MHhFRSwweDJBLDB4MkEsMHgyMCwweDgyLDB4RDYsMHhGNiwweEY4LDB4RUUsMHgwOCwweDgwLDB4
MjgsMHhBOCwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4RUUsMHg2OCwweEY4LDB4NkMsMHhE
NiwweEY2LDB4OTYsMHhFRSwweEJCLDB4RUYsMHhBRiwweDBGLAorICAgIDB4RDYsMHhGNiwweDk2
LDB4RUUsMHhGRiwweEZFLDB4RjIsMHhDMiwweEQ2LDB4RjYsMHhCNiwweEVFLDB4RkQsMHhGNyww
eEJELDB4QkIsCisgICAgMHhENywweEY2LDB4QjYsMHhFRSwweDdELDB4RkYsMHhBRCwweEVFLDB4
RDYsMHhGNiwweEI2LDB4RUUsMHhCNSwweEJELDB4QkIsMHhCNiwKKyAgICAweEY3LDB4RjYsMHhE
NywweEY2LDB4REYsMHhGRCwweERELDB4RkQsMHhGNywweEY2LDB4RDcsMHhGNiwweERELDB4QkYs
MHgzQSwweDhELAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhFQSwweEY4LDB4REEsMHhGRSww
eEY2LDB4RjYsMHhENywweEY2LDB4QjUsMHhGQiwweEZGLDB4RUQsCisgICAgMHhGNywweEY2LDB4
RDcsMHhGNiwweDc5LDB4NkIsMHhGQiwweDlCLDB4RDcsMHhGNiwweEY3LDB4RUUsMHgwMCwweDgw
LDB4MEUsMHgwMiwKKyAgICAweEY3LDB4RjYsMHg5NiwweEVFLDB4QUEsMHgyQSwweDhBLDB4QTIs
MHhGNywweEZFLDB4NzYsMHhFRSwweDZBLDB4RTAsMHhFQSwweEVBLAorICAgIDB4RjQsMHhERCww
eDQyLDB4NDEsMHg1OCwweDc4LDB4NzgsMHg3OCwweDAzLDB4MzksMHhDMSwweDM4LDB4QUEsMHgx
RCwweDI0LDB4QkEsCisgICAgMHg2NCwweDQ5LDB4MDIsMHg0MSwweDNGLDB4QUIsMHgyRiwweDY1
LDB4ODQsMHg1MSwweDIzLDB4NDksMHhFMiwweEEyLDB4QTksMHhGNSwKKyAgICAweDY0LDB4NDks
MHhFMiwweDQwLDB4RjgsMHg1QSwweEZCLDB4N0UsMHg0MywweDQ5LDB4MDMsMHg0MSwweEZGLDB4
QkIsMHgyRCwweDI5LAorICAgIDB4QzUsMHg1OSwweDQ0LDB4NDksMHgzNSwweDJELDB4MDksMHgw
QSwweDI3LDB4NkEsMHg4NCwweDUxLDB4QUQsMHhBRiwweDJBLDB4M0IsCisgICAgMHgyNywweDZB
LDB4QTQsMHg1OSwweDA4LDB4ODgsMHhBOCwweDdFLDB4NjcsMHg3MiwweDg1LDB4NTksMHgyMCww
eDJBLDB4QUQsMHhBRCwKKyAgICAweEE4LDB4N0EsMHg0NiwweDZBLDB4ODMsMHhBQSwweEE1LDB4
RjUsMHhBOCwweDdBLDB4NDcsMHg2QSwweDgyLDB4OEEsMHhFRiwweDdGLAorICAgIDB4ODgsMHg3
MiwweDQ3LDB4NzIsMHhCMCwweEJBLDB4Q0QsMHhCNSwweDg4LDB4NzIsMHgwNiwweDZBLDB4QTAs
MHhBRiwweDk3LDB4QUIsCisgICAgMHg2NywweDcyLDB4MjYsMHg2QSwweEE2LDB4MDIsMHgyQiww
eEVGLDB4NjcsMHg3MiwweDI2LDB4NkEsMHg4MCwweEYwLDB4NjgsMHhEOCwKKyAgICAweDY3LDB4
NzIsMHgwNiwweDYyLDB4QjAsMHhCRiwweEZELDB4RkYsMHhBNywweDdBLDB4RTUsMHg2MSwweDBB
LDB4QUQsMHhBQiwweEZGLAorICAgIDB4QzgsMHg3QSwweDY3LDB4NzIsMHhBQiwweEFFLDB4QUIs
MHgwRCwweEU5LDB4ODIsMHg4NywweDdBLDB4MEIsMHhCRiwweEVGLDB4RjcsCisgICAgMHgyQSww
eDhCLDB4ODgsMHg3QSwweDBBLDB4QkUsMHhGRiwweEQ1LDB4RTksMHg4QSwweDQ2LDB4NzIsMHhB
MCwweEUwLDB4N0EsMHg1RSwKKyAgICAweDY3LDB4N0EsMHhBNCwweDYxLDB4RTAsMHhGOCwweDdF
LDB4NUYsMHhFNSwweDY5LDB4ODMsMHg1OSwweEJDLDB4RTcsMHhDRiwweDJFLAorICAgIDB4MjYs
MHg3MiwweEM1LDB4NjksMHhBRCwweDNELDB4M0QsMHgyQSwweDY4LDB4N0EsMHhFNiwweDY5LDB4
RUEsMHhGOCwweDZBLDB4N0UsCisgICAgMHgwNiwweDcyLDB4NjQsMHg2MSwweEUwLDB4NzIsMHg3
MiwweDVBLDB4ODQsMHg2OSwweDIyLDB4NTksMHgyQSwweDI3LDB4MzcsMHhCRiwKKyAgICAweDA2
LDB4N0EsMHg2MywweDYxLDB4MEIsMHgyRiwweEFELDB4QkYsMHg0NywweDgyLDB4MDYsMHg3QSww
eEFGLDB4QTYsMHhGNSwweDc1LAorICAgIDB4NjcsMHg4QSwweDA2LDB4ODIsMHhDMCwweENBLDB4
NjksMHhDQiwweDQ3LDB4ODIsMHgyNiwweDgyLDB4QjIsMHhERCwweDk1LDB4NTUsCisgICAgMHhF
OSwweDkyLDB4NDcsMHg4MiwweEFELDB4QUIsMHgyRCwweDJGLDB4MjksMHg5QiwweEE4LDB4OEEs
MHgyNywweEI3LDB4RkIsMHhGRiwKKyAgICAweEI2LDB4RjYsMHg2QiwweEEzLDB4MkQsMHgyRCww
eDJELDB4MkQsMHgxNywweEZGLDB4RDcsMHhGRSwweEFELDB4QkQsMHhBRCwweEJGLAorICAgIDB4
RjcsMHhGRSwweDE4LDB4RjcsMHhCRSwweEZBLDB4RkUsMHhGRSwweDE4LDB4RkYsMHhGNywweEY2
LDB4QUYsMHg4OSwweEFCLDB4QUIsCisgICAgMHgxNywweEZGLDB4RjcsMHhGNiwweDgyLDB4OEEs
MHgyQSwweEI2LDB4MTgsMHhGRiwweDE3LDB4RjcsMHhFQSwweEFBLDB4QTIsMHhBQSwKKyAgICAw
eDM4LDB4RkYsMHhGNywweEY2LDB4QUUsMHhCQSwweDJGLDB4QkYsMHgzOCwweEZGLDB4MTcsMHhG
NywweEZGLDB4QUUsMHhBQSwweEZGLAorICAgIDB4MzgsMHhGRiwweDE4LDB4RkYsMHgyQSwweEFB
LDB4QkIsMHhFQiwweDM4LDB4RkYsMHgxOCwweEZGLDB4QTIsMHhBQSwweEZBLDB4RDUsCisgICAg
MHgxOCwweEZGLDB4MzgsMHhGNywweDA4LDB4MDIsMHhDMCwweEFBLDB4MzgsMHhGRiwweEQ3LDB4
RjYsMHg2QSwweEVBLDB4NzgsMHg1NywKKyAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4RTAsMHhB
OCwweEE4LDB4QUEsMHhENywweEY2LDB4QjYsMHhFRSwweEFGLDB4MEEsMHgwOCwweDAyLAorICAg
IDB4RDcsMHhGNiwweEI2LDB4RjYsMHhBQiwweEVBLDB4RUEsMHg1QywweEI2LDB4RjYsMHg3NSww
eEVFLDB4QTIsMHhBMCwweEE4LDB4RDgsCisgICAgMHg5NiwweEVFLDB4NTUsMHhFRSwweEUwLDB4
RTAsMHhGOCwweEY3LDB4QjYsMHhGNiwweDMwLDB4Q0QsMHg3QSwweDdFLDB4RUEsMHgwMCwKKyAg
ICAweDc1LDB4RUUsMHhBRSwweEJDLDB4RDcsMHhCNywweDJBLDB4MDAsMHg3NiwweEVFLDB4RDMs
MHhERCwweDJELDB4MEIsMHgwMCwweDA4LAorICAgIDB4NzUsMHhFRSwweEIyLDB4RDUsMHg1OCww
eEUyLDB4QTAsMHgwMCwweDE0LDB4RTYsMHg3MSwweENELDB4RjUsMHhERiwweEY2LDB4RjgsCisg
ICAgMHg3NiwweEVFLDB4RDMsMHhENSwweDBCLDB4MkQsMHhCNSwweEI1LDB4RjcsMHhGNiwweDU1
LDB4RTYsMHgyQSwweDhCLDB4MkIsMHhCRCwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4OEEs
MHhBQiwweEVGLDB4OTUsMHhGOCwweEY2LDB4RDcsMHhGNiwweEFBLDB4OUQsMHgzRSwweEZBLAor
ICAgIDB4RDgsMHhGRSwweEY3LDB4RjYsMHhERCwweDVELDB4NzUsMHhGRCwweEY3LDB4RjYsMHhE
NywweEY2LDB4QUEsMHg4OCwweDgwLDB4RkMsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEVD
LDB4QjIsMHhEMCwweDVELDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg4OCwweDgyLDB4RkQsMHg1NSwK
KyAgICAweEY3LDB4RjYsMHhCNywweEY2LDB4QTAsMHhGQSwweEQ3LDB4REIsMHhGNywweEY2LDB4
QjcsMHhGNiwweDdBLDB4N0YsMHhERiwweEJGLAorICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHg1
RiwweDU1LDB4OTUsMHhBQSwweEY3LDB4RjYsMHhCNiwweEVFLDB4RjUsMHhGQiwweEFBLDB4MkEs
CisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDVELDB4RjUsMHhBQSwweEEwLDB4MTgsMHhGRiww
eEQ3LDB4RjYsMHg3NSwweEJGLDB4RUIsMHhFQiwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4
QUQsMHgwMiwweDAwLDB4ODAsMHhGOCwweEZFLDB4RjcsMHhGNiwweEZGLDB4RkYsMHg1RCwweDU1
LAorICAgIDB4RjgsMHhGNiwweEQ4LDB4RjYsMHgwMCwweDIwLDB4RjgsMHhBRSwweEY4LDB4RjYs
MHhENywweEY2LDB4ODAsMHhFRSwweEZDLDB4OEEsCisgICAgMHhGOCwweEY2LDB4RDgsMHhGNiww
eDAwLDB4ODYsMHhBRSwweEZFLDB4RjcsMHhGNiwweEQ4LDB4RjYsMHgyRSwweEFGLDB4RkYsMHg1
QSwKKyAgICAweEY4LDB4RjYsMHhENywweEY2LDB4RTAsMHg4MCwweENBLDB4QUQsMHhGOCwweEY2
LDB4RDcsMHhGNiwweDdGLDB4RkYsMHhGRCwweEE5LAorICAgIDB4RjgsMHhGNiwweEQ3LDB4RjYs
MHg1OSwweDdGLDB4NkUsMHg1QSwweEQ3LDB4RjYsMHhEOCwweEVFLDB4QUEsMHhBMiwweEFBLDB4
MkEsCisgICAgMHhGNywweEY2LDB4QjcsMHhFRSwweDBBLDB4M0IsMHgyRiwweEJGLDB4MTgsMHhG
RiwweEI3LDB4RUUsMHhGQSwweEZBLDB4NjIsMHhGQSwKKyAgICAweEI3LDB4RUUsMHg3NSwweEVF
LDB4RkEsMHhEOCwweDc4LDB4RkMsMHg3NiwweEVFLDB4OTYsMHhFNiwweDA4LDB4MDIsMHg4QSww
eDBGLAorICAgIDB4OTYsMHhFRSwweDU1LDB4RUUsMHg4QSwweEVFLDB4RkYsMHhERiwweEI3LDB4
RUUsMHg1NiwweEVFLDB4RUIsMHhBRiwweDJELDB4QUYsCisgICAgMHg5NiwweEVFLDB4RjQsMHhE
RCwweDYwLDB4NjAsMHhFMCwweEMwLDB4RDMsMHhERCwweDEwLDB4QkQsMHgzRCwweEE1LDB4MjYs
MHgyNywKKyAgICAweDk2LDB4RUUsMHhGNCwweERELDB4MkIsMHgyRCwweEFELDB4MkYsMHhCNyww
eEY2LDB4NzYsMHhFRSwweEZFLDB4RUEsMHhGQSwweDdBLAorICAgIDB4OTYsMHhFRSwweDM1LDB4
RTYsMHhGMiwweEVBLDB4RkMsMHg3QSwweDE0LDB4REUsMHg3MiwweENELDB4NUMsMHg1QywweDU4
LDB4NzgsCisgICAgMHg5MiwweENELDB4NTEsMHhDRCwweEZGLDB4M0UsMHhFRiwweDU1LDB4OTIs
MHhENSwweDMxLDB4QzUsMHhFMywweEZBLDB4REUsMHg1RiwKKyAgICAweEIyLDB4RDUsMHgxMCww
eEM1LDB4RkIsMHhBRiwweEFGLDB4MjUsMHhGMywweERELDB4OTIsMHhDRCwweEI1LDB4QUQsMHgy
RiwweDJCLAorICAgIDB4MTQsMHhERSwweEQzLDB4REQsMHgwRiwweEFGLDB4QUIsMHhDMiwweDU1
LDB4RTYsMHhGNCwweERELDB4QkQsMHhCNywweDM3LDB4OTcsCisgICAgMHg5NiwweEVFLDB4NTUs
MHhFNiwweDJELDB4MkQsMHg4QiwweEFELDB4OTYsMHhFRSwweDc2LDB4RUUsMHg3QywweDZCLDB4
RkIsMHhGRiwKKyAgICAweDc1LDB4RUUsMHg1NSwweEU2LDB4NTgsMHhCQSwweEU4LDB4RkEsMHg5
NiwweEVFLDB4MzQsMHhFNiwweEZELDB4QUYsMHgzRiwweEFCLAorICAgIDB4RjcsMHhGNiwweEI2
LDB4RUUsMHhBQiwweEVCLDB4RUIsMHhGRSwweEY3LDB4RjYsMHhCNiwweEVFLDB4RkEsMHhGRSww
eEZGLDB4RjcsCisgICAgMHhENywweEY2LDB4RDYsMHhFRSwweEFBLDB4MjIsMHhBQSwweEFBLDB4
RDcsMHhGNiwweEY2LDB4RUUsMHgwMCwweDIyLDB4QTgsMHgyQSwKKyAgICAweEY3LDB4RjYsMHhC
NiwweEVFLDB4RUYsMHhGRSwweEFBLDB4Q0EsMHhENywweEY2LDB4QjYsMHhFRSwweDhBLDB4MkEs
MHgwOCwweDgzLAorICAgIDB4RDcsMHhGNiwweEY2LDB4RUUsMHgwOCwweDgyLDB4MDgsMHgzOCww
eEQ3LDB4RjYsMHhGNywweEVFLDB4ODAsMHgwOCwweDIyLDB4ODIsCisgICAgMHhENywweEY2LDB4
RjYsMHhFRSwweEU4LDB4QTAsMHgyMCwweDA4LDB4RDcsMHhGNiwweEY3LDB4RUUsMHg4OCwweDIy
LDB4MjAsMHhBMiwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4QjcsMHhGRCwweEZGLDB4N0Ys
MHhGNiwweEY2LDB4RDcsMHhGNiwweEVGLDB4RkQsMHhENywweDU3LAorICAgIDB4RDcsMHhGNiww
eEI1LDB4RUUsMHhFMCwweEEwLDB4QTgsMHhFOCwweEQ3LDB4RjYsMHhCNiwweEVFLDB4QUEsMHg2
QSwweEVBLDB4RUUsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEVCLDB4QjUsMHg5RiwweEIy
LDB4RDcsMHhGNiwweEI2LDB4RUUsMHg1NSwweEY3LDB4NzYsMHhERiwKKyAgICAweEQ2LDB4RjYs
MHhCNiwweEVFLDB4RkUsMHg1NywweEZFLDB4QTMsMHhENiwweEY2LDB4QjYsMHhFRSwweDNGLDB4
QUIsMHgyOSwweEFELAorICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHhBQSwweEFBLDB4QUYsMHhF
QiwweEY3LDB4RjYsMHhENywweEY2LDB4ODksMHg5NywweDVELDB4NUQsCisgICAgMHhGNywweEY2
LDB4RDcsMHhGNiwweEZGLDB4NkYsMHg2QywweDdELDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhGNSww
eDVGLDB4NzUsMHhCRCwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4M0UsMHhCQSwweEFCLDB4
QkIsMHhGNywweEY2LDB4RDcsMHhGNiwweEZBLDB4QTIsMHg0QywweEVBLAorICAgIDB4RjcsMHhG
NiwweEQ3LDB4RjYsMHg1RSwweEZBLDB4NUUsMHg2QSwweEY3LDB4RjYsMHhCNiwweEVFLDB4Q0Es
MHhFQSwweEVBLDB4N0EsCisgICAgMHgzNCwweERFLDB4RTUsMHg1OSwweDc4LDB4NzAsMHg2MCww
eDYwLDB4NDMsMHg0MSwweEMyLDB4MzgsMHg1RSwweEZFLDB4N0MsMHg3QSwKKyAgICAweDIzLDB4
NDksMHg4MSwweDMwLDB4MEEsMHgyQiwweEFELDB4QUYsMHg2NCwweDUxLDB4MDMsMHg0MSwweEFG
LDB4OEYsMHhBNSwweDNELAorICAgIDB4ODUsMHg1MSwweDAyLDB4NDEsMHg1RiwweEZBLDB4QUUs
MHgwMiwweEM1LDB4NjEsMHg0MywweDQ5LDB4RjUsMHhCOSwweEFBLDB4MEEsCisgICAgMHgwNiww
eDYyLDB4ODQsMHg1OSwweEU1LDB4QkYsMHgyRiwweDAyLDB4RTYsMHg2MSwweEE1LDB4NTksMHhB
MiwweEUwLDB4RTAsMHhCQywKKyAgICAweEM1LDB4NTksMHg2NCwweDU5LDB4ODAsMHg4OCwweEFB
LDB4M0EsMHhFNiwweDYxLDB4QTUsMHg1OSwweDBFLDB4QkQsMHg3OSwweDVBLAorICAgIDB4MjYs
MHg2QSwweEE1LDB4NTksMHgwMiwweEFBLDB4RTksMHhBNywweDQ3LDB4NzIsMHhFNiwweDYxLDB4
MDMsMHhBMiwweEFBLDB4RUQsCisgICAgMHg0NywweDZBLDB4MDYsMHg2MiwweEVBLDB4RkYsMHhG
QiwweEZGLDB4NjgsMHg3MiwweEU1LDB4NjEsMHgwQSwweDJCLDB4QUIsMHhCNSwKKyAgICAweDg4
LDB4NzIsMHgwNSwweDYyLDB4RTIsMHhGMCwweDdBLDB4REYsMHg0NywweDZBLDB4MDYsMHg2Miww
eEYwLDB4NzAsMHhERCwweDU3LAorICAgIDB4MjYsMHg2QSwweDA1LDB4NjIsMHhBQywweEJBLDB4
NTcsMHg3RCwweDY3LDB4NzIsMHhFNSwweDYxLDB4QkEsMHgyRSwweEVELDB4RjcsCisgICAgMHhD
OSwweDdBLDB4MjYsMHg2QSwweDJELDB4QUYsMHhCQiwweEY1LDB4RTksMHg4MiwweDQ3LDB4NzIs
MHg4RSwweEFFLDB4NzcsMHg1NSwKKyAgICAweDg4LDB4N0EsMHhFNiwweDYxLDB4MDAsMHhBOCww
eEVFLDB4NUYsMHg0NywweDcyLDB4QTQsMHg1OSwweEU4LDB4RUEsMHg3QSwweDdGLAorICAgIDB4
MDUsMHg2QSwweDgzLDB4NTksMHg3RiwweEY3LDB4QkYsMHgyRiwweDQ3LDB4N0EsMHhBNCwweDYx
LDB4QjUsMHhCRiwweDJBLDB4MDIsCisgICAgMHg2OCwweDdBLDB4MjYsMHg3MiwweDdELDB4N0Ys
MHg3QiwweDcwLDB4MjYsMHg3MiwweEM1LDB4NjksMHg3OCwweDc4LDB4NzgsMHg3MCwKKyAgICAw
eEM1LDB4NjksMHhFMywweDUwLDB4RTgsMHhGQywweDdFLDB4REUsMHg0NCwweDU5LDB4MDMsMHg1
OSwweDIyLDB4MDMsMHg5QSwweEFGLAorICAgIDB4QTUsMHg2OSwweDQ0LDB4NjEsMHgwQSwweDJC
LDB4MkYsMHhGRCwweDA2LDB4N0EsMHhBNSwweDY5LDB4MDIsMHhBQiwweDFGLDB4QjksCisgICAg
MHg4NywweDhBLDB4MjcsMHg4MiwweDdELDB4RjUsMHhGNSwweDI3LDB4ODcsMHg4QSwweDI2LDB4
N0EsMHg1RCwweERCLDB4RjMsMHhGRSwKKyAgICAweEM4LDB4OEEsMHg0NywweDgyLDB4QkQsMHhC
RiwweEFELDB4MjksMHgyOSwweDkzLDB4ODcsMHg4MiwweDlGLDB4NzUsMHgzNywweDM3LAorICAg
IDB4OTYsMHhGNiwweEVDLDB4QUIsMHgyRCwweDJELDB4MjksMHgwOSwweEY3LDB4RkUsMHhENyww
eEY2LDB4MEEsMHgwOCwweDAyLDB4MDMsCisgICAgMHhGNywweEZFLDB4MTcsMHhGNywweEVFLDB4
RUEsMHhFRSwweEU4LDB4RjcsMHhGRSwweDE4LDB4RjcsMHhFRiwweEFFLDB4RkYsMHhCQiwKKyAg
ICAweDE3LDB4RkYsMHhGNywweEY2LDB4OUUsMHhCNSwweEJELDB4QUIsMHhGNywweEZFLDB4MTgs
MHhGNywweDlCLDB4NUIsMHhCRiwweEJGLAorICAgIDB4MTcsMHhGRiwweEY3LDB4RjYsMHgyQiww
eEFFLDB4QUUsMHhFQiwweDE3LDB4RkYsMHhGNywweEY2LDB4QTAsMHhCRiwweEI3LDB4REYsCisg
ICAgMHgxNywweEZGLDB4RjgsMHhGNiwweDAwLDB4QUEsMHhFRiwweEFGLDB4MTgsMHhGRiwweEY3
LDB4RjYsMHgyMiwweDBBLDB4MDIsMHgwQSwKKyAgICAweDM4LDB4RkYsMHhENywweEY2LDB4QTgs
MHhGMiwweDdBLDB4N0UsMHhGNywweEY2LDB4QjYsMHhFRSwweEYwLDB4RjgsMHhGQSwweEZGLAor
ICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHgyOSwweEFCLDB4RkEsMHhGRSwweEI2LDB4RjYsMHhE
NywweEVFLDB4RkUsMHhCRSwweEFFLDB4RUYsCisgICAgMHhENiwweEY2LDB4OTYsMHhFRSwweDdB
LDB4RkUsMHg3RiwweDVFLDB4OTYsMHhFRSwweDkyLDB4RDUsMHhBMCwweEE4LDB4RUEsMHg1QSwK
KyAgICAweEQ3LDB4RjYsMHg3MSwweENELDB4MkEsMHhBQiwweDBGLDB4MkQsMHgxOCwweEZGLDB4
RDcsMHhGRSwweEJELDB4QUYsMHgyRSwweEFBLAorICAgIDB4MTgsMHhGRiwweDk2LDB4RjYsMHg1
RSwweDdBLDB4RTgsMHhBMiwweEQ3LDB4RjYsMHg3NSwweEVFLDB4NTUsMHg1RSwweDVGLDB4NUMs
CisgICAgMHg3NSwweEVFLDB4NTUsMHhFRSwweDk4LDB4MzgsMHhCOCwweDc4LDB4NTUsMHhFRSww
eEIyLDB4RDUsMHhGQywweDcwLDB4RTAsMHg4MCwKKyAgICAweDM0LDB4RTYsMHhCMiwweEQ1LDB4
MkIsMHgzRCwweDM1LDB4QUYsMHhCNiwweEY2LDB4MTQsMHhERSwweDJGLDB4MkYsMHhCRCwweEVE
LAorICAgIDB4RjcsMHhGNiwweDk2LDB4RjYsMHgyQSwweDJCLDB4MkYsMHgyRCwweEY3LDB4RjYs
MHhENywweEY2LDB4N0UsMHhBRiwweEVCLDB4NkIsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiww
eEFELDB4RkUsMHhFOCwweEEzLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhGRSwweDVCLDB4NkIsMHhF
QSwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4NzUsMHhGRiwweEE5LDB4MEYsMHhGNywweEY2
LDB4RDcsMHhGNiwweDc1LDB4RkIsMHhGRSwweEQ3LAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYs
MHg1NSwweEY1LDB4QkQsMHhDRiwweEY4LDB4RjYsMHhENywweEY2LDB4RDUsMHgyRCwweDAxLDB4
MEEsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDVDLDB4NzYsMHg1NCwweDVDLDB4RjcsMHhG
NiwweEQ3LDB4RjYsMHg5NSwweDU3LDB4QjUsMHhBNSwKKyAgICAweEY3LDB4RjYsMHhENywweEY2
LDB4QjgsMHhBRSwweEU2LDB4RTIsMHhGNywweEY2LDB4QjcsMHhGNiwweDAwLDB4MkMsMHgyRSww
eDgyLAorICAgIDB4RDcsMHhGNiwweEY3LDB4RUUsMHhBQiwweDhCLDB4QUEsMHhBQywweEY3LDB4
RjYsMHhENywweEY2LDB4QUEsMHgyQiwweDhFLDB4RkEsCisgICAgMHhGNywweEY2LDB4RDcsMHhG
NiwweDA4LDB4MjIsMHgwMiwweEJBLDB4RjcsMHhGNiwweEQ4LDB4RjYsMHhBQSwweEI4LDB4QTgs
MHg4OCwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4RkUsMHhCQSwweEEyLDB4MjAsMHhGNyww
eEY2LDB4RDcsMHhGNiwweDc4LDB4QUEsMHg4MCwweDIwLAorICAgIDB4RjcsMHhGNiwweEQ4LDB4
RjYsMHg4QSwweDhBLDB4MDAsMHg4MCwweEQ4LDB4RkUsMHhGOCwweEY2LDB4RDUsMHg1NSwweDdE
LDB4RjUsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEU0LDB4NkEsMHg2MCwweDdBLDB4RDcs
MHhGNiwweEI3LDB4RUUsMHg4QSwweEJBLDB4REYsMHhENiwKKyAgICAweEI3LDB4RjYsMHgxOCww
eEVGLDB4QTgsMHhBOCwweEFBLDB4QTgsMHhGOCwweEY2LDB4QjcsMHhGNiwweEUyLDB4QzAsMHhD
MCwweEMyLAorICAgIDB4QjYsMHhFRSwweDc2LDB4RUUsMHg3QywweDVFLDB4N0UsMHg1RSwweEI2
LDB4RUUsMHg1NiwweEU2LDB4RUIsMHg3QiwweEVCLDB4MkYsCisgICAgMHg5NiwweEVFLDB4NTUs
MHhFRSwweERGLDB4QkEsMHgwOCwweDAwLDB4OTYsMHhGNiwweDc2LDB4RUUsMHgyRCwweEFCLDB4
RTgsMHhBMiwKKyAgICAweEI3LDB4RjYsMHgxNCwweERFLDB4NjAsMHg2QSwweDZBLDB4NzIsMHhG
NCwweERELDB4NTEsMHhDNSwweDE3LDB4QjcsMHgzNywweEI3LAorICAgIDB4OTcsMHhFRSwweDE0
LDB4REUsMHhCRCwweEFELDB4MjUsMHgyRCwweDk2LDB4RUUsMHg1NSwweEVFLDB4QTAsMHhFOCww
eEUwLDB4RkEsCisgICAgMHg3NSwweEVFLDB4MzUsMHhFNiwweEY4LDB4QkEsMHhFOCwweEFFLDB4
MzUsMHhFNiwweDcyLDB4Q0QsMHg3QywweDU4LDB4NTgsMHg1OCwKKyAgICAweDcyLDB4Q0QsMHgz
MSwweEM1LDB4QkUsMHg1RSwweDU4LDB4RDcsMHg1MiwweENELDB4RDAsMHhCQywweEUwLDB4RkIs
MHg3RSwweDdBLAorICAgIDB4QjIsMHhENSwweENGLDB4QkMsMHgyQiwweEFGLDB4MjUsMHgyRCww
eDM0LDB4RTYsMHhEMiwweEQ1LDB4RkQsMHhCNSwweEJELDB4MkQsCisgICAgMHgxNCwweEU2LDB4
MzQsMHhERSwweEE4LDB4QkYsMHhBRiwweEFGLDB4NTUsMHhFNiwweEYzLDB4REQsMHhCRCwweEJF
LDB4QkYsMHhBRiwKKyAgICAweDk2LDB4RUUsMHg1NSwweEU2LDB4QkQsMHhFRCwweDBELDB4QUYs
MHg5NiwweEVFLDB4NzYsMHhFRSwweDc5LDB4MzksMHhBRiwweDhCLAorICAgIDB4NzUsMHhFRSww
eDU1LDB4RTYsMHhGOCwweEU4LDB4ODIsMHhBMCwweDk2LDB4RUUsMHg1NSwweEU2LDB4QUYsMHhB
RiwweEI3LDB4QkYsCisgICAgMHhENiwweEY2LDB4QjcsMHhFRSwweEIwLDB4ODIsMHhBOCwweDJB
LDB4RDcsMHhGNiwweEI2LDB4RUUsMHhGQSwweEVFLDB4QUEsMHhBMiwKKyAgICAweEQ2LDB4RjYs
MHhCNywweEVFLDB4OEIsMHgyRSwweDhBLDB4QTgsMHhENiwweEY2LDB4QjcsMHhFRSwweDgwLDB4
RjAsMHg4MiwweDI4LAorICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHgyQiwweEFBLDB4QUEsMHhB
QywweEQ3LDB4RjYsMHhCNiwweEVFLDB4MDIsMHgwMiwweDAwLDB4OEUsCisgICAgMHhENywweEY2
LDB4RjYsMHhFRSwweEE4LDB4MjgsMHgwMCwweDIwLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg1Riww
eEZGLDB4RkYsMHhGNSwKKyAgICAweEQ3LDB4RjYsMHhGNywweEVFLDB4MjIsMHgwMCwweDgyLDB4
QTgsMHhGNywweEY2LDB4RDcsMHhGNiwweEY1LDB4QkIsMHhCRSwweEFELAorICAgIDB4RjcsMHhG
NiwweEQ3LDB4RjYsMHhGRiwweEZGLDB4MkYsMHhBRCwweEY3LDB4RjYsMHhENywweEY2LDB4QkEs
MHhBOSwweEFCLDB4RTgsCisgICAgMHhENywweEY2LDB4RjYsMHhFRSwweDJBLDB4MDIsMHgwOCww
eDJBLDB4RDYsMHhGNiwweEI3LDB4RUUsMHgyQSwweDJBLDB4QUMsMHhBRSwKKyAgICAweEQ2LDB4
RjYsMHhCNywweEVFLDB4QTIsMHgyQSwweEFBLDB4MkEsMHhENywweEY2LDB4QjYsMHhFRSwweEJG
LDB4QkUsMHg4OCwweDgwLAorICAgIDB4QjYsMHhGNiwweEQ2LDB4RUUsMHhFRiwweEFCLDB4QkIs
MHhFRCwweEI2LDB4RjYsMHhENywweEVFLDB4OEIsMHhBQiwweEZFLDB4RUYsCisgICAgMHhGNiww
eEY2LDB4RDcsMHhGNiwweDc1LDB4RjUsMHhFRCwweEFELDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhE
RCwweEY3LDB4REQsMHg1NywKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4NUYsMHhFOSwweEUz
LDB4N0QsMHhGNywweEY2LDB4RDcsMHhGNiwweEFELDB4QkEsMHhFQiwweDZFLAorICAgIDB4Rjcs
MHhGNiwweEQ3LDB4RjYsMHhGQSwweEFGLDB4RUEsMHgwQywweEY3LDB4RjYsMHhENywweEY2LDB4
QUYsMHhBOCwweEVFLDB4RUEsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDZBLDB4NUUsMHg1
RCwweDlELDB4RjcsMHhGNiwweEI2LDB4RUUsMHg3QSwweEVBLDB4QUIsMHhBQSwKKyAgICAweDc1
LDB4RUUsMHgwOSwweDdCLDB4NzAsMHg3MCwweDYwLDB4RTAsMHhFNCwweDU5LDB4QzIsMHgzOCww
eDVFLDB4NUUsMHg3QSwweEY4LAorICAgIDB4NjQsMHg1MSwweEMyLDB4MzgsMHhERCwweEE1LDB4
QkYsMHgyQSwweEU1LDB4NjEsMHhFMiwweDQwLDB4QkQsMHhCRCwweDJCLDB4MkUsCisgICAgMHgw
NiwweDZBLDB4ODQsMHg1MSwweEY1LDB4QkYsMHhBQSwweDgwLDB4MjYsMHg2QSwweEM1LDB4NTks
MHg5RCwweDA5LDB4QUIsMHg4MCwKKyAgICAweDI3LDB4NzIsMHgwNSwweDYyLDB4RTksMHg4QSww
eDg5LDB4Q0EsMHgyNiwweDZBLDB4QzYsMHg2MSwweDY0LDB4QzgsMHhFOCwweEEyLAorICAgIDB4
MDYsMHg2MiwweEE0LDB4NTksMHg1QiwweDdFLDB4QkUsMHhFOCwweEU1LDB4NjEsMHhBNSwweDU5
LDB4QkYsMHhGQSwweEFGLDB4OEEsCisgICAgMHgyNywweDZBLDB4RTYsMHg2MSwweEUxLDB4M0Ys
MHgwOSwweDA5LDB4NDcsMHg2QSwweDA2LDB4NjIsMHg5NywweEQ3LDB4RTIsMHgwMCwKKyAgICAw
eDQ3LDB4NkEsMHhFNSwweDYxLDB4RjcsMHg1RiwweDdDLDB4RjgsMHgyNiwweDZBLDB4QzQsMHg1
OSwweDJGLDB4Q0YsMHhGRiwweDk2LAorICAgIDB4MDYsMHg2QSwweEM1LDB4NTksMHhCQywweEZF
LDB4QkIsMHhGQSwweDA1LDB4NkEsMHhDNSwweDU5LDB4MkEsMHhFOSwweEZBLDB4RkEsCisgICAg
MHgyNiwweDZBLDB4QzUsMHg1OSwweEEyLDB4RkQsMHhGNywweDVELDB4NDcsMHg2QSwweEU1LDB4
NjEsMHg0QiwweEFELDB4RjUsMHg1RCwKKyAgICAweDQ3LDB4NkEsMHhBNCwweDU5LDB4MEUsMHhG
QSwweEVFLDB4OUUsMHgyNiwweDZBLDB4QzQsMHg1OSwweDg4LDB4QzIsMHg3QiwweDU3LAorICAg
IDB4MDYsMHg2QSwweEE0LDB4NTksMHhFOCwweEFFLDB4RjYsMHhGRiwweEU1LDB4NjksMHg4Myww
eDU5LDB4REUsMHhCQSwweEJFLDB4MEUsCisgICAgMHg2NywweDdBLDB4QzQsMHg2MSwweEI1LDB4
QUQsMHgyRCwweDBCLDB4QzgsMHg4QSwweDQ3LDB4N0EsMHg1RiwweEY3LDB4QUQsMHg4QSwKKyAg
ICAweEE4LDB4ODIsMHg0NywweDdBLDB4N0IsMHg3RiwweEU4LDB4ODAsMHg2OCwweDdBLDB4NjQs
MHg2MSwweEZBLDB4N0EsMHg3OCwweEY4LAorICAgIDB4NjUsMHg2MSwweEUyLDB4NTAsMHhCNCww
eEY2LDB4RkUsMHhBQywweDg1LDB4NjEsMHgyMywweDU5LDB4NTUsMHhFNSwweEZELDB4OEIsCisg
ICAgMHhBNCwweDY5LDB4NDMsMHg1OSwweEI1LDB4MTUsMHhCRiwweDNCLDB4NjcsMHg4MiwweEM1
LDB4NzEsMHhCRCwweEE5LDB4MjksMHgwOSwKKyAgICAweEE4LDB4OEEsMHg0NywweDgyLDB4RkQs
MHgyRCwweDhGLDB4MjIsMHhDOCwweDhBLDB4NjcsMHg4MiwweDc3LDB4RkEsMHhBQiwweEVBLAor
ICAgIDB4QTgsMHg4QSwweDI2LDB4N0EsMHgwQSwweDgwLDB4QUEsMHg3RSwweDJELDB4QUMsMHgy
NiwweDcyLDB4QkYsMHhCNywweEI1LDB4MjUsCisgICAgMHhENywweEZFLDB4QUYsMHhCQywweDJE
LDB4MjksMHgwOSwweDBCLDB4MTcsMHhGRiwweEQ4LDB4RjYsMHhFQiwweDhCLDB4QUEsMHgwMiwK
KyAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4RkYsMHhDRiwweEEzLDB4ODIsMHgxNywweEZGLDB4
RjcsMHhGNiwweEZFLDB4RjcsMHhCRCwweEJGLAorICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHg4
QiwweDJBLDB4QUEsMHgyQSwweEY3LDB4RkUsMHgxOCwweEY3LDB4RTUsMHhGRiwweEVGLDB4RkYs
CisgICAgMHgxNywweEZGLDB4RjcsMHhGNiwweEVCLDB4RkUsMHg3RSwweDVFLDB4RjcsMHhGRSww
eEY3LDB4RjYsMHg1RiwweEZGLDB4RkQsMHhERiwKKyAgICAweDE3LDB4RkYsMHhENywweEY2LDB4
QUYsMHgwQiwweDJCLDB4MEIsMHgxOCwweEZGLDB4RDcsMHhGNiwweDAwLDB4ODAsMHg2OCwweDU4
LAorICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHhCOCwweDVFLDB4NTcsMHg3NywweEI2LDB4RjYs
MHhENywweEVFLDB4QUEsMHhFQiwweEVCLDB4RkEsCisgICAgMHgxOCwweEZGLDB4QjYsMHhFRSww
eEY3LDB4RjcsMHhGRiwweDJCLDB4MzgsMHhGRiwweEI2LDB4RUUsMHg3NywweEZELDB4QkYsMHgw
MiwKKyAgICAweDE4LDB4RkYsMHg5NiwweEVFLDB4NTcsMHhGRiwweEFBLDB4MDAsMHhENywweEY2
LDB4QjIsMHhENSwweDdFLDB4RjgsMHhFMCwweEE4LAorICAgIDB4RDcsMHhGNiwweEIyLDB4RDUs
MHgwRCwweDJCLDB4MEEsMHgwQiwweEY4LDB4RkUsMHgxOCwweEY3LDB4ODgsMHgyMCwweDI4LDB4
QUEsCisgICAgMHgxNywweEZGLDB4RDgsMHhGNiwweEFCLDB4QTUsMHhGQiwweDJBLDB4MTgsMHhG
RiwweDc2LDB4RUUsMHg1RSwweDdDLDB4N0EsMHg3OCwKKyAgICAweDc1LDB4RUUsMHg1NSwweEU2
LDB4NUUsMHhGOCwweEU4LDB4QjgsMHg3NSwweEVFLDB4MzQsMHhFRSwweEVBLDB4RUEsMHhFQSww
eEFBLAorICAgIDB4MzUsMHhFNiwweEQyLDB4RDUsMHhCNiwweEJFLDB4RTAsMHhBMCwweDc1LDB4
RUUsMHgxNCwweERFLDB4MjksMHhBRiwweEFGLDB4OTUsCisgICAgMHhGOCwweEZFLDB4NTUsMHhF
NiwweDJCLDB4MkYsMHhBOSwweEFELDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg4OSwweEJFLDB4QkYs
MHhBQiwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4RUEsMHhFMiwweEUyLDB4MEEsMHhGNyww
eEY2LDB4RDcsMHhGNiwweDZFLDB4REQsMHg3RiwweDgwLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4
RjYsMHhBRCwweEE1LDB4QTksMHgwNSwweEY3LDB4RjYsMHhENywweEY2LDB4QjcsMHhBRiwweDZE
LDB4RDcsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEFBLDB4NTcsMHg1NSwweDU1LDB4Rjcs
MHhGNiwweEQ3LDB4RjYsMHhFOCwweDVFLDB4NUQsMHg1RiwKKyAgICAweEY3LDB4RjYsMHhENyww
eEY2LDB4NUYsMHg3RCwweEZGLDB4N0YsMHhGNywweEY2LDB4RDcsMHhGNiwweEJGLDB4RkQsMHg3
RiwweEZGLAorICAgIDB4RDcsMHhGNiwweEY3LDB4RUUsMHhBRSwweDgyLDB4QTgsMHhFQSwweEY3
LDB4RjYsMHhENywweEY2LDB4RUIsMHhFOSwweEU5LDB4NUUsCisgICAgMHhGNywweEY2LDB4RDcs
MHhGNiwweEFCLDB4QkEsMHhBRSwweDJFLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHgyNSwweEEzLDB4
RTIsMHg3QywKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4QUUsMHgwQSwweDJBLDB4N0IsMHgx
OCwweEZGLDB4RDcsMHhGNiwweEFBLDB4QUIsMHhFRiwweDU1LAorICAgIDB4RjcsMHhGNiwweEQ3
LDB4RUUsMHgyMCwweEFDLDB4RDQsMHhERCwweEY3LDB4RjYsMHhENywweEY2LDB4QTgsMHhBQSww
eEI5LDB4M0QsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDg4LDB4RUEsMHhBRSwweDg4LDB4
RjcsMHhGNiwweEQ3LDB4RjYsMHhFQSwweDc4LDB4NUUsMHg3RiwKKyAgICAweEY3LDB4RjYsMHhC
NywweEVFLDB4RkEsMHhGQSwweDdFLDB4NUYsMHhENywweEY2LDB4OTYsMHhFRSwweEFBLDB4QkEs
MHhCRiwweEI3LAorICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHgwQSwweDIyLDB4QUYsMHg1NSww
eEY3LDB4RjYsMHhCNywweEVFLDB4QzIsMHhFQSwweEZCLDB4QUYsCisgICAgMHhENywweEY2LDB4
NzUsMHhFNiwweDVGLDB4RkUsMHg3QSwweERDLDB4QjYsMHhFRSwweDk2LDB4RUUsMHg3NSwweDc1
LDB4RkQsMHhFNSwKKyAgICAweDk2LDB4RUUsMHg3NiwweEVFLDB4MDAsMHhGQywweERDLDB4OUMs
MHg5NiwweEVFLDB4MzYsMHhFRSwweDI4LDB4MkEsMHgzQSwweDJBLAorICAgIDB4OTcsMHhGNiww
eEY0LDB4REQsMHg2OCwweDYwLDB4NDgsMHg2MCwweEY0LDB4REQsMHg1MSwweEM1LDB4QjYsMHhC
RSwweDNGLDB4MzYsCisgICAgMHg5NiwweEVFLDB4MTQsMHhERSwweEFELDB4QUYsMHhBRCwweEFE
LDB4OTYsMHhFRSwweDU1LDB4RTYsMHg3QSwweDY4LDB4N0UsMHg1QSwKKyAgICAweDc1LDB4RUUs
MHgzNiwweEU2LDB4QUEsMHhBQSwweEZBLDB4REYsMHg1NSwweEU2LDB4NTIsMHhDRCwweDc4LDB4
NzgsMHg2OCwweDc4LAorICAgIDB4NTIsMHhDRCwweEFGLDB4QkMsMHg4OCwweEEwLDB4RUEsMHg3
RSwweDExLDB4QzUsMHhBRiwweEJDLDB4RjgsMHg3NiwweERCLDB4RjUsCisgICAgMHhEMywweERE
LDB4Q0YsMHhCQywweEFELDB4MkQsMHgyRCwweDJELDB4MzQsMHhFNiwweEQyLDB4RDUsMHgyRCww
eDI5LDB4MjIsMHgwQiwKKyAgICAweDU1LDB4RTYsMHgxNCwweEU2LDB4RUIsMHhBQSwweEFBLDB4
RUEsMHg1NCwweEU2LDB4MTQsMHhFNiwweEI3LDB4QjcsMHhCNSwweEE5LAorICAgIDB4OTYsMHhF
RSwweDM0LDB4RTYsMHg4QSwweEFCLDB4MkUsMHhBOSwweEI2LDB4RjYsMHg3NiwweEVFLDB4RUYs
MHhFRCwweEFCLDB4QUYsCisgICAgMHg5NSwweEVFLDB4NTUsMHhFNiwweDVFLDB4NUUsMHhERSww
eERFLDB4QjcsMHhGNiwweDU1LDB4RTYsMHhCRCwweEFELDB4MkIsMHgwQiwKKyAgICAweEQ2LDB4
RjYsMHhCNiwweEVFLDB4QTIsMHhGQSwweEU4LDB4OEEsMHhCNiwweEY2LDB4RDcsMHhFRSwweEJG
LDB4QkYsMHhCRiwweEY3LAorICAgIDB4QjYsMHhGNiwweEQ3LDB4RUUsMHhGRiwweEZCLDB4RkIs
MHhCRiwweEQ3LDB4RjYsMHhCNiwweEVFLDB4MkEsMHg4RSwweEI4LDB4QUMsCisgICAgMHhCNiww
eEY2LDB4RDcsMHhFRSwweDZELDB4RkYsMHhGRiwweEZGLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhF
OCwweDBBLDB4MkEsMHgwMiwKKyAgICAweEQ3LDB4RjYsMHhGNiwweEVFLDB4ODAsMHgyMiwweDBB
LDB4MkEsMHhENywweEY2LDB4RjYsMHhFRSwweDIwLDB4MDIsMHhDOCwweEEwLAorICAgIDB4RDcs
MHhGNiwweEI3LDB4RUUsMHgwMiwweDA4LDB4MjgsMHgwOCwweEQ3LDB4RjYsMHhGNywweEVFLDB4
QTgsMHhBMCwweDIwLDB4ODAsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEExLDB4QjUsMHhC
NSwweDU1LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhEQiwweERBLDB4RDAsMHg1RiwKKyAgICAweEY3
LDB4RjYsMHhENywweEY2LDB4NUEsMHhERSwweDU2LDB4RDcsMHhGNywweEY2LDB4RDcsMHhGNiww
eDU1LDB4NUYsMHhGRSwweDk1LAorICAgIDB4RDYsMHhGNiwweEI3LDB4RUUsMHgyMCwweDIyLDB4
MjgsMHhBMCwweEQ3LDB4RjYsMHhGNiwweEVFLDB4MjAsMHhBMiwweDIyLDB4QTIsCisgICAgMHhG
NywweEY2LDB4QjYsMHhFRSwweERBLDB4N0UsMHhFRSwweEVBLDB4RDcsMHhGNiwweEI2LDB4RUUs
MHhCRiwweEJBLDB4QjIsMHhFQiwKKyAgICAweEY4LDB4RjYsMHhENywweEY2LDB4ODUsMHhCNSww
eEY1LDB4RkQsMHhGNywweEY2LDB4RDcsMHhGNiwweDVCLDB4QkUsMHhCNSwweEY5LAorICAgIDB4
RjcsMHhGNiwweEQ3LDB4RjYsMHhGQiwweDNBLDB4QUUsMHhBQywweEY3LDB4RjYsMHhENywweEY2
LDB4RUEsMHhFOCwweEVBLDB4RUYsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDg3LDB4RUQs
MHhFRCwweERGLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg4RSwweEJCLDB4QUYsMHhFQSwKKyAgICAw
eEY3LDB4RjYsMHhENywweEY2LDB4QjcsMHg5NCwweEQ0LDB4RjgsMHhGNywweEZFLDB4RDcsMHhG
NiwweDdCLDB4NkUsMHhGRSwweDU3LAorICAgIDB4QjYsMHhGNiwweDRELDB4QUMsMHg2MCwweEUw
LDB4NjAsMHg3OCwweDI5LDB4ODMsMHg0MywweDQ5LDB4NUUsMHg3QywweEY4LDB4RUEsCisgICAg
MHgyNSwweDZBLDB4NDMsMHg0OSwweEQ1LDB4RkIsMHhBQSwweDgwLDB4NDYsMHg2QSwweEE0LDB4
NTksMHg3RCwweEZGLDB4MkYsMHgwQiwKKyAgICAweDY3LDB4NzIsMHhDNSwweDYxLDB4QkQsMHhF
QSwweEE4LDB4MDIsMHg2NywweDcyLDB4MDYsMHg2QSwweDdGLDB4RDcsMHgzNywweDIyLAorICAg
IDB4ODgsMHg3QSwweEU1LDB4NjEsMHhGRCwweEZCLDB4QzgsMHg4MCwweDY3LDB4NzIsMHgwNiww
eDZBLDB4N0UsMHhFRiwweEVCLDB4QjAsCisgICAgMHgyNiwweDYyLDB4QzUsMHg1OSwweEZGLDB4
QjgsMHhGRSwweDZFLDB4MDYsMHg2MiwweEE0LDB4NTksMHhFQSwweDYyLDB4QkEsMHhGRiwKKyAg
ICAweDY4LDB4NzIsMHhDNSwweDU5LDB4QUQsMHhBRiwweDJELDB4QTUsMHhDOCwweDdBLDB4Njcs
MHg3MiwweEZELDB4QjUsMHhCRCwweDJELAorICAgIDB4QTgsMHg3QSwweDA2LDB4NkEsMHg3QSww
eEU4LDB4NDAsMHhFMCwweDI2LDB4NkEsMHhDNSwweDU5LDB4MzcsMHhERSwweDVFLDB4NUUsCisg
ICAgMHhFNiwweDYxLDB4QTUsMHg1OSwweDZFLDB4OTQsMHg1RSwweDFCLDB4MDYsMHg2MiwweEM1
LDB4NTksMHhERiwweDNELDB4MjUsMHg4MCwKKyAgICAweDA1LDB4NjIsMHhDNSwweDU5LDB4RkIs
MHhCQSwweEZFLDB4QkMsMHgwNiwweDYyLDB4QzUsMHg1OSwweEU4LDB4QTcsMHg4QiwweEVBLAor
ICAgIDB4MDYsMHg2MiwweEM1LDB4NjEsMHgzQiwweDBCLDB4ODIsMHg1MywweEM0LDB4NTksMHg2
MywweDUxLDB4ODAsMHg2MCwweEUwLDB4RkEsCisgICAgMHhFNSwweDY5LDB4ODMsMHg1MSwweEZG
LDB4REQsMHhGRCwweDNGLDB4QzksMHg4MiwweEE0LDB4NjEsMHhGRCwweEJELDB4MEYsMHgwQiwK
KyAgICAweDRBLDB4OTMsMHg2NywweDdBLDB4NzUsMHhGRiwweEFCLDB4MjIsMHg0QiwweDlCLDB4
QTgsMHg4MiwweEY1LDB4RUIsMHgwQSwweDAwLAorICAgIDB4MkEsMHg5QiwweEE4LDB4ODIsMHhE
NywweEZFLDB4RkEsMHhCQywweEM5LDB4OEEsMHhBNSwweDY5LDB4N0EsMHg3QSwweEUwLDB4ODAs
CisgICAgMHhDOCwweDhBLDB4ODUsMHg2MSwweDU1LDB4RkYsMHhBQiwweDAwLDB4ODgsMHg4Miww
eDY0LDB4NjEsMHhGNSwweEZGLDB4RkEsMHhGOCwKKyAgICAweDY3LDB4N0EsMHhDNSwweDY5LDB4
NTUsMHhENSwweDM3LDB4M0YsMHhFOSwweDkyLDB4NDYsMHg3QSwweEM1LDB4MjksMHgyQiwweDJG
LAorICAgIDB4MDksMHg5MywweDY3LDB4ODIsMHhGQSwweEY4LDB4N0EsMHg1RSwweEE4LDB4OEEs
MHgwNSwweDcyLDB4QTAsMHhFQSwweEU4LDB4N0UsCisgICAgMHg0NiwweDdBLDB4RTUsMHg2OSww
eEEwLDB4QTgsMHgzRSwweEI1LDB4QjQsMHhERCwweDY3LDB4N0EsMHhCNSwweDJELDB4MkQsMHgw
QiwKKyAgICAweEY3LDB4RkUsMHhGNCwweERELDB4MkQsMHgwRiwweDBCLDB4MDIsMHhGNywweEZF
LDB4MTgsMHhGNywweEJFLDB4RkUsMHhCRSwweEY4LAorICAgIDB4MTgsMHhGRiwweEY3LDB4RjYs
MHhBMiwweEUwLDB4RjIsMHhCRiwweDE4LDB4RkYsMHhGNywweEY2LDB4QUEsMHg4QiwweEFBLDB4
RUYsCisgICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweEFBLDB4MkEsMHgyQSwweDhCLDB4MTcsMHhG
RiwweEY3LDB4RjYsMHg3QSwweEZBLDB4RkEsMHhFQSwKKyAgICAweDE3LDB4RkYsMHhGNywweEY2
LDB4RkUsMHhGNSwweDVGLDB4REYsMHgxOCwweEZGLDB4RjcsMHhGNiwweERELDB4NTUsMHg5NSww
eEJCLAorICAgIDB4MTcsMHhGRiwweEQ3LDB4RjYsMHg4QSwweEVBLDB4N0EsMHg3QSwweEY3LDB4
RjYsMHhCNiwweEVFLDB4RjgsMHhGQSwweEJGLDB4QkIsCisgICAgMHhENiwweEY2LDB4QjcsMHhF
RSwweEVCLDB4ODIsMHgwOCwweEFBLDB4RDYsMHhGNiwweDk2LDB4RUUsMHgwOCwweDAwLDB4MjIs
MHhFRiwKKyAgICAweDE4LDB4RkYsMHg5NiwweEVFLDB4MEEsMHgyQSwweDNFLDB4QjUsMHgzOCww
eEZGLDB4MTgsMHhGRiwweDBCLDB4MDksMHgwQiwweDAxLAorICAgIDB4MzgsMHhGRiwweEY3LDB4
RjYsMHhFMCwweDYwLDB4NkEsMHhGOCwweEY4LDB4RjYsMHg1NSwweEU2LDB4NUUsMHhGRSwweEI4
LDB4QTgsCisgICAgMHhGOCwweEZFLDB4OTYsMHhFNiwweDJELDB4QUQsMHgyRiwweDJBLDB4MTgs
MHhGRiwweEY4LDB4RjYsMHhBQiwweEVELDB4QUYsMHhGRCwKKyAgICAweDE4LDB4RkYsMHhGOCww
eEY2LDB4RkYsMHhGOSwweEVGLDB4RUIsMHgxOCwweEZGLDB4OTcsMHhGNiwweDZBLDB4RTgsMHhB
MiwweEEwLAorICAgIDB4RDcsMHhGNiwweDU1LDB4RTYsMHg3NywweERGLDB4NUUsMHg3OCwweDc1
LDB4RUUsMHg1NSwweEU2LDB4QUYsMHhCNywweDdGLDB4NUYsCisgICAgMHg1NSwweEU2LDB4MTQs
MHhFNiwweDcwLDB4NjAsMHgwMCwweDAwLDB4MzUsMHhFNiwweEY0LDB4REQsMHgwQiwweDI5LDB4
MkYsMHgzOCwKKyAgICAweEI2LDB4RjYsMHgzNCwweEU2LDB4MDksMHgyRiwweDg5LDB4QUQsMHhG
NywweEY2LDB4QjcsMHhGNiwweDhBLDB4QTIsMHg4MywweDJELAorICAgIDB4MTcsMHhGNywweEI2
LDB4RUUsMHhBQiwweEE5LDB4QUYsMHhFRSwweEY3LDB4RkUsMHgxOCwweEY3LDB4QUEsMHhBQSww
eEFBLDB4QTAsCisgICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweEZELDB4RkYsMHhGQSwweEVBLDB4
RjcsMHhGNiwweEQ3LDB4RjYsMHg3NSwweDVFLDB4RDgsMHg3RSwKKyAgICAweEY3LDB4RjYsMHhC
NywweEVFLDB4RkIsMHhBMywweEFCLDB4RkYsMHhENywweEY2LDB4RjcsMHhFRSwweDBBLDB4ODAs
MHgwMCwweDAwLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg1RiwweERGLDB4N0QsMHhENSww
eEY3LDB4RjYsMHhENywweEY2LDB4RUEsMHhGQiwweEZCLDB4NTksCisgICAgMHhENywweEY2LDB4
RjcsMHhFRSwweEVBLDB4QTgsMHg4MiwweDAwLDB4RDcsMHhGNiwweEY3LDB4RUUsMHg4QSwweDhF
LDB4QTIsMHhFOCwKKyAgICAweEQ3LDB4RjYsMHhGNywweEVFLDB4QUEsMHgyQSwweDhBLDB4QkEs
MHhENywweEY2LDB4RjgsMHhFRSwweDA4LDB4MDAsMHhGMiwweEVBLAorICAgIDB4MTgsMHhGNyww
eEQ3LDB4RjYsMHg1NSwweDk3LDB4QUEsMHhBRSwweEY4LDB4RkUsMHhENywweEVFLDB4RkYsMHhB
QSwweDgyLDB4QUEsCisgICAgMHgxOCwweEY3LDB4RDcsMHhGNiwweEZGLDB4QUIsMHhBQiwweEVC
LDB4MTgsMHhGNywweEQ3LDB4RjYsMHhBRiwweEJFLDB4RkUsMHhGQSwKKyAgICAweEY3LDB4RjYs
MHhENywweEY2LDB4ODAsMHg0MCwweEYwLDB4REYsMHhGNywweEY2LDB4QjcsMHhFRSwweEVBLDB4
RUUsMHg3RiwweEZFLAorICAgIDB4RDcsMHhGNiwweDc2LDB4RTYsMHhBOCwweEZBLDB4RkEsMHg2
OCwweEI2LDB4RUUsMHg3NiwweEU2LDB4MkEsMHhCRiwweEJGLDB4QUIsCisgICAgMHhENywweEY2
LDB4OTYsMHhFRSwweDU2LDB4OUQsMHgyRCwweDJCLDB4RDcsMHhGNiwweEY3LDB4RUUsMHhBMCww
eDIwLDB4MjAsMHgwOCwKKyAgICAweEQ3LDB4RjYsMHg3NiwweEU2LDB4NUMsMHhGRiwweERFLDB4
NUUsMHg5NiwweEVFLDB4NTUsMHhFNiwweDBBLDB4MjgsMHhGRSwweDdBLAorICAgIDB4OTYsMHhF
RSwweDU1LDB4RTYsMHhBOCwweDJBLDB4QUYsMHg5NSwweDk2LDB4RUUsMHg3NiwweEVFLDB4RkQs
MHhGQiwweDNELDB4MjUsCisgICAgMHg5NiwweEVFLDB4RjQsMHhERCwweDQ4LDB4NjAsMHhFMCww
eDYwLDB4RjQsMHhERCwweDUyLDB4QzUsMHgzRiwweDM3LDB4MzcsMHhCRiwKKyAgICAweDk2LDB4
RUUsMHgxNCwweERFLDB4QUQsMHgyOSwweEFELDB4M0QsMHhCNiwweEY2LDB4NTYsMHhFNiwweDdG
LDB4RkMsMHg3QiwweDdFLAorICAgIDB4MzUsMHhFRSwweDU2LDB4RTYsMHhGQiwweEZCLDB4RkYs
MHhGNywweDM1LDB4RTYsMHgzMSwweENELDB4NjAsMHhFMCwweDQwLDB4NjAsCisgICAgMHgxMCww
eEM1LDB4QUYsMHhCQywweEZDLDB4NzQsMHhEQywweDc2LDB4RDAsMHhCQywweDZELDB4QjQsMHhB
MiwweEVDLDB4N0EsMHhERSwKKyAgICAweEYzLDB4REQsMHhDRiwweEJDLDB4MkQsMHgyRCwweDBE
LDB4MkQsMHg1NCwweEU2LDB4RDIsMHhERCwweDJGLDB4MkYsMHhCOSwweDJCLAorICAgIDB4NTUs
MHhFNiwweEYzLDB4REQsMHg4QSwweDY4LDB4NkEsMHhGRSwweDU1LDB4RTYsMHgxNCwweERFLDB4
QkIsMHhCNSwweDM1LDB4QkQsCisgICAgMHg3NSwweEVFLDB4NTUsMHhFNiwweDJELDB4MzcsMHhB
OSwweEM1LDB4QjYsMHhGNiwweDM1LDB4RTYsMHg4QSwweDJBLDB4QUYsMHhFRCwKKyAgICAweDk2
LDB4RUUsMHgzNSwweEU2LDB4QTgsMHhBRSwweDJFLDB4MjcsMHhENywweEY2LDB4NzUsMHhFNiww
eDJELDB4QUYsMHgyQiwweDJBLAorICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHhBQywweEFDLDB4
MkYsMHgwQSwweEQ3LDB4RjYsMHhGNiwweEVFLDB4MkEsMHgwQSwweDAwLDB4QTIsCisgICAgMHhE
NiwweEY2LDB4QjYsMHhFRSwweEFFLDB4MkEsMHhBMiwweEUwLDB4RDYsMHhGNiwweEI3LDB4RUUs
MHhFMiwweEFFLDB4QUIsMHgyQSwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4QTMsMHhBOCww
eEFBLDB4MjIsMHhENiwweEY2LDB4RDcsMHhFRSwweDJBLDB4QUEsMHg4QSwweEE4LAorICAgIDB4
RDcsMHhGNiwweEI2LDB4RUUsMHgwOCwweDI2LDB4MEYsMHgwMCwweEY3LDB4RjYsMHhCNiwweEVF
LDB4NkEsMHhFRSwweEFBLDB4QkIsCisgICAgMHhENywweEY2LDB4RjYsMHhFRSwweEEwLDB4ODIs
MHg4QSwweDBBLDB4RDcsMHhGNiwweEY4LDB4RUUsMHgwMiwweDBBLDB4QTAsMHg4MCwKKyAgICAw
eEY3LDB4RjYsMHhENywweEY2LDB4N0UsMHg1QiwweDdBLDB4RkUsMHhENywweEY2LDB4RDYsMHhF
RSwweEFBLDB4OEEsMHg4QywweDJBLAorICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHgyOCwweEE4
LDB4QUEsMHhGQSwweEY3LDB4RjYsMHhCNiwweEVFLDB4QUEsMHhFQiwweEZGLDB4RTcsCisgICAg
MHhENiwweEY2LDB4QjcsMHhFRSwweDIwLDB4MDIsMHhBOCwweEUyLDB4RjcsMHhGNiwweEQ3LDB4
RjYsMHhFRCwweEFELDB4RkQsMHg3RCwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4NTYsMHg3
NywweERELDB4N0IsMHhENywweEY2LDB4QjYsMHhFRSwweEFBLDB4QjIsMHgwMiwweDAwLAorICAg
IDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg4MywweEEyLDB4OEIsMHgwMiwweEY3LDB4RjYsMHhENyww
eEY2LDB4REYsMHhGQSwweDJBLDB4ODgsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEZFLDB4
NkEsMHhFMiwweEVFLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg2QiwweEE2LDB4RkEsMHhBRiwKKyAg
ICAweEY3LDB4RjYsMHhENywweEY2LDB4QkYsMHg4RiwweDJCLDB4QjgsMHhGNywweEY2LDB4RDcs
MHhGNiwweEYwLDB4RTIsMHg2QSwweEVBLAorICAgIDB4RjcsMHhGRSwweEQ3LDB4RjYsMHhGQSww
eDVGLDB4NTUsMHhERiwweEY3LDB4RkUsMHg3NiwweEVFLDB4RTIsMHhFOCwweDZBLDB4NkEsCisg
ICAgMHg1NSwweEVFLDB4NkEsMHg5MywweDcwLDB4NzgsMHg1RSwweDVFLDB4RTgsMHg4MiwweDY2
LDB4NzIsMHg1NCwweEZFLDB4RUEsMHhCOCwKKyAgICAweEE3LDB4N0EsMHgwNSwweDYyLDB4REUs
MHhFQSwweEFBLDB4RjgsMHhBOCwweDgyLDB4NDUsMHg2QSwweEY1LDB4MkYsMHgwQiwweDIyLAor
ICAgIDB4RTksMHg4QSwweDQ3LDB4NzIsMHhCRCwweEFBLDB4MkEsMHgwMiwweDA5LDB4OEIsMHg2
NiwweDcyLDB4NUYsMHhGRSwweDIwLDB4MDAsCisgICAgMHgwQSwweDhCLDB4NjcsMHg3MiwweERE
LDB4QkIsMHhCOCwweEU4LDB4RTksMHg4MiwweDQ3LDB4NzIsMHg1RSwweDdFLDB4MjgsMHg4QSwK
KyAgICAweEE4LDB4N0EsMHgwNiwweDYyLDB4NTUsMHg3QSwweDg4LDB4ODAsMHg0NywweDZBLDB4
QTQsMHg1OSwweDU3LDB4REMsMHg1QywweDcwLAorICAgIDB4MDYsMHg2QSwweDg0LDB4NTEsMHgz
OSwweEFCLDB4QTksMHhBOSwweEE4LDB4N0EsMHhFNSwweDYxLDB4MEIsMHgwQiwweDAzLDB4QkQs
CisgICAgMHhBOCwweDdBLDB4RTUsMHg2MSwweEEwLDB4RTgsMHhFQywweDdFLDB4MjYsMHg2QSww
eEE1LDB4NTksMHhGOCwweDlFLDB4QkUsMHhGRSwKKyAgICAweEU1LDB4NjEsMHhBNSwweDU5LDB4
MUUsMHhEOSwweEQ4LDB4RkYsMHgwNiwweDYyLDB4QTQsMHg1OSwweDhBLDB4MEEsMHhGQiwweEZE
LAorICAgIDB4NDcsMHg2QSwweEM1LDB4NTksMHhBMiwweDBBLDB4RkYsMHg3RCwweDA2LDB4NjIs
MHhDNSwweDYxLDB4N0EsMHhDQywweEZFLDB4RkUsCisgICAgMHgyNiwweDZBLDB4QzUsMHg1OSww
eDVGLDB4RkQsMHhGQywweDVCLDB4MDYsMHg2QSwweDg0LDB4NTksMHg5QiwweDJBLDB4MDIsMHgw
MCwKKyAgICAweDg3LDB4N0EsMHhDNCwweDYxLDB4RDcsMHgyRiwweEFBLDB4MEEsMHgwOSwweDkz
LDB4MjYsMHg3MiwweEFELDB4MkIsMHgyQSwweEFBLAorICAgIDB4QUQsMHhBMywweDBBLDB4OTMs
MHhCNywweEJELDB4QUQsMHgwRiwweEVELDB4QUIsMHg0QiwweDlCLDB4N0QsMHhGRiwweEFBLDB4
ODAsCisgICAgMHg2QiwweEEzLDB4QzgsMHg4QSwweDVDLDB4NUMsMHg3OCwweEUwLDB4NEEsMHg5
QiwweEE4LDB4OEEsMHhCOSwweDA5LDB4MEYsMHhBRiwKKyAgICAweDRBLDB4OUIsMHhFOSwweDky
LDB4NkIsMHhDMiwweEEwLDB4RkYsMHg4QywweEEzLDB4MjYsMHg3QSwweDVGLDB4N0EsMHhBQSww
eDBBLAorICAgIDB4Q0MsMHhBQiwweDI2LDB4NzIsMHhENSwweEZGLDB4RUEsMHg4MCwweEM4LDB4
OEEsMHg2NiwweDgyLDB4MEIsMHgwQiwweEZBLDB4RjQsCisgICAgMHhDOSwweDhBLDB4MjYsMHg3
MiwweEY4LDB4RkUsMHhGQiwweDU3LDB4NjcsMHg3QSwweEM0LDB4NjEsMHhFOCwweEU4LDB4N0Us
MHg3NywKKyAgICAweDExLDB4Q0QsMHhFNSwweDY5LDB4RDUsMHhCNSwweEI1LDB4MjUsMHhENyww
eEZFLDB4NkYsMHhCQywweDJELDB4MkIsMHgwQiwweDAyLAorICAgIDB4MTgsMHhGRiwweEQ3LDB4
RkUsMHhBRCwweEFCLDB4QUEsMHgyQSwweDE3LDB4RkYsMHhGOCwweEY2LDB4QUYsMHhFQSwweEUz
LDB4RUEsCisgICAgMHhGOCwweEZFLDB4MTcsMHhGNywweEVBLDB4QkEsMHhCQSwweEJBLDB4MTcs
MHhGRiwweEY3LDB4RjYsMHhCRCwweEVGLDB4QUYsMHhBQiwKKyAgICAweDE3LDB4RkYsMHhGNyww
eEY2LDB4OEIsMHhBNiwweEFBLDB4N0UsMHgxNywweEZGLDB4RjcsMHhGNiwweEZBLDB4RDYsMHg3
NywweEQ1LAorICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHhGNywweEY3LDB4QUQsMHhBQiwweDE4
LDB4RkYsMHhCNiwweEVFLDB4MDgsMHg4MCwweEU4LDB4N0EsCisgICAgMHhGNywweEY2LDB4OTYs
MHhFRSwweDgwLDB4RTgsMHhGRSwweERGLDB4RDcsMHhGNiwweDk2LDB4RUUsMHhBMCwweEJFLDB4
NUYsMHg1NywKKyAgICAweEI2LDB4RUUsMHg1NSwweEVFLDB4MDAsMHhFOCwweDdBLDB4NUYsMHg5
NiwweEVFLDB4QjIsMHhENSwweDIwLDB4QTIsMHhGQSwweDdBLAorICAgIDB4MTgsMHhGRiwweEYz
LDB4RDUsMHhBRiwweDJELDB4MkQsMHgyOSwweDM4LDB4RkYsMHgxOCwweEZGLDB4MkIsMHg4Qiww
eDJGLDB4QUYsCisgICAgMHgzOCwweEZGLDB4RjgsMHhGNiwweDZBLDB4RUEsMHhDMCwweDgwLDB4
MTgsMHhGRiwweEI3LDB4RUUsMHg3RSwweERBLDB4RkEsMHhGQywKKyAgICAweEY4LDB4RkUsMHhE
NywweEY2LDB4OUQsMHhCRiwweEE1LDB4QjUsMHgxOCwweEZGLDB4RjgsMHhGNiwweEZGLDB4QkUs
MHhBQiwweEFCLAorICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhFQSwweEFFLDB4QjIsMHhBQSww
eDE4LDB4RkYsMHhGOCwweEY2LDB4RkYsMHhBRiwweEZFLDB4RjIsCisgICAgMHhGOCwweEZFLDB4
NzUsMHhFRSwweDU4LDB4NTgsMHg2OCwweEUwLDB4OTYsMHhFRSwweDM1LDB4RTYsMHg3RSwweEZF
LDB4QkUsMHhGOCwKKyAgICAweDc2LDB4RUUsMHg1NSwweEU2LDB4NTcsMHhGNywweEVDLDB4RkYs
MHg1NSwweEVFLDB4MzUsMHhFNiwweDVFLDB4RjgsMHhEQywweEY4LAorICAgIDB4OTYsMHhFRSww
eDM1LDB4RTYsMHgyRiwweDNGLDB4QUQsMHhFRiwweEY3LDB4RkUsMHg5NiwweEVFLDB4QTksMHgy
RiwweEFELDB4QUQsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDk0LDB4QkEsMHhBQSwweDgy
LDB4RDcsMHhGRSwweEY3LDB4RjYsMHg3NywweDVGLDB4RkQsMHhGNywKKyAgICAweDE4LDB4RkYs
MHhENywweEY2LDB4RUEsMHhBQSwweEFCLDB4QUYsMHgxOCwweEY3LDB4RDcsMHhGNiwweDdGLDB4
REUsMHhGRSwweEEyLAorICAgIDB4RjcsMHhGNiwweEI3LDB4RUUsMHhGQSwweEFBLDB4ODAsMHgw
MCwweEQ3LDB4RjYsMHhGNywweEVFLDB4MDAsMHgwMCwweDhBLDB4RkEsCisgICAgMHhGNywweEY2
LDB4RDcsMHhFRSwweEI3LDB4RUYsMHhGNywweDI4LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg1Riww
eDdBLDB4RTIsMHhCMiwKKyAgICAweDM4LDB4RjcsMHhENywweEY2LDB4NTUsMHg3RCwweEZGLDB4
QkYsMHgxOCwweEZGLDB4RDcsMHhGNiwweEZELDB4QkIsMHhCMiwweEYyLAorICAgIDB4RDksMHhG
RSwweEY3LDB4RjYsMHhGNSwweDU1LDB4RjUsMHhENSwweEQ4LDB4RkUsMHhGOCwweEY2LDB4REQs
MHg3NywweDc1LDB4NTcsCisgICAgMHgxNywweEZGLDB4RjgsMHhGNiwweDdELDB4RkQsMHhGRCww
eDc3LDB4RjgsMHhGRSwweEY3LDB4RjYsMHg3NywweERELDB4RDcsMHg1RCwKKyAgICAweEY3LDB4
RjYsMHhENywweEY2LDB4MDAsMHgyMCwweDA4LDB4MjIsMHhGNywweEY2LDB4RDcsMHhGNiwweDg4
LDB4QzIsMHhFOCwweEVDLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhERiwweEY3LDB4REQs
MHhENSwweEQ3LDB4RjYsMHhCNiwweEVFLDB4RjgsMHhFOCwweEY4LDB4RkYsCisgICAgMHhCNyww
eEVFLDB4NzYsMHhFNiwweEUwLDB4RkEsMHg3OCwweEUwLDB4RDcsMHhGNiwweDc1LDB4RTYsMHhC
RiwweEFELDB4M0QsMHhBOSwKKyAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4RjcsMHhCRiwweEJC
LDB4QUEsMHhGNywweEY2LDB4QjYsMHhFRSwweEZBLDB4RkEsMHhGQSwweEVBLAorICAgIDB4Qjcs
MHhGNiwweDc1LDB4RUUsMHg3RSwweEY4LDB4RkMsMHg1RiwweDk2LDB4RUUsMHgzNSwweEU2LDB4
RTgsMHhBOCwweDg4LDB4MjIsCisgICAgMHg3NiwweEVFLDB4NTUsMHhFNiwweDJCLDB4MDIsMHgw
MCwweDAwLDB4OTYsMHhFRSwweDc2LDB4RUUsMHg4NSwweEI0LDB4OUYsMHhGNSwKKyAgICAweDc2
LDB4RUUsMHhGMywweERELDB4NjAsMHg2MCwweDQwLDB4RTAsMHhGNCwweERELDB4NTIsMHhDRCww
eDM3LDB4M0UsMHgzRiwweDJGLAorICAgIDB4NzYsMHhFRSwweDE0LDB4REUsMHgyRCwweEFELDB4
QUQsMHgyRCwweDk2LDB4RUUsMHgxNCwweEU2LDB4QUEsMHhFQSwweEUwLDB4RkEsCisgICAgMHg1
NSwweEU2LDB4RjQsMHhERCwweEEyLDB4RUEsMHhGRSwweEZFLDB4MTQsMHhFNiwweDUyLDB4Q0Qs
MHg2MCwweEMwLDB4RTAsMHhDMCwKKyAgICAweDExLDB4QzUsMHg2RSwweEI0LDB4RkUsMHhGOCww
eDc4LDB4NUMsMHhDRiwweEJDLDB4NEQsMHhBQywweEZFLDB4QkYsMHgzRiwweEI3LAorICAgIDB4
MTMsMHhERSwweDBGLDB4QzUsMHhBRCwweDJELDB4MkQsMHgyOSwweDU0LDB4RTYsMHgxNCwweERF
LDB4QjUsMHhCRCwweEFGLDB4QUEsCisgICAgMHg1NSwweEU2LDB4MTQsMHhFNiwweEZGLDB4REEs
MHg3QSwweEZBLDB4NTUsMHhFNiwweDE0LDB4REUsMHhCOSwweEVGLDB4MkIsMHgwRiwKKyAgICAw
eDU1LDB4RUUsMHgzNSwweEU2LDB4M0EsMHhGRiwweEZBLDB4MjgsMHg1NSwweEU2LDB4MTQsMHhE
RSwweDA4LDB4QkYsMHhGRiwweEE4LAorICAgIDB4QjYsMHhFRSwweDM1LDB4RTYsMHhCNSwweEE1
LDB4MkYsMHgyQiwweEQ2LDB4RjYsMHg5NiwweEVFLDB4QTksMHhBQiwweDhBLDB4QkUsCisgICAg
MHhCNiwweEY2LDB4RjcsMHhFRSwweEZBLDB4RkUsMHhBQSwweEFFLDB4RDcsMHhGNiwweEY2LDB4
RUUsMHgyMiwweDBBLDB4MDAsMHgwOCwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4MjgsMHhB
QSwweDhFLDB4QUIsMHhENiwweEY2LDB4QjYsMHhFRSwweEEyLDB4ODIsMHhBMiwweEVBLAorICAg
IDB4RDYsMHhGNiwweEI1LDB4RUUsMHgwMiwweEFBLDB4QUUsMHhBNSwweEQ2LDB4RjYsMHhCNiww
eEVFLDB4MDAsMHg4MiwweDJDLDB4QUEsCisgICAgMHhENywweEY2LDB4RjcsMHhFRSwweDI4LDB4
MjAsMHgyMCwweDAwLDB4RDYsMHhGNiwweEI3LDB4RUUsMHg4MiwweDJBLDB4QUEsMHgyMCwKKyAg
ICAweEY2LDB4RjYsMHhENywweEY2LDB4N0QsMHg3RiwweDVBLDB4NUYsMHhENiwweEY2LDB4RDcs
MHhFRSwweDJBLDB4QUEsMHhBQSwweEFBLAorICAgIDB4RDcsMHhGNiwweEY2LDB4RUUsMHgyMiww
eDAwLDB4MDIsMHgwOCwweEY3LDB4RjYsMHhCNiwweEVFLDB4QkUsMHhCRiwweEFGLDB4QUUsCisg
ICAgMHhENywweEY2LDB4QjYsMHhFRSwweEJFLDB4QUEsMHhGOCwweEUyLDB4RDYsMHhGNiwweEI2
LDB4RUUsMHg4RiwweEZGLDB4QUYsMHhBRiwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4ODgs
MHgyOCwweDhCLDB4MkQsMHhGNywweEY2LDB4QjYsMHhFRSwweEFBLDB4QkEsMHhFRiwweEJGLAor
ICAgIDB4RDcsMHhGNiwweEY3LDB4RUUsMHg4OCwweDA4LDB4QzAsMHgwMiwweEY3LDB4RjYsMHhE
NywweEY2LDB4OEYsMHhCRSwweERFLDB4QTksCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDA4
LDB4MkEsMHgwQSwweDBBLDB4MTcsMHhGRiwweEQ3LDB4RjYsMHhGRSwweEFBLDB4RkEsMHhGRiwK
KyAgICAweEQ3LDB4RkUsMHhGNywweEY2LDB4REQsMHhERCwweDU1LDB4NTcsMHhGNywweEY2LDB4
RDYsMHhGNiwweEI3LDB4M0EsMHgyMSwweDAwLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhB
OCwweEE4LDB4MjIsMHgyOCwweEY3LDB4RjYsMHhENywweEY2LDB4RUEsMHhGRSwweDYwLDB4Nzgs
CisgICAgMHhGNywweEZFLDB4RDcsMHhGNiwweEZGLDB4QkQsMHhERiwweERGLDB4RjcsMHhGNiww
eDEzLDB4RTYsMHg2MCwweDY4LDB4NjgsMHg2MiwKKyAgICAweEVGLDB4QzQsMHhBNiwweDdBLDB4
RjgsMHg3OCwweDc4LDB4NzgsMHhDNywweDgyLDB4NDYsMHg3MiwweEI4LDB4RjgsMHg1NiwweDVG
LAorICAgIDB4ODcsMHg3QSwweDI2LDB4NzIsMHgyQSwweEFCLDB4RkEsMHg3RCwweEE4LDB4N0Es
MHg0NywweDcyLDB4MDAsMHhBQiwweDlELDB4NUQsCisgICAgMHhFOSwweDgyLDB4NDYsMHg3Miww
eDBBLDB4MkEsMHhCRiwweEY1LDB4NEEsMHg4QiwweDY3LDB4NzIsMHhBMiwweEFCLDB4N0QsMHg1
NSwKKyAgICAweEU5LDB4OEEsMHgwNiwweDZBLDB4QTgsMHhFOCwweEZCLDB4NUYsMHhBOCwweDdB
LDB4MDUsMHg2MiwweDg4LDB4QUEsMHhCQSwweDdGLAorICAgIDB4QTgsMHg3QSwweDA2LDB4NjIs
MHhBOCwweEZFLDB4NUUsMHg1RiwweDI3LDB4NkEsMHg4NCwweDUxLDB4RTAsMHhCQSwweEJGLDB4
REUsCisgICAgMHhFNSwweDYxLDB4NjQsMHg1MSwweDBBLDB4QUEsMHhBQywweEE1LDB4MDUsMHg2
MiwweDg0LDB4NTksMHgwMiwweDdCLDB4RkYsMHhENywKKyAgICAweEU1LDB4NjEsMHhBNCwweDU5
LDB4OEEsMHhERiwweEI5LDB4RjUsMHhFNSwweDYxLDB4ODQsMHg1OSwweEEyLDB4QUEsMHhCOCww
eEJCLAorICAgIDB4RTUsMHg2MSwweEE0LDB4NTksMHhFNSwweEFBLDB4ODIsMHhBQSwweDA2LDB4
NjIsMHhBNSwweDU5LDB4NUYsMHhENSwweEJFLDB4OEUsCisgICAgMHhFNSwweDYxLDB4QTUsMHg1
OSwweDUzLDB4MkIsMHgwOSwweDAyLDB4MjYsMHg2QSwweEM1LDB4NTksMHhFRiwweEI5LDB4Q0Is
MHgwQSwKKyAgICAweDY3LDB4NzIsMHhDNSwweDU5LDB4NUYsMHhFRCwweEFBLDB4QTIsMHhBOCww
eDgyLDB4RTUsMHg2MSwweERELDB4RjcsMHhCQiwweDAyLAorICAgIDB4MDksMHg5MywweDY2LDB4
NzIsMHhENSwweEJELDB4MkEsMHgwRSwweDJBLDB4OTMsMHhDOCwweDhBLDB4OUYsMHg4MywweDA4
LDB4MjgsCisgICAgMHhBQywweEEzLDB4MEEsMHg5MywweDBELDB4MkIsMHgwRCwweDJCLDB4NEUs
MHhCQywweENDLDB4QUIsMHg3RCwweDBGLDB4QUYsMHgyOSwKKyAgICAweDZFLDB4QkMsMHg2Qiww
eEEzLDB4NUYsMHhGRSwweEE4LDB4MDAsMHgyRCwweEI0LDB4MEEsMHg5MywweDU1LDB4NUYsMHg3
QSwweEIwLAorICAgIDB4MkEsMHg5QiwweEM4LDB4OEEsMHhCRiwweEZFLDB4NTcsMHhGOCwweDZC
LDB4QTMsMHhDOSwweDhBLDB4MEIsMHgyRCwweDNGLDB4QTUsCisgICAgMHhFRCwweEIzLDB4NEEs
MHg5QiwweDgzLDB4QUEsMHhGRiwweEQ1LDB4MkEsMHg5QiwweDY3LDB4ODIsMHhENCwweDU4LDB4
NzgsMHhGMCwKKyAgICAweDg3LDB4ODIsMHgyNiwweDcyLDB4N0EsMHhFQSwweDdFLDB4MkEsMHg0
QSwweDkzLDB4QzUsMHg2OSwweDU3LDB4REYsMHhCNSwweDJGLAorICAgIDB4NTYsMHhFRSwweEM5
LDB4ODIsMHgzNSwweDJELDB4MEIsMHgwQiwweEQ3LDB4RkUsMHgzNSwweEVFLDB4MDksMHgwMyww
eDAyLDB4MDAsCisgICAgMHgxOCwweEZGLDB4RjcsMHhGRSwweEZELDB4QkQsMHhCRCwweEE1LDB4
MTgsMHhGRiwweEY4LDB4RjYsMHhFRSwweDdFLDB4RDgsMHhCQSwKKyAgICAweDE3LDB4RkYsMHhG
NywweEY2LDB4RUYsMHhFQiwweEY3LDB4RkEsMHgxOCwweEZGLDB4RjcsMHhGNiwweEJBLDB4OEUs
MHhFQiwweDhFLAorICAgIDB4MTcsMHhGRiwweEQ3LDB4RjYsMHhBQSwweEJBLDB4RkEsMHhGRSww
eDE3LDB4RkYsMHhENywweEY2LDB4QkYsMHhCNiwweDNBLDB4QUIsCisgICAgMHgxOCwweEZGLDB4
QjYsMHhFRSwweDgyLDB4QTAsMHhBOCwweDcyLDB4RjcsMHhGNiwweDk2LDB4RUUsMHhGOCwweEZB
LDB4NUUsMHg1NywKKyAgICAweDc1LDB4RUUsMHhCNiwweEU2LDB4QUQsMHhBQSwweEFFLDB4RUIs
MHhCNiwweEVFLDB4NzUsMHhFRSwweEZGLDB4N0YsMHg3RiwweDAwLAorICAgIDB4QjYsMHhGNiww
eDU0LDB4RTYsMHg3RiwweEZGLDB4RUIsMHg4MCwweDc1LDB4RUUsMHhEMywweEQ1LDB4NUEsMHg1
RSwweDlFLDB4MjgsCisgICAgMHgxOCwweEZGLDB4MzQsMHhERSwweDBELDB4MEYsMHgwMywweDAy
LDB4MzksMHhGRiwweDE4LDB4RkYsMHhCRiwweEJGLDB4QkIsMHhBRiwKKyAgICAweDM5LDB4RkYs
MHgxOCwweEZGLDB4QzIsMHgwMCwweDAyLDB4QzIsMHgxOCwweEY3LDB4RDcsMHhGNiwweDU2LDB4
NUUsMHg3OCwweEY4LAorICAgIDB4RjgsMHhGNiwweEQ3LDB4RjYsMHhBNSwweDI5LDB4QTMsMHgw
QSwweDE4LDB4RkYsMHhGOCwweEY2LDB4QUYsMHhFRCwweEFGLDB4QTksCisgICAgMHgxOCwweEZG
LDB4RjgsMHhGNiwweEJBLDB4N0YsMHhERCwweEVGLDB4MTgsMHhGRiwweEY4LDB4RjYsMHg2QSww
eEZGLDB4N0QsMHg3RCwKKyAgICAweEY4LDB4RjYsMHhCNywweEY2LDB4NjAsMHg4MCwweDIwLDB4
MDAsMHhENywweEY2LDB4NTUsMHhFNiwweDU3LDB4NUUsMHg3QywweDc4LAorICAgIDB4NzYsMHhF
RSwweDU1LDB4RTYsMHhFQiwweDhGLDB4MUYsMHhFQiwweDU1LDB4RUUsMHgzNSwweEU2LDB4Nzgs
MHg3MCwweEYwLDB4RTgsCisgICAgMHg3NiwweEVFLDB4MTQsMHhERSwweDJBLDB4MkEsMHhBRiww
eEE5LDB4RDcsMHhGNiwweDU1LDB4RUUsMHgwQiwweDBCLDB4MkQsMHhBRiwKKyAgICAweDE4LDB4
RjcsMHhCNiwweEVFLDB4Q0EsMHhBMiwweEZCLDB4QUQsMHhGNywweEY2LDB4RDcsMHhGNiwweDJC
LDB4OEQsMHhBNSwweEJFLAorICAgIDB4RDcsMHhGRSwweEY4LDB4RjYsMHg1NywweDVELDB4OTcs
MHg1NSwweDE4LDB4RkYsMHhGOCwweEY2LDB4RUQsMHhBRCwweEZELDB4RUQsCisgICAgMHhGNyww
eEY2LDB4RDgsMHhGNiwweDJBLDB4QjgsMHg3MCwweEIwLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHgz
RCwweEE3LDB4QjcsMHg1NywKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4NUYsMHg3RiwweEZG
LDB4QkQsMHgxOCwweEZGLDB4RDcsMHhGNiwweEZFLDB4RkYsMHhFQSwweEE4LAorICAgIDB4Rjcs
MHhGNiwweEQ3LDB4RjYsMHgwOCwweDJFLDB4QUEsMHgyMiwweDE4LDB4RkYsMHhGNywweEY2LDB4
NzUsMHg1NSwweDc1LDB4RDcsCisgICAgMHhGNywweEZFLDB4RjgsMHhGNiwweDc1LDB4REQsMHg3
RiwweEY3LDB4MTgsMHhGRiwweEY4LDB4RjYsMHg3NSwweDU1LDB4N0YsMHg3RiwKKyAgICAweDE4
LDB4RkYsMHhENywweEY2LDB4QUIsMHhFQSwweEZCLDB4REYsMHhGNywweEY2LDB4RDcsMHhGNiww
eDAwLDB4MDAsMHgwMCwweEFDLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHgyOCwweDIyLDB4
QUMsMHhFRSwweEY3LDB4RjYsMHhENywweEY2LDB4NkMsMHg3RSwweEQ3LDB4NTksCisgICAgMHhE
NywweEY2LDB4QjYsMHhFRSwweDAwLDB4QzgsMHhFMCwweEMwLDB4RDcsMHhGNiwweDk2LDB4RUUs
MHhBQiwweDhCLDB4RUUsMHg3RiwKKyAgICAweEI2LDB4RUUsMHg3NSwweEU2LDB4RTgsMHhBRSww
eEVDLDB4REYsMHhENywweEY2LDB4OTYsMHhFRSwweDBELDB4MkQsMHgyNSwweEFELAorICAgIDB4
RjcsMHhGNiwweEI3LDB4RUUsMHhBQSwweEU4LDB4RkEsMHhFRiwweEY3LDB4RjYsMHhCNiwweEVF
LDB4QUEsMHhFQiwweEZBLDB4RkIsCisgICAgMHhCNywweEY2LDB4NTUsMHhFNiwweDdFLDB4RDYs
MHg3NiwweDVDLDB4OTYsMHhFRSwweDc2LDB4RUUsMHg4OSwweEZGLDB4N0QsMHhENSwKKyAgICAw
eDc2LDB4RUUsMHg1NSwweEU2LDB4ODgsMHhFMCwweEYwLDB4RkUsMHg5NiwweEVFLDB4NTUsMHhF
NiwweEFCLDB4QkIsMHhFRiwweEZGLAorICAgIDB4NzYsMHhFRSwweEQzLDB4REQsMHhFMCwweEUw
LDB4RTAsMHg2MCwweEYzLDB4REQsMHg3MiwweENELDB4QkYsMHhBRiwweDJGLDB4M0YsCisgICAg
MHg3NiwweEVFLDB4RjQsMHhERCwweDJELDB4MkQsMHgwQiwweDJELDB4NzYsMHhFRSwweDE0LDB4
RTYsMHhGOCwweEI4LDB4NjgsMHg3MCwKKyAgICAweDM0LDB4RTYsMHhGNCwweERELDB4RUMsMHg2
OCwweEZBLDB4QjcsMHgxNSwweEU2LDB4OTIsMHhENSwweDYwLDB4NDgsMHg2QSwweDYyLAorICAg
IDB4MTAsMHhDNSwweEVDLDB4QTMsMHhFOCwweEY4LDB4RkMsMHg3QywweEYwLDB4QzQsMHhFQyww
eDlCLDB4QUYsMHgyRiwweDNELDB4MjUsCisgICAgMHgzNCwweEU2LDB4NTEsMHhDRCwweEFELDB4
MkQsMHgzRCwweDJGLDB4NTUsMHhFNiwweDE0LDB4RTYsMHhBRiwweDg5LDB4MjMsMHgyMywKKyAg
ICAweDU0LDB4RTYsMHgxNCwweERFLDB4RkEsMHg1RSwweERBLDB4RkMsMHhCNywweEY2LDB4MzQs
MHhFNiwweEY1LDB4QUQsMHhBOSwweDA5LAorICAgIDB4QjYsMHhGNiwweDU1LDB4RTYsMHhENSww
eEZGLDB4RUEsMHg3MCwweDc2LDB4RUUsMHg1NSwweEU2LDB4RDcsMHgxRiwweDJGLDB4MkIsCisg
ICAgMHhCNiwweEVFLDB4NzYsMHhFRSwweEFELDB4MkYsMHhBQSwweEFBLDB4QjYsMHhGNiwweDk2
LDB4RUUsMHhDQSwweENCLDB4N0UsMHhERSwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4MEEs
MHgzMSwweDIyLDB4QkEsMHhENiwweEY2LDB4QjYsMHhFRSwweEI4LDB4RkUsMHhBMiwweDgwLAor
ICAgIDB4RDYsMHhGNiwweEQ3LDB4RUUsMHhBQSwweEEyLDB4QUEsMHhBQSwweEQ2LDB4RjYsMHhC
NywweEVFLDB4RUEsMHhBOCwweDJDLDB4MjgsCisgICAgMHhGNiwweEY2LDB4QjcsMHhFRSwweEJE
LDB4RkUsMHhGQSwweEVBLDB4RDcsMHhGNiwweEI2LDB4RUUsMHhBMiwweEUyLDB4ODIsMHhBOCwK
KyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4MjIsMHgwQSwweDhCLDB4QTgsMHhGNywweEY2LDB4
QjYsMHhFRSwweEJBLDB4RkUsMHhBQiwweEFGLAorICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHhC
QSwweEVGLDB4QUEsMHhBQSwweEQ2LDB4RjYsMHhGOCwweEVFLDB4ODgsMHgyOCwweDAwLDB4MjIs
CisgICAgMHhGNSwweEY2LDB4RDcsMHhGNiwweDU3LDB4REYsMHhGNSwweEZELDB4RDYsMHhGNiww
eEQ3LDB4RUUsMHhBQSwweEEyLDB4QUEsMHgyOCwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4
RkUsMHg2RSwweDYwLDB4RjAsMHhENiwweEY2LDB4QjYsMHhFRSwweDZGLDB4N0YsMHhGOSwweDlC
LAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHg4RiwweEVGLDB4QkUsMHhBRSwweEQ3LDB4RjYs
MHhCNiwweEVFLDB4QUEsMHhBOCwweEJBLDB4RkYsCisgICAgMHhGNiwweEY2LDB4QjYsMHhFRSww
eEVCLDB4RUIsMHhBRiwweEFGLDB4RjcsMHhGNiwweEI2LDB4RUUsMHhBQSwweEJBLDB4QUQsMHhC
QiwKKyAgICAweEY2LDB4RjYsMHhENiwweEY2LDB4RjYsMHhGRiwweERELDB4RjUsMHhGNiwweEY2
LDB4RDYsMHhGNiwweEFBLDB4QTIsMHhCQiwweDc5LAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYs
MHgyMCwweEFBLDB4QUUsMHhGNSwweEY3LDB4RjYsMHhENywweEY2LDB4ODAsMHgyOCwweEEwLDB4
QUEsCisgICAgMHhGNywweEZFLDB4RjcsMHhGNiwweEZELDB4REYsMHg3RiwweDdELDB4RDcsMHhG
RSwweEY3LDB4RjYsMHhGNSwweEZELDB4RkQsMHhCRCwKKyAgICAweEY3LDB4RkUsMHhENiwweEY2
LDB4RDgsMHhFQSwweEZGLDB4NUUsMHhCNiwweEY2LDB4NTEsMHhDRCwweEMwLDB4NjAsMHg0MCww
eDYwLAorICAgIDB4NEQsMHhBQywweEE2LDB4N0EsMHg1OCwweDVDLDB4NUMsMHg1QywweEU3LDB4
ODIsMHg0NSwweDZBLDB4NTUsMHg1NywweEZELDB4OEEsCisgICAgMHhBNywweDdBLDB4MjYsMHg2
QSwweDdELDB4NzcsMHg3QSwweDc4LDB4NjcsMHg3MiwweEM1LDB4NjEsMHgwQSwweEJBLDB4NkUs
MHhFRiwKKyAgICAweDQ3LDB4NzIsMHhFNiwweDYxLDB4MDIsMHhFQSwweEY1LDB4ODUsMHg0Niww
eDZBLDB4RTUsMHg2MSwweEJDLDB4REYsMHg3QiwweEQ3LAorICAgIDB4NDYsMHg2QSwweEU1LDB4
NjEsMHg5RiwweDNGLDB4QUYsMHhBQSwweDQ2LDB4NkEsMHgyNiwweDZBLDB4MDYsMHg2OCwweDlF
LDB4NzYsCisgICAgMHg0NiwweDZBLDB4QzQsMHg1OSwweEU4LDB4RjgsMHhGQSwweDVFLDB4RTUs
MHg1OSwweDQzLDB4NTEsMHg2RSwweEUwLDB4RTgsMHhFQSwKKyAgICAweDg0LDB4NTksMHgwMyww
eDQ5LDB4ODIsMHg2QSwweEFBLDB4QTAsMHg4NCwweDU5LDB4MjMsMHg0OSwweDJFLDB4M0QsMHgy
NSwweDhBLAorICAgIDB4QzYsMHg2MSwweDY0LDB4NTEsMHhENSwweEJELDB4OEIsMHgwQiwweDA2
LDB4NjIsMHg4NSwweDU5LDB4RkYsMHhGRiwweEJBLDB4MkUsCisgICAgMHgwNiwweDYyLDB4QTUs
MHg1OSwweEZCLDB4QjUsMHhGRSwweEU4LDB4MjYsMHg2QSwweEM1LDB4NjEsMHhFQiwweEZGLDB4
MEYsMHgyOSwKKyAgICAweDQ3LDB4NzIsMHhDNSwweDU5LDB4N0QsMHhENywweEFCLDB4MkEsMHhD
OCwweDdBLDB4MDYsMHg2MiwweEY1LDB4RkYsMHhGRCwweDhGLAorICAgIDB4RTksMHg4QSwweDQ2
LDB4NzIsMHhGNSwweEJELDB4MkQsMHgyQSwweDJBLDB4OTMsMHhDOCwweDgyLDB4RjUsMHhGRiww
eDJFLDB4MEIsCisgICAgMHgyQSwweDkzLDB4RTgsMHg4QSwweDM2LDB4MkIsMHhBQywweEFBLDB4
NkIsMHg5QiwweDA5LDB4OTMsMHhGRiwweEZGLDB4RUIsMHgyQiwKKyAgICAweDhCLDB4QTMsMHgy
QSwweDlCLDB4MjksMHgyQiwweDBCLDB4MDIsMHg2RSwweEJDLDB4QUMsMHhBQiwweDJELDB4QTUs
MHhBRCwweEFELAorICAgIDB4Q0YsMHhDQywweDRFLDB4QkMsMHhGNywweEFELDB4QUYsMHgwRiww
eENGLDB4Q0MsMHhDQywweEFCLDB4N0UsMHhFQSwweEE4LDB4QTAsCisgICAgMHgwRCwweEI0LDB4
MkEsMHg5MywweDVGLDB4N0EsMHhGOCwweEU4LDB4NEEsMHg5MywweEU5LDB4OEEsMHhBRiwweEVG
LDB4RkEsMHhGOCwKKyAgICAweDJBLDB4OTMsMHg4NywweDgyLDB4MDAsMHhFQSwweDZFLDB4N0Us
MHhFOSwweDhBLDB4QzUsMHg2OSwweEEwLDB4RUEsMHg3RSwweDU3LAorICAgIDB4MDksMHg4Qiww
eEU1LDB4NjksMHhGRiwweERELDB4QjUsMHgzRCwweDEyLDB4RTYsMHhFOCwweDgyLDB4RjUsMHhC
NSwweDJELDB4MEIsCisgICAgMHhENywweEZFLDB4NzIsMHhENSwweDJELDB4MEIsMHgwMiwweDAw
LDB4MTgsMHhGRiwweEQ3LDB4RkUsMHhCRiwweEVCLDB4QUEsMHhBQSwKKyAgICAweDE4LDB4RkYs
MHhGNywweEZFLDB4OEQsMHhBQiwweEE1LDB4MkQsMHgxOCwweEZGLDB4RjcsMHhGNiwweEEyLDB4
ODAsMHhBOCwweEZBLAorICAgIDB4MTcsMHhGRiwweEY4LDB4RjYsMHhBQSwweDdBLDB4QUUsMHhB
QSwweEY3LDB4RkUsMHgxOCwweEY3LDB4RUYsMHhGRSwweEZGLDB4QUYsCisgICAgMHgxNywweEZG
LDB4RDcsMHhGNiwweDdBLDB4RkEsMHhFQSwweEVBLDB4MTcsMHhGRiwweEI2LDB4RUUsMHgyMiww
eDBBLDB4RTIsMHg2QSwKKyAgICAweEY3LDB4RjYsMHg5NiwweEVFLDB4NjAsMHg1QywweERGLDB4
RjcsMHhGNywweEY2LDB4OTYsMHhFRSwweDU1LDB4RjUsMHhGRCwweDBCLAorICAgIDB4MTcsMHhG
RiwweDk2LDB4RUUsMHhGRCwweEFGLDB4OEEsMHgwMCwweDM4LDB4RkYsMHhENywweEY2LDB4RDUs
MHhGQiwweEFBLDB4OEEsCisgICAgMHgxOCwweEZGLDB4QjYsMHhGNiwweDdFLDB4RkUsMHhFMiww
eEYwLDB4RjcsMHhGNiwweDc1LDB4RUUsMHg5RCwweEI3LDB4MzcsMHgzNywKKyAgICAweDM4LDB4
RkYsMHhGOCwweEZFLDB4QUYsMHhBQiwweEFBLDB4OEEsMHgzOSwweEZGLDB4MTgsMHhGRiwweEJG
LDB4RjUsMHgyRCwweDI5LAorICAgIDB4MzksMHhGRiwweDE4LDB4RkYsMHhDMiwweEU4LDB4RTAs
MHhCMCwweDE4LDB4RkYsMHhGOCwweEY2LDB4NTYsMHg3OCwweDUwLDB4RDAsCisgICAgMHhGOCww
eEY2LDB4RDcsMHhGNiwweDg4LDB4QUEsMHhCOCwweEEyLDB4MTgsMHhGRiwweEY4LDB4RjYsMHhG
RCwweEY1LDB4RDUsMHhERCwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4RUQsMHhBNSwweEFC
LDB4QUYsMHgxOCwweEZGLDB4RjgsMHhGNiwweEVCLDB4QUUsMHgyQSwweEJBLAorICAgIDB4MTgs
MHhGRiwweEY4LDB4RjYsMHhGQSwweERBLDB4QjIsMHhBQSwweDE4LDB4RkYsMHg1NSwweEU2LDB4
N0EsMHhGQSwweEUwLDB4QTgsCisgICAgMHg3NSwweEVFLDB4NTUsMHhFNiwweEJGLDB4RkQsMHhE
RiwweDcwLDB4NzUsMHhFRSwweDM1LDB4RTYsMHhFQSwweEZGLDB4QUYsMHg5QSwKKyAgICAweDc2
LDB4RUUsMHgzNSwweEU2LDB4QUQsMHhFRiwweDJGLDB4QUIsMHhCNiwweEY2LDB4NTUsMHhFNiww
eEFELDB4QUQsMHhCRiwweDBGLAorICAgIDB4RjcsMHhGNiwweEI2LDB4RjYsMHg4RiwweEE5LDB4
RUQsMHhBRCwweEY3LDB4RjYsMHhENywweEY2LDB4RkEsMHg3QiwweEZGLDB4QkYsCisgICAgMHgx
OCwweEZGLDB4RDcsMHhGNiwweEFBLDB4QUIsMHhFQiwweEFGLDB4MTgsMHhGRiwweEY4LDB4RjYs
MHhFQiwweEVELDB4RjUsMHg1NSwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4NTcsMHg1Niww
eDVGLDB4NUYsMHhGOCwweEY2LDB4RDcsMHhGNiwweERFLDB4RkEsMHhBMiwweDIwLAorICAgIDB4
RjgsMHhGNiwweEQ3LDB4RjYsMHgwMCwweEEyLDB4QUEsMHgyQiwweDE4LDB4RkYsMHhENywweEY2
LDB4QUEsMHhCRiwweEJGLDB4QkYsCisgICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweDVELDB4Nzcs
MHg3RSwweEZELDB4RjcsMHhGNiwweEQ3LDB4RjYsMHgwMCwweEEwLDB4RjIsMHhBMCwKKyAgICAw
eDE4LDB4RkYsMHhENywweEY2LDB4QUUsMHhCRSwweEVCLDB4N0YsMHgxOCwweEZGLDB4RjcsMHhG
NiwweEZGLDB4RUQsMHg3NywweEQ1LAorICAgIDB4MTgsMHhGNywweEQ3LDB4RjYsMHhERSwweEZB
LDB4N0UsMHhGRiwweEY3LDB4RjYsMHhENywweEY2LDB4QkMsMHhFRSwweDJFLDB4OUUsCisgICAg
MHhGNywweEY2LDB4RDcsMHhGNiwweEE4LDB4QUEsMHhBRSwweDhBLDB4RDcsMHhGNiwweEY3LDB4
RUUsMHgyQSwweEEyLDB4MDIsMHgwMCwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4Q0EsMHhF
QiwweEUzLDB4RUIsMHhCNiwweEVFLDB4OTYsMHhFRSwweEUwLDB4QzAsMHg3OCwweDU2LAorICAg
IDB4OTYsMHhFRSwweDc1LDB4RUUsMHg5RSwweEI4LDB4QzIsMHg2QSwweEQ3LDB4RjYsMHg3Niww
eEVFLDB4QUIsMHgwQiwweEVGLDB4QUQsCisgICAgMHhENywweEY2LDB4QjYsMHhFRSwweEVBLDB4
RUIsMHhBQiwweDNBLDB4RDcsMHhGNiwweEI2LDB4RUUsMHg4QiwweEZCLDB4NjMsMHg3NCwKKyAg
ICAweDk2LDB4RUUsMHgxNCwweERFLDB4RjgsMHhGQywweEZDLDB4NTgsMHg5NiwweEVFLDB4MzUs
MHhFNiwweDJCLDB4QUIsMHg4RiwweEFELAorICAgIDB4NzUsMHhFRSwweDU2LDB4RTYsMHhFOCww
eEEyLDB4MkIsMHgyQSwweDk2LDB4RUUsMHg1NSwweEVFLDB4QjcsMHg5RCwweDJGLDB4OEIsCisg
ICAgMHg5NiwweEVFLDB4RjQsMHhERCwweDYwLDB4NzIsMHg2OCwweEUwLDB4MTQsMHhERSwweDcy
LDB4Q0QsMHhCNywweDJGLDB4MzUsMHhCNywKKyAgICAweDc2LDB4RUUsMHhGMywweERELDB4MkQs
MHhBRiwweDJCLDB4MkIsMHg3NSwweEVFLDB4MzUsMHhFNiwweDcyLDB4N0EsMHg1QSwweDdBLAor
ICAgIDB4MTQsMHhFNiwweEQzLDB4REQsMHhFOCwweEZBLDB4N0UsMHg1NiwweDE0LDB4RTYsMHg5
MywweEQ1LDB4NjIsMHg2QSwweEVGLDB4N0IsCisgICAgMHhGMCwweEM0LDB4OEIsMHg5MywweEZD
LDB4RkMsMHg3QywweEY4LDB4NzIsMHhENSwweEVDLDB4OUIsMHgzNSwweDI1LDB4MkQsMHgyQiwK
KyAgICAweDU1LDB4RUUsMHg5MiwweEQ1LDB4QkQsMHhBRCwweDJELDB4QUQsMHg5NiwweEVFLDB4
MzQsMHhFNiwweEZELDB4MkEsMHgwQSwweDAyLAorICAgIDB4OTYsMHhFRSwweDM0LDB4RTYsMHg1
NywweEY0LDB4ODAsMHgwMCwweEI3LDB4RjYsMHg1NSwweEU2LDB4MDksMHgyOSwweEVBLDB4RkYs
CisgICAgMHhCNiwweEVFLDB4MTQsMHhFNiwweEIwLDB4RkEsMHhGRSwweEQ2LDB4OTYsMHhFRSww
eEY0LDB4REQsMHgyQSwweDBBLDB4QUEsMHg3NSwKKyAgICAweDk2LDB4RUUsMHgzNSwweEU2LDB4
MjAsMHgwMCwweDgyLDB4MDksMHhCNiwweEY2LDB4NTUsMHhFNiwweEFBLDB4RUEsMHg3RSwweDdG
LAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhCRSwweDJCLDB4MkEsMHhBQSwweEY3LDB4RjYs
MHhENywweEY2LDB4N0MsMHg5RiwweDU1LDB4NTUsCisgICAgMHhENywweEY2LDB4RDYsMHhFRSww
eEFCLDB4QUEsMHg4OCwweEFBLDB4RDYsMHhGNiwweEQ3LDB4RUUsMHhBQSwweEFBLDB4OEEsMHg4
QSwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4ODAsMHhBMiwweEFCLDB4MEIsMHhGNiwweEY2
LDB4QjcsMHhFRSwweEZBLDB4RkUsMHhCQSwweEFCLAorICAgIDB4RDYsMHhGNiwweEY4LDB4RUUs
MHgwMCwweEEyLDB4MDIsMHgwMiwweEQ2LDB4RjYsMHhCNiwweEU2LDB4ODgsMHgzMiwweDAyLDB4
MDAsCisgICAgMHhENiwweEY2LDB4RjgsMHhFRSwweDA4LDB4ODIsMHgyMCwweDIyLDB4RDcsMHhG
NiwweEQ2LDB4RUUsMHhBQSwweEEyLDB4QTgsMHhBMywKKyAgICAweEI1LDB4RjYsMHhGNiwweEVF
LDB4RkEsMHhFQSwweEJGLDB4QUEsMHhENiwweEY2LDB4RDYsMHhFRSwweDM4LDB4QTgsMHhBQSww
eEE4LAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhGMiwweEUyLDB4NzAsMHg3OCwweEQ2LDB4
RjYsMHhCNiwweEVFLDB4QUEsMHhBRiwweDlELDB4NTcsCisgICAgMHhENiwweEY2LDB4QjYsMHhF
RSwweEVGLDB4OTYsMHhGRSwweEFBLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhGRSwweEVFLDB4RUIs
MHhGRSwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEY2LDB4QTgsMHgwQiwweDhELDB4QUYsMHhENiww
eEY2LDB4QjYsMHhFRSwweDgwLDB4MDAsMHg4MCwweEEzLAorICAgIDB4RjYsMHhGNiwweEI2LDB4
RUUsMHhBQSwweDlFLDB4QkYsMHhFRiwweEY2LDB4RjYsMHhCNiwweEVFLDB4QUEsMHhEQSwweEJG
LDB4RUYsCisgICAgMHhENiwweEY2LDB4RjcsMHhFRSwweDg4LDB4ODAsMHgyMCwweEE4LDB4Rjcs
MHhGNiwweEQ2LDB4RjYsMHhGQSwweEZBLDB4RUQsMHhGNywKKyAgICAweEY3LDB4RjYsMHhENiww
eEY2LDB4MzgsMHg5NiwweEVCLDB4RkEsMHhGNywweEZFLDB4RDcsMHhGNiwweEFBLDB4QUYsMHhG
RiwweDc0LAorICAgIDB4RjcsMHhGRSwweDc1LDB4RUUsMHhBMiwweEFBLDB4RUEsMHg3RSwweDU0
LDB4RUUsMHgyOSwweDgzLDB4ODAsMHhFMCwweEUwLDB4NzgsCisgICAgMHhFQywweEEzLDB4RTUs
MHg2MSwweEY4LDB4RkEsMHhGRSwweDU3LDB4QzgsMHg3QSwweDY0LDB4NTEsMHgwMCwweEEwLDB4
RkIsMHg1NywKKyAgICAweEE4LDB4N0EsMHg2MywweDUxLDB4QTAsMHhFOCwweEZGLDB4RDUsMHgy
NiwweDZBLDB4ODQsMHg1MSwweEEwLDB4QTgsMHhCQiwweEQ1LAorICAgIDB4MDYsMHg2MiwweEE1
LDB4NTksMHgwMiwweDIyLDB4QkIsMHhERCwweDI2LDB4NkEsMHg4NCwweDUxLDB4QUEsMHg4Miww
eDhFLDB4NkYsCisgICAgMHgyNiwweDZBLDB4MjMsMHg0MSwweEEwLDB4OEEsMHhGQSwweDVGLDB4
RTUsMHg1OSwweDQzLDB4NDksMHgwMCwweEZBLDB4N0UsMHg1NSwKKyAgICAweEM1LDB4NTksMHg0
MywweDQ5LDB4MkEsMHhBQSwweEZFLDB4RkQsMHhBNCwweDUxLDB4NjQsMHg1MSwweEIwLDB4RTgs
MHhBRiwweDdELAorICAgIDB4QzUsMHg2MSwweDQzLDB4NDksMHhERiwweEZGLDB4MkYsMHgwRiww
eEE4LDB4N0EsMHg4NCwweDU5LDB4NTUsMHhGRiwweEFCLDB4MkUsCisgICAgMHg0NywweDcyLDB4
QTUsMHg1OSwweDU1LDB4RkUsMHhBOCwweDAwLDB4MjcsMHg2QSwweEM1LDB4NTksMHhCNywweEFG
LDB4OTgsMHg5MCwKKyAgICAweDQ3LDB4NkEsMHhFNSwweDYxLDB4NzksMHhGMiwweDIwLDB4QUEs
MHgwNiwweDZBLDB4QzUsMHg2MSwweEE3LDB4M0EsMHg5QSwweEFDLAorICAgIDB4QTgsMHg3QSww
eDA2LDB4NkEsMHhGNywweEI1LDB4OEQsMHgyRiwweDhCLDB4QTMsMHg2NywweDcyLDB4RkQsMHhB
RiwweEFCLDB4MEIsCisgICAgMHhDQywweEEzLDB4RTksMHg4QSwweDU1LDB4RkYsMHhBQSwweDIw
LDB4QUIsMHhBMywweEM5LDB4OEEsMHhGRCwweEFFLDB4Q0EsMHgwMCwKKyAgICAweDhCLDB4QTMs
MHgwOSwweDkzLDB4NTUsMHhFRiwweEZCLDB4NzgsMHg4QiwweEEzLDB4MkEsMHg5QiwweDM5LDB4
M0YsMHgyRCwweEE5LAorICAgIDB4QUIsMHhBMywweDZBLDB4QTMsMHhBRSwweDlBLDB4REMsMHg1
NSwweDJELDB4QkMsMHg4QiwweEEzLDB4MkIsMHgyNSwweEFELDB4RjUsCisgICAgMHhDRiwweEND
LDB4Q0MsMHhBQiwweDJBLDB4QUYsMHgzNywweEZELDB4Q0YsMHhDQywweDJELDB4QkMsMHg3OCww
eEU4LDB4N0EsMHg3NywKKyAgICAweDJFLDB4QkMsMHg0QSwweDlCLDB4RjgsMHhGOCwweDc4LDB4
NUUsMHgyOSwweDkzLDB4NDYsMHg3QSwweDgwLDB4RkMsMHhGQSwweDVFLAorICAgIDB4QzgsMHg4
QSwweEU1LDB4NjksMHhFMCwweEZBLDB4NTYsMHg1RiwweDQ2LDB4NzIsMHhBNCwweDYxLDB4REUs
MHg1RiwweEFBLDB4MEEsCisgICAgMHhGMywweEU1LDB4QTcsMHg3QSwweEQ1LDB4QjUsMHgyNSww
eDJELDB4RDYsMHhGNiwweDEwLDB4Q0QsMHgyRCwweDJCLDB4MDIsMHgwMiwKKyAgICAweDE4LDB4
RkYsMHhCNiwweEZFLDB4QUIsMHg4QSwweDJBLDB4MjIsMHgxNywweEZGLDB4RjgsMHhGRSwweEFG
LDB4QjksMHhBQiwweDIyLAorICAgIDB4MTcsMHhGRiwweEY4LDB4RjYsMHhBQSwweEEyLDB4QTgs
MHgwOCwweDE3LDB4RkYsMHhGOCwweEY2LDB4RUEsMHhBMCwweDgyLDB4ODIsCisgICAgMHhGNyww
eEZFLDB4MTgsMHhGNywweEZGLDB4RUYsMHhCRiwweEZBLDB4MTcsMHhGRiwweEY3LDB4RjYsMHg1
QiwweEZELDB4RkYsMHhFRiwKKyAgICAweDE3LDB4RkYsMHhENywweEY2LDB4QUEsMHhFMiwweEVB
LDB4N0EsMHhGNywweEY2LDB4OTYsMHhFRSwweEU4LDB4NzgsMHhCRiwweEFGLAorICAgIDB4Rjcs
MHhGNiwweEI2LDB4RUUsMHg3RCwweDJGLDB4MEEsMHgwMCwweDE4LDB4RkYsMHhENywweEY2LDB4
QkQsMHgwQiwweDAyLDB4MDAsCisgICAgMHgzOCwweEZGLDB4MTgsMHhGRiwweEI1LDB4QUQsMHhB
RCwweDhELDB4MzgsMHhGRiwweDE4LDB4RkYsMHgwQSwweDAyLDB4MDIsMHgwMCwKKyAgICAweDM4
LDB4RkYsMHhGNCwweERELDB4QTAsMHhFOCwweDc4LDB4NzgsMHhGNywweEZFLDB4RDMsMHhENSww
eDJCLDB4MjcsMHgyRCwweDJELAorICAgIDB4MzgsMHhGRiwweDE4LDB4RkYsMHhFRCwweDdELDB4
RkQsMHhGRCwweDM5LDB4RkYsMHgxOCwweEZGLDB4MkYsMHhBRSwweEJGLDB4QkQsCisgICAgMHgz
OCwweEZGLDB4MTksMHhGRiwweEU4LDB4RjgsMHhGQSwweDZBLDB4MTgsMHhGRiwweEY4LDB4RjYs
MHhBOCwweEY4LDB4NzIsMHhEQSwKKyAgICAweDE4LDB4RkYsMHhENywweEY2LDB4RkYsMHhBQiww
eEFGLDB4QkYsMHgxOCwweEZGLDB4RjgsMHhGNiwweEVFLDB4QkEsMHgwQSwweDZBLAorICAgIDB4
MTgsMHhGRiwweEY4LDB4RjYsMHhGRiwweEZFLDB4QUEsMHhCRCwweDE4LDB4RkYsMHhGOCwweEY2
LDB4RkUsMHg5RiwweEFGLDB4OEEsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEFGLDB4MkIs
MHg4RSwweDBBLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHg3QSwweEUyLDB4RUEsMHhFQSwKKyAgICAw
eEY3LDB4RkUsMHg1NSwweEU2LDB4NUYsMHg1RSwweEZBLDB4RjgsMHg3NSwweEVFLDB4NTUsMHhF
NiwweDU1LDB4N0YsMHhGQSwweDAyLAorICAgIDB4NTUsMHhFRSwweDc1LDB4RTYsMHg4MCwweDgy
LDB4QkUsMHhBQiwweEI2LDB4RjYsMHg1NCwweEU2LDB4MkYsMHgyOSwweDJCLDB4QUIsCisgICAg
MHhGNywweEY2LDB4QjcsMHhGNiwweEFGLDB4MEYsMHhBNSwweDNELDB4RjgsMHhGNiwweEQ3LDB4
RjYsMHhFQiwweDZFLDB4NjAsMHg2MCwKKyAgICAweEY3LDB4RjYsMHhEOCwweEY2LDB4MDIsMHgw
MiwweEFCLDB4QkQsMHhENiwweEZFLDB4RjgsMHhGNiwweDU1LDB4NUQsMHhERCwweDVGLAorICAg
IDB4RjgsMHhGNiwweEQ4LDB4RjYsMHgwMCwweEFFLDB4QkUsMHhBQSwweEY4LDB4RjYsMHhENyww
eEY2LDB4QUEsMHg4QiwweEIzLDB4ODIsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDg4LDB4
QTgsMHg4MiwweDAwLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHgwOCwweEUwLDB4QzgsMHgwMCwKKyAg
ICAweEY3LDB4RjYsMHhENywweEY2LDB4MDAsMHg4QSwweDhGLDB4QkYsMHhGNywweEY2LDB4RDcs
MHhGNiwweDIwLDB4MDAsMHgwQSwweDNCLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhDQSww
eEM4LDB4RTIsMHgyOCwweEY3LDB4RkUsMHhENywweEY2LDB4MkQsMHgyRCwweDJCLDB4QkEsCisg
ICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEE4LDB4QTgsMHhFOCwweEZBLDB4RjcsMHhGNiwweEQ3
LDB4RjYsMHhERSwweERGLDB4N0UsMHg1NiwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4RUIs
MHg0QSwweERELDB4NTUsMHhGNywweEY2LDB4QjcsMHhFRSwweDhGLDB4QkYsMHhERSwweEZFLAor
ICAgIDB4RDcsMHhGNiwweDk2LDB4RUUsMHhFOCwweEVDLDB4N0UsMHg3RiwweEI2LDB4RUUsMHg1
NSwweEU2LDB4RjgsMHhGQSwweDdBLDB4NUYsCisgICAgMHg5NiwweEVFLDB4NTUsMHhFNiwweEJC
LDB4QkQsMHhCRCwweDM1LDB4RDcsMHhGNiwweDk2LDB4RUUsMHhBRCwweDJELDB4MEYsMHgzQiwK
KyAgICAweEQ3LDB4RjYsMHhCNiwweEY2LDB4QjIsMHhERiwweEQ4LDB4RUEsMHhENywweEY2LDB4
OTYsMHhFRSwweEE4LDB4QUEsMHhFQiwweEU4LAorICAgIDB4OTYsMHhFRSwweEY0LDB4REQsMHg3
OCwweDc4LDB4NUMsMHg1QSwweDc2LDB4RUUsMHhGNCwweERELDB4MDMsMHgyQiwweDJELDB4QUYs
CisgICAgMHg3NSwweEVFLDB4NTUsMHhFNiwweDg4LDB4QTIsMHg4OCwweEEyLDB4OTYsMHhFRSww
eDc1LDB4RUUsMHhCRiwweEQ3LDB4N0QsMHg1NSwKKyAgICAweDc2LDB4RUUsMHhEMywweEQ1LDB4
NjAsMHhGOCwweDYwLDB4NjgsMHhGNCwweERELDB4OTIsMHhENSwweEFGLDB4MjcsMHgyRCwweDNG
LAorICAgIDB4NTUsMHhFRSwweEY0LDB4REQsMHgwQiwweDJCLDB4MjksMHhBNywweDc2LDB4RUUs
MHgzNSwweEU2LDB4N0EsMHg3QSwweDYyLDB4NkIsCisgICAgMHgzNSwweEU2LDB4RDMsMHhERCww
eDU2LDB4N0UsMHhFMiwweEU4LDB4MTUsMHhFNiwweEIzLDB4RDUsMHg3QiwweDZBLDB4NjIsMHg2
OCwKKyAgICAweDMxLDB4QzUsMHgwRCwweEE0LDB4REMsMHg3QywweEJDLDB4QUEsMHg5MiwweEQ1
LDB4QUYsMHhCNCwweDJELDB4MkQsMHgwOSwweEFGLAorICAgIDB4NTUsMHhFRSwweDkyLDB4RDUs
MHgzRiwweDM1LDB4OTUsMHhGRCwweDk2LDB4RjYsMHhGNCwweERELDB4MDAsMHgyMiwweEFBLDB4
RjUsCisgICAgMHg5NiwweEVFLDB4RDMsMHhERCwweEEwLDB4RUEsMHhGRiwweDVGLDB4MzUsMHhF
NiwweDkyLDB4RDUsMHg4MCwweEJBLDB4REYsMHg1NSwKKyAgICAweEY0LDB4REQsMHg1MiwweENE
LDB4MDAsMHhBQSwweEZCLDB4RkQsMHhGNCwweERELDB4OTIsMHhENSwweDhGLDB4QUYsMHhBRCww
eDBELAorICAgIDB4NzYsMHhFRSwweEYzLDB4REQsMHgwRCwweEE1LDB4QUQsMHhBRCwweDc2LDB4
RUUsMHgzNSwweEU2LDB4RTgsMHhGQywweDU3LDB4NTUsCisgICAgMHhENiwweEY2LDB4QjYsMHhF
RSwweEFBLDB4QUEsMHgwOCwweDgzLDB4RjYsMHhGNiwweEI3LDB4RUUsMHhGQiwweEVCLDB4QUEs
MHhBRiwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4MkIsMHg4MywweDAyLDB4MDgsMHhENiww
eEY2LDB4RDcsMHhFRSwweDhBLDB4QUEsMHhBQSwweDJBLAorICAgIDB4RDYsMHhGNiwweEQ3LDB4
RUUsMHhBMiwweDhBLDB4QTgsMHhBQSwweEY2LDB4RjYsMHhENiwweEY2LDB4QkQsMHhDQiwweDdE
LDB4NTUsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDM4LDB4MDAsMHgyQSwweDM4LDB4RjYs
MHhGNiwweEQ2LDB4RjYsMHhGNSwweEY1LDB4REQsMHhGRCwKKyAgICAweEQ2LDB4RjYsMHhENyww
eEVFLDB4OEEsMHhBOCwweDJBLDB4QTgsMHhENiwweEY2LDB4QjYsMHhFRSwweEFBLDB4OEEsMHgz
MCwweDAwLAorICAgIDB4RjYsMHhGNiwweEI2LDB4RUUsMHhGRiwweEZGLDB4RUUsMHhBQSwweEQ2
LDB4RjYsMHhENiwweEVFLDB4MkEsMHgyMiwweEFBLDB4QUEsCisgICAgMHhENiwweEY2LDB4QjYs
MHhFRSwweEI2LDB4MkUsMHhBMiwweEZBLDB4RDYsMHhGNiwweEI2LDB4RUUsMHg5RiwweERGLDB4
RTcsMHhBNSwKKyAgICAweEI2LDB4RjYsMHhENiwweEVFLDB4RUIsMHhBQSwweEJBLDB4MkEsMHhE
NiwweEY2LDB4QjYsMHhFRSwweEZBLDB4NjMsMHhBRiwweEJELAorICAgIDB4RDcsMHhGNiwweEI2
LDB4RjYsMHhGQiwweEVCLDB4RUEsMHhGNywweEQ2LDB4RjYsMHhCNiwweEVFLDB4MjksMHhGQiww
eEFGLDB4QUIsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDBBLDB4MEEsMHgyOCwweEJBLDB4
RDYsMHhGNiwweEI2LDB4RUUsMHgwOCwweDI4LDB4QTgsMHhBMywKKyAgICAweEQ2LDB4RjYsMHhC
NiwweEVFLDB4MDAsMHhBMiwweEE4LDB4QTIsMHhGNiwweEY2LDB4QjUsMHhFRSwweEFBLDB4QkEs
MHhFRSwweEZBLAorICAgIDB4RjYsMHhGNiwweEI1LDB4RUUsMHgyQSwweEFCLDB4M0YsMHhGRiww
eEY2LDB4RjYsMHhCNywweEY2LDB4RTgsMHhGQSwweEZFLDB4RkUsCisgICAgMHhENywweEY2LDB4
NzUsMHhFRSwweDZBLDB4NjgsMHhDMCwweEMwLDB4RjMsMHhERCwweEU4LDB4ODIsMHg3OCwweDc4
LDB4NzgsMHg3OCwKKyAgICAweDQ2LDB4NkEsMHhBNCwweDUxLDB4N0UsMHg1NiwweDVDLDB4NTgs
MHg4NCwweDUxLDB4MjMsMHg0MSwweDc3LDB4QkUsMHg3QSwweEEwLAorICAgIDB4NjMsMHg0OSww
eEUyLDB4MzgsMHgwMiwweEE4LDB4REYsMHg1NiwweDg0LDB4NTEsMHhDMiwweDMwLDB4MEEsMHgy
RSwweEVGLDB4NTUsCisgICAgMHg4NCwweDUxLDB4QzIsMHgzMCwweDAwLDB4MDIsMHhCRiwweEZE
LDB4QTQsMHg1MSwweDAzLDB4MzksMHhBMCwweEZCLDB4RDcsMHg1NSwKKyAgICAweDg0LDB4NTEs
MHhFMiwweDM4LDB4RTIsMHhEQiwweEQ1LDB4NTcsMHg0MywweDQ5LDB4RTIsMHgzOCwweDgyLDB4
QjYsMHhGRCwweDc1LAorICAgIDB4NDQsMHg0OSwweEMyLDB4MzgsMHgyMiwweEFGLDB4QUQsMHhB
QiwweDg0LDB4NTEsMHgyMywweDQ5LDB4QTksMHhBRCwweDNGLDB4RjksCisgICAgMHg2NywweDcy
LDB4ODQsMHg1OSwweEJELDB4MkQsMHgyRCwweDJGLDB4RTgsMHg4MiwweDY3LDB4NzIsMHhCRCww
eDI5LDB4OEIsMHhBQiwKKyAgICAweEE4LDB4N0EsMHg0NywweDcyLDB4RkMsMHg3RSwweDdDLDB4
RjIsMHg0NywweDZBLDB4QzUsMHg2MSwweEJDLDB4QTgsMHhGOCwweDVDLAorICAgIDB4MjYsMHg2
QSwweEM1LDB4NTksMHhFQywweDdGLDB4RkIsMHhFQiwweDI2LDB4NkEsMHhDNSwweDYxLDB4QkUs
MHhBRCwweEE5LDB4QUEsCisgICAgMHhDOCwweDgyLDB4MjYsMHg2QSwweDNELDB4MkQsMHgyRiww
eEI3LDB4Q0MsMHhBMywweEM5LDB4ODIsMHgwQiwweDBCLDB4QTksMHhBNSwKKyAgICAweDBELDB4
QjQsMHhBQywweEEzLDB4QTIsMHgyQSwweDJGLDB4OUQsMHg0RSwweEJDLDB4RUQsMHhBQiwweDVG
LDB4RkUsMHgyRiwweDhGLAorICAgIDB4NEQsMHhCQywweDRBLDB4OUIsMHg1RiwweEZBLDB4QzAs
MHg4MCwweENDLDB4QUIsMHgyQSwweDlCLDB4RjcsMHg1RSwweDdFLDB4QjAsCisgICAgMHg4Qiww
eEEzLDB4MjksMHg5QiwweDZGLDB4NzUsMHhGQiwweDgwLDB4OEIsMHhBMywweEU4LDB4OEEsMHgy
QSwweEFGLDB4RkYsMHg1NSwKKyAgICAweEVDLDB4QUIsMHgwOSwweDkzLDB4MEEsMHhBQiwweEFG
LDB4RkQsMHgwRCwweEI0LDB4NkEsMHg5QiwweDBBLDB4QUYsMHhCRiwweDc1LAorICAgIDB4RUMs
MHhBQiwweEM4LDB4OEEsMHhFMCwweEY4LDB4N0EsMHg1RiwweEM4LDB4OEEsMHgyNiwweDcyLDB4
RkMsMHhGRSwweERGLDB4NTcsCisgICAgMHhDOSwweDhBLDB4RTYsMHg2OSwweDVELDB4N0YsMHg4
QSwweDBCLDB4NEQsMHhCNCwweDI2LDB4NzIsMHhENSwweEJELDB4M0QsMHgyRiwKKyAgICAweEI2
LDB4RkUsMHhBQiwweDlCLDB4QUQsMHgyRCwweDJBLDB4MEEsMHgxOCwweEZGLDB4OTYsMHhGNiww
eDI5LDB4MkYsMHg4QiwweDJBLAorICAgIDB4MTgsMHhGRiwweEY3LDB4RkUsMHhCRCwweEJELDB4
QTUsMHhBNywweDE4LDB4RkYsMHgxNywweEY3LDB4QUEsMHhBOCwweEEwLDB4MjAsCisgICAgMHgx
OCwweEZGLDB4RjYsMHhFRSwweEE4LDB4MjIsMHgwOCwweEEwLDB4RjcsMHhGRSwweDE4LDB4Rjcs
MHhERiwweEZGLDB4RkYsMHhFRiwKKyAgICAweDE3LDB4RkYsMHhGNywweEY2LDB4OUUsMHhCQSww
eDg4LDB4QUEsMHgxNywweEZGLDB4RDcsMHhGNiwweEFBLDB4ODIsMHhFMCwweDY4LAorICAgIDB4
RjcsMHhGNiwweEQ3LDB4RjYsMHg3MCwweDU4LDB4NTcsMHg1RiwweEY4LDB4RkUsMHhENiwweEVF
LDB4QjUsMHhBQiwweEFFLDB4OEIsCisgICAgMHgzOCwweEZGLDB4RjcsMHhGNiwweEY1LDB4QkYs
MHhBRCwweEFCLDB4MzgsMHhGRiwweDE4LDB4RkYsMHhENSwweEFCLDB4MEEsMHgwMiwKKyAgICAw
eDU5LDB4RkYsMHgxOCwweEZGLDB4QUQsMHhBQSwweEFBLDB4MkEsMHgzOCwweEZGLDB4OTYsMHhF
RSwweDgwLDB4ODAsMHg0MCwweEYwLAorICAgIDB4RDcsMHhGNiwweEY0LDB4REQsMHg3OCwweDdF
LDB4RkUsMHhGRSwweDE4LDB4RkYsMHgxNCwweERFLDB4MkQsMHgyRCwweDBGLDB4OEYsCisgICAg
MHgzOCwweEZGLDB4MTgsMHhGRiwweEZELDB4RkQsMHg3RCwweDU1LDB4MzksMHhGRiwweDE4LDB4
RkYsMHhBRCwweEFELDB4QUYsMHg3RCwKKyAgICAweDM5LDB4RkYsMHgxOCwweEZGLDB4NkUsMHhG
RSwweERFLDB4NUYsMHgxOCwweEZGLDB4RjgsMHhGNiwweDVGLDB4NUEsMHhENiwweERFLAorICAg
IDB4MTgsMHhGRiwweEY4LDB4RjYsMHg5NSwweEI1LDB4OUQsMHhERCwweDE4LDB4RkYsMHhGOCww
eEY2LDB4RDYsMHhGQSwweEZFLDB4N0YsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEE5LDB4
QUIsMHg3NywweEY3LDB4MTgsMHhGRiwweEY4LDB4RjYsMHg4MCwweDgwLDB4QUEsMHhBQiwKKyAg
ICAweDE4LDB4RkYsMHhGNywweEY2LDB4OEUsMHg4QiwweDgyLDB4ODIsMHgxOCwweEZGLDB4Rjcs
MHhGNiwweEZFLDB4RUEsMHhGQSwweEZGLAorICAgIDB4RjcsMHhGNiwweEI3LDB4RjYsMHg1Miww
eDcwLDB4NzgsMHg3OCwweEI2LDB4RjYsMHg3NiwweEVFLDB4NTcsMHg1RSwweDdDLDB4RkEsCisg
ICAgMHg5NiwweEVFLDB4NzYsMHhFRSwweDU1LDB4QkQsMHg2OSwweENBLDB4QjYsMHhGNiwweDU1
LDB4RTYsMHhBOSwweEFCLDB4QUIsMHgyRSwKKyAgICAweEY3LDB4RjYsMHg5NiwweEVFLDB4QUYs
MHhCOSwweDJGLDB4MkIsMHgxOCwweEZGLDB4RDcsMHhGNiwweEZGLDB4RUIsMHhCRiwweEFGLAor
ICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHgzQiwweEFGLDB4MkYsMHgyOCwweDE4LDB4RkYsMHhG
NywweEY2LDB4NTUsMHg1NSwweEY3LDB4N0YsCisgICAgMHhGOCwweEY2LDB4RDcsMHhGNiwweDJB
LDB4QTgsMHgwOCwweDAwLDB4RDcsMHhGRSwweEY3LDB4RjYsMHg1NywweEQ3LDB4NTUsMHg1NSwK
KyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4ODgsMHgwQSwweDIyLDB4QUEsMHgxOCwweEZGLDB4
RDcsMHhGNiwweEZBLDB4RkIsMHhGQiwweEY5LAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg5
NiwweEZFLDB4QUEsMHhBMiwweEY3LDB4RjYsMHhENywweEY2LDB4RDcsMHg1RCwweDU1LDB4NTgs
CisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDg4LDB4MkIsMHhFRiwweDJDLDB4RjcsMHhGNiww
eEQ3LDB4RjYsMHhCNCwweEQ0LDB4RkUsMHhGQSwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4
QUYsMHhBRiwweEVELDB4RDcsMHhGNywweEY2LDB4OTcsMHhFRSwweEE4LDB4QUEsMHg4MCwweEVB
LAorICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHgwOCwweDAyLDB4ODIsMHhBQywweEQ3LDB4RjYs
MHg5NiwweEVFLDB4QTgsMHhBMCwweEU4LDB4RkEsCisgICAgMHhCNywweEY2LDB4NTUsMHhFRSww
eEEwLDB4RTgsMHhFMiwweDdFLDB4NzUsMHhFRSwweDM1LDB4RTYsMHhCMCwweEE4LDB4RUUsMHhG
RiwKKyAgICAweDk2LDB4RUUsMHg1NSwweEU2LDB4M0QsMHgwRCwweDBCLDB4MEIsMHhENywweEY2
LDB4QjcsMHhGNiwweDhELDB4MzUsMHhFOSwweEZELAorICAgIDB4RDcsMHhGNiwweEI2LDB4RjYs
MHgzOCwweEY4LDB4RTIsMHg3NywweEQ3LDB4RjYsMHg3NiwweEVFLDB4QTgsMHhBQSwweEU4LDB4
N0EsCisgICAgMHg3NiwweEVFLDB4RDQsMHhENSwweEQ4LDB4NUMsMHg3RSwweDVBLDB4NTUsMHhF
RSwweEQ0LDB4REQsMHgyRiwweEFELDB4QUQsMHhCRCwKKyAgICAweDc1LDB4RUUsMHg1NSwweEU2
LDB4MDksMHgyRiwweDM3LDB4MDUsMHg5NiwweEVFLDB4NzUsMHhFRSwweEZGLDB4RUUsMHg3Nyww
eDU3LAorICAgIDB4NzYsMHhFRSwweEQzLDB4RDUsMHg2OCwweDcwLDB4NjAsMHhGQSwweEY0LDB4
REQsMHg5MiwweENELDB4MzcsMHgzRCwweDM3LDB4M0YsCisgICAgMHg1NSwweEVFLDB4RjQsMHhE
RCwweDJGLDB4MjksMHgyOSwweDJELDB4NTUsMHhFRSwweDM1LDB4RTYsMHhFMiwweDY4LDB4RUEs
MHg4QSwKKyAgICAweDU1LDB4RUUsMHhCMywweERELDB4RkEsMHg3RSwweDdFLDB4RjAsMHhGNCww
eERELDB4OTIsMHhENSwweDRBLDB4N0EsMHg0QSwweEMyLAorICAgIDB4NzIsMHhDRCwweENGLDB4
QkMsMHg1NiwweEY2LDB4QkUsMHhGOCwweDkyLDB4RDUsMHhGMCwweEJDLDB4QUQsMHgyRiwweDJG
LDB4MkYsCisgICAgMHhCMywweERELDB4NzIsMHhENSwweDJELDB4QkQsMHhERiwweDdELDB4QjMs
MHhERCwweDUxLDB4Q0QsMHhBMCwweDZDLDB4RkEsMHg1RiwKKyAgICAweEIyLDB4RDUsMHgzMSww
eENELDB4QTgsMHhGRiwweDc3LDB4NTUsMHg3MiwweENELDB4MzEsMHhDRCwweDgwLDB4OEEsMHgy
QiwweDNELAorICAgIDB4QjMsMHhERCwweDUxLDB4Q0QsMHhCNSwweEJGLDB4MkYsMHgyQiwweEY0
LDB4RTUsMHhCMywweEQ1LDB4QkYsMHhCNywweEZGLDB4MzUsCisgICAgMHg1NSwweEU2LDB4RjQs
MHhERCwweDJELDB4QUQsMHgyRiwweEVCLDB4NTUsMHhFNiwweDE0LDB4RTYsMHhGRSwweEFFLDB4
MkYsMHgyQiwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEY2LDB4RTIsMHhFQSwweEJFLDB4N0UsMHhE
NiwweEY2LDB4QjYsMHhFRSwweDIyLDB4RTIsMHhBMCwweDJBLAorICAgIDB4RDYsMHhGNiwweEI2
LDB4RUUsMHgwMiwweDg4LDB4MjIsMHgwOCwweEQ2LDB4RjYsMHhGOCwweEVFLDB4ODgsMHgyMCww
eEFBLDB4MjgsCisgICAgMHhENiwweEY2LDB4QjcsMHhFRSwweEEyLDB4QTgsMHgwMCwweDAyLDB4
RjcsMHhGNiwweEQ2LDB4RjYsMHhGNywweEU3LDB4N0YsMHg1RCwKKyAgICAweEI2LDB4RjYsMHhG
NiwweEVFLDB4QUIsMHhFRiwweEFCLDB4QUYsMHhGNiwweEY2LDB4QjYsMHhFRSwweDhBLDB4QTIs
MHhBQSwweEJGLAorICAgIDB4RjYsMHhGNiwweEI2LDB4RUUsMHhGRSwweEJFLDB4QkEsMHhBQSww
eEQ2LDB4RjYsMHhCNiwweEVFLDB4ODIsMHhBMCwweDhBLDB4MjgsCisgICAgMHhENiwweEY2LDB4
RjcsMHhFRSwweEE4LDB4ODAsMHgwMiwweDgwLDB4RjYsMHhGNiwweEI2LDB4RUUsMHhGQSwweEJB
LDB4QkYsMHhGRSwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4RUUsMHhCQSwweDJBLDB4MDAs
MHhENiwweEY2LDB4QjYsMHhFRSwweEI3LDB4N0IsMHhFQSwweDAwLAorICAgIDB4RDYsMHhGNiww
eEI2LDB4RUUsMHhGRiwweEVCLDB4OEEsMHgyMiwweEQ2LDB4RjYsMHhCNiwweEY2LDB4REQsMHhF
RSwweDY4LDB4QTgsCisgICAgMHhCNiwweEY2LDB4RDYsMHhFRSwweDgyLDB4QUEsMHhFOCwweEZF
LDB4QjYsMHhGNiwweEQ1LDB4RUUsMHhBQSwweEFBLDB4RjgsMHhFQSwKKyAgICAweEI2LDB4RjYs
MHhENiwweEVFLDB4RUUsMHhCQSwweEE4LDB4RjgsMHhCNiwweEY2LDB4RDYsMHhFRSwweEZGLDB4
RUIsMHhBQSwweDhFLAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHgwQSwweDIzLDB4OEIsMHgw
QSwweEQ2LDB4RjYsMHhGNiwweEVFLDB4MjIsMHgwMiwweEE4LDB4ODAsCisgICAgMHhGNywweEY2
LDB4QjYsMHhFRSwweEJGLDB4QUUsMHhBQSwweEVBLDB4RDYsMHhGNiwweEI3LDB4RjYsMHhCOCww
eEJBLDB4QkUsMHhCQywKKyAgICAweEQ3LDB4RjYsMHgzNCwweEU2LDB4QzAsMHhFMCwweDYwLDB4
NjgsMHg3MSwweENELDB4ODYsMHg3MiwweEYwLDB4NzAsMHg3OCwweDc4LAorICAgIDB4NDYsMHg2
QSwweDY0LDB4NDksMHhGOCwweDc4LDB4NUEsMHg1RSwweEE0LDB4NTEsMHgwMiwweDM5LDB4RTgs
MHhGQSwweDdBLDB4N0YsCisgICAgMHgwMiwweDM5LDB4QTEsMHgyOCwweEY4LDB4RTAsMHhFQSww
eDU2LDB4QzIsMHgzMCwweDgxLDB4MjgsMHhGOCwweEE4LDB4QTgsMHgwMCwKKyAgICAweDAzLDB4
MzksMHhBMiwweDI4LDB4QUIsMHg4RiwweDZGLDB4RTcsMHhFMywweDM4LDB4QzIsMHgzMCwweDJG
LDB4RUIsMHg3OSwweDdELAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBNywweDJCLDB4MEIs
MHg4NSwweDIzLDB4NDEsMHhFMiwweDM4LDB4NTcsMHhENiwweEFCLDB4MEEsCisgICAgMHg0NCww
eDQ5LDB4MDMsMHgzOSwweEU5LDB4QjksMHhBQiwweEE5LDB4RTUsMHg2MSwweDQzLDB4NDksMHhE
NSwweDM1LDB4QTUsMHgzNSwKKyAgICAweDA5LDB4OTMsMHhBNSwweDU5LDB4QkQsMHhBRiwweEFC
LDB4MkIsMHhFOSwweDhBLDB4ODcsMHg3QSwweEZGLDB4NUIsMHg3QSwweDYwLAorICAgIDB4QTcs
MHg4MiwweEM1LDB4NjEsMHhBMCwweEZBLDB4NzcsMHg1RSwweDI2LDB4NkEsMHg2MywweDQ5LDB4
RjgsMHhGQSwweEZGLDB4NTcsCisgICAgMHhFNSwweDU5LDB4MDIsMHg0MSwweDAyLDB4QTIsMHhC
RiwweEY3LDB4MDYsMHg2QSwweDg0LDB4NTEsMHgwMiwweEFCLDB4QUYsMHhCNSwKKyAgICAweDg3
LDB4N0EsMHhFNiwweDYxLDB4MEYsMHgyRiwweEE5LDB4MkQsMHg0QiwweDkzLDB4NjcsMHg3Miww
eDBCLDB4MkIsMHhCRCwweEY1LAorICAgIDB4OEIsMHg5QiwweEE4LDB4ODIsMHgwOCwweEFBLDB4
QUYsMHhGNSwweDBDLDB4QUMsMHgwOSwweDkzLDB4MDgsMHgyRiwweEJGLDB4RjUsCisgICAgMHgy
RCwweEJDLDB4OEIsMHhBMywweDgyLDB4MDIsMHgyQSwweEE5LDB4MkQsMHhCNCwweEFCLDB4QTMs
MHg3QywweEZBLDB4RkEsMHg3QSwKKyAgICAweENDLDB4QUIsMHg2QSwweDlCLDB4NkIsMHg2QSww
eEU4LDB4QkUsMHg2QSwweEEzLDB4QzgsMHg4QSwweEZBLDB4NzgsMHhFMCwweEM4LAorICAgIDB4
NDksMHg5QiwweEE3LDB4ODIsMHgwQSwweEFCLDB4RkIsMHg1RiwweDRBLDB4OUIsMHg4NywweDdB
LDB4QTAsMHhGQSwweDdGLDB4NTYsCisgICAgMHgwOSwweDkzLDB4NDYsMHg3QSwweDYwLDB4RUEs
MHhBQSwweEFCLDB4MEEsMHg5MywweDI3LDB4NzIsMHg3RCwweEY3LDB4QUEsMHgwMiwKKyAgICAw
eDA5LDB4OTMsMHg2OCwweDdBLDB4MzUsMHhBNywweDJCLDB4MDIsMHhFRiwweEM0LDB4MDksMHg4
QiwweDNELDB4MjUsMHgyRCwweEFELAorICAgIDB4QjYsMHhGRSwweDUxLDB4RDUsMHgwQiwweDBC
LDB4MDksMHgwRCwweDE4LDB4RkYsMHhENywweEZFLDB4RUIsMHhBQiwweDI5LDB4QUYsCisgICAg
MHgxOCwweEZGLDB4RjcsMHhGRSwweEFCLDB4N0UsMHg3QSwweDdFLDB4MTgsMHhGRiwweEY3LDB4
RkUsMHgwQSwweDA5LDB4QUIsMHhBQSwKKyAgICAweDE3LDB4RkYsMHhGOCwweEY2LDB4MjIsMHg4
MiwweDBBLDB4MDIsMHgxNywweEZGLDB4RjgsMHhGNiwweEI4LDB4RTgsMHgyMCwweDgwLAorICAg
IDB4MTgsMHhGRiwweEQ3LDB4RjYsMHgyOCwweDgwLDB4ODAsMHg3OCwweEY3LDB4RjYsMHhENyww
eEY2LDB4RTAsMHhFOCwweEZFLDB4NzcsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEY5LDB4
QUQsMHhCRCwweEE3LDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhBRiwweEFELDB4QkYsMHhBRiwKKyAg
ICAweDM4LDB4RkYsMHhGNywweEZFLDB4QkIsMHhBRiwweDA5LDB4MDIsMHg1OSwweEZGLDB4Mzks
MHhGRiwweEY1LDB4RjUsMHhFRCwweEZCLAorICAgIDB4NTksMHhGRiwweDE4LDB4RkYsMHg4QSww
eEFBLDB4RUEsMHg3RSwweDE4LDB4RkYsMHg5NiwweEVFLDB4NzAsMHg3OCwweDU4LDB4NUUsCisg
ICAgMHg5NiwweEVFLDB4NTUsMHhFNiwweDVFLDB4N0EsMHhGQSwweEZBLDB4MTgsMHhGRiwweDc2
LDB4RUUsMHgyRCwweDI5LDB4OEYsMHgwQiwKKyAgICAweDE4LDB4RkYsMHgxOSwweEY3LDB4MjIs
MHg4OCwweDgyLDB4MjIsMHgzOSwweEZGLDB4MTgsMHhGRiwweEY5LDB4RUQsMHhCOSwweDlELAor
ICAgIDB4MzksMHhGRiwweDE4LDB4RkYsMHg3RiwweDdFLDB4NUUsMHg3RSwweDE4LDB4RkYsMHhG
OCwweEY2LDB4RkUsMHhFQSwweEE4LDB4MkEsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEZG
LDB4RkEsMHhCRiwweDc3LDB4RjcsMHhGRSwweEY4LDB4RjYsMHg3RiwweERGLDB4N0YsMHg3NSwK
KyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4QTksMHhDOSwweEI5LDB4QkIsMHhGOCwweEZFLDB4
MTgsMHhGNywweDVFLDB4RkUsMHhGRSwweEVFLAorICAgIDB4MTgsMHhGRiwweEY3LDB4RUUsMHgy
MiwweDBBLDB4MjIsMHhBOCwweDE4LDB4RkYsMHhGNywweEY2LDB4NzYsMHg3RSwweEY4LDB4Nzgs
CisgICAgMHhGNywweEY2LDB4QjcsMHhFRSwweEZBLDB4N0EsMHg3QywweEZDLDB4OTYsMHhGNiww
eEI2LDB4RUUsMHgyQiwweEFELDB4RkUsMHhGRCwKKyAgICAweEI3LDB4RjYsMHg5NiwweEVFLDB4
NTUsMHg3NywweEY4LDB4RjgsMHhENiwweEY2LDB4NzUsMHhFRSwweEY1LDB4REQsMHhGNywweEJG
LAorICAgIDB4RDcsMHhGNiwweDk2LDB4RUUsMHgwMywweDBCLDB4MkYsMHgyQiwweDE4LDB4RkYs
MHhENywweEY2LDB4QUYsMHhBQSwweEFCLDB4RTksCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiww
eEE4LDB4QTgsMHhBOCwweEE4LDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhBQSwweDhCLDB4MkIsMHhB
RCwKKyAgICAweDE4LDB4RkYsMHhENywweEY2LDB4RkUsMHhGQSwweEI4LDB4MjgsMHgxOCwweEY3
LDB4RDcsMHhGNiwweEVGLDB4RkYsMHhGRSwweEE4LAorICAgIDB4MTgsMHhGNywweEQ3LDB4RjYs
MHhGNywweEZGLDB4QkIsMHhBQiwweDE4LDB4RkYsMHhENywweEY2LDB4RjUsMHhGRiwweEFFLDB4
QkUsCisgICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweEVFLDB4QUUsMHhGRSwweEZFLDB4RDgsMHhG
RSwweEY3LDB4RjYsMHhGNSwweEZELDB4RjUsMHhGNSwKKyAgICAweEY3LDB4RjYsMHhENywweEY2
LDB4MjgsMHhBQSwweEFGLDB4RUEsMHhGNywweEY2LDB4QjYsMHhFRSwweEEwLDB4RUEsMHg3Qyww
eDdFLAorICAgIDB4RjcsMHhGNiwweDk2LDB4RUUsMHhBQSwweDJCLDB4QkYsMHhENSwweEQ3LDB4
RjYsMHg5NiwweEVFLDB4QTAsMHhGOCwweDVFLDB4NUYsCisgICAgMHhCNiwweEVFLDB4NzYsMHhF
RSwweDI4LDB4QUEsMHhEQiwweDVELDB4QjYsMHhGNiwweDM1LDB4RTYsMHg4MCwweEFBLDB4RkEs
MHg3RiwKKyAgICAweDk2LDB4RUUsMHgzNSwweEU2LDB4NjgsMHhFRSwweEZGLDB4RkYsMHg5Niww
eEVFLDB4MzUsMHhFNiwweEJELDB4QUIsMHhBQiwweDBBLAorICAgIDB4NzYsMHhGNiwweDk2LDB4
RUUsMHg3RSwweDdGLDB4NUYsMHhERCwweEQ3LDB4RjYsMHhCNywweEY2LDB4RUQsMHhBQiwweERC
LDB4QzMsCisgICAgMHhCNiwweEY2LDB4OTYsMHhFRSwweDZDLDB4RkUsMHhCNywweEY2LDB4QjYs
MHhGNiwweDc2LDB4RUUsMHg3QiwweEZGLDB4RUEsMHg4MiwKKyAgICAweDU2LDB4RUUsMHhCMyww
eEQ1LDB4NTgsMHg3OCwweDdDLDB4RDgsMHgzNSwweEU2LDB4RDMsMHhENSwweDM1LDB4MkQsMHhB
QiwweEJGLAorICAgIDB4NzYsMHhFRSwweDM1LDB4RTYsMHgwRCwweDJELDB4QTUsMHhCNSwweDc2
LDB4RUUsMHg1NSwweEU2LDB4RTAsMHhFMCwweEUwLDB4NzMsCisgICAgMHg1NSwweEU2LDB4QjIs
MHhENSwweEUwLDB4NzAsMHg2OCwweDcwLDB4RjMsMHhERCwweEIyLDB4RDUsMHgzNSwweEE3LDB4
QjUsMHg5NSwKKyAgICAweDU1LDB4RUUsMHhGNCwweERELDB4QTksMHgyOSwweEFELDB4QkIsMHg3
NiwweEVFLDB4RDMsMHhERCwweDhBLDB4OEEsMHhBQSwweERGLAorICAgIDB4NTUsMHhFRSwweEQz
LDB4REQsMHg2OCwweEZBLDB4RTIsMHhFQiwweDE0LDB4RTYsMHhCMywweEQ1LDB4N0YsMHg2Miww
eEUyLDB4RUEsCisgICAgMHg3MiwweENELDB4OEYsMHhCNCwweEU4LDB4RjgsMHhGQywweERFLDB4
NzIsMHhENSwweEQwLDB4QkMsMHgyQiwweDJCLDB4QTksMHgyRCwKKyAgICAweDkyLDB4RDUsMHg1
MiwweENELDB4QjIsMHhFRiwweEZGLDB4REYsMHg3MiwweENELDB4MzEsMHhDRCwweEM4LDB4RjIs
MHg0MiwweDVBLAorICAgIDB4NzEsMHhDRCwweDMxLDB4QzUsMHg1NSwweEZFLDB4QkQsMHgzNSww
eEIzLDB4RDUsMHgzMSwweEM1LDB4QUQsMHhBQiwweEFGLDB4MEEsCisgICAgMHhCMywweEQ1LDB4
OTIsMHhENSwweEM5LDB4QzEsMHhCOSwweERELDB4RjQsMHhERCwweDkyLDB4RDUsMHgyRiwweEFF
LDB4QTcsMHgzQiwKKyAgICAweDE0LDB4RTYsMHhEMywweERELDB4MDAsMHgwQSwweEVGLDB4NUIs
MHg3NSwweEVFLDB4RjQsMHhERCwweDJCLDB4QUYsMHhBRiwweEJELAorICAgIDB4QjYsMHhGNiww
eDUwLDB4QzUsMHgwMCwweDAwLDB4ODIsMHhCNSwweEQ2LDB4RjYsMHg1NSwweEVFLDB4MDgsMHgw
QSwweDhBLDB4QTksCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDI4LDB4QTIsMHhBQSwweEZF
LDB4RDYsMHhGNiwweEI2LDB4RUUsMHgwMiwweDgwLDB4QTMsMHhFMiwKKyAgICAweEQ2LDB4RjYs
MHhCNiwweEVFLDB4QUEsMHhBQSwweEE4LDB4QUEsMHhENiwweEY2LDB4RDcsMHhFRSwweEFBLDB4
MkEsMHg4QSwweDIwLAorICAgIDB4RjgsMHhGNiwweEQ2LDB4RjYsMHg3NywweDdELDB4RTUsMHhC
RCwweEY3LDB4RjYsMHhCNiwweEVFLDB4QkYsMHhFRSwweEJBLDB4RUEsCisgICAgMHhGNiwweEY2
LDB4QjYsMHhFRSwweEFBLDB4QUIsMHhFQiwweEZGLDB4RDYsMHhGNiwweEQ2LDB4RUUsMHhBOCww
eDJBLDB4QUEsMHhBQSwKKyAgICAweEQ2LDB4RjYsMHhGNiwweEVFLDB4MDAsMHhBMCwweDhBLDB4
QTAsMHhENiwweEY2LDB4RjcsMHhFRSwweDA4LDB4ODgsMHgwOCwweDAyLAorICAgIDB4RDYsMHhG
NiwweEY2LDB4RUUsMHg4OCwweDAwLDB4ODAsMHhBMiwweEY3LDB4RjYsMHhENiwweEY2LDB4RTcs
MHhBNSwweEI1LDB4RDUsCisgICAgMHhGNywweEY2LDB4RDYsMHhGNiwweDU1LDB4NzUsMHhGNyww
eDVGLDB4RDYsMHhGNiwweEQ2LDB4RjYsMHgwMCwweDAwLDB4MDAsMHgwMCwKKyAgICAweEY3LDB4
RjYsMHhENiwweEY2LDB4NTUsMHg1NSwweDc1LDB4RkQsMHhENiwweEY2LDB4QjYsMHhFRSwweDNC
LDB4ODMsMHg4QiwweDgwLAorICAgIDB4RDYsMHhGNiwweEI2LDB4RjYsMHgwQywweDhBLDB4ODgs
MHgwMCwweEQ2LDB4RjYsMHhCNiwweEY2LDB4OUEsMHg5QSwweDNBLDB4QkUsCisgICAgMHhENiww
eEY2LDB4QjYsMHhFRSwweDA4LDB4MjgsMHgyQSwweEJBLDB4RDYsMHhGNiwweEI2LDB4RUUsMHgw
MCwweDI4LDB4MkEsMHgwMiwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEY2LDB4MjAsMHhFMCwweDYw
LDB4QjgsMHhGNywweEY2LDB4QjYsMHhGNiwweEZBLDB4REYsMHg3RiwweERGLAorICAgIDB4RDYs
MHhGNiwweEIyLDB4RDUsMHhFMCwweDYwLDB4NjAsMHg2OCwweENFLDB4QkMsMHgwNSwweDYyLDB4
NzgsMHg3OCwweDc4LDB4NTgsCisgICAgMHhDNSwweDU5LDB4MjMsMHg0MSwweEU4LDB4RTgsMHg1
QywweEVFLDB4NDMsMHg0MSwweEUyLDB4MzAsMHhDMCwweEUwLDB4RkUsMHg3OCwKKyAgICAweDAy
LDB4MzEsMHhBMSwweDI4LDB4N0EsMHg3OCwweEQ4LDB4NUUsMHhFMiwweDI4LDB4ODEsMHgyOCww
eEUyLDB4RkUsMHhGQSwweEY3LAorICAgIDB4QzEsMHgyOCwweDgwLDB4MjgsMHgyOCwweDI4LDB4
RkIsMHhCRiwweDAzLDB4MzEsMHhBMiwweDI4LDB4MkIsMHgyRiwweEI5LDB4RUIsCisgICAgMHgw
MiwweDMxLDB4QzIsMHgzMCwweDA3LDB4QUYsMHhBRCwweEFGLDB4MjMsMHg0MSwweEUyLDB4MzAs
MHgwQSwweDJCLDB4QTksMHhFOSwKKyAgICAweDQzLDB4NDksMHgwMywweDQxLDB4OEIsMHgwMiww
eDIzLDB4MjksMHgyNiwweDZBLDB4NjQsMHg1MSwweEI1LDB4MkQsMHgyRCwweDJELAorICAgIDB4
MDksMHg4QiwweDY2LDB4N0EsMHgwRCwweDA5LDB4MDksMHgyOSwweDI5LDB4OTMsMHhBNywweDgy
LDB4REEsMHhGOCwweEU4LDB4NzAsCisgICAgMHg4NywweDdBLDB4QTUsMHg1OSwweDU4LDB4NUMs
MHg1QywweDdDLDB4ODUsMHg1OSwweDAzLDB4NDEsMHhGOCwweDdFLDB4NzcsMHg1RiwKKyAgICAw
eDIzLDB4NDksMHhFMiwweDM4LDB4MkMsMHhBRiwweERFLDB4RkUsMHhDNiwweDYxLDB4RTIsMHgz
OCwweDBBLDB4QUYsMHhGRiwweEY1LAorICAgIDB4NDYsMHg2QSwweDY0LDB4NTEsMHgwQSwweDJC
LDB4QUQsMHhCRCwweEE4LDB4N0EsMHgwNiwweDYyLDB4MEIsMHhCRiwweEY3LDB4RkQsCisgICAg
MHhDOSwweDgyLDB4MjYsMHg2QSwweDIyLDB4QTIsMHhCNywweEY1LDB4MkEsMHg5MywweDg3LDB4
N0EsMHgwQSwweDBBLDB4QUYsMHhCRCwKKyAgICAweEVDLDB4QUIsMHgwOSwweDkzLDB4MkIsMHhB
RiwweEFELDB4QjUsMHhFQywweEFCLDB4QUMsMHhBQiwweDc4LDB4NzIsMHgzRSwweDNELAorICAg
IDB4Q0MsMHhBQiwweDZBLDB4QTMsMHhGRiwweEVELDB4QUMsMHhGQywweEFCLDB4QTMsMHhFOSww
eDhBLDB4RUEsMHhFOCwweEUwLDB4NzgsCisgICAgMHhFOCwweDhBLDB4NjcsMHg3QSwweEY4LDB4
NzgsMHg3RSwweDdGLDB4ODcsMHg3QSwweDQ2LDB4N0EsMHhCQSwweEY2LDB4N0YsMHhBNywKKyAg
ICAweDI5LDB4OTMsMHg2NywweDdBLDB4QjksMHgzRCwweEI1LDB4QUQsMHhFQywweEFCLDB4MEEs
MHg5MywweDdELDB4QUYsMHgwQiwweDAzLAorICAgIDB4QUIsMHhBMywweDI5LDB4OTMsMHg3NSww
eDdGLDB4RUEsMHg4OCwweDZELDB4QjQsMHgwOSwweDhCLDB4M0QsMHgzNSwweDM1LDB4QjcsCisg
ICAgMHhENywweEZFLDB4NEQsMHhCNCwweDBCLDB4MEIsMHhBQiwweEQ1LDB4RjcsMHhGRSwweEQz
LDB4REQsMHgwMCwweDAwLDB4MEEsMHgyRCwKKyAgICAweDE3LDB4RkYsMHhGOCwweEZFLDB4REIs
MHhGRSwweEI3LDB4RjUsMHgxOCwweEZGLDB4RjgsMHhGRSwweEFCLDB4QUUsMHhGRiwweEE3LAor
ICAgIDB4MTgsMHhGRiwweEY3LDB4RkUsMHgwQSwweDBCLDB4MkEsMHhCRSwweDM4LDB4RkYsMHhG
NywweEY2LDB4QUEsMHhFQSwweEZCLDB4NUYsCisgICAgMHgxOCwweEZGLDB4QjYsMHhFRSwweEU4
LDB4RkEsMHhGQSwweDdGLDB4RDcsMHhGNiwweEI2LDB4RUUsMHgwMCwweEEwLDB4RTIsMHhGQSwK
KyAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4QUEsMHhGQiwweDZELDB4REQsMHgzOSwweEZGLDB4
QjYsMHhFRSwweEJGLDB4MkQsMHgyRCwweDBGLAorICAgIDB4NTksMHhGRiwweDM4LDB4RkYsMHhC
NSwweEZELDB4QUIsMHhFRSwweDU5LDB4RkYsMHgzOSwweEZGLDB4RUIsMHhFRSwweEZBLDB4NUYs
CisgICAgMHgzOCwweEZGLDB4RDcsMHhGNiwweEMwLDB4RTAsMHhGMCwweDY4LDB4RDYsMHhFRSww
eDc2LDB4RUUsMHhGQywweEZFLDB4RkUsMHhGNywKKyAgICAweDk2LDB4RUUsMHg1NSwweEU2LDB4
RDgsMHg5QywweEI2LDB4MzcsMHgxOCwweEZGLDB4OTYsMHhFRSwweDAxLDB4MEIsMHgyOSwweDhC
LAorICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHg4MiwweDBBLDB4MEEsMHgyMiwweDM5LDB4RkYs
MHgxOCwweEZGLDB4OTUsMHhCNSwweEI1LDB4RkQsCisgICAgMHgzOSwweEZGLDB4MTgsMHhGRiww
eDdBLDB4N0UsMHg3QSwweDdFLDB4MTgsMHhGRiwweEY4LDB4RjYsMHhBRSwweEJBLDB4QUEsMHhF
QSwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4REYsMHg1RSwweDU4LDB4NUUsMHgxOCwweEY3
LDB4RDcsMHhGNiwweEJGLDB4QUUsMHgyQiwweEFBLAorICAgIDB4MTgsMHhGRiwweEY4LDB4RjYs
MHhBQiwweEVFLDB4QTksMHhGRCwweDE4LDB4RkYsMHhGOCwweEY2LDB4QkIsMHhERSwweEFFLDB4
QUEsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEFBLDB4QkYsMHhCRSwweEFBLDB4MTgsMHhG
RiwweEY4LDB4RjYsMHg1OCwweDdBLDB4RUEsMHhGRSwKKyAgICAweEY3LDB4RjYsMHhCNywweEY2
LDB4RkUsMHhFMCwweEUwLDB4QTAsMHhENywweEY2LDB4QjYsMHhFRSwweEVGLDB4QjUsMHgzNSww
eDg3LAorICAgIDB4RDcsMHhGNiwweDk2LDB4RUUsMHhGQSwweEUwLDB4QTAsMHgyMCwweEQ3LDB4
RjYsMHg5NiwweEVFLDB4OTcsMHg5RiwweEJFLDB4QUEsCisgICAgMHhENywweEY2LDB4OTYsMHhF
RSwweEFCLDB4QkYsMHhCQiwweEI4LDB4MTgsMHhGRiwweEI2LDB4RUUsMHhBQiwweEFGLDB4QUQs
MHgyRCwKKyAgICAweEY4LDB4RkUsMHhGNywweEY2LDB4NUYsMHg1RiwweERFLDB4NUYsMHgxOCww
eEY3LDB4QjcsMHhGNiwweDBBLDB4MkEsMHgyRSwweEFBLAorICAgIDB4MTgsMHhGRiwweEY3LDB4
RjYsMHgyOCwweDI4LDB4MEEsMHhBRiwweDE4LDB4RkYsMHhGOCwweEY2LDB4QTgsMHhBMCwweEU4
LDB4QjgsCisgICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweDdFLDB4NUQsMHg3RCwweEVBLDB4MTcs
MHhGRiwweEY4LDB4RjYsMHhGRCwweERELDB4REYsMHhCNywKKyAgICAweDE4LDB4RkYsMHhENyww
eEY2LDB4RkUsMHhERSwweERBLDB4RUEsMHhGOCwweEZFLDB4RjcsMHhGNiwweEZGLDB4RkIsMHhG
RiwweEY3LAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg2RiwweERFLDB4NUUsMHg1NiwweEQ3
LDB4RjYsMHg5NiwweEVFLDB4RjgsMHhFQSwweEE4LDB4QkEsCisgICAgMHhCNywweEY2LDB4OTYs
MHhFRSwweDc3LDB4RUIsMHg4MCwweEEwLDB4OTcsMHhFRSwweDc2LDB4RUUsMHhEOCwweDVDLDB4
NUMsMHhEQywKKyAgICAweDk2LDB4RUUsMHg3NiwweEVFLDB4NTUsMHhBNSwweDlGLDB4RkUsMHg5
NiwweEVFLDB4MzUsMHhFNiwweDdFLDB4RjgsMHhCMiwweEFBLAorICAgIDB4OTYsMHhFRSwweDU1
LDB4RUUsMHhENSwweEJELDB4MkIsMHhBQSwweDk2LDB4RUUsMHg3NiwweEVFLDB4QUQsMHgzQiww
eDAwLDB4QTMsCisgICAgMHhCNiwweEY2LDB4NzYsMHhFRSwweEFCLDB4ODksMHhBRiwweDNGLDB4
RDcsMHhGNiwweDk2LDB4RUUsMHgyMiwweEFCLDB4NkIsMHg3RiwKKyAgICAweEI2LDB4RjYsMHg3
NiwweEVFLDB4QUUsMHgyQSwweEJBLDB4RjcsMHhCNiwweEY2LDB4OTYsMHhFRSwweEEyLDB4OEEs
MHhFMiwweDYzLAorICAgIDB4NzYsMHhFRSwweEQzLDB4RDUsMHg1QywweDU4LDB4N0UsMHg1Qyww
eDE0LDB4RTYsMHhEMywweEQ1LDB4QUIsMHgyRCwweDJGLDB4QTUsCisgICAgMHg1NSwweEVFLDB4
MTQsMHhFNiwweDBCLDB4OEIsMHg4QiwweDA5LDB4NzUsMHhFRSwweDM1LDB4RTYsMHhGMywweEJG
LDB4QkYsMHhBQiwKKyAgICAweDc1LDB4RUUsMHhCMiwweEQ1LDB4NzgsMHg3OCwweDdFLDB4N0Es
MHhGMywweERELDB4OTIsMHhENSwweDM1LDB4QUQsMHhCNSwweEJELAorICAgIDB4MzQsMHhFNiww
eEQzLDB4REQsMHg4QiwweEVCLDB4N0IsMHg3QiwweEQ0LDB4REQsMHgzMCwweEM1LDB4MjgsMHhC
QywweEZDLDB4NTcsCisgICAgMHgxNCwweEU2LDB4NzEsMHhDRCwweDAwLDB4MkIsMHhBRCwweEY1
LDB4MTQsMHhFNiwweDkyLDB4RDUsMHhFMCwweENBLDB4RTIsMHg0QSwKKyAgICAweDUxLDB4Q0Qs
MHgyRCwweEFDLDB4RjgsMHhGQywweEZDLDB4REMsMHg3MiwweEQ1LDB4RDAsMHhCQywweDhELDB4
MkQsMHhBRCwweDJELAorICAgIDB4NzIsMHhDRCwweDEwLDB4QzUsMHhFMCwweEEwLDB4ODgsMHg2
MCwweDUxLDB4Q0QsMHgxMSwweEM1LDB4QjMsMHg4RiwweEJGLDB4RjksCisgICAgMHg3MSwweENE
LDB4MzEsMHhDNSwweEFELDB4M0YsMHhFRCwweEY3LDB4QjMsMHhENSwweDcyLDB4RDUsMHg5NSww
eEFELDB4RUYsMHhBNSwKKyAgICAweEIzLDB4RDUsMHg1MSwweEQ1LDB4QkEsMHgyMiwweDIyLDB4
MEEsMHgxNCwweEU2LDB4QjMsMHhENSwweDlELDB4QUQsMHhCRiwweEFELAorICAgIDB4RjQsMHhE
RCwweEIzLDB4REQsMHhCOCwweDM4LDB4QjIsMHhERSwweDM1LDB4RTYsMHhEMywweERELDB4MkIs
MHhBRiwweERCLDB4NzcsCisgICAgMHhDRSwweEJDLDB4RTgsMHg4MiwweDJCLDB4RjUsMHg1NSww
eDU1LDB4MTQsMHhFNiwweDI5LDB4OEIsMHgwMiwweEJGLDB4NzUsMHg1NSwKKyAgICAweDk1LDB4
RUUsMHg4QSwweDkzLDB4MDAsMHgwMiwweEJELDB4NTUsMHg5NSwweEVFLDB4NEQsMHhBQywweDAw
LDB4MDAsMHgwQSwweEI1LAorICAgIDB4QjYsMHhGNiwweDEzLDB4REUsMHgwMCwweDAwLDB4MDAs
MHgwRCwweEQ2LDB4RjYsMHhCNiwweEY2LDB4MDgsMHhBQSwweDhBLDB4NzUsCisgICAgMHgxNyww
eEZGLDB4QjYsMHhGNiwweEZGLDB4RkYsMHg5RCwweEQ3LDB4RDcsMHhGNiwweEI2LDB4RjYsMHgw
MCwweDA4LDB4QUEsMHhBRSwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEY2LDB4QUMsMHgyQSwweEFC
LDB4MDgsMHhGNywweEZFLDB4RDYsMHhGNiwweDU1LDB4NTUsMHhGRCwweEI3LAorICAgIDB4Rjcs
MHhGNiwweEQ2LDB4RjYsMHhCNSwweDlGLDB4NUIsMHg3RiwweEY3LDB4RjYsMHhENiwweEY2LDB4
NTcsMHg1NywweDM3LDB4RjUsCisgICAgMHhGNywweEY2LDB4RDYsMHhGNiwweEZCLDB4N0EsMHg3
RSwweDdBLDB4RjcsMHhGRSwweEQ2LDB4RjYsMHg1NSwweEY1LDB4QjcsMHhGRCwKKyAgICAweEY2
LDB4RjYsMHhENiwweEY2LDB4NUQsMHg3RCwweDZBLDB4NUEsMHhGNywweEY2LDB4RDYsMHhGNiww
eEQ1LDB4RDcsMHg1NywweDVGLAorICAgIDB4RjYsMHhGRSwweEQ2LDB4RjYsMHhFNywweEZGLDB4
NTcsMHg1OSwweEY2LDB4RjYsMHhCNywweEY2LDB4QUEsMHhFQiwweEFGLDB4RkYsCisgICAgMHhG
NywweEY2LDB4RDYsMHhGNiwweEE1LDB4QUYsMHgzRSwweEZGLDB4RjcsMHhGRSwweEQ2LDB4RjYs
MHg1NSwweDU3LDB4NUYsMHhGNywKKyAgICAweEQ2LDB4RjYsMHhCNiwweEY2LDB4QkMsMHhBQSww
eEEwLDB4MDgsMHhENiwweEY2LDB4QjYsMHhGNiwweDhFLDB4QTcsMHhBRiwweDBBLAorICAgIDB4
RDYsMHhGNiwweEI2LDB4RjYsMHhFQywweEY4LDB4ODgsMHgyMCwweEQ2LDB4RjYsMHhCNiwweEY2
LDB4QUIsMHhFQiwweENBLDB4QUEsCisgICAgMHhCNiwweEY2LDB4QjMsMHhENSwweDYwLDB4NjAs
MHg2MCwweDYwLDB4NkUsMHhCNCwweDYzLDB4NDksMHhGOCwweDc4LDB4NzgsMHg3OCwKKyAgICAw
eDg0LDB4NDksMHgyMywweDQxLDB4RTAsMHhGMCwweDc4LDB4N0EsMHg0MywweDQxLDB4RTIsMHgz
MCwweDc4LDB4RjgsMHg3RSwweEY1LAorICAgIDB4RTIsMHgzMCwweDgxLDB4MjgsMHhFQSwweDZB
LDB4NTgsMHg3OCwweEExLDB4MjgsMHg0MCwweDIwLDB4MDgsMHgyMiwweEJDLDB4QjcsCisgICAg
MHhDMiwweDI4LDB4ODEsMHgyMCwweEJGLDB4MjUsMHgyNSwweDBELDB4RTIsMHgzMCwweEExLDB4
MjgsMHgwQSwweDBCLDB4QUQsMHgzRiwKKyAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4RUEsMHhG
QSwweEZCLDB4RTksMHgwMiwweDM5LDB4QzIsMHgzMCwweDhGLDB4QUYsMHhBQiwweDhBLAorICAg
IDB4NDQsMHg0OSwweEUyLDB4MzgsMHgwOSwweDBGLDB4QUYsMHgyRCwweDI2LDB4NzIsMHg2NCww
eDUxLDB4MkQsMHgzRCwweDBELDB4MkQsCisgICAgMHgyOSwweDkzLDB4ODcsMHg3QSwweDI5LDB4
MEQsMHhCRiwweEI1LDB4MkEsMHg5MywweEE4LDB4ODIsMHhFOCwweEIyLDB4NzgsMHg2QSwKKyAg
ICAweDg4LDB4N0EsMHg0NCwweDQ5LDB4RjgsMHg3OCwweDc4LDB4N0EsMHg0NCwweDQ5LDB4RTIs
MHgzOCwweEI4LDB4NzgsMHg3OCwweDVDLAorICAgIDB4MDIsMHgzOSwweEMyLDB4MzgsMHhBQyww
eEI2LDB4RDcsMHhERiwweDQ0LDB4NDksMHhFMywweDM4LDB4MkQsMHgyNywweDJELDB4MjksCisg
ICAgMHgwNSwweDYyLDB4NDMsMHg0OSwweDhCLDB4M0QsMHhCNSwweEZELDB4MjYsMHg2QSwweEE1
LDB4NTEsMHgwQSwweEFCLDB4QTUsMHgyRCwKKyAgICAweDg3LDB4NzIsMHgwNiwweDYyLDB4M0Is
MHhBRiwweDBELDB4QkYsMHgwOSwweDhCLDB4NjYsMHg3MiwweDNELDB4QkQsMHhFRCwweEZGLAor
ICAgIDB4MjksMHg5MywweEM4LDB4ODIsMHgwRSwweDJFLDB4RkQsMHhCNSwweEFCLDB4QUIsMHhF
OCwweDhBLDB4MDMsMHgyQiwweEFELDB4OTUsCisgICAgMHhBQiwweEEzLDB4NEEsMHg5QiwweDJB
LDB4QTAsMHhFQSwweDc1LDB4NkEsMHg5QiwweEM4LDB4ODIsMHhFMCwweEUwLDB4NzgsMHg3RSwK
KyAgICAweEE4LDB4ODIsMHg0NywweDcyLDB4RUEsMHhGQSwweEZFLDB4REUsMHhDOCwweDhBLDB4
NDYsMHg3QSwweEI3LDB4QkQsMHgwRiwweDBCLAorICAgIDB4NEEsMHg5MywweEE4LDB4ODIsMHhB
RCwweDJCLDB4MkIsMHgyQiwweDBDLDB4QUMsMHg0QSwweDlCLDB4MEYsMHgwQiwweDJCLDB4QUQs
CisgICAgMHgyQywweEI0LDB4OEIsMHg5QiwweDVFLDB4NjgsMHg2OCwweDZBLDB4MkEsMHg5Myww
eDY2LDB4NzIsMHhBMCwweDc4LDB4NzgsMHg3OCwKKyAgICAweDZBLDB4OTMsMHgwNiwweDZBLDB4
MEEsMHhFRiwweEY1LDB4RDUsMHhGNCwweEU1LDB4ODcsMHg3QSwweDBCLDB4QkYsMHhGNSwweDU1
LAorICAgIDB4QjYsMHhGNiwweDg2LDB4NzIsMHgwMCwweDBBLDB4QkYsMHhENSwweEQ3LDB4RkUs
MHhDRSwweEJDLDB4MDAsMHgwMiwweDBCLDB4MkQsCisgICAgMHgxOCwweEZGLDB4RDcsMHhGRSww
eEEyLDB4MjIsMHhBMywweEVGLDB4RjcsMHhGRSwweDk2LDB4RjYsMHg4MCwweEYwLDB4N0EsMHhG
QSwKKyAgICAweEI2LDB4RjYsMHhENiwweEU2LDB4ODgsMHg4OCwweDA4LDB4MjAsMHhENiwweEY2
LDB4QjYsMHhFRSwweEFBLDB4Q0YsMHhFOSwweDdGLAorICAgIDB4MTgsMHhGRiwweEI2LDB4RUUs
MHhENSwweDk1LDB4QkQsMHgyRCwweDU5LDB4RkYsMHhGNywweEZFLDB4QUQsMHgyQiwweDIyLDB4
OEEsCisgICAgMHg1OSwweEZGLDB4MzgsMHhGRiwweEVBLDB4RkUsMHhGRiwweDdCLDB4NTksMHhG
RiwweDE4LDB4RkYsMHhBRSwweEZBLDB4RkEsMHhFRSwKKyAgICAweDM4LDB4RkYsMHg1NiwweEVF
LDB4RTAsMHhFOCwweEVBLDB4NzgsMHg5NiwweEVFLDB4NTUsMHhFNiwweEM4LDB4QUEsMHhFQiww
eEZGLAorICAgIDB4QjYsMHhGNiwweDM0LDB4RTYsMHgzRiwweEFGLDB4QkYsMHgzNSwweDE4LDB4
RkYsMHhENywweEY2LDB4QkQsMHgyRCwweEE1LDB4QUQsCisgICAgMHgxOCwweEZGLDB4RjgsMHhG
NiwweDBFLDB4MjIsMHgwQSwweDIzLDB4MzgsMHhGRiwweDE5LDB4RkYsMHhCRiwweEVCLDB4QkQs
MHhBRCwKKyAgICAweDM5LDB4RkYsMHgxOCwweEZGLDB4NUUsMHhERiwweERFLDB4N0UsMHgxOCww
eEZGLDB4RjgsMHhGNiwweEUyLDB4RTAsMHhBQSwweEI4LAorICAgIDB4MTgsMHhGRiwweEY4LDB4
RjYsMHg3NywweDU3LDB4NUQsMHg1RCwweDE4LDB4RkYsMHhGOCwweEY2LDB4NUYsMHg3RiwweEVG
LDB4RUYsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEVELDB4RkIsMHhCQiwweEZELDB4MTgs
MHhGRiwweEY4LDB4RjYsMHhFQSwweEVCLDB4RTksMHhGNywKKyAgICAweDE4LDB4RkYsMHhGOCww
eEY2LDB4QUEsMHhBQSwweEVGLDB4QUEsMHgxOCwweEZGLDB4RjgsMHhGNiwweEZFLDB4REUsMHhG
RSwweDVFLAorICAgIDB4RjgsMHhGNiwweEQ3LDB4RjYsMHg2MCwweDcwLDB4NUMsMHg3OSwweEQ3
LDB4RjYsMHhCNywweEVFLDB4MkYsMHgwQiwweDJBLDB4MEUsCisgICAgMHhGOCwweEY2LDB4QjYs
MHhFRSwweDZFLDB4RUEsMHg4QSwweEFBLDB4RjcsMHhGNiwweEI2LDB4RUUsMHg5RiwweEJCLDB4
QUEsMHhCMiwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4N0UsMHhFOCwweDJBLDB4MEEsMHhG
NywweEZFLDB4RDYsMHhFRSwweDJELDB4MkYsMHhCRCwweEFGLAorICAgIDB4MTgsMHhGRiwweEY3
LDB4RjYsMHg3RiwweDc3LDB4RkYsMHg3QiwweDE4LDB4RjcsMHhENywweEY2LDB4QkYsMHhGRiww
eEFGLDB4QUUsCisgICAgMHhGOCwweEZFLDB4MTgsMHhGNywweEZFLDB4RkUsMHhGRiwweEZBLDB4
MTgsMHhGRiwweEY3LDB4RjYsMHhFRSwweEJCLDB4QUUsMHhBRiwKKyAgICAweDE4LDB4RkYsMHhG
NywweEY2LDB4QUEsMHhBQSwweDIwLDB4QTIsMHgxOCwweEZGLDB4RjcsMHhGNiwweEU3LDB4OTcs
MHhENiwweEY3LAorICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHg3RCwweDVFLDB4NzYsMHg2Riww
eEQ3LDB4RkUsMHhGNywweEY2LDB4RjcsMHhGRiwweERGLDB4RjcsCisgICAgMHhGNywweEY2LDB4
OTYsMHhFRSwweEE4LDB4QkEsMHhGQSwweDdFLDB4RDcsMHhGNiwweDk2LDB4RUUsMHhCQSwweEZB
LDB4RkEsMHhGRiwKKyAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4QzAsMHhFMCwweERCLDB4NUYs
MHg5NiwweEVFLDB4NzYsMHhFRSwweDg4LDB4MjAsMHhBMywweEFELAorICAgIDB4OTYsMHhFRSww
eDc2LDB4RUUsMHhGRCwweDZFLDB4NzYsMHg1RiwweDc1LDB4RUUsMHg1NSwweEU2LDB4MkEsMHhF
OCwweDdBLDB4RUUsCisgICAgMHg3NiwweEVFLDB4NTUsMHhFNiwweENDLDB4RTcsMHhCNSwweEY1
LDB4NzYsMHhFRSwweDU1LDB4RTYsMHgwMCwweDhCLDB4MjIsMHgyQSwKKyAgICAweEI2LDB4RjYs
MHg3NiwweEVFLDB4QUYsMHg4OSwweEFELDB4MkQsMHhCNiwweEY2LDB4NzYsMHhFRSwweEFBLDB4
RTIsMHhGQSwweDZBLAorICAgIDB4OTYsMHhGNiwweDc2LDB4RUUsMHgzRSwweDBCLDB4MDksMHgy
QiwweEI2LDB4RjYsMHg3NiwweEVFLDB4OEEsMHhDMiwweENBLDB4NDgsCisgICAgMHg1NSwweEU2
LDB4OTIsMHhDRCwweDc4LDB4NUMsMHg1QywweDVBLDB4MTUsMHhFNiwweDkyLDB4RDUsMHgyRiww
eEFCLDB4QUQsMHhCNSwKKyAgICAweDU1LDB4RUUsMHhGNCwweEU1LDB4MkEsMHhBRiwweDA5LDB4
MkIsMHg3NiwweEVFLDB4NTUsMHhFRSwweERELDB4RjUsMHhEOSwweDVGLAorICAgIDB4NTUsMHhF
RSwweEIyLDB4RDUsMHg3OCwweDc4LDB4NkEsMHg3OCwweEQzLDB4REQsMHg5MiwweEQ1LDB4MEIs
MHgyOSwweDJFLDB4MkIsCisgICAgMHgxNCwweEU2LDB4QjIsMHhENSwweDYzLDB4NjMsMHg2QSww
eDYyLDB4OTIsMHhENSwweEYwLDB4QkMsMHhGRSwweERFLDB4N0UsMHg1QywKKyAgICAweDkyLDB4
RDUsMHhFRiwweEM0LDB4MkIsMHhCRCwweEI1LDB4RkYsMHhENCwweERELDB4NzEsMHhDRCwweENB
LDB4OEYsMHhDRiwweDg1LAorICAgIDB4NTEsMHhDRCwweDJELDB4QUMsMHhEQywweDVDLDB4REUs
MHhEQywweDUxLDB4Q0QsMHhBRiwweEI0LDB4ODksMHgyMSwweEE5LDB4MkQsCisgICAgMHg1MSww
eENELDB4RDAsMHhCQywweEUwLDB4RkEsMHhGNiwweERFLDB4NTEsMHhDRCwweEYwLDB4QzQsMHg5
RiwweDJELDB4MkYsMHhBOSwKKyAgICAweDcxLDB4RDUsMHgzMSwweEM1LDB4OUIsMHhBRCwweDNG
LDB4OUYsMHg5MiwweEQ1LDB4NTIsMHhDRCwweDJBLDB4OEIsMHgyQiwweEFGLAorICAgIDB4QjMs
MHhENSwweDkyLDB4RDUsMHhERiwweDM1LDB4MjUsMHg5NSwweEYzLDB4REQsMHhCMywweEQ1LDB4
QUQsMHhDOSwweEZCLDB4RkYsCisgICAgMHhEMywweERELDB4QjIsMHhENSwweDNELDB4QUQsMHg3
RCwweEZELDB4RDMsMHhERCwweDcxLDB4Q0QsMHgwOCwweEU4LDB4NzgsMHg1RSwKKyAgICAweEU4
LDB4ODIsMHhBNywweDdBLDB4MEUsMHg4MCwweDNBLDB4OTgsMHgwOCwweDgzLDB4QzgsMHg4Miww
eDI4LDB4QUUsMHhDQiwweDBGLAorICAgIDB4MjgsMHg4QiwweEM3LDB4N0EsMHgwQSwweEJCLDB4
RUYsMHhERiwweEVCLDB4OUIsMHhDNywweDdBLDB4MkIsMHhGRiwweDdGLDB4RDcsCisgICAgMHg5
MSwweEQ1LDB4MDgsMHg4MywweDBBLDB4RkQsMHg1NSwweDU1LDB4NzUsMHhFRSwweDQ5LDB4OEIs
MHgwMCwweDJCLDB4RjUsMHg1NSwKKyAgICAweDk1LDB4RUUsMHhFOCwweDgyLDB4MDAsMHgwMCww
eDJBLDB4QkQsMHhENiwweEY2LDB4NTAsMHhDRCwweDAwLDB4MDIsMHgyQSwweEJELAorICAgIDB4
RDYsMHhGNiwweDU0LDB4RUUsMHgwMCwweDA4LDB4ODIsMHhBRCwweEQ2LDB4RjYsMHhCNiwweEY2
LDB4MjgsMHgyMiwweDBBLDB4OEQsCisgICAgMHhGNywweEY2LDB4QjYsMHhGNiwweEFFLDB4MkYs
MHhFRiwweEJGLDB4RjcsMHhGRSwweEI2LDB4RjYsMHhCQiwweEJBLDB4RkUsMHg3QSwKKyAgICAw
eEQ2LDB4RjYsMHhCNiwweEY2LDB4MDAsMHg4MCwweEEzLDB4QUEsMHgxNiwweEY3LDB4QjYsMHhG
NiwweEVGLDB4REQsMHhGRiwweDU1LAorICAgIDB4RjcsMHhGRSwweEQ2LDB4RjYsMHg3RiwweDVE
LDB4RDUsMHg1RCwweEY2LDB4RjYsMHhENiwweEY2LDB4N0QsMHhENSwweEZELDB4NzcsCisgICAg
MHhGNywweEY2LDB4RDYsMHhGNiwweDU2LDB4RkUsMHg1RSwweDU3LDB4RDYsMHhGNiwweEI2LDB4
RjYsMHhFMCwweEIwLDB4MDAsMHgwMCwKKyAgICAweEY3LDB4RkUsMHhCNiwweEY2LDB4QkIsMHhG
RiwweEZCLDB4QUEsMHhENywweEY2LDB4RDYsMHhGNiwweEZELDB4RjUsMHhGRiwweEVFLAorICAg
IDB4RDcsMHhGNiwweEQ2LDB4RjYsMHhBRCwweEJGLDB4QkQsMHhGNSwweEI2LDB4RkUsMHhGNyww
eEY2LDB4RkEsMHhGQiwweEVFLDB4N0EsCisgICAgMHhGNiwweEY2LDB4RDYsMHhGNiwweDU3LDB4
QjcsMHhFRiwweEFCLDB4QjcsMHhGRSwweEY2LDB4RjYsMHhCQSwweEFGLDB4RkYsMHhFRiwKKyAg
ICAweEQ2LDB4RjYsMHhCMywweEQ1LDB4NjAsMHhFOCwweEMwLDB4QzAsMHhFRiwweEJDLDB4NDMs
MHg0OSwweDc4LDB4NzgsMHg3OCwweDc4LAorICAgIDB4NjQsMHg0OSwweDAyLDB4MzksMHhGQyww
eEZFLDB4N0IsMHhGRSwweDIzLDB4NDEsMHhFMiwweDM4LDB4N0QsMHg2RSwweEY4LDB4RTAsCisg
ICAgMHgyMywweDM5LDB4ODAsMHgyOCwweDdFLDB4RkEsMHhBQSwweDIyLDB4MDMsMHgzOSwweDYw
LDB4MjAsMHhENSwweEZGLDB4QkEsMHgyMCwKKyAgICAweDAyLDB4MzEsMHg4MSwweDIwLDB4QUQs
MHhBMSwweEJBLDB4QTgsMHgwMiwweDM5LDB4QzIsMHgzMCwweEJELDB4QUIsMHhBRiwweEFCLAor
ICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHg3RCwweEVGLDB4RUEsMHhDQiwweDAzLDB4MzksMHhD
MiwweDMwLDB4MkUsMHhCNywweEE3LDB4RkIsCisgICAgMHg4NCwweDU5LDB4RTMsMHgzOCwweEJE
LDB4QUQsMHgzNywweDI1LDB4ODcsMHg3QSwweDY0LDB4NTksMHhBRCwweDJELDB4MkYsMHgyRiwK
KyAgICAweEU5LDB4OEEsMHg4NywweDdBLDB4MDksMHhBOSwweEE5LDB4RjUsMHhFOSwweDhBLDB4
MDUsMHg2QSwweDgwLDB4ODAsMHhFMiwweDdCLAorICAgIDB4NDcsMHg3MiwweEUzLDB4MzgsMHhG
MCwweEU4LDB4RjgsMHg3RiwweDI0LDB4NDEsMHhBMSwweDMwLDB4RjAsMHhGQSwweDdDLDB4RkUs
CisgICAgMHhFMiwweDM4LDB4QzIsMHgzMCwweEZELDB4MkQsMHgzOSwweEJCLDB4NDQsMHg0OSww
eEMyLDB4MzgsMHg4RiwweDJGLDB4QUYsMHg2RCwKKyAgICAweEE1LDB4NTEsMHg4MSwweDI4LDB4
MDIsMHhBQSwweEZFLDB4NUQsMHhBNSwweDUxLDB4NjEsMHgyOCwweDAwLDB4QUEsMHhERiwweDc1
LAorICAgIDB4RTUsMHg2MSwweEEyLDB4MzAsMHgwMCwweEFCLDB4N0QsMHg1NSwweDQ2LDB4NkEs
MHhFMywweDQwLDB4MDAsMHgwQSwweEJELDB4RDUsCisgICAgMHhFOCwweDhBLDB4ODQsMHg1MSww
eDAyLDB4OEEsMHhBRiwweEJELDB4MjksMHg5MywweDg3LDB4N0EsMHgyQSwweEFCLDB4QkYsMHhC
NSwKKyAgICAweDRBLDB4OUIsMHhDOCwweDgyLDB4MDIsMHhBQiwweDdGLDB4NTUsMHgyQSwweDkz
LDB4NjcsMHg3QSwweDYwLDB4NjAsMHhFRSwweEVFLAorICAgIDB4QTgsMHg4MiwweDQ2LDB4N0Es
MHg5MywweEJGLDB4QjUsMHhBQSwweDA5LDB4OEIsMHg4NywweDdBLDB4NjUsMHgzRiwweDJGLDB4
QUQsCisgICAgMHg0QSwweDkzLDB4RTksMHg4QSwweEFGLDB4QTMsMHhFQSwweDdGLDB4NkEsMHg5
QiwweEM4LDB4ODIsMHgyQSwweEFGLDB4MzcsMHhCRCwKKyAgICAweENDLDB4QTMsMHhFOSwweDhB
LDB4QTAsMHhFRSwweDdFLDB4NUYsMHg0QiwweDkzLDB4QTgsMHg4MiwweDc4LDB4RTgsMHg2Miww
eDZGLAorICAgIDB4ODcsMHg3QSwweDA2LDB4NkEsMHhENywweEQ4LDB4NzgsMHhGOCwweDY3LDB4
NzIsMHhDNSwweDYxLDB4MEEsMHhBRSwweDVGLDB4N0EsCisgICAgMHg4NiwweDdBLDB4RTYsMHg2
MSwweDJBLDB4QTcsMHhCRCwweEQ1LDB4NTQsMHhFRSwweDI5LDB4OEIsMHgwRCwweDNELDB4MkQs
MHhCNSwKKyAgICAweEQ3LDB4RkUsMHg1NCwweEVFLDB4ODIsMHhBQiwweEFGLDB4QjUsMHhCNiww
eEY2LDB4OTYsMHhFRSwweDI4LDB4RkEsMHgzQywweDBBLAorICAgIDB4RDYsMHhGNiwweDk1LDB4
RUUsMHhFRiwweEJGLDB4RUEsMHhDMCwweEY3LDB4RjYsMHg5NiwweEVFLDB4N0UsMHhGRSwweEJG
LDB4MzUsCisgICAgMHgzOCwweEZGLDB4QjYsMHhGNiwweDJELDB4MEIsMHgwMiwweDAyLDB4NTks
MHhGRiwweDM5LDB4RkYsMHhBRCwweEVELDB4RkYsMHg1RCwKKyAgICAweDU4LDB4RkYsMHgzOSww
eEZGLDB4NUIsMHhENywweERGLDB4NzUsMHgzOSwweEZGLDB4RjcsMHhGRSwweEMwLDB4RTgsMHhG
OCwweDY4LAorICAgIDB4RjgsMHhGRSwweDc1LDB4RUUsMHg1OCwweDVDLDB4NUUsMHg1RiwweDc1
LDB4RUUsMHgzNSwweEU2LDB4RTIsMHhFMCwweEUyLDB4RUEsCisgICAgMHhENywweEY2LDB4MzQs
MHhFNiwweDM1LDB4QkQsMHhCRCwweDNELDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhBOSwweEE5LDB4
MkIsMHhBQiwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4MkIsMHgyRiwweDJGLDB4M0YsMHgz
OCwweEZGLDB4MTksMHhGRiwweEVGLDB4RUIsMHg2QiwweEZELAorICAgIDB4MzksMHhGRiwweDE4
LDB4RkYsMHhGRiwweEZELDB4RkQsMHhERCwweDE4LDB4RkYsMHhGOCwweEY2LDB4RjgsMHhBMCww
eEIwLDB4RjAsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweERBLDB4NkEsMHhCRSwweEY3LDB4
MTgsMHhGRiwweEY4LDB4RjYsMHhGRCwweDc3LDB4NTcsMHg3NywKKyAgICAweEY3LDB4RkUsMHhG
OCwweEY2LDB4RUYsMHhBRiwweEFELDB4RkYsMHgxOCwweEZGLDB4RjgsMHhGNiwweEJGLDB4REIs
MHhGNSwweEY3LAorICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhCQSwweDc3LDB4NUYsMHhERiww
eDE4LDB4RkYsMHhENywweEY2LDB4RTgsMHhCQSwweDdFLDB4NkUsCisgICAgMHhGOCwweEY2LDB4
RDcsMHhGNiwweDc1LDB4NzYsMHg1RCwweEVGLDB4RjgsMHhGNiwweEI2LDB4RUUsMHhBNywweDJG
LDB4MkEsMHhBQSwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4QUYsMHhCRiwweEFCLDB4Rjgs
MHhGNywweEY2LDB4RDcsMHhGNiwweEJBLDB4QUIsMHhBQiwweEVBLAorICAgIDB4RjcsMHhGNiww
eEQ3LDB4RjYsMHg1NywweEVGLDB4QUIsMHhBMywweEY4LDB4RjYsMHhENywweEY2LDB4QTUsMHhB
NywweDIyLDB4MEEsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweDZBLDB4QUIsMHg4RiwweEZG
LDB4MTcsMHhGRiwweEY3LDB4RjYsMHg3NSwweDU3LDB4NzUsMHg1RiwKKyAgICAweDE4LDB4RkYs
MHhGNywweEY2LDB4QkIsMHhGRCwweEJELDB4RkYsMHgxOCwweEZGLDB4RjcsMHhGNiwweEI3LDB4
QkQsMHhBRiwweEFCLAorICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhCQSwweEVFLDB4RkUsMHhC
QSwweDE4LDB4RkYsMHhGNywweEY2LDB4REYsMHg3RiwweEVBLDB4RUEsCisgICAgMHhENywweEZF
LDB4MTgsMHhGNywweEJGLDB4QUIsMHhBQiwweEFGLDB4RjcsMHhGNiwweDk4LDB4RUUsMHg4OCww
eEEwLDB4QUEsMHhCQSwKKyAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4RTgsMHhBQSwweDc4LDB4
N0UsMHhCNiwweEY2LDB4NzYsMHhFRSwweEE4LDB4QUEsMHhFQSwweEZBLAorICAgIDB4OTYsMHhF
RSwweDU2LDB4RUUsMHgwMCwweDgwLDB4OEEsMHhGRiwweDk2LDB4RUUsMHg1NSwweEU2LDB4QUIs
MHhBOCwweEZBLDB4RkYsCisgICAgMHg5NiwweEVFLDB4NTUsMHhFNiwweEE4LDB4QkEsMHhBRiww
eEZFLDB4NzUsMHhFRSwweDM1LDB4RTYsMHhBMiwweEUwLDB4QjgsMHhGRiwKKyAgICAweDU1LDB4
RUUsMHg3NiwweEU2LDB4QTAsMHhBQSwweEE4LDB4QUEsMHg5NiwweEVFLDB4NTUsMHhFNiwweEJE
LDB4QkQsMHhCRiwweEFGLAorICAgIDB4QjYsMHhGNiwweDc2LDB4RUUsMHgyOSwweDIzLDB4QUIs
MHgyQiwweEI2LDB4RjYsMHg3NiwweEVFLDB4RjgsMHhFOCwweEVBLDB4RkEsCisgICAgMHhCNiww
eEY2LDB4NzYsMHhFRSwweEFELDB4QkIsMHhBRCwweDJGLDB4QjcsMHhGNiwweDU1LDB4RTYsMHhB
MCwweEUyLDB4QzAsMHg0OCwKKyAgICAweDM1LDB4RTYsMHg1MiwweENELDB4RjgsMHhEQywweERF
LDB4NUEsMHhGNCwweERELDB4NTEsMHhDRCwweDJBLDB4QTksMHgzRCwweEFELAorICAgIDB4NTUs
MHhFRSwweEQzLDB4REQsMHgwQSwweDhCLDB4MkYsMHhBOSwweDc1LDB4RUUsMHgzNSwweEU2LDB4
RkEsMHhCRSwweEZCLDB4REIsCisgICAgMHgzNSwweEVFLDB4QjMsMHhENSwweDc4LDB4NTgsMHg3
QywweDdDLDB4RjQsMHhERCwweDkyLDB4RDUsMHhBQiwweDJGLDB4MkQsMHhBRiwKKyAgICAweDE0
LDB4RTYsMHhEMywweERELDB4NjIsMHhFMiwweEEyLDB4RTIsMHhGMywweERELDB4MTEsMHhDNSww
eDdFLDB4N0EsMHhGOCwweEEwLAorICAgIDB4NzEsMHhDRCwweDEwLDB4QzUsMHhGRCwweDdGLDB4
RDYsMHhEOCwweEIzLDB4RDUsMHgxMCwweEM1LDB4ODksMHhBQiwweEZELDB4QUQsCisgICAgMHgz
MCwweEM1LDB4NEQsMHhBQywweDVDLDB4NUMsMHg1RSwweDU0LDB4MzEsMHhDRCwweDhFLDB4QjQs
MHgyOSwweDhCLDB4MEQsMHgwRCwKKyAgICAweDMxLDB4Q0QsMHhEMCwweEJDLDB4RkYsMHg5RSww
eEFBLDB4QTgsMHgzMSwweEM1LDB4RjAsMHhDNCwweDBGLDB4MkIsMHhCQiwweEVCLAorICAgIDB4
NTEsMHhDRCwweDExLDB4QzUsMHgyOCwweEIyLDB4QkIsMHhGRSwweDkyLDB4RDUsMHg1MSwweENE
LDB4QUIsMHhFQiwweEFELDB4RkQsCisgICAgMHhCMywweEQ1LDB4NzIsMHhDRCwweDJCLDB4Mjcs
MHhBRiwweDM1LDB4RDMsMHhERCwweEIzLDB4RDUsMHg4RSwweEVCLDB4QUYsMHgwOSwKKyAgICAw
eEQzLDB4REQsMHg5MiwweEQ1LDB4RUUsMHg2NiwweDc4LDB4NjgsMHg5MiwweEQ1LDB4MzAsMHhD
RCwweEI4LDB4NUUsMHhGRiwweEQ3LAorICAgIDB4MDgsMHg4MywweEM3LDB4N0EsMHhCQywweEI2
LDB4OTYsMHhERiwweDA4LDB4ODMsMHhDOCwweDdBLDB4MkEsMHhGQSwweDVDLDB4QkEsCisgICAg
MHgyOSwweDhCLDB4QzgsMHg3QSwweEZFLDB4N0YsMHhCNiwweDhFLDB4MDgsMHg4MywweEM4LDB4
ODIsMHhGNiwweEU2LDB4RjIsMHhCRSwKKyAgICAweDA4LDB4ODMsMHhDNywweDdBLDB4QUEsMHg4
NSwweEVGLDB4MTgsMHgwOCwweDgzLDB4QzcsMHg4MiwweDAyLDB4QTMsMHgyRiwweDBFLAorICAg
IDB4OEEsMHg5MywweEU4LDB4ODIsMHgwQiwweDc3LDB4NTUsMHg1NywweENFLDB4QkMsMHgwOCww
eDgzLDB4MkIsMHhGNSwweDU1LDB4NTUsCisgICAgMHgxNCwweEU2LDB4MjgsMHg4QiwweDAyLDB4
QUYsMHhENSwweDU1LDB4OTYsMHhFRSwweDI5LDB4OEIsMHgwMCwweDAyLDB4QkYsMHhENSwKKyAg
ICAweEI2LDB4RjYsMHg0RSwweEFDLDB4MDAsMHgwMCwweDBBLDB4QkQsMHhENiwweEY2LDB4RjMs
MHhFNSwweDAwLDB4MDAsMHgwQSwweEFELAorICAgIDB4RDYsMHhGNiwweEI1LDB4RjYsMHhBOCww
eEFBLDB4QUEsMHhGNSwweEQ2LDB4RjYsMHhCNiwweEY2LDB4RjcsMHhGRiwweEZELDB4NzcsCisg
ICAgMHhENiwweEY2LDB4QjYsMHhGNiwweEEyLDB4RUUsMHg3QiwweEY5LDB4RDYsMHhGNiwweEI2
LDB4RjYsMHgwQywweDJCLDB4OEEsMHhFOCwKKyAgICAweEQ3LDB4RkUsMHhENiwweEY2LDB4RDcs
MHhERiwweDdELDB4RDcsMHhGNywweEZFLDB4RDYsMHhGNiwweEVGLDB4RUQsMHhFOSwweEZELAor
ICAgIDB4RjcsMHhGRSwweEQ2LDB4RjYsMHhGRiwweERGLDB4N0YsMHhERiwweEY2LDB4RkUsMHhE
NywweEY2LDB4RkQsMHhGNSwweDU3LDB4NUQsCisgICAgMHhGNywweEZFLDB4RDYsMHhGNiwweDU1
LDB4NUYsMHg1RiwweDdGLDB4RjcsMHhGRSwweEI2LDB4RjYsMHhBRiwweEFGLDB4QkYsMHhCRiwK
KyAgICAweEY2LDB4RkUsMHhENiwweEY2LDB4QUYsMHhCQiwweDk1LDB4RjcsMHhGNywweEZFLDB4
QjYsMHhGNiwweEJFLDB4RUUsMHhERSwweEZFLAorICAgIDB4RDYsMHhGNiwweDU0LDB4RUUsMHg2
MCwweEMwLDB4QTAsMHg4MCwweEYyLDB4REQsMHhDNCwweDU5LDB4NzgsMHg1OCwweDc4LDB4Rjgs
CisgICAgMHg4NCwweDQ5LDB4MDIsMHgzOSwweERGLDB4NUYsMHhGRiwweEYwLDB4NDMsMHg0MSww
eEUyLDB4MzgsMHgyQSwweDBCLDB4QTUsMHhCRiwKKyAgICAweDg0LDB4NDksMHgyMywweDM5LDB4
NTksMHg4QSwweEFCLDB4RkQsMHg2NCwweDQ5LDB4MDIsMHgzOSwweDVGLDB4QkUsMHhBOCwweDJB
LAorICAgIDB4ODUsMHg0OSwweEUyLDB4MzAsMHg1NywweDU3LDB4N0EsMHhFOCwweDQzLDB4NDEs
MHhFMiwweDMwLDB4NzUsMHhGRCwweEFBLDB4QTAsCisgICAgMHgyMywweDQxLDB4RTIsMHgzOCww
eEVELDB4QkIsMHg3QiwweDVDLDB4MDMsMHgzOSwweEMyLDB4MzgsMHhCQSwweEJDLDB4QjgsMHgy
OCwKKyAgICAweEU1LDB4NjksMHgyMywweDQxLDB4QjUsMHhCNSwweEFELDB4QUQsMHg0NywweDdB
LDB4QzQsMHg2MSwweDA5LDB4MjksMHgwMywweDgzLAorICAgIDB4NjcsMHg3QSwweDA2LDB4NzIs
MHgwMCwweEEwLDB4QTgsMHg0MywweDQ2LDB4NzIsMHg4NCwweDU5LDB4ODAsMHhDOCwweEVBLDB4
N0UsCisgICAgMHg4NCwweDU5LDB4RTMsMHgzOCwweDU4LDB4RTgsMHg2OCwweEU4LDB4MjQsMHg0
MSwweEMyLDB4MzgsMHg1NSwweDdBLDB4QTIsMHg2MCwKKyAgICAweDAzLDB4MzksMHhDMiwweDMw
LDB4RkYsMHhCRiwweDdGLDB4NjUsMHhFMiwweDM4LDB4QTEsMHgyOCwweDVBLDB4RjgsMHhGQSww
eDc4LAorICAgIDB4QzIsMHgzMCwweDYxLDB4MjgsMHg3QSwweEJFLDB4QkEsMHhBOCwweEEyLDB4
MzAsMHg4MiwweDI4LDB4RTUsMHgwRiwweDBCLDB4MDIsCisgICAgMHhDMiwweDM4LDB4QTIsMHgz
MCwweDI5LDB4MjgsMHgzRiwweDI1LDB4NDQsMHg0OSwweEUzLDB4MzgsMHhCRCwweEFGLDB4QUQs
MHg5NSwKKyAgICAweEM1LDB4NjEsMHgyMywweDQ5LDB4MDksMHhCRCwweEQ1LDB4REQsMHhDOCww
eDgyLDB4ODQsMHg1OSwweDBCLDB4MkYsMHhBRCwweEI1LAorICAgIDB4QzgsMHg4MiwweDY3LDB4
N0EsMHgyQywweEFBLDB4QkQsMHhGNSwweDA5LDB4OTMsMHg4NywweDgyLDB4RkYsMHhGNywweEFE
LDB4MjUsCisgICAgMHhFOSwweDhBLDB4ODcsMHg3QSwweEZCLDB4MEEsMHhDQiwweDYwLDB4RTgs
MHg4QSwweDg4LDB4N0EsMHhBRiwweEIxLDB4REQsMHg3RCwKKyAgICAweEU5LDB4OEEsMHg4Nyww
eDdBLDB4MDAsMHgwQiwweEY3LDB4RjYsMHgyQSwweDkzLDB4QzksMHg4MiwweDI5LDB4MkQsMHhC
OSwweDE1LAorICAgIDB4MkEsMHg5MywweDQ2LDB4NzIsMHhFOCwweDc4LDB4NzgsMHg3OCwweDI5
LDB4OEIsMHgwNiwweDZBLDB4OEEsMHhGRCwweEQ1LDB4NzUsCisgICAgMHg4NywweDdBLDB4RTUs
MHg2OSwweEU4LDB4QkEsMHgyRiwweEJELDB4QzgsMHg4MiwweEM1LDB4NjEsMHg3RiwweEUyLDB4
QTIsMHgwQSwKKyAgICAweDY3LDB4NzIsMHhDNSwweDYxLDB4RDUsMHhENywweEZFLDB4ODAsMHg2
RSwweEI0LDB4MjYsMHg3MiwweDJELDB4QjUsMHhGNSwweERELAorICAgIDB4OTYsMHhGNiwweEND
LDB4QTMsMHgwMiwweDBCLDB4MkQsMHhCNSwweEQ3LDB4RkUsMHg5NiwweEY2LDB4MkQsMHgwQSww
eDBBLDB4MkQsCisgICAgMHhGNywweEZFLDB4OTYsMHhFRSwweDZBLDB4NzgsMHhGQSwweEFBLDB4
MzgsMHhGRiwweDk1LDB4RUUsMHhBRCwweDI5LDB4MEIsMHgwMiwKKyAgICAweDU4LDB4RkYsMHgz
OSwweEZGLDB4NzUsMHg1RCwweDU3LDB4NTcsMHgzOSwweEZGLDB4MTgsMHhGRiwweDAwLDB4MDAs
MHgwMCwweDNBLAorICAgIDB4MzksMHhGRiwweDE4LDB4RkYsMHg4MCwweEEwLDB4RjgsMHhGQSww
eDU5LDB4RkYsMHhCNiwweEVFLDB4NkEsMHg2QSwweDdBLDB4N0UsCisgICAgMHg5NiwweEVFLDB4
NTUsMHhFRSwweEQ4LDB4N0UsMHg3NiwweDU3LDB4NzYsMHhFRSwweDM1LDB4RTYsMHhFMiwweDY4
LDB4NUEsMHg1RSwKKyAgICAweEQ3LDB4RjYsMHgzNSwweEU2LDB4MjUsMHgyRCwweDJELDB4M0Ys
MHgxOCwweEZGLDB4RjgsMHhGNiwweDM3LDB4OUIsMHhBOSwweEVELAorICAgIDB4MTgsMHhGRiww
eEY4LDB4RjYsMHgzRiwweDJFLDB4MkUsMHgwRSwweDM5LDB4RkYsMHgxOCwweEZGLDB4N0YsMHg3
OSwweEJGLDB4OUUsCisgICAgMHgxOCwweEZGLDB4M0EsMHhGNywweDgwLDB4MDIsMHgyMiwweDJB
LDB4MTgsMHhGRiwweEY4LDB4RjYsMHhFOCwweEYyLDB4RTgsMHhGQSwKKyAgICAweDE4LDB4RkYs
MHhGOCwweEY2LDB4NzYsMHg1RCwweEY3LDB4NzcsMHgxOCwweEZGLDB4RjgsMHhGNiwweDdGLDB4
NjYsMHg3NywweEY1LAorICAgIDB4MTcsMHhGRiwweEY4LDB4RjYsMHg3RiwweDc3LDB4RkQsMHhG
RCwweDE3LDB4RkYsMHhGOCwweEY2LDB4RjcsMHhFRCwweERGLDB4N0YsCisgICAgMHgxNywweEZG
LDB4RjgsMHhGNiwweEZGLDB4RjcsMHg1RCwweEY3LDB4MTgsMHhGRiwweEY3LDB4RjYsMHg1Nyww
eDc1LDB4NkYsMHg1RiwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4N0EsMHg2MiwweEUwLDB4
RUMsMHhGNywweEY2LDB4RDcsMHhGNiwweDM1LDB4QUQsMHg1RCwweEY5LAorICAgIDB4RjcsMHhG
NiwweEQ3LDB4RjYsMHhFQSwweEVBLDB4RjcsMHg2RiwweEY4LDB4RjYsMHhENywweEY2LDB4QUYs
MHg5RCwweDBELDB4MEQsCisgICAgMHgxNywweEZGLDB4RjgsMHhGNiwweEQ1LDB4RjUsMHhERiww
eERCLDB4MTgsMHhGRiwweEY4LDB4RjYsMHg1NywweDdELDB4QkQsMHhGNywKKyAgICAweDE4LDB4
RkYsMHhGOCwweEY2LDB4RUYsMHhGOSwweEZCLDB4M0QsMHgxOCwweEZGLDB4RjcsMHhGNiwweDVE
LDB4NUEsMHg3RSwweEVBLAorICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHhFRCwweEI5LDB4RUQs
MHg5NywweDE4LDB4RkYsMHhGOCwweEY2LDB4QUEsMHhBQiwweEZELDB4RkYsCisgICAgMHgxOCww
eEZGLDB4RjcsMHhGNiwweEFFLDB4ODIsMHhBRSwweEZFLDB4RjgsMHhGRSwweDE4LDB4RjcsMHhC
RiwweDJCLDB4MkYsMHgyRSwKKyAgICAweEY4LDB4RjYsMHhENywweEY2LDB4RjAsMHg1MiwweDU4
LDB4NUEsMHhENywweEY2LDB4OTcsMHhFRSwweEUwLDB4NjgsMHhFMCwweEE4LAorICAgIDB4Qjcs
MHhGNiwweDc2LDB4RUUsMHhBMCwweEYwLDB4RkMsMHg3QSwweDk2LDB4RUUsMHg3NiwweEVFLDB4
QjgsMHg2OCwweEY4LDB4NUYsCisgICAgMHg5NiwweEVFLDB4NTUsMHhFNiwweDdFLDB4NUUsMHhG
QSwweEJBLDB4NzYsMHhFRSwweDM1LDB4RTYsMHhBRiwweEZGLDB4RkYsMHhDMCwKKyAgICAweDc2
LDB4RUUsMHgzNSwweEU2LDB4RkEsMHg1RiwweDU3LDB4RkYsMHg1NSwweEU2LDB4MzUsMHhFNiww
eDlFLDB4RDgsMHgwMiwweDgzLAorICAgIDB4NzUsMHhFRSwweDU1LDB4RTYsMHhEOSwweERELDB4
RkYsMHg1RCwweDk2LDB4RUUsMHg1NSwweEU2LDB4QkQsMHhCNywweDM3LDB4QUQsCisgICAgMHg5
NiwweEY2LDB4QjcsMHhFRSwweEU4LDB4RkUsMHhFRSwweEJBLDB4QjcsMHhGNiwweDc2LDB4RUUs
MHhFOCwweEZDLDB4RkUsMHg1RiwKKyAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4RTUsMHhBRCww
eENELDB4RkQsMHhCNiwweEY2LDB4NTUsMHhFNiwweDZBLDB4N0EsMHg3MiwweDdBLAorICAgIDB4
RjQsMHhERCwweDcyLDB4Q0QsMHg1QywweDVDLDB4NUMsMHg3OCwweEQzLDB4REQsMHg3MiwweENE
LDB4MjUsMHgzRCwweEFGLDB4RTksCisgICAgMHgzNSwweEU2LDB4RDMsMHhERCwweDJCLDB4MkIs
MHgyRCwweEFELDB4NTUsMHhFRSwweDE0LDB4RTYsMHhFQSwweEVBLDB4RUIsMHhBRiwKKyAgICAw
eDM1LDB4RTYsMHhCMywweEQ1LDB4NUEsMHhEQSwweDdBLDB4NzgsMHhGNCwweERELDB4QjMsMHhE
NSwweEJELDB4MkQsMHgzOSwweDJGLAorICAgIDB4MTQsMHhFNiwweEQzLDB4REQsMHhGMywweEE4
LDB4RTIsMHg2MCwweEY0LDB4REQsMHg5MiwweEQ1LDB4RTIsMHhBQSwweDgwLDB4ODAsCisgICAg
MHhEMywweERELDB4MzEsMHhDRCwweDVFLDB4RkUsMHhBOCwweDAwLDB4OTIsMHhENSwweEYwLDB4
QkMsMHhCRiwweEY3LDB4NzgsMHg2MCwKKyAgICAweDEwLDB4QzUsMHg0RSwweEFDLDB4NUMsMHg1
RSwweDU2LDB4NTcsMHgzMiwweENELDB4OEYsMHhCNCwweDJELDB4MkQsMHgwRCwweDA5LAorICAg
IDB4NTIsMHhDRCwweDExLDB4QzUsMHg1QSwweERBLDB4REUsMHg3QywweDMxLDB4QzUsMHhEMCww
eEM0LDB4QUEsMHgyOCwweDJCLDB4MEEsCisgICAgMHg1MSwweENELDB4MTAsMHhDNSwweEVBLDB4
QUEsMHhEQSwweEVGLDB4NzIsMHhENSwweDUxLDB4Q0QsMHhBRCwweDM1LDB4NTUsMHg1NSwKKyAg
ICAweEIzLDB4RDUsMHg3MiwweENELDB4MTUsMHgyQiwweDNELDB4QkQsMHgzNCwweEU2LDB4RDMs
MHhERCwweEVCLDB4QTksMHhDOSwweEVELAorICAgIDB4RDMsMHhERCwweDEwLDB4QzUsMHhBMCww
eEUwLDB4RTAsMHg3OCwweDUxLDB4Q0QsMHgxMCwweEM1LDB4QkMsMHhCRiwweEY1LDB4RkYsCisg
ICAgMHhFOCwweDgyLDB4QzgsMHg3QSwweERBLDB4OUUsMHg4MCwweEMyLDB4RTgsMHg4MiwweEE3
LDB4N0EsMHhEQSwweDJGLDB4MDYsMHgzRiwKKyAgICAweDA4LDB4ODMsMHhDOCwweDdBLDB4QkUs
MHhFRiwweEVELDB4QTcsMHhFOCwweDgyLDB4QzgsMHg3QSwweDI4LDB4M0YsMHg2NSwweDdBLAor
ICAgIDB4MDgsMHg4MywweEE3LDB4N0EsMHg2OCwweEUyLDB4OEYsMHhGNSwweDA4LDB4ODMsMHhD
NywweDgyLDB4RUYsMHg3QSwweEVGLDB4NzcsCisgICAgMHgwOSwweDhCLDB4QTcsMHg3QSwweEJC
LDB4QjcsMHgzRCwweEZGLDB4MDgsMHg4QiwweEM4LDB4ODIsMHhBQywweDdDLDB4Q0YsMHhFRiwK
KyAgICAweDI5LDB4OEIsMHhDNywweDgyLDB4QTcsMHhFQiwweEU5LDB4NzUsMHgyOSwweDhCLDB4
QTcsMHg3QSwweDg5LDB4NkEsMHhGOSwweDVBLAorICAgIDB4MkMsMHhBNCwweEM4LDB4ODIsMHgy
RiwweEZELDB4NTUsMHg1NSwweDkwLDB4RDUsMHgwNywweDgzLDB4MEEsMHhCRCwweDU1LDB4NTUs
CisgICAgMHg1NCwweEVFLDB4NDksMHg4QiwweDAwLDB4MkEsMHhCNSwweDU1LDB4OTYsMHhGNiww
eDhBLDB4OUIsMHgwMCwweDAwLDB4MkIsMHhGNSwKKyAgICAweEI2LDB4RjYsMHg3MiwweEQ1LDB4
MDAsMHgwMCwweDBBLDB4QkQsMHhENiwweEY2LDB4NzYsMHhGNiwweEEwLDB4OEEsMHgyQSwweEI1
LAorICAgIDB4RDYsMHhGNiwweEI2LDB4RjYsMHgyOSwweEJELDB4RkYsMHg1NSwweEY3LDB4RjYs
MHhCNiwweEY2LDB4RUIsMHhGRiwweEZGLDB4RDUsCisgICAgMHhCNywweEZFLDB4RDYsMHhGNiww
eEQ1LDB4RDUsMHg3NywweERELDB4RjcsMHhGRSwweEI2LDB4RjYsMHhCRiwweEFCLDB4QUYsMHhG
QiwKKyAgICAweEY3LDB4RkUsMHhENywweEY2LDB4NTUsMHg1NywweDdGLDB4NTUsMHhGNywweEZF
LDB4QjYsMHhGNiwweDlFLDB4QkYsMHhBRSwweEJBLAorICAgIDB4RDYsMHhGRSwweEY3LDB4RjYs
MHhFQSwweEZFLDB4RkIsMHhFQSwweEY3LDB4RkUsMHhENywweEY2LDB4NzcsMHg1RiwweDdELDB4
N0IsCisgICAgMHhCNiwweEZFLDB4RDYsMHhGNiwweDk1LDB4QjUsMHg1NywweDU1LDB4QjUsMHhG
NiwweDI5LDB4ODMsMHg3OCwweDc4LDB4NzgsMHhFOCwKKyAgICAweDQ2LDB4NkEsMHg0NCwweDQ5
LDB4NUYsMHhGRSwweERDLDB4REMsMHhBNSwweDUxLDB4MDIsMHg0MSwweERGLDB4RkMsMHhBMiww
eEM4LAorICAgIDB4ODQsMHg1MSwweDIzLDB4NDEsMHg1NSwweDU1LDB4REYsMHg4MCwweDg0LDB4
NTEsMHgwMywweDM5LDB4RjcsMHhGRCwweEFGLDB4MDIsCisgICAgMHg4NSwweDQ5LDB4MDMsMHg0
MSwweEZBLDB4N0IsMHg2QSwweEY4LDB4NDQsMHg0MSwweEUyLDB4MzgsMHg4QSwweEFCLDB4RkIs
MHhERiwKKyAgICAweDIzLDB4NDEsMHhDMiwweDM4LDB4RUMsMHhBRSwweDI5LDB4MjksMHg0NCww
eDQ5LDB4RTIsMHgzOCwweEZELDB4QkYsMHhCRSwweDNCLAorICAgIDB4RTUsMHg2OSwweDIzLDB4
NDksMHgyRiwweEJELDB4QkYsMHgyQiwweDY3LDB4N0EsMHhFNSwweDY5LDB4QUIsMHg4QiwweDJE
LDB4QUIsCisgICAgMHg0NywweDcyLDB4RTQsMHg2OSwweDZFLDB4N0UsMHg3RSwweEUwLDB4RTUs
MHg2OSwweDQ0LDB4NTEsMHhGOCwweEY4LDB4NzgsMHg3OCwKKyAgICAweDY0LDB4NTEsMHgwNCww
eDQxLDB4RjgsMHhERSwweEVBLDB4RTIsMHg0NCwweDQ5LDB4RTMsMHgzOCwweDdBLDB4REMsMHhG
MiwweDY4LAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBQiwweEE4LDB4RjgsMHg1NywweDAz
LDB4MzksMHhBMSwweDMwLDB4NjgsMHhFQSwweEVGLDB4ODMsCisgICAgMHhFMiwweDMwLDB4ODEs
MHgyOCwweEVGLDB4QkUsMHhGQSwweDc4LDB4QzIsMHgzMCwweDgxLDB4MjgsMHhCNywweEZBLDB4
N0EsMHg3NSwKKyAgICAweEMyLDB4MzAsMHg4MSwweDI4LDB4MkIsMHgzRSwweEI1LDB4RTUsMHg0
NCwweDQ5LDB4QTIsMHgzMCwweEJGLDB4QUYsMHhCRiwweDJELAorICAgIDB4ODQsMHg1OSwweDAz
LDB4NDEsMHhBRiwweDI3LDB4MzUsMHhCNywweEE5LDB4ODIsMHg4NSwweDU5LDB4M0QsMHgzRiww
eDJGLDB4MjksCisgICAgMHhFOSwweDgyLDB4NjcsMHg3QSwweDc1LDB4N0YsMHhBQSwweDAyLDB4
MDksMHg4QiwweDY3LDB4NzIsMHgwRiwweEFGLDB4OUYsMHg1NywKKyAgICAweDBBLDB4OTMsMHg4
NywweDdBLDB4QzAsMHhFQSwweEUzLDB4RDUsMHhDOCwweDgyLDB4NjcsMHg3MiwweDJCLDB4MUYs
MHgyRSwweEIzLAorICAgIDB4RTksMHg4MiwweDg4LDB4ODIsMHg5RSwweEZFLDB4OEUsMHg4Qiww
eEU5LDB4ODIsMHg4NywweDdBLDB4M0EsMHhFQSwweDY4LDB4NzAsCisgICAgMHhFOSwweDhBLDB4
QzUsMHg2MSwweEE4LDB4QUEsMHhGRSwweDVGLDB4NDcsMHg3MiwweEE1LDB4NTksMHg2OCwweDU4
LDB4NUYsMHg1NywKKyAgICAweDY3LDB4NzIsMHhBNSwweDYxLDB4M0QsMHgyNSwweDJELDB4MEQs
MHgwOCwweDhCLDB4ODYsMHg3QSwweEJELDB4QUQsMHgyQSwweEE5LAorICAgIDB4RTgsMHg4Miww
eDY3LDB4N0EsMHhGRSwweEVBLDB4NkEsMHhFOCwweEM4LDB4ODIsMHgyNywweDcyLDB4MkYsMHhC
NywweEFGLDB4MkUsCisgICAgMHgyRSwweEE0LDB4QzksMHg4MiwweDNGLDB4OTUsMHhENSwweDU1
LDB4NzYsMHhFRSwweDBBLDB4OEIsMHgwMiwweDJGLDB4QUQsMHhGNSwKKyAgICAweDM4LDB4RkYs
MHgxNCwweEU2LDB4MkEsMHg4QSwweDBCLDB4MkQsMHgzOSwweEZGLDB4MTgsMHhGRiwweDg5LDB4
MkIsMHgyQSwweEEyLAorICAgIDB4MzksMHhGRiwweDM4LDB4RkYsMHhBMiwweEFBLDB4QTgsMHhB
QSwweDM5LDB4RkYsMHgxOCwweEZGLDB4QUEsMHhBQywweEJBLDB4RkMsCisgICAgMHgzOCwweEZG
LDB4MTgsMHhGRiwweDdBLDB4N0EsMHhFRSwweEZBLDB4MTgsMHhGRiwweDc1LDB4RUUsMHg2OCww
eDc4LDB4N0MsMHg1QywKKyAgICAweDc2LDB4RUUsMHg1NSwweEU2LDB4NzYsMHg1RiwweDJFLDB4
QUUsMHg3NiwweEVFLDB4MTQsMHhERSwweEYyLDB4RkEsMHhGQSwweERFLAorICAgIDB4RDcsMHhG
NiwweDU1LDB4RTYsMHgyRCwweDJELDB4MkIsMHgwOSwweEY4LDB4RkUsMHgxOCwweEY3LDB4RUMs
MHhCOCwweEFDLDB4RUEsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweDJGLDB4M0QsMHgwNSww
eDI5LDB4MzksMHhGRiwweDE4LDB4RkYsMHg5RiwweEZGLDB4NUQsMHhERCwKKyAgICAweDE4LDB4
RkYsMHgzOSwweEY3LDB4MkEsMHg4MiwweDIyLDB4MDIsMHgxOCwweEZGLDB4RjgsMHhGNiwweEVB
LDB4QUUsMHhBQSwweEEyLAorICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhENSwweDdGLDB4N0Es
MHhFRiwweEY4LDB4RkUsMHgxOCwweEY3LDB4QTgsMHhBOCwweEFBLDB4ODIsCisgICAgMHgxOCww
eEZGLDB4RjgsMHhGNiwweEY3LDB4N0QsMHg1RiwweDdGLDB4MTksMHhGRiwweEY3LDB4RjYsMHg3
RiwweDVGLDB4NzUsMHg3NSwKKyAgICAweEY4LDB4RkUsMHgxOCwweEY3LDB4QUEsMHhFQSwweDhB
LDB4MkEsMHgxOCwweEZGLDB4RDcsMHhGNiwweEVBLDB4N0EsMHhGQiwweDdFLAorICAgIDB4Mzgs
MHhGRiwweEQ3LDB4RjYsMHg3NywweEZELDB4REQsMHhGRCwweEY3LDB4RjYsMHhENywweEY2LDB4
M0EsMHhCQSwweEVBLDB4RTIsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDdFLDB4RDYsMHhE
NSwweERELDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhCRCwweEFGLDB4QUYsMHhGRiwKKyAgICAweDE4
LDB4RkYsMHhENywweEY2LDB4QUEsMHhBRSwweEFGLDB4RkYsMHhGOCwweEZFLDB4MTcsMHhFRiww
eEFBLDB4ODIsMHgyMiwweDJBLAorICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhCRCwweDNELDB4
QUYsMHgyRCwweDE4LDB4RkYsMHhGNywweEY2LDB4RTgsMHg2QSwweDUyLDB4NkEsCisgICAgMHhG
NywweEY2LDB4RDcsMHhGNiwweDI4LDB4MEMsMHgwRiwweDBFLDB4RjgsMHhGRSwweDE4LDB4Rjcs
MHhGRiwweDdFLDB4RUUsMHhCQSwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4RkUsMHhGNiww
eEQ3LDB4REYsMHgxOCwweEZGLDB4RDcsMHhGNiwweEEyLDB4N0EsMHhBQSwweEVBLAorICAgIDB4
RjgsMHhGNiwweDk3LDB4RUUsMHhBOCwweDgwLDB4QTgsMHhFQSwweEQ3LDB4RjYsMHg5NiwweEVF
LDB4QUEsMHhFOCwweEZFLDB4NUEsCisgICAgMHhCNywweEY2LDB4NzYsMHhFRSwweEZBLDB4RkUs
MHg1RiwweEQ3LDB4OTYsMHhFRSwweDU1LDB4RTYsMHhGQSwweEJDLDB4RkEsMHg4MiwKKyAgICAw
eDc2LDB4RUUsMHg1NSwweEU2LDB4MDAsMHgyMCwweEJFLDB4RDcsMHg5NiwweEVFLDB4NTUsMHhF
RSwweDgwLDB4ODAsMHhCNSwweEZELAorICAgIDB4OTYsMHhFRSwweDU1LDB4RTYsMHg3QiwweEMw
LDB4QTIsMHhGQSwweDk2LDB4RUUsMHg1NSwweEU2LDB4NTUsMHg3RiwweENBLDB4QUIsCisgICAg
MHg1NSwweEVFLDB4MzUsMHhFNiwweEI5LDB4N0EsMHhCOCwweDIwLDB4OTYsMHhFRSwweDU1LDB4
RTYsMHhCRCwweDk1LDB4MjUsMHgyRiwKKyAgICAweEI3LDB4RjYsMHg3NiwweEVFLDB4RkIsMHhG
QiwweDdBLDB4NzgsMHg5NiwweEVFLDB4NzYsMHhFRSwweERBLDB4N0IsMHg3RiwweEQ1LAorICAg
IDB4OTYsMHhFRSwweDc1LDB4RUUsMHhBMiwweDNELDB4MkIsMHgwMywweEI3LDB4RjYsMHgzNSww
eEU2LDB4RkEsMHhFQSwweDcyLDB4NjIsCisgICAgMHgxNCwweERFLDB4NTEsMHhDRCwweDdDLDB4
NUMsMHg1RSwweDVFLDB4QjMsMHhENSwweDUxLDB4Q0QsMHgyRiwweEFELDB4QjUsMHhCQiwKKyAg
ICAweDM1LDB4RUUsMHhCMywweEQ1LDB4MkQsMHgzRCwweDNELDB4QkQsMHgzNCwweEU2LDB4MTQs
MHhFNiwweEUwLDB4QzAsMHhDMiwweEU3LAorICAgIDB4MTQsMHhFNiwweEIyLDB4RDUsMHg3OCww
eEU4LDB4NzgsMHg3MCwweDM0LDB4RTYsMHhCMywweEQ1LDB4QkQsMHhBNywweEJELDB4MkQsCisg
ICAgMHgzNSwweEU2LDB4RDMsMHhERCwweDcyLDB4RkUsMHg1QywweDVDLDB4RjQsMHhERCwweEQz
LDB4REQsMHhGQiwweDNELDB4QUQsMHhGMiwKKyAgICAweEY0LDB4RTUsMHhEMywweERELDB4NjAs
MHhGQSwweDc3LDB4NTUsMHhCMywweERELDB4MTEsMHhDNSwweDc4LDB4RTAsMHg2MCwweDcwLAor
ICAgIDB4RDAsMHhCQywweDJELDB4QTQsMHhERSwweERDLDB4NUMsMHg1QywweDUxLDB4Q0QsMHg2
RSwweEFDLDB4MjksMHgyRCwweDA1LDB4QkQsCisgICAgMHgzMSwweENELDB4RDAsMHhCQywweEI4
LDB4RjgsMHhFOCwweDVBLDB4MzEsMHhDNSwweEFGLDB4QjQsMHgwQSwweEFGLDB4OUYsMHhERiwK
KyAgICAweDUxLDB4Q0QsMHgxMCwweEM1LDB4RkUsMHhCQiwweDc3LDB4RjksMHg3MiwweEQ1LDB4
MzEsMHhDNSwweDM3LDB4MzksMHhBRSwweEJGLAorICAgIDB4OTIsMHhENSwweDUxLDB4Q0QsMHhB
QiwweEZBLDB4NkEsMHg3RSwweEQzLDB4REQsMHhGMCwweEM0LDB4MDIsMHhFQSwweEZGLDB4NUYs
CisgICAgMHg3MiwweEQ1LDB4RjAsMHhCQywweEZDLDB4RDYsMHg1NSwweEQ1LDB4NzIsMHhDRCww
eDEwLDB4QzUsMHhCRiwweEJGLDB4QTksMHgyQSwKKyAgICAweEM4LDB4N0EsMHg4NywweDdBLDB4
MDAsMHg4OCwweDQwLDB4MDMsMHhFOCwweDgyLDB4QTcsMHg3QSwweEJGLDB4QjIsMHhBOSwweDhC
LAorICAgIDB4RTgsMHg4MiwweEE4LDB4N0EsMHg3OCwweEFDLDB4RUIsMHhCRiwweEU4LDB4ODIs
MHhBNywweDdBLDB4MjQsMHgwOCwweEVGLDB4QUQsCisgICAgMHhFOCwweDgyLDB4QzcsMHg3QSww
eDNCLDB4NkIsMHg5RSwweDJCLDB4MDksMHg4QiwweEM3LDB4ODIsMHhBNywweDlFLDB4REIsMHg1
RiwKKyAgICAweDA4LDB4OEIsMHhBNywweDdBLDB4RkUsMHhFRiwweEU0LDB4QjcsMHhFOCwweDgy
LDB4QTcsMHg4MiwweEI4LDB4ODAsMHg4QSwweEZDLAorICAgIDB4RTgsMHg4MiwweEE3LDB4ODIs
MHhFQiwweDI4LDB4MEEsMHgzMiwweDA4LDB4OEIsMHhDNywweDgyLDB4REYsMHhGRiwweEE5LDB4
QkYsCisgICAgMHgwOCwweDhCLDB4QTcsMHg3QSwweEJGLDB4QkUsMHgzNiwweEZDLDB4MDgsMHg4
QiwweEM3LDB4ODIsMHgyOSwweEU4LDB4RUEsMHhBMywKKyAgICAweDA4LDB4OEIsMHhDNywweDgy
LDB4QTAsMHg3QSwweEFCLDB4RUIsMHg0OSwweDkzLDB4QTcsMHg3QSwweDBFLDB4QUYsMHhGRSww
eEZCLAorICAgIDB4RjAsMHhDNCwweDA5LDB4OEIsMHgyQiwweEQ1LDB4NTUsMHg1NSwweDM0LDB4
RTYsMHgyOSwweDhCLDB4MDIsMHhBRiwweEQ1LDB4NTUsCisgICAgMHg5NiwweEY2LDB4OEEsMHg5
MywweDAwLDB4MEEsMHhBRiwweDU1LDB4OTYsMHhGNiwweDhFLDB4QjQsMHgwMCwweDAwLDB4MEEs
MHhCNSwKKyAgICAweEI2LDB4RjYsMHgxNCwweEU2LDB4MDAsMHgwMCwweDA4LDB4QUQsMHhENiww
eEY2LDB4OTUsMHhGNiwweDIzLDB4MjIsMHgyMywweEE1LAorICAgIDB4RDcsMHhGNiwweEI2LDB4
RjYsMHhGQSwweEZFLDB4RDgsMHg5RSwweEI2LDB4RkUsMHhENiwweEY2LDB4NTcsMHhGRiwweERG
LDB4RkQsCisgICAgMHhGNywweEZFLDB4QjYsMHhGNiwweEFBLDB4QUYsMHhGQSwweDdGLDB4RDcs
MHhGNiwweEI2LDB4RjYsMHhDMCwweDgwLDB4MEIsMHhFQiwKKyAgICAweEY2LDB4RkUsMHhCNyww
eEY2LDB4QkIsMHhBQiwweEFCLDB4RUYsMHhENiwweEY2LDB4QUUsMHhCNCwweDc4LDB4NjgsMHhF
MCwweEEwLAorICAgIDB4OEUsMHhCNCwweEE0LDB4NTksMHg1NywweDU2LDB4NUUsMHg1OCwweEE1
LDB4NTEsMHg2NCwweDQ5LDB4ODIsMHg5RiwweDlELDB4RDcsCisgICAgMHhFNSwweDU5LDB4ODQs
MHg1MSwweEVELDB4RjksMHhENywweDU3LDB4RTYsMHg1OSwweDg0LDB4NTEsMHg2RiwweDdFLDB4
NjgsMHg2MywKKyAgICAweEE1LDB4NTEsMHg0NCwweDQxLDB4N0EsMHhGMiwweDU4LDB4N0UsMHg0
NCwweDQxLDB4MDMsMHg0MSwweERBLDB4QjgsMHgzQywweEJDLAorICAgIDB4NDQsMHg0OSwweDAz
LDB4NDEsMHg3RCwweDZFLDB4RTgsMHg4RiwweEM1LDB4NjEsMHgwMywweDQxLDB4REQsMHg5NSww
eEJGLDB4MkEsCisgICAgMHg2NywweDdBLDB4QzUsMHg2MSwweEY1LDB4MzUsMHgyOSwweDBBLDB4
QzgsMHg4QSwweDI2LDB4NzIsMHhGNSwweDhCLDB4QUEsMHgyOCwKKyAgICAweEM5LDB4OEEsMHgw
NiwweDZBLDB4NUIsMHg2QSwweDc4LDB4QjgsMHgyNywweDcyLDB4ODQsMHg1MSwweDVFLDB4N0Es
MHg3OCwweEYwLAorICAgIDB4NjQsMHg1MSwweDI0LDB4NDksMHhGQSwweEY3LDB4RDQsMHhBQyww
eDY0LDB4NTEsMHhFMiwweDM4LDB4RkEsMHg3QywweDdBLDB4RUMsCisgICAgMHhFMywweDM4LDB4
QTIsMHgzMCwweEJFLDB4REMsMHg1RiwweEZBLDB4MDMsMHgzOSwweEMyLDB4MzAsMHg4QiwweEFC
LDB4ODksMHhBOSwKKyAgICAweDAzLDB4MzksMHg4MiwweDI4LDB4NkEsMHhGQSwweEUyLDB4Q0Es
MHhBMiwweDMwLDB4ODIsMHgyOCwweEQ1LDB4NTUsMHg1NywweDVDLAorICAgIDB4RTIsMHgzMCww
eDgyLDB4MjgsMHhGRiwweEY1LDB4QjUsMHgzRCwweDQzLDB4NDEsMHhBMSwweDMwLDB4MjksMHhB
RCwweEFGLDB4QUYsCisgICAgMHhBNSwweDU5LDB4MjMsMHg0MSwweEI1LDB4QUQsMHgzRCwweDBE
LDB4QTksMHg4MiwweEE1LDB4NTksMHgyRCwweDJELDB4QUIsMHhBQiwKKyAgICAweEM5LDB4ODIs
MHgwNiwweDZBLDB4MDAsMHhBOCwweEZFLDB4N0IsMHhBOCwweDdBLDB4RTQsMHg2MSwweEY4LDB4
RkEsMHg3RiwweDU1LAorICAgIDB4NjcsMHg3QSwweEM0LDB4NjEsMHgwQSwweEJGLDB4RjUsMHhG
RiwweDg4LDB4N0EsMHhFNSwweDY5LDB4MDAsMHgwMiwweDBCLDB4QkQsCisgICAgMHhDOSwweDgy
LDB4NDYsMHg3MiwweDgyLDB4MkEsMHhBRiwweDk3LDB4RTksMHg4MiwweDg0LDB4NTEsMHg4MCww
eEFBLDB4RkEsMHg3RSwKKyAgICAweDA2LDB4NkEsMHgwMiwweDQ5LDB4QTgsMHhFOCwweEZGLDB4
NTcsMHhFNiwweDYxLDB4NDMsMHg1MSwweEFBLDB4RkQsMHhCRCwweDM1LAorICAgIDB4NDcsMHg3
MiwweEE0LDB4NTksMHgwRCwweDJELDB4MkYsMHgwQSwweEE4LDB4ODIsMHg0NiwweDcyLDB4MDMs
MHhCNSwweEVELDB4QUQsCisgICAgMHhDOSwweDhBLDB4QTgsMHg3QSwweEVCLDB4RUYsMHhBOSww
eDg3LDB4QzksMHg4MiwweDY3LDB4N0EsMHhCNywweEZDLDB4RkUsMHg1RSwKKyAgICAweEE4LDB4
ODIsMHg0NiwweDcyLDB4MDIsMHhBQSwweDJCLDB4ODksMHg4QiwweDlCLDB4NjgsMHg3QSwweDJG
LDB4MkQsMHhBRCwweEJELAorICAgIDB4RDYsMHhGNiwweDhBLDB4OTMsMHgwQiwweDBGLDB4MkQs
MHg5NSwweDM5LDB4RkYsMHhCNiwweEY2LDB4MDAsMHgyMCwweDgyLDB4ODksCisgICAgMHgzOSww
eEZGLDB4MTgsMHhGRiwweDIwLDB4MEEsMHg4QiwweDhCLDB4MzgsMHhGRiwweDE4LDB4RkYsMHhE
RSwweDlFLDB4QkUsMHhCRSwKKyAgICAweDM4LDB4RkYsMHhGNywweEY2LDB4QTAsMHhFQSwweDZB
LDB4N0EsMHhCNiwweEY2LDB4NTUsMHhFNiwweEYwLDB4RjgsMHg3OCwweEZBLAorICAgIDB4NTUs
MHhFRSwweDc1LDB4RTYsMHgwQSwweDAyLDB4QTAsMHhBMCwweDU1LDB4RUUsMHgzNSwweEU2LDB4
RDcsMHhERSwweEFDLDB4QjgsCisgICAgMHhGOCwweEZFLDB4NzYsMHhFRSwweDJELDB4MkQsMHgy
OSwweDBGLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhGQSwweEZBLDB4RkEsMHhFOCwKKyAgICAweDM4
LDB4RkYsMHhGOCwweEY2LDB4QjcsMHhCNSwweEI1LDB4QUQsMHgxOCwweEZGLDB4MzgsMHhGNyww
eDIwLDB4MEEsMHgyQSwweDJBLAorICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHgyOCwweEE4LDB4
RjgsMHhCQSwweDE4LDB4RkYsMHhGOCwweEY2LDB4RUEsMHhCQSwweEFFLDB4QUIsCisgICAgMHhG
OCwweEZFLDB4MTgsMHhGNywweEFBLDB4QkEsMHhFQiwweEJCLDB4RjgsMHhGRSwweDE4LDB4Rjcs
MHg4MiwweEFBLDB4QTgsMHhBQywKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4N0YsMHg1Riww
eERBLDB4NUYsMHhEOCwweEZFLDB4RjcsMHhGNiwweEY3LDB4RjcsMHg3RCwweERGLAorICAgIDB4
RDcsMHhGRSwweEY4LDB4RjYsMHhGNywweEZGLDB4REQsMHg3NSwweEQ4LDB4RkUsMHhGNywweEY2
LDB4RkQsMHhGRCwweDc3LDB4NTUsCisgICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweEFGLDB4QkIs
MHhGRiwweERGLDB4RDgsMHhGRSwweEY3LDB4RjYsMHhCRCwweEY1LDB4NzcsMHg1RiwKKyAgICAw
eDE4LDB4RkYsMHhENywweEY2LDB4REQsMHg1RCwweDdGLDB4RkEsMHhGNywweEY2LDB4RDcsMHhG
NiwweDJCLDB4MjUsMHhCNywweDM3LAorICAgIDB4RjgsMHhGRSwweEY3LDB4RjYsMHhGRiwweEZG
LDB4RkIsMHhCRiwweDE4LDB4RkYsMHhGOCwweEY2LDB4NkQsMHhERiwweEY1LDB4RkYsCisgICAg
MHgxOCwweEZGLDB4RjgsMHhGNiwweEFELDB4MEIsMHg4RiwweEFGLDB4MTgsMHhGRiwweEY4LDB4
RjYsMHg2MCwweDdBLDB4RUUsMHhFQiwKKyAgICAweEQ4LDB4RkUsMHhGNywweEY2LDB4NUQsMHg3
NSwweEY1LDB4RkYsMHgxOCwweEZGLDB4RDcsMHhGNiwweEEyLDB4QUEsMHhGNywweEI3LAorICAg
IDB4RjcsMHhGNiwweEQ4LDB4RjYsMHhBMCwweEEwLDB4RTIsMHhFQSwweEY4LDB4RjYsMHhENyww
eEY2LDB4ODIsMHg3QiwweDVGLDB4NTcsCisgICAgMHhGOCwweEY2LDB4QjcsMHhGNiwweDdBLDB4
RkEsMHg3NywweDVGLDB4QjcsMHhGNiwweDc2LDB4RUUsMHhGOCwweEI4LDB4RUMsMHhGRSwKKyAg
ICAweDk2LDB4RUUsMHg3NiwweEVFLDB4RDksMHhENywweDVGLDB4RDUsMHg5NiwweEVFLDB4NzYs
MHhFRSwweDY4LDB4N0EsMHg1NywweDU1LAorICAgIDB4NzUsMHhFRSwweDM1LDB4RTYsMHhFMiww
eEJDLDB4QUUsMHhBRSwweDc1LDB4RUUsMHgzNSwweEU2LDB4QUEsMHhCQiwweEI2LDB4RkYsCisg
ICAgMHg3NSwweEVFLDB4NTUsMHhFNiwweDhBLDB4QUEsMHhGRiwweDU2LDB4NzYsMHhFRSwweDM1
LDB4RTYsMHgyQSwweEVFLDB4OUYsMHhENywKKyAgICAweDc2LDB4RUUsMHg1NSwweEU2LDB4OTUs
MHhCRCwweDBELDB4QTMsMHhCNywweEY2LDB4NzYsMHhFRSwweEE1LDB4MkIsMHhBOSwweEFCLAor
ICAgIDB4QjcsMHhGNiwweDc2LDB4RUUsMHhGQSwweEY4LDB4RUEsMHg1RSwweEI2LDB4RjYsMHg1
NSwweEVFLDB4RkQsMHhBRiwweDJCLDB4MkEsCisgICAgMHhCNiwweEY2LDB4OTYsMHhFRSwweEZE
LDB4RkUsMHg4QSwweEE2LDB4QjYsMHhGNiwweDE0LDB4REUsMHhFMiwweEUwLDB4RUEsMHg3QSwK
KyAgICAweEY0LDB4REQsMHgzMSwweENELDB4RjgsMHhGOCwweDc4LDB4NUUsMHhCMywweERELDB4
MzEsMHhDRCwweDJCLDB4MkIsMHhBRiwweEY1LAorICAgIDB4MTUsMHhFNiwweDkyLDB4RDUsMHgy
RiwweEFCLDB4QUQsMHhCRCwweDM1LDB4RTYsMHhEMywweERELDB4ODIsMHg4QSwweEVFLDB4N0Us
CisgICAgMHgxNCwweEU2LDB4QjMsMHhENSwweDcwLDB4RDgsMHhFQSwweEVBLDB4MTQsMHhFNiww
eEIzLDB4RDUsMHgyRiwweDJELDB4MkYsMHgwRiwKKyAgICAweDE0LDB4RTYsMHhEMywweERELDB4
RjgsMHg3QywweERBLDB4REEsMHhGNCwweERELDB4OTIsMHhENSwweDgwLDB4ODAsMHhDMiwweDY4
LAorICAgIDB4RDMsMHhERCwweDMxLDB4QzUsMHgwMCwweDgwLDB4QUEsMHg1NSwweDkyLDB4RDUs
MHhEMCwweEJDLDB4NjAsMHhGMCwweEZFLDB4RkYsCisgICAgMHhFRiwweEJDLDB4MEQsMHhBNCww
eDVBLDB4N0UsMHhGQywweEY4LDB4RjAsMHhDNCwweDRELDB4QUMsMHgyRCwweDJELDB4MjUsMHgz
NSwKKyAgICAweDMxLDB4Q0QsMHhCMCwweEI0LDB4RkEsMHhGMCwweEY4LDB4N0EsMHhDRiwweEJD
LDB4OEYsMHhCNCwweDM2LDB4MEUsMHgyRiwweDE3LAorICAgIDB4MzEsMHhDNSwweEYwLDB4QzQs
MHgyMywweDg5LDB4MDksMHgwNSwweDcyLDB4Q0QsMHgzMSwweENELDB4QUQsMHgyOSwweDNELDB4
M0IsCisgICAgMHg3MSwweENELDB4MzEsMHhDRCwweEFBLDB4RTgsMHhGQSwweDU2LDB4NTEsMHhD
RCwweEYwLDB4QkMsMHg1OCwweDU2LDB4REQsMHhGNywKKyAgICAweDUyLDB4Q0QsMHhEMCwweEJD
LDB4MzUsMHgyRiwweEJBLDB4QUEsMHg5MiwweEQ1LDB4MzEsMHhDNSwweEJGLDB4QUYsMHg4Qiww
eEFELAorICAgIDB4RTgsMHg4MiwweDg2LDB4N0EsMHg4OSwweDhBLDB4RTgsMHhBMiwweDA4LDB4
ODMsMHg4NywweDdBLDB4QzMsMHg2RSwweDZCLDB4RUEsCisgICAgMHhFOCwweDgyLDB4ODcsMHg3
QSwweDZFLDB4Q0YsMHhFRiwweEZFLDB4RTgsMHg4MiwweDg2LDB4N0EsMHgyRCwweEJELDB4QUIs
MHhCQSwKKyAgICAweEU4LDB4ODIsMHg4NywweDdBLDB4MDIsMHg5MCwweDAwLDB4OEIsMHhFNyww
eDgyLDB4QTcsMHg3QSwweEJGLDB4QkMsMHhGRSwweEZBLAorICAgIDB4QzgsMHg4MiwweEE4LDB4
N0EsMHgwRSwweDQwLDB4RDIsMHgwNSwweEU4LDB4ODIsMHhBNywweDdBLDB4RDUsMHhBQiwweDJB
LDB4MjgsCisgICAgMHhFOCwweDgyLDB4QTYsMHg4MiwweDBGLDB4QzAsMHhFMCwweEYwLDB4MDgs
MHg4QiwweEE3LDB4N0EsMHgyOCwweDVFLDB4RkEsMHhCQSwKKyAgICAweDA5LDB4OEIsMHhDNyww
eDgyLDB4NUUsMHhDQiwweDc5LDB4NUEsMHgwOCwweDhCLDB4QTcsMHg3QSwweEFCLDB4M0YsMHhG
RSwweEJELAorICAgIDB4MDgsMHg4MywweEE3LDB4ODIsMHgyQSwweEJFLDB4RkUsMHg5RiwweEU4
LDB4ODIsMHhDOCwweDgyLDB4MjAsMHgyMiwweDZCLDB4REYsCisgICAgMHgwOCwweDhCLDB4Qzgs
MHg4MiwweDhCLDB4QjUsMHhBOSwweDJELDB4MDgsMHg4QiwweEM4LDB4ODIsMHgyOCwweDJBLDB4
M0EsMHg1RiwKKyAgICAweDQ5LDB4OEIsMHhDOCwweDgyLDB4QTgsMHhGRiwweERBLDB4REYsMHgw
QywweDlDLDB4QzcsMHg4MiwweDJCLDB4RkYsMHhGNSwweDVELAorICAgIDB4RDMsMHhERCwweDI5
LDB4OEIsMHgwQSwweEY1LDB4NTUsMHg1NSwweDc1LDB4RUUsMHgyOSwweDhCLDB4MDAsMHgwQiww
eEZELDB4NTUsCisgICAgMHhCNiwweEY2LDB4Q0IsMHhBMywweDAwLDB4MDAsMHhBQiwweEY1LDB4
RDYsMHhGNiwweDkyLDB4RDUsMHgwMCwweDA4LDB4OEEsMHhCRCwKKyAgICAweEQ2LDB4RjYsMHg3
NSwweEY2LDB4MDgsMHg4QSwweEFCLDB4QkQsMHhENywweEZFLDB4OTYsMHhGNiwweEFBLDB4QUUs
MHg5RSwweEZCLAorICAgIDB4RDcsMHhGRSwweEI2LDB4RjYsMHhFQSwweEZGLDB4RUIsMHhFQiww
eEI3LDB4RjYsMHgzNCwweEU2LDB4NjAsMHhDMCwweEEwLDB4ODAsCisgICAgMHg1NSwweEVFLDB4
ODcsMHg3MiwweDVFLDB4NzgsMHg3OCwweEUwLDB4NjYsMHg2QSwweDQzLDB4NDksMHhGNywweEQ1
LDB4NTYsMHg1QywKKyAgICAweEE1LDB4NTksMHg0MywweDQ5LDB4QTAsMHg4MCwweEVBLDB4RDUs
MHhDNSwweDUxLDB4NjQsMHg0OSwweDhBLDB4QUEsMHhGRSwweDc1LAorICAgIDB4ODUsMHg1MSww
eDY0LDB4NDksMHg3QSwweDY4LDB4RDUsMHhFRiwweDg0LDB4NTEsMHgyMywweDQxLDB4NzcsMHg3
RiwweEZFLDB4OEUsCisgICAgMHhDNSwweDU5LDB4MjMsMHg0MSwweEZELDB4MkYsMHhBQiwweDJB
LDB4QTgsMHg4MiwweDg0LDB4NTEsMHhGNSwweEJELDB4QUYsMHgyQiwKKyAgICAweDA5LDB4OTMs
MHg0NiwweDcyLDB4QkQsMHgyRCwweDBCLDB4MEEsMHgwOSwweDkzLDB4QTgsMHg4QSwweEQ3LDB4
NkUsMHhFMiwweEUwLAorICAgIDB4QzksMHg4QSwweDI2LDB4NzIsMHhGOCwweEZFLDB4NTgsMHhE
OCwweDQ3LDB4N0EsMHhBNCwweDYxLDB4NUMsMHg3QSwweDdDLDB4QjAsCisgICAgMHhDNSwweDY5
LDB4NDQsMHg0OSwweERGLDB4N0YsMHhCQSwweEEwLDB4QTUsMHg1OSwweDQ0LDB4NDksMHg1NSww
eEZGLDB4QkYsMHgyQSwKKyAgICAweEU2LDB4NjksMHhFMiwweDQwLDB4NUYsMHhGRSwweEFBLDB4
MkEsMHhDNSwweDU5LDB4MDMsMHg0MSwweDU1LDB4NTUsMHg1RSwweEU4LAorICAgIDB4MDMsMHg0
MSwweEMyLDB4MzAsMHhFOCwweDdBLDB4RkYsMHgyRSwweDQ0LDB4NDEsMHhBMiwweDMwLDB4NTUs
MHhGNywweEFBLDB4MEEsCisgICAgMHg4NSwweDUxLDB4ODEsMHgzMCwweEZELDB4QkYsMHgyRiww
eDBBLDB4NjQsMHg0OSwweDAzLDB4NDEsMHhCRCwweDJFLDB4QUEsMHgwMiwKKyAgICAweEM1LDB4
NjEsMHg0NCwweDQ5LDB4MzcsMHhBRiwweDJBLDB4QUIsMHgyNywweDZBLDB4ODQsMHg1MSwweDgy
LDB4RUIsMHhGRiwweDU3LAorICAgIDB4MDYsMHg2QSwweEE0LDB4NTksMHg4MCwweEVGLDB4QjUs
MHhCNSwweEU1LDB4NjEsMHhBNCwweDYxLDB4REUsMHg3QiwweEVBLDB4QTgsCisgICAgMHhFNSww
eDYxLDB4QTQsMHg2MSwweDJFLDB4MzksMHgyOSwweDA5LDB4MjYsMHg2QSwweEM1LDB4NjEsMHg5
NywweDlGLDB4MkIsMHgyRiwKKyAgICAweDg3LDB4N0EsMHgwNiwweDYyLDB4QUIsMHg3QiwweDgz
LDB4OEEsMHg2NywweDcyLDB4MjMsMHg0OSwweDc4LDB4NzgsMHg1RSwweDVFLAorICAgIDB4NjMs
MHg1MSwweEUyLDB4NDAsMHhGNywweEY3LDB4QkQsMHgyNywweDI2LDB4NkEsMHgwMiwweDQ5LDB4
MkQsMHgyRiwweDJCLDB4MEIsCisgICAgMHg2NywweDcyLDB4MjYsMHg3MiwweEZGLDB4NTIsMHhG
QSwweERFLDB4ODgsMHg3QSwweEU1LDB4NjksMHhBMCwweDhCLDB4RjcsMHhGRiwKKyAgICAweEM5
LDB4OEEsMHgwNSwweDZBLDB4MEEsMHgyQiwweDNELDB4MjUsMHg0QSwweDlCLDB4NDYsMHg3Miww
eDU3LDB4NUUsMHhGQSwweEUyLAorICAgIDB4ODgsMHg3QSwweDA1LDB4NkEsMHgwRiwweEI1LDB4
RkQsMHhCQSwweDJBLDB4OEIsMHg2NywweDdBLDB4MkQsMHgzOSwweEJELDB4M0QsCisgICAgMHg4
RSwweEJDLDB4MkEsMHg4QiwweDNELDB4QkQsMHhENSwweDU1LDB4MTgsMHhGRiwweDZFLDB4QjQs
MHgwMiwweDBCLDB4MDksMHgyRCwKKyAgICAweDM4LDB4RkYsMHgxOCwweEZGLDB4RUQsMHhFRCww
eDdELDB4RDUsMHgzOCwweEZGLDB4MTgsMHhGRiwweDVGLDB4REYsMHg1NSwweDU1LAorICAgIDB4
MTgsMHhGRiwweDk2LDB4RjYsMHhFMCwweEUwLDB4NjgsMHg3OCwweDk2LDB4RjYsMHg1NSwweEVF
LDB4NUMsMHhERSwweDc3LDB4RDcsCisgICAgMHg3NSwweEVFLDB4NTUsMHhFRSwweEY1LDB4RkQs
MHg3QiwweDdELDB4NzUsMHhFRSwweDM1LDB4RTYsMHhCNywweDk3LDB4OTcsMHgyRiwKKyAgICAw
eEY4LDB4RkUsMHg5NiwweEVFLDB4MkQsMHgyRCwweDBELDB4MkQsMHhGOCwweEZFLDB4MTgsMHhG
NywweEI4LDB4QUEsMHgyRSwweEFFLAorICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHgyOSwweDBF
LDB4MEQsMHhBRiwweDE4LDB4RkYsMHgzOCwweEY3LDB4MjgsMHgyOCwweDgwLDB4MDIsCisgICAg
MHgxOCwweEZGLDB4RjgsMHhGNiwweEFBLDB4RUUsMHhCQSwweEJFLDB4MTgsMHhGRiwweEY4LDB4
RjYsMHhBQSwweEFBLDB4RTgsMHhERSwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4N0EsMHg3
RSwweERGLDB4RUYsMHhGNywweEZFLDB4RjgsMHhGNiwweEJGLDB4RkYsMHg3RiwweEZGLAorICAg
IDB4RDcsMHhGRSwweEY4LDB4RjYsMHhGNSwweEY3LDB4RDcsMHg3NywweDE4LDB4RkYsMHhENyww
eEY2LDB4QkYsMHhBQiwweEVCLDB4QUIsCisgICAgMHhENywweEZFLDB4RjgsMHhGNiwweDc1LDB4
RkQsMHhFNSwweEU3LDB4RDcsMHhGRSwweEY3LDB4RjYsMHg1NywweERELDB4RjcsMHhGRCwKKyAg
ICAweEY3LDB4RjYsMHhCNywweEY2LDB4MkUsMHgyOCwweDJBLDB4QTgsMHgxOCwweEZGLDB4RDcs
MHhGNiwweEFFLDB4RUIsMHhGQiwweEVGLAorICAgIDB4RDcsMHhGRSwweEY3LDB4RjYsMHg3NSww
eEZELDB4RkYsMHhGRCwweEY3LDB4RjYsMHhENywweEY2LDB4N0UsMHgzRSwweDhBLDB4MEEsCisg
ICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweDU1LDB4NzUsMHg3RiwweEZGLDB4MTgsMHhGRiwweEY4
LDB4RjYsMHhFRiwweDJGLDB4QjUsMHhCNywKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4NkIs
MHg3OCwweEZBLDB4RkUsMHgxNywweEZGLDB4RjgsMHhGNiwweDZCLDB4RkYsMHhGRCwweDc3LAor
ICAgIDB4RjgsMHhGNiwweEQ3LDB4RjYsMHhBOCwweEJBLDB4QTgsMHhDRSwweEY4LDB4RjYsMHhE
NywweEY2LDB4OEEsMHhBOCwweEFBLDB4QkUsCisgICAgMHhGOCwweEY2LDB4RDcsMHhGNiwweEM4
LDB4QTIsMHg2QSwweDdBLDB4MTgsMHhGNywweEI3LDB4RjYsMHg3RiwweDdGLDB4REUsMHg3RiwK
KyAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4N0EsMHg1RiwweDVGLDB4N0UsMHg5NiwweEVFLDB4
NzYsMHhFRSwweERBLDB4NTgsMHg3RiwweEY5LAorICAgIDB4OTYsMHhFRSwweDU1LDB4RUUsMHhG
RSwweEVBLDB4QUUsMHhFQSwweDc2LDB4RUUsMHg1NSwweEU2LDB4MjAsMHg4MCwweDIwLDB4RTgs
CisgICAgMHg3NSwweEVFLDB4MzQsMHhFNiwweEY4LDB4RkEsMHhBQSwweEVBLDB4NzUsMHhFRSww
eDM1LDB4RTYsMHhCRiwweEZFLDB4RkUsMHhFQSwKKyAgICAweDc1LDB4RUUsMHgzNCwweEU2LDB4
RkUsMHhBOCwweDAyLDB4MkEsMHg3NSwweEVFLDB4MzQsMHhFNiwweDlGLDB4QkEsMHhBMiwweDgw
LAorICAgIDB4NzYsMHhFRSwweDU1LDB4RTYsMHhBRiwweDBDLDB4QjcsMHgyNSwweDk2LDB4RUUs
MHg3NiwweEVFLDB4MjIsMHgyNiwweDJFLDB4QkIsCisgICAgMHg5NiwweEVFLDB4NTUsMHhFNiww
eEY4LDB4RUEsMHhFQSwweEFBLDB4OTYsMHhFRSwweDU1LDB4RUUsMHgwQSwweDAyLDB4MjksMHgy
RiwKKyAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4RkIsMHg3RiwweDdELDB4NTUsMHg5NiwweEVF
LDB4MTQsMHhERSwweDYwLDB4NzAsMHhFMCwweEUwLAorICAgIDB4RDMsMHhERCwweDMwLDB4QzUs
MHg3NiwweEZDLDB4RTgsMHhGMCwweDcxLDB4Q0QsMHgzMCwweENELDB4MDksMHhFMiwweEFBLDB4
REMsCisgICAgMHhGMywweERELDB4NTEsMHhDRCwweDJGLDB4QTksMHgyRCwweEI5LDB4RjQsMHhE
RCwweEIzLDB4RDUsMHg4MCwweEUwLDB4ODAsMHgwMiwKKyAgICAweEY0LDB4REQsMHg5MiwweEQ1
LDB4ODMsMHhBQSwweEZBLDB4NjAsMHgxNCwweEU2LDB4QjMsMHhENSwweDJELDB4MEYsMHhBOSww
eEI1LAorICAgIDB4MTQsMHhFNiwweDEwLDB4QzUsMHgyMCwweEEwLDB4RkEsMHg1RSwweEIzLDB4
RDUsMHhGMCwweEM0LDB4ODAsMHg3OCwweDU3LDB4NzcsCisgICAgMHgzMCwweEM1LDB4RjAsMHhC
QywweDU4LDB4RkYsMHg1NSwweDU1LDB4MzAsMHhDNSwweEQwLDB4QkMsMHhGRSwweDM2LDB4OUYs
MHhERiwKKyAgICAweDMxLDB4Q0QsMHgyRCwweEFDLDB4N0EsMHg3OCwweEUwLDB4ODAsMHhDRiww
eEJDLDB4RUMsMHhBMywweDJCLDB4MkQsMHgzRiwweDJGLAorICAgIDB4MzEsMHhDRCwweEIwLDB4
QkMsMHhGQSwweDQwLDB4QTIsMHhDQiwweENGLDB4QkMsMHg0RSwweEFDLDB4M0UsMHgzNywweDk3
LDB4QkYsCisgICAgMHg1MSwweENELDB4RjAsMHhDNCwweEE1LDB4MjksMHg4OSwweDI5LDB4NTEs
MHhDRCwweDExLDB4QzUsMHgwQSwweDIyLDB4QTksMHhDRSwKKyAgICAweDUyLDB4Q0QsMHhEMCww
eEJDLDB4RTgsMHhFOCwweDdDLDB4REYsMHg1MiwweENELDB4Q0YsMHhCQywweEY3LDB4OUYsMHhB
RCwweDhCLAorICAgIDB4NzIsMHhDRCwweDExLDB4QzUsMHhCNywweEJELDB4OUYsMHgzRiwweDcy
LDB4Q0QsMHg1MSwweENELDB4MjksMHgzRCwweEI1LDB4QkQsCisgICAgMHhDOCwweDgyLDB4MjUs
MHg2QSwweDIwLDB4QUEsMHhBRiwweEQ3LDB4RTgsMHg4MiwweDY2LDB4NzIsMHhBMiwweDgzLDB4
OEEsMHhGRCwKKyAgICAweEM3LDB4ODIsMHg4NywweDdBLDB4QjgsMHgyQSwweDJBLDB4MkUsMHgw
NywweDgzLDB4QzgsMHg4MiwweDVGLDB4N0IsMHhGRiwweDdFLAorICAgIDB4RTgsMHg4MiwweEE3
LDB4N0EsMHhBQiwweDhCLDB4ODksMHgyMywweDA4LDB4OEIsMHhBNywweDdBLDB4RjcsMHhCNyww
eEJGLDB4QkEsCisgICAgMHgwOSwweDhCLDB4QTcsMHg3QSwweDhGLDB4QzYsMHhERSwweDVGLDB4
RTgsMHg4MiwweEE3LDB4ODIsMHhGQiwweDc1LDB4QUIsMHhBMywKKyAgICAweEU4LDB4ODIsMHg4
NywweDdBLDB4RTAsMHgyQSwweDBBLDB4MjgsMHgwOCwweDhCLDB4QTcsMHg3QSwweEVGLDB4QkYs
MHhGQSwweDVDLAorICAgIDB4RTgsMHg4MiwweDg2LDB4N0EsMHgyMCwweEE4LDB4ODAsMHhDMSww
eEU4LDB4ODIsMHhBNywweDdBLDB4REUsMHhBQSwweDNBLDB4RTgsCisgICAgMHgwOSwweDhCLDB4
QTgsMHg3QSwweDdGLDB4Q0YsMHhBQiwweEFGLDB4MDgsMHg4QiwweEM4LDB4ODIsMHhCRiwweEIz
LDB4RTMsMHg2QSwKKyAgICAweDA4LDB4OEIsMHhBNywweDgyLDB4QUYsMHhFMiwweEFBLDB4REEs
MHgwOSwweDhCLDB4QzgsMHg4MiwweEQ1LDB4RDcsMHgyQiwweEM1LAorICAgIDB4QzgsMHg4QSww
eEU4LDB4ODIsMHhGRCwweDU5LDB4NUYsMHhGNywweDA4LDB4OEIsMHhDOCwweDgyLDB4QkIsMHhB
QSwweEZBLDB4N0EsCisgICAgMHhFOCwweDgyLDB4QzgsMHg4MiwweEQ4LDB4QjgsMHhBQSwweDdC
LDB4MDksMHg4QiwweEM4LDB4ODIsMHgyMiwweDgzLDB4MEEsMHhGOSwKKyAgICAweDhBLDB4OTMs
MHhFOCwweDgyLDB4MkYsMHhGRCwweDVELDB4NTUsMHgxMCwweENELDB4MDksMHg4QiwweDJCLDB4
RjUsMHg1NSwweDU1LAorICAgIDB4NTQsMHhFRSwweDA5LDB4OEIsMHgwMiwweEFGLDB4RDUsMHg1
NSwweDk1LDB4RjYsMHg0QSwweDkzLDB4MDAsMHgwMiwweEFGLDB4RDUsCisgICAgMHhCNiwweEY2
LDB4QUUsMHhCQywweDAwLDB4MDAsMHgwQSwweEJELDB4QjcsMHhGNiwweDE0LDB4RTYsMHgwMCww
eDAwLDB4MDAsMHg4RCwKKyAgICAweDk2LDB4RjYsMHhGMCwweEJDLDB4NzAsMHhFMCwweEMwLDB4
ODAsMHhEMCwweEJDLDB4NDQsMHg0OSwweDVFLDB4NUUsMHg1OCwweDc4LAorICAgIDB4NDMsMHg0
OSwweDAzLDB4NDEsMHhBMiwweEI4LDB4RUUsMHhGRiwweDYzLDB4NDksMHgwMywweDQ5LDB4MEEs
MHhCQSwweEVCLDB4MDksCisgICAgMHhBNSwweDUxLDB4NDMsMHg0OSwweENBLDB4QUUsMHhCRCww
eEVCLDB4QTUsMHg1OSwweDY0LDB4NTEsMHg1NSwweDZELDB4QjcsMHgzNSwKKyAgICAweDI2LDB4
NkEsMHg4NCwweDUxLDB4QTUsMHhBRiwweDI5LDB4MEYsMHgwOSwweDhCLDB4MjYsMHg3MiwweDNE
LDB4MkQsMHgyOSwweDJGLAorICAgIDB4NEEsMHg5QiwweEU4LDB4OEEsMHhBOSwweDAyLDB4MEEs
MHhBMywweDJBLDB4OUIsMHhBOCwweDhBLDB4NzgsMHg3OCwweDYwLDB4RjIsCisgICAgMHhBOCww
eDhBLDB4NDcsMHg3QSwweEQ0LDB4RkEsMHg3QSwweEY4LDB4NjcsMHg4MiwweEU1LDB4NjksMHhG
QSwweEYyLDB4N0UsMHg3RiwKKyAgICAweDA2LDB4NzIsMHhBNSwweDYxLDB4NTYsMHhBOCwweENB
LDB4MEEsMHgyNywweDcyLDB4QTUsMHg2MSwweDk1LDB4MkEsMHgwQSwweDIyLAorICAgIDB4Njcs
MHg3QSwweEM1LDB4NjEsMHg1NywweEZGLDB4QkUsMHgyRSwweDI3LDB4NkEsMHhBNSwweDU5LDB4
NzYsMHg3RSwweDc4LDB4NjAsCisgICAgMHhBNSwweDU5LDB4MDMsMHg0MSwweERFLDB4QTgsMHgy
MCwweEY4LDB4QTUsMHg1MSwweDAzLDB4NDEsMHhGNywweEE4LDB4QjgsMHg1RiwKKyAgICAweEE2
LDB4NTEsMHgyNCwweDQ5LDB4MkYsMHhBQSwweEFFLDB4RkQsMHhBNSwweDUxLDB4MjMsMHg0OSww
eEFFLDB4QUMsMHhFRSwweDdGLAorICAgIDB4ODQsMHg1MSwweDIzLDB4NDksMHgyMCwweEEyLDB4
RUIsMHhGRCwweEE1LDB4NTksMHg0MywweDQ5LDB4M0YsMHhGRiwweEZGLDB4QUQsCisgICAgMHgw
NiwweDYyLDB4ODQsMHg1OSwweDJGLDB4QUQsMHgyRiwweDhCLDB4NjcsMHg3MiwweEM1LDB4NjEs
MHg3RCwweDdCLDB4QzIsMHgyMiwKKyAgICAweDI2LDB4NkEsMHhBNCwweDU5LDB4RUQsMHhGNyww
eDc2LDB4NjgsMHg2NywweDcyLDB4QzUsMHg2MSwweEFCLDB4QUIsMHgyRCwweDI5LAorICAgIDB4
NjcsMHg3MiwweEE0LDB4NTksMHg4MCwweEEwLDB4NzAsMHg3QywweEM0LDB4NTksMHhFMiwweDM4
LDB4RjgsMHg1QywweDVFLDB4NTcsCisgICAgMHhDNSwweDYxLDB4RTIsMHgzOCwweEJGLDB4MzUs
MHgzRCwweDJELDB4NjcsMHg3QSwweEM1LDB4NjEsMHgyRCwweDBGLDB4OEIsMHhBQiwKKyAgICAw
eDg4LDB4N0EsMHgyNiwweDcyLDB4QkUsMHg4RSwweEVCLDB4NUUsMHg2NywweDdBLDB4RTYsMHg2
OSwweEI4LDB4RTgsMHhGQSwweERGLAorICAgIDB4QzgsMHg4QSwweDA2LDB4NzIsMHgyRCwweDI1
LDB4MkYsMHgyQiwweDJBLDB4OTMsMHhDOCwweDhBLDB4NEIsMHhGQiwweDdELDB4QzMsCisgICAg
MHhFOSwweDhBLDB4NjcsMHg3QSwweDU2LDB4RjgsMHhCQywweEE4LDB4RTksMHg4QSwweDg4LDB4
ODIsMHgyOSwweEI3LDB4RDcsMHg1RiwKKyAgICAweDBBLDB4OEIsMHhBOCwweDgyLDB4M0EsMHgz
RiwweDM1LDB4NTUsMHg3NiwweEY2LDB4OEIsMHg5QiwweDJELDB4MkQsMHhGNSwweEQ1LAorICAg
IDB4RjgsMHhGRSwweDMxLDB4RDUsMHgwMCwweDAwLDB4MDIsMHgwOSwweDE4LDB4RkYsMHhGOCww
eEZFLDB4N0EsMHg1NywweDdELDB4NTUsCisgICAgMHhGOCwweEZFLDB4NzUsMHhFNiwweEUwLDB4
RjAsMHhGMCwweDc4LDB4NTUsMHhFRSwweDc1LDB4RTYsMHg4QSwweEVCLDB4QUEsMHgyMCwKKyAg
ICAweDc1LDB4RUUsMHg1NSwweEVFLDB4RDksMHhGRiwweEZGLDB4RTUsMHg5NiwweEVFLDB4MzUs
MHhFNiwweDk3LDB4MkYsMHhCQiwweDJGLAorICAgIDB4RjgsMHhGRSwweDk2LDB4RjYsMHgyRCww
eDJGLDB4MDksMHgwQiwweDE4LDB4RkYsMHhGOCwweEY2LDB4REIsMHg3QiwweDdCLDB4N0EsCisg
ICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweDJGLDB4QTksMHgyQiwweDBELDB4MTgsMHhGRiwweEY4
LDB4RjYsMHgwMCwweDA4LDB4QTAsMHhFMCwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4QkEs
MHhBQSwweEZBLDB4RUUsMHgxOCwweEZGLDB4RjgsMHhGNiwweEZGLDB4N0UsMHg1RSwweDdGLAor
ICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGRiwweERELDB4RUYsMHhFRCwweEY3LDB4RkUsMHhG
OCwweEY2LDB4RkYsMHg3RSwweEZGLDB4RkYsCisgICAgMHhEOCwweEZFLDB4RjcsMHhGNiwweDU3
LDB4NUYsMHhENywweDdGLDB4MTgsMHhGRiwweEY4LDB4RjYsMHg2RiwweDU1LDB4NzUsMHhENSwK
KyAgICAweEY4LDB4RjYsMHhENywweEY2LDB4QkEsMHhGQywweERDLDB4QkEsMHhGNywweEY2LDB4
RDcsMHhGNiwweEFBLDB4MkEsMHgwQiwweEFBLAorICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHg1
NywweDVELDB4QkYsMHhCQiwweDE3LDB4RkYsMHhGOCwweEY2LDB4NTUsMHhERCwweEZGLDB4RkQs
CisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEZGLDB4RkQsMHhGRiwweDc3LDB4MTgsMHhGRiww
eEY4LDB4RjYsMHhGRiwweDdBLDB4QkQsMHhGRiwKKyAgICAweEY4LDB4RkUsMHhGNywweEY2LDB4
REIsMHhGRiwweEZGLDB4QUUsMHgxOCwweEZGLDB4RjgsMHhGNiwweEJCLDB4RkEsMHhGQSwweEZG
LAorICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHg3RiwweDdELDB4N0YsMHg5QiwweEQ3LDB4RkUs
MHhGOCwweEY2LDB4REQsMHhGRCwweEY1LDB4RDUsCisgICAgMHhGOCwweEY2LDB4RDcsMHhGNiww
eDhFLDB4OUMsMHhGRSwweDJBLDB4RjgsMHhGNiwweEQ3LDB4RjYsMHhBQSwweEIyLDB4RjgsMHhC
MiwKKyAgICAweEY3LDB4RjYsMHg5OCwweEY2LDB4QTAsMHhBQSwweEU4LDB4QUEsMHhENywweEY2
LDB4OTYsMHhFRSwweEUwLDB4QUUsMHg2QSwweEZFLAorICAgIDB4OTYsMHhGNiwweDc2LDB4RUUs
MHg4OCwweEQ4LDB4NTQsMHhCMiwweDk1LDB4RUUsMHg1NiwweEU2LDB4Q0EsMHhGQiwweEZGLDB4
RkUsCisgICAgMHg3NiwweEVFLDB4NTUsMHhFRSwweDAwLDB4QTcsMHhENywweEE1LDB4NzYsMHhG
NiwweDU1LDB4RTYsMHhGRiwweEZGLDB4N0MsMHg3OCwKKyAgICAweDc2LDB4RUUsMHgzNSwweEU2
LDB4QkEsMHhFQSwweEIyLDB4RkEsMHgzNiwweEVFLDB4NTUsMHhFNiwweDU1LDB4REYsMHhENyww
eEJBLAorICAgIDB4NzUsMHhFRSwweDM1LDB4RTYsMHhGNiwweEZGLDB4M0YsMHhCNSwweDc2LDB4
RUUsMHg1NSwweEU2LDB4RjMsMHgyMywweEIzLDB4RkYsCisgICAgMHg5NiwweEVFLDB4NTUsMHhF
NiwweEFELDB4QkIsMHhBRiwweDJGLDB4OTYsMHhFRSwweDc2LDB4RUUsMHg3OCwweEZFLDB4N0Ys
MHg2QiwKKyAgICAweDk2LDB4RUUsMHg3NiwweEVFLDB4NjUsMHg3RCwweDVGLDB4N0QsMHg5NSww
eEVFLDB4NzYsMHhFRSwweDU1LDB4NTUsMHg3QiwweDk5LAorICAgIDB4OTYsMHhFRSwweDc2LDB4
RUUsMHhCNSwweDU1LDB4NzUsMHg3QSwweDk2LDB4RUUsMHgzNCwweEU2LDB4RTIsMHg2OCwweEZF
LDB4N0UsCisgICAgMHgxNCwweEU2LDB4NzEsMHhDRCwweDVFLDB4RkEsMHhGOCwweEU4LDB4RjQs
MHhERCwweDUxLDB4Q0QsMHg1NywweDdGLDB4QUEsMHgyQSwKKyAgICAweEQzLDB4REQsMHg1MSww
eENELDB4MkQsMHgyRSwweDJBLDB4OEEsMHgxNCwweERFLDB4QjMsMHhENSwweDhBLDB4QUIsMHhF
RiwweEFGLAorICAgIDB4MTQsMHhFNiwweDkyLDB4RDUsMHg3OCwweDdBLDB4RUEsMHg2QSwweEQz
LDB4REQsMHg5MiwweEQ1LDB4MDEsMHg4MSwweEEzLDB4NDIsCisgICAgMHg3MiwweEQ1LDB4Q0Ys
MHhCQywweEY4LDB4NjgsMHhGQywweDVFLDB4MTAsMHhDNSwweENGLDB4QkMsMHhCOCwweEYzLDB4
NzIsMHg1NiwKKyAgICAweEYwLDB4QzQsMHhDRiwweEJDLDB4ODEsMHg4RCwweDc1LDB4RTYsMHgx
MCwweEM1LDB4QUYsMHhCQywweDNCLDB4QUUsMHg5QiwweDlFLAorICAgIDB4OTEsMHhENSwweEYw
LDB4QzQsMHhFQiwweEVGLDB4QUQsMHgyQiwweDUxLDB4Q0QsMHg2RSwweEI0LDB4RDcsMHg1RSww
eDVFLDB4NzgsCisgICAgMHgzMSwweENELDB4QUYsMHhCQywweEUzLDB4Q0IsMHg4QiwweEFELDB4
QUYsMHhCQywweDJELDB4QUMsMHgzNiwweDlFLDB4QkMsMHg1NCwKKyAgICAweDUxLDB4Q0QsMHhB
RiwweEJDLDB4MjksMHgyQiwweDBGLDB4MkQsMHg3MSwweENELDB4MzEsMHhDNSwweEFBLDB4RUEs
MHhGRiwweDdELAorICAgIDB4MzEsMHhDRCwweENGLDB4QkMsMHhEQSwweEZFLDB4MkUsMHgyQSww
eDcyLDB4Q0QsMHhGMCwweEM0LDB4QUQsMHgyRiwweEFBLDB4MkEsCisgICAgMHg3MiwweENELDB4
NTEsMHhDRCwweDVELDB4NUUsMHgxNiwweDdDLDB4NzEsMHhDRCwweDUxLDB4Q0QsMHgxRCwweEY3
LDB4RTQsMHhFQSwKKyAgICAweDg3LDB4N0EsMHgyNSwweDZBLDB4N0UsMHhFRSwweEVFLDB4QUEs
MHhBNywweDdBLDB4MjUsMHg2QSwweEJELDB4RkQsMHhGRCwweDJFLAorICAgIDB4QzcsMHg3QSww
eDQ1LDB4NkEsMHgyRSwweEQ3LDB4RjUsMHhERiwweEM3LDB4N0EsMHgyNSwweDZBLDB4MDIsMHgy
QiwweEY3LDB4RjUsCisgICAgMHhFOCwweDgyLDB4NDUsMHg3MiwweDJBLDB4MEIsMHhBRiwweEZE
LDB4RTgsMHg4MiwweDg2LDB4N0EsMHhBQSwweEIwLDB4MkEsMHhCRCwKKyAgICAweEU4LDB4ODIs
MHhBNywweDdBLDB4RkEsMHg2MCwweEM4LDB4RkQsMHhFOCwweDgyLDB4ODcsMHg3QSwweEEzLDB4
ODksMHhDQSwweDgyLAorICAgIDB4RTgsMHg4MiwweDg3LDB4N0EsMHgwOCwweDIwLDB4QUEsMHg2
MiwweEU4LDB4ODIsMHg4NiwweDdBLDB4NzAsMHhGMCwweEJBLDB4RUIsCisgICAgMHhFOCwweDgy
LDB4QTcsMHg3QSwweDQ5LDB4RjksMHhGOSwweEVCLDB4RTgsMHg4QSwweEE3LDB4N0EsMHg5Miww
eDJBLDB4QkUsMHhBRiwKKyAgICAweEU4LDB4ODIsMHhBNywweDdBLDB4MkIsMHhBRiwweDU2LDB4
QTYsMHhFOCwweDgyLDB4QzcsMHg4MiwweDA3LDB4QTEsMHgwNSwweEFELAorICAgIDB4QzgsMHg4
QSwweEU4LDB4ODIsMHhCNSwweEY1LDB4OTUsMHhFQywweDA4LDB4OEIsMHhDOCwweDgyLDB4RUIs
MHhFQSwweEU5LDB4REYsCisgICAgMHgwOSwweDhCLDB4QzgsMHg4MiwweDdCLDB4RkIsMHhGRCww
eDJFLDB4MDksMHg4QiwweEM4LDB4ODIsMHg3RiwweEZCLDB4QTksMHgzNywKKyAgICAweEU4LDB4
OEEsMHhDOCwweDgyLDB4RUIsMHg0NSwweDg2LDB4MDQsMHgwOCwweDhCLDB4QzgsMHg4MiwweDM1
LDB4QTUsMHhGRSwweEJFLAorICAgIDB4MDksMHg4QiwweEM4LDB4ODIsMHhFQSwweEYyLDB4RkYs
MHhBNywweDA5LDB4OEIsMHhDOCwweDgyLDB4M0UsMHg5MywweEZCLDB4N0MsCisgICAgMHgyOSww
eDhCLDB4RTgsMHg4MiwweEE3LDB4NUQsMHg2OSwweEE5LDB4MjksMHg4QiwweEU4LDB4ODIsMHgw
RiwweDhGLDB4NkYsMHg3RiwKKyAgICAweEVDLDB4QTMsMHgwOSwweDhCLDB4MEYsMHg3NSwweDU1
LDB4NTUsMHhCMywweERELDB4MDksMHg4QiwweDBBLDB4QkQsMHg1NSwweDU1LAorICAgIDB4NTUs
MHhFRSwweDI5LDB4OEIsMHgwMCwweEFBLDB4RkQsMHg1NSwweDMyLDB4Q0QsMHg4NCwweDUxLDB4
NzgsMHg3OCwweDdBLDB4N0YsCisgICAgMHg0MywweDQ5LDB4RTIsMHgzOCwweEJGLDB4RDQsMHhC
RSwweDBBLDB4ODQsMHg1MSwweDAzLDB4NDEsMHhBRCwweEZELDB4RUYsMHg2QSwKKyAgICAweEE0
LDB4NTEsMHgyMywweDQxLDB4OEIsMHg4QiwweEJFLDB4RjcsMHhBNSwweDU5LDB4NDMsMHg0OSww
eDJFLDB4M0UsMHgyRiwweDJELAorICAgIDB4MjYsMHg3MiwweEM1LDB4NjEsMHgzRCwweEJELDB4
QkQsMHhCNSwweEM4LDB4OEEsMHgyNiwweDcyLDB4MEYsMHgwQiwweEFELDB4QjUsCisgICAgMHgy
QSwweDlCLDB4QTcsMHg4MiwweDAyLDB4MkIsMHhBRCwweEFELDB4MjksMHg5QiwweEM5LDB4OEEs
MHg2QSwweEFBLDB4MjAsMHgwQSwKKyAgICAweDBBLDB4OUIsMHg0NywweDdBLDB4N0UsMHhGQyww
eEY4LDB4RjgsMHg2NywweDdBLDB4MDYsMHg3MiwweERELDB4RUYsMHhFRiwweDJDLAorICAgIDB4
ODcsMHg4MiwweEU2LDB4NjksMHg1RCwweDdFLDB4RkEsMHhFMiwweDQ3LDB4N0EsMHhFNSwweDY5
LDB4MUQsMHhCNSwweEQ3LDB4RjcsCisgICAgMHg4OCwweDdBLDB4MjYsMHg3MiwweDJFLDB4QTMs
MHgwRiwweEVELDB4ODgsMHg4MiwweDA1LDB4NjIsMHg3OCwweEY4LDB4N0UsMHg1NywKKyAgICAw
eEU2LDB4NjEsMHg0MywweDQ5LDB4NUUsMHg3MCwweEMwLDB4ODAsMHg4NCwweDUxLDB4QzIsMHgz
OCwweERGLDB4NUUsMHhGQSwweEEwLAorICAgIDB4NDQsMHg0OSwweDAzLDB4NDEsMHhGRCwweDc1
LDB4QTksMHhBOCwweDY0LDB4NDksMHgwMywweDQxLDB4RTMsMHhCRiwweEU3LDB4OUIsCisgICAg
MHg4NSwweDUxLDB4MDMsMHg0MSwweDk1LDB4RkYsMHhBRiwweDBBLDB4QTUsMHg1OSwweDQzLDB4
NDksMHgyRCwweDJELDB4MkUsMHgyRiwKKyAgICAweDI2LDB4NkEsMHhDNSwweDU5LDB4QjksMHhB
RCwweEFELDB4RUQsMHg4NywweDcyLDB4MDYsMHg2QSwweEJCLDB4RkYsMHg5RiwweDNCLAorICAg
IDB4QTgsMHg3QSwweDI2LDB4NkEsMHg3RiwweEZCLDB4QUEsMHgwMiwweDY3LDB4NzIsMHgwNiww
eDYyLDB4MkIsMHgyQSwweDg4LDB4NzgsCisgICAgMHg2NywweDcyLDB4NjMsMHg1MSwweDc4LDB4
NTgsMHg1RSwweDVGLDB4NDMsMHg0OSwweEMyLDB4MzgsMHhEQSwweDVBLDB4RjgsMHhGOCwKKyAg
ICAweEU1LDB4NjEsMHgyMywweDQxLDB4MkQsMHhBRCwweEFELDB4QjUsMHgyNiwweDcyLDB4QTUs
MHg1OSwweDAyLDB4MkIsMHhBNywweDc1LAorICAgIDB4MjcsMHg3MiwweEM1LDB4NjEsMHhFOCww
eEU4LDB4RkUsMHhBOSwweDI3LDB4NzIsMHhBNSwweDYxLDB4OUYsMHg5NSwweDFGLDB4OUUsCisg
ICAgMHhFOSwweDhBLDB4NDcsMHg3QSwweDJELDB4QTksMHgyRCwweDg5LDB4NEEsMHg5MywweEE4
LDB4ODIsMHg4QSwweEZBLDB4N0IsMHg1RiwKKyAgICAweEM5LDB4OEEsMHg0NywweDdBLDB4Njgs
MHhFQSwweEFCLDB4QTUsMHhBOCwweDgyLDB4NjcsMHg3QSwweEFCLDB4MEIsMHgyRiwweEEyLAor
ICAgIDB4MjksMHg5MywweDg4LDB4N0EsMHg3RCwweEZGLDB4RkUsMHhFMiwweDRBLDB4OTMsMHg4
OCwweDdBLDB4MEYsMHgzRCwweEQ1LDB4RDUsCisgICAgMHhCNiwweEY2LDB4MDksMHg4QiwweDBC
LDB4MkYsMHhBRCwweEI1LDB4RDcsMHhGRSwweEQzLDB4REQsMHgwMCwweDAwLDB4MDIsMHgwOSwK
KyAgICAweEQ3LDB4RkUsMHg1NSwweEVFLDB4NjgsMHg3OCwweDU4LDB4REEsMHg3NiwweEVFLDB4
NTUsMHhFRSwweEZGLDB4QkIsMHhCQiwweDY5LAorICAgIDB4NzUsMHhFRSwweDE1LDB4RUUsMHgy
QSwweEEyLDB4QTgsMHhFMiwweDk2LDB4RUUsMHg1NSwweEVFLDB4MzcsMHgyRCwweDA1LDB4MkQs
CisgICAgMHhGOCwweEZFLDB4QjYsMHhGNiwweDI5LDB4MkQsMHgwRCwweDJELDB4MTgsMHhGRiww
eEY4LDB4RjYsMHg3RSwweEZGLDB4RkYsMHhEQiwKKyAgICAweDM5LDB4RkYsMHhGOCwweEZFLDB4
QkQsMHhCRCwweEVGLDB4MjksMHgzOSwweEZGLDB4MTgsMHhGRiwweDVGLDB4NkYsMHg3RiwweDVG
LAorICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhBQSwweEE4LDB4QTIsMHhBQSwweDE4LDB4RkYs
MHhGOCwweEY2LDB4RkIsMHhFQiwweDkyLDB4NUUsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiww
eEQ3LDB4NzcsMHhERiwweEZGLDB4RDcsMHhGRSwweEY4LDB4RjYsMHg3NywweERELDB4RjUsMHhG
NSwKKyAgICAweEY4LDB4RjYsMHhENywweEY2LDB4QUMsMHhFQSwweEU4LDB4RUEsMHhGOCwweEY2
LDB4RDcsMHhGNiwweEEyLDB4OEEsMHhBQiwweEFFLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYs
MHhBQSwweDBFLDB4QUEsMHhBQSwweDE4LDB4RkYsMHhENywweEY2LDB4QkYsMHhCQiwweEJCLDB4
QUEsCisgICAgMHhGNywweEZFLDB4MTgsMHhGNywweEFFLDB4QkUsMHhCQSwweEFBLDB4MTgsMHhG
RiwweEY3LDB4RjYsMHhGRiwweEY3LDB4RkYsMHg3RSwKKyAgICAweEQ4LDB4RkUsMHhGNywweEY2
LDB4NTUsMHhGNSwweERELDB4RkQsMHhGNywweEZFLDB4RjgsMHhGNiwweEZGLDB4RkYsMHhGRiww
eEVGLAorICAgIDB4MTksMHhGRiwweEY3LDB4RjYsMHhERiwweEZGLDB4REQsMHhGRCwweDE4LDB4
RkYsMHhGNywweEY2LDB4RkYsMHg3RCwweEVELDB4RkYsCisgICAgMHgxOCwweEZGLDB4RjgsMHhG
NiwweEZBLDB4RkUsMHg3RiwweDdGLDB4RDcsMHhGRSwweEY4LDB4RjYsMHg5NSwweEQ1LDB4NTUs
MHg3NSwKKyAgICAweEY3LDB4RjYsMHhEOCwweEY2LDB4MkEsMHhBOCwweEE4LDB4QUEsMHhGNyww
eEY2LDB4RDcsMHhGNiwweEI4LDB4REIsMHhFNywweEY2LAorICAgIDB4RjcsMHhGNiwweEI3LDB4
RjYsMHg3RSwweDdFLDB4NUUsMHg1RiwweEI3LDB4RjYsMHg3NiwweEVFLDB4QUEsMHhFQiwweEUy
LDB4RkEsCisgICAgMHg5NiwweEVFLDB4NTUsMHhFRSwweEEwLDB4QzgsMHhFMiwweEVCLDB4NzYs
MHhFRSwweDU2LDB4RTYsMHg4OCwweEFDLDB4QTAsMHgwMCwKKyAgICAweDc2LDB4RUUsMHg1Niww
eEVFLDB4MjAsMHgwMiwweEFBLDB4QTIsMHg3NiwweEVFLDB4MTUsMHhFNiwweEM4LDB4MkEsMHhB
MiwweDgyLAorICAgIDB4NzYsMHhFRSwweDM1LDB4RTYsMHhGQSwweEVBLDB4RjIsMHhGQSwweDU1
LDB4RUUsMHgxNCwweERFLDB4RkEsMHhFOCwweEY4LDB4RkEsCisgICAgMHg1NSwweEU2LDB4MTQs
MHhERSwweDBCLDB4MEIsMHgyRiwweDg1LDB4NzYsMHhFRSwweDU1LDB4RTYsMHhFRiwweDJBLDB4
MjksMHhCRCwKKyAgICAweDk2LDB4RUUsMHg3NiwweEVFLDB4QkQsMHg3RiwweERELDB4RjcsMHg5
NiwweEVFLDB4NzYsMHhFRSwweDZELDB4QTcsMHgyNSwweDNGLAorICAgIDB4OTYsMHhFRSwweDc2
LDB4RUUsMHg3RCwweEY1LDB4RkIsMHhGOCwweDk2LDB4RUUsMHg3NiwweEVFLDB4RkIsMHhCQSww
eEZGLDB4RkYsCisgICAgMHg5NiwweEY2LDB4NzYsMHhFRSwweEVGLDB4RUIsMHg4QiwweEVCLDB4
OTYsMHhFRSwweDE0LDB4RTYsMHg2QSwweDZBLDB4RTgsMHg2OCwKKyAgICAweDE0LDB4RTYsMHhE
NCwweERELDB4REEsMHgwOCwweDBBLDB4MjgsMHgzNCwweEU2LDB4RjQsMHhERCwweDVELDB4N0Ys
MHhGQiwweENBLAorICAgIDB4MTQsMHhFNiwweEQzLDB4REQsMHg1NSwweDU3LDB4N0IsMHhFMiww
eEY0LDB4REQsMHhCMywweERELDB4OEIsMHgwQSwweEFGLDB4QTgsCisgICAgMHgxNCwweEU2LDB4
OTIsMHhENSwweDZBLDB4N0EsMHhBQSwweEEwLDB4RjQsMHhERCwweEYwLDB4QzQsMHhFQSwweEVB
LDB4NzgsMHg3OCwKKyAgICAweDEwLDB4QzUsMHg4RSwweEI0LDB4QTgsMHhCQywweEZBLDB4REUs
MHhDRiwweEJDLDB4QUYsMHhCQywweDAwLDB4RjIsMHhGRSwweEFDLAorICAgIDB4RUYsMHhCQyww
eDhFLDB4QjQsMHhFMywweEY3LDB4NUYsMHg3NCwweEQwLDB4QzQsMHg0RCwweEFDLDB4QTIsMHhF
QSwweEZFLDB4RDcsCisgICAgMHg1MSwweENELDB4Q0YsMHhCQywweDA5LDB4MDUsMHg4RCwweEE1
LDB4NTEsMHhDRCwweDhFLDB4QjQsMHg3OCwweEUwLDB4QTAsMHg4MCwKKyAgICAweDMxLDB4Q0Qs
MHhDRiwweEJDLDB4MjUsMHhFNSwweEY1LDB4RkYsMHhGMCwweEJDLDB4RUMsMHhBMywweERFLDB4
RkMsMHg1RSwweEY4LAorICAgIDB4MzEsMHhDRCwweDhGLDB4QjQsMHgwOSwweDBELDB4MDksMHgw
OSwweDUxLDB4Q0QsMHgxMCwweEM1LDB4OEIsMHhGRSwweEFDLDB4N0EsCisgICAgMHg3MiwweENE
LDB4RjAsMHhDNCwweEI3LDB4QTcsMHgyRCwweEFBLDB4OTIsMHhENSwweDMxLDB4QzUsMHhBRCww
eEVGLDB4RUMsMHgyRSwKKyAgICAweDkzLDB4RDUsMHg1MSwweENELDB4RDcsMHg1RiwweDVGLDB4
RkEsMHg3MSwweENELDB4NTEsMHhDRCwweEYzLDB4RkIsMHhGNiwweDdFLAorICAgIDB4ODYsMHg3
QSwweDQ2LDB4NzIsMHhBOCwweEE2LDB4RUUsMHhBOCwweDg2LDB4N0EsMHg0NiwweDcyLDB4Mjgs
MHhBQiwweDJCLDB4QUEsCisgICAgMHhBNywweDdBLDB4NDUsMHg3MiwweERGLDB4NUYsMHhFQSww
eDYyLDB4ODYsMHg3QSwweDQ1LDB4NzIsMHg2OCwweDYwLDB4NjAsMHg0MywKKyAgICAweDg2LDB4
NzIsMHgyNSwweDcyLDB4RkUsMHg5RiwweEFBLDB4QTAsMHg4NywweDdBLDB4NDYsMHg3MiwweDAz
LDB4QkIsMHg3RSwweDhGLAorICAgIDB4QzgsMHg4MiwweDI1LDB4NkEsMHgyQiwweEFCLDB4REYs
MHg1NywweEE3LDB4ODIsMHgwNSwweDZBLDB4MDAsMHgwMCwweDBCLDB4QkQsCisgICAgMHhFOCww
eDgyLDB4ODcsMHg3QSwweEVFLDB4MkIsMHhCQiwweDc1LDB4RTgsMHg4MiwweEE3LDB4N0EsMHhF
RiwweEFCLDB4QTksMHgyOSwKKyAgICAweEU4LDB4ODIsMHg4NywweDdBLDB4RUIsMHg3QSwweDg4
LDB4MEUsMHhFOCwweDgyLDB4QTgsMHg4MiwweDAzLDB4ODIsMHhBQSwweDI4LAorICAgIDB4RTgs
MHg4MiwweDg4LDB4ODIsMHgyQSwweEEyLDB4MjgsMHhCOCwweDA5LDB4OEIsMHhBNywweDdBLDB4
RkYsMHhERSwweEJFLDB4RTgsCisgICAgMHhFOCwweDgyLDB4QTcsMHg3QSwweEFCLDB4RTIsMHhD
MywweDg5LDB4RTgsMHg4MiwweEE4LDB4ODIsMHhBOCwweDhBLDB4QUMsMHhFQiwKKyAgICAweEU4
LDB4ODIsMHhDOCwweDgyLDB4MEEsMHhGRiwweDJCLDB4MkEsMHgwOSwweDgzLDB4QTcsMHg3QSww
eDJFLDB4QkYsMHg5RSwweEZBLAorICAgIDB4MDksMHg4QiwweEM4LDB4ODIsMHgzQSwweDc3LDB4
RTMsMHhGMCwweDA4LDB4OEIsMHhDOCwweDgyLDB4N0EsMHg2RCwweEY1LDB4OTUsCisgICAgMHgw
OSwweDhCLDB4QzgsMHg4MiwweEMxLDB4Q0YsMHhBQiwweEQ0LDB4MDgsMHg4QiwweEM4LDB4ODIs
MHg1RSwweDdFLDB4RkEsMHg3RiwKKyAgICAweDA4LDB4OEIsMHhDNywweDgyLDB4ODIsMHgwMSww
eENCLDB4QkYsMHgyOSwweDhCLDB4QzgsMHg4MiwweEY1LDB4NkYsMHhBOCwweEVCLAorICAgIDB4
MDksMHg4QiwweEM5LDB4ODIsMHhCRiwweDAyLDB4MzgsMHhGRSwweDA5LDB4OEIsMHhDOCwweDgy
LDB4MDAsMHhCMCwweEJFLDB4OTYsCisgICAgMHgyOSwweDhCLDB4QzgsMHg3QSwweEZDLDB4RkEs
MHhGQSwweDdFLDB4QzksMHg4MiwweDg0LDB4NTEsMHg3OCwweDY4LDB4RjgsMHg3OCwKKyAgICAw
eDYzLDB4NDksMHgyMywweDQ5LDB4RUYsMHgyRSwweDZDLDB4RjAsMHg4NCwweDUxLDB4NDMsMHg0
OSwweEVCLDB4QkUsMHhBRiwweERELAorICAgIDB4ODQsMHg1MSwweDQ0LDB4NDksMHhGNSwweDVG
LDB4QkUsMHgzQSwweEM1LDB4NjEsMHg2NCwweDUxLDB4QkQsMHgzNSwweEFGLDB4QUYsCisgICAg
MHhFNiwweDY5LDB4QTUsMHg2MSwweDM4LDB4QUYsMHhCOSwweDI5LDB4QTgsMHg4MiwweEU1LDB4
NjksMHhBRCwweEJGLDB4MkQsMHgyOSwKKyAgICAweEU5LDB4OTIsMHhBOCwweDgyLDB4ODksMHhC
OSwweEJCLDB4QUEsMHgwOSwweDkzLDB4QTgsMHg4QSwweDg4LDB4RkEsMHhGRCwweDc3LAorICAg
IDB4RUEsMHg5MiwweDY3LDB4ODIsMHhFOCwweEZBLDB4RkUsMHg3RSwweDY3LDB4N0EsMHgyNiww
eDcyLDB4MUUsMHgxQSwweDU4LDB4NzcsCisgICAgMHg2NywweDdBLDB4MjYsMHg3MiwweEUwLDB4
MDAsMHgzQywweEQ1LDB4NDYsMHg3MiwweDA2LDB4NzIsMHhFNSwweERFLDB4MzQsMHg5QywKKyAg
ICAweDY3LDB4N0EsMHgwNiwweDZBLDB4RkQsMHhFRSwweEFFLDB4MEEsMHg0NiwweDcyLDB4RTUs
MHg2MSwweDVFLDB4RkEsMHg3RSwweDVDLAorICAgIDB4MDYsMHg2QSwweEE1LDB4NTksMHhGQSww
eEYwLDB4NzIsMHg1NSwweEE1LDB4NTksMHgyMywweDQ5LDB4N0EsMHg2OCwweDVBLDB4N0EsCisg
ICAgMHgyMywweDQ5LDB4RTMsMHg0MCwweDI4LDB4RjAsMHhFOCwweEIyLDB4NjQsMHg0OSwweDAz
LDB4NDEsMHhCRCwweDlELDB4MkYsMHhCOSwKKyAgICAweDY0LDB4NDksMHgyMywweDQ5LDB4MzUs
MHhBRCwweEFGLDB4RkUsMHg4NCwweDU5LDB4MjMsMHg0OSwweDlBLDB4QUEsMHgyQSwweDJBLAor
ICAgIDB4MDUsMHg2MiwweEE1LDB4NTksMHgzRiwweEJGLDB4QjUsMHhERCwweDg4LDB4NzIsMHhD
NSwweDU5LDB4MkIsMHgyNywweEFGLDB4QUQsCisgICAgMHg4OCwweDcyLDB4NDYsMHg3MiwweEJF
LDB4QjIsMHhFMiwweEMyLDB4NjcsMHg3MiwweEE0LDB4NTksMHhFMiwweDY4LDB4N0EsMHg3QSwK
KyAgICAweEE0LDB4NTksMHg0MywweDQ5LDB4RTAsMHhFOCwweEY4LDB4N0UsMHg2NCwweDUxLDB4
MDIsMHg0MSwweERDLDB4REMsMHhGQSwweEVGLAorICAgIDB4QTUsMHg1OSwweDIzLDB4NDksMHhC
RCwweEFGLDB4QkQsMHgzQiwweDQ3LDB4NzIsMHg4NCwweDU5LDB4RjUsMHhENSwweEJELDB4MkYs
CisgICAgMHgyNywweDcyLDB4QzYsMHg2OSwweEE1LDB4QjcsMHhBQSwweDg4LDB4QTgsMHg4Miww
eDA2LDB4NkEsMHhENSwweEY1LDB4QjUsMHgwQSwKKyAgICAweDA5LDB4OTMsMHg2NywweDdBLDB4
RUQsMHhGRiwweEFFLDB4QTIsMHhDOSwweDhBLDB4MjYsMHg3MiwweEUwLDB4N0EsMHg3OCwweEZB
LAorICAgIDB4ODgsMHg4MiwweDI2LDB4NzIsMHgyRiwweDlELDB4RkYsMHhGQiwweEU5LDB4OEEs
MHg4NywweDgyLDB4QUIsMHg4MywweDA5LDB4MjUsCisgICAgMHg0QSwweDkzLDB4QzgsMHg4Miww
eDYyLDB4NkEsMHhFQiwweDU1LDB4QzksMHg4MiwweDY3LDB4N0EsMHhCNywweERGLDB4N0EsMHg3
OCwKKyAgICAweDBDLDB4OUMsMHhBOCwweDgyLDB4MkQsMHhGRCwweEZELDB4RjUsMHhCNiwweEY2
LDB4NEEsMHg5MywweDBCLDB4QUQsMHhGNSwweDU1LAorICAgIDB4NzYsMHhGNiwweDExLDB4QzUs
MHgwMCwweDgwLDB4MkIsMHhBRCwweDc2LDB4RUUsMHg1NSwweEVFLDB4RkUsMHhCNSwweEI1LDB4
QjUsCisgICAgMHg3NiwweEVFLDB4NTUsMHhFRSwweEU4LDB4QUUsMHg3RSwweDVFLDB4RDcsMHhG
NiwweDU1LDB4RUUsMHhCRCwweEE3LDB4QUYsMHhBNSwKKyAgICAweDE4LDB4RkYsMHhCNywweEY2
LDB4QUQsMHgyRiwweEFGLDB4MkIsMHgxOCwweEZGLDB4RDcsMHhGNiwweEJBLDB4RjgsMHhGQSww
eEJFLAorICAgIDB4MzksMHhGRiwweEY4LDB4RjYsMHg4NywweEFELDB4QUQsMHhBRCwweDE4LDB4
RkYsMHgzOCwweEY3LDB4MjIsMHg4OCwweDAyLDB4MDgsCisgICAgMHgxOCwweEZGLDB4RjgsMHhG
NiwweEFBLDB4QTgsMHhFMiwweEFBLDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGRSwweEZBLDB4RkYs
MHhGRSwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4RkUsMHg3OSwweEVCLDB4REYsMHhENyww
eEZFLDB4RjgsMHhGNiwweERELDB4NTcsMHhERCwweEZGLAorICAgIDB4RjgsMHhGNiwweEQ3LDB4
RjYsMHhFQSwweEIyLDB4QkUsMHhCQSwweEY3LDB4RjYsMHhENywweEY2LDB4QUUsMHg5RSwweDNF
LDB4QTcsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEUzLDB4ODgsMHhBQSwweDhBLDB4Rjgs
MHhGRSwweEY3LDB4RjYsMHhGRiwweEZGLDB4RjksMHhGRiwKKyAgICAweEQ3LDB4RkUsMHhGNyww
eEY2LDB4NUYsMHg1NywweDU3LDB4N0YsMHhGNywweEZFLDB4MTgsMHhGNywweDJFLDB4MEIsMHhB
QSwweEZGLAorICAgIDB4RjgsMHhGRSwweDE3LDB4RUYsMHgyOCwweEEyLDB4QTIsMHhBQSwweDE3
LDB4RkYsMHhGOCwweEY2LDB4RkQsMHg1NywweDVGLDB4RkIsCisgICAgMHgxOCwweEZGLDB4Rjgs
MHhGNiwweEFCLDB4RkUsMHhCOSwweERFLDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGRiwweEVFLDB4
QUEsMHhBQSwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4N0UsMHhEQSwweDVFLDB4RDcsMHhE
OCwweEZFLDB4RjcsMHhGNiwweEQ3LDB4RjcsMHg5RCwweEJELAorICAgIDB4RjcsMHhGNiwweEI3
LDB4RUUsMHhBQSwweEZFLDB4NUYsMHg3NywweEQ3LDB4RjYsMHg5NiwweEVFLDB4MDAsMHhBQSww
eEVGLDB4REYsCisgICAgMHhENywweEY2LDB4NzYsMHhFRSwweEE4LDB4RTIsMHhFQiwweEZGLDB4
QjcsMHhGNiwweDU1LDB4RTYsMHhFOCwweEZDLDB4RkMsMHhGRSwKKyAgICAweDc2LDB4RUUsMHg1
NSwweEU2LDB4OEUsMHhBRSwweEE4LDB4MDAsMHg5NiwweEVFLDB4NzYsMHhFRSwweDdELDB4NzUs
MHhENSwweDU1LAorICAgIDB4NzYsMHhFRSwweDU2LDB4RUUsMHhCRSwweEY0LDB4OUUsMHhGQSww
eDc1LDB4RUUsMHg1NiwweEVFLDB4RDUsMHhGNSwweEFELDB4QkIsCisgICAgMHg3NiwweEVFLDB4
MzUsMHhFNiwweEZBLDB4RkEsMHg4MiwweEEwLDB4NTUsMHhFRSwweDE0LDB4RTYsMHhGMiwweEY4
LDB4MjAsMHgwMCwKKyAgICAweDU1LDB4RUUsMHgxNCwweERFLDB4QUYsMHhERiwweEJFLDB4QjAs
MHg3NSwweEVFLDB4MzUsMHhFNiwweEFCLDB4MkIsMHgyQiwweEFELAorICAgIDB4OTYsMHhFRSww
eDc2LDB4RUUsMHhCRiwweDJGLDB4OEYsMHhFRiwweEI2LDB4RjYsMHg3NSwweEVFLDB4QUYsMHhC
RiwweEJBLDB4MkEsCisgICAgMHg5NiwweEVFLDB4NTUsMHhFNiwweEZDLDB4N0IsMHhCOCwweDI4
LDB4OTYsMHhFRSwweDU1LDB4RTYsMHgyQiwweEFGLDB4MkIsMHgwMCwKKyAgICAweDk1LDB4RUUs
MHg3NiwweEVFLDB4NkIsMHhGQiwweEYyLDB4RTIsMHg5NiwweEVFLDB4MTQsMHhFNiwweEU4LDB4
RTAsMHg2MiwweEY4LAorICAgIDB4MzQsMHhFNiwweEY0LDB4REQsMHhGMCwweEY4LDB4RkYsMHhE
NywweDE0LDB4RTYsMHhGNCwweERELDB4MDIsMHhCQSwweEZCLDB4NUQsCisgICAgMHgxNCwweEU2
LDB4RDMsMHhERCwweEEwLDB4QkUsMHhENywweEQ2LDB4RDMsMHhFNSwweEY0LDB4REQsMHg1RCww
eERELDB4RUYsMHhGRiwKKyAgICAweDE0LDB4RTYsMHhEMywweEQ1LDB4MDIsMHgwMiwweEUyLDB4
NjgsMHhCMywweEQ1LDB4QUYsMHhCQywweEYwLDB4NzgsMHg1OCwweDVFLAorICAgIDB4Q0YsMHhC
QywweDhFLDB4QjQsMHhCOCwweEE4LDB4REYsMHhFRCwweEFGLDB4QkMsMHg0RCwweEFDLDB4MDAs
MHhBOCwweEZBLDB4NTgsCisgICAgMHhBRiwweEJDLDB4MEMsMHhBNCwweEE4LDB4RUEsMHhFRSww
eDdGLDB4OEYsMHhCNCwweDBELDB4QTQsMHgyRSwweEJELDB4QjUsMHhCNSwKKyAgICAweDExLDB4
QzUsMHg2RiwweEI0LDB4MkEsMHgyQiwweDJELDB4QUYsMHg3MiwweEQ1LDB4MTAsMHhDNSwweEFB
LDB4QUYsMHgwRCwweDM1LAorICAgIDB4QjMsMHhENSwweEYwLDB4QzQsMHg1RiwweDdFLDB4N0Es
MHhBQSwweEYwLDB4QzQsMHgwRCwweEE0LDB4NTgsMHg1OCwweEQ4LDB4RDgsCisgICAgMHgzMSww
eENELDB4NkUsMHhCNCwweDA5LDB4MjksMHg4RCwweDg5LDB4MzEsMHhDRCwweEYwLDB4QzQsMHhE
MCwweEYyLDB4ODAsMHgwMiwKKyAgICAweDcyLDB4Q0QsMHgzMSwweENELDB4QjUsMHgwRCwweDJE
LDB4MkYsMHg5MiwweEQ1LDB4NTEsMHhDRCwweEJGLDB4RUEsMHhGQiwweEZGLAorICAgIDB4OTIs
MHhENSwweDUxLDB4Q0QsMHhBMywweERBLDB4REUsMHhBQywweDcxLDB4RDUsMHg1MSwweENELDB4
RjgsMHhGOCwweEVDLDB4MzAsCisgICAgMHhBNywweDdBLDB4NDYsMHg3QSwweEJCLDB4MjgsMHg5
MiwweDgyLDB4QTcsMHg3QSwweDQ1LDB4NzIsMHhFQSwweDEwLDB4QUEsMHhBQSwKKyAgICAweEE3
LDB4N0EsMHg0NSwweDcyLDB4QUEsMHg4NSwweEFBLDB4QTIsMHhBNywweDdBLDB4NDUsMHg2QSww
eEZFLDB4REMsMHhCMiwweEFBLAorICAgIDB4QTcsMHg3QSwweDY2LDB4NzIsMHg2OSwweEU5LDB4
QTYsMHg5QSwweEE3LDB4N0EsMHg0NiwweDcyLDB4QUIsMHhCQSwweDZCLDB4OEYsCisgICAgMHhB
NywweDdBLDB4NDYsMHg3MiwweDU3LDB4NUIsMHhGNywweEQ3LDB4ODcsMHg3QSwweDQ2LDB4NzIs
MHg1NSwweDZCLDB4RkEsMHhBMiwKKyAgICAweDY2LDB4NzIsMHgyNSwweDZBLDB4OUYsMHg3RSww
eDVCLDB4MjgsMHhBNywweDdBLDB4MjUsMHg2QSwweDBBLDB4QUQsMHhGRCwweEZGLAorICAgIDB4
QzcsMHg4MiwweDI1LDB4NkEsMHgwMCwweDhBLDB4QkYsMHg1NywweEU4LDB4OEEsMHg2NiwweDcy
LDB4OEEsMHhBMCwweEVFLDB4RjUsCisgICAgMHhFOCwweDgyLDB4QTcsMHg3QSwweEVDLDB4MUQs
MHhCRCwweDU1LDB4MDgsMHg4QiwweEE3LDB4N0EsMHhGRiwweERGLDB4QUIsMHhCQSwKKyAgICAw
eEU4LDB4ODIsMHhBNywweDgyLDB4MDksMHgwQiwweEMyLDB4OUYsMHhFOCwweDgyLDB4QTcsMHg3
QSwweEFBLDB4QkQsMHhFQiwweEEzLAorICAgIDB4MDksMHg4MywweEE3LDB4N0EsMHhFOCwweEZB
LDB4QkYsMHhCQiwweEU5LDB4ODIsMHhDOCwweDgyLDB4MEYsMHhENSwweDVCLDB4NDIsCisgICAg
MHgwOSwweDhCLDB4QTcsMHg3QSwweEUyLDB4RUEsMHhEOCwweERGLDB4RTgsMHg4QSwweEE3LDB4
N0EsMHgyQiwweEJCLDB4M0QsMHhBRiwKKyAgICAweEU4LDB4OEEsMHhDOCwweDgyLDB4QkMsMHg5
NiwweEVFLDB4RkMsMHgwOCwweDhCLDB4QzgsMHg4MiwweDc3LDB4RDQsMHg1RCwweEI3LAorICAg
IDB4MDksMHg4QiwweEM4LDB4ODIsMHg5NSwweEQ4LDB4RjgsMHhGRiwweDA5LDB4OEIsMHhBNyww
eDgyLDB4QkUsMHhGQSwweEY4LDB4REUsCisgICAgMHhFOCwweDhBLDB4QTgsMHg4MiwweEJBLDB4
RUEsMHhBQiwweDBBLDB4MDksMHg4QiwweEE3LDB4ODIsMHhCQywweEJCLDB4NkIsMHhBQiwKKyAg
ICAweDA4LDB4ODMsMHhBNywweDdBLDB4RkYsMHg3RiwweEZGLDB4RjgsMHhBNywweDdBLDB4ODQs
MHg1MSwweEY4LDB4N0EsMHg3OCwweDVFLAorICAgIDB4QTQsMHg1OSwweDIzLDB4NDEsMHg3OCww
eEZBLDB4RkYsMHg1NywweDg0LDB4NDksMHgyMywweDQ5LDB4QUIsMHgyRCwweDlDLDB4RkQsCisg
ICAgMHhDNSwweDU5LDB4NjQsMHg1MSwweEJBLDB4QkYsMHgzQiwweEZELDB4QzUsMHg2MSwweDg0
LDB4NTksMHgzRSwweEJGLDB4QUIsMHhCQiwKKyAgICAweDI2LDB4NzIsMHhDNSwweDYxLDB4QTUs
MHhBQiwweDA5LDB4MDksMHhFOCwweDhBLDB4MjYsMHg3MiwweEJELDB4QUYsMHgwRiwweEFCLAor
ICAgIDB4RTksMHg5MiwweEE4LDB4OEEsMHgyQiwweDgzLDB4QUEsMHhFQywweEM4LDB4OTIsMHg0
NiwweDdBLDB4RTgsMHhGOCwweEZFLDB4N0UsCisgICAgMHg4OCwweDgyLDB4MDUsMHg3MiwweEIw
LDB4REUsMHg3RiwweEZFLDB4NDYsMHg3QSwweEU1LDB4NjksMHhFQSwweEJBLDB4N0YsMHhFQywK
KyAgICAweDI2LDB4NzIsMHhDNSwweDY5LDB4MDAsMHgwQSwweDNFLDB4REUsMHgyNiwweDcyLDB4
QzUsMHg2MSwweDg4LDB4RTgsMHhGQSwweEJGLAorICAgIDB4MjYsMHg3MiwweDg0LDB4NTksMHgw
MCwweEZFLDB4RkIsMHg3RSwweDI2LDB4NzIsMHg4NCwweDU5LDB4RTgsMHhCRSwweDVGLDB4NUQs
CisgICAgMHhBNSwweDU5LDB4MjMsMHg0OSwweEFBLDB4RkMsMHg3OCwweEVBLDB4NjQsMHg1MSww
eDAyLDB4NDksMHg0OCwweEVBLDB4Q0YsMHg4MCwKKyAgICAweDg0LDB4NTEsMHgwMywweDQ5LDB4
REQsMHhCQiwweEVBLDB4MkEsMHg2NCwweDQ5LDB4MjMsMHg0OSwweEZGLDB4NUMsMHhERiwweDk3
LAorICAgIDB4NDMsMHg0OSwweDAyLDB4NDksMHgyOCwweEU4LDB4RUEsMHgwMCwweEM1LDB4NTks
MHgyMywweDQ5LDB4QUYsMHgyRCwweEJGLDB4MDksCisgICAgMHgyNywweDZBLDB4QTQsMHg1OSww
eEZELDB4QkQsMHhBOSwweDJFLDB4NDcsMHg2QSwweEU1LDB4NjEsMHg4RCwweDAyLDB4QjAsMHhG
RiwKKyAgICAweDY3LDB4NzIsMHhFNSwweDYxLDB4ODAsMHhGMiwweDdCLDB4REQsMHg0NiwweDcy
LDB4QzUsMHg2MSwweDdFLDB4RTIsMHhBQSwweEZBLAorICAgIDB4QTUsMHg1OSwweDQzLDB4NDks
MHg3RSwweEQ4LDB4NTAsMHg3MCwweEE1LDB4NTksMHgwMiwweDQxLDB4RkYsMHhCNywweDJGLDB4
MEIsCisgICAgMHhDNSwweDYxLDB4NDQsMHg1MSwweEFELDB4QUIsMHhBMiwweDA4LDB4NjcsMHg3
QSwweEE1LDB4NjEsMHgyRCwweDBELDB4QkQsMHhCOSwKKyAgICAweDg3LDB4ODIsMHgyNiwweDcy
LDB4NUYsMHg1NywweEFGLDB4ODEsMHgyQSwweDkzLDB4MjYsMHg3MiwweEFELDB4MkQsMHgyRCww
eEFGLAorICAgIDB4MkEsMHg5MywweEM3LDB4OEEsMHhFQSwweDYwLDB4RTgsMHg2MiwweEM4LDB4
OEEsMHgyNywweDcyLDB4RkUsMHhGOCwweEY4LDB4NTgsCisgICAgMHhFOSwweDhBLDB4NDcsMHg3
QSwweEJELDB4MzUsMHgyRCwweDNELDB4RTksMHg4QSwweDQ2LDB4NzIsMHhCRiwweEZFLDB4Rjgs
MHg2MCwKKyAgICAweEE4LDB4ODIsMHgwNiwweDZBLDB4MjAsMHgyMiwweEJBLDB4NUYsMHhBOCww
eDdBLDB4QzUsMHg2MSwweDg4LDB4QUEsMHhFRSwweEQ1LAorICAgIDB4QzgsMHg4MiwweDA2LDB4
NkEsMHgwMiwweDAyLDB4MkIsMHhCNSwweDJBLDB4OEIsMHg4NywweDdBLDB4MkUsMHgyRSwweDNG
LDB4OTUsCisgICAgMHhCMywweERELDB4NkIsMHg5MywweDBCLDB4MkQsMHgzNSwweEY1LDB4NTYs
MHhFRSwweDkzLDB4REQsMHgwMCwweDAyLDB4MEIsMHgwOSwKKyAgICAweDc2LDB4RUUsMHgzNSww
eEU2LDB4QkEsMHhGOCwweEI4LDB4RkUsMHhCNywweEY2LDB4NTUsMHhFRSwweDJELDB4MkQsMHgy
RCwweEFELAorICAgIDB4RjcsMHhGRSwweEI3LDB4RjYsMHgwMiwweDBCLDB4MDMsMHg4QiwweEQ2
LDB4RkUsMHhGOCwweEY2LDB4RkQsMHhENSwweDdELDB4RkQsCisgICAgMHgxOCwweEZGLDB4Rjgs
MHhGNiwweDAyLDB4MEEsMHgwRCwweDJELDB4MTgsMHhGRiwweEY4LDB4RjYsMHgwMCwweDgwLDB4
ODAsMHhBMCwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4ODIsMHhBMCwweENBLDB4QUEsMHgx
OCwweEZGLDB4RjgsMHhGNiwweEZGLDB4RDcsMHhGRCwweDdGLAorICAgIDB4MTgsMHhGRiwweEY4
LDB4RjYsMHg1RSwweDVCLDB4REYsMHhENSwweEQ3LDB4RkUsMHhGOCwweEY2LDB4NUIsMHg1Riww
eDU3LDB4NzUsCisgICAgMHhGNywweEY2LDB4RDgsMHhGNiwweDlDLDB4QTAsMHgyQSwweEFBLDB4
RDcsMHhGRSwweEY3LDB4RjYsMHhERiwweERELDB4REYsMHhGRiwKKyAgICAweEQ4LDB4RkUsMHhG
NywweEY2LDB4NTcsMHg1RCwweDVGLDB4RkYsMHgxOCwweEZGLDB4RjcsMHhGNiwweDU1LDB4RDUs
MHhGRiwweEZELAorICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHg1NywweERELDB4MzYsMHhBRiww
eDE4LDB4RkYsMHhGOCwweEY2LDB4RTMsMHhBQSwweEVDLDB4RkEsCisgICAgMHgxOCwweEZGLDB4
RjgsMHhGNiwweEFGLDB4QUIsMHhBQiwweEFCLDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGRiwweERF
LDB4RkYsMHhFQSwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4RkYsMHg3RiwweDVGLDB4RkUs
MHgxOCwweEZGLDB4RDgsMHhGNiwweEFBLDB4QkEsMHhGMiwweEZBLAorICAgIDB4RjgsMHhGNiww
eEQ3LDB4RjYsMHgyMCwweEI4LDB4RkIsMHg1RiwweEY4LDB4RjYsMHhCNywweEVFLDB4QTAsMHhD
QSwweEVFLDB4NUUsCisgICAgMHhENywweEY2LDB4OTYsMHhFRSwweDc4LDB4RkEsMHhGRSwweEZF
LDB4QjYsMHhGNiwweDc2LDB4RUUsMHhGQSwweEVFLDB4RkEsMHhERSwKKyAgICAweDk2LDB4RUUs
MHg1NSwweEU2LDB4RTgsMHhFQSwweDc4LDB4N0UsMHg5NiwweEVFLDB4NTUsMHhFNiwweEVBLDB4
RkEsMHhBRiwweDJELAorICAgIDB4OTYsMHhFRSwweDc2LDB4RUUsMHhGRCwweEZELDB4RTcsMHg3
QiwweDc2LDB4RUUsMHg1NSwweEVFLDB4MzAsMHhBMCwweDIwLDB4QUUsCisgICAgMHg3NiwweEVF
LDB4NTYsMHhFRSwweEZCLDB4QUEsMHhGOCwweEJDLDB4NzYsMHhFRSwweDU1LDB4RUUsMHhBRiww
eEI3LDB4RUEsMHhFOCwKKyAgICAweDc2LDB4RUUsMHg1NSwweEVFLDB4ODIsMHg4MCwweDNCLDB4
MkQsMHg3NiwweEVFLDB4NTUsMHhFRSwweEQ3LDB4NTIsMHg2OCwweDk4LAorICAgIDB4NTUsMHhF
RSwweDM1LDB4RTYsMHg1OCwweDcyLDB4RTAsMHgyMCwweDU1LDB4RUUsMHgxNCwweEU2LDB4MEIs
MHgxNSwweDlGLDB4OUMsCisgICAgMHg5NiwweEVFLDB4MzUsMHhFRSwweEEyLDB4QUIsMHhGRiww
eEU3LDB4QjcsMHhGNiwweDM0LDB4RTYsMHg4MiwweEFFLDB4N0YsMHg1NSwKKyAgICAweEI3LDB4
RjYsMHgzNSwweEU2LDB4MkEsMHhBRSwweEZELDB4NTUsMHg5NiwweEVFLDB4NTUsMHhFRSwweDIw
LDB4QTAsMHhENywweEQ1LAorICAgIDB4OTYsMHhFRSwweDU1LDB4RUUsMHgyMiwweDJFLDB4MkYs
MHgyQSwweDk2LDB4RjYsMHhGMywweERELDB4NjgsMHg2OCwweDY4LDB4RjgsCisgICAgMHgxNCww
eEU2LDB4RDMsMHhERCwweEI3LDB4RUYsMHhBQiwweEFBLDB4MTQsMHhFNiwweEQzLDB4REQsMHhG
RiwweERCLDB4RTYsMHhGQiwKKyAgICAweDE0LDB4RTYsMHhEMywweERELDB4RjcsMHg3NSwweEY1
LDB4QUUsMHgxNCwweEU2LDB4RjQsMHhERCwweDc5LDB4QzMsMHhFOSwweDZCLAorICAgIDB4RjQs
MHhFNSwweDMxLDB4Q0QsMHg4MCwweEUwLDB4NzAsMHg3MCwweDMxLDB4QzUsMHhBRiwweEJDLDB4
NTgsMHg1RiwweEI3LDB4RkUsCisgICAgMHhGMCwweEM0LDB4OEUsMHhCNCwweDU3LDB4RkIsMHhB
RSwweDgyLDB4RjAsMHhDNCwweDRELDB4QUMsMHhERSwweEZGLDB4RUEsMHhFMiwKKyAgICAweEFG
LDB4QkMsMHgwQywweEE0LDB4NUYsMHhGNiwweDg4LDB4MDAsMHg4RSwweEI0LDB4QUIsMHg5Qiww
eEJGLDB4MkUsMHgyOCwweEE4LAorICAgIDB4RDAsMHhCQywweDhFLDB4QjQsMHhFMywweEFCLDB4
RkIsMHhCRiwweDMxLDB4QzUsMHg4RSwweEI0LDB4MkEsMHhBRCwweEZELDB4RDcsCisgICAgMHg3
MSwweENELDB4NkUsMHhCNCwweDAwLDB4ODAsMHhGRiwweDVGLDB4MTAsMHhDNSwweDJDLDB4QUMs
MHg3OCwweERDLDB4NTcsMHg5NSwKKyAgICAweDMxLDB4Q0QsMHg4RSwweEI0LDB4MjksMHg4OSww
eDBCLDB4MEIsMHgzMSwweENELDB4MTAsMHhDNSwweDNDLDB4MTcsMHhENywweEFGLAorICAgIDB4
OTIsMHhENSwweDMxLDB4Q0QsMHg4RiwweDJELDB4QTcsMHhBNSwweDkyLDB4RDUsMHg1MSwweENE
LDB4QkIsMHgxOCwweEJBLDB4QUUsCisgICAgMHg5MiwweEQ1LDB4NTEsMHhDRCwweEFBLDB4RUYs
MHg4RSwweEYyLDB4OTIsMHhENSwweDUxLDB4Q0QsMHg5RSwweERFLDB4RkIsMHhFMiwKKyAgICAw
eEM3LDB4N0EsMHg2NiwweDcyLDB4ODksMHhDQiwweEZGLDB4RkYsMHhBNywweDdBLDB4ODYsMHg3
QSwweDkyLDB4QTIsMHg5RSwweDBCLAorICAgIDB4QTcsMHg3QSwweDY2LDB4NzIsMHhBMCwweEYw
LDB4MzgsMHhGOCwweDY3LDB4N0EsMHg4NiwweDcyLDB4NUQsMHg1QiwweERCLDB4NzUsCisgICAg
MHhDNywweDdBLDB4ODYsMHg3MiwweDU1LDB4RjcsMHhFQiwweERGLDB4QTcsMHg3QSwweDY2LDB4
NzIsMHgyQSwweDBBLDB4MjgsMHgzRSwKKyAgICAweEE3LDB4N0EsMHg2NywweDcyLDB4N0EsMHhG
RSwweEZGLDB4ODgsMHg4NiwweDdBLDB4NjUsMHg2QSwweDAyLDB4MDgsMHhCMiwweDgyLAorICAg
IDB4QTcsMHg3QSwweDQ1LDB4NzIsMHhGNywweEQ3LDB4QkIsMHgyQywweDg3LDB4N0EsMHg0Niww
eDcyLDB4N0UsMHg2OCwweEFBLDB4OEEsCisgICAgMHg4NywweDdBLDB4NDYsMHg3MiwweEZGLDB4
QTMsMHgwOCwweDA4LDB4ODYsMHg3QSwweDY2LDB4NzIsMHhBNSwweEZCLDB4RUQsMHhGRiwKKyAg
ICAweDg2LDB4N0EsMHg0NiwweDcyLDB4MDIsMHg1RiwweDU3LDB4N0UsMHhDOCwweDgyLDB4MjUs
MHg2QSwweDIyLDB4QUYsMHhCRiwweERGLAorICAgIDB4RTgsMHg4MiwweDQ1LDB4NzIsMHgwQSww
eDgwLDB4QUYsMHg3RCwweEU4LDB4ODIsMHg4NywweDdBLDB4QTAsMHg4MiwweEEyLDB4M0YsCisg
ICAgMHhFOSwweDhBLDB4QzgsMHg4MiwweDJELDB4MzcsMHhERiwweERFLDB4RTgsMHg4QSwweEM4
LDB4ODIsMHg2MiwweEM0LDB4NkEsMHhBRSwKKyAgICAweDA5LDB4OEIsMHhDOCwweDgyLDB4NTks
MHhGMywweEVELDB4MTYsMHhFOCwweDhBLDB4QTgsMHg4MiwweEFGLDB4MkIsMHhGRSwweEM4LAor
ICAgIDB4RTgsMHg4QSwweEE3LDB4ODIsMHgzQywweDI4LDB4MjAsMHhFRCwweEU4LDB4OEEsMHhD
OCwweDgyLDB4QjAsMHhDOCwweEUyLDB4QzEsCisgICAgMHhFOCwweDhBLDB4QzgsMHg4MiwweDc4
LDB4NUUsMHg0MCwweEJBLDB4MDksMHg5MywweEE3LDB4ODIsMHhERiwweEFFLDB4MkEsMHhFNiwK
KyAgICAweEU4LDB4OEEsMHhBNywweDgyLDB4MjksMHgwMCwweDgyLDB4MEIsMHhFOCwweDhBLDB4
QzgsMHg4MiwweDBCLDB4REUsMHhBNiwweEU4LAorICAgIDB4RTgsMHg4MiwweDY2LDB4NzIsMHhF
MCwweDcwLDB4NzQsMHg3QSwweDY2LDB4NzIsMHg4NCwweDUxLDB4NTgsMHg1RSwweDVBLDB4Nzgs
CisgICAgMHg2NCwweDUxLDB4RTIsMHg0MCwweEZDLDB4RjYsMHg3RSwweEZFLDB4NDQsMHg0OSww
eEUyLDB4MzgsMHgwMiwweDNGLDB4QkYsMHg1NywKKyAgICAweDg0LDB4NTEsMHhFMiwweDM4LDB4
ODIsMHgyRiwweEZGLDB4RDUsMHhBNCwweDU5LDB4MDIsMHg0MSwweDAyLDB4MkIsMHgyRiwweDBE
LAorICAgIDB4NDYsMHg3MiwweEM1LDB4NjEsMHgwRCwweDBELDB4MkYsMHhBNSwweEM4LDB4OEEs
MHgyNSwweDcyLDB4MEIsMHgwRCwweEFGLDB4MjUsCisgICAgMHgyOSwweDkzLDB4QTcsMHg4Miww
eEZCLDB4QkIsMHgwOSwweEFGLDB4MDksMHg5MywweDY3LDB4ODIsMHg1RSwweEVBLDB4QTAsMHhF
OCwKKyAgICAweDg4LDB4ODIsMHgwNiwweDcyLDB4RUEsMHhFMCwweEZBLDB4N0MsMHg2NywweDdB
LDB4MjYsMHg3MiwweDcyLDB4RjIsMHhDRCwweEFELAorICAgIDB4NDcsMHg3QSwweEE0LDB4NjEs
MHg3QSwweDdBLDB4QTAsMHhFOCwweEU2LDB4NjksMHg0NCwweDUxLDB4MEEsMHhFQSwweEQ4LDB4
N0UsCisgICAgMHhFNSwweDY5LDB4NDMsMHg1MSwweEEwLDB4QTMsMHg2QiwweEQ1LDB4QTUsMHg2
MSwweDIzLDB4NDksMHhFOCwweEVCLDB4N0IsMHg1QSwKKyAgICAweDg1LDB4NTEsMHgwMywweDQ5
LDB4MkEsMHhCRiwweERELDB4N0YsMHg4NSwweDUxLDB4MDMsMHg0OSwweEFBLDB4MEYsMHhGRiww
eEJELAorICAgIDB4NjQsMHg0OSwweDIzLDB4NDksMHhBMiwweDg4LDB4ODAsMHg2MywweDg0LDB4
NTEsMHgwMiwweDQxLDB4RjcsMHhERiwweEZGLDB4MkYsCisgICAgMHhBNSwweDUxLDB4NDMsMHg0
OSwweEQ1LDB4RDUsMHhBNywweDg4LDB4MDYsMHg2MiwweDg0LDB4NTEsMHgyNSwweEJELDB4RUQs
MHg1RCwKKyAgICAweDA2LDB4NjIsMHg2NCwweDUxLDB4MjAsMHhCOCwweEVCLDB4RkQsMHgwNiww
eDYyLDB4ODQsMHg1MSwweDIwLDB4QUIsMHhBNywweEQ1LAorICAgIDB4MDYsMHg2MiwweEE1LDB4
NTEsMHhBQiwweEFGLDB4Q0YsMHhERCwweDA2LDB4NjIsMHg4NCwweDUxLDB4NDAsMHhDQSwweEVC
LDB4NUYsCisgICAgMHhBNSwweDU5LDB4MjMsMHg0OSwweEZBLDB4RkUsMHg5RiwweDNGLDB4MDYs
MHg2QSwweDY0LDB4NTEsMHhCNSwweEY1LDB4QkIsMHg4QiwKKyAgICAweEU1LDB4NjksMHhDNSww
eDYxLDB4NUUsMHg3RiwweDdELDB4QUUsMHg2NywweDdBLDB4QzUsMHg2MSwweDVGLDB4RjUsMHhC
RCwweDBCLAorICAgIDB4QTgsMHg4MiwweDQ3LDB4N0EsMHgyNSwweDI1LDB4RjcsMHg3QSwweEU5
LDB4OEEsMHg0NywweDcyLDB4MkEsMHgyQSwweEJELDB4REQsCisgICAgMHhFOSwweDhBLDB4ODgs
MHg4MiwweEUwLDB4NUEsMHg1OCwweENCLDB4QTgsMHg4MiwweDI3LDB4NzIsMHg1OCwweDdFLDB4
QkMsMHhGQSwKKyAgICAweDg4LDB4N0EsMHgyNiwweDcyLDB4MkYsMHhERiwweEY1LDB4RTUsMHhB
OCwweDgyLDB4QzQsMHg2MSwweEEwLDB4QUEsMHhFQSwweDdBLAorICAgIDB4MDYsMHg2QSwweEUy
LDB4NDAsMHhBMCwweEE4LDB4RkEsMHg3RSwweEM2LDB4NjEsMHgyMywweDQ5LDB4MkEsMHgwRiww
eDJELDB4QjUsCisgICAgMHg0NywweDcyLDB4QTUsMHg1OSwweDBBLDB4QUYsMHhERiwweEY1LDB4
QzgsMHg4MiwweEU1LDB4NjEsMHgwQSwweDJGLDB4MkQsMHhBRCwKKyAgICAweDJFLDB4QUMsMHg4
OCwweDdBLDB4MkYsMHgyRiwweEJELDB4RjUsMHhGNCwweEU1LDB4NkEsMHg5QiwweDAyLDB4MEIs
MHgwRiwweEI1LAorICAgIDB4NTUsMHhFRSwweDUyLDB4RDUsMHgwMCwweDAwLDB4QUEsMHhCRCww
eEI3LDB4RkUsMHgxNCwweEU2LDB4MkIsMHgwQiwweDJGLDB4MkQsCisgICAgMHhGOCwweEZFLDB4
QjcsMHhGRSwweDBCLDB4MkIsMHgyQSwweDJCLDB4RjgsMHhGRSwweEI3LDB4RjYsMHhBOCwweEFB
LDB4M0UsMHg5RSwKKyAgICAweDE4LDB4RkYsMHhCOCwweEY2LDB4MEEsMHgwQSwweDJBLDB4OEIs
MHgxOCwweEZGLDB4RjgsMHhGNiwweEEyLDB4ODAsMHg4MCwweDgwLAorICAgIDB4MTgsMHhGRiww
eEY4LDB4RjYsMHhBMiwweDhFLDB4RkEsMHhFQSwweDE3LDB4RkYsMHhGOCwweEY2LDB4N0UsMHhG
RiwweEZGLDB4RkYsCisgICAgMHhEOCwweEZFLDB4RjcsMHhGNiwweDU2LDB4N0YsMHg3NywweDc1
LDB4RjcsMHhGRSwweEY4LDB4RjYsMHhGRiwweEZGLDB4RUYsMHhGQiwKKyAgICAweEY3LDB4RjYs
MHhENywweEY2LDB4QUIsMHg4QiwweEUyLDB4QjAsMHhGNywweEY2LDB4RDgsMHhGNiwweEE4LDB4
MEUsMHgyQSwweDhFLAorICAgIDB4RjgsMHhGRSwweEY3LDB4RjYsMHhGRiwweEZGLDB4QkYsMHhG
RiwweDE4LDB4RkYsMHhENywweEY2LDB4RkYsMHhFQiwweEVBLDB4QUEsCisgICAgMHgxOCwweEZG
LDB4RjcsMHhGNiwweEZCLDB4RkQsMHhGRiwweDdGLDB4RjgsMHhGRSwweDE4LDB4RjcsMHhBRSww
eEFBLDB4RUEsMHhCRSwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4RkIsMHhGRSwweEZFLDB4
REYsMHhGOCwweEZFLDB4MTgsMHhGNywweEFBLDB4QjgsMHhBQSwweEFBLAorICAgIDB4MTgsMHhG
RiwweEY4LDB4RjYsMHhGRiwweDdGLDB4NUUsMHg3NiwweDE4LDB4RkYsMHhENywweEY2LDB4RkEs
MHhGQSwweEZFLDB4RUYsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDc2LDB4N0UsMHhCRiww
eDc3LDB4RDcsMHhGNiwweEI3LDB4RjYsMHg3QywweDcwLDB4QTAsMHhGOCwKKyAgICAweEI3LDB4
RjYsMHg5NiwweEVFLDB4RTgsMHhFRSwweDc4LDB4RjAsMHg5NiwweEVFLDB4NzYsMHhFRSwweEQ4
LDB4RjAsMHg3QiwweDU2LAorICAgIDB4NzUsMHhFRSwweDM1LDB4RTYsMHhGOCwweDdFLDB4RUEs
MHhGQSwweDc1LDB4RUUsMHgzNSwweEU2LDB4MEIsMHhBQiwweEJGLDB4RkQsCisgICAgMHg1NSww
eEVFLDB4NzYsMHhFNiwweEJELDB4MDIsMHgwMiwweDIyLDB4NzYsMHhFRSwweDU1LDB4RUUsMHhD
RSwweERFLDB4RDUsMHhENSwKKyAgICAweDc2LDB4RUUsMHg1NSwweEVFLDB4RkYsMHg4NywweDNB
LDB4RjIsMHg3NSwweEVFLDB4NTYsMHhFRSwweEZCLDB4RUYsMHhGNywweDU1LAorICAgIDB4NzYs
MHhFRSwweDU1LDB4RUUsMHhBRCwweEJELDB4RjksMHhCMCwweDc2LDB4RUUsMHg1NSwweEVFLDB4
NjgsMHhFQiwweDJBLDB4QkUsCisgICAgMHg3NiwweEVFLDB4MTQsMHhFNiwweEVBLDB4QTAsMHgy
QSwweDIwLDB4NTUsMHhFRSwweDE0LDB4RTYsMHhFMCwweEYwLDB4RjAsMHhGMCwKKyAgICAweDU1
LDB4RUUsMHgxNCwweEU2LDB4QUIsMHhGOSwweEQ1LDB4RkYsMHgzNSwweEU2LDB4MTQsMHhFNiww
eEZBLDB4RDcsMHhCNCwweEY4LAorICAgIDB4NTUsMHhFRSwweDE0LDB4RTYsMHhCQiwweDNGLDB4
QkIsMHgzRiwweDk2LDB4RjYsMHg1NSwweEU2LDB4OUQsMHhBRiwweDBCLDB4MjIsCisgICAgMHg5
NiwweEY2LDB4NzUsMHhFRSwweDg5LDB4QUIsMHhDMCwweEUwLDB4OTYsMHhGNiwweEYzLDB4REQs
MHg3OCwweDVFLDB4NUMsMHg1RSwKKyAgICAweDE0LDB4RTYsMHhEMywweERELDB4QUYsMHgzRiww
eDk1LDB4QUQsMHgzNCwweEU2LDB4RjQsMHhFNSwweERELDB4OEIsMHg4RiwweEI3LAorICAgIDB4
MzUsMHhFNiwweEYzLDB4REQsMHhGRSwweEVFLDB4QjgsMHg3QSwweDE0LDB4RTYsMHhGNCwweERE
LDB4QjIsMHgyMCwweDIwLDB4RjksCisgICAgMHgxNCwweEU2LDB4MzEsMHhDRCwweDc4LDB4Njgs
MHhGOCwweDc4LDB4NTEsMHhDRCwweEYwLDB4QzQsMHg1RiwweDU1LDB4NUMsMHg3QSwKKyAgICAw
eEYwLDB4QzQsMHhDRiwweEJDLDB4MEEsMHgwMywweDY5LDB4NDIsMHhGMCwweEM0LDB4QUYsMHhC
QywweEVBLDB4RUYsMHhGNCwweDc3LAorICAgIDB4RDAsMHhDNCwweEFFLDB4QjQsMHhCRCwweDJG
LDB4MkEsMHg4MywweENGLDB4QkMsMHhFQywweEEzLDB4RjgsMHg1OCwweDc4LDB4NjAsCisgICAg
MHhDRiwweEJDLDB4RUMsMHhBMywweDgyLDB4QUIsMHhBRiwweEFELDB4QUYsMHhCQywweDJELDB4
QUMsMHhBOCwweEVFLDB4N0YsMHg1RiwKKyAgICAweDhFLDB4QjQsMHhFQywweEEzLDB4QTAsMHhF
QiwweEZFLDB4NzcsMHhDRiwweEJDLDB4RUMsMHg5QiwweEJGLDB4QkQsMHgzRiwweDNELAorICAg
IDB4MzEsMHhDRCwweEQwLDB4QkMsMHgyRCwweDJCLDB4OEIsMHg4RSwweDMxLDB4Q0QsMHgxMCww
eEM1LDB4MjQsMHhGNCwweEQ3LDB4NkIsCisgICAgMHg3MiwweEQ1LDB4MTAsMHhDNSwweDJCLDB4
MkIsMHhGRCwweEZGLDB4NzIsMHhENSwweDMxLDB4Q0QsMHhBOCwweEEyLDB4QTQsMHhGRiwKKyAg
ICAweDkyLDB4RDUsMHgzMSwweENELDB4QUEsMHg4MywweEZFLDB4REIsMHg5MiwweEQ1LDB4MzEs
MHhDRCwweEEyLDB4RkEsMHhBRCwweEY5LAorICAgIDB4QTcsMHg3QSwweDQ1LDB4NkEsMHgyOCww
eEFGLDB4M0YsMHhENSwweEM3LDB4N0EsMHg2NSwweDZBLDB4MkEsMHhCQSwweEFFLDB4REIsCisg
ICAgMHhBNywweDdBLDB4NjYsMHg3MiwweEE4LDB4RUEsMHhBQSwweEVELDB4QTcsMHg3QSwweDg2
LDB4NzIsMHg1NiwweEJGLDB4QTIsMHhDMiwKKyAgICAweEM3LDB4N0EsMHg4NiwweDcyLDB4RkYs
MHg3RSwweEZCLDB4QUIsMHhDNywweDdBLDB4NjYsMHg3MiwweEI3LDB4QjMsMHhCQiwweERFLAor
ICAgIDB4QTcsMHg3QSwweDg3LDB4NzIsMHhBQSwweDM4LDB4QkEsMHhCRSwweEM4LDB4ODIsMHg2
NiwweDcyLDB4RTUsMHhCRiwweDBCLDB4QUEsCisgICAgMHhBNywweDdBLDB4NjYsMHg3MiwweEZG
LDB4RTIsMHhGMCwweDBBLDB4QzcsMHg4MiwweDY2LDB4NzIsMHhGRSwweEUyLDB4RUIsMHhCNiwK
KyAgICAweEE3LDB4N0EsMHg0NiwweDcyLDB4OEUsMHhFQiwweEFBLDB4OUEsMHhBNywweDdBLDB4
NjYsMHg3MiwweEQzLDB4RDcsMHhCQiwweEFFLAorICAgIDB4ODcsMHg3QSwweDQ1LDB4NzIsMHg2
QSwweEI4LDB4MjgsMHgwMCwweDg3LDB4N0EsMHg0NSwweDcyLDB4N0IsMHhFMywweDcyLDB4QzAs
CisgICAgMHg4NiwweDdBLDB4NDUsMHg3MiwweEZELDB4MjUsMHhGQiwweERGLDB4ODcsMHg3QSww
eDI1LDB4NkEsMHgzRiwweEI3LDB4QTcsMHhBMiwKKyAgICAweEM4LDB4ODIsMHg0NSwweDcyLDB4
MDMsMHgyNywweEY1LDB4RjcsMHhFOCwweDhBLDB4NDYsMHg3MiwweDg4LDB4QUEsMHgzRiwweDU1
LAorICAgIDB4RTgsMHg4QSwweDY2LDB4NzIsMHgyQSwweEEwLDB4QUEsMHhCRCwweEU4LDB4ODIs
MHhBNywweDgyLDB4OEEsMHg2RiwweDg5LDB4QkIsCisgICAgMHhFOCwweDgyLDB4QTcsMHg3QSww
eDc3LDB4NkQsMHgyQiwweEFBLDB4MDgsMHg4QiwweEE3LDB4ODIsMHhGRCwweEY1LDB4QkYsMHgx
RSwKKyAgICAweEU4LDB4OEEsMHhDOCwweDgyLDB4RkIsMHg1RSwweEVCLDB4NjIsMHgwOCwweDhC
LDB4QTcsMHg4MiwweEE2LDB4OEIsMHhBQiwweDZELAorICAgIDB4RTgsMHg4MiwweEE4LDB4ODIs
MHhBQywweEJCLDB4RkEsMHhGQSwweEU4LDB4ODIsMHg4NywweDdBLDB4NkEsMHg2OCwweDJBLDB4
MDIsCisgICAgMHhFOCwweDgyLDB4ODYsMHg3MiwweDdGLDB4RUEsMHhGQywweEU4LDB4QTcsMHg3
QSwweDgzLDB4NTEsMHg3RSwweDc4LDB4NzgsMHg3OCwKKyAgICAweDQzLDB4NDksMHhFMiwweDM4
LDB4RkUsMHhGQywweDdBLDB4RkMsMHgwMywweDQxLDB4RTIsMHgzOCwweEZFLDB4OUUsMHg1RCww
eDc3LAorICAgIDB4RTIsMHgzOCwweDgxLDB4MzAsMHhBQSwweERBLDB4QUEsMHhBQywweDY0LDB4
NTEsMHhDMiwweDM4LDB4MEYsMHgyRCwweEY1LDB4NTUsCisgICAgMHhFNSwweDY5LDB4MDMsMHg0
OSwweDAyLDB4MEEsMHhBRiwweEJELDB4ODcsMHg4MiwweEE0LDB4NjEsMHgyQiwweEFGLDB4RjUs
MHg1NSwKKyAgICAweDA5LDB4OTMsMHgyNiwweDcyLDB4MkEsMHgyQiwweEZGLDB4RDUsMHgwOSww
eDkzLDB4MjcsMHg3QSwweEU4LDB4NkEsMHhERiwweDU3LAorICAgIDB4ODgsMHg4MiwweDA2LDB4
NzIsMHhGRSwweERELDB4OUUsMHgyMiwweDY3LDB4N0EsMHgwNiwweDZBLDB4RUYsMHhGRiwweDdF
LDB4NTgsCisgICAgMHgwNiwweDZBLDB4QzUsMHg2OSwweDY4LDB4NUMsMHg3RiwweDk3LDB4MjYs
MHg3MiwweDg0LDB4NTksMHg1NywweDdGLDB4QkEsMHgwQSwKKyAgICAweEU1LDB4NjksMHg0Myww
eDUxLDB4RjUsMHhCRiwweEJBLDB4QTAsMHhDNSwweDYxLDB4MjMsMHg0OSwweDdFLDB4RkUsMHhG
OCwweEU4LAorICAgIDB4NDMsMHg0OSwweDAzLDB4NDksMHhFQSwweEFFLDB4RUMsMHg5RSwweDQz
LDB4NDksMHgwMiwweDQxLDB4MEQsMHg4QSwweDBBLDB4MDAsCisgICAgMHg2NCwweDQ5LDB4MjMs
MHg0OSwweEVCLDB4QUIsMHgzQSwweDhBLDB4ODUsMHg1MSwweDIzLDB4NDEsMHgyQiwweDBFLDB4
QkUsMHg1NywKKyAgICAweEE1LDB4NTksMHgwMywweDQxLDB4ODAsMHhBMiwweEZFLDB4NzUsMHg2
NCwweDQ5LDB4MjMsMHg0MSwweDAwLDB4RjQsMHg3RiwweDY1LAorICAgIDB4ODQsMHg1MSwweDIz
LDB4NDEsMHhGMiwweEVGLDB4QkYsMHhERCwweDg0LDB4NTEsMHgyMywweDQxLDB4MEEsMHg3RSww
eERFLDB4RkYsCisgICAgMHhBNSwweDU5LDB4MjMsMHg0MSwweDBBLDB4MkEsMHhENywweDU1LDB4
QzUsMHg1OSwweDAzLDB4NDEsMHhDOCwweEZBLDB4RjUsMHg1NSwKKyAgICAweEU2LDB4NjEsMHg0
MywweDQ5LDB4QjUsMHgzRiwweDNELDB4MkQsMHg2NywweDdBLDB4RTYsMHg2OSwweEFGLDB4MEQs
MHhBOCwweEI5LAorICAgIDB4NjcsMHg3QSwweDA2LDB4NkEsMHg1RiwweEVDLDB4OEIsMHhBMCww
eEM4LDB4ODIsMHgyNiwweDcyLDB4QkQsMHhCRCwweDJELDB4RUEsCisgICAgMHhFQSwweDhBLDB4
NDcsMHg3MiwweDdBLDB4RkEsMHhFOCwweEY4LDB4NjcsMHg3QSwweEM2LDB4NjksMHg4QSwweEJC
LDB4RjgsMHg3OCwKKyAgICAweEM5LDB4OEEsMHhFNSwweDY5LDB4OEEsMHhBQiwweERGLDB4NzUs
MHg2OCwweDdBLDB4QzUsMHg2MSwweDAwLDB4MDAsMHg4QSwweEZELAorICAgIDB4NjgsMHg3QSww
eEM1LDB4NTksMHg4OCwweEUwLDB4RUEsMHg3RSwweDQ3LDB4NzIsMHgwMywweDQ5LDB4QTAsMHhF
QSwweEZBLDB4NUYsCisgICAgMHg2NCwweDUxLDB4MDIsMHg0MSwweDU4LDB4N0UsMHhFRSwweEJG
LDB4QTUsMHg1OSwweDAzLDB4NDksMHhBRCwweDJELDB4MkYsMHgyRiwKKyAgICAweEU1LDB4NjEs
MHg4NSwweDUxLDB4RUYsMHhBNSwweDJCLDB4QUEsMHg0NywweDcyLDB4QzQsMHg2MSwweDA5LDB4
OEYsMHhFRSwweEJBLAorICAgIDB4QTgsMHg3QSwweDA1LDB4NkEsMHgwQiwweEZGLDB4RjUsMHhC
RCwweEFDLDB4QTMsMHg0NiwweDcyLDB4MkYsMHhCRCwweEZELDB4RkYsCisgICAgMHgxMSwweENE
LDB4NDYsMHg3MiwweDAyLDB4QUYsMHhGRiwweDVGLDB4OTMsMHhERCwweDg3LDB4N0EsMHgwMCww
eDJBLDB4RkYsMHg1NSwKKyAgICAweEI3LDB4RkUsMHg2QSwweDlCLDB4MDAsMHhBQSwweEZGLDB4
NTUsMHg5NywweEY2LDB4NEQsMHhCNCwweDAwLDB4MDAsMHhCRiwweEQ1LAorICAgIDB4RjgsMHhG
RSwweDkyLDB4RDUsMHgwMCwweDAyLDB4MEIsMHgyRCwweDE4LDB4RkYsMHhGOCwweEZFLDB4QkYs
MHhCRSwweEI3LDB4RDUsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEVBLDB4RUEsMHhCRSww
eEI3LDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGNywweEZGLDB4RkEsMHhBRSwKKyAgICAweEY4LDB4
RkUsMHhGNywweEY2LDB4RkYsMHhCRiwweEZGLDB4RkYsMHgxOCwweEZGLDB4RDgsMHhGNiwweEVB
LDB4RUUsMHhGQSwweDZFLAorICAgIDB4RjgsMHhGNiwweEQ3LDB4RjYsMHhBOCwweEJFLDB4QUUs
MHhBRSwweEY3LDB4RjYsMHhENywweEY2LDB4M0IsMHhBQiwweEFDLDB4MjIsCisgICAgMHhEOCww
eEZFLDB4MTcsMHhGNywweEVBLDB4RkEsMHhCRiwweEZGLDB4MTgsMHhGRiwweEY3LDB4RjYsMHhE
NywweEJELDB4QUYsMHhBQiwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4RkYsMHhGQSwweEVC
LDB4RUEsMHgxOCwweEZGLDB4RjgsMHhGNiwweEZFLDB4RkUsMHhCRiwweEY3LAorICAgIDB4MTgs
MHhGRiwweEY4LDB4RjYsMHhGRiwweDc4LDB4RUEsMHg2QSwweEY4LDB4RkUsMHgxOCwweEY3LDB4
QUIsMHhBRSwweDhBLDB4QTgsCisgICAgMHgxOCwweEZGLDB4RDgsMHhGNiwweEE5LDB4QUUsMHhB
RSwweEVBLDB4RjcsMHhGNiwweEI3LDB4RjYsMHhBMCwweEU4LDB4NjgsMHg3QSwKKyAgICAweEQ3
LDB4RjYsMHhCNywweEY2LDB4MDAsMHhBMiwweEE5LDB4MEQsMHhENywweEY2LDB4QjcsMHhGNiww
eERDLDB4NTUsMHg3NiwweDU2LAorICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHhGOCwweEZDLDB4
N0UsMHg1NiwweDk2LDB4RUUsMHg3NiwweEVFLDB4NUUsMHhCQSwweDgwLDB4QTgsCisgICAgMHg5
NiwweEVFLDB4NTUsMHhFNiwweDVGLDB4RkYsMHhBRSwweEEyLDB4NTUsMHhFRSwweDM1LDB4RTYs
MHhGRSwweEZGLDB4RkUsMHgxOCwKKyAgICAweDc2LDB4RUUsMHg1NSwweEVFLDB4RUYsMHhFQSww
eEFBLDB4MDEsMHg3NiwweEVFLDB4NTUsMHhFRSwweEFELDB4MjksMHgwMCwweEEwLAorICAgIDB4
QjUsMHhGNiwweDU2LDB4RUUsMHg1RiwweEZGLDB4N0QsMHhFRiwweDc2LDB4RUUsMHg1NSwweEVF
LDB4OTUsMHg1NSwweDdELDB4RjcsCisgICAgMHg3NiwweEVFLDB4NTUsMHhFRSwweEZBLDB4Rjgs
MHgyNywweDM3LDB4NzYsMHhFRSwweDU1LDB4RUUsMHg5QSwweEIyLDB4QkEsMHhBQSwKKyAgICAw
eDc2LDB4RUUsMHg1NSwweEVFLDB4RjgsMHg3OCwweEZCLDB4RDcsMHg3NSwweEVFLDB4MTUsMHhF
NiwweEVBLDB4QUEsMHhBOCwweDA4LAorICAgIDB4NTUsMHhFRSwweDE1LDB4RTYsMHhGQSwweEZF
LDB4RkMsMHhCRSwweDU1LDB4RUUsMHgzNSwweEU2LDB4NUQsMHhFQiwweDJGLDB4M0YsCisgICAg
MHg1NSwweEVFLDB4MzQsMHhFNiwweDE1LDB4RTUsMHhFMCwweDQwLDB4OTYsMHhGNiwweDM1LDB4
RTYsMHgwMywweEFCLDB4MjksMHhFNSwKKyAgICAweDk2LDB4RjYsMHgzNSwweEU2LDB4ODgsMHhG
MiwweEZBLDB4N0YsMHg3NSwweEVFLDB4RDMsMHhERCwweDU4LDB4N0EsMHg1RSwweDU2LAorICAg
IDB4MTQsMHhFNiwweEIzLDB4RDUsMHhBQiwweDNELDB4QUYsMHhERiwweDM0LDB4RTYsMHhGNCww
eEU1LDB4RkYsMHhFQiwweEFGLDB4QUQsCisgICAgMHgzNSwweEU2LDB4RDMsMHhERCwweDdBLDB4
N0EsMHg3QSwweDhBLDB4MTUsMHhFNiwweEIzLDB4RDUsMHhCQiwweEQ1LDB4RjcsMHhFOCwKKyAg
ICAweEQzLDB4REQsMHgzMCwweENELDB4RTAsMHg2MCwweDc4LDB4NjAsMHg1MSwweENELDB4RjAs
MHhDNCwweEU4LDB4N0UsMHg3RiwweEZFLAorICAgIDB4MTAsMHhDNSwweEFFLDB4QkMsMHhGQiww
eEZGLDB4NUYsMHhCOCwweEYwLDB4QkMsMHhBRiwweEJDLDB4RDUsMHg5RSwweEEzLDB4QUUsCisg
ICAgMHgxMCwweEM1LDB4Q0YsMHhCQywweEZCLDB4RjksMHhBOSwweDkyLDB4MzEsMHhDRCwweDJE
LDB4QUMsMHg3QSwweEUyLDB4ODIsMHgwMCwKKyAgICAweDExLDB4QzUsMHhBQiwweDlCLDB4Qjcs
MHhGRiwweDdBLDB4NjAsMHgyRCwweEFDLDB4MDksMHg4QiwweDgwLDB4QUEsMHhGRiwweEY3LAor
ICAgIDB4RUMsMHhBMywweDRBLDB4OEIsMHhFOCwweEZBLDB4REYsMHg1NSwweEQwLDB4QkMsMHg4
QywweDlCLDB4MkQsMHgyRCwweDBELDB4MkQsCisgICAgMHgxMCwweEM1LDB4Q0YsMHhCQywweDAy
LDB4MEIsMHgwQiwweDlELDB4MTAsMHhDNSwweEYwLDB4QzQsMHgwMiwweDhDLDB4NzYsMHg2NywK
KyAgICAweDUxLDB4Q0QsMHhGMCwweEM0LDB4QkEsMHgyRiwweDNGLDB4QkQsMHg1MSwweENELDB4
MzEsMHhDRCwweDgzLDB4QTcsMHhENywweEI3LAorICAgIDB4NzIsMHhENSwweDMxLDB4Q0QsMHhB
MiwweEVGLDB4REYsMHg3NywweDcyLDB4RDUsMHgzMCwweENELDB4QkIsMHhFQSwweEZFLDB4NTUs
CisgICAgMHg0NiwweDZBLDB4MDUsMHg2QSwweDJCLDB4QUIsMHhBQiwweEZGLDB4ODYsMHg3Miww
eEU0LDB4NjEsMHgzRSwweEI3LDB4RkYsMHhGRSwKKyAgICAweEE3LDB4N0EsMHgwNSwweDZBLDB4
OEEsMHhDRiwweDdGLDB4N0QsMHhBNywweDdBLDB4MDUsMHg2MiwweDgyLDB4MjIsMHhBQiwweEZE
LAorICAgIDB4QTcsMHg3QSwweDQ2LDB4NkEsMHgwMiwweDIwLDB4QjIsMHgzRCwweEM3LDB4N0Es
MHg2NywweDcyLDB4QjQsMHg5QSwweEZDLDB4RUEsCisgICAgMHhBNywweDdBLDB4NDYsMHg3Miww
eDAyLDB4MDAsMHhBMiwweDYwLDB4QzgsMHg3QSwweDY2LDB4NzIsMHhGOCwweEZBLDB4N0YsMHhG
QiwKKyAgICAweEM3LDB4ODIsMHg2NiwweDcyLDB4QkYsMHhBNywweDNGLDB4QkYsMHhDNywweDdB
LDB4ODYsMHg3QSwweEQ1LDB4NzksMHg3NywweEY3LAorICAgIDB4QTcsMHg3QSwweDQ2LDB4NzIs
MHg5RiwweEVFLDB4ODAsMHgyOCwweEE3LDB4N0EsMHg2NiwweDcyLDB4QkEsMHhFNywweDFGLDB4
MjMsCisgICAgMHhBNywweDdBLDB4ODcsMHg3QSwweDNFLDB4OUMsMHg5QiwweEU5LDB4QTcsMHg3
QSwweDY2LDB4NzIsMHg3QSwweDU3LDB4QkMsMHhCNCwKKyAgICAweDY2LDB4N0EsMHhBNywweDcy
LDB4MkUsMHhCRSwweEJFLDB4QUUsMHhDNywweDgyLDB4NDYsMHg3MiwweDVGLDB4RUYsMHhBQiww
eDJCLAorICAgIDB4QTcsMHg3QSwweDY2LDB4NzIsMHg1RiwweERFLDB4REMsMHhDMiwweDg3LDB4
N0EsMHg0NiwweDcyLDB4N0EsMHg3OCwweEZGLDB4QTMsCisgICAgMHhBNywweDgyLDB4NDYsMHg3
MiwweEJELDB4RDcsMHhBRiwweDhBLDB4QTcsMHg4MiwweDQ2LDB4NzIsMHgyMiwweEJCLDB4N0Ys
MHhGOSwKKyAgICAweEU4LDB4OEEsMHg0NiwweDcyLDB4MDIsMHhBRSwweEY3LDB4NzUsMHgwOSww
eDhCLDB4NjYsMHg3MiwweDgyLDB4QUEsMHhCQiwweEQ1LAorICAgIDB4MDksMHg4QiwweDg3LDB4
N0EsMHg4QSwweEVGLDB4QUYsMHhGRCwweEU4LDB4ODIsMHhBNywweDdBLDB4N0UsMHgyRiwweDBC
LDB4MEIsCisgICAgMHgyOSwweDhCLDB4QzgsMHg4MiwweEQ1LDB4OUQsMHhCRiwweEYyLDB4MDgs
MHg4QiwweEE3LDB4N0EsMHhBQSwweEEyLDB4RTAsMHhEQSwKKyAgICAweEU4LDB4ODIsMHhBNyww
eDdBLDB4RTgsMHhCRiwweEFFLDB4QkUsMHhDNywweDdBLDB4QTMsMHg1OSwweDc4LDB4RTAsMHhB
MCwweDgwLAorICAgIDB4MDUsMHg2MiwweEUyLDB4NDAsMHg1RSwweDVFLDB4NUEsMHhGOCwweDAz
LDB4NDEsMHhFMiwweDM4LDB4NzcsMHgwRSwweEJFLDB4RkQsCisgICAgMHgwMiwweDQxLDB4QTEs
MHgzMCwweEZFLDB4RkMsMHhGNiwweEZFLDB4RTIsMHgzOCwweDgxLDB4MzAsMHhBQSwweEFGLDB4
RkYsMHhEQiwKKyAgICAweDQ0LDB4NTEsMHhBMiwweDM4LDB4MEIsMHhBRiwweEJELDB4RjUsMHg4
NCwweDYxLDB4QzIsMHg0MCwweDAwLDB4QUIsMHhGRiwweDU1LAorICAgIDB4QzUsMHg2OSwweDAz
LDB4NDksMHgwMiwweEJCLDB4REYsMHhFNSwweDQ3LDB4N0EsMHg4NCwweDYxLDB4M0IsMHgzRiww
eDM1LDB4MkQsCisgICAgMHg4OCwweDgyLDB4MjYsMHg3MiwweDhFLDB4QTcsMHhBRSwweDA4LDB4
QTgsMHg4MiwweEM1LDB4NjksMHg3RSwweDdBLDB4QkEsMHgwMCwKKyAgICAweDg4LDB4ODIsMHhF
NSwweDY5LDB4NTUsMHg1NywweEJGLDB4MjgsMHg2NywweDdBLDB4RTUsMHg2OSwweEJELDB4NUQs
MHhCNywweDAwLAorICAgIDB4QTgsMHg4MiwweEU1LDB4NjEsMHg1NywweEZGLDB4QUIsMHg4Miww
eDg3LDB4N0EsMHg2MywweDUxLDB4NUYsMHg3RSwweEZBLDB4QTgsCisgICAgMHhBNSwweDU5LDB4
MjMsMHg0OSwweEQ3LDB4RkYsMHhGQSwweEUwLDB4NjQsMHg1MSwweDQzLDB4NDksMHg2NSwweEZB
LDB4RjgsMHg3RCwKKyAgICAweDY0LDB4NTEsMHgwMywweDQxLDB4QTAsMHhBMiwweEYyLDB4N0Us
MHgyMywweDQ5LDB4QzIsMHgzMCwweEI4LDB4RkEsMHg1QSwweEZBLAorICAgIDB4MjMsMHg0MSww
eEUyLDB4MzgsMHgyQiwweDJCLDB4OEIsMHhBNSwweDY0LDB4NDksMHgwMywweDQxLDB4M0YsMHhF
RCwweEZBLDB4N0IsCisgICAgMHg0MywweDQ5LDB4RTMsMHgzOCwweDI4LDB4QTIsMHhGQSwweDdF
LDB4MjMsMHg0MSwweEExLDB4MzAsMHg4MCwweEZBLDB4NzYsMHg1RiwKKyAgICAweDAzLDB4NDEs
MHg4MSwweDI4LDB4MjgsMHhBRiwweEE1LDB4MjUsMHg0NCwweDQ5LDB4QzIsMHgzOCwweEZGLDB4
RjUsMHhBRiwweDBBLAorICAgIDB4RTYsMHg2MSwweDAzLDB4NDEsMHgyOSwweDNELDB4MkYsMHgy
RiwweDY3LDB4N0EsMHgwNiwweDZBLDB4OUQsMHhCRiwweEMyLDB4NjMsCisgICAgMHg2NywweDdB
LDB4MjcsMHg3MiwweDIwLDB4MDgsMHhCRiwweDc1LDB4NjgsMHg3QSwweDA2LDB4NkEsMHhBMCww
eEUwLDB4NkMsMHhBQSwKKyAgICAweDQ3LDB4N0EsMHhFNSwweDY5LDB4QTAsMHhGRSwweDVGLDB4
NUUsMHgwNiwweDcyLDB4ODQsMHg1OSwweEUwLDB4RTgsMHhGRSwweDdFLAorICAgIDB4RTUsMHg2
MSwweDg0LDB4NTksMHgyRCwweDM1LDB4RkYsMHhCRCwweEU2LDB4NjksMHg4NCwweDU5LDB4Mjgs
MHgwQSwweEZCLDB4NUUsCisgICAgMHhFNiwweDYxLDB4ODQsMHg1OSwweEEwLDB4ODAsMHhBRCww
eDdELDB4QTQsMHg1OSwweDAzLDB4NDEsMHhGRSwweDdFLDB4N0MsMHg3RSwKKyAgICAweDIzLDB4
NDksMHgwMywweDQxLDB4MkIsMHhENSwweERGLDB4REIsMHg4NCwweDUxLDB4MjMsMHg0OSwweEJE
LDB4MjUsMHgyNSwweDI1LAorICAgIDB4NDcsMHg3MiwweEE1LDB4NTksMHhCRCwweDA5LDB4MkIs
MHgyQiwweDQ3LDB4NzIsMHhBNCwweDYxLDB4QUEsMHhGOCwweDdDLDB4NUMsCisgICAgMHg4OCww
eDdBLDB4RTUsMHg2OSwweDJCLDB4MEQsMHgyRCwweDI1LDB4MEEsMHg4QiwweEE4LDB4ODIsMHhF
NSwweDhCLDB4OEIsMHgyQSwKKyAgICAweEU5LDB4OEEsMHgyNiwweDcyLDB4RjIsMHhFQSwweDc4
LDB4NzgsMHg4NywweDdBLDB4MDUsMHg2QSwweDA4LDB4MkYsMHhCRiwweEJELAorICAgIDB4NEEs
MHg5MywweDY3LDB4N0EsMHgwQiwweDJGLDB4RjUsMHhENSwweDJELDB4QUMsMHhDOCwweDgyLDB4
MkYsMHhCRiwweEQ1LDB4RjUsCisgICAgMHhCNywweEY2LDB4Q0MsMHhBMywweDBCLDB4MkIsMHgy
RCwweEFELDB4RDgsMHhGRSwweDUxLDB4RDUsMHgwMCwweDAwLDB4QTIsMHg1RiwKKyAgICAweEQ3
LDB4RjYsMHg3MiwweEQ1LDB4MDAsMHgwMCwweDAyLDB4QUQsMHhGOCwweEZFLDB4OTYsMHhFRSww
eDAwLDB4MDgsMHgyQSwweEZELAorICAgIDB4RjgsMHhGRSwweEQ3LDB4RjYsMHhBQSwweEE4LDB4
QkIsMHhBNSwweEY4LDB4RkUsMHhENywweEY2LDB4QUEsMHhBQSwweEJFLDB4QUUsCisgICAgMHhG
OCwweEZFLDB4RDcsMHhGNiwweERCLDB4RkYsMHhGQSwweERBLDB4RjgsMHhGRSwweEQ3LDB4RjYs
MHhBQSwweEFFLDB4QUYsMHg5QiwKKyAgICAweEY4LDB4RkUsMHhGNywweEY2LDB4QkYsMHhFQiww
eEFBLDB4ODIsMHhEOCwweEZFLDB4MTcsMHhGNywweEZGLDB4RUUsMHhBQSwweDhBLAorICAgIDB4
MTgsMHhGRiwweEY4LDB4RjYsMHhFQSwweEZFLDB4QkIsMHhGRiwweEY4LDB4RkUsMHgxOCwweEY3
LDB4QUEsMHhBRSwweDBBLDB4QTIsCisgICAgMHhGOCwweEZFLDB4MTgsMHhGNywweEJFLDB4QUEs
MHgwMCwweDAwLDB4RjgsMHhGRSwweDE4LDB4RjcsMHhBQSwweEFBLDB4MDgsMHgyMiwKKyAgICAw
eDE4LDB4RkYsMHhENywweEY2LDB4RUEsMHhCQSwweEZELDB4QkIsMHgxOCwweEZGLDB4QjcsMHhG
NiwweDdGLDB4N0YsMHg3NiwweDdGLAorICAgIDB4RDgsMHhGRSwweEI3LDB4RUUsMHhBQSwweEVB
LDB4N0EsMHg3RiwweEI2LDB4RjYsMHg5NiwweEVFLDB4QTgsMHhFQSwweEUwLDB4RUEsCisgICAg
MHhCNiwweEY2LDB4OTYsMHhFRSwweDVGLDB4REUsMHg3RSwweDdCLDB4OTYsMHhFRSwweDc2LDB4
RUUsMHhBMCwweDI4LDB4NUQsMHg1RiwKKyAgICAweDk2LDB4RjYsMHg3NiwweEVFLDB4NUEsMHhG
NCwweEVELDB4RUYsMHg5NiwweEY2LDB4NTUsMHhFRSwweDU1LDB4N0UsMHhFMiwweDgwLAorICAg
IDB4NzYsMHhFRSwweDU1LDB4RUUsMHhBOSwweEVGLDB4RTgsMHhGMCwweDc1LDB4RUUsMHg1Niww
eEVFLDB4QUEsMHhERiwweDU1LDB4OTcsCisgICAgMHg5NywweEY2LDB4NTYsMHhFRSwweEZFLDB4
RUUsMHhFQiwweEZFLDB4NzYsMHhFRSwweDM1LDB4RTYsMHg4RiwweDJFLDB4MEUsMHgwMiwKKyAg
ICAweDc2LDB4RUUsMHg1NSwweEVFLDB4MkQsMHhGNywweEJFLDB4MDAsMHg3NiwweEVFLDB4NTUs
MHhFRSwweEZFLDB4RkMsMHhGRiwweEJFLAorICAgIDB4NzYsMHhFRSwweDU1LDB4RUUsMHhERSww
eERCLDB4QUIsMHhBMiwweDc2LDB4RUUsMHg1NSwweEVFLDB4MEQsMHgyRSwweEJBLDB4QjYsCisg
ICAgMHg3NSwweEVFLDB4MzUsMHhFNiwweDc2LDB4NUMsMHhCQywweEVFLDB4NzUsMHhFRSwweDM0
LDB4RUUsMHhCNSwweEFGLDB4QUIsMHgyMiwKKyAgICAweDc1LDB4RUUsMHg1NSwweEVFLDB4NjIs
MHhDNSwweDIwLDB4RkEsMHg1NSwweEVFLDB4MTQsMHhFNiwweEFCLDB4QkYsMHhGQywweDlBLAor
ICAgIDB4NzUsMHhFRSwweDM0LDB4RTYsMHhFOSwweEVCLDB4N0IsMHg3RiwweDE0LDB4RTYsMHhC
MywweEQ1LDB4RjgsMHhGOCwweDdDLDB4NzgsCisgICAgMHhGMywweERELDB4QjMsMHhENSwweEQ2
LDB4QjcsMHhFRCwweEFCLDB4MzQsMHhFNiwweEQzLDB4REQsMHgyQiwweDJELDB4QUQsMHhBRCwK
KyAgICAweDM1LDB4RUUsMHgxNCwweEU2LDB4MkQsMHgyQiwweDJBLDB4MDksMHgzNCwweEU2LDB4
RjMsMHhFNSwweDc4LDB4QjgsMHgyMCwweDAwLAorICAgIDB4NTUsMHhFRSwweDUxLDB4Q0QsMHg3
RiwweDdBLDB4N0EsMHhFMCwweDcyLDB4RDUsMHhGMCwweEM0LDB4NUYsMHhGQiwweEZBLDB4QTgs
CisgICAgMHgzMSwweEM1LDB4QUYsMHhCQywweEZFLDB4REEsMHhGQywweEZBLDB4MTAsMHhDNSww
eEQwLDB4QkMsMHhGNSwweEFELDB4OEIsMHgwMCwKKyAgICAweDMxLDB4QzUsMHhGMCwweEM0LDB4
QjUsMHhBNSwweEEyLDB4MkEsMHg1MiwweENELDB4MTAsMHhDNSwweEU5LDB4N0YsMHhCRiwweDBB
LAorICAgIDB4MzEsMHhDRCwweDhGLDB4QkMsMHg2MCwweDgyLDB4MDAsMHgwMCwweEQwLDB4QkMs
MHhDOCwweDgyLDB4NUYsMHg1RSwweDdDLDB4NzgsCisgICAgMHg2QiwweDkzLDB4QTgsMHg3QSww
eDNGLDB4QkQsMHgzNSwweEI1LDB4QUYsMHhCQywweDhCLDB4OTMsMHgwOSwweDI5LDB4MEIsMHgw
OSwKKyAgICAweEYwLDB4QzQsMHhBRSwweEI0LDB4MDMsMHgwQiwweEVGLDB4RTcsMHhGMCwweEM0
LDB4Q0YsMHhCQywweDI4LDB4NjAsMHg4QSwweEQ4LAorICAgIDB4MzAsMHhDRCwweEQwLDB4QkMs
MHgzQiwweEFCLDB4RkYsMHg3RiwweDUxLDB4Q0QsMHhGMCwweEM0LDB4QUEsMHg4QiwweEVGLDB4
RTUsCisgICAgMHg1MSwweENELDB4RjAsMHhDNCwweEE4LDB4RUEsMHhERiwweDdGLDB4NTEsMHhD
RCwweEYwLDB4QzQsMHhBQiwweEEzLDB4RkUsMHg3RSwKKyAgICAweDQ1LDB4NkEsMHhFNCwweDY5
LDB4RUIsMHhGRiwweDZFLDB4QjgsMHg0NSwweDZBLDB4MDUsMHg2MiwweEZGLDB4N0YsMHhERiww
eEFBLAorICAgIDB4NDUsMHg2QSwweDA1LDB4NkEsMHg5QSwweEZCLDB4RUEsMHhCQSwweDQ2LDB4
NkEsMHhFNSwweDYxLDB4NTIsMHg3QSwweEJFLDB4QjgsCisgICAgMHg2NiwweDZBLDB4MDUsMHg2
QSwweDJELDB4RUYsMHg1NSwweDc2LDB4QTcsMHg3QSwweDA1LDB4NjIsMHgwQSwweEJCLDB4RjUs
MHhGNSwKKyAgICAweDg3LDB4N0EsMHgyNSwweDZBLDB4MDIsMHgwMCwweDJFLDB4NTcsMHhBNyww
eDdBLDB4MjYsMHg2QSwweDgwLDB4MDAsMHgyQSwweEJELAorICAgIDB4QzcsMHg3QSwweDg3LDB4
N0EsMHhCNSwweEZGLDB4OUQsMHg1NywweEE3LDB4N0EsMHg4NywweDdBLDB4MDksMHhEMywweDE0
LDB4MTMsCisgICAgMHhDNywweDgyLDB4NjYsMHg3QSwweDdFLDB4RUIsMHhFRSwweEZBLDB4QTcs
MHg3QSwweDY3LDB4N0EsMHgyQSwweEIzLDB4QUIsMHhCRSwKKyAgICAweEE3LDB4N0EsMHg4Nyww
eDdBLDB4QUYsMHhCNywweDI3LDB4QjUsMHhBNywweDdBLDB4ODcsMHg3QSwweDU3LDB4RjQsMHhD
MywweEFCLAorICAgIDB4QzcsMHg4MiwweDY2LDB4NzIsMHhCRSwweEFGLDB4QUQsMHhCRSwweEE3
LDB4N0EsMHg2NiwweDdBLDB4MkQsMHg4OCwweDAwLDB4MEMsCisgICAgMHhDNywweDgyLDB4ODcs
MHg3QSwweDc3LDB4RkMsMHhFQSwweEFFLDB4QTcsMHg3QSwweDQ2LDB4NzIsMHhBQiwweDg5LDB4
MDIsMHgwOCwKKyAgICAweEE3LDB4N0EsMHg2NiwweDcyLDB4NTcsMHhFRSwweDg4LDB4MDIsMHhB
NywweDdBLDB4NjYsMHg3MiwweDc3LDB4RkYsMHhGQSwweEYyLAorICAgIDB4QzcsMHg4MiwweDQ2
LDB4NzIsMHhERiwweERGLDB4RkIsMHhCOCwweDg2LDB4N0EsMHgyNCwweDZBLDB4QTYsMHg4QSww
eDhBLDB4QjAsCisgICAgMHg4NywweDdBLDB4NDYsMHg3MiwweDhELDB4NkIsMHg2OCwweENCLDB4
RTgsMHg4MiwweDQ1LDB4NzIsMHgyQiwweEFGLDB4RDcsMHg1RiwKKyAgICAweDA4LDB4OEIsMHg2
NiwweDcyLDB4MDIsMHhBMiwweEFGLDB4NTcsMHhFOCwweDgyLDB4QTcsMHg3QSwweEEwLDB4MDAs
MHgwRSwweDM1LAorICAgIDB4RTgsMHg4MiwweEE3LDB4ODIsMHgyRiwweDA4LDB4MjAsMHhFOCww
eEU4LDB4ODIsMHhBNiwweDdBLDB4RUEsMHhGQSwweDAyLDB4Q0UsCisgICAgMHhDNywweDdBLDB4
NjMsMHg1MSwweDVBLDB4NTgsMHhFOCwweDgwLDB4QTQsMHg1OSwweEMyLDB4MzgsMHhENywweEQ3
LDB4N0UsMHhGOCwKKyAgICAweEUyLDB4NDAsMHhDMiwweDM4LDB4NTcsMHg1NywweDVFLDB4NjAs
MHhFMiwweDM4LDB4ODEsMHgzOCwweDdBLDB4RkEsMHhBOCwweEEwLAorICAgIDB4RTMsMHg0MCww
eDgxLDB4MzgsMHgyRCwweDBGLDB4QUIsMHgwMiwweDQ0LDB4NTksMHhDMiwweDQwLDB4OTUsMHhC
OSwweDBCLDB4MkYsCisgICAgMHhBNSwweDYxLDB4MjMsMHg1MSwweEJELDB4QUYsMHgyRiwweDJC
LDB4NDcsMHg3QSwweEM1LDB4NjksMHhCRCwweDJELDB4QTksMHg4NSwKKyAgICAweEE4LDB4ODIs
MHg0NywweDdBLDB4MDMsMHg1QiwweDdELDB4RjUsMHhDOSwweDgyLDB4NDcsMHg3MiwweEEyLDB4
N0IsMHg3RCwweEJGLAorICAgIDB4ODgsMHg4MiwweDA2LDB4NkEsMHgwOCwweEU4LDB4NUYsMHhF
QywweEE4LDB4ODIsMHhDNCwweDY5LDB4MDAsMHgwMiwweEJELDB4QjcsCisgICAgMHhFOSwweDhB
LDB4MjcsMHg3MiwweDgyLDB4MDIsMHhBRiwweDdGLDB4NjcsMHg3QSwweEM1LDB4NTksMHhBOCww
eERDLDB4NzgsMHhGRSwKKyAgICAweDI3LDB4NkEsMHg0NCwweDQ5LDB4NjgsMHhFMCwweEVCLDB4
NTcsMHg2NCwweDUxLDB4QzIsMHgzOCwweEE4LDB4RkMsMHhGRSwweDdGLAorICAgIDB4MjMsMHg0
MSwweEMyLDB4MzgsMHhBMCwweEFBLDB4N0QsMHg1QiwweDAzLDB4MzksMHhDMiwweDM4LDB4QUEs
MHhBRiwweEFELDB4QUQsCisgICAgMHgwMywweDQxLDB4RTIsMHgzOCwweDM3LDB4RjYsMHgzMiww
eEJFLDB4MjQsMHg0MSwweEUzLDB4MzgsMHhDMCwweEUyLDB4N0IsMHg1NywKKyAgICAweEUzLDB4
MzgsMHhBMiwweDMwLDB4RTAsMHg0OCwweEFDLDB4ODAsMHhDMiwweDM4LDB4ODEsMHgzMCwweERF
LDB4REYsMHhDQSwweDgwLAorICAgIDB4NDQsMHg0OSwweEExLDB4MzAsMHhCNSwweEY1LDB4M0Qs
MHgwQiwweEE1LDB4NTksMHgwMywweDQxLDB4QUQsMHhBRCwweDJGLDB4MEEsCisgICAgMHhDNiww
eDYxLDB4NjQsMHg1MSwweDI1LDB4QkYsMHhGRSwweEZBLDB4MjYsMHg3MiwweDg0LDB4NTksMHgy
MiwweDg5LDB4QkQsMHhCNSwKKyAgICAweDY3LDB4N0EsMHhFNiwweDY5LDB4QTksMHgwQiwweDIz
LDB4RkQsMHg4OCwweDgyLDB4MjYsMHg3MiwweEUwLDB4RTAsMHhGQSwweEZELAorICAgIDB4MjYs
MHg3MiwweEE0LDB4NjEsMHhBMCwweDg4LDB4ODAsMHg3QSwweEU2LDB4NjksMHg4NCwweDU5LDB4
RDgsMHhEQSwweEQ2LDB4NTUsCisgICAgMHhDNSwweDU5LDB4ODQsMHg1OSwweEI3LDB4QjUsMHgy
RCwweDA5LDB4RTYsMHg2MSwweDg1LDB4NTksMHhGQSwweEEzLDB4RUIsMHhERSwKKyAgICAweEE1
LDB4NTksMHg0NCwweDQ5LDB4RTgsMHg4MCwweEU4LDB4N0UsMHg2NCwweDUxLDB4MDMsMHg0MSww
eDY4LDB4N0EsMHg3QSwweDdBLAorICAgIDB4MjQsMHg0OSwweEUzLDB4NDAsMHhBRiwweEJGLDB4
RkIsMHhCRiwweEU2LDB4NjEsMHgwMywweDQ5LDB4QUQsMHhBNSwweEFGLDB4MkYsCisgICAgMHg0
NywweDcyLDB4RTYsMHg2MSwweEE1LDB4QTMsMHg4RiwweEUzLDB4NjgsMHg3QSwweEM1LDB4NjEs
MHg1QiwweEI3LDB4MkYsMHgyRiwKKyAgICAweEE4LDB4ODIsMHgyNiwweDcyLDB4QUQsMHg4RSww
eDAyLDB4OEEsMHhDOSwweDhBLDB4MjYsMHg3MiwweDAyLDB4QTgsMHhGRSwweDdFLAorICAgIDB4
ODgsMHg4MiwweDI2LDB4NzIsMHg2MCwweEEyLDB4QUUsMHgyNywweEM4LDB4OEEsMHgyNiwweDcy
LDB4OTUsMHgzRSwweDBBLDB4MDgsCisgICAgMHgwOSwweDhCLDB4NjYsMHg3QSwweEZELDB4QUYs
MHhBRSwweDJBLDB4MEEsMHg4QiwweEE4LDB4ODIsMHgyRiwweDJFLDB4QUEsMHg3OCwKKyAgICAw
eDJFLDB4QjQsMHg4OCwweDdBLDB4MEIsMHhCRiwweDU1LDB4NTUsMHg0RCwweEI0LDB4QTcsMHg4
MiwweDAwLDB4QkUsMHg3NSwweDU1LAorICAgIDB4MzEsMHhDRCwweDA5LDB4OEIsMHgyQSwweEJG
LDB4RkQsMHg1NSwweDE1LDB4RTYsMHgyQSwweDkzLDB4MDAsMHgyQSwweEFGLDB4RjUsCisgICAg
MHhENywweEZFLDB4RDAsMHhDNCwweDAwLDB4MEEsMHgyQiwweEZELDB4RDcsMHhGRSwweDExLDB4
Q0QsMHgwMCwweDAwLDB4QUEsMHhENSwKKyAgICAweEQ3LDB4RkUsMHg5NCwweERELDB4MDAsMHgw
MCwweDAyLDB4QkQsMHhGOCwweEZFLDB4OTYsMHhGNiwweEFBLDB4MkEsMHhCQiwweEY1LAorICAg
IDB4RjgsMHhGRSwweEQ3LDB4RjYsMHg4MiwweEEwLDB4QTAsMHg1QiwweEY4LDB4RkUsMHhCNyww
eEY2LDB4MzIsMHhBMiwweDhBLDB4RkYsCisgICAgMHhGOCwweEZFLDB4RDcsMHhGNiwweDI4LDB4
MkUsMHg4QSwweEU1LDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhBQSwweEJBLDB4QUIsMHhGRiwKKyAg
ICAweEY4LDB4RkUsMHhEOCwweEY2LDB4RUEsMHhBQSwweEFBLDB4QjgsMHhGOCwweEZFLDB4RDcs
MHhGNiwweDBBLDB4QTgsMHg4MiwweEFBLAorICAgIDB4RjgsMHhGRSwweEI3LDB4RjYsMHhBMCww
eEZBLDB4RTgsMHg3QSwweEQ3LDB4RjYsMHhCNywweEY2LDB4N0MsMHhGRSwweDVGLDB4NTUsCisg
ICAgMHhCNywweEY2LDB4OTYsMHhFRSwweEUwLDB4RTgsMHhGMiwweDdBLDB4QjcsMHhGNiwweDc2
LDB4RUUsMHhBQSwweEZBLDB4NUIsMHg3RiwKKyAgICAweDk2LDB4RUUsMHg1NSwweEVFLDB4MDAs
MHg4QSwweERELDB4RjcsMHg3NiwweEVFLDB4NTUsMHhFRSwweDIwLDB4MDAsMHhBMiwweEJGLAor
ICAgIDB4NTUsMHhGNiwweDc2LDB4RUUsMHg1NSwweDVGLDB4NzcsMHhGRSwweDk2LDB4RjYsMHg3
NiwweEVFLDB4RTIsMHhGRiwweDdELDB4NUQsCisgICAgMHg3NiwweEVFLDB4NTUsMHhFRSwweEU4
LDB4Q0EsMHhCNywweDQzLDB4OTYsMHhGNiwweDU2LDB4RUUsMHhGNSwweEZELDB4QUYsMHgyQiwK
KyAgICAweDk2LDB4RjYsMHg1NiwweEVFLDB4NUUsMHg3RSwweEVBLDB4RTgsMHg1NSwweEY2LDB4
NzYsMHhFRSwweDc1LDB4NTUsMHg3NiwweEZFLAorICAgIDB4OTYsMHhGNiwweDc2LDB4RUUsMHg3
RiwweEZFLDB4RUEsMHg2QSwweDU2LDB4RjYsMHg3NiwweEVFLDB4RjcsMHhGRCwweERELDB4RDUs
CisgICAgMHg3NSwweEVFLDB4NTYsMHhFRSwweEE4LDB4OUEsMHhGQSwweEZCLDB4NzYsMHhFRSww
eDU1LDB4RUUsMHgyNiwweEZFLDB4RUEsMHgyOCwKKyAgICAweDc2LDB4RUUsMHg1NSwweEVFLDB4
RkUsMHhCRSwweDNGLDB4RDUsMHg3NSwweEVFLDB4NTUsMHhFRSwweEZFLDB4MEMsMHg4MCwweENC
LAorICAgIDB4NzYsMHhFRSwweDM0LDB4RTYsMHhBQSwweEJBLDB4N0UsMHhGRiwweDU1LDB4RUUs
MHgxNCwweEU2LDB4QjIsMHhBOCwweEVBLDB4QUUsCisgICAgMHg1NSwweEVFLDB4MzQsMHhFNiww
eDcwLDB4NkIsMHg2MSwweDdGLDB4MTQsMHhFNiwweDkyLDB4RDUsMHhGQywweEY4LDB4N0UsMHhE
RSwKKyAgICAweEYzLDB4REQsMHhCMywweEQ1LDB4MEIsMHgyRiwweEJELDB4QjUsMHgxNCwweEU2
LDB4RDMsMHhERCwweDJCLDB4MkUsMHhCQiwweEFELAorICAgIDB4NTUsMHhFRSwweEY0LDB4REQs
MHhDQiwweEFCLDB4MkYsMHhCOSwweDc1LDB4RUUsMHgzNCwweEU2LDB4MTUsMHhBNSwweDBCLDB4
QTIsCisgICAgMHg3NSwweEVFLDB4MzUsMHhFNiwweDYwLDB4RUEsMHhGNiwweEI1LDB4NTUsMHhF
RSwweDkzLDB4RDUsMHg1RiwweEZFLDB4RTAsMHhBMCwKKyAgICAweEQzLDB4REQsMHhGMCwweEM0
LDB4NUYsMHg3QSwweEE4LDB4ODAsMHg3MiwweENELDB4MTAsMHhDNSwweDlELDB4RjUsMHhCRiww
eEUwLAorICAgIDB4NTEsMHhDRCwweDExLDB4QzUsMHhCRiwweEJFLDB4QTIsMHgwMCwweDcyLDB4
Q0QsMHg1MSwweENELDB4RUQsMHg2RCwweDlELDB4NTUsCisgICAgMHg3MiwweENELDB4MzEsMHhD
RCwweDdGLDB4NUEsMHhFQSwweDhGLDB4MTEsMHhDNSwweDJCLDB4OEIsMHg3OCwweEUwLDB4RTAs
MHg4MCwKKyAgICAweDRBLDB4OEIsMHg2NywweDcyLDB4QkYsMHhCRSwweEJDLDB4REMsMHg4RSww
eEI0LDB4MDksMHg4MywweDBCLDB4MkYsMHhGRCwweEQ1LAorICAgIDB4QUUsMHhCNCwweDhCLDB4
OTMsMHgwMCwweEE4LDB4QUEsMHhGRCwweEQwLDB4QzQsMHg2RSwweEFDLDB4MkEsMHhCQiwweEFG
LDB4OTUsCisgICAgMHhGMCwweEM0LDB4QUYsMHhCQywweEZBLDB4REIsMHhGRCwweDc1LDB4MzEs
MHhDRCwweEFGLDB4QkMsMHgwRiwweEFGLDB4RkYsMHhGNSwKKyAgICAweDMxLDB4Q0QsMHhDRiww
eEJDLDB4MkUsMHhCRSwweDZGLDB4RkQsMHgxMCwweEM1LDB4Q0YsMHhCQywweEUwLDB4QTgsMHhF
RiwweEQ1LAorICAgIDB4NDYsMHg2QSwweEU1LDB4NjksMHgwQSwweEJBLDB4ODgsMHhBMCwweDQ2
LDB4NkEsMHgyNSwweDZBLDB4RjgsMHhBQSwweDM1LDB4MTcsCisgICAgMHg0NiwweDcyLDB4MDUs
MHg2MiwweERCLDB4RUYsMHhBQSwweDBBLDB4NjYsMHg3MiwweDA1LDB4NkEsMHhCQSwweEZBLDB4
NUUsMHhGMywKKyAgICAweDQ2LDB4NzIsMHgwNSwweDZBLDB4N0UsMHhFRiwweDVFLDB4MkEsMHg0
NiwweDcyLDB4MDUsMHg2QSwweEE5LDB4MkEsMHg5QSwweEM4LAorICAgIDB4NDYsMHg3MiwweDA1
LDB4NkEsMHhGNSwweDVBLDB4NzMsMHhGMiwweDQ1LDB4NzIsMHhFNCwweDY5LDB4MkEsMHhGRSww
eEZCLDB4RkEsCisgICAgMHg4NywweDdBLDB4MDUsMHg2QSwweDJBLDB4RjUsMHg3NSwweEZGLDB4
QTcsMHg4MiwweEU1LDB4NjksMHgyMiwweDBBLDB4RkIsMHhERiwKKyAgICAweEE3LDB4N0EsMHgy
NiwweDcyLDB4MjAsMHgwMCwweDhBLDB4RkQsMHhDOCwweDgyLDB4ODcsMHg3QSwweDU3LDB4NkYs
MHhGNSwweDlELAorICAgIDB4QTcsMHg3QSwweDY2LDB4N0EsMHhDMiwweDAyLDB4ODQsMHg4OCww
eEE3LDB4N0EsMHg2NiwweDcyLDB4ODIsMHhBOCwweDhELDB4MEUsCisgICAgMHhDNywweDgyLDB4
NjYsMHg3MiwweDlCLDB4MUIsMHhBQiwweEU5LDB4QzcsMHg3QSwweDg3LDB4N0EsMHhGNiwweDc2
LDB4NTUsMHhENywKKyAgICAweEE3LDB4N0EsMHg4NiwweDdBLDB4M0UsMHgyNSwweDNCLDB4RjUs
MHhDNywweDgyLDB4ODcsMHg3QSwweERGLDB4RkIsMHhBRiwweEVCLAorICAgIDB4QTcsMHg3QSww
eDQ1LDB4NzIsMHgwQSwweERBLDB4OEUsMHgwQiwweEE3LDB4N0EsMHg0NSwweDcyLDB4QTAsMHhE
RSwweEVDLDB4OEEsCisgICAgMHhBNywweDdBLDB4ODcsMHg3QSwweEY4LDB4QkYsMHhENSwweDM1
LDB4QTcsMHg3QSwweDg3LDB4N0EsMHhCNywweERBLDB4QkUsMHgyRiwKKyAgICAweEE3LDB4ODIs
MHg0NiwweDcyLDB4NzAsMHhCMiwweDhBLDB4QjgsMHhBNywweDdBLDB4NjYsMHg3QSwweDU2LDB4
RTAsMHhGRSwweEI0LAorICAgIDB4QTcsMHg3QSwweDQ1LDB4NzIsMHg3NywweEFGLDB4QUEsMHgy
OCwweEM3LDB4ODIsMHg2NiwweDcyLDB4MjUsMHg1RCwweEVGLDB4RkQsCisgICAgMHhDOCwweDgy
LDB4NjYsMHg3MiwweDAzLDB4QjUsMHg1NSwweEZGLDB4MDgsMHg4QiwweDY2LDB4NzIsMHhBOCww
eDJGLDB4RkQsMHhERCwKKyAgICAweEU4LDB4ODIsMHg2NSwweDcyLDB4RTIsMHg4QSwweDJCLDB4
QUQsMHg4NiwweDcyLDB4MDMsMHg0OSwweDdFLDB4RjgsMHhFMCwweDgwLAorICAgIDB4QTQsMHg1
OSwweEUyLDB4NDAsMHg1NSwweDU3LDB4NUUsMHhGOCwweDAzLDB4NDksMHhDMiwweDQwLDB4N0Us
MHg1QSwweEY4LDB4ODAsCisgICAgMHg0MywweDQ5LDB4RTMsMHg0MCwweERELDB4MTUsMHhCRCww
eEY1LDB4ODQsMHg1OSwweDAzLDB4NDksMHhGRCwweEFFLDB4QUEsMHg4QiwKKyAgICAweDg0LDB4
NTksMHhFMiwweDQ4LDB4MEEsMHhCNywweDVFLDB4N0UsMHhFNiwweDY5LDB4RTMsMHg0OCwweDBB
LDB4QUYsMHhGRCwweDc1LAorICAgIDB4MjcsMHg3MiwweDIzLDB4NTEsMHgwOCwweEJGLDB4RjUs
MHhENSwweEE5LDB4ODIsMHg0NCwweDU5LDB4MEEsMHhBQSwweEZGLDB4NUQsCisgICAgMHg4OCww
eDdBLDB4ODUsMHg2MSwweDAwLDB4MDgsMHg4QiwweEY1LDB4ODgsMHg4MiwweEM1LDB4NjEsMHhB
QSwweDAwLDB4QTIsMHg1NSwKKyAgICAweDg3LDB4N0EsMHhDNSwweDYxLDB4RTIsMHhFOCwweDdB
LDB4NTUsMHgwNiwweDZBLDB4NjQsMHg1MSwweDgwLDB4QUUsMHg1RiwweDc3LAorICAgIDB4QTUs
MHg1OSwweDAzLDB4NDEsMHhGQywweEZFLDB4NTcsMHg1NywweDIzLDB4NDEsMHhFMywweDM4LDB4
NTYsMHhGQSwweEZBLDB4QjUsCisgICAgMHgwMywweDM5LDB4QzIsMHgzOCwweERFLDB4NUUsMHhG
OCwweDI4LDB4RTIsMHg0MCwweDAzLDB4MzksMHg3QSwweDc2LDB4RDcsMHhENSwKKyAgICAweEUy
LDB4NDgsMHgwMywweDM5LDB4NzcsMHhENywweEZELDB4NTcsMHg0NCwweDQxLDB4QzIsMHgzOCww
eEY3LDB4QkEsMHhBQSwweEIyLAorICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHhFOCwweDdBLDB4
RjAsMHhFMiwweEUyLDB4MzgsMHhBMiwweDMwLDB4RkQsMHgzNywweEZGLDB4QjksCisgICAgMHg0
NCwweDQ5LDB4QzIsMHgzOCwweDBCLDB4MjksMHgwOSwweDI5LDB4QzUsMHg1OSwweDY0LDB4NTEs
MHgyQiwweEM5LDB4OEQsMHhBOSwKKyAgICAweEM1LDB4NjksMHg2NCwweDUxLDB4RkYsMHhGRiww
eEZGLDB4MkUsMHgwNiwweDcyLDB4NjQsMHg1OSwweDg5LDB4MEIsMHhBOSwweEZBLAorICAgIDB4
RTUsMHg2OSwweDg0LDB4NTksMHgwMCwweDAwLDB4MDgsMHhERCwweDQ3LDB4NzIsMHhBNCwweDYx
LDB4OEIsMHhCNywweDk3LDB4RDUsCisgICAgMHgwNiwweDZBLDB4NjQsMHg1OSwweEU4LDB4RkEs
MHhGQSwweDVFLDB4ODUsMHg1OSwweDY0LDB4NTEsMHgwRiwweEI4LDB4OTgsMHhFRiwKKyAgICAw
eEM1LDB4NjEsMHg2NCwweDUxLDB4QzksMHhBNywweEJGLDB4QjUsMHhFNiwweDYxLDB4ODQsMHg1
MSwweDdGLDB4RTgsMHg4MiwweEMyLAorICAgIDB4QTQsMHg1OSwweDI0LDB4NDksMHhFQSwweEUw
LDB4RTgsMHg3RSwweDQzLDB4NDksMHgwMiwweDQxLDB4NzgsMHhBRSwweEFBLDB4RTIsCisgICAg
MHg2NCwweDUxLDB4RTIsMHgzOCwweEJELDB4QUQsMHgzRiwweDJBLDB4RTYsMHg2MSwweDQ0LDB4
NDksMHgyRCwweDJCLDB4QUIsMHhBRiwKKyAgICAweDQ3LDB4NzIsMHhDNiwweDYxLDB4QTIsMHg4
QiwweDNGLDB4RjUsMHg4OCwweDdBLDB4MjYsMHg2QSwweEJELDB4RUYsMHhFOCwweDAxLAorICAg
IDB4ODgsMHg4MiwweDI2LDB4NzIsMHg4QiwweEJBLDB4REUsMHhFQSwweDg4LDB4ODIsMHhFNSww
eDY5LDB4RjAsMHg3RSwweEZGLDB4RDcsCisgICAgMHg2NywweDdBLDB4RTUsMHg2OSwweDI3LDB4
MEQsMHg4OCwweDAyLDB4RTksMHg4QSwweDQ3LDB4NzIsMHgyQSwweDBGLDB4MkQsMHhCNSwKKyAg
ICAweDJBLDB4OTMsMHhDOSwweDhBLDB4M0IsMHhBQiwweEVGLDB4NkYsMHgwOSwweDhCLDB4Njcs
MHg3QSwweEU4LDB4QTgsMHhGQSwweDVFLAorICAgIDB4ODgsMHg3QSwweEU1LDB4NjksMHhBOCww
eDc4LDB4QkEsMHhBNywweEM4LDB4ODIsMHgyNiwweDcyLDB4MkIsMHhCRCwweEJGLDB4QkQsCisg
ICAgMHhFOSwweDhBLDB4MDUsMHg3MiwweDgyLDB4RUEsMHg1RSwweDVFLDB4NkIsMHg5QiwweDQ3
LDB4NzIsMHgyQiwweDI1LDB4QjUsMHhGNSwKKyAgICAweDJELDB4QUMsMHg4OCwweDdBLDB4MDAs
MHhGQiwweDdGLDB4NUYsMHg4QiwweDlCLDB4NjgsMHg3QSwweDA4LDB4REYsMHg1NSwweDU1LAor
ICAgIDB4OTIsMHhENSwweDg4LDB4N0EsMHgwQiwweEJGLDB4RkQsMHhENSwweDc1LDB4RUUsMHg2
QiwweDkzLDB4MDIsMHhBQiwweEZGLDB4NTUsCisgICAgMHhENywweEZFLDB4NkIsMHg5MywweDAw
LDB4QUEsMHhGRiwweDU1LDB4QjYsMHhGNiwweDZBLDB4OTMsMHgwMCwweEFBLDB4RkYsMHhGNSwK
KyAgICAweEI2LDB4RjYsMHhDRiwweEJDLDB4MDAsMHgwQSwweEFGLDB4QTUsMHhENywweEY2LDB4
RjQsMHhFNSwweDAwLDB4MDIsMHg4QSwweEZELAorICAgIDB4RjgsMHhGRSwweDc2LDB4RUUsMHg4
MCwweDAyLDB4MkEsMHhENSwweEY4LDB4RkUsMHhCNywweEY2LDB4RTIsMHhBOCwweEFBLDB4RjUs
CisgICAgMHhENywweEY2LDB4QjcsMHhGNiwweDc4LDB4NzgsMHg1OCwweDc1LDB4QjcsMHhGNiww
eDk2LDB4RUUsMHg4MCwweDA4LDB4RTgsMHg3RiwKKyAgICAweEI2LDB4RjYsMHg3NiwweEVFLDB4
QUEsMHhGRSwweDdGLDB4NzcsMHg5NiwweEVFLDB4NTUsMHhFRSwweEYwLDB4RjgsMHg3QSwweEJF
LAorICAgIDB4NzYsMHhGNiwweDU1LDB4RTYsMHhGQiwweDJCLDB4OEEsMHhBQywweDk2LDB4RjYs
MHg1NSwweEVFLDB4RkYsMHhGQiwweEU4LDB4RkEsCisgICAgMHg3NiwweEVFLDB4MzUsMHhFRSww
eEE4LDB4RTgsMHhGQSwweEZFLDB4NzYsMHhFRSwweDM1LDB4RUUsMHgwMiwweDBGLDB4QUYsMHhB
QSwKKyAgICAweDk2LDB4RjYsMHg3NiwweEVFLDB4NzUsMHg1RCwweEZELDB4QjUsMHg1NywweEY2
LDB4NzUsMHhFRSwweDVGLDB4NUYsMHhERCwweEZELAorICAgIDB4OTYsMHhGNiwweDU2LDB4RUUs
MHhGQSwweEFCLDB4OEIsMHg4QiwweDk2LDB4RjYsMHg1NiwweEVFLDB4RkQsMHhFRiwweEFBLDB4
RUEsCisgICAgMHg5NiwweEY2LDB4NzYsMHhFRSwweEVGLDB4M0IsMHgyRiwweDhGLDB4QjYsMHhG
NiwweDc2LDB4RUUsMHg3RCwweEVGLDB4RUIsMHg3RiwKKyAgICAweDc2LDB4RUUsMHgzNSwweEVF
LDB4QTgsMHhGMCwweEI4LDB4RkEsMHg3NSwweEVFLDB4MzUsMHhFRSwweEFBLDB4OEQsMHhGQiww
eEZGLAorICAgIDB4NzYsMHhFRSwweDU1LDB4RUUsMHg1NSwweDU1LDB4RTUsMHg4NSwweDc1LDB4
RUUsMHgzNSwweEVFLDB4RUUsMHg4OCwweDIyLDB4MjMsCisgICAgMHg3NSwweEVFLDB4MzUsMHhF
NiwweEZGLDB4RTMsMHgyMCwweDgwLDB4NTUsMHhFRSwweDM1LDB4RTYsMHhFQiwweEVBLDB4RUMs
MHhGNCwKKyAgICAweDU1LDB4RUUsMHhGNCwweERELDB4QUEsMHhDMCwweEVBLDB4NkEsMHhGMyww
eERELDB4NzIsMHhDRCwweERDLDB4RkEsMHg3QSwweDdFLAorICAgIDB4RDMsMHhERCwweDcyLDB4
Q0QsMHg4RiwweEI3LDB4QkYsMHhBRiwweDE0LDB4RTYsMHhCMywweEQ1LDB4MEIsMHgyRiwweDJE
LDB4QUIsCisgICAgMHgzNCwweEU2LDB4RjQsMHhERCwweDJCLDB4OEEsMHhGRiwweDc3LDB4NTUs
MHhFRSwweEY0LDB4REQsMHg4MiwweEZGLDB4RkQsMHhGRCwKKyAgICAweDc2LDB4RUUsMHgxNCww
eEU2LDB4QUQsMHhBRiwweDJELDB4MEYsMHg5NiwweEY2LDB4MzQsMHhFNiwweDdBLDB4RUEsMHhB
MiwweDIwLAorICAgIDB4OTYsMHhGNiwweEYzLDB4REQsMHhERCwweEFBLDB4ODIsMHgwOCwweDk2
LDB4RjYsMHg3MiwweEQ1LDB4NUYsMHhGQSwweEUwLDB4ODAsCisgICAgMHgxNCwweEU2LDB4NTEs
MHhDRCwweDU1LDB4NTUsMHg1NywweEY4LDB4NzIsMHhENSwweDMxLDB4QzUsMHhFQiwweEU3LDB4
RUEsMHhFOCwKKyAgICAweDcyLDB4RDUsMHgzMSwweEM1LDB4MkEsMHhBMywweEFGLDB4QTYsMHg3
MiwweENELDB4RDAsMHhCQywweDc4LDB4RTgsMHg4MCwweDgyLAorICAgIDB4RDAsMHhCQywweDY3
LDB4NzIsMHg1RSwweDdDLDB4NzgsMHhDMCwweEE4LDB4N0EsMHhFNiwweDYxLDB4OEEsMHg3Riww
eDVGLDB4RkUsCisgICAgMHhBQiwweDlCLDB4MDUsMHg2MiwweDBCLDB4QjUsMHg1NSwweDU1LDB4
NkUsMHhBQywweDQ3LDB4NzIsMHgwMiwweDBBLDB4QUIsMHhGNSwKKyAgICAweEFGLDB4QkMsMHhF
QywweEEzLDB4MDIsMHgyMiwweEJCLDB4RTUsMHhDRiwweEJDLDB4MkUsMHhBQywweDgwLDB4MEEs
MHhCRiwweDU3LAorICAgIDB4RDAsMHhCQywweDRFLDB4QUMsMHg4MCwweDI4LDB4QUEsMHhBNSww
eDEwLDB4QzUsMHhBRiwweEJDLDB4OUQsMHg5NywweDNCLDB4QTUsCisgICAgMHg2NiwweDcyLDB4
MjUsMHg2QSwweDZCLDB4RUEsMHg3QSwweEJBLDB4NDYsMHg3MiwweDA1LDB4NkEsMHgwRCwweDgy
LDB4MDAsMHgyQywKKyAgICAweDY3LDB4NzIsMHgyNSwweDZBLDB4RTYsMHhEMywweDZGLDB4RTcs
MHg2NiwweDcyLDB4MjUsMHg2QSwweDNBLDB4MUIsMHg5MSwweDhGLAorICAgIDB4NDYsMHg3Miww
eDA1LDB4NkEsMHhCQSwweEZBLDB4RUUsMHg0MCwweDI2LDB4NkEsMHgwNSwweDZBLDB4QTIsMHg4
MSwweDE3LDB4QkQsCisgICAgMHg0NiwweDcyLDB4RTQsMHg2MSwweEZFLDB4RkEsMHhBMiwweDJB
LDB4NjcsMHg3MiwweEU1LDB4NjksMHg5RCwweEJGLDB4MkYsMHhGRSwKKyAgICAweDQ2LDB4NzIs
MHhFNCwweDYxLDB4QTgsMHg4QSwweDMwLDB4MTgsMHg0NiwweDcyLDB4MDUsMHg2QSwweEZGLDB4
RkQsMHg2QSwweDI4LAorICAgIDB4NDYsMHg3MiwweDA1LDB4NkEsMHhBMCwweDYwLDB4QkUsMHgz
QywweDg3LDB4N0EsMHgwNSwweDZBLDB4MEIsMHg1NywweEQ3LDB4RkYsCisgICAgMHhBNywweDdB
LDB4MDUsMHg2QSwweDA4LDB4QUEsMHg2NywweDU3LDB4QTcsMHg3QSwweDA1LDB4NkEsMHgyMCww
eDgyLDB4QUIsMHhCRCwKKyAgICAweEE3LDB4ODIsMHg0NiwweDcyLDB4QzMsMHgyMywweDJBLDB4
QjksMHhDNywweDgyLDB4ODcsMHg3QSwweERELDB4RjcsMHhERiwweDc5LAorICAgIDB4QzcsMHg4
MiwweDY2LDB4NzIsMHg3NywweEFFLDB4RUEsMHhFMywweEM3LDB4ODIsMHg2NiwweDcyLDB4OEIs
MHhBRSwweEJCLDB4REYsCisgICAgMHhDNywweDgyLDB4ODcsMHg3QSwweDc5LDB4RUEsMHhFMiww
eDYyLDB4QzcsMHg4MiwweDY2LDB4NzIsMHgyOSwweEFBLDB4RkYsMHg3RiwKKyAgICAweEM3LDB4
ODIsMHg4NywweDdBLDB4RjcsMHg2RCwweEY5LDB4N0EsMHhDOCwweDgyLDB4NjYsMHg3QSwweEY5
LDB4QkUsMHhCQSwweEEzLAorICAgIDB4QzcsMHg4MiwweDY3LDB4N0EsMHhGRiwweEFBLDB4NkEs
MHhGQSwweEM4LDB4ODIsMHg4NywweDdBLDB4REQsMHhERCwweDY4LDB4RjYsCisgICAgMHhBNyww
eDdBLDB4ODYsMHg3QSwweDZELDB4ODMsMHgwQiwweDBFLDB4QzYsMHg4MiwweDY1LDB4NzIsMHhE
RSwweEVFLDB4RTgsMHhCOCwKKyAgICAweEM3LDB4ODIsMHg2NiwweDcyLDB4NTYsMHhGRiwweEFC
LDB4OEEsMHhDNywweDgyLDB4NjYsMHg3MiwweDc3LDB4N0YsMHhBQSwweDJFLAorICAgIDB4QTcs
MHg3QSwweDY2LDB4NzIsMHhGRCwweEZGLDB4NzgsMHhDMCwweEE2LDB4N0EsMHg2NiwweDcyLDB4
NUUsMHg2NSwweEVCLDB4RTksCisgICAgMHg2NiwweDcyLDB4NDQsMHg1MSwweDdFLDB4NzgsMHhF
OCwweEEwLDB4QTYsMHg2MSwweEUzLDB4NDAsMHg3RiwweEZBLDB4RTgsMHhBOCwKKyAgICAweEE1
LDB4NTksMHgyMywweDQ5LDB4NTUsMHg3NywweEZGLDB4RkUsMHg2NCwweDU5LDB4MjMsMHg1MSww
eDJFLDB4QkEsMHhEQSwweEUyLAorICAgIDB4NDQsMHg1MSwweDAzLDB4NTEsMHg2MCwweDAwLDB4
RTAsMHhBMCwweDQ0LDB4NTEsMHhDMiwweDQwLDB4RkYsMHg3NiwweEZFLDB4MkEsCisgICAgMHgw
MywweDQ5LDB4QzIsMHg0MCwweDJCLDB4ODcsMHhFNywweDBDLDB4ODUsMHg2MSwweDAzLDB4NDks
MHhFMiwweEZELDB4RDksMHhGRCwKKyAgICAweEM2LDB4NjEsMHgyNCwweDQ5LDB4MkUsMHhBNyww
eEJGLDB4RUQsMHhDNiwweDYxLDB4MjQsMHg0OSwweEEwLDB4QUEsMHhGRiwweDdGLAorICAgIDB4
QTYsMHg2MSwweDQ0LDB4NDksMHg3OCwweDVFLDB4RkYsMHhGQiwweDg1LDB4NTEsMHhFMiwweDM4
LDB4ODIsMHhGOCwweERBLDB4N0UsCisgICAgMHgwMywweDQxLDB4QTEsMHgzMCwweDgwLDB4RUEs
MHg3QSwweDVGLDB4RTIsMHgzOCwweEEyLDB4MzAsMHgwQywweDJCLDB4MkYsMHgyOSwKKyAgICAw
eDIzLDB4NDEsMHhFMywweDM4LDB4RjcsMHhBQSwweEFBLDB4QkEsMHg0NCwweDQxLDB4MDMsMHg0
MSwweDU1LDB4RjUsMHg4QiwweEU4LAorICAgIDB4NDQsMHg0MSwweDAzLDB4NDEsMHhCRiwweDNG
LDB4MjcsMHgxNywweDQ0LDB4NDEsMHhFMiwweDM4LDB4NkEsMHhGMCwweEUwLDB4RTAsCisgICAg
MHhDMiwweDQwLDB4MDMsMHgzOSwweEU3LDB4QUYsMHhBRCwweEZCLDB4MjMsMHg0MSwweEMyLDB4
MzgsMHg2NSwweEJGLDB4OEQsMHgwQSwKKyAgICAweDg0LDB4NTksMHgwMywweDQxLDB4OUQsMHhB
OSwweDBGLDB4MEIsMHhDNSwweDYxLDB4NjQsMHg1MSwweEJELDB4MzcsMHgyQSwweDJBLAorICAg
IDB4MjYsMHg3MiwweEM1LDB4NjEsMHhFNSwweEZGLDB4RkYsMHgyRiwweDA2LDB4NzIsMHhBNCww
eDYxLDB4NzgsMHg3OCwweDc4LDB4QUUsCisgICAgMHgwNiwweDcyLDB4ODQsMHg1OSwweEY3LDB4
REYsMHhGQiwweDhBLDB4RTUsMHg2MSwweEE0LDB4NjEsMHhGNywweDNELDB4MkQsMHhENywKKyAg
ICAweEM1LDB4NjEsMHgyMywweDQ5LDB4RjgsMHg3OCwweDc4LDB4NjgsMHg4NSwweDUxLDB4MDMs
MHg0OSwweDBBLDB4QkIsMHhGRiwweEY1LAorICAgIDB4NjQsMHg1MSwweDIzLDB4NDksMHgyMCww
eEIwLDB4RkQsMHhCNywweEU2LDB4NjEsMHg2NCwweDUxLDB4ODMsMHhCQSwweEZELDB4RDUsCisg
ICAgMHg4NSwweDUxLDB4MDIsMHg0MSwweDdFLDB4NUUsMHg1QywweDc4LDB4NDMsMHg0OSwweDAz
LDB4NDEsMHhBOSwweEE1LDB4QUQsMHhBRCwKKyAgICAweEE1LDB4NTksMHg0NCwweDQ5LDB4MkQs
MHgwQiwweDA5LDB4QUQsMHhBNSwweDU5LDB4NDQsMHg1MSwweEFBLDB4NkUsMHg3QywweDU4LAor
ICAgIDB4RTYsMHg2OSwweDIzLDB4NDksMHgwQSwweEJGLDB4RkYsMHhGRCwweDY4LDB4N0EsMHg4
NSwweDU5LDB4MDIsMHgwQiwweDJELDB4MkQsCisgICAgMHhBOSwweDhBLDB4NDcsMHg3QSwweDdF
LDB4NkEsMHhGMywweEFGLDB4ODgsMHg4MiwweEM1LDB4NjksMHhENSwweEZGLDB4RUEsMHg4MCwK
KyAgICAweDY3LDB4N0EsMHgwNSwweDcyLDB4OEIsMHgyQSwweDJCLDB4RTcsMHhBOCwweDgyLDB4
MjYsMHg2QSwweDI3LDB4MjcsMHhCQSwweDdBLAorICAgIDB4QzksMHg4QSwweDQ3LDB4NzIsMHgw
QSwweEFGLDB4QkIsMHhBNSwweEE4LDB4ODIsMHg0NiwweDcyLDB4NjAsMHhFOCwweDdFLDB4NTcs
CisgICAgMHg4OCwweDgyLDB4MDYsMHg2QSwweEI3LDB4QjcsMHhBRiwweDBFLDB4QTgsMHg4Miww
eDQ3LDB4N0EsMHhCNSwweEZELDB4RUEsMHg4MCwKKyAgICAweDg4LDB4N0EsMHgyNiwweDcyLDB4
N0MsMHhGQSwweEI4LDB4ODgsMHg4OCwweDgyLDB4MjYsMHg3MiwweDI5LDB4QUEsMHhBRSwweDgy
LAorICAgIDB4QzksMHg4QSwweDQ3LDB4N0EsMHhFMiwweEZGLDB4NUQsMHg3NywweDg4LDB4N0Es
MHg0NywweDdBLDB4M0IsMHgyQiwweDBELDB4NUUsCisgICAgMHhBOCwweDgyLDB4MjcsMHg3Miww
eDBBLDB4QjcsMHg3NSwweDU3LDB4QzksMHg4MiwweDA2LDB4NkEsMHgwMCwweEFBLDB4RkYsMHhE
NSwKKyAgICAweEM5LDB4ODIsMHgyNywweDZBLDB4ODAsMHgyQSwweDlGLDB4RDUsMHhDQywweDlC
LDB4NjgsMHg3MiwweDBGLDB4QUYsMHhGRCwweEQ1LAorICAgIDB4RDAsMHhCQywweDQ2LDB4NzIs
MHgwMiwweDJBLDB4N0YsMHg1NSwweDExLDB4QzUsMHg0NiwweDcyLDB4MDAsMHhCRSwweERELDB4
NTUsCisgICAgMHhGNCwweEU1LDB4QzgsMHg3QSwweDAyLDB4MkIsMHhBRiwweEY1LDB4NzYsMHhF
RSwweDRFLDB4QUMsMHgwMCwweDAwLDB4MEIsMHhCRCwKKyAgICAweDk2LDB4RjYsMHhEMywweERE
LDB4MDAsMHgwMCwweEFBLDB4QUQsMHg5NiwweEY2LDB4NTUsMHhFRSwweDgwLDB4MjAsMHhFRiww
eEZCLAorICAgIDB4OTYsMHhGNiwweDU2LDB4RUUsMHhFQSwweEZFLDB4OUYsMHg1RiwweDU1LDB4
RjYsMHg3NiwweEVFLDB4NTUsMHg1NSwweERELDB4RkYsCisgICAgMHg3NiwweEY2LDB4MzUsMHhF
NiwweEUwLDB4N0UsMHhEQiwweEZGLDB4NzUsMHhFRSwweDM0LDB4RTYsMHhFMCwweEQ5LDB4Rjcs
MHg1NywKKyAgICAweDU1LDB4RUUsMHgxNCwweEU2LDB4ODgsMHhBQSwweEZFLDB4RkYsMHg3NSww
eEVFLDB4MzQsMHhFNiwweEFCLDB4RUYsMHhENSwweDU1LAorICAgIDB4OTYsMHhGNiwweDM1LDB4
RTYsMHgyQSwweEVBLDB4QUQsMHhGNSwweDc1LDB4RUUsMHgzNCwweEVFLDB4QTgsMHhGQSwweEZG
LDB4N0YsCisgICAgMHg5NiwweEY2LDB4MzQsMHhFNiwweDhCLDB4QkIsMHhGNywweDU1LDB4OTYs
MHhGNiwweDM0LDB4RTYsMHg4QSwweEFBLDB4QkYsMHhGNSwKKyAgICAweDk2LDB4RjYsMHgzNSww
eEU2LDB4ODAsMHhFQSwweEZFLDB4NUQsMHg3NSwweEVFLDB4MzUsMHhFNiwweDg4LDB4RkUsMHhG
RiwweDU1LAorICAgIDB4NzUsMHhFRSwweDM1LDB4RTYsMHhCRSwweDFBLDB4QUYsMHhCNSwweDc2
LDB4RUUsMHg1NSwweEVFLDB4REIsMHhGOCwweDhBLDB4ODIsCisgICAgMHg1NiwweEY2LDB4OTYs
MHhFRSwweEJFLDB4RkUsMHhGRiwweEZFLDB4OTYsMHhGNiwweDc2LDB4RUUsMHg1OSwweEZFLDB4
QkEsMHgyQSwKKyAgICAweDk2LDB4RjYsMHg1NSwweEVFLDB4RkYsMHhGRSwweEZBLDB4RjgsMHg1
NSwweEVFLDB4MTUsMHhFNiwweEZDLDB4RkMsMHhCOCwweEMwLAorICAgIDB4NTUsMHhFRSwweEQz
LDB4REQsMHg2MiwweDcyLDB4QTgsMHhBOCwweEYzLDB4REQsMHg3MiwweENELDB4RkUsMHhGRSww
eEZDLDB4NzgsCisgICAgMHhEMywweERELDB4NzIsMHhENSwweDBCLDB4MkEsMHgyQiwweDBELDB4
MTQsMHhFNiwweEQzLDB4REQsMHhGRCwweERGLDB4QUYsMHhCRCwKKyAgICAweDE0LDB4RTYsMHhE
MywweERELDB4OUYsMHgzRiwweDJFLDB4MEEsMHg1NSwweEVFLDB4MTQsMHhFNiwweDdELDB4N0Ys
MHhGQiwweEFCLAorICAgIDB4NzUsMHhFRSwweDM0LDB4RTYsMHgyRCwweEE5LDB4QTUsMHgyQiww
eDk2LDB4RUUsMHg3NSwweEVFLDB4OEEsMHhFNSwweEFELDB4MzcsCisgICAgMHg5NiwweEVFLDB4
NzYsMHhFRSwweDc1LDB4RUYsMHhGRSwweEY2LDB4OTYsMHhFRSwweDc2LDB4RUUsMHg1NywweDU1
LDB4NUEsMHg2QywKKyAgICAweDU1LDB4RUUsMHg5MiwweEQ1LDB4NzgsMHhFMCwweDgwLDB4MDAs
MHhGNCwweERELDB4NzIsMHhDRCwweDU1LDB4RkUsMHhGQSwweEU4LAorICAgIDB4QjMsMHhERCww
eDMxLDB4Q0QsMHhGNywweEZFLDB4RUEsMHg4MCwweDcyLDB4RDUsMHg1MSwweENELDB4M0MsMHgy
RSwweDJGLDB4MjMsCisgICAgMHhCMywweEQ1LDB4RUQsMHhBMywweDZBLDB4RTgsMHhBOCwweDAw
LDB4QjAsMHhCQywweDI3LDB4NkEsMHg1NywweDVFLDB4RkUsMHhFOCwKKyAgICAweDg5LDB4N0Es
MHhFNiwweDYxLDB4REQsMHhFRSwweEFBLDB4MDAsMHg4OCwweDdBLDB4MDYsMHg2QSwweDNELDB4
RkYsMHhERSwweEEwLAorICAgIDB4RUMsMHg5QiwweDI2LDB4NkEsMHgwQiwweDk1LDB4RDUsMHhE
NSwweDBFLDB4QTQsMHg2OCwweDcyLDB4MDAsMHhBQSwweEZGLDB4NTUsCisgICAgMHg0RSwweEFD
LDB4ODksMHg3MiwweDIyLDB4MEEsMHgyRiwweDI1LDB4MTAsMHhDNSwweDhFLDB4QjQsMHgyRCww
eEE5LDB4MEQsMHhBOSwKKyAgICAweDY2LDB4NzIsMHgyNiwweDZBLDB4N0EsMHhBOCwweDNBLDB4
RjIsMHg2NiwweDcyLDB4MDQsMHg2QSwweEE2LDB4QTMsMHhGRSwweEZBLAorICAgIDB4NjYsMHg3
MiwweDI1LDB4NkEsMHhBQSwweEFFLDB4QkIsMHhGQiwweDY3LDB4NzIsMHgyNiwweDcyLDB4QUYs
MHhBRiwweDgzLDB4NkUsCisgICAgMHg2NywweDcyLDB4MDUsMHg2QSwweEVFLDB4QUIsMHg4Qiww
eDg5LDB4NjYsMHg3MiwweDA1LDB4NkEsMHg3QSwweEZCLDB4QUYsMHgyOCwKKyAgICAweDY2LDB4
NzIsMHgwNSwweDZBLDB4QkIsMHhBNywweEVFLDB4MzIsMHg2NiwweDcyLDB4MDUsMHg2QSwweEZG
LDB4QUEsMHhBOCwweDlFLAorICAgIDB4NjYsMHg3MiwweDI1LDB4NkEsMHhERiwweEEzLDB4NjIs
MHg3QSwweDg2LDB4NzIsMHgyNiwweDZBLDB4NUYsMHg1RiwweEZCLDB4RUIsCisgICAgMHg0Niww
eDcyLDB4MDUsMHg2QSwweDFFLDB4MkYsMHhBQiwweEFFLDB4NjcsMHg3MiwweDI2LDB4NkEsMHg5
RiwweEY3LDB4QkIsMHg4RiwKKyAgICAweDY3LDB4NzIsMHgwNSwweDZBLDB4NzYsMHhDNywweEVF
LDB4RjgsMHg2NywweDcyLDB4MDUsMHg2QSwweEFELDB4RkYsMHhCQiwweEI4LAorICAgIDB4ODcs
MHg3QSwweEU0LDB4NjksMHgyRCwweEFGLDB4RUEsMHhFQSwweEE3LDB4N0EsMHgwNSwweDZBLDB4
MDIsMHhBQSwweEFELDB4N0YsCisgICAgMHhBNywweDdBLDB4MDUsMHg2QSwweDAwLDB4MDAsMHhC
QiwweEY1LDB4QTcsMHg3QSwweDY2LDB4NzIsMHg4RSwweDhBLDB4MEIsMHgyNSwKKyAgICAweEU4
LDB4ODIsMHg4NiwweDdBLDB4RkIsMHg1NSwweDVFLDB4NTMsMHhBNywweDgyLDB4ODcsMHg3QSww
eDU1LDB4MkYsMHgyRiwweEJCLAorICAgIDB4QzcsMHg4MiwweDg3LDB4N0EsMHhGRiwweDVFLDB4
RjgsMHhBQSwweEE3LDB4ODIsMHg2NywweDdBLDB4OEEsMHhBRSwweDNDLDB4QjAsCisgICAgMHhD
NywweDgyLDB4ODcsMHg3QSwweDZCLDB4RkEsMHhGQiwweEZBLDB4QzcsMHg4MiwweDg3LDB4N0Es
MHhDRiwweDdCLDB4RkUsMHg1RiwKKyAgICAweEM3LDB4ODIsMHg4NiwweDdBLDB4QkYsMHhGQiww
eEZGLDB4MkUsMHhDNywweDgyLDB4ODYsMHg3QSwweDZGLDB4RkYsMHhCOCwweDc4LAorICAgIDB4
QzcsMHg4MiwweDg2LDB4N0EsMHg0RSwweEVFLDB4QjcsMHgzNSwweEM3LDB4ODIsMHhBNywweDdB
LDB4RjUsMHhCNSwweEJFLDB4RUQsCisgICAgMHhBNywweDgyLDB4ODcsMHg3QSwweEI4LDB4RjMs
MHg4OCwweDBBLDB4QTcsMHg4MiwweDg2LDB4NzIsMHg3RiwweEJDLDB4MjIsMHgwMCwKKyAgICAw
eEE3LDB4ODIsMHgwNiwweDZBLDB4N0EsMHhBMiwweEEwLDB4ODAsMHgyNiwweDcyLDB4NjQsMHg1
OSwweDVFLDB4NUMsMHg3OCwweEUwLAorICAgIDB4QzUsMHg2OSwweDY0LDB4NTksMHg1NSwweDc1
LDB4REYsMHhBQSwweEM1LDB4NjEsMHgyMywweDUxLDB4N0YsMHhEQiwweEFBLDB4MDgsCisgICAg
MHhDNSwweDY5LDB4MjMsMHg1MSwweDdGLDB4N0IsMHhBOCwweEE4LDB4QzYsMHg2OSwweDQ0LDB4
NTEsMHg1NSwweEY1LDB4QkYsMHgwQiwKKyAgICAweEE1LDB4NjEsMHgwMywweDQ5LDB4NUYsMHhF
RSwweEEwLDB4ODAsMHg4NSwweDU5LDB4MjMsMHg0OSwweEFELDB4QTIsMHgyOCwweEUyLAorICAg
IDB4ODUsMHg1MSwweDQ0LDB4NTEsMHg4QiwweEEyLDB4REMsMHg1NiwweDg1LDB4NTEsMHgyMyww
eDQ5LDB4N0EsMHhEOCwweEZFLDB4RkYsCisgICAgMHg4NSwweDUxLDB4MDMsMHgzOSwweEMyLDB4
RUEsMHhGQSwweDdGLDB4MjQsMHg0MSwweEExLDB4MzAsMHhGOCwweEY4LDB4RDYsMHhENywKKyAg
ICAweEMyLDB4MzAsMHhBMiwweDMwLDB4NUYsMHgzNSwweDI1LDB4MDgsMHhFMiwweDM4LDB4QTIs
MHgzMCwweDJCLDB4QUIsMHhBMiwweEIyLAorICAgIDB4NDQsMHg0MSwweEUzLDB4MzgsMHgyRiww
eDJELDB4QUYsMHhGQSwweDY0LDB4NDksMHgwMywweDM5LDB4RkMsMHhERiwweDdGLDB4RjUsCisg
ICAgMHgwMywweDQxLDB4RTIsMHgzOCwweDI4LDB4NjAsMHg3OCwweDZGLDB4MjMsMHg0MSwweEUy
LDB4MzgsMHg4MCwweDJCLDB4QkQsMHgwRCwKKyAgICAweDQ0LDB4NDksMHhFMiwweDM4LDB4NzUs
MHhBRiwweEFBLDB4MjIsMHg4NSwweDUxLDB4MDMsMHg0MSwweEVGLDB4MkQsMHg4QSwweEVBLAor
ICAgIDB4ODQsMHg1MSwweDIzLDB4NDksMHgzRCwweEJGLDB4RjcsMHhGRCwweEM1LDB4NjEsMHg0
NCwweDUxLDB4MEEsMHgzRSwweDJELDB4RkQsCisgICAgMHg0NywweDcyLDB4QTUsMHg2MSwweDBB
LDB4MEEsMHhBQiwweEY5LDB4NjgsMHg3QSwweEU1LDB4NjksMHg1NSwweEI3LDB4OEYsMHgwOSwK
KyAgICAweDY4LDB4N0EsMHhFNSwweDY5LDB4NUYsMHhGRSwweEU4LDB4RTAsMHgwNiwweDZBLDB4
NjQsMHg1MSwweEZFLDB4RkEsMHg1QywweDVFLAorICAgIDB4QzUsMHg2MSwweDAzLDB4NDEsMHhF
OCwweEU4LDB4RkUsMHhGRiwweDQ0LDB4NDksMHhFMiwweDQwLDB4MEUsMHhCQywweDc4LDB4RkUs
CisgICAgMHhBNiwweDU5LDB4MjMsMHg0OSwweEVGLDB4OEIsMHhCRCwweEE1LDB4ODUsMHg1MSww
eDAzLDB4NDEsMHgyQSwweEJFLDB4NkEsMHhGMCwKKyAgICAweEE1LDB4NTEsMHgwMywweDQxLDB4
NzgsMHhGQSwweEZGLDB4RDUsMHg0NCwweDQ5LDB4MDMsMHg0MSwweDJELDB4MEQsMHgwQSwweDJC
LAorICAgIDB4ODQsMHg1MSwweDQ0LDB4NDksMHhCRiwweEJELDB4M0YsMHhDQSwweDg1LDB4NTEs
MHgyMywweDQ5LDB4OTIsMHhGMiwweEUyLDB4OEEsCisgICAgMHhDNiwweDYxLDB4MjMsMHg0OSww
eEVELDB4QkYsMHgzRCwweDI1LDB4NjgsMHg3QSwweEM2LDB4NjEsMHgwNSwweDI1LDB4QTUsMHgy
RCwKKyAgICAweDRBLDB4OTMsMHg2OCwweDdBLDB4QkYsMHgyRCwweEFELDB4QUIsMHg2QiwweDlC
LDB4QzksMHg4QSwweDdGLDB4RUUsMHhFMCwweEVBLAorICAgIDB4RTksMHg4QSwweDI2LDB4NkEs
MHg3RiwweEZBLDB4RTgsMHhFMiwweDI2LDB4NzIsMHhFNSwweDY5LDB4MDIsMHhBRSwweDA2LDB4
OTQsCisgICAgMHg2NywweDcyLDB4RTYsMHg2OSwweDJCLDB4QUYsMHhCRCwweEJGLDB4ODgsMHg3
QSwweDI2LDB4NzIsMHg5QywweEE1LDB4MzcsMHgzQiwKKyAgICAweDg4LDB4ODIsMHg0NywweDdB
LDB4QUYsMHhERSwweDgyLDB4MDAsMHhDOCwweDhBLDB4NjcsMHg3QSwweEJBLDB4M0IsMHhBRiww
eDk1LAorICAgIDB4MDksMHg5MywweEE4LDB4ODIsMHg1RCwweEJGLDB4QUEsMHgyQiwweDA5LDB4
OEIsMHg2NywweDdBLDB4RjcsMHhGRSwweEZBLDB4QTgsCisgICAgMHg4OCwweDgyLDB4NDcsMHg3
QSwweEZGLDB4NUUsMHhGQSwweDAyLDB4NjgsMHg3QSwweDI3LDB4NzIsMHhCOCwweEZELDB4N0Qs
MHhDMywKKyAgICAweDY4LDB4N0EsMHgwNiwweDZBLDB4NTcsMHg1RSwweERCLDB4MkYsMHg4OCww
eDdBLDB4RTYsMHg2MSwweDVGLDB4NUQsMHg2RSwweEEyLAorICAgIDB4NjcsMHg3QSwweEM2LDB4
NjEsMHhCNywweEJELDB4QUIsMHgyQSwweDg4LDB4N0EsMHgyNiwweDZBLDB4OEIsMHg4NiwweEFG
LDB4NjgsCisgICAgMHg4NywweDcyLDB4NDYsMHg3MiwweEFDLDB4ODIsMHgzQSwweEQ1LDB4Njcs
MHg3MiwweDI2LDB4NkEsMHg3RSwweDdDLDB4QjAsMHhBMiwKKyAgICAweEE4LDB4N0EsMHhFNiww
eDYxLDB4MEEsMHhBQiwweEY3LDB4NUYsMHhGMCwweEM0LDB4ODgsMHg3MiwweDJCLDB4QUQsMHg5
NSwweDU1LAorICAgIDB4MzUsMHhFRSwweDRBLDB4OTMsMHgwMiwweDBBLDB4MkIsMHhCRCwweDc2
LDB4RjYsMHhEMywweERELDB4MDAsMHgyMiwweEFBLDB4NTUsCisgICAgMHg1NSwweEVFLDB4RjQs
MHhFNSwweDAwLDB4MDAsMHg4QSwweDk1LDB4NTUsMHhFRSwweDE1LDB4RTYsMHg4QSwweEUyLDB4
NkMsMHg3RiwKKyAgICAweDU1LDB4RUUsMHgxNCwweEU2LDB4QTIsMHhBMiwweDIzLDB4QUYsMHgx
NSwweEVFLDB4MzQsMHhFNiwweDc5LDB4N0YsMHg3RCwweEJGLAorICAgIDB4MzUsMHhFNiwweDE0
LDB4RTYsMHhBMCwweEIwLDB4NjgsMHg0RiwweDM0LDB4RTYsMHhENCwweEU1LDB4QTAsMHgyQSww
eDBBLDB4QkEsCisgICAgMHgzNCwweEU2LDB4RjQsMHhFNSwweDA4LDB4MDgsMHg5NiwweEJFLDB4
MTUsMHhFRSwweDM0LDB4RTYsMHg3NSwweEZGLDB4N0YsMHhGRiwKKyAgICAweDM1LDB4RTYsMHhE
MywweERELDB4QTIsMHhGQSwweERFLDB4RjgsMHgzNSwweEU2LDB4RDMsMHhERCwweDJBLDB4RkIs
MHhGRCwweEY3LAorICAgIDB4MTQsMHhFNiwweEQzLDB4REQsMHhFOCwweEZELDB4QjUsMHgyQiww
eDM1LDB4RTYsMHhGNCwweEU1LDB4MDMsMHgyQiwweDBCLDB4M0YsCisgICAgMHg3NiwweEVFLDB4
MzUsMHhFNiwweDk1LDB4QkQsMHhBQiwweEFGLDB4OTYsMHhGNiwweDU1LDB4RUUsMHhFQiwweEZG
LDB4QUYsMHhBNSwKKyAgICAweDc2LDB4RjYsMHg5NiwweEVFLDB4RTgsMHhGRSwweEJGLDB4RkIs
MHg5NiwweEY2LDB4NTUsMHhFRSwweDg4LDB4RUEsMHg3QSwweDVFLAorICAgIDB4NzYsMHhFRSww
eDM1LDB4RTYsMHhDMCwweEFFLDB4RjUsMHhERiwweDU1LDB4RUUsMHgzNSwweEU2LDB4QzAsMHg2
MiwweDhBLDB4MkIsCisgICAgMHg1NSwweEVFLDB4RjQsMHhERCwweDdBLDB4N0EsMHhFQSwweEUw
LDB4MTQsMHhFNiwweDcyLDB4Q0QsMHg3RiwweDdFLDB4RTgsMHgwMCwKKyAgICAweEQzLDB4REQs
MHg3MiwweENELDB4OUQsMHhERiwweEJFLDB4MDgsMHgxNCwweEU2LDB4QjIsMHhERCwweEFGLDB4
QTUsMHgzRCwweDBBLAorICAgIDB4MzQsMHhFNiwweDE0LDB4RTYsMHg3NSwweEU1LDB4RjcsMHg1
NSwweDU1LDB4RUUsMHhGNCwweERELDB4OEIsMHhCQiwweEJGLDB4RjcsCisgICAgMHg3NSwweEVF
LDB4MzUsMHhFNiwweDBFLDB4MkYsMHhCRCwweEJELDB4OTYsMHhFRSwweDc1LDB4RUUsMHhFRCww
eEZGLDB4MEEsMHgwQSwKKyAgICAweEI2LDB4RjYsMHg3NiwweEVFLDB4N0YsMHhGQiwweEZFLDB4
RkUsMHg5NiwweEVFLDB4NzYsMHhFRSwweDdDLDB4RkUsMHhGRiwweEZFLAorICAgIDB4OTYsMHhF
RSwweDU1LDB4RTYsMHg3QiwweEZBLDB4QTgsMHhBQSwweDc1LDB4RUUsMHhCMiwweEQ1LDB4N0Ys
MHhEOCwweEU4LDB4RTAsCisgICAgMHhCMywweERELDB4RjMsMHhENSwweEFBLDB4RUIsMHhBQiww
eEFCLDB4QjMsMHhERCwweDcxLDB4Q0QsMHg3RiwweDdDLDB4NUMsMHhFMCwKKyAgICAweEQzLDB4
REQsMHg3MSwweENELDB4MEEsMHgwQiwweDBGLDB4MjUsMHhGNCwweERELDB4MkUsMHhBQywweDc4
LDB4QTAsMHgwMCwweDAwLAorICAgIDB4QjMsMHhENSwweEM5LDB4N0EsMHg1NywweEZBLDB4ODAs
MHgwMCwweDEwLDB4QzUsMHhBOCwweDdBLDB4NTUsMHg1RCwweEZBLDB4ODAsCisgICAgMHgwRCww
eEE0LDB4ODcsMHg3MiwweDU1LDB4NTUsMHhGRSwweDgwLDB4OEIsMHg5MywweDI2LDB4NkEsMHg1
RiwweEZELDB4QkYsMHg4MCwKKyAgICAweEFGLDB4QjQsMHhDOSwweDdBLDB4MzUsMHgyNSwweDI5
LDB4MEIsMHhGMCwweEM0LDB4QUYsMHhCQywweDA5LDB4MjksMHgwQSwweDBFLAorICAgIDB4NjYs
MHg3MiwweDI1LDB4NkEsMHg2MCwweEJBLDB4RDIsMHhBMCwweDg3LDB4NzIsMHg0NiwweDcyLDB4
NUEsMHg3NiwweDc3LDB4QkEsCisgICAgMHg2NiwweDcyLDB4MjYsMHg3MiwweEJBLDB4RkYsMHhF
RiwweEVBLDB4ODYsMHg3MiwweDI2LDB4NzIsMHg3RiwweERGLDB4RUQsMHhENSwKKyAgICAweDY3
LDB4N0EsMHgyNiwweDZBLDB4Q0QsMHg4QiwweEFDLDB4QUQsMHg4NywweDdBLDB4MjUsMHg2QSww
eEE1LDB4OUQsMHhCQSwweEJGLAorICAgIDB4ODcsMHg3QSwweDA0LDB4NkEsMHhCQiwweEZFLDB4
REEsMHhBMiwweDY3LDB4N0EsMHgyNSwweDZBLDB4NUYsMHhDOSwweDJGLDB4QkYsCisgICAgMHg2
NiwweDcyLDB4MjYsMHg3MiwweDdELDB4RkUsMHg5NiwweERFLDB4NjYsMHg3MiwweDA1LDB4NkEs
MHgwMiwweENBLDB4MjcsMHgwMSwKKyAgICAweDY2LDB4NzIsMHgyNiwweDZBLDB4RDYsMHhBRCww
eEJFLDB4ODgsMHg2NiwweDcyLDB4MjYsMHg2QSwweEZGLDB4M0QsMHhCRSwweEFFLAorICAgIDB4
ODcsMHg3MiwweDI2LDB4NzIsMHhENywweEQ1LDB4RkYsMHhGQiwweDQ2LDB4NzIsMHgyNSwweDZB
LDB4QTAsMHg4MywweDhBLDB4RUEsCisgICAgMHg0NiwweDcyLDB4MDUsMHg2QSwweDgyLDB4MEYs
MHgyQiwweDNBLDB4NjYsMHg3MiwweDA1LDB4NkEsMHg2RSwweEVDLDB4RDgsMHhGRSwKKyAgICAw
eDQ1LDB4NzIsMHgwNSwweDZBLDB4OUQsMHg5MCwweEMyLDB4MzgsMHg4NywweDdBLDB4MDQsMHg2
QSwweDI3LDB4RkYsMHhERiwweDdGLAorICAgIDB4QTcsMHg3QSwweDA0LDB4NkEsMHhCMCwweEJE
LDB4QjcsMHhFRCwweEE3LDB4ODIsMHgyNSwweDcyLDB4MDIsMHhBMCwweEZCLDB4N0UsCisgICAg
MHhBNywweDgyLDB4NDYsMHg3MiwweDAwLDB4QTgsMHhBMywweEZELDB4QTcsMHg4MiwweDY3LDB4
N0EsMHhBQSwweDJBLDB4RkEsMHg4NSwKKyAgICAweEM4LDB4ODIsMHg4NiwweDdBLDB4RTUsMHhB
RiwweEVBLDB4REIsMHhBNywweDgyLDB4NjYsMHg3QSwweDAwLDB4ODAsMHgxOCwweDQwLAorICAg
IDB4QzcsMHg4MiwweDg2LDB4N0EsMHg5RSwweEJGLDB4OEMsMHhBQywweEM3LDB4ODIsMHg4Nyww
eDdBLDB4RjgsMHgwQSwweEEyLDB4RDgsCisgICAgMHhFOCwweDhBLDB4ODYsMHg3QSwweEI3LDB4
MkYsMHgzQiwweEFGLDB4RTcsMHg4MiwweEE3LDB4ODIsMHhEQSwweEQ2LDB4NzUsMHhERiwKKyAg
ICAweEM3LDB4ODIsMHg4NiwweDdBLDB4QTYsMHhGNiwweERDLDB4RkMsMHhDOCwweDgyLDB4ODcs
MHg4MiwweEJFLDB4MjcsMHgyRiwweEEyLAorICAgIDB4RTgsMHg4QSwweDg3LDB4N0EsMHg1Riww
eDVGLDB4RUYsMHhBQiwweEE3LDB4ODIsMHhFNSwweDY5LDB4RjYsMHhCRSwweDI4LDB4MjgsCisg
ICAgMHhFOCwweDhBLDB4MjYsMHg3MiwweDU1LDB4RUEsMHg4MCwweEEwLDB4ODcsMHg4MiwweEU1
LDB4NjksMHg1NywweEY3LDB4QTgsMHgwOCwKKyAgICAweEE3LDB4N0EsMHhBNSwweDYxLDB4RDcs
MHhGRSwweEFBLDB4QTIsMHg0NywweDcyLDB4QTUsMHg1OSwweEY3LDB4N0IsMHg1OCwweDU4LAor
ICAgIDB4QTUsMHg1OSwweDQ0LDB4NTEsMHhFOCwweEYwLDB4NzgsMHg1QSwweDIzLDB4NTEsMHg0
NCwweDQ5LDB4NTcsMHhFNywweERFLDB4NUYsCisgICAgMHg0NCwweDQ5LDB4RTMsMHgzOCwweDgw
LDB4ODAsMHg4MCwweDcwLDB4NjQsMHg0OSwweEMyLDB4MzAsMHhFOCwweEZGLDB4N0YsMHg3RiwK
KyAgICAweDIzLDB4NDEsMHhBMiwweDMwLDB4OEEsMHhFRiwweEFELDB4QUQsMHgwMywweDM5LDB4
QTEsMHgzMCwweDU1LDB4NUUsMHhGOCwweEZDLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHg1
NSwweEQ1LDB4MUQsMHgyOSwweDI0LDB4MzksMHhDMiwweDMwLDB4OUYsMHhCRiwweEFFLDB4Qjgs
CisgICAgMHgyNCwweDQxLDB4MDMsMHgzOSwweDczLDB4RkQsMHg4NSwweDU3LDB4MDMsMHgzOSww
eEEyLDB4MzAsMHhBOCwweEQ4LDB4RkMsMHhGOCwKKyAgICAweDAzLDB4MzksMHhDMiwweDM4LDB4
Q0IsMHhDNSwweEI1LDB4QTcsMHg2NSwweDQ5LDB4RTMsMHgzOCwweEI1LDB4M0YsMHgyRCwweDI1
LAorICAgIDB4ODUsMHg1MSwweDQ0LDB4NDksMHg1RCwweDdGLDB4REEsMHhDRiwweDY0LDB4NTEs
MHgyMywweDQxLDB4NjIsMHg2MywweEVBLDB4RkYsCisgICAgMHg2NCwweDUxLDB4MjQsMHg0OSww
eEE1LDB4QUYsMHgzRiwweDJELDB4QTUsMHg2MSwweDQ0LDB4NDksMHhBNSwweDM1LDB4QUYsMHhG
RSwKKyAgICAweDA2LDB4NkEsMHg2NCwweDU5LDB4MEIsMHgwQiwweEJGLDB4RDUsMHg2OCwweDdB
LDB4QzYsMHg2MSwweDBCLDB4QUEsMHhBOSwweEFELAorICAgIDB4NjgsMHg3QSwweEM2LDB4NjEs
MHg4MCwweEMwLDB4RUEsMHhERiwweEU2LDB4NjEsMHg0NCwweDQ5LDB4NzgsMHg3QywweEZDLDB4
NkUsCisgICAgMHg0NCwweDQ5LDB4QzIsMHgzOCwweEZGLDB4NUUsMHg1NCwweERDLDB4MDMsMHg0
MSwweEUzLDB4NDAsMHgzOCwweDNELDB4MUYsMHhEQSwKKyAgICAweDg1LDB4NTEsMHgwMywweDQx
LDB4MkYsMHgwOSwweDJCLDB4MkQsMHhDNiwweDU5LDB4MDMsMHg0MSwweDdBLDB4RUEsMHgyOCww
eDIyLAorICAgIDB4QzYsMHg1OSwweDAzLDB4NDEsMHg1NSwweDU3LDB4NUEsMHhBMCwweDY0LDB4
NTEsMHgwMywweDQxLDB4MkIsMHgyRiwweDJELDB4OEUsCisgICAgMHhBNSwweDU5LDB4MjMsMHg0
OSwweDI4LDB4RTAsMHhGNiwweEQ3LDB4ODUsMHg1OSwweDAzLDB4NDEsMHhBQSwweEUyLDB4RUYs
MHg3RiwKKyAgICAweEE2LDB4NTksMHhFMiwweDQwLDB4MkYsMHhCRiwweEI3LDB4RjUsMHg4OCww
eDdBLDB4ODUsMHg1OSwweDJGLDB4MkIsMHgwQiwweEFELAorICAgIDB4MjksMHg4QiwweEE4LDB4
ODIsMHhBQSwweDYyLDB4QUYsMHhGNSwweDJBLDB4OTMsMHg4NiwweDdBLDB4ODIsMHhBQSwweEVC
LDB4NzUsCisgICAgMHhBOCwweDgyLDB4MDUsMHg2QSwweEU4LDB4NzgsMHg1OCwweDc4LDB4MjYs
MHg2QSwweDYzLDB4NTEsMHgyOCwweEJBLDB4QkYsMHhGNywKKyAgICAweDQ3LDB4NzIsMHhBNSww
eDU5LDB4MkEsMHgyMywweEFCLDB4QUQsMHg0NywweDcyLDB4MDYsMHg2QSwweDIyLDB4RUUsMHg4
RiwweDg1LAorICAgIDB4ODgsMHg3QSwweDI2LDB4NzIsMHhFOCwweEVGLDB4RjksMHg1NSwweEU5
LDB4OEEsMHgyNiwweDcyLDB4QkYsMHgzRiwweDI5LDB4QUQsCisgICAgMHhFOSwweDhBLDB4ODgs
MHg4MiwweDIyLDB4MjAsMHhBOCwweDZFLDB4MkEsMHg5MywweEE4LDB4ODIsMHhBQiwweDBCLDB4
QkIsMHhGNSwKKyAgICAweDBBLDB4OTMsMHhBOCwweDgyLDB4N0UsMHg2MCwweDVFLDB4RkYsMHhB
OCwweDgyLDB4NjgsMHg3QSwweDY0LDB4RUUsMHhGMCwweDY4LAorICAgIDB4NjgsMHg3QSwweDI2
LDB4NzIsMHhBQiwweEU4LDB4NTAsMHhGMCwweDY3LDB4N0EsMHgwNiwweDZBLDB4ODAsMHg2RSww
eEY3LDB4REYsCisgICAgMHg4OCwweDdBLDB4MjYsMHg2QSwweDJCLDB4MkIsMHhCRiwweEQ1LDB4
QTgsMHg4MiwweDQ2LDB4NzIsMHg2QSwweEUyLDB4RkYsMHhGNywKKyAgICAweDg3LDB4N0EsMHgy
NiwweDZBLDB4NzUsMHhGRiwweEY4LDB4QTIsMHg2NywweDZBLDB4MDUsMHg2QSwweDBGLDB4QkIs
MHg5NywweEI3LAorICAgIDB4NjcsMHg3MiwweEU2LDB4NjEsMHg3MiwweEEwLDB4ODAsMHhBMiww
eDg3LDB4NzIsMHhFNiwweDYxLDB4MkUsMHhCQiwweEY3LDB4RkUsCisgICAgMHhDQywweDlCLDB4
MjcsMHg2QSwweDJGLDB4RjcsMHhGNSwweDU1LDB4QUYsMHhCQywweDY3LDB4NzIsMHgwMiwweEJG
LDB4RjUsMHg1NSwKKyAgICAweDkyLDB4RDUsMHgyQSwweDhCLDB4MDIsMHgyQiwweEZELDB4NTUs
MHgxNCwweEU2LDB4RUMsMHhBMywweDAwLDB4MEEsMHhBQiwweEI1LAorICAgIDB4MzUsMHhFRSww
eDkzLDB4RDUsMHgwMiwweDA4LDB4MkEsMHhBRCwweDM0LDB4RUUsMHgxNCwweEU2LDB4RjcsMHg1
RSwweDc4LDB4RUMsCisgICAgMHgzNCwweEU2LDB4RDQsMHhFNSwweEEyLDB4QTIsMHhBQSwweEUw
LDB4MTQsMHhFNiwweEY0LDB4RTUsMHg4MCwweEEyLDB4RkQsMHhENSwKKyAgICAweDE0LDB4RTYs
MHhGNCwweEU1LDB4MDgsMHgyMiwweEI2LDB4QTUsMHgzNSwweEVFLDB4RDMsMHhERCwweDIyLDB4
MEUsMHhFRSwweDlGLAorICAgIDB4MzUsMHhFNiwweEY0LDB4RTUsMHhBQSwweEY4LDB4REUsMHhG
RiwweDM0LDB4RTYsMHhGNCwweERELDB4NzUsMHhGQSwweEZFLDB4RkUsCisgICAgMHgxNCwweEU2
LDB4RjQsMHhERCwweDNGLDB4MzcsMHgzNSwweEQ1LDB4MzQsMHhFNiwweEY0LDB4RTUsMHgzRiww
eEFGLDB4RkYsMHhGRiwKKyAgICAweDU1LDB4RUUsMHgxNCwweEU2LDB4OEEsMHhBQiwweEFELDB4
QjksMHg5NiwweEY2LDB4NTUsMHhFRSwweEFELDB4QUYsMHhENSwweEQ1LAorICAgIDB4OTcsMHhG
NiwweDM1LDB4RTYsMHhBMiwweEE4LDB4NkUsMHg1RiwweDc2LDB4RUUsMHgxNCwweEU2LDB4RTgs
MHhGQSwweEY2LDB4RDUsCisgICAgMHg1NSwweEVFLDB4MTQsMHhFNiwweEE3LDB4M0YsMHhCRiww
eEJGLDB4NTUsMHhFRSwweDM1LDB4RTYsMHgyRSwweDFDLDB4REYsMHhGRiwKKyAgICAweDU1LDB4
RUUsMHgxNCwweEU2LDB4RkEsMHhBQywweEZFLDB4NTcsMHg1NSwweEVFLDB4MTQsMHhFNiwweEZG
LDB4RTIsMHhFRiwweDU1LAorICAgIDB4NTUsMHhFRSwweEY0LDB4REQsMHg3RiwweEFBLDB4ODIs
MHhFOCwweDM1LDB4RTYsMHhEMywweERELDB4QUQsMHhBRSwweEU4LDB4QjgsCisgICAgMHgxNCww
eEU2LDB4RjQsMHhERCwweEU2LDB4RkEsMHhBMiwweDAyLDB4MTQsMHhFNiwweEQ0LDB4REQsMHgw
RSwweDJCLDB4QTIsMHhCNiwKKyAgICAweDU1LDB4RTYsMHgxNCwweEU2LDB4MjksMHgyRiwweDNE
LDB4QUQsMHg5NiwweEVFLDB4NTUsMHhFNiwweDAyLDB4MDIsMHgwMywweDBELAorICAgIDB4OTYs
MHhFRSwweDc2LDB4RUUsMHhDQSwweEVBLDB4QTgsMHhCOCwweDc2LDB4RjYsMHg5NiwweEVFLDB4
OUQsMHhENywweDk1LDB4RjcsCisgICAgMHg5NiwweEVFLDB4NzYsMHhFRSwweDc2LDB4NUYsMHhG
RCwweDNCLDB4OTYsMHhFRSwweDM1LDB4RTYsMHg3QSwweDhBLDB4ODAsMHgwOCwKKyAgICAweDk2
LDB4RUUsMHhEMywweERELDB4NTUsMHg3RSwweEZBLDB4QTgsMHgzNSwweEU2LDB4OTIsMHhENSww
eDVGLDB4NUYsMHhGRSwweEYwLAorICAgIDB4RDMsMHhENSwweDcyLDB4RDUsMHgwRCwweEFCLDB4
RUQsMHg3RiwweDE0LDB4RTYsMHhCMywweEQ1LDB4QUEsMHhBQiwweDhELDB4QjksCisgICAgMHgx
NCwweEU2LDB4QjMsMHhENSwweDdFLDB4NkEsMHhBQSwweEFCLDB4RjQsMHhERCwweDUxLDB4RDUs
MHg3RSwweEFCLDB4RUEsMHg4MCwKKyAgICAweDkyLDB4RDUsMHg2RiwweEI0LDB4NUUsMHhBMCww
eDAwLDB4MDAsMHhCMiwweEQ1LDB4MEQsMHhBNCwweDU3LDB4RkYsMHhFQSwweEE4LAorICAgIDB4
QUYsMHhCQywweDBELDB4QTQsMHgyRCwweDBBLDB4MkEsMHg1OCwweEYwLDB4QzQsMHgwRCwweEE0
LDB4MDgsMHgwMiwweDBBLDB4QkQsCisgICAgMHg4NywweDdBLDB4MjUsMHg2QSwweERGLDB4MUQs
MHhGQiwweEZBLDB4ODYsMHg3QSwweDI1LDB4NkEsMHgzMiwweEI5LDB4RUIsMHhFNywKKyAgICAw
eDY2LDB4NzIsMHgwNSwweDcyLDB4QTgsMHhBRSwweEFCLDB4QTksMHg2NiwweDcyLDB4MDYsMHg3
MiwweEFBLDB4MkEsMHgwMiwweEUwLAorICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHg1NSwweDE1
LDB4OTcsMHhFRiwweDg3LDB4N0EsMHgyNSwweDZBLDB4QkQsMHhCQiwweDJCLDB4N0EsCisgICAg
MHg2NiwweDcyLDB4MDUsMHg3MiwweDAwLDB4OEMsMHhBOCwweDJBLDB4QTcsMHg4MiwweDI1LDB4
NkEsMHhFRiwweEZCLDB4RkYsMHg2QSwKKyAgICAweDg2LDB4NzIsMHgyNiwweDcyLDB4RkUsMHhF
RSwweEZFLDB4OTIsMHg2NiwweDcyLDB4MjYsMHg3MiwweDgyLDB4RUIsMHhBRSwweEEyLAorICAg
IDB4NjYsMHg3MiwweDI2LDB4NzIsMHhBOCwweEUyLDB4RTAsMHgxMiwweDY3LDB4NzIsMHgyNiww
eDcyLDB4RUUsMHhCRiwweDgxLDB4MkIsCisgICAgMHg2NiwweDcyLDB4MjUsMHg3MiwweDc2LDB4
QkYsMHgzRiwweDVELDB4ODcsMHg3QSwweDI1LDB4NkEsMHg1RiwweERGLDB4RDIsMHgzOCwKKyAg
ICAweDY2LDB4NzIsMHgwNSwweDZBLDB4QkUsMHhFRSwweEZFLDB4QjAsMHg2NiwweDcyLDB4RTUs
MHg2OSwweEE2LDB4MjgsMHhBQSwweDgyLAorICAgIDB4NjYsMHg3MiwweDA1LDB4NzIsMHgyQSww
eDAyLDB4OEUsMHhBQSwweDY2LDB4NzIsMHgyNSwweDcyLDB4RkUsMHhEMCwweEE4LDB4OUIsCisg
ICAgMHg2NiwweDcyLDB4MDUsMHg2QSwweEVGLDB4RTgsMHhGQSwweEVFLDB4NDYsMHg3MiwweDA1
LDB4NkEsMHhFMCwweEE4LDB4MzcsMHgwQSwKKyAgICAweDY2LDB4NzIsMHgyNSwweDZBLDB4RkEs
MHg1RiwweDc1LDB4OUYsMHg4NywweDdBLDB4MjUsMHg2QSwweDhCLDB4QkQsMHhGNywweDU2LAor
ICAgIDB4QzcsMHg4MiwweDA1LDB4NkEsMHgwQSwweDJBLDB4QkIsMHhGNSwweEM3LDB4ODIsMHg0
NSwweDcyLDB4MDIsMHhBMCwweEJCLDB4RkQsCisgICAgMHhDOCwweDgyLDB4NjYsMHg3QSwweEFB
LDB4QUEsMHgyQiwweDJELDB4QzgsMHg4MiwweDg2LDB4N0EsMHg3RSwweEY3LDB4RUMsMHhCOCwK
KyAgICAweEM3LDB4ODIsMHg4NywweDdBLDB4OEIsMHhBQSwweDhCLDB4QkUsMHhDOCwweDgyLDB4
QTcsMHg4MiwweDBGLDB4Q0EsMHhFOCwweDMzLAorICAgIDB4RTcsMHg4QSwweEE3LDB4ODIsMHhG
NSwweEY1LDB4RUQsMHg2QSwweEU4LDB4OEEsMHhBNywweDgyLDB4QUIsMHhFQSwweEZCLDB4RkIs
CisgICAgMHhFOCwweDhBLDB4QTcsMHg4MiwweEJGLDB4QUQsMHhFQiwweDJCLDB4RTgsMHg4QSww
eDY2LDB4N0EsMHg5RiwweDdFLDB4RjgsMHhFOCwKKyAgICAweEU4LDB4OEEsMHg4NywweDdBLDB4
QTMsMHg4QiwweEVELDB4Q0IsMHhDOCwweDhBLDB4NDYsMHg3MiwweEQ2LDB4RkMsMHhGOCwweEE4
LAorICAgIDB4QTcsMHg3QSwweDI2LDB4NzIsMHhGMiwweDc4LDB4N0UsMHg1RSwweDI2LDB4NzIs
MHg0NCwweDUxLDB4RjgsMHg3QSwweDdDLDB4N0EsCisgICAgMHg2NCwweDUxLDB4RTMsMHgzOCww
eDgwLDB4MkEsMHhFQSwweDdBLDB4NjQsMHg1MSwweEUzLDB4MzgsMHg4MiwweEE4LDB4NUUsMHg1
NywKKyAgICAweDQ0LDB4NDksMHhBMSwweDI4LDB4RjgsMHhGOCwweERGLDB4NTcsMHhFMywweDM4
LDB4ODEsMHgyOCwweDhCLDB4OEYsMHg5RiwweEY1LAorICAgIDB4RTMsMHgzOCwweEMyLDB4MzAs
MHgzOSwweDNELDB4OUQsMHg1OSwweEUzLDB4MzgsMHhDMiwweDI4LDB4QTgsMHhBQSwweERDLDB4
QTcsCisgICAgMHgyMywweDM5LDB4QzMsMHgzMCwweDJELDB4QUIsMHhCRSwweEJGLDB4MjQsMHgz
OSwweEMyLDB4MzAsMHhGQywweEY2LDB4N0UsMHg3RSwKKyAgICAweDAzLDB4MzksMHhDMiwweDMw
LDB4QTIsMHhERSwweDVELDB4RjUsMHhFMiwweDM4LDB4QzIsMHgzMCwweDIwLDB4MEEsMHgyQSww
eDlELAorICAgIDB4MDMsMHgzOSwweEUyLDB4MzgsMHg0OSwweDU5LDB4RkQsMHg5NywweDY0LDB4
NDksMHhFMiwweDM4LDB4MkQsMHgzRCwweEJELDB4MkYsCisgICAgMHg4NSwweDUxLDB4MDMsMHg0
MSwweDgyLDB4QTAsMHhBMiwweDVFLDB4NjQsMHg0OSwweDIzLDB4NDksMHhGNiwweDk2LDB4RUIs
MHhBQiwKKyAgICAweDY0LDB4NTEsMHg0NCwweDUxLDB4REQsMHg5RSwweDgyLDB4MjIsMHhBNSww
eDU5LDB4NDQsMHg1MSwweEZELDB4RTksMHgwQiwweDAyLAorICAgIDB4QTUsMHg1OSwweDY1LDB4
NTksMHg5NSwweERELDB4MzYsMHgxQSwweDI3LDB4NzIsMHhBNSwweDYxLDB4MEQsMHgwRCwweDA5
LDB4MkYsCisgICAgMHgwNywweDZBLDB4NjUsMHg1MSwweDY4LDB4NjAsMHhGQywweEY4LDB4NjQs
MHg1MSwweDI0LDB4NDksMHg3QiwweEZELDB4Q0YsMHhGOCwKKyAgICAweDQ0LDB4NDksMHhFMyww
eDQwLDB4NTcsMHg3RSwweEVBLDB4RjgsMHgyNCwweDQxLDB4QTIsMHgzMCwweEEyLDB4RTIsMHhG
QSwweEZFLAorICAgIDB4ODUsMHg1MSwweEMyLDB4MzgsMHhBRiwweEI1LDB4QjUsMHgyRCwweEU2
LDB4NTksMHg4NCwweDUxLDB4QTcsMHhCRCwweEZELDB4MkEsCisgICAgMHhFNiwweDYxLDB4ODUs
MHg1MSwweEUyLDB4RjIsMHg3QiwweDVFLDB4ODUsMHg1MSwweDI0LDB4NDksMHhBRSwweEM4LDB4
RkUsMHhERiwKKyAgICAweDY1LDB4NTEsMHgwMywweDQxLDB4NTgsMHg3QSwweDZGLDB4NUYsMHgy
MywweDQ5LDB4RTMsMHgzOCwweEEwLDB4RkEsMHhCQiwweEJELAorICAgIDB4RTMsMHg0MCwweDAy
LDB4MzksMHgwQSwweDAwLDB4ODAsMHhFMiwweDQ2LDB4NzIsMHgyMywweDQ5LDB4MjksMHhGNSww
eEY1LDB4RDUsCisgICAgMHg4NiwweDdBLDB4QzUsMHg1OSwweDBBLDB4QUIsMHhGRCwweDU1LDB4
NjYsMHg3MiwweDY0LDB4NTEsMHg4MCwweEU4LDB4RkYsMHg1RiwKKyAgICAweDI1LDB4NkEsMHg2
NCwweDUxLDB4QTAsMHhBQiwweEY1LDB4RDUsMHhDNSwweDYxLDB4NjQsMHg1MSwweDVDLDB4RkEs
MHhGRCwweEZFLAorICAgIDB4QzYsMHg2MSwweDY0LDB4NTEsMHgwQiwweEFELDB4RkYsMHhGNyww
eDA2LDB4NkEsMHg4NSwweDU5LDB4MkEsMHhCNywweEY1LDB4NTUsCisgICAgMHgyNiwweDcyLDB4
ODQsMHg1OSwweDI4LDB4MkYsMHhCRCwweDk1LDB4ODgsMHg3QSwweEU1LDB4NjksMHgwQSwweDJB
LDB4QUIsMHhCRCwKKyAgICAweEE4LDB4ODIsMHg2NywweDdBLDB4QTIsMHhDQiwweDYxLDB4NkUs
MHhFOSwweDhBLDB4NDYsMHg3MiwweDBBLDB4MDksMHhBNywweDU1LAorICAgIDB4RTksMHg4QSww
eDY3LDB4N0EsMHhBMCwweDg4LDB4RUIsMHhGRCwweEM5LDB4OEEsMHg2NywweDdBLDB4OUUsMHhE
RiwweEFCLDB4QTIsCisgICAgMHhFOSwweDkyLDB4NDcsMHg3MiwweDVGLDB4NkYsMHhBMiwweEEw
LDB4QTgsMHg3QSwweDA2LDB4NzIsMHhGNywweEY3LDB4RkUsMHhGOCwKKyAgICAweDQ3LDB4NzIs
MHhFNSwweDY5LDB4M0EsMHhBRSwweEZFLDB4RjUsMHg2NywweDdBLDB4QzUsMHg2MSwweDAwLDB4
QkEsMHg1RiwweDVGLAorICAgIDB4NjcsMHg3MiwweEM1LDB4NjEsMHgwMCwweDBCLDB4QTUsMHg1
NSwweDg3LDB4NzIsMHgwNiwweDZBLDB4RkUsMHg4MiwweENBLDB4RkQsCisgICAgMHg2NywweDcy
LDB4RTUsMHg2MSwweEVBLDB4RTgsMHhGMiwweEQ3LDB4NDYsMHg2QSwweEM1LDB4NTksMHhCQSww
eEI4LDB4N0MsMHg1RiwKKyAgICAweDI3LDB4NkEsMHg4NCwweDU5LDB4MDAsMHgwQSwweEFBLDB4
REYsMHg2OCwweDcyLDB4QzUsMHg2MSwweDBBLDB4MkUsMHhGQiwweDdELAorICAgIDB4QzgsMHg4
MiwweDI2LDB4NkEsMHgwMCwweDJBLDB4QUYsMHhBNSwweEFGLDB4QkMsMHhDOCwweDdBLDB4MkQs
MHgyRCwweEY1LDB4RjUsCisgICAgMHhGNCwweEU1LDB4RUMsMHhBMywweDAyLDB4MEEsMHgwQiww
eEJELDB4MzUsMHhFRSwweEQzLDB4RTUsMHgwMiwweDAyLDB4ODIsMHgyOSwKKyAgICAweDM0LDB4
RUUsMHhGNCwweEU1LDB4RTIsMHhFQSwweEZBLDB4RjIsMHgxNCwweEU2LDB4RDMsMHhERCwweEJF
LDB4RkIsMHhGOCwweEZBLAorICAgIDB4RjQsMHhFNSwweEQzLDB4REQsMHgyOCwweDhBLDB4MkYs
MHgwQiwweEY0LDB4REQsMHhCMywweERELDB4RTgsMHg3OCwweDdFLDB4QjAsCisgICAgMHgxNCww
eEU2LDB4QjMsMHhERCwweDJBLDB4MkIsMHhBRCwweEZFLDB4MTQsMHhFNiwweEQzLDB4REQsMHhF
OCwweDdBLDB4RkEsMHhGRiwKKyAgICAweEY0LDB4RTUsMHhEMywweERELDB4RkUsMHhGQiwweDVC
LDB4REYsMHgxNCwweEU2LDB4RDMsMHhERCwweENGLDB4QUQsMHhENSwweEI1LAorICAgIDB4MzQs
MHhFNiwweEYzLDB4RTUsMHgwQiwweDJCLDB4MkYsMHgyQSwweDU1LDB4RUUsMHgzNSwweEU2LDB4
MDIsMHg4MiwweDc3LDB4NTcsCisgICAgMHg1NiwweEVFLDB4MTQsMHhFNiwweEFDLDB4REUsMHhG
RSwweDU1LDB4MzUsMHhFNiwweDE0LDB4RTYsMHhGQywweDM4LDB4MkYsMHhCRCwKKyAgICAweDU1
LDB4RUUsMHgxNCwweEU2LDB4QkUsMHhBQSwweDNFLDB4RkYsMHg1NSwweEVFLDB4MzUsMHhFNiww
eEVFLDB4QkIsMHg3RSwweEY3LAorICAgIDB4MzUsMHhFNiwweEQzLDB4REQsMHhGOCwweDc4LDB4
N0EsMHhBOCwweDE0LDB4RTYsMHhEMywweERELDB4MkIsMHgzNywweEJGLDB4QUYsCisgICAgMHhG
NCwweEU1LDB4MzUsMHhERSwweEFCLDB4MjIsMHhBMCwweEZBLDB4MzQsMHhFNiwweEY0LDB4RTUs
MHhGRiwweEE5LDB4MkIsMHgyQiwKKyAgICAweDM1LDB4RTYsMHhGNCwweERELDB4QUYsMHhFRSww
eDZFLDB4RkEsMHgzNCwweEU2LDB4RjQsMHhERCwweEY3LDB4QkYsMHgyRCwweEFGLAorICAgIDB4
NzYsMHhFRSwweDE1LDB4RTYsMHgzRCwweEFGLDB4QkYsMHhGRCwweEI2LDB4RjYsMHg1NiwweEU2
LDB4QjksMHhBRiwweEJCLDB4MEYsCisgICAgMHhCNiwweEY2LDB4NzYsMHhFRSwweEY3LDB4QjUs
MHhCRiwweEY4LDB4NzYsMHhGNiwweDk2LDB4RUUsMHhERCwweEZELDB4RkYsMHhGNSwKKyAgICAw
eDc2LDB4RjYsMHg5NiwweEVFLDB4NUQsMHhGNywweEZGLDB4NTYsMHg5NiwweEVFLDB4NzYsMHhF
RSwweDZBLDB4RkQsMHhGQSwweDcwLAorICAgIDB4OTYsMHhFRSwweDM1LDB4RTYsMHhFQSwweEE4
LDB4MjIsMHg4OCwweEI2LDB4RUUsMHgxNCwweEU2LDB4N0YsMHhGQSwweEFBLDB4QUEsCisgICAg
MHg1NSwweEVFLDB4QjMsMHhENSwweDU3LDB4NUEsMHhBMCwweDAwLDB4MzUsMHhFNiwweDkyLDB4
RDUsMHhCRCwweEY1LDB4RkYsMHhGQywKKyAgICAweDE0LDB4RTYsMHhCMywweEQ1LDB4MkUsMHhB
QSwweDJGLDB4QUQsMHgxNCwweEU2LDB4RDMsMHhERCwweEZCLDB4Q0EsMHg2QSwweEZBLAorICAg
IDB4RjMsMHhERCwweEIzLDB4RDUsMHg3RiwweEMyLDB4MDgsMHgyMCwweEY0LDB4REQsMHg1MSww
eENELDB4NUUsMHhFOCwweDgwLDB4MDAsCisgICAgMHhEMywweERELDB4OEYsMHhCNCwweDVFLDB4
RUEsMHgyMCwweDAwLDB4NzIsMHhDRCwweDZBLDB4OTMsMHhENywweDVFLDB4RjgsMHhDMCwKKyAg
ICAweDg3LDB4N0EsMHg0NiwweDcyLDB4N0UsMHg3QSwweDVFLDB4NzUsMHg2NiwweDcyLDB4MjUs
MHg2QSwweEU2LDB4MkEsMHgwQSwweDMyLAorICAgIDB4ODYsMHg3QSwweDQ2LDB4NzIsMHhGNSww
eERCLDB4QkIsMHg3QSwweDY2LDB4NzIsMHgyNSwweDcyLDB4M0EsMHhBQSwweDIwLDB4MkYsCisg
ICAgMHg2NiwweDcyLDB4MjUsMHg2QSwweEUwLDB4MTgsMHhEMiwweDNBLDB4ODcsMHg3QSwweDI2
LDB4NkEsMHg3RSwweEVBLDB4QUYsMHhFQywKKyAgICAweDg3LDB4N0EsMHg0NiwweDcyLDB4RDEs
MHg3QiwweEVBLDB4NjksMHg2NiwweDcyLDB4MjYsMHg3MiwweDZBLDB4QUEsMHg4MiwweDIzLAor
ICAgIDB4NjYsMHg3MiwweDI1LDB4NzIsMHhBRSwweDNFLDB4M0YsMHhFQSwweDg2LDB4NzIsMHgy
NSwweDZBLDB4RUEsMHhFRiwweEY0LDB4QjcsCisgICAgMHg4NywweDdBLDB4NDYsMHg3MiwweERE
LDB4RkIsMHhCRiwweDhELDB4NjYsMHg3MiwweDI1LDB4NzIsMHhFMCwweENFLDB4MkMsMHhBQywK
KyAgICAweDY2LDB4N0EsMHgyNSwweDZBLDB4NjksMHhFOSwweEIyLDB4ODIsMHg4NywweDdBLDB4
NDYsMHg3MiwweDlGLDB4RTUsMHg0NSwweEZELAorICAgIDB4ODcsMHg3QSwweDI1LDB4NkEsMHhE
QSwweDhCLDB4Q0QsMHhBQiwweDg3LDB4N0EsMHgyNSwweDZBLDB4RUYsMHhGQSwweDlBLDB4RDgs
CisgICAgMHg2NywweDcyLDB4MjYsMHg3MiwweEEzLDB4MzYsMHhERSwweDk4LDB4NjYsMHg3Miww
eDA1LDB4NkEsMHhBQSwweEMwLDB4RTgsMHhGOCwKKyAgICAweDY2LDB4NzIsMHgyNSwweDcyLDB4
NEEsMHhDQiwweENBLDB4Q0IsMHg0NiwweDcyLDB4MjUsMHg2QSwweDg3LDB4MkIsMHgwMSwweDAz
LAorICAgIDB4ODcsMHg3QSwweDI1LDB4NkEsMHg1NywweDc3LDB4NkIsMHhGMiwweDY2LDB4NzIs
MHgwNSwweDZBLDB4N0IsMHhFMiwweEEwLDB4MEEsCisgICAgMHg2NywweDdBLDB4MDUsMHg2QSww
eDJELDB4MkIsMHhBQSwweDJBLDB4NjcsMHg3QSwweDI2LDB4NzIsMHg3RSwweEZFLDB4QkUsMHhD
OCwKKyAgICAweDg3LDB4N0EsMHgyNSwweDcyLDB4MDcsMHhCRiwweEZGLDB4RkYsMHhBOCwweDgy
LDB4MjUsMHg3MiwweDBBLDB4MkQsMHhGNywweDlGLAorICAgIDB4QzgsMHg4MiwweDI2LDB4NzIs
MHgyQSwweDBBLDB4RUIsMHg2NywweEM3LDB4ODIsMHg2NiwweDdBLDB4QUMsMHhCOCwweEFCLDB4
QUQsCisgICAgMHhDOCwweDgyLDB4QTcsMHg4MiwweEMwLDB4RDcsMHhENSwweDVGLDB4RTgsMHg4
QSwweEE3LDB4ODIsMHg3QiwweEVBLDB4QjIsMHhGNSwKKyAgICAweDA5LDB4OTMsMHhBNywweDgy
LDB4OEYsMHg4QiwweEZCLDB4REIsMHgwOSwweDkzLDB4QzgsMHg4QSwweDVGLDB4QUQsMHgzRiww
eDJGLAorICAgIDB4MjksMHg5MywweEM4LDB4OEEsMHg3RCwweDdFLDB4NkUsMHg3MiwweEM5LDB4
OEEsMHgwNiwweDZBLDB4QTgsMHhBOCwweEUwLDB4NzgsCisgICAgMHg2NywweDdBLDB4QTQsMHg1
OSwweEU4LDB4RkEsMHhGQSwweDVGLDB4RTUsMHg2MSwweDIzLDB4NDksMHg2OCwweDc4LDB4N0Us
MHg1RiwKKyAgICAweDI0LDB4NDksMHhDMiwweDMwLDB4RTgsMHhGOCwweDdDLDB4NUQsMHgwMyww
eDM5LDB4QTIsMHgzMCwweEJGLDB4RkYsMHhGRiwweDU1LAorICAgIDB4QzIsMHgzMCwweDgyLDB4
MjgsMHhDMCwweDY4LDB4N0UsMHhGNywweEMyLDB4MzAsMHg4MSwweDI4LDB4MjUsMHgyNSwweDJE
LDB4MkQsCisgICAgMHhFMiwweDMwLDB4QTIsMHgyOCwweEZFLDB4RjYsMHhGNywweEY3LDB4MDMs
MHgzMSwweEEyLDB4MjgsMHhCRSwweDFGLDB4QkYsMHhCNywKKyAgICAweDAzLDB4MzksMHhBMiww
eDI4LDB4QUEsMHhBOCwweEFBLDB4NUIsMHhFMywweDMwLDB4ODIsMHgyOCwweDIwLDB4MkEsMHhC
NiwweEFFLAorICAgIDB4RTMsMHgzMCwweEEyLDB4MzAsMHg4MCwweERFLDB4RkUsMHhERiwweEUy
LDB4MzAsMHhBMiwweDMwLDB4MUQsMHhGRiwweEZGLDB4RjUsCisgICAgMHgyMywweDQxLDB4QzIs
MHgzMCwweEI1LDB4OTUsMHgzNSwweEI1LDB4QTYsMHg1MSwweDI0LDB4NDEsMHhCRCwweDhCLDB4
ODEsMHhFQiwKKyAgICAweDY0LDB4NDksMHhFMywweDQwLDB4NTgsMHg3QSwweDVFLDB4NTcsMHg0
NCwweDQ5LDB4RTMsMHg0MCwweDAzLDB4MjksMHgyOSwweDJELAorICAgIDB4ODUsMHg1OSwweDQ0
LDB4NTEsMHhFQiwweEFBLDB4RjUsMHg4MywweEE1LDB4NTksMHg2NCwweDUxLDB4MEEsMHhBNiww
eDc3LDB4NTUsCisgICAgMHhDNSwweDYxLDB4NDQsMHg0OSwweEJDLDB4MjgsMHgzQSwweEFELDB4
MjcsMHg3MiwweEM1LDB4NjEsMHg4RCwweEU5LDB4QTksMHhGRCwKKyAgICAweEU2LDB4NjEsMHg2
NSwweDUxLDB4RkYsMHg3RSwweDc4LDB4NUEsMHg2NSwweDUxLDB4RTIsMHgzOCwweEE4LDB4RTgs
MHhCQywweDVGLAorICAgIDB4NjQsMHg0OSwweEUzLDB4MzgsMHg3OCwweDZBLDB4RkEsMHhFQiww
eDI0LDB4NDEsMHhDMywweDM4LDB4NUYsMHhGRCwweEE3LDB4MkYsCisgICAgMHhBNiwweDU5LDB4
MDMsMHg0MSwweDI1LDB4QUQsMHhBQiwweDhGLDB4RTcsMHg2MSwweDQ0LDB4NDksMHgwMiwweDBB
LDB4RkYsMHg1NSwKKyAgICAweEU3LDB4NjEsMHg2NCwweDQ5LDB4RUEsMHgyMCwweEEzLDB4RjUs
MHg4NSwweDUxLDB4MjQsMHg0MSwweDdFLDB4RTgsMHg3OCwweDVDLAorICAgIDB4NDQsMHg0OSww
eEUzLDB4MzgsMHg3RSwweERDLDB4REMsMHhGRSwweDQ0LDB4NDksMHhDMiwweDMwLDB4RjcsMHhG
RSwweEFBLDB4ODIsCisgICAgMHg2NSwweDQ5LDB4RTMsMHgzOCwweEZELDB4RkQsMHhDQiwweDgy
LDB4NDQsMHg0OSwweDAzLDB4NDEsMHgyRiwweDNGLDB4QkQsMHhFRiwKKyAgICAweEM2LDB4NTks
MHgyNCwweDQ5LDB4OEEsMHhBMywweEFCLDB4QUQsMHhBNSwweDU5LDB4NDMsMHg0OSwweEUyLDB4
N0EsMHg1QywweDU4LAorICAgIDB4ODUsMHg1MSwweDIzLDB4NDksMHhFRCwweEZGLDB4QjcsMHhE
NywweDg1LDB4NTEsMHgyMywweDQ5LDB4MDAsMHhFMCwweERBLDB4NUYsCisgICAgMHg4NCwweDUx
LDB4NDMsMHg0OSwweEE4LDB4RTgsMHhFQiwweEQ3LDB4QzUsMHg2MSwweDQ0LDB4NTEsMHhBRiww
eDJGLDB4MkYsMHhBRCwKKyAgICAweDI2LDB4NkEsMHg4NCwweDU5LDB4OUYsMHhBQSwweEFBLDB4
N0QsMHg4OCwweDdBLDB4QTUsMHg1OSwweDBCLDB4MkEsMHgwRiwweEFELAorICAgIDB4QTgsMHg4
MiwweDA2LDB4NzIsMHhBMCwweEEyLDB4QUEsMHg1RSwweDY4LDB4N0EsMHhFNiwweDY5LDB4OEEs
MHhBQSwweERFLDB4REYsCisgICAgMHhDOSwweDhBLDB4NDYsMHg3QSwweEI3LDB4MkQsMHgyNSww
eDhELDB4QzksMHg4QSwweDg3LDB4ODIsMHgyMCwweEUwLDB4RTAsMHhGQywKKyAgICAweEU5LDB4
OEEsMHg2NywweDgyLDB4MDIsMHgwMiwweEFCLDB4REEsMHhFQSwweDhBLDB4NDcsMHg3QSwweDVD
LDB4N0MsMHhFMiwweEFBLAorICAgIDB4ODgsMHg4MiwweDI2LDB4NzIsMHg1NSwweEJGLDB4Rjgs
MHhBOCwweDY3LDB4N0EsMHhDNSwweDYxLDB4NUYsMHhCMiwweEMwLDB4RTAsCisgICAgMHgwNyww
eDZBLDB4QTUsMHg1OSwweDdGLDB4N0UsMHhEOCwweDZDLDB4MDYsMHg2QSwweDY0LDB4NTEsMHgw
MiwweEZFLDB4N0YsMHg1NywKKyAgICAweEU1LDB4NjEsMHg2NCwweDUxLDB4MDAsMHhBQiwweEJE
LDB4RDUsMHhDNSwweDYxLDB4NjQsMHg1MSwweDgwLDB4QTgsMHhGQSwweEI3LAorICAgIDB4QzYs
MHg1OSwweDg0LDB4NTksMHhEQywweEFBLDB4QkYsMHgyQiwweDA2LDB4NkEsMHhBNSwweDU5LDB4
RUIsMHgyRiwweEFGLDB4RkQsCisgICAgMHg2NywweDcyLDB4RTUsMHg2MSwweDNGLDB4QkYsMHhB
QiwweERGLDB4QzksMHg4MiwweDI2LDB4NkEsMHgwQSwweEFCLDB4QjcsMHhENywKKyAgICAweDZF
LDB4QjQsMHg0NywweDcyLDB4MkIsMHhCRiwweEJELDB4RkQsMHhEMywweEU1LDB4OEIsMHg5Qiww
eDAyLDB4MEIsMHhCRiwweEQ1LAorICAgIDB4MTQsMHhFNiwweDZGLDB4QkMsMHgwMCwweDAyLDB4
QUIsMHhCRCwweDE0LDB4RTYsMHhCMywweEU1LDB4QTIsMHhBMiwweEFBLDB4QUQsCisgICAgMHgx
NCwweEU2LDB4RjQsMHhFNSwweEU1LDB4QkYsMHhGRSwweDdBLDB4MTQsMHhFNiwweEQzLDB4REQs
MHhCRiwweEFDLDB4QTAsMHhBMywKKyAgICAweDE0LDB4RTYsMHhENCwweERELDB4NUUsMHhGOCww
eEU4LDB4QUEsMHhGMywweEU1LDB4QjMsMHhERCwweDhBLDB4RkYsMHhGQSwweDdDLAorICAgIDB4
MTQsMHhFNiwweEIzLDB4REQsMHhGQiwweERGLDB4NTcsMHg3RiwweEY0LDB4RTUsMHhCMywweERE
LDB4MkUsMHgyRiwweEFCLDB4QkQsCisgICAgMHgzNSwweEU2LDB4RjQsMHhERCwweDJGLDB4QUIs
MHgyRCwweEJELDB4MzUsMHhFNiwweEYzLDB4RTUsMHg4MCwweEE4LDB4RUEsMHhGQSwKKyAgICAw
eDE0LDB4RTYsMHhEMywweERELDB4QTIsMHg5OCwweEZFLDB4N0UsMHgzNSwweEU2LDB4RDMsMHhE
RCwweDJBLDB4QUEsMHhCQiwweEJELAorICAgIDB4NTYsMHhFNiwweDE0LDB4RTYsMHhCNywweDVG
LDB4RjUsMHg5NSwweDU1LDB4RUUsMHgxNSwweEU2LDB4RUEsMHhBOCwweEUwLDB4RjAsCisgICAg
MHgzNCwweEU2LDB4RjQsMHhERCwweEU4LDB4QUUsMHhGRiwweDU3LDB4MzUsMHhFNiwweEQzLDB4
REQsMHhGQiwweEU4LDB4RUEsMHg3RSwKKyAgICAweEQ0LDB4RTUsMHgxNCwweERFLDB4QkUsMHhG
QSwweEZFLDB4RkEsMHgxNCwweEU2LDB4RjQsMHhERCwweDIzLDB4MjgsMHhFRSwweEFGLAorICAg
IDB4NTUsMHhFNiwweEY0LDB4RTUsMHhGRiwweEY1LDB4RkYsMHhCNywweDM0LDB4RTYsMHhGNCww
eERELDB4RDYsMHhCQSwweEVBLDB4QkUsCisgICAgMHg1NSwweEVFLDB4MTQsMHhFNiwweDM1LDB4
RTUsMHhGNSwweDU1LDB4QjYsMHhGNiwweDM1LDB4RTYsMHgyQiwweEFCLDB4QTksMHhBOSwKKyAg
ICAweEI2LDB4RjYsMHg3NiwweEVFLDB4RUEsMHhGQSwweEZFLDB4QUEsMHhCNiwweEY2LDB4NzYs
MHhFRSwweEY3LDB4RUYsMHhCQSwweEVBLAorICAgIDB4NzYsMHhGNiwweDk2LDB4RUUsMHg2Riww
eDVGLDB4RkQsMHhENywweDc2LDB4RjYsMHg5NiwweEVFLDB4RkQsMHhGNSwweEZGLDB4NjcsCisg
ICAgMHg5NiwweEVFLDB4NzYsMHhFRSwweEZGLDB4QkYsMHhCNiwweDU3LDB4OTYsMHhFRSwweDM1
LDB4RTYsMHhBQSwweEEwLDB4RkEsMHg1RSwKKyAgICAweDc1LDB4RUUsMHhGNCwweERELDB4MjAs
MHhBMCwweEVBLDB4N0IsMHg1NSwweEVFLDB4QjIsMHhENSwweEY4LDB4RTgsMHhGNiwweDU3LAor
ICAgIDB4RjMsMHhERCwweDkyLDB4RDUsMHgyQSwweEFBLDB4RUEsMHg1RiwweDE1LDB4RTYsMHhC
MywweEQ1LDB4QjIsMHhCRSwweEJELDB4NzUsCisgICAgMHhGNCwweERELDB4QjMsMHhENSwweEFB
LDB4QkMsMHhBRSwweEZGLDB4RjQsMHhFNSwweEIzLDB4RDUsMHgyOCwweEFCLDB4QjYsMHhGRiwK
KyAgICAweEYzLDB4REQsMHg5MSwweEQ1LDB4QTgsMHhBQSwweEFBLDB4RjYsMHhEMiwweERELDB4
RjAsMHhDNCwweDY4LDB4RTAsMHhBMCwweEEwLAorICAgIDB4ODcsMHg3QSwweDI1LDB4NkEsMHhD
OSwweEFCLDB4RUEsMHhCRiwweDg2LDB4NzIsMHgyNSwweDcyLDB4REEsMHhCQiwweEFBLDB4MkIs
CisgICAgMHg4NiwweDdBLDB4MjYsMHg2QSwweEFBLDB4QkIsMHg2OCwweEZCLDB4NjYsMHg3Miww
eDQ2LDB4NzIsMHgxRiwweDBCLDB4M0YsMHhBMSwKKyAgICAweDg3LDB4N0EsMHg2NiwweDcyLDB4
OTcsMHhFNywweDZBLDB4NjksMHg4NywweDdBLDB4NDYsMHg3MiwweEY0LDB4REUsMHhFRiwweEFF
LAorICAgIDB4ODYsMHg3MiwweDI2LDB4NzIsMHhBRiwweEJGLDB4MUYsMHhBRiwweDg3LDB4N0Es
MHgyNiwweDcyLDB4RkIsMHhDMSwweEVCLDB4QUEsCisgICAgMHg2NiwweDcyLDB4NDYsMHg3Miww
eDZCLDB4N0IsMHhGRCwweEZFLDB4NjYsMHg3MiwweDI1LDB4NkEsMHgwNywweDM1LDB4MjcsMHg4
MiwKKyAgICAweDg2LDB4N0EsMHgyNiwweDZBLDB4OUYsMHhGQiwweEVBLDB4RTgsMHg4NiwweDdB
LDB4NDYsMHg3MiwweEVELDB4RjcsMHhERCwweEZFLAorICAgIDB4NjYsMHg3MiwweDI1LDB4NzIs
MHg4QSwweDBCLDB4M0UsMHgyRSwweDY2LDB4NzIsMHgyNSwweDZBLDB4QkEsMHg3QSwweDgyLDB4
MDIsCisgICAgMHg2NiwweDcyLDB4MjUsMHg2QSwweEYxLDB4N0IsMHhBRCwweDhDLDB4ODcsMHg3
QSwweDQ2LDB4NzIsMHg1RSwweEVELDB4QUIsMHhFMywKKyAgICAweDg3LDB4N0EsMHgyNSwweDZB
LDB4QTYsMHhFRiwweEFBLDB4RTgsMHg2NiwweDdBLDB4NDYsMHg3MiwweDU2LDB4REYsMHhFOSww
eDBCLAorICAgIDB4ODcsMHg3QSwweDI1LDB4NkEsMHg2QSwweEVBLDB4QUEsMHg2MiwweDg3LDB4
N0EsMHgyNiwweDcyLDB4RkYsMHhBMiwweEIyLDB4N0IsCisgICAgMHg2NiwweDcyLDB4MjYsMHg3
MiwweEJBLDB4QUIsMHgwQSwweDAwLDB4NjYsMHg3MiwweDI1LDB4NzIsMHgwQiwweDBFLDB4QUEs
MHgxOCwKKyAgICAweDY2LDB4NzIsMHgyNiwweDcyLDB4QTAsMHhBNCwweDZCLDB4QzIsMHg4Niww
eDdBLDB4MjUsMHg3MiwweEJFLDB4RkYsMHg2MywweDZBLAorICAgIDB4NjYsMHg3QSwweDI2LDB4
NzIsMHhBOCwweDYyLDB4MDEsMHhCOSwweDY2LDB4ODIsMHg0NiwweDcyLDB4REQsMHg3RiwweEQ3
LDB4NTksCisgICAgMHg2NiwweDdBLDB4MDUsMHg3MiwweEI2LDB4QjYsMHhBQSwweDhBLDB4NjYs
MHg3QSwweDI1LDB4NzIsMHgwQSwweDlGLDB4MzgsMHgwMiwKKyAgICAweEE3LDB4ODIsMHg0Niww
eDcyLDB4QTgsMHhCQiwweEZGLDB4OTcsMHhDOCwweDgyLDB4NjYsMHg3QSwweDAyLDB4MkIsMHhC
RiwweEQ1LAorICAgIDB4QzgsMHg4MiwweDY2LDB4N0EsMHg4OCwweEE4LDB4QkYsMHhENSwweDA5
LDB4OEIsMHhBNywweDgyLDB4MkUsMHhFQSwweDAyLDB4QzksCisgICAgMHgyOSwweDkzLDB4Qzgs
MHg4QSwweEEyLDB4RTgsMHg2QSwweDYyLDB4QTcsMHg4MiwweEM1LDB4NjEsMHg3OCwweDdBLDB4
N0MsMHg1RSwKKyAgICAweEE1LDB4NTksMHgwMywweDQxLDB4RTAsMHhGMCwweDVDLDB4NTQsMHgy
MywweDQxLDB4QzIsMHgzOCwweEEwLDB4RjAsMHg3QiwweDc3LAorICAgIDB4RTIsMHgzOCwweEEy
LDB4MzAsMHhGQywweERDLDB4QkUsMHg3RSwweEMyLDB4MzAsMHg4MSwweDI4LDB4NTgsMHg3RSww
eERFLDB4QkIsCisgICAgMHhDMiwweDMwLDB4NjEsMHgyMCwweEZGLDB4N0UsMHhBRSwweEFDLDB4
QTIsMHgyOCwweDYxLDB4MjAsMHgwQiwweDBCLDB4MjMsMHhBQSwKKyAgICAweEMyLDB4MjgsMHhB
MiwweDI4LDB4OUUsMHg3RCwweDYzLDB4QjUsMHhDMiwweDMwLDB4QTIsMHgyOCwweEJBLDB4RjUs
MHg5NSwweEQ2LAorICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHhCQSwweEE2LDB4MDYsMHgwRCww
eEUzLDB4MzAsMHhBMiwweDI4LDB4RUIsMHg4QiwweDZGLDB4N0YsCisgICAgMHhDMiwweDMwLDB4
QTIsMHgyOCwweEQ4LDB4RUEsMHhFQiwweDc1LDB4MDMsMHgzOSwweEEyLDB4MzAsMHhCNSwweEJE
LDB4QkQsMHgyQiwKKyAgICAweDQ0LDB4NDksMHhDMiwweDMwLDB4QkQsMHhCRCwweEJCLDB4MEEs
MHg4NSwweDUxLDB4RTMsMHgzOCwweEUyLDB4N0EsMHg3RiwweDdCLAorICAgIDB4MDMsMHg0MSww
eEMyLDB4MzgsMHhCRSwweEZGLDB4REYsMHg3RiwweDQ0LDB4NDksMHhFMywweDQwLDB4MjUsMHgz
RiwweDJELDB4RkQsCisgICAgMHg4NSwweDU5LDB4MjMsMHg0MSwweDgyLDB4QkUsMHhGNSwweEQ1
LDB4NjQsMHg1MSwweDQ0LDB4NDksMHg3QiwweDdFLDB4QUIsMHgyMCwKKyAgICAweDY0LDB4NTEs
MHgyMywweDQ5LDB4MEQsMHgwNywweDJGLDB4MEEsMHhDNiwweDYxLDB4NDQsMHg0OSwweDBBLDB4
QUIsMHhERiwweDc3LAorICAgIDB4QzYsMHg1OSwweDI0LDB4NDksMHhGOCwweDdFLDB4NkIsMHg3
RCwweDI0LDB4NDksMHhFMywweDM4LDB4NUUsMHhGNCwweDU0LDB4NTcsCisgICAgMHg0NCwweDQx
LDB4QzIsMHgzOCwweDhBLDB4RUEsMHhGRiwweDdELDB4MjQsMHg0MSwweEUyLDB4MzgsMHgwRiww
eDI2LDB4QUQsMHhGRCwKKyAgICAweDg1LDB4NDksMHgyMywweDQxLDB4Q0QsMHhBRCwweDM1LDB4
RjUsMHg2NSwweDQ5LDB4MjQsMHg0MSwweDdGLDB4NTYsMHg3MiwweEZBLAorICAgIDB4NjUsMHg0
OSwweEUyLDB4MzgsMHgwQSwweDJCLDB4QUEsMHg2QiwweDQ0LDB4NDksMHgwMywweDQxLDB4RkMs
MHg1QywweDU0LDB4NTUsCisgICAgMHg0NCwweDQ5LDB4MDMsMHg0MSwweDU3LDB4REMsMHg3Nyww
eDU2LDB4NDQsMHg0OSwweEUyLDB4MzgsMHgwQSwweDJBLDB4RUIsMHg1RSwKKyAgICAweDQ0LDB4
NDksMHhDMiwweDM4LDB4QTgsMHhCOCwweEJGLDB4RDUsMHg0NCwweDQ5LDB4RTMsMHgzOCwweEFC
LDB4MkEsMHhCRiwweEI3LAorICAgIDB4ODUsMHg1MSwweDIzLDB4NDksMHgyRiwweDNELDB4M0Ys
MHgwRiwweEM2LDB4NTksMHg2NCwweDUxLDB4NUYsMHhFQiwweEYyLDB4RkEsCisgICAgMHhBNSww
eDUxLDB4NDMsMHg0OSwweDc3LDB4N0YsMHhGOCwweEJGLDB4NjQsMHg0OSwweDIzLDB4NDksMHg3
RSwweDY4LDB4NTYsMHhGRSwKKyAgICAweDQzLDB4NDksMHgwMywweDQxLDB4M0EsMHhCOSwweEJC
LDB4REYsMHhBNSwweDU5LDB4MDMsMHg0OSwweDJCLDB4MkYsMHhBRiwweEJELAorICAgIDB4QTUs
MHg1OSwweDY1LDB4NTEsMHhGQSwweEZGLDB4OTcsMHgyRSwweDI2LDB4NzIsMHg4NCwweDU5LDB4
MjUsMHg5NSwweEI1LDB4QkQsCisgICAgMHgwNiwweDcyLDB4QTQsMHg2MSwweDg4LDB4QkYsMHhC
NSwweEVFLDB4MjcsMHg3MiwweEU2LDB4NjksMHhGNSwweEFGLDB4OUEsMHg1RSwKKyAgICAweEM4
LDB4OEEsMHgwNiwweDcyLDB4MkIsMHgwOSwweDJGLDB4QUYsMHhFOCwweDhBLDB4NDYsMHg3QSww
eEI4LDB4RjgsMHg3QSwweDdGLAorICAgIDB4QTgsMHg4MiwweDI2LDB4NzIsMHgyMCwweEJBLDB4
QUYsMHhCNSwweEM5LDB4OEEsMHg2NywweDdBLDB4RTIsMHhFQSwweDZCLDB4NUYsCisgICAgMHhB
OCwweDgyLDB4MDYsMHg2QSwweEE4LDB4RkEsMHg1RiwweDVELDB4NDcsMHg3MiwweEM2LDB4Njks
MHhBMCwweEZBLDB4REYsMHhCRiwKKyAgICAweDI2LDB4NkEsMHg4NCwweDU5LDB4NUUsMHg1RSww
eEZCLDB4ODAsMHhFNSwweDYxLDB4NjQsMHg1MSwweEQ3LDB4REQsMHhCQiwweDAwLAorICAgIDB4
QzUsMHg1OSwweDY0LDB4NTEsMHhGNSwweEQ3LDB4QjgsMHgyOCwweEM2LDB4NTksMHg4NSwweDU5
LDB4QkQsMHhCNSwweEU1LDB4ODgsCisgICAgMHhFNiwweDYxLDB4QTUsMHg1OSwweEU3LDB4RUEs
MHhGOSwweDdBLDB4RTYsMHg2MSwweDg1LDB4NTEsMHg4QiwweEFFLDB4RUIsMHhCNywKKyAgICAw
eDA2LDB4NjIsMHhBNSwweDU5LDB4RTMsMHhFRCwweDU1LDB4RDUsMHg0NywweDcyLDB4RTUsMHg2
MSwweDNELDB4QjUsMHhERCwweEJELAorICAgIDB4RTksMHg4MiwweDQ3LDB4NzIsMHgzRiwweEE1
LDB4QjUsMHhGRCwweDhCLDB4OUIsMHg4OCwweDdBLDB4MEIsMHhBQiwweDVELDB4REQsCisgICAg
MHgyRCwweEFDLDB4QTgsMHg4MiwweDAyLDB4QkYsMHhGNSwweDU1LDB4OTMsMHhERCwweDI5LDB4
OEIsMHgwMiwweDJGLDB4QUQsMHhCNSwKKyAgICAweEY0LDB4RTUsMHg1MSwweEQ1LDB4MDAsMHgw
MywweDA5LDB4QUQsMHhGNCwweEU1LDB4MTQsMHhERSwweEE4LDB4ODgsMHgwMCwweDAwLAorICAg
IDB4MTQsMHhFNiwweEQ0LDB4REQsMHg4QiwweDdBLDB4QUUsMHhFQSwweEQzLDB4REQsMHhCMyww
eERELDB4OTgsMHhCQiwweEZFLDB4RTUsCisgICAgMHhEMywweERELDB4OTIsMHhENSwweDgwLDB4
MDAsMHhFMCwweEU4LDB4RDMsMHhERCwweEIyLDB4REQsMHgyNywweDBGLDB4MEQsMHhBOSwKKyAg
ICAweDE0LDB4RTYsMHhCMywweERELDB4MEEsMHgwQSwweEFGLDB4RUQsMHgxNCwweEU2LDB4RjQs
MHhERCwweEU4LDB4RkUsMHhFRCwweEZGLAorICAgIDB4MTQsMHhFNiwweEIzLDB4REQsMHhFQSww
eEJBLDB4RjgsMHg2QiwweDE0LDB4RTYsMHhEMywweERELDB4QjUsMHhBNywweDBGLDB4MkYsCisg
ICAgMHg1NSwweEVFLDB4MTQsMHhFNiwweEI1LDB4MDksMHgyMCwweDAwLDB4NTUsMHhFRSwweDE0
LDB4RTYsMHg3MCwweEYyLDB4RUEsMHhCQSwKKyAgICAweDM1LDB4RTYsMHhEMywweERELDB4REYs
MHg1NywweERFLDB4RTgsMHgxNCwweEU2LDB4RDMsMHhERCwweERELDB4QTcsMHgwQiwweDAyLAor
ICAgIDB4MzUsMHhFNiwweEQzLDB4REQsMHhGRCwweEZBLDB4RUEsMHhCQSwweDE0LDB4RTYsMHhG
NCwweERELDB4OEYsMHgwQiwweEE5LDB4NDYsCisgICAgMHgxNCwweEU2LDB4RjQsMHhERCwweDBB
LDB4MjAsMHg4MCwweDgyLDB4MTQsMHhFNiwweEQ0LDB4REQsMHhGQSwweDdGLDB4N0YsMHhBOCwK
KyAgICAweDM1LDB4RTYsMHhEMywweERELDB4M0IsMHhBRiwweEFELDB4M0QsMHg5NiwweEVFLDB4
MzUsMHhFNiwweDBGLDB4MjksMHgyOSwweDBELAorICAgIDB4QjcsMHhGNiwweDk2LDB4RUUsMHhG
NywweDVELDB4RUYsMHg2NywweEI2LDB4RjYsMHg5NiwweEVFLDB4REUsMHhGNywweDlGLDB4RDUs
CisgICAgMHhCNiwweEY2LDB4NzYsMHhFRSwweEVBLDB4RkEsMHhGQSwweEZFLDB4OTYsMHhFRSww
eDc2LDB4RUUsMHhGRSwweERELDB4RUYsMHg1RSwKKyAgICAweDk2LDB4RUUsMHhGMywweERELDB4
QTgsMHhGQSwweDdBLDB4NzgsMHgzNSwweEU2LDB4OTMsMHhENSwweDIwLDB4RkEsMHhGRSwweEZG
LAorICAgIDB4RjMsMHhERCwweEIzLDB4RDUsMHhFQSwweDVGLDB4NTcsMHg1NywweEQzLDB4REQs
MHg5MiwweEQ1LDB4QzgsMHhFQSwweEZGLDB4NzUsCisgICAgMHhEMywweERELDB4OTIsMHhENSww
eEQ3LDB4QTUsMHhCRCwweDZELDB4QjMsMHhERCwweDcxLDB4Q0QsMHg4MCwweEEwLDB4RkYsMHhC
NywKKyAgICAweEQzLDB4REQsMHg3MiwweENELDB4OEEsMHgyQSwweEVGLDB4RkIsMHhEMywweERE
LDB4OTIsMHhENSwweEVBLDB4RkEsMHhGQiwweEZELAorICAgIDB4QjIsMHhENSwweDUyLDB4RDUs
MHhCOCwweEFFLDB4RUMsMHhEQSwweEIyLDB4RDUsMHg3MiwweEQ1LDB4QzIsMHhDOSwweDdELDB4
NzUsCisgICAgMHg2NiwweDcyLDB4MjUsMHg3MiwweDIwLDB4MDgsMHhBOCwweDI2LDB4ODcsMHg3
QSwweDQ2LDB4NzIsMHhGMywweDVDLDB4RTgsMHg1RiwKKyAgICAweDY3LDB4N0EsMHgyNiwweDcy
LDB4RTYsMHhBRSwweDBBLDB4MDAsMHg4NywweDcyLDB4MjYsMHg2QSwweEJBLDB4RkYsMHhGRSww
eEU4LAorICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhBOSwweEVGLDB4RUUsMHg3NywweDg3LDB4
NzIsMHgyNSwweDZBLDB4QUIsMHhCNywweEZCLDB4QTgsCisgICAgMHg4NywweDdBLDB4NDYsMHg3
MiwweEJGLDB4Q0EsMHgwQSwweEZGLDB4ODcsMHg3QSwweDI2LDB4NzIsMHgyQSwweEVBLDB4QTYs
MHg4QiwKKyAgICAweDg2LDB4N0EsMHg0NiwweDcyLDB4NUEsMHhGNSwweEZELDB4RkUsMHg4Niww
eDdBLDB4MjYsMHg2QSwweEVCLDB4RjMsMHhCOCwweEYyLAorICAgIDB4QTcsMHg3QSwweDQ2LDB4
NzIsMHhDRiwweEU3LDB4RkYsMHhFQiwweDg2LDB4N0EsMHg0NiwweDcyLDB4QTksMHhBRiwweEY4
LDB4N0MsCisgICAgMHg4NywweDdBLDB4NDUsMHg3MiwweERDLDB4RTIsMHhGOCwweEEyLDB4ODYs
MHg3QSwweDQ2LDB4NzIsMHhFMywweEZCLDB4QjUsMHhBRCwKKyAgICAweDg3LDB4N0EsMHg0NSww
eDcyLDB4RkQsMHhFMywweEMyLDB4ODIsMHg4NywweDdBLDB4NDUsMHg3MiwweDY5LDB4NzMsMHhF
MywweEYyLAorICAgIDB4NjYsMHg3QSwweDQ1LDB4NzIsMHg1MCwweDZGLDB4QUUsMHgyQywweDY2
LDB4NzIsMHgyNiwweDcyLDB4RTIsMHhFMywweDgwLDB4QjIsCisgICAgMHg4NywweDdBLDB4MjUs
MHg3MiwweDcyLDB4QUEsMHhGQSwweEY4LDB4ODcsMHg3QSwweDI1LDB4NzIsMHhEQiwweEJBLDB4
QkEsMHg5QSwKKyAgICAweDY2LDB4N0EsMHg0NiwweDcyLDB4QjksMHhFRiwweDc4LDB4NUUsMHg2
NiwweDdBLDB4NDYsMHg3MiwweDk4LDB4ODAsMHg0MCwweDYyLAorICAgIDB4ODcsMHg3QSwweDQ2
LDB4NzIsMHg2MiwweEVBLDB4RUEsMHgzQSwweDg3LDB4N0EsMHg0NiwweDcyLDB4RjEsMHgwNSww
eEEzLDB4NUUsCisgICAgMHg4NywweDdBLDB4MjUsMHg3MiwweEZELDB4QUIsMHhCOCwweEEyLDB4
QTcsMHg4MiwweDQ2LDB4NzIsMHhGRCwweEZCLDB4REEsMHhGMiwKKyAgICAweDg3LDB4N0EsMHgy
NSwweDcyLDB4RUMsMHhCRiwweDJCLDB4QTgsMHg4NywweDgyLDB4NDYsMHg3MiwweEZGLDB4NUEs
MHhFQSwweEIyLAorICAgIDB4ODcsMHg3QSwweDI1LDB4NzIsMHg4RCwweEFGLDB4QUEsMHhBRiww
eDg3LDB4ODIsMHgyNSwweDcyLDB4NUYsMHhFRSwweEYwLDB4RTIsCisgICAgMHhBNywweDgyLDB4
NDYsMHg3MiwweEZGLDB4RDcsMHhCNCwweDdBLDB4MjksMHg5MywweDQ2LDB4N0EsMHhGRCwweEJE
LDB4QkQsMHgyRCwKKyAgICAweDJBLDB4OTMsMHhBOCwweDgyLDB4NkEsMHg3RiwweDdFLDB4Nzgs
MHg4NywweDdBLDB4QzUsMHg2MSwweDdDLDB4N0MsMHhGRSwweEZFLAorICAgIDB4QzQsMHg2MSww
eDAyLDB4NDEsMHg1RSwweEY4LDB4RTgsMHhGMCwweDIzLDB4NDEsMHhDMiwweDMwLDB4N0UsMHhE
QSwweDc4LDB4RkEsCisgICAgMHhFMiwweDMwLDB4QTEsMHgzMCwweDdBLDB4N0EsMHhGMywweEY3
LDB4QzIsMHgzMCwweDgxLDB4MjgsMHhFQSwweEU4LDB4NjIsMHhFMiwKKyAgICAweEMyLDB4Mjgs
MHg2MSwweDI4LDB4QUEsMHhBQiwweDhBLDB4MDgsMHhFMywweDMwLDB4QTIsMHgyOCwweDU3LDB4
RjUsMHhBNywweEM5LAorICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHgwNiwweEVBLDB4RUEsMHhD
QiwweEMyLDB4MzAsMHhBMiwweDI4LDB4NTcsMHg1NSwweEE1LDB4OEUsCisgICAgMHhDMiwweDMw
LDB4QTIsMHgyOCwweDhELDB4OEYsMHhBQSwweDUyLDB4QzIsMHgzMCwweDgxLDB4MjAsMHhGQSww
eDZBLDB4RUEsMHhCRSwKKyAgICAweEMyLDB4MzAsMHg4MSwweDI4LDB4MkYsMHhCQiwweEJGLDB4
MkIsMHgyNCwweDM5LDB4QzIsMHgzMCwweDNELDB4QUQsMHgyRiwweEFGLAorICAgIDB4NjQsMHg0
OSwweDI0LDB4NDEsMHgwRiwweDJCLDB4MEIsMHgyOSwweDY1LDB4NDksMHhFMywweDM4LDB4NUMs
MHg1NiwweDdFLDB4RDgsCisgICAgMHgwNCwweDQxLDB4QzIsMHgzOCwweDVCLDB4NUUsMHg3Riww
eDM4LDB4MjQsMHg0OSwweEMyLDB4MzgsMHhBOSwweEFCLDB4QUIsMHgyQSwKKyAgICAweDY0LDB4
NTEsMHgwMywweDQxLDB4QkQsMHgyRCwweDA5LDB4MEIsMHg4NSwweDUxLDB4MjMsMHg0OSwweDhB
LDB4QUEsMHhGRSwweDdBLAorICAgIDB4QzYsMHg1OSwweDY0LDB4NTEsMHhERCwweEZELDB4RUYs
MHhBQiwweEE1LDB4NTEsMHgwMywweDQxLDB4RjgsMHg3QywweDdFLDB4NTgsCisgICAgMHg0NCww
eDQ5LDB4MDMsMHg0MSwweEVCLDB4RTMsMHhFMiwweDYzLDB4NjUsMHg0OSwweEUzLDB4MzgsMHg3
RCwweEVCLDB4QTMsMHhGRiwKKyAgICAweDI0LDB4NDEsMHhDMiwweDM4LDB4RkQsMHhGRiwweEM4
LDB4MjgsMHgyNCwweDQxLDB4RTIsMHgzOCwweEVELDB4RUIsMHhBRCwweDgwLAorICAgIDB4MjMs
MHg0MSwweEMyLDB4MzgsMHgyQSwweEFBLDB4RUUsMHg2QSwweDQ0LDB4NDEsMHhDMiwweDM4LDB4
RTgsMHhCNywweDdELDB4RDUsCisgICAgMHg2NSwweDQ5LDB4RTMsMHgzOCwweDVGLDB4QUYsMHhB
OSwweDJGLDB4NjUsMHg0OSwweEUyLDB4MzgsMHhCNSwweEFGLDB4M0UsMHgwQSwKKyAgICAweDY0
LDB4NDksMHgyMywweDQxLDB4REYsMHhCQSwweDI4LDB4QTAsMHg0NCwweDQ5LDB4RTMsMHgzOCww
eDVFLDB4NUEsMHg1OCwweDdFLAorICAgIDB4RTMsMHgzOCwweEEyLDB4MzAsMHgzNiwweEZFLDB4
REUsMHg5RSwweDI0LDB4NDEsMHhDMiwweDM4LDB4QUYsMHhCRCwweDJGLDB4QUIsCisgICAgMHhB
NSwweDUxLDB4NDQsMHg0OSwweEFELDB4MDksMHgwOSwweEE1LDB4MDYsMHg2MiwweDg0LDB4NTEs
MHg1RiwweDdELDB4RjMsMHhBQiwKKyAgICAweEM1LDB4NTksMHgyMywweDQxLDB4QkYsMHhERiww
eDVFLDB4N0MsMHg0NCwweDQ5LDB4MDMsMHg0MSwweEUwLDB4N0MsMHg3RiwweDdFLAorICAgIDB4
MjMsMHg0OSwweEUyLDB4NDAsMHhBRiwweDJELDB4MzUsMHgyNSwweDg0LDB4NTEsMHgyMywweDQ5
LDB4MjUsMHgzRCwweDM1LDB4QjcsCisgICAgMHg2NywweDcyLDB4QTUsMHg1OSwweEY1LDB4RkQs
MHhCNSwweDJELDB4NjcsMHg3QSwweEM1LDB4NjEsMHhERCwweEJGLDB4QUEsMHg4MCwKKyAgICAw
eDI2LDB4NkEsMHhFNSwweDY5LDB4RDUsMHg2RSwweDY0LDB4RTgsMHgwNiwweDZBLDB4QTUsMHg2
MSwweEU4LDB4RjIsMHhGMiwweDc4LAorICAgIDB4NDcsMHg3MiwweEE0LDB4NjEsMHgwMywweEZE
LDB4RjUsMHg1NSwweDQ3LDB4N0EsMHhBNCwweDYxLDB4MjAsMHhBQiwweEY3LDB4NUQsCisgICAg
MHg0NiwweDdBLDB4QTQsMHg2MSwweDJBLDB4QUEsMHhBRCwweEZELDB4NjcsMHg3QSwweDI2LDB4
NzIsMHgwMCwweDAwLDB4QUIsMHg1RCwKKyAgICAweDY3LDB4NzIsMHhDNSwweDYxLDB4REEsMHhB
QSwweEE4LDB4RTIsMHgwNywweDZBLDB4QTQsMHg1OSwweDAyLDB4QUEsMHhGQywweDdFLAorICAg
IDB4NDcsMHg3MiwweEE0LDB4NTksMHgwOCwweEFCLDB4MkYsMHhCNSwweDI2LDB4NkEsMHhBNSww
eDU5LDB4RUUsMHhEOCwweDVBLDB4NzgsCisgICAgMHhFNiwweDYxLDB4QTUsMHg1OSwweEZGLDB4
RjAsMHg3RSwweDc1LDB4QzYsMHg1OSwweDY0LDB4NTEsMHhBMiwweEEyLDB4REEsMHg1QiwKKyAg
ICAweDA3LDB4NjIsMHg2NCwweDUxLDB4QTIsMHgwMiwweEJCLDB4NzUsMHhFNiwweDU5LDB4NjQs
MHg1MSwweEJFLDB4QjIsMHhGMiwweEZELAorICAgIDB4QTUsMHg1OSwweDQzLDB4NDksMHg4MCww
eDlBLDB4MzgsMHgzOCwweDA2LDB4NjIsMHhBNSwweDU5LDB4MkYsMHgyNSwweEY1LDB4RjcsCisg
ICAgMHg0NywweDcyLDB4QTQsMHg1OSwweDA4LDB4QkYsMHhERCwweDVGLDB4QzksMHg4MiwweEU2
LDB4NjEsMHgyMiwweDJCLDB4QUQsMHhGNSwKKyAgICAweEM5LDB4ODIsMHg2NywweDdBLDB4RkIs
MHhDRSwweDZCLDB4RjksMHgyRCwweEFDLDB4NjcsMHg3QSwweDJGLDB4QkQsMHhGNSwweEZELAor
ICAgIDB4NzIsMHhENSwweDhCLDB4OUIsMHgwMiwweDBGLDB4MkQsMHhCNSwweEY0LDB4RTUsMHg3
MiwweEQ1LDB4MDAsMHhBMiwweEFCLDB4QUQsCisgICAgMHhGNCwweEU1LDB4QjMsMHhERCwweDIw
LDB4QTIsMHhBMywweEU5LDB4RDMsMHhERCwweEIzLDB4REQsMHg3NiwweEYwLDB4MjAsMHg4MCwK
KyAgICAweEYzLDB4REQsMHhCMywweERELDB4NkIsMHhFRiwweDdBLDB4NUUsMHhCMywweERELDB4
NzIsMHhENSwweDAyLDB4MDgsMHhGRSwweDdGLAorICAgIDB4RDMsMHhERCwweDkyLDB4RDUsMHgw
QSwweDJELDB4OTUsMHg1NSwweEY0LDB4REQsMHg5MiwweEQ1LDB4MDAsMHgwOCwweDhGLDB4QUQs
CisgICAgMHhEMywweEU1LDB4MTQsMHhERSwweEFBLDB4QUEsMHhBRSwweEZFLDB4NTUsMHhFRSww
eEQzLDB4REQsMHhCNSwweDI5LDB4MkIsMHgyQSwKKyAgICAweDU1LDB4RUUsMHhGNCwweERELDB4
ODAsMHhCMCwweDdDLDB4NUEsMHgzNSwweEVFLDB4OTIsMHhENSwweEEwLDB4MjAsMHhGRSwweDVG
LAorICAgIDB4MzUsMHhFNiwweEIzLDB4RDUsMHgyMCwweDAwLDB4MDAsMHgwOSwweDU1LDB4RUUs
MHgxNCwweEU2LDB4RDcsMHg3RSwweEZFLDB4RTMsCisgICAgMHgzNSwweEVFLDB4MTQsMHhERSww
eEQ3LDB4RkYsMHhCNiwweEEyLDB4MzUsMHhFNiwweEY0LDB4REQsMHhFQiwweEVGLDB4RUEsMHg2
MCwKKyAgICAweDM1LDB4RTYsMHhGNCwweEU1LDB4QUIsMHhBRiwweDhBLDB4MkEsMHgzNSwweEU2
LDB4RjQsMHhFNSwweEZCLDB4RUEsMHhBOCwweDgyLAorICAgIDB4MzUsMHhFNiwweEQ0LDB4REQs
MHhCQSwweDJBLDB4MkEsMHgwQSwweDk2LDB4RUUsMHgzNSwweEU2LDB4MDksMHgwQiwweDBCLDB4
MEIsCisgICAgMHhCNiwweEY2LDB4NzYsMHhFRSwweENBLDB4NkEsMHhFQSwweEFBLDB4QjYsMHhG
NiwweDc1LDB4RUUsMHg2QiwweEVGLDB4QUIsMHhFQSwKKyAgICAweDc2LDB4RjYsMHg5NiwweEVF
LDB4RDUsMHhGNSwweEZGLDB4REQsMHg5NiwweEVFLDB4NzYsMHhFRSwweEQ4LDB4Q0EsMHgzRSww
eEE4LAorICAgIDB4NzYsMHhFRSwweDE0LDB4RTYsMHg2MCwweEMwLDB4QzAsMHgwMCwweDM1LDB4
RTYsMHhCMywweEQ1LDB4N0YsMHhEQywweDVBLDB4NzgsCisgICAgMHhEMywweERELDB4OTMsMHhE
NSwweEJFLDB4RkYsMHhBQSwweEFBLDB4RDMsMHhERCwweDkyLDB4RDUsMHg3RSwweEJFLDB4RkUs
MHg1QSwKKyAgICAweEIyLDB4RDUsMHg5MiwweEQ1LDB4NjUsMHg3NSwweDc1LDB4RkQsMHhCMiww
eEQ1LDB4NzIsMHhDRCwweEY3LDB4QkEsMHhFQSwweEVFLAorICAgIDB4OTIsMHhENSwweDcyLDB4
Q0QsMHg4MCwweEFBLDB4RTIsMHhCRSwweDkyLDB4RDUsMHg1MSwweENELDB4MDIsMHgyQiwweDJB
LDB4RUEsCisgICAgMHg5MiwweEQ1LDB4NTEsMHhDRCwweEY4LDB4RkEsMHg5RiwweDU3LDB4OTIs
MHhENSwweDUxLDB4Q0QsMHg3RiwweDc3LDB4RUYsMHg5RCwKKyAgICAweDY3LDB4N0EsMHg0Niww
eDcyLDB4M0QsMHhBQSwweENGLDB4OUEsMHg2NywweDdBLDB4NDYsMHg3MiwweEI0LDB4NTAsMHhG
RSwweDBBLAorICAgIDB4ODcsMHg3QSwweDQ3LDB4NzIsMHhEQSwweEJGLDB4RUYsMHhCQiwweDY3
LDB4N0EsMHg0NiwweDcyLDB4REIsMHg4MiwweEMyLDB4OEIsCisgICAgMHg2NywweDcyLDB4NDYs
MHg3MiwweDNBLDB4N0EsMHhGQSwweDk3LDB4ODcsMHg3QSwweDQ2LDB4NzIsMHg3QywweDZCLDB4
NDMsMHhGMiwKKyAgICAweDg3LDB4N0EsMHg0NiwweDcyLDB4N0YsMHhBMSwweEJFLDB4QUQsMHg4
NywweDdBLDB4MjUsMHg2QSwweDJBLDB4QUEsMHhFNiwweEY4LAorICAgIDB4QTcsMHg3QSwweDI2
LDB4NkEsMHhFRSwweEJFLDB4QjYsMHgyQiwweDQ2LDB4N0EsMHg2NiwweDcyLDB4N0QsMHhENSww
eEJELDB4NzcsCisgICAgMHg4NywweDdBLDB4NDYsMHg3MiwweDBFLDB4QUIsMHhCQiwweEI1LDB4
ODYsMHg3QSwweDQ1LDB4NzIsMHhERSwweEFDLDB4MkEsMHhBMiwKKyAgICAweDg2LDB4N0EsMHg0
NiwweDcyLDB4QTgsMHhBQSwweEJELDB4QUEsMHg4NiwweDdBLDB4NDYsMHg3MiwweEJGLDB4RUMs
MHhFMiwweEEyLAorICAgIDB4ODYsMHg3QSwweDQ2LDB4NzIsMHhENywweDQ1LDB4OEYsMHhCRSww
eDg2LDB4N0EsMHg0NiwweDcyLDB4RUYsMHhCNywweEFBLDB4QUEsCisgICAgMHg4NywweDdBLDB4
NDUsMHg3MiwweEFGLDB4QkYsMHhBRiwweDhBLDB4ODYsMHg3QSwweDQ2LDB4NzIsMHhGQiwweEVB
LDB4RUEsMHg5QywKKyAgICAweEE3LDB4N0EsMHg2NywweDcyLDB4RkYsMHg3RCwweEZCLDB4QjMs
MHg4NiwweDdBLDB4NDYsMHg3MiwweEFFLDB4RkUsMHhGNiwweEQ2LAorICAgIDB4ODcsMHg3QSww
eDQ2LDB4NzIsMHhBNSwweEFFLDB4RkUsMHhBQSwweDY3LDB4N0EsMHg0NiwweDcyLDB4QjcsMHhB
QiwweDNFLDB4MjIsCisgICAgMHg4NywweDgyLDB4NDYsMHg3MiwweEZGLDB4REEsMHg5OCwweDNG
LDB4ODcsMHg3QSwweDQ2LDB4N0EsMHhBQSwweDgzLDB4RUEsMHg2MCwKKyAgICAweDg3LDB4N0Es
MHg0NiwweDcyLDB4QkEsMHhGOCwweDFELDB4OUIsMHg4NiwweDdBLDB4NDUsMHg3QSwweDhBLDB4
RTgsMHgyQywweEI5LAorICAgIDB4ODcsMHg3QSwweDQ2LDB4N0EsMHhCRSwweEFGLDB4QUEsMHhB
MiwweDg3LDB4N0EsMHgyNiwweDdBLDB4QUMsMHhBOCwweEE4LDB4ODIsCisgICAgMHg4NywweDdB
LDB4MjUsMHg3MiwweEE5LDB4RkEsMHhCQSwweDI4LDB4QTcsMHg4MiwweDY2LDB4N0EsMHg1Nyww
eEY1LDB4QUQsMHhCOSwKKyAgICAweEM4LDB4OEEsMHg0NiwweDcyLDB4N0YsMHg3RSwweEZGLDB4
M0IsMHhDQiwweEEzLDB4QTgsMHg4MiwweEY1LDB4QTUsMHgwRCwweDBCLAorICAgIDB4Q0IsMHhB
MywweEE3LDB4ODIsMHg3RSwweDVFLDB4NzgsMHg3QywweDg3LDB4ODIsMHhFNSwweDYxLDB4N0Us
MHg3QywweDdDLDB4NTgsCisgICAgMHhFNSwweDYxLDB4NDMsMHg0OSwweDdFLDB4NUUsMHg3Qyww
eDVDLDB4MDMsMHg0MSwweEMyLDB4MzAsMHhFNCwweDU2LDB4NUUsMHg1NCwKKyAgICAweEMyLDB4
MzAsMHhBMSwweDI4LDB4MzYsMHg4RiwweEM2LDB4ODAsMHhDMiwweDMwLDB4QTIsMHgyOCwweDU4
LDB4NUYsMHg1RiwweDk1LAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhCNywweEI3LDB4QUUs
MHg4RiwweDAzLDB4MzEsMHhBMiwweDI4LDB4QUQsMHhENywweEFFLDB4QjIsCisgICAgMHhFMyww
eDMwLDB4QTIsMHgyOCwweEU5LDB4RTgsMHhDMiwweDgwLDB4QzIsMHgzMCwweEEyLDB4MjgsMHgw
QiwweDJGLDB4MzUsMHg4OCwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4N0UsMHhFRSwweDdE
LDB4NTcsMHhDMiwweDMwLDB4ODIsMHgyOCwweEZGLDB4RkYsMHhGQiwweDIzLAorICAgIDB4MDMs
MHgzOSwweEEyLDB4MjgsMHg5NSwweEE1LDB4QjcsMHgyQSwweDQzLDB4NDEsMHhFMywweDM4LDB4
RTUsMHhBRCwweEFGLDB4OEYsCisgICAgMHg4NSwweDQ5LDB4MjMsMHg0MSwweDJELDB4QUQsMHhF
RCwweDc3LDB4NjQsMHg0OSwweEMyLDB4MzgsMHhGOCwweDc4LDB4N0EsMHg3RiwKKyAgICAweDIz
LDB4NDEsMHhDMiwweDM4LDB4QkUsMHgzRCwweDBELDB4OEYsMHhBNiwweDUxLDB4NDQsMHg0OSww
eDdELDB4OEQsMHgwRCwweDg5LAorICAgIDB4QTYsMHg1MSwweDI0LDB4NDksMHhGNSwweDdFLDB4
NjgsMHg2OCwweDY0LDB4NDksMHgyNCwweDQxLDB4QUUsMHgwQiwweDBGLDB4QzUsCisgICAgMHhB
NSwweDU5LDB4MDMsMHg0MSwweDBBLDB4OEEsMHhFRSwweDVGLDB4QzUsMHg1OSwweEUzLDB4Mzgs
MHhGOCwweEYyLDB4RkYsMHg3RCwKKyAgICAweDI0LDB4NDEsMHhDMiwweDM4LDB4RTgsMHg1OCww
eERBLDB4RjIsMHgwMywweDM5LDB4QzIsMHgzOCwweDBFLDB4QUQsMHgxNywweEI1LAorICAgIDB4
MjQsMHg0MSwweEUzLDB4MzgsMHgwMywweDIzLDB4M0QsMHg1RCwweDY1LDB4NDksMHgwMywweDQx
LDB4RUEsMHgzQSwweDlBLDB4NUYsCisgICAgMHg2NCwweDQ5LDB4QzEsMHgzOCwweDZBLDB4RjAs
MHhFOCwweEFCLDB4MDMsMHg0MSwweEMyLDB4MzAsMHhENSwweEE5LDB4QUEsMHg4MCwKKyAgICAw
eDIzLDB4NDEsMHhFMywweDM4LDB4MkIsMHgyMywweDNGLDB4MkIsMHg4NSwweDUxLDB4MDMsMHg0
MSwweDhCLDB4MkIsMHgyRCwweEFELAorICAgIDB4QTYsMHg1MSwweDIzLDB4NDEsMHhGQywweEZF
LDB4N0UsMHg1RiwweDQ1LDB4NDksMHhDMiwweDM4LDB4N0YsMHg3NiwweEZBLDB4ODIsCisgICAg
MHgwMywweDM5LDB4QzIsMHgzOCwweEQ1LDB4RjcsMHhBNiwweEJFLDB4MDMsMHg0MSwweEMyLDB4
MzgsMHgyRiwweEVGLDB4QkUsMHg4MiwKKyAgICAweDg1LDB4NDksMHgwMywweDQxLDB4MkQsMHhG
RCwweEZELDB4RDUsMHhDNiwweDU5LDB4MjMsMHg0MSwweDIyLDB4MkYsMHhCNSwweEQ1LAorICAg
IDB4QzUsMHg1MSwweDI0LDB4NDksMHhGOCwweDZFLDB4RkYsMHg3RiwweDQ0LDB4NDksMHgwMyww
eDQxLDB4N0EsMHg1MCwweDcyLDB4QjEsCisgICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweEI1LDB4
QkQsMHg5RCwweDJBLDB4RTUsMHg2MSwweDY0LDB4NTEsMHg1NSwweERELDB4QUYsMHgyRCwKKyAg
ICAweDI2LDB4NkEsMHg4NCwweDU5LDB4MkQsMHhGNSwweEZFLDB4QUIsMHg0NywweDcyLDB4QTQs
MHg1OSwweDgwLDB4MDIsMHhBQiwweEI3LAorICAgIDB4MjYsMHg2QSwweDg0LDB4NTksMHhBOCww
eEYwLDB4NjAsMHg3OCwweEU1LDB4NjEsMHg2NCwweDUxLDB4RTgsMHhCQiwweEZGLDB4N0YsCisg
ICAgMHhDNSwweDYxLDB4NDMsMHg1MSwweDIyLDB4QUEsMHhCNywweEQ1LDB4QzUsMHg2MSwweDg0
LDB4NTksMHhGMiwweEZBLDB4NkIsMHhGQiwKKyAgICAweEM1LDB4NjEsMHg4NCwweDU5LDB4QjIs
MHgwRCwweDM3LDB4M0QsMHgyNywweDcyLDB4ODQsMHg1OSwweEFCLDB4RkYsMHg3QSwweDcwLAor
ICAgIDB4MjcsMHg2QSwweDg0LDB4NTksMHhFQSwweDhCLDB4MkQsMHhGRiwweDA2LDB4NkEsMHg2
NCwweDUxLDB4RkEsMHg3QSwweDdDLDB4N0EsCisgICAgMHhBNCwweDU5LDB4NDQsMHg1MSwweDJC
LDB4MzcsMHg1NywweDdELDB4RTYsMHg2MSwweDQ0LDB4NDksMHhBMCwweEFGLDB4NTcsMHg1NSwK
KyAgICAweEE1LDB4NTksMHg0NCwweDQ5LDB4MDgsMHg4QiwweEZBLDB4RkYsMHg4NSwweDUxLDB4
NDQsMHg0OSwweEZFLDB4NzAsMHg2QSwweDdCLAorICAgIDB4ODUsMHg1MSwweDIzLDB4NDksMHgy
RiwweEI3LDB4QkQsMHg1RiwweEM2LDB4NTksMHg2NCwweDQ5LDB4RjUsMHg4QiwweDBELDB4MjUs
CisgICAgMHgwNiwweDYyLDB4NjQsMHg1MSwweDdGLDB4RUEsMHhBQSwweDBBLDB4MDYsMHg2Miww
eDg0LDB4NTEsMHhCRiwweEY3LDB4NzcsMHhEOCwKKyAgICAweDA2LDB4NjIsMHg4NCwweDUxLDB4
QUEsMHgyRiwweEJELDB4RDcsMHhFNSwweDYxLDB4ODQsMHg1OSwweDIyLDB4RkEsMHg2MiwweEFG
LAorICAgIDB4NjcsMHg3MiwweEE1LDB4NTksMHgwMiwweDA5LDB4QUQsMHg1NSwweEU5LDB4OEEs
MHg0NywweDcyLDB4MEIsMHhBNSwweEJELDB4RDUsCisgICAgMHg0RCwweEI0LDB4RTksMHg4QSww
eDJCLDB4MkYsMHhCRCwweEI1LDB4OTIsMHhERCwweEVDLDB4QTMsMHgwMiwweDJCLDB4MkIsMHgy
NSwKKyAgICAweEY0LDB4RTUsMHhCMywweERELDB4QTMsMHg4QiwweDJCLDB4MkQsMHhGNCwweEU1
LDB4OTIsMHhENSwweEFBLDB4QkEsMHg3QSwweEZDLAorICAgIDB4QjMsMHhERCwweDUxLDB4Q0Qs
MHhBMCwweEY4LDB4REEsMHhGQSwweDkyLDB4RDUsMHg3MiwweEQ1LDB4NkYsMHhBRiwweEY1LDB4
RjUsCisgICAgMHhEMywweERELDB4NzIsMHhDRCwweEFELDB4QjcsMHgyRiwweDBGLDB4RjQsMHhE
RCwweDkyLDB4RDUsMHhBOSwweDBCLDB4QUEsMHgyQiwKKyAgICAweDM0LDB4RTYsMHhGNCwweERE
LDB4RkQsMHgyRCwweEFGLDB4RjUsMHgzNSwweEU2LDB4RDMsMHhERCwweDAyLDB4RkEsMHhGRSww
eDU1LAorICAgIDB4MTQsMHhFNiwweEQzLDB4REQsMHhFMCwweEI3LDB4N0YsMHhERCwweEQzLDB4
REQsMHg3MiwweENELDB4RDgsMHg3OCwweDU4LDB4NUUsCisgICAgMHgxNCwweEU2LDB4OTIsMHhE
NSwweDBCLDB4MEQsMHgwRCwweDI5LDB4MzUsMHhFNiwweEY0LDB4REQsMHg4MCwweDdCLDB4RkUs
MHhCRSwKKyAgICAweDU1LDB4RUUsMHgxNCwweEU2LDB4ODcsMHgwRCwweDAzLDB4MDIsMHg3Niww
eEVFLDB4MTQsMHhFNiwweERFLDB4QTIsMHg4QSwweDhBLAorICAgIDB4NTUsMHhFRSwweDM1LDB4
RTYsMHg3NSwweEYyLDB4QzAsMHg1MCwweDE0LDB4RUUsMHgzNSwweEU2LDB4RDUsMHhGNywweEI1
LDB4QUQsCisgICAgMHgzNSwweEU2LDB4MTQsMHhFNiwweDNGLDB4QjksMHgyMywweEJCLDB4Qjcs
MHhGNiwweDU1LDB4RTYsMHhGRCwweDNELDB4MjksMHgwQiwKKyAgICAweEI2LDB4RjYsMHg5Niww
eEVFLDB4N0EsMHhFOCwweDdBLDB4N0UsMHg3NiwweEZFLDB4OTYsMHhFRSwweEQ1LDB4REYsMHg3
NSwweDc3LAorICAgIDB4OTYsMHhFRSwweDc2LDB4RUUsMHgwOCwweEEwLDB4QjIsMHg2NiwweDk2
LDB4RUUsMHg3NiwweEVFLDB4QTIsMHhFQSwweERFLDB4N0IsCisgICAgMHg3NiwweEVFLDB4NTYs
MHhFNiwweDA4LDB4MDAsMHgwMCwweEEwLDB4NzYsMHhFRSwweEQzLDB4REQsMHg1RSwweEUwLDB4
RTgsMHg4OCwKKyAgICAweDE0LDB4RTYsMHhCMywweEQ1LDB4NUYsMHg1RiwweEZFLDB4NjAsMHhE
MywweERELDB4OTIsMHhENSwweEZDLDB4RkYsMHhFRSwweEI4LAorICAgIDB4QjIsMHhENSwweDUy
LDB4Q0QsMHhBQSwweEFBLDB4QTgsMHhFMCwweDkyLDB4RDUsMHg3MiwweENELDB4MDgsMHgwQSww
eDk4LDB4ODgsCisgICAgMHhCMiwweEQ1LDB4NzIsMHhDRCwweEY2LDB4N0EsMHhGQiwweEZFLDB4
OTIsMHhENSwweDcxLDB4Q0QsMHg2NywweEZFLDB4NkYsMHg3QSwKKyAgICAweDcxLDB4Q0QsMHg1
MSwweENELDB4NzcsMHg1RSwweDVGLDB4OUEsMHg3MSwweENELDB4MzEsMHhDNSwweEFCLDB4RkIs
MHhGQiwweEFBLAorICAgIDB4NjcsMHg3QSwweEE0LDB4NjEsMHgwMiwweDBBLDB4QUEsMHhENSww
eDg4LDB4N0EsMHhFNSwweDY5LDB4OEEsMHhBRSwweDBFLDB4MkQsCisgICAgMHg2NywweDcyLDB4
MjYsMHg3MiwweEMyLDB4OEEsMHgyNywweEFDLDB4NjcsMHg3QSwweDQ2LDB4NzIsMHgwNiwweEVB
LDB4NTAsMHg1MCwKKyAgICAweDY3LDB4N0EsMHg0NiwweDcyLDB4NTcsMHg3MCwweDdBLDB4RTMs
MHg4NywweDcyLDB4MjUsMHg2QSwweDgyLDB4QUIsMHhFNywweEFBLAorICAgIDB4ODYsMHg3QSww
eDQ2LDB4NzIsMHg3NiwweEE1LDB4QUIsMHhGNSwweDg3LDB4N0EsMHg0NiwweDcyLDB4QkYsMHhB
QSwweENGLDB4RUYsCisgICAgMHg4NywweDdBLDB4NDYsMHg3MiwweEY5LDB4NzgsMHg4MCwweDAw
LDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhCOSwweEEzLDB4ODksMHgzRSwKKyAgICAweEE3LDB4N0Es
MHg0NiwweDcyLDB4NzQsMHg3NywweERGLDB4REUsMHg4NiwweDdBLDB4NDYsMHg3MiwweDhGLDB4
QUIsMHhGQiwweEZELAorICAgIDB4ODYsMHg3QSwweDQ2LDB4NzIsMHg4OCwweDhCLDB4MEEsMHg4
OSwweEE3LDB4N0EsMHg0NSwweDcyLDB4RUEsMHg3OCwweEFBLDB4QkYsCisgICAgMHg4NiwweDdB
LDB4NjYsMHg3MiwweEMzLDB4QkIsMHhCRSwweDU3LDB4ODYsMHg3QSwweDQ1LDB4NzIsMHhBMiww
eEI4LDB4MEQsMHg4OCwKKyAgICAweEE3LDB4N0EsMHg2NiwweDcyLDB4RkEsMHhFMiwweDU2LDB4
REYsMHg4NiwweDdBLDB4NjYsMHg3MiwweERFLDB4RTYsMHg4QiwweEE2LAorICAgIDB4QTcsMHg3
QSwweDY2LDB4NzIsMHhGNCwweEQ3LDB4N0QsMHg3QiwweDg2LDB4N0EsMHg0NiwweDcyLDB4QkUs
MHhGQSwweDZFLDB4RDUsCisgICAgMHhBNywweDgyLDB4NjYsMHg3QSwweEU1LDB4NzUsMHg3NSww
eDc1LDB4ODcsMHg3QSwweDQ2LDB4N0EsMHhCOSwweDMzLDB4MEIsMHhBQiwKKyAgICAweDg3LDB4
N0EsMHgyNSwweDdBLDB4QUEsMHg2MiwweEFBLDB4QUEsMHg4NywweDdBLDB4NDYsMHg3MiwweENE
LDB4QTUsMHhCRiwweDNFLAorICAgIDB4QTcsMHg3QSwweDY2LDB4N0EsMHg3NSwweDc1LDB4NkIs
MHhFQiwweEM4LDB4ODIsMHg0NSwweDcyLDB4RjUsMHhFRCwweDJCLDB4OEIsCisgICAgMHhBNyww
eDgyLDB4NjYsMHg3QSwweEZBLDB4QjYsMHhFNCwweDY3LDB4QTcsMHg4MiwweDQ2LDB4NzIsMHg4
QiwweDJGLDB4QjcsMHhCQSwKKyAgICAweEE3LDB4ODIsMHg2NiwweDdBLDB4OUUsMHhBQiwweEFB
LDB4QUEsMHhBNywweDdBLDB4NDYsMHg3MiwweEFDLDB4QkYsMHhFNiwweEVCLAorICAgIDB4MkEs
MHg5MywweDg2LDB4N0EsMHgxNywweEE1LDB4MkQsMHgyRCwweDBELDB4QUMsMHgyOSwweDkzLDB4
MjksMHgyQiwweDBCLDB4MEEsCisgICAgMHhFQywweEFCLDB4RTgsMHg4QSwweDc4LDB4NzgsMHhG
OCwweDc4LDB4QzgsMHg4MiwweEM2LDB4NjEsMHg3QSwweDdBLDB4RjgsMHg3QywKKyAgICAweEM1
LDB4NjEsMHgwMywweDQxLDB4NzgsMHg2MCwweEU4LDB4RUMsMHgyMywweDQxLDB4QzIsMHgzOCww
eEQ3LDB4QUEsMHhBQSwweDAwLAorICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHhERiwweDZFLDB4
NkEsMHhGMCwweEEyLDB4MzAsMHhDMiwweDI4LDB4NEEsMHg2RSwweEZGLDB4QkEsCisgICAgMHhF
MywweDMwLDB4QTIsMHgyOCwweDhBLDB4RjMsMHhGOSwweDc1LDB4RTMsMHgzMCwweEEyLDB4Mjgs
MHgzQSwweEFCLDB4QkYsMHhGRiwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4QTAsMHhFQSww
eEY4LDB4N0EsMHhDMiwweDMwLDB4QTIsMHgyOCwweEUwLDB4NDIsMHhDMiwweDYxLAorICAgIDB4
QzIsMHgyOCwweDgyLDB4MjAsMHhCMCwweDJBLDB4QkYsMHhCRCwweEUzLDB4MzAsMHhBMiwweDI4
LDB4QTUsMHgyRiwweDJFLDB4MkIsCisgICAgMHg0NCwweDQxLDB4RTMsMHgzMCwweEY1LDB4QkQs
MHhFRiwweDJBLDB4NDQsMHg0MSwweDAzLDB4MzksMHgyOSwweDgzLDB4MEIsMHgwMCwKKyAgICAw
eDQ0LDB4NDksMHhDMiwweDMwLDB4RTgsMHhCMiwweEZFLDB4NUUsMHgwMywweDM5LDB4QzIsMHgz
OCwweEJFLDB4QkUsMHgzRiwweDBCLAorICAgIDB4NDQsMHg0MSwweEUyLDB4MzgsMHhCNywweDJG
LDB4M0IsMHhBRCwweEE1LDB4NTEsMHgyNCwweDQxLDB4ODMsMHhBQiwweEJELDB4RjUsCisgICAg
MHg4NSwweDUxLDB4MjQsMHg0MSwweDYyLDB4RTgsMHg2OCwweDZCLDB4MjMsMHg0MSwweEMyLDB4
MzgsMHg4QSwweEZDLDB4NzgsMHg3RSwKKyAgICAweDAzLDB4NDEsMHhBMiwweDMwLDB4MjAsMHhC
QSwweEZCLDB4NzcsMHhDMiwweDQwLDB4MDMsMHgzOSwweEZCLDB4RUUsMHhGQSwweEVGLAorICAg
IDB4MjQsMHg0MSwweEMyLDB4MzgsMHhCRSwweEJCLDB4RUYsMHg3QiwweDAzLDB4MzksMHhBMiww
eDMwLDB4MEEsMHgyMCwweEJFLDB4OTcsCisgICAgMHgyNCwweDQxLDB4QzMsMHgzMCwweDdGLDB4
RkEsMHg4QSwweEFGLDB4MjQsMHg0MSwweEMyLDB4MzgsMHhGMiwweEZELDB4QjUsMHhGNywKKyAg
ICAweDI0LDB4NDEsMHhFMywweDM4LDB4MEQsMHhCRiwweDdCLDB4RUQsMHgyMywweDQxLDB4RTIs
MHgzOCwweEEwLDB4QUMsMHhBNywweDBGLAorICAgIDB4NDQsMHg0MSwweDAzLDB4NDEsMHhERiww
eDgzLDB4RTEsMHgyQiwweDQ0LDB4NDEsMHgwMywweDQxLDB4MzcsMHgzNSwweDU3LDB4NTYsCisg
ICAgMHg2NCwweDQ5LDB4MjMsMHg0MSwweERBLDB4MDMsMHhFMSwweDdGLDB4ODUsMHg1MSwweDI0
LDB4NDEsMHg3QiwweDhBLDB4QUEsMHhGQiwKKyAgICAweDY1LDB4NDksMHgwMywweDQxLDB4NTUs
MHg1RSwweEZBLDB4RjgsMHg2NSwweDQ5LDB4MDMsMHgzOSwweDU3LDB4N0YsMHg2QiwweDIzLAor
ICAgIDB4ODUsMHg0OSwweDAzLDB4NDEsMHhERCwweEU1LDB4QTksMHhBMiwweDg1LDB4NTEsMHgy
NCwweDQxLDB4QjUsMHgzNywweEJFLDB4RkQsCisgICAgMHg4NSwweDUxLDB4MjQsMHg0OSwweDZB
LDB4NkEsMHhGQSwweEFFLDB4ODQsMHg1MSwweDAzLDB4NDEsMHhCRCwweEFGLDB4QkEsMHg4MiwK
KyAgICAweDg1LDB4NTEsMHgyMywweDQ5LDB4QUIsMHhBRiwweDJGLDB4QTQsMHhFNiwweDYxLDB4
ODQsMHg1MSwweEE1LDB4MjUsMHhBRCwweDBCLAorICAgIDB4MjYsMHg2MiwweEM1LDB4NjEsMHhB
RiwweDNGLDB4RkYsMHhCNSwweDA2LDB4NkEsMHhBNCwweDU5LDB4MkUsMHg3OCwweDdFLDB4NUEs
CisgICAgMHhFNSwweDY5LDB4NjQsMHg1MSwweEY4LDB4RkIsMHhENSwweEY3LDB4QzUsMHg2MSww
eDY0LDB4NTEsMHhGRiwweDcyLDB4QTgsMHhBMywKKyAgICAweEE1LDB4NTksMHgyMywweDUxLDB4
RDYsMHg5NywweEUyLDB4QTAsMHhFNiwweDY5LDB4ODQsMHg1OSwweEZELDB4RjksMHhCRCwweDI1
LAorICAgIDB4MDcsMHg2QSwweEE1LDB4NjEsMHhERCwweERGLDB4MjksMHgwQSwweDQ3LDB4NzIs
MHhBNSwweDYxLDB4N0EsMHhDQSwweEVCLDB4RTgsCisgICAgMHhBNSwweDU5LDB4NDQsMHg1MSww
eEYwLDB4RkUsMHg5RiwweEE4LDB4QzUsMHg2MSwweDQ0LDB4NDksMHhFOCwweEFCLDB4RUIsMHhG
NywKKyAgICAweDg1LDB4NTEsMHgyMywweDUxLDB4NkEsMHhBQiwweDBCLDB4MDIsMHg4NCwweDUx
LDB4NDQsMHg0OSwweDc1LDB4RkYsMHg2RiwweEZDLAorICAgIDB4NjQsMHg0OSwweDIzLDB4NDks
MHg4QSwweEVCLDB4NjcsMHg4OCwweDg1LDB4NTEsMHgyMywweDQ5LDB4OEIsMHgyQiwweEJELDB4
RTUsCisgICAgMHg4NSwweDUxLDB4MjMsMHg0OSwweDdFLDB4QUUsMHgwMiwweDBCLDB4QzYsMHg1
OSwweDY0LDB4NDksMHgyRCwweDJELDB4QkYsMHhGRiwKKyAgICAweDA2LDB4NjIsMHhBNSwweDUx
LDB4OEEsMHhBQSwweEVCLDB4RUYsMHgwNiwweDYyLDB4ODQsMHg1MSwweEE4LDB4Q0EsMHhFQiww
eDZELAorICAgIDB4RTYsMHg2MSwweEE1LDB4NTksMHg3NiwweDdBLDB4RUQsMHgwNSwweEU2LDB4
NjEsMHg4NCwweDUxLDB4MkQsMHhBRiwweEE2LDB4RkEsCisgICAgMHgyNywweDcyLDB4QTUsMHg1
OSwweERELDB4QkEsMHhBQSwweDJGLDB4ODgsMHg3QSwweEU2LDB4NjksMHgyRCwweEFELDB4MkIs
MHgyQiwKKyAgICAweDQ5LDB4OTMsMHhBOCwweDdBLDB4MkQsMHgzNSwweEJELDB4QkQsMHg0RCww
eEI0LDB4RTksMHg4QSwweDBCLDB4QUYsMHhGRiwweERELAorICAgIDB4OTMsMHhERCwweEVDLDB4
QTMsMHgwMiwweDBGLDB4QUQsMHhCNSwweEYzLDB4RTUsMHg3MiwweEQ1LDB4RkEsMHhBQSwweEFC
LDB4QjUsCisgICAgMHhEMywweERELDB4NzIsMHhENSwweDVGLDB4NUUsMHg3QywweEZFLDB4OTIs
MHhENSwweDcxLDB4RDUsMHgwQiwweDA5LDB4QTksMHgwMCwKKyAgICAweEQzLDB4REQsMHg5Miww
eEQ1LDB4QUQsMHhBQiwweEE1LDB4MkQsMHgxNCwweEU2LDB4QjMsMHhENSwweEFGLDB4RUQsMHhC
RiwweDhCLAorICAgIDB4RjQsMHhERCwweEIyLDB4REQsMHg4OCwweEJFLDB4MjAsMHgyMCwweDE0
LDB4RTYsMHhEMywweERELDB4RDUsMHhENSwweEFFLDB4MDgsCisgICAgMHgxNCwweEU2LDB4RDMs
MHhERCwweDdGLDB4RUIsMHg2MiwweDYwLDB4OTIsMHhENSwweEYwLDB4QkMsMHgzMCwweEI4LDB4
RjgsMHg1RSwKKyAgICAweDE0LDB4RTYsMHgxMCwweEM1LDB4MkIsMHhBRiwweEY1LDB4RDUsMHgz
NSwweEU2LDB4OTIsMHhENSwweDg4LDB4MDIsMHgwQiwweDA5LAorICAgIDB4NzYsMHhFRSwweDE0
LDB4RTYsMHgyQiwweDIyLDB4QUEsMHhBQSwweDU1LDB4RUUsMHgzNSwweEU2LDB4ODAsMHhGNCww
eDU3LDB4NUUsCisgICAgMHg1NSwweEVFLDB4MTUsMHhFNiwweEQyLDB4QkEsMHhGQiwweEVCLDB4
MzUsMHhFNiwweDE0LDB4RTYsMHhGOCwweEJFLDB4RjgsMHg1QSwKKyAgICAweDU1LDB4RTYsMHgx
NCwweEU2LDB4RDcsMHg5NSwweDM1LDB4MEQsMHhCNywweEY2LDB4NTUsMHhFNiwweDJGLDB4Mjks
MHgyQiwweEFCLAorICAgIDB4QjYsMHhGNiwweDc2LDB4RUUsMHhBMiwweEVBLDB4N0EsMHhGRSww
eDk2LDB4RUUsMHg1NSwweEVFLDB4MDgsMHhFOCwweEVBLDB4RkEsCisgICAgMHg5NiwweEVFLDB4
NTUsMHhFNiwweEVBLDB4QUIsMHhBRCwweEZELDB4NzYsMHhFRSwweDU1LDB4RTYsMHgwMiwweDBF
LDB4OEUsMHg0RSwKKyAgICAweDc1LDB4RUUsMHg1NSwweEU2LDB4RTgsMHhDMiwweDJGLDB4RkIs
MHgzNSwweEVFLDB4NzUsMHhFNiwweEFGLDB4QUYsMHhCNywweEJFLAorICAgIDB4NTUsMHhFRSww
eDE0LDB4RTYsMHg2QiwweEE4LDB4N0EsMHhGQSwweDE0LDB4RTYsMHhCMywweEQ1LDB4NUMsMHg1
OCwweDc4LDB4NUEsCisgICAgMHhCMiwweEQ1LDB4NzIsMHhDRCwweEY4LDB4RkMsMHgyQSwweDI4
LDB4QjIsMHhENSwweDczLDB4Q0QsMHhCQSwweERBLDB4QUUsMHgyQiwKKyAgICAweEIyLDB4RDUs
MHg3MSwweENELDB4NkEsMHhCQSwweEY3LDB4RUQsMHg5MiwweEQ1LDB4NzIsMHhDRCwweDU2LDB4
NUUsMHg3NSwweDZGLAorICAgIDB4QjIsMHhENSwweDUxLDB4Q0QsMHg1QiwweEZGLDB4RUYsMHgz
QiwweDcyLDB4Q0QsMHgxMCwweEM1LDB4RkIsMHhGRiwweEI0LDB4RjgsCisgICAgMHg4MywweDU5
LDB4NDMsMHg1OSwweDZBLDB4QUYsMHgyRiwweDAyLDB4MDYsMHg2QSwweDYzLDB4NTksMHgyOSww
eEZELDB4RDUsMHg1NSwKKyAgICAweDQ2LDB4NzIsMHg2MywweDU5LDB4MDAsMHhBRiwweERELDB4
NTUsMHg4NywweDdBLDB4ODQsMHg2MSwweDA4LDB4QTIsMHhBOSwweEY1LAorICAgIDB4NjYsMHg3
MiwweDI1LDB4NkEsMHgwQiwweDBGLDB4ODksMHhFRCwweDg3LDB4N0EsMHg0NiwweDcyLDB4RkIs
MHhBNywweEE3LDB4MjUsCisgICAgMHhBOCwweDdBLDB4NDYsMHg3MiwweDU1LDB4RUYsMHg4QSww
eEZBLDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhBOCwweEFCLDB4NTIsMHg2MiwKKyAgICAweDg3LDB4
N0EsMHg0NiwweDcyLDB4QUEsMHhGQSwweEVFLDB4QkIsMHg4NywweDdBLDB4NDYsMHg3MiwweDhF
LDB4MEIsMHhCRiwweEJFLAorICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHg3QSwweEZBLDB4QUEs
MHg4MywweDg3LDB4N0EsMHg0NiwweDcyLDB4RkYsMHhCQiwweDFFLDB4REUsCisgICAgMHhBNyww
eDdBLDB4NDYsMHg3MiwweDJELDB4QTcsMHhCRCwweEJGLDB4QTcsMHg3QSwweDY2LDB4NzIsMHhC
RiwweEI5LDB4QkIsMHhBRCwKKyAgICAweEE3LDB4N0EsMHg2NiwweDcyLDB4RDUsMHg1NywweEJF
LDB4RkMsMHhBNywweDdBLDB4NjYsMHg3MiwweEVGLDB4RUQsMHhFQSwweERFLAorICAgIDB4QTcs
MHg3QSwweDY2LDB4NzIsMHhENywweEI3LDB4QjQsMHg5RSwweDg2LDB4N0EsMHg0NiwweDcyLDB4
QTgsMHgwRiwweDBBLDB4MDAsCisgICAgMHg4NiwweDdBLDB4NjYsMHg3MiwweEMyLDB4QUMsMHhD
QywweDIwLDB4ODcsMHg3QSwweDQ1LDB4NzIsMHhCNSwweDJBLDB4RjAsMHhFMiwKKyAgICAweEE3
LDB4ODIsMHg0NSwweDcyLDB4NkYsMHg4RiwweEJFLDB4QUIsMHg4NywweDdBLDB4NDYsMHg3Miww
eEVCLDB4NzIsMHhCRSwweEE3LAorICAgIDB4ODcsMHg4MiwweDY3LDB4N0EsMHhEMiwweEMyLDB4
NkMsMHg3RiwweEE4LDB4ODIsMHg0NiwweDcyLDB4N0YsMHg3RiwweDlELDB4M0IsCisgICAgMHhB
NywweDdBLDB4NjYsMHg3QSwweEU5LDB4QkQsMHhEQywweEJFLDB4QTcsMHg4MiwweDQ2LDB4NzIs
MHhBQSwweDI3LDB4QUEsMHhBQSwKKyAgICAweEE3LDB4ODIsMHg2NiwweDdBLDB4NTUsMHg3RSww
eDlFLDB4NTgsMHhBOCwweDgyLDB4NjcsMHg3QSwweERCLDB4N0YsMHhDQiwweEVGLAorICAgIDB4
ODcsMHg4MiwweDY2LDB4N0EsMHhDQywweEY1LDB4REQsMHhDNSwweEU4LDB4OEEsMHg2NiwweDdB
LDB4RDcsMHhGRCwweEJGLDB4M0YsCisgICAgMHhDQywweEEzLDB4QTcsMHg4MiwweDNELDB4MkQs
MHgyQiwweDBCLDB4MEUsMHhCNCwweDhCLDB4OUIsMHgwQSwweEFFLDB4RTIsMHg3MCwKKyAgICAw
eEVDLDB4QUIsMHhBNywweDgyLDB4RjgsMHg3OCwweDdBLDB4N0EsMHhDOCwweDgyLDB4QzUsMHg2
MSwweDU4LDB4N0UsMHhERSwweEZFLAorICAgIDB4MDYsMHg2MiwweDY0LDB4NTEsMHg1RiwweEZB
LDB4RTgsMHhFOCwweDg1LDB4NTEsMHgwMywweDQxLDB4RkUsMHhGQSwweDdDLDB4NTgsCisgICAg
MHgyMywweDQxLDB4RTIsMHgzOCwweDdDLDB4RTgsMHg2RSwweDRCLDB4QzIsMHgzMCwweEEyLDB4
MjgsMHhFQywweDIwLDB4RjIsMHhGMCwKKyAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4RTksMHhB
QSwweEVCLDB4NkIsMHhFMywweDMwLDB4QTIsMHgyOCwweEI1LDB4RjUsMHhCRiwweDk1LAorICAg
IDB4QzIsMHgyOCwweEEyLDB4MjgsMHg3MCwweDYyLDB4NTgsMHg1NCwweEEyLDB4MjgsMHg4MSww
eDI4LDB4MzgsMHgyMiwweEIwLDB4QjAsCisgICAgMHhBMiwweDI4LDB4ODIsMHgyOCwweDNDLDB4
RTgsMHhGRSwweDM4LDB4MDMsMHgzOSwweEEyLDB4MjgsMHgyRCwweDg1LDB4QkYsMHhGRiwKKyAg
ICAweDQ0LDB4NDEsMHhFMiwweDMwLDB4QUEsMHhBRSwweEYzLDB4RTUsMHg0NCwweDQxLDB4RTMs
MHgzOCwweEU4LDB4RkEsMHhGRiwweEQ3LAorICAgIDB4MjMsMHg0MSwweEExLDB4MzAsMHg3Qyww
eDdGLDB4RkYsMHgzRSwweDAzLDB4MzksMHhDMiwweDM4LDB4MDIsMHhFQiwweEVGLDB4QzAsCisg
ICAgMHgyNCwweDQxLDB4QzIsMHgzMCwweDJGLDB4QUYsMHhCNywweEJELDB4NDQsMHg0OSwweEUz
LDB4MzgsMHhBQSwweEJGLDB4REYsMHhERiwKKyAgICAweDY1LDB4NDksMHhFMywweDM4LDB4QzIs
MHhFQSwweDdFLDB4NTUsMHgyMywweDQxLDB4QzIsMHgzOCwweDc4LDB4RjgsMHg3QiwweEZGLAor
ICAgIDB4RTIsMHgzOCwweEEyLDB4MzAsMHhCRiwweEZBLDB4NzgsMHhGQywweDIzLDB4MzksMHhD
MiwweDMwLDB4RjIsMHhBQiwweEFCLDB4QUIsCisgICAgMHgyNCwweDQxLDB4RTMsMHgzOCwweDc3
LDB4RkYsMHg4QiwweDA2LDB4MDQsMHg0MSwweEEyLDB4MzAsMHg1RiwweEZFLDB4RkEsMHhCOCwK
KyAgICAweEUzLDB4MzgsMHg4MSwweDI4LDB4MkIsMHgyRiwweEZGLDB4RjcsMHhFMywweDM4LDB4
ODIsMHgzMCwweEFBLDB4QTgsMHhEQiwweEZGLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHgw
MywweDA5LDB4QUQsMHgwOSwweDIzLDB4NDEsMHgwMywweDM5LDB4MzUsMHhBRiwweDNGLDB4MkYs
CisgICAgMHg0NCwweDQxLDB4MDMsMHg0MSwweDJGLDB4MkQsMHgyQiwweDBFLDB4NDQsMHg0MSww
eEUzLDB4MzgsMHhBQywweEUwLDB4REEsMHhEQSwKKyAgICAweDQ0LDB4NDksMHhFMywweDM4LDB4
QUEsMHgyRSwweDBFLDB4QjcsMHg2NCwweDQ5LDB4MjQsMHg0MSwweEYyLDB4RjgsMHhGQSwweDdG
LAorICAgIDB4NDQsMHg0OSwweDAzLDB4NDEsMHhGQywweEVBLDB4RkUsMHhGRSwweDg1LDB4NTEs
MHgyNCwweDQxLDB4MkIsMHgyRCwweDNCLDB4MEIsCisgICAgMHhBNiwweDUxLDB4NDQsMHg0OSww
eEVFLDB4RUEsMHhFQSwweDUwLDB4NjQsMHg0OSwweDAzLDB4NDEsMHhBOCwweDYwLDB4RkUsMHhC
NiwKKyAgICAweDY0LDB4NDksMHgwMywweDQxLDB4MkUsMHhBOSwweEJCLDB4ODIsMHg4NSwweDUx
LDB4MjQsMHg0OSwweDIwLDB4MkEsMHhGQiwweEQ4LAorICAgIDB4ODQsMHg1MSwweDIzLDB4NDks
MHhBQSwweDJBLDB4RUUsMHg3RCwweDA2LDB4NjIsMHg2NSwweDUxLDB4MDksMHgyNywweEFELDB4
QTksCisgICAgMHhFNiwweDYxLDB4ODQsMHg1MSwweEE4LDB4QjgsMHhGRSwweERGLDB4QTUsMHg1
OSwweDYzLDB4NTEsMHhDMCwweENCLDB4OEEsMHhGQywKKyAgICAweEE1LDB4NTksMHg0MywweDUx
LDB4QUEsMHgyOSwweDhBLDB4QjAsMHhFNSwweDYxLDB4NDQsMHg1MSwweEFCLDB4QUYsMHgyRiww
eEY3LAorICAgIDB4RTYsMHg2MSwweDg0LDB4NTksMHg3RiwweERBLDB4RUEsMHg4QSwweDA2LDB4
NjIsMHg4NCwweDU5LDB4MjksMHhBRiwweEI1LDB4RkQsCisgICAgMHgyNywweDZBLDB4QzYsMHg2
MSwweDgyLDB4MDAsMHgyRiwweEI5LDB4MjcsMHg2QSwweEM2LDB4NjEsMHhGQSwweDdBLDB4RTgs
MHhDMCwKKyAgICAweEM2LDB4NTksMHgyMywweDQ5LDB4RkEsMHg3QSwweDdBLDB4NjgsMHg2NCww
eDUxLDB4MDMsMHg0MSwweDJBLDB4RkEsMHg1RCwweDU3LAorICAgIDB4ODUsMHg1MSwweDIzLDB4
NDksMHgwMiwweEEyLDB4MEMsMHgzRCwweDg1LDB4NTEsMHg0NCwweDQ5LDB4QjgsMHhCQSwweDcw
LDB4MjgsCisgICAgMHg2NCwweDUxLDB4NDQsMHg0OSwweEE4LDB4QUMsMHhCNiwweDI1LDB4QTYs
MHg1MSwweDIzLDB4NDksMHhFRiwweEVCLDB4RjksMHhGOCwKKyAgICAweEU2LDB4NTksMHg0NCww
eDQ5LDB4QjcsMHhBOSwweDIyLDB4MkQsMHhDNiwweDU5LDB4NDMsMHg0OSwweEZCLDB4QjYsMHhG
OCwweEUwLAorICAgIDB4QzYsMHg1OSwweDY1LDB4NTEsMHhCMiwweDdBLDB4QjcsMHhGNywweEE1
LDB4NTEsMHg2NCwweDUxLDB4NjIsMHhGQSwweDc5LDB4NjUsCisgICAgMHhFNiwweDU5LDB4NDMs
MHg0OSwweDJBLDB4QUYsMHhCNywweEQ1LDB4RTYsMHg1OSwweDg0LDB4NTEsMHg0MCwweEEyLDB4
M0EsMHg3RCwKKyAgICAweDQ3LDB4NzIsMHhDNiwweDU5LDB4MjUsMHhBRCwweDJGLDB4MjksMHg4
NywweDdBLDB4MjcsMHg2QSwweDBGLDB4MDMsMHhBQSwweDIxLAorICAgIDB4RTksMHg4MiwweDg3
LDB4N0EsMHgwQiwweDIyLDB4ODksMHg3RiwweDZCLDB4OTMsMHhDOCwweDgyLDB4MEIsMHg3Riww
eDdGLDB4N0QsCisgICAgMHg4RiwweEJDLDB4RTgsMHg4QSwweDJGLDB4QkQsMHhGRCwweDU1LDB4
QjMsMHhERCwweDhCLDB4OUIsMHgyMiwweDBCLDB4MkYsMHhBRCwKKyAgICAweEY0LDB4RTUsMHg5
MiwweEQ1LDB4N0IsMHhGQiwweEFGLDB4MjksMHhGNCwweERELDB4NzIsMHhENSwweDVGLDB4N0Ys
MHhCOCwweDgwLAorICAgIDB4MTQsMHhFNiwweDkyLDB4RDUsMHhCRCwweEFELDB4MEYsMHgwQSww
eDM1LDB4RUUsMHhGNCwweERELDB4RUYsMHhBRiwweEEyLDB4QUEsCisgICAgMHgzNSwweEU2LDB4
RjQsMHhERCwweERCLDB4QkUsMHhBQiwweDJBLDB4MzUsMHhFNiwweEQzLDB4REQsMHhBQiwweEI3
LDB4MkEsMHg4MiwKKyAgICAweDE0LDB4RTYsMHg3MiwweENELDB4QzAsMHg3OCwweDcwLDB4NzAs
MHgzMSwweEM1LDB4Q0YsMHhCQywweEZDLDB4RjcsMHhERSwweDNBLAorICAgIDB4NzIsMHhDRCww
eEYwLDB4QzQsMHhCNSwweEJELDB4QUIsMHgyQSwweDU1LDB4RUUsMHg5MiwweEQ1LDB4MkQsMHgy
NSwweDJELDB4MkQsCisgICAgMHg3NSwweEVFLDB4MzUsMHhFNiwweEUwLDB4QTIsMHhFOCwweEVB
LDB4NTUsMHhFRSwweDE0LDB4RTYsMHhGRSwweDdFLDB4RTIsMHg3OCwKKyAgICAweDM1LDB4RTYs
MHgxNCwweEU2LDB4QzAsMHgzQiwweDdGLDB4NzUsMHgzNSwweEU2LDB4MTQsMHhFNiwweDk2LDB4
OUYsMHgyNSwweDA1LAorICAgIDB4OTYsMHhFRSwweDM1LDB4RTYsMHhCNSwweDJELDB4M0YsMHgy
QSwweDc2LDB4RjYsMHg5NiwweEVFLDB4RDYsMHhGNSwweEZGLDB4RjcsCisgICAgMHg5NiwweEVF
LDB4MzUsMHhFNiwweDgwLDB4QTgsMHhBQSwweEFBLDB4OTUsMHhFRSwweDU1LDB4RTYsMHhGNCww
eEZGLDB4NTcsMHg1NSwKKyAgICAweDc1LDB4RUUsMHg1NSwweEU2LDB4QkYsMHgxNywweDk3LDB4
REYsMHg3NSwweEVFLDB4NTUsMHhFNiwweEZFLDB4QTgsMHhGQiwweEJGLAorICAgIDB4NzUsMHhF
RSwweDU1LDB4RTYsMHhBRiwweEFCLDB4QjksMHhGRiwweDc2LDB4RUUsMHg1NSwweEU2LDB4RjIs
MHhFQSwweEIyLDB4RkIsCisgICAgMHg1NSwweEVFLDB4MzUsMHhFNiwweDdBLDB4NzgsMHhGQSww
eEJBLDB4NzUsMHhFRSwweEIzLDB4RDUsMHg1RSwweDdBLDB4QUEsMHhBQSwKKyAgICAweDE0LDB4
RTYsMHg5MiwweEQ1LDB4NzcsMHhGRiwweDY4LDB4ODAsMHhCMywweERELDB4NzIsMHhENSwweEVB
LDB4RUUsMHhEQiwweEY4LAorICAgIDB4QjMsMHhENSwweDcxLDB4RDUsMHgzQiwweDJBLDB4OEIs
MHg2MCwweEIzLDB4RDUsMHg3MiwweEQ1LDB4QjIsMHhBMCwweEFBLDB4N0YsCisgICAgMHhCMiww
eEQ1LDB4NTEsMHhDRCwweEZGLDB4RjgsMHhGQSwweEVCLDB4NzEsMHhDRCwweDUxLDB4Q0QsMHg2
RiwweEFCLDB4RTcsMHhBRiwKKyAgICAweDgzLDB4NjEsMHg0MywweDU5LDB4RjgsMHhGQSwweEFG
LDB4QzksMHhBNCwweDYxLDB4NjMsMHg1OSwweDVGLDB4MzcsMHg1RiwweDk1LAorICAgIDB4ODQs
MHg1OSwweDQzLDB4NTksMHhBRiwweEI2LDB4RUIsMHhCRSwweEM1LDB4NjksMHg0NCwweDU5LDB4
MEYsMHhFQiwweEZGLDB4NkYsCisgICAgMHhFNSwweDY5LDB4NDMsMHg1OSwweDBBLDB4QUYsMHhG
NywweEY1LDB4NjcsMHg3QSwweEE0LDB4NjEsMHgwQSwweEJGLDB4NTUsMHg1NSwKKyAgICAweDg3
LDB4N0EsMHhBNCwweDYxLDB4QTAsMHhBQSwweEJGLDB4RDUsMHg2NiwweDcyLDB4MDUsMHg2QSww
eDAyLDB4MEEsMHhGRSwweEI1LAorICAgIDB4NjYsMHg3MiwweDI1LDB4NzIsMHg4MiwweDAyLDB4
MzcsMHgyQiwweEE3LDB4N0EsMHg0NSwweDcyLDB4RkUsMHg3NywweDZFLDB4M0UsCisgICAgMHg4
NywweDdBLDB4MjUsMHg3MiwweDBCLDB4OEIsMHhBRiwweEE1LDB4ODcsMHg3QSwweDY2LDB4NzIs
MHhERiwweEQxLDB4RjMsMHg4QiwKKyAgICAweEE3LDB4N0EsMHg0NiwweDcyLDB4RkYsMHhBQiww
eDNCLDB4MkYsMHg4NiwweDdBLDB4NDYsMHg3MiwweDJFLDB4QUEsMHhGMiwweEM4LAorICAgIDB4
QTcsMHg3QSwweDQ2LDB4NzIsMHhFOCwweDZBLDB4RUIsMHhGMiwweEE3LDB4N0EsMHg2NiwweDcy
LDB4NUQsMHhFOSwweDI5LDB4RkIsCisgICAgMHhBNywweDdBLDB4NjYsMHg3MiwweDZELDB4OEYs
MHhBRSwweDVDLDB4QTcsMHg3QSwweDY2LDB4NzIsMHhFQSwweENGLDB4RjcsMHhCRCwKKyAgICAw
eEE3LDB4N0EsMHg2NiwweDcyLDB4RkEsMHhERiwweEQ2LDB4NUEsMHg4NywweDdBLDB4NDYsMHg3
MiwweDhBLDB4MDAsMHg4OSwweEI5LAorICAgIDB4ODcsMHg3QSwweDQ1LDB4NzIsMHgwRCwweDJG
LDB4MEEsMHgyMiwweDg3LDB4N0EsMHg0NiwweDcyLDB4RjAsMHg3QSwweEFBLDB4MEEsCisgICAg
MHg4NywweDdBLDB4MjYsMHg3QSwweENBLDB4QTIsMHg4QSwweDgwLDB4QTcsMHg4MiwweDY2LDB4
N0EsMHgyNSwweEY3LDB4QkEsMHg4RSwKKyAgICAweEE3LDB4ODIsMHg0NiwweDdBLDB4QTgsMHhB
QSwweEFBLDB4QUQsMHg4NywweDgyLDB4NjYsMHg3QSwweDNBLDB4QTUsMHhENSwweDU3LAorICAg
IDB4QTcsMHg4MiwweDY2LDB4N0EsMHhERSwweEI2LDB4RjgsMHhGRiwweEE3LDB4ODIsMHg2Niww
eDdBLDB4QTksMHhBMSwweEVBLDB4MTMsCisgICAgMHhBNywweDgyLDB4NjYsMHg3QSwweDc3LDB4
N0IsMHg3QSwweEZFLDB4NkEsMHg5QiwweDQ2LDB4NzIsMHhCRiwweEI1LDB4MkQsMHgwQiwKKyAg
ICAweDBELDB4QjQsMHg2QSwweDlCLDB4MkQsMHgwRCwweDJBLDB4MDIsMHgyRCwweEI0LDB4Q0Ms
MHhBMywweDc4LDB4ODAsMHhDMCwweERFLAorICAgIDB4Q0MsMHhBMywweDY2LDB4N0EsMHg3OCww
eDc4LDB4N0MsMHg3QSwweDQ2LDB4NzIsMHhFNSwweDY5LDB4RTgsMHhCQSwweEZDLDB4NUMsCisg
ICAgMHgwNiwweDZBLDB4NjMsMHg0OSwweEY4LDB4NzAsMHg3QSwweDVFLDB4NjQsMHg1MSwweEUy
LDB4MzgsMHg3MCwweDY4LDB4RUEsMHg3QSwKKyAgICAweDAzLDB4NDEsMHhFMiwweDM4LDB4NjIs
MHhEQSwweDBFLDB4MzUsMHgwMywweDM5LDB4QTIsMHgzMCwweDVFLDB4REUsMHg1MCwweDdDLAor
ICAgIDB4QzIsMHgzOCwweEEyLDB4MjgsMHg1RSwweDU3LDB4RDcsMHhENywweEMxLDB4MzAsMHg4
MiwweDIwLDB4MkYsMHhGQiwweEVFLDB4RkEsCisgICAgMHhBMiwweDI4LDB4ODEsMHgyOCwweEYw
LDB4NjAsMHg4MywweDAyLDB4QzIsMHgyOCwweDgyLDB4MjgsMHhGQiwweEJGLDB4RkIsMHhBQSwK
KyAgICAweEMyLDB4MjgsMHg2MSwweDI4LDB4MkEsMHhBQSwweDJCLDB4QTIsMHhFMywweDMwLDB4
QTIsMHgzMCwweDZFLDB4RUIsMHg4QSwweEVCLAorICAgIDB4RTMsMHgzMCwweEEyLDB4MzAsMHgy
QiwweEVBLDB4RDgsMHg3QSwweEUzLDB4MzgsMHhBMiwweDMwLDB4MkUsMHhBNywweEY3LDB4RkUs
CisgICAgMHg0NCwweDQxLDB4QzIsMHgzOCwweDNELDB4QTUsMHgyRCwweEJELDB4NDQsMHg0MSww
eEUzLDB4MzgsMHhGOCwweEUwLDB4NzgsMHhGOCwKKyAgICAweDAzLDB4MzksMHhDMiwweDM4LDB4
NkYsMHhBQSwweEFFLDB4MkUsMHgyNCwweDQxLDB4RTMsMHgzOCwweDdBLDB4N0MsMHgyQSwweDIy
LAorICAgIDB4MjQsMHg0MSwweEMyLDB4MzAsMHg3RSwweEZCLDB4RTAsMHhGMCwweDQ0LDB4NDEs
MHhDMiwweDMwLDB4REQsMHhCRCwweDJGLDB4MkIsCisgICAgMHg0MywweDQ5LDB4QTEsMHgzMCww
eERGLDB4NUYsMHhFRSwweEEwLDB4MjQsMHg0MSwweEUzLDB4MzgsMHhGRCwweEE5LDB4MEIsMHg4
MCwKKyAgICAweDIzLDB4NDEsMHhDMiwweDM4LDB4MEUsMHhCQSwweEZDLDB4N0EsMHgyNCwweDQx
LDB4QzMsMHgzOCwweEYwLDB4RTIsMHhGRiwweEZGLAorICAgIDB4QzMsMHgzMCwweDgyLDB4MzAs
MHhGNiwweEZBLDB4RjAsMHhCMiwweEUzLDB4MzgsMHg4MiwweDMwLDB4RkYsMHhCNywweEI3LDB4
MkIsCisgICAgMHgyNCwweDQxLDB4QzIsMHgzOCwweEFELDB4M0QsMHgyMywweEFBLDB4NDQsMHg0
MSwweEUzLDB4MzgsMHhCRiwweEJCLDB4RkYsMHgwRCwKKyAgICAweDY0LDB4NDksMHgyNCwweDQx
LDB4QTUsMHhCRCwweEQ3LDB4NUUsMHg2NCwweDQ5LDB4MjQsMHg0MSwweDU3LDB4NzIsMHhFMiww
eDdFLAorICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHhBQywweEIwLDB4RTMsMHhFRiwweDI0LDB4
NDEsMHhFMywweDM4LDB4ODAsMHg4QSwweEZCLDB4OUIsCisgICAgMHg0NCwweDQ5LDB4RTMsMHgz
OCwweEFCLDB4QUIsMHhBRiwweDE1LDB4ODUsMHg1MSwweDI0LDB4NDEsMHg4QiwweDIyLDB4QkIs
MHg1RiwKKyAgICAweEE2LDB4NTEsMHgwMywweDM5LDB4RTAsMHhGQiwweDdCLDB4REQsMHg0NCww
eDQxLDB4RTMsMHgzOCwweEFFLDB4QkEsMHgzRiwweDFFLAorICAgIDB4ODUsMHg1MSwweDI0LDB4
NDEsMHhCQiwweDBGLDB4RkYsMHg3NywweDY1LDB4NTEsMHgwMywweDQxLDB4RUMsMHhFMCwweDZB
LDB4NUQsCisgICAgMHgyNCwweDQ5LDB4RTMsMHg0MCwweDBBLDB4MkIsMHhCQSwweDVBLDB4QzYs
MHg1OSwweDIzLDB4NDksMHg4QiwweEE5LDB4RTksMHhGNSwKKyAgICAweEE1LDB4NTksMHg0NCww
eDQ5LDB4RjgsMHhGQSwweDdCLDB4N0YsMHg2NCwweDUxLDB4MjMsMHg0OSwweDIwLDB4QUEsMHhB
MiwweEZGLAorICAgIDB4NjQsMHg1MSwweDAzLDB4NDEsMHg4MCwweEJBLDB4OUUsMHhENywweDg1
LDB4NTksMHgyMywweDQ5LDB4MEUsMHhBNywweEE3LDB4MkQsCisgICAgMHhFNiwweDYxLDB4ODUs
MHg1OSwweDhCLDB4QTEsMHhCQiwweEZGLDB4RTYsMHg2MSwweDg1LDB4NTEsMHhBOCwweEFFLDB4
NzcsMHg3RiwKKyAgICAweDA2LDB4NjIsMHg4NCwweDUxLDB4QTIsMHhBQiwweEJFLDB4RkQsMHgy
NywweDZBLDB4ODQsMHg1MSwweDgwLDB4QUUsMHhFRiwweDc3LAorICAgIDB4RTYsMHg2MSwweDg1
LDB4NTEsMHg2QSwweEUwLDB4RUUsMHg5RiwweEM2LDB4NTksMHgyMywweDQ5LDB4NUYsMHhFRSww
eEVBLDB4ODAsCisgICAgMHg2NCwweDUxLDB4MDIsMHg0MSwweDNGLDB4QkYsMHhDMCwweEE4LDB4
ODUsMHg1MSwweDIzLDB4NDEsMHgwQSwweEFELDB4REQsMHhCRiwKKyAgICAweDY0LDB4NDksMHgy
MywweDQxLDB4MDMsMHg4QywweDg2LDB4QUEsMHg2NCwweDQ5LDB4NDQsMHg0OSwweDIwLDB4MUMs
MHgyRiwweDI5LAorICAgIDB4QzYsMHg1OSwweDY0LDB4NDksMHgyRCwweEFELDB4RkQsMHhGRiww
eEU2LDB4NTksMHg2NCwweDQ5LDB4QTAsMHhBQSwweEQ1LDB4NTcsCisgICAgMHhBNSwweDUxLDB4
NDQsMHg0OSwweEVDLDB4QTAsMHhBQSwweDdGLDB4ODUsMHg1MSwweDIzLDB4NDEsMHg4RiwweEFB
LDB4RkIsMHg3RSwKKyAgICAweEE1LDB4NTEsMHgyMywweDQ5LDB4MkUsMHgyQiwweDJGLDB4QUYs
MHhDNSwweDUxLDB4NjQsMHg1MSwweEZFLDB4RkUsMHhEQywweEI3LAorICAgIDB4MDcsMHg2QSww
eEE1LDB4NTksMHgyNywweEE1LDB4QTUsMHg5RCwweDg3LDB4N0EsMHgwNiwweDYyLDB4MkEsMHhB
QiwweEFGLDB4RjUsCisgICAgMHhDOCwweDgyLDB4ODgsMHg3QSwweEJCLDB4QzEsMHhDRCwweEJE
LDB4RTgsMHg4MiwweEE3LDB4ODIsMHhBQSwweEFGLDB4QjMsMHg3RiwKKyAgICAweDI5LDB4OEIs
MHhDNywweDgyLDB4M0YsMHhCRiwweDc1LDB4RTUsMHgzMSwweENELDB4MDksMHg4QiwweDJGLDB4
QkQsMHhENSwweEQ1LAorICAgIDB4RDQsMHhFNSwweDBELDB4QUMsMHgwMiwweDAyLDB4MEIsMHgy
RCwweDE0LDB4RTYsMHhEMywweEU1LDB4RkUsMHhBQSwweDIyLDB4OEIsCisgICAgMHg1NSwweEU2
LDB4RjQsMHhFNSwweEZELDB4QkQsMHg4RiwweEFGLDB4NTUsMHhFRSwweDE0LDB4RTYsMHg1Nyww
eEQ1LDB4M0EsMHgwRSwKKyAgICAweDU1LDB4RUUsMHgxNCwweEU2LDB4QjUsMHhBRSwweEFBLDB4
MjAsMHg1NSwweEVFLDB4MTUsMHhFNiwweEZBLDB4RkEsMHhGRiwweEZDLAorICAgIDB4RjQsMHhF
NSwweEQwLDB4QkMsMHhFMCwweEUwLDB4RTgsMHg3OCwweDcyLDB4Q0QsMHgxMCwweEM1LDB4Qjcs
MHgyNywweEFELDB4RjUsCisgICAgMHg3MiwweENELDB4MzAsMHhDRCwweEZCLDB4RjgsMHhBRSww
eERELDB4MzUsMHhFNiwweDMxLDB4Q0QsMHgwRiwweDJELDB4MkYsMHhBRCwKKyAgICAweDc2LDB4
RUUsMHgzNCwweEU2LDB4RkIsMHhFQiwweEFCLDB4ODEsMHg1NSwweEVFLDB4MTUsMHhFNiwweDdB
LDB4RUUsMHhFQSwweEEyLAorICAgIDB4NzYsMHhFRSwweDE0LDB4RTYsMHhERCwweEY3LDB4Qjcs
MHgyRiwweDk2LDB4RUUsMHgxNCwweEU2LDB4QkQsMHgyRiwweEFCLDB4MDIsCisgICAgMHg5Niww
eEVFLDB4NzYsMHhFRSwweDNELDB4M0YsMHhBOCwweDgyLDB4QjYsMHhGNiwweDc2LDB4RUUsMHhG
QSwweEZCLDB4NUYsMHg1NywKKyAgICAweDc2LDB4RUUsMHg1NSwweEU2LDB4QTAsMHhFMCwweDM4
LDB4REUsMHgzNSwweEY2LDB4NTUsMHhFNiwweDU1LDB4REQsMHg1RCwweERELAorICAgIDB4NTUs
MHhFRSwweDc1LDB4RTYsMHgyRSwweEVCLDB4RUUsMHhBRSwweDc1LDB4RUUsMHgzNSwweEU2LDB4
MkEsMHgzRSwweEZFLDB4QUEsCisgICAgMHg3NSwweEVFLDB4MzUsMHhFNiwweDhBLDB4QTgsMHhB
QSwweEI3LDB4NTUsMHhFRSwweDc1LDB4RTYsMHhBQSwweEE4LDB4QTgsMHhGRSwKKyAgICAweDc1
LDB4RUUsMHg1NSwweEU2LDB4REUsMHhERiwweEFGLDB4QzAsMHg3NSwweEVFLDB4MzUsMHhFNiww
eDdFLDB4RkUsMHg5RSwweEJBLAorICAgIDB4NTUsMHhFNiwweDE0LDB4RTYsMHhGQSwweDZBLDB4
QTAsMHgwMCwweDU1LDB4RUUsMHhCMywweEQ1LDB4NUUsMHhFQSwweEE4LDB4ODAsCisgICAgMHgx
NSwweEU2LDB4OTIsMHhENSwweEY3LDB4N0YsMHhGQSwweEEwLDB4RDQsMHhERCwweDkyLDB4RDUs
MHg1RCwweDU1LDB4REUsMHhGOSwKKyAgICAweEIzLDB4REQsMHg3MSwweEQ1LDB4N0UsMHg2QSww
eEFCLDB4QjAsMHg5MiwweEQ1LDB4NTEsMHhDRCwweDk3LDB4RUUsMHhBQywweDIwLAorICAgIDB4
ODQsMHg2MSwweDQzLDB4NTksMHhGRCwweEVCLDB4MDIsMHhDQiwweDg0LDB4NjEsMHg0MywweDU5
LDB4M0YsMHhGRSwweERFLDB4QkYsCisgICAgMHg4NCwweDYxLDB4NDMsMHg1OSwweDhFLDB4QjQs
MHhEQiwweDcyLDB4QTUsMHg2MSwweDQzLDB4NTksMHhGOCwweDdDLDB4NUUsMHg1RiwKKyAgICAw
eDg0LDB4NjEsMHgyMywweDUxLDB4MkQsMHgyMiwweDgwLDB4QTIsMHhBNCwweDYxLDB4NjMsMHg1
OSwweEZBLDB4N0UsMHhGNywweDY5LAorICAgIDB4ODQsMHg2MSwweDYzLDB4NTksMHgzOSwweDU1
LDB4QUQsMHhGOSwweEU0LDB4NjksMHg2MywweDU5LDB4MkIsMHhBRCwweEI1LDB4NzksCisgICAg
MHg0NiwweDcyLDB4NjMsMHg1OSwweDBBLDB4QUIsMHhGRCwweDVELDB4ODcsMHg3QSwweDgzLDB4
NTksMHgwMiwweEFBLDB4QkQsMHg1NSwKKyAgICAweDY2LDB4NzIsMHhDNCwweDYxLDB4MjgsMHg4
MCwweDJBLDB4QjUsMHg4NywweDdBLDB4NjYsMHg3MiwweDkxLDB4MDUsMHg3QSwweDc5LAorICAg
IDB4QTcsMHg4MiwweDY2LDB4NzIsMHhGQSwweEY4LDB4RkQsMHg3RCwweDg2LDB4N0EsMHg2Niww
eDcyLDB4RTAsMHg3NCwweEQ3LDB4QUUsCisgICAgMHhBNywweDdBLDB4NjYsMHg3MiwweEU2LDB4
QUYsMHhGQiwweDJGLDB4ODcsMHg3QSwweDQ2LDB4NzIsMHg4RSwweEIwLDB4QTgsMHhGRSwKKyAg
ICAweEE3LDB4N0EsMHg2NiwweDcyLDB4RkYsMHg1NiwweERBLDB4N0QsMHhBNywweDdBLDB4NjYs
MHg3MiwweENELDB4NUYsMHhFRiwweEY3LAorICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhDOCww
eEMyLDB4NDIsMHgwMywweEE3LDB4N0EsMHg0NiwweDcyLDB4QkQsMHgyRiwweEFCLDB4RUIsCisg
ICAgMHhBOCwweDdBLDB4NjYsMHg3QSwweEY3LDB4N0YsMHhFQSwweDU3LDB4ODcsMHg3QSwweDQ2
LDB4N0EsMHg4OCwweEEyLDB4OTIsMHgxMiwKKyAgICAweEE3LDB4ODIsMHg2NywweDdBLDB4QUYs
MHhCNywweERGLDB4RkYsMHhBNywweDgyLDB4NjcsMHg3QSwweENCLDB4NTYsMHg4RSwweEIyLAor
ICAgIDB4QTcsMHg4MiwweDQ2LDB4NzIsMHhFRCwweEFGLDB4MkIsMHhBMiwweDg3LDB4ODIsMHg2
NywweDdBLDB4OUYsMHhCRCwweDM0LDB4MDIsCisgICAgMHhBNywweDgyLDB4NjcsMHg3QSwweEY0
LDB4QUMsMHhCRiwweEY5LDB4QTcsMHg4MiwweDY2LDB4N0EsMHhFQSwweEFBLDB4QkYsMHg1OCwK
KyAgICAweDI5LDB4OTMsMHg4NywweDdBLDB4NUQsMHg1RCwweDk1LDB4M0QsMHhFQywweEFCLDB4
QTcsMHg4MiwweDJELDB4MkYsMHgwQSwweDBBLAorICAgIDB4MEQsMHhBQywweEFCLDB4QTMsMHg4
OCwweEE4LDB4QkYsMHhGRiwweEVDLDB4QUIsMHhBQywweEEzLDB4ODAsMHhFOCwweEFFLDB4QjQs
CisgICAgMHhDQiwweEEzLDB4ODYsMHg3QSwweDU4LDB4NzgsMHhGOCwweEU4LDB4NDYsMHg3Miww
eEE1LDB4NTksMHhEQywweDVDLDB4NUMsMHg1QywKKyAgICAweEE1LDB4NTksMHg0MywweDQ5LDB4
NzAsMHhFOCwweDYyLDB4RkUsMHg2NCwweDQ5LDB4MDIsMHg0MSwweDVFLDB4RkUsMHg2OCwweDUw
LAorICAgIDB4MDMsMHg0MSwweEUyLDB4MzgsMHg3RCwweEY4LDB4REUsMHg1NSwweEUyLDB4MzAs
MHhBMiwweDI4LDB4RTgsMHhGMCwweDZBLDB4N0EsCisgICAgMHg4MiwweDMwLDB4QTIsMHgyOCww
eERGLDB4N0QsMHhGQiwweDdGLDB4QzIsMHgzMCwweEEyLDB4MjgsMHhERiwweDdCLDB4RUEsMHg2
OCwKKyAgICAweEMyLDB4MjgsMHg4MSwweDI4LDB4QkIsMHg2RSwweEVCLDB4ODMsMHhDMiwweDMw
LDB4QTIsMHgyOCwweDZCLDB4OEQsMHgyRSwweDAwLAorICAgIDB4QzIsMHgzMCwweEEyLDB4Mjgs
MHg4MiwweDhCLDB4MjMsMHhBQiwweEUzLDB4MzAsMHhBMiwweDMwLDB4QTcsMHgyRiwweEFCLDB4
MDIsCisgICAgMHhFMywweDM4LDB4QTEsMHgyOCwweDVCLDB4RkUsMHhBRSwweDJBLDB4MDMsMHgz
OSwweEEyLDB4MzAsMHhGNywweEJGLDB4RkYsMHhBMiwKKyAgICAweDI0LDB4NDEsMHhDMiwweDMw
LDB4RUQsMHhBQSwweDgyLDB4MDIsMHg0NSwweDQxLDB4MDMsMHg0MSwweERGLDB4REYsMHhGQiww
eEFELAorICAgIDB4MjQsMHg0MSwweEUzLDB4MzgsMHgzNiwweDg1LDB4QkIsMHhBMCwweDQ0LDB4
NDEsMHgwMywweDQxLDB4QUUsMHhCRiwweEZCLDB4QkEsCisgICAgMHg2NSwweDQ5LDB4MDMsMHgz
OSwweDUzLDB4RTksMHhDMywweEVCLDB4NDQsMHg0OSwweEUzLDB4MzgsMHgyRiwweEJCLDB4RkUs
MHg1QSwKKyAgICAweDY1LDB4NDksMHgwMywweDQxLDB4NkEsMHhBQSwweEFCLDB4MEIsMHg4NSww
eDUxLDB4MDMsMHg0MSwweDdGLDB4RkIsMHhFQSwweDc4LAorICAgIDB4MjQsMHg0MSwweEMzLDB4
MzgsMHhEQSwweEQ0LDB4NUUsMHhERiwweEUzLDB4MzgsMHhDMiwweDMwLDB4RUUsMHg2MywweEMx
LDB4MDAsCisgICAgMHhFMywweDM4LDB4QTIsMHgzMCwweDU1LDB4OUIsMHhBQSwweDgwLDB4MDMs
MHgzOSwweEMzLDB4MzgsMHhBNSwweDJELDB4MkYsMHgzRiwKKyAgICAweDQ0LDB4NDEsMHgwMyww
eDM5LDB4NzUsMHhBQiwweDJCLDB4MkIsMHg4NSwweDUxLDB4MDMsMHgzOSwweEY1LDB4RUEsMHhD
MCwweDIyLAorICAgIDB4NDQsMHg0OSwweDAzLDB4NDEsMHhEQywweDVFLDB4NUUsMHg1QiwweDI0
LDB4NDEsMHgwMywweDM5LDB4RUEsMHhFRiwweEI5LDB4QzEsCisgICAgMHgwMywweDQxLDB4RTMs
MHgzOCwweEJFLDB4RjgsMHhFQywweEFBLDB4MjQsMHg0MSwweEUzLDB4MzgsMHhGRiwweEFGLDB4
OEIsMHgwQiwKKyAgICAweDI0LDB4NDksMHhFMywweDM4LDB4MDUsMHhGRiwweERFLDB4NTYsMHgy
NCwweDQxLDB4RTMsMHgzOCwweDgwLDB4QkIsMHhGOSwweDZGLAorICAgIDB4NDQsMHg0MSwweDA0
LDB4NDEsMHhGNSwweEY1LDB4OUQsMHg5RiwweDQ0LDB4NDEsMHgwMywweDQxLDB4RDUsMHg1RSww
eEZFLDB4MkEsCisgICAgMHg0NCwweDUxLDB4MDMsMHg0MSwweEY3LDB4QkYsMHgyRiwweDNGLDB4
NDQsMHg0OSwweDAzLDB4NDEsMHhENSwweEZFLDB4RTIsMHhBMCwKKyAgICAweDI0LDB4NDksMHhF
MywweDQwLDB4NTYsMHg5NywweEFFLDB4QUUsMHg0NCwweDQ5LDB4RTMsMHg0MCwweDBCLDB4QUEs
MHhFRSwweDdFLAorICAgIDB4NDQsMHg0OSwweDAzLDB4NDEsMHhBOCwweEVBLDB4QUYsMHhFRCww
eDIzLDB4NDksMHhFMiwweDQwLDB4ODAsMHhBMCwweEU4LDB4NTUsCisgICAgMHgyMywweDQ5LDB4
RTIsMHgzOCwweEFBLDB4RkEsMHhGQiwweEJGLDB4ODUsMHg1OSwweDIzLDB4NDEsMHgwRCwweEJE
LDB4RkQsMHhBNSwKKyAgICAweEE1LDB4NTksMHg2NCwweDQ5LDB4MjIsMHgyQSwweEFCLDB4RkQs
MHhDNiwweDU5LDB4NjQsMHg1MSwweEVBLDB4QUEsMHgzRSwweDZGLAorICAgIDB4QTUsMHg1OSww
eDQ0LDB4NDksMHgwQiwweDBCLDB4QUEsMHhCRCwweDg1LDB4NTEsMHg0NCwweDQ5LDB4OTgsMHhE
OCwweERDLDB4NkYsCisgICAgMHhBNSwweDUxLDB4MjQsMHg0OSwweDI4LDB4Q0EsMHhGRiwweERG
LDB4QzYsMHg1OSwweDQ0LDB4NDksMHhBMCwweEVCLDB4RkYsMHg1RiwKKyAgICAweDg1LDB4NTEs
MHgyMywweDQxLDB4RkUsMHhGRSwweDcyLDB4NUUsMHg4NSwweDUxLDB4MjMsMHg0OSwweEFGLDB4
QUYsMHhCRiwweEFELAorICAgIDB4NjUsMHg0OSwweDIzLDB4NDEsMHhGNCwweEQ4LDB4RDYsMHg1
RiwweDg1LDB4NTEsMHgyMywweDQxLDB4OEYsMHhCQiwweEFGLDB4RjUsCisgICAgMHhBNSwweDUx
LDB4NDQsMHg0OSwweDNELDB4RkYsMHhENywweDU3LDB4QTUsMHg1MSwweDQ0LDB4NDksMHhCOCww
eEE4LDB4QUYsMHhENSwKKyAgICAweEE2LDB4NTEsMHgyMywweDQxLDB4REYsMHhGRSwweEZDLDB4
REYsMHg2NCwweDQ5LDB4MjMsMHg0MSwweDVFLDB4RkMsMHhGQSwweDU3LAorICAgIDB4NDQsMHg0
OSwweDAzLDB4NDEsMHgyRSwweEI3LDB4OTQsMHg5QSwweEE0LDB4NTEsMHg0NCwweDQ5LDB4QTcs
MHgyRiwweEE3LDB4RUYsCisgICAgMHhFNSwweDYxLDB4ODQsMHg1MSwweDNELDB4MjksMHhBRCww
eDNGLDB4MjYsMHg2QSwweEU1LDB4NjEsMHhCOSwweEVBLDB4QTEsMHg4OSwKKyAgICAweEE4LDB4
N0EsMHhDNSwweDYxLDB4MkEsMHhCRCwweDU1LDB4NTUsMHhBNywweDgyLDB4MDYsMHg2QSwweDAy
LDB4QUIsMHhCNywweEY1LAorICAgIDB4RTgsMHg4QSwweDg3LDB4N0EsMHg4RiwweDJBLDB4ODIs
MHhCNSwweDA5LDB4OEIsMHhBNywweDdBLDB4OEUsMHhGRiwweEZFLDB4N0EsCisgICAgMHgxMCww
eENELDB4MDgsMHg4QiwweDJELDB4MkQsMHhCRCwweEI1LDB4RjQsMHhFNSwweDMxLDB4Q0QsMHgw
MiwweDA5LDB4MEQsMHgyRCwKKyAgICAweDM1LDB4RTYsMHhEMywweERELDB4MEIsMHhBNSwweEJG
LDB4MEEsMHg1NSwweEVFLDB4MzUsMHhFNiwweDNCLDB4QkYsMHgwOSwweEFBLAorICAgIDB4NTUs
MHhFRSwweDE0LDB4RTYsMHg4MCwweEUwLDB4RkEsMHg1RSwweDM1LDB4RTYsMHhEMywweERELDB4
MjAsMHhBOCwweDZBLDB4NUYsCisgICAgMHhENCwweERELDB4RjAsMHhDNCwweDc4LDB4NzgsMHg1
RSwweDVFLDB4MzEsMHhDRCwweEYwLDB4QzQsMHhDRiwweEE5LDB4MjMsMHgyMiwKKyAgICAweDUx
LDB4Q0QsMHgxMCwweEM1LDB4RjcsMHhCNSwweEI3LDB4QTcsMHhGNCwweERELDB4NTEsMHhDRCww
eDNELDB4MzUsMHgzNSwweEJELAorICAgIDB4NTYsMHhFRSwweEY0LDB4REQsMHgwMiwweDAyLDB4
MDMsMHgwOSwweDk2LDB4RUUsMHg1NSwweEVFLDB4RDUsMHhGRCwweEVGLDB4QjUsCisgICAgMHg5
NiwweEVFLDB4NTYsMHhFRSwweEI3LDB4MkIsMHgyQSwweDAyLDB4QjYsMHhGNiwweDc2LDB4RUUs
MHhBRiwweEFCLDB4QUEsMHhBQiwKKyAgICAweDk2LDB4RUUsMHg3NiwweEVFLDB4ODAsMHg3MCww
eEMwLDB4RUEsMHg1NSwweEVFLDB4OTYsMHhFNiwweEJGLDB4QUIsMHhFQSwweEFCLAorICAgIDB4
NzUsMHhFRSwweDU1LDB4RTYsMHg2RiwweEUwLDB4ODAsMHgyRSwweDc1LDB4RUUsMHg1NSwweEU2
LDB4QUQsMHhDNywweEZGLDB4N0YsCisgICAgMHg3NSwweEVFLDB4NTUsMHhFNiwweEFBLDB4RjAs
MHg3QiwweDdGLDB4NzYsMHhFRSwweDM1LDB4RTYsMHhCMiwweEZBLDB4QkIsMHhCQiwKKyAgICAw
eDc2LDB4RUUsMHgzNSwweEU2LDB4QTcsMHhENywweDZFLDB4RUIsMHg3NiwweEVFLDB4NTUsMHhF
NiwweDIwLDB4MjIsMHgyRiwweDNELAorICAgIDB4NzYsMHhFRSwweDU1LDB4RTYsMHhFMiwweDVG
LDB4QUUsMHhDRSwweDM1LDB4RUUsMHg1NSwweEU2LDB4NzUsMHhGNSwweEZGLDB4NzcsCisgICAg
MHg3NSwweEVFLDB4NTUsMHhFNiwweDVGLDB4NUYsMHhFRiwweEZELDB4NzUsMHhFRSwweDM1LDB4
RTYsMHg2QiwweEZBLDB4RUEsMHhBQiwKKyAgICAweDU1LDB4RTYsMHhGNCwweERELDB4NzIsMHhB
MiwweDgwLDB4QTAsMHg1NiwweEVFLDB4RDMsMHhENSwweDc3LDB4MkEsMHgwQSwweDg4LAorICAg
IDB4NTYsMHhFRSwweDkyLDB4RDUsMHg1NywweEZFLDB4RTIsMHgwMCwweDM1LDB4RTYsMHg5Miww
eEQ1LDB4RDUsMHg3NywweEJCLDB4MjAsCisgICAgMHg4NCwweDYxLDB4NDMsMHg1OSwweDdFLDB4
RUEsMHhDQiwweEFBLDB4NjQsMHg1OSwweDIzLDB4NTksMHgwMywweDAwLDB4MDgsMHhGQywKKyAg
ICAweDg0LDB4NTksMHg0MywweDU5LDB4REYsMHhCNSwweDE1LDB4RjUsMHhBNCwweDYxLDB4NDMs
MHg1OSwweDdCLDB4Q0EsMHhFRiwweEZGLAorICAgIDB4ODQsMHg2MSwweDQzLDB4NTksMHhFMiww
eDNCLDB4QjcsMHg3NywweEE0LDB4NjEsMHg0MywweDU5LDB4RjMsMHhCRiwweEZFLDB4RTYsCisg
ICAgMHg4NCwweDYxLDB4NjMsMHg1OSwweDU1LDB4OTcsMHhGRCwweENBLDB4QTQsMHg2MSwweDYz
LDB4NTksMHhCMiwweEY3LDB4N0YsMHg3QSwKKyAgICAweDgzLDB4NTksMHgyMywweDUxLDB4QTgs
MHhBRSwweEZFLDB4QkQsMHg4NCwweDU5LDB4NDMsMHg1MSwweEFFLDB4QkYsMHhGRCwweDc1LAor
ICAgIDB4QzQsMHg2MSwweDIyLDB4NTEsMHgwQSwweEZGLDB4NUYsMHg3RiwweDI2LDB4NzIsMHg0
MywweDUxLDB4MDIsMHhBNywweEQ1LDB4NTUsCisgICAgMHg4NywweDdBLDB4NDQsMHg1MSwweDAy
LDB4QUEsMHhCRCwweDc1LDB4ODcsMHg3QSwweEE1LDB4NjEsMHgwQSwweDIwLDB4QUIsMHhGRCwK
KyAgICAweDg3LDB4N0EsMHgyNiwweDcyLDB4MDgsMHg4MiwweDBCLDB4QkQsMHhBNywweDdBLDB4
NDYsMHg3QSwweEZDLDB4RUEsMHhCQSwweDdFLAorICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhD
QSwweENDLDB4OEIsMHhFOSwweEE3LDB4N0EsMHg2NiwweDdBLDB4RkUsMHg3NywweDZGLDB4NzEs
CisgICAgMHg4NywweDdBLDB4NDYsMHg3MiwweEFCLDB4M0MsMHgxQywweEJBLDB4QTcsMHg4Miww
eDQ2LDB4NzIsMHhFQSwweEVBLDB4RUEsMHhEQiwKKyAgICAweEE3LDB4ODIsMHg2NywweDdBLDB4
REQsMHg3NywweEZBLDB4NEIsMHg2NiwweDgyLDB4ODcsMHg3QSwweEQ1LDB4OUYsMHhERiwweEI2
LAorICAgIDB4QTcsMHg4MiwweDY3LDB4N0EsMHhGRCwweEI5LDB4QUYsMHhFQiwweEE3LDB4ODIs
MHg2NywweDdBLDB4NDMsMHhBQiwweDJCLDB4QUIsCisgICAgMHhBNywweDgyLDB4NjcsMHg3QSww
eEU5LDB4MEIsMHhBRiwweEZELDB4QTcsMHg4MiwweDY2LDB4N0EsMHhGRSwweDVFLDB4M0YsMHgz
RSwKKyAgICAweEE3LDB4ODIsMHg2NiwweDdBLDB4OTcsMHhGNywweEJBLDB4RDgsMHhBNywweDgy
LDB4NjcsMHg3QSwweEI4LDB4RkEsMHhCRSwweEJFLAorICAgIDB4QUIsMHhBMywweDg3LDB4N0Es
MHhCNSwweDJELDB4MkIsMHgwQiwweDBDLDB4QUMsMHhBQiwweEEzLDB4OEQsMHhBRiwweEJBLDB4
QUIsCisgICAgMHhFQywweEFCLDB4QUIsMHhBMywweDIwLDB4QjAsMHhBQSwweEZELDB4RUMsMHhB
QiwweENCLDB4QTMsMHg1RSwweDBCLDB4RUQsMHg0RCwKKyAgICAweENCLDB4QTMsMHgwOCwweDhC
LDB4NjgsMHg2OCwweDYwLDB4RTgsMHhBNywweDgyLDB4QTUsMHg1OSwweDVFLDB4NUMsMHg3Qyww
eDY4LAorICAgIDB4ODQsMHg1MSwweDQ0LDB4NTEsMHhFNCwweDM4LDB4OUUsMHg1RSwweDY0LDB4
NDksMHgwMiwweDQxLDB4NzgsMHhFOCwweEYwLDB4NjgsCisgICAgMHgwMywweDQxLDB4QzIsMHgz
OCwweEUyLDB4Q0EsMHhFOCwweEMwLDB4RTIsMHgzOCwweEMyLDB4MzAsMHg1NywweDU2LDB4NzYs
MHg1MiwKKyAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4MjcsMHgwQSwweDJDLDB4MjQsMHhDMyww
eDM4LDB4QTIsMHgyOCwweEJBLDB4QkEsMHhCMCwweEFBLAorICAgIDB4RTMsMHgzMCwweEEyLDB4
MzAsMHhGRiwweEIyLDB4QTAsMHhFMiwweEUzLDB4MzAsMHhBMiwweDMwLDB4QUIsMHhFRSwweEVF
LDB4QUEsCisgICAgMHg2NSwweDQ5LDB4QzMsMHgzMCwweDU1LDB4RDUsMHhCRCwweDJCLDB4NjUs
MHg0OSwweEUzLDB4MzgsMHhGRCwweEZGLDB4RUEsMHhBMCwKKyAgICAweDQ0LDB4NDEsMHhFMyww
eDM4LDB4NzcsMHhGRSwweEZCLDB4QTIsMHgyNCwweDQxLDB4MDMsMHgzOSwweEY3LDB4RkIsMHgy
QywweDI4LAorICAgIDB4NDQsMHg0MSwweDAzLDB4NDEsMHhGMiwweEZBLDB4RUYsMHg4RCwweDQ0
LDB4NDEsMHgwMywweDM5LDB4OEIsMHhFRSwweEI3LDB4QTcsCisgICAgMHg0NCwweDQxLDB4RTMs
MHgzOCwweEY2LDB4QUEsMHhBQSwweDBBLDB4NDQsMHg0MSwweDAzLDB4NDEsMHhGMywweDYyLDB4
NkQsMHg1RiwKKyAgICAweDI0LDB4NDEsMHhDMiwweDM4LDB4MDIsMHhFQSwweEZBLDB4N0UsMHgw
MywweDQxLDB4QzMsMHgzOCwweEU4LDB4QkYsMHgyRiwweDBCLAorICAgIDB4ODUsMHg0OSwweEUz
LDB4MzgsMHgyOSwweEFGLDB4QUIsMHhCRiwweDg1LDB4NDksMHgwMywweDQxLDB4RjgsMHg3QSww
eEZBLDB4RkEsCisgICAgMHg0NCwweDQ5LDB4RTMsMHgzOCwweDU1LDB4RkYsMHhFQSwweDJBLDB4
NjQsMHg0OSwweEUzLDB4MzgsMHhERCwweDk1LDB4RjUsMHhGOCwKKyAgICAweDQzLDB4NDksMHhF
MywweDM4LDB4NzUsMHg3RCwweEZFLDB4OEEsMHgyMywweDQxLDB4RTMsMHgzOCwweDdELDB4Rjcs
MHhFMiwweDgwLAorICAgIDB4MjQsMHg0MSwweEMyLDB4MzAsMHg4MywweEVBLDB4N0YsMHhCNyww
eDY0LDB4NDksMHgwMywweDM5LDB4MDMsMHgyOSwweEJELDB4QjUsCisgICAgMHg0NCwweDQxLDB4
MDMsMHg0MSwweDU2LDB4NUMsMHhGNywweEVGLDB4MjQsMHg0MSwweEMyLDB4MzAsMHg4MiwweEYy
LDB4NzgsMHhGRSwKKyAgICAweDI0LDB4NDEsMHhDMywweDM4LDB4QUMsMHhCRiwweEJELDB4QkYs
MHgyNCwweDQxLDB4RTMsMHgzOCwweDBCLDB4OEUsMHgyOSwweDBGLAorICAgIDB4MjQsMHg0MSww
eEUzLDB4MzgsMHhFNiwweDg4LDB4ODAsMHgwMCwweDI0LDB4NDEsMHhFMywweDM4LDB4OEYsMHhB
RiwweEFGLDB4RkIsCisgICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweEY1LDB4RkQsMHgwRCwweDI5
LDB4ODUsMHg1MSwweDI0LDB4NDEsMHhGNSwweEQ1LDB4QkUsMHgyQSwKKyAgICAweDg1LDB4NTEs
MHgwMywweDQxLDB4RjcsMHhGRiwweEVFLDB4QTAsMHg2NCwweDQ5LDB4MjMsMHg0MSwweDdFLDB4
NTIsMHhEQiwweDc1LAorICAgIDB4MjQsMHg0OSwweDAzLDB4NDEsMHgzRCwweEZELDB4NjksMHhD
MiwweDY1LDB4NTEsMHgwMywweDQxLDB4RkYsMHhBRCwweEE5LDB4QUEsCisgICAgMHg0NCwweDQ5
LDB4MDMsMHg0MSwweEVCLDB4RkUsMHg2OCwweEZFLDB4MjQsMHg0OSwweEMyLDB4MzgsMHhGNyww
eEY2LDB4RUEsMHhFQSwKKyAgICAweDAzLDB4NDEsMHhFMiwweDQwLDB4QTUsMHgwNSwweDI1LDB4
M0EsMHg4NSwweDUxLDB4MDMsMHg0MSwweEFELDB4M0QsMHgyRCwweDM1LAorICAgIDB4QTUsMHg1
MSwweDY0LDB4NTEsMHhBRiwweEUyLDB4NDMsMHhFQSwweDg1LDB4NTEsMHgyMywweDQ5LDB4NDIs
MHhDOCwweDY4LDB4QTgsCisgICAgMHg0NCwweDQ5LDB4MDMsMHg0MSwweEFBLDB4N0QsMHhENSww
eEZBLDB4NDQsMHg0OSwweDAzLDB4NDEsMHhBNiwweDU3LDB4RjcsMHg5NywKKyAgICAweDQ0LDB4
NDksMHgwMywweDQxLDB4QTgsMHhCOSwweDdGLDB4NUYsMHg2NCwweDQ5LDB4MDMsMHg0MSwweEEw
LDB4MkYsMHhBRCwweDU1LAorICAgIDB4NDQsMHg0OSwweEUzLDB4MzgsMHhGOCwweEU4LDB4QUEs
MHhERiwweDY0LDB4NDksMHgwMywweDQxLDB4MEYsMHgyOSwweDI3LDB4RjUsCisgICAgMHg2NCww
eDQ5LDB4MjMsMHg0MSwweEZFLDB4QkYsMHhBMCwweEEwLDB4NjQsMHg0OSwweDI0LDB4NDEsMHhC
NywweEZGLDB4QkUsMHhGQSwKKyAgICAweDY0LDB4NDksMHgyMywweDQxLDB4RkUsMHg5NywweEY3
LDB4NUEsMHg4NSwweDQ5LDB4MjMsMHg0MSwweEVELDB4Q0UsMHhGRiwweDdELAorICAgIDB4NDQs
MHg0MSwweDAzLDB4NDEsMHhBQSwweDc4LDB4N0EsMHg2RSwweDIzLDB4NDEsMHhFMywweDM4LDB4
MEEsMHhBRiwweDhBLDB4MDAsCisgICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweEFFLDB4ODksMHgy
RCwweEFCLDB4QTQsMHg1MSwweDQ0LDB4NDksMHhCRCwweEY1LDB4OUYsMHgyOSwKKyAgICAweDA2
LDB4NkEsMHg4NCwweDUxLDB4MkIsMHhBRiwweDhELDB4QUYsMHg0NywweDcyLDB4RTUsMHg2MSww
eEFELDB4Q0IsMHgyQiwweDBCLAorICAgIDB4NjcsMHg3MiwweEU2LDB4NjEsMHg1NywweDdFLDB4
RjIsMHhBMiwweDY2LDB4NzIsMHhFNiwweDY5LDB4M0QsMHhBRCwweEJGLDB4MkUsCisgICAgMHhD
OCwweDgyLDB4NDYsMHg3MiwweDI5LDB4MjksMHhBRCwweDJELDB4RTgsMHg4MiwweEE4LDB4ODIs
MHg1QywweDdFLDB4NkIsMHgyNywKKyAgICAweDJDLDB4QUMsMHhDOCwweDgyLDB4M0QsMHhCNSww
eEY1LDB4RDUsMHhCMywweERELDB4QUIsMHg5QiwweDAyLDB4MEIsMHgwOSwweDJELAorICAgIDB4
NTUsMHhFRSwweEY0LDB4RTUsMHgwQSwweDJGLDB4RUYsMHhGRCwweDU1LDB4RUUsMHhGNCwweEU1
LDB4MjgsMHhBMiwweEZCLDB4NUYsCisgICAgMHgzNSwweEU2LDB4QjMsMHhENSwweEEwLDB4RUEs
MHg3RSwweDdGLDB4RjQsMHhERCwweDUyLDB4Q0QsMHhFOCwweEU4LDB4N0EsMHg3QSwKKyAgICAw
eDUyLDB4Q0QsMHhGMCwweEM0LDB4RkMsMHhGQSwweDdFLDB4RkYsMHgzMSwweENELDB4MTAsMHhD
NSwweEI1LDB4QUYsMHgwOSwweDgzLAorICAgIDB4NTEsMHhDRCwweDMxLDB4QzUsMHhCNSwweEVC
LDB4QkYsMHg2OSwweEIyLDB4RDUsMHgzMCwweENELDB4MkYsMHhBRiwweEE3LDB4QkQsCisgICAg
MHg1NiwweEVFLDB4RDMsMHhERCwweDBCLDB4MEQsMHgyRCwweDM1LDB4OTYsMHhFRSwweDU2LDB4
RUUsMHhCNywweEFCLDB4QUIsMHgyQiwKKyAgICAweEI2LDB4RjYsMHg3NiwweEVFLDB4NzcsMHhG
RCwweEZGLDB4MkYsMHhCNiwweEY2LDB4OTYsMHhFRSwweERELDB4QjUsMHhCNywweEY5LAorICAg
IDB4OTYsMHhFRSwweDc2LDB4RUUsMHg0OCwweEY4LDB4NUMsMHg4QSwweDk2LDB4RUUsMHgzNSww
eEU2LDB4QUEsMHhFQSwweDJBLDB4QTAsCisgICAgMHg1NSwweEVFLDB4NzUsMHhFNiwweEVBLDB4
RUUsMHhFQSwweEFGLDB4NTUsMHhFRSwweDc1LDB4RTYsMHhBQSwweEJBLDB4QUEsMHhBMiwKKyAg
ICAweDc2LDB4RUUsMHgzNSwweEU2LDB4QUQsMHhBQSwweEJCLDB4RkUsMHg1NSwweEVFLDB4NTUs
MHhFNiwweEZGLDB4RUYsMHhGRiwweEZGLAorICAgIDB4NTYsMHhFRSwweDU1LDB4RTYsMHhGRiww
eEZGLDB4QkYsMHg5QiwweDc1LDB4RUUsMHgzNSwweEU2LDB4OEUsMHhGQSwweEZFLDB4QUEsCisg
ICAgMHg1NiwweEVFLDB4NzUsMHhFNiwweDlFLDB4QUEsMHhBQSwweEVCLDB4NzYsMHhFRSwweDU1
LDB4RTYsMHhERiwweDczLDB4RkEsMHhBMCwKKyAgICAweDk2LDB4RUUsMHg1NSwweEU2LDB4NTUs
MHg1NSwweEZELDB4QTgsMHg5NiwweEVFLDB4MzUsMHhFNiwweERGLDB4RkYsMHhGQSwweDgyLAor
ICAgIDB4OTYsMHhFRSwweDM1LDB4RTYsMHg1RiwweERGLDB4QkEsMHgwQiwweDc2LDB4RUUsMHgz
NSwweEU2LDB4RkYsMHhCRiwweDIwLDB4MDAsCisgICAgMHg3NiwweEVFLDB4NTYsMHhFNiwweDc1
LDB4OEYsMHgwQiwweEFBLDB4NzYsMHhFRSwweDM1LDB4RTYsMHg1NSwweEZGLDB4RTgsMHg1QywK
KyAgICAweDYzLDB4NTksMHgyMywweDUxLDB4MDAsMHhBMywweEFCLDB4QkYsMHg2NCwweDU5LDB4
MjMsMHg1MSwweDlFLDB4QjMsMHgyRSwweDBGLAorICAgIDB4ODUsMHg2MSwweDQ0LDB4NTksMHhG
OSwweERBLDB4RUYsMHg4QSwweDg0LDB4NTksMHg0MywweDU5LDB4QUYsMHhDRCwweEI1LDB4Rjcs
CisgICAgMHg4NCwweDYxLDB4NDMsMHg1OSwweERBLDB4ODIsMHg2RSwweEFCLDB4ODQsMHg1OSww
eDQzLDB4NTksMHhENCwweEJELDB4OUEsMHhCOCwKKyAgICAweDg0LDB4NTksMHg0MywweDU5LDB4
MjAsMHg4QiwweDg4LDB4NjgsMHg4NCwweDU5LDB4MjIsMHg1MSwweENBLDB4N0EsMHg3RSwweDU3
LAorICAgIDB4NDMsMHg1MSwweDIyLDB4NTEsMHg4QiwweERGLDB4RUEsMHg0OCwweDYzLDB4NTEs
MHgyMiwweDUxLDB4REUsMHg1RiwweEVCLDB4NkIsCisgICAgMHg0MywweDUxLDB4MDIsMHg0OSww
eEJBLDB4QUIsMHg3RiwweEQ5LDB4NDQsMHg1OSwweDAzLDB4NDksMHg5NywweDNGLDB4QTcsMHgy
RiwKKyAgICAweDY0LDB4NTEsMHgwMiwweDQ5LDB4MEIsMHhBRSwweEVBLDB4OUEsMHg4NSwweDYx
LDB4MjMsMHg1MSwweDJBLDB4OUYsMHhCRiwweDhELAorICAgIDB4MjYsMHg3MiwweDQzLDB4NTks
MHgwMiwweEVCLDB4RjUsMHhGRCwweDY2LDB4N0EsMHg4NCwweDYxLDB4ODAsMHhBRiwweEY1LDB4
NTUsCisgICAgMHg2NiwweDdBLDB4QTQsMHg2MSwweDAwLDB4MEEsMHgyQiwweEY1LDB4ODcsMHg3
QSwweDI2LDB4N0EsMHgyMiwweEVBLDB4MEEsMHhCOSwKKyAgICAweEE3LDB4ODIsMHg2NywweDdB
LDB4RkYsMHg3RSwweDc3LDB4RDcsMHg4NywweDdBLDB4NjcsMHg3QSwweDI1LDB4MDAsMHgyQiww
eDU5LAorICAgIDB4QTcsMHg4MiwweDY2LDB4N0EsMHhFQiwweDlBLDB4RjgsMHhFQiwweEE4LDB4
ODIsMHg2NywweDdBLDB4QTEsMHg2RiwweEE5LDB4MEYsCisgICAgMHhBOCwweDgyLDB4NDYsMHg3
QSwweEMyLDB4ODcsMHgyRSwweEZFLDB4QTgsMHg4MiwweDY2LDB4N0EsMHg3RSwweEVDLDB4QTgs
MHhBQSwKKyAgICAweEM4LDB4ODIsMHg4NywweDdBLDB4NUQsMHhGQiwweEFGLDB4QjUsMHhBNyww
eDgyLDB4ODcsMHg3QSwweEI3LDB4REEsMHg5NiwweDE2LAorICAgIDB4QzgsMHg4MiwweDY2LDB4
N0EsMHhEQywweEZFLDB4RkUsMHhFRSwweDhCLDB4QTMsMHg4NywweDgyLDB4RDUsMHhGNSwweDlE
LDB4M0YsCisgICAgMHhFQywweEFCLDB4NEEsMHg5MywweDJELDB4MDksMHg4QiwweEEyLDB4RUIs
MHhBQiwweEFCLDB4QTMsMHhBQSwweEJFLDB4NzYsMHg1RiwKKyAgICAweENDLDB4QTMsMHhBQiww
eEEzLDB4OTUsMHg5NSwweDZFLDB4QUIsMHhFQiwweEFCLDB4QUIsMHhBMywweENBLDB4QUQsMHhE
OSwweDU3LAorICAgIDB4Q0IsMHhBMywweDA4LDB4OEIsMHhFMCwweEMwLDB4NjgsMHg2MCwweEU4
LDB4ODIsMHg4NCwweDU5LDB4RjgsMHhGOCwweDc4LDB4N0UsCisgICAgMHg4NCwweDU5LDB4MjMs
MHg0OSwweDdDLDB4RDgsMHg3QSwweDUwLDB4NDMsMHg0OSwweEUyLDB4NDAsMHhFMCwweEU4LDB4
QkYsMHg3RiwKKyAgICAweDQ0LDB4NDksMHhFMiwweDM4LDB4N0UsMHhBQSwweDhBLDB4MEEsMHgw
MywweDQxLDB4QzIsMHgzMCwweDU3LDB4N0YsMHg3RSwweDc4LAorICAgIDB4QzIsMHgzMCwweEEx
LDB4MzAsMHgwRSwweDBCLDB4M0YsMHgxNSwweEUzLDB4MzgsMHhBMiwweDI4LDB4RUYsMHhCQSww
eEY4LDB4RjAsCisgICAgMHhDMiwweDMwLDB4QTIsMHgyOCwweDAyLDB4MEEsMHgyQSwweDAzLDB4
MDMsMHgzOSwweEMyLDB4MzAsMHhBMywweDNCLDB4QkYsMHhCRiwKKyAgICAweDQ0LDB4NDEsMHgw
MywweDM5LDB4QUIsMHhERCwweEJGLDB4MkIsMHg0NCwweDQ5LDB4MjQsMHg0MSwweEMyLDB4NkQs
MHhBQiwweDAyLAorICAgIDB4NDQsMHg0OSwweDI0LDB4NDEsMHhDOSwweEVBLDB4RTAsMHhDMCww
eDQ0LDB4NDEsMHgwMywweDM5LDB4QUEsMHhFQiwweDdGLDB4RUUsCisgICAgMHg0NCwweDQxLDB4
MDMsMHg0MSwweDM2LDB4QkMsMHgyRCwweDAwLDB4NDQsMHg0OSwweEUzLDB4MzgsMHhBQSwweEJB
LDB4NjgsMHhBQSwKKyAgICAweDQ1LDB4NDEsMHhFMywweDM4LDB4OEEsMHhCRSwweDVGLDB4NUYs
MHgyNCwweDQxLDB4QzIsMHgzOCwweEY4LDB4RTgsMHhGQSwweEE3LAorICAgIDB4NDQsMHg0OSww
eEUzLDB4MzgsMHhGNSwweEQ1LDB4QTUsMHgwRiwweDY0LDB4NDksMHhFMywweDM4LDB4RjcsMHhC
RiwweEFBLDB4QUEsCisgICAgMHg0NCwweDQ5LDB4MDMsMHg0MSwweDE3LDB4OUEsMHg1OCwweEZB
LDB4NjQsMHg1MSwweDAzLDB4NDEsMHhGQSwweEEyLDB4MEYsMHgwRCwKKyAgICAweDg1LDB4NTEs
MHgyNCwweDQ5LDB4QUQsMHhCRiwweEJGLDB4M0IsMHg2NCwweDQ5LDB4MjQsMHg0MSwweDdFLDB4
RUMsMHg3OCwweDcwLAorICAgIDB4ODUsMHg1MSwweDIzLDB4NDEsMHhGQiwweEVBLDB4MkQsMHhB
NSwweDg1LDB4NTEsMHgyMywweDQxLDB4NTcsMHg3RiwweEVBLDB4Q0EsCisgICAgMHgyNCwweDQx
LDB4QzIsMHgzOCwweEY2LDB4QjcsMHhGRSwweEU4LDB4NDQsMHg0MSwweEMyLDB4MzgsMHgwQiww
eDhBLDB4MEIsMHhBOSwKKyAgICAweDQ0LDB4NDEsMHgyMywweDQxLDB4NTcsMHg1RiwweEVCLDB4
NTUsMHgyMywweDQxLDB4RTMsMHgzOCwweERDLDB4NjgsMHhGQSwweEZFLAorICAgIDB4MjQsMHg0
MSwweEUzLDB4MzgsMHhCRCwweERGLDB4NzksMHhGQSwweDI0LDB4NDEsMHgwMywweDM5LDB4MEEs
MHgwOSwweDBELDB4MDUsCisgICAgMHg0NSwweDQ5LDB4RTMsMHgzOCwweEVBLDB4NkEsMHg3Qiww
eEY3LDB4MDMsMHg0MSwweEUzLDB4MzgsMHgzNywweDA5LDB4OEQsMHgyRiwKKyAgICAweDg1LDB4
NDksMHgwMywweDQxLDB4MjUsMHgzRCwweEJELDB4MjcsMHhDNiwweDU5LDB4NjQsMHg0OSwweEZE
LDB4QTksMHhDQiwweDAzLAorICAgIDB4QTUsMHg1MSwweDIzLDB4NDEsMHhGMCwweDdFLDB4REUs
MHhGQSwweDQ0LDB4NDksMHhFMiwweDQwLDB4REEsMHg1RSwweDVDLDB4RDgsCisgICAgMHgyNCww
eDQ5LDB4RTIsMHg0MCwweDJCLDB4MzcsMHgzRiwweEJCLDB4ODUsMHg1MSwweDI0LDB4NDksMHhG
RiwweEZELDB4QUEsMHg4MSwKKyAgICAweDY1LDB4NTEsMHgwMywweDQxLDB4N0EsMHhDMiwweEU4
LDB4RTAsMHg0NCwweDQ5LDB4MDMsMHg0MSwweDdFLDB4REUsMHhBRiwweEFBLAorICAgIDB4NjQs
MHg0OSwweDAzLDB4NDEsMHhENSwweDc3LDB4RkEsMHhFMiwweDg1LDB4NTEsMHgyMywweDQ5LDB4
MUQsMHhBQiwweEFELDB4QUQsCisgICAgMHg4NSwweDUxLDB4NDQsMHg0OSwweEU4LDB4N0EsMHhE
QywweEUyLDB4NjQsMHg0OSwweDAzLDB4NDEsMHhGRiwweEZGLDB4N0IsMHhGQywKKyAgICAweDY0
LDB4NDksMHgwMywweDQxLDB4QUIsMHgyMywweDJCLDB4OUEsMHg2NCwweDQ5LDB4MDMsMHg0MSww
eEQ3LDB4RkUsMHg4OCwweEFCLAorICAgIDB4MjMsMHg0MSwweDAzLDB4MzksMHg4MCwweDgyLDB4
RUUsMHhDNCwweDIzLDB4NDEsMHhFMywweDM4LDB4QUUsMHg5RiwweEZCLDB4NzgsCisgICAgMHgy
MywweDQxLDB4QzIsMHgzOCwweEI4LDB4QkYsMHhFRiwweEE1LDB4NjUsMHg0OSwweEUzLDB4Mzgs
MHhCRiwweDM3LDB4RjUsMHhENywKKyAgICAweDg1LDB4NDksMHgyNCwweDQxLDB4RkEsMHgyQiww
eEFGLDB4RjUsMHg2NCwweDQ5LDB4MDMsMHg0MSwweDI4LDB4QUEsMHhFQSwweEZBLAorICAgIDB4
NjQsMHg0OSwweDAzLDB4MzksMHhCMiwweEZBLDB4N0EsMHg3RCwweDQ0LDB4NDEsMHhFMiwweDM4
LDB4MkEsMHg4OCwweEFGLDB4QjcsCisgICAgMHg0NCwweDQxLDB4MDMsMHg0MSwweEZFLDB4RTIs
MHhFRSwweDY1LDB4NDQsMHg0OSwweDAzLDB4NDEsMHhBOSwweDBCLDB4MDcsMHhCNSwKKyAgICAw
eEE1LDB4NTEsMHgyMywweDQxLDB4RkQsMHhCQiwweDJCLDB4QUIsMHhDNSwweDU5LDB4NDQsMHg0
OSwweEE5LDB4MjUsMHhCOCwweEM4LAorICAgIDB4MjcsMHg2QSwweDg1LDB4NTEsMHhBRiwweDJC
LDB4QkQsMHhGRCwweDY3LDB4NzIsMHhFNiwweDYxLDB4RUIsMHhBQSwweDIxLDB4MjUsCisgICAg
MHhBOCwweDdBLDB4MjYsMHg2QSwweEU1LDB4RkYsMHhBRSwweDBBLDB4QTgsMHg4MiwweDI2LDB4
NkEsMHhENSwweEZGLDB4MEUsMHgyMiwKKyAgICAweEE4LDB4ODIsMHg2NywweDcyLDB4QkYsMHhE
QiwweEZCLDB4NkEsMHhFOSwweDgyLDB4NjcsMHg3QSwweEFGLDB4QUIsMHhBRCwweEFGLAorICAg
IDB4MDksMHg4QiwweEE4LDB4ODIsMHgwQiwweDJBLDB4MTYsMHgzRCwweEVGLDB4QzQsMHgyOSww
eDkzLDB4MkQsMHhCNSwweEI1LDB4RjUsCisgICAgMHhGNCwweEU1LDB4NkUsMHhCNCwweDAyLDB4
MDIsMHgwQiwweDJELDB4MTUsMHhFNiwweEQ0LDB4REQsMHhFOCwweEZBLDB4N0EsMHhGQiwKKyAg
ICAweDE1LDB4RTYsMHhENCwweERELDB4N0YsMHhCRiwweDgzLDB4MDMsMHhENCwweERELDB4MzEs
MHhDNSwweDcwLDB4NzAsMHhEMCwweDU4LAorICAgIDB4MzEsMHhDRCwweEYwLDB4QzQsMHhBQSww
eEFBLDB4RUUsMHg3RCwweDMxLDB4Q0QsMHhGMCwweEJDLDB4QUEsMHhFQSwweDNCLDB4QUQsCisg
ICAgMHg1MSwweENELDB4MTAsMHhDRCwweDgzLDB4MjksMHg2RSwweEFBLDB4NzIsMHhDRCwweDMx
LDB4Q0QsMHhBNywweENGLDB4QkYsMHhBRCwKKyAgICAweDE1LDB4RTYsMHg3MiwweEQ1LDB4MDks
MHgwOSwweDJELDB4MjUsMHg5NiwweEVFLDB4MzUsMHhFNiwweDBCLDB4MkEsMHgwQiwweDA5LAor
ICAgIDB4QjYsMHhGNiwweDc2LDB4RUUsMHgyRSwweEJGLDB4QjksMHhGRiwweEI3LDB4RjYsMHg5
NiwweEVFLDB4QkYsMHhBRiwweEQ1LDB4NTUsCisgICAgMHhCNiwweEY2LDB4NzYsMHhFRSwweEY3
LDB4RkYsMHhGRiwweEFCLDB4OTYsMHhFRSwweDU1LDB4RTYsMHhCMCwweDZBLDB4MkEsMHgwMCwK
KyAgICAweEI2LDB4RjYsMHg1NSwweEU2LDB4RkYsMHhGRiwweEFGLDB4MjIsMHhCNiwweEY2LDB4
NTUsMHhFNiwweEY1LDB4RkYsMHhBQSwweEEyLAorICAgIDB4QjYsMHhGNiwweDU1LDB4RTYsMHg3
NywweEZGLDB4QUEsMHgyMCwweEI2LDB4RjYsMHg3NiwweEVFLDB4RDUsMHhCRiwweEE4LDB4QTIs
CisgICAgMHhCNywweEY2LDB4NzYsMHhFRSwweDU3LDB4QkEsMHhBQSwweEU4LDB4OTYsMHhGNiww
eDc2LDB4RUUsMHgzOSwweEFBLDB4MjgsMHhENywKKyAgICAweEI2LDB4RjYsMHg1NSwweEU2LDB4
QkUsMHg4QSwweEVBLDB4N0UsMHg5NiwweEVFLDB4MzUsMHhFNiwweDIwLDB4MDIsMHgyQSwweDdE
LAorICAgIDB4QjcsMHhGNiwweDE1LDB4RTYsMHgyQSwweEE4LDB4RUEsMHg3RiwweEI3LDB4RjYs
MHgxNSwweERFLDB4QTAsMHhBOCwweEVFLDB4NTUsCisgICAgMHg3NiwweEVFLDB4QjMsMHhENSww
eDAwLDB4MDAsMHhBQSwweDdGLDB4NTYsMHhFRSwweDcyLDB4Q0QsMHgwMCwweDIwLDB4RkEsMHg1
NywKKyAgICAweDU1LDB4RUUsMHg5MywweENELDB4ODAsMHhGRSwweDc3LDB4NTUsMHhGNCwweERE
LDB4NzIsMHhDRCwweEMwLDB4N0IsMHg1NSwweDU1LAorICAgIDB4ODQsMHg1OSwweDIyLDB4NTEs
MHhGRiwweEVBLDB4NjMsMHg3QiwweDY0LDB4NTksMHgyMiwweDUxLDB4M0YsMHgwRiwweDI1LDB4
MkYsCisgICAgMHg4NCwweDYxLDB4NjQsMHg1OSwweEZCLDB4MkEsMHhFOSwweDdGLDB4ODQsMHg2
MSwweDIzLDB4NTEsMHhGQywweEFDLDB4RjgsMHhFMCwKKyAgICAweDg0LDB4NTksMHg0MywweDU5
LDB4QUEsMHhBQiwweDJCLDB4MDcsMHhBNCwweDYxLDB4NDMsMHg1MSwweEFBLDB4QUEsMHg4OCww
eDdFLAorICAgIDB4ODQsMHg1OSwweDIyLDB4NTEsMHg2QSwweEU4LDB4QUYsMHhCOSwweDg0LDB4
NTksMHgyMiwweDUxLDB4RDcsMHhGNywweDNGLDB4RUYsCisgICAgMHg0MywweDUxLDB4MjIsMHg1
MSwweDU4LDB4M0MsMHhEOCwweDIwLDB4NDMsMHg1MSwweDIyLDB4NDksMHg3OCwweDdBLDB4MEQs
MHgyRSwKKyAgICAweDYzLDB4NTksMHgyMiwweDUxLDB4NUQsMHg3NSwweEE3LDB4MkEsMHg2NCww
eDU5LDB4MjMsMHg1MSwweEZELDB4RDksMHhGQSwweEFBLAorICAgIDB4ODQsMHg2MSwweDIzLDB4
NTEsMHg1NywweEY3LDB4RTcsMHhBRiwweDg0LDB4NjEsMHg2NCwweDU5LDB4MTksMHhBOSwweEI5
LDB4ODEsCisgICAgMHhBNCwweDYxLDB4NjQsMHg1OSwweEI1LDB4RUYsMHhGRCwweEZCLDB4ODQs
MHg2MSwweDY0LDB4NTksMHg3QSwweDJFLDB4QjQsMHgxRSwKKyAgICAweEE0LDB4NjEsMHg2NCww
eDU5LDB4RkYsMHg3RCwweDZFLDB4RUIsMHgwNiwweDcyLDB4NjMsMHg1OSwweDBCLDB4RUIsMHhG
RCwweDc1LAorICAgIDB4NjcsMHg3QSwweDYzLDB4NTksMHgwMiwweEFCLDB4RjUsMHg1NywweDY3
LDB4N0EsMHg4NCwweDYxLDB4MDAsMHgwMCwweDBCLDB4RjUsCisgICAgMHg4OCwweDgyLDB4MDYs
MHg3MiwweDA4LDB4OEEsMHhBQSwweEE5LDB4NjcsMHg4MiwweDg3LDB4N0EsMHg3NywweERDLDB4
REUsMHhGQiwKKyAgICAweDg3LDB4ODIsMHg2NywweDdBLDB4NUMsMHhGRiwweEJGLDB4MEIsMHhB
NywweDgyLDB4NjcsMHg3QSwweEFBLDB4QTUsMHhCNiwweEE2LAorICAgIDB4QTcsMHg4MiwweDY3
LDB4N0EsMHgyRSwweDJBLDB4NkIsMHhGRiwweEE3LDB4ODIsMHg4NywweDdBLDB4MkQsMHgwNSww
eEZELDB4N0UsCisgICAgMHgwOCwweDhCLDB4ODcsMHg3QSwweEQ1LDB4RkYsMHhCRiwweDNELDB4
RUMsMHhBQiwweEU4LDB4OEEsMHhBNSwweDJELDB4MkIsMHgwQiwKKyAgICAweEVCLDB4QUIsMHhB
QiwweEEzLDB4NkEsMHhGQSwweEQwLDB4QkYsMHhDQiwweEEzLDB4OEEsMHhBMywweEFBLDB4QkYs
MHhFRiwweEE4LAorICAgIDB4Q0IsMHhBMywweDZDLDB4QTMsMHg4QSwweEE4LDB4OEUsMHhBQSww
eENCLDB4QTMsMHg4QiwweEEzLDB4ODgsMHhFOSwweEFCLDB4OEIsCisgICAgMHhDQiwweEEzLDB4
NDksMHg5MywweDc4LDB4QTIsMHg4OCwweEFBLDB4MjksMHg4QiwweDA2LDB4NkEsMHg1RSwweDc4
LDB4NzAsMHhFMCwKKyAgICAweEU2LDB4NjEsMHg0MywweDUxLDB4NUUsMHhFQywweEY4LDB4RTgs
MHg2NCwweDUxLDB4QzIsMHgzOCwweDdFLDB4N0UsMHg3OCwweEUwLAorICAgIDB4MjMsMHg0MSww
eEMyLDB4MzgsMHgwQiwweEFGLDB4QUYsMHhGNywweDAzLDB4NDEsMHhDMiwweDM4LDB4NzAsMHg2
RiwweDdFLDB4NTcsCisgICAgMHhFMywweDM4LDB4QTEsMHgzMCwweDk1LDB4QkYsMHhGQSwweEJB
LDB4RTIsMHgzOCwweEEyLDB4MzAsMHg3RSwweEZGLDB4QUIsMHgyQSwKKyAgICAweDAzLDB4Mzks
MHhBMiwweDMwLDB4RDUsMHhENywweEZCLDB4QkMsMHgyMywweDQxLDB4RTMsMHgzOCwweEY1LDB4
QjUsMHhBRCwweEJELAorICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHgyRCwweDJELDB4M0YsMHhC
RiwweEE2LDB4NTEsMHg0NCwweDQ5LDB4NTcsMHg1RiwweDdGLDB4RTMsCisgICAgMHg2NCwweDQ5
LDB4MjQsMHg0MSwweEVCLDB4QUEsMHhCRSwweEJBLDB4ODUsMHg0OSwweDI0LDB4NDEsMHhCNyww
eEQ3LDB4OEIsMHgwQiwKKyAgICAweDg1LDB4NTEsMHgyNCwweDQxLDB4RkEsMHg3RSwweEQ4LDB4
NTgsMHg0NCwweDQxLDB4RTMsMHg0MCwweDhFLDB4M0IsMHgyQiwweEE5LAorICAgIDB4NDQsMHg0
OSwweEUzLDB4MzgsMHg3RSwweEQ4LDB4RUUsMHhBQSwweDIzLDB4NDEsMHhFMiwweDM4LDB4QTUs
MHgzRiwweDlFLDB4M0YsCisgICAgMHhBNSwweDUxLDB4MDMsMHg0MSwweDJELDB4MkYsMHgyQiww
eDJGLDB4QTUsMHg1MSwweDIzLDB4NDksMHg3OCwweDc4LDB4RTAsMHhBMCwKKyAgICAweDY0LDB4
NTEsMHgwMywweDQ5LDB4RkYsMHhBRCwweEY2LDB4RkMsMHg4NSwweDUxLDB4MjQsMHg0OSwweEY1
LDB4NjUsMHhBRiwweDBGLAorICAgIDB4QTUsMHg1MSwweDY0LDB4NTEsMHgzNSwweEI1LDB4REYs
MHg5OCwweEE1LDB4NTksMHgyNCwweDQ5LDB4N0MsMHhGOCwweEUyLDB4OEEsCisgICAgMHg2NCww
eDUxLDB4MjQsMHg0OSwweDE3LDB4RDcsMHhCRSwweEU4LDB4QTUsMHg1MSwweDQ0LDB4NDksMHhF
RiwweDJGLDB4M0QsMHgzNywKKyAgICAweDg1LDB4NTEsMHgwMywweDM5LDB4NUYsMHg3RSwweDU4
LDB4NzgsMHgyNCwweDQxLDB4QzIsMHgzOCwweDhBLDB4QUEsMHhFQSwweDdGLAorICAgIDB4MjQs
MHg0MSwweEUzLDB4MzgsMHhCRSwweEJELDB4RjUsMHhENSwweDAzLDB4MzksMHhBMiwweDMwLDB4
QTAsMHgwOCwweDJBLDB4MjgsCisgICAgMHgyMywweDQxLDB4RTMsMHgzOCwweERGLDB4QkYsMHhF
QSwweDcyLDB4MjMsMHg0MSwweEUzLDB4MzgsMHg2QSwweEZDLDB4RUUsMHhGRiwKKyAgICAweDIz
LDB4NDEsMHhFMiwweDM4LDB4Q0YsMHgwMywweDhBLDB4REEsMHgyNCwweDQxLDB4RTMsMHgzOCww
eDk3LDB4MTQsMHhCQiwweDc5LAorICAgIDB4ODUsMHg1MSwweEUzLDB4MzgsMHhBNywweEJGLDB4
RUYsMHhCNSwweEM2LDB4NTksMHg2NSwweDQ5LDB4MkIsMHhBRiwweEFELDB4RkYsCisgICAgMHg4
NCwweDUxLDB4NDQsMHg0OSwweDdDLDB4NTQsMHg1NCwweDdGLDB4NDQsMHg0OSwweEUyLDB4NDAs
MHhGMiwweDZFLDB4RkUsMHg3RSwKKyAgICAweDAzLDB4NDEsMHhFMiwweDQwLDB4MDIsMHgwMiww
eDNCLDB4QTksMHg0NCwweDQ5LDB4MDMsMHg0MSwweDBCLDB4RjYsMHg1RiwweDdELAorICAgIDB4
NjQsMHg0OSwweDI0LDB4NDksMHg1OCwweEVGLDB4QkQsMHhBRCwweDg1LDB4NTEsMHgyMywweDQ5
LDB4QjksMHhBOSwweDJCLDB4MDIsCisgICAgMHg4NSwweDUxLDB4MjMsMHg0MSwweEYyLDB4RUEs
MHg3OCwweDVFLDB4NjQsMHg0OSwweDIzLDB4NDksMHg4NSwweEFELDB4MEIsMHgyQiwKKyAgICAw
eEE1LDB4NTEsMHg0NCwweDQxLDB4RUIsMHgyRiwweEFELDB4RjUsMHg4NSwweDQ5LDB4NDQsMHg0
OSwweDU2LDB4N0EsMHg3QSwweDU3LAorICAgIDB4NDQsMHg0MSwweDAzLDB4NDEsMHhENiwweDVG
LDB4RkUsMHhBQywweDY0LDB4NDksMHgwMywweDM5LDB4OEYsMHhBNywweEFELDB4QjUsCisgICAg
MHg0NCwweDQxLDB4RTIsMHgzOCwweEU4LDB4QUMsMHhCOCwweEI0LDB4MjMsMHg0MSwweEUyLDB4
MzgsMHg0MiwweEMwLDB4RTAsMHg3RSwKKyAgICAweDAzLDB4MzksMHhDMiwweDM4LDB4MjUsMHhC
RiwweDJCLDB4ODIsMHgyMywweDQxLDB4MDMsMHgzOSwweEFELDB4NjcsMHgzRCwweDA5LAorICAg
IDB4NDQsMHg0MSwweDAzLDB4MzksMHhCQSwweEZGLDB4RUIsMHgyMiwweDQ0LDB4NDEsMHgwMyww
eDQxLDB4QTIsMHhDQSwweDdCLDB4RUEsCisgICAgMHhFMiwweDQ4LDB4MDMsMHgzOSwweEY1LDB4
REQsMHg3NSwweEQ3LDB4MjMsMHg0MSwweEMyLDB4MzgsMHhBNywweDJGLDB4RUYsMHhBQSwKKyAg
ICAweDQzLDB4NDEsMHgwMywweDQxLDB4NjUsMHhFQiwweEZGLDB4QTksMHg2NCwweDQ5LDB4MjMs
MHg0MSwweEI3LDB4OTUsMHhCNSwweDc1LAorICAgIDB4NjQsMHg0OSwweDIzLDB4NDEsMHgwMiww
eDAwLDB4MDIsMHhBRiwweEE1LDB4NTEsMHg0NCwweDQ5LDB4MDAsMHgyRiwweDlFLDB4QjMsCisg
ICAgMHhFNywweDYxLDB4ODUsMHg1MSwweERCLDB4RUEsMHgyQiwweDJCLDB4MjcsMHg2QSwweEE0
LDB4NTksMHgyNSwweDk1LDB4RUYsMHhFMiwKKyAgICAweEE4LDB4N0EsMHhDNSwweDU5LDB4MEEs
MHgwMywweEJGLDB4QkQsMHhDOSwweDgyLDB4NjYsMHg3MiwweDAyLDB4MjIsMHhBQiwweEU5LAor
ICAgIDB4QTgsMHg3QSwweDY3LDB4N0EsMHg2OCwweDZBLDB4NjgsMHg3OCwweEE3LDB4N0EsMHg0
NiwweDcyLDB4MEEsMHgyRiwweDJGLDB4NzcsCisgICAgMHgwOSwweDhCLDB4QTcsMHg3QSwweDNE
LDB4RUYsMHhBRCwweEJGLDB4OEIsMHg5QiwweEU4LDB4ODIsMHgyRCwweDNELDB4RkQsMHg1NSwK
KyAgICAweEQzLDB4REQsMHg2QSwweDkzLDB4MkIsMHgyRCwweEFELDB4QjUsMHgxNCwweEU2LDB4
NzIsMHhENSwweDhBLDB4MEEsMHgwQiwweDA5LAorICAgIDB4MTUsMHhFNiwweEIzLDB4REQsMHgw
MiwweDgwLDB4QTAsMHg3MCwweEIzLDB4REQsMHhGMCwweEM0LDB4NTgsMHg3QywweDdDLDB4NUUs
CisgICAgMHgxMCwweEM1LDB4Q0YsMHhCQywweEVBLDB4NkEsMHhGRSwweEI2LDB4MzAsMHhDRCww
eEQwLDB4QkMsMHhBQiwweEE5LDB4QUYsMHgyQiwKKyAgICAweDMxLDB4Q0QsMHgxMCwweEM1LDB4
NDIsMHhDOCwweEIzLDB4ODMsMHg1MSwweENELDB4MTAsMHhDNSwweDBCLDB4OEYsMHgwRiwweDg5
LAorICAgIDB4MTQsMHhFNiwweDUxLDB4Q0QsMHgzNSwweDM1LDB4RDUsMHhENSwweDk2LDB4RjYs
MHhGNCwweERELDB4MEEsMHgwQiwweDBCLDB4MkQsCisgICAgMHhENywweEY2LDB4NzYsMHhFRSww
eEJGLDB4QUEsMHhBOCwweDc1LDB4QjcsMHhGNiwweDU1LDB4RUUsMHgwOCwweDAwLDB4MjgsMHg3
RiwKKyAgICAweEI3LDB4RjYsMHgzNSwweEU2LDB4MDAsMHgwMCwweEEwLDB4NTcsMHhCNywweEY2
LDB4MzUsMHhFNiwweDAyLDB4QTgsMHhFQSwweDVELAorICAgIDB4QjcsMHhGNiwweDE0LDB4REUs
MHg4MiwweEEyLDB4RkYsMHg3RCwweDk2LDB4RUUsMHhGNCwweERELDB4MDAsMHg4OCwweEZFLDB4
NzcsCisgICAgMHg5NiwweEVFLDB4QjMsMHhENSwweDAwLDB4MjAsMHhBQSwweDVGLDB4NzYsMHhF
RSwweEIzLDB4RDUsMHgwMCwweDAwLDB4RUEsMHg1NywKKyAgICAweDk2LDB4RUUsMHg3MywweENE
LDB4MDAsMHhBOCwweEFBLDB4NTcsMHg1NSwweEU2LDB4NTEsMHhDNSwweDAwLDB4ODgsMHhGQSww
eDU3LAorICAgIDB4NTUsMHhFNiwweEYxLDB4QkMsMHg4MCwweEFBLDB4RkUsMHg3NywweDE1LDB4
RTYsMHhEMCwweEJDLDB4MDAsMHhBQSwweEZGLDB4NTUsCisgICAgMHhGNCwweERELDB4OEYsMHhC
NCwweDAwLDB4QUEsMHhERiwweDU1LDB4RjQsMHhERCwweEIwLDB4QjQsMHhBOCwweEZFLDB4NTUs
MHg1NSwKKyAgICAweDcyLDB4Q0QsMHg0RSwweEFDLDB4MjAsMHhCQSwweEY3LDB4RjUsMHg3Myww
eEM1LDB4RDAsMHhCNCwweDJBLDB4QkYsMHgzNSwweDI5LAorICAgIDB4OTMsMHhDRCwweDUyLDB4
QzUsMHg4MiwweDhGLDB4QjMsMHg3QSwweEIzLDB4RDUsMHgxMSwweEM1LDB4RUEsMHhFMiwweEZB
LDB4N0UsCisgICAgMHg0MywweDU5LDB4MjMsMHg1MSwweDVBLDB4RkEsMHhFOCwweDgwLDB4NjQs
MHg1OSwweDIzLDB4NTEsMHgyQiwweDBBLDB4MDksMHgwMCwKKyAgICAweDg0LDB4NjEsMHg0NCww
eDU5LDB4NUUsMHg1RSwweEJFLDB4MkEsMHg4NCwweDYxLDB4NDMsMHg1OSwweEU3LDB4REUsMHhG
OCwweEZFLAorICAgIDB4ODQsMHg1OSwweDQzLDB4NTEsMHhCQSwweEE4LDB4QTIsMHhEMCwweDY0
LDB4NTksMHgyMywweDUxLDB4NjAsMHg3QSwweERBLDB4M0EsCisgICAgMHg4NCwweDU5LDB4MjMs
MHg1MSwweDhELDB4QTUsMHhCRCwweERELDB4ODQsMHg1OSwweDIyLDB4NTEsMHg3RiwweDhCLDB4
QkUsMHhGRiwKKyAgICAweDYzLDB4NTksMHg0MywweDUxLDB4OUQsMHg2QywweEE2LDB4QTksMHg2
MywweDU5LDB4MjIsMHg1MSwweDVCLDB4NUMsMHg1RSwweERFLAorICAgIDB4NjMsMHg1OSwweDAy
LDB4NDksMHgyQSwweEJGLDB4QkQsMHhGQiwweDY0LDB4NTksMHgyMywweDUxLDB4NUIsMHg1Riww
eEJGLDB4QTMsCisgICAgMHg4NCwweDYxLDB4NDMsMHg1MSwweEVELDB4QTksMHhBQSwweEVBLDB4
ODQsMHg2MSwweDYzLDB4NTksMHg4QSwweDdBLDB4RjAsMHg2NCwKKyAgICAweEE0LDB4NjEsMHg2
MywweDU5LDB4NUEsMHg4RSwweDZGLDB4ODMsMHg4NCwweDYxLDB4NjMsMHg1OSwweDExLDB4OUYs
MHgyQSwweDIwLAorICAgIDB4QTQsMHg2MSwweDYzLDB4NTksMHhEQSwweEZCLDB4RjAsMHg1MCww
eEE1LDB4NjEsMHgyMiwweDUxLDB4RUEsMHhFOCwweDdFLDB4RkEsCisgICAgMHg2MywweDU5LDB4
NDMsMHg1OSwweDNDLDB4N0EsMHhFMCwweEMyLDB4ODQsMHg2MSwweDIzLDB4NTEsMHgyQiwweEZG
LDB4RkYsMHg3RiwKKyAgICAweEU1LDB4NjksMHgwMywweDUxLDB4MDIsMHhBRSwweEZGLDB4N0Ys
MHg2NywweDdBLDB4NDMsMHg1OSwweDAwLDB4MkIsMHhGRCwweEQ1LAorICAgIDB4NjcsMHg3QSww
eDg0LDB4NTksMHgwMCwweDAwLDB4MEEsMHhGRCwweEM3LDB4ODIsMHgwNiwweDcyLDB4QUEsMHgy
QiwweEJCLDB4RkQsCisgICAgMHhBNywweDgyLDB4NjYsMHg3QSwweEZELDB4MEIsMHg4QiwweEJE
LDB4QTcsMHg4MiwweDY2LDB4N0EsMHhFQSwweEY4LDB4RjIsMHhFMCwKKyAgICAweDBCLDB4QUMs
MHhDOCwweDgyLDB4RDUsMHhGNSwweEI1LDB4MkQsMHhFQywweEFCLDB4OEEsMHg5QiwweDBELDB4
MDMsMHhBMCwweEZBLAorICAgIDB4Q0IsMHhBMywweDZBLDB4OUIsMHgwOCwweEE4LDB4RkMsMHhF
NywweENCLDB4QTMsMHg2QSwweDlCLDB4OEEsMHhFRiwweDc3LDB4RDcsCisgICAgMHhBQiwweEEz
LDB4NkEsMHg5QiwweEE4LDB4RUIsMHhDRiwweEU5LDB4Q0MsMHhBMywweDZBLDB4OUIsMHgwRiww
eEFCLDB4RUIsMHg1RiwKKyAgICAweEFCLDB4QTMsMHgyQSwweDkzLDB4MjAsMHhBOCwweEZBLDB4
N0YsMHg2QSwweDkzLDB4MDUsMHg2QSwweDc4LDB4NzgsMHg1OCwweEZFLAorICAgIDB4MjYsMHg2
QSwweEE0LDB4NTksMHg1NywweDU2LDB4RkMsMHhFOCwweEE1LDB4NTksMHgwMiwweDQxLDB4REMs
MHg1OCwweDc4LDB4RjgsCisgICAgMHgwMywweDQxLDB4QTIsMHgzOCwweEZDLDB4N0UsMHg3OCww
eEU4LDB4RTMsMHgzOCwweEEyLDB4MzAsMHgzQiwweEJELDB4QUEsMHhFOCwKKyAgICAweEUzLDB4
MzgsMHhBMiwweDMwLDB4QkUsMHgyQSwweDBGLDB4MkIsMHgyNCwweDQxLDB4RTMsMHgzOCwweDU3
LDB4QjcsMHgyRiwweDNGLAorICAgIDB4MjQsMHg0MSwweEMyLDB4MzAsMHhCNywweEFCLDB4QjIs
MHhBMCwweEUzLDB4NDAsMHgyNCwweDM5LDB4QUEsMHhBNywweEJBLDB4QkIsCisgICAgMHg0NCww
eDQxLDB4RTMsMHgzOCwweDJGLDB4QjUsMHhERiwweDNGLDB4ODUsMHg1MSwweDIzLDB4NDEsMHgw
MywweDI5LDB4QkQsMHhBRiwKKyAgICAweDg1LDB4NTEsMHgwMywweDM5LDB4QUEsMHhBMCwweDYw
LDB4N0EsMHg0NCwweDQ5LDB4MDMsMHg0MSwweDA4LDB4QkUsMHhGRCwweDU3LAorICAgIDB4NDQs
MHg0OSwweDAzLDB4NDEsMHg3OCwweDU2LDB4NTUsMHhGQiwweDI0LDB4NDEsMHhFMiwweDM4LDB4
MjcsMHgyRSwweEVCLDB4RTIsCisgICAgMHgyMywweDQxLDB4RTIsMHgzOCwweDgwLDB4RTIsMHhG
QSwweDAyLDB4NjUsMHg0OSwweEUyLDB4MzgsMHg5NSwweDk1LDB4QkQsMHhBRiwKKyAgICAweEM2
LDB4NTEsMHg0NCwweDQ5LDB4QTUsMHg3RiwweEVBLDB4OEIsMHhBNSwweDUxLDB4NDQsMHg0OSww
eEMyLDB4QzksMHhFMywweDZBLAorICAgIDB4ODUsMHg1MSwweDIzLDB4NDksMHhERSwweEJBLDB4
MkYsMHhCNywweEE1LDB4NTksMHg2NCwweDQ5LDB4OUQsMHhGQiwweEVBLDB4QUIsCisgICAgMHhB
NSwweDUxLDB4NDQsMHg0OSwweEU4LDB4RkEsMHhCRSwweDdGLDB4QzUsMHg2MSwweDQ0LDB4NDks
MHhBRiwweDJELDB4MzUsMHgxNywKKyAgICAweDA2LDB4NkEsMHg2NCwweDUxLDB4N0YsMHg3QSww
eEUyLDB4MEEsMHhDNiwweDU5LDB4NjQsMHg0OSwweEY1LDB4NzcsMHhGRSwweEYwLAorICAgIDB4
QTUsMHg1MSwweDAzLDB4NDEsMHg1OCwweDcyLDB4QkYsMHhBOCwweDIzLDB4NDEsMHhDMiwweDM4
LDB4NTcsMHg1NywweDc4LDB4NzgsCisgICAgMHhFMywweDM4LDB4ODEsMHgzMCwweEEyLDB4QkEs
MHhCRSwweEE3LDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBRiwweEY1LDB4QUYsMHgzQiwKKyAgICAw
eDIzLDB4NDEsMHhFMywweDM4LDB4N0EsMHhGQiwweDc3LDB4RkQsMHgwMywweDQxLDB4RTMsMHgz
OCwweEVELDB4QjUsMHg1NSwweDM4LAorICAgIDB4MjMsMHg0MSwweEMyLDB4MzgsMHhGQSwweDZC
LDB4QUYsMHgyRSwweDIzLDB4NDEsMHhFMywweDM4LDB4N0IsMHhBRiwweDJFLDB4MkIsCisgICAg
MHg2NCwweDQ5LDB4RTMsMHgzOCwweDJELDB4OEYsMHhBRSwweEFCLDB4NjQsMHg1MSwweDIzLDB4
NDksMHgwQSwweDBFLDB4QUIsMHg3MywKKyAgICAweDg1LDB4NTEsMHgyNCwweDQ5LDB4RTIsMHhF
QiwweDdCLDB4RkYsMHg0NCwweDQ5LDB4MDMsMHg0MSwweDc0LDB4RDQsMHhBQSwweDJBLAorICAg
IDB4NDQsMHg0OSwweDAzLDB4NDEsMHg3NSwweDZGLDB4MkEsMHgyMCwweDY0LDB4NTEsMHgwMyww
eDQxLDB4QjUsMHhCRCwweDNCLDB4MkEsCisgICAgMHg4NCwweDUxLDB4NDQsMHg0OSwweEJELDB4
QUYsMHhBRiwweDJFLDB4QTUsMHg1MSwweDY0LDB4NDksMHhDQiwweDZBLDB4QzIsMHhDMCwKKyAg
ICAweDY0LDB4NDksMHgwMywweDQxLDB4RkMsMHhGOCwweEU4LDB4ODAsMHg2NCwweDQ5LDB4MDMs
MHg0MSwweDJCLDB4MkIsMHgwOSwweDNGLAorICAgIDB4ODQsMHg0OSwweDAzLDB4NDEsMHg3Riww
eDdFLDB4N0UsMHhGQywweDQ0LDB4NDksMHgwMywweDQxLDB4MkUsMHhGRSwweDdBLDB4NUYsCisg
ICAgMHg0NCwweDQxLDB4RTIsMHgzOCwweDg4LDB4MkUsMHhBNywweDU3LDB4NDQsMHg0MSwweEUz
LDB4MzgsMHhCQSwweEZBLDB4REMsMHhGRiwKKyAgICAweDIzLDB4NDEsMHhFMywweDM4LDB4RkMs
MHg1RiwweEZGLDB4QUYsMHg0NCwweDQxLDB4RTIsMHgzOCwweERGLDB4NzcsMHg5RiwweEUyLAor
ICAgIDB4MDMsMHgzOSwweEMyLDB4MzgsMHgyOSwweEE2LDB4QUEsMHgwMiwweDg0LDB4NDksMHgw
MywweDM5LDB4QUQsMHgwRCwweEFELDB4RTcsCisgICAgMHg2NCwweDQ5LDB4MDMsMHgzOSwweEFF
LDB4QTgsMHg4MCwweEE4LDB4NjUsMHg0OSwweDI0LDB4NDEsMHg3RSwweDcyLDB4RUIsMHhGRCwK
KyAgICAweDQzLDB4NDEsMHhDMiwweDM4LDB4RkUsMHhCNiwweEFBLDB4QTgsMHg2NSwweDQ5LDB4
RTIsMHgzOCwweDk3LDB4QjcsMHg4QiwweDBGLAorICAgIDB4NDQsMHg0MSwweDAzLDB4NDEsMHgw
RCwweDA5LDB4QzAsMHhBMCwweDQ0LDB4NDksMHgyMywweDQxLDB4RUMsMHhERSwweEQ3LDB4OTYs
CisgICAgMHg2NCwweDQ5LDB4MjMsMHg0MSwweDdELDB4RkYsMHhFRSwweEMwLDB4ODUsMHg1MSww
eDAyLDB4NDEsMHgyQiwweERELDB4RjcsMHg1RSwKKyAgICAweEM2LDB4NTksMHg0NCwweDQ5LDB4
MkIsMHhCRiwweEJELDB4OTUsMHhFNiwweDYxLDB4ODQsMHg1OSwweDAyLDB4QUUsMHhERiwweDdB
LAorICAgIDB4MjYsMHg2QSwweEE0LDB4NTksMHgyRiwweDhCLDB4OEIsMHgyNSwweEE4LDB4N0Es
MHgwNSwweDYyLDB4ODIsMHhBOSwweEZELDB4RDcsCisgICAgMHg2NywweDdBLDB4MjYsMHg2QSww
eEEyLDB4QUIsMHhCRiwweEZCLDB4NDcsMHg3MiwweDA2LDB4NkEsMHhFOCwweDZDLDB4RkMsMHg1
NCwKKyAgICAweEM4LDB4ODIsMHgwNiwweDZBLDB4MEEsMHgwRCwweEI1LDB4QjUsMHhFOCwweDgy
LDB4ODcsMHg3QSwweDI4LDB4MjIsMHg4QiwweDM3LAorICAgIDB4NkUsMHhCNCwweEM4LDB4ODIs
MHgyRCwweEJELDB4RjUsMHhENSwweEQzLDB4REQsMHgyRCwweEFDLDB4MDIsMHgwQiwweDJELDB4
QUQsCisgICAgMHhGNCwweEU1LDB4NTEsMHhDRCwweEEwLDB4RTIsMHg3QSwweEVBLDB4NTIsMHhD
RCwweEQwLDB4QkMsMHhGOCwweEZFLDB4REEsMHg3QywKKyAgICAweDEwLDB4QzUsMHhEMCwweEJD
LDB4RjYsMHhBQSwweDlBLDB4RDcsMHgxMCwweEM1LDB4RjAsMHhDNCwweDJELDB4MEYsMHgyOSww
eDA1LAorICAgIDB4MzEsMHhDRCwweDEwLDB4QzUsMHgwMiwweDhFLDB4MUIsMHhBQiwweDUxLDB4
Q0QsMHgxMCwweEM1LDB4QUYsMHgyNywweEFGLDB4QUIsCisgICAgMHg1MSwweENELDB4MzEsMHhD
NSwweDI4LDB4MEUsMHgyQSwweEZDLDB4MzUsMHhFNiwweDUyLDB4Q0QsMHgwQiwweEFGLDB4QUQs
MHhBRCwKKyAgICAweDM1LDB4RTYsMHgxMCwweEM1LDB4MDAsMHhBQSwweDdGLDB4NUUsMHgxNCww
eEU2LDB4RDAsMHhCQywweDAwLDB4QUEsMHhGRiwweDc1LAorICAgIDB4MTQsMHhFNiwweEQwLDB4
QkMsMHgyMCwweEVBLDB4N0YsMHg1NSwweEY0LDB4REQsMHhBRiwweEJDLDB4MDAsMHhBQSwweEZG
LDB4NTUsCisgICAgMHhCMywweEQ1LDB4QjAsMHhCQywweDAwLDB4QTIsMHhGRiwweDU1LDB4QjMs
MHhENSwweDhGLDB4QjQsMHgwMCwweEFBLDB4REYsMHg1NSwKKyAgICAweDkyLDB4RDUsMHg2Riww
eEFDLDB4MDAsMHhBQSwweEZGLDB4NTUsMHg3MiwweENELDB4NkUsMHhBQywweDAwLDB4QUEsMHhG
RiwweDVELAorICAgIDB4NTIsMHhDNSwweDRFLDB4QUMsMHgwMCwweEFBLDB4RkUsMHg1NywweDMx
LDB4QzUsMHgyRSwweEE0LDB4MkEsMHhCQSwweEY3LDB4NUQsCisgICAgMHhGMCwweEJDLDB4MkQs
MHhBNCwweEUwLDB4RkEsMHhGRiwweEQ1LDB4OEYsMHhCNCwweDJELDB4QTQsMHhDOCwweEU4LDB4
QkEsMHhCNywKKyAgICAweDUyLDB4QzUsMHgyRCwweEE0LDB4RkQsMHhCRCwweEFGLDB4MkYsMHhE
NCwweEQ1LDB4RDAsMHhCNCwweEY1LDB4QUYsMHgwQSwweDAyLAorICAgIDB4RDQsMHhENSwweEYw
LDB4QjQsMHhENSwweEVFLDB4QTgsMHhBMCwweDkzLDB4Q0QsMHgzMSwweEJELDB4QjUsMHhBRiww
eDhBLDB4QUUsCisgICAgMHg3MywweENELDB4RjAsMHhCNCwweEEwLDB4RTIsMHhGQSwweDVGLDB4
NTIsMHhDNSwweEIwLDB4QjQsMHhFMiwweEZBLDB4N0UsMHg1RiwKKyAgICAweDg0LDB4NTksMHg0
MywweDU5LDB4RDcsMHhFNSwweEJGLDB4Q0QsMHg4NCwweDU5LDB4NDMsMHg1MSwweDgxLDB4MDIs
MHg4QywweEFBLAorICAgIDB4ODQsMHg1OSwweDY0LDB4NTksMHg0MSwweEUwLDB4MkIsMHgxQSww
eDg0LDB4NTksMHg0MywweDUxLDB4OEEsMHg4QSwweEY4LDB4RDgsCisgICAgMHg2NCwweDU5LDB4
MjMsMHg1MSwweDFFLDB4MkUsMHgyQSwweEZBLDB4ODQsMHg1OSwweDIyLDB4NTEsMHhDRSwweEVB
LDB4RkEsMHg5NywKKyAgICAweDY0LDB4NTksMHgyMywweDQ5LDB4RkQsMHg4QSwweENBLDB4QUEs
MHg2MywweDU5LDB4MDIsMHg0OSwweDlFLDB4QUIsMHgwMiwweDBBLAorICAgIDB4NDMsMHg1MSww
eDIyLDB4NTEsMHg4MiwweEZGLDB4RjgsMHhEOCwweDQzLDB4NTksMHgyMiwweDQ5LDB4RUIsMHhB
RCwweEVCLDB4RUUsCisgICAgMHg2MywweDU5LDB4MjMsMHg1MSwweEQ1LDB4RjUsMHhBRiwweDBC
LDB4ODQsMHg2MSwweDQzLDB4NTksMHg4NywweDIzLDB4OEIsMHhBRiwKKyAgICAweDg0LDB4NjEs
MHg0MywweDU5LDB4NEEsMHg4MCwweEMwLDB4MDIsMHhBNCwweDYxLDB4NjMsMHg1OSwweEZGLDB4
NUIsMHhGMSwweDgwLAorICAgIDB4QTQsMHg2MSwweDYzLDB4NTksMHhBQiwweDlELDB4RkYsMHhG
QSwweEE1LDB4NjEsMHg0MywweDU5LDB4MkEsMHgwRSwweDI4LDB4MjgsCisgICAgMHhBNCwweDYx
LDB4NDMsMHg1OSwweEY4LDB4N0UsMHg2RSwweEVGLDB4NjMsMHg1OSwweDQzLDB4NTksMHg2Miww
eDIwLDB4MjgsMHg4QSwKKyAgICAweDYzLDB4NTksMHgyMywweDUxLDB4QTAsMHhBMCwweEE4LDB4
NzYsMHg2NCwweDU5LDB4MjMsMHg1MSwweDVBLDB4QkEsMHhFRSwweEU5LAorICAgIDB4MjMsMHg1
OSwweDQzLDB4NTEsMHhBQSwweERFLDB4RkUsMHhBRiwweDY0LDB4NTksMHgwMywweDUxLDB4MEEs
MHhFQSwweEJCLDB4NUYsCisgICAgMHg4NCwweDU5LDB4MDIsMHg1MSwweEFGLDB4RjcsMHhGRiww
eEZELDB4QzUsMHg2OSwweDIzLDB4NTEsMHgwQSwweEZGLDB4NTUsMHg1NywKKyAgICAweDg3LDB4
ODIsMHgyMywweDUxLDB4MjIsMHgzRiwweEY1LDB4NTUsMHhDOCwweDhBLDB4NjQsMHg1OSwweDIy
LDB4OEEsMHgyRiwweDI1LAorICAgIDB4RUIsMHhBQiwweEU3LDB4ODIsMHgyRCwweDJCLDB4MEIs
MHgwQSwweEVDLDB4QUIsMHg4QSwweDlCLDB4RjgsMHg2OCwweDZBLDB4N0UsCisgICAgMHg4QSww
eDlCLDB4NkEsMHg5QiwweEIwLDB4MEMsMHgwNywweDdGLDB4QUIsMHg5QiwweDRBLDB4OUIsMHhG
RiwweDdGLDB4RjYsMHhBRiwKKyAgICAweEFCLDB4OUIsMHg0QSwweDkzLDB4QUIsMHhBRiwweEJF
LDB4MkUsMHhBQiwweEEzLDB4NkEsMHg5QiwweDZCLDB4NkUsMHhEQSwweDA4LAorICAgIDB4Q0Ms
MHhBMywweDI5LDB4OTMsMHg1NywweEZGLDB4RkEsMHhBOCwweDI5LDB4OTMsMHg2NiwweDcyLDB4
N0UsMHg3RSwweEY4LDB4RjgsCisgICAgMHg4NiwweDdBLDB4QzUsMHg2MSwweDVCLDB4N0EsMHhG
OCwweEY4LDB4RTYsMHg2MSwweDQ0LDB4NDksMHg1RSwweEZBLDB4RkEsMHg3OCwKKyAgICAweDQ0
LDB4NDksMHhFMiwweDM4LDB4N0EsMHg3OCwweDVBLDB4NkUsMHgwMywweDQxLDB4QTIsMHgzMCww
eEZFLDB4RUIsMHhDRSwweEFFLAorICAgIDB4MDQsMHgzOSwweEMyLDB4MzgsMHhERCwweEZELDB4
RjMsMHhBQiwweDAzLDB4MzksMHhDMiwweDM4LDB4MkIsMHhCRCwweDM1LDB4OTUsCisgICAgMHg2
NCwweDQ5LDB4MDMsMHg0MSwweEZGLDB4RkQsMHhCRiwweDBGLDB4NjUsMHg0OSwweDAzLDB4NDEs
MHg1NywweEZBLDB4N0EsMHhFMCwKKyAgICAweDIzLDB4NDEsMHhFMywweDM4LDB4MDIsMHg2Qiww
eDU4LDB4NUMsMHg2NCwweDQ5LDB4RTMsMHgzOCwweDBBLDB4QkQsMHhBRiwweEJGLAorICAgIDB4
NDQsMHg0OSwweDI0LDB4NDEsMHg0MCwweDc4LDB4NTYsMHg1QSwweDIzLDB4NDEsMHhDMiwweDM4
LDB4QUEsMHg4OCwweDI4LDB4MUUsCisgICAgMHg0NCwweDQ5LDB4MDMsMHg0MSwweDdCLDB4QzMs
MHgwOCwweDAzLDB4NjUsMHg0OSwweEUzLDB4MzgsMHg3RiwweERCLDB4RUUsMHg4QSwKKyAgICAw
eDQzLDB4NDEsMHgwNCwweDQxLDB4QUEsMHhFOSwweDhBLDB4QUIsMHg0NCwweDQxLDB4MDMsMHg0
MSwweEFBLDB4QkEsMHhCRiwweDU1LAorICAgIDB4QTUsMHg1MSwweDIzLDB4NDEsMHgwMywweDBC
LDB4MkQsMHhCRCwweEE2LDB4NTEsMHgyNCwweDQ5LDB4RjgsMHhGOCwweEVFLDB4REYsCisgICAg
MHhBNSwweDU5LDB4MjMsMHg0OSwweEI3LDB4MzcsMHgyRiwweEJGLDB4MDYsMHg2MiwweDQzLDB4
NDksMHg3RiwweDdFLDB4N0EsMHhBMiwKKyAgICAweEE1LDB4NTksMHgyMywweDQ5LDB4RDcsMHhE
RiwweDdFLDB4QkMsMHhFNSwweDYxLDB4MjQsMHg0OSwweDNGLDB4QkQsMHhCRCwweEZGLAorICAg
IDB4NDcsMHg2QSwweDY0LDB4NTksMHg4QSwweDJBLDB4MkIsMHgyRCwweDI3LDB4NkEsMHhBNSww
eDU5LDB4N0EsMHhGQSwweEYwLDB4NzgsCisgICAgMHhDNiwweDU5LDB4MjQsMHg0OSwweEZFLDB4
RkEsMHhFOCwweDc4LDB4NDQsMHg0OSwweEMyLDB4MzgsMHg3QywweDcwLDB4NTAsMHg3QSwKKyAg
ICAweEUzLDB4MzgsMHhBMiwweDMwLDB4QUUsMHhBQSwweEFFLDB4MkUsMHgyMywweDM5LDB4RTMs
MHgzOCwweEQ1LDB4RTUsMHhBRCwweDNCLAorICAgIDB4NDQsMHg0MSwweEUzLDB4MzgsMHhGOSww
eEJGLDB4MkYsMHhBRSwweDIzLDB4NDEsMHgwMywweDM5LDB4N0YsMHg1QSwweEIwLDB4ODAsCisg
ICAgMHg0MywweDQ5LDB4RTMsMHg0MCwweEY3LDB4RkQsMHhGRSwweEU4LDB4MDMsMHg0MSwweDIz
LDB4MzksMHhFMCwweEEwLDB4QUEsMHgyQywKKyAgICAweDI0LDB4NDksMHhFMywweDQwLDB4QTIs
MHg3OCwweEVBLDB4QUIsMHgyNCwweDQ5LDB4RTMsMHg0MCwweDAwLDB4MjcsMHgyQiwweDBBLAor
ICAgIDB4NjQsMHg1MSwweDIzLDB4NDksMHhGOSwweEIyLDB4QjcsMHgyNSwweDY0LDB4NTEsMHgw
MywweDQxLDB4QUUsMHhGQiwweDlFLDB4QjgsCisgICAgMHg2NSwweDUxLDB4MjMsMHg0MSwweDVD
LDB4N0YsMHhBQSwweEFCLDB4NjQsMHg0OSwweDIzLDB4NDksMHhBNSwweDA1LDB4ODcsMHhBRCwK
KyAgICAweEE1LDB4NTksMHgyMywweDQxLDB4MkIsMHhBQSwweEZFLDB4NTYsMHhBNSwweDUxLDB4
MDMsMHg0MSwweEE4LDB4QkYsMHhGRiwweDVGLAorICAgIDB4NjQsMHg0OSwweDIzLDB4NDEsMHhB
QiwweDBBLDB4MDgsMHg4MywweDg1LDB4NDksMHgyMywweDQxLDB4REYsMHhFQiwweEUwLDB4RUEs
CisgICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweEVBLDB4NEIsMHg3QSwweDdBLDB4MjMsMHgzOSww
eEMxLDB4MzgsMHhBOCwweDdBLDB4N0IsMHhGQSwKKyAgICAweDI0LDB4MzksMHhDMiwweDMwLDB4
RkUsMHhGRSwweEZCLDB4QUEsMHgyMywweDQxLDB4MDMsMHgzOSwweDk1LDB4M0QsMHgyOSwweDBE
LAorICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHg1RCwweEZCLDB4RUUsMHg4QSwweDg1LDB4NDks
MHgyNCwweDQxLDB4RjgsMHhBQiwweEI5LDB4QkIsCisgICAgMHhBNSwweDQ5LDB4MDMsMHgzOSww
eDVGLDB4RjYsMHhFRSwweEE4LDB4NDQsMHg0MSwweDAzLDB4NDEsMHgyRiwweEJCLDB4QjgsMHhC
RSwKKyAgICAweDQ0LDB4NDksMHgwMywweDM5LDB4QUEsMHhEQywweEY0LDB4RkUsMHg0NCwweDQx
LDB4MDMsMHg0MSwweEFGLDB4MkUsMHhCOCwweDU2LAorICAgIDB4NDQsMHg0MSwweDAyLDB4NDEs
MHhBQSwweDBBLDB4ODgsMHgyRSwweDY0LDB4NDksMHgyMywweDQxLDB4MkQsMHgwRiwweDBCLDB4
MEEsCisgICAgMHg2NCwweDQ5LDB4MjMsMHg0MSwweEQ2LDB4N0UsMHhGMCwweEIwLDB4NDQsMHg0
OSwweDAzLDB4NDEsMHhBRiwweEZGLDB4RkYsMHhBQywKKyAgICAweDg1LDB4NTEsMHgwMywweDM5
LDB4QUEsMHg4QSwweEFELDB4QjUsMHg2NCwweDQ5LDB4MDMsMHg0MSwweDc4LDB4QTAsMHhBMCww
eEEyLAorICAgIDB4NjQsMHg1MSwweDIzLDB4NDEsMHhGOSwweDNELDB4QUEsMHgzQiwweEU2LDB4
NjEsMHg2NCwweDUxLDB4OEIsMHgwRiwweEE1LDB4RDUsCisgICAgMHg0NiwweDcyLDB4QzUsMHg2
MSwweEY3LDB4QkYsMHg4QiwweDJELDB4NjcsMHg3MiwweDA1LDB4NjIsMHhGRSwweDY3LDB4N0Ys
MHgyQSwKKyAgICAweDg3LDB4NzIsMHgwNSwweDZBLDB4RUIsMHhBRCwweEFELDB4MEEsMHg2Nyww
eDcyLDB4QzUsMHg2MSwweEZFLDB4RkUsMHhCQSwweDY4LAorICAgIDB4ODcsMHg3QSwweEU1LDB4
NjEsMHgzRiwweEFGLDB4QkYsMHhBRCwweEE4LDB4N0EsMHg0NiwweDcyLDB4MkEsMHg5QiwweEVE
LDB4RUIsCisgICAgMHgwOSwweDhCLDB4ODcsMHg3QSwweDI2LDB4MzYsMHgzRCwweEY1LDB4NzIs
MHhENSwweDJBLDB4OEIsMHgyRiwweDBELDB4MkQsMHhCRCwKKyAgICAweEQ0LDB4REQsMHgzMSww
eENELDB4QzAsMHg3OCwweDdBLDB4N0IsMHgzMSwweENELDB4Q0YsMHhCQywweEZBLDB4NzgsMHhG
MiwweDdFLAorICAgIDB4RjAsMHhDNCwweENGLDB4QkMsMHhEQSwweDNGLDB4NUQsMHg3RiwweDEw
LDB4QzUsMHhDRiwweEJDLDB4MkYsMHgyNSwweDE3LDB4MDcsCisgICAgMHgzMSwweENELDB4MTAs
MHhDNSwweDhGLDB4MTUsMHgzNSwweDM1LDB4MzEsMHhDRCwweDEwLDB4QzUsMHgyMCwweEVFLDB4
M0MsMHhBOCwKKyAgICAweDUxLDB4Q0QsMHgxMSwweEM1LDB4QUEsMHhBQiwweEFGLDB4NkUsMHhE
MywweERELDB4MzEsMHhDNSwweDBELDB4MEQsMHgyNSwweEI1LAorICAgIDB4RDMsMHhERCwweEFG
LDB4QkMsMHg3QywweEY4LDB4NTgsMHg3MCwweEQwLDB4QkMsMHg4RiwweEI0LDB4QzgsMHhGMiww
eDZGLDB4NTcsCisgICAgMHhBRiwweEJDLDB4NkUsMHhCNCwweDgyLDB4NzIsMHg3QiwweEZGLDB4
QUYsMHhCNCwweDRELDB4QUMsMHg4MCwweDcwLDB4N0EsMHhFQSwKKyAgICAweEFGLDB4QkMsMHgy
RCwweEFDLDB4QTgsMHhGQiwweDdCLDB4N0YsMHg4RiwweEI0LDB4MkQsMHhBQywweDIyLDB4N0Is
MHg3NywweDdELAorICAgIDB4NkUsMHhBQywweDBELDB4QTQsMHgyOCwweDBBLDB4RkIsMHg1Nyww
eDZFLDB4QUMsMHgwQywweEE0LDB4NjAsMHhGQSwweDdFLDB4NUQsCisgICAgMHhCMCwweEI0LDB4
MEQsMHg5QywweEZGLDB4RDUsMHhENSwweDBCLDB4NzIsMHhDNSwweDBELDB4OUMsMHg1RCwweERE
LDB4QkQsMHgyQSwKKyAgICAweDkzLDB4Q0QsMHgyRSwweEE0LDB4NzUsMHhGRCwweEFBLDB4ODgs
MHg3MiwweEM1LDB4NEUsMHhBQywweEQ1LDB4QUIsMHgyQSwweDIyLAorICAgIDB4OTMsMHhDRCww
eDExLDB4QkQsMHhBNSwweEFGLDB4MEEsMHg4MCwweEIzLDB4RDUsMHg1MywweEM1LDB4MEEsMHhB
MiwweEEyLDB4RkYsCisgICAgMHhENSwweEQ1LDB4NTIsMHhDNSwweEUyLDB4REUsMHhGRiwweDVG
LDB4NzMsMHhDNSwweEYxLDB4QkMsMHg4QSwweEM4LDB4RjYsMHg1NiwKKyAgICAweDMyLDB4QzUs
MHhCMCwweEI0LDB4RTgsMHhFQSwweDZBLDB4NkEsMHhGMSwweEI0LDB4NkYsMHhBQywweEZDLDB4
REYsMHg1NywweDc3LAorICAgIDB4ODQsMHg2MSwweDQzLDB4NTksMHhGRSwweEZDLDB4NzgsMHhG
RCwweEE1LDB4NjEsMHg0MywweDUxLDB4QjcsMHhBRSwweDczLDB4RkEsCisgICAgMHg4NCwweDU5
LDB4MjMsMHg1MSwweEEyLDB4QUEsMHhBRiwweERFLDB4NjQsMHg1OSwweDIzLDB4NTEsMHhCOCww
eEFFLDB4N0UsMHg1RiwKKyAgICAweDY0LDB4NTksMHgyMywweDUxLDB4RkEsMHhERSwweEZGLDB4
QkUsMHg4NCwweDU5LDB4MjIsMHg1MSwweEU3LDB4RUYsMHhFMiwweEZFLAorICAgIDB4ODQsMHg1
OSwweDQzLDB4NTEsMHg1NywweDVDLDB4NzUsMHg1NSwweDYzLDB4NTksMHgyMywweDUxLDB4RUUs
MHhBQSwweENDLDB4QkIsCisgICAgMHg2MywweDU5LDB4MjMsMHg1MSwweEJCLDB4QUYsMHhGRiww
eEZELDB4NjMsMHg1OSwweDIzLDB4NTEsMHhENywweEQ2LDB4QkMsMHgzQSwKKyAgICAweDg0LDB4
NTksMHg0MywweDU5LDB4ODUsMHhCNSwweEZELDB4RjYsMHhBNCwweDYxLDB4NDMsMHg1OSwweEI1
LDB4QUYsMHhCNywweEQ1LAorICAgIDB4QTQsMHg2MSwweDYzLDB4NTksMHhCRiwweERFLDB4RkYs
MHg3NywweEE0LDB4NjEsMHg2NCwweDU5LDB4OEEsMHhFRiwweEZCLDB4RUQsCisgICAgMHhBNCww
eDYxLDB4NDMsMHg1OSwweDgyLDB4Q0UsMHhFMiwweDQyLDB4QTUsMHg2MSwweDQzLDB4NTksMHhG
QywweDVGLDB4NUUsMHg3RiwKKyAgICAweDYzLDB4NTksMHgyMiwweDUxLDB4ODAsMHhDMCwweDNC
LDB4QjYsMHg4NCwweDU5LDB4MjMsMHg1MSwweEVGLDB4Q0EsMHhFQiwweDdBLAorICAgIDB4NDMs
MHg1OSwweDIzLDB4NTEsMHhGMCwweDNGLDB4MzgsMHhFQSwweDY0LDB4NTksMHgyMywweDUxLDB4
RUIsMHhFQSwweEZBLDB4NkQsCisgICAgMHg0MywweDU5LDB4MDMsMHg1MSwweEJBLDB4NUEsMHg2
RiwweEZGLDB4MjMsMHg1MSwweEUyLDB4NDgsMHhCQiwweEZGLDB4MkIsMHgwQSwKKyAgICAweDQ0
LDB4NTEsMHgwMiwweDQ5LDB4MkYsMHhBRSwweDdBLDB4RUYsMHgyMywweDUxLDB4RTIsMHg0OCww
eEEwLDB4NDAsMHhBMCwweEIwLAorICAgIDB4NjMsMHg1OSwweDAzLDB4NTEsMHhENSwweEQ1LDB4
QTcsMHgzNywweEFCLDB4QTMsMHg2MywweDU5LDB4QjUsMHgyRCwweDJELDB4MEIsCisgICAgMHhF
QywweEFCLDB4OEEsMHg5QiwweDhELDB4RUIsMHhBMiwweEZFLDB4Q0MsMHhBMywweDRBLDB4OUIs
MHhFOCwweEUyLDB4RkUsMHg1NiwKKyAgICAweEFCLDB4QTMsMHg2QSwweDlCLDB4NTcsMHg3Qiww
eEVFLDB4QTcsMHhBQiwweEEzLDB4NkEsMHg5QiwweDJCLDB4RkQsMHg3RiwweEU4LAorICAgIDB4
QUIsMHhBMywweDZBLDB4OUIsMHhBNiwweDc4LDB4NzksMHg2QiwweENDLDB4QTMsMHg4QiwweDlC
LDB4MkUsMHhBQSwweEQ1LDB4NTUsCisgICAgMHhDQywweEFCLDB4NkIsMHg5QiwweEUyLDB4NjIs
MHhGQiwweEZCLDB4NDksMHg5MywweDg3LDB4N0EsMHhGRSwweDc4LDB4RkUsMHg3NiwKKyAgICAw
eDg2LDB4N0EsMHhDNSwweDYxLDB4NzgsMHg3OCwweEUwLDB4RTAsMHhDNSwweDYxLDB4NDQsMHg1
MSwweEZBLDB4RkMsMHg3QywweDdDLAorICAgIDB4NjQsMHg1MSwweDAyLDB4NDEsMHg3RSwweEUw
LDB4QkMsMHhBQiwweDQ0LDB4NDksMHhFMiwweDM4LDB4NUYsMHhGQSwweDJBLDB4MjAsCisgICAg
MHg0NCwweDQ5LDB4RTMsMHgzOCwweDVELDB4REYsMHg3NiwweDc4LDB4MjMsMHg0MSwweEExLDB4
MzAsMHhGRiwweEJFLDB4MkUsMHgyQiwKKyAgICAweDg1LDB4NDksMHgyMywweDQxLDB4QTksMHgz
NSwweEJELDB4QUIsMHhBNSwweDQ5LDB4NDQsMHg0OSwweDdGLDB4RUMsMHhGRiwweDZCLAorICAg
IDB4NjQsMHg0OSwweEUzLDB4MzgsMHg3RSwweEZBLDB4RjgsMHhFQSwweDIzLDB4NDEsMHhDMiww
eDM4LDB4OEIsMHhGQiwweERBLDB4QkUsCisgICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweEE5LDB4
ODMsMHhBRCwweEE1LDB4NDQsMHg0MSwweDAzLDB4NDEsMHg1NiwweDU2LDB4OUUsMHg5RSwKKyAg
ICAweDg1LDB4NTEsMHgyMywweDQxLDB4QUQsMHhBNSwweEVELDB4N0YsMHg0NCwweDQ5LDB4RTIs
MHgzOCwweDg4LDB4RkUsMHhCRiwweEE3LAorICAgIDB4NDQsMHg0MSwweDAzLDB4NDEsMHhFQiww
eEFCLDB4MkIsMHg1RiwweDIzLDB4NDEsMHgwMywweDM5LDB4N0EsMHhGOCwweDNDLDB4M0UsCisg
ICAgMHg0NCwweDQ5LDB4RTIsMHgzOCwweDhCLDB4QUIsMHg1QSwweEY3LDB4NDQsMHg0OSwweEUy
LDB4NDAsMHhGQywweERELDB4NTUsMHg1NSwKKyAgICAweDY0LDB4NTEsMHhFMiwweDQwLDB4MkIs
MHgzRCwweDNELDB4QkYsMHhFNiwweDYxLDB4ODUsMHg1OSwweDAyLDB4MDEsMHhEQiwweDZELAor
ICAgIDB4QTUsMHg1OSwweDI0LDB4NDksMHhCOCwweEU4LDB4QjgsMHhEQSwweDY0LDB4NTEsMHgy
MywweDQ5LDB4RTAsMHhBMCwweEEyLDB4RkUsCisgICAgMHhDNSwweDU5LDB4NDMsMHg0OSwweDBG
LDB4QTUsMHhGNSwweDU3LDB4MDYsMHg2QSwweDY0LDB4NTEsMHhDMiwweEVBLDB4RUQsMHhENSwK
KyAgICAweEM1LDB4NTksMHg0NCwweDQ5LDB4NUYsMHg1OCwweDY4LDB4QTIsMHg0NCwweDQ5LDB4
QTIsMHgzMCwweEZBLDB4NUMsMHhEQywweDVDLAorICAgIDB4RTMsMHgzOCwweEEyLDB4MzAsMHgy
RSwweEJGLDB4RjcsMHg3RCwweDI0LDB4MzksMHhDMiwweDMwLDB4QUEsMHhFRCwweEExLDB4QjEs
CisgICAgMHgyMywweDQxLDB4RTMsMHgzOCwweDA4LDB4ODIsMHhGNiwweEJFLDB4NDQsMHg0MSww
eDAzLDB4NDEsMHhERiwweDM1LDB4MzUsMHhCNSwKKyAgICAweDY1LDB4NDksMHgyNCwweDQxLDB4
RkYsMHhCRSwweEFFLDB4RTcsMHg0NCwweDQ5LDB4MDMsMHg0MSwweEZFLDB4QUEsMHgyMCwweDAw
LAorICAgIDB4NjQsMHg0OSwweDIzLDB4NDksMHg1RCwweDdFLDB4NUYsMHhGQiwweDY0LDB4NTEs
MHgwMywweDQxLDB4RjcsMHhBRCwweEEyLDB4ODIsCisgICAgMHhBNiwweDU5LDB4NDQsMHg0OSww
eEY1LDB4QkQsMHhBQiwweDAyLDB4QzYsMHg1OSwweDY0LDB4NTEsMHg1NywweERGLDB4RkEsMHg2
QywKKyAgICAweEE1LDB4NTEsMHgyMywweDQ5LDB4RkYsMHg3QSwweEY4LDB4RjIsMHg0NCwweDQ5
LDB4MDMsMHg0MSwweDIwLDB4NkEsMHhGQSwweDc3LAorICAgIDB4NjQsMHg0OSwweDAzLDB4NDEs
MHhGOCwweEFFLDB4RUIsMHhGNywweDIzLDB4NDEsMHgwMywweDQxLDB4NjIsMHhBMywweEMxLDB4
QzIsCisgICAgMHg0NCwweDQ5LDB4RTIsMHgzOCwweDAyLDB4MEYsMHgyRiwweEI3LDB4ODQsMHg0
OSwweDQ0LDB4NDksMHg3RCwweDRGLDB4REQsMHg1NywKKyAgICAweDQ0LDB4NDksMHgwMywweDQx
LDB4NkUsMHgzNiwweEJBLDB4RkUsMHg0MywweDQxLDB4MDMsMHg0MSwweDVELDB4NTYsMHhERSww
eDVGLAorICAgIDB4MjMsMHg0MSwweEUzLDB4MzgsMHgzNywweEJBLDB4QTIsMHhBMiwweDI0LDB4
NDEsMHhFMywweDM4LDB4MEEsMHgyQiwweEJELDB4RkYsCisgICAgMHg2NCwweDQ5LDB4MDMsMHgz
OSwweENBLDB4RUIsMHhBRiwweEJELDB4ODUsMHg0OSwweDQ0LDB4NDksMHhENywweDNELDB4Qjcs
MHhCRCwKKyAgICAweEE1LDB4NTEsMHg2NCwweDQ5LDB4QjYsMHhBRiwweDJCLDB4MkEsMHg4NSww
eDQ5LDB4MjMsMHg0MSwweDU3LDB4RjcsMHg3QywweEUwLAorICAgIDB4NDMsMHg0MSwweDAzLDB4
MzksMHg3OCwweDU3LDB4NTUsMHhGNiwweDIzLDB4NDEsMHgwMywweDM5LDB4REYsMHgzNSwweEE1
LDB4N0QsCisgICAgMHg2NCwweDQ5LDB4MDMsMHgzOSwweEE3LDB4MkIsMHgyRiwweDJELDB4QTUs
MHg0OSwweDQ0LDB4NDksMHhBRiwweEZGLDB4QkQsMHgzRiwKKyAgICAweDg1LDB4NTEsMHg0NCww
eDQ5LDB4QTYsMHhCRiwweEZGLDB4NkUsMHhBNSwweDUxLDB4NDQsMHg0OSwweERGLDB4RUYsMHhG
RiwweDk1LAorICAgIDB4ODUsMHg1MSwweDIzLDB4NDEsMHhENSwweEZCLDB4RjgsMHgwMCwweDg1
LDB4NTEsMHgyMywweDQxLDB4QkYsMHhENSwweDVGLDB4REMsCisgICAgMHg2NCwweDUxLDB4NDQs
MHg0OSwweEEyLDB4N0QsMHhENSwweDU1LDB4NjQsMHg1MSwweDQ0LDB4NDksMHgzMCwweDMyLDB4
M0UsMHgzMiwKKyAgICAweDA2LDB4NkEsMHg0NCwweDUxLDB4MEIsMHhBRiwweEZGLDB4RjUsMHg4
OCwweDcyLDB4ODUsMHg1OSwweEFBLDB4MEEsMHhCRiwweEY1LAorICAgIDB4QTgsMHg3QSwweDA2
LDB4NkEsMHg4OCwweDgwLDB4QUIsMHhBOSwweDg3LDB4NzIsMHgyNiwweDZBLDB4NzgsMHhCOCww
eDJGLDB4QUUsCisgICAgMHg4OCwweDdBLDB4MDUsMHg2MiwweEJELDB4QUYsMHgwOCwweDAyLDB4
QzgsMHg4MiwweDg4LDB4N0EsMHhENSwweDFELDB4MzUsMHhGRiwKKyAgICAweEU5LDB4ODIsMHg4
NywweDdBLDB4OTcsMHhCRSwweDhBLDB4QUIsMHg0RSwweEI0LDB4QzgsMHg4MiwweDJELDB4M0Qs
MHhCRCwweDM1LAorICAgIDB4QjMsMHhENSwweEFGLDB4QkMsMHhBMiwweEUzLDB4QTksMHg4OSww
eDMxLDB4Q0QsMHhEMCwweEJDLDB4N0UsMHhERSwweDdFLDB4RjgsCisgICAgMHhGMCwweEM0LDB4
QUYsMHhCQywweEZFLDB4RUEsMHhGQiwweEZGLDB4MTAsMHhDNSwweEIwLDB4QkMsMHhBQiwweEFG
LDB4QTksMHgzQiwKKyAgICAweDMxLDB4Q0QsMHhGMCwweEM0LDB4QTUsMHhFNSwweEFGLDB4QUYs
MHg1MSwweENELDB4MTAsMHhDNSwweDdGLDB4NkQsMHhDQiwweDhGLAorICAgIDB4NTEsMHhDRCww
eEYwLDB4QzQsMHhBOCwweEFFLDB4QjcsMHhBQSwweDkyLDB4Q0QsMHhGMCwweEM0LDB4MjcsMHhC
RiwweEZELDB4N0UsCisgICAgMHhEMywweERELDB4NkYsMHhCNCwweEYwLDB4NkEsMHg3RSwweDdG
LDB4OEYsMHhCNCwweDJELDB4QUMsMHgwQSwweEMwLDB4NkUsMHhGRiwKKyAgICAweDhGLDB4QjQs
MHgyRCwweEFDLDB4ODAsMHhBQiwweDZGLDB4N0YsMHg2RSwweEFDLDB4MkQsMHhBQywweDMwLDB4
N0UsMHg3NSwweDdELAorICAgIDB4NkYsMHhBQywweDBELDB4QTQsMHhBOCwweERGLDB4REQsMHg1
RCwweDZFLDB4QjQsMHhFRCwweDlCLDB4RUEsMHhFQiwweEZELDB4MkYsCisgICAgMHg3MywweENE
LDB4MEQsMHhBNCwweDU1LDB4NTUsMHhGNSwweDJCLDB4NzMsMHhDRCwweDJELDB4QTQsMHhENSww
eDM1LDB4MEIsMHgwMCwKKyAgICAweEIzLDB4Q0QsMHhGMCwweEJDLDB4QjUsMHhBQiwweDJBLDB4
QTAsMHg5MywweENELDB4NTIsMHhDNSwweDIzLDB4QzIsMHhGMiwweDdELAorICAgIDB4OTMsMHhD
RCwweDExLDB4QkQsMHhBMCwweEUwLDB4N0IsMHhEQiwweDczLDB4Q0QsMHgxMSwweEJELDB4MkYs
MHhBRiwweDJGLDB4MEQsCisgICAgMHhCNCwweEQ1LDB4NTIsMHhDNSwweDZBLDB4QzMsMHg4Qiww
eEEyLDB4NzMsMHhDRCwweEIwLDB4QjQsMHhBOCwweEQ4LDB4NzgsMHhFOCwKKyAgICAweDMyLDB4
QzUsMHg4RiwweEFDLDB4MDAsMHg4QSwweEY5LDB4NTUsMHgzMiwweEJELDB4RDAsMHhCNCwweDc0
LDB4RjcsMHhCQiwweEE5LAorICAgIDB4MTEsMHhCRCwweDkwLDB4QUMsMHhFQiwweEZBLDB4NkMs
MHhGRSwweEIwLDB4QjQsMHg2RiwweEFDLDB4QkEsMHhGNywweEFGLDB4QkIsCisgICAgMHg2Myww
eDU5LDB4MDIsMHg0OSwweDBBLDB4NzgsMHgwMiwweDA4LDB4ODQsMHg1OSwweDQzLDB4NTEsMHg3
QiwweDVBLDB4NzIsMHg1RSwKKyAgICAweDQzLDB4NTEsMHgwMywweDUxLDB4OTgsMHgzQSwweDIy
LDB4MkEsMHg2NCwweDU5LDB4MDIsMHg0OSwweEZDLDB4REUsMHhCQSwweEY3LAorICAgIDB4NDMs
MHg1MSwweEUzLDB4NDgsMHgwMCwweDgwLDB4QUEsMHhDQSwweDQzLDB4NTEsMHgyMywweDUxLDB4
RTAsMHhDMiwweDE5LDB4MkIsCisgICAgMHg2MywweDUxLDB4MjMsMHg1MSwweEZBLDB4RjgsMHhB
RSwweDczLDB4NjQsMHg1OSwweDIzLDB4NTEsMHhCRiwweEY2LDB4RkUsMHg1NywKKyAgICAweDYz
LDB4NTksMHgwMywweDUxLDB4QkUsMHhERiwweEJGLDB4MjgsMHg4NCwweDYxLDB4NDMsMHg1OSww
eDBELDB4N0IsMHhGQiwweEZCLAorICAgIDB4ODQsMHg2MSwweDQzLDB4NTksMHhGQywweEZFLDB4
QkYsMHhGRiwweDg0LDB4NjEsMHg0MywweDU5LDB4RUYsMHhCRCwweEJCLDB4RUYsCisgICAgMHg4
MywweDYxLDB4NjQsMHg1OSwweEZELDB4RkYsMHg1QiwweDdGLDB4QTQsMHg2MSwweDQzLDB4NTks
MHhBRCwweEFCLDB4RjIsMHhCQiwKKyAgICAweDg0LDB4NjEsMHg0MywweDU5LDB4RjAsMHg1RCww
eDdGLDB4N0YsMHg2MywweDU5LDB4MjMsMHg1MSwweDhFLDB4QUYsMHgyMiwweDIyLAorICAgIDB4
NjMsMHg1OSwweDIyLDB4NTEsMHhGMiwweDgwLDB4QzAsMHhBRiwweDQzLDB4NTksMHgwMywweDUx
LDB4ODAsMHhFQSwweEFFLDB4MDAsCisgICAgMHg2NCwweDU5LDB4MDMsMHg1MSwweEFBLDB4QUEs
MHg2QSwweEU4LDB4NjQsMHg1OSwweDAzLDB4NTEsMHhFMywweEVBLDB4RkYsMHg3RiwKKyAgICAw
eDIzLDB4NTEsMHhFMiwweDQ4LDB4ODgsMHhFOCwweDdBLDB4RkEsMHg0MywweDUxLDB4MDIsMHg0
OSwweDI1LDB4RDksMHhEMywweEZELAorICAgIDB4MjMsMHg1MSwweDAyLDB4NDksMHg4OCwweEIy
LDB4MjgsMHhBNCwweDIzLDB4NTEsMHgwMywweDQ5LDB4QzIsMHhCMiwweEUyLDB4MDIsCisgICAg
MHgyOSwweDkzLDB4NDMsMHg1OSwweEQ1LDB4RDUsMHhCNSwweDJELDB4RUMsMHhBQiwweEM3LDB4
OEEsMHgyRCwweDI5LDB4MEEsMHgyMiwKKyAgICAweENDLDB4QTMsMHg2QSwweDlCLDB4QTAsMHhC
OCwweDZDLDB4NUUsMHg2QSwweDlCLDB4NEEsMHg5MywweDY0LDB4MTQsMHhFNSwweDIyLAorICAg
IDB4OEEsMHg5QiwweDQ5LDB4OTMsMHgzNSwweEVELDB4RkYsMHg3RSwweDhCLDB4OUIsMHg2QSww
eDlCLDB4MDIsMHhCRiwweDdELDB4NTUsCisgICAgMHg4QiwweDlCLDB4NEEsMHg5QiwweDAwLDB4
QUEsMHhBRiwweEJGLDB4OEIsMHg5QiwweDZBLDB4OUIsMHgyMiwweDJBLDB4RDcsMHgyNywKKyAg
ICAweEFDLDB4QTMsMHgwOSwweDhCLDB4RTAsMHhBQSwweEYwLDB4NUMsMHhFOCwweDhBLDB4QTcs
MHg3QSwweDdDLDB4NTQsMHhFNCwweEY0LAorICAgIDB4QzcsMHg4MiwweDQ2LDB4NzIsMHg2RSww
eDZDLDB4NzgsMHhFOCwweDQ2LDB4NzIsMHg0NCwweDUxLDB4NzYsMHg1RSwweDdBLDB4RTAsCisg
ICAgMHg2NCwweDQ5LDB4MDMsMHg0OSwweEE4LDB4REYsMHhGRiwweEQ2LDB4NDMsMHg0OSwweDAz
LDB4NDEsMHgwMCwweDhBLDB4MjksMHhBRiwKKyAgICAweDQzLDB4NDksMHhFMywweDM4LDB4N0Es
MHg3RSwweEZFLDB4RTIsMHgyNSwweDQxLDB4RTMsMHg0MCwweDM1LDB4OTUsMHhCNSwweEZGLAor
ICAgIDB4ODQsMHg1MSwweDI0LDB4NDEsMHhBQiwweEI5LDB4MkQsMHg5OSwweEE1LDB4NTEsMHg0
NCwweDQ5LDB4NkEsMHg2MiwweEUzLDB4RUEsCisgICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweEZF
LDB4RkMsMHhGRSwweDVFLDB4NDQsMHg0OSwweEUzLDB4MzgsMHhENiwweEZFLDB4QkUsMHgzRiwK
KyAgICAweDQ0LDB4NDksMHgyNCwweDQxLDB4RjUsMHg3NiwweDc4LDB4NjgsMHgyMywweDQxLDB4
RTMsMHgzOCwweEE4LDB4QjgsMHg4RSwweEI4LAorICAgIDB4NDQsMHg0OSwweDAzLDB4NDEsMHg3
RiwweDdELDB4QkQsMHhFQSwweDIzLDB4NDEsMHhFMiwweDM4LDB4QjgsMHhCQSwweEQ4LDB4NUUs
CisgICAgMHg0NCwweDQxLDB4RTMsMHgzOCwweEZBLDB4RkUsMHhFRiwweDNGLDB4NDQsMHg0MSww
eEUyLDB4NDAsMHhFRiwweEY3LDB4QUIsMHhBOCwKKyAgICAweDQ0LDB4NDEsMHhFMiwweDM4LDB4
RDcsMHg3RiwweEVBLDB4RkEsMHhFMywweDQwLDB4MDMsMHgzOSwweEFBLDB4OEIsMHhBRiwweEZC
LAorICAgIDB4ODUsMHg1MSwweEUzLDB4NDAsMHhCRCwweDJELDB4MkYsMHgyRiwweEU2LDB4NjEs
MHg4NCwweDUxLDB4OEQsMHhBRCwweEFGLDB4QTMsCisgICAgMHg4NSwweDU5LDB4RTMsMHg0MCww
eEY4LDB4RDgsMHg3OCwweEI4LDB4NDQsMHg1MSwweEUzLDB4NDAsMHgwQSwweDBCLDB4QkYsMHhG
NywKKyAgICAweDY0LDB4NTEsMHgwMywweDQ5LDB4QTIsMHhBMCwweEE5LDB4MzUsMHg2NCwweDUx
LDB4MjMsMHg0OSwweDBBLDB4MEYsMHgyNywweEU1LAorICAgIDB4QTUsMHg1OSwweDQ0LDB4NDks
MHg4QSwweEEzLDB4OEYsMHhBRCwweDY1LDB4NDksMHhBMiwweDMwLDB4NUMsMHg1QywweDc4LDB4
RjgsCisgICAgMHhDMywweDMwLDB4QTIsMHgzMCwweEVGLDB4QkEsMHhCMCwweEMwLDB4MDMsMHgz
OSwweEEyLDB4MjgsMHgyRCwweEFGLDB4RjcsMHhBNywKKyAgICAweDIzLDB4NDEsMHhFMywweDM4
LDB4RkEsMHgzRCwweERELDB4N0QsMHgwMywweDM5LDB4QTIsMHgzMCwweDAwLDB4ODgsMHhBOCww
eEE3LAorICAgIDB4NjUsMHg0OSwweDAzLDB4MzksMHhBRCwweEFELDB4QUQsMHgwRCwweDY0LDB4
NTEsMHgyMywweDQ5LDB4RUEsMHhBMiwweDZCLDB4N0EsCisgICAgMHg2NCwweDUxLDB4NDQsMHg0
OSwweDNELDB4QTEsMHgwMiwweDAxLDB4ODUsMHg1OSwweDY0LDB4NTEsMHg2OSwweEI5LDB4QUIs
MHgwQSwKKyAgICAweEE1LDB4NTksMHg0NCwweDUxLDB4QTgsMHgyOCwweEFBLDB4QjYsMHhDNiww
eDU5LDB4ODUsMHg1MSwweDVBLDB4NjMsMHhERiwweEQ3LAorICAgIDB4ODUsMHg1MSwweDIzLDB4
NDksMHhGOCwweDVBLDB4N0MsMHg1QywweDI0LDB4NDEsMHgwMiwweDQxLDB4QkIsMHgzRiwweDBC
LDB4MDAsCisgICAgMHg0NCwweDQ5LDB4MDMsMHg0MSwweEZELDB4RTIsMHhDQSwweEU4LDB4NDQs
MHg0MSwweEUyLDB4MzgsMHhFMiwweEVCLDB4RkIsMHg1RSwKKyAgICAweDIzLDB4NDEsMHhFMiww
eDM4LDB4MkIsMHhCOSwweEJGLDB4QjksMHg0NCwweDQxLDB4MDMsMHg0MSwweDJBLDB4QjcsMHhB
RiwweEZCLAorICAgIDB4MjMsMHg0MSwweDAzLDB4NDEsMHgyOCwweDA4LDB4QzAsMHg3QiwweDIz
LDB4NDEsMHgwMywweDM5LDB4RkQsMHhDQiwweEIyLDB4RTMsCisgICAgMHgyMywweDQxLDB4QzIs
MHgzMCwweEI4LDB4RkMsMHhGOCwweEFBLDB4MDMsMHg0MSwweEMyLDB4MzgsMHhBMCwweEFFLDB4
RkEsMHg3MywKKyAgICAweDI0LDB4NDEsMHhFMywweDM4LDB4QUIsMHhGRiwweEI5LDB4QjUsMHg2
NCwweDQ5LDB4MDMsMHgzOSwweDBCLDB4QkYsMHhCRCwweEI1LAorICAgIDB4ODQsMHg0OSwweDIz
LDB4NDEsMHgzMiwweEJELDB4RUEsMHhGQSwweDg1LDB4NDksMHgyMywweDQxLDB4ODAsMHhFQSww
eERGLDB4NTUsCisgICAgMHg0NCwweDQxLDB4MDMsMHg0MSwweEE4LDB4QTAsMHhFMiwweDdDLDB4
NDQsMHg0OSwweEUyLDB4MzgsMHhFQSwweEEyLDB4QjAsMHg5RiwKKyAgICAweDY0LDB4NDksMHgw
MywweDM5LDB4MzUsMHhENSwweDU3LDB4NUYsMHg2NCwweDQ5LDB4MDIsMHgzOSwweDAwLDB4M0Is
MHhCQiwweEJELAorICAgIDB4ODUsMHg0OSwweDAzLDB4NDEsMHg2OCwweDdBLDB4QkUsMHhGNyww
eDY0LDB4NDksMHgwMywweDQxLDB4MkYsMHgzRCwweEFBLDB4MEEsCisgICAgMHhBNSwweDUxLDB4
NDQsMHg0OSwweDhBLDB4RkYsMHhGNSwweDVGLDB4QTUsMHg1MSwweDIzLDB4NDksMHhEQywweEE4
LDB4QTIsMHgwQSwKKyAgICAweEE1LDB4NTksMHgyMywweDQ5LDB4REYsMHhGQiwweEZBLDB4MkMs
MHg4NSwweDUxLDB4NDQsMHg0OSwweEFCLDB4QkYsMHg5RSwweEVDLAorICAgIDB4QTUsMHg1OSww
eDQ0LDB4NTEsMHhCNSwweEJGLDB4QUIsMHhGQiwweEE1LDB4NTksMHg2NCwweDUxLDB4QUIsMHhG
RiwweDk2LDB4RjUsCisgICAgMHgwNiwweDZBLDB4NjQsMHg1OSwweDIzLDB4M0YsMHhCRiwweEJC
LDB4NjcsMHg3MiwweEU2LDB4NjEsMHgwMCwweDAzLDB4OEQsMHhGNSwKKyAgICAweEE4LDB4N0Es
MHgwNiwweDZBLDB4MEEsMHhGQiwweEZGLDB4RDUsMHhDOSwweDgyLDB4NDYsMHg2QSwweEEyLDB4
ODIsMHhBRiwweEI1LAorICAgIDB4RTksMHg4MiwweDg4LDB4N0EsMHgzRiwweEI1LDB4QUYsMHhC
QSwweDBELDB4QUMsMHhDOCwweDgyLDB4MzUsMHgzNSwweEZELDB4OTUsCisgICAgMHhCMywweERE
LDB4MEMsMHhBNCwweDhBLDB4MDMsMHgwOSwweDBELDB4NzIsMHhENSwweENGLDB4QkMsMHg3RSww
eDVDLDB4NzgsMHg3OCwKKyAgICAweENGLDB4QkMsMHhBRiwweEJDLDB4OTgsMHhCQywweEJCLDB4
RDcsMHhGMCwweEM0LDB4QUYsMHhCQywweDJCLDB4QUIsMHhBRiwweEE1LAorICAgIDB4MTAsMHhD
NSwweENGLDB4QkMsMHgyQSwweDBCLDB4M0IsMHhGRiwweDMxLDB4Q0QsMHhGMCwweEM0LDB4QTgs
MHg4QSwweENGLDB4NzUsCisgICAgMHgzMSwweENELDB4RDAsMHhCQywweDAyLDB4ODAsMHhBOCww
eEFELDB4MzEsMHhDRCwweEFGLDB4QkMsMHhFMCwweEZBLDB4NkEsMHg2QSwKKyAgICAweEQwLDB4
QkMsMHgyRSwweEFDLDB4NjgsMHg3OCwweDVFLDB4REYsMHg0RSwweEFDLDB4MEQsMHhBNCwweEFC
LDB4QkYsMHg3RiwweEVGLAorICAgIDB4NEUsMHhBQywweDBELDB4QTQsMHhFQSwweENCLDB4QTks
MHhCRSwweEYwLDB4QkMsMHgyRCwweEE0LDB4NzUsMHhBOSwweDJGLDB4MEIsCisgICAgMHg5Myww
eEQ1LDB4NEUsMHhBQywweDU1LDB4QkYsMHgwQSwweDBBLDB4QjMsMHhENSwweDZGLDB4QjQsMHhE
NSwweEFBLDB4MjAsMHgwMCwKKyAgICAweEI0LDB4RDUsMHgxMSwweEM1LDB4MjksMHgwQSwweDAw
LDB4MDAsMHhCNCwweEQ1LDB4NzMsMHhDRCwweDIyLDB4MEEsMHgwNCwweEQ2LAorICAgIDB4RDQs
MHhENSwweDMyLDB4QzUsMHg3OCwweDU4LDB4N0MsMHg1OCwweDUyLDB4QzUsMHgxMiwweEJELDB4
MDIsMHg2QiwweDc1LDB4NUQsCisgICAgMHgzMiwweEJELDB4QjAsMHhBQywweEEwLDB4QkEsMHhB
RSwweDc3LDB4OTMsMHhDRCwweDExLDB4QkQsMHgzRCwweDJGLDB4MEQsMHgwOSwKKyAgICAweDkz
LDB4Q0QsMHgzMiwweEM1LDB4ODAsMHg4MCwweDgwLDB4NjAsMHg5MywweENELDB4QjAsMHhCNCww
eEU4LDB4RUEsMHhGRSwweDVGLAorICAgIDB4RjAsMHhCQywweDhGLDB4QUMsMHg5QSwweEE4LDB4
RkEsMHhBRiwweDExLDB4QkQsMHhCMCwweEFDLDB4MDIsMHhDMCwweEZBLDB4N0MsCisgICAgMHhE
MCwweEI0LDB4NkUsMHhBQywweEUyLDB4RUMsMHhGRSwweERGLDB4RDAsMHhCNCwweDhGLDB4QUMs
MHhENSwweERGLDB4RTksMHgzRiwKKyAgICAweDg0LDB4NTksMHgyMywweDUxLDB4QTgsMHhFRSww
eDVCLDB4NTYsMHg2MywweDUxLDB4MjMsMHg1MSwweEY4LDB4OTUsMHg5NSwweEE1LAorICAgIDB4
NjQsMHg1OSwweDAyLDB4NDksMHhFQSwweDZBLDB4N0MsMHhGQSwweDY0LDB4NTksMHgwMiwweDQ5
LDB4QkQsMHgyMiwweEVFLDB4RUEsCisgICAgMHg2NCwweDUxLDB4MDMsMHg1MSwweEVGLDB4N0Es
MHhFNywweEFGLDB4NjQsMHg1OSwweDIzLDB4NTEsMHhCRiwweENCLDB4QkIsMHhGQSwKKyAgICAw
eDYzLDB4NTksMHgyMywweDUxLDB4N0YsMHhGRCwweEFGLDB4QjMsMHg2MywweDU5LDB4MjMsMHg1
MSwweDdGLDB4RkQsMHg4QiwweDhCLAorICAgIDB4ODQsMHg2MSwweDQzLDB4NTksMHhBOSwweDJG
LDB4MkEsMHhFQSwweDg0LDB4NjEsMHg0MywweDU5LDB4RjgsMHg3QywweDc4LDB4RTMsCisgICAg
MHg4NCwweDYxLDB4NDMsMHg1OSwweEFELDB4QjUsMHg5RiwweEQ1LDB4ODQsMHg2MSwweDYzLDB4
NTksMHhBMSwweEFFLDB4NTUsMHg4NSwKKyAgICAweDg0LDB4NjEsMHg0MywweDU5LDB4Q0EsMHhB
QSwweEVBLDB4RkYsMHg2MywweDU5LDB4MjMsMHg1MSwweDgzLDB4QUYsMHhCNCwweDBFLAorICAg
IDB4NjMsMHg1OSwweDIyLDB4NTksMHg4MCwweDgyLDB4M0UsMHhFRSwweDYzLDB4NTksMHgyMyww
eDUxLDB4QTIsMHhFRSwweEVCLDB4RUYsCisgICAgMHg0MywweDU5LDB4MDIsMHg1MSwweEEwLDB4
M0UsMHgzRiwweEY4LDB4NjQsMHg1OSwweDIzLDB4NTEsMHhFQSwweEYyLDB4RjIsMHhGQiwKKyAg
ICAweDQzLDB4NTksMHhFMiwweDQ4LDB4QjAsMHg3QSwweEZFLDB4QUEsMHgyMywweDUxLDB4RTIs
MHg0OCwweDYyLDB4RUIsMHhBRiwweEFBLAorICAgIDB4MjMsMHg1MSwweEUyLDB4NDgsMHgzNyww
eDhBLDB4ODIsMHgwMiwweDIzLDB4NTEsMHhFMiwweDQ4LDB4RTgsMHhGMCwweDZCLDB4MkUsCisg
ICAgMHgyMywweDUxLDB4RTIsMHg0OCwweDNCLDB4RkQsMHhGNSwweEJGLDB4QTUsMHg2OSwweEUy
LDB4NDgsMHhERiwweEJGLDB4QkYsMHgyRiwKKyAgICAweDhCLDB4OUIsMHg0NCwweDU5LDB4MkQs
MHgyQiwweDBCLDB4MDIsMHhDQywweEEzLDB4OEIsMHg5QiwweDJCLDB4NjIsMHhGQSwweERFLAor
ICAgIDB4QUMsMHhBMywweDZBLDB4OUIsMHhFQywweEE5LDB4MkEsMHhCQSwweDhCLDB4OUIsMHgy
OSwweDkzLDB4MkEsMHgyMiwweEM4LDB4N0MsCisgICAgMHg4QSwweDlCLDB4MjksMHg5MywweEUw
LDB4RTAsMHhFRSwweERELDB4NDksMHg5MywweDA5LDB4OTMsMHg4MCwweDhBLDB4QTgsMHhGRiwK
KyAgICAweDZBLDB4OUIsMHgyOSwweDkzLDB4MEEsMHg4RiwweEY4LDB4RUQsMHg4QiwweDlCLDB4
NEEsMHg5MywweEI4LDB4QkIsMHhBRiwweEFGLAorICAgIDB4NkEsMHg5QiwweEU4LDB4OEEsMHg3
OCwweEUwLDB4NjgsMHg2MCwweEM4LDB4ODIsMHg4NywweDdBLDB4QkMsMHhBOCwweEEwLDB4ODMs
CisgICAgMHhFOCwweDgyLDB4QTcsMHg3QSwweERGLDB4OEYsMHgwRiwweEE1LDB4QzgsMHg4Miww
eEE1LDB4NjEsMHg3QSwweEY4LDB4RTAsMHhBOCwKKyAgICAweEU2LDB4NjEsMHgwMywweDQxLDB4
NTcsMHg1NiwweDU4LDB4NzgsMHgyMywweDQ5LDB4RTMsMHg0MCwweEFBLDB4M0UsMHhGQSwweEUw
LAorICAgIDB4NjQsMHg1MSwweDAzLDB4NDEsMHhGRiwweEZGLDB4MzUsMHhCNSwweDY0LDB4NTEs
MHgwMywweDQxLDB4NTUsMHhGRiwweEVBLDB4QzIsCisgICAgMHg0NCwweDQ5LDB4MDMsMHg0MSww
eDJBLDB4RkYsMHg3MiwweEVBLDB4NjQsMHg0OSwweDAzLDB4NDEsMHgwMywweEFGLDB4RUYsMHhG
NSwKKyAgICAweDY1LDB4NDksMHhFMywweDM4LDB4RkMsMHg1RSwweDdGLDB4NkYsMHg0NCwweDQ5
LDB4RTIsMHgzOCwweDM3LDB4QjUsMHg3NSwweDU1LAorICAgIDB4NjUsMHg0OSwweEUyLDB4Mzgs
MHgyQSwweDBBLDB4QTksMHhBRCwweDY0LDB4NDksMHgyMywweDQxLDB4NUMsMHhERiwweDI3LDB4
Q0IsCisgICAgMHg2NCwweDQ5LDB4MDIsMHg0MSwweEZCLDB4RkIsMHg3QSwweENFLDB4MjMsMHg0
MSwweEMyLDB4MzgsMHg3QywweEI4LDB4QkEsMHhFRiwKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4
LDB4MEEsMHgyQiwweEFGLDB4QkUsMHg0MywweDQ5LDB4RTMsMHgzOCwweEI4LDB4RkYsMHhFRCww
eEZGLAorICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHhBQSwweDM4LDB4QkYsMHhERSwweDI0LDB4
NDEsMHhFMywweDM4LDB4QjcsMHgzNywweDA3LDB4QTgsCisgICAgMHg4NSwweDUxLDB4MjQsMHg0
OSwweDI3LDB4MEIsMHgyQiwweEJGLDB4RTYsMHg2MSwweDg1LDB4NTksMHgyQSwweDIyLDB4ODgs
MHhCRCwKKyAgICAweEU2LDB4NjEsMHg0NCwweDUxLDB4NUMsMHg3OCwweEUwLDB4RkUsMHg4NSww
eDUxLDB4MDQsMHg0OSwweERELDB4QUIsMHhBQSwweDA4LAorICAgIDB4NjQsMHg1MSwweDI0LDB4
NDksMHhFNywweEFBLDB4MjgsMHhFOCwweDg1LDB4NTEsMHgyMywweDQ5LDB4RTUsMHgyRSwweDJB
LDB4MEIsCisgICAgMHhBNSwweDUxLDB4MjMsMHg0OSwweEJGLDB4RkUsMHhEQywweDdBLDB4NDQs
MHg0OSwweEMzLDB4MzgsMHg3OCwweDU4LDB4NUUsMHg1RSwKKyAgICAweEMzLDB4MzAsMHhBMiww
eDMwLDB4OEMsMHg0OCwweDdFLDB4REQsMHhDMiwweDMwLDB4QTIsMHgyOCwweDgyLDB4OEEsMHg5
NSwweDJFLAorICAgIDB4RTMsMHgzOCwweEMyLDB4MzAsMHg0MSwweDQxLDB4REYsMHhCNiwweDAz
LDB4NDEsMHhBMiwweDMwLDB4QUQsMHhCRSwweDJGLDB4MkYsCisgICAgMHg2NCwweDUxLDB4MDMs
MHgzOSwweDJELDB4QkQsMHgwRiwweDJCLDB4NjQsMHg1MSwweDI0LDB4NDksMHhFQSwweDYwLDB4
RkMsMHg3QSwKKyAgICAweDg1LDB4NTEsMHgyMywweDQ5LDB4MjksMHgwOSwweEJELDB4M0YsMHhB
NSwweDU5LDB4NDQsMHg1MSwweEFBLDB4QTMsMHg2RSwweDZGLAorICAgIDB4ODUsMHg1OSwweDI0
LDB4NDksMHgyQSwweEFBLDB4QUEsMHg1QiwweDg1LDB4NTEsMHg0NCwweDQ5LDB4QkEsMHhGMiww
eEUwLDB4NTEsCisgICAgMHg4NSwweDUxLDB4MDMsMHg0MSwweEY4LDB4RkEsMHg3RSwweDVGLDB4
MjMsMHg0MSwweDAzLDB4NDEsMHgyRSwweDg4LDB4MDAsMHgzMCwKKyAgICAweDIzLDB4NDEsMHhF
MywweDM4LDB4QTAsMHhFOCwweEZBLDB4N0YsMHg0NCwweDQxLDB4RTIsMHgzOCwweDdBLDB4NzMs
MHhGNSwweEQ1LAorICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHgxNSwweEQ1LDB4QjcsMHhEQiww
eDIzLDB4NDEsMHhFMiwweDM4LDB4QTIsMHg4OCwweEUzLDB4QUIsCisgICAgMHg0NCwweDQ5LDB4
RTIsMHgzOCwweEY3LDB4NzcsMHhBRSwweDIyLDB4NDQsMHg0OSwweDAzLDB4MzksMHhENSwweEY1
LDB4RkUsMHhEOCwKKyAgICAweDIzLDB4NDEsMHgwMywweDM5LDB4NzYsMHgzOCwweDAwLDB4MEIs
MHgyMywweDQxLDB4RTIsMHgzOCwweEZELDB4RTAsMHhFMCwweDgwLAorICAgIDB4MjMsMHg0MSww
eEUyLDB4MzgsMHgxNywweEZFLDB4REEsMHgzRiwweDQ0LDB4NDEsMHgwMywweDQxLDB4MjcsMHgw
OSwweDI3LDB4OUYsCisgICAgMHg0NCwweDQxLDB4MjMsMHg0MSwweDcyLDB4RTAsMHgwOCwweEUw
LDB4NDQsMHg0MSwweDAzLDB4MzksMHhGQSwweDdBLDB4N0UsMHg1RiwKKyAgICAweDQ0LDB4NDEs
MHhFMiwweDM4LDB4RkUsMHhENSwweDU1LDB4REQsMHgyMywweDQxLDB4QzIsMHgzMCwweDNBLDB4
QUEsMHhEQSwweEY4LAorICAgIDB4NDMsMHg0MSwweDAzLDB4MzksMHg3QSwweEZCLDB4RjUsMHg3
RCwweDQzLDB4NDEsMHgwMywweDM5LDB4MjksMHhFRiwweEVCLDB4RjksCisgICAgMHgyMywweDQx
LDB4MDMsMHg0MSwweDA4LDB4RjcsMHhGRSwweEZBLDB4NjQsMHg0OSwweDAzLDB4NDEsMHgwMiww
eDI5LDB4RkQsMHg1NSwKKyAgICAweDg1LDB4NTEsMHgyMywweDQxLDB4RkEsMHhFMiwweEEzLDB4
QTksMHg4NSwweDUxLDB4MjQsMHg0OSwweEFGLDB4QjUsMHhCRSwweEJBLAorICAgIDB4QTUsMHg1
MSwweDI0LDB4NDksMHg4QSwweEFBLDB4RUIsMHhERiwweEE1LDB4NTksMHg0NCwweDQ5LDB4RkEs
MHhBMiwweDJCLDB4QUQsCisgICAgMHhFNiwweDYxLDB4NjQsMHg1MSwweEQ3LDB4RkUsMHgzRiww
eDJBLDB4MjcsMHg2QSwweDY0LDB4NTEsMHhENSwweEZGLDB4M0YsMHgwQSwKKyAgICAweDI2LDB4
NkEsMHg4NCwweDU5LDB4QkQsMHhGQiwweEVDLDB4RTgsMHgyNiwweDZBLDB4QzUsMHg2MSwweEY3
LDB4RUUsMHhBNSwweDNELAorICAgIDB4MjcsMHg2QSwweEM1LDB4NjEsMHhGQSwweEQ2LDB4OUEs
MHhDMCwweEE4LDB4N0EsMHgwNiwweDYyLDB4MkQsMHgzRCwweEQ1LDB4RjUsCisgICAgMHhDOSww
eDgyLDB4NjcsMHg3MiwweDBBLDB4QUEsMHg1RiwweERELDB4MEEsMHg4QiwweDY3LDB4NzIsMHgz
QiwweEJELDB4QkQsMHg3NywKKyAgICAweDUyLDB4Q0QsMHhFOSwweDgyLDB4MEIsMHgwRCwweDJE
LDB4QjUsMHg3MiwweEQ1LDB4RDAsMHhCQywweDc4LDB4NzgsMHg2OCwweEVBLAorICAgIDB4RjAs
MHhDNCwweDhGLDB4QjQsMHhGRSwweDdFLDB4NkEsMHg2MCwweENGLDB4QkMsMHg2RSwweEI0LDB4
MEEsMHgyQSwweDJGLDB4QjksCisgICAgMHhGMCwweEM0LDB4OEYsMHhCNCwweEE4LDB4QUEsMHgy
QiwweEJELDB4RjAsMHhDNCwweENGLDB4QkMsMHgwOSwweDJGLDB4RjUsMHg1NiwKKyAgICAweDEw
LDB4QzUsMHhBRiwweEJDLDB4MDIsMHhFOCwweEZFLDB4NUQsMHhGMCwweEJDLDB4NEUsMHhBQyww
eEU4LDB4RkEsMHhGRSwweDdBLAorICAgIDB4OEYsMHhCNCwweDJELDB4QUMsMHhERiwweDc3LDB4
RjUsMHgyQSwweEQwLDB4QkMsMHgwRCwweEE0LDB4NUQsMHhERCwweEZELDB4MkEsCisgICAgMHgz
MSwweEM1LDB4MEQsMHhBNCwweEQ1LDB4RjcsMHhBRiwweDAyLDB4NTIsMHhDRCwweEFGLDB4QjQs
MHhBRCwweDBCLDB4MEEsMHgwMCwKKyAgICAweDcyLDB4Q0QsMHgzMiwweEM1LDB4MDcsMHgwOCww
eDBBLDB4RkIsMHhENCwweEQ1LDB4NTIsMHhDNSwweDBBLDB4MkIsMHhCRCwweDc1LAorICAgIDB4
RDQsMHhENSwweDkzLDB4Q0QsMHhFMiwweDI4LDB4RUQsMHhGRCwweEI0LDB4RDUsMHg1MiwweEM1
LDB4QUUsMHhGQSwweDdDLDB4RTAsCisgICAgMHg5MywweENELDB4RDAsMHhCNCwweEUwLDB4NkEs
MHhGOCwweDc4LDB4MTIsMHhCRCwweDkwLDB4QUMsMHhFOCwweDdBLDB4N0UsMHg3RiwKKyAgICAw
eEFGLDB4QUMsMHg2RiwweEFDLDB4ODIsMHg5QiwweDk3LDB4QkQsMHg5MywweENELDB4RDAsMHhC
NCwweDBELDB4OEYsMHgyRCwweEFELAorICAgIDB4OTMsMHhDRCwweEQxLDB4QjQsMHg4MCwweEUw
LDB4N0EsMHg1NywweEYxLDB4QkMsMHg2RiwweEE0LDB4NzgsMHhEOCwweERFLDB4RjcsCisgICAg
MHhEMCwweEI0LDB4OTAsMHhBQywweDBBLDB4MDMsMHgwMywweDBBLDB4RjAsMHhCNCwweDhGLDB4
QUMsMHhFQywweDdBLDB4RkEsMHhGQSwKKyAgICAweEIwLDB4QjQsMHg0RiwweEE0LDB4QTgsMHhB
QSwweDI2LDB4ODAsMHhGMSwweEI0LDB4OEYsMHhBQywweDM3LDB4MkQsMHgwRiwweDJCLAorICAg
IDB4NjQsMHg1OSwweDAzLDB4NDksMHhGOCwweEFGLDB4RUYsMHhGRCwweDY0LDB4NTksMHgyMyww
eDUxLDB4RkIsMHhEOSwweEZGLDB4NUYsCisgICAgMHg0MywweDUxLDB4MDMsMHg0OSwweEEwLDB4
NkIsMHhBOCwweDBBLDB4NDMsMHg1MSwweDAyLDB4NDksMHhCOCwweDNFLDB4MkYsMHgwOCwKKyAg
ICAweDY0LDB4NTksMHgyMywweDUxLDB4OUUsMHhEMSwweEE5LDB4RTMsMHg4NCwweDU5LDB4MjMs
MHg1MSwweEY4LDB4N0IsMHhGRiwweEFCLAorICAgIDB4NjMsMHg1OSwweDIzLDB4NTEsMHhCMyww
eEJFLDB4QkUsMHhGRSwweDY0LDB4NTksMHg0MywweDU5LDB4OEQsMHgwQSwweEZFLDB4RDgsCisg
ICAgMHg4NCwweDYxLDB4NDMsMHg1OSwweEVCLDB4QjMsMHg2RCwweDY5LDB4QTQsMHg2MSwweDQz
LDB4NTksMHhFMywweDdCLDB4RkQsMHhGNSwKKyAgICAweDg0LDB4NjEsMHg0MywweDU5LDB4N0Es
MHg3QiwweDdCLDB4ODksMHg4NCwweDU5LDB4NDMsMHg1OSwweEFGLDB4RDksMHg3RiwweDdFLAor
ICAgIDB4NjMsMHg1OSwweDQzLDB4NTksMHhFOCwweDVBLDB4NzcsMHg2NSwweDYzLDB4NTksMHgw
MiwweDUxLDB4MDgsMHhCQSwweDdBLDB4NkEsCisgICAgMHg2NCwweDU5LDB4MjMsMHg1MSwweEFB
LDB4OEIsMHgzRCwweDM1LDB4NjQsMHg1OSwweDIzLDB4NTEsMHhFQSwweEZBLDB4N0UsMHhGRSwK
KyAgICAweDQzLDB4NTksMHgyMywweDUxLDB4NjMsMHhBQSwweEY3LDB4NzMsMHg0NCwweDU5LDB4
MDMsMHg1MSwweDAyLDB4QTIsMHhCQSwweDYzLAorICAgIDB4MjMsMHg1MSwweDAyLDB4NDksMHhD
QSwweDZBLDB4NkYsMHg1OSwweDQzLDB4NTEsMHgwMiwweDQ5LDB4N0YsMHhEQSwweEEzLDB4QkIs
CisgICAgMHgyMywweDUxLDB4MDMsMHg0OSwweEJELDB4QjUsMHgzNCwweEFELDB4MjMsMHg1MSww
eDAzLDB4NDksMHhGRiwweEJCLDB4RkIsMHg0MywKKyAgICAweDQyLDB4NTEsMHgwMiwweDQ5LDB4
RjUsMHg3RiwweEJGLDB4QkYsMHg0QSwweDkzLDB4NDMsMHg1OSwweEY1LDB4QjUsMHgyRCwweDJC
LAorICAgIDB4Q0MsMHhBMywweDI5LDB4OTMsMHgwRCwweDAzLDB4MDIsMHhBMiwweENDLDB4QTMs
MHg0QSwweDlCLDB4RTAsMHhFOCwweEZDLDB4REUsCisgICAgMHg4QiwweDlCLDB4MjksMHg5Myww
eEE4LDB4QUMsMHhGQSwweDdBLDB4NkEsMHg5QiwweDJBLDB4OTMsMHg3MiwweEFBLDB4QkYsMHg5
RCwKKyAgICAweDZCLDB4OUIsMHgyOSwweDkzLDB4RkYsMHhDQiwweEU3LDB4NTcsMHgyOSwweDkz
LDB4MDksMHg4QiwweEZBLDB4MzgsMHgzOCwweDIwLAorICAgIDB4NkIsMHg5QiwweDI5LDB4OTMs
MHhFRCwweEY1LDB4M0QsMHhBRCwweDhCLDB4OUIsMHg0QSwweDlCLDB4RUYsMHhBQiwweDBCLDB4
ODMsCisgICAgMHg2QSwweDlCLDB4QzgsMHg4MiwweDYwLDB4NjAsMHhGMCwweEY4LDB4QzgsMHg4
MiwweDg3LDB4N0EsMHhFOCwweDc0LDB4NUUsMHhENiwKKyAgICAweEM4LDB4ODIsMHg2NiwweDcy
LDB4MEEsMHhCQiwweEZGLDB4RkQsMHhBOCwweDdBLDB4NjcsMHg3MiwweEY3LDB4N0YsMHhFQyww
eDM2LAorICAgIDB4NjgsMHg3QSwweDQ0LDB4NDksMHg3QSwweEU4LDB4ODAsMHhBMCwweEM1LDB4
NjEsMHgwMywweDQ5LDB4NTUsMHg1RiwweDU2LDB4NTgsCisgICAgMHgyMywweDQ5LDB4RTMsMHg0
MCwweDhGLDB4OTcsMHgzNywweEVCLDB4NjQsMHg0OSwweDIzLDB4NDksMHgwRCwweDg1LDB4QjUs
MHhCNSwKKyAgICAweDY0LDB4NTEsMHgwMywweDQxLDB4N0UsMHg1QSwweEY4LDB4RTAsMHgyMyww
eDQxLDB4MDMsMHg0MSwweEY2LDB4MjEsMHg0MSwweDVGLAorICAgIDB4MDMsMHg0MSwweEUyLDB4
MzgsMHhGOCwweEU4LDB4NUMsMHg1NiwweDAzLDB4NDEsMHhDMiwweDM4LDB4RUYsMHhGQSwweDM1
LDB4QkUsCisgICAgMHg0NCwweDQ5LDB4RTIsMHgzOCwweEFELDB4M0YsMHhERSwweEFCLDB4NjQs
MHg0OSwweDIzLDB4NDEsMHg4QiwweEY5LDB4RjUsMHhBRCwKKyAgICAweDQ0LDB4NDEsMHgwMyww
eDQxLDB4QzYsMHg1NywweEY2LDB4RTgsMHgwMywweDQxLDB4QzIsMHgzOCwweEZFLDB4QTAsMHg4
MCwweDcwLAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhBQSwweEFFLDB4RUYsMHhCNywweDI0
LDB4NDEsMHhFMywweDM4LDB4NUUsMHhERiwweDFGLDB4RUQsCisgICAgMHgyNCwweDQxLDB4RTMs
MHgzOCwweDlCLDB4QjYsMHhBQywweEFBLDB4NDUsMHg0MSwweDA0LDB4NDEsMHhFRiwweEZBLDB4
NUYsMHg3NywKKyAgICAweDg1LDB4NTEsMHgyNCwweDQ5LDB4RkYsMHhERCwweERCLDB4NTUsMHg4
NSwweDU5LDB4MjQsMHg0OSwweDAyLDB4QUIsMHgyRiwweERELAorICAgIDB4ODUsMHg1OSwweDI0
LDB4NDksMHgyQSwweEU4LDB4REUsMHhGRiwweEM2LDB4NTksMHg0NCwweDUxLDB4MEIsMHgyQiww
eDJELDB4QkQsCisgICAgMHhDNiwweDYxLDB4MjMsMHg0OSwweDdFLDB4NzgsMHhDOCwweEEyLDB4
QTUsMHg1OSwweDI0LDB4NDksMHgyOSwweEI5LDB4QTksMHhBQiwKKyAgICAweEE2LDB4NTksMHgy
MywweDQxLDB4NkEsMHg2MCwweEZBLDB4NkUsMHgyMywweDQ5LDB4QTMsMHgzMCwweDdBLDB4NkUs
MHhGQywweEZFLAorICAgIDB4QzIsMHgzMCwweDgzLDB4MzAsMHgyQiwweEFBLDB4QUYsMHgyRCww
eDAzLDB4MzksMHhBMiwweDMwLDB4RjcsMHhBNywweDJCLDB4MEQsCisgICAgMHgyNCwweDQxLDB4
RTMsMHgzOCwweEZELDB4RUYsMHhBQSwweDhFLDB4MjQsMHg0MSwweEUzLDB4MzgsMHhCRiwweEJC
LDB4QkYsMHhCNywKKyAgICAweEE1LDB4NTksMHgyNCwweDQxLDB4QUQsMHhFQiwweDBELDB4MjEs
MHhBNiwweDU5LDB4MjMsMHg0OSwweEZGLDB4RjYsMHhERSwweDM4LAorICAgIDB4QTUsMHg1OSww
eDQ0LDB4NTEsMHhCNywweDNELDB4MjcsMHhCQiwweEE1LDB4NTksMHg0NCwweDUxLDB4RkEsMHg2
RSwweEVBLDB4ODgsCisgICAgMHg2NCwweDUxLDB4MDMsMHg0OSwweDVDLDB4NTYsMHg1RSwweDU4
LDB4MjQsMHg0OSwweEUzLDB4NDAsMHgyMiwweEZELDB4QTMsMHgwMiwKKyAgICAweDQ0LDB4NDks
MHgwMywweDM5LDB4RTgsMHhBQSwweDRBLDB4RUEsMHgyMywweDQxLDB4QzIsMHgzOCwweEY4LDB4
RUIsMHhGQiwweDdFLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzgsMHhFRSwweDk3LDB4MTcsMHgy
NywweDAzLDB4NDEsMHhFMywweDM4LDB4MkIsMHgyRiwweEZFLDB4RkUsCisgICAgMHg0NCwweDQx
LDB4MDMsMHg0MSwweDU3LDB4QTEsMHgwQiwweEE5LDB4NjQsMHg0OSwweDIzLDB4NDEsMHg1RCww
eDdGLDB4NjIsMHhDMiwKKyAgICAweDY0LDB4NDksMHgyMywweDQxLDB4MjksMHgwRCwweEI1LDB4
OTUsMHg4NSwweDQ5LDB4MjMsMHg0MSwweDU4LDB4NTIsMHg1QSwweDVFLAorICAgIDB4MjMsMHg0
MSwweEUyLDB4MzgsMHhFQSwweEZFLDB4RUYsMHhGRiwweDI0LDB4NDEsMHhFMiwweDM4LDB4OTks
MHhCOSwweEFGLDB4RTcsCisgICAgMHg0NCwweDQxLDB4RTIsMHgzOCwweEY3LDB4N0UsMHhGQSww
eEFGLDB4NDQsMHg0MSwweEUyLDB4MzgsMHgzRiwweEFELDB4QkYsMHhCRSwKKyAgICAweDQ0LDB4
NDEsMHgwMywweDM5LDB4QTAsMHhBQiwweDc3LDB4N0EsMHgyMywweDQxLDB4RTIsMHgzOCwweEU4
LDB4NzgsMHg2QSwweDcyLAorICAgIDB4MDMsMHgzOSwweEUzLDB4MzgsMHhGQiwweEVGLDB4M0Ys
MHgyRCwweDIzLDB4MzksMHhFMiwweDM4LDB4QUEsMHhBOCwweDQzLDB4ODMsCisgICAgMHgyMyww
eDM5LDB4RTIsMHgzOCwweDhCLDB4QUQsMHhFNSwweDVELDB4MjMsMHg0MSwweEUzLDB4MzgsMHg4
QSwweEJFLDB4QUEsMHhBMiwKKyAgICAweDQ0LDB4NDksMHhFMywweDM4LDB4RkIsMHg2RiwweEZB
LDB4MDIsMHg0NCwweDQ5LDB4RTMsMHg0MCwweEY3LDB4RUYsMHgzRiwweEFBLAorICAgIDB4NjQs
MHg0OSwweDIzLDB4NDEsMHhDQiwweEE5LDB4QkIsMHgzQSwweEE1LDB4NTEsMHg0NCwweDQ5LDB4
RkIsMHhFQSwweEFCLDB4MzcsCisgICAgMHhBNSwweDU5LDB4NDQsMHg0OSwweERGLDB4N0YsMHhE
NiwweDdDLDB4QTUsMHg1OSwweDIzLDB4NDksMHgyRiwweEJGLDB4RkYsMHhENywKKyAgICAweEM1
LDB4NjEsMHg2NCwweDQ5LDB4QUEsMHhBRiwweDI3LDB4MjUsMHg2NywweDcyLDB4QzUsMHg1OSww
eDI5LDB4MjUsMHhENSwweDU1LAorICAgIDB4ODgsMHg3MiwweEU1LDB4NjEsMHg3RSwweEM4LDB4
OEIsMHhCNSwweDY3LDB4NzIsMHhBNCwweDU5LDB4REQsMHhGQiwweEY4LDB4ODgsCisgICAgMHg0
NywweDcyLDB4RTYsMHg2MSwweDhBLDB4QkYsMHgzRiwweEZGLDB4QzksMHg4MiwweDI2LDB4NkEs
MHhCNSwweDJELDB4MkIsMHgyRCwKKyAgICAweDBBLDB4OEIsMHg2NywweDcyLDB4NTcsMHg3Qiww
eEVFLDB4QTgsMHhBOCwweDdBLDB4MjcsMHg3MiwweEU3LDB4QTksMHhBQSwweEE4LAorICAgIDB4
RUQsMHhBMywweDg4LDB4N0EsMHgzRCwweEI1LDB4RjUsMHhGRiwweDUxLDB4Q0QsMHhFRCwweEFC
LDB4QTIsMHgwMywweDA5LDB4MDksCisgICAgMHgxMCwweEM1LDB4QUYsMHhCQywweDdFLDB4N0Es
MHg2QSwweEEwLDB4Q0YsMHhCQywweDZFLDB4QjQsMHg3NywweDU3LDB4RjcsMHg1QywKKyAgICAw
eENGLDB4QkMsMHg2RSwweEI0LDB4MkQsMHhCRiwweEZGLDB4N0QsMHhDRiwweEJDLDB4NkUsMHhC
NCwweDgwLDB4QTgsMHhGMywweEQ3LAorICAgIDB4QUYsMHhCNCwweDZGLDB4QjQsMHhBMCwweERD
LDB4REYsMHg3RSwweDMxLDB4Q0QsMHg4RiwweEI0LDB4NzcsMHhBRCwweDJGLDB4MjksCisgICAg
MHg1MiwweENELDB4QUYsMHhCQywweEZELDB4QUIsMHg4QSwweDIwLDB4NTEsMHhDNSwweEYwLDB4
QzQsMHg1NSwweEI2LDB4OEUsMHhBMiwKKyAgICAweDcyLDB4Q0QsMHhGMCwweEJDLDB4QTcsMHgz
NywweEFGLDB4MkEsMHhCMywweEQ1LDB4NzIsMHhDRCwweDU1LDB4QUIsMHg4MywweDhCLAorICAg
IDB4QjMsMHhENSwweDEwLDB4QkQsMHg3RiwweEZBLDB4RkEsMHhFMCwweDUyLDB4QzUsMHgxMSww
eEJELDB4MEQsMHgyRiwweEVELDB4N0UsCisgICAgMHg5MywweENELDB4MTEsMHhCRCwweDgyLDB4
M0YsMHhGRiwweEY1LDB4QjMsMHhDRCwweDUyLDB4QzUsMHgwMCwweDAyLDB4QUEsMHhENywKKyAg
ICAweDkzLDB4Q0QsMHhEMSwweEI0LDB4NzgsMHhBMCwweDAwLDB4MDAsMHg3MywweENELDB4QjAs
MHhCNCwweDU1LDB4NUYsMHg3QywweDYwLAorICAgIDB4RDEsMHhCNCwweDJGLDB4QTQsMHhCRSww
eEJGLDB4M0YsMHgyOCwweDMyLDB4QzUsMHg5MCwweEFDLDB4MDMsMHg4MiwweDQyLDB4NjIsCisg
ICAgMHhEMCwweEI0LDB4Q0QsMHg5MywweEE4LDB4RkEsMHg3RiwweDU3LDB4RjEsMHhCNCwweDBF
LDB4OUMsMHhCQSwweDJCLDB4MkQsMHhBRiwKKyAgICAweEYxLDB4QjQsMHhCMCwweEI0LDB4QkQs
MHhCNiwweEY1LDB4RDUsMHhEMCwweEI0LDB4OTAsMHhBQywweEJBLDB4QzgsMHhFQSwweDdBLAor
ICAgIDB4RDAsMHhCNCwweDhGLDB4QUMsMHgyRSwweEI2LDB4NTcsMHhENywweDExLDB4QkQsMHg5
MCwweEFDLDB4MkYsMHhBRiwweEI5LDB4NkYsCisgICAgMHg0MywweDUxLDB4MDIsMHg0OSwweEJE
LDB4RkYsMHg1QSwweDcyLDB4NDMsMHg1MSwweEUyLDB4NDgsMHhBMiwweEY4LDB4RkYsMHhBRSwK
KyAgICAweDY0LDB4NTksMHgyMywweDUxLDB4NzUsMHhGNSwweEVGLDB4OEYsMHg2NCwweDU5LDB4
NDMsMHg1MSwweEZELDB4REQsMHg3NSwweDVFLAorICAgIDB4NjQsMHg1OSwweDAyLDB4NDksMHg2
QiwweDZBLDB4QUEsMHgyMiwweEE0LDB4NjEsMHgwMiwweDQ5LDB4RUYsMHhBRCwweEFGLDB4OEEs
CisgICAgMHhBNCwweDYxLDB4NDQsMHg1OSwweEQ3LDB4QkQsMHhGRiwweEQ1LDB4ODQsMHg2MSww
eDIzLDB4NTEsMHhGOCwweEJBLDB4N0UsMHhGRiwKKyAgICAweDg0LDB4NjEsMHgyMywweDUxLDB4
MkEsMHgyRSwweDJGLDB4MEIsMHg4NCwweDU5LDB4NDMsMHg1OSwweEFELDB4OEEsMHhBRSwweEVF
LAorICAgIDB4ODQsMHg2MSwweDIzLDB4NTEsMHg4OCwweEMyLDB4QUEsMHg3RSwweDYzLDB4NTks
MHgwMywweDUxLDB4QTAsMHg4MiwweDk4LDB4QUUsCisgICAgMHg0MywweDU5LDB4MjMsMHg1MSww
eDA4LDB4MzYsMHgyOCwweDIwLDB4NjQsMHg1OSwweDIzLDB4NTEsMHg5QiwweERGLDB4QkIsMHhG
OCwKKyAgICAweDY0LDB4NTksMHgwMiwweDUxLDB4M0YsMHgzQiwweERGLDB4QkEsMHg2NCwweDU5
LDB4MjMsMHg1MSwweDdFLDB4RUUsMHhCQSwweEZCLAorICAgIDB4NjQsMHg1OSwweDIzLDB4NTEs
MHhGOSwweDZCLDB4NkMsMHg1NSwweDQ0LDB4NTksMHgwMywweDQ5LDB4QzIsMHhEMiwweEJDLDB4
RDYsCisgICAgMHg0MywweDUxLDB4RTIsMHg0OCwweEZGLDB4QUUsMHg3RiwweEIyLDB4MjMsMHg1
MSwweEUyLDB4NDgsMHg4MiwweEFBLDB4RUQsMHhGNiwKKyAgICAweDQzLDB4NTEsMHgwMywweDQ5
LDB4RjcsMHg3NSwweDdELDB4RkIsMHg0MywweDUxLDB4MDMsMHg0OSwweEZCLDB4QUIsMHg4Qiww
eDJFLAorICAgIDB4NjgsMHg3QSwweDIzLDB4NTEsMHhENSwweEQ1LDB4MzUsMHgyRCwweEFCLDB4
QTMsMHgyNywweDcyLDB4MkQsMHgyOSwweDBCLDB4MEEsCisgICAgMHhDQywweEEzLDB4OEIsMHhB
MywweEFCLDB4MDAsMHg2OCwweDU4LDB4OEIsMHhBMywweDRBLDB4OTMsMHg2QywweDJDLDB4RkYs
MHhERiwKKyAgICAweDZBLDB4OUIsMHgyOSwweDkzLDB4QkEsMHhCRSwweEY4LDB4NzIsMHg0QSww
eDkzLDB4MDksMHg5MywweEY4LDB4NzIsMHhFQSwweDIwLAorICAgIDB4NEEsMHg5MywweDA5LDB4
OEIsMHgzOCwweDk1LDB4MjcsMHhCNCwweDZBLDB4OUIsMHgyOSwweDkzLDB4NkIsMHhBQiwweEJC
LDB4MjcsCisgICAgMHg2QSwweDkzLDB4MDksMHg5MywweDhELDB4QkUsMHhFRSwweEVBLDB4OEIs
MHg5QiwweDRBLDB4OTMsMHhCMiwweEFGLDB4QkYsMHhGRCwKKyAgICAweDhCLDB4OUIsMHhBNyww
eDgyLDB4RkEsMHg3QSwweDdBLDB4N0EsMHhBNywweDgyLDB4ODcsMHg3QSwweDNGLDB4RjAsMHhD
OCwweEM4LAorICAgIDB4QTgsMHg4MiwweDY3LDB4N0EsMHhCRSwweEUyLDB4RkYsMHg3RiwweEE3
LDB4N0EsMHg2NywweDdBLDB4QkMsMHhEQSwweDY5LDB4NUYsCisgICAgMHg4NywweDdBLDB4MjYs
MHg2QSwweDVDLDB4N0UsMHhGQSwweEZBLDB4MjYsMHg2QSwweDY0LDB4NTEsMHg1QywweDc4LDB4
RTAsMHg4MCwKKyAgICAweDg1LDB4NTksMHhFMywweDQwLDB4NzcsMHg1RiwweERFLDB4QzAsMHg0
NCwweDQ5LDB4RTMsMHg0MCwweDBBLDB4MjksMHgyQiwweEEyLAorICAgIDB4NjQsMHg0OSwweDIz
LDB4NDksMHg4MCwweENBLDB4QkUsMHhERCwweDQ0LDB4NDksMHhDMiwweDM4LDB4RkEsMHg3RSww
eDc2LDB4RTgsCisgICAgMHgwMywweDM5LDB4QzIsMHgzOCwweEJGLDB4QkYsMHg4OSwweEFBLDB4
MDMsMHgzOSwweEMyLDB4MzgsMHg4MCwweEE4LDB4QUUsMHhENiwKKyAgICAweDQ0LDB4NDksMHhF
MywweDM4LDB4OEIsMHhBQiwweEJGLDB4RjUsMHhBNSwweDUxLDB4MjMsMHg0MSwweEY1LDB4RTUs
MHhBNSwweDNELAorICAgIDB4ODUsMHg1MSwweDIzLDB4NDEsMHg3QSwweDdBLDB4NzIsMHhFMCww
eDIzLDB4NDEsMHhDMywweDM4LDB4NzMsMHhFQSwweEI4LDB4RkEsCisgICAgMHgwMywweDQxLDB4
QzIsMHgzOCwweEVGLDB4QUEsMHhGMCwweDcwLDB4MjMsMHg0MSwweEUzLDB4MzgsMHhCQiwweEFC
LDB4QUIsMHhERCwKKyAgICAweDI0LDB4NDEsMHhFMywweDM4LDB4Q0EsMHhGQSwweEY4LDB4RUEs
MHgwMywweDQxLDB4MjMsMHgzOSwweDJBLDB4QTAsMHg4MCwweDg4LAorICAgIDB4NDQsMHg0OSww
eEUzLDB4MzgsMHhBQSwweEFBLDB4MkIsMHhBNywweDY0LDB4NTEsMHgyNCwweDQ5LDB4RjUsMHhC
OSwweENFLDB4RkYsCisgICAgMHg4NSwweDUxLDB4NDQsMHg1MSwweDdCLDB4RjksMHg4OSwweDg3
LDB4ODUsMHg1OSwweDY1LDB4NTEsMHgyNSwweDBELDB4QUIsMHhDOSwKKyAgICAweEU2LDB4NjEs
MHg4NSwweDU5LDB4RTEsMHhFMywweDdELDB4NTUsMHhDNiwweDU5LDB4NjUsMHg1MSwweEI3LDB4
QkEsMHhFMywweENELAorICAgIDB4ODUsMHg1MSwweDQ0LDB4NDksMHg2QSwweDY4LDB4RTIsMHg1
QywweDQ0LDB4NDksMHhDMiwweDMwLDB4N0UsMHhGNCwweDdFLDB4NUYsCisgICAgMHhDMiwweDMw
LDB4QTIsMHgzMCwweEJGLDB4OTgsMHgyMCwweDIyLDB4MjQsMHgzOSwweEMyLDB4MzAsMHhBNSww
eDNELDB4QTUsMHhGRCwKKyAgICAweDI0LDB4NDEsMHhFMywweDM4LDB4QUEsMHg5RSwweEVFLDB4
RTcsMHgwMywweDQxLDB4RTMsMHgzOCwweDI3LDB4MkIsMHhFMCwweEVBLAorICAgIDB4QTUsMHg1
OSwweDAzLDB4NDEsMHgwOSwweDJELDB4MEYsMHgzRCwweDA3LDB4NjIsMHg4NSwweDU5LDB4REYs
MHg3QiwweEIzLDB4QkIsCisgICAgMHgwNywweDZBLDB4ODUsMHg1OSwweDU3LDB4N0YsMHhGMiww
eEU4LDB4QzYsMHg1OSwweDQ0LDB4NTEsMHgyOSwweEFBLDB4RTIsMHhFQSwKKyAgICAweEE1LDB4
NTksMHgwMywweDQxLDB4NTgsMHg3OCwweDdBLDB4N0EsMHgyNCwweDQ5LDB4MDMsMHg0MSwweDhB
LDB4QUEsMHhGNSwweDU1LAorICAgIDB4MjQsMHg0MSwweDAzLDB4NDEsMHg2MCwweEUwLDB4NjAs
MHg2MywweDAzLDB4NDEsMHhDMiwweDM4LDB4N0EsMHg2QSwweEVFLDB4QkEsCisgICAgMHgyNCww
eDQxLDB4RTMsMHgzOCwweEE1LDB4QTUsMHhBRiwweEFELDB4MjMsMHg0MSwweDAzLDB4MzksMHhC
NywweEFGLDB4M0YsMHgzNSwKKyAgICAweDY0LDB4NDksMHgyNCwweDQxLDB4NkQsMHhBOSwweEFE
LDB4QkQsMHg2NCwweDQ5LDB4MjMsMHg0MSwweDA5LDB4QUYsMHhBMiwweDhBLAorICAgIDB4NjUs
MHg0OSwweDAzLDB4NDEsMHhCRiwweERGLDB4QkEsMHg4QSwweDY0LDB4NDksMHgwMywweDM5LDB4
NzgsMHhFQywweDdGLDB4N0UsCisgICAgMHgyMywweDQxLDB4RTMsMHgzOCwweEZGLDB4NUYsMHg3
RiwweDJBLDB4MDMsMHg0MSwweEMyLDB4MzAsMHhBRSwweEFGLDB4NUQsMHhGQywKKyAgICAweDQ0
LDB4NDEsMHhFMiwweDM4LDB4MkIsMHg4RSwweDc1LDB4RDUsMHgyMywweDQxLDB4RTIsMHgzMCww
eDNBLDB4M0IsMHhGRiwweEFGLAorICAgIDB4MjQsMHgzOSwweDAzLDB4MzksMHg2OCwweDU2LDB4
RkYsMHhGNSwweDQ0LDB4NDEsMHhFMywweDM4LDB4N0IsMHhGRiwweEU4LDB4QUEsCisgICAgMHgy
MywweDM5LDB4RTMsMHgzMCwweEU3LDB4RDcsMHhGNywweEVBLDB4MjMsMHgzOSwweEUzLDB4MzAs
MHhBQywweDNFLDB4RkIsMHhGMiwKKyAgICAweDAzLDB4MzksMHhFMiwweDMwLDB4REYsMHgzRSww
eEJBLDB4RjgsMHg0NCwweDQxLDB4RTIsMHgzOCwweEY1LDB4RjYsMHhGNywweDM1LAorICAgIDB4
ODUsMHg0OSwweDAzLDB4MzksMHhBRCwweDJELDB4QTUsMHhGNSwweDY0LDB4NDksMHgwMywweDQx
LDB4RjgsMHhERSwweEZBLDB4QUEsCisgICAgMHg0NCwweDQ5LDB4MjMsMHgzOSwweDAyLDB4ODIs
MHgwMiwweDIwLDB4ODUsMHg1MSwweDIzLDB4NDksMHhCNywweEJGLDB4RTIsMHhFMiwKKyAgICAw
eDg1LDB4NTEsMHgyMywweDQ5LDB4NTgsMHg3RiwweEQ3LDB4N0YsMHg2NCwweDQ5LDB4MjMsMHg0
OSwweEFCLDB4QjUsMHhCNSwweDVGLAorICAgIDB4QTUsMHg1OSwweDIzLDB4NDksMHgyRiwweEFG
LDB4RkYsMHg3RCwweEM1LDB4NTksMHg2NCwweDUxLDB4MDMsMHgwQiwweDJCLDB4QjUsCisgICAg
MHgwNSwweDYyLDB4ODQsMHg1MSwweDNBLDB4QkIsMHhBRCwweEY1LDB4NDcsMHg3MiwweEM1LDB4
NjEsMHgwMiwweDhBLDB4RUIsMHhCRCwKKyAgICAweDQ3LDB4NzIsMHhFNSwweDYxLDB4RkUsMHhG
RSwweDJFLDB4MkIsMHhDOSwweDgyLDB4MjYsMHg2QSwweDI1LDB4QjUsMHhGNSwweEZGLAorICAg
IDB4MkEsMHg4QiwweDg4LDB4N0EsMHhBQSwweDBCLDB4QTksMHhCQiwweDI5LDB4OTMsMHg4Nyww
eDdBLDB4RDcsMHg3RSwweEVBLDB4QTAsCisgICAgMHgwQSwweDhCLDB4ODgsMHg3QSwweDJCLDB4
QjUsMHhGRiwweEI2LDB4NTIsMHhENSwweDRBLDB4OTMsMHgwOSwweDJELDB4MkQsMHgyRCwKKyAg
ICAweDcyLDB4RDUsMHhGMCwweEM0LDB4N0MsMHg3OCwweEY4LDB4RTAsMHg1MSwweENELDB4NEUs
MHhBQywweDVFLDB4N0EsMHhBOCwweDAwLAorICAgIDB4NzIsMHhDRCwweDRFLDB4QUMsMHg1NSww
eEQ1LDB4RkYsMHgwMiwweEQzLDB4REQsMHg2RSwweEI0LDB4NTUsMHg1NSwweDdGLDB4QTgsCisg
ICAgMHhGMCwweEM0LDB4NEQsMHhBQywweDk2LDB4RDcsMHg5NywweDAwLDB4OTIsMHhENSwweEQw
LDB4QkMsMHhCRCwweEFELDB4MkQsMHgwQiwKKyAgICAweEIzLDB4RDUsMHg1MSwweENELDB4NUQs
MHhGRiwweDBCLDB4MEEsMHhENCwweERELDB4NzIsMHhDRCwweDVELDB4RUEsMHg2MCwweDZBLAor
ICAgIDB4OTMsMHhDRCwweDUyLDB4Q0QsMHg1NywweERDLDB4MzcsMHg4NywweEQ0LDB4RDUsMHg3
MiwweENELDB4OEQsMHhGOSwweEZFLDB4REUsCisgICAgMHhCNCwweEQ1LDB4NzMsMHhDRCwweDcw
LDB4NUEsMHhGNywweEQ3LDB4NzIsMHhDRCwweDExLDB4QkQsMHg3RSwweEU4LDB4RjgsMHhCQywK
KyAgICAweDMyLDB4QzUsMHgxMSwweEJELDB4QkYsMHhGRSwweDkwLDB4NjAsMHg1MiwweEM1LDB4
RjEsMHhCQywweDgwLDB4QUUsMHhBRiwweEY3LAorICAgIDB4OTMsMHhDRCwweDMyLDB4QzUsMHgw
MywweEFCLDB4QkYsMHhGRCwweEI0LDB4Q0QsMHg1MiwweEM1LDB4NUEsMHgwQiwweEFGLDB4QkQs
CisgICAgMHg5MywweENELDB4RjEsMHhCQywweDU3LDB4RTAsMHhBMCwweEUwLDB4MTIsMHhCRCww
eEVELDB4OUIsMHhFMCwweEUwLDB4NjgsMHg3OCwKKyAgICAweDZFLDB4QTQsMHhDQywweDkzLDB4
NTcsMHhENSwweDk1LDB4MzUsMHhEMCwweEI0LDB4NEUsMHhBNCwweDI5LDB4MzksMHhBQiwweDAy
LAorICAgIDB4RDAsMHhCNCwweDhGLDB4QjQsMHhCMCwweDc4LDB4RjgsMHhFQSwweEQxLDB4QjQs
MHg2RiwweEFDLDB4RUEsMHhBMiwweERFLDB4RUYsCisgICAgMHhEMSwweEI0LDB4NkYsMHhBQyww
eDNGLDB4QUYsMHhCNywweEFFLDB4RjEsMHhCNCwweDkwLDB4QUMsMHg0RiwweEJFLDB4QTksMHhF
QiwKKyAgICAweDYzLDB4NTksMHgyMywweDUxLDB4N0UsMHg1OSwweEU2LDB4QUUsMHg0MywweDUx
LDB4MDIsMHg0OSwweDIwLDB4QUEsMHhGQiwweDZBLAorICAgIDB4NDMsMHg1MSwweDIzLDB4NTEs
MHgwMiwweDAyLDB4MjksMHg5OSwweDY0LDB4NTksMHgyMywweDUxLDB4MjgsMHhBRSwweERCLDB4
NEYsCisgICAgMHg2NCwweDU5LDB4MjMsMHg1MSwweEEyLDB4RTgsMHhBOCwweEI3LDB4ODQsMHg1
OSwweDQzLDB4NTksMHg4MiwweDZCLDB4NUYsMHg1RiwKKyAgICAweDg0LDB4NjEsMHgyMywweDUx
LDB4RkQsMHhCQiwweEVBLDB4QzIsMHg4NCwweDYxLDB4MjMsMHg1MSwweEY2LDB4RkYsMHhFRiww
eDhCLAorICAgIDB4ODQsMHg2MSwweDQzLDB4NTksMHgwQSwweDAzLDB4MjcsMHhBQSwweEE0LDB4
NjEsMHg0MywweDU5LDB4RkEsMHg2QSwweEUwLDB4RjIsCisgICAgMHg2NCwweDU5LDB4MjMsMHg1
OSwweEZFLDB4RkIsMHhCQSwweEU4LDB4NjQsMHg1OSwweDIzLDB4NTEsMHhDOCwweDhBLDB4RUYs
MHg2QiwKKyAgICAweDY0LDB4NTksMHgyMywweDUxLDB4QkEsMHhCRiwweDFGLDB4RUYsMHg2NCww
eDU5LDB4MjMsMHg1OSwweEE4LDB4QTgsMHgwMiwweEE5LAorICAgIDB4ODUsMHg2MSwweDI0LDB4
NTEsMHhGRSwweEZBLDB4NjMsMHhGRiwweDY0LDB4NTksMHgyMywweDUxLDB4QUUsMHhERCwweDdE
LDB4NkYsCisgICAgMHg0NCwweDU5LDB4MDMsMHg1MSwweDVGLDB4QkMsMHhCRCwweDZGLDB4MjMs
MHg1MSwweEUyLDB4NDgsMHhCOCwweEYwLDB4MjgsMHhCMywKKyAgICAweDQzLDB4NTEsMHgwMyww
eDQ5LDB4RkIsMHhGQSwweEVBLDB4REIsMHgyMywweDUxLDB4RTIsMHg0OCwweDcyLDB4QzgsMHg4
MiwweEEyLAorICAgIDB4MjMsMHg1MSwweDAzLDB4NDksMHhDMSwweEI1LDB4Q0YsMHgwQSwweDY0
LDB4NTksMHgwMywweDUxLDB4QkYsMHhCRiwweDM3LDB4MzcsCisgICAgMHg0QSwweDkzLDB4NjQs
MHg1OSwweDJELDB4MkQsMHgwQiwweDBCLDB4Q0MsMHhBMywweDRBLDB4OUIsMHhBRCwweDhCLDB4
MkEsMHhFRSwKKyAgICAweEVDLDB4QUIsMHg4QiwweDlCLDB4NUUsMHhBRiwweEFELDB4OEYsMHhD
QywweEFCLDB4NEEsMHg5MywweDc3LDB4NUEsMHhFOCwweEEwLAorICAgIDB4QUIsMHhBMywweDRB
LDB4OTMsMHg3NywweERELDB4RUUsMHhBOCwweDZBLDB4OUIsMHgyOSwweDkzLDB4RkUsMHhFNiww
eEY3LDB4NUUsCisgICAgMHg2QSwweDlCLDB4MDksMHg4QiwweDVFLDB4RkUsMHhBMywweEFCLDB4
NEEsMHg5MywweDA5LDB4OTMsMHhBRiwweEVELDB4RUYsMHgzMCwKKyAgICAweDRBLDB4OTMsMHgw
OCwweDkzLDB4MjAsMHhBQSwweEExLDB4RTgsMHg2QSwweDkzLDB4MDksMHg5MywweDNCLDB4QUQs
MHhBRiwweEVGLAorICAgIDB4NkEsMHg5QiwweEM4LDB4ODIsMHg3MiwweDYyLDB4RkEsMHg3QSww
eEE3LDB4N0EsMHg2NywweDcyLDB4QTIsMHhCOCwweDY4LDB4QUEsCisgICAgMHhBOCwweDdBLDB4
NDcsMHg3MiwweEUyLDB4RTIsMHg3RiwweEY3LDB4NjcsMHg3QSwweDI2LDB4NzIsMHg4MCwweEUw
LDB4NTIsMHg1MCwKKyAgICAweDg4LDB4N0EsMHg0NywweDcyLDB4N0IsMHg3RCwweDc3LDB4NDks
MHg0NiwweDcyLDB4MDYsMHg2QSwweDVGLDB4N0EsMHg3QSwweEZBLAorICAgIDB4MjYsMHg2QSww
eDY0LDB4NTEsMHg3QSwweEU4LDB4RUEsMHgwOCwweEU1LDB4NjEsMHgyMywweDQ5LDB4NTUsMHg1
RiwweDVFLDB4NjgsCisgICAgMHg0MywweDQ5LDB4RTMsMHg0MCwweEFBLDB4RkIsMHg1RiwweDU0
LDB4NDMsMHg0OSwweEUzLDB4NDAsMHhFOCwweEVCLDB4RUYsMHhGNSwKKyAgICAweEUzLDB4NDAs
MHhDMiwweDMwLDB4QkUsMHhFRSwweEVBLDB4NjAsMHhFMiwweDM4LDB4QTEsMHgzMCwweDBDLDB4
QTgsMHhGQSwweEZCLAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHgwQiwweDBELDB4N0QsMHhG
NSwweEE1LDB4NTEsMHhFMywweDM4LDB4MEYsMHgyRiwweEFELDB4RkQsCisgICAgMHg4NSwweDUx
LDB4MjMsMHg0MSwweEMwLDB4Q0EsMHhFQSwweDdBLDB4MjMsMHg0MSwweEUzLDB4MzgsMHhCQSww
eERDLDB4REYsMHg1RiwKKyAgICAweDI0LDB4NDEsMHhDMiwweDM4LDB4REEsMHgyQSwweDAyLDB4
MDAsMHgwMywweDQxLDB4RTMsMHgzOCwweDdGLDB4RUMsMHhCQSwweDM4LAorICAgIDB4MDMsMHg0
MSwweEUzLDB4MzgsMHgzNiwweEQ1LDB4RDcsMHg1RSwweDIzLDB4NDEsMHhFNCwweDM4LDB4RUEs
MHhCRiwweDBCLDB4MEEsCisgICAgMHg0NCwweDQ5LDB4RTMsMHgzOCwweDJCLDB4QjcsMHhBRSww
eEU4LDB4NjUsMHg1MSwweDIzLDB4NDksMHhEQywweEYwLDB4NzAsMHhGMiwKKyAgICAweDg1LDB4
NTksMHgwMywweDQxLDB4MEIsMHgyQiwweEJGLDB4NzcsMHhDNiwweDU5LDB4NDQsMHg1MSwweDhC
LDB4M0EsMHhBQSwweEZELAorICAgIDB4QTUsMHg1OSwweDY1LDB4NTEsMHhCQywweEJDLDB4RkUs
MHhGRSwweEM2LDB4NTksMHg2NCwweDUxLDB4NUEsMHg3QSwweDRCLDB4NEYsCisgICAgMHg4NSww
eDUxLDB4QzIsMHgzMCwweEU4LDB4NkEsMHg3RSwweDVFLDB4RTMsMHgzOCwweDgyLDB4MzAsMHhB
MCwweEVBLDB4REUsMHhCRiwKKyAgICAweEMzLDB4MzAsMHhBMiwweDMwLDB4RTIsMHhGRiwweDVG
LDB4OTQsMHhFMywweDMwLDB4ODIsMHgyOCwweEFCLDB4RkQsMHhCQSwweEE4LAorICAgIDB4RTMs
MHgzOCwweEEyLDB4MzAsMHgyMSwweDdELDB4NUYsMHg1RSwweDAzLDB4NDEsMHhBMywweDMwLDB4
MkIsMHhGQiwweEJGLDB4QkQsCisgICAgMHg2NCwweDUxLDB4MDMsMHg0MSwweDJELDB4MjUsMHgx
NSwweEQ1LDB4RTYsMHg2MSwweDg1LDB4NTEsMHgwOSwweEFCLDB4RkQsMHg1NSwKKyAgICAweEU2
LDB4NjEsMHg2NCwweDUxLDB4MDAsMHg4MiwweDhCLDB4QkYsMHhDNiwweDYxLDB4NjQsMHg1MSww
eDZBLDB4RjgsMHhGMCwweDgwLAorICAgIDB4NjQsMHg1MSwweDAzLDB4NDEsMHhBOCwweEUwLDB4
NjAsMHhGMCwweDI0LDB4NDksMHgwMywweDQxLDB4NTYsMHhGRSwweDJGLDB4QUMsCisgICAgMHgy
NCwweDQxLDB4RTMsMHgzOCwweEFCLDB4QTYsMHg3RSwweDc4LDB4MDQsMHg0MSwweEMzLDB4Mzgs
MHg1RSwweDcyLDB4QUEsMHgyMiwKKyAgICAweDAzLDB4MzksMHhBMywweDM4LDB4MEIsMHhBQSww
eDg4LDB4MjgsMHgwMywweDM5LDB4QzIsMHgzOCwweDJBLDB4MkYsMHhCRCwweEJGLAorICAgIDB4
ODUsMHg0OSwweDAzLDB4MzksMHgyQiwweDJGLDB4QUQsMHg4RCwweDg1LDB4NDksMHgyNCwweDQx
LDB4RkYsMHhEOCwweEUwLDB4RkMsCisgICAgMHg4NSwweDQ5LDB4RTIsMHgzOCwweDhBLDB4OEEs
MHhGRSwweDVELDB4NDQsMHg0MSwweDAzLDB4MzksMHhBOCwweEFFLDB4RkYsMHgyRCwKKyAgICAw
eDIzLDB4NDEsMHhFMywweDM4LDB4MDAsMHhBMCwweEY4LDB4RTAsMHgyMywweDQxLDB4QzIsMHgz
MCwweEZFLDB4NjYsMHhGQiwweEE4LAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHgyRiwweDJG
LDB4MUYsMHhGOCwweDI0LDB4NDEsMHhFMiwweDMwLDB4QUQsMHgyRiwweEFGLDB4QjUsCisgICAg
MHgyMywweDM5LDB4RTMsMHgzOCwweEFBLDB4ODgsMHhBOCwweDBGLDB4MjQsMHg0MSwweDAzLDB4
MzksMHgxRSwweEI5LDB4QUQsMHhFMiwKKyAgICAweDIzLDB4MzksMHhFMiwweDM4LDB4RTgsMHg3
OCwweEIyLDB4QTAsMHgyMywweDM5LDB4RTIsMHgzMCwweEZGLDB4NTUsMHg1RiwweEYwLAorICAg
IDB4MjMsMHg0MSwweDAzLDB4MzksMHg3NSwweDI1LDB4QTUsMHg1NSwweDIzLDB4NDEsMHhDMiww
eDMwLDB4MjcsMHhBQSwweEFGLDB4MEEsCisgICAgMHgyMywweDQxLDB4RTIsMHgzOCwweDE3LDB4
MEUsMHg4MiwweDAyLDB4NjQsMHg0OSwweDIzLDB4NDEsMHgwQiwweDBCLDB4N0YsMHhGRiwKKyAg
ICAweDY0LDB4NDksMHgyMywweDQxLDB4MzcsMHhERiwweEJBLDB4RTcsMHg4NCwweDUxLDB4NDQs
MHg0OSwweDVFLDB4MkYsMHg2NSwweDdELAorICAgIDB4ODUsMHg1MSwweDIzLDB4NDEsMHhGRCww
eEQ3LDB4RkIsMHhDMiwweDY1LDB4NDksMHgyMywweDQ5LDB4RjcsMHhCNSwweDM2LDB4RjcsCisg
ICAgMHg4NSwweDUxLDB4MjMsMHg0OSwweEZGLDB4QkYsMHgzNSwweDhGLDB4QzUsMHg2MSwweDIy
LDB4NDksMHhERiwweEZFLDB4QTgsMHgyQiwKKyAgICAweEE0LDB4NTksMHg2NCwweDUxLDB4OUIs
MHg3RCwweEQ4LDB4QTgsMHgwNiwweDYyLDB4NjQsMHg1MSwweDJGLDB4QUQsMHg3NSwweEZGLAor
ICAgIDB4MjYsMHg2QSwweDg0LDB4NTksMHgwMCwweEFFLDB4RjcsMHhERCwweDY3LDB4N0EsMHhB
NSwweDYxLDB4MkEsMHgyQiwweEFELDB4RjUsCisgICAgMHgwQSwweDhCLDB4MjYsMHg3MiwweDBB
LDB4MkIsMHhBQiwweEZELDB4MkEsMHg4QiwweEM5LDB4ODIsMHhDMCwweEEyLDB4MjksMHhGOSwK
KyAgICAweDA5LDB4OEIsMHhBOCwweDdBLDB4RkEsMHhGMCwweEEwLDB4MjgsMHg1MiwweEQ1LDB4
MDksMHg4QiwweDJELDB4MkQsMHhCNSwweEI1LAorICAgIDB4MzUsMHhFNiwweDUyLDB4RDUsMHg1
RiwweEVCLDB4MEIsMHgwOSwweDU1LDB4RUUsMHg3MiwweEQ1LDB4NTUsMHhCRiwweEFBLDB4MDAs
CisgICAgMHgzNSwweEVFLDB4NzIsMHhENSwweEFELDB4OEEsMHgwMCwweDAwLDB4NTUsMHhFRSww
eEY0LDB4REQsMHg1RiwweEZGLDB4RUYsMHhGMiwKKyAgICAweDM1LDB4RTYsMHhEMywweERELDB4
N0QsMHhBQiwweDhBLDB4ODAsMHgxNCwweEU2LDB4OTIsMHhENSwweEY3LDB4QUEsMHgwMCwweDA4
LAorICAgIDB4MzQsMHhFNiwweDkyLDB4RDUsMHg3RiwweEZFLDB4OEEsMHgyMCwweDE0LDB4REUs
MHg1MiwweEM1LDB4NTcsMHg1RiwweDVBLDB4NTgsCisgICAgMHhCMywweEQ1LDB4NTIsMHhDNSww
eEE1LDB4M0QsMHhBRiwweEFELDB4QjMsMHhENSwweDczLDB4Q0QsMHhGRSwweEVBLDB4QUEsMHgz
QiwKKyAgICAweDkzLDB4Q0QsMHg1MiwweEM1LDB4RUUsMHhBRSwweEZFLDB4RjgsMHg3MiwweENE
LDB4MzIsMHhDNSwweEY0LDB4RjgsMHg3OCwweEUwLAorICAgIDB4NTIsMHhDNSwweDEyLDB4QkQs
MHg2RSwweEY4LDB4N0EsMHhBQSwweDMyLDB4QzUsMHhGMSwweEJDLDB4NUYsMHg3NiwweDdBLDB4
RDgsCisgICAgMHg1MiwweEM1LDB4RjEsMHhCQywweDJCLDB4RTUsMHg1RCwweDVELDB4NzMsMHhD
RCwweEYxLDB4QkMsMHgyMiwweDBCLDB4QUYsMHhGNywKKyAgICAweDczLDB4Q0QsMHhEMCwweEI0
LDB4RTAsMHhGOCwweDdFLDB4N0YsMHhEMSwweEI0LDB4Q0QsMHg5QiwweDc4LDB4RjgsMHg3RSww
eDdFLAorICAgIDB4QjAsMHhCNCwweENDLDB4OTMsMHgyNSwweDJGLDB4MEIsMHgwQiwweEQxLDB4
QjQsMHg4RiwweEFDLDB4QTIsMHhFMiwweDQwLDB4QTIsCisgICAgMHhEMCwweEI0LDB4OEYsMHhB
QywweEVBLDB4REIsMHg3QSwweENDLDB4QjAsMHhCNCwweDcwLDB4QUMsMHhEQSwweDkwLDB4M0Ms
MHgyRSwKKyAgICAweEIwLDB4QjQsMHg3MCwweEFDLDB4QTgsMHhFQSwweEZFLDB4MTgsMHhEMSww
eEI0LDB4OTAsMHhBQywweEVCLDB4RTksMHhENSwweEJELAorICAgIDB4NjMsMHg1OSwweDIzLDB4
NTEsMHhBRSwweEZBLDB4RjEsMHhBMywweDg0LDB4NTksMHg0MywweDUxLDB4NzUsMHhERiwweEVC
LDB4RkUsCisgICAgMHg4NCwweDU5LDB4MjMsMHg1MSwweDU3LDB4RkEsMHhGQSwweERDLDB4ODMs
MHg1OSwweDIzLDB4NTEsMHg3RCwweEY1LDB4RkQsMHhFRiwKKyAgICAweDYzLDB4NTksMHgyMyww
eDUxLDB4REYsMHhCMiwweDgzLDB4Q0IsMHg2MywweDU5LDB4MjMsMHg1MSwweEYxLDB4QUEsMHhB
RiwweEFBLAorICAgIDB4ODQsMHg2MSwweDQzLDB4NTksMHhEQiwweEVELDB4MEYsMHgzOSwweEE0
LDB4NjEsMHg0NCwweDU5LDB4RUIsMHgyRCwweEU4LDB4QUEsCisgICAgMHhBNCwweDYxLDB4NjQs
MHg1OSwweEZGLDB4QkQsMHhBOSwweEZGLDB4ODQsMHg1OSwweDQzLDB4NTksMHhGOCwweDZDLDB4
RUYsMHhCRiwKKyAgICAweDY0LDB4NTksMHgyMywweDUxLDB4QUEsMHgyMSwweDJBLDB4RUUsMHg2
MywweDU5LDB4MjMsMHg1MSwweERBLDB4N0EsMHg2RiwweEVFLAorICAgIDB4NjQsMHg1OSwweDIz
LDB4NTEsMHhFQSwweDhBLDB4RTksMHhGRiwweDQ0LDB4NTksMHgyMywweDUxLDB4QUIsMHg1RSww
eDc3LDB4REEsCisgICAgMHg0NCwweDU5LDB4MjMsMHg1MSwweDkyLDB4NzMsMHhCNiwweEE3LDB4
NDQsMHg1OSwweEUyLDB4NDgsMHhBMCwweEU4LDB4NzgsMHhGOCwKKyAgICAweDIzLDB4NTEsMHgw
MywweDQ5LDB4NkIsMHhERiwweDY5LDB4NkQsMHgyMywweDUxLDB4QzIsMHg0MCwweEFBLDB4OTgs
MHhBQSwweEFBLAorICAgIDB4MjMsMHg1MSwweEUyLDB4NDgsMHhCQSwweDZBLDB4REEsMHhCMiww
eDIzLDB4NTEsMHhFMiwweDQ4LDB4OTIsMHgyMywweDAyLDB4QUEsCisgICAgMHg0MywweDUxLDB4
MDMsMHg0OSwweENBLDB4QUYsMHg1RiwweEY3LDB4RTksMHg4QSwweDIzLDB4NTEsMHhENSwweDk1
LDB4QjUsMHgyNSwKKyAgICAweEFCLDB4QTMsMHg4OCwweDgyLDB4OEQsMHgyQiwweDhCLDB4ODgs
MHhBQiwweEEzLDB4NkIsMHg5QiwweEZFLDB4MkUsMHhBNiwweDJGLAorICAgIDB4RUMsMHhBQiww
eEFCLDB4QTMsMHg4NSwweEFELDB4MjEsMHgyRCwweDBELDB4QUMsMHhDQywweEEzLDB4N0YsMHg3
RCwweDdGLDB4N0EsCisgICAgMHhDQiwweEEzLDB4OEIsMHg5QiwweEZFLDB4NUMsMHg1NiwweDVF
LDB4OEEsMHg5QiwweDI5LDB4OTMsMHg2RSwweEY4LDB4NzgsMHhEOCwKKyAgICAweDZBLDB4OUIs
MHgyOSwweDkzLDB4RUQsMHhBNywweENBLDB4N0IsMHg2QSwweDlCLDB4MDksMHg4QiwweDNGLDB4
REYsMHhGRSwweEZFLAorICAgIDB4NkEsMHg5QiwweDJBLDB4OTMsMHg3RSwweEY5LDB4QUYsMHhB
QiwweDZBLDB4OUIsMHgwOCwweDkzLDB4QUQsMHg4QiwweDgyLDB4MDIsCisgICAgMHg0QSwweDkz
LDB4QzgsMHg4MiwweDdBLDB4NjgsMHg2MCwweDcwLDB4QTgsMHg3QSwweDQ2LDB4NzIsMHhBOCww
eDVBLDB4NzgsMHhGRSwKKyAgICAweDg4LDB4N0EsMHg0NiwweDcyLDB4QkEsMHg2OSwweEU5LDB4
RUYsMHg2NywweDdBLDB4MDYsMHg2QSwweDkwLDB4RkUsMHhFRSwweEFBLAorICAgIDB4NjcsMHg3
QSwweDA2LDB4NkEsMHg2MCwweDdFLDB4RkYsMHhERiwweDQ3LDB4NzIsMHgwNiwweDZBLDB4N0Is
MHg4RCwweDdGLDB4RTYsCisgICAgMHgyNiwweDZBLDB4RTYsMHg2OSwweDgwLDB4RTAsMHhBOCww
eEMwLDB4MDYsMHg2QSwweDY0LDB4NTEsMHg3OCwweEVBLDB4QzAsMHgwMCwKKyAgICAweEU1LDB4
NjEsMHhDMiwweDM4LDB4N0YsMHg3RSwweDdBLDB4RjgsMHgyMywweDQ5LDB4QzIsMHgzOCwweEJE
LDB4QUQsMHgyQiwweDgwLAorICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHg1RiwweDU3LDB4NUUs
MHg1OCwweEUyLDB4MzgsMHg4MSwweDMwLDB4QTIsMHgwMCwweEFDLDB4QkUsCisgICAgMHgwMyww
eDM5LDB4QzIsMHgzOCwweEFCLDB4QkIsMHhGRSwweEU3LDB4MjMsMHg0MSwweEUzLDB4MzgsMHgy
RCwweEZCLDB4QUQsMHhBRCwKKyAgICAweDQ0LDB4NDksMHhFMywweDM4LDB4RTIsMHhFQSwweEZF
LDB4N0IsMHgwMywweDQxLDB4RTMsMHgzOCwweEFBLDB4NzYsMHg0QSwweEVCLAorICAgIDB4MjMs
MHg0MSwweEUzLDB4MzgsMHgwQSwweEVELDB4RjUsMHg1RiwweDI0LDB4NDEsMHhFMiwweDM4LDB4
RTAsMHhGMiwweEZBLDB4RTMsCisgICAgMHgyNCwweDQxLDB4QzIsMHgzOCwweEVBLDB4QkQsMHhF
QSwweEFFLDB4MjQsMHg0MSwweEUyLDB4MzgsMHhBQywweDc3LDB4REUsMHg4QSwKKyAgICAweDQ0
LDB4NDksMHhFMiwweDM4LDB4Q0EsMHhGQiwweDU3LDB4RjUsMHg0NCwweDQ5LDB4MDMsMHg0MSww
eDJBLDB4NUIsMHhGRCwweDlELAorICAgIDB4NDQsMHg0OSwweDAzLDB4NDEsMHhGOCwweDdGLDB4
NUUsMHhGRSwweDg1LDB4NTEsMHgyNCwweDQ5LDB4QTMsMHhCRCwweEJGLDB4MjcsCisgICAgMHhB
NSwweDU5LDB4NjUsMHg1MSwweEZFLDB4OEIsMHgyRiwweDhGLDB4ODUsMHg1MSwweDQ0LDB4NDks
MHhDMywweDZFLDB4N0MsMHg1QywKKyAgICAweDQ0LDB4NDksMHhDMywweDMwLDB4NTgsMHhGMCww
eEUwLDB4RjgsMHgwNCwweDM5LDB4QTIsMHgzMCwweEQ1LDB4N0YsMHg3QSwweEY4LAorICAgIDB4
RTMsMHgzMCwweEEyLDB4MzAsMHg5QywweDlGLDB4OTUsMHg5NSwweDI0LDB4MzksMHhDMywweDMw
LDB4RkQsMHhGRiwweEVCLDB4ODIsCisgICAgMHgwMywweDM5LDB4QTIsMHgzMCwweDdGLDB4QkYs
MHhFQSwweEVDLDB4MDQsMHgzOSwweEMzLDB4MzgsMHg1NSwweEY1LDB4QUYsMHhCRCwKKyAgICAw
eDIzLDB4NDEsMHhFMywweDM4LDB4M0QsMHhGRCwweEQ1LDB4QkQsMHg4NSwweDU5LDB4MDMsMHg0
MSwweDBCLDB4MEYsMHhBRCwweEJGLAorICAgIDB4QTUsMHg1OSwweDY1LDB4NTEsMHgwRiwweDhB
LDB4REIsMHhGRiwweDI2LDB4NkEsMHg4NSwweDUxLDB4RUIsMHg4QiwweEFGLDB4RjUsCisgICAg
MHhDNiwweDU5LDB4NDQsMHg0OSwweDdFLDB4NUUsMHhFQywweEJDLDB4NDQsMHg0OSwweDA0LDB4
NDEsMHg3RiwweDI4LDB4QkEsMHhGOCwKKyAgICAweDI0LDB4NDEsMHhFMywweDM4LDB4RkMsMHhF
RSwweEZFLDB4QkMsMHgwNCwweDQxLDB4QzMsMHgzOCwweEEyLDB4RTgsMHhCMCwweEY4LAorICAg
IDB4RTMsMHgzOCwweEMzLDB4MzgsMHgwMCwweDIzLDB4MDAsMHgwOCwweDAzLDB4MzksMHhDMyww
eDMwLDB4QUYsMHhCRiwweDBGLDB4MjgsCisgICAgMHg2NCwweDQ5LDB4MDMsMHgzOSwweDJCLDB4
MkYsMHhCRiwweEI1LDB4NjQsMHg0MSwweDAzLDB4NDEsMHg2OCwweDdFLDB4RkUsMHhGQiwKKyAg
ICAweDQ0LDB4NDEsMHgwMywweDQxLDB4NTcsMHhENSwweEZGLDB4RjMsMHg4NSwweDQ5LDB4MDMs
MHg0MSwweEJELDB4QUYsMHhCRCwweEZGLAorICAgIDB4ODUsMHg0OSwweDIzLDB4NDEsMHg1RSww
eEZFLDB4NjgsMHhEQSwweDQ0LDB4NDEsMHhFMiwweDM4LDB4QUEsMHhBMiwweEFCLDB4N0YsCisg
ICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDc4LDB4QTgsMHgyQSwweDAwLDB4MDMsMHgzOSwweEMy
LDB4MzAsMHgyRiwweENCLDB4RTgsMHgyMywKKyAgICAweDQ0LDB4MzksMHhFMywweDM4LDB4QkQs
MHhGRCwweERELDB4NTUsMHgyNCwweDM5LDB4MDMsMHgzOSwweEQwLDB4NUMsMHg1RSwweDVELAor
ICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHhBMiwweEE4LDB4RkUsMHg3NywweDAzLDB4MzksMHhF
MiwweDMwLDB4RTAsMHhERSwweEJCLDB4QUQsCisgICAgMHgyMywweDQxLDB4QzIsMHgzMCwweEFG
LDB4MkIsMHgwRiwweDJGLDB4NDMsMHg0MSwweEUyLDB4MzgsMHg2QiwweEZFLDB4MkEsMHhBQSwK
KyAgICAweDg1LDB4NDksMHgyMywweDQxLDB4RjUsMHg3RCwweDk3LDB4M0QsMHhBNSwweDUxLDB4
MjMsMHg0MSwweDdELDB4RUYsMHg2QSwweDgwLAorICAgIDB4ODUsMHg1MSwweDIzLDB4NDEsMHhG
NywweEZGLDB4RUIsMHgyMCwweDg0LDB4NTEsMHg0NCwweDQ5LDB4NUIsMHg2QSwweEJBLDB4Qzgs
CisgICAgMHhBNiwweDUxLDB4NDQsMHg0OSwweEY1LDB4RkYsMHhGRiwweEY4LDB4QTUsMHg1OSww
eDIzLDB4NDEsMHhENywweEZGLDB4QTIsMHgwMiwKKyAgICAweEE1LDB4NTksMHg2NCwweDUxLDB4
NzUsMHhBNSwweEU1LDB4ODgsMHhDNSwweDU5LDB4ODQsMHg1MSwweDhELDB4MkIsMHhBQiwweEZC
LAorICAgIDB4RTYsMHg2MSwweDg0LDB4NTksMHg2QSwweEM3LDB4MjcsMHgzRiwweEM1LDB4NjEs
MHg4NCwweDU5LDB4RTMsMHgwMCwweDhFLDB4OUMsCisgICAgMHgwNiwweDZBLDB4NjQsMHg1OSww
eEZELDB4RkIsMHhBQSwweDAzLDB4MDYsMHg2QSwweDg0LDB4NTksMHhCNSwweEI3LDB4MzcsMHgz
RSwKKyAgICAweDg4LDB4N0EsMHgwNiwweDZBLDB4MkYsMHhBRiwweEVELDB4QUYsMHgwOSwweDhC
LDB4NDYsMHg3MiwweDJBLDB4OEYsMHhCRCwweEI1LAorICAgIDB4MDksMHg4QiwweEE4LDB4ODIs
MHgyRiwweEE3LDB4QTksMHgyRiwweDJFLDB4QUMsMHhFOSwweDgyLDB4MkQsMHgzNSwweDNELDB4
QjUsCisgICAgMHgzNSwweEVFLDB4QjAsMHhCQywweDBCLDB4MEIsMHgwQiwweDA5LDB4NzYsMHhF
RSwweDM1LDB4RUUsMHhGRSwweEVBLDB4MkEsMHgyOCwKKyAgICAweDc2LDB4RUUsMHgzNSwweEU2
LDB4RkYsMHhGQSwweEFBLDB4QUEsMHg3NiwweEVFLDB4MzUsMHhFNiwweDdFLDB4RUEsMHhFOCww
eDZBLAorICAgIDB4NTUsMHhFRSwweDM1LDB4RTYsMHg3RiwweEE4LDB4RTgsMHg3QSwweDE0LDB4
RUUsMHgzNSwweEU2LDB4RkUsMHg3NSwweEQ1LDB4RjUsCisgICAgMHgzNSwweEU2LDB4RjQsMHhE
RCwweDg4LDB4ODgsMHhBOCwweDc4LDB4RjQsMHhERCwweDExLDB4QzUsMHhGMCwweDc4LDB4N0Ms
MHg1QSwKKyAgICAweEIzLDB4Q0QsMHgzMSwweEM1LDB4QUYsMHg4RiwweDJELDB4ODksMHhCMyww
eEQ1LDB4NTIsMHhDNSwweDJBLDB4QUEsMHhCQSwweEY2LAorICAgIDB4RDMsMHhDRCwweDczLDB4
Q0QsMHg1RiwweERGLDB4NkYsMHg3RCwweDkzLDB4Q0QsMHg1MiwweEM1LDB4N0YsMHg2QSwweEJC
LDB4QkUsCisgICAgMHg3MywweENELDB4MTIsMHhCRCwweEZGLDB4N0EsMHg3QSwweDY4LDB4MzIs
MHhDNSwweDExLDB4QkQsMHg2MCwweEVBLDB4MDksMHgwQSwKKyAgICAweDMyLDB4QzUsMHhEMCww
eEI0LDB4RkYsMHg2QSwweEVBLDB4QTgsMHgxMSwweEJELDB4QjAsMHhCNCwweDBBLDB4OEIsMHhF
OCwweDZBLAorICAgIDB4RjEsMHhCNCwweDg5LDB4NzIsMHg4MCwweEE4LDB4RkUsMHg1RSwweDkw
LDB4QUMsMHhBRCwweDkzLDB4RkUsMHhCRiwweEFELDB4MkQsCisgICAgMHhCMCwweEI0LDB4NEYs
MHhBNCwweDA1LDB4MEIsMHgyQSwweDBCLDB4RDAsMHhCNCwweDkwLDB4QUMsMHg4QiwweERFLDB4
N0UsMHhGQiwKKyAgICAweEQxLDB4QjQsMHg2RiwweEFDLDB4MEEsMHgxRCwweEFCLDB4OEEsMHhE
MSwweEI0LDB4OEYsMHhBQywweDlGLDB4M0UsMHhGQywweDA4LAorICAgIDB4RDEsMHhCNCwweDkw
LDB4QUMsMHhGQSwweEJDLDB4RkEsMHgyQSwweEQxLDB4QjQsMHg4RiwweEFDLDB4ODgsMHhGOCww
eDdCLDB4NUYsCisgICAgMHg4NCwweDU5LDB4NDMsMHg1MSwweDNGLDB4MkUsMHg2QSwweDJCLDB4
ODQsMHg1OSwweDIyLDB4NTEsMHhBOCwweEEyLDB4RTksMHhCRiwKKyAgICAweDg0LDB4NTksMHgy
MywweDUxLDB4RkYsMHhGQSwweEZCLDB4RTIsMHg2NCwweDUxLDB4MjMsMHg1MSwweEFGLDB4RjYs
MHhBQiwweEE5LAorICAgIDB4NjMsMHg1OSwweDIyLDB4NTEsMHg4QSwweDgyLDB4OEQsMHgwMiww
eDg0LDB4NTksMHg0MywweDU5LDB4RUIsMHhGRiwweEJELDB4QjUsCisgICAgMHhBNCwweDYxLDB4
NjQsMHg1OSwweERGLDB4RkUsMHgzQiwweDFBLDB4ODQsMHg2MSwweDQzLDB4NTksMHhFQSwweEZG
LDB4NEUsMHg3RSwKKyAgICAweEE0LDB4NjEsMHgyMywweDUxLDB4RTgsMHhGQSwweDdGLDB4RjUs
MHg2MywweDYxLDB4NDMsMHg1MSwweEE5LDB4Q0YsMHhFRCwweEFCLAorICAgIDB4NjMsMHg1OSww
eDIzLDB4NTEsMHhGRiwweEFBLDB4QTMsMHhFQSwweDY0LDB4NTksMHg0MywweDU5LDB4RjUsMHhF
MiwweDRCLDB4NjUsCisgICAgMHg0NCwweDU5LDB4MjMsMHg1MSwweDJFLDB4MkMsMHgwRSwweDRE
LDB4NDMsMHg1OSwweDIzLDB4NTEsMHhEOCwweDlFLDB4N0MsMHhCOCwKKyAgICAweDQzLDB4NTks
MHgwMywweDUxLDB4RkYsMHg1NiwweEZDLDB4QkUsMHg0MywweDUxLDB4MDMsMHg0OSwweDc4LDB4
NjksMHhBQSwweEIwLAorICAgIDB4MjMsMHg1MSwweDAzLDB4NDksMHg3NywweDc1LDB4NjIsMHg1
QywweDAzLDB4NDksMHhFMiwweDQ4LDB4QjIsMHhERCwweDU3LDB4MEMsCisgICAgMHgyMywweDUx
LDB4RTIsMHg0OCwweEEyLDB4MjIsMHhFOCwweDZBLDB4MjQsMHg1MSwweEUyLDB4NDgsMHhCNiww
eEVFLDB4RjUsMHhBRCwKKyAgICAweDYzLDB4NTksMHhFMiwweDQwLDB4RkYsMHhCRiwweEFELDB4
MkQsMHg0QSwweDkzLDB4ODMsMHg1OSwweDI1LDB4MkQsMHgyOSwweDBCLAorICAgIDB4QUIsMHhB
MywweDRBLDB4OUIsMHhDRiwweEZGLDB4MkEsMHgwMiwweEVDLDB4QUIsMHg2QiwweDlCLDB4QTUs
MHg4RiwweDJBLDB4MEIsCisgICAgMHhFQywweEFCLDB4QUIsMHhBMywweDNELDB4RTYsMHg2Qyww
eEY4LDB4RUMsMHhBQiwweDhBLDB4OUIsMHgwOCwweEM4LDB4RkIsMHg1NywKKyAgICAweENCLDB4
QTMsMHg4QSwweDlCLDB4RkIsMHhDRSwweEVCLDB4NTUsMHhBQiwweEEzLDB4NkEsMHg5QiwweDU3
LDB4RTgsMHhFRSwweEE5LAorICAgIDB4OEIsMHg5QiwweDI5LDB4OTMsMHg3QiwweEZFLDB4QkEs
MHhBOCwweDhCLDB4OUIsMHg0OSwweDkzLDB4NTUsMHhENSwweEVFLDB4MDIsCisgICAgMHg4QSww
eDlCLDB4NEEsMHg5MywweDdELDB4REYsMHg2QiwweEYyLDB4NkEsMHg5QiwweDJBLDB4OTMsMHhB
RSwweEFDLDB4QkYsMHhGRSwKKyAgICAweDZBLDB4OUIsMHg4NywweDgyLDB4NjgsMHg2MiwweEVB
LDB4RkEsMHhBOCwweDdBLDB4NDYsMHg3MiwweEZDLDB4REUsMHg3RiwweDdFLAorICAgIDB4Njcs
MHg3MiwweDA2LDB4NzIsMHg4QSwweDIyLDB4RUEsMHg4QSwweDY3LDB4NzIsMHgyNiwweDcyLDB4
RUEsMHhFOCwweEZFLDB4RjksCisgICAgMHg0NywweDcyLDB4MDUsMHg2QSwweEJCLDB4RUUsMHg3
QSwweDIwLDB4NDcsMHg3MiwweDA2LDB4NkEsMHhDQSwweEEyLDB4N0EsMHg3OCwKKyAgICAweDQ3
LDB4NzIsMHgwNiwweDZBLDB4NjksMHhGQSwweDdGLDB4NTcsMHgyNiwweDZBLDB4MDYsMHg2QSww
eDZGLDB4RDcsMHgzNywweDI1LAorICAgIDB4MDYsMHg2MiwweDQzLDB4NTEsMHg3OCwweEUwLDB4
ODAsMHg4MCwweEE1LDB4NTksMHgwMywweDQxLDB4NUYsMHg3RiwweEZBLDB4RTgsCisgICAgMHgy
MywweDQxLDB4RTIsMHgzOCwweDcwLDB4NjIsMHhCOCwweEVDLDB4MDMsMHg0MSwweEExLDB4MzAs
MHhGRiwweDdFLDB4RkEsMHhDOCwKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4QUQsMHg4Myww
eEExLDB4M0YsMHg0NCwweDQ5LDB4RTIsMHgzOCwweEFELDB4QUQsMHg4QiwweEFCLAorICAgIDB4
NDQsMHg0OSwweEUyLDB4MzgsMHg1RSwweDdBLDB4RTgsMHhBOCwweEUzLDB4NDAsMHgwMywweDM5
LDB4N0UsMHhENywweEZELDB4M0YsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEE4LDB4Rjgs
MHhGQSwweEZBLDB4MDMsMHg0MSwweEMyLDB4MzgsMHg4MiwweEFFLDB4RjcsMHhGNywKKyAgICAw
eDI0LDB4NDEsMHhFMywweDM4LDB4QkYsMHgzRCwweEJELDB4QkQsMHg0NCwweDQxLDB4MDMsMHg0
MSwweEY3LDB4RkYsMHhBRiwweEFBLAorICAgIDB4NDQsMHg0OSwweDAzLDB4NDEsMHhFNSwweEJC
LDB4RUEsMHg4MiwweDI0LDB4NDksMHgwMywweDQxLDB4QkYsMHg3QSwweDIzLDB4MEIsCisgICAg
MHg0NCwweDQ5LDB4MDMsMHg0MSwweEJCLDB4Q0YsMHhCQiwweEJGLDB4QzYsMHg2MSwweDQ0LDB4
NDksMHhGRCwweEE1LDB4MkQsMHhBRCwKKyAgICAweEM2LDB4NjEsMHg2NSwweDUxLDB4RkQsMHhG
RiwweEZBLDB4Q0EsMHg4NiwweDUxLDB4MDQsMHg0MSwweEVFLDB4N0MsMHhGRSwweEVBLAorICAg
IDB4MjQsMHg0MSwweEMzLDB4MzgsMHhFMCwweENBLDB4RUEsMHhFNiwweDAzLDB4MzksMHhDMyww
eDM4LDB4NUQsMHhGQiwweDcyLDB4RkUsCisgICAgMHhFMywweDM4LDB4QTIsMHgzMCwweDVELDB4
NUUsMHhERSwweDVFLDB4NDUsMHg0MSwweEMzLDB4MzAsMHg4MSwweEZCLDB4RkQsMHhGNSwKKyAg
ICAweDAzLDB4MzksMHhDMywweDMwLDB4RkUsMHhFRiwweEZFLDB4RTAsMHgyNCwweDQxLDB4QzMs
MHgzMCwweEJGLDB4QUIsMHhGOSwweENELAorICAgIDB4NDQsMHg0MSwweEUzLDB4NDAsMHhGRiww
eEFBLDB4ODksMHhCRiwweDY1LDB4NDksMHgwMywweDQxLDB4M0QsMHhCRiwweDNFLDB4QUIsCisg
ICAgMHg4NSwweDUxLDB4NDQsMHg0OSwweEFBLDB4NUEsMHhGQiwweEVGLDB4ODUsMHg1MSwweDI0
LDB4NDksMHgyQiwweEFCLDB4RkUsMHg3QSwKKyAgICAweDg1LDB4NTksMHgwNCwweDQ5LDB4ODgs
MHhGQSwweEZBLDB4N0QsMHg0NCwweDQ5LDB4RTMsMHgzOCwweEMwLDB4RjgsMHhFRiwweEZFLAor
ICAgIDB4MDQsMHg0MSwweEMzLDB4MzgsMHhBMiwweDBCLDB4MkYsMHgzRiwweDA0LDB4NDEsMHhD
MywweDM4LDB4NjgsMHhFQSwweDcwLDB4QjAsCisgICAgMHgyNCwweDQxLDB4QzMsMHgzOCwweEQ3
LDB4RkQsMHhBQiwweDI5LDB4MDQsMHg0MSwweEMzLDB4MzgsMHhBOCwweEVGLDB4QUYsMHhFRiwK
KyAgICAweDQ0LDB4NDEsMHhDMiwweDMwLDB4MkYsMHg4QiwweDJGLDB4QjcsMHg2NSwweDQ5LDB4
MDQsMHg0MSwweEVCLDB4RkIsMHhFRSwweEZFLAorICAgIDB4NDQsMHg0MSwweDIzLDB4NDEsMHg1
NSwweEQ1LDB4OUQsMHg1NywweDY0LDB4NDksMHhFMywweDM4LDB4QUEsMHgyQiwweEZBLDB4RDcs
CisgICAgMHg0NCwweDQxLDB4MDMsMHgzOSwweEVBLDB4N0UsMHhGQSwweEU4LDB4MjMsMHg0MSww
eEMyLDB4MzAsMHhBOCwweEZFLDB4RkEsMHg1QSwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4
ODAsMHhBMCwweEFCLDB4OEQsMHhDMiwweDM4LDB4RTIsMHgzMCwweDc3LDB4RjcsMHhGNSwweERE
LAorICAgIDB4RTMsMHgzOCwweEMyLDB4MzAsMHhBMiwweEEzLDB4M0UsMHgyQSwweDAzLDB4Mzks
MHhDMiwweDMwLDB4RTIsMHhFOCwweDhBLDB4QUYsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCww
eEZGLDB4RkIsMHhBQSwweEE4LDB4MjQsMHgzOSwweEMzLDB4MzAsMHhGRCwweEZCLDB4QkYsMHhB
QiwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4MkYsMHg4QSwweDAwLDB4ODAsMHgyMywweDQx
LDB4RTMsMHgzOCwweDBBLDB4M0IsMHgzQiwweEFELAorICAgIDB4ODUsMHg1MSwweDIzLDB4NDEs
MHhCRCwweEFCLDB4MzcsMHhCRCwweEM1LDB4NTEsMHg2NCwweDQ5LDB4MEIsMHhBRiwweEZBLDB4
RkIsCisgICAgMHhDNiwweDU5LDB4ODUsMHg1MSwweDdBLDB4NkUsMHhGQSwweDU1LDB4ODQsMHg1
MSwweDY0LDB4NTEsMHhERiwweEYyLDB4RUIsMHg3OSwKKyAgICAweDg1LDB4NTEsMHgyMywweDQ5
LDB4MDAsMHgwMiwweEJFLDB4N0UsMHhFNiwweDYxLDB4NDMsMHg0OSwweEFCLDB4MEEsMHgwQiww
eEFELAorICAgIDB4MDYsMHg2MiwweEM2LDB4NjEsMHg3NSwweDVBLDB4RjIsMHhBMSwweDA2LDB4
NkEsMHhBNSwweDU5LDB4N0QsMHhGQiwweEJFLDB4M0YsCisgICAgMHgyNywweDZBLDB4QTQsMHg1
OSwweEQ1LDB4REYsMHg3OCwweEYyLDB4MDYsMHg2QSwweEM1LDB4NjEsMHg1QSwweDZFLDB4MjEs
MHg5RiwKKyAgICAweDQ3LDB4NzIsMHg4NCwweDU5LDB4MEYsMHgyNywweEI3LDB4QkYsMHhBOCww
eDgyLDB4MDYsMHg2QSwweDVELDB4RkYsMHhBOSwweDgxLAorICAgIDB4NjcsMHg3QSwweDA2LDB4
NkEsMHgwRCwweEY1LDB4REYsMHg3RSwweEM5LDB4ODIsMHg0NiwweDcyLDB4MEYsMHgyQiwweDI5
LDB4QTUsCisgICAgMHgwOSwweDhCLDB4QzgsMHg4MiwweEY1LDB4RDUsMHhCQSwweEE5LDB4NkIs
MHg5MywweEU5LDB4ODIsMHgzNSwweDNELDB4MjcsMHgyRCwKKyAgICAweDE1LDB4RTYsMHhFRCww
eEEzLDB4MDksMHgwRCwweDJELDB4MkQsMHg3NSwweEVFLDB4MzUsMHhFRSwweDhBLDB4OEIsMHhF
RCwweEY1LAorICAgIDB4NzUsMHhFRSwweDM1LDB4RTYsMHg4QSwweEE4LDB4RUUsMHhGRCwweDU1
LDB4RUUsMHgxNSwweEU2LDB4ODgsMHg4OCwweEE4LDB4NDIsCisgICAgMHg1NSwweEVFLDB4MTQs
MHhFNiwweDhBLDB4RUUsMHhGRiwweDU1LDB4MzUsMHhFNiwweEY0LDB4REQsMHhBMCwweEU4LDB4
RkEsMHg3QiwKKyAgICAweDE0LDB4REUsMHhCNCwweEQ1LDB4QzAsMHg4MCwweDY4LDB4N0UsMHg5
MywweEQ1LDB4RjEsMHhCQywweERDLDB4QTgsMHhBQywweEFFLAorICAgIDB4QjQsMHhENSwweDUy
LDB4QzUsMHhBOSwweDhCLDB4QUEsMHhBMCwweDkzLDB4Q0QsMHgzMiwweEM1LDB4QkEsMHhFOCww
eDY4LDB4RUEsCisgICAgMHg3MiwweENELDB4MzIsMHhDNSwweDAwLDB4ODMsMHgyRCwweEVGLDB4
NzMsMHhDRCwweDkzLDB4QzUsMHg4MiwweEFBLDB4N0MsMHhBQSwKKyAgICAweDczLDB4QzUsMHgz
MiwweEM1LDB4RjgsMHhFQSwweEVBLDB4QUEsMHg1MiwweEM1LDB4MTEsMHhCRCwweEJBLDB4RkUs
MHhGNywweDY3LAorICAgIDB4MzIsMHhDNSwweEYxLDB4QkMsMHhBQywweEFCLDB4N0YsMHg1RSww
eDMyLDB4QzUsMHhFRCwweDlCLDB4RTgsMHhFOCwweDZBLDB4N0EsCisgICAgMHhFRSwweDlCLDB4
ODksMHg3MiwweDU0LDB4OUUsMHhCRSwweDJBLDB4NEYsMHhBNCwweDZDLDB4OEIsMHgyRCwweDJC
LDB4MEIsMHgwMiwKKyAgICAweEQxLDB4QjQsMHg2RiwweEFDLDB4MjUsMHhGRCwweEI1LDB4RjUs
MHhEMCwweEI0LDB4OTAsMHhBQywweEY2LDB4M0IsMHhCNSwweEI1LAorICAgIDB4RDEsMHhCNCww
eDhGLDB4QUMsMHhBQSwweEVGLDB4MkIsMHhCMCwweEQwLDB4QjQsMHg2RiwweEFDLDB4QTAsMHhG
RSwweDdFLDB4NTcsCisgICAgMHhCMCwweEI0LDB4NEYsMHhBNCwweDAwLDB4QUEsMHhBNiwweEI3
LDB4QjAsMHhCNCwweDRGLDB4QTQsMHhCMCwweEJCLDB4QUYsMHhCNSwKKyAgICAweDYzLDB4NTks
MHgyMiwweDQ5LDB4ODMsMHhGQSwweDdBLDB4NUIsMHg4NCwweDU5LDB4MjIsMHg1MSwweEJCLDB4
RUQsMHgzQiwweDNGLAorICAgIDB4NjMsMHg1OSwweDIzLDB4NTEsMHgwMCwweDgzLDB4M0MsMHgy
RiwweDg0LDB4NTksMHgyMiwweDQ5LDB4RjYsMHhBMiwweEFDLDB4QkEsCisgICAgMHg4NCwweDYx
LDB4NjMsMHg1OSwweDU1LDB4NzksMHg0QiwweDQ1LDB4ODQsMHg2MSwweDQzLDB4NTksMHgyRCww
eDJCLDB4MkIsMHgwRSwKKyAgICAweDg0LDB4NjEsMHg2MywweDU5LDB4MTUsMHhCNiwweEZFLDB4
N0EsMHg4NCwweDU5LDB4NDMsMHg1OSwweEVFLDB4QkUsMHhGRSwweEZFLAorICAgIDB4ODQsMHg2
MSwweDIzLDB4NTEsMHhGRiwweEFBLDB4QkEsMHg2OCwweDYzLDB4NTksMHgwMiwweDUxLDB4QTIs
MHgwQSwweEI4LDB4N0YsCisgICAgMHg2MywweDU5LDB4MjMsMHg1MSwweDJBLDB4MDIsMHgyQiww
eDdGLDB4ODQsMHg2MSwweDIzLDB4NTEsMHhGQSwweEU4LDB4REIsMHhGNywKKyAgICAweDY0LDB4
NTksMHgyMywweDUxLDB4RkEsMHhGRSwweDYyLDB4NkYsMHg0NCwweDUxLDB4MDMsMHg1MSwweDhB
LDB4MDIsMHgwQiwweDZCLAorICAgIDB4NDQsMHg1MSwweDAzLDB4NDksMHg3RSwweDZBLDB4NzMs
MHg2OCwweDQzLDB4NTEsMHhFMSwweDQ4LDB4QTAsMHhFQSwweEZCLDB4RUEsCisgICAgMHgyMyww
eDUxLDB4RTIsMHg0OCwweEFBLDB4QTUsMHhENSwweEZCLDB4MjMsMHg1MSwweEUzLDB4NDgsMHhF
RiwweEU4LDB4QUEsMHhBQSwKKyAgICAweDIzLDB4NTEsMHhDMiwweDQ4LDB4QTIsMHhBQSwweEJB
LDB4NzgsMHgyMywweDUxLDB4QzIsMHg0OCwweEFBLDB4RUYsMHhCNywweDI1LAorICAgIDB4RTYs
MHg2OSwweDAzLDB4NTEsMHhGNSwweDM1LDB4M0QsMHgyRiwweDZBLDB4OUIsMHgyNSwweDcyLDB4
MjksMHgwMSwweDAzLDB4MDIsCisgICAgMHhDQywweEEzLDB4OEIsMHg5QiwweEVGLDB4RUYsMHhF
RCwweDhCLDB4QUMsMHhBMywweDhCLDB4OUIsMHgwQSwweEY5LDB4NzksMHg2MiwKKyAgICAweEFC
LDB4QTMsMHgyOSwweDkzLDB4ODAsMHg3QSwweEZFLDB4RkUsMHg2OSwweDlCLDB4MjgsMHg5Myww
eDhBLDB4QUQsMHhBQSwweDgwLAorICAgIDB4OEEsMHg5QiwweDQ5LDB4OTMsMHg4QiwweEFCLDB4
MkYsMHhCRiwweDhBLDB4OUIsMHg0OSwweDkzLDB4MDAsMHg4MiwweEZDLDB4N0EsCisgICAgMHg4
QiwweDlCLDB4MjksMHg5MywweDgwLDB4MzIsMHhFQiwweDdGLDB4OEIsMHg5QiwweDA5LDB4OEIs
MHg4OCwweDI4LDB4RkIsMHg1NSwKKyAgICAweDhCLDB4QTMsMHgwOSwweDkzLDB4QTIsMHhFMCww
eEVGLDB4RUQsMHg0QSwweDkzLDB4RTksMHg4QSwweDgwLDB4QTgsMHhGOCwweEZGLAorICAgIDB4
MDksMHg4QiwweDY3LDB4N0EsMHhFMCwweEY4LDB4RTgsMHg3OCwweDg3LDB4N0EsMHgyNiwweDcy
LDB4REMsMHhGQSwweEZFLDB4REUsCisgICAgMHg2NywweDdBLDB4MjYsMHg2QSwweDZGLDB4NUIs
MHg4QSwweEZGLDB4NDYsMHg3MiwweDA1LDB4NkEsMHhCQiwweERFLDB4ODAsMHgwMiwKKyAgICAw
eDQ2LDB4NzIsMHgwNiwweDZBLDB4M0EsMHhGQSwweDhCLDB4RUIsMHg0NywweDcyLDB4MDYsMHg2
QSwweDVDLDB4REUsMHg3QiwweEI1LAorICAgIDB4MjYsMHg2QSwweEU1LDB4NjksMHhBRCwweDM2
LDB4QkEsMHhBOCwweDQ3LDB4NzIsMHgwNiwweDZBLDB4QzEsMHhBQiwweDI5LDB4MEYsCisgICAg
MHg2OCwweDcyLDB4MDYsMHg2QSwweDdBLDB4N0EsMHhCMCwweDIyLDB4NjcsMHg3MiwweDQzLDB4
NDksMHg3RSwweEZBLDB4RjgsMHhFMCwKKyAgICAweDY0LDB4NDksMHhFMywweDQwLDB4NzcsMHg1
RSwweEZFLDB4RjgsMHgwMywweDQxLDB4QzIsMHgzOCwweEE4LDB4MEEsMHg4MCwweDc4LAorICAg
IDB4MDMsMHg0MSwweEMyLDB4MzgsMHgwMiwweEEyLDB4RUIsMHhGOSwweDI0LDB4NDEsMHhDMiww
eDM4LDB4MEEsMHgyRSwweEJCLDB4QTksCisgICAgMHg0NCwweDQ5LDB4MDMsMHgzOSwweDAyLDB4
QzAsMHhFRiwweEE1LDB4MjMsMHg0MSwweEUyLDB4MzgsMHg1RiwweERBLDB4REUsMHhDMiwKKyAg
ICAweDAzLDB4NDEsMHhDMiwweDM4LDB4RjIsMHhDQSwweEU4LDB4RkEsMHgwMywweDM5LDB4QzIs
MHgzOCwweEI3LDB4RUYsMHgzRiwweERGLAorICAgIDB4MjQsMHg0MSwweEMyLDB4MzgsMHhBRiww
eDJGLDB4MkYsMHg5RiwweDY0LDB4NDksMHgwMywweDQxLDB4QkQsMHhBRiwweDJELDB4MEQsCisg
ICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweEZBLDB4RjgsMHhFOCwweDU4LDB4MjQsMHg0OSwweDAz
LDB4NDEsMHg4QSwweDIyLDB4MEEsMHgyRiwKKyAgICAweDQ0LDB4NDksMHgyNCwweDQ5LDB4Mzcs
MHgxQSwweERDLDB4OTQsMHhBNiwweDU5LDB4NDQsMHg0OSwweDJGLDB4MEYsMHgzRiwweEJELAor
ICAgIDB4QzYsMHg1OSwweDY1LDB4NTEsMHhDMiwweEUyLDB4NjAsMHhGQiwweDg1LDB4NTEsMHgy
MywweDQxLDB4NkIsMHg2QSwweEVFLDB4RTAsCisgICAgMHgyNCwweDQxLDB4QzIsMHgzOCwweEZG
LDB4RDcsMHg3NiwweDc4LDB4MjQsMHg0MSwweEMzLDB4MzgsMHg3RiwweEZGLDB4NzMsMHhGMywK
KyAgICAweEUzLDB4MzAsMHhBMiwweDMwLDB4NzcsMHhGRCwweEJFLDB4MkUsMHgwMywweDM5LDB4
QzMsMHgzMCwweEI1LDB4RDUsMHhCNywweDJGLAorICAgIDB4NDUsMHg0MSwweDA0LDB4MzksMHg1
NSwweDdBLDB4RTMsMHg3QiwweDAzLDB4MzksMHhFMywweDM4LDB4QzksMHhCRiwweERGLDB4MUYs
CisgICAgMHgyNCwweDQxLDB4QzIsMHgzOCwweEJBLDB4OUYsMHgyRSwweDIyLDB4NDQsMHg0OSww
eDA0LDB4NDEsMHgwQSwweDJCLDB4MjksMHgwRCwKKyAgICAweDY1LDB4NTEsMHg0NCwweDQ5LDB4
RjUsMHhGRCwweEJCLDB4NzUsMHg0NCwweDQ5LDB4MDMsMHg0MSwweDg4LDB4RUEsMHhFOCwweEUw
LAorICAgIDB4MjQsMHg0MSwweEUzLDB4NDAsMHgwQSwweDBGLDB4MjcsMHg4QSwweDI0LDB4NDEs
MHhFMywweDM4LDB4RTgsMHg3MCwweDU4LDB4NkEsCisgICAgMHgwMywweDQxLDB4RTMsMHgzOCww
eEQ3LDB4RDcsMHg3RiwweEZCLDB4MjQsMHg0MSwweEUzLDB4MzgsMHhCRiwweEJGLDB4NTcsMHg1
QiwKKyAgICAweDI0LDB4NDEsMHgwMywweDM5LDB4MjcsMHgxRSwweEY2LDB4N0YsMHgyNCwweDQx
LDB4RTMsMHgzOCwweDc4LDB4NzgsMHg2QiwweEFGLAorICAgIDB4MjQsMHg0MSwweEUzLDB4Mzgs
MHhCRCwweEZELDB4M0QsMHgzNywweDY1LDB4NDksMHgwMywweDQxLDB4RkEsMHhFQSwweDYyLDB4
RTksCisgICAgMHg0NCwweDQ5LDB4RTMsMHgzOCwweEFGLDB4NkEsMHgwQiwweDBBLDB4NDQsMHg0
OSwweEMyLDB4MzAsMHg3RSwweEZBLDB4RTgsMHhFMCwKKyAgICAweDIzLDB4NDEsMHhDMiwweDMw
LDB4OEEsMHhEQSwweDVFLDB4NTIsMHhFMiwweDM4LDB4QzIsMHgzMCwweDdDLDB4RjYsMHhDNSww
eDJCLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHgyRCwweEVELDB4QUIsMHgyQSwweDIzLDB4
MzksMHhDMiwweDMwLDB4RjcsMHg5NywweDhGLDB4QUUsCisgICAgMHgyNCwweDM5LDB4QzIsMHgz
MCwweEZELDB4QkYsMHhFQiwweDJBLDB4MjMsMHgzOSwweEUzLDB4MzAsMHhGRCwweEZFLDB4RDQs
MHg3RSwKKyAgICAweDI0LDB4MzksMHhDMywweDMwLDB4RkUsMHhGRiwweEZFLDB4QTMsMHgyMyww
eDM5LDB4RTMsMHgzOCwweDJCLDB4ODksMHhCNywweEY1LAorICAgIDB4NDQsMHg0MSwweEUzLDB4
MzAsMHg3RiwweEVGLDB4QkEsMHg4QiwweDIzLDB4NDEsMHhFMiwweDM4LDB4RUQsMHg3RCwweEZG
LDB4OEIsCisgICAgMHg0NCwweDQxLDB4RTMsMHgzOCwweDA5LDB4RjUsMHhEQiwweEQ1LDB4ODUs
MHg1MSwweDAzLDB4NDEsMHg4MiwweEUzLDB4RkYsMHhGRCwKKyAgICAweDg1LDB4NTEsMHgwMiww
eDM5LDB4MjgsMHg4QSwweEI1LDB4NTcsMHg4NCwweDUxLDB4MjMsMHg0MSwweDIwLDB4QkEsMHhF
QSwweDdGLAorICAgIDB4ODQsMHg1MSwweDAzLDB4NDEsMHg2OCwweDZBLDB4RkUsMHhBRiwweEE1
LDB4NTksMHgwMywweDQxLDB4MjksMHgyRCwweEFGLDB4MkYsCisgICAgMHgwNiwweDYyLDB4QTUs
MHg1OSwweDhCLDB4QkYsMHhBRCwweDJCLDB4MjYsMHg2QSwweEM1LDB4NjEsMHhEQywweEFCLDB4
OEIsMHhCNywKKyAgICAweDI3LDB4NkEsMHhDNiwweDYxLDB4RUIsMHhCRiwweDM3LDB4NTYsMHg2
NywweDdBLDB4RTUsMHg2OSwweDVGLDB4RUEsMHhDOCwweDAzLAorICAgIDB4MjYsMHg3MiwweEM2
LDB4NjEsMHhCNywweEJGLDB4RkYsMHhGQywweDg4LDB4N0EsMHgwNiwweDZBLDB4MEQsMHhBRCww
eEY3LDB4RDUsCisgICAgMHg2OCwweDdBLDB4MDYsMHg2QSwweDc4LDB4N0EsMHg3NywweDZCLDB4
QTgsMHg3QSwweEM0LDB4NjEsMHgyQiwweEFCLDB4QkYsMHhGNSwKKyAgICAweDA5LDB4OEIsMHg2
NywweDcyLDB4MEEsMHgwOSwweEFELDB4QkQsMHgyOSwweDhCLDB4RTgsMHg4MiwweDBELDB4RkQs
MHhGRiwweDVELAorICAgIDB4RDQsMHhERCwweDZBLDB4OTMsMHgyRCwweDJELDB4MzUsMHhCNSww
eDU1LDB4RUUsMHhEMywweERELDB4MEEsMHgyQiwweEE5LDB4MkQsCisgICAgMHg1NSwweEVFLDB4
MzUsMHhFNiwweEJGLDB4MzMsMHhBRiwweEZGLDB4NTUsMHhFRSwweDE1LDB4RTYsMHhFQSwweEJB
LDB4RkUsMHhGRiwKKyAgICAweDM1LDB4RTYsMHgxNCwweEU2LDB4RjcsMHg3RSwweEZBLDB4NTYs
MHgxNCwweEU2LDB4QjMsMHhENSwweEE4LDB4RTgsMHhGRSwweDVBLAorICAgIDB4RDQsMHhERCww
eDMyLDB4QzUsMHhBMCwweEU4LDB4RkEsMHg3QSwweDkzLDB4Q0QsMHgxMSwweEJELDB4MkYsMHgy
RSwweDA5LDB4MkQsCisgICAgMHhCNCwweEQ1LDB4OTMsMHhDRCwweDZBLDB4NEIsMHg3RiwweDdC
LDB4OTMsMHhDRCwweDczLDB4Q0QsMHg3MiwweDZBLDB4RUUsMHg2OCwKKyAgICAweDUyLDB4QzUs
MHgzMiwweEJELDB4MzgsMHhCQSwweDc4LDB4MzgsMHg3MiwweENELDB4MzIsMHhDNSwweDA4LDB4
OEEsMHhFQSwweERBLAorICAgIDB4NzMsMHhDRCwweDMyLDB4QzUsMHg4QSwweEVGLDB4NUQsMHg3
NywweDMyLDB4QzUsMHhGMSwweEJDLDB4RkUsMHhCQywweEVDLDB4NjgsCisgICAgMHgxMiwweEJE
LDB4QjAsMHhCNCwweEUwLDB4RkMsMHg1RiwweDc2LDB4QjAsMHhCNCwweDBFLDB4OUMsMHg2MCww
eEY4LDB4RTgsMHg3OCwKKyAgICAweDJFLDB4QTQsMHhBQywweDkzLDB4MTcsMHgzRiwweDNFLDB4
RkEsMHg2RiwweEFDLDB4MEYsMHg5QywweEFELDB4MkEsMHgwMywweEE5LAorICAgIDB4QjAsMHhC
NCwweDZGLDB4QUMsMHhENSwweDk1LDB4QjksMHhCRCwweEQxLDB4QjQsMHg2RiwweEFDLDB4Mjcs
MHgzQiwweEVFLDB4RkUsCisgICAgMHhCMSwweEI0LDB4NEYsMHhBNCwweEY4LDB4RjgsMHhGRiww
eDVGLDB4NkYsMHhBNCwweDJGLDB4QTQsMHhCMiwweDJBLDB4RUIsMHhBQiwKKyAgICAweDhGLDB4
QUMsMHg0RiwweEE0LDB4MkYsMHhBRiwweEVBLDB4RkIsMHhCMCwweEFDLDB4NEYsMHhBNCwweEY1
LDB4QjcsMHgwOSwweDBGLAorICAgIDB4NjMsMHg1OSwweDAyLDB4NTEsMHg3RSwweEVFLDB4MkQs
MHhBRiwweDYzLDB4NTksMHgyMiwweDUxLDB4M0QsMHgyRiwweDAyLDB4RTAsCisgICAgMHg4NCww
eDU5LDB4MjMsMHg1MSwweDg3LDB4Q0EsMHhBOCwweEUzLDB4ODQsMHg1OSwweDIyLDB4NTEsMHg3
RSwweEEzLDB4ODAsMHgyQiwKKyAgICAweEE1LDB4NjEsMHg2MywweDU5LDB4MjUsMHhENSwweEY1
LDB4RUIsMHhDNSwweDYxLDB4NDMsMHg1OSwweEFGLDB4MkYsMHhFNywweEZELAorICAgIDB4ODQs
MHg2MSwweDQzLDB4NTksMHhFMCwweEY4LDB4RUUsMHg3RSwweDg0LDB4NjEsMHgyMywweDU5LDB4
RkMsMHhEQiwweEVCLDB4REEsCisgICAgMHg2NCwweDU5LDB4MjMsMHg1MSwweEEyLDB4RkIsMHg3
QiwweDVBLDB4NjMsMHg1OSwweDIzLDB4NTEsMHhGRiwweEQ4LDB4QkQsMHhBOSwKKyAgICAweDYz
LDB4NTksMHgyMywweDUxLDB4N0YsMHhBQSwweDhBLDB4NkUsMHg2NCwweDUxLDB4MDIsMHg1MSww
eEFFLDB4QjQsMHhCQSwweEFBLAorICAgIDB4NDMsMHg1OSwweDAzLDB4NTEsMHhFOCwweEE4LDB4
RkYsMHhGQSwweDQzLDB4NTEsMHgwMywweDQ5LDB4QUYsMHhCRSwweEFGLDB4QkUsCisgICAgMHg2
NCwweDU5LDB4MDIsMHg0OSwweEY4LDB4RDIsMHg1QiwweDdGLDB4MjMsMHg1MSwweDAzLDB4NDks
MHg4OCwweDM4LDB4MEIsMHgwMywKKyAgICAweDIzLDB4NTEsMHgwMywweDQ5LDB4N0YsMHhBQyww
eEVFLDB4NjMsMHgyMywweDUxLDB4RTIsMHg0MCwweEFBLDB4RUEsMHhCNiwweDBBLAorICAgIDB4
MjMsMHg1MSwweEMyLDB4NDgsMHg3MiwweEJBLDB4RUEsMHgwMCwweDY0LDB4NTksMHgwMywweDUx
LDB4RkQsMHg4QiwweEFBLDB4QUEsCisgICAgMHhDOSwweDhBLDB4NjQsMHg1OSwweDk1LDB4QjUs
MHgzNSwweDM1LDB4QUMsMHhBMywweDA5LDB4OEIsMHgyRCwweDJCLDB4MkIsMHhBQSwKKyAgICAw
eENDLDB4QTMsMHg4QiwweDlCLDB4RUIsMHhFQiwweEFBLDB4MEYsMHhFQywweEFCLDB4QUIsMHhB
MywweDc1LDB4NzUsMHhGQiwweDA3LAorICAgIDB4RUMsMHhBQiwweDRBLDB4OTMsMHg1RiwweEZF
LDB4QUMsMHg4OCwweEFCLDB4QTMsMHg0OSwweDkzLDB4RkYsMHhERiwweEFBLDB4RTAsCisgICAg
MHg2QSwweDlCLDB4NDksMHg5MywweDhCLDB4MjgsMHgyQSwweENDLDB4NkEsMHg5QiwweDA4LDB4
OTMsMHhBMCwweDcyLDB4RjgsMHhCMiwKKyAgICAweDQ5LDB4OTMsMHhFOCwweDhBLDB4N0UsMHg3
RiwweEQ2LDB4ODgsMHgyOSwweDkzLDB4RTgsMHg4QSwweEZBLDB4REUsMHhGRSwweEVCLAorICAg
IDB4RTksMHg5MiwweDA5LDB4OEIsMHg1NSwweEZGLDB4NUYsMHg5NSwweDI5LDB4OTMsMHhDOCww
eDgyLDB4NjgsMHg3QSwweDdBLDB4RkYsCisgICAgMHhFOSwweDhBLDB4ODcsMHg3QSwweDdBLDB4
RTgsMHg4MiwweEEwLDB4QTgsMHg4MiwweDQ2LDB4NzIsMHg3NywweDdGLDB4N0EsMHg3QywKKyAg
ICAweDY3LDB4NzIsMHgyNiwweDcyLDB4N0QsMHg2RiwweDNCLDB4MkEsMHg2NiwweDcyLDB4MDUs
MHg2QSwweEVCLDB4NkEsMHhFOCwweEI4LAorICAgIDB4NjcsMHg3MiwweEU1LDB4NjksMHg2RSww
eEVFLDB4RkUsMHgyRSwweDQ3LDB4NzIsMHhFNSwweDY5LDB4QUYsMHgyNywweDM3LDB4OUUsCisg
ICAgMHg0NywweDcyLDB4MDYsMHg2QSwweDc3LDB4NTYsMHhGQywweEFGLDB4NjcsMHg3QSwweDA2
LDB4NkEsMHhBNSwweEJGLDB4OEUsMHhBQSwKKyAgICAweDg3LDB4N0EsMHg0NywweDcyLDB4RjUs
MHhCNywweEZFLDB4MkYsMHg4NywweDdBLDB4RTYsMHg2MSwweDcwLDB4ODIsMHgwMCwweDAwLAor
ICAgIDB4MjYsMHg2QSwweDAzLDB4NDEsMHg1RSwweDdDLDB4NzgsMHhGOCwweDAzLDB4NDEsMHhB
MiwweDM4LDB4NUMsMHhFMCwweDgwLDB4QTAsCisgICAgMHhFMiwweDM4LDB4QTIsMHgzMCwweDgy
LDB4MkEsMHgxRSwweEFFLDB4MDMsMHg0MSwweEUzLDB4MzgsMHhFOSwweEZELDB4QzIsMHhFQiwK
KyAgICAweDI0LDB4NDEsMHhFMiwweDM4LDB4RjUsMHhGQSwweEUyLDB4QUIsMHgyNCwweDQxLDB4
RTMsMHgzOCwweEVGLDB4NUYsMHg3QiwweDVELAorICAgIDB4RTMsMHgzOCwweEMyLDB4MzgsMHg4
MCwweEEwLDB4QzgsMHgwMywweDIzLDB4NDEsMHhDMiwweDM4LDB4NTcsMHhERiwweEZGLDB4QkYs
CisgICAgMHgwMywweDQxLDB4RTMsMHgzOCwweDA1LDB4MDEsMHg2OSwweDJCLDB4NDQsMHg0OSww
eDAzLDB4MzksMHhBQSwweDZBLDB4QUQsMHhCNSwKKyAgICAweDY0LDB4NDksMHgwMywweDQxLDB4
RjgsMHg3RSwweERBLDB4N0EsMHgyNCwweDQ5LDB4RTMsMHg0MCwweEI2LDB4QUUsMHhCNiwweEZG
LAorICAgIDB4NjUsMHg1MSwweDAzLDB4NDEsMHgzRCwweEI1LDB4RDUsMHg1NSwweDg1LDB4NTEs
MHhDMywweDQwLDB4MEEsMHhBQSwweEFBLDB4RkQsCisgICAgMHhBNiwweDU5LDB4MjQsMHg0OSww
eEEyLDB4MjIsMHhCQiwweEZELDB4ODUsMHg1MSwweDQ0LDB4NDksMHg0MiwweEU4LDB4RkEsMHgy
RiwKKyAgICAweDY1LDB4NDksMHhDMiwweDMwLDB4N0UsMHg3QSwweDc4LDB4RTAsMHgwMywweDQx
LDB4QzMsMHgzMCwweEExLDB4RTMsMHhGQSwweEZBLAorICAgIDB4RTMsMHgzOCwweEMzLDB4MzAs
MHhEQywweDVBLDB4RkMsMHhGRiwweDA0LDB4MzksMHhDMywweDMwLDB4OEQsMHhCRCwweEQ1LDB4
N0QsCisgICAgMHgyNCwweDM5LDB4QTIsMHgzMCwweDIyLDB4M0UsMHhGRiwweEQ1LDB4MDMsMHgz
OSwweEMzLDB4MzAsMHgwMCwweDAwLDB4MEEsMHgzRCwKKyAgICAweDI0LDB4NDEsMHgwMywweDM5
LDB4NUIsMHhCQiwweDgzLDB4QUQsMHg0NCwweDQ5LDB4MDMsMHg0MSwweDBELDB4MEIsMHgzRCww
eDA5LAorICAgIDB4NjQsMHg0OSwweDI0LDB4NDksMHhBRSwweEFGLDB4QUYsMHhCQiwweDQ0LDB4
NDksMHgwMywweDQxLDB4ODAsMHhBMCwweDcyLDB4RkUsCisgICAgMHgyNCwweDQxLDB4QzIsMHgz
OCwweDAwLDB4QUEsMHhCQSwweDc4LDB4MDMsMHg0MSwweEMzLDB4MzgsMHg4MiwweDJBLDB4QTAs
MHgzRiwKKyAgICAweDAzLDB4NDEsMHhFMywweDM4LDB4QkEsMHg5RSwweDVBLDB4RjgsMHgyNCww
eDQxLDB4MDMsMHgzOSwweDU3LDB4M0EsMHgwQiwweEVGLAorICAgIDB4NjUsMHg0MSwweEUzLDB4
MzAsMHhGRiwweERGLDB4N0MsMHg3RiwweDQ0LDB4MzksMHhFMywweDM4LDB4QkYsMHhCRiwweEY3
LDB4NzUsCisgICAgMHgyMywweDM5LDB4RTMsMHgzOCwweDM4LDB4RkEsMHhCRCwweDJGLDB4NDQs
MHg0MSwweDAzLDB4MzksMHg4QiwweEE5LDB4RUEsMHhFMiwKKyAgICAweDY0LDB4NDksMHgwMiww
eDM5LDB4QTAsMHhFQiwweEZGLDB4NTcsMHg0NCwweDQxLDB4QzIsMHgzMCwweEY4LDB4NkEsMHhG
MiwweEZGLAorICAgIDB4MDIsMHgzOSwweEMyLDB4MzAsMHg1NywweERGLDB4REUsMHg3OCwweDAz
LDB4MzksMHhDMiwweDMwLDB4QkYsMHhBNiwweDhCLDB4RTUsCisgICAgMHgyMywweDM5LDB4RTIs
MHgzOCwweEZELDB4QUYsMHgwQiwweEE5LDB4MjMsMHgzOSwweEUyLDB4MzAsMHhGRiwweEZBLDB4
RTIsMHhFMywKKyAgICAweDI0LDB4MzksMHgwMywweDM5LDB4MkYsMHhFNSwweDc1LDB4QjUsMHgy
NCwweDM5LDB4RTMsMHgzOCwweDdDLDB4RkMsMHhBOCwweDA4LAorICAgIDB4MDMsMHgzOSwweEMy
LDB4MzAsMHhBMiwweEUwLDB4QjgsMHhCMCwweDAzLDB4MzksMHhDMiwweDMwLDB4MkIsMHhBRiww
eERELDB4N0EsCisgICAgMHgyMywweDQxLDB4QzIsMHgzMCwweDBCLDB4QkYsMHhERCwweDVELDB4
NjQsMHg0MSwweEMyLDB4MzgsMHhFQSwweEFBLDB4QUIsMHhBRCwKKyAgICAweDIzLDB4NDEsMHhF
MywweDM4LDB4RDcsMHg1QiwweEZDLDB4QTgsMHg0MywweDQxLDB4RTMsMHgzOCwweDhELDB4QjUs
MHhGNywweEZGLAorICAgIDB4NDQsMHg0MSwweEUzLDB4MzgsMHhGRSwweEJBLDB4M0IsMHhCOSww
eDIzLDB4NDEsMHhFMiwweDM4LDB4MDAsMHhDNywweEY2LDB4QkMsCisgICAgMHg0NCwweDQ5LDB4
RTIsMHgzOCwweDAyLDB4RkEsMHg5RSwweEVCLDB4QTUsMHg1MSwweDIzLDB4NDksMHgyNywweEJG
LDB4QjcsMHhCRCwKKyAgICAweDQ3LDB4NkEsMHg4NCwweDUxLDB4MjcsMHgzRiwweEJELDB4RkQs
MHg4OCwweDdBLDB4RTYsMHg2MSwweEY1LDB4RkEsMHhBQSwweDBCLAorICAgIDB4NDcsMHg3Miww
eEE1LDB4NjEsMHg1NSwweDU3LDB4NUMsMHhFMiwweDQ3LDB4NzIsMHg4NSwweDU5LDB4MEIsMHgy
RCwweEI3LDB4RkUsCisgICAgMHg0NywweDcyLDB4RTUsMHg2OSwweDc4LDB4NjAsMHhEQiwweDc5
LDB4MDUsMHg2QSwweEM1LDB4NjEsMHg4MywweEJGLDB4OEUsMHgwQiwKKyAgICAweDY3LDB4NzIs
MHhFNSwweDYxLDB4OEIsMHgwOSwweDA5LDB4QjUsMHg0NywweDcyLDB4RTUsMHg2MSwweEY2LDB4
QkUsMHhFMCwweDAwLAorICAgIDB4QTcsMHg3QSwweDI2LDB4NzIsMHgwOSwweDJCLDB4MDksMHgy
QiwweDA5LDB4ODMsMHhBOCwweDdBLDB4RUIsMHhBNSwweDM1LDB4N0QsCisgICAgMHg4RiwweEI0
LDB4RTgsMHg4MiwweDJELDB4MkQsMHgyRCwweDJELDB4MzUsMHhFNiwweDMxLDB4Q0QsMHgwQiww
eDI5LDB4QUQsMHgyRCwKKyAgICAweDM1LDB4RTYsMHgxNCwweEU2LDB4QTgsMHhCRiwweEY3LDB4
NTUsMHgzNSwweEU2LDB4RjQsMHhERCwweEE4LDB4QTgsMHhGQSwweERGLAorICAgIDB4MzQsMHhF
NiwweEY0LDB4REQsMHhFQSwweDZBLDB4RkIsMHg3QiwweDE0LDB4REUsMHg5MywweEQ1LDB4Rjgs
MHhGRSwweEZFLDB4N0EsCisgICAgMHg5MywweEQ1LDB4RjEsMHhCQywweDY4LDB4NTgsMHg1OCww
eDVFLDB4OTMsMHhDRCwweDExLDB4QkQsMHgyRCwweDI5LDB4MjksMHgyRiwKKyAgICAweEI0LDB4
Q0QsMHg3MywweENELDB4QUEsMHhFQSwweEZFLDB4N0IsMHg5MywweENELDB4MzIsMHhDNSwweDgy
LDB4Q0EsMHhGRSwweDdGLAorICAgIDB4OTIsMHhDNSwweDMyLDB4QzUsMHg5RSwweEZGLDB4Rjcs
MHhGNywweDUyLDB4QzUsMHgzMiwweEM1LDB4ODAsMHhBMCwweEM2LDB4QzgsCisgICAgMHg1Miww
eEM1LDB4MTEsMHhCRCwweEYwLDB4RUEsMHhGQSwweDcyLDB4MTIsMHhDNSwweEIwLDB4QUMsMHhB
MCwweEZBLDB4RkUsMHg2MCwKKyAgICAweEYxLDB4QkMsMHg5MCwweEFDLDB4RjgsMHhGOCwweEY2
LDB4REYsMHhCMCwweEFDLDB4RUQsMHg5QiwweEY4LDB4NzgsMHg1RSwweDU3LAorICAgIDB4MkUs
MHhBNCwweENELDB4OTMsMHg4RSwweDNELDB4RjcsMHhGNSwweDkwLDB4QUMsMHhFRSwweDlCLDB4
MkYsMHgyRiwweDJCLDB4MjksCisgICAgMHhCMCwweEI0LDB4NEYsMHhBQywweEFFLDB4RUYsMHhF
MiwweEZBLDB4OTAsMHhBQywweDRGLDB4QTQsMHg4OCwweEEwLDB4RkUsMHg1NywKKyAgICAweDZG
LDB4QUMsMHgwRSwweDlDLDB4NzIsMHhFOCwweEFBLDB4MDIsMHg5MCwweEFDLDB4MkUsMHhBNCww
eDI5LDB4MjksMHgyRiwweDBBLAorICAgIDB4OTAsMHhBQywweDZGLDB4QTQsMHg2QSwweDAwLDB4
MjgsMHgwOCwweEIwLDB4QUMsMHg0RSwweEE0LDB4MkEsMHhCMCwweEY4LDB4NTgsCisgICAgMHg4
NCwweDU5LDB4MjIsMHg1MSwweEZELDB4OUYsMHhGNywweENBLDB4ODQsMHg1OSwweDQzLDB4NTEs
MHhGRiwweDhFLDB4RjcsMHg1QSwKKyAgICAweDgzLDB4NTksMHgyMiwweDUxLDB4Q0EsMHhBQSww
eDZBLDB4RUIsMHg4NCwweDYxLDB4MjIsMHg1MSwweDJGLDB4QUYsMHgwRCwweEE5LAorICAgIDB4
ODQsMHg2MSwweDQzLDB4NTEsMHg0QywweENCLDB4QUUsMHhGRSwweDYzLDB4NTksMHgyMywweDUx
LDB4MDAsMHhEOCwweDVFLDB4NjksCisgICAgMHg2NCwweDU5LDB4MjIsMHg1MSwweEVBLDB4OEEs
MHhGRSwweEZGLDB4ODQsMHg1OSwweDIyLDB4NTEsMHhEQSwweDI4LDB4QUEsMHhBRiwKKyAgICAw
eDYzLDB4NTksMHgyMywweDUxLDB4RjgsMHg2OCwweEY4LDB4MzAsMHg2NCwweDU5LDB4MjIsMHg1
MSwweDhCLDB4MDksMHhENywweDVFLAorICAgIDB4NjQsMHg1OSwweDAyLDB4NDksMHhGRiwweEZB
LDB4RkMsMHhGRiwweDQzLDB4NTEsMHgwMiwweDQ5LDB4QUEsMHhBQiwweDZGLDB4Q0IsCisgICAg
MHg0MywweDUxLDB4MDMsMHg0OSwweEZBLDB4RkEsMHhBQiwweDBGLDB4NjQsMHg1OSwweDAzLDB4
NDksMHhCRiwweEZCLDB4QTEsMHhGQiwKKyAgICAweDQ0LDB4NTEsMHgwMiwweDQ5LDB4QUUsMHhB
QSwweDZBLDB4NDAsMHg0NCwweDUxLDB4RTMsMHg0OCwweEVGLDB4QUIsMHg4RiwweEFELAorICAg
IDB4MjMsMHg1MSwweEUyLDB4NDgsMHhFMiwweEUwLDB4RTAsMHg2OCwweDI0LDB4NTksMHgwMiww
eDQ5LDB4QTMsMHg4OSwweDNCLDB4MzksCisgICAgMHg0MywweDU5LDB4MDMsMHg1MSwweDI5LDB4
MDMsMHhBMiwweDIwLDB4NjQsMHg1OSwweDQ0LDB4NTksMHhEQiwweDIxLDB4QTUsMHg5NSwKKyAg
ICAweDRBLDB4OTMsMHhBNSwweDYxLDB4QjUsMHgyNSwweDI1LDB4MkQsMHhDQiwweEEzLDB4NEIs
MHg5QiwweDM5LDB4QkQsMHhCRiwweEJGLAorICAgIDB4Q0MsMHhBMywweDhCLDB4OUIsMHgwQiww
eEJDLDB4QkIsMHhBRiwweEVDLDB4QUIsMHhDQywweEEzLDB4MEMsMHgwMiwweEFFLDB4Q0IsCisg
ICAgMHhFQywweEFCLDB4QUIsMHhBMywweEI4LDB4QUMsMHhGOCwweDdFLDB4Q0MsMHhBMywweDZB
LDB4OUIsMHhFOCwweEFBLDB4NjgsMHhCQSwKKyAgICAweEFCLDB4QTMsMHg0OSwweDkzLDB4RkUs
MHhGQiwweEFFLDB4QjIsMHg4QSwweDlCLDB4MjksMHg5MywweEFGLDB4ODgsMHhCQSwweDVFLAor
ICAgIDB4NkEsMHg5QiwweDA5LDB4OEIsMHhDOCwweDgyLDB4RkMsMHg3NCwweDQ5LDB4OTMsMHhF
OCwweDhBLDB4QUEsMHhFOCwweEVFLDB4RjcsCisgICAgMHgyOSwweDkzLDB4QzgsMHg4MiwweEMy
LDB4RTIsMHg3QSwweDVFLDB4MDksMHg4QiwweEM4LDB4ODIsMHg3RiwweDcwLDB4N0YsMHg1RCwK
KyAgICAweEU5LDB4OEEsMHg4NywweDdBLDB4RjAsMHg3OCwweEY4LDB4RjIsMHg4NywweDdBLDB4
MjYsMHg2QSwweERBLDB4RkEsMHg3OCwweEI4LAorICAgIDB4NjcsMHg3MiwweDQ2LDB4NzIsMHg3
RSwweEI2LDB4QjUsMHhBQiwweDY3LDB4NzIsMHgyNiwweDcyLDB4RkMsMHhCQSwweDI1LDB4QUQs
CisgICAgMHg0NiwweDcyLDB4MDUsMHg2QSwweDYwLDB4QzIsMHhFMCwweDgwLDB4NDYsMHg3Miww
eEU1LDB4NjksMHhEQiwweDI5LDB4MjksMHgwQSwKKyAgICAweDQ2LDB4NzIsMHgwNSwweDZBLDB4
REEsMHhDQSwweEFFLDB4QUEsMHg0NywweDcyLDB4MDYsMHg2QSwweDAwLDB4ODksMHgwMCwweDA4
LAorICAgIDB4QTcsMHg3QSwweDQ2LDB4NzIsMHhFRCwweDI1LDB4MkIsMHgyNywweEU4LDB4ODIs
MHg4NywweDdBLDB4NzcsMHhDRiwweEZCLDB4RUIsCisgICAgMHhBOCwweDdBLDB4NjQsMHg1MSww
eDVFLDB4NkEsMHhFMCwweEEwLDB4ODQsMHg1MSwweEUzLDB4NDAsMHg1RiwweDdFLDB4NUMsMHg1
OCwKKyAgICAweEUzLDB4MzgsMHhBMiwweDM4LDB4QzAsMHhBQSwweEUyLDB4RUEsMHhFMywweDM4
LDB4QTEsMHgzMCwweDBGLDB4MEYsMHgyRiwweDI3LAorICAgIDB4MjQsMHgzOSwweEMyLDB4Mzgs
MHgyQiwweEE3LDB4OUYsMHhGRSwweDAzLDB4NDEsMHhBMiwweDMwLDB4RTAsMHhFMCwweDY4LDB4
N0IsCisgICAgMHhFMywweDM4LDB4QTIsMHgzMCwweDI1LDB4QUIsMHhBQiwweEI5LDB4MjMsMHg0
MSwweEUzLDB4MzgsMHhCRCwweEFGLDB4MEIsMHhBQiwKKyAgICAweDIzLDB4NDEsMHhDMiwweDM4
LDB4QUUsMHhGQSwweEYyLDB4NkEsMHg0NSwweDQxLDB4RTMsMHgzOCwweDNGLDB4RjUsMHhGRiww
eDU3LAorICAgIDB4NDQsMHg0OSwweEUzLDB4MzgsMHhFOCwweEY4LDB4RUUsMHhFRCwweDAzLDB4
NDEsMHhFMywweDM4LDB4ODgsMHg3QSwweDgyLDB4RTAsCisgICAgMHgwMywweDQxLDB4RTMsMHg0
MCwweDgwLDB4MDMsMHhGMiwweDYxLDB4MDMsMHg0MSwweEMzLDB4MzgsMHg4QSwweEFBLDB4NkIs
MHhEQiwKKyAgICAweDQ0LDB4NDksMHhDMywweDM4LDB4QUEsMHhBQiwweEFELDB4RUYsMHg4Niww
eDUxLDB4MDMsMHg0MSwweDJCLDB4QjksMHhCNSwweEZELAorICAgIDB4NjUsMHg0OSwweDAzLDB4
NDEsMHhBMCwweEY4LDB4RUEsMHg3QSwweDI0LDB4NDEsMHhDMywweDMwLDB4RkUsMHg1OCwweDdB
LDB4RkEsCisgICAgMHhFMywweDM4LDB4ODIsMHgyOCwweDJFLDB4QkYsMHhEQSwweEU4LDB4QzIs
MHgzMCwweDgxLDB4MjgsMHg4MCwweEVBLDB4RkUsMHhGRiwKKyAgICAweEMzLDB4MzAsMHg4MSww
eDI4LDB4MkYsMHgyRiwweDJGLDB4MkIsMHgwMywweDM5LDB4QzMsMHgzMCwweDM1LDB4QkIsMHhC
RiwweDlGLAorICAgIDB4MjQsMHg0MSwweEUzLDB4MzgsMHgyRiwweDI3LDB4QUYsMHhBQiwweDY1
LDB4NDksMHgwMywweDQxLDB4MkYsMHhBRiwweEFELDB4MEYsCisgICAgMHg2NSwweDQ5LDB4MjMs
MHg0MSwweDZBLDB4NkEsMHhGNywweEFCLDB4NDQsMHg0OSwweDAzLDB4NDEsMHgyRiwweEFGLDB4
RkYsMHhEQywKKyAgICAweDQ1LDB4NDksMHhFMywweDM4LDB4N0UsMHg2RSwweEEwLDB4QUEsMHgy
NCwweDQxLDB4QzMsMHgzOCwweEJELDB4RkYsMHhGQywweEZDLAorICAgIDB4MDMsMHgzOSwweEUz
LDB4MzgsMHhCQywweEZDLDB4RkEsMHhCRiwweDI0LDB4MzksMHhDMywweDMwLDB4QTIsMHhDMiww
eDhBLDB4RTYsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweENBLDB4NEEsMHg1MiwweDVBLDB4
MDMsMHgzOSwweEEyLDB4MzAsMHhBQSwweEEzLDB4OUYsMHhGRCwKKyAgICAweDIzLDB4MzksMHhF
MywweDM4LDB4MDIsMHgyQywweEJELDB4N0QsMHg0NCwweDQxLDB4RTMsMHgzOCwweDgwLDB4RkEs
MHg1RSwweDU1LAorICAgIDB4MjQsMHg0MSwweEMyLDB4MzAsMHg3OCwweERBLDB4RkYsMHhGRiww
eDAzLDB4MzksMHhDMiwweDMwLDB4MkIsMHhBRCwweEFCLDB4RkEsCisgICAgMHgwMywweDM5LDB4
QzIsMHgzMCwweDgwLDB4MjAsMHhFRiwweEY3LDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGNiwweEEy
LDB4RUUsMHhFOCwKKyAgICAweDIzLDB4MzksMHhFMywweDMwLDB4QUQsMHhCRCwweEY1LDB4RTks
MHgyMywweDM5LDB4RTMsMHgzMCwweDIyLDB4QUEsMHhCRiwweDc3LAorICAgIDB4MjMsMHgzOSww
eEUyLDB4MzAsMHg4QSwweDYzLDB4QUIsMHhCRSwweDQ0LDB4NDEsMHhFMywweDM4LDB4M0IsMHhC
RCwweDc5LDB4REYsCisgICAgMHgyNCwweDQxLDB4RTMsMHgzOCwweERFLDB4RkEsMHhGRSwweDdD
LDB4MjQsMHgzOSwweEUyLDB4MzAsMHg3QiwweEZGLDB4QjAsMHhBQSwKKyAgICAweDAzLDB4Mzks
MHhDMiwweDMwLDB4NUQsMHhENywweEY3LDB4RkMsMHg0NCwweDQxLDB4RTIsMHgzMCwweDNELDB4
RjUsMHhERiwweEI1LAorICAgIDB4NDQsMHg0MSwweDAzLDB4MzksMHhGQSwweEJBLDB4RUIsMHhG
RSwweDIzLDB4NDEsMHhFMywweDM4LDB4RkUsMHhCRSwweEFBLDB4QUUsCisgICAgMHgwMywweDQx
LDB4RTIsMHgzOCwweEEwLDB4NTAsMHg1RiwweDU1LDB4MjQsMHg0MSwweEMyLDB4MzgsMHhBRiww
eDdFLDB4NjMsMHg4QSwKKyAgICAweDY0LDB4NDksMHgwMywweDM5LDB4QUQsMHhBRCwweEFCLDB4
QUYsMHg4NCwweDUxLDB4NDQsMHg0OSwweDk1LDB4MzUsMHgxNSwweEVELAorICAgIDB4QzUsMHg1
OSwweDY0LDB4NTEsMHgzRiwweEZFLDB4RkUsMHg1RiwweDY3LDB4NzIsMHhBNSwweDU5LDB4MEIs
MHgyNSwweEQ1LDB4NTUsCisgICAgMHg4OCwweDdBLDB4RTYsMHg2MSwweEU4LDB4MDgsMHgwMyww
eDI1LDB4ODcsMHg3QSwweEU1LDB4NjEsMHg1NywweDVGLDB4RTAsMHhDMCwKKyAgICAweDA2LDB4
NjIsMHhBNSwweDU5LDB4QUEsMHgyNiwweDFDLDB4NzgsMHg2NywweDcyLDB4QTUsMHg1OSwweEJG
LDB4QUYsMHgyQSwweDJELAorICAgIDB4ODgsMHg3MiwweEU1LDB4NjEsMHhEQiwweEFBLDB4MkEs
MHgyOCwweEE4LDB4N0EsMHg0NiwweDcyLDB4RkQsMHg3NSwweEFCLDB4MkIsCisgICAgMHhBOCww
eDgyLDB4NjcsMHg3MiwweEY5LDB4NEQsMHhCRiwweDFBLDB4QTgsMHg3QSwweDQ3LDB4NzIsMHgw
MiwweDJCLDB4MkEsMHhBNiwKKyAgICAweEIwLDB4QkMsMHg4OCwweDdBLDB4MkQsMHgzRCwweDNE
LDB4QkQsMHhGNCwweERELDB4RDEsMHhDNCwweDBCLDB4MEIsMHgyQiwweDJELAorICAgIDB4MTQs
MHhFNiwweEQ0LDB4REQsMHhBMCwweDc4LDB4RDcsMHg1NSwweDE0LDB4RTYsMHhCMywweEQ1LDB4
OEEsMHhBQSwweEVGLDB4NUYsCisgICAgMHgxNCwweERFLDB4QjMsMHhENSwweDgyLDB4RUMsMHg3
RSwweERGLDB4RDQsMHhENSwweDUyLDB4Q0QsMHhFMCwweEVBLDB4NkEsMHg2QSwKKyAgICAweDcz
LDB4QzUsMHhEMSwweEJDLDB4REUsMHg5QywweEJFLDB4M0UsMHhEMywweENELDB4NzMsMHhDRCww
eEY1LDB4RjUsMHhGRiwweEVELAorICAgIDB4OTMsMHhDRCwweDUyLDB4QzUsMHg4MCwweEVBLDB4
RTgsMHg3OCwweDczLDB4Q0QsMHgxMSwweEJELDB4RUEsMHhFOCwweDdFLDB4N0EsCisgICAgMHg1
MiwweEM1LDB4RjEsMHhCQywweDJCLDB4M0YsMHhENSwweERGLDB4NzMsMHhDRCwweDExLDB4QkQs
MHhBMiwweDBBLDB4MjIsMHgyRCwKKyAgICAweDczLDB4Q0QsMHhEMSwweEI0LDB4RTIsMHhFMiww
eEU4LDB4NzgsMHgxMSwweEJELDB4QjEsMHhCNCwweEU4LDB4RkEsMHg3QywweEVCLAorICAgIDB4
RDEsMHhCNCwweDRFLDB4QTQsMHhBQSwweDZBLDB4NzgsMHg1OCwweDJFLDB4QTQsMHg0QywweDgz
LDB4QTgsMHhGOCwweEZDLDB4NUUsCisgICAgMHhFRSwweDlCLDB4NkMsMHg4QiwweDgyLDB4MEEs
MHhBNywweDI1LDB4OTAsMHhBQywweEVFLDB4OUIsMHhBRCwweDI5LDB4MkYsMHhBQiwKKyAgICAw
eDkwLDB4QUMsMHgyRiwweEE0LDB4QzAsMHhGOCwweERFLDB4NUYsMHg0RiwweEE0LDB4RUUsMHg5
QiwweDgwLDB4QUEsMHhFNiwweEJFLAorICAgIDB4NkYsMHhBQywweDJFLDB4OUMsMHgyOSwweDI5
LDB4MzksMHgwRSwweDkwLDB4QUMsMHgyRSwweEE0LDB4MDgsMHg4MCwweDc4LDB4RTgsCisgICAg
MHg5MCwweEFDLDB4MEUsMHg5QywweDhBLDB4RTYsMHhGRCwweEY3LDB4NkYsMHhBQywweDRFLDB4
QTQsMHg3OCwweDc3LDB4RUEsMHgzNSwKKyAgICAweDYzLDB4NTksMHgwMiwweDQ5LDB4MDAsMHgy
OCwweDBGLDB4MjcsMHg4NCwweDU5LDB4MjMsMHg1MSwweEU4LDB4RkIsMHg1QSwweEZDLAorICAg
IDB4NjMsMHg1OSwweDIzLDB4NTEsMHhBQiwweDBCLDB4MDMsMHgyRiwweDg0LDB4NjEsMHgyMyww
eDUxLDB4QUMsMHhEQSwweEJBLDB4QkMsCisgICAgMHg2MywweDU5LDB4MDEsMHg1MSwweDJDLDB4
QUUsMHhBQSwweEJGLDB4NDMsMHg1OSwweDIzLDB4NTEsMHg4QSwweDYwLDB4NzIsMHhCOCwKKyAg
ICAweDg0LDB4NTksMHgyMiwweDUxLDB4RkYsMHg3RiwweDdCLDB4NUYsMHg2MywweDU5LDB4MjMs
MHg1MSwweENBLDB4RkYsMHhERCwweEI3LAorICAgIDB4NjMsMHg1OSwweDAyLDB4NDksMHhBOCww
eDQ4LDB4RkEsMHhGRSwweDYzLDB4NTEsMHgyMiwweDUxLDB4NzMsMHg2MywweEZCLDB4NUYsCisg
ICAgMHg0MywweDUxLDB4MDIsMHg0OSwweEFCLDB4NDMsMHhFOCwweEZFLDB4NDQsMHg1MSwweDAy
LDB4NDksMHhFNSwweDJELDB4MkQsMHgyMiwKKyAgICAweDY0LDB4NTksMHgwMywweDQ5LDB4OEEs
MHhFQiwweDZGLDB4N0YsMHg0MywweDUxLDB4RTIsMHg0OCwweDhBLDB4RTgsMHhFQiwweEY3LAor
ICAgIDB4NDQsMHg1MSwweEUzLDB4NDgsMHg3QSwweEZGLDB4QUEsMHg4QiwweDQ0LDB4NTEsMHhF
MiwweDQ4LDB4RUQsMHgzRiwweEJCLDB4RkIsCisgICAgMHg0MywweDUxLDB4MDMsMHg1MSwweEY3
LDB4REEsMHhGMiwweEI2LDB4QTUsMHg2MSwweDIzLDB4NTEsMHhGNSwweDc1LDB4QkQsMHhERiwK
KyAgICAweDY0LDB4NTksMHgyMywweDUxLDB4QkEsMHhEQSwweEY4LDB4RjAsMHg2NCwweDU5LDB4
MjMsMHg1MSwweEE2LDB4MzUsMHgxRCwweEJELAorICAgIDB4MkEsMHg5MywweDg0LDB4NjEsMHgy
RCwweDA5LDB4MEYsMHgwQiwweEFCLDB4QTMsMHg0QSwweDlCLDB4QUQsMHgyRCwweDJELDB4Mjcs
CisgICAgMHhDQywweEEzLDB4OEIsMHhBMywweDJGLDB4M0QsMHhERSwweDA4LDB4MEQsMHhBQyww
eEFCLDB4QTMsMHhBQSwweEVFLDB4RjcsMHgzRiwKKyAgICAweDJELDB4QjQsMHhDQywweEEzLDB4
NTUsMHhCRiwweEFELDB4MEUsMHgwRCwweEFDLDB4QUIsMHhBMywweDY3LDB4RkEsMHhFOCwweEVF
LAorICAgIDB4RUMsMHhBQiwweDhCLDB4OUIsMHhGRiwweERFLDB4NUEsMHhGOCwweDhCLDB4OUIs
MHgyOCwweDkzLDB4N0UsMHhGRSwweEY4LDB4NkMsCisgICAgMHgyOSwweDkzLDB4RTksMHg4QSww
eEY4LDB4RTAsMHhFQSwweEZBLDB4MDksMHg4QiwweEM4LDB4OEEsMHg2OCwweEZCLDB4N0EsMHg3
QSwKKyAgICAweDA5LDB4OEIsMHhBNywweDgyLDB4REEsMHgzRSwweEFFLDB4OUEsMHgwOCwweDhC
LDB4QTgsMHg4MiwweEJELDB4QUEsMHgyQSwweDJBLAorICAgIDB4MDksMHg4QiwweDg3LDB4N0Es
MHg2MiwweDcwLDB4RjgsMHhGQSwweDg3LDB4N0EsMHgyNiwweDZBLDB4QkEsMHhGNiwweEY2LDB4
QjgsCisgICAgMHg2NywweDcyLDB4MDUsMHg3MiwweEM4LDB4QTIsMHhBOCwweEE4LDB4NjcsMHg3
MiwweDI2LDB4NzIsMHhBOSwweEZFLDB4RkUsMHhGQiwKKyAgICAweDQ2LDB4NzIsMHgyNiwweDZB
LDB4ODIsMHhBOCwweEZBLDB4MjQsMHg0NiwweDcyLDB4MDYsMHg2QSwweDBBLDB4MkEsMHgxRSww
eEQ4LAorICAgIDB4NDYsMHg3MiwweDA1LDB4NkEsMHgyMCwweEE2LDB4OEIsMHg4QiwweDg3LDB4
ODIsMHgyNiwweDcyLDB4RDcsMHhCRiwweEZGLDB4MEIsCisgICAgMHhBOCwweDgyLDB4NDYsMHg3
MiwweDJELDB4QTIsMHgyMCwweDA4LDB4RTgsMHg4MiwweEE4LDB4ODIsMHg4RCwweEY1LDB4RDUs
MHg1NywKKyAgICAweEM4LDB4ODIsMHgyNiwweDZBLDB4NkEsMHhFOCwweDhBLDB4ODgsMHg2Nyww
eDdBLDB4RTMsMHg0MCwweDdFLDB4N0UsMHhFOCwweEU4LAorICAgIDB4MDMsMHg0OSwweEEyLDB4
MzAsMHg3RiwweEZGLDB4RUUsMHhFMCwweEUzLDB4MzgsMHhBMiwweDMwLDB4QkQsMHhGRiwweDZF
LDB4NUEsCisgICAgMHhFMywweDM4LDB4ODEsMHgzMCwweDgwLDB4MkEsMHhBQiwweEVELDB4RTMs
MHgzOCwweDgxLDB4MjgsMHhFOCwweEFBLDB4QjIsMHhCRiwKKyAgICAweEUzLDB4MzgsMHhBMiww
eDMwLDB4QUQsMHgzRSwweDNFLDB4QUYsMHgyNCwweDQxLDB4QzMsMHgzMCwweDJCLDB4QkYsMHhG
NiwweEZGLAorICAgIDB4MjQsMHgzOSwweEMyLDB4MzAsMHhGOCwweEJBLDB4RUEsMHhFRiwweDA0
LDB4MzksMHhDMiwweDM4LDB4N0EsMHhCRSwweEZGLDB4RkYsCisgICAgMHgyMywweDQxLDB4RTMs
MHgzOCwweDJELDB4NkQsMHhENSwweDU1LDB4NDQsMHg0OSwweEUzLDB4MzgsMHhCOCwweEFCLDB4
RUIsMHhGRCwKKyAgICAweDI0LDB4NDEsMHgwMywweDQxLDB4NUQsMHhGMCwweENBLDB4ODIsMHg2
NSwweDQ5LDB4QzIsMHgzOCwweERGLDB4RjMsMHhBQSwweDIyLAorICAgIDB4NjUsMHg0OSwweEUz
LDB4NDAsMHg3NywweEZELDB4MkEsMHg4QSwweDI0LDB4NDEsMHhFMywweDM4LDB4MkIsMHgyQiww
eDJBLDB4MjgsCisgICAgMHg2NSwweDQ5LDB4MDMsMHg0MSwweDZGLDB4Q0UsMHhFQSwweEVCLDB4
MjQsMHg0MSwweEMzLDB4MzAsMHhBQSwweEZDLDB4NzgsMHhGQSwKKyAgICAweDAzLDB4MzksMHhB
MiwweDMwLDB4N0MsMHhFMCwweDgyLDB4QUEsMHhFMywweDMwLDB4ODIsMHgyOCwweERGLDB4N0Ys
MHg5RiwweDJFLAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHg5NSwweEI1LDB4QTcsMHhBQyww
eDAzLDB4MzksMHhDMywweDMwLDB4REYsMHhGQSwweDhCLDB4QUIsCisgICAgMHgyMywweDQxLDB4
RTMsMHgzOCwweDBGLDB4QkIsMHhCRCwweDBCLDB4QzYsMHg1MSwweDIzLDB4NDEsMHhCNSwweEY1
LDB4QkQsMHgyQiwKKyAgICAweEE2LDB4NTEsMHg0NCwweDQ5LDB4N0UsMHhERiwweEZDLDB4RTgs
MHg2NCwweDQ5LDB4MDMsMHg0MSwweEY4LDB4RDcsMHhGRSwweDgwLAorICAgIDB4NDQsMHg0OSww
eDAzLDB4NDEsMHhFQSwweEVCLDB4RUEsMHhFNiwweDAzLDB4NDEsMHhDMywweDM4LDB4QTgsMHhC
QywweDlFLDB4RkEsCisgICAgMHhFMywweDM4LDB4MDMsMHgzMSwweDIyLDB4ODMsMHg4MiwweDAw
LDB4MDMsMHgzOSwweEMyLDB4MzAsMHg4QSwweEZFLDB4N0YsMHg1NSwKKyAgICAweEUzLDB4MzAs
MHhBMiwweDMwLDB4QjgsMHhGNiwweEZFLDB4MkEsMHhFMiwweDMwLDB4QTEsMHgzMCwweDhGLDB4
OEEsMHhBOCwweDAwLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHg2MiwweDdGLDB4RDcsMHhG
RiwweEUyLDB4MzAsMHhDMiwweDMwLDB4RjYsMHhGRiwweEJFLDB4RkUsCisgICAgMHgwMywweDM5
LDB4QzIsMHgzMCwweEZFLDB4RTIsMHhFMywweEFELDB4MDMsMHgzOSwweEMyLDB4MzAsMHhERiww
eEZGLDB4RkEsMHhBOCwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4QkYsMHgyRSwweEFBLDB4
RjIsMHgwMywweDM5LDB4QzIsMHgzMCwweERFLDB4RkMsMHhGNiwweDNGLAorICAgIDB4MDMsMHgz
OSwweEUzLDB4MzAsMHgyRSwweDBGLDB4NkIsMHhFQSwweDI0LDB4MzksMHhDMiwweDMwLDB4QTIs
MHhCQiwweDdGLDB4NUQsCisgICAgMHgyNCwweDM5LDB4QzIsMHgzMCwweDIzLDB4MEIsMHgyRCww
eEI3LDB4MjMsMHgzOSwweEUzLDB4MzgsMHhERSwweDU1LDB4RkYsMHhGMiwKKyAgICAweDAzLDB4
MzksMHhFMywweDMwLDB4NjAsMHhDMiwweENBLDB4N0QsMHgyMywweDM5LDB4RTMsMHgzOCwweEJG
LDB4REQsMHhEQiwweDU3LAorICAgIDB4MjQsMHgzOSwweEMyLDB4MzAsMHg3QywweEQ4LDB4RkEs
MHhCRiwweDQ0LDB4NDksMHhDMiwweDMwLDB4QUQsMHhBRiwweEI1LDB4QkYsCisgICAgMHg0NCww
eDQxLDB4MDMsMHgzOSwweDk3LDB4QjUsMHhENywweEQ1LDB4NDQsMHg0MSwweDAzLDB4MzksMHhE
NiwweERGLDB4QjcsMHgyRCwKKyAgICAweDQ0LDB4NDEsMHhDMiwweDMwLDB4RDcsMHhCRSwweEU4
LDB4QTgsMHg0MywweDQxLDB4RTMsMHgzOCwweEZGLDB4RkYsMHhDRiwweDlCLAorICAgIDB4NjUs
MHg0OSwweEUzLDB4MzgsMHgzNSwweEJGLDB4RjcsMHhGRiwweDg1LDB4NTEsMHgwMywweDM5LDB4
OEEsMHg4QiwweEJGLDB4RjUsCisgICAgMHg4NCwweDUxLDB4NDQsMHg0OSwweEFBLDB4QjIsMHhE
RSwweEI3LDB4QTUsMHg1OSwweDY0LDB4NTEsMHgyMiwweDI5LDB4MzUsMHg5NSwKKyAgICAweDQ3
LDB4NzIsMHhBNSwweDU5LDB4MDksMHhBRCwweEQ1LDB4NTUsMHhBNywweDdBLDB4QTUsMHg1OSww
eDg4LDB4ODIsMHhBQiwweEE1LAorICAgIDB4NjcsMHg3MiwweDg1LDB4NTksMHg3OCwweDc4LDB4
QzgsMHhBOCwweDA2LDB4NkEsMHg2NCwweDUxLDB4MjcsMHgzNSwweEZGLDB4REUsCisgICAgMHg2
NywweDcyLDB4QTUsMHg1OSwweDAyLDB4MDIsMHgwMywweDBELDB4QTgsMHg3QSwweDQ2LDB4NkEs
MHgyRiwweDJGLDB4RjcsMHg1RiwKKyAgICAweEM5LDB4ODIsMHg2NywweDdBLDB4QkEsMHhFOCww
eEEyLDB4MDEsMHhDOSwweDgyLDB4NjcsMHg3MiwweEZGLDB4REUsMHhGQSwweEI4LAorICAgIDB4
MkUsMHhBQywweEE4LDB4N0EsMHgzNSwweDM1LDB4QjUsMHhCRCwweEI0LDB4REQsMHg2RiwweEI0
LDB4MEIsMHgyQiwweEFELDB4QUQsCisgICAgMHhEMywweERELDB4NzIsMHhDRCwweEE4LDB4NkYs
MHhGNSwweEY1LDB4QjMsMHhENSwweDcyLDB4Q0QsMHgyQSwweDBFLDB4QjcsMHg1NywKKyAgICAw
eEQ0LDB4REQsMHg5MywweEQ1LDB4QTMsMHhFQSwweEJELDB4RjUsMHhCMywweEQ1LDB4MTEsMHhC
RCwweEUwLDB4RTAsMHhGOCwweDc4LAorICAgIDB4NzMsMHhDRCwweEYxLDB4QkMsMHgyNywweDA1
LDB4MzUsMHgzRCwweEIzLDB4RDUsMHg1MywweEM1LDB4OEIsMHg4QSwweEZGLDB4NUYsCisgICAg
MHg5MywweENELDB4NTIsMHhDNSwweEUwLDB4QUEsMHhFRSwweEI1LDB4NzMsMHhDRCwweEYxLDB4
QjQsMHhGMiwweEVBLDB4RTgsMHg4OCwKKyAgICAweDUyLDB4QzUsMHhCMCwweEI0LDB4RkYsMHhE
NywweEY2LDB4QjgsMHg1MiwweEM1LDB4RjEsMHhCQywweDJGLDB4QTksMHhGRiwweDU3LAorICAg
IDB4MzEsMHhDNSwweEIwLDB4QjQsMHhFOCwweEZDLDB4RDYsMHg1NywweEYxLDB4QkMsMHg5MCww
eEFDLDB4QzgsMHhFRiwweEZDLDB4RkIsCisgICAgMHhEMCwweEI0LDB4QUQsMHg5MywweEUwLDB4
NjIsMHg3QywweDdBLDB4QUQsMHg5MywweEVBLDB4N0EsMHhGOCwweEZFLDB4RjcsMHhENywKKyAg
ICAweDRGLDB4QTQsMHg2QywweDhCLDB4QTUsMHgyRCwweDJGLDB4MEIsMHg3MCwweEFDLDB4MkUs
MHhBNCwweEFFLDB4MjgsMHg3OCwweDVCLAorICAgIDB4NEYsMHhBNCwweDBFLDB4OUMsMHhDOCww
eDkyLDB4RDMsMHg1RCwweEIwLDB4QUMsMHgwRSwweDlDLDB4RjUsMHhGRSwweEVGLDB4MkIsCisg
ICAgMHg5MCwweEFDLDB4MkUsMHhBNCwweEFGLDB4OTksMHhFMiwweDIwLDB4NkYsMHhBQywweDJF
LDB4OUMsMHhDMiwweEEyLDB4REYsMHgwMCwKKyAgICAweDkwLDB4QUMsMHgwRCwweDlDLDB4RDcs
MHhENywweEJGLDB4MDAsMHhEMCwweEI0LDB4NEUsMHhBNCwweERELDB4QkQsMHgwQiwweDhBLAor
ICAgIDB4NjQsMHg1OSwweDIyLDB4NTEsMHhBNSwweEVFLDB4QkEsMHgyRiwweDg0LDB4NjEsMHgy
MiwweDUxLDB4RkYsMHhFNSwweEVCLDB4QTAsCisgICAgMHg4MywweDYxLDB4MjMsMHg1MSwweEI3
LDB4QUYsMHgzRiwweEJGLDB4ODQsMHg2MSwweDIyLDB4NTEsMHhCRSwweEZDLDB4NUEsMHg1QSwK
KyAgICAweDQzLDB4NTEsMHgwMiwweDUxLDB4QUEsMHhFMCwweEVBLDB4MjEsMHg2MywweDUxLDB4
MjIsMHg1MSwweEY3LDB4OTUsMHhFRCwweEFGLAorICAgIDB4NDMsMHg1OSwweDIyLDB4NDksMHhE
QSwweERFLDB4MEEsMHg4QSwweDYzLDB4NTEsMHgyMywweDUxLDB4QUYsMHhGRSwweEVGLDB4QUYs
CisgICAgMHg0MywweDUxLDB4MDIsMHg0OSwweEYyLDB4RkUsMHhFOCwweEFFLDB4MjIsMHg1MSww
eDAyLDB4NDksMHgyQSwweDZFLDB4REUsMHhENywKKyAgICAweDQzLDB4NTEsMHhFMiwweDQ4LDB4
MkUsMHhBOSwweEFFLDB4QUIsMHg0MywweDUxLDB4MDIsMHg0OSwweDAwLDB4QjgsMHhCRSwweDZF
LAorICAgIDB4NDMsMHg1MSwweDAzLDB4NDksMHg3OCwweEVDLDB4N0UsMHg5NywweDY0LDB4NTks
MHgwMywweDQ5LDB4NTUsMHhENSwweDNGLDB4RkYsCisgICAgMHg0MywweDUxLDB4MDIsMHg0OSww
eEFCLDB4RkMsMHhFQiwweDVBLDB4MjMsMHg1MSwweEUyLDB4NDgsMHg2RSwweDhCLDB4M0EsMHgy
QSwKKyAgICAweDQ0LDB4NTksMHgwMywweDUxLDB4QjcsMHgxNSwweEE3LDB4MkIsMHg2NCwweDU5
LDB4MjMsMHg1MSwweEIzLDB4OEIsMHhCQiwweDJELAorICAgIDB4NjQsMHg1OSwweDIzLDB4NTEs
MHhGQSwweDdFLDB4RUEsMHhFRSwweEM1LDB4NjksMHgyMywweDUxLDB4RjUsMHhCNSwweEY1LDB4
MzcsCisgICAgMHg0QSwweDlCLDB4MjYsMHg3MiwweDJELDB4MEQsMHgwOSwweDBCLDB4QUIsMHhB
MywweDZBLDB4OUIsMHgwRCwweEE5LDB4RUUsMHhBQiwKKyAgICAweEVDLDB4QUIsMHg4QiwweEEz
LDB4QUIsMHgyQiwweEE1LDB4QkQsMHgwRCwweEFDLDB4Q0MsMHhBMywweEJGLDB4QUYsMHgyRCww
eDJELAorICAgIDB4MkQsMHhCNCwweEVDLDB4QUIsMHg4OSwweEEyLDB4ODAsMHgzRiwweDJELDB4
QjQsMHhDQywweEEzLDB4RkUsMHhCQSwweEFGLDB4RTIsCisgICAgMHhFRCwweEFCLDB4NkIsMHg5
QiwweDY4LDB4RUMsMHhGOCwweEU4LDB4OEIsMHg5QiwweDI5LDB4OTMsMHg3QSwweEVCLDB4RkIs
MHg4OCwKKyAgICAweDZCLDB4OUIsMHgwOSwweDhCLDB4NUYsMHg3RiwweEZBLDB4RTAsMHgyOSww
eDkzLDB4QzgsMHg4MiwweDVFLDB4REUsMHg1RSwweEI4LAorICAgIDB4RTgsMHg4QSwweEM4LDB4
ODIsMHgzMCwweDBBLDB4MEIsMHhGQSwweDA4LDB4OEIsMHhDOCwweDgyLDB4OEEsMHgyOCwweDc3
LDB4RjcsCisgICAgMHhFOCwweDgyLDB4ODcsMHg3QSwweDc4LDB4N0EsMHhGRSwweDdDLDB4ODcs
MHg3QSwweDI2LDB4NkEsMHhCQywweEVDLDB4RDgsMHg1OCwKKyAgICAweDY3LDB4NzIsMHgyNiww
eDcyLDB4OUEsMHhGQSwweDZGLDB4QUYsMHg2NiwweDcyLDB4MDUsMHg2QSwweEQ4LDB4RjYsMHhG
RiwweEJFLAorICAgIDB4NDYsMHg3MiwweDI2LDB4NkEsMHgzRSwweEE1LDB4RUUsMHhBNywweDQ2
LDB4NzIsMHgyNiwweDZBLDB4RkEsMHhFQiwweDhBLDB4OEEsCisgICAgMHg2NywweDdBLDB4MjYs
MHg3MiwweEY1LDB4MEQsMHgwMiwweDNCLDB4QTgsMHg4MiwweDQ2LDB4N0EsMHhBRiwweDM2LDB4
QUUsMHgwMiwKKyAgICAweEM4LDB4ODIsMHg4NywweDgyLDB4MUYsMHhBRCwweEFCLDB4QUEsMHhD
OCwweDgyLDB4NjgsMHg3QSwweEFBLDB4QkEsMHhGNiwweEI4LAorICAgIDB4QzksMHg4MiwweDY3
LDB4NzIsMHg2QSwweEYyLDB4RjgsMHhGQSwweDg4LDB4N0EsMHhFNSwweDYxLDB4NTgsMHg3Miww
eEUwLDB4RTAsCisgICAgMHhDNSwweDU5LDB4RTIsMHgzOCwweDVFLDB4NUEsMHhGRSwweEY4LDB4
MDMsMHg0MSwweDgxLDB4MzAsMHg3QSwweEU4LDB4QTgsMHhBMCwKKyAgICAweEMyLDB4MzAsMHg4
MSwweDI4LDB4QUYsMHg1RSwweDc3LDB4RDQsMHhDMiwweDMwLDB4ODEsMHgyOCwweDNGLDB4QUIs
MHgyQiwweEFELAorICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHg4MCwweEEwLDB4RjgsMHhGRiww
eEUzLDB4MzgsMHhBMiwweDMwLDB4MDgsMHgwQSwweEZCLDB4RkUsCisgICAgMHgyMywweDQxLDB4
QTEsMHgzMCwweDgzLDB4QUIsMHhBRiwweEZELDB4RTMsMHgzOCwweEExLDB4MzAsMHhBMCwweEUw
LDB4RTgsMHhGQSwKKyAgICAweEUzLDB4MzgsMHhDMiwweDMwLDB4QTgsMHgyQiwweDIzLDB4MDMs
MHgyNCwweDQxLDB4QzIsMHgzOCwweDJCLDB4QUYsMHhGRiwweDdGLAorICAgIDB4MjQsMHg0MSww
eEMzLDB4MzgsMHgwMCwweDgyLDB4RkQsMHhGRCwweDY1LDB4NDksMHgwMywweDQxLDB4MjEsMHgy
OSwweEFCLDB4QTUsCisgICAgMHg4NSwweDUxLDB4MjQsMHg0MSwweEFBLDB4RTIsMHhDRiwweEI3
LDB4NDQsMHg0MSwweDAzLDB4NDEsMHhENiwweDZBLDB4NjAsMHhDMiwKKyAgICAweDQ0LDB4NDks
MHhFMywweDM4LDB4QTIsMHhFRiwweDdGLDB4N0YsMHgyMywweDQxLDB4RTMsMHgzOCwweDcwLDB4
QkEsMHhFRSwweEI3LAorICAgIDB4RTMsMHgzMCwweEEzLDB4MzAsMHgwQSwweDAwLDB4ODAsMHhG
MCwweEMyLDB4MzAsMHhBMiwweDI4LDB4MDAsMHhBMCwweDkwLDB4OTcsCisgICAgMHgwNCwweDM5
LDB4QzMsMHgzMCwweDc3LDB4QTUsMHhCNSwweEZELDB4QzMsMHgzOCwweEUzLDB4MzAsMHg3Riww
eERGLDB4REYsMHhENSwKKyAgICAweDQ0LDB4NDksMHhDMiwweDMwLDB4QUIsMHgyRCwweEJELDB4
M0YsMHg4NSwweDQ5LDB4NDQsMHg0OSwweDI1LDB4MkQsMHgyRiwweEI1LAorICAgIDB4QTUsMHg1
MSwweDY1LDB4NDksMHg0OCwweDcwLDB4NUEsMHg1RCwweDY1LDB4NDksMHgyMywweDQxLDB4RTAs
MHhFMCwweEY4LDB4NzgsCisgICAgMHg0NCwweDQxLDB4MDMsMHg0MSwweEJGLDB4QkYsMHg3Riww
eDVGLDB4MDMsMHg0MSwweEUzLDB4MzgsMHg2QSwweEVBLDB4NTgsMHhGMCwKKyAgICAweDAzLDB4
MzksMHhDMywweDMwLDB4QUYsMHgzQiwweEZCLDB4N0YsMHhFMywweDM4LDB4QzIsMHgzMCwweDU3
LDB4NTYsMHhENywweERFLAorICAgIDB4RTMsMHgzOCwweEMzLDB4MzAsMHhFMSwweEI3LDB4MTQs
MHgwRCwweDAzLDB4MzksMHhDMywweDMwLDB4QkYsMHhCRiwweEJFLDB4QUEsCisgICAgMHgwMyww
eDM5LDB4QzIsMHgzMCwweDlBLDB4QTgsMHhCQSwweEVFLDB4RTMsMHgzMCwweEMyLDB4MzAsMHg3
QywweDVDLDB4NUIsMHg5MiwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4RTUsMHg3QiwweEJG
LDB4RUIsMHgwMywweDM5LDB4QzIsMHgzMCwweEVCLDB4QjcsMHg3QywweDdBLAorICAgIDB4MDMs
MHgzOSwweEMyLDB4MzAsMHhFMiwweEEzLDB4NUYsMHg3NSwweEUzLDB4MzgsMHhDMiwweDMwLDB4
MkEsMHhGQSwweEZBLDB4MDMsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEVBLDB4QkQsMHhG
QiwweEYyLDB4QzQsMHgzOCwweEUyLDB4MzAsMHhCNywweEY1LDB4NUYsMHg3RiwKKyAgICAweDAz
LDB4MzksMHhDMiwweDMwLDB4M0YsMHhERiwweEZCLDB4REEsMHgyNCwweDM5LDB4QzIsMHgzMCww
eDYyLDB4RkUsMHhGQiwweERELAorICAgIDB4RTMsMHgzMCwweEEyLDB4MzAsMHhDQiwweENBLDB4
RjgsMHhFOCwweEUzLDB4MzAsMHhBMSwweDMwLDB4QTAsMHhBQiwweEFGLDB4QkYsCisgICAgMHgw
MywweDM5LDB4QzIsMHgzMCwweDJGLDB4QkQsMHhGRCwweERELDB4MDMsMHgzOSwweEMyLDB4Mzgs
MHgwRiwweEJCLDB4OUIsMHgwRCwKKyAgICAweDIzLDB4NDEsMHhFMiwweDM4LDB4MkEsMHgyQyww
eDBGLDB4MEQsMHg0NCwweDQxLDB4MDMsMHgzOSwweDhGLDB4QkYsMHhENywweEZDLAorICAgIDB4
NDQsMHg0MSwweDIzLDB4NDEsMHg1NywweDY1LDB4QjcsMHhGNSwweDQ0LDB4NDEsMHhFMywweDM4
LDB4QkUsMHhGQSwweEY4LDB4MUEsCisgICAgMHg0NCwweDQxLDB4MDMsMHgzOSwweEVFLDB4QUYs
MHhGQiwweDJGLDB4MjMsMHg0MSwweEMyLDB4MzgsMHhGQSwweERFLDB4RjgsMHhGOCwKKyAgICAw
eDY0LDB4NDksMHgwMywweDQxLDB4MEQsMHgwRCwweEFELDB4RkQsMHg4NSwweDUxLDB4MjMsMHg0
MSwweDFGLDB4QkUsMHhBRSwweEVELAorICAgIDB4QTUsMHg1MSwweDQ0LDB4NDksMHhBMiwweDIz
LDB4MjUsMHgzRCwweEM1LDB4NjEsMHg0MywweDQ5LDB4MkIsMHhGRiwweERGLDB4RkYsCisgICAg
MHgyNiwweDZBLDB4NjQsMHg1MSwweDgwLDB4QUIsMHhBRiwweEY1LDB4RTYsMHg2MSwweDYzLDB4
NTEsMHg3RSwweEVBLDB4QzIsMHg4QiwKKyAgICAweDI2LDB4NkEsMHg4NCwweDU5LDB4MkQsMHgy
NSwweDlGLDB4QkYsMHhBOCwweDdBLDB4MjYsMHg2QSwweDNGLDB4QUYsMHgyQiwweDJELAorICAg
IDB4QzksMHg4MiwweDY3LDB4NzIsMHg4QSwweEVBLDB4RjYsMHg3RiwweEM5LDB4ODIsMHg4OCww
eDdBLDB4NkIsMHhBMiwweEJFLDB4RjcsCisgICAgMHhBQiwweDkzLDB4QTgsMHg3QSwweDM1LDB4
QjUsMHhGNSwweEY1LDB4NTIsMHhDRCwweEVDLDB4QTMsMHgwQiwweDJCLDB4QUQsMHhBRCwKKyAg
ICAweDkzLDB4RDUsMHgxMSwweEM1LDB4MEEsMHgyQiwweEFELDB4QjUsMHg5MywweEQ1LDB4NTIs
MHhDRCwweEY0LDB4NTQsMHg3QiwweEZCLAorICAgIDB4OTMsMHhDRCwweDMxLDB4QzUsMHg4QSww
eEFFLDB4QUYsMHhGRiwweDkzLDB4RDUsMHhGMCwweEJDLDB4NzgsMHg1OCwweDVGLDB4NTcsCisg
ICAgMHg5MywweENELDB4RjEsMHhCQywweEFELDB4MjksMHg4RiwweDJBLDB4NzMsMHhDRCwweDEx
LDB4QkQsMHhGOCwweDc4LDB4RTAsMHg2MCwKKyAgICAweDUyLDB4QzUsMHhGMSwweEJDLDB4MEUs
MHhCRiwweEY3LDB4NTcsMHg3MywweENELDB4RDEsMHhCNCwweEE4LDB4MjgsMHhBRiwweEZELAor
ICAgIDB4NTIsMHhDNSwweDExLDB4QkQsMHg3OCwweEFBLDB4Q0YsMHg2RiwweDExLDB4QkQsMHg2
RiwweEFDLDB4QTgsMHhGOCwweDc4LDB4NUUsCisgICAgMHhCMCwweEI0LDB4NEYsMHhBNCwweEEw
LDB4OTIsMHhCRSwweDE3LDB4QjAsMHhCNCwweDkwLDB4QUMsMHg0QSwweDMyLDB4NTIsMHg3NiwK
KyAgICAweDRGLDB4QTQsMHhDOSwweDdBLDB4RTAsMHhGOCwweDU4LDB4NTgsMHgyRSwweDlDLDB4
RUEsMHg3QSwweEI1LDB4QkQsMHgyNSwweDBELAorICAgIDB4RDAsMHhCNCwweEVFLDB4OUIsMHhG
RCwweEVELDB4QUIsMHgwQSwweEYxLDB4QkMsMHg0RSwweEE0LDB4NTUsMHg1NSwweEJELDB4MEEs
CisgICAgMHgzMiwweEJELDB4MEUsMHg5QywweEZELDB4QUUsMHhBMiwweDgwLDB4RDAsMHhCNCww
eDZGLDB4QUMsMHhCRCwweEFBLDB4QTgsMHgyMCwKKyAgICAweEQwLDB4QjQsMHg2RiwweEFDLDB4
QTIsMHhBRiwweERGLDB4RkUsMHhCMCwweEFDLDB4NkYsMHhBQywweDAwLDB4QUUsMHhEQywweERF
LAorICAgIDB4QjAsMHhCNCwweDRGLDB4QTQsMHhBMiwweEUyLDB4RkIsMHhFMiwweEIwLDB4QUMs
MHg2RiwweEFDLDB4Q0IsMHhENSwweEQ3LDB4RjcsCisgICAgMHg4NCwweDU5LDB4NDMsMHg1MSww
eEJGLDB4QkEsMHhFMiwweEZFLDB4ODQsMHg1OSwweDQzLDB4NTksMHgwQSwweDhCLDB4MEYsMHhC
NywKKyAgICAweDYzLDB4NTksMHgyMywweDUxLDB4MEYsMHg4QSwweEVFLDB4RkMsMHg2MywweDU5
LDB4MDIsMHg1MSwweEZBLDB4RUEsMHhFQSwweEZCLAorICAgIDB4NDMsMHg1MSwweDAyLDB4NDks
MHgwMCwweDdGLDB4NkYsMHg3RiwweDY0LDB4NTEsMHhFMiwweDQ4LDB4MEEsMHhBNSwweEJGLDB4
QUUsCisgICAgMHg2MywweDUxLDB4MjIsMHg1MSwweEJGLDB4RkQsMHg3RiwweDUzLDB4NDMsMHg1
MSwweDIyLDB4NTEsMHhDOCwweDcwLDB4NzAsMHg3QSwKKyAgICAweDQzLDB4NTEsMHgwMiwweDQ5
LDB4OEUsMHhFMiwweDYyLDB4RDgsMHg0MywweDUxLDB4MDIsMHg0OSwweDk3LDB4OEYsMHhCRiww
eEVCLAorICAgIDB4NDQsMHg1MSwweDAzLDB4NDksMHhFQiwweDJBLDB4MkUsMHgwMSwweDQzLDB4
NTEsMHgwMiwweDQ5LDB4QUUsMHgyNywweEFELDB4QUQsCisgICAgMHg2NCwweDUxLDB4MDIsMHg0
OSwweEY1LDB4MzcsMHhENywweDVELDB4NDMsMHg1MSwweDAzLDB4NTEsMHhFQSwweEMyLDB4QzMs
MHhGQiwKKyAgICAweDQzLDB4NTEsMHhFMiwweDQ4LDB4NzgsMHhFQiwweEJFLDB4RkEsMHg2NCww
eDU5LDB4MDMsMHg1MSwweEY3LDB4QUYsMHhBRiwweDhCLAorICAgIDB4NjQsMHg1OSwweDIzLDB4
NTEsMHhBQSwweDJBLDB4RUEsMHhFQSwweDY0LDB4NTksMHgyMywweDUxLDB4MkQsMHhBRSwweERF
LDB4RkQsCisgICAgMHg0NCwweDU5LDB4MjMsMHg1OSwweDA4LDB4MjAsMHgwMCwweEMwLDB4RTUs
MHg2OSwweDAzLDB4NTEsMHhCRiwweEJGLDB4M0QsMHgzNSwKKyAgICAweDRBLDB4OUIsMHg2Nyww
eDdBLDB4MDksMHgwOSwweDBCLDB4MEIsMHhBQiwweEEzLDB4NkIsMHg5QiwweDIzLDB4QUIsMHhB
RiwweDJFLAorICAgIDB4RUMsMHhBQiwweDhCLDB4OUIsMHhGRiwweEZELDB4MkYsMHhCQiwweEVD
LDB4QUIsMHhBQywweEEzLDB4MkYsMHhCRiwweEFGLDB4QUYsCisgICAgMHgwRCwweEFDLDB4Q0Ms
MHhBMywweDNBLDB4QUYsMHhCQiwweEJGLDB4MEQsMHhBQywweENDLDB4QUIsMHg2MCwweDgyLDB4
QTIsMHhFQiwKKyAgICAweDBELDB4QUMsMHhBQiwweEEzLDB4N0YsMHhBRSwweEJGLDB4OEEsMHhF
QywweEFCLDB4OEIsMHg5QiwweDVGLDB4RjIsMHhFMiwweEEwLAorICAgIDB4QUIsMHhBMywweDRB
LDB4OTMsMHg3NSwweDdFLDB4RkUsMHhBMCwweDZBLDB4OUIsMHhFOSwweDhBLDB4REUsMHg2RSww
eEE4LDB4ODgsCisgICAgMHgyOSwweDkzLDB4QzgsMHg4MiwweDc3LDB4RkUsMHhBQSwweEEwLDB4
RTgsMHg4QSwweEM4LDB4ODIsMHhDQiwweEJGLDB4RDQsMHhGOCwKKyAgICAweEU5LDB4ODIsMHg2
NywweDcyLDB4RjAsMHg2MiwweDcyLDB4N0MsMHg2NywweDcyLDB4MjYsMHg3MiwweEQ4LDB4Rjgs
MHhGQywweDdGLAorICAgIDB4NDYsMHg3MiwweDA2LDB4NkEsMHgyQSwweDBBLDB4MjgsMHg2QSww
eDQ2LDB4NzIsMHgyNiwweDZBLDB4RDgsMHgyOCwweDg4LDB4MkIsCisgICAgMHg0NiwweDcyLDB4
MDUsMHg2QSwweEFDLDB4OEEsMHg4OCwweDYwLDB4NjYsMHg3MiwweDA1LDB4NkEsMHhGQiwweEJF
LDB4RUYsMHg4MSwKKyAgICAweDg3LDB4N0EsMHgyNiwweDcyLDB4OUIsMHgzQiwweDJCLDB4MDIs
MHhFOCwweDhBLDB4ODgsMHg3QSwweDlGLDB4OTUsMHhCRiwweEFCLAorICAgIDB4QzgsMHg4QSww
eEE4LDB4N0EsMHg5RiwweEZFLDB4RkMsMHg3QiwweEU5LDB4OEEsMHg4OCwweDdBLDB4RkEsMHhB
OCwweEEyLDB4RUEsCisgICAgMHhBOCwweDgyLDB4NjgsMHg3QSwweDc4LDB4QTAsMHg4MCwweEU4
LDB4ODcsMHg3QSwweDI2LDB4NkEsMHg2MiwweDIwLDB4QTAsMHg2MiwKKyAgICAweDQ2LDB4NkEs
MHg0MywweDQ5LDB4NUUsMHg1OCwweDY4LDB4NzgsMHgyMywweDQ5LDB4QTIsMHgzMCwweEZBLDB4
N0EsMHhGQywweDc4LAorICAgIDB4QTIsMHgzMCwweDYxLDB4MjgsMHhGMCwweEZBLDB4REUsMHhE
OCwweEEyLDB4MjgsMHg2MSwweDI4LDB4MkIsMHgyRiwweDJCLDB4QTIsCisgICAgMHhDMiwweDMw
LDB4QTIsMHgyOCwweEQ3LDB4RUQsMHhBRiwweDZELDB4QzIsMHgzMCwweDgyLDB4MjgsMHgwOCww
eEFFLDB4QkIsMHhEQiwKKyAgICAweEMyLDB4MzAsMHhBMiwweDMwLDB4MEYsMHgyQSwweDFGLDB4
RDcsMHhDMiwweDMwLDB4QTIsMHgzMCwweERDLDB4NTQsMHg1QSwweEYyLAorICAgIDB4RTIsMHgz
OCwweEEyLDB4MzAsMHgwRiwweEVELDB4QkQsMHhGNywweEUzLDB4MzgsMHhDMywweDM4LDB4RTAs
MHhFMCwweEZGLDB4M0IsCisgICAgMHgwMywweDQxLDB4RTMsMHgzOCwweEJELDB4QkQsMHgwNSww
eEEyLDB4NDQsMHg0OSwweEUzLDB4MzgsMHgyQiwweDNGLDB4REYsMHg1RiwKKyAgICAweDQ0LDB4
NDksMHgwMywweDQxLDB4ODIsMHhFRSwweEY1LDB4NzUsMHg0NCwweDQ5LDB4MDMsMHgzOSwweDJB
LDB4RUIsMHhBRCwweDM1LAorICAgIDB4NDUsMHg0OSwweEUzLDB4MzgsMHg1RSwweERGLDB4RkMs
MHg3QywweDAzLDB4MzksMHhBMiwweDM4LDB4MkEsMHgyOCwweDI4LDB4QUIsCisgICAgMHgwMyww
eDM5LDB4QTIsMHgzMCwweDdBLDB4N0MsMHhFOCwweEEwLDB4QzMsMHgzMCwweDgxLDB4MjgsMHgy
QiwweEE5LDB4N0YsMHhENiwKKyAgICAweEUzLDB4MzAsMHg4MiwweDI4LDB4M0EsMHgyQiwweEFG
LDB4QkQsMHgwNCwweDM5LDB4QzIsMHgzMCwweEUzLDB4QTMsMHg3NywweDdGLAorICAgIDB4NDQs
MHg0OSwweEMyLDB4MzAsMHgzNSwweEE3LDB4MzUsMHhCNSwweDg1LDB4NDksMHgwMywweDQxLDB4
MkIsMHhBRSwweERGLDB4NTUsCisgICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweDg4LDB4RkUsMHhG
NSwweEQ3LDB4NjQsMHg0OSwweEUzLDB4MzgsMHhFMCwweEYwLDB4QUYsMHhERiwKKyAgICAweDI0
LDB4NDEsMHhFMywweDM4LDB4RUIsMHhFQiwweDVFLDB4NTcsMHgwMywweDM5LDB4QTIsMHgzMCww
eEEyLDB4RjIsMHhGQSwweERBLAorICAgIDB4RTMsMHgzOCwweEEyLDB4MzAsMHhFQSwweEJBLDB4
MkEsMHhCNywweDA0LDB4MzksMHhDMywweDMwLDB4QjUsMHhCRiwweDNFLDB4OTcsCisgICAgMHgw
MywweDM5LDB4QzMsMHgzMCwweEZGLDB4N0UsMHhFQSwweEFCLDB4MDMsMHgzOSwweEMzLDB4MzAs
MHhBQiwweEZCLDB4QkYsMHhCRCwKKyAgICAweDAzLDB4MzksMHhDMywweDMwLDB4QTIsMHhBQSww
eEI4LDB4REEsMHgwMywweDM5LDB4QzIsMHgzMCwweDJBLDB4MEEsMHhCQSwweEZFLAorICAgIDB4
RTMsMHgzOCwweEMyLDB4MzAsMHgyRiwweEQ3LDB4NTcsMHg1NSwweEUzLDB4MzAsMHhBMiwweDMw
LDB4QTgsMHgzRiwweDJGLDB4MkYsCisgICAgMHgwMywweDM5LDB4QTIsMHgyOCwweEZBLDB4RkEs
MHhGMCwweDcyLDB4RTMsMHgzOCwweEMyLDB4MzAsMHgwRCwweEFELDB4OTUsMHgyNSwKKyAgICAw
eDAzLDB4NDEsMHhFMywweDMwLDB4NTMsMHg1RCwweEY1LDB4RjUsMHgyNCwweDQxLDB4QzMsMHgz
MCwweEY3LDB4QkYsMHhCQSwweEFFLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHg3RSwweDdF
LDB4QkMsMHhCOCwweDAzLDB4MzksMHhDMiwweDMwLDB4QkYsMHhCQiwweEE4LDB4QzAsCisgICAg
MHgwMywweDM5LDB4QzIsMHgzMCwweDc4LDB4RUEsMHhFOCwweDgyLDB4MDMsMHgzOSwweEExLDB4
MzAsMHhGNywweEJCLDB4QUEsMHhBMCwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4RkQsMHg1
RiwweENCLDB4OEEsMHgwMywweDM5LDB4QzIsMHgzOCwweDBCLDB4MDMsMHgwQiwweEFCLAorICAg
IDB4NDQsMHg0MSwweEUzLDB4MzgsMHhBRCwweDNGLDB4QUIsMHhBQiwweDY0LDB4NDksMHgyMyww
eDQxLDB4QjgsMHhGRSwweEJFLDB4NkYsCisgICAgMHg2NCwweDQ5LDB4MjMsMHg0MSwweDU2LDB4
NzgsMHg1RiwweDVGLDB4MjMsMHg0MSwweDAzLDB4MzksMHhGQiwweERGLDB4REQsMHgzNiwKKyAg
ICAweDIzLDB4NDEsMHgwMywweDM5LDB4RUUsMHg3QiwweEJGLDB4QUUsMHgwMywweDQxLDB4RTMs
MHgzMCwweEEyLDB4OEEsMHgwMCwweDI4LAorICAgIDB4MjQsMHg0MSwweEUyLDB4MzgsMHgxNiww
eEY3LDB4QkUsMHhBRiwweDQ0LDB4NDksMHhFMiwweDM4LDB4M0UsMHgzNywweDM3LDB4RkYsCisg
ICAgMHhBNSwweDUxLDB4MjMsMHg0OSwweEJELDB4QkIsMHgyQiwweDhGLDB4ODQsMHg1MSwweDQ0
LDB4NDksMHhFQiwweEVFLDB4RjgsMHhFOCwKKyAgICAweEE1LDB4NTksMHg0NCwweDQ5LDB4MkYs
MHhCNSwweDVGLDB4NUYsMHhBNCwweDU5LDB4NjQsMHg1MSwweDJCLDB4QUUsMHgyOSwweDBCLAor
ICAgIDB4MDYsMHg2MiwweEE0LDB4NTksMHgyRiwweEFELDB4QkIsMHhFQiwweEM4LDB4N0EsMHgw
NiwweDYyLDB4QUQsMHgyOSwweDJELDB4MjUsCisgICAgMHgwOSwweDgzLDB4NjcsMHg3MiwweDdF
LDB4NUEsMHg2QSwweEEyLDB4QzgsMHg4MiwweDY3LDB4NzIsMHhBRSwweDhCLDB4QkQsMHhENSwK
KyAgICAweDJBLDB4ODMsMHg4NywweDdBLDB4M0QsMHhGRiwweEY1LDB4RjUsMHhBRiwweEJDLDB4
NEEsMHg5MywweDBCLDB4MEIsMHgyOSwweDBELAorICAgIDB4NTIsMHhDRCwweEFGLDB4QjQsMHgw
QiwweDhFLDB4MkYsMHhBRCwweDcyLDB4Q0QsMHgzMiwweEM1LDB4ODIsMHgyQiwweDg5LDB4QTUs
CisgICAgMHg5MywweENELDB4MzEsMHhDNSwweEY3LDB4RkYsMHhFNywweDg5LDB4MzIsMHhDNSww
eEYxLDB4QkMsMHhGOCwweDFGLDB4M0MsMHhCQywKKyAgICAweDk0LDB4Q0QsMHg1MiwweEM1LDB4
ODksMHgyQiwweDBCLDB4MjMsMHg5NCwweENELDB4MzIsMHhDNSwweDc4LDB4RTgsMHhFMCwweDU4
LAorICAgIDB4MzIsMHhDNSwweEYxLDB4QkMsMHg3QiwweDUwLDB4RkMsMHg5NiwweDExLDB4QkQs
MHhEMCwweEI0LDB4RUMsMHhFQSwweEQwLDB4REIsCisgICAgMHgzMiwweEM1LDB4OTAsMHhCNCww
eDIyLDB4QUEsMHhCQiwweDc3LDB4RjEsMHhCQywweDRGLDB4QTQsMHg3QywweDc4LDB4N0EsMHhG
RiwKKyAgICAweDhGLDB4QUMsMHg0RiwweEE0LDB4QjcsMHhCRCwweDJBLDB4MEEsMHhEMCwweEI0
LDB4NEYsMHhBNCwweDdFLDB4N0IsMHg2QiwweDhBLAorICAgIDB4RDAsMHhCNCwweEVBLDB4N0Es
MHg1RSwweEZFLDB4QUEsMHgwMCwweEYwLDB4QkMsMHg4QywweDhCLDB4MjUsMHgyQiwweDAyLDB4
MDgsCisgICAgMHgxMSwweEJELDB4QjAsMHhCNCwweEI5LDB4OEUsMHg4MCwweDdGLDB4MTEsMHhC
RCwweEQwLDB4QjQsMHgyMiwweDBBLDB4QkEsMHhCNSwKKyAgICAweDUyLDB4QzUsMHgxMSwweEJE
LDB4NkQsMHhCQiwweDJELDB4M0QsMHg1MSwweEM1LDB4RDAsMHhCNCwweDVGLDB4NUEsMHhGQSww
eEY4LAorICAgIDB4MTEsMHhCRCwweDhGLDB4QUMsMHg1NywweDdFLDB4RkEsMHhCMCwweEYxLDB4
QkMsMHg4RiwweEFDLDB4N0YsMHg3RiwweEVGLDB4RTIsCisgICAgMHhCMCwweEI0LDB4NkYsMHhB
QywweDVELDB4OUYsMHgyMywweEMyLDB4OTAsMHhBQywweDZGLDB4QUMsMHg1NSwweDJCLDB4N0Es
MHg3QiwKKyAgICAweDY0LDB4NTksMHg0MywweDUxLDB4OEUsMHg5OCwweEY2LDB4NTcsMHg2NCww
eDU5LDB4MjMsMHg1MSwweEYwLDB4N0EsMHg1RiwweERCLAorICAgIDB4NjQsMHg1OSwweDIzLDB4
NTEsMHhEQiwweEU1LDB4QTMsMHhDQiwweDQzLDB4NTEsMHgyMiwweDUxLDB4RjUsMHg3NCwweDc0
LDB4MDgsCisgICAgMHg0MywweDUxLDB4MDIsMHg0OSwweEFCLDB4REEsMHgzOCwweDJGLDB4NDMs
MHg1MSwweDIzLDB4NTEsMHg4RSwweEFGLDB4OUMsMHg1OCwKKyAgICAweDYzLDB4NTEsMHgwMiww
eDQ5LDB4RUYsMHg4RiwweEFGLDB4RkUsMHg0MywweDUxLDB4RTIsMHg0MCwweEE4LDB4QzIsMHhF
QSwweDdCLAorICAgIDB4MjMsMHg0OSwweEUyLDB4NDgsMHhENCwweEJBLDB4QTcsMHg4OSwweDQz
LDB4NTEsMHgwMywweDQ5LDB4MEIsMHg4RiwweDg1LDB4RDUsCisgICAgMHg0NCwweDUxLDB4MDMs
MHg0OSwweEVBLDB4RUEsMHg1RiwweDU3LDB4MjMsMHg1MSwweDAzLDB4NDksMHgwRCwweDhGLDB4
REMsMHgyRSwKKyAgICAweDQzLDB4NTksMHgwMywweDUxLDB4REQsMHgzQiwweDY4LDB4RkEsMHgy
MywweDUxLDB4RTMsMHg0OCwweDgyLDB4QjIsMHhGOCwweEZCLAorICAgIDB4NDQsMHg1OSwweDAz
LDB4NTEsMHg1NSwweDM1LDB4QTksMHgzRiwweDY0LDB4NTksMHgyMywweDU5LDB4QUIsMHhFMCww
eDY4LDB4Q0EsCisgICAgMHg2NCwweDU5LDB4MjMsMHg1MSwweDc4LDB4RTIsMHhGQSwweDVFLDB4
NDQsMHg1OSwweDIzLDB4NTEsMHhGRCwweERELDB4NzQsMHgwNSwKKyAgICAweDQ0LDB4NTksMHgw
MywweDUxLDB4RUIsMHhBRiwweDgzLDB4ODAsMHg4NywweDgyLDB4MjMsMHg1MSwweEI1LDB4QjUs
MHhCNSwweDJELAorICAgIDB4OEIsMHhBMywweEM4LDB4OEEsMHgyOSwweDA5LDB4MDksMHgwQiww
eENDLDB4QUIsMHg2QSwweDlCLDB4QkYsMHhBNywweEFELDB4QUEsCisgICAgMHhDQywweEEzLDB4
QUIsMHhBMywweDBCLDB4QjksMHg3QiwweEVCLDB4RUMsMHhBQiwweDhCLDB4OUIsMHgyQSwweDhB
LDB4QUQsMHhFRSwKKyAgICAweDBELDB4QUMsMHhBQiwweEEzLDB4MjgsMHgwRSwweDM3LDB4RDcs
MHgyRCwweEI0LDB4Q0MsMHhBMywweEE4LDB4QTIsMHhDQiwweEVELAorICAgIDB4MEQsMHhBQyww
eENDLDB4QUIsMHhBQSwweEYwLDB4RTIsMHg2RCwweDBELDB4QUMsMHhDQywweEFCLDB4RTIsMHhG
QiwweEU4LDB4REEsCisgICAgMHhFQywweEFCLDB4QUIsMHhBMywweDU2LDB4NjgsMHgwMCwweDZF
LDB4Q0MsMHhBQiwweDZBLDB4OUIsMHg1RiwweEFBLDB4ODAsMHhGRSwKKyAgICAweEFCLDB4QTMs
MHgwOSwweDhCLDB4NUEsMHg3QSwweEYwLDB4NzgsMHgwOSwweDkzLDB4ODcsMHg3QSwweEFBLDB4
RjgsMHg3QywweDdFLAorICAgIDB4QTgsMHg4MiwweDQ2LDB4NzIsMHhGMCwweEU4LDB4RkYsMHg1
NywweDY3LDB4N0EsMHgyNiwweDcyLDB4NzYsMHg4NywweDM3LDB4RjcsCisgICAgMHg0NiwweDcy
LDB4MjYsMHg2QSwweEE4LDB4QzAsMHg4MCwweDIwLDB4NDYsMHg3MiwweDI2LDB4NkEsMHhBRCww
eDlGLDB4QkEsMHhBMywKKyAgICAweDQ2LDB4NzIsMHgwNSwweDZBLDB4MzIsMHgyQiwweDBBLDB4
MkYsMHg4NywweDdBLDB4NDYsMHg3MiwweDc5LDB4REQsMHhGRCwweDhCLAorICAgIDB4QzgsMHg4
MiwweDY3LDB4NzIsMHgzRCwweDBGLDB4MDksMHgwMiwweEM4LDB4ODIsMHg4NywweDdBLDB4QTgs
MHhCMCwweEZBLDB4RjIsCisgICAgMHhDOCwweDgyLDB4NjcsMHg3QSwweEE4LDB4QUEsMHhBQSww
eDVBLDB4QzksMHg4MiwweDI1LDB4NkEsMHg4MCwweEFCLDB4RkUsMHg1NiwKKyAgICAweDg4LDB4
N0EsMHgyNiwweDZBLDB4ODAsMHhGQSwweDVGLDB4NUQsMHg2NywweDdBLDB4MDUsMHg2QSwweDgw
LDB4RkEsMHg1QiwweEQ3LAorICAgIDB4MjYsMHg2QSwweEE0LDB4NTksMHg3MCwweDYwLDB4RTAs
MHhBQSwweEE0LDB4NTksMHhDMiwweDM4LDB4NUYsMHg3RSwweERFLDB4NzgsCisgICAgMHhDMiww
eDM4LDB4ODIsMHgzMCwweDU2LDB4NUUsMHg3QywweDVDLDB4QTIsMHgzMCwweDgxLDB4MjgsMHhB
QSwweEFGLDB4MjIsMHgyOSwKKyAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4NkQsMHhFOCwweEMw
LDB4RTAsMHhDMiwweDMwLDB4ODEsMHgyOCwweDdCLDB4RUEsMHhBMiwweEFBLAorICAgIDB4QzMs
MHgzMCwweDgxLDB4MjgsMHhGQSwweEZCLDB4QkMsMHgyQSwweEMyLDB4MzAsMHhBMiwweDMwLDB4
RUYsMHhBRiwweDBCLDB4MEIsCisgICAgMHhFMywweDM4LDB4QTIsMHgzMCwweEY1LDB4QUYsMHgy
QiwweDAyLDB4MDMsMHgzOSwweEMyLDB4MzAsMHgzRCwweEFGLDB4QUIsMHgwRSwKKyAgICAweDAz
LDB4MzksMHhDMiwweDM4LDB4OUMsMHg1QywweDdFLDB4N0UsMHgwMywweDQxLDB4QzMsMHgzOCww
eDhBLDB4QzksMHhFRCwweEFELAorICAgIDB4NDQsMHg0OSwweEUzLDB4MzgsMHhBRCwweEFELDB4
MEQsMHgyQiwweDY1LDB4NDksMHgwMywweDQxLDB4RjUsMHhBRSwweEFBLDB4Q0EsCisgICAgMHgy
NCwweDQxLDB4RTMsMHgzOCwweDU0LDB4NUMsMHg4QywweDgwLDB4MjQsMHg0MSwweEUzLDB4Mzgs
MHg1NSwweDdELDB4NkEsMHg4MCwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4QUIsMHg5RCww
eDk3LDB4QkEsMHhFMywweDM4LDB4ODIsMHgyOCwweDdDLDB4RjAsMHhGOCwweEEwLAorICAgIDB4
QzIsMHgzMCwweDgyLDB4MjgsMHg5RiwweERGLDB4RDcsMHhCNiwweEMyLDB4MzAsMHhBMiwweDI4
LDB4MDAsMHhCMywweDdGLDB4RDYsCisgICAgMHhFMywweDM4LDB4ODIsMHgyOCwweDJBLDB4QUEs
MHhBRCwweEJGLDB4MjMsMHg0MSwweEMzLDB4MzgsMHhBRiwweDNELDB4OUQsMHhCRCwKKyAgICAw
eDQ0LDB4NDksMHhFMywweDM4LDB4REYsMHhGRiwweEMwLDB4OEEsMHgyNCwweDQxLDB4QzIsMHgz
OCwweEVFLDB4RjIsMHhGQSwweEY4LAorICAgIDB4RTMsMHgzOCwweDgyLDB4MzAsMHgzMCwweEZF
LDB4RjYsMHhGRiwweEMzLDB4MzAsMHg4MiwweDI4LDB4MjAsMHhBQiwweEE3LDB4REYsCisgICAg
MHhDMiwweDMwLDB4QTIsMHgyOCwweDBFLDB4MkUsMHgwQSwweDgzLDB4RTMsMHgzMCwweEEyLDB4
MjgsMHgyRiwweEI3LDB4N0YsMHhGRiwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4MEIsMHgw
QSwweDJGLDB4QTMsMHgwMywweDMxLDB4QTIsMHgyOCwweDhBLDB4QUEsMHhCRSwweERELAorICAg
IDB4RTMsMHgzMCwweEEyLDB4MzAsMHgyMCwweDIyLDB4QjYsMHhCRiwweDAzLDB4MzksMHhDMiww
eDMwLDB4RkYsMHg5QiwweEZBLDB4RTgsCisgICAgMHgwMywweDMxLDB4QTIsMHgzMCwweERGLDB4
RkMsMHhFQiwweEVCLDB4RTMsMHgzOCwweEMyLDB4MzAsMHhBNSwweEE1LDB4MkEsMHgwOCwKKyAg
ICAweDAzLDB4MzksMHhDMiwweDMwLDB4NTMsMHhFQiwweEJGLDB4RkMsMHgwMywweDM5LDB4QzIs
MHgzMCwweEE1LDB4OTUsMHg5NywweDU1LAorICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHgyQSww
eDlBLDB4MkEsMHhBMiwweDAzLDB4MzksMHhFMywweDM4LDB4QkMsMHhENywweDU3LDB4REUsCisg
ICAgMHgyNCwweDQxLDB4RTMsMHgzOCwweERBLDB4N0QsMHhGMiwweDRBLDB4MDMsMHg0MSwweEUy
LDB4MzgsMHg3OSwweEFCLDB4M0EsMHhBMiwKKyAgICAweDI0LDB4NDEsMHhFMiwweDM4LDB4RkYs
MHg2QiwweEU4LDB4MEYsMHgwMywweDQxLDB4RTMsMHgzOCwweEJELDB4QTcsMHhGRCwweDdCLAor
ICAgIDB4MjMsMHg0MSwweEMyLDB4MzAsMHhCNywweEJFLDB4MkEsMHhBQSwweDI0LDB4NDEsMHhF
MiwweDM4LDB4OTcsMHhGNywweEI5LDB4OEIsCisgICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweEVG
LDB4QjcsMHgyNSwweDBELDB4NjQsMHg0OSwweDAzLDB4MzksMHhFRSwweDVBLDB4RkEsMHhGMiwK
KyAgICAweDAzLDB4NDEsMHg0NCwweDM5LDB4QUEsMHhGQSwweDJCLDB4RkYsMHgyNCwweDQxLDB4
RTIsMHgzOCwweDJBLDB4OEUsMHhGQiwweERFLAorICAgIDB4MjMsMHg0MSwweDAzLDB4MzksMHgw
MywweDNGLDB4NkYsMHhENywweDIzLDB4NDEsMHhFMywweDM4LDB4MkUsMHgwOCwweEFGLDB4QkYs
CisgICAgMHgyNCwweDQxLDB4RTIsMHgzOCwweDJFLDB4MkEsMHgyRiwweEI3LDB4NDQsMHg0OSww
eEUyLDB4MzgsMHhBQSwweDBBLDB4RjIsMHg3RSwKKyAgICAweDg1LDB4NTEsMHgwMywweDQxLDB4
MkIsMHgwRiwweDNELDB4QkQsMHhBNSwweDUxLDB4NDQsMHg0OSwweDdFLDB4QUUsMHg4QiwweEFE
LAorICAgIDB4RTYsMHg1OSwweDY0LDB4NTEsMHg1RCwweEY5LDB4QUEsMHgyQywweEM1LDB4NTks
MHg2NCwweDUxLDB4OEQsMHhCRCwweDlGLDB4M0YsCisgICAgMHgyNiwweDZBLDB4RTUsMHg2MSww
eDc1LDB4MzUsMHg5RiwweEEyLDB4QTgsMHg3MiwweDA2LDB4NkEsMHgyRCwweEJGLDB4RUYsMHhC
RiwKKyAgICAweEU5LDB4ODIsMHg4NywweDcyLDB4RUIsMHhGQiwweDNELDB4RUQsMHhDOCwweDgy
LDB4NjcsMHg3MiwweEQ2LDB4NUEsMHhGOCwweDYwLAorICAgIDB4QTgsMHg3QSwweDQ2LDB4NzIs
MHgwQSwweDJELDB4MzcsMHg5RSwweDZFLDB4QUMsMHhBOCwweDdBLDB4MEYsMHgyQiwweDJELDB4
MkQsCisgICAgMHgxMSwweEM1LDB4OEUsMHhCNCwweDI5LDB4QUYsMHgyRCwweDI5LDB4QjMsMHhE
NSwweDExLDB4QkQsMHhGRCwweEI1LDB4QUYsMHgwQiwKKyAgICAweEIzLDB4RDUsMHgzMiwweEM1
LDB4QUIsMHhFQiwweEZBLDB4NzgsMHgzMiwweEM1LDB4QUYsMHhBQywweEE4LDB4QUEsMHhBRiww
eEI1LAorICAgIDB4QjQsMHhENSwweDMyLDB4QzUsMHhBOSwweEE5LDB4QTksMHg4RiwweDczLDB4
Q0QsMHgzMywweEM1LDB4NzAsMHhFOCwweEE4LDB4RTgsCisgICAgMHg1MywweEM1LDB4MTEsMHhC
RCwweEY3LDB4NUEsMHg1OCwweDc4LDB4MTEsMHhCRCwweEIwLDB4QjQsMHg3RiwweDdFLDB4N0Us
MHg1QywKKyAgICAweEIwLDB4QjQsMHgwRSwweEE0LDB4RTAsMHhGQSwweEZDLDB4QkUsMHhCMCww
eEI0LDB4MkUsMHhBNCwweEFGLDB4QUQsMHhBQiwweDhBLAorICAgIDB4MTEsMHhCRCwweDZGLDB4
QUMsMHg5RCwweDJGLDB4MEIsMHhBQSwweEYxLDB4QkMsMHg2RiwweEFDLDB4QTIsMHg4OCwweDY4
LDB4NUUsCisgICAgMHhEMSwweEI0LDB4NEUsMHhBNCwweDgwLDB4RkUsMHg1NSwweDU1LDB4QjAs
MHhCNCwweDJFLDB4QTQsMHg4MCwweEFGLDB4QkYsMHg1NSwKKyAgICAweEIwLDB4QjQsMHgwRSww
eDlDLDB4QTAsMHhBQSwweDdFLDB4NTcsMHhGMSwweEI0LDB4Q0QsMHg5QiwweDJBLDB4QkEsMHhG
RiwweEQ1LAorICAgIDB4RjEsMHhCQywweDRFLDB4QTQsMHgwMCwweEFCLDB4RjUsMHg1NSwweDEx
LDB4QkQsMHg2RiwweEFDLDB4MDAsMHg4QiwweEJGLDB4RjUsCisgICAgMHgzMiwweEM1LDB4OEYs
MHhBQywweEFBLDB4MDIsMHhCQSwweERELDB4MzIsMHhDNSwweEQwLDB4QjQsMHg3QSwweEJDLDB4
RjYsMHg5QiwKKyAgICAweDExLDB4QkQsMHhCMCwweEI0LDB4NUYsMHgwOCwweDIwLDB4MDAsMHgz
MiwweEM1LDB4OEYsMHhBQywweDU1LDB4RUMsMHg4OCwweDBBLAorICAgIDB4NjQsMHg1OSwweDIz
LDB4NTEsMHhGRSwweERDLDB4NTUsMHhENSwweDQzLDB4NTEsMHgyMywweDUxLDB4Q0IsMHg2Miww
eEJDLDB4NzUsCisgICAgMHg2MywweDUxLDB4MDMsMHg0OSwweDhELDB4RkUsMHg1QSwweEY3LDB4
NDMsMHg1MSwweDAyLDB4NDksMHgwQywweEJBLDB4RkUsMHg4QSwKKyAgICAweDQzLDB4NTEsMHgw
MywweDUxLDB4MkEsMHg4QSwweDRBLDB4QzgsMHg2NCwweDU5LDB4MDMsMHg0OSwweEVCLDB4QjIs
MHhGQiwweDZCLAorICAgIDB4NDMsMHg1MSwweEUyLDB4NDgsMHhFMiwweDgyLDB4RjgsMHg2RSww
eDQzLDB4NTEsMHhFMiwweDQwLDB4REIsMHhFRSwweEZCLDB4QTMsCisgICAgMHg0MywweDUxLDB4
MDMsMHg0OSwweDdGLDB4N0YsMHhGQiwweDhCLDB4NDQsMHg1MSwweDAyLDB4NDksMHhGRCwweEFC
LDB4OEEsMHhCOCwKKyAgICAweDIzLDB4NTEsMHgwMiwweDQ5LDB4NUUsMHg3RiwweEEyLDB4MDIs
MHg0MywweDUxLDB4RTMsMHg0OCwweDhBLDB4RTIsMHhBMCwweEE4LAorICAgIDB4NDQsMHg1OSww
eEUyLDB4NTAsMHhFQSwweDYyLDB4RkEsMHhFQSwweDQ0LDB4NTksMHhFMiwweDQ4LDB4QkQsMHgy
RCwweEFBLDB4MDIsCisgICAgMHg4NSwweDYxLDB4MjMsMHg1MSwweEZELDB4N0YsMHg1RSwweDc4
LDB4NjQsMHg1OSwweDIzLDB4NTEsMHhCOSwweEIxLDB4MjIsMHg4MywKKyAgICAweDY0LDB4NTks
MHgyMywweDUxLDB4RjQsMHhGRSwweEZGLDB4QUQsMHg2NCwweDYxLDB4MjMsMHg1MSwweEJELDB4
QTksMHhDQiwweEZCLAorICAgIDB4NjQsMHg1OSwweDIzLDB4NTEsMHhBQywweEJGLDB4RjUsMHgy
RiwweEE4LDB4ODIsMHg0NCwweDU5LDB4M0QsMHgzRCwweDJELDB4MkQsCisgICAgMHhBQiwweEEz
LDB4MDksMHg5MywweEFGLDB4QUQsMHgwRCwweDJCLDB4Q0IsMHhBMywweDhCLDB4OUIsMHgxRiww
eEFELDB4QUIsMHhBQSwKKyAgICAweENDLDB4QTMsMHg4QiwweEEzLDB4ODMsMHhBMiwweEQyLDB4
RUEsMHhDQiwweEEzLDB4NkEsMHg5QiwweEEyLDB4QUEsMHhFQiwweDdGLAorICAgIDB4QUIsMHhB
MywweDRCLDB4OUIsMHgwMCwweEUwLDB4RUIsMHg1RiwweEFDLDB4QTMsMHg0QiwweDlCLDB4ODIs
MHhBQiwweEVCLDB4RkQsCisgICAgMHhDQywweEFCLDB4MkEsMHg5MywweDAyLDB4QUEsMHhCQiww
eDVGLDB4Q0MsMHhBMywweDI5LDB4OTMsMHgwMCwweEFBLDB4REYsMHg1NSwKKyAgICAweEFCLDB4
QTMsMHgwOSwweDhCLDB4ODAsMHhFQSwweEZFLDB4RDUsMHg2QSwweDlCLDB4QzgsMHg4MiwweDAw
LDB4RUEsMHhGRSwweDVGLAorICAgIDB4MjksMHg5MywweDY3LDB4N0EsMHhBMCwweEY4LDB4RkEs
MHg1RiwweEM4LDB4ODIsMHg2NywweDcyLDB4REUsMHg1RiwweEZGLDB4RkYsCisgICAgMHg2Nyww
eDdBLDB4NDYsMHg3MiwweDUzLDB4Q0MsMHg3QSwweDc0LDB4NjcsMHg3MiwweDI2LDB4NzIsMHhD
RSwweDRBLDB4NkEsMHg3RiwKKyAgICAweDQ2LDB4NzIsMHgyNSwweDZBLDB4QTgsMHg5MCwweDdC
LDB4NTcsMHg0NiwweDcyLDB4MDUsMHg2QSwweEFFLDB4QTIsMHhBRiwweDNGLAorICAgIDB4Njcs
MHg3MiwweDA2LDB4NkEsMHhCRiwweEE2LDB4QUYsMHhBQSwweEU5LDB4ODIsMHg0NiwweDcyLDB4
OTcsMHhCRCwweEFFLDB4MjMsCisgICAgMHhFOCwweDgyLDB4ODcsMHg3QSwweEFGLDB4RkEsMHhE
QSwweDc0LDB4QzgsMHg4MiwweDQ2LDB4NzIsMHg4OCwweEE4LDB4QUEsMHg3QSwKKyAgICAweEE4
LDB4ODIsMHgwNSwweDZBLDB4RTgsMHhGOCwweDdFLDB4NUYsMHg2NywweDcyLDB4QzUsMHg2MSww
eEU4LDB4NkEsMHg3RiwweDVGLAorICAgIDB4MDUsMHg2QSwweEE0LDB4NTksMHhFMCwweDZELDB4
RkUsMHg1RiwweDA1LDB4NkEsMHg4NCwweDU5LDB4MDIsMHhBQiwweDlFLDB4RkYsCisgICAgMHgy
NSwweDYyLDB4QzUsMHg2MSwweDZGLDB4REYsMHhGRCwweEVELDB4QzUsMHg2MSwweEUzLDB4NDAs
MHg3OCwweDc4LDB4RTgsMHg4MCwKKyAgICAweDA0LDB4NDEsMHg2MSwweDI4LDB4NUUsMHg1RSww
eDc4LDB4NzgsMHhDMiwweDMwLDB4NjEsMHgyOCwweDNGLDB4MkQsMHgyRiwweEFELAorICAgIDB4
RTMsMHgzOCwweEEyLDB4MzAsMHg3RiwweEYyLDB4QUUsMHgzRiwweEUzLDB4MzgsMHhBMiwweDMw
LDB4N0YsMHhGQiwweDhBLDB4QTAsCisgICAgMHgwNCwweDM5LDB4QzMsMHgzMCwweEQ1LDB4REQs
MHhGNSwweDBBLDB4RTMsMHgzOCwweEEyLDB4MzAsMHhBRiwweEFFLDB4NUUsMHhGOCwKKyAgICAw
eDAzLDB4MzksMHhDMiwweDM4LDB4QTksMHgyRCwweDA5LDB4MkIsMHhFMiwweDQwLDB4MjMsMHgz
OSwweEZDLDB4RkUsMHhGRiwweEFGLAorICAgIDB4MDMsMHg0MSwweEEyLDB4MzgsMHhFOCwweEE4
LDB4MkMsMHgyRSwweDI0LDB4NDEsMHhDMywweDM4LDB4QTUsMHgyRiwweDhBLDB4QTAsCisgICAg
MHg2NSwweDQ5LDB4MDMsMHg0MSwweEFELDB4QjUsMHgwRCwweEVCLDB4NjUsMHg0OSwweDI0LDB4
NDEsMHhBQiwweDlGLDB4REUsMHg5QiwKKyAgICAweDQ0LDB4NDksMHgyMywweDQxLDB4NTQsMHg3
NywweDVGLDB4NTUsMHg0NCwweDQxLDB4MDMsMHg0MSwweEUyLDB4RjIsMHhGRiwweEI3LAorICAg
IDB4NDQsMHg0MSwweEUzLDB4MzgsMHhGQiwweERBLDB4RTIsMHhGQSwweDAzLDB4MzksMHhDMiww
eDMwLDB4N0UsMHhGQSwweEMyLDB4RTIsCisgICAgMHhFMywweDMwLDB4ODEsMHgyOCwweERGLDB4
NUYsMHhGQywweEY4LDB4RTMsMHgzMCwweEEyLDB4MzAsMHg1RiwweDg5LDB4MjksMHhCRCwKKyAg
ICAweDAzLDB4MzksMHhBMiwweDMwLDB4MUQsMHhGQiwweEVFLDB4QUUsMHgyNCwweDQxLDB4QzMs
MHgzMCwweDJGLDB4MjUsMHgyRiwweDBCLAorICAgIDB4NjQsMHg0OSwweDA0LDB4NDEsMHhFRiww
eEZGLDB4RUYsMHhFRiwweDI0LDB4NDEsMHhBMiwweDMwLDB4RTAsMHhCMCwweEZBLDB4NUUsCisg
ICAgMHhFMywweDM4LDB4QTIsMHgzMCwweDdGLDB4N0IsMHhFQiwweDhCLDB4RTIsMHgzMCwweDgx
LDB4MjgsMHhGRiwweDdCLDB4QUEsMHhBMCwKKyAgICAweDAzLDB4MzksMHg4MiwweDI4LDB4RUIs
MHg3QiwweEZCLDB4MEIsMHhFMywweDMwLDB4QTIsMHgyOCwweEVGLDB4QkIsMHg4QiwweDI4LAor
ICAgIDB4RTMsMHgzMCwweEEyLDB4MzAsMHhFMywweEZCLDB4RkYsMHhENiwweEUzLDB4MzAsMHhB
MiwweDMwLDB4OTcsMHgxRiwweEFCLDB4MkUsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDU3
LDB4N0IsMHhFQiwweEFBLDB4NDQsMHg0MSwweEUzLDB4MzgsMHg1NSwweERELDB4QkQsMHg4RiwK
KyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4RkUsMHhCQywweEE4LDB4MkEsMHgwMywweDM5LDB4
QzIsMHgzMCwweEFGLDB4QUYsMHhCNiwweEZBLAorICAgIDB4RTIsMHgzOCwweEMyLDB4MzAsMHhB
MiwweDJBLDB4QkYsMHhENSwweEUyLDB4MzgsMHhBMiwweDMwLDB4RkUsMHgyQywweDJFLDB4QUEs
CisgICAgMHgwNCwweDQxLDB4RTMsMHgzMCwweEY5LDB4OEQsMHhBRiwweEE5LDB4MjMsMHg0MSww
eEUzLDB4MzgsMHgxRCwweEFGLDB4QkEsMHhBMywKKyAgICAweDQ0LDB4NDEsMHgwMywweDM5LDB4
N0QsMHg1RCwweDhCLDB4MkEsMHgwMywweDQxLDB4RTMsMHgzOCwweEU3LDB4QkUsMHhBNCwweDI0
LAorICAgIDB4NDQsMHg0OSwweDAzLDB4MzksMHhCRCwweEJCLDB4N0IsMHgwMiwweDQ0LDB4NDks
MHgwMywweDM5LDB4RjcsMHhGRiwweEZGLDB4MEYsCisgICAgMHg0MywweDQxLDB4RTMsMHgzOCww
eEY3LDB4RUYsMHhGRSwweEE4LDB4MjMsMHg0MSwweDAzLDB4MzksMHg5RCwweDFCLDB4MDMsMHgw
MiwKKyAgICAweDg1LDB4NTEsMHgwMywweDM5LDB4MkIsMHgyRiwweEZELDB4RjcsMHg4NSwweDQ5
LDB4MDMsMHg0MSwweERDLDB4RkEsMHhGQiwweEZGLAorICAgIDB4NDQsMHg0MSwweEUyLDB4Mzgs
MHhFMiwweEVBLDB4N0EsMHhGQSwweDIzLDB4NDEsMHhFMywweDM4LDB4NTYsMHg5RiwweDNELDB4
QUUsCisgICAgMHg2NCwweDQ5LDB4MDMsMHgzOSwweEZELDB4RkYsMHhCQSwweDhBLDB4NDQsMHg0
MSwweDAzLDB4MzksMHhGRSwweEFBLDB4OUUsMHgyQSwKKyAgICAweDQ0LDB4NDEsMHhFMiwweDM4
LDB4RkYsMHhENywweEZFLDB4RUMsMHgyMywweDQxLDB4MDMsMHgzOSwweDc3LDB4MkIsMHgwMSww
eEFELAorICAgIDB4NDQsMHg0OSwweDAzLDB4NDEsMHhBQiwweEFBLDB4RkUsMHhFOCwweDg1LDB4
NTEsMHg0NCwweDQ5LDB4MkIsMHhCRCwweDY1LDB4RDUsCisgICAgMHhBNSwweDUxLDB4NjQsMHg1
MSwweEY4LDB4RkUsMHhCRCwweDM1LDB4QzYsMHg1OSwweDg0LDB4NTEsMHhCNSwweDFELDB4MUEs
MHgyQiwKKyAgICAweDY3LDB4NzIsMHhBNSwweDU5LDB4QUIsMHgyQiwweDJCLDB4QUQsMHg2Nyww
eDcyLDB4MDYsMHg2MiwweDBBLDB4MjIsMHhBOCwweERFLAorICAgIDB4QTgsMHg3QSwweDA2LDB4
NkEsMHgwMiwweDBBLDB4QUYsMHg3NSwweEE4LDB4N0EsMHgyNiwweDZBLDB4MDAsMHgwMiwweEFC
LDB4QjUsCisgICAgMHg4OCwweDdBLDB4NDcsMHg3MiwweDVFLDB4NUIsMHhCMCwweEFFLDB4NEQs
MHhBQywweEE4LDB4N0EsMHgyRCwweDJELDB4MjUsMHgyNSwKKyAgICAweDcyLDB4Q0QsMHhDRiww
eEJDLDB4QTUsMHgyRCwweDI5LDB4MDksMHhCMywweEQ1LDB4NzIsMHhDRCwweEFELDB4OEIsMHhD
QiwweDc1LAorICAgIDB4NzMsMHhDRCwweDhGLDB4QUMsMHhFMCwweDcwLDB4NzgsMHg3QywweDcz
LDB4Q0QsMHg0RiwweEFDLDB4QkQsMHhCRCwweDJELDB4MkIsCisgICAgMHg5NCwweENELDB4NTMs
MHhDNSwweDA5LDB4N0QsMHg3QSwweEZCLDB4NzMsMHhDNSwweEYxLDB4QkMsMHhFMCwweEZFLDB4
REYsMHg1RiwKKyAgICAweDUzLDB4QzUsMHhEMSwweEI0LDB4OEEsMHgwRiwweEE3LDB4RkYsMHgz
MiwweEM1LDB4OTAsMHhBQywweEY4LDB4RUEsMHhGOCwweDdFLAorICAgIDB4OTAsMHhBQywweEVF
LDB4OUIsMHgwMCwweDAwLDB4QTAsMHg3QSwweDkwLDB4QUMsMHhDRCwweDkzLDB4MDgsMHhBOCww
eEZGLDB4NzUsCisgICAgMHhCMCwweEFDLDB4Q0QsMHg5MywweEEwLDB4RUUsMHhGNSwweDU1LDB4
NkYsMHhBQywweEVFLDB4OUIsMHhBMCwweEZCLDB4QkYsMHg3NywKKyAgICAweDBFLDB4QTQsMHgy
RSwweDlDLDB4QjUsMHhGRSwweEJGLDB4OEEsMHgyRSwweEE0LDB4Q0MsMHg5MywweDAwLDB4RUEs
MHhGQSwweDYyLAorICAgIDB4MkYsMHhBNCwweENELDB4OTMsMHhBMCwweDc3LDB4N0YsMHhCNyww
eDBFLDB4OUMsMHg4QywweDhCLDB4QkUsMHhGRiwweERGLDB4MjAsCisgICAgMHg2RiwweEFDLDB4
QUQsMHg5MywweDJGLDB4QjcsMHhGNSwweDU1LDB4NkYsMHhBQywweEVELDB4OUIsMHgyQSwweDBC
LDB4MkIsMHg5NSwKKyAgICAweEIwLDB4QjQsMHgyRSwweEE0LDB4MjIsMHhBMiwweEZGLDB4Nzcs
MHgxMSwweEJELDB4NEYsMHhBNCwweDBBLDB4MkYsMHg5RiwweEQ1LAorICAgIDB4MzIsMHhDNSww
eEIwLDB4QUMsMHg4MCwweDAyLDB4MkIsMHhCNSwweDMyLDB4QzUsMHgxMSwweEJELDB4NzcsMHgy
QSwweDgwLDB4MjMsCisgICAgMHg0MywweDUxLDB4MjMsMHg1MSwweEZELDB4RDgsMHgwMCwweEUw
LDB4NDMsMHg1MSwweDIzLDB4NTEsMHg0QSwweEMyLDB4OEQsMHgxMywKKyAgICAweDQzLDB4NTEs
MHhFMiwweDQ4LDB4QUEsMHhGQSwweEY4LDB4QkMsMHg2MywweDU5LDB4MDMsMHg0OSwweEFGLDB4
MjksMHgzNSwweEJGLAorICAgIDB4NjQsMHg1OSwweDIzLDB4NTEsMHg3RSwweDA3LDB4RTUsMHg2
RCwweDQzLDB4NTEsMHgwMiwweDQ5LDB4ODMsMHgwOCwweDAyLDB4NUEsCisgICAgMHgyMywweDUx
LDB4RTIsMHg0MCwweDdDLDB4RUUsMHg2RSwweEFGLDB4MjMsMHg0OSwweEUyLDB4NDgsMHhBQiww
eDNGLDB4QUUsMHgwMCwKKyAgICAweDQ0LDB4NTEsMHgwMiwweDQ5LDB4QkUsMHg5RCwweEEzLDB4
QTIsMHg0MywweDUxLDB4MDMsMHg0OSwweEYyLDB4RTgsMHhCRSwweDJGLAorICAgIDB4NDQsMHg1
MSwweDAyLDB4NDksMHg5OSwweEZDLDB4QTIsMHgyOCwweDQzLDB4NTEsMHgwMiwweDUxLDB4QUEs
MHgwQSwweEM4LDB4RUUsCisgICAgMHg2MywweDUxLDB4MDMsMHg1MSwweDZGLDB4QkUsMHhBRSww
eDJBLDB4ODUsMHg2MSwweDIzLDB4NTEsMHhFNywweENFLDB4RjcsMHg1NywKKyAgICAweDY0LDB4
NTksMHgyMywweDUxLDB4NzAsMHg1OCwweERGLDB4REQsMHg2NCwweDU5LDB4MjMsMHg1MSwweDhE
LDB4QjcsMHhEQSwweDdBLAorICAgIDB4NjQsMHg1OSwweDAzLDB4NTEsMHgyRSwweEJCLDB4RkQs
MHhBRiwweDQzLDB4NTksMHgwMywweDUxLDB4MzIsMHhCQSwweDI4LDB4MUEsCisgICAgMHg2NCww
eDU5LDB4MDMsMHg1MSwweDJGLDB4QTcsMHhBRiwweEFBLDB4NEEsMHg5MywweDY0LDB4NTksMHgz
RCwweDJELDB4MkQsMHgyRiwKKyAgICAweEFCLDB4QTMsMHg0OSwweDlCLDB4QjUsMHhBNSwweEZC
LDB4MEYsMHhBQiwweEEzLDB4NkEsMHg5QiwweDAyLDB4MDIsMHgyQiwweERBLAorICAgIDB4Q0Ms
MHhBQiwweDZCLDB4OUIsMHhFMiwweEEyLDB4RUEsMHhFQSwweDhCLDB4OUIsMHgyQSwweDkzLDB4
QTIsMHhFQywweEZBLDB4N0UsCisgICAgMHg0QiwweDlCLDB4MDksMHg5MywweDIwLDB4QzAsMHhG
RSwweDdGLDB4NkIsMHg5QiwweEU5LDB4OEEsMHg4QSwweEVFLDB4N0YsMHg3NywKKyAgICAweDJB
LDB4OTMsMHg4NywweDdBLDB4MjAsMHhCQSwweEZFLDB4NTcsMHgwOSwweDhCLDB4ODcsMHg3QSww
eDAwLDB4ODAsMHhFQSwweDVELAorICAgIDB4MkEsMHg5MywweDg3LDB4N0EsMHg4QSwweEZBLDB4
N0YsMHg1NSwweEE4LDB4ODIsMHg2NiwweDcyLDB4MDAsMHhCRiwweDdFLDB4N0QsCisgICAgMHhB
NywweDdBLDB4NDYsMHg3MiwweEYwLDB4RkEsMHhGNywweEZGLDB4ODcsMHg3QSwweDQ2LDB4NzIs
MHhFMCwweDdCLDB4NTYsMHhENywKKyAgICAweDY2LDB4NzIsMHgyNiwweDZBLDB4RTYsMHhBRCww
eEM4LDB4M0EsMHg4NywweDdBLDB4MjYsMHg2QSwweDU3LDB4RjUsMHhGNSwweERBLAorICAgIDB4
NjYsMHg3MiwweDI1LDB4NkEsMHg3RiwweERBLDB4QUYsMHhCQSwweDY2LDB4NzIsMHgyNiwweDcy
LDB4QkIsMHhGQiwweEFBLDB4MEUsCisgICAgMHhDOCwweDgyLDB4NDYsMHg3MiwweEI1LDB4RkYs
MHgyRCwweDJBLDB4RTksMHg4MiwweDg4LDB4N0EsMHhFQSwweEZCLDB4NzIsMHhFQSwKKyAgICAw
eEE3LDB4N0EsMHg0NiwweDcyLDB4QTgsMHg4QywweEU4LDB4N0UsMHg4NywweDdBLDB4RTUsMHg2
OSwweEEwLDB4RUEsMHg3MiwweDdFLAorICAgIDB4MjYsMHg2QSwweEM0LDB4NjEsMHgyMCwweEUw
LDB4NUUsMHg3QiwweDA1LDB4NkEsMHhBNCwweDYxLDB4N0MsMHhFNywweEVFLDB4MkIsCisgICAg
MHgwNSwweDZBLDB4QTQsMHg2MSwweDdGLDB4RjUsMHhGRSwweEEyLDB4MDYsMHg2QSwweEE0LDB4
NjEsMHhERiwweEZCLDB4QTMsMHhBQSwKKyAgICAweEU1LDB4NjksMHhBNCwweDU5LDB4MkIsMHhB
RSwweEFELDB4ODIsMHgwNiwweDZBLDB4QTUsMHg1OSwweDVBLDB4N0IsMHg3QSwweEUyLAorICAg
IDB4QTUsMHg1OSwweDgxLDB4MzAsMHg3RSwweEZBLDB4RkEsMHhFOCwweEUzLDB4MzgsMHg4MSww
eDI4LDB4RjUsMHhEQSwweDdDLDB4RjAsCisgICAgMHhFMywweDM4LDB4NjEsMHgyOCwweDJCLDB4
MkIsMHhGRiwweDVGLDB4MDQsMHgzOSwweEEyLDB4MzAsMHgwMCwweDgyLDB4QkQsMHhGNSwKKyAg
ICAweDI0LDB4NDEsMHhBMiwweDMwLDB4OEEsMHgwRSwweEJGLDB4MjcsMHgyNCwweDQxLDB4QzIs
MHgzMCwweDdFLDB4N0EsMHhBMCwweDgwLAorICAgIDB4RTMsMHgzOCwweEEyLDB4MzAsMHgwMiww
eEE4LDB4RkMsMHg1OCwweEUyLDB4MzgsMHhBMiwweDMwLDB4QTAsMHgzQiwweEJGLDB4OUYsCisg
ICAgMHgyNCwweDQxLDB4RTIsMHgzOCwweDI1LDB4RkIsMHgyQiwweEJGLDB4NjQsMHg0OSwweDAz
LDB4NDEsMHhGNywweEJGLDB4QkYsMHhBRCwKKyAgICAweDY0LDB4NDksMHgyNCwweDQxLDB4RkIs
MHhFMiwweDg4LDB4MDAsMHg2NSwweDQ5LDB4MjQsMHg0MSwweERCLDB4N0YsMHg3NywweDdGLAor
ICAgIDB4NDQsMHg0MSwweEUyLDB4MzgsMHg4RiwweEY3LDB4RkEsMHhBMCwweDQ0LDB4NDksMHgw
MywweDM5LDB4QjcsMHhGRiwweEFBLDB4RUEsCisgICAgMHgyMywweDQxLDB4RTMsMHgzOCwweDcw
LDB4RjgsMHhEQSwweEI4LDB4MjQsMHg0MSwweEUzLDB4MzgsMHg2OSwweDVGLDB4QkUsMHgwQSwK
KyAgICAweDI0LDB4MzksMHhBMiwweDMwLDB4N0IsMHhGRSwweEVBLDB4RjAsMHhDMywweDMwLDB4
QTIsMHgyOCwweDI1LDB4M0YsMHgyQywweDA4LAorICAgIDB4MDQsMHgzOSwweEEyLDB4MzAsMHhC
RiwweDNGLDB4M0UsMHhCNywweDQ0LDB4NDEsMHgwNCwweDM5LDB4QUQsMHhFRiwweEUxLDB4NTUs
CisgICAgMHgyNCwweDQxLDB4QzMsMHgzMCwweDgwLDB4QTgsMHhFOCwweERFLDB4RTMsMHgzOCww
eEMzLDB4MzAsMHhEQywweEM4LDB4RUEsMHgxNywKKyAgICAweEMzLDB4MzgsMHhFMywweDMwLDB4
QkYsMHhERiwweDdGLDB4NTUsMHgwMywweDM5LDB4QzMsMHgzMCwweDc3LDB4OEEsMHhFMiwweEQ2
LAorICAgIDB4MDMsMHgzOSwweEMzLDB4MzAsMHhBRCwweEFGLDB4M0QsMHg3QiwweEUzLDB4MzAs
MHhDMiwweDI4LDB4QUMsMHg2QywweEZFLDB4NUMsCisgICAgMHhFMiwweDMwLDB4QTIsMHgyOCww
eDlELDB4RjUsMHhERiwweDczLDB4MDMsMHgzOSwweEEyLDB4MjgsMHhCRiwweEJELDB4QUYsMHgy
OSwKKyAgICAweDQ0LDB4NDEsMHhFMywweDM4LDB4RkYsMHhBQiwweDBELDB4OEYsMHg0NCwweDQx
LDB4MDMsMHgzOSwweEFELDB4RUIsMHhGQiwweDdBLAorICAgIDB4MjQsMHgzOSwweEUzLDB4Mzgs
MHhFRiwweDhCLDB4RkEsMHhGRiwweEUyLDB4MzAsMHhDMiwweDMwLDB4NkUsMHg1NywweDU3LDB4
NTcsCisgICAgMHhFMywweDM4LDB4QzIsMHgzMCwweDU1LDB4NUQsMHhBMiwweEEyLDB4MDMsMHgz
OSwweEMzLDB4MzAsMHhGRiwweDJGLDB4MEYsMHg4RiwKKyAgICAweDQ1LDB4NDEsMHhFMywweDM4
LDB4QTUsMHgyQiwweDJFLDB4QUIsMHg2NSwweDQ5LDB4MjQsMHg0MSwweDVELDB4NTUsMHhBRSww
eEVCLAorICAgIDB4NjQsMHg0OSwweDAzLDB4MzksMHhGQiwweDdFLDB4OUYsMHhBMiwweDQ0LDB4
NDksMHhFMywweDM4LDB4RjUsMHhGNiwweEI4LDB4QTIsCisgICAgMHg2NCwweDQ5LDB4MjQsMHg0
MSwweEFGLDB4QkYsMHhGQywweEFBLDB4NjUsMHg0OSwweDIzLDB4NDEsMHhBRiwweEZELDB4OUYs
MHg4MiwKKyAgICAweDY0LDB4NDksMHgwMywweDM5LDB4RjgsMHg3OCwweEZBLDB4QUEsMHg0NCww
eDQxLDB4MDMsMHg0MSwweEZBLDB4QTIsMHg5OCwweEZFLAorICAgIDB4NDQsMHg0MSwweEMyLDB4
MzgsMHgyQSwweDIyLDB4RTgsMHg1RSwweDQ0LDB4NDksMHhFMywweDM4LDB4QTgsMHhBOCwweEVG
LDB4REQsCisgICAgMHgyMywweDQxLDB4MDMsMHgzOSwweEEyLDB4NjAsMHgyQSwweDBCLDB4MjMs
MHg0MSwweEUyLDB4MzgsMHgyRSwweDJFLDB4MjgsMHhEQywKKyAgICAweDY0LDB4NDksMHgwMyww
eDM5LDB4OEIsMHhCRiwweEY3LDB4RDUsMHg0NCwweDQxLDB4RTIsMHgzOCwweDg4LDB4QkEsMHhF
RiwweDc1LAorICAgIDB4MjMsMHg0MSwweEUzLDB4MzAsMHgwOCwweDg4LDB4ODMsMHgwMSwweDQz
LDB4NDEsMHgwMywweDM5LDB4QjUsMHgzNSwweEJELDB4RDUsCisgICAgMHg2NCwweDQ5LDB4MjQs
MHg0MSwweDgyLDB4ODIsMHg5QiwweEZELDB4NjQsMHg0OSwweDIzLDB4NDEsMHhCMiwweEEyLDB4
QjgsMHhERCwKKyAgICAweDg1LDB4NTEsMHgyMywweDQxLDB4MjcsMHhCQSwweEZFLDB4RUUsMHhD
NiwweDU5LDB4NjQsMHg1MSwweDgyLDB4QUUsMHhGRCwweEZELAorICAgIDB4MDYsMHg2MiwweDg0
LDB4NTEsMHgyRCwweEI3LDB4RjcsMHhGRiwweDQ3LDB4NkEsMHhDNSwweDYxLDB4QUIsMHgwQiww
eEE5LDB4QUIsCisgICAgMHg0NywweDcyLDB4QzUsMHg1OSwweEJFLDB4NUEsMHg1OCwweEU4LDB4
NDcsMHg3MiwweEM0LDB4NTksMHgwQSwweDNELDB4MkYsMHhBRiwKKyAgICAweDg4LDB4NzIsMHgy
NiwweDZBLDB4RTgsMHhGNSwweEJELDB4QjUsMHgwRCwweEE0LDB4ODcsMHg3MiwweDM1LDB4MjUs
MHgzNSwweEI1LAorICAgIDB4OTIsMHhENSwweDhGLDB4QjQsMHg4QiwweDBCLDB4MjksMHgyOSww
eDkzLDB4RDUsMHgzMSwweEM1LDB4QUEsMHhBMCwweEVBLDB4NjgsCisgICAgMHg1MiwweENELDB4
QjAsMHhCNCwweDVDLDB4NTgsMHg1RSwweDU3LDB4NzMsMHhDRCwweEFGLDB4QjQsMHhBRCwweDBC
LDB4MkIsMHgwQiwKKyAgICAweDk0LDB4Q0QsMHg3MywweEM1LDB4NDcsMHg4OCwweEZBLDB4NUUs
MHgzMiwweEM1LDB4OTAsMHhBQywweEU4LDB4RTAsMHhFMCwweDc4LAorICAgIDB4RDEsMHhCNCww
eDJFLDB4QTQsMHgwMCwweDg4LDB4RkEsMHhGNywweEIwLDB4QjQsMHgwRSwweDlDLDB4QzgsMHhF
QSwweDdFLDB4NUYsCisgICAgMHg0RiwweEE0LDB4QUQsMHg5MywweEU4LDB4RkUsMHhERiwweDc3
LDB4Q0UsMHg5QiwweDZDLDB4OEIsMHgwOCwweEZBLDB4N0UsMHhGQiwKKyAgICAweENELDB4OTMs
MHg2QywweDhCLDB4MDgsMHgyQiwweEI3LDB4QTcsMHgwRSwweDlDLDB4QUQsMHg5MywweEEyLDB4
RUEsMHhGRiwweEZELAorICAgIDB4MEUsMHg5QywweDhELDB4OTMsMHgyMCwweEFBLDB4RkYsMHg3
RiwweDBFLDB4QTQsMHhBRCwweDkzLDB4OEEsMHg4QiwweEFELDB4RjksCisgICAgMHgyRSwweEE0
LDB4Q0QsMHg5MywweEZELDB4QkYsMHgwRiwweEU5LDB4MkUsMHg5QywweEVFLDB4OUIsMHg4Qiww
eDY4LDB4NTgsMHg1RSwKKyAgICAweENELDB4OTMsMHg2QywweDhCLDB4QkMsMHhCNCwweDVFLDB4
NUUsMHg0RiwweEE0LDB4QUMsMHg5MywweEFGLDB4MkIsMHgyRCwweEFELAorICAgIDB4NkYsMHhB
QywweDBFLDB4QTQsMHgzQSwweEEyLDB4MEIsMHhBQiwweEFGLDB4QUMsMHg0RiwweEE0LDB4RDcs
MHhERCwweEJGLDB4QUQsCisgICAgMHhGMSwweEJDLDB4NEYsMHhBNCwweEI3LDB4QUIsMHgwMiww
eDAyLDB4MTEsMHhCRCwweDZGLDB4QUMsMHgyQiwweEQ2LDB4RTgsMHgwMCwKKyAgICAweDY0LDB4
NTksMHgwMiwweDQ5LDB4RjIsMHhCRSwweDc4LDB4RUIsMHg2NCwweDU5LDB4MDMsMHg0OSwweEFF
LDB4M0YsMHhCOSwweEJELAorICAgIDB4NjUsMHg1OSwweDAzLDB4NDksMHhGNCwweDdCLDB4RUYs
MHhGRiwweDQ0LDB4NTEsMHhFMywweDQ4LDB4QUYsMHg4QiwweEVGLDB4REIsCisgICAgMHg0Myww
eDUxLDB4RTEsMHg0OCwweDAyLDB4OEEsMHhBQSwweDdFLDB4MjMsMHg0OSwweEUyLDB4NDAsMHhF
QywweDVFLDB4QkYsMHhGRiwKKyAgICAweDQzLDB4NTEsMHhFMiwweDQwLDB4RkIsMHhCOSwweEY3
LDB4MkYsMHg0MywweDUxLDB4MDIsMHg0OSwweEZCLDB4OEIsMHgwRiwweEJFLAorICAgIDB4NDMs
MHg1MSwweDIzLDB4NDksMHhDMCwweDQ0LDB4QzYsMHhFMCwweDY0LDB4NTEsMHgyMywweDUxLDB4
QUQsMHg1RCwweERGLDB4NTcsCisgICAgMHg0MywweDUxLDB4MDMsMHg1MSwweDJFLDB4QTgsMHg4
QSwweEVCLDB4NDQsMHg1OSwweDIyLDB4NDksMHhCNywweEE3LDB4QTcsMHhDRiwKKyAgICAweDY0
LDB4NTksMHgyMywweDUxLDB4QkEsMHhBQiwweDhCLDB4RjksMHg2NCwweDU5LDB4MDMsMHg1MSww
eDdFLDB4QUEsMHhBMCwweEFFLAorICAgIDB4NDMsMHg1OSwweDIzLDB4NTEsMHgzQiwweEZCLDB4
NzUsMHhBRSwweDY0LDB4NTksMHgyMywweDUxLDB4RjIsMHg1RiwweEZGLDB4RkEsCisgICAgMHg0
MywweDU5LDB4MjMsMHg1MSwweDJCLDB4MUIsMHgxRSwweDhCLDB4NDQsMHg1OSwweDAzLDB4NTEs
MHhFQSwweEYwLDB4NUEsMHg1QiwKKyAgICAweDg0LDB4NjEsMHgwMiwweDUxLDB4RkYsMHhCRCww
eDJGLDB4QUQsMHg0QSwweDlCLDB4QzUsMHg2MSwweDJELDB4MEQsMHgyOSwweDA5LAorICAgIDB4
QUIsMHhBMywweDZBLDB4OUIsMHgwRCwweDJELDB4MkQsMHhBNSwweEFCLDB4QTMsMHg2QSwweDlC
LDB4QjAsMHhGQywweEZDLDB4NzcsCisgICAgMHg4QiwweDlCLDB4MDksMHg4QiwweEEwLDB4NjAs
MHg3RSwweDVGLDB4NEEsMHg5QiwweDg3LDB4ODIsMHhBMCwweEFBLDB4N0IsMHg3RiwKKyAgICAw
eDI5LDB4OTMsMHg4NywweDdBLDB4QTAsMHg3QiwweERELDB4NTUsMHhFOSwweDhBLDB4NDYsMHg3
MiwweEU4LDB4RkEsMHhFRiwweEZGLAorICAgIDB4QTgsMHg4MiwweDQ2LDB4NzIsMHhCMCwweEFB
LDB4RkYsMHhGNywweEE4LDB4N0EsMHg0NiwweDcyLDB4RTIsMHhDQSwweEZBLDB4N0QsCisgICAg
MHg4NywweDdBLDB4NDYsMHg3MiwweENBLDB4RUEsMHhCOCwweDk3LDB4ODcsMHg3QSwweDQ2LDB4
NzIsMHhBMywweDg4LDB4RTIsMHg3QiwKKyAgICAweDg3LDB4N0EsMHgyNSwweDcyLDB4QzAsMHhF
QSwweEVBLDB4ODksMHg2NiwweDcyLDB4MjcsMHg3MiwweEFBLDB4QkUsMHhCQiwweEVFLAorICAg
IDB4NjYsMHg3MiwweDA1LDB4NkEsMHhCQywweEZBLDB4RkUsMHhBQSwweDY2LDB4NzIsMHgwNSww
eDcyLDB4QTAsMHhFNiwweDJGLDB4QUUsCisgICAgMHg2NiwweDcyLDB4MjYsMHg3MiwweDhGLDB4
MjIsMHgwMCwweDI4LDB4QTgsMHg3QSwweDQ2LDB4NzIsMHhENSwweEQ1LDB4MzUsMHgyRSwKKyAg
ICAweEM4LDB4ODIsMHg4NywweDdBLDB4MzUsMHhBNywweEVBLDB4QTgsMHhDOCwweDgyLDB4MjYs
MHg3MiwweEEwLDB4QUEsMHhGQSwweDdGLAorICAgIDB4ODcsMHg3QSwweDA1LDB4NkEsMHhBQyww
eEZGLDB4N0YsMHg3NSwweDI2LDB4NzIsMHhFNSwweDYxLDB4NzgsMHhBOCwweEYyLDB4RkEsCisg
ICAgMHgyNSwweDZBLDB4RTUsMHg2OSwweERGLDB4M0YsMHhCRCwweDYyLDB4MDUsMHg2QSwweEU1
LDB4NjEsMHg4RSwweDg4LDB4OTAsMHhCMCwKKyAgICAweDI2LDB4NkEsMHhFNSwweDY5LDB4REQs
MHhGNywweEYzLDB4QUUsMHgyNywweDcyLDB4QzQsMHg2MSwweEY3LDB4RkYsMHhCRiwweDJFLAor
ICAgIDB4MjYsMHg3MiwweEM1LDB4NjEsMHg5QSwweERFLDB4QUEsMHgwMiwweDI2LDB4NzIsMHhD
NSwweDU5LDB4N0UsMHg3QSwweEZFLDB4RUEsCisgICAgMHhDNSwweDYxLDB4MjQsMHg0OSwweDdD
LDB4N0EsMHhGOCwweEU4LDB4NDUsMHg0OSwweEEyLDB4MzAsMHg1RSwweDVFLDB4RjgsMHhGOCwK
KyAgICAweEMzLDB4MzAsMHg2MSwweDI4LDB4REYsMHg5RiwweEJDLDB4MjAsMHhBMiwweDMwLDB4
ODIsMHgyOCwweDAyLDB4RkUsMHg4OCwweDg4LAorICAgIDB4RTMsMHgzOCwweDgxLDB4MjgsMHgy
QiwweDJGLDB4QkQsMHhCOSwweDI0LDB4NDEsMHhDMiwweDMwLDB4RTIsMHhBRiwweDI5LDB4QkQs
CisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEY4LDB4NzgsMHg3QywweDdBLDB4QzIsMHgzMCww
eDgyLDB4MzAsMHhCQywweDJFLDB4M0UsMHhGQywKKyAgICAweDIzLDB4NDEsMHhBMiwweDMwLDB4
MkIsMHgyRCwweDhELDB4M0YsMHg0NCwweDQxLDB4MDMsMHg0MSwweDNGLDB4QjIsMHhBMiwweDgw
LAorICAgIDB4NjUsMHg0OSwweDI0LDB4NDEsMHhDMiwweDhBLDB4Q0IsMHg1RCwweDY0LDB4NDks
MHgyNCwweDQxLDB4NUYsMHg3QiwweEVGLDB4OEQsCisgICAgMHg2NCwweDQ5LDB4MjQsMHg0MSww
eERBLDB4NTYsMHg1RSwweDdFLDB4MjQsMHg0MSwweDAzLDB4NDEsMHg1MCwweDdBLDB4NzgsMHgw
QSwKKyAgICAweDI0LDB4NDEsMHhFMywweDM4LDB4QUUsMHhBRiwweEJFLDB4RkMsMHg2NSwweDQ5
LDB4MDMsMHgzOSwweEZGLDB4RkYsMHhDRiwweEE5LAorICAgIDB4MjQsMHg0MSwweEEyLDB4Mjgs
MHhGOCwweEVBLDB4RjgsMHg3QSwweEMyLDB4MzAsMHg4MiwweDI4LDB4QTIsMHg4QSwweEFGLDB4
RUQsCisgICAgMHhDMiwweDMwLDB4ODIsMHgyOCwweDNBLDB4NUUsMHg1NSwweDVGLDB4MDQsMHgz
OSwweDgyLDB4MjgsMHg4MiwweEZBLDB4RkQsMHg3NSwKKyAgICAweEMzLDB4MzAsMHhBMiwweDMw
LDB4MDAsMHgwMiwweEUzLDB4ODUsMHgwMywweDM5LDB4QzMsMHgzMCwweDE1LDB4RkQsMHhCRCww
eDFELAorICAgIDB4MDQsMHgzOSwweEMzLDB4MzAsMHgyMCwweEEyLDB4N0UsMHg1NywweEUzLDB4
MzgsMHhBMiwweDI4LDB4RTgsMHhGRSwweEZGLDB4RjcsCisgICAgMHhDMiwweDMwLDB4QTIsMHgy
OCwweEEwLDB4MUUsMHgzNiwweEJBLDB4RTMsMHgzMCwweEEyLDB4MjgsMHhFQywweEZGLDB4QkIs
MHhCQSwKKyAgICAweDAzLDB4MzksMHhBMiwweDI4LDB4REYsMHhGNywweEY1LDB4M0IsMHgwMyww
eDM5LDB4QzMsMHgzMCwweDI1LDB4MjUsMHhBRiwweEJGLAorICAgIDB4MjMsMHgzOSwweEMyLDB4
MzAsMHgyQiwweEFBLDB4RUEsMHg3RiwweDI0LDB4MzksMHhDMiwweDMwLDB4ODgsMHhFMiwweEZG
LDB4NzUsCisgICAgMHgwMywweDM5LDB4QTIsMHgzMCwweEEyLDB4RUEsMHhFQSwweEY3LDB4RTMs
MHgzOCwweEMyLDB4MzAsMHhGOCwweEYwLDB4MkEsMHgwNywKKyAgICAweDA0LDB4MzksMHhDMyww
eDMwLDB4REEsMHhGRSwweEY3LDB4NUYsMHgwMywweDM5LDB4QzMsMHgzOCwweEJGLDB4RkYsMHgz
RiwweDM1LAorICAgIDB4NjQsMHg0OSwweEUzLDB4MzgsMHhCRiwweEY1LDB4QkQsMHgzRiwweDg1
LDB4NTEsMHgyNCwweDQxLDB4RkYsMHhCNSwweDJGLDB4MkEsCisgICAgMHg4NSwweDQ5LDB4MjMs
MHg0MSwweEZFLDB4RjgsMHhFQywweDYwLDB4NDQsMHg0OSwweDAzLDB4NDEsMHhBQSwweEVFLDB4
NzYsMHg3QiwKKyAgICAweDY1LDB4NDksMHgwMywweDM5LDB4MEEsMHgyQiwweDJCLDB4QjUsMHg4
NSwweDUxLDB4MjMsMHg0MSwweEU4LDB4NUYsMHhERSwweDdGLAorICAgIDB4NDQsMHg0OSwweDAz
LDB4MzksMHhBQSwweDcwLDB4RjgsMHhGRiwweDIzLDB4NDEsMHhFMywweDM4LDB4QTAsMHhCOCww
eEY2LDB4NUYsCisgICAgMHgyMywweDQxLDB4QzIsMHgzMCwweDc4LDB4RkEsMHg3QiwweEZCLDB4
MDMsMHgzOSwweEMyLDB4MzAsMHgyQiwweEE1LDB4RkQsMHg1RiwKKyAgICAweDIzLDB4NDEsMHhD
MiwweDMwLDB4OEEsMHhBQiwweDlGLDB4RjUsMHgwMiwweDM5LDB4QzIsMHgzMCwweDVDLDB4REYs
MHhGRSwweDdFLAorICAgIDB4MDMsMHgzMSwweEExLDB4MzAsMHgyMiwweEJGLDB4QkYsMHhGOSww
eDIzLDB4MzksMHhDMiwweDMwLDB4QTcsMHgzRSwweDAyLDB4OEYsCisgICAgMHg0NCwweDQxLDB4
MDMsMHgzOSwweEI3LDB4MzcsMHgzNSwweDlELDB4NDQsMHg0MSwweDAzLDB4MzksMHg1RSwweDVD
LDB4NTgsMHhGRSwKKyAgICAweDY0LDB4NDksMHgwMywweDM5LDB4QUQsMHgyRCwweEFELDB4RkQs
MHg0MywweDQ5LDB4MjMsMHg0MSwweEE1LDB4QTYsMHhFOCwweDdELAorICAgIDB4ODUsMHg1MSww
eEUyLDB4MzgsMHgyQSwweDNGLDB4QjcsMHg5NSwweEM2LDB4NTEsMHg2NCwweDUxLDB4RkQsMHhC
MiwweEJCLDB4QjksCisgICAgMHgwNiwweDYyLDB4QTUsMHg1MSwweEJELDB4QUQsMHgyRiwweDJG
LDB4NDcsMHg2QSwweEM1LDB4NjEsMHhCRiwweEE3LDB4MjcsMHg4RiwKKyAgICAweEE4LDB4N0Es
MHgwNiwweDZBLDB4NUUsMHg3RSwweEVCLDB4ODMsMHg0NywweDZBLDB4RTUsMHg2MSwweDNCLDB4
NzYsMHhENywweEY4LAorICAgIDB4NjcsMHg3MiwweDI2LDB4NkEsMHhGRCwweEY1LDB4MUYsMHhG
NywweENDLDB4OUIsMHg0NywweDcyLDB4MkQsMHgzNSwweDM1LDB4QjUsCisgICAgMHg3MiwweENE
LDB4MkUsMHhBQywweDBCLDB4MEIsMHgwQiwweDI5LDB4OTMsMHhENSwweEYxLDB4QkMsMHhDMCww
eEUwLDB4NjAsMHg3MCwKKyAgICAweEYxLDB4QkMsMHg0RiwweEFDLDB4REMsMHhCRSwweEJGLDB4
RjcsMHg1MywweEM1LDB4OTAsMHhBQywweDBCLDB4QUIsMHhGRiwweDVELAorICAgIDB4NTIsMHhD
NSwweEVELDB4OUIsMHgyMCwweEIyLDB4RkUsMHg3RiwweEQwLDB4QjQsMHgwRSwweDlDLDB4RTgs
MHhGQSwweDdGLDB4NUQsCisgICAgMHg0RiwweEE0LDB4Q0QsMHg5QiwweDg4LDB4RTgsMHg3Riww
eDVGLDB4MEUsMHhBNCwweDhELDB4OTMsMHhFOCwweEZBLDB4RDcsMHhERiwKKyAgICAweEFELDB4
OTMsMHg4QywweDhCLDB4MDAsMHg4MiwweEEyLDB4RDYsMHhDRCwweDkzLDB4OEMsMHg4QiwweEZG
LDB4NUYsMHg3RSwweDc4LAorICAgIDB4QUQsMHg5MywweDZDLDB4OEIsMHgzNiwweEFFLDB4QUUs
MHhBRSwweEVFLDB4OUIsMHg2QywweDhCLDB4ODIsMHg4QSwweEFGLDB4QTcsCisgICAgMHhFRSww
eDlCLDB4OEMsMHg4QiwweEVGLDB4QjksMHhBQiwweEUwLDB4MkYsMHhBNCwweDhDLDB4OEIsMHhB
QiwweDBBLDB4QkIsMHhERiwKKyAgICAweDBFLDB4OUMsMHhDRCwweDkzLDB4NzIsMHg2OCwweDhB
LDB4NkIsMHhFRCwweDlCLDB4NkMsMHg4MywweDgyLDB4QTgsMHhGQSwweDVFLAorICAgIDB4Q0Qs
MHg5MywweDRCLDB4ODMsMHhFOCwweEVBLDB4N0IsMHg1RiwweDRGLDB4QTQsMHg0QiwweDgzLDB4
MkYsMHgyRCwweDJELDB4QjUsCisgICAgMHg5MCwweEFDLDB4MkUsMHhBNCwweDU1LDB4RkEsMHhF
QiwweDhGLDB4QUYsMHhCNCwweDRGLDB4QTQsMHhBNywweDNGLDB4QkYsMHhCRSwKKyAgICAweDMy
LDB4QkQsMHhCMCwweEFDLDB4RUYsMHhGRiwweDI5LDB4QTUsMHg1MywweEM1LDB4MTEsMHhCRCww
eEY1LDB4OTUsMHhGNSwweDJELAorICAgIDB4NDMsMHg1MSwweDIzLDB4NTEsMHg1OCwweDdGLDB4
M0YsMHhENSwweDY0LDB4NTksMHgwMywweDUxLDB4QUUsMHg3RiwweEVGLDB4ODMsCisgICAgMHg0
NCwweDUxLDB4MDIsMHg0OSwweEZDLDB4QkYsMHhGRiwweERBLDB4MjMsMHg1MSwweDAzLDB4NDks
MHhCQSwweDUwLDB4NTgsMHg3MywKKyAgICAweDAyLDB4NDksMHhDMiwweDQwLDB4QTgsMHhBNCww
eDNBLDB4MDIsMHg0MywweDUxLDB4RTIsMHg0MCwweERGLDB4N0IsMHhGQSwweENGLAorICAgIDB4
NDQsMHg1MSwweDAzLDB4NDksMHhCNSwweDI1LDB4MzUsMHhGRiwweDQ0LDB4NTEsMHgyMywweDQ5
LDB4QkIsMHhGQSwweDYyLDB4NzcsCisgICAgMHg2NCwweDUxLDB4MjMsMHg1MSwweERBLDB4RUEs
MHhFMiwweDU5LDB4NDQsMHg1MSwweDAyLDB4NTEsMHhFQSwweDgwLDB4OEEsMHhGQiwKKyAgICAw
eDQzLDB4NTEsMHgwMywweDQ5LDB4RkIsMHhBRSwweDhGLDB4MDYsMHg2NCwweDU5LDB4MjMsMHg1
MSwweEVELDB4ODUsMHhCRCwweDNBLAorICAgIDB4NjQsMHg1OSwweDIzLDB4NTEsMHhFRiwweEE4
LDB4OTIsMHhBNiwweDg0LDB4NjEsMHgyMywweDUxLDB4RkYsMHhGMywweDZGLDB4NjUsCisgICAg
MHg4NCwweDU5LDB4MjMsMHg1MSwweEZGLDB4RUUsMHhDQiwweEE5LDB4NjQsMHg1OSwweDIzLDB4
NTEsMHhGRSwweEFCLDB4QzUsMHhENSwKKyAgICAweDQ0LDB4NTksMHgwMywweDUxLDB4RUEsMHg2
MiwweDZBLDB4OTQsMHgyMywweDU5LDB4MDIsMHg0OSwweEZGLDB4RUQsMHhBQSwweEFBLAorICAg
IDB4QTQsMHg2MSwweDAyLDB4NTEsMHhCRCwweDM1LDB4MjcsMHgzRCwweDhCLDB4OUIsMHgyNiww
eDcyLDB4MjksMHgwOSwweDBCLDB4MkIsCisgICAgMHg4QSwweDlCLDB4NEEsMHg5MywweEMwLDB4
ODIsMHhBMCwweDkyLDB4NkEsMHg5QiwweDA5LDB4OEIsMHgwMCwweDgyLDB4RTIsMHg2QSwKKyAg
ICAweDJBLDB4OTMsMHg4NywweDdBLDB4ODAsMHhFOCwweDdBLDB4NzYsMHgwOSwweDhCLDB4Njcs
MHg3MiwweEY4LDB4RkYsMHg3NywweDdELAorICAgIDB4QTgsMHg3QSwweDQ2LDB4NzIsMHhGQyww
eEQ4LDB4RUEsMHhCRiwweDg3LDB4N0EsMHgyNiwweDcyLDB4QUUsMHhFQiwweERFLDB4RTQsCisg
ICAgMHg0NSwweDgyLDB4NjcsMHg3MiwweDVGLDB4REQsMHhENywweDc1LDB4ODcsMHg3QSwweDQ2
LDB4NzIsMHhBNiwweDgyLDB4RjgsMHg4RCwKKyAgICAweDg3LDB4N0EsMHg0NiwweDcyLDB4QkMs
MHg4QSwweEIwLDB4MUEsMHg4NywweDdBLDB4NDYsMHg3MiwweDZGLDB4OEYsMHhCRSwweEZGLAor
ICAgIDB4ODcsMHg3QSwweDY3LDB4NzIsMHg3NSwweEI3LDB4NkUsMHhGMiwweDY2LDB4NzIsMHgy
NSwweDcyLDB4QTgsMHgxMCwweEFDLDB4MEYsCisgICAgMHg2NywweDdBLDB4NDYsMHg3MiwweDY1
LDB4N0YsMHhBMywweEJBLDB4NjYsMHg3MiwweDI2LDB4NkEsMHhERiwweEJBLDB4NjgsMHg2QSwK
KyAgICAweDY2LDB4NzIsMHgyNSwweDcyLDB4QUUsMHgzRSwweDMyLDB4MkEsMHhDOCwweDgyLDB4
NjcsMHg3QSwweEE1LDB4QTcsMHgyRiwweDZCLAorICAgIDB4QTgsMHg4MiwweDI1LDB4NkEsMHg4
MCwweEE4LDB4RkUsMHg1NSwweDY3LDB4N0EsMHhDNCwweDY5LDB4RTAsMHhFMCwweEZCLDB4RkYs
CisgICAgMHgyNSwweDZBLDB4RTUsMHg2OSwweEVFLDB4NjIsMHg3QSwweDVFLDB4MDUsMHg2QSww
eEM1LDB4NjEsMHgzMCwweEJBLDB4QkYsMHhGRCwKKyAgICAweDI2LDB4NkEsMHhDNCwweDYxLDB4
MkEsMHhGRiwweEZGLDB4N0UsMHgwNiwweDZBLDB4QzUsMHg2MSwweEJFLDB4RUIsMHhBRSwweDlG
LAorICAgIDB4MjYsMHg2QSwweEU1LDB4NjksMHhGRiwweEJCLDB4OEIsMHhBRiwweDQ2LDB4NzIs
MHgwNiwweDZBLDB4RDUsMHhGRiwweEVBLDB4RkQsCisgICAgMHg0NywweDcyLDB4MDYsMHg2QSww
eEY5LDB4QTksMHhBRCwweEFGLDB4NDcsMHg3MiwweEU2LDB4NjksMHg2RSwweDdBLDB4QTgsMHgy
MiwKKyAgICAweDI2LDB4NkEsMHg2NCwweDUxLDB4N0UsMHg3QSwweDc4LDB4NjgsMHg0NCwweDQ5
LDB4QzMsMHgzOCwweEQ4LDB4N0IsMHg3QSwweDc4LAorICAgIDB4RTMsMHgzOCwweDgyLDB4MzAs
MHhDMiwweENBLDB4N0EsMHg3RSwweEEyLDB4MzAsMHg4MSwweDI4LDB4QzIsMHg2MywweEZBLDB4
QUIsCisgICAgMHhDMSwweDMwLDB4ODIsMHgyOCwweEFELDB4QkQsMHhGNywweEZGLDB4MDMsMHg0
MSwweEEyLDB4MzAsMHhBQiwweDJBLDB4MEYsMHgzOSwKKyAgICAweDAzLDB4MzksMHhFMywweDM4
LDB4NUYsMHg5NiwweEQ0LDB4N0UsMHhFMiwweDM4LDB4QTIsMHgzMCwweDU2LDB4NzQsMHhBQSww
eEUyLAorICAgIDB4NjQsMHg0OSwweEEyLDB4MzAsMHhCNSwweDI5LDB4MkIsMHgyQiwweDQ0LDB4
NDksMHhFMywweDM4LDB4RUEsMHhFMCwweEUwLDB4NjAsCisgICAgMHgwMywweDQxLDB4RTMsMHgz
OCwweDIwLDB4OTYsMHgzRSwweDc2LDB4NjUsMHg0OSwweEUzLDB4MzgsMHgyQSwweEZFLDB4RUYs
MHhGNSwKKyAgICAweDY0LDB4NDksMHhFMywweDM4LDB4RUMsMHhGQiwweEZGLDB4RDcsMHgyNCww
eDQxLDB4QzIsMHgzMCwweDA4LDB4ODAsMHhCQywweDU3LAorICAgIDB4MjMsMHg0MSwweEMzLDB4
MzAsMHhCRSwweEY2LDB4QUYsMHgyQiwweDQ0LDB4NDEsMHhDMywweDMwLDB4MkEsMHhBQiwweDhF
LDB4NUUsCisgICAgMHgwNCwweDM5LDB4QTIsMHgyOCwweDc4LDB4NUMsMHg3RSwweDVGLDB4RTMs
MHgyOCwweDgyLDB4MjgsMHhGNSwweEJGLDB4RkYsMHhENywKKyAgICAweEEyLDB4MjgsMHg2MSww
eDIwLDB4RTAsMHhFMCwweEYwLDB4RTYsMHhBMiwweDI4LDB4NjEsMHgyMCwweDBGLDB4QkQsMHhC
RCwweDBCLAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhENSwweEJELDB4QkQsMHg4QSwweEUz
LDB4MzAsMHhBMiwweDI4LDB4ODIsMHhFQSwweDdBLDB4NjgsCisgICAgMHg4MSwweDMwLDB4QzIs
MHgyOCwweEZGLDB4RkEsMHhFQiwweDdBLDB4QzIsMHgzMCwweEEyLDB4MjgsMHhCRiwweEI1LDB4
MjUsMHgwNSwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4QTMsMHhGQiwweEFGLDB4MjcsMHhD
MiwweDMwLDB4QTIsMHgyOCwweEFFLDB4Q0YsMHg4OCwweDA4LAorICAgIDB4RTMsMHgzMCwweEMz
LDB4MzAsMHgwMiwweEE5LDB4NzUsMHgyRCwweDA0LDB4MzksMHhDMiwweDMwLDB4REYsMHg4Qiww
eEVCLDB4REYsCisgICAgMHhDMywweDM4LDB4RTMsMHgzMCwweEZELDB4RjUsMHhGRiwweEFELDB4
MDQsMHgzOSwweEMyLDB4MzAsMHg1RiwweDdELDB4QUQsMHgyQiwKKyAgICAweEUzLDB4MzgsMHhD
MiwweDMwLDB4NTUsMHg2MSwweDVCLDB4RjgsMHhFMywweDM4LDB4QzIsMHgzMCwweDI5LDB4ODEs
MHhENywweEYyLAorICAgIDB4RTMsMHgzOCwweEMyLDB4MzAsMHhENiwweDdGLDB4ODksMHgyQiww
eDAzLDB4MzksMHhDMywweDMwLDB4MTUsMHgxNSwweERBLDB4RjIsCisgICAgMHg4NSwweDUxLDB4
RTMsMHgzOCwweEFELDB4MkYsMHgyRCwweEJELDB4ODUsMHg1MSwweDY1LDB4NDksMHg1NSwweDdG
LDB4RjIsMHg3QiwKKyAgICAweDg1LDB4NTEsMHgyMywweDQxLDB4RTIsMHhFMiwweEVBLDB4NjIs
MHg0NCwweDQ5LDB4MDMsMHgzOSwweEYyLDB4NDgsMHg0QSwweDdCLAorICAgIDB4MjMsMHg0MSww
eEUyLDB4MzgsMHgyRiwweDJGLDB4RTcsMHhGNywweDQ0LDB4NDksMHgyNCwweDQxLDB4NzIsMHg2
QSwweDUzLDB4OTUsCisgICAgMHgyMywweDQxLDB4QzIsMHgzOCwweEZBLDB4REYsMHhFRSwweEJB
LDB4MDMsMHg0MSwweEMyLDB4MzAsMHg3RSwweEVBLDB4QUEsMHhBOCwKKyAgICAweDAzLDB4Mzks
MHhDMiwweDMwLDB4MEYsMHhCNSwweEQ1LDB4QkIsMHgwMywweDM5LDB4QzIsMHgzMCwweDdFLDB4
RDcsMHhGNiwweENBLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHgzRiwweDNFLDB4MjcsMHgy
RSwweDIzLDB4MzksMHhFMiwweDMwLDB4NzcsMHhGRiwweEFCLDB4QkMsCisgICAgMHgyMywweDM5
LDB4QzIsMHgzMCwweEZELDB4N0UsMHg3OCwweEY4LDB4MjMsMHgzOSwweEMyLDB4MzAsMHg4Qiww
eDBGLDB4MkQsMHgyQiwKKyAgICAweDIzLDB4MzksMHgwMywweDM5LDB4RDMsMHgyRiwweEZELDB4
OUIsMHgyMywweDM5LDB4RTIsMHgzOCwweEY4LDB4RjAsMHhFOCwweDZBLAorICAgIDB4MjMsMHg0
MSwweEMyLDB4MzAsMHgwMiwweDhBLDB4MEIsMHg4OSwweDQzLDB4NDEsMHgwMywweDM5LDB4OUYs
MHhCNSwweEE1LDB4MkIsCisgICAgMHg0NCwweDQ5LDB4MDMsMHgzOSwweDM1LDB4QkIsMHhBQSww
eEEzLDB4QTUsMHg1OSwweDQ0LDB4NDksMHgzRiwweDNELDB4REQsMHgzNywKKyAgICAweDI2LDB4
NjIsMHg4NSwweDUxLDB4QjcsMHhCRiwweDk3LDB4MzcsMHg2NywweDcyLDB4MDYsMHg2MiwweENE
LDB4RUQsMHhBNSwweEJFLAorICAgIDB4ODgsMHg3MiwweDQ2LDB4NkEsMHhBOSwweDI5LDB4RUQs
MHhGNSwweDg3LDB4NzIsMHhFNSwweDYxLDB4RkEsMHhFOCwweEU4LDB4NUEsCisgICAgMHg0Nyww
eDZBLDB4QzUsMHg1OSwweEEwLDB4RUUsMHg3RSwweDVFLDB4NkIsMHg5MywweEU1LDB4NjEsMHgz
RiwweDNELDB4QkQsMHhCNSwKKyAgICAweDczLDB4Q0QsMHhFRCwweEEzLDB4MkIsMHgwOSwweDI5
LDB4MDksMHg5MywweEQ1LDB4NkYsMHhBQywweEUwLDB4NzAsMHg3OCwweDc4LAorICAgIDB4QjAs
MHhCNCwweDRGLDB4QUMsMHhBRiwweDM3LDB4N0YsMHg3RCwweDkwLDB4QUMsMHhFRCwweDlCLDB4
QTAsMHhBOCwweEZBLDB4RDcsCisgICAgMHg0RiwweEE0LDB4RUUsMHg5QiwweEMyLDB4N0YsMHg1
NywweDc3LDB4MEUsMHg5QywweEFELDB4OTMsMHhBMiwweEVBLDB4RjIsMHg1RSwKKyAgICAweEVF
LDB4OUIsMHhBRCwweDkzLDB4N0UsMHg2QSwweDdBLDB4NTQsMHhBRCwweDkzLDB4NkQsMHg4Qiww
eEIwLDB4RTgsMHhBMiwweEEwLAorICAgIDB4QUQsMHg5MywweDZDLDB4OEIsMHhFQSwweEVBLDB4
OEIsMHgwRiwweENELDB4OTMsMHg4QywweDhCLDB4N0QsMHhBOSwweDdELDB4NUUsCisgICAgMHhB
RCwweDkzLDB4NkMsMHg4QiwweEI2LDB4RUYsMHhBQSwweDIyLDB4Q0QsMHg5MywweDhDLDB4OEIs
MHgwNSwweDBELDB4RkYsMHhGRiwKKyAgICAweDBFLDB4OUMsMHg4QywweDhCLDB4ODIsMHhCQSww
eDVCLDB4N0YsMHhBRCwweDkzLDB4MEEsMHg3QiwweDIwLDB4ODgsMHhBOCwweDVFLAorICAgIDB4
Q0QsMHg5MywweDJCLDB4N0IsMHgwMCwweEFBLDB4NkYsMHg3NSwweDhDLDB4ODMsMHgwQSwweDdC
LDB4QkMsMHhGRSwweDdGLDB4RDcsCisgICAgMHg2QywweDgzLDB4MEIsMHg3QiwweEJDLDB4Qjcs
MHhGRCwweEI1LDB4QUQsMHg5MywweDBCLDB4N0IsMHgyRiwweEJGLDB4QkYsMHg1NSwKKyAgICAw
eDRGLDB4QUMsMHg2QywweDhCLDB4MEEsMHgyRiwweEZGLDB4NTUsMHg2RiwweEFDLDB4QUQsMHg4
QiwweDIwLDB4OEEsMHhBRiwweEJELAorICAgIDB4MTEsMHhCRCwweDBFLDB4OUMsMHgyQiwweDJC
LDB4QkYsMHhCNSwweDMyLDB4QzUsMHg5MCwweEFDLDB4MDIsMHgwMCwweDBFLDB4QTUsCisgICAg
MHg0MywweDUxLDB4MDIsMHg0OSwweDk4LDB4RTAsMHhFQywweEJGLDB4NjQsMHg1MSwweDAyLDB4
NDksMHg4QiwweEY5LDB4RkYsMHhCRiwKKyAgICAweDQzLDB4NTEsMHgwMiwweDQ5LDB4NkIsMHhG
MiwweDVBLDB4NUIsMHgyMywweDQ5LDB4RTEsMHg0MCwweEY4LDB4QkEsMHhBRCwweDgyLAorICAg
IDB4MjMsMHg0OSwweEUyLDB4NDgsMHhBMywweDAwLDB4QTIsMHg5RSwweDQ0LDB4NTEsMHgwMyww
eDQ5LDB4NkYsMHhENiwweEE3LDB4MjUsCisgICAgMHg0MywweDUxLDB4MDIsMHg0OSwweEY1LDB4
MDksMHgzNiwweEFBLDB4NjQsMHg1MSwweDIzLDB4NDksMHhFRiwweEJFLDB4N0EsMHg3OCwKKyAg
ICAweDQ0LDB4NTEsMHgwMywweDQ5LDB4QkIsMHg3RSwweDU2LDB4REEsMHg0MywweDUxLDB4MDMs
MHg0OSwweEZGLDB4RkYsMHhCRSwweEI3LAorICAgIDB4NjQsMHg1OSwweDAyLDB4NDksMHgyRiww
eDI3LDB4QTMsMHhBQSwweDY0LDB4NTksMHgyMywweDUxLDB4QTAsMHhGNywweEU1LDB4NzcsCisg
ICAgMHg2NCwweDU5LDB4MDMsMHg0OSwweEJFLDB4QUYsMHhBRiwweDhGLDB4NDQsMHg1OSwweDAz
LDB4NTEsMHhBRSwweEVFLDB4RjQsMHhBQywKKyAgICAweDQ0LDB4NTksMHgyMywweDUxLDB4MDEs
MHhFQSwweDBCLDB4MDksMHg0NCwweDU5LDB4RTIsMHg0OCwweDZFLDB4RTgsMHhFOCwweEU4LAor
ICAgIDB4NDMsMHg1OSwweEUyLDB4NDgsMHhFRSwweEUyLDB4RkIsMHhERiwweDIzLDB4NTEsMHgw
MywweDUxLDB4MjEsMHhEQiwweEZBLDB4RkQsCisgICAgMHgyNiwweDcyLDB4MjMsMHg1MSwweDk1
LDB4QjUsMHgzNSwweDM1LDB4NEEsMHg5QiwweDg3LDB4ODIsMHgwMSwweDBCLDB4MDksMHgwMywK
KyAgICAweDZBLDB4OUIsMHgwOSwweDkzLDB4MkEsMHhGQSwweEZBLDB4N0UsMHg2QSwweDlCLDB4
ODcsMHg3QSwweEE4LDB4RUUsMHg3RSwweDdFLAorICAgIDB4QzgsMHg3QSwweDY3LDB4N0EsMHhG
OCwweEZFLDB4RUMsMHhENiwweDg3LDB4N0EsMHg0NiwweDcyLDB4QkUsMHhCQywweDdFLDB4NjIs
CisgICAgMHg4NywweDdBLDB4NDcsMHg3MiwweEJGLDB4QjIsMHhGQSwweEZGLDB4ODcsMHg3QSww
eDI2LDB4NzIsMHgyOCwweEVBLDB4MzUsMHgwQiwKKyAgICAweDg3LDB4N0EsMHg0NiwweDcyLDB4
NDgsMHgyQSwweEZBLDB4RkEsMHg4NywweDdBLDB4MjYsMHg3MiwweDBCLDB4OEEsMHg4QSwweEE3
LAorICAgIDB4ODcsMHg3QSwweDI1LDB4NzIsMHhCOCwweEI2LDB4QjYsMHhFQSwweDg3LDB4N0Es
MHg0NiwweDcyLDB4RkMsMHhGRiwweEZGLDB4MUUsCisgICAgMHg4NywweDdBLDB4NDYsMHg3Miww
eEM5LDB4NjMsMHg3OCwweDZCLDB4ODcsMHg3MiwweDI1LDB4NzIsMHgyRiwweEVGLDB4RkUsMHg3
RiwKKyAgICAweDY2LDB4N0EsMHgyNiwweDZBLDB4QjMsMHhFRiwweENCLDB4OEIsMHg2NywweDdB
LDB4NDYsMHg3MiwweEI3LDB4Q0YsMHhBRiwweDIyLAorICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIs
MHg4OSwweEFBLDB4MjMsMHhBRCwweEE3LDB4N0EsMHg0NiwweDcyLDB4QTMsMHhFQSwweEZCLDB4
RkQsCisgICAgMHg2NywweDcyLDB4MDUsMHg2QSwweDVFLDB4NTgsMHhGRSwweDdBLDB4MjYsMHg3
MiwweEU1LDB4NjksMHg3NywweDU2LDB4NTUsMHg4OSwKKyAgICAweDA2LDB4NkEsMHhDNSwweDYx
LDB4RkUsMHg4RSwweEZCLDB4N0UsMHgwNSwweDZBLDB4QzUsMHg2MSwweEVBLDB4NUMsMHg1NSww
eDU1LAorICAgIDB4MDUsMHg2QSwweEM1LDB4NjEsMHhFMiwweEEyLDB4RjksMHhGRiwweDA1LDB4
NkEsMHhDNCwweDYxLDB4QjcsMHhCRiwweEJGLDB4QkYsCisgICAgMHgwNSwweDZBLDB4RTUsMHg2
MSwweDI3LDB4MTgsMHgwOCwweDBGLDB4NjYsMHg3MiwweDA2LDB4NkEsMHg1RiwweEYzLDB4RkQs
MHhGRCwKKyAgICAweDQ3LDB4NzIsMHgwNiwweDZBLDB4QkYsMHhGRSwweDZCLDB4MkEsMHg0Nyww
eDcyLDB4MjYsMHg2QSwweEVCLDB4QUEsMHgyRSwweEFBLAorICAgIDB4MjYsMHg2QSwweEE0LDB4
NTksMHg3MCwweEUwLDB4MDAsMHgwMCwweEU1LDB4NjEsMHhFMiwweDM4LDB4NUYsMHg3QSwweDc4
LDB4RjAsCisgICAgMHhFMiwweDM4LDB4ODIsMHgyOCwweEZBLDB4RkMsMHhGQSwweDc4LDB4QTIs
MHgzMCwweDgxLDB4MjgsMHhDMywweDhBLDB4MEYsMHgzRiwKKyAgICAweEUyLDB4MzAsMHg4MSww
eDI4LDB4QkQsMHgyRCwweDBCLDB4MkEsMHgwMiwweDM5LDB4QTEsMHgzMCwweDNBLDB4M0UsMHhG
QSwweERBLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzgsMHhGQSwweEZFLDB4QkYsMHhBMSwweDAz
LDB4MzksMHhDMiwweDM4LDB4NUYsMHhENCwweEQ2LDB4RkIsCisgICAgMHg2NCwweDQ5LDB4QzIs
MHgzOCwweEE5LDB4MkQsMHgyRCwweDg5LDB4NjUsMHg0OSwweEUyLDB4MzgsMHg3MCwweDZBLDB4
RjAsMHg3RSwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4NUUsMHhFQSwweEZBLDB4N0EsMHgw
MywweDM5LDB4QzIsMHgzMCwweDI5LDB4RUUsMHhCQiwweEE1LAorICAgIDB4MjQsMHg0MSwweEMy
LDB4MzAsMHhBRSwweENCLDB4NTcsMHg1NSwweEUzLDB4MzgsMHhBMiwweDI4LDB4QUEsMHhCQSww
eEZBLDB4RkYsCisgICAgMHgyNCwweDQxLDB4QzIsMHgzMCwweDJCLDB4MkQsMHhBQiwweEFELDB4
MjQsMHgzOSwweEEyLDB4MjgsMHg3OCwweEY4LDB4RkUsMHhGRSwKKyAgICAweEUzLDB4MzAsMHg4
MiwweDI4LDB4RjIsMHhGOCwweEZDLDB4N0YsMHhBMiwweDI4LDB4NjIsMHgyMCwweEVDLDB4RjYs
MHhGRiwweEY3LAorICAgIDB4NjMsMHgyOCwweEEyLDB4MjAsMHhCRSwweEZBLDB4RUIsMHg2RSww
eEUzLDB4MzAsMHg4MiwweDI4LDB4QjUsMHgyRCwweDJGLDB4M0YsCisgICAgMHgwNCwweDM5LDB4
QTIsMHgyOCwweEFBLDB4QTAsMHg3MiwweDZBLDB4QzMsMHgyOCwweDgyLDB4MjgsMHg4MCwweEFB
LDB4RkIsMHhGNywKKyAgICAweEEyLDB4MjgsMHg4MiwweDIwLDB4MkIsMHgyRiwweEJBLDB4MkMs
MHhDMiwweDI4LDB4QTIsMHgyOCwweEU1LDB4RDUsMHhBRCwweEY5LAorICAgIDB4RTMsMHgzMCww
eEEyLDB4MjgsMHhGRiwweEZCLDB4M0UsMHgyOSwweEUzLDB4MzAsMHhBMiwweDI4LDB4MEUsMHgy
RiwweDJDLDB4QUEsCisgICAgMHhFMywweDMwLDB4QzIsMHgzMCwweEJGLDB4MEIsMHhFQSwweDZB
LDB4RTMsMHgzOCwweEEyLDB4MjgsMHgyRSwweEFGLDB4RkYsMHhGRiwKKyAgICAweEUzLDB4MzAs
MHhBMiwweDMwLDB4MDgsMHg4QSwweEFCLDB4MkYsMHgwMywweDM5LDB4RTMsMHgzMCwweEFGLDB4
RkIsMHhGNywweEZFLAorICAgIDB4RTMsMHgzOCwweEMzLDB4MzAsMHhGOCwweEVDLDB4Q0EsMHg3
MCwweDI0LDB4MzksMHhDMiwweDMwLDB4RkIsMHhDQiwweDc5LDB4NzUsCisgICAgMHhFMywweDM4
LDB4QzMsMHgzMCwweDM3LDB4QjUsMHhENSwweDM1LDB4MDMsMHgzOSwweEMzLDB4MzAsMHhBMiww
eEJGLDB4QkYsMHhGNywKKyAgICAweDQ0LDB4NDEsMHhFMywweDM4LDB4MEQsMHgzRCwweDlGLDB4
REYsMHg0NCwweDQ5LDB4RTMsMHgzOCwweDAyLDB4QTMsMHhCRiwweDdELAorICAgIDB4NjQsMHg0
OSwweDAzLDB4MzksMHhFMiwweEZGLDB4RDcsMHhERCwweDI0LDB4NDEsMHhFMywweDM4LDB4QUUs
MHhGRSwweEJBLDB4RjksCisgICAgMHgwMywweDM5LDB4QTIsMHgzOCwweEI4LDB4QTgsMHhBOCww
eDg4LDB4MjMsMHg0MSwweEUzLDB4MzgsMHgyQSwweEFGLDB4QUIsMHhBQiwKKyAgICAweDAzLDB4
NDEsMHhFMywweDM4LDB4QTUsMHhBQSwweEVCLDB4NjIsMHg0NCwweDQxLDB4RTIsMHgzOCwweDc3
LDB4QUYsMHgwRiwweEVFLAorICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHg5QSwweDk4LDB4QTAs
MHhFMiwweDAzLDB4MzksMHhDMiwweDMwLDB4RTgsMHhGQSwweEE3LDB4RDUsCisgICAgMHgwMyww
eDM5LDB4QzIsMHgzMCwweEFDLDB4N0UsMHgxNywweDk1LDB4MDMsMHgzOSwweEUyLDB4MzAsMHhF
MCwweEFELDB4MkQsMHgyRSwKKyAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4REIsMHg3RiwweEZF
LDB4RTgsMHgyMywweDM5LDB4QzIsMHgzMCwweDJGLDB4MEQsMHhCRiwweEVGLAorICAgIDB4NjQs
MHg0MSwweDAzLDB4MzksMHg2NiwweEVBLDB4QTMsMHg4RCwweDQzLDB4NDEsMHhFMiwweDMwLDB4
N0YsMHhFQSwweEFBLDB4RjgsCisgICAgMHg0MywweDQxLDB4RTIsMHgzMCwweDJELDB4MzUsMHhG
QiwweEZGLDB4NjQsMHg0OSwweDAyLDB4MzksMHhBRSwweDJCLDB4MDEsMHgyQiwKKyAgICAweDg0
LDB4NTEsMHgyMywweDQxLDB4QUQsMHhCRSwweDJFLDB4MDgsMHhBNSwweDUxLDB4NjQsMHg0OSww
eDk2LDB4RjIsMHhFMCwweDgyLAorICAgIDB4MjYsMHg2MiwweDg0LDB4NTEsMHgzNywweEVELDB4
RjUsMHg1NywweDI2LDB4NkEsMHg4NCwweDUxLDB4ODAsMHhFMiwweEZCLDB4N0UsCisgICAgMHg0
NywweDZBLDB4ODQsMHg1MSwweDgyLDB4QUIsMHhGNywweEQ1LDB4MjYsMHg2QSwweEM1LDB4NTks
MHhGOCwweEZFLDB4N0YsMHhBRCwKKyAgICAweDA2LDB4NjIsMHhBNCwweDU5LDB4QTgsMHhGRiww
eDlELDB4QUQsMHhDOSwweDdBLDB4RTYsMHg2MSwweDE1LDB4MzUsMHg5RCwweEY1LAorICAgIDB4
NTIsMHhDRCwweEVBLDB4N0EsMHgwQiwweDBCLDB4MDksMHgyRCwweDUyLDB4Q0QsMHg4RiwweEFD
LDB4NzgsMHg3OCwweDc4LDB4NTgsCisgICAgMHhCMCwweEI0LDB4NEUsMHhBNCwweDZCLDB4NzAs
MHhDMiwweEE4LDB4NEYsMHhBQywweEFELDB4OEIsMHhGRSwweEZFLDB4NUUsMHg3QywKKyAgICAw
eEVFLDB4OUIsMHg4QywweDhCLDB4MEEsMHhBNywweEQ1LDB4NTcsMHhDRCwweDkzLDB4NkMsMHg4
QiwweEE4LDB4RUIsMHhFRCwweEZGLAorICAgIDB4Q0QsMHg5MywweDZDLDB4OEIsMHhCQywweEJD
LDB4QUUsMHhBOSwweENELDB4OTMsMHg4RCwweDhCLDB4RkIsMHg3RSwweEFCLDB4MkEsCisgICAg
MHhDRSwweDkzLDB4OEMsMHg4QiwweEU1LDB4RkQsMHhCRiwweDNGLDB4RUUsMHg5QiwweDhDLDB4
OEIsMHhERiwweDc1LDB4QjUsMHhBRSwKKyAgICAweENELDB4OTMsMHg4QywweDhCLDB4RUQsMHg4
QiwweDAwLDB4QTAsMHhBQywweDhCLDB4NEMsMHg4MywweEEyLDB4NjgsMHhBQSwweDdCLAorICAg
IDB4QUMsMHg4QiwweDJCLDB4N0IsMHg4QSwweDZBLDB4RUEsMHg3RiwweDRCLDB4ODMsMHhFQSww
eDcyLDB4QjAsMHhEMCwweEY4LDB4RUUsCisgICAgMHgyQiwweDdCLDB4RUEsMHg3MiwweDhBLDB4
RjYsMHhBNiwweDE1LDB4MkIsMHg3QiwweEVBLDB4NzIsMHgyOCwweEIwLDB4OTIsMHhCNSwKKyAg
ICAweDRDLDB4ODMsMHhFQSwweDcyLDB4MkUsMHhBOSwweDVGLDB4NUYsMHg0QiwweDgzLDB4Qzks
MHg3MiwweEU4LDB4RkEsMHhGRSwweEZCLAorICAgIDB4OEMsMHg4QiwweEVBLDB4N0EsMHgyRiww
eDJELDB4MkIsMHgyRiwweENELDB4OTMsMHg2QywweDhCLDB4M0YsMHg5NSwweDc3LDB4RkYsCisg
ICAgMHgyRSwweEE0LDB4OEQsMHg4QiwweDBBLDB4MkYsMHgzNSwweEFELDB4RDEsMHhCNCwweDBF
LDB4OUMsMHgwQiwweEJELDB4RkYsMHg3NSwKKyAgICAweDQzLDB4NTEsMHhFMywweDQ4LDB4OEUs
MHhBOSwweEFBLDB4QkEsMHg0MywweDUxLDB4MjMsMHg0OSwweEU1LDB4NUYsMHg1RiwweDdFLAor
ICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHhBQiwweEFBLDB4OUEsMHg4RSwweDQ0LDB4NTEsMHhF
MSwweDQwLDB4OEYsMHhFQiwweDdGLDB4RkYsCisgICAgMHg0MywweDUxLDB4RTEsMHg0MCwweDJG
LDB4MEIsMHgyRiwweEJELDB4NDMsMHg1MSwweDAyLDB4NDksMHgyRSwweEFDLDB4QUUsMHhFNiwK
KyAgICAweDQzLDB4NTEsMHgwMiwweDQ5LDB4MDgsMHhBRSwweEQ2LDB4N0QsMHg0MywweDUxLDB4
RTIsMHg0MCwweEUwLDB4OUEsMHhGQiwweEZCLAorICAgIDB4NDMsMHg1MSwweDAyLDB4NDksMHhF
QSwweEJCLDB4N0QsMHgyRCwweDY0LDB4NTksMHgwMiwweDQ5LDB4M0IsMHhCOSwweDg5LDB4QTIs
CisgICAgMHg2NCwweDU5LDB4MjMsMHg1MSwweEFCLDB4RUUsMHhGNywweDc2LDB4NDMsMHg1MSww
eDIzLDB4NTEsMHhENCwweERCLDB4QzIsMHgwMywKKyAgICAweDQ0LDB4NTksMHgyMywweDUxLDB4
QUQsMHhBRCwweDMxLDB4M0YsMHg0NCwweDUxLDB4MDMsMHg1MSwweEI4LDB4OUMsMHhEQSwweEU4
LAorICAgIDB4NDMsMHg1MSwweDAzLDB4NTEsMHhEQSwweEQzLDB4N0EsMHhGQSwweDQ0LDB4NTks
MHgwMywweDUxLDB4QjgsMHhFQSwweDdCLDB4REYsCisgICAgMHhFMywweDUwLDB4MDIsMHg0OSww
eEY3LDB4RkMsMHg1NywweDc3LDB4MjMsMHg1MSwweEUzLDB4NDgsMHg4RiwweEZBLDB4RUUsMHhG
MiwKKyAgICAweDY3LDB4N0EsMHgwMywweDUxLDB4MzUsMHgzRCwweDM1LDB4MzUsMHg2QiwweDlC
LDB4QzksMHg4QSwweDI5LDB4MDksMHgyQiwweEFCLAorICAgIDB4NEEsMHg5MywweEM4LDB4OEEs
MHg2MiwweEZBLDB4RTgsMHg2RiwweEM4LDB4ODIsMHg4OCwweDdBLDB4RTAsMHhFOCwweEZBLDB4
QUMsCisgICAgMHhBOCwweDdBLDB4NjcsMHg3QSwweEQ4LDB4RjIsMHhFQSwweEJBLDB4QTcsMHg3
QSwweDY3LDB4N0EsMHg1RiwweEZFLDB4NjgsMHhFQywKKyAgICAweDg3LDB4N0EsMHg0NiwweDcy
LDB4NkEsMHg2MiwweENBLDB4QTIsMHg4NywweDdBLDB4NDcsMHg3MiwweEU5LDB4QkUsMHgzQiww
eEY5LAorICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhFQiwweDcwLDB4RTAsMHhFOCwweDg3LDB4
N0EsMHg0NiwweDcyLDB4M0EsMHhDMCwweEZBLDB4M0YsCisgICAgMHg4NywweDdBLDB4NDYsMHg3
MiwweEVDLDB4RUUsMHhBNiwweEZGLDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhBRSwweEVCLDB4QUQs
MHhCRiwKKyAgICAweDg3LDB4NzIsMHgyNSwweDZBLDB4RjIsMHg2RSwweEZBLDB4RkEsMHg4Nyww
eDcyLDB4MjUsMHg3MiwweEZGLDB4RkMsMHhFRSwweEZELAorICAgIDB4NjYsMHg3MiwweDI1LDB4
NkEsMHhERiwweEFBLDB4QUEsMHhFOCwweDg2LDB4N0EsMHgyNSwweDcyLDB4RTYsMHhFQiwweEFC
LDB4M0YsCisgICAgMHhBNywweDdBLDB4MjYsMHg2QSwweEU5LDB4QUYsMHhBQSwweDJBLDB4ODcs
MHg3QSwweDI2LDB4NzIsMHhBMiwweEU4LDB4NzgsMHhEMiwKKyAgICAweDQ2LDB4NzIsMHhFNSww
eDYxLDB4RTgsMHhFOCwweEU4LDB4N0EsMHgwNiwweDZBLDB4QzUsMHg2MSwweDAwLDB4RkUsMHhE
NywweDcyLAorICAgIDB4RTUsMHg2OSwweDg0LDB4NjEsMHhFQywweEZFLDB4N0UsMHhGQiwweEU1
LDB4NjEsMHg4NCwweDU5LDB4QUIsMHhBNywweDJELDB4MkUsCisgICAgMHgwNSwweDZBLDB4QzUs
MHg2MSwweEY2LDB4RTUsMHhFRiwweDVBLDB4RTUsMHg2OSwweEM1LDB4NjEsMHg5NiwweDJGLDB4
QUUsMHg1NywKKyAgICAweDI2LDB4NkEsMHhDNCwweDYxLDB4QUYsMHgwRiwweDhGLDB4QjksMHg0
NiwweDcyLDB4MDUsMHg2QSwweEVELDB4RjUsMHg3RCwweEM1LAorICAgIDB4NDYsMHg3MiwweDA1
LDB4NkEsMHhBQSwweDgyLDB4MDMsMHhBMywweDQ2LDB4NzIsMHgyNiwweDZBLDB4MEMsMHg4MCww
eEZCLDB4MUYsCisgICAgMHg2NiwweDcyLDB4RTQsMHg2MSwweEJBLDB4NzIsMHhGQywweDVFLDB4
MDYsMHg2MiwweDAzLDB4NDEsMHhGOCwweDc4LDB4RTgsMHg3QywKKyAgICAweDAzLDB4NDEsMHg4
MSwweDI4LDB4NUMsMHg1QSwweDVDLDB4NTYsMHhBMiwweDMwLDB4ODEsMHgyOCwweDE3LDB4Qjcs
MHhCNywweDFGLAorICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHgwQiwweDA2LDB4MEEsMHg4Myww
eDAyLDB4MzksMHhDMiwweDMwLDB4NTUsMHhENSwweEZELDB4MkYsCisgICAgMHgyMywweDQxLDB4
RTIsMHgzOCwweEU1LDB4QkQsMHgwOSwweDBCLDB4NDQsMHg0MSwweEUyLDB4MzgsMHg1NSwweEY1
LDB4QkYsMHgwMiwKKyAgICAweDQ0LDB4NDksMHhFMiwweDM4LDB4MjksMHhFQiwweEFBLDB4MDgs
MHgyMywweDQxLDB4QzIsMHgzMCwweEMwLDB4RjIsMHg3OCwweDdDLAorICAgIDB4MDMsMHgzOSww
eEEyLDB4MzAsMHg3MiwweDdFLDB4NUYsMHg3NywweEUzLDB4MzgsMHhBMiwweDMwLDB4OEIsMHhG
QiwweDU1LDB4NTUsCisgICAgMHhDMiwweDMwLDB4QTIsMHgyOCwweDBBLDB4MDIsMHhFRiwweDU1
LDB4RTMsMHgzMCwweEEyLDB4MjgsMHgzRiwweEFELDB4QkIsMHhCRCwKKyAgICAweDIzLDB4Mzks
MHhDMywweDI4LDB4RUYsMHhGRiwweEQ1LDB4RDUsMHhFMywweDMwLDB4ODIsMHgyOCwweEE4LDB4
RTgsMHhGRSwweERDLAorICAgIDB4QzIsMHgyOCwweDYyLDB4MjAsMHhFQSwweEZDLDB4NzcsMHhE
NiwweDgyLDB4MjAsMHg2MSwweDIwLDB4M0YsMHgyQSwweDBBLDB4QkEsCisgICAgMHg2MSwweDMw
LDB4ODIsMHgyMCwweDVGLDB4NTUsMHg3RCwweDU1LDB4RTMsMHgzMCwweDgyLDB4MjAsMHhBRiww
eEVGLDB4QTksMHhBRiwKKyAgICAweEUzLDB4MzAsMHg4MiwweDI4LDB4RUEsMHg2MiwweEZBLDB4
RkIsMHhBMiwweDI4LDB4ODIsMHgyMCwweEU3LDB4NTUsMHhGNywweDA4LAorICAgIDB4RTMsMHgz
MCwweDgyLDB4MjAsMHhGRCwweEVELDB4QkIsMHgyQiwweEUzLDB4MzAsMHg4MSwweDIwLDB4REYs
MHhGRiwweEJFLDB4QTAsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEI1LDB4QkYsMHhBQSww
eEFBLDB4RTMsMHgzMCwweEEyLDB4MjgsMHhBQSwweDdBLDB4NkUsMHhFQSwKKyAgICAweEUzLDB4
MzAsMHhBMiwweDI4LDB4RTIsMHhFRiwweDc1LDB4NTcsMHhDMiwweDMwLDB4QTIsMHgyOCwweEY1
LDB4RjksMHgwMSwweDI5LAorICAgIDB4RTMsMHgzMCwweEEyLDB4MzAsMHgwRiwweDAxLDB4MEIs
MHgwRiwweDAzLDB4MzksMHhDMywweDMwLDB4QkEsMHhCMywweEZGLDB4RkYsCisgICAgMHhFMyww
eDMwLDB4QTIsMHgzMCwweEYwLDB4RkEsMHhGQSwweEY2LDB4RTMsMHgzOCwweEEyLDB4MzAsMHgw
RCwweEJCLDB4RTIsMHhGMCwKKyAgICAweEUzLDB4MzgsMHhBMiwweDI4LDB4MEIsMHgyRSwweEE3
LDB4QjUsMHgwMywweDM5LDB4QTIsMHgzMCwweEZGLDB4RjcsMHhBRSwweDg4LAorICAgIDB4MDMs
MHgzOSwweEUzLDB4MzgsMHg3MywweDdCLDB4REYsMHg5OCwweDI0LDB4MzksMHhFMywweDM4LDB4
QTUsMHhCNSwweEVGLDB4N0IsCisgICAgMHgyMywweDQxLDB4QzIsMHgzMCwweENFLDB4RkUsMHhG
RiwweDdCLDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBMywweEFBLDB4RUIsMHhCRiwKKyAgICAweEUz
LDB4NDgsMHgwMywweDM5LDB4NUQsMHg3NywweEY3LDB4NTUsMHgyMywweDQxLDB4RTMsMHgzOCww
eEFBLDB4MkUsMHhBNSwweEY1LAorICAgIDB4MjMsMHg0MSwweEMyLDB4MzAsMHhBMiwweEFBLDB4
RjcsMHhGRiwweDI0LDB4NDEsMHhFMiwweDM4LDB4RkEsMHgzQSwweDdCLDB4N0YsCisgICAgMHg0
NCwweDQxLDB4QzIsMHgzMCwweEUyLDB4QTAsMHg3RiwweDVGLDB4MDMsMHgzOSwweEMyLDB4MzAs
MHhCRiwweEI2LDB4QUYsMHgyRiwKKyAgICAweDIzLDB4NDEsMHhDMiwweDMwLDB4QjcsMHhBRSww
eDNCLDB4M0UsMHg0NCwweDQxLDB4RTIsMHgzOCwweEZGLDB4MDksMHhFNSwweEY3LAorICAgIDB4
NDMsMHg0MSwweDAzLDB4MzksMHg1QiwweEZELDB4QjUsMHhGNywweDIzLDB4MzksMHhFMiwweDMw
LDB4NUYsMHhGQSwweEZBLDB4RUIsCisgICAgMHg0NCwweDQxLDB4RTIsMHgzMCwweDI5LDB4RkQs
MHhGRiwweDU1LDB4NDQsMHg0MSwweDAzLDB4MzksMHg3QywweEJGLDB4QUYsMHhFNSwKKyAgICAw
eDIzLDB4MzksMHhDMiwweDMwLDB4QUEsMHhFOCwweDdBLDB4NUMsMHg2NCwweDQ5LDB4QzIsMHgz
MCwweDBCLDB4RkYsMHhERiwweDdELAorICAgIDB4ODUsMHg1MSwweEUyLDB4MzgsMHgyMCwweEEz
LDB4QUIsMHhGNSwweEM1LDB4NTEsMHgyMywweDQxLDB4QTIsMHhFMiwweEZGLDB4OUQsCisgICAg
MHg4NCwweDUxLDB4MjMsMHg0MSwweDJDLDB4M0QsMHgzRCwweDJDLDB4QzUsMHg1OSwweDY0LDB4
NTEsMHg4QSwweDJCLDB4OUEsMHhCNSwKKyAgICAweEU1LDB4NTksMHg4NCwweDUxLDB4QjUsMHgz
RCwweDJFLDB4MkQsMHgyNiwweDYyLDB4RTUsMHg1OSwweEU5LDB4QjUsMHgyQiwweDBCLAorICAg
IDB4NDYsMHg2QSwweEM1LDB4NTksMHhGNywweEJFLDB4QUEsMHgyQSwweDQ4LDB4NkEsMHhFNSww
eDYxLDB4MjUsMHgyRiwweEJBLDB4RkEsCisgICAgMHg5MCwweEI0LDB4ODksMHg3MiwweDBELDB4
MkQsMHhCNSwweEI1LDB4RjEsMHhCQywweDBFLDB4QTQsMHhFOCwweEZFLDB4RUQsMHg5NSwKKyAg
ICAweEIwLDB4QjQsMHg2RiwweEFDLDB4QUEsMHhDQiwweEZCLDB4NEEsMHg2RiwweEFDLDB4QUMs
MHg4QiwweDU4LDB4NzAsMHg2OCwweDY4LAorICAgIDB4OEMsMHg4QiwweDJCLDB4ODMsMHg4Miww
eEVFLDB4RkUsMHg1QywweEFELDB4OTMsMHg0QiwweDgzLDB4Q0EsMHhBQiwweEY1LDB4MkQsCisg
ICAgMHhDRCwweDkzLDB4NEIsMHg4MywweEFELDB4QUQsMHhBQiwweDJBLDB4Q0QsMHg5MywweDhD
LDB4OEIsMHgwQiwweDJCLDB4MkQsMHgzNiwKKyAgICAweEVFLDB4OTMsMHhBRCwweDkzLDB4RjYs
MHg4QSwweEMyLDB4RkUsMHhFRCwweDkzLDB4MEIsMHg3QiwweEE4LDB4QTgsMHhFQSwweDZBLAor
ICAgIDB4QUQsMHg4QiwweENBLDB4NzIsMHg4MCwweDhBLDB4RkIsMHg1NSwweDZDLDB4ODMsMHgw
QSwweDczLDB4N0EsMHhGMCwweEZCLDB4REQsCisgICAgMHg0QiwweDgzLDB4Q0EsMHg2QSwweEEy
LDB4MjIsMHhBRSwweEI2LDB4NEMsMHg4MywweENBLDB4NkEsMHhFMCwweEFFLDB4RjAsMHg3QSwK
KyAgICAweDBCLDB4N0IsMHhDQSwweDcyLDB4RjYsMHhEQywweDU4LDB4N0EsMHgyQSwweDdCLDB4
Q0EsMHg3MiwweEY5LDB4RjcsMHg1NSwweDc3LAorICAgIDB4NEIsMHg4MywweEVBLDB4NzIsMHhE
RCwweDU3LDB4QkYsMHgzQiwweDRDLDB4ODMsMHhFQSwweDcyLDB4QUQsMHhBQiwweDJBLDB4Qzgs
CisgICAgMHg2QiwweDgzLDB4MEIsMHg3QiwweDJGLDB4OTcsMHhGNywweEJGLDB4QUQsMHg5Myww
eDZDLDB4OEIsMHhGRiwweEFCLDB4NkQsMHhGNSwKKyAgICAweENFLDB4OTMsMHg2QywweDhCLDB4
MEQsMHgyRiwweEY5LDB4N0UsMHg0RiwweEE0LDB4NkMsMHg4QiwweDBBLDB4QUIsMHhBRiwweEFE
LAorICAgIDB4NDMsMHg1MSwweEUxLDB4NDAsMHgyQSwweEUwLDB4NEEsMHg3QSwweDQzLDB4NTEs
MHhFMiwweDQwLDB4OEUsMHgyQiwweEFGLDB4RTksCisgICAgMHg2NCwweDUxLDB4MDIsMHg0OSww
eEZELDB4NzMsMHg1QSwweDc1LDB4MjMsMHg0OSwweEUxLDB4NDAsMHhCMiwweDlFLDB4NkIsMHhB
QiwKKyAgICAweDQzLDB4NTEsMHhFMiwweDQ4LDB4RTYsMHhFNywweEFELDB4M0UsMHgyMywweDQ5
LDB4MDIsMHg0OSwweDgwLDB4N0YsMHhBNCwweDk0LAorICAgIDB4NDMsMHg1MSwweDAyLDB4NDks
MHhERCwweDlGLDB4NTIsMHhFMiwweDQzLDB4NTEsMHhFMiwweDQwLDB4N0EsMHhGOCwweERBLDB4
REIsCisgICAgMHg2NCwweDU5LDB4MDIsMHg0OSwweEI1LDB4MkQsMHhBOSwweEVBLDB4NjQsMHg1
OSwweDIzLDB4NTEsMHhBQiwweEE4LDB4RUIsMHhFRiwKKyAgICAweDY0LDB4NTksMHgyMywweDUx
LDB4RkYsMHg3QywweDdELDB4NkQsMHg0MywweDUxLDB4MDIsMHg0OSwweDhBLDB4RjgsMHhGRiww
eDg3LAorICAgIDB4NjQsMHg1MSwweDIzLDB4NTEsMHg3QSwweEJGLDB4QTcsMHg3QiwweDY0LDB4
NTksMHgwMywweDQ5LDB4MkUsMHhBOCwweEVBLDB4REYsCisgICAgMHg0NCwweDUxLDB4MDMsMHg0
OSwweEI4LDB4NjgsMHhFQSwweEVBLDB4MjMsMHg1MSwweEUyLDB4NDgsMHhBQSwweEZGLDB4RUYs
MHgwQSwKKyAgICAweDQ0LDB4NTEsMHgwMywweDQ5LDB4N0YsMHg1RSwweDM1LDB4QkYsMHgyMyww
eDUxLDB4RTIsMHg0OCwweEZCLDB4QkYsMHg4RSwweDhFLAorICAgIDB4ODgsMHg3QSwweDIzLDB4
NTEsMHgyNSwweDI1LDB4M0QsMHgyRCwweDJBLDB4OTMsMHhFOSwweDhBLDB4QUIsMHhGRCwweEE5
LDB4NkIsCisgICAgMHgwOSwweDhCLDB4QTgsMHg4MiwweEY4LDB4RjIsMHg3OCwweDVBLDB4Qzgs
MHg4MiwweDg3LDB4N0EsMHhGMiwweEYwLDB4REUsMHg1NywKKyAgICAweEE4LDB4N0EsMHg2Nyww
eDdBLDB4RkUsMHg1RiwweDdDLDB4RkYsMHg4NywweDdBLDB4NDYsMHg3MiwweDAwLDB4MEYsMHgy
RSwweEJCLAorICAgIDB4QTgsMHg3QSwweDY3LDB4N0EsMHhGNywweEVGLDB4QkYsMHhBRCwweDg3
LDB4N0EsMHg2NywweDcyLDB4QjcsMHg4QSwweEMwLDB4QTAsCisgICAgMHg4NywweDdBLDB4NjYs
MHg3MiwweDdFLDB4MEEsMHgzRSwweDEyLDB4QTcsMHg3QSwweDY3LDB4NzIsMHg3NSwweEU1LDB4
REYsMHgzNywKKyAgICAweDg3LDB4N0EsMHg0NiwweDcyLDB4RjUsMHgwRiwweDJBLDB4MDgsMHg4
NywweDdBLDB4NDYsMHg3MiwweDVELDB4NUYsMHgzQSwweEZBLAorICAgIDB4ODYsMHg3MiwweDI1
LDB4NkEsMHhFMCwweDlFLDB4RkUsMHhGRiwweDY3LDB4N0EsMHgyNiwweDZBLDB4QkYsMHhCNiww
eEJDLDB4OEEsCisgICAgMHg4NiwweDdBLDB4NDYsMHg3MiwweDc1LDB4NzUsMHhGRCwweEVELDB4
ODcsMHg3QSwweDQ2LDB4NzIsMHhBNSwweDAzLDB4MkEsMHhBRiwKKyAgICAweEE4LDB4N0EsMHg0
NiwweDcyLDB4RUIsMHgwRSwweEFDLDB4RUQsMHg4NywweDdBLDB4MjUsMHg2QSwweDdFLDB4RUMs
MHhBRSwweDZFLAorICAgIDB4MjYsMHg3MiwweEM1LDB4NjEsMHg2MiwweEJBLDB4QjgsMHhFQSww
eDA2LDB4NkEsMHhBNCwweDYxLDB4RTAsMHhGMiwweEZFLDB4NzcsCisgICAgMHhDNSwweDYxLDB4
NjMsMHg1OSwweEEyLDB4MjcsMHhBQywweDhBLDB4MDUsMHg2QSwweEE0LDB4NjEsMHhBRCwweDI5
LDB4QUIsMHg1RSwKKyAgICAweDA1LDB4NkEsMHhBNCwweDYxLDB4RkEsMHhBOCwweEZBLDB4N0Es
MHgwNiwweDZBLDB4QTQsMHg1OSwweERGLDB4N0IsMHhGRiwweDJCLAorICAgIDB4MDUsMHg2QSww
eEE0LDB4NjEsMHhCRiwweDdGLDB4RkYsMHg4MCwweDQ2LDB4NzIsMHhDNCwweDYxLDB4OEIsMHgy
RCwweEJFLDB4MkUsCisgICAgMHg0NiwweDcyLDB4MjYsMHg2QSwweDJGLDB4MkUsMHhEMCwweEZB
LDB4ODcsMHg3QSwweDI2LDB4NkEsMHhGRCwweDU3LDB4NkIsMHhBMiwKKyAgICAweDY2LDB4NzIs
MHhFNSwweDYxLDB4N0UsMHg3QiwweEVBLDB4RTAsMHhBNCwweDU5LDB4QTIsMHgzOCwweDdDLDB4
NzgsMHg3OCwweEY4LAorICAgIDB4QTEsMHgzMCwweDYxLDB4MjgsMHg3OCwweDVGLDB4NUUsMHg1
RSwweEMyLDB4MzAsMHg2MSwweDI4LDB4QkYsMHgzRCwweEFELDB4QkQsCisgICAgMHgyMywweDQx
LDB4QTEsMHgyOCwweEZELDB4RkIsMHgyQiwweDBCLDB4MjMsMHg0MSwweEUyLDB4MzgsMHg4RCww
eEY3LDB4QUYsMHhBQywKKyAgICAweDIzLDB4NDEsMHhFMiwweDM4LDB4MEYsMHgyRiwweEY3LDB4
REYsMHg2NCwweDQ5LDB4MDMsMHg0MSwweDJCLDB4ODksMHg4NSwweDI1LAorICAgIDB4NjQsMHg0
OSwweDIzLDB4NDEsMHhFNiwweEZBLDB4NzAsMHhFMCwweDQzLDB4NDEsMHhBMiwweDMwLDB4RkMs
MHg1RSwweDdBLDB4RkUsCisgICAgMHhDMiwweDMwLDB4ODEsMHgyOCwweEZDLDB4RkEsMHhFOCww
eEE4LDB4QTIsMHgyOCwweDgxLDB4MjgsMHhCRSwweDdFLDB4RkMsMHg2OCwKKyAgICAweEEyLDB4
MjgsMHg4MiwweDIwLDB4ODAsMHhGQSwweDVFLDB4NUQsMHhDMiwweDI4LDB4ODIsMHgyMCwweEFG
LDB4QkQsMHgxRiwweDdGLAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHgwMywweEZGLDB4RkYs
MHg1RiwweEMzLDB4MjgsMHg2MSwweDIwLDB4RjgsMHhGOCwweDdFLDB4NTYsCisgICAgMHg4Myww
eDIwLDB4NjEsMHgyMCwweERDLDB4OTYsMHhERiwweEQyLDB4ODIsMHgyMCwweDYxLDB4MjAsMHhG
OCwweEJFLDB4RUIsMHhGQiwKKyAgICAweEEyLDB4MjgsMHg0MSwweDE4LDB4QTIsMHhBOCwweEJF
LDB4REYsMHhDMywweDI4LDB4NjEsMHgyMCwweDBCLDB4RUYsMHhCRiwweEY1LAorICAgIDB4QTIs
MHgyOCwweDgyLDB4MjAsMHhCQSwweEZFLDB4MEYsMHgyRiwweEMzLDB4MjgsMHg4MiwweDIwLDB4
MkUsMHg4OSwweDNCLDB4QUIsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDNGLDB4QkYsMHhG
RCwweEJELDB4MDMsMHgzMSwweEEyLDB4MjgsMHhEQSwweEZBLDB4RTMsMHhGRiwKKyAgICAweEUz
LDB4MzAsMHhDMiwweDI4LDB4RjIsMHg3OCwweERFLDB4NUQsMHhFMywweDMwLDB4QTIsMHgyOCww
eDJBLDB4QkYsMHhCQiwweEY3LAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHg3RiwweEVFLDB4
QUIsMHg4QSwweEUzLDB4MzgsMHhBMiwweDI4LDB4RkQsMHhGNSwweEZFLDB4MkIsCisgICAgMHhF
MywweDMwLDB4QTIsMHgzMCwweDhGLDB4MkIsMHg4OCwweEVBLDB4RTMsMHgzMCwweEEyLDB4MzAs
MHhCOCwweEY2LDB4RjcsMHg3RCwKKyAgICAweEMyLDB4MzAsMHhBMiwweDMwLDB4MEUsMHgwQiww
eDAzLDB4MkEsMHhFMywweDM4LDB4QTIsMHgyOCwweEY4LDB4RkIsMHhCRiwweEFBLAorICAgIDB4
MDMsMHgzOSwweEEyLDB4MzAsMHhCNSwweEZELDB4QkIsMHgyQSwweDI0LDB4MzksMHhFMywweDMw
LDB4QjIsMHhCQiwweDU3LDB4NTcsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDgwLDB4QTAs
MHhGQSwweEZFLDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBMiwweEFCLDB4QkYsMHgzRiwKKyAgICAw
eDIzLDB4MzksMHhFMiwweDMwLDB4RUYsMHhGRSwweEU5LDB4RTIsMHgwMywweDM5LDB4QzIsMHgz
MCwweEZGLDB4QUYsMHhBQiwweDAwLAorICAgIDB4MDMsMHgzOSwweEUyLDB4MzgsMHgwMywweDU3
LDB4MjcsMHgwNSwweDI0LDB4MzksMHhFMiwweDM4LDB4OTUsMHhGNSwweDlFLDB4NUEsCisgICAg
MHgyMywweDQxLDB4RTIsMHgzOCwweDdFLDB4NkUsMHhBMCwweDhBLDB4MDMsMHgzOSwweEMyLDB4
MzAsMHg2MywweDYyLDB4NzAsMHhFOCwKKyAgICAweDAzLDB4MzksMHhBMiwweDMwLDB4N0IsMHgz
RiwweDJGLDB4MkUsMHg0NCwweDQxLDB4RTIsMHgzMCwweEI1LDB4RkQsMHhFRSwweDNBLAorICAg
IDB4NDQsMHg0OSwweDAzLDB4MzksMHg1NywweDc3LDB4RkYsMHhCMCwweDQ0LDB4NDksMHgwMyww
eDM5LDB4RDUsMHg1NSwweDdELDB4RjIsCisgICAgMHgyNCwweDM5LDB4RTMsMHgzOCwweEVBLDB4
RjIsMHhCOSwweEZGLDB4MDMsMHgzOSwweEMyLDB4MzgsMHgwMiwweDAwLDB4QzAsMHhDMiwKKyAg
ICAweDAzLDB4MzksMHhDMiwweDMwLDB4NzcsMHhBRiwweEJCLDB4OEEsMHgyMywweDM5LDB4QzIs
MHgzMCwweDhCLDB4QTYsMHgzRiwweEFCLAorICAgIDB4MjMsMHgzOSwweEUyLDB4MzAsMHg1Niww
eEZGLDB4NkEsMHhFOCwweDAyLDB4MzksMHhDMSwweDMwLDB4RUEsMHg2MywweEEyLDB4ODIsCisg
ICAgMHgwMywweDQxLDB4QzIsMHgzMCwweDJGLDB4QTksMHgyQiwweDNGLDB4QTQsMHg1MSwweDIz
LDB4NDEsMHhBRCwweDM3LDB4MjksMHgyRCwKKyAgICAweEM1LDB4NTEsMHg2NCwweDQ5LDB4REYs
MHg1OSwweDhBLDB4MjIsMHhDNSwweDU5LDB4NjQsMHg0OSwweEZELDB4OTUsMHhGQSwweEY4LAor
ICAgIDB4MDUsMHg2MiwweDYzLDB4NDksMHhBRiwweDJGLDB4QUYsMHhGNywweDY3LDB4NkEsMHhD
NSwweDU5LDB4OEEsMHhBQSwweEJGLDB4NzUsCisgICAgMHgwNiwweDYyLDB4ODQsMHg1MSwweDA4
LDB4QjgsMHhGRSwweERGLDB4NDcsMHg2QSwweEE0LDB4NTEsMHgwQSwweDJBLDB4QkQsMHgyRCwK
KyAgICAweDhDLDB4OTMsMHgyNywweDYyLDB4MkYsMHgyRCwweDJELDB4MkQsMHhCMCwweEI0LDB4
RUQsMHg5QiwweDNELDB4QUQsMHgyOSwweDI5LAorICAgIDB4RDAsMHhCNCwweDZGLDB4QUMsMHhF
RSwweDdGLDB4RTIsMHhGQSwweDZGLDB4QUMsMHhBRCwweDkzLDB4NjgsMHhFMCwweEU4LDB4RTAs
CisgICAgMHhBRCwweDkzLDB4MEEsMHg3QiwweEZFLDB4QUMsMHhGOCwweDU4LDB4QUMsMHg4Qiww
eDJCLDB4ODMsMHgyQiwweDJCLDB4MkYsMHhCRCwKKyAgICAweENELDB4OEIsMHg4QywweDhCLDB4
QkMsMHg2OCwweDgyLDB4QzksMHhDRCwweDkzLDB4NkMsMHg3QiwweEE4LDB4QUEsMHgyQSwweEZG
LAorICAgIDB4Q0QsMHg5MywweDBBLDB4NzMsMHhBMCwweEEyLDB4RkEsMHg3RSwweDhDLDB4OEIs
MHhBQSwweDZBLDB4QTAsMHhGQSwweDdFLDB4REYsCisgICAgMHgwQiwweDczLDB4QTksMHg2QSww
eDdCLDB4RjIsMHhGRSwweDVFLDB4MEEsMHg3MywweDg5LDB4NjIsMHgwMiwweDJCLDB4RjksMHhE
RCwKKyAgICAweDJCLDB4NzMsMHhFQSwweDcyLDB4QUQsMHg3RCwweEQ1LDB4NUQsMHgyQiwweDdC
LDB4QTksMHg2QSwweEI4LDB4QkYsMHhGNywweEI3LAorICAgIDB4MEEsMHg3MywweEM5LDB4NzIs
MHg5NiwweEZCLDB4NDIsMHhFMCwweDBBLDB4N0IsMHhDQSwweDcyLDB4OUUsMHgzOSwweDI1LDB4
RDUsCisgICAgMHg0QywweDdCLDB4MEIsMHg3QiwweERELDB4REQsMHg4OSwweEI3LDB4NkMsMHg4
MywweDBCLDB4N0IsMHhERSwweEJGLDB4MUYsMHhFRiwKKyAgICAweDZDLDB4ODMsMHgyQiwweDgz
LDB4RkYsMHhGQSwweEVBLDB4QTgsMHhFRSwweDlCLDB4NEIsMHg4MywweEJELDB4MEYsMHgyOSww
eDJELAorICAgIDB4RUUsMHg5QiwweDRCLDB4ODMsMHg3RSwweDdBLDB4NTgsMHhGMCwweEVFLDB4
OUIsMHg0QywweDgzLDB4MkQsMHgyRCwweEZELDB4RjUsCisgICAgMHg0MywweDUxLDB4RTEsMHg0
OCwweERFLDB4RUIsMHg4QSwweDBCLDB4MjIsMHg0OSwweEUyLDB4NDAsMHhFMCwweEZBLDB4RkYs
MHhFRiwKKyAgICAweDQ0LDB4NTEsMHhDMiwweDQwLDB4RkYsMHg3RiwweEJGLDB4MkIsMHg0Myww
eDUxLDB4RTIsMHg0MCwweEZELDB4RUIsMHgyRiwweDA4LAorICAgIDB4NjMsMHg1MSwweDAyLDB4
NDksMHhGNywweDU1LDB4NkQsMHhGRSwweDQzLDB4NTEsMHgwMiwweDQ5LDB4RjcsMHhBNSwweEI1
LDB4QkYsCisgICAgMHg0MywweDUxLDB4RTIsMHg0MCwweEUwLDB4N0EsMHg3QywweEZBLDB4NDMs
MHg1MSwweEUyLDB4NDAsMHhCRiwweEFGLDB4QjksMHhFOSwKKyAgICAweDQzLDB4NTEsMHgwMiww
eDQ5LDB4ODAsMHhBOCwweEFGLDB4NEIsMHg0MywweDUxLDB4MDMsMHg0OSwweEEwLDB4QTMsMHhC
QiwweDBGLAorICAgIDB4NjUsMHg1OSwweDIzLDB4NTEsMHhFRCwweEJBLDB4NUEsMHg1RiwweDY0
LDB4NTksMHgwMiwweDQ5LDB4QkIsMHg4RiwweENELDB4RUEsCisgICAgMHg0NCwweDUxLDB4MjMs
MHg1MSwweDVDLDB4REIsMHg4RCwweEVELDB4NDMsMHg1MSwweDAzLDB4NDksMHhGNywweEZCLDB4
Q0IsMHhFMiwKKyAgICAweDIzLDB4NTEsMHgwMywweDQ5LDB4RTAsMHhGQywweDVBLDB4NzIsMHgy
MywweDUxLDB4RTIsMHg0OCwweENBLDB4RkEsMHhBQSwweEFCLAorICAgIDB4MjMsMHg1MSwweEUy
LDB4NDgsMHhFMiwweEJCLDB4RkYsMHg3NSwweDIzLDB4NTEsMHhFMiwweDQ4LDB4Q0YsMHhDQiww
eDJCLDB4RUQsCisgICAgMHhFOCwweDhBLDB4MjMsMHg1MSwweDJELDB4MjUsMHgyOSwweDJELDB4
MjksMHg5MywweEU4LDB4OEEsMHg3MiwweEYyLDB4NjIsMHg1RiwKKyAgICAweEM5LDB4OEEsMHhB
NywweDdBLDB4RTgsMHhGOCwweEJFLDB4NzIsMHhBOCwweDdBLDB4ODcsMHg3QSwweDU4LDB4NUMs
MHhFMCwweEZGLAorICAgIDB4QTcsMHg3QSwweDY3LDB4NzIsMHhEQiwweDJCLDB4QkYsMHg3Nyww
eDg3LDB4N0EsMHg0NiwweDcyLDB4NzksMHhDQSwweDJBLDB4MDAsCisgICAgMHhBNywweDdBLDB4
NjcsMHg3MiwweEE5LDB4QjcsMHhFNCwweDdDLDB4QTgsMHg4MiwweDI2LDB4NzIsMHhBOCwweEFG
LDB4MEEsMHgyMiwKKyAgICAweEE3LDB4N0EsMHg2NiwweDcyLDB4QkIsMHhEQywweEUwLDB4ODIs
MHg4NywweDdBLDB4NjcsMHg3MiwweDE4LDB4MEMsMHgyQiwweDBFLAorICAgIDB4QTcsMHg3QSww
eDY3LDB4N0EsMHhGRiwweDVGLDB4RUYsMHgxRiwweDg3LDB4N0EsMHg0NiwweDcyLDB4MkEsMHgy
RiwweEJBLDB4OTAsCisgICAgMHg2NiwweDcyLDB4MjYsMHg3MiwweEVDLDB4NEMsMHhEMCwweEMy
LDB4NjcsMHg3QSwweDI1LDB4NkEsMHg5QSwweEMyLDB4Q0IsMHg2RiwKKyAgICAweDg3LDB4N0Es
MHg0NiwweDcyLDB4RkEsMHg1RSwweDdFLDB4N0QsMHg4NywweDdBLDB4NDYsMHg3MiwweEVGLDB4
OEYsMHhBRCwweDBGLAorICAgIDB4ODcsMHg3QSwweDY3LDB4NzIsMHhBMywweDkzLDB4QkQsMHg2
RiwweDY3LDB4NzIsMHgwNSwweDZBLDB4RTgsMHhFQywweEZFLDB4REYsCisgICAgMHgyNiwweDcy
LDB4QzUsMHg2MSwweEY4LDB4RUYsMHg3OSwweEJFLDB4QzUsMHg2MSwweDgzLDB4NTksMHhFQyww
eDAyLDB4MjAsMHhFOCwKKyAgICAweDA1LDB4NkEsMHhBNCwweDYxLDB4RjUsMHhFNSwweDJELDB4
MEQsMHg0NiwweDcyLDB4QTQsMHg2MSwweEQ3LDB4QkQsMHgwQSwweEFBLAorICAgIDB4NDYsMHg3
MiwweEM1LDB4NjEsMHhBNSwweDhCLDB4ODAsMHgwOCwweDg3LDB4N0EsMHgwNiwweDZBLDB4RkQs
MHgyRCwweDhBLDB4QUEsCisgICAgMHhBNywweDdBLDB4NDYsMHg3MiwweDVGLDB4MkIsMHgyMiww
eEFCLDB4QTgsMHg4MiwweDA1LDB4NkEsMHhGRCwweEVCLDB4ODgsMHgyMiwKKyAgICAweEE4LDB4
N0EsMHgyNiwweDcyLDB4NzcsMHhBRiwweDhBLDB4QUEsMHhBOCwweDdBLDB4NjcsMHg3MiwweDdG
LDB4Q0IsMHg2QSwweERELAorICAgIDB4ODcsMHg3MiwweDI2LDB4NkEsMHg2MCwweDgwLDB4RTgs
MHg3RiwweDA2LDB4NjIsMHhFMiwweDM4LDB4NUEsMHg3OCwweDc4LDB4NzgsCisgICAgMHhDMiww
eDM4LDB4NjEsMHgyOCwweDVFLDB4QkUsMHhGQSwweEI4LDB4RTIsMHgzOCwweDgxLDB4MzAsMHhC
RCwweDNELDB4MkYsMHgyRCwKKyAgICAweDY0LDB4NDksMHgwMywweDM5LDB4QTksMHg4RiwweEE5
LDB4RkQsMHg2NCwweDQ5LDB4MDMsMHgzOSwweDdBLDB4N0EsMHg3RSwweEFGLAorICAgIDB4MjMs
MHg0MSwweEUyLDB4MzgsMHg0NSwweEY3LDB4N0EsMHhFQSwweDY1LDB4NDksMHhFMywweDM4LDB4
MkQsMHhBRCwweEZELDB4REQsCisgICAgMHg2NCwweDQ5LDB4MDMsMHgzOSwweEEyLDB4QTIsMHhB
QiwweDg3LDB4MjMsMHgzOSwweEEyLDB4MjgsMHg2OCwweDZBLDB4RjAsMHg2OCwKKyAgICAweEMy
LDB4MzAsMHg4MiwweDI4LDB4MkYsMHhBRSwweDIwLDB4MjIsMHhDMiwweDI4LDB4QTIsMHgyOCww
eDc3LDB4NUYsMHg3RiwweEVGLAorICAgIDB4QTIsMHgyOCwweDgyLDB4MjAsMHg3MiwweDYyLDB4
QUIsMHhFQywweEMzLDB4MjgsMHg2MSwweDIwLDB4RkUsMHhGQSwweEI4LDB4N0UsCisgICAgMHhD
MywweDI4LDB4NjEsMHgyMCwweEUzLDB4RUYsMHg3RiwweDU3LDB4ODIsMHgyMCwweDYxLDB4MjAs
MHg1OCwweERGLDB4RkYsMHhCRiwKKyAgICAweDgyLDB4MjAsMHg2MSwweDIwLDB4NjAsMHgwQiww
eDNGLDB4M0IsMHhBMiwweDI4LDB4NjEsMHgyMCwweEZGLDB4RkEsMHg4QiwweDAyLAorICAgIDB4
QTIsMHgyMCwweDYxLDB4MjAsMHg1NywweDlGLDB4RkEsMHhGOCwweEEyLDB4MjgsMHg0MSwweDE4
LDB4QkQsMHhFQSwweEFBLDB4MkEsCisgICAgMHhBMiwweDI4LDB4NjEsMHgyMCwweDJCLDB4QUYs
MHgzQiwweDA4LDB4QzIsMHgyOCwweDgyLDB4MjAsMHhGRiwweEZGLDB4M0YsMHhCNywKKyAgICAw
eEMyLDB4MjgsMHg4MSwweDI4LDB4MEIsMHgyMiwweEU4LDB4QTgsMHhDMiwweDI4LDB4QTIsMHgy
OCwweDc4LDB4NUEsMHg1RCwweERCLAorICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHg3MywweEY1
LDB4MzUsMHgyQiwweEMyLDB4MzAsMHhBMiwweDI4LDB4NTUsMHhGQSwweEEwLDB4ODAsCisgICAg
MHgwMywweDM5LDB4QTIsMHgyOCwweEFCLDB4OEIsMHhBNywweEZGLDB4MDMsMHgzOSwweEMyLDB4
MzAsMHhBRiwweEY2LDB4NTcsMHg1NywKKyAgICAweEUzLDB4MzgsMHhDMywweDMwLDB4NzgsMHhF
RCwweDNCLDB4MzksMHhFMywweDMwLDB4QTIsMHgzMCwweEZGLDB4RUUsMHhBQSwweEFCLAorICAg
IDB4QzIsMHgzMCwweEEzLDB4MjgsMHgwQSwweEFBLDB4ODAsMHgyMCwweDAzLDB4MzEsMHhBMiww
eDMwLDB4RkUsMHg1RiwweEY1LDB4NzcsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDJCLDB4
MkYsMHhBNSwweDc1LDB4MDMsMHgzOSwweEEyLDB4MzAsMHhBMCwweEE4LDB4RkUsMHhGQSwKKyAg
ICAweDAzLDB4MzksMHhDMywweDMwLDB4QUEsMHgwMiwweEE3LDB4RDcsMHgyMywweDM5LDB4RTMs
MHgzOCwweDk3LDB4QkIsMHg3NywweEQ1LAorICAgIDB4MjMsMHgzOSwweEUzLDB4MzgsMHhFNiww
eEFBLDB4MTMsMHgzQiwweDIzLDB4MzksMHhDMiwweDMwLDB4ODgsMHg4QSwweEJBLDB4OUEsCisg
ICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDAzLDB4QkUsMHgzQywweEJBLDB4MDMsMHgzOSwweEMy
LDB4MzAsMHgwMCwweDJBLDB4QUEsMHhGRSwKKyAgICAweDIzLDB4MzksMHhFMiwweDMwLDB4Mjgs
MHgzQiwweEY1LDB4NTcsMHgyMywweDQxLDB4RTIsMHgzOCwweEZDLDB4NTgsMHg1MCwweDUzLAor
ICAgIDB4RTIsMHgzOCwweEMyLDB4MzAsMHgyOCwweDBFLDB4MEUsMHgyRSwweDQ0LDB4NDEsMHhF
MywweDM4LDB4MjMsMHhBRCwweDM3LDB4MUYsCisgICAgMHg4NSwweDQ5LDB4MjMsMHg0MSwweEZG
LDB4RkIsMHg5RiwweDFGLDB4NjQsMHg0OSwweDI0LDB4NDEsMHg1MiwweDVBLDB4NzgsMHgyQSwK
KyAgICAweDQ0LDB4NDEsMHhFMiwweDM4LDB4N0YsMHhERSwweEZFLDB4RUMsMHg0NCwweDQxLDB4
RTMsMHgzOCwweEVELDB4QUYsMHhFRiwweENBLAorICAgIDB4MDIsMHgzOSwweEMyLDB4MzAsMHhG
MCwweDVBLDB4QzIsMHhBRSwweDAyLDB4MzksMHhDMSwweDMwLDB4MkEsMHgyNSwweEI1LDB4RUYs
CisgICAgMHgyMywweDM5LDB4RTIsMHgzOCwweEUyLDB4QUMsMHhCNywweEJELDB4NDMsMHg0MSww
eEUyLDB4MzgsMHhERiwweEVCLDB4QTAsMHhCQywKKyAgICAweDIzLDB4NDEsMHhFMiwweDM4LDB4
NTUsMHhERiwweDE0LDB4QkYsMHhBNCwweDUxLDB4MDIsMHgzOSwweDI5LDB4QUYsMHhBNSwweEQ3
LAorICAgIDB4QTQsMHg1MSwweDAyLDB4NDEsMHgwMCwweDgyLDB4QTgsMHg2RSwweEE0LDB4NTEs
MHgyMywweDQxLDB4QTAsMHhGRSwweEZGLDB4RkQsCisgICAgMHhBNCwweDU5LDB4MjIsMHg0MSww
eEFGLDB4QjcsMHgyRCwweDJGLDB4QzUsMHg1OSwweDg0LDB4NTEsMHg4MywweEE5LDB4RkIsMHhC
MywKKyAgICAweEU2LDB4NTksMHg4NCwweDUxLDB4NTcsMHg1RiwweDdBLDB4RTIsMHgyNiwweDYy
LDB4ODQsMHg1MSwweDJGLDB4QjUsMHhBRCwweEFGLAorICAgIDB4OEMsMHg5MywweDI2LDB4NjIs
MHgyRCwweDJELDB4MjUsMHgyNSwweEIwLDB4QjQsMHgyRSwweEE0LDB4MEQsMHgwOSwweDI5LDB4
QUQsCisgICAgMHhCMCwweEI0LDB4NkYsMHhBQywweDc4LDB4RjgsMHg3QiwweEU3LDB4NkYsMHhB
QywweENELDB4OTMsMHg2OCwweDY4LDB4RjgsMHg1OCwKKyAgICAweEFELDB4OTMsMHhBOSwweDcy
LDB4NzgsMHg3OCwweDc4LDB4NzAsMHgyQywweDgzLDB4NDgsMHg2MiwweDAyLDB4OEEsMHhBRiww
eEQ1LAorICAgIDB4OEMsMHg4QiwweDg5LDB4NkEsMHgwQSwweEZGLDB4RkYsMHg3RiwweDhDLDB4
ODMsMHg2OSwweDYyLDB4MjAsMHhBQiwweEZGLDB4NTcsCisgICAgMHgyQiwweDczLDB4NjgsMHg2
MiwweEEwLDB4RTgsMHg3RiwweDU1LDB4Q0EsMHg2QSwweDY4LDB4NjIsMHgyMiwweEVELDB4RkEs
MHhGNywKKyAgICAweENBLDB4NkEsMHg2OCwweDYyLDB4RjgsMHg1RiwweDc1LDB4N0QsMHhDQSww
eDZBLDB4NjgsMHg2MiwweDNCLDB4QjMsMHg5RCwweEU5LAorICAgIDB4RUEsMHg3MiwweDg5LDB4
NjIsMHg4MiwweEFBLDB4MkIsMHhBRCwweEVBLDB4NzIsMHg4OSwweDYyLDB4MkIsMHgyRCwweEJF
LDB4QkUsCisgICAgMHgwQSwweDczLDB4QzksMHg2QSwweEEwLDB4RkYsMHhCNSwweDE1LDB4NEIs
MHg3QiwweENBLDB4NzIsMHg1NywweEZELDB4QUIsMHgyRCwKKyAgICAweEFELDB4OEIsMHgwQiww
eDdCLDB4RjUsMHhGRCwweDhGLDB4MEEsMHgwRSwweDlDLDB4MkIsMHg3QiwweEY1LDB4RkYsMHhB
QiwweDJBLAorICAgIDB4RUQsMHg5MywweDRCLDB4ODMsMHg1NywweDc3LDB4RkUsMHhGQywweEVE
LDB4OTMsMHg0QiwweDgzLDB4M0YsMHgyNywweDNELDB4QkYsCisgICAgMHgyRSwweEE0LDB4OEMs
MHg4QiwweDYwLDB4QTIsMHgwMiwweDAzLDB4MEUsMHg5QywweDRCLDB4ODMsMHhERCwweDVGLDB4
N0UsMHg1OCwKKyAgICAweDQzLDB4NTEsMHgwMywweDQ5LDB4OEIsMHhDRSwweDlFLDB4OTYsMHgy
MywweDQ5LDB4RTIsMHg0OCwweEZDLDB4OUUsMHgzRSwweDBBLAorICAgIDB4MjMsMHg0OSwweDAy
LDB4NDksMHg1QSwweEY4LDB4ODgsMHhBOCwweDQ0LDB4NTEsMHgwMiwweDQ5LDB4QkYsMHhGRiww
eDZBLDB4NTIsCisgICAgMHg0NCwweDUxLDB4MDMsMHg0OSwweEI2LDB4QkEsMHhGNSwweEY1LDB4
MjIsMHg0OSwweEUyLDB4NDAsMHgyMCwweEE4LDB4QUQsMHhEQywKKyAgICAweDQzLDB4NTEsMHhF
MiwweDQwLDB4RkEsMHhBRCwweDJCLDB4OEEsMHg0MywweDUxLDB4MDIsMHg0OSwweEZCLDB4REEs
MHhBOCwweEZBLAorICAgIDB4NjQsMHg1MSwweDAzLDB4NDksMHhGRSwweEZFLDB4RUUsMHgzNSww
eDQ0LDB4NTEsMHgwMiwweDQ5LDB4Q0IsMHhFRiwweEY5LDB4RjksCisgICAgMHg2NCwweDUxLDB4
MjMsMHg1MSwweEZELDB4RDUsMHgzNSwweEE1LDB4NDQsMHg1OSwweDIzLDB4NDksMHhFQSwweEUz
LDB4N0EsMHg3QSwKKyAgICAweDQzLDB4NTEsMHgwMywweDQ5LDB4QUYsMHhBMywweDBGLDB4NkYs
MHg0MywweDUxLDB4MDMsMHg0OSwweDgzLDB4OUMsMHg1RSwweEZELAorICAgIDB4MjMsMHg1MSww
eEUyLDB4NDgsMHhFOCwweDY4LDB4RkMsMHg5NiwweDIzLDB4NTEsMHhFMiwweDQ4LDB4MzUsMHhB
NSwweEE5LDB4Q0UsCisgICAgMHgwMiwweDQ5LDB4RTIsMHg0OCwweDcwLDB4MDIsMHhCOCwweEYw
LDB4NDMsMHg1MSwweEUyLDB4NDgsMHhGRiwweEY3LDB4MkYsMHhBRCwKKyAgICAweEU4LDB4ODIs
MHg4MywweDU5LDB4MjUsMHgwRCwweDBELDB4MEQsMHgyOSwweDhCLDB4QzgsMHg4MiwweEVBLDB4
N0EsMHhFMiwweEZBLAorICAgIDB4RTksMHg4QSwweDg3LDB4N0EsMHg2MiwweEVCLDB4RkIsMHg1
NiwweEE4LDB4N0EsMHg2NywweDcyLDB4RTIsMHgyRSwweEJBLDB4N0YsCisgICAgMHhBNywweDgy
LDB4NjcsMHg3MiwweEZGLDB4RUUsMHhFQiwweEYxLDB4QTgsMHg3QSwweDY3LDB4N0EsMHhGRSww
eERBLDB4REEsMHhBQSwKKyAgICAweEM4LDB4ODIsMHg2NywweDcyLDB4N0YsMHg1RSwweDU4LDB4
RUIsMHhBOCwweDdBLDB4NjcsMHg3MiwweEJFLDB4QUIsMHgyRCwweEJGLAorICAgIDB4NDYsMHg4
MiwweEE4LDB4N0EsMHhGNiwweEY3LDB4RkQsMHhGRiwweEE4LDB4N0EsMHg0NiwweDcyLDB4OEEs
MHhBRSwweEZGLDB4QUIsCisgICAgMHhBNywweDdBLDB4NjcsMHg3MiwweEZGLDB4NkIsMHg0Qiww
eEZGLDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhBQiwweEZBLDB4RkEsMHg3QSwKKyAgICAweDY2LDB4
NzIsMHgyNiwweDcyLDB4MkYsMHhBQSwweDZCLDB4RkYsMHg2NiwweDcyLDB4MDUsMHg3MiwweEE4
LDB4OEEsMHg4QiwweDgyLAorICAgIDB4NjcsMHg3QSwweDQ2LDB4NzIsMHhDRCwweDM3LDB4RDUs
MHgxNywweDg3LDB4N0EsMHg0NiwweDcyLDB4QjIsMHhBRiwweEFGLDB4RUYsCisgICAgMHg4Nyww
eDdBLDB4MjYsMHg3MiwweEMyLDB4REYsMHg2RiwweEZCLDB4NDYsMHg3MiwweEU1LDB4NjEsMHhC
OCwweEZFLDB4REUsMHg3QywKKyAgICAweDA2LDB4NkEsMHhBNCwweDYxLDB4REMsMHg1QSwweDVB
LDB4NkEsMHgyNSwweDZBLDB4ODMsMHg1OSwweDdGLDB4RkYsMHhERCwweDNCLAorICAgIDB4NDYs
MHg3MiwweEE0LDB4NTksMHhGRCwweDc1LDB4M0IsMHgwMCwweEE4LDB4N0EsMHgwNSwweDZBLDB4
RDUsMHhCNSwweDBGLDB4RUUsCisgICAgMHg4NywweDdBLDB4MDUsMHg2QSwweDJCLDB4MkEsMHhF
OCwweDU2LDB4ODgsMHg3QSwweDA1LDB4NkEsMHhBMiwweDJDLDB4QUYsMHhGNSwKKyAgICAweDg3
LDB4N0EsMHgwNSwweDZBLDB4MjIsMHg4OCwweDhCLDB4RkQsMHg4NywweDdBLDB4MjYsMHg2QSww
eDhBLDB4QUEsMHhCQiwweEZELAorICAgIDB4NjcsMHg3MiwweDI2LDB4NkEsMHhBNywweEI4LDB4
NUEsMHg3OCwweDg3LDB4N0EsMHhFNiwweDY5LDB4QUIsMHhGRSwweEJELDB4MkUsCisgICAgMHg2
NywweDcyLDB4MDYsMHg2QSwweDZBLDB4QkUsMHhFMCwweDgwLDB4RTYsMHg2MSwweDAzLDB4NDEs
MHg3OCwweDU4LDB4NzgsMHg3OCwKKyAgICAweEUyLDB4MzgsMHg4MSwweDMwLDB4RDgsMHg4OCww
eEEyLDB4QTgsMHgwMywweDQxLDB4ODEsMHgzMCwweEFELDB4QUYsMHhBQSwweDg4LAorICAgIDB4
MjMsMHg0MSwweEUzLDB4MzgsMHgwOSwweDA5LDB4RjcsMHhGNSwweDY0LDB4NDksMHhFMiwweDM4
LDB4OEIsMHgyRSwweDJELDB4QjUsCisgICAgMHg0NCwweDQ5LDB4QzIsMHgzOCwweEZFLDB4Rjgs
MHg1OCwweEYwLDB4RTIsMHgzOCwweEMyLDB4MzAsMHgwMCwweEVFLDB4RUUsMHhCRiwKKyAgICAw
eDI0LDB4NDEsMHhDMiwweDMwLDB4MEEsMHhBQiwweEFGLDB4N0QsMHgyMywweDM5LDB4QzIsMHgy
OCwweDc4LDB4RUEsMHg3RSwweDdGLAorICAgIDB4QzIsMHgyOCwweDYyLDB4MjAsMHhBMiwweEFB
LDB4QUEsMHhFQSwweEMyLDB4MjgsMHg4MiwweDIwLDB4RUEsMHg1QiwweDVGLDB4NTUsCisgICAg
MHhBMiwweDIwLDB4NjEsMHgxOCwweDJDLDB4QkEsMHhCQSwweEZGLDB4QTIsMHgyMCwweDYxLDB4
MjAsMHg3QSwweDdBLDB4NzgsMHg3RiwKKyAgICAweDgyLDB4MjAsMHg2MSwweDIwLDB4NTUsMHhE
NSwweDM3LDB4MEIsMHhBMSwweDIwLDB4NjIsMHgyMCwweEY3LDB4RjcsMHhGRSwweEVBLAorICAg
IDB4QTIsMHgyOCwweDYxLDB4MjAsMHg1RiwweEZGLDB4OEIsMHgwMiwweEMyLDB4MjgsMHg4Miww
eDIwLDB4QkQsMHg1RCwweEJGLDB4N0UsCisgICAgMHhDMywweDI4LDB4NjEsMHgyMCwweDdBLDB4
RUEsMHhBQSwweDhBLDB4QTIsMHgyOCwweDgxLDB4MjAsMHgwNywweDdDLDB4NUUsMHg3QSwKKyAg
ICAweEMyLDB4MjgsMHg4MSwweDIwLDB4QUYsMHhBRiwweEI1LDB4QjUsMHhDMiwweDI4LDB4NjEs
MHgyMCwweDJBLDB4MjAsMHhBOCwweEVBLAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhCRiww
eEJCLDB4QkYsMHhENSwweEMyLDB4MjgsMHhBMiwweDI4LDB4N0EsMHhFRSwweEQ0LDB4NjcsCisg
ICAgMHhDMiwweDMwLDB4QTIsMHgyOCwweDdFLDB4NUYsMHg3RCwweEE5LDB4RTMsMHgzMCwweEEy
LDB4MjgsMHhGQiwweDBCLDB4MDMsMHgyMCwKKyAgICAweEUzLDB4MzAsMHhDMiwweDI4LDB4QUIs
MHg4QiwweEFCLDB4RjYsMHhFMywweDMwLDB4ODIsMHgyOCwweEVBLDB4RkEsMHhGQSwweERFLAor
ICAgIDB4QzIsMHgzMCwweDgxLDB4MjgsMHhBMCwweEI4LDB4NkYsMHhCRCwweEUzLDB4MzAsMHhB
MiwweDI4LDB4QTksMHhFQiwweEVELDB4NjksCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEUz
LDB4QTMsMHhGRCwweDdELDB4QzIsMHgzMCwweEEyLDB4MjgsMHgzOCwweDMwLDB4M0YsMHgwQSwK
KyAgICAweEUzLDB4MzAsMHhBMiwweDMwLDB4QkUsMHhCNiwweEFFLDB4MEEsMHhFMywweDM4LDB4
QzIsMHgzMCwweEYwLDB4RTIsMHhFQSwweEQwLAorICAgIDB4QzIsMHgzOCwweEUzLDB4MzAsMHhG
RiwweERGLDB4RkUsMHgyRiwweEUzLDB4MzgsMHhBMiwweDI4LDB4MjIsMHhFMCwweERBLDB4RkUs
CisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDNFLDB4OUYsMHhGRiwweEI3LDB4MjMsMHgzOSww
eEUyLDB4MzAsMHg1RiwweDU3LDB4QjUsMHhCNSwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4
REEsMHhBQSwweDJBLDB4MDgsMHgwMywweDM5LDB4QzIsMHgzMCwweEZGLDB4QkUsMHhBNCwweDAw
LAorICAgIDB4MjQsMHgzOSwweEUyLDB4MzgsMHg3NywweEY3LDB4QkYsMHhGOCwweDIzLDB4NDEs
MHhFMywweDM4LDB4RkQsMHhBOSwweEFBLDB4NEIsCisgICAgMHgyMywweDQxLDB4QzIsMHgzMCww
eEZGLDB4REEsMHhDMiwweEEyLDB4NDQsMHg0MSwweDAzLDB4NDEsMHhBNSwweEE1LDB4OEQsMHhG
RiwKKyAgICAweDg1LDB4NDksMHgyMywweDQxLDB4RUQsMHgzRCwweDlGLDB4QkEsMHg4NSwweDUx
LDB4NDQsMHg0MSwweEFELDB4MEQsMHhCQiwweEJBLAorICAgIDB4NjQsMHg0OSwweDAzLDB4Mzks
MHg3NiwweENFLDB4QzAsMHg4OCwweDg0LDB4NDksMHgyMywweDQxLDB4RjUsMHg1RiwweDVCLDB4
NjMsCisgICAgMHg0NCwweDQ5LDB4RTIsMHgzOCwweDdFLDB4QUIsMHg4QSwweDgyLDB4NDMsMHg0
OSwweEMxLDB4MzgsMHg3RCwweEZFLDB4RkEsMHhBMCwKKyAgICAweDIzLDB4NDEsMHhFMiwweDM4
LDB4MkYsMHgyOSwweEFGLDB4RUYsMHgyMywweDQxLDB4MDMsMHgzOSwweDI0LDB4MEEsMHg4Riww
eDJCLAorICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHhCRiwweDM4LDB4MDAsMHhCMCwweDQzLDB4
NDksMHhFMiwweDM4LDB4MkMsMHhFQSwweEI3LDB4MkQsCisgICAgMHg2NCwweDQ5LDB4MDIsMHg0
MSwweDJBLDB4MkQsMHhBRiwweDBBLDB4QTUsMHg1MSwweDQzLDB4NDEsMHhERiwweEU3LDB4OEEs
MHgwMiwKKyAgICAweEU1LDB4NTksMHgyMiwweDQxLDB4QTcsMHgyRiwweDBCLDB4MkEsMHgyNyww
eDYyLDB4ODQsMHg1MSwweDdGLDB4RUYsMHgzQSwweDJGLAorICAgIDB4MjcsMHg2MiwweEM1LDB4
NTksMHhGRCwweEVGLDB4QTgsMHgwMCwweDI3LDB4NjIsMHhDNSwweDU5LDB4RjcsMHg3OSwweEJF
LDB4QTgsCisgICAgMHgyQSwweDgzLDB4RTYsMHg1OSwweDJELDB4M0QsMHgzNSwweDM1LDB4MzIs
MHhDNSwweEVELDB4OUIsMHhCRCwweDJELDB4MjksMHgyRCwKKyAgICAweDczLDB4Q0QsMHhEMSww
eEI0LDB4NTUsMHhGRiwweEEyLDB4MDAsMHg1MiwweEM1LDB4NEYsMHhBNCwweDVGLDB4RUEsMHhB
MCwweDgwLAorICAgIDB4QjAsMHhCNCwweEVBLDB4N0EsMHg3RSwweEY4LDB4QTAsMHgyMCwweDJG
LDB4OUMsMHgwNywweDVBLDB4NTUsMHg1NywweEZBLDB4QTAsCisgICAgMHhDQSwweDcyLDB4MDcs
MHg1QSwweEEwLDB4QTgsMHg2QSwweDcwLDB4NDksMHg2MiwweEE2LDB4NTEsMHg4MCwweEFDLDB4
QkUsMHhENywKKyAgICAweDQ4LDB4NjIsMHhBNiwweDUxLDB4MEEsMHhBQiwweDdGLDB4NzcsMHg2
OCwweDYyLDB4RTYsMHg1MSwweDgwLDB4RUUsMHhGRiwweERGLAorICAgIDB4NjgsMHg2MiwweDA3
LDB4NTIsMHgwMiwweDAyLDB4RkIsMHg3NywweDg5LDB4NjIsMHgyNywweDVBLDB4MDgsMHgyQSww
eEU4LDB4REYsCisgICAgMHhBOSwweDZBLDB4NjgsMHg2MiwweDJCLDB4QUEsMHhBRCwweDI1LDB4
Q0EsMHg2QSwweDY4LDB4NjIsMHgyMCwweDBCLDB4MEQsMHgwQiwKKyAgICAweDBBLDB4N0IsMHhB
OSwweDZBLDB4QUYsMHhFNywweEIzLDB4MEEsMHhBRCwweDhCLDB4MEEsMHg3MywweDk1LDB4MzUs
MHgyRCwweDBCLAorICAgIDB4NEYsMHhBNCwweEFELDB4OEIsMHhGNSwweEI1LDB4M0EsMHhBQiww
eDRFLDB4QTQsMHhDQywweDkzLDB4RDcsMHhGQSwweEFBLDB4MDIsCisgICAgMHg0RiwweEE0LDB4
QUMsMHg4QiwweDdFLDB4RUEsMHhBQSwweDgyLDB4Q0QsMHg5MywweDZCLDB4OEIsMHhBQSwweEIw
LDB4OTgsMHg4OCwKKyAgICAweDRFLDB4QTQsMHhDRCwweDkzLDB4MEQsMHgyRiwweEFGLDB4M0Qs
MHg2RiwweEFDLDB4OEMsMHg4QiwweDVFLDB4NzgsMHg3OCwweEU4LAorICAgIDB4NDQsMHg0OSww
eDAyLDB4NDksMHg3OCwweDU1LDB4RDUsMHhGNSwweDIzLDB4NDksMHgwMywweDQ5LDB4RUIsMHhE
QSwweEY3LDB4QzgsCisgICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweDI4LDB4QjcsMHhENiwweEFF
LDB4NDMsMHg1MSwweDAzLDB4NDksMHhGRiwweDBCLDB4QkYsMHhGOSwKKyAgICAweDQzLDB4NTEs
MHhFMiwweDQwLDB4RTIsMHhBOCwweDdBLDB4OUEsMHg0MywweDUxLDB4RTIsMHg0MCwweDk3LDB4
QTcsMHgyRiwweDBBLAorICAgIDB4NjQsMHg1MSwweDAyLDB4NDksMHhGQiwweEZBLDB4RjYsMHhF
OCwweDQzLDB4NTEsMHgwMywweDQ5LDB4NzcsMHgwQSwweDIwLDB4NUIsCisgICAgMHg2NCwweDU5
LDB4MDIsMHg0OSwweDlGLDB4QkUsMHhCOCwweEVGLDB4NDMsMHg1MSwweDAzLDB4NTEsMHgyMCww
eDAwLDB4MkMsMHhFQiwKKyAgICAweDQzLDB4NTEsMHgyMywweDUxLDB4MjYsMHhGRSwweDU2LDB4
RjEsMHg0MywweDUxLDB4MDIsMHg0OSwweDZBLDB4RUEsMHhGQSwweDUyLAorICAgIDB4MjMsMHg1
MSwweDAzLDB4NDksMHgwQSwweEM3LDB4MkYsMHgwOSwweEUyLDB4NTAsMHgyMywweDQ5LDB4RkUs
MHhCQiwweEFELDB4RUQsCisgICAgMHg0NCwweDUxLDB4RTIsMHg0OCwweEZGLDB4RkQsMHhBQSww
eEE4LDB4MjMsMHg1MSwweEMxLDB4NDAsMHg2RSwweDdBLDB4RUEsMHhFOCwKKyAgICAweDAyLDB4
NDksMHhFMiwweDQ4LDB4MzksMHgwQiwweDhCLDB4Q0QsMHhFNiwweDY5LDB4MDIsMHg0OSwweEQ1
LDB4RDUsMHhCNSwweDI1LAorICAgIDB4NDksMHg5MywweEU1LDB4NjEsMHhBRCwweDJELDB4QUIs
MHgyQSwweDA4LDB4OEIsMHhBNywweDdBLDB4RjAsMHhGQywweDc4LDB4N0EsCisgICAgMHhDOCww
eDgyLDB4NjYsMHg3MiwweEE4LDB4RTAsMHg2QSwweDdBLDB4QTcsMHg3QSwweDY3LDB4N0EsMHhB
RSwweEEyLDB4RkEsMHgxRiwKKyAgICAweEE3LDB4N0EsMHg2NiwweDcyLDB4RUUsMHhBOCwweDY2
LDB4QUEsMHhBNywweDgyLDB4NjYsMHg3MiwweEMzLDB4NzEsMHg3RCwweDc1LAorICAgIDB4ODcs
MHg3QSwweDY3LDB4NzIsMHgwMiwweEEzLDB4MjEsMHgyMywweEE3LDB4N0EsMHg2NiwweDcyLDB4
QkEsMHhBQiwweDI5LDB4REYsCisgICAgMHhBNywweDdBLDB4NjYsMHg3MiwweEJBLDB4QUEsMHhC
NiwweDc3LDB4QTgsMHg3QSwweDY2LDB4N0EsMHgyRiwweEJGLDB4RUUsMHgyRCwKKyAgICAweEE4
LDB4ODIsMHg0NiwweDcyLDB4QkEsMHhGMiwweDc4LDB4NzgsMHg2NywweDdBLDB4NDYsMHg3Miww
eEYyLDB4RUIsMHg3RCwweDY5LAorICAgIDB4NjYsMHg3MiwweDI2LDB4NkEsMHhGNywweEZGLDB4
RjgsMHhFQiwweDY2LDB4N0EsMHgyNiwweDZBLDB4MkEsMHg4OSwweDBCLDB4QkEsCisgICAgMHhB
NywweDdBLDB4MjYsMHg3MiwweEJGLDB4RkYsMHg3RiwweDBBLDB4MDksMHg4QiwweDI2LDB4NzIs
MHhGNSwweEJELDB4QUQsMHgyQSwKKyAgICAweDRBLDB4OTMsMHg0NiwweDcyLDB4NTUsMHhGRiww
eEFBLDB4MkEsMHgyOSwweDhCLDB4NDYsMHg3MiwweDU1LDB4RUUsMHhBQSwweEEwLAorICAgIDB4
QTgsMHg3QSwweEU1LDB4NjEsMHhERiwweEVBLDB4QTAsMHhCOCwweDY3LDB4N0EsMHhFNSwweDY5
LDB4MkIsMHg4MiwweEYwLDB4NTYsCisgICAgMHg2NywweDcyLDB4RTUsMHg2OSwweEFDLDB4RkYs
MHhGRiwweEY1LDB4MjUsMHg3MiwweEM1LDB4NjEsMHhFOCwweEVBLDB4QUEsMHhBQSwKKyAgICAw
eDQ2LDB4NzIsMHhDNCwweDYxLDB4N0YsMHg3RiwweEJBLDB4OEEsMHg0NiwweDcyLDB4RTUsMHg2
MSwweEQ3LDB4REYsMHhGQiwweDI4LAorICAgIDB4NjcsMHg3MiwweDA1LDB4NkEsMHhERCwweEZE
LDB4RjksMHg4MywweDY3LDB4N0EsMHgyNiwweDZBLDB4MjksMHhGNSwweDVELDB4RkYsCisgICAg
MHg4NywweDdBLDB4MjYsMHg2QSwweEJGLDB4QjUsMHhBRiwweDBCLDB4ODcsMHg3MiwweDI2LDB4
NkEsMHhBRSwweEZFLDB4REYsMHg3QSwKKyAgICAweDg3LDB4NzIsMHgyNiwweDZBLDB4N0UsMHg3
QywweDU3LDB4NTcsMHhFNSwweDU5LDB4MjMsMHg0MSwweDc4LDB4NzgsMHg3OCwweDc4LAorICAg
IDB4MjMsMHg0MSwweEExLDB4MzAsMHhERSwweEZFLDB4REUsMHhGQywweDA0LDB4MzksMHhDMiww
eDM4LDB4RkIsMHhGNywweDZCLDB4RTksCisgICAgMHgwMywweDM5LDB4QzIsMHgzOCwweEFCLDB4
RkYsMHhGRCwweDc3LDB4MjMsMHg0MSwweEMyLDB4MzAsMHgzRiwweEI3LDB4QjcsMHhGRiwKKyAg
ICAweDQ0LDB4NDEsMHgwMywweDM5LDB4NkEsMHg3QSwweDdGLDB4NTUsMHgwMywweDM5LDB4RTIs
MHgzMCwweEJGLDB4MjAsMHhGOCwweDM0LAorICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHhGQSww
eEZDLDB4NzgsMHg3OCwweEMyLDB4MjgsMHg4MSwweDIwLDB4QzAsMHhFOCwweEY3LDB4NTUsCisg
ICAgMHhBMiwweDI4LDB4NjEsMHgyMCwweEVBLDB4RTgsMHhGOCwweEZBLDB4ODIsMHgyMCwweDYx
LDB4MTgsMHhEQiwweDVBLDB4NzIsMHhDMCwKKyAgICAweDgyLDB4MjAsMHg2MSwweDE4LDB4RDUs
MHhGNSwweEVGLDB4OEYsMHhBMiwweDIwLDB4NjEsMHgxOCwweEY1LDB4RTksMHhBQiwweEFCLAor
ICAgIDB4QTIsMHgyOCwweDYxLDB4MjAsMHhBQiwweEVGLDB4MjcsMHhBRSwweEMyLDB4MjgsMHg4
MSwweDIwLDB4RkIsMHg4RiwweEFELDB4QUYsCisgICAgMHgwMywweDMxLDB4QTIsMHgyOCwweEY3
LDB4RTcsMHg3RCwweEZGLDB4RTMsMHgzMCwweDgxLDB4MjAsMHg3RSwweEZFLDB4RjIsMHhBQSwK
KyAgICAweEMyLDB4MjgsMHg4MiwweDI4LDB4RkQsMHg1RiwweDVFLDB4QjYsMHhBMiwweDI4LDB4
ODEsMHgyMCwweEZFLDB4NDAsMHg3OCwweDVBLAorICAgIDB4QTIsMHgyOCwweDYxLDB4MjAsMHhB
QSwweEFDLDB4N0EsMHhBRSwweEEyLDB4MjgsMHg2MSwweDIwLDB4MjgsMHhBOCwweEZBLDB4RkEs
CisgICAgMHhBMiwweDI4LDB4NjEsMHgyMCwweDAwLDB4MDIsMHgyRiwweEFGLDB4QzIsMHgyOCww
eDgxLDB4MjgsMHhBQiwweDhGLDB4MkYsMHhGRiwKKyAgICAweEMyLDB4MjgsMHg4MSwweDI4LDB4
MDIsMHhBOCwweDdCLDB4NTUsMHhFMiwweDMwLDB4ODEsMHgyOCwweDhBLDB4QkUsMHhFOSwweEJG
LAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHg5QiwweDNCLDB4M0UsMHhGRiwweEMyLDB4MzAs
MHhBMiwweDI4LDB4NUUsMHhEQywweDdDLDB4NUYsCisgICAgMHg2MSwweDMwLDB4QzIsMHgyOCww
eEZCLDB4NzcsMHhGRiwweDVELDB4MDMsMHgzMSwweEMyLDB4MjgsMHg3RCwweEY1LDB4NkQsMHg0
MywKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4RkQsMHg4RSwweEEyLDB4ODIsMHgwNCwweDM5
LDB4QzMsMHgzMCwweEY1LDB4RkYsMHhERiwweEFGLAorICAgIDB4MjQsMHgzOSwweEUzLDB4Mzgs
MHhGNSwweDhELDB4MjUsMHhGRiwweDI0LDB4MzksMHhDMiwweDMwLDB4NUUsMHg3RSwweDYwLDB4
RTgsCisgICAgMHhFMywweDMwLDB4QzIsMHgzMCwweDcyLDB4REQsMHhGNywweEI2LDB4QzMsMHgz
OCwweEUzLDB4MzAsMHhGNiwweEQ3LDB4RkQsMHhGRiwKKyAgICAweDAzLDB4MzksMHhDMiwweDMw
LDB4MkYsMHgwQiwweEFBLDB4QTMsMHgyMywweDM5LDB4RTMsMHgzOCwweEFELDB4ODIsMHhBMSww
eDJGLAorICAgIDB4MjMsMHgzOSwweEUyLDB4MzAsMHhCOCwweEVCLDB4RUMsMHhGOCwweDIzLDB4
MzksMHhFMiwweDMwLDB4MkEsMHgwMiwweEEzLDB4REQsCisgICAgMHg0NCwweDQxLDB4QzIsMHgz
MCwweEY4LDB4RkUsMHg3RiwweDdGLDB4MDMsMHgzOSwweEUyLDB4MzAsMHhBQSwweDFGLDB4M0Ys
MHg3RiwKKyAgICAweDQ0LDB4NDEsMHhFMiwweDM4LDB4OEYsMHhBRiwweEJGLDB4RDUsMHg0NCww
eDQxLDB4RTIsMHgzOCwweEZFLDB4N0EsMHhGOCwweEVELAorICAgIDB4NDQsMHg0OSwweDAzLDB4
MzksMHgyMywweDgzLDB4QTEsMHhFOSwweDg1LDB4NDksMHgwMywweDQxLDB4QUIsMHgyRCwweEJG
LDB4NUQsCisgICAgMHg4NSwweDUxLDB4NDQsMHg0OSwweEZBLDB4RTksMHhBRiwweDBBLDB4ODUs
MHg1MSwweDIzLDB4NDEsMHgwMiwweDJBLDB4RUEsMHhEOCwKKyAgICAweDQ0LDB4NDksMHgwMyww
eDQxLDB4MDgsMHgwMCwweDgwLDB4RjIsMHg2NCwweDQ5LDB4MDIsMHgzOSwweEY4LDB4NTIsMHhE
RSwweDlGLAorICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHhGQSwweDdFLDB4RjgsMHhFQywweDIz
LDB4NDEsMHhFMiwweDM4LDB4QTIsMHhDOSwweEY5LDB4NkIsCisgICAgMHg0MywweDQxLDB4RTIs
MHgzOCwweERFLDB4QkYsMHhGRiwweEEzLDB4NDMsMHg0MSwweDAzLDB4NDEsMHgwRCwweEFBLDB4
OEEsMHhCRiwKKyAgICAweDg1LDB4NTEsMHgwMywweDQxLDB4MjMsMHgyMiwweEJBLDB4RkQsMHhB
NSwweDUxLDB4MjIsMHg0MSwweDBBLDB4RUEsMHg3NywweDU1LAorICAgIDB4QzUsMHg1OSwweDIy
LDB4NDEsMHgwQSwweEFBLDB4QUQsMHhGRCwweEU2LDB4NjEsMHg2MywweDQ5LDB4MDIsMHgwRiww
eEY1LDB4RDUsCisgICAgMHgyNywweDYyLDB4ODQsMHg1MSwweDJBLDB4QkUsMHhERiwweDc1LDB4
MjcsMHg2MiwweDg0LDB4NTEsMHgwMCwweDg4LDB4RkIsMHg5NSwKKyAgICAweEU5LDB4N0EsMHhF
NSwweDU5LDB4MzUsMHgyNSwweDM1LDB4QkQsMHgxMiwweEM1LDB4OEMsMHg5MywweDI5LDB4Mjks
MHgyOSwweDJELAorICAgIDB4NzMsMHhDRCwweDMyLDB4QzUsMHgwMCwweEFFLDB4QUYsMHhCRCww
eDczLDB4Q0QsMHgxMiwweEJELDB4NkMsMHhGOCwweEZBLDB4Q0EsCisgICAgMHg1MiwweEM1LDB4
OTAsMHhBQywweDVFLDB4NUUsMHg3OCwweDdBLDB4QjAsMHhCNCwweDBFLDB4OUMsMHg1RSwweEJB
LDB4RTgsMHhBRiwKKyAgICAweDZGLDB4QTQsMHg0QywweDgzLDB4NUUsMHhFQSwweEE4LDB4QTIs
MHgwRSwweDlDLDB4NjgsMHg2MiwweDU3LDB4QTgsMHgwMCwweDAwLAorICAgIDB4MEUsMHg5Qyww
eEU3LDB4NTksMHg1NSwweDdGLDB4RTgsMHgwMCwweENELDB4OTMsMHhDNiwweDUxLDB4NTUsMHg1
NSwweEZGLDB4QTgsCisgICAgMHg0QywweDgzLDB4RTYsMHg1MSwweDU1LDB4NTUsMHhGRiwweDAw
LDB4MkIsMHg3QiwweDA3LDB4NUEsMHg3NSwweERELDB4RkYsMHgwMCwKKyAgICAweDZDLDB4ODMs
MHgwNiwweDUyLDB4RkQsMHhGRiwweEJGLDB4MDAsMHhBRCwweDhCLDB4NjgsMHg2MiwweEY1LDB4
REYsMHhFRiwweDAwLAorICAgIDB4MEQsMHg5NCwweEVBLDB4NzIsMHg3NSwweEY1LDB4QUQsMHgy
RSwweEVELDB4OTMsMHg2QiwweDgzLDB4M0QsMHhBRiwweEI3LDB4MjAsCisgICAgMHg0RSwweEE0
LDB4Q0MsMHg5MywweEJGLDB4MkYsMHgyRCwweEFGLDB4NkYsMHhBQywweDBFLDB4OUMsMHgyRSww
eDhCLDB4OUEsMHhBMiwKKyAgICAweDZGLDB4QTQsMHgwRSwweEE0LDB4NkEsMHhBOCwweEZBLDB4
RkUsMHgyRSwweDlDLDB4OEIsMHg4QiwweEZFLDB4NUMsMHhGRSwweEY4LAorICAgIDB4MkUsMHhB
NCwweDhDLDB4OEIsMHgyRCwweDI5LDB4QUYsMHgyRiwweDZGLDB4QTQsMHgyRSwweEE0LDB4Njcs
MHg3QiwweEVBLDB4QUIsCisgICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweDJFLDB4QUYsMHgzRSww
eDJBLDB4MDMsMHg1MSwweDQzLDB4NDksMHhGQSwweEJGLDB4RkYsMHhGQiwKKyAgICAweDQzLDB4
NTEsMHgwMywweDQ5LDB4RTcsMHg3RCwweEZGLDB4RUIsMHg0MywweDQ5LDB4MDMsMHg0OSwweDJF
LDB4RjcsMHg3RCwweEZCLAorICAgIDB4NDMsMHg1MSwweDAyLDB4NDksMHhGNiwweEJDLDB4QkYs
MHhCRiwweDQzLDB4NTEsMHgwMiwweDQ5LDB4QUEsMHhFQSwweEVCLDB4RUYsCisgICAgMHg2Myww
eDU5LDB4MDIsMHg0OSwweEVBLDB4QUUsMHgyNywweEJGLDB4NjMsMHg1OSwweDAyLDB4NDksMHhG
RiwweEVCLDB4QUMsMHhBQiwKKyAgICAweDQzLDB4NTEsMHgwMiwweDQ5LDB4RkUsMHg3QywweEMy
LDB4MDgsMHg0MywweDUxLDB4RTIsMHg0OCwweEJCLDB4Q0QsMHhBQiwweEFCLAorICAgIDB4NjQs
MHg1OSwweEUyLDB4NDgsMHhBQSwweEFCLDB4RjksMHg3NywweDIzLDB4NTEsMHgwMiwweDQ5LDB4
NTIsMHhENCwweEQ3LDB4OTUsCisgICAgMHg0MywweDUxLDB4MDMsMHg0OSwweEZELDB4M0YsMHhG
RiwweDVGLDB4NDMsMHg1MSwweDAzLDB4NDksMHhCOCwweEU3LDB4QjcsMHg1NSwKKyAgICAweDIz
LDB4NDksMHhFMiwweDQwLDB4QTIsMHhCRiwweEYzLDB4REEsMHgyMywweDUxLDB4RTIsMHg0OCww
eEZDLDB4NTYsMHg3RiwweEFGLAorICAgIDB4NDMsMHg1MSwweEUyLDB4NDgsMHhENSwweEQ1LDB4
QjUsMHgyRiwweDA5LDB4OEIsMHgyMywweDUxLDB4QjUsMHgyRCwweDBGLDB4MDMsCisgICAgMHgy
OSwweDhCLDB4QzgsMHg4MiwweEJELDB4RTYsMHg1QywweDdDLDB4RTgsMHg4MiwweDg3LDB4N0Es
MHhGOCwweEM4LDB4NjgsMHhFQSwKKyAgICAweEM3LDB4ODIsMHg4NywweDdBLDB4N0QsMHhGRCww
eEFELDB4QkQsMHhBNywweDdBLDB4NjYsMHg3MiwweEI2LDB4NzIsMHg4MCwweEMwLAorICAgIDB4
QTcsMHg3QSwweDY2LDB4NzIsMHhFQSwweDdCLDB4QUUsMHhFRSwweEE3LDB4N0EsMHg0NiwweDdB
LDB4QUEsMHg4QSwweEU4LDB4MjAsCisgICAgMHhBNywweDgyLDB4NDYsMHg3MiwweEFBLDB4QUUs
MHgwQSwweDBFLDB4QTcsMHg3QSwweDY2LDB4NzIsMHhGQiwweEJGLDB4QUEsMHgwQSwKKyAgICAw
eEE3LDB4N0EsMHg2NiwweDcyLDB4RkYsMHhBRiwweEVBLDB4QTgsMHg4NywweDdBLDB4NjcsMHg3
MiwweDgwLDB4QzAsMHg4QSwweEFGLAorICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHg2OCwweEU2
LDB4NzYsMHhBRiwweDY3LDB4N0EsMHgwNSwweDZBLDB4QUEsMHg2OCwweEE4LDB4MjIsCisgICAg
MHgwOSwweDhCLDB4MDUsMHg2QSwweEZELDB4RkYsMHhGRCwweDBGLDB4ODksMHg5QiwweDQ2LDB4
NzIsMHhERCwweEFELDB4MkIsMHgwMiwKKyAgICAweDhBLDB4OUIsMHhDOCwweDgyLDB4RDUsMHgy
QiwweDgwLDB4MDIsMHg4QSwweDlCLDB4MDgsMHg4QiwweEY1LDB4QUUsMHg4RSwweDc4LAorICAg
IDB4MjksMHg4QiwweDA1LDB4NkEsMHg4MCwweDIwLDB4RTgsMHg3RSwweEM4LDB4ODIsMHhFNSww
eDY5LDB4QTAsMHhFQSwweERGLDB4NTUsCisgICAgMHg0NiwweDZBLDB4RTYsMHg2OSwweEZDLDB4
RkYsMHhERCwweEZGLDB4MjYsMHg2QSwweEU1LDB4NjEsMHhGRSwweERBLDB4QUEsMHg4QSwKKyAg
ICAweDI2LDB4NkEsMHhDNSwweDU5LDB4MEEsMHhBQSwweEFCLDB4REEsMHg0NiwweDZBLDB4ODQs
MHg1MSwweDJBLDB4MjAsMHhBOCwweDVGLAorICAgIDB4NjcsMHg3MiwweEE1LDB4NTksMHgyOCww
eEE4LDB4RUUsMHg1NSwweDY3LDB4NzIsMHhBNSwweDU5LDB4MjAsMHgwQSwweEZCLDB4NTUsCisg
ICAgMHg2NywweDcyLDB4ODQsMHg1MSwweDAwLDB4MDAsMHhCQSwweDVELDB4ODcsMHg3MiwweDg0
LDB4NTEsMHgwMCwweDAwLDB4QkEsMHg1NSwKKyAgICAweEE4LDB4N0EsMHg2NCwweDUxLDB4MDIs
MHhBOCwweEZFLDB4NTUsMHg2NywweDcyLDB4NDMsMHg0OSwweEEwLDB4QTgsMHhGRiwweDU1LAor
ICAgIDB4MDYsMHg2MiwweDQ0LDB4NDksMHgwMCwweDAwLDB4MkUsMHhFNSwweEM1LDB4NTksMHgy
MywweDQ5LDB4RjgsMHg3OCwweDc4LDB4NzgsCisgICAgMHg2NSwweDQ5LDB4RTMsMHgzOCwweDVG
LDB4N0YsMHhBQSwweEFBLDB4NDMsMHg0MSwweEUzLDB4MzgsMHhGRCwweEVGLDB4RkYsMHhGOCwK
KyAgICAweDI0LDB4NDEsMHhDMiwweDMwLDB4RjcsMHhFNywweEFDLDB4QUEsMHgwMywweDM5LDB4
QTIsMHgzMCwweEFBLDB4QTgsMHhFOCwweEZBLAorICAgIDB4RTMsMHgzOCwweEEyLDB4MjgsMHhB
OCwweEZDLDB4N0UsMHg1RiwweDAzLDB4MzksMHg4MSwweDIwLDB4QTgsMHhBRSwweEQ3LDB4N0Qs
CisgICAgMHgwMywweDMxLDB4ODEsMHgyMCwweEZDLDB4RkUsMHhGRiwweDU1LDB4QzIsMHgyOCww
eDYxLDB4MjAsMHhGRiwweEVBLDB4NzgsMHg1RSwKKyAgICAweDgxLDB4MjAsMHg2MSwweDE4LDB4
QTgsMHgyOCwweDgwLDB4NzYsMHhBMiwweDIwLDB4NjEsMHgxOCwweEVBLDB4N0EsMHg3RiwweEZE
LAorICAgIDB4ODIsMHgyMCwweDYxLDB4MTgsMHhDRCwweDBCLDB4M0IsMHhCQSwweEMyLDB4Mjgs
MHg4MiwweDIwLDB4RkQsMHhGRCwweEJCLDB4MkIsCisgICAgMHhFMywweDMwLDB4ODEsMHgyMCww
eERELDB4RjcsMHhBQiwweDBBLDB4QzIsMHgyOCwweEEyLDB4MjgsMHhBNywweDM1LDB4OTUsMHhB
QywKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4QUEsMHhBQiwweEY5LDB4ODAsMHgwMywweDMx
LDB4QzIsMHgyOCwweDdELDB4RUYsMHhBRSwweDJGLAorICAgIDB4RTIsMHgzMCwweEEyLDB4Mjgs
MHg1NywweDcwLDB4RUMsMHhFOCwweEUzLDB4MjgsMHg4MiwweDI4LDB4NUYsMHhCRiwweEJCLDB4
RTIsCisgICAgMHhDMiwweDI4LDB4ODEsMHgyOCwweEY1LDB4RDYsMHhFQSwweEE4LDB4QTIsMHgy
OCwweDgxLDB4MjAsMHhGQSwweEFBLDB4MEEsMHgwQywKKyAgICAweEMyLDB4MzAsMHg2MSwweDIw
LDB4RTksMHg4QiwweDAyLDB4MDIsMHhFMywweDMwLDB4ODEsMHgyOCwweDdELDB4N0IsMHhFOCww
eEUwLAorICAgIDB4QzIsMHgyOCwweDYxLDB4MjAsMHhGNywweEJGLDB4QUEsMHg4QSwweEMyLDB4
MzAsMHhBMiwweDI4LDB4RDUsMHg3NSwweDhELDB4QzMsCisgICAgMHhDMiwweDMwLDB4QTIsMHgy
OCwweEJCLDB4MUYsMHhERCwweDdGLDB4QzIsMHgzMCwweEEyLDB4MjgsMHhGNSwweEUyLDB4Rjcs
MHhFNSwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4MkYsMHgwRiwweEJELDB4ODUsMHgwMyww
eDMxLDB4QzIsMHgzMCwweEFBLDB4MEEsMHgwQiwweDNELAorICAgIDB4MDMsMHgzMSwweEMzLDB4
MzAsMHhBQSwweDA4LDB4MkEsMHhCNywweDI0LDB4MzksMHhFMywweDMwLDB4NkIsMHhGQiwweEZG
LDB4RUQsCisgICAgMHgyNCwweDM5LDB4RTMsMHgzOCwweEJELDB4QkIsMHg5NywweDU1LDB4NDQs
MHg0MSwweEUzLDB4MzgsMHhGMywweEFBLDB4RUUsMHhGRCwKKyAgICAweDAzLDB4MzksMHhFMyww
eDMwLDB4QjUsMHgwQSwweDg4LDB4OEMsMHgyNCwweDQxLDB4QzMsMHgzMCwweEVGLDB4MkUsMHgy
RiwweEI3LAorICAgIDB4MjQsMHgzOSwweEMyLDB4MzAsMHhDOSwweEFFLDB4QjYsMHhFQSwweDAz
LDB4MzksMHhDMiwweDMwLDB4MUIsMHhGMiwweDIwLDB4MDAsCisgICAgMHgyMywweDM5LDB4RTIs
MHgzMCwweDc2LDB4QkYsMHgzRiwweEY4LDB4RTIsMHgzMCwweEMzLDB4MzAsMHgyMCwweDJELDB4
QjYsMHhBOCwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4N0EsMHhBQiwweEFGLDB4NkIsMHgw
MiwweDM5LDB4QzIsMHgzMCwweEFGLDB4MkUsMHhCNywweEZGLAorICAgIDB4MDMsMHgzOSwweEMy
LDB4MzAsMHgwRiwweEFBLDB4QUYsMHg3MywweDI0LDB4NDEsMHhDMiwweDMwLDB4QUEsMHgwRiww
eDBBLDB4QTcsCisgICAgMHg0MywweDQxLDB4RTMsMHgzOCwweEZGLDB4RUYsMHhGNiwweEY4LDB4
NDMsMHg0MSwweDAzLDB4NDEsMHhGRiwweDNELDB4MjYsMHhBNywKKyAgICAweDg1LDB4NTEsMHg0
NCwweDQ5LDB4MkYsMHg4QiwweDFGLDB4REYsMHg4NCwweDUxLDB4MjMsMHg0MSwweDVDLDB4RTgs
MHhFMywweEEyLAorICAgIDB4NDQsMHg0OSwweDAzLDB4NDEsMHhFMiwweEEyLDB4MkMsMHhCNCww
eDY0LDB4NDksMHgyMywweDQxLDB4REQsMHhFQiwweEFCLDB4QUIsCisgICAgMHg0NCwweDQ5LDB4
MDIsMHgzOSwweEZFLDB4RDcsMHhGQSwweEZDLDB4NDQsMHg0MSwweDAyLDB4NDEsMHg3RiwweEVG
LDB4QUIsMHg4QiwKKyAgICAweDQzLDB4NDEsMHhFMywweDM4LDB4QjIsMHhBQSwweDgyLDB4MEEs
MHg0NCwweDQxLDB4RTIsMHgzOCwweERCLDB4RkUsMHhBQSwweEUwLAorICAgIDB4NjQsMHg0OSww
eDAzLDB4MzksMHhENSwweEY1LDB4QkYsMHgyRCwweDY0LDB4NDksMHgyMywweDQxLDB4RjcsMHg1
NywweEZBLDB4RjAsCisgICAgMHg4NCwweDQ5LDB4MjIsMHg0MSwweDhELDB4QTcsMHgyOSwweEFC
LDB4NjQsMHg1MSwweDQzLDB4NDEsMHgzRSwweERFLDB4NkYsMHgyRiwKKyAgICAweEE1LDB4NTEs
MHg0NCwweDQ5LDB4QkIsMHhGOSwweEFCLDB4OEEsMHhDNSwweDU5LDB4ODQsMHg1MSwweDJELDB4
RjUsMHgwQiwweDBCLAorICAgIDB4NjgsMHg3MiwweEE0LDB4NTEsMHgyQiwweDJELDB4QUQsMHgz
RiwweEQxLDB4QkMsMHgwQSwweDgzLDB4MkYsMHgyRCwweEFELDB4QUQsCisgICAgMHg3MywweENE
LDB4OTAsMHhCNCwweDJBLDB4MkIsMHhFRCwweEZELDB4NzMsMHhDRCwweDExLDB4QkQsMHhFMiww
eDhCLDB4MkIsMHhBNSwKKyAgICAweDczLDB4Q0QsMHhCMCwweEFDLDB4N0EsMHhCOCwweEEwLDB4
ODAsMHgxMiwweEJELDB4NkYsMHhBQywweDc3LDB4NUYsMHhEQSwweDgwLAorICAgIDB4RjEsMHhC
QywweDRGLDB4QTQsMHg1RCwweEJGLDB4QUEsMHgwQSwweEQwLDB4QjQsMHgyRSwweEE0LDB4OUQs
MHhCRiwweEJBLDB4ODAsCisgICAgMHhEMCwweEI0LDB4MkUsMHg5QywweDdGLDB4QUEsMHhBMiww
eDA4LDB4RDAsMHhCNCwweDJFLDB4OUMsMHhENSwweEFBLDB4ODgsMHgwOCwKKyAgICAweEQwLDB4
QjQsMHgyRSwweDlDLDB4NzcsMHhGQSwweEE4LDB4ODAsMHhCMCwweEFDLDB4MEUsMHg5QywweDU1
LDB4RUEsMHhBOCwweDBBLAorICAgIDB4OEYsMHhBQywweDBELDB4OTQsMHhENywweEZBLDB4QTgs
MHhBQSwweDZGLDB4QTQsMHgyRSwweDlDLDB4RjYsMHhBQSwweEMwLDB4QkEsCisgICAgMHg2Riww
eEE0LDB4MEUsMHg5QywweEY1LDB4RTIsMHhFQSwweEZBLDB4NEYsMHhBNCwweEVELDB4OTMsMHg3
RSwweEZDLDB4QUUsMHhBMiwKKyAgICAweDZGLDB4QTQsMHgwRSwweDlDLDB4QkQsMHhBRCwweDhE
LDB4QUYsMHg2RiwweEE0LDB4MkUsMHhBNCwweDY4LDB4OTMsMHg4RSwweDc3LAorICAgIDB4NkYs
MHhBNCwweDBFLDB4OUMsMHhCQSwweEZGLDB4OEYsMHgzRCwweDJFLDB4QTQsMHhDQywweDkzLDB4
NUMsMHg2QSwweEVBLDB4ODAsCisgICAgMHgyRSwweEE0LDB4Q0MsMHg5MywweDI1LDB4M0QsMHg5
NSwweDE3LDB4OTAsMHhBQywweDJFLDB4QTQsMHhFQSwweDJBLDB4MjksMHhBQiwKKyAgICAweDQ0
LDB4NTEsMHgwMiwweDQ5LDB4QkMsMHhBQywweEU2LDB4QjUsMHgyMywweDQ5LDB4RTIsMHg0OCww
eDI4LDB4MDAsMHhGMCwweEYwLAorICAgIDB4NDMsMHg1MSwweDAyLDB4NDksMHgyRiwweEI2LDB4
NzcsMHg3NSwweDIzLDB4NTEsMHhFMiwweDQwLDB4QTgsMHhBRiwweDJELDB4MkQsCisgICAgMHgy
MywweDUxLDB4NDMsMHg0OSwweEEwLDB4MkEsMHgwQiwweDc4LDB4ODQsMHg1OSwweDIzLDB4NTEs
MHhENSwweDU1LDB4RDUsMHhEQywKKyAgICAweDYzLDB4NTksMHgwMiwweDQ5LDB4QUUsMHhFOCww
eEZBLDB4REEsMHg0MywweDUxLDB4MDIsMHg0OSwweDNFLDB4QjYsMHg1QSwweEUzLAorICAgIDB4
NjQsMHg1OSwweDAyLDB4NDksMHgyNSwweEZCLDB4QkYsMHhFRiwweDIzLDB4NTEsMHgwMiwweDQ5
LDB4QTIsMHhDMiwweEE4LDB4MkEsCisgICAgMHgyMywweDUxLDB4MDIsMHg0MSwweEYyLDB4NzIs
MHhGRiwweERGLDB4MjMsMHg0OSwweDAzLDB4NDksMHg1NSwweDE2LDB4MzgsMHgxNywKKyAgICAw
eDIzLDB4NDksMHgwMiwweDQ5LDB4NUEsMHhGMCwweDI4LDB4QTAsMHg0MywweDQ5LDB4MDMsMHg0
OSwweDU1LDB4NTUsMHgxNSwweEZCLAorICAgIDB4MjMsMHg0OSwweEUyLDB4NDgsMHhFMiwweEEy
LDB4QTgsMHhGMSwweDIzLDB4NDksMHhFMiwweDQ4LDB4QjksMHhCMywweEJBLDB4MkEsCisgICAg
MHhDOCwweDgyLDB4MDIsMHg0OSwweEY1LDB4QjUsMHgyRCwweDJGLDB4NEEsMHg5MywweEE3LDB4
N0EsMHhBOSwweDhCLDB4QTIsMHg4QSwKKyAgICAweDI5LDB4OEIsMHhDNywweDgyLDB4NzgsMHhE
OCwweDc4LDB4NUUsMHhFOCwweDgyLDB4QTcsMHg3QSwweEZBLDB4NTgsMHg2QSwweEFBLAorICAg
IDB4QTcsMHg3QSwweDY2LDB4NzIsMHgzQywweEUyLDB4MjIsMHgwMCwweEM3LDB4ODIsMHg2Niww
eDcyLDB4N0IsMHg2RiwweEFCLDB4QUYsCisgICAgMHhDNywweDgyLDB4NjYsMHg3QSwweEZCLDB4
RTksMHhFQSwweEZFLDB4QTcsMHg4MiwweDY2LDB4NzIsMHgzRSwweDM2LDB4REYsMHhCNiwKKyAg
ICAweEE3LDB4N0EsMHg4NywweDdBLDB4QkQsMHgzNSwweEZGLDB4REMsMHg4NywweDdBLDB4NjYs
MHg3MiwweDA4LDB4MjgsMHg4MCwweDAwLAorICAgIDB4QTgsMHg3QSwweDQ2LDB4NzIsMHhFQSww
eEIyLDB4RkUsMHhENywweDg2LDB4N0EsMHgyNSwweDZBLDB4ODMsMHhGQSwweEZBLDB4M0UsCisg
ICAgMHhFOCwweDhBLDB4NDYsMHg3MiwweERELDB4RUQsMHhBRiwweDJBLDB4NEEsMHg5MywweDQ3
LDB4NzIsMHhENSwweEI3LDB4MkUsMHgwMiwKKyAgICAweEFCLDB4QTMsMHhBOCwweDgyLDB4M0Qs
MHhBQiwweDhBLDB4MDAsMHhBQSwweEEzLDB4NDksMHg5MywweEFGLDB4OEEsMHhBMiwweDcyLAor
ICAgIDB4OEEsMHg5QiwweDI3LDB4NzIsMHgwMCwweDgwLDB4RTgsMHg3RSwweDQ5LDB4OTMsMHhD
NSwweDYxLDB4QTgsMHhGQSwweDVGLDB4NTUsCisgICAgMHg2NiwweDcyLDB4QzQsMHg2MSwweEY4
LDB4N0YsMHhGNywweERELDB4MDYsMHg2QSwweEM1LDB4NjEsMHhDRSwweEFELDB4QjUsMHhERiwK
KyAgICAweDI2LDB4NkEsMHhDNiwweDYxLDB4QUEsMHhBMywweEVBLDB4REUsMHgyNiwweDZBLDB4
MjMsMHg0OSwweDAwLDB4QTAsMHg3QSwweDVGLAorICAgIDB4RTUsMHg2MSwweDIzLDB4NDksMHhF
OCwweDVGLDB4NTUsMHg1NSwweDY0LDB4NTEsMHgyMywweDQ5LDB4N0EsMHg1QSwweDU1LDB4NTUs
CisgICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweEE5LDB4QkUsMHhBOCwweEFGLDB4NDMsMHg0OSww
eDIzLDB4NDEsMHgwMCwweDhFLDB4QzksMHhDQSwKKyAgICAweDY0LDB4NDksMHgyMywweDQ5LDB4
RjUsMHhFRCwweDVELDB4RjMsMHg0MywweDQ5LDB4MDMsMHg0MSwweENBLDB4NkIsMHhFRSwweEEy
LAorICAgIDB4NDMsMHg0OSwweEUyLDB4NDAsMHg3QSwweEJCLDB4RkEsMHhFOCwweDQzLDB4NDks
MHhFMiwweDQwLDB4NzIsMHhGQSwweDhGLDB4MkYsCisgICAgMHg4NSwweDUxLDB4MDMsMHg0MSww
eEFELDB4MDcsMHhBRiwweEFBLDB4ODUsMHg1MSwweDIzLDB4NDEsMHg3MCwweDZDLDB4RkIsMHhF
QSwKKyAgICAweDY1LDB4NDksMHhFMywweDM4LDB4MEIsMHhFQSwweEJBLDB4NUUsMHg0NCwweDQx
LDB4RTMsMHgzOCwweEQ4LDB4QUUsMHhBNywweERGLAorICAgIDB4MjQsMHg0MSwweEMyLDB4MzAs
MHgyOCwweEVBLDB4OEEsMHg1RSwweEUzLDB4MzAsMHg4MSwweDIwLDB4QTgsMHg0OCwweDdBLDB4
REYsCisgICAgMHhBMiwweDI4LDB4ODEsMHgyMCwweDgyLDB4MEIsMHg4QiwweEMyLDB4QTIsMHgy
OCwweDgxLDB4MjAsMHg1MCwweDU2LDB4NzYsMHhBMywKKyAgICAweEEyLDB4MjAsMHg4MSwweDIw
LDB4RTUsMHhFRiwweEJCLDB4RjAsMHhBMSwweDIwLDB4NjEsMHgxOCwweERBLDB4NUEsMHg1QSww
eDdBLAorICAgIDB4NDEsMHgyMCwweDYxLDB4MTgsMHhGRCwweERELDB4N0YsMHg3NywweDgxLDB4
MjAsMHg0MSwweDE4LDB4QUIsMHgzQiwweDJGLDB4MkIsCisgICAgMHhBMiwweDI4LDB4NjEsMHgx
OCwweEJGLDB4M0YsMHhBRiwweEFCLDB4RTMsMHgyOCwweDgyLDB4MjAsMHhBMywweEFCLDB4RkYs
MHhFNywKKyAgICAweDAzLDB4MzEsMHhBMiwweDI4LDB4OEYsMHhFRiwweEQ1LDB4NUYsMHgyNCww
eDM5LDB4QzIsMHgyOCwweEJGLDB4QkYsMHgwOSwweDg5LAorICAgIDB4MDMsMHgzMSwweEMyLDB4
MzAsMHhGOCwweDk4LDB4NUEsMHg1QywweDAzLDB4MzksMHhDMiwweDMwLDB4QUYsMHhGNywweEVF
LDB4ODMsCisgICAgMHhFMiwweDMwLDB4QTIsMHgyOCwweEZBLDB4NUEsMHg2RSwweEUwLDB4QzIs
MHgyOCwweDgxLDB4MjgsMHgyMiwweEFBLDB4OUYsMHhERSwKKyAgICAweDAzLDB4MzEsMHhDMiww
eDI4LDB4NTUsMHg5NSwweDlELDB4QjUsMHgwMywweDMxLDB4QzIsMHgyOCwweDU1LDB4RjUsMHhC
NiwweEFDLAorICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHhGRCwweEZBLDB4RkEsMHhCRSwweEUz
LDB4MzAsMHhBMiwweDI4LDB4N0EsMHg3QywweEVFLDB4QjYsCisgICAgMHhDMiwweDMwLDB4ODEs
MHgyOCwweDBCLDB4QUEsMHhGQSwweEY4LDB4RTMsMHgyOCwweDgxLDB4MjgsMHhGQiwweEZGLDB4
RkQsMHg3NSwKKyAgICAweEEyLDB4MjgsMHg4MSwweDI4LDB4MjAsMHgyMCwweDJBLDB4MEIsMHhB
MiwweDI4LDB4ODEsMHgyMCwweDAwLDB4QTAsMHhBMCwweEMyLAorICAgIDB4QzIsMHgyOCwweDgx
LDB4MjgsMHgwQiwweEFCLDB4QkYsMHhBRiwweDAzLDB4MzEsMHhBMiwweDI4LDB4M0YsMHhGRiww
eEZGLDB4N0QsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDM0LDB4QUUsMHhFQiwweERGLDB4
MDMsMHgzOSwweEEyLDB4MjgsMHhBQSwweEJGLDB4RkYsMHhERCwKKyAgICAweEUzLDB4MzAsMHhB
MiwweDI4LDB4MDIsMHhBNywweEFELDB4QjYsMHgyNCwweDM5LDB4QzIsMHgzMCwweEFGLDB4OEQs
MHg4RiwweEU1LAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzgsMHhFRiwweEVCLDB4RUIsMHg3Riww
eDAzLDB4MzksMHhDMiwweDMwLDB4RkYsMHhEQSwweEZBLDB4RkYsCisgICAgMHgyNCwweDM5LDB4
QzIsMHgzMCwweEFCLDB4MkYsMHhCRiwweEJGLDB4MjMsMHgzOSwweEUzLDB4MzgsMHgyQiwweDNB
LDB4M0UsMHhGRSwKKyAgICAweDIzLDB4MzksMHhFMiwweDMwLDB4QjAsMHhBMCwweEVBLDB4RkEs
MHgyMywweDM5LDB4QzIsMHgzMCwweEZFLDB4RjgsMHhGRSwweEZCLAorICAgIDB4MDMsMHgzOSww
eEMxLDB4MzAsMHhCNywweDJCLDB4QjMsMHhBQSwweDIzLDB4NDEsMHhDMiwweDMwLDB4QUYsMHhB
RSwweDI5LDB4OEIsCisgICAgMHgyMywweDQxLDB4QzIsMHgzMCwweDUyLDB4NzgsMHhBQywweEE4
LDB4MDMsMHgzOSwweEEyLDB4MzAsMHgyQiwweDhGLDB4RkEsMHhGMiwKKyAgICAweDI0LDB4NDEs
MHhFMywweDM4LDB4RkEsMHg3QSwweDdGLDB4RjcsMHg2NCwweDQ5LDB4MDMsMHg0MSwweEI1LDB4
MjUsMHgzNSwweDA1LAorICAgIDB4ODUsMHg1MSwweDIzLDB4NDEsMHhFRiwweEZFLDB4NUMsMHg1
RiwweDg0LDB4NTEsMHgyMywweDQxLDB4QTIsMHgyQiwweEZGLDB4NzUsCisgICAgMHg0NCwweDQ5
LDB4MDMsMHg0MSwweDJDLDB4QjQsMHhCNCwweEY2LDB4NDQsMHg0MSwweDAzLDB4NDEsMHgyMCww
eDAwLDB4MjgsMHgyRiwKKyAgICAweDQzLDB4NDEsMHhFMywweDM4LDB4QTIsMHhBQSwweDg2LDB4
RkUsMHg0NCwweDQxLDB4MDMsMHg0MSwweDhBLDB4RUYsMHgzRiwweEQ3LAorICAgIDB4NDQsMHg0
MSwweDAzLDB4MzksMHgyRSwweEJFLDB4RjQsMHhGNiwweDY0LDB4NDksMHgwMywweDQxLDB4NDIs
MHg4MiwweDAzLDB4RUQsCisgICAgMHhBNSwweDUxLDB4MDMsMHg0MSwweDJELDB4QUYsMHhFRiww
eEY1LDB4ODUsMHg1MSwweDIzLDB4NDEsMHhBQSwweDg4LDB4RTIsMHhGOSwKKyAgICAweEE1LDB4
NTEsMHg0MywweDQxLDB4QkYsMHgyRSwweDJGLDB4QTUsMHhDNSwweDUxLDB4NjQsMHg0OSwweEQ1
LDB4RUEsMHgwQSwweDhBLAorICAgIDB4RTUsMHg1OSwweDg0LDB4NTEsMHhFRCwweDNELDB4OEIs
MHgwQSwweDI2LDB4NjIsMHhDNSwweDU5LDB4REQsMHhCRSwweEZCLDB4MzUsCisgICAgMHg0Nyww
eDZBLDB4QzUsMHg1OSwweDNGLDB4QUYsMHhCNiwweEI3LDB4MEUsMHhBNCwweDY3LDB4NkEsMHgw
RiwweDBGLDB4MjksMHgwRCwKKyAgICAweEQxLDB4QkMsMHg0RiwweEFDLDB4MEIsMHgyRCwweEFE
LDB4RkQsMHgzMiwweEJELDB4QjAsMHhCNCwweDJGLDB4M0YsMHhGNSwweEQ1LAorICAgIDB4NzMs
MHhDNSwweEYxLDB4QkMsMHg4QSwweEJBLDB4RDcsMHhENSwweDUzLDB4QzUsMHgxMSwweEJELDB4
RkUsMHgyQSwweDJGLDB4MzcsCisgICAgMHg3MywweENELDB4MTEsMHhCRCwweDc1LDB4QUYsMHhB
QSwweDgwLDB4NzMsMHhDNSwweEYwLDB4QjQsMHg1NywweDdFLDB4QUEsMHgyMiwKKyAgICAweDUy
LDB4QzUsMHhBRiwweEFDLDB4NUQsMHg1RSwweDVFLDB4N0MsMHhEMCwweEI0LDB4OEYsMHhBQyww
eDJCLDB4OEIsMHgzRiwweDE1LAorICAgIDB4RDAsMHhCNCwweDZGLDB4QUMsMHhCMiwweEJBLDB4
RjgsMHg3QSwweEIwLDB4QUMsMHg0RSwweEE0LDB4RTgsMHhFMCwweEZBLDB4NTYsCisgICAgMHg4
RiwweEFDLDB4MkUsMHhBNCwweEJBLDB4QUIsMHhFQSwweDdELDB4NkYsMHhBNCwweDJFLDB4QTQs
MHgzRiwweEVBLDB4QTksMHgyOSwKKyAgICAweDkwLDB4QUMsMHgyRSwweDlDLDB4N0IsMHg3RSww
eEFBLDB4MjgsMHg2RiwweEFDLDB4RUQsMHg5QiwweEZGLDB4NUYsMHhFRSwweEIwLAorICAgIDB4
NEYsMHhBNCwweDBFLDB4OUMsMHgzQiwweEVBLDB4REUsMHg1NiwweDRGLDB4QTQsMHgwRCwweDlD
LDB4MzgsMHgzQywweDIzLDB4RkIsCisgICAgMHg0RSwweEE0LDB4MEUsMHg5QywweDBBLDB4MEEs
MHhFQiwweDdGLDB4NkYsMHhBQywweDBELDB4OUMsMHg2OCwweEVBLDB4QkYsMHhGRiwKKyAgICAw
eDJFLDB4QTQsMHhDRCwweDkzLDB4MzYsMHhCOCwweEFDLDB4RTAsMHg4RiwweEFDLDB4MkUsMHg5
QywweEFCLDB4MEQsMHgzOSwweDI1LAorICAgIDB4MjMsMHg0OSwweEUyLDB4NDgsMHg5QywweEMz
LDB4NkIsMHgyRiwweDIzLDB4NDksMHhFMiwweDQwLDB4QjgsMHgyMywweEZFLDB4RUEsCisgICAg
MHgyMywweDUxLDB4RTIsMHg0MCwweEZFLDB4RkYsMHg5RCwweDNELDB4NDMsMHg1MSwweEUyLDB4
NDgsMHhBRCwweDJCLDB4QUIsMHg4OCwKKyAgICAweDYzLDB4NTEsMHgyMywweDUxLDB4RkEsMHgx
NiwweDRGLDB4NkQsMHg2NCwweDU5LDB4MjMsMHg1MSwweEZFLDB4NjcsMHhFRiwweEVFLAorICAg
IDB4NjMsMHg1OSwweDAzLDB4NDksMHhGNywweEZGLDB4N0EsMHhFOCwweDQzLDB4NTEsMHgwMiww
eDQ5LDB4QjAsMHhFMCwweEJBLDB4QTksCisgICAgMHg0MywweDUxLDB4RTEsMHg0MCwweEUyLDB4
RUEsMHhBMiwweEY4LDB4MjMsMHg1MSwweDAyLDB4NDksMHg2OSwweDBBLDB4MkQsMHg1RCwKKyAg
ICAweDQzLDB4NTEsMHhFMiwweDQwLDB4REUsMHhGRiwweDJFLDB4QkUsMHgwMiwweDQ5LDB4RTIs
MHg0MCwweEJDLDB4MjgsMHgzOCwweEIwLAorICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHhCMCww
eDBBLDB4MEEsMHhCRSwweDAzLDB4NDksMHgyMiwweDQxLDB4MEEsMHgwOCwweDhBLDB4QTAsCisg
ICAgMHgyMywweDQ5LDB4QzIsMHg0MCwweEJFLDB4QUYsMHgzRiwweDk3LDB4NDcsMHg3MiwweDAy
LDB4NDksMHhENSwweEY1LDB4QjUsMHgyRCwKKyAgICAweDI5LDB4OEIsMHhBNCwweDYxLDB4MkQs
MHgwQiwweDAyLDB4MDAsMHg0QSwweDkzLDB4QzgsMHg4MiwweEFBLDB4RUEsMHg3RSwweERDLAor
ICAgIDB4MDksMHg4QiwweEM4LDB4ODIsMHg3OCwweEFGLDB4RUYsMHg3NywweEU4LDB4ODIsMHhB
NywweDgyLDB4QUEsMHg1OCwweDVCLDB4RkIsCisgICAgMHhFOCwweDgyLDB4ODcsMHg3QSwweDdF
LDB4RkIsMHhGMiwweDgwLDB4QzgsMHg4MiwweDg3LDB4N0EsMHhGRSwweDZBLDB4NDIsMHhBQiwK
KyAgICAweEM4LDB4ODIsMHg4NywweDdBLDB4REYsMHg3RiwweDVCLDB4RjgsMHhDOCwweDgyLDB4
ODcsMHg3QSwweDU1LDB4RDUsMHhBRiwweEJCLAorICAgIDB4QzcsMHg3QSwweDY2LDB4N0EsMHhC
QSwweEEyLDB4NkEsMHg3QSwweEE3LDB4N0EsMHg0NiwweDcyLDB4RTIsMHhGQSwweEZCLDB4N0Es
CisgICAgMHg2NiwweDdBLDB4NDYsMHg3MiwweDc1LDB4NTYsMHhEOCwweDFFLDB4NkIsMHg5Qiww
eDQ1LDB4NzIsMHhENSwweEY1LDB4QkQsMHgyQiwKKyAgICAweEFCLDB4QTMsMHhDNywweDgyLDB4
QjUsMHhBRiwweDJBLDB4MDAsMHhDQiwweEEzLDB4NkEsMHg5QiwweEE5LDB4OEIsMHgyOCwweEE4
LAorICAgIDB4QUIsMHhBMywweDA5LDB4OEIsMHg4OCwweEEwLDB4RTgsMHg1OCwweDZBLDB4OUIs
MHhFNSwweDY5LDB4ODAsMHhFMCwweDc4LDB4NUYsCisgICAgMHg4NywweDdBLDB4QTUsMHg2MSww
eEY4LDB4NUUsMHhENSwweDU3LDB4RTYsMHg2OSwweEE1LDB4NjEsMHg3MiwweDdFLDB4RkEsMHhF
RiwKKyAgICAweEU2LDB4NjEsMHhBNCwweDYxLDB4NUUsMHg5RiwweEE5LDB4MkEsMHgyNiwweDZB
LDB4ODMsMHg1OSwweEY3LDB4QkYsMHhBQSwweENBLAorICAgIDB4RTUsMHg2MSwweDQzLDB4NTEs
MHhFOCwweEY4LDB4N0EsMHhGQiwweDY0LDB4NTEsMHgwMywweDQxLDB4RkMsMHhGNiwweEZBLDB4
OEEsCisgICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweDVELDB4NTcsMHhCRiwweDJGLDB4NjQsMHg0
OSwweDAzLDB4NDEsMHhFRCwweDgyLDB4MjAsMHhCMCwKKyAgICAweDY0LDB4NDksMHgyMywweDQx
LDB4RUYsMHhFQiwweDdDLDB4RkUsMHg0MywweDQ5LDB4MDMsMHg0MSwweDhDLDB4RUEsMHhCQSww
eEM2LAorICAgIDB4NDQsMHg0OSwweDAzLDB4NDEsMHhBQSwweENBLDB4N0IsMHg1RCwweDQzLDB4
NDEsMHgwMywweDQxLDB4RkEsMHhGQSwweDc5LDB4N0YsCisgICAgMHg0MywweDQ5LDB4MDMsMHg0
MSwweDdBLDB4RkUsMHg1RiwweERELDB4NDQsMHg0OSwweEUzLDB4MzgsMHgyNywweEFCLDB4RUYs
MHhCRSwKKyAgICAweDY0LDB4NDksMHgwMywweDQxLDB4MEEsMHhBQSwweEE5LDB4OEIsMHg4NSww
eDUxLDB4MjMsMHg0MSwweEYwLDB4RkYsMHhGNywweDU1LAorICAgIDB4MjMsMHg0MSwweEMzLDB4
MzAsMHhGOCwweEFBLDB4QTgsMHg3QywweDAzLDB4MzksMHhBMiwweDMwLDB4MkEsMHhBOCwweEJF
LDB4RDcsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEVDLDB4RkUsMHg3QSwweEMwLDB4QTIs
MHgyOCwweDYxLDB4MjAsMHhBOCwweEZBLDB4RjgsMHhGQSwKKyAgICAweEExLDB4MjAsMHg2MCww
eDIwLDB4ODIsMHgwMiwweDI5LDB4QUIsMHhDMiwweDI4LDB4ODEsMHgyMCwweEUyLDB4NzUsMHhG
NywweDU1LAorICAgIDB4QTIsMHgyMCwweDgxLDB4MjAsMHhGMCwweDdCLDB4NTgsMHg1NywweDgx
LDB4MjAsMHg2MSwweDE4LDB4RTgsMHhBQywweEFBLDB4Q0YsCisgICAgMHhBMiwweDIwLDB4NDEs
MHgxOCwweEZFLDB4QkUsMHhBNywweDJGLDB4QTIsMHgyMCwweDYxLDB4MjAsMHhBRiwweEJBLDB4
QTAsMHgwMCwKKyAgICAweEEyLDB4MjgsMHg4MSwweDIwLDB4MzUsMHhFRCwweENBLDB4MDgsMHhF
MywweDMwLDB4QTIsMHgyOCwweEY1LDB4RTUsMHgzRCwweDJBLAorICAgIDB4MDMsMHgzMSwweEEy
LDB4MjgsMHg3RiwweDdGLDB4NzgsMHhFMCwweDI0LDB4MzksMHhBMiwweDI4LDB4MEYsMHgwOSww
eDA5LDB4MkYsCisgICAgMHg0NCwweDQxLDB4QzIsMHgzMCwweDVDLDB4NTgsMHhGQywweDVDLDB4
MDMsMHgzOSwweEMyLDB4MzAsMHg4MSwweDgwLDB4OEEsMHhGQSwKKyAgICAweDAzLDB4MzksMHhB
MiwweDI4LDB4NUEsMHhGQSwweEZBLDB4RkUsMHhDMiwweDMwLDB4ODEsMHgyOCwweDVCLDB4N0Us
MHhCRiwweEFBLAorICAgIDB4RTIsMHgzMCwweDgxLDB4MjAsMHgyNSwweDhCLDB4QkYsMHhGRiww
eDAzLDB4MzEsMHhBMSwweDI4LDB4QUUsMHgyRSwweDlELDB4RDUsCisgICAgMHhFMiwweDMwLDB4
QTIsMHgyOCwweDIyLDB4QTAsMHhGQSwweDdFLDB4QzIsMHgzMCwweEEyLDB4MjgsMHgyQSwweDJB
LDB4RUUsMHhCRSwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4NUYsMHg1RiwweDdBLDB4NUEs
MHhBMiwweDI4LDB4ODIsMHgyMCwweEYyLDB4NjAsMHhDMCwweDAwLAorICAgIDB4QTIsMHgyOCww
eDgxLDB4MjAsMHgyRSwweDlFLDB4N0YsMHhDQiwweEMyLDB4MjgsMHg4MSwweDIwLDB4RUIsMHg4
RiwweDg5LDB4QTMsCisgICAgMHhDMiwweDI4LDB4QTIsMHgyOCwweEY3LDB4NkQsMHhDOSwweEU5
LDB4QzEsMHgyOCwweDgyLDB4MjgsMHhBQSwweERBLDB4RkUsMHhGRSwKKyAgICAweEUzLDB4MzAs
MHhBMiwweDI4LDB4NTcsMHg3RiwweDZCLDB4NTksMHhDMiwweDMwLDB4QTIsMHgyOCwweEFCLDB4
QUYsMHhDOSwweDg4LAorICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHhBQywweEFDLDB4QUIsMHg4
QiwweEUyLDB4MzgsMHhBMiwweDI4LDB4QUIsMHgzRiwweEJGLDB4QkYsCisgICAgMHgwMywweDM5
LDB4QzIsMHgzMCwweEFBLDB4NUYsMHg3RiwweDU1LDB4RTMsMHgzOCwweEEyLDB4MzAsMHg4OCww
eEVBLDB4REEsMHhGRiwKKyAgICAweEUzLDB4MzgsMHhDMiwweDMwLDB4M0UsMHg1OSwweEZGLDB4
NkQsMHgwMywweDM5LDB4QzIsMHgzMCwweEYyLDB4QjIsMHhCNSwweDBELAorICAgIDB4MjMsMHgz
OSwweEUzLDB4MzgsMHg4RiwweEI3LDB4RkUsMHg4RiwweDIzLDB4MzksMHhDMywweDMwLDB4Rjgs
MHhBQSwweEJFLDB4RUIsCisgICAgMHgwMiwweDQxLDB4RTMsMHgzMCwweDU1LDB4N0YsMHhERiww
eEZELDB4MjMsMHg0MSwweEUyLDB4MzAsMHgwOSwweDJGLDB4M0YsMHhBRiwKKyAgICAweDI0LDB4
NDEsMHhFMiwweDM4LDB4RTgsMHhFQywweDc3LDB4NEQsMHgwMywweDM5LDB4QzIsMHgzMCwweEFD
LDB4RTcsMHg2QiwweDdGLAorICAgIDB4MjMsMHg0MSwweEMyLDB4MzAsMHhBQSwweDJGLDB4M0Qs
MHhENSwweDY0LDB4NDksMHhFMywweDM4LDB4MkYsMHhBQSwweDAzLDB4MEYsCisgICAgMHhBNSww
eDUxLDB4NDMsMHg0MSwweDVCLDB4NjAsMHhGRSwweEFBLDB4NjQsMHg0OSwweDAzLDB4NDEsMHhG
QiwweERBLDB4QTgsMHhCQywKKyAgICAweDQ0LDB4NDksMHhDMiwweDM4LDB4QUYsMHhGRSwweEQ0
LDB4RkEsMHg0NCwweDQxLDB4RTIsMHgzOCwweDJCLDB4MkYsMHhFRiwweDdGLAorICAgIDB4NDQs
MHg0MSwweEMyLDB4MzgsMHhGQywweDVFLDB4RjcsMHhFRiwweDAzLDB4MzksMHhDMiwweDM4LDB4
QkEsMHhGRiwweDdBLDB4RTIsCisgICAgMHgyNCwweDQxLDB4RTMsMHgzOCwweEVBLDB4N0YsMHhE
RCwweEZGLDB4MjMsMHg0MSwweEUzLDB4MzgsMHg4OSwweDVELDB4NUYsMHhDRCwKKyAgICAweDAz
LDB4MzksMHhDMiwweDMwLDB4OEEsMHhGRiwweEZGLDB4QUEsMHg0MywweDQxLDB4RTIsMHgzOCww
eDM3LDB4MjcsMHhFRCwweEFELAorICAgIDB4NjQsMHg0OSwweDAyLDB4NDEsMHhBOCwweEVCLDB4
RUYsMHhGNSwweEE0LDB4NTEsMHgyMywweDQxLDB4OEIsMHgyRSwweDdCLDB4REYsCisgICAgMHhD
NSwweDUxLDB4NDMsMHg0MSwweDJBLDB4QUYsMHhFQiwweDVELDB4RTYsMHg2MSwweDYzLDB4NDks
MHgwQSwweEFBLDB4RkYsMHhENSwKKyAgICAweEU2LDB4NjEsMHg0MywweDQ5LDB4MjAsMHhCQiww
eERGLDB4REYsMHhFRCwweDlCLDB4MDYsMHg2MiwweDJGLDB4MjksMHgyRCwweDJELAorICAgIDB4
OEYsMHhBQywweEVELDB4OUIsMHgwQiwweEFBLDB4QTksMHhBQiwweEQwLDB4QjQsMHg0RSwweEFD
LDB4MkUsMHhBRiwweDM3LDB4REQsCisgICAgMHhGMSwweEJDLDB4OTAsMHhBQywweDAwLDB4MDAs
MHhBQiwweEJELDB4NTIsMHhDNSwweEIwLDB4QjQsMHgyRSwweDlGLDB4NTcsMHhGQiwKKyAgICAw
eDczLDB4Q0QsMHhGMSwweEI0LDB4ODIsMHgwMiwweEFELDB4QjUsMHg3MywweEM1LDB4MzIsMHhD
NSwweEZELDB4RDYsMHg3RSwweEE5LAorICAgIDB4NTIsMHhDNSwweEIwLDB4QjQsMHg1QSwweDdB
LDB4RTgsMHhBOCwweEYxLDB4QkMsMHg2RiwweEFDLDB4RjcsMHhENywweEZFLDB4NTgsCisgICAg
MHg5MCwweEFDLDB4NEYsMHhBNCwweDBGLDB4RkEsMHg2QSwweEY4LDB4OEYsMHhBQywweDJFLDB4
QTQsMHhFQSwweDZGLDB4NkEsMHgzQSwKKyAgICAweDZGLDB4QUMsMHgwRSwweDlDLDB4RkYsMHhG
RCwweEFFLDB4QTgsMHg0RSwweEE0LDB4MEQsMHg5QywweDJBLDB4NzIsMHhGQSwweEEwLAorICAg
IDB4OTAsMHhBQywweDJFLDB4QTQsMHgyRSwweEEzLDB4QTUsMHhCRiwweDkwLDB4QUMsMHgwRCww
eDlDLDB4OUEsMHg4MiwweDBBLDB4MEEsCisgICAgMHg5MCwweEFDLDB4MkUsMHg5QywweDVGLDB4
RkIsMHhBMiwweEE4LDB4NkYsMHhBQywweDBELDB4OUMsMHhFRiwweERFLDB4REUsMHhCQywKKyAg
ICAweDRFLDB4QTQsMHgwRSwweDlDLDB4RkYsMHhFRSwweEE4LDB4MDAsMHg0RiwweEE0LDB4RUQs
MHg5QiwweDJBLDB4OEEsMHhDRSwweDYwLAorICAgIDB4NEUsMHhBNCwweDBFLDB4OUMsMHg3Riww
eDVGLDB4QjgsMHgzRiwweDZGLDB4QUMsMHgwRSwweDlDLDB4MDksMHgyOSwweEE5LDB4QUQsCisg
ICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweEEzLDB4MzUsMHhGRSwweEY2LDB4NDMsMHg1MSwweEMy
LDB4NDAsMHhGQSwweERFLDB4QUQsMHgyQiwKKyAgICAweDQzLDB4NTEsMHhFMiwweDQwLDB4QUQs
MHgzRiwweDBCLDB4MDIsMHg2NCwweDU5LDB4MjMsMHg1MSwweEJELDB4OEEsMHgyQSwweEFCLAor
ICAgIDB4ODQsMHg1OSwweDAyLDB4NDksMHhGRSwweEY2LDB4RkMsMHhFQSwweDY0LDB4NTEsMHgy
MiwweDUxLDB4QkYsMHhCNywweDE1LDB4RjcsCisgICAgMHg2MywweDU5LDB4MjMsMHg1MSwweEQw
LDB4QjgsMHhEQSwweEZGLDB4NDMsMHg1MSwweDIzLDB4NDksMHg1MywweDYzLDB4NjgsMHg3RSwK
KyAgICAweDIzLDB4NDksMHgwMywweDQ5LDB4QjgsMHhBRiwweDMxLDB4QUYsMHgyMywweDQ5LDB4
MDIsMHg0OSwweEQ3LDB4OTcsMHgyNCwweDhDLAorICAgIDB4MjMsMHg0OSwweEUyLDB4NDgsMHg5
MCwweEEyLDB4QTgsMHhBQSwweDIzLDB4NDksMHhFMiwweDQwLDB4NzYsMHhCQSwweEEyLDB4MEEs
CisgICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweEYzLDB4RjIsMHhGMCwweEI4LDB4NDQsMHg1MSww
eEUyLDB4NDAsMHhENywweEZGLDB4Q0YsMHhFOCwKKyAgICAweEE0LDB4NTksMHgwMywweDQ5LDB4
NTUsMHg1NSwweEQ1LDB4MTUsMHhBQywweEEzLDB4NDMsMHg1MSwweEE1LDB4MkYsMHg4MywweDBB
LAorICAgIDB4NDksMHg5MywweDA4LDB4OEIsMHg1QiwweDVFLDB4NUUsMHg1NiwweDA4LDB4OEIs
MHhDOCwweDgyLDB4RDgsMHhEQSwweDAyLDB4MDMsCisgICAgMHhFOCwweDhBLDB4QzgsMHg4Miww
eEZFLDB4RkUsMHg0MCwweDZCLDB4QzcsMHg4MiwweEE3LDB4ODIsMHhDMCwweDg4LDB4QzksMHhF
RSwKKyAgICAweEM3LDB4ODIsMHhBNywweDdBLDB4MDAsMHhFQywweEY5LDB4MUEsMHhDNywweDgy
LDB4ODcsMHg3QSwweDFCLDB4ODgsMHhBMCwweDAwLAorICAgIDB4QzcsMHg4MiwweDg2LDB4N0Es
MHhFRiwweDlFLDB4REEsMHhEQywweEU3LDB4ODIsMHg4NiwweDdBLDB4RjcsMHg3NywweDU0LDB4
NUYsCisgICAgMHhBNywweDgyLDB4NDUsMHg3QSwweEU4LDB4RkIsMHg3RiwweEZFLDB4RTgsMHg4
QSwweDQ1LDB4NzIsMHg1NSwweEY1LDB4QkYsMHgyRiwKKyAgICAweEFCLDB4QTMsMHg2NiwweDdB
LDB4RDUsMHhCNSwweDJCLDB4MDIsMHhDQiwweEEzLDB4MjksMHg5MywweEE1LDB4QTMsMHgwMCww
eDAwLAorICAgIDB4Q0IsMHhBMywweDZBLDB4OUIsMHgyQiwweDBBLDB4MDIsMHg3OCwweENCLDB4
QTMsMHhBNywweDdBLDB4ODAsMHhBMCwweEU4LDB4NUUsCisgICAgMHg0OSwweDkzLDB4MDYsMHg2
QSwweEUwLDB4N0UsMHg1RiwweDU3LDB4MjcsMHg3MiwweDg0LDB4NTksMHhBOCwweEVFLDB4RkUs
MHg1RSwKKyAgICAweEM1LDB4NjEsMHg2NCwweDU5LDB4MjgsMHhFOCwweEFCLDB4QTcsMHgwNiww
eDZBLDB4QTQsMHg1OSwweEVGLDB4QkQsMHg5RCwweDM1LAorICAgIDB4MDYsMHg2QSwweEM1LDB4
NjEsMHgwQiwweDZBLDB4N0IsMHg1OCwweDA2LDB4NkEsMHhBNSwweDU5LDB4QzgsMHhFQSwweDZB
LDB4NUMsCisgICAgMHhBNSwweDU5LDB4NDQsMHg0OSwweDQ4LDB4RkMsMHhFQywweDdDLDB4NjQs
MHg1MSwweDQ0LDB4NDksMHhBRCwweEYyLDB4RDAsMHhGNSwKKyAgICAweDY0LDB4NDksMHgyMyww
eDQ5LDB4RkEsMHg1QywweEY3LDB4QUUsMHg2NCwweDQ5LDB4RTIsMHg0MCwweEFBLDB4QUIsMHhB
RSwweEZDLAorICAgIDB4NDMsMHg0OSwweDAzLDB4NDEsMHhBQSwweEFBLDB4RUEsMHg3QSwweDQz
LDB4NDksMHgwMiwweDQxLDB4MEEsMHhDQiwweEVCLDB4RkEsCisgICAgMHg0MywweDQ5LDB4MDMs
MHg0MSwweDVBLDB4RUYsMHhGRiwweDdGLDB4MjQsMHg0OSwweEUzLDB4NDAsMHg4RSwweEVGLDB4
QUYsMHhBRiwKKyAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4OUYsMHhBRSwweDNBLDB4RkUsMHg0
MywweDQxLDB4RTMsMHg0MCwweDFGLDB4QjcsMHhCRiwweEVGLAorICAgIDB4NjQsMHg0OSwweDAz
LDB4NDEsMHhDMiwweEUyLDB4RkIsMHhGQSwweDQ0LDB4NDksMHhFMiwweDM4LDB4RjgsMHhGQyww
eDVFLDB4NzUsCisgICAgMHgwMywweDM5LDB4QTIsMHgzMCwweEY4LDB4QjgsMHhEQiwweEZELDB4
QzIsMHgzMCwweEEyLDB4MzAsMHgzRSwweDNFLDB4MkMsMHg4QSwKKyAgICAweEUzLDB4MzAsMHhD
MiwweDMwLDB4RUIsMHhERiwweDg5LDB4ODMsMHhDMiwweDI4LDB4NjEsMHgyMCwweEZFLDB4RDgs
MHhEOCwweEY4LAorICAgIDB4ODEsMHgyMCwweDYxLDB4MTgsMHgwMCwweDI4LDB4MjgsMHhBMCww
eDgxLDB4MjAsMHg2MSwweDE4LDB4MjgsMHhBOCwweEFBLDB4Q0IsCisgICAgMHg4MSwweDIwLDB4
NjEsMHgxOCwweDgwLDB4RTgsMHhGRiwweDU1LDB4ODIsMHgyMCwweDYxLDB4MTgsMHhFQiwweDJC
LDB4ODksMHgzNSwKKyAgICAweDgyLDB4MjAsMHg2MSwweDE4LDB4MEEsMHgwRiwweDI4LDB4MDgs
MHhBMiwweDI4LDB4ODIsMHgxOCwweDIyLDB4MDEsMHgwMiwweDgyLAorICAgIDB4QTIsMHgyOCww
eDgyLDB4MjAsMHgwQSwweDhCLDB4QUYsMHhGQSwweEUzLDB4MzAsMHg4MSwweDI4LDB4MjgsMHhB
MiwweEZGLDB4OTcsCisgICAgMHgwMywweDMxLDB4QTIsMHgyOCwweDgwLDB4OEYsMHg4RCwweEFG
LDB4MjQsMHgzOSwweEMyLDB4MzAsMHgzNSwweEI3LDB4QjUsMHg1NSwKKyAgICAweDAzLDB4Mzks
MHhBMiwweDI4LDB4RjAsMHhGMCwweDdFLDB4REEsMHhFMiwweDM4LDB4QTIsMHgzMCwweEYyLDB4
RTIsMHhFQiwweDYwLAorICAgIDB4MDQsMHgzOSwweEEyLDB4MjgsMHhGRSwweEVBLDB4OEYsMHhC
NSwweDAzLDB4MzksMHhBMiwweDI4LDB4RkYsMHhFRiwweEEyLDB4QTIsCisgICAgMHgwMiwweDMx
LDB4ODAsMHgyOCwweDdGLDB4N0UsMHhCOCwweEE4LDB4QzIsMHgzMCwweEExLDB4MjgsMHg5RCww
eEQ1LDB4N0YsMHhFOCwKKyAgICAweEMyLDB4MjgsMHg4MSwweDIwLDB4RjgsMHhFRSwweDdBLDB4
RTAsMHhFMywweDI4LDB4ODEsMHgyOCwweEZGLDB4RkYsMHhCNSwweEY1LAorICAgIDB4QzIsMHgy
OCwweDgyLDB4MjAsMHhFMCwweDY4LDB4NkEsMHhBRSwweEMyLDB4MzAsMHhBMiwweDI4LDB4RDUs
MHhCNSwweEU1LDB4QTksCisgICAgMHhDMiwweDMwLDB4QTIsMHgyOCwweDc1LDB4NTUsMHhCRCww
eEZFLDB4RTMsMHgzMCwweDgxLDB4MjgsMHhGRiwweEY3LDB4QkYsMHg4QiwKKyAgICAweEMyLDB4
MzAsMHhBMiwweDI4LDB4NzUsMHhGNCwweEUwLDB4NUYsMHhDMiwweDI4LDB4ODEsMHgyMCwweEY2
LDB4OEYsMHg4MiwweEVBLAorICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHgyQiwweEFBLDB4ODEs
MHhEQiwweEUzLDB4MzAsMHhBMiwweDI4LDB4RkIsMHgyRiwweDNBLDB4NTYsCisgICAgMHhFMiww
eDMwLDB4QTIsMHgyOCwweEVGLDB4RjUsMHgzNywweEFGLDB4MDMsMHgzOSwweEMyLDB4MzAsMHg1
NSwweDY1LDB4Q0IsMHhBRiwKKyAgICAweEUyLDB4MzAsMHhBMiwweDI4LDB4QkIsMHhGNSwweEVG
LDB4RjgsMHhFMiwweDMwLDB4QTIsMHgzMCwweEZGLDB4QUEsMHhBMywweEE4LAorICAgIDB4MDMs
MHgzOSwweEMyLDB4MzAsMHhFOSwweEY5LDB4N0YsMHhERCwweDQ0LDB4NDEsMHhDMiwweDMwLDB4
QjUsMHgzRCwweDJGLDB4QkYsCisgICAgMHg0NCwweDQxLDB4MDMsMHgzOSwweDZGLDB4QUEsMHg4
RSwweDA5LDB4NDQsMHg0MSwweEUzLDB4MzgsMHhGQiwweDZCLDB4RUEsMHhFMiwKKyAgICAweDAz
LDB4MzksMHhDMiwweDMwLDB4QUIsMHg4NywweDNGLDB4QkIsMHgyMywweDM5LDB4MDIsMHgzOSww
eEU5LDB4NjksMHg1OSwweDQyLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHg2OCwweEI4LDB4
MEUsMHhBQywweDAzLDB4MzksMHhDMiwweDMwLDB4REYsMHhCRSwweDlDLDB4Q0MsCisgICAgMHgw
MywweDM5LDB4QTIsMHgzMCwweDdELDB4RjcsMHhFQiwweEYzLDB4NjQsMHg0OSwweEMyLDB4MzAs
MHgwRCwweDNELDB4MkQsMHgyRiwKKyAgICAweEM1LDB4NTksMHg2NCwweDQ5LDB4NzMsMHhFOCww
eEVCLDB4OEUsMHg4NSwweDUxLDB4MDMsMHg0MSwweERBLDB4N0EsMHhEMCwweEE4LAorICAgIDB4
MjQsMHg0MSwweEMyLDB4MzgsMHhBMCwweDgyLDB4NjAsMHhFQSwweDAzLDB4MzksMHhDMiwweDMw
LDB4RTAsMHhFMiwweEE5LDB4MjUsCisgICAgMHgwMywweDQxLDB4RTIsMHgzMCwweDM3LDB4OEYs
MHhGOSwweEY1LDB4NDQsMHg0MSwweEUzLDB4MzgsMHhFNSwweEE5LDB4MjksMHgwQiwKKyAgICAw
eDIzLDB4MzksMHhFMiwweDM4LDB4QUEsMHhFQSwweDc4LDB4RTgsMHgyMywweDM5LDB4RTIsMHgz
OCwweDk1LDB4OTcsMHhCRiwweEZCLAorICAgIDB4MjQsMHg0MSwweEMyLDB4MzAsMHhCNywweEJF
LDB4RkYsMHgyQiwweDY0LDB4NDksMHhFMywweDM4LDB4RTUsMHhFRiwweEFCLDB4MkEsCisgICAg
MHg4NSwweDQ5LDB4MjMsMHg0MSwweEZGLDB4RjUsMHgyQiwweDBBLDB4ODQsMHg0OSwweDQ0LDB4
NDksMHg1RiwweDhCLDB4MDEsMHg4QSwKKyAgICAweDY0LDB4NDksMHgyMywweDQxLDB4RTIsMHg2
OCwweEUyLDB4MDgsMHhFNiwweDU5LDB4NDQsMHg0OSwweEZELDB4N0YsMHhFRiwweDBCLAorICAg
IDB4QzUsMHg1OSwweDY0LDB4NDksMHg5NiwweEY1LDB4QTIsMHgwQywweEFDLDB4OTMsMHhBNCww
eDUxLDB4MkQsMHgzRCwweEFELDB4QUQsCisgICAgMHg2RiwweEFDLDB4Q0QsMHg5MywweDhBLDB4
ODksMHhBOSwweDhELDB4NkYsMHhBQywweDJFLDB4QTQsMHg4QSwweDNBLDB4MjcsMHhBNSwKKyAg
ICAweEIwLDB4QjQsMHgyRSwweEE0LDB4MEEsMHhBQSwweEJGLDB4NUYsMHgzMSwweEJELDB4NEYs
MHhBNCwweDIyLDB4MkEsMHhBRCwweEY1LAorICAgIDB4NTIsMHhDNSwweEQwLDB4QjQsMHhBRiww
eEFBLDB4QTIsMHg4OSwweDMyLDB4QzUsMHhEMCwweEI0LDB4MEEsMHgwMCwweDZFLDB4RjgsCisg
ICAgMHg1MiwweEM1LDB4RDAsMHhCNCwweEU4LDB4QUEsMHhGRiwweDdGLDB4RDAsMHhCNCwweDZG
LDB4QUMsMHg3OCwweEY4LDB4RTgsMHhBRSwKKyAgICAweEIwLDB4QUMsMHg2RiwweEFDLDB4N0Ys
MHhFQiwweEJFLDB4QUEsMHhCMCwweEI0LDB4NEUsMHhBNCwweEY1LDB4RkUsMHhCMiwweEUwLAor
ICAgIDB4OEYsMHhBQywweDRGLDB4QTQsMHg3QSwweDdBLDB4QkQsMHhERCwweDZGLDB4QUMsMHgy
RSwweEE0LDB4OUUsMHgyRSwweDI4LDB4MkEsCisgICAgMHg5MCwweEFDLDB4NEYsMHhBNCwweDU1
LDB4MEEsMHgwRSwweEFDLDB4OEYsMHhBQywweDRGLDB4QTQsMHhCRiwweEZFLDB4RTksMHhBRiwK
KyAgICAweDhGLDB4QUMsMHg0RiwweEE0LDB4REIsMHhFRSwweEZFLDB4QUEsMHg4RiwweEFDLDB4
MkUsMHhBNCwweERBLDB4RjIsMHgyQSwweENCLAorICAgIDB4OTAsMHhBQywweDRFLDB4QTQsMHhG
RiwweDVBLDB4RDIsMHhCNywweDZGLDB4QUMsMHgyRSwweEE0LDB4NUMsMHhFRSwweEMyLDB4QTMs
CisgICAgMHg4RiwweEI0LDB4MEUsMHhBNCwweEY1LDB4NkIsMHhFQiwweDhBLDB4NkYsMHhBQyww
eDJFLDB4QTQsMHhBRCwweEY5LDB4OUEsMHg4MCwKKyAgICAweDAyLDB4NDksMHhFMiwweDQwLDB4
RjYsMHhEQywweEY1LDB4MzUsMHg4NCwweDU5LDB4MDMsMHg0OSwweEFELDB4MzUsMHhCNSwweEFE
LAorICAgIDB4NjMsMHg1OSwweDQzLDB4NTEsMHg2RiwweEMyLDB4RTksMHg3NywweDY0LDB4NTks
MHgyMywweDUxLDB4RjIsMHhFMywweEZGLDB4RkUsCisgICAgMHg4NCwweDU5LDB4MjIsMHg1MSww
eDU2LDB4RDcsMHhGNywweEY3LDB4NjMsMHg1OSwweDAyLDB4NDksMHg3QSwweDNFLDB4RkEsMHhG
OCwKKyAgICAweDQzLDB4NTEsMHgwMiwweDQ5LDB4OEEsMHhBOCwweDNBLDB4N0UsMHg0MywweDQ5
LDB4MDIsMHg0OSwweDdCLDB4RjgsMHhEOCwweDk1LAorICAgIDB4MjMsMHg0OSwweDAyLDB4NDks
MHgzNiwweDBGLDB4MDcsMHgxRiwweDQzLDB4NTEsMHgwMywweDQ5LDB4NkYsMHg2QSwweDVFLDB4
NTUsCisgICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweEZFLDB4QUIsMHgwQSwweDJFLDB4MjMsMHg0
OSwweEMxLDB4NDAsMHg4RSwweEI2LDB4OEUsMHhBOCwKKyAgICAweDQzLDB4NDksMHhFMiwweDQw
LDB4M0UsMHhERiwweERGLDB4RkYsMHgyMywweDQ5LDB4RTIsMHg0MCwweEUwLDB4RTAsMHhFMiww
eEYyLAorICAgIDB4QTcsMHg3QSwweDAyLDB4NDEsMHg5NSwweEI1LDB4MjUsMHgyNSwweDBDLDB4
QUMsMHgyQSwweDhCLDB4ODksMHg4MywweDAyLDB4MDIsCisgICAgMHhBQiwweEEzLDB4MDgsMHg4
QiwweDVGLDB4RTgsMHhGOCwweEJBLDB4NjksMHg5MywweEU3LDB4OEEsMHg1RiwweEZFLDB4Njgs
MHhBMiwKKyAgICAweDA4LDB4OEIsMHhDOCwweDhBLDB4RUYsMHhGOCwweEUwLDB4QjAsMHhFOCww
eDhBLDB4QTcsMHg4MiwweEJGLDB4QUUsMHhGQywweERBLAorICAgIDB4RTcsMHg4MiwweDg2LDB4
N0EsMHg2QiwweEVBLDB4MkEsMHhBRiwweEU4LDB4ODIsMHhBNywweDdBLDB4NzcsMHg1NywweEY4
LDB4NkUsCisgICAgMHhDNywweDgyLDB4ODYsMHg3QSwweDZFLDB4N0EsMHhGOCwweDU4LDB4QTYs
MHg4MiwweDY2LDB4N0EsMHg5MiwweERBLDB4RTUsMHhFQiwKKyAgICAweDI5LDB4OTMsMHg4Niww
eDdBLDB4NTUsMHg1NSwweEY1LDB4MEYsMHhBQiwweEEzLDB4ODcsMHg4MiwweEE1LDB4MkYsMHgw
QSwweDAyLAorICAgIDB4Q0IsMHhBMywweDhBLDB4OUIsMHhBOSwweDBGLDB4MjgsMHgwMCwweEVD
LDB4QUIsMHg4QSwweDlCLDB4RTgsMHhCOCwweEZFLDB4NUUsCisgICAgMHg4QiwweDlCLDB4MjYs
MHg3MiwweDgwLDB4RTAsMHg3OCwweDU2LDB4QzgsMHg4MiwweDI2LDB4NkEsMHg3OCwweDU2LDB4
NTUsMHg1NSwKKyAgICAweDQ3LDB4NzIsMHgwNSwweDZBLDB4N0UsMHhCNywweDc1LDB4NTcsMHhF
NSwweDY5LDB4ODQsMHg1OSwweDdBLDB4NzgsMHg3QywweEQ2LAorICAgIDB4QzUsMHg2MSwweDg0
LDB4NTksMHgyRiwweDJELDB4MkEsMHhBRiwweDA1LDB4NkEsMHhBNCwweDU5LDB4MkIsMHhBRiww
eDJGLDB4MkQsCisgICAgMHgyNiwweDZBLDB4QzUsMHg2MSwweDVFLDB4REMsMHg3RSwweDVFLDB4
MDYsMHg2QSwweDY0LDB4NTEsMHg3OCwweDdCLDB4NUYsMHg1RiwKKyAgICAweDg1LDB4NTksMHgy
MywweDQxLDB4RjAsMHhGQSwweDdFLDB4NUYsMHg2NCwweDQ5LDB4MjMsMHg0OSwweEE5LDB4MTUs
MHhCNSwweDJFLAorICAgIDB4NjQsMHg0OSwweDIzLDB4NDEsMHhCNywweEI2LDB4M0EsMHg4Miww
eDY0LDB4NDksMHgwMywweDQxLDB4RkMsMHg2MCwweEFCLDB4QUEsCisgICAgMHg0MywweDQ5LDB4
MDMsMHg0MSwweDVCLDB4N0QsMHg3MiwweEFBLDB4QTUsMHg1MSwweDAyLDB4NDEsMHg3RiwweDdG
LDB4QkYsMHgwQiwKKyAgICAweEM1LDB4NjEsMHhDMiwweDM4LDB4RkYsMHhGRiwweDhBLDB4MDAs
MHhFNiwweDYxLDB4RTIsMHg0MCwweEQ1LDB4RkYsMHhBQiwweDAwLAorICAgIDB4RTUsMHg1OSww
eDIzLDB4NDEsMHg1NSwweERGLDB4QUEsMHgwMCwweEM2LDB4NTksMHgwMywweDQxLDB4NTUsMHhG
RiwweEEwLDB4ODAsCisgICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweDdBLDB4RkUsMHhCQywweEZF
LDB4MjMsMHg0MSwweEMyLDB4MzgsMHhGQiwweDlBLDB4RkUsMHhGMCwKKyAgICAweDAzLDB4Mzks
MHhBMiwweDI4LDB4RkYsMHg3QywweDc0LDB4NTYsMHhFMywweDMwLDB4QTIsMHgyOCwweEI5LDB4
MkIsMHhCOSwweEZELAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhBOCwweEZBLDB4RjAsMHg3
OSwweEMyLDB4MjgsMHg4MSwweDIwLDB4NUEsMHg3RSwweDdBLDB4NUYsCisgICAgMHhBMiwweDIw
LDB4NjEsMHgyMCwweEZGLDB4RkEsMHhFQSwweDgzLDB4QTIsMHgyMCwweDYxLDB4MTgsMHhDQiww
eEVBLDB4N0YsMHhFRSwKKyAgICAweDYxLDB4MTgsMHg0MSwweDE4LDB4QUIsMHgyRiwweDBGLDB4
MDgsMHhBMiwweDIwLDB4NDEsMHgxOCwweEZGLDB4REYsMHhGRiwweDJFLAorICAgIDB4QzIsMHgy
OCwweDgyLDB4MjAsMHhGOSwweEE5LDB4QUIsMHg4QSwweEMyLDB4MjgsMHg4MSwweDIwLDB4RUIs
MHhCQSwweEU4LDB4RUUsCisgICAgMHhBMiwweDI4LDB4ODIsMHgyMCwweEJDLDB4OTQsMHgzRCww
eDNGLDB4QTIsMHgyOCwweDgxLDB4MjgsMHgwRSwweDg4LDB4QjgsMHg4MCwKKyAgICAweEUzLDB4
MzAsMHg4MSwweDI4LDB4OEIsMHhBQiwweDdGLDB4RkYsMHhDMiwweDMwLDB4ODIsMHgyOCwweDNB
LDB4QUYsMHg4RiwweDBGLAorICAgIDB4RTIsMHgzMCwweEEyLDB4MjgsMHhERSwweDlELDB4MkQs
MHg4QiwweEUzLDB4MzAsMHhBMiwweDMwLDB4RjAsMHhGQSwweEZFLDB4REYsCisgICAgMHhFMyww
eDMwLDB4QTIsMHgzMCwweEFELDB4QUEsMHhCQSwweEZFLDB4MDMsMHgzOSwweEMyLDB4MzAsMHhB
QSwweDgzLDB4MDMsMHhBMSwKKyAgICAweEUyLDB4MzAsMHhDMiwweDMwLDB4RjgsMHhFMCwweDAw
LDB4MDAsMHgwMywweDM5LDB4QTEsMHgyOCwweEZGLDB4REYsMHhENywweDcyLAorICAgIDB4MDMs
MHgzOSwweEEyLDB4MjgsMHg3QiwweEZGLDB4QUIsMHgyQiwweDA0LDB4MzksMHhBMiwweDI4LDB4
NTUsMHg1NywweDdFLDB4RjgsCisgICAgMHhDMiwweDMwLDB4QTIsMHgyOCwweEZELDB4M0QsMHg5
QSwweDlBLDB4RTMsMHgzMCwweEEyLDB4MjgsMHhFOSwweDdGLDB4RkEsMHg2OCwKKyAgICAweEMy
LDB4MzAsMHhBMiwweDI4LDB4QUEsMHhBRiwweDJELDB4QUUsMHhFMiwweDMwLDB4QTIsMHgyOCww
eDhCLDB4RUYsMHhFRSwweEZGLAorICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHhENywweEE1LDB4
QTYsMHhGNywweEUzLDB4MzAsMHg4MSwweDI4LDB4MkIsMHg3QSwweDdGLDB4RkYsCisgICAgMHhD
MiwweDI4LDB4ODEsMHgyOCwweDNCLDB4QTksMHhGRCwweEFELDB4QzMsMHgzMCwweDgyLDB4Mjgs
MHhCOCwweEFFLDB4RkEsMHhGRSwKKyAgICAweEMyLDB4MjgsMHg4MSwweDI4LDB4MDAsMHgyMiww
eEFGLDB4MEYsMHhFMiwweDMwLDB4QzIsMHgyOCwweEFGLDB4OUYsMHgyNywweDI1LAorICAgIDB4
RTIsMHgzMCwweEMyLDB4MzAsMHhENCwweEYwLDB4QTIsMHhGRCwweEUyLDB4MzAsMHhBMiwweDMw
LDB4QzgsMHg4MCwweDgwLDB4QTIsCisgICAgMHgwMywweDM5LDB4QTIsMHgzMCwweEVGLDB4RkQs
MHhBQSwweEU4LDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBNywweEQ3LDB4RUYsMHhFRiwKKyAgICAw
eDI0LDB4MzksMHhDMywweDMwLDB4QUIsMHgyRiwweDNCLDB4RkYsMHg0NCwweDQxLDB4MDMsMHgz
OSwweEVBLDB4RUEsMHhFQiwweDdELAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhCQSwweDNF
LDB4RTYsMHg1NCwweDIzLDB4MzksMHhFMiwweDMwLDB4QTAsMHhFQSwweEI1LDB4RjcsCisgICAg
MHgwMiwweDM5LDB4QzIsMHgzMCwweEJFLDB4OUUsMHhCQiwweEZBLDB4MDMsMHgzOSwweEMyLDB4
MzAsMHgwOCwweEEyLDB4RDgsMHhEQSwKKyAgICAweEUyLDB4MzgsMHgwMywweDMxLDB4MDgsMHg4
MCwweDgwLDB4NkEsMHg4NSwweDUxLDB4MDMsMHgzOSwweDI1LDB4MjUsMHhCRCwweEJELAorICAg
IDB4QTUsMHg1MSwweDQ0LDB4NDEsMHgwMiwweENBLDB4N0IsMHg1RiwweDg1LDB4NDksMHgyNCww
eDQxLDB4RTgsMHhFMiwweEVBLDB4REYsCisgICAgMHg0NCwweDQ5LDB4QzMsMHgzOCwweEVFLDB4
N0EsMHg3QSwweEVDLDB4MDMsMHgzOSwweEMyLDB4MzAsMHgyNCwweDBGLDB4MkYsMHhBOSwKKyAg
ICAweDAzLDB4MzksMHhDMiwweDMwLDB4M0MsMHhFOCwweEVGLDB4QUYsMHgyMywweDM5LDB4RTMs
MHgzOCwweDAyLDB4M0QsMHhGQiwweEU2LAorICAgIDB4MjQsMHg0MSwweEUzLDB4MzgsMHhDOCww
eEZBLDB4RjcsMHhGNSwweDAzLDB4MzksMHhDMiwweDMwLDB4QTIsMHgyQywweEY3LDB4RkYsCisg
ICAgMHgyNCwweDQxLDB4MDMsMHgzOSwweEI3LDB4QTMsMHgwQiwweEE1LDB4NjQsMHg0OSwweDI0
LDB4NDEsMHhCRCwweEY1LDB4QUQsMHgyOSwKKyAgICAweEE1LDB4NTEsMHgyMywweDQxLDB4QTks
MHgwQiwweDAzLDB4MDAsMHhFNiwweDU5LDB4ODUsMHg1MSwweDU1LDB4RkQsMHhBRCwweDNGLAor
ICAgIDB4RTYsMHg1OSwweDQzLDB4NDksMHhENywweEJBLDB4QjgsMHhBMCwweEU2LDB4NTksMHhB
NSwweDUxLDB4ODksMHgwQSwweDgyLDB4QUIsCisgICAgMHgwNiwweDYyLDB4QTUsMHg0OSwweEJG
LDB4QjIsMHhBRiwweEZFLDB4NEIsMHg4MywweEU1LDB4NTksMHgyRCwweDJELDB4MkQsMHgyRCwK
KyAgICAweDJFLDB4QTQsMHg4QywweDhCLDB4MkIsMHhBRCwweEFGLDB4QUQsMHg0RiwweEE0LDB4
RUQsMHg5QiwweDBFLDB4QTcsMHhCRCwweEY1LAorICAgIDB4NkYsMHhBQywweDBFLDB4QTQsMHgw
QiwweEFGLDB4N0YsMHhERiwweDhGLDB4QUMsMHgyRSwweEE0LDB4MjcsMHhBQSwweEFCLDB4RkQs
CisgICAgMHhGMSwweEJDLDB4MEUsMHhBNCwweDBBLDB4QUYsMHhCRiwweEQ3LDB4RjEsMHhCQyww
eEIwLDB4QjQsMHhBOCwweEJCLDB4QkIsMHg5NSwKKyAgICAweDExLDB4QkQsMHhCMCwweEI0LDB4
MDIsMHgwQSwweDJBLDB4QkQsMHgzMSwweEJELDB4QjAsMHhCNCwweDU3LDB4N0MsMHhGQSwweEFB
LAorICAgIDB4RjAsMHhCQywweDhGLDB4QUMsMHhERiwweERFLDB4QkUsMHhGQSwweEIwLDB4QjQs
MHg2RiwweEFDLDB4N0IsMHhBQSwweEVGLDB4QkMsCisgICAgMHg5MCwweEFDLDB4NEYsMHhBNCww
eEQ3LDB4RkEsMHg5MCwweEI4LDB4OEYsMHhBQywweDJFLDB4QTQsMHg4RiwweDlBLDB4ODIsMHhB
MiwKKyAgICAweEFGLDB4QjQsMHg0RiwweEE0LDB4QkQsMHhGRiwweEZGLDB4NzMsMHg4RiwweEFD
LDB4NEYsMHhBNCwweEFCLDB4QkYsMHhGNywweDc1LAorICAgIDB4OEYsMHhBQywweDJFLDB4QTQs
MHgwQSwweDJBLDB4MkIsMHhFOSwweDkwLDB4QUMsMHg0RSwweEE0LDB4RTcsMHhFRSwweEUyLDB4
QUIsCisgICAgMHg4RiwweEFDLDB4NEUsMHhBNCwweEUyLDB4QUEsMHhBQiwweEY3LDB4NkYsMHhB
QywweDJFLDB4QTQsMHhCQiwweDBDLDB4QTAsMHhCQSwKKyAgICAweDhGLDB4QUMsMHgyRSwweEE0
LDB4MkMsMHhGRiwweDZGLDB4RkIsMHg2RiwweEFDLDB4MEQsMHg5QywweDI4LDB4QkIsMHg5Riww
eEZGLAorICAgIDB4NjQsMHg1OSwweEUyLDB4NDAsMHhGNSwweEFCLDB4MkEsMHhBQSwweDY0LDB4
NTEsMHgyMywweDUxLDB4QkQsMHhCOSwweDJGLDB4RTMsCisgICAgMHg4NCwweDU5LDB4NDMsMHg1
MSwweDdGLDB4REMsMHhFRSwweEJGLDB4ODQsMHg1OSwweDQzLDB4NTEsMHg3RCwweDc5LDB4QUIs
MHhFRSwKKyAgICAweDY0LDB4NTksMHgyMiwweDUxLDB4RjUsMHg1NiwweEJDLDB4RTgsMHg0Myww
eDUxLDB4MDIsMHg0OSwweEI4LDB4REEsMHhFOCwweEZBLAorICAgIDB4NjQsMHg1MSwweDAyLDB4
NDksMHhGRiwweEJGLDB4N0YsMHhGMiwweDIzLDB4NDksMHhFMiwweDQwLDB4MjksMHgzRSwweERB
LDB4MDIsCisgICAgMHg0MywweDUxLDB4MDMsMHg0OSwweEY2LDB4RkYsMHhCQSwweEFGLDB4MjMs
MHg0OSwweDAyLDB4NDEsMHg4MCwweDQyLDB4QTAsMHg3QSwKKyAgICAweDIzLDB4NDksMHhFMiww
eDQwLDB4M0IsMHgyMywweEFGLDB4OUYsMHgyMywweDQ5LDB4RTIsMHg0MCwweEEwLDB4M0UsMHhC
RSwweDJFLAorICAgIDB4MjMsMHg0OSwweDAyLDB4NDEsMHgxQiwweEY2LDB4RDYsMHhGQywweDQ0
LDB4NDksMHgwMiwweDQ5LDB4NUYsMHg1NywweDk1LDB4OTUsCisgICAgMHg4QSwweDlCLDB4NDMs
MHg1MSwweEI1LDB4MkQsMHgyRCwweDJELDB4MEMsMHhBQywweDhBLDB4OTMsMHg4MiwweEFBLDB4
NjIsMHhFMiwKKyAgICAweEFCLDB4OUIsMHg0OSwweDkzLDB4RkMsMHhGOCwweEZBLDB4REQsMHg2
OSwweDlCLDB4MDgsMHg4QiwweEUwLDB4NzgsMHhGQywweDc4LAorICAgIDB4MDgsMHg4QiwweEU4
LDB4OEEsMHg4MCwweDc3LDB4RkUsMHg5QywweDA4LDB4OEIsMHhBNywweDgyLDB4QkYsMHg2Riww
eEVGLDB4QjIsCisgICAgMHhFOCwweDgyLDB4QTcsMHg4MiwweEJFLDB4N0IsMHhBRSwweEFCLDB4
QzcsMHg4MiwweDg2LDB4N0EsMHhFRSwweEVBLDB4ODMsMHhDQSwKKyAgICAweEM3LDB4ODIsMHg4
NywweDdBLDB4QkEsMHhFRiwweEJGLDB4QUEsMHg4QSwweDlCLDB4ODcsMHg3QSwweDVELDB4Qjcs
MHgyRiwweDBCLAorICAgIDB4Q0IsMHhBMywweDA4LDB4OEIsMHgyNSwweDA5LDB4MDIsMHgwMCww
eEVBLDB4QUIsMHhBQiwweEEzLDB4NjUsMHhFRiwweEZCLDB4RkEsCisgICAgMHhFQywweEFCLDB4
QzgsMHg4MiwweDIwLDB4QTgsMHhGMCwweDdFLDB4OEEsMHg5QiwweDQ2LDB4NzIsMHhFMCwweDc4
LDB4NUUsMHg1NSwKKyAgICAweDY3LDB4N0EsMHgwNSwweDZBLDB4REMsMHhGRiwweDdGLDB4Nzcs
MHg2NywweDcyLDB4MDYsMHg2QSwweEZELDB4QUQsMHhBRCwweDhCLAorICAgIDB4MjYsMHg2QSww
eDg0LDB4NTEsMHg4MCwweEU4LDB4NDAsMHg2MCwweEM1LDB4NTksMHg0MywweDUxLDB4REMsMHhG
RiwweEJGLDB4MkYsCisgICAgMHhFNSwweDYxLDB4ODQsMHg1MSwweEVELDB4QUIsMHhBQSwweEFB
LDB4MDYsMHg2MiwweEM1LDB4NTksMHhBNywweEZCLDB4NzIsMHg3QiwKKyAgICAweEU1LDB4NjEs
MHg0NCwweDUxLDB4QTgsMHg2OCwweDc4LDB4NzcsMHhBNSwweDU5LDB4MjMsMHg0OSwweENBLDB4
RUEsMHhFRCwweEZFLAorICAgIDB4NjQsMHg0OSwweDI0LDB4NDksMHhENiwweEQ2LDB4RDIsMHhG
NSwweDg0LDB4NTEsMHg0NCwweDQ5LDB4OTksMHhCNSwweEY1LDB4QjUsCisgICAgMHg4NSwweDUx
LDB4MjMsMHg0MSwweEZDLDB4RkYsMHhGRSwweEZBLDB4NjQsMHg1MSwweDIzLDB4NDEsMHhGRSww
eEY2LDB4RkUsMHgzMywKKyAgICAweDI2LDB4NkEsMHg0MywweDQ5LDB4RDUsMHhCRCwweDJCLDB4
MEEsMHgyNiwweDZBLDB4QTUsMHg1MSwweEI1LDB4RUUsMHhFMCwweEEwLAorICAgIDB4RTYsMHg2
MSwweDQzLDB4NTEsMHgwMCwweDgyLDB4RTAsMHhGQSwweDA2LDB4NjIsMHg0MywweDQ5LDB4OEEs
MHgyQSwweEJGLDB4NTUsCisgICAgMHhDNSwweDU5LDB4NjMsMHg0OSwweDAwLDB4QTgsMHhFQSww
eDVELDB4QzUsMHg1OSwweDIyLDB4NDEsMHhFMCwweEZBLDB4RkUsMHg3RiwKKyAgICAweDIzLDB4
NDEsMHhFMiwweDM4LDB4MDAsMHhBQywweDVFLDB4NUUsMHgwMywweDM5LDB4QzIsMHgzOCwweEMw
LDB4QUEsMHhGQywweEJDLAorICAgIDB4RTIsMHgzMCwweDgxLDB4MjgsMHhGRSwweDc4LDB4RkEs
MHhFQSwweEMyLDB4MzAsMHg2MSwweDIwLDB4QUEsMHhFQSwweEZBLDB4N0EsCisgICAgMHhDMiww
eDI4LDB4ODEsMHgyMCwweEUzLDB4OEQsMHg3RCwweDdELDB4QTIsMHgyOCwweDYxLDB4MjAsMHhC
QSwweDdFLDB4NTYsMHg1RiwKKyAgICAweEEyLDB4MjAsMHg2MSwweDE4LDB4RUEsMHhEQiwweEQ3
LDB4NTcsMHg4MSwweDIwLDB4NDEsMHgxOCwweDAyLDB4RTAsMHhGRSwweEUyLAorICAgIDB4ODEs
MHgyMCwweDQxLDB4MTgsMHhGRiwweDVGLDB4QkYsMHgyRSwweEMyLDB4MjgsMHg2MSwweDE4LDB4
QkQsMHgzRCwweDJGLDB4MkUsCisgICAgMHhDMywweDI4LDB4QTIsMHgyOCwweENCLDB4RkUsMHhF
MCwweDgwLDB4QzIsMHgyOCwweDgxLDB4MjAsMHhGQSwweEZBLDB4REUsMHhBMiwKKyAgICAweEEy
LDB4MjgsMHg4MiwweDIwLDB4MkYsMHhBQiwweEUzLDB4MkUsMHhDMiwweDI4LDB4ODEsMHgyOCww
eEZCLDB4RUYsMHhBQiwweEFBLAorICAgIDB4QzIsMHgyOCwweDYxLDB4MjgsMHgyQiwweEFBLDB4
OEEsMHgwMiwweDAzLDB4MzEsMHhBMiwweDI4LDB4RjUsMHhCNSwweDM5LDB4M0EsCisgICAgMHgw
MywweDMxLDB4QzIsMHgzMCwweDU3LDB4N0UsMHhCQywweDgyLDB4MDMsMHgzMSwweEMyLDB4MzAs
MHhENywweDY1LDB4QUYsMHhFQiwKKyAgICAweEMyLDB4MzAsMHg4MiwweDI4LDB4QTgsMHhGQyww
eEYwLDB4NzgsMHhFMiwweDMwLDB4ODEsMHgyOCwweDAyLDB4QUUsMHhFQiwweEJGLAorICAgIDB4
RTIsMHgzMCwweEExLDB4MjgsMHg4OCwweEI4LDB4QkYsMHg1NSwweDAzLDB4MzksMHhDMiwweDMw
LDB4RTIsMHhCQSwweEJGLDB4RkQsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEVGLDB4Rjgs
MHhGQSwweEEyLDB4MDMsMHgzOSwweEMzLDB4MzAsMHg3QSwweEZGLDB4N0YsMHhERiwKKyAgICAw
eEUyLDB4MzAsMHhBMiwweDI4LDB4REYsMHhERiwweERFLDB4RjgsMHhFMywweDMwLDB4QTIsMHgy
OCwweEUzLDB4QUYsMHhBNiwweEU1LAorICAgIDB4ODIsMHgzMCwweEMyLDB4MjgsMHhCRCwweEQ1
LDB4NzcsMHhERCwweEEyLDB4MjgsMHg4MSwweDIwLDB4NjIsMHhGRSwweDBBLDB4MDAsCisgICAg
MHhDMiwweDI4LDB4ODEsMHgyOCwweDhGLDB4RUYsMHhFRiwweEFFLDB4QzIsMHgyOCwweDgyLDB4
MjgsMHgyMCwweDAyLDB4MDksMHgwMiwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4RkQsMHhB
RSwweEFFLDB4QkUsMHhDMiwweDMwLDB4QTIsMHgyOCwweDU4LDB4NTAsMHhFQSwweEFGLAorICAg
IDB4QzIsMHgzMCwweEEyLDB4MjgsMHhENSwweEMzLDB4RjUsMHhGNSwweEMyLDB4MzAsMHhBMiww
eDI4LDB4MDIsMHhCQSwweDlCLDB4QUIsCisgICAgMHhFMywweDMwLDB4QzIsMHgyOCwweEVGLDB4
NEQsMHg0RCwweDNELDB4RTIsMHgzMCwweEExLDB4MjgsMHhGQSwweENCLDB4QTMsMHgwQSwKKyAg
ICAweDAzLDB4MzksMHhDMiwweDMwLDB4RjcsMHhGRiwweDgxLDB4MDMsMHgwMywweDM5LDB4QzIs
MHgzMCwweEFCLDB4QUYsMHhCRiwweEY2LAorICAgIDB4RTIsMHgzMCwweEExLDB4MzAsMHgyMCww
eEEwLDB4QUYsMHgyQiwweDIzLDB4MzksMHhFMywweDM4LDB4QkQsMHhERiwweEVGLDB4RUQsCisg
ICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEVFLDB4QUIsMHgwNiwweEI3LDB4MDMsMHgzOSwweEMy
LDB4MzAsMHg4RiwweDg4LDB4QzAsMHhEMiwKKyAgICAweDAzLDB4MzksMHhFMiwweDMwLDB4RkYs
MHhFNywweEUzLDB4RTgsMHgwMywweDQxLDB4RTIsMHgzMCwweDU1LDB4N0YsMHhENywweEQ3LAor
ICAgIDB4NDMsMHg0MSwweDAzLDB4MzksMHg5NSwweDdELDB4RkQsMHhFRCwweDQ0LDB4NDEsMHhF
MiwweDMwLDB4QTMsMHhBOSwweEVBLDB4RUEsCisgICAgMHg2NCwweDQ5LDB4RTMsMHgzOCwweEEw
LDB4QkEsMHhGRSwweERELDB4NDQsMHg0MSwweEUzLDB4MzgsMHgyOCwweEZFLDB4NTcsMHg1NSwK
KyAgICAweDI0LDB4NDEsMHhDMiwweDMwLDB4RTgsMHhERSwweERCLDB4REIsMHhFMywweDM4LDB4
QzIsMHgzMCwweEFFLDB4OUUsMHhCOCwweDgwLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHgy
RiwweDJFLDB4QUQsMHgzRiwweDAzLDB4MzksMHhFMywweDMwLDB4QUEsMHgwQSwweDJGLDB4RTcs
CisgICAgMHgyNCwweDM5LDB4QzIsMHgzMCwweEFBLDB4M0EsMHhERSwweEZCLDB4RTMsMHgzOCww
eEMyLDB4MzAsMHhGRSwweDU0LDB4NzYsMHg4RSwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4
MDMsMHhBOSwweERELDB4OEEsMHgyMywweDQxLDB4RTMsMHgzMCwweDBGLDB4MzUsMHhBMywweDg5
LAorICAgIDB4QTUsMHg1MSwweDAzLDB4MzksMHgwMiwweDBBLDB4RTksMHhCRCwweEM1LDB4NTEs
MHg0NCwweDQ5LDB4MkEsMHg4RiwweEE1LDB4QjUsCisgICAgMHgwNiwweDVBLDB4NjQsMHg0OSww
eDhFLDB4RkEsMHhGRiwweDc1LDB4QTUsMHg1MSwweDY0LDB4NDksMHgyMCwweEI4LDB4M0IsMHgy
QiwKKyAgICAweEU2LDB4NTksMHg4NSwweDUxLDB4MkIsMHgyQiwweDNELDB4OTcsMHg0QiwweDgz
LDB4MDYsMHg1QSwweDM1LDB4QTUsMHgzNSwweDJELAorICAgIDB4RUQsMHg5QiwweDhDLDB4OEIs
MHgyRCwweEJELDB4QjUsMHg2RiwweEVELDB4OUIsMHhBQywweDkzLDB4MjIsMHg4OCwweDJBLDB4
RDUsCisgICAgMHgwRSwweEE0LDB4QUMsMHg5MywweDBBLDB4MkUsMHhBRSwweERELDB4MkUsMHhB
NCwweENELDB4OTMsMHgwMCwweENFLDB4QUYsMHg3RCwKKyAgICAweDRFLDB4QTQsMHhFRCwweDlC
LDB4MDgsMHgyQiwweEI1LDB4QjUsMHhCMCwweEFDLDB4MEQsMHg5QywweDBCLDB4QkIsMHhENyww
eDU3LAorICAgIDB4RDAsMHhCNCwweDRFLDB4QTQsMHgwQSwweEFCLDB4MDksMHhBRCwweDExLDB4
QkQsMHhCMCwweEI0LDB4OEIsMHg4QSwweEZCLDB4NTUsCisgICAgMHgxMSwweEJELDB4QjAsMHhB
QywweDdBLDB4N0UsMHg4MywweDhCLDB4RjEsMHhCQywweDhGLDB4QUMsMHhENywweDlFLDB4N0Ys
MHhFQywKKyAgICAweEIwLDB4QjQsMHg2RiwweEFDLDB4RkUsMHhBOCwweEFCLDB4QUEsMHhCMCww
eEI0LDB4NkYsMHhBQywweDdGLDB4N0UsMHhFMCwweEFBLAorICAgIDB4QUYsMHhCNCwweDRGLDB4
QTQsMHg2RiwweEZELDB4NkUsMHhBOCwweDhGLDB4QUMsMHg0RiwweEE0LDB4RjcsMHhERiwweEZE
LDB4QjAsCisgICAgMHg5MCwweEFDLDB4MkUsMHhBNCwweDdCLDB4NUEsMHhGRSwweERDLDB4NkYs
MHhBNCwweDJFLDB4QTQsMHgzMywweEU5LDB4NkEsMHg5RSwKKyAgICAweDZFLDB4QUMsMHgyRSww
eEE0LDB4MkUsMHhDQiwweEVELDB4RjksMHg2RiwweEFDLDB4MkUsMHhBNCwweEEyLDB4QkIsMHhE
QSwweDQyLAorICAgIDB4NEYsMHhBNCwweDBFLDB4OUMsMHhGOCwweEY4LDB4NTAsMHhBRiwweDJF
LDB4QTQsMHgwRSwweDlDLDB4N0IsMHhERCwweENCLDB4ODIsCisgICAgMHg2NCwweDUxLDB4MjMs
MHg1MSwweEVCLDB4QTIsMHhCQSwweEJGLDB4NjQsMHg1OSwweDQzLDB4NTEsMHhGRCwweEFELDB4
NTAsMHhGOCwKKyAgICAweDY0LDB4NTksMHg0MywweDUxLDB4QTIsMHg4OCwweDZCLDB4RkQsMHg4
NCwweDU5LDB4MjMsMHg1MSwweEVBLDB4RUEsMHhFQSwweDRBLAorICAgIDB4NjMsMHg1MSwweDIy
LDB4NTEsMHhGRiwweEJGLDB4NkYsMHhBMCwweDQzLDB4NTEsMHgwMiwweDQ5LDB4RTgsMHhCQSww
eEY2LDB4N0EsCisgICAgMHg0MywweDUxLDB4MDIsMHg0OSwweEJBLDB4NjgsMHhGOSwweERELDB4
NDMsMHg0OSwweDAyLDB4NDksMHhBQSwweEFCLDB4RUQsMHhFNSwKKyAgICAweDQzLDB4NDksMHhF
MiwweDQwLDB4OEEsMHhCOCwweEZGLDB4REYsMHg0MywweDUxLDB4RTIsMHg0MCwweDNCLDB4QkUs
MHhGQiwweEY5LAorICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHhCRiwweEJFLDB4RkUsMHhGOCww
eDIzLDB4NDksMHhFMiwweDQwLDB4M0EsMHhGQSwweEY4LDB4RkEsCisgICAgMHg0MywweDQ5LDB4
MDIsMHg0OSwweDVFLDB4NTUsMHg1NSwweEQ1LDB4NjMsMHg1OSwweEUyLDB4NDAsMHhERCwweDNG
LDB4QUYsMHgyRiwKKyAgICAweENCLDB4QTMsMHhDNSwweDYxLDB4MkQsMHgyRCwweDBELDB4QTks
MHhFQiwweEEzLDB4NDksMHg5MywweEUyLDB4OEEsMHhFRSwweDdFLAorICAgIDB4OEEsMHg5Qiww
eDQ5LDB4OTMsMHhBMiwweEUyLDB4RkQsMHhFRCwweDY5LDB4OUIsMHgwOCwweDhCLDB4NDgsMHhG
MiwweDdBLDB4NUUsCisgICAgMHgyOCwweDkzLDB4QzcsMHg4MiwweEJBLDB4NkUsMHg3OCwweEZB
LDB4QzgsMHg4QSwweDA3LDB4ODMsMHhBRiwweEVFLDB4QUUsMHhCRiwKKyAgICAweEU4LDB4OEEs
MHhDNywweDgyLDB4RDYsMHg5NiwweDhBLDB4MUEsMHgyOSwweDkzLDB4QTcsMHg4MiwweDU3LDB4
NTcsMHhCRiwweDJCLAorICAgIDB4QUIsMHhBMywweEU4LDB4OEEsMHg1NSwweDU1LDB4QUQsMHgw
MiwweEVCLDB4QUIsMHg0QSwweDkzLDB4QUQsMHhBQiwweEFCLDB4ODgsCisgICAgMHgwQiwweEFD
LDB4QUIsMHhBMywweEZFLDB4RjMsMHg2QiwweDVBLDB4Q0IsMHhBMywweDY2LDB4NzIsMHgwMCww
eEEwLDB4RTgsMHg3RSwKKyAgICAweDRBLDB4OTMsMHgyNiwweDcyLDB4NzgsMHg3RSwweDU3LDB4
NTUsMHg0NiwweDcyLDB4MDUsMHg2QSwweEVGLDB4RUIsMHg4RCwweEFCLAorICAgIDB4NjcsMHg3
MiwweDI2LDB4NzIsMHg1RSwweDY1LDB4N0QsMHgwNywweDY3LDB4NzIsMHgwNiwweDYyLDB4MDMs
MHgyQSwweEJCLDB4N0UsCisgICAgMHgyNiwweDZBLDB4ODQsMHg1MSwweDUwLDB4NUUsMHhEQyww
eDdGLDB4MDYsMHg2MiwweDg0LDB4NTEsMHhCNSwweDM3LDB4QUEsMHhBQiwKKyAgICAweEU1LDB4
NjEsMHhDNSwweDU5LDB4QjIsMHhENCwweDU3LDB4RkEsMHhFNiwweDYxLDB4NDMsMHg0OSwweEEw
LDB4RjgsMHg3RiwweDU3LAorICAgIDB4ODQsMHg1OSwweDQ0LDB4NDksMHg3QywweEQ3LDB4NUYs
MHg3RiwweDY0LDB4NTEsMHgwMywweDQxLDB4RUMsMHhEQSwweEJBLDB4QTAsCisgICAgMHg2NCww
eDQ5LDB4MDMsMHg0MSwweEJELDB4ODcsMHg4QiwweDJBLDB4ODQsMHg0OSwweDQ0LDB4NDksMHhC
RCwweERELDB4NTYsMHg1NSwKKyAgICAweDg1LDB4NTEsMHgwMywweDQxLDB4RUMsMHhCOCwweEZF
LDB4N0YsMHhDNSwweDYxLDB4MjMsMHg0MSwweEJELDB4QjcsMHgzRCwweDNELAorICAgIDB4Mjcs
MHg2QSwweEU2LDB4NjEsMHhFOSwweEFCLDB4RDUsMHg1NywweDI2LDB4NkEsMHg4NCwweDUxLDB4
QUEsMHg2RiwweDdDLDB4N0EsCisgICAgMHhBNCwweDU5LDB4MDIsMHg0MSwweEY4LDB4N0YsMHg1
RSwweDdFLDB4NjMsMHg0OSwweEUyLDB4NDAsMHgyQiwweEJELDB4RjUsMHhGNSwKKyAgICAweDYz
LDB4NDksMHhFMiwweDQwLDB4MjIsMHhFRSwweEZGLDB4NzcsMHg2MywweDQ5LDB4MDMsMHg0MSww
eENDLDB4NkEsMHg3RCwweDVELAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzAsMHhCOCwweDZDLDB4
RjgsMHhGOCwweEUyLDB4MzgsMHhBMiwweDMwLDB4QUEsMHhFMiwweEZCLDB4OEEsCisgICAgMHhF
MiwweDMwLDB4QTIsMHgyOCwweEZBLDB4NUUsMHg3QSwweDdBLDB4QzIsMHgyOCwweDYxLDB4MjAs
MHhGQywweDdBLDB4RkYsMHhBRSwKKyAgICAweEMyLDB4MjgsMHg2MSwweDIwLDB4RkIsMHhFOSww
eEJBLDB4QTgsMHhBMiwweDI4LDB4NjEsMHgyMCwweDU3LDB4RkUsMHg2QywweEZBLAorICAgIDB4
ODEsMHgyMCwweDQxLDB4MTgsMHhGQiwweEZFLDB4RkUsMHhGOCwweDgxLDB4MjAsMHg0MSwweDE4
LDB4RkIsMHg3RSwweDdGLDB4M0YsCisgICAgMHhDMywweDI4LDB4NjEsMHgxOCwweEI1LDB4QUQs
MHhBOSwweDBBLDB4RTMsMHgzMCwweEEyLDB4MjgsMHhFNSwweEU5LDB4QUIsMHhGQiwKKyAgICAw
eEMyLDB4MjgsMHhBMiwweDI4LDB4ODMsMHg4OCwweDA4LDB4RUEsMHhDMiwweDI4LDB4ODEsMHgy
OCwweEU4LDB4QTAsMHgwMCwweDAwLAorICAgIDB4QzIsMHgyOCwweDgyLDB4MjgsMHhFRiwweDJF
LDB4MjgsMHgwMiwweEMyLDB4MzAsMHg4MSwweDI4LDB4RUYsMHhERSwweEU2LDB4MkIsCisgICAg
MHgwMywweDM5LDB4QTIsMHgyOCwweEZELDB4QkQsMHhBRiwweDhCLDB4MDMsMHgzOSwweEMyLDB4
MzAsMHgzRiwweEFCLDB4NjgsMHg2QSwKKyAgICAweDIzLDB4MzksMHhDMiwweDI4LDB4QTIsMHgy
QSwweEZELDB4RDUsMHhFMywweDMwLDB4QzIsMHgyOCwweDgwLDB4NUMsMHg1NiwweEZFLAorICAg
IDB4QzIsMHgzMCwweDgyLDB4MjgsMHg3MCwweEY4LDB4QTIsMHhBMiwweEUzLDB4MzAsMHg4MSww
eDI4LDB4RjUsMHhGRiwweEZBLDB4QTIsCisgICAgMHhDMiwweDMwLDB4QTIsMHgzMCwweERCLDB4
REYsMHgyOSwweDAyLDB4RTMsMHgzOCwweEMyLDB4MzAsMHhBMiwweEFBLDB4QTcsMHgyRCwKKyAg
ICAweDAzLDB4MzksMHhDMiwweDMwLDB4RUIsMHhCRCwweEJCLDB4QUUsMHhFMywweDMwLDB4QzIs
MHgzMCwweEZDLDB4RkEsMHhGRiwweDE2LAorICAgIDB4RTMsMHgzMCwweDgyLDB4MjAsMHhCQSww
eERFLDB4RkEsMHhBMCwweEUzLDB4MzAsMHhBMiwweDI4LDB4M0QsMHhBQiwweDJCLDB4M0YsCisg
ICAgMHgwMywweDMxLDB4QTIsMHgyOCwweEZCLDB4RjgsMHg3NywweDdFLDB4QzIsMHgzMCwweEEy
LDB4MjgsMHhGOSwweEU1LDB4NDUsMHg3NSwKKyAgICAweEEyLDB4MzAsMHhDMiwweDI4LDB4RkEs
MHhGRiwweERGLDB4RkYsMHhDMiwweDI4LDB4QTIsMHgyOCwweEVGLDB4RUIsMHhBMywweDgwLAor
ICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhGNywweDdELDB4RkYsMHgzRiwweEUzLDB4MzAsMHhB
MiwweDI4LDB4RDUsMHhFQiwweDcyLDB4NUEsCisgICAgMHhDMiwweDMwLDB4QTIsMHgyOCwweEJF
LDB4QUUsMHg4RCwweEVGLDB4QzIsMHgzMCwweEEyLDB4MjgsMHg4OCwweEI4LDB4RDgsMHg5RiwK
KyAgICAweEUzLDB4MzAsMHhBMSwweDI4LDB4MkYsMHg4QiwweEVCLDB4QTcsMHhFMywweDMwLDB4
QTIsMHgyOCwweDIwLDB4QkUsMHg3NywweDU1LAorICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHgw
QSwweDBGLDB4MkYsMHhBRiwweDAzLDB4MzksMHhDMiwweDMwLDB4QTIsMHhEQSwweDYwLDB4Q0Us
CisgICAgMHhFMywweDMwLDB4QzIsMHgzMCwweEI3LDB4RDUsMHhENSwweDU3LDB4MDIsMHgzOSww
eEMzLDB4MzAsMHhGRSwweEZBLDB4M0IsMHhBRiwKKyAgICAweEUyLDB4MzAsMHhBMiwweDMwLDB4
RkUsMHhERiwweEVDLDB4QjIsMHgwMywweDM5LDB4QzIsMHgzMCwweEVCLDB4OUQsMHhBQiwweDU3
LAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhDQSwweDhBLDB4QUYsMHg5NSwweDIzLDB4Mzks
MHhDMiwweDMwLDB4RkYsMHhGNywweDNGLDB4RUYsCisgICAgMHgyMywweDM5LDB4RTMsMHgzMCww
eDIzLDB4M0YsMHhCRCwweEZELDB4MjQsMHgzOSwweEUzLDB4MzAsMHg3RSwweDcyLDB4QzgsMHg2
QiwKKyAgICAweDI0LDB4MzksMHhDMiwweDMwLDB4RjcsMHhCRCwweEZGLDB4QUYsMHgwMywweDM5
LDB4QzMsMHgzMCwweEVFLDB4RjIsMHhDMCwweEMyLAorICAgIDB4MDMsMHgzOSwweEMzLDB4MzAs
MHhCRCwweDNGLDB4RUQsMHhBQiwweDAzLDB4MzEsMHhDMywweDMwLDB4RUEsMHg4MCwweDA4LDB4
NjgsCisgICAgMHgwMywweDM5LDB4RTMsMHgzMCwweDNGLDB4M0QsMHg2NywweEI1LDB4MjMsMHgz
OSwweEUzLDB4MzAsMHhERiwweEZELDB4REQsMHhDNSwKKyAgICAweDAzLDB4MzksMHhFMywweDMw
LDB4NzEsMHhGRCwweEY1LDB4NTksMHg0NCwweDQxLDB4RTMsMHgzMCwweDdELDB4NkYsMHhFQiww
eEE5LAorICAgIDB4MjMsMHgzOSwweEUzLDB4MzAsMHhFRiwweEZELDB4MjksMHg4QiwweDY0LDB4
NDEsMHhFMywweDM4LDB4RUQsMHhFRiwweDhBLDB4QUEsCisgICAgMHg2NCwweDQ5LDB4MDMsMHgz
OSwweEFELDB4QTksMHgzRCwweDFFLDB4ODQsMHg0OSwweDIzLDB4NDEsMHhCRiwweDc3LDB4QjYs
MHhCRSwKKyAgICAweDg0LDB4NTEsMHg0NCwweDQ5LDB4RkUsMHhCNSwweEJELDB4MjcsMHhFNSww
eDU5LDB4ODUsMHg1MSwweDdELDB4RjUsMHhCNSwweDBFLAorICAgIDB4RTYsMHg1OSwweEE1LDB4
NTEsMHgxNSwweEE1LDB4MEYsMHgyMCwweDZDLDB4OEIsMHhFNSwweDU5LDB4MkQsMHgyRCwweDJE
LDB4MkYsCisgICAgMHhFRSwweDlCLDB4QUMsMHg5MywweDdELDB4RUIsMHgyMywweDIzLDB4RUQs
MHg5QiwweDhDLDB4OEIsMHhGRiwweERGLDB4N0EsMHg1QywKKyAgICAweENELDB4OTMsMHg2Qiww
eDhCLDB4QTAsMHhCOCwweEZCLDB4RkQsMHhFRCwweDlCLDB4OEMsMHg4QiwweDhFLDB4MzksMHhC
OSwweEY3LAorICAgIDB4MEUsMHhBNCwweEFDLDB4OTMsMHgyQSwweDNELDB4QUYsMHhCRiwweDJE
LDB4QTQsMHhDQywweDkzLDB4QjgsMHgyRSwweEFCLDB4RjcsCisgICAgMHg2RiwweEFDLDB4RUQs
MHg5QiwweDBCLDB4QUQsMHhGRiwweDc1LDB4QUYsMHhBQywweDBELDB4OUMsMHgyOCwweEFGLDB4
QkQsMHhENSwKKyAgICAweEYxLDB4QkMsMHg0RSwweEE0LDB4MDIsMHgyQSwweEJELDB4OUQsMHhG
MCwweEJDLDB4OEYsMHhBQywweDcwLDB4RUEsMHhBRSwweEZCLAorICAgIDB4RDEsMHhCNCwweDhG
LDB4QUMsMHg1RiwweDVGLDB4QTAsMHhBQywweEIwLDB4QjQsMHg5MCwweEFDLDB4MkUsMHg4Qiww
eDA0LDB4MzYsCisgICAgMHhEMCwweEI0LDB4NkYsMHhBQywweEE3LDB4QkYsMHhCNywweEY0LDB4
QjAsMHhCNCwweDZGLDB4QUMsMHhGOCwweEUyLDB4QTgsMHhFOCwKKyAgICAweEIwLDB4QjQsMHg0
RiwweEE0LDB4NUEsMHhCOCwweEJBLDB4RUUsMHg4RiwweEFDLDB4NEUsMHhBNCwweDU3LDB4NEYs
MHhDMywweENFLAorICAgIDB4NkYsMHhBQywweDBFLDB4QTQsMHgyOCwweDg4LDB4ODgsMHg3QSww
eDZGLDB4QUMsMHgyRSwweEE0LDB4RUEsMHg3MiwweEZFLDB4N0QsCisgICAgMHg0RSwweEE0LDB4
MEQsMHg5QywweEVGLDB4QkYsMHhCRSwweDRCLDB4MkUsMHhBNCwweEVELDB4OUIsMHg4MCwweENC
LDB4N0YsMHg3RSwKKyAgICAweDY0LDB4NTksMHgwMiwweDQ5LDB4RUYsMHhFQSwweDNDLDB4N0Ys
MHg4NCwweDU5LDB4MjMsMHg1MSwweEFGLDB4M0IsMHhCRSwweEZELAorICAgIDB4ODQsMHg1OSww
eDQzLDB4NTEsMHg3NywweDU2LDB4RjQsMHgyRiwweDg0LDB4NTksMHg0MywweDUxLDB4RUIsMHhF
RCwweEY4LDB4N0UsCisgICAgMHg4NCwweDU5LDB4MjIsMHg0OSwweDdFLDB4NUUsMHhFRSwweDcz
LDB4NDMsMHg1MSwweDAyLDB4NDksMHg1RSwweENFLDB4N0UsMHg1RSwKKyAgICAweDIzLDB4NDks
MHgwMiwweDQxLDB4RkIsMHgyMCwweDAyLDB4MDAsMHgyMiwweDQ5LDB4MDIsMHg0MSwweENCLDB4
NTYsMHg4QiwweEY2LAorICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHhBQiwweEVCLDB4RkEsMHhB
OCwweDIzLDB4NDksMHhFMiwweDQwLDB4QUIsMHhCQiwweERFLDB4N0UsCisgICAgMHgyMywweDQ5
LDB4RTIsMHg0MCwweEM4LDB4NzgsMHhFRiwweDhELDB4MDIsMHg0OSwweEUyLDB4NDAsMHhBMCww
eEI5LDB4MjUsMHg4NywKKyAgICAweDIzLDB4NDksMHhFMSwweDQwLDB4QkYsMHhBNSwweDBBLDB4
MkIsMHgwNSwweDZBLDB4NDMsMHg0OSwweEQ1LDB4RDUsMHgxNSwweDM1LAorICAgIDB4QUIsMHg5
QiwweDY2LDB4N0EsMHgyOSwweDg5LDB4MkYsMHgyMywweEFCLDB4QTMsMHg0OSwweDkzLDB4N0Is
MHhGOCwweDZFLDB4N0EsCisgICAgMHg2OSwweDlCLDB4MjksMHg5MywweEE2LDB4QkUsMHg2Qiww
eEZBLDB4NjksMHg5QiwweDA4LDB4OEIsMHhEQSwweEU4LDB4RTMsMHg3RSwKKyAgICAweDI4LDB4
OTMsMHhDNywweDgyLDB4RUEsMHhBOCwweDg4LDB4MjgsMHgyOCwweDhCLDB4RTgsMHg4QSwweDUw
LDB4NTIsMHg3RCwweEZCLAorICAgIDB4OEEsMHg5QiwweEU4LDB4ODIsMHg1NSwweEJELDB4QUQs
MHgyQiwweDBDLDB4QUMsMHhFOCwweDhBLDB4QkQsMHhBQiwweDJBLDB4MEEsCisgICAgMHgwQyww
eEFDLDB4QUEsMHhBMywweERELDB4M0UsMHhCQSwweDI4LDB4MEMsMHhBQywweDY5LDB4OUIsMHhB
MiwweEVBLDB4QTgsMHg3QSwKKyAgICAweENCLDB4QTMsMHg2NiwweDcyLDB4QTAsMHhFMCwweDdB
LDB4NUUsMHhDOCwweDgyLDB4MjUsMHg2QSwweEYwLDB4REUsMHg3NywweDVFLAorICAgIDB4NDYs
MHg3MiwweDA1LDB4NkEsMHgyQywweEFGLDB4MEIsMHgwMiwweDY3LDB4N0EsMHgyNiwweDZBLDB4
RkEsMHhBRiwweEE3LDB4MEEsCisgICAgMHg2NywweDcyLDB4MjYsMHg3MiwweDlFLDB4REUsMHhG
QywweDg4LDB4NDcsMHg3MiwweEE1LDB4NTksMHhFOCwweEY4LDB4NjIsMHg3QSwKKyAgICAweEM1
LDB4NTksMHg4NCwweDU5LDB4MkMsMHgyRiwweEFFLDB4OEUsMHhDNSwweDYxLDB4NDMsMHg1MSww
eDIwLDB4QTAsMHhBOCwweERFLAorICAgIDB4QzUsMHg1OSwweDIzLDB4NDksMHg4MCwweEZBLDB4
NUUsMHg1RCwweEE1LDB4NTEsMHgwMiwweDQxLDB4OUYsMHgyRiwweDJGLDB4ODIsCisgICAgMHg4
NCwweDUxLDB4NDMsMHg0OSwweDc4LDB4NzgsMHg3QywweDVBLDB4ODQsMHg1MSwweDQ0LDB4NDks
MHg2RiwweEZGLDB4QkYsMHhBRCwKKyAgICAweDY0LDB4NDksMHgyMywweDQxLDB4MzIsMHgyQSww
eDlFLDB4NUMsMHg2NCwweDQ5LDB4MjMsMHg0MSwweEUzLDB4OEIsMHhBRiwweEJGLAorICAgIDB4
NjQsMHg0OSwweDAzLDB4NDEsMHg3RiwweDdFLDB4REMsMHg3OCwweEE1LDB4NTksMHgwMywweDQx
LDB4M0QsMHgyRCwweDI5LDB4MkYsCisgICAgMHgwNSwweDYyLDB4QzUsMHg2MSwweDVFLDB4RDcs
MHhDQSwweEEyLDB4MDYsMHg2QSwweEE0LDB4NTksMHg1QSwweDdDLDB4QzgsMHhBQiwKKyAgICAw
eEE0LDB4NTksMHgyMywweDQ5LDB4N0UsMHg3QywweDc4LDB4NUUsMHgyMywweDQ5LDB4QzEsMHgz
OCwweDg4LDB4QkIsMHhGRSwweDZDLAorICAgIDB4MjMsMHg0MSwweEUyLDB4NDAsMHhERiwweEJB
LDB4MEIsMHg0MywweDIzLDB4NDEsMHhFMiwweDM4LDB4NUEsMHhEQSwweDVGLDB4NTUsCisgICAg
MHgyMywweDQxLDB4QzIsMHgzMCwweEZCLDB4QTMsMHhGRiwweDdELDB4MDMsMHgzOSwweEMyLDB4
MzAsMHhGQSwweEZBLDB4RkYsMHhGRCwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4NUUsMHhG
QSwweEFFLDB4RjgsMHhBMiwweDI4LDB4ODEsMHgyOCwweDBFLDB4MEUsMHgwOCwweDAwLAorICAg
IDB4QzIsMHgyOCwweDgxLDB4MjAsMHhFQSwweDgyLDB4RTIsMHg1RSwweEEyLDB4MjAsMHg0MCww
eDE4LDB4QTgsMHhBQSwweEY4LDB4N0UsCisgICAgMHg4MiwweDIwLDB4NjEsMHgxOCwweDVCLDB4
NUQsMHhGOSwweDNELDB4QzIsMHgyOCwweDYxLDB4MTgsMHhENSwweEQ1LDB4OUQsMHgwRiwKKyAg
ICAweEUzLDB4MzAsMHhBMiwweDIwLDB4RkYsMHhFRiwweEVCLDB4QTIsMHhFMywweDMwLDB4QzIs
MHgyOCwweDU3LDB4NTIsMHgyQiwweEY3LAorICAgIDB4QTIsMHgzMCwweEMyLDB4MjgsMHhERiww
eEZELDB4NkQsMHhGNSwweDAzLDB4MzEsMHhBMiwweDI4LDB4RkYsMHhERiwweEJFLDB4M0IsCisg
ICAgMHgyMywweDM5LDB4QzIsMHgyOCwweDU1LDB4N0YsMHhFRiwweDhBLDB4MDMsMHgzMSwweEMy
LDB4MzAsMHg1NSwweDdBLDB4RjgsMHhGQSwKKyAgICAweEUzLDB4MzAsMHhBMiwweDMwLDB4MEEs
MHgyQSwweEVBLDB4N0EsMHhFMywweDM4LDB4ODEsMHgyOCwweEU4LDB4RUUsMHg1QiwweDVGLAor
ICAgIDB4QzIsMHgzMCwweDgxLDB4MjgsMHgwMiwweDhCLDB4QUYsMHhBRCwweEEyLDB4MzAsMHhF
MiwweDI4LDB4QkYsMHhCRSwweEVBLDB4RUEsCisgICAgMHgwMywweDMxLDB4QzIsMHgzMCwweDk1
LDB4OUQsMHhENywweEI1LDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGQSwweEVBLDB4RUYsMHhFQiwK
KyAgICAweEUzLDB4MzgsMHhDMiwweDMwLDB4RjcsMHhERiwweDJGLDB4MEUsMHgwMywweDM5LDB4
QzIsMHgzMCwweDM3LDB4QkIsMHg2QSwweEFBLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhB
MiwweEVCLDB4RUIsMHgwMCwweDAzLDB4MzksMHhDMywweDMwLDB4OUEsMHhCQiwweEIzLDB4Rjgs
CisgICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweDU3LDB4RTMsMHhFQSwweEFCLDB4MDMsMHgzMSww
eEMzLDB4MzAsMHg1RSwweERFLDB4QkUsMHhERSwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4
N0EsMHhCOCwweEY4LDB4RjAsMHhDMiwweDI4LDB4QTIsMHgyOCwweDc1LDB4NjYsMHhGNywweDFG
LAorICAgIDB4RTIsMHgzMCwweDgxLDB4MjgsMHhGRiwweDVELDB4NzUsMHhGRSwweEUzLDB4MzAs
MHg4MSwweDIwLDB4MkIsMHhBQiwweEZGLDB4RkQsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCww
eEI3LDB4RUEsMHhCMywweEI5LDB4RTMsMHgzMCwweEEyLDB4MjgsMHhGQSwweEZBLDB4NzQsMHhE
RiwKKyAgICAweEEyLDB4MjgsMHg4MSwweDIwLDB4MjgsMHhCMCwweEE4LDB4ODAsMHhFMiwweDI4
LDB4ODIsMHgyOCwweEJGLDB4RkYsMHg3NSwweEZGLAorICAgIDB4QzIsMHgyOCwweEEyLDB4Mjgs
MHhFQSwweDdBLDB4NTUsMHg5RCwweEUzLDB4MzAsMHg4MSwweDI4LDB4RkYsMHg3RiwweEEyLDB4
QTIsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDBCLDB4ODksMHgwOSwweEJELDB4RTMsMHgz
MCwweEEyLDB4MzAsMHg4MCwweEFBLDB4RkYsMHhGRSwKKyAgICAweEUyLDB4MzAsMHhBMiwweDI4
LDB4RkEsMHhGQSwweEY3LDB4NTYsMHhFMiwweDMwLDB4QzIsMHgzMCwweDNCLDB4OUYsMHg1Riww
eERFLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGQSwweDgyLDB4N0EsMHg1NSwweEUzLDB4
MzAsMHhDMiwweDMwLDB4RkYsMHhCOSwweDRCLDB4NzcsCisgICAgMHhFMywweDMwLDB4QTEsMHgy
OCwweEI4LDB4QkMsMHhBRSwweEI3LDB4MjMsMHgzOSwweEMyLDB4MjgsMHhBRiwweEJGLDB4QkYs
MHhENywKKyAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4N0EsMHg1MCwweDlDLDB4QkMsMHgwMyww
eDMxLDB4RTMsMHgzMCwweEU5LDB4REQsMHg1NiwweDVFLAorICAgIDB4MjQsMHgzMSwweEMyLDB4
MzAsMHhGRiwweEY1LDB4NkYsMHhERiwweDI0LDB4MzEsMHhDMiwweDMwLDB4RkIsMHhERiwweEZE
LDB4RTMsCisgICAgMHgwMywweDMxLDB4QzMsMHgzMCwweEYyLDB4RkYsMHhGQSwweDdGLDB4RTMs
MHgzMCwweEMyLDB4MjgsMHhDMCwweDYwLDB4NjAsMHg0MywKKyAgICAweDAzLDB4MzEsMHhBMiww
eDI4LDB4QUEsMHgyQSwweEVCLDB4RjksMHgwMywweDM5LDB4QTIsMHgyOCwweDJFLDB4QUUsMHhG
NywweEY3LAorICAgIDB4RTMsMHgzMCwweEMyLDB4MjgsMHgxOCwweEFBLDB4NzIsMHhGQiwweDQ1
LDB4MzksMHhFMywweDMwLDB4Q0IsMHhGRCwweEQ1LDB4RDUsCisgICAgMHgwMywweDMxLDB4QzIs
MHgzMCwweEUyLDB4OUUsMHhCQywweEI4LDB4MjMsMHg0MSwweEUyLDB4MzAsMHgyMCwweDNFLDB4
QkYsMHgzNiwKKyAgICAweDY1LDB4NDEsMHgyMywweDQxLDB4OUYsMHhCRiwweERFLDB4OUYsMHhB
NSwweDUxLDB4NDMsMHg0MSwweDU3LDB4REQsMHhCRCwweEZGLAorICAgIDB4QzUsMHg1OSwweDQ0
LDB4NDksMHhCQiwweDM5LDB4QkYsMHhGRCwweDA2LDB4NjIsMHhDNSwweDUxLDB4QUIsMHg4QSww
eENELDB4RTUsCisgICAgMHgyNiwweDYyLDB4QzUsMHg1OSwweERFLDB4QkIsMHgyRiwweDhGLDB4
NEIsMHg4MywweDI2LDB4NjIsMHgyRCwweDJELDB4MjksMHgyRiwKKyAgICAweEVELDB4OUIsMHg4
QywweDhCLDB4MDMsMHg4MSwweDhCLDB4QUIsMHhFRCwweDlCLDB4OEMsMHg4QiwweDdDLDB4RUYs
MHhCQSwweEFFLAorICAgIDB4QUMsMHg5MywweDZCLDB4OEIsMHhBRiwweEM0LDB4NDgsMHg4MCww
eENELDB4OUIsMHg0QiwweDhCLDB4MkEsMHgzQiwweDlELDB4RDcsCisgICAgMHhFRCwweDlCLDB4
OEMsMHg4QiwweDgzLDB4QUEsMHhBRiwweEY1LDB4RUQsMHg5QiwweEFDLDB4OTMsMHhBQiwweEYz
LDB4OTIsMHhFQSwKKyAgICAweDBELDB4OUMsMHg4QywweDkzLDB4ODAsMHgwQSwweEE5LDB4OUQs
MHgyRSwweEE0LDB4Q0QsMHg5MywweEVBLDB4MkUsMHhBRCwweEVBLAorICAgIDB4NkUsMHhBNCww
eEVELDB4OUIsMHgyMywweEVGLDB4RUYsMHhERCwweEIwLDB4QjQsMHgwRCwweDlDLDB4OEEsMHhB
QiwweEY1LDB4RkQsCisgICAgMHhCMCwweEI0LDB4MEUsMHg5QywweEEwLDB4QUUsMHhCRSwweEY3
LDB4OEYsMHhBQywweDJFLDB4QTQsMHgwQSwweDBFLDB4QUYsMHg3RCwKKyAgICAweEIwLDB4QjQs
MHgwRSwweDlDLDB4ODgsMHhFQSwweEFGLDB4N0YsMHg4RiwweEFDLDB4MkUsMHhBNCwweDgwLDB4
RUYsMHhCRiwweDU1LAorICAgIDB4OEYsMHhBQywweDBELDB4OUMsMHg4OCwweEFBLDB4RUIsMHg1
NSwweDhGLDB4QUMsMHhDQywweDkzLDB4OEEsMHhFQSwweDc3LDB4N0YsCisgICAgMHg0RSwweEE0
LDB4Q0QsMHg5MywweEE4LDB4QkIsMHhGRiwweEZELDB4MkUsMHhBNCwweEVELDB4OUIsMHgyMyww
eEUwLDB4NTksMHg1NSwKKyAgICAweDRFLDB4QTQsMHhFRCwweDlCLDB4RkUsMHg3MywweERELDB4
RDUsMHg0RiwweEE0LDB4RUQsMHg5QiwweDVFLDB4RkUsMHhFRiwweDgyLAorICAgIDB4NjQsMHg1
MSwweDAyLDB4NTEsMHg5RSwweEVBLDB4QUEsMHhCQywweDYzLDB4NTEsMHgyMiwweDUxLDB4QkYs
MHhCQSwweEEyLDB4QTgsCisgICAgMHg4NCwweDU5LDB4NDMsMHg1MSwweEFFLDB4Q0UsMHhFOSww
eEVGLDB4NjQsMHg1MSwweDIzLDB4NTEsMHhGQSwweEM4LDB4QTIsMHhBQSwKKyAgICAweDY0LDB4
NTEsMHgyMywweDQ5LDB4Q0EsMHg1NSwweDU3LDB4N0YsMHg0MywweDQ5LDB4MDIsMHg0OSwweDZB
LDB4N0UsMHg1NSwweDdELAorICAgIDB4MjMsMHg0OSwweEUxLDB4NDAsMHg4MiwweDJELDB4QTks
MHhCQiwweDIzLDB4NDksMHhFMiwweDQwLDB4QUEsMHhFMCwweDc4LDB4RjcsCisgICAgMHgyMyww
eDQ5LDB4MDIsMHg0MSwweEIyLDB4RkQsMHg1RCwweDVELDB4MjMsMHg0OSwweEMyLDB4NDAsMHhG
QSwweERBLDB4QkEsMHg4QSwKKyAgICAweDIzLDB4NDksMHhDMiwweDQwLDB4MEQsMHgyRiwweEVB
LDB4QkEsMHg0NCwweDQ5LDB4RTIsMHg0MCwweDhFLDB4OUIsMHhBRiwweEJCLAorICAgIDB4MjMs
MHg0OSwweEUzLDB4NDAsMHhFRiwweEUzLDB4RUUsMHg2QSwweDA4LDB4OEIsMHgwMywweDQ5LDB4
QjUsMHhCNSwweEFELDB4MkQsCisgICAgMHhBQiwweDlCLDB4MDgsMHg4QiwweEE5LDB4MEQsMHgw
QiwweEFCLDB4QUIsMHg5QiwweDQ5LDB4OTMsMHhDOCwweDYyLDB4NTgsMHg3QywKKyAgICAweDZB
LDB4OUIsMHgyOSwweDkzLDB4RUIsMHhFQSwweEJFLDB4N0UsMHg0OSwweDkzLDB4RTgsMHg4QSww
eDYwLDB4RjAsMHhFQSwweDgwLAorICAgIDB4NDksMHg5MywweEU3LDB4OEEsMHhGRSwweERCLDB4
QkYsMHgwMCwweDZBLDB4OUIsMHgwOCwweDhCLDB4REQsMHg5NSwweDlGLDB4MkUsCisgICAgMHhD
QiwweEEzLDB4NjksMHg5MywweDI1LDB4MkYsMHhFRiwweEI3LDB4MEMsMHhBQywweEFBLDB4OUIs
MHhBQiwweEY3LDB4NzUsMHhGNSwKKyAgICAweEVDLDB4QTMsMHg0OSwweDhCLDB4MDAsMHgwMCww
eDhBLDB4N0EsMHhDQiwweEEzLDB4ODYsMHg3QSwweEU4LDB4NzgsMHg1RSwweDU3LAorICAgIDB4
ODYsMHg3QSwweDI2LDB4NkEsMHhGOCwweEFBLDB4REMsMHhGRiwweDY2LDB4NzIsMHgyNSwweDZB
LDB4RjAsMHhGRSwweDVBLDB4ODIsCisgICAgMHg2NiwweDcyLDB4MjUsMHg3MiwweDIxLDB4RUIs
MHhFRiwweENFLDB4ODcsMHg3QSwweDQ2LDB4NzIsMHg3MSwweDdCLDB4REQsMHg3MiwKKyAgICAw
eDY3LDB4NzIsMHhDNSwweDYxLDB4QzIsMHhBOCwweEY4LDB4NzIsMHhFNSwweDYxLDB4NjMsMHg1
MSwweEMwLDB4RjgsMHhGRSwweDVDLAorICAgIDB4QzQsMHg1OSwweDIyLDB4NDEsMHhBOCwweEVB
LDB4RkYsMHg1NSwweDg0LDB4NTEsMHgyMywweDQ5LDB4RjgsMHg2QSwweDdFLDB4NTUsCisgICAg
MHhBNSwweDUxLDB4MDIsMHg0MSwweEJELDB4QkYsMHgyQiwweEFCLDB4QTUsMHg1OSwweDQzLDB4
NDksMHhBQSwweEVBLDB4NjgsMHhFQSwKKyAgICAweDg0LDB4NDksMHgyMywweDQxLDB4QUMsMHhG
RSwweEFCLDB4QUEsMHhBNSwweDUxLDB4NDQsMHg0OSwweDhGLDB4RUIsMHhGQSwweDdGLAorICAg
IDB4NjQsMHg0OSwweDIzLDB4NDEsMHhGRSwweEZBLDB4RkEsMHg1RiwweDY0LDB4NDksMHgyMyww
eDQxLDB4QUEsMHhBMCwweEI1LDB4QkIsCisgICAgMHg0NCwweDQ5LDB4MDMsMHgzOSwweEE4LDB4
QjIsMHg3QywweDU2LDB4ODQsMHg1MSwweEUyLDB4MzgsMHgyRiwweEJGLDB4OUQsMHg1NSwKKyAg
ICAweEU1LDB4NjEsMHgyMywweDQ5LDB4MDAsMHgwMiwweDAzLDB4MjksMHhFNSwweDYxLDB4QTQs
MHg1OSwweEZBLDB4NUEsMHhCQSwweDc4LAorICAgIDB4QzUsMHg2MSwweDIzLDB4NDksMHg3OCww
eDdBLDB4RjAsMHhGMCwweDIzLDB4NDksMHhFMiwweDQwLDB4RUEsMHg2QywweEE4LDB4MDAsCisg
ICAgMHgyMywweDQxLDB4RTIsMHgzOCwweDYzLDB4RTEsMHg3RSwweDZBLDB4MDMsMHg0MSwweEMy
LDB4MzgsMHhGRiwweDVCLDB4N0EsMHhFRSwKKyAgICAweEUyLDB4MzgsMHhDMiwweDMwLDB4Rjgs
MHhFRiwweDY3LDB4REYsMHhFMywweDMwLDB4QzIsMHgzMCwweEJGLDB4QkEsMHg3RSwweDVBLAor
ICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHg2QSwweDhBLDB4QUIsMHgzQSwweEUzLDB4MzAsMHg4
MSwweDIwLDB4RkYsMHg3QiwweEY4LDB4NjgsCisgICAgMHhBMiwweDI4LDB4NDAsMHgxOCwweDY4
LDB4RkEsMHhFQSwweEZFLDB4ODIsMHgxOCwweDQxLDB4MTgsMHg3QSwweEZGLDB4QUYsMHhBRiwK
KyAgICAweEExLDB4MjAsMHg0MCwweDE4LDB4QkQsMHgyQSwweDJCLDB4MkIsMHhDMiwweDI4LDB4
QTIsMHgyMCwweDBCLDB4RTIsMHg2MSwweERCLAorICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHhC
RiwweEFGLDB4QkQsMHgyRCwweDI0LDB4MzksMHhDMiwweDI4LDB4RDUsMHhERCwweEI3LDB4MEEs
CisgICAgMHg2NSwweDQxLDB4QzIsMHgyOCwweDU3LDB4REYsMHhFRiwweDAyLDB4NjUsMHg0MSww
eEMxLDB4MjgsMHhGNSwweEVGLDB4ODIsMHg4MCwKKyAgICAweDQ0LDB4NDEsMHhFMywweDMwLDB4
RkIsMHg3RSwweEJDLDB4QkMsMHgyMywweDM5LDB4QzIsMHgzMCwweDU1LDB4NzYsMHhGRSwweEU4
LAorICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHg1RiwweERGLDB4RkIsMHg2MCwweEMyLDB4MzAs
MHg4MSwweDI4LDB4RDAsMHhFMCwweEYwLDB4MEEsCisgICAgMHgwMywweDM5LDB4QTIsMHgzMCww
eEQ1LDB4REQsMHhCRCwweDgzLDB4RTMsMHgzOCwweEEyLDB4MjgsMHhCRSwweEZFLDB4RjgsMHhF
OCwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4QTksMHhFQiwweDc3LDB4QjUsMHgwMywweDM5
LDB4RTIsMHgzMCwweDdBLDB4NzIsMHg2MSwweDc4LAorICAgIDB4MjQsMHgzOSwweEMyLDB4MzAs
MHhFRiwweEEzLDB4QkIsMHhGRCwweDIzLDB4MzksMHhFMiwweDMwLDB4OEYsMHhGQSwweEVGLDB4
NzUsCisgICAgMHgyMywweDM5LDB4RTMsMHgzMCwweEEyLDB4QkEsMHhBQiwweEY5LDB4MDMsMHgz
OSwweEEyLDB4MjgsMHhFOCwweEY4LDB4RjgsMHhEQywKKyAgICAweDAzLDB4MzksMHhBMiwweDI4
LDB4MjIsMHhBRiwweEZELDB4RjcsMHhFMiwweDMwLDB4QTMsMHgyOCwweEZFLDB4QUEsMHhFQSww
eDAyLAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhFQSwweEE3LDB4QUYsMHgyRiwweEUzLDB4
MzAsMHhBMiwweDI4LDB4RTcsMHhGRiwweEVGLDB4MkUsCisgICAgMHhFMiwweDMwLDB4QTIsMHgy
OCwweEY3LDB4REYsMHhGRiwweEY4LDB4QzIsMHgyOCwweDYxLDB4MjAsMHg3RiwweEZBLDB4MDgs
MHgwMCwKKyAgICAweEMyLDB4MjgsMHg4MSwweDIwLDB4QkQsMHhGRCwweEVCLDB4OEIsMHhDMiww
eDMwLDB4ODEsMHgyMCwweEFBLDB4RUIsMHhGRCwweDdBLAorICAgIDB4QTIsMHgyOCwweDYxLDB4
MjAsMHhCMCwweEVGLDB4QkUsMHhGRSwweEEyLDB4MjgsMHg4MSwweDIwLDB4MEEsMHg4RCwweEVE
LDB4N0QsCisgICAgMHhDMiwweDI4LDB4NjEsMHgyMCwweDBBLDB4MkEsMHgwMSwweDBBLDB4RTIs
MHgzMCwweEEyLDB4MjgsMHg4RSwweEI3LDB4Q0IsMHg4OCwKKyAgICAweEUzLDB4MzAsMHhBMiww
eDI4LDB4NkYsMHhBQywweDJGLDB4MkYsMHgwNCwweDMxLDB4QzMsMHgzMCwweDU1LDB4REEsMHg1
RSwweEZGLAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHg1RiwweDJDLDB4OUIsMHhCQiwweDAz
LDB4MzksMHhDMiwweDMwLDB4N0YsMHhEQSwweEVBLDB4NkEsCisgICAgMHhFMiwweDMwLDB4QTIs
MHgyOCwweEJBLDB4QUYsMHhBNSwweEQ3LDB4RTIsMHgzMCwweEEyLDB4MjgsMHhGQSwweEZFLDB4
RUUsMHhCRiwKKyAgICAweEMyLDB4MjgsMHhBMiwweDI4LDB4RDcsMHhCRCwweEFFLDB4QTAsMHgw
MywweDMxLDB4QzIsMHgyOCwweEY3LDB4QkYsMHgyQSwweEFCLAorICAgIDB4MDMsMHgzMSwweEUz
LDB4MzAsMHhGNSwweEU3LDB4RkYsMHg3QiwweDI0LDB4MzksMHhFMywweDMwLDB4RUIsMHhCMiww
eEFGLDB4MjksCisgICAgMHgyNCwweDM5LDB4QzIsMHgyOCwweDdFLDB4RUEsMHhFMiwweEMzLDB4
MjQsMHgzOSwweEMyLDB4MjgsMHhFMywweEFELDB4NkIsMHg1RSwKKyAgICAweEUzLDB4MzAsMHhD
MiwweDI4LDB4QkEsMHgzQywweDI5LDB4OEQsMHgwMywweDMxLDB4QzIsMHgzMCwweDZCLDB4RkEs
MHhGRSwweEZGLAorICAgIDB4MjMsMHgzMSwweEMyLDB4MzAsMHhGRCwweEZCLDB4RkYsMHg1Nyww
eEUzLDB4MzAsMHhDMiwweDI4LDB4RDcsMHhGNywweEZBLDB4MDIsCisgICAgMHgwMywweDMxLDB4
QTMsMHgzMCwweEFCLDB4MEEsMHhBQSwweDA4LDB4MDMsMHgzMSwweEMzLDB4MzAsMHgyQywweEJD
LDB4RkUsMHg4MiwKKyAgICAweDAzLDB4MzEsMHhFMiwweDMwLDB4RDgsMHg1NSwweEFGLDB4RkIs
MHg0NCwweDQxLDB4RTIsMHgzMCwweDJGLDB4QTUsMHhCRCwweEY3LAorICAgIDB4NjQsMHg0OSww
eDAzLDB4MzksMHhBQSwweDAyLDB4QUUsMHhGNywweEE1LDB4NTEsMHgyMywweDQxLDB4M0UsMHgy
QiwweERGLDB4RkQsCisgICAgMHhBNSwweDUxLDB4NDQsMHg0OSwweEZGLDB4QUEsMHhBQywweEQ2
LDB4QzUsMHg1MSwweDY0LDB4NDksMHhBQSwweDNGLDB4QUQsMHgyOSwKKyAgICAweDQ4LDB4NkEs
MHhDNSwweDUxLDB4RkQsMHhCRiwweDNELDB4MzksMHhBQywweDkzLDB4ODgsMHg3MiwweEFELDB4
MkQsMHgyOSwweDJGLAorICAgIDB4MEUsMHg5QywweEFELDB4OTMsMHhERCwweDVGLDB4QUIsMHhB
QiwweEVELDB4OUIsMHg4QywweDhCLDB4MjcsMHhFRiwweDdFLDB4QTgsCisgICAgMHhDRCwweDkz
LDB4OEMsMHg4QiwweEZBLDB4N0EsMHg2QSwweDc2LDB4QUQsMHg5MywweDZCLDB4OEIsMHhCNiww
eERGLDB4RkIsMHg1RSwKKyAgICAweDhDLDB4OTMsMHg0QiwweDgzLDB4QzAsMHhCRCwweEI3LDB4
NkEsMHhDRCwweDkzLDB4NEIsMHg4MywweDAyLDB4MEEsMHgzQiwweDJELAorICAgIDB4Q0QsMHg5
MywweEFDLDB4OTMsMHg5QSwweDMwLDB4OTgsMHg1QywweDJFLDB4QTQsMHhDRCwweDkzLDB4RUIs
MHhGRCwweERGLDB4MzUsCisgICAgMHgyRSwweEE0LDB4Q0QsMHg5MywweEZGLDB4RkYsMHg2Riww
eENELDB4MkUsMHhBNCwweENELDB4OTMsMHg4QiwweEVGLDB4OUIsMHhCRiwKKyAgICAweDJFLDB4
QTQsMHhFRSwweDlCLDB4RkEsMHg4MiwweEFFLDB4NkIsMHgyRSwweEE0LDB4Q0QsMHg5MywweDAy
LDB4QUIsMHg3QSwweEY5LAorICAgIDB4MkUsMHhBNCwweENELDB4OTMsMHhBOCwweEE4LDB4MkIs
MHhBRCwweDBELDB4OUMsMHhDQywweDkzLDB4MDAsMHgyMCwweEE4LDB4NUEsCisgICAgMHgyRCww
eDlDLDB4QUMsMHg5MywweEU4LDB4RTgsMHhGQSwweDVGLDB4Q0QsMHg5MywweEFDLDB4OTMsMHg4
MywweEVGLDB4QUMsMHgzOSwKKyAgICAweEVELDB4OUIsMHhBQywweDkzLDB4M0YsMHhERiwweEVC
LDB4N0EsMHhFRCwweDlCLDB4Q0MsMHg5MywweDAwLDB4MkEsMHhGRiwweDk1LAorICAgIDB4MEQs
MHg5QywweENDLDB4OTMsMHg4QSwweDI4LDB4MkIsMHgyQiwweDRGLDB4QTQsMHhFRCwweDlCLDB4
MEYsMHhBRiwweERGLDB4NkQsCisgICAgMHg0MywweDUxLDB4MjMsMHg0OSwweDE3LDB4OTUsMHhB
QSwweDM5LDB4NjMsMHg1MSwweDIzLDB4NDksMHg2QSwweEVBLDB4RUUsMHg3RCwKKyAgICAweDY0
LDB4NTEsMHgyMywweDQ5LDB4Q0IsMHg3MywweEVFLDB4NjksMHg2NCwweDUxLDB4MjMsMHg0OSww
eEFBLDB4NkEsMHg3RiwweEVELAorICAgIDB4NDMsMHg0OSwweDAyLDB4NDksMHg2QywweDVGLDB4
NTcsMHg1OCwweDIyLDB4NDksMHhFMSwweDQwLDB4RUMsMHhERSwweEVCLDB4QUUsCisgICAgMHgw
MiwweDQ5LDB4RTIsMHg0MCwweEZFLDB4OEEsMHhGMiwweDhBLDB4MjMsMHg0OSwweEUyLDB4NDAs
MHhFNywweEFGLDB4OTksMHg1NSwKKyAgICAweDIzLDB4NDksMHhDMSwweDM4LDB4MEEsMHg4Miww
eEFBLDB4QjcsMHgyMiwweDQ5LDB4RTMsMHg0MCwweEFBLDB4MkIsMHhBQiwweEZGLAorICAgIDB4
MjMsMHg0OSwweEUyLDB4NDAsMHg3NywweEI3LDB4MTcsMHhGQiwweDIzLDB4NDksMHhFMywweDQw
LDB4QzMsMHg4QiwweDhFLDB4MkYsCisgICAgMHg0MywweDUxLDB4MDMsMHg0OSwweERELDB4NDMs
MHhFRCwweEJELDB4NDksMHg5MywweDQzLDB4NTEsMHgyNSwweDJELDB4MkQsMHgwRCwKKyAgICAw
eEFBLDB4OUIsMHg2OSwweDkzLDB4RjcsMHhBRSwweEUzLDB4NkIsMHg4QSwweDlCLDB4NDksMHg5
MywweEJBLDB4RjgsMHhGQSwweEVGLAorICAgIDB4NjksMHg5QiwweDQ5LDB4OTMsMHhENiwweDU1
LDB4RTUsMHg1NSwweDg5LDB4OUIsMHgyOCwweDkzLDB4RDcsMHg2NywweDE3LDB4M0QsCisgICAg
MHg4QSwweDlCLDB4MjksMHg5MywweDdELDB4N0YsMHg3QSwweEMwLDB4NkEsMHg5QiwweDI5LDB4
OTMsMHg2QiwweDNFLDB4QkEsMHhCRSwKKyAgICAweDhBLDB4OUIsMHg0OSwweDkzLDB4MjcsMHgw
RiwweEFBLDB4QkYsMHhDQiwweEEzLDB4MjksMHg4QiwweDhBLDB4QUEsMHhFQSwweEZGLAorICAg
IDB4OEEsMHg5QiwweDY2LDB4N0EsMHhBMCwweDc4LDB4N0UsMHg1NywweEE3LDB4N0EsMHg0Niww
eDcyLDB4RjgsMHg3QiwweEZFLDB4RkYsCisgICAgMHg4NywweDdBLDB4MjUsMHg2QSwweEZGLDB4
NkEsMHhBQiwweEFCLDB4ODYsMHg3QSwweDQ1LDB4NkEsMHhFQiwweEFELDB4QjYsMHhFOCwKKyAg
ICAweDg3LDB4NzIsMHg0NiwweDcyLDB4RjcsMHg4NywweDA4LDB4NkEsMHg4NywweDdBLDB4MDYs
MHg2MiwweDgyLDB4ODAsMHg4MiwweDcyLAorICAgIDB4NDYsMHg2QSwweDIzLDB4NDksMHhFMCww
eEZBLDB4N0EsMHhENiwweDg0LDB4NTksMHgwMiwweDQxLDB4QTgsMHhCRSwweDc3LDB4N0YsCisg
ICAgMHg0MywweDQ5LDB4MjMsMHg0MSwweERDLDB4RDcsMHhBNSwweDg5LDB4NjMsMHg0OSwweDIz
LDB4NDksMHg5NywweDJGLDB4MkEsMHgwQSwKKyAgICAweEE1LDB4NTksMHg2NCwweDUxLDB4QkQs
MHgyRCwweDhGLDB4QkIsMHg4NCwweDUxLDB4NDMsMHg0OSwweEVFLDB4NjgsMHhGRSwweEZDLAor
ICAgIDB4NjQsMHg0OSwweDQzLDB4NDksMHgxQSwweDk1LDB4MzcsMHg5OCwweDg1LDB4NDksMHg0
NCwweDQ5LDB4RkYsMHhBRSwweEJBLDB4RUIsCisgICAgMHg2NCwweDQ5LDB4MjQsMHg0MSwweDdG
LDB4RUMsMHg2RSwweDdFLDB4NDQsMHg0OSwweDI0LDB4NDEsMHgyQSwweDZGLDB4RTUsMHgyRCwK
KyAgICAweDIzLDB4NDEsMHgwMywweDQxLDB4RUMsMHhGQSwweDIzLDB4RTAsMHgyMywweDQxLDB4
QzIsMHgzOCwweDJFLDB4QUUsMHhBQSwweEY0LAorICAgIDB4QTUsMHg1OSwweDAzLDB4NDEsMHgw
OSwweDA1LDB4RjUsMHg1NSwweEM1LDB4NTksMHgyMywweDQ5LDB4QTgsMHhBQSwweEFBLDB4QkQs
CisgICAgMHhBNCwweDUxLDB4NDMsMHg1MSwweEU4LDB4RkEsMHhGRSwweDdFLDB4NjQsMHg1MSww
eDAzLDB4NDEsMHhGRiwweEVBLDB4RkEsMHg2QywKKyAgICAweDIzLDB4NDEsMHhBMSwweDMwLDB4
RTgsMHhFQSwweDdBLDB4N0UsMHgwMywweDM5LDB4QTEsMHgzMCwweEFCLDB4OEIsMHhBRCwweEJF
LAorICAgIDB4RTIsMHgzOCwweEExLDB4MjgsMHgwMiwweDI4LDB4RUUsMHg3OCwweDAzLDB4Mzks
MHhDMiwweDMwLDB4NUUsMHhBQSwweDgyLDB4NTMsCisgICAgMHhFMywweDMwLDB4ODEsMHgyOCww
eDgyLDB4OEEsMHhFRiwweERGLDB4RTMsMHgzMCwweDgxLDB4MjAsMHhGQywweEZFLDB4RjcsMHg1
RCwKKyAgICAweEExLDB4MjAsMHg0MCwweDE4LDB4RjgsMHhGOCwweEY4LDB4N0EsMHg4MiwweDIw
LDB4NDAsMHgxOCwweEI5LDB4MkYsMHhBQiwweEFGLAorICAgIDB4QzIsMHgyOCwweDYxLDB4MTgs
MHhCNywweDJGLDB4MkIsMHgwMywweDAzLDB4MzEsMHhBMiwweDI4LDB4OUYsMHg4NywweDJCLDB4
MkEsCisgICAgMHg0NCwweDQxLDB4QzMsMHgzMCwweDJELDB4QkIsMHg4QSwweEJBLDB4NDQsMHg0
MSwweEMyLDB4MjgsMHgwMiwweDA4LDB4QkUsMHhERSwKKyAgICAweDg1LDB4NDEsMHhBMiwweDI4
LDB4MEEsMHhBOCwweEZFLDB4RjcsMHg0NCwweDQxLDB4QzIsMHgzMCwweDgwLDB4QUEsMHhFRiww
eDVELAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHg4OCwweEFCLDB4M0QsMHhENSwweDIzLDB4
NDEsMHgwMywweDM5LDB4NUQsMHg1RiwweDdCLDB4NTUsCisgICAgMHgwMywweDM5LDB4QzIsMHgz
MCwweDcyLDB4OTgsMHhBQSwweEEwLDB4MDMsMHgzOSwweEEyLDB4MzAsMHhFNSwweDJFLDB4OEEs
MHg4QSwKKyAgICAweDAzLDB4MzksMHhDMywweDMwLDB4RTIsMHhFQSwweEZFLDB4RjUsMHhDMiww
eDM4LDB4RTMsMHgzMCwweEY1LDB4QkYsMHhGRCwweEZGLAorICAgIDB4RTMsMHgzOCwweEExLDB4
MjgsMHgwMywweEFBLDB4QjYsMHg5RiwweDAzLDB4MzksMHhDMiwweDMwLDB4RUEsMHhBQSwweDIy
LDB4RjIsCisgICAgMHgwMywweDM5LDB4QTIsMHgzMCwweEFCLDB4QUIsMHhFRSwweDc4LDB4RTIs
MHgzMCwweEMyLDB4MzAsMHhFMSwweEEwLDB4MjMsMHhCQiwKKyAgICAweDAzLDB4MzEsMHhDMiww
eDI4LDB4QjksMHhCNSwweEE3LDB4RDUsMHhFMywweDMwLDB4ODEsMHgyOCwweEI4LDB4RjgsMHg3
QSwweDdGLAorICAgIDB4QzIsMHgyOCwweDgyLDB4MjgsMHgyOCwweDJGLDB4QUYsMHhGNSwweEUz
LDB4MzAsMHhBMiwweDI4LDB4MEEsMHhBRiwweEJELDB4RTksCisgICAgMHgwNCwweDMxLDB4QzMs
MHgzMCwweEJGLDB4RUQsMHhGRiwweEFELDB4RTMsMHgzMCwweEMyLDB4MjgsMHhDQywweDk4LDB4
RjAsMHhDMCwKKyAgICAweDAzLDB4MzksMHhFMywweDMwLDB4NTcsMHg3QiwweEVCLDB4QTUsMHhF
MywweDMwLDB4QTIsMHgyOCwweDdGLDB4RkYsMHgyRSwweEUyLAorICAgIDB4RTMsMHgzMCwweDgx
LDB4MjgsMHhBRCwweEFCLDB4QUEsMHhFQSwweEMyLDB4MjgsMHg4MiwweDI4LDB4NzgsMHhCMCww
eEMyLDB4ODAsCisgICAgMHhFMywweDMwLDB4ODEsMHgyMCwweDU1LDB4N0YsMHhFQSwweEEwLDB4
QzIsMHgyOCwweDYxLDB4MjAsMHhGRCwweEZCLDB4QUEsMHgwMCwKKyAgICAweEUyLDB4MzAsMHg4
MSwweDIwLDB4QUYsMHhBRCwweEJFLDB4MjgsMHgyMywweDM5LDB4QzIsMHgyOCwweEZELDB4RkYs
MHhFQiwweDhGLAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHgyQSwweEEwLDB4QTAsMHhGOCww
eDAzLDB4MzEsMHhDMiwweDMwLDB4MTUsMHhCNSwweEE3LDB4QUYsCisgICAgMHgwMywweDMxLDB4
QTIsMHgyOCwweDlDLDB4RkUsMHhGRiwweDU2LDB4RTMsMHgzMCwweEEyLDB4MjgsMHgwMiwweDAy
LDB4RUEsMHhERiwKKyAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4QUUsMHgwRSwweDJFLDB4Qjcs
MHhFMywweDMwLDB4QzIsMHgyOCwweERFLDB4OTYsMHgyRiwweEZGLAorICAgIDB4MDMsMHgzMSww
eEEyLDB4MjgsMHg2QSwweEUyLDB4QTAsMHhBQiwweDAzLDB4MzEsMHhBMiwweDMwLDB4QTksMHgy
MiwweDgyLDB4QTgsCisgICAgMHgwMywweDMxLDB4RTMsMHgzMCwweDIyLDB4NkEsMHhGMSwweEIy
LDB4MjQsMHgzOSwweEExLDB4MjgsMHgwQSwweEFBLDB4REYsMHg1RiwKKyAgICAweDI0LDB4Mzks
MHhDMiwweDMwLDB4RjgsMHg3QSwweDdGLDB4NUQsMHhFMywweDMwLDB4QTIsMHgyOCwweEYwLDB4
RjgsMHhGQSwweDdCLAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHgwNSwweEVELDB4OUYsMHhB
RiwweEUzLDB4MzAsMHhDMiwweDI4LDB4OEUsMHgyRiwweDBELDB4QTUsCisgICAgMHhFMywweDMw
LDB4QzIsMHgyOCwweDU2LDB4MkEsMHgzOSwweDJGLDB4RTMsMHgzMCwweEEyLDB4MjgsMHgwOCww
eEJFLDB4M0UsMHgyQSwKKyAgICAweDIzLDB4MzEsMHhFMiwweDMwLDB4OTcsMHhDNywweDk1LDB4
RjUsMHgwMywweDMxLDB4RTIsMHgzMCwweEUwLDB4NjgsMHg0MCwweEQ3LAorICAgIDB4MDMsMHgz
MSwweEExLDB4MjgsMHgyMiwweDgyLDB4QzIsMHhGQSwweDAzLDB4MzksMHhDMSwweDI4LDB4ODIs
MHgwMywweDA5LDB4MDUsCisgICAgMHg0NCwweDQxLDB4MDMsMHgzOSwweEZCLDB4MkIsMHhBQiww
eEVELDB4NjQsMHg0OSwweDIzLDB4NDEsMHg4RiwweEFELDB4OUQsMHhGNSwKKyAgICAweDY0LDB4
NDksMHgyMywweDQxLDB4NzksMHhFRSwweEUyLDB4RTAsMHhFNSwweDU5LDB4NDMsMHg0MSwweDJG
LDB4QUQsMHhBQiwweEFBLAorICAgIDB4QzgsMHg3QSwweEU0LDB4NTEsMHhCNywweEJELDB4MkQs
MHgyRiwweENELDB4OUIsMHhDOSwweDdBLDB4MkQsMHgwRCwweDI5LDB4MEIsCisgICAgMHgwRiww
eDlDLDB4Q0QsMHg5MywweEFGLDB4QTksMHhDMywweDJGLDB4RUQsMHg5QiwweEFELDB4OTMsMHhD
OCwweEEyLDB4NkEsMHg4MiwKKyAgICAweEVFLDB4OUIsMHg4QywweDhCLDB4NUUsMHg1QSwweEU4
LDB4QUEsMHhBQywweDkzLDB4NEIsMHg4MywweERBLDB4RkIsMHhGRiwweEY2LAorICAgIDB4OEIs
MHg4QiwweDRCLDB4ODMsMHhCQSwweDk5LDB4NzcsMHhBRiwweEFELDB4OTMsMHgyQSwweDgzLDB4
MzcsMHg5NywweEQ1LDB4RjUsCisgICAgMHhDRCwweDkzLDB4NkMsMHg4QiwweDgwLDB4QkEsMHgy
RiwweDJELDB4RUQsMHg5QiwweENELDB4OTMsMHgyNiwweDJGLDB4MzUsMHhGNSwKKyAgICAweDBE
LDB4OUMsMHhBQywweDkzLDB4ODAsMHgwQSwweDM5LDB4MkIsMHgwRSwweDlDLDB4Q0QsMHg5Qiww
eEFBLDB4QjksMHhFMCwweEUyLAorICAgIDB4RUQsMHg5QiwweENELDB4OTMsMHg2OCwweDIwLDB4
MEEsMHhFMiwweDBFLDB4OUMsMHhDRCwweDkzLDB4NjIsMHhERSwweENCLDB4Q0UsCisgICAgMHhF
RCwweDlCLDB4Q0QsMHg5MywweEUzLDB4NjgsMHg1NywweDk3LDB4RUQsMHg5QiwweEFELDB4OTMs
MHhGNiwweEVFLDB4M0EsMHhBQywKKyAgICAweEVELDB4OTMsMHg4QywweDkzLDB4REEsMHhBQSww
eDJBLDB4QTgsMHgwRCwweDlDLDB4QUMsMHg5MywweEZELDB4NTUsMHhENCwweDVGLAorICAgIDB4
Q0QsMHg5MywweDZCLDB4OEIsMHhFMCwweDJBLDB4MjIsMHhBMiwweENELDB4OTMsMHg4QywweDkz
LDB4MkEsMHgwMiwweEFFLDB4MkQsCisgICAgMHhFRCwweDlCLDB4OEMsMHg4QiwweDAyLDB4MEEs
MHgyQSwweEI2LDB4MkUsMHhBNCwweENELDB4OTMsMHg4RSwweEZFLDB4REYsMHhGRCwKKyAgICAw
eDQ0LDB4NTEsMHgwMywweDQ5LDB4RjIsMHhFOCwweEZCLDB4OTcsMHg0MywweDUxLDB4MDMsMHg0
OSwweDNBLDB4QUIsMHgyRiwweEE2LAorICAgIDB4NjMsMHg1MSwweDAzLDB4NDksMHhFQiwweEEw
LDB4RkIsMHhENywweDQ0LDB4NTEsMHgyMywweDQ5LDB4NkIsMHhFRiwweDUyLDB4NTUsCisgICAg
MHgyMiwweDQ5LDB4MDIsMHg0MSwweDgwLDB4MEYsMHhCQSwweEI4LDB4MjMsMHg0OSwweDAyLDB4
NDEsMHhENiwweERDLDB4MEMsMHhCRSwKKyAgICAweDIzLDB4NDksMHhDMSwweDM4LDB4QTIsMHhF
NiwweDYyLDB4QUEsMHgyMywweDQ5LDB4QzEsMHgzOCwweEZBLDB4NkYsMHgyRiwweDBBLAorICAg
IDB4MjMsMHg0MSwweEMxLDB4NDAsMHhGNiwweDg4LDB4RUEsMHhDRSwweDAyLDB4NDEsMHhDMiww
eDM4LDB4MjgsMHhDRCwweEFCLDB4OEIsCisgICAgMHgyMywweDQxLDB4RTMsMHg0MCwweEVFLDB4
MEYsMHgyNywweDNFLDB4MjMsMHg0OSwweEUyLDB4NDAsMHhCMiwweEQwLDB4RUEsMHhGQiwKKyAg
ICAweDQzLDB4NTEsMHhFMiwweDQwLDB4MkIsMHgwRiwweDNELDB4QkYsMHg2OSwweDkzLDB4QzQs
MHg1OSwweDJELDB4MDksMHgyOSwweDBELAorICAgIDB4QTksMHg5QiwweDY5LDB4OTMsMHg3Riww
eDUzLDB4N0UsMHg1NCwweDhBLDB4OUIsMHg0OSwweDkzLDB4RUYsMHhFQSwweEU4LDB4NkQsCisg
ICAgMHg2OSwweDkzLDB4MjgsMHg4QiwweEZFLDB4QTksMHhGRSwweDBFLDB4OEEsMHg5QiwweDQ5
LDB4OTMsMHhBNSwweDJELDB4MEQsMHhBMCwKKyAgICAweEFCLDB4OUIsMHg0OSwweDkzLDB4NDIs
MHhCQSwweEZBLDB4RDUsMHg4QSwweDlCLDB4NEEsMHg5MywweDlGLDB4QUIsMHhGQSwweERGLAor
ICAgIDB4OEEsMHg5QiwweEU5LDB4OEEsMHhCQSwweEU4LDB4RjgsMHhGQSwweDJBLDB4OTMsMHgw
NiwweDZBLDB4ODAsMHhFOCwweEZBLDB4N0UsCisgICAgMHg4NywweDdBLDB4MjUsMHg2QSwweEJD
LDB4RjgsMHhFRSwweDdGLDB4ODcsMHg3MiwweDQ2LDB4NzIsMHhBRCwweDgzLDB4OEEsMHg1OCwK
KyAgICAweDg3LDB4NzIsMHg0NiwweDcyLDB4QUEsMHhCQSwweEFCLDB4REQsMHhBNywweDdBLDB4
NDYsMHg3MiwweDVGLDB4OUEsMHhCRiwweDBBLAorICAgIDB4QTcsMHg3QSwweDQ2LDB4NkEsMHhF
QiwweEVFLDB4QzIsMHg2OCwweDQ2LDB4NzIsMHg2NCwweDUxLDB4RTAsMHhFMCwweDc4LDB4NUUs
CisgICAgMHg4NCwweDU5LDB4MDIsMHg0MSwweEZDLDB4NUUsMHhGRiwweERDLDB4NDMsMHg0OSww
eDAyLDB4NDEsMHhDMiwweEFBLDB4QUQsMHhCRiwKKyAgICAweDY0LDB4NTEsMHgwMiwweDQxLDB4
QTksMHg4RiwweEFGLDB4MkEsMHhBNSwweDUxLDB4NDMsMHg0OSwweEJGLDB4QTksMHhCQiwweDgy
LAorICAgIDB4QTQsMHg1MSwweDQzLDB4NDksMHhBOCwweEM4LDB4NkEsMHhGRSwweEE0LDB4NTEs
MHg0MywweDQ5LDB4REEsMHgzNSwweDI1LDB4RUYsCisgICAgMHg4NCwweDQ5LDB4NDQsMHg0OSww
eDdBLDB4NzgsMHhBMCwweDgwLDB4ODUsMHg0OSwweDQ0LDB4NDksMHhFQiwweDhCLDB4MzcsMHgx
NywKKyAgICAweDg0LDB4NDksMHg0NCwweDQ5LDB4NzcsMHhGRSwweEY2LDB4REIsMHg0NCwweDQx
LDB4MDMsMHg0MSwweEE4LDB4QUUsMHhBRSwweEVBLAorICAgIDB4NDQsMHg0OSwweDAzLDB4NDEs
MHhFRSwweDJGLDB4QUQsMHhCQSwweDI0LDB4NDEsMHhFMywweDM4LDB4RDYsMHhGQiwweEZDLDB4
QUEsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEE4LDB4NUEsMHg3NywweDVFLDB4NjQsMHg1
MSwweEEyLDB4MzgsMHgwQiwweEFGLDB4QjUsMHhGNSwKKyAgICAweDg0LDB4NTEsMHgwMywweDQx
LDB4QTAsMHhBMiwweDhBLDB4QTUsMHg2NCwweDUxLDB4MDIsMHg0MSwweEU4LDB4RUUsMHg2QSww
eEVCLAorICAgIDB4MjMsMHg0MSwweEMyLDB4MzAsMHg1RiwweDdCLDB4RUIsMHhFOCwweDAzLDB4
MzksMHhDMiwweDM4LDB4RkYsMHhGRiwweEE3LDB4OEYsCisgICAgMHgwMywweDM5LDB4QzIsMHgz
MCwweDU3LDB4REYsMHhGRSwweEZBLDB4RTMsMHgzMCwweDgxLDB4MjgsMHhBMiwweEVBLDB4RUEs
MHg1QSwKKyAgICAweEEyLDB4MjgsMHg2MSwweDIwLDB4QTAsMHhBMiwweDdBLDB4N0YsMHg4MSww
eDIwLDB4NDEsMHgxOCwweDgwLDB4RTgsMHg3RSwweDdGLAorICAgIDB4NjEsMHgyMCwweDQxLDB4
MTgsMHhFMiwweEVGLDB4RkQsMHg5NSwweEEyLDB4MjgsMHg0MSwweDE4LDB4QkQsMHhBRiwweEFG
LDB4M0YsCisgICAgMHhFMywweDI4LDB4ODEsMHgyMCwweDhCLDB4QUQsMHhGRiwweDU3LDB4RTMs
MHgzMCwweDgxLDB4MjAsMHgwQSwweEFCLDB4RUQsMHhGOSwKKyAgICAweEUzLDB4MzAsMHg4MSww
eDIwLDB4ODAsMHhFRiwweEZELDB4NTcsMHhDMiwweDI4LDB4ODEsMHgyMCwweDIwLDB4RjIsMHhB
RiwweEFGLAorICAgIDB4QzMsMHgzMCwweDgyLDB4MjAsMHhBNywweDk3LDB4RkYsMHhCRSwweEMz
LDB4MjgsMHg4MiwweDI4LDB4RUEsMHhFQiwweEZFLDB4NzYsCisgICAgMHgwMywweDM5LDB4ODEs
MHgyMCwweEFCLDB4MkYsMHhGRCwweEY1LDB4MjQsMHgzOSwweEUyLDB4MzAsMHhCRiwweEJFLDB4
QUUsMHhCNSwKKyAgICAweDI0LDB4MzksMHhFMywweDM4LDB4N0EsMHhGMywweERELDB4NzcsMHgw
MywweDM5LDB4QzIsMHgzMCwweEZGLDB4RkIsMHhGOCwweEVFLAorICAgIDB4RTMsMHgzMCwweEEx
LDB4MjgsMHgzRSwweEY4LDB4NzAsMHhBMiwweDAzLDB4MzksMHhBMiwweDI4LDB4OEYsMHhFQiww
eEZCLDB4N0YsCisgICAgMHhDMiwweDMwLDB4ODEsMHgyOCwweDI4LDB4MjgsMHhBOCwweEJELDB4
RTIsMHgzMCwweEEyLDB4MzAsMHhFQSwweEFBLDB4OEYsMHgyNiwKKyAgICAweEUzLDB4MzAsMHhB
MiwweDMwLDB4NDAsMHg4MiwweDAwLDB4MDIsMHhDMiwweDMwLDB4RTMsMHgyOCwweEJBLDB4MkEs
MHgwRSwweEJFLAorICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHg1QSwweDVFLDB4RTgsMHg1OCww
eEEyLDB4MjgsMHg4MSwweDIwLDB4N0IsMHg2QiwweDU4LDB4NzAsCisgICAgMHhBMiwweDI4LDB4
NjEsMHgyMCwweERGLDB4QkYsMHgxQiwweDJCLDB4QzMsMHgzMCwweEEyLDB4MjgsMHgyRCwweERG
LDB4Q0EsMHgyQiwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4MkIsMHhFQSwweEFCLDB4M0Ys
MHgwMywweDMxLDB4QzIsMHgzMCwweEVBLDB4RkIsMHhFQSwweDA5LAorICAgIDB4MDMsMHgzMSww
eEMzLDB4MzAsMHg4RiwweEJGLDB4QUYsMHhBRiwweEUzLDB4MzAsMHhBMSwweDI4LDB4QjIsMHhC
QywweEYwLDB4RkEsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEVCLDB4QUIsMHhCOSwweEJC
LDB4RTMsMHgzMCwweEEyLDB4MjgsMHhBRiwweDI2LDB4MkEsMHhBQSwKKyAgICAweDAzLDB4Mzks
MHhFMywweDMwLDB4NTcsMHg5RiwweDM5LDB4NDMsMHgyNCwweDM5LDB4QzIsMHgyOCwweDdFLDB4
RUUsMHhGRSwweERDLAorICAgIDB4MjMsMHgzOSwweEUzLDB4MzAsMHhDNSwweEJELDB4RUYsMHhG
NSwweDAzLDB4MzksMHhDMiwweDMwLDB4RUUsMHg3QSwweEU4LDB4RTgsCisgICAgMHhFMywweDMw
LDB4QzIsMHgyOCwweDUyLDB4MTUsMHhGNywweEZCLDB4MDIsMHgzMSwweEEyLDB4MjgsMHgzRiww
eEZGLDB4QkQsMHhGRiwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4RkMsMHhGQywweDVGLDB4
NTcsMHhFMywweDMwLDB4QTIsMHgyOCwweEJELDB4RTMsMHg3QiwweEVBLAorICAgIDB4QzIsMHgy
OCwweEEyLDB4MjgsMHhERiwweEQ2LDB4QTUsMHg4RiwweEMyLDB4MzAsMHhBMiwweDI4LDB4RDYs
MHg5NSwweEE1LDB4QUQsCisgICAgMHgwMywweDMxLDB4QzIsMHgyOCwweDM1LDB4QTUsMHhBRCww
eDlELDB4MDMsMHgzMSwweEMzLDB4MzAsMHgwOCwweDgwLDB4QUEsMHhERSwKKyAgICAweDI0LDB4
MzksMHhFMywweDMwLDB4N0UsMHhBNywweEVELDB4NkIsMHgwMywweDMxLDB4QTIsMHgyOCwweDdF
LDB4RjgsMHhGQSwweEFBLAorICAgIDB4RTMsMHgzMCwweEMyLDB4MjgsMHg3OSwweEZGLDB4NkIs
MHhDMCwweDAzLDB4MzEsMHhDMiwweDI4LDB4NTUsMHhERCwweEYzLDB4QjgsCisgICAgMHhDMiww
eDMwLDB4RTMsMHgyOCwweEFFLDB4QTksMHhBRiwweEI3LDB4RTMsMHgzMCwweEEyLDB4MjgsMHhG
OSwweDNFLDB4QkEsMHgzQSwKKyAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4QjcsMHgzNiwweEY4
LDB4QjgsMHgwMywweDMxLDB4QzIsMHgzMCwweEE3LDB4QUEsMHhCRSwweEZFLAorICAgIDB4MDMs
MHgzMSwweEMyLDB4MjgsMHgyQiwweDhFLDB4MjcsMHgwRiwweDQzLDB4MzksMHhFMiwweDMwLDB4
NTUsMHg3RiwweEVGLDB4RjIsCisgICAgMHgwMiwweDMxLDB4QzIsMHgzMCwweDcyLDB4NDIsMHg3
NiwweDdFLDB4MDMsMHgzOSwweEExLDB4MjgsMHgzRCwweEFELDB4M0QsMHhBNywKKyAgICAweDY0
LDB4NDksMHgwMywweDM5LDB4RjksMHhCRiwweDNELDB4MkQsMHhBNSwweDUxLDB4NDMsMHg0MSww
eDU1LDB4RDUsMHg4QiwweDgzLAorICAgIDB4QTUsMHg1MSwweDY0LDB4NDksMHg1NywweDA3LDB4
MkQsMHhBRSwweDA2LDB4NUEsMHg4NCwweDQ5LDB4QjcsMHhFRiwweEFGLDB4MkQsCisgICAgMHgw
QSwweDgzLDB4RTUsMHg1OSwweDJGLDB4QUQsMHgyOSwweDJGLDB4RUQsMHg5QiwweDRCLDB4OEIs
MHgyRiwweDBGLDB4M0QsMHg5OSwKKyAgICAweDBFLDB4OUMsMHg4QywweDkzLDB4QUEsMHgwQSww
eEVGLDB4NUYsMHhFRCwweDlCLDB4OEMsMHg5MywweDIwLDB4QUEsMHhBQSwweEVGLAorICAgIDB4
Q0QsMHg5MywweDhDLDB4OTMsMHhDMCwweEM0LDB4NkIsMHg1RSwweDhDLDB4OEIsMHg0QiwweDgz
LDB4RTAsMHhCRSwweEU4LDB4RjYsCisgICAgMHg4QywweDhCLDB4NEIsMHg4MywweEVGLDB4N0Us
MHhGRiwweEQ1LDB4NkIsMHg4QiwweDBBLDB4N0IsMHhCRSwweEQ4LDB4REUsMHg3QywKKyAgICAw
eENDLDB4OTMsMHgyOSwweDdCLDB4MkYsMHhBRiwweEFELDB4RkQsMHhFRCwweDlCLDB4OEIsMHg4
QiwweEFBLDB4QUEsMHgzQiwweDNELAorICAgIDB4RUQsMHg5QiwweEFDLDB4OTMsMHgyMiwweDM4
LDB4QUEsMHhGNSwweDBFLDB4OUMsMHg4QywweDhCLDB4QTgsMHgyQSwweEFCLDB4N0YsCisgICAg
MHgyRSwweEE0LDB4QUMsMHg5MywweEY4LDB4QkUsMHhGNywweDc1LDB4MEUsMHg5QywweEFDLDB4
OTMsMHgzQSwweEJFLDB4RUIsMHg5RiwKKyAgICAweENELDB4OTMsMHg4QywweDhCLDB4MDAsMHgw
MiwweDBBLDB4MkMsMHhDRCwweDkzLDB4OEMsMHg4QiwweDM4LDB4RDAsMHg2RiwweEVFLAorICAg
IDB4Q0QsMHg5MywweDhDLDB4OEIsMHhBMCwweDMwLDB4RkEsMHhGNywweENELDB4OTMsMHg4Qyww
eDhCLDB4MjgsMHgwQywweDA4LDB4ODgsCisgICAgMHhDRCwweDkzLDB4NkMsMHg4QiwweEFBLDB4
RkUsMHhBNiwweDIyLDB4Q0MsMHg5MywweDZCLDB4OEIsMHgzMiwweEZBLDB4RTIsMHhFOCwKKyAg
ICAweEVELDB4OUIsMHg4QywweDhCLDB4RUYsMHhFQiwweENGLDB4NUQsMHgwRSwweDlDLDB4QUMs
MHg5MywweEJELDB4QkMsMHhGRiwweEY1LAorICAgIDB4NDMsMHg1MSwweDAzLDB4NDksMHhFQSww
eEVBLDB4RkIsMHg2QSwweDQzLDB4NTEsMHgwMywweDQxLDB4RUIsMHhBMiwweEQzLDB4RkYsCisg
ICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweDBCLDB4MEYsMHhBMiwweDg4LDB4NDMsMHg0OSwweEUy
LDB4NDAsMHhBQywweEZDLDB4N0YsMHhFRSwKKyAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4QUIs
MHg4RiwweEJCLDB4MjksMHgyMywweDQ5LDB4RTIsMHg0MCwweDYyLDB4REMsMHg5OCwweEY4LAor
ICAgIDB4MDMsMHg0OSwweEUxLDB4MzgsMHhBQSwweEYyLDB4RjIsMHhENiwweDIzLDB4NDEsMHhD
MSwweDM4LDB4ODIsMHg4QSwweEUzLDB4RkUsCisgICAgMHgwMiwweDQxLDB4RTIsMHgzOCwweDg5
LDB4RTUsMHhBRiwweDI1LDB4MjMsMHg0OSwweEUyLDB4MzgsMHhBNSwweDhELDB4RkYsMHhGQiwK
KyAgICAweDAzLDB4NDEsMHhFMiwweDM4LDB4MDgsMHgwMiwweDI4LDB4MDcsMHgyMywweDQ5LDB4
RTIsMHg0MCwweEZCLDB4RkMsMHhGRSwweDdGLAorICAgIDB4NDMsMHg1MSwweEUyLDB4NDAsMHgz
RiwweEJGLDB4MkYsMHgyRCwweDZBLDB4OTMsMHhBNSwweDU5LDB4MEIsMHgwOSwweDBCLDB4MEIs
CisgICAgMHg4QSwweDlCLDB4NjksMHg5MywweDY4LDB4QzAsMHhBMiwweDI5LDB4OEEsMHg5Qiww
eDQ5LDB4OTMsMHg4NywweDA1LDB4MkEsMHhCMCwKKyAgICAweDhBLDB4OUIsMHgyOCwweDhCLDB4
MjksMHgwQSwweEU4LDB4RkUsMHg2QSwweDlCLDB4RTgsMHg4MiwweEMwLDB4NjgsMHg3RSwweDU3
LAorICAgIDB4MjksMHg4QiwweEM4LDB4ODIsMHgwQSwweDJGLDB4QUYsMHhERCwweDZBLDB4OTMs
MHgwOSwweDhCLDB4MjAsMHgwMywweEFGLDB4RjUsCisgICAgMHg0QSwweDkzLDB4MDUsMHg2QSww
eDgwLDB4QTAsMHhFMCwweDc4LDB4NjcsMHg3QSwweEU1LDB4NjEsMHhFMiwweEZFLDB4REUsMHhE
RiwKKyAgICAweDY2LDB4NzIsMHgwNSwweDZBLDB4OEIsMHhFRiwweEI1LDB4N0YsMHg2NiwweDcy
LDB4RTQsMHg2MSwweEE4LDB4MkIsMHgyQiwweEE5LAorICAgIDB4ODcsMHg3MiwweDI2LDB4NzIs
MHg5QSwweEVBLDB4RTIsMHhDQSwweEM4LDB4N0EsMHg0NiwweDZBLDB4MjksMHhDRiwweEZGLDB4
RDcsCisgICAgMHhBNywweDcyLDB4ODQsMHg1OSwweEEwLDB4RUEsMHg3OCwweDVFLDB4RTUsMHg2
MSwweDIzLDB4NDksMHhEOCwweERGLDB4N0YsMHhGRiwKKyAgICAweDYzLDB4NTEsMHgyMiwweDQx
LDB4NUMsMHg3NiwweDZBLDB4RUUsMHg0MywweDQ5LDB4MDIsMHg0MSwweEZGLDB4OUYsMHg5QSww
eDU4LAorICAgIDB4NjQsMHg1MSwweEUyLDB4MzgsMHgwQSwweDBCLDB4MkYsMHhBRCwweEE1LDB4
NTEsMHg2NCwweDQ5LDB4QzAsMHg4RSwweDc3LDB4NzUsCisgICAgMHg4NCwweDQ5LDB4NDQsMHg0
OSwweEZBLDB4RDgsMHgyQSwweDJGLDB4QTUsMHg1MSwweDQzLDB4NDksMHhBNiwweEE4LDB4ODgs
MHhBQSwKKyAgICAweDg0LDB4NTEsMHg2NCwweDQ5LDB4RTIsMHg0MiwweDdFLDB4NUUsMHg4NSww
eDUxLDB4MjMsMHg0MSwweEJDLDB4RjcsMHg1NiwweDc3LAorICAgIDB4NjQsMHg0OSwweDIzLDB4
NDEsMHhBMCwweDc4LDB4QTMsMHhBMywweDY0LDB4NDksMHgyMywweDQxLDB4N0YsMHhDRCwweEZG
LDB4REUsCisgICAgMHg2NCwweDQ5LDB4MDMsMHgzOSwweEFGLDB4QjcsMHhFNiwweEZFLDB4NjQs
MHg0MSwweDAzLDB4NDEsMHg1NywweDdFLDB4N0YsMHhERiwKKyAgICAweDIzLDB4NDEsMHhFMyww
eDM4LDB4N0IsMHhBMiwweEVCLDB4QkYsMHgwMywweDM5LDB4QzIsMHgzOCwweDU1LDB4NUUsMHg1
QSwweEY4LAorICAgIDB4MDMsMHg0MSwweEExLDB4MzAsMHgyRSwweDM3LDB4QUYsMHgzQiwweDQz
LDB4NDEsMHgwMywweDQxLDB4MjIsMHhBOCwweEFCLDB4MEEsCisgICAgMHg0MywweDQxLDB4RTIs
MHgzOCwweEZFLDB4RkEsMHhFMiwweEZBLDB4MDMsMHgzOSwweEMyLDB4MzgsMHg4QSwweDJELDB4
MkYsMHgyQiwKKyAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4RkIsMHg3QywweEZBLDB4RUIsMHhF
MywweDMwLDB4ODEsMHgyOCwweDUyLDB4NUEsMHg3RiwweERGLAorICAgIDB4QTEsMHgyOCwweDQw
LDB4MjAsMHhGOCwweDZFLDB4RkEsMHhCQSwweDYxLDB4MjAsMHg0MSwweDE4LDB4RUEsMHhBQSww
eEIwLDB4MDAsCisgICAgMHhBMiwweDI4LDB4NDEsMHgxOCwweDU1LDB4RkYsMHhGRiwweDJGLDB4
QTIsMHgyMCwweDYxLDB4MjAsMHhCNSwweEE5LDB4QUIsMHg4OCwKKyAgICAweEExLDB4MjAsMHg2
MSwweDIwLDB4QkUsMHhBRiwweEE3LDB4MEIsMHhBMiwweDI4LDB4ODEsMHgyMCwweDhELDB4Qjcs
MHhCQiwweEI4LAorICAgIDB4QTIsMHgyOCwweDgxLDB4MjAsMHhCRSwweDNFLDB4QUEsMHhFMiww
eEMyLDB4MjgsMHg4MSwweDIwLDB4MkYsMHhBMiwweEFGLDB4QkYsCisgICAgMHhBMiwweDI4LDB4
ODIsMHgyMCwweDA4LDB4OEEsMHg3RSwweEU5LDB4QTIsMHgyOCwweDgxLDB4MjAsMHhBQywweDdB
LDB4RkYsMHhGQiwKKyAgICAweEEyLDB4MjgsMHg4MSwweDIwLDB4QkYsMHg1RSwweDZGLDB4OUYs
MHgyNCwweDM5LDB4QTIsMHgyOCwweEFGLDB4QkQsMHhCNSwweEQ1LAorICAgIDB4MDMsMHgzOSww
eEEyLDB4MjgsMHhBMCwweDg4LDB4QUEsMHhBOSwweDAzLDB4MzksMHhDMiwweDMwLDB4RUYsMHhB
NywweDdFLDB4OTcsCisgICAgMHhBMSwweDM4LDB4RTIsMHgzMCwweEY3LDB4RDUsMHhBNywweEY3
LDB4QzIsMHgzMCwweDgxLDB4MjgsMHg2OCwweEZBLDB4QkYsMHhGOCwKKyAgICAweEMyLDB4MzAs
MHg4MSwweDI4LDB4MzUsMHhFQywweEZGLDB4QkEsMHhFMiwweDMwLDB4QTIsMHgzMCwweDA3LDB4
MjEsMHgyRCwweEJCLAorICAgIDB4RTIsMHgzMCwweEEyLDB4MjgsMHgwQywweDgwLDB4MjAsMHhC
RSwweEUzLDB4MzAsMHhDMiwweDI4LDB4M0IsMHhCQywweDJFLDB4REYsCisgICAgMHgwMywweDMx
LDB4QTIsMHgyOCwweDU2LDB4RDcsMHhFMiwweEJGLDB4QzIsMHgzMCwweEEyLDB4MjgsMHg1RCww
eDdELDB4NjIsMHg1OCwKKyAgICAweEEyLDB4MjgsMHg4MSwweDIwLDB4MkYsMHgyNSwweDJGLDB4
MEEsMHhDMiwweDI4LDB4QTIsMHgyOCwweEJFLDB4NTMsMHg1RCwweDU1LAorICAgIDB4RTMsMHgz
MCwweEEyLDB4MjgsMHhGNywweEZBLDB4QUIsMHgyNywweEUzLDB4MzAsMHhBMiwweDI4LDB4MEIs
MHg2RSwweEFGLDB4Q0EsCisgICAgMHgyNCwweDM5LDB4QzIsMHgzMCwweEVGLDB4QzksMHhBNSww
eEQ1LDB4MDMsMHgzMSwweEEyLDB4MjgsMHg1RSwweEZBLDB4N0UsMHhBQSwKKyAgICAweEUzLDB4
MzAsMHhBMiwweDI4LDB4QkUsMHgxRiwweDk3LDB4QjUsMHhFMywweDMwLDB4QzIsMHgzMCwweDY0
LDB4RTAsMHhBMCwweDNELAorICAgIDB4MDQsMHgzOSwweEMyLDB4MzAsMHhGRiwweEU1LDB4QzMs
MHhBRSwweDAzLDB4MzksMHhDMiwweDMwLDB4RDQsMHhENiwweDc3LDB4QjcsCisgICAgMHgwMyww
eDM5LDB4QzIsMHgzMCwweDJELDB4QkQsMHhGRCwweDZCLDB4MDMsMHgzOSwweEMyLDB4MzAsMHhD
QSwweDgyLDB4QzgsMHg4MiwKKyAgICAweDAzLDB4MzksMHhBMiwweDI4LDB4QkEsMHhCQSwweEU4
LDB4RkMsMHgwMywweDMxLDB4QzIsMHgzMCwweDc3LDB4RjUsMHhBNSwweDU1LAorICAgIDB4RTMs
MHgzMCwweEEyLDB4MjgsMHg3RCwweEZGLDB4RjYsMHhCRSwweDI0LDB4MzksMHhDMiwweDI4LDB4
NzUsMHhGRCwweEFELDB4MjUsCisgICAgMHgwMywweDMxLDB4QTIsMHgyOCwweEZELDB4REYsMHhG
MiwweEU4LDB4QzIsMHgyOCwweDgyLDB4MjgsMHgyMiwweDBBLDB4QTgsMHhCRSwKKyAgICAweEUz
LDB4MzAsMHhBMiwweDI4LDB4MDIsMHg4MiwweDdCLDB4REQsMHgwMywweDMxLDB4QzMsMHgyOCww
eDdFLDB4RUYsMHhBRiwweENELAorICAgIDB4MDMsMHgzOSwweEMzLDB4MzAsMHhDMiwweDhCLDB4
RkIsMHg5QSwweDAzLDB4MzEsMHhDMiwweDMwLDB4RUIsMHhGNywweDVFLDB4RDcsCisgICAgMHgw
MywweDMxLDB4QTIsMHgyOCwweEE4LDB4QkEsMHg3QiwweEZCLDB4MDMsMHgzOSwweEMyLDB4Mjgs
MHg5QSwweEEwLDB4NUUsMHg1RCwKKyAgICAweEUyLDB4MzAsMHhDMiwweDI4LDB4QUYsMHgzRSww
eDZELDB4RjksMHgwMywweDMxLDB4QzIsMHgyOCwweDk3LDB4RDcsMHg5NSwweDE1LAorICAgIDB4
MDMsMHgzMSwweEMyLDB4MjgsMHhGQiwweDM2LDB4MkEsMHg4OCwweDIzLDB4MzksMHhFMywweDMw
LDB4N0QsMHhFQSwweDZCLDB4QkYsCisgICAgMHgwMywweDMxLDB4RTIsMHgzMCwweEI1LDB4RjMs
MHhBMywweDM1LDB4NDMsMHgzOSwweDAzLDB4MzEsMHg3RiwweEZGLDB4OEYsMHg2RCwKKyAgICAw
eDIzLDB4MzksMHhDMiwweDMwLDB4REEsMHhBQywweDhBLDB4MkUsMHgwMiwweDM5LDB4QzIsMHgz
MCwweDY1LDB4MzIsMHhBMiwweDI4LAorICAgIDB4NjQsMHg0OSwweEUyLDB4MzgsMHgyRCwweDI5
LDB4QUYsMHhBNywweDg1LDB4NTEsMHg0NCwweDQ5LDB4OEIsMHhBQSwweERGLDB4REQsCisgICAg
MHg4NCwweDUxLDB4MjMsMHg0MSwweDhBLDB4RkYsMHgzRCwweDhBLDB4NjgsMHg2QSwweDY0LDB4
NDksMHhCRCwweEJELDB4QkQsMHgzRiwKKyAgICAweDhDLDB4OTMsMHg4OCwweDcyLDB4QTUsMHgy
RCwweDI5LDB4MkQsMHhBQywweDkzLDB4NEMsMHg4QiwweEExLDB4QUUsMHgyQSwweEVFLAorICAg
IDB4QUMsMHg5MywweDRCLDB4OEIsMHhBMCwweEFCLDB4RUUsMHg3RiwweEFELDB4OTMsMHgyQiww
eDgzLDB4QTIsMHg4OCwweEY4LDB4REQsCisgICAgMHhDQywweDkzLDB4RUEsMHg3QSwweDIyLDB4
QUEsMHhGRSwweDdGLDB4NkIsMHg4QiwweEE5LDB4NzIsMHhBOCwweEEwLDB4QTIsMHg3RSwKKyAg
ICAweDRCLDB4ODMsMHg0NywweDYyLDB4MDAsMHg4QSwweEFBLDB4NzcsMHg0QiwweDgzLDB4MDcs
MHg1QSwweDIwLDB4ODgsMHhGRSwweDU1LAorICAgIDB4NEIsMHg4MywweDI3LDB4NjIsMHgwMiww
eDAyLDB4QUIsMHhGNSwweEFDLDB4OEIsMHg4OSwweDZBLDB4MDAsMHg4QSwweEFCLDB4RkQsCisg
ICAgMHhBQywweDhCLDB4ODksMHg3MiwweDAwLDB4QTAsMHhGQSwweDVGLDB4OEMsMHg4QiwweDA3
LDB4NUEsMHhBMCwweEZBLDB4NUYsMHg1NywKKyAgICAweDZCLDB4OEIsMHgyNywweDYyLDB4MDAs
MHhCRCwweDc1LDB4NTUsMHhBRCwweDkzLDB4NjgsMHg2MiwweDAwLDB4MEEsMHhCRCwweDU1LAor
ICAgIDB4RUQsMHg5MywweEVBLDB4N0EsMHg4MiwweDhBLDB4QUEsMHhCRCwweEFELDB4OTMsMHg4
QywweDhCLDB4QTgsMHhBOCwweEVGLDB4RkQsCisgICAgMHhBQywweDkzLDB4NkMsMHg4QiwweDJC
LDB4QTEsMHhDRCwweEE1LDB4Q0MsMHg5MywweDZDLDB4OEIsMHhBQSwweEVBLDB4RUQsMHgzRiwK
KyAgICAweENELDB4OTMsMHg4QywweDhCLDB4QUMsMHg0RiwweEE5LDB4N0IsMHhDQywweDkzLDB4
OEIsMHg4QiwweDhDLDB4RkQsMHhFQiwweENBLAorICAgIDB4QUMsMHg5MywweDhDLDB4OEIsMHhE
MiwweEYyLDB4OUYsMHgzNiwweEVELDB4OUIsMHg4QywweDhCLDB4ODksMHhGOSwweDk1LDB4REUs
CisgICAgMHg0MywweDUxLDB4RTIsMHg0MCwweENBLDB4N0YsMHhFQSwweEZFLDB4NDMsMHg0OSww
eEUyLDB4NDAsMHhGOSwweDYxLDB4RUYsMHhBRCwKKyAgICAweDQzLDB4NDksMHhFMiwweDQwLDB4
RUUsMHhFQiwweEI3LDB4QkYsMHgyMywweDQ5LDB4MDIsMHg0MSwweERBLDB4REYsMHhGMiwweEVB
LAorICAgIDB4NDMsMHg0OSwweEUyLDB4NDAsMHhCQiwweDZCLDB4NzgsMHg1RiwweDIyLDB4NDEs
MHhDMSwweDM4LDB4MkEsMHhBRiwweEJGLDB4QjUsCisgICAgMHgyMywweDQ5LDB4RTIsMHgzOCww
eDVGLDB4MkIsMHgzQiwweEQ3LDB4MDMsMHg0MSwweEMyLDB4MzgsMHhFQSwweDdDLDB4RkMsMHhG
NiwKKyAgICAweDAyLDB4NDEsMHhDMiwweDM4LDB4MEIsMHg4QiwweEVELDB4RUIsMHgwMiwweDQx
LDB4QTEsMHgzOCwweDAwLDB4MDEsMHgwOSwweDBCLAorICAgIDB4MjMsMHg0OSwweEUyLDB4NDAs
MHgzNywweDNBLDB4QkUsMHhGNiwweDAzLDB4NDksMHgyMiwweDQxLDB4QUEsMHhCOSwweEY3LDB4
QUUsCisgICAgMHg2NCwweDUxLDB4RTIsMHg0MCwweDM1LDB4MTcsMHhCRiwweEFFLDB4NkEsMHg5
MywweEE1LDB4NTksMHgwQiwweDBCLDB4MkQsMHhGNSwKKyAgICAweEFBLDB4OUIsMHg4NywweDdB
LDB4OEEsMHg4MiwweEVFLDB4N0QsMHg2QSwweDkzLDB4QzcsMHg4MiwweDgwLDB4QTAsMHhGRiww
eDVELAorICAgIDB4NDksMHg5MywweEE3LDB4N0EsMHg4MCwweDJBLDB4RkUsMHg1RiwweDI5LDB4
OEIsMHhBNywweDgyLDB4RjgsMHhFQSwweEJGLDB4RDcsCisgICAgMHhFOCwweDgyLDB4QTcsMHg3
QSwweDdFLDB4RkUsMHhBMCwweDUwLDB4MDksMHg4QiwweDY2LDB4NzIsMHgyMiwweEFBLDB4REEs
MHg3RiwKKyAgICAweDA5LDB4OEIsMHhDNSwweDYxLDB4RjAsMHhGRSwweDdGLDB4NUYsMHgwNiww
eDZBLDB4RTUsMHg2MSwweEJDLDB4M0UsMHg3QywweDU3LAorICAgIDB4MjYsMHg2QSwweEM0LDB4
NjEsMHgyOCwweDIwLDB4MEEsMHhGRCwweDQ2LDB4NkEsMHhFNSwweDYxLDB4MEEsMHhBQSwweEI2
LDB4RjcsCisgICAgMHg2NywweDcyLDB4QTQsMHg1OSwweDAwLDB4QTgsMHhGQSwweDVFLDB4MjUs
MHg2QSwweDYzLDB4NTEsMHgwMCwweEY4LDB4NUUsMHg1NSwKKyAgICAweEE1LDB4NTksMHgwMyww
eDQ5LDB4QjAsMHhGQywweEZGLDB4QkYsMHg4NCwweDUxLDB4MjMsMHg0OSwweEEwLDB4QUEsMHgw
RCwweDJFLAorICAgIDB4ODQsMHg1MSwweDAyLDB4NDEsMHg3QSwweDcyLDB4N0UsMHhGRSwweDY0
LDB4NDksMHgwMiwweDQxLDB4N0QsMHhGRiwweDNELDB4MEYsCisgICAgMHhDNSwweDUxLDB4RTIs
MHg0MCwweEZELDB4QkYsMHhBRSwweEEwLDB4ODUsMHg1MSwweDIzLDB4NDEsMHhBQSwweDJBLDB4
QTksMHhBQiwKKyAgICAweEE1LDB4NTEsMHg0NCwweDQ5LDB4QkYsMHhBNywweDJGLDB4RkUsMHhB
NSwweDUxLDB4NDQsMHg0OSwweEZGLDB4RDYsMHg3OCwweEZCLAorICAgIDB4ODQsMHg0OSwweDQ0
LDB4NDksMHhFRiwweDdGLDB4NUIsMHg2QiwweDY0LDB4NDksMHgyMywweDQxLDB4NkYsMHhDQSww
eEFBLDB4RTIsCisgICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweEFFLDB4RkYsMHhGRSwweERDLDB4
NDQsMHg0OSwweEUyLDB4MzgsMHhBMCwweEFBLDB4RUUsMHhERSwKKyAgICAweDQ0LDB4NDksMHhF
MywweDQwLDB4QTIsMHhBQiwweEVCLDB4QkYsMHgyMywweDQxLDB4MDMsMHg0MSwweEYwLDB4QkUs
MHg1NywweEQwLAorICAgIDB4NDQsMHg0MSwweEUyLDB4MzgsMHhERiwweEZGLDB4RkUsMHhCOCww
eDIzLDB4NDEsMHhFMiwweDM4LDB4N0UsMHhGRiwweEQ4LDB4QkEsCisgICAgMHg0NCwweDQ5LDB4
RTMsMHgzOCwweDlELDB4QjcsMHhBQiwweDgyLDB4NjQsMHg0OSwweDAzLDB4NDEsMHgyQiwweEVB
LDB4RUYsMHg1NSwKKyAgICAweDQzLDB4NDEsMHhFMiwweDM4LDB4NzAsMHg3QSwweDdBLDB4N0Ys
MHgwMywweDM5LDB4QTEsMHgzMCwweEFBLDB4QkIsMHgyQiwweEY1LAorICAgIDB4MDMsMHgzOSww
eEMyLDB4MzAsMHhFMiwweDZBLDB4NzgsMHg3QSwweEUzLDB4MzgsMHg4MSwweDI4LDB4N0MsMHg1
RSwweDc3LDB4RUYsCisgICAgMHhBMiwweDI4LDB4NjEsMHgyMCwweEZFLDB4N0EsMHg3QiwweDdB
LDB4QTIsMHgyOCwweDYxLDB4MjAsMHhGNywweEVELDB4MkQsMHgwOSwKKyAgICAweEEyLDB4MjAs
MHg2MSwweDIwLDB4MjUsMHgwQywweDA4LDB4MkEsMHhDMiwweDI4LDB4ODEsMHgyMCwweEJBLDB4
RUEsMHgwMiwweDI1LAorICAgIDB4QzIsMHgyOCwweDgxLDB4MjAsMHhCRCwweEE1LDB4QkIsMHhG
RiwweEEyLDB4MjgsMHg4MSwweDIwLDB4MUEsMHhCQSwweEZGLDB4Q0EsCisgICAgMHhBMiwweDI4
LDB4ODEsMHgyMCwweEUyLDB4Q0IsMHgyQiwweEFGLDB4QTIsMHgyOCwweDgxLDB4MjAsMHhBOCww
eEJFLDB4RkIsMHhENywKKyAgICAweEEyLDB4MjgsMHg4MiwweDIwLDB4QUUsMHhFRiwweEVGLDB4
QkYsMHhBMiwweDI4LDB4NjEsMHgyMCwweEFBLDB4RkIsMHhERiwweEZDLAorICAgIDB4QTIsMHgy
OCwweDYxLDB4MjAsMHgzRSwweEFFLDB4QkYsMHgzRiwweEEyLDB4MzAsMHg4MSwweDIwLDB4M0Ys
MHhCRSwweDM3LDB4M0UsCisgICAgMHgwMywweDM5LDB4QTIsMHgyOCwweEJELDB4QUYsMHhBOSww
eEFGLDB4RTMsMHgzOCwweEMyLDB4MzAsMHhBRCwweEE5LDB4MDgsMHg4MCwKKyAgICAweEUyLDB4
MzgsMHhDMiwweDMwLDB4RUEsMHg2NiwweEZFLDB4RjQsMHhFMywweDM4LDB4QTIsMHgyOCwweDVF
LDB4RkIsMHhGQSwweEY4LAorICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHhGQSwweEJGLDB4M0Ms
MHgxMywweEUyLDB4MzAsMHhBMywweDI4LDB4RUUsMHhFQiwweEFBLDB4RUEsCisgICAgMHhFMyww
eDMwLDB4QTIsMHgyOCwweEI3LDB4RUIsMHgyNSwweEY1LDB4QzIsMHgyOCwweEExLDB4MjgsMHgz
MCwweEY4LDB4NTcsMHg1NSwKKyAgICAweEMyLDB4MjgsMHg2MSwweDI4LDB4MDIsMHg4OCwweEFB
LDB4QUUsMHhDMiwweDI4LDB4ODEsMHgyMCwweEE4LDB4RkEsMHg3QSwweDdFLAorICAgIDB4QzIs
MHgyOCwweDgyLDB4MjgsMHhBQiwweDBFLDB4MEQsMHgyQiwweEUzLDB4MzAsMHhBMiwweDI4LDB4
NUQsMHhDMywweEZCLDB4QkIsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEI1LDB4RDUsMHg1
NSwweDU2LDB4RTMsMHgzMCwweEEyLDB4MjgsMHhBRSwweEFCLDB4MDEsMHgwMywKKyAgICAweDAz
LDB4MzEsMHhBMiwweDI4LDB4M0YsMHhGRiwweERFLDB4QkYsMHhFMywweDMwLDB4QzIsMHgzMCww
eDgyLDB4NzMsMHhFMywweDAwLAorICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHhGNywweEE3LDB4
M0YsMHgwRSwweDAzLDB4MzksMHhDMywweDMwLDB4QjUsMHhGRSwweENFLDB4QUEsCisgICAgMHgy
NCwweDM5LDB4RTMsMHgzMCwweDU5LDB4NkIsMHg1OSwweDdGLDB4RTIsMHgzMCwweEEyLDB4MzAs
MHgwQSwweDBBLDB4MkYsMHhCNSwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4RUIsMHhBQSww
eEZGLDB4RkQsMHg0NCwweDQxLDB4QTIsMHgzMCwweEFGLDB4OEQsMHhBRiwweEVGLAorICAgIDB4
MjMsMHgzOSwweEMyLDB4MzAsMHg1RSwweDdBLDB4QUMsMHgyOCwweDAzLDB4MzEsMHhDMiwweDMw
LDB4NzUsMHg1RSwweEJDLDB4RUEsCisgICAgMHhFMywweDMwLDB4QTEsMHgyOCwweEJBLDB4RTAs
MHhCQSwweEQ2LDB4MDMsMHgzMSwweEMyLDB4MzAsMHgyQiwweEVFLDB4MkYsMHhERiwKKyAgICAw
eDAzLDB4MzEsMHhDMiwweDMwLDB4N0EsMHg4OCwweDJBLDB4RkIsMHhFMywweDMwLDB4QTIsMHgy
OCwweDU1LDB4NTcsMHhEQywweDI4LAorICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHg3OSwweDYy
LDB4NzIsMHg1MiwweEUzLDB4MzAsMHg4MSwweDIwLDB4MEIsMHhCNywweEI1LDB4RUYsCisgICAg
MHhFMywweDMwLDB4QzIsMHgyOCwweEUwLDB4QjAsMHhFRiwweEU1LDB4RTMsMHgzMCwweEMyLDB4
MjgsMHhCQSwweEVGLDB4OEUsMHhBRCwKKyAgICAweEUzLDB4MzAsMHhDMiwweDI4LDB4QTYsMHgw
NywweEZFLDB4NkYsMHgwMywweDMxLDB4QzIsMHgzMCwweDU1LDB4RDcsMHhCRCwweDlCLAorICAg
IDB4RTIsMHgzMCwweEMyLDB4MjgsMHhFRCwweEIzLDB4MDAsMHgwMCwweDIzLDB4MzksMHhDMiww
eDI4LDB4REQsMHhGRiwweEZGLDB4Q0EsCisgICAgMHgyMywweDM5LDB4RTMsMHgzMCwweDhGLDB4
MkYsMHg3RiwweEZCLDB4MDMsMHgzMSwweEMyLDB4MzAsMHg4OCwweEZFLDB4RkUsMHhCRiwKKyAg
ICAweDAzLDB4MzksMHhDMiwweDI4LDB4MzcsMHhCNywweEJGLDB4RkIsMHgwMywweDM5LDB4RTIs
MHgzMCwweDgyLDB4QTIsMHhGRCwweEI1LAorICAgIDB4MjMsMHgzOSwweEUyLDB4MzAsMHg5Riww
eDlFLDB4MUYsMHgzRiwweDIzLDB4NDEsMHhFMiwweDM4LDB4RDUsMHhCNywweDlCLDB4MDYsCisg
ICAgMHg4NSwweDQ5LDB4MDMsMHgzOSwweEJELDB4QkQsMHhBRiwweDJGLDB4QzUsMHg1MSwweDY0
LDB4NDksMHg1NSwweDlELDB4RUIsMHgzMiwKKyAgICAweEU1LDB4NTksMHg2NCwweDQ5LDB4RkQs
MHhCNSwweEVCLDB4MkEsMHhDOSwweDdBLDB4QTUsMHg1MSwweEI1LDB4QkQsMHhBRiwweDJGLAor
ICAgIDB4OEMsMHg5MywweEE4LDB4NzIsMHhBRCwweEZELDB4RkYsMHg4QSwweDRBLDB4OEIsMHg4
NywweDcyLDB4ODgsMHhERiwweDU3LDB4QTAsCisgICAgMHgwQSwweDgzLDB4NDcsMHg2QSwweDAw
LDB4RkUsMHhERiwweEY4LDB4RTksMHg3QSwweDI2LDB4NjIsMHgwOCwweEZELDB4REQsMHhBQSwK
KyAgICAweEM4LDB4NzIsMHgyNiwweDYyLDB4RTgsMHg1RiwweEZGLDB4QkYsMHhBOCwweDcyLDB4
MDYsMHg1QSwweEY4LDB4NzcsMHhGRSwweDAyLAorICAgIDB4QTksMHg3MiwweEU2LDB4NTEsMHg1
NywweDc1LDB4RUIsMHgwMiwweEM5LDB4NzIsMHhFNiwweDUxLDB4NTUsMHg3NywweEJBLDB4MDAs
CisgICAgMHhBOSwweDcyLDB4MDcsMHg1QSwweEY1LDB4QkYsMHhCQiwweDAwLDB4QzksMHg3Miww
eDI3LDB4NjIsMHhGNywweEZGLDB4RTgsMHgyQSwKKyAgICAweEE5LDB4NzIsMHg0NywweDYyLDB4
RUIsMHhFOSwweEVGLDB4MEEsMHhBOSwweDcyLDB4MDcsMHg2MiwweEZGLDB4N0YsMHhGOCwweEI4
LAorICAgIDB4NjgsMHg2QSwweDA2LDB4NUEsMHhCOSwweEVBLDB4ODIsMHg4OCwweDY4LDB4NkEs
MHgyNywweDYyLDB4NTYsMHhGRSwweEIwLDB4MjAsCisgICAgMHgwQSwweDdCLDB4MDYsMHg1QSww
eDJELDB4RjcsMHhGRiwweDdGLDB4OEMsMHg4QiwweDQ3LDB4NjIsMHgwMCwweDJCLDB4QUQsMHhC
NSwKKyAgICAweEFELDB4OTMsMHg0QiwweDgzLDB4MkYsMHhBRSwweEZGLDB4NzUsMHhBRCwweDkz
LDB4NkIsMHg4QiwweDBBLDB4M0YsMHhCNSwweDdCLAorICAgIDB4QUMsMHg4QiwweDZCLDB4OEIs
MHgyQywweDJGLDB4QjUsMHgyNSwweEFDLDB4OTMsMHg2QywweDhCLDB4MDAsMHhFQywweEFBLDB4
N0UsCisgICAgMHhDRCwweDkzLDB4NkIsMHg4QiwweDVDLDB4NTcsMHhBNSwweERCLDB4QUQsMHg5
MywweDZCLDB4OEIsMHgyQywweEFFLDB4QUUsMHgxRSwKKyAgICAweDIzLDB4NDksMHhDMiwweDQw
LDB4RjYsMHg4MiwweEE4LDB4QTgsMHgyMywweDQ5LDB4RTIsMHg0MCwweEFCLDB4QUUsMHhCQSww
eEUyLAorICAgIDB4NDMsMHg1MSwweEUyLDB4NDAsMHg4QSwweEUzLDB4RUYsMHhFNywweDIzLDB4
NDksMHhFMiwweDQwLDB4Q0YsMHhCNywweDJCLDB4QUEsCisgICAgMHgyMywweDQ5LDB4RTIsMHg0
MCwweDU3LDB4RDUsMHhEQywweEFBLDB4MjMsMHg0OSwweEMxLDB4MzgsMHhBNywweEFFLDB4RUEs
MHg4QSwKKyAgICAweDIzLDB4NDksMHhFMiwweDM4LDB4QkYsMHhCRCwweEFGLDB4MkUsMHgyNCww
eDQxLDB4RTIsMHg0MCwweEQ1LDB4NDcsMHhGQiwweEVGLAorICAgIDB4MDMsMHg0MSwweEUyLDB4
MzgsMHg1RSwweDVDLDB4MjgsMHg4MCwweDIzLDB4NDEsMHhDMSwweDQwLDB4MkQsMHhBRiwweEFB
LDB4QUEsCisgICAgMHg0MywweDQ5LDB4RTIsMHg0MCwweEJFLDB4QkUsMHg5QiwweDAwLDB4MjIs
MHg0OSwweDAzLDB4NDEsMHg2MiwweDYwLDB4RUEsMHhBRSwKKyAgICAweDIzLDB4NDksMHhFMiww
eDQwLDB4MEEsMHgyQSwweEY3LDB4RjcsMHhDNCwweDU5LDB4MDIsMHg0MSwweDJGLDB4QTUsMHg1
NSwweDU1LAorICAgIDB4NDYsMHg3MiwweDAyLDB4NDksMHgwQSwweEJGLDB4RkQsMHg3NSwweEE3
LDB4N0EsMHhBMywweDU5LDB4MDIsMHgyRiwweEFELDB4QjUsCisgICAgMHhDOCwweDgyLDB4MjUs
MHg3MiwweEEwLDB4RjIsMHhCRSwweEQ1LDB4QzcsMHg4MiwweDQ1LDB4NzIsMHhBOCwweEFBLDB4
RkQsMHg3NSwKKyAgICAweEU3LDB4ODIsMHg0NiwweDcyLDB4QTAsMHhBQSwweEFCLDB4RkQsMHg4
NiwweDdBLDB4QzQsMHg2MSwweEMwLDB4NDAsMHg3OCwweDVFLAorICAgIDB4MDYsMHg2QSwweDY0
LDB4NTEsMHhBMiwweEJFLDB4REYsMHg1NywweEU1LDB4NjEsMHg0MywweDUxLDB4ODAsMHhBQyww
eEZFLDB4NTUsCisgICAgMHhFNSwweDYxLDB4NDMsMHg1MSwweDAwLDB4MEEsMHhBRSwweEE1LDB4
MDUsMHg2QSwweDg0LDB4NTEsMHhBOCwweEVFLDB4N0YsMHhEQSwKKyAgICAweEM1LDB4NjEsMHg0
MywweDUxLDB4RjIsMHg2QSwweDc4LDB4RkEsMHg4MywweDUxLDB4MDMsMHg0OSwweEFBLDB4RkYs
MHg3QSwweEFBLAorICAgIDB4NjQsMHg1MSwweDIzLDB4NDksMHhBRCwweEU1LDB4QzUsMHg3RCww
eDY0LDB4NDksMHgyMywweDQ5LDB4MDgsMHgwMiwweDAzLDB4MDMsCisgICAgMHg2MywweDQ5LDB4
MjIsMHg0MSwweEU2LDB4OEMsMHgwMCwweDBFLDB4QzYsMHg1OSwweDIzLDB4NDEsMHhCRCwweDJE
LDB4MkYsMHg4QiwKKyAgICAweEM1LDB4NTksMHg0NCwweDQxLDB4QTIsMHhBOCwweDZBLDB4REUs
MHhBNSwweDUxLDB4NjQsMHg0OSwweDZBLDB4RTYsMHgzRCwweEJCLAorICAgIDB4ODUsMHg0OSww
eDQ0LDB4NDksMHhFMiwweEU4LDB4RjgsMHg5RSwweDY0LDB4NDksMHg0NCwweDQ5LDB4QTIsMHg3
QSwweEY4LDB4RkIsCisgICAgMHg4NSwweDUxLDB4MjQsMHg0MSwweEEzLDB4RUYsMHhGQiwweEZE
LDB4NjQsMHg0OSwweDIzLDB4NDksMHgzMCwweDgzLDB4QTksMHhFRCwKKyAgICAweDQzLDB4NDks
MHgwMywweDQxLDB4RkMsMHhCQywweEFBLDB4QjIsMHhFNiwweDYxLDB4MjMsMHg0MSwweDU1LDB4
NTUsMHhGNywweDJELAorICAgIDB4RTYsMHg2MSwweDAzLDB4NDEsMHg1NSwweERGLDB4QkYsMHgw
MCwweEU2LDB4NjEsMHgyMywweDQxLDB4NTUsMHhGQSwweDgyLDB4MDAsCisgICAgMHhDNSwweDYx
LDB4MDMsMHg0MSwweDU1LDB4NzcsMHhGRSwweDgwLDB4NjQsMHg0OSwweDAzLDB4NDEsMHg3NSww
eEZGLDB4QkYsMHhBOCwKKyAgICAweDg1LDB4NDksMHgwMywweDQxLDB4N0IsMHg1QSwweEZCLDB4
Q0EsMHgyMywweDQxLDB4RTIsMHgzOCwweDJGLDB4MkYsMHhCRSwweDdBLAorICAgIDB4MjMsMHg0
MSwweEMyLDB4MzAsMHhFQiwweDZCLDB4QTAsMHhFMiwweDAzLDB4MzksMHhBMiwweDMwLDB4RkQs
MHgyRiwweDJBLDB4QUEsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEUyLDB4RTIsMHg4MCww
eDAwLDB4MDMsMHgzOSwweEEyLDB4MjgsMHg3NywweDdGLDB4N0MsMHg3OCwKKyAgICAweEMyLDB4
MjgsMHg2MSwweDIwLDB4N0UsMHhGRSwweEJFLDB4M0YsMHhFMywweDMwLDB4NjEsMHgyMCwweEZE
LDB4QUYsMHgyQSwweDAwLAorICAgIDB4MDQsMHgzMSwweDgxLDB4MjAsMHg1RCwweEQ3LDB4QTgs
MHg4MCwweEUzLDB4MzAsMHg4MSwweDIwLDB4RDUsMHhGRSwweEEyLDB4RTgsCisgICAgMHhFMiww
eDI4LDB4QTIsMHgyOCwweDVGLDB4N0IsMHhGRSwweEYyLDB4QTIsMHgyOCwweDgxLDB4MjAsMHhD
OCwweDQ4LDB4NDAsMHhFMCwKKyAgICAweEEyLDB4MjgsMHg4MSwweDIwLDB4RkQsMHg2OSwweEJG
LDB4QjcsMHhBMiwweDI4LDB4NjEsMHgyMCwweEFFLDB4QUYsMHgwRiwweDBBLAorICAgIDB4QTIs
MHgyOCwweDgyLDB4MjgsMHhCNywweDNGLDB4M0YsMHhGMywweEMyLDB4MzAsMHg4MiwweDI4LDB4
NTQsMHhGNiwweDdGLDB4RjUsCisgICAgMHhBMSwweDI4LDB4NjEsMHgyMCwweEJFLDB4Q0YsMHhG
RCwweEVGLDB4QzMsMHgzMCwweDgyLDB4MjgsMHhGNywweEZELDB4REQsMHg0OSwKKyAgICAweDAz
LDB4NDEsMHg4MiwweDI4LDB4QUYsMHgwRCwweDNGLDB4MEIsMHgyMywweDQxLDB4QzMsMHgzOCww
eDZGLDB4RkIsMHhFMCwweDA4LAorICAgIDB4MjMsMHg0MSwweEExLDB4MzAsMHhERCwweEFGLDB4
RTgsMHgyOCwweEUyLDB4MzgsMHhBMiwweDMwLDB4RjgsMHhGQSwweEU4LDB4RTgsCisgICAgMHhD
MiwweDMwLDB4QTIsMHgyOCwweEJGLDB4REUsMHhEOCwweDU4LDB4QzIsMHgzMCwweDgxLDB4Mjgs
MHgwMCwweEFBLDB4RjgsMHhGQSwKKyAgICAweEMyLDB4MjgsMHg4MSwweDI4LDB4M0EsMHhCQiww
eEJCLDB4QUIsMHhFMiwweDMwLDB4ODEsMHgyOCwweDdGLDB4RUIsMHhBMywweEFBLAorICAgIDB4
QzMsMHgzMCwweDgxLDB4MjgsMHhGNSwweEZGLDB4QkUsMHgwMiwweEMyLDB4MjgsMHg4MSwweDI4
LDB4RTcsMHhGNywweEZGLDB4QTgsCisgICAgMHhBMiwweDI4LDB4ODEsMHgyMCwweDAyLDB4MDUs
MHgyRCwweDgwLDB4QzMsMHgzMCwweDgxLDB4MjgsMHgwQSwweEFCLDB4N0YsMHhENSwKKyAgICAw
eEMyLDB4MjgsMHg4MSwweDIwLDB4MkEsMHgyQiwweEQ3LDB4REQsMHgwMywweDM5LDB4QTIsMHgy
OCwweDJCLDB4MjMsMHhBRCwweDBELAorICAgIDB4MDMsMHgzOSwweEUzLDB4MjgsMHhGRiwweDk0
LDB4QTYsMHgwOCwweEUyLDB4MzAsMHhDMiwweDI4LDB4ODAsMHg4OCwweDI2LDB4MjYsCisgICAg
MHgwMywweDM5LDB4QzIsMHgzMCwweEFBLDB4RkMsMHhGOCwweEY2LDB4MDMsMHgzOSwweEMzLDB4
MzAsMHg1RSwweEFCLDB4QTMsMHhGOCwKKyAgICAweDAzLDB4MzksMHhFMywweDMwLDB4NjEsMHg3
QSwweDc4LDB4NjgsMHhFMywweDMwLDB4QTIsMHgzMCwweERBLDB4N0EsMHhBQSwweDAyLAorICAg
IDB4QzIsMHgzMCwweEEyLDB4MzAsMHgyMiwweEFCLDB4QjgsMHgyQywweDAzLDB4MzksMHhDMiww
eDMwLDB4RjMsMHgyNSwweDI1LDB4RUQsCisgICAgMHgyMywweDM5LDB4RTIsMHgzMCwweDZBLDB4
RkUsMHhGQSwweEEzLDB4MDMsMHgzOSwweEUyLDB4MzAsMHhBRCwweEFELDB4RjYsMHhCOCwKKyAg
ICAweDAzLDB4MzEsMHhDMiwweDMwLDB4RDcsMHg2QiwweDdBLDB4N0EsMHhFMiwweDMwLDB4QTIs
MHgyOCwweEEyLDB4QkUsMHhFRiwweEZBLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MjgsMHg5RCww
eEZDLDB4RkEsMHg1OSwweEUyLDB4MzAsMHhBMiwweDI4LDB4QUMsMHhCRSwweENFLDB4QUYsCisg
ICAgMHhFMiwweDMwLDB4QTEsMHgyOCwweDVBLDB4RkEsMHhGQiwweEJBLDB4QzIsMHgyOCwweEEx
LDB4MjgsMHgyNywweDBFLDB4MDAsMHgwMCwKKyAgICAweEUzLDB4MzAsMHhDMiwweDI4LDB4Q0Qs
MHgwQiwweDI1LDB4MkQsMHhFMywweDMwLDB4QzIsMHgzMCwweEU1LDB4QkUsMHhBMCwweDIwLAor
ICAgIDB4MDMsMHgzOSwweEMyLDB4MjgsMHhGNywweEZCLDB4MkEsMHg2QSwweDAzLDB4MzEsMHhD
MiwweDI4LDB4REEsMHhGQSwweEFCLDB4QUEsCisgICAgMHgwMywweDMxLDB4QzIsMHgyOCwweDNG
LDB4QkQsMHhBRiwweEY3LDB4MDMsMHgzMSwweEUyLDB4MzAsMHhDNCwweDNFLDB4RjksMHg2MywK
KyAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4MDgsMHgyQywweEMwLDB4ODIsMHgwMywweDMxLDB4
QzIsMHgyOCwweEFDLDB4NzAsMHg2MCwweDgwLAorICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHhC
NCwweEFCLDB4RkQsMHg3QSwweDIzLDB4MzksMHhDMiwweDMwLDB4RkUsMHg5NywweEFELDB4Mjcs
CisgICAgMHg0NCwweDQxLDB4MDMsMHgzOSwweERELDB4QjYsMHhFMywweEUzLDB4NjQsMHg0OSww
eDIzLDB4NDEsMHg1RiwweDVELDB4NEYsMHhBMywKKyAgICAweDg1LDB4NTEsMHgwMywweDM5LDB4
MjUsMHhCRCwweEFGLDB4RUMsMHhDNSwweDUxLDB4NDMsMHg0MSwweEUyLDB4QUEsMHhCRiwweEQ1
LAorICAgIDB4MjYsMHg2MiwweDQzLDB4NDksMHhBRiwweDJGLDB4MkYsMHhCRCwweDBELDB4QTQs
MHgyNiwweDYyLDB4QkQsMHhBRCwweDJGLDB4MEYsCisgICAgMHg2RSwweEFDLDB4NkIsMHg4Qiww
eEVELDB4QUYsMHgwQSwweDAwLDB4NkUsMHhBQywweEVELDB4OUIsMHg1NywweDJBLDB4ODIsMHgw
MCwKKyAgICAweDZFLDB4QUMsMHgyQSwweDgzLDB4N0YsMHhBOCwweDIwLDB4MDAsMHg2RSwweEFD
LDB4MkEsMHg4MywweDU1LDB4RkUsMHhBQSwweDAwLAorICAgIDB4NkYsMHhBQywweEU5LDB4N0Es
MHg1NSwweEZFLDB4QTIsMHgwOCwweDJFLDB4QTQsMHhFOSwweDdBLDB4NTUsMHg3RiwweEVDLDB4
ODAsCisgICAgMHg4QiwweDhCLDB4QTksMHg3MiwweEZELDB4RkEsMHhBMiwweEEwLDB4NEIsMHg4
QiwweEM5LDB4NzIsMHg3NywweEZFLDB4NzIsMHhGOCwKKyAgICAweDA5LDB4N0IsMHhDOSwweDcy
LDB4QkIsMHhFQiwweDgyLDB4NkEsMHhFOSwweDdBLDB4QTgsMHg3MiwweDM1LDB4MTcsMHhFRSww
eEZBLAorICAgIDB4RTksMHg3QSwweEE4LDB4NzIsMHg2OSwweEJBLDB4MDIsMHhBNiwweEU5LDB4
NzIsMHg2NywweDZBLDB4RDYsMHg3RiwweEFFLDB4RTgsCisgICAgMHhDOSwweDcyLDB4NjcsMHg2
QSwweDU2LDB4REUsMHhGRSwweEQwLDB4QTgsMHg3MiwweDY3LDB4NkEsMHg0RiwweEEzLDB4Rjcs
MHhCQiwKKyAgICAweDg4LDB4NkEsMHg0NywweDYyLDB4NjcsMHg0QiwweDc2LDB4QTgsMHhBOCww
eDcyLDB4MDYsMHg1QSwweDJGLDB4NUYsMHhGQSwweEJCLAorICAgIDB4NkMsMHg4QiwweDQ3LDB4
NjIsMHgwQSwweDJELDB4QjUsMHg1NSwweDhCLDB4OEIsMHhBOCwweDZBLDB4ODAsMHgwMCwweDBC
LDB4QUQsCisgICAgMHhBQywweDkzLDB4NkIsMHg4MywweEZGLDB4QUIsMHhFOSwweEJELDB4OEIs
MHg4QiwweDRCLDB4ODMsMHhFRSwweEVBLDB4RUEsMHgyNiwKKyAgICAweDhDLDB4OEIsMHgyQSww
eDgzLDB4QUUsMHhGNywweEFCLDB4QTIsMHhBQywweDkzLDB4NEIsMHg4MywweEFCLDB4QUIsMHg2
QSwweEZBLAorICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHgzQSwweEJBLDB4QUMsMHg3QSwweDIz
LDB4NDksMHhFMiwweDQwLDB4MkMsMHgwQSwweEFELDB4NDEsCisgICAgMHgwMiwweDQ5LDB4RTIs
MHg0MCwweDI4LDB4QkEsMHhCRSwweDA3LDB4MjMsMHg0OSwweEUyLDB4NDAsMHhCMCwweEVFLDB4
RTcsMHg4QiwKKyAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4OEEsMHgwOCwweDI4LDB4QUUsMHgy
MywweDQ5LDB4QzIsMHgzOCwweDJCLDB4MjYsMHhBQSwweEJBLAorICAgIDB4MjMsMHg0OSwweEUy
LDB4NDAsMHg4QiwweEFFLDB4MkUsMHgzQywweDIyLDB4NDEsMHhFMiwweDQwLDB4NkIsMHgzRSww
eDIwLDB4MkEsCisgICAgMHgyMywweDQ5LDB4MDIsMHg0MSwweDYxLDB4RUIsMHhFQywweDc3LDB4
MjMsMHg0MSwweEUyLDB4MzgsMHgyQiwweEJBLDB4QUYsMHhFQiwKKyAgICAweDQzLDB4NDksMHgw
MiwweDQxLDB4M0YsMHhGRCwweENGLDB4ODUsMHhFMiwweDQ4LDB4MjIsMHg0MSwweEJELDB4QTks
MHhFQiwweEJGLAorICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHhGRCwweEJGLDB4RUUsMHg2Miww
eDAzLDB4NDksMHhDMiwweDQwLDB4MEEsMHhGQSwweEZFLDB4RkYsCisgICAgMHg2MywweDUxLDB4
QzIsMHg0MCwweEJELDB4QjUsMHgzRiwweEJGLDB4MjUsMHg2QSwweDYzLDB4NTEsMHgwOSwweDhE
LDB4OEYsMHhBRCwKKyAgICAweDI1LDB4NkEsMHhDNCwweDYxLDB4MEYsMHhFRCwweDBGLDB4MjIs
MHg0NywweDcyLDB4RTUsMHg2MSwweEEyLDB4RUQsMHhFNSwweEQ3LAorICAgIDB4NDYsMHg3Miww
eEM1LDB4NTksMHg4QSwweEFFLDB4RkIsMHg1NiwweEU1LDB4NjEsMHg0MywweDUxLDB4MjAsMHhG
OCwweEI4LDB4NUUsCisgICAgMHhBNCwweDU5LDB4MDIsMHg0OSwweEY4LDB4NUUsMHg1NywweDU3
LDB4MjQsMHg0OSwweEEzLDB4NDAsMHhFOCwweEZFLDB4REYsMHhCNywKKyAgICAweDg0LDB4NTks
MHhFMiwweDQwLDB4MEYsMHgyRCwweDJELDB4MkQsMHhDNCwweDU5LDB4ODQsMHg1OSwweEMyLDB4
QUEsMHg4RCwweEVCLAorICAgIDB4QzUsMHg1OSwweDYzLDB4NTEsMHhERSwweEVBLDB4ODIsMHhB
MiwweEE0LDB4NTksMHg2MywweDUxLDB4RDcsMHhEQywweDYwLDB4NzIsCisgICAgMHg4NCwweDUx
LDB4NDMsMHg0OSwweEY1LDB4Q0YsMHg4QSwweDJCLDB4QTQsMHg1MSwweDY0LDB4NTEsMHg3OSww
eEVELDB4N0IsMHg1RCwKKyAgICAweEE0LDB4NTEsMHg0MywweDQ5LDB4QjcsMHhCNSwweEFGLDB4
MkIsMHhBNSwweDUxLDB4NDQsMHg0OSwweDgwLDB4QTAsMHhCOCwweEQ4LAorICAgIDB4ODQsMHg1
MSwweDQ0LDB4NDksMHhBQSwweEU4LDB4RjcsMHhGRiwweDg0LDB4NDksMHg0NCwweDQ5LDB4MDEs
MHhBMSwweEZELDB4REUsCisgICAgMHg2NCwweDQ5LDB4MjMsMHg0MSwweDA4LDB4QUEsMHg3QSww
eDgwLDB4NjQsMHg0OSwweDIzLDB4NDEsMHgyRSwweEUyLDB4RUYsMHhERiwKKyAgICAweDY0LDB4
NTEsMHgyMywweDQ5LDB4QUYsMHgwQSwweEJFLDB4MjcsMHhBNCwweDU5LDB4MjMsMHg0OSwweERG
LDB4N0YsMHhERSwweDNCLAorICAgIDB4MDYsMHg2QSwweDAyLDB4NDEsMHhGNSwweEJGLDB4MkIs
MHgwRSwweDA2LDB4NkEsMHg2NCwweDUxLDB4MEQsMHgwQiwweDgyLDB4QTAsCisgICAgMHg0Nyww
eDcyLDB4NDMsMHg1MSwweDhBLDB4QTIsMHhBMywweEQ3LDB4RTUsMHg2MSwweDgzLDB4NTksMHg4
OCwweEJBLDB4RTIsMHg1NSwKKyAgICAweEU2LDB4NjEsMHg4NCwweDUxLDB4RTAsMHhBQiwweEVE
LDB4N0YsMHg4NSwweDUxLDB4MDMsMHg0MSwweEQ4LDB4RjgsMHg3QSwweDVBLAorICAgIDB4NjQs
MHg0OSwweDAyLDB4NDEsMHgyQSwweEZGLDB4N0QsMHg1NSwweDIzLDB4NDEsMHhDMiwweDM4LDB4
NjgsMHhFMCwweEVBLDB4QkEsCisgICAgMHgyMywweDQxLDB4RTMsMHgzOCwweDgyLDB4MDMsMHhF
QiwweEY5LDB4MDMsMHgzOSwweEMyLDB4MzAsMHg4QSwweEE4LDB4RjAsMHg3RSwKKyAgICAweDIz
LDB4MzksMHhDMiwweDMwLDB4QUIsMHhBRiwweEZGLDB4RDUsMHgwMywweDM5LDB4ODIsMHgyMCww
eDcwLDB4RjAsMHhGMCwweEZBLAorICAgIDB4QzIsMHgyOCwweDYxLDB4MjAsMHgzRiwweEI3LDB4
QkQsMHgxNywweDAzLDB4MzEsMHhDMywweDI4LDB4MEEsMHgwMywweDAzLDB4RkQsCisgICAgMHgw
MywweDMxLDB4QzMsMHgyOCwweDIwLDB4NjIsMHg3NywweDU1LDB4QzMsMHgyOCwweDYyLDB4Mjgs
MHhBOCwweDJBLDB4QTgsMHhFOCwKKyAgICAweEMyLDB4MzAsMHg4MSwweDI4LDB4MDIsMHhCQyww
eEFDLDB4QjcsMHhDMiwweDI4LDB4ODEsMHgyOCwweEZBLDB4N0EsMHg2RiwweEFGLAorICAgIDB4
QTIsMHgzMCwweDgxLDB4MjAsMHhFRiwweEZELDB4NUYsMHgyOCwweEMzLDB4MzAsMHg4MSwweDI4
LDB4RUQsMHhGNSwweDM1LDB4M0MsCisgICAgMHg0NCwweDQxLDB4ODEsMHgyOCwweEQ1LDB4QkYs
MHhCQiwweDgyLDB4MjQsMHg0MSwweEEyLDB4MzAsMHg1NywweDVBLDB4QTgsMHg4MiwKKyAgICAw
eEUzLDB4MzgsMHg2MSwweDI4LDB4NTcsMHhGRiwweEVBLDB4QTAsMHhBMiwweDMwLDB4ODIsMHgy
OCwweDhELDB4QjcsMHhCQiwweDg4LAorICAgIDB4MjQsMHg0MSwweEEyLDB4MzAsMHhBRCwweDJG
LDB4QUQsMHhBRCwweDQ0LDB4NDksMHgwMywweDQxLDB4QUYsMHhCQSwweEFCLDB4OUYsCisgICAg
MHg0NCwweDQ5LDB4MDMsMHgzOSwweERFLDB4N0MsMHg3RSwweEMwLDB4MjMsMHg0MSwweEEyLDB4
MzAsMHhGRSwweEVBLDB4RUEsMHhGQywKKyAgICAweEUyLDB4MzgsMHg4MSwweDI4LDB4N0EsMHhF
QSwweEFBLDB4MDAsMHhDMiwweDMwLDB4ODEsMHgyOCwweEZGLDB4N0EsMHhFOCwweERBLAorICAg
IDB4RTIsMHgzMCwweDgxLDB4MjAsMHhGRiwweEFELDB4MEIsMHgyQSwweDI0LDB4MzksMHhDMiww
eDI4LDB4RkQsMHhCRiwweEFGLDB4MEEsCisgICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweDU1LDB4
RTcsMHgwQiwweDAyLDB4NDQsMHgzOSwweEMyLDB4MzAsMHg1RiwweDdBLDB4RTgsMHgwQSwKKyAg
ICAweDQ0LDB4MzksMHhBMiwweDI4LDB4NTcsMHg1NywweEZGLDB4RTgsMHgwMywweDMxLDB4ODIs
MHgyOCwweDc3LDB4RkYsMHhFMiwweEFBLAorICAgIDB4RTMsMHgzMCwweDgxLDB4MjgsMHg3Nyww
eEZGLDB4QkUsMHgwMiwweDA0LDB4MzksMHhBMiwweDI4LDB4MDksMHhBRCwweDJGLDB4M0EsCisg
ICAgMHgyNCwweDM5LDB4RTIsMHgzMCwweEFBLDB4RUYsMHhFRiwweEZELDB4RTIsMHgzMCwweEEy
LDB4MjgsMHgwMCwweDAyLDB4MDAsMHhGOCwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4QkUs
MHhBNiwweEZBLDB4RTMsMHhDMiwweDMwLDB4QTIsMHgyOCwweDAwLDB4MEUsMHgyRCwweDJGLAor
ICAgIDB4MDMsMHgzOSwweEMzLDB4MzAsMHhDMiwweEVCLDB4RkYsMHhGNywweEUyLDB4MzAsMHhB
MSwweDMwLDB4QzgsMHhBOSwweEU2LDB4QUUsCisgICAgMHhFMiwweDMwLDB4QzIsMHgzMCwweDU3
LDB4NTcsMHhENSwweDhELDB4MDMsMHgzOSwweEMyLDB4MzAsMHhCNSwweDNELDB4OTcsMHhENywK
KyAgICAweDQ0LDB4MzksMHhFMiwweDMwLDB4RkIsMHhERSwweEFFLDB4RjcsMHgwMywweDMxLDB4
RTIsMHgzMCwweDAzLDB4ODIsMHhCRSwweEI2LAorICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHg4
RiwweDhBLDB4NjIsMHhGOCwweEUyLDB4MzAsMHhBMiwweDI4LDB4RUEsMHg3QSwweDZGLDB4RUMs
CisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEZELDB4QTksMHhBRCwweDhCLDB4RTMsMHgzMCww
eEEyLDB4MjgsMHhBRCwweEVCLDB4NkIsMHg3QSwKKyAgICAweEUyLDB4MjgsMHhBMSwweDI4LDB4
QkYsMHg2RiwweDU1LDB4QTUsMHhDMiwweDI4LDB4QTIsMHgyOCwweDgwLDB4OEIsMHhGOSwweEY4
LAorICAgIDB4RTIsMHgyOCwweEExLDB4MjgsMHhBQSwweERBLDB4RjcsMHg1NSwweEUzLDB4MzAs
MHhBMSwweDI4LDB4MjMsMHgwRSwweEFCLDB4OUIsCisgICAgMHgwMywweDMxLDB4QzIsMHgyOCww
eEUzLDB4QjIsMHhFQiwweERGLDB4MDMsMHgzMSwweEUzLDB4MzAsMHhDRCwweEVGLDB4QTUsMHhG
NywKKyAgICAweDAyLDB4MzEsMHhDMiwweDMwLDB4NUIsMHhDQSwweERFLDB4RkUsMHgwMywweDMx
LDB4QzIsMHgyOCwweEE4LDB4QkIsMHhGRCwweEVCLAorICAgIDB4MjMsMHgzMSwweEMyLDB4MzAs
MHhGRiwweDdFLDB4RjcsMHhENSwweDIzLDB4MzEsMHhDMiwweDMwLDB4Q0IsMHhGRiwweEZCLDB4
OUUsCisgICAgMHgwMiwweDM5LDB4QzIsMHgzMCwweDdBLDB4RTIsMHhGQSwweEFDLDB4MjQsMHgz
OSwweEMyLDB4MzAsMHhCNSwweEE1LDB4MjUsMHhCNSwKKyAgICAweDY0LDB4NDEsMHhFMiwweDM4
LDB4RjMsMHhGRiwweEQ3LDB4NTcsMHg4NSwweDQ5LDB4MjQsMHg0MSwweEZCLDB4QUQsMHhBRCww
eDI5LAorICAgIDB4QTUsMHg1MSwweDQzLDB4NDEsMHhERCwweEZELDB4NkIsMHg4QSwweEM2LDB4
NTksMHg0MywweDQ5LDB4NzUsMHhGRCwweDk3LDB4MjcsCisgICAgMHgwOSwweDgzLDB4NDMsMHg0
OSwweEZELDB4QkQsMHgyRiwweDJGLDB4QUYsMHhCNCwweEE4LDB4NzIsMHhBRCwweEFGLDB4MkYs
MHgyQSwKKyAgICAweEQwLDB4QkMsMHg2RSwweEFDLDB4NzUsMHhGRiwweEEzLDB4QTIsMHhBRiww
eEI0LDB4NEUsMHhBQywweEZGLDB4N0UsMHhCQSwweEZFLAorICAgIDB4OEYsMHhCNCwweDZFLDB4
QUMsMHhERCwweEJBLDB4MEEsMHgwRiwweEFGLDB4QjQsMHg0RSwweEFDLDB4REYsMHhCQSwweDAw
LDB4QTIsCisgICAgMHhBRiwweEI0LDB4NkUsMHhBQywweDU3LDB4RjUsMHgyQSwweDAwLDB4QUYs
MHhCNCwweDBELDB4QTQsMHg2QSwweEFBLDB4RTgsMHgyMCwKKyAgICAweDRGLDB4QUMsMHg2Qiww
eDhCLDB4NTcsMHg1OCwweDc4LDB4QzAsMHg0QiwweDhCLDB4MEEsMHg4MywweEVFLDB4RkEsMHg1
RiwweDVBLAorICAgIDB4MEEsMHg3QiwweEM5LDB4NzIsMHhBMiwweEUwLDB4RTgsMHg2OCwweEU5
LDB4N0EsMHhBOCwweDcyLDB4RkEsMHg2MiwweDVBLDB4N0EsCisgICAgMHhBOCwweDcyLDB4NDcs
MHg2MiwweDIwLDB4MDAsMHhFQSwweERBLDB4QzksMHg3MiwweDQ3LDB4NjIsMHgwMiwweDhFLDB4
OEYsMHhCNSwKKyAgICAweEU5LDB4N0EsMHg4OCwweDZBLDB4N0YsMHg5RSwweDgzLDB4Q0EsMHhD
OSwweDcyLDB4NjcsMHg2QSwweEZELDB4QkYsMHgzOCwweEFBLAorICAgIDB4QzksMHg3MiwweDY3
LDB4NjIsMHg1QSwweEZBLDB4ODgsMHhDMCwweEE4LDB4NzIsMHg0NywweDYyLDB4REYsMHhGOCww
eEUwLDB4RTgsCisgICAgMHg4NywweDZBLDB4MjcsMHg2MiwweDU2LDB4RjcsMHg2RSwweENCLDB4
RTksMHg3QSwweDA2LDB4NUEsMHgyRiwweEZGLDB4RDUsMHg1NywKKyAgICAweDZCLDB4ODMsMHgw
NiwweDVBLDB4MDAsMHgwMiwweDJELDB4MzUsMHg4QywweDhCLDB4NEIsMHg4MywweEVBLDB4M0Es
MHgyQywweDM1LAorICAgIDB4OEMsMHg4QiwweDRCLDB4ODMsMHhCOCwweEU4LDB4MzAsMHg5QSww
eDhDLDB4OEIsMHg0QiwweDgzLDB4OUUsMHhCQSwweEFFLDB4REMsCisgICAgMHgyMywweDQ5LDB4
RTMsMHg0MCwweEZBLDB4RTgsMHhCRiwweDJELDB4MjMsMHg0OSwweEUyLDB4NDAsMHhBNSwweEFE
LDB4RkEsMHg1RSwKKyAgICAweDIzLDB4NDEsMHhDMiwweDQwLDB4N0YsMHhGQywweEJFLDB4RkEs
MHgyMywweDQxLDB4QzIsMHg0MCwweEFBLDB4QTksMHgyQSwweEFCLAorICAgIDB4MjMsMHg0OSww
eEUyLDB4NDAsMHhCRSwweDlFLDB4RkUsMHhFQSwweDIzLDB4NDksMHhFMiwweDQwLDB4NTYsMHhE
RSwweDFFLDB4RUQsCisgICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweEFGLDB4RkYsMHhGRSwweDg4
LDB4NDMsMHg0OSwweEUyLDB4NDAsMHhGRiwweEVGLDB4QTcsMHhBQywKKyAgICAweDQzLDB4NDks
MHhFMiwweDQwLDB4RkIsMHg2QiwweEUwLDB4RDAsMHgyMywweDQxLDB4RTIsMHg0MCwweEFCLDB4
ODksMHg4QiwweEFBLAorICAgIDB4NDMsMHg0OSwweDAzLDB4NDEsMHhGNSwweEQ3LDB4QjcsMHhB
NCwweDQzLDB4NDksMHgwMywweDQxLDB4OUYsMHgzRSwweEE4LDB4QkYsCisgICAgMHg0MywweDQ5
LDB4RTMsMHg0MCwweDc4LDB4QzgsMHhBRiwweEVGLDB4MDIsMHg0MSwweEMyLDB4NDAsMHhCRiww
eERGLDB4NUMsMHhBMCwKKyAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4M0YsMHgzRiwweERELDB4
RjcsMHhFNSwweDYxLDB4MDMsMHg0OSwweDJGLDB4M0YsMHhCNSwweEY1LAorICAgIDB4MDUsMHg2
QSwweEE0LDB4NTksMHgwQSwweEFFLDB4QzIsMHgyRCwweDI2LDB4NkEsMHg4NCwweDU5LDB4QTgs
MHhFMiwweDdBLDB4N0EsCisgICAgMHhFNSwweDYxLDB4MDMsMHg0OSwweEE4LDB4RUEsMHhGRSww
eDdGLDB4ODQsMHg1OSwweEUyLDB4NDAsMHhBMCwweEUwLDB4RkYsMHhERCwKKyAgICAweDAzLDB4
NDksMHhDMiwweDQwLDB4QTgsMHhFQSwweEZFLDB4OUEsMHgwMywweDQ5LDB4QzIsMHg0MCwweEJB
LDB4ODgsMHg3OCwweDlBLAorICAgIDB4ODUsMHg1OSwweEUyLDB4NDAsMHgzRCwweDNELDB4MzUs
MHgyNywweEU2LDB4NjEsMHhBNSwweDU5LDB4RUQsMHhENiwweEI2LDB4MDksCisgICAgMHhFNiww
eDYxLDB4QTUsMHg1OSwweDVELDB4NzYsMHhEQSwweEJCLDB4QzUsMHg1OSwweDY0LDB4NTEsMHg1
QSwweDYwLDB4RkMsMHhGOCwKKyAgICAweDg0LDB4NTEsMHg0MywweDUxLDB4QUEsMHg4QiwweDhC
LDB4MDQsMHhDNSwweDUxLDB4NjQsMHg1MSwweEZELDB4RkQsMHhFRCwweEJGLAorICAgIDB4QzUs
MHg1OSwweDg0LDB4NTEsMHhCNSwweEJBLDB4NkQsMHhEOCwweEE1LDB4NTEsMHg2NCwweDQ5LDB4
RjgsMHhFRSwweEQ2LDB4NTgsCisgICAgMHg4NSwweDUxLDB4NDQsMHg0OSwweEVDLDB4QkEsMHhF
RiwweEJGLDB4ODQsMHg0OSwweDIzLDB4NDEsMHhGOCwweDVFLDB4RkEsMHg4MCwKKyAgICAweDg1
LDB4NTEsMHgyMywweDQ5LDB4RkIsMHhGQiwweDZBLDB4RkEsMHg2NCwweDQ5LDB4MjMsMHg0OSww
eDk3LDB4NkYsMHhERiwweEZBLAorICAgIDB4MjUsMHg2QSwweDIzLDB4NDksMHhGNSwweDNELDB4
MEYsMHgyMywweDY1LDB4NzIsMHhDNCwweDU5LDB4QjUsMHg4RSwweDIyLDB4RUEsCisgICAgMHg2
NiwweDcyLDB4QTMsMHg1OSwweEFBLDB4QTgsMHhGOCwweDdFLDB4MDYsMHg2QSwweDg0LDB4NTEs
MHhBOCwweEE4LDB4RUEsMHg1RiwKKyAgICAweEM1LDB4NTksMHg2NCwweDUxLDB4NTYsMHhENCww
eDdFLDB4N0IsMHg2NCwweDUxLDB4MjMsMHg0OSwweDgwLDB4MDgsMHhGQSwweDU3LAorICAgIDB4
QzUsMHg1OSwweDQzLDB4NDksMHhDQSwweEFCLDB4RUIsMHhGRCwweDY0LDB4NDksMHgwMywweDQx
LDB4RkEsMHg1RSwweDdDLDB4REMsCisgICAgMHgyMywweDQxLDB4QTIsMHgzMCwweEFBLDB4QUEs
MHhGQSwweDdBLDB4MDMsMHgzOSwweEMyLDB4MzgsMHhBMiwweEFFLDB4QjcsMHgyNSwKKyAgICAw
eDAzLDB4MzksMHhDMiwweDMwLDB4M0IsMHhCRiwweDVGLDB4RDAsMHhFMywweDM4LDB4NjEsMHgy
OCwweEIwLDB4RTgsMHhBOCwweEFBLAorICAgIDB4QzIsMHgzMCwweDYxLDB4MjgsMHgyQSwweEFC
LDB4RUUsMHhGQSwweEMyLDB4MjgsMHg4MSwweDI4LDB4QUEsMHhGRCwweEI1LDB4REQsCisgICAg
MHhBMiwweDI4LDB4NjEsMHgyMCwweDNGLDB4QkEsMHhCOCwweDJBLDB4RTMsMHgzMCwweEEyLDB4
MjgsMHgyRiwweEFCLDB4QUIsMHhGRCwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4N0UsMHg3
QSwweEJDLDB4QjYsMHhDMywweDMwLDB4ODIsMHgyOCwweEZGLDB4RUEsMHgwQSwweDgwLAorICAg
IDB4RTMsMHgzMCwweDgyLDB4MjAsMHhERiwweEQ1LDB4RkIsMHhFRiwweDQ0LDB4NDEsMHhBMiww
eDI4LDB4RDUsMHhGRCwweEFELDB4MkYsCisgICAgMHg0NCwweDQxLDB4QTIsMHgzMCwweEJELDB4
MkYsMHg4OCwweDgwLDB4NjUsMHg0OSwweDAzLDB4MzksMHhENywweEZGLDB4RUYsMHgzRCwKKyAg
ICAweDY1LDB4NDksMHhDMywweDM4LDB4RUEsMHhFOCwweEZBLDB4NTgsMHgyNCwweDQxLDB4QzIs
MHgzOCwweDBBLDB4MkEsMHgzRSwweEZELAorICAgIDB4MjMsMHg0MSwweEUzLDB4MzgsMHhERiww
eEU2LDB4RTgsMHhBMCwweDIzLDB4NDEsMHhBMiwweDMwLDB4RDcsMHhFRiwweEFBLDB4MEEsCisg
ICAgMHgwMywweDQxLDB4RTIsMHgzOCwweDdELDB4NkQsMHhENywweDVDLDB4NDQsMHg0OSwweEUy
LDB4MzgsMHhGRiwweENELDB4QjUsMHhCNSwKKyAgICAweDg1LDB4NTEsMHgyMywweDQxLDB4RkYs
MHhGRCwweDhELDB4QzksMHg4NCwweDUxLDB4MDMsMHgzOSwweDU3LDB4RkYsMHhBQiwweEEyLAor
ICAgIDB4NDMsMHg0OSwweEUyLDB4MzgsMHg1RiwweDdFLDB4NzgsMHg2MCwweEUyLDB4MzAsMHhB
MiwweDMwLDB4N0YsMHg3RiwweEZDLDB4RDcsCisgICAgMHhFMiwweDMwLDB4QTEsMHgyOCwweDNE
LDB4QjUsMHhCRCwweERGLDB4MDMsMHgzOSwweEEyLDB4MjgsMHgwMiwweDJGLDB4QkYsMHg1NywK
KyAgICAweDI0LDB4MzksMHhDMiwweDMwLDB4QTAsMHg4MiwweEVGLDB4RjUsMHg0NCwweDQxLDB4
RTMsMHgzMCwweDJELDB4MkQsMHhBRCwweEZELAorICAgIDB4NDUsMHgzOSwweEMzLDB4MzAsMHhF
QywweEZBLDB4N0EsMHhERSwweDIzLDB4MzksMHhDMiwweDMwLDB4RjgsMHhGQiwweEFCLDB4QUQs
CisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDI4LDB4QzIsMHhCOCwweEUwLDB4RTMsMHgzMCww
eEMyLDB4MjgsMHgwOCwweDAyLDB4MjAsMHgwRCwKKyAgICAweDI0LDB4MzksMHhDMiwweDI4LDB4
QkYsMHhGRiwweEZGLDB4NTQsMHgwMywweDMxLDB4QTIsMHgyOCwweDVBLDB4NTQsMHg3NiwweDdG
LAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhFOSwweEZCLDB4N0QsMHg3RSwweEMyLDB4MzAs
MHg4MiwweDI4LDB4M0UsMHgzRiwweEFCLDB4QzIsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCww
eEFGLDB4OEYsMHhGQiwweERCLDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBRiwweDAyLDB4QTIsMHhG
OCwKKyAgICAweEUyLDB4MzAsMHg4MSwweDI4LDB4QzIsMHhDOCwweDYwLDB4QzgsMHhFMiwweDMw
LDB4QTEsMHgyOCwweDJBLDB4QUQsMHhFRiwweEJELAorICAgIDB4RTIsMHgzMCwweEMyLDB4MzAs
MHgwMiwweERCLDB4RUIsMHg2MywweDAzLDB4MzEsMHhDMiwweDMwLDB4MjgsMHhBOCwweEEwLDB4
OEIsCisgICAgMHgwMywweDMxLDB4QzIsMHgzMCwweDUyLDB4NUUsMHhCQiwweEY3LDB4RTMsMHgz
MCwweEEyLDB4MjgsMHhBOCwweEUyLDB4ODAsMHg3QywKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4
LDB4NjIsMHhGQiwweDk3LDB4RjcsMHhFMywweDMwLDB4QzIsMHgyOCwweDVELDB4NDUsMHg4RCww
eDI1LAorICAgIDB4RTIsMHgzMCwweEMyLDB4MjgsMHg4OSwweEFCLDB4N0YsMHg3NywweEUyLDB4
MzAsMHhBMSwweDI4LDB4NUEsMHhEQSwweEFBLDB4MjAsCisgICAgMHhFMywweDMwLDB4ODEsMHgy
MCwweERGLDB4QUUsMHg4QSwweDhBLDB4RTIsMHgzMCwweEEyLDB4MjgsMHhGQiwweEU5LDB4OEEs
MHgyMiwKKyAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4N0YsMHhGMiwweENBLDB4RkUsMHgyMyww
eDM5LDB4RTMsMHgzMCwweDdGLDB4RkUsMHhERCwweDNGLAorICAgIDB4MjMsMHgzOSwweEUzLDB4
MzAsMHg1RiwweEZELDB4RUYsMHg4QiwweDIzLDB4MzksMHhDMiwweDI4LDB4RkIsMHhENywweEVG
LDB4QjgsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDU3LDB4NTcsMHg1QywweDc4LDB4MjMs
MHgzOSwweEMyLDB4MzAsMHhENywweEQ1LDB4QkYsMHhCRCwKKyAgICAweDAzLDB4MzksMHhDMiww
eDMwLDB4OTYsMHhGRiwweEFCLDB4QkUsMHgwMywweDM5LDB4QzIsMHgzMCwweEJGLDB4QkQsMHhC
NywweDE3LAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHgzRSwweEVFLDB4QjgsMHhCQSwweEE1
LDB4NDksMHgwMywweDM5LDB4QUIsMHgyRCwweDJELDB4QkQsCisgICAgMHhDNSwweDU5LDB4ODQs
MHg0OSwweEI5LDB4RkEsMHhCQiwweEY5LDB4MDYsMHg2MiwweDg0LDB4NTEsMHhCNSwweEFELDB4
MjcsMHgyRCwKKyAgICAweEFELDB4OTMsMHgyNiwweDYyLDB4QjUsMHgyRCwweDJELDB4MEIsMHhG
MCwweEJDLDB4MEUsMHhBNCwweEE5LDB4MkYsMHgwRiwweDJBLAorICAgIDB4RjAsMHhDNCwweEFG
LDB4QjQsMHg3QiwweEVFLDB4QkUsMHg3OCwweEYwLDB4QzQsMHg4RiwweEI0LDB4N0YsMHg3OCww
eEZBLDB4QkYsCisgICAgMHhEMCwweEJDLDB4NkUsMHhCNCwweEY3LDB4RjcsMHhFQywweEZFLDB4
RDAsMHhCQywweDhGLDB4QjQsMHhGRiwweEJCLDB4M0QsMHhCRCwKKyAgICAweEQwLDB4QkMsMHg4
RiwweEI0LDB4RkIsMHhCQSwweEE4LDB4QTgsMHhDRiwweEJDLDB4OEYsMHhCNCwweEI2LDB4RUIs
MHhFMiwweEFCLAorICAgIDB4QUYsMHhCNCwweDJFLDB4QTQsMHg3OCwweDY4LDB4QTgsMHhBMCww
eDZFLDB4QUMsMHgyQiwweDgzLDB4NTcsMHg1RSwweEZBLDB4RTgsCisgICAgMHg2QywweDhCLDB4
RUEsMHg3QSwweDVGLDB4NTcsMHhBRiwweEE4LDB4MkIsMHg4MywweEE5LDB4NzIsMHg1QiwweDdB
LDB4NzgsMHg2OCwKKyAgICAweEM5LDB4NzIsMHg0NywweDYyLDB4RjYsMHg3RiwweDNBLDB4RTAs
MHg4NywweDZBLDB4MjYsMHg2MiwweEJFLDB4QUUsMHhCQSwweDQ4LAorICAgIDB4QzksMHg3Miww
eDQ2LDB4NjIsMHhBRSwweDJFLDB4QUYsMHgyRCwweEU5LDB4N0EsMHhBOCwweDcyLDB4N0QsMHg3
QywweDdFLDB4N0QsCisgICAgMHgwOSwweDdCLDB4QTgsMHg3MiwweDVCLDB4ODksMHg4QiwweDhC
LDB4RTksMHg3QSwweDg4LDB4NkEsMHg3RSwweEZFLDB4RTIsMHgyMCwKKyAgICAweEM5LDB4NzIs
MHg2OCwweDZBLDB4NzcsMHhFQiwweEVFLDB4ODAsMHg4OCwweDZBLDB4RTYsMHg1OSwweDdFLDB4
N0EsMHhFQSwweDgwLAorICAgIDB4MjcsMHg2MiwweEM1LDB4NTEsMHgyOSwweEFGLDB4REUsMHhB
QywweDRCLDB4ODMsMHhFNiwweDUxLDB4MEIsMHgzNSwweEQ1LDB4NTUsCisgICAgMHg2QiwweDgz
LDB4MDYsMHg1QSwweDAwLDB4MDAsMHgwQSwweEI1LDB4OEMsMHg4QiwweDJBLDB4N0IsMHhCQSww
eEFBLDB4QjgsMHhGNSwKKyAgICAweDAyLDB4NDksMHhFMiwweDQwLDB4OEIsMHg4RSwweDlFLDB4
MzcsMHgyMiwweDQ5LDB4QzIsMHgzOCwweEI3LDB4REYsMHhCQiwweEZDLAorICAgIDB4MDMsMHg0
OSwweEUyLDB4MzgsMHhEQSwweEZDLDB4N0EsMHhFMiwweDAzLDB4NDksMHhFMiwweDM4LDB4QUEs
MHhGQSwweEJGLDB4MkUsCisgICAgMHgyMywweDQxLDB4RTIsMHg0MCwweENBLDB4OEEsMHg5Qyww
eDNDLDB4MjMsMHg0OSwweEUyLDB4NDAsMHgwNywweDg4LDB4QkEsMHhFOCwKKyAgICAweDIzLDB4
NDksMHhFMiwweDQwLDB4QTgsMHhBOCwweEI4LDB4RDcsMHgyMywweDQ5LDB4MDIsMHg0MSwweDc1
LDB4NTQsMHg3OCwweEQ4LAorICAgIDB4NjQsMHg0OSwweDAyLDB4NDEsMHhERSwweEJCLDB4QjMs
MHhFQiwweDQzLDB4NDksMHhFMiwweDQwLDB4OTYsMHhGQSwweEUyLDB4QTgsCisgICAgMHgyMyww
eDQ5LDB4RTIsMHg0MCwweDJDLDB4REUsMHhBRSwweDNFLDB4MjMsMHg0MSwweEUyLDB4NDAsMHhB
RSwweEZBLDB4RjMsMHg1NiwKKyAgICAweDIzLDB4NDksMHhDMiwweDM4LDB4QUEsMHhBMiwweEI1
LDB4MzcsMHgyMywweDQ5LDB4RTIsMHg0MCwweDcyLDB4NDAsMHhBOCwweEVFLAorICAgIDB4MjMs
MHg0OSwweEUyLDB4NDAsMHgxNywweEJCLDB4QUIsMHhCMywweDIzLDB4NDksMHhFMiwweDQwLDB4
QTYsMHhBRiwweEExLDB4ODAsCisgICAgMHhBNSwweDU5LDB4MDIsMHg0MSwweDJGLDB4MkQsMHhC
RCwweEY3LDB4QzUsMHg2MSwweDIzLDB4NDksMHhFMCwweEZBLDB4N0YsMHg1NSwKKyAgICAweDQ0
LDB4NDksMHhFMywweDQwLDB4RTYsMHhCQywweEZBLDB4RTYsMHgwMywweDQ5LDB4QzIsMHg0MCww
eDJBLDB4QTgsMHhGQSwweDVGLAorICAgIDB4RTIsMHg0MCwweEMyLDB4MzgsMHhBOCwweDI2LDB4
MUYsMHgzQiwweDAzLDB4NDksMHhDMiwweDQwLDB4QkYsMHhBRSwweDdBLDB4RkEsCisgICAgMHhB
NSwweDU5LDB4MDMsMHg0OSwweDM1LDB4MjUsMHgzNSwweEE1LDB4MDYsMHg2MiwweEE0LDB4NTks
MHhBRiwweEVCLDB4ODksMHg4RCwKKyAgICAweDA2LDB4NjIsMHhBNCwweDU5LDB4RUYsMHhGRiww
eERGLDB4NUMsMHhFNSwweDYxLDB4ODQsMHg1MSwweDdBLDB4N0UsMHg2QiwweEVBLAorICAgIDB4
QzUsMHg1OSwweDYzLDB4NTEsMHhENywweEJCLDB4MDMsMHgwOSwweEM1LDB4NTksMHg4NCwweDUx
LDB4RDcsMHhCRSwweEJGLDB4RkMsCisgICAgMHhDNSwweDU5LDB4NjQsMHg1MSwweEU4LDB4RDgs
MHhGRiwweEZFLDB4ODQsMHg1MSwweDQ0LDB4NDksMHhGOCwweEVFLDB4QkYsMHhCRSwKKyAgICAw
eEE1LDB4NTEsMHg2NCwweDQ5LDB4NUQsMHg3RCwweEEzLDB4N0IsMHhBNCwweDQ5LDB4NDQsMHg0
OSwweEVGLDB4N0YsMHg1RiwweEY5LAorICAgIDB4NjQsMHg0OSwweDIzLDB4NDEsMHhBMCwweDgw
LDB4MjIsMHgwRSwweDY0LDB4NTEsMHgyMywweDQ5LDB4MUMsMHgzRiwweDJBLDB4MEIsCisgICAg
MHg4OCwweDdBLDB4QzUsMHg1OSwweEZELDB4QUYsMHgyOSwweDM1LDB4NDYsMHg3MiwweEMzLDB4
NjEsMHhDQSwweDZBLDB4QzAsMHhFMCwKKyAgICAweDA1LDB4NkEsMHhBMywweDU5LDB4N0UsMHhG
QSwweEU4LDB4RTgsMHg4NCwweDU5LDB4RTIsMHgzOCwweDAwLDB4QTAsMHhGMCwweDcwLAorICAg
IDB4NjQsMHg1MSwweEExLDB4MzAsMHg4MCwweEZBLDB4RkEsMHg1NywweDQ0LDB4NDksMHhBMiww
eDMwLDB4MkEsMHhBRiwweDM1LDB4REYsCisgICAgMHg2NCwweDQ5LDB4MjMsMHg0MSwweDIwLDB4
MEEsMHgwMywweEJELDB4ODQsMHg0OSwweDAzLDB4MzksMHg1QiwweDdBLDB4RjgsMHg3QSwKKyAg
ICAweDAzLDB4MzksMHhBMiwweDMwLDB4RTgsMHhBOCwweDJBLDB4MDAsMHgyMywweDQxLDB4QzIs
MHgzMCwweEY1LDB4RkIsMHg4MiwweDAyLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGMiww
eEYwLDB4RjcsMHhFNiwweEUzLDB4MzAsMHhBMiwweDMwLDB4RkUsMHhGRSwweEZDLDB4Q0EsCisg
ICAgMHhDMiwweDMwLDB4ODIsMHgyOCwweDVDLDB4RTgsMHhBMiwweDIyLDB4QzIsMHgyOCwweDgx
LDB4MjAsMHhGQiwweEYyLDB4RUEsMHhGOCwKKyAgICAweEMyLDB4MjgsMHg4MSwweDIwLDB4QjUs
MHg5NywweEE1LDB4QUQsMHhBMiwweDMwLDB4QzMsMHgyOCwweEZGLDB4RDcsMHg1NSwweEQ3LAor
ICAgIDB4RTMsMHgyOCwweEEyLDB4MjgsMHhCRiwweDFELDB4OTcsMHhGRiwweEUzLDB4MzAsMHhB
MiwweDI4LDB4RkEsMHhGRSwweDU3LDB4REQsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDc3
LDB4QTcsMHhCNSwweEJELDB4NDQsMHg0MSwweEUzLDB4MzAsMHgyOSwweDBCLDB4MDIsMHgwMywK
KyAgICAweDg1LDB4NTEsMHgwMywweDM5LDB4NUYsMHhCQSwweDJBLDB4MkEsMHg2NCwweDQ5LDB4
MjMsMHg0MSwweDE1LDB4MkYsMHg4QSwweEEwLAorICAgIDB4NjUsMHg0OSwweEMyLDB4MzgsMHg3
QSwweEZFLDB4RkUsMHg2OCwweDAzLDB4MzksMHhDMiwweDM4LDB4RjksMHhFMSwweEFBLDB4QUEs
CisgICAgMHgyMywweDQxLDB4RTMsMHgzOCwweEEzLDB4QkYsMHhCRiwweEZGLDB4MjMsMHg0MSww
eEUyLDB4MzgsMHhFQSwweEZDLDB4NzYsMHg3NiwKKyAgICAweDAzLDB4NDEsMHhFMiwweDM4LDB4
MEEsMHgwOSwweEFCLDB4ODMsMHgyMywweDQ5LDB4QzIsMHg0MCwweDJFLDB4M0EsMHhGRSwweDVG
LAorICAgIDB4NjUsMHg0OSwweEUyLDB4NDAsMHgwQiwweEJCLDB4QUYsMHg1RCwweDY0LDB4NDks
MHgwMywweDQxLDB4MDAsMHgwMiwweDJELDB4QjUsCisgICAgMHg2NCwweDQ5LDB4MDMsMHg0MSww
eDQ4LDB4NDAsMHhFMCwweDZCLDB4MjMsMHg0MSwweEExLDB4MzAsMHhENSwweDVGLDB4N0UsMHhF
OCwKKyAgICAweEMyLDB4MzAsMHg2MSwweDI4LDB4RTgsMHg2QSwweEEyLDB4QTIsMHhDMiwweDMw
LDB4ODEsMHgyOCwweEY1LDB4RkQsMHhBQSwweDBBLAorICAgIDB4RTMsMHgzOCwweDYxLDB4Mjgs
MHgwQiwweDJGLDB4QUEsMHhBMiwweDAzLDB4MzksMHhBMSwweDI4LDB4ODAsMHg4MiwweEFBLDB4
QUIsCisgICAgMHgwMywweDMxLDB4QTIsMHgzMCwweEVBLDB4OEEsMHgwQSwweDhBLDB4MDMsMHgz
MSwweEEyLDB4MjgsMHg4QSwweEJFLDB4RkEsMHg3RSwKKyAgICAweEUzLDB4MzAsMHg4MSwweDIw
LDB4RTIsMHhFRiwweEY3LDB4N0YsMHhDMiwweDMwLDB4ODEsMHgyOCwweDBBLDB4M0IsMHhBRiww
eENELAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhFQSwweDhCLDB4ODksMHg1RCwweEUzLDB4
MzAsMHhBMiwweDI4LDB4RkIsMHhGRiwweEZGLDB4REEsCisgICAgMHhDMiwweDMwLDB4QTIsMHgy
OCwweEVFLDB4N0QsMHhFQSwweEUyLDB4RTIsMHgzMCwweEEyLDB4MjgsMHg2QiwweEY5LDB4NTcs
MHg1NSwKKyAgICAweEUyLDB4MzAsMHhBMiwweDI4LDB4MDIsMHhBQiwweEM5LDB4ODksMHgwMyww
eDM5LDB4QTIsMHgyOCwweEI4LDB4Q0IsMHhCRiwweDdELAorICAgIDB4RTMsMHgzMCwweEEyLDB4
MjgsMHhBQiwweDJCLDB4RUYsMHhGRCwweEUyLDB4MzAsMHhBMiwweDI4LDB4RUUsMHhGNCwweEVB
LDB4MkIsCisgICAgMHhFMiwweDMwLDB4QTIsMHgyOCwweEVCLDB4RTgsMHhCQSwweDdBLDB4RTIs
MHgzMCwweEMyLDB4MjgsMHgwOSwweDA5LDB4ODcsMHg3RCwKKyAgICAweEUyLDB4MzAsMHhDMiww
eDI4LDB4MjgsMHg3MiwweDdGLDB4RTUsMHhFMiwweDMwLDB4QTIsMHgyOCwweEJDLDB4ODIsMHhB
MiwweEFFLAorICAgIDB4RTIsMHgzMCwweEMyLDB4MjgsMHhGNSwweDc3LDB4QTAsMHgzQiwweEUz
LDB4MzAsMHhBMSwweDI4LDB4MEQsMHhDRCwweEZGLDB4NUIsCisgICAgMHhFMiwweDMwLDB4QTIs
MHgyOCwweEJBLDB4QkYsMHhBRiwweEJCLDB4MDMsMHgzMSwweEMyLDB4MjgsMHg3RSwweDdGLDB4
RjcsMHhFQiwKKyAgICAweDAzLDB4MzEsMHhBMSwweDI4LDB4MkYsMHhBRiwweEE3LDB4MUUsMHgw
MywweDM5LDB4RTIsMHgzMCwweEI3LDB4QjIsMHg1RSwweEZGLAorICAgIDB4RTIsMHgzMCwweEEy
LDB4MjgsMHhCMCwweEYwLDB4RjIsMHhGOCwweDAzLDB4MzEsMHhDMiwweDI4LDB4MEIsMHgzRCww
eDk1LDB4RDUsCisgICAgMHgwMywweDMxLDB4QzIsMHgzMCwweDAyLDB4QkIsMHhGNywweDdELDB4
MjMsMHgzOSwweEUzLDB4MzAsMHhGOCwweEZFLDB4RTUsMHhGNSwKKyAgICAweDIzLDB4MzksMHhF
MywweDM4LDB4NUUsMHhGMywweDdELDB4NTUsMHgwMywweDM5LDB4QzIsMHgzMCwweDg3LDB4QUUs
MHhCRSwweDNFLAorICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHhCRiwweDIxLDB4MjEsMHgzMSww
eDAzLDB4MzksMHhBMSwweDI4LDB4RkUsMHg3QywweEQ4LDB4QjgsCisgICAgMHgwMywweDM5LDB4
QzIsMHgzMCwweEIzLDB4QUYsMHhCOSwweEQ1LDB4NDQsMHg0OSwweEMyLDB4MzAsMHgyOSwweDA3
LDB4MkQsMHhCRCwKKyAgICAweEE0LDB4NTEsMHgyMywweDQxLDB4MjIsMHhBRiwweEJGLDB4M0Qs
MHg2QiwweDhCLDB4QTQsMHg1MSwweEY1LDB4QTUsMHgyNSwweDJELAorICAgIDB4RjAsMHhDNCww
eDRCLDB4OEIsMHhCRCwweDJGLDB4MDIsMHgwMiwweDMxLDB4Q0QsMHhCMCwweEI0LDB4QkQsMHhB
QiwweDgyLDB4MDIsCisgICAgMHgzMSwweEM1LDB4QUYsMHhCQywweERGLDB4RjgsMHhBOCwweDgw
LDB4MTAsMHhDNSwweDhFLDB4QjQsMHg1NywweDc3LDB4RkEsMHg4MCwKKyAgICAweEQwLDB4QkMs
MHg0RSwweEFDLDB4QkEsMHhGRSwweEZFLDB4NzgsMHhDRiwweEI0LDB4NkUsMHhCNCwweERGLDB4
RkQsMHhFRCwweDc1LAorICAgIDB4QUYsMHhCNCwweDZFLDB4QjQsMHgzQywweEJBLDB4N0EsMHg3
RCwweENGLDB4QkMsMHg0RSwweEFDLDB4QTIsMHhFQSwweEJFLDB4REYsCisgICAgMHhBRiwweEI0
LDB4NEUsMHhBQywweEY4LDB4N0UsMHg3RiwweDU3LDB4NkUsMHhBQywweENDLDB4OUIsMHg1OCww
eEVFLDB4QUEsMHhBQSwKKyAgICAweDRFLDB4QTQsMHgyQiwweDgzLDB4NzcsMHg3RiwweEE4LDB4
ODAsMHhDQywweDlCLDB4QTksMHg3MiwweDdGLDB4N0UsMHg3QSwweEU4LAorICAgIDB4RUEsMHg3
QSwweDY4LDB4NkEsMHhGRSwweEZGLDB4REEsMHhGMCwweEE4LDB4NzIsMHg0NywweDYyLDB4NUUs
MHhGQSwweENBLDB4MjAsCisgICAgMHhDOCwweDcyLDB4NDYsMHg2MiwweEE1LDB4MkIsMHhFQSww
eEZBLDB4RTksMHg3QSwweDg3LDB4NkEsMHhFQiwweDhGLDB4QUQsMHgyQSwKKyAgICAweDA5LDB4
N0IsMHhDOSwweDcyLDB4QTksMHhBOSwweDNCLDB4MDksMHgyQSwweDgzLDB4QzksMHg3MiwweDdC
LDB4RkIsMHhCMywweENCLAorICAgIDB4MEEsMHg3QiwweDg4LDB4NkEsMHhCRiwweEVBLDB4REEs
MHhGQywweEM5LDB4NzIsMHg2OCwweDYyLDB4N0MsMHhFQSwweDhBLDB4QjgsCisgICAgMHhBOSww
eDZBLDB4MDYsMHg1QSwweDVGLDB4REUsMHhGOCwweEM4LDB4NDcsMHg2MiwweEM1LDB4NTEsMHg3
RiwweDcyLDB4RjAsMHhFMCwKKyAgICAweDg4LDB4NkEsMHhBNSwweDQ5LDB4MzcsMHg1NywweDU3
LDB4NUYsMHhFQSwweDcyLDB4NjQsMHg0MSwweDAyLDB4QUYsMHhGRCwweDU1LAorICAgIDB4NDMs
MHg0OSwweEUyLDB4MzgsMHhGNywweEFFLDB4RTgsMHhFQiwweDIzLDB4NDksMHhFMiwweDM4LDB4
N0UsMHhFRSwweEVCLDB4RkEsCisgICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweEFCLDB4MDksMHhD
NSwweEY3LDB4MjMsMHg0OSwweEMxLDB4MzgsMHhBOCwweEU4LDB4QkEsMHhCRCwKKyAgICAweDIz
LDB4NDksMHgwMiwweDQxLDB4MUYsMHhBOSwweERGLDB4REUsMHgyMywweDQ5LDB4MDIsMHg0MSww
eEUwLDB4RTAsMHhEOCwweDU3LAorICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHhENywweEJELDB4
ODAsMHgwMCwweDQzLDB4NDksMHgwMiwweDQxLDB4NUYsMHg2OSwweEUzLDB4RkIsCisgICAgMHg0
MywweDQ5LDB4MDIsMHg0MSwweEEzLDB4RkUsMHhFQiwweEVCLDB4MjMsMHg0OSwweDAyLDB4NDEs
MHhBQSwweDlBLDB4MkEsMHhCNywKKyAgICAweDQzLDB4NDksMHhFMiwweDQwLDB4QkIsMHgyRSww
eERCLDB4NUYsMHgyMywweDQxLDB4RTIsMHg0MCwweDVBLDB4REUsMHg1NywweDc3LAorICAgIDB4
MjMsMHg0OSwweEMyLDB4NDAsMHhGNSwweEFFLDB4QUIsMHhBQiwweDIzLDB4NDksMHhDMiwweDM4
LDB4Q0EsMHgyQiwweEU4LDB4NUEsCisgICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweDNCLDB4QUIs
MHhBQiwweEVELDB4MjMsMHg0OSwweEUyLDB4NDAsMHhBRSwweENBLDB4Q0EsMHg0RiwKKyAgICAw
eDAzLDB4NDksMHhFMSwweDM4LDB4MjMsMHhBOSwweEU3LDB4NkYsMHgwMywweDQxLDB4QzIsMHg0
MCwweDAyLDB4MjAsMHgzMiwweDAyLAorICAgIDB4MjMsMHg0OSwweEMyLDB4MzgsMHhDQSwweDZB
LDB4NjgsMHhFOCwweDAzLDB4NDEsMHhBMSwweDM4LDB4RjIsMHhBNiwweEFELDB4OEEsCisgICAg
MHgwMywweDQ5LDB4QzIsMHgzOCwweERGLDB4RUEsMHg4MiwweEJBLDB4MjMsMHg0OSwweEUzLDB4
NDAsMHhGQSwweEVBLDB4QkQsMHhCRCwKKyAgICAweEE1LDB4NTksMHgwMywweDQ5LDB4MkQsMHgz
NSwweDM1LDB4MjUsMHg0NiwweDZBLDB4QzUsMHg1OSwweDY1LDB4QUYsMHg4RiwweDBGLAorICAg
IDB4MjYsMHg2QSwweEM0LDB4NTksMHhERSwweEZCLDB4N0IsMHhGQywweEU1LDB4NTksMHg4NCww
eDUxLDB4NkEsMHhFQSwweEFCLDB4QUIsCisgICAgMHhFNSwweDYxLDB4ODQsMHg1MSwweEZELDB4
RjcsMHgzMiwweDJBLDB4QTQsMHg1OSwweDY0LDB4NDksMHhGRSwweEZGLDB4MDgsMHgwMCwKKyAg
ICAweEE0LDB4NTEsMHgyMywweDQ5LDB4OEEsMHhFQSwweEZFLDB4N0YsMHg2NCwweDQ5LDB4MjMs
MHg0MSwweEMwLDB4NjAsMHhBQSwweEJFLAorICAgIDB4ODUsMHg1MSwweDY0LDB4NDksMHg0Riww
eDk1LDB4OTksMHg1OSwweDg0LDB4NDksMHg0NCwweDQ5LDB4QzUsMHg1RSwweDVBLDB4RjcsCisg
ICAgMHg2NCwweDQ5LDB4MjMsMHg0MSwweEFBLDB4NkIsMHgyQiwweEE4LDB4NjQsMHg1MSwweDAz
LDB4NDEsMHg4QiwweEJFLDB4RkMsMHhERSwKKyAgICAweDQ3LDB4NzIsMHg0NCwweDQ5LDB4MEYs
MHhBRCwweEI5LDB4QjUsMHg4OCwweDdBLDB4RTUsMHg2MSwweEU4LDB4RjcsMHg3NywweERELAor
ICAgIDB4MDUsMHg2MiwweDQzLDB4NDksMHhBMCwweEUwLDB4NjgsMHg1RSwweDYzLDB4NTEsMHg0
MSwweDI4LDB4RTAsMHhGOCwweDdBLDB4N0UsCisgICAgMHhDMiwweDM4LDB4NDEsMHgyMCwweDIy
LDB4QUEsMHhGRiwweDdELDB4RTIsMHgzOCwweDYxLDB4MjgsMHhCMCwweEYyLDB4QUIsMHhGRCwK
KyAgICAweDQ0LDB4NDEsMHhDMiwweDMwLDB4MEIsMHhCRCwweEZELDB4RjUsMHg0MywweDQxLDB4
QzIsMHgzMCwweDYyLDB4N0YsMHhGRiwweDdGLAorICAgIDB4NDQsMHg0MSwweEUyLDB4MzAsMHhF
OSwweEFGLDB4MzksMHhDRiwweDI0LDB4NDEsMHhFMywweDMwLDB4OEIsMHg4QiwweEZFLDB4RkUs
CisgICAgMHgwMywweDM5LDB4RTMsMHgzMCwweEZDLDB4QTAsMHg5RSwweDU3LDB4MDMsMHgzMSww
eEMzLDB4MzAsMHhBNywweEY2LDB4N0MsMHhGMCwKKyAgICAweEMyLDB4MjgsMHhBMiwweDI4LDB4
QkUsMHhGRSwweEJBLDB4NUQsMHhDMiwweDI4LDB4ODEsMHgyMCwweEYwLDB4MEIsMHgyOSwweEJE
LAorICAgIDB4QzIsMHgyOCwweDgxLDB4MjAsMHhBQSwweEFBLDB4QkUsMHhGRiwweEMzLDB4Mjgs
MHhBMiwweDI4LDB4MEIsMHgwOSwweDAzLDB4QTIsCisgICAgMHhDMiwweDI4LDB4QTIsMHgyOCww
eDkwLDB4N0MsMHg2OCwweEM4LDB4QzMsMHgzMCwweDgyLDB4MjAsMHhBMiwweEVCLDB4QUYsMHgz
RiwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4M0QsMHhCQiwweDNBLDB4M0YsMHg2NSwweDQ5
LDB4MDMsMHgzOSwweEE5LDB4MjksMHhBRCwweDJELAorICAgIDB4ODUsMHg1MSwweDAzLDB4Mzks
MHg4QSwweEJBLDB4RkUsMHg1RSwweDQ0LDB4NDksMHhDMiwweDMwLDB4MDAsMHhBMCwweEFBLDB4
RkYsCisgICAgMHg0NCwweDQ5LDB4QzIsMHgzMCwweDcwLDB4RTgsMHhBRiwweDU1LDB4MjMsMHg0
MSwweEMzLDB4MzAsMHhCMiwweEFBLDB4OEEsMHg2RiwKKyAgICAweDAzLDB4NDEsMHhFMywweDM4
LDB4RjgsMHg1QSwweDVCLDB4NTUsMHgyMywweDQxLDB4QzIsMHgzOCwweEZGLDB4RjUsMHhENyww
eDU2LAorICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHhFQSwweEU5LDB4RTksMHhBRSwweDAzLDB4
NDEsMHhDMiwweDM4LDB4NUYsMHhGRSwweEVDLDB4RTAsCisgICAgMHhFMywweDQwLDB4QzIsMHgz
OCwweDY5LDB4REEsMHhCQSwweEJFLDB4MjQsMHg0OSwweEMyLDB4MzgsMHgwQiwweDI3LDB4QUYs
MHhBQiwKKyAgICAweDQ0LDB4NDksMHhFMiwweDM4LDB4QzIsMHhFQiwweDc3LDB4N0YsMHgyMyww
eDQxLDB4QzIsMHgzOCwweEUyLDB4RTAsMHg2QSwweEFELAorICAgIDB4RTIsMHgzOCwweEExLDB4
MjgsMHhGQSwweDdDLDB4RUEsMHhDMCwweEMyLDB4MzAsMHhBMiwweDI4LDB4RUUsMHg3NSwweDRG
LDB4RkEsCisgICAgMHhFMywweDMwLDB4ODEsMHgyOCwweEZBLDB4NkEsMHg3MCwweEVBLDB4RTMs
MHgzMCwweDgyLDB4MjgsMHgyOSwweEFCLDB4QkIsMHhENywKKyAgICAweEUzLDB4MzAsMHg4MSww
eDIwLDB4QTAsMHhBMiwweEQ2LDB4NUQsMHhDMiwweDI4LDB4ODEsMHgyOCwweEEwLDB4ODAsMHgz
RSwweEJELAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHg3RCwweEY3LDB4RkYsMHgwNywweEMy
LDB4MzAsMHg4MSwweDI4LDB4RjUsMHhERCwweEJGLDB4MDAsCisgICAgMHhFMywweDMwLDB4ODEs
MHgyOCwweDdELDB4QUYsMHhBQiwweDgyLDB4RTMsMHgzMCwweEEyLDB4MjgsMHg1NSwweDU3LDB4
RkYsMHhBQSwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4RkYsMHhGRCwweDVGLDB4RTAsMHhD
MywweDMwLDB4ODEsMHgyOCwweDZFLDB4NzUsMHg1NywweDc4LAorICAgIDB4RTIsMHgzMCwweDgy
LDB4MjgsMHg4OSwweEZELDB4NzUsMHg1NSwweEMyLDB4MjgsMHg4MSwweDI4LDB4RUEsMHg3Qiww
eEJFLDB4OEIsCisgICAgMHhDMiwweDI4LDB4QTIsMHgyOCwweDM1LDB4NTUsMHg1NSwweDdCLDB4
QzIsMHgzMCwweEEyLDB4MjgsMHgyRCwweDI1LDB4RUQsMHhGRiwKKyAgICAweEUyLDB4MzAsMHhD
MiwweDI4LDB4RUIsMHhCRiwweEZELDB4QTMsMHgyMywweDMxLDB4QzIsMHgyOCwweDdELDB4N0Ys
MHg1QiwweEVCLAorICAgIDB4RTIsMHgzMCwweEEyLDB4MjgsMHgyRiwweEZGLDB4RDcsMHhFQSww
eEUzLDB4MzAsMHhBMiwweDI4LDB4QUUsMHhBRiwweEFELDB4QUEsCisgICAgMHhFMywweDMwLDB4
QTIsMHgyOCwweEFFLDB4OTcsMHhGNywweEVBLDB4MDMsMHgzMSwweEMyLDB4MjgsMHhGQiwweEFG
LDB4ODksMHhBRiwKKyAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4REYsMHhFQSwweEM4LDB4QTIs
MHgwMywweDMxLDB4QzIsMHgyOCwweEUzLDB4RUYsMHhCRiwweEJGLAorICAgIDB4MjQsMHgzOSww
eEMyLDB4MzAsMHhCNywweDBELDB4QkUsMHhCRiwweDQ0LDB4NDEsMHhFMywweDMwLDB4QkQsMHgy
NywweEFGLDB4QUIsCisgICAgMHgyMywweDM5LDB4QzIsMHgzMCwweDVFLDB4N0EsMHg2OCwweEZD
LDB4MDMsMHgzOSwweEExLDB4MjgsMHhGRCwweEZGLDB4QUQsMHgwRiwKKyAgICAweDAzLDB4Mzks
MHhDMiwweDMwLDB4RkIsMHhCQiwweEVGLDB4RUUsMHgwMywweDM5LDB4QzIsMHgzMCwweEZGLDB4
N0EsMHg3QSwweEJCLAorICAgIDB4RTMsMHgzMCwweEMyLDB4MzAsMHhGQiwweEFCLDB4MkYsMHhF
NywweEUzLDB4MzgsMHgwMywweDMxLDB4QzIsMHg4QSwweEUyLDB4RUEsCisgICAgMHgwMywweDM5
LDB4QzMsMHgzMCwweEFBLDB4N0IsMHgyOCwweDJBLDB4MjMsMHgzOSwweEUyLDB4MzgsMHg1NSww
eDVELDB4N0YsMHg3QywKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4RkYsMHhGQiwweDk1LDB4
QUIsMHg0NCwweDQ5LDB4RTMsMHgzOCwweEJELDB4QkYsMHhCQiwweDJCLAorICAgIDB4MjYsMHg2
MiwweDQ0LDB4NDksMHhGRCwweEJELDB4QkQsMHgyOSwweEVDLDB4OUIsMHhDNCwweDU5LDB4MkQs
MHgyRCwweDJGLDB4MkYsCisgICAgMHgzMSwweEM1LDB4OEUsMHhCNCwweDJCLDB4MEIsMHg4RCww
eDA1LDB4MzEsMHhDRCwweDEwLDB4QzUsMHhBQSwweEJGLDB4RkMsMHhDMywKKyAgICAweDMxLDB4
Q0QsMHgxMCwweEM1LDB4NDAsMHhBOSwweDgyLDB4MkIsMHgzMSwweENELDB4MTAsMHhDNSwweERF
LDB4NkEsMHhGMCwweDYwLAorICAgIDB4MzAsMHhDNSwweEFGLDB4QjQsMHg1RSwweEZBLDB4QUEs
MHg4OCwweEVGLDB4QzQsMHg2RSwweEFDLDB4NUQsMHg3QSwweEU4LDB4MDAsCisgICAgMHhFRiww
eEJDLDB4NEQsMHhBQywweDdGLDB4NUYsMHg3RiwweEU4LDB4OEYsMHhCNCwweDRELDB4QUMsMHhC
RiwweEFELDB4NTUsMHg1NSwKKyAgICAweDhGLDB4QjQsMHgyRCwweEFDLDB4RkYsMHg3OCwweEZG
LDB4REYsMHg4RiwweEI0LDB4NEUsMHhBQywweDU1LDB4RjksMHhCQSwweEI4LAorICAgIDB4OEYs
MHhCNCwweEVDLDB4OUIsMHg3RSwweDcyLDB4NjgsMHhGQSwweDBELDB4OUMsMHgwQSwweDgzLDB4
NzgsMHhFMCwweEU4LDB4QTAsCisgICAgMHg2QiwweDhCLDB4QTksMHg3MiwweDdGLDB4N0EsMHhF
QSwweEEwLDB4RTksMHg3QSwweDY3LDB4NkEsMHg3NywweERBLDB4QTgsMHhFOCwKKyAgICAweEM5
LDB4NzIsMHg2NiwweDZBLDB4QkQsMHhBRiwweEFBLDB4MjIsMHhFOSwweDcyLDB4QTgsMHg3Miww
eEJELDB4QUIsMHgwRiwweDM1LAorICAgIDB4MEEsMHg3QiwweEM4LDB4NzIsMHgyRCwweEJGLDB4
MkQsMHhBRiwweDRCLDB4ODMsMHhFOSwweDdBLDB4M0QsMHhCRiwweEFCLDB4QUYsCisgICAgMHg0
QiwweDgzLDB4RTksMHg3QSwweDVFLDB4N0UsMHhERSwweEZDLDB4MkEsMHg4MywweDg5LDB4NkEs
MHg1QSwweEZBLDB4QTgsMHhBMCwKKyAgICAweEVBLDB4N0EsMHg4OCwweDZBLDB4NTUsMHg3Niww
eEJDLDB4QjgsMHhBOSwweDZBLDB4MDYsMHg1QSwweDVFLDB4RjIsMHhBOCwweDg4LAorICAgIDB4
NDcsMHg2MiwweEE1LDB4NDksMHg1RSwweEVGLDB4RUEsMHhFMCwweEU2LDB4NTEsMHgyNCwweDM5
LDB4RkYsMHg2RSwweEVBLDB4NjAsCisgICAgMHgyMywweDQ5LDB4QzIsMHgzOCwweEFBLDB4MjAs
MHhBQiwweEFELDB4MjMsMHg0OSwweEUyLDB4NDAsMHg4RSwweEFFLDB4OTYsMHg1NywKKyAgICAw
eDIzLDB4NDksMHhDMSwweDM4LDB4NjgsMHg3MiwweERBLDB4RkUsMHg0NCwweDQ5LDB4RTIsMHg0
MCwweDU1LDB4NzUsMHhGRiwweDM3LAorICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHgyRiwweEUx
LDB4RTIsMHhGOCwweDIzLDB4NDksMHhFMiwweDQwLDB4REUsMHg1NSwweDU1LDB4MUQsCisgICAg
MHgyMywweDQ5LDB4RTIsMHg0MCwweDIzLDB4MEIsMHgyQiwweEFELDB4MjMsMHg0OSwweEUyLDB4
NDAsMHhDQSwweDlBLDB4RkIsMHhGQiwKKyAgICAweDQzLDB4NDksMHgwMiwweDQxLDB4MkIsMHhF
NSwweEQ1LDB4N0UsMHgyMiwweDQxLDB4QzIsMHgzOCwweEEwLDB4MjgsMHhBOCwweDdFLAorICAg
IDB4MjMsMHg0OSwweEMyLDB4MzgsMHhERiwweEQ2LDB4REMsMHhBRiwweDAyLDB4NDEsMHhFMiww
eDM4LDB4QUQsMHgwMiwweDAyLDB4MDIsCisgICAgMHgwMywweDQxLDB4RTIsMHg0MCwweDQzLDB4
NzYsMHhENywweEU5LDB4MDMsMHg0MSwweEMxLDB4MzgsMHhGQiwweEVELDB4Q0YsMHg4MCwKKyAg
ICAweDAyLDB4NDksMHhFMiwweDM4LDB4MkEsMHhBQiwweEJELDB4NzUsMHgwMiwweDQxLDB4RTEs
MHg0MCwweDczLDB4MEEsMHg4MCwweEMwLAorICAgIDB4MDIsMHg0MSwweEMxLDB4MzgsMHhDQSww
eDI2LDB4MkYsMHg4QiwweDIyLDB4NDEsMHhFMiwweDM4LDB4RkIsMHhFQiwweEI3LDB4OTUsCisg
ICAgMHgwMiwweDQxLDB4QzIsMHgzOCwweEUwLDB4MDAsMHhBRSwweDVFLDB4MDIsMHg0MSwweEMy
LDB4MzgsMHhFQiwweEU4LDB4RDgsMHhGQSwKKyAgICAweDAzLDB4NDksMHhFMiwweDQwLDB4N0Ys
MHg1NSwweDk1LDB4OTcsMHgwMywweDQ5LDB4QzIsMHg0MCwweDBBLDB4RTcsMHhBOCwweEZFLAor
ICAgIDB4RTUsMHg2MSwweDAzLDB4NDksMHhBNSwweDM1LDB4QjUsMHhCNSwweDI2LDB4NkEsMHhD
NSwweDU5LDB4MEIsMHgyOSwweDgyLDB4ODAsCisgICAgMHgyNiwweDZBLDB4QzUsMHg1OSwweEU4
LDB4RkEsMHg3RSwweEZGLDB4RTUsMHg2MSwweEE0LDB4NTksMHhFRSwweDhDLDB4QzAsMHgwMiwK
KyAgICAweEU1LDB4NjEsMHhBNCwweDUxLDB4MkIsMHhCRiwweERBLDB4NjAsMHhFNSwweDU5LDB4
NDMsMHg0OSwweEZBLDB4RTgsMHg2QSwweEVBLAorICAgIDB4NjQsMHg0OSwweDIzLDB4NDEsMHg3
OCwweEVFLDB4RjgsMHhDQSwweDQ0LDB4NDksMHhFMiwweDM4LDB4MkEsMHgyNiwweEFBLDB4QUEs
CisgICAgMHg2NCwweDQ5LDB4MDIsMHgzOSwweEE4LDB4QUEsMHhGRSwweEQ3LDB4NjUsMHg0OSww
eDI0LDB4NDEsMHhCNSwweEI1LDB4RTUsMHhGNywKKyAgICAweDY0LDB4NDksMHgwMywweDM5LDB4
MjgsMHhCQiwweERGLDB4REUsMHg2NCwweDQ5LDB4MDMsMHg0MSwweDdBLDB4N0MsMHhEMiwweEUy
LAorICAgIDB4QTUsMHg1OSwweDAzLDB4NDEsMHgyRCwweDk1LDB4OTUsMHg1NSwweDA2LDB4NkEs
MHg4NCwweDUxLDB4MkEsMHg2MiwweEVGLDB4RkQsCisgICAgMHhDNSwweDU5LDB4RTIsMHg0MCww
eEY4LDB4N0UsMHg1QSwweEFBLDB4NjQsMHg0OSwweDQxLDB4MjgsMHg3RiwweDVGLDB4N0YsMHhB
OCwKKyAgICAweEUzLDB4MzgsMHg0MSwweDI4LDB4REQsMHg3RCwweEZCLDB4QzgsMHhBMiwweDMw
LDB4NDEsMHgyMCwweDJCLDB4QTksMHgwQSwweDIyLAorICAgIDB4MDMsMHgzOSwweEExLDB4Mjgs
MHgyRCwweDI5LDB4RkQsMHhERCwweDIyLDB4MzksMHhDMiwweDMwLDB4NTcsMHhGNiwweERGLDB4
RjUsCisgICAgMHg0MywweDQxLDB4RTIsMHgzMCwweEFGLDB4QTksMHg4QiwweEZGLDB4MDMsMHgz
OSwweEEyLDB4MjgsMHg4OCwweEVFLDB4QkUsMHhGNSwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4
LDB4M0EsMHhCNiwweEQ3LDB4RDUsMHhFMywweDMwLDB4NjEsMHgyMCwweDgwLDB4QTgsMHg2QSww
eDVBLAorICAgIDB4QTIsMHgyOCwweDYxLDB4MjAsMHhCRSwweEZFLDB4REYsMHg1NywweEEyLDB4
MjgsMHg2MSwweDIwLDB4QTMsMHhBQiwweEJGLDB4RTksCisgICAgMHhBMiwweDI4LDB4ODIsMHgy
MCwweEE0LDB4MzUsMHhFQiwweDA5LDB4QzIsMHgyOCwweDgyLDB4MjAsMHgwMiwweDAyLDB4MEIs
MHgwRiwKKyAgICAweEUyLDB4MjgsMHhBMiwweDI4LDB4RjgsMHg2QSwweDdBLDB4N0YsMHhDMiww
eDI4LDB4ODIsMHgyOCwweDJGLDB4QUYsMHhFQSwweDIyLAorICAgIDB4MDMsMHgzOSwweEEyLDB4
MjgsMHhBRCwweDI3LDB4MkYsMHgzRiwweDQ0LDB4NDEsMHgwMywweDM5LDB4MjUsMHhBRCwweEYz
LDB4Q0IsCisgICAgMHg0NCwweDQxLDB4QTIsMHgyOCwweEUwLDB4RkUsMHg3RSwweDdGLDB4QzIs
MHgzMCwweDYxLDB4MjAsMHg4MCwweEZFLDB4NUEsMHg1RiwKKyAgICAweEMyLDB4MzAsMHg2MSww
eDIwLDB4QTIsMHhCRSwweEZGLDB4RjUsMHhFMiwweDM4LDB4ODEsMHgyOCwweEEzLDB4M0IsMHhC
RCwweEZGLAorICAgIDB4RTIsMHgzOCwweDgxLDB4MjgsMHgyQSwweEFBLDB4RUYsMHg3NSwweEUz
LDB4MzgsMHg4MSwweDI4LDB4MDgsMHhBQSwweEJFLDB4RDcsCisgICAgMHgyMywweDQxLDB4QTIs
MHgzMCwweDIyLDB4QkIsMHhBRCwweEFELDB4MjMsMHg0MSwweEUzLDB4MzgsMHhGOCwweEFBLDB4
OUIsMHg1RiwKKyAgICAweDIzLDB4NDEsMHhDMywweDM4LDB4N0YsMHhGQSwweDNFLDB4QkYsMHgy
MywweDQxLDB4RTMsMHgzOCwweDBELDB4RUQsMHg5RSwweERGLAorICAgIDB4MjMsMHg0MSwweEUy
LDB4MzgsMHhGQSwweDZCLDB4RUEsMHhFQSwweDI0LDB4NDEsMHhFMiwweDM4LDB4RUQsMHgyRiww
eEJELDB4N0QsCisgICAgMHgyMywweDQxLDB4QzIsMHgzMCwweEZBLDB4RUEsMHhGOCwweEZCLDB4
RTIsMHgzOCwweEEyLDB4MjgsMHhGRSwweDdBLDB4RjgsMHhGRSwKKyAgICAweEMyLDB4MzAsMHhB
MiwweDI4LDB4RkQsMHhGRCwweEJBLDB4MjAsMHhDMywweDM4LDB4NjEsMHgyMCwweDVFLDB4RkUs
MHhGRSwweEY4LAorICAgIDB4QTIsMHgyOCwweDYxLDB4MjAsMHhGQSwweEVFLDB4QkUsMHgyMCww
eEMyLDB4MjgsMHg4MSwweDI4LDB4QjUsMHhBNSwweEU5LDB4N0MsCisgICAgMHhDMywweDI4LDB4
ODIsMHgyOCwweDBCLDB4QUYsMHhENSwweDc1LDB4RTMsMHgzMCwweDgxLDB4MjgsMHgwQSwweDJC
LDB4QUYsMHg3NSwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4MDIsMHgwMCwweEFGLDB4NzUs
MHhFMywweDMwLDB4QTIsMHgyOCwweEE4LDB4MkEsMHgyRSwweDNGLAorICAgIDB4MDMsMHgzMSww
eEMyLDB4MzAsMHg3QSwweDdBLDB4RkUsMHgwMCwweDAzLDB4MzksMHhBMiwweDI4LDB4N0UsMHhF
QSwweEZBLDB4RTgsCisgICAgMHhDMiwweDMwLDB4ODIsMHgyOCwweDU2LDB4QkEsMHg4QSwweDAw
LDB4QzEsMHgyOCwweDgyLDB4MjgsMHhCQiwweEZFLDB4RkEsMHgzRSwKKyAgICAweEUzLDB4MzAs
MHhBMiwweDI4LDB4QkYsMHhENywweDdCLDB4QkYsMHhFMywweDMwLDB4QTIsMHgyOCwweEZBLDB4
MEEsMHgzQSwweEFBLAorICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHg4QSwweDgyLDB4QkIsMHgx
NywweDAzLDB4MzEsMHhDMiwweDI4LDB4QTIsMHhGMCwweEZFLDB4RDYsCisgICAgMHhFMiwweDMw
LDB4QzIsMHgyOCwweEU4LDB4OEEsMHgyQSwweDIwLDB4MDMsMHgzMSwweEUyLDB4MzAsMHg3Qyww
eDQwLDB4MEEsMHgwQiwKKyAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4RjcsMHhBNywweEJGLDB4
MEUsMHhFMiwweDMwLDB4QzIsMHgyOCwweDNGLDB4M0YsMHhCNSwweDk1LAorICAgIDB4MDMsMHgz
MSwweEMyLDB4MjgsMHgzQSwweERBLDB4REMsMHhBRSwweDAzLDB4MzEsMHhDMiwweDI4LDB4REEs
MHhENywweEVFLDB4RUIsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDBBLDB4M0UsMHg5RCww
eEY1LDB4MjQsMHgzOSwweEUzLDB4MzAsMHg4MywweEFBLDB4RkEsMHg1OSwKKyAgICAweDAzLDB4
MzksMHhDMiwweDMwLDB4QTgsMHg4MCwweDZDLDB4N0UsMHgyMywweDM5LDB4QTIsMHgyOCwweEI3
LDB4QTcsMHg4QSwweDJBLAorICAgIDB4NDQsMHg0MSwweEMyLDB4MzAsMHg3NywweEZGLDB4RkEs
MHhGMywweDIzLDB4MzksMHhFMiwweDMwLDB4QjUsMHg1RCwweDZGLDB4QUIsCisgICAgMHgyMyww
eDM5LDB4QzIsMHgzMCwweEVGLDB4N0UsMHg3QSwweEEwLDB4MDMsMHgzOSwweEMzLDB4MzAsMHg4
QSwweEZGLDB4RkYsMHgzRSwKKyAgICAweDIzLDB4NDEsMHhDMiwweDMwLDB4OEIsMHhBMSwweEJC
LDB4RDcsMHhFMiwweDQwLDB4MDMsMHgzOSwweEI3LDB4RDcsMHg1RiwweERFLAorICAgIDB4NDMs
MHg0MSwweEUzLDB4MzgsMHhGRCwweDNGLDB4RUQsMHhGNywweDg1LDB4NDksMHgwMywweDM5LDB4
QkYsMHhCRiwweDNELDB4MEYsCisgICAgMHg0NywweDZBLDB4NjUsMHg0OSwweDJELDB4QUQsMHgy
RiwweDJGLDB4MkQsMHhBNCwweDY3LDB4NkEsMHgyRCwweDJELDB4MkYsMHgwQiwKKyAgICAweDEw
LDB4QzUsMHg4RSwweEI0LDB4MEQsMHg4QiwweDg5LDB4QUQsMHgzMSwweEM1LDB4RjAsMHhDNCww
eDgzLDB4RUQsMHhGNSwweEZGLAorICAgIDB4MTAsMHhDNSwweENGLDB4QkMsMHgwMCwweDA4LDB4
MEYsMHg5NywweDMxLDB4QzUsMHhDRiwweEJDLDB4MEEsMHhCQiwweEZFLDB4QjYsCisgICAgMHgz
MCwweEM1LDB4RjAsMHhCQywweEVFLDB4NUEsMHg1RiwweDdGLDB4MzAsMHhDNSwweEYwLDB4QkMs
MHhCRiwweDc5LDB4RjIsMHhFRSwKKyAgICAweDEwLDB4QzUsMHhBRiwweEI0LDB4NjAsMHg4MCww
eDgyLDB4ODgsMHgxMCwweEM1LDB4NEQsMHhBQywweDdGLDB4RkEsMHhBOCwweDIyLAorICAgIDB4
RjAsMHhDNCwweDJELDB4QTQsMHhENywweEQ3LDB4RUEsMHhFMCwweEFGLDB4QkMsMHg0RSwweEFD
LDB4QUUsMHhGRCwweERELDB4OUMsCisgICAgMHg4RiwweEI0LDB4NEUsMHhBQywweDVFLDB4QkUs
MHg4MywweEI3LDB4NkYsMHhBQywweENELDB4OUIsMHg1QSwweDc4LDB4RUEsMHhFOCwKKyAgICAw
eENDLDB4OUIsMHg2QiwweDhCLDB4NUUsMHg1QSwweEZBLDB4RTAsMHhBQiwweDkzLDB4QzksMHg3
MiwweDU3LDB4N0UsMHhFQSwweDgwLAorICAgIDB4NEEsMHg4MywweEE4LDB4NzIsMHg3NSwweEQ1
LDB4RDYsMHhGOCwweEU5LDB4N0EsMHg4OCwweDZBLDB4MzYsMHgyRCwweDMyLDB4MjIsCisgICAg
MHgyQSwweDgzLDB4QzksMHg3MiwweDdFLDB4RUUsMHgzQiwweEZGLDB4NEEsMHg4MywweEU4LDB4
N0EsMHhCRCwweDJGLDB4MkYsMHgxNywKKyAgICAweDZCLDB4ODMsMHgwQSwweDgzLDB4RUUsMHhF
RSwweDJGLDB4QjYsMHg0QiwweDgzLDB4RTksMHg3QSwweEJELDB4RkEsMHhCOCwweDA4LAorICAg
IDB4NEIsMHg4MywweEM5LDB4NzIsMHg1RiwweDZCLDB4RUEsMHgyMCwweDJCLDB4ODMsMHg4OCww
eDZBLDB4NTcsMHg3RiwweDdGLDB4RjgsCisgICAgMHhDOSwweDcyLDB4MjcsMHg1QSwweDVBLDB4
NUUsMHhBQSwweEU4LDB4MjcsMHg1QSwweDQ0LDB4NDEsMHg3OCwweEUwLDB4QTAsMHg4MCwKKyAg
ICAweDIzLDB4NDksMHhFMiwweDM4LDB4QjcsMHhGNywweEE5LDB4QzEsMHgwMywweDQ5LDB4RTIs
MHgzOCwweEI0LDB4MjcsMHgyRCwweDNGLAorICAgIDB4MDIsMHg0OSwweEUyLDB4NDAsMHg1QSww
eEM4LDB4NkMsMHhGQiwweDIzLDB4NDksMHhFMiwweDQwLDB4MkIsMHgzMiwweDc3LDB4QkYsCisg
ICAgMHgwMiwweDQ5LDB4RTIsMHg0MCwweDhGLDB4QUMsMHhBRCwweDBBLDB4MjMsMHg0OSwweEUy
LDB4NDAsMHhBRCwweEZCLDB4RTgsMHg1QSwKKyAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4QkIs
MHhBQSwweDM4LDB4NzcsMHg0MywweDQ5LDB4MDMsMHg0MSwweDU3LDB4N0UsMHg3RCwweEQ1LAor
ICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHhEQSwweDdGLDB4QUYsMHgwQiwweDAyLDB4NDEsMHhD
MSwweDM4LDB4RkEsMHg4QiwweEFCLDB4RUEsCisgICAgMHgyMywweDQxLDB4QzIsMHgzOCwweEIw
LDB4RUUsMHhBQiwweEE5LDB4NDQsMHg0MSwweEUyLDB4NDAsMHhGNywweEJGLDB4RkQsMHhGNSwK
KyAgICAweDIzLDB4NDEsMHhDMiwweDQwLDB4QUYsMHhCQSwweEZDLDB4N0UsMHgyMywweDQ5LDB4
RTIsMHgzOCwweEVBLDB4RUEsMHhFRSwweEVELAorICAgIDB4MDMsMHg0MSwweEUyLDB4MzgsMHg5
OSwweDBCLDB4MDEsMHgwMSwweDIzLDB4NDEsMHhFMiwweDQwLDB4REIsMHg1NywweEQ3LDB4OTcs
CisgICAgMHgyMywweDQxLDB4QzIsMHgzOCwweERGLDB4OUUsMHhCQSwweDJBLDB4MjMsMHg0MSww
eEUyLDB4NDAsMHhENSwweEZGLDB4MkYsMHhBQiwKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4
RkYsMHhCOCwweDIwLDB4QTAsMHgyMywweDQ5LDB4RTIsMHg0MCwweERGLDB4RkIsMHhGQSwweEE5
LAorICAgIDB4MDMsMHg0OSwweEUyLDB4MzgsMHhBOCwweDIyLDB4OEEsMHhBMiwweDAzLDB4NDks
MHhFMiwweDQwLDB4N0YsMHhFOCwweEY4LDB4NUEsCisgICAgMHhBNCwweDU5LDB4RTIsMHg0MCww
eDNELDB4QkQsMHhBNSwweDM1LDB4NDYsMHg2QSwweEU1LDB4NjEsMHhCRSwweEZCLDB4QTEsMHgw
OSwKKyAgICAweDQ2LDB4NkEsMHhDNSwweDU5LDB4N0YsMHg2RSwweEZGLDB4QTAsMHgwNiwweDYy
LDB4QzUsMHg1OSwweERGLDB4RjUsMHgzRiwweDI1LAorICAgIDB4MDUsMHg2MiwweDgzLDB4NTEs
MHhFMiwweEZBLDB4NjgsMHhFOCwweEE1LDB4NTEsMHg0MywweDQ5LDB4NzAsMHg3RSwweERFLDB4
RDcsCisgICAgMHg0MywweDQ5LDB4MDMsMHg0MSwweEUyLDB4RUEsMHhDOCwweDlDLDB4NjQsMHg0
OSwweDAzLDB4MzksMHgyQiwweEFBLDB4RTksMHhGOSwKKyAgICAweDY0LDB4NDksMHgwMywweDM5
LDB4N0MsMHhCNywweEJGLDB4RkYsMHg0NCwweDQxLDB4MjMsMHg0MSwweEFGLDB4QTcsMHgyOSww
eDIwLAorICAgIDB4NDQsMHg0OSwweDIzLDB4MzksMHhERiwweEI3LDB4QjYsMHgwOSwweDQ0LDB4
NDEsMHgwMywweDQxLDB4N0EsMHg1OCwweEZDLDB4OUMsCisgICAgMHg0NCwweDQxLDB4RTIsMHgz
OCwweDc3LDB4RjYsMHhFMywweEVCLDB4ODQsMHg1MSwweEUyLDB4MzgsMHgwMiwweDM5LDB4OTcs
MHg1NSwKKyAgICAweEU1LDB4NTksMHg0MywweDQ5LDB4MEUsMHgwQSwweDIzLDB4RDUsMHhFNSww
eDU5LDB4NDMsMHg0MSwweDc4LDB4QzAsMHg4MCwweEUyLAorICAgIDB4MjMsMHg0MSwweEEyLDB4
MzAsMHg2QywweEY4LDB4RkMsMHg1OCwweEUzLDB4MzgsMHg4MSwweDI4LDB4NUYsMHg3RSwweEY4
LDB4N0IsCisgICAgMHhDMSwweDMwLDB4ODEsMHgyMCwweDZCLDB4OUYsMHhERSwweDNBLDB4QzIs
MHgzMCwweEExLDB4MjgsMHg5QiwweDJBLDB4MkEsMHhGQywKKyAgICAweDAzLDB4MzEsMHhBMiww
eDI4LDB4ODgsMHhGQiwweEJGLDB4NUYsMHhDMiwweDI4LDB4ODIsMHgyMCwweDI2LDB4QUUsMHhF
OCwweENBLAorICAgIDB4QzIsMHgyOCwweDYxLDB4MjAsMHgwQSwweDhBLDB4N0YsMHg1NywweDgx
LDB4MjAsMHg0MSwweDE4LDB4RTAsMHhFOCwweEZGLDB4RkYsCisgICAgMHg4MiwweDIwLDB4NjEs
MHgyMCwweERELDB4REYsMHhBRiwweDA4LDB4QzIsMHgyOCwweDgxLDB4MjAsMHhGNSwweEJELDB4
QjUsMHg5NSwKKyAgICAweEMyLDB4MjgsMHg4MSwweDIwLDB4MkYsMHgyRiwweDBCLDB4MkYsMHhD
MiwweDI4LDB4QTIsMHgyOCwweDBGLDB4MkEsMHgzQiwweDI4LAorICAgIDB4RTMsMHgyOCwweEEx
LDB4MjAsMHhFRSwweDJCLDB4RUYsMHg2RiwweEUzLDB4MzAsMHhBMiwweDI4LDB4RkEsMHg4Myww
eEY1LDB4OTUsCisgICAgMHgwMywweDMxLDB4QTIsMHgyOCwweDM1LDB4OTUsMHhGRiwweDVBLDB4
NDQsMHg0MSwweEMyLDB4MzAsMHg4QSwweEVGLDB4RkYsMHhERCwKKyAgICAweDAzLDB4MzksMHhB
MiwweDI4LDB4RkMsMHhGQSwweDdBLDB4N0YsMHhDMiwweDI4LDB4NjEsMHgyOCwweDdFLDB4RTgs
MHgyOCwweDgyLAorICAgIDB4QzIsMHgzMCwweDYxLDB4MjAsMHhGNSwweEVGLDB4MzIsMHhCMiww
eEMyLDB4MjgsMHg4MSwweDI4LDB4N0YsMHhGQSwweENBLDB4ODAsCisgICAgMHhBMSwweDI4LDB4
NjEsMHgyMCwweEZCLDB4N0MsMHg3QSwweDdDLDB4QTIsMHgyOCwweDYxLDB4MjgsMHhCRiwweDU3
LDB4RUEsMHhDQSwKKyAgICAweEUzLDB4MzgsMHg2MSwweDIwLDB4MEIsMHgwQiwweDhGLDB4RUQs
MHhFMiwweDM4LDB4QzIsMHgzMCwweDgwLDB4MDAsMHgwNywweDg1LAorICAgIDB4MjQsMHg0MSww
eEUyLDB4MzgsMHhENSwweDk1LDB4OEQsMHhCRiwweDIzLDB4NDEsMHhFMywweDM4LDB4QkYsMHhG
NiwweEJGLDB4OTcsCisgICAgMHgyMywweDQxLDB4RTMsMHgzOCwweEZBLDB4QTYsMHgyRSwweDI4
LDB4MjMsMHg0MSwweEMyLDB4MzgsMHhCRSwweEY2LDB4M0EsMHgyMCwKKyAgICAweDAzLDB4Mzks
MHhDMiwweDM4LDB4NjAsMHg2OCwweEY4LDB4QzIsMHhDMiwweDMwLDB4QTIsMHgzMCwweDAyLDB4
MDAsMHhCOCwweEZFLAorICAgIDB4RTMsMHgzOCwweEEyLDB4MzAsMHhERSwweDVBLDB4N0IsMHg2
RCwweEMyLDB4MzAsMHg4MSwweDI4LDB4QTgsMHhBRiwweEI0LDB4QUUsCisgICAgMHhFMywweDMw
LDB4QTIsMHgyOCwweEQzLDB4QjgsMHhBQiwweDM1LDB4RTMsMHgzMCwweDYxLDB4MjAsMHg3OCww
eDdBLDB4RTgsMHhBMCwKKyAgICAweEEyLDB4MjgsMHg2MSwweDIwLDB4QkIsMHhGRiwweEZCLDB4
QTAsMHhBMiwweDI4LDB4ODEsMHgyMCwweEJELDB4RkYsMHg1RSwweEZGLAorICAgIDB4QTIsMHgy
OCwweDYxLDB4MjAsMHgwMiwweDBBLDB4MkYsMHhBNywweEMyLDB4MjgsMHg4MSwweDI4LDB4MEIs
MHhBMiwweEZBLDB4RkEsCisgICAgMHgwMywweDM5LDB4ODEsMHgyOCwweDAyLDB4QkYsMHhBRCww
eEZELDB4MDQsMHgzOSwweEEyLDB4MjgsMHhFMCwweEY4LDB4RkIsMHhGRSwKKyAgICAweEMyLDB4
MjgsMHg4MiwweDI4LDB4QTgsMHhBQSwweEY4LDB4REEsMHhDMiwweDI4LDB4ODEsMHgyMCwweEFB
LDB4OEIsMHhFQiwweDdGLAorICAgIDB4QzIsMHgyOCwweDgyLDB4MjgsMHgwRSwweDI4LDB4Rjgs
MHg2NSwweEUzLDB4MzAsMHg4MSwweDI4LDB4OEEsMHgyRiwweEI3LDB4RUQsCisgICAgMHhFMyww
eDMwLDB4QTIsMHgyOCwweDNDLDB4N0UsMHg3RiwweDdELDB4RTMsMHgzMCwweEEyLDB4MjgsMHgz
RSwweDM1LDB4MkQsMHhGNSwKKyAgICAweDAzLDB4MzEsMHhBMiwweDI4LDB4MkEsMHhBQiwweDNG
LDB4QjUsMHgyNCwweDM5LDB4RTIsMHgzMCwweDdGLDB4RkYsMHhERiwweEVCLAorICAgIDB4MDMs
MHgzMSwweEMyLDB4MzAsMHhBQSwweEI4LDB4NzYsMHhENywweEUyLDB4MzAsMHhDMiwweDI4LDB4
NzgsMHhFMiwweENCLDB4ODgsCisgICAgMHgwMywweDMxLDB4QzIsMHgzMCwweDJELDB4RUYsMHhD
RiwweEVGLDB4MDMsMHgzMSwweEEyLDB4MjgsMHhDMiwweEFBLDB4RkYsMHg1RSwKKyAgICAweEUy
LDB4MzAsMHhBMiwweDI4LDB4MkEsMHhBQSwweEFBLDB4QTksMHgwMywweDM5LDB4QzIsMHgzMCww
eDUyLDB4NUYsMHhCNiwweEI1LAorICAgIDB4MDQsMHgzOSwweEMzLDB4MzAsMHhFRiwweDJELDB4
QUIsMHhCRSwweDIzLDB4MzksMHhDMiwweDMwLDB4QjcsMHhGQSwweEZBLDB4ODIsCisgICAgMHgy
MywweDM5LDB4QzIsMHgzMCwweEEwLDB4ODIsMHgwMiwweDYyLDB4MjMsMHg0MSwweEMyLDB4MzAs
MHgxRSwweEJDLDB4QTAsMHgyMCwKKyAgICAweDIzLDB4NDEsMHgwMywweDM5LDB4MkIsMHgxOSww
eDg1LDB4MjksMHg0NCwweDQ5LDB4QzIsMHgzOCwweEZFLDB4REYsMHhGRiwweDAyLAorICAgIDB4
MjMsMHg0MSwweEMyLDB4MzgsMHhENiwweEJFLDB4QTIsMHgyQSwweDY0LDB4NDksMHhFMywweDM4
LDB4RDcsMHhGRiwweEFCLDB4QUIsCisgICAgMHg4NSwweDUxLDB4MDMsMHgzOSwweDc1LDB4RkYs
MHhBQiwweDBBLDB4QzYsMHg1OSwweDI0LDB4NDksMHhCRCwweDNCLDB4MkIsMHgyQiwKKyAgICAw
eDg5LDB4NzIsMHhFNiwweDU5LDB4MzUsMHgyNSwweEJELDB4QkYsMHgyRSwweEFDLDB4QzksMHg3
QSwweDA5LDB4MkQsMHhCRCwweEY1LAorICAgIDB4MTAsMHhDNSwweENDLDB4OUIsMHgwQSwweDBB
LDB4QUQsMHhGNSwweDEwLDB4QzUsMHg4RiwweEI0LDB4MjIsMHgyMiwweDBBLDB4RkQsCisgICAg
MHhGMCwweEM0LDB4Q0YsMHhCQywweDM3LDB4NTcsMHg3QSwweDhCLDB4MTAsMHhDNSwweENGLDB4
QkMsMHhCRiwweEY5LDB4RTMsMHhBQSwKKyAgICAweDEwLDB4QzUsMHhDRiwweEJDLDB4QUEsMHhF
RiwweEZFLDB4OUEsMHgxMCwweEM1LDB4RjAsMHhCQywweEEyLDB4OTAsMHgzNCwweDMyLAorICAg
IDB4MzEsMHhDNSwweEYwLDB4QkMsMHhGRSwweDdCLDB4RUIsMHhGRSwweDEwLDB4QzUsMHhEMCww
eEJDLDB4QjEsMHgyQSwweDI4LDB4QUIsCisgICAgMHhGMCwweEJDLDB4QUYsMHhCQywweEU4LDB4
ODgsMHhFQSwweDgyLDB4RjAsMHhDNCwweDZFLDB4QjQsMHg1RiwweEVBLDB4QTAsMHgwMCwKKyAg
ICAweDEwLDB4QzUsMHg0RSwweEFDLDB4NTcsMHhGRiwweEVBLDB4ODgsMHg4RiwweEI0LDB4MkQs
MHhBNCwweDVGLDB4RjgsMHhGOCwweEYwLAorICAgIDB4MkQsMHhBNCwweEFDLDB4OTMsMHhGQiww
eEZBLDB4QTgsMHg4MiwweDBELDB4OUMsMHg4QiwweDkzLDB4NTcsMHg3NywweEZBLDB4QTgsCisg
ICAgMHhFRCwweDlCLDB4MDksMHg3QiwweDdGLDB4QTIsMHgwMCwweDAwLDB4RUQsMHg5QiwweEM4
LDB4NzIsMHhENSwweDVGLDB4RTgsMHhBMCwKKyAgICAweDhCLDB4OEIsMHhDOSwweDdBLDB4RkYs
MHhGRiwweEJGLDB4ODgsMHg0QSwweDgzLDB4RTksMHg3QSwweDk3LDB4QkIsMHhGRiwweEU4LAor
ICAgIDB4NkIsMHg4QiwweDBBLDB4N0IsMHhERiwweEJGLDB4QUYsMHgyQiwweDZCLDB4OEIsMHgy
QSwweDgzLDB4QjYsMHhFQSwweEQzLDB4REUsCisgICAgMHg2QiwweDhCLDB4MkEsMHg4MywweDlF
LDB4RkUsMHhEQiwweEZBLDB4NkMsMHg4QiwweEM5LDB4NzIsMHg1RSwweDdBLDB4RTAsMHhBQSwK
KyAgICAweDBBLDB4N0IsMHhBOSwweDZBLDB4NkQsMHg3QiwweEJDLDB4QjAsMHhFOSwweDcyLDB4
MjYsMHg1QSwweDU3LDB4NUEsMHg3QSwweDc4LAorICAgIDB4MjMsMHg0MSwweEUyLDB4NDAsMHg2
QiwweEVELDB4RjQsMHhBRSwweDIzLDB4NDksMHhFMiwweDQwLDB4OTYsMHgyQSwweEFFLDB4Q0Is
CisgICAgMHg0NCwweDQ5LDB4RTIsMHg0MCwweEY5LDB4RUMsMHhGMiwweEZGLDB4MjMsMHg0OSww
eDAyLDB4NDEsMHg3RCwweERELDB4NzcsMHhBRSwKKyAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4
QjgsMHgyNSwweEJELDB4QjgsMHgyMywweDQ5LDB4RTIsMHg0MCwweEYyLDB4RDgsMHhEOCwweEY4
LAorICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHhBQiwweDBGLDB4QkEsMHhBOSwweDQzLDB4NDks
MHhFMiwweDQwLDB4QjcsMHhBRiwweDgyLDB4RkUsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCww
eDAwLDB4ODAsMHhEMCwweERBLDB4MDMsMHg0MSwweEMyLDB4MzgsMHg2MiwweEJGLDB4QjcsMHhC
RiwKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4OEIsMHhEOCwweDkyLDB4QUMsMHgwMywweDQx
LDB4RTIsMHg0MCwweEIzLDB4QzIsMHg4QSwweERELAorICAgIDB4MDIsMHg0MSwweEMyLDB4Mzgs
MHg3RSwweEJCLDB4QjIsMHhBMiwweDAzLDB4NDEsMHhFMiwweDM4LDB4MEEsMHhFNSwweDdELDB4
RUQsCisgICAgMHgwMywweDQxLDB4RTIsMHg0MCwweEJBLDB4MDAsMHgwOSwweERGLDB4MjMsMHg0
MSwweEUyLDB4NDAsMHgzRiwweEFFLDB4RDYsMHg3NSwKKyAgICAweDAzLDB4NDEsMHhBMiwweDM4
LDB4MDgsMHhBOCwweEE4LDB4QjcsMHgwMywweDQxLDB4QzEsMHgzOCwweDgyLDB4QkUsMHhFMiww
eDc4LAorICAgIDB4MDIsMHg0MSwweEUyLDB4NDAsMHg1MSwweEMzLDB4OEQsMHhENSwweDIzLDB4
NDEsMHhFMiwweDQwLDB4QkQsMHhBRCwweEJELDB4NzMsCisgICAgMHgwMiwweDQxLDB4RTEsMHg0
MCwweEMwLDB4QzAsMHhFQSwweEUyLDB4MjIsMHg0MSwweEMxLDB4NDAsMHhGRCwweDlGLDB4RDcs
MHhERiwKKyAgICAweEM1LDB4NTksMHhFMiwweDQwLDB4MzcsMHgzRCwweEI1LDB4QjUsMHg0Nyww
eDZBLDB4RTUsMHg2MSwweEFGLDB4QzIsMHhDOSwweDg5LAorICAgIDB4NDcsMHg2QSwweEU1LDB4
NjEsMHg2MywweDdCLDB4N0IsMHg2RSwweDA1LDB4NjIsMHhBNCwweDU5LDB4QUYsMHhGQSwweEUy
LDB4ODIsCisgICAgMHgwNiwweDYyLDB4NjQsMHg1MSwweEVDLDB4RkMsMHhGQSwweDdBLDB4NDMs
MHg0OSwweDAzLDB4NDEsMHg3OCwweDc4LDB4RjgsMHg1QywKKyAgICAweDIzLDB4NDEsMHhFMiww
eDM4LDB4QkUsMHhCNSwweEU1LDB4QUEsMHgyMywweDQxLDB4QzIsMHgzMCwweEEyLDB4RkIsMHg3
QSwweEZBLAorICAgIDB4NDQsMHg0MSwweEUyLDB4MzAsMHhCRiwweEFCLDB4QUYsMHhBOSwweDQ0
LDB4NDEsMHgyNCwweDM5LDB4MDIsMHg4QSwweDAyLDB4QzIsCisgICAgMHg0NCwweDQxLDB4MDMs
MHgzOSwweDAyLDB4Q0IsMHg4MywweDgyLDB4NDQsMHg0MSwweDAzLDB4NDEsMHhEQywweEZFLDB4
RUIsMHhBQSwKKyAgICAweDQzLDB4NDEsMHhFMywweDM4LDB4NkIsMHhGMiwweEZBLDB4QkEsMHhF
MiwweDM4LDB4QTEsMHgzMCwweDhFLDB4QkEsMHg0QSwweDY4LAorICAgIDB4NDQsMHg0OSwweEMy
LDB4MzAsMHhBRiwweEFELDB4QkQsMHhCRCwweDg0LDB4NDksMHhFMywweDM4LDB4ODIsMHhCOSww
eEVGLDB4NUQsCisgICAgMHgyMywweDQxLDB4QTIsMHgyOCwweDU4LDB4RjgsMHg3RSwweEZGLDB4
QzIsMHgyOCwweDgxLDB4MjgsMHhBQSwweEVGLDB4RjcsMHhFQSwKKyAgICAweEUyLDB4MjgsMHg4
MSwweDIwLDB4M0UsMHgzRiwweEZGLDB4RUQsMHhFMiwweDMwLDB4QTIsMHgyOCwweDdFLDB4Rjgs
MHhGRSwweEZGLAorICAgIDB4QzIsMHgyOCwweEEyLDB4MjgsMHhERiwweEZGLDB4RkYsMHgyMiww
eEEyLDB4MjgsMHg2MSwweDIwLDB4ODAsMHhGMCwweDcwLDB4NzgsCisgICAgMHg4MSwweDIwLDB4
NDEsMHgxOCwweDc4LDB4RkUsMHhGRSwweEZCLDB4ODEsMHgyMCwweDQxLDB4MTgsMHhGQiwweEFB
LDB4OEEsMHgwQSwKKyAgICAweEEyLDB4MjgsMHg2MSwweDIwLDB4RUYsMHg2RiwweEFBLDB4MkIs
MHhDMiwweDI4LDB4NjEsMHgyMCwweEFELDB4QUIsMHgzNywweEFFLAorICAgIDB4QzIsMHgyOCww
eDgxLDB4MjAsMHgyOSwweDg1LDB4QUEsMHhCQSwweEUzLDB4MzAsMHhBMiwweDI4LDB4RkYsMHhD
QSwweENFLDB4QUEsCisgICAgMHgwMywweDI5LDB4QTIsMHgyOCwweEY3LDB4NUYsMHhGRCwweEZF
LDB4RTIsMHgzMCwweEEyLDB4MjgsMHhCNywweEI1LDB4REQsMHg1QSwKKyAgICAweEUzLDB4MzAs
MHhBMiwweDI4LDB4NkEsMHg2MiwweDcyLDB4RkYsMHhDMiwweDMwLDB4QTIsMHgyOCwweEUzLDB4
NjYsMHg3NSwweDY1LAorICAgIDB4QTIsMHgyOCwweDgxLDB4MjAsMHgwMiwweEI4LDB4NTYsMHg3
QywweEMyLDB4MjgsMHg4MSwweDIwLDB4QTIsMHhCMywweEY1LDB4RkQsCisgICAgMHhDMiwweDI4
LDB4QTIsMHgyOCwweDMzLDB4MDEsMHgyOCwweDIzLDB4RTMsMHgzMCwweDgxLDB4MjAsMHhDQSww
eEVBLDB4RkYsMHg3RSwKKyAgICAweEEyLDB4MjgsMHg4MSwweDIwLDB4NTcsMHg2OSwweDdELDB4
QkYsMHhBMiwweDI4LDB4NjEsMHgyMCwweEZCLDB4RkEsMHhBQSwweDgwLAorICAgIDB4QTEsMHgy
OCwweDYxLDB4MjAsMHgwOSwweDNGLDB4OEIsMHgwRSwweEUyLDB4MzAsMHg4MSwweDI4LDB4MEYs
MHg5RiwweEFGLDB4QkIsCisgICAgMHgwMywweDM5LDB4QTIsMHgzMCwweDIwLDB4MEEsMHhCRiww
eEZELDB4MDMsMHgzOSwweEMyLDB4MzAsMHgwQywweDAyLDB4MEIsMHhCRiwKKyAgICAweDQ0LDB4
NDEsMHgwMywweDM5LDB4RkEsMHhGRSwweDZCLDB4RkQsMHg0NCwweDQxLDB4MDMsMHgzOSwweDVF
LDB4NzcsMHhERCwweDNCLAorICAgIDB4NDQsMHg0MSwweEUyLDB4MzgsMHg2RiwweDdCLDB4NkIs
MHg2MywweEUzLDB4MzgsMHhBMiwweDMwLDB4REYsMHg1RiwweDdCLDB4NzgsCisgICAgMHhBMiww
eDI4LDB4NjEsMHgyOCwweDAwLDB4MDAsMHgyQSwweDNFLDB4RTMsMHgzMCwweEEyLDB4MzAsMHhE
RCwweDVGLDB4RkUsMHgyRCwKKyAgICAweEUyLDB4MzAsMHg4MSwweDI4LDB4MjcsMHhBRiwweEJG
LDB4RUUsMHgwMywweDMxLDB4QzIsMHgyOCwweEUyLDB4RUQsMHhERCwweDdELAorICAgIDB4RTMs
MHgzMCwweEEyLDB4MjgsMHg1NCwweEFGLDB4MEYsMHg4RiwweEMzLDB4MjgsMHg4MSwweDI4LDB4
RjcsMHhGRSwweEZDLDB4RjAsCisgICAgMHhBMiwweDMwLDB4NjEsMHgyMCwweEY3LDB4RkIsMHhC
RSwweDJBLDB4ODEsMHgzMCwweEEyLDB4MjgsMHhENywweDVDLDB4NTYsMHg1RiwKKyAgICAweEUz
LDB4MzAsMHhBMiwweDMwLDB4QkQsMHgyRiwweDBCLDB4MkIsMHhFMywweDMwLDB4QzIsMHgyOCww
eDdDLDB4RjAsMHhGQSwweEJBLAorICAgIDB4RTMsMHgzMCwweDgxLDB4MjAsMHhGRiwweEY2LDB4
REMsMHg3RSwweEEyLDB4MjgsMHg4MSwweDIwLDB4NzgsMHg1QywweEEwLDB4MjMsCisgICAgMHhD
MiwweDI4LDB4NjEsMHgyMCwweEZGLDB4RkQsMHhBQSwweDJBLDB4QzIsMHgzMCwweDgyLDB4Mjgs
MHgwRCwweDBELDB4MEYsMHgwMCwKKyAgICAweEMyLDB4MzAsMHg4MiwweDI4LDB4RTAsMHhFOCww
eEZDLDB4RjgsMHhFMywweDMwLDB4QTIsMHgyOCwweEQ1LDB4QjUsMHgzRCwweEVGLAorICAgIDB4
RTMsMHgzMCwweEEyLDB4MjgsMHhCRiwweDlGLDB4MkYsMHhCRiwweDAzLDB4MzEsMHhDMywweDMw
LDB4QUEsMHhFQSwweEJCLDB4QUYsCisgICAgMHgwMywweDMxLDB4QTIsMHgyOCwweDlGLDB4RjUs
MHgzNywweEI3LDB4MDMsMHgzMSwweEEyLDB4MjgsMHgyMiwweEYyLDB4N0YsMHg1NSwKKyAgICAw
eDAzLDB4MzEsMHhBMiwweDI4LDB4OEIsMHhBMiwweEJCLDB4OUQsMHhFMiwweDMwLDB4QTIsMHgy
OCwweDVFLDB4RTAsMHhFMCwweEFBLAorICAgIDB4RTMsMHgzOCwweEMyLDB4MjgsMHg1NywweDdE
LDB4REQsMHg3RCwweDAzLDB4MzEsMHhBMiwweDI4LDB4QTcsMHhERCwweDVGLDB4MkIsCisgICAg
MHgwMywweDM5LDB4QzIsMHgzMCwweDM1LDB4QUYsMHhCRiwweDNGLDB4NDQsMHg0MSwweEUyLDB4
MzAsMHhBQiwweEEyLDB4OUEsMHhGNywKKyAgICAweDIzLDB4MzksMHhFMiwweDMwLDB4RTAsMHhF
MiwweEUwLDB4NjIsMHg0NCwweDQxLDB4QzEsMHgzMCwweEFBLDB4QUYsMHgyQiwweDg5LAorICAg
IDB4MjQsMHg0MSwweEUyLDB4MzgsMHgzNiwweDI2LDB4QkIsMHg3QSwweDY0LDB4NDksMHhFMyww
eDM4LDB4QUIsMHhCRiwweEVELDB4RkYsCisgICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweDk1LDB4
MzcsMHgyRCwweDNELDB4NDQsMHg0OSwweDAzLDB4NDEsMHgwOCwweDM4LDB4MjcsMHgyQSwKKyAg
ICAweEM2LDB4NTksMHgyNCwweDQxLDB4QUQsMHhFRCwweEVCLDB4MkIsMHgwNywweDYyLDB4NjQs
MHg0OSwweEI3LDB4M0QsMHhGRiwweDBCLAorICAgIDB4Q0EsMHg3QSwweDI3LDB4NkEsMHhBNSww
eDJGLDB4OEQsMHgwQiwweDJCLDB4OEIsMHhDQSwweDdBLDB4M0QsMHgyNSwweEZELDB4RUYsCisg
ICAgMHhBQywweDlCLDB4MEEsMHg4MywweDJBLDB4QkQsMHhENSwweDU1LDB4OEYsMHhCNCwweDJB
LDB4OEIsMHgwQSwweEJGLDB4RkYsMHg1NSwKKyAgICAweEYwLDB4QkMsMHg4QiwweDkzLDB4MDIs
MHgyQSwweEJELDB4NTUsMHhGMCwweEM0LDB4MEQsMHhBQywweDAwLDB4MDAsMHgwQiwweEJELAor
ICAgIDB4MTAsMHhDNSwweEFGLDB4QkMsMHhBQSwweDI4LDB4MkEsMHgyRCwweDEwLDB4QzUsMHhG
MCwweEJDLDB4RDYsMHgyQSwweDg2LDB4QUYsCisgICAgMHgxMCwweEM1LDB4Q0YsMHhCQywweDlB
LDB4NjIsMHhGOCwweEZFLDB4MTAsMHhDNSwweEFGLDB4QjQsMHhBQSwweDhFLDB4N0UsMHhGQiwK
KyAgICAweEYwLDB4QkMsMHhBRiwweEI0LDB4MkEsMHhCMiwweEIzLDB4QUYsMHhGMCwweEJDLDB4
RDAsMHhCQywweDA1LDB4MkEsMHgyRSwweEJBLAorICAgIDB4MTEsMHhDNSwweEFGLDB4QjQsMHhB
RSwweEE2LDB4QUEsMHhFQiwweEYwLDB4QkMsMHg0RCwweEE0LDB4NTgsMHg3OCwweDQ4LDB4RTAs
CisgICAgMHg2RCwweEFDLDB4MEQsMHhBNCwweERGLDB4N0YsMHg3QSwweEY4LDB4MkQsMHhBNCww
eENDLDB4OUIsMHg3QywweEFBLDB4QUEsMHgwQSwKKyAgICAweDJELDB4QTQsMHhFQywweDlCLDB4
RjUsMHhCRCwweDk3LDB4MkUsMHgyRCwweEE0LDB4MEQsMHg5QywweENGLDB4N0YsMHhGRSwweEIz
LAorICAgIDB4NEUsMHhBNCwweENDLDB4OTMsMHg2NywweEFBLDB4QTIsMHgyOCwweDBELDB4OUMs
MHgyQSwweDgzLDB4N0YsMHhFOCwweDAwLDB4MDAsCisgICAgMHgwRCwweDlDLDB4MkEsMHg4Myww
eDc1LDB4RkYsMHhFQSwweDgwLDB4Q0MsMHg5MywweDJBLDB4ODMsMHg1RiwweEZGLDB4RkEsMHgw
MCwKKyAgICAweDBELDB4OUMsMHgyQSwweDgzLDB4NzcsMHhERiwweEVGLDB4MkEsMHhFQywweDlC
LDB4MkEsMHg4MywweDVELDB4N0YsMHhGRSwweDIwLAorICAgIDB4OEEsMHg4QiwweEU5LDB4N0Es
MHg1RiwweEVCLDB4NTgsMHhBMCwweDRBLDB4ODMsMHg2OCwweDZBLDB4NUYsMHg1QiwweEVBLDB4
QTgsCisgICAgMHgyMywweDQ5LDB4QzIsMHgzOCwweEFCLDB4QTYsMHhBNCwweDJBLDB4NDQsMHg0
OSwweEUyLDB4MzgsMHhBRCwweEI3LDB4RUEsMHhBQSwKKyAgICAweDIzLDB4NDksMHhFMywweDQw
LDB4MzgsMHhBRSwweEVFLDB4Q0UsMHgyMywweDQ5LDB4MDMsMHg0MSwweDYwLDB4Q0UsMHgyQyww
eDVBLAorICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHhBQSwweDBBLDB4RTAsMHhGQSwweDIzLDB4
NTEsMHgwMywweDQxLDB4RkEsMHg3RiwweERELDB4NTUsCisgICAgMHg0MywweDQ5LDB4MDIsMHg0
MSwweEZCLDB4M0IsMHhBMywweEJCLDB4MjMsMHg0OSwweEMyLDB4MzgsMHhFQSwweEJBLDB4NTgs
MHhFOCwKKyAgICAweDIzLDB4NDEsMHhBMSwweDM4LDB4RUEsMHhBQSwweEZBLDB4NjgsMHgwMyww
eDQxLDB4QTIsMHgzOCwweEZGLDB4QkUsMHhBQiwweDg5LAorICAgIDB4MDMsMHg0MSwweEMyLDB4
MzgsMHhCQywweEI3LDB4RDQsMHgyQSwweDIzLDB4NDEsMHhFMiwweDQwLDB4RDcsMHg1RSwweERD
LDB4RTcsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDdBLDB4RkYsMHhCNywweDJGLDB4MDMs
MHg0MSwweEUyLDB4NDAsMHgwNSwweDE1LDB4QTksMHg1QywKKyAgICAweDAzLDB4NDEsMHhFMiww
eDM4LDB4MDMsMHhDQSwweEQ1LDB4NUQsMHgwMywweDQxLDB4QzIsMHgzOCwweEZFLDB4QTYsMHhE
NiwweEQ2LAorICAgIDB4MDIsMHg0MSwweEMyLDB4MzgsMHgzRCwweDNCLDB4QUYsMHhCRiwweDAz
LDB4NDEsMHhFMiwweDM4LDB4NzAsMHg3MCwweDVDLDB4NUQsCisgICAgMHhFMiwweDQwLDB4MDIs
MHgzOSwweEUwLDB4MzgsMHhBQSwweEIyLDB4MDIsMHg0MSwweEUyLDB4MzgsMHhGOCwweEFCLDB4
QkQsMHhERCwKKyAgICAweDAyLDB4NDEsMHhDMiwweDQwLDB4QTIsMHgyMiwweDAwLDB4QUMsMHgw
MywweDQxLDB4QzIsMHg0MCwweDJCLDB4MDcsMHgwRSwweEE4LAorICAgIDB4ODQsMHg1MSwweEUy
LDB4NDAsMHgzNSwweDNGLDB4OUQsMHhGNSwweDY3LDB4NzIsMHhBNCwweDU5LDB4MkIsMHgwQiww
eDA5LDB4ODEsCisgICAgMHg2NywweDcyLDB4MDUsMHg2MiwweDVCLDB4NzEsMHhFOCwweDZBLDB4
MDUsMHg2MiwweEM1LDB4NTksMHgyQiwweDA4LDB4ODAsMHhFOCwKKyAgICAweDA1LDB4NjIsMHg2
MywweDQ5LDB4NjAsMHg3QSwweEZBLDB4NkEsMHg2NCwweDQ5LDB4RTIsMHgzOCwweEYwLDB4Rjgs
MHhGOCwweDVBLAorICAgIDB4NDQsMHg0MSwweEUyLDB4MzgsMHhGRSwweERGLDB4RDcsMHgzRCww
eDQ0LDB4NDEsMHgwMywweDM5LDB4NzUsMHhDRSwweEEyLDB4OTgsCisgICAgMHgyMywweDM5LDB4
RTIsMHgzOCwweDhCLDB4QTIsMHgwMywweDIwLDB4MjMsMHgzOSwweEMzLDB4MzAsMHgyQSwweDZF
LDB4RkUsMHhGMiwKKyAgICAweDQ0LDB4NDEsMHhFMywweDMwLDB4MEEsMHgyQiwweEJELDB4RTcs
MHg0NCwweDQxLDB4RTIsMHgzOCwweEFBLDB4MjAsMHg4RiwweEFELAorICAgIDB4NDQsMHg0MSww
eDIzLDB4MzksMHg1NywweDE4LDB4RDgsMHg3MSwweDIzLDB4MzksMHhDMiwweDMwLDB4NUUsMHhG
QywweEY4LDB4QTgsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEU5LDB4N0EsMHhCQSwweEEy
LDB4MDMsMHgzOSwweEExLDB4MjgsMHhFMiwweEVBLDB4RjMsMHg3QiwKKyAgICAweEMyLDB4MzAs
MHhBMSwweDI4LDB4QTAsMHhFOCwweEJDLDB4QTUsMHhFMiwweDI4LDB4ODEsMHgyOCwweEVBLDB4
QTIsMHhBOCwweDZBLAorICAgIDB4RTIsMHgzMCwweEEyLDB4MjAsMHhFRCwweEVGLDB4QkUsMHg3
QiwweEUzLDB4MjgsMHg4MSwweDIwLDB4OEEsMHhBMiwweEVBLDB4REYsCisgICAgMHhFMywweDI4
LDB4ODIsMHgyMCwweEUyLDB4N0EsMHg3NywweEZGLDB4QzIsMHgyMCwweDYxLDB4MjAsMHg1RSww
eDU3LDB4N0YsMHhGRiwKKyAgICAweEEyLDB4MjgsMHg2MSwweDIwLDB4N0QsMHhGMywweDhCLDB4
MDMsMHhFMywweDMwLDB4ODEsMHgyMCwweEQ1LDB4RkQsMHhBOSwweDBBLAorICAgIDB4QzMsMHgy
OCwweDgxLDB4MjAsMHhGRCwweEZFLDB4RkMsMHhBOCwweDAyLDB4MjksMHhBMiwweDI4LDB4NzUs
MHg3RCwweEZGLDB4REUsCisgICAgMHhDMiwweDI4LDB4QTIsMHgyOCwweENBLDB4ODAsMHg4RSww
eEJBLDB4MDMsMHgzMSwweEMyLDB4MjgsMHhGRCwweEVELDB4RDUsMHg5NSwKKyAgICAweDAzLDB4
MzEsMHhDMiwweDI4LDB4RjcsMHg3RiwweDdCLDB4RUEsMHgwMywweDI5LDB4QTIsMHgyOCwweERG
LDB4NUYsMHhGRSwweEZGLAorICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHhERCwweDVELDB4NUIs
MHhGQiwweEUyLDB4MjgsMHhBMiwweDI4LDB4RUQsMHg3RiwweEJFLDB4RUEsCisgICAgMHhDMiww
eDI4LDB4ODEsMHgyMCwweDk3LDB4RkMsMHg4MiwweEUwLDB4ODEsMHgyOCwweEMyLDB4MjAsMHhB
NywweEJGLDB4QkEsMHhFQSwKKyAgICAweEUzLDB4MzAsMHg4MSwweDIwLDB4QkYsMHgyRiwweEZE
LDB4QjcsMHhDMiwweDI4LDB4ODEsMHgyMCwweDU0LDB4NUUsMHg1OCwweEZFLAorICAgIDB4QzIs
MHgyOCwweDgxLDB4MjAsMHhGRiwweDVGLDB4RkUsMHgzOCwweEMyLDB4MjgsMHg4MSwweDIwLDB4
RUIsMHg3MiwweDdBLDB4RjgsCisgICAgMHhDMiwweDI4LDB4ODEsMHgyMCwweERGLDB4QUIsMHg4
MywweEVCLDB4RTIsMHgzMCwweEEyLDB4MjgsMHg1MiwweDZCLDB4N0IsMHg3NSwKKyAgICAweEMy
LDB4MzAsMHg4MSwweDIwLDB4QUEsMHhGRSwweDc1LDB4NTcsMHhDMiwweDMwLDB4ODEsMHgyMCww
eDA4LDB4MkYsMHhBRCwweEVELAorICAgIDB4MDMsMHgzOSwweDgxLDB4MjgsMHgwMCwweEFBLDB4
QUYsMHhGNSwweDIzLDB4NDEsMHhDMiwweDMwLDB4MjAsMHgwOCwweDJELDB4OUYsCisgICAgMHg2
NSwweDQ5LDB4MjQsMHg0MSwweDQxLDB4QTIsMHhCQiwweEVCLDB4NDQsMHg0MSwweEEyLDB4Mjgs
MHg3QSwweEY4LDB4Q0EsMHg3OCwKKyAgICAweEMyLDB4MzAsMHg2MSwweDIwLDB4RDYsMHhGRSww
eEI4LDB4QUEsMHhBMiwweDMwLDB4ODIsMHgyMCwweDA4LDB4QTAsMHgyMCwweEEwLAorICAgIDB4
QzMsMHgzMCwweDgyLDB4MjgsMHhFQSwweEVCLDB4RUIsMHhGRCwweEMyLDB4MzAsMHg4MSwweDI4
LDB4QjIsMHg5RiwweDdGLDB4QUYsCisgICAgMHhDMiwweDMwLDB4ODIsMHgyOCwweDhBLDB4QUUs
MHhCRCwweEZBLDB4MDMsMHgzOSwweEEyLDB4MjgsMHhEOSwweEFGLDB4QUYsMHhCRCwKKyAgICAw
eDAzLDB4MzksMHhBMiwweDI4LDB4RDUsMHhCRiwweDJFLDB4MEEsMHgyNCwweDM5LDB4QTIsMHgz
MCwweEQ1LDB4RkIsMHhBQSwweEFBLAorICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHhGNywweEZG
LDB4RkUsMHgyMiwweEUyLDB4MzAsMHhBMiwweDI4LDB4RkYsMHhERiwweDUzLDB4QzAsCisgICAg
MHhDMiwweDMwLDB4ODIsMHgyOCwweEJDLDB4N0UsMHhCRSwweEEyLDB4RTMsMHgyOCwweDgxLDB4
MjgsMHhCRCwweEY3LDB4NTcsMHhGRiwKKyAgICAweDAzLDB4MzEsMHg4MiwweDI4LDB4M0YsMHhB
RiwweEJELDB4QkQsMHgwMywweDM5LDB4QzIsMHgyOCwweDY4LDB4RTAsMHhDMiwweDgzLAorICAg
IDB4RTMsMHgzMCwweEEyLDB4MjgsMHg1OCwweEVBLDB4QzAsMHhCMCwweEUyLDB4MzAsMHhBMiww
eDI4LDB4MjcsMHhGNywweERGLDB4N0YsCisgICAgMHhDMiwweDMwLDB4QTIsMHgyOCwweDgwLDB4
QkEsMHg1OSwweEEzLDB4RTMsMHgzMCwweDgxLDB4MjgsMHgwQSwweENBLDB4REEsMHhERiwKKyAg
ICAweEMyLDB4MjgsMHg4MSwweDI4LDB4ODgsMHgyQSwweDBBLDB4QUQsMHhDMiwweDI4LDB4QTIs
MHgyOCwweDc3LDB4QjksMHhFMiwweDIyLAorICAgIDB4QzIsMHgyOCwweDgxLDB4MjAsMHgzRSww
eEVBLDB4RkUsMHhGMiwweEMzLDB4MzAsMHg4MSwweDIwLDB4MDIsMHhBQiwweEVFLDB4NkYsCisg
ICAgMHhFMywweDMwLDB4ODEsMHgyMCwweEEyLDB4QkIsMHhCRCwweEE1LDB4RTMsMHgzMCwweEMy
LDB4MjgsMHhBNywweEY3LDB4NjUsMHg3NSwKKyAgICAweDAzLDB4MzksMHhDMiwweDI4LDB4M0Is
MHgzRCwweDc1LDB4QUQsMHgwMiwweDM5LDB4QTIsMHgyOCwweDI4LDB4RkYsMHhCRiwweEZGLAor
ICAgIDB4MDMsMHgzOSwweEExLDB4MjgsMHhBMCwweDhCLDB4QTksMHhBQSwweDQ0LDB4NDEsMHhD
MSwweDMwLDB4MjksMHhGQiwweDdELDB4RjUsCisgICAgMHg0NCwweDQxLDB4RTIsMHgzOCwweERB
LDB4NUIsMHhENywweDNELDB4ODQsMHg0OSwweDAzLDB4MzksMHg1RCwweEZGLDB4QzEsMHhDQSwK
KyAgICAweDQ0LDB4NDksMHgwMywweDQxLDB4QUQsMHhBNSwweDI1LDB4RkYsMHg4NSwweDUxLDB4
MjMsMHg0MSwweEZELDB4QkYsMHgyRiwweDBCLAorICAgIDB4QzYsMHg1OSwweDY0LDB4NDksMHhB
NSwweEI1LDB4M0YsMHgwRiwweDI3LDB4NkEsMHhDNSwweDU5LDB4QUQsMHgzNSwweEY1LDB4MkIs
CisgICAgMHhFQSwweDgyLDB4NDgsMHg2QSwweDJELDB4MkQsMHgyRCwweDA5LDB4MkEsMHg4Myww
eEVBLDB4N0EsMHhFOSwweDdGLDB4NzYsMHg2QSwKKyAgICAweDJCLDB4ODMsMHhDOSwweDdBLDB4
QUUsMHhBRiwweEI1LDB4QkYsMHgyQSwweDhCLDB4QzksMHg3QSwweDJGLDB4RTYsMHhBNiwweEFF
LAorICAgIDB4OEMsMHg5QiwweEU5LDB4N0EsMHgyQiwweEJGLDB4RDcsMHhGRiwweEVELDB4QTMs
MHgyQSwweDgzLDB4MEIsMHhCNywweEZELDB4NTUsCisgICAgMHhBRiwweEJDLDB4MkIsMHg4Myww
eDAyLDB4QUYsMHhGRCwweEQ1LDB4RjAsMHhCQywweEFDLDB4OUIsMHgwMCwweDAyLDB4QUQsMHg1
NSwKKyAgICAweEYwLDB4QkMsMHg0RCwweEFDLDB4MDAsMHgwMCwweDBBLDB4RTUsMHhGMCwweEJD
LDB4QUYsMHhCNCwweDcyLDB4QTIsMHgwQSwweDJGLAorICAgIDB4MTEsMHhDNSwweEQwLDB4QkMs
MHhGRCwweDdCLDB4Q0EsMHhFRiwweDEwLDB4QzUsMHhEMCwweEJDLDB4N0UsMHg3RiwweDZCLDB4
RUEsCisgICAgMHgxMCwweEM1LDB4RDAsMHhCQywweEU1LDB4RkYsMHhBRiwweDZCLDB4RjAsMHhC
QywweDZFLDB4QUMsMHhFOCwweEE4LDB4RTAsMHg2MCwKKyAgICAweDhGLDB4QUMsMHgwRCwweEE0
LDB4NzQsMHhEQywweERBLDB4RkEsMHg0RSwweEFDLDB4MkQsMHhBNCwweDVFLDB4NUUsMHg2Nyww
eDI0LAorICAgIDB4MkQsMHhBNCwweEVDLDB4OUIsMHgxOCwweDJFLDB4MDAsMHgwMCwweDJELDB4
QTQsMHgwRCwweEE0LDB4NTAsMHgwOCwweDlELDB4MEEsCisgICAgMHg0RSwweEFDLDB4MEQsMHg5
QywweEZELDB4OTYsMHhBRSwweERBLDB4NEUsMHhBNCwweDBELDB4QTQsMHhFQSwweEFCLDB4QTcs
MHg5RiwKKyAgICAweDZFLDB4QTQsMHgyRCwweEE0LDB4N0QsMHhFOSwweDdELDB4QjUsMHg0RSww
eEE0LDB4RUMsMHg5QiwweDlFLDB4MjIsMHg4MCwweDBBLAorICAgIDB4NkUsMHhBQywweDBELDB4
OUMsMHhENywweEI4LDB4MkEsMHgwMiwweDZGLDB4QUMsMHgwRCwweDlDLDB4N0YsMHhDRiwweEFB
LDB4RUUsCisgICAgMHg0RSwweEE0LDB4QUIsMHg4QiwweDU3LDB4QTgsMHhDMCwweDAyLDB4NEUs
MHhBNCwweDJBLDB4ODMsMHg1NywweEZFLDB4QUEsMHhBMCwKKyAgICAweDQ0LDB4NDksMHhFMiww
eDQwLDB4QTUsMHg2RiwweDVBLDB4RkMsMHgyMywweDQ5LDB4QzIsMHgzOCwweDg4LDB4RUEsMHhF
QSwweDdBLAorICAgIDB4MjMsMHg0OSwweEMyLDB4MzgsMHhFMiwweEZBLDB4RkEsMHhBRCwweDIz
LDB4NDksMHhFMywweDQwLDB4OEEsMHhFQSwweEZBLDB4QkYsCisgICAgMHgyMywweDQ5LDB4RTMs
MHg0MCwweDlBLDB4QkIsMHhFOSwweEYwLDB4MjMsMHg0OSwweEUzLDB4NDAsMHg5NiwweDI1LDB4
QkYsMHg5QiwKKyAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4ODIsMHhBMCwweDJFLDB4N0EsMHgy
MywweDQxLDB4RTIsMHg0MCwweEFBLDB4MzYsMHhENywweEY1LAorICAgIDB4MDMsMHg0MSwweEMx
LDB4MzgsMHhGOCwweEU4LDB4QTgsMHgzRSwweDAyLDB4NDEsMHhBMSwweDM4LDB4REEsMHhGOCww
eEJBLDB4RUUsCisgICAgMHgwMywweDQxLDB4QTIsMHgzOCwweDAzLDB4QUIsMHhFRiwweEZBLDB4
MDMsMHg0MSwweEMyLDB4MzgsMHg4OCwweDlFLDB4NTcsMHg1RiwKKyAgICAweDAzLDB4NDEsMHhD
MiwweDM4LDB4MkYsMHhGQSwweEI5LDB4RjksMHgwMiwweDQxLDB4QzIsMHgzOCwweEVBLDB4RUIs
MHg2QSwweEVGLAorICAgIDB4MjMsMHg0OSwweEMyLDB4MzgsMHhEQSwweEZFLDB4REMsMHg3QSww
eEUyLDB4NDAsMHhDMiwweDM4LDB4OTgsMHg3OCwweDY4LDB4QTgsCisgICAgMHgwMiwweDQxLDB4
QzIsMHgzOCwweEZGLDB4RkUsMHhCMywweDAzLDB4MDIsMHg0MSwweEMyLDB4MzgsMHhGRSwweEI3
LDB4QkEsMHhCOCwKKyAgICAweDAzLDB4NDEsMHhFMiwweDQwLDB4OTUsMHhGNSwweENELDB4MDYs
MHgwMywweDQxLDB4RTIsMHg0MCwweEZGLDB4RjgsMHg3MCwweDVDLAorICAgIDB4MDIsMHg0MSww
eEMyLDB4MzgsMHg5NywweEZFLDB4QUUsMHhBQSwweDAzLDB4NDEsMHhBMSwweDM4LDB4MTgsMHgz
QSwweDBBLDB4ODIsCisgICAgMHgyMywweDQ5LDB4QTAsMHgzOCwweDJFLDB4QTgsMHgyRSwweDJE
LDB4NjYsMHg3MiwweDg0LDB4NTEsMHgwQiwweDBCLDB4MDksMHhBOSwKKyAgICAweDQ2LDB4NkEs
MHhFNSwweDYxLDB4QUEsMHg5QywweDgwLDB4OEEsMHgyNywweDZBLDB4QzUsMHg1OSwweDZGLDB4
QjcsMHhBRiwweEFDLAorICAgIDB4MDYsMHg2MiwweDYzLDB4NDksMHhGRSwweDU4LDB4NzgsMHg3
OCwweDQ0LDB4NDksMHhFMiwweDM4LDB4N0UsMHg1RSwweDVFLDB4N0MsCisgICAgMHg0NCwweDQx
LDB4RTIsMHgzOCwweEJELDB4RDUsMHhCNSwweENELDB4NDMsMHg0MSwweDAzLDB4MzksMHg3NCww
eDVGLDB4NUYsMHg1RiwKKyAgICAweDIzLDB4MzksMHhFMywweDM4LDB4MkEsMHg1NywweDVBLDB4
QUIsMHgyNCwweDM5LDB4MDMsMHgzOSwweDgxLDB4RDMsMHg3RiwweEQ3LAorICAgIDB4MjQsMHg0
MSwweEUzLDB4MzAsMHhCQSwweEFBLDB4RUQsMHg2RSwweDAzLDB4MzksMHhFMywweDMwLDB4MkQs
MHhFRiwweDdFLDB4QTIsCisgICAgMHgyMywweDM5LDB4RTMsMHgzOCwweDAwLDB4MkEsMHhCRCww
eDlGLDB4NDMsMHg0MSwweDAzLDB4MzksMHg0QSwweDY5LDB4RkYsMHg3RiwKKyAgICAweDQ0LDB4
NDEsMHhFMiwweDMwLDB4RkIsMHg3QSwweEVGLDB4RTMsMHgyMywweDM5LDB4QzEsMHgzMCwweDdG
LDB4RkQsMHhGQiwweDI4LAorICAgIDB4MDMsMHgzOSwweEExLDB4MjgsMHg1RiwweDU2LDB4REUs
MHhBOCwweEMyLDB4MjgsMHg4MSwweDIwLDB4N0EsMHhCQSwweEEzLDB4MDIsCisgICAgMHhFMyww
eDMwLDB4ODEsMHgyMCwweDZELDB4QkYsMHhGQywweEVBLDB4RTMsMHgzMCwweDgxLDB4MjAsMHg1
RiwweEZGLDB4OEEsMHgyQSwKKyAgICAweDAzLDB4MzEsMHhBMiwweDI4LDB4RDUsMHhGNywweEJF
LDB4QTgsMHhFMiwweDMwLDB4ODIsMHgyMCwweDVGLDB4QUUsMHgyRSwweDIyLAorICAgIDB4RTMs
MHgzMCwweEEyLDB4MjgsMHhFNSwweEZGLDB4MkYsMHgyOCwweEUzLDB4MzAsMHhDMiwweDI4LDB4
NkIsMHg2OSwweDZGLDB4NTUsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEVCLDB4QTksMHhF
QiwweEZBLDB4RTMsMHgzMCwweEEyLDB4MjgsMHhBQSwweEE5LDB4QUIsMHhCOCwKKyAgICAweDAz
LDB4MzEsMHhDMiwweDI4LDB4RjcsMHhGNywweEY1LDB4QjUsMHhFMywweDMwLDB4QTIsMHgyOCww
eEYyLDB4QkEsMHhGRSwweEE4LAorICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHhFQSwweDZCLDB4
N0YsMHhGQiwweEUzLDB4MzAsMHhDMiwweDI4LDB4OUEsMHgyNywweDIzLDB4OEIsCisgICAgMHgw
MywweDMxLDB4QTIsMHgyOCwweEFBLDB4RkEsMHhGOCwweERFLDB4RTMsMHgyOCwweEEyLDB4Mjgs
MHhCQSwweEJCLDB4QUUsMHhBRSwKKyAgICAweEUyLDB4MjgsMHhBMiwweDI4LDB4NUUsMHhGQSww
eEFBLDB4MEUsMHhFMywweDI4LDB4QTIsMHgyOCwweEQ1LDB4REUsMHhENiwweEVFLAorICAgIDB4
QTIsMHgyOCwweDYxLDB4MjAsMHg4QSwweEU4LDB4RDgsMHg5OCwweEMyLDB4MjgsMHg4MSwweDIw
LDB4MkIsMHhCOSwweEVELDB4NUQsCisgICAgMHhFMiwweDI4LDB4QTIsMHgyMCwweERFLDB4RjIs
MHg1RCwweDU1LDB4QzIsMHgyOCwweDgyLDB4MjAsMHhDMiwweDYyLDB4RkEsMHg2OCwKKyAgICAw
eEEyLDB4MjAsMHg2MSwweDIwLDB4MDAsMHg4MiwweEI4LDB4M0EsMHhDMiwweDI4LDB4ODEsMHgy
MCwweEVBLDB4RkYsMHhENywweDU3LAorICAgIDB4QTIsMHgyOCwweDYxLDB4MjAsMHhGQSwweEZB
LDB4N0EsMHhGMiwweEEyLDB4MjgsMHg4MSwweDIwLDB4M0YsMHg5NywweDk1LDB4M0YsCisgICAg
MHhDMiwweDMwLDB4NjEsMHgyMCwweDJGLDB4RkEsMHg2RSwweEJBLDB4QzIsMHgzMCwweDgxLDB4
MjgsMHgyOCwweEY3LDB4QjUsMHhFRCwKKyAgICAweDQ0LDB4NDEsMHhDMiwweDMwLDB4MEIsMHhB
RCwweEJELDB4REQsMHgyNCwweDM5LDB4QzIsMHgzMCwweEQ4LDB4QkEsMHhBQSwweEZFLAorICAg
IDB4RTMsMHgzMCwweEEyLDB4MzAsMHg5NywweEE4LDB4QTAsMHhBMiwweEUzLDB4MzgsMHhBMiww
eDMwLDB4NUUsMHg1RiwweERFLDB4QjgsCisgICAgMHhFMiwweDMwLDB4ODEsMHgyOCwweDdGLDB4
RUUsMHhBQSwweEEyLDB4RTMsMHgzMCwweEEyLDB4MjgsMHg5NSwweDM3LDB4MkUsMHhBQiwKKyAg
ICAweDAzLDB4MzksMHhBMiwweDI4LDB4REYsMHhCNiwweEVBLDB4OEEsMHhFMiwweDMwLDB4QTIs
MHgzMCwweDAxLDB4MEEsMHgyQSwweDlBLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGQSww
eEJGLDB4QUUsMHgwRiwweDQzLDB4NDEsMHhFMywweDM4LDB4RkIsMHg3RCwweDc4LDB4RUEsCisg
ICAgMHg0NCwweDQxLDB4MDMsMHgzOSwweEY1LDB4MkQsMHhGOSwweEEyLDB4NjQsMHg0MSwweEUz
LDB4MzgsMHg1NywweEE4LDB4OEEsMHgyQSwKKyAgICAweDQ0LDB4NDEsMHhDMiwweDMwLDB4NUQs
MHg1RiwweEVDLDB4QUEsMHgyNCwweDQxLDB4QTIsMHgyOCwweEQ1LDB4RjcsMHhBQSwweEU4LAor
ICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHg4MywweDA4LDB4MkUsMHhBNywweEUzLDB4MzAsMHhD
MiwweDI4LDB4MDAsMHhFOCwweEI4LDB4N0UsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEEw
LDB4QkMsMHgzRSwweEZBLDB4QzIsMHgzMCwweEEyLDB4MjgsMHg1RSwweDVFLDB4N0MsMHhGRSwK
KyAgICAweEUyLDB4MjgsMHg4MiwweDI4LDB4QzcsMHhGRiwweEZCLDB4QkUsMHhBMiwweDI4LDB4
ODEsMHgyMCwweEE4LDB4NkUsMHgzNiwweDMyLAorICAgIDB4QzIsMHgyOCwweDYxLDB4MjAsMHgy
RiwweEJGLDB4RDcsMHhCQiwweEMyLDB4MjgsMHg4MSwweDI4LDB4MDIsMHg4QSwweEYyLDB4RTgs
CisgICAgMHhDMiwweDI4LDB4QTIsMHgyOCwweDNFLDB4MjcsMHhCOSwweDBELDB4QzIsMHgzMCww
eDgyLDB4MjgsMHg2RSwweEE4LDB4RkEsMHhDMCwKKyAgICAweEMyLDB4MjgsMHg4MSwweDI4LDB4
QjUsMHg5NywweDlGLDB4QkUsMHhFMiwweDMwLDB4QTIsMHgyOCwweEJGLDB4OUYsMHg5RiwweDk1
LAorICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHhGQiwweEZGLDB4RUYsMHgyQiwweDAzLDB4Mzks
MHhDMiwweDMwLDB4NUYsMHg1QSwweEY4LDB4QzAsCisgICAgMHhFMiwweDMwLDB4QTIsMHgzMCww
eDg4LDB4QkIsMHhCQiwweEEyLDB4MDMsMHgzOSwweEMxLDB4MzAsMHhCRCwweEJGLDB4QUIsMHhB
MywKKyAgICAweDIzLDB4NDEsMHhFMiwweDM4LDB4QUQsMHhFNywweEY3LDB4QkYsMHg2NCwweDQ5
LDB4MDMsMHgzOSwweDgwLDB4RTMsMHhGQiwweEVELAorICAgIDB4NjQsMHg0OSwweDAyLDB4Mzks
MHg3RSwweEZBLDB4QTksMHg4QiwweEM1LDB4NTEsMHg0MywweDQxLDB4QkQsMHgwRiwweEFGLDB4
RkYsCisgICAgMHhFNiwweDU5LDB4NjQsMHg1MSwweEE1LDB4QkUsMHhFQSwweDM3LDB4NjgsMHg2
QSwweEM2LDB4NTksMHhCRCwweDJCLDB4M0QsMHgyQiwKKyAgICAweEVBLDB4ODIsMHg2OCwweDZB
LDB4MjksMHgyQiwweDBELDB4MkYsMHgyQSwweDgzLDB4Q0EsMHg3QSwweEFBLDB4QTgsMHhCQiww
eEI2LAorICAgIDB4MkEsMHg4MywweEVBLDB4N0EsMHhFRSwweDYyLDB4NkEsMHhGQiwweDJBLDB4
ODMsMHhFQSwweDdBLDB4REUsMHhGRiwweERELDB4QzksCisgICAgMHgyQiwweDgzLDB4QzgsMHg3
QSwweEFCLDB4MkIsMHhBNSwweDc3LDB4MkEsMHg4MywweEM5LDB4N0EsMHgwRiwweEJDLDB4RkUs
MHg2RiwKKyAgICAweDZCLDB4OEIsMHhDOSwweDdBLDB4MkYsMHhBRiwweEVELDB4RkQsMHg4Qyww
eDkzLDB4RUEsMHg3QSwweDAwLDB4MDIsMHhFQiwweEY1LAorICAgIDB4MEQsMHhBNCwweDBBLDB4
ODMsMHgwMiwweEFFLDB4RkQsMHg3RCwweEVGLDB4QkMsMHg2QiwweDhCLDB4MEEsMHhBQiwweEY1
LDB4RDUsCisgICAgMHhGMCwweEJDLDB4OEMsMHg5MywweDAwLDB4MDAsMHhBQiwweEJELDB4RjAs
MHhCQywweDkwLDB4QjQsMHgyMCwweDAyLDB4MDMsMHhGRCwKKyAgICAweDMwLDB4QzUsMHhDRiww
eEJDLDB4RUYsMHhCQiwweEJBLDB4RjEsMHgxMCwweEM1LDB4OEYsMHhCNCwweDZDLDB4RjgsMHhF
OCwweEU4LAorICAgIDB4QUYsMHhCNCwweDJELDB4QTQsMHhEQSwweEU4LDB4RTgsMHhGQiwweDZF
LDB4QUMsMHgwQywweEE0LDB4QTYsMHgyMywweDJGLDB4ODgsCisgICAgMHg2RSwweEFDLDB4MkUs
MHhBNCwweDdFLDB4RTAsMHhGMywweDgwLDB4NkYsMHhBQywweDJFLDB4QTQsMHg3RiwweDU3LDB4
RDcsMHhGRSwKKyAgICAweDZFLDB4QUMsMHgwRCwweEE0LDB4NzYsMHg3RiwweEJGLDB4Q0EsMHg0
RSwweEFDLDB4MEQsMHg5QywweEFELDB4RTMsMHgwMiwweDhBLAorICAgIDB4NEUsMHhBQywweDBE
LDB4QTQsMHgyQiwweDNCLDB4Q0EsMHhBMCwweDZFLDB4QUMsMHgwRCwweEE0LDB4QUQsMHhGQSww
eDIyLDB4MkUsCisgICAgMHg4RiwweEI0LDB4MkQsMHhBQywweEJBLDB4RTYsMHhCQiwweEFBLDB4
NkUsMHhBQywweDJFLDB4QTQsMHg2QSwweEVBLDB4NkUsMHgzQSwKKyAgICAweDZFLDB4QUMsMHgy
RSwweEE0LDB4RUYsMHhCRiwweEFBLDB4QTgsMHg0RSwweEE0LDB4MEQsMHg5QywweEYwLDB4Njgs
MHhGOCwweDAwLAorICAgIDB4MjMsMHg0OSwweEMyLDB4MzgsMHg4OCwweEZBLDB4RkIsMHg2OCww
eDAyLDB4NDEsMHhDMiwweDM4LDB4N0IsMHhGRCwweEZELDB4QjcsCisgICAgMHgwMywweDQxLDB4
QzIsMHgzOCwweEIyLDB4RUEsMHhCQywweDBFLDB4MjMsMHg0MSwweEMyLDB4NDAsMHg3RSwweEZB
LDB4QTIsMHhBQSwKKyAgICAweDIzLDB4NDksMHhFMywweDQwLDB4MjMsMHgwQiwweEFGLDB4Rjcs
MHgyMywweDQ5LDB4RTMsMHg0MCwweDNCLDB4MjgsMHg4RiwweDhDLAorICAgIDB4MjMsMHg0MSww
eEUyLDB4NDAsMHhERiwweDIwLDB4ODgsMHg3NywweDAzLDB4NDEsMHhFMiwweDM4LDB4QUYsMHhG
MCwweEVCLDB4ODksCisgICAgMHgwMiwweDQxLDB4QzIsMHgzOCwweEFGLDB4RUYsMHhDNywweEZC
LDB4RTIsMHg0MCwweEMyLDB4MzgsMHgzNiwweDlGLDB4RTcsMHg3NywKKyAgICAweDAzLDB4NDEs
MHhDMiwweDM4LDB4QzIsMHhFMywweEI1LDB4QjUsMHgwNCwweDQxLDB4QzIsMHgzOCwweEUyLDB4
RkEsMHg3NiwweDU3LAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhCRiwweEI2LDB4QkUsMHhB
RiwweDIzLDB4NDEsMHhFMiwweDQwLDB4RUQsMHhGRCwweDk1LDB4OEIsCisgICAgMHgyMywweDQ5
LDB4QzIsMHgzOCwweERFLDB4RkYsMHhERiwweDM1LDB4MDMsMHg0MSwweEMyLDB4MzgsMHhGQSww
eEFFLDB4RkYsMHhBQSwKKyAgICAweDAzLDB4NDEsMHhFMiwweDM4LDB4RkIsMHg2QiwweDhBLDB4
MjUsMHgyMywweDQxLDB4QzIsMHgzOCwweEE3LDB4MkYsMHg4QiwweEZCLAorICAgIDB4MDIsMHg0
MSwweEMyLDB4MzgsMHhBOCwweDlBLDB4RkYsMHhEQiwweDIzLDB4NDEsMHhDMiwweDM4LDB4RkEs
MHhGRCwweEZELDB4MzUsCisgICAgMHgwMywweDQxLDB4RTIsMHgzOCwweEVGLDB4NDIsMHg2Riww
eDhFLDB4MDMsMHg0MSwweEExLDB4MzgsMHg4OCwweEEyLDB4QkYsMHgyNywKKyAgICAweDIzLDB4
NDksMHhDMiwweDQwLDB4QjUsMHgxNywweDlFLDB4QkYsMHg2NiwweDcyLDB4NDQsMHg1MSwweDJC
LDB4QTksMHgyRCwweDBELAorICAgIDB4ODcsMHg3MiwweDA2LDB4NjIsMHhGRiwweDdBLDB4Nzgs
MHhGQywweDI2LDB4NkEsMHhFNSwweDU5LDB4RUEsMHg5OCwweEFBLDB4OEEsCisgICAgMHgwNiww
eDYyLDB4NjQsMHg0OSwweDY4LDB4NzAsMHg2QywweEZBLDB4NDQsMHg0MSwweEUzLDB4MzgsMHg3
RSwweDdDLDB4RkYsMHhERiwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4MDMsMHgwQSwweDAy
LDB4QUIsMHgwMywweDM5LDB4RTIsMHgzMCwweDAwLDB4MjAsMHgwRiwweDAzLAorICAgIDB4MjMs
MHgzOSwweEUzLDB4MzgsMHgwMSwweDJCLDB4RkUsMHg1RiwweDI0LDB4NDEsMHgwMywweDM5LDB4
NTYsMHg3NywweDczLDB4NTcsCisgICAgMHgyMywweDQxLDB4RTMsMHgzMCwweDhFLDB4RkQsMHhC
MiwweEFBLDB4MjQsMHgzOSwweDAzLDB4MzksMHg0MiwweDVGLDB4QTksMHg3RSwKKyAgICAweDQ0
LDB4NDEsMHgwMywweDM5LDB4NUYsMHg0QiwweDgyLDB4MDMsMHg0NCwweDQxLDB4RTIsMHgzMCww
eDVGLDB4N0YsMHhFMiwweEUwLAorICAgIDB4MjMsMHgzOSwweEUzLDB4MzgsMHhGNSwweDdELDB4
RkYsMHg4MiwweDIzLDB4MzksMHhFMywweDM4LDB4MDIsMHgwMiwweEZFLDB4RjksCisgICAgMHg0
NCwweDM5LDB4RTMsMHgzMCwweEZGLDB4RkYsMHhBRiwweDg5LDB4MjQsMHgzOSwweEMyLDB4MzAs
MHhERiwweEZBLDB4RTgsMHgyQSwKKyAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4RDUsMHhGRCww
eEJBLDB4ODAsMHgwMywweDMxLDB4QzIsMHgyOCwweEJGLDB4RkYsMHg2QSwweDYwLAorICAgIDB4
MDMsMHgzMSwweEUzLDB4MzAsMHg2RCwweEFELDB4RkUsMHhGOSwweDAzLDB4MzEsMHhDMiwweDI4
LDB4RUUsMHhBRiwweDBBLDB4QzIsCisgICAgMHgwMywweDMxLDB4QzIsMHgyOCwweEI5LDB4ODgs
MHgwMCwweDAwLDB4MjQsMHgzOSwweEMyLDB4MzAsMHg3NywweEYyLDB4QTIsMHhFMiwKKyAgICAw
eDI0LDB4MzEsMHhDMiwweDMwLDB4N0YsMHhFRiwweEFFLDB4QTIsMHhFMywweDMwLDB4QzIsMHgz
MCwweERCLDB4QUIsMHgyMCwweDgyLAorICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHhGRiwweEY3
LDB4QTgsMHhDQSwweDI0LDB4MzksMHhDMiwweDMwLDB4N0MsMHhGNSwweDc1LDB4RkQsCisgICAg
MHgyMywweDMxLDB4RTMsMHgzMCwweDVELDB4REIsMHg3QiwweDVELDB4MDMsMHgzMSwweEMyLDB4
MjgsMHhCRiwweDJFLDB4RkYsMHhGNSwKKyAgICAweDAzLDB4MzEsMHhBMiwweDI4LDB4RkUsMHhC
OCwweEZBLDB4QTksMHhFMywweDMwLDB4QTIsMHgyOCwweEFBLDB4RUEsMHg0MCwweDgyLAorICAg
IDB4RTMsMHgzMCwweEMyLDB4MjgsMHg5RCwweDlGLDB4QUQsMHgwRCwweEEyLDB4MzAsMHhFMyww
eDI4LDB4QjksMHg3OSwweDdELDB4RkQsCisgICAgMHhFMywweDI4LDB4ODIsMHgyMCwweERGLDB4
OUUsMHg4OCwweDA4LDB4QzMsMHgyOCwweDgxLDB4MjAsMHg1QiwweEYzLDB4RTIsMHhBOCwKKyAg
ICAweEMzLDB4MjgsMHg4MiwweDIwLDB4RkIsMHhGRiwweEZBLDB4NkIsMHhDMiwweDI4LDB4ODIs
MHgyMCwweDdFLDB4NUYsMHg3RSwweDdBLAorICAgIDB4QTIsMHgyOCwweDgyLDB4MjAsMHg1NSww
eEQ5LDB4QjYsMHhBQSwweDYxLDB4MjgsMHhBMiwweDIwLDB4QkYsMHhBNSwweEJELDB4RkQsCisg
ICAgMHhBMiwweDIwLDB4NjEsMHgyMCwweEI4LDB4QkYsMHhERSwweEY4LDB4QTIsMHgyOCwweDgy
LDB4MjAsMHgyQSwweEYzLDB4NTksMHhENSwKKyAgICAweEEyLDB4MjgsMHg4MiwweDIwLDB4QUUs
MHg5NywweERGLDB4N0IsMHhBMiwweDI4LDB4ODIsMHgyMCwweDBCLDB4MEQsMHgwMiwweEMyLAor
ICAgIDB4RTMsMHgzMCwweDgyLDB4MjgsMHgyRiwweDNGLDB4M0QsMHgzRCwweDIzLDB4MzksMHhD
MiwweDMwLDB4N0EsMHhFQiwweEZBLDB4RjgsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEFF
LDB4QkYsMHhGNywweEUwLDB4RTMsMHgzMCwweEEyLDB4MjgsMHg4MiwweDNFLDB4MkYsMHgyRiwK
KyAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4REYsMHg5RiwweDdFLDB4RkMsMHhFMiwweDMwLDB4
QzEsMHgzMCwweDgwLDB4ODAsMHhBNywweDU2LAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhB
QiwweEFBLDB4QUIsMHgwRiwweDIzLDB4MzksMHhDMiwweDMwLDB4REYsMHhCRSwweEVBLDB4RTgs
CisgICAgMHgyMywweDM5LDB4QzIsMHgzMCwweDIzLDB4MDksMHhBQiwweEY3LDB4NDQsMHg0MSww
eEUyLDB4MzgsMHgzQSwweEJFLDB4RkUsMHhCRCwKKyAgICAweDY0LDB4NDksMHgyNCwweDQxLDB4
OEUsMHhBRCwweEFELDB4QTUsMHg2NCwweDQxLDB4MjQsMHg0MSwweEJGLDB4OEIsMHg4OCwweEMw
LAorICAgIDB4NjQsMHg0MSwweEUzLDB4MzAsMHhGRSwweDdDLDB4N0EsMHhGMCwweDI0LDB4Mzks
MHhDMiwweDMwLDB4NjIsMHhGRiwweDc3LDB4NzcsCisgICAgMHhFMiwweDMwLDB4ODIsMHgyOCww
eDJFLDB4QUUsMHhFNywweEZFLDB4RTMsMHgzMCwweEExLDB4MjgsMHhENywweEJELDB4RUIsMHgw
QiwKKyAgICAweDAzLDB4MzksMHhBMiwweDI4LDB4QUQsMHg4QiwweEJGLDB4Q0IsMHhFMywweDMw
LDB4QTIsMHgyOCwweEFGLDB4MkUsMHgzQSwweDlDLAorICAgIDB4QzIsMHgzMCwweDgyLDB4Mjgs
MHhFRSwweEZDLDB4QjgsMHhCQSwweEEyLDB4MjgsMHg4MSwweDIwLDB4MzAsMHhGOCwweDNFLDB4
MDYsCisgICAgMHhDMiwweDI4LDB4ODEsMHgyMCwweEFBLDB4MUIsMHhERSwweDJFLDB4QzIsMHgy
OCwweDYxLDB4MjgsMHhFOCwweDJBLDB4QTAsMHhBOCwKKyAgICAweDAyLDB4MzEsMHhBMiwweDI4
LDB4MzUsMHhGNSwweEZGLDB4RkYsMHhFMiwweDMwLDB4QTIsMHgyOCwweDdBLDB4NUEsMHg3OCww
eDVBLAorICAgIDB4QzIsMHgyOCwweDgxLDB4MjAsMHhCNiwweEVFLDB4QUYsMHgwRCwweDAzLDB4
MzEsMHg4MiwweDI4LDB4RkYsMHhCRSwweEVCLDB4OEQsCisgICAgMHgyMywweDM5LDB4QzIsMHgz
MCwweDJELDB4MEYsMHg4OSwweEFGLDB4MjMsMHgzOSwweEUzLDB4MzAsMHhDMCwweDgwLDB4MDEs
MHgwRiwKKyAgICAweDIzLDB4MzksMHhFMiwweDMwLDB4NTcsMHhGQSwweEZFLDB4MjgsMHg0NCww
eDQxLDB4RTIsMHgzOCwweDdCLDB4RTgsMHg4MywweDgyLAorICAgIDB4MjMsMHg0MSwweEUyLDB4
MzgsMHg2RiwweEZBLDB4MjIsMHgwMCwweDY0LDB4NDksMHgwMiwweDM5LDB4Q0QsMHhCRCwweEJG
LDB4RkYsCisgICAgMHg4NSwweDUxLDB4MjMsMHg0MSwweEE5LDB4OEIsMHg4QiwweDJBLDB4ODUs
MHg1MSwweDY0LDB4NDksMHgwOSwweENBLDB4RjIsMHgyRSwKKyAgICAweDA2LDB4NjIsMHg2NCww
eDUxLDB4QUYsMHgzOSwweEFELDB4MkYsMHhDOSwweDdBLDB4MjYsMHg2MiwweEJELDB4QTUsMHhB
RCwweDJELAorICAgIDB4RTksMHg3QSwweEE5LDB4NzIsMHgyNSwweDIxLDB4QUEsMHhBQywweDBB
LDB4ODMsMHhBOSwweDdBLDB4MjgsMHhBMiwweDVBLDB4NkEsCisgICAgMHgwQSwweDgzLDB4Qzks
MHg3QSwweEIwLDB4QTEsMHhCNSwweEJELDB4MEEsMHg4MywweEM5LDB4N0EsMHhBQiwweEZGLDB4
RUIsMHg3RiwKKyAgICAweDBBLDB4ODMsMHhDOSwweDdBLDB4RUMsMHgwMiwweDIzLDB4MkQsMHgy
QiwweDgzLDB4QzksMHg3QSwweEFGLDB4RkYsMHhBMCwweEEwLAorICAgIDB4MkIsMHg4MywweEE5
LDB4N0EsMHg4QiwweEZBLDB4N0EsMHhGMCwweDBBLDB4ODMsMHhDOSwweDdBLDB4NkUsMHhCQSww
eDAxLDB4MjksCisgICAgMHgyQSwweDgzLDB4RUEsMHg4MiwweDhELDB4OEQsMHhBMiwweEYwLDB4
NkMsMHg4QiwweDBBLDB4ODMsMHgwOSwweEI1LDB4QkQsMHhCNywKKyAgICAweEFELDB4OTMsMHgw
QSwweDgzLDB4MEEsMHhBRiwweDlGLDB4RDcsMHg2RiwweEFDLDB4MEEsMHg4MywweDAyLDB4QUYs
MHhGRiwweEZELAorICAgIDB4RDAsMHhCQywweDRCLDB4OEIsMHgwMCwweDJBLDB4QUYsMHhGNSww
eDEwLDB4QkQsMHgwRCwweEE0LDB4MjAsMHhBOCwweENCLDB4RjUsCisgICAgMHhDRiwweEI0LDB4
NEUsMHhBQywweDVDLDB4N0MsMHhGQSwweDdGLDB4OEYsMHhCNCwweDRFLDB4QUMsMHg2OSwweEIx
LDB4MkYsMHhENywKKyAgICAweEFGLDB4QjQsMHg0RSwweEFDLDB4N0YsMHg5QiwweEQzLDB4QjMs
MHg4RiwweEI0LDB4NEUsMHhBQywweEQ3LDB4N0YsMHhCRSwweDg4LAorICAgIDB4OEYsMHhCNCww
eDRFLDB4QUMsMHg1NywweDNBLDB4OEEsMHhDQSwweDZFLDB4QUMsMHgyRCwweEE0LDB4QjYsMHhC
QywweDJDLDB4MkEsCisgICAgMHg4RiwweEFDLDB4NEUsMHhBQywweDVFLDB4N0YsMHg2QiwweEFG
LDB4QUUsMHhBQywweDRFLDB4QUMsMHg1RCwweEZELDB4N0QsMHhGRSwKKyAgICAweDhGLDB4QjQs
MHgyRCwweEE0LDB4QkEsMHhCOSwweEFCLDB4QTAsMHhBRiwweEFDLDB4NEQsMHhBQywweDlGLDB4
RjUsMHhGNywweEZGLAorICAgIDB4NkUsMHhCNCwweDRFLDB4QTQsMHgyQSwweEVBLDB4RjgsMHhG
OCwweDhGLDB4QUMsMHg0RSwweEFDLDB4NUUsMHg1RCwweEY5LDB4NkEsCisgICAgMHgyMywweDQ5
LDB4QzIsMHg0MCwweEZFLDB4QkEsMHhGRSwweEU3LDB4MDIsMHg0MSwweEMyLDB4MzgsMHhCRiww
eEVFLDB4QkYsMHhCQSwKKyAgICAweDAzLDB4NDEsMHhFMiwweDQwLDB4MEIsMHgwMSwweDgxLDB4
QUEsMHgyMywweDQxLDB4RTIsMHg0MCwweDI3LDB4QjksMHgwRiwweEZELAorICAgIDB4MjMsMHg0
OSwweEUyLDB4NDAsMHhCRiwweDJGLDB4ODcsMHgzOSwweDIzLDB4NDksMHhFMiwweDM4LDB4RTgs
MHg1OCwweERGLDB4OTYsCisgICAgMHgyMywweDQxLDB4QzIsMHg0MCwweEI5LDB4QUIsMHhCQSww
eEI4LDB4MDMsMHg0MSwweEMyLDB4MzgsMHhBQiwweDdGLDB4RDgsMHg1QywKKyAgICAweDAzLDB4
NDEsMHhDMiwweDM4LDB4OEIsMHhDMSwweEYzLDB4NUUsMHgwMywweDQxLDB4QTEsMHgzOCwweEFG
LDB4QTgsMHgwMiwweDJGLAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhFRiwweEEyLDB4NjAs
MHhBQSwweDAzLDB4NDEsMHhDMiwweDM4LDB4MzcsMHg4MiwweEMzLDB4QUYsCisgICAgMHgwMyww
eDQxLDB4QzIsMHgzOCwweDNFLDB4RkEsMHhGOSwweEJGLDB4MDMsMHg0MSwweEMyLDB4MzgsMHhD
MiwweDY4LDB4NEUsMHhGRiwKKyAgICAweDAyLDB4NDEsMHhBMSwweDM4LDB4M0QsMHhBRSwweEFF
LDB4QUEsMHgwMywweDQxLDB4QzIsMHgzOCwweDAyLDB4QjIsMHhBRCwweDhFLAorICAgIDB4MDMs
MHg0MSwweEUyLDB4MzgsMHg3RiwweDdGLDB4RUQsMHhBRCwweDAyLDB4NDEsMHhDMSwweDM4LDB4
RTksMHgzOCwweEYyLDB4RUIsCisgICAgMHhFMiwweDQwLDB4QzIsMHgzOCwweERBLDB4RjAsMHgw
MiwweDBCLDB4MDIsMHg0MSwweEMyLDB4MzgsMHhFRSwweEY3LDB4NUUsMHg5QSwKKyAgICAweEUy
LDB4NDAsMHhDMiwweDM4LDB4MDgsMHgyQywweDFCLDB4MDIsMHhFMiwweDQwLDB4QzIsMHgzOCww
eDI3LDB4QTIsMHhFMCwweENBLAorICAgIDB4MDMsMHg0OSwweEUyLDB4MzgsMHhCNiwweEI3LDB4
QkYsMHhBRCwweDQ2LDB4NkEsMHg0MywweDQ5LDB4MEIsMHgwOSwweDBELDB4MEQsCisgICAgMHg4
NiwweDcyLDB4MjUsMHg2QSwweEZFLDB4RkUsMHg2QSwweDYwLDB4MjYsMHg2QSwweEU1LDB4NjEs
MHhGOCwweDdDLDB4NzAsMHgxMiwKKyAgICAweDA1LDB4NjIsMHgyMywweDQxLDB4NzAsMHhFMCww
eEU4LDB4QTAsMHgyMywweDQxLDB4QzIsMHgzMCwweEFBLDB4OTgsMHhEOCwweEY4LAorICAgIDB4
MDMsMHgzOSwweEUyLDB4MzAsMHhFRiwweEVBLDB4N0EsMHg1QiwweDAzLDB4MzksMHhFMiwweDMw
LDB4QUIsMHgyRCwweDM1LDB4OTUsCisgICAgMHgyNCwweDM5LDB4QzMsMHgzMCwweEZFLDB4OUUs
MHhGMiwweEZBLDB4MDMsMHgzOSwweEUzLDB4MzAsMHhFOCwweDZFLDB4RTMsMHhFRSwKKyAgICAw
eDIzLDB4MzksMHhFMywweDM4LDB4MkIsMHhCRCwweEVGLDB4RkQsMHgyMywweDM5LDB4RTIsMHgz
OCwweEE4LDB4MDgsMHhCRSwweDdGLAorICAgIDB4MjMsMHgzOSwweEUyLDB4MzgsMHgwMiwweDBF
LDB4QUYsMHhBQiwweDQ0LDB4MzksMHhFMywweDMwLDB4Q0EsMHg4QSwweEY3LDB4QkUsCisgICAg
MHg0NCwweDQxLDB4RTMsMHgzMCwweEUyLDB4QUEsMHgzQSwweEJGLDB4NjQsMHg0MSwweEUzLDB4
MzAsMHg3RCwweDdCLDB4RjAsMHhFMiwKKyAgICAweDQ0LDB4NDEsMHhFMywweDMwLDB4RjUsMHg1
NSwweEZCLDB4QTIsMHgyNCwweDM5LDB4RTMsMHgzMCwweDJCLDB4ODcsMHg1QiwweDdCLAorICAg
IDB4MjQsMHgzOSwweEUzLDB4MzAsMHhBMCwweEE4LDB4RUIsMHhCOSwweDI0LDB4MzksMHhFMyww
eDMwLDB4N0EsMHhGQSwweEJFLDB4QjIsCisgICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweEU3LDB4
RkUsMHhCQSwweEJBLDB4MjMsMHgzOSwweEUzLDB4MzAsMHgxRiwweEJCLDB4QTIsMHg4MCwKKyAg
ICAweDQ0LDB4MzksMHhFMywweDMwLDB4RkMsMHhERiwweEQ1LDB4RkIsMHgyNCwweDM5LDB4RTMs
MHgzMCwweDgyLDB4QUEsMHhCRCwweEFFLAorICAgIDB4MjMsMHgzOSwweEUyLDB4MzAsMHg4QSww
eDNBLDB4QUIsMHhFRCwweDI0LDB4MzksMHhFMywweDMwLDB4N0YsMHhGQywweEZDLDB4RkUsCisg
ICAgMHgyNCwweDM5LDB4QzIsMHgzMCwweDRCLDB4OEEsMHg4QSwweEFFLDB4MDMsMHgzOSwweEUz
LDB4MzAsMHg1OSwweDgyLDB4MDYsMHgyNSwKKyAgICAweDI0LDB4MzksMHhDMiwweDI4LDB4NUIs
MHhGQiwweEEyLDB4RTIsMHgwMywweDMxLDB4QzIsMHgyOCwweEY1LDB4RkYsMHhFRSwweEE4LAor
ICAgIDB4RTMsMHgzMCwweEMyLDB4MjgsMHhCQSwweEVBLDB4RTcsMHhBOCwweDAzLDB4MzEsMHhD
MiwweDI4LDB4NEIsMHhCRCwweEI1LDB4QUYsCisgICAgMHgwMywweDMxLDB4QzIsMHgyOCwweEFG
LDB4REUsMHg5NCwweEY4LDB4MDMsMHgzMSwweEMzLDB4MjgsMHg1QSwweEZBLDB4RkUsMHhCRSwK
KyAgICAweDAzLDB4MzEsMHhDMywweDI4LDB4NzUsMHg1NSwweERFLDB4NkIsMHhFMywweDI4LDB4
QTIsMHgyMCwweERFLDB4QkUsMHhCQSwweEFBLAorICAgIDB4QzMsMHgyOCwweDgyLDB4MjAsMHg4
QSwweEUwLDB4NDAsMHg4MCwweEMyLDB4MjgsMHg4MiwweDIwLDB4N0EsMHhBQSwweEFBLDB4MzAs
CisgICAgMHhDMiwweDI4LDB4QTIsMHgyMCwweDdELDB4MzUsMHhBQiwweEVDLDB4QzMsMHgyOCww
eDgyLDB4MjAsMHg1NywweERDLDB4RDgsMHg3QiwKKyAgICAweEMzLDB4MjgsMHg4MiwweDIwLDB4
NUUsMHg1RiwweEZCLDB4MkEsMHhDMiwweDI4LDB4NjIsMHgxOCwweEFGLDB4QUIsMHhFQSwweEE4
LAorICAgIDB4QTIsMHgyOCwweDYyLDB4MjAsMHgzQSwweEY4LDB4QkUsMHhCRSwweEEyLDB4Mjgs
MHg4MiwweDIwLDB4QTAsMHhFRSwweEVGLDB4REYsCisgICAgMHhDMywweDMwLDB4ODEsMHgyMCww
eDBCLDB4MkIsMHhCRiwweEVELDB4MDMsMHgzMSwweEEyLDB4MjgsMHg4MCwweDIyLDB4RkIsMHg1
NSwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4QzAsMHhDMCwweEUzLDB4QTUsMHhFMywweDMw
LDB4QTIsMHgyOCwweDlGLDB4RkIsMHg2QiwweEVFLAorICAgIDB4MDMsMHgzOSwweEEyLDB4Mjgs
MHgyQiwweDJGLDB4QUQsMHhFRiwweDAzLDB4MzksMHhDMiwweDMwLDB4RkEsMHg4QSwweDhCLDB4
QUIsCisgICAgMHgwMywweDM5LDB4RTMsMHgzMCwweEZELDB4QUUsMHgyMywweDAyLDB4MDMsMHgz
OSwweEEyLDB4MjgsMHhBMiwweEVBLDB4RUEsMHg3RSwKKyAgICAweEMyLDB4MzAsMHg4MSwweDI4
LDB4MDgsMHg4QSwweEVCLDB4RUEsMHgwMywweDM5LDB4QTEsMHgzMCwweEFBLDB4MkYsMHhFQiww
eEFELAorICAgIDB4NDQsMHg0MSwweEMyLDB4MzAsMHgwMiwweDJCLDB4RUYsMHhENywweDY1LDB4
NDksMHhFMiwweDMwLDB4QTAsMHhBMiwweEFGLDB4RDUsCisgICAgMHg2NSwweDQ5LDB4MDMsMHgz
OSwweEYyLDB4RjIsMHg4QiwweEU5LDB4MjQsMHg0MSwweEEyLDB4MzAsMHg3MiwweEU4LDB4RTgs
MHhGQSwKKyAgICAweEUzLDB4MzAsMHg4MiwweDI4LDB4RkUsMHhERiwweEZBLDB4QjgsMHhFMyww
eDMwLDB4ODEsMHgyOCwweDA5LDB4QUYsMHhCQiwweEFFLAorICAgIDB4MDMsMHgzOSwweEEyLDB4
MjgsMHg4QiwweEJCLDB4RjYsMHhCRiwweDAzLDB4MzksMHhBMiwweDI4LDB4RkUsMHhBRSwweEZB
LDB4NzIsCisgICAgMHhDMiwweDMwLDB4ODIsMHgyOCwweEZFLDB4RUMsMHg5OCwweEY4LDB4QzIs
MHgzMCwweDgxLDB4MjgsMHgzNywweEY2LDB4RTIsMHhBMCwKKyAgICAweEUyLDB4MzAsMHhBMiww
eDI4LDB4QTYsMHhBQiwweDg5LDB4QUQsMHhFMiwweDMwLDB4QTEsMHgyOCwweEY1LDB4RjUsMHhF
RSwweEE4LAorICAgIDB4RTIsMHgzMCwweDgyLDB4MjgsMHhCOSwweEVBLDB4QkEsMHgwMiwweEUz
LDB4MzAsMHhBMSwweDI4LDB4NUEsMHhCMywweEVBLDB4RUEsCisgICAgMHhDMiwweDI4LDB4ODEs
MHgyOCwweDA1LDB4QUYsMHhCRiwweEJFLDB4MjMsMHgzOSwweEMyLDB4MjgsMHgyNSwweEY1LDB4
NUQsMHhENywKKyAgICAweDI0LDB4MzksMHhDMywweDMwLDB4MzYsMHhBQiwweEU5LDB4RUUsMHgy
MywweDM5LDB4QzIsMHgzMCwweDBGLDB4RjksMHg1RiwweEVGLAorICAgIDB4MjMsMHgzOSwweEUy
LDB4MzAsMHgzOCwweDBELDB4MkIsMHgwMywweDY0LDB4NDksMHgyMywweDQxLDB4QjUsMHgwNSww
eEE1LDB4RDUsCisgICAgMHg2MywweDQ5LDB4MDMsMHgzOSwweEZGLDB4RkYsMHhFRiwweEZDLDB4
NDQsMHg0OSwweDAzLDB4NDEsMHhGNSwweDA1LDB4RkQsMHg5NywKKyAgICAweEE1LDB4NTEsMHgy
MywweDQxLDB4MkYsMHgyRiwweDJELDB4MzUsMHg0NywweDZBLDB4ODQsMHg0OSwweEY1LDB4QkQs
MHhBNywweDBGLAorICAgIDB4NjgsMHg2QSwweEM1LDB4NTksMHhGNSwweDJELDB4MDIsMHgwOCww
eEM5LDB4N0EsMHg2OCwweDZBLDB4MUQsMHg5RCwweEE5LDB4OEYsCisgICAgMHhFOSwweDdBLDB4
QTksMHg3MiwweEI2LDB4MjcsMHhDRCwweDBCLDB4MEEsMHg4MywweEM5LDB4N0EsMHg1QSwweDYy
LDB4NTksMHg1NSwKKyAgICAweEU5LDB4N0EsMHhBOSwweDdBLDB4OEEsMHg4RSwweEFBLDB4RkUs
MHgwQSwweDgzLDB4QTksMHg3MiwweDNELDB4QUYsMHgwMywweEI4LAorICAgIDB4MEEsMHg4Myww
eEE5LDB4NzIsMHg4OSwweDhFLDB4QkIsMHhFQiwweDJBLDB4ODMsMHhDOCwweDdBLDB4MjAsMHhF
QSwweEFCLDB4MkQsCisgICAgMHg0QiwweDhCLDB4RUEsMHg3QSwweEUzLDB4RUUsMHhERSwweEZB
LDB4MkEsMHg4MywweEVBLDB4N0EsMHhCRiwweEJFLDB4OEIsMHhBQiwKKyAgICAweDRCLDB4OEIs
MHhFQSwweDdBLDB4QkYsMHg4RiwweEVFLDB4NTcsMHgyQSwweDgzLDB4RTksMHg3QSwweDI4LDB4
MkEsMHhFRSwweEI3LAorICAgIDB4NEEsMHg4QiwweEU5LDB4N0EsMHhGOCwweEZCLDB4RjMsMHhG
QiwweDRCLDB4OEIsMHhFQSwweDdBLDB4MDEsMHhCQiwweDNBLDB4QjgsCisgICAgMHg2QiwweDhC
LDB4MEEsMHg4MywweDAyLDB4RkUsMHhENywweERFLDB4RUMsMHg5QiwweDJBLDB4ODMsMHgwQSww
eEJCLDB4OUQsMHg3NSwKKyAgICAweDJELDB4QTQsMHgyOSwweDgzLDB4MDAsMHgyQSwweEZGLDB4
NTUsMHg0RSwweEFDLDB4NkIsMHg4QiwweDAwLDB4MDAsMHgyQiwweERELAorICAgIDB4OEYsMHhC
NCwweENELDB4OUIsMHgwMCwweDBBLDB4MEEsMHhBOSwweEFGLDB4QjQsMHg0RSwweEFDLDB4RUUs
MHg4QSwweEFBLDB4N0YsCisgICAgMHg4RiwweEI0LDB4NkUsMHhBQywweDdELDB4QUQsMHhBMiww
eDZFLDB4OEYsMHhCNCwweDJELDB4QTQsMHhEQSwweEFBLDB4QTgsMHhCMiwKKyAgICAweDhGLDB4
QjQsMHg2RSwweEFDLDB4RDYsMHhCQywweEU1LDB4M0UsMHg4RiwweEI0LDB4NEUsMHhBQywweDBB
LDB4QUUsMHg4RSwweEE0LAorICAgIDB4QUYsMHhCNCwweDZFLDB4QUMsMHhGRiwweDc1LDB4RTcs
MHhGQSwweEFGLDB4QjQsMHg0RCwweEFDLDB4MzcsMHhBNywweDJBLDB4QUEsCisgICAgMHhBRiww
eEI0LDB4NEQsMHhBQywweEY3LDB4NkUsMHgyOCwweDI4LDB4RDAsMHhCNCwweDZFLDB4QUMsMHg3
NywweDdFLDB4RUEsMHhBQSwKKyAgICAweDIzLDB4NDEsMHhFMiwweDQwLDB4NzUsMHhCRCwweENC
LDB4QTIsMHgyMywweDQxLDB4RTIsMHg0MCwweDdGLDB4RUYsMHg2QywweEZCLAorICAgIDB4MDMs
MHg0MSwweEUyLDB4NDAsMHg0QiwweEYzLDB4NTMsMHg3MywweDIzLDB4NDksMHhDMiwweDM4LDB4
RkYsMHhGRiwweEZGLDB4M0UsCisgICAgMHgyMywweDQxLDB4QzIsMHgzOCwweDJCLDB4N0YsMHhF
QSwweEVGLDB4MjMsMHg0MSwweEMyLDB4NDAsMHgzQywweEFGLDB4RUQsMHhBRCwKKyAgICAweDIz
LDB4NDksMHhDMiwweDM4LDB4RkUsMHhGRiwweEVCLDB4RTIsMHhFMiwweDQwLDB4QzIsMHgzOCww
eDlDLDB4QUMsMHhFQSwweDU2LAorICAgIDB4MDIsMHg0MSwweEMyLDB4MzgsMHhENSwweEZELDB4
RUYsMHgyRiwweDAzLDB4NDEsMHhBMSwweDMwLDB4MzUsMHhCRiwweDJCLDB4MEEsCisgICAgMHgw
MywweDQxLDB4RTIsMHgzOCwweEVDLDB4RkUsMHhGRSwweEY4LDB4MjMsMHg0MSwweEMyLDB4Mzgs
MHhCRCwweDM3LDB4REUsMHhCQiwKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4RUYsMHg4QSww
eEEyLDB4RTgsMHhFMiwweDQwLDB4QzIsMHgzOCwweDI3LDB4OEYsMHgwMiwweDAwLAorICAgIDB4
RTIsMHg0MCwweEMyLDB4MzgsMHgyMiwweEFBLDB4RkUsMHhFRSwweDAzLDB4NDEsMHhDMiwweDM4
LDB4QkIsMHhFMiwweERGLDB4NTUsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDAyLDB4Q0Es
MHg1NSwweDc5LDB4MDMsMHg0MSwweEExLDB4MzAsMHg4QSwweEZGLDB4QkYsMHhBQSwKKyAgICAw
eDAzLDB4NDEsMHhFMiwweDM4LDB4NTcsMHhFQywweEQyLDB4NUEsMHgwMywweDQxLDB4QzIsMHgz
OCwweEIyLDB4ODIsMHgwOSwweDJELAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHg4QiwweEFG
LDB4Q0UsMHg2MiwweEUyLDB4NDAsMHhBMiwweDM4LDB4QzIsMHhFMCwweEM4LDB4OUEsCisgICAg
MHgwMiwweDQxLDB4QzIsMHgzOCwweDBELDB4OTUsMHhCRiwweDJGLDB4QTcsMHg3QSwweDQzLDB4
NDksMHgyOSwweEFELDB4MkQsMHgyRCwKKyAgICAweDg2LDB4NzIsMHg0NiwweDZBLDB4NkEsMHg5
MiwweEUyLDB4RjYsMHgyNiwweDZBLDB4MDUsMHg2MiwweDkwLDB4RDIsMHg3MCwweDUwLAorICAg
IDB4MDUsMHg2MiwweDYzLDB4NDksMHg2MCwweDc4LDB4RTAsMHg2MCwweDYzLDB4NDksMHhDMiww
eDMwLDB4N0IsMHg3RSwweEZDLDB4N0UsCisgICAgMHhFMiwweDM4LDB4QzIsMHgzMCwweEJBLDB4
RUYsMHg3NiwweEEyLDB4MDMsMHgzOSwweEMyLDB4MzAsMHg5NywweEZFLDB4QUQsMHhBNywKKyAg
ICAweDIzLDB4MzksMHhFMiwweDM4LDB4NTUsMHg3OSwweENCLDB4NkEsMHgyMywweDM5LDB4RTIs
MHgzMCwweDVELDB4RkUsMHgyRiwweEFBLAorICAgIDB4MjMsMHgzOSwweEUzLDB4MzgsMHhFRiww
eEFGLDB4MkQsMHhFRiwweDIzLDB4MzksMHhDMiwweDM4LDB4NjMsMHhBQSwweEFBLDB4QUUsCisg
ICAgMHg0MywweDQxLDB4MDMsMHgzOSwweEY5LDB4RUYsMHg3OCwweEZFLDB4MjQsMHgzOSwweDAz
LDB4MzksMHhCQywweDI3LDB4QTUsMHg5NSwKKyAgICAweDQ0LDB4NDEsMHgwMywweDM5LDB4MDYs
MHgzRiwweEJFLDB4RUEsMHg2NSwweDQxLDB4MDMsMHgzOSwweEUzLDB4QUEsMHgyRiwweEZBLAor
ICAgIDB4NDQsMHg0MSwweDAzLDB4MzksMHhCQSwweEY4LDB4RkUsMHhFRSwweDQ0LDB4NDEsMHgw
MywweDMxLDB4N0IsMHhCQSwweEUzLDB4QTAsCisgICAgMHg0NCwweDM5LDB4MDMsMHgzMSwweDVE
LDB4OTIsMHgwMCwweDg4LDB4NDQsMHgzOSwweDAzLDB4MzEsMHg1RCwweDU3LDB4NTcsMHg3OCwK
KyAgICAweDI0LDB4MzksMHhFMiwweDMwLDB4QUEsMHhBQSwweEE3LDB4OUYsMHg0NCwweDM5LDB4
RTIsMHgzMCwweEEyLDB4QUEsMHhGRiwweERGLAorICAgIDB4MjMsMHgzOSwweDAzLDB4MzksMHhC
MiwweDIyLDB4QzEsMHg3OSwweDI0LDB4MzksMHhFMywweDM4LDB4RUEsMHg3OCwweDcwLDB4QTIs
CisgICAgMHgwMywweDM5LDB4QTIsMHgyOCwweDgyLDB4QTIsMHhBQywweEFBLDB4MjQsMHgzOSww
eEMzLDB4MzAsMHhCRiwweEZELDB4QkYsMHhBOCwKKyAgICAweDAzLDB4MzksMHhFMywweDMwLDB4
QUIsMHhCMCwweEEwLDB4QTAsMHgyMywweDM5LDB4RTMsMHgzMCwweEFELDB4QUYsMHhFRiwweEQ3
LAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHg4QSwweEFCLDB4REYsMHg1NywweDIzLDB4Mzks
MHhFMywweDMwLDB4RkUsMHhGRiwweEEzLDB4QkYsCisgICAgMHgwMywweDMxLDB4RTMsMHgzMCww
eERBLDB4NzgsMHg1RSwweEZFLDB4MDMsMHgzMSwweEEyLDB4MjgsMHhBQSwweEVBLDB4QUEsMHgw
OCwKKyAgICAweDI0LDB4MzksMHhDMiwweDI4LDB4N0YsMHg3RiwweERCLDB4NjIsMHgyMywweDMx
LDB4RTMsMHgzMCwweEY1LDB4N0YsMHhGRiwweDczLAorICAgIDB4MjQsMHgzMSwweEMyLDB4Mjgs
MHhFQywweEUyLDB4RUIsMHg3RiwweEUzLDB4MjgsMHhDMywweDI4LDB4RDcsMHhCRSwweDVFLDB4
NTcsCisgICAgMHgwNCwweDMxLDB4QzMsMHgyOCwweDdGLDB4NUUsMHhFQiwweDJDLDB4RTMsMHgy
OCwweEMzLDB4MjgsMHg1RiwweEM4LDB4NjIsMHg4MCwKKyAgICAweEUzLDB4MjgsMHhBMiwweDIw
LDB4QkYsMHg4RSwweDhBLDB4ODIsMHhFMywweDI4LDB4QTIsMHgyMCwweDZCLDB4QjIsMHhGMiww
eEFBLAorICAgIDB4QzIsMHgyOCwweDgyLDB4MjAsMHhBQiwweEYwLDB4QkEsMHhBOCwweEMyLDB4
MjgsMHhBMSwweDI4LDB4NkUsMHg1MywweEI3LDB4MDIsCisgICAgMHhDMiwweDI4LDB4ODIsMHgy
MCwweDdGLDB4NzYsMHhGRSwweDZFLDB4QzIsMHgyOCwweDgyLDB4MjAsMHhENSwweEY1LDB4QkYs
MHhBQiwKKyAgICAweEMzLDB4MjgsMHg4MiwweDIwLDB4NkYsMHhGQSwweEZFLDB4NUEsMHhBMiww
eDI4LDB4ODIsMHgyMCwweEJGLDB4QUYsMHhGNiwweEE1LAorICAgIDB4QzIsMHgyOCwweDgyLDB4
MjAsMHgwRSwweEZCLDB4RkEsMHhENSwweEMyLDB4MzAsMHhBMiwweDI4LDB4ODksMHgyQiwweDk3
LDB4NUIsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEJFLDB4QkMsMHhBRiwweDlCLDB4MDMs
MHgzMSwweEMyLDB4MzAsMHgyOSwweDI5LDB4MDUsMHhBQiwKKyAgICAweDAzLDB4MzksMHhFMyww
eDMwLDB4RkYsMHg3QywweEZFLDB4RkYsMHg0NCwweDQxLDB4ODEsMHgyOCwweDdGLDB4N0YsMHg3
QSwweEVDLAorICAgIDB4MDMsMHgzMSwweEEyLDB4MzAsMHg3RCwweEZELDB4RjUsMHhCRiwweEUy
LDB4MzAsMHhBMiwweDI4LDB4QTEsMHhBNywweEI3LDB4RkUsCisgICAgMHhFMywweDMwLDB4QTIs
MHgzMCwweEZGLDB4QkYsMHhBRSwweEUyLDB4ODIsMHgzOCwweEUzLDB4MzAsMHg3NywweEZELDB4
RjcsMHhCRiwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4QTIsMHhGMiwweDU5LDB4REQsMHhF
MiwweDMwLDB4QTEsMHgzMCwweEEwLDB4RjAsMHg1QSwweDZBLAorICAgIDB4QzIsMHgzMCwweDgx
LDB4MjgsMHhCOCwweDVDLDB4RkUsMHgwRiwweEUyLDB4MzAsMHhDMiwweDMwLDB4RjUsMHg2RCww
eEFELDB4QUIsCisgICAgMHhFMywweDMwLDB4QTIsMHgzMCwweDFBLDB4MEUsMHgwOCwweDJBLDB4
RTMsMHgzMCwweEMyLDB4MzAsMHg3QSwweDcyLDB4NDUsMHhDQSwKKyAgICAweEMyLDB4MzAsMHhB
MiwweDI4LDB4REYsMHg2NiwweEZGLDB4NDgsMHhDMiwweDI4LDB4QTIsMHgyOCwweDNCLDB4OEEs
MHg4QiwweEZFLAorICAgIDB4RTIsMHgzMCwweEEyLDB4MjgsMHgyRiwweEFELDB4NzUsMHgyOSww
eDIzLDB4MzksMHhDMiwweDI4LDB4RkYsMHhERiwweEI5LDB4QTIsCisgICAgMHgwMywweDM5LDB4
QzIsMHgyOCwweEFFLDB4N0UsMHhCOCwweDI4LDB4MjMsMHgzOSwweEMyLDB4MjgsMHg1RiwweDZB
LDB4QTgsMHhBMCwKKyAgICAweDAzLDB4MzEsMHhBMSwweDI4LDB4NzUsMHg1RiwweEJDLDB4QUEs
MHhFMywweDMwLDB4QTIsMHgyOCwweDJCLDB4OEIsMHhBQSwweDg4LAorICAgIDB4MDMsMHgzOSww
eEMzLDB4MzAsMHhBQSwweEJELDB4RkEsMHhCRSwweDQzLDB4NDEsMHhFMiwweDMwLDB4QjUsMHg5
NSwweEZGLDB4QUEsCisgICAgMHg0NCwweDQxLDB4MDIsMHgzOSwweENFLDB4ODAsMHhDQSwweEVC
LDB4NjQsMHg0OSwweDAzLDB4MzksMHhCRiwweENGLDB4N0IsMHg1NSwKKyAgICAweDQ0LDB4NDks
MHhFMiwweDM4LDB4QjgsMHhBQSwweEE1LDB4MzUsMHhBNSwweDUxLDB4MDMsMHg0MSwweDU1LDB4
NUQsMHhCQiwweDJBLAorICAgIDB4NjcsMHg2QSwweDIzLDB4NDEsMHhGNSwweEJELDB4QUYsMHgy
QSwweDY3LDB4NkEsMHhDNSwweDUxLDB4MjUsMHgyRiwweEFCLDB4MDAsCisgICAgMHhBOCwweDcy
LDB4NDcsMHg2QSwweEJELDB4M0YsMHhGRiwweEVGLDB4RTksMHg3QSwweDY3LDB4NzIsMHhBQiww
eDBGLDB4RTksMHhFRiwKKyAgICAweEM5LDB4N0EsMHg4OCwweDcyLDB4MDgsMHhBOCwweDJBLDB4
QkYsMHhDOSwweDdBLDB4QTksMHg3MiwweEM1LDB4NjEsMHhGQSwweDVDLAorICAgIDB4RUEsMHg3
QSwweDg5LDB4NzIsMHgyRiwweDNELDB4QTUsMHhBRiwweDBBLDB4ODMsMHhBOSwweDdBLDB4M0Es
MHhCOCwweEZBLDB4RkYsCisgICAgMHhFOSwweDdBLDB4QTgsMHg3QSwweDdBLDB4NDAsMHhFRSww
eDNGLDB4RTksMHg3QSwweEE5LDB4NzIsMHgwMSwweEVGLDB4QTQsMHhCOCwKKyAgICAweDBBLDB4
ODMsMHhDOSwweDdBLDB4OEYsMHhCNSwweEJGLDB4RkYsMHgyQSwweDgzLDB4QzksMHg3QSwweEFB
LDB4MkEsMHgwQiwweDI1LAorICAgIDB4MkEsMHg4MywweEM5LDB4N0EsMHg1RSwweEZDLDB4RUUs
MHhFMiwweDJBLDB4ODMsMHhFOSwweDdBLDB4NzYsMHhENSwweENELDB4QUQsCisgICAgMHgwQSww
eDgzLDB4RUEsMHg3QSwweEVBLDB4MDIsMHgzMiwweDVGLDB4MjksMHg4MywweEVBLDB4N0EsMHhE
OCwweEVDLDB4ODIsMHgwMywKKyAgICAweDRCLDB4OEIsMHhBOCwweDcyLDB4QTAsMHg4MCwweEEy
LDB4RkUsMHg0QiwweDhCLDB4QzksMHg3MiwweDJCLDB4M0UsMHgzRiwweEZELAorICAgIDB4NEEs
MHg4QiwweDBBLDB4ODMsMHhGQywweEVFLDB4RDUsMHhERCwweDhCLDB4OTMsMHhFOSwweDdBLDB4
MkIsMHhBQiwweEZGLDB4N0QsCisgICAgMHgwRCwweEE0LDB4MkEsMHg4MywweDBBLDB4QkQsMHhG
NSwweDU1LDB4NEUsMHhBQywweDJBLDB4OEIsMHgwMiwweEFCLDB4QkYsMHhGNSwKKyAgICAweDhG
LDB4QUMsMHhBQywweDkzLDB4MDAsMHg4QSwweEE5LDB4QjUsMHg4RiwweEFDLDB4NEUsMHhBQyww
eEE1LDB4RjUsMHhGRiwweDU1LAorICAgIDB4OEUsMHhCNCwweDRFLDB4QUMsMHhBQywweDhCLDB4
QjIsMHhGRiwweDhFLDB4QjQsMHg0RCwweEE0LDB4QkYsMHgxRCwweDA3LDB4QUUsCisgICAgMHhB
RiwweEI0LDB4NkUsMHhBQywweDlBLDB4MkEsMHgyQiwweDAyLDB4Q0YsMHhCQywweDZFLDB4QUMs
MHhGRSwweEZGLDB4OUYsMHhGNywKKyAgICAweEFGLDB4QjQsMHg4RiwweEFDLDB4MUIsMHgyRSww
eEUwLDB4QzAsMHhDRiwweEI0LDB4OEYsMHhCNCwweENBLDB4QzAsMHhBQiwweEYyLAorICAgIDB4
MjMsMHg0OSwweEMyLDB4MzgsMHhBQSwweEZFLDB4REQsMHhCRiwweDIzLDB4NDEsMHhFMiwweDQw
LDB4N0IsMHg3RiwweDlELDB4QTcsCisgICAgMHgwMywweDQxLDB4RTIsMHgzOCwweDk1LDB4OTIs
MHhFQSwweEEzLDB4MjMsMHg0MSwweEUyLDB4MzgsMHhEQSwweDdGLDB4NUEsMHg3OCwKKyAgICAw
eDAyLDB4NDEsMHhBMiwweDMwLDB4QUUsMHhBQSwweDJELDB4QUUsMHgwMywweDQxLDB4QTEsMHgz
MCwweDBBLDB4QUMsMHhEQSwweEZBLAorICAgIDB4MDMsMHg0MSwweEExLDB4MzAsMHhCMCwweEEy
LDB4QUYsMHhBRiwweDAzLDB4NDEsMHhBMSwweDMwLDB4RUYsMHhGRSwweEJBLDB4MDgsCisgICAg
MHgwMywweDQxLDB4QzIsMHgzOCwweEFCLDB4RUYsMHhBRiwweDM3LDB4MDMsMHg0MSwweEEyLDB4
MzgsMHg0OCwweEJBLDB4MkIsMHgyMCwKKyAgICAweDAzLDB4NDEsMHhFMiwweDM4LDB4QjMsMHg1
QSwweDc2LDB4QUUsMHgwMywweDQxLDB4QzIsMHgzOCwweEIwLDB4QjgsMHg2RSwweDdFLAorICAg
IDB4MDMsMHg0MSwweEUyLDB4MzgsMHg2MiwweENCLDB4ODUsMHhBRCwweDI0LDB4NDEsMHhDMiww
eDM4LDB4RDcsMHhENiwweDdGLDB4RkIsCisgICAgMHhFMiwweDM4LDB4QzIsMHgzOCwweEZDLDB4
MTYsMHgxNSwweDJCLDB4MjMsMHg0MSwweEMyLDB4MzgsMHhGRiwweDhCLDB4QkUsMHg1RiwKKyAg
ICAweDAzLDB4NDEsMHhBMSwweDMwLDB4RTIsMHhBQiwweERFLDB4QUYsMHgwMywweDQxLDB4RTIs
MHgzOCwweEMzLDB4NjMsMHg1MCwweERDLAorICAgIDB4MDIsMHg0MSwweEUyLDB4MzgsMHg1Riww
eDdELDB4MzgsMHhCOSwweDAzLDB4NDEsMHhDMiwweDM4LDB4QjMsMHhEQiwweDlBLDB4QUEsCisg
ICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEYwLDB4QzIsMHhFRSwweERFLDB4MDMsMHg0MSwweEMy
LDB4MzgsMHg1NSwweEVELDB4MkYsMHhBRiwKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4RjMs
MHhFMywweEVBLDB4RkEsMHg2NywweDcyLDB4MDIsMHg0MSwweDJELDB4MkQsMHgyRCwweDJELAor
ICAgIDB4ODcsMHg3MiwweDA1LDB4NjIsMHhBOCwweEUwLDB4NzgsMHhGQSwweDQ2LDB4NzIsMHhF
NSwweDYxLDB4REYsMHhCNiwweEZGLDB4RkMsCisgICAgMHgwNSwweDYyLDB4NDMsMHg0OSwweEUw
LDB4RTAsMHg2MCwweEUwLDB4NjMsMHg0MSwweEUyLDB4MzgsMHg3RiwweDVGLDB4NUUsMHhEQywK
KyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4MkEsMHgyQSwweDhBLDB4MjcsMHgwMywweDM5LDB4
RTMsMHgzMCwweDdCLDB4RTIsMHhCQywweEFFLAorICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHgx
RSwweDZFLDB4NzMsMHg1OCwweDIzLDB4MzksMHhFMiwweDMwLDB4QzAsMHhDQiwweEUzLDB4RkEs
CisgICAgMHgyMywweDM5LDB4RTIsMHgzMCwweDZCLDB4QUEsMHgzRCwweDk1LDB4MjMsMHgzOSww
eEUzLDB4MzgsMHhENywweEQ3LDB4RkMsMHhENSwKKyAgICAweDIzLDB4MzksMHhFMiwweDMwLDB4
ODIsMHhFQSwweEFFLDB4N0IsMHg0NCwweDQxLDB4RTMsMHgzMCwweEFCLDB4QUUsMHhFNywweEZC
LAorICAgIDB4MjMsMHgzOSwweDAzLDB4MzksMHgwMSwweDQyLDB4QzIsMHg2NiwweDQ0LDB4NDEs
MHgwMywweDM5LDB4RkEsMHhBQiwweEVCLDB4RDUsCisgICAgMHg0NCwweDQxLDB4MDMsMHgzOSww
eDI3LDB4MEYsMHhBQiwweEFCLDB4NDQsMHg0MSwweEUzLDB4MzAsMHg4MCwweDI4LDB4MzYsMHhF
RSwKKyAgICAweDQ0LDB4NDEsMHgwMywweDM5LDB4QTgsMHhFMiwweDdBLDB4QUEsMHg0NCwweDQx
LDB4RTIsMHgzMCwweEZFLDB4RkYsMHg2QiwweDYyLAorICAgIDB4RTMsMHgzOCwweDAzLDB4MzEs
MHhGRiwweDJBLDB4QUEsMHg5RSwweDAzLDB4MzksMHhFMywweDMwLDB4RkYsMHgyMywweEFGLDB4
N0UsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDBBLDB4MEUsMHgwMywweDJCLDB4NDQsMHg0
MSwweEUyLDB4MzAsMHhBQiwweDJGLDB4RkQsMHhFNSwKKyAgICAweDI0LDB4MzksMHhFMywweDM4
LDB4OEYsMHg4QiwweDBGLDB4RkQsMHg0NCwweDQxLDB4MDQsMHgzOSwweEZGLDB4RTYsMHg1QSww
eDU4LAorICAgIDB4NDQsMHg0MSwweEUzLDB4MzAsMHhGRiwweDdGLDB4RkEsMHhBQiwweDI0LDB4
NDEsMHhFMywweDM4LDB4QkYsMHhCNiwweEY4LDB4RjgsCisgICAgMHgwMywweDM5LDB4QzIsMHgz
MCwweEUwLDB4Q0EsMHhBQSwweEEwLDB4MjMsMHgzOSwweEMyLDB4MzAsMHgyQiwweDJGLDB4RkYs
MHg3RiwKKyAgICAweDIzLDB4MzksMHhDMiwweDI4LDB4QkEsMHgzRSwweEY3LDB4OTUsMHgwMyww
eDMxLDB4RTMsMHgzMCwweDgwLDB4NzgsMHhERiwweDc1LAorICAgIDB4MjQsMHgzOSwweEUzLDB4
MzAsMHg3QSwweDdCLDB4RkQsMHg2NSwweDAzLDB4MzEsMHhDMywweDI4LDB4QkEsMHhBRiwweEJF
LDB4QjIsCisgICAgMHgyNCwweDM5LDB4QzIsMHgyOCwweDdGLDB4RkYsMHhFRiwweEFFLDB4MDMs
MHgzMSwweEMyLDB4MjgsMHhGRiwweEU5LDB4Q0QsMHhDQSwKKyAgICAweDA0LDB4MzEsMHhDMiww
eDI4LDB4MkEsMHhFRiwweEU1LDB4RUUsMHgwNCwweDMxLDB4QzMsMHgyOCwweDY4LDB4NjMsMHg2
OSwweEZELAorICAgIDB4RTMsMHgzMCwweEMzLDB4MjgsMHhEQSwweDdELDB4NTksMHg1NywweDAz
LDB4MzEsMHhDMywweDI4LDB4NzUsMHhERCwweEZELDB4QUQsCisgICAgMHhFMywweDMwLDB4QTIs
MHgyOCwweEY2LDB4RjcsMHgwQSwweDBBLDB4RTMsMHgzMCwweEEyLDB4MjgsMHhFRiwweEZGLDB4
RkEsMHhCOCwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4NjcsMHhGRCwweERDLDB4MzgsMHhD
MywweDI4LDB4QTIsMHgyOCwweDUxLDB4NkIsMHg3QSwweEMzLAorICAgIDB4QzMsMHgyOCwweDgy
LDB4MjAsMHg3RSwweEZGLDB4QkYsMHhBRiwweEEyLDB4MjgsMHg4MiwweDIwLDB4MjYsMHgyNiww
eDM4LDB4QTgsCisgICAgMHhBMiwweDIwLDB4NjEsMHgyMCwweEZFLDB4RkEsMHhEQSwweEFBLDB4
QTIsMHgyOCwweDYxLDB4MTgsMHgzOCwweEJGLDB4OUYsMHhGQSwKKyAgICAweEMyLDB4MjgsMHg4
MSwweDIwLDB4QjgsMHgzNywweERGLDB4REUsMHgwMywweDMxLDB4QzIsMHgyOCwweEFELDB4RTks
MHhBRCwweDdELAorICAgIDB4MjMsMHgzOSwweEMyLDB4MjgsMHhCRiwweEJELDB4QUYsMHhBRiww
eDQ0LDB4NDEsMHhBMiwweDMwLDB4RkMsMHg3RSwweDdGLDB4RkUsCisgICAgMHhFMiwweDMwLDB4
ODIsMHgzMCwweDIyLDB4MEEsMHhBQiwweDIyLDB4QzIsMHgzMCwweEMyLDB4MjgsMHgwOCwweDAw
LDB4QTAsMHgyQSwKKyAgICAweDAzLDB4MzksMHhBMiwweDMwLDB4RUYsMHhGRCwweEJCLDB4MkIs
MHhFMiwweDMwLDB4QTEsMHgzMCwweDdGLDB4QUIsMHgwMCwweEEwLAorICAgIDB4RTIsMHgzMCww
eEMyLDB4MzAsMHgxQiwweDJGLDB4MUIsMHhENywweDAzLDB4MzksMHhDMiwweDMwLDB4N0YsMHhG
MywweEFCLDB4MkQsCisgICAgMHgwMiwweDM5LDB4QTIsMHgzMCwweEZGLDB4REEsMHhFMCwweEEw
LDB4MDMsMHgzOSwweEMyLDB4MzAsMHg3RiwweDZFLDB4RUIsMHhERCwKKyAgICAweDAzLDB4Mzks
MHhBMiwweDI4LDB4QkYsMHgxRiwweDNGLDB4QUYsMHgwMywweDM5LDB4QzIsMHgyOCwweEZFLDB4
RkIsMHhGNCwweDVGLAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhCQSwweEYyLDB4RDcsMHhC
NSwweDAzLDB4MzEsMHhBMSwweDI4LDB4RkUsMHg3QywweEVCLDB4RUEsCisgICAgMHgwMywweDMx
LDB4QTEsMHgyOCwweEE5LDB4QkYsMHgyRiwweEFBLDB4NDQsMHg0MSwweEUyLDB4MzAsMHhBQiww
eDBELDB4MkQsMHhBRCwKKyAgICAweDQ0LDB4NDEsMHgwMywweDM5LDB4NUUsMHg1QywweDc4LDB4
M0UsMHg4NSwweDQ5LDB4MDMsMHgzOSwweDVELDB4RUQsMHhBNywweDhFLAorICAgIDB4NDQsMHg0
MSwweEUyLDB4MzAsMHg1NSwweDVGLDB4NzgsMHhFOCwweDQ0LDB4NDEsMHhFMywweDMwLDB4NTcs
MHhGRiwweEVCLDB4MEIsCisgICAgMHgyMywweDM5LDB4RTMsMHgzMCwweEQ1LDB4RTcsMHhBMyww
eDg4LDB4NDMsMHg0MSwweDAzLDB4MzksMHhGRSwweEFCLDB4QUYsMHhFNywKKyAgICAweDQzLDB4
NDEsMHgwMywweDM5LDB4QTIsMHgwMiwweDBCLDB4MEQsMHg2NCwweDQ5LDB4MDIsMHgzOSwweEQ3
LDB4OTcsMHhBMywweEVGLAorICAgIDB4QzUsMHg1MSwweDIzLDB4NDEsMHhENSwweEFGLDB4MkYs
MHgyQiwweDA2LDB4NUEsMHg2NCwweDUxLDB4QjUsMHg4RiwweEFFLDB4MDMsCisgICAgMHg2Nyww
eDZBLDB4MDYsMHg1QSwweEI1LDB4QkYsMHhGQiwweEJELDB4NjcsMHg2QSwweDI3LDB4NjIsMHgy
OCwweDA4LDB4ODgsMHgyRiwKKyAgICAweEE5LDB4NkEsMHg0NywweDZBLDB4RkEsMHhCNiwweDNG
LDB4QUYsMHhDOSwweDcyLDB4NjcsMHg2QSwweDhELDB4QjcsMHhFRSwweDhCLAorICAgIDB4Qzks
MHg3QSwweDY4LDB4NkEsMHgxRiwweEVCLDB4OEEsMHgyRSwweEM5LDB4NzIsMHg2OCwweDcyLDB4
RUEsMHhBRiwweDRBLDB4QUEsCisgICAgMHhFQSwweDdBLDB4NjgsMHg3MiwweDJBLDB4MDIsMHgy
QiwweEQ3LDB4RTksMHg3QSwweEE5LDB4N0EsMHhCNywweEZELDB4RUQsMHgyOSwKKyAgICAweDBB
LDB4N0IsMHg4OCwweDcyLDB4REYsMHg1RiwweEZFLDB4QTgsMHgyQSwweDgzLDB4QTgsMHg3Miww
eEZGLDB4MzUsMHhERCwweEZGLAorICAgIDB4MEEsMHg4MywweEE5LDB4NzIsMHgyQSwweDJBLDB4
QUIsMHhERSwweDBBLDB4ODMsMHhDOSwweDdBLDB4QjcsMHhCMCwweDgwLDB4OEQsCisgICAgMHgy
QiwweDgzLDB4QzksMHg3QSwweDdFLDB4NkQsMHg1QywweEZCLDB4MEEsMHg4MywweEE5LDB4NzIs
MHhBQiwweERCLDB4REUsMHgyQSwKKyAgICAweDBBLDB4ODMsMHhBOCwweDdBLDB4NEEsMHhGOSww
eEJGLDB4RjgsMHgwOSwweDdCLDB4QTksMHg3QSwweDgyLDB4QUEsMHgyQSwweDlFLAorICAgIDB4
MkEsMHg4MywweEM5LDB4N0EsMHg1RiwweEE4LDB4QTIsMHhBQiwweDJBLDB4ODMsMHhDOSwweDdB
LDB4NzUsMHhENywweEFBLDB4QUMsCisgICAgMHgyQiwweDgzLDB4RTksMHg3QSwweDlCLDB4QTYs
MHhGRiwweDIyLDB4MkEsMHg4MywweEM5LDB4N0EsMHhFOCwweEVFLDB4N0EsMHg2MiwKKyAgICAw
eDBBLDB4ODMsMHhDOSwweDdBLDB4MDgsMHhFMiwweDBELDB4QUYsMHg0QiwweDhCLDB4QzksMHg3
QSwweDAyLDB4REQsMHg3RSwweDc2LAorICAgIDB4QUMsMHg5QiwweDBBLDB4N0IsMHgyQSwweEJE
LDB4NzUsMHhENSwweDJELDB4QTQsMHgwQSwweDgzLDB4MDIsMHhBRiwweEZGLDB4NUQsCisgICAg
MHg2RSwweEFDLDB4NEIsMHg4QiwweDAyLDB4MEEsMHhCRCwweEY1LDB4OEUsMHhBQywweEFDLDB4
OTMsMHgyMCwweDAwLDB4QUEsMHhGRCwKKyAgICAweDhGLDB4QjQsMHgyRCwweEE0LDB4QTgsMHgy
QSwweDJCLDB4MDksMHhBRiwweEI0LDB4NkUsMHhBQywweEY3LDB4QkEsMHhCOCwweEFCLAorICAg
IDB4RjAsMHhCNCwweDhGLDB4QjQsMHhEQiwweEY3LDB4RDcsMHhGRCwweEFGLDB4QjQsMHg4Riww
eEI0LDB4MjAsMHg4OCwweDBFLDB4MDIsCisgICAgMHg0NCwweDQxLDB4RTIsMHg0MCwweEZELDB4
QkQsMHhGNywweERGLDB4MjMsMHg0OSwweEMyLDB4MzgsMHhBQiwweEE3LDB4RUEsMHg4QSwKKyAg
ICAweDQzLDB4NDksMHhDMiwweDM4LDB4RkIsMHhGNywweDlFLDB4RTMsMHgwMywweDQxLDB4QzIs
MHgzOCwweDc4LDB4NkEsMHhDQSwweENDLAorICAgIDB4MjIsMHgzOSwweEMyLDB4MzgsMHhERiww
eDc5LDB4RkYsMHhENywweEUyLDB4MzgsMHhDMiwweDM4LDB4MUYsMHhBRiwweDM2LDB4QjAsCisg
ICAgMHgwMywweDQxLDB4QzIsMHgzOCwweENCLDB4OTYsMHg1MiwweDdGLDB4MDMsMHg0MSwweEMy
LDB4MzgsMHgwRiwweDJFLDB4RUEsMHhFRSwKKyAgICAweDAzLDB4NDEsMHhBMSwweDMwLDB4MzYs
MHhCRSwweEFCLDB4QTIsMHgwMiwweDQxLDB4QzIsMHgzOCwweDM4LDB4RjgsMHhFQiwweEVBLAor
ICAgIDB4MjIsMHgzOSwweEMyLDB4MzgsMHhGNywweEY2LDB4RkMsMHhGQSwweDAyLDB4MzksMHhD
MiwweDM4LDB4OTYsMHhERSwweEQ0LDB4QkUsCisgICAgMHgwMiwweDQxLDB4QzIsMHgzOCwweEE2
LDB4MjUsMHg4QSwweEFBLDB4MDMsMHg0MSwweEMyLDB4MzgsMHhBNywweEI3LDB4RjcsMHhCRiwK
KyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4QTIsMHg2MCwweDZFLDB4RkEsMHgwMywweDQxLDB4
QTEsMHgzMCwweDlFLDB4RkIsMHhFMiwweEVBLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzgsMHhE
QiwweDI3LDB4MDMsMHhCRiwweDIzLDB4MzksMHhDMiwweDM4LDB4RkUsMHg1RiwweEY3LDB4RkQs
CisgICAgMHgwMywweDQxLDB4RTIsMHgzOCwweDlBLDB4QjUsMHhBOSwweDQ3LDB4MDMsMHg0MSww
eEMyLDB4MzgsMHhDRiwweEVGLDB4OEEsMHg4RiwKKyAgICAweEUyLDB4MzgsMHhDMiwweDMwLDB4
ODgsMHgyRSwweDFBLDB4MkUsMHgwMywweDQxLDB4QzIsMHgzOCwweDJGLDB4QjUsMHhERSwweEVG
LAorICAgIDB4RTIsMHg0MCwweEEyLDB4MzgsMHgwMCwweEI4LDB4RkEsMHhCRSwweDY2LDB4NzIs
MHgyMywweDQ5LDB4MkQsMHgyRCwweDJELDB4MkQsCisgICAgMHg2NiwweDcyLDB4MDUsMHg2Miww
eEYwLDB4NDIsMHg0QSwweEU4LDB4MjYsMHg2QSwweDA2LDB4NjIsMHg1NCwweDVFLDB4RkUsMHg4
MCwKKyAgICAweDQ2LDB4NkEsMHg4NCwweDUxLDB4RkUsMHg1OCwweEZBLDB4RkEsMHg2NCwweDQ5
LDB4RTIsMHgzOCwweERFLDB4NUEsMHg3RSwweDU4LAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAs
MHgwMywweDAyLDB4QjgsMHhEOCwweDIzLDB4MzksMHhDMiwweDMwLDB4QkYsMHhGOCwweDdDLDB4
NUEsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDVBLDB4NUYsMHg1NSwweEQ1LDB4MDMsMHgz
OSwweEMyLDB4MzAsMHhFRCwweEFGLDB4RUIsMHhFQiwKKyAgICAweDI0LDB4MzksMHhDMiwweDMw
LDB4MzYsMHhCRiwweEZCLDB4QkYsMHgwMywweDM5LDB4RTIsMHgzMCwweEVGLDB4RjAsMHhCRCww
eDk3LAorICAgIDB4MDMsMHgzOSwweEExLDB4MjgsMHhBMiwweEFBLDB4QkMsMHg3OCwweDIzLDB4
MzksMHhDMiwweDMwLDB4RTIsMHhBMiwweEZGLDB4NkQsCisgICAgMHgwMywweDM5LDB4QzIsMHgz
MCwweEFBLDB4MjIsMHgyQSwweEZELDB4MjMsMHgzOSwweEMyLDB4MzAsMHg4QSwweDAwLDB4MkEs
MHgyQiwKKyAgICAweDQ0LDB4NDEsMHgwMywweDM5LDB4QTIsMHhFRCwweDdFLDB4QjMsMHgyNCww
eDM5LDB4RTIsMHgzOCwweEYyLDB4MjIsMHhCMCwweDg4LAorICAgIDB4NDQsMHg0MSwweEUzLDB4
MzgsMHhBMCwweEEwLDB4QkIsMHhGNiwweDQ0LDB4NDEsMHhFMywweDM4LDB4NkEsMHg2QSwweDJB
LDB4QkIsCisgICAgMHgyMywweDM5LDB4RTMsMHgzOCwweEY1LDB4RTUsMHg3RiwweEEyLDB4MDMs
MHgzOSwweEMyLDB4MzAsMHgwRSwweDJBLDB4ODAsMHg2QSwKKyAgICAweDI0LDB4MzksMHhDMiww
eDMwLDB4MkQsMHgyRSwweEFGLDB4M0YsMHg0NCwweDQxLDB4RTMsMHgzMCwweEU3LDB4RkYsMHhG
RCwweEE1LAorICAgIDB4MjQsMHgzOSwweEMyLDB4MzAsMHhGRiwweDdGLDB4RkYsMHhBQSwweDAz
LDB4MzksMHhFMywweDMwLDB4MDMsMHgwOSwweDgxLDB4MEIsCisgICAgMHg0NCwweDQxLDB4QzIs
MHgzMCwweDBBLDB4QUYsMHhGRSwweDdGLDB4NDQsMHg0MSwweDA0LDB4MzksMHg1QSwweDMyLDB4
Q0YsMHhBRiwKKyAgICAweDQ0LDB4NDEsMHhFMywweDM4LDB4NTYsMHg3RSwweEU4LDB4RUUsMHgy
MywweDM5LDB4RTMsMHgzMCwweDdGLDB4RDcsMHhGRCwweEFBLAorICAgIDB4MDMsMHgzOSwweEMy
LDB4MjgsMHgyQiwweDA4LDB4NzAsMHhBMCwweDIzLDB4MzksMHhFMywweDMwLDB4NUYsMHg3RSww
eDZDLDB4QUQsCisgICAgMHgwMywweDMxLDB4QzMsMHgzMCwweEJCLDB4M0UsMHgyMiwweEEwLDB4
MjMsMHgzOSwweEUzLDB4MzAsMHhCRiwweDNGLDB4REYsMHhBRiwKKyAgICAweDI0LDB4MzksMHgw
MywweDMxLDB4NTUsMHg1QywweEZFLDB4OEIsMHgyMywweDMxLDB4RTMsMHgzMCwweDY3LDB4Q0Qs
MHhFQiwweEUwLAorICAgIDB4MDQsMHgzMSwweEUzLDB4MzAsMHg3RCwweEI3LDB4MjgsMHhENiww
eDAzLDB4MzEsMHhDMiwweDI4LDB4NUEsMHhGOCwweEVDLDB4QUUsCisgICAgMHhFMywweDMwLDB4
QzIsMHgyOCwweDU3LDB4NTYsMHg1QSwweDBBLDB4RTMsMHgzMCwweEMyLDB4MjgsMHhBRiwweDBE
LDB4RUQsMHgyOCwKKyAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4OTcsMHhEQywweEVGLDB4RkEs
MHhFMywweDMwLDB4QzIsMHgzMCwweEYwLDB4NzIsMHhBQSwweEUzLAorICAgIDB4RTMsMHgzMCww
eEMyLDB4MjgsMHhCNCwweDY3LDB4RkYsMHgyQiwweEUzLDB4MzAsMHhBMiwweDI4LDB4RkYsMHhG
QiwweEVCLDB4RTgsCisgICAgMHhFMiwweDI4LDB4QTIsMHgyMCwweEY3LDB4RUIsMHhFQSwweEFB
LDB4ODIsMHgyOCwweEEyLDB4MjAsMHhERiwweEZELDB4RkQsMHg1RiwKKyAgICAweEMyLDB4Mjgs
MHhBMiwweDIwLDB4NUQsMHhBNSwweEQ1LDB4NUMsMHhDMiwweDI4LDB4ODEsMHgyMCwweDZFLDB4
RjIsMHg2OCwweEE3LAorICAgIDB4QzIsMHgyOCwweDgxLDB4MjAsMHhERiwweEQ3LDB4N0UsMHg4
MCwweEMyLDB4MjgsMHg4MSwweDIwLDB4MjMsMHhCRiwweDVGLDB4N0YsCisgICAgMHgwMywweDM5
LDB4ODEsMHgyMCwweDBBLDB4MjIsMHhBRCwweEI1LDB4MjQsMHgzOSwweEMyLDB4MzAsMHhFQyww
eEFBLDB4MkYsMHhCRCwKKyAgICAweDI0LDB4MzksMHhDMiwweDMwLDB4NUQsMHg3NSwweEVFLDB4
NjgsMHhFMiwweDMwLDB4ODIsMHgyOCwweDdGLDB4RkUsMHhBQSwweDAwLAorICAgIDB4RTMsMHgz
OCwweEMyLDB4MjgsMHgyQiwweEE5LDB4MEIsMHhBQiwweDAzLDB4MzksMHhFMiwweDMwLDB4OUUs
MHhBRSwweEJGLDB4NUQsCisgICAgMHhFMiwweDMwLDB4QzIsMHgzMCwweDU3LDB4RkQsMHhBRiww
eDlBLDB4MDIsMHgzOSwweEMyLDB4MzAsMHgzRCwweEFELDB4QTMsMHhCRiwKKyAgICAweDAzLDB4
MzksMHhDMiwweDMwLDB4RkEsMHg1RSwweEVGLDB4QUUsMHhFMywweDMwLDB4QzIsMHgzMCwweDU3
LDB4OUYsMHhENSwweDU3LAorICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHhGRiwweDc3LDB4NUQs
MHhCNSwweDAzLDB4MzEsMHhBMiwweDI4LDB4RjIsMHg3QSwweEYyLDB4RjgsCisgICAgMHhFMyww
eDMwLDB4QTIsMHgyOCwweDlGLDB4QjUsMHgwRiwweDhBLDB4MDMsMHgzMSwweEMyLDB4MzAsMHg4
MywweEFBLDB4ODIsMHgwQiwKKyAgICAweDAzLDB4MzksMHhFMiwweDMwLDB4NUMsMHg5OSwweEI2
LDB4RDcsMHgyMywweDM5LDB4RTIsMHgzMCwweEI1LDB4RjcsMHg4NywweEFCLAorICAgIDB4NDMs
MHgzOSwweEUyLDB4MzAsMHgyQSwweEJFLDB4QkUsMHhGQSwweDY0LDB4NDEsMHgwMywweDM5LDB4
ODAsMHhGQiwweDdGLDB4N0IsCisgICAgMHg0NCwweDQxLDB4RTIsMHgzMCwweEU4LDB4QUUsMHhG
RSwweEZGLDB4NDQsMHgzOSwweEUyLDB4MzAsMHg4RiwweEZFLDB4MjksMHhCNywKKyAgICAweDIz
LDB4MzksMHhDMiwweDMwLDB4MDAsMHg4OCwweDcwLDB4QUEsMHgyMywweDM5LDB4RTIsMHgzMCww
eEU3LDB4RDQsMHhBNiwweDBFLAorICAgIDB4NjQsMHg0MSwweDAzLDB4MzksMHhGMSwweDdCLDB4
NzUsMHg1NSwweDY0LDB4NDksMHhFMiwweDM4LDB4MkQsMHhBRiwweEE5LDB4MkYsCisgICAgMHhF
NiwweDU5LDB4NjQsMHg0OSwweEE5LDB4QUQsMHhDRiwweDI5LDB4MjYsMHg2MiwweEM1LDB4NTEs
MHhEOSwweEY5LDB4RTIsMHhGQSwKKyAgICAweDQ3LDB4NjIsMHhFNiwweDU5LDB4M0YsMHhCNyww
eDk3LDB4QjUsMHg2OCwweDZBLDB4RTYsMHg1OSwweDIyLDB4MDMsMHhCNywweEFFLAorICAgIDB4
QTksMHg3MiwweDQ3LDB4NkEsMHhCNSwweDlGLDB4QkYsMHgyRCwweEM5LDB4NzIsMHg2OCwweDZB
LDB4QUEsMHhGQSwweEVBLDB4NkIsCisgICAgMHhDOSwweDcyLDB4ODgsMHg2QSwweEI1LDB4REEs
MHhCQSwweDRFLDB4QzksMHg3QSwweDg4LDB4NkEsMHhFRSwweEVCLDB4MEYsMHgzNSwKKyAgICAw
eEM5LDB4N0EsMHg4OCwweDcyLDB4RDcsMHhFRCwweEUyLDB4MzAsMHhFQSwweDgyLDB4ODgsMHg3
MiwweDJELDB4QTcsMHhCNywweEY3LAorICAgIDB4MEEsMHg4MywweEE5LDB4NzIsMHgwQSwweEFG
LDB4QjcsMHhGRCwweEU5LDB4N0EsMHhBOSwweDcyLDB4RjIsMHg0MCwweDZBLDB4RkQsCisgICAg
MHhDOSwweDdBLDB4ODgsMHg3MiwweDM4LDB4M0EsMHg4QiwweEMzLDB4MEEsMHg4MywweEM5LDB4
N0EsMHhBNywweEU3LDB4NjYsMHhENSwKKyAgICAweEVBLDB4ODIsMHg4OCwweDcyLDB4MDgsMHhB
QSwweDVFLDB4QUIsMHgyQiwweDhCLDB4QzksMHg3QSwweEJGLDB4QUYsMHgzNSwweDJELAorICAg
IDB4MkEsMHg4MywweEVBLDB4N0EsMHg1OCwweDVFLDB4NTgsMHg1NywweDBBLDB4ODMsMHhDOSww
eDdBLDB4NTUsMHg1QiwweDkwLDB4RjAsCisgICAgMHgwQSwweDgzLDB4QTksMHg3MiwweDAyLDB4
QkUsMHgzNywweEI1LDB4MkIsMHg4MywweEM5LDB4N0EsMHhBMiwweEE4LDB4RTIsMHg1RSwKKyAg
ICAweDBBLDB4ODMsMHhFQSwweDdBLDB4QzMsMHg1NywweDU3LDB4N0UsMHgyQiwweDgzLDB4RUEs
MHg4MiwweDgzLDB4M0QsMHgwOSwweEVCLAorICAgIDB4MkEsMHg4MywweEM5LDB4N0EsMHg3Qiww
eEZBLDB4RkMsMHg2QSwweDBBLDB4ODMsMHhDOSwweDdBLDB4RkMsMHhDQSwweEFBLDB4RTgsCisg
ICAgMHgyQSwweDgzLDB4RUEsMHg3QSwweDlELDB4QjUsMHg1RiwweDVGLDB4MkEsMHg4MywweEVB
LDB4N0EsMHhBQSwweEI3LDB4NjksMHg3RiwKKyAgICAweDZCLDB4OEIsMHhFOSwweDdBLDB4MEIs
MHgyRiwweEY1LDB4NUYsMHhBQywweDkzLDB4RTksMHg3QSwweDAwLDB4MkEsMHhBRCwweDU1LAor
ICAgIDB4NEUsMHhBQywweDRCLDB4OEIsMHgwQSwweEFCLDB4RkQsMHg1NSwweDZFLDB4QUMsMHg4
QywweDkzLDB4MDAsMHgwQSwweDJGLDB4RDUsCisgICAgMHg4RiwweEI0LDB4RUQsMHg5QiwweDAw
LDB4MDAsMHgwMiwweEJELDB4RjAsMHhCQywweDZGLDB4QUMsMHhBQSwweDhCLDB4RUIsMHhGRCwK
KyAgICAweDIzLDB4NDEsMHhFMiwweDQwLDB4RkQsMHhEQiwweDBCLDB4ODAsMHgyMywweDQ5LDB4
RTIsMHg0MCwweEEyLDB4NUUsMHg1OCwweDUwLAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHgw
MCwweEEyLDB4RUUsMHgwQSwweDAzLDB4NDEsMHhBMSwweDMwLDB4RjgsMHg2MiwweEEwLDB4QjAs
CisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDk1LDB4MkQsMHhFQiwweEZFLDB4MjMsMHg0MSww
eEUyLDB4MzgsMHhENywweEY1LDB4NjUsMHhCQiwKKyAgICAweDAzLDB4NDEsMHhFMiwweDM4LDB4
RDcsMHgzNSwweDFCLDB4QzEsMHgyMywweDQxLDB4RTIsMHgzOCwweDc3LDB4NkEsMHhFRiwweDZG
LAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhBMywweEJGLDB4RkIsMHg3QSwweDAyLDB4Mzks
MHhDMiwweDM4LDB4QUEsMHhCQSwweDIwLDB4QkQsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCww
eDc4LDB4RDQsMHg3RSwweEZFLDB4RTIsMHgzOCwweEMyLDB4MzgsMHgzRSwweEJELDB4MzMsMHg2
RSwKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4QUEsMHhBMiwweDgyLDB4QkQsMHhFMiwweDM4
LDB4QzIsMHgzOCwweENBLDB4QzAsMHgwMCwweDAyLAorICAgIDB4MjMsMHg0MSwweEMyLDB4Mzgs
MHhGRiwweEZCLDB4NUYsMHg3NSwweDAyLDB4MzksMHhDMiwweDM4LDB4NTUsMHhGNywweEJGLDB4
OEYsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEY0LDB4N0MsMHg3QiwweEEyLDB4MjMsMHgz
OSwweEMyLDB4MzgsMHhCNSwweEY1LDB4RkYsMHhGRiwKKyAgICAweEUyLDB4MzgsMHhBMSwweDMw
LDB4MjAsMHgwNCwweDhBLDB4MjgsMHgwMywweDM5LDB4QzIsMHgzOCwweEZGLDB4MkYsMHgwRiww
eENELAorICAgIDB4MDIsMHg0MSwweEUzLDB4MzgsMHhENywweDU1LDB4NUIsMHg1RCwweDAzLDB4
NDEsMHhBMiwweDMwLDB4OEQsMHhBRiwweDdFLDB4RUIsCisgICAgMHhFMywweDQwLDB4QTIsMHgz
OCwweEJGLDB4QTgsMHgyMiwweDBELDB4NjcsMHg3MiwweDIzLDB4NDksMHgyRCwweDJELDB4MkQs
MHgwOSwKKyAgICAweDY2LDB4NzIsMHgyNiwweDZBLDB4NTUsMHhFOCwweDgwLDB4MTIsMHg2Niww
eDcyLDB4MDYsMHg2MiwweEZBLDB4REEsMHhCOCwweEZBLAorICAgIDB4NDYsMHg2QSwweDY0LDB4
NDksMHhGOCwweDdBLDB4N0UsMHhEQSwweDY0LDB4NDksMHhFMiwweDM4LDB4NUMsMHg3NiwweDdF
LDB4NUYsCisgICAgMHgyMywweDM5LDB4RTIsMHgzMCwweEQ1LDB4OTcsMHhGQSwweDdGLDB4MjMs
MHgzOSwweEEyLDB4MzAsMHhCQSwweEE4LDB4QUUsMHg3RiwKKyAgICAweDAzLDB4MzksMHhFMyww
eDMwLDB4NTcsMHg2MiwweEEyLDB4MEIsMHgwMywweDMxLDB4QTIsMHgzMCwweEFCLDB4MkEsMHgw
MiwweDJBLAorICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHhGRSwweEU3LDB4OTYsMHhGRSwweDI0
LDB4MzksMHhFMywweDMwLDB4RkIsMHhCRiwweEJELDB4RkQsCisgICAgMHgwMywweDM5LDB4QzIs
MHgzMCwweDc4LDB4NjYsMHhENCwweEZFLDB4MDMsMHgzOSwweEMyLDB4MzAsMHgyNywweDJCLDB4
MEYsMHg4QSwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4Q0EsMHg2QiwweEFBLDB4ODAsMHgw
MywweDM5LDB4QzIsMHgzMCwweDI5LDB4QUYsMHhCQSwweDJBLAorICAgIDB4NDQsMHg0MSwweEUy
LDB4MzAsMHg4QiwweEM3LDB4RDUsMHg1NSwweDIzLDB4MzksMHhFMywweDM4LDB4Q0IsMHhGRSww
eEJDLDB4RkMsCisgICAgMHgyMywweDM5LDB4RTMsMHgzOCwweEZFLDB4QTcsMHhFQiwweEJBLDB4
MDMsMHgzOSwweEUzLDB4MzAsMHgwMCwweEEyLDB4MjIsMHgyMCwKKyAgICAweDI0LDB4MzksMHhF
MywweDM4LDB4M0EsMHg4QSwweERBLDB4NTgsMHg0NCwweDQxLDB4RTMsMHgzMCwweDc0LDB4N0Ys
MHg1RiwweEZCLAorICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHgyRiwweEZGLDB4RkYsMHhGRSww
eDI0LDB4NDEsMHhFMiwweDMwLDB4MjcsMHhFMSwweEZGLDB4QkYsCisgICAgMHg0NCwweDQxLDB4
MDMsMHgzOSwweDUzLDB4N0YsMHhENSwweEY3LDB4NDQsMHg0MSwweDA0LDB4MzksMHg1NSwweDVG
LDB4RTgsMHhBQSwKKyAgICAweDI0LDB4MzksMHhFMywweDM4LDB4NkIsMHg4MiwweEY4LDB4QkMs
MHgyMywweDM5LDB4RTMsMHgzOCwweEFCLDB4RjcsMHhCRiwweDhGLAorICAgIDB4MjMsMHgzOSww
eEMyLDB4MzAsMHg4QSwweDNFLDB4MjYsMHhBQSwweDIzLDB4MzksMHhFMywweDM4LDB4QUEsMHhB
QSwweEZFLDB4NTYsCisgICAgMHgyNCwweDM5LDB4MDMsMHgzOSwweDU1LDB4QkUsMHgzQiwweDk1
LDB4MjQsMHgzOSwweEUyLDB4MzAsMHhBQSwweDIwLDB4MkMsMHg5RSwKKyAgICAweDI0LDB4Mzks
MHhFMywweDMwLDB4NUEsMHhEOCwweEZFLDB4QkYsMHgyNCwweDM5LDB4RTMsMHgzMCwweERGLDB4
N0YsMHhERiwweDYwLAorICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHgwMiwweDJBLDB4QUEsMHhG
NywweDI0LDB4MzEsMHhDMiwweDMwLDB4QjgsMHhCQSwweEJELDB4QkYsCisgICAgMHgyMywweDM5
LDB4QzIsMHgyOCwweEZCLDB4QkYsMHhBQSwweEEzLDB4MjMsMHgzMSwweEUzLDB4MzAsMHhENSww
eDc1LDB4REUsMHhCRSwKKyAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4QkYsMHhCRiwweEFCLDB4
QUEsMHgwMywweDMxLDB4QzIsMHgyOCwweDlFLDB4REYsMHhFOCwweEE4LAorICAgIDB4MDMsMHgz
MSwweEMyLDB4MzAsMHhBQSwweDJELDB4RUIsMHhGQSwweDA0LDB4MzEsMHhBMiwweDI4LDB4RTIs
MHhFQywweDZGLDB4RUYsCisgICAgMHhFMywweDMwLDB4QzIsMHgyOCwweEFGLDB4QkEsMHgyRCww
eDk1LDB4RTMsMHgzMCwweEMyLDB4MjgsMHg2RSwweEQ3LDB4NzYsMHhGQywKKyAgICAweEUyLDB4
MzAsMHhDMiwweDI4LDB4N0YsMHg2NywweDc3LDB4N0QsMHhFMywweDMwLDB4QTIsMHgyOCwweDhG
LDB4ODIsMHhGQiwweDlGLAorICAgIDB4RTIsMHgyOCwweDgyLDB4MjAsMHhGQywweDdGLDB4QkYs
MHhFRSwweEMyLDB4MjgsMHg4MiwweDIwLDB4RUYsMHhCRiwweEFBLDB4QTIsCisgICAgMHgwMyww
eDI5LDB4QTIsMHgyOCwweEY5LDB4RUYsMHhGRCwweERGLDB4QzIsMHgyOCwweDgxLDB4MjAsMHg3
RSwweEZDLDB4RkYsMHhFRSwKKyAgICAweEEyLDB4MjgsMHg4MSwweDIwLDB4MjcsMHg5NSwweERG
LDB4N0EsMHhFMywweDMwLDB4ODEsMHgyMCwweDAyLDB4QUYsMHhGRiwweDVELAorICAgIDB4MjQs
MHgzOSwweDgxLDB4MjAsMHg4QSwweEVCLDB4QjksMHhGNSwweDAzLDB4MzEsMHhBMiwweDI4LDB4
QUIsMHgyQSwweEFBLDB4REIsCisgICAgMHgyMywweDM5LDB4RTIsMHgzMCwweEY1LDB4MEUsMHhC
MiwweEZCLDB4MjMsMHgzOSwweEMyLDB4MjgsMHg1QSwweDY4LDB4RUEsMHhCQSwKKyAgICAweDAz
LDB4MzEsMHhBMSwweDMwLDB4QkEsMHg4MiwweDgyLDB4QUEsMHgwMiwweDMxLDB4QzIsMHgyOCww
eEJELDB4QkQsMHg3RCwweEZFLAorICAgIDB4MDIsMHgzOSwweEExLDB4MjgsMHhBQSwweEE4LDB4
RkEsMHhFOSwweDAzLDB4MzksMHhDMiwweDMwLDB4RUYsMHg3QSwweDUyLDB4NUYsCisgICAgMHgw
MywweDMxLDB4QzIsMHgzMCwweDJELDB4MDcsMHgwQSwweDAyLDB4MjQsMHgzOSwweEMyLDB4MzAs
MHg3QywweEJBLDB4QUEsMHhGMiwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4RUEsMHg4MCww
eEZBLDB4OTYsMHgyNCwweDM5LDB4QzIsMHgyOCwweEFGLDB4QTcsMHhBNywweDBGLAorICAgIDB4
MDMsMHgzOSwweEUzLDB4MzAsMHg5RiwweEJFLDB4QjgsMHg3MCwweDAzLDB4MzksMHhFMywweDMw
LDB4MDAsMHgwQSwweDAzLDB4QkYsCisgICAgMHg0NCwweDQxLDB4MDMsMHgzOSwweDVGLDB4QkYs
MHgwOCwweDM4LDB4NjUsMHg0MSwweEUzLDB4MzAsMHg2RiwweEY2LDB4NUUsMHg1NCwKKyAgICAw
eDAzLDB4MzEsMHhDMiwweDI4LDB4QjAsMHhFQSwweEY4LDB4NTcsMHgwMywweDMxLDB4QzIsMHgz
MCwweEJGLDB4QkYsMHhERiwweEY5LAorICAgIDB4MjMsMHgzOSwweEMyLDB4MjgsMHgyRSwweEFF
LDB4NEIsMHg1RiwweDAzLDB4MzEsMHhBMiwweDI4LDB4MDAsMHg4QSwweEFCLDB4QTcsCisgICAg
MHg2NCwweDQxLDB4QzIsMHgzMCwweEJGLDB4QkYsMHhCRCwweDNGLDB4ODUsMHg0OSwweEUyLDB4
MzgsMHhCOSwweDJGLDB4QTIsMHgwMiwKKyAgICAweDA3LDB4NjIsMHg4NSwweDQ5LDB4QkQsMHhB
RiwweEFCLDB4QkIsMHg0NywweDZBLDB4RTUsMHg1OSwweDVGLDB4RkYsMHhCNywweEJGLAorICAg
IDB4NDgsMHg2QSwweEM2LDB4NTksMHhCRiwweDJGLDB4MjUsMHgyRiwweDY4LDB4NkEsMHgyNyww
eDYyLDB4MjksMHgwRSwweDIyLDB4MDIsCisgICAgMHhBOSwweDcyLDB4NDcsMHg2MiwweEE3LDB4
RUUsMHhBQSwweEFCLDB4QTgsMHg3MiwweDY4LDB4NkEsMHhGRiwweDBGLDB4RTcsMHg5QiwKKyAg
ICAweEE5LDB4NzIsMHg2NywweDZBLDB4OEUsMHhCQiwweDlBLDB4MDgsMHhBOSwweDcyLDB4ODgs
MHg2QSwweDE2LDB4MEUsMHgyRSwweDRBLAorICAgIDB4QzksMHg3QSwweDg4LDB4NkEsMHhBOCww
eEJFLDB4RUYsMHhGRCwweEE5LDB4NzIsMHg2OCwweDZBLDB4OEEsMHhBMCwweDlFLDB4MkEsCisg
ICAgMHhFQSwweDgyLDB4NjgsMHg2QSwweEFFLDB4RUIsMHhFRiwweDczLDB4RTksMHg3QSwweDg4
LDB4NzIsMHhGQSwweENBLDB4REEsMHhGRCwKKyAgICAweEM5LDB4N0EsMHg4OCwweDcyLDB4MEEs
MHgzRiwweDJGLDB4QTMsMHgwQSwweDgzLDB4ODgsMHg3MiwweDMwLDB4QTIsMHg2QSwweERGLAor
ICAgIDB4RUEsMHg3QSwweDg4LDB4NzIsMHhBOCwweEJCLDB4RkIsMHg5RSwweDBBLDB4ODMsMHhB
OCwweDcyLDB4MkYsMHhBRiwweEFGLDB4RDUsCisgICAgMHgwQSwweDgzLDB4QTksMHg3MiwweEEy
LDB4QkEsMHhERiwweDVGLDB4MkIsMHg4MywweEM5LDB4N0EsMHhFQSwweEJGLDB4MTUsMHg1RCwK
KyAgICAweDBCLDB4ODMsMHhDQSwweDdBLDB4REQsMHhGRiwweDdFLDB4QUYsMHgwQSwweDgzLDB4
QzksMHg3QSwweDZDLDB4RkYsMHhGRiwweDhBLAorICAgIDB4MkIsMHg4MywweEM5LDB4N0EsMHgz
RiwweEVELDB4QkIsMHg3MSwweDBBLDB4ODMsMHhBOSwweDdBLDB4MjgsMHhCRSwweDJCLDB4NkQs
CisgICAgMHg0QiwweDhCLDB4Q0EsMHg3QSwweDJBLDB4MkEsMHhFQiwweEY1LDB4MkIsMHg4Qiww
eEM5LDB4N0EsMHg2MCwweDc2LDB4RjIsMHhGRSwKKyAgICAweDBBLDB4ODMsMHhDOSwweDdBLDB4
ODgsMHhFRSwweEFGLDB4OUEsMHg0QiwweDhCLDB4RTksMHg3QSwweDdELDB4RkQsMHhCMywweDJB
LAorICAgIDB4MkEsMHg4MywweEM5LDB4N0EsMHhCRSwweDc3LDB4RkMsMHhEOCwweDBBLDB4ODMs
MHhBOCwweDcyLDB4M0YsMHgyRCwweDhCLDB4QUUsCisgICAgMHg0QiwweDhCLDB4RUEsMHg3QSww
eDBCLDB4QTcsMHhFNywweEJGLDB4OEMsMHg5MywweEU5LDB4N0EsMHgyQSwweEJCLDB4QUYsMHg3
RSwKKyAgICAweENELDB4OUIsMHgwQSwweDgzLDB4MDIsMHhBQSwweEJGLDB4N0QsMHg4RiwweEI0
LDB4NEIsMHg4QiwweDJBLDB4QUIsMHhGRCwweDU1LAorICAgIDB4MDMsMHg0MSwweDIzLDB4Mzks
MHg4MiwweDAwLDB4MDgsMHgyMywweDIzLDB4NDEsMHhBMiwweDM4LDB4RTgsMHg3QSwweEY4LDB4
RkUsCisgICAgMHgwMiwweDQxLDB4QzIsMHgzOCwweEJBLDB4QjksMHg2OSwweEVBLDB4RTIsMHgz
OCwweEMyLDB4MzgsMHhGOCwweEJCLDB4MEIsMHgwRiwKKyAgICAweDAyLDB4NDEsMHhBMiwweDMw
LDB4Q0EsMHhBQiwweDgzLDB4ODIsMHgyMywweDQxLDB4RTIsMHgzOCwweEVCLDB4NkQsMHhGQyww
eEZCLAorICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHg2NSwweEQ1LDB4NTcsMHg5NSwweDIzLDB4
NDEsMHhDMiwweDM4LDB4RkIsMHgzQiwweERGLDB4NUIsCisgICAgMHgwMywweDQxLDB4QzIsMHgz
OCwweEZDLDB4NTgsMHg2RSwweEZGLDB4MDIsMHgzOSwweEMyLDB4MzAsMHhBRSwweDNCLDB4RkIs
MHhERSwKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4REUsMHhCOCwweDIwLDB4M0IsMHgyMyww
eDQxLDB4QzIsMHgzOCwweDU2LDB4REYsMHhGRSwweEZDLAorICAgIDB4MDMsMHg0MSwweEEyLDB4
MzAsMHhBQiwweEVCLDB4RTcsMHhCMCwweDAzLDB4NDEsMHhFMiwweDM4LDB4RTEsMHgwOSwweDlE
LDB4NTUsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDc3LDB4QzQsMHg4QSwweDhBLDB4MDMs
MHg0MSwweEMyLDB4MzgsMHg0RCwweDU5LDB4NUIsMHhFMiwKKyAgICAweDAzLDB4NDEsMHhFMiww
eDM4LDB4RkMsMHhERiwweDU3LDB4NTYsMHgwMywweDM5LDB4QzIsMHgzOCwweEFFLDB4RjAsMHg1
QSwweDVELAorICAgIDB4MDMsMHgzOSwweEMxLDB4MzAsMHhFRiwweEJELDB4QkUsMHg4QiwweDAz
LDB4NDEsMHhDMiwweDM4LDB4QjUsMHhCRiwweDVGLDB4Q0UsCisgICAgMHgwMywweDM5LDB4QzIs
MHgzOCwweEZBLDB4OEEsMHg3RiwweEY3LDB4RTMsMHgzOCwweEMyLDB4MzgsMHg2QywweDdFLDB4
N0YsMHhGNywKKyAgICAweDAzLDB4NDEsMHhBMSwweDMwLDB4MjUsMHhBRiwweEFCLDB4RkUsMHg4
OCwweDcyLDB4NjQsMHg0OSwweDBELDB4MkQsMHgyRCwweDJELAorICAgIDB4ODcsMHg3MiwweDQ3
LDB4NkEsMHhCOCwweDNBLDB4QjYsMHhGMywweDY2LDB4NzIsMHhDNCwweDU5LDB4RTIsMHg3QSww
eDc4LDB4N0UsCisgICAgMHhFNSwweDU5LDB4NDQsMHg0OSwweEY4LDB4N0UsMHg1RSwweDdBLDB4
NDMsMHg0MSwweEUyLDB4MzgsMHg1QywweDdFLDB4RUYsMHg3OCwKKyAgICAweDAzLDB4MzksMHhD
MiwweDMwLDB4NkEsMHhBMCwweEEyLDB4QkEsMHgwMywweDM5LDB4QTIsMHgzMCwweDdBLDB4QkEs
MHhBQSwweDgwLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHg4OCwweEUyLDB4NjIsMHg1QSww
eDAzLDB4MzEsMHhDMiwweDMwLDB4MjMsMHg4QSwweDJGLDB4MkEsCisgICAgMHgwMywweDM5LDB4
QTIsMHgyOCwweEFBLDB4QkEsMHg2MCwweEUwLDB4MDMsMHgzMSwweEMyLDB4MjgsMHgyRSwweEJE
LDB4OTUsMHg5RCwKKyAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4QUEsMHgyQywweDlDLDB4RjYs
MHgwMywweDMxLDB4QzIsMHgzMCwweEVFLDB4QUEsMHhGQSwweDY4LAorICAgIDB4MDMsMHgzMSww
eEUyLDB4MzAsMHhCRiwweDVGLDB4OTcsMHhFOSwweDIzLDB4MzEsMHhDMiwweDI4LDB4RUEsMHhD
QSwweEZGLDB4RjgsCisgICAgMHgwMywweDM5LDB4RTIsMHgzMCwweEJFLDB4NkIsMHhERSwweDUy
LDB4MDMsMHgzOSwweEUzLDB4MzAsMHgwMCwweERFLDB4M0UsMHhBQSwKKyAgICAweDAzLDB4Mzks
MHhFMywweDMwLDB4NDIsMHg4MiwweDNELDB4RjcsMHgyNCwweDM5LDB4QzIsMHgzMCwweDgyLDB4
QUEsMHhBQiwweEY3LAorICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHhBMCwweEYwLDB4NDIsMHhG
MCwweDI0LDB4MzksMHhDMiwweDMwLDB4OEEsMHhBQiwweEZGLDB4REUsCisgICAgMHgwMywweDM5
LDB4RTMsMHgzMCwweEI4LDB4MjgsMHhGMiwweDkyLDB4MjMsMHgzOSwweEUzLDB4MzAsMHhCRSww
eEFFLDB4QUUsMHhCRiwKKyAgICAweDQ0LDB4NDEsMHgwMywweDM5LDB4REIsMHg5RiwweDA3LDB4
QUYsMHg0NCwweDQxLDB4MDMsMHgzOSwweEU3LDB4RDYsMHhCRSwweDFFLAorICAgIDB4NDQsMHg0
MSwweDA0LDB4MzksMHg3NywweDFELDB4RkIsMHhBMCwweDQ0LDB4NDEsMHgwMywweDM5LDB4QjUs
MHg2RiwweEZFLDB4REEsCisgICAgMHgyNCwweDQxLDB4MDMsMHgzOSwweDU1LDB4OTUsMHhCRiww
eEJDLDB4MjQsMHgzOSwweEMyLDB4MzAsMHhCQiwweEEyLDB4ODAsMHgyMiwKKyAgICAweDI0LDB4
MzksMHhDMiwweDMwLDB4RkYsMHg1RiwweDVBLDB4RjgsMHgwMywweDM5LDB4QzIsMHgzMCwweDJB
LDB4OEYsMHhGNywweEJBLAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHg4RiwweEE5LDB4RkYs
MHhCRiwweDI0LDB4MzksMHhFMywweDMwLDB4NjIsMHhDMCwweERFLDB4RkUsCisgICAgMHgyNCww
eDM5LDB4QzIsMHgzMCwweEZELDB4QUEsMHhBQSwweEVCLDB4MDMsMHgzMSwweEMyLDB4MzAsMHhB
RiwweDBGLDB4MjgsMHhBMCwKKyAgICAweDAzLDB4MzEsMHhBMiwweDMwLDB4QTIsMHhFOCwweDIy
LDB4MkEsMHgyNCwweDM5LDB4RTMsMHgzMCwweDJFLDB4MEYsMHg5RiwweERFLAorICAgIDB4MjQs
MHgzOSwweEUzLDB4MzAsMHg2RiwweEVBLDB4RjIsMHhFQiwweDAzLDB4MzEsMHhFMywweDMwLDB4
NjIsMHg3RiwweDVGLDB4QjIsCisgICAgMHgyMywweDM5LDB4RTMsMHgzMCwweEQ1LDB4NTUsMHhD
NSwweEYzLDB4MjQsMHgzOSwweEMyLDB4MzAsMHg3NywweDdGLDB4N0IsMHhFQSwKKyAgICAweDAz
LDB4MzEsMHhDMywweDMwLDB4RjUsMHhFRCwweDhGLDB4OEQsMHhFMywweDMwLDB4QzIsMHgyOCww
eDdFLDB4NzgsMHg3NCwweDcwLAorICAgIDB4RTMsMHgzMCwweEMyLDB4MjgsMHg1NSwweEZCLDB4
QkIsMHhGRiwweEUyLDB4MjgsMHg4MiwweDI4LDB4MkUsMHhBQSwweDI4LDB4MDIsCisgICAgMHhF
MywweDMwLDB4QTIsMHgyMCwweEJGLDB4RUUsMHhCQywweEY0LDB4MDMsMHgzMSwweEMyLDB4Mjgs
MHg3RCwweDdGLDB4NTMsMHhERCwKKyAgICAweEMyLDB4MjgsMHhBMiwweDIwLDB4M0EsMHhBRiww
eDJBLDB4MEUsMHhFMiwweDI4LDB4QTIsMHgyMCwweDU3LDB4NUUsMHg1RiwweDdDLAorICAgIDB4
ODEsMHgyOCwweEEyLDB4MjAsMHhGRiwweDlGLDB4RkYsMHhGRCwweEMyLDB4MjgsMHg4MSwweDIw
LDB4RkIsMHhFRiwweEFBLDB4MkQsCisgICAgMHhBMiwweDI4LDB4ODEsMHgyMCwweEI3LDB4QUUs
MHhBMCwweEM4LDB4QzIsMHgyOCwweDYxLDB4MjAsMHgyQSwweEJBLDB4RkYsMHhGRiwKKyAgICAw
eDAzLDB4MzEsMHg4MSwweDIwLDB4MEEsMHhCOSwweEZGLDB4NzUsMHgwMywweDMxLDB4QTIsMHgy
OCwweDI4LDB4QkEsMHg3RiwweDU1LAorICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHgyMiwweEFB
LDB4MkYsMHhBNSwweDAzLDB4MzksMHhFMiwweDMwLDB4REUsMHgyQSwweDAyLDB4OUYsCisgICAg
MHgyMywweDM5LDB4QzIsMHgyOCwweDc1LDB4QjcsMHhBQSwweDNBLDB4MjQsMHgzMSwweEMyLDB4
MzAsMHg3RCwweEFCLDB4QkEsMHhGOCwKKyAgICAweDI0LDB4MzksMHhFMywweDMwLDB4RUIsMHhF
RSwweEE1LDB4RTEsMHgyNCwweDM5LDB4QzIsMHgyOCwweEZBLDB4N0EsMHg2OCwweDdCLAorICAg
IDB4RTMsMHgzMCwweEEyLDB4MjgsMHgxNywweEJGLDB4QjYsMHhBOCwweDAzLDB4MzksMHhBMSww
eDI4LDB4MEUsMHgyRSwweDlGLDB4QkYsCisgICAgMHgyMywweDM5LDB4QzIsMHgzMCwweDYyLDB4
QUEsMHg4RSwweDgzLDB4MjQsMHgzOSwweEUzLDB4MzgsMHhBRCwweEJELDB4MzcsMHhBRCwKKyAg
ICAweDQ0LDB4NDEsMHhFMiwweDMwLDB4QUEsMHhBRiwweEVBLDB4NjIsMHgyNCwweDM5LDB4QzMs
MHgyOCwweEY4LDB4N0UsMHhGQiwweEZFLAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhENiww
eDVDLDB4RUUsMHhCOCwweDAzLDB4MzEsMHhBMiwweDI4LDB4QUQsMHhBRiwweEFBLDB4MkUsCisg
ICAgMHgwMywweDMxLDB4QTEsMHgyOCwweEZFLDB4RkYsMHhEQywweDBFLDB4MDMsMHgzMSwweEMy
LDB4MjgsMHhBNSwweEE1LDB4QTMsMHgwOCwKKyAgICAweDY0LDB4NDEsMHhFMiwweDMwLDB4QkQs
MHhCRCwweEFCLDB4MkIsMHhBNSwweDQ5LDB4NjQsMHg0OSwweDIxLDB4MkYsMHhBRCwweDMzLAor
ICAgIDB4RTYsMHg1OSwweEE1LDB4NTEsMHhCMSwweEE1LDB4QUQsMHgwQiwweDQ4LDB4NjIsMHgw
NiwweDVBLDB4RTcsMHg1NSwweDlGLDB4NDksCisgICAgMHg2OCwweDZBLDB4MDYsMHg1QSwweDNE
LDB4QjUsMHhERSwweEY3LDB4NjgsMHg2QSwweEU2LDB4NTksMHgwOCwweDBBLDB4MkEsMHhBNywK
KyAgICAweEE5LDB4NzIsMHg0OCwweDZBLDB4NUMsMHhGRSwweEUwLDB4M0QsMHhBOSwweDcyLDB4
NDgsMHg2QSwweDIyLDB4QkEsMHhGNywweEZFLAorICAgIDB4QzksMHg3MiwweDY4LDB4NkEsMHhC
OCwweEJCLDB4QkEsMHg5RiwweENBLDB4N0EsMHgyNywweDYyLDB4QkEsMHg4MiwweDg2LDB4MDgs
CisgICAgMHhBOSwweDcyLDB4NjgsMHg2QSwweDBFLDB4MDMsMHhCRiwweDk4LDB4QTksMHg3Miww
eDg4LDB4NkEsMHhGNCwweEE3LDB4OTQsMHgyNCwKKyAgICAweEM5LDB4N0EsMHg4OCwweDcyLDB4
NzAsMHg2RiwweERBLDB4QjIsMHhFOSwweDdBLDB4ODgsMHg3MiwweEQ5LDB4RjUsMHhBMiwweEIz
LAorICAgIDB4RTksMHg3QSwweEE5LDB4NzIsMHhDRCwweEY2LDB4REMsMHg1RiwweEU5LDB4N0Es
MHhBOSwweDcyLDB4RkQsMHg4MCwweEUyLDB4NkUsCisgICAgMHhFOSwweDdBLDB4ODksMHg3Miww
eEJBLDB4OTIsMHgyQiwweEJBLDB4RTksMHg3QSwweEE4LDB4NzIsMHhERiwweDcyLDB4NzMsMHhE
QSwKKyAgICAweDBBLDB4N0IsMHg4OCwweDZBLDB4RUUsMHhCRiwweEI1LDB4MkYsMHgyQSwweDgz
LDB4QzksMHg3MiwweEQ3LDB4M0YsMHhGNSwweEZFLAorICAgIDB4MkEsMHg4MywweEM5LDB4N0Es
MHhGRCwweEI0LDB4QUEsMHhERCwweDJBLDB4OEIsMHhBOCwweDdBLDB4MkYsMHhFRSwweDdBLDB4
NzYsCisgICAgMHgwQSwweDgzLDB4QTksMHg3QSwweEUyLDB4QUIsMHg4OSwweEVCLDB4RUEsMHg3
QSwweEE5LDB4N0EsMHhFRCwweDVELDB4QTgsMHhBOCwKKyAgICAweDBBLDB4ODMsMHhBOSwweDcy
LDB4QTUsMHhBRCwweEFFLDB4QUUsMHgwQiwweDgzLDB4Q0EsMHg3QSwweEJGLDB4OTUsMHhBRiww
eDZCLAorICAgIDB4MEIsMHg4MywweENBLDB4N0EsMHhERSwweEQ3LDB4REUsMHg3OSwweDRCLDB4
OEIsMHhDOSwweDdBLDB4MkIsMHhBRiwweEY1LDB4RkQsCisgICAgMHgyQSwweDgzLDB4QzksMHg3
QSwweEYwLDB4QTIsMHhBNiwweDBFLDB4MkEsMHg4MywweEM5LDB4N0EsMHhENywweEU4LDB4QzAs
MHhBOCwKKyAgICAweDBBLDB4ODMsMHhDOSwweDdBLDB4MjgsMHgwOSwweEVELDB4ODMsMHg0Qiww
eDhCLDB4RTksMHg3QSwweEE4LDB4OEIsMHhCRCwweDhELAorICAgIDB4NEEsMHg4MywweDA5LDB4
N0IsMHg4RSwweDZGLDB4Q0IsMHhBRiwweDRCLDB4OEIsMHhFOSwweDdBLDB4MEEsMHgzQiwweDlF
LDB4N0YsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDA2LDB4QUEsMHhDMywweEUwLDB4MDMs
MHg0MSwweEEyLDB4MzAsMHg3OCwweEVBLDB4QkUsMHhFRiwKKyAgICAweDAzLDB4NDEsMHhBMiww
eDM4LDB4QUIsMHhCQiwweEVCLDB4Q0QsMHhFMiwweDM4LDB4QTEsMHgzMCwweDA4LDB4MEEsMHgw
OCwweEM4LAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhCQSwweEE1LDB4OTcsMHgxNywweDIz
LDB4NDEsMHhFMiwweDM4LDB4NkYsMHg3NSwweEZFLDB4RkUsCisgICAgMHgyMywweDQxLDB4QzIs
MHgzOCwweEI3LDB4RUYsMHhFMCwweDUzLDB4MDMsMHg0MSwweEMyLDB4MzgsMHhFMCwweEZBLDB4
NTcsMHg3MywKKyAgICAweDAzLDB4NDEsMHhFMiwweDM4LDB4NTUsMHg1NiwweEZGLDB4NkYsMHgy
MywweDQxLDB4QzEsMHgzMCwweERGLDB4RDcsMHhCRiwweEJCLAorICAgIDB4MDMsMHg0MSwweEMy
LDB4MzgsMHhBRiwweEE3LDB4MkEsMHgzQywweDAzLDB4NDEsMHhDMiwweDM4LDB4RUIsMHhBRiww
eDI3LDB4QjcsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEEwLDB4REEsMHhGMCwweEEwLDB4
MDMsMHgzOSwweEMyLDB4MzgsMHhFRiwweEVBLDB4NkEsMHhGQiwKKyAgICAweDAzLDB4MzksMHhD
MiwweDM4LDB4MzcsMHhENywweEFGLDB4RUIsMHgwMywweDQxLDB4QzIsMHgzOCwweEU4LDB4QzAs
MHhDMiwweERFLAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhFQiwweEQzLDB4N0IsMHhEQSww
eDAzLDB4NDEsMHhBMSwweDMwLDB4N0YsMHhGQSwweEZELDB4Q0EsCisgICAgMHhFMiwweDM4LDB4
QzIsMHgzOCwweDhELDB4MEQsMHhDNSwweDJFLDB4RTIsMHgzOCwweEMyLDB4MzgsMHg4NCwweDc0
LDB4OTUsMHhBNCwKKyAgICAweEUyLDB4MzgsMHhDMiwweDM4LDB4QzEsMHhGMiwweDAwLDB4MDgs
MHgwMywweDQxLDB4QTIsMHgzOCwweEI3LDB4QkYsMHhCQiwweEEyLAorICAgIDB4MDMsMHg0MSww
eEMyLDB4MzgsMHg1NywweDdGLDB4RUIsMHg0QiwweDY3LDB4NzIsMHgwMywweDQxLDB4MjksMHgw
RCwweDBELDB4MEQsCisgICAgMHg4NywweDcyLDB4MjYsMHg2QSwweEEwLDB4QUEsMHg3QSwweDc4
LDB4NDcsMHg2QSwweDY0LDB4NTEsMHhFOCwweDY4LDB4RjgsMHhGQSwKKyAgICAweEE0LDB4NTEs
MHgwMywweDQxLDB4RkMsMHhERSwweDdFLDB4RkEsMHg0NCwweDQ5LDB4QzIsMHgzMCwweEU4LDB4
QkUsMHhGRiwweEZFLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHgyOCwweEY4LDB4RjgsMHhF
MCwweDAzLDB4MzksMHhDMiwweDMwLDB4QUEsMHhBNywweEU1LDB4RjUsCisgICAgMHgyMywweDM5
LDB4QzIsMHgzMCwweERGLDB4QkUsMHhBQiwweDJGLDB4MDMsMHgzMSwweEEyLDB4MzAsMHgwQSww
eEFBLDB4ODgsMHhFMiwKKyAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4QzIsMHhCQSwweEJBLDB4
NkUsMHgwMywweDMxLDB4QzIsMHgyOCwweEFBLDB4QkEsMHg3RiwweDVGLAorICAgIDB4MDMsMHgz
MSwweEMyLDB4MjgsMHg3RSwweDJBLDB4ODgsMHgwMiwweDAzLDB4MzEsMHhDMiwweDMwLDB4NkEs
MHhFMiwweDdDLDB4QjgsCisgICAgMHgwMywweDMxLDB4QzIsMHgyOCwweDhCLDB4Q0IsMHhGOSww
eDhFLDB4MjMsMHgzOSwweEMzLDB4MzAsMHhCQywweEZGLDB4N0YsMHg1RiwKKyAgICAweDAzLDB4
MzEsMHhDMiwweDMwLDB4RTIsMHgzRiwweDhCLDB4QUIsMHgwMywweDMxLDB4QzIsMHgyOCwweDAy
LDB4MDIsMHgyMywweDdCLAorICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHhGQSwweEVGLDB4MUUs
MHhEQiwweDI0LDB4MzksMHhDMiwweDMwLDB4QjksMHhGNywweEZDLDB4RTAsCisgICAgMHgwMyww
eDM5LDB4QzIsMHgzMCwweEEyLDB4RUIsMHhBQiwweEFBLDB4RTMsMHgzMCwweEEyLDB4MzAsMHgw
OCwweDI4LDB4MkEsMHg4RiwKKyAgICAweDI0LDB4NDEsMHhFMywweDMwLDB4RDcsMHhBQywweEFB
LDB4ODAsMHgyNCwweDM5LDB4RTMsMHgzMCwweDdCLDB4QkIsMHhBRSwweEFGLAorICAgIDB4MjQs
MHgzOSwweEUzLDB4MzAsMHgwMywweDJBLDB4NUYsMHg5RiwweDQ0LDB4NDEsMHhFMywweDMwLDB4
MkEsMHgyQSwweEE3LDB4OTUsCisgICAgMHg2NCwweDQxLDB4MDMsMHgzOSwweEZBLDB4RDgsMHg1
RiwweEY3LDB4MjQsMHgzOSwweDAzLDB4MzksMHg3NCwweEY0LDB4NTQsMHg1NywKKyAgICAweDIz
LDB4MzksMHhDMywweDMwLDB4RTIsMHg5QSwweEVFLDB4QkIsMHgyNCwweDM5LDB4RTMsMHgzOCww
eDI3LDB4QUYsMHhBQSwweEFBLAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzgsMHhGQSwweEEyLDB4
RUIsMHhGRiwweDQ0LDB4MzksMHhFMywweDM4LDB4NUYsMHhGRiwweDdFLDB4RkQsCisgICAgMHgy
NCwweDM5LDB4MDMsMHgzOSwweDU0LDB4NkQsMHhGOSwweERELDB4MjMsMHgzOSwweEUzLDB4MzAs
MHhGRSwweEQ4LDB4QTgsMHhCNiwKKyAgICAweDAzLDB4MzksMHhFMywweDMwLDB4QTksMHhFNSww
eDE3LDB4NzQsMHgyNCwweDM5LDB4RTMsMHgzMCwweDVFLDB4MTUsMHgwRiwweEI1LAorICAgIDB4
NDQsMHgzOSwweEUzLDB4MzAsMHhGNSwweEU5LDB4RkYsMHhFMywweDI0LDB4MzksMHhDMiwweDI4
LDB4M0EsMHhCOCwweEFFLDB4OUEsCisgICAgMHgyMywweDM5LDB4QzMsMHgyOCwweERGLDB4RkYs
MHgyQSwweDBBLDB4MjMsMHgzOSwweEUzLDB4MzAsMHhGRiwweEZCLDB4RkMsMHg2OCwKKyAgICAw
eEU0LDB4MzgsMHgyMywweDMxLDB4RUYsMHhFQSwweEZCLDB4QUIsMHgyMywweDM5LDB4RTMsMHgz
MCwweEQ3LDB4RkYsMHhFQywweEJCLAorICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHg4RCwweEFF
LDB4RUUsMHhGRSwweDAzLDB4MzEsMHhDMywweDMwLDB4RjgsMHhGOCwweEJCLDB4ODcsCisgICAg
MHgwMywweDMxLDB4QzIsMHgyOCwweEY3LDB4QTcsMHgwOSwweDAzLDB4MDMsMHgzMSwweEMyLDB4
MjgsMHhGNywweEZFLDB4MEEsMHhGOCwKKyAgICAweEUyLDB4MzAsMHhDMiwweDI4LDB4NTYsMHhE
NywweEQ3LDB4NTcsMHhFMiwweDI4LDB4QTIsMHgyOCwweEFCLDB4ODAsMHhFQSwweDhBLAorICAg
IDB4MDMsMHgzMSwweEMyLDB4MjgsMHhEOSwweEZCLDB4NkYsMHg3NSwweDAzLDB4MzEsMHg4MSww
eDIwLDB4NzIsMHhFMiwweEVBLDB4QUIsCisgICAgMHhDMiwweDI4LDB4ODEsMHgyMCwweDc4LDB4
M0UsMHgyQSwweDAwLDB4RTMsMHgzMCwweDgxLDB4MjAsMHhBOSwweDYzLDB4Q0EsMHhCQiwKKyAg
ICAweEEyLDB4MjgsMHg4MSwweDIwLDB4RUIsMHgyQiwweEVBLDB4QTAsMHhBMiwweDI4LDB4ODIs
MHgyMCwweDNGLDB4QUYsMHhCQSwweEZBLAorICAgIDB4QTIsMHgyOCwweDYxLDB4MjAsMHhBRiww
eEQ3LDB4RkYsMHhGMiwweEMyLDB4MjgsMHg2MSwweDIwLDB4OEEsMHhCQiwweEY3LDB4N0YsCisg
ICAgMHhFMywweDMwLDB4ODEsMHgyMCwweDJCLDB4QjcsMHhCRCwweEQ1LDB4RTMsMHgzMCwweEEy
LDB4MjgsMHgyMCwweDAyLDB4REIsMHg1RiwKKyAgICAweDAzLDB4MzEsMHhBMiwweDI4LDB4MkEs
MHhBQSwweDlGLDB4RjUsMHgyNCwweDM5LDB4QzIsMHgyOCwweDNBLDB4QkEsMHhFRCwweEQ1LAor
ICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHg2NywweEY3LDB4MzUsMHhGRiwweDA0LDB4MzEsMHhF
MywweDMwLDB4N0QsMHg2NywweDFELDB4NTcsCisgICAgMHgwMywweDMxLDB4QzIsMHgyOCwweDdF
LDB4QTgsMHhBRSwweEI1LDB4MDMsMHgzMSwweEMyLDB4MjgsMHhGNSwweEFGLDB4MkEsMHg4OCwK
KyAgICAweDQ0LDB4MzksMHhFMiwweDMwLDB4Q0YsMHhCRCwweDhGLDB4MkQsMHgyMywweDM5LDB4
RTIsMHgzMCwweEFGLDB4QUUsMHhDQSwweDI4LAorICAgIDB4MjQsMHgzOSwweEMyLDB4MjgsMHg4
MCwweEUyLDB4RUEsMHg2MCwweDAzLDB4MzksMHg4MiwweDI4LDB4MDIsMHg4MCwweEFCLDB4QjUs
CisgICAgMHgwMywweDMxLDB4QzIsMHgyOCwweDVFLDB4MjcsMHhBNSwweDk1LDB4MDMsMHgzMSww
eEMyLDB4MjgsMHgyRiwweDlGLDB4RjcsMHhGRSwKKyAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4
ODgsMHgyRSwweDNFLDB4M0YsMHg0NCwweDM5LDB4RTMsMHgzMCwweEJGLDB4RkQsMHhBRiwweDJG
LAorICAgIDB4QTUsMHg0OSwweDIzLDB4MzksMHhCRCwweDJELDB4MkYsMHgyQiwweEM1LDB4NTEs
MHg4NSwweDQ5LDB4QjEsMHgwQiwweEE4LDB4MDIsCisgICAgMHgwNiwweDVBLDB4QzYsMHg1MSww
eDlELDB4QjUsMHgyMywweDMyLDB4MjcsMHg2MiwweEM2LDB4NTksMHgwQiwweEZCLDB4NkEsMHhC
QSwKKyAgICAweDI3LDB4NjIsMHhDNiwweDUxLDB4ODAsMHhCOCwweEVBLDB4MkEsMHg0NywweDYy
LDB4MDcsMHg2MiwweEFBLDB4QUUsMHgyRiwweDM5LAorICAgIDB4NjgsMHg2QSwweDI3LDB4NjIs
MHgwRSwweEJFLDB4REYsMHhBQSwweDg4LDB4NkEsMHg0OCwweDZBLDB4REMsMHhFRSwweDk3LDB4
QkQsCisgICAgMHhDOSwweDcyLDB4NDgsMHg2QSwweEJGLDB4MkYsMHhCRiwweERGLDB4RUEsMHg3
QSwweEE5LDB4NzIsMHhCQiwweEVCLDB4N0YsMHhENiwKKyAgICAweEVBLDB4N0EsMHg4OCwweDZB
LDB4NUUsMHg3QiwweDdGLDB4MkIsMHhFOSwweDdBLDB4ODgsMHg2QSwweEU1LDB4ODksMHhFMCww
eEFFLAorICAgIDB4RTksMHg3QSwweDg4LDB4NzIsMHhGMiwweEU1LDB4QjUsMHhBQywweEVBLDB4
N0EsMHg4OSwweDcyLDB4NUIsMHhGRiwweEJFLDB4OEUsCisgICAgMHhDOSwweDdBLDB4ODgsMHg3
MiwweEIwLDB4RkEsMHhEMiwweEEwLDB4RTksMHg3QSwweDg4LDB4NzIsMHhBRSwweEFELDB4QkYs
MHhGRiwKKyAgICAweEVBLDB4N0EsMHg4OCwweDcyLDB4QUIsMHhFQSwweDcyLDB4NjIsMHhFOSww
eDdBLDB4QTgsMHg3MiwweEZBLDB4RUUsMHhGOSwweDI5LAorICAgIDB4MEEsMHg4MywweEE5LDB4
NzIsMHgyOSwweENCLDB4QTIsMHhFQiwweDJBLDB4ODMsMHhDOSwweDdBLDB4RUIsMHhBQSwweDJG
LDB4QkQsCisgICAgMHgwQSwweDgzLDB4QzksMHg3QSwweDU0LDB4M0EsMHhBQSwweEZBLDB4MEEs
MHg4MywweEM5LDB4N0EsMHg1NywweEE4LDB4QTgsMHhGNywKKyAgICAweDJBLDB4ODMsMHhBOSww
eDdBLDB4QjcsMHhBMywweEFBLDB4QjIsMHgyQSwweDgzLDB4QzksMHg3QSwweDc1LDB4RkYsMHhB
MiwweEEyLAorICAgIDB4MEEsMHg4MywweEE5LDB4NzIsMHhCRSwweEJBLDB4NUUsMHg3QywweDBB
LDB4ODMsMHhBOSwweDcyLDB4RkYsMHhBMiwweEZBLDB4NUIsCisgICAgMHgwQiwweDgzLDB4Q0Es
MHg3QSwweEVBLDB4RkYsMHhGRCwweEZELDB4RUEsMHg3QSwweEE5LDB4NzIsMHgyMCwweDIyLDB4
REEsMHhBMCwKKyAgICAweDJBLDB4ODMsMHhBOSwweDcyLDB4OEEsMHhFRiwweDdGLDB4N0UsMHgy
QiwweDgzLDB4QTksMHg3MiwweEFBLDB4MkQsMHhCRiwweEY3LAorICAgIDB4MkEsMHg4MywweEM5
LDB4N0EsMHhCMiwweEI4LDB4RkUsMHhERiwweDRCLDB4OEIsMHhFQSwweDdBLDB4Q0IsMHgyMSww
eDhFLDB4NUQsCisgICAgMHg0QiwweDgzLDB4RTksMHg3QSwweEZFLDB4REUsMHhBQiwweDdCLDB4
MEEsMHg4MywweEM5LDB4N0EsMHhCMCwweEZGLDB4QkEsMHhGNiwKKyAgICAweDAzLDB4NDEsMHhB
MSwweDMwLDB4QjAsMHhGMiwweEJBLDB4OEIsMHhFMiwweDM4LDB4QTEsMHgzMCwweEJDLDB4RkIs
MHgyOCwweEJDLAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHg1NSwweDVFLDB4RUEsMHhBRiww
eDIzLDB4NDEsMHhDMiwweDM4LDB4NzUsMHgzRCwweEJELDB4OUUsCisgICAgMHgyMywweDQxLDB4
QzIsMHgzOCwweEFELDB4RTcsMHgyNiwweEFGLDB4MjMsMHg0MSwweEUyLDB4MzgsMHhENywweEQ3
LDB4NUUsMHhCOCwKKyAgICAweDAyLDB4MzksMHhDMiwweDM4LDB4NkEsMHhFQSwweDY4LDB4QTgs
MHgwMiwweDM5LDB4QzIsMHgzOCwweEZGLDB4NkYsMHg1QSwweDdDLAorICAgIDB4MjIsMHg0MSww
eEMyLDB4MzgsMHg1QiwweDVELDB4N0QsMHg3RiwweDAzLDB4NDEsMHhBMSwweDMwLDB4OEIsMHhB
QiwweEZELDB4RTUsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEY0LDB4NUEsMHg1QiwweDdB
LDB4MjMsMHgzOSwweEMyLDB4MzgsMHhCRCwweEQ3LDB4RkQsMHg1RiwKKyAgICAweDAzLDB4Mzks
MHhBMSwweDMwLDB4MkEsMHhBRiwweEU2LDB4RUEsMHhFMiwweDM4LDB4QzIsMHgzOCwweDA4LDB4
MkEsMHhDQSwweDdCLAorICAgIDB4MDIsMHgzOSwweEMyLDB4MzgsMHhGQiwweEY3LDB4N0YsMHhF
QiwweEUyLDB4MzgsMHhDMiwweDMwLDB4QUMsMHgwRSwweEM5LDB4NEYsCisgICAgMHhFMiwweDM4
LDB4QzIsMHgzOCwweDA4LDB4MDIsMHhBMiwweDIwLDB4MDMsMHg0MSwweEMyLDB4MzgsMHhBQSww
eERFLDB4RjksMHg0RiwKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4RkMsMHhGOCwweEZBLDB4
RkQsMHgwMywweDM5LDB4QzIsMHgzOCwweEZBLDB4QkIsMHhERiwweEQ1LAorICAgIDB4MDMsMHg0
MSwweEEyLDB4MzgsMHhGQSwweDdBLDB4RkUsMHhCOCwweEUyLDB4MzgsMHhBMiwweDMwLDB4QTIs
MHg5QiwweEJDLDB4M0MsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEFCLDB4QUEsMHhCQSww
eEU3LDB4NjcsMHg3MiwweDAyLDB4NDEsMHgwRCwweDJELDB4QUQsMHgzNSwKKyAgICAweDg3LDB4
NzIsMHgwNiwweDYyLDB4NzgsMHg2OCwweDZBLDB4RUEsMHgwNiwweDZBLDB4NjMsMHg0OSwweEUw
LDB4RTgsMHhGQywweDdFLAorICAgIDB4ODQsMHg1MSwweDIzLDB4NDEsMHg3QywweEZFLDB4N0Us
MHhDQiwweDIzLDB4NDEsMHhFMiwweDMwLDB4RkUsMHhGQywweDdDLDB4NUMsCisgICAgMHgwMyww
eDM5LDB4QzIsMHgzMCwweEEwLDB4RkUsMHhBRiwweEU3LDB4MDMsMHgzOSwweEMyLDB4MzAsMHhG
NSwweEQ1LDB4QUIsMHhCRCwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4Q0IsMHg2RiwweEVB
LDB4Q0IsMHhFMywweDMwLDB4QzIsMHgyOCwweEUwLDB4RkMsMHhCMCwweEUwLAorICAgIDB4MDMs
MHgzMSwweEEyLDB4MjgsMHhCQiwweEFFLDB4RkUsMHg1OCwweEUzLDB4MzAsMHhDMiwweDI4LDB4
QkMsMHhGNiwweDNELDB4MDksCisgICAgMHgyNCwweDM5LDB4QzIsMHgzMCwweDJBLDB4OEIsMHhF
NywweEZGLDB4MjMsMHgzOSwweEEyLDB4MjgsMHhBMiwweEZCLDB4RjcsMHhGNywKKyAgICAweDAz
LDB4MzEsMHhDMiwweDMwLDB4QTYsMHhBRSwweDhCLDB4QUIsMHgwMywweDMxLDB4QzIsMHgzMCww
eERBLDB4NTAsMHhGMiwweEFBLAorICAgIDB4RTMsMHgzMCwweEMyLDB4MjgsMHgyQSwweDJGLDB4
QkMsMHgyOCwweDIzLDB4MzksMHhDMiwweDI4LDB4RkYsMHhGRiwweEZCLDB4QTIsCisgICAgMHgw
MywweDMxLDB4QzIsMHgzMCwweDBCLDB4MkIsMHgyRiwweDBBLDB4MjMsMHgzOSwweEUzLDB4MzAs
MHg3QSwweDdBLDB4REYsMHhENywKKyAgICAweDAzLDB4MzksMHhFMywweDMwLDB4OEIsMHhFQiww
eEYyLDB4RDIsMHgwMywweDM5LDB4QzIsMHgzMCwweEE4LDB4MzgsMHhGRiwweDZGLAorICAgIDB4
MjQsMHgzOSwweEMyLDB4MzAsMHhBMCwweEZBLDB4N0YsMHhFRCwweDI0LDB4MzksMHhFMywweDMw
LDB4Q0YsMHhFNSwweEZGLDB4RjcsCisgICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweDhCLDB4OEIs
MHg4RSwweDlDLDB4MjQsMHgzOSwweEUzLDB4MzAsMHgzRiwweDJGLDB4QjMsMHhGQSwKKyAgICAw
eDQ0LDB4NDEsMHhFMiwweDMwLDB4QjIsMHhGOCwweEVFLDB4N0QsMHg0MywweDM5LDB4RTIsMHgz
OCwweEZBLDB4QUEsMHhBQSwweEJGLAorICAgIDB4NDQsMHg0MSwweDAzLDB4MzksMHhCRCwweEFC
LDB4QUQsMHhGNywweDQ0LDB4NDEsMHgwMywweDM5LDB4NzcsMHg3RSwweEI3LDB4NjgsCisgICAg
MHg0NCwweDQxLDB4RTMsMHgzOCwweDdGLDB4NEEsMHhFQSwweEZGLDB4RTMsMHgzOCwweDIzLDB4
MzEsMHhFRiwweEFBLDB4QUUsMHhBRiwKKyAgICAweDAzLDB4MzksMHhDMywweDMwLDB4MDAsMHhF
MiwweERBLDB4QTMsMHgyNCwweDQxLDB4RTMsMHgzMCwweEFGLDB4QkYsMHhBOSwweDhBLAorICAg
IDB4MjQsMHgzOSwweEMyLDB4MzAsMHhGQSwweEZFLDB4QkUsMHg3QywweDI0LDB4MzksMHhDMiww
eDMwLDB4QUQsMHhFQiwweEFBLDB4RTIsCisgICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweDYzLDB4
N0IsMHg3RiwweEVELDB4MDMsMHgzMSwweEMyLDB4MzAsMHgwMCwweEFCLDB4QUQsMHhFQSwKKyAg
ICAweDQzLDB4MzksMHhFMiwweDMwLDB4QkQsMHhFQSwweEFDLDB4RUIsMHgyMywweDM5LDB4MDMs
MHgzMSwweDRDLDB4NTAsMHg3MCwweDVBLAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHg1Riww
eEZGLDB4RUIsMHhBOCwweDAzLDB4MzEsMHhFMiwweDMwLDB4QzEsMHhGQSwweEY3LDB4NUUsCisg
ICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweEJGLDB4RkYsMHhFQiwweENCLDB4MDMsMHgzOSwweEEy
LDB4MjgsMHgyMiwweDI4LDB4MkEsMHgyQiwKKyAgICAweDQ0LDB4MzksMHhFMywweDMwLDB4NzUs
MHg3NywweDdDLDB4RkEsMHgwMywweDMxLDB4QzIsMHgzMCwweEMyLDB4RUUsMHhERSwweDhBLAor
ICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHg1RCwweEZELDB4RkYsMHhBMCwweDAzLDB4MzEsMHhD
MiwweDI4LDB4NTUsMHg1NywweEI3LDB4MUYsCisgICAgMHgwMywweDMxLDB4QzIsMHgyOCwweEQ1
LDB4RjUsMHhCQSwweDIwLDB4MjQsMHgzMSwweEMyLDB4MjgsMHg1RiwweDVCLDB4NzMsMHg2RiwK
KyAgICAweEUzLDB4MzAsMHhDMiwweDI4LDB4REQsMHhGNywweDU1LDB4N0YsMHhFMywweDI4LDB4
QTIsMHgyOCwweDdBLDB4RDgsMHhBQSwweEFCLAorICAgIDB4QzIsMHgyOCwweEEyLDB4MjAsMHg1
QSwweEVCLDB4MEIsMHg4RiwweEMyLDB4MjgsMHhBMiwweDIwLDB4N0YsMHhFQywweEVCLDB4Qjcs
CisgICAgMHhDMiwweDI4LDB4ODIsMHgyMCwweDVBLDB4NUEsMHhEQywweEZBLDB4QzMsMHgyOCww
eDgyLDB4MjAsMHg1RCwweDU3LDB4RkMsMHhBQSwKKyAgICAweEMyLDB4MjAsMHg2MSwweDE4LDB4
RjcsMHhGRiwweEJBLDB4QTIsMHhBMiwweDI4LDB4ODEsMHgyMCwweDBGLDB4MTUsMHhGNywweDc4
LAorICAgIDB4QTIsMHgyOCwweDYxLDB4MjAsMHgyQSwweEJBLDB4QkIsMHhCRiwweEUyLDB4MzAs
MHg4MiwweDIwLDB4QkEsMHgyRiwweEZCLDB4RjUsCisgICAgMHgwMywweDMxLDB4QTIsMHgyOCww
eDNBLDB4QkUsMHg1RiwweEQ1LDB4MDMsMHgzMSwweEEyLDB4MjgsMHgyMiwweDJDLDB4MkUsMHhC
RCwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4QTgsMHg4MCwweEY4LDB4NUYsMHgwMywweDMx
LDB4QTIsMHgyOCwweDhDLDB4OEUsMHg1NywweDU1LAorICAgIDB4NDQsMHgzOSwweEEyLDB4Mjgs
MHgyQiwweEFGLDB4QUYsMHhGRCwweDY1LDB4NDEsMHgwMywweDMxLDB4QkUsMHhFOCwweEUzLDB4
N0QsCisgICAgMHgyNCwweDM5LDB4QzIsMHgyOCwweEU4LDB4NzgsMHg1RSwweDVFLDB4RTMsMHgz
MCwweEEyLDB4MjgsMHhFMywweEMyLDB4QkYsMHg4QiwKKyAgICAweDAzLDB4MzEsMHhDMiwweDI4
LDB4RUYsMHg4QSwweEFCLDB4M0YsMHgyMywweDM5LDB4QzIsMHgyOCwweERGLDB4RjcsMHhFMiww
eEFCLAorICAgIDB4MjMsMHgzOSwweEUzLDB4MzAsMHhGNywweEFGLDB4QUYsMHgwRCwweEE1LDB4
NDksMHgwMywweDM5LDB4QTUsMHgyNSwweEFGLDB4MkIsCisgICAgMHgwNiwweDVBLDB4NjUsMHg0
MSwweEFELDB4OEIsMHhBQiwweEVBLDB4MDYsMHg1QSwweEE1LDB4NTEsMHhBQiwweDJFLDB4MDks
MHhBMiwKKyAgICAweEM2LDB4NTksMHgwNSwweDUyLDB4QUIsMHhFRSwweEZCLDB4RUEsMHgyNyww
eDYyLDB4QzUsMHg1OSwweEE3LDB4QUQsMHg4QiwweEEyLAorICAgIDB4NDgsMHg2QSwweEU2LDB4
NTksMHhCQSwweEZELDB4REIsMHg4MiwweDg4LDB4NkEsMHgwNiwweDVBLDB4RDcsMHhENywweERG
LDB4QUEsCisgICAgMHhBOSwweDcyLDB4NDcsMHg2MiwweEVGLDB4MkQsMHhBRCwweDNCLDB4ODks
MHg2QSwweDQ4LDB4NkEsMHhGQSwweEEwLDB4ODIsMHg4QiwKKyAgICAweDg4LDB4NkEsMHg0OCww
eDZBLDB4QUYsMHhBQSwweEFBLDB4REYsMHhDQSwweDdBLDB4NjgsMHg2QSwweDhCLDB4MDMsMHgy
QiwweEJELAorICAgIDB4RTksMHg3QSwweDY4LDB4NkEsMHgyMiwweEZCLDB4RkEsMHhGNywweEU5
LDB4N0EsMHhBOSwweDcyLDB4RkQsMHhCQiwweEFGLDB4RDUsCisgICAgMHhFOSwweDdBLDB4Njgs
MHg2QSwweEJBLDB4OUYsMHhGRSwweEE4LDB4QzksMHg3QSwweDY4LDB4NkEsMHg4MCwweDI4LDB4
RUEsMHhGQywKKyAgICAweEU5LDB4N0EsMHg4OCwweDcyLDB4NjMsMHhCMiwweDAzLDB4QUYsMHhF
OSwweDdBLDB4ODgsMHg3MiwweEZGLDB4QkQsMHgyQiwweDAwLAorICAgIDB4RUEsMHg3QSwweDg4
LDB4NzIsMHg4QSwweEJBLDB4NkEsMHg3QywweEU5LDB4N0EsMHhBOSwweDcyLDB4ODIsMHgwQiww
eEFGLDB4NkQsCisgICAgMHhFOSwweDdBLDB4QTgsMHg3MiwweDc5LDB4N0EsMHhBMiwweEVBLDB4
RTksMHg3QSwweEE5LDB4NzIsMHhCOCwweEU0LDB4QzAsMHhCMCwKKyAgICAweEM5LDB4N0EsMHg4
OCwweDcyLDB4QkMsMHhEQiwweEJCLDB4N0UsMHhDOSwweDdBLDB4ODgsMHg3MiwweDJCLDB4MkIs
MHhBRiwweDE1LAorICAgIDB4MEEsMHg4MywweEE5LDB4NzIsMHgyMiwweEJGLDB4RjksMHhGRiww
eDJCLDB4ODMsMHg4OCwweDcyLDB4QTgsMHhBMywweEJELDB4REYsCisgICAgMHhFQSwweDdBLDB4
QTgsMHg3MiwweEI4LDB4RkUsMHhCQywweEFBLDB4RUEsMHg3QSwweDg4LDB4NzIsMHhEMiwweEJB
LDB4QUEsMHhBOCwKKyAgICAweDJCLDB4ODMsMHhDOSwweDdBLDB4RkQsMHg1RCwweEI3LDB4RDUs
MHgwQSwweDgzLDB4QTksMHg3MiwweDIwLDB4QjYsMHg5RSwweEEyLAorICAgIDB4MkIsMHg4Myww
eEM5LDB4N0EsMHg1RSwweEJGLDB4M0YsMHhBRCwweDJCLDB4ODMsMHhBOCwweDdBLDB4N0IsMHgy
QSwweDIyLDB4OEEsCisgICAgMHgwQSwweDgzLDB4QTgsMHg3MiwweDg5LDB4MkYsMHhBQiwweDhF
LDB4MEEsMHg4MywweEM5LDB4N0EsMHhDMCwweEFBLDB4MDAsMHhCRSwKKyAgICAweEVBLDB4ODIs
MHgwQSwweDdCLDB4RUYsMHhGNSwweDZBLDB4RUYsMHgyQSwweDgzLDB4RUEsMHg3QSwweDlFLDB4
QjYsMHg3NiwweDczLAorICAgIDB4MDMsMHg0MSwweEExLDB4MzAsMHhBOCwweEJDLDB4NzYsMHhE
NiwweDIzLDB4NDEsMHhDMiwweDM4LDB4RTUsMHg1RCwweEVGLDB4RUYsCisgICAgMHgwMywweDQx
LDB4QTEsMHgzMCwweEFGLDB4MzksMHgwRSwweDJBLDB4MDMsMHgzOSwweEMyLDB4MzgsMHhBQSww
eDJCLDB4M0QsMHg5NiwKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4MDMsMHhBQiwweEE4LDB4
NzgsMHgwMywweDQxLDB4QzIsMHgzOCwweDI4LDB4QkEsMHgxNiwweEQ1LAorICAgIDB4MDIsMHg0
MSwweEUyLDB4MzgsMHhCMiwweDM4LDB4NUUsMHg1RSwweDAzLDB4NDEsMHhBMSwweDMwLDB4RkUs
MHhGOCwweEFBLDB4MkEsCisgICAgMHhFMiwweDM4LDB4QTEsMHgzMCwweEZGLDB4REYsMHhCRSww
eEU4LDB4MDMsMHg0MSwweEExLDB4MzAsMHgyOSwweEFCLDB4RUIsMHhGQiwKKyAgICAweEUyLDB4
MzgsMHhBMSwweDMwLDB4QTAsMHgyQSwweEJFLDB4MEEsMHgwMiwweDQxLDB4RTIsMHgzOCwweDVG
LDB4NTcsMHg4NSwweERELAorICAgIDB4MDMsMHg0MSwweEExLDB4MzAsMHhFQSwweDdFLDB4N0Es
MHg4MiwweDIzLDB4NDEsMHhDMiwweDM4LDB4N0IsMHg1RiwweDVELDB4N0YsCisgICAgMHgyMiww
eDQxLDB4QzIsMHgzOCwweEQ1LDB4RDcsMHg3NywweDdGLDB4RTIsMHgzOCwweEExLDB4MzAsMHhG
QywweEZFLDB4QkMsMHhBMiwKKyAgICAweDAyLDB4NDEsMHhDMiwweDM4LDB4NTUsMHhFRCwweDgz
LDB4NjgsMHgwMywweDM5LDB4QzIsMHgzOCwweEVCLDB4RUIsMHgyQiwweDRGLAorICAgIDB4MDMs
MHgzOSwweEMyLDB4MzgsMHhENywweEZCLDB4QUEsMHhENiwweDAyLDB4NDEsMHhBMSwweDMwLDB4
RkUsMHhGQSwweEY4LDB4QjksCisgICAgMHhFMiwweDM4LDB4QTIsMHgzMCwweDNBLDB4QUIsMHhF
QSwweEFDLDB4RTIsMHgzOCwweEEyLDB4MzAsMHg3OCwweEI5LDB4QTgsMHg4QSwKKyAgICAweEUy
LDB4MzgsMHhBMSwweDMwLDB4OEEsMHg4OCwweEZGLDB4NUEsMHgyNiwweDZBLDB4QzEsMHgzMCww
eDNELDB4MzUsMHhCNSwweEI1LAorICAgIDB4NjYsMHg2QSwweEM1LDB4NTksMHhBMCwweEUyLDB4
N0EsMHg3QSwweEU1LDB4NTksMHg4NCwweDUxLDB4NUMsMHg3QywweEY3LDB4RUIsCisgICAgMHhB
NCwweDUxLDB4NjQsMHg0OSwweDZGLDB4NUUsMHg1RSwweEUyLDB4NjQsMHg0OSwweEUyLDB4MzAs
MHg1NCwweDVFLDB4RDYsMHhERiwKKyAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4RTUsMHhDOSww
eEE4LDB4RTAsMHgwMywweDM5LDB4QzIsMHgzMCwweEFFLDB4QTcsMHhDRiwweEFGLAorICAgIDB4
MjQsMHgzMSwweEMyLDB4MzAsMHhFNywweERELDB4RjcsMHhERiwweDAzLDB4MzEsMHhDMiwweDMw
LDB4QUMsMHhGMCwweDU2LDB4RDcsCisgICAgMHgwMywweDMxLDB4QTIsMHgyOCwweEQ4LDB4QkUs
MHhGRiwweEZGLDB4RTMsMHgzMCwweEMyLDB4MjgsMHgyQSwweDI4LDB4QUUsMHhGRCwKKyAgICAw
eEUzLDB4MzAsMHhDMiwweDI4LDB4MkMsMHgyRiwweDNBLDB4QUIsMHgwMiwweDMxLDB4QzIsMHgy
OCwweEQ3LDB4Q0YsMHhFQSwweEFCLAorICAgIDB4MDMsMHgzMSwweEUzLDB4MzAsMHg1NSwweEU3
LDB4QkQsMHg4RCwweDAzLDB4MzksMHhBMiwweDI4LDB4QUEsMHhFMywweEFBLDB4ODIsCisgICAg
MHgwMywweDMxLDB4RTMsMHgzMCwweDE1LDB4NTUsMHg3RCwweDdGLDB4MjMsMHgzOSwweEUzLDB4
MzAsMHg2MiwweEY3LDB4NTcsMHg1NSwKKyAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4MDgsMHhG
QSwweEY2LDB4N0QsMHgwMywweDMxLDB4RTIsMHgzMCwweEQ1LDB4REUsMHhGNSwweEU1LAorICAg
IDB4MDMsMHgzMSwweEMyLDB4MzAsMHhBMywweEEyLDB4MkEsMHgyQiwweDAzLDB4MzEsMHhFMiww
eDMwLDB4Q0YsMHhBQSwweDBGLDB4MjgsCisgICAgMHgwMywweDM5LDB4QzMsMHgzMCwweDg5LDB4
QzgsMHg4OCwweEU4LDB4MDMsMHgzOSwweEEyLDB4MjgsMHgyRiwweEJBLDB4RUUsMHgyRSwKKyAg
ICAweDAzLDB4MzEsMHhDMiwweDMwLDB4QTgsMHgzMCwweDVGLDB4RkYsMHgwMywweDM5LDB4RTMs
MHgzMCwweEUyLDB4QUEsMHhFRCwweDczLAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHhGMyww
eDc5LDB4RkYsMHhCRCwweDIzLDB4MzksMHhFMywweDMwLDB4QUEsMHhGMywweEQ3LDB4RDgsCisg
ICAgMHgyMywweDM5LDB4RTMsMHgzMCwweDIyLDB4MkUsMHgzRiwweDJFLDB4MjQsMHgzOSwweEUy
LDB4MzAsMHhBMCwweDdBLDB4N0UsMHg4QSwKKyAgICAweDIzLDB4MzksMHhFMywweDMwLDB4RTgs
MHhFMywweDZBLDB4NkEsMHgyNCwweDM5LDB4QzIsMHgzOCwweEFBLDB4QTgsMHg4QSwweEE5LAor
ICAgIDB4MjMsMHgzOSwweEUzLDB4MzgsMHhERiwweDU4LDB4RjgsMHhGNiwweDI0LDB4MzksMHhD
MywweDM4LDB4MDIsMHg4QiwweEFBLDB4OEEsCisgICAgMHg0NCwweDQxLDB4QzMsMHgzMCwweEZF
LDB4REEsMHhGQSwweDIyLDB4MjQsMHgzOSwweEMyLDB4MzAsMHhCMywweERGLDB4QkUsMHhDQywK
KyAgICAweDQ0LDB4MzksMHhFMywweDMwLDB4RUQsMHhFRCwweEY1LDB4ODcsMHg0NCwweDM5LDB4
MDMsMHgzMSwweDdFLDB4RkEsMHhFRSwweEFCLAorICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHhF
MiwweEEyLDB4MDAsMHhBMCwweDAzLDB4MzEsMHhDMiwweDMwLDB4MDgsMHgyQSwweDNFLDB4M0Us
CisgICAgMHg0NCwweDM5LDB4RTIsMHgzMCwweEE3LDB4MkIsMHhBQiwweEZCLDB4MjQsMHgzOSww
eEUyLDB4MzAsMHhEQywweEI4LDB4MjgsMHhBQSwKKyAgICAweDI0LDB4MzksMHhFMywweDMwLDB4
RUEsMHhGOCwweEE4LDB4MDAsMHgyNCwweDM5LDB4QzIsMHgzMCwweEJELDB4MjMsMHgwMCwweEEw
LAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHgyNywweDNDLDB4QTAsMHhBRSwweDI0LDB4Mzks
MHhFMywweDMwLDB4RkUsMHg1RSwweDdBLDB4QjIsCisgICAgMHgyMywweDM5LDB4RTMsMHgzMCww
eDVFLDB4RUUsMHhGOCwweEM4LDB4MjMsMHgzOSwweEMyLDB4MjgsMHhGRiwweEVGLDB4RkUsMHhE
MiwKKyAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4QkIsMHgzRiwweEI2LDB4MkEsMHgyNCwweDM5
LDB4QzIsMHgzMCwweEZFLDB4RkEsMHhGMiwweDdBLAorICAgIDB4RTMsMHgzMCwweEMyLDB4Mjgs
MHg1QSwweDJBLDB4MEQsMHgzRCwweDAzLDB4MzEsMHhDMiwweDI4LDB4NTcsMHg3RSwweEZFLDB4
MzQsCisgICAgMHgwMywweDMxLDB4QTIsMHgyMCwweDZGLDB4RkYsMHhBQiwweEE4LDB4MDMsMHgz
MSwweEMyLDB4MjgsMHg1NSwweERELDB4RjcsMHg0QiwKKyAgICAweEUzLDB4MjgsMHhBMiwweDIw
LDB4NTcsMHg5RSwweEVBLDB4MDAsMHhFMywweDI4LDB4QTIsMHgyOCwweEZELDB4RkYsMHhGMyww
eEYzLAorICAgIDB4QzIsMHgyOCwweEEyLDB4MjAsMHg5NywweEE1LDB4MDUsMHgwRSwweEMzLDB4
MjgsMHg4MSwweDIwLDB4RkUsMHhFMCwweDAwLDB4ODAsCisgICAgMHhDMiwweDI4LDB4ODIsMHgy
MCwweDU1LDB4RDUsMHhEQiwweEE4LDB4QzMsMHgyOCwweDgyLDB4MjAsMHhGRCwweEY1LDB4Qjcs
MHgyQiwKKyAgICAweEMyLDB4MjgsMHg4MiwweDIwLDB4RjcsMHhENSwweEY3LDB4QUUsMHhDMyww
eDI4LDB4ODEsMHgyMCwweEFBLDB4NkYsMHhCQSwweEZDLAorICAgIDB4QTIsMHgyOCwweDgyLDB4
MjAsMHhERiwweEZGLDB4QkYsMHhCQywweEMyLDB4MjgsMHg4MiwweDIwLDB4RkYsMHgyRiwweDJG
LDB4M0UsCisgICAgMHhFMiwweDI4LDB4QTIsMHgyOCwweEFCLDB4QTcsMHhGNSwweEQ1LDB4MDMs
MHgzMSwweEMyLDB4MjgsMHgwMywweDNCLDB4QTcsMHhCRCwKKyAgICAweDAzLDB4MzEsMHhBMiww
eDI4LDB4NzIsMHhFQSwweEJBLDB4RkEsMHgwMywweDMxLDB4QTIsMHgyOCwweEVGLDB4MzUsMHgz
RiwweDNFLAorICAgIDB4MjQsMHgzOSwweEMyLDB4MjgsMHhGRiwweDlGLDB4OUYsMHgzRiwweDI0
LDB4MzksMHgwMywweDMxLDB4NTUsMHhCNSwweDNGLDB4MkEsCisgICAgMHg4NSwweDQxLDB4RTIs
MHgzMCwweEFELDB4QTksMHgyRiwweDJBLDB4QzYsMHg1MSwweDYzLDB4NDEsMHhCRiwweEVBLDB4
MDksMHgwMiwKKyAgICAweDA2LDB4NUEsMHhDNiwweDUxLDB4QTksMHhFQiwweEIyLDB4M0UsMHgw
NiwweDVBLDB4QzUsMHg1MSwweEY4LDB4QUEsMHg5MiwweEUyLAorICAgIDB4MDYsMHg1QSwweEE1
LDB4NTEsMHhFQiwweEI3LDB4QkYsMHhBOCwweDQ4LDB4NkEsMHhFNiwweDU5LDB4RUYsMHhCNSww
eDNCLDB4QUQsCisgICAgMHg2OCwweDZBLDB4MDYsMHg1QSwweEU5LDB4QTUsMHhBRiwweDJGLDB4
ODgsMHg3MiwweDI3LDB4NjIsMHhBRiwweDI5LDB4MjUsMHhGMywKKyAgICAweEE5LDB4NzIsMHg2
OCwweDZBLDB4MkUsMHhBQSwweEFBLDB4RjYsMHhFQSwweDdBLDB4NjgsMHg2QSwweEZELDB4RkYs
MHhGNSwweEUzLAorICAgIDB4Q0EsMHg3MiwweDQ4LDB4NkEsMHg1RSwweDdGLDB4RUEsMHg4QSww
eEM5LDB4NzIsMHg2OCwweDZBLDB4MkQsMHhBRSwweDIzLDB4QzIsCisgICAgMHhDOSwweDdBLDB4
NjgsMHg2QSwweEVCLDB4Q0EsMHhCOCwweDlBLDB4QzksMHg3MiwweDY3LDB4NkEsMHg4QiwweEFG
LDB4NTcsMHhGRSwKKyAgICAweEVBLDB4N0EsMHg2OCwweDZBLDB4ODMsMHhBNSwweEZELDB4N0Ys
MHhDOSwweDdBLDB4NjcsMHg2QSwweEI4LDB4QUYsMHgzNywweEFELAorICAgIDB4QzksMHg3QSww
eDY3LDB4NkEsMHhBQywweDJGLDB4NkEsMHg3RSwweDBBLDB4ODMsMHhBOSwweDcyLDB4OEIsMHhF
RiwweDdGLDB4RjUsCisgICAgMHgwQSwweDgzLDB4QTgsMHg3MiwweDc4LDB4RkIsMHhCNSwweEZE
LDB4MEIsMHg4MywweDg4LDB4NzIsMHhGRCwweDdGLDB4NjgsMHhCQiwKKyAgICAweEU5LDB4N0Es
MHg4OCwweDcyLDB4QTgsMHhGNSwweERELDB4NjMsMHhFOSwweDdBLDB4ODgsMHg3MiwweEIwLDB4
QUEsMHhBQiwweERGLAorICAgIDB4RTksMHg3QSwweDg4LDB4NzIsMHg3RSwweEZFLDB4QUYsMHgy
OSwweEU5LDB4N0EsMHg4OCwweDcyLDB4OTUsMHhGNywweDdDLDB4NkUsCisgICAgMHhFQSwweDdB
LDB4QTksMHg3MiwweEVCLDB4Q0EsMHg4RCwweDZELDB4QzksMHg3QSwweDY4LDB4NzIsMHg5QSww
eEYyLDB4RTgsMHhBQSwKKyAgICAweEU5LDB4N0EsMHg4OCwweDcyLDB4QUIsMHhGRCwweDJELDB4
MEQsMHhFQSwweDdBLDB4ODksMHg3MiwweEEyLDB4ODIsMHhGMCwweEQwLAorICAgIDB4RUEsMHg3
QSwweEE5LDB4NzIsMHhCRiwweEJFLDB4QjcsMHhGNSwweEVBLDB4N0EsMHg4OCwweDcyLDB4ODIs
MHg1QSwweEI2LDB4QUEsCisgICAgMHgwQiwweDdCLDB4QTksMHg3MiwweEJELDB4REQsMHhCRSww
eEY4LDB4MkIsMHg4MywweEE5LDB4NzIsMHgyQSwweEVFLDB4RkYsMHhGRiwKKyAgICAweDBBLDB4
ODMsMHhBOSwweDcyLDB4QTIsMHhGMiwweEZELDB4QjUsMHg0QiwweDgzLDB4QzksMHg3QSwweEZE
LDB4RkYsMHgzNSwweEE3LAorICAgIDB4MkIsMHg4MywweEU5LDB4N0EsMHhGRiwweEY3LDB4REMs
MHg3RiwweDJCLDB4ODMsMHhFOSwweDdBLDB4RkEsMHhGNSwweENELDB4N0QsCisgICAgMHhFMiww
eDM4LDB4QTEsMHgzMCwweDk4LDB4MDgsMHgwMiwweDhBLDB4MDMsMHg0MSwweEMyLDB4MzgsMHhB
OSwweEY4LDB4MEEsMHhBQiwKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4RkYsMHhGRiwweDBG
LDB4OEIsMHgwMywweDQxLDB4QTEsMHgzMCwweEU2LDB4QkEsMHhBQSwweEEyLAorICAgIDB4MDMs
MHg0MSwweEMyLDB4MzgsMHg3RSwweDdGLDB4Q0YsMHhDQiwweDAyLDB4MzksMHhBMiwweDMwLDB4
MjcsMHgzQiwweEFGLDB4MkYsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEZBLDB4RkUsMHhG
QywweEY2LDB4MDMsMHg0MSwweEMyLDB4MzgsMHhCNywweDk1LDB4MkYsMHhBQiwKKyAgICAweDIz
LDB4NDEsMHhDMiwweDM4LDB4NUEsMHg3OCwweEE4LDB4RkEsMHhFMiwweDM4LDB4QTEsMHgzMCww
eDIxLDB4QTAsMHg4QSwweDgyLAorICAgIDB4MDMsMHg0MSwweEExLDB4MzAsMHgyQywweEEyLDB4
QUUsMHhGRCwweDIzLDB4MzksMHhDMiwweDM4LDB4REYsMHhGRiwweEY1LDB4NDUsCisgICAgMHhF
MiwweDM4LDB4QzIsMHgzOCwweDAwLDB4MEEsMHg5RSwweDdGLDB4MDMsMHg0MSwweEMyLDB4Mzgs
MHhEQiwweDdCLDB4QUIsMHhGRiwKKyAgICAweDIzLDB4NDEsMHhDMSwweDMwLDB4N0IsMHhGRiww
eEZGLDB4QkQsMHgwMywweDM5LDB4QzIsMHgzOCwweDVBLDB4N0UsMHgwNiwweDhGLAorICAgIDB4
MDIsMHgzOSwweEExLDB4MzAsMHg2MiwweEZBLDB4RDIsMHg3QSwweEUyLDB4MzgsMHhDMSwweDM4
LDB4QTksMHg0MywweENELDB4MjcsCisgICAgMHhBMiwweDM4LDB4RTMsMHgzMCwweEJBLDB4RkIs
MHhFQSwweEFBLDB4MDMsMHg0MSwweEExLDB4MzAsMHhCRCwweDk3LDB4QUUsMHgyRSwKKyAgICAw
eDAzLDB4NDEsMHhDMiwweDM4LDB4NUYsMHg3QiwweDVFLDB4NTgsMHhFMiwweDM4LDB4QTIsMHgz
MCwweDJFLDB4QTksMHg0MywweDdCLAorICAgIDB4QzIsMHgzMCwweDgxLDB4MzAsMHhCOCwweEI4
LDB4RkYsMHhBQiwweDgzLDB4NDksMHhDMiwweDMwLDB4MjUsMHgzNSwweEI1LDB4OTUsCisgICAg
MHgyNywweDYyLDB4QTUsMHg1OSwweEU4LDB4RTksMHhBRSwweEJELDB4RTUsMHg1OSwweDg0LDB4
NTEsMHhBQSwweDI4LDB4RUEsMHg2OCwKKyAgICAweEM1LDB4NTEsMHgyMiwweDQxLDB4RkEsMHg3
OCwweEZBLDB4ODIsMHgyMywweDQxLDB4QzIsMHgzMCwweEFBLDB4QUYsMHhCQywweDk4LAorICAg
IDB4MjMsMHgzOSwweEMyLDB4MzAsMHhFQSwweEVBLDB4MkEsMHhGRSwweDIzLDB4MzksMHhFMiww
eDMwLDB4NTcsMHhFRSwweEZFLDB4QkIsCisgICAgMHgwMywweDMxLDB4QzIsMHgyOCwweEVBLDB4
NUEsMHhCOCwweEE4LDB4MDMsMHgzMSwweEMyLDB4MjgsMHg3RSwweEJCLDB4QkUsMHgyMCwKKyAg
ICAweEUzLDB4MzAsMHhDMiwweDI4LDB4RDUsMHhFRiwweEZDLDB4NUMsMHgwMywweDMxLDB4QzIs
MHgyOCwweEY3LDB4RUYsMHg4NiwweEFCLAorICAgIDB4MjMsMHgzOSwweEMyLDB4MjgsMHg1Riww
eEZGLDB4OUYsMHgyNSwweDAzLDB4MzEsMHhDMiwweDI4LDB4QkQsMHhCNywweEY4LDB4QzgsCisg
ICAgMHgwMywweDMxLDB4QTIsMHgyOCwweDhBLDB4OEEsMHhCRSwweDlFLDB4MDMsMHgzMSwweEEz
LDB4MjgsMHhBMiwweDIwLDB4ODAsMHhBOCwKKyAgICAweDAzLDB4MzEsMHhFMywweDMwLDB4NTUs
MHg1RSwweDU2LDB4RDUsMHgyMywweDMxLDB4QzMsMHgzMCwweEVGLDB4RUYsMHhBNywweDM2LAor
ICAgIDB4MjMsMHgzOSwweEMyLDB4MjgsMHhGNSwweEZGLDB4QUUsMHhGOCwweDAzLDB4MzEsMHhF
MywweDMwLDB4RUQsMHgzMywweDk4LDB4OTcsCisgICAgMHgwMywweDMxLDB4QzIsMHgyOCwweDlB
LDB4RkUsMHhFRSwweEFFLDB4MDMsMHgzMSwweEMyLDB4MjgsMHgwMCwweEU2LDB4RUIsMHhFRSwK
KyAgICAweDAzLDB4MzEsMHhDMywweDMwLDB4QUEsMHhBQiwweEE1LDB4QUYsMHgyNCwweDM5LDB4
QzIsMHgzMCwweDJGLDB4QkUsMHg3QSwweDc2LAorICAgIDB4MjQsMHgzOSwweEMyLDB4MjgsMHhG
QiwweEIyLDB4RkIsMHhBMSwweDI0LDB4MzksMHhFMywweDMwLDB4RkEsMHhFRiwweENCLDB4MjAs
CisgICAgMHg0NCwweDM5LDB4RTMsMHgzMCwweDNELDB4QkQsMHhGRCwweEY3LDB4NDQsMHgzOSww
eDAzLDB4MzksMHhERiwweERBLDB4REYsMHg1NSwKKyAgICAweDIzLDB4MzksMHhFMywweDM4LDB4
QTgsMHhFQiwweEVGLDB4N0YsMHgyMywweDM5LDB4RTMsMHgzOCwweDhBLDB4OEYsMHgyNywweEVG
LAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHg4RSwweDZDLDB4RkMsMHhFMCwweDIzLDB4NDEs
MHhFMywweDMwLDB4N0QsMHhGRCwweEE4LDB4QTIsCisgICAgMHgwMywweDM5LDB4RTIsMHgzMCww
eEE3LDB4MTYsMHg1QywweERDLDB4NjQsMHg0MSwweDAzLDB4MzksMHg1NSwweERDLDB4NUQsMHhF
RCwKKyAgICAweDQ1LDB4NDEsMHhFMywweDMwLDB4QUEsMHhGQSwweDcwLDB4NkEsMHgyMywweDM5
LDB4RTMsMHgzOCwweDdCLDB4NEIsMHgyRiwweEJGLAorICAgIDB4MjMsMHgzOSwweEUzLDB4MzAs
MHgwQiwweEUzLDB4RTgsMHhBQSwweDIzLDB4MzksMHhFMiwweDMwLDB4ODIsMHgwMiwweDIzLDB4
QjUsCisgICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweDhGLDB4QzAsMHg4MCwweEFBLDB4MjMsMHgz
OSwweEUyLDB4MzAsMHhCNywweEZGLDB4RDksMHg2RCwKKyAgICAweDAzLDB4MzksMHhFMiwweDMw
LDB4RjgsMHhDMCwweDc4LDB4NEYsMHgwMywweDM5LDB4RTMsMHgzMCwweDk1LDB4RDUsMHhGNSww
eEVGLAorICAgIDB4NDUsMHg0MSwweEMyLDB4MzAsMHgwOCwweDhBLDB4OUYsMHg1NywweDI0LDB4
MzksMHhFMywweDM4LDB4ODAsMHhBQSwweEZFLDB4NkYsCisgICAgMHgyNCwweDM5LDB4RTMsMHgz
MCwweEFBLDB4NjIsMHg3QSwweEJBLDB4MjMsMHgzOSwweEUzLDB4MzAsMHhBRiwweEEyLDB4QkEs
MHg5OCwKKyAgICAweDIzLDB4MzksMHhFMiwweDMwLDB4QkUsMHhEQSwweDc4LDB4RkEsMHgyNCww
eDM5LDB4RTIsMHgzMCwweDdBLDB4N0UsMHhGNywweEE2LAorICAgIDB4MjMsMHgzOSwweEUzLDB4
MzAsMHhGQiwweENBLDB4QTcsMHg2QywweDAzLDB4MzEsMHhDMiwweDI4LDB4RTAsMHhDMiwweDFB
LDB4MjIsCisgICAgMHg0NCwweDM5LDB4RTIsMHgyOCwweEQ1LDB4RkEsMHhFQSwweEZFLDB4MDMs
MHgzMSwweEMyLDB4MjgsMHgzNywweEU2LDB4QUEsMHg4MywKKyAgICAweDAzLDB4MzEsMHhDMiww
eDI4LDB4RjYsMHg4QSwweDNBLDB4QUEsMHgwMywweDMxLDB4QzIsMHgyOCwweEUzLDB4RkUsMHhC
QSwweDIyLAorICAgIDB4MDMsMHgzMSwweEMzLDB4MjgsMHg3QSwweEZELDB4RkYsMHhFQSwweEUz
LDB4MzAsMHhBMiwweDI4LDB4RkIsMHgzRSwweEVGLDB4RjcsCisgICAgMHhFMywweDMwLDB4QTIs
MHgyOCwweEJBLDB4QjIsMHgyQiwweDgzLDB4RTMsMHgzMCwweEEyLDB4MjgsMHg3QSwweEJDLDB4
RUEsMHg4MywKKyAgICAweEUzLDB4MjgsMHg4MiwweDI4LDB4QkEsMHhFRCwweENELDB4OEEsMHhD
MiwweDI4LDB4QTIsMHgyOCwweDRFLDB4MjAsMHgwMywweDhBLAorICAgIDB4RTMsMHgzMCwweEEz
LDB4MjgsMHhGQiwweEYyLDB4QTgsMHgyRSwweDAzLDB4MzEsMHhBMiwweDI4LDB4REYsMHhCQSww
eEZGLDB4OEIsCisgICAgMHhFMiwweDI4LDB4QTIsMHgyOCwweDU3LDB4QkYsMHgwQSwweDgyLDB4
RTMsMHgzMCwweEEyLDB4MjgsMHg1OSwweDhGLDB4MDAsMHgwQSwKKyAgICAweDAzLDB4MzEsMHhB
MiwweDI4LDB4RDUsMHg5RCwweEFFLDB4MEEsMHgwMywweDMxLDB4QzIsMHgyOCwweDlGLDB4MkYs
MHg4NSwweDJBLAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHg1NywweDdGLDB4NEYsMHhGRiww
eDAzLDB4MzksMHhFMywweDMwLDB4MDksMHg2OSwweDVELDB4QjUsCisgICAgMHg0NCwweDM5LDB4
RTMsMHgzMCwweEJGLDB4QUQsMHhCMywweDNGLDB4NjUsMHg0MSwweDI0LDB4MzksMHhBOSwweDAz
LDB4MEIsMHhBNSwKKyAgICAweDA3LDB4NUEsMHg2NSwweDQ5LDB4N0YsMHhBRiwweEFGLDB4MEYs
MHgwNiwweDVBLDB4QTUsMHg0OSwweEJELDB4RTksMHhFQywweDAwLAorICAgIDB4MDYsMHg1QSww
eEM2LDB4NTEsMHhCRiwweDA2LDB4ODMsMHgwRSwweDI3LDB4NjIsMHhDNSwweDUxLDB4MkYsMHhG
NywweENFLDB4QTIsCisgICAgMHgyNiwweDYyLDB4QzUsMHg1MSwweEJFLDB4OUUsMHhBQiwweEFC
LDB4NDcsMHg2MiwweDA3LDB4NjIsMHhGMywweEVBLDB4NkUsMHhERCwKKyAgICAweDY4LDB4NkEs
MHgwNywweDYyLDB4QjUsMHgyNSwweDA3LDB4MjIsMHhBOSwweDcyLDB4NDgsMHg2QSwweDZCLDB4
QTIsMHhGRiwweEFCLAorICAgIDB4QTksMHg3MiwweDQ4LDB4NkEsMHgzQSwweDNELDB4RkYsMHhG
QiwweEVBLDB4N0EsMHg2OCwweDZBLDB4RkMsMHhGQiwweDdCLDB4N0QsCisgICAgMHhFQSwweDdB
LDB4ODksMHg3MiwweDJCLDB4QUEsMHhGRCwweEY1LDB4QzksMHg3QSwweDg4LDB4NkEsMHgwQiww
eEFGLDB4N0YsMHg2RSwKKyAgICAweEM5LDB4N0EsMHg0NywweDYyLDB4NkEsMHhBOCwweDAyLDB4
MkIsMHhFOSwweDdBLDB4NjgsMHg2QSwweDU3LDB4QkYsMHhFRSwweDBBLAorICAgIDB4QzksMHg3
MiwweDg4LDB4NzIsMHhFOCwweEVFLDB4MUYsMHhGQSwweEVBLDB4N0EsMHg4NywweDZBLDB4NzUs
MHg3NywweEFBLDB4MkYsCisgICAgMHhDOCwweDdBLDB4NjcsMHg2QSwweDBBLDB4OEQsMHhBOCww
eEE4LDB4RTksMHg3QSwweDY4LDB4NzIsMHgyMywweEFBLDB4QUUsMHhERSwKKyAgICAweEU5LDB4
N0EsMHhBOSwweDcyLDB4RjEsMHg0MiwweDgwLDB4QTksMHhFQSwweDdBLDB4ODgsMHg3MiwweDNG
LDB4RTYsMHhGQywweEFGLAorICAgIDB4RUEsMHg3QSwweEE5LDB4N0EsMHhDMiwweEEzLDB4QTks
MHg1OCwweDBBLDB4ODMsMHhBOCwweDcyLDB4N0YsMHg3QSwweDYyLDB4QzksCisgICAgMHhFOSww
eDdBLDB4ODgsMHg3MiwweDBCLDB4MzcsMHg5NywweEEzLDB4MDksMHg3QiwweEE5LDB4NzIsMHhB
NCwweEYyLDB4RUIsMHhENCwKKyAgICAweEM5LDB4N0EsMHg4OCwweDcyLDB4RjgsMHhDRSwweDZB
LDB4NjMsMHhFQSwweDdBLDB4ODgsMHg3MiwweENCLDB4QkYsMHhBRCwweDgyLAorICAgIDB4MEEs
MHg3QiwweEE4LDB4NzIsMHhFRCwweEE3LDB4OEIsMHhBMywweDBBLDB4N0IsMHhDOSwweDdBLDB4
RkIsMHhBQSwweEVBLDB4RkMsCisgICAgMHhFQSwweDdBLDB4ODgsMHg2QSwweEZBLDB4RjYsMHg4
QSwweDA4LDB4RUEsMHg3QSwweDY4LDB4NkEsMHg4RiwweEE3LDB4QjcsMHhFQSwKKyAgICAweEVB
LDB4N0EsMHhBOSwweDcyLDB4MjAsMHgxMCwweEJGLDB4NUUsMHhFQSwweDdBLDB4QTksMHg3Miww
eDg1LDB4MDIsMHhCMiwweEZELAorICAgIDB4MEEsMHg4MywweEE5LDB4NzIsMHg1RCwweEZELDB4
N0YsMHg4RSwweDBBLDB4ODMsMHhBOSwweDcyLDB4MjcsMHhCNywweERELDB4RUYsCisgICAgMHgy
QSwweDgzLDB4QzksMHg3QSwweDhFLDB4Q0IsMHhBNSwweEQ1LDB4MEEsMHg4MywweEM5LDB4N0Es
MHgzOCwweDdFLDB4N0UsMHhCQSwKKyAgICAweEUyLDB4MzgsMHhDMiwweDM4LDB4NUIsMHg1Qiww
eDBBLDB4QzgsMHgyMywweDM5LDB4QzIsMHgzOCwweEU3LDB4MjYsMHhFRiwweEFBLAorICAgIDB4
MjMsMHgzOSwweEMyLDB4MzgsMHhGRCwweEZGLDB4RjMsMHhGQiwweDAyLDB4MzksMHhDMiwweDM4
LDB4RUYsMHhGOCwweEVBLDB4OUYsCisgICAgMHgwMywweDQxLDB4QTEsMHgzMCwweEEyLDB4QUEs
MHhCQSwweEZFLDB4MDMsMHg0MSwweEMyLDB4MzgsMHhBNywweDc4LDB4NUEsMHhENywKKyAgICAw
eEUyLDB4MzgsMHhDMiwweDM4LDB4RDAsMHhCRiwweDBGLDB4MjEsMHgyMywweDQxLDB4QzIsMHgz
OCwweDZELDB4RkQsMHhDRiwweEUzLAorICAgIDB4MDIsMHgzOSwweEMyLDB4MzgsMHhGQSwweDRB
LDB4RTMsMHhGRiwweEUyLDB4MzgsMHhBMSwweDMwLDB4MjAsMHhCMiwweDJGLDB4MkUsCisgICAg
MHgwMywweDQxLDB4QTEsMHgzMCwweEI3LDB4OEEsMHhFQSwweEJBLDB4MDIsMHgzOSwweEMyLDB4
MzgsMHhBQiwweDhCLDB4NEIsMHg3OCwKKyAgICAweEUyLDB4MzgsMHhBMSwweDMwLDB4ODgsMHgy
MCwweDAyLDB4MEIsMHhFMiwweDM4LDB4QTEsMHgzMCwweEEwLDB4QTAsMHg2MCwweEU4LAorICAg
IDB4MDMsMHg0MSwweEMyLDB4MzgsMHhFRiwweEQ5LDB4RkYsMHgyRiwweDAyLDB4MzksMHhDMiww
eDM4LDB4QjcsMHhGRiwweEZGLDB4NjgsCisgICAgMHgwMiwweDM5LDB4QzIsMHgzOCwweEY2LDB4
REEsMHhGNywweERELDB4RTIsMHgzOCwweEEyLDB4MzAsMHg4RSwweDAwLDB4MjgsMHgwQywKKyAg
ICAweDAzLDB4NDEsMHhDMiwweDM4LDB4NDksMHhFNywweEY1LDB4RDcsMHgwMywweDM5LDB4QzIs
MHgzOCwweDFELDB4MkYsMHgyOSwweDA4LAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHg2RSww
eDdBLDB4NzgsMHg3OCwweEMyLDB4MzgsMHhBMSwweDMwLDB4QzAsMHhGQSwweEZFLDB4NTAsCisg
ICAgMHhFMiwweDM4LDB4QTEsMHgzMCwweDVGLDB4RTUsMHgyNSwweDM1LDB4ODUsMHg1MSwweEEx
LDB4MzAsMHhCNSwweEI1LDB4QjcsMHgzNywKKyAgICAweEE4LDB4NzIsMHg0MywweDQ5LDB4QkQs
MHhFRiwweEVBLDB4QTIsMHhFNSwweDU5LDB4ODQsMHg1MSwweDY4LDB4Q0IsMHgwQSwweDA4LAor
ICAgIDB4QzUsMHg1MSwweDg0LDB4NDksMHg0MiwweDYyLDB4RkUsMHg3RSwweDIzLDB4NDEsMHhD
MiwweDMwLDB4RjgsMHg1MCwweEY4LDB4RjgsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEFG
LDB4NkYsMHg1RiwweDgwLDB4MDMsMHgzMSwweEMyLDB4MjgsMHgwMiwweDIzLDB4MjIsMHgxRiwK
KyAgICAweDAzLDB4MzEsMHhFMywweDMwLDB4QkUsMHg1QywweDU3LDB4NUYsMHgyNCwweDM5LDB4
RTMsMHgzMCwweDVBLDB4N0YsMHhGRCwweDZCLAorICAgIDB4MjMsMHgzMSwweEMyLDB4MzAsMHg3
NywweEZFLDB4NUYsMHhCRiwweDAzLDB4MzksMHhDMiwweDI4LDB4RkYsMHg3QiwweEFCLDB4RjIs
CisgICAgMHgwMywweDMxLDB4QzIsMHgzMCwweDg3LDB4RkQsMHhFQSwweEVBLDB4MDMsMHgzMSww
eEEyLDB4MjgsMHhDQSwweEVFLDB4NkIsMHhCRiwKKyAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4
RDcsMHhGNSwweEI5LDB4OEIsMHgwMywweDMxLDB4QzIsMHgzMCwweEVBLDB4NzgsMHg3QSwweDYy
LAorICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHg4MywweEJCLDB4RkIsMHhGNSwweDAzLDB4MzEs
MHhBMiwweDMwLDB4MjgsMHhBQSwweEFFLDB4OEEsCisgICAgMHgwMywweDMxLDB4QzIsMHgzMCww
eEU4LDB4QkEsMHhFMiwweDZBLDB4MDMsMHgzMSwweEMyLDB4MjgsMHg4QSwweDBCLDB4QTksMHgz
RCwKKyAgICAweDI0LDB4MzksMHhDMiwweDMwLDB4RkYsMHg4RSwweDJCLDB4OUYsMHhFMywweDMw
LDB4QzIsMHgyOCwweEVBLDB4QUUsMHhFQywweEZFLAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzAs
MHg3OSwweEVBLDB4N0YsMHg1NSwweDAzLDB4MzEsMHhBMiwweDMwLDB4QkEsMHhBRSwweDJBLDB4
MjIsCisgICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweDg5LDB4NUQsMHg1NSwweDU3LDB4MjQsMHgz
OSwweEMyLDB4MzAsMHg4MiwweEVBLDB4QjcsMHhCRiwKKyAgICAweDI0LDB4MzksMHhFMiwweDMw
LDB4RkUsMHg3QSwweDZCLDB4NUYsMHgwMywweDM5LDB4QzIsMHgzMCwweEEyLDB4QkIsMHhFQiww
eENGLAorICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHhBOCwweDJFLDB4MkIsMHg5NSwweDI0LDB4
MzksMHhFMiwweDMwLDB4RUIsMHhBQSwweEZBLDB4N0YsCisgICAgMHgwMywweDM5LDB4RTMsMHgz
MCwweEMxLDB4NjgsMHg3OCwweEYzLDB4MDMsMHgzOSwweEUzLDB4MzAsMHhDMywweEM3LDB4RUUs
MHg4QiwKKyAgICAweDQ0LDB4NDEsMHhDMiwweDMwLDB4REYsMHgyRSwweEZGLDB4N0QsMHgyNCww
eDM5LDB4RTMsMHgzOCwweEUwLDB4RkEsMHhFQiwweEVCLAorICAgIDB4NDQsMHg0MSwweEUzLDB4
MzAsMHhBMywweEVCLDB4N0YsMHg1RiwweDAzLDB4MzksMHhFMywweDM4LDB4OUMsMHhCOCwweDVC
LDB4MUIsCisgICAgMHgyNCwweDM5LDB4RTMsMHgzOCwweEVCLDB4OEIsMHhGRCwweEQ3LDB4MDMs
MHgzOSwweEUzLDB4MzAsMHgyMCwweDAwLDB4ODIsMHg4MywKKyAgICAweDQ0LDB4NDEsMHgwMyww
eDM5LDB4NTUsMHhBRiwweEFELDB4NkQsMHgyMywweDM5LDB4RTMsMHgzMCwweDBCLDB4ODksMHhB
QSwweEI3LAorICAgIDB4MjMsMHgzOSwweEUyLDB4MzgsMHhDQiwweEMyLDB4QzIsMHhGQSwweDI0
LDB4MzksMHhFMywweDMwLDB4QkQsMHg2RCwweEJGLDB4MTcsCisgICAgMHgyNCwweDM5LDB4QzIs
MHgzMCwweEY3LDB4QUUsMHhFQywweEI4LDB4MDMsMHgzOSwweEUzLDB4MzAsMHhGRSwweDdELDB4
OUUsMHgyMywKKyAgICAweDI0LDB4MzksMHhDMywweDMwLDB4QUEsMHhCNSwweEJBLDB4RjgsMHgy
MywweDM5LDB4QzQsMHgzMCwweDBBLDB4MkEsMHhCMiwweEFBLAorICAgIDB4MjMsMHgzOSwweDAz
LDB4MzEsMHg3RiwweDdFLDB4QjYsMHg5NSwweDIzLDB4MzksMHhFMiwweDMwLDB4RTcsMHgyRiww
eDJDLDB4MzIsCisgICAgMHg0NCwweDM5LDB4RTIsMHgzMCwweEZCLDB4N0UsMHhGQSwweDhBLDB4
MjMsMHgzOSwweEMyLDB4MjgsMHhBQSwweDlBLDB4QkUsMHgyQSwKKyAgICAweDIzLDB4MzksMHhF
MywweDMwLDB4NUEsMHhGRiwweEJFLDB4QUEsMHgwMywweDMxLDB4RTMsMHgzMCwweDI5LDB4RkQs
MHhENywweDJDLAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHhGOCwweEZGLDB4RkEsMHhFMiww
eDI0LDB4MzksMHhFMywweDI4LDB4REYsMHhERiwweEJBLDB4QjMsCisgICAgMHgyNCwweDM5LDB4
RTMsMHgzMCwweDczLDB4RkEsMHhBMCwweEFBLDB4MDQsMHgzMSwweEMzLDB4MjgsMHhENywweEQ3
LDB4QkMsMHgzMCwKKyAgICAweDA0LDB4MzEsMHhFMywweDMwLDB4NTUsMHhGNSwweEVCLDB4NzAs
MHgyNCwweDMxLDB4RTMsMHgzMCwweDdGLDB4OEYsMHhFRiwweDk3LAorICAgIDB4MDMsMHgzMSww
eEMyLDB4MjgsMHhFRiwweEUwLDB4RTgsMHhBMCwweDAzLDB4MzEsMHhBMiwweDI4LDB4QjcsMHhF
QSwweEEyLDB4QTAsCisgICAgMHgwMywweDMxLDB4QzIsMHgyOCwweDM2LDB4QTIsMHgwMywweEEy
LDB4MjMsMHgzMSwweEUzLDB4MzAsMHhENSwweEY3LDB4RkQsMHhGQSwKKyAgICAweEUzLDB4MzAs
MHgwMywweDI5LDB4MkYsMHgyQiwweEIwLDB4MjAsMHgyNCwweDM5LDB4QzIsMHgyOCwweERGLDB4
RkEsMHhFMiwweDIyLAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHhCRiwweDgzLDB4ODEsMHhB
QSwweDI0LDB4MzksMHgwMywweDMxLDB4NTcsMHg1NywweEZGLDB4M0YsCisgICAgMHg0NCwweDQx
LDB4RTMsMHgzMCwweDdELDB4RjgsMHhFRSwweEZFLDB4MjQsMHgzOSwweEUzLDB4MzAsMHgzNyww
eEFBLDB4MjIsMHgyMCwKKyAgICAweDY0LDB4NDEsMHgwMywweDMxLDB4MjcsMHgyRCwweEFCLDB4
MkEsMHhDNSwweDUxLDB4NDMsMHgzOSwweEQ1LDB4QkYsMHhBRiwweDJBLAorICAgIDB4MDcsMHg1
QSwweEE1LDB4NDksMHhCNSwweEJGLDB4QkYsMHgzRiwweDI3LDB4NjIsMHhFNiwweDU5LDB4Qzgs
MHhBRSwweDA1LDB4MjcsCisgICAgMHgyNywweDYyLDB4RTYsMHg1OSwweDJGLDB4QkMsMHhENiww
eDc4LDB4NDcsMHg2MiwweEU1LDB4NTksMHg2QSwweEEyLDB4QkQsMHgyRCwKKyAgICAweDI3LDB4
NjIsMHhDNSwweDU5LDB4NkUsMHhDMCwweEM4LDB4RTAsMHg2OCwweDZBLDB4RTYsMHg1OSwweDNE
LDB4QUQsMHgzNSwweEE1LAorICAgIDB4ODgsMHg2QSwweDI3LDB4NjIsMHhCRiwweEQ3LDB4REYs
MHg4NywweEE5LDB4NkEsMHg0OCwweDZBLDB4RUYsMHhBRSwweENCLDB4RTcsCisgICAgMHhBOCww
eDZBLDB4NDgsMHg2QSwweDdCLDB4N0YsMHg3NywweERGLDB4NjgsMHg2QSwweDQ3LDB4NjIsMHg4
QiwweEUzLDB4RjIsMHhFMSwKKyAgICAweEE5LDB4NzIsMHgyNywweDYyLDB4MkYsMHhCQiwweEI3
LDB4RUIsMHhBOSwweDcyLDB4NjgsMHg2QSwweDJDLDB4OEYsMHgzRCwweEJELAorICAgIDB4QTks
MHg3MiwweDQ4LDB4NkEsMHgwQiwweDAyLDB4NzIsMHhGMCwweEM5LDB4N0EsMHg2NywweDZBLDB4
MkEsMHhCQiwweEVCLDB4RkQsCisgICAgMHhFOSwweDdBLDB4ODgsMHg3MiwweDc4LDB4MkUsMHhE
OSwweDU1LDB4QzksMHg3QSwweDQ3LDB4NjIsMHgyRiwweDk0LDB4QkEsMHhBQSwKKyAgICAweEM5
LDB4N0EsMHg4OCwweDcyLDB4QkEsMHhCQSwweDJBLDB4RUYsMHhDOSwweDdBLDB4NjcsMHg2QSww
eEVBLDB4QTIsMHgwMCwweDhBLAorICAgIDB4QzksMHg3QSwweEE4LDB4NzIsMHg4QSwweEU5LDB4
NzIsMHhGQywweEU5LDB4N0EsMHg4OCwweDcyLDB4RTMsMHhFRSwweDc3LDB4NUYsCisgICAgMHhF
QSwweDdBLDB4QTksMHg3MiwweDYyLDB4RUIsMHg5RCwweDVGLDB4MEEsMHg3QiwweEE4LDB4NzIs
MHhFRiwweEZELDB4RkYsMHg5RiwKKyAgICAweDBBLDB4N0IsMHhBOCwweDcyLDB4Q0IsMHhGMyww
eDZCLDB4QUIsMHhFOSwweDdBLDB4QTgsMHg3MiwweEVDLDB4QUQsMHg4RiwweDdGLAorICAgIDB4
MEEsMHg3QiwweEE4LDB4NzIsMHhENywweEE3LDB4MEUsMHgzQiwweDBBLDB4ODMsMHhBOSwweDZB
LDB4RUUsMHhENywweEY3LDB4RTIsCisgICAgMHhFQSwweDdBLDB4QTksMHg3MiwweEU4LDB4NDcs
MHhCRiwweDVGLDB4RUEsMHg3QSwweEE5LDB4NzIsMHhCRiwweEZBLDB4RkIsMHg3RSwKKyAgICAw
eEVBLDB4N0EsMHhBOSwweDcyLDB4M0MsMHhBQSwweEJDLDB4NEYsMHhFQSwweDdBLDB4ODksMHg3
MiwweDlBLDB4RkUsMHgwRSwweDA2LAorICAgIDB4RUEsMHg3QSwweEE5LDB4NzIsMHg3RSwweEIz
LDB4QUUsMHhGRiwweEVBLDB4N0EsMHg4OCwweDZBLDB4RUYsMHg1OCwweEEyLDB4MDAsCisgICAg
MHgwQiwweDgzLDB4QTksMHg3MiwweDgyLDB4QkQsMHg5NywweEJGLDB4MEEsMHg3QiwweEM5LDB4
N0EsMHhGQywweEFCLDB4NjIsMHhDRSwKKyAgICAweDBBLDB4N0IsMHhBOCwweDcyLDB4REYsMHhC
RSwweDNCLDB4QTMsMHgwQSwweDgzLDB4QzksMHg3QSwweDgzLDB4MDEsMHhDMCwweEZFLAorICAg
IDB4MjMsMHg0MSwweEMyLDB4MzgsMHhGRSwweEJDLDB4RkYsMHg3RiwweDAyLDB4MzksMHhDMiww
eDM4LDB4QTAsMHhCRSwweEJGLDB4N0QsCisgICAgMHgyMywweDQxLDB4QzIsMHgzOCwweDVFLDB4
RkEsMHhCQiwweENGLDB4QzIsMHg0MCwweDAzLDB4MzksMHhGQiwweEVGLDB4QUIsMHg5RiwKKyAg
ICAweDAzLDB4NDEsMHhDMiwweDM4LDB4NUUsMHhBQywweEE5LDB4QkQsMHgwMywweDQxLDB4QzIs
MHgzOCwweEQ1LDB4RkYsMHhFQSwweEMwLAorICAgIDB4MjMsMHg0MSwweEMyLDB4MzgsMHhCRCww
eEQ1LDB4RDcsMHg3RiwweDAzLDB4NDEsMHhDMiwweDM4LDB4OTgsMHg5RCwweEY3LDB4RDUsCisg
ICAgMHgwMywweDQxLDB4QTEsMHgzMCwweDlBLDB4RTIsMHg4OCwweEFGLDB4MDMsMHgzOSwweEMy
LDB4MzgsMHhGRiwweEFGLDB4MEEsMHgyQiwKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4REIs
MHhGOCwweDdBLDB4RjYsMHhFMiwweDM4LDB4QzEsMHgzMCwweDc4LDB4MTgsMHgwMCwweDgyLAor
ICAgIDB4RTIsMHgzOCwweEMyLDB4MzgsMHg3RiwweDcwLDB4NjAsMHgwRiwweDAzLDB4NDEsMHhB
MSwweDMwLDB4N0UsMHhFRiwweEFCLDB4QUEsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDhC
LDB4NzksMHg3RSwweEZFLDB4RTIsMHgzOCwweEEyLDB4MzAsMHgwMCwweDhBLDB4RjAsMHgyMCwK
KyAgICAweEUyLDB4MzgsMHhDMiwweDM4LDB4NzMsMHhFQiwweDAwLDB4RTAsMHhFMywweDM4LDB4
QzIsMHgzOCwweDJDLDB4REUsMHhENCwweEYwLAorICAgIDB4RTIsMHgzOCwweEMyLDB4MzgsMHgw
QiwweEUyLDB4NkIsMHhFRCwweDAzLDB4NDEsMHhDMiwweDM4LDB4REUsMHg1NSwweEZCLDB4RTMs
CisgICAgMHgwMywweDM5LDB4QTIsMHgzMCwweEUyLDB4NkEsMHhGQSwweERFLDB4QzIsMHgzOCww
eDgxLDB4MzAsMHhCRSwweEFBLDB4MjgsMHgzNywKKyAgICAweEUyLDB4MzgsMHhBMiwweDMwLDB4
MjUsMHgzRiwweDBBLDB4MDMsMHgyNiwweDYyLDB4RTIsMHgzOCwweEJELDB4MzUsMHgyRCwweDJE
LAorICAgIDB4QzgsMHg3QSwweDQ3LDB4NkEsMHg3RiwweEVBLDB4RTIsMHhDMCwweDQ3LDB4NkEs
MHhFNSwweDU5LDB4N0IsMHg3OCwweDdBLDB4RUEsCisgICAgMHhFNiwweDU5LDB4NjQsMHg0OSww
eEZDLDB4N0UsMHg3MiwweDdBLDB4NDMsMHg0MSwweEMyLDB4MzAsMHhERSwweERFLDB4RkUsMHhG
MiwKKyAgICAweDIzLDB4MzksMHhFMiwweDMwLDB4RjMsMHg1OSwweERFLDB4RkYsMHgwMywweDM5
LDB4QzIsMHgyOCwweDdCLDB4RUIsMHhBRSwweEYwLAorICAgIDB4MDMsMHgzMSwweEUzLDB4MzAs
MHg0MCwweDdBLDB4REYsMHhENywweDAzLDB4MzEsMHhDMywweDMwLDB4ODIsMHg4QSwweDNFLDB4
REUsCisgICAgMHgwMywweDMxLDB4RTMsMHgzMCwweDM1LDB4RDcsMHg1NywweDU5LDB4MDMsMHgz
MSwweEMzLDB4MzAsMHhFMCwweEYyLDB4QjAsMHhCMCwKKyAgICAweDAzLDB4MzEsMHhFMywweDMw
LDB4QjUsMHg2NSwweDY1LDB4QkQsMHgwMywweDMxLDB4QzIsMHgyOCwweEZGLDB4RkUsMHhGQSww
eEEyLAorICAgIDB4RTIsMHgzMCwweEMyLDB4MjgsMHgwMiwweDA5LDB4MEIsMHgzMCwweDAzLDB4
MzEsMHhDMiwweDMwLDB4QUIsMHhENywweEZGLDB4RkIsCisgICAgMHhFMywweDMwLDB4QzMsMHgy
OCwweDNBLDB4QUMsMHgwOCwweEFBLDB4MDMsMHgzMSwweEMzLDB4MzAsMHhBMiwweDhCLDB4MEEs
MHhBOSwKKyAgICAweEUzLDB4MzAsMHhDMiwweDMwLDB4MDAsMHgwQywweDgzLDB4RDgsMHhFMyww
eDMwLDB4QzIsMHgyOCwweDA4LDB4OEMsMHhCOCwweDYwLAorICAgIDB4MDMsMHgzMSwweEMyLDB4
MjgsMHhCRSwweEZCLDB4QTksMHhFQiwweDAzLDB4MzksMHhDMywweDI4LDB4QjcsMHhGNywweEFB
LDB4RUIsCisgICAgMHgwMywweDMxLDB4QzIsMHgzMCwweDlGLDB4MEUsMHhFQSwweEVCLDB4MDMs
MHgzMSwweEMzLDB4MzAsMHgwRiwweDJCLDB4MkYsMHhBRiwKKyAgICAweDAzLDB4MzEsMHhFMyww
eDMwLDB4ODYsMHhFNywweDc3LDB4QkQsMHhBMiwweDM4LDB4MDMsMHgzMSwweERGLDB4N0YsMHhG
RiwweEJELAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhCOCwweEQ4LDB4REUsMHhDMiwweDAz
LDB4MzksMHhDMiwweDMwLDB4MkYsMHgxRCwweDlGLDB4REYsCisgICAgMHgwMywweDMxLDB4QzIs
MHgzMCwweDk3LDB4MDgsMHgwQywweDJBLDB4MDMsMHgzOSwweEUyLDB4MzAsMHhDMCwweEUzLDB4
QjYsMHhBOCwKKyAgICAweDAzLDB4MzksMHhFMiwweDMwLDB4MzIsMHhCRiwweEZGLDB4QTMsMHgy
NCwweDM5LDB4QzIsMHgzMCwweEE4LDB4RjcsMHg5RCwweEZGLAorICAgIDB4RTMsMHgzOCwweEEy
LDB4MzAsMHhCOCwweEJFLDB4QkUsMHhFRSwweDAzLDB4MzksMHhDMiwweDMwLDB4QTIsMHhBMyww
eEI5LDB4MEQsCisgICAgMHgwMywweDM5LDB4QzMsMHgzMCwweEIwLDB4QzgsMHhBQSwweEVBLDB4
MjQsMHgzOSwweEMyLDB4MzAsMHgyQiwweEZGLDB4NjcsMHhGRSwKKyAgICAweDAzLDB4MzksMHhF
MywweDMwLDB4MUIsMHgxNSwweDJELDB4MDEsMHgwMywweDM5LDB4QzMsMHgzMCwweDAwLDB4MEEs
MHhBRSwweDNFLAorICAgIDB4MjMsMHgzOSwweEUzLDB4MzAsMHg4RSwweDI3LDB4OTcsMHgzNSww
eDIzLDB4MzksMHhFMywweDM4LDB4N0YsMHhCMCwweEFGLDB4QjcsCisgICAgMHgwMywweDM5LDB4
QzMsMHgzMCwweDNCLDB4MDcsMHhGRiwweDIwLDB4MjQsMHgzOSwweEUzLDB4MzAsMHg3RiwweDZF
LDB4QUIsMHhCOCwKKyAgICAweDQ0LDB4NDEsMHhFMywweDMwLDB4RUIsMHhFQSwweDZBLDB4REIs
MHgyNCwweDM5LDB4QzIsMHgzMCwweEJBLDB4QjYsMHhCQiwweDJBLAorICAgIDB4MDMsMHgzOSww
eEUzLDB4MzgsMHgyOCwweDIwLDB4QTAsMHgyOCwweDI0LDB4NDEsMHhFMywweDMwLDB4RkUsMHhE
RSwweEFCLDB4MDMsCisgICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweDlGLDB4RDUsMHgyRSwweEFD
LDB4MjMsMHgzOSwweEUyLDB4MzAsMHgyQiwweDIwLDB4MjAsMHg3QSwKKyAgICAweDQ0LDB4Mzks
MHhFMiwweDMwLDB4MkUsMHhBQSwweEZFLDB4RjUsMHg0NCwweDM5LDB4RTIsMHgzMCwweEFBLDB4
QTgsMHhBNywweEJELAorICAgIDB4NDQsMHgzOSwweDAzLDB4MzEsMHgyRCwweDJCLDB4OUYsMHgy
RSwweDQ0LDB4MzksMHgwMywweDM5LDB4NTcsMHhGRSwweEVCLDB4QTIsCisgICAgMHg0NCwweDM5
LDB4RTMsMHgzMCwweEVGLDB4NzYsMHhBOCwweEUwLDB4MjQsMHgzOSwweDAzLDB4MzEsMHhGOSww
eEY1LDB4OEIsMHgwMywKKyAgICAweDQ0LDB4MzksMHgwMywweDMxLDB4QjUsMHhBQSwweEVBLDB4
MDgsMHgyNCwweDM5LDB4RTMsMHgzMCwweEJFLDB4QkMsMHhBOCwweDhBLAorICAgIDB4MjQsMHgz
OSwweEMyLDB4MzAsMHhCRiwweEY2LDB4MkUsMHhBOCwweDI0LDB4MzksMHhFMywweDMwLDB4Qjgs
MHg1QSwweEZFLDB4Q0EsCisgICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweERBLDB4QkYsMHhCRCww
eDIzLDB4MjQsMHgzOSwweEUzLDB4MzAsMHg1NiwweEJFLDB4RkQsMHhDRSwKKyAgICAweDI0LDB4
MzksMHhFMywweDMwLDB4QkEsMHhDRSwweDZCLDB4Q0IsMHgyNCwweDM5LDB4RTMsMHgzMCwweEIw
LDB4QUIsMHg2OSwweDZBLAorICAgIDB4NDUsMHg0MSwweEMyLDB4MzAsMHhGNywweEY3LDB4QUYs
MHhBOCwweDI0LDB4MzksMHgwMywweDMxLDB4OUQsMHhGNSwweDk2LDB4QTYsCisgICAgMHgyNCww
eDM5LDB4RTMsMHgzMCwweEVCLDB4RUEsMHhFQSwweDhCLDB4MjQsMHgzOSwweEUzLDB4MzAsMHgy
MCwweDAyLDB4MDcsMHg4OSwKKyAgICAweDY1LDB4NDEsMHgwMywweDM5LDB4NUMsMHhGNSwweEY3
LDB4RjUsMHg2NSwweDQ5LDB4MDMsMHgzOSwweEY3LDB4RkEsMHhBMywweDhBLAorICAgIDB4QTYs
MHg0OSwweDQ0LDB4NDEsMHg3RCwweDc1LDB4N0YsMHgwQiwweEU3LDB4NTEsMHg2NSwweDQxLDB4
M0QsMHhBRCwweDJCLDB4OEEsCisgICAgMHgwNiwweDVBLDB4QTUsMHg1MSwweDlBLDB4QUIsMHgy
QSwweDhBLDB4MDcsMHg2MiwweEE1LDB4NTEsMHhGRSwweDlCLDB4QzIsMHhFMCwKKyAgICAweDI3
LDB4NjIsMHhDNiwweDU5LDB4QzAsMHhGRSwweDVGLDB4OTUsMHg0NywweDYyLDB4RTYsMHg1OSww
eDNGLDB4QkQsMHhCQiwweDhGLAorICAgIDB4ODgsMHg2QSwweEU2LDB4NTksMHhENywweEZCLDB4
QTIsMHhFQSwweDY4LDB4NjIsMHgwNiwweDVBLDB4QjcsMHgzRSwweDhBLDB4RUEsCisgICAgMHg4
OSwweDZBLDB4MjcsMHg2MiwweDg5LDB4MEQsMHhFOSwweEVGLDB4ODgsMHg3MiwweDQ3LDB4NjIs
MHhDQSwweDc5LDB4RkIsMHhGRSwKKyAgICAweEE5LDB4NzIsMHg0OCwweDYyLDB4RkUsMHg2QSww
eDdCLDB4N0MsMHg4OCwweDZBLDB4NDgsMHg2QSwweEZGLDB4QUYsMHhGNSwweEZGLAorICAgIDB4
ODgsMHg3MiwweDQ4LDB4NkEsMHhFOCwweDdFLDB4RkYsMHgyRiwweEE5LDB4NzIsMHg2OCwweDZB
LDB4REQsMHhENSwweEU5LDB4OEEsCisgICAgMHhBOSwweDcyLDB4NjgsMHg2QSwweDc2LDB4OUMs
MHhGRSwweEJCLDB4QTksMHg3MiwweDQ3LDB4NkEsMHhFQywweDk4LDB4MzcsMHhCNywKKyAgICAw
eEM5LDB4NzIsMHg4OCwweDZBLDB4NTUsMHg1MywweDJBLDB4OEQsMHhDOSwweDcyLDB4ODgsMHg3
MiwweEVELDB4QUUsMHhCOCwweEI2LAorICAgIDB4RTksMHg3QSwweDg4LDB4NzIsMHg2RiwweEZG
LDB4NUUsMHhGOCwweEM5LDB4N0EsMHg4OCwweDcyLDB4NkYsMHhBRiwweERBLDB4OEIsCisgICAg
MHhBOCwweDcyLDB4NDgsMHg2QSwweDA4LDB4MEEsMHhEQywweEY4LDB4QzksMHg3QSwweDY4LDB4
NkEsMHgyQSwweEJDLDB4RjcsMHhGQSwKKyAgICAweEU5LDB4N0EsMHg4OCwweDcyLDB4N0EsMHhF
NiwweDBGLDB4QUIsMHhDOSwweDcyLDB4NjgsMHg2QSwweDMyLDB4NzYsMHhGRiwweEJDLAorICAg
IDB4RTksMHg3QSwweDg4LDB4NzIsMHhBOCwweDJCLDB4RjIsMHhCNSwweDBBLDB4N0IsMHhBOCww
eDcyLDB4NUYsMHg3NywweEMzLDB4M0EsCisgICAgMHhFQSwweDcyLDB4ODgsMHg2QSwweDNGLDB4
RkUsMHg2QSwweEVDLDB4MEEsMHg3QiwweEE5LDB4NzIsMHg4QSwweEFGLDB4RjcsMHg3RiwKKyAg
ICAweEVBLDB4N0EsMHg4OCwweDZBLDB4QkEsMHgyMiwweDdBLDB4RUIsMHhFQSwweDdBLDB4QTks
MHg3MiwweDVCLDB4QTAsMHhBOSwweDI5LAorICAgIDB4RUEsMHg3QSwweDg4LDB4NkEsMHgwRiww
eEFCLDB4QTcsMHgwRiwweDBCLDB4ODMsMHg2NywweDZBLDB4MEEsMHhDMiwweEZFLDB4OTcsCisg
ICAgMHhFOSwweDdBLDB4QTksMHg3MiwweERGLDB4QkUsMHhBMywweDRGLDB4MkEsMHg3QiwweENB
LDB4N0EsMHhFRCwweDdELDB4RkYsMHg2RiwKKyAgICAweDBBLDB4N0IsMHhDOSwweDdBLDB4NzIs
MHhCRiwweDJGLDB4MkYsMHgyQSwweDgzLDB4QzksMHg3MiwweEY1LDB4Q0YsMHhDMywweEVCLAor
ICAgIDB4RTksMHg3QSwweDg3LDB4NkEsMHhDMCwweDQwLDB4QUEsMHhBOCwweDBBLDB4N0IsMHhB
OSwweDcyLDB4RTUsMHgyNSwweEFDLDB4RUYsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEVF
LDB4QzgsMHhGNiwweEU2LDB4MDMsMHg0MSwweEMyLDB4MzgsMHhBOSwweENCLDB4Q0YsMHhFRiwK
KyAgICAweDAzLDB4NDEsMHhFMiwweDM4LDB4RTcsMHg1NSwweDg1LDB4QTksMHgwMywweDQxLDB4
QzIsMHgzOCwweDhCLDB4RkIsMHg3QSwweDY4LAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhC
QSwweEZCLDB4QTEsMHhDQiwweDIzLDB4NDEsMHhDMiwweDM4LDB4RUEsMHgzQiwweERFLDB4OUEs
CisgICAgMHhDMywweDQwLDB4MDIsMHgzOSwweEZGLDB4QkYsMHhGNSwweERGLDB4MDMsMHg0MSww
eEMyLDB4MzgsMHhENywweDJELDB4RTIsMHhGQSwKKyAgICAweDAzLDB4NDEsMHhBMiwweDMwLDB4
QkYsMHhGRiwweDYyLDB4Q0EsMHhFMywweDM4LDB4QTEsMHgzMCwweEIwLDB4OUYsMHhBRCwweDNE
LAorICAgIDB4RTIsMHgzOCwweEMyLDB4MzAsMHgyRiwweDdDLDB4MjAsMHg4MCwweDAzLDB4NDEs
MHhDMiwweDM4LDB4M0YsMHgyRCwweDhCLDB4QkYsCisgICAgMHgwMywweDQxLDB4QTEsMHgzMCww
eEJFLDB4QjYsMHhBRSwweDgyLDB4MDMsMHg0MSwweEMyLDB4MzgsMHhGNiwweEZGLDB4MjYsMHhC
QSwKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4RkYsMHhERiwweDdBLDB4OEYsMHhDMiwweDM4
LDB4RTIsMHgzMCwweDNBLDB4QTIsMHgyMCwweDJCLAorICAgIDB4QzIsMHgzOCwweEUyLDB4MzAs
MHhBQSwweDgwLDB4MjAsMHhBQiwweDAzLDB4NDEsMHhBMSwweDMwLDB4RUIsMHhFRiwweEY5LDB4
OEUsCisgICAgMHgwMywweDM5LDB4QzIsMHgzOCwweDdGLDB4N0YsMHg3RSwweEZFLDB4MDMsMHgz
OSwweEEyLDB4MzAsMHhFMywweEUzLDB4RUIsMHg3QSwKKyAgICAweEUyLDB4MzgsMHg4MSwweDMw
LDB4NjIsMHg1RSwweEJBLDB4QUYsMHhFMywweDM4LDB4ODEsMHgyOCwweDk3LDB4QTcsMHg4Miww
eDg4LAorICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHhFMSwweEVCLDB4RkQsMHhCNSwweEM3LDB4
N0EsMHhFMiwweDM4LDB4MkQsMHgyRCwweDJELDB4MjUsCisgICAgMHgwOCwweDgzLDB4NjcsMHg2
QSwweEUyLDB4NkEsMHhGQSwweEVBLDB4NjcsMHg2QSwweDY0LDB4NDksMHhBOCwweEU4LDB4RTAs
MHg3OCwKKyAgICAweEM1LDB4NTksMHgwMywweDM5LDB4RjAsMHhGRSwweEQ2LDB4NTcsMHg0NCww
eDQxLDB4RTIsMHgzMCwweEVCLDB4RjIsMHg3MiwweEVBLAorICAgIDB4MjMsMHgzOSwweEMyLDB4
MjgsMHgyQSwweEZBLDB4NkYsMHhFRSwweDAzLDB4MzEsMHhDMiwweDI4LDB4QjAsMHhBOSwweEZE
LDB4RTksCisgICAgMHgwMywweDMxLDB4QzIsMHgyOCwweEFCLDB4RUUsMHhBRiwweEFGLDB4MDMs
MHgzMSwweEMyLDB4MzAsMHhGMiwweDgyLDB4QjIsMHhBMSwKKyAgICAweDAzLDB4MzEsMHhDMyww
eDMwLDB4RUIsMHgwMSwweDJGLDB4QkEsMHgwMywweDMxLDB4QzIsMHgyOCwweEUyLDB4RTgsMHg4
MCwweDQyLAorICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHgzRSwweDJCLDB4MkEsMHhBRCwweDAz
LDB4MzEsMHhDMywweDMwLDB4MEUsMHgwQiwweEU4LDB4RjgsCisgICAgMHhFMywweDMwLDB4QzIs
MHgyOCwweEVDLDB4Q0UsMHhBNywweDAyLDB4MDMsMHgzMSwweEMzLDB4MzAsMHhCRCwweDlELDB4
RDcsMHhCRiwKKyAgICAweEUzLDB4MzAsMHhDMiwweDI4LDB4QTIsMHhFQSwweEYwLDB4RTcsMHhF
MywweDMwLDB4QzIsMHgyOCwweDAyLDB4MDEsMHg2QSwweDg2LAorICAgIDB4MDMsMHgzMSwweEMz
LDB4MzAsMHhGQSwweDJFLDB4NjMsMHg2MywweDAzLDB4MzEsMHhDMiwweDI4LDB4RkEsMHg5Miww
eERCLDB4QkYsCisgICAgMHgwMywweDMxLDB4QzIsMHgzMCwweEZFLDB4RkUsMHhBQiwweDhFLDB4
MDMsMHgzMSwweEMzLDB4MzAsMHg3QiwweEZGLDB4MkEsMHgwRSwKKyAgICAweDAzLDB4MzEsMHhB
MiwweDI4LDB4RkEsMHhENiwweEZFLDB4Q0MsMHhFMywweDMwLDB4QTIsMHgyOCwweDIyLDB4RkEs
MHhBMSwweDBCLAorICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHgyQSwweEE5LDB4NUYsMHg3RSww
eDAzLDB4MzEsMHhDMiwweDMwLDB4N0MsMHhGNywweDY1LDB4NzMsCisgICAgMHhFMywweDMwLDB4
QzIsMHgyOCwweDAwLDB4MkIsMHg5NSwweERBLDB4MjMsMHgzOSwweEMyLDB4MjgsMHhGMiwweENC
LDB4RjcsMHhCNywKKyAgICAweDAzLDB4MzEsMHhFMiwweDMwLDB4QzMsMHhDMiwweENGLDB4NTcs
MHgyMywweDMxLDB4QzIsMHgzMCwweEE3LDB4NkUsMHhFMywweEUzLAorICAgIDB4MDMsMHgzMSww
eEMyLDB4MzAsMHgwMiwweDIwLDB4RUMsMHg2OCwweDAzLDB4MzksMHhDMiwweDMwLDB4ODgsMHgw
MCwweEY4LDB4MEIsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDdFLDB4RUEsMHhBMiwweDBB
LDB4MDMsMHgzOSwweEMzLDB4MzAsMHgyQSwweDM3LDB4QUIsMHhEQiwKKyAgICAweDI0LDB4Mzks
MHhFMywweDMwLDB4RUUsMHhBQSwweEFFLDB4RjUsMHgyNCwweDM5LDB4QzMsMHgzMCwweEMyLDB4
N0EsMHhCOCwweEIyLAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHhBOSwweEFGLDB4QUIsMHhC
NywweDI0LDB4MzksMHhFMywweDMwLDB4NTUsMHhERSwweEY3LDB4N0EsCisgICAgMHgyNCwweDQx
LDB4RTMsMHgzMCwweDA5LDB4QkUsMHhCRCwweDY1LDB4MjQsMHgzOSwweEUzLDB4MzgsMHhCNCww
eDM2LDB4RjQsMHhENywKKyAgICAweDI0LDB4NDEsMHhDMywweDMwLDB4OEEsMHg4OCwweEUzLDB4
REEsMHgyNCwweDM5LDB4RTMsMHgzOCwweDU3LDB4RkIsMHhFMiwweDJGLAorICAgIDB4MjQsMHgz
OSwweEUzLDB4MzgsMHg2RCwweDdBLDB4NzIsMHhFQywweDI0LDB4MzksMHhFMywweDM4LDB4MzMs
MHgzQiwweDM5LDB4QjcsCisgICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweEJGLDB4QjYsMHhBMiww
eEEyLDB4MjQsMHgzOSwweDAzLDB4MzksMHhCRSwweDU1LDB4NUYsMHg1NSwKKyAgICAweDIzLDB4
MzksMHhFNCwweDMwLDB4RkEsMHhFQSwweEVCLDB4QTIsMHgwMywweDM5LDB4QzIsMHgzMCwweDNG
LDB4QkYsMHhFRSwweDAyLAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHhERiwweEQ3LDB4RkMs
MHhBQiwweDAzLDB4MzEsMHhDMiwweDMwLDB4MjIsMHhCRiwweDJFLDB4MDAsCisgICAgMHgyNCww
eDM5LDB4RTIsMHgzMCwweDNBLDB4QkYsMHg3OCwweEE4LDB4NjUsMHg0MSwweEUzLDB4MzAsMHhF
MywweEJCLDB4QTUsMHhBNywKKyAgICAweDY0LDB4NDEsMHgwNCwweDMxLDB4N0IsMHhFRSwweEYw
LDB4QUIsMHg0NCwweDM5LDB4MDMsMHgzMSwweEFBLDB4RTIsMHhFOCwweDcwLAorICAgIDB4NDQs
MHg0MSwweDI0LDB4MzksMHhDQiwweDc5LDB4NTUsMHgzNSwweDQ0LDB4MzksMHgwNCwweDM5LDB4
NkEsMHg2QiwweDdBLDB4QkEsCisgICAgMHgyNCwweDQxLDB4MDMsMHgzMSwweEY3LDB4QkUsMHhB
NywweDBFLDB4NjQsMHg0MSwweDAzLDB4MzksMHhGRCwweEY3LDB4RTUsMHhGRiwKKyAgICAweDQ0
LDB4NDEsMHhFMywweDMwLDB4RjIsMHhFMiwweEMyLDB4QUEsMHg0NCwweDM5LDB4RTMsMHgzMCww
eDYyLDB4NjIsMHhCQiwweEFCLAorICAgIDB4NDQsMHg0MSwweEUzLDB4MzAsMHhFQiwweDczLDB4
QkEsMHhCMiwweDI0LDB4NDEsMHgwMywweDMxLDB4N0YsMHhBRiwweEJCLDB4MDgsCisgICAgMHg0
NCwweDQxLDB4RTMsMHgzMCwweEI3LDB4RkIsMHhCQSwweEE4LDB4NDQsMHg0MSwweDAzLDB4Mzks
MHg3RSwweEZBLDB4MkYsMHgwMSwKKyAgICAweDY1LDB4NDEsMHgwMywweDM5LDB4REQsMHhGNyww
eENBLDB4MjMsMHg2NSwweDQxLDB4MDQsMHgzOSwweDc1LDB4RjcsMHgyRSwweDBDLAorICAgIDB4
QzYsMHg1MSwweEUzLDB4MzgsMHg1RiwweDVGLDB4QUYsMHgyQiwweEM2LDB4NTEsMHgyNCwweDM5
LDB4QkQsMHhGRCwweDJCLDB4MDAsCisgICAgMHgyNywweDYyLDB4ODUsMHg0OSwweEY1LDB4QkQs
MHhBMywweEEyLDB4MjcsMHg2MiwweEE1LDB4NDksMHhCRCwweEZFLDB4QUUsMHgwQSwKKyAgICAw
eDI3LDB4NjIsMHhDNiwweDUxLDB4RUQsMHhFRiwweEZBLDB4QTgsMHgwNywweDYyLDB4RTYsMHg1
OSwweEJBLDB4OTUsMHhCNSwweDJGLAorICAgIDB4NDcsMHg2QSwweEU2LDB4NTksMHhCRCwweEFC
LDB4MDIsMHg4MCwweDQ3LDB4NjIsMHgwNywweDYyLDB4M0QsMHg2MiwweDAyLDB4MDAsCisgICAg
MHg4OCwweDZBLDB4MjcsMHg2MiwweEQyLDB4NDIsMHg3RCwweDVGLDB4NjgsMHg2QSwweDA3LDB4
NjIsMHhBRSwweEFBLDB4MUYsMHhCRCwKKyAgICAweEE4LDB4NzIsMHg0NywweDZBLDB4N0QsMHhB
QSwweEFGLDB4REYsMHhBOSwweDcyLDB4NDcsMHg2MiwweEE3LDB4QkYsMHhCOCwweEZBLAorICAg
IDB4QTgsMHg3MiwweDQ4LDB4NjIsMHhFRiwweDVFLDB4RkUsMHhBOCwweEE5LDB4NzIsMHgyNyww
eDYyLDB4QUEsMHgzRSwweEE3LDB4MkEsCisgICAgMHhBOSwweDcyLDB4NjgsMHg2QSwweEQ2LDB4
NzcsMHhDRiwweDlFLDB4Q0EsMHg3MiwweDQ4LDB4NkEsMHhBRCwweEFCLDB4QUIsMHg3OCwKKyAg
ICAweEE4LDB4NzIsMHg0NywweDYyLDB4QUEsMHgyRSwweEZGLDB4QjgsMHhBOSwweDcyLDB4Njcs
MHg2QSwweEVFLDB4NDYsMHhBMCwweDAyLAorICAgIDB4QTgsMHg3MiwweDQ3LDB4NjIsMHgwQiww
eDg5LDB4MjcsMHgwMiwweEM5LDB4N0EsMHg4OCwweDZBLDB4QUEsMHg5QiwweDZGLDB4RTEsCisg
ICAgMHhFQSwweDdBLDB4NjcsMHg2QSwweEY4LDB4QjYsMHhCRiwweEZELDB4QzksMHg3MiwweEE4
LDB4NzIsMHhBRCwweDE1LDB4QkYsMHg3QSwKKyAgICAweEM5LDB4NzIsMHg2OCwweDZBLDB4N0Ms
MHhGQiwweEM5LDB4QUIsMHhDOSwweDcyLDB4ODksMHg3MiwweDQzLDB4ODksMHhCRiwweEFBLAor
ICAgIDB4RUIsMHg3QSwweEE5LDB4NzIsMHhENSwweEQ1LDB4RjMsMHhBRiwweEM5LDB4NzIsMHg4
OCwweDZBLDB4RjUsMHhGNSwweDk2LDB4RTIsCisgICAgMHhDOCwweDcyLDB4NjgsMHg2QSwweEZF
LDB4RkEsMHgyQiwweDFGLDB4QzksMHg3MiwweDY3LDB4NkEsMHgzMCwweEFFLDB4RUEsMHhBQSwK
KyAgICAweEM5LDB4NzIsMHg4OCwweDcyLDB4MDAsMHgwQiwweDNELDB4OUEsMHhFOSwweDdBLDB4
NjgsMHg2QSwweDY4LDB4RUEsMHhCQywweEZBLAorICAgIDB4RUEsMHg3QSwweDg4LDB4NkEsMHhE
NSwweEJCLDB4QTMsMHhBRCwweEVBLDB4N0EsMHhBOSwweDcyLDB4ODEsMHgwMiwweDdFLDB4QUQs
CisgICAgMHhFQSwweDdBLDB4QTksMHg3MiwweDM5LDB4MjgsMHgwMywweDJBLDB4MEEsMHg3Qiww
eEE4LDB4NzIsMHg1NiwweDhFLDB4MkMsMHhCRSwKKyAgICAweDBBLDB4N0IsMHhBOSwweDcyLDB4
NTcsMHhGNSwweDcwLDB4QTAsMHgwQiwweDgzLDB4ODksMHg3MiwweDhGLDB4NkYsMHg2RiwweDlG
LAorICAgIDB4RTksMHg3QSwweEE5LDB4NzIsMHgwQywweDIzLDB4NkUsMHhENiwweDBBLDB4N0Is
MHhDOSwweDcyLDB4RTMsMHhCRCwweEJGLDB4QUQsCisgICAgMHgyQiwweDgzLDB4QzksMHg3Miww
eDVGLDB4NzcsMHhENywweDJBLDB4MkIsMHg4MywweEE4LDB4NzIsMHhBRiwweEFCLDB4QTYsMHhG
MCwKKyAgICAweDIzLDB4NDEsMHhDMiwweDM4LDB4NTQsMHg1RSwweDVFLDB4NUUsMHgwMywweDQx
LDB4QzIsMHgzOCwweEJGLDB4ODEsMHhGOSwweEEzLAorICAgIDB4MDIsMHg0MSwweEMyLDB4Mzgs
MHg4QSwweDJBLDB4QkEsMHhCNSwweDAzLDB4NDEsMHhFMiwweDM4LDB4RjMsMHhENSwweEY3LDB4
NTYsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDdDLDB4RTgsMHhBQSwweEY3LDB4MjMsMHg0
MSwweEUyLDB4MzgsMHg3MywweEVCLDB4RjUsMHg1NSwKKyAgICAweDAzLDB4MzksMHhDMiwweDM4
LDB4NzYsMHhERSwweDkwLDB4REEsMHgwMywweDQxLDB4QzIsMHgzOCwweDZFLDB4NkUsMHhGQSww
eEFBLAorICAgIDB4RTIsMHgzOCwweEMyLDB4MzAsMHgwQiwweDhELDB4MjcsMHhERSwweDAyLDB4
NDEsMHhBMSwweDMwLDB4QjcsMHhCQSwweEFFLDB4QTgsCisgICAgMHhFMiwweDM4LDB4QzEsMHgz
OCwweDQwLDB4RkEsMHg0QiwweDdDLDB4RTIsMHgzOCwweEMxLDB4MzAsMHg2RSwweDM3LDB4MjIs
MHgwMSwKKyAgICAweDAyLDB4NDEsMHhBMiwweDMwLDB4QUEsMHg4NiwweDIyLDB4RTIsMHgwMyww
eDQxLDB4QzIsMHgzOCwweDdGLDB4RkEsMHhGOCwweERGLAorICAgIDB4RTIsMHgzOCwweEMyLDB4
MzgsMHgyOSwweEI1LDB4RDgsMHgzQiwweEUyLDB4MzgsMHhDMiwweDM4LDB4QUYsMHhCQSwweDU4
LDB4REYsCisgICAgMHgwMywweDM5LDB4QzIsMHgzOCwweEZCLDB4RDcsMHg5NSwweEJBLDB4MDMs
MHgzOSwweEMyLDB4MzgsMHhGRSwweEJCLDB4NkEsMHg1OCwKKyAgICAweEUyLDB4MzgsMHhBMiww
eDMwLDB4QUEsMHhCOCwweEZBLDB4RUUsMHhDMiwweDMwLDB4ODIsMHgzMCwweEIwLDB4RjgsMHhC
QSwweEIyLAorICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHhGNSwweEE1LDB4MkYsMHhBRiwweEUy
LDB4MzgsMHhDMiwweDMwLDB4MEIsMHgyQywweEY2LDB4NzQsCisgICAgMHhFMiwweDM4LDB4QTIs
MHgzMCwweERGLDB4NUUsMHg3QSwweEZCLDB4ODcsMHg3MiwweEUyLDB4MzgsMHgwRCwweDJELDB4
QkQsMHhENSwKKyAgICAweEE3LDB4NzIsMHg2NCwweDQ5LDB4MDAsMHhBOCwweDdGLDB4NTUsMHgy
NiwweDYyLDB4MjMsMHg0MSwweDc4LDB4NUUsMHg3RiwweDc1LAorICAgIDB4MjQsMHg0MSwweEUz
LDB4MzgsMHgxRiwweEZCLDB4RTgsMHhBMCwweDIzLDB4MzksMHhFMiwweDMwLDB4RjgsMHhENyww
eERGLDB4RUUsCisgICAgMHgyNCwweDM5LDB4RTIsMHgzMCwweEZGLDB4ODksMHg2NiwweDdFLDB4
MDMsMHgzMSwweEMyLDB4MzAsMHhBOCwweDMzLDB4QkIsMHhFQSwKKyAgICAweDIzLDB4MzksMHhF
MywweDMwLDB4RDUsMHg3NSwweDc1LDB4REUsMHgwMywweDMxLDB4QzMsMHgzMCwweDBCLDB4Qjcs
MHhGMywweEIwLAorICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHhBRiwweDdFLDB4QUIsMHhDOCww
eDAzLDB4MzEsMHhDMywweDMwLDB4RjYsMHhFRSwweEFFLDB4QTcsCisgICAgMHgyMywweDM5LDB4
QzIsMHgzMCwweDNELDB4RkYsMHhENywweERCLDB4MDMsMHgzMSwweEMyLDB4MzAsMHhGRSwweEVF
LDB4QUUsMHhFQSwKKyAgICAweEUzLDB4MzAsMHhDMiwweDI4LDB4MkQsMHgzNSwweDI4LDB4MDgs
MHgwMywweDMxLDB4QzIsMHgzMCwweEU1LDB4NUUsMHhBQywweEVCLAorICAgIDB4RTIsMHgzMCww
eEEyLDB4MjgsMHhBOSwweEE3LDB4MkEsMHgwMCwweEUyLDB4MzAsMHhDMiwweDI4LDB4MkYsMHgw
QiwweEE4LDB4QTAsCisgICAgMHgyMywweDMxLDB4QzIsMHgzMCwweDZCLDB4RkYsMHg3RCwweDVG
LDB4MDMsMHgzMSwweEMyLDB4MzAsMHhFRiwweDJGLDB4MkYsMHgzQSwKKyAgICAweDAzLDB4Mzks
MHhFMywweDMwLDB4NTUsMHg1NSwweEI3LDB4NUUsMHgyNCwweDM5LDB4RTMsMHgzMCwweEJGLDB4
REYsMHhFRiwweEVELAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGRSwweEZFLDB4RjgsMHhG
OCwweDAzLDB4MzEsMHhDMiwweDI4LDB4OTcsMHhENSwweEU2LDB4MEYsCisgICAgMHgyNCwweDM5
LDB4QzIsMHgyOCwweEY3LDB4QkYsMHhCNSwweEFGLDB4MDMsMHgzMSwweEMyLDB4MzAsMHhGMiww
eEM4LDB4QUEsMHhDQSwKKyAgICAweEUzLDB4MzAsMHhDMiwweDI4LDB4QTIsMHg3RiwweEU2LDB4
MjAsMHgwMywweDMxLDB4QzIsMHgyOCwweEI2LDB4QUYsMHhGNywweDdFLAorICAgIDB4MDMsMHgz
MSwweEMyLDB4MzAsMHhGRiwweEI2LDB4QkYsMHhBRCwweDA0LDB4MzEsMHhFMiwweDMwLDB4RkQs
MHhGMywweDFFLDB4MjUsCisgICAgMHgwMywweDMxLDB4QzIsMHgyOCwweERGLDB4N0YsMHg3MCww
eDgwLDB4MDMsMHgzMSwweEMyLDB4MzAsMHhBQiwweEVCLDB4RkQsMHhFQSwKKyAgICAweDAzLDB4
MzEsMHhFMywweDMwLDB4MDksMHg3QiwweDdBLDB4NTUsMHgwMywweDM5LDB4QzMsMHgzMCwweEIy
LDB4QkUsMHhBOCwweEY3LAorICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHhGNSwweEJFLDB4MUIs
MHhCRSwweDI0LDB4MzksMHhFMywweDMwLDB4N0YsMHhCRiwweEZCLDB4QjIsCisgICAgMHgyNCww
eDM5LDB4RTMsMHgzMCwweEQ2LDB4N0UsMHhEQSwweDdBLDB4MjQsMHg0MSwweDAzLDB4MzEsMHhG
RiwweEVCLDB4RTMsMHg4RCwKKyAgICAweDAzLDB4MzksMHhFMywweDMwLDB4NTUsMHg3NywweEUw
LDB4RjgsMHgyNCwweDQxLDB4RTMsMHgzOCwweEY1LDB4QkQsMHhCRCwweEQyLAorICAgIDB4MjQs
MHgzOSwweEUzLDB4MzAsMHg1NywweEFFLDB4M0EsMHhBQSwweDI0LDB4MzksMHhDMywweDM4LDB4
MEIsMHhBQSwweEJFLDB4QUEsCisgICAgMHhFMywweDM4LDB4MjQsMHgzMSwweEVBLDB4QUEsMHhB
RSwweEE2LDB4MjQsMHg0MSwweEUzLDB4MzAsMHhFRiwweDhBLDB4ODgsMHhBRCwKKyAgICAweDQ0
LDB4MzksMHhFMywweDM4LDB4N0QsMHhGRCwweEY5LDB4QkYsMHgyNCwweDM5LDB4QzMsMHgzOCww
eEJBLDB4QUEsMHg4MiwweDIwLAorICAgIDB4MjQsMHgzOSwweDAzLDB4MzksMHgzRSwweDZFLDB4
QTAsMHg1QywweDIzLDB4MzksMHhFMywweDMwLDB4MDksMHgyQSwweEJBLDB4REIsCisgICAgMHgy
NCwweDM5LDB4MDMsMHgzMSwweDVBLDB4QjIsMHg4QiwweDdELDB4MjMsMHgzOSwweEUzLDB4MzAs
MHgwMCwweEYwLDB4NkEsMHhBRiwKKyAgICAweDQ0LDB4MzksMHgwMywweDMxLDB4RkQsMHg4Riww
eENGLDB4NjcsMHg2NSwweDQxLDB4RTMsMHgzMCwweENGLDB4RUYsMHg3OSwweEJGLAorICAgIDB4
NDQsMHgzOSwweEUzLDB4MzAsMHgyQiwweEFGLDB4RkYsMHhGNywweDIzLDB4MzksMHhFMywweDMw
LDB4MDAsMHhCOCwweEVFLDB4N0UsCisgICAgMHg2NCwweDQxLDB4QzIsMHgzMCwweDJBLDB4QUYs
MHhGRiwweDc3LDB4NDQsMHg0MSwweDA0LDB4MzksMHgyQywweDIwLDB4QUEsMHgxNSwKKyAgICAw
eDY1LDB4NDksMHgyNCwweDQxLDB4N0UsMHhFRSwweEZCLDB4MEEsMHg2NCwweDQxLDB4MDMsMHgz
OSwweDVBLDB4RkEsMHhFQSwweDI4LAorICAgIDB4NjQsMHg0MSwweDAzLDB4MzksMHhGRiwweEE1
LDB4QUUsMHgzQywweDg2LDB4NDksMHgwMywweDM5LDB4RjcsMHhBRCwweDhBLDB4ODgsCisgICAg
MHg2NSwweDQxLDB4MDQsMHgzOSwweERGLDB4RUIsMHgzOCwweDAwLDB4ODUsMHg0OSwweDI0LDB4
MzksMHhENSwweEJGLDB4QkIsMHgwMiwKKyAgICAweDg1LDB4NDksMHgyNCwweDM5LDB4N0QsMHhG
RiwweEI4LDB4RTAsMHhBNiwweDUxLDB4MjMsMHgzOSwweEY5LDB4RUIsMHg4QSwweEFBLAorICAg
IDB4ODUsMHg0OSwweDI0LDB4NDEsMHhGNywweDBBLDB4MDIsMHg4RSwweEE1LDB4NTEsMHg0NCww
eDQxLDB4RDUsMHhBRSwweEZFLDB4MEIsCisgICAgMHhFNiwweDU5LDB4ODUsMHg0OSwweDk1LDB4
M0QsMHgzRiwweERGLDB4MDYsMHg1QSwweEM2LDB4NTEsMHhCRiwweDNGLDB4RTMsMHg5QiwKKyAg
ICAweDI3LDB4NjIsMHhDNSwweDUxLDB4MjAsMHgwOCwweEE5LDB4MjksMHg0NywweDYyLDB4MDYs
MHg1QSwweEQ1LDB4RjUsMHg3RCwweEJELAorICAgIDB4NDgsMHg2QSwweDA3LDB4NUEsMHhGRiww
eEFGLDB4QTUsMHgyNywweDQ4LDB4NjIsMHhFNiwweDU5LDB4RjcsMHhCQSwweDJGLDB4ODcsCisg
ICAgMHg2OCwweDZBLDB4MDYsMHg1QSwweEZBLDB4RUEsMHg4QiwweDg3LDB4NjcsMHg2QSwweDI3
LDB4NjIsMHg0QSwweEIwLDB4M0UsMHhCRiwKKyAgICAweDY4LDB4NkEsMHgwNiwweDVBLDB4MkEs
MHhCRSwweDdDLDB4N0IsMHg4OCwweDZBLDB4MjcsMHg2MiwweDk3LDB4RDksMHhCRCwweDBGLAor
ICAgIDB4QTgsMHg3MiwweDQ3LDB4NjIsMHhERiwweEJGLDB4Q0EsMHg4MiwweEM5LDB4NzIsMHg2
NywweDZBLDB4MkIsMHgzNSwweEQ1LDB4NTcsCisgICAgMHhBOCwweDcyLDB4NjgsMHg2QSwweEJC
LDB4RTgsMHhBOCwweEZGLDB4QTksMHg3MiwweDQ3LDB4NjIsMHhERiwweDU1LDB4NkIsMHgyQSwK
KyAgICAweEE5LDB4NzIsMHg0NywweDYyLDB4OUUsMHhCNSwweDI3LDB4QkUsMHhDOSwweDcyLDB4
ODgsMHg2QSwweDdBLDB4RUEsMHg2QSwweENGLAorICAgIDB4QTksMHg3MiwweDQ3LDB4NjIsMHhF
QSwweDIyLDB4MDksMHgwMiwweEM5LDB4NzIsMHg4OCwweDZBLDB4MzksMHg5NiwweDVGLDB4NTcs
CisgICAgMHhDOSwweDcyLDB4ODgsMHg3MiwweDgwLDB4RUEsMHhCRSwweEZELDB4QzksMHg3QSww
eDY4LDB4NkEsMHhDOSwweEFCLDB4QUEsMHhCNywKKyAgICAweEM5LDB4NzIsMHg2NywweDZBLDB4
QzksMHhFMCwweEE4LDB4REEsMHhBOCwweDcyLDB4NjgsMHg2QSwweDcwLDB4OUYsMHhERiwweEVB
LAorICAgIDB4QzksMHg3QSwweDY4LDB4NkEsMHhGQSwweEJGLDB4QjMsMHhBNSwweEE5LDB4NzIs
MHg2OCwweDZBLDB4MkUsMHhBQSwweDk4LDB4REIsCisgICAgMHhDQSwweDdBLDB4NjgsMHg2QSww
eDI4LDB4QkYsMHhGRSwweEVGLDB4QzksMHg3MiwweDY4LDB4NkEsMHhFMCwweEFFLDB4ODksMHhC
OSwKKyAgICAweEM5LDB4N0EsMHg2OCwweDZBLDB4QjcsMHgwNSwweDhFLDB4RUEsMHhFOSwweDdB
LDB4ODgsMHg2QSwweEJCLDB4QkEsMHhBMiwweEQ1LAorICAgIDB4RUEsMHg3QSwweDg4LDB4NkEs
MHg3QSwweEU4LDB4NUEsMHg3OSwweENBLDB4N0EsMHg2NywweDZBLDB4OEEsMHhDMSwweDJCLDB4
MEEsCisgICAgMHhDOSwweDcyLDB4ODksMHg3MiwweDk5LDB4QjcsMHgyNiwweEIyLDB4QzksMHg3
MiwweDY4LDB4NkEsMHgyOCwweEFCLDB4RjcsMHhGQywKKyAgICAweEM5LDB4NzIsMHgyNiwweDYy
LDB4MDAsMHgwMCwweDAyLDB4QTYsMHhFOSwweDdBLDB4ODcsMHg2QSwweEJBLDB4RUUsMHhBMyww
eEE3LAorICAgIDB4RUEsMHg3QSwweDg4LDB4NkEsMHgwMiwweEFCLDB4RkIsMHhGQSwweENBLDB4
N0EsMHg2OCwweDZBLDB4MzksMHhGQSwweDJBLDB4MEYsCisgICAgMHhDQSwweDdBLDB4NjgsMHg2
QSwweDBBLDB4OEQsMHgyQSwweEFCLDB4MEEsMHg4MywweEE5LDB4NzIsMHgyQiwweEFGLDB4RjUs
MHg1NiwKKyAgICAweDBBLDB4N0IsMHhDOSwweDcyLDB4RUEsMHhGOCwweEZCLDB4OTUsMHgwQSww
eDdCLDB4QTgsMHg3MiwweEEwLDB4N0UsMHhEQSwweDdGLAorICAgIDB4MDMsMHg0MSwweEMyLDB4
MzgsMHhGRiwweDlCLDB4NzMsMHhEQiwweDAzLDB4NDEsMHhDMiwweDM4LDB4NkEsMHg1MCwweEYy
LDB4RTIsCisgICAgMHgwMywweDQxLDB4QTIsMHgzOCwweEVGLDB4RjIsMHg3QSwweDZCLDB4MDIs
MHgzOSwweEExLDB4MzAsMHhBQiwweEEzLDB4RjksMHhGQiwKKyAgICAweDAyLDB4NDEsMHhBMiww
eDMwLDB4QkUsMHhBQSwweDI2LDB4OEYsMHgwMywweDM5LDB4QzIsMHgzOCwweEZGLDB4RTgsMHhC
QywweEY2LAorICAgIDB4RTIsMHgzOCwweEExLDB4MzAsMHhBMCwweEZBLDB4RDcsMHhENywweEUz
LDB4MzgsMHhBMSwweDMwLDB4MDIsMHg4MywweEJFLDB4MTYsCisgICAgMHhFMiwweDM4LDB4QTIs
MHgzMCwweEFBLDB4QTMsMHg4QSwweDAwLDB4MDIsMHgzOSwweEMyLDB4MzgsMHhBRSwweEQ2LDB4
QUYsMHg5OSwKKyAgICAweEUyLDB4MzgsMHhBMSwweDMwLDB4QTAsMHhGMCwweERFLDB4QUEsMHgw
MywweDQxLDB4QzIsMHgzOCwweERGLDB4QUYsMHgyRiwweDc5LAorICAgIDB4MDMsMHgzOSwweEMy
LDB4MzgsMHg5QSwweEVDLDB4RkUsMHhFRiwweDAyLDB4MzksMHhBMSwweDM4LDB4RUEsMHhBOCww
eDZBLDB4QkEsCisgICAgMHhFMiwweDM4LDB4QTIsMHgzMCwweEZBLDB4QUIsMHhBMywweEEwLDB4
RTIsMHgzOCwweEMyLDB4MzgsMHgwNSwweEEzLDB4QzIsMHg2MCwKKyAgICAweEUyLDB4MzgsMHhD
MiwweDMwLDB4MDIsMHg4RiwweEJGLDB4RUYsMHhFMiwweDM4LDB4ODEsMHgzMCwweEIwLDB4REIs
MHhEMywweDdBLAorICAgIDB4RTMsMHgzOCwweEEyLDB4MzAsMHg0QSwweDdBLDB4REQsMHhGRCww
eDAzLDB4MzksMHhBMiwweDMwLDB4NUQsMHg5RCwweDM1LDB4REQsCisgICAgMHgwMywweDM5LDB4
QzIsMHgzMCwweDlBLDB4RUEsMHhFQSwweERGLDB4MDMsMHgzOSwweEEyLDB4MjgsMHhCQywweDE4
LDB4RUUsMHhFQiwKKyAgICAweDAzLDB4MzksMHg4MSwweDMwLDB4QkUsMHhFQywweEJGLDB4N0Qs
MHhFMywweDM4LDB4QTEsMHgzMCwweDBCLDB4QUIsMHhGRiwweDc1LAorICAgIDB4MjMsMHg0MSww
eEEyLDB4MzAsMHgwQiwweEVGLDB4N0QsMHhERiwweDI0LDB4NDEsMHg4MSwweDMwLDB4ODIsMHhB
RSwweEZGLDB4RDcsCisgICAgMHgyNCwweDQxLDB4QTEsMHgzMCwweEEwLDB4QkEsMHhGRiwweEQ1
LDB4MjMsMHgzOSwweEUzLDB4MzAsMHhBRSwweEFBLDB4N0IsMHg2OSwKKyAgICAweDAzLDB4Mzks
MHhDMiwweDMwLDB4RkEsMHhGMiwweEZGLDB4RkYsMHgwMywweDMxLDB4QzIsMHgzMCwweDI5LDB4
MzUsMHhCRiwweEZGLAorICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHg4MCwweEJFLDB4RkIsMHhG
RCwweDI0LDB4MzksMHhDMywweDI4LDB4REEsMHg3QiwweENGLDB4RkEsCisgICAgMHgyNCwweDM5
LDB4QzIsMHgzMCwweDczLDB4NkQsMHhERCwweDk3LDB4RTMsMHgzMCwweEMzLDB4MjgsMHgwQiww
eEUzLDB4QTIsMHhFOCwKKyAgICAweDAzLDB4MzEsMHhDMywweDMwLDB4QkEsMHgzRSwweEFBLDB4
QUIsMHgwMywweDMxLDB4QzIsMHgyOCwweEE4LDB4RTAsMHg2QSwweEZBLAorICAgIDB4RTMsMHgz
MCwweEMyLDB4MjgsMHgxOCwweDFGLDB4OEYsMHhCRiwweDAzLDB4MzEsMHhDMiwweDMwLDB4RTcs
MHhGRSwweEJGLDB4RkQsCisgICAgMHgwMywweDMxLDB4QzIsMHgyOCwweEVCLDB4RTcsMHhERSww
eDczLDB4MDMsMHgzMSwweEMyLDB4MjgsMHhFQSwweEFCLDB4RUMsMHhERCwKKyAgICAweEUzLDB4
MzAsMHhDMiwweDI4LDB4QjIsMHhENywweDgwLDB4M0EsMHgyNCwweDM5LDB4QzIsMHgzMCwweDJC
LDB4RUIsMHhCOSwweDVCLAorICAgIDB4MjMsMHgzOSwweEMzLDB4MzAsMHhGRSwweEY5LDB4RUEs
MHhFMiwweDI0LDB4MzksMHhDMiwweDMwLDB4ODIsMHg3QiwweEZELDB4RDcsCisgICAgMHgwMyww
eDM5LDB4RTMsMHgzMCwweEU3LDB4NzUsMHg1NSwweDU0LDB4MDQsMHgzOSwweEUzLDB4MzAsMHgw
OSwweDU1LDB4NTUsMHg1NSwKKyAgICAweEUzLDB4MzAsMHhDMiwweDMwLDB4MDgsMHhBMCwweEIw
LDB4MDAsMHgwMywweDMxLDB4QzIsMHgyOCwweDhGLDB4OEEsMHgyQSwweEE3LAorICAgIDB4MDMs
MHgzMSwweEMyLDB4MzAsMHg4MCwweEFBLDB4QjUsMHgzNiwweDAzLDB4MzEsMHhDMywweDMwLDB4
RkUsMHhGMCwweEZFLDB4RUUsCisgICAgMHgwMywweDM5LDB4QTIsMHgzMCwweEFCLDB4RkEsMHhF
RCwweEJFLDB4MjQsMHgzOSwweEMyLDB4MzAsMHgwRiwweDBGLDB4QkIsMHhGNywKKyAgICAweDI0
LDB4MzksMHhDMiwweDMwLDB4QTcsMHgzRSwweEJGLDB4RUYsMHgwMywweDM5LDB4QzMsMHgzMCww
eDc2LDB4RUUsMHhDQSwweDgwLAorICAgIDB4MDMsMHgzMSwweEEyLDB4MzAsMHhBQSwweDIyLDB4
QUEsMHhCMiwweDAzLDB4MzEsMHhDMiwweDMwLDB4REUsMHhCQSwweDJCLDB4M0EsCisgICAgMHgw
MywweDMxLDB4QzIsMHgzMCwweEFBLDB4QjgsMHg3MCwweDcwLDB4MDMsMHgzMSwweEMyLDB4Mjgs
MHgwMCwweDIwLDB4QkYsMHgyRCwKKyAgICAweDAzLDB4MzksMHhFMywweDMwLDB4RTgsMHhBNiww
eDVFLDB4NUYsMHgyNCwweDM5LDB4RTMsMHgzMCwweDJGLDB4MkYsMHg3NywweDc1LAorICAgIDB4
MDMsMHgzOSwweEUzLDB4MzAsMHg4QiwweDIwLDB4MjAsMHgzQSwweDI0LDB4MzksMHgwMywweDM5
LDB4N0YsMHg2RiwweDI1LDB4RjUsCisgICAgMHgyNCwweDQxLDB4MDMsMHgzOSwweDYzLDB4NUIs
MHg1RSwweDU2LDB4NDQsMHgzOSwweEUzLDB4MzgsMHhGRCwweEZGLDB4N0YsMHhBNSwKKyAgICAw
eDI0LDB4MzksMHhFMywweDM4LDB4N0YsMHg3RiwweEZBLDB4QTMsMHgyNCwweDM5LDB4RTMsMHgz
OCwweEE1LDB4MzcsMHhCRSwweEZGLAorICAgIDB4MDMsMHgzOSwweEMzLDB4MzAsMHgwMCwweDAw
LDB4RTIsMHhFMiwweDI0LDB4MzksMHhDMywweDM4LDB4QTAsMHgyQSwweEIyLDB4QTIsCisgICAg
MHg0NCwweDQxLDB4RTMsMHgzOCwweERFLDB4QUUsMHgzRSwweDM3LDB4NDQsMHg0MSwweEUzLDB4
MzAsMHhERiwweEJCLDB4RUUsMHgyRSwKKyAgICAweDQ0LDB4NDEsMHhFMywweDMwLDB4RUEsMHg1
MywweDZFLDB4RTgsMHg0NCwweDQxLDB4RTMsMHgzMCwweEJBLDB4MEEsMHhBRCwweEVGLAorICAg
IDB4MjQsMHgzOSwweDAzLDB4MzksMHg4MCwweDk4LDB4OTUsMHgxNSwweDQ0LDB4MzksMHgwMyww
eDM5LDB4RkYsMHg5NywweEFGLDB4QTgsCisgICAgMHg2NSwweDQxLDB4RTMsMHgzMCwweEQ3LDB4
N0UsMHgyQSwweDJFLDB4MjQsMHg0MSwweDAzLDB4MzksMHg1RCwweDc5LDB4NkYsMHg0OCwKKyAg
ICAweDQ0LDB4NDEsMHhDMywweDMwLDB4N0YsMHg3QiwweEFCLDB4MDIsMHg0NSwweDQxLDB4MDMs
MHgzOSwweDE1LDB4RDUsMHg3RCwweEFGLAorICAgIDB4NjUsMHg0MSwweEUyLDB4MzAsMHgyOCww
eDJGLDB4QkQsMHhGNywweDg1LDB4NDksMHgyMywweDM5LDB4MEEsMHg4MCwweEFBLDB4NkQsCisg
ICAgMHg4NSwweDQ5LDB4NDQsMHg0MSwweEJFLDB4MzIsMHg4MiwweDA5LDB4QTUsMHg0OSwweDQ0
LDB4NDEsMHhGRSwweEZBLDB4QUEsMHgzRSwKKyAgICAweEE2LDB4NDksMHg0NSwweDQxLDB4QjYs
MHhCNiwweDlFLDB4RkUsMHhDNiwweDUxLDB4NjUsMHg0OSwweEVBLDB4OEEsMHhFNywweDk3LAor
ICAgIDB4QTUsMHg1MSwweDY1LDB4NDksMHhBQiwweDIyLDB4QUEsMHgzRiwweEM2LDB4NTEsMHg4
NSwweDQ5LDB4N0QsMHhFNiwweDFFLDB4QUIsCisgICAgMHhDNiwweDUxLDB4NjUsMHg0OSwweDc3
LDB4OUYsMHhCNiwweDBFLDB4MDYsMHg1QSwweDQ0LDB4NDEsMHhBRCwweEFCLDB4QUEsMHgyQSwK
KyAgICAweDI3LDB4NjIsMHg4NSwweDQ5LDB4QUQsMHgzRiwweDJGLDB4MkUsMHg0NywweDYyLDB4
QzYsMHg1OSwweEY2LDB4OEEsMHhBQSwweEFFLAorICAgIDB4MjcsMHg2MiwweEU2LDB4NTksMHgy
NSwweDNCLDB4RjIsMHhDOCwweDQ3LDB4NjIsMHgwNiwweDVBLDB4RTIsMHhCRiwweEE5LDB4NTcs
CisgICAgMHg0NywweDYyLDB4MDcsMHg2MiwweEJGLDB4RjIsMHgyMiwweDhFLDB4ODgsMHg2QSww
eDA2LDB4NUEsMHhBRCwweEZGLDB4RkYsMHgzQiwKKyAgICAweDY3LDB4NkEsMHgwNiwweDYyLDB4
QUUsMHhGRCwweEZCLDB4NjAsMHg2NywweDZBLDB4RTYsMHg1OSwweDNBLDB4QUYsMHhDRCwweDI3
LAorICAgIDB4NjcsMHg2QSwweDI2LDB4NjIsMHg3QSwweEIyLDB4RkIsMHhCOCwweDg4LDB4NkEs
MHgyNywweDYyLDB4QkYsMHhBMiwweDlBLDB4RDUsCisgICAgMHhBOCwweDcyLDB4NjgsMHg2QSww
eDNCLDB4QkYsMHhGRiwweEY1LDB4ODgsMHg2QSwweDI3LDB4NjIsMHg4MCwweDJFLDB4QTcsMHhC
RSwKKyAgICAweDg4LDB4NkEsMHgyNywweDYyLDB4RDIsMHg3QSwweEJBLDB4QkEsMHhBOCwweDcy
LDB4MDcsMHg2MiwweDJCLDB4RjcsMHhENywweEZFLAorICAgIDB4QTgsMHg3MiwweDQ3LDB4NjIs
MHhFQSwweEM4LDB4QUIsMHgyRCwweEM5LDB4NzIsMHg2OCwweDZBLDB4MkEsMHgyMywweEZGLDB4
NTUsCisgICAgMHhDOSwweDcyLDB4NjgsMHg2QSwweDJBLDB4QUEsMHgyQiwweDI1LDB4MEEsMHg4
MywweDg4LDB4NkEsMHhGRiwweDdGLDB4N0EsMHhBMiwKKyAgICAweEM5LDB4NzIsMHg2OCwweDZB
LDB4NzgsMHhFQSwweEVBLDB4QTAsMHhFQSwweDdBLDB4NjgsMHg2QSwweEY1LDB4OUUsMHgyRiww
eEZGLAorICAgIDB4QzksMHg3MiwweDg4LDB4NkEsMHhENiwweDlGLDB4RjgsMHg5QiwweEE5LDB4
NzIsMHg2OCwweDZBLDB4RTIsMHg2NiwweEZFLDB4RkEsCisgICAgMHhBOSwweDZBLDB4NDgsMHg2
QSwweEJGLDB4REYsMHhGRiwweDNCLDB4ODksMHg2QSwweDQ4LDB4NkEsMHg2OCwweDRBLDB4QkUs
MHgyOCwKKyAgICAweEM5LDB4NzIsMHg0OCwweDYyLDB4OEEsMHhBRiwweEU3LDB4RkYsMHhDOSww
eDcyLDB4NjgsMHg2QSwweEE4LDB4RTgsMHg3RiwweDVGLAorICAgIDB4Q0EsMHg3QSwweDY4LDB4
NkEsMHhDQSwweDhBLDB4M0IsMHgyOSwweEU5LDB4N0EsMHg4OCwweDZBLDB4RUYsMHhGOSwweDJB
LDB4ODMsCisgICAgMHhDOSwweDdBLDB4NjcsMHg2QSwweDgxLDB4QzMsMHhDQSwweEE2LDB4RUEs
MHg3QSwweEE5LDB4NzIsMHhBMSwweDg1LDB4QUQsMHg1NiwKKyAgICAweEVBLDB4N0EsMHg4OCww
eDZBLDB4N0UsMHg3QSwweDY4LDB4RTAsMHhBOSwweDcyLDB4NDcsMHg2MiwweDAyLDB4RTksMHhC
RiwweEFFLAorICAgIDB4QTgsMHg3MiwweDQ3LDB4NjIsMHg4RSwweDgwLDB4ODAsMHhFOCwweEU5
LDB4N0EsMHg4OCwweDZBLDB4MUQsMHhGRCwweDdELDB4MUIsCisgICAgMHhFOSwweDdBLDB4ODks
MHg2QSwweEZCLDB4N0UsMHhFQSwweEUyLDB4RUEsMHg3QSwweDg4LDB4NkEsMHhBQiwweDhCLDB4
RUYsMHgzNywKKyAgICAweDBBLDB4N0IsMHg4OSwweDZBLDB4N0IsMHg3RSwweEIwLDB4MjIsMHhD
OSwweDcyLDB4NjgsMHg2QSwweDBFLDB4MEEsMHgyQywweDI2LAorICAgIDB4MEEsMHg3QiwweEE5
LDB4NzIsMHg4QiwweEEyLDB4RDUsMHhERCwweDA5LDB4N0IsMHhBOSwweDcyLDB4QUUsMHg4Riww
eEFELDB4QkYsCit9OworCitzdGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVsXzFfd2lkdGggPSAyNTY7
CitzdGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVsXzFfaGVpZ2h0ID0gMjU2Oworc3RhdGljIGNvbnN0
IHNpemVfdCBwaXhlbF8xX3NpemUgPSAzMjc2ODsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy
IHBpeGVsXzFfZGF0YVszMjc2OF0gPQoreworICAgIDB4QTgsMHg2QSwweDg0LDB4NDksMHg1Qiww
eDU1LDB4QUQsMHgwRCwweDQ2LDB4NjIsMHgyMywweDM5LDB4RDYsMHhERiwweEZFLDB4RjgsCisg
ICAgMHgwNiwweDVBLDB4MDIsMHgzOSwweEEyLDB4NTcsMHg3RSwweEFFLDB4NjcsMHg2MiwweEUy
LDB4MzAsMHhERiwweEZGLDB4MEIsMHhGRiwKKyAgICAweEM1LDB4NDksMHhFMiwweDMwLDB4QTIs
MHg1QSwweEU4LDB4QkUsMHg4OCwweDYyLDB4MDIsMHgzMSwweDVGLDB4QUYsMHgyRiwweEQ1LAor
ICAgIDB4QzUsMHg0OSwweDAzLDB4MzksMHg1RiwweDc4LDB4NjgsMHhFRiwweDY3LDB4NUEsMHhF
MiwweDMwLDB4RkYsMHg4QiwweEJELDB4NTcsCisgICAgMHhBNSwweDQ5LDB4RTIsMHgzMCwweERF
LDB4NzAsMHhCQSwweDBBLDB4NDcsMHg2MiwweDIzLDB4MzksMHhFRiwweDBGLDB4NTUsMHg1NywK
KyAgICAweEU1LDB4NTEsMHhDMiwweDMwLDB4REUsMHg3QSwweEZGLDB4OEEsMHgyNiwweDVBLDB4
MDMsMHgzOSwweDhCLDB4QUQsMHg1NSwweDVGLAorICAgIDB4MDYsMHg1QSwweDIzLDB4MzksMHg5
NywweEZGLDB4RjUsMHg4RiwweDQ3LDB4NjIsMHg2NCwweDQ5LDB4ODIsMHg3QiwweDU1LDB4REYs
CisgICAgMHg0NywweDYyLDB4NDMsMHg0MSwweDVFLDB4NUYsMHhFQiwweDhGLDB4MjcsMHg1QSww
eDAzLDB4MzksMHg4MiwweDU1LDB4RDcsMHg3RSwKKyAgICAweDA3LDB4NUEsMHgyMywweDQxLDB4
REYsMHg3RCwweENBLDB4RUYsMHhDNSwweDUxLDB4MDMsMHgzOSwweEEyLDB4RjUsMHg5RSwweDVG
LAorICAgIDB4ODksMHg2QSwweDQ0LDB4NDEsMHg1NSwweDVELDB4RTMsMHg1RCwweEM1LDB4NTEs
MHgwMiwweDMxLDB4RUYsMHhCNSwweDFDLDB4N0IsCisgICAgMHgyNywweDVBLDB4MDMsMHgzOSww
eDVGLDB4RkEsMHhFMiwweDU3LDB4QzUsMHg1MSwweDI0LDB4MzksMHhGNSwweDI1LDB4OTcsMHhG
RCwKKyAgICAweEU1LDB4NTEsMHgwMywweDM5LDB4N0UsMHhBOCwweEVBLDB4REYsMHgyNiwweDVB
LDB4MjMsMHgzOSwweEFELDB4MEQsMHhENywweDhBLAorICAgIDB4RTUsMHg1MSwweDAzLDB4Mzks
MHg3RSwweEU4LDB4RkUsMHhERiwweDY3LDB4NjIsMHg0NCwweDQxLDB4MkQsMHhBRCwweEQ1LDB4
MDMsCisgICAgMHgyNywweDYyLDB4NjQsMHg0OSwweEYwLDB4RjAsMHg1NSwweEU4LDB4RTYsMHg1
OSwweDY0LDB4NDEsMHhBQiwweDdGLDB4OTUsMHgwMiwKKyAgICAweDQ2LDB4NUEsMHg4NCwweDQ5
LDB4RjcsMHgwNSwweDJELDB4RkYsMHg2OCwweDZBLDB4RTUsMHg1MSwweEI1LDB4QUUsMHhBOCww
eDJCLAorICAgIDB4ODcsMHg2QSwweDA2LDB4NUEsMHhBNywweDJCLDB4Q0IsMHg4QSwweDg3LDB4
NkEsMHgyMywweDQxLDB4MjAsMHhBMiwweEJGLDB4RjcsCisgICAgMHg0NywweDYyLDB4QTUsMHg1
MSwweDAwLDB4MDIsMHg4QywweEQ3LDB4ODcsMHg2QSwweDI2LDB4NUEsMHg2RSwweDJFLDB4ODgs
MHhGRiwKKyAgICAweEE3LDB4NkEsMHg0MywweDQxLDB4NTUsMHg1RSwweDdBLDB4NkEsMHgyNyww
eDVBLDB4MDMsMHgzOSwweEZGLDB4ODMsMHg4QiwweEY1LAorICAgIDB4QTUsMHg0OSwweDIzLDB4
MzksMHhCRCwweEI0LDB4NUUsMHhGMCwweDQ3LDB4NUEsMHgwMiwweDMxLDB4N0UsMHhFMCwweEZC
LDB4RkYsCisgICAgMHgyNiwweDUyLDB4MDMsMHgzOSwweDJELDB4MkQsMHhENywweDdGLDB4MjYs
MHg1MiwweDIzLDB4MzksMHhERSwweDc4LDB4NzcsMHhCRCwKKyAgICAweDI2LDB4NUEsMHgyMyww
eDM5LDB4MDIsMHhBQiwweEY1LDB4RDcsMHg1NCwweEU2LDB4QTUsMHg1MSwweDBELDB4QjUsMHg1
NSwweDU1LAorICAgIDB4OTYsMHhFRSwweDI2LDB4NUEsMHgwMCwweDAwLDB4MDMsMHgyRCwweEI2
LDB4RjYsMHg5NiwweEVFLDB4QkYsMHhBRiwweDhCLDB4QUQsCisgICAgMHhENiwweEY2LDB4OTYs
MHhFRSwweERGLDB4RkQsMHhCRCwweDJGLDB4RDcsMHhGNiwweDk2LDB4RUUsMHgwQiwweDgyLDB4
NzAsMHg1RSwKKyAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4MkUsMHhBRSwweDNELDB4QjcsMHhE
NywweEY2LDB4NzUsMHhFNiwweDc4LDB4QkMsMHhBQSwweEZBLAorICAgIDB4RjcsMHhGNiwweEI2
LDB4RUUsMHhENSwweEVELDB4OEEsMHhFNSwweEY4LDB4RkUsMHhCNiwweEVFLDB4RjYsMHhCRiww
eDAyLDB4REYsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDI5LDB4MDIsMHgwMiwweDA5LDB4
MTgsMHhGRiwweEY3LDB4RjYsMHhCQSwweDNFLDB4RjcsMHg1NSwKKyAgICAweDE4LDB4RkYsMHhG
OCwweEY2LDB4RUEsMHhBMCwweEFCLDB4NTUsMHgxOCwweEZGLDB4RjgsMHhGNiwweDU1LDB4RDcs
MHhGRSwweEI5LAorICAgIDB4MTgsMHhGNywweEQ3LDB4RjYsMHhBQSwweEZBLDB4REEsMHhBMCww
eDE4LDB4RjcsMHhENywweEY2LDB4NUYsMHg3RiwweEZGLDB4NkEsCisgICAgMHhENywweEY2LDB4
OTcsMHhFRSwweDIwLDB4MEUsMHhGOCwweEMwLDB4RjcsMHhGNiwweDk2LDB4RUUsMHgyMiwweEFC
LDB4RkEsMHhBRCwKKyAgICAweEY3LDB4RjYsMHg5NiwweEVFLDB4NUUsMHg3MiwweEVCLDB4QkYs
MHg5NiwweEVFLDB4NTEsMHhDNSwweDcwLDB4NjgsMHhFMCwweEU4LAorICAgIDB4MzQsMHhFNiww
eDEwLDB4QzUsMHg4MCwweDAzLDB4ODksMHgwRCwweDE0LDB4REUsMHhGMywweERELDB4NzYsMHg3
QywweDVGLDB4NzYsCisgICAgMHgxNCwweERFLDB4RjMsMHhERCwweDdFLDB4QkYsMHg4RCwweDhC
LDB4MTQsMHhERSwweEQzLDB4REQsMHhBOSwweEFGLDB4RUIsMHhGRSwKKyAgICAweDQ3LDB4NUEs
MHgyMywweDQxLDB4RjUsMHgzRCwweEE3LDB4REUsMHg4OCwweDZBLDB4NDMsMHg0MSwweDVELDB4
ODAsMHhBMiwweDVELAorICAgIDB4ODYsMHg2MiwweDIyLDB4MzksMHhGRCwweEY4LDB4RkUsMHhE
NywweEM1LDB4NDksMHhDMiwweDMwLDB4NUUsMHhGQSwweEFBLDB4MkUsCisgICAgMHgyNywweDVB
LDB4MDIsMHgzMSwweEFGLDB4MEIsMHhGRCwweEZFLDB4QTUsMHg0OSwweEUyLDB4MzAsMHhGOCww
eEUwLDB4QkQsMHhBRCwKKyAgICAweDY3LDB4NjIsMHgyMywweDM5LDB4MkYsMHhCNSwweDU1LDB4
RjIsMHhBNSwweDQ5LDB4MDIsMHgzMSwweDY4LDB4N0UsMHhCNSwweDM3LAorICAgIDB4NjgsMHg2
MiwweEUyLDB4MzAsMHgwQiwweEY1LDB4RkYsMHhBMCwweEM1LDB4NDksMHhFMiwweDMwLDB4NzAs
MHg3RSwweEI1LDB4QkUsCisgICAgMHgwNiwweDUyLDB4QzIsMHgzMCwweDBCLDB4RkQsMHhCMCww
eEEyLDB4ODUsMHg0OSwweEUyLDB4MzAsMHhFMCwweEFELDB4MkUsMHg5OCwKKyAgICAweDA3LDB4
NjIsMHgwMywweDQxLDB4QUQsMHhGRCwweEUwLDB4RUIsMHhDNSwweDYxLDB4NjQsMHg0OSwweDY3
LDB4QUQsMHhBQiwweDBGLAorICAgIDB4RTYsMHg2MSwweDQ0LDB4NDEsMHhERiwweEY4LDB4RjAs
MHg2QSwweEE1LDB4NDksMHhFMiwweDMwLDB4RkQsMHgyNywweDM2LDB4RkEsCisgICAgMHg0OCww
eDYyLDB4MjQsMHgzOSwweDc1LDB4RjAsMHhGQSwweEZGLDB4MjcsMHg1QSwweEUyLDB4MzAsMHhC
RCwweDI3LDB4RkYsMHhGRSwKKyAgICAweEM4LDB4NkEsMHgwMywweDM5LDB4NUYsMHhGMCwweDdG
LDB4RkYsMHgyNywweDUyLDB4RTIsMHgzMCwweDJELDB4QUYsMHhGRiwweEFBLAorICAgIDB4MDYs
MHg1MiwweDI0LDB4NDEsMHg3QywweEY4LDB4RkYsMHhBQSwweDY4LDB4NjIsMHgyMywweDM5LDB4
MkQsMHhGNSwweDU3LDB4NUYsCisgICAgMHgwNiwweDUyLDB4MjMsMHgzOSwweDdBLDB4RkIsMHgw
QSwweDBCLDB4MjcsMHg1QSwweDAyLDB4MzEsMHgwQiwweEZELDB4REUsMHhGRSwKKyAgICAweDA2
LDB4NTIsMHg0MiwweDM5LDB4N0UsMHhGRiwweDAyLDB4QkYsMHg2NywweDYyLDB4ODQsMHg0MSww
eEFELDB4NTUsMHhFMCwweDU1LAorICAgIDB4RTYsMHg1MSwweDAzLDB4MzEsMHg4MCwweDVFLDB4
NjgsMHhGRSwweDQ2LDB4NjIsMHg0MywweDM5LDB4RkYsMHgwRiwweEFELDB4NTUsCisgICAgMHgw
NSwweDUyLDB4NDMsMHgzOSwweEZFLDB4QTgsMHhGQywweDU1LDB4MjcsMHg2MiwweDIzLDB4MzEs
MHgwMywweDBBLDB4QkYsMHhENSwKKyAgICAweDI3LDB4NjIsMHhFMiwweDM4LDB4MDAsMHgyQiww
eEJGLDB4NUUsMHgyNiwweDVBLDB4MDIsMHgzOSwweERDLDB4NjgsMHhGQSwweEQ1LAorICAgIDB4
MjYsMHg1QSwweDIzLDB4NDEsMHhGRiwweDBCLDB4RjUsMHg1NiwweDA2LDB4NUEsMHg0NCwweDQx
LDB4QjAsMHg1OCwweEQ1LDB4MjUsCisgICAgMHhDNSwweDUxLDB4MDIsMHgzOSwweDAyLDB4MDIs
MHhFRCwweEYwLDB4QzUsMHg1MSwweDIzLDB4MzksMHhERSwweDVDLDB4NTUsMHhFQiwKKyAgICAw
eDY4LDB4NjIsMHgwMiwweDM5LDB4QTIsMHhGRiwweDU1LDB4QUYsMHhDNiwweDUxLDB4MjMsMHgz
OSwweEEyLDB4NTcsMHg1NSwweDAwLAorICAgIDB4MjYsMHg1QSwweDAzLDB4MzksMHhGRiwweDU1
LDB4RjcsMHg4MiwweDI2LDB4NUEsMHgwMywweDM5LDB4QkQsMHg1NSwweEZGLDB4MDIsCisgICAg
MHgyNiwweDYyLDB4MDIsMHgzOSwweDdFLDB4NTUsMHhBRiwweDAwLDB4MjcsMHg2MiwweDAyLDB4
MzksMHhERCwweERELDB4QUUsMHgwMCwKKyAgICAweEYwLDB4QkMsMHg0NCwweDQ5LDB4MzUsMHhG
NSwweEJGLDB4MkYsMHhENywweEY2LDB4RDIsMHhENSwweDIyLDB4ODksMHgyOSwweDBCLAorICAg
IDB4RDcsMHhGNiwweDk2LDB4RUUsMHg4QiwweDQzLDB4NjgsMHg3OCwweEI2LDB4RUUsMHg3Niww
eEVFLDB4QjYsMHg5RiwweDk1LDB4NTYsCisgICAgMHhCNiwweEY2LDB4MzQsMHhFNiwweDAyLDB4
MjIsMHhBQSwweEY1LDB4OTYsMHhFRSwweEYzLDB4REQsMHhGMCwweDlDLDB4RDYsMHg5NywKKyAg
ICAweEY3LDB4RjYsMHhEMywweEQ1LDB4MkEsMHhBQSwweEJGLDB4NUYsMHhGNywweEY2LDB4RDMs
MHhENSwweDg4LDB4MEEsMHgyQSwweEI1LAorICAgIDB4MTgsMHhGRiwweDc1LDB4RTYsMHhGNyww
eDVFLDB4RTgsMHhCQiwweEY3LDB4RjYsMHg1NSwweEU2LDB4MDIsMHhCNSwweDVGLDB4RkEsCisg
ICAgMHhGNywweEY2LDB4NTUsMHhFNiwweDIwLDB4MDAsMHgyRCwweDk3LDB4MTgsMHhGNywweEQ3
LDB4RjYsMHhGNywweEZGLDB4OEEsMHhFOSwKKyAgICAweDE4LDB4RkYsMHhENywweEVFLDB4QUEs
MHhGRCwweEVBLDB4RUIsMHgxOCwweEY3LDB4RDcsMHhGNiwweEUyLDB4QUEsMHg1NywweDVDLAor
ICAgIDB4RjcsMHhGNiwweEI3LDB4RUUsMHhGOCwweEE4LDB4RkYsMHhGRSwweEQ3LDB4RjYsMHg3
NSwweEVFLDB4MkUsMHhGMCwweDQwLDB4ODIsCisgICAgMHhENywweEY2LDB4NTUsMHhFNiwweEEw
LDB4RTIsMHhFMiwweEMxLDB4OTYsMHhFRSwweEQzLDB4RDUsMHg2MCwweEUwLDB4QzAsMHhDMiwK
KyAgICAweDE0LDB4REUsMHg1MSwweENELDB4MjUsMHgzNSwweEJGLDB4RkYsMHgxNCwweERFLDB4
RjMsMHhERCwweEQ0LDB4QkUsMHhCQywweEJBLAorICAgIDB4MzQsMHhFNiwweEYzLDB4REQsMHhF
QiwweEVBLDB4RTIsMHhGQSwweDE0LDB4REUsMHhGMywweERELDB4QjcsMHhFRCwweERCLDB4RjUs
CisgICAgMHgwNSwweDVBLDB4NDMsMHg0MSwweEQ4LDB4NTAsMHg3MiwweEMwLDB4NDcsMHg2Miww
eDYzLDB4NDEsMHgwMywweEFCLDB4NTUsMHgyNSwKKyAgICAweDY3LDB4NjIsMHg4NCwweDQxLDB4
NTcsMHg3NywweDU1LDB4NzgsMHhBNSwweDQ5LDB4NjMsMHg0MSwweDAwLDB4NkEsMHhFQiwweEZF
LAorICAgIDB4QTUsMHg0OSwweDAyLDB4MzksMHhBMCwweDdCLDB4QTAsMHhBQSwweEE1LDB4NDks
MHgwMiwweDMxLDB4M0UsMHhCMywweDhGLDB4OUEsCisgICAgMHhDQSwweDhCLDB4QTQsMHg0OSww
eDU1LDB4N0QsMHhDOSwweDU1LDB4ODUsMHg0MSwweEUyLDB4MjgsMHg5RSwweEJFLDB4RjgsMHg1
OCwKKyAgICAweDQ3LDB4NUEsMHgwMiwweDMxLDB4RkYsMHgwRiwweEFGLDB4NzUsMHhBNSwweDQ5
LDB4MDIsMHgzMSwweDVFLDB4QzgsMHhDQSwweEZGLAorICAgIDB4ODQsMHg0OSwweEUyLDB4MzAs
MHhBQSwweDAyLDB4QTksMHg3NywweDg0LDB4NDksMHhFMiwweDMwLDB4QUIsMHgyMiwweEE4LDB4
NTUsCisgICAgMHhBNCwweDUxLDB4MDIsMHgzOSwweEFGLDB4QUUsMHhCQSwweDk1LDB4MjYsMHg3
MiwweDg0LDB4NTEsMHhFRCwweEJELDB4QUIsMHg4QiwKKyAgICAweDA2LDB4NkEsMHg4NCwweDUx
LDB4N0UsMHg3QSwweDc4LDB4NDAsMHg4NSwweDUxLDB4RTMsMHgzOCwweDgwLDB4QUEsMHg3RSww
eDVDLAorICAgIDB4ODUsMHg0OSwweEMyLDB4MzAsMHgwMCwweDJBLDB4NUQsMHhGRCwweDg1LDB4
NDksMHhDMywweDMwLDB4MDAsMHhBQSwweDU3LDB4QUYsCisgICAgMHg4NSwweDQ5LDB4RTIsMHgz
MCwweDg4LDB4RUUsMHg1NSwweEFBLDB4QzUsMHg1MSwweEUzLDB4MzAsMHhBQSwweDdGLDB4NTUs
MHgyQSwKKyAgICAweEM1LDB4NDksMHgwMywweDM5LDB4QUEsMHg1NSwweDU1LDB4MjgsMHgwNiww
eDUyLDB4MDMsMHgzOSwweDVCLDB4RDUsMHhCNSwweDAwLAorICAgIDB4MDYsMHg1QSwweEUyLDB4
MzAsMHhGRiwweDU1LDB4QUUsMHgwMCwweDA2LDB4NUEsMHhFMiwweDMwLDB4RkYsMHhCNSwweDJC
LDB4MDAsCisgICAgMHgyNywweDVBLDB4MDIsMHgzOSwweDc1LDB4NTcsMHhBQSwweDAwLDB4MDYs
MHg1QSwweDIzLDB4MzksMHg1NSwweDU1LDB4MkEsMHgwMCwKKyAgICAweDA1LDB4NUEsMHhFMiww
eDMwLDB4RDcsMHhCRiwweDAwLDB4MjAsMHgwNywweDVBLDB4QzIsMHgzMCwweEQ2LDB4QTgsMHg4
MCwweDIyLAorICAgIDB4MDcsMHg2MiwweEUyLDB4MzAsMHg1NSwweEFBLDB4MDAsMHhBQSwweDA2
LDB4NUEsMHgwMywweDMxLDB4RDUsMHgwQSwweDIwLDB4MDAsCisgICAgMHhDOCwweDcyLDB4NjQs
MHg0OSwweDVCLDB4RkYsMHhGQSwweDBBLDB4QUMsMHg5MywweDg0LDB4NDksMHg1NSwweEZELDB4
NTUsMHgwMiwKKyAgICAweEQwLDB4QjQsMHhFNiwweDU5LDB4NTUsMHg1NSwweDU1LDB4MEEsMHgz
MiwweEM1LDB4MDYsMHg1QSwweDU1LDB4NTUsMHg1NSwweDAwLAorICAgIDB4QjQsMHhENSwweDA2
LDB4NUEsMHg1NSwweDU1LDB4RjUsMHgwMCwweDM2LDB4RTYsMHgwNiwweDVBLDB4NTUsMHg1NSww
eEZGLDB4MDAsCisgICAgMHg1NSwweEU2LDB4MDYsMHg1QSwweDU1LDB4NTUsMHhBQiwweDAwLDB4
OTcsMHhFRSwweDI3LDB4NjIsMHg1NSwweDU1LDB4QUEsMHgwMCwKKyAgICAweDM1LDB4REUsMHgy
NiwweDYyLDB4NTUsMHhENSwweDAwLDB4MDAsMHg3NSwweEU2LDB4RTUsMHg1OSwweDU1LDB4RkYs
MHgwMCwweDAwLAorICAgIDB4NzUsMHhFNiwweDA2LDB4NUEsMHg1NSwweEFGLDB4MDAsMHgwMCww
eDk2LDB4RUUsMHgyNywweDYyLDB4NTUsMHhBQSwweDAwLDB4MDAsCisgICAgMHhCNiwweEVFLDB4
RTgsMHg3QSwweEJELDB4MEEsMHgwMCwweDAwLDB4RDcsMHhGNiwweDc1LDB4RUUsMHgwRCwweDg5
LDB4QTIsMHhBMCwKKyAgICAweEI2LDB4RjYsMHg3NiwweEVFLDB4RTAsMHg2OCwweDc4LDB4RUEs
MHg5NiwweEVFLDB4RjQsMHhERCwweEU4LDB4RTAsMHg3QSwweDdBLAorICAgIDB4QjYsMHhGNiww
eEQzLDB4RDUsMHhCRiwweEJELDB4QjUsMHgyRiwweEQ3LDB4RjYsMHgxNCwweERFLDB4RjUsMHhB
QiwweDgyLDB4MDAsCisgICAgMHhCNywweEY2LDB4NTUsMHhFNiwweDVELDB4QkYsMHhGRSwweEUw
LDB4QjYsMHhFRSwweDUxLDB4Q0QsMHg1RiwweDgwLDB4MDgsMHgyMiwKKyAgICAweDk2LDB4RUUs
MHg5MiwweENELDB4MEIsMHhCNSwweEY4LDB4ODAsMHhGNywweEY2LDB4MzQsMHhERSwweEFBLDB4
QUIsMHhCNSwweEY1LAorICAgIDB4RDcsMHhGNiwweDE0LDB4REUsMHg2QSwweEMwLDB4MDIsMHgw
QSwweEQ3LDB4RjYsMHg5MiwweENELDB4MDIsMHgyRCwweEJFLDB4ODAsCisgICAgMHgxOCwweEZG
LDB4OTYsMHhFNiwweEFBLDB4MjAsMHgyOSwweDk1LDB4MTgsMHhGNywweEQ3LDB4RjYsMHhFQSww
eEJBLDB4QUEsMHhFQSwKKyAgICAweEY3LDB4RjYsMHhCNywweEVFLDB4RUUsMHhFQywweEYwLDB4
QzAsMHhENywweEY2LDB4OTYsMHhFRSwweEFBLDB4QkMsMHhGQSwweDZBLAorICAgIDB4QjYsMHhF
RSwweDM0LDB4REUsMHg4QiwweDI3LDB4QjQsMHhCRSwweDk2LDB4RUUsMHgzNCwweEU2LDB4Q0Is
MHhFQiwweEZELDB4QjcsCisgICAgMHhGMywweERELDB4NzEsMHhDRCwweERGLDB4RDYsMHg1Qyww
eDVDLDB4MzQsMHhFNiwweEQzLDB4REQsMHhBRiwweEE5LDB4MzksMHhBOSwKKyAgICAweDM0LDB4
RTYsMHgxNCwweERFLDB4NzgsMHg1MywweDVGLDB4NUUsMHgzNCwweEU2LDB4RjMsMHhERCwweEQ1
LDB4QjUsMHhERiwweEZGLAorICAgIDB4MkEsMHg4MywweEM1LDB4NTEsMHg1NywweDVFLDB4NUUs
MHg3QywweDg0LDB4NDksMHhFMSwweDMwLDB4MkIsMHhENiwweDVDLDB4MDAsCisgICAgMHg2Nyww
eDYyLDB4MjIsMHgzOSwweEZGLDB4NzcsMHg1NSwweDJCLDB4QTgsMHg2QSwweDIzLDB4MzksMHhG
RiwweDU1LDB4RkYsMHgwMCwKKyAgICAweDI3LDB4NjIsMHgwMiwweDMxLDB4RkYsMHg1NSwweEFB
LDB4MDAsMHgyNywweDVBLDB4MDIsMHgzMSwweDVGLDB4N0QsMHg4QSwweDgwLAorICAgIDB4MDYs
MHg1QSwweDAyLDB4MzEsMHg1NSwweDU1LDB4QUEsMHgwMCwweEU2LDB4NTEsMHhDMiwweDI4LDB4
NUQsMHhGRiwweDAwLDB4MjAsCisgICAgMHgwNywweDVBLDB4QzEsMHgzMCwweDU1LDB4RkYsMHgw
MCwweEEyLDB4MDYsMHg1QSwweEUyLDB4MzAsMHhENSwweEZGLDB4MDAsMHhBQSwKKyAgICAweDA3
LDB4NUEsMHhDMSwweDMwLDB4NTYsMHhBMiwweDAwLDB4QUEsMHgwNiwweDVBLDB4RTIsMHgzMCww
eDU1LDB4MjIsMHg4MCwweEFFLAorICAgIDB4QzUsMHg1OSwweDAyLDB4MzksMHhCNSwweDAwLDB4
MDAsMHgwMCwweDI2LDB4NzIsMHhDNSwweDYxLDB4MDksMHhBOSwweEVGLDB4RUQsCisgICAgMHgy
NiwweDcyLDB4RTUsMHg2OSwweDRBLDB4QkYsMHhGQiwweDhCLDB4QUIsMHhBMywweEM1LDB4NTks
MHg1NSwweDU3LDB4NUQsMHgyRiwKKyAgICAweDExLDB4QzUsMHhDNiwweDU5LDB4NTUsMHg1NSww
eDU1LDB4MDIsMHg3MiwweENELDB4RTUsMHg1MSwweDU1LDB4NTUsMHg3NSwweDAwLAorICAgIDB4
RjMsMHhENSwweEM1LDB4NTEsMHg1NSwweDU1LDB4RkYsMHgwMCwweDM1LDB4RTYsMHhFNiwweDU5
LDB4NTUsMHg1NSwweEJGLDB4MDAsCisgICAgMHg1NSwweEU2LDB4RTYsMHg1OSwweDU1LDB4NTUs
MHhBQSwweDAwLDB4QjYsMHhFRSwweDI2LDB4NjIsMHg1NSwweDU1LDB4QUEsMHgwMCwKKyAgICAw
eDM0LDB4REUsMHhDNiwweDUxLDB4NTUsMHhGRCwweDAwLDB4MDAsMHg3NiwweEVFLDB4RTYsMHg1
OSwweDU1LDB4RkYsMHgwMCwweDAwLAorICAgIDB4NzYsMHhFNiwweEM1LDB4NTksMHg1NSwweEFB
LDB4MDAsMHgwMCwweDk2LDB4RUUsMHgyNiwweDYyLDB4NTUsMHhBQSwweDAwLDB4MDAsCisgICAg
MHhCNywweEY2LDB4QTgsMHg3QSwweDU1LDB4MkEsMHgwMCwweDAwLDB4NzYsMHhFRSwweEU5LDB4
N0EsMHhGNSwweDIwLDB4MDAsMHgwMCwKKyAgICAweDc2LDB4RUUsMHgyRSwweEE0LDB4RDUsMHgw
MCwweDAwLDB4MDAsMHhEMywweERELDB4MjYsMHg2QSwweEFBLDB4QzAsMHhFMCwweDc4LAorICAg
IDB4NEUsMHhBQywweDA2LDB4NjIsMHgzRSwweEI3LDB4NTUsMHg1NSwweEI3LDB4RjYsMHg4Riww
eEI0LDB4QUEsMHgwMywweDA5LDB4MDksCisgICAgMHhGOCwweEZFLDB4NTUsMHhFNiwweEQ1LDB4
QUUsMHhBQSwweDAwLDB4MTgsMHhGRiwweDc2LDB4RUUsMHg3NSwweEJGLDB4QTIsMHgwOCwKKyAg
ICAweEY3LDB4RjYsMHg5NiwweEVFLDB4NUQsMHhBRSwweEE4LDB4QUMsMHhENywweEY2LDB4OTYs
MHhFRSwweEJELDB4QUEsMHgwOCwweDAwLAorICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHg1RCww
eEVGLDB4RUMsMHg4QSwweEQ3LDB4RjYsMHg5NiwweEVFLDB4RUYsMHhBQSwweDgyLDB4ODIsCisg
ICAgMHhENywweEY2LDB4QjcsMHhFRSwweEY3LDB4RTcsMHhFQSwweEE4LDB4RDcsMHhGNiwweEI2
LDB4RUUsMHhFQiwweEVCLDB4RkYsMHhBQSwKKyAgICAweEI2LDB4RjYsMHhENywweEVFLDB4OEEs
MHgyMiwweEZBLDB4RUIsMHhGNywweEY2LDB4QjYsMHhFRSwweDc3LDB4NUYsMHhGRCwweEJCLAor
ICAgIDB4RjcsMHhGNiwweDk2LDB4RUUsMHgyQSwweDhCLDB4NjIsMHg1OCwweEQ3LDB4RjYsMHg3
NiwweEVFLDB4RTgsMHhCQiwweEZELDB4NUQsCisgICAgMHg5NiwweEVFLDB4MTQsMHhFNiwweDAw
LDB4RTgsMHhGOCwweDdFLDB4QjYsMHhGNiwweDE0LDB4REUsMHg1RiwweEZELDB4MkYsMHgyRCwK
KyAgICAweEY3LDB4RjYsMHg1NSwweEU2LDB4QUQsMHgwQSwweEFBLDB4QUEsMHhGNywweEY2LDB4
QjcsMHhGNiwweDhBLDB4QTIsMHhBQSwweEFELAorICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHg1
RSwweEZBLDB4QTgsMHhBQiwweEQ3LDB4RjYsMHg3NSwweEU2LDB4REYsMHhGQSwweEFBLDB4ODAs
CisgICAgMHhCNiwweEVFLDB4NzYsMHhFRSwweDM3LDB4QkYsMHhBQSwweDAwLDB4RDcsMHhGNiww
eDU1LDB4RTYsMHhENiwweEE4LDB4MEEsMHgyQSwKKyAgICAweEY3LDB4RjYsMHg3NiwweEVFLDB4
QkQsMHhCRiwweEFFLDB4QTgsMHgzOCwweEZGLDB4RDcsMHhGNiwweEZGLDB4RUQsMHhCRCwweDJG
LAorICAgIDB4MTgsMHhGRiwweEI3LDB4RUUsMHg3RSwweEFFLDB4RUEsMHhBMCwweDE4LDB4Rjcs
MHhCNywweEVFLDB4QTMsMHhBRCwweERFLDB4RkEsCisgICAgMHgxOCwweEY3LDB4RDcsMHhGNiww
eDZBLDB4RUEsMHhFQiwweEZGLDB4QjcsMHhFRSwweDc1LDB4RTYsMHhBMCwweDYwLDB4NjAsMHg2
MCwKKyAgICAweDk2LDB4RUUsMHg5MiwweEQ1LDB4QTgsMHhCOCwweEZBLDB4NUEsMHg3NSwweEVF
LDB4MTQsMHhERSwweEI2LDB4RjQsMHhERSwweDU2LAorICAgIDB4NTUsMHhFNiwweDcxLDB4Q0Qs
MHg1RSwweDVDLDB4NUMsMHg1OCwweDM0LDB4RTYsMHhCMywweEQ1LDB4OEIsMHg4OSwweDBCLDB4
MDEsCisgICAgMHgzNCwweEU2LDB4RjMsMHhERCwweERBLDB4NUEsMHg1RSwweDVGLDB4MTQsMHhE
RSwweEQzLDB4REQsMHgwQiwweEEyLDB4RUEsMHg2RiwKKyAgICAweDM1LDB4RTYsMHhFNSwweDU5
LDB4NTYsMHg3QSwweEEwLDB4MDAsMHhGNCwweEQ1LDB4QTQsMHg1MSwweDU1LDB4NTUsMHhCQSww
eDAwLAorICAgIDB4RjQsMHhENSwweEM1LDB4NTEsMHg1NSwweDU1LDB4QUEsMHgwMCwweDM1LDB4
RTYsMHgwNiwweDVBLDB4NTUsMHg1NSwweEFBLDB4MDAsCisgICAgMHgzNSwweEU2LDB4MjYsMHg2
MiwweDU1LDB4NTUsMHg4QSwweDAwLDB4MzUsMHhFNiwweEE1LDB4NTEsMHg1NSwweEZGLDB4MDAs
MHgwMCwKKyAgICAweDM1LDB4RTYsMHhDNSwweDUxLDB4NTUsMHhCQiwweDAwLDB4MDAsMHg1NSww
eEU2LDB4QzUsMHg1MSwweDU1LDB4QUEsMHgwMCwweDAwLAorICAgIDB4NzUsMHhFRSwweDY3LDB4
NkEsMHg1NSwweEFBLDB4MDAsMHgwMCwweDU1LDB4RTYsMHhFOSwweDdBLDB4NTUsMHgyMiwweDAw
LDB4MDAsCisgICAgMHg1NSwweEU2LDB4Q0MsMHg5MywweDU1LDB4MDIsMHgwMCwweDAwLDB4NzYs
MHhFRSwweDJFLDB4QTQsMHhGNSwweDIwLDB4MDAsMHgwMCwKKyAgICAweDU1LDB4RUUsMHhBQyww
eDlCLDB4N0IsMHhDMCwweEMwLDB4QzAsMHg2NywweDcyLDB4QTQsMHg2MSwweEY3LDB4RDYsMHg1
NCwweDVDLAorICAgIDB4MjYsMHg3MiwweEE0LDB4NjEsMHhBQiwweDhCLDB4QTksMHgwRiwweDJE
LDB4QUMsMHgyNiwweDcyLDB4MzUsMHhCNSwweDU1LDB4NTUsCisgICAgMHg1NSwweEVFLDB4RTks
MHg4QSwweDAyLDB4MDMsMHgwQiwweDJELDB4QjYsMHhGNiwweDc1LDB4RUUsMHhENSwweEFCLDB4
QUEsMHg4QiwKKyAgICAweEI2LDB4RjYsMHg3NSwweEVFLDB4RkQsMHhBQiwweEEyLDB4ODIsMHhC
NiwweEY2LDB4OTYsMHhFRSwweDU1LDB4RUEsMHhFQSwweEVBLAorICAgIDB4QjYsMHhGNiwweDk2
LDB4RUUsMHhBNSwweDJCLDB4QkUsMHg4RiwweEI2LDB4RjYsMHg5NiwweEVFLDB4RjMsMHg4OCww
eDMyLDB4MEYsCisgICAgMHhCNiwweEY2LDB4OTYsMHhFRSwweDJFLDB4ODIsMHgyQSwweDA4LDB4
QjYsMHhGNiwweEQ3LDB4RUUsMHgyMiwweEM4LDB4ODgsMHhGQywKKyAgICAweEY3LDB4RjYsMHhC
NiwweEY2LDB4RTcsMHhBQSwweDBBLDB4MDIsMHhGOCwweEZFLDB4RDcsMHhFRSwweEY1LDB4RUEs
MHg4QSwweEFBLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhENSwweDBBLDB4MDIsMHgwMCww
eEY3LDB4RkUsMHhENywweEY2LDB4RDcsMHhGQywweEVBLDB4N0UsCisgICAgMHhCNiwweEY2LDB4
Q0IsMHhBMywweDgwLDB4QTAsMHhFMCwweDc4LDB4Q0YsMHhCQywweDY3LDB4NzIsMHg1OCwweDU2
LDB4NTcsMHg1NSwKKyAgICAweDY3LDB4N0EsMHhDNSwweDYxLDB4REUsMHhGQSwweEI4LDB4MzAs
MHhENywweEY2LDB4MkQsMHhBQywweDA5LDB4MDksMHgwOSwweDA5LAorICAgIDB4MTgsMHhGRiww
eEY3LDB4RjYsMHhERiwweEJGLDB4QkQsMHhGRiwweDE3LDB4RkYsMHhGNywweEY2LDB4RUIsMHhC
QiwweDgyLDB4QUIsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDZDLDB4NUEsMHhEMCwweDMw
LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg1NSwweEZFLDB4RkYsMHhFRiwKKyAgICAweEQ3LDB4RjYs
MHhCNiwweEVFLDB4MEIsMHgyQiwweDAwLDB4MDAsMHhCNywweEY2LDB4RjcsMHhFRSwweEFBLDB4
RUEsMHhBRSwweEVGLAorICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHg4OCwweDBBLDB4MDIsMHg4
MCwweEY3LDB4RjYsMHhCNiwweEVFLDB4RkYsMHhCRSwweEFFLDB4QUUsCisgICAgMHhCNiwweEY2
LDB4RjcsMHhFRSwweEFBLDB4QkEsMHhCQiwweEVFLDB4RjcsMHhGNiwweEI2LDB4RUUsMHgwRSww
eDgyLDB4QzIsMHg3OCwKKyAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4NzgsMHg1NCwweDc2LDB4
NTcsMHg5NiwweEVFLDB4RjQsMHhERCwweEEwLDB4RTgsMHg2QSwweDc4LAorICAgIDB4MzUsMHhF
NiwweDkxLDB4Q0QsMHhFMCwweDcwLDB4NUYsMHgxNiwweDk2LDB4RjYsMHhGMywweERELDB4QUQs
MHhGRCwweDAzLDB4MDAsCisgICAgMHhCNiwweEY2LDB4QjMsMHhENSwweDBBLDB4RjcsMHhGRSww
eEE4LDB4RDcsMHhGNiwweEY0LDB4REQsMHgwMiwweEFGLDB4RkQsMHhGRiwKKyAgICAweEQ3LDB4
RjYsMHg1NSwweEU2LDB4MDAsMHgwQSwweDNELDB4RDUsMHhGNywweEY2LDB4QjYsMHhFRSwweEFB
LDB4QUEsMHg4MywweEI1LAorICAgIDB4RDcsMHhGNiwweDk2LDB4RUUsMHhGRSwweEY4LDB4Mjgs
MHgwMCwweEQ3LDB4RjYsMHg5NiwweEVFLDB4MEEsMHhBRSwweDlFLDB4RjgsCisgICAgMHgxOCww
eEY3LDB4RDcsMHhGNiwweEZGLDB4RkQsMHhCNSwweEE1LDB4MzgsMHhGRiwweEY4LDB4RjYsMHhB
NSwweEI1LDB4REQsMHhENywKKyAgICAweDM4LDB4RkYsMHhGOCwweEY2LDB4RkEsMHhFOCwweDgy
LDB4MEIsMHgxOCwweEZGLDB4QjcsMHhGNiwweEVBLDB4RkEsMHhGQSwweERDLAorICAgIDB4Rjcs
MHhGNiwweDc2LDB4RUUsMHg4MiwweEFCLDB4QUYsMHhCNywweEQ3LDB4RjYsMHg3NSwweEU2LDB4
N0EsMHg3OCwweDc4LDB4REEsCisgICAgMHg1NSwweEU2LDB4MTAsMHhDNSwweEY4LDB4RjgsMHg1
OCwweDU4LDB4NTUsMHhFRSwweEQzLDB4REQsMHhGQSwweEYzLDB4RjIsMHhFMSwKKyAgICAweDE0
LDB4RTYsMHgxMCwweEM1LDB4RjAsMHg2MCwweDYwLDB4NDAsMHhENywweEY2LDB4OTIsMHhENSww
eEZELDB4QkQsMHhBOSwweDJELAorICAgIDB4NzUsMHhFRSwweEYzLDB4REQsMHg3RiwweDc3LDB4
N0UsMHg4MCwweDM0LDB4RTYsMHg5MiwweENELDB4NkEsMHg3QSwweDZBLDB4ODgsCisgICAgMHhE
NiwweEY2LDB4OTYsMHhFRSwweDVGLDB4NUUsMHhFQSwweEFFLDB4QjYsMHhFRSwweDc1LDB4RTYs
MHg1NSwweEJCLDB4MDIsMHgwMCwKKyAgICAweEI2LDB4RUUsMHg3NSwweEU2LDB4RDUsMHhBQSww
eDAyLDB4MDAsMHhENywweEY2LDB4NzUsMHhFNiwweDU1LDB4RUYsMHhBQSwweEEyLAorICAgIDB4
QjYsMHhFRSwweDc1LDB4RTYsMHhGRCwweEFBLDB4MjAsMHgwMCwweEI2LDB4RUUsMHg3NSwweEVF
LDB4RkYsMHgyMiwweDAwLDB4MDAsCisgICAgMHhENSwweEVFLDB4NzYsMHhFRSwweEY3LDB4RkYs
MHhGRiwweEZFLDB4OTYsMHhFRSwweDc1LDB4RUUsMHg4QiwweEM4LDB4MEEsMHgwOCwKKyAgICAw
eEI3LDB4RjYsMHg3NSwweEVFLDB4RkYsMHhGRiwweEJFLDB4QUEsMHhENiwweEY2LDB4OTYsMHhF
RSwweEY3LDB4QkYsMHhBQiwweEFBLAorICAgIDB4RDcsMHhGNiwweDk2LDB4RUUsMHhGRiwweDJG
LDB4OEEsMHhBMiwweEQ3LDB4RjYsMHg5NiwweEY2LDB4REIsMHhBQSwweEFBLDB4QTgsCisgICAg
MHhCNiwweEY2LDB4NkQsMHhCNCwweDYwLDB4NDAsMHg2MCwweEMwLDB4NjYsMHg3QSwweDg0LDB4
NjEsMHg3RSwweEZFLDB4RkEsMHhFQywKKyAgICAweDI3LDB4N0EsMHg4NCwweDYxLDB4MkQsMHhC
RiwweEZGLDB4REUsMHgyNiwweDcyLDB4RTYsMHg3MSwweDI1LDB4MkUsMHhCRiwweDZELAorICAg
IDB4RDMsMHhERCwweDY3LDB4N0EsMHgyNSwweEI1LDB4RDUsMHhENSwweDk2LDB4RjYsMHg4Riww
eEJDLDB4MDAsMHgwMiwweDAyLDB4MDksCisgICAgMHhCNiwweEY2LDB4OTYsMHhFRSwweDI4LDB4
MDIsMHg4QSwweDBBLDB4RDYsMHhGNiwweDk2LDB4RUUsMHhGRSwweEVBLDB4QUEsMHhFQSwKKyAg
ICAweEI2LDB4RjYsMHg5NiwweEVFLDB4MkEsMHgwMiwweDIyLDB4MDAsMHhCNiwweEY2LDB4OTYs
MHhFRSwweEFBLDB4ODIsMHgyMCwweDA4LAorICAgIDB4RDYsMHhGNiwweEI2LDB4RjYsMHg1RCww
eEQ1LDB4NkQsMHhBNSwweEQ3LDB4RjYsMHhCNiwweEVFLDB4MkIsMHgyQiwweDJFLDB4M0EsCisg
ICAgMHhENywweEZFLDB4RjcsMHhGNiwweDc1LDB4NTcsMHhENywweDU1LDB4MTcsMHhGRiwweEY3
LDB4RjYsMHg1RCwweERGLDB4N0YsMHg1QiwKKyAgICAweEQ2LDB4RkUsMHhGNywweEY2LDB4RDcs
MHhENywweDU1LDB4QTcsMHhENiwweEY2LDB4QUYsMHhCQywweDAwLDB4ODAsMHhFMCwweDc4LAor
ICAgIDB4MzUsMHhFRSwweDg3LDB4N0EsMHg3OCwweDVFLDB4NTcsMHg1NywweEM3LDB4OEEsMHg0
NywweDdBLDB4RkYsMHhGRiwweEFELDB4MkYsCisgICAgMHhBQiwweEEzLDB4NDYsMHg3MiwweEQ1
LDB4OTcsMHg5NywweDFGLDB4RjcsMHhGRSwweDhGLDB4QkMsMHgwOSwweDBCLDB4MDMsMHgwMiwK
KyAgICAweDE3LDB4RkYsMHhGOCwweEY2LDB4RUEsMHgyRSwweDJBLDB4QUEsMHgxOCwweEZGLDB4
RjcsMHhGNiwweDBBLDB4QTgsMHhBMiwweENBLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhB
OCwweEE4LDB4QTgsMHg4MiwweEY3LDB4RjYsMHhENywweEY2LDB4RkYsMHg5RiwweEZBLDB4NUEs
CisgICAgMHhENywweEY2LDB4RDYsMHhFRSwweDgyLDB4QTgsMHgyMiwweDhBLDB4RjcsMHhGNiww
eEQ3LDB4RjYsMHhERiwweDdCLDB4RDUsMHg5RCwKKyAgICAweEY3LDB4RjYsMHhCNywweEVFLDB4
QUYsMHhCQSwweEVBLDB4QUEsMHhGNywweEY2LDB4RDcsMHhGNiwweDVELDB4REQsMHhGNywweDJC
LAorICAgIDB4MTcsMHhGRiwweEI3LDB4RUUsMHhBRiwweEFCLDB4RUEsMHg3OCwweEY4LDB4RjYs
MHg5NiwweEVFLDB4RkMsMHg3RSwweDVGLDB4NUYsCisgICAgMHg5NiwweEVFLDB4MzQsMHhFNiww
eDgwLDB4QzgsMHg2OCwweDVDLDB4NTUsMHhFNiwweEIyLDB4RDUsMHhFOCwweEZBLDB4RkUsMHg5
NywKKyAgICAweEI3LDB4RjYsMHhGMywweERELDB4MzUsMHgyRCwweDBCLDB4MDIsMHhENywweEY2
LDB4QjYsMHhGNiwweEFELDB4QTAsMHg4MiwweEEyLAorICAgIDB4RDcsMHhGNiwweDk2LDB4RUUs
MHg3RSwweEFFLDB4QkEsMHhBOCwweEQ3LDB4RjYsMHg1NSwweEU2LDB4RDcsMHg4QSwweDIyLDB4
MkEsCisgICAgMHhENywweEY2LDB4NzUsMHhFNiwweDVGLDB4QUYsMHgyOCwweEE4LDB4RjcsMHhG
NiwweDc1LDB4RTYsMHhCRCwweEZGLDB4RkUsMHg4MiwKKyAgICAweEY3LDB4RjYsMHg5NiwweEVF
LDB4QTIsMHg4MywweDg5LDB4MkYsMHhGNywweEY2LDB4QjcsMHhFRSwweDVFLDB4RkEsMHhCMCww
eEEwLAorICAgIDB4RjgsMHhGNiwweEI3LDB4RUUsMHgwQiwweDBCLDB4OEEsMHhBMiwweDE4LDB4
RjcsMHhENywweEVFLDB4MjAsMHg4QSwweEFGLDB4QjcsCisgICAgMHgzOCwweEZGLDB4RjgsMHhG
NiwweDhGLDB4QjUsMHhERiwweDU3LDB4MzgsMHhGRiwweDk2LDB4RUUsMHhGOCwweDc4LDB4NzIs
MHg2QSwKKyAgICAweEQ3LDB4RjYsMHgzNSwweEU2LDB4MkUsMHgzRiwweEJFLDB4REYsMHhCNiww
eEY2LDB4MTQsMHhERSwweEI4LDB4RkMsMHhEQywweDdDLAorICAgIDB4MzQsMHhFNiwweDEwLDB4
QkQsMHg1OCwweDVDLDB4NUMsMHg1QywweDM0LDB4RTYsMHg5MiwweENELDB4ODMsMHhDMSwweEM5
LDB4QzksCisgICAgMHhGNCwweERELDB4NTEsMHhDNSwweDQwLDB4NDIsMHg0MiwweDhCLDB4NzYs
MHhFRSwweENGLDB4QjQsMHgwQiwweDJELDB4QjUsMHgyNSwKKyAgICAweDk1LDB4RUUsMHg1NSww
eEU2LDB4RUMsMHg1RSwweDVGLDB4REMsMHg5NiwweEVFLDB4NTUsMHhFNiwweEQ3LDB4RkIsMHhB
RCwweEE5LAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhCNSwweEZELDB4RkQsMHhERCwweEQ2
LDB4RjYsMHhCNiwweEVFLDB4RjUsMHhERiwweEY2LDB4RjksCisgICAgMHhENiwweEY2LDB4QjYs
MHhFRSwweEFELDB4RkYsMHhCQiwweEJCLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhGRiwweERGLDB4
QkYsMHhGRiwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4NzcsMHhGRiwweEJBLDB4RkEsMHhC
NiwweEY2LDB4RDYsMHhFRSwweDI4LDB4QkEsMHhBRiwweEJBLAorICAgIDB4QjcsMHhFRSwweDk1
LDB4RUUsMHg1NiwweERGLDB4NTcsMHg3NiwweEI3LDB4RkUsMHg5NSwweEVFLDB4RDUsMHhENSww
eDdGLDB4RjUsCisgICAgMHhCNSwweEY2LDB4OTYsMHhFRSwweEFGLDB4RUUsMHhGQiwweEJGLDB4
RDcsMHhGNiwweEI2LDB4RUUsMHhBQiwweDJCLDB4OEIsMHgyOSwKKyAgICAweEQ3LDB4RjYsMHhC
NiwweEVFLDB4QUUsMHgyOCwweDAyLDB4ODAsMHhENywweEY2LDB4QjYsMHhFRSwweEJBLDB4QUEs
MHhBMCwweDAwLAorICAgIDB4QjYsMHhGNiwweDg2LDB4N0EsMHg4MCwweEUwLDB4NjAsMHg3MCww
eDQ3LDB4NzIsMHg2MywweDYxLDB4QTgsMHhBRSwweEJBLDB4REMsCisgICAgMHgyNiwweDcyLDB4
ODQsMHg2MSwweDdBLDB4NzAsMHhGOCwweEVBLDB4MDcsMHg3MiwweDY0LDB4NjEsMHgwQSwweEFC
LDB4QkYsMHhGNywKKyAgICAweEE3LDB4N0EsMHhBNSwweDYxLDB4MkYsMHhCRiwweEJELDB4RjUs
MHg3NSwweEVFLDB4QTcsMHg4MiwweDBCLDB4MkQsMHgzNSwweEI1LAorICAgIDB4RDcsMHhGNiww
eDc1LDB4RjYsMHhBQSwweDJBLDB4QUEsMHg4MSwweEQ2LDB4RjYsMHhCNiwweEY2LDB4REIsMHhF
RSwweEI5LDB4QTMsCisgICAgMHhENiwweEY2LDB4QjYsMHhGNiwweDVELDB4NzYsMHg3OCwweEZG
LDB4QjYsMHhGNiwweEI3LDB4RUUsMHg4OCwweDIyLDB4ODgsMHgyMCwKKyAgICAweEQ2LDB4RjYs
MHhCNiwweEY2LDB4MzcsMHhCRCwweEI3LDB4OUQsMHhGNywweEY2LDB4QjYsMHhFRSwweEJCLDB4
QkUsMHhBRiwweEFGLAorICAgIDB4RDYsMHhGRSwweEY3LDB4RjYsMHhENSwweERGLDB4NzcsMHg1
NSwweEQ3LDB4RkUsMHhGNywweEY2LDB4N0QsMHg1NSwweEY1LDB4RUQsCisgICAgMHhGNywweEZF
LDB4NTEsMHhENSwweDAwLDB4QTAsMHhFMCwweDc4LDB4RjMsMHhFNSwweDQ2LDB4NzIsMHhFMCww
eDc4LDB4NUUsMHg1NywKKyAgICAweDY3LDB4N0EsMHgyNiwweDdBLDB4ODksMHhGQSwweDdBLDB4
RkUsMHhBNywweDhBLDB4NDcsMHg4MiwweDNCLDB4MEEsMHhBRiwweDhELAorICAgIDB4QjIsMHhE
RCwweDg3LDB4ODIsMHg5NSwweDk1LDB4QjUsMHgzNSwweEY3LDB4RkUsMHg1NSwweEVFLDB4MDEs
MHgwMSwweDAzLDB4MDIsCisgICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweDNBLDB4MkEsMHgyQSww
eDJBLDB4MzcsMHhGRiwweEY4LDB4RjYsMHhGRSwweEZBLDB4RUUsMHhBRSwKKyAgICAweEY3LDB4
RjYsMHhENywweEY2LDB4QTAsMHhFMCwweEE4LDB4QkMsMHhGNywweEY2LDB4RDcsMHhGNiwweDdB
LDB4NkYsMHhGRSwweERCLAorICAgIDB4RDcsMHhGNiwweEY3LDB4RUUsMHgwOCwweDg4LDB4MEEs
MHgyMiwweEY3LDB4RjYsMHhENywweEY2LDB4RDcsMHhCNSwweEI1LDB4RDUsCisgICAgMHhGNyww
eEY2LDB4RDcsMHhGNiwweERELDB4RkQsMHgzRCwweDJCLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHgy
RCwweDhGLDB4NjMsMHg1OCwKKyAgICAweEY3LDB4RjYsMHg5NiwweEVFLDB4RjgsMHhGOCwweDdG
LDB4NUYsMHhCNywweEY2LDB4MzUsMHhFNiwweEE4LDB4RUEsMHg3QSwweDdBLAorICAgIDB4NTUs
MHhFRSwweDkyLDB4Q0QsMHhFMCwweEU4LDB4NUEsMHhERSwweEQ3LDB4RjYsMHg3MSwweENELDB4
QjcsMHgyRCwweDBCLDB4MDIsCisgICAgMHhENywweEY2LDB4QjYsMHhGNiwweDhELDB4MEIsMHgw
MCwweDAwLDB4RDcsMHhGNiwweEI3LDB4RUUsMHhBOCwweEFBLDB4MDAsMHg4MCwKKyAgICAweEQ3
LDB4RjYsMHhCNywweEVFLDB4RTgsMHg4QSwweEY4LDB4RkMsMHhENywweEY2LDB4QjYsMHhFRSww
eDU1LDB4N0YsMHg4RiwweDIzLAorICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHg1RCwweDU1LDB4
NzcsMHg2RSwweEY3LDB4RjYsMHg5NiwweEVFLDB4MkIsMHgyRiwweEJELDB4RkYsCisgICAgMHgx
OCwweEZGLDB4RDcsMHhGNiwweEZGLDB4QUEsMHgyQiwweDJELDB4MzksMHhGRiwweEY3LDB4RjYs
MHg1RiwweDdGLDB4RUEsMHhBQSwKKyAgICAweEY3LDB4RjYsMHhENywweEVFLDB4MkMsMHgyRSww
eDAyLDB4MDAsMHhGOCwweEY2LDB4RDcsMHhGNiwweEE0LDB4RUMsMHhEQSwweEI4LAorICAgIDB4
RjcsMHhGNiwweEI3LDB4RUUsMHhBMCwweEEyLDB4QzIsMHhFMCwweEQ3LDB4RjYsMHhCNywweEVF
LDB4NDAsMHg2QSwweEEyLDB4MjIsCisgICAgMHhCNywweEVFLDB4MTQsMHhERSwweDlFLDB4REUs
MHhEOCwweDU4LDB4RDcsMHhGNiwweDM0LDB4RTYsMHg1OCwweDdBLDB4NzIsMHg2MiwKKyAgICAw
eDE0LDB4REUsMHgxMCwweEM1LDB4NUMsMHhGOCwweEY4LDB4RjgsMHgzNCwweEU2LDB4NzEsMHhD
RCwweDg5LDB4QTksMHhBRCwweEFELAorICAgIDB4RDMsMHhERCwweDUxLDB4QzUsMHg4QiwweDBC
LDB4MEYsMHhBNSwweEI2LDB4RjYsMHgxMCwweEM1LDB4MjUsMHgyRCwweDJGLDB4MkYsCisgICAg
MHhCNiwweEY2LDB4MzQsMHhFNiwweERBLDB4NTgsMHhGOCwweDcwLDB4OTYsMHhFRSwweDM1LDB4
RTYsMHgzRiwweEI1LDB4QkQsMHhCRCwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4NUIsMHhG
NywweEZELDB4QkQsMHhENiwweEY2LDB4QjYsMHhFRSwweDZGLDB4QkUsMHhCQSwweEI2LAorICAg
IDB4RDYsMHhGNiwweEI2LDB4RUUsMHhCRiwweEUzLDB4QUQsMHhBNywweEQ2LDB4RjYsMHhCNiww
eEVFLDB4QUYsMHg2RSwweEZGLDB4RUMsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEFELDB4
QkYsMHhFMywweEVGLDB4RDYsMHhGNiwweEI2LDB4RUUsMHgzRiwweEVFLDB4RUUsMHhGRCwKKyAg
ICAweEI2LDB4RjYsMHg5NSwweEVFLDB4RkEsMHhGNiwweEZDLDB4QkUsMHhCNiwweEY2LDB4OTYs
MHhFRSwweEE1LDB4RUQsMHg3RSwweEZFLAorICAgIDB4OTYsMHhGNiwweEI2LDB4RUUsMHg5Riww
eDZFLDB4N0YsMHg3QSwweEY2LDB4RjYsMHhCNiwweEVFLDB4RkQsMHhCRiwweEZGLDB4QUIsCisg
ICAgMHhENywweEY2LDB4QjYsMHhFRSwweEUwLDB4RTAsMHgwQSwweDA4LDB4QjYsMHhGNiwweEY3
LDB4RUUsMHhBRiwweEFGLDB4QUIsMHhBQiwKKyAgICAweDU1LDB4RUUsMHhDNCwweDYxLDB4NzAs
MHg3MCwweDcwLDB4NzAsMHhFNiwweDY5LDB4MjMsMHg1MSwweDU4LDB4NUUsMHg1RSwweDdGLAor
ICAgIDB4RTYsMHg3MSwweDAzLDB4NTEsMHgwMiwweDAzLDB4MDksMHhBRCwweEE1LDB4NjEsMHg0
NCwweDU5LDB4RkEsMHhCRSwweDVDLDB4NTgsCisgICAgMHhDNSwweDY5LDB4NDQsMHg1MSwweDJG
LDB4QUQsMHhCNSwweEY1LDB4QUIsMHg5QiwweEU2LDB4NjksMHgyRCwweEJELDB4QjUsMHhENSwK
KyAgICAweEI2LDB4RjYsMHg2QSwweDkzLDB4MDIsMHgwQiwweDA5LDB4MjUsMHhENiwweEZFLDB4
RDcsMHhGNiwweEZGLDB4RkYsMHhERiwweEJFLAorICAgIDB4RDcsMHhGNiwweEI2LDB4RjYsMHhC
QywweEZFLDB4RUMsMHhCOCwweEQ3LDB4RjYsMHhCNiwweEY2LDB4RDUsMHhCNywweEJGLDB4QUIs
CisgICAgMHhENiwweEY2LDB4QjYsMHhGNiwweEZFLDB4QkUsMHhBQywweEEwLDB4RjcsMHhGRSww
eEI2LDB4RjYsMHhCRCwweEVGLDB4QkYsMHhCRSwKKyAgICAweEQ3LDB4RkUsMHhGNywweEY2LDB4
NTUsMHg1NywweEZGLDB4RUYsMHhENywweEY2LDB4QjIsMHhERCwweDAwLDB4MDAsMHg4MCwweDYw
LAorICAgIDB4NzYsMHhFRSwweDY2LDB4N0EsMHhFMCwweDc4LDB4NUUsMHg1RiwweDY3LDB4ODIs
MHgwNSwweDcyLDB4RTgsMHhGRCwweEJGLDB4MkIsCisgICAgMHg4NywweDhBLDB4MDUsMHg3QSww
eEE3LDB4QUQsMHgyRiwweEVBLDB4ODcsMHg4QSwweDI1LDB4N0EsMHgwMiwweEVBLDB4RkUsMHhE
RiwKKyAgICAweDc2LDB4RUUsMHg2NiwweDgyLDB4MzUsMHgyNSwweDI1LDB4MkQsMHgxOCwweEZG
LDB4RjcsMHhGRSwweDJELDB4MDksMHgyOSwweDAxLAorICAgIDB4MzgsMHhGRiwweDE3LDB4Rjcs
MHg1NywweERELDB4N0YsMHhGRSwweDE4LDB4RkYsMHhGNywweEVFLDB4ODgsMHhFMiwweEEwLDB4
QzAsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEFDLDB4MkUsMHhCOCwweEFBLDB4RjcsMHhG
NiwweEQ3LDB4RjYsMHhGRiwweEZBLDB4N0EsMHhCQSwKKyAgICAweEY3LDB4RjYsMHhENywweEY2
LDB4NUEsMHhGNywweDk1LDB4QUEsMHhGNywweEY2LDB4RDcsMHhGNiwweEQ3LDB4NUUsMHg1Riww
eDIzLAorICAgIDB4MTgsMHhGRiwweEI2LDB4RjYsMHgyQiwweDJCLDB4QTIsMHg3MiwweDE3LDB4
RkYsMHhCNiwweEY2LDB4NUMsMHg1RiwweDU3LDB4NTUsCisgICAgMHhCNiwweEY2LDB4NTQsMHhF
NiwweEUwLDB4QTgsMHhFOCwweDc4LDB4NzUsMHhFRSwweDkyLDB4RDUsMHhBMCwweEU4LDB4Nzgs
MHhGQSwKKyAgICAweEI3LDB4RjYsMHg5MiwweENELDB4QjcsMHgyNSwweDBCLDB4MDIsMHhGNyww
eEY2LDB4QjYsMHhGNiwweEFELDB4QkIsMHhBQSwweEFCLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4
RjYsMHg1RiwweEQ1LDB4RkQsMHg3NSwweEQ3LDB4RjYsMHhCNywweEVFLDB4QTgsMHgwMCwweDAw
LDB4MDAsCisgICAgMHhENywweEY2LDB4QjcsMHhFRSwweDNBLDB4QUEsMHgwQSwweEE4LDB4RDcs
MHhGNiwweEI2LDB4RUUsMHgyOCwweEZBLDB4QjgsMHhGQiwKKyAgICAweEQ3LDB4RjYsMHhCNyww
eEVFLDB4RkUsMHhCRSwweDJGLDB4QjgsMHhENywweEY2LDB4QjcsMHhFRSwweDVGLDB4RkMsMHhB
MiwweEEwLAorICAgIDB4RjcsMHhGNiwweEI3LDB4RUUsMHgyRCwweDNELDB4RkYsMHhGRiwweDM4
LDB4RkYsMHhGNywweEY2LDB4MkEsMHhBQiwweEFELDB4QjUsCisgICAgMHgzOSwweEZGLDB4Rjcs
MHhGNiwweDVFLDB4NTgsMHg2MCwweEMwLDB4RjcsMHhGNiwweEQ4LDB4RjYsMHhBQSwweEFBLDB4
OEIsMHg3OCwKKyAgICAweEY3LDB4RjYsMHg5NiwweEVFLDB4OEEsMHhFOCwweDY4LDB4NUYsMHhE
NywweEY2LDB4OTYsMHhFRSwweDJBLDB4MkEsMHgyRiwweDJELAorICAgIDB4QjcsMHhGNiwweDkx
LDB4Q0QsMHhCOCwweEI4LDB4RTgsMHhEOCwweEQ2LDB4RjYsMHg1NCwweEU2LDB4NjIsMHhFMiww
eEEzLDB4QTksCisgICAgMHgxNCwweERFLDB4NzEsMHhDRCwweDc0LDB4RkMsMHg3NCwweEZDLDB4
MzQsMHhFNiwweDkyLDB4Q0QsMHhBRCwweEE1LDB4QjUsMHhCNSwKKyAgICAweDcxLDB4Q0QsMHhB
RiwweEI0LDB4QTgsMHhBQywweEJFLDB4RDQsMHhCNiwweEY2LDB4NzEsMHhDRCwweDBELDB4MDks
MHgwQiwweDJELAorICAgIDB4RDcsMHhGNiwweDM0LDB4RTYsMHhGOCwweEY4LDB4NzgsMHg3QSww
eDc1LDB4RUUsMHgzNCwweEU2LDB4MjcsMHhBNywweEJGLDB4RUYsCisgICAgMHhENiwweEY2LDB4
QjYsMHhFRSwweEZGLDB4RUEsMHhCQSwweEFCLDB4RDYsMHhGNiwweEI2LDB4RUUsMHgyOSwweEFC
LDB4RUMsMHhFQSwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4QUEsMHhBQSwweDBBLDB4MEUs
MHhENiwweEY2LDB4QjYsMHhFRSwweEFBLDB4QUEsMHhBQSwweEEyLAorICAgIDB4RDYsMHhGNiww
eEI2LDB4RUUsMHhBQSwweDg2LDB4N0YsMHg0QSwweEQ2LDB4RjYsMHhCNiwweEVFLDB4RkUsMHhF
QSwweEJCLDB4QkEsCisgICAgMHg5NiwweEY2LDB4QjYsMHhFRSwweEY5LDB4RkQsMHhCRCwweEVE
LDB4QjYsMHhGNiwweDk2LDB4RUUsMHhFRSwweEFBLDB4RUUsMHhDQSwKKyAgICAweDk1LDB4RjYs
MHhCNiwweEVFLDB4REYsMHg3RiwweERELDB4NTUsMHhENiwweEY2LDB4QjYsMHhFRSwweDgyLDB4
MDMsMHgyMywweDAzLAorICAgIDB4RDYsMHhGNiwweEY3LDB4RUUsMHgwMCwweDIwLDB4MjIsMHhB
MCwweEQ2LDB4RjYsMHhCNywweEVFLDB4QTIsMHg4MiwweDAwLDB4MDAsCisgICAgMHhCNiwweEY2
LDB4QzQsMHg1OSwweDcwLDB4NzAsMHg3MCwweDYwLDB4ODUsMHg1OSwweDIzLDB4NDksMHhFMyww
eEFFLDB4NUUsMHhGNywKKyAgICAweDg1LDB4NTksMHgyMywweDUxLDB4MkQsMHhBRSwweDdGLDB4
N0YsMHg4NSwweDYxLDB4RTMsMHg0MCwweEUwLDB4RjgsMHhGQiwweDVGLAorICAgIDB4NjQsMHg1
MSwweEUzLDB4NDAsMHgyQSwweDJGLDB4MkYsMHgzRCwweDg3LDB4NzIsMHg4NCwweDU5LDB4M0Qs
MHhCRCwweEJELDB4MkQsCisgICAgMHhDRiwweEJDLDB4QTgsMHg3QSwweDJELDB4QkQsMHhGNSww
eEY1LDB4OTYsMHhGNiwweDhCLDB4OTMsMHgwMCwweDBCLDB4RjUsMHg1NSwKKyAgICAweEI2LDB4
RjYsMHg4QiwweDkzLDB4MDAsMHgyOCwweEZGLDB4NTUsMHhCNiwweEY2LDB4QUIsMHg5MywweDAw
LDB4MDAsMHgyQSwweEQ1LAorICAgIDB4QjYsMHhGNiwweENGLDB4QkMsMHgwMCwweDAwLDB4MDAs
MHhGNSwweEQ3LDB4RjYsMHgzMSwweENELDB4MDAsMHgwMCwweDBBLDB4QjUsCisgICAgMHhENyww
eEZFLDB4OTIsMHhENSwweDAwLDB4MDAsMHgwMCwweDdBLDB4MzUsMHhFNiwweEU1LDB4NjksMHg4
MCwweEUwLDB4NzgsMHg1RSwKKyAgICAweEU4LDB4OEEsMHhFNSwweDcxLDB4REMsMHhGNywweEZE
LDB4RjUsMHg4NywweDhBLDB4MjYsMHg3QSwweDI5LDB4QTksMHhDQSwweEVCLAorICAgIDB4Njcs
MHg4QSwweDA2LDB4N0EsMHg2MCwweEZDLDB4OUEsMHg5NywweEM4LDB4OTIsMHgwNiwweDdBLDB4
RjUsMHhCRCwweDJGLDB4MEEsCisgICAgMHhCNiwweEY2LDB4ODgsMHg4QSwweDBELDB4MDksMHgw
QiwweDBCLDB4MzgsMHhGRiwweEY4LDB4RkUsMHhCRiwweEJELDB4QkYsMHhGNywKKyAgICAweDE4
LDB4RkYsMHgzOCwweEY3LDB4QUUsMHhCQSwweEFBLDB4QTgsMHgzOCwweEZGLDB4RjcsMHhGNiww
eEZBLDB4N0EsMHhGQSwweEY4LAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhDRSwweDMyLDB4
QTAsMHgyMCwweEY3LDB4RjYsMHhENywweEY2LDB4QUMsMHhCQSwweEMyLDB4MDAsCisgICAgMHhG
NywweEY2LDB4RDcsMHhGNiwweEEwLDB4QUEsMHg4QSwweDIzLDB4MTgsMHhGRiwweEQ2LDB4RjYs
MHhCRiwweDJGLDB4OEEsMHg3MiwKKyAgICAweDE3LDB4RkYsMHg5NiwweEVFLDB4RjgsMHg3RSww
eEQ3LDB4NTcsMHhCNiwweEY2LDB4NTUsMHhFNiwweDgyLDB4QUEsMHhFMiwweDYyLAorICAgIDB4
OTYsMHhFRSwweEIzLDB4RDUsMHhBMCwweEE4LDB4RkEsMHhERiwweEQ3LDB4RjYsMHgxNCwweERF
LDB4QjUsMHgwQiwweDJCLDB4MDIsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEQ1LDB4OTYs
MHhBRiwweEZGLDB4RDcsMHhGNiwweEY2LDB4RUUsMHgwMiwweDgyLDB4MEEsMHgwMCwKKyAgICAw
eEY3LDB4RjYsMHhCNiwweEVFLDB4RUEsMHhFQSwweDdBLDB4RUEsMHhENywweEY2LDB4QjcsMHhF
RSwweDgwLDB4QzIsMHhGQiwweEFDLAorICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHhBQSwweEVB
LDB4MDAsMHgwMCwweEI3LDB4RjYsMHhENywweEVFLDB4RUEsMHhGRiwweEZGLDB4QUUsCisgICAg
MHhENywweEY2LDB4QjcsMHhFRSwweDg4LDB4MEEsMHgyQiwweEZGLDB4RDcsMHhGNiwweEI3LDB4
RUUsMHg4OCwweEEwLDB4ODAsMHhBMCwKKyAgICAweEQ3LDB4RjYsMHhGNywweEVFLDB4ODgsMHhB
MCwweDg4LDB4QTAsMHgxOCwweEZGLDB4RDcsMHhGNiwweDNELDB4QkYsMHhCRCwweEY1LAorICAg
IDB4MzgsMHhGRiwweEY3LDB4RjYsMHg4MiwweDhBLDB4QUIsMHhCRCwweDM5LDB4RkYsMHg5Nyww
eEVFLDB4RkUsMHhGRSwweDdDLDB4NzgsCisgICAgMHhCNywweEY2LDB4NzYsMHhFNiwweEU4LDB4
RTgsMHhGRiwweEZFLDB4RDcsMHhGNiwweDc2LDB4RUUsMHhBRiwweEJGLDB4QkYsMHhCNSwKKyAg
ICAweEI3LDB4RjYsMHgzMCwweEM1LDB4RDgsMHhEOCwweEQ4LDB4RjgsMHhCNywweEY2LDB4MzQs
MHhFNiwweDgzLDB4OEIsMHgyMywweDg5LAorICAgIDB4NTUsMHhFRSwweDkyLDB4Q0QsMHg1Niww
eDdDLDB4NUMsMHhGQywweEY0LDB4REQsMHg3MSwweENELDB4MkQsMHgyRCwweDJGLDB4MkYsCisg
ICAgMHg5MiwweENELDB4NEQsMHhBQywweEZFLDB4REMsMHhENCwweDVDLDB4MzUsMHhFNiwweDEw
LDB4QzUsMHgyQiwweDJELDB4QkQsMHhBRCwKKyAgICAweDk2LDB4RUUsMHgzNCwweEU2LDB4RTAs
MHhFMiwweEE5LDB4RTksMHg1NSwweEU2LDB4MzQsMHhFNiwweDkyLDB4MUMsMHgyOCwweDgwLAor
ICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBQiwweEVFLDB4QUUsMHgyQSwweEQ2LDB4RjYsMHhC
NiwweEVFLDB4OEEsMHhBQiwweEJBLDB4QTAsCisgICAgMHhENiwweEY2LDB4QjcsMHhFRSwweEFB
LDB4MDMsMHgyOCwweEFDLDB4RjcsMHhGNiwweEI2LDB4RUUsMHhBQiwweEVBLDB4QkIsMHhFRiwK
KyAgICAweEQ2LDB4RjYsMHhENywweEVFLDB4OEEsMHg4QSwweEEyLDB4QUEsMHhENiwweEY2LDB4
QjYsMHhFRSwweDcyLDB4RTAsMHg4MCwweDgwLAorICAgIDB4RDYsMHhGNiwweDk2LDB4RUUsMHhG
RiwweEZFLDB4RkUsMHhFQSwweDk1LDB4RjYsMHhENiwweEVFLDB4QkEsMHhFQSwweEY2LDB4RkYs
CisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEY1LDB4RjcsMHhGRCwweEZGLDB4RDYsMHhGNiww
eEY3LDB4RUUsMHgyOCwweEE4LDB4ODAsMHgyMCwKKyAgICAweEQ2LDB4RjYsMHhGNywweEVFLDB4
ODAsMHgwOCwweDI4LDB4ODIsMHhGNiwweEY2LDB4RDcsMHhGNiwweDc3LDB4NUYsMHhGRiwweEZF
LAorICAgIDB4RDYsMHhGNiwweDRBLDB4OEIsMHg2MCwweEMwLDB4ODAsMHg4MCwweDQ3LDB4NkEs
MHgwMywweDQxLDB4NzcsMHhENywweDU2LDB4RDQsCisgICAgMHg0NCwweDQ5LDB4RTMsMHg0MCww
eEFCLDB4QTgsMHhBMCwweDYwLDB4MjMsMHg0OSwweEUzLDB4NDAsMHg3QSwweDY4LDB4NUUsMHg1
NiwKKyAgICAweDY0LDB4NTEsMHhFMywweDQwLDB4M0QsMHhCNSwweDM1LDB4M0QsMHhDOCwweDdB
LDB4QTUsMHg1OSwweDJELDB4MkQsMHgyRCwweEJELAorICAgIDB4NEEsMHg5MywweEE4LDB4N0Es
MHgyRiwweDJELDB4OEIsMHhDRCwweDRCLDB4OTMsMHhBOCwweDdBLDB4ODAsMHhFOCwweDVFLDB4
NTcsCisgICAgMHgwOSwweDgzLDB4NDcsMHg3MiwweDAwLDB4QUEsMHhGRiwweEQ3LDB4NEEsMHg4
QiwweDg3LDB4NzIsMHgwMiwweEFGLDB4RjUsMHhENSwKKyAgICAweDBDLDB4QTQsMHhFOCwweDgy
LDB4MkEsMHhBRiwweEJELDB4QkQsMHg2RSwweEI0LDB4MDksMHg4QiwweDJBLDB4RkEsMHg3Qiww
eDVGLAorICAgIDB4NkUsMHhCNCwweDA1LDB4NkEsMHg4MCwweDdBLDB4NUYsMHg1NywweEE4LDB4
ODIsMHhDNCwweDYxLDB4RkMsMHhCRSwweEFGLDB4QUQsCisgICAgMHg0NiwweDdBLDB4QzUsMHg2
OSwweEJDLDB4RkUsMHhGRSwweEQ2LDB4NDcsMHg4MiwweEU1LDB4NzksMHhFMiwweEFGLDB4QjUs
MHgzNSwKKyAgICAweEE4LDB4OTIsMHgwNiwweDdBLDB4QTcsMHg4OSwweDhCLDB4OEIsMHgyQSww
eDlCLDB4NjcsMHg4QSwweDI1LDB4M0QsMHgyQiwweDBCLAorICAgIDB4RjcsMHhGRSwweDBELDB4
QjQsMHgwOSwweDAzLDB4MDEsMHgwOSwweDM4LDB4RkYsMHhGNywweEY2LDB4QkYsMHhGRiwweEJG
LDB4RkYsCisgICAgMHgzOCwweEZGLDB4MTcsMHhGNywweEZGLDB4QkYsMHhGRCwweEZCLDB4Mzgs
MHhGRiwweDE3LDB4RjcsMHg1RSwweDVGLDB4RjcsMHg3RiwKKyAgICAweDM4LDB4RkYsMHhGNyww
eEY2LDB4NTcsMHg1RiwweDdGLDB4RkEsMHgxOCwweEZGLDB4RjcsMHhGNiwweDc3LDB4NUQsMHhC
NSwweEFFLAorICAgIDB4MTcsMHhGRiwweEI2LDB4RUUsMHgyQSwweDBBLDB4QzAsMHg2MCwweEY3
LDB4RkUsMHg1NSwweEU2LDB4QTAsMHhGQywweEZGLDB4RkYsCisgICAgMHhCNiwweEY2LDB4NzUs
MHhFRSwweDgyLDB4MDIsMHhBQiwweDU3LDB4QjYsMHhGNiwweDU1LDB4RTYsMHg3MCwweDdBLDB4
QkEsMHhERiwKKyAgICAweEY3LDB4RkUsMHhCMywweEQ1LDB4OTcsMHgwRiwweDAyLDB4QUEsMHhG
NywweEZFLDB4RDcsMHhGNiwweEQ1LDB4N0EsMHhFQSwweEFCLAorICAgIDB4RjcsMHhGNiwweEQ3
LDB4RjYsMHhFMywweEVGLDB4RTMsMHhGOSwweEY3LDB4RjYsMHhENywweEY2LDB4NTUsMHg1Riww
eDc2LDB4RUEsCisgICAgMHhGNywweEY2LDB4QjYsMHhFRSwweEFCLDB4QkYsMHhCQiwweEIyLDB4
RDcsMHhGNiwweEI3LDB4RUUsMHgwOCwweDgwLDB4RTgsMHg4MCwKKyAgICAweEQ3LDB4RjYsMHhC
NywweEVFLDB4QTAsMHhBOCwweEU4LDB4QTYsMHhCNiwweEY2LDB4RDcsMHhFRSwweEFCLDB4QUIs
MHhBRiwweEZBLAorICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHhGRiwweEJCLDB4QUEsMHhFQSww
eEI3LDB4RjYsMHhGNywweEVFLDB4QUEsMHhBQSwweEFBLDB4NkUsCisgICAgMHhGOCwweEY2LDB4
RDcsMHhGNiwweEQ1LDB4NTUsMHhGRCwweDJCLDB4RjgsMHhGNiwweEQ3LDB4RjYsMHgwRiwweDBC
LDB4MEEsMHgwQSwKKyAgICAweDE4LDB4RkYsMHhENywweEY2LDB4MkEsMHgyQiwweEJCLDB4RkYs
MHgzOSwweEZGLDB4OTcsMHhFRSwweDc4LDB4N0EsMHg3MiwweDZBLAorICAgIDB4OTYsMHhFRSww
eDc2LDB4RTYsMHhCOCwweDgwLDB4QTgsMHhCRCwweEI3LDB4RjYsMHg1NiwweEVFLDB4M0YsMHhC
RiwweEFGLDB4QUUsCisgICAgMHhCNywweEY2LDB4MzAsMHhDNSwweEQ4LDB4RDgsMHhGOCwweDU4
LDB4QjcsMHhGNiwweDM0LDB4RTYsMHgwOSwweDg5LDB4MjksMHg4OSwKKyAgICAweDc2LDB4RUUs
MHg3MiwweENELDB4RjgsMHhGOCwweDc4LDB4NTgsMHhEMywweEQ1LDB4NzEsMHhDRCwweDJCLDB4
QUUsMHhGRSwweEQ1LAorICAgIDB4OTIsMHhENSwweDZELDB4QUMsMHhENCwweDk2LDB4MTYsMHgz
NiwweDM0LDB4RTYsMHg5MiwweEQ1LDB4QkQsMHhBRiwweDJCLDB4MEYsCisgICAgMHg5NiwweEVF
LDB4MzQsMHhFNiwweEUxLDB4RUIsMHhDQiwweDhCLDB4NTUsMHhFNiwweDM1LDB4RTYsMHhBMiww
eEJFLDB4RkEsMHhBQywKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4QUEsMHhBQSwweEFBLDB4
MDIsMHhENywweEY2LDB4QjYsMHhFRSwweEFBLDB4QTgsMHhCQSwweDI4LAorICAgIDB4RDYsMHhG
NiwweEI3LDB4RTYsMHgyMCwweDAyLDB4QzAsMHhBMiwweEQ2LDB4RjYsMHhCNiwweEVFLDB4OEEs
MHgyQSwweDBCLDB4MDIsCisgICAgMHhENywweEY2LDB4RDYsMHhFRSwweEFBLDB4MkEsMHhCMiww
eDIyLDB4RjgsMHhGNiwweEQ2LDB4RjYsMHg3RCwweDVGLDB4NzcsMHhERCwKKyAgICAweEQ2LDB4
RjYsMHhCNiwweEVFLDB4NTYsMHhGNywweDVFLDB4OUUsMHhENiwweEY2LDB4QjYsMHhFRSwweDc1
LDB4RjUsMHhENSwweEI2LAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHg5RCwweEQ3LDB4RkQs
MHhCQiwweEY4LDB4RjYsMHhENywweEY2LDB4NUQsMHhGNSwweEZGLDB4QkQsCisgICAgMHhGNiww
eEY2LDB4RDcsMHhGNiwweDU1LDB4REQsMHhGQywweEZFLDB4RjYsMHhGNiwweEQ3LDB4RjYsMHhG
RCwweDc1LDB4NUYsMHg2RSwKKyAgICAweEY4LDB4RkUsMHg3NiwweEU2LDB4NkEsMHhFOCwweENB
LDB4QUEsMHg1MSwweEM1LDB4MDIsMHg0MSwweDU2LDB4NTYsMHg1NCwweDVDLAorICAgIDB4ODQs
MHg1MSwweDIzLDB4NDEsMHhGNywweEZELDB4OEQsMHg5RCwweDQ0LDB4NDksMHgwMywweDQxLDB4
NTYsMHg5NCwweEY0LDB4MzYsCisgICAgMHgwNiwweDYyLDB4MDMsMHg0MSwweEI1LDB4QkYsMHgy
QiwweDIzLDB4NjcsMHg3MiwweEM1LDB4NTksMHgyOSwweDBCLDB4MkEsMHhENywKKyAgICAweDA5
LDB4ODMsMHg0NiwweDZBLDB4MkEsMHhBQiwweEZGLDB4RkQsMHhBOCwweDdBLDB4MjcsMHg2QSww
eEE4LDB4RTgsMHhGRSwweEZCLAorICAgIDB4ODgsMHg3MiwweDI2LDB4NkEsMHhBOCwweDJFLDB4
RUIsMHg2RiwweEE3LDB4N0EsMHgyNiwweDZBLDB4MkYsMHhCRiwweEI3LDB4RDUsCisgICAgMHg2
QSwweDkzLDB4QTcsMHg3QSwweDI5LDB4QkQsMHhENSwweDU1LDB4NkEsMHg5MywweDQ3LDB4NzIs
MHhBMCwweEEyLDB4RUEsMHg3RiwKKyAgICAweDg4LDB4N0EsMHhBNCwweDYxLDB4NzgsMHg3OCww
eDVFLDB4REYsMHg2OCwweDdBLDB4RTUsMHg2OSwweDBELDB4MkQsMHhFRCwweEVELAorICAgIDB4
NDcsMHg3QSwweDIzLDB4NTksMHhCOCwweEY4LDB4REUsMHhERSwweDI2LDB4ODIsMHg4NCwweDY5
LDB4MkIsMHgwQiwweDBCLDB4MkQsCisgICAgMHg2NywweDhBLDB4MjYsMHg4MiwweDAyLDB4REEs
MHg3QSwweERELDB4NDksMHg5QiwweDY3LDB4OEEsMHgyRCwweDM1LDB4QkQsMHhFOSwKKyAgICAw
eEY3LDB4RkUsMHgwQywweEI0LDB4MDksMHgwOSwweDA5LDB4MDksMHgxOCwweEZGLDB4RjcsMHhG
NiwweDJBLDB4MkEsMHhCQSwweEFBLAorICAgIDB4MzgsMHhGRiwweEY3LDB4RjYsMHgzQiwweEFF
LDB4RkIsMHhFRiwweDE4LDB4RkYsMHgzOCwweEY3LDB4RUIsMHhBQSwweEFBLDB4QTgsCisgICAg
MHgzOCwweEZGLDB4MTgsMHhGRiwweEJBLDB4QUEsMHg4QSwweEZBLDB4MzgsMHhGRiwweEQ3LDB4
RjYsMHhBQSwweEFBLDB4Q0EsMHg2QSwKKyAgICAweDE4LDB4RkYsMHhCNiwweEVFLDB4NTgsMHg1
RSwweEY3LDB4RkYsMHhENiwweEY2LDB4OTYsMHhFRSwweEZGLDB4RkYsMHg2OCwweDdBLAorICAg
IDB4OTUsMHhFRSwweDkxLDB4RDUsMHhBMCwweEUwLDB4NzAsMHg4OCwweDc2LDB4RUUsMHhGMCww
eEM0LDB4QTIsMHhCNywweDJELDB4MDIsCisgICAgMHg1NSwweEVFLDB4NTEsMHhDRCwweDJGLDB4
RDcsMHhGOCwweEYwLDB4RDcsMHhGNiwweEQ0LDB4REQsMHgwMiwweDAzLDB4MEYsMHgyRCwKKyAg
ICAweEY3LDB4RjYsMHhENywweEY2LDB4QTksMHgyQiwweEJBLDB4QUQsMHhEOCwweEZFLDB4Rjcs
MHhGNiwweEQ1LDB4NzUsMHg3NywweERELAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg1RSww
eEE3LDB4ODgsMHg1NiwweEY3LDB4RjYsMHhCNywweEVFLDB4QUEsMHhFOCwweEVBLDB4RkYsCisg
ICAgMHhGNywweEY2LDB4QjcsMHhFRSwweEZGLDB4REUsMHhGNSwweEFCLDB4RjcsMHhGNiwweEI3
LDB4RjYsMHhGRiwweEFCLDB4QUEsMHgwOCwKKyAgICAweEY3LDB4RjYsMHhCNywweEVFLDB4QkYs
MHhBQiwweDAwLDB4MDAsMHhGOCwweEY2LDB4RDcsMHhGNiwweDhBLDB4RUEsMHhBMCwweEFBLAor
ICAgIDB4RjgsMHhGNiwweEQ3LDB4RjYsMHgyQSwweDBBLDB4QTIsMHg2RSwweEY3LDB4RjYsMHhE
OCwweEY2LDB4MDIsMHgwMCwweEY4LDB4RkIsCisgICAgMHhENywweEY2LDB4RjgsMHhFRSwweEFB
LDB4ODIsMHgyMiwweDBBLDB4MTgsMHhGRiwweEI3LDB4RUUsMHg0QSwweEVBLDB4RUIsMHhFRiwK
KyAgICAweEI2LDB4RUUsMHg3NiwweEVFLDB4NzcsMHg1RiwweDVFLDB4NzQsMHg5NiwweEVFLDB4
NTUsMHhFRSwweDIyLDB4MkEsMHgyQSwweDM3LAorICAgIDB4QjYsMHhGNiwweDMxLDB4QzUsMHhE
OCwweEQ4LDB4RDgsMHhEOCwweDk2LDB4RUUsMHgxNCwweEU2LDB4MDEsMHgwOSwweDBCLDB4MDks
CisgICAgMHg5NiwweEVFLDB4NzIsMHhDRCwweDU4LDB4NzgsMHg3OCwweDY4LDB4NzIsMHhDRCww
eDUxLDB4QzUsMHgyQSwweDlCLDB4QzIsMHg3QiwKKyAgICAweEQzLDB4RDUsMHhDRiwweEJDLDB4
MzcsMHgyRiwweDJBLDB4MEIsMHgzNCwweEU2LDB4RDMsMHhENSwweDNELDB4MzksMHgzQiwweEFG
LAorICAgIDB4OTYsMHhFRSwweDU1LDB4RTYsMHhDRiwweEFCLDB4QTEsMHhBQiwweDc2LDB4RUUs
MHg1NSwweEU2LDB4NTcsMHg1NywweDlDLDB4MUUsCisgICAgMHhENiwweEY2LDB4QjcsMHhFRSww
eDgwLDB4QTgsMHhFOCwweEEyLDB4RDcsMHhGNiwweEY2LDB4RUUsMHg4OCwweEEwLDB4MDAsMHgw
MCwKKyAgICAweEQ3LDB4RjYsMHhENiwweEVFLDB4QUEsMHhBOCwweEFBLDB4QUEsMHhENywweEY2
LDB4RjYsMHhFRSwweDIwLDB4MkEsMHhBOCwweDgwLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYs
MHg1OSwweEQ1LDB4RkQsMHhCRCwweEY3LDB4RjYsMHhENywweEY2LDB4RkYsMHhERiwweEFGLDB4
QTMsCisgICAgMHhENiwweEY2LDB4QjcsMHhFRSwweEE4LDB4RUEsMHhBMCwweEIwLDB4RDYsMHhG
NiwweEI2LDB4RUUsMHhEQiwweEZFLDB4QjIsMHg4MiwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEVF
LDB4QkYsMHhCRSwweDZFLDB4QUUsMHhGOCwweEY2LDB4RDcsMHhGNiwweEJGLDB4NTUsMHhERCww
eEQ5LAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg1RiwweEZGLDB4QkYsMHhFRiwweEY3LDB4
RjYsMHhENywweEY2LDB4QUEsMHhBQSwweEFFLDB4RTIsCisgICAgMHhGNywweEY2LDB4RDcsMHhG
NiwweDc2LDB4NzYsMHg3NiwweERELDB4NTQsMHhFNiwweDIzLDB4NDEsMHg1QywweDVDLDB4NUMs
MHg1OCwKKyAgICAweEM1LDB4NTksMHhBMiwweDM4LDB4QkYsMHhCRCwweEJELDB4MkIsMHgwNiww
eDYyLDB4MjMsMHg0OSwweEY1LDB4QkYsMHgwQiwweDAwLAorICAgIDB4MjYsMHg2QSwweEE1LDB4
NTksMHhGRCwweEZCLDB4QTAsMHg4MCwweEU1LDB4NjEsMHhBNSwweDU5LDB4QkYsMHg2NSwweEU2
LDB4MzgsCisgICAgMHg0NywweDZBLDB4RTYsMHg2MSwweDJGLDB4QTUsMHhGRiwweDBCLDB4NDcs
MHg3MiwweEU1LDB4NjEsMHgyQSwweDNFLDB4RDcsMHg1RSwKKyAgICAweDY4LDB4NzIsMHhFNSww
eDYxLDB4RTgsMHhGRSwweDU1LDB4NTUsMHg0NiwweDZBLDB4RTUsMHg2MSwweDhFLDB4QkYsMHhC
RCwweDU1LAorICAgIDB4QTgsMHg3QSwweEM1LDB4NjEsMHgwMiwweEFBLDB4RkYsMHg1RCwweDY4
LDB4NzIsMHhDNCwweDYxLDB4RTAsMHg3QSwweDU3LDB4NTUsCisgICAgMHg4OCwweDgyLDB4QTQs
MHg2MSwweEQ1LDB4QUQsMHg4RiwweDBCLDB4QTgsMHg4MiwweEE1LDB4NjksMHhGRSwweEZBLDB4
NkEsMHg3MCwKKyAgICAweDg1LDB4NjEsMHhFMywweDU4LDB4QjgsMHhGRSwweEJGLDB4QUYsMHg2
NywweDgyLDB4NjQsMHg2MSwweEJELDB4QjUsMHhBNSwweDI1LAorICAgIDB4QTgsMHg4QSwweDI2
LDB4ODIsMHg3RCwweEZELDB4QUIsMHgwMiwweDZBLDB4OUIsMHg0NiwweDgyLDB4RkQsMHhCRCww
eEJGLDB4MTcsCisgICAgMHhGNywweEZFLDB4OEYsMHhCQywweDA5LDB4MDksMHgwMywweDAzLDB4
RjcsMHhGRSwweDE3LDB4RjcsMHhGQSwweEVFLDB4QUUsMHhFRiwKKyAgICAweDE4LDB4RkYsMHhG
NywweEY2LDB4MkYsMHhBQiwweDgyLDB4QUEsMHgxNywweEZGLDB4RjcsMHhGNiwweEFBLDB4RkEs
MHg1RSwweDc2LAorICAgIDB4MTcsMHhGRiwweEQ3LDB4RjYsMHgyMCwweDBBLDB4MEIsMHg0Miww
eDE3LDB4RkYsMHhCNiwweEVFLDB4RTAsMHg3QywweERGLDB4NzUsCisgICAgMHgxOCwweEZGLDB4
QjYsMHhFRSwweDdELDB4RjcsMHhGRCwweDJCLDB4RjgsMHhGRSwweEYzLDB4REQsMHhFQSwweDdB
LDB4N0EsMHhDMCwKKyAgICAweEY4LDB4RkUsMHhEMywweEQ1LDB4MEIsMHgwOSwweDBCLDB4MDIs
MHhGNywweEZFLDB4NzYsMHhFRSwweDdFLDB4NzAsMHg2MCwweEMwLAorICAgIDB4NzYsMHhFRSww
eEY0LDB4REQsMHg3MCwweDQ4LDB4ODgsMHg4OCwweDc2LDB4RUUsMHhEMywweEQ1LDB4MkQsMHgy
RCwweDJGLDB4QkUsCisgICAgMHhGNywweEZFLDB4OTYsMHhFRSwweEFBLDB4OEIsMHgyOSwweDI5
LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhFQiwweEVDLDB4RkEsMHhBMCwKKyAgICAweEY3LDB4RjYs
MHhENywweEY2LDB4RjUsMHhGMywweEI5LDB4RDEsMHhGNywweEY2LDB4RDcsMHhGNiwweEI1LDB4
MkIsMHhFRiwweDc1LAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhENiwweEY2LDB4RjcsMHhG
RiwweEY3LDB4RjYsMHhENywweEY2LDB4QUEsMHhCRSwweEJGLDB4RjksCisgICAgMHhGNywweEY2
LDB4RDcsMHhGNiwweEE2LDB4QUYsMHhCQSwweENBLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg4MCww
eEEyLDB4MEEsMHhBQSwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4OEUsMHg4MiwweDg4LDB4
QjUsMHhGNywweEY2LDB4RDcsMHhGNiwweDA4LDB4MDAsMHhDOCwweDcyLAorICAgIDB4RjgsMHhG
NiwweEI3LDB4RUUsMHhGQSwweDc4LDB4RkUsMHg1RiwweEY4LDB4RjYsMHhCNywweEVFLDB4OEIs
MHg4QiwweEFCLDB4QjUsCisgICAgMHhCNiwweEVFLDB4NzYsMHhFNiwweDc2LDB4RjYsMHhCRSww
eEFDLDB4OTYsMHhFRSwweDc2LDB4RUUsMHgzNSwweDg4LDB4RDgsMHhENiwKKyAgICAweDk2LDB4
RjYsMHg1MSwweENELDB4RDgsMHhEOCwweEY4LDB4RDgsMHg5NiwweEVFLDB4MTQsMHhERSwweDg5
LDB4OEIsMHg4QiwweEFCLAorICAgIDB4NTUsMHhFRSwweDcyLDB4Q0QsMHg2MCwweDYwLDB4NDAs
MHg2MCwweDUxLDB4Q0QsMHhBRiwweEI0LDB4QTAsMHhFOCwweEY4LDB4N0UsCisgICAgMHgzNCww
eEU2LDB4RjAsMHhCQywweEE5LDB4MkQsMHgyOSwweDA5LDB4NTQsMHhFNiwweDE0LDB4RTYsMHhE
NywweERGLDB4QkEsMHg5QSwKKyAgICAweDk2LDB4RUUsMHg1NSwweEU2LDB4QTksMHgyQiwweDAz
LDB4MEYsMHhCNiwweEVFLDB4NTUsMHhFNiwweEY3LDB4RkYsMHhGNywweDI3LAorICAgIDB4RDcs
MHhGNiwweEI2LDB4RUUsMHhBQSwweEE4LDB4MEEsMHgwMiwweEQ3LDB4RjYsMHhCNiwweEVFLDB4
QUEsMHhBQSwweEFBLDB4QTgsCisgICAgMHhENiwweEY2LDB4QjcsMHhFRSwweEEyLDB4MjIsMHgy
MiwweDAyLDB4RjcsMHhGNiwweEI2LDB4RUUsMHhBQSwweEJBLDB4RUIsMHhCQiwKKyAgICAweEQ3
LDB4RjYsMHhGNywweEVFLDB4QTAsMHg4MCwweDI4LDB4OEEsMHhGNywweEY2LDB4RDcsMHhGNiww
eEVCLDB4NkQsMHg1NiwweDVFLAorICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHhFQSwweEFBLDB4
QUYsMHhGRiwweEQ3LDB4RjYsMHhGNiwweEVFLDB4ODgsMHg4MCwweEEyLDB4ODAsCisgICAgMHhG
NywweEY2LDB4QjYsMHhFRSwweEY2LDB4RkEsMHhGQSwweEFBLDB4RjcsMHhGNiwweEQ3LDB4RjYs
MHhFOSwweEZELDB4RTAsMHg4QSwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4QUEsMHhBQSww
eEJFLDB4QUUsMHhGNywweEY2LDB4RDcsMHhGNiwweEE5LDB4QUYsMHhFQiwweEFBLAorICAgIDB4
RjcsMHhGNiwweDk3LDB4RjYsMHgyMiwweEE4LDB4QzgsMHg2QSwweDc1LDB4RUUsMHhBNCwweDU5
LDB4NzgsMHg3OCwweDdDLDB4RkUsCisgICAgMHhBNywweDdBLDB4ODMsMHg1MSwweEY1LDB4QkYs
MHgyQSwweDA4LDB4MDksMHg4QiwweDA2LDB4NkEsMHg1NSwweEZGLDB4RUIsMHgwMiwKKyAgICAw
eEU5LDB4ODIsMHgyNiwweDZBLDB4NTUsMHg3RiwweEZBLDB4ODgsMHg4NywweDcyLDB4QzQsMHg1
OSwweDdGLDB4NTcsMHg3RSwweDcwLAorICAgIDB4QzgsMHg3QSwweEE0LDB4NTksMHhBRiwweDJC
LDB4MjUsMHhBRCwweDg4LDB4NzIsMHhFNSwweDYxLDB4NTgsMHg1OCwweDc4LDB4NUMsCisgICAg
MHgwNSwweDYyLDB4QTQsMHg1OSwweEJGLDB4MkYsMHgyNywweEZGLDB4MjcsMHg2QSwweEU1LDB4
NjEsMHg1NSwweEQ1LDB4NzAsMHg1NSwKKyAgICAweDA2LDB4NjIsMHg4NCwweDU5LDB4NjIsMHg3
OCwweEFBLDB4MDgsMHhDOCwweDgyLDB4QTQsMHg1OSwweDk1LDB4MjUsMHgyRiwweDBBLAorICAg
IDB4QUMsMHhBMywweDg3LDB4N0EsMHhGNSwweEFCLDB4MkEsMHgwMiwweDZCLDB4QTMsMHhFNiww
eDcxLDB4N0EsMHhFQSwweEFDLDB4MjgsCisgICAgMHgyQSwweDlCLDB4QzUsMHg2OSwweDU1LDB4
N0IsMHhFMCwweDAwLDB4OEIsMHhBMywweEU1LDB4NzEsMHhCNSwweEI1LDB4QkYsMHhGMCwKKyAg
ICAweEM5LDB4OTIsMHhDNSwweDY5LDB4QTAsMHhFOCwweEZBLDB4N0UsMHg3NiwweEY2LDB4NDYs
MHg3MiwweDk1LDB4QjUsMHgyNSwweDBELAorICAgIDB4RjcsMHhGRSwweDM1LDB4RUUsMHgwMSww
eDAyLDB4MDAsMHgwMCwweEY4LDB4RkUsMHgxNywweEY3LDB4RjksMHhGQiwweENFLDB4QkUsCisg
ICAgMHgxNywweEZGLDB4RjcsMHhGNiwweENBLDB4RUEsMHhFQSwweERBLDB4MTcsMHhGRiwweEQ3
LDB4RjYsMHhFQSwweEFFLDB4OEEsMHg2QSwKKyAgICAweDE4LDB4RkYsMHg5NiwweEU2LDB4RTIs
MHhCOCwweEZFLDB4N0YsMHhENywweEY2LDB4MTQsMHhERSwweDAwLDB4MjAsMHhFQSwweDdFLAor
ICAgIDB4MzgsMHhGRiwweDM0LDB4REUsMHgwMiwweDBBLDB4MjksMHgwOSwweDM4LDB4RkYsMHg1
NSwweEU2LDB4NzAsMHhFOCwweEE4LDB4QTAsCisgICAgMHgxOCwweEZGLDB4QjcsMHhFRSwweDJE
LDB4MjksMHhBQSwweDBGLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHg2QSwweEVBLDB4QUEsMHg4OCwK
KyAgICAweEQ3LDB4RjYsMHg1NSwweEU2LDB4RDcsMHg1RSwweDdDLDB4NzgsMHg3NiwweEVFLDB4
MTQsMHhFNiwweERFLDB4NUEsMHhFQSwweEVBLAorICAgIDB4RjgsMHhGRSwweDU1LDB4RTYsMHg4
OSwweDJELDB4MkQsMHhBNSwweDE4LDB4RkYsMHhENywweEY2LDB4QTksMHhCRCwweEJGLDB4RkYs
CisgICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweDVGLDB4N0UsMHhGQSwweEFCLDB4RjcsMHhGNiww
eEQ3LDB4RjYsMHg3NSwweDU1LDB4NTcsMHhGOCwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4
QTcsMHg2RCwweDZELDB4QUIsMHgxNywweEY3LDB4RDcsMHhGNiwweDdELDB4RDUsMHhGRCwweEFB
LAorICAgIDB4RjgsMHhGRSwweEQ3LDB4RUUsMHg3RiwweEJGLDB4QUEsMHgyOCwweDE4LDB4RkYs
MHhENywweEY2LDB4RkQsMHhGQSwweEFCLDB4RkEsCisgICAgMHhEOCwweEZFLDB4RjcsMHhGNiww
eDU1LDB4NTUsMHhGNSwweERELDB4RjcsMHhGNiwweEI3LDB4RUUsMHhFOCwweEU4LDB4RkEsMHg3
QSwKKyAgICAweEI2LDB4RUUsMHg1NiwweEU2LDB4QTAsMHhBOCwweDI4LDB4MkMsMHhENywweEY2
LDB4OTYsMHhFRSwweDA3LDB4MDMsMHgwMiwweDAwLAorICAgIDB4QjYsMHhGNiwweDU2LDB4RUUs
MHhCQSwweDdFLDB4RUEsMHhFRSwweDk2LDB4RUUsMHgzNSwweEU2LDB4ODgsMHgyQiwweDJBLDB4
MkEsCisgICAgMHg3NiwweEVFLDB4NzIsMHhDRCwweEQ4LDB4RDAsMHhEOCwweEY4LDB4OTYsMHhF
RSwweDE1LDB4RTYsMHg4QiwweDg5LDB4QUYsMHhFOSwKKyAgICAweDU2LDB4RUUsMHhCMywweEQ1
LDB4NjAsMHg2MCwweDZBLDB4NkEsMHhGMSwweEM0LDB4NkUsMHhBQywweEU4LDB4RjgsMHg3RSww
eERDLAorICAgIDB4MzQsMHhFNiwweEVGLDB4QzQsMHgyOSwweDA5LDB4MEIsMHgwQiwweDU1LDB4
RTYsMHgxNCwweERFLDB4QkUsMHg5NywweEZFLDB4M0UsCisgICAgMHg5NiwweEVFLDB4MzUsMHhF
NiwweDBCLDB4M0IsMHg1NywweDVGLDB4RDcsMHhGNiwweDM1LDB4RTYsMHgyRiwweDJGLDB4OEQs
MHgyQiwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4MDIsMHgwMCwweEUyLDB4MDIsMHhENiww
eEY2LDB4QjYsMHhFRSwweDIyLDB4Q0EsMHg4OCwweEE4LAorICAgIDB4RDYsMHhGNiwweEI2LDB4
RUUsMHgwMiwweDJCLDB4QUEsMHg4OCwweEQ3LDB4RjYsMHhENiwweEVFLDB4QUEsMHhBMiwweEFB
LDB4MkEsCisgICAgMHhENywweEY2LDB4RjYsMHhFRSwweDgyLDB4MEEsMHg4MCwweDBBLDB4RDYs
MHhGNiwweEY3LDB4RUUsMHgwOCwweDgyLDB4ODIsMHgwOCwKKyAgICAweEQ2LDB4RjYsMHhCNiww
eEVFLDB4QkEsMHhCRSwweEZFLDB4RkMsMHhENiwweEY2LDB4QjYsMHhFRSwweDAyLDB4MjMsMHhB
QiwweEFBLAorICAgIDB4RDYsMHhGNiwweEY3LDB4RUUsMHhBOCwweEEyLDB4QTAsMHgwOCwweEY3
LDB4RjYsMHhENiwweEY2LDB4MDgsMHgwMiwweDhGLDB4RkQsCisgICAgMHhGNywweEY2LDB4RDYs
MHhGNiwweEI4LDB4MDIsMHgwMCwweEFCLDB4RDcsMHhGRSwweEY3LDB4RjYsMHhCRCwweEY3LDB4
RDUsMHhGNSwKKyAgICAweEQ3LDB4RjYsMHgxMywweEU2LDB4QzAsMHhDMCwweDQwLDB4NDAsMHg4
RCwweEI0LDB4ODYsMHg3MiwweDVDLDB4NUMsMHg1NiwweDU2LAorICAgIDB4QTgsMHg3QSwweDA2
LDB4NkEsMHgyQSwweEVGLDB4RkYsMHg1QywweEU4LDB4OEEsMHhFNSwweDYxLDB4MDIsMHhBQSww
eDVGLDB4NzUsCisgICAgMHhDOCwweDgyLDB4MDUsMHg2MiwweEE4LDB4RkUsMHhGNSwweERELDB4
ODcsMHg3MiwweDg0LDB4NTEsMHhFOCwweDdBLDB4N0UsMHg3RSwKKyAgICAweEU1LDB4NjEsMHg0
MywweDQ5LDB4MDIsMHhBQiwweEQ3LDB4REYsMHhFNiwweDYxLDB4ODQsMHg1MSwweEFBLDB4QUIs
MHhFNSwweDI5LAorICAgIDB4MjYsMHg2QSwweEE1LDB4NTksMHg1RiwweEJGLDB4QUYsMHgzRiww
eDY3LDB4NzIsMHhDNSwweDU5LDB4RjUsMHhGRCwweEE3LDB4MkIsCisgICAgMHgyOSwweDkzLDB4
RTUsMHg2MSwweEQ1LDB4RkYsMHgyQiwweDBCLDB4NEEsMHg5QiwweDY2LDB4N0EsMHhBRCwweDJC
LDB4OEEsMHgwMiwKKyAgICAweDJFLDB4QkMsMHg0QSwweDlCLDB4MkQsMHgyRCwweDJELDB4M0Qs
MHg4RiwweEM0LDB4MkEsMHg5QiwweDVGLDB4RTgsMHg4MCwweDAwLAorICAgIDB4RUMsMHhBQiww
eEM5LDB4OEEsMHg5RCwweEQ3LDB4RkUsMHhGOCwweEFDLDB4QUIsMHgwNSwweDZBLDB4RTAsMHhF
OCwweEZBLDB4NUYsCisgICAgMHgzMCwweENELDB4MjYsMHg3MiwweDU1LDB4RDUsMHhCNSwweDJE
LDB4RDcsMHhGRSwweDJBLDB4OTMsMHgwOSwweDBCLDB4MDIsMHgwMCwKKyAgICAweDE4LDB4RkYs
MHhGNywweEY2LDB4RUUsMHhFQiwweDgzLDB4QUIsMHgxNywweEZGLDB4RjcsMHhGNiwweEFCLDB4
QkYsMHhBRSwweEVBLAorICAgIDB4MTcsMHhGRiwweEQ3LDB4RjYsMHhCQSwweEJFLDB4QUUsMHhG
QSwweDE4LDB4RjcsMHg5NSwweEVFLDB4NjAsMHg3QywweDVFLDB4QjUsCisgICAgMHgxNywweEZG
LDB4NzUsMHhFNiwweDc3LDB4RjcsMHhBQiwweDAwLDB4MTcsMHhGRiwweEIzLDB4RDUsMHg3RSww
eEZBLDB4QTgsMHhBMCwKKyAgICAweDE4LDB4RkYsMHg3NSwweEU2LDB4MDEsMHgwMiwweDAwLDB4
MDAsMHgzOSwweEZGLDB4RDcsMHhGNiwweDcwLDB4RjAsMHhFOCwweEUwLAorICAgIDB4MTgsMHhG
RiwweEQ3LDB4RjYsMHhBRCwweDJGLDB4QUYsMHhFRiwweDE4LDB4RkYsMHhGOCwweEY2LDB4RUUs
MHhERCwweEFCLDB4QkIsCisgICAgMHhGOCwweEZFLDB4NTUsMHhFNiwweDc4LDB4NjAsMHhDMCww
eDgwLDB4NzUsMHhFRSwweDM0LDB4RTYsMHg2QSwweEVBLDB4RUEsMHhGOCwKKyAgICAweEQ3LDB4
RjYsMHgzNCwweEU2LDB4MkYsMHgzNSwweEJELDB4QkYsMHhGNywweEY2LDB4QjcsMHhGNiwweDIw
LDB4QUEsMHhBQiwweEFCLAorICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGNSwweEQ1LDB4QkYs
MHg1NSwweEY4LDB4RjYsMHhENywweEY2LDB4M0EsMHhCQywweEUwLDB4MDAsCisgICAgMHgxOCww
eEZGLDB4RjgsMHhGNiwweDU3LDB4NkIsMHhENSwweDU1LDB4RjgsMHhGRSwweEY3LDB4RjYsMHhE
NSwweEQ1LDB4NUYsMHg1RiwKKyAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4NzUsMHhGNywweEZE
LDB4RDUsMHhGNywweEY2LDB4RDgsMHhGNiwweDAwLDB4MDAsMHhBOCwweEU4LAorICAgIDB4Rjcs
MHhGNiwweEQ3LDB4RjYsMHhFOCwweDdBLDB4RkEsMHg3QSwweEQ3LDB4RjYsMHg5NiwweEVFLDB4
QjAsMHhFOCwweEYyLDB4N0EsCisgICAgMHhENywweEVFLDB4NzUsMHhFRSwweDJGLDB4QkYsMHgz
NywweEI3LDB4RDcsMHhGNiwweEI2LDB4RUUsMHgwMCwweDAwLDB4QkUsMHhFQSwKKyAgICAweDk2
LDB4RUUsMHgzNSwweEU2LDB4MkEsMHhBQywweEE2LDB4OTYsMHg3NiwweEVFLDB4NTUsMHhFNiww
eDA4LDB4MkUsMHgzOCwweDBBLAorICAgIDB4NzYsMHhFRSwweDkyLDB4Q0QsMHhEOCwweEQ4LDB4
RDgsMHhEOCwweDc2LDB4RUUsMHgxNCwweERFLDB4QzksMHhDMSwweEE5LDB4RUIsCisgICAgMHgz
NSwweEU2LDB4QjMsMHhENSwweDY4LDB4NkEsMHg2RSwweDdFLDB4NTEsMHhDRCwweEVDLDB4QTMs
MHhCRSwweDk2LDB4OTcsMHgzNiwKKyAgICAweDk1LDB4RUUsMHg3MiwweEQ1LDB4QUQsMHhBOSww
eDhGLDB4MEIsMHhCNywweEY2LDB4MTQsMHhERSwweEI3LDB4MzcsMHgyRiwweEE4LAorICAgIDB4
QjcsMHhGNiwweDM1LDB4RTYsMHhGRiwweEY4LDB4QkUsMHg1NywweEI2LDB4RUUsMHg1NSwweEVF
LDB4MDMsMHg4QSwweEFBLDB4N0IsCisgICAgMHhGNywweEY2LDB4QjYsMHhFRSwweDhGLDB4RUYs
MHhFRiwweEFCLDB4RDcsMHhGNiwweEQ2LDB4RUUsMHhBQSwweEFBLDB4QUEsMHhBQSwKKyAgICAw
eEQ2LDB4RjYsMHhGNiwweEVFLDB4MDAsMHhBMCwweEEwLDB4ODIsMHhENywweEY2LDB4RDYsMHhF
RSwweEFBLDB4QUEsMHgyQSwweDJBLAorICAgIDB4RDYsMHhGNiwweEQ3LDB4RUUsMHgyQSwweEEy
LDB4QUEsMHg4QSwweEQ2LDB4RjYsMHhENiwweEVFLDB4OEEsMHhBQSwweDJBLDB4QTIsCisgICAg
MHhENiwweEY2LDB4QjYsMHhFRSwweEFFLDB4REMsMHhGQiwweEJBLDB4RDYsMHhGNiwweEI2LDB4
RUUsMHhFRiwweEJBLDB4RUUsMHhCQiwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4MEEsMHg4
MywweEJBLDB4QUUsMHhENiwweEY2LDB4QjYsMHhFRSwweDAwLDB4ODIsMHg4MCwweEFBLAorICAg
IDB4RDYsMHhGNiwweEY3LDB4RUUsMHhBOCwweEFBLDB4ODAsMHgwMCwweEQ3LDB4RkUsMHhGNiww
eEVFLDB4QUIsMHhBQiwweDNFLDB4MkEsCisgICAgMHhCNiwweEY2LDB4NDksMHg4QiwweDgwLDB4
RTAsMHg2MCwweDYwLDB4NDksMHg4QiwweDQzLDB4NDksMHhBOCwweEZFLDB4NUYsMHg1RiwKKyAg
ICAweDg3LDB4NzIsMHhFMiwweDM4LDB4QTgsMHhBRSwweERGLDB4NTUsMHgwNiwweDYyLDB4MjMs
MHg0MSwweDAwLDB4MkEsMHhGRiwweDU1LAorICAgIDB4MDUsMHg2MiwweEUyLDB4MzgsMHhBMCww
eEVFLDB4REYsMHg1NSwweEE0LDB4NTksMHgwMiwweDM5LDB4ODAsMHhBQSwweEJELDB4QjUsCisg
ICAgMHhBOCwweDdBLDB4NDQsMHg1MSwweEY1LDB4QUQsMHgwQiwweDBCLDB4ODcsMHg3QSwweEU1
LDB4NjEsMHg1NSwweDdFLDB4RjgsMHg3OCwKKyAgICAweDI3LDB4NkEsMHhFNSwweDYxLDB4REMs
MHg3MCwweEQ3LDB4QjcsMHhDQywweEEzLDB4MjYsMHg2QSwweEY1LDB4QUQsMHgyRCwweEFELAor
ICAgIDB4MkQsMHhCNCwweDI5LDB4OTMsMHg1NSwweEZGLDB4ODIsMHgwQSwweDRELDB4QkMsMHgy
OSwweDlCLDB4RDUsMHhENSwweDdFLDB4RjgsCisgICAgMHgwRCwweEI0LDB4MjksMHg5MywweDJC
LDB4M0YsMHhGNSwweDVGLDB4QUYsMHhDQywweDhCLDB4QTMsMHg4MiwweEFCLDB4REQsMHg1NSwK
KyAgICAweEVDLDB4QUIsMHg2NywweDdBLDB4RjgsMHg3OCwweDU4LDB4NUUsMHhFQywweEFCLDB4
MDYsMHg3MiwweDU3LDB4NTUsMHhENSwweDNGLAorICAgIDB4RDcsMHhGRSwweEU4LDB4ODIsMHgy
RCwweDI5LDB4MEIsMHgwMiwweDE4LDB4RkYsMHhGNywweEZFLDB4QkQsMHhBRiwweDA5LDB4MDEs
CisgICAgMHgxNywweEZGLDB4RjgsMHhGNiwweEEyLDB4MDgsMHhBMiwweEE4LDB4MTcsMHhGRiww
eEY3LDB4RjYsMHg3QSwweEZBLDB4QUUsMHg2QSwKKyAgICAweDE4LDB4RkYsMHhCNywweEVFLDB4
NzgsMHhEQSwweEJFLDB4QUYsMHgzOSwweEZGLDB4RDYsMHhGNiwweEY1LDB4QUYsMHhBQiwweDBB
LAorICAgIDB4NTksMHhGRiwweEQ3LDB4RkUsMHhBQSwweEFBLDB4OEEsMHg2MCwweEY4LDB4RkUs
MHhGNCwweERELDB4QjgsMHgxQywweDM2LDB4MkYsCisgICAgMHgzOCwweEZGLDB4MTgsMHhGRiww
eEJELDB4QkQsMHhCRCwweEZELDB4MzksMHhGRiwweEY4LDB4RjYsMHhFOCwweDc4LDB4N0EsMHg1
QSwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4QTUsMHhBNSwweEVELDB4RUQsMHgxOCwweEZG
LDB4RjgsMHhGNiwweEZGLDB4QUIsMHgwQiwweEFELAorICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYs
MHhFMiwweEEyLDB4QTIsMHhBMCwweEY3LDB4RjYsMHg1NSwweEU2LDB4NTcsMHg3RSwweEY4LDB4
RTgsCisgICAgMHhCNiwweEY2LDB4NTUsMHhFNiwweDM1LDB4QjcsMHhCQiwweEFFLDB4RjcsMHhG
NiwweEI3LDB4RjYsMHg4QiwweDg5LDB4MEQsMHgyQiwKKyAgICAweEY3LDB4RjYsMHhENywweEY2
LDB4MDAsMHgwQiwweDJCLDB4MEEsMHhENywweEZFLDB4RjgsMHhGNiwweDdELDB4REYsMHg1RCww
eDU1LAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg4OCwweDAyLDB4MDAsMHg4MiwweEY3LDB4
RjYsMHhENywweEY2LDB4MDgsMHgyQiwweDVGLDB4NzgsCisgICAgMHhGNywweEY2LDB4RDcsMHhG
NiwweDM4LDB4QUEsMHhGQSwweEVBLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhGOCwweDdBLDB4N0Is
MHg3RiwKKyAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4QjIsMHhGQSwweEZCLDB4N0YsMHhENyww
eEY2LDB4NTUsMHhFNiwweEU4LDB4N0EsMHg3QSwweDVGLAorICAgIDB4RDcsMHhGNiwweDU1LDB4
RUUsMHgyRCwweDJELDB4MkQsMHgyQiwweEQ3LDB4RjYsMHg5NiwweEY2LDB4QUEsMHhFOCwweEE4
LDB4NkEsCisgICAgMHg3NSwweEVFLDB4RDMsMHhENSwweDJDLDB4QkMsMHhCNiwweEY2LDB4OTYs
MHhFRSwweDU1LDB4RTYsMHhBQiwweEJGLDB4QUIsMHhBRCwKKyAgICAweDU1LDB4RTYsMHg5Miww
eEQ1LDB4RDgsMHhGOCwweEQ4LDB4RDgsMHg3NiwweEVFLDB4RjMsMHhERCwweDhCLDB4QUIsMHhB
QiwweEE5LAorICAgIDB4MzQsMHhFRSwweEIzLDB4REQsMHhGRSwweDZBLDB4N0UsMHg3QywweDcy
LDB4RDUsMHg2RSwweEFDLDB4MzcsMHgzRiwweDJFLDB4MkEsCisgICAgMHg5NiwweEY2LDB4MzEs
MHhDRCwweDBCLDB4QUYsMHhGRiwweDc3LDB4NTUsMHhFRSwweDMxLDB4Q0QsMHhBMCwweEZBLDB4
RkYsMHg1NSwKKyAgICAweEYzLDB4REQsMHg1MSwweENELDB4QTgsMHgyRiwweEFELDB4MkIsMHg3
NSwweEVFLDB4RjQsMHhERCwweDgxLDB4QkIsMHhGOSwweEFGLAorICAgIDB4RDYsMHhGNiwweEYy
LDB4REQsMHgwMCwweDAwLDB4MDgsMHhBRCwweEY3LDB4RjYsMHhCNiwweEVFLDB4QUIsMHhBQiww
eEFGLDB4RkYsCisgICAgMHhENiwweEY2LDB4QjcsMHhFRSwweDA4LDB4MDIsMHgwQSwweDA4LDB4
RDYsMHhGNiwweEY3LDB4RUUsMHhBMCwweDAyLDB4ODIsMHgyQywKKyAgICAweEQ2LDB4RjYsMHhG
NiwweEVFLDB4MDAsMHgwQSwweDg4LDB4MDAsMHhENiwweEY2LDB4RjcsMHhFRSwweDI4LDB4MDAs
MHg4OCwweDI4LAorICAgIDB4RjYsMHhGNiwweEI2LDB4RUUsMHg3RiwweEJCLDB4QUEsMHhCQSww
eEQ2LDB4RjYsMHhCNiwweEVFLDB4RUYsMHg4OCwweDAwLDB4MDAsCisgICAgMHhENiwweEY2LDB4
QjYsMHhFRSwweEZGLDB4M0IsMHgyMCwweDgwLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBQiwweEZC
LDB4QTIsMHhBMCwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4MDIsMHgwMiwweDAwLDB4MkEs
MHhENiwweEY2LDB4QjYsMHhGNiwweEEwLDB4RTAsMHhDOCwweEU4LAorICAgIDB4NzUsMHhFRSww
eDg2LDB4NzIsMHhFMCwweDYwLDB4NjAsMHg3MCwweDA1LDB4NjIsMHhDMiwweDMwLDB4RTgsMHhF
QywweEZBLDB4N0UsCisgICAgMHgwMiwweDM5LDB4QTEsMHgyOCwweDdDLDB4RkYsMHg3RSwweDU2
LDB4MDMsMHgzOSwweEExLDB4MjgsMHhBQiwweEZGLDB4M0YsMHhGNSwKKyAgICAweDIzLDB4NDEs
MHhDMiwweDMwLDB4RUYsMHgyOSwweDI5LDB4QUYsMHhFNSwweDY5LDB4MjMsMHg0MSwweEY1LDB4
QjUsMHgzNSwweDNELAorICAgIDB4MDksMHg5MywweDA2LDB4NkEsMHhBRCwweEFCLDB4ODIsMHgw
MiwweDg3LDB4N0EsMHgyMywweDQxLDB4RTgsMHhGQSwweDVFLDB4NUMsCisgICAgMHhDNSwweDYx
LDB4MDMsMHg0MSwweDAwLDB4MEYsMHhCNSwweEQ1LDB4MjksMHg5MywweDg0LDB4NTEsMHgyQiww
eEFCLDB4QkYsMHhGRCwKKyAgICAweENDLDB4QUIsMHg0NywweDcyLDB4MEEsMHhBQiwweEI3LDB4
RjUsMHgwRCwweEI0LDB4MkEsMHg5MywweDgwLDB4ODIsMHhBQiwweEFELAorICAgIDB4QUIsMHhB
QiwweDA5LDB4OEIsMHg3OCwweEUwLDB4RTIsMHg2MCwweDI5LDB4OTMsMHg2NywweDdBLDB4ODAs
MHhFRSwweDVFLDB4NTcsCisgICAgMHhFQywweEFCLDB4NjcsMHg3QSwweDU3LDB4RkYsMHhBRCww
eDJELDB4OEUsMHhCQywweEE4LDB4ODIsMHgzNSwweDNELDB4QkYsMHhCRiwKKyAgICAweEQ3LDB4
RkUsMHhFRiwweEM0LDB4MDIsMHgwMywweDAzLDB4MkQsMHgxOCwweEZGLDB4RjcsMHhGRSwweDJF
LDB4QTYsMHhBRSwweEJELAorICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHhBMiwweDgyLDB4MDIs
MHhDQSwweDE4LDB4RkYsMHhCNiwweEVFLDB4RTAsMHhCOCwweEZFLDB4N0UsCisgICAgMHgzOCww
eEZGLDB4QjYsMHhFRSwweEJGLDB4RUYsMHhCRiwweDM1LDB4NTksMHhGRiwweDE4LDB4RkYsMHhB
NSwweEE5LDB4QUEsMHg4QSwKKyAgICAweDM5LDB4RkYsMHg5NiwweEVFLDB4RTAsMHg2MCwweDc4
LDB4NTgsMHgxOCwweEZGLDB4NTUsMHhFNiwweDM3LDB4QTcsMHgyNywweDJELAorICAgIDB4Mzks
MHhGRiwweDE4LDB4RkYsMHhGNSwweEJELDB4RDUsMHhENSwweDM5LDB4RkYsMHhGOCwweEY2LDB4
RkEsMHhGQSwweEZDLDB4RkEsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweDdFLDB4N0YsMHg1
NywweDk2LDB4MTgsMHhGRiwweEY4LDB4RjYsMHgyQiwweEVCLDB4RUUsMHhBQiwKKyAgICAweDE4
LDB4RkYsMHhGOCwweEY2LDB4NjIsMHhFQSwweENBLDB4RUEsMHhGNywweEY2LDB4OTYsMHhFRSww
eDVBLDB4RkEsMHhGOCwweEI4LAorICAgIDB4RDcsMHhGNiwweDc1LDB4RUUsMHhERiwweEZFLDB4
QjgsMHhBMCwweEY4LDB4RjYsMHhCNiwweEY2LDB4MDksMHgwRCwweDI1LDB4MzcsCisgICAgMHgx
OCwweEZGLDB4RDcsMHhGNiwweEFGLDB4QkYsMHgzRSwweEJGLDB4MTgsMHhGRiwweEY3LDB4RjYs
MHg1NywweDdFLDB4ODAsMHhBQSwKKyAgICAweDE4LDB4RkYsMHhENywweEY2LDB4REYsMHhBQiww
eEJBLDB4QUEsMHhGOCwweEZFLDB4RjcsMHhGNiwweDdGLDB4RkYsMHhGRCwweEZGLAorICAgIDB4
RjcsMHhGNiwweEI2LDB4RjYsMHhBMiwweDY4LDB4N0EsMHg1QSwweEQ3LDB4RjYsMHg3NiwweEVF
LDB4ODAsMHhFQiwweDdFLDB4N0EsCisgICAgMHhCNiwweEY2LDB4NTUsMHhFNiwweDg4LDB4N0Us
MHg3RiwweEZCLDB4OTYsMHhFRSwweDU1LDB4RTYsMHhENiwweEE1LDB4MkQsMHgwMiwKKyAgICAw
eEQ3LDB4RjYsMHg3NiwweEVFLDB4OEQsMHg4RiwweDJGLDB4QUYsMHhCNiwweEY2LDB4OTYsMHhF
RSwweDVFLDB4RUYsMHgyQiwweEU1LAorICAgIDB4NTUsMHhFNiwweEIzLDB4RDUsMHhCNCwweEJF
LDB4RjQsMHhCRSwweDc1LDB4RUUsMHgzNSwweEU2LDB4ODMsMHg4RCwweEY5LDB4QUQsCisgICAg
MHg1NSwweEVFLDB4OTIsMHhENSwweEZDLDB4REMsMHhEQywweERFLDB4NTUsMHhFRSwweDUxLDB4
Q0QsMHgwMiwweEEyLDB4RkEsMHg1QSwKKyAgICAweDE0LDB4RTYsMHg3MiwweENELDB4QTAsMHg4
MCwweDgyLDB4QTksMHg1MSwweENELDB4NkUsMHhCNCwweDI4LDB4MkUsMHgyRSwweDM2LAorICAg
IDB4NzIsMHhDRCwweDMxLDB4QzUsMHg4MCwweEUwLDB4NUMsMHg1QywweDkyLDB4RDUsMHgzMCww
eEM1LDB4MzcsMHgyRCwweDBGLDB4MkQsCisgICAgMHhGNCwweERELDB4OTIsMHhENSwweEJELDB4
QTUsMHhBNSwweDJELDB4NTUsMHhFNiwweEQzLDB4REQsMHgyQiwweEE3LDB4QjcsMHg3NSwKKyAg
ICAweDkyLDB4RDUsMHhFOCwweDgyLDB4MkYsMHhENSwweDU1LDB4NTUsMHg5NSwweEVFLDB4MDgs
MHg4MywweDAwLDB4QUQsMHhENSwweDU1LAorICAgIDB4QjUsMHhGNiwweDI4LDB4ODMsMHgwMCww
eDAwLDB4MkYsMHhENSwweEI2LDB4RjYsMHg2RCwweEI0LDB4MDAsMHgwMCwweDAwLDB4MkQsCisg
ICAgMHhGNywweEY2LDB4OTUsMHhGNiwweEFBLDB4MkIsMHhBQSwweEJELDB4RjcsMHhGNiwweEQ2
LDB4RjYsMHhERCwweDlGLDB4NUQsMHg3NSwKKyAgICAweEY3LDB4RjYsMHhCNiwweEY2LDB4QUEs
MHgzOCwweEJCLDB4N0YsMHhGNiwweEY2LDB4RDYsMHhGNiwweEY1LDB4N0UsMHhGNywweDVELAor
ICAgIDB4RjYsMHhGNiwweEQ2LDB4RjYsMHg3QiwweDU3LDB4NTYsMHg1NywweEY3LDB4RkUsMHhE
NiwweEY2LDB4NUYsMHhGQiwweDU1LDB4NTcsCisgICAgMHhENiwweEY2LDB4QjYsMHhGNiwweDNB
LDB4QTIsMHgwMCwweDAwLDB4RjcsMHhGNiwweEI2LDB4RjYsMHhGRiwweEZGLDB4RUEsMHhBQSwK
KyAgICAweDc1LDB4RUUsMHgyNiwweDYyLDB4NzAsMHg3MCwweDcwLDB4NjAsMHg4NCwweDQ5LDB4
RTIsMHgzMCwweEY4LDB4N0MsMHg3RSwweEZFLAorICAgIDB4MDMsMHgzOSwweDYxLDB4MjAsMHhG
RSwweDVFLDB4REEsMHg4MCwweDAyLDB4MzksMHg4MSwweDIwLDB4QUQsMHhCRCwweDJCLDB4MkEs
CisgICAgMHgwMiwweDM5LDB4QzIsMHgzMCwweEJFLDB4MkYsMHhCQiwweEYwLDB4NDYsMHg3QSww
eDAzLDB4NDEsMHhCRCwweDM1LDB4M0QsMHgyRCwKKyAgICAweDA5LDB4OTMsMHg2NywweDdBLDB4
ODMsMHg4MywweENCLDB4N0YsMHg0NywweDcyLDB4RTIsMHgzOCwweDc4LDB4NUMsMHg3QywweDVF
LAorICAgIDB4NDQsMHg0OSwweEMyLDB4MzAsMHgzRiwweDM1LDB4QkQsMHhCRCwweEU1LDB4NjEs
MHhBMSwweDMwLDB4MDIsMHgwQSwweEFBLDB4NTUsCisgICAgMHhFOCwweDgyLDB4RTMsMHg0MCww
eDJBLDB4MEEsMHhBRiwweEQ1LDB4OEEsMHhBMywweEU1LDB4NjEsMHgwQSwweEFBLDB4QUIsMHhC
RCwKKyAgICAweEFCLDB4QTMsMHhDOCwweDgyLDB4RTAsMHhGQSwweDdCLDB4NTUsMHhFOSwweDhB
LDB4NDYsMHg3QSwweDlGLDB4QjcsMHhBRiwweDJGLAorICAgIDB4RUIsMHhBMywweEU5LDB4OEEs
MHgyRCwweDJELDB4RjcsMHhENywweEVDLDB4QUIsMHg4OCwweDdBLDB4RjgsMHg3MCwweDZBLDB4
RkUsCisgICAgMHhFRiwweEM0LDB4MDYsMHg2QSwweDJGLDB4RjUsMHg1NSwweDU3LDB4QjYsMHhG
NiwweDI1LDB4NkEsMHgwMCwweDJELDB4MzUsMHhCNSwKKyAgICAweDE4LDB4RkYsMHg3NSwweEVF
LDB4QTAsMHhFMiwweEZGLDB4RkQsMHhENiwweEY2LDB4OTYsMHhFRSwweEFBLDB4QUUsMHhDRiww
eDM4LAorICAgIDB4NTksMHhGRiwweEI3LDB4RUUsMHhBRCwweDBELDB4OEIsMHgyMiwweDU5LDB4
RkYsMHgxOCwweEZGLDB4RUEsMHhFOCwweEZFLDB4N0EsCisgICAgMHhGNywweEZFLDB4NTUsMHhF
NiwweEYwLDB4N0MsMHg1QywweDVGLDB4RjgsMHhGRSwweDU1LDB4RTYsMHgwRCwweDJELDB4MEQs
MHgwRCwKKyAgICAweDM5LDB4RkYsMHhGOCwweEY2LDB4QUIsMHhBQiwweDI5LDB4QUYsMHgzOSww
eEZGLDB4RjgsMHhGNiwweEVBLDB4RkEsMHg2QSwweEVBLAorICAgIDB4MTgsMHhGRiwweEY4LDB4
RjYsMHg3RCwweEI3LDB4NUUsMHhEQiwweDE4LDB4RkYsMHhGOCwweEY2LDB4QUYsMHhGQiwweEZE
LDB4RjcsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEZBLDB4NkEsMHhFRiwweDVGLDB4Rjcs
MHhGNiwweDk3LDB4RUUsMHhBOCwweEE4LDB4QUEsMHhBMiwKKyAgICAweEY3LDB4RjYsMHhENyww
eEY2LDB4NTUsMHg1RiwweEFCLDB4QUEsMHhGOCwweEY2LDB4QjcsMHhGNiwweDM3LDB4M0IsMHgy
QSwweDIyLAorICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHg1RiwweERGLDB4NUEsMHg3QiwweDE4
LDB4RkYsMHhGOCwweEY2LDB4QkIsMHhBQSwweEJGLDB4RUYsCisgICAgMHhGNywweEZFLDB4MTgs
MHhGNywweEFGLDB4QkQsMHhBRiwweEZGLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBMCwweDAwLDB4
RTAsMHg1OCwKKyAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4RTAsMHhFQywweDdBLDB4NzYsMHhC
NywweEY2LDB4NzYsMHhFRSwweEY4LDB4RkEsMHg1RSwweDU1LAorICAgIDB4OTYsMHhFRSwweDU1
LDB4RTYsMHhFQSwweDdBLDB4RkEsMHg1QiwweDc2LDB4RUUsMHg1NSwweEU2LDB4OEIsMHgyRCww
eEI5LDB4MkYsCisgICAgMHhCNiwweEY2LDB4NzYsMHhFRSwweEEzLDB4RUIsMHhFQSwweEFBLDB4
QjYsMHhGNiwweDc2LDB4RUUsMHhBQiwweDhGLDB4RUIsMHhDQiwKKyAgICAweDE0LDB4RTYsMHg3
MiwweENELDB4QUMsMHhCQywweEI0LDB4RDYsMHg3NSwweEVFLDB4RjQsMHhFNSwweDJCLDB4OEIs
MHhBQiwweEE5LAorICAgIDB4MzQsMHhFNiwweEIzLDB4RDUsMHhEQywweERDLDB4RDQsMHhERSww
eDE0LDB4RTYsMHgzMCwweEM1LDB4NTgsMHg1OCwweDY4LDB4RTAsCisgICAgMHhCMywweEQ1LDB4
MTAsMHhDNSwweDA5LDB4MkQsMHgzNSwweDlGLDB4MzEsMHhDNSwweDRELDB4QUMsMHgyNiwweDI2
LDB4QTYsMHgzNiwKKyAgICAweDMxLDB4Q0QsMHhGMCwweEJDLDB4M0MsMHgzRiwweDM3LDB4RUEs
MHg5MiwweEQ1LDB4MzEsMHhDNSwweDJGLDB4QUYsMHhBNywweEE1LAorICAgIDB4RjMsMHhERCww
eDcyLDB4RDUsMHgyRiwweEFGLDB4QUQsMHhBRCwweEQzLDB4REQsMHg1MSwweENELDB4ODIsMHhF
QSwweDcyLDB4NTgsCisgICAgMHhFOCwweDgyLDB4QzcsMHg3QSwweDAwLDB4OEUsMHhGRSwweDk4
LDB4MDgsMHg4MywweEM3LDB4N0EsMHhGRSwweEEyLDB4RkIsMHhEQiwKKyAgICAweDA4LDB4ODMs
MHhDNywweDgyLDB4MkIsMHgyRSwweEZFLDB4RkQsMHhFQiwweDlCLDB4RTgsMHg4MiwweDNGLDB4
NzUsMHg1NSwweDU1LAorICAgIDB4NTUsMHhFRSwweEU4LDB4ODIsMHgwQSwweEY1LDB4NTUsMHg1
NSwweEI1LDB4RjYsMHhFNywweDgyLDB4MDAsMHgwQSwweEJELDB4NTUsCisgICAgMHhCNiwweEY2
LDB4OEEsMHg5QiwweDAwLDB4MDAsMHgwMiwweEY1LDB4RDYsMHhGNiwweEY0LDB4RTUsMHgwMCww
eDA4LDB4MDIsMHgyRCwKKyAgICAweEY2LDB4RkUsMHhCNiwweEY2LDB4QUUsMHhBRiwweEZGLDB4
RDUsMHhGOCwweEZFLDB4RDYsMHhGNiwweERGLDB4NUYsMHhENSwweDU1LAorICAgIDB4RDcsMHhG
RSwweEQ2LDB4RjYsMHhENSwweDdGLDB4N0YsMHhGRiwweEY2LDB4RkUsMHhENywweEY2LDB4N0Us
MHg1RCwweDdCLDB4N0EsCisgICAgMHhCNiwweEY2LDB4ODYsMHg3MiwweDYwLDB4NjAsMHhDMCww
eEMwLDB4RTYsMHg1OSwweDIzLDB4NDEsMHg1NSwweDU3LDB4NUUsMHhFOCwKKyAgICAweDg0LDB4
NDksMHgyMywweDQxLDB4N0YsMHhGQiwweDU1LDB4M0EsMHg2NCwweDQ5LDB4RTIsMHgzMCwweEQ3
LDB4RUMsMHhCQSwweEY4LAorICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHg3RiwweEY2LDB4QkIs
MHgyOSwweDQ2LDB4N0EsMHg0NCwweDQ5LDB4MkQsMHgyRCwweDBELDB4MkYsCisgICAgMHg2Niww
eDdBLDB4ODQsMHg1OSwweEEwLDB4RTgsMHg3QSwweDVBLDB4NjQsMHg1MSwweEUzLDB4MzgsMHg1
QywweDc4LDB4NkUsMHhFOCwKKyAgICAweEUyLDB4MzgsMHhBMiwweDMwLDB4NjIsMHhFMiwweDgw
LDB4MDgsMHhDMiwweDMwLDB4ODEsMHgyOCwweDk3LDB4QkUsMHhFQSwweEY4LAorICAgIDB4MjMs
MHg0MSwweDgyLDB4MjgsMHgyRiwweDJGLDB4QUYsMHgzNSwweDg4LDB4ODIsMHg0MywweDQ5LDB4
MkQsMHhCNSwweDM1LDB4MzUsCisgICAgMHhFOSwweDhBLDB4NjcsMHg3QSwweEFCLDB4M0QsMHgz
RiwweDdBLDB4MDksMHg4QiwweDg4LDB4N0EsMHhGQiwweERFLDB4RDgsMHhERiwKKyAgICAweDI5
LDB4OTMsMHg4NywweDdBLDB4MkIsMHhCNywweEZGLDB4NkYsMHgwOSwweDhCLDB4QTUsMHg1OSww
eEE4LDB4RjgsMHg3QSwweDVGLAorICAgIDB4RTgsMHg4MiwweEM1LDB4NjEsMHhFRSwweEFGLDB4
MkQsMHgwOSwweENDLDB4QTMsMHhDNSwweDYxLDB4MzUsMHhGNywweEZCLDB4RkUsCisgICAgMHhC
NiwweEY2LDB4RTksMHg4QSwweDAyLDB4MEIsMHgyRCwweEQ1LDB4MzgsMHhGRiwweDc1LDB4RUUs
MHhCRSwweDJGLDB4MEEsMHgwMSwKKyAgICAweDM5LDB4RkYsMHgxOSwweEZGLDB4MDAsMHg4MCww
eDIwLDB4RTAsMHgzOSwweEZGLDB4OTYsMHhGNiwweEMwLDB4QzgsMHg2MCwweDc4LAorICAgIDB4
NzYsMHhFRSwweDM1LDB4RTYsMHhDOCwweDY4LDB4NkUsMHg3QSwweEY4LDB4RkUsMHg1NSwweEU2
LDB4MDksMHgwOSwweDA5LDB4MEIsCisgICAgMHgzOSwweEZGLDB4RjgsMHhGRSwweEFGLDB4QUYs
MHhBRCwweEFELDB4MTgsMHhGRiwweEY4LDB4RjYsMHhFMCwweEMwLDB4QTAsMHhBMCwKKyAgICAw
eDE4LDB4RkYsMHhGOCwweEY2LDB4RjcsMHhGRiwweERELDB4RkUsMHgxOSwweEZGLDB4RjcsMHhG
NiwweERGLDB4RkYsMHhGRCwweDU3LAorICAgIDB4RjgsMHhGRSwweDE3LDB4RjcsMHgyQSwweEEy
LDB4MkEsMHgyQSwweEY3LDB4RjYsMHhENywweEY2LDB4OUMsMHhGQSwweEFBLDB4QTIsCisgICAg
MHhGOCwweEY2LDB4RDcsMHhGNiwweEJBLDB4M0YsMHgyNywweDJELDB4MTcsMHhGRiwweEY4LDB4
RjYsMHhERCwweEY3LDB4N0YsMHhGRCwKKyAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4N0YsMHhF
QiwweEU5LDB4RUIsMHgxOCwweEZGLDB4RDcsMHhGNiwweDJBLDB4QUEsMHgyRiwweDhGLAorICAg
IDB4MTgsMHhGRiwweEY4LDB4RjYsMHhFQSwweDZBLDB4NkYsMHg3RCwweEY3LDB4RjYsMHhCNyww
eEVFLDB4NzgsMHg3OCwweDdBLDB4NUEsCisgICAgMHhCNywweEY2LDB4NzYsMHhFRSwweEY4LDB4
NzYsMHg1RSwweDc1LDB4OTYsMHhFRSwweDU1LDB4RTYsMHg1RiwweDdFLDB4OEEsMHg5NywKKyAg
ICAweDk2LDB4RUUsMHgzNSwweEU2LDB4NzcsMHhGNywweEZBLDB4MjgsMHg5NiwweEVFLDB4MzUs
MHhFNiwweEJGLDB4QUYsMHhCNywweDNGLAorICAgIDB4QjcsMHhGNiwweDc2LDB4RUUsMHhDQSww
eEZBLDB4N0UsMHg1RSwweEI2LDB4RjYsMHg1NSwweEU2LDB4RTIsMHhFQSwweEVBLDB4NkEsCisg
ICAgMHhEMywweERELDB4MzEsMHhDRCwweDNDLDB4QUMsMHhCQywweEI2LDB4MzUsMHhFNiwweEIz
LDB4RDUsMHgwMiwweDBCLDB4MEIsMHgwOSwKKyAgICAweDE0LDB4RTYsMHhCMywweEQ1LDB4OUUs
MHhGQywweDlDLDB4QkMsMHgxNCwweEU2LDB4RDMsMHhERCwweDdBLDB4NkMsMHhEQywweEY0LAor
ICAgIDB4RDMsMHhERCwweDMxLDB4QzUsMHg1RSwweDc4LDB4NDAsMHg0MCwweDMxLDB4Q0QsMHg0
RSwweEFDLDB4MzcsMHgzNywweDM3LDB4MTcsCisgICAgMHgzMSwweENELDB4Q0YsMHhCQywweEE4
LDB4MjgsMHhCQywweDVFLDB4NzEsMHhDRCwweDExLDB4QzUsMHgyRiwweEFGLDB4QUYsMHhBNywK
KyAgICAweDE0LDB4RTYsMHgzMSwweEM1LDB4MkIsMHgwRiwweEJGLDB4NUYsMHhEMywweERELDB4
RjAsMHhCQywweEY4LDB4N0MsMHhGNywweEI1LAorICAgIDB4RTgsMHg4MiwweEE3LDB4N0EsMHhF
RiwweDNGLDB4QUIsMHhFQSwweEU4LDB4ODIsMHhBNywweDdBLDB4MkMsMHhCRiwweERELDB4RkYs
CisgICAgMHhFOCwweDgyLDB4QzcsMHg4MiwweDJCLDB4Q0EsMHg1RSwweDdCLDB4RTgsMHg4Miww
eEE3LDB4N0EsMHg4QSwweEFBLDB4RkUsMHgyRCwKKyAgICAweEU4LDB4ODIsMHhDNywweDgyLDB4
RUYsMHgyQSwweENCLDB4QzQsMHgwOCwweDhCLDB4QzgsMHg4MiwweEFELDB4QUQsMHg5RiwweDU2
LAorICAgIDB4NDksMHg4QiwweEM3LDB4ODIsMHgzRiwweEZGLDB4N0QsMHg1NSwweEIzLDB4REQs
MHgwOCwweDgzLDB4MkYsMHg1NSwweDU1LDB4NTUsCisgICAgMHg3NSwweEVFLDB4MjgsMHg4Qiww
eDAwLDB4MkYsMHg1NSwweDU1LDB4OTYsMHhGNiwweDA4LDB4ODMsMHgwMCwweDAwLDB4MkIsMHhE
NSwKKyAgICAweEI2LDB4RjYsMHg4RSwweEI0LDB4MDAsMHgwMCwweDAwLDB4MkQsMHg5NSwweEZF
LDB4RDYsMHhGNiwweDU1LDB4NzUsMHhGRiwweEJBLAorICAgIDB4QjYsMHhGNiwweDUxLDB4QzUs
MHg0MCwweEMwLDB4MDAsMHgwMCwweDEzLDB4RTYsMHg4NCwweDUxLDB4NTcsMHg1NywweDVFLDB4
NTgsCisgICAgMHhDNSwweDU5LDB4NjQsMHg0OSwweEFBLDB4OEYsMHhBQSwweEY1LDB4ODUsMHg1
MSwweDIzLDB4NDEsMHg1OCwweDVDLDB4RjgsMHhBQSwKKyAgICAweDY2LDB4N0EsMHgyMywweDQ5
LDB4NTUsMHhENSwweEJELDB4MkYsMHgyOSwweDkzLDB4MDYsMHg2QSwweEY1LDB4RUQsMHhBQiww
eDhBLAorICAgIDB4ODgsMHg4MiwweDg0LDB4NTksMHg3OCwweDY4LDB4RjAsMHhFOCwweEE1LDB4
NjEsMHgwMywweDQxLDB4N0YsMHg3RiwweEJBLDB4QTAsCisgICAgMHhDNiwweDU5LDB4QTIsMHgz
MCwweEY1LDB4RDcsMHhGRSwweEEyLDB4MjQsMHg0MSwweDgxLDB4MjgsMHg1RSwweDVFLDB4RkEs
MHgyQSwKKyAgICAweDY0LDB4NDksMHhBMSwweDI4LDB4QjUsMHhCNSwweEFELDB4MDIsMHg2Nyww
eDdBLDB4NDMsMHg0OSwweDI1LDB4MkQsMHhBRCwweEZGLAorICAgIDB4QTgsMHg3QSwweEE0LDB4
NTksMHhDMCwweEZBLDB4NUYsMHhGNSwweDg4LDB4N0EsMHhFNSwweDYxLDB4MEIsMHhCNSwweDU1
LDB4RDUsCisgICAgMHhBOCwweDdBLDB4MjMsMHg0OSwweDAwLDB4RTAsMHhFQSwweDcyLDB4MjYs
MHg2QSwweDAyLDB4NDksMHhCQSwweEI3LDB4QjUsMHgyNSwKKyAgICAweEE3LDB4N0EsMHhDNSww
eDYxLDB4MjksMHgyRiwweEFFLDB4RkEsMHgwOSwweDkzLDB4MDYsMHg3MiwweEVBLDB4RUEsMHhF
QiwweDg5LAorICAgIDB4NEEsMHg5MywweDI2LDB4NzIsMHgyRiwweDNGLDB4QkQsMHhCNSwweDE4
LDB4RkYsMHg2QSwweDkzLDB4MDMsMHgwOSwweDI1LDB4MjUsCisgICAgMHgzOCwweEZGLDB4MTgs
MHhGRiwweEUyLDB4QTIsMHg3OSwweDVELDB4MTgsMHhGRiwweDc1LDB4RUUsMHg3MCwweDcwLDB4
NTgsMHg1QywKKyAgICAweDc1LDB4RUUsMHgzNSwweEU2LDB4N0UsMHhFQiwweEZBLDB4QkEsMHgx
OCwweEZGLDB4OTYsMHhFRSwweEE5LDB4ODksMHg4OSwweDhCLAorICAgIDB4MzksMHhGRiwweEY4
LDB4RjYsMHhBRiwweEE5LDB4QUYsMHhFRiwweDE4LDB4RkYsMHhGOCwweEY2LDB4QTgsMHhBRSww
eEFBLDB4RUEsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEZGLDB4REEsMHhGNiwweDdGLDB4
MTcsMHhGRiwweEY4LDB4RjYsMHg1RiwweDU2LDB4NTcsMHhENSwKKyAgICAweEQ4LDB4RkUsMHhG
NywweEY2LDB4REYsMHg1RCwweDdELDB4REQsMHhENywweEZFLDB4RjcsMHhGNiwweEQ3LDB4N0Qs
MHg1RSwweERGLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHgzRiwweDk4LDB4RTAsMHgyQSww
eDE4LDB4RkYsMHhGOCwweEY2LDB4RjcsMHhERCwweEI1LDB4QkYsCisgICAgMHgxOCwweEZGLDB4
RjgsMHhGNiwweEUzLDB4QUIsMHhGRSwweEZFLDB4RDgsMHhGRSwweEY3LDB4RjYsMHg1NSwweDZG
LDB4N0QsMHhGRiwKKyAgICAweEY3LDB4RjYsMHhCNywweEY2LDB4ODgsMHhFOCwweEU4LDB4RUEs
MHhENywweEY2LDB4NzYsMHhFRSwweEUwLDB4RjgsMHg1RSwweERFLAorICAgIDB4OTYsMHhFRSww
eDc2LDB4RUUsMHg2NywweDc3LDB4NTUsMHg1NywweDc2LDB4RUUsMHgzNSwweEU2LDB4RUEsMHhG
QiwweEZFLDB4RUEsCisgICAgMHg3NSwweEVFLDB4MzQsMHhFNiwweEEyLDB4RkUsMHhGQSwweDgy
LDB4QjYsMHhGNiwweDU1LDB4RTYsMHhBNSwweDJGLDB4QUQsMHhCRCwKKyAgICAweEI2LDB4RjYs
MHg1NSwweEVFLDB4QkMsMHhBRSwweEJFLDB4QkYsMHhCNiwweEY2LDB4MzUsMHhFNiwweEMyLDB4
RjAsMHg2MiwweEVBLAorICAgIDB4RDMsMHhERCwweDMxLDB4Q0QsMHhCQywweEY2LDB4RkUsMHg3
QywweDM0LDB4RTYsMHg3MiwweENELDB4MEIsMHhBQiwweEFELDB4QTksCisgICAgMHgxNCwweEU2
LDB4QjMsMHhENSwweEJDLDB4M0UsMHgzRiwweEI2LDB4MTQsMHhFNiwweDEwLDB4QzUsMHg4OCww
eDg4LDB4NjgsMHg1NiwKKyAgICAweEQzLDB4REQsMHhGMCwweEM0LDB4RTAsMHg3RSwweDU1LDB4
NTUsMHgzMSwweEM1LDB4MkQsMHhBQywweEI3LDB4OTYsMHhERSwweDk4LAorICAgIDB4MTEsMHhD
NSwweDZFLDB4QjQsMHhCOCwweEY4LDB4RDgsMHg1MCwweDcyLDB4Q0QsMHhGMCwweEM0LDB4MkYs
MHhBOSwweEE5LDB4QkIsCisgICAgMHg1MSwweENELDB4RjAsMHhCQywweDYwLDB4NzgsMHhEQyww
eDk3LDB4NzEsMHhENSwweEYwLDB4QkMsMHgyRCwweDBGLDB4MkIsMHgyQSwKKyAgICAweEM4LDB4
ODIsMHg0NSwweDcyLDB4MEEsMHhBRCwweEQ3LDB4RDcsMHhFOCwweDgyLDB4NDUsMHg2QSwweDBB
LDB4MEEsMHhBRiwweDVELAorICAgIDB4RTgsMHg4MiwweDY2LDB4NzIsMHhBMiwweDAyLDB4OEEs
MHhBRCwweEU4LDB4ODIsMHhBNywweDdBLDB4RjIsMHhBRSwweEI0LDB4QUEsCisgICAgMHhFOCww
eDgyLDB4QTcsMHg4MiwweEFFLDB4QzIsMHg0MiwweEZFLDB4RTgsMHg4MiwweEM4LDB4ODIsMHg1
RSwweDdGLDB4RjUsMHhENSwKKyAgICAweEU4LDB4ODIsMHhBNywweDgyLDB4MEIsMHgwMiwweDhC
LDB4MkYsMHhDOCwweDhBLDB4RTgsMHg4MiwweEVELDB4N0QsMHg1RCwweEVGLAorICAgIDB4MDgs
MHg4QiwweEM4LDB4ODIsMHhBRiwweEVCLDB4RjYsMHhCQiwweDA4LDB4OEIsMHhDOCwweDgyLDB4
MkYsMHhCRiwweDlELDB4QkIsCisgICAgMHgyRCwweEFDLDB4RTgsMHg4QSwweDJELDB4NTUsMHg1
NSwweDU1LDB4NzUsMHhGNiwweDA5LDB4OEIsMHgwQSwweEY1LDB4NTUsMHg1NSwKKyAgICAweEI2
LDB4RjYsMHgyOSwweDhCLDB4MDAsMHgwQSwweEZELDB4NTUsMHgzNSwweEVFLDB4RTUsMHg1OSww
eDcwLDB4NzAsMHg2MCwweDdGLAorICAgIDB4NjQsMHg0OSwweDAyLDB4NDEsMHhBRSwweDNGLDB4
QjUsMHhBRiwweEE1LDB4NTksMHg0MywweDQ5LDB4QkEsMHhCRiwweEFCLDB4M0QsCisgICAgMHhD
OCwweDhBLDB4QTUsMHg1OSwweDJELDB4MkQsMHgyRiwweEJELDB4MjksMHg5QiwweEM4LDB4OEEs
MHg0MCwweDQwLDB4QUEsMHgyOSwKKyAgICAweEM5LDB4OTIsMHhFNSwweDY5LDB4RkEsMHg3QSww
eEQ4LDB4RjgsMHg2NywweDdBLDB4QzUsMHg2MSwweEQ3LDB4QkYsMHhGRiwweEY4LAorICAgIDB4
NjcsMHg3QSwweEE1LDB4NTksMHg3RiwweEVBLDB4ODAsMHhBMiwweDA2LDB4NjIsMHhFMiwweDM4
LDB4RkYsMHhGQSwweDdFLDB4RjgsCisgICAgMHg4NSwweDUxLDB4MDMsMHg0MSwweDAyLDB4RUEs
MHhCNSwweEZGLDB4ODUsMHg1OSwweDIzLDB4NDEsMHhBOCwweDJGLDB4MjUsMHgyQiwKKyAgICAw
eDQ3LDB4NzIsMHhBNCwweDU5LDB4RUQsMHgwRiwweDBCLDB4MEYsMHg4OCwweDcyLDB4QzUsMHg2
MSwweEI1LDB4QjcsMHhBQSwweEEwLAorICAgIDB4NDYsMHg2QSwweEUyLDB4MzgsMHg3MCwweDc4
LDB4N0MsMHg3RSwweDY3LDB4NzIsMHgwMiwweDQxLDB4MkQsMHgyRCwweDI5LDB4QUYsCisgICAg
MHg2NywweDdBLDB4QzUsMHg2MSwweDgwLDB4RTgsMHg1RiwweERGLDB4MDksMHg4QiwweDI2LDB4
NzIsMHgwOSwweDI5LDB4MEIsMHg4QiwKKyAgICAweEM5LDB4ODIsMHg2NywweDdBLDB4MkUsMHhF
MCwweEJFLDB4RjksMHg5MywweERELDB4QzgsMHg4MiwweDM1LDB4QjUsMHg1NSwweDU1LAorICAg
IDB4RjcsMHhGRSwweDhCLDB4OUIsMHgwMCwweDAyLDB4MDMsMHgyRCwweEY3LDB4RkUsMHg1NSww
eEVFLDB4NUMsMHhEQywweDVFLDB4NTYsCisgICAgMHg5NiwweEVFLDB4NTUsMHhFRSwweEQ3LDB4
REQsMHhCNywweDE3LDB4MTgsMHhGRiwweEI3LDB4RjYsMHhBOSwweDg5LDB4QUYsMHg4OSwKKyAg
ICAweDM5LDB4RkYsMHhGOCwweEY2LDB4QUYsMHhFOSwweEFGLDB4QUIsMHgxOCwweEZGLDB4Rjgs
MHhGNiwweEZBLDB4RkUsMHhFQSwweDY4LAorICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHg3Nyww
eERCLDB4NTcsMHg1RiwweEQ3LDB4RkUsMHhGOCwweEY2LDB4NTcsMHg1RCwweEZGLDB4RkYsCisg
ICAgMHhGNywweEY2LDB4RDYsMHhGNiwweDJFLDB4QUUsMHgyMiwweDBBLDB4MTgsMHhGRiwweEY3
LDB4RjYsMHg1NywweEZCLDB4REEsMHhGQiwKKyAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4RUYs
MHhGRiwweDVGLDB4NTUsMHgxOCwweEZGLDB4RjgsMHhGNiwweEU3LDB4RTUsMHhERiwweEZGLAor
ICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHg1RiwweDdGLDB4NUUsMHhERiwweEY3LDB4RjYsMHhE
NywweEY2LDB4QUEsMHhFQSwweEUyLDB4RjgsCisgICAgMHhGOCwweEY2LDB4OTYsMHhFRSwweEU4
LDB4RkEsMHg1RSwweDdFLDB4OTYsMHhFRSwweDc2LDB4RUUsMHhEOCwweDVDLDB4NUMsMHg1NywK
KyAgICAweDc2LDB4RUUsMHg1NiwweEVFLDB4NzIsMHg0RCwweEYwLDB4RkEsMHg3NiwweEVFLDB4
MTQsMHhFNiwweEFBLDB4QTgsMHhGQSwweDZDLAorICAgIDB4NzYsMHhFRSwweDE0LDB4RTYsMHgw
RSwweEFCLDB4MEIsMHhBOSwweDk2LDB4RUUsMHg3NiwweEVFLDB4NjUsMHhGNSwweEJGLDB4QkQs
CisgICAgMHg5NiwweEVFLDB4NzYsMHhFRSwweDVELDB4RjcsMHhFRiwweEZFLDB4OTYsMHhFRSww
eDM1LDB4RTYsMHhDQSwweEVBLDB4NjAsMHhFMCwKKyAgICAweDE0LDB4RTYsMHg3MiwweENELDB4
NzYsMHhGQSwweDg4LDB4MDAsMHhGNCwweERELDB4NzIsMHhENSwweDA5LDB4MkIsMHgwQSwweDIw
LAorICAgIDB4RjQsMHhFNSwweDMxLDB4QzUsMHhBOCwweEE4LDB4RTgsMHg2MCwweDUwLDB4Q0Qs
MHhBRiwweEI0LDB4RjgsMHhFRSwweDdGLDB4RDcsCisgICAgMHhGMCwweEM0LDB4NkQsMHhBQyww
eDAyLDB4QTgsMHhFQSwweDVFLDB4NzEsMHhDRCwweDhFLDB4QjQsMHg3QSwweDYyLDB4RTMsMHg4
QiwKKyAgICAweDEwLDB4QzUsMHgyRCwweEE0LDB4RjAsMHg3MiwweDcyLDB4NjIsMHg1MSwweENE
LDB4RDAsMHhCQywweDBCLDB4MDEsMHhBOSwweDg5LAorICAgIDB4NzIsMHhDRCwweEYwLDB4QkMs
MHhCNywweEFGLDB4MkIsMHgwQiwweDcxLDB4Q0QsMHg1MSwweENELDB4RjcsMHhFRSwweEJGLDB4
RjgsCisgICAgMHhBNywweDdBLDB4NjYsMHg3MiwweEZELDB4RjcsMHhFRSwweEJBLDB4QTYsMHg3
QSwweDY2LDB4NzIsMHg3NSwweDc2LDB4NzksMHhFQSwKKyAgICAweDg2LDB4NzIsMHg0NiwweDcy
LDB4QTUsMHhBRSwweDgwLDB4MjAsMHhDOCwweDgyLDB4MjUsMHg2QSwweDBBLDB4RDcsMHhGRiww
eEZGLAorICAgIDB4QzgsMHg4MiwweDQ2LDB4NzIsMHgwMCwweDBBLDB4OTUsMHg1NSwweEU4LDB4
OEEsMHg0NiwweDcyLDB4MEEsMHg4OCwweDhBLDB4QjUsCisgICAgMHhFOCwweDgyLDB4QTcsMHg3
QSwweEVBLDB4OEEsMHhFQiwweDJELDB4RTgsMHg4MiwweEM4LDB4ODIsMHhCRiwweEZELDB4NTEs
MHg1NSwKKyAgICAweEU4LDB4ODIsMHhDOCwweDgyLDB4QUIsMHg2MiwweDlDLDB4Q0YsMHgwOSww
eDhCLDB4QTcsMHg4MiwweEVBLDB4QjgsMHhGRSwweEY2LAorICAgIDB4RTgsMHg4QSwweEM4LDB4
ODIsMHhDMCwweEM4LDB4RUUsMHhGQiwweDA4LDB4OEIsMHhDOCwweDgyLDB4RjIsMHgwQiwweEZG
LDB4NkUsCisgICAgMHhDOCwweDhBLDB4MDksMHg4MywweERGLDB4QkIsMHhBMiwweEE4LDB4MDgs
MHg4QiwweEM1LDB4NTksMHg2MCwweDY4LDB4NzIsMHg3OCwKKyAgICAweDg0LDB4NTEsMHg0Myww
eDQ5LDB4QjUsMHhGNywweDk0LDB4NTUsMHhBNSwweDU5LDB4NDQsMHg0OSwweDNELDB4MkYsMHgw
OCwweDAyLAorICAgIDB4QTgsMHg4QSwweEM1LDB4NjEsMHhCNSwweDM1LDB4MkQsMHgyRiwweEU5
LDB4OTIsMHg2NywweDgyLDB4MEEsMHhBMiwweDYyLDB4NzgsCisgICAgMHhBOCwweDhBLDB4MjYs
MHg3MiwweEYwLDB4NzgsMHg1NiwweDU3LDB4NjcsMHg3QSwweEU1LDB4NjksMHhGMCwweEVBLDB4
RkYsMHg3NywKKyAgICAweDY3LDB4NzIsMHhBNCwweDU5LDB4RUEsMHhFMCwweEZGLDB4NTcsMHgw
NSwweDYyLDB4NDQsMHg1MSwweDc4LDB4N0EsMHg1NywweDU3LAorICAgIDB4NjQsMHg1MSwweDAz
LDB4NDEsMHhGNywweEI3LDB4RUIsMHhFOCwweEE1LDB4NTksMHgyMywweDQ5LDB4RkQsMHhBRiww
eDM1LDB4MzcsCisgICAgMHg2NywweDcyLDB4QzUsMHg1OSwweDNELDB4QjUsMHhBNSwweEVELDB4
ODgsMHg3MiwweEU1LDB4NjEsMHg2OCwweDcwLDB4N0UsMHhGNywKKyAgICAweEE0LDB4NTksMHgw
MiwweDQxLDB4NzgsMHhGQSwweEZDLDB4M0MsMHg0NywweDcyLDB4NDMsMHg0OSwweEY1LDB4M0Qs
MHgyRiwweEFGLAorICAgIDB4RTksMHg4QSwweEU2LDB4NjksMHhENSwweEJELDB4M0YsMHgyQiww
eDI5LDB4OTMsMHg0NywweDdBLDB4NkYsMHg3QSwweEY4LDB4NzgsCisgICAgMHhFOSwweDhBLDB4
NDcsMHg3QSwweDJELDB4MzUsMHhGOSwweEMxLDB4NEEsMHg5MywweDI2LDB4NkEsMHhGOCwweEZB
LDB4RkYsMHg1NywKKyAgICAweEQzLDB4REQsMHhDOCwweDgyLDB4MkQsMHhENSwweEQ1LDB4NTUs
MHg1NSwweEVFLDB4NkIsMHg5QiwweDAwLDB4MDIsMHgwQiwweDBELAorICAgIDB4QjYsMHhGNiww
eDU1LDB4RUUsMHhCNywweDM3LDB4MTUsMHhCNSwweDE4LDB4RkYsMHhENywweEY2LDB4RTksMHhF
QiwweEY5LDB4RTksCisgICAgMHgzOCwweEZGLDB4RjgsMHhGNiwweEFCLDB4QUIsMHhFQiwweEI5
LDB4MTgsMHhGRiwweEY4LDB4RjYsMHhFQSwweEY4LDB4RjgsMHhGQSwKKyAgICAweDE4LDB4RkYs
MHhEOCwweEY2LDB4RUEsMHhGQSwweEJFLDB4RkEsMHhGNywweEY2LDB4RDgsMHhGNiwweEFBLDB4
QkEsMHgyQSwweEEyLAorICAgIDB4RDgsMHhGRSwweEY3LDB4RjYsMHg1RiwweEY3LDB4NTcsMHg1
RiwweDE4LDB4RkYsMHhGNywweEY2LDB4NkQsMHhCRCwweEFELDB4RUIsCisgICAgMHgxOCwweEZG
LDB4RjgsMHhGNiwweDc1LDB4RkYsMHhGQiwweEVBLDB4MTcsMHhGRiwweEY4LDB4RjYsMHhGQSww
eEFGLDB4RkYsMHg3RiwKKyAgICAweDE4LDB4RkYsMHhCNywweEY2LDB4QTgsMHhFQSwweEVFLDB4
N0IsMHhENywweEY2LDB4OTYsMHhFRSwweDIwLDB4RkUsMHg1RSwweDVFLAorICAgIDB4QjcsMHhG
NiwweDU1LDB4RTYsMHhFMCwweEU4LDB4RkYsMHhGRiwweDk2LDB4RUUsMHg1NSwweEU2LDB4QUYs
MHhCQiwweEVBLDB4RkEsCisgICAgMHg3NiwweEVFLDB4NTYsMHhFRSwweERFLDB4QkUsMHhCQSww
eDhDLDB4NzYsMHhFRSwweDM1LDB4RTYsMHg3RSwweEU4LDB4QTAsMHg4MiwKKyAgICAweDc2LDB4
RUUsMHgxNCwweEU2LDB4MkYsMHgzRiwweEZFLDB4RkEsMHg5NiwweEVFLDB4MzUsMHhFNiwweDAy
LDB4MDgsMHgwQSwweDdGLAorICAgIDB4OTYsMHhFRSwweDU1LDB4RUUsMHhCRSwweDJBLDB4ODIs
MHhENSwweDk2LDB4RUUsMHgzNCwweEU2LDB4QzgsMHg0OCwweDYyLDB4NDIsCisgICAgMHgzNCww
eEU2LDB4RjQsMHhERCwweEJDLDB4NUQsMHg1NSwweDVELDB4MTQsMHhFNiwweEQzLDB4REQsMHhC
QSwweDdGLDB4QTUsMHhBQiwKKyAgICAweEY0LDB4RTUsMHhBRiwweEJDLDB4RTAsMHg2MCwweDc4
LDB4NTgsMHhDRiwweEJDLDB4NkUsMHhCNCwweEU4LDB4N0IsMHg3QSwweDgwLAorICAgIDB4QUYs
MHhCQywweDBELDB4QTQsMHhCQSwweERGLDB4REYsMHhFOCwweDUxLDB4Q0QsMHhBRiwweEJDLDB4
MDksMHgyRCwweDk1LDB4NTUsCisgICAgMHg1MSwweENELDB4MEQsMHhBQywweDY4LDB4NjAsMHhF
MCwweERFLDB4MzEsMHhDRCwweEFGLDB4QkMsMHg4MSwweDA5LDB4MEIsMHhBMywKKyAgICAweDky
LDB4RDUsMHgzMSwweENELDB4QTksMHhBOSwweEFCLDB4QTksMHg5MSwweEQ1LDB4NTIsMHhDRCww
eEZBLDB4RkUsMHhFQiwweEVBLAorICAgIDB4QTcsMHg3QSwweDQ1LDB4NkEsMHgwMiwweDhBLDB4
MEEsMHg4RCwweEE3LDB4N0EsMHg4NiwweDcyLDB4RDQsMHg1NiwweEZFLDB4QUQsCisgICAgMHg4
NiwweDdBLDB4QTcsMHg3MiwweEVBLDB4RUYsMHhFQiwweEE3LDB4QzgsMHg4MiwweDY2LDB4N0Es
MHhGRiwweERGLDB4OUUsMHhBQiwKKyAgICAweEE3LDB4N0EsMHg2NiwweDcyLDB4NTUsMHhGQiww
eDhCLDB4QTgsMHg4NywweDdBLDB4NjYsMHg3MiwweEJELDB4RjAsMHhDMiwweDJDLAorICAgIDB4
QTYsMHg3QSwweDQ2LDB4NzIsMHgyRiwweEY3LDB4RkUsMHhFRSwweEU4LDB4ODIsMHg0NSwweDcy
LDB4MDgsMHhBRiwweDVELDB4RDUsCisgICAgMHhFOSwweDhBLDB4NDYsMHg3MiwweDAyLDB4ODgs
MHgyQiwweEZELDB4RTgsMHg4QSwweDg3LDB4N0EsMHhBOCwweDgyLDB4QTgsMHhBRCwKKyAgICAw
eEU4LDB4ODIsMHhBNywweDgyLDB4MDIsMHg4QSwweDlELDB4QUEsMHhFOCwweDhBLDB4QzgsMHg4
MiwweEY2LDB4MkMsMHgyRiwweDlFLAorICAgIDB4RTgsMHg4QSwweEE3LDB4N0EsMHhBMiwweDgy
LDB4NkEsMHhBRSwweEU4LDB4ODIsMHhBNCwweDU5LDB4NzgsMHg3OCwweDcyLDB4NjgsCisgICAg
MHgyMywweDQ5LDB4RTIsMHgzOCwweDA4LDB4RjgsMHhGQywweDVDLDB4ODQsMHg1OSwweEMyLDB4
MzAsMHgwMiwweDNGLDB4QjUsMHhENSwKKyAgICAweEM3LDB4OEEsMHg2MywweDUxLDB4MkIsMHhB
QiwweEJGLDB4RjUsMHgwOSwweDkzLDB4NDcsMHg3QSwweEUyLDB4ODIsMHhFQSwweDc1LAorICAg
IDB4NjgsMHg3QSwweDA2LDB4NzIsMHhBOCwweEJDLDB4RkYsMHg2OCwweDQ3LDB4NzIsMHg2NCww
eDU5LDB4RkUsMHg3OCwweEZBLDB4QUIsCisgICAgMHhDNSwweDYxLDB4MjQsMHg1MSwweEYwLDB4
N0IsMHhFQiwweEU4LDB4NjQsMHg1MSwweDIzLDB4NDksMHgyQSwweEQ1LDB4RDcsMHhGNSwKKyAg
ICAweDg0LDB4NTEsMHgyMywweDQ5LDB4NUUsMHhERSwweDJGLDB4N0IsMHhDNSwweDU5LDB4MDMs
MHg0MSwweDJGLDB4MEEsMHhGQSwweERGLAorICAgIDB4RTYsMHg2MSwweDQzLDB4NDEsMHgwMCww
eEJBLDB4RjUsMHg1NSwweEM1LDB4NTksMHgyMywweDQxLDB4MDAsMHgwMCwweENBLDB4NTUsCisg
ICAgMHg0NywweDcyLDB4NjQsMHg1MSwweEQ1LDB4RjUsMHgyRCwweDBELDB4ODgsMHg4MiwweEM1
LDB4NjEsMHg3NSwweEI1LDB4MkUsMHgwQSwKKyAgICAweEM5LDB4OEEsMHgwNiwweDcyLDB4MEIs
MHhCRSwweEZDLDB4NzgsMHhDOSwweDhBLDB4MDYsMHg2QSwweEUwLDB4RTgsMHhCQSwweEQ1LAor
ICAgIDB4ODcsMHg3QSwweDY0LDB4NTEsMHgwMiwweDhBLDB4RTgsMHg3RSwweEM1LDB4NjEsMHgw
MywweDQ5LDB4MjAsMHg5RSwweEI3LDB4QjcsCisgICAgMHg4NywweDdBLDB4NjQsMHg1MSwweDBB
LDB4M0YsMHhBRCwweEFGLDB4MTUsMHhFRSwweDY3LDB4NzIsMHgyRiwweEJELDB4RDUsMHg1NSwK
KyAgICAweDc2LDB4RUUsMHgwOSwweDhCLDB4MDAsMHgwMiwweEFGLDB4NTUsMHhEOCwweEZFLDB4
MEQsMHhBQywweDAwLDB4MDAsMHgyMiwweEY1LAorICAgIDB4MTgsMHhGRiwweDM0LDB4RTYsMHgw
MCwweDAyLDB4MDIsMHgyOSwweDE4LDB4RkYsMHhGOCwweEY2LDB4RkEsMHhGQSwweEZBLDB4QUYs
CisgICAgMHhGNywweEZFLDB4RjgsMHhGNiwweEZGLDB4RkYsMHhFRiwweEZGLDB4RjcsMHhGNiww
eEQ4LDB4RjYsMHgyQSwweEE4LDB4QUUsMHgyQSwKKyAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4
NTcsMHhGRCwweEY1LDB4QkYsMHhGOCwweEZFLDB4MTcsMHhGNywweEFBLDB4RUEsMHhCQiwweDhF
LAorICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGRSwweEZGLDB4RUUsMHhGRSwweDE4LDB4RkYs
MHhENywweEY2LDB4RUEsMHhFRSwweEZCLDB4N0EsCisgICAgMHgxNywweEY3LDB4QjcsMHhGNiww
eDdGLDB4RkUsMHg1RiwweDVELDB4QjcsMHhGNiwweDc2LDB4RUUsMHhGOCwweDU4LDB4RjgsMHhG
RSwKKyAgICAweDc1LDB4RUUsMHgzNSwweEU2LDB4QUUsMHhGRSwweEZBLDB4RjAsMHg3NiwweEVF
LDB4NTUsMHhFRSwweEZFLDB4REQsMHgxRSwweDAyLAorICAgIDB4NzYsMHhFRSwweDU1LDB4RUUs
MHhGOSwweERDLDB4NTgsMHhGOCwweDc2LDB4RUUsMHg1NSwweEVFLDB4RTksMHhBRSwweEVFLDB4
QUIsCisgICAgMHg3NSwweEVFLDB4MzUsMHhFNiwweDZFLDB4NjgsMHhFOCwweEFBLDB4NTYsMHhF
RSwweDE0LDB4RTYsMHg3RiwweEZGLDB4QkUsMHhBRSwKKyAgICAweDk2LDB4RjYsMHgzNSwweEU2
LDB4QjUsMHgwNSwweDNELDB4QkYsMHg5NiwweEY2LDB4RDMsMHhERCwweEUwLDB4NjAsMHg2OCww
eDdBLAorICAgIDB4MTQsMHhFNiwweEQzLDB4REQsMHgwQiwweDBELDB4MDksMHgyNSwweDE0LDB4
RTYsMHhEMywweERELDB4ODAsMHgyMCwweDVDLDB4RDgsCisgICAgMHhENCwweERELDB4RjAsMHhD
NCwweDU4LDB4NzgsMHg3OCwweDdDLDB4RjAsMHhDNCwweEFGLDB4QkMsMHhCMCwweEZBLDB4REEs
MHhBQSwKKyAgICAweEYwLDB4QzQsMHg0RCwweEFDLDB4NkEsMHg2MiwweEUwLDB4MDAsMHhEMCww
eEJDLDB4NkEsMHg5MywweEEyLDB4QUEsMHhGQiwweDVDLAorICAgIDB4OEUsMHhCNCwweDRCLDB4
OTMsMHgyOCwweDJBLDB4M0YsMHgzNSwweDMxLDB4QzUsMHhGMCwweEM0LDB4QTksMHg4QiwweEY5
LDB4NzUsCisgICAgMHg3MiwweEQ1LDB4MTAsMHhDNSwweDIzLDB4QUYsMHhBRCwweEZELDB4NzIs
MHhENSwweDMxLDB4Q0QsMHgwMCwweEJBLDB4QUEsMHg1NywKKyAgICAweDQ1LDB4NkEsMHgwNSww
eDYyLDB4M0EsMHhFQSwweDdELDB4RTYsMHg4NiwweDcyLDB4RTUsMHg2MSwweDAyLDB4QUYsMHg2
RiwweEZFLAorICAgIDB4QTcsMHg3QSwweDA1LDB4NjIsMHg4MCwweDBBLDB4QUYsMHhENSwweEE3
LDB4N0EsMHg0NiwweDcyLDB4ODAsMHhBOCwweDBBLDB4OTUsCisgICAgMHhBNywweDdBLDB4ODYs
MHg3QSwweEY5LDB4QjksMHhCQiwweEFCLDB4QTcsMHg3QSwweDY2LDB4N0EsMHhCRCwweEI4LDB4
QUEsMHhCOCwKKyAgICAweEE3LDB4N0EsMHg0NiwweDcyLDB4RTgsMHhBMiwweEEyLDB4MDIsMHhB
NywweDdBLDB4NjYsMHg3QSwweDdFLDB4M0IsMHgyQSwweDIyLAorICAgIDB4QTcsMHg3QSwweDY2
LDB4N0EsMHg3NywweDVFLDB4QjgsMHgyMCwweEE3LDB4N0EsMHg2NiwweDdBLDB4RTUsMHg1RCww
eEZGLDB4RTgsCisgICAgMHhFOCwweDgyLDB4NDUsMHg3MiwweDAyLDB4QkQsMHhENywweEZFLDB4
RTgsMHg4MiwweDY2LDB4NzIsMHhBMiwweDJBLDB4QjUsMHg1NSwKKyAgICAweDA4LDB4OEIsMHg4
NywweDdBLDB4MkEsMHhDOCwweEEyLDB4QkQsMHhDNywweDgyLDB4MDUsMHg2MiwweDYwLDB4ODAs
MHgwMCwweDAwLAorICAgIDB4QzcsMHg4MiwweEUyLDB4NDAsMHg1NywweDU3LDB4NUUsMHg3OCww
eEUyLDB4MzgsMHhBMSwweDM4LDB4RkMsMHg1RSwweDdBLDB4RTgsCisgICAgMHg2NCwweDU5LDB4
QTIsMHgzOCwweDBCLDB4RkQsMHhCRCwweDNELDB4MjYsMHg3MiwweDIzLDB4NTEsMHgyRiwweDNE
LDB4MkQsMHgyRiwKKyAgICAweDg4LDB4ODIsMHhFNiwweDY5LDB4NkEsMHgwMiwweDAwLDB4MkEs
MHg4OCwweDgyLDB4MDUsMHg2QSwweDU1LDB4RkIsMHgwMiwweDk2LAorICAgIDB4RTksMHg4QSww
eDg0LDB4NTEsMHg3RiwweEVBLDB4RjAsMHhFQSwweDI3LDB4NkEsMHgwMiwweDQxLDB4RkYsMHg3
RiwweDU4LDB4NUYsCisgICAgMHg0NCwweDQ5LDB4QzIsMHgzOCwweEUwLDB4NjgsMHhGRSwweEQ3
LDB4NDQsMHg0MSwweEUyLDB4MzgsMHgyQiwweEE5LDB4RUQsMHg3RiwKKyAgICAweDQ0LDB4NDEs
MHhBMiwweDMwLDB4RTAsMHg3QSwweDVGLDB4NUYsMHhBNSwweDU5LDB4ODEsMHgzMCwweEZGLDB4
QkQsMHhBRCwweDJCLAorICAgIDB4NDcsMHg3MiwweDQzLDB4NTEsMHgwRCwweDBELDB4QUYsMHhC
RiwweDg4LDB4N0EsMHgwNiwweDZBLDB4Q0EsMHhFRiwweDhCLDB4QUQsCisgICAgMHgyNywweDcy
LDB4ODQsMHg1OSwweEUwLDB4RjgsMHg2OCwweDVBLDB4RTYsMHg2MSwweDg0LDB4NTksMHgwOSww
eDZGLDB4QUQsMHhFQiwKKyAgICAweEM2LDB4NjEsMHgyMywweDQxLDB4NzAsMHg3MiwweDdBLDB4
N0UsMHhBNSwweDU5LDB4MDMsMHg0MSwweEI1LDB4QjUsMHgzNSwweDM1LAorICAgIDB4NDcsMHg3
MiwweEM1LDB4NjEsMHhFOSwweDYzLDB4RkIsMHgzQSwweEU5LDB4OEEsMHgwNiwweDcyLDB4Mjks
MHgwRCwweEFCLDB4RUEsCisgICAgMHhDOCwweDgyLDB4MjYsMHg3MiwweEJDLDB4NUMsMHhGRSww
eDJGLDB4OEIsMHg5QiwweDY3LDB4N0EsMHgyQiwweEJELDB4QkQsMHhFRiwKKyAgICAweEY4LDB4
RkUsMHhDOCwweDgyLDB4MDIsMHhBQiwweEZELDB4NTUsMHhENywweEZFLDB4NkEsMHg5MywweDAw
LDB4MDIsMHhBRiwweEQ1LAorICAgIDB4RjcsMHhGRSwweDcyLDB4RDUsMHgwMCwweDAwLDB4MjIs
MHhGRCwweEY4LDB4RkUsMHg1NiwweEVFLDB4MDgsMHgwOCwweDIyLDB4QkQsCisgICAgMHhGOCww
eEZFLDB4RDcsMHhGNiwweDAwLDB4QUEsMHhBOCwweEZFLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhB
QSwweEFBLDB4QUIsMHhGRiwKKyAgICAweDE4LDB4RkYsMHhEOCwweEY2LDB4QUEsMHhBRiwweEZG
LDB4RUYsMHhGOCwweEZFLDB4QjcsMHhGNiwweDYwLDB4RjIsMHhGOCwweDVFLAorICAgIDB4RDcs
MHhGNiwweDc2LDB4RUUsMHhBMCwweEVDLDB4RkEsMHg3RSwweEI2LDB4RjYsMHg1NSwweEVFLDB4
QUEsMHhGQSwweEZBLDB4RjUsCisgICAgMHg5NiwweEY2LDB4NTUsMHhFRSwweDdBLDB4OEEsMHhB
QiwweEVGLDB4NzYsMHhFRSwweDU1LDB4RUUsMHhGQiwweDdDLDB4OTgsMHgwQiwKKyAgICAweDk3
LDB4RjYsMHg1NiwweEVFLDB4REUsMHg5RiwweEU2LDB4RkEsMHg5NywweEY2LDB4NTYsMHhFRSww
eDdELDB4RkYsMHhGQSwweEVBLAorICAgIDB4NzYsMHhFRSwweDU1LDB4RUUsMHgzNiwweEVBLDB4
QkEsMHhBRSwweDc1LDB4RUUsMHgzNSwweEVFLDB4QjcsMHhBRSwweDg4LDB4MEEsCisgICAgMHg3
NiwweEVFLDB4MzQsMHhFNiwweDVBLDB4NzAsMHg3QSwweDVGLDB4NTUsMHhFRSwweEIzLDB4RDUs
MHhGMCwweDY4LDB4NzAsMHg3OCwKKyAgICAweDE0LDB4RTYsMHhCMywweEQ1LDB4MkQsMHgyRiww
eDJCLDB4QUQsMHg3NSwweEVFLDB4MTQsMHhFNiwweDdELDB4RkYsMHhCRiwweDJELAorICAgIDB4
NTUsMHhFRSwweDMxLDB4Q0QsMHg1NiwweDdDLDB4RTAsMHg4MCwweEQzLDB4REQsMHhEMCwweEJD
LDB4NTUsMHhGNywweERFLDB4RTgsCisgICAgMHg3MiwweENELDB4RjAsMHhDNCwweEZELDB4QUYs
MHgyQiwweEFBLDB4MzEsMHhDRCwweDA5LDB4ODMsMHg3MCwweDcwLDB4QzAsMHg4MCwKKyAgICAw
eEFGLDB4QjQsMHhBOCwweDdBLDB4MkQsMHgyRCwweDM1LDB4RjcsMHhGMCwweEM0LDB4MEMsMHhB
NCwweDAwLDB4MEEsMHhBQSwweEI1LAorICAgIDB4MzEsMHhDRCwweEFGLDB4QkMsMHgwQSwweEFC
LDB4MzcsMHhGNSwweDMxLDB4Q0QsMHhDRiwweEJDLDB4MDAsMHhFQSwweEVCLDB4REYsCisgICAg
MHg0NiwweDcyLDB4MjYsMHg2QSwweEVELDB4REUsMHgxOCwweDg4LDB4NDYsMHg3MiwweDI2LDB4
NkEsMHhFNSwweDZCLDB4MDgsMHgyMiwKKyAgICAweDQ2LDB4NzIsMHgwNSwweDZBLDB4QkYsMHhB
QSwweEZFLDB4REEsMHg0NiwweDcyLDB4MDUsMHg2QSwweEZGLDB4NkUsMHhENywweEJBLAorICAg
IDB4QTcsMHg3QSwweDA1LDB4NkEsMHgyRiwweDdELDB4REYsMHhGRiwweEE3LDB4N0EsMHgyNiww
eDZBLDB4MDAsMHgyQiwweEQ3LDB4NTUsCisgICAgMHhBNywweDgyLDB4MjUsMHg2QSwweDA4LDB4
QTAsMHgyQSwweDk1LDB4QTcsMHg3QSwweDg3LDB4N0EsMHhBRiwweEZBLDB4RkYsMHhBNSwKKyAg
ICAweEE3LDB4N0EsMHg4NywweDdBLDB4OEIsMHgwRiwweDJELDB4RkMsMHhDNywweDgyLDB4NjYs
MHg3MiwweDdGLDB4RkYsMHgzQSwweEY4LAorICAgIDB4QTcsMHg4MiwweDg3LDB4N0EsMHhGRiww
eEJELDB4RkYsMHgwQywweEE3LDB4ODIsMHg2NiwweDdBLDB4RTYsMHhGQSwweEFBLDB4MDgsCisg
ICAgMHhDNywweDgyLDB4NjYsMHg3MiwweEQ1LDB4QkIsMHhGRSwweDhCLDB4QzgsMHg4MiwweDY2
LDB4NzIsMHgwQiwweEY3LDB4RkYsMHhBQSwKKyAgICAweEM3LDB4ODIsMHg4NCwweDU5LDB4NzAs
MHhDMiwweEEyLDB4MjgsMHg0NiwweDcyLDB4RTMsMHg0MCwweDU1LDB4NTcsMHhGQywweEU4LAor
ICAgIDB4NjQsMHg1OSwweEUyLDB4NDAsMHhBRCwweDJELDB4OEUsMHg4OCwweEE1LDB4NjEsMHgw
MywweDQ5LDB4MkYsMHg1NywweDVGLDB4NUYsCisgICAgMHgyNywweDcyLDB4RTMsMHg0OCwweDBB
LDB4QUYsMHhGNSwweEY1LDB4NjcsMHg3QSwweDQ0LDB4NTEsMHgwMCwweEFBLDB4RkQsMHg1RCwK
KyAgICAweDQ3LDB4N0EsMHhFMywweDQwLDB4QTAsMHhGQSwweEZGLDB4N0YsMHg0NCwweDUxLDB4
QTIsMHgzMCwweEUwLDB4QkEsMHhGRSwweEQ3LAorICAgIDB4NDQsMHg0MSwweEMyLDB4MzgsMHhG
NywweEVGLDB4QkIsMHgyQSwweDQ0LDB4NDEsMHhFMywweDM4LDB4N0YsMHhFRiwweEVBLDB4ODMs
CisgICAgMHgyMywweDQxLDB4QTIsMHgzMCwweERFLDB4REUsMHhCRSwweDJBLDB4QTUsMHg1OSww
eDAzLDB4NDEsMHgyRCwweDBELDB4MkQsMHgwMywKKyAgICAweDA2LDB4NzIsMHg4NCwweDU5LDB4
MzUsMHhGRCwweENBLDB4QTIsMHgwNiwweDZBLDB4QTQsMHg2MSwweDJBLDB4RkQsMHhENSwweERF
LAorICAgIDB4RTUsMHg2OSwweDI0LDB4NDksMHhCOCwweEZBLDB4RkUsMHg1RSwweEU1LDB4NjEs
MHgyMywweDQ5LDB4OEIsMHgyQSwweEFGLDB4QjUsCisgICAgMHg4NCwweDUxLDB4MDMsMHg0MSww
eEY4LDB4RjgsMHhENiwweEY2LDB4QzYsMHg1OSwweDAyLDB4NDEsMHgyRCwweDJELDB4QUEsMHhF
MywKKyAgICAweDg4LDB4N0EsMHg0NCwweDUxLDB4MkEsMHgwQiwweDJGLDB4QjUsMHg4OCwweDgy
LDB4RTUsMHg2OSwweDRBLDB4RjgsMHg1OCwweEEwLAorICAgIDB4QzksMHg4QSwweDA1LDB4NkEs
MHgyRCwweDJGLDB4QkYsMHhFRiwweDBBLDB4OTMsMHg2NywweDdBLDB4QTAsMHhFMiwweDdGLDB4
NUQsCisgICAgMHg4OCwweDdBLDB4MjYsMHg3MiwweDI2LDB4M0QsMHhCRCwweDAxLDB4MkEsMHg5
MywweDI2LDB4NzIsMHgzRSwweEI3LDB4RDcsMHhGRiwKKyAgICAweEVDLDB4QTMsMHg4OCwweDdB
LDB4RjgsMHg1NywweDU1LDB4NTUsMHhEMywweERELDB4NjgsMHg3QSwweDBCLDB4RkQsMHhENSww
eDU1LAorICAgIDB4MzQsMHhFNiwweDg4LDB4N0EsMHgwMCwweEJGLDB4RDUsMHg1NSwweDk2LDB4
RjYsMHhBOCwweDdBLDB4MDAsMHgwMiwweEZGLDB4NTUsCisgICAgMHhCNywweEY2LDB4NkEsMHg5
MywweDAwLDB4MDAsMHgwMywweEJELDB4RDcsMHhGNiwweDM1LDB4RTYsMHg4OCwweEE4LDB4QUEs
MHhGRCwKKyAgICAweDk2LDB4RUUsMHg1NSwweEVFLDB4QzAsMHhFOCwweEFFLDB4RkYsMHg5Niww
eEY2LDB4MzUsMHhFNiwweEFFLDB4OEEsMHg3RSwweEQ3LAorICAgIDB4NzYsMHhFRSwweDM0LDB4
RTYsMHgyOCwweEFFLDB4QkYsMHg1NSwweDc2LDB4RUUsMHgzNSwweEVFLDB4MDAsMHgwMCwweEEw
LDB4RkIsCisgICAgMHg5NywweEY2LDB4MzUsMHhFNiwweEFBLDB4QTIsMHhBQSwweEQ1LDB4OTYs
MHhGNiwweDM1LDB4RTYsMHgyMiwweDAyLDB4RjgsMHhERiwKKyAgICAweDc2LDB4RUUsMHg1NSww
eEVFLDB4RDQsMHg1NywweEU1LDB4MjUsMHg5NiwweEY2LDB4NTUsMHhFRSwweEQ1LDB4RkQsMHhF
QiwweDJBLAorICAgIDB4NzYsMHhFRSwweDM1LDB4RTYsMHhGQiwweEY4LDB4NzAsMHg3MCwweDM1
LDB4RUUsMHg5MiwweEQ1LDB4NzAsMHg3OCwweDc4LDB4NzAsCisgICAgMHgxNSwweEU2LDB4OTIs
MHhENSwweDI1LDB4M0QsMHhBRCwweEE5LDB4MzUsMHhFNiwweEY0LDB4RTUsMHgwQSwweERGLDB4
ODUsMHgwRCwKKyAgICAweDk2LDB4RUUsMHgzNSwweEU2LDB4RUQsMHg4OSwweDI5LDB4MkIsMHg3
NiwweEVFLDB4OTIsMHhENSwweDZBLDB4MDAsMHgwMCwweDAwLAorICAgIDB4NzUsMHhFRSwweDUx
LDB4Q0QsMHg1NSwweDU3LDB4RkMsMHhGMCwweEIyLDB4RDUsMHgxMCwweEM1LDB4N0IsMHhFRiww
eEFFLDB4QTgsCisgICAgMHg3MiwweENELDB4NDcsMHg2QSwweDU3LDB4NUMsMHg3OCwweEYwLDB4
MEQsMHhBNCwweDA2LDB4NjIsMHgwQiwweEI1LDB4RDUsMHg1RiwKKyAgICAweEFGLDB4QkMsMHg4
OCwweDcyLDB4MDAsMHgyMiwweEFELDB4NTUsMHhDRiwweEJDLDB4MkIsMHg4QiwweDAwLDB4MDIs
MHgwQiwweDBELAorICAgIDB4NjYsMHg3MiwweDI2LDB4NkEsMHhCQSwweDdFLDB4OEMsMHgwQyww
eDQ2LDB4NzIsMHgyNSwweDZBLDB4MjAsMHgwOCwweDAwLDB4MzAsCisgICAgMHg2NiwweDcyLDB4
MjYsMHg2QSwweDdGLDB4QjEsMHhCQiwweDJBLDB4NjYsMHg3MiwweDI1LDB4NkEsMHhGRCwweEVF
LDB4RkUsMHgzQywKKyAgICAweDY2LDB4NzIsMHgyNSwweDZBLDB4NkYsMHhBRSwweEFGLDB4MUYs
MHg0NiwweDcyLDB4MjYsMHg2QSwweEI5LDB4MjksMHgzQiwweDAwLAorICAgIDB4NDYsMHg3Miww
eDI2LDB4NkEsMHg5NSwweENDLDB4QUIsMHg4MCwweDg3LDB4N0EsMHgyNSwweDZBLDB4MjksMHhE
RiwweDdELDB4N0QsCisgICAgMHhBNywweDdBLDB4MjUsMHg2QSwweDIwLDB4MkQsMHhENSwweDU3
LDB4QzcsMHg4MiwweDI1LDB4NkEsMHhBQSwweEE4LDB4MkYsMHhGRCwKKyAgICAweEE3LDB4ODIs
MHg2NywweDdBLDB4QTgsMHg4MCwweEE4LDB4QkQsMHhBNywweDgyLDB4ODcsMHg3QSwweDI4LDB4
RTAsMHg4QSwweEM4LAorICAgIDB4QzcsMHg4QSwweEE3LDB4N0EsMHg1NSwweDdELDB4RkQsMHhF
RiwweEM3LDB4ODIsMHg4NiwweDdBLDB4QUUsMHhBOSwweDgyLDB4QTIsCisgICAgMHhDOCwweDgy
LDB4ODYsMHg3QSwweDdGLDB4QkIsMHhCQiwweDNFLDB4QzgsMHg4MiwweDY0LDB4NTksMHg3QSww
eDY4LDB4QTgsMHgyMCwKKyAgICAweEM4LDB4OEEsMHg2NCwweDU5LDB4NTUsMHhERCwweEZBLDB4
QTAsMHg2NywweDcyLDB4NDQsMHg1OSwweDU1LDB4RkYsMHhGQSwweEUwLAorICAgIDB4QTUsMHg1
OSwweDI0LDB4NDksMHhCRiwweEU4LDB4RjgsMHg1RSwweDg1LDB4NTEsMHhFMiwweDM4LDB4QTAs
MHhBQSwweEZFLDB4NUUsCisgICAgMHg2NCwweDUxLDB4QzIsMHgzMCwweDY4LDB4NUEsMHg1Riww
eDdELDB4MDMsMHgzOSwweEEyLDB4MzAsMHhCNSwweEVGLDB4QUYsMHgwMywKKyAgICAweDQ0LDB4
NDEsMHhDMiwweDMwLDB4ODMsMHhBQSwweDdFLDB4N0EsMHg0NCwweDQ5LDB4QzIsMHgzOCwweEFF
LDB4QkYsMHhCRCwweDNELAorICAgIDB4NjQsMHg1MSwweDAzLDB4NDEsMHgzNSwweDhGLDB4Qzgs
MHhBMCwweEE1LDB4NTksMHgyMywweDQ5LDB4MEYsMHgzRCwweEJELDB4QUYsCisgICAgMHg0Nyww
eDdBLDB4QTUsMHg1OSwweEIyLDB4MkIsMHgyOSwweEE1LDB4NjcsMHg3QSwweDQ0LDB4NTEsMHhG
QSwweDY4LDB4NzAsMHg3QSwKKyAgICAweEE1LDB4NTksMHhDMiwweDM4LDB4QjgsMHhGQSwweEY3
LDB4RDcsMHhBNSwweDU5LDB4MjMsMHg0MSwweEZCLDB4NkIsMHhFOSwweDA5LAorICAgIDB4QTUs
MHg1MSwweDAzLDB4NDEsMHhERSwweEZGLDB4QjUsMHhGQywweEE1LDB4NTEsMHgyMywweDQ5LDB4
RUIsMHhCQiwweEU4LDB4NUYsCisgICAgMHg2OCwweDdBLDB4MDMsMHg0MSwweDJGLDB4QUQsMHgy
RCwweDI1LDB4NEIsMHg5MywweEE3LDB4ODIsMHhBOSwweDhELDB4QUUsMHg1RCwKKyAgICAweEU5
LDB4OEEsMHhBNSwweDU5LDB4RkEsMHhGOCwweDdFLDB4NUUsMHg2NywweDdBLDB4RTYsMHg2MSww
eDJCLDB4MkIsMHhBRiwweEJELAorICAgIDB4QzksMHg4QSwweDI3LDB4NzIsMHgyRiwweEFBLDB4
QkYsMHgzNSwweDA5LDB4OTMsMHhBOCwweDgyLDB4NUYsMHg3QSwweDJFLDB4QkYsCisgICAgMHhF
OSwweDhBLDB4NDcsMHg3QSwweDU1LDB4NUYsMHhGOCwweEU4LDB4NjcsMHg3QSwweEU1LDB4Njks
MHg3RiwweEFBLDB4OEEsMHhGOCwKKyAgICAweDg3LDB4N0EsMHhFNSwweDY5LDB4QUQsMHhBQiww
eDAyLDB4QUIsMHg4NywweDcyLDB4MjYsMHg2QSwweDc4LDB4RUEsMHhERiwweDVBLAorICAgIDB4
NEUsMHhBQywweDQ3LDB4NkEsMHgyNSwweEQ1LDB4NTUsMHg1NSwweDU1LDB4RUUsMHg4OCwweDcy
LDB4MDIsMHgwMywweEY1LDB4NTUsCisgICAgMHgzNSwweEU2LDB4NkEsMHg5MywweDAwLDB4MDAs
MHgwQSwweEI1LDB4NTUsMHhFRSwweEQzLDB4REQsMHhBOCwweEEyLDB4QUEsMHhBOSwKKyAgICAw
eDM0LDB4RTYsMHhGNCwweEU1LDB4QTAsMHhBOCwweEZBLDB4REUsMHgzNSwweEU2LDB4RjQsMHhF
NSwweDAyLDB4OEUsMHgyRiwweERELAorICAgIDB4MzQsMHhFNiwweEY0LDB4REQsMHhGRSwweDU3
LDB4RkMsMHhFRiwweDM1LDB4RTYsMHhEMywweERELDB4MkYsMHgyOSwweEJCLDB4QUYsCisgICAg
MHg5NiwweEY2LDB4MzQsMHhFNiwweEFELDB4QUYsMHgzNywweEI1LDB4OTYsMHhGNiwweDM1LDB4
RTYsMHg4MiwweEE4LDB4NzIsMHg1RiwKKyAgICAweDU1LDB4RUUsMHgzNSwweEU2LDB4QzAsMHgy
QSwweEFELDB4RjUsMHgzNSwweEU2LDB4NzIsMHhENSwweDc4LDB4QTAsMHgwMCwweDAwLAorICAg
IDB4MzUsMHhFRSwweDkyLDB4RDUsMHhCNSwweEJELDB4QTgsMHg4MCwweDM0LDB4RTYsMHhGNCww
eERELDB4MEIsMHhCQSwweERGLDB4REIsCisgICAgMHg5NiwweEVFLDB4MTQsMHhFNiwweDhCLDB4
MEIsMHgwRiwweDJELDB4OTYsMHhFRSwweDc2LDB4RUUsMHhFOCwweEY4LDB4OEEsMHhBOCwKKyAg
ICAweDc2LDB4RUUsMHhEMywweERELDB4NzAsMHhDMCwweDAwLDB4MDAsMHg1NSwweEVFLDB4NzIs
MHhENSwweDdGLDB4N0YsMHg3QSwweEUwLAorICAgIDB4RjMsMHhERCwweEYxLDB4QzQsMHg2Miww
eDBBLDB4MEEsMHgwQSwweEIzLDB4REQsMHhFOSwweDgyLDB4NTcsMHhFMCwweDAwLDB4MDAsCisg
ICAgMHg3MiwweEQ1LDB4NjcsMHg3MiwweDU1LDB4RkYsMHhBOCwweDgwLDB4Q0YsMHhCQywweEU5
LDB4ODIsMHgwOSwweDAzLDB4MDIsMHgyOCwKKyAgICAweDY2LDB4NzIsMHg0NiwweDcyLDB4MjUs
MHhENiwweDlDLDB4QkUsMHg2NiwweDcyLDB4MjUsMHg3MiwweEFFLDB4ODksMHhBOCwweEEwLAor
ICAgIDB4NjcsMHg3MiwweDQ2LDB4NzIsMHhEOSwweEEzLDB4NjYsMHhCNiwweDY2LDB4N0EsMHg0
NiwweDcyLDB4QUYsMHhDRiwweDdDLDB4QjIsCisgICAgMHg2NiwweDcyLDB4NDYsMHg3MiwweEZF
LDB4RjQsMHhCRCwweDVELDB4NjYsMHg3MiwweDQ2LDB4NzIsMHg1RSwweDE2LDB4RjgsMHhGMywK
KyAgICAweDY3LDB4N0EsMHgyNiwweDcyLDB4N0YsMHg4RiwweDJELDB4QTgsMHg2NiwweDdBLDB4
MjYsMHg2QSwweERGLDB4RUYsMHhBOCwweEMzLAorICAgIDB4NjYsMHg3MiwweDI1LDB4NzIsMHhF
MiwweEFCLDB4RUEsMHhFRSwweDY2LDB4NzIsMHgyNSwweDZBLDB4NkYsMHhERiwweDlBLDB4QkEs
CisgICAgMHg2NiwweDcyLDB4MjUsMHg2QSwweDJGLDB4N0YsMHg2NywweEE4LDB4QzcsMHg4Miww
eDI2LDB4NkEsMHg4QSwweEFELDB4N0QsMHhGRiwKKyAgICAweEM4LDB4OEEsMHg0NiwweDcyLDB4
QUEsMHg4QSwweDlELDB4RDUsMHhDNywweDgyLDB4NjYsMHg3QSwweDIyLDB4MEEsMHhBQSwweEI1
LAorICAgIDB4QzcsMHg4MiwweEE3LDB4ODIsMHgwOSwweDAyLDB4MEEsMHgwNywweEU4LDB4OEEs
MHg4NywweDdBLDB4N0EsMHhFQSwweDAwLDB4MEEsCisgICAgMHgwOSwweDkzLDB4NDYsMHg3Miww
eDdBLDB4RUIsMHhFOCwweDY4LDB4ODcsMHg3QSwweDIzLDB4NDksMHhFMCwweEY4LDB4RkEsMHg3
RSwKKyAgICAweDY1LDB4NTEsMHhDMiwweDMwLDB4ODgsMHhGQSwweDVFLDB4NTcsMHgyMywweDQx
LDB4ODEsMHgyOCwweEY4LDB4REYsMHhERiwweEQ1LAorICAgIDB4RTMsMHgzMCwweEEyLDB4Mjgs
MHgwMiwweEFBLDB4QUYsMHhCRiwweDAzLDB4MzksMHhBMiwweDI4LDB4QTIsMHhBMiwweEVBLDB4
REUsCisgICAgMHhFMywweDMwLDB4QTIsMHgzMCwweDAwLDB4QUEsMHhGQSwweEZGLDB4ODQsMHg1
MSwweEMyLDB4MzAsMHhCNywweEJGLDB4MjUsMHgwRCwKKyAgICAweDg0LDB4NTEsMHhFMywweDQw
LDB4RTAsMHhBRSwweEI2LDB4RDcsMHhBNSwweDU5LDB4NDQsMHg1MSwweEY1LDB4MkYsMHgyRiww
eEZCLAorICAgIDB4MjcsMHg3MiwweDg1LDB4NTksMHgzNSwweDM1LDB4QTcsMHhBNSwweEU2LDB4
NjEsMHgwMywweDQxLDB4RjgsMHhGOCwweDdBLDB4N0MsCisgICAgMHg0NCwweDQ5LDB4QzMsMHgz
OCwweEVFLDB4N0EsMHg3QywweEJBLDB4QzYsMHg1OSwweEUzLDB4MzgsMHgyRCwweDBELDB4MEIs
MHhBQiwKKyAgICAweEM2LDB4NTksMHg0NCwweDQ5LDB4RjAsMHg1QywweDcwLDB4N0EsMHg0NCww
eDQ5LDB4RTMsMHgzOCwweEU4LDB4RkUsMHg3NiwweEFFLAorICAgIDB4QTUsMHg1OSwweEUzLDB4
MzgsMHgyNSwweEI1LDB4RkQsMHhGQiwweDY3LDB4NzIsMHg0NCwweDQ5LDB4ODIsMHhGQSwweDdG
LDB4NzUsCisgICAgMHhFNSwweDYxLDB4NDQsMHg0OSwweEUwLDB4QkYsMHhGNSwweDU1LDB4RTYs
MHg2MSwweDQzLDB4NTEsMHgyQiwweEJGLDB4QkYsMHhCNSwKKyAgICAweDY3LDB4N0EsMHg4NCww
eDU5LDB4MEIsMHgyRCwweDJGLDB4M0YsMHhFOSwweDhBLDB4MDYsMHg3MiwweDJBLDB4QkUsMHhE
QSwweDVGLAorICAgIDB4RTksMHg5MiwweDY3LDB4N0EsMHg3OCwweEVGLDB4QUQsMHhFOSwweEM5
LDB4OEEsMHgyNywweDcyLDB4NUUsMHhGMCwweEMwLDB4ODgsCisgICAgMHg4NywweDdBLDB4QzQs
MHg2MSwweEFCLDB4N0YsMHhGQSwweEE4LDB4NDcsMHg3MiwweDg0LDB4NTksMHgwMCwweDBCLDB4
RkYsMHg1RSwKKyAgICAweDI2LDB4NkEsMHg4NCwweDUxLDB4ODAsMHhBMCwweEZCLDB4NTUsMHg2
NywweDcyLDB4QTUsMHg1OSwweDJBLDB4RkQsMHhGNSwweEQ1LAorICAgIDB4MEMsMHhBNCwweDI2
LDB4NkEsMHgyRiwweEJELDB4RDUsMHg1NSwweDM0LDB4RUUsMHgwQSwweDhCLDB4MDIsMHgwQSww
eDJELDB4RDUsCisgICAgMHgzNSwweEVFLDB4MzEsMHhDRCwweEEwLDB4QTgsMHgyMiwweEFELDB4
MTQsMHhFNiwweEIzLDB4REQsMHhFQSwweDZCLDB4QTIsMHg4OCwKKyAgICAweDE0LDB4RTYsMHhC
MywweERELDB4Q0EsMHhBRiwweEZBLDB4NkEsMHhGNCwweEU1LDB4RDMsMHhERCwweDJFLDB4OUYs
MHg5NywweEQ1LAorICAgIDB4NTUsMHhFNiwweEY0LDB4REQsMHgwQiwweEFCLDB4QUYsMHhFRiww
eDM0LDB4RTYsMHhGNCwweERELDB4ODAsMHgyQSwweEFGLDB4RDUsCisgICAgMHg1NSwweEVFLDB4
MTQsMHhFNiwweEFBLDB4QUYsMHhBRiwweENELDB4MzQsMHhFNiwweEY0LDB4REQsMHhENiwweDVF
LDB4N0EsMHg2NywKKyAgICAweDM0LDB4RTYsMHhGNCwweERELDB4QkYsMHhBRiwweEI1LDB4RkQs
MHgxNCwweEU2LDB4RjQsMHhERCwweDIwLDB4MjgsMHg4MiwweDAyLAorICAgIDB4OTYsMHhFRSww
eDE0LDB4RTYsMHgyRiwweDBELDB4MkQsMHgyNSwweDc2LDB4RkUsMHg5NiwweEVFLDB4NzcsMHhE
RCwweDc1LDB4NUQsCisgICAgMHg5NiwweEVFLDB4NzYsMHhFRSwweEY4LDB4QzIsMHg4QSwweEEw
LDB4OTYsMHhFRSwweDM1LDB4RTYsMHg3QSwweDg4LDB4QTIsMHhFMiwKKyAgICAweDc2LDB4RUUs
MHg5MywweEQ1LDB4RDcsMHhGOCwweEUwLDB4RkEsMHgxNSwweEU2LDB4QjMsMHhENSwweEFBLDB4
OEIsMHhBRiwweEQ3LAorICAgIDB4RjQsMHhERCwweDkyLDB4RDUsMHg3QSwweDgwLDB4MEEsMHhB
QSwweEQzLDB4REQsMHhDQywweDlCLDB4NUEsMHhFMCwweDgwLDB4MDAsCisgICAgMHg2NiwweDcy
LDB4NDUsMHg3MiwweEMzLDB4MkIsMHgwMiwweDgzLDB4NjYsMHg3QSwweDQ2LDB4NzIsMHhCQSww
eEI0LDB4RkQsMHg0MiwKKyAgICAweDg3LDB4N0EsMHg0NiwweDcyLDB4RUEsMHhCQSwweERCLDB4
N0YsMHg4NywweDdBLDB4NDYsMHg3MiwweEZELDB4RUQsMHhCQSwweEJCLAorICAgIDB4NjYsMHg3
MiwweDI1LDB4NzIsMHgxQSwweEFBLDB4ODgsMHg4MiwweDg3LDB4N0EsMHg0NiwweDcyLDB4RjUs
MHhGRSwweEIzLDB4RUEsCisgICAgMHg4NiwweDdBLDB4NDYsMHg3MiwweDdELDB4RkQsMHhFRSww
eEZDLDB4ODcsMHg3QSwweDI1LDB4NkEsMHhFRiwweEFGLDB4QUEsMHg4OCwKKyAgICAweDY2LDB4
N0EsMHg0NiwweDcyLDB4NzksMHhCOCwweDc2LDB4QzIsMHg2NiwweDdBLDB4NDYsMHg3MiwweEVD
LDB4NEMsMHg2QywweEM0LAorICAgIDB4NjYsMHg3QSwweDQ2LDB4NzIsMHgxNywweDcyLDB4OEYs
MHhDNiwweDg3LDB4N0EsMHg0NiwweDcyLDB4NzcsMHg3RCwweEJFLDB4RUEsCisgICAgMHg4Nyww
eDdBLDB4NDYsMHg3MiwweDVGLDB4N0QsMHhCNSwweDhBLDB4ODcsMHg3QSwweDI1LDB4NzIsMHhG
RCwweEFGLDB4RUIsMHg4QSwKKyAgICAweEE3LDB4ODIsMHg0NiwweDcyLDB4MEEsMHhCRiwweDdE
LDB4NkYsMHhFOCwweDhBLDB4NDYsMHg3MiwweDBBLDB4MEYsMHhCNywweDFGLAorICAgIDB4MDks
MHg4QiwweEU1LDB4NjksMHg3MCwweDcwLDB4NzgsMHg3OCwweEE0LDB4NTksMHhDMiwweDM4LDB4
RjgsMHg1RSwweDdDLDB4NzgsCisgICAgMHhDMiwweDMwLDB4ODIsMHgyOCwweDYwLDB4RjAsMHhD
OCwweEMwLDB4RTIsMHgzMCwweDgyLDB4MjAsMHhENSwweDdGLDB4QkYsMHhBRSwKKyAgICAweEMy
LDB4MjgsMHhBMiwweDI4LDB4RkYsMHhGRiwweDUyLDB4M0EsMHhDMiwweDMwLDB4QTIsMHgyOCww
eDBBLDB4QTMsMHg3QiwweDVDLAorICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHg5NywweEJELDB4
MjUsMHgyRCwweDY1LDB4NDksMHhFMiwweDM4LDB4Q0QsMHhGQiwweDYyLDB4NjIsCisgICAgMHgy
NCwweDQxLDB4QzIsMHgzOCwweDNGLDB4MjcsMHhCNywweDJGLDB4NjQsMHg1MSwweDAzLDB4NDEs
MHhBMCwweDBGLDB4MDEsMHg4MywKKyAgICAweEM1LDB4NTksMHgyMywweDQ5LDB4MkQsMHhGRiww
eDdBLDB4NkEsMHg4NSwweDUxLDB4RTMsMHgzOCwweDc4LDB4NUEsMHhGQiwweEZFLAorICAgIDB4
MjQsMHg0MSwweEUyLDB4MzgsMHgzMiwweEY1LDB4QjUsMHhBQSwweDY1LDB4NDksMHhFMywweDM4
LDB4QTIsMHhBMywweEZGLDB4NTUsCisgICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweEYzLDB4NUYs
MHhERCwweDM5LDB4NjQsMHg0OSwweEUzLDB4MzgsMHhCRSwweEZGLDB4N0EsMHg2MCwKKyAgICAw
eDI0LDB4NDksMHhBMiwweDMwLDB4MDAsMHhBQiwweEI3LDB4QTcsMHhDNSwweDU5LDB4NDQsMHg0
OSwweEVELDB4QUQsMHhBQiwweDA5LAorICAgIDB4ODQsMHg1MSwweDAyLDB4NDEsMHhFQSwweEU4
LDB4N0EsMHg3QywweDg1LDB4NTEsMHhFMiwweDM4LDB4MkYsMHgyRiwweEJGLDB4QUQsCisgICAg
MHgyNiwweDcyLDB4ODUsMHg1OSwweDk1LDB4RDUsMHhBQiwweDAzLDB4MDYsMHg2QSwweEM1LDB4
NjksMHgyQiwweDhELDB4RTIsMHg2MCwKKyAgICAweEE4LDB4ODIsMHhDNSwweDYxLDB4MDIsMHg4
MiwweEZELDB4NTUsMHhBOCwweDgyLDB4QzUsMHg2OSwweDA4LDB4OEEsMHhBRiwweEFELAorICAg
IDB4ODgsMHg3QSwweEE1LDB4NjEsMHhFOCwweEZFLDB4RkEsMHg3RSwweDA2LDB4NkEsMHg0Myww
eDUxLDB4RkUsMHhBOCwweDgwLDB4ODIsCisgICAgMHhDNiwweDU5LDB4NjQsMHg1MSwweEJELDB4
QUEsMHg4MCwweDY4LDB4RTYsMHg2MSwweDg1LDB4NTEsMHhBQSwweEJBLDB4RjAsMHhGRCwKKyAg
ICAweDA2LDB4NkEsMHg4NCwweDUxLDB4MkEsMHgyRiwweDM1LDB4QjUsMHg0QiwweDkzLDB4RTUs
MHg2MSwweDJCLDB4QUYsMHhCRCwweEQ1LAorICAgIDB4NzIsMHhENSwweEE4LDB4ODIsMHgyRiww
eEI1LDB4RDUsMHg1NSwweEY0LDB4RTUsMHhDQywweEEzLDB4MDAsMHgwMiwweDBCLDB4MjksCisg
ICAgMHhGNCwweEU1LDB4QjMsMHhERCwweEYwLDB4RDAsMHg3OCwweEJCLDB4RDMsMHhERCwweDcy
LDB4RDUsMHgyMCwweDI4LDB4QTAsMHg3OCwKKyAgICAweDE0LDB4RTYsMHg5MywweEQ1LDB4ODIs
MHgyQSwweEFGLDB4QjUsMHgzNSwweEU2LDB4RDMsMHhERCwweERGLDB4QjcsMHgzNywweDJGLAor
ICAgIDB4NTUsMHhFRSwweEIzLDB4REQsMHg4MiwweDgwLDB4QTgsMHg3QSwweDM1LDB4RTYsMHhE
MywweERELDB4RjcsMHhCRSwweDAwLDB4MDMsCisgICAgMHgzNSwweEU2LDB4RjQsMHhERCwweEI1
LDB4RkUsMHhCRSwweEMwLDB4MzUsMHhFNiwweEQzLDB4REQsMHg3QSwweEZBLDB4OEEsMHgyMCwK
KyAgICAweDk2LDB4RUUsMHhGNCwweERELDB4MkQsMHgyNSwweDJGLDB4MkYsMHhCNywweEY2LDB4
OTYsMHhFRSwweEY3LDB4RkYsMHg1RiwweERGLAorICAgIDB4OTYsMHhFRSwweDc2LDB4RUUsMHhG
MCwweEYwLDB4RTgsMHhBMCwweDc1LDB4RUUsMHhCMywweEQ1LDB4RTgsMHg3QywweDc4LDB4NjAs
CisgICAgMHhEMywweERELDB4OTIsMHhENSwweEE4LDB4N0UsMHhFRiwweDZBLDB4QjMsMHhENSww
eDUyLDB4RDUsMHgwMiwweEEyLDB4RUEsMHhBQSwKKyAgICAweEIzLDB4RDUsMHg3MiwweEQ1LDB4
MDAsMHg4QSwweEZGLDB4NUYsMHg5MiwweEQ1LDB4NTEsMHhDRCwweDAwLDB4QUMsMHg3RSwweEI3
LAorICAgIDB4NjcsMHg3QSwweEU1LDB4NjksMHg4MCwweDIyLDB4MjIsMHgzRCwweDY3LDB4N0Es
MHg0NywweDcyLDB4RTgsMHgyMiwweDNGLDB4NEQsCisgICAgMHg4NywweDdBLDB4NDYsMHg3Miww
eEVGLDB4QTcsMHhCRiwweERGLDB4NDcsMHg3QSwweDY2LDB4NzIsMHg3RCwweEY3LDB4NTYsMHg3
NywKKyAgICAweDg3LDB4ODIsMHg2NiwweDcyLDB4NUQsMHg1RCwweEQ3LDB4REEsMHg4NywweDdB
LDB4NDYsMHg3MiwweEVBLDB4QUYsMHgzRSwweEZFLAorICAgIDB4ODYsMHg3QSwweDY2LDB4NzIs
MHg3RSwweEVELDB4Q0IsMHhBMSwweDg2LDB4N0EsMHg0NiwweDcyLDB4QkQsMHhBQSwweEFBLDB4
MkEsCisgICAgMHg4NiwweDdBLDB4NjYsMHg3MiwweDdELDB4NzksMHhGMCwweEI0LDB4ODcsMHg3
QSwweDQ2LDB4NzIsMHhFQSwweEYwLDB4RUEsMHhGOCwKKyAgICAweDg3LDB4N0EsMHg0NiwweDcy
LDB4RkIsMHhGRSwweEIyLDB4MkIsMHg4NywweDdBLDB4NDYsMHg3MiwweEFFLDB4Q0UsMHhCRSww
eEJFLAorICAgIDB4QTcsMHg4MiwweDQ2LDB4NzIsMHhGRSwweEJGLDB4OUYsMHgyQSwweEE3LDB4
ODIsMHg2NiwweDdBLDB4NzUsMHg1NywweEJGLDB4RkYsCisgICAgMHg4NywweDdBLDB4NDUsMHg3
QSwweEFGLDB4MkIsMHgyMCwweEEwLDB4RUMsMHhBQiwweDg3LDB4N0EsMHg5NSwweEI1LDB4MkQs
MHgwRCwKKyAgICAweENCLDB4QTMsMHhFNSwweDY5LDB4N0UsMHg3QywweDc4LDB4NzgsMHhBNSww
eDU5LDB4RTIsMHgzOCwweDVDLDB4NTgsMHg1OCwweEY4LAorICAgIDB4RTMsMHgzOCwweEEyLDB4
MjgsMHg3RCwweDVCLDB4RkUsMHhGOCwweEUzLDB4MzAsMHhBMiwweDI4LDB4QkYsMHg4QiwweEFB
LDB4RkQsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEJFLDB4RjgsMHhGOCwweEZFLDB4RTIs
MHgzMCwweDgxLDB4MjgsMHhGQSwweEZGLDB4M0UsMHgyRCwKKyAgICAweDQ0LDB4NDEsMHhBMiww
eDI4LDB4QkQsMHgyRiwweDJCLDB4MDIsMHg4NSwweDQ5LDB4RTMsMHgzOCwweDYzLDB4N0UsMHg1
RiwweDU3LAorICAgIDB4ODUsMHg1MSwweEUzLDB4MzgsMHgyNSwweDJELDB4MEYsMHhBRCwweDg1
LDB4NTEsMHhFMiwweDM4LDB4QUEsMHhCOCwweEY4LDB4N0EsCisgICAgMHg4NSwweDUxLDB4RTIs
MHgzOCwweDgwLDB4RkEsMHg1NSwweDU1LDB4MjQsMHgzOSwweEMyLDB4MzgsMHhCRSwweEQ0LDB4
QkIsMHg1RiwKKyAgICAweDQ0LDB4NDEsMHhFMywweDM4LDB4MEIsMHhDRiwweEQ1LDB4NUYsMHg0
NCwweDQ5LDB4RTIsMHgzOCwweDVDLDB4REEsMHhFOSwweDk3LAorICAgIDB4ODUsMHg0OSwweDAz
LDB4NDEsMHgzRCwweEI1LDB4REYsMHg1RiwweDg1LDB4NTEsMHhFMywweDM4LDB4NTgsMHhGRSww
eEFBLDB4QUEsCisgICAgMHg0NSwweDQ5LDB4QzMsMHgzOCwweEY1LDB4RkYsMHhFRSwweDA4LDB4
QTUsMHg1MSwweDAzLDB4MzksMHgyOSwweEJELDB4RkQsMHhCRSwKKyAgICAweDg1LDB4NTEsMHgw
MywweDQxLDB4NzgsMHhGQSwweEZBLDB4QUEsMHhFNSwweDYxLDB4MDMsMHg0MSwweEJELDB4QUQs
MHgyRiwweDJCLAorICAgIDB4NDcsMHg3MiwweEE0LDB4NTksMHgwRCwweEJGLDB4RkIsMHg3Riww
eDI2LDB4NkEsMHg2NCwweDUxLDB4RjgsMHg3QywweDdGLDB4RjUsCisgICAgMHhDNiwweDYxLDB4
NDMsMHg1MSwweDhBLDB4QUQsMHg4NSwweDJFLDB4MDYsMHg2QSwweDg1LDB4NTksMHhBRiwweENE
LDB4OEYsMHgwMiwKKyAgICAweEU2LDB4NjksMHg2NCwweDUxLDB4QzAsMHhFMiwweEY3LDB4REQs
MHhBNSwweDU5LDB4NDQsMHg0OSwweDBCLDB4NzcsMHhERiwweEZCLAorICAgIDB4QTUsMHg1OSww
eDQ0LDB4NDksMHhGMiwweDdGLDB4RkQsMHg1NSwweEM2LDB4NTksMHg0NCwweDQ5LDB4QkQsMHgz
NSwweDM1LDB4QkIsCisgICAgMHhFNiwweDU5LDB4ODUsMHg1OSwweEY2LDB4QzAsMHg4MCwweEIy
LDB4RTYsMHg2MSwweEE1LDB4NTksMHhFMiwweEY1LDB4REYsMHhGOSwKKyAgICAweEM5LDB4ODIs
MHhBNSwweDU5LDB4MkIsMHhBRCwweEI3LDB4QUYsMHgxMCwweENELDB4QTgsMHg4MiwweDBCLDB4
MkQsMHhCRCwweEY1LAorICAgIDB4RDMsMHhERCwweDRFLDB4QjQsMHgwMCwweDAwLDB4MDMsMHgy
RCwweEIzLDB4REQsMHg3MiwweEQ1LDB4REMsMHg1NywweDk2LDB4RkUsCisgICAgMHhGNCwweERE
LDB4NzIsMHhENSwweDJELDB4QUIsMHgyQiwweDJCLDB4MzUsMHhFNiwweEQzLDB4REQsMHg4Qiww
eDdBLDB4NTUsMHhCRiwKKyAgICAweEY0LDB4REQsMHgxMCwweEM1LDB4QTAsMHhFMCwweEUwLDB4
NzAsMHgxNCwweEU2LDB4MTAsMHhDNSwweDAyLDB4MDIsMHgwQiwweDJELAorICAgIDB4NzYsMHhF
RSwweDE0LDB4RTYsMHhFOSwweDJBLDB4QUEsMHhGQSwweDU1LDB4RUUsMHgxNCwweEU2LDB4RUEs
MHhGOCwweEZFLDB4N0YsCisgICAgMHhCNywweEY2LDB4MTQsMHhFNiwweEJELDB4MjUsMHgyNSww
eDJELDB4QjcsMHhGNiwweDc2LDB4RUUsMHhGOCwweEJBLDB4RkEsMHg1RSwKKyAgICAweDk2LDB4
RUUsMHg1NSwweEVFLDB4MjAsMHhDQSwweEJBLDB4RkQsMHg3NiwweEVFLDB4RjQsMHhERCwweDYw
LDB4ODAsMHhBMCwweEEyLAorICAgIDB4NTUsMHhFRSwweEIzLDB4RDUsMHg1NywweDVGLDB4Nzgs
MHg3OCwweEIyLDB4RDUsMHg3MywweENELDB4QkEsMHhGRSwweEVBLDB4MzIsCisgICAgMHg5Miww
eEQ1LDB4NzIsMHhDRCwweEY4LDB4RUMsMHg2OCwweEZBLDB4OTIsMHhENSwweDMxLDB4QzUsMHhG
RiwweEZFLDB4N0EsMHg3MiwKKyAgICAweEM0LDB4NjEsMHg0MiwweDU5LDB4M0YsMHhGRiwweEJG
LDB4RkYsMHg2NiwweDcyLDB4NjQsMHg1OSwweDBBLDB4QkQsMHhENSwweDU1LAorICAgIDB4ODYs
MHg3QSwweDQ0LDB4NTksMHg4MiwweDIyLDB4QUYsMHhGNSwweDg3LDB4N0EsMHhDNCwweDYxLDB4
MEEsMHg4MCwweEFBLDB4QUQsCisgICAgMHg4NiwweDdBLDB4MjYsMHg3MiwweDI4LDB4QUEsMHhB
QSwweEE5LDB4ODcsMHg3QSwweDI1LDB4NzIsMHhBQSwweEEyLDB4QUEsMHg4QiwKKyAgICAweDg3
LDB4N0EsMHg2NiwweDcyLDB4QTEsMHgwRCwweEJCLDB4NjMsMHg4NiwweDdBLDB4NjYsMHg3Miww
eDI3LDB4QzAsMHhCOCwweDJDLAorICAgIDB4ODcsMHg3QSwweDY2LDB4NzIsMHhCQiwweDI4LDB4
MDIsMHhBQywweDg2LDB4N0EsMHg0NiwweDcyLDB4QjgsMHhDMCwweDA4LDB4QjgsCisgICAgMHg4
NywweDdBLDB4MjUsMHg3QSwweEEyLDB4QTIsMHhDMiwweDIyLDB4QTcsMHg3QSwweDQ2LDB4N0Es
MHg3QSwweEJGLDB4QkIsMHgyRSwKKyAgICAweDg3LDB4N0EsMHg2NiwweDdBLDB4MzIsMHgwOCww
eEIwLDB4RDMsMHhBNywweDgyLDB4NjYsMHg3QSwweDY3LDB4QkUsMHhCRiwweEFFLAorICAgIDB4
NkEsMHg5QiwweDg3LDB4N0EsMHg1NSwweEQ1LDB4RDUsMHgxNSwweDJFLDB4QjQsMHgwOCwweDhC
LDB4MkQsMHg4OSwweDgzLDB4MjIsCisgICAgMHg4QSwweDlCLDB4MDUsMHg2QSwweDc4LDB4NTgs
MHg1QywweDdDLDB4RTYsMHg2MSwweDAyLDB4NDEsMHhGQSwweDc4LDB4NzgsMHg3OCwKKyAgICAw
eDIzLDB4NDEsMHhBMiwweDI4LDB4NzgsMHg3QSwweEZBLDB4NkEsMHhDMiwweDMwLDB4QTIsMHgy
OCwweDlCLDB4M0UsMHg1NywweDdELAorICAgIDB4QzIsMHgyOCwweDgxLDB4MjgsMHhGOCwweEVB
LDB4QjYsMHhCQiwweEUzLDB4MzgsMHg4MiwweDI4LDB4MzcsMHhBRiwweEFGLDB4QUYsCisgICAg
MHgyNCwweDQxLDB4QTIsMHgzMCwweDgwLDB4QUEsMHhGRiwweEQ3LDB4NDQsMHg0MSwweEMyLDB4
MzAsMHhGNywweEZELDB4OEIsMHhDOSwKKyAgICAweDI0LDB4NDEsMHhDMiwweDM4LDB4MkIsMHhB
OSwweEVGLDB4MkIsMHg0NCwweDQ5LDB4QzIsMHgzOCwweDY4LDB4RkUsMHhGNywweEJFLAorICAg
IDB4MjQsMHg0MSwweEMyLDB4MzAsMHhFNSwweEI3LDB4QTcsMHgwQywweDA0LDB4NDEsMHhBMiww
eDMwLDB4RjgsMHhDMCwweDAwLDB4QTgsCisgICAgMHhFMywweDMwLDB4ODIsMHgzMCwweEEzLDB4
RUYsMHhERiwweEJFLDB4MjMsMHg0MSwweEMyLDB4MzgsMHgyQiwweDI5LDB4QUIsMHgyQSwKKyAg
ICAweDQ0LDB4NDEsMHgwMywweDQxLDB4RUIsMHg3MiwweDgyLDB4MEEsMHg0NCwweDQ5LDB4RTMs
MHgzOCwweDBBLDB4ODMsMHhBRSwweDdGLAorICAgIDB4ODYsMHg0OSwweDAzLDB4NDEsMHhBRiww
eDI3LDB4MkQsMHhGRCwweDg1LDB4NTEsMHgwMywweDQxLDB4RTAsMHhGOCwweERDLDB4NUYsCisg
ICAgMHg4NSwweDUxLDB4MjQsMHg0MSwweDhELDB4RUYsMHhFQiwweDdGLDB4MDYsMHg2MiwweDA0
LDB4NDEsMHgyRiwweDNGLDB4QjUsMHhGNSwKKyAgICAweEU1LDB4NjEsMHg0NCwweDQ5LDB4RTgs
MHhFRSwweERGLDB4NTcsMHhBNSwweDU5LDB4MjMsMHg0OSwweDBBLDB4MjgsMHhCRiwweDk1LAor
ICAgIDB4RTYsMHg2MSwweDg1LDB4NTksMHgzRiwweEJBLDB4QUEsMHg3RiwweDI3LDB4NzIsMHhB
NSwweDU5LDB4RTAsMHg4QiwweEFGLDB4REQsCisgICAgMHhFNiwweDYxLDB4MDMsMHg0MSwweEZF
LDB4NUUsMHhGOCwweEEyLDB4ODUsMHg1MSwweDIzLDB4NDksMHg4OCwweDgzLDB4MzUsMHhGRSwK
KyAgICAweDY0LDB4NDksMHg0NCwweDQ5LDB4QTgsMHg4MSwweDgzLDB4M0QsMHhDNiwweDU5LDB4
NjQsMHg0OSwweEY5LDB4RTIsMHgwMSwweDVGLAorICAgIDB4QTUsMHg1OSwweDQ0LDB4NDksMHg4
OCwweEZBLDB4OUEsMHg1RSwweEU1LDB4NjEsMHg0MywweDQ5LDB4ODMsMHhBRCwweEZGLDB4RUQs
CisgICAgMHg2NywweDcyLDB4QzUsMHg1OSwweDA5LDB4MEIsMHgyRCwweDI1LDB4MjksMHg4Qiww
eDg3LDB4N0EsMHgyQiwweEFGLDB4RkQsMHhGRCwKKyAgICAweDExLDB4Q0QsMHhDOCwweDgyLDB4
MEIsMHgyNSwweEJELDB4RDUsMHgxNCwweEU2LDB4RDAsMHhDNCwweEFBLDB4QTIsMHgwQSwweDA5
LAorICAgIDB4NTYsMHhFRSwweEIzLDB4RDUsMHhBRCwweEFGLDB4QUEsMHgwQSwweDU1LDB4RUUs
MHhGMywweERELDB4REYsMHhCRiwweENBLDB4QTAsCisgICAgMHgxNCwweEU2LDB4RjAsMHhDNCww
eDU4LDB4NTgsMHhEQywweEZFLDB4MTQsMHhFNiwweEYwLDB4QzQsMHgyRCwweDJGLDB4M0YsMHgz
RiwKKyAgICAweDc2LDB4RUUsMHgxNCwweEU2LDB4RjgsMHg2QSwweEZBLDB4RUEsMHg5NiwweEVF
LDB4MTQsMHhFNiwweEQ3LDB4RDUsMHhCRCwweDJGLAorICAgIDB4OTYsMHhFRSwweDM1LDB4RTYs
MHgwOSwweDBBLDB4MDIsMHhBMCwweDk2LDB4RUUsMHg1NSwweEU2LDB4RjgsMHg1RSwweERFLDB4
NUYsCisgICAgMHg3NSwweEVFLDB4NTUsMHhFNiwweEVGLDB4QkYsMHhCRSwweDVFLDB4NzUsMHhF
RSwweDU1LDB4RTYsMHhDQiwweEVCLDB4RkEsMHhCRCwKKyAgICAweDc2LDB4RUUsMHhEMywweERE
LDB4N0EsMHhBQSwweEEwLDB4QTAsMHg1NSwweEVFLDB4OTIsMHhENSwweDU3LDB4NUUsMHhFOCww
eDgwLAorICAgIDB4MTQsMHhFNiwweDkyLDB4RDUsMHg3NSwweDU1LDB4NUYsMHg3QywweEIyLDB4
RDUsMHg1MSwweENELDB4REUsMHhERSwweEY4LDB4RUEsCisgICAgMHg4NCwweDYxLDB4NDMsMHg1
OSwweEJCLDB4RkEsMHhCRSwweDdBLDB4ODQsMHg2MSwweDQzLDB4NTksMHhDQSwweDY2LDB4OEYs
MHhFRCwKKyAgICAweDQzLDB4NjEsMHg4NCwweDU5LDB4REUsMHhERCwweEZGLDB4RkEsMHhDNCww
eDYxLDB4NjMsMHg1OSwweDM1LDB4QkQsMHhGNSwweDdELAorICAgIDB4NDYsMHg3MiwweDQzLDB4
NTEsMHgwMiwweEZGLDB4RDUsMHg1NSwweDY2LDB4NzIsMHg0MywweDUxLDB4MDAsMHgwQSwweEJG
LDB4NTUsCisgICAgMHhDNywweDdBLDB4QTUsMHg2MSwweEE4LDB4QUEsMHhBQSwweEY1LDB4ODcs
MHg3QSwweDQ2LDB4NzIsMHhBMCwweEMyLDB4ODAsMHg4OSwKKyAgICAweDg3LDB4N0EsMHg2Niww
eDdBLDB4QkUsMHhBRSwweEE2LDB4QUQsMHg4NywweDdBLDB4NjYsMHg3QSwweDlFLDB4QkUsMHhB
RiwweDQ3LAorICAgIDB4ODcsMHg3QSwweDY2LDB4N0EsMHhBRSwweDY4LDB4OEYsMHhBMCwweEE4
LDB4ODIsMHg2NywweDdBLDB4RkIsMHhBRiwweEFGLDB4QkIsCisgICAgMHhBNywweDgyLDB4Njcs
MHg3QSwweEZELDB4RkIsMHhFQSwweEJGLDB4QTcsMHg4MiwweDY3LDB4N0EsMHhBRSwweEVGLDB4
RUYsMHhFRSwKKyAgICAweENCLDB4QTMsMHg4NywweDgyLDB4MzUsMHgyRCwweDA5LDB4MDMsMHgw
RCwweEFDLDB4Q0MsMHhBQiwweEZBLDB4NUQsMHhGNiwweDU1LAorICAgIDB4QUEsMHhBMywweEE0
LDB4NTksMHg3QywweDc4LDB4NzgsMHg3MCwweEE1LDB4NTksMHgwMiwweDQxLDB4NzgsMHhGQSww
eEZBLDB4NkEsCisgICAgMHgwMiwweDQxLDB4QzIsMHgzMCwweDdBLDB4NUEsMHg1QSwweDc4LDB4
QzIsMHgzMCwweDgyLDB4MjgsMHhBQiwweEFGLDB4MDIsMHgwOCwKKyAgICAweEUyLDB4MzAsMHhB
MiwweDI4LDB4RDUsMHhCNSwweEFBLDB4QTgsMHg0NCwweDQxLDB4QTIsMHgyOCwweERELDB4RkQs
MHhBRiwweDAzLAorICAgIDB4MjMsMHg0MSwweEExLDB4MzAsMHhENywweEVGLDB4MkEsMHgwMCww
eDI0LDB4NDEsMHhFMywweDM4LDB4QUYsMHgwQSwweDAwLDB4MjIsCisgICAgMHgyNCwweDQxLDB4
RTMsMHgzOCwweDBCLDB4MEEsMHgwMiwweDgwLDB4NDQsMHg0MSwweEUzLDB4MzgsMHhCQSwweDYw
LDB4NUYsMHhENywKKyAgICAweDY0LDB4NDksMHgyNCwweDQxLDB4NjYsMHhDQiwweDQxLDB4NEQs
MHg0NCwweDQxLDB4QzMsMHgzOCwweDc3LDB4NzcsMHhCRiwweEEwLAorICAgIDB4MjMsMHg0MSww
eEEyLDB4MzAsMHhCNSwweEJGLDB4QUEsMHgwMCwweDY1LDB4NDksMHhFMywweDM4LDB4QUYsMHgw
QSwweDJELDB4QjUsCisgICAgMHgyMywweDQxLDB4RTMsMHgzOCwweEE4LDB4QTgsMHhDQywweDcy
LDB4MjQsMHg0MSwweEUzLDB4MzgsMHhGRiwweDJGLDB4MkYsMHgzRCwKKyAgICAweDI0LDB4NDEs
MHhFMywweDM4LDB4OEIsMHhGNywweEJBLDB4RTAsMHg2NCwweDQ5LDB4MDMsMHg0MSwweDVELDB4
RkQsMHhCRCwweDAzLAorICAgIDB4NjUsMHg1MSwweDAzLDB4NDEsMHhERiwweEU5LDB4RUYsMHhF
OCwweDQ0LDB4NDksMHhFMywweDQwLDB4MjcsMHhFRiwweEFCLDB4MkUsCisgICAgMHgyMywweDQ5
LDB4RTMsMHg0MCwweDgwLDB4RTIsMHg1MCwweEY4LDB4ODUsMHg1MSwweEUyLDB4NDAsMHhBNyww
eEI3LDB4QkQsMHhCNSwKKyAgICAweEE1LDB4NTksMHg0NCwweDQ5LDB4MDIsMHhBQSwweEVBLDB4
N0EsMHhBNSwweDU5LDB4MDMsMHg0MSwweEEyLDB4RUEsMHg3NywweEQ1LAorICAgIDB4QTUsMHg1
OSwweDAzLDB4MzksMHg4MiwweEFFLDB4RkYsMHhENSwweDY0LDB4NDksMHgwMywweDQxLDB4MkEs
MHgyQywweDM2LDB4OUQsCisgICAgMHg2NCwweDQ5LDB4MjQsMHg0MSwweDJFLDB4QjcsMHhEQiww
eEU4LDB4ODUsMHg0OSwweDIzLDB4NDEsMHgwMiwweEFFLDB4QkYsMHg3NywKKyAgICAweDY0LDB4
NDksMHgwMywweDQxLDB4RTgsMHhFOCwweERGLDB4N0YsMHg4NCwweDUxLDB4MjMsMHg0MSwweDI1
LDB4MjUsMHhCRCwweDI5LAorICAgIDB4NDcsMHg3MiwweEE0LDB4NTEsMHhBRCwweEE1LDB4QUYs
MHgyRCwweDg3LDB4N0EsMHhDNiwweDYxLDB4MEIsMHhCNSwweEJGLDB4QkEsCisgICAgMHhFOCww
eDgyLDB4NjcsMHg3QSwweDIyLDB4OEEsMHhBOSwweEE5LDB4RDMsMHhERCwweDA5LDB4OEIsMHgw
OSwweDBELDB4MkQsMHgzNSwKKyAgICAweDU1LDB4RUUsMHhGNCwweEU1LDB4MkQsMHgwRCwweEEy
LDB4RkYsMHgzNSwweEVFLDB4OTIsMHhENSwweDAwLDB4RTAsMHg3OCwweDdGLAorICAgIDB4OTIs
MHhENSwweEYwLDB4QzQsMHhEQywweEZFLDB4RjcsMHhGRiwweEQzLDB4REQsMHgxMCwweEM1LDB4
MzUsMHhCRCwweEJGLDB4QkQsCisgICAgMHg3NiwweEVFLDB4RDQsMHhERCwweDIyLDB4MjMsMHgw
QiwweDA5LDB4QjcsMHhGNiwweDc2LDB4RUUsMHhCNSwweEFGLDB4QkYsMHhBQiwKKyAgICAweDk2
LDB4RUUsMHg3NiwweEVFLDB4N0MsMHg1OCwweDVDLDB4N0UsMHg3NSwweEVFLDB4NTUsMHhFNiww
eEJFLDB4RjAsMHhGQiwweEZFLAorICAgIDB4NzUsMHhFRSwweDU1LDB4RTYsMHhGQywweDVGLDB4
RkQsMHg1NywweDc1LDB4RUUsMHgzNCwweEU2LDB4MEYsMHhBRSwweEFFLDB4RkEsCisgICAgMHg3
NiwweEVFLDB4NTUsMHhFNiwweDdFLDB4NUEsMHhGRiwweEVCLDB4NzYsMHhFRSwweDU1LDB4RTYs
MHg3NywweDdGLDB4NUQsMHgwOCwKKyAgICAweDc2LDB4RUUsMHgxNCwweEU2LDB4NTcsMHhCRSww
eEFFLDB4MDAsMHg1NiwweEVFLDB4QjMsMHhENSwweDU3LDB4QkEsMHg4MCwweDAwLAorICAgIDB4
NjMsMHg1OSwweDIzLDB4NTEsMHhFMiwweDNCLDB4M0EsMHgzQywweDg0LDB4NjEsMHg0MywweDU5
LDB4QkUsMHhEQiwweEU4LDB4NkEsCisgICAgMHg4NCwweDU5LDB4NDMsMHg1OSwweEZBLDB4RUEs
MHgwQSwweDgzLDB4ODQsMHg2MSwweDIyLDB4NTEsMHhFMCwweDdBLDB4REUsMHhCQiwKKyAgICAw
eDQzLDB4NTEsMHgyMiwweDUxLDB4NEIsMHg4QywweDZDLDB4MUEsMHg2NCwweDU5LDB4MDIsMHg0
OSwweEZGLDB4OTcsMHhBRiwweEEyLAorICAgIDB4ODQsMHg2MSwweDIzLDB4NTEsMHhBRCwweEI3
LDB4MjcsMHgyQiwweDI2LDB4NzIsMHg4NCwweDU5LDB4MEEsMHhENSwweDU1LDB4NTUsCisgICAg
MHg2NiwweDdBLDB4ODQsMHg2MSwweDAwLDB4MEIsMHhENSwweDU1LDB4NjcsMHg3QSwweDg0LDB4
NjEsMHgwMCwweDAwLDB4MDIsMHhCNSwKKyAgICAweEE3LDB4ODIsMHg0NywweDdBLDB4QUEsMHgy
QSwweEJCLDB4QkQsMHhBNywweDgyLDB4NjcsMHg3QSwweEVCLDB4QUYsMHhCNywweEJCLAorICAg
IDB4QTcsMHg4MiwweDg3LDB4N0EsMHhGQSwweEYzLDB4MUYsMHhGNSwweEFCLDB4QTMsMHg4Nyww
eDgyLDB4RDUsMHg5NSwweDNELDB4MkQsCisgICAgMHhFQywweEFCLDB4OEEsMHg5QiwweEE5LDB4
RTMsMHhGQSwweEZBLDB4Q0IsMHhBMywweEFCLDB4QTMsMHgwRCwweEZBLDB4RkQsMHhGRCwKKyAg
ICAweEFCLDB4QTMsMHgwNSwweDZBLDB4NzAsMHg3OCwweDcwLDB4RTAsMHhDNSwweDU5LDB4RTIs
MHg0MCwweEZFLDB4REUsMHg3OCwweDc4LAorICAgIDB4NDQsMHg0MSwweEMyLDB4MzgsMHg1QSww
eDcyLDB4RkIsMHg1RiwweEUzLDB4MzgsMHhBMiwweDMwLDB4RUYsMHhDRCwweEZELDB4QUEsCisg
ICAgMHgwMywweDM5LDB4QTIsMHgzMCwweEFGLDB4QUYsMHgyNSwweDBFLDB4NjQsMHg0OSwweDAz
LDB4NDEsMHhBNywweEFGLDB4OEIsMHgwQiwKKyAgICAweDY1LDB4NDksMHgwMywweDQxLDB4RkUs
MHg3QSwweEFBLDB4MkEsMHg2NSwweDQ5LDB4MDMsMHg0MSwweEZGLDB4RkIsMHhGOCwweERDLAor
ICAgIDB4MjQsMHg0MSwweEUzLDB4MzgsMHg0MCwweEY3LDB4OUMsMHhBMCwweDg1LDB4NTEsMHhF
MywweDM4LDB4REQsMHhBRCwweEMyLDB4MDIsCisgICAgMHg4NSwweDUxLDB4MDMsMHg0MSwweEU3
LDB4QjcsMHhGRiwweDJGLDB4ODUsMHg1MSwweDI0LDB4NDksMHhGQiwweDdCLDB4QzIsMHgwMCwK
KyAgICAweDg0LDB4NTEsMHgyNCwweDQ5LDB4N0UsMHhBOSwweDJELDB4MkUsMHg2NSwweDQ5LDB4
RTMsMHgzOCwweEI1LDB4QjcsMHhGRSwweDVDLAorICAgIDB4MjMsMHg0MSwweEUzLDB4MzgsMHhF
MCwweEUwLDB4RkIsMHhERCwweDI0LDB4NDEsMHhFMywweDM4LDB4MkYsMHgyNiwweEVGLDB4RkUs
CisgICAgMHgyNCwweDQxLDB4RTMsMHgzOCwweEY4LDB4OUUsMHhGQSwweEZBLDB4QTUsMHg1MSww
eDAzLDB4NDEsMHgyOSwweDA5LDB4MEQsMHgyRCwKKyAgICAweDg1LDB4NTEsMHhFMiwweDM4LDB4
NzgsMHhGQSwweEY4LDB4RkEsMHg2NSwweDUxLDB4RTMsMHgzOCwweEFGLDB4MEYsMHhCRiwweEZE
LAorICAgIDB4ODUsMHg1OSwweDAzLDB4NDEsMHg3RSwweEZFLDB4QkYsMHgyQiwweDY0LDB4NDks
MHgwMywweDQxLDB4MkQsMHgyRSwweDMwLDB4MkMsCisgICAgMHg4NSwweDUxLDB4MjMsMHg0MSww
eDU4LDB4N0EsMHhFMiwweEYzLDB4NDQsMHg0OSwweDAzLDB4NDEsMHhFMiwweDAwLDB4MzcsMHgx
QiwKKyAgICAweDQzLDB4NDEsMHhFMywweDM4LDB4RkEsMHhGQiwweEVBLDB4RUUsMHgyMywweDQx
LDB4QzIsMHgzOCwweDJBLDB4QkYsMHgyOSwweDJCLAorICAgIDB4NjQsMHg0OSwweDIzLDB4NDEs
MHhBMiwweEVCLDB4RDUsMHg1RCwweDQ0LDB4NDksMHhFMiwweDM4LDB4MjgsMHhGQSwweERGLDB4
REYsCisgICAgMHg0NCwweDQxLDB4MDMsMHg0MSwweEFFLDB4MUYsMHgyQiwweEFGLDB4QTUsMHg1
MSwweDQ0LDB4NDksMHgzRCwweDBCLDB4MkYsMHhFRCwKKyAgICAweDQ3LDB4NkEsMHhBNSwweDU5
LDB4MkIsMHgyRCwweDk1LDB4RkQsMHhDOCwweDgyLDB4MDYsMHg2MiwweEZGLDB4QUEsMHgwMyww
eEE1LAorICAgIDB4QzgsMHg4MiwweDY3LDB4N0EsMHgyNywweDNGLDB4OTYsMHg1RiwweDRELDB4
QUMsMHhFOCwweDgyLDB4MzUsMHhCNSwweEQ1LDB4NTUsCisgICAgMHhGNCwweEU1LDB4OEIsMHg5
QiwweDAwLDB4MDMsMHgwQiwweDA5LDB4MTUsMHhFNiwweDEwLDB4QzUsMHhFOCwweDYwLDB4NzAs
MHg3OCwKKyAgICAweDMxLDB4Q0QsMHhGMCwweEM0LDB4QUEsMHhCRiwweDk1LDB4OTUsMHg1MSww
eENELDB4MTAsMHhDNSwweDBBLDB4MkEsMHgzRiwweDNGLAorICAgIDB4OTYsMHhGNiwweDcyLDB4
Q0QsMHgyQiwweDBELDB4MkQsMHgyNSwweEI2LDB4RjYsMHg3NiwweEVFLDB4QUIsMHhFRiwweDAy
LDB4RkEsCisgICAgMHhCNywweEY2LDB4NTUsMHhFNiwweEVCLDB4QkEsMHg4MCwweDdGLDB4Qjcs
MHhGNiwweDM1LDB4RTYsMHhGQiwweDhBLDB4QUEsMHg1NSwKKyAgICAweEI2LDB4RjYsMHgxNCww
eERFLDB4QUUsMHgwOCwweEFBLDB4NTUsMHg5NiwweEVFLDB4OTIsMHhDRCwweDAwLDB4MDAsMHhB
MCwweDVGLAorICAgIDB4NzYsMHhFRSwweEYwLDB4QkMsMHgwMCwweDAwLDB4QUEsMHg1RiwweDk2
LDB4RjYsMHhEMCwweEJDLDB4MDAsMHg4OCwweEZFLDB4NTUsCisgICAgMHg3NiwweEVFLDB4OEYs
MHhBQywweDAwLDB4QUEsMHhGRiwweEY1LDB4MzYsMHhFNiwweDMyLDB4QzUsMHhFOCwweEZGLDB4
RkYsMHg3RiwKKyAgICAweDg0LDB4NTksMHgyMywweDU5LDB4QjcsMHhCRiwweDJCLDB4OEIsMHg4
NCwweDU5LDB4NDQsMHg1OSwweEY2LDB4QUEsMHhBOCwweEMyLAorICAgIDB4ODQsMHg1OSwweDIz
LDB4NTEsMHg2QSwweEY4LDB4QUIsMHhGRiwweDg0LDB4NTksMHgyMywweDUxLDB4RjEsMHhGRCww
eDdGLDB4QUYsCisgICAgMHg2MywweDU5LDB4MjMsMHg1MSwweDZBLDB4NzIsMHhERiwweDc3LDB4
ODQsMHg2MSwweDIzLDB4NTEsMHg3RCwweEY1LDB4MkQsMHhBRiwKKyAgICAweDg0LDB4NjEsMHg0
MywweDU5LDB4QTksMHg4QSwweDg4LDB4MDgsMHhBNCwweDYxLDB4NjMsMHg1OSwweEZFLDB4QkEs
MHgyRiwweEFGLAorICAgIDB4QTQsMHg2MSwweDQzLDB4NTksMHhFQSwweDdDLDB4RkUsMHhGRiww
eDY0LDB4NTksMHg0MywweDU5LDB4MUUsMHg1OCwweDdFLDB4NTcsCisgICAgMHg0NywweDdBLDB4
MjMsMHg1MSwweDJCLDB4RjUsMHhERCwweDU1LDB4NjcsMHg3QSwweDIzLDB4NTEsMHgwMCwweDBB
LDB4RjUsMHg1NSwKKyAgICAweDg3LDB4N0EsMHgyMywweDUxLDB4MDAsMHgwMCwweDBBLDB4MzUs
MHhFQiwweEFCLDB4QzgsMHg4MiwweDJELDB4MDksMHg4MywweEEyLAorICAgIDB4Q0IsMHhBMyww
eDZBLDB4OUIsMHhBOCwweERGLDB4NUYsMHhERCwweEFCLDB4QTMsMHg2QSwweDlCLDB4MkEsMHhF
QiwweEVELDB4QTksCisgICAgMHhBQiwweEEzLDB4NDYsMHg3MiwweDYwLDB4N0EsMHg2QSwweEYw
LDB4NjYsMHg3QSwweDIzLDB4NDksMHg3RSwweDdBLDB4N0EsMHhGOCwKKyAgICAweDIzLDB4NDks
MHhDMiwweDM4LDB4NTcsMHg1NywweDdDLDB4RDgsMHgwNCwweDQxLDB4QzIsMHgzOCwweEFELDB4
MkQsMHhCRCwweDlGLAorICAgIDB4NjQsMHg0OSwweEUzLDB4MzgsMHhGNSwweEZGLDB4RUUsMHhD
QSwweDg0LDB4NDksMHhFMiwweDM4LDB4MkQsMHhBRiwweEJGLDB4RjcsCisgICAgMHg2NCwweDQ5
LDB4MDMsMHg0MSwweEIwLDB4NTgsMHhERSwweDVFLDB4NDQsMHg0OSwweDAzLDB4MzksMHhENiww
eDdGLDB4N0EsMHhBMiwKKyAgICAweDQ0LDB4NDEsMHhFMiwweDQwLDB4REUsMHhCRSwweDhBLDB4
RjIsMHhBNiwweDUxLDB4NDMsMHg0OSwweEFCLDB4RUEsMHhFMywweDc5LAorICAgIDB4QzYsMHg1
OSwweDQ0LDB4NDksMHhGNSwweEFELDB4RUQsMHg4RCwweEE1LDB4NTksMHg0NCwweDUxLDB4M0Us
MHgxRiwweDE1LDB4RjcsCisgICAgMHgwNiwweDZBLDB4ODUsMHg1MSwweDU3LDB4N0EsMHhDMCww
eDgzLDB4QTUsMHg1MSwweEUyLDB4MzgsMHg1QywweDVBLDB4N0EsMHg2OCwKKyAgICAweDAzLDB4
MzksMHhBMiwweDMwLDB4QkYsMHhBRCwweDJCLDB4MkIsMHgyMywweDQxLDB4RTMsMHgzOCwweERF
LDB4N0QsMHhBQSwweDgyLAorICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHhFNywweDNCLDB4QkIs
MHhBOCwweDY0LDB4NTEsMHgwMywweDQxLDB4MjksMHg4RiwweEQ3LDB4REQsCisgICAgMHg2NCww
eDUxLDB4MDMsMHg0MSwweDcwLDB4QkEsMHhFQSwweEFCLDB4NjQsMHg0OSwweDAzLDB4NDksMHhE
RCwweDJFLDB4M0UsMHgzMiwKKyAgICAweEE2LDB4NTksMHg0MywweDQ5LDB4QUYsMHg4RiwweEZC
LDB4NTcsMHg4NCwweDQ5LDB4MjMsMHg0MSwweDk3LDB4RkUsMHhGQiwweEFBLAorICAgIDB4NjQs
MHg0OSwweEUzLDB4MzgsMHhFRSwweEVDLDB4N0EsMHg1QSwweDIzLDB4NDEsMHhDMiwweDMwLDB4
ODAsMHg4QSwweDI2LDB4MkEsCisgICAgMHg2NCwweDQ5LDB4RTIsMHgzOCwweDc3LDB4RkQsMHgw
RSwweDJBLDB4NjQsMHg0OSwweEUzLDB4MzgsMHgyNSwweEJELDB4QUUsMHhFMCwKKyAgICAweDY0
LDB4NDEsMHgwMywweDQxLDB4QUEsMHhBOCwweEZFLDB4NjcsMHg2NCwweDQ5LDB4MDMsMHgzOSww
eEQ1LDB4QjcsMHgyQiwweDJFLAorICAgIDB4NjQsMHg0OSwweDIzLDB4NDEsMHhGRCwweDdGLDB4
NTcsMHg1OCwweDY0LDB4NDksMHgwMywweDQxLDB4QkUsMHhFQSwweEMwLDB4ODEsCisgICAgMHhF
NiwweDYxLDB4NDQsMHg0OSwweDJCLDB4QUQsMHgyNSwweEY1LDB4NjYsMHg3MiwweEM1LDB4NTks
MHgwRiwweEFELDB4QUYsMHhBQiwKKyAgICAweDY3LDB4NzIsMHhFNSwweDY5LDB4RTgsMHhFQSww
eEZBLDB4RTIsMHhDOCwweDgyLDB4MjYsMHg2QSwweDAzLDB4MEQsMHhFRCwweEI1LAorICAgIDB4
NzIsMHhENSwweEM4LDB4ODIsMHgwRCwweDJELDB4MzUsMHhCNSwweEQzLDB4REQsMHhGMCwweEM0
LDB4NzAsMHg1OCwweDc4LDB4NUUsCisgICAgMHgxMCwweEM1LDB4RDAsMHhCQywweDJFLDB4MkYs
MHhCRiwweDE1LDB4NTEsMHhDRCwweDEwLDB4QzUsMHhCQiwweEJGLDB4RUQsMHhGRCwKKyAgICAw
eDE0LDB4RTYsMHgzMSwweENELDB4M0QsMHgzNSwweEI1LDB4RDUsMHhGNCwweERELDB4QUYsMHhC
QywweDAwLDB4RkUsMHg1RSwweDU2LAorICAgIDB4QjMsMHhENSwweDhGLDB4QjQsMHgwMCwweEZG
LDB4NzUsMHg1NSwweDcyLDB4Q0QsMHgyRCwweEFDLDB4MDAsMHhFQSwweDc3LDB4NTcsCisgICAg
MHg1MiwweENELDB4MkQsMHhBNCwweDAwLDB4RkYsMHg1RiwweDU1LDB4MTEsMHhDNSwweDJFLDB4
QTQsMHhBMCwweEZFLDB4NTUsMHgzRCwKKyAgICAweDMyLDB4QzUsMHg0RSwweEFDLDB4N0UsMHg1
NSwweEI1LDB4MDAsMHhCMywweEQ1LDB4OEYsMHhBQywweEI1LDB4MEQsMHgwQSwweDIyLAorICAg
IDB4QjQsMHhENSwweDExLDB4QkQsMHhCRCwweEU4LDB4RjgsMHg1QSwweDcyLDB4QzUsMHg2Riww
eEFDLDB4QTgsMHhFQSwweDVBLDB4N0UsCisgICAgMHg4NCwweDU5LDB4NDMsMHg1MSwweDJFLDB4
Q0UsMHg3NywweDZGLDB4NjQsMHg1OSwweDIzLDB4NTEsMHhBMCwweDdBLDB4NzcsMHg1RiwKKyAg
ICAweDYzLDB4NTksMHgyMywweDUxLDB4QkUsMHg4RiwweEVGLDB4RjUsMHgyMiwweDU5LDB4NjMs
MHg1MSwweEZGLDB4RUYsMHhCQiwweEFCLAorICAgIDB4NjMsMHg1OSwweDIzLDB4NTEsMHhGQiww
eEFGLDB4MDcsMHgwRiwweDg0LDB4NjEsMHg0MywweDU5LDB4MzksMHhERiwweEJFLDB4RkYsCisg
ICAgMHg4NCwweDYxLDB4NjMsMHg1OSwweDBBLDB4QUEsMHg5RiwweEM3LDB4QTQsMHg2MSwweDQz
LDB4NTksMHg2QSwweDZDLDB4NUYsMHhENywKKyAgICAweDYzLDB4NTksMHgyMywweDUxLDB4MDgs
MHhBQiwweEY4LDB4RkEsMHg0MywweDU5LDB4MjMsMHg1MSwweDBBLDB4OEEsMHg4MCwweDVDLAor
ICAgIDB4MjMsMHg1OSwweDAyLDB4NDksMHhEOCwweEZBLDB4QkUsMHhFNywweDIzLDB4NTEsMHgw
MywweDQ5LDB4QzAsMHhDOCwweDg4LDB4OEEsCisgICAgMHhBQiwweEEzLDB4NDMsMHg1OSwweDk1
LDB4MzUsMHgyNSwweDA5LDB4Q0IsMHhBMywweDRBLDB4OUIsMHhDMiwweEYwLDB4NTgsMHg3RSwK
KyAgICAweDhCLDB4OUIsMHg0OSwweDkzLDB4MjgsMHgwMiwweDBCLDB4RUYsMHhBQywweEEzLDB4
NkEsMHg5QiwweDBFLDB4QUYsMHhGRiwweEQ1LAorICAgIDB4Q0MsMHhBQiwweEM3LDB4ODIsMHg3
OCwweDUyLDB4NUEsMHg1RSwweEE3LDB4N0EsMHg2NCwweDUxLDB4N0UsMHg1OCwweDc4LDB4NjAs
CisgICAgMHg0NCwweDQ5LDB4MDMsMHg0MSwweDU4LDB4QTAsMHgyOCwweEJFLDB4MjMsMHg0MSww
eEUzLDB4MzgsMHg1NywweERDLDB4OUUsMHhGOCwKKyAgICAweDg0LDB4NTEsMHgyMywweDQxLDB4
ODksMHhBQiwweDhCLDB4OEIsMHg0NCwweDQ5LDB4RTIsMHgzOCwweEZFLDB4NTgsMHhGOCwweEJB
LAorICAgIDB4NDQsMHg0OSwweDAzLDB4NDEsMHg3MiwweEUzLDB4N0IsMHg1OCwweDY1LDB4NDks
MHhFMywweDM4LDB4RTIsMHhEQSwweEZGLDB4N0EsCisgICAgMHgyMywweDQxLDB4MDIsMHg0MSww
eEUwLDB4QTAsMHhERSwweDA5LDB4RTMsMHg0MCwweDIzLDB4MzksMHhCNywweDBCLDB4QUEsMHhB
RCwKKyAgICAweEM2LDB4NjEsMHgwMywweDQxLDB4MEQsMHg4RCwweDJELDB4MDksMHhBNSwweDU5
LDB4MDMsMHg0OSwweEU4LDB4RkUsMHhGNiwweDU2LAorICAgIDB4QzYsMHg2MSwweDIzLDB4NDks
MHgwQiwweDNGLDB4REYsMHhERCwweDg1LDB4NTEsMHhDMiwweDM4LDB4NzgsMHg3MCwweDYwLDB4
NjAsCisgICAgMHgwMywweDM5LDB4QTIsMHgzMCwweDJGLDB4MkQsMHhCRiwweDk3LDB4MjMsMHg0
MSwweEUzLDB4MzgsMHgyMiwweDJCLDB4RkYsMHg1NywKKyAgICAweDY0LDB4NDksMHgwNCwweDQx
LDB4RkEsMHhBQSwweDg5LDB4QUIsMHg4NSwweDUxLDB4MjMsMHg0OSwweDU3LDB4RTcsMHgyQiww
eDBBLAorICAgIDB4QTUsMHg1OSwweDQ0LDB4NDksMHhFRCwweDgyLDB4ODgsMHg4QiwweDg1LDB4
NTEsMHgwMywweDQxLDB4RkEsMHg1OCwweEZFLDB4REMsCisgICAgMHg0MywweDQ5LDB4RTIsMHgz
OCwweEUwLDB4RUEsMHhFQSwweEY4LDB4NjQsMHg0OSwweDAyLDB4MzksMHgwQiwweEFELDB4RkQs
MHhGNSwKKyAgICAweDIzLDB4NDEsMHgwMywweDM5LDB4NjAsMHhDMCwweEYwLDB4QUEsMHgyNCww
eDQxLDB4RTMsMHgzOCwweDJCLDB4RjgsMHg3NiwweDc2LAorICAgIDB4NjUsMHg0OSwweEUyLDB4
MzgsMHgwQSwweDJCLDB4QUYsMHhCRCwweEE1LDB4NTEsMHgyMywweDQxLDB4N0EsMHhFMiwweEVG
LDB4N0YsCisgICAgMHg0NCwweDQxLDB4MDMsMHgzOSwweERGLDB4NTcsMHhBOCwweEVBLDB4ODUs
MHg0OSwweDAzLDB4MzksMHgyQiwweDI5LDB4QUQsMHhGNywKKyAgICAweDY0LDB4NDksMHgyNCww
eDQxLDB4MDAsMHgyMCwweDk0LDB4QUYsMHhBNiwweDU5LDB4MjMsMHg0MSwweERELDB4N0EsMHhF
QSwweDJGLAorICAgIDB4ODQsMHg1MSwweDQ0LDB4NDksMHhFRiwweEY1LDB4QTcsMHhGOCwweDY3
LDB4NzIsMHg4NCwweDUxLDB4MkQsMHhCNSwweDU1LDB4NTUsCisgICAgMHhBOCwweDdBLDB4QTUs
MHg1OSwweEEwLDB4QUEsMHhBRCwweEI1LDB4QzksMHg4MiwweDI2LDB4NkEsMHhBRCwweEFCLDB4
MEYsMHhCNSwKKyAgICAweEVDLDB4QTMsMHhDOCwweDgyLDB4MTUsMHhCNSwweDk1LDB4RDUsMHhC
MywweERELDB4OEYsMHhCNCwweEZBLDB4RjMsMHhFMiwweEU5LAorICAgIDB4RjAsMHhDNCwweEFG
LDB4QkMsMHgyRSwweDJGLDB4QUYsMHg5NSwweDMxLDB4Q0QsMHhGMCwweEM0LDB4QTksMHgwQiww
eDI5LDB4RjUsCisgICAgMHg1MSwweENELDB4RjAsMHhCQywweDNBLDB4QUIsMHg2QSwweDdGLDB4
NzEsMHhENSwweDJELDB4QUMsMHhGOCwweDVFLDB4NUYsMHg1NywKKyAgICAweENGLDB4QkMsMHgy
RCwweEE0LDB4RkYsMHg1RiwweEY1LDB4MjUsMHg5MywweENELDB4MkQsMHhBNCwweDU1LDB4NTUs
MHhCRiwweDAyLAorICAgIDB4QjMsMHhENSwweDBELDB4QTQsMHhENSwweDJGLDB4MDIsMHgwMCww
eEI0LDB4RDUsMHgxMSwweEJELDB4QTksMHhFQywweEZDLDB4NUMsCisgICAgMHg3MywweENELDB4
RjAsMHhCNCwweEEwLDB4M0UsMHgzRiwweDM1LDB4OTMsMHhDRCwweEYxLDB4QkMsMHg2MCwweDYw
LDB4RTAsMHg3OCwKKyAgICAweDMyLDB4QkQsMHhCMCwweEI0LDB4QjAsMHhBNSwweEE3LDB4Njcs
MHhGMSwweEJDLDB4OEYsMHhBQywweDVBLDB4NUMsMHhENywweEY1LAorICAgIDB4NjQsMHg1MSww
eDIzLDB4NTEsMHhGMCwweDk2LDB4RkYsMHhGNSwweDQzLDB4NTEsMHgyMywweDUxLDB4M0MsMHg4
NCwweDc3LDB4QkIsCisgICAgMHg2NCwweDU5LDB4MjMsMHg1MSwweEI3LDB4RUQsMHhDRSwweEFC
LDB4NjMsMHg1OSwweDIzLDB4NTEsMHhGRiwweEFFLDB4MkUsMHg4RSwKKyAgICAweDg0LDB4NjEs
MHg0MywweDU5LDB4Q0IsMHhFQSwweDhFLDB4RkYsMHg4NCwweDYxLDB4NDMsMHg1OSwweDJCLDB4
QUQsMHhGNiwweDdGLAorICAgIDB4ODQsMHg1OSwweDIzLDB4NTEsMHhCOCwweEZBLDB4RUUsMHg3
RiwweDYzLDB4NTksMHgyMywweDUxLDB4QTgsMHhCQSwweEVBLDB4RTksCisgICAgMHg2MywweDU5
LDB4MjMsMHg1MSwweENGLDB4RTUsMHhGRiwweDc3LDB4MjMsMHg1MSwweDAzLDB4NDksMHg2Qyww
eEQ4LDB4Q0UsMHgwRiwKKyAgICAweDIzLDB4NTEsMHgwMywweDQ5LDB4NEQsMHg3MiwweEZGLDB4
RUIsMHhFOCwweDhBLDB4MDIsMHg1MSwweDU1LDB4RDUsMHhCNSwweDM1LAorICAgIDB4QUIsMHhB
MywweDI2LDB4NzIsMHgwOSwweDAzLDB4MDIsMHgwMCwweDhCLDB4QTMsMHgyOSwweDkzLDB4QTAs
MHhFMCwweEVBLDB4REUsCisgICAgMHg4QSwweDlCLDB4MDksMHg5MywweEY4LDB4RkUsMHhEQiww
eDdGLDB4OEIsMHg5QiwweDI5LDB4OTMsMHhBQiwweEFGLDB4QUQsMHgyRCwKKyAgICAweDZBLDB4
OUIsMHg4NywweDdBLDB4NzgsMHhEOCwweDc4LDB4NUMsMHhFOCwweDgyLDB4MDYsMHg2QSwweDYy
LDB4RTIsMHhFQSwweEFBLAorICAgIDB4ODgsMHg3QSwweDIzLDB4NDksMHg1NSwweDU3LDB4NUUs
MHg3OCwweDY0LDB4NDksMHhFMywweDQwLDB4RkIsMHg4QiwweDJELDB4QkYsCisgICAgMHg2NCww
eDQ5LDB4MDMsMHg0MSwweEFGLDB4OUUsMHhENiwweDVDLDB4MjMsMHg0MSwweEUzLDB4MzgsMHhC
QywweERDLDB4NUYsMHg1NywKKyAgICAweDQ0LDB4NDksMHgwMywweDQxLDB4ODIsMHgwOSwweDBE
LDB4MjcsMHg0NCwweDQ5LDB4RTMsMHgzOCwweDdBLDB4NzgsMHg3QiwweDdBLAorICAgIDB4MjMs
MHg0MSwweEUzLDB4MzgsMHhBOSwweEJELDB4RkQsMHhGNSwweDI0LDB4NDEsMHhFMiwweDM4LDB4
OUEsMHgyRiwweDBFLDB4QUEsCisgICAgMHhFNywweDYxLDB4NDQsMHg0OSwweDJELDB4QUQsMHhG
NSwweDU1LDB4QzYsMHg2MSwweDI0LDB4NDksMHg1QywweEY4LDB4MkYsMHhCNywKKyAgICAweEE2
LDB4NTksMHg0NCwweDQ5LDB4RDUsMHhCNywweDk2LDB4QjAsMHg4NSwweDUxLDB4RTMsMHgzOCww
eDdBLDB4NzgsMHg1OCwweDU4LAorICAgIDB4MDQsMHgzOSwweEEyLDB4MzAsMHhERiwweEQ1LDB4
RkQsMHgzNSwweDI0LDB4NDEsMHhDMiwweDMwLDB4RDcsMHg5RCwweEFBLDB4QjIsCisgICAgMHg4
NSwweDUxLDB4MjMsMHg0MSwweEVELDB4RjksMHhFQiwweDgyLDB4ODUsMHg1OSwweDQ0LDB4NTEs
MHgwOSwweEVELDB4Q0IsMHgwQSwKKyAgICAweDg1LDB4NTksMHgwMywweDQ5LDB4QTIsMHg4QSww
eDU3LDB4RDYsMHg2NCwweDUxLDB4RTMsMHgzOCwweEY4LDB4RUUsMHg3RSwweDdFLAorICAgIDB4
MjMsMHg0MSwweEMzLDB4MzgsMHg4OCwweEJFLDB4QkYsMHhFRCwweDY1LDB4NDksMHhFMiwweDM4
LDB4RkQsMHhGRCwweEVGLDB4OEEsCisgICAgMHg4NSwweDQ5LDB4MDIsMHgzOSwweEQ1LDB4N0Ys
MHhDQiwweEVGLDB4MjMsMHg0MSwweEUyLDB4MzgsMHhFQSwweDgwLDB4QkUsMHhGQiwKKyAgICAw
eDQzLDB4NDEsMHgwMywweDM5LDB4MzUsMHg5NSwweEQ1LDB4REYsMHg0MywweDQxLDB4RTIsMHgz
OCwweEM4LDB4RTAsMHhGMiwweDZFLAorICAgIDB4MjMsMHgzOSwweEUyLDB4MzgsMHhCRiwweDZE
LDB4QUYsMHhBRCwweDIzLDB4NDEsMHhFMiwweDMwLDB4MDgsMHgwQSwweEEzLDB4QUQsCisgICAg
MHg2NCwweDQ5LDB4MDMsMHgzOSwweDJGLDB4RDcsMHhENSwweEZFLDB4ODUsMHg1MSwweDIzLDB4
NDksMHhCRSwweEVBLDB4OEYsMHgyRiwKKyAgICAweDg1LDB4NTEsMHg0NCwweDQ5LDB4MDIsMHgy
RSwweDFGLDB4NUUsMHg0NywweDZBLDB4ODQsMHg1MSwweDU1LDB4QkYsMHgzRCwweEY1LAorICAg
IDB4NjcsMHg3MiwweEM1LDB4NjEsMHg3NSwweDk3LDB4NTgsMHhBMywweEE4LDB4ODIsMHgwNiww
eDYyLDB4OTUsMHhENSwweDM3LDB4M0QsCisgICAgMHhDOSwweDgyLDB4NDYsMHg3MiwweDIyLDB4
QkYsMHhERSwweEUwLDB4MzEsMHhDRCwweEM5LDB4ODIsMHgwMywweDA5LDB4MEQsMHgyNSwKKyAg
ICAweEYwLDB4QzQsMHg2RSwweEI0LDB4QUUsMHhGQywweDU4LDB4NzAsMHhGMCwweEM0LDB4OEYs
MHhCNCwweDJBLDB4QUIsMHhFRCwweDU1LAorICAgIDB4MTAsMHhDNSwweDZFLDB4QjQsMHhFOCww
eDdBLDB4QjcsMHgyNSwweDMxLDB4Q0QsMHgyRSwweEFDLDB4NTUsMHhGRCwweDJBLDB4MDAsCisg
ICAgMHhCMywweEQ1LDB4NEUsMHhBQywweEI1LDB4QUYsMHgwQSwweDBBLDB4RDQsMHhENSwweDEx
LDB4QkQsMHgyQiwweEJGLDB4REYsMHg3RSwKKyAgICAweEQ1LDB4RDUsMHgzMiwweEM1LDB4QjAs
MHhFQSwweDJGLDB4RjUsMHg3MywweENELDB4RDAsMHhCNCwweDU4LDB4NUMsMHg1QywweDQwLAor
ICAgIDB4NzMsMHhDNSwweDhGLDB4QUMsMHgyNSwweDM1LDB4QTUsMHhFNSwweDczLDB4QzUsMHgw
RCwweDlDLDB4RTAsMHhGQSwweEZGLDB4OTUsCisgICAgMHhEMCwweEI0LDB4QjAsMHhBQywweEMz
LDB4NDMsMHhFMiwweDdCLDB4RjEsMHhCNCwweDhGLDB4QUMsMHg5NSwweDJELDB4M0YsMHhBNywK
KyAgICAweDQzLDB4NTEsMHgwMiwweDQ5LDB4RUYsMHhGNiwweDg4LDB4RTAsMHg2NCwweDU5LDB4
MjMsMHg1MSwweEVELDB4QUIsMHhBQiwweEZGLAorICAgIDB4ODQsMHg1OSwweDIzLDB4NTEsMHg5
NywweEFGLDB4OEUsMHhFRiwweDY0LDB4NTksMHg0MywweDU5LDB4QzIsMHg3MiwweDVELDB4MzAs
CisgICAgMHhBNCwweDYxLDB4NDMsMHg1OSwweEJGLDB4RjksMHhFQiwweENCLDB4NjQsMHg2MSww
eDQzLDB4NTEsMHhFMCwweDVFLDB4RTcsMHhGNiwKKyAgICAweDQzLDB4NTksMHg2NCwweDUxLDB4
MDAsMHgyMCwweEE4LDB4QzAsMHg2NCwweDU5LDB4MjMsMHg1MSwweEU5LDB4RTcsMHhGQywweEZD
LAorICAgIDB4NDQsMHg1OSwweDAzLDB4NDksMHhDMiwweEZBLDB4NkUsMHg3RiwweDIzLDB4NTEs
MHgwMywweDQ5LDB4QkYsMHg1RSwweDY4LDB4QTgsCisgICAgMHg0NCwweDU5LDB4MDMsMHg0OSww
eEZELDB4QkYsMHgzRCwweDNGLDB4OEIsMHhBMywweDQzLDB4NTksMHgyNSwweDJELDB4MEIsMHgw
MywKKyAgICAweENDLDB4QTMsMHg0QSwweDlCLDB4RjAsMHg3QywweDdBLDB4ODIsMHg4QSwweDlC
LDB4MjksMHg5MywweDdGLDB4NUUsMHhGRiwweDcwLAorICAgIDB4NEEsMHg5MywweDA5LDB4OTMs
MHgwRiwweDBCLDB4RkUsMHhBMCwweDZCLDB4OUIsMHgyOSwweDkzLDB4MDksMHgyRiwweEQ3LDB4
REQsCisgICAgMHg0QSwweDkzLDB4ODcsMHg3QSwweDdDLDB4N0MsMHg1OCwweDU4LDB4QTgsMHg3
QSwweDI3LDB4NzIsMHg4OCwweEFBLDB4RjgsMHg2RiwKKyAgICAweDY3LDB4NzIsMHg4NSwweDU5
LDB4NzgsMHhFMCwweEEwLDB4QTAsMHhFNiwweDYxLDB4MDMsMHg0OSwweEQ1LDB4NzcsMHg3OCww
eEUwLAorICAgIDB4NjQsMHg1MSwweEUyLDB4MzgsMHg3MCwweDdBLDB4RUYsMHhENywweDAzLDB4
MzksMHhDMiwweDM4LDB4OEIsMHhCQSwweEZGLDB4NUUsCisgICAgMHg4NSwweDUxLDB4RTIsMHgz
OCwweEJGLDB4MkQsMHgzRCwweDk1LDB4ODUsMHg1MSwweEUyLDB4MzgsMHg3QSwweDc4LDB4Nzgs
MHg1QSwKKyAgICAweDI0LDB4NDEsMHhFMywweDM4LDB4QTUsMHhGNiwweDc2LDB4RjAsMHgyNCww
eDQxLDB4RTMsMHgzOCwweEFBLDB4QUUsMHhFRCwweDI3LAorICAgIDB4NjUsMHg1MSwweDAzLDB4
NDEsMHhCRiwweEFELDB4Q0QsMHg4RiwweEE2LDB4NTksMHgyMywweDQ5LDB4QUYsMHhBQiwweDBC
LDB4QTUsCisgICAgMHhDNiwweDU5LDB4NjUsMHg1MSwweEI4LDB4QUUsMHg2RiwweEJGLDB4NjUs
MHg1MSwweEMyLDB4MzgsMHg3MCwweDcwLDB4NUEsMHg1NiwKKyAgICAweDAzLDB4MzksMHhBMiww
eDMwLDB4MjcsMHhCRiwweEQ3LDB4RjUsMHgwMywweDM5LDB4QTIsMHgzMCwweDAwLDB4MDAsMHhC
RiwweEY3LAorICAgIDB4QzYsMHg2MSwweDIzLDB4NDEsMHg4OSwweDA5LDB4MEQsMHhBNSwweEU2
LDB4NjEsMHg4NSwweDU5LDB4RDcsMHg3OCwweDcwLDB4NDksCisgICAgMHg4NSwweDUxLDB4MDMs
MHg0MSwweERDLDB4NUMsMHg1RSwweEZFLDB4MjQsMHg0MSwweEUzLDB4MzgsMHg3OCwweDc4LDB4
N0IsMHg3NiwKKyAgICAweDI0LDB4NDEsMHhFMywweDM4LDB4QTksMHgzQiwweERELDB4NTcsMHg2
NCwweDQ5LDB4MjMsMHg0MSwweEJCLDB4MjksMHhDMywweDgxLAorICAgIDB4NjQsMHg0OSwweDAz
LDB4NDEsMHhFRiwweEZBLDB4RjIsMHhGNywweDIzLDB4NDEsMHhFMiwweDM4LDB4NUYsMHg1Qiww
eDU4LDB4RUMsCisgICAgMHg0NCwweDQxLDB4RTIsMHgzOCwweEYzLDB4RjUsMHhGNSwweDk1LDB4
MjQsMHg0MSwweDAzLDB4MzksMHg3NiwweDhELDB4QkUsMHhCOSwKKyAgICAweDQ0LDB4MzksMHhF
MiwweDM4LDB4RkQsMHhGRiwweEQ2LDB4N0UsMHgyMywweDM5LDB4RTIsMHgzOCwweEY3LDB4OUYs
MHg5MywweEJCLAorICAgIDB4NjQsMHg0OSwweDAzLDB4MzksMHhFMywweEE5LDB4MkQsMHhCRiww
eDY0LDB4NDksMHgyMywweDQxLDB4QUUsMHgwQiwweDBGLDB4QUIsCisgICAgMHg2NCwweDQ5LDB4
MjMsMHg0OSwweEJFLDB4REYsMHhERiwweEY4LDB4QzUsMHg2MSwweDQ0LDB4NDksMHgyRCwweEJE
LDB4RjUsMHhBRCwKKyAgICAweDI2LDB4NkEsMHg2NCwweDUxLDB4MEEsMHgyRCwweEI3LDB4Nzcs
MHg4OCwweDdBLDB4QzUsMHg2MSwweDNGLDB4QUIsMHhCRiwweEQ1LAorICAgIDB4MDksMHg4Qiww
eDY4LDB4N0EsMHhFMCwweDhBLDB4MDMsMHgwRCwweDExLDB4QzUsMHhFOSwweDgyLDB4MzUsMHgz
NSwweDE1LDB4OTUsCisgICAgMHgzNSwweEVFLDB4NkYsMHhCNCwweDdGLDB4RkUsMHhBQSwweDAy
LDB4MzUsMHhFNiwweDZFLDB4QjQsMHg1NSwweEZGLDB4MDIsMHgwMCwKKyAgICAweEY0LDB4REQs
MHg2RSwweEI0LDB4QjUsMHhCNywweDAwLDB4MDAsMHgxNCwweEU2LDB4NTIsMHhDRCwweEY1LDB4
RUIsMHg1QSwweDYwLAorICAgIDB4QjMsMHhENSwweDUyLDB4QzUsMHgyNywweENGLDB4QTksMHgy
QiwweEI0LDB4Q0QsMHgzMiwweEM1LDB4NzgsMHg3QSwweDdCLDB4NkUsCisgICAgMHg1MiwweEM1
LDB4RjEsMHhCQywweEFCLDB4QkEsMHg3QywweDdBLDB4OTMsMHhDRCwweEYxLDB4QkMsMHgwMiww
eDJBLDB4QUQsMHhGNSwKKyAgICAweDczLDB4Q0QsMHgwRSwweDlDLDB4RTgsMHg2MCwweDc4LDB4
N0EsMHhCMCwweEI0LDB4Q0MsMHg5MywweDI1LDB4MEQsMHgwQiwweDAzLAorICAgIDB4RDAsMHhC
NCwweDkwLDB4QUMsMHhFQywweDdFLDB4N0UsMHhERSwweEQwLDB4QjQsMHg5MCwweEFDLDB4QTks
MHgyOSwweEY3LDB4RDcsCisgICAgMHg4NCwweDU5LDB4NDMsMHg1MSwweDc3LDB4QjUsMHhFQiww
eEZBLDB4NjQsMHg1OSwweDIzLDB4NTEsMHhGNiwweEJDLDB4RkEsMHhCOCwKKyAgICAweDY0LDB4
NTksMHg0MywweDU5LDB4NTUsMHhERiwweDBBLDB4MTEsMHg4NCwweDYxLDB4NDMsMHg1OSwweDJG
LDB4ODMsMHhFOCwweEYwLAorICAgIDB4ODQsMHg2MSwweDQzLDB4NTksMHhFMiwweEYyLDB4REMs
MHhENSwweDY0LDB4NTksMHgyMywweDUxLDB4RUEsMHhGQSwweEFCLDB4QUEsCisgICAgMHg2NCww
eDU5LDB4MjMsMHg1MSwweEZBLDB4N0YsMHg3RiwweDZGLDB4NDQsMHg1OSwweEUyLDB4NDgsMHg4
OCwweEUyLDB4RUUsMHg4QSwKKyAgICAweDIzLDB4NTEsMHhFMiwweDQ4LDB4RUEsMHhFQSwweDdF
LDB4RkMsMHgyMywweDUxLDB4RTIsMHg0OCwweENFLDB4MkUsMHhBOCwweDlBLAorICAgIDB4RTks
MHg4QSwweDIzLDB4NTEsMHhENSwweDk1LDB4MzUsMHgyNSwweENDLDB4QTMsMHhDOSwweDhBLDB4
QTksMHgyQSwweDJBLDB4MDIsCisgICAgMHhFQywweEFCLDB4OEIsMHhBMywweEEzLDB4MEEsMHhB
QSwweEZDLDB4QUIsMHhBMywweDRBLDB4OTMsMHg3OCwweDY4LDB4RTAsMHhBQSwKKyAgICAweDhC
LDB4OUIsMHgyOSwweDkzLDB4NUQsMHg3RiwweEZFLDB4MkEsMHg2QSwweDlCLDB4MkEsMHg5Myww
eDlGLDB4MkEsMHhBQSwweEYwLAorICAgIDB4MkEsMHg5MywweDQ3LDB4NzIsMHg3OCwweDc4LDB4
NzgsMHg3OCwweDY3LDB4NzIsMHgyNiwweDcyLDB4NjAsMHhGMiwweEEyLDB4RkUsCisgICAgMHg0
NywweDcyLDB4MDYsMHg2QSwweEJDLDB4RkUsMHg4RSwweDRDLDB4MjYsMHg2QSwweEE1LDB4NTks
MHg3MCwweDg4LDB4MjAsMHgyMCwKKyAgICAweEU2LDB4NjEsMHhFMywweDQwLDB4NTcsMHhERSww
eDc4LDB4RTAsMHgyMywweDQxLDB4QzIsMHgzOCwweDdGLDB4NUUsMHg1OCwweEZBLAorICAgIDB4
MjQsMHg0MSwweEUyLDB4MzgsMHhCNSwweEI1LDB4M0QsMHgyRCwweDQ0LDB4NDEsMHhFMywweDM4
LDB4N0EsMHhERSwweEY2LDB4NzgsCisgICAgMHgyNCwweDQxLDB4QzIsMHgzOCwweDhBLDB4QUIs
MHhCRSwweERGLDB4MjQsMHg0MSwweEUyLDB4MzgsMHhGRiwweEFGLDB4QUIsMHgwOSwKKyAgICAw
eDQ0LDB4NDksMHhFMywweDM4LDB4QUUsMHhCRCwweEVBLDB4QUEsMHhBNiwweDU5LDB4MDMsMHg0
MSwweEI3LDB4QkQsMHhBNywweDJELAorICAgIDB4QTYsMHg1OSwweDQ0LDB4NDksMHhGQSwweDcy
LDB4N0EsMHg1OCwweDQ0LDB4NDksMHhBMiwweDMwLDB4NUMsMHhGOCwweEZBLDB4RkIsCisgICAg
MHgwMywweDM5LDB4QTIsMHgzMCwweEJGLDB4MEQsMHgwNywweDM3LDB4MDMsMHgzOSwweEMzLDB4
MzAsMHhENSwweEJFLDB4MkYsMHgzQSwKKyAgICAweDg1LDB4NTEsMHhFMywweDM4LDB4MkQsMHhC
NSwweEJGLDB4QUYsMHhFNiwweDYxLDB4NDQsMHg0OSwweDBCLDB4MkYsMHhENywweDVELAorICAg
IDB4QTYsMHg1OSwweDA0LDB4NDEsMHg3QSwweEY4LDB4N0UsMHg1RiwweDA0LDB4NDEsMHhFMyww
eDM4LDB4RTgsMHg2MCwweDZCLDB4NDksCisgICAgMHgyMywweDM5LDB4QzMsMHgzOCwweEZGLDB4
QkYsMHhFRCwweEQzLDB4NjQsMHg0OSwweEUzLDB4MzgsMHhFMiwweEFCLDB4RTksMHhBRCwKKyAg
ICAweDQ0LDB4NDEsMHgwMywweDQxLDB4MjUsMHgyRSwweDJCLDB4N0UsMHg2NCwweDQ5LDB4QzIs
MHgzMCwweEE4LDB4RjgsMHhGQSwweDdBLAorICAgIDB4MDMsMHgzOSwweEUyLDB4MzAsMHg5Niww
eEUyLDB4NTgsMHg3RCwweDIzLDB4MzksMHhFMywweDM4LDB4Q0IsMHhFRCwweDc1LDB4RDUsCisg
ICAgMHgwMywweDM5LDB4RTMsMHgzMCwweEMwLDB4QjcsMHg3NSwweDNFLDB4MjMsMHg0MSwweEUz
LDB4MzgsMHg4OSwweDA5LDB4QUQsMHhCRSwKKyAgICAweEE2LDB4NTEsMHgyNCwweDQxLDB4RkQs
MHhBRCwweDBGLDB4QTksMHhBNSwweDUxLDB4NDQsMHg0OSwweDc1LDB4RUYsMHhCMCwweEU4LAor
ICAgIDB4RTYsMHg2MSwweDQ0LDB4NDksMHg1RCwweEZGLDB4MkYsMHhCNSwweEU2LDB4NjEsMHg2
NCwweDUxLDB4QkQsMHhCRiwweEE4LDB4MDAsCisgICAgMHgwNywweDZBLDB4QTUsMHg1OSwweDdE
LDB4NUQsMHhBNywweEFDLDB4ODgsMHg3QSwweDg0LDB4NTksMHhENSwweEZGLDB4QUIsMHgyRCwK
KyAgICAweEU4LDB4ODIsMHgyNiwweDZBLDB4MkQsMHhCRCwweDM1LDB4QjUsMHhBQywweDlCLDB4
RTgsMHg4MiwweDM1LDB4MTUsMHg5NSwweDk1LAorICAgIDB4NTUsMHhFRSwweDZFLDB4QjQsMHgw
MiwweDAzLDB4MDEsMHgwOSwweDc2LDB4RUUsMHgzNSwweEU2LDB4RUYsMHhDQSwweEVBLDB4N0Is
CisgICAgMHg1NSwweEVFLDB4RjQsMHhERCwweEE4LDB4QTgsMHhFMiwweEZGLDB4MzUsMHhFNiww
eDMyLDB4QzUsMHg2MCwweDY4LDB4NzgsMHhEQSwKKyAgICAweEIzLDB4RDUsMHg1MiwweEM1LDB4
QUIsMHhFOSwweEZCLDB4NjgsMHg5MywweENELDB4NTIsMHhDNSwweEU4LDB4QjgsMHhBQiwweDJE
LAorICAgIDB4NzMsMHhDRCwweDExLDB4QkQsMHg3RSwweERFLDB4RkEsMHhEOCwweDExLDB4QkQs
MHg0RiwweEE0LDB4MDgsMHg4MCwweEMwLDB4NjAsCisgICAgMHhCMCwweEI0LDB4RUEsMHg3QSww
eEEwLDB4QjcsMHgzNywweEFGLDB4QjAsMHhCNCwweDZGLDB4QUMsMHgwMSwweDhCLDB4MjEsMHgy
OSwKKyAgICAweEQxLDB4QjQsMHg2RiwweEFDLDB4QUIsMHg4QSwweENBLDB4NzgsMHhEMSwweEI0
LDB4NkYsMHhBQywweDhBLDB4RUEsMHhGQSwweDU1LAorICAgIDB4NjMsMHg1OSwweDIzLDB4NTEs
MHhCQSwweDI2LDB4MTcsMHg4OSwweDg0LDB4NTksMHg0MywweDUxLDB4RkYsMHhFRCwweEZCLDB4
QUUsCisgICAgMHhBNCwweDYxLDB4NjQsMHg1OSwweEQ3LDB4REQsMHgxOSwweERGLDB4ODQsMHg2
MSwweDQzLDB4NTksMHhFQSwweEY4LDB4N0MsMHg3RSwKKyAgICAweDYzLDB4NTksMHgyMiwweDUx
LDB4QUEsMHg2OCwweEVBLDB4QjYsMHg2MywweDU5LDB4MjIsMHg1MSwweDgyLDB4QUIsMHhGQiww
eEVFLAorICAgIDB4NDMsMHg1OSwweDIzLDB4NDksMHhBOCwweEY4LDB4REUsMHhENywweDQ0LDB4
NTksMHgwMywweDQ5LDB4RTYsMHhGRSwweEZDLDB4QjYsCisgICAgMHgyMywweDUxLDB4RTMsMHg0
OCwweEFCLDB4QUYsMHhFQSwweEFBLDB4NDQsMHg1OSwweEUyLDB4NDgsMHhGRiwweDU3LDB4Mjcs
MHgwRSwKKyAgICAweDZBLDB4OUIsMHgyMywweDUxLDB4MjUsMHgwRCwweDBELDB4MDksMHhDQyww
eEFCLDB4OEIsMHg5QiwweEZGLDB4N0IsMHhBRSwweDBCLAorICAgIDB4Q0IsMHhBMywweDQ5LDB4
OTMsMHg1RSwweDc3LDB4RjYsMHhFMCwweDhBLDB4OUIsMHgyOSwweDkzLDB4MEEsMHhBQSwweDZB
LDB4NkUsCisgICAgMHg4QiwweEEzLDB4MDksMHg4QiwweEE4LDB4RkUsMHg1NSwweDU3LDB4NkEs
MHg5QiwweEM4LDB4OEEsMHhBMCwweEVBLDB4RkYsMHg3RiwKKyAgICAweEU5LDB4OEEsMHg0Niww
eDcyLDB4NzgsMHg1OCwweDdDLDB4NzgsMHg4NiwweDcyLDB4MjYsMHg3MiwweDU3LDB4RkYsMHg3
RiwweDZGLAorICAgIDB4MjYsMHg3MiwweDA2LDB4NkEsMHhDMCwweEUwLDB4MUMsMHg5MCwweDQ3
LDB4NzIsMHgwNiwweDZBLDB4QkQsMHgyNSwweDFGLDB4MEUsCisgICAgMHg4NywweDdBLDB4ODUs
MHg1MSwweDdBLDB4QzgsMHhBMiwweDA4LDB4RTYsMHg2MSwweEMzLDB4MzgsMHg3NywweDdGLDB4
NUUsMHg3OCwKKyAgICAweDIzLDB4NDEsMHhDMiwweDM4LDB4MkEsMHhCRiwweEZELDB4QTUsMHg0
NCwweDQ5LDB4RTMsMHgzOCwweDcwLDB4RkIsMHhERiwweDdGLAorICAgIDB4MDMsMHg0MSwweEMy
LDB4MzgsMHg5QSwweEZBLDB4N0YsMHhBRiwweDY0LDB4NDksMHhFMiwweDM4LDB4QkQsMHgzRCww
eEVELDB4QkQsCisgICAgMHg0NCwweDQ5LDB4MDMsMHg0MSwweEI4LDB4QkMsMHg1QywweDVDLDB4
QTYsMHg1OSwweDA0LDB4NDEsMHgyRiwweEJGLDB4QkQsMHhGNSwKKyAgICAweEE2LDB4NTksMHg0
NCwweDQ5LDB4NzAsMHhGOCwweEU4LDB4RkQsMHg0NCwweDQxLDB4QTIsMHgzOCwweEZGLDB4RUUs
MHhCRSwweEY4LAorICAgIDB4RTMsMHgzOCwweEEyLDB4MzAsMHgzNywweDJBLDB4MkEsMHhBQSww
eDI0LDB4NDEsMHhDMiwweDMwLDB4QjgsMHhCMCwweEFBLDB4QjUsCisgICAgMHg0NCwweDQ5LDB4
RTMsMHgzOCwweDI3LDB4MkYsMHgyRiwweDNBLDB4NjUsMHg1MSwweDI0LDB4NDEsMHhGQSwweDdB
LDB4RkIsMHg3QiwKKyAgICAweDI0LDB4NDEsMHhFMywweDM4LDB4QzIsMHhFMywweEZBLDB4RDYs
MHgyNCwweDQxLDB4RTMsMHgzOCwweEY1LDB4N0YsMHhBNywweDJGLAorICAgIDB4MjQsMHg0MSww
eEUzLDB4MzgsMHhFMiwweEVFLDB4QkUsMHhEQywweDQ0LDB4NDEsMHhFMywweDM4LDB4OEQsMHgw
RiwweEFFLDB4OEQsCisgICAgMHg0NCwweDQxLDB4RTIsMHgzOCwweDdBLDB4QzIsMHg2MCwweEZF
LDB4MDMsMHgzOSwweEMyLDB4MzAsMHg3OCwweEY0LDB4QjcsMHhCRSwKKyAgICAweDIzLDB4Mzks
MHhDMiwweDMwLDB4RDksMHhCQiwweEFCLDB4QTIsMHgyNCwweDQxLDB4RTMsMHgzMCwweEY1LDB4
RkIsMHhFQSwweDJCLAorICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHgyRiwweEJBLDB4RkUsMHg3
RSwweDQ0LDB4NDEsMHhDMiwweDMwLDB4RkUsMHhBQSwweEFCLDB4MjUsCisgICAgMHg2NCwweDQ5
LDB4RTMsMHgzOCwweDA5LDB4QTcsMHhENSwweEZGLDB4ODQsMHg1MSwweDAzLDB4NDEsMHg4Miww
eEJELDB4NTUsMHg1RCwKKyAgICAweDg1LDB4NTEsMHgyMywweDQxLDB4MzYsMHgzRiwweDM3LDB4
OTUsMHg0NywweDcyLDB4QTUsMHg1OSwweEVGLDB4QkYsMHhBOSwweDBELAorICAgIDB4NDcsMHg3
MiwweEE1LDB4NTksMHhBQiwweDBGLDB4MzcsMHhGRSwweDY3LDB4N0EsMHhFNSwweDYxLDB4M0Qs
MHhCNSwweDVFLDB4RDcsCisgICAgMHg2NywweDcyLDB4RTUsMHg2MSwweDJDLDB4OUUsMHhGMyww
eEFCLDB4MjksMHg4QiwweDY3LDB4NzIsMHgyMywweEE5LDB4QkQsMHhCRCwKKyAgICAweDM1LDB4
RTYsMHgyOSwweDhCLDB4MEIsMHgwOSwweDJELDB4MkQsMHg1NSwweEVFLDB4MTQsMHhFNiwweEFB
LDB4RUEsMHg3RiwweDU1LAorICAgIDB4MzUsMHhFNiwweEIzLDB4RDUsMHhFOCwweEY4LDB4NkEs
MHg3QSwweEIzLDB4RDUsMHhGMSwweEJDLDB4QjAsMHgzQywweEJFLDB4QjYsCisgICAgMHhCNCww
eEQ1LDB4NTIsMHhDNSwweEU4LDB4RUEsMHhFQSwweDVBLDB4NzMsMHhDRCwweDMyLDB4QzUsMHgy
RiwweEU3LDB4RUUsMHhGRiwKKyAgICAweDUyLDB4QzUsMHhEMSwweEI0LDB4RTAsMHhBOCwweEY4
LDB4NzgsMHgxMSwweEJELDB4RUUsMHg5QiwweEU4LDB4RUEsMHg2OCwweDdBLAorICAgIDB4NkYs
MHhBQywweENELDB4OTMsMHgyRCwweEFGLDB4MkYsMHgyNSwweEIwLDB4QjQsMHg0RiwweEE0LDB4
MkIsMHg4QiwweEVBLDB4N0UsCisgICAgMHhCMCwweEI0LDB4MkUsMHhBNCwweEZDLDB4RkUsMHg5
NywweEJGLDB4QjAsMHhCNCwweDRGLDB4QTQsMHg5RiwweDNGLDB4QUEsMHg0RSwKKyAgICAweDYz
LDB4NTksMHgyMiwweDUxLDB4MEIsMHg4QSwweEEwLDB4QzksMHg4NCwweDU5LDB4NDMsMHg1OSww
eDlFLDB4MTcsMHg2RCwweEZELAorICAgIDB4ODMsMHg2MSwweDIzLDB4NTEsMHhFQSwweDdBLDB4
RkYsMHg3RCwweDYzLDB4NTksMHgyMywweDUxLDB4OEEsMHgyQiwweEFFLDB4RjYsCisgICAgMHg2
MywweDU5LDB4MjMsMHg1MSwweDNFLDB4NzgsMHhFRSwweDc3LDB4NDMsMHg1MSwweDAyLDB4NDks
MHhBQSwweEJDLDB4OUEsMHgyRSwKKyAgICAweDQzLDB4NTEsMHgwMiwweDQ5LDB4QUUsMHgyMyww
eEEwLDB4NUUsMHg0NCwweDUxLDB4MDMsMHg0OSwweEZBLDB4REMsMHhENywweEZCLAorICAgIDB4
NDQsMHg1OSwweDAyLDB4NDksMHhFNywweEI3LDB4M0YsMHgwQSwweDY0LDB4NTksMHgyMywweDUx
LDB4QTksMHhBRiwweEJFLDB4REMsCisgICAgMHg4QiwweDlCLDB4RTYsMHg2OSwweDBELDB4MDks
MHgwOSwweDBCLDB4RUMsMHhBQiwweDhCLDB4OUIsMHgwQiwweDJGLDB4ODksMHgyRiwKKyAgICAw
eDBELDB4QUMsMHg4QiwweEEzLDB4N0EsMHg3RSwweEJBLDB4ODIsMHhDQywweEFCLDB4NDksMHg5
MywweERGLDB4N0IsMHg1OCwweDc4LAorICAgIDB4NkEsMHg5MywweEM4LDB4ODIsMHhBMCwweEZB
LDB4RkUsMHg3RiwweDI5LDB4OTMsMHhDOCwweDhBLDB4NzgsMHg1NiwweERELDB4QjcsCisgICAg
MHhFOSwweDhBLDB4NjYsMHg3MiwweDVDLDB4NUMsMHg1OCwweDU4LDB4NjYsMHg3MiwweDI2LDB4
NzIsMHhFQSwweEJBLDB4QkEsMHhGQSwKKyAgICAweDQ2LDB4NzIsMHgwNiwweDZBLDB4RkMsMHhC
OCwweDI4LDB4RTIsMHg2NywweDdBLDB4MjYsMHg3MiwweEQ1LDB4QkQsMHhGRCwweDJELAorICAg
IDB4QzgsMHg4MiwweDQ2LDB4NzIsMHhBOSwweDJCLDB4MkIsMHg4QSwweEE3LDB4N0EsMHgwMyww
eDQ5LDB4NUUsMHg3OCwweDcwLDB4RTAsCisgICAgMHhFMywweDM4LDB4QTIsMHgzMCwweDM4LDB4
M0EsMHhGRSwweDYwLDB4MDMsMHg0MSwweEEyLDB4MzAsMHg4MiwweEVBLDB4RkIsMHg3RCwKKyAg
ICAweDI0LDB4NDEsMHhDMiwweDMwLDB4QTUsMHgyNSwweEJELDB4RjUsMHgyNCwweDQxLDB4QzMs
MHgzOCwweDJFLDB4RUUsMHhGRSwweEZFLAorICAgIDB4NDQsMHg0MSwweEUzLDB4MzgsMHg3Qyww
eEZCLDB4QUQsMHhGNSwweDQ0LDB4NDksMHhFMywweDQwLDB4REYsMHg1NywweDdGLDB4MEEsCisg
ICAgMHg2NSwweDQ5LDB4RTMsMHg0MCwweDJGLDB4QkQsMHhGRiwweEZBLDB4NjQsMHg0OSwweEMy
LDB4MzAsMHg3OCwweDZBLDB4RkEsMHhGMiwKKyAgICAweDAzLDB4MzksMHhBMiwweDMwLDB4N0Qs
MHg1NywweDVDLDB4REEsMHhFMywweDM4LDB4QTIsMHgyOCwweDJELDB4MkQsMHg4RCwweDBBLAor
ICAgIDB4QTUsMHg1MSwweDAzLDB4MzksMHhGNSwweEI1LDB4QjUsMHgzNSwweDg1LDB4NTEsMHgy
MywweDQxLDB4REYsMHg1RiwweDdFLDB4NzAsCisgICAgMHg0NCwweDQ5LDB4RTMsMHgzOCwweDVF
LDB4N0EsMHg3QSwweDVBLDB4MjQsMHgzOSwweEMyLDB4MzAsMHg4RSwweEJCLDB4RkUsMHhERiwK
KyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4QkEsMHg1NiwweEQ1LDB4RjUsMHgyMywweDM5LDB4
QzIsMHgzMCwweDAyLDB4RUEsMHg3NywweDc3LAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhC
QywweEFBLDB4N0UsMHhBQiwweDAzLDB4NDEsMHhFMiwweDMwLDB4RkUsMHhGNSwweDdELDB4NUYs
CisgICAgMHgyNCwweDM5LDB4QzMsMHgzMCwweDBCLDB4QkEsMHhFQiwweDdFLDB4MjQsMHgzOSww
eEMyLDB4MzAsMHgyQSwweEFBLDB4RTIsMHhBOSwKKyAgICAweDAzLDB4MzksMHhFMywweDMwLDB4
QzAsMHgwOCwweDg4LDB4RUUsMHgyMywweDQxLDB4QzIsMHgzMCwweEI1LDB4QkYsMHgzRSwweEJF
LAorICAgIDB4MjMsMHg0MSwweDAzLDB4MzksMHg1MCwweEIwLDB4RTMsMHgyRiwweDIzLDB4NDEs
MHhFMywweDM4LDB4NzYsMHhFNSwweEU3LDB4QTgsCisgICAgMHg2NCwweDQ5LDB4MDMsMHgzOSww
eDJCLDB4MkIsMHgwRCwweEI1LDB4NDcsMHg3MiwweDY0LDB4NTEsMHgyNywweEY1LDB4RjUsMHg1
NSwKKyAgICAweDg3LDB4N0EsMHhBNSwweDU5LDB4RTgsMHg4MiwweDA5LDB4QjUsMHg0NywweDcy
LDB4QTUsMHg1OSwweEJGLDB4MkYsMHhENCwweDU4LAorICAgIDB4ODcsMHg3QSwweDA1LDB4NjIs
MHhBRiwweDBBLDB4MkEsMHhBOSwweEE4LDB4N0EsMHg2NywweDcyLDB4M0YsMHhCQSwweEU4LDB4
ODAsCisgICAgMHg5MywweEQ1LDB4QzksMHg4MiwweDA5LDB4MEQsMHgyRCwweDJELDB4MTQsMHhF
NiwweDcyLDB4Q0QsMHg4OCwweEFBLDB4RkYsMHg1RCwKKyAgICAweEY0LDB4REQsMHgzMiwweEM1
LDB4QTAsMHhFOCwweEVBLDB4N0EsMHg5MywweENELDB4RjEsMHhCQywweDA3LDB4MEYsMHgwOSww
eEE5LAorICAgIDB4NzMsMHhDRCwweDExLDB4QkQsMHhBMCwweDYwLDB4NDAsMHhBMCwweDczLDB4
Q0QsMHhEMCwweEI0LDB4MEIsMHgyRiwweEI1LDB4RkYsCisgICAgMHg1MiwweEM1LDB4QjAsMHhC
NCwweEU4LDB4NzgsMHhERSwweDc3LDB4OTAsMHhBQywweDJCLDB4N0IsMHhFMCwweEYwLDB4Nzgs
MHg1OCwKKyAgICAweDcwLDB4QUMsMHg4QywweDhCLDB4MkYsMHgyRCwweDA5LDB4QUIsMHg5MCww
eEFDLDB4MEUsMHg5QywweEY4LDB4REYsMHhGRiwweEE3LAorICAgIDB4OEYsMHhBQywweDRGLDB4
QTQsMHgwRCwweDZELDB4RkQsMHhEOCwweEQwLDB4QjQsMHgwRSwweDlDLDB4RkYsMHhCRCwweEJE
LDB4MkEsCisgICAgMHg4NCwweDU5LDB4NDMsMHg1MSwweEQ1LDB4RUQsMHgyRSwweDNBLDB4NjMs
MHg1OSwweDIyLDB4NTEsMHg4MywweDQyLDB4NjIsMHhGRSwKKyAgICAweDQzLDB4NTEsMHgwMiww
eDQ5LDB4QTgsMHgyQSwweDNBLDB4QjcsMHg0MywweDUxLDB4MjIsMHg1MSwweDA0LDB4MDIsMHhD
MiwweDRDLAorICAgIDB4NDMsMHg1MSwweDAyLDB4NDksMHhGRSwweDdBLDB4QkEsMHhCNCwweDQ0
LDB4NTEsMHgwMiwweDQ5LDB4QUIsMHhFQiwweEJBLDB4QkEsCisgICAgMHg0MywweDUxLDB4MDMs
MHg0OSwweERDLDB4QkYsMHg4QiwweEE3LDB4NDQsMHg1OSwweDAzLDB4NDksMHg1RSwweEZGLDB4
QkYsMHgyNywKKyAgICAweDY0LDB4NTksMHgwMywweDUxLDB4QUQsMHhBRiwweEEyLDB4RUEsMHhB
NCwweDYxLDB4MjQsMHg1MSwweDk3LDB4OUYsMHhCRiwweDE3LAorICAgIDB4QUIsMHhBMywweDQ3
LDB4N0EsMHgwOSwweDBCLDB4MEIsMHgwQiwweDBELDB4QUMsMHhBQiwweEEzLDB4QUQsMHgzRCww
eEY1LDB4RkQsCisgICAgMHgyRCwweEI0LDB4RUMsMHhBQiwweDdBLDB4RjIsMHg2NSwweDU1LDB4
RUMsMHhBQiwweDRBLDB4OTMsMHg3QSwweDdDLDB4QTgsMHg4MCwKKyAgICAweDhCLDB4QTMsMHhD
OCwweDgyLDB4N0UsMHg3RSwweEUyLDB4QTAsMHgyOSwweDhCLDB4QzgsMHg4MiwweEJGLDB4N0Qs
MHhERiwweDc4LAorICAgIDB4QzgsMHg4MiwweDI2LDB4NkEsMHhGOCwweDY4LDB4NzgsMHg3OCww
eDQ2LDB4NzIsMHgyNiwweDZBLDB4NjAsMHhGMCwweDhCLDB4QUUsCisgICAgMHg0NiwweDcyLDB4
MjUsMHg2QSwweEVCLDB4QUIsMHhGQiwweDNFLDB4QzgsMHg4MiwweDI2LDB4NzIsMHhCRCwweEFG
LDB4QUYsMHgwQiwKKyAgICAweEM5LDB4ODIsMHg4OCwweDgyLDB4QkIsMHg2QSwweDhBLDB4MEEs
MHhBOCwweDgyLDB4MjYsMHg2QSwweDY4LDB4NjgsMHhFOCwweEUwLAorICAgIDB4RTUsMHg2MSww
eEMyLDB4MzgsMHg1NiwweDdFLDB4N0MsMHg3OCwweEEyLDB4MzAsMHg2MSwweDI4LDB4MDgsMHgy
QSwweDNDLDB4QUUsCisgICAgMHhFMywweDM4LDB4QTIsMHgzMCwweDJFLDB4RUQsMHhENSwweDVE
LDB4MDMsMHgzOSwweEEyLDB4MzAsMHhFMiwweEVCLDB4N0QsMHg1RCwKKyAgICAweDAzLDB4NDEs
MHhBMSwweDMwLDB4MEUsMHhBQSwweEU5LDB4QkQsMHg0NCwweDQ5LDB4RTMsMHgzOCwweDBFLDB4
MjUsMHhCRCwweEZELAorICAgIDB4NjUsMHg0OSwweDAzLDB4NDEsMHg3MCwweEUyLDB4QkYsMHhE
RCwweDI0LDB4NDEsMHhFMywweDM4LDB4RTAsMHhCRSwweDc2LDB4REMsCisgICAgMHgwMywweDM5
LDB4ODIsMHgyOCwweEVBLDB4RkEsMHhGQywweDU4LDB4RTMsMHgzOCwweEEyLDB4MzAsMHgyMiww
eDAzLDB4MEIsMHhDRCwKKyAgICAweDY1LDB4NDksMHhDMiwweDMwLDB4MkIsMHgwOSwweDI5LDB4
RUQsMHhBNSwweDUxLDB4MDMsMHg0MSwweEU4LDB4RUEsMHg2RiwweDU1LAorICAgIDB4MjQsMHg0
MSwweEMyLDB4MzAsMHhFMCwweEU4LDB4RUEsMHg3RSwweEUzLDB4MzgsMHhDMiwweDMwLDB4NzIs
MHhGQywweDM3LDB4MjksCisgICAgMHhFMywweDM4LDB4QzMsMHgyOCwweEFBLDB4MEIsMHgwOCww
eEE4LDB4MDMsMHgzOSwweEMyLDB4MzAsMHg3RSwweDdBLDB4MkEsMHhFQSwKKyAgICAweEUzLDB4
MzgsMHhDMiwweDMwLDB4QUIsMHg0MiwweERCLDB4OTUsMHgwMywweDM5LDB4QzIsMHgzMCwweEZB
LDB4RjcsMHhGNywweEQ0LAorICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHg3RCwweEQ3LDB4RDYs
MHgyRCwweDAzLDB4MzksMHhDMiwweDMwLDB4OEYsMHhFRSwweEI2LDB4OEEsCisgICAgMHgwMyww
eDM5LDB4QzIsMHgzMCwweEZELDB4NTcsMHg1RSwweEE4LDB4MDMsMHgzOSwweEMyLDB4MzAsMHhC
QiwweEJGLDB4MkQsMHgyQSwKKyAgICAweDQ0LDB4NDEsMHgwMywweDM5LDB4QkYsMHhFRCwweDBE
LDB4MDksMHg0NCwweDQxLDB4MDMsMHgzOSwweEZBLDB4NkIsMHg3OCwweEZDLAorICAgIDB4MjMs
MHg0MSwweEUyLDB4MzgsMHg3MCwweDYwLDB4RUEsMHhCMiwweDY0LDB4NDksMHgwMywweDQxLDB4
MjMsMHgyOSwweEQ1LDB4NTUsCisgICAgMHhBNSwweDU5LDB4NDQsMHg0OSwweEFBLDB4RTksMHhG
RiwweEY5LDB4RTYsMHg2MSwweDQzLDB4NDksMHhBMCwweEEzLDB4QkYsMHhCNSwKKyAgICAweDg4
LDB4N0EsMHhBNSwweDU5LDB4MkQsMHgyRCwweDJELDB4MjcsMHhFOCwweDgyLDB4NjcsMHg3QSww
eEVFLDB4RTcsMHhCNiwweEQ4LAorICAgIDB4MzEsMHhDNSwweEM4LDB4ODIsMHgyRCwweEE1LDB4
MzUsMHhCNSwweDkyLDB4RDUsMHhEMCwweEJDLDB4QTIsMHg4QiwweDJCLDB4QUQsCisgICAgMHg3
MiwweENELDB4RjEsMHhCQywweDQwLDB4NzIsMHhGQSwweEYyLDB4OTQsMHhDRCwweDExLDB4QkQs
MHhFOSwweEUzLDB4QzIsMHhDMiwKKyAgICAweDUyLDB4QzUsMHhEMCwweEI0LDB4MEEsMHhCRiww
eEZFLDB4N0UsMHgzMiwweEM1LDB4OEYsMHhBQywweEUwLDB4NzAsMHg3QSwweDdGLAorICAgIDB4
QjAsMHhCNCwweDRGLDB4QTQsMHgwQywweDhGLDB4RUYsMHhBQiwweEIwLDB4QUMsMHhFQSwweDdB
LDB4REUsMHg5NiwweDI2LDB4MDAsCisgICAgMHhGMSwweEJDLDB4NEUsMHhBNCwweDU1LDB4Mzks
MHgwMCwweDA4LDB4MzIsMHhCRCwweDhGLDB4QUMsMHhENSwweEZBLDB4RTAsMHg4MCwKKyAgICAw
eEYxLDB4QkMsMHg2RiwweEFDLDB4RkIsMHg3RiwweEZFLDB4QTgsMHhCMCwweEFDLDB4NkYsMHhB
QywweEZFLDB4REUsMHhERiwweDc4LAorICAgIDB4NjMsMHg1OSwweDIzLDB4NTEsMHg0MiwweEZF
LDB4RkUsMHg3NSwweDQ0LDB4NTksMHgyMywweDQ5LDB4RkEsMHhBMiwweEJCLDB4RjcsCisgICAg
MHg0MywweDUxLDB4MjMsMHg1MSwweEI1LDB4NkYsMHg4QiwweDc2LDB4NDMsMHg1MSwweDAzLDB4
NDksMHhBMiwweDdBLDB4N0EsMHg3NiwKKyAgICAweDQ0LDB4NTEsMHgwMiwweDQ5LDB4MzUsMHhE
NSwweEJGLDB4QUIsMHg0MywweDUxLDB4MDMsMHg0OSwweDlBLDB4RjcsMHhBNywweEFCLAorICAg
IDB4NjMsMHg1OSwweDAzLDB4NTEsMHhERiwweDVGLDB4RDcsMHhGRiwweDY0LDB4NTksMHgwMyww
eDUxLDB4OEQsMHhBRiwweEFBLDB4MkMsCisgICAgMHg2NCwweDU5LDB4MjMsMHg1MSwweDVDLDB4
RjYsMHhCRSwweEFGLDB4NjcsMHg3QSwweDQzLDB4NTksMHhENSwweDk1LDB4MTUsMHgxNSwKKyAg
ICAweEFCLDB4QTMsMHgyOSwweDkzLDB4MjksMHgyOSwweDA5LDB4MEIsMHhFQywweEFCLDB4OEIs
MHg5QiwweDJCLDB4QkUsMHhGRSwweDdGLAorICAgIDB4MEQsMHhBQywweDZCLDB4OUIsMHgwMiww
eDBBLDB4REYsMHg1NSwweEVDLDB4QUIsMHgyQSwweDkzLDB4MDAsMHgwMCwweEFBLDB4REYsCisg
ICAgMHhFQywweEFCLDB4RTgsMHg4QSwweEE4LDB4QTAsMHhGQSwweDVGLDB4OEIsMHg5QiwweDg3
LDB4N0EsMHhGOCwweDc4LDB4NTYsMHg1NywKKyAgICAweEE4LDB4N0EsMHg0NiwweDcyLDB4NUMs
MHg1RiwweDU3LDB4NTcsMHg0NiwweDcyLDB4MjYsMHg2QSwweDk4LDB4ODgsMHhGOCwweERGLAor
ICAgIDB4QzgsMHg4MiwweDI2LDB4NkEsMHhGNSwweEZELDB4QjUsMHgwRCwweEM4LDB4ODIsMHg4
NywweDdBLDB4ODksMHhFMywweEFBLDB4N0MsCisgICAgMHhBOCwweDgyLDB4MDUsMHg2QSwweDAw
LDB4RTgsMHg3QywweDU3LDB4ODcsMHg3QSwweEM0LDB4NjEsMHhBOCwweEVFLDB4RDUsMHg1NSwK
KyAgICAweDI2LDB4NkEsMHgwMywweDQxLDB4NTgsMHg3OCwweDcyLDB4RTIsMHhFMywweDQwLDB4
NjEsMHgyOCwweEZGLDB4RkUsMHhCNiwweDlDLAorICAgIDB4RTMsMHgzOCwweEEyLDB4MzAsMHg1
NywweDdGLDB4RkUsMHg4QiwweEUzLDB4MzgsMHhBMiwweDMwLDB4RDUsMHhCNywweEJBLDB4RTIs
CisgICAgMHgwMywweDQxLDB4QTIsMHgzMCwweDNELDB4QUEsMHgwQiwweDAyLDB4MjQsMHg0MSww
eEMyLDB4MzgsMHhCRiwweEQ3LDB4OUUsMHgwRiwKKyAgICAweDQ0LDB4NDksMHhFMywweDM4LDB4
QTksMHgwMywweDAzLDB4ODIsMHg0NCwweDQ5LDB4RTMsMHgzOCwweDU3LDB4RUEsMHhBQSwweEFB
LAorICAgIDB4MjQsMHg0MSwweEEyLDB4MjgsMHg3QiwweDZGLDB4RTgsMHhBMCwweEMzLDB4MzAs
MHg4MSwweDI4LDB4OEYsMHhFRiwweDJGLDB4MkMsCisgICAgMHgyNCwweDQxLDB4QTIsMHgzMCww
eEJGLDB4QjUsMHgzRiwweDJGLDB4NDUsMHg0MSwweEMzLDB4MzgsMHhGRSwweEU4LDB4RTIsMHg3
MiwKKyAgICAweEUzLDB4MzAsMHhBMiwweDMwLDB4RkUsMHg1NSwweDVGLDB4RUIsMHhFMywweDMw
LDB4QTIsMHgzMCwweEJGLDB4RkYsMHhGRiwweDJBLAorICAgIDB4RTMsMHgzOCwweEEyLDB4Mjgs
MHgwQSwweEJCLDB4RkUsMHhCRiwweDI0LDB4MzksMHhDMiwweDMwLDB4RkYsMHhGNSwweEZELDB4
MkYsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEQ3LDB4QkYsMHhCRSwweEUyLDB4RTMsMHgz
OCwweEMyLDB4MzAsMHg5OCwweEQ4LDB4NzIsMHhGRCwKKyAgICAweDA0LDB4NDEsMHhFMiwweDMw
LDB4RkQsMHhGRiwweDJCLDB4MEIsMHg0NCwweDQxLDB4RTMsMHgzOCwweDc3LDB4RkYsMHg3Riww
eEYyLAorICAgIDB4MjQsMHg0MSwweEUyLDB4MzgsMHhERiwweDdBLDB4MjAsMHgyMCwweDI0LDB4
NDEsMHhFMiwweDM4LDB4REQsMHhCQiwweEFCLDB4MDgsCisgICAgMHg4NCwweDQ5LDB4MDMsMHg0
MSwweEZGLDB4NjksMHhFMywweEZGLDB4MjMsMHg0MSwweEUzLDB4MzgsMHhBMiwweEYwLDB4Rjgs
MHhCOCwKKyAgICAweDQ0LDB4NDEsMHgwMywweDM5LDB4RkYsMHg1RCwweEFGLDB4QTAsMHgyMyww
eDQxLDB4RTIsMHgzOCwweDAyLDB4ODksMHhBRSwweDJBLAorICAgIDB4QTUsMHg1MSwweDIzLDB4
NDEsMHhBOSwweEFELDB4QkQsMHhGNSwweEM1LDB4NTksMHg2NCwweDUxLDB4OUYsMHhCMCwweEJG
LDB4QUQsCisgICAgMHg2NywweDcyLDB4RTYsMHg2MSwweDJELDB4MjcsMHgyQiwweEE5LDB4Qzgs
MHg4MiwweDI2LDB4NkEsMHhFOCwweDgyLDB4OEEsMHg5RCwKKyAgICAweDZFLDB4QUMsMHg2Nyww
eDcyLDB4MjUsMHhCNSwweDM1LDB4OTUsMHg5MywweENELDB4QUYsMHhCQywweEJELDB4MkQsMHgw
QiwweDBCLAorICAgIDB4OTMsMHhDRCwweDZGLDB4QUMsMHhCMCwweEY4LDB4OUMsMHhCRSwweDk0
LDB4Q0QsMHhGMSwweEJDLDB4QTIsMHhBMiwweEUyLDB4NTgsCisgICAgMHg1MywweEM1LDB4QjAs
MHhCNCwweDdBLDB4NzgsMHg2MiwweDdGLDB4OTAsMHhBQywweEVFLDB4OUIsMHgyOCwweDBBLDB4
QTAsMHg3QywKKyAgICAweEQwLDB4QjQsMHhDRCwweDkzLDB4MDIsMHg4MCwweEVBLDB4RjUsMHhC
MCwweEI0LDB4MEUsMHg5QywweEEwLDB4RkYsMHhENywweDc1LAorICAgIDB4NkYsMHhBQywweEND
LDB4OTMsMHgwMCwweEFBLDB4NUYsMHg3NywweDExLDB4QkQsMHhDRCwweDlCLDB4MDIsMHhBRiww
eEZELDB4RDUsCisgICAgMHgxMSwweEJELDB4NEYsMHhBNCwweDAwLDB4OEEsMHgyRiwweEQ1LDB4
MzIsMHhDNSwweEIwLDB4QjQsMHg3RiwweDJBLDB4ODAsMHgwOSwKKyAgICAweDQzLDB4NTEsMHgy
MywweDUxLDB4QUUsMHhCMCwweDNDLDB4OTQsMHg0MywweDUxLDB4MDMsMHg0OSwweDJGLDB4MzYs
MHhCQywweDVBLAorICAgIDB4NDMsMHg1MSwweEUyLDB4NDAsMHgwMCwweEEyLDB4RjAsMHhGRSww
eDQ0LDB4NTEsMHgwMywweDQ5LDB4NTcsMHhENSwweEE1LDB4QkQsCisgICAgMHg0MywweDUxLDB4
MjMsMHg0OSwweDY1LDB4QkYsMHgzQSwweEU4LDB4NDMsMHg1MSwweDIzLDB4NTEsMHhCNSwweDdF
LDB4OUIsMHg5RCwKKyAgICAweDQ0LDB4NTksMHgyMywweDUxLDB4MEYsMHhBMywweDQwLDB4MDIs
MHg2NCwweDU5LDB4MjMsMHg1MSwweEI0LDB4RTcsMHg2RiwweEY3LAorICAgIDB4NDMsMHg1OSww
eDAzLDB4NTEsMHhBMiwweEEzLDB4QTIsMHg2OCwweDI5LDB4OTMsMHg0MywweDUxLDB4QjUsMHgz
NSwweDM1LDB4MjUsCisgICAgMHhBQiwweEEzLDB4NEEsMHg5MywweDA5LDB4QUIsMHg4MiwweEVC
LDB4Q0IsMHhBMywweEE4LDB4ODIsMHhBMCwweEE4LDB4RkEsMHg3RSwKKyAgICAweDRCLDB4OUIs
MHg4NywweDdBLDB4MDAsMHhBQSwweDdFLDB4NTUsMHgwOSwweDhCLDB4NjcsMHg3MiwweDAwLDB4
RUUsMHg3NywweDU1LAorICAgIDB4RTksMHg4QSwweDY3LDB4NzIsMHhGMCwweDdFLDB4RDUsMHg1
NSwweDg3LDB4N0EsMHg0NiwweDcyLDB4RTgsMHg3RiwweDVBLDB4NUYsCisgICAgMHg4NiwweDcy
LDB4MjYsMHg3MiwweERELDB4N0IsMHhGNywweERGLDB4ODcsMHg3MiwweDI1LDB4NkEsMHhGNyww
eEJCLDB4QkIsMHgyQSwKKyAgICAweEM4LDB4ODIsMHg0NiwweDcyLDB4OEYsMHgwQiwweEEyLDB4
NzIsMHg4NywweDdBLDB4MDUsMHg2QSwweEMwLDB4NjgsMHg3RSwweDc3LAorICAgIDB4MjYsMHg2
QSwweEM0LDB4NjEsMHg1OCwweEY2LDB4QUEsMHhFQSwweDA2LDB4NkEsMHhDNCwweDYxLDB4NTUs
MHhCRiwweEJBLDB4MjAsCisgICAgMHgwNiwweDZBLDB4QTUsMHg1OSwweDZCLDB4RUYsMHhDOCww
eDgwLDB4QTUsMHg1OSwweEMyLDB4MzgsMHg1NywweDVFLDB4NTgsMHg3OCwKKyAgICAweDA0LDB4
NDEsMHg4MSwweDI4LDB4MEIsMHhGNSwweDc1LDB4RkYsMHgyNCwweDQxLDB4QTIsMHgzMCwweEVB
LDB4MEIsMHhBRCwweEJELAorICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHhCQSwweEZGLDB4NUMs
MHg1QSwweDQ0LDB4NDksMHhDMiwweDMwLDB4QUIsMHgyQiwweDI5LDB4ODksCisgICAgMHg2NSww
eDQ5LDB4MjQsMHg0MSwweDZFLDB4NzAsMHg3OCwweEI3LDB4NDQsMHg0OSwweDAzLDB4NDEsMHhE
RCwweEFFLDB4N0MsMHhGOCwKKyAgICAweDQ0LDB4NDEsMHhFMywweDM4LDB4NzYsMHhCRiwweEFG
LDB4MkYsMHgwNCwweDM5LDB4QTIsMHgyOCwweERFLDB4RjgsMHg3QywweDVDLAorICAgIDB4MjQs
MHg0MSwweDgyLDB4MjgsMHgwQiwweDJCLDB4RTcsMHhENSwweDA0LDB4NDEsMHhBMiwweDI4LDB4
RTAsMHhCOCwweEJGLDB4QkQsCisgICAgMHgwNCwweDM5LDB4QzMsMHgzMCwweEJGLDB4RUEsMHg1
QSwweDU3LDB4MDMsMHgzOSwweEEyLDB4MjgsMHhCMywweEZBLDB4RjcsMHhGRiwKKyAgICAweDAz
LDB4MzksMHhBMiwweDI4LDB4QkQsMHhCNywweDNGLDB4QUYsMHgyNCwweDQxLDB4QzMsMHgzMCww
eDIyLDB4MDIsMHhDQSwweEZGLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHg3MCwweDUwLDB4
RUUsMHhCNywweDAzLDB4MzksMHhDMywweDMwLDB4QjUsMHgzRSwweEZFLDB4OUQsCisgICAgMHg2
NSwweDQ5LDB4MDMsMHgzOSwweEZELDB4QUYsMHgyRCwweDI5LDB4NjQsMHg0OSwweDAzLDB4Mzks
MHg1RiwweEVFLDB4RTgsMHg3MCwKKyAgICAweDY1LDB4NDksMHgwMiwweDQxLDB4QUEsMHhBQSww
eDgyLDB4QTksMHg2NCwweDQ5LDB4RTMsMHgzOCwweEFDLDB4RUEsMHhFRSwweDVFLAorICAgIDB4
NDQsMHg0OSwweEMyLDB4MzAsMHhBMiwweEFFLDB4RDYsMHg1RiwweDIzLDB4NDEsMHhDMSwweDMw
LDB4MjgsMHhBMCwweDdBLDB4RkQsCisgICAgMHg0NCwweDQxLDB4QzIsMHgzMCwweEEwLDB4RUIs
MHhCRiwweEI1LDB4NDQsMHg0MSwweDAzLDB4MzksMHg5QiwweEQ5LDB4NkIsMHhFRCwKKyAgICAw
eDY0LDB4NDksMHgwMywweDQxLDB4QTAsMHhBQiwweEI5LDB4RkIsMHhBNSwweDU5LDB4MDMsMHg0
MSwweDBCLDB4QUUsMHgyQiwweDA1LAorICAgIDB4MjYsMHg2QSwweEE1LDB4NTksMHgyRCwweDI1
LDB4MzksMHgzQiwweDY3LDB4NzIsMHhFNSwweDYxLDB4OTcsMHg5NiwweEZDLDB4RjAsCisgICAg
MHg2QiwweDkzLDB4MjYsMHg2QSwweDM1LDB4M0QsMHgxNSwweDFELDB4NzIsMHhDRCwweEQwLDB4
QkMsMHgwMywweDAxLDB4MDEsMHg4MSwKKyAgICAweDUzLDB4QzUsMHg2RiwweEFDLDB4MkUsMHgy
RSwweDI3LDB4RkQsMHg5MywweENELDB4NEUsMHhBNCwweEUwLDB4RTgsMHg3RSwweDU3LAorICAg
IDB4RDAsMHhCNCwweEFELDB4OTMsMHhBMCwweEVBLDB4N0YsMHg1RiwweDJFLDB4QTQsMHg4Qyww
eDhCLDB4RjgsMHg1RiwweDc3LDB4NzUsCisgICAgMHhFRSwweDlCLDB4OEMsMHg4QiwweDBCLDB4
QUQsMHhBNSwweDlELDB4MEUsMHg5QywweEFELDB4OTMsMHgyQSwweEY1LDB4MkQsMHhGRiwKKyAg
ICAweDJFLDB4OUMsMHg4QywweDhCLDB4OEEsMHhBMiwweEZBLDB4N0EsMHgyRSwweEE0LDB4NkMs
MHg4MywweDJGLDB4MzcsMHgzNywweDk1LAorICAgIDB4OEYsMHhBQywweDJGLDB4QTQsMHhCRiww
eDJCLDB4MjcsMHgyQiwweDMyLDB4QzUsMHg4RiwweEFDLDB4REQsMHhBQiwweDJCLDB4MEIsCisg
ICAgMHg0MywweDUxLDB4MjMsMHg1MSwweEY2LDB4MzksMHg5NiwweEQ1LDB4MjMsMHg1MSwweDAy
LDB4NDksMHhDOCwweDZBLDB4NzgsMHg1NCwKKyAgICAweDIzLDB4NDksMHhFMiwweDQ4LDB4RTcs
MHgyRiwweDgyLDB4MkEsMHg2NCwweDUxLDB4MDIsMHg0OSwweEVELDB4RUQsMHhBRiwweENGLAor
ICAgIDB4NDQsMHg1MSwweDAyLDB4NDksMHg4MCwweEIwLDB4RkYsMHhBNiwweDQ0LDB4NTksMHgy
MiwweDQ5LDB4M0YsMHgyOSwweDgxLDB4QjgsCisgICAgMHg0NCwweDU5LDB4MjMsMHg1MSwweDAw
LDB4MjAsMHhEQiwweEYxLDB4NjQsMHg1OSwweDAzLDB4NTEsMHhBMiwweEIyLDB4N0EsMHhGQiwK
KyAgICAweDQzLDB4NTksMHgwMywweDUxLDB4REUsMHhGRSwweEY2LDB4NzUsMHg2QSwweDlCLDB4
NDMsMHg1OSwweDI1LDB4MjUsMHgyNSwweDJELAorICAgIDB4NkEsMHg5QiwweEM4LDB4ODIsMHgw
MCwweDgwLDB4RTgsMHg3QSwweDI5LDB4OTMsMHg2NywweDcyLDB4RTgsMHg1RSwweDU3LDB4NUYs
CisgICAgMHg4NywweDdBLDB4NDYsMHg3MiwweEZDLDB4NzIsMHhFRSwweDlFLDB4ODcsMHg3QSww
eDQ2LDB4NzIsMHhBQiwweEJFLDB4M0EsMHhCRSwKKyAgICAweDg3LDB4N0EsMHg0NiwweDcyLDB4
QkEsMHhCQywweEVGLDB4QkYsMHg4NywweDdBLDB4NDYsMHg3MiwweDdBLDB4REEsMHg5RSwweDdF
LAorICAgIDB4NjcsMHg3QSwweDQ2LDB4NzIsMHg1NywweDdBLDB4QjUsMHhBRCwweEE4LDB4N0Es
MHg0NiwweDcyLDB4MzUsMHgyRiwweEFGLDB4RkIsCisgICAgMHhBOCwweDdBLDB4MDUsMHg2QSww
eDYwLDB4NUYsMHg1NywweDU3LDB4MDUsMHg2QSwweEM1LDB4NjEsMHhDMCwweDk4LDB4RUEsMHg1
RiwKKyAgICAweDA1LDB4NkEsMHhDNSwweDYxLDB4RTIsMHhCRSwweEI4LDB4RkYsMHgyNiwweDZB
LDB4RTUsMHg2OSwweEFGLDB4MEEsMHgwRCwweDBGLAorICAgIDB4NDcsMHg3MiwweDA2LDB4NkEs
MHg3QiwweEFCLDB4OEYsMHgyQSwweDI2LDB4NkEsMHhFMywweDM4LDB4NUEsMHg3QywweDc4LDB4
RTAsCisgICAgMHhDMiwweDM4LDB4ODEsMHgyOCwweEYwLDB4RkMsMHhGQywweEZDLDB4MDMsMHgz
OSwweDgxLDB4MjgsMHgyRCwweEFELDB4QTksMHhBQiwKKyAgICAweDAzLDB4MzksMHhBMiwweDM4
LDB4N0EsMHhFOCwweEZBLDB4QUEsMHg2NSwweDQ5LDB4QzIsMHgzOCwweEU5LDB4Q0IsMHhDQiww
eEUzLAorICAgIDB4NDQsMHg0MSwweEMyLDB4MzgsMHgwRiwweEJGLDB4RjcsMHhENywweDI0LDB4
NDEsMHhDMiwweDMwLDB4MDAsMHhGQSwweDdBLDB4NTUsCisgICAgMHgyMywweDQxLDB4QzMsMHgz
MCwweDJCLDB4QUIsMHg2MywweDdCLDB4RTMsMHgzOCwweDgyLDB4MjAsMHhGQywweEZFLDB4NUUs
MHg1RSwKKyAgICAweEMzLDB4MjgsMHg2MSwweDIwLDB4RkUsMHhCRSwweDNGLDB4MkYsMHgwMyww
eDMxLDB4ODEsMHgyOCwweEFGLDB4RUIsMHhGOCwweEZDLAorICAgIDB4QzIsMHgyOCwweDYxLDB4
MjAsMHgyQSwweDIyLDB4MkIsMHhBQSwweEUzLDB4MzgsMHhDMiwweDI4LDB4NUYsMHhERCwweDk1
LDB4RkQsCisgICAgMHhFMywweDMwLDB4QzIsMHgzMCwweDAyLDB4QTksMHg5MywweDVFLDB4MDMs
MHgzOSwweEMzLDB4MzAsMHg3RSwweDM3LDB4QUYsMHhBRCwKKyAgICAweDA0LDB4MzksMHhDMyww
eDMwLDB4RjUsMHg3RiwweEFGLDB4REYsMHhFMywweDM4LDB4QzIsMHgzMCwweDFGLDB4OEIsMHgw
QiwweEI5LAorICAgIDB4ODUsMHg1MSwweDAzLDB4MzksMHgyOSwweDg5LDB4RkQsMHg1NSwweDg1
LDB4NDksMHgwMywweDQxLDB4RjgsMHg3QSwweDVGLDB4NTcsCisgICAgMHg0NCwweDQxLDB4RTMs
MHgzOCwweDhCLDB4QUQsMHhCNSwweEY3LDB4MjQsMHg0MSwweEUyLDB4MzgsMHg1NywweDdGLDB4
QkYsMHgyRiwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4RjksMHhFRiwweEM2LDB4REMsMHgw
MywweDM5LDB4QzIsMHgzMCwweEFCLDB4MDMsMHg4RSwweDJELAorICAgIDB4MjMsMHgzOSwweEMy
LDB4MzAsMHgzRiwweDNFLDB4MzYsMHhCRSwweDQ0LDB4NDEsMHgwMywweDM5LDB4N0YsMHg3Nyww
eDdBLDB4RTIsCisgICAgMHg0NCwweDQ5LDB4QzIsMHgzMCwweEFBLDB4QUIsMHgwQiwweDJGLDB4
QTUsMHg1MSwweDAzLDB4NDEsMHhBRCwweEJGLDB4QUIsMHgwQSwKKyAgICAweDQ3LDB4NkEsMHhB
NSwweDUxLDB4MkQsMHgyRCwweEFELDB4NzUsMHg2NywweDcyLDB4QTUsMHg1OSwweDgwLDB4ODAs
MHhGQiwweEY1LAorICAgIDB4QzgsMHg3QSwweDg0LDB4NTksMHgyRSwweDNGLDB4QkYsMHhCRCww
eDcyLDB4Q0QsMHg4QywweDkzLDB4ODMsMHg4MiwweEEzLDB4ODksCisgICAgMHg5MCwweEI0LDB4
QUQsMHg5MywweDgyLDB4RTgsMHhGOCwweDcwLDB4MkYsMHhBNCwweDhDLDB4OEIsMHhBMCwweEVB
LDB4NUYsMHhENSwKKyAgICAweEVFLDB4OTMsMHg4QywweDhCLDB4N0EsMHg3RSwweEZGLDB4QkQs
MHhDRCwweDkzLDB4OEQsMHg4QiwweEY3LDB4NzksMHhGRCwweDNCLAorICAgIDB4Q0QsMHg5Myww
eDZDLDB4ODMsMHgzRiwweEFBLDB4RkEsMHg3MCwweEVFLDB4OUIsMHgwQSwweDdCLDB4QTAsMHhG
QSwweDdFLDB4N0YsCisgICAgMHhBRCwweDkzLDB4RUEsMHg3MiwweEUwLDB4RkUsMHhGRCwweDVE
LDB4OEMsMHg4QiwweEVCLDB4NzIsMHgzQiwweEVGLDB4RkYsMHg3NywKKyAgICAweDJFLDB4QTQs
MHgyQiwweDdCLDB4MDIsMHgyQiwweEZELDB4RkQsMHgzMiwweEJELDB4QUQsMHg5MywweDBBLDB4
MkIsMHhCRCwweEZELAorICAgIDB4NDMsMHg1MSwweDAzLDB4NDksMHhCQiwweEFGLDB4QkMsMHhE
NiwweDIzLDB4NDksMHgwMiwweDQ5LDB4M0QsMHg3NywweDU4LDB4NTgsCisgICAgMHg0MywweDUx
LDB4MDIsMHg0OSwweDMzLDB4QkQsMHhGRCwweERELDB4NDMsMHg0OSwweEUyLDB4NDgsMHhBMiww
eEVFLDB4RUEsMHg2QSwKKyAgICAweDY0LDB4NTksMHgwMiwweDQ5LDB4QkYsMHhBRCwweDI5LDB4
QUEsMHg0MywweDUxLDB4MDMsMHg1MSwweDgwLDB4MjgsMHhBOCwweEIyLAorICAgIDB4NDQsMHg1
MSwweDIzLDB4NTEsMHg3MywweDYzLDB4MDgsMHg3QSwweDQzLDB4NTEsMHgwMiwweDQ5LDB4QUUs
MHhFRSwweDVDLDB4REEsCisgICAgMHgyMywweDUxLDB4MDMsMHg0OSwweEQ1LDB4NjUsMHg1RSww
eDEzLDB4MEEsMHg5MywweDIzLDB4NTEsMHgwRCwweDBELDB4MDksMHgwOSwKKyAgICAweDJBLDB4
OTMsMHg4NywweDdBLDB4RjgsMHg3OCwweEZFLDB4N0UsMHhBNywweDdBLDB4NjcsMHg3QSwweEZD
LDB4RUUsMHhCRiwweDVFLAorICAgIDB4ODcsMHg3QSwweDY3LDB4N0EsMHg1NiwweDVGLDB4REEs
MHg4MywweDg3LDB4N0EsMHg0NywweDcyLDB4OEUsMHhCOCwweEJBLDB4MDgsCisgICAgMHg4Nyww
eDdBLDB4NDYsMHg3MiwweEFFLDB4QkIsMHg1QiwweEEyLDB4NjYsMHg3MiwweDQ2LDB4NzIsMHg2
NCwweEQ2LDB4NUMsMHhGNywKKyAgICAweDg3LDB4N0EsMHg0NiwweDcyLDB4RDUsMHhGNywweDM1
LDB4QjksMHg4NywweDdBLDB4NDYsMHg3MiwweEU5LDB4NjAsMHg3MCwweDdBLAorICAgIDB4MjYs
MHg3MiwweEM1LDB4NjEsMHhGMCwweEY4LDB4NkUsMHg1QSwweEU1LDB4NjEsMHhBNCwweDYxLDB4
OUYsMHgxNywweDM1LDB4QUQsCisgICAgMHhFNSwweDY5LDB4QzUsMHg2MSwweEJCLDB4RjgsMHg1
QywweDk0LDB4MjYsMHg2QSwweEM0LDB4NjEsMHgyMywweDJCLDB4MjUsMHgyRiwKKyAgICAweDY3
LDB4N0EsMHgyNiwweDcyLDB4RkYsMHhERCwweEZELDB4ODcsMHg0NiwweDZBLDB4RTIsMHgzOCww
eEUwLDB4RTgsMHg3OCwweDcwLAorICAgIDB4RTIsMHgzOCwweDYxLDB4MjgsMHhGQywweEZFLDB4
RDcsMHhGNywweDIzLDB4NDEsMHhBMSwweDI4LDB4RkQsMHhCRiwweEFGLDB4QTMsCisgICAgMHg2
NCwweDQ5LDB4RTMsMHgzOCwweDVELDB4QjksMHgyRiwweDM1LDB4NjQsMHg0OSwweEMyLDB4MzAs
MHhFQiwweDZBLDB4NzgsMHg3OCwKKyAgICAweEUzLDB4MzgsMHg4MSwweDI4LDB4QTgsMHhGRSww
eDVGLDB4N0UsMHhDMywweDMwLDB4ODIsMHgyMCwweDIwLDB4MkIsMHhCRSwweEY1LAorICAgIDB4
RTMsMHgzMCwweDYyLDB4MjAsMHg4MCwweEUyLDB4RTIsMHg3QSwweEMyLDB4MjgsMHg2MSwweDIw
LDB4N0UsMHhERiwweDc1LDB4NzcsCisgICAgMHhDMywweDI4LDB4NjEsMHgyMCwweDJGLDB4MkYs
MHhCRiwweEY1LDB4QzMsMHgzMCwweDgyLDB4MjAsMHg1OCwweEY4LDB4QjcsMHhBRiwKKyAgICAw
eEUzLDB4MzAsMHhBMiwweDI4LDB4NTUsMHg2OSwweENCLDB4QUYsMHhFMywweDMwLDB4QTIsMHgy
OCwweEVCLDB4RUEsMHhBOCwweEZFLAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHg3RSwweEY1
LDB4REYsMHhBQSwweDAzLDB4MzksMHhBMiwweDMwLDB4QUIsMHhBQiwweEZCLDB4NUUsCisgICAg
MHhFMywweDMwLDB4QTIsMHgzMCwweDNDLDB4Q0UsMHhFOSwweEFGLDB4MDMsMHgzOSwweEEyLDB4
MzAsMHhGQiwweEFELDB4MDksMHhBQSwKKyAgICAweDAzLDB4MzksMHhFMywweDMwLDB4M0UsMHg4
QSwweEFDLDB4NTcsMHgwMywweDM5LDB4RTIsMHgzOCwweEZCLDB4NTcsMHg1OCwweEIwLAorICAg
IDB4MDMsMHgzOSwweEUyLDB4MzgsMHgwMCwweDMwLDB4QkYsMHhDMywweDIzLDB4NDEsMHhFMiww
eDM4LDB4QUUsMHhGNSwweDdFLDB4NzgsCisgICAgMHgyMywweDQxLDB4QzIsMHgzMCwweEY4LDB4
RkYsMHhCNywweDI5LDB4NDQsMHg0MSwweEUyLDB4MzgsMHhCRCwweERELDB4RkYsMHhBOCwKKyAg
ICAweDIzLDB4MzksMHhFMiwweDMwLDB4RjgsMHhCMiwweEJBLDB4RkIsMHgyMywweDM5LDB4RTIs
MHgzMCwweDAzLDB4MkQsMHhCNSwweDlELAorICAgIDB4MjMsMHg0MSwweEMxLDB4MzAsMHgyQSww
eEY2LDB4RUUsMHhGQSwweEM1LDB4NTEsMHgwMiwweDM5LDB4OEUsMHhGRCwweEI1LDB4QjUsCisg
ICAgMHhDNSwweDUxLDB4NDMsMHg0OSwweDJELDB4QUQsMHhGRiwweEEwLDB4NDYsMHg2QSwweEE1
LDB4NTEsMHhBNSwweEFELDB4MEQsMHhGNSwKKyAgICAweDQ3LDB4NkEsMHhBNCwweDUxLDB4M0Is
MHhBMiwweDJGLDB4QjcsMHg5MCwweEI0LDB4ODgsMHg3MiwweDAzLDB4MkQsMHgyRCwweDBELAor
ICAgIDB4OTAsMHhCNCwweEFELDB4OEIsMHg2MCwweEUwLDB4RTAsMHhDMCwweDhDLDB4OEIsMHgy
QiwweDgzLDB4MEEsMHgzRSwweDJFLDB4MzQsCisgICAgMHhDRCwweDkzLDB4NkMsMHg4MywweDI5
LDB4M0EsMHhBQSwweEJBLDB4Q0QsMHg5MywweDBBLDB4NzMsMHg4MCwweEMwLDB4RjgsMHg1RSwK
KyAgICAweDhDLDB4OEIsMHhBOSwweDZBLDB4QTAsMHhFRiwweEY3LDB4NTcsMHgyQiwweDdCLDB4
Q0EsMHg2QSwweDgwLDB4ODIsMHhGQiwweERGLAorICAgIDB4MkEsMHg3MywweENBLDB4NzIsMHhG
RiwweEQ2LDB4RjcsMHhERSwweDRDLDB4ODMsMHhFQSwweDcyLDB4QjcsMHhBQiwweEFCLDB4MkEs
CisgICAgMHhDRCwweDkzLDB4MkIsMHg3QiwweEE1LDB4QTUsMHgzNywweDJGLDB4MEUsMHg5Qyww
eDZDLDB4ODMsMHgwOSwweDM3LDB4OTcsMHhENCwKKyAgICAweDQzLDB4NTEsMHhFMiwweDQwLDB4
NkUsMHhEMiwweEYyLDB4QkEsMHg0MywweDUxLDB4RTIsMHg0MCwweEI1LDB4QUIsMHhBRSwweEVB
LAorICAgIDB4MjMsMHg1MSwweDAyLDB4NDEsMHhCRiwweDM4LDB4RTAsMHhEQiwweDQzLDB4NTEs
MHgwMiwweDQ5LDB4RDYsMHhENiwweEVELDB4RUIsCisgICAgMHg0MywweDUxLDB4MDMsMHg1MSww
eEE4LDB4QkIsMHhBQSwweEZCLDB4NDMsMHg1MSwweDIzLDB4NTEsMHgzMCwweEJDLDB4QTksMHg0
MSwKKyAgICAweDQzLDB4NTEsMHgwMywweDQ5LDB4RjgsMHhBQSwweEFCLDB4NkIsMHgyMywweDUx
LDB4RTIsMHg0OCwweEE4LDB4QjgsMHg5QywweEJFLAorICAgIDB4MjMsMHg1MSwweEUyLDB4NDgs
MHhCQSwweEJGLDB4QkYsMHgzRiwweDA5LDB4OEIsMHg4NCwweDU5LDB4MDksMHgwOSwweDAxLDB4
MEIsCisgICAgMHhDOCwweDgyLDB4ODcsMHg3QSwweDc4LDB4RjgsMHg3OCwweDVFLDB4QTcsMHg3
QSwweDY3LDB4N0EsMHg1RSwweEZGLDB4RUYsMHhFRSwKKyAgICAweEE4LDB4ODIsMHg2NywweDcy
LDB4RkYsMHhBRSwweEU2LDB4QkMsMHhBOCwweDdBLDB4NjcsMHg3QSwweEZGLDB4QjgsMHhCQSww
eERFLAorICAgIDB4ODcsMHg3QSwweDY3LDB4NzIsMHg5QSwweDYyLDB4NzgsMHg2QSwweDY2LDB4
NzIsMHg0NiwweDcyLDB4RTYsMHg1NiwweEZELDB4RDUsCisgICAgMHg4NywweDdBLDB4NDYsMHg3
MiwweEI2LDB4MzcsMHhBOSwweEJELDB4ODcsMHg3QSwweDA1LDB4NkEsMHhFMCwweEZBLDB4N0Es
MHg3RSwKKyAgICAweDA2LDB4NkEsMHhBNCwweDYxLDB4NzgsMHg3QSwweDc2LDB4OUUsMHg4Nyww
eDdBLDB4QzQsMHg2MSwweDU1LDB4QkQsMHhCNSwweDJCLAorICAgIDB4NjcsMHg3QSwweDA1LDB4
NkEsMHhCNSwweDBCLDB4MDAsMHhCRSwweEE4LDB4N0EsMHg0NiwweDcyLDB4NUYsMHg4QSwweEZC
LDB4NTUsCisgICAgMHg4NywweDdBLDB4MjYsMHg2QSwweDBCLDB4ODAsMHg3RiwweEQ3LDB4NDYs
MHg2QSwweDAzLDB4NDEsMHg2MCwweDYwLDB4NjAsMHhFMCwKKyAgICAweEUyLDB4MzgsMHg4MSww
eDMwLDB4QjUsMHhCRiwweDNFLDB4MDgsMHg0NCwweDQxLDB4RTIsMHgzOCwweDgyLDB4QTIsMHgy
QiwweDNELAorICAgIDB4NDQsMHg0OSwweEMyLDB4MzAsMHgyRiwweEJFLDB4N0UsMHg1QywweDQ0
LDB4NDksMHhDMiwweDMwLDB4RjAsMHg2MiwweDZCLDB4N0YsCisgICAgMHhDMiwweDMwLDB4ODIs
MHgyMCwweEFBLDB4QTIsMHhGQSwweDc2LDB4QTIsMHgyOCwweDYyLDB4MjAsMHhDOCwweENBLDB4
RUEsMHg3RiwKKyAgICAweEEyLDB4MjAsMHg2MSwweDIwLDB4NzgsMHhGNywweEY1LDB4RUYsMHhD
MywweDI4LDB4NjIsMHgyMCwweEZGLDB4QkQsMHhCNywweEFCLAorICAgIDB4QTIsMHgyOCwweDYx
LDB4MjAsMHhENywweEFFLDB4QTgsMHhBMCwweEMyLDB4MjgsMHg4MiwweDIwLDB4RkQsMHhCRiww
eEFCLDB4QUQsCisgICAgMHhDMiwweDI4LDB4QTIsMHgyOCwweDRCLDB4RjYsMHhFMCwweEVCLDB4
RTMsMHgzMCwweEEyLDB4MjgsMHg1RiwweEFELDB4QTcsMHgyRCwKKyAgICAweEUzLDB4MzAsMHhB
MiwweDI4LDB4MDIsMHhFMywweEUyLDB4N0EsMHhFMywweDM4LDB4QTIsMHgyOCwweEJBLDB4RTIs
MHhCNywweEY1LAorICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHg4MiwweEIwLDB4MDAsMHgyQiww
eDA0LDB4MzksMHhDMywweDMwLDB4RTMsMHg3RCwweEU1LDB4RkQsCisgICAgMHgwMywweDM5LDB4
QzMsMHgzMCwweDIyLDB4QUYsMHhFRiwweDU3LDB4MjMsMHgzOSwweEMyLDB4MzAsMHgyQSwweEVB
LDB4RUYsMHhCRiwKKyAgICAweDAzLDB4MzksMHhFMiwweDMwLDB4OEIsMHg3RiwweDU3LDB4M0Es
MHgyMywweDM5LDB4RTIsMHgzOCwweDRBLDB4NDUsMHhGRiwweEFFLAorICAgIDB4MjMsMHg0MSww
eEUzLDB4MzgsMHgyNSwweEI1LDB4MzUsMHgyQSwweDg0LDB4NDksMHgyNCwweDQxLDB4NkYsMHhF
RiwweDNCLDB4QUYsCisgICAgMHg2NCwweDQ5LDB4MDMsMHgzOSwweDU1LDB4RjcsMHhCRiwweDg4
LDB4NDMsMHg0OSwweEMxLDB4MzAsMHhGNywweERGLDB4RkEsMHhBMiwKKyAgICAweDQzLDB4NDEs
MHhFMiwweDM4LDB4RkUsMHg4RCwweEJCLDB4QkYsMHg4NCwweDQ5LDB4RTIsMHgzOCwweDI1LDB4
QjcsMHhGRiwweDlGLAorICAgIDB4QTQsMHg1MSwweDQzLDB4NDksMHhFMCwweDU3LDB4RjUsMHgw
NSwweDA2LDB4NjIsMHg2MywweDQ5LDB4QjUsMHhGRCwweEFELDB4MkIsCisgICAgMHgyNywweDYy
LDB4ODQsMHg1MSwweDk3LDB4QkYsMHhCQSwweDg4LDB4RjEsMHhCQywweDI3LDB4NjIsMHgwRCww
eDJELDB4MkQsMHgyRCwKKyAgICAweDczLDB4QzUsMHhFRCwweDlCLDB4N0YsMHg3RiwweEVBLDB4
ODAsMHg3MCwweEFDLDB4NDgsMHg2MiwweEZFLDB4RDYsMHg1QSwweEUwLAorICAgIDB4NEMsMHg4
MywweEM3LDB4NTEsMHgwMCwweEVBLDB4RkUsMHg1RSwweDBCLDB4NzMsMHhBNiwweDUxLDB4QTAs
MHhBQSwweEZGLDB4RjUsCisgICAgMHhBOSwweDZBLDB4MjcsMHg1QSwweDA4LDB4QUUsMHhBQiww
eEY1LDB4RUEsMHg3MiwweDY4LDB4NjIsMHgzMiwweEFBLDB4QUYsMHhCRCwKKyAgICAweDZDLDB4
OEIsMHhBOSwweDZBLDB4RkYsMHhCRiwweDNELDB4MkYsMHgyRSwweDlDLDB4MEIsMHg3QiwweEZE
LDB4QUYsMHg4QSwweDAwLAorICAgIDB4MEUsMHg5QywweDZDLDB4ODMsMHg5NSwweEQ3LDB4RTgs
MHhFMCwweDRGLDB4QTQsMHg2QiwweDhCLDB4NUEsMHg3MiwweDYyLDB4OEEsCisgICAgMHgyMyww
eDQ5LDB4MDIsMHg0OSwweEU0LDB4QjksMHgwRCwweDA5LDB4MjMsMHg0OSwweDAzLDB4NDksMHgw
RCwweDI1LDB4MkYsMHhBMCwKKyAgICAweDQzLDB4NTEsMHgwMiwweDQ5LDB4NUUsMHgxNiwweEFF
LDB4QkIsMHg0MywweDUxLDB4MjMsMHg1MSwweDU2LDB4NzQsMHhEMiwweDAxLAorICAgIDB4NDMs
MHg1MSwweDAzLDB4NDksMHgwQSwweEIyLDB4OUUsMHg5MiwweDQzLDB4NTEsMHgwMiwweDQ5LDB4
RTIsMHhFQywweDcyLDB4REQsCisgICAgMHgyMywweDUxLDB4MDMsMHg0OSwweEQzLDB4NjMsMHgw
MiwweERFLDB4MjMsMHg1MSwweEUyLDB4NDgsMHg3QiwweDYwLDB4RUUsMHhGRSwKKyAgICAweEU5
LDB4ODIsMHhFMiwweDQ4LDB4RDUsMHhENSwweEI1LDB4MkQsMHhFOCwweDhBLDB4MjYsMHg2QSww
eDgxLDB4ODIsMHg4MCwweEEwLAorICAgIDB4QzgsMHg3QSwweDY2LDB4NzIsMHhCOCwweEZFLDB4
RkUsMHhFMywweEE3LDB4N0EsMHg2NiwweDcyLDB4RkEsMHhGRSwweEJFLDB4OEIsCisgICAgMHhB
NywweDdBLDB4NjYsMHg3QSwweEFGLDB4RkYsMHhGQiwweEEyLDB4ODcsMHg3QSwweDY2LDB4NzIs
MHgwMCwweDBBLDB4MEEsMHhBMCwKKyAgICAweEE3LDB4N0EsMHg0NiwweDcyLDB4RkUsMHg1Qyww
eDVGLDB4N0YsMHg0OSwweDhCLDB4NDYsMHg3MiwweDU1LDB4NTUsMHg5NSwweDBELAorICAgIDB4
OEEsMHg5QiwweDY3LDB4N0EsMHg1NSwweEQ1LDB4QUEsMHgyMCwweDI5LDB4OEIsMHgwNiwweDZB
LDB4RkYsMHg4MiwweEUwLDB4NUUsCisgICAgMHg2NywweDdBLDB4MDYsMHg2QSwweEFFLDB4NzAs
MHg1NywweDU1LDB4MjYsMHg2QSwweEM1LDB4NTksMHhBMCwweEEyLDB4MDIsMHg3RSwKKyAgICAw
eDQ2LDB4NzIsMHhDNCwweDU5LDB4RkYsMHhBQSwweDAwLDB4RDUsMHg2NywweDcyLDB4QzUsMHg2
MSwweDJFLDB4QTIsMHgwMCwweDU1LAorICAgIDB4QTgsMHg3QSwweDg0LDB4NTEsMHhBQSwweEEy
LDB4QTIsMHg1NywweDY2LDB4NzIsMHg0NCwweDQ5LDB4NzgsMHg2OCwweDdBLDB4N0YsCisgICAg
MHg0NCwweDQxLDB4QzIsMHgzOCwweEQ3LDB4NzcsMHhCRSwweEUwLDB4MDMsMHgzOSwweEMyLDB4
MzgsMHhCQiwweEJGLDB4QUYsMHg2MCwKKyAgICAweDI0LDB4NDEsMHg4MSwweDI4LDB4QTAsMHhB
OCwweEVGLDB4REYsMHgwMywweDMxLDB4NjEsMHgxOCwweEVBLDB4RjgsMHhGRSwweDdGLAorICAg
IDB4QTIsMHgyMCwweDYxLDB4MTgsMHg3QywweEVDLDB4RUYsMHhGRiwweEEyLDB4MjAsMHg2MSww
eDE4LDB4RjUsMHhBRCwweEFCLDB4MEYsCisgICAgMHhFMywweDMwLDB4ODIsMHgyMCwweEY1LDB4
RjUsMHhCRCwweEIyLDB4RTMsMHgzMCwweEEyLDB4MjgsMHg1QiwweEVGLDB4QUEsMHgwQSwKKyAg
ICAweEUyLDB4MzAsMHg4MSwweDIwLDB4NzcsMHg3RiwweEZFLDB4QTgsMHhBMiwweDI4LDB4ODEs
MHgyMCwweEFCLDB4NjcsMHhFRSwweDAwLAorICAgIDB4RTIsMHgzMCwweDgyLDB4MjAsMHhCRiww
eEZELDB4RkQsMHhBMiwweEMyLDB4MjgsMHg4MSwweDI4LDB4MDgsMHhBNywweEE1LDB4MEIsCisg
ICAgMHhDMiwweDMwLDB4QTIsMHgyOCwweDYyLDB4NkEsMHhGQiwweEQ3LDB4MDMsMHgzMSwweEEy
LDB4MjgsMHhCNSwweEVELDB4MkIsMHgyRCwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4RDUs
MHhCRiwweDhBLDB4MkIsMHgyNCwweDM5LDB4QzIsMHgzOCwweDZCLDB4Q0EsMHgwQiwweEFCLAor
ICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGNywweEZELDB4MjIsMHgzMiwweDIzLDB4MzksMHhF
MywweDMwLDB4QUQsMHgzRCwweDc5LDB4RUYsCisgICAgMHgyMywweDM5LDB4QzIsMHgzMCwweDJB
LDB4QUEsMHhGQSwweDVBLDB4MjMsMHgzOSwweEUyLDB4MzAsMHhGQywweEQ1LDB4RDcsMHg1NSwK
KyAgICAweDIzLDB4NDEsMHhFMywweDM4LDB4QTIsMHhBOSwweEJELDB4OTUsMHg2NCwweDQ5LDB4
MDMsMHgzOSwweDJCLDB4RkYsMHhGNSwweEI3LAorICAgIDB4ODUsMHg1MSwweDQ0LDB4NDksMHhB
RSwweDczLDB4NjMsMHhFRiwweDQ0LDB4NDksMHgyMywweDQxLDB4NDAsMHg1RSwweEU2LDB4MEYs
CisgICAgMHg0MywweDQxLDB4MDMsMHgzOSwweEQ3LDB4NTUsMHhGRiwweEFFLDB4NDMsMHg0MSww
eDAzLDB4MzksMHgzNSwweEFGLDB4N0UsMHhFMiwKKyAgICAweDg0LDB4NTEsMHgwMywweDM5LDB4
MDIsMHhGRiwweEZELDB4RUYsMHhDNSwweDU5LDB4NDMsMHg0MSwweDBBLDB4OTksMHg3RCwweERE
LAorICAgIDB4MDYsMHg2MiwweDY0LDB4NDksMHgwMiwweEJGLDB4RjUsMHhCRiwweEQxLDB4QjQs
MHgwNiwweDYyLDB4MkQsMHgyNSwweDI1LDB4QjUsCisgICAgMHg5MywweENELDB4RDEsMHhCQyww
eEFBLDB4QUEsMHhBQiwweEJELDB4NTMsMHhDNSwweDJGLDB4QTQsMHg3RSwweEZFLDB4RjgsMHhF
MCwKKyAgICAweEIwLDB4QUMsMHhFQiwweDdBLDB4N0UsMHhBQSwweDIwLDB4MDAsMHg4RiwweEFD
LDB4RTYsMHg1MSwweDU3LDB4RkEsMHgwMCwweDAwLAorICAgIDB4NkYsMHhBNCwweDA3LDB4NUEs
MHg1NSwweEZGLDB4MDAsMHgwMCwweDRGLDB4QTQsMHhBOSwweDZBLDB4NTUsMHhGRCwweDAwLDB4
MDAsCisgICAgMHgyRSwweDlDLDB4Q0EsMHg3MiwweEFELDB4QUIsMHgwMCwweDAwLDB4NkYsMHhB
QywweEVELDB4OTMsMHgyRCwweEE5LDB4OEIsMHhBQiwKKyAgICAweDRGLDB4QTQsMHhBQywweDhC
LDB4NzAsMHhGOCwweEUwLDB4QTIsMHg2RiwweEFDLDB4Q0MsMHg5MywweEFELDB4OEQsMHgwRCww
eDBELAorICAgIDB4MjMsMHg1MSwweDAyLDB4NDEsMHhBMCwweDQzLDB4RkYsMHhGRiwweDIzLDB4
NTEsMHhFMiwweDQwLDB4QTIsMHgxQSwweDJGLDB4MEYsCisgICAgMHg0MywweDUxLDB4MjMsMHg1
MSwweEZELDB4OEIsMHhBMCwweDAzLDB4NDMsMHg1MSwweDIzLDB4NTEsMHg1OCwweDc0LDB4NjUs
MHg1NCwKKyAgICAweDQzLDB4NTEsMHgwMywweDQ5LDB4RjMsMHhCQSwweEZFLDB4REUsMHgyMyww
eDUxLDB4MDIsMHg0MSwweEZDLDB4QTcsMHg1RiwweDdCLAorICAgIDB4MjMsMHg0OSwweDAzLDB4
NDksMHg1NCwweDI4LDB4N0UsMHhGOSwweEM0LDB4NjEsMHhBMSwweDQwLDB4RkYsMHhGRiwweEJG
LDB4M0QsCisgICAgMHgwOSwweDhCLDB4NDMsMHg1MSwweDBELDB4MDksMHgwMiwweDAwLDB4MDks
MHg4QiwweEE3LDB4ODIsMHg3OCwweEVDLDB4RkEsMHg3QSwKKyAgICAweEU4LDB4ODIsMHg4Niww
eDdBLDB4NTcsMHhERiwweEZGLDB4RjgsMHhBNywweDdBLDB4ODcsMHg3QSwweERFLDB4NUUsMHg1
RSwweDA4LAorICAgIDB4QTcsMHg3QSwweDY2LDB4NzIsMHhCMiwweEVBLDB4NjAsMHg3OCwweDI5
LDB4OTMsMHg2NiwweDcyLDB4NTcsMHg1NSwweDU1LDB4MTUsCisgICAgMHhBQiwweEEzLDB4ODcs
MHg3QSwweDU1LDB4QjUsMHgwQiwweDAwLDB4OEEsMHg5QiwweDI1LDB4NkEsMHgwMiwweDAwLDB4
QzAsMHg3OCwKKyAgICAweDhBLDB4OUIsMHhDNSwweDYxLDB4RTAsMHg1QSwweDU3LDB4NTUsMHgy
NiwweDZBLDB4QTQsMHg2MSwweEI4LDB4RkIsMHhENywweEFGLAorICAgIDB4MDYsMHg2QSwweDQ0
LDB4NDksMHgwMCwweDY4LDB4NUUsMHg1RSwweEE0LDB4NTksMHgwMywweDQxLDB4RUMsMHg3Nyww
eEY1LDB4RUYsCisgICAgMHg0MywweDQ5LDB4MjMsMHg0MSwweDBCLDB4QTIsMHhFMiwweEQ4LDB4
NDMsMHg0OSwweDAzLDB4NDEsMHhFMiwweEE4LDB4RUEsMHhGNywKKyAgICAweDQzLDB4NDksMHgw
MywweDQxLDB4NjcsMHg5RSwweERFLDB4RDcsMHg4NSwweDUxLDB4MjMsMHg0MSwweEM5LDB4RUIs
MHhFRiwweEQ5LAorICAgIDB4NDQsMHg0OSwweEMyLDB4MzAsMHhBMCwweEJBLDB4RkUsMHg1RSww
eDAzLDB4MzksMHg4MiwweDIwLDB4RTAsMHhGMCwweDVFLDB4N0UsCisgICAgMHhBMiwweDI4LDB4
ODEsMHgyMCwweDYyLDB4RTIsMHhBQSwweERELDB4QTIsMHgyMCwweDYxLDB4MTgsMHg2QSwweEU4
LDB4RjgsMHhGRSwKKyAgICAweEEyLDB4MjgsMHg2MSwweDE4LDB4RDUsMHhENSwweEE3LDB4QTks
MHhFMywweDMwLDB4ODIsMHgyMCwweEE1LDB4RjUsMHhCRCwweDJGLAorICAgIDB4MjQsMHgzOSww
eEExLDB4MjgsMHhBRiwweDNELDB4MzcsMHgzRSwweDI0LDB4MzksMHhDMiwweDMwLDB4RjYsMHhG
NywweEE0LDB4RkMsCisgICAgMHhFMiwweDMwLDB4ODEsMHgyOCwweEJBLDB4NzgsMHhGQywweEY4
LDB4RTMsMHgzMCwweEExLDB4MjgsMHhCQiwweDAyLDB4MjksMHhGNSwKKyAgICAweEUyLDB4MzAs
MHhBMiwweDI4LDB4RTIsMHhGMCwweEU4LDB4RkUsMHhFMywweDI4LDB4ODEsMHgyOCwweEZCLDB4
REUsMHg3RSwweEZFLAorICAgIDB4QzIsMHgyOCwweDgxLDB4MjAsMHhFQSwweEVGLDB4QkYsMHgy
NywweEMyLDB4MjgsMHhBMiwweDI4LDB4MDksMHgwNSwweDU5LDB4NUIsCisgICAgMHhFMywweDMw
LDB4QTIsMHgyOCwweDBBLDB4RkYsMHhGNywweEY3LDB4MDMsMHgzOSwweEEyLDB4MjgsMHgyQiww
eDJELDB4RkYsMHhERiwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4RTAsMHhGMCwweEZGLDB4
NTcsMHgyNCwweDM5LDB4QzIsMHgzMCwweEEzLDB4QUYsMHhFRCwweDk1LAorICAgIDB4MjMsMHgz
OSwweEUyLDB4MzAsMHg2OCwweDdFLDB4RUIsMHhGQSwweDIzLDB4MzksMHhFMiwweDM4LDB4QjUs
MHhCNywweDM1LDB4QjUsCisgICAgMHgyMywweDQxLDB4QzIsMHgzMCwweEY0LDB4N0EsMHhGOCww
eEZCLDB4NjQsMHg0OSwweEMyLDB4MzgsMHhCRiwweDNGLDB4MkYsMHgyRCwKKyAgICAweDg1LDB4
NDksMHgyMywweDQxLDB4QUIsMHhENiwweDdDLDB4RjAsMHg0NCwweDQ5LDB4RTIsMHgzOCwweDBB
LDB4MkEsMHhCRiwweEY2LAorICAgIDB4MjMsMHg0MSwweEMyLDB4MzgsMHgwMCwweDAyLDB4RkMs
MHhGRiwweDY0LDB4NDksMHhFMywweDM4LDB4OEIsMHhBRiwweERGLDB4REQsCisgICAgMHg4NSww
eDQ5LDB4RTIsMHgzOCwweDgyLDB4QUIsMHhENSwweEY1LDB4QzUsMHg1MSwweDIzLDB4NDEsMHhB
QiwweDJCLDB4QTcsMHg3NSwKKyAgICAweDA2LDB4NjIsMHg2MywweDQ5LDB4MkIsMHgyQSwweEFG
LDB4RDUsMHhBQywweDkzLDB4NjQsMHg1MSwweDJGLDB4MkYsMHgyNSwweDM1LAorICAgIDB4MTEs
MHhCRCwweDJFLDB4QTQsMHgyQiwweEFGLDB4QkQsMHhGRCwweDUyLDB4QzUsMHhCMCwweEI0LDB4
MjAsMHgyQiwweEJGLDB4N0QsCisgICAgMHg3MywweENELDB4RjAsMHhCQywweDdCLDB4QTgsMHhB
MiwweEE5LDB4MzIsMHhDNSwweDZGLDB4QUMsMHhGRSwweEZFLDB4REMsMHg2OCwKKyAgICAweEFG
LDB4QjQsMHg0RiwweEE0LDB4QzAsMHhGOCwweDVCLDB4RkYsMHg2RiwweEFDLDB4MkUsMHhBNCww
eEU4LDB4QkEsMHg1NSwweDdGLAorICAgIDB4OEYsMHhBQywweDBFLDB4OUMsMHg1RSwweEUyLDB4
QUEsMHgyMywweDZGLDB4QUMsMHgwRSwweDlDLDB4RUYsMHhGNywweEZBLDB4RTAsCisgICAgMHg2
RiwweEE0LDB4MkUsMHhBNCwweDRGLDB4RDUsMHg1NSwweDVGLDB4OTAsMHhBQywweEVELDB4OUIs
MHgyRCwweDM3LDB4QkYsMHhCRiwKKyAgICAweDQzLDB4NTEsMHhFMiwweDQwLDB4RkYsMHg5Riww
eDI1LDB4M0QsMHg2NCwweDU5LDB4MDIsMHg0OSwweEFELDB4MkIsMHhBMiwweEFBLAorICAgIDB4
ODMsMHg1MSwweDIzLDB4NTEsMHhGNywweERFLDB4NzcsMHg3RiwweDYzLDB4NTEsMHgwMiwweDQ5
LDB4RTgsMHhGQSwweEVFLDB4N0YsCisgICAgMHgyMywweDQ5LDB4MDMsMHg0OSwweERBLDB4MjMs
MHgwMywweDc5LDB4MjMsMHg0OSwweEUyLDB4NDAsMHhGOCwweDJBLDB4OUUsMHhBMiwKKyAgICAw
eDIzLDB4NDksMHgwMiwweDQxLDB4NTYsMHgyNCwweENGLDB4NjcsMHhDQiwweEEzLDB4MDMsMHg0
OSwweEI1LDB4MjUsMHgwRCwweDBELAorICAgIDB4OEIsMHg5QiwweEM4LDB4ODIsMHg3RSwweEZG
LDB4RkMsMHhDOCwweDA4LDB4OEIsMHhBNywweDgyLDB4RkIsMHhERSwweEZBLDB4RTgsCisgICAg
MHhBNywweDgyLDB4RTcsMHg3QSwweDJBLDB4QUEsMHgyMiwweEJFLDB4QzcsMHg4MiwweDg2LDB4
N0EsMHhGQiwweDc2LDB4N0UsMHg1NCwKKyAgICAweEFCLDB4QTMsMHg0NiwweDcyLDB4NTcsMHhG
NSwweEI3LDB4MkIsMHhDQiwweEEzLDB4NjcsMHg3QSwweDJELDB4MEEsMHgwMCwweDgwLAorICAg
IDB4QUIsMHhBMywweDI2LDB4NkEsMHgwMCwweEMwLDB4NzgsMHg1NiwweEU5LDB4OEEsMHhBNCww
eDU5LDB4RjgsMHg1RSwweDVGLDB4NUYsCisgICAgMHhFNiwweDYxLDB4ODQsMHg1OSwweEFFLDB4
M0QsMHgyQiwweDJGLDB4MDYsMHg2QSwweDY0LDB4NTEsMHgyMiwweEU4LDB4RTgsMHg3QSwKKyAg
ICAweDg0LDB4NTEsMHgyMywweDQ5LDB4QTgsMHhFOCwweERDLDB4RjcsMHg2NCwweDQ5LDB4MjMs
MHg0MSwweEZFLDB4N0IsMHg2RiwweEIyLAorICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHhCQiww
eEZGLDB4RTcsMHgyRSwweEU1LDB4NjEsMHgwMywweDQxLDB4NTUsMHg1RCwweEQ3LDB4MkEsCisg
ICAgMHhDNSwweDU5LDB4MDMsMHg0MSwweDU1LDB4NTUsMHhGRiwweDgwLDB4NjQsMHg0OSwweEUy
LDB4MzgsMHhFOCwweDVBLDB4N0UsMHg3QSwKKyAgICAweEUzLDB4MzgsMHhBMSwweDI4LDB4Rjgs
MHhCRSwweEFFLDB4RjYsMHhFMywweDMwLDB4ODEsMHgyMCwweDcyLDB4NzAsMHg3OCwweDdBLAor
ICAgIDB4ODEsMHgyMCwweDYxLDB4MTgsMHgwMCwweEFBLDB4MDgsMHg4MCwweDgyLDB4MjAsMHg2
MSwweDE4LDB4QjgsMHhCRiwweDU1LDB4QjUsCisgICAgMHhDMywweDI4LDB4NjEsMHgxOCwweEFG
LDB4QUYsMHhBQSwweDhBLDB4QzMsMHgzMCwweDgyLDB4MjAsMHgwRiwweEJGLDB4RjcsMHhFRCwK
KyAgICAweDA0LDB4MzksMHhBMiwweDI4LDB4M0EsMHhCQiwweERGLDB4RDUsMHgwMywweDM5LDB4
QTIsMHgyOCwweEVDLDB4RTYsMHhGRiwweDc5LAorICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHhG
RSwweEE5LDB4MEYsMHgyRiwweEUyLDB4MzAsMHhBMSwweDI4LDB4NTcsMHhGOCwweEY4LDB4QzAs
CisgICAgMHhFMywweDMwLDB4ODEsMHgyOCwweEZGLDB4RDYsMHhGQSwweDgwLDB4QzIsMHgzMCww
eEEyLDB4MjgsMHhENiwweDk1LDB4QUIsMHg4RSwKKyAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4
NTUsMHhCRiwweDJBLDB4OEIsMHhDMiwweDMwLDB4QTIsMHgyOCwweDVGLDB4RjQsMHhBRCwweDVC
LAorICAgIDB4QzIsMHgyOCwweDgyLDB4MjgsMHgwMCwweDBBLDB4QUEsMHhFRiwweEUyLDB4MzAs
MHhBMiwweDI4LDB4QUYsMHgwQiwweEFGLDB4M0QsCisgICAgMHhFMiwweDMwLDB4QTIsMHgyOCww
eEVGLDB4OEUsMHgyOCwweDBBLDB4MjQsMHgzOSwweEMyLDB4MzAsMHhCRiwweDM3LDB4RDUsMHhG
RiwKKyAgICAweDQ0LDB4NDEsMHhFMywweDM4LDB4RkEsMHhDMiwweEFELDB4QUQsMHgyMywweDM5
LDB4RTIsMHgzMCwweEFELDB4ODUsMHhBRCwweEQ1LAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAs
MHhFQywweEFBLDB4OEUsMHhFRSwweDY0LDB4NDksMHhDMiwweDMwLDB4QjUsMHgzNSwweDM3LDB4
MkYsCisgICAgMHhBNSwweDUxLDB4MjQsMHg0MSwweDY4LDB4NjAsMHhFMCwweEY2LDB4MjQsMHg0
MSwweEMyLDB4MzAsMHhFOCwweDlDLDB4QkEsMHhGQywKKyAgICAweDQ0LDB4NDEsMHhFMiwweDM4
LDB4QkQsMHgzNSwweEI3LDB4RjUsMHgyMywweDQxLDB4QzIsMHgzMCwweEJBLDB4QTgsMHhCQSww
eDdFLAorICAgIDB4NjUsMHg0MSwweEUzLDB4MzgsMHhGNSwweEFELDB4QUYsMHgyQiwweEM2LDB4
NTksMHgyMywweDQ5LDB4RkQsMHhCRiwweEFCLDB4MkEsCisgICAgMHhFNiwweDU5LDB4NDMsMHg0
MSwweEY1LDB4QjcsMHgwRiwweDg4LDB4MEEsMHg3QiwweDY0LDB4NDksMHgzNSwweDNGLDB4Mjcs
MHgzRiwKKyAgICAweDZGLDB4QUMsMHhDRCwweDkzLDB4MEEsMHhBQiwweEJELDB4QjUsMHhGMSww
eEJDLDB4MEUsMHhBNCwweDBCLDB4M0YsMHhGRiwweEY1LAorICAgIDB4MzIsMHhCRCwweDRFLDB4
QUMsMHgwMiwweDgwLDB4QUIsMHhCNSwweDMyLDB4QzUsMHg4RiwweEFDLDB4NzgsMHg3QSwweEVB
LDB4QUIsCisgICAgMHhEMCwweEI0LDB4NkYsMHhBQywweDU3LDB4NkYsMHhGQSwweEY4LDB4OEYs
MHhBQywweDRGLDB4QTQsMHhERSwweEZGLDB4RjcsMHhDQywKKyAgICAweDhGLDB4QUMsMHg0Riww
eEE0LDB4QkYsMHhCQSwweEFCLDB4REMsMHg5MCwweEFDLDB4NEUsMHhBNCwweDZGLDB4QkEsMHhC
MiwweEE5LAorICAgIDB4OEYsMHhBQywweDRGLDB4QTQsMHg1RiwweDdFLDB4REEsMHg2RiwweDZG
LDB4QUMsMHgyRSwweEE0LDB4RkQsMHg4OCwweEIyLDB4NUEsCisgICAgMHg2NCwweDU5LDB4MDMs
MHg0OSwweEJELDB4QUEsMHgyQSwweDhBLDB4NjQsMHg1OSwweDQzLDB4NTEsMHg2RSwweDA4LDB4
ODIsMHhBRiwKKyAgICAweDYzLDB4NTEsMHgyMiwweDQ5LDB4NzcsMHg3OCwweDdGLDB4NUEsMHg0
MywweDQ5LDB4MDIsMHg0OSwweDVBLDB4NUMsMHhBQSwweDlGLAorICAgIDB4MjMsMHg0OSwweDAy
LDB4NDksMHhDMCwweEMwLDB4ODAsMHhENSwweDIzLDB4NDksMHgwMiwweDQxLDB4QjMsMHhENSww
eEVELDB4NjYsCisgICAgMHg2MywweDUxLDB4MDIsMHg0OSwweDVELDB4RDUsMHhENywweDk1LDB4
QUIsMHg5QiwweDg0LDB4NTksMHgwOSwweDA5LDB4MDMsMHgwMywKKyAgICAweDhBLDB4OUIsMHgw
OCwweDhCLDB4RTgsMHhFQSwweEUwLDB4N0EsMHgwOCwweDhCLDB4QzgsMHg4MiwweDU4LDB4RkEs
MHhFOCwweEVDLAorICAgIDB4MDgsMHg4QiwweEE3LDB4ODIsMHg1RiwweERGLDB4N0YsMHgyQSww
eENCLDB4QTMsMHhBNywweDgyLDB4NTUsMHhCNSwweDJELDB4MDIsCisgICAgMHhDQiwweEEzLDB4
QzgsMHg4MiwweDAzLDB4MDAsMHg4MCwweDYwLDB4QUIsMHhBMywweDI2LDB4NzIsMHhDMCwweDU4
LDB4NTYsMHg1NSwKKyAgICAweDY3LDB4NzIsMHgwNSwweDZBLDB4OUUsMHhCNywweDJFLDB4RjMs
MHgyNiwweDZBLDB4NjMsMHg1MSwweDc4LDB4REMsMHhGRSwweEJFLAorICAgIDB4RTYsMHg2MSww
eDYzLDB4NDksMHgwQiwweDA4LDB4QzgsMHg1MiwweEM1LDB4NTksMHgyMywweDQxLDB4RTgsMHhG
RSwweDdGLDB4RkYsCisgICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweDBFLDB4MkEsMHgyOSwweEEy
LDB4ODUsMHg1MSwweDIzLDB4NDksMHg3RiwweEZFLDB4M0UsMHgzNywKKyAgICAweDA2LDB4NkEs
MHg2NCwweDQ5LDB4QUQsMHgwMiwweEEwLDB4RTIsMHhDNSwweDYxLDB4RTIsMHg0MCwweDAwLDB4
QTgsMHhGRSwweDVGLAorICAgIDB4QzUsMHg1OSwweDAyLDB4NDEsMHhDMCwweEZBLDB4RkYsMHg1
NSwweDIzLDB4NDEsMHhDMiwweDMwLDB4RTAsMHhGRSwweDVFLDB4NUUsCisgICAgMHhDMiwweDMw
LDB4ODEsMHgyMCwweEVDLDB4NjgsMHg2OCwweEQ4LDB4QTIsMHgyOCwweDYxLDB4MjAsMHhFMCww
eDdBLDB4N0EsMHhFOCwKKyAgICAweDgxLDB4MjAsMHg0MSwweDE4LDB4MjAsMHhFQSwweEZGLDB4
RUUsMHhDMiwweDI4LDB4NDAsMHgxOCwweEI3LDB4QUYsMHgwQiwweDBBLAorICAgIDB4QzMsMHgz
MCwweEExLDB4MjAsMHg3RSwweEZBLDB4Q0EsMHhBQSwweEMyLDB4MzAsMHg4MSwweDIwLDB4RkYs
MHhBRiwweEVCLDB4QjgsCisgICAgMHgwMywweDM5LDB4QTIsMHgyOCwweEQ1LDB4QkQsMHhBRiww
eDhCLDB4MDMsMHgzMSwweEMyLDB4MzAsMHhENywweEE4LDB4RjAsMHg3RCwKKyAgICAweEUyLDB4
MzAsMHg4MiwweDI4LDB4QUUsMHhCNiwweERFLDB4OEUsMHgwMywweDM5LDB4QTIsMHgzMCwweEFF
LDB4QTUsMHhBNSwweEJGLAorICAgIDB4MDIsMHgzOSwweEMzLDB4MzAsMHhFRSwweDdBLDB4N0Is
MHhERSwweEUzLDB4MzAsMHhBMiwweDI4LDB4QkYsMHhCRSwweEI3LDB4QjQsCisgICAgMHhFMyww
eDMwLDB4ODEsMHgyOCwweDdFLDB4RkEsMHhGOCwweEZFLDB4QzIsMHgzMCwweEEyLDB4MjgsMHhB
NSwweDM1LDB4RkIsMHhBQSwKKyAgICAweEEyLDB4MzAsMHhDMiwweDI4LDB4OTcsMHhGNSwweEZG
LDB4OTcsMHhDMiwweDMwLDB4QTIsMHgyOCwweDJGLDB4QUQsMHhBQSwweEU5LAorICAgIDB4RTMs
MHgzMCwweEEyLDB4MjgsMHhFQSwweDJBLDB4QTMsMHg1QiwweDAzLDB4MzksMHhDMywweDMwLDB4
QkYsMHhGMiwweEUzLDB4QTksCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDJGLDB4MkQsMHhF
NSwweEI1LDB4MDMsMHgzOSwweEEyLDB4MzAsMHgyQSwweDgzLDB4QTcsMHhFRiwKKyAgICAweDAz
LDB4MzksMHhFMiwweDMwLDB4N0YsMHhGRSwweERCLDB4OTUsMHgyMywweDM5LDB4RTMsMHgzMCww
eDBBLDB4MDIsMHhFQSwweEU5LAorICAgIDB4NjQsMHg0MSwweEMzLDB4MzAsMHhBOCwweDdGLDB4
RkQsMHhGRiwweDAzLDB4MzksMHhDMiwweDMwLDB4RjgsMHhFRSwweEFCLDB4QUIsCisgICAgMHgw
MywweDM5LDB4QzIsMHgzMCwweDIzLDB4QUIsMHhBQSwweDIzLDB4MjQsMHgzOSwweEMyLDB4MzAs
MHg3QSwweERFLDB4QUYsMHgyRiwKKyAgICAweDQ0LDB4NDEsMHhFMywweDMwLDB4OUQsMHhCNSww
eEJGLDB4MDksMHhBNSwweDUxLDB4MjMsMHg0MSwweDIyLDB4M0QsMHhGRCwweEY1LAorICAgIDB4
QzUsMHg1OSwweDQ0LDB4NDksMHhBMCwweEJCLDB4QUQsMHgyRCwweDJBLDB4ODMsMHhDNSwweDUx
LDB4QjUsMHhCNSwweDM1LDB4MzUsCisgICAgMHhFRCwweDlCLDB4OEMsMHg4QiwweDA5LDB4QkYs
MHhGQSwweDYyLDB4MkUsMHhBNCwweDhDLDB4OEIsMHgwQSwweEFGLDB4RkYsMHhENSwKKyAgICAw
eDZGLDB4QUMsMHhDRCwweDkzLDB4MEEsMHhFRiwweEZELDB4REQsMHhGMCwweEI0LDB4MEQsMHg5
QywweDBBLDB4MEIsMHhCRCwweEQ1LAorICAgIDB4RjEsMHhCQywweDhGLDB4QUMsMHhGQywweEUy
LDB4RTIsMHhCNSwweEQxLDB4QjQsMHg3MCwweEFDLDB4N0UsMHhFRiwweEFFLDB4QjgsCisgICAg
MHhCMCwweEI0LDB4NEYsMHhBNCwweERGLDB4RkEsMHg4QSwweDhBLDB4OEYsMHhBQywweDJELDB4
QTQsMHhGNiwweEZFLDB4RTgsMHgyOCwKKyAgICAweDZGLDB4QUMsMHgyRSwweEE0LDB4QUEsMHhD
RiwweEVBLDB4RkUsMHg0RiwweEE0LDB4MEUsMHg5QywweDdFLDB4QkUsMHhGQiwweDVBLAorICAg
IDB4NjQsMHg1OSwweDIzLDB4NTEsMHgyNywweEE3LDB4RTcsMHhBRSwweDY0LDB4NTksMHg0Myww
eDUxLDB4MkYsMHg4MCwweDYwLDB4NzIsCisgICAgMHg2NCwweDUxLDB4MDIsMHg0OSwweEZBLDB4
NzgsMHhGRSwweDVFLDB4MjIsMHg0OSwweEUxLDB4NDAsMHhBOCwweEEwLDB4ODIsMHhGQiwKKyAg
ICAweDIzLDB4NDksMHhFMiwweDQwLDB4QUIsMHhFQywweDdBLDB4QUUsMHgyMywweDQ5LDB4RTIs
MHg0MCwweEZBLDB4OUIsMHgyOSwweDJGLAorICAgIDB4MjUsMHg2QSwweEUyLDB4NDAsMHhGNSww
eEJELDB4MzUsMHgzNywweDhBLDB4OUIsMHhFOCwweDgyLDB4ODEsMHg4MSwweDAzLDB4ODIsCisg
ICAgMHg2OSwweDlCLDB4MDksMHg4QiwweEVBLDB4RUEsMHg2QSwweEVBLDB4NDksMHg5MywweEU4
LDB4OEEsMHg2RiwweDdFLDB4QkYsMHgyQSwKKyAgICAweENCLDB4QTMsMHhFOCwweDhBLDB4QkQs
MHgwRiwweDAyLDB4MEEsMHhFQiwweEEzLDB4ODYsMHg3QSwweDAwLDB4ODAsMHhFMCwweDc4LAor
ICAgIDB4QUEsMHg5QiwweDQ2LDB4NzIsMHg3OCwweDVFLDB4NTUsMHg1NSwweDY3LDB4N0EsMHgy
NiwweDZBLDB4RUQsMHgzQiwweDhCLDB4OEIsCisgICAgMHg0NiwweDcyLDB4QTQsMHg1OSwweEUw
LDB4RTAsMHg3MCwweDVDLDB4QzUsMHg2MSwweDIyLDB4NDEsMHg4MiwweEEyLDB4RkEsMHg3NywK
KyAgICAweEE1LDB4NTEsMHgyMywweDQxLDB4RjgsMHgzRiwweEFELDB4OEIsMHg4NCwweDUxLDB4
NDQsMHg0OSwweEY0LDB4QjYsMHhBRiwweEVGLAorICAgIDB4NjQsMHg0OSwweDIzLDB4NDEsMHhB
MiwweEI2LDB4QUUsMHhCRiwweDg0LDB4NTEsMHhFMywweDM4LDB4M0YsMHgyRSwweEJFLDB4REYs
CisgICAgMHgwNiwweDYyLDB4ODQsMHg1OSwweEVBLDB4ODgsMHhFQSwweEU5LDB4QTUsMHg1OSww
eDAyLDB4NDEsMHg1RSwweDVFLDB4NUMsMHg3OCwKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4
ODAsMHhFMCwweDYwLDB4RTAsMHgwMiwweDM5LDB4QzMsMHgzMCwweEU4LDB4RkYsMHhERiwweDc1
LAorICAgIDB4RTMsMHgzMCwweDgxLDB4MjAsMHhEQSwweEJBLDB4RjAsMHhDMCwweEMyLDB4Mjgs
MHg2MSwweDE4LDB4RjgsMHg3QSwweDU2LDB4NTcsCisgICAgMHhDMiwweDI4LDB4NjEsMHgxOCww
eEQ3LDB4QjUsMHgwRCwweEFCLDB4MDMsMHgzMSwweEMyLDB4MjgsMHg3NSwweERELDB4REQsMHgy
OSwKKyAgICAweDQ0LDB4MzksMHhBMiwweDI4LDB4REQsMHhGNywweEJGLDB4MDIsMHgyMywweDM5
LDB4QzIsMHgzMCwweDc1LDB4NkEsMHg1OCwweEU4LAorICAgIDB4RTMsMHgzMCwweDgxLDB4MzAs
MHhBMiwweDc4LDB4RUUsMHhFOCwweEUzLDB4MzgsMHhBMiwweDI4LDB4RUYsMHhGNSwweEVELDB4
QTIsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEVELDB4QkQsMHhBQiwweDhELDB4MDMsMHgz
OSwweEMyLDB4MzAsMHhCNywweEVCLDB4MDIsMHhBQiwKKyAgICAweDIzLDB4MzksMHhDMiwweDMw
LDB4RkIsMHhGQiwweDY4LDB4N0EsMHgwNCwweDM5LDB4QTIsMHgyOCwweEU4LDB4QTAsMHhGQSww
eEVELAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHg1RSwweEZDLDB4RkUsMHhCMywweEMyLDB4
MzAsMHg4MSwweDI4LDB4MkYsMHhGRiwweDdBLDB4MjAsCisgICAgMHhDMiwweDI4LDB4ODIsMHgy
OCwweDAwLDB4ODAsMHhBRCwweEZBLDB4QTIsMHgyOCwweDgxLDB4MjAsMHgwOCwweDI4LDB4M0Us
MHhGNSwKKyAgICAweEUyLDB4MzAsMHhBMiwweDI4LDB4NUYsMHhFNSwweEJELDB4QUQsMHhFMyww
eDMwLDB4QTIsMHgyOCwweDgzLDB4RkIsMHg4RSwweDgzLAorICAgIDB4RTMsMHgzMCwweEEyLDB4
MjgsMHhBRSwweEFGLDB4OEYsMHgwRSwweDAyLDB4MzksMHhBMiwweDI4LDB4QjgsMHhFRSwweEZG
LDB4RkQsCisgICAgMHgwMywweDMxLDB4QTEsMHgyOCwweDJGLDB4QUYsMHhCRCwweDJGLDB4MjQs
MHgzMSwweEMyLDB4MzAsMHhGNiwweEZGLDB4QUIsMHgyRiwKKyAgICAweDAzLDB4MzEsMHhBMiww
eDMwLDB4QUIsMHhBQSwweDI4LDB4QTAsMHhFMywweDMwLDB4QzIsMHgyOCwweEM4LDB4ODgsMHg4
QSwweDgzLAorICAgIDB4MDQsMHgzMSwweEMyLDB4MzAsMHhCQiwweDVELDB4NUYsMHhGRiwweDI0
LDB4MzksMHhDMywweDI4LDB4MjcsMHhCNywweEJGLDB4RUIsCisgICAgMHgyMywweDM5LDB4RTMs
MHgzMCwweDI3LDB4QjUsMHgzNywweEJGLDB4ODUsMHg0OSwweDIzLDB4NDEsMHhCRiwweEE3LDB4
MkIsMHhGNSwKKyAgICAweDA2LDB4NUEsMHg2NCwweDQ5LDB4MEQsMHhBNSwweEY3LDB4RjUsMHg4
QywweDhCLDB4MDYsMHg1QSwweDk1LDB4MzUsMHgzNSwweDI1LAorICAgIDB4RUQsMHg5QiwweEFE
LDB4OTMsMHg3MywweEZCLDB4RDcsMHg2MiwweEFDLDB4OTMsMHg2QiwweDhCLDB4MkIsMHg1OCww
eEYwLDB4NjgsCisgICAgMHhFRCwweDlCLDB4NkIsMHg4QiwweEEyLDB4OEIsMHhBNSwweEQ1LDB4
MEUsMHg5QywweEFDLDB4OTMsMHgwMiwweDJELDB4QTcsMHhBNywKKyAgICAweDhGLDB4QUMsMHhF
RCwweDlCLDB4MkIsMHhCRiwweDU1LDB4NTUsMHg5MCwweEFDLDB4RUQsMHg5QiwweDI4LDB4QUEs
MHhERiwweDc3LAorICAgIDB4OTAsMHhBQywweEVELDB4OUIsMHhBMCwweEJCLDB4N0YsMHg1RCww
eDZFLDB4QUMsMHhDQywweDkzLDB4QTAsMHhGQSwweDVGLDB4NTcsCisgICAgMHgyRSwweEE0LDB4
Q0MsMHg5MywweDg4LDB4RkYsMHhGNSwweEQ1LDB4MkUsMHhBNCwweEVELDB4OUIsMHhFQywweDJE
LDB4MkYsMHhGRCwKKyAgICAweDYzLDB4NTEsMHgyMywweDQ5LDB4RUQsMHhGRiwweEQ3LDB4RDUs
MHg0MywweDUxLDB4MjMsMHg0OSwweDAwLDB4QUEsMHhGOCwweDc3LAorICAgIDB4MjIsMHg0OSww
eDAyLDB4NDEsMHg3OCwweERDLDB4RjIsMHhBQSwweDIzLDB4NDksMHhFMiwweDQwLDB4QkYsMHg3
RiwweDdFLDB4QjYsCisgICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweEFBLDB4RkYsMHhERiwweERG
LDB4MjMsMHg0OSwweEUzLDB4NDAsMHhBRiwweDNGLDB4Q0IsMHhFQiwKKyAgICAweDQ5LDB4OTMs
MHgyMywweDQ5LDB4MTUsMHgzNSwweDM1LDB4MjUsMHg4QSwweDlCLDB4NjksMHg5MywweDYyLDB4
NTgsMHg3QywweDVFLAorICAgIDB4OEEsMHg5QiwweDI4LDB4OTMsMHhGRiwweDlGLDB4M0YsMHgy
RiwweDhBLDB4OUIsMHgyOSwweDkzLDB4RjcsMHhGQywweEEwLDB4QUEsCisgICAgMHhBQiwweDlC
LDB4NjcsMHg3QSwweDAyLDB4QTIsMHhFQSwweDU4LDB4NDksMHg4QiwweDQ2LDB4NzIsMHg3OCww
eDc2LDB4RDcsMHg3NSwKKyAgICAweDg3LDB4NzIsMHg0NiwweDcyLDB4QjcsMHhFQiwweEVBLDB4
MkYsMHhBNywweDdBLDB4QTUsMHg1OSwweDhBLDB4QTgsMHhFMiwweDc4LAorICAgIDB4MDUsMHg2
MiwweDAyLDB4NDEsMHhGOCwweERFLDB4NzcsMHhENywweDg0LDB4NTEsMHgyMywweDQxLDB4RjUs
MHhCRCwweDI5LDB4MEYsCisgICAgMHhBNCwweDUxLDB4NjQsMHg0OSwweDdCLDB4NUEsMHhEQSww
eEQ3LDB4ODQsMHg0OSwweDQ0LDB4NDksMHhCNywweEVELDB4QjQsMHhCOCwKKyAgICAweDY0LDB4
NDksMHgyNCwweDQxLDB4RkUsMHhERSwweDdBLDB4NTgsMHgyMywweDQxLDB4RTMsMHgzOCwweEJB
LDB4RjAsMHhGMCwweEEwLAorICAgIDB4QTUsMHg1MSwweEEyLDB4MzgsMHgwMywweDJCLDB4QkYs
MHhENywweDg0LDB4NTEsMHgyMywweDQxLDB4NzgsMHhGOCwweEY4LDB4NzksCisgICAgMHgwMyww
eDQxLDB4QzIsMHgzOCwweEJDLDB4RDYsMHhGNywweEI4LDB4RTMsMHgzMCwweEEyLDB4MzAsMHgw
MiwweDBFLDB4RTgsMHg3MCwKKyAgICAweEUzLDB4MzAsMHg2MSwweDE4LDB4QTIsMHhGQSwweDdG
LDB4NUYsMHg4MSwweDIwLDB4NDEsMHgxOCwweEI4LDB4QkMsMHgzRiwweDNELAorICAgIDB4RTMs
MHgzMCwweDgxLDB4MjAsMHgyRCwweDI5LDB4MkIsMHhGRiwweDI0LDB4MzksMHg2MSwweDIwLDB4
MDIsMHg4MCwweEZCLDB4RkYsCisgICAgMHg0NCwweDQxLDB4QTIsMHgyOCwweDgwLDB4RkUsMHg1
NSwweDU1LDB4NDMsMHg0MSwweEEyLDB4MjgsMHhBQSwweEFCLDB4RUYsMHhCNSwKKyAgICAweDAz
LDB4MzksMHhDMiwweDMwLDB4REUsMHhBOCwweEY4LDB4RUEsMHgwMywweDM5LDB4QzIsMHgzMCww
eEZBLDB4RUYsMHhENSwweDc3LAorICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHhBQiwweDhGLDB4
RkYsMHhCNSwweEUzLDB4MzgsMHhDMiwweDI4LDB4RTIsMHhFQywweEZFLDB4RTIsCisgICAgMHhF
MywweDMwLDB4ODEsMHgyOCwweEEyLDB4NjIsMHg1RSwweDdFLDB4RTMsMHgzMCwweDgxLDB4MjAs
MHgyQiwweEJGLDB4QjUsMHhBNSwKKyAgICAweEUzLDB4MzAsMHhDMywweDI4LDB4QTIsMHg4Miww
eDBGLDB4MEQsMHgwMywweDMxLDB4QTIsMHgzMCwweDdBLDB4QjIsMHhFQSwweDZBLAorICAgIDB4
RTMsMHgzMCwweEEyLDB4MjgsMHg2RCwweEZFLDB4QkEsMHhBRiwweDAzLDB4MzksMHg4MSwweDIw
LDB4NTUsMHhFRSwweEE4LDB4ODAsCisgICAgMHgwMywweDM5LDB4QTEsMHgyOCwweEFELDB4MkYs
MHhBMiwweDgyLDB4RTMsMHgzMCwweEMyLDB4MjgsMHgxQywweDJFLDB4OUYsMHhERiwKKyAgICAw
eEUzLDB4MzAsMHhBMiwweDI4LDB4MkEsMHhFRSwweEJFLDB4RTcsMHhFMywweDMwLDB4QTIsMHgy
OCwweEFGLDB4QUYsMHhGNSwweERELAorICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHhCRSwweDhF
LDB4MDksMHhFRCwweDAzLDB4MzEsMHhDMiwweDI4LDB4MDgsMHg3OCwweDcyLDB4RTAsCisgICAg
MHgwMywweDM5LDB4QzIsMHgyOCwweDZDLDB4NUYsMHg1NywweEVGLDB4RTMsMHgzMCwweEEyLDB4
MjgsMHgyMSwweDNGLDB4QjgsMHhBOCwKKyAgICAweDIzLDB4MzEsMHhDMiwweDMwLDB4REQsMHg1
RCwweEZGLDB4RjYsMHgyMywweDM5LDB4RTIsMHgzMCwweEZGLDB4RkQsMHg3RCwweDhELAorICAg
IDB4MDMsMHgzOSwweEExLDB4MjgsMHgyMiwweDNFLDB4QjgsMHg5RSwweDg0LDB4NTEsMHgwMyww
eDM5LDB4QkYsMHhGRCwweEJGLDB4MDksCisgICAgMHhFNSwweDU5LDB4NDQsMHg0MSwweEI1LDB4
QjcsMHgyRiwweDJCLDB4QUMsMHg5MywweDI1LDB4NjIsMHgyNSwweDJELDB4MEQsMHgyOSwKKyAg
ICAweEVFLDB4OUIsMHhBQywweDkzLDB4ODIsMHg4MCwweDgwLDB4RjcsMHhDRCwweDkzLDB4NkIs
MHg4QiwweDdDLDB4NTAsMHg3OCwweDVFLAorICAgIDB4NkIsMHg4QiwweDBBLDB4N0IsMHgyMCww
eEI4LDB4RTgsMHg2MiwweEVELDB4OUIsMHg0QiwweDgzLDB4MEEsMHgyQiwweDI5LDB4QUQsCisg
ICAgMHgwRCwweDlDLDB4QUMsMHg5MywweEEwLDB4OEIsMHhBQSwweDdGLDB4RUQsMHg5QiwweENE
LDB4OTMsMHg4OCwweDAyLDB4QTgsMHhGRCwKKyAgICAweEVELDB4OUIsMHhBQywweDkzLDB4Rjgs
MHhBQiwweDdCLDB4NUYsMHhDRCwweDkzLDB4OEMsMHg4QiwweDI4LDB4ODAsMHgwOCwweDJGLAor
ICAgIDB4Q0QsMHg5MywweDhDLDB4OEIsMHgyOCwweEJBLDB4RUYsMHhFQiwweDBFLDB4OUMsMHhB
QywweDkzLDB4MEIsMHhCRiwweEI1LDB4RjUsCisgICAgMHg0MywweDQ5LDB4MDIsMHg0OSwweEFB
LDB4RkUsMHg1NywweEQ3LDB4MjMsMHg0OSwweDAyLDB4NDEsMHg4MSwweDdBLDB4RkIsMHhFOSwK
KyAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4RTMsMHhDQiwweDk4LDB4NTYsMHgwMiwweDQxLDB4
RTIsMHgzOCwweDA4LDB4Q0MsMHg3MiwweDcyLAorICAgIDB4MDIsMHg0MSwweEMyLDB4MzgsMHgy
QSwweDBBLDB4MjMsMHgzQiwweDIzLDB4NDksMHhFMiwweDQwLDB4RUYsMHhGQiwweEFCLDB4MkIs
CisgICAgMHg2QSwweDkzLDB4MDMsMHg0OSwweDI1LDB4MjUsMHgyNSwweEI1LDB4OEEsMHg5Qiww
eEU4LDB4ODIsMHgyMCwweDIwLDB4QTIsMHg1NSwKKyAgICAweDhBLDB4OUIsMHhFOCwweDgyLDB4
RTIsMHg3QSwweDdFLDB4NTUsMHg2QSwweDkzLDB4ODcsMHg3QSwweDBBLDB4QUYsMHhGRiwweDdG
LAorICAgIDB4MjksMHg5MywweEU1LDB4NjEsMHg3MCwweERDLDB4NUUsMHg1NywweDQ2LDB4NkEs
MHhFNSwweDYxLDB4MDAsMHgyQiwweEFBLDB4RkQsCisgICAgMHhDOCwweDdBLDB4ODQsMHg1OSww
eDJBLDB4QUEsMHhGQSwweDVGLDB4NjcsMHg3MiwweDQzLDB4NDksMHg3MCwweDVFLDB4NzcsMHhE
NSwKKyAgICAweDYzLDB4NDksMHgwMiwweDQxLDB4RkUsMHg2QSwweERDLDB4M0UsMHhBNSwweDUx
LDB4MDIsMHg0MSwweDhCLDB4QUQsMHhBRCwweEI4LAorICAgIDB4ODQsMHg1MSwweDY0LDB4NDks
MHhBNywweDA5LDB4NzksMHg2QiwweDg0LDB4NTEsMHgyNCwweDQxLDB4RjAsMHg3QSwweEZFLDB4
RUUsCisgICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweEE4LDB4RUEsMHhFRSwweDVFLDB4NjQsMHg0
MSwweDAzLDB4NDEsMHg3QiwweEZGLDB4N0YsMHg1RCwKKyAgICAweDIzLDB4NDEsMHhDMiwweDM4
LDB4NUEsMHg2QSwweEVBLDB4QTgsMHg0NCwweDQ5LDB4QzIsMHgzOCwweDBELDB4MkQsMHgwQiww
eEFBLAorICAgIDB4NDMsMHg0OSwweEMyLDB4MzAsMHhGRSwweEY4LDB4REUsMHhERSwweDAzLDB4
MzksMHg4MSwweDI4LDB4NjgsMHg3OCwweDc4LDB4RkEsCisgICAgMHhBMiwweDI4LDB4NjEsMHgy
MCwweDU3LDB4NUUsMHhGNiwweEI2LDB4QzIsMHgyOCwweDQxLDB4MTgsMHhCRCwweEFGLDB4OEIs
MHgyQSwKKyAgICAweEEyLDB4MjgsMHg4MSwweDIwLDB4OUQsMHhDRCwweEExLDB4QkEsMHhDMiww
eDI4LDB4ODEsMHgyMCwweEFGLDB4QkYsMHhGRSwweERGLAorICAgIDB4QTIsMHgyOCwweDgxLDB4
MjAsMHhBMiwweEZGLDB4RkIsMHg1QiwweEUzLDB4MzAsMHg4MSwweDI4LDB4MjUsMHhCNSwweEY1
LDB4RDUsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEJBLDB4RkIsMHhGNSwweEI5LDB4RTIs
MHgzMCwweEEyLDB4MjgsMHg3OCwweDdDLDB4RjgsMHhDQSwKKyAgICAweEUzLDB4MzAsMHhBMiww
eDMwLDB4MzUsMHhCNSwweEU3LDB4QUYsMHhFMywweDMwLDB4QTEsMHgyOCwweDg4LDB4QUEsMHhG
QiwweDU5LAorICAgIDB4RTMsMHgzMCwweDgxLDB4MjgsMHhGRSwweEUwLDB4RkIsMHg3RiwweEMy
LDB4MjgsMHg2MSwweDIwLDB4OEIsMHhBQSwweDAyLDB4MEEsCisgICAgMHhFMywweDMwLDB4QTIs
MHgyOCwweEJGLDB4QUIsMHhBRCwweDI3LDB4MDMsMHgzOSwweEEyLDB4MzAsMHhGMiwweEVCLDB4
RUYsMHhBRiwKKyAgICAweDAzLDB4MzksMHhBMiwweDI4LDB4RUYsMHhBRCwweEJGLDB4MjMsMHgw
MywweDM5LDB4QTIsMHgyOCwweEVCLDB4QjIsMHhBOCwweEQ4LAorICAgIDB4MjMsMHgzOSwweEMy
LDB4MzAsMHhCOSwweEVGLDB4MUYsMHhCRiwweDIzLDB4MzksMHhDMiwweDMwLDB4REYsMHg1Nyww
eDc2LDB4RjIsCisgICAgMHgwMywweDMxLDB4QTEsMHgyOCwweEI3LDB4M0YsMHgyRSwweEFGLDB4
MDMsMHgzMSwweEEyLDB4MjgsMHg3RiwweERFLDB4NTgsMHhFQSwKKyAgICAweDA0LDB4MzEsMHhB
MiwweDI4LDB4QUEsMHhCNywweEQ3LDB4NTcsMHgwNCwweDMxLDB4QzIsMHgzMCwweEZBLDB4N0Es
MHhGNiwweERELAorICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHg4QSwweEU2LDB4RkIsMHhBQiww
eDAzLDB4MzEsMHhDMiwweDI4LDB4REYsMHhERCwweEZGLDB4MkIsCisgICAgMHgwMywweDMxLDB4
RTIsMHgzMCwweDg1LDB4OEIsMHhFMiwweDU4LDB4MjMsMHgzOSwweEUyLDB4MzAsMHg4NywweDJG
LDB4RjUsMHhENSwKKyAgICAweDIzLDB4MzksMHhFMiwweDMwLDB4NUUsMHhGQiwweEZGLDB4M0Is
MHhBNSwweDUxLDB4MDIsMHgzOSwweEFELDB4QUQsMHhBRiwweDBGLAorICAgIDB4ODgsMHg3Miww
eDYzLDB4NDksMHg5NSwweEY1LDB4QjUsMHgyRiwweDhDLDB4OTMsMHhBOSwweDdBLDB4MDksMHgw
MSwweEY5LDB4N0UsCisgICAgMHg4QywweDhCLDB4NjgsMHg2QSwweDAwLDB4ODAsMHhERiwweDU3
LDB4OEMsMHg4QiwweDA2LDB4NjIsMHg4MCwweEE4LDB4NUYsMHhGNywKKyAgICAweDJBLDB4N0Is
MHgwNiwweDVBLDB4MDAsMHhGQSwweDU1LDB4RkYsMHg4QiwweDhCLDB4MjcsMHg2MiwweDBBLDB4
QUYsMHhENSwweEZGLAorICAgIDB4OEMsMHg5MywweDI3LDB4NjIsMHhBMCwweDdFLDB4NUYsMHg3
RiwweENELDB4OTMsMHg0NywweDYyLDB4MkIsMHhENSwweDU1LDB4NTUsCisgICAgMHhBRCwweDkz
LDB4NDcsMHg2MiwweDAwLDB4MDIsMHhBRCwweDk1LDB4QUMsMHg5MywweDRCLDB4ODMsMHgwMiww
eEFCLDB4MjMsMHhCRCwKKyAgICAweEFDLDB4OTMsMHg2QywweDhCLDB4MDAsMHgwMCwweDhCLDB4
RTksMHhDRCwweDkzLDB4NkIsMHg4QiwweDJFLDB4QUIsMHhCNywweEZGLAorICAgIDB4MDMsMHg0
OSwweDIyLDB4NDEsMHg4MCwweEFBLDB4QUEsMHg4MiwweDIzLDB4NDksMHhFMiwweDQwLDB4QjAs
MHhBQiwweENFLDB4QkYsCisgICAgMHgyMywweDQxLDB4RTIsMHg0MCwweDk1LDB4RkEsMHgxMiww
eEUyLDB4MjMsMHg0MSwweEUyLDB4NDAsMHhEQiwweEJCLDB4QUEsMHhBMiwKKyAgICAweDIzLDB4
NDksMHhFMiwweDQwLDB4RDcsMHhCRiwweEVBLDB4QkEsMHg0MywweDQ5LDB4MDIsMHg0MSwweEVG
LDB4RkUsMHg3RiwweDVCLAorICAgIDB4NjMsMHg1MSwweEUyLDB4NDAsMHgyRiwweEZELDB4NTcs
MHg1RiwweDY2LDB4NzIsMHgyMiwweDQ5LDB4MEIsMHgyNSwweEI1LDB4QjUsCisgICAgMHhBNyww
eDdBLDB4RTQsMHg2MSwweDAwLDB4QUUsMHhGRCwweDVELDB4QzcsMHg4MiwweDY0LDB4NTEsMHhB
MCwweEUyLDB4N0IsMHg3RiwKKyAgICAweEM1LDB4NjEsMHhDMiwweDQwLDB4MDAsMHhBQSwweDdF
LDB4NUYsMHhDNCwweDYxLDB4MDMsMHg0OSwweDAwLDB4ODIsMHgwOSwweDJELAorICAgIDB4QTQs
MHg1OSwweDQzLDB4NDksMHg1OCwweDdDLDB4RTgsMHg4MCwweDg0LDB4NTEsMHgyMywweDQ5LDB4
QUQsMHhCRCwweDBCLDB4ODIsCisgICAgMHhBNSwweDUxLDB4NDMsMHg0OSwweDk1LDB4M0YsMHg4
RCwweENBLDB4QTUsMHg1MSwweDQ0LDB4NDksMHhBMCwweEFFLDB4QkUsMHg3NywKKyAgICAweDg0
LDB4NDksMHgyMywweDQxLDB4RTgsMHhBQSwweEZBLDB4REUsMHg2NCwweDUxLDB4NDQsMHg0OSww
eEVCLDB4NTUsMHg3OSwweDhELAorICAgIDB4RTYsMHg2MSwweDIzLDB4NDksMHg1NSwweDk1LDB4
MkQsMHgwMiwweDA2LDB4NkEsMHgyMywweDQxLDB4NzUsMHgyQSwweEEwLDB4QUEsCisgICAgMHhB
NSwweDU5LDB4MjMsMHg0MSwweDU1LDB4NTgsMHhFMCwweDYwLDB4NjQsMHg0OSwweEUyLDB4Mzgs
MHhGRSwweDc4LDB4RkEsMHg3RiwKKyAgICAweDIzLDB4NDEsMHhDMiwweDMwLDB4REUsMHhGOCww
eEUyLDB4RkEsMHgwMywweDM5LDB4QTIsMHgyOCwweDc4LDB4NjAsMHg0MiwweDRCLAorICAgIDB4
MDMsMHgzMSwweDYxLDB4MjAsMHhGNywweEFGLDB4MEQsMHgyRCwweEUzLDB4MzAsMHg4MSwweDIw
LDB4RjcsMHhBMCwweEUwLDB4RTgsCisgICAgMHhDMiwweDI4LDB4ODIsMHgyMCwweEY4LDB4RTAs
MHhFOCwweEJBLDB4QzIsMHgyOCwweDgxLDB4MjAsMHhERCwweERELDB4OUYsMHgzRiwKKyAgICAw
eDI0LDB4MzksMHg4MSwweDI4LDB4NzUsMHg1RCwweEVELDB4ODAsMHhDMiwweDMwLDB4NjEsMHgy
OCwweEJGLDB4QkQsMHhCRiwweEUwLAorICAgIDB4MjQsMHg0MSwweEEyLDB4MzAsMHhFOSwweDg5
LDB4MEIsMHgwOSwweDQzLDB4NDEsMHhBMSwweDMwLDB4N0YsMHhGQSwweEZBLDB4RTgsCisgICAg
MHhFMiwweDM4LDB4QTIsMHgzMCwweEY3LDB4NTcsMHg1NywweDVBLDB4MDMsMHgzMSwweEExLDB4
MjgsMHg3NSwweEY1LDB4QUQsMHgwRiwKKyAgICAweDI0LDB4MzksMHg4MSwweDI4LDB4RDUsMHg3
RiwweEFBLDB4MDAsMHgwMywweDM5LDB4ODEsMHgyOCwweEZELDB4NUQsMHhGRiwweEE4LAorICAg
IDB4MDQsMHgzMSwweDgyLDB4MjgsMHgyRiwweDM1LDB4M0YsMHhBQiwweDAzLDB4MzEsMHhDMiww
eDMwLDB4RkEsMHg5MiwweEIwLDB4NjIsCisgICAgMHhFMywweDMwLDB4QTIsMHgzMCwweDAwLDB4
MDAsMHhCQiwweERBLDB4MDMsMHgzOSwweEEyLDB4MzAsMHg2QSwweEI4LDB4RkEsMHhGQSwKKyAg
ICAweDAzLDB4MzEsMHhBMiwweDMwLDB4QkYsMHgzRCwweEJGLDB4QkIsMHgyNCwweDM5LDB4RTMs
MHgzMCwweERFLDB4RkEsMHhGRSwweEZBLAorICAgIDB4MDIsMHgzMSwweEExLDB4MjgsMHhFRSww
eEZBLDB4RjIsMHhGOCwweEUyLDB4MzAsMHhDMiwweDI4LDB4RjgsMHhEQywweEQ1LDB4N0QsCisg
ICAgMHhDMiwweDI4LDB4QTIsMHgyOCwweDM4LDB4MDAsMHgwMiwweEU5LDB4RTMsMHgzMCwweEEx
LDB4MjgsMHhBMiwweDAzLDB4MkUsMHhFNywKKyAgICAweDAzLDB4MzEsMHhFMywweDMwLDB4NTUs
MHhERiwweDk3LDB4OTUsMHgwMywweDMxLDB4QzIsMHgyOCwweDJCLDB4QUYsMHhBRSwweEZFLAor
ICAgIDB4MDMsMHgzMSwweEUyLDB4MzAsMHg2QSwweDRBLDB4QjcsMHg3NSwweDAzLDB4MzksMHhD
MiwweDMwLDB4QUUsMHgzRiwweDFFLDB4MUMsCisgICAgMHg2NCwweDQ5LDB4MDMsMHgzOSwweEU3
LDB4QUYsMHgyNywweDI1LDB4QTUsMHg1MSwweDAzLDB4NDEsMHgwOSwweEFGLDB4QkUsMHgyMiwK
KyAgICAweDRFLDB4QTQsMHhDNSwweDU5LDB4QjUsMHhCNSwweDI1LDB4MkQsMHhBRiwweEI0LDB4
Q0MsMHg5QiwweEZELDB4QUIsMHhBMiwweDgwLAorICAgIDB4QUYsMHhCNCwweDhCLDB4OTMsMHg1
NywweEVBLDB4ODgsMHgwMiwweDhGLDB4QjQsMHgyQSwweDgzLDB4NTUsMHhFQSwweDAwLDB4MDAs
CisgICAgMHgyRSwweEFDLDB4RTksMHg3QSwweDU1LDB4N0YsMHg3RSwweDc4LDB4MEEsMHg3Qiww
eEE4LDB4NzIsMHhEQSwweEY4LDB4RTgsMHg3OCwKKyAgICAweEU5LDB4N0EsMHg2NywweDYyLDB4
RkEsMHhBMCwweEJCLDB4RDcsMHhFOSwweDcyLDB4NjcsMHg2QSwweEY3LDB4RjYsMHhGRSwweEIy
LAorICAgIDB4QzksMHg3MiwweDQ2LDB4NjIsMHg1RCwweDdGLDB4RkUsMHhFOCwweDZCLDB4ODMs
MHgyNywweDYyLDB4MDMsMHgyRiwweEQ1LDB4NTcsCisgICAgMHg2QiwweDhCLDB4NDcsMHg2Miww
eDAwLDB4MDAsMHgwMCwweDA5LDB4OEMsMHg4QiwweDRCLDB4ODMsMHgwRCwweDhCLDB4RUMsMHhF
OCwKKyAgICAweDAzLDB4NDksMHhFMiwweDQwLDB4MTAsMHg4MiwweDUyLDB4N0YsMHgwMywweDQx
LDB4RTIsMHg0MCwweDI2LDB4MjYsMHg4NiwweDNDLAorICAgIDB4MjMsMHg0OSwweEUyLDB4NDAs
MHg3RiwweEFFLDB4QUEsMHhBRSwweDIzLDB4NDksMHgwMiwweDQxLDB4RDUsMHgzRiwweDdDLDB4
RTcsCisgICAgMHg0MywweDQ5LDB4MDIsMHg0MSwweEQ3LDB4RDQsMHg3QSwweEU4LDB4MjMsMHg0
OSwweDAzLDB4NDEsMHgyOSwweDAyLDB4NzcsMHg1RiwKKyAgICAweDIzLDB4NDksMHhDMiwweDM4
LDB4RjgsMHhFMiwweENBLDB4OEYsMHg4NCwweDU5LDB4QzIsMHg0MCwweDJGLDB4M0QsMHhGRiww
eEZGLAorICAgIDB4MjYsMHg2QSwweDQzLDB4NDksMHg4QSwweEEyLDB4RkQsMHg1NSwweEM1LDB4
NTksMHhDMiwweDQwLDB4QTgsMHhGRSwweDdGLDB4NUYsCisgICAgMHgwMywweDQxLDB4QzIsMHg0
MCwweDhBLDB4Q0UsMHhCRiwweEVGLDB4MDUsMHg2MiwweDAzLDB4NDksMHhBRCwweDJELDB4OEQs
MHgyRCwKKyAgICAweEU1LDB4NjEsMHg4NCwweDU5LDB4N0UsMHg3QSwweDZBLDB4RUMsMHhFNiww
eDU5LDB4NjQsMHg1MSwweEY1LDB4REQsMHhGRiwweEVCLAorICAgIDB4QTUsMHg1MSwweDY0LDB4
NDksMHhFMiwweDYwLDB4NzgsMHg1QSwweDg1LDB4NTEsMHgyMiwweDM5LDB4RUEsMHhBQSwweEFB
LDB4QTAsCisgICAgMHg2NCwweDQ5LDB4MjMsMHg0MSwweEZBLDB4RTgsMHhBOCwweDIyLDB4NjYs
MHg3MiwweDQzLDB4NDksMHhBRCwweDJCLDB4OEEsMHhBMiwKKyAgICAweDQ2LDB4NkEsMHgyMiww
eDQ5LDB4QTAsMHhFQywweEZBLDB4N0EsMHhBNCwweDU5LDB4RTIsMHgzOCwweEE4LDB4RjgsMHhE
RSwweDU1LAorICAgIDB4QTQsMHg1MSwweDAzLDB4NDEsMHg3MCwweDdBLDB4RkEsMHg2RiwweDIz
LDB4NDEsMHhDMiwweDMwLDB4RUUsMHg5NiwweEZGLDB4MkEsCisgICAgMHgwMywweDM5LDB4QTIs
MHgzMCwweDZBLDB4RkUsMHhGOCwweEZFLDB4QzIsMHgzMCwweDgyLDB4MjgsMHhCQiwweEQ3LDB4
RUMsMHhFQSwKKyAgICAweEUzLDB4MzAsMHg4MiwweDIwLDB4MjUsMHhBNywweEFELDB4QUQsMHhD
MywweDMwLDB4QTIsMHgyOCwweDdDLDB4QTgsMHg4QiwweEZCLAorICAgIDB4NDQsMHg0MSwweEEy
LDB4MjgsMHhENSwweEI1LDB4MjUsMHgwRCwweDY0LDB4NDksMHhDMywweDMwLDB4QUQsMHhBQSww
eDI4LDB4ODIsCisgICAgMHg0NSwweDQxLDB4RTMsMHgzOCwweEI4LDB4NTQsMHg1NiwweDVFLDB4
MjMsMHg0MSwweEMyLDB4MzgsMHhERSwweEE4LDB4QTIsMHhGQSwKKyAgICAweDIzLDB4NDEsMHhF
MiwweDM4LDB4M0QsMHg5NywweEJCLDB4N0YsMHg2NCwweDQ5LDB4MDMsMHg0MSwweEZBLDB4ODIs
MHgwQiwweDk1LAorICAgIDB4NDQsMHg0OSwweEExLDB4MjgsMHg3RSwweDU4LDB4NzAsMHhFOCww
eEUzLDB4MzAsMHg4MSwweDI4LDB4MEIsMHhCQSwweEQ3LDB4QUUsCisgICAgMHg0NCwweDM5LDB4
QTIsMHgzMCwweDJBLDB4QkYsMHhBRCwweEY3LDB4MjQsMHgzOSwweEMyLDB4MjgsMHhFOCwweEJF
LDB4RkYsMHg3QiwKKyAgICAweEUzLDB4MzAsMHg4MSwweDI4LDB4MDgsMHgwOCwweEJFLDB4RkQs
MHhFMywweDMwLDB4QTIsMHgyOCwweDQwLDB4RjgsMHhFQSwweEZGLAorICAgIDB4QzIsMHgzMCww
eEEyLDB4MjgsMHg5MiwweEY2LDB4QUYsMHg1OCwweDAzLDB4MzksMHhDMiwweDI4LDB4QUIsMHg4
RSwweEVELDB4NUQsCisgICAgMHhFMiwweDMwLDB4QTIsMHgyOCwweEI4LDB4QkUsMHhGQSwweEFG
LDB4MDMsMHgzMSwweEMyLDB4MjgsMHg4RiwweDJGLDB4OTcsMHhENywKKyAgICAweEUzLDB4MzAs
MHhDMiwweDI4LDB4RUMsMHg2MiwweEFDLDB4RUYsMHhFMiwweDMwLDB4QTEsMHgyOCwweEJFLDB4
M0YsMHhCQSwweEVBLAorICAgIDB4RTIsMHgzMCwweEEyLDB4MjgsMHg2MiwweDhFLDB4QUEsMHg4
QiwweDAzLDB4MzEsMHhBMSwweDI4LDB4RkQsMHhBRiwweDhCLDB4MkIsCisgICAgMHgwMywweDMx
LDB4QzIsMHgzMCwweDhFLDB4MkUsMHgzNywweDU3LDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGQSww
eDgwLDB4MEEsMHhBRiwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4RDcsMHhCRSwweEI4LDB4
QUEsMHgwMywweDM5LDB4QzIsMHgzMCwweEJGLDB4REIsMHg3MiwweDYyLAorICAgIDB4NjQsMHg0
OSwweEEyLDB4MzAsMHgyRiwweDJGLDB4M0YsMHhCRiwweEU5LDB4N0EsMHgyMywweDQxLDB4RkYs
MHhGRiwweEJELDB4MzUsCisgICAgMHgxMSwweEM1LDB4QTksMHg3MiwweDI1LDB4MkQsMHgwMyww
eDAyLDB4MzAsMHhDRCwweDhFLDB4QjQsMHg3RiwweEZGLDB4N0UsMHhFOCwKKyAgICAweEFGLDB4
QkMsMHg2RSwweEFDLDB4MkIsMHgyOCwweEVGLDB4OTQsMHhEMCwweEJDLDB4NkUsMHhCNCwweEFB
LDB4ODgsMHhFQiwweDc3LAorICAgIDB4OEYsMHhCNCwweDJCLDB4ODMsMHg3OCwweEUwLDB4QTAs
MHg4OCwweDJELDB4QTQsMHhBOSwweDcyLDB4NzcsMHg3RiwweEZFLDB4NjAsCisgICAgMHhDOSww
eDcyLDB4NDYsMHg2MiwweERGLDB4N0MsMHg2QSwweEE4LDB4RTksMHg3MiwweDY3LDB4NkEsMHhB
RiwweEE5LDB4QUQsMHgyRiwKKyAgICAweDBBLDB4N0IsMHhBOCwweDZBLDB4N0YsMHhFMiwweDhB
LDB4MEEsMHhFOSwweDdBLDB4MDYsMHg1QSwweDdBLDB4RkEsMHhDOCwweEE4LAorICAgIDB4RUEs
MHg3QSwweEU2LDB4NTksMHgzNSwweEQ1LDB4NUYsMHg3RSwweDZCLDB4ODMsMHhBNSwweDQ5LDB4
MDAsMHgwMywweEJELDB4NTUsCisgICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweEZCLDB4RTgsMHhB
QSwweDc5LDB4MjMsMHg0OSwweEUyLDB4NDAsMHhDQiwweDVCLDB4NTYsMHhCNywKKyAgICAweDIz
LDB4NDksMHhFMiwweDQwLDB4OEEsMHhBQSwweDdCLDB4REMsMHgyMywweDQ5LDB4RTIsMHg0MCww
eEFGLDB4MDAsMHhBQSwweEVCLAorICAgIDB4MjMsMHg0MSwweEUyLDB4NDAsMHg4MCwweDAwLDB4
QTIsMHg2OCwweDIzLDB4NDksMHhDMiwweDM4LDB4RTAsMHhGRSwweEJGLDB4QUUsCisgICAgMHgw
MywweDQxLDB4RTIsMHg0MCwweDA5LDB4NDMsMHg1RSwweEJELDB4MjMsMHg0OSwweEUyLDB4NDAs
MHhBQSwweEJCLDB4RkYsMHhFNSwKKyAgICAweDAyLDB4NDEsMHhFMiwweDQwLDB4MjMsMHhBRiww
eDA5LDB4OUQsMHgyMywweDQ5LDB4QzIsMHgzOCwweDdBLDB4REMsMHhFRSwweEZGLAorICAgIDB4
MDMsMHg0OSwweEUyLDB4NDAsMHgwNSwweEJGLDB4OTcsMHg3RCwweDI2LDB4NkEsMHgwMywweDQ5
LDB4MkQsMHgyOSwweDBELDB4MEQsCisgICAgMHgwNiwweDYyLDB4QTQsMHg1OSwweDdDLDB4RDgs
MHhFOCwweEFBLDB4RTUsMHg2MSwweDg0LDB4NTEsMHg1RCwweEY4LDB4NkEsMHg3QywKKyAgICAw
eDg0LDB4NTEsMHgwMywweDQxLDB4QTAsMHhCQSwweERFLDB4RkUsMHg2NCwweDQ5LDB4MjMsMHg0
MSwweDgwLDB4ODAsMHg5QSwweEQ1LAorICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHhBQSwweEUy
LDB4NkEsMHhDNywweDI2LDB4NkEsMHgwMywweDQ5LDB4MDMsMHgwQiwweEFELDB4QTUsCisgICAg
MHhFNSwweDYxLDB4NjEsMHgyOCwweEUwLDB4NzgsMHg3RSwweDdBLDB4QzIsMHgzOCwweDYxLDB4
MjgsMHg4QSwweEE1LDB4RDUsMHhBQywKKyAgICAweDIzLDB4NDEsMHhDMiwweDMwLDB4QzMsMHhG
OSwweDdELDB4RDUsMHgyMywweDM5LDB4QzIsMHgzMCwweDIyLDB4QTIsMHhGMiwweDUyLAorICAg
IDB4MDMsMHgzOSwweDgyLDB4MjAsMHhBMCwweDhBLDB4RUEsMHg3RiwweEMyLDB4MjgsMHg2MSww
eDIwLDB4QTIsMHhBOCwweEJGLDB4RjUsCisgICAgMHhDMiwweDI4LDB4ODIsMHgyMCwweDJBLDB4
MEYsMHgwRCwweDJGLDB4RTIsMHgyOCwweDgxLDB4MjgsMHhFRSwweDlBLDB4QkMsMHhGQSwKKyAg
ICAweDQ0LDB4NDEsMHhDMiwweDMwLDB4MjUsMHgyNSwweDJELDB4QUQsMHg0NCwweDQ5LDB4ODEs
MHgyOCwweDAwLDB4QTAsMHg1QSwweDVFLAorICAgIDB4NDQsMHg0OSwweDYxLDB4MjAsMHhBOCww
eEFBLDB4RjcsMHhGRCwweDAzLDB4NDEsMHg4MSwweDI4LDB4QTgsMHhBQSwweEFBLDB4N0QsCisg
ICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEYwLDB4QzAsMHgwMiwweDg5LDB4MjMsMHg0MSwweEMy
LDB4MzgsMHgzNywweEJGLDB4M0YsMHhFQiwKKyAgICAweDIzLDB4NDEsMHhFMiwweDM4LDB4RTAs
MHhGRiwweEJFLDB4RkUsMHgwMywweDQxLDB4QTIsMHgyOCwweDVGLDB4N0UsMHhGOCwweEY4LAor
ICAgIDB4RTMsMHgzMCwweDYxLDB4MjgsMHhBQSwweEJDLDB4N0IsMHhFQSwweEUzLDB4MzAsMHg4
MSwweDI4LDB4RTgsMHhGNywweEQ1LDB4RjUsCisgICAgMHhDMiwweDI4LDB4ODIsMHgyOCwweERB
LDB4ODIsMHgwMywweEI1LDB4RTMsMHgzMCwweEEyLDB4MjgsMHg3NSwweEVBLDB4ODIsMHgzRiwK
KyAgICAweDAzLDB4MzEsMHg4MiwweDI4LDB4N0YsMHg3RSwweEU4LDB4QTIsMHhDMiwweDI4LDB4
ODEsMHgyOCwweEUzLDB4QUQsMHhGRiwweEEwLAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHg5
RCwweDc3LDB4QUYsMHhBRiwweDAzLDB4MzEsMHhDMiwweDMwLDB4NjcsMHhFRiwweENBLDB4RkIs
CisgICAgMHgwMywweDMxLDB4QzIsMHgyOCwweEQ1LDB4RDUsMHg4RiwweDBFLDB4MDIsMHgzMSww
eEMyLDB4MjgsMHhBNSwweDk1LDB4RkYsMHhEQiwKKyAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4
RUUsMHhCOCwweDZFLDB4RUUsMHgyNCwweDM5LDB4QzIsMHgzMCwweDNCLDB4MkIsMHgyQiwweEVE
LAorICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHg1NiwweERFLDB4REUsMHgzRiwweDIzLDB4Mzks
MHhFMiwweDMwLDB4NTUsMHg1RCwweEQ1LDB4QkMsCisgICAgMHgyNCwweDM5LDB4QzIsMHgzMCww
eEZELDB4QjcsMHhGRiwweEZDLDB4MDMsMHg0MSwweEUzLDB4MzAsMHg3NywweEVBLDB4QUEsMHgy
RiwKKyAgICAweDY0LDB4NDksMHhDMiwweDM4LDB4RkQsMHhBNSwweEFCLDB4MkYsMHgwQywweEE0
LDB4ODUsMHg1MSwweEI1LDB4MzUsMHgzRCwweDJELAorICAgIDB4MzEsMHhDRCwweEFGLDB4QjQs
MHgwMywweDg5LDB4MjksMHhBOSwweDMxLDB4QzUsMHhEMCwweEJDLDB4ODAsMHgwMCwweEFBLDB4
RjksCisgICAgMHgxMCwweEM1LDB4OEUsMHhCNCwweDdFLDB4RTAsMHgwMCwweDA4LDB4MTAsMHhD
NSwweDRELDB4QUMsMHhENywweDVFLDB4RjgsMHg4MCwKKyAgICAweEQwLDB4QkMsMHg0RSwweEFD
LDB4NTcsMHhGNSwweEY1LDB4RkMsMHg2RSwweEFDLDB4NkIsMHg4QiwweDc4LDB4RTgsMHhFMCww
eDgwLAorICAgIDB4Q0MsMHg5QiwweDg4LDB4NkEsMHg1RiwweDdFLDB4RjgsMHg4OCwweDBBLDB4
N0IsMHg4NywweDZBLDB4QkQsMHhCRiwweEJGLDB4QTgsCisgICAgMHgyQSwweDgzLDB4QzgsMHg3
MiwweDI5LDB4MkYsMHgyRSwweDJGLDB4NEIsMHg4MywweEE5LDB4NkEsMHg3QSwweEFBLDB4QTAs
MHg4MiwKKyAgICAweDJBLDB4ODMsMHgyNywweDVBLDB4N0YsMHhGQSwweEU4LDB4QTAsMHg4OCww
eDZBLDB4NjQsMHg0MSwweDVGLDB4N0EsMHhFOCwweEUwLAorICAgIDB4MjMsMHg0OSwweEUyLDB4
NDAsMHhERCwweEZCLDB4QUYsMHhCQiwweDIzLDB4NDksMHhFMiwweDQwLDB4QUYsMHhGRiwweEZB
LDB4QTgsCisgICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweEZGLDB4RUYsMHhDQiwweENCLDB4MjMs
MHg0OSwweDAyLDB4NDEsMHg2RiwweEY1LDB4OTEsMHg4NywKKyAgICAweDAzLDB4NDEsMHhDMiww
eDM4LDB4QTgsMHhBMCwweEUwLDB4QkMsMHgwMywweDQxLDB4RTIsMHg0MCwweDJDLDB4MzMsMHg4
NywweEZGLAorICAgIDB4MDMsMHg0MSwweEUyLDB4MzgsMHgwQSwweDBFLDB4QjUsMHhERSwweDAz
LDB4NDEsMHhFMiwweDQwLDB4NkIsMHhCMywweDIwLDB4QkIsCisgICAgMHgwMywweDQxLDB4QzEs
MHgzOCwweEFFLDB4MDAsMHg4OCwweENGLDB4MjMsMHg0MSwweEUyLDB4NDAsMHhGNSwweEVGLDB4
QkYsMHhGRCwKKyAgICAweDAyLDB4NDEsMHhDMiwweDQwLDB4QTAsMHg4MCwweEI4LDB4RjgsMHg0
NiwweDZBLDB4MDIsMHg0MSwweDhELDB4MkQsMHgwRCwweDJELAorICAgIDB4MjYsMHg2QSwweEM1
LDB4NTksMHhERSwweEQ4LDB4RDgsMHhGQSwweDA1LDB4NjIsMHgwMywweDQxLDB4RTgsMHhGOCww
eDdBLDB4N0MsCisgICAgMHg0NCwweDQ5LDB4RTIsMHgzOCwweDBBLDB4QTgsMHhGRCwweDdGLDB4
NDQsMHg0MSwweDAzLDB4MzksMHgyRSwweDJBLDB4MEQsMHg4OSwKKyAgICAweDQ0LDB4NDEsMHgw
MywweDQxLDB4RUEsMHhFQSwweDYyLDB4QUEsMHg2NCwweDQ5LDB4QzIsMHgzMCwweDJGLDB4RkEs
MHg1RSwweDVFLAorICAgIDB4RTUsMHg1OSwweEUzLDB4MzgsMHg4MiwweDhBLDB4RkQsMHg3NSww
eDAzLDB4MzksMHg4MSwweDIwLDB4NzgsMHhFOCwweEZDLDB4N0EsCisgICAgMHhDMiwweDMwLDB4
QTEsMHgyMCwweEE3LDB4QUYsMHg4QiwweEFELDB4RTMsMHgzMCwweDgxLDB4MjAsMHhGMCwweEZB
LDB4NkYsMHg3QSwKKyAgICAweEMyLDB4MjgsMHg2MSwweDIwLDB4NzIsMHg1NywweDU1LDB4RDUs
MHhBMiwweDI4LDB4NjEsMHgyMCwweEE1LDB4MkYsMHgzQiwweDJBLAorICAgIDB4RTMsMHgzMCww
eDgxLDB4MjgsMHhCQiwweEFCLDB4QUQsMHgyRiwweEMyLDB4MjgsMHhBMiwweDI4LDB4MDAsMHgz
MywweDFBLDB4QzAsCisgICAgMHgyNCwweDM5LDB4QTIsMHgyOCwweDBELDB4RjcsMHg3RiwweDU3
LDB4RTMsMHgzMCwweDgxLDB4MjAsMHg3OCwweEI4LDB4RkYsMHhGNSwKKyAgICAweEMyLDB4Mjgs
MHg2MSwweDIwLDB4QTksMHg4OCwweDAwLDB4QTAsMHhBMSwweDI4LDB4NjEsMHgyMCwweEZFLDB4
QUUsMHhFRSwweEFBLAorICAgIDB4RTMsMHgzOCwweDgxLDB4MjgsMHgwMywweDI5LDB4QjUsMHhC
RCwweDAzLDB4NDEsMHhDMiwweDMwLDB4MEIsMHhBMiwweDIyLDB4QjUsCisgICAgMHgyMywweDQx
LDB4RTIsMHgzOCwweDVBLDB4QUEsMHg4OCwweDA4LDB4MjMsMHg0MSwweEEyLDB4MzAsMHhGRSww
eDVBLDB4NTgsMHhGOCwKKyAgICAweEMyLDB4MzAsMHg4MiwweDI4LDB4QTgsMHhBOCwweEFBLDB4
MkQsMHhFMywweDMwLDB4ODEsMHgyOCwweDZBLDB4Q0EsMHgwQiwweEFGLAorICAgIDB4RTMsMHgz
MCwweDgxLDB4MjgsMHg1NSwweDU1LDB4RkUsMHg2MiwweEMyLDB4MjgsMHg4MiwweDI4LDB4MkYs
MHhFRCwweDk1LDB4QkQsCisgICAgMHgwMywweDM5LDB4QTIsMHgyOCwweENCLDB4RUQsMHhFRiww
eEVCLDB4QzIsMHgyOCwweDgxLDB4MjgsMHhBQSwweEZFLDB4N0UsMHhFRSwKKyAgICAweEUzLDB4
MzAsMHg4MSwweDIwLDB4QUIsMHhCRiwweDk1LDB4QUYsMHhFMywweDMwLDB4QTIsMHgyOCwweEJF
LDB4OUYsMHhENywweEI3LAorICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHgyQSwweDhCLDB4QUQs
MHhBRiwweDAzLDB4MzEsMHhBMiwweDI4LDB4RUEsMHhBRSwweDhELDB4NzksCisgICAgMHgwMyww
eDMxLDB4QzIsMHgyOCwweEFCLDB4NUIsMHg3RSwweDdELDB4QzIsMHgzMCwweEUzLDB4MjgsMHhC
QSwweEU4LDB4MEEsMHhBMiwKKyAgICAweDIzLDB4NDEsMHhDMiwweDMwLDB4RjksMHhBRiwweDA5
LDB4QUYsMHgyMywweDQxLDB4MDMsMHgzOSwweDVFLDB4NjcsMHg5NiwweDE2LAorICAgIDB4MjMs
MHg0MSwweEUzLDB4MzgsMHg3MiwweDIyLDB4MEIsMHgzRSwweDQ0LDB4NDksMHhFMiwweDM4LDB4
RjUsMHgyQiwweDIzLDB4QTIsCisgICAgMHhDNiwweDU5LDB4MjMsMHg0MSwweEI1LDB4MkYsMHgz
QiwweDBCLDB4RUUsMHhBMywweEU2LDB4NTksMHgyRCwweEE1LDB4QkYsMHhFRiwKKyAgICAweEYw
LDB4QkMsMHgyQiwweDhCLDB4MDAsMHgwQiwweEJELDB4NTUsMHhGMCwweEJDLDB4QUIsMHg5Myww
eDAwLDB4MDAsMHgwMiwweEE1LAorICAgIDB4MTAsMHhDNSwweEYwLDB4QkMsMHg4RCwweEE3LDB4
QUYsMHhCRCwweDEwLDB4QzUsMHhDRiwweEJDLDB4QTgsMHhBMCwweEJFLDB4N0UsCisgICAgMHhG
MCwweEJDLDB4OEYsMHhCNCwweDc4LDB4MDgsMHgyMiwweDBBLDB4RjAsMHhCQywweDRFLDB4QUMs
MHg3NywweDc4LDB4NjAsMHg4MCwKKyAgICAweDRFLDB4QUMsMHhBQywweDkzLDB4NUYsMHhGQSww
eEVBLDB4QTgsMHgyRCwweEE0LDB4MDksMHg3QiwweDVGLDB4RTgsMHgwMiwweDgwLAorICAgIDB4
MkQsMHg5QywweDBBLDB4N0IsMHg1NSwweDVGLDB4RTIsMHgwMCwweENDLDB4OTMsMHgyQSwweDdC
LDB4RjUsMHg3RCwweEZGLDB4QTAsCisgICAgMHhDQiwweDkzLDB4RUEsMHg3QSwweDdGLDB4RkUs
MHhGQiwweDgwLDB4OEIsMHg4QiwweDI3LDB4NUEsMHg3RiwweDdBLDB4RkEsMHhBOCwKKyAgICAw
eDIzLDB4NDksMHhFMiwweDM4LDB4QkYsMHg4QiwweEFCLDB4NkMsMHgyMywweDQ5LDB4RTMsMHg0
MCwweDhBLDB4QUEsMHhBNiwweEVELAorICAgIDB4MjMsMHg0OSwweEUzLDB4NDAsMHhBMiwweEVF
LDB4QkUsMHhGRSwweDIzLDB4NDksMHhFMiwweDQwLDB4RjAsMHg2MCwweEE4LDB4REEsCisgICAg
MHgwMywweDQxLDB4QzIsMHgzOCwweDdBLDB4OUMsMHg2QywweEZBLDB4MDMsMHg0MSwweEMyLDB4
MzgsMHhBQiwweDBFLDB4QTMsMHg3NywKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4M0UsMHhB
QiwweEVCLDB4RUYsMHgwMywweDQxLDB4QzIsMHgzOCwweEIyLDB4RkUsMHhGQywweEVDLAorICAg
IDB4RTIsMHg0MCwweDAzLDB4MzEsMHgyOCwweDA4LDB4ODAsMHgyQSwweDAzLDB4NDEsMHhFMiww
eDQwLDB4RUQsMHg1OSwweEVELDB4QzMsCisgICAgMHgwMywweDQxLDB4QzIsMHg0MCwweDNBLDB4
MjgsMHhFRiwweDJBLDB4NjcsMHg3MiwweDAyLDB4NDEsMHgyRCwweDI1LDB4MjUsMHgyNSwKKyAg
ICAweDQ2LDB4NkEsMHhFNSwweDYxLDB4REMsMHg3OCwweDVBLDB4RjgsMHhFNSwweDU5LDB4MDMs
MHg0MSwweDc4LDB4NzgsMHg1QywweDU4LAorICAgIDB4NDQsMHg0MSwweEUzLDB4MzgsMHhBRiww
eDhGLDB4RUQsMHhGOSwweDIzLDB4MzksMHhFMywweDM4LDB4RjIsMHg3OCwweDhGLDB4QUUsCisg
ICAgMHg0MywweDQxLDB4RTMsMHgzMCwweDgyLDB4QkYsMHhERiwweDdGLDB4NDQsMHg0MSwweEUy
LDB4MzAsMHg3QSwweEY4LDB4QUEsMHhFRCwKKyAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4N0Ys
MHg3RiwweDc4LDB4QTIsMHhFMiwweDMwLDB4QTEsMHgyOCwweEVFLDB4RkYsMHg1NywweEY4LAor
ICAgIDB4RTMsMHgyOCwweEEyLDB4MjgsMHhBRiwweDdGLDB4NTUsMHhBNiwweEUyLDB4MjgsMHg4
MSwweDIwLDB4NUUsMHg1RiwweEZCLDB4MjAsCisgICAgMHhFMywweDMwLDB4ODEsMHgyMCwweEQ1
LDB4QUQsMHgyQSwweEFBLDB4RTMsMHgzMCwweEEyLDB4MjgsMHhENSwweEU1LDB4QkIsMHhBRSwK
KyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4MkYsMHhCRiwweEVBLDB4QTMsMHhFMywweDMwLDB4
QTIsMHgyOCwweDZBLDB4RTgsMHgyMCwweDI4LAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhE
RiwweEVFLDB4QjgsMHhFQywweEUyLDB4MjgsMHhBMiwweDI4LDB4NTUsMHg1NywweEY2LDB4RjIs
CisgICAgMHhDMiwweDI4LDB4ODEsMHgyMCwweDYzLDB4NkIsMHhBRiwweEQ3LDB4QzIsMHgyOCww
eDgyLDB4MjAsMHhFRiwweEVFLDB4QzgsMHhDRSwKKyAgICAweEMyLDB4MjgsMHg4MiwweDIwLDB4
OEIsMHg4QSwweEJCLDB4NTcsMHhDMiwweDMwLDB4NjEsMHgyMCwweDJBLDB4QkYsMHhCRiwweEY2
LAorICAgIDB4MjQsMHg0MSwweDgxLDB4MjAsMHgwQSwweEFGLDB4REQsMHhENywweDQ0LDB4NDEs
MHhDMiwweDMwLDB4NjAsMHhFMCwweEUzLDB4RkQsCisgICAgMHhFMywweDMwLDB4ODEsMHgyOCww
eEY1LDB4RkYsMHhFQSwweDg4LDB4RTIsMHgzMCwweEEyLDB4MjgsMHg1RCwweDU1LDB4RDcsMHhB
QSwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4QkYsMHgzNSwweDJCLDB4QTAsMHgyMywweDM5
LDB4QTIsMHgyOCwweEZELDB4QUEsMHg4RSwweDBCLAorICAgIDB4NDQsMHg0MSwweEEyLDB4MzAs
MHg1RCwweDdGLDB4QTIsMHgwMiwweDI0LDB4MzksMHg4MSwweDI4LDB4RDcsMHg1RiwweEZFLDB4
ODgsCisgICAgMHgwMywweDMxLDB4QTIsMHgyOCwweDg5LDB4MEQsMHhFQiwweEFGLDB4RTMsMHgz
MCwweEEyLDB4MjgsMHhCRSwweDc4LDB4NzgsMHhGRSwKKyAgICAweEMyLDB4MjgsMHg4MiwweDI4
LDB4MDAsMHhFQSwweEVCLDB4RkEsMHhDMiwweDI4LDB4ODEsMHgyOCwweEEyLDB4ODMsMHgwRCww
eEM1LAorICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHhCNSwweDU3LDB4N0YsMHhFOSwweEMyLDB4
MjgsMHg4MiwweDI4LDB4MDAsMHgwQiwweDBELDB4MkUsCisgICAgMHgwMywweDM5LDB4QzIsMHgy
OCwweEJCLDB4REQsMHg2RiwweDhBLDB4MDIsMHgzOSwweEMyLDB4MzAsMHgyQSwweEJELDB4RkQs
MHhBNywKKyAgICAweDY0LDB4NDksMHhFMiwweDM4LDB4QjcsMHg4RiwweDhELDB4QkQsMHhBNSww
eDUxLDB4MDMsMHg0MSwweEZELDB4M0QsMHgyNywweEFGLAorICAgIDB4NDcsMHg2QSwweDY0LDB4
NTEsMHhCRCwweEFELDB4MkYsMHgyRiwweDBBLDB4ODMsMHg2OCwweDZBLDB4MDksMHgwOSwweDBC
LDB4MEIsCisgICAgMHgwQSwweDgzLDB4RTksMHg3QSwweDMzLDB4M0QsMHhBOCwweDMwLDB4QUMs
MHg5QiwweEU5LDB4N0EsMHgyQiwweEI3LDB4REQsMHg1NSwKKyAgICAweEQwLDB4QkMsMHhFQSww
eDgyLDB4MEEsMHhCRiwweEZELDB4RDUsMHhDRiwweEJDLDB4NEIsMHg4QiwweDAwLDB4MDAsMHgy
RiwweEQ1LAorICAgIDB4RjAsMHhCQywweDBFLDB4QTQsMHgwMCwweDAwLDB4MDAsMHgyRCwweDEw
LDB4QzUsMHhBRSwweEI0LDB4N0EsMHg2QSwweEVBLDB4QzgsCisgICAgMHg4RSwweEI0LDB4MkQs
MHhBNCwweDc3LDB4RDYsMHhEQywweEI4LDB4NkUsMHhBQywweDBELDB4QTQsMHhGNSwweERFLDB4
RkEsMHhFOCwKKyAgICAweDRFLDB4QUMsMHgwRCwweEE0LDB4QUQsMHg5RSwweEZFLDB4MEEsMHg0
RSwweEFDLDB4MkQsMHg5QywweDdBLDB4QkIsMHhBQiwweDBBLAorICAgIDB4NkUsMHhBQywweDJE
LDB4QTQsMHg1NSwweEYyLDB4RTIsMHhBOCwweDRFLDB4QTQsMHg2QiwweDgzLDB4N0UsMHhBMCww
eDgwLDB4MDAsCisgICAgMHgwMywweDQxLDB4QzEsMHgzOCwweEYwLDB4OTgsMHhGOCwweEFBLDB4
NDMsMHg0MSwweEUyLDB4NDAsMHg3NywweEY1LDB4RkYsMHg5RiwKKyAgICAweDIzLDB4NDksMHhF
MywweDQwLDB4QTIsMHgyRiwweEVCLDB4N0IsMHgwMywweDQxLDB4QzIsMHgzOCwweDgwLDB4QTAs
MHhGMiwweDYwLAorICAgIDB4MDIsMHg0MSwweEMyLDB4MzgsMHhGQiwweERCLDB4RjMsMHgzRSww
eDAzLDB4NDEsMHhDMiwweDM4LDB4RUEsMHg3OSwweEJBLDB4QUUsCisgICAgMHgwMywweDQxLDB4
RTIsMHgzOCwweDNELDB4MkQsMHhFRiwweDU1LDB4MDMsMHg0MSwweEMyLDB4MzgsMHhFRSwweEVC
LDB4OEQsMHgzQiwKKyAgICAweDAzLDB4NDEsMHhFMiwweDM4LDB4MUUsMHhCMywweEZGLDB4NkYs
MHgwMiwweDQxLDB4QzIsMHgzOCwweEFBLDB4OUYsMHhCRSwweEZCLAorICAgIDB4MDMsMHg0MSww
eEMxLDB4MzgsMHhBQSwweDlBLDB4RkEsMHhFRiwweDQ2LDB4NkEsMHhFMiwweDQwLDB4MjUsMHgz
NSwweDI1LDB4MzUsCisgICAgMHg2NiwweDcyLDB4RTUsMHg2MSwweEZBLDB4RkMsMHg3OCwweEU4
LDB4MDUsMHg2MiwweEUyLDB4MzgsMHg1OCwweDdBLDB4NUMsMHg3OCwKKyAgICAweDAzLDB4Mzks
MHhFMiwweDMwLDB4MDIsMHgyQiwweEJFLDB4OTcsMHgyNCwweDM5LDB4RTMsMHgzOCwweEUyLDB4
QUYsMHhGNywweDc2LAorICAgIDB4MjMsMHgzOSwweDAzLDB4MzksMHg2RCwweEY2LDB4QUQsMHg1
NSwweDQ0LDB4NDEsMHhFMiwweDMwLDB4RkUsMHg4MiwweEFBLDB4RkYsCisgICAgMHg0MywweDM5
LDB4RTMsMHgzOCwweEFELDB4N0YsMHhGQSwweDhBLDB4MjQsMHgzOSwweEUzLDB4MzAsMHg3Qiww
eEEyLDB4QkQsMHhGOCwKKyAgICAweDI0LDB4MzksMHhDMiwweDI4LDB4N0QsMHhFRSwweEE4LDB4
OEEsMHgyMywweDM5LDB4RTMsMHgzMCwweDVELDB4RDcsMHhBRiwweEFBLAorICAgIDB4MjMsMHgz
OSwweEUzLDB4MzAsMHg1RCwweENFLDB4QUUsMHhCRiwweDI0LDB4MzksMHhDMiwweDMwLDB4REYs
MHhGQSwweEUyLDB4QUEsCisgICAgMHgwMywweDM5LDB4QzIsMHgyOCwweEU1LDB4RkEsMHgyMCww
eDIwLDB4MDMsMHgzMSwweEMyLDB4MjgsMHhCOCwweERBLDB4REMsMHhBMCwKKyAgICAweEUzLDB4
MzAsMHhDMiwweDI4LDB4RjQsMHhDQSwweDJFLDB4M0EsMHhFMywweDMwLDB4QzIsMHgyOCwweEZG
LDB4QkIsMHhDMiwweDA4LAorICAgIDB4RTMsMHgyOCwweDgyLDB4MjAsMHg3RiwweEU4LDB4QUEs
MHhBMCwweEMyLDB4MjgsMHg4MiwweDIwLDB4N0YsMHhFRSwweEU4LDB4ODgsCisgICAgMHhDMyww
eDI4LDB4ODIsMHgyMCwweDc1LDB4N0YsMHg2QiwweEUyLDB4QTIsMHgyOCwweDgxLDB4MjAsMHhB
NywweDU1LDB4MTYsMHg4MCwKKyAgICAweEEyLDB4MjgsMHg4MiwweDIwLDB4M0IsMHgwNywweEFF
LDB4RkQsMHgwMywweDM5LDB4ODIsMHgyOCwweDhGLDB4ODksMHgwRiwweEZELAorICAgIDB4QzIs
MHgzMCwweEUzLDB4MjgsMHhBMCwweDgyLDB4MEIsMHgwOCwweDAzLDB4MzksMHhDMiwweDMwLDB4
RUYsMHg1QywweEFCLDB4M0QsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEVBLDB4ODMsMHhF
QSwweDcwLDB4MjMsMHg0MSwweEEyLDB4MjgsMHgwMiwweEFCLDB4QkQsMHhGNSwKKyAgICAweDY0
LDB4NDksMHhFMywweDM4LDB4QTIsMHgwMywweDhCLDB4RDUsMHg2NCwweDQxLDB4QzIsMHgzMCww
eEZFLDB4N0MsMHg3OCwweDZBLAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhGQiwweEI1LDB4
QjUsMHhGRSwweEUzLDB4MzgsMHhDMiwweDI4LDB4RDEsMHhFQSwweEIzLDB4NEYsCisgICAgMHhD
MiwweDMwLDB4ODEsMHgyOCwweEZFLDB4REEsMHhCRSwweDhBLDB4RTIsMHgzMCwweEEyLDB4Mjgs
MHg1NSwweEY1LDB4REIsMHhBMywKKyAgICAweEUyLDB4MzAsMHhBMiwweDI4LDB4NjksMHg2Qiww
eEVGLDB4QUEsMHhFMywweDMwLDB4ODEsMHgyMCwweEFGLDB4MzksMHgyQiwweEFGLAorICAgIDB4
MjMsMHgzOSwweEUyLDB4MzAsMHgwOSwweDI5LDB4OUQsMHg1RiwweDY0LDB4NDksMHhFMiwweDMw
LDB4RTcsMHhCRiwweDJGLDB4QkYsCisgICAgMHg0MywweDQxLDB4MDMsMHgzOSwweDM1LDB4QUUs
MHg5QiwweEY4LDB4MjYsMHg2MiwweDIzLDB4NDEsMHhGRCwweEZGLDB4QkYsMHgyRCwKKyAgICAw
eEE4LDB4NzIsMHg4NCwweDUxLDB4MkQsMHgyRCwweDJCLDB4MEEsMHgwQSwweDgzLDB4QTgsMHg3
QSwweDI5LDB4RUIsMHhDRCwweEZCLAorICAgIDB4MEEsMHg4MywweEM5LDB4N0EsMHhBQSwweEY5
LDB4REQsMHhBNSwweDJCLDB4ODMsMHhDQSwweDdBLDB4RkIsMHg4QiwweEE5LDB4QjcsCisgICAg
MHgyQSwweDgzLDB4QzksMHg3QSwweEZCLDB4QjYsMHhCMCwweDI4LDB4NEIsMHg4QiwweEVBLDB4
N0EsMHgzOSwweDJFLDB4QkIsMHhERiwKKyAgICAweDJFLDB4QTQsMHgyQSwweDgzLDB4MkYsMHhG
NSwweDU1LDB4NTUsMHhGMCwweEJDLDB4NEEsMHg4QiwweDAyLDB4QUYsMHhENSwweDU1LAorICAg
IDB4RDAsMHhCNCwweDhCLDB4OTMsMHhBOCwweEFBLDB4QUIsMHhENSwweEIwLDB4QjQsMHgyRSww
eEE0LDB4RkUsMHhBQSwweEFBLDB4QTksCisgICAgMHg4RiwweEI0LDB4NEUsMHhBQywweDVGLDB4
RkEsMHg3QSwweENBLDB4OEYsMHhCNCwweDRFLDB4QUMsMHhENywweEVCLDB4M0EsMHhCMiwKKyAg
ICAweDhGLDB4QjQsMHg0RSwweEFDLDB4RkQsMHhCRSwweDNBLDB4MDAsMHhBRiwweEI0LDB4NEUs
MHhBQywweDVGLDB4RjcsMHhBRiwweDgwLAorICAgIDB4NDMsMHg0MSwweEUyLDB4NDAsMHg3RCww
eEVGLDB4N0YsMHhENSwweDAzLDB4NDEsMHhFMiwweDM4LDB4N0EsMHhCNiwweDRFLDB4Q0EsCisg
ICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDBBLDB4QkEsMHhCQiwweDY5LDB4MDIsMHg0MSwweEMy
LDB4MzgsMHg2RSwweEY4LDB4NUEsMHhBRCwKKyAgICAweDAzLDB4MzksMHhBMSwweDM4LDB4OUIs
MHgyQSwweEFBLDB4MjMsMHhFMiwweDQwLDB4MDMsMHgzOSwweDhCLDB4QUIsMHgzQiwweDJCLAor
ICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHg5QSwweEFBLDB4NzgsMHhFMywweDAyLDB4NDEsMHhD
MiwweDM4LDB4RUIsMHg3NywweEFGLDB4RUQsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEZB
LDB4REYsMHhBRSwweDhELDB4MDMsMHg0MSwweEUyLDB4MzgsMHhDRiwweDk2LDB4NTUsMHhGQSwK
KyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4NzMsMHg3RSwweEZDLDB4QkUsMHg0NiwweDZBLDB4
RTIsMHg0MCwweDI1LDB4MzUsMHgzNSwweDM1LAorICAgIDB4ODcsMHg3MiwweDA1LDB4NjIsMHg3
OCwweDdBLDB4NTgsMHg3RSwweDA1LDB4NjIsMHhFMiwweDM4LDB4NTgsMHg3OCwweDU4LDB4Nzgs
CisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEZGLDB4OUYsMHg4QSwweDIzLDB4MjMsMHgzOSww
eEUzLDB4MzAsMHhGNywweEJBLDB4ODcsMHhFNywKKyAgICAweDIzLDB4MzksMHhFMiwweDMwLDB4
RUIsMHhCQiwweDdBLDB4RkQsMHgyMywweDM5LDB4MDMsMHgzOSwweEIyLDB4OTgsMHgzNiwweDU1
LAorICAgIDB4NDQsMHg0MSwweDAzLDB4MzksMHg4QiwweDJBLDB4RUYsMHhGRiwweDQ0LDB4NDEs
MHgwMywweDM5LDB4NkUsMHg4RSwweDhCLDB4REEsCisgICAgMHg0NCwweDM5LDB4MDMsMHgzOSww
eDVGLDB4NjAsMHg1QSwweDZFLDB4MjQsMHgzOSwweEUyLDB4MzAsMHgwQSwweEVGLDB4RkYsMHhE
RiwKKyAgICAweDI0LDB4MzksMHhFMywweDM4LDB4RTAsMHhDQSwweDJELDB4OTksMHg0NCwweDQx
LDB4RTMsMHgzMCwweDU3LDB4RjUsMHhBQiwweEVELAorICAgIDB4MjQsMHg0MSwweEUzLDB4MzAs
MHhCRiwweERFLDB4QkUsMHhDQSwweDAzLDB4MzksMHhFMiwweDMwLDB4ODAsMHgyRSwweDNFLDB4
NUUsCisgICAgMHgwMywweDMxLDB4QTIsMHgzMCwweEE4LDB4MkEsMHg4MCwweEFCLDB4MDMsMHgz
MSwweEUzLDB4MzAsMHhCNSwweEM2LDB4N0MsMHg1QiwKKyAgICAweDAzLDB4MzEsMHhDMywweDI4
LDB4NzgsMHg1QSwweEJFLDB4QjIsMHgwMywweDMxLDB4QzMsMHgyOCwweEY3LDB4NkEsMHhFQSww
eEZGLAorICAgIDB4RTMsMHgzMCwweEMzLDB4MjgsMHg1NSwweDdGLDB4RkYsMHhCNywweDAzLDB4
MzEsMHhBMiwweDIwLDB4NzcsMHhGNywweEZGLDB4RkIsCisgICAgMHhFMywweDI4LDB4ODEsMHgy
MCwweEQ3LDB4RkYsMHhGQSwweEFBLDB4QTIsMHgyOCwweDgyLDB4MjAsMHhCOCwweEZDLDB4M0Es
MHhBMiwKKyAgICAweEMyLDB4MzAsMHg4MSwweDIwLDB4MkIsMHhBRiwweDU1LDB4NTcsMHhFMyww
eDMwLDB4ODEsMHgyOCwweDBBLDB4MkEsMHgwRiwweDI3LAorICAgIDB4MDMsMHgzOSwweEEyLDB4
MzAsMHg2QSwweDQ4LDB4QzMsMHhFMiwweEUzLDB4MzAsMHhBMiwweDMwLDB4QkYsMHhGQiwweEVB
LDB4QUIsCisgICAgMHhFMiwweDMwLDB4QzIsMHgzMCwweEY1LDB4NzcsMHg1RCwweEEyLDB4MDIs
MHgzOSwweEExLDB4MjgsMHhFOCwweDZGLDB4RUEsMHgyRiwKKyAgICAweDAzLDB4MzksMHhBMiww
eDI4LDB4RjcsMHhCNSwweEVGLDB4QTgsMHhFMywweDMwLDB4QzIsMHgzMCwweEVGLDB4QjMsMHg4
RCwweEMxLAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhGNywweEZGLDB4Q0UsMHhBRCwweDQ0
LDB4NDEsMHhBMSwweDI4LDB4RkQsMHhFRCwweDJGLDB4M0YsCisgICAgMHg2NCwweDQxLDB4QzIs
MHgyOCwweDc3LDB4RUYsMHhBRSwweDJBLDB4MjQsMHgzOSwweEExLDB4MjgsMHhGNSwweEZFLDB4
QUEsMHgwOCwKKyAgICAweDIzLDB4MzksMHhFMywweDMwLDB4QjUsMHhBNSwweDBGLDB4MEEsMHg0
MywweDQxLDB4MDMsMHgzOSwweDJBLDB4RkEsMHhEMiwweDIzLAorICAgIDB4QzUsMHg1MSwweEMy
LDB4MzgsMHhGRiwweEFGLDB4MkIsMHgwMiwweDY3LDB4NkEsMHg2MywweDQ5LDB4M0QsMHg4Qiww
eDBBLDB4MDIsCisgICAgMHhDOSwweDdBLDB4NjgsMHg2QSwweDJELDB4QjUsMHhCNywweEJELDB4
QzksMHg3QSwweDg4LDB4NzIsMHhBOCwweDhCLDB4RkQsMHhFQiwKKyAgICAweEVBLDB4N0EsMHg4
OCwweDcyLDB4MEIsMHg4OSwweEEyLDB4QkYsMHhFOSwweDdBLDB4QTksMHg3MiwweEJDLDB4QUIs
MHhCNywweEFFLAorICAgIDB4MkEsMHg4MywweEM5LDB4N0EsMHhBOSwweDNGLDB4RkIsMHhCNSww
eDBBLDB4ODMsMHhDOSwweDdBLDB4QUMsMHgyOCwweDdGLDB4RkMsCisgICAgMHgyQSwweDgzLDB4
QzksMHg3QSwweEFBLDB4OEYsMHhCNywweDc3LDB4MkEsMHg4QiwweEM5LDB4N0EsMHgyMCwweEZD
LDB4REUsMHhBQSwKKyAgICAweDRCLDB4OEIsMHhFQSwweDdBLDB4MkEsMHhCQiwweDdGLDB4N0Ys
MHhFRCwweDlCLDB4QzksMHg3QSwweDAyLDB4QUYsMHhGNywweDVELAorICAgIDB4NEUsMHhBQyww
eEVBLDB4ODIsMHgwMCwweDAyLDB4QUYsMHhGRCwweDZFLDB4QUMsMHg2QiwweDhCLDB4MDAsMHgw
MCwweDAyLDB4QUQsCisgICAgMHhBRiwweEI0LDB4NEUsMHhBQywweEFBLDB4QTIsMHhBQiwweEE5
LDB4RDAsMHhCNCwweDhGLDB4QjQsMHhBRiwweEVGLDB4RUUsMHhCRiwKKyAgICAweDIzLDB4NDEs
MHhFMiwweDQwLDB4REIsMHhFRiwweEFGLDB4NDIsMHgwMiwweDQxLDB4QzIsMHgzOCwweEVBLDB4
QTAsMHg0OCwweENBLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzgsMHhERSwweEZGLDB4QUIsMHgy
RSwweDAzLDB4NDEsMHhDMiwweDM4LDB4M0YsMHhBNiwweDhBLDB4MDIsCisgICAgMHgwMywweDQx
LDB4QzIsMHgzOCwweENELDB4QUUsMHhBQiwweEJFLDB4MDMsMHg0MSwweEMyLDB4MzgsMHhGRiww
eEVDLDB4REUsMHhGRSwKKyAgICAweDAyLDB4NDEsMHhDMiwweDM4LDB4QkIsMHhGQSwweEZBLDB4
QkEsMHgwMywweDQxLDB4QzIsMHgzOCwweDc4LDB4RUYsMHg1RSwweEJGLAorICAgIDB4RTIsMHgz
OCwweEMyLDB4MzgsMHg4MiwweDAwLDB4MzAsMHgwMCwweDAzLDB4MzksMHhDMiwweDM4LDB4QkEs
MHgzMiwweEJGLDB4QkYsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEJGLDB4RjcsMHg5RSww
eDdFLDB4NDYsMHg2QSwweEUyLDB4MzgsMHgzNSwweDM1LDB4MzUsMHgzNSwKKyAgICAweDY3LDB4
NzIsMHgwNiwweDYyLDB4N0MsMHg3QSwweEVFLDB4RTgsMHgwNSwweDYyLDB4RTIsMHgzOCwweDc4
LDB4NzgsMHg3OCwweDU4LAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHg4MiwweDRDLDB4OEEs
MHhGOCwweDAzLDB4MzksMHhDMiwweDMwLDB4QjYsMHhFNSwweEJBLDB4QTIsCisgICAgMHgwMyww
eDM5LDB4RTIsMHgyOCwweEFCLDB4QkIsMHgyRCwweEE3LDB4MDMsMHgzOSwweEMyLDB4MzAsMHgw
RSwweEI2LDB4QkUsMHgyRSwKKyAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4MkEsMHhBRCwweEZG
LDB4RUUsMHgyMywweDQxLDB4RTMsMHgzMCwweEEwLDB4ODgsMHhCMywweEVELAorICAgIDB4NDQs
MHg0MSwweDAzLDB4MzksMHg3OCwweEJELDB4NTUsMHg1NSwweDIzLDB4MzksMHhFMywweDM4LDB4
OUQsMHg3QSwweDZBLDB4RTYsCisgICAgMHgyMywweDM5LDB4RTMsMHgzMCwweEE5LDB4OTksMHhC
RCwweEJELDB4NDQsMHg0MSwweEUzLDB4MzAsMHhGNSwweERGLDB4RkUsMHg4QiwKKyAgICAweDQ0
LDB4NDEsMHhFMywweDMwLDB4OEIsMHhBNywweERFLDB4QkUsMHgyNCwweDQxLDB4RTMsMHgzOCww
eDc2LDB4QjgsMHhCQiwweDZGLAorICAgIDB4MjMsMHgzOSwweEUzLDB4MzAsMHg3QiwweEI3LDB4
OEEsMHhBQSwweDI0LDB4MzksMHhFMywweDMwLDB4QjUsMHhGRiwweEY0LDB4RUYsCisgICAgMHgy
MywweDMxLDB4RTMsMHgzMCwweEJFLDB4QTIsMHg2RiwweEQ1LDB4MDMsMHgzMSwweEMzLDB4Mjgs
MHhFQSwweEFBLDB4QUEsMHgwMCwKKyAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4QjUsMHhGRiww
eEZGLDB4QUEsMHhFMywweDMwLDB4QzIsMHgyOCwweENFLDB4QTgsMHgwMCwweEYwLAorICAgIDB4
QzMsMHgzMCwweEUyLDB4MjgsMHgwRSwweEJFLDB4QUUsMHhCOCwweEUyLDB4MzAsMHhBMiwweDIw
LDB4NUYsMHg1QSwweEFBLDB4RkUsCisgICAgMHhDMiwweDI4LDB4ODIsMHgyMCwweEVCLDB4RUUs
MHhCQSwweEFBLDB4QzIsMHgyOCwweDgxLDB4MjAsMHhCRiwweEZFLDB4RTAsMHhCMCwKKyAgICAw
eDAzLDB4MzksMHg4MSwweDIwLDB4MDIsMHgyOSwweEJELDB4NzUsMHgwMywweDMxLDB4QTIsMHgy
OCwweDdGLDB4RjAsMHhBQSwweEVELAorICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHhBRiwweEFC
LDB4QzAsMHg4MCwweDIzLDB4MzEsMHhDMiwweDMwLDB4RjUsMHhGNywweERGLDB4N0IsCisgICAg
MHgwMywweDMxLDB4QzIsMHgzMCwweDVFLDB4NUIsMHhFRSwweDZGLDB4MDMsMHgzMSwweEMyLDB4
MzAsMHg2RiwweDZGLDB4ODMsMHg4MiwKKyAgICAweDAzLDB4MzksMHhBMiwweDI4LDB4MkQsMHgy
QiwweDJFLDB4MjcsMHgwMywweDM5LDB4RTIsMHgzMCwweDE2LDB4MjksMHgwRiwweEFDLAorICAg
IDB4NDQsMHg0MSwweEUyLDB4MzAsMHgwQSwweEVFLDB4RkIsMHg2MCwweDIzLDB4MzksMHhDMiww
eDI4LDB4MjAsMHgyQSwweEZFLDB4RjcsCisgICAgMHgyMywweDM5LDB4QzIsMHgzMCwweEUwLDB4
MkUsMHhCQSwweERGLDB4ODQsMHg1MSwweEUyLDB4MzAsMHhCRiwweEJGLDB4QkQsMHgyRCwKKyAg
ICAweDI3LDB4NjIsMHg4NCwweDQ5LDB4QUQsMHhBOSwweEFGLDB4MkIsMHg2OCwweDZBLDB4RTYs
MHg1OSwweDJGLDB4QkQsMHgyRCwweDA5LAorICAgIDB4QTgsMHg3MiwweDY4LDB4NkEsMHg4NSww
eDhELDB4QkQsMHhGQiwweEM5LDB4N0EsMHg4OCwweDZBLDB4RUYsMHgxQiwweERELDB4RjcsCisg
ICAgMHhDOSwweDdBLDB4ODgsMHg3MiwweDNGLDB4QjgsMHhGQSwweDVELDB4RUEsMHg3QSwweEE5
LDB4NzIsMHhDMCwweEZCLDB4RTUsMHg1NSwKKyAgICAweDBBLDB4ODMsMHhBOSwweDcyLDB4QTcs
MHhCRCwweENELDB4N0QsMHgwQSwweDgzLDB4QTksMHg3MiwweDJFLDB4M0QsMHhCRiwweDk3LAor
ICAgIDB4MEEsMHg4MywweEE5LDB4NzIsMHhFOCwweDg4LDB4MkEsMHhCNywweDJBLDB4ODMsMHhD
OSwweDdBLDB4OEYsMHhFNSwweEZELDB4RkYsCisgICAgMHgyQiwweDgzLDB4QzksMHg3QSwweEFC
LDB4MkYsMHhGQiwweERGLDB4MkIsMHg4QiwweEVBLDB4N0EsMHg3NywweDc2LDB4NjIsMHhGRiwK
KyAgICAweDJBLDB4ODMsMHhFOSwweDdBLDB4QUQsMHhGNywweEZGLDB4MDUsMHhBQywweDkzLDB4
RTksMHg3QSwweDJCLDB4REQsMHg1NSwweDU3LAorICAgIDB4NkUsMHhBQywweDBBLDB4ODMsMHgw
QSwweEJGLDB4RjUsMHg1NSwweEFGLDB4QjQsMHg0QSwweDhCLDB4MDAsMHgwQSwweEFGLDB4NTUs
CisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEMwLDB4QzAsMHg3MiwweDdDLDB4RTIsMHg0MCww
eEMyLDB4MzAsMHhGMiwweDM4LDB4QUEsMHhBOSwKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4
QUIsMHgwQSwweEFCLDB4MEYsMHgwMywweDM5LDB4QzIsMHgzOCwweDJBLDB4RUIsMHhDQSwweDY4
LAorICAgIDB4MjIsMHgzOSwweEMyLDB4MzgsMHhGNiwweDdGLDB4N0YsMHhCRiwweDAzLDB4Mzks
MHhDMiwweDM4LDB4NkUsMHhDMiwweEJCLDB4QjIsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCww
eDJGLDB4QkYsMHhFQywweEVDLDB4MDMsMHg0MSwweEMyLDB4MzgsMHg3RiwweEUyLDB4OEYsMHhF
QiwKKyAgICAweDIyLDB4MzksMHhDMiwweDM4LDB4RkUsMHg3RiwweDVGLDB4REYsMHhFMiwweDM4
LDB4QzIsMHgzOCwweDMzLDB4MDAsMHhCMywweEIxLAorICAgIDB4RTIsMHgzOCwweEMyLDB4Mzgs
MHhFMCwweEY4LDB4REEsMHgyOCwweDQ3LDB4NkEsMHhFMiwweDM4LDB4MzUsMHgyNSwweDM1LDB4
MzUsCisgICAgMHg2NywweDcyLDB4QzUsMHg1OSwweEUwLDB4RTAsMHg2MCwweDc4LDB4QTUsMHg1
OSwweDAyLDB4MzksMHg3OCwweDVDLDB4N0UsMHg1NiwKKyAgICAweDAzLDB4MzksMHhDMiwweDMw
LDB4N0MsMHg4QSwweEI4LDB4OUMsMHgwMywweDM5LDB4RTMsMHgzMCwweEJFLDB4RDcsMHhENyww
eEYxLAorICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHhCRSwweERDLDB4QTIsMHg3RSwweDAzLDB4
MzEsMHhFMiwweDMwLDB4N0YsMHg2NSwweDc1LDB4NzIsCisgICAgMHgwMywweDMxLDB4QzIsMHgz
MCwweDhBLDB4QUEsMHg4QiwweEZBLDB4MDMsMHgzMSwweEUzLDB4MzAsMHg4RSwweDI0LDB4MkQs
MHg1OSwKKyAgICAweDIzLDB4MzksMHhFMywweDMwLDB4QUYsMHhERCwweERGLDB4RTcsMHgwMyww
eDM5LDB4QzIsMHgzMCwweDA4LDB4RTgsMHhGQSwweERBLAorICAgIDB4MjQsMHgzOSwweEUzLDB4
MzAsMHhBRiwweEJGLDB4RkUsMHgzOCwweDQ0LDB4NDEsMHhFMywweDMwLDB4QkEsMHhBMywweEFC
LDB4RjcsCisgICAgMHg0NCwweDQxLDB4MDMsMHgzOSwweEZGLDB4RUUsMHg3OCwweDVGLDB4MjQs
MHgzOSwweEUzLDB4MzgsMHhGQiwweDg4LDB4QkUsMHhBRiwKKyAgICAweDI0LDB4MzksMHhDMiww
eDMwLDB4QkYsMHhGNiwweEU4LDB4QUEsMHgyMywweDM5LDB4RTIsMHgzMCwweEMzLDB4RkYsMHhF
QSwweEFBLAorICAgIDB4MjMsMHgzOSwweEUzLDB4MzAsMHhERiwweEZGLDB4RkQsMHg5RiwweDIz
LDB4MzksMHhFMywweDMwLDB4MzcsMHhGRCwweEVCLDB4RkEsCisgICAgMHgyMywweDM5LDB4RTMs
MHgzMCwweDdFLDB4RkUsMHhGNSwweEEzLDB4MDMsMHgzMSwweEMyLDB4MzAsMHhGQiwweEMwLDB4
MjAsMHgwMCwKKyAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4NzksMHg3MywweEMyLDB4QkEsMHgw
MywweDMxLDB4QzIsMHgyOCwweDU1LDB4RkYsMHhGRiwweDgzLAorICAgIDB4RTMsMHgyOCwweEMy
LDB4MjgsMHg2NSwweEM1LDB4RjcsMHhCRCwweEUyLDB4MjgsMHhBMiwweDIwLDB4N0YsMHg3Qiww
eDg4LDB4QTIsCisgICAgMHhDMiwweDI4LDB4ODEsMHgyMCwweEJGLDB4QUYsMHgyRSwweDgwLDB4
QTIsMHgyOCwweDgxLDB4MjAsMHgyQiwweEQ4LDB4QkIsMHhFOCwKKyAgICAweEUzLDB4MzAsMHg2
MSwweDIwLDB4MDIsMHhBRiwweEZGLDB4RjcsMHgwMywweDM5LDB4ODIsMHgyMCwweDgyLDB4MjIs
MHhBRiwweEZELAorICAgIDB4MDMsMHgzOSwweEMyLDB4MjgsMHhBOSwweDg4LDB4OEIsMHg5NSww
eDAzLDB4MzksMHhFMywweDMwLDB4NDIsMHg2MiwweDVCLDB4NTMsCisgICAgMHgwMywweDMxLDB4
QTIsMHgyOCwweDJELDB4RkIsMHhCQSwweDBCLDB4MjMsMHgzOSwweEUzLDB4MzAsMHhCRSwweEJC
LDB4QkEsMHg4MywKKyAgICAweDIzLDB4MzksMHhBMSwweDI4LDB4RTAsMHhBMCwweEE4LDB4REMs
MHhFMywweDMwLDB4QTIsMHgyOCwweDI3LDB4MkEsMHgyMCwweDgzLAorICAgIDB4NDQsMHg0MSww
eEMyLDB4MjgsMHhENSwweEZGLDB4QkYsMHhBRCwweEM1LDB4NTEsMHgwMiwweDMxLDB4QUQsMHhB
RCwweDBCLDB4MEIsCisgICAgMHgyNywweDYyLDB4QTUsMHg1MSwweDJELDB4MEYsMHhBRiwweEFB
LDB4NjgsMHg2QSwweDA3LDB4NUEsMHgyOSwweDlGLDB4QjcsMHhGNSwKKyAgICAweDg4LDB4NkEs
MHg0OCwweDZBLDB4MEMsMHhBMiwweDZELDB4RDUsMHhDOSwweDdBLDB4NjgsMHg2QSwweEVFLDB4
M0UsMHgwOSwweEFELAorICAgIDB4QzksMHg3MiwweDg5LDB4NzIsMHhEOSwweEY1LDB4MzYsMHgw
QSwweEM5LDB4N0EsMHg4OCwweDcyLDB4RkUsMHgwRSwweEVBLDB4MkIsCisgICAgMHhFOSwweDdB
LDB4QTksMHg3MiwweEVCLDB4RTcsMHg5NywweEQ2LDB4QzksMHg3QSwweEE5LDB4NzIsMHhDQyww
eEMyLDB4ODgsMHgyNCwKKyAgICAweDBBLDB4ODMsMHhBOCwweDcyLDB4QUQsMHhCOSwweDBCLDB4
MkEsMHgwQSwweDgzLDB4QzksMHg3QSwweDNCLDB4NkEsMHhGRSwweEFFLAorICAgIDB4MEEsMHg4
MywweEE5LDB4N0EsMHhEQSwweEZCLDB4QUEsMHgwOCwweEVBLDB4N0EsMHhBOSwweDdBLDB4MjEs
MHgwMCwweDhBLDB4NDQsCisgICAgMHgyQiwweDgzLDB4QzksMHg3QSwweDI3LDB4RDcsMHhGRiww
eDdELDB4MkEsMHg4MywweEE5LDB4NzIsMHhFOCwweDhBLDB4M0EsMHhGRiwKKyAgICAweDJBLDB4
ODMsMHhFOSwweDdBLDB4MDksMHgzRCwweDJFLDB4MjcsMHgyQSwweDgzLDB4RTksMHg3QSwweDAw
LDB4RTAsMHg3RSwweDVBLAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHg1NCwweDdGLDB4REUs
MHgzNSwweDAzLDB4MzksMHhDMiwweDM4LDB4QjcsMHhCQSwweEE5LDB4QkIsCisgICAgMHgyMyww
eDQxLDB4QzIsMHgzOCwweEY5LDB4OEIsMHhGQSwweEZGLDB4MDMsMHg0MSwweEMyLDB4MzgsMHhG
RSwweEVDLDB4NjgsMHhCRSwKKyAgICAweDAyLDB4MzksMHhBMSwweDMwLDB4QkUsMHhGQSwweDM3
LDB4RUYsMHgwMiwweDM5LDB4QzIsMHgzOCwweEJFLDB4RjYsMHhFRiwweDNELAorICAgIDB4RTIs
MHgzOCwweEMyLDB4MzgsMHgyMywweEVCLDB4QzQsMHhDOCwweEUyLDB4MzgsMHhDMiwweDM4LDB4
MkEsMHhEOCwweDdCLDB4N0MsCisgICAgMHgwMywweDM5LDB4QzIsMHgzOCwweEVCLDB4RkYsMHhC
RiwweEJBLDB4MDMsMHgzOSwweEMyLDB4MzgsMHhFRSwweDdFLDB4N0YsMHhGRiwKKyAgICAweEUy
LDB4MzgsMHhDMiwweDMwLDB4NkMsMHhGQywweDdCLDB4RkYsMHgyNSwweDYyLDB4QzIsMHgzOCww
eDNELDB4MzUsMHg5NSwweDk1LAorICAgIDB4NjYsMHg2QSwweEE0LDB4NTEsMHhGOCwweDc4LDB4
NzgsMHg1RSwweDg0LDB4NTEsMHhFMiwweDMwLDB4N0EsMHg3QSwweDcwLDB4NzgsCisgICAgMHgy
MywweDM5LDB4QzIsMHgzMCwweERGLDB4RkYsMHg5QiwweEZBLDB4MDMsMHgzMSwweEMyLDB4Mjgs
MHhGQSwweEVBLDB4QUIsMHg3RiwKKyAgICAweEUzLDB4MzAsMHhDMiwweDI4LDB4QkEsMHgzNCww
eDI0LDB4RjcsMHgwMywweDM5LDB4QzIsMHgyOCwweEEyLDB4NUEsMHhGRiwweEFGLAorICAgIDB4
MDMsMHgzMSwweEMyLDB4MzAsMHg0QiwweEVBLDB4RUIsMHhBMiwweDAzLDB4MzksMHhDMiwweDI4
LDB4RUYsMHg4RiwweDhCLDB4QUEsCisgICAgMHgwMywweDMxLDB4QzIsMHgzMCwweDgzLDB4QTIs
MHhBQSwweEJGLDB4MDMsMHgzOSwweEUzLDB4MzAsMHhFQiwweDVDLDB4RkYsMHgzOSwKKyAgICAw
eDI0LDB4MzksMHhDMiwweDMwLDB4QUMsMHhCRiwweEZGLDB4REEsMHgyMywweDM5LDB4QzIsMHgz
MCwweEEyLDB4QUEsMHhBRSwweEU3LAorICAgIDB4MjMsMHgzOSwweEUzLDB4MzAsMHg4OCwweDJB
LDB4QUUsMHg2RCwweDI0LDB4MzksMHgwMywweDM5LDB4NDIsMHgwMywweDYzLDB4N0QsCisgICAg
MHgyMywweDM5LDB4MDMsMHgzOSwweDc2LDB4NUUsMHg3NywweDU3LDB4MjMsMHgzOSwweEUzLDB4
MzgsMHhCRiwweDM3LDB4MjYsMHhCRSwKKyAgICAweDIzLDB4MzksMHhFMywweDMwLDB4RDcsMHhF
NiwweDc2LDB4RTgsMHg0NCwweDM5LDB4RTMsMHgzMCwweDdGLDB4NUQsMHhFRiwweDI5LAorICAg
IDB4MjQsMHgzOSwweEUyLDB4MzAsMHg4QSwweEUyLDB4RjcsMHhERSwweDI0LDB4MzksMHhFMiww
eDMwLDB4RkYsMHg3RSwweEUzLDB4ODgsCisgICAgMHgyMywweDM5LDB4QzIsMHgzMCwweEFBLDB4
OUEsMHhCOCwweDAwLDB4MjQsMHgzOSwweEUzLDB4MzAsMHg1RiwweDdDLDB4RjMsMHhFQSwKKyAg
ICAweDI0LDB4MzksMHhDMiwweDI4LDB4NTUsMHhGRiwweEZBLDB4RTgsMHgwMywweDMxLDB4QzIs
MHgyOCwweDZELDB4RUEsMHg4QiwweENBLAorICAgIDB4QTIsMHgzMCwweEUyLDB4MjgsMHhCRiww
eEZCLDB4REQsMHg3NywweEUzLDB4MjgsMHhBMiwweDIwLDB4RjcsMHg3QiwweEFCLDB4MDAsCisg
ICAgMHhFMywweDI4LDB4ODIsMHgyMCwweDU3LDB4RkUsMHhBRiwweEEwLDB4QzMsMHgyOCwweDgx
LDB4MjAsMHg5NSwweDdGLDB4RUEsMHgwMiwKKyAgICAweEMyLDB4MjgsMHg4MiwweDIwLDB4MkYs
MHhCNSwweEQ1LDB4QkEsMHgwMywweDMxLDB4ODIsMHgyMCwweDhBLDB4M0YsMHg3RCwweEY3LAor
ICAgIDB4RTMsMHgzMCwweDgxLDB4MjAsMHgyMCwweEVFLDB4RjcsMHg5RCwweDQ0LDB4MzksMHhB
MiwweDI4LDB4MEIsMHhBQiwweEJELDB4RjUsCisgICAgMHgwMywweDM5LDB4QzIsMHgyOCwweDc4
LDB4RDYsMHhENiwweERGLDB4MjMsMHgzOSwweEUyLDB4MzAsMHg1RCwweEY1LDB4QjUsMHgyRCwK
KyAgICAweEU2LDB4NTEsMHgwMywweDMxLDB4OTUsMHhCNSwweEFELDB4MkYsMHgwNiwweDVBLDB4
QTUsMHg1MSwweDM5LDB4QUYsMHhBQSwweDhBLAorICAgIDB4MjcsMHg2MiwweEM1LDB4NTEsMHhC
RiwweEFGLDB4QUQsMHgyNywweDY4LDB4NkEsMHgwNywweDYyLDB4NzUsMHhBRiwweDI5LDB4MkIs
CisgICAgMHhBOSwweDcyLDB4NjgsMHg2QSwweDdELDB4RkQsMHhCQSwweDhFLDB4QzksMHg3Miww
eDQ4LDB4NkEsMHgyRiwweEE3LDB4M0YsMHgyQSwKKyAgICAweEM5LDB4N0EsMHg2OCwweDZBLDB4
ODgsMHgyQiwweEJBLDB4N0UsMHhDOSwweDdBLDB4NjcsMHg2QSwweDhBLDB4RTgsMHhBMywweDlG
LAorICAgIDB4RUEsMHg3QSwweDg4LDB4NzIsMHhGRSwweDIyLDB4MkYsMHhCNywweEU5LDB4N0Es
MHhBOSwweDcyLDB4MkEsMHhGNywweDVDLDB4OEIsCisgICAgMHhFOSwweDdBLDB4QTksMHg3Miww
eEVFLDB4OEEsMHhFRCwweEQ3LDB4QzksMHg3QSwweDg4LDB4NzIsMHgzRSwweEJGLDB4REMsMHhD
MywKKyAgICAweDBCLDB4ODMsMHg4OCwweDcyLDB4OEEsMHhGRSwweDdCLDB4N0IsMHhFQSwweDdB
LDB4QTksMHg3MiwweDZFLDB4QUEsMHg4RCwweDY5LAorICAgIDB4RUEsMHg3QSwweEE5LDB4NzIs
MHgwMiwweDAyLDB4NkIsMHhGRCwweDBBLDB4ODMsMHhBOSwweDcyLDB4QUEsMHgwMiwweDBELDB4
RkUsCisgICAgMHgyQSwweDgzLDB4QTgsMHg3MiwweEFCLDB4QUIsMHhBRSwweDNELDB4MEEsMHg4
MywweEU5LDB4N0EsMHgyOCwweENCLDB4QUEsMHg5QywKKyAgICAweDAzLDB4MzksMHhDMiwweDM4
LDB4QUYsMHgyRiwweDM3LDB4QUIsMHgwMywweDQxLDB4QzIsMHgzOCwweEZGLDB4RTMsMHhFRiww
eEZBLAorICAgIDB4MjIsMHgzOSwweEMyLDB4MzgsMHhENywweERCLDB4RkYsMHg3NywweDAzLDB4
NDEsMHhDMiwweDM4LDB4REUsMHhBRSwweEI3LDB4QUYsCisgICAgMHgwMywweDQxLDB4QzIsMHgz
OCwweERDLDB4RjgsMHg3RSwweERFLDB4MDIsMHgzOSwweEMyLDB4MzgsMHhGQSwweDlELDB4QTks
MHhFRiwKKyAgICAweEUyLDB4MzgsMHhDMiwweDM4LDB4QzAsMHgwRiwweENBLDB4NDMsMHgwMyww
eDQxLDB4QzIsMHgzOCwweDZFLDB4M0YsMHhERiwweEVCLAorICAgIDB4MDIsMHgzOSwweEExLDB4
MzAsMHhBRSwweEI0LDB4QkEsMHhCQiwweDAyLDB4NDEsMHhBMiwweDMwLDB4REYsMHhBRiwweDNC
LDB4MkIsCisgICAgMHgwMywweDQxLDB4QTEsMHgzMCwweEZFLDB4RkUsMHhGOCwweDdFLDB4MjMs
MHg0OSwweEExLDB4MzAsMHgzNywweEI1LDB4OTUsMHgzRCwKKyAgICAweDQ3LDB4NkEsMHhBNCww
eDUxLDB4RkUsMHg3RiwweDdELDB4RjgsMHhBNCwweDUxLDB4RTIsMHgzMCwweEQ4LDB4NzgsMHg3
MCwweDcwLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBOCwweDA4LDB4MkYsMHhBQSwweDAz
LDB4MzEsMHhBMywweDMwLDB4QUUsMHg4OCwweDg4LDB4MEEsCisgICAgMHgyMywweDMxLDB4QzIs
MHgzMCwweDc1LDB4QjcsMHg3RiwweEY3LDB4MDMsMHgzMSwweEMyLDB4MjgsMHhGRiwweDhCLDB4
RkIsMHhEQSwKKyAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4OEEsMHg4NywweEVELDB4Q0EsMHgw
MywweDMxLDB4QTIsMHgzMCwweDJBLDB4MkEsMHhBMiwweEFFLAorICAgIDB4MDMsMHgzMSwweEEy
LDB4MzAsMHgyQSwweDg4LDB4MjgsMHgzQSwweDAzLDB4MzEsMHhDMiwweDI4LDB4QUUsMHhFQiww
eEYyLDB4RjIsCisgICAgMHgwMywweDM5LDB4RTMsMHgzMCwweDNELDB4N0QsMHg1QSwweEQ3LDB4
MjMsMHgzOSwweEUzLDB4MzAsMHhFNywweEFGLDB4QUYsMHhENSwKKyAgICAweDIzLDB4MzksMHhF
MywweDMwLDB4ODMsMHhBRCwweDdFLDB4NUYsMHgyMywweDM5LDB4RTMsMHgzMCwweDNBLDB4QkYs
MHhBQiwweEZELAorICAgIDB4MjMsMHgzOSwweEUzLDB4MzgsMHhENywweDg3LDB4REYsMHhGNyww
eDI0LDB4NDEsMHhFMywweDM4LDB4Q0QsMHgyNywweEU5LDB4RTUsCisgICAgMHg0NCwweDQxLDB4
RTMsMHgzOCwweDdBLDB4RjQsMHhEQiwweDc3LDB4MjMsMHgzOSwweDAzLDB4MzksMHgyOSwweERG
LDB4NTcsMHg1NSwKKyAgICAweDI0LDB4NDEsMHhFMywweDMwLDB4RkEsMHhEQSwweDNBLDB4QjIs
MHgyMywweDM5LDB4RTMsMHgzMCwweDVFLDB4RDcsMHhGQSwweEZBLAorICAgIDB4NDQsMHg0MSww
eEMzLDB4MzAsMHhBMiwweEY3LDB4RkYsMHhGRSwweDI0LDB4MzksMHhFMywweDMwLDB4QUUsMHhF
QSwweDJELDB4RUUsCisgICAgMHgyMywweDM5LDB4RTMsMHgzMCwweDZFLDB4RkUsMHhCQSwweDJC
LDB4MjQsMHgzOSwweEUyLDB4MzAsMHg3QSwweERCLDB4RkUsMHhCOCwKKyAgICAweDIzLDB4MzEs
MHhFMywweDMwLDB4NUIsMHhEQywweERFLDB4N0EsMHgwMywweDM5LDB4RTMsMHgyOCwweDdGLDB4
RkYsMHhGOCwweDA4LAorICAgIDB4MjQsMHgzOSwweEMzLDB4MjgsMHg1NywweDVGLDB4NUEsMHhF
OCwweDAzLDB4MzEsMHhDMywweDI4LDB4NzcsMHg3RCwweDJBLDB4MDgsCisgICAgMHgwMywweDMx
LDB4QTIsMHgyOCwweDdELDB4RkQsMHhGQSwweDg4LDB4MDMsMHgzMSwweEMzLDB4MjgsMHg1Nyww
eDlGLDB4QUEsMHgwMiwKKyAgICAweDIzLDB4MzEsMHhBMiwweDI4LDB4REQsMHhFRiwweEFBLDB4
QUEsMHgyNCwweDM5LDB4QTIsMHgyOCwweEJELDB4QkIsMHhBMiwweDA4LAorICAgIDB4MjMsMHgz
OSwweEUzLDB4MzAsMHhGNywweERGLDB4QkEsMHgwQSwweEE1LDB4NDksMHgwMywweDMxLDB4QkQs
MHhCNSwweEI5LDB4MEYsCisgICAgMHgyNywweDYyLDB4QTUsMHg0OSwweEY1LDB4QUQsMHg4RCww
eDJGLDB4MjYsMHg2MiwweEU2LDB4NTksMHhENSwweEJELDB4OEEsMHgzNiwKKyAgICAweDQ3LDB4
NjIsMHhFNiwweDU5LDB4ODUsMHhCRiwweEJGLDB4MUUsMHg4OSwweDcyLDB4MjcsMHg2MiwweDhE
LDB4MjksMHgyRiwweEFGLAorICAgIDB4QTksMHg3MiwweDQ4LDB4NkEsMHg4QiwweDhFLDB4Nzcs
MHg3NywweEM5LDB4NzIsMHg2OCwweDZBLDB4MjAsMHhBQSwweEJELDB4RDUsCisgICAgMHhDOSww
eDdBLDB4NjcsMHg2QSwweEZFLDB4MjIsMHhBQiwweEY2LDB4QzksMHg3QSwweDg4LDB4NzIsMHg1
RSwweDJGLDB4NTgsMHg3NywKKyAgICAweEM5LDB4N0EsMHg4OCwweDcyLDB4MjEsMHhFRSwweEVB
LDB4MkIsMHhFOSwweDdBLDB4ODgsMHg3MiwweEJBLDB4QjIsMHhCQSwweDdFLAorICAgIDB4RTks
MHg3QSwweEE5LDB4NzIsMHhFQSwweDhFLDB4QkUsMHhCNywweEU5LDB4N0EsMHhBOCwweDcyLDB4
ODksMHhBRiwweEI4LDB4QkEsCisgICAgMHgwQSwweDdCLDB4QTksMHg3MiwweEQ3LDB4RjUsMHhE
RiwweEUzLDB4MEEsMHg3QiwweEE5LDB4NzIsMHhBOSwweEEyLDB4RkYsMHhGNywKKyAgICAweEVB
LDB4N0EsMHg4OSwweDcyLDB4OUYsMHhGMiwweEU4LDB4M0EsMHhFQSwweDdBLDB4QTksMHg3Miww
eDM4LDB4RUYsMHg3RSwweDhCLAorICAgIDB4RUEsMHg3QSwweEE5LDB4NzIsMHgzRCwweEJBLDB4
MDAsMHgwQiwweDBBLDB4N0IsMHhDOSwweDdBLDB4QTAsMHhFOSwweDI1LDB4OEIsCisgICAgMHgw
MywweDQxLDB4QzIsMHgzOCwweEFBLDB4REIsMHhCQSwweEFGLDB4MDMsMHg0MSwweEUyLDB4Mzgs
MHhENiwweDVCLDB4N0QsMHg2QiwKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4REUsMHg4Riww
eDhFLDB4RUIsMHgwMywweDQxLDB4QzIsMHgzOCwweEVELDB4REYsMHhEQSwweEFBLAorICAgIDB4
MDMsMHg0MSwweEEyLDB4MzAsMHhBRSwweDJBLDB4RUYsMHhEQSwweDIzLDB4MzksMHhDMiwweDM4
LDB4N0YsMHhGRiwweDlELDB4RkYsCisgICAgMHgyMywweDM5LDB4QzIsMHgzOCwweDU3LDB4RkYs
MHhGNSwweEZCLDB4RTIsMHgzOCwweEMyLDB4MzgsMHgwMCwweEU4LDB4RDgsMHhFMCwKKyAgICAw
eEUyLDB4MzgsMHhDMiwweDM4LDB4QUUsMHhDOCwweEJGLDB4QjcsMHhFMiwweDM4LDB4QzIsMHgz
OCwweEVBLDB4MEYsMHg4QSwweDRDLAorICAgIDB4RTIsMHgzOCwweDgxLDB4MzAsMHhFOCwweEY4
LDB4OUUsMHhBQiwweDY3LDB4NkEsMHhDMiwweDMwLDB4RjUsMHhCNSwweDM1LDB4MzUsCisgICAg
MHhFOCwweDdBLDB4QTUsMHg1OSwweEZBLDB4RjgsMHhFOCwweDcwLDB4QzUsMHg1OSwweEUyLDB4
MzAsMHg1OCwweDc4LDB4RkEsMHg3RiwKKyAgICAweDAzLDB4MzksMHhFMiwweDMwLDB4NUMsMHg3
QywweDVBLDB4NUYsMHgwMywweDMxLDB4RTMsMHgzMCwweDJDLDB4NUQsMHg2NSwweEZELAorICAg
IDB4MDMsMHgzMSwweEUzLDB4MzAsMHg0RCwweDQ3LDB4NjksMHhDRCwweDAzLDB4MzEsMHhFMyww
eDMwLDB4NTksMHg3RCwweDFELDB4NkQsCisgICAgMHhFMywweDMwLDB4QzIsMHgzMCwweDIyLDB4
ODIsMHgzQSwweEEzLDB4MDMsMHgzMSwweEMyLDB4MzAsMHgyRiwweDNGLDB4QkYsMHhGRiwKKyAg
ICAweDAzLDB4MzEsMHhDMiwweDI4LDB4RUUsMHhGRiwweEVBLDB4RUUsMHgwMywweDMxLDB4QzIs
MHgzMCwweDlGLDB4RUEsMHhGRSwweDJCLAorICAgIDB4MDMsMHgzMSwweEEyLDB4MzAsMHgyQSww
eEFBLDB4RTYsMHhCRSwweDAzLDB4MzEsMHhDMiwweDMwLDB4QUEsMHhFQSwweEZCLDB4RkYsCisg
ICAgMHgwMywweDMxLDB4QzIsMHgzMCwweEJFLDB4RkEsMHgwQiwweEY1LDB4MDMsMHgzOSwweEUz
LDB4MzAsMHg4RCwweEFCLDB4REEsMHhFRCwKKyAgICAweDAzLDB4MzksMHhFMiwweDMwLDB4QUEs
MHhERiwweEEyLDB4QjcsMHgwMywweDM5LDB4QzIsMHgzMCwweDg3LDB4QjUsMHgzRSwweEYyLAor
ICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHhGRiwweDU3LDB4RUEsMHhDRiwweEUzLDB4MzgsMHgw
MywweDMxLDB4RkUsMHhBRSwweEE3LDB4RjcsCisgICAgMHgyMywweDM5LDB4RTMsMHgzMCwweEVC
LDB4QjksMHhCMywweEY5LDB4MjQsMHgzOSwweEUzLDB4MzgsMHhGRCwweEJELDB4RjIsMHhBNiwK
KyAgICAweDI0LDB4MzksMHhFMywweDM4LDB4RkEsMHhCQywweEFGLDB4QkUsMHgyNCwweDM5LDB4
RTMsMHgzOCwweDZCLDB4QUYsMHhBRiwweEE4LAorICAgIDB4MjQsMHgzOSwweEMyLDB4MzAsMHgy
QiwweDhBLDB4RkEsMHhFQSwweDIzLDB4MzksMHhFMiwweDMwLDB4MDAsMHgxQiwweERGLDB4RkUs
CisgICAgMHg0NCwweDM5LDB4MDMsMHgzMSwweEYzLDB4QUIsMHhBNSwweDk3LDB4NjUsMHg0MSww
eDAzLDB4MzEsMHg1NSwweEZFLDB4RkUsMHhFQSwKKyAgICAweDQ0LDB4MzksMHgwMywweDM5LDB4
NUYsMHhGMiwweEVBLDB4RUEsMHgyNCwweDM5LDB4RTMsMHgzMCwweEU1LDB4RUEsMHgyQSwweDAy
LAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHhGRiwweEJCLDB4ODAsMHgyMCwweDI0LDB4NDEs
MHgwMywweDMxLDB4RkQsMHg3RCwweEZFLDB4QUMsCisgICAgMHg0NCwweDQxLDB4RTMsMHgzMCww
eEY1LDB4RUUsMHhBRiwweDJBLDB4NjQsMHg0MSwweDA0LDB4MzksMHhGNSwweDU1LDB4REYsMHgy
QSwKKyAgICAweEM1LDB4NTEsMHgyNCwweDM5LDB4NTUsMHhGNSwweEQ1LDB4MkYsMHgwNiwweDVB
LDB4NjUsMHg0MSwweDk1LDB4QTUsMHhBQiwweDAwLAorICAgIDB4MDcsMHg1QSwweEM2LDB4NTks
MHg3RiwweENCLDB4MkIsMHhBMCwweDQ3LDB4NkEsMHhDNiwweDU5LDB4QkUsMHhBRCwweEFCLDB4
MDAsCisgICAgMHg2OCwweDZBLDB4MDYsMHg1QSwweEI3LDB4QTgsMHhBOCwweEJFLDB4ODgsMHg2
QSwweDQ3LDB4NjIsMHhBOSwweEVELDB4M0EsMHg4QSwKKyAgICAweDg4LDB4NkEsMHg0OCwweDZB
LDB4QkMsMHg3NCwweEFFLDB4MzgsMHhBOSwweDcyLDB4NjgsMHg2QSwweDU1LDB4QTUsMHgzNyww
eENFLAorICAgIDB4QTksMHg3MiwweDY4LDB4NkEsMHg2RSwweERGLDB4RkIsMHgwRiwweEE4LDB4
NzIsMHg2OCwweDZBLDB4MkEsMHgwMCwweDAxLDB4MDMsCisgICAgMHhDOSwweDdBLDB4ODgsMHg2
QSwweEJFLDB4QUMsMHgzRSwweEE5LDB4Q0EsMHg3MiwweDY4LDB4NkEsMHhBQiwweEU3LDB4QUUs
MHhBQiwKKyAgICAweEVBLDB4N0EsMHg4OCwweDZBLDB4N0UsMHg3QiwweERCLDB4RkEsMHhFOSww
eDdBLDB4ODgsMHg2QSwweEVBLDB4MEIsMHhGNywweEZELAorICAgIDB4RTksMHg3MiwweDg4LDB4
NkEsMHgwRiwweEFDLDB4RUIsMHhFRiwweEVBLDB4N0EsMHg4OCwweDcyLDB4OEEsMHgzRSwweDBE
LDB4QkEsCisgICAgMHhFQSwweDdBLDB4QTgsMHg3MiwweDA5LDB4NTksMHhBQSwweDAyLDB4MEEs
MHg3QiwweEE5LDB4NzIsMHhCRiwweEFGLDB4RkQsMHhEQywKKyAgICAweDBBLDB4N0IsMHhBOSww
eDcyLDB4M0EsMHgwMiwweEFCLDB4QjcsMHgwQSwweDdCLDB4QTksMHg3MiwweDlFLDB4QUYsMHhB
RSwweDIyLAorICAgIDB4MDIsMHgzOSwweEMyLDB4MzgsMHhCNiwweEE0LDB4RUYsMHhDRSwweDAz
LDB4NDEsMHhDMiwweDM4LDB4QUEsMHhFQiwweEZGLDB4NTcsCisgICAgMHgwMywweDM5LDB4QzIs
MHgzOCwweDBFLDB4QUUsMHhFRiwweEU5LDB4MDMsMHgzOSwweEExLDB4MzAsMHhBRSwweEE4LDB4
QUUsMHhGNSwKKyAgICAweEUyLDB4MzgsMHhDMiwweDM4LDB4RDMsMHgwRCwweDBCLDB4MjgsMHhF
MiwweDM4LDB4QzIsMHgzMCwweEY4LDB4MkUsMHgwNCwweDI3LAorICAgIDB4MDIsMHg0MSwweEMy
LDB4MzgsMHhFQiwweDZBLDB4RkUsMHhFRiwweEUyLDB4MzgsMHhDMiwweDM4LDB4QUIsMHhFRSww
eDM1LDB4Q0UsCisgICAgMHhFMiwweDM4LDB4QTEsMHgzMCwweDA4LDB4ODIsMHg2MCwweDZBLDB4
RTIsMHgzOCwweEEyLDB4MzAsMHg3QSwweDdFLDB4RkUsMHg5RiwKKyAgICAweEUyLDB4MzgsMHhB
MiwweDMwLDB4MDksMHhBMiwweDgwLDB4ODgsMHg0NiwweDZBLDB4QzIsMHgzMCwweDM1LDB4OTUs
MHg1NSwweDU1LAorICAgIDB4QTcsMHg3MiwweEMzLDB4MzgsMHhFOCwweEZGLDB4NUQsMHg1NSww
eDI0LDB4NDEsMHhDMiwweDMwLDB4RUEsMHhFOCwweEFFLDB4QTUsCisgICAgMHgwMywweDM5LDB4
QzIsMHgzMCwweEEyLDB4RTgsMHhCQywweEZGLDB4MDMsMHgzMSwweEEyLDB4MzAsMHgyQSwweDg4
LDB4Q0EsMHgyQSwKKyAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4QkUsMHhCQSwweEZBLDB4RkYs
MHgwMywweDMxLDB4QzIsMHgzMCwweEUzLDB4QkUsMHg4QSwweEZBLAorICAgIDB4RTMsMHgzMCww
eEMyLDB4MjgsMHhFOSwweDAwLDB4QUEsMHhBQiwweEUzLDB4MzAsMHhDMiwweDI4LDB4MkQsMHhB
OCwweDAyLDB4OEMsCisgICAgMHgwMywweDMxLDB4QzIsMHgyOCwweEJBLDB4MjcsMHgwNywweEVF
LDB4MjMsMHgzOSwweEMzLDB4MzAsMHhFRiwweEJGLDB4QUYsMHhEOCwKKyAgICAweDAzLDB4Mzks
MHhDMiwweDI4LDB4REUsMHhCQywweEFBLDB4RUUsMHhBMiwweDM4LDB4MDMsMHgzMSwweERGLDB4
NzYsMHg3RiwweEZGLAorICAgIDB4MDIsMHgzOSwweEMzLDB4MzAsMHhCNywweDdGLDB4RUEsMHhG
QiwweDI0LDB4MzksMHhDMiwweDI4LDB4QkYsMHhCRCwweDNGLDB4QkQsCisgICAgMHgwMywweDM5
LDB4QzIsMHgyOCwweEE3LDB4RkMsMHhFMywweDhBLDB4MDMsMHgzMSwweEUzLDB4MzAsMHhGQiww
eERGLDB4NzcsMHg5NSwKKyAgICAweEMzLDB4MzgsMHgwMywweDMxLDB4REYsMHg1NywweDVGLDB4
RTksMHgyNCwweDM5LDB4RTMsMHgzMCwweEFGLDB4MkUsMHhCRiwweEQ3LAorICAgIDB4MjQsMHgz
OSwweEUzLDB4MzAsMHhGNSwweEVFLDB4QUYsMHgyRSwweDI0LDB4MzksMHhFMywweDM4LDB4QkYs
MHhFQSwweEJDLDB4QkEsCisgICAgMHgyNCwweDM5LDB4RTMsMHgzOCwweEFGLDB4QUUsMHg5Riww
eEJBLDB4MjQsMHgzOSwweEUzLDB4MzgsMHhFRiwweDJCLDB4Q0UsMHhBNywKKyAgICAweDI0LDB4
NDEsMHgwMywweDMxLDB4OUEsMHg3QSwweEZFLDB4QTMsMHg0NSwweDM5LDB4MDMsMHgzOSwweEY3
LDB4NUQsMHhCNiwweDk3LAorICAgIDB4MjMsMHgzOSwweDAzLDB4MzksMHgyMywweEIyLDB4QTgs
MHgwRCwweDY0LDB4NDEsMHgwMywweDM5LDB4RkQsMHg1NSwweDU1LDB4NzMsCisgICAgMHg0NCww
eDQxLDB4RTMsMHgzMCwweDIyLDB4QTUsMHhCNywweEFBLDB4ODUsMHg0MSwweEUzLDB4MzgsMHhF
QSwweEFBLDB4MEIsMHhBRCwKKyAgICAweDg1LDB4NDksMHgyNCwweDM5LDB4RDUsMHgyRiwweDhB
LDB4MjAsMHhBNiwweDUxLDB4MjQsMHgzOSwweEQ1LDB4QUUsMHgwQiwweEFFLAorICAgIDB4QTUs
MHg1MSwweDI0LDB4MzksMHhCNywweEFFLDB4MDAsMHgwQSwweEM2LDB4NTEsMHg0NCwweDQxLDB4
REQsMHhCRiwweDJCLDB4MEEsCisgICAgMHgyNywweDYyLDB4ODUsMHg0OSwweEFELDB4QkYsMHg4
OSwweDBBLDB4MjcsMHg2MiwweEU2LDB4NTksMHhCOCwweDI5LDB4MDMsMHhBQSwKKyAgICAweDQ4
LDB4NkEsMHgwNiwweDYyLDB4NUYsMHg5OSwweDNFLDB4MjIsMHg2NywweDZBLDB4MDYsMHg1QSww
eDhFLDB4QTMsMHhCQiwweDlFLAorICAgIDB4NjgsMHg2QSwweDA2LDB4NjIsMHhBQSwweDI2LDB4
MkEsMHhBQSwweEE4LDB4NkEsMHg0NywweDYyLDB4MkYsMHhCMiwweEJBLDB4REIsCisgICAgMHhB
OSwweDcyLDB4MjcsMHg2MiwweEY4LDB4QUEsMHhGNiwweDdGLDB4QTgsMHg3MiwweDY4LDB4NkEs
MHgwNSwweDBELDB4MEUsMHhGOSwKKyAgICAweEVBLDB4N0EsMHg4OCwweDZBLDB4RjUsMHg3RCww
eEZCLDB4OEQsMHhDOSwweDcyLDB4ODgsMHg3MiwweDk4LDB4RkYsMHhENiwweEJFLAorICAgIDB4
QTgsMHg3MiwweDY4LDB4NkEsMHhFMCwweEY4LDB4RUEsMHhFMCwweEE5LDB4NzIsMHg2OCwweDZB
LDB4QUEsMHhFQSwweDc1LDB4N0QsCisgICAgMHhDOSwweDcyLDB4NjgsMHg2QSwweEFBLDB4QkIs
MHhBQiwweDdELDB4RTksMHg3QSwweDg5LDB4NkEsMHhBRCwweEZGLDB4RkIsMHgyRiwKKyAgICAw
eEM5LDB4NzIsMHg4OCwweDcyLDB4QkMsMHgyNCwweDJCLDB4MEIsMHhDOSwweDdBLDB4NjcsMHg2
QSwweEFCLDB4RjIsMHhGQywweEQ4LAorICAgIDB4QzksMHg3MiwweDg4LDB4NkEsMHg4MCwweDI5
LDB4OUQsMHhFRiwweEVBLDB4NzIsMHg4OCwweDZBLDB4RDIsMHhCRSwweEJFLDB4QkUsCisgICAg
MHhFQSwweDdBLDB4ODgsMHg3MiwweDI5LDB4QUYsMHg5RSwweEYwLDB4RTksMHg3QSwweEE5LDB4
NzIsMHg4MCwweEUyLDB4MjAsMHhCRCwKK307CisKK3N0YXRpYyBjb25zdCBzaXplX3QgcGl4ZWxf
Ml93aWR0aCA9IDEyODsKK3N0YXRpYyBjb25zdCBzaXplX3QgcGl4ZWxfMl9oZWlnaHQgPSAxMjg7
CitzdGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVsXzJfc2l6ZSA9IDgxOTI7CitzdGF0aWMgY29uc3Qg
dW5zaWduZWQgY2hhciBwaXhlbF8yX2RhdGFbODE5Ml0gPQoreworICAgIDB4ODcsMHg2MiwweDIz
LDB4NDEsMHg3RiwweEUzLDB4QUQsMHhGRiwweEU1LDB4NTEsMHhFMiwweDMwLDB4RUUsMHgzQSww
eDY4LDB4QkEsCisgICAgMHhFNiwweDUxLDB4MDIsMHgzMSwweEE2LDB4QkUsMHhFMywweERCLDB4
MDYsMHg1MiwweDIzLDB4MzksMHhCNywweERGLDB4NzMsMHhERSwKKyAgICAweEU2LDB4NTEsMHgy
MywweDM5LDB4MzcsMHg3RiwweDczLDB4RDgsMHhFNiwweDUxLDB4MDIsMHgzOSwweDM3LDB4NUIs
MHhGQiwweEY4LAorICAgIDB4RTYsMHg1OSwweDQzLDB4NDEsMHgwRCwweEY5LDB4QkQsMHhBQyww
eEU1LDB4NTksMHgyMywweDM5LDB4QkUsMHg3MiwweERFLDB4NUMsCisgICAgMHhDNiwweDUxLDB4
MjMsMHgzOSwweEZGLDB4NzIsMHgxQywweEZDLDB4MjcsMHg1QSwweDI0LDB4MzksMHhENywweDdB
LDB4OUMsMHhGRiwKKyAgICAweEU2LDB4NTEsMHgwMywweDM5LDB4OUUsMHhGRSwweDNDLDB4RkEs
MHgyNiwweDUyLDB4NDQsMHg0MSwweDE3LDB4RjcsMHg5RiwweDczLAorICAgIDB4MjYsMHg1QSww
eDY0LDB4NDEsMHgxNywweEI1LDB4OTcsMHhFQiwweDI3LDB4NUEsMHg0NCwweDQxLDB4RjgsMHhC
RiwweEI2LDB4RDcsCisgICAgMHg0NywweDYyLDB4NDMsMHgzOSwweDJCLDB4MEIsMHgyRSwweDU3
LDB4NjYsMHg2MiwweDQzLDB4NDEsMHg4MiwweEYwLDB4NkEsMHg1NSwKKyAgICAweDQ2LDB4NjIs
MHg0MywweDQxLDB4MDAsMHgwQSwweEVCLDB4RDUsMHg2NywweDYyLDB4NDQsMHg0MSwweEY3LDB4
REMsMHg3RiwweDU3LAorICAgIDB4RTYsMHg1MSwweDQzLDB4MzksMHhDRCwweEY3LDB4RjgsMHhG
RCwweEM1LDB4NTEsMHgyMywweDM5LDB4QzEsMHhCRiwweDU3LDB4MEEsCisgICAgMHg0RSwweEE0
LDB4MDIsMHgzOSwweDNGLDB4RjUsMHg1NSwweEZGLDB4OTYsMHhFRSwweEU2LDB4NTksMHgwMCww
eDAzLDB4MEQsMHgwRCwKKyAgICAweEQ3LDB4RjYsMHg3NSwweEVFLDB4MkIsMHhDQSwweEQyLDB4
N0MsMHhGNywweEY2LDB4MzQsMHhFNiwweEFBLDB4QUEsMHg3QSwweDVGLAorICAgIDB4RDcsMHhG
NiwweDE0LDB4REUsMHgwMCwweDAwLDB4MEEsMHg5NSwweDE4LDB4RkYsMHg3NSwweEU2LDB4MEEs
MHhBMiwweEI3LDB4N0EsCisgICAgMHgxOCwweEZGLDB4OTYsMHhFNiwweEEwLDB4MEEsMHhBQSww
eEFELDB4MTgsMHhGNywweEQ3LDB4RjYsMHg3RSwweEVBLDB4QUIsMHg3QSwKKyAgICAweEQ3LDB4
RjYsMHhCNywweEVFLDB4MEEsMHhCRSwweDcwLDB4RTgsMHhENywweEY2LDB4QjIsMHhENSwweDY4
LDB4RTAsMHhDOCwweEE4LAorICAgIDB4MTQsMHhFNiwweDcxLDB4Q0QsMHg4MiwweDgxLDB4Mjks
MHgwRCwweDM0LDB4REUsMHhGMywweERELDB4NUYsMHg1RCwweERFLDB4NUEsCisgICAgMHhBOCww
eDcyLDB4NjMsMHg0MSwweEI3LDB4REYsMHg1RSwweDVDLDB4MjcsMHg1QSwweDQzLDB4MzksMHhG
RiwweEZDLDB4NTcsMHgwQiwKKyAgICAweEU2LDB4NTEsMHgyMywweDM5LDB4RkYsMHhGRSwweDc1
LDB4MDAsMHg2NywweDYyLDB4MDMsMHgzMSwweDdFLDB4NzIsMHg1NSwweEFBLAorICAgIDB4QzYs
MHg1MSwweDIzLDB4MzksMHg2MiwweEY5LDB4NTUsMHgwMCwweEM2LDB4NTEsMHgyMywweDM5LDB4
RkYsMHg1NSwweEY2LDB4MDAsCisgICAgMHhFNiwweDY5LDB4NDMsMHg0MSwweDJELDB4MjUsMHgw
OSwweDBBLDB4NjgsMHg3QSwweDAzLDB4MzksMHhGRSwweDVBLDB4QUEsMHgwQSwKKyAgICAweDBE
LDB4OUMsMHgyNCwweDM5LDB4NzUsMHg1NSwweDc3LDB4MDIsMHhBRiwweEFDLDB4MjMsMHgzOSww
eDU1LDB4NTUsMHhGRiwweDAwLAorICAgIDB4RDMsMHhENSwweDg1LDB4NDksMHg1NSwweDU1LDB4
NTUsMHgwMCwweDM1LDB4RTYsMHg2NCwweDQxLDB4NTUsMHg1NSwweEZGLDB4MDAsCisgICAgMHg5
NiwweEVFLDB4ODQsMHg0OSwweDU1LDB4NTUsMHhCRiwweDAwLDB4NzUsMHhFRSwweDg0LDB4NDks
MHg1NSwweDU1LDB4QUEsMHgwMCwKKyAgICAweEQ3LDB4RkUsMHhBNSwweDUxLDB4NTUsMHg1NSww
eEFBLDB4RTAsMHg1NSwweEVFLDB4RTYsMHg1OSwweDU1LDB4RDUsMHgwRiwweDI1LAorICAgIDB4
QjcsMHhGNiwweEU2LDB4NTksMHg1NSwweEZGLDB4MDAsMHgwMCwweEI2LDB4RUUsMHgwNiwweDVB
LDB4NTUsMHhBQiwweDAwLDB4MDAsCisgICAgMHhCNywweEY2LDB4MjYsMHg2MiwweDU1LDB4MkEs
MHgwMCwweDAwLDB4OTYsMHhFRSwweDg3LDB4NkEsMHg1NSwweDAwLDB4MDAsMHgwMCwKKyAgICAw
eEI2LDB4RUUsMHgyQSwweDgzLDB4RDUsMHgwMCwweDAwLDB4MDAsMHhCNiwweEY2LDB4OEUsMHhB
QywweDA5LDB4MDAsMHgwMCwweDAwLAorICAgIDB4QjYsMHhGNiwweDE0LDB4REUsMHhFOCwweDY4
LDB4RkEsMHhCNiwweEQ3LDB4RjYsMHgxNCwweERFLDB4RkQsMHgwRCwweDAyLDB4MDgsCisgICAg
MHhENywweEY2LDB4RjMsMHhENSwweDdBLDB4QUEsMHhBMCwweDAwLDB4RDcsMHhGNiwweEQzLDB4
RDUsMHgwRCwweEJFLDB4QTIsMHgwOCwKKyAgICAweDE4LDB4RjcsMHgzNSwweERFLDB4OUUsMHhG
QSwweDhCLDB4MkEsMHgxOCwweEY3LDB4OTYsMHhFRSwweDg4LDB4MjksMHhBQSwweEU4LAorICAg
IDB4MTgsMHhGNywweDk2LDB4RTYsMHhGRSwweEY4LDB4N0EsMHg3QSwweDc1LDB4RUUsMHhEMyww
eEQ1LDB4MDAsMHhBMCwweEFDLDB4RTYsCisgICAgMHgzNCwweEU2LDB4OTIsMHhDRCwweEE1LDB4
QTcsMHgzNiwweDI2LDB4MzQsMHhFNiwweEYzLDB4REQsMHhEQSwweEZFLDB4RDYsMHg1NiwKKyAg
ICAweDk2LDB4RUUsMHhFNSwweDUxLDB4NTYsMHhBOCwweDAwLDB4MDAsMHhCNiwweEVFLDB4MDYs
MHg1QSwweDU1LDB4QUEsMHgwMCwweDAwLAorICAgIDB4OTYsMHhFRSwweDQ3LDB4NjIsMHg1NSww
eDAyLDB4MDAsMHgwMCwweDc1LDB4RUUsMHhDOSwweDcyLDB4RDUsMHgwMCwweDAwLDB4MDAsCisg
ICAgMHg5NiwweEVFLDB4OEIsMHg5MywweEY1LDB4MDAsMHgwMCwweDAwLDB4QjYsMHhFRSwweDEw
LDB4QkQsMHhENSwweDAyLDB4MDAsMHgwMCwKKyAgICAweEQ3LDB4RjYsMHhFNSwweDY5LDB4NUEs
MHg1OCwweDU4LDB4NTgsMHgwQSwweDhCLDB4QzUsMHg2OSwweDNELDB4REQsMHhGNSwweEQ1LAor
ICAgIDB4OTYsMHhFRSwweDQ2LDB4NzIsMHgwMiwweDAzLDB4MDksMHgyNSwweEI2LDB4RjYsMHg5
NiwweEVFLDB4RjUsMHhBQSwweDgyLDB4MDIsCisgICAgMHhCNiwweEY2LDB4OTYsMHhFRSwweEFC
LDB4QUIsMHgwMiwweDIwLDB4QjYsMHhGNiwweEQ2LDB4RUUsMHgyMCwweEMwLDB4NjAsMHhGQywK
KyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4RjUsMHg4MiwweDAyLDB4MDAsMHhGNywweEY2LDB4
NzEsMHhDRCwweDAwLDB4MDAsMHg4MCwweDYwLAorICAgIDB4NTUsMHhFRSwweDg3LDB4N0EsMHg3
MCwweDU4LDB4NTYsMHg1NSwweEI3LDB4RjYsMHg0NiwweDcyLDB4MjUsMHgyNSwweDI1LDB4MEQs
CisgICAgMHhGOCwweEZFLDB4MTcsMHhGNywweEZBLDB4RkUsMHhGRiwweEY3LDB4RjcsMHhGNiww
eEQ3LDB4RjYsMHg3RSwweEZDLDB4RjgsMHg2MiwKKyAgICAweEQ3LDB4RjYsMHhGNywweEVFLDB4
MDAsMHgwMCwweDI4LDB4ODAsMHhENywweEY2LDB4RjcsMHhFRSwweDAwLDB4QTAsMHgwOCwweEE4
LAorICAgIDB4RjcsMHhGNiwweDk2LDB4RUUsMHgyQSwweDhBLDB4RTIsMHg3OCwweDk2LDB4RUUs
MHhGMywweERELDB4ODAsMHhFMCwweDcwLDB4NUMsCisgICAgMHhCNywweEY2LDB4RDIsMHhENSww
eEI3LDB4MjUsMHgwQiwweDAyLDB4RDcsMHhGNiwweDM0LDB4RTYsMHhCRCwweDU3LDB4QUEsMHgy
OCwKKyAgICAweEY4LDB4RjYsMHg1NSwweEU2LDB4MEEsMHgyRCwweEZCLDB4QUEsMHhGNywweEY2
LDB4QjcsMHhFRSwweEQ3LDB4N0UsMHg2QSwweDg5LAorICAgIDB4MTgsMHhGNywweEQ3LDB4RjYs
MHgzRiwweEE5LDB4MjksMHhGRiwweDM5LDB4RkYsMHhCNiwweEVFLDB4RTgsMHhGMiwweDYyLDB4
RUUsCisgICAgMHhENywweEY2LDB4MzQsMHhFNiwweEMwLDB4OEEsMHg2QiwweDZGLDB4MzQsMHhF
NiwweDEwLDB4QzUsMHg4QywweDA0LDB4QTYsMHgyNiwKKyAgICAweDc2LDB4RUUsMHhDRiwweEJD
LDB4QUUsMHgyQSwweDNFLDB4OUEsMHg5NiwweEVFLDB4RDMsMHhENSwweDdGLDB4N0EsMHhBOCww
eDJBLAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhGRCwweEY3LDB4RkYsMHhBRCwweEQ2LDB4
RjYsMHhCNiwweEVFLDB4RkIsMHhGQSwweEJBLDB4RTksCisgICAgMHhENiwweEY2LDB4QjYsMHhF
RSwweERGLDB4RUUsMHhCQiwweEZBLDB4QjUsMHhGNiwweDk2LDB4RUUsMHhENywweERELDB4QkUs
MHhGRSwKKyAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4MkYsMHgyNywweDJGLDB4MkYsMHhENyww
eEY2LDB4QjYsMHhFRSwweENBLDB4MDgsMHgwOCwweDgyLAorICAgIDB4OTUsMHhGNiwweEE1LDB4
NjEsMHg1OCwweDdDLDB4NUMsMHg1NCwweDA2LDB4NzIsMHg0NCwweDU5LDB4MkMsMHhCOCwweDdB
LDB4NzksCisgICAgMHg5MiwweEQ1LDB4ODQsMHg1OSwweDJELDB4QjUsMHhGNSwweEQ1LDB4RDYs
MHhGNiwweEVDLDB4QTMsMHgwMCwweDAwLDB4MDIsMHgwOSwKKyAgICAweEQ3LDB4RjYsMHhCNiww
eEY2LDB4NzcsMHhERSwweERFLDB4QjgsMHhENiwweEY2LDB4QjYsMHhGNiwweDBCLDB4MkQsMHgy
RSwweDA4LAorICAgIDB4RjcsMHhGNiwweDU1LDB4RUUsMHgwMCwweDAwLDB4ODAsMHg0MCwweDE3
LDB4RkYsMHg0NiwweDdBLDB4RTAsMHg3OCwweDVFLDB4NTcsCisgICAgMHg4NywweDhBLDB4MjYs
MHg3QSwweDBGLDB4MjcsMHhBOSwweEZCLDB4RjcsMHhGRSwweDg3LDB4ODIsMHgwRCwweDBELDB4
MDksMHgwOSwKKyAgICAweDE4LDB4RkYsMHgxNywweEY3LDB4RUUsMHhCQiwweEVFLDB4RUEsMHhG
NywweEY2LDB4RDcsMHhGNiwweEU4LDB4RTgsMHhFQSwweEVBLAorICAgIDB4RjcsMHhGNiwweEQ3
LDB4RjYsMHhGNSwweEQ3LDB4N0YsMHhFQiwweDE3LDB4RkYsMHhCNywweEVFLDB4QUYsMHhDQiww
eDZBLDB4NUEsCisgICAgMHhENiwweEY2LDB4RDMsMHhENSwweEEwLDB4QTgsMHhFOCwweDdBLDB4
RDcsMHhGNiwweDkyLDB4RDUsMHg5RSwweDI3LDB4MDksMHgwMiwKKyAgICAweEY3LDB4RjYsMHhC
NiwweEVFLDB4QkYsMHhBQSwweEVFLDB4RUEsMHhENywweEY2LDB4QjYsMHhFRSwweEQ4LDB4QUUs
MHg4QSwweEU4LAorICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHgxNSwweDU3LDB4NzcsMHhFRiww
eDM4LDB4RkYsMHhENywweEVFLDB4RUYsMHhBQiwweDJELDB4QjUsCisgICAgMHgzOSwweEZGLDB4
RDcsMHhGNiwweERGLDB4N0YsMHhERSwweDc4LDB4RjgsMHhGNiwweEI2LDB4RUUsMHhGOCwweEY4
LDB4RkUsMHhENywKKyAgICAweEI2LDB4RUUsMHhGMywweEQ1LDB4Q0UsMHg4RSwweDhDLDB4MjYs
MHhGMywweERELDB4MzAsMHhDNSwweDI0LDB4M0MsMHgyQSwweDNBLAorICAgIDB4OTYsMHhGNiww
eDMwLDB4QzUsMHgxRiwweDNELDB4MzUsMHgzNSwweEI2LDB4RjYsMHgzNCwweEU2LDB4REUsMHhE
QywweERDLDB4RkMsCisgICAgMHhCNiwweEY2LDB4RDYsMHhFRSwweEVCLDB4RkYsMHhGQiwweEZG
LDB4RDYsMHhGNiwweEI3LDB4RUUsMHhBQSwweDgyLDB4MEEsMHgyMiwKKyAgICAweEQ2LDB4RjYs
MHhCNiwweEVFLDB4RUEsMHhBRSwweEMwLDB4ODAsMHhENiwweEY2LDB4OTYsMHhFRSwweEZGLDB4
RkYsMHhCQiwweEJFLAorICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHhCNSwweEI1LDB4QkQsMHhB
NywweEQ2LDB4RjYsMHhGNywweEVFLDB4MDAsMHgwOCwweEEyLDB4QTgsCisgICAgMHg5NSwweEVF
LDB4NDMsMHg1MSwweDVDLDB4NUMsMHg1OCwweDUwLDB4ODUsMHg1OSwweEUyLDB4NDAsMHhDMiww
eEZFLDB4N0IsMHg3NiwKKyAgICAweDY3LDB4NzIsMHgwMywweDQxLDB4M0QsMHhBRCwweDI1LDB4
MjUsMHgzNCwweEU2LDB4MDksMHg4MywweDBELDB4RjUsMHg1NSwweDU1LAorICAgIDB4OTUsMHhF
RSwweEM4LDB4N0EsMHgwMCwweEJGLDB4RDUsMHg1NSwweEI2LDB4RjYsMHgwOSwweDhCLDB4MDAs
MHgyMiwweDdELDB4NTUsCisgICAgMHg3NiwweEY2LDB4NDYsMHg3MiwweDgwLDB4NjAsMHg1Riww
eDU1LDB4NjcsMHg4MiwweEU1LDB4NzEsMHgyQywweDBCLDB4RTcsMHhENywKKyAgICAweDI5LDB4
OUIsMHgyNiwweDgyLDB4RDcsMHhGNSwweEJELDB4MkQsMHhGNywweEZFLDB4NEIsMHhBMywweDAx
LDB4MDMsMHgwMiwweDAyLAorICAgIDB4MzgsMHhGRiwweDE4LDB4RjcsMHg3RSwweDZCLDB4N0Ys
MHhGRiwweDE3LDB4RjcsMHhENywweEY2LDB4RkYsMHhFRSwweEVFLDB4QTAsCisgICAgMHgxOCww
eEZGLDB4NzUsMHhFRSwweDJBLDB4ODIsMHhFMiwweDU4LDB4RjcsMHhGRSwweDU1LDB4RUUsMHhG
OCwweEVFLDB4NkUsMHg3RiwKKyAgICAweEQ3LDB4RjYsMHhGNCwweERELDB4QkUsMHgyNywweDA5
LDB4MDIsMHhGNywweEY2LDB4RDcsMHhGNiwweDdELDB4N0IsMHg1QSwweEVFLAorICAgIDB4RDcs
MHhGNiwweEI2LDB4RUUsMHgwMCwweEEwLDB4ODAsMHg4MCwweEQ3LDB4RjYsMHhCNiwweEVFLDB4
QUEsMHhBMCwweEU4LDB4QUEsCisgICAgMHhENywweEY2LDB4QjcsMHhFRSwweDgwLDB4MEIsMHhB
RiwweDBBLDB4RjgsMHhGNiwweEQ3LDB4RjYsMHgyRCwweDNELDB4MjUsMHhBQiwKKyAgICAweDM5
LDB4RkYsMHg5NywweEVFLDB4RTAsMHg2QSwweDRBLDB4RUEsMHhCNiwweEVFLDB4NzYsMHhFRSww
eDM4LDB4QkYsMHg5RiwweEZGLAorICAgIDB4QjcsMHhGNiwweDcxLDB4Q0QsMHgyNCwweDA2LDB4
MjQsMHgyNiwweDM1LDB4RTYsMHg5MiwweENELDB4RDYsMHg5RSwweERDLDB4NTQsCisgICAgMHhG
MywweERELDB4OEUsMHhCNCwweDI3LDB4MzcsMHgwNywweDA5LDB4OTYsMHhFRSwweDM0LDB4RTYs
MHhEOCwweEZCLDB4REIsMHhGQiwKKyAgICAweEQ2LDB4RjYsMHhCNywweEVFLDB4QUEsMHg4QSww
eDAwLDB4MkEsMHhENywweEY2LDB4RDYsMHhFRSwweEFBLDB4QUEsMHhBQSwweDBBLAorICAgIDB4
RjcsMHhGNiwweEQ3LDB4RjYsMHg3NSwweDc3LDB4RjUsMHhBRCwweEQ2LDB4RjYsMHhCNiwweEVF
LDB4REYsMHhENiwweEVBLDB4QTgsCisgICAgMHhGNywweEY2LDB4QjYsMHhFRSwweEFELDB4QTcs
MHhBRiwweEFGLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhGNSwweDdFLDB4QTcsMHhBQiwKKyAgICAw
eEQ3LDB4RjYsMHgwMiwweDQxLDB4NzAsMHg3MCwweDYwLDB4NjAsMHhFNSwweDYxLDB4RTIsMHg0
MCwweDdGLDB4RkYsMHhCRCwweDA5LAorICAgIDB4NjcsMHg3MiwweDQ0LDB4NDksMHgyRCwweEFG
LDB4RkIsMHhFQSwweEE4LDB4N0EsMHhFNSwweDYxLDB4ODAsMHhBMiwweEZELDB4NUYsCisgICAg
MHg4OCwweDcyLDB4RTUsMHg2MSwweDIyLDB4QkEsMHhGRSwweEQ1LDB4MkEsMHg4QiwweEU1LDB4
NjEsMHgwMiwweEFBLDB4N0IsMHg1NSwKKyAgICAweDY3LDB4N0EsMHhDNSwweDYxLDB4MzQsMHhC
NywweEVELDB4QzMsMHgyNiwweDdBLDB4NDMsMHg1OSwweDJDLDB4MjYsMHhCNSwweDE1LAorICAg
IDB4RTksMHg5MiwweDQ3LDB4ODIsMHgzNSwweDI1LDB4QjUsMHgzRiwweEY3LDB4RkUsMHgxMCww
eENELDB4MDEsMHgwMSwweDAzLDB4MDMsCisgICAgMHgzOCwweEZGLDB4RjcsMHhGNiwweEFBLDB4
QUYsMHhGRiwweDVCLDB4MzgsMHhGRiwweEQ2LDB4RjYsMHhBOCwweEUwLDB4NkIsMHg1QiwKKyAg
ICAweEQ3LDB4RjYsMHg1NCwweEU2LDB4QTgsMHg4MCwweDYwLDB4NDAsMHhGOCwweEZFLDB4RDMs
MHhERCwweDVFLDB4RDYsMHg4MywweDgyLAorICAgIDB4RDcsMHhGNiwweEIyLDB4RDUsMHgyNSww
eDM3LDB4QkUsMHhGQSwweEY3LDB4RjYsMHhCNiwweEY2LDB4MDIsMHgwMiwweEFCLDB4MDksCisg
ICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDdGLDB4NUEsMHhCRiwweERGLDB4RjcsMHhGNiwweDk3
LDB4RUUsMHhBQSwweDBFLDB4MjIsMHg4QSwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4ODUs
MHhDMiwweDhCLDB4QUEsMHhGOCwweEY2LDB4RDcsMHhGNiwweDAyLDB4RUEsMHgwQSwweENBLAor
ICAgIDB4RjgsMHhGNiwweEI3LDB4RUUsMHg4QSwweDJBLDB4QkUsMHhCNywweDk2LDB4RUUsMHg3
NiwweEVFLDB4QUUsMHg5QywweEJFLDB4RTAsCisgICAgMHg5NiwweEVFLDB4NTEsMHhDRCwweDI0
LDB4MjQsMHgyRSwweDJDLDB4NTUsMHhFRSwweEYwLDB4QkMsMHhGQywweEY4LDB4NzgsMHg1OCwK
KyAgICAweDM0LDB4RTYsMHgxMCwweEM1LDB4MkQsMHgyQiwweDAxLDB4MEIsMHg5NiwweEVFLDB4
NTUsMHhFNiwweDVCLDB4RkEsMHhGMywweDMzLAorICAgIDB4RDYsMHhGNiwweEI2LDB4RTYsMHgy
OCwweDgyLDB4MjAsMHg4OCwweEQ3LDB4RjYsMHhENiwweEVFLDB4OEEsMHhBQSwweDJCLDB4QUEs
CisgICAgMHhGNiwweEY2LDB4RDcsMHhGNiwweEZELDB4N0YsMHg3NywweDdELDB4RDYsMHhGNiww
eEI3LDB4RUUsMHgwMCwweDA4LDB4MkEsMHhBRSwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4
RDUsMHhBNywweDJELDB4QTUsMHhGNywweEY2LDB4RDYsMHhGNiwweEJBLDB4QUEsMHhDQSwweDAy
LAorICAgIDB4QjYsMHhGNiwweDY2LDB4NzIsMHg2MCwweDYwLDB4NzAsMHg3MCwweEM4LDB4ODIs
MHhDNSwweDU5LDB4RTUsMHgwQSwweDJBLDB4RkUsCisgICAgMHhBOCwweDdBLDB4QTQsMHg1OSww
eDdBLDB4RTAsMHg2OCwweDdCLDB4NjcsMHg3MiwweDY0LDB4NTEsMHg4MiwweEMzLDB4RkYsMHhG
NSwKKyAgICAweDQ2LDB4NzIsMHhDNSwweDU5LDB4RkQsMHhFNSwweEQ1LDB4MzksMHgyQSwweDkz
LDB4QzUsMHg2MSwweEQ1LDB4QjUsMHgyRiwweDBBLAorICAgIDB4OEUsMHhDNCwweDg4LDB4ODIs
MHg3RCwweERCLDB4RUIsMHgwQSwweDhCLDB4QTMsMHhDNSwweDY5LDB4OTcsMHhFQSwweDhBLDB4
RTgsCisgICAgMHhENywweEZFLDB4NjcsMHg3QSwweEQ1LDB4MTUsMHgyNSwweDBELDB4MTcsMHhG
RiwweEI4LDB4RjYsMHgyMSwweDIyLDB4MjIsMHgyMCwKKyAgICAweDE4LDB4RkYsMHhCNiwweEVF
LDB4MjgsMHg4OCwweDZBLDB4NUEsMHgxNywweEZGLDB4MzQsMHhFNiwweEE4LDB4N0EsMHg3Riww
eEEyLAorICAgIDB4MzksMHhGRiwweDk2LDB4RUUsMHhFMiwweEMxLDB4ODMsMHg4OCwweDE4LDB4
RkYsMHhEOCwweEY2LDB4RTksMHg4OSwweEFCLDB4QUIsCisgICAgMHgxOCwweEZGLDB4MTQsMHhF
NiwweDdGLDB4N0UsMHhGQywweDc4LDB4MTgsMHhGRiwweDU1LDB4RTYsMHgyQiwweDI5LDB4QUQs
MHhBRCwKKyAgICAweDM4LDB4RkYsMHhENywweEY2LDB4NTcsMHg3RiwweEZGLDB4RkIsMHhGNyww
eEY2LDB4RDcsMHhGNiwweEQ5LDB4MEIsMHgwMCwweDAwLAorICAgIDB4MTgsMHhGRiwweEQ3LDB4
RjYsMHhGRCwweEFFLDB4QkIsMHhGQSwweEY3LDB4RjYsMHg5NSwweEVFLDB4ODAsMHhBMCwweEU4
LDB4RTgsCisgICAgMHhENywweEY2LDB4OTYsMHhFRSwweDM3LDB4MEQsMHgwOSwweEFELDB4OTYs
MHhFRSwweDU1LDB4RTYsMHhBOCwweEE4LDB4QkIsMHhCRCwKKyAgICAweDU1LDB4RUUsMHhCMyww
eEQ1LDB4MDQsMHgyNCwweDA0LDB4MjQsMHg1NSwweEVFLDB4NkUsMHhCNCwweDc4LDB4NzgsMHg1
OCwweDVBLAorICAgIDB4NzYsMHhFRSwweDkyLDB4RDUsMHhBOSwweEE5LDB4MjksMHgwMywweEI2
LDB4RjYsMHgzNCwweEU2LDB4M0IsMHgyNSwweDJFLDB4QUYsCisgICAgMHhENiwweEY2LDB4NTUs
MHhFRSwweDAwLDB4MDAsMHgwMCwweDA5LDB4RDYsMHhGNiwweEY3LDB4RUUsMHgyMCwweDg4LDB4
ODgsMHgyMCwKKyAgICAweEQ2LDB4RjYsMHhENywweEVFLDB4OEEsMHhBQSwweDg4LDB4MjIsMHhE
NiwweEY2LDB4QjYsMHhFRSwweEVFLDB4QkUsMHhBQSwweDAwLAorICAgIDB4RDYsMHhGNiwweEI2
LDB4RUUsMHgwMiwweDhBLDB4QkIsMHg4MCwweEY3LDB4RjYsMHhCNiwweEVFLDB4QUEsMHhBQiww
eEVCLDB4RkUsCisgICAgMHg3NSwweEVFLDB4NjMsMHg0OSwweDc4LDB4NTgsMHg1OCwweDVDLDB4
RTUsMHg2MSwweEExLDB4MjgsMHgwMCwweEVGLDB4RDcsMHhENSwKKyAgICAweEM1LDB4NTksMHhF
MiwweDM4LDB4QTgsMHhCNywweEJELDB4MzUsMHgwOSwweDkzLDB4ODQsMHg1MSwweEZELDB4RUIs
MHg3QSwweDcyLAorICAgIDB4MkEsMHg4QiwweDIzLDB4NDksMHgyRiwweDJCLDB4M0YsMHhCNSww
eEVDLDB4QUIsMHg4NywweDgyLDB4QkEsMHg4MCwweDBCLDB4MkQsCisgICAgMHg0RSwweEJDLDB4
NDcsMHg3QSwweDBBLDB4QUUsMHhGRSwweDdBLDB4RUMsMHhBQiwweDI2LDB4NzIsMHg1QywweEQ2
LDB4M0YsMHgyQiwKKyAgICAweEY4LDB4RkUsMHhDQiwweEEzLDB4MDksMHgwMiwweDAyLDB4MDIs
MHgxOCwweEZGLDB4RDYsMHhGNiwweEEwLDB4QTIsMHhFMCwweDcwLAorICAgIDB4NTksMHhGRiww
eEQ2LDB4RjYsMHhENywweEE1LDB4QUQsMHgwRCwweDM4LDB4RkYsMHg3NSwweEU2LDB4NzAsMHhE
MCwweERDLDB4OUMsCisgICAgMHgzOCwweEZGLDB4RjksMHhGNiwweENBLDB4NkEsMHhFQSwweEVF
LDB4MTgsMHhGRiwweEY4LDB4RjYsMHhCOSwweEJGLDB4QUYsMHhBNywKKyAgICAweDE4LDB4RkYs
MHg1NSwweEVFLDB4NzgsMHhFMCwweEUwLDB4QTgsMHhGNywweEY2LDB4NTUsMHhFRSwweDJELDB4
MkYsMHgwRiwweDJBLAorICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHg1NSwweDU1LDB4RkQsMHhB
NSwweEY3LDB4RjYsMHhENywweEY2LDB4MjgsMHg2MiwweDAwLDB4MDAsCisgICAgMHhGNywweEY2
LDB4OTYsMHhFRSwweDgwLDB4MjgsMHhGOCwweDdBLDB4RDcsMHhGNiwweDU1LDB4RTYsMHhFMCww
eEYwLDB4REUsMHhGNywKKyAgICAweEQ3LDB4RjYsMHg3NiwweEVFLDB4ODksMHg4OSwweEYzLDB4
QkIsMHg3NSwweEVFLDB4RjQsMHhERCwweDBBLDB4MDcsMHgyNSwweEE3LAorICAgIDB4NTYsMHhF
RSwweDkyLDB4Q0QsMHgyQywweDJFLDB4MkUsMHg2NiwweDE0LDB4RTYsMHhBRiwweEJDLDB4RDgs
MHhGOCwweEYwLDB4RDIsCisgICAgMHgzNCwweEU2LDB4MzEsMHhDRCwweDgyLDB4N0YsMHhENyww
eEQ3LDB4MzUsMHhFNiwweDkyLDB4RDUsMHgwRiwweDBELDB4MkQsMHhCRCwKKyAgICAweDM0LDB4
RTYsMHhFOCwweDgyLDB4MkQsMHg1NSwweDU1LDB4NTUsMHhCNiwweEY2LDB4MDgsMHg4MywweDAw
LDB4MkYsMHg1NSwweDU1LAorICAgIDB4QjYsMHhGNiwweEU4LDB4ODIsMHgwMCwweDAwLDB4MEIs
MHhENSwweEQ2LDB4RjYsMHhGMCwweEM0LDB4MDAsMHgwMCwweDAwLDB4MkQsCisgICAgMHhCNyww
eEZFLDB4RjYsMHhGNiwweEZGLDB4RkYsMHhCRiwweEVBLDB4RjcsMHhGRSwweEI2LDB4RjYsMHhG
RiwweEFFLDB4RUUsMHhBQSwKKyAgICAweDk1LDB4RUUsMHg0MywweDQxLDB4NUMsMHg1QywweDVD
LDB4NTgsMHg0NCwweDQxLDB4QTEsMHgyOCwweEQ1LDB4RjcsMHhBMCwweDgwLAorICAgIDB4MDYs
MHg3MiwweEUyLDB4MzgsMHhCNSwweDM1LDB4MzUsMHgyRCwweEM4LDB4ODIsMHhFMywweDQwLDB4
NjAsMHg3MCwweDdBLDB4NUUsCisgICAgMHhFNiwweDYxLDB4ODEsMHgyOCwweDJGLDB4RkYsMHg3
NywweDVGLDB4MDksMHg5MywweEMyLDB4MzAsMHgwQSwweDJGLDB4QjUsMHhCNSwKKyAgICAweDZC
LDB4OUIsMHg2NywweDdBLDB4RDgsMHhERSwweEZGLDB4RkYsMHhDQiwweEEzLDB4MDYsMHg2QSww
eEMyLDB4QUEsMHhGQiwweDdGLAorICAgIDB4MzQsMHhFNiwweDY3LDB4NzIsMHgyRCwweDk1LDB4
NTUsMHg1NSwweEQ3LDB4RjYsMHg0QiwweDkzLDB4MDAsMHgwMCwweDAyLDB4MEQsCisgICAgMHg3
OSwweEZGLDB4RDcsMHhGNiwweEE5LDB4RUIsMHhFQSwweDZFLDB4RjcsMHhGRSwweDM1LDB4RTYs
MHgzQywweDNGLDB4MzcsMHgyNywKKyAgICAweDM4LDB4RkYsMHhGNywweEY2LDB4RTMsMHhFQiww
eEVCLDB4RUIsMHhGOCwweEZFLDB4MTgsMHhGNywweEVBLDB4QUIsMHhBQSwweEFBLAorICAgIDB4
MTgsMHhGRiwweEQ3LDB4RjYsMHg3QSwweDVBLDB4RkUsMHhGQSwweEY4LDB4RjYsMHhENywweEY2
LDB4RDUsMHhCQSwweDBBLDB4MEIsCisgICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweEE3LDB4RjYs
MHhCRiwweDlCLDB4MTgsMHhGRiwweEI3LDB4RjYsMHhBOCwweEUyLDB4NjgsMHg3QSwKKyAgICAw
eEQ3LDB4RjYsMHg1NSwweEU2LDB4RTgsMHhGQSwweDdFLDB4RkYsMHg3NSwweEVFLDB4MzUsMHhF
NiwweDIwLDB4QTgsMHhBRiwweDM4LAorICAgIDB4QjcsMHhGNiwweDc2LDB4RUUsMHgzRSwweEFB
LDB4RUUsMHg3RiwweDc1LDB4RUUsMHg5MiwweEQ1LDB4MkYsMHgyNSwweEE1LDB4QjUsCisgICAg
MHhGNCwweERELDB4NTEsMHhDRCwweDQ4LDB4QzgsMHgwMCwweDAwLDB4RDMsMHhERCwweDZFLDB4
QjQsMHhGQSwweERBLDB4REEsMHhEOCwKKyAgICAweDcyLDB4RDUsMHhGMCwweEM0LDB4MkYsMHgy
RCwweEFGLDB4QjcsMHhEMywweERELDB4MzAsMHhDNSwweDIyLDB4RTIsMHg2MiwweDVGLAorICAg
IDB4RTgsMHg4MiwweDY1LDB4NzIsMHgyQSwweEE4LDB4MkIsMHg1NSwweEU4LDB4ODIsMHhBNyww
eDdBLDB4QTIsMHhCQSwweEVBLDB4QUQsCisgICAgMHhFOCwweDgyLDB4QzgsMHg4MiwweDIzLDB4
QUEsMHhGRiwweDU3LDB4NEQsMHhBQywweEU4LDB4ODIsMHgzNSwweDU1LDB4NTUsMHg1NSwKKyAg
ICAweDc1LDB4RUUsMHhFOCwweDgyLDB4MDIsMHhCNSwweDU1LDB4NTUsMHhCNiwweEY2LDB4MDks
MHg4QiwweDAwLDB4MDIsMHhCNSwweDU1LAorICAgIDB4NzUsMHhFRSwweDYzLDB4NTEsMHg3MCww
eDYwLDB4QzAsMHhFRiwweEE1LDB4NTEsMHgyMywweDQxLDB4NjAsMHhFMiwweEFELDB4QTUsCisg
ICAgMHgwOSwweDkzLDB4NjQsMHg1MSwweEI1LDB4MkQsMHgwQiwweDBCLDB4ODcsMHg4MiwweDI0
LDB4NDksMHg1QywweEY4LDB4QjgsMHg4OCwKKyAgICAweDQ3LDB4N0EsMHhDMiwweDMwLDB4NTUs
MHg1RiwweEU4LDB4NjAsMHgwNiwweDcyLDB4QTIsMHgzMCwweDNELDB4MkYsMHhFRSwweEJGLAor
ICAgIDB4ODgsMHg3QSwweEM1LDB4NjEsMHhCQywweEQ1LDB4OTksMHhBQiwweEE4LDB4N0EsMHgy
MiwweDQxLDB4RjgsMHhERSwweDk2LDB4QjcsCisgICAgMHgwOSwweDhCLDB4QzUsMHg2MSwweEFG
LDB4QUYsMHgyRiwweDI3LDB4QjYsMHhGNiwweEE4LDB4ODIsMHgyNSwweDM1LDB4RDUsMHg1NSwK
KyAgICAweDE4LDB4RkYsMHhGMCwweENDLDB4ODAsMHg4MCwweEEwLDB4ODksMHhGOCwweEZFLDB4
NTUsMHhFRSwweDI1LDB4MjUsMHgyNSwweDBELAorICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHg4
MiwweEUyLDB4RTIsMHhDMiwweDE4LDB4RkYsMHhGOCwweEY2LDB4N0UsMHg1RiwweEY3LDB4NTcs
CisgICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweEZGLDB4QkIsMHhFRiwweEFCLDB4MTgsMHhGRiww
eEQ3LDB4RjYsMHhBRiwweEJGLDB4QUEsMHhBRSwKKyAgICAweDE4LDB4RkYsMHhENywweEY2LDB4
QkEsMHhGQSwweEZBLDB4RkUsMHhGOCwweEY2LDB4NzYsMHhFRSwweEU4LDB4NzgsMHg3QSwweDVF
LAorICAgIDB4NzYsMHhFRSwweDM1LDB4RTYsMHhFMCwweEUwLDB4RTgsMHg2OCwweDk2LDB4RUUs
MHgzNSwweEU2LDB4M0YsMHgyRSwweEFCLDB4MkQsCisgICAgMHg5NiwweEVFLDB4NTUsMHhFRSww
eDg4LDB4QzIsMHhFRSwweDRBLDB4MTQsMHhFNiwweDcxLDB4Q0QsMHgyNywweEI1LDB4QkUsMHhB
OCwKKyAgICAweEQzLDB4REQsMHhDRiwweEJDLDB4MDAsMHg4MCwweDcwLDB4NTgsMHg5MiwweEQ1
LDB4NkUsMHhCNCwweDU4LDB4N0IsMHhFRiwweEE3LAorICAgIDB4NTEsMHhDRCwweDRFLDB4QUMs
MHgyRSwweDBFLDB4MjYsMHgyNiwweDcyLDB4Q0QsMHgxMCwweEM1LDB4MTYsMHhCNSwweDBELDB4
QTMsCisgICAgMHhBNywweDdBLDB4NjYsMHg3MiwweERELDB4RkEsMHhBQSwweEFCLDB4QTcsMHg3
QSwweDQ2LDB4NzIsMHhCRiwweERBLDB4QTIsMHgwOCwKKyAgICAweEU4LDB4ODIsMHg0NiwweDcy
LDB4MEEsMHhCRCwweEY3LDB4RkIsMHhFOCwweDhBLDB4NjYsMHg3MiwweDIyLDB4QUEsMHgzRCww
eDU1LAorICAgIDB4RTgsMHg4MiwweDg3LDB4N0EsMHgwOCwweEEwLDB4ODIsMHhBNSwweDA4LDB4
OEIsMHhDOCwweDgyLDB4QUUsMHhGRiwweEZGLDB4RjUsCisgICAgMHgwOCwweDhCLDB4QzQsMHg1
OSwweEMwLDB4RTIsMHg2OCwweEUyLDB4QTQsMHg1OSwweEMyLDB4MzAsMHgyQSwweDBBLDB4QkYs
MHhERiwKKyAgICAweEU4LDB4OTIsMHhBNCwweDU5LDB4MDksMHg4QiwweDBCLDB4QUQsMHhBOCww
eDhBLDB4QTUsMHg2MSwweEU4LDB4RkUsMHg3QSwweDdFLAorICAgIDB4NDYsMHg3MiwweDIzLDB4
NDksMHhFOCwweDdBLDB4NUYsMHg1RiwweEE1LDB4NTEsMHgyMywweDQxLDB4QjUsMHhCNywweDNG
LDB4RUYsCisgICAgMHg4OCwweDcyLDB4NjQsMHg0OSwweDhCLDB4QUIsMHhGRiwweDU1LDB4NDcs
MHg3MiwweDAzLDB4NDksMHhCNywweEJGLDB4MkYsMHgwMywKKyAgICAweEU5LDB4OTIsMHgwNiww
eDZBLDB4QUQsMHg4QiwweEVCLDB4RkUsMHhFOSwweDhBLDB4MjMsMHg0OSwweDgyLDB4QTIsMHg3
QSwweDVFLAorICAgIDB4MTQsMHhFNiwweEU1LDB4NjEsMHgwQiwweDJELDB4QjUsMHhENSwweEQ3
LDB4RkUsMHgwRCwweEFDLDB4MDgsMHgwMiwweDAyLDB4QjUsCisgICAgMHgxOCwweEZGLDB4Qjcs
MHhGNiwweDgwLDB4ODAsMHg4MiwweDg5LDB4RDcsMHhGRSwweEY4LDB4RjYsMHhGNSwweDdELDB4
RDcsMHhGNSwKKyAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4REQsMHhCNSwweEZGLDB4RUQsMHgx
OCwweEZGLDB4RDcsMHhGNiwweDhFLDB4QUEsMHhBQSwweDZBLAorICAgIDB4RjgsMHhGRSwweDk2
LDB4RUUsMHhGMCwweDdBLDB4N0EsMHg1RSwweEI2LDB4RjYsMHg1NSwweEU2LDB4RkMsMHhFRiww
eDc1LDB4RjcsCisgICAgMHg3NiwweEVFLDB4MzUsMHhFRSwweEVBLDB4ODgsMHgyQSwweEE4LDB4
NzYsMHhFRSwweDE0LDB4RTYsMHgwQiwweDBFLDB4N0EsMHhGOCwKKyAgICAweDk2LDB4RjYsMHhG
NCwweEU1LDB4ODIsMHg4QSwweEMzLDB4NkEsMHgxNCwweEU2LDB4RDMsMHhERCwweEVBLDB4QkUs
MHgwMywweDYxLAorICAgIDB4RDMsMHhERCwweDhFLDB4QjQsMHg1OCwweDVDLDB4RkMsMHg3RSww
eDUxLDB4Q0QsMHhDQywweDlCLDB4MkYsMHhBRiwweEZFLDB4N0EsCisgICAgMHgxMCwweEM1LDB4
QUIsMHg5QiwweDA4LDB4MDgsMHgwRiwweDBELDB4NzIsMHhDRCwweDExLDB4QzUsMHgwMiwweDAw
LDB4MDMsMHhBRiwKKyAgICAweDY3LDB4NzIsMHgyNSwweDZBLDB4MjUsMHg1NSwweERELDB4QkUs
MHhBOCwweDdBLDB4MjUsMHg2QSwweDgyLDB4QkQsMHg1NSwweDU1LAorICAgIDB4QTcsMHg3QSww
eDI2LDB4NzIsMHhBMiwweDgwLDB4MkQsMHg1NSwweEE3LDB4N0EsMHg0NiwweDdBLDB4QTgsMHgw
QSwweEEwLDB4MkQsCisgICAgMHhBNywweDdBLDB4NjYsMHg3QSwweEQ3LDB4RTgsMHhFMiwweDhB
LDB4QzgsMHg4MiwweDY2LDB4NzIsMHgwQSwweEQ3LDB4RkIsMHhBQSwKKyAgICAweEU4LDB4ODIs
MHg4NiwweDdBLDB4NjAsMHgyMiwweEQ1LDB4NzcsMHg4NiwweDdBLDB4QTIsMHgzOCwweDU3LDB4
NUMsMHhGOCwweEUwLAorICAgIDB4RTYsMHg2OSwweEMyLDB4NDAsMHgyRCwweDJELDB4RkYsMHhG
RiwweDY3LDB4N0EsMHgwMywweDQ5LDB4MjAsMHgwMCwweDhCLDB4RjUsCisgICAgMHhBOCwweDgy
LDB4QzIsMHgzOCwweEZBLDB4RjgsMHg3QSwweDVGLDB4NDQsMHg0OSwweEUyLDB4MzgsMHhCQyww
eEY3LDB4RkQsMHhBQiwKKyAgICAweEE0LDB4NTksMHhBMiwweDMwLDB4REYsMHhCNywweDM3LDB4
MkYsMHg2NywweDdBLDB4ODQsMHg1OSwweDA5LDB4MkQsMHhGRCwweEZGLAorICAgIDB4MDYsMHg2
QSwweDQ0LDB4NTEsMHhBOCwweEI4LDB4QkUsMHhENywweEE1LDB4NTksMHgwMywweDQxLDB4OUMs
MHg5QywweDNFLDB4QTcsCisgICAgMHhFOSwweDhBLDB4QTUsMHg1OSwweDNGLDB4QUYsMHhFQiww
eEVELDB4NEEsMHg5MywweDY3LDB4N0EsMHgzNywweEI1LDB4RUQsMHg1NSwKKyAgICAweDk2LDB4
RjYsMHg2NywweDdBLDB4MDIsMHhCNywweDU1LDB4NTUsMHg5NywweEY2LDB4NjcsMHg3QSwweDAw
LDB4MDAsMHhCNywweDU1LAorICAgIDB4RDcsMHhGRSwweDY3LDB4NzIsMHgwMCwweDAwLDB4MEEs
MHg3NSwweEQ3LDB4RkUsMHhCMCwweEJDLDB4MDAsMHgwMCwweDAwLDB4MjksCisgICAgMHhENyww
eEY2LDB4NTUsMHhFRSwweEU4LDB4N0UsMHhGRiwweDVGLDB4OTYsMHhGNiwweDM1LDB4RTYsMHhF
QSwweEFBLDB4QUIsMHhFNSwKKyAgICAweDk2LDB4RjYsMHg1NSwweEVFLDB4N0YsMHhFRSwweDJB
LDB4N0QsMHg3NiwweEVFLDB4NTUsMHhFRSwweDVBLDB4M0EsMHhENywweDA5LAorICAgIDB4NzUs
MHhFRSwweEIzLDB4RDUsMHhFOCwweDYyLDB4NjgsMHg2OCwweDc1LDB4RUUsMHhCMywweEQ1LDB4
QUQsMHhBRiwweEFELDB4QkQsCisgICAgMHg3NSwweEVFLDB4MTAsMHhDNSwweDU2LDB4NzgsMHg4
MiwweDAwLDB4MzUsMHhFNiwweDhCLDB4OTMsMHg2QSwweEVBLDB4QUEsMHhBOCwKKyAgICAweDMw
LDB4QzUsMHg2OCwweDcyLDB4MEIsMHhBRCwweEQ3LDB4NUMsMHhGMCwweEM0LDB4QzksMHg3QSww
eDAwLDB4MDAsMHgwMiwweDM1LAorICAgIDB4NjYsMHg3MiwweDQ2LDB4NzIsMHhENywweDVCLDB4
REQsMHhBRSwweDY3LDB4N0EsMHg0NiwweDZBLDB4NTUsMHhGRiwweEFBLDB4QUIsCisgICAgMHg2
NiwweDcyLDB4MjYsMHg2QSwweEZFLDB4RUIsMHhBQSwweDhBLDB4NjYsMHg3MiwweDI2LDB4NzIs
MHgzRCwweEZGLDB4RkIsMHhBQSwKKyAgICAweEE3LDB4N0EsMHgyNSwweDZBLDB4MEEsMHhCRCww
eDVGLDB4RkYsMHhBNywweDgyLDB4NDYsMHg3MiwweDA4LDB4MEEsMHhCNSwweDU1LAorICAgIDB4
QzcsMHg4MiwweDQ2LDB4NzIsMHgyQSwweDg4LDB4MEEsMHhBRCwweEU4LDB4OEEsMHhFNSwweDY5
LDB4NkEsMHhFQSwweDgwLDB4MDIsCisgICAgMHhFOCwweDhBLDB4ODQsMHg1OSwweDU1LDB4RkEs
MHg2OCwweDc4LDB4ODUsMHg1MSwweEEyLDB4MzAsMHgyMCwweEU4LDB4N0EsMHg1NywKKyAgICAw
eDQ0LDB4NDksMHhBMiwweDI4LDB4REMsMHhCRiwweEZGLDB4RkQsMHg2NCwweDQ5LDB4QzIsMHgz
MCwweEZBLDB4QjcsMHhCNywweDE1LAorICAgIDB4ODUsMHg1OSwweDIzLDB4NDEsMHgzRCwweEFG
LDB4MkUsMHgyNSwweDI3LDB4NzIsMHg0NCwweDQ5LDB4QzAsMHhDMywweDZCLDB4N0IsCisgICAg
MHhBNSwweDU5LDB4RTIsMHgzOCwweEFFLDB4QTUsMHgzNywweDI3LDB4QTUsMHg1OSwweDAzLDB4
NDEsMHhBRiwweEVGLDB4NzgsMHg1QywKKyAgICAweEM4LDB4ODIsMHhFMywweDQwLDB4MEIsMHgw
OSwweEFELDB4RkQsMHg2NywweDdBLDB4NDQsMHg1MSwweDI4LDB4QTgsMHhGRiwweEQ1LAorICAg
IDB4RTksMHg4QSwweEU1LDB4NjEsMHg4QSwweDBCLDB4QUQsMHhGRCwweEM5LDB4OEEsMHgyNyww
eDcyLDB4NUYsMHg3OCwweDY4LDB4OEEsCisgICAgMHg2NywweDcyLDB4QTUsMHg1OSwweDAyLDB4
ODAsMHhBQSwweDU4LDB4NTUsMHhFRSwweDA2LDB4NjIsMHgyRCwweEY1LDB4NTUsMHg1NSwKKyAg
ICAweDM0LDB4RUUsMHg0NywweDcyLDB4MDAsMHgwQSwweDJELDB4QjUsMHgzNSwweEU2LDB4OTMs
MHhERCwweDIwLDB4MkEsMHhFOCwweEE5LAorICAgIDB4MTQsMHhFNiwweEQzLDB4REQsMHgzQSww
eDIwLDB4RkYsMHg1NiwweDk2LDB4RjYsMHhGNCwweEU1LDB4OEEsMHhBQiwweEZCLDB4NUQsCisg
ICAgMHg1NSwweEVFLDB4RDMsMHhERCwweDYwLDB4QUEsMHhGMiwweEYyLDB4NTUsMHhFNiwweEIz
LDB4RDUsMHhBRCwweEVBLDB4QUEsMHhCQiwKKyAgICAweDk2LDB4RUUsMHgxNCwweEU2LDB4ODIs
MHgwQiwweDAzLDB4MDEsMHg3NiwweEVFLDB4OTIsMHhENSwweDc4LDB4RTAsMHgwMCwweDAwLAor
ICAgIDB4MzUsMHhFNiwweDBELDB4QTQsMHg3QSwweEEyLDB4MDgsMHgyMCwweEIyLDB4RDUsMHhD
OSwweDdBLDB4QjUsMHhBOCwweEMwLDB4MDAsCisgICAgMHg2NiwweDcyLDB4MjcsMHg3MiwweDgy
LDB4QTAsMHgwMiwweEE5LDB4NDcsMHg3QSwweDY2LDB4NzIsMHhGNSwweDVGLDB4REYsMHg3RiwK
KyAgICAweDg2LDB4N0EsMHg0NiwweDcyLDB4RjcsMHhFRiwweEJCLDB4QkEsMHg4NiwweDdBLDB4
NDYsMHg3MiwweERGLDB4RUUsMHhCQSwweEEyLAorICAgIDB4ODYsMHg3QSwweDQ2LDB4NzIsMHhG
RiwweEZGLDB4RUEsMHhBOCwweDY2LDB4N0EsMHg0NiwweDcyLDB4QkYsMHgwQSwweDA4LDB4MDAs
CisgICAgMHg4NywweDdBLDB4NDUsMHg3QSwweEQ3LDB4RkIsMHhBQSwweDgyLDB4QUIsMHhBMyww
eDY2LDB4N0EsMHhERCwweEQ1LDB4OTUsMHgzNSwKKyAgICAweDA5LDB4OTMsMHhDMiwweDM4LDB4
NzgsMHg3OCwweDc4LDB4NzgsMHhDMiwweDMwLDB4ODEsMHgyOCwweDdDLDB4QTgsMHgwOCwweDA4
LAorICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHhBRiwweEVFLDB4NjgsMHgxOCwweDQ0LDB4NDEs
MHhBMiwweDI4LDB4MkQsMHg4OSwweDhCLDB4RTIsCisgICAgMHg2NCwweDUxLDB4RTIsMHgzOCww
eDJELDB4MkQsMHg4MSwweDQzLDB4ODUsMHg1MSwweEUzLDB4MzgsMHg2MiwweEU4LDB4NUEsMHg1
NSwKKyAgICAweDQ0LDB4NDEsMHhFMywweDM4LDB4MEYsMHg3RiwweDYzLDB4QjUsMHg2NSwweDQ5
LDB4MDMsMHg0MSwweEY2LDB4NkYsMHg2MSwweDI3LAorICAgIDB4ODUsMHg1MSwweEUzLDB4Mzgs
MHgyRiwweDA1LDB4MzUsMHhBRiwweEE1LDB4NTksMHgwMywweDQxLDB4RkUsMHhENiwweDM2LDB4
MkUsCisgICAgMHgyNiwweDZBLDB4ODQsMHg1OSwweEFELDB4QTIsMHg2MywweERFLDB4ODcsMHg4
MiwweDY0LDB4NTksMHgwMCwweDNCLDB4RkQsMHhGRCwKKyAgICAweDQ3LDB4NzIsMHg2NCwweDUx
LDB4RjgsMHhBOCwweDVGLDB4NUQsMHhDNSwweDU5LDB4NDQsMHg0OSwweDBBLDB4ODgsMHg5Riww
eEI1LAorICAgIDB4QzgsMHg3QSwweDY0LDB4NDksMHgwRiwweEJELDB4RkYsMHg3RiwweEQzLDB4
RTUsMHgyNiwweDcyLDB4MEIsMHgyRCwweEI1LDB4RjUsCisgICAgMHhENCwweERELDB4MTAsMHhD
NSwweDAwLDB4ODAsMHhBMCwweEE5LDB4MTQsMHhFNiwweDkzLDB4RDUsMHhBMiwweDJGLDB4MDks
MHhBQiwKKyAgICAweDM1LDB4RUUsMHg1MSwweENELDB4QTAsMHgwOCwweDJFLDB4MTYsMHg1NSww
eEVFLDB4RjQsMHhERCwweDdELDB4QkUsMHg4MiwweEU4LAorICAgIDB4QjYsMHhGNiwweDE0LDB4
RTYsMHgyOSwweDI5LDB4ODksMHg4QiwweDk2LDB4RjYsMHhGNCwweERELDB4NzAsMHg2MCwweEM4
LDB4QUEsCisgICAgMHgzNSwweEU2LDB4OTIsMHhENSwweDVGLDB4NUQsMHg1RiwweDVDLDB4QjMs
MHhENSwweDUxLDB4Q0QsMHhBMCwweDdFLDB4NUUsMHg3RSwKKyAgICAweDI1LDB4NzIsMHg2NCww
eDU5LDB4M0QsMHhENSwweDU1LDB4NTUsMHg2NiwweDcyLDB4NjMsMHg1OSwweDAwLDB4MjksMHhE
NSwweDU1LAorICAgIDB4NjYsMHg3MiwweDYzLDB4NTEsMHgwMCwweDAwLDB4MEIsMHhENSwweDg3
LDB4N0EsMHhFNSwweDY5LDB4MDAsMHgwOCwweDgwLDB4MEQsCisgICAgMHg4NywweDdBLDB4NjYs
MHg3QSwweEVBLDB4QTIsMHhFRSwweEJCLDB4NjYsMHg4MiwweDg3LDB4N0EsMHhCQiwweEZCLDB4
N0YsMHg3RiwKKyAgICAweDY2LDB4OEEsMHg4NywweDdBLDB4NzUsMHg1RiwweERELDB4REQsMHhF
QywweEFCLDB4ODcsMHg4MiwweDI1LDB4MDUsMHgwOSwweDAyLAorICAgIDB4NjksMHg5QiwweDQz
LDB4NDksMHg3QywweDdFLDB4NUMsMHg1QywweDAyLDB4MzksMHhBMiwweDI4LDB4N0MsMHg1Qyww
eERFLDB4RjgsCisgICAgMHgyMywweDQxLDB4QTIsMHgyOCwweEQ1LDB4RDUsMHhERCwweDJGLDB4
MjQsMHg0MSwweEMyLDB4MzAsMHhGQSwweDI1LDB4MkQsMHgwMiwKKyAgICAweDIzLDB4NDEsMHhF
MywweDM4LDB4Q0IsMHhGOSwweDgyLDB4RTAsMHg0NCwweDQ5LDB4QzIsMHgzMCwweDZELDB4RkIs
MHhGMCwweEUwLAorICAgIDB4NjQsMHg0OSwweEEyLDB4MzAsMHhCNSwweEJELDB4MkQsMHhCQSww
eDQ0LDB4NDksMHhFMywweDM4LDB4MkEsMHhGMCwweEZGLDB4OUUsCisgICAgMHg2NSwweDUxLDB4
MDMsMHgzOSwweDgzLDB4RUIsMHhGNSwweEI3LDB4QTUsMHg1OSwweDAzLDB4NDEsMHgyQiwweDlG
LDB4NTcsMHhERiwKKyAgICAweEE1LDB4NTksMHgwMywweDQxLDB4MjAsMHhCRSwweEQ3LDB4RDcs
MHgwNiwweDZBLDB4MjMsMHg0OSwweDBBLDB4QUEsMHhGQiwweDVGLAorICAgIDB4QzYsMHg1OSww
eDIzLDB4NDEsMHhCNiwweEY4LDB4REIsMHg1NSwweEE1LDB4NTEsMHg0NCwweDQ5LDB4OEYsMHgy
NSwweEY1LDB4NTUsCisgICAgMHhDNSwweDU5LDB4MjMsMHg0MSwweDJBLDB4QkUsMHhENywweEY1
LDB4MDksMHg4QiwweEM1LDB4NTksMHgwRiwweEFELDB4RkQsMHhGRCwKKyAgICAweEIzLDB4REQs
MHhDOCwweDgyLDB4MEIsMHgwRCwweDM1LDB4MTUsMHgzNSwweEU2LDB4QjMsMHhENSwweDhCLDB4
MDAsMHg4MiwweDYwLAorICAgIDB4RjMsMHhERCwweEYwLDB4QzQsMHgzNCwweEJFLDB4QjcsMHhG
RiwweDk2LDB4RUUsMHgxNSwweEU2LDB4NUUsMHhCRSwweDJCLDB4MDksCisgICAgMHg5NiwweEVF
LDB4NTUsMHhFRSwweDYzLDB4N0EsMHhGQywweEY4LDB4NzUsMHhFRSwweDU1LDB4RTYsMHhBRiww
eEZFLDB4OUYsMHhGNywKKyAgICAweDU1LDB4RUUsMHg5MiwweEQ1LDB4NzgsMHg4MCwweDAwLDB4
MDAsMHg3NiwweEVFLDB4NTEsMHhDRCwweDVGLDB4N0YsMHhFQSwweDAwLAorICAgIDB4ODQsMHg1
OSwweDQzLDB4NTksMHhFNywweEM1LDB4QUQsMHhBQiwweDg0LDB4NjEsMHg0MywweDUxLDB4NkUs
MHg3MiwweEQ2LDB4NUYsCisgICAgMHg2MywweDU5LDB4MjMsMHg1MSwweDVGLDB4RjcsMHhGRSww
eDNGLDB4RTUsMHg2OSwweDQzLDB4NTksMHgyNSwweEZELDB4RkYsMHhCRiwKKyAgICAweDg3LDB4
N0EsMHg0MywweDU5LDB4MDIsMHhCRCwweDU3LDB4NUQsMHg4NywweDdBLDB4NDMsMHg1OSwweDAw
LDB4MDAsMHgyRCwweDU1LAorICAgIDB4Q0IsMHhBMywweEU1LDB4NjksMHhGRiwweDNGLDB4MkYs
MHgwRCwweENCLDB4QUIsMHg2QSwweDlCLDB4MjIsMHhBOCwweEJFLDB4RjcsCisgICAgMHg4QSww
eDlCLDB4NDMsMHg0OSwweDVDLDB4NzgsMHg1OCwweEY4LDB4MjMsMHg0MSwweEMyLDB4MzAsMHg1
QywweDU2LDB4QjcsMHhGRSwKKyAgICAweDY0LDB4NDksMHhDMiwweDMwLDB4QUQsMHgyRCwweDNG
LDB4QUEsMHg2NCwweDQ5LDB4MDMsMHg0MSwweEZFLDB4RUEsMHg3QywweEY2LAorICAgIDB4ODUs
MHg1MSwweDAzLDB4MzksMHhENSwweDI3LDB4MDUsMHhBRiwweEE1LDB4NTksMHgyNCwweDQxLDB4
RkQsMHhBRCwweEFCLDB4QjIsCisgICAgMHgwNiwweDYyLDB4RTMsMHgzOCwweERGLDB4N0IsMHg3
QSwweEYwLDB4MjQsMHg0MSwweEMyLDB4MzAsMHgyOCwweEFFLDB4RUQsMHgyOSwKKyAgICAweEE1
LDB4NTEsMHgwMywweDQxLDB4MzUsMHgxNSwweEY1LDB4RDUsMHg2NCwweDUxLDB4MDMsMHg0MSww
eDk0LDB4REUsMHhGRSwweEFBLAorICAgIDB4ODUsMHg0OSwweDIzLDB4NDksMHhENywweEZCLDB4
RTIsMHhFRSwweDY0LDB4NTEsMHhFMywweDM4LDB4QTgsMHhCOCwweEZFLDB4REUsCisgICAgMHg2
NCwweDQ5LDB4RTMsMHgzOCwweERGLDB4REYsMHg5RiwweEEyLDB4NjQsMHg0OSwweEUzLDB4Mzgs
MHhFOCwweDdCLDB4RjgsMHgyQiwKKyAgICAweDg1LDB4NTEsMHgyMywweDQxLDB4MjUsMHgyNSww
eEY3LDB4RjcsMHhBOCwweDdBLDB4NDQsMHg0OSwweDhCLDB4MkYsMHhBRiwweEJELAorICAgIDB4
OEEsMHg5QiwweDI2LDB4NzIsMHgyRiwweEJGLDB4RjUsMHhENSwweEQzLDB4REQsMHgyOSwweDhC
LDB4MDAsMHg4MywweDgxLDB4OEQsCisgICAgMHg1MSwweEQ1LDB4RDAsMHhDNCwweDJCLDB4QUYs
MHgyRCwweEFELDB4OTYsMHhFRSwweEFGLDB4QkMsMHgwMiwweDAzLDB4RkIsMHg3RiwKKyAgICAw
eDc2LDB4RUUsMHg4RSwweEI0LDB4MDAsMHgwMCwweEZCLDB4NTUsMHg3NSwweEVFLDB4NEUsMHhB
QywweDAwLDB4ODAsMHg3RiwweDU1LAorICAgIDB4NzYsMHhFRSwweDhGLDB4QjQsMHgwMCwweEZF
LDB4RDUsMHhCRCwweDE1LDB4REUsMHhCMCwweEI0LDB4ODAsMHhFRCwweEZFLDB4N0UsCisgICAg
MHg2NCwweDU5LDB4MjMsMHg1MSwweEMwLDB4N0EsMHhGRSwweERGLDB4NjMsMHg1OSwweDIzLDB4
NTEsMHhBQiwweEZGLDB4QjksMHhBQSwKKyAgICAweDg0LDB4NjEsMHg0MywweDU5LDB4RjUsMHhG
RCwweEJFLDB4RkIsMHg4NCwweDYxLDB4NDMsMHg1OSwweEMyLDB4NkEsMHg1RSwweDU1LAorICAg
IDB4NjMsMHg1OSwweDAzLDB4NDksMHhBMiwweEVDLDB4NzMsMHhERSwweDI1LDB4NzIsMHgyMyww
eDUxLDB4NTUsMHg1NSwweDU1LDB4OTUsCisgICAgMHg4QiwweDlCLDB4MDIsMHg1MSwweDA5LDB4
MDMsMHgwMiwweDAwLDB4OEIsMHg5QiwweDI5LDB4OTMsMHgwMCwweDBBLDB4QjYsMHhCNywKKyAg
ICAweDQ5LDB4OTMsMHhBNCwweDU5LDB4NzgsMHg2MCwweEU4LDB4RTgsMHhFNSwweDY5LDB4RTMs
MHg0MCwweDVGLDB4NUYsMHhGNywweERDLAorICAgIDB4ODUsMHg1MSwweEUzLDB4MzgsMHhGQSww
eEYyLDB4N0IsMHg1RSwweDQ0LDB4NDksMHhFMywweDM4LDB4OEMsMHhFQSwweDYyLDB4RTMsCisg
ICAgMHgyMywweDQxLDB4RTMsMHgzOCwweEUwLDB4RUEsMHhBQiwweEFELDB4QzYsMHg2MSwweDIz
LDB4NDksMHhGMSwweDcxLDB4RTMsMHhCRCwKKyAgICAweDg1LDB4NTksMHhFMywweDM4LDB4NDIs
MHg0QSwweEVBLDB4NjAsMHgyNCwweDQxLDB4QTIsMHgzMCwweDJCLDB4QUQsMHhGRCwweEFELAor
ICAgIDB4ODUsMHg1OSwweDIzLDB4NDEsMHhGRiwweEFELDB4QUYsMHgyQSwweEE1LDB4NTksMHhF
MywweDM4LDB4RTIsMHhFOCwweEZBLDB4N0YsCisgICAgMHg0NCwweDQ5LDB4RTIsMHgzOCwweDJD
LDB4QkEsMHhERiwweDJELDB4NDQsMHg0MSwweEUzLDB4MzgsMHhGQSwweEZFLDB4RUIsMHhGMCwK
KyAgICAweDg1LDB4NTEsMHgwMywweDM5LDB4OEIsMHhBRCwweDdELDB4NzUsMHg2NCwweDQ5LDB4
RTMsMHgzOCwweDJGLDB4QkUsMHhCRCwweEZELAorICAgIDB4ODUsMHg1MSwweDIzLDB4NDEsMHhF
QSwweDJGLDB4RTUsMHgzNSwweEU2LDB4NjEsMHg0NCwweDQ5LDB4MkQsMHhGNywweEFGLDB4M0Qs
CisgICAgMHhBOCwweDdBLDB4RTUsMHg2MSwweDJBLDB4M0QsMHhGNSwweDlGLDB4MTEsMHhDNSww
eEE4LDB4N0EsMHgwRCwweDBELDB4MjUsMHgxNSwKKyAgICAweDMxLDB4Q0QsMHg4RSwweEI0LDB4
MkIsMHgyRiwweEZGLDB4RDcsMHgxMSwweEM1LDB4MkUsMHhBQywweEMwLDB4NzAsMHg3QywweDBC
LAorICAgIDB4OTMsMHhDRCwweDJELDB4QUMsMHg1NSwweEFELDB4MEIsMHg4MiwweEI0LDB4Q0Qs
MHg2RiwweEFDLDB4MkQsMHhBMCwweEUwLDB4RTIsCisgICAgMHg5NCwweENELDB4MkUsMHhBNCww
eDg4LDB4OEEsMHhFQiwweERCLDB4RjEsMHhCQywweDhGLDB4QUMsMHg2MCwweEYyLDB4OUUsMHhC
RiwKKyAgICAweDYzLDB4NTksMHgwMywweDQ5LDB4QkYsMHhBRSwweEEyLDB4QTAsMHg4NCwweDU5
LDB4NDMsMHg1OSwweEZELDB4N0QsMHgyRCwweENGLAorICAgIDB4ODQsMHg2MSwweDQzLDB4NTks
MHg3RSwweDUyLDB4N0EsMHg1RiwweDY0LDB4NTksMHgyMywweDUxLDB4OUIsMHhFQiwweDdFLDB4
NUYsCisgICAgMHg0NCwweDUxLDB4RTIsMHg0MCwweEU4LDB4QUEsMHhCRiwweEZFLDB4NkIsMHg5
QiwweDAzLDB4NDksMHgzNSwweDI1LDB4MEQsMHgwOSwKKyAgICAweEVELDB4QUIsMHg0QSwweDkz
LDB4NUUsMHg3RSwweDcyLDB4RTgsMHg2QSwweDlCLDB4MjksMHg5MywweDNELDB4RjcsMHhCNyww
eDgwLAorICAgIDB4MDksMHg4QiwweDQ3LDB4NzIsMHhGQywweDc4LDB4NUMsMHg1QywweDY3LDB4
NzIsMHgyNCwweDQ5LDB4NTgsMHg2OCwweEEyLDB4QTgsCisgICAgMHhDNSwweDYxLDB4QzIsMHgz
OCwweDc2LDB4NUYsMHg1RiwweDc4LDB4NjQsMHg0OSwweEUzLDB4MzgsMHhDQiwweDQ5LDB4RkQs
MHhGRCwKKyAgICAweDIzLDB4NDEsMHhFMywweDM4LDB4QUYsMHg5RSwweEJCLDB4MjUsMHg4NSww
eDU5LDB4MDMsMHg0MSwweDJGLDB4MjksMHg5NSwweEJGLAorICAgIDB4ODUsMHg1OSwweEMzLDB4
MzgsMHg0MCwweDcwLDB4NzAsMHg3OCwweDA0LDB4NDEsMHhBMiwweDMwLDB4MEIsMHhGNSwweEJC
LDB4QTEsCisgICAgMHhBNiwweDU5LDB4RTMsMHgzOCwweDAyLDB4MDMsMHgwOSwweEFGLDB4ODUs
MHg1MSwweEUzLDB4MzgsMHg3RSwweDVFLDB4RkMsMHg1RSwKKyAgICAweDY0LDB4NDksMHhFMyww
eDM4LDB4MkYsMHgyNSwweEE1LDB4QjUsMHg0NCwweDQxLDB4RTIsMHgzOCwweDc4LDB4NkEsMHg4
MiwweEVBLAorICAgIDB4MjQsMHg0MSwweEUyLDB4MzgsMHhBRSwweDJELDB4QkYsMHg1NSwweDIz
LDB4MzksMHhFMiwweDMwLDB4RkIsMHhBRSwweDNGLDB4QkQsCisgICAgMHhBNSwweDU5LDB4MjMs
MHg0MSwweEZELDB4REQsMHhCOSwweEEzLDB4RTYsMHg2MSwweDQ0LDB4NDksMHg5NSwweEQ1LDB4
QjcsMHgwQiwKKyAgICAweDQ3LDB4NzIsMHg4NCwweDU5LDB4MkIsMHhBNSwweEZGLDB4M0YsMHg0
RSwweEI0LDB4MjYsMHg3MiwweDNGLDB4M0YsMHhCRCwweEY1LAorICAgIDB4NTUsMHhFRSwweEQw
LDB4QkMsMHg1NywweDJBLDB4MDIsMHgwMywweDM1LDB4RTYsMHhEMCwweEJDLDB4QkQsMHhDOCww
eEMwLDB4RTAsCisgICAgMHg5MywweENELDB4NTIsMHhDNSwweDQzLDB4NjIsMHhDMiwweEJDLDB4
OTMsMHhDRCwweEIwLDB4QjQsMHgwRSwweEJFLDB4RkEsMHg3QSwKKyAgICAweDUyLDB4QzUsMHg0
QywweDhCLDB4QjgsMHhBQywweEFGLDB4QUQsMHhEMCwweEI0LDB4OTAsMHhBQywweEJFLDB4RjYs
MHhFQSwweDU2LAorICAgIDB4NjMsMHg1OSwweDQzLDB4NTEsMHhBRCwweDBELDB4MjksMHgzQiww
eDg0LDB4NjEsMHg0MywweDUxLDB4QUEsMHhFMiwweEQ2LDB4NTUsCisgICAgMHg2MywweDU5LDB4
MjMsMHg1MSwweEFBLDB4RUYsMHg1QSwweDVGLDB4NDMsMHg1MSwweDA0LDB4NDksMHhCOCwweEVB
LDB4RUEsMHhGRSwKKyAgICAweDQ0LDB4NTksMHhFMiwweDQ4LDB4N0YsMHgzRSwweDBCLDB4MDIs
MHhBQiwweEEzLDB4QTUsMHg2MSwweDA5LDB4MDEsMHgwMywweDAzLAorICAgIDB4Q0MsMHhBQiww
eDQ5LDB4OTMsMHhGNywweDdFLDB4RjgsMHg2MCwweDZBLDB4OUIsMHhDOCwweDgyLDB4ODgsMHhG
QiwweDdBLDB4REYsCisgICAgMHhDOCwweDgyLDB4MjYsMHg3MiwweDVDLDB4N0MsMHhGQywweDdD
LDB4NDYsMHg3MiwweDA2LDB4NkEsMHg5RSwweEE2LDB4MkUsMHgyOCwKKyAgICAweEE4LDB4ODIs
MHgwMywweDQxLDB4NUEsMHg3OCwweDYwLDB4QzAsMHgyNCwweDQxLDB4QzIsMHgzMCwweDhCLDB4
QUIsMHhGRCwweDU3LAorICAgIDB4NDQsMHg0OSwweEMyLDB4MzAsMHgzRiwweEJGLDB4QkQsMHg2
RCwweDY1LDB4NTEsMHhFMywweDM4LDB4MkUsMHhCRSwweDdGLDB4RkQsCisgICAgMHhBNiwweDU5
LDB4RTMsMHgzOCwweDU4LDB4N0EsMHg3RiwweEZGLDB4MDMsMHgzOSwweEEyLDB4MzAsMHgwQiww
eDJCLDB4OTcsMHhCNiwKKyAgICAweDY1LDB4NDksMHgwMywweDQxLDB4Q0QsMHhFOSwweEU5LDB4
ODEsMHgyNCwweDQxLDB4RTMsMHgzOCwweEZBLDB4QjYsMHhGQywweDU0LAorICAgIDB4NDQsMHg0
MSwweEUzLDB4MzAsMHgzRiwweDNGLDB4RjUsMHg1NSwweDQ0LDB4NDEsMHhDMiwweDMwLDB4N0Es
MHhEOCwweEZGLDB4RjcsCisgICAgMHgyMywweDM5LDB4RTIsMHgzMCwweEZELDB4QUUsMHhBQiww
eEY3LDB4MjMsMHgzOSwweEMzLDB4MzgsMHhBQiwweDNFLDB4OUEsMHhCQSwKKyAgICAweDY0LDB4
NDksMHgwMywweDM5LDB4MjksMHg3NSwweDU3LDB4NUYsMHg0NywweDZBLDB4MDMsMHg0MSwweEFG
LDB4MkQsMHhCRCwweEZELAorICAgIDB4NDcsMHg3MiwweEE1LDB4NTksMHgzMywweEVGLDB4QjAs
MHg2MywweDA5LDB4ODMsMHgyNiwweDZBLDB4MjUsMHhCNSwweEVGLDB4RUQsCisgICAgMHgxNSww
eEU2LDB4OEIsMHg5MywweDAzLDB4MDEsMHgwOSwweEE5LDB4MTQsMHhFNiwweDMyLDB4QzUsMHhG
OCwweEQ4LDB4REEsMHhERSwKKyAgICAweDkzLDB4Q0QsMHhGMSwweEJDLDB4QTAsMHhFOCwweEJD
LDB4REEsMHg1MiwweEM1LDB4NkMsMHg4QiwweEEwLDB4RTgsMHhFOCwweDZBLAorICAgIDB4OTAs
MHhBQywweEVFLDB4OUIsMHgwOSwweDg5LDB4RUQsMHhCOSwweDhGLDB4QUMsMHg0RiwweEE0LDB4
M0UsMHg4OSwweDU5LDB4MUUsCisgICAgMHg2MywweDU5LDB4MjMsMHg1MSwweEFBLDB4QzAsMHhG
RSwweERGLDB4NDMsMHg1MSwweDAzLDB4NDksMHgwMiwweDJCLDB4Q0EsMHhGQSwKKyAgICAweDQz
LDB4NTEsMHgwMiwweDQ5LDB4QkUsMHhBRSwweEVELDB4QkIsMHg0NCwweDU5LDB4MDMsMHg1MSww
eDdGLDB4QkIsMHgzRiwweDBGLAorICAgIDB4QzYsMHg2OSwweDAzLDB4NTEsMHhGRCwweEJGLDB4
QkYsMHgzRiwweEVDLDB4QUIsMHhFOSwweDhBLDB4MjksMHgwOSwweDJCLDB4OEEsCisgICAgMHgy
RCwweEI0LDB4OEIsMHg5QiwweDc4LDB4RkEsMHhBQSwweDU1LDB4QUIsMHhBMywweDg3LDB4N0Es
MHhGRSwweEZBLDB4RTAsMHg3QSwKKyAgICAweEE3LDB4ODIsMHgyNSwweDZBLDB4N0MsMHhEQyww
eDdFLDB4NUYsMHhBOCwweDgyLDB4MjUsMHg2QSwweEJELDB4MjcsMHgwRCwweDAzLAorICAgIDB4
QTgsMHg4MiwweEU1LDB4NjksMHhDMCwweDgwLDB4RTgsMHg1NiwweEU1LDB4NjEsMHhBMiwweDMw
LDB4NUYsMHg1NCwweDVDLDB4NTgsCisgICAgMHhFMywweDM4LDB4QTIsMHgzMCwweDhCLDB4RjUs
MHhENywweEFBLDB4MjQsMHg0OSwweEMyLDB4MzAsMHgyRiwweEFELDB4RkQsMHhCQiwKKyAgICAw
eDY1LDB4NDksMHgwMywweDM5LDB4N0MsMHg1RiwweDVCLDB4RkIsMHgwMywweDQxLDB4QTIsMHgy
OCwweEJFLDB4QjYsMHg1RSwweEQ4LAorICAgIDB4NjUsMHg0OSwweEMyLDB4MzAsMHgwMywweEFC
LDB4RUQsMHhFRCwweDIzLDB4NDEsMHhBMiwweDI4LDB4RjgsMHhCRSwweDc3LDB4RjcsCisgICAg
MHgwMywweDM5LDB4QzMsMHgzMCwweEVGLDB4QUIsMHg5RiwweDM1LDB4MDMsMHgzOSwweEMyLDB4
MzAsMHhCRiwweDdELDB4RkYsMHhGRSwKKyAgICAweDIzLDB4NDEsMHhFMywweDM4LDB4NTUsMHg1
NSwweEZELDB4Q0IsMHgyMywweDQxLDB4QzIsMHgzMCwweEY1LDB4QkUsMHhBRSwweDIwLAorICAg
IDB4NDQsMHg0OSwweDAzLDB4MzksMHhFRiwweEUzLDB4N0EsMHg3OCwweDQ0LDB4NDksMHgwMyww
eDQxLDB4MjcsMHhENSwweEQ3LDB4NUEsCisgICAgMHhDNSwweDYxLDB4MjMsMHg0MSwweDBFLDB4
QkIsMHhBRiwweEFELDB4QTgsMHg3QSwweEM1LDB4NjEsMHgwOSwweDA5LDB4MEIsMHhBQiwKKyAg
ICAweDUyLDB4Q0QsMHhBOCwweDdBLDB4MDksMHgwOSwweDBELDB4MkQsMHg3MywweENELDB4RDAs
MHhCNCwweDhDLDB4MEMsMHgwQywweEM3LAorICAgIDB4MzIsMHhDNSwweDJFLDB4QTQsMHg4MCww
eEVBLDB4RjgsMHg3OCwweEYxLDB4QkMsMHhBRCwweDkzLDB4NUEsMHhCQSwweEE4LDB4RkYsCisg
ICAgMHgzMSwweEJELDB4RUQsMHg5QiwweEFGLDB4MDIsMHhCRiwweEQ1LDB4MzIsMHhDNSwweDhG
LDB4QUMsMHg1NSwweDVGLDB4QUEsMHgyNSwKKyAgICAweDQzLDB4NTEsMHgwMiwweDQ5LDB4Qjgs
MHhFMCwweEZBLDB4NkEsMHg0MywweDUxLDB4MDIsMHg0OSwweEQ4LDB4OTYsMHhCNSwweDJELAor
ICAgIDB4NDMsMHg1MSwweDIzLDB4NTEsMHhERCwweEZBLDB4M0MsMHgyNSwweDQ0LDB4NTksMHgy
MywweDUxLDB4QUEsMHhBOCwweDgwLDB4NEUsCisgICAgMHgyOSwweDkzLDB4MjMsMHg1MSwweDk1
LDB4OTUsMHgxNSwweDM1LDB4QUIsMHhBMywweDg3LDB4N0EsMHg4MiwweEUwLDB4N0EsMHg1RSwK
KyAgICAweDBBLDB4OTMsMHg2NywweDcyLDB4QTAsMHg3RSwweDU1LDB4NTUsMHhDOCwweDgyLDB4
NDYsMHg3MiwweDc4LDB4N0YsMHg3RiwweDc3LAorICAgIDB4ODcsMHg3QSwweDI2LDB4NkEsMHhG
RiwweEFGLDB4M0YsMHgyQiwweEM4LDB4ODIsMHhDNSwweDYxLDB4QTIsMHhGOCwweDdFLDB4NUYs
CisgICAgMHgyNiwweDZBLDB4QzQsMHg2MSwweERFLDB4RUEsMHgyRiwweDNGLDB4MDYsMHg2QSww
eDgyLDB4MzAsMHg3OCwweEUwLDB4QzAsMHg4MCwKKyAgICAweDAzLDB4MzksMHg4MSwweDI4LDB4
MEIsMHgzRCwweDlGLDB4QkYsMHg0NCwweDQ5LDB4QTIsMHgzMCwweEFGLDB4MzcsMHhBRiwweDJG
LAorICAgIDB4NjUsMHg0OSwweEMzLDB4MzAsMHhBOCwweEFBLDB4RUIsMHg3NywweDI0LDB4NDEs
MHg4MiwweDIwLDB4RTgsMHhFMiwweEYyLDB4N0EsCisgICAgMHgyNCwweDQxLDB4ODIsMHgyMCww
eEEzLDB4QkYsMHhGNSwweEVELDB4RTMsMHgzMCwweEEyLDB4MjgsMHg4MCwweEY4LDB4RUQsMHhC
NSwKKyAgICAweDI0LDB4NDEsMHhBMiwweDMwLDB4MEQsMHhBRiwweEZGLDB4QkYsMHgwNCwweDM5
LDB4QzIsMHgzMCwweEI0LDB4RkYsMHhGRiwweEZGLAorICAgIDB4ODUsMHg0OSwweDAzLDB4Mzks
MHhGRiwweEU5LDB4RTMsMHg3RCwweDQ0LDB4NDksMHhFMywweDM4LDB4ODAsMHhFMCwweDVCLDB4
RkQsCisgICAgMHgyMywweDQxLDB4RTIsMHgzOCwweDgyLDB4NTcsMHhENSwweDU1LDB4NDMsMHg0
MSwweEMyLDB4MzAsMHhBQSwweEE5LDB4QUYsMHg4RiwKKyAgICAweDg1LDB4NTEsMHgwMiwweDM5
LDB4MkUsMHgzRiwweDNELDB4MjksMHg2NywweDcyLDB4QzUsMHg1OSwweEJELDB4Q0QsMHg4OSww
eERELAorICAgIDB4MzEsMHhDNSwweDA2LDB4NjIsMHgwRCwweDBELDB4MDUsMHgyNSwweDUzLDB4
Q0QsMHg4QywweDhCLDB4MDIsMHhFQSwweEZGLDB4NUUsCisgICAgMHg5MCwweEFDLDB4QUQsMHg5
MywweDc4LDB4NUYsMHg1NSwweDU1LDB4RUUsMHg5QiwweDRCLDB4ODMsMHgyMiwweDJCLDB4RUIs
MHg3RSwKKyAgICAweDBFLDB4OUMsMHgyQiwweDdCLDB4MzAsMHhCOCwweEQ3LDB4NTUsMHhGMSww
eEJDLDB4NEIsMHg4MywweDBBLDB4MEEsMHgyQiwweEI1LAorICAgIDB4MjMsMHg1MSwweDAyLDB4
NDEsMHhGMiwweEVDLDB4OUUsMHhBQywweDIzLDB4NDksMHgwMiwweDQ5LDB4ODAsMHhDQiwweEVB
LDB4MEMsCisgICAgMHg0MywweDUxLDB4MjMsMHg1MSwweEExLDB4RTMsMHg4RiwweEE3LDB4NDQs
MHg1MSwweDAyLDB4NDksMHhCOCwweDY4LDB4RkEsMHg1RSwKKyAgICAweDA5LDB4OEIsMHgwMyww
eDQ5LDB4MzUsMHgzNSwweDI1LDB4MjUsMHhFOSwweDhBLDB4NDcsMHg3MiwweEY4LDB4RjgsMHhG
QSwweEZFLAorICAgIDB4ODcsMHg3QSwweDY3LDB4NzIsMHhGRiwweEFBLDB4ODAsMHgwMCwweDg3
LDB4N0EsMHg0NiwweDcyLDB4N0UsMHg3RSwweEQ4LDB4NUEsCisgICAgMHg4NywweDdBLDB4MjYs
MHg2QSwweEFCLDB4Q0IsMHhDQSwweDdBLDB4MjYsMHg3MiwweEE0LDB4NjEsMHg3QywweERFLDB4
QjYsMHgyRiwKKyAgICAweDg3LDB4N0EsMHhFNSwweDYxLDB4RDUsMHhENSwweDhCLDB4QUEsMHg4
NywweDdBLDB4MjMsMHg0MSwweEVBLDB4NjAsMHhDMCwweEVBLAorICAgIDB4MjMsMHg0MSwweDgx
LDB4MjgsMHhCNywweEE1LDB4MEQsMHgwQiwweDQ0LDB4NDksMHhFMiwweDM4LDB4RUYsMHg0Myww
eDRGLDB4NTcsCisgICAgMHhDMiwweDMwLDB4ODIsMHgyMCwweDIwLDB4RkUsMHg3QSwweDVGLDB4
RTMsMHgzMCwweDYxLDB4MjAsMHg3OCwweERFLDB4RjcsMHhGRCwKKyAgICAweEMzLDB4MjgsMHg4
MiwweDIwLDB4QzksMHhCRCwweEQ1LDB4QjcsMHhFMywweDMwLDB4QTIsMHgyOCwweEE3LDB4RUIs
MHhGRiwweEJGLAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHgwRiwweEVCLDB4QTgsMHg5RSww
eDAzLDB4MzksMHhDMywweDMwLDB4REQsMHhCNSwweEY1LDB4OTUsCisgICAgMHgwMywweDM5LDB4
QzIsMHgzMCwweEEyLDB4OEEsMHgwQSwweEE3LDB4MDMsMHg0MSwweEUyLDB4MzAsMHhBMiwweENF
LDB4QkYsMHgyRiwKKyAgICAweDY1LDB4NDksMHhFMiwweDM4LDB4RDcsMHhGRCwweEFELDB4MEYs
MHg0MywweDQ5LDB4RTMsMHgzMCwweEI2LDB4REYsMHg1QiwweEUwLAorICAgIDB4ODQsMHg0OSww
eEUyLDB4MzgsMHgyRCwweDk3LDB4QkQsMHhGRiwweDA2LDB4NjIsMHg2MywweDQ5LDB4MkQsMHgz
RiwweEQ1LDB4QjUsCisgICAgMHg2RiwweEFDLDB4RTYsMHg1OSwweDI1LDB4MzUsMHgzNSwweDM1
LDB4RDAsMHhCNCwweENBLDB4NzIsMHhGOCwweEY4LDB4NUEsMHg2MCwKKyAgICAweEFELDB4OEIs
MHgwNywweDVBLDB4MDAsMHg4MCwweEZBLDB4NTcsMHg0QiwweDdCLDB4NjgsMHg1QSwweDIwLDB4
RUIsMHhGRCwweEY1LAorICAgIDB4RUQsMHg5MywweEVBLDB4NzIsMHhENSwweEY1LDB4QjUsMHgw
RCwweDBFLDB4OUMsMHg0QiwweDgzLDB4M0QsMHhGRCwweENGLDB4MDgsCisgICAgMHgyMywweDQ5
LDB4MDMsMHg0OSwweDFCLDB4QTMsMHhFOCwweDk3LDB4NDMsMHg1MSwweDIzLDB4NTEsMHg3NSww
eEE1LDB4NkIsMHhGOCwKKyAgICAweDQzLDB4NTEsMHgwMywweDQ5LDB4QTIsMHg3RSwweERFLDB4
N0YsMHg2NCwweDUxLDB4RTIsMHg0OCwweEZGLDB4RkYsMHhGRiwweDFGLAorICAgIDB4RTgsMHg4
MiwweDAyLDB4NDksMHgwNSwweDA5LDB4MDMsMHgwMCwweEM3LDB4ODIsMHg4NywweDdBLDB4NTcs
MHg1RiwweDc3LDB4RjgsCisgICAgMHhBNywweDdBLDB4NjYsMHg3MiwweEVCLDB4QkEsMHg3QSww
eDFDLDB4QUEsMHg5QiwweDY3LDB4NzIsMHg1NSwweEQ1LDB4MkQsMHhDMiwKKyAgICAweDQ5LDB4
OTMsMHhFNSwweDYxLDB4QUYsMHhFMCwweDVDLDB4NTUsMHg2NywweDdBLDB4MjMsMHg0OSwweEE4
LDB4QUEsMHg1QSwweEQ3LAorICAgIDB4NDYsMHg3MiwweDQzLDB4NDEsMHgwMiwweDJBLDB4NTUs
MHg1NSwweDQ3LDB4NzIsMHgwMywweDQxLDB4QzAsMHhFOCwweEY1LDB4RDUsCisgICAgMHgyMyww
eDQxLDB4ODEsMHgyOCwweEFBLDB4QTgsMHhFMCwweDdBLDB4MjMsMHgzOSwweDgxLDB4MjAsMHg2
OCwweDdGLDB4NTcsMHg1RCwKKyAgICAweEMzLDB4MjgsMHg2MSwweDE4LDB4REYsMHhCRiwweEI1
LDB4MjksMHgwMywweDM5LDB4ODIsMHgyMCwweEZELDB4QUYsMHhBMywweDAyLAorICAgIDB4RTIs
MHgzMCwweDgyLDB4MjAsMHhENywweEZBLDB4MkUsMHhBQywweEUyLDB4MzAsMHhBMiwweDI4LDB4
RDUsMHhERiwweDVDLDB4N0EsCisgICAgMHhFMywweDMwLDB4ODEsMHgyOCwweDNFLDB4MkIsMHhC
RiwweEVELDB4MDQsMHgzOSwweEEyLDB4MjgsMHg4QiwweDIyLDB4M0YsMHhGRCwKKyAgICAweDI0
LDB4MzksMHhDMywweDMwLDB4M0QsMHhFQSwweEFFLDB4RDUsMHgwMywweDM5LDB4RTIsMHgzMCww
eEEwLDB4NTQsMHgzOCwweDM4LAorICAgIDB4NDQsMHg0MSwweEUyLDB4MzgsMHgwRiwweEJELDB4
QjcsMHgxNywweDY0LDB4NDksMHgwMywweDQxLDB4RTAsMHhCMCwweEIyLDB4NTgsCisgICAgMHg0
NCwweDQxLDB4RTIsMHgzOCwweDNGLDB4Q0EsMHgyQSwweEY1LDB4QTUsMHg1MSwweEUyLDB4Mzgs
MHgyQSwweEFGLDB4MkEsMHhCRCwKKyAgICAweDBFLDB4QTQsMHhDNSwweDU5LDB4MzUsMHgxNSww
eDk1LDB4OTUsMHg1MiwweEM1LDB4NkYsMHhBQywweDcwLDB4QzIsMHgyOSwweEI1LAorICAgIDB4
NTIsMHhDNSwweEVBLDB4NzIsMHg1RiwweEFBLDB4QTAsMHg4MCwweDZGLDB4QTQsMHg4OSwweDYy
LDB4RDUsMHgwMCwweDAwLDB4MDAsCisgICAgMHg2RiwweEE0LDB4NkIsMHg4MywweDJELDB4MkEs
MHgyOCwweDgwLDB4NkYsMHhBQywweENELDB4OTMsMHhCNiwweDNFLDB4M0EsMHhBQSwKKyAgICAw
eDY0LDB4NTksMHhFMiwweDQwLDB4M0YsMHhBOSwweDBBLDB4MDIsMHg0MywweDUxLDB4MDIsMHg0
OSwweDg4LDB4QTgsMHg2OCwweEY4LAorICAgIDB4MjIsMHg0OSwweDAzLDB4NDksMHhGRSwweDVB
LDB4RjgsMHg3RiwweENCLDB4QTMsMHgwMywweDQ5LDB4OTUsMHgzNSwweDM1LDB4MjUsCisgICAg
MHg2QSwweDlCLDB4QzcsMHg4MiwweDVGLDB4NzgsMHg3OCwweEY4LDB4OEEsMHg5QiwweDg2LDB4
N0EsMHg3NywweDU3LDB4OUYsMHgyRiwKKyAgICAweENCLDB4QTMsMHg2NiwweDdBLDB4MzUsMHgw
QiwweEUyLDB4NTgsMHg4QSwweDlCLDB4QTQsMHg1OSwweDcwLDB4N0UsMHg1RiwweDVGLAorICAg
IDB4RTUsMHg2MSwweDQzLDB4NDksMHgwQSwweDgyLDB4NjIsMHg1QywweDg0LDB4NTEsMHgyNCww
eDQxLDB4NzgsMHhGRiwweEZCLDB4QkYsCisgICAgMHgwNiwweDYyLDB4MDMsMHg0MSwweDVELDB4
RkQsMHhBMiwweDc4LDB4QTQsMHg1MSwweEMyLDB4MzgsMHhFRiwweEZBLDB4NzAsMHg3RiwKKyAg
ICAweEUzLDB4MzgsMHg2MSwweDE4LDB4QzgsMHhFQSwweEZFLDB4NkUsMHhDMiwweDMwLDB4NjEs
MHgxOCwweERGLDB4NUYsMHhENywweDI1LAorICAgIDB4QzIsMHgyOCwweDgxLDB4MjAsMHgzRCww
eEZBLDB4QjgsMHhBMiwweEUzLDB4MzAsMHhBMiwweDI4LDB4QTAsMHhFNywweDBCLDB4ODIsCisg
ICAgMHhFMiwweDMwLDB4QTIsMHgyOCwweEYyLDB4QzIsMHgzOSwweDNGLDB4RTMsMHgzMCwweEEy
LDB4MjgsMHhENSwweEZBLDB4RjAsMHhCOCwKKyAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4RkQs
MHhGQSwweDk2LDB4QTQsMHhFMiwweDMwLDB4QTIsMHgyOCwweEFGLDB4QjUsMHhGRiwweEZGLAor
ICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHgzNSwweEZGLDB4RTcsMHhCNSwweDIzLDB4MzksMHhD
MiwweDMwLDB4QjAsMHhCMiwweEY5LDB4REQsCisgICAgMHg0NCwweDQxLDB4QzIsMHgzMCwweDlG
LDB4M0YsMHhBRiwweEJGLDB4ODUsMHg1MSwweEUzLDB4MzAsMHg3OCwweDc4LDB4NUYsMHhENSwK
KyAgICAweDI0LDB4MzksMHhDMywweDI4LDB4QTIsMHhFQiwweEVCLDB4QkUsMHhBNSwweDUxLDB4
MDMsMHgzOSwweEJELDB4MEQsMHhBNSwweEY1LAorICAgIDB4ODgsMHg2QSwweDY0LDB4NDksMHgz
NSwweDNGLDB4MzcsMHgzRCwweEQwLDB4QjQsMHhBRCwweDkzLDB4MkIsMHhCRiwweEY1LDB4NTUs
CisgICAgMHgzMSwweEJELDB4RUQsMHg5QiwweDgwLDB4QUIsMHhBRiwweEQ1LDB4RjAsMHhCNCww
eDRGLDB4QTQsMHhERiwweEZFLDB4RjgsMHhBQSwKKyAgICAweEIwLDB4QUMsMHg0RSwweEE0LDB4
RkYsMHhGRiwweDVGLDB4RTIsMHg2RiwweEFDLDB4MEUsMHg5QywweEE4LDB4QTAsMHhGQSwweDdB
LAorICAgIDB4NjQsMHg1MSwweDIzLDB4NDksMHgwQiwweDhCLDB4RUYsMHhERCwweDQzLDB4NTEs
MHgwMiwweDQ5LDB4RkMsMHg1RSwweDU3LDB4NTcsCisgICAgMHgyMywweDQ5LDB4RTIsMHg0MCww
eEVBLDB4QkUsMHhCQiwweEE3LDB4NkEsMHg5MywweDIzLDB4NDksMHgwNSwweDBELDB4MEQsMHgw
OSwKKyAgICAweDZBLDB4OUIsMHgwOCwweDhCLDB4NUEsMHhGRSwweEFBLDB4MDIsMHhDQiwweEEz
LDB4NjYsMHg3MiwweDAyLDB4QzIsMHg3MiwweDVFLAorICAgIDB4MjksMHg5MywweDA1LDB4NjIs
MHhGQywweERGLDB4RkYsMHg3RiwweDQ2LDB4NzIsMHg0MywweDQ5LDB4RjgsMHg3QywweDU3LDB4
NTUsCisgICAgMHg4NCwweDUxLDB4NDQsMHg0OSwweEZFLDB4QjMsMHg5OCwweEU4LDB4NjQsMHg1
MSwweDAzLDB4MzksMHgzQSwweEZBLDB4N0UsMHg3QSwKKyAgICAweEM1LDB4NjEsMHhFMiwweDQw
LDB4NjAsMHhFMCwweEVCLDB4RTUsMHgwMywweDQxLDB4QzIsMHgzMCwweEU4LDB4N0MsMHhGRSww
eDdFLAorICAgIDB4RTIsMHgzMCwweDYxLDB4MTgsMHg2QSwweDU4LDB4N0EsMHg1NywweDI0LDB4
MzksMHg2MSwweDE4LDB4QkQsMHhBRCwweDBCLDB4RkYsCisgICAgMHgyMywweDM5LDB4QTIsMHgy
OCwweEZGLDB4ODIsMHhBOCwweEI1LDB4MDMsMHgzOSwweEEyLDB4MjgsMHhERiwweEZGLDB4QUEs
MHhCOCwKKyAgICAweDAzLDB4MzksMHhBMiwweDI4LDB4QUIsMHg4QSwweEEzLDB4RUYsMHgwMyww
eDMxLDB4ODIsMHgyMCwweDg4LDB4QTgsMHhCQSwweEQ3LAorICAgIDB4RTMsMHgzMCwweEEyLDB4
MjgsMHg1NiwweDdFLDB4ODAsMHg4MiwweEUzLDB4MzAsMHg4MSwweDI4LDB4RkEsMHg1RiwweEZF
LDB4MEEsCisgICAgMHgwMywweDM5LDB4QTIsMHgyOCwweEZELDB4QkQsMHhCQiwweEY4LDB4RTIs
MHgzMCwweEExLDB4MjgsMHg4QiwweEUyLDB4QkEsMHhGRiwKKyAgICAweDAzLDB4MzEsMHhDMiww
eDI4LDB4QjksMHgwRCwweDhBLDB4RUIsMHgwMywweDMxLDB4QzMsMHgzMCwweEZCLDB4RjgsMHhE
NiwweDdELAorICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHgxRiwweEFGLDB4MjcsMHgyRSwweDY0
LDB4NDksMHhDMiwweDI4LDB4MkYsMHgwRiwweEFGLDB4MjUsCisgICAgMHg0QiwweDhCLDB4NjQs
MHg0OSwweEJELDB4MzUsMHgyNSwweDJELDB4RUUsMHg5QiwweDZCLDB4OEIsMHhGQSwweEZBLDB4
NjAsMHg2QSwKKyAgICAweEVELDB4OUIsMHgyQSwweDgzLDB4MDIsMHgyQiwweDJGLDB4QjcsMHg2
RiwweEE0LDB4Q0QsMHg5MywweDAyLDB4RjcsMHhGRiwweDU1LAorICAgIDB4NkYsMHhBQywweENE
LDB4OTMsMHhDOCwweDdGLDB4NTUsMHg1NSwweDJFLDB4OUMsMHhBQywweDkzLDB4MkEsMHhBRiww
eEI1LDB4RDUsCisgICAgMHgyMywweDQ5LDB4MDIsMHg0MSwweEUwLDB4RUUsMHhFRiwweERGLDB4
MjMsMHg0OSwweEUyLDB4NDAsMHhGQSwweDc2LDB4RkYsMHhBRSwKKyAgICAweDIzLDB4NDksMHhF
MiwweDQwLDB4RkYsMHhBRCwweDhGLDB4QUEsMHg0OSwweDkzLDB4MDMsMHg0OSwweDAxLDB4MDks
MHhGNSwweEQ1LAorICAgIDB4MjksMHg5MywweDg0LDB4NTksMHgwMCwweEE4LDB4RUEsMHg3Riww
eEM4LDB4ODIsMHgwMywweDQxLDB4QTgsMHhBQSwweEZGLDB4RDUsCisgICAgMHg2NywweDcyLDB4
NDMsMHg1MSwweDYwLDB4N0UsMHg1NywweERGLDB4ODUsMHg1MSwweDIyLDB4NDEsMHgzNywweEI3
LDB4MDMsMHhBMiwKKyAgICAweDg0LDB4NDksMHg0NCwweDQ5LDB4NjIsMHg3QSwweDdFLDB4RDcs
MHhFNiwweDYxLDB4MjMsMHg0MSwweDU3LDB4NTUsMHhCRCwweDgyLAorICAgIDB4QzQsMHg1OSww
eDAzLDB4MzksMHg1NSwweEQ1LDB4N0YsMHg1QywweDIzLDB4NDEsMHhBMiwweDI4LDB4NjgsMHg2
RSwweDZBLDB4RUMsCisgICAgMHgwMywweDMxLDB4NjEsMHgyMCwweEQ1LDB4RjcsMHhFQiwweEFC
LDB4ODEsMHgyOCwweEMyLDB4MjAsMHhFOCwweEFBLDB4OEYsMHhBQiwKKyAgICAweEUzLDB4MzAs
MHg4MSwweDI4LDB4OTcsMHhENSwweERGLDB4NzAsMHgyMywweDQxLDB4QTEsMHgyOCwweDdFLDB4
RkIsMHhFQiwweDgzLAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHgyOSwweEZCLDB4REYsMHgz
NywweDAzLDB4MzksMHg4MSwweDI4LDB4REUsMHhGRiwweEY3LDB4RTAsCisgICAgMHgwMywweDMx
LDB4QTIsMHgyOCwweEVGLDB4QjksMHhBOSwweDg5LDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGRCww
eDY5LDB4RUUsMHg3NSwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4RjMsMHhFQiwweDBELDB4
OEQsMHhFMywweDMwLDB4QzIsMHgyOCwweDcxLDB4NEIsMHhFRSwweDU0LAorICAgIDB4RTMsMHgz
MCwweEExLDB4MjgsMHgwMiwweDg3LDB4OEYsMHhCRiwweDAzLDB4MzEsMHhDMiwweDI4LDB4RkIs
MHhCNywweEJBLDB4RUIsCisgICAgMHgyMywweDM5LDB4RTIsMHgzMCwweEJELDB4REYsMHg1Nyww
eERELDB4ODQsMHg1MSwweEUyLDB4MzAsMHgzNywweDJELDB4M0IsMHg4QiwKKyAgICAweDJELDB4
QTQsMHg4NCwweDUxLDB4QTUsMHhFRCwweDA5LDB4MEIsMHg4RiwweEI0LDB4QTgsMHg3MiwweEZG
LDB4NTUsMHhFQSwweDAwLAorICAgIDB4Q0QsMHg5QiwweDY3LDB4NjIsMHhCRiwweDU1LDB4RkYs
MHhGOCwweDRCLDB4ODMsMHg0NywweDYyLDB4QkMsMHg1NywweEZGLDB4RkYsCisgICAgMHhBQyww
eDhCLDB4NjcsMHg2MiwweDAwLDB4MkQsMHhCNSwweDU3LDB4QUQsMHg5MywweDA5LDB4N0IsMHgw
MCwweDIyLDB4QUEsMHhBOSwKKyAgICAweDAyLDB4NDEsMHhFMywweDQwLDB4MzAsMHhBRSwweDAw
LDB4QjAsMHgyMywweDQ5LDB4RTIsMHg0MCwweEFGLDB4QUEsMHgyMiwweEU2LAorICAgIDB4MjMs
MHg0MSwweEUyLDB4NDAsMHgwQSwweEUwLDB4RTAsMHg5QywweDQ0LDB4NDksMHhFMiwweDQwLDB4
MzYsMHhCRCwweEZGLDB4RjUsCisgICAgMHhFNSwweDYxLDB4MDIsMHg0MSwweEUwLDB4NUYsMHg1
NSwweDU1LDB4MDYsMHg2MiwweEUyLDB4NDAsMHhCNSwweDM1LDB4MzUsMHgzNSwKKyAgICAweEU1
LDB4NjEsMHg4NCwweDUxLDB4NUUsMHhGRSwweDc4LDB4RTAsMHhBNSwweDUxLDB4MjMsMHg0MSww
eEU4LDB4RTgsMHhFRiwweEQ3LAorICAgIDB4MjYsMHg2QSwweDQ0LDB4NDksMHgzNSwweDA1LDB4
MjUsMHhENSwweEU0LDB4NjEsMHg4MiwweDMwLDB4QTAsMHhGOCwweDVDLDB4NTYsCisgICAgMHg4
NCwweDUxLDB4QzIsMHgzMCwweDc4LDB4REEsMHhGRiwweEY1LDB4MDMsMHgzOSwweDgxLDB4MjAs
MHg3QSwweEZBLDB4RjgsMHg1RiwKKyAgICAweEMyLDB4MjgsMHg4MiwweDI4LDB4ODEsMHg4Myww
eEEyLDB4OEIsMHg2NCwweDQ5LDB4QTIsMHgyOCwweEFELDB4ODksMHg4QiwweDdCLAorICAgIDB4
MjQsMHg0MSwweDgxLDB4MjgsMHg4OCwweEE4LDB4QUEsMHhGRCwweDQ0LDB4NDksMHhFMiwweDM4
LDB4MEQsMHgyRiwweEQ3LDB4REQsCisgICAgMHg0NCwweDQxLDB4QTEsMHgyOCwweERFLDB4NUMs
MHg3QSwweEZBLDB4MDQsMHgzOSwweDgxLDB4MjgsMHgwMCwweEEzLDB4RkYsMHhENywKKyAgICAw
eEUzLDB4MzAsMHhBMiwweDI4LDB4QzAsMHhGNSwweEY3LDB4QUQsMHhFMywweDMwLDB4QTIsMHgy
OCwweDBGLDB4QUYsMHg1NywweDc4LAorICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHgyRiwweEZG
LDB4QUQsMHhBRiwweDAzLDB4MzEsMHhDMiwweDI4LDB4NUYsMHg3RiwweEQ1LDB4RTMsCisgICAg
MHgyMywweDM5LDB4QzIsMHgyOCwweEQ1LDB4RkQsMHhBRiwweEJGLDB4MDMsMHgzOSwweEMyLDB4
MzAsMHg4QiwweEJGLDB4QTYsMHhBQSwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4RkYsMHhD
QSwweEFCLDB4MkEsMHg0QSwweDhCLDB4MDMsMHgzOSwweEY1LDB4QjUsMHhCNSwweDM1LAorICAg
IDB4MzEsMHhDNSwweDRBLDB4ODMsMHhBOSwweDgyLDB4MDIsMHgwMCwweDEwLDB4QzUsMHg2RSww
eEFDLDB4QkYsMHhGNywweDdDLDB4QTAsCisgICAgMHg2RSwweEFDLDB4MEEsMHg4MywweDVDLDB4
NzAsMHg4MCwweDgwLDB4NkIsMHg5MywweDY3LDB4NkEsMHhENSwweEY3LDB4REUsMHhFOCwKKyAg
ICAweDRBLDB4ODMsMHg0NywweDYyLDB4N0UsMHhFQSwweEFBLDB4MDIsMHg0QiwweDgzLDB4QTUs
MHg0OSwweDBGLDB4REYsMHg3RSwweEY4LAorICAgIDB4MjMsMHg0OSwweEUzLDB4NDAsMHhCRiww
eEFCLDB4QUIsMHhCRSwweDIzLDB4NDksMHgwMywweDQxLDB4RjUsMHhCRiwweDRGLDB4NzcsCisg
ICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDI4LDB4MkMsMHhBRSwweEZFLDB4MDMsMHg0MSwweEUy
LDB4MzgsMHhBMiwweEFGLDB4NzksMHg2NSwKKyAgICAweDAyLDB4NDEsMHhFMiwweDM4LDB4MzIs
MHgyQiwweEZELDB4QUYsMHgyNiwweDZBLDB4RTIsMHg0MCwweDM1LDB4MzUsMHgzNSwweDE1LAor
ICAgIDB4MjYsMHg2QSwweDIzLDB4NDEsMHhFOCwweDY4LDB4NjgsMHg2OCwweDQ0LDB4NDEsMHgw
MywweDM5LDB4QTIsMHgzNSwweDdELDB4NUQsCisgICAgMHg0NCwweDQxLDB4RTIsMHgzMCwweEJB
LDB4NjgsMHg0QSwweEJGLDB4QTQsMHg1MSwweEEyLDB4MjgsMHg3MCwweDdCLDB4NTcsMHg3RiwK
KyAgICAweEMyLDB4MjgsMHg4MSwweDIwLDB4ODMsMHhDMiwweDYwLDB4MEEsMHhFMywweDI4LDB4
NjEsMHgyMCwweEQ3LDB4RjUsMHhBQiwweDIyLAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhG
RiwweEY5LDB4QUIsMHg4QSwweDAzLDB4MzEsMHhBMiwweDI4LDB4NzMsMHg1NywweDVGLDB4RkUs
CisgICAgMHhDMiwweDI4LDB4ODEsMHgyMCwweDVCLDB4NzgsMHhCRSwweEFGLDB4MDMsMHg0MSww
eDgxLDB4MjAsMHgwQiwweEFELDB4RkYsMHg1NywKKyAgICAweDQ0LDB4NDEsMHhBMiwweDI4LDB4
RkEsMHhFQSwweDhCLDB4RTUsMHhFMiwweDMwLDB4ODEsMHgyOCwweEVFLDB4M0IsMHhGRCwweEE4
LAorICAgIDB4MDMsMHgzOSwweDgxLDB4MjAsMHhGNSwweERFLDB4QUYsMHgyQSwweDI0LDB4NDEs
MHhBMiwweDI4LDB4NUYsMHg1RiwweDVGLDB4RTAsCisgICAgMHgwMywweDM5LDB4ODIsMHgyOCww
eEZGLDB4QkQsMHhFMywweEVBLDB4MDMsMHgzMSwweDgxLDB4MjgsMHhBMiwweEIzLDB4RkYsMHhE
RiwKKyAgICAweEUyLDB4MzAsMHhBMiwweDI4LDB4MjgsMHhBOCwweDk1LDB4REYsMHgyMywweDM5
LDB4QzIsMHgzMCwweEFCLDB4MjMsMHhGNywweEZGLAorICAgIDB4NjUsMHg1MSwweDAzLDB4Mzks
MHhENywweEJELDB4QkQsMHgzOSwweDZDLDB4OTMsMHg4NSwweDUxLDB4MzUsMHhCNSwweEFELDB4
QUQsCisgICAgMHhGMCwweEJDLDB4MEEsMHg4MywweDAyLDB4MkQsMHhENSwweDU1LDB4RjAsMHhC
QywweEU5LDB4N0EsMHgwMCwweDAwLDB4MDMsMHhGRCwKKyAgICAweDEwLDB4QzUsMHg2RSwweEFD
LDB4N0EsMHhFQSwweEEyLDB4OEIsMHg2RSwweEFDLDB4NkIsMHg4QiwweDdFLDB4QUEsMHhBOCww
eDgwLAorICAgIDB4MkQsMHhBNCwweDBBLDB4N0IsMHg3NSwweEU4LDB4MDAsMHgwMCwweDRFLDB4
QTQsMHg2OCwweDYyLDB4N0YsMHhGQSwweDgwLDB4MDAsCisgICAgMHgwMywweDQxLDB4RTIsMHg0
MCwweDM0LDB4MjcsMHhGOCwweEJCLDB4MjMsMHg0OSwweEUyLDB4MzgsMHhFQSwweDdFLDB4N0Ys
MHg1NSwKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4RkYsMHhBQSwweEFGLDB4QUIsMHgwMyww
eDQxLDB4QzIsMHgzOCwweEEzLDB4QkIsMHhGRSwweEJBLAorICAgIDB4MDMsMHg0MSwweEUyLDB4
MzgsMHhGQSwweDVGLDB4RjUsMHhGRCwweDA1LDB4NjIsMHhFMiwweDQwLDB4MTUsMHgxNSwweDE1
LDB4OTUsCisgICAgMHg0NiwweDZBLDB4MDMsMHgzOSwweDY4LDB4NjAsMHg2MCwweDY4LDB4MDMs
MHgzOSwweEUyLDB4MzAsMHgwMiwweEFCLDB4MjUsMHgzQiwKKyAgICAweDIzLDB4MzksMHhFMyww
eDM4LDB4OEEsMHgyQiwweDhCLDB4QkYsMHg0NCwweDQxLDB4RTMsMHgzMCwweDZGLDB4RkEsMHhB
MiwweEFBLAorICAgIDB4NDQsMHgzOSwweEUzLDB4MzAsMHg1NSwweEJGLDB4RkMsMHhGQSwweDI0
LDB4NDEsMHhFMywweDMwLDB4N0YsMHhGRiwweEZBLDB4M0IsCisgICAgMHgyMywweDM5LDB4RTMs
MHgzMCwweDU1LDB4N0YsMHhGRSwweEZBLDB4MDMsMHgzMSwweEMzLDB4MjgsMHhGRiwweEZGLDB4
MkEsMHhDQSwKKyAgICAweDAzLDB4MzEsMHhBMiwweDIwLDB4NTcsMHg3RSwweEFBLDB4QUEsMHhF
MywweDI4LDB4ODIsMHgyMCwweDVELDB4RjYsMHhBQSwweEEyLAorICAgIDB4MDMsMHgzOSwweDgy
LDB4MjAsMHgzRCwweEJELDB4NzcsMHg3RiwweEUzLDB4MzAsMHg4MiwweDIwLDB4MDIsMHgwQSww
eDJCLDB4MzUsCisgICAgMHgyMywweDQxLDB4QTIsMHgzMCwweEFBLDB4REUsMHhGRSwweEZFLDB4
NDQsMHg0MSwweEMyLDB4MzAsMHhFMCwweENBLDB4NzUsMHhERCwKKyAgICAweEUyLDB4MzAsMHhB
MiwweDMwLDB4OEYsMHhBRiwweEE5LDB4MjIsMHgyMiwweDM5LDB4QTIsMHgyOCwweDU1LDB4RjUs
MHhGRCwweDNGLAorICAgIDB4NDQsMHg0MSwweEExLDB4MjgsMHhENywweERELDB4RkUsMHhBMiww
eDQzLDB4NDEsMHhFMywweDMwLDB4QkIsMHgzNSwweEE5LDB4OEIsCisgICAgMHg0NywweDYyLDB4
MjMsMHg0MSwweEY1LDB4OTUsMHgyNSwweDJCLDB4RTksMHg3QSwweEM1LDB4NTksMHgwOSwweDJC
LDB4OEEsMHgyQSwKKyAgICAweDBBLDB4ODMsMHhBOSwweDcyLDB4MkEsMHgyQiwweEZCLDB4RkYs
MHgyQiwweDgzLDB4QzksMHg3QSwweDJGLDB4MjgsMHhFQiwweEZGLAorICAgIDB4Q0YsMHhCNCww
eDBBLDB4ODMsMHgyRCwweERELDB4NTUsMHg1NSwweDZFLDB4QUMsMHgwQSwweDgzLDB4MDAsMHgw
QSwweEI1LDB4NTUsCisgICAgMHg2RSwweEFDLDB4NEEsMHg4QiwweDAwLDB4MDAsMHgwMCwweDI1
LDB4QUYsMHhCNCwweDRFLDB4QUMsMHg3RiwweEFCLDB4MEEsMHgwQiwKKyAgICAweDAzLDB4NDEs
MHhDMiwweDM4LDB4QTAsMHhDMCwweEU4LDB4RkUsMHgwMywweDQxLDB4RTIsMHgzOCwweEQ1LDB4
QUQsMHhEMSwweDc5LAorICAgIDB4MDIsMHg0MSwweEUyLDB4MzgsMHg3RCwweDVELDB4NTUsMHhG
NSwweDAzLDB4NDEsMHhFMiwweDM4LDB4NzcsMHg1NywweDVELDB4RDcsCisgICAgMHhFMiwweDM4
LDB4QzIsMHgzOCwweDAwLDB4MDAsMHgwMCwweEE4LDB4MDYsMHg2MiwweEUyLDB4MzgsMHg5NSww
eDE1LDB4OTUsMHgxNSwKKyAgICAweDY3LDB4NzIsMHgwMywweDQxLDB4NjgsMHg2OCwweDc4LDB4
NzgsMHgwMywweDM5LDB4RTIsMHgzMCwweDVFLDB4RUUsMHhERiwweEY3LAorICAgIDB4MDIsMHgz
OSwweEUzLDB4MzAsMHhERiwweDk5LDB4NTUsMHg3NSwweDIzLDB4MzksMHhFMywweDMwLDB4MEIs
MHhBNywweEZGLDB4RDUsCisgICAgMHgyNCwweDM5LDB4RTMsMHgzOCwweDY4LDB4QkIsMHhGRiww
eDVGLDB4MjQsMHg0MSwweEUzLDB4MzAsMHhGRiwweDI5LDB4OEYsMHhBRSwKKyAgICAweDI0LDB4
NDEsMHgwMywweDM5LDB4NzEsMHg1NywweDdBLDB4NUMsMHgyNCwweDM5LDB4RTIsMHgzMCwweEZG
LDB4RkEsMHhCRCwweEFFLAorICAgIDB4MDMsMHgzMSwweEUzLDB4MzAsMHg2MCwweEFFLDB4MkUs
MHgwMywweDAzLDB4MzEsMHhDMiwweDI4LDB4RkYsMHhFQiwweEM4LDB4MDAsCisgICAgMHgwMyww
eDMxLDB4QTIsMHgyMCwweDdFLDB4RkIsMHhCQSwweEE4LDB4RTIsMHgyOCwweEEyLDB4MjgsMHg1
NSwweDY3LDB4NzMsMHhBQSwKKyAgICAweDAzLDB4MzEsMHg4MSwweDIwLDB4QTIsMHhBRCwweERG
LDB4N0YsMHgwMywweDM5LDB4ODIsMHgyMCwweEEyLDB4QTgsMHgwQiwweEY1LAorICAgIDB4MDMs
MHgzMSwweEMyLDB4MzAsMHhGNywweDJFLDB4ODIsMHhBOSwweDIzLDB4MzksMHhDMiwweDI4LDB4
QjksMHhBOSwweEFELDB4MkYsCisgICAgMHgyMywweDQxLDB4QzIsMHgyOCwweEEwLDB4RjgsMHhE
QywweEZFLDB4QTUsMHg1MSwweEMyLDB4MjgsMHhGRiwweEI3LDB4M0QsMHgyRiwKKyAgICAweDY4
LDB4NkEsMHhDNSwweDUxLDB4QkQsMHgzRCwweEE5LDB4QkYsMHhDOSwweDcyLDB4NDgsMHg2QSww
eEFCLDB4QUIsMHhBRiwweDNELAorICAgIDB4RTksMHg3QSwweDg5LDB4NzIsMHg4RiwweEZGLDB4
QjUsMHhCQiwweEVBLDB4ODIsMHhBOSwweDdBLDB4M0IsMHhCOSwweEZCLDB4RjcsCisgICAgMHgw
QSwweDgzLDB4QzksMHg3MiwweDNBLDB4QkYsMHhFOSwweEFCLDB4MEEsMHg4MywweEM5LDB4N0Es
MHhBMiwweDBFLDB4RjcsMHhEQSwKKyAgICAweDRCLDB4OEIsMHhFQSwweDdBLDB4MkYsMHg1RCww
eEZELDB4NTUsMHg4RiwweEFDLDB4MEEsMHg4MywweDBCLDB4QkQsMHg1NSwweDU1LAorICAgIDB4
MDMsMHgzOSwweEMyLDB4MzgsMHhFNywweEJGLDB4RUIsMHhFQiwweDAzLDB4NDEsMHhFMiwweDM4
LDB4NUIsMHg3RiwweDU1LDB4RDUsCisgICAgMHgyMiwweDM5LDB4QzIsMHgzOCwweEY3LDB4REQs
MHhGNiwweEZGLDB4RTIsMHgzOCwweEMyLDB4MzgsMHhBQSwweEVBLDB4MDIsMHgwQSwKKyAgICAw
eEUyLDB4MzgsMHhDMiwweDM4LDB4ODAsMHhDMCwweERBLDB4MkEsMHg4NCwweDUxLDB4QzIsMHgz
MCwweDM1LDB4OTUsMHhENywweDU3LAorICAgIDB4MjYsMHg2QSwweDAzLDB4MzksMHg3OCwweDc4
LDB4N0EsMHg2OCwweDAzLDB4MzksMHhFMywweDMwLDB4NTcsMHg1NiwweDVBLDB4QkQsCisgICAg
MHhFMiwweDMwLDB4QzMsMHgzMCwweDBGLDB4MjMsMHgwMywweDgyLDB4MDMsMHgzMSwweEUzLDB4
MzAsMHhERCwweDk3LDB4RjksMHg1NSwKKyAgICAweDAzLDB4MzEsMHhBMiwweDMwLDB4ODIsMHgy
QSwweEEyLDB4Q0EsMHgwMywweDM5LDB4QzMsMHgzMCwweDBBLDB4QUUsMHgyQSwweDJBLAorICAg
IDB4MjMsMHgzOSwweEUzLDB4MzAsMHg4MiwweEFGLDB4QUEsMHhGNywweEUzLDB4MzgsMHgyNCww
eDMxLDB4QUIsMHhFQiwweEVFLDB4Q0EsCisgICAgMHgyMywweDM5LDB4RTMsMHgzOCwweEZGLDB4
MkUsMHhBRSwweEZFLDB4MjMsMHgzOSwweEUyLDB4MzAsMHhGQSwweDhGLDB4N0UsMHhFOCwKKyAg
ICAweDIzLDB4MzksMHhFMywweDMwLDB4N0YsMHhBOCwweEFBLDB4QkYsMHgyMywweDM5LDB4QzIs
MHgyOCwweEY3LDB4QkEsMHhFQSwweDhBLAorICAgIDB4MDMsMHgzMSwweEEyLDB4MjAsMHg3Riww
eEJBLDB4ODgsMHgwMCwweDAzLDB4MzEsMHg4MSwweDIwLDB4RDcsMHhGRSwweEFBLDB4MDgsCisg
ICAgMHhFMywweDMwLDB4ODIsMHgyMCwweDJELDB4RkYsMHhBRSwweDAwLDB4MjQsMHgzOSwweEEy
LDB4MjAsMHgyRiwweEY1LDB4QkYsMHgyQSwKKyAgICAweDY1LDB4NDEsMHhDMiwweDI4LDB4Rjcs
MHhGNSwweEFGLDB4MkUsMHgyNywweDYyLDB4MDMsMHgzMSwweEFELDB4MkIsMHgyQSwweDAyLAor
ICAgIDB4NjgsMHg2QSwweEU2LDB4NTksMHhCRCwweEFELDB4MkQsMHgwRiwweEM5LDB4NzIsMHg0
OCwweDZBLDB4QkYsMHhCQSwweDhCLDB4QjcsCisgICAgMHhDOSwweDcyLDB4ODgsMHg3MiwweEFB
LDB4RkYsMHhCRSwweDZELDB4QzksMHg3QSwweEE4LDB4NzIsMHgyOCwweDgxLDB4OEYsMHg3QiwK
KyAgICAweEM5LDB4N0EsMHhBOSwweDcyLDB4RDAsMHg2QiwweDIwLDB4MDIsMHhFOSwweDdBLDB4
QTksMHg3MiwweEFBLDB4QjYsMHgyRCwweEJBLAorICAgIDB4MEEsMHg4MywweEE5LDB4NzIsMHgy
QSwweEI3LDB4RjcsMHhGRiwweDBBLDB4ODMsMHhDOSwweDdBLDB4OEIsMHg4QiwweEE1LDB4OUIs
CisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEFFLDB4QUUsMHhFQiwweEZCLDB4MDMsMHg0MSww
eEMyLDB4MzgsMHhGQiwweEVBLDB4QkIsMHhERSwKKyAgICAweEUyLDB4MzgsMHhDMiwweDM4LDB4
ODAsMHgyNiwweEFCLDB4MzIsMHhFMiwweDM4LDB4QzIsMHgzOCwweDhBLDB4RTAsMHhCMCwweEIw
LAorICAgIDB4RTIsMHgzOCwweEEyLDB4MzAsMHgwOCwweDJBLDB4NjIsMHhGQywweEU1LDB4NTks
MHhDMiwweDM4LDB4OTUsMHgxNSwweDk1LDB4NTUsCisgICAgMHhBOCwweDcyLDB4RTMsMHgzOCww
eDc4LDB4NzgsMHg1RSwweDU1LDB4MDMsMHgzOSwweEUzLDB4MzAsMHhGNiwweEQ3LDB4RkMsMHhE
NSwKKyAgICAweDAzLDB4MzEsMHhFMywweDMwLDB4N0QsMHhGQiwweEQ3LDB4NTUsMHhFMywweDMw
LDB4QzIsMHgyOCwweDIwLDB4MkEsMHhCMiwweDBCLAorICAgIDB4MDMsMHgzMSwweEUzLDB4MzAs
MHg1NSwweDU1LDB4QjUsMHhFRCwweDAzLDB4MzEsMHhDMiwweDMwLDB4QUEsMHhGNywweEFFLDB4
QkEsCisgICAgMHgwMywweDMxLDB4QzIsMHgzMCwweDJFLDB4OEIsMHhCRiwweDNFLDB4MDMsMHgz
MSwweEMzLDB4MzAsMHg5QSwweEE4LDB4QUIsMHhBQSwKKyAgICAweEUzLDB4MzgsMHgyNCwweDMx
LDB4QUEsMHhBQSwweEVFLDB4QUEsMHgyNCwweDM5LDB4RTMsMHgzMCwweEZCLDB4RUUsMHhBRiww
eEVCLAorICAgIDB4MjQsMHgzOSwweDAzLDB4MzksMHg1NywweDc1LDB4REQsMHhENSwweDI0LDB4
MzksMHhFMiwweDMwLDB4QTMsMHhGNiwweEE4LDB4MEEsCisgICAgMHgwMywweDM5LDB4NjQsMHgz
MSwweEFBLDB4QTgsMHg4QSwweDJBLDB4NjQsMHg0MSwweDAzLDB4MzksMHg1NywweEZGLDB4QUYs
MHgzRCwKKyAgICAweDg1LDB4NDksMHgwMywweDMxLDB4NTUsMHhERiwweEFCLDB4MDgsMHhDNiww
eDUxLDB4MDMsMHgzMSwweDU1LDB4RkQsMHhCQiwweDIyLAorICAgIDB4MDcsMHg2MiwweDQ0LDB4
NDEsMHg5NSwweEFELDB4MEIsMHgwMCwweDQ3LDB4NjIsMHhFNiwweDU5LDB4OTUsMHhBRCwweDBF
LDB4ODIsCisgICAgMHg4OCwweDcyLDB4MjcsMHg2MiwweEJELDB4MkYsMHgyRiwweDhGLDB4QTgs
MHg3MiwweDQ4LDB4NjIsMHhCRiwweEFFLDB4M0UsMHgyNywKKyAgICAweEM5LDB4NzIsMHg4OCww
eDZBLDB4QjUsMHg5RCwweEVELDB4RjIsMHhBOSwweDcyLDB4NjgsMHg2QSwweEEwLDB4MjAsMHhB
OCwweDdDLAorICAgIDB4QzksMHg3MiwweDg5LDB4NzIsMHgwRSwweEZFLDB4QkYsMHgyRCwweEM5
LDB4N0EsMHg4OCwweDZBLDB4MDIsMHgyQSwweEZFLDB4NjMsCisgICAgMHhFQSwweDdBLDB4QTks
MHg3MiwweDJGLDB4RTIsMHg3RCwweEY1LDB4MEEsMHg3QiwweEE5LDB4NzIsMHhCMiwweEFCLDB4
RUQsMHhCRiwKK307CisKK3N0YXRpYyBjb25zdCBzaXplX3QgcGl4ZWxfM193aWR0aCA9IDY0Owor
c3RhdGljIGNvbnN0IHNpemVfdCBwaXhlbF8zX2hlaWdodCA9IDY0Oworc3RhdGljIGNvbnN0IHNp
emVfdCBwaXhlbF8zX3NpemUgPSAyMDQ4Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcGl4
ZWxfM19kYXRhWzIwNDhdID0KK3sKKyAgICAweDI2LDB4NUEsMHg0MywweDQxLDB4RkUsMHg3Qiww
eEZBLDB4QjQsMHgwNSwweDUyLDB4MjMsMHgzOSwweEZGLDB4RkYsMHg0RiwweEZFLAorICAgIDB4
QTUsMHg0OSwweDQzLDB4MzksMHhEQiwweDY0LDB4NUUsMHg4QiwweDI2LDB4NkEsMHg0NCwweDQx
LDB4RkYsMHg3RiwweDY5LDB4MDMsCisgICAgMHgyQSwweDgzLDB4NDQsMHg0MSwweDU1LDB4Nzcs
MHg1NSwweDAyLDB4NkUsMHhBNCwweDg0LDB4NDksMHg1NSwweDU1LDB4NTUsMHgwQSwKKyAgICAw
eDUyLDB4QzUsMHhBNSwweDQ5LDB4NTUsMHg1NSwweDU1LDB4MDAsMHhGNCwweEU1LDB4QzUsMHg1
MSwweDc1LDB4NTUsMHg1NSwweDM4LAorICAgIDB4OTcsMHhFRSwweDY0LDB4NDksMHg1RCwweDU1
LDB4RkYsMHgwMCwweEI2LDB4RUUsMHg4NCwweDQ5LDB4NTUsMHg1NSwweEJCLDB4MDAsCisgICAg
MHg3NSwweEVFLDB4NjQsMHg0OSwweDBELDB4MzUsMHgwQSwweDAwLDB4RDcsMHhGNiwweDM0LDB4
RTYsMHhBMiwweDZDLDB4OUUsMHgyNywKKyAgICAweEY3LDB4RjYsMHg1NSwweEU2LDB4MDIsMHhF
RCwweEQ3LDB4QkEsMHgzOCwweEZGLDB4NzYsMHhFRSwweEFBLDB4QUIsMHhBNywweEFCLAorICAg
IDB4RDcsMHhGNiwweDM0LDB4RTYsMHg2MCwweEUwLDB4RjgsMHg1MCwweDE0LDB4REUsMHg5Miww
eEQ1LDB4QTIsMHgwMSwweDAxLDB4ODMsCisgICAgMHhCNiwweEVFLDB4OEIsMHg4QiwweDU3LDB4
MDAsMHgwMCwweDAwLDB4QjYsMHhFRSwweEVELDB4OUIsMHhGNSwweDAwLDB4MDAsMHgwMCwKKyAg
ICAweEI2LDB4RjYsMHg1MSwweEM1LDB4RjUsMHgwMCwweDAwLDB4MDAsMHhCMywweEQ1LDB4QzUs
MHg2OSwweEQ0LDB4NTQsMHg1NCwweDU2LAorICAgIDB4QjYsMHhGNiwweEU1LDB4NjksMHgwMiww
eDAzLDB4MEQsMHgwNSwweEQ2LDB4RjYsMHhCNiwweEY2LDB4RDUsMHgxNSwweDM3LDB4QUUsCisg
ICAgMHhENywweEY2LDB4NDYsMHg3QSwweDAwLDB4MDAsMHhDMCwweDcwLDB4RjcsMHhGRSwweDY3
LDB4N0EsMHg5NiwweDE3LDB4MzUsMHgzNSwKKyAgICAweDE4LDB4RjcsMHhENywweEY2LDB4NzIs
MHhGOCwweEYwLDB4RjAsMHhGNywweEY2LDB4QjYsMHhGNiwweEVCLDB4QUEsMHgyRSwweENBLAor
ICAgIDB4RDcsMHhGNiwweDE0LDB4REUsMHhFMCwweDYwLDB4REMsMHgzNiwweEQ3LDB4RjYsMHhE
MywweERELDB4QjksMHg4MiwweDAwLDB4MDAsCisgICAgMHgxOCwweEZGLDB4QjYsMHhFRSwweDdE
LDB4RjUsMHgyNSwweDNGLDB4MzgsMHhGRiwweEI3LDB4RUUsMHhDQiwweEVCLDB4RkYsMHg3QywK
KyAgICAweEI2LDB4RUUsMHg3MSwweENELDB4RjAsMHhEOCwweEQyLDB4RjIsMHg5NiwweEVFLDB4
MzEsMHhDNSwweEFCLDB4OEYsMHg4QiwweDg5LAorICAgIDB4RDYsMHhGNiwweEI2LDB4RTYsMHg4
QSwweDIyLDB4ODgsMHgwMiwweEY3LDB4RjYsMHhCNiwweEVFLDB4NUYsMHg1RSwweDdBLDB4RkEs
CisgICAgMHhGNywweEY2LDB4QjYsMHhFRSwweEVELDB4QUIsMHhBOSwweDJCLDB4OTYsMHhFRSww
eDQ0LDB4NTEsMHg1NiwweDU0LDB4NTQsMHg1QywKKyAgICAweDZFLDB4QjQsMHgyMywweDQ5LDB4
MkQsMHhBRCwweEZELDB4RkYsMHgxNCwweEU2LDB4MDYsMHg2QSwweDAyLDB4RjcsMHhGRCwweDU1
LAorICAgIDB4NTUsMHhFRSwweEU2LDB4NzEsMHg1OCwweDU3LDB4NTUsMHg1NSwweDE3LDB4RkYs
MHg4NywweDhBLDB4MjUsMHgyNSwweDI1LDB4MDUsCisgICAgMHgzOCwweEZGLDB4RDcsMHhGNiww
eEZBLDB4RUEsMHhBMiwweDZFLDB4RjcsMHhGNiwweEYzLDB4REQsMHhBMCwweEE4LDB4NzgsMHgy
OCwKKyAgICAweEY3LDB4RjYsMHhEMywweERELDB4MEIsMHgwMiwweDA5LDB4MkYsMHhGNywweEY2
LDB4QjcsMHhFRSwweEZFLDB4RUUsMHhCQSwweDJBLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYs
MHgxNSwweEI1LDB4OEIsMHhBMiwweDE4LDB4RkYsMHg3NiwweEVFLDB4RjgsMHg1OCwweDVBLDB4
N0EsCisgICAgMHg3NSwweEVFLDB4MTAsMHhDNSwweEUyLDB4RTIsMHhFMiwweDYyLDB4NTUsMHhF
RSwweEVGLDB4QkMsMHgwRCwweDA5LDB4MEIsMHgwMiwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVF
LDB4MjIsMHgwOCwweDAwLDB4MDEsMHhGNywweEY2LDB4QjYsMHhFRSwweEFBLDB4RkEsMHhGRSww
eEJBLAorICAgIDB4RjcsMHhGNiwweDk2LDB4RUUsMHgyMiwweDAyLDB4QUEsMHhBQSwweDM0LDB4
RUUsMHgwMiwweDQxLDB4RjgsMHhGQywweDVDLDB4NTYsCisgICAgMHhBOCwweDgyLDB4RTIsMHgz
OCwweEE4LDB4QkEsMHhBRiwweENELDB4QUIsMHhBMywweDQzLDB4NDksMHhGRiwweEJGLDB4MEIs
MHgyRCwKKyAgICAweDBELDB4QjQsMHg4NywweDgyLDB4NUYsMHhGMiwweDcyLDB4QjYsMHhGNyww
eEZFLDB4QTgsMHg4MiwweDBELDB4MDksMHgwMiwweDAwLAorICAgIDB4MzgsMHhGRiwweDk2LDB4
RUUsMHg3QSwweDdFLDB4NEEsMHg2MywweDE4LDB4RkYsMHhGOCwweEY2LDB4REQsMHg5MCwweEIw
LDB4QjAsCisgICAgMHgxOCwweEZGLDB4NTUsMHhFNiwweEI3LDB4QjYsMHhCQywweEI4LDB4MTgs
MHhGRiwweEQ3LDB4RjYsMHhERiwweEVFLDB4RkIsMHhCQSwKKyAgICAweEY3LDB4RjYsMHg3NSww
eEVFLDB4ODAsMHg4MCwweDYwLDB4NUUsMHhENywweEY2LDB4RjQsMHhERCwweEEyLDB4RTIsMHhC
MiwweEQ4LAorICAgIDB4NzYsMHhFRSwweEFFLDB4QkMsMHg2MiwweDYyLDB4RTIsMHg2QSwweDk2
LDB4RUUsMHg1MiwweENELDB4MEIsMHgyMiwweEJGLDB4QjUsCisgICAgMHg5NSwweEVFLDB4RTgs
MHg4MiwweDJELDB4NTUsMHg1NSwweDU1LDB4RDYsMHhGNiwweEU4LDB4ODIsMHgwMCwweDBGLDB4
NTUsMHg1NSwKKyAgICAweEQ2LDB4RjYsMHhFOCwweDhBLDB4MDAsMHgwMCwweDBCLDB4RDUsMHg5
NiwweEY2LDB4MjMsMHg0MSwweDU2LDB4NTYsMHg1QywweDVBLAorICAgIDB4RTgsMHg5MiwweEUz
LDB4MzgsMHhDRCwweDZELDB4RTMsMHhFMiwweEM4LDB4ODIsMHhFMiwweDM4LDB4MkQsMHhENSww
eEQ1LDB4REUsCisgICAgMHg0QSwweDkzLDB4ODQsMHg1OSwweDA4LDB4RUEsMHg3RiwweDVGLDB4
RDcsMHhGNiwweDg4LDB4N0EsMHgwRCwweDI1LDB4OTUsMHhENSwKKyAgICAweDM4LDB4RkYsMHg1
NSwweEVFLDB4RjAsMHg5OCwweDlDLDB4OUQsMHgxOCwweEZGLDB4RjgsMHhGNiwweEYwLDB4Rjgs
MHhGOCwweDU4LAorICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYsMHg3NiwweEJFLDB4QkYsMHhBQiww
eDE4LDB4RkYsMHg5NiwweEVFLDB4ODIsMHhDOCwweDY4LDB4N0EsCisgICAgMHhCNiwweEY2LDB4
NTUsMHhFNiwweEY4LDB4NzYsMHhGNywweEQ3LDB4OTYsMHhFRSwweDkyLDB4RDUsMHhCMCwweEQw
LDB4RDAsMHhGOCwKKyAgICAweEQzLDB4REQsMHhBRiwweEJDLDB4NjAsMHg2MCwweDcwLDB4REMs
MHg5MiwweEQ1LDB4QUYsMHhCQywweDAzLDB4OEIsMHhBOSwweEFELAorICAgIDB4QTcsMHg3QSww
eDI1LDB4NkEsMHhBQSwweEEyLDB4M0QsMHg1NywweEM3LDB4ODIsMHg0NSwweDcyLDB4MEEsMHhC
QiwweEVFLDB4QkQsCisgICAgMHhFOCwweDhBLDB4ODcsMHg3QSwweDAyLDB4QUIsMHhENSwweDc3
LDB4RTgsMHg4MiwweEMyLDB4MzgsMHhGOCwweDc4LDB4NzAsMHhFMiwKKyAgICAweEM4LDB4OEEs
MHg0NCwweDUxLDB4QTIsMHhFMywweEFELDB4RDUsMHgwNiwweDZBLDB4MDMsMHg0MSwweEZDLDB4
RkYsMHg1QywweDU2LAorICAgIDB4MjYsMHg3MiwweDAzLDB4NDEsMHhCMCwweDJGLDB4MjUsMHhB
RCwweEE4LDB4ODIsMHg0NCwweDQ5LDB4MDIsMHg2OCwweDVGLDB4NUYsCisgICAgMHg5NiwweEY2
LDB4NDcsMHg3QSwweDBCLDB4MkQsMHg1NSwweDU1LDB4RjcsMHhGNiwweDg4LDB4N0EsMHgwMCww
eDAwLDB4MEIsMHhENSwKKyAgICAweEY4LDB4RkUsMHhFQywweEEzLDB4MDAsMHgwMCwweDAwLDB4
MkQsMHhGNywweEY2LDB4NTUsMHhFRSwweEY4LDB4NUUsMHg3RSwweDU3LAorICAgIDB4NzYsMHhF
RSwweDM1LDB4RTYsMHgzOCwweDZBLDB4ODAsMHgyMCwweDc2LDB4RUUsMHhEMywweERELDB4RjAs
MHhGOCwweDlFLDB4RDQsCisgICAgMHg3NSwweEVFLDB4NEQsMHhBQywweEQ2LDB4N0YsMHg3RSww
eEEwLDB4MzEsMHhDRCwweEM4LDB4N0EsMHgwMCwweDAzLDB4MEIsMHhCNywKKyAgICAweDY2LDB4
NzIsMHg0NiwweDcyLDB4NTcsMHhBRSwweDBBLDB4MjksMHg2NiwweDcyLDB4MjYsMHg3MiwweEZF
LDB4QUEsMHg4MiwweDAwLAorICAgIDB4QTcsMHg4MiwweDQ2LDB4NzIsMHgyOSwweEQ1LDB4REYs
MHhGRiwweDA5LDB4OEIsMHg2NiwweDdBLDB4N0YsMHhBRiwweEQ1LDB4MTUsCisgICAgMHg4Nyww
eDgyLDB4QTIsMHgzMCwweEZBLDB4NzgsMHg1QywweDVDLDB4MjMsMHg0MSwweEEyLDB4MjgsMHhB
RSwweDNCLDB4MzUsMHg4NywKKyAgICAweDA2LDB4NkEsMHhFMywweDM4LDB4MEYsMHhFQiwweEZE
LDB4N0YsMHg4NSwweDUxLDB4MDMsMHgzOSwweEFCLDB4NDksMHhGRCwweEY1LAorICAgIDB4Qzgs
MHg4QSwweDIzLDB4NDEsMHhBMywweEZELDB4NUQsMHhENSwweEM5LDB4OEEsMHhDNSwweDYxLDB4
RTIsMHg4QiwweEI1LDB4NTcsCisgICAgMHhFQywweEFCLDB4ODQsMHg1MSwweDNGLDB4REYsMHg1
NywweDU1LDB4RjQsMHhFNSwweDA2LDB4NkEsMHgwMCwweDA5LDB4MzUsMHhENSwKKyAgICAweDU1
LDB4RUUsMHg5MiwweEQ1LDB4MEEsMHhBRiwweEJGLDB4QjUsMHg1NSwweEVFLDB4QjMsMHhERCww
eEI4LDB4QkEsMHhBQSwweEFELAorICAgIDB4QjYsMHhGNiwweEQzLDB4REQsMHg2QSwweEEyLDB4
QzMsMHhBQSwweEYzLDB4REQsMHgyRCwweEFDLDB4NUMsMHg4MCwweEE4LDB4ODgsCisgICAgMHg0
NiwweDcyLDB4NjMsMHg1OSwweDJELDB4RDUsMHg1NSwweDU1LDB4NjYsMHg3QSwweDQzLDB4NTEs
MHgwMCwweDBCLDB4RDUsMHhENSwKKyAgICAweDg3LDB4N0EsMHg2NCwweDU5LDB4MDAsMHgwMCww
eDBCLDB4RDUsMHhDQywweEFCLDB4ODcsMHg3QSwweDE1LDB4MjUsMHgwRCwweEE5LAorICAgIDB4
MjksMHg5MywweEMyLDB4MzgsMHg1RSwweDVFLDB4NUMsMHg1QywweDQ0LDB4NDksMHhDMiwweDMw
LDB4RjUsMHhCNSwweDgxLDB4OEEsCisgICAgMHg4NCwweDUxLDB4RTIsMHgzOCwweDU3LDB4RUYs
MHhCQiwweDAzLDB4QzYsMHg2MSwweEEyLDB4MzAsMHhGRCwweEZGLDB4RkUsMHhEOCwKKyAgICAw
eDY1LDB4NDksMHgwMywweDQxLDB4MkEsMHhGOSwweEUxLDB4RUQsMHhDNiwweDYxLDB4MDMsMHg0
MSwweDBBLDB4RTUsMHhGRiwweDVFLAorICAgIDB4QTUsMHg1MSwweDAzLDB4MzksMHhBQSwweEJF
LDB4NzUsMHhGRiwweEE4LDB4ODIsMHgyMywweDQxLDB4MkYsMHhBNSwweDNELDB4QjUsCisgICAg
MHgxNCwweEU2LDB4ODcsMHg3QSwweDAzLDB4MDksMHg4NSwweEI1LDB4OTYsMHhFRSwweDEwLDB4
QzUsMHhBRiwweDBELDB4MjUsMHg3NSwKKyAgICAweDc1LDB4RUUsMHg4RiwweEI0LDB4MDAsMHgw
MCwweDAwLDB4NTcsMHg1NSwweEVFLDB4RjEsMHhCQywweEU4LDB4ODAsMHhCQSwweDdELAorICAg
IDB4ODQsMHg1OSwweDIzLDB4NTEsMHhGRSwweEY3LDB4QUQsMHgzRSwweDg0LDB4NTksMHgyMyww
eDUxLDB4OEIsMHhFQSwweEZDLDB4N0UsCisgICAgMHg2QiwweDlCLDB4MjMsMHg1MSwweDU1LDB4
NTUsMHg5NSwweDM1LDB4QUIsMHhBMywweDY3LDB4N0EsMHgyMSwweEFBLDB4QTgsMHhBMCwKKyAg
ICAweEU4LDB4OEEsMHgwMywweDQxLDB4NTgsMHg3OCwweEU4LDB4RTgsMHg2NCwweDUxLDB4RTIs
MHgzOCwweEVDLDB4RTYsMHhCNywweEY0LAorICAgIDB4ODUsMHg1MSwweDAzLDB4NDEsMHg4NSww
eDg1LDB4MzUsMHg5NSwweEE1LDB4NTksMHhDMywweDMwLDB4REEsMHhERSwweDVDLDB4REUsCisg
ICAgMHhBNSwweDU5LDB4MDMsMHgzOSwweEVCLDB4RkIsMHg3MCwweDdCLDB4NDQsMHg0MSwweEUz
LDB4MzgsMHhFQSwweEVCLDB4QzEsMHhBMSwKKyAgICAweDY1LDB4NDEsMHhFMywweDM4LDB4QjIs
MHhGRiwweEZGLDB4REQsMHhDNSwweDU5LDB4MjMsMHg0MSwweDNGLDB4M0QsMHhGRCwweDNCLAor
ICAgIDB4MzEsMHhDRCwweDA2LDB4NkEsMHgzNSwweEI1LDB4RjUsMHhENSwweDM1LDB4RTYsMHhB
RiwweEJDLDB4N0QsMHg1NSwweEFFLDB4ODIsCisgICAgMHg5MywweENELDB4NEUsMHhBQywweDJE
LDB4OEEsMHhBMCwweEEwLDB4MzIsMHhDNSwweDBFLDB4OUMsMHhBMCwweEFBLDB4QkUsMHhFRCwK
KyAgICAweDg0LDB4NTksMHgyMywweDUxLDB4OEIsMHhGRSwweEZFLDB4NTcsMHg0MywweDU5LDB4
MjMsMHg0OSwweEYwLDB4N0MsMHhERCwweEJELAorICAgIDB4QUIsMHhBMywweDQ0LDB4NTksMHgz
NSwweDI1LDB4MDUsMHgwNSwweDBDLDB4QUMsMHhFOCwweDhBLDB4N0IsMHg3RSwweDc4LDB4NkEs
CisgICAgMHhBNywweDgyLDB4MjYsMHg2QSwweDU0LDB4RkUsMHg5RSwweDNGLDB4NjcsMHg3QSww
eEEyLDB4MzAsMHhEQywweDU4LDB4NzAsMHg2MCwKKyAgICAweDQ0LDB4NDksMHhDMiwweDMwLDB4
MkIsMHhBRiwweDk1LDB4RjUsMHg2NSwweDUxLDB4QTIsMHgzMCwweEZDLDB4REEsMHhGRSwweDdB
LAorICAgIDB4NDQsMHg0OSwweEMzLDB4MzAsMHhFMiwweEUyLDB4RjIsMHg1QiwweDI0LDB4Mzks
MHhDMiwweDMwLDB4QzIsMHhGRiwweEZGLDB4RkQsCisgICAgMHgwMywweDQxLDB4RTMsMHgzMCww
eEJCLDB4RUEsMHhERiwweDBBLDB4RTYsMHg1OSwweDAzLDB4NDEsMHgzRCwweEI1LDB4NTUsMHg3
NywKKyAgICAweDg4LDB4N0EsMHg2NCwweDUxLDB4MkEsMHgwRSwweDJELDB4MjUsMHgxNSwweERF
LDB4NkIsMHg5MywweDgyLDB4QTMsMHhBOSwweEE5LAorICAgIDB4NzMsMHhDRCwweEVELDB4OUIs
MHhFMCwweDY4LDB4N0EsMHhGRSwweDExLDB4QkQsMHgyRSwweEE0LDB4RkQsMHhGNSwweEVBLDB4
MkQsCisgICAgMHg0NCwweDUxLDB4MDMsMHg0OSwweEVDLDB4OUUsMHhGRiwweEZGLDB4NDMsMHg1
MSwweDAzLDB4NDksMHgwQSwweDgyLDB4QTIsMHg2MiwKKyAgICAweDZBLDB4OTMsMHgyMywweDUx
LDB4MEQsMHg4RCwweEE5LDB4QTksMHhFOSwweDhBLDB4NDYsMHg3MiwweEY4LDB4REYsMHg1Riww
eDdGLAorICAgIDB4QTcsMHg3QSwweEM0LDB4NjEsMHg4QSwweDdBLDB4N0EsMHhEQSwweDY3LDB4
NzIsMHgwMywweDQ5LDB4NkEsMHhDQSwweENBLDB4ODAsCisgICAgMHgyMywweDQxLDB4QTIsMHgz
MCwweEI5LDB4M0QsMHgwRCwweEExLDB4MjQsMHg0MSwweDgxLDB4MjAsMHhDMCwweEVBLDB4N0Ys
MHg1NywKKyAgICAweEUzLDB4MzgsMHg4MiwweDIwLDB4QTIsMHhCQiwweEFELDB4QkQsMHgwNCww
eDM5LDB4QzMsMHgzMCwweEIxLDB4RkIsMHhENSwweEQ1LAorICAgIDB4NDQsMHg0OSwweEUyLDB4
MzAsMHg4MiwweEZBLDB4RkYsMHhGNSwweDQ0LDB4NDEsMHhFMiwweDM4LDB4QkYsMHg5NSwweEZE
LDB4QzMsCisgICAgMHgyNiwweDZBLDB4MDMsMHgzOSwweDJGLDB4MkQsMHhCRCwweEI1LDB4RjEs
MHhCQywweDA2LDB4NjIsMHgwMywweEExLDB4QTksMHhDOSwKKyAgICAweDJGLDB4QTQsMHg4OSww
eDYyLDB4MjgsMHhBQSwweEZBLDB4NTUsMHgxMSwweEJELDB4MEIsMHg3QiwweDJGLDB4QjUsMHhG
NSwweEZELAorICAgIDB4NjQsMHg1OSwweDAyLDB4NDksMHhGNywweEU3LDB4RTksMHhGMiwweDA5
LDB4OEIsMHgyMywweDQ5LDB4NTUsMHg1NSwweDk1LDB4MTUsCisgICAgMHg0OSwweDkzLDB4ODQs
MHg1OSwweEE5LDB4QUEsMHhBOCwweDI4LDB4QUIsMHhBMywweEU1LDB4NjEsMHhGRiwweEFGLDB4
NjIsMHg3QywKKyAgICAweEM3LDB4ODIsMHg0NCwweDQ5LDB4RTAsMHg3RSwweDVGLDB4NTcsMHgw
NiwweDZBLDB4RTIsMHgzOCwweDAwLDB4RkYsMHg3RiwweDdBLAorICAgIDB4MDMsMHg0MSwweDYx
LDB4MTgsMHhBOCwweEY4LDB4N0UsMHhERiwweEUzLDB4MzAsMHg4MSwweDIwLDB4QjUsMHgwRCww
eEFGLDB4MkUsCisgICAgMHhFMiwweDMwLDB4QTIsMHgyOCwweDU1LDB4NkIsMHhGOCwweENCLDB4
MDMsMHgzOSwweEEyLDB4MjgsMHgyRiwweEY1LDB4REQsMHhGNywKKyAgICAweDIzLDB4MzksMHhD
MiwweDMwLDB4RUIsMHhBRiwweDhELDB4RkQsMHg2NCwweDQ5LDB4RTIsMHgzMCwweDhCLDB4Q0Qs
MHhDRCwweDdELAorICAgIDB4ODQsMHg1MSwweEUyLDB4MzAsMHgyRiwweEJGLDB4MzcsMHhCRCww
eEQxLDB4QjQsMHg4NSwweDUxLDB4MDksMHgwRCwweDJELDB4QTUsCisgICAgMHgxMSwweEJELDB4
QUMsMHg4QiwweDU3LDB4RjAsMHhBOCwweEFCLDB4NkYsMHhBQywweENELDB4OTMsMHhCOSwweEE4
LDB4ODAsMHhBMCwKKyAgICAweDY0LDB4NTksMHgwMiwweDQxLDB4RjIsMHg1QiwweDU3LDB4NUQs
MHg2OSwweDkzLDB4MDIsMHg0MSwweDE1LDB4MzUsMHgzNSwweEQ1LAorICAgIDB4NjksMHg5Myww
eDg0LDB4NTksMHgwOCwweDgwLDB4RjgsMHg1RiwweDY2LDB4NzIsMHg0MywweDQ5LDB4RTAsMHg1
MCwweDVFLDB4NzcsCisgICAgMHhBNSwweDUxLDB4MDMsMHg0MSwweEZBLDB4N0EsMHg3QSwweDJF
LDB4QzUsMHg1OSwweEMyLDB4MzAsMHg1OCwweERCLDB4N0YsMHg1RSwKKyAgICAweEUzLDB4MzAs
MHg2MSwweDIwLDB4M0UsMHgyNywweEZGLDB4RUEsMHgwMywweDM5LDB4ODEsMHgyMCwweEIyLDB4
QTIsMHhBRCwweDA2LAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHgwMCwweEYyLDB4N0IsMHhF
RiwweEUzLDB4MzAsMHg4MiwweDI4LDB4RkUsMHhBMCwweDJBLDB4MDIsCisgICAgMHgwMywweDM5
LDB4QzIsMHgzMCwweEQ1LDB4NUYsMHg1RSwweDczLDB4MDMsMHgzMSwweEMyLDB4MjgsMHhFQiww
eEZBLDB4RjksMHhBRCwKKyAgICAweDY0LDB4NDksMHhFMywweDMwLDB4QjUsMHg5NSwweDNELDB4
MjUsMHgwRCwweEE0LDB4QTUsMHg1MSwweDhELDB4MjksMHhFOSwweDAzLAorICAgIDB4NkYsMHhB
QywweEE5LDB4NzIsMHgyQSwweEFCLDB4NTUsMHg1NywweDJFLDB4OUMsMHhBOCwweDcyLDB4MjAs
MHhBQSwweEFCLDB4QjUsCisgICAgMHgyMywweDQ5LDB4MDMsMHg0MSwweEQ1LDB4RjUsMHhERCww
eEZELDB4MjMsMHg0OSwweEUyLDB4NDAsMHgzOCwweEZFLDB4REYsMHg1NSwKKyAgICAweEE0LDB4
NTksMHhFMiwweDQwLDB4MUMsMHgxNSwweDFELDB4MTUsMHhFNSwweDYxLDB4MjMsMHgzOSwweEVB
LDB4NzgsMHg1OCwweDVDLAorICAgIDB4RTUsMHg2MSwweEEyLDB4MzAsMHhDMiwweDczLDB4NkYs
MHg3RiwweDQ0LDB4NDksMHg4MSwweDIwLDB4RjgsMHg3QSwweDU3LDB4RkYsCisgICAgMHgyNCww
eDQxLDB4QTIsMHgyOCwweDNELDB4QTUsMHg3RiwweDdGLDB4MjMsMHg0OSwweDgxLDB4MjAsMHgy
QSwweEFBLDB4QjcsMHhERCwKKyAgICAweDAzLDB4MzksMHhBMiwweDI4LDB4QUMsMHg3QywweEQ4
LDB4RjMsMHgwMywweDM5LDB4QTIsMHgyOCwweEJGLDB4N0QsMHg3NSwweENCLAorICAgIDB4RTIs
MHgzMCwweEEyLDB4MjgsMHg4QSwweEEzLDB4OEQsMHg3QywweDAzLDB4MzksMHhBMSwweDI4LDB4
QUIsMHhBMiwweDBGLDB4QTcsCisgICAgMHhDOSwweDdBLDB4MDMsMHgzOSwweEQ1LDB4MTUsMHgz
NSwweDNELDB4MTAsMHhDNSwweDJBLDB4ODMsMHgyQSwweDgwLDB4MEEsMHhCNSwKKyAgICAweEQw
LDB4QkMsMHhBOCwweDcyLDB4NUUsMHg1OCwweEEwLDB4QTAsMHgyRCwweEE0LDB4MDYsMHg1QSww
eERGLDB4N0IsMHhFQSwweDAwLAorICAgIDB4MDMsMHg0MSwweEUyLDB4MzgsMHgwMywweDdBLDB4
RkMsMHg3NywweDAzLDB4NDksMHhFMiwweDM4LDB4RkQsMHg3RCwweDU1LDB4REQsCisgICAgMHg4
NCwweDU5LDB4RTIsMHgzOCwweDE1LDB4OTUsMHg5NSwweDk1LDB4NDYsMHg2QSwweDAzLDB4Mzks
MHg1QywweDVDLDB4NUMsMHg1NCwKKyAgICAweDI0LDB4MzksMHhFMywweDMwLDB4Q0EsMHgwQiww
eEE3LDB4RjUsMHgyMywweDM5LDB4RTIsMHgzMCwweEZGLDB4QUMsMHhCQSwweDNGLAorICAgIDB4
MjMsMHgzOSwweEUzLDB4MzAsMHg1NywweDVFLDB4RUUsMHhCOCwweDAzLDB4MzEsMHhBMiwweDIw
LDB4NTcsMHhGQSwweEEwLDB4MDAsCisgICAgMHhFMywweDMwLDB4ODEsMHgyMCwweDJCLDB4QkYs
MHhGQSwweEEwLDB4NDQsMHg0MSwweEEyLDB4MjgsMHhBQiwweEZGLDB4RkYsMHhENSwKKyAgICAw
eDAzLDB4MzksMHhBMiwweDI4LDB4REYsMHhCQiwweEFBLDB4MkEsMHg2NCwweDQ5LDB4QzIsMHgy
OCwweEI1LDB4QkYsMHhCRSwweDM3LAorICAgIDB4QTksMHg3MiwweDQ0LDB4NDksMHgyNSwweDA5
LDB4MEIsMHgyQSwweDBBLDB4ODMsMHhBOSwweDcyLDB4MEEsMHg4RiwweEZELDB4RjUsCisgICAg
MHg2RiwweEFDLDB4RUEsMHg3QSwweDJCLDB4RjUsMHg1NSwweDU1LDB4NkUsMHhBQywweDBBLDB4
ODMsMHgwMCwweDAyLDB4MzUsMHg1NSwKKyAgICAweDAzLDB4NDEsMHhFMiwweDM4LDB4RjUsMHg1
NSwweDdGLDB4NTUsMHhFMiwweDM4LDB4QzIsMHgzOCwweEEzLDB4MjAsMHhBMiwweDhBLAorICAg
IDB4NDMsMHg0OSwweEEyLDB4MzAsMHhCRiwweEZGLDB4MUYsMHhGNywweDY2LDB4NkEsMHhFMyww
eDMwLDB4NUUsMHg1RSwweDVDLDB4NTcsCisgICAgMHhFMywweDMwLDB4QzMsMHgzMCwweDAzLDB4
MDIsMHgwMCwweDgwLDB4MDMsMHgzMSwweEUzLDB4MzAsMHgzRiwweEJGLDB4RDUsMHg3RiwKKyAg
ICAweDIzLDB4MzksMHhFMywweDMwLDB4RUEsMHhCQiwweDdELDB4RDUsMHgwMywweDM5LDB4MDQs
MHgzMSwweEJBLDB4QTAsMHgwQSwweDJCLAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHg1RSww
eEVCLDB4QkEsMHgyQSwweDQ0LDB4NDEsMHhBMiwweDIwLDB4NUYsMHhGQiwweEEyLDB4MEEsCisg
ICAgMHg2NSwweDQ5LDB4QTIsMHgyOCwweEQ1LDB4RkYsMHhBQiwweDAwLDB4NDgsMHg2QSwweDAz
LDB4MzEsMHhCNSwweEE1LDB4MkIsMHgwQSwKKyAgICAweEE5LDB4NzIsMHgwNiwweDYyLDB4MkQs
MHgyOSwweEFCLDB4QUIsMHhDOSwweDdBLDB4ODgsMHg2QSwweDJCLDB4QUIsMHhFRCwweDdFLAor
ICAgIDB4RTksMHg3QSwweDg4LDB4NzIsMHhBRSwweDJBLDB4QkIsMHhFRCwweDBBLDB4ODMsMHhB
OSwweDcyLDB4MkIsMHhBRiwweEVGLDB4RkQsCit9OworCitzdGF0aWMgY29uc3Qgc2l6ZV90IHBp
eGVsXzRfd2lkdGggPSAzMjsKK3N0YXRpYyBjb25zdCBzaXplX3QgcGl4ZWxfNF9oZWlnaHQgPSAz
MjsKK3N0YXRpYyBjb25zdCBzaXplX3QgcGl4ZWxfNF9zaXplID0gNTEyOworc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGNoYXIgcGl4ZWxfNF9kYXRhWzUxMl0gPQoreworICAgIDB4RDcsMHhGNiwweEE0
LDB4NDksMHg1NSwweDU1LDB4QUEsMHgwMCwweDc1LDB4RUUsMHhBNSwweDUxLDB4NTUsMHg1NSww
eDcwLDB4NzAsCisgICAgMHhCNiwweEY2LDB4ODUsMHg0OSwweDU1LDB4REQsMHgwMiwweDAzLDB4
RjcsMHhGRSwweEU2LDB4NTksMHg1NSwweEZGLDB4RjAsMHg5QywKKyAgICAweEY3LDB4RjYsMHg4
NSwweDQ5LDB4NTUsMHhBQSwweDAwLDB4MDAsMHg5NiwweEVFLDB4NDYsMHg1QSwweDA5LDB4MDIs
MHgwMCwweDAwLAorICAgIDB4RjgsMHhGNiwweDc1LDB4RUUsMHgwQiwweDI3LDB4MEEsMHg4Miww
eEQ3LDB4RUUsMHhCMiwweEQ1LDB4RjgsMHhEOCwweEQ2LDB4OTYsCisgICAgMHhENiwweEY2LDB4
QjYsMHhFRSwweDRBLDB4ODIsMHgwMCwweDAyLDB4RDYsMHhGNiwweDQzLDB4NDksMHg3MCwweDYw
LDB4RTAsMHg3MCwKKyAgICAweDhGLDB4QkMsMHgwMiwweDQxLDB4MDksMHhGRiwweEZGLDB4QkQs
MHhCNiwweEY2LDB4NDcsMHg4MiwweDE3LDB4MTUsMHgzNywweDA3LAorICAgIDB4MTgsMHhGRiww
eDk1LDB4RUUsMHg2OCwweDcwLDB4QUUsMHgwQywweEY3LDB4RjYsMHgzNSwweEU2LDB4ODMsMHgy
MSwweDBCLDB4MDgsCisgICAgMHhGNywweEY2LDB4NTUsMHhFNiwweEMyLDB4QzAsMHg2MCwweDZF
LDB4NzUsMHhFRSwweDUxLDB4Q0QsMHgxQywweDNFLDB4MjYsMHhCNiwKKyAgICAweEI2LDB4RjYs
MHhBNywweDdBLDB4MkYsMHg1NSwweDU1LDB4NTUsMHg5NSwweEY2LDB4MDIsMHg0OSwweDcwLDB4
NkEsMHg3RiwweDdGLAorICAgIDB4NDcsMHg3QSwweEUzLDB4MzgsMHg5QiwweEY4LDB4RjAsMHg2
QiwweEYzLDB4RTUsMHhBNSwweDU5LDB4M0YsMHhGNSwweDc1LDB4NTUsCisgICAgMHhENywweEY2
LDB4NDcsMHg3QSwweDAwLDB4MDAsMHgwQiwweEI1LDB4RjgsMHhGNiwweEIzLDB4RDUsMHgwMCww
eDgwLDB4ODAsMHhBOSwKKyAgICAweDc2LDB4RUUsMHhGNCwweERELDB4NDAsMHg0MCwweDQ4LDB4
NzAsMHhCMywweEQ1LDB4Q0MsMHg5QiwweDI4LDB4QTgsMHhBRSwweEQ4LAorICAgIDB4NjYsMHg3
MiwweDQzLDB4NTksMHgwMCwweDAwLDB4MkQsMHhENywweDhBLDB4QTMsMHhFNSwweDY5LDB4RkYs
MHhCRiwweDNGLDB4MjUsCisgICAgMHgwNiwweDZBLDB4QzIsMHgzMCwweERDLDB4NTQsMHhENCww
eEY0LDB4QzUsMHg2MSwweDAzLDB4MzksMHhGMywweERGLDB4NTUsMHg3RiwKKyAgICAweDY3LDB4
N0EsMHg0NCwweDQ5LDB4MEUsMHhBNSwweEQ1LDB4NTUsMHg3MiwweERELDB4NDMsMHg0OSwweDJG
LDB4QjUsMHhENSwweDU1LAorICAgIDB4MTQsMHhFNiwweEU4LDB4ODIsMHgwMCwweDAwLDB4MjMs
MHgyOSwweDU1LDB4RTYsMHhGMCwweEJDLDB4NjAsMHhFMCwweDgwLDB4RkUsCisgICAgMHg2Myww
eDU5LDB4MjMsMHg1MSwweDBBLDB4RTMsMHg3MiwweDU2LDB4Q0IsMHhBMywweDQ0LDB4NTksMHgy
NSwweDhELDB4ODksMHg4MSwKKyAgICAweDg3LDB4N0EsMHgyMywweDQxLDB4NTQsMHg1OCwweDY4
LDB4NjAsMHg2NSwweDUxLDB4QzIsMHgzMCwweDQzLDB4NEIsMHg2QiwweDZELAorICAgIDB4NjQs
MHg0OSwweEUzLDB4MzAsMHhFOCwweEI4LDB4N0UsMHg1NywweDg1LDB4NTEsMHhFMywweDM4LDB4
MkYsMHgyNywweDNELDB4RjUsCisgICAgMHg5MywweEQ1LDB4ODQsMHg1OSwweDhGLDB4MEQsMHgw
RCwweDJELDB4NzIsMHhDRCwweDRFLDB4QTQsMHhFQSwweEY4LDB4NUMsMHhGNywKKyAgICAweEM1
LDB4NjEsMHgyMywweDQ5LDB4RDUsMHg3NSwweDU1LDB4MTcsMHgyOSwweDhCLDB4QzUsMHg2MSww
eEUxLDB4QjksMHhBQiwweEM4LAorICAgIDB4NjcsMHg3QSwweDIzLDB4NDEsMHhFMCwweEFDLDB4
RjgsMHg3RiwweDAzLDB4MzksMHg4MSwweDIwLDB4ODIsMHg3MiwweDlFLDB4QjcsCisgICAgMHhF
MywweDMwLDB4QTIsMHgyOCwweDBCLDB4QUQsMHgzRiwweEZFLDB4NDQsMHg0OSwweEUyLDB4MzAs
MHhGQSwweEJGLDB4M0QsMHhGRCwKKyAgICAweEQxLDB4QkMsMHg0MywweDQxLDB4MkQsMHhCNSww
eDM1LDB4QjUsMHg0RiwweEE0LDB4RUEsMHg3MiwweDNBLDB4QjUsMHg4OCwweDAwLAorICAgIDB4
ODcsMHg3QSwweDAyLDB4NDEsMHgxNywweDk1LDB4NTUsMHg1NSwweDI5LDB4OTMsMHgyMywweDQ5
LDB4RTAsMHg3RSwweDc1LDB4NzUsCisgICAgMHg2NCwweDUxLDB4QTIsMHgyOCwweEM4LDB4RTAs
MHg2OCwweDVFLDB4MDMsMHg0MSwweDgyLDB4MjAsMHhBRCwweEJGLDB4MjMsMHhGRiwKKyAgICAw
eEUzLDB4MzgsMHhDMiwweDI4LDB4N0UsMHhCNywweDVFLDB4RkMsMHhFMywweDMwLDB4QzIsMHgy
OCwweDBGLDB4MzgsMHgwQSwweDE1LAorICAgIDB4QUYsMHhCNCwweDAzLDB4MzksMHhCNSwweEE1
LDB4MDUsMHgyRCwweEFGLDB4QjQsMHgyNywweDVBLDB4QUEsMHhCRiwweDdFLDB4QTgsCisgICAg
MHgwMywweDQxLDB4RTIsMHgzOCwweEZBLDB4N0YsMHg1RCwweDU1LDB4QTUsMHg1MSwweEUyLDB4
MzgsMHhDRCwweDRELDB4NDUsMHg0NSwKKyAgICAweDI0LDB4MzksMHhFMywweDMwLDB4RTIsMHhC
RCwweEY1LDB4NTUsMHgwMywweDM5LDB4QzIsMHgyOCwweDVBLDB4QTAsMHgwMCwweDBBLAorICAg
IDB4MjQsMHgzOSwweEEyLDB4MjgsMHhCRCwweERGLDB4RUEsMHgwOCwweDI3LDB4NjIsMHhDMiww
eDI4LDB4RDUsMHhERCwweEI1LDB4MkYsCisgICAgMHgwQSwweDgzLDB4QTUsMHg1MSwweDA5LDB4
QUIsMHgyQiwweEFCLDB4NkUsMHhBQywweEM5LDB4N0EsMHgwQiwweEQ1LDB4RDUsMHg1NSwKK307
CisKK3N0YXRpYyBjb25zdCBzaXplX3QgcGl4ZWxfNV93aWR0aCA9IDE2Oworc3RhdGljIGNvbnN0
IHNpemVfdCBwaXhlbF81X2hlaWdodCA9IDE2Oworc3RhdGljIGNvbnN0IHNpemVfdCBwaXhlbF81
X3NpemUgPSAxMjg7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBwaXhlbF81X2RhdGFbMTI4
XSA9Cit7CisgICAgMHg5NiwweEVFLDB4NjQsMHg0OSwweDU1LDB4QzAsMHhDMCwweEMwLDB4NTUs
MHhFRSwweDQ3LDB4NkEsMHg1NSwweEMyLDB4OUQsMHgzNSwKKyAgICAweEQ3LDB4RjYsMHg4Qiww
eDhCLDB4MzUsMHgwMCwweDAwLDB4MDAsMHhENywweEY2LDB4QjIsMHhENSwweEUwLDB4RjAsMHhG
MCwweEQ4LAorICAgIDB4NzEsMHhDRCwweDQzLDB4NTksMHhDMywweDdGLDB4RkYsMHhGNSwweDZB
LDB4OUIsMHhFMywweDM4LDB4MkYsMHhGRiwweEQ3LDB4NTcsCisgICAgMHhGNywweEY2LDB4QzUs
MHg1OSwweDAwLDB4MEIsMHhENSwweDU1LDB4NzYsMHhFRSwweEFGLDB4QjQsMHhGMCwweDc4LDB4
QzIsMHhBRCwKKyAgICAweDQ5LDB4OTMsMHg0MywweDUxLDB4MTUsMHgyNSwweEI1LDB4QTUsMHgy
NiwweDZBLDB4QzIsMHgzMCwweEZDLDB4NTgsMHg1MCwweDVBLAorICAgIDB4NjQsMHg1MSwweEMy
LDB4MjgsMHgyQywweEJGLDB4RkQsMHhCNSwweEQwLDB4QjQsMHg0MywweDQ5LDB4MDMsMHgwMyww
eEE5LDB4ODksCisgICAgMHhDOCwweDgyLDB4MDIsMHg0MSwweENELDB4RDUsMHhENSwweDU1LDB4
NDQsMHg0MSwweEEyLDB4MjgsMHhEOCwweEZDLDB4RkEsMHhBRiwKKyAgICAweDg1LDB4NDksMHhD
MiwweDMwLDB4RDUsMHg1NSwweEY1LDB4M0YsMHgwRCwweEE0LDB4NjQsMHg0OSwweEE5LDB4ODEs
MHgyQiwweEVGLAorfTsKKworc3RhdGljIGNvbnN0IHNpemVfdCBwaXhlbF82X3dpZHRoID0gODsK
K3N0YXRpYyBjb25zdCBzaXplX3QgcGl4ZWxfNl9oZWlnaHQgPSA4Oworc3RhdGljIGNvbnN0IHNp
emVfdCBwaXhlbF82X3NpemUgPSAzMjsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHBpeGVs
XzZfZGF0YVszMl0gPQoreworICAgIDB4MzQsMHhFNiwweDY0LDB4NTEsMHhFRiwweEI4LDB4REIs
MHg1RCwweEI3LDB4RjYsMHg0NywweDZBLDB4MDIsMHg4MCwweDgyLDB4QTUsCisgICAgMHg2Nyww
eDdBLDB4QzIsMHgzMCwweEUzLDB4NjMsMHg3QiwweDVELDB4RjEsMHhCQywweDAzLDB4MzksMHgy
NSwweEI1LDB4QjUsMHhCNSwKK307CisKK3N0YXRpYyBjb25zdCBzaXplX3QgcGl4ZWxfN193aWR0
aCA9IDQ7CitzdGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVsXzdfaGVpZ2h0ID0gNDsKK3N0YXRpYyBj
b25zdCBzaXplX3QgcGl4ZWxfN19zaXplID0gODsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy
IHBpeGVsXzdfZGF0YVs4XSA9Cit7CisgICAgMHgxNCwweERFLDB4NDQsMHg0OSwweDBBLDB4Mjcs
MHhENSwweEQ1LAorfTsKKworc3RhdGljIGNvbnN0IHNpemVfdCBwaXhlbF84X3dpZHRoID0gMjsK
K3N0YXRpYyBjb25zdCBzaXplX3QgcGl4ZWxfOF9oZWlnaHQgPSAyOworc3RhdGljIGNvbnN0IHNp
emVfdCBwaXhlbF84X3NpemUgPSA4Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcGl4ZWxf
OF9kYXRhWzhdID0KK3sKKyAgICAweDkyLDB4Q0QsMHg0NCwweDQ5LDB4MzMsMHhERCwweDMzLDB4
REQsCit9OworCitzdGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVsXzlfd2lkdGggPSAxOworc3RhdGlj
IGNvbnN0IHNpemVfdCBwaXhlbF85X2hlaWdodCA9IDE7CitzdGF0aWMgY29uc3Qgc2l6ZV90IHBp
eGVsXzlfc2l6ZSA9IDg7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBwaXhlbF85X2RhdGFb
OF0gPQoreworICAgIDB4MkEsMHg4MywweDBBLDB4ODMsMHhGQiwweEVGLDB4RUUsMHhFRiwKK307
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xlc19jb25mb3JtYW5j
ZV90ZXN0cy9nZW5lcmF0ZV9nbGVzX2NvbmZvcm1hbmNlX3Rlc3RzLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbGVzX2NvbmZvcm1hbmNlX3Rlc3Rz
L2dlbmVyYXRlX2dsZXNfY29uZm9ybWFuY2VfdGVzdHMucHkJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsZXNfY29uZm9ybWFuY2VfdGVzdHMvZ2Vu
ZXJhdGVfZ2xlc19jb25mb3JtYW5jZV90ZXN0cy5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDY4IEBACitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN5cworCitkZWYgUmVhZEZpbGVB
c0xpbmVzKGZpbGVuYW1lKToKKyAgICAiIiJSZWFkcyBhIGZpbGUsIHJlbW92aW5nIGJsYW5rIGxp
bmVzIGFuZCBsaW5lcyB0aGF0IHN0YXJ0IHdpdGggIyIiIgorICAgIGZpbGUgPSBvcGVuKGZpbGVu
YW1lLCAiciIpCisgICAgcmF3X2xpbmVzID0gZmlsZS5yZWFkbGluZXMoKQorICAgIGZpbGUuY2xv
c2UoKQorICAgIGxpbmVzID0gW10KKyAgICBmb3IgbGluZSBpbiByYXdfbGluZXM6CisgICAgICAg
IGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgaWYgbGVuKGxpbmUpID4gMCBhbmQgbm90IGxp
bmUuc3RhcnRzd2l0aCgiIyIpOgorICAgICAgICAgICAgbGluZXMuYXBwZW5kKGxpbmUpCisgICAg
cmV0dXJuIGxpbmVzCisKK2RlZiBHZXRTdWl0ZU5hbWUodGVzdE5hbWUpOgorICAgIHJldHVybiB0
ZXN0TmFtZVs6dGVzdE5hbWUuZmluZCgiLyIpXQorCitkZWYgR2V0VGVzdE5hbWUodGVzdE5hbWUp
OgorICAgIHJlcGxhY2VtZW50cyA9IHsgIi50ZXN0IjogIiIsICIuIjogIl8iIH0KKyAgICBzcGxp
dFRlc3ROYW1lID0gdGVzdE5hbWUuc3BsaXQoIi8iKQorICAgIGNsZWFuTmFtZSA9IHNwbGl0VGVz
dE5hbWVbLTJdICsgIl8iICsgc3BsaXRUZXN0TmFtZVstMV0KKyAgICBmb3IgcmVwbGFjZUtleSBp
biByZXBsYWNlbWVudHM6CisgICAgICAgIGNsZWFuTmFtZSA9IGNsZWFuTmFtZS5yZXBsYWNlKHJl
cGxhY2VLZXksIHJlcGxhY2VtZW50c1tyZXBsYWNlS2V5XSkKKyAgICByZXR1cm4gY2xlYW5OYW1l
CisKK2RlZiBHZW5lcmF0ZVRlc3RzKG91dEZpbGUsIHRlc3ROYW1lcyk6CisgICAgIyBSZW1vdmUg
ZHVwbGljYXRlIHRlc3RzCisgICAgdGVzdE5hbWVzID0gbGlzdChzZXQodGVzdE5hbWVzKSkKKyAg
ICB0ZXN0U3VpdGVzID0gW10KKworICAgIG91dEZpbGUud3JpdGUoIiNpbmNsdWRlIFwiZ2xlc19j
b25mb3JtYW5jZV90ZXN0cy5oXCJcblxuIikKKworICAgIGZvciB0ZXN0IGluIHRlc3ROYW1lczoK
KyAgICAgICAgdGVzdFN1aXRlID0gR2V0U3VpdGVOYW1lKHRlc3QpCisgICAgICAgIGlmIG5vdCB0
ZXN0U3VpdGUgaW4gdGVzdFN1aXRlczoKKyAgICAgICAgICAgIG91dEZpbGUud3JpdGUoIkRFRklO
RV9DT05GT1JNQU5DRV9URVNUX0NMQVNTKCIgKyB0ZXN0U3VpdGUgKyAiKTtcblxuIikKKyAgICAg
ICAgICAgIHRlc3RTdWl0ZXMuYXBwZW5kKHRlc3RTdWl0ZSkKKworICAgICAgICBvdXRGaWxlLndy
aXRlKCJUWVBFRF9URVNUKCIgKyB0ZXN0U3VpdGUgKyAiLCAiICsgR2V0VGVzdE5hbWUodGVzdCkg
KyAiKVxuIikKKyAgICAgICAgb3V0RmlsZS53cml0ZSgie1xuIikKKyAgICAgICAgb3V0RmlsZS53
cml0ZSgiICAgIHJ1bihcIiIgKyB0ZXN0ICsgIlwiKTtcbiIpCisgICAgICAgIG91dEZpbGUud3Jp
dGUoIn1cblxuIikKKworZGVmIEdlbmVyYXRlVGVzdExpc3Qoc291cmNlRmlsZSwgcm9vdERpcik6
CisgICAgdGVzdHMgPSBbIF0KKyAgICBmaWxlTmFtZSwgZmlsZUV4dGVuc2lvbiA9IG9zLnBhdGgu
c3BsaXRleHQoc291cmNlRmlsZSkKKyAgICBpZiBmaWxlRXh0ZW5zaW9uID09ICIucnVuIjoKKyAg
ICAgICAgbGluZXMgPSBSZWFkRmlsZUFzTGluZXMoc291cmNlRmlsZSkKKyAgICAgICAgZm9yIGxp
bmUgaW4gbGluZXM6CisgICAgICAgICAgICB0ZXN0cyArPSBHZW5lcmF0ZVRlc3RMaXN0KG9zLnBh
dGguam9pbihvcy5wYXRoLmRpcm5hbWUoc291cmNlRmlsZSksIGxpbmUpLCByb290RGlyKQorICAg
IGVsaWYgZmlsZUV4dGVuc2lvbiA9PSAiLnRlc3QiOgorICAgICAgICB0ZXN0cy5hcHBlbmQob3Mu
cGF0aC5yZWxwYXRoKG9zLnBhdGgucmVhbHBhdGgoc291cmNlRmlsZSksIHJvb3REaXIpLnJlcGxh
Y2UoIlxcIiwgIi8iKSkKKyAgICByZXR1cm4gdGVzdHM7CisKK2RlZiBtYWluKGFyZ3YpOgorICAg
IHRlc3RzID0gR2VuZXJhdGVUZXN0TGlzdChhcmd2WzBdLCBhcmd2WzFdKQorICAgIHRlc3RzLnNv
cnQoKQorCisgICAgb3V0cHV0ID0gb3Blbihhcmd2WzJdLCAnd2InKQorICAgIEdlbmVyYXRlVGVz
dHMob3V0cHV0LCB0ZXN0cykKKyAgICBvdXRwdXQuY2xvc2UoKQorCisgICAgcmV0dXJuIDAKKwor
aWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBzeXMuZXhpdChtYWluKHN5cy5hcmd2WzE6
XSkpCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xlc19jb25mb3Jt
YW5jZV90ZXN0cy9nbGVzX2NvbmZvcm1hbmNlX3Rlc3RzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xlc19jb25mb3JtYW5jZV90ZXN0cy9nbGVz
X2NvbmZvcm1hbmNlX3Rlc3RzLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvZ2xlc19jb25mb3JtYW5jZV90ZXN0cy9nbGVzX2NvbmZvcm1hbmNl
X3Rlc3RzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkyIEBACisjaW5jbHVkZSAiZ2xl
c19jb25mb3JtYW5jZV90ZXN0cy5oIgorI2luY2x1ZGUgIkdURk1haW4uaCIKKworI2luY2x1ZGUg
PHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8dmVjdG9yPgorI2luY2x1
ZGUgPHNzdHJlYW0+CisjaW5jbHVkZSA8c3RkYXJnLmg+CisKK3N0YXRpYyBzdGQ6OnZlY3Rvcjxj
aGFyPiBGb3JtYXRBcmcoY29uc3QgY2hhciogZm10LCAuLi4pCit7CisgICAgdmFfbGlzdCB2YXJh
cmc7CisgICAgdmFfc3RhcnQodmFyYXJnLCBmbXQpOworICAgIGludCBsZW4gPSB2c25wcmludGYo
TlVMTCwgMCwgZm10LCB2YXJhcmcpOworICAgIHZhX2VuZCh2YXJhcmcpOworCisgICAgc3RkOjp2
ZWN0b3I8Y2hhcj4gYnVmKGxlbiArIDEpOworCisgICAgdmFfc3RhcnQodmFyYXJnLCBmbXQpOwor
ICAgIHZzbnByaW50ZihidWYuZGF0YSgpLCBidWYuc2l6ZSgpLCBmbXQsIHZhcmFyZyk7CisgICAg
dmFfZW5kKHZhcmFyZyk7CisKKyAgICByZXR1cm4gYnVmOworfQorCitzdGF0aWMgc3RkOjpzdHJp
bmcgR2V0RXhlY3V0YWJsZURpcmVjdG9yeSgpCit7CisgICAgc3RkOjp2ZWN0b3I8Y2hhcj4gZXhl
Y3V0YWJsZUZpbGVCdWYoTUFYX1BBVEgpOworICAgIERXT1JEIGV4ZWN1dGFibGVQYXRoTGVuID0g
R2V0TW9kdWxlRmlsZU5hbWVBKE5VTEwsIGV4ZWN1dGFibGVGaWxlQnVmLmRhdGEoKSwgZXhlY3V0
YWJsZUZpbGVCdWYuc2l6ZSgpKTsKKyAgICBpZiAoZXhlY3V0YWJsZVBhdGhMZW4gPT0gMCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzdGQ6OnN0cmluZyBleGVj
dXRhYmxlTG9jYXRpb24gPSBleGVjdXRhYmxlRmlsZUJ1Zi5kYXRhKCk7CisgICAgc2l6ZV90IGxh
c3RQYXRoU2VwTG9jID0gZXhlY3V0YWJsZUxvY2F0aW9uLmZpbmRfbGFzdF9vZigiXFwvIik7Cisg
ICAgaWYgKGxhc3RQYXRoU2VwTG9jICE9IHN0ZDo6c3RyaW5nOjpucG9zKQorICAgIHsKKyAgICAg
ICAgZXhlY3V0YWJsZUxvY2F0aW9uID0gZXhlY3V0YWJsZUxvY2F0aW9uLnN1YnN0cigwLCBsYXN0
UGF0aFNlcExvYyk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGV4ZWN1dGFibGVM
b2NhdGlvbiA9ICIiOworICAgIH0KKworICAgIHJldHVybiBleGVjdXRhYmxlTG9jYXRpb247Cit9
CisKK3ZvaWQgUnVuQ29uZm9ybWFuY2VUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nICZ0ZXN0UGF0aCwg
RUdMTmF0aXZlRGlzcGxheVR5cGUgbmF0aXZlRGlzcGxheSkKK3sKKyAgICBzdGQ6OnZlY3Rvcjxj
aGFyKj4gYXJnczsKKworICAgIC8vIEVtcHR5IGZpcnN0IGFyZ3VtZW50IGZvciB0aGUgcHJvZ3Jh
bSBuYW1lCisgICAgYXJncy5wdXNoX2JhY2soIiIpOworCisgICAgc3RkOjp2ZWN0b3I8Y2hhcj4g
d2lkdGhBcmcgPSBGb3JtYXRBcmcoIi13aWR0aD0ldSIsIDY0KTsKKyAgICBhcmdzLnB1c2hfYmFj
ayh3aWR0aEFyZy5kYXRhKCkpOworCisgICAgc3RkOjp2ZWN0b3I8Y2hhcj4gaGVpZ2h0QXJnID0g
Rm9ybWF0QXJnKCItaGVpZ2h0PSV1IiwgNjQpOworICAgIGFyZ3MucHVzaF9iYWNrKGhlaWdodEFy
Zy5kYXRhKCkpOworCisgICAgc3RkOjp2ZWN0b3I8Y2hhcj4gZGlzcGxheUFyZyA9IEZvcm1hdEFy
ZygiLWQ9JWxsdSIsIG5hdGl2ZURpc3BsYXkpOworICAgIGFyZ3MucHVzaF9iYWNrKGRpc3BsYXlB
cmcuZGF0YSgpKTsKKworICAgIHN0ZDo6dmVjdG9yPGNoYXI+IHJ1bkFyZyA9IEZvcm1hdEFyZygi
LXJ1bj0lcy9jb25mb3JtYW5jZV90ZXN0cy8lcyIsIEdldEV4ZWN1dGFibGVEaXJlY3RvcnkoKS5j
X3N0cigpLCB0ZXN0UGF0aC5jX3N0cigpKTsKKyAgICBhcmdzLnB1c2hfYmFjayhydW5BcmcuZGF0
YSgpKTsKKworICAgIC8vIFJlZGlyZWN0IGNvdXQKKyAgICBzdGQ6OnN0cmVhbWJ1Ziogb2xkQ291
dFN0cmVhbUJ1ZiA9IHN0ZDo6Y291dC5yZGJ1ZigpOworICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBz
dHJDb3V0OworICAgIHN0ZDo6Y291dC5yZGJ1ZihzdHJDb3V0LnJkYnVmKCkpOworCisgICAgaWYg
KEdURk1haW4oYXJncy5zaXplKCksIGFyZ3MuZGF0YSgpKSAhPSAwKQorICAgIHsKKyAgICAgICAg
RkFJTCgpIDw8ICJHVEZNYWluIGZhaWxlZC4iOworICAgIH0KKworICAgIC8vIFJlc3RvcmUgb2xk
IGNvdXQKKyAgICBzdGQ6OmNvdXQucmRidWYob2xkQ291dFN0cmVhbUJ1Zik7CisgICAgc3RkOjpz
dHJpbmcgbG9nID0gc3RyQ291dC5zdHIoKTsKKworICAgIC8vIExvb2sgZm9yIGZhaWx1cmVzCisg
ICAgc2l6ZV90IG9mZnNldCA9IDA7CisgICAgc3RkOjpzdHJpbmcgb2Zmc2V0U2VhcmNoU3RyaW5n
ID0gImZhaWx1cmUgPSAiOworICAgIHdoaWxlICgob2Zmc2V0ID0gbG9nLmZpbmQoImZhaWx1cmUg
PSAiLCBvZmZzZXQpKSAhPSBzdGQ6OnN0cmluZzo6bnBvcykKKyAgICB7CisgICAgICAgIG9mZnNl
dCArPSBvZmZzZXRTZWFyY2hTdHJpbmcubGVuZ3RoKCk7CisKKyAgICAgICAgc2l6ZV90IGZhaWx1
cmVDb3VudCA9IGF0b2xsKGxvZy5jX3N0cigpICsgb2Zmc2V0KTsKKyAgICAgICAgRVhQRUNUX0VR
KDAsIGZhaWx1cmVDb3VudCkgPDwgbG9nOworICAgIH0KK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9nbGVzX2NvbmZvcm1hbmNlX3Rlc3RzL2dsZXNfY29uZm9ybWFu
Y2VfdGVzdHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvZ2xlc19jb25mb3JtYW5jZV90ZXN0cy9nbGVzX2NvbmZvcm1hbmNlX3Rlc3RzLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsZXNfY29uZm9y
bWFuY2VfdGVzdHMvZ2xlc19jb25mb3JtYW5jZV90ZXN0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNjkgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaWZuZGVmIENPTkZPUk1BTkNFX1RFU1RTX0NP
TkZPUk1BTkNFX1RFU1RfSF8KKyNkZWZpbmUgQ09ORk9STUFOQ0VfVEVTVFNfQ09ORk9STUFOQ0Vf
VEVTVF9IXworCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworI2luY2x1ZGUgPEVHTC9lZ2wu
aD4KKyNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisKKyNpbmNsdWRlIDxzdHJpbmc+CisKK3N0cnVj
dCBEM0Q5Cit7CisgICAgc3RhdGljIEVHTE5hdGl2ZURpc3BsYXlUeXBlIEdldE5hdGl2ZURpc3Bs
YXkoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVHTF9ERUZBVUxUX0RJU1BMQVk7CisgICAgfQor
fTsKKworc3RydWN0IEQzRDExCit7CisgICAgc3RhdGljIEVHTE5hdGl2ZURpc3BsYXlUeXBlIEdl
dE5hdGl2ZURpc3BsYXkoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVHTF9EM0QxMV9PTkxZX0RJ
U1BMQVlfQU5HTEU7CisgICAgfQorfTsKKworI2RlZmluZSBDT05GT1JNQU5DRV9URVNUU19FUzIg
MgorI2RlZmluZSBDT05GT1JNQU5DRV9URVNUU19FUzMgMworCisjaWYgQ09ORk9STUFOQ0VfVEVT
VFNfVFlQRSA9PSBDT05GT1JNQU5DRV9URVNUU19FUzIKKyAgICB0eXBlZGVmIHRlc3Rpbmc6OlR5
cGVzPEQzRDksIEQzRDExPiBDb25mb3JtYW5jZVRlc3RUeXBlczsKKyNlbGlmIENPTkZPUk1BTkNF
X1RFU1RTX1RZUEUgPT0gQ09ORk9STUFOQ0VfVEVTVFNfRVMzCisgICAgdHlwZWRlZiB0ZXN0aW5n
OjpUeXBlczxEM0QxMT4gQ29uZm9ybWFuY2VUZXN0VHlwZXM7CisjZWxzZQorIyAgIGVycm9yICJV
bmtub3duIENPTkZPUk1BTkNFX1RFU1RTX1RZUEUiCisjZW5kaWYKKworI2RlZmluZSBERUZJTkVf
Q09ORk9STUFOQ0VfVEVTVF9DTEFTUyhuYW1lKSBcCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGNsYXNzIG5hbWUgOiBwdWJsaWMgQ29uZm9ybWFuY2VUZXN0PFQ+IHsgfTsgXAorICAgIFRZUEVE
X1RFU1RfQ0FTRShuYW1lLCBDb25mb3JtYW5jZVRlc3RUeXBlcyk7CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgorY2xhc3MgQ29uZm9ybWFuY2VUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QKK3sK
KyAgcHVibGljOgorICAgIENvbmZvcm1hbmNlVGVzdCgpCisgICAgICAgIDogbU5hdGl2ZURpc3Bs
YXkoVDo6R2V0TmF0aXZlRGlzcGxheSgpKQorICAgIHsKKyAgICB9CisKKyAgcHJvdGVjdGVkOgor
ICAgIHZvaWQgcnVuKGNvbnN0IHN0ZDo6c3RyaW5nICZ0ZXN0UGF0aCkKKyAgICB7CisgICAgICAg
IFJ1bkNvbmZvcm1hbmNlVGVzdCh0ZXN0UGF0aCwgbU5hdGl2ZURpc3BsYXkpOworICAgIH0KKwor
ICBwcml2YXRlOgorICAgIEVHTE5hdGl2ZURpc3BsYXlUeXBlIG1OYXRpdmVEaXNwbGF5OworfTsK
Kwordm9pZCBSdW5Db25mb3JtYW5jZVRlc3QoY29uc3Qgc3RkOjpzdHJpbmcgJnRlc3RQYXRoLCBF
R0xOYXRpdmVEaXNwbGF5VHlwZSBuYXRpdmVEaXNwbGF5KTsKKworI2VuZGlmIC8vIENPTkZPUk1B
TkNFX1RFU1RTX0NPTkZPUk1BTkNFX1RFU1RfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9nbGVzX2NvbmZvcm1hbmNlX3Rlc3RzL2dsZXNfY29uZm9ybWFuY2VfdGVz
dHNfbWFpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsZXNfY29uZm9ybWFuY2VfdGVzdHMvZ2xlc19jb25mb3JtYW5jZV90ZXN0c19tYWluLmNw
cAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xl
c19jb25mb3JtYW5jZV90ZXN0cy9nbGVzX2NvbmZvcm1hbmNlX3Rlc3RzX21haW4uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMjMgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAiZ2xl
c19jb25mb3JtYW5jZV90ZXN0cy5oIgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworI2lu
Y2x1ZGUgPEVHTC9lZ2wuaD4KKyNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisKKyNpbmNsdWRlIDxt
YXA+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdj
LCBhcmd2KTsKKyAgICBpbnQgcnQgPSBSVU5fQUxMX1RFU1RTKCk7CisgICAgcmV0dXJuIHJ0Owor
fQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvQU5H
TEVQZXJmVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL3BlcmZfdGVzdHMvQU5HTEVQZXJmVGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvQU5HTEVQZXJmVGVzdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOTQgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMp
IDIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gQU5H
TEVQZXJmVGVzdHM6CisvLyAgIEJhc2UgY2xhc3MgZm9yIGdvb2dsZSB0ZXN0IHBlcmZvcm1hbmNl
IHRlc3RzCisvLworCisjaW5jbHVkZSAiQU5HTEVQZXJmVGVzdC5oIgorCisjaW5jbHVkZSAidGhp
cmRfcGFydHkvcGVyZi9wZXJmX3Rlc3QuaCIKKworI2luY2x1ZGUgPGNhc3NlcnQ+CisjaW5jbHVk
ZSA8Y21hdGg+CisjaW5jbHVkZSA8aW9zdHJlYW0+CisKK0FOR0xFUGVyZlRlc3Q6OkFOR0xFUGVy
ZlRlc3QoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsIGNvbnN0IHN0ZDo6c3RyaW5nICZzdWZmaXgp
CisgICAgOiBtTmFtZShuYW1lKSwKKyAgICAgIG1TdWZmaXgoc3VmZml4KSwKKyAgICAgIG1UaW1l
cihudWxscHRyKSwKKyAgICAgIG1SdW5UaW1lU2Vjb25kcyg1LjApLAorICAgICAgbU51bVN0ZXBz
UGVyZm9ybWVkKDApLAorICAgICAgbVJ1bm5pbmcodHJ1ZSkKK3sKKyAgICBtVGltZXIgPSBDcmVh
dGVUaW1lcigpOworfQorCitBTkdMRVBlcmZUZXN0Ojp+QU5HTEVQZXJmVGVzdCgpCit7CisgICAg
U2FmZURlbGV0ZShtVGltZXIpOworfQorCit2b2lkIEFOR0xFUGVyZlRlc3Q6OnJ1bigpCit7Cisg
ICAgbVRpbWVyLT5zdGFydCgpOworICAgIHdoaWxlIChtUnVubmluZykKKyAgICB7CisgICAgICAg
IHN0ZXAoKTsKKyAgICAgICAgaWYgKG1SdW5uaW5nKQorICAgICAgICB7CisgICAgICAgICAgICAr
K21OdW1TdGVwc1BlcmZvcm1lZDsKKyAgICAgICAgfQorICAgICAgICBpZiAobVRpbWVyLT5nZXRF
bGFwc2VkVGltZSgpID4gbVJ1blRpbWVTZWNvbmRzKQorICAgICAgICB7CisgICAgICAgICAgICBt
UnVubmluZyA9IGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIGZpbmlzaFRlc3QoKTsKKyAg
ICBtVGltZXItPnN0b3AoKTsKK30KKwordm9pZCBBTkdMRVBlcmZUZXN0OjpwcmludFJlc3VsdChj
b25zdCBzdGQ6OnN0cmluZyAmdHJhY2UsIGRvdWJsZSB2YWx1ZSwgY29uc3Qgc3RkOjpzdHJpbmcg
JnVuaXRzLCBib29sIGltcG9ydGFudCkgY29uc3QKK3sKKyAgICBwZXJmX3Rlc3Q6OlByaW50UmVz
dWx0KG1OYW1lLCBtU3VmZml4LCB0cmFjZSwgdmFsdWUsIHVuaXRzLCBpbXBvcnRhbnQpOworfQor
Cit2b2lkIEFOR0xFUGVyZlRlc3Q6OnByaW50UmVzdWx0KGNvbnN0IHN0ZDo6c3RyaW5nICZ0cmFj
ZSwgc2l6ZV90IHZhbHVlLCBjb25zdCBzdGQ6OnN0cmluZyAmdW5pdHMsIGJvb2wgaW1wb3J0YW50
KSBjb25zdAoreworICAgIHBlcmZfdGVzdDo6UHJpbnRSZXN1bHQobU5hbWUsIG1TdWZmaXgsIHRy
YWNlLCB2YWx1ZSwgdW5pdHMsIGltcG9ydGFudCk7Cit9CisKK3ZvaWQgQU5HTEVQZXJmVGVzdDo6
U2V0VXAoKQoreworfQorCit2b2lkIEFOR0xFUGVyZlRlc3Q6OlRlYXJEb3duKCkKK3sKKyAgICBk
b3VibGUgcmVsYXRpdmVTY29yZSA9IHN0YXRpY19jYXN0PGRvdWJsZT4obU51bVN0ZXBzUGVyZm9y
bWVkKSAvIG1UaW1lci0+Z2V0RWxhcHNlZFRpbWUoKTsKKyAgICBwcmludFJlc3VsdCgic2NvcmUi
LCBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0ZDo6cm91bmQocmVsYXRpdmVTY29yZSkpLCAic2NvcmUi
LCB0cnVlKTsKK30KKworZG91YmxlIEFOR0xFUGVyZlRlc3Q6Om5vcm1hbGl6ZWRUaW1lKHNpemVf
dCB2YWx1ZSkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkg
LyBzdGF0aWNfY2FzdDxkb3VibGU+KG1OdW1TdGVwc1BlcmZvcm1lZCk7Cit9CisKK3N0ZDo6c3Ry
aW5nIFJlbmRlclRlc3RQYXJhbXM6OnN1ZmZpeCgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChnZXRS
ZW5kZXJlcigpKQorICAgIHsKKyAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9E
M0QxMV9BTkdMRToKKyAgICAgICAgICAgIHJldHVybiAiX2QzZDExIjsKKyAgICAgICAgY2FzZSBF
R0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0Q5X0FOR0xFOgorICAgICAgICAgICAgcmV0dXJuICJf
ZDNkOSI7CisgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xF
OgorICAgICAgICAgICAgcmV0dXJuICJfZ2wiOworICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9B
TkdMRV9UWVBFX09QRU5HTEVTX0FOR0xFOgorICAgICAgICAgICAgcmV0dXJuICJfZ2xlcyI7Cisg
ICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfREVGQVVMVF9BTkdMRToKKyAgICAg
ICAgICAgIHJldHVybiAiX2RlZmF1bHQiOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
YXNzZXJ0KDApOworICAgICAgICAgICAgcmV0dXJuICJfdW5rIjsKKyAgICB9Cit9CisKK0FOR0xF
UmVuZGVyVGVzdDo6QU5HTEVSZW5kZXJUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lLCBjb25z
dCBSZW5kZXJUZXN0UGFyYW1zICZ0ZXN0UGFyYW1zKQorICAgIDogQU5HTEVQZXJmVGVzdChuYW1l
LCB0ZXN0UGFyYW1zLnN1ZmZpeCgpKSwKKyAgICAgIG1UZXN0UGFyYW1zKHRlc3RQYXJhbXMpLAor
ICAgICAgbUVHTFdpbmRvdyhudWxscHRyKSwKKyAgICAgIG1PU1dpbmRvdyhudWxscHRyKQorewor
fQorCitBTkdMRVJlbmRlclRlc3Q6On5BTkdMRVJlbmRlclRlc3QoKQoreworICAgIFNhZmVEZWxl
dGUobU9TV2luZG93KTsKKyAgICBTYWZlRGVsZXRlKG1FR0xXaW5kb3cpOworfQorCit2b2lkIEFO
R0xFUmVuZGVyVGVzdDo6U2V0VXAoKQoreworICAgIG1PU1dpbmRvdyA9IENyZWF0ZU9TV2luZG93
KCk7CisgICAgbUVHTFdpbmRvdyA9IG5ldyBFR0xXaW5kb3cobVRlc3RQYXJhbXMubWFqb3JWZXJz
aW9uLCBtVGVzdFBhcmFtcy5taW5vclZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbVRlc3RQYXJhbXMuZWdsUGFyYW1ldGVycyk7CisgICAgbUVHTFdpbmRvdy0+c2V0U3dh
cEludGVydmFsKDApOworCisgICAgaWYgKCFtT1NXaW5kb3ctPmluaXRpYWxpemUobU5hbWUsIG1U
ZXN0UGFyYW1zLndpbmRvd1dpZHRoLCBtVGVzdFBhcmFtcy53aW5kb3dIZWlnaHQpKQorICAgIHsK
KyAgICAgICAgRkFJTCgpIDw8ICJGYWlsZWQgaW5pdGlhbGl6aW5nIE9TV2luZG93IjsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbUVHTFdpbmRvdy0+aW5pdGlhbGl6ZUdMKG1P
U1dpbmRvdykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIkZhaWxlZCBpbml0aWFsaXppbmcg
RUdMV2luZG93IjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGluaXRpYWxpemVCZW5j
aG1hcmsoKTsKKworICAgIEFOR0xFUGVyZlRlc3Q6OlNldFVwKCk7Cit9CisKK3ZvaWQgQU5HTEVS
ZW5kZXJUZXN0OjpUZWFyRG93bigpCit7CisgICAgQU5HTEVQZXJmVGVzdDo6VGVhckRvd24oKTsK
KworICAgIGRlc3Ryb3lCZW5jaG1hcmsoKTsKKworICAgIG1FR0xXaW5kb3ctPmRlc3Ryb3lHTCgp
OworICAgIG1PU1dpbmRvdy0+ZGVzdHJveSgpOworfQorCit2b2lkIEFOR0xFUmVuZGVyVGVzdDo6
c3RlcCgpCit7CisgICAgLy8gQ2xlYXIgZXZlbnRzIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGRpZCBu
b3QgcHJvY2VzcyBmcm9tIHRoaXMgZnJhbWUKKyAgICBFdmVudCBldmVudDsKKyAgICBib29sIGNs
b3NlZCA9IGZhbHNlOworICAgIHdoaWxlIChwb3BFdmVudCgmZXZlbnQpKQorICAgIHsKKyAgICAg
ICAgLy8gSWYgdGhlIGFwcGxpY2F0aW9uIGRpZCBub3QgY2F0Y2ggYSBjbG9zZSBldmVudCwgY2xv
c2Ugbm93CisgICAgICAgIGlmIChldmVudC5UeXBlID09IEV2ZW50OjpFVkVOVF9DTE9TRUQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNsb3NlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBpZiAoY2xvc2VkKQorICAgIHsKKyAgICAgICAgYWJvcnRUZXN0KCk7CisgICAgfQorICAg
IGVsc2UKKyAgICB7CisgICAgICAgIGRyYXdCZW5jaG1hcmsoKTsKKyAgICAgICAgLy8gU3dhcCBp
cyBuZWVkZWQgc28gdGhhdCB0aGUgR1BVIGRyaXZlciB3aWxsIG9jY2FzaW9uYWxseSBmbHVzaCBp
dHMgaW50ZXJuYWwgY29tbWFuZCBxdWV1ZQorICAgICAgICAvLyB0byB0aGUgR1BVLiBUaGUgbnVs
bCBkZXZpY2UgYmVuY2htYXJrcyBhcmUgb25seSB0ZXN0aW5nIENQVSBvdmVyaGVhZCwgc28gdGhl
eSBkb24ndCBuZWVkCisgICAgICAgIC8vIHRvIHN3YXAuCisgICAgICAgIGlmIChtVGVzdFBhcmFt
cy5lZ2xQYXJhbWV0ZXJzLmRldmljZVR5cGUgIT0gRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9U
WVBFX05VTExfQU5HTEUpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1FR0xXaW5kb3ctPnN3YXAo
KTsKKyAgICAgICAgfQorICAgICAgICBtT1NXaW5kb3ctPm1lc3NhZ2VMb29wKCk7CisgICAgfQor
fQorCit2b2lkIEFOR0xFUmVuZGVyVGVzdDo6ZmluaXNoVGVzdCgpCit7CisgICAgaWYgKG1UZXN0
UGFyYW1zLmVnbFBhcmFtZXRlcnMuZGV2aWNlVHlwZSAhPSBFR0xfUExBVEZPUk1fQU5HTEVfREVW
SUNFX1RZUEVfTlVMTF9BTkdMRSkKKyAgICB7CisgICAgICAgIGdsRmluaXNoKCk7CisgICAgfQor
fQorCitib29sIEFOR0xFUmVuZGVyVGVzdDo6cG9wRXZlbnQoRXZlbnQgKmV2ZW50KQoreworICAg
IHJldHVybiBtT1NXaW5kb3ctPnBvcEV2ZW50KGV2ZW50KTsKK30KKworT1NXaW5kb3cgKkFOR0xF
UmVuZGVyVGVzdDo6Z2V0V2luZG93KCkKK3sKKyAgICByZXR1cm4gbU9TV2luZG93OworfQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvQU5HTEVQZXJm
VGVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9w
ZXJmX3Rlc3RzL0FOR0xFUGVyZlRlc3QuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9BTkdMRVBlcmZUZXN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMDcgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gQU5HTEVQZXJmVGVzdHM6
CisvLyAgIEJhc2UgY2xhc3MgZm9yIGdvb2dsZSB0ZXN0IHBlcmZvcm1hbmNlIHRlc3RzCisvLwor
CisjaWZuZGVmIFBFUkZfVEVTVFNfQU5HTEVfUEVSRl9URVNUX0hfCisjZGVmaW5lIFBFUkZfVEVT
VFNfQU5HTEVfUEVSRl9URVNUX0hfCisKKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVj
dG9yPgorCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDxFR0wvZWdsLmg+Cisj
aW5jbHVkZSA8RUdML2VnbGV4dC5oPgorCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIK
KyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKyNpbmNsdWRlICJFR0xXaW5kb3cuaCIKKyNpbmNs
dWRlICJPU1dpbmRvdy5oIgorI2luY2x1ZGUgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9jb25maWdz
LmgiCisjaW5jbHVkZSAidGVzdF91dGlscy9hbmdsZV90ZXN0X2luc3RhbnRpYXRlLmgiCisjaW5j
bHVkZSAiVGltZXIuaCIKKworY2xhc3MgRXZlbnQ7CisKKyNpZm5kZWYgQVNTRVJUX0dMX05PX0VS
Uk9SCisjZGVmaW5lIEFTU0VSVF9HTF9OT19FUlJPUigpIEFTU0VSVF9FUShzdGF0aWNfY2FzdDxH
TGVudW0+KEdMX05PX0VSUk9SKSwgZ2xHZXRFcnJvcigpKQorI2VuZGlmCisKK2NsYXNzIEFOR0xF
UGVyZlRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwgYW5nbGU6Ok5vbkNvcHlhYmxlCit7Cisg
IHB1YmxpYzoKKyAgICBBTkdMRVBlcmZUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lLCBjb25z
dCBzdGQ6OnN0cmluZyAmc3VmZml4KTsKKyAgICB2aXJ0dWFsIH5BTkdMRVBlcmZUZXN0KCk7CisK
KyAgICB2aXJ0dWFsIHZvaWQgc3RlcCgpID0gMDsKKworICAgIC8vIENhbGxlZCByaWdodCBiZWZv
cmUgdGltZXIgaXMgc3RvcHBlZCB0byBsZXQgdGhlIHRlc3Qgd2FpdCBmb3IgYXN5bmNocm9ub3Vz
IG9wZXJhdGlvbnMuCisgICAgdmlydHVhbCB2b2lkIGZpbmlzaFRlc3QoKSB7fQorCisgIHByb3Rl
Y3RlZDoKKyAgICB2b2lkIHJ1bigpOworICAgIHZvaWQgcHJpbnRSZXN1bHQoY29uc3Qgc3RkOjpz
dHJpbmcgJnRyYWNlLCBkb3VibGUgdmFsdWUsIGNvbnN0IHN0ZDo6c3RyaW5nICZ1bml0cywgYm9v
bCBpbXBvcnRhbnQpIGNvbnN0OworICAgIHZvaWQgcHJpbnRSZXN1bHQoY29uc3Qgc3RkOjpzdHJp
bmcgJnRyYWNlLCBzaXplX3QgdmFsdWUsIGNvbnN0IHN0ZDo6c3RyaW5nICZ1bml0cywgYm9vbCBp
bXBvcnRhbnQpIGNvbnN0OworICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZTsKKyAgICB2b2lkIFRl
YXJEb3duKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBOb3JtYWxpemUgYSB0aW1lIHZhbHVlIGFjY29y
ZGluZyB0byB0aGUgbnVtYmVyIG9mIHRlc3QgbG9vcCBpdGVyYXRpb25zIChtRnJhbWVDb3VudCkK
KyAgICBkb3VibGUgbm9ybWFsaXplZFRpbWUoc2l6ZV90IHZhbHVlKSBjb25zdDsKKworICAgIC8v
IENhbGwgaWYgdGhlIHRlc3Qgc3RlcCB3YXMgYWJvcnRlZCBhbmQgdGhlIHRlc3Qgc2hvdWxkIHN0
b3AgcnVubmluZy4KKyAgICB2b2lkIGFib3J0VGVzdCgpIHsgbVJ1bm5pbmcgPSBmYWxzZTsgfQor
CisgICAgdW5zaWduZWQgaW50IGdldE51bVN0ZXBzUGVyZm9ybWVkKCkgY29uc3QgeyByZXR1cm4g
bU51bVN0ZXBzUGVyZm9ybWVkOyB9CisKKyAgICBzdGQ6OnN0cmluZyBtTmFtZTsKKyAgICBzdGQ6
OnN0cmluZyBtU3VmZml4OworICAgIFRpbWVyICptVGltZXI7CisgICAgZG91YmxlIG1SdW5UaW1l
U2Vjb25kczsKKworICBwcml2YXRlOgorICAgIHVuc2lnbmVkIGludCBtTnVtU3RlcHNQZXJmb3Jt
ZWQ7CisgICAgYm9vbCBtUnVubmluZzsKK307CisKK3N0cnVjdCBSZW5kZXJUZXN0UGFyYW1zIDog
cHVibGljIGFuZ2xlOjpQbGF0Zm9ybVBhcmFtZXRlcnMKK3sKKyAgICB2aXJ0dWFsIHN0ZDo6c3Ry
aW5nIHN1ZmZpeCgpIGNvbnN0OworCisgICAgRUdMaW50IHdpbmRvd1dpZHRoOworICAgIEVHTGlu
dCB3aW5kb3dIZWlnaHQ7Cit9OworCitjbGFzcyBBTkdMRVJlbmRlclRlc3QgOiBwdWJsaWMgQU5H
TEVQZXJmVGVzdAoreworICBwdWJsaWM6CisgICAgQU5HTEVSZW5kZXJUZXN0KGNvbnN0IHN0ZDo6
c3RyaW5nICZuYW1lLCBjb25zdCBSZW5kZXJUZXN0UGFyYW1zICZ0ZXN0UGFyYW1zKTsKKyAgICB+
QU5HTEVSZW5kZXJUZXN0KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUJlbmNobWFy
aygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95QmVuY2htYXJrKCkgeyB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgZHJhd0JlbmNobWFyaygpID0gMDsKKworICAgIGJvb2wgcG9wRXZlbnQoRXZl
bnQgKmV2ZW50KTsKKworICAgIE9TV2luZG93ICpnZXRXaW5kb3coKTsKKworICBwcm90ZWN0ZWQ6
CisgICAgY29uc3QgUmVuZGVyVGVzdFBhcmFtcyAmbVRlc3RQYXJhbXM7CisKKyAgcHJpdmF0ZToK
KyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRl
OworCisgICAgdm9pZCBzdGVwKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hUZXN0KCkgb3Zl
cnJpZGU7CisKKyAgICBFR0xXaW5kb3cgKm1FR0xXaW5kb3c7CisgICAgT1NXaW5kb3cgKm1PU1dp
bmRvdzsKK307CisKKyNlbmRpZiAvLyBQRVJGX1RFU1RTX0FOR0xFX1BFUkZfVEVTVF9IXwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvQnVmZmVyU3Vi
RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L3BlcmZfdGVzdHMvQnVmZmVyU3ViRGF0YS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvQnVmZmVyU3ViRGF0YS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw0MTggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTQg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gQnVmZmVyU3Vi
RGF0YUJlbmNobWFyazoKKy8vICAgUGVyZm9ybWFuY2UgdGVzdCBmb3IgQU5HTEUgYnVmZmVyIHVw
ZGF0ZXMuCisvLworCisjaW5jbHVkZSA8c3N0cmVhbT4KKworI2luY2x1ZGUgIkFOR0xFUGVyZlRl
c3QuaCIKKyNpbmNsdWRlICJzaGFkZXJfdXRpbHMuaCIKKwordXNpbmcgbmFtZXNwYWNlIGFuZ2xl
OworCituYW1lc3BhY2UKK3sKKworc3RydWN0IEJ1ZmZlclN1YkRhdGFQYXJhbXMgZmluYWwgOiBw
dWJsaWMgUmVuZGVyVGVzdFBhcmFtcworeworICAgIEJ1ZmZlclN1YkRhdGFQYXJhbXMoKQorICAg
IHsKKyAgICAgICAgLy8gQ29tbW9uIGRlZmF1bHQgdmFsdWVzCisgICAgICAgIG1ham9yVmVyc2lv
biA9IDI7CisgICAgICAgIG1pbm9yVmVyc2lvbiA9IDA7CisgICAgICAgIHdpbmRvd1dpZHRoID0g
NTEyOworICAgICAgICB3aW5kb3dIZWlnaHQgPSA1MTI7CisgICAgICAgIHVwZGF0ZVNpemUgPSAz
MDAwOworICAgICAgICBidWZmZXJTaXplID0gNDAwMDAwMDA7CisgICAgICAgIGl0ZXJhdGlvbnMg
ICA9IDQ7CisgICAgICAgIHVwZGF0ZVJhdGUgPSAxOworICAgIH0KKworICAgIHN0ZDo6c3RyaW5n
IHN1ZmZpeCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgR0xib29sZWFuIHZlcnRleE5vcm1hbGl6
ZWQ7CisgICAgR0xlbnVtIHZlcnRleFR5cGU7CisgICAgR0xpbnQgdmVydGV4Q29tcG9uZW50Q291
bnQ7CisgICAgdW5zaWduZWQgaW50IHVwZGF0ZVJhdGU7CisKKyAgICAvLyBzdGF0aWMgcGFyYW1l
dGVycworICAgIEdMc2l6ZWlwdHIgdXBkYXRlU2l6ZTsKKyAgICBHTHNpemVpcHRyIGJ1ZmZlclNp
emU7CisgICAgdW5zaWduZWQgaW50IGl0ZXJhdGlvbnM7Cit9OworCitzdGQ6Om9zdHJlYW0gJm9w
ZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZvcywgY29uc3QgQnVmZmVyU3ViRGF0YVBhcmFtcyAmcGFy
YW1zKQoreworICAgIG9zIDw8IHBhcmFtcy5zdWZmaXgoKS5zdWJzdHIoMSk7CisgICAgcmV0dXJu
IG9zOworfQorCitjbGFzcyBCdWZmZXJTdWJEYXRhQmVuY2htYXJrIDogcHVibGljIEFOR0xFUmVu
ZGVyVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgOjp0ZXN0aW5n
OjpXaXRoUGFyYW1JbnRlcmZhY2U8QnVmZmVyU3ViRGF0YVBhcmFtcz4KK3sKKyAgcHVibGljOgor
ICAgIEJ1ZmZlclN1YkRhdGFCZW5jaG1hcmsoKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUJlbmNo
bWFyaygpIG92ZXJyaWRlOworICAgIHZvaWQgZGVzdHJveUJlbmNobWFyaygpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZHJhd0JlbmNobWFyaygpIG92ZXJyaWRlOworCisgIHByaXZhdGU6CisgICAgR0x1
aW50IG1Qcm9ncmFtOworICAgIEdMdWludCBtQnVmZmVyOworICAgIHVpbnQ4X3QgKm1VcGRhdGVE
YXRhOworICAgIGludCBtTnVtVHJpczsKK307CisKK0dMZmxvYXQgKkdldEZsb2F0RGF0YShHTGlu
dCBjb21wb25lbnRDb3VudCkKK3sKKyAgICBzdGF0aWMgR0xmbG9hdCB2ZXJ0aWNlczJbXSA9Cisg
ICAgeworICAgICAgICAxLCAyLAorICAgICAgICAwLCAwLAorICAgICAgICAyLCAwLAorICAgIH07
CisKKyAgICBzdGF0aWMgR0xmbG9hdCB2ZXJ0aWNlczNbXSA9CisgICAgeworICAgICAgICAxLCAy
LCAxLAorICAgICAgICAwLCAwLCAxLAorICAgICAgICAyLCAwLCAxLAorICAgIH07CisKKyAgICBz
dGF0aWMgR0xmbG9hdCB2ZXJ0aWNlczRbXSA9CisgICAgeworICAgICAgICAxLCAyLCAxLCAzLAor
ICAgICAgICAwLCAwLCAxLCAzLAorICAgICAgICAyLCAwLCAxLCAzLAorICAgIH07CisKKyAgICBz
d2l0Y2ggKGNvbXBvbmVudENvdW50KQorICAgIHsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAg
ICAgcmV0dXJuIHZlcnRpY2VzMjsKKyAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgcmV0dXJu
IHZlcnRpY2VzMzsKKyAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgcmV0dXJuIHZlcnRpY2Vz
NDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
K30KKwordGVtcGxhdGUgPGNsYXNzIFQ+CitHTHNpemVpcHRyIEdldE5vcm1hbGl6ZWREYXRhKEdM
c2l6ZWlwdHIgbnVtRWxlbWVudHMsIEdMZmxvYXQgKmZsb2F0RGF0YSwgc3RkOjp2ZWN0b3I8dWlu
dDhfdD4gKmRhdGEpCit7CisgICAgR0xzaXplaXB0ciB0cmlEYXRhU2l6ZSA9IHNpemVvZihUKSAq
IG51bUVsZW1lbnRzOworICAgIGRhdGEtPnJlc2l6ZSh0cmlEYXRhU2l6ZSk7CisKKyAgICBUICpk
ZXN0UHRyID0gcmVpbnRlcnByZXRfY2FzdDxUKj4oZGF0YS0+ZGF0YSgpKTsKKworICAgIGZvciAo
R0xzaXplaXB0ciBkYXRhSW5kZXggPSAwOyBkYXRhSW5kZXggPCBudW1FbGVtZW50czsgZGF0YUlu
ZGV4KyspCisgICAgeworICAgICAgICBHTGZsb2F0IHNjYWxlZCA9IGZsb2F0RGF0YVtkYXRhSW5k
ZXhdICogMC4yNWY7CisgICAgICAgIGRlc3RQdHJbZGF0YUluZGV4XSA9IHN0YXRpY19jYXN0PFQ+
KHNjYWxlZCAqIHN0YXRpY19jYXN0PEdMZmxvYXQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1h
eCgpKSk7CisgICAgfQorCisgICAgcmV0dXJuIHRyaURhdGFTaXplOworfQorCit0ZW1wbGF0ZSA8
Y2xhc3MgVD4KK0dMc2l6ZWlwdHIgR2V0SW50RGF0YShHTHNpemVpcHRyIG51bUVsZW1lbnRzLCBH
TGZsb2F0ICpmbG9hdERhdGEsIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+ICpkYXRhKQoreworICAgIEdM
c2l6ZWlwdHIgdHJpRGF0YVNpemUgPSBzaXplb2YoVCkgKiBudW1FbGVtZW50czsKKyAgICBkYXRh
LT5yZXNpemUodHJpRGF0YVNpemUpOworCisgICAgVCAqZGVzdFB0ciA9IHJlaW50ZXJwcmV0X2Nh
c3Q8VCo+KGRhdGEtPmRhdGEoKSk7CisKKyAgICBmb3IgKEdMc2l6ZWlwdHIgZGF0YUluZGV4ID0g
MDsgZGF0YUluZGV4IDwgbnVtRWxlbWVudHM7IGRhdGFJbmRleCsrKQorICAgIHsKKyAgICAgICAg
ZGVzdFB0cltkYXRhSW5kZXhdID0gc3RhdGljX2Nhc3Q8VD4oZmxvYXREYXRhW2RhdGFJbmRleF0p
OworICAgIH0KKworICAgIHJldHVybiB0cmlEYXRhU2l6ZTsKK30KKworR0xzaXplaXB0ciBHZXRW
ZXJ0ZXhEYXRhKEdMZW51bSB0eXBlLCBHTGludCBjb21wb25lbnRDb3VudCwgR0xib29sZWFuIG5v
cm1hbGl6ZWQsIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+ICpkYXRhKQoreworICAgIEdMc2l6ZWlwdHIg
dHJpRGF0YVNpemUgPSAwOworICAgIEdMZmxvYXQgKmZsb2F0RGF0YSA9IEdldEZsb2F0RGF0YShj
b21wb25lbnRDb3VudCk7CisKKyAgICBpZiAodHlwZSA9PSBHTF9GTE9BVCkKKyAgICB7CisgICAg
ICAgIHRyaURhdGFTaXplID0gc2l6ZW9mKEdMZmxvYXQpICogY29tcG9uZW50Q291bnQgKiAzOwor
ICAgICAgICBkYXRhLT5yZXNpemUodHJpRGF0YVNpemUpOworICAgICAgICBtZW1jcHkoZGF0YS0+
ZGF0YSgpLCBmbG9hdERhdGEsIHRyaURhdGFTaXplKTsKKyAgICB9CisgICAgZWxzZSBpZiAobm9y
bWFsaXplZCA9PSBHTF9UUlVFKQorICAgIHsKKyAgICAgICAgR0xzaXplaXB0ciBudW1FbGVtZW50
cyA9IGNvbXBvbmVudENvdW50ICogMzsKKworICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGNhc2UgR0xfQllURToKKyAgICAgICAgICAgICAgICB0cmlEYXRhU2l6
ZSA9IEdldE5vcm1hbGl6ZWREYXRhPEdMYnl0ZT4obnVtRWxlbWVudHMsIGZsb2F0RGF0YSwgZGF0
YSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdMX1NIT1JUOgor
ICAgICAgICAgICAgICAgIHRyaURhdGFTaXplID0gR2V0Tm9ybWFsaXplZERhdGE8R0xzaG9ydD4o
bnVtRWxlbWVudHMsIGZsb2F0RGF0YSwgZGF0YSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIEdMX0lOVDoKKyAgICAgICAgICAgICAgICB0cmlEYXRhU2l6ZSA9IEdl
dE5vcm1hbGl6ZWREYXRhPEdMaW50PihudW1FbGVtZW50cywgZmxvYXREYXRhLCBkYXRhKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToK
KyAgICAgICAgICAgICAgICB0cmlEYXRhU2l6ZSA9IEdldE5vcm1hbGl6ZWREYXRhPEdMdWJ5dGU+
KG51bUVsZW1lbnRzLCBmbG9hdERhdGEsIGRhdGEpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAgICAgICAgICAgICAgICB0cmlE
YXRhU2l6ZSA9IEdldE5vcm1hbGl6ZWREYXRhPEdMdXNob3J0PihudW1FbGVtZW50cywgZmxvYXRE
YXRhLCBkYXRhKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgR0xf
VU5TSUdORURfSU5UOgorICAgICAgICAgICAgICAgIHRyaURhdGFTaXplID0gR2V0Tm9ybWFsaXpl
ZERhdGE8R0x1aW50PihudW1FbGVtZW50cywgZmxvYXREYXRhLCBkYXRhKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYXNzZXJ0
KDApOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIEdMc2l6ZWlw
dHIgbnVtRWxlbWVudHMgPSBjb21wb25lbnRDb3VudCAqIDM7CisKKyAgICAgICAgc3dpdGNoICh0
eXBlKQorICAgICAgICB7CisgICAgICAgICAgICBjYXNlIEdMX0JZVEU6CisgICAgICAgICAgICAg
ICAgdHJpRGF0YVNpemUgPSBHZXRJbnREYXRhPEdMYnl0ZT4obnVtRWxlbWVudHMsIGZsb2F0RGF0
YSwgZGF0YSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdMX1NI
T1JUOgorICAgICAgICAgICAgICAgIHRyaURhdGFTaXplID0gR2V0SW50RGF0YTxHTHNob3J0Pihu
dW1FbGVtZW50cywgZmxvYXREYXRhLCBkYXRhKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgR0xfSU5UOgorICAgICAgICAgICAgICAgIHRyaURhdGFTaXplID0gR2V0
SW50RGF0YTxHTGludD4obnVtRWxlbWVudHMsIGZsb2F0RGF0YSwgZGF0YSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAg
ICAgICAgICAgdHJpRGF0YVNpemUgPSBHZXRJbnREYXRhPEdMdWJ5dGU+KG51bUVsZW1lbnRzLCBm
bG9hdERhdGEsIGRhdGEpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAgICAgICAgICAgICAgICB0cmlEYXRhU2l6ZSA9IEdldElu
dERhdGE8R0x1c2hvcnQ+KG51bUVsZW1lbnRzLCBmbG9hdERhdGEsIGRhdGEpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6CisgICAgICAg
ICAgICAgICAgdHJpRGF0YVNpemUgPSBHZXRJbnREYXRhPEdMdWludD4obnVtRWxlbWVudHMsIGZs
b2F0RGF0YSwgZGF0YSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgIGFzc2VydCgwKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHJldHVybiB0cmlEYXRhU2l6ZTsKK30KKworc3RkOjpzdHJpbmcgQnVmZmVyU3ViRGF0YVBhcmFt
czo6c3VmZml4KCkgY29uc3QKK3sKKyAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzdHJzdHI7CisKKyAg
ICBzdHJzdHIgPDwgUmVuZGVyVGVzdFBhcmFtczo6c3VmZml4KCk7CisKKyAgICBpZiAodmVydGV4
Tm9ybWFsaXplZCkKKyAgICB7CisgICAgICAgIHN0cnN0ciA8PCAiX25vcm0iOworICAgIH0KKwor
ICAgIHN3aXRjaCAodmVydGV4VHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfRkxPQVQ6Cisg
ICAgICAgICAgICBzdHJzdHIgPDwgIl9mbG9hdCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBHTF9JTlQ6CisgICAgICAgICAgICBzdHJzdHIgPDwgIl9pbnQiOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfQllURToKKyAgICAgICAgICAgIHN0cnN0ciA8PCAi
X2J5dGUiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfU0hPUlQ6CisgICAg
ICAgICAgICBzdHJzdHIgPDwgIl9zaG9ydCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBHTF9VTlNJR05FRF9JTlQ6CisgICAgICAgICAgICBzdHJzdHIgPDwgIl91aW50IjsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAg
ICAgICBzdHJzdHIgPDwgIl91Ynl0ZSI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAgICAgICAgICAgIHN0cnN0ciA8PCAiX3VzaG9ydCI7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHN0cnN0ciA8
PCAiX3Z1bmtfIiA8PCB2ZXJ0ZXhUeXBlIDw8ICJfIjsKKyAgICAgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIHN0cnN0ciA8PCB2ZXJ0ZXhDb21wb25lbnRDb3VudDsKKyAgICBzdHJzdHIgPDwg
Il9ldmVyeSIgPDwgdXBkYXRlUmF0ZTsKKworICAgIHJldHVybiBzdHJzdHIuc3RyKCk7Cit9CisK
K0J1ZmZlclN1YkRhdGFCZW5jaG1hcms6OkJ1ZmZlclN1YkRhdGFCZW5jaG1hcmsoKQorICAgIDog
QU5HTEVSZW5kZXJUZXN0KCJCdWZmZXJTdWJEYXRhIiwgR2V0UGFyYW0oKSksCisgICAgICBtUHJv
Z3JhbSgwKSwKKyAgICAgIG1CdWZmZXIoMCksCisgICAgICBtVXBkYXRlRGF0YShudWxscHRyKSwK
KyAgICAgIG1OdW1UcmlzKDApCit7Cit9CisKK3ZvaWQgQnVmZmVyU3ViRGF0YUJlbmNobWFyazo6
aW5pdGlhbGl6ZUJlbmNobWFyaygpCit7CisgICAgY29uc3QgYXV0byAmcGFyYW1zID0gR2V0UGFy
YW0oKTsKKworICAgIEFTU0VSVF9MVCgxLCBwYXJhbXMudmVydGV4Q29tcG9uZW50Q291bnQpOwor
ICAgIEFTU0VSVF9MVCgwdSwgcGFyYW1zLml0ZXJhdGlvbnMpOworCisgICAgY29uc3Qgc3RkOjpz
dHJpbmcgdnMgPSBTSEFERVJfU09VUkNFCisgICAgKAorICAgICAgICBhdHRyaWJ1dGUgdmVjMiB2
UG9zaXRpb247CisgICAgICAgIHVuaWZvcm0gZmxvYXQgdVNjYWxlOworICAgICAgICB1bmlmb3Jt
IGZsb2F0IHVPZmZzZXQ7CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGdsX1Bvc2l0aW9uID0gdmVjNCh2UG9zaXRpb24gKiB2ZWMyKHVTY2FsZSkgLSB2ZWMyKHVP
ZmZzZXQpLCAwLCAxKTsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyBmcyA9IFNIQURFUl9TT1VSQ0UKKyAgICAoCisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICBnbF9GcmFn
Q29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgICAgIH0KKyAgICApOworCisg
ICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2cywgZnMpOworICAgIEFTU0VSVF9ORSgwdSwg
bVByb2dyYW0pOworCisgICAgLy8gVXNlIHRoZSBwcm9ncmFtIG9iamVjdAorICAgIGdsVXNlUHJv
Z3JhbShtUHJvZ3JhbSk7CisKKyAgICBnbENsZWFyQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgMC4w
Zik7CisKKworICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IHplcm9EYXRhKHBhcmFtcy5idWZmZXJT
aXplKTsKKyAgICBtZW1zZXQoJnplcm9EYXRhWzBdLCAwLCB6ZXJvRGF0YS5zaXplKCkpOworCisg
ICAgZ2xHZW5CdWZmZXJzKDEsICZtQnVmZmVyKTsKKyAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlf
QlVGRkVSLCBtQnVmZmVyKTsKKyAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBwYXJh
bXMuYnVmZmVyU2l6ZSwgJnplcm9EYXRhWzBdLCBHTF9EWU5BTUlDX0RSQVcpOworCisgICAgZ2xW
ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIHBhcmFtcy52ZXJ0ZXhDb21wb25lbnRDb3VudCwgcGFyYW1z
LnZlcnRleFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy52ZXJ0ZXhOb3Jt
YWxpemVkLCAwLCAwKTsKKyAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOworCisgICAg
aWYgKHBhcmFtcy51cGRhdGVTaXplID4gMCkKKyAgICB7CisgICAgICAgIG1VcGRhdGVEYXRhID0g
bmV3IHVpbnQ4X3RbcGFyYW1zLnVwZGF0ZVNpemVdOworICAgIH0KKworICAgIHN0ZDo6dmVjdG9y
PHVpbnQ4X3Q+IGRhdGE7CisgICAgR0xzaXplaSB0cmlEYXRhU2l6ZSA9IHN0YXRpY19jYXN0PEdM
c2l6ZWk+KEdldFZlcnRleERhdGEocGFyYW1zLnZlcnRleFR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnZlcnRl
eENvbXBvbmVudENvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy52ZXJ0ZXhOb3JtYWxpemVkLCAmZGF0YSkpOwor
CisgICAgbU51bVRyaXMgPSBzdGF0aWNfY2FzdDxpbnQ+KHBhcmFtcy51cGRhdGVTaXplIC8gdHJp
RGF0YVNpemUpOworICAgIGZvciAoaW50IGkgPSAwLCBvZmZzZXQgPSAwOyBpIDwgbU51bVRyaXM7
ICsraSkKKyAgICB7CisgICAgICAgIG1lbWNweShtVXBkYXRlRGF0YSArIG9mZnNldCwgJmRhdGFb
MF0sIHRyaURhdGFTaXplKTsKKyAgICAgICAgb2Zmc2V0ICs9IHRyaURhdGFTaXplOworICAgIH0K
KworICAgIGlmIChwYXJhbXMudXBkYXRlU2l6ZSA9PSAwKQorICAgIHsKKyAgICAgICAgbU51bVRy
aXMgPSAxOworICAgICAgICBnbEJ1ZmZlclN1YkRhdGEoR0xfQVJSQVlfQlVGRkVSLCAwLCBkYXRh
LnNpemUoKSwgJmRhdGFbMF0pOworICAgIH0KKworICAgIC8vIFNldCB0aGUgdmlld3BvcnQKKyAg
ICBnbFZpZXdwb3J0KDAsIDAsIGdldFdpbmRvdygpLT5nZXRXaWR0aCgpLCBnZXRXaW5kb3coKS0+
Z2V0SGVpZ2h0KCkpOworCisgICAgR0xmbG9hdCBzY2FsZSA9IDAuNWY7CisgICAgR0xmbG9hdCBv
ZmZzZXQgPSAwLjVmOworCisgICAgaWYgKHBhcmFtcy52ZXJ0ZXhOb3JtYWxpemVkID09IEdMX1RS
VUUpCisgICAgeworICAgICAgICBzY2FsZSA9IDIuMGY7CisgICAgICAgIG9mZnNldCA9IDAuNWY7
CisgICAgfQorCisgICAgZ2xVbmlmb3JtMWYoZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0s
ICJ1U2NhbGUiKSwgc2NhbGUpOworICAgIGdsVW5pZm9ybTFmKGdsR2V0VW5pZm9ybUxvY2F0aW9u
KG1Qcm9ncmFtLCAidU9mZnNldCIpLCBvZmZzZXQpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7Cit9CisKK3ZvaWQgQnVmZmVyU3ViRGF0YUJlbmNobWFyazo6ZGVzdHJveUJlbmNobWFyaygp
Cit7CisgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICBnbERlbGV0ZUJ1ZmZlcnMo
MSwgJm1CdWZmZXIpOworICAgIFNhZmVEZWxldGVBcnJheShtVXBkYXRlRGF0YSk7Cit9CisKK3Zv
aWQgQnVmZmVyU3ViRGF0YUJlbmNobWFyazo6ZHJhd0JlbmNobWFyaygpCit7CisgICAgZ2xDbGVh
cihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAgIGNvbnN0IGF1dG8gJnBhcmFtcyA9IEdldFBh
cmFtKCk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpdCA9IDA7IGl0IDwgcGFyYW1zLml0ZXJh
dGlvbnM7IGl0KyspCisgICAgeworICAgICAgICBpZiAocGFyYW1zLnVwZGF0ZVNpemUgPiAwICYm
ICgoZ2V0TnVtU3RlcHNQZXJmb3JtZWQoKSAlIHBhcmFtcy51cGRhdGVSYXRlKSA9PSAwKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgZ2xCdWZmZXJTdWJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgMCwg
cGFyYW1zLnVwZGF0ZVNpemUsIG1VcGRhdGVEYXRhKTsKKyAgICAgICAgfQorCisgICAgICAgIGds
RHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDMgKiBtTnVtVHJpcyk7CisgICAgfQorCisgICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9CisKK0J1ZmZlclN1YkRhdGFQYXJhbXMgQnVmZmVyVXBk
YXRlRDNEMTFQYXJhbXMoKQoreworICAgIEJ1ZmZlclN1YkRhdGFQYXJhbXMgcGFyYW1zOworICAg
IHBhcmFtcy5lZ2xQYXJhbWV0ZXJzID0gZWdsX3BsYXRmb3JtOjpEM0QxMSgpOworICAgIHBhcmFt
cy52ZXJ0ZXhUeXBlID0gR0xfRkxPQVQ7CisgICAgcGFyYW1zLnZlcnRleENvbXBvbmVudENvdW50
ID0gNDsKKyAgICBwYXJhbXMudmVydGV4Tm9ybWFsaXplZCA9IEdMX0ZBTFNFOworICAgIHJldHVy
biBwYXJhbXM7Cit9CisKK0J1ZmZlclN1YkRhdGFQYXJhbXMgQnVmZmVyVXBkYXRlRDNEOVBhcmFt
cygpCit7CisgICAgQnVmZmVyU3ViRGF0YVBhcmFtcyBwYXJhbXM7CisgICAgcGFyYW1zLmVnbFBh
cmFtZXRlcnMgPSBlZ2xfcGxhdGZvcm06OkQzRDkoKTsKKyAgICBwYXJhbXMudmVydGV4VHlwZSA9
IEdMX0ZMT0FUOworICAgIHBhcmFtcy52ZXJ0ZXhDb21wb25lbnRDb3VudCA9IDQ7CisgICAgcGFy
YW1zLnZlcnRleE5vcm1hbGl6ZWQgPSBHTF9GQUxTRTsKKyAgICByZXR1cm4gcGFyYW1zOworfQor
CitCdWZmZXJTdWJEYXRhUGFyYW1zIEJ1ZmZlclVwZGF0ZU9wZW5HTFBhcmFtcygpCit7CisgICAg
QnVmZmVyU3ViRGF0YVBhcmFtcyBwYXJhbXM7CisgICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBl
Z2xfcGxhdGZvcm06Ok9QRU5HTCgpOworICAgIHBhcmFtcy52ZXJ0ZXhUeXBlID0gR0xfRkxPQVQ7
CisgICAgcGFyYW1zLnZlcnRleENvbXBvbmVudENvdW50ID0gNDsKKyAgICBwYXJhbXMudmVydGV4
Tm9ybWFsaXplZCA9IEdMX0ZBTFNFOworICAgIHJldHVybiBwYXJhbXM7Cit9CisKK1RFU1RfUChC
dWZmZXJTdWJEYXRhQmVuY2htYXJrLCBSdW4pCit7CisgICAgcnVuKCk7Cit9CisKK0FOR0xFX0lO
U1RBTlRJQVRFX1RFU1QoQnVmZmVyU3ViRGF0YUJlbmNobWFyaywKKyAgICAgICAgICAgICAgICAg
ICAgICAgQnVmZmVyVXBkYXRlRDNEMTFQYXJhbXMoKSwgQnVmZmVyVXBkYXRlRDNEOVBhcmFtcygp
LAorICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJVcGRhdGVPcGVuR0xQYXJhbXMoKSk7CisK
K30gLy8gbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
cGVyZl90ZXN0cy9EcmF3Q2FsbFBlcmYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0RyYXdDYWxsUGVyZi5jcHAJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvRHJh
d0NhbGxQZXJmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI1NiBAQAorLy8KKy8vIENv
cHlyaWdodCAoYykgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisvLyBEcmF3Q2FsbFBlcmY6CisvLyAgIFBlcmZvcm1hbmNlIHRlc3RzIGZvciBBTkdMRSBk
cmF3IGNhbGwgb3ZlcmhlYWQuCisvLworCisjaW5jbHVkZSA8c3N0cmVhbT4KKworI2luY2x1ZGUg
IkFOR0xFUGVyZlRlc3QuaCIKKyNpbmNsdWRlICJzaGFkZXJfdXRpbHMuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIGFuZ2xlOworCituYW1lc3BhY2UKK3sKKworc3RydWN0IERyYXdDYWxsUGVyZlBhcmFt
cyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJUZXN0UGFyYW1zCit7CisgICAgLy8gQ29tbW9uIGRlZmF1
bHQgb3B0aW9ucworICAgIERyYXdDYWxsUGVyZlBhcmFtcygpCisgICAgeworICAgICAgICBtYWpv
clZlcnNpb24gPSAyOworICAgICAgICBtaW5vclZlcnNpb24gPSAwOworICAgICAgICB3aW5kb3dX
aWR0aCA9IDI1NjsKKyAgICAgICAgd2luZG93SGVpZ2h0ID0gMjU2OworICAgIH0KKworICAgIHN0
ZDo6c3RyaW5nIHN1ZmZpeCgpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBzdGQ6OnN0
cmluZ3N0cmVhbSBzdHJzdHI7CisKKyAgICAgICAgc3Ryc3RyIDw8IFJlbmRlclRlc3RQYXJhbXM6
OnN1ZmZpeCgpOworCisgICAgICAgIGlmIChudW1UcmlzID09IDApCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0cnN0ciA8PCAiX3ZhbGlkYXRpb25fb25seSI7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAodXNlRkJPKQorICAgICAgICB7CisgICAgICAgICAgICBzdHJzdHIgPDwgIl9yZW5kZXJf
dG9fdGV4dHVyZSI7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZWdsUGFyYW1ldGVycy5kZXZp
Y2VUeXBlID09IEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9OVUxMX0FOR0xFKQorICAg
ICAgICB7CisgICAgICAgICAgICBzdHJzdHIgPDwgIl9udWxsIjsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiBzdHJzdHIuc3RyKCk7CisgICAgfQorCisgICAgdW5zaWduZWQgaW50IGl0ZXJh
dGlvbnMgPSA1MDsKKyAgICBkb3VibGUgcnVuVGltZVNlY29uZHMgICA9IDEwLjA7CisgICAgaW50
IG51bVRyaXMgICAgICAgICAgICAgPSAxOworICAgIGJvb2wgdXNlRkJPICAgICAgICAgICAgID0g
ZmFsc2U7Cit9OworCitzdGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZvcywg
Y29uc3QgRHJhd0NhbGxQZXJmUGFyYW1zICZwYXJhbXMpCit7CisgICAgb3MgPDwgcGFyYW1zLnN1
ZmZpeCgpLnN1YnN0cigxKTsKKyAgICByZXR1cm4gb3M7Cit9CisKK2NsYXNzIERyYXdDYWxsUGVy
ZkJlbmNobWFyayA6IHB1YmxpYyBBTkdMRVJlbmRlclRlc3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdWJsaWMgOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8RHJhd0NhbGxQ
ZXJmUGFyYW1zPgoreworICBwdWJsaWM6CisgICAgRHJhd0NhbGxQZXJmQmVuY2htYXJrKCk7CisK
KyAgICB2b2lkIGluaXRpYWxpemVCZW5jaG1hcmsoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlc3Ry
b3lCZW5jaG1hcmsoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdCZW5jaG1hcmsoKSBvdmVycmlk
ZTsKKworICBwcml2YXRlOgorICAgIEdMdWludCBtUHJvZ3JhbSA9IDA7CisgICAgR0x1aW50IG1C
dWZmZXIgID0gMDsKKyAgICBHTHVpbnQgbUZCTyAgICAgPSAwOworICAgIEdMdWludCBtVGV4dHVy
ZSA9IDA7CisgICAgaW50IG1OdW1UcmlzICAgID0gR2V0UGFyYW0oKS5udW1UcmlzOworfTsKKwor
RHJhd0NhbGxQZXJmQmVuY2htYXJrOjpEcmF3Q2FsbFBlcmZCZW5jaG1hcmsoKSA6IEFOR0xFUmVu
ZGVyVGVzdCgiRHJhd0NhbGxQZXJmIiwgR2V0UGFyYW0oKSkKK3sKKyAgICBtUnVuVGltZVNlY29u
ZHMgPSBHZXRQYXJhbSgpLnJ1blRpbWVTZWNvbmRzOworfQorCit2b2lkIERyYXdDYWxsUGVyZkJl
bmNobWFyazo6aW5pdGlhbGl6ZUJlbmNobWFyaygpCit7CisgICAgY29uc3QgYXV0byAmcGFyYW1z
ID0gR2V0UGFyYW0oKTsKKworICAgIEFTU0VSVF9MVCgwdSwgcGFyYW1zLml0ZXJhdGlvbnMpOwor
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgdnMgPSBTSEFERVJfU09VUkNFCisgICAgKAorICAgICAg
ICBhdHRyaWJ1dGUgdmVjMiB2UG9zaXRpb247CisgICAgICAgIHVuaWZvcm0gZmxvYXQgdVNjYWxl
OworICAgICAgICB1bmlmb3JtIGZsb2F0IHVPZmZzZXQ7CisgICAgICAgIHZvaWQgbWFpbigpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNCh2UG9zaXRpb24gKiB2ZWMy
KHVTY2FsZSkgLSB2ZWMyKHVPZmZzZXQpLCAwLCAxKTsKKyAgICAgICAgfQorICAgICk7CisKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyBmcyA9IFNIQURFUl9TT1VSQ0UKKyAgICAoCisgICAgICAgIHBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7Cisg
ICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAg
ICAgIH0KKyAgICApOworCisgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2cywgZnMpOwor
ICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOworCisgICAgLy8gVXNlIHRoZSBwcm9ncmFtIG9i
amVjdAorICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisKKyAgICBnbENsZWFyQ29sb3IoMC4w
ZiwgMC4wZiwgMC4wZiwgMC4wZik7CisKKyAgICBzdGQ6OnZlY3RvcjxHTGZsb2F0PiBmbG9hdERh
dGE7CisKKyAgICBmb3IgKGludCBxdWFkSW5kZXggPSAwOyBxdWFkSW5kZXggPCBtTnVtVHJpczsg
KytxdWFkSW5kZXgpCisgICAgeworICAgICAgICBmbG9hdERhdGEucHVzaF9iYWNrKDEpOworICAg
ICAgICBmbG9hdERhdGEucHVzaF9iYWNrKDIpOworICAgICAgICBmbG9hdERhdGEucHVzaF9iYWNr
KDApOworICAgICAgICBmbG9hdERhdGEucHVzaF9iYWNrKDApOworICAgICAgICBmbG9hdERhdGEu
cHVzaF9iYWNrKDIpOworICAgICAgICBmbG9hdERhdGEucHVzaF9iYWNrKDApOworICAgIH0KKwor
ICAgIGdsR2VuQnVmZmVycygxLCAmbUJ1ZmZlcik7CisgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZ
X0JVRkZFUiwgbUJ1ZmZlcik7CisKKyAgICAvLyBUbyBhdm9pZCBnZW5lcmF0aW5nIEdMIGVycm9y
cyB3aGVuIHRlc3RpbmcgdmFsaWRhdGlvbi1vbmx5CisgICAgaWYgKGZsb2F0RGF0YS5lbXB0eSgp
KQorICAgIHsKKyAgICAgICAgZmxvYXREYXRhLnB1c2hfYmFjaygwLjBmKTsKKyAgICB9CisKKyAg
ICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBmbG9hdERhdGEuc2l6ZSgpICogc2l6ZW9m
KEdMZmxvYXQpLCAmZmxvYXREYXRhWzBdLCBHTF9TVEFUSUNfRFJBVyk7CisKKyAgICBnbFZlcnRl
eEF0dHJpYlBvaW50ZXIoMCwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCAwKTsKKyAgICBnbEVu
YWJsZVZlcnRleEF0dHJpYkFycmF5KDApOworCisgICAgLy8gU2V0IHRoZSB2aWV3cG9ydAorICAg
IGdsVmlld3BvcnQoMCwgMCwgZ2V0V2luZG93KCktPmdldFdpZHRoKCksIGdldFdpbmRvdygpLT5n
ZXRIZWlnaHQoKSk7CisKKyAgICBHTGZsb2F0IHNjYWxlID0gMC41ZjsKKyAgICBHTGZsb2F0IG9m
ZnNldCA9IDAuNWY7CisKKyAgICBnbFVuaWZvcm0xZihnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJv
Z3JhbSwgInVTY2FsZSIpLCBzY2FsZSk7CisgICAgZ2xVbmlmb3JtMWYoZ2xHZXRVbmlmb3JtTG9j
YXRpb24obVByb2dyYW0sICJ1T2Zmc2V0IiksIG9mZnNldCk7CisKKyAgICBpZiAocGFyYW1zLnVz
ZUZCTykKKyAgICB7CisgICAgICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZtRkJPKTsKKyAgICAg
ICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GQk8pOworICAgICAgICBnbEdl
blRleHR1cmVzKDEsICZtVGV4dHVyZSk7CisgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVS
RV8yRCwgbVRleHR1cmUpOworICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwg
R0xfUkdCQSwgZ2V0V2luZG93KCktPmdldFdpZHRoKCksIGdldFdpbmRvdygpLT5nZXRIZWlnaHQo
KSwKKyAgICAgICAgICAgICAgICAgICAgIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51
bGxwdHIpOworICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBH
TF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUsIDApOworICAgIH0K
KworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworfQorCit2b2lkIERyYXdDYWxsUGVyZkJlbmNo
bWFyazo6ZGVzdHJveUJlbmNobWFyaygpCit7CisgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFt
KTsKKyAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1CdWZmZXIpOworICAgIGdsRGVsZXRlVGV4dHVy
ZXMoMSwgJm1UZXh0dXJlKTsKKyAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbUZCTyk7Cit9
CisKK3ZvaWQgRHJhd0NhbGxQZXJmQmVuY2htYXJrOjpkcmF3QmVuY2htYXJrKCkKK3sKKyAgICAv
LyBUaGlzIHdvcmthcm91bmQgZml4ZXMgYSBodWdlIHF1ZXVlIG9mIGdyYXBoaWNzIGNvbW1hbmRz
IGFjY3VtdWxhdGluZyBvbiB0aGUgR0wKKyAgICAvLyBiYWNrLWVuZC4gVGhlIEdMIGJhY2stZW5k
IGRvZXNuJ3QgaGF2ZSBhIHByb3BlciBOVUxMIGRldmljZSBhdCB0aGUgbW9tZW50LgorICAgIC8v
IFRPRE8oam1hZGlsbCk6IFJlbW92ZSB0aGlzIHdoZW4vaWYgd2UgZXZlciBnZXQgYSBwcm9wZXIg
T3BlbkdMIE5VTEwgZGV2aWNlLgorICAgIGNvbnN0IGF1dG8gJmVnbFBhcmFtcyA9IEdldFBhcmFt
KCkuZWdsUGFyYW1ldGVyczsKKyAgICBpZiAoZWdsUGFyYW1zLmRldmljZVR5cGUgIT0gRUdMX1BM
QVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX05VTExfQU5HTEUgfHwKKyAgICAgICAgKGVnbFBhcmFt
cy5yZW5kZXJlciAhPSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUgJiYKKyAg
ICAgICAgIGVnbFBhcmFtcy5yZW5kZXJlciAhPSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVO
R0xFU19BTkdMRSkpCisgICAgeworICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQp
OworICAgIH0KKworICAgIGNvbnN0IGF1dG8gJnBhcmFtcyA9IEdldFBhcmFtKCk7CisKKyAgICBm
b3IgKHVuc2lnbmVkIGludCBpdCA9IDA7IGl0IDwgcGFyYW1zLml0ZXJhdGlvbnM7IGl0KyspCisg
ICAgeworICAgICAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVTLCAwLCBzdGF0aWNfY2FzdDxH
THNpemVpPigzICogbU51bVRyaXMpKTsKKyAgICB9CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1Io
KTsKK30KKwordXNpbmcgbmFtZXNwYWNlIGVnbF9wbGF0Zm9ybTsKKworRHJhd0NhbGxQZXJmUGFy
YW1zIERyYXdDYWxsUGVyZkQzRDExUGFyYW1zKGJvb2wgdXNlTnVsbERldmljZSwgYm9vbCByZW5k
ZXJUb1RleHR1cmUpCit7CisgICAgRHJhd0NhbGxQZXJmUGFyYW1zIHBhcmFtczsKKyAgICBwYXJh
bXMuZWdsUGFyYW1ldGVycyA9IHVzZU51bGxEZXZpY2UgPyBEM0QxMV9OVUxMKCkgOiBEM0QxMSgp
OworICAgIHBhcmFtcy51c2VGQk8gICAgICAgID0gcmVuZGVyVG9UZXh0dXJlOworICAgIHJldHVy
biBwYXJhbXM7Cit9CisKK0RyYXdDYWxsUGVyZlBhcmFtcyBEcmF3Q2FsbFBlcmZEM0Q5UGFyYW1z
KGJvb2wgdXNlTnVsbERldmljZSwgYm9vbCByZW5kZXJUb1RleHR1cmUpCit7CisgICAgRHJhd0Nh
bGxQZXJmUGFyYW1zIHBhcmFtczsKKyAgICBwYXJhbXMuZWdsUGFyYW1ldGVycyA9IHVzZU51bGxE
ZXZpY2UgPyBEM0Q5X05VTEwoKSA6IEQzRDkoKTsKKyAgICBwYXJhbXMudXNlRkJPICAgICAgICA9
IHJlbmRlclRvVGV4dHVyZTsKKyAgICByZXR1cm4gcGFyYW1zOworfQorCitEcmF3Q2FsbFBlcmZQ
YXJhbXMgRHJhd0NhbGxQZXJmT3BlbkdMUGFyYW1zKGJvb2wgdXNlTnVsbERldmljZSwgYm9vbCBy
ZW5kZXJUb1RleHR1cmUpCit7CisgICAgRHJhd0NhbGxQZXJmUGFyYW1zIHBhcmFtczsKKyAgICBw
YXJhbXMuZWdsUGFyYW1ldGVycyA9IHVzZU51bGxEZXZpY2UgPyBPUEVOR0xfTlVMTCgpIDogT1BF
TkdMKCk7CisgICAgcGFyYW1zLnVzZUZCTyAgICAgICAgPSByZW5kZXJUb1RleHR1cmU7CisgICAg
cmV0dXJuIHBhcmFtczsKK30KKworRHJhd0NhbGxQZXJmUGFyYW1zIERyYXdDYWxsUGVyZlZhbGlk
YXRpb25Pbmx5KCkKK3sKKyAgICBEcmF3Q2FsbFBlcmZQYXJhbXMgcGFyYW1zOworICAgIHBhcmFt
cy5lZ2xQYXJhbWV0ZXJzID0gREVGQVVMVCgpOworICAgIHBhcmFtcy5pdGVyYXRpb25zICAgICA9
IDEwMDAwOworICAgIHBhcmFtcy5udW1UcmlzID0gMDsKKyAgICBwYXJhbXMucnVuVGltZVNlY29u
ZHMgPSA1LjA7CisgICAgcmV0dXJuIHBhcmFtczsKK30KKworVEVTVF9QKERyYXdDYWxsUGVyZkJl
bmNobWFyaywgUnVuKQoreworICAgIHJ1bigpOworfQorCitBTkdMRV9JTlNUQU5USUFURV9URVNU
KERyYXdDYWxsUGVyZkJlbmNobWFyaywKKyAgICAgICAgICAgICAgICAgICAgICAgRHJhd0NhbGxQ
ZXJmRDNEOVBhcmFtcyhmYWxzZSwgZmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICBEcmF3
Q2FsbFBlcmZEM0Q5UGFyYW1zKHRydWUsIGZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
RHJhd0NhbGxQZXJmRDNEMTFQYXJhbXMoZmFsc2UsIGZhbHNlKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgRHJhd0NhbGxQZXJmRDNEMTFQYXJhbXModHJ1ZSwgZmFsc2UpLAorICAgICAgICAgICAg
ICAgICAgICAgICBEcmF3Q2FsbFBlcmZEM0QxMVBhcmFtcyh0cnVlLCB0cnVlKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgRHJhd0NhbGxQZXJmT3BlbkdMUGFyYW1zKGZhbHNlLCBmYWxzZSksCisg
ICAgICAgICAgICAgICAgICAgICAgIERyYXdDYWxsUGVyZk9wZW5HTFBhcmFtcyh0cnVlLCBmYWxz
ZSksCisgICAgICAgICAgICAgICAgICAgICAgIERyYXdDYWxsUGVyZk9wZW5HTFBhcmFtcyh0cnVl
LCB0cnVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRHJhd0NhbGxQZXJmVmFsaWRhdGlvbk9u
bHkoKSk7CisKK30gLy8gbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvcGVyZl90ZXN0cy9EeW5hbWljUHJvbW90aW9uUGVyZlRlc3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0R5bmFt
aWNQcm9tb3Rpb25QZXJmVGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvRHluYW1pY1Byb21vdGlvblBlcmZUZXN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4OSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIER5bmFtaWNQ
cm9tb3Rpb25QZXJmVGVzdDoKKy8vICAgVGVzdHMgdGhhdCBBTkdMRSB3aWxsIHByb21vdGUgYnVm
ZmVyIHNwZWNmaWVkIHdpdGggRFlOQU1JQyB1c2FnZSB0byBzdGF0aWMgYWZ0ZXIgYSBudW1iZXIg
b2YKKy8vICAgaXRlcmF0aW9ucyB3aXRob3V0IGNoYW5naW5nIHRoZSBkYXRhLiBJdCBzcGVjaWZp
Y2FsbHkgYWZmZWN0cyB0aGUgRDNEIGJhY2stZW5kLCB3aGljaCB0cmVhdHMKKy8vICAgZHluYW1p
YyBhbmQgc3RhdGljIGJ1ZmZlcnMgcXVpdGUgZGlmZmVyZW50bHkuCisvLworCisjaW5jbHVkZSAi
QU5HTEVQZXJmVGVzdC5oIgorI2luY2x1ZGUgInJhbmRvbV91dGlscy5oIgorI2luY2x1ZGUgInNo
YWRlcl91dGlscy5oIgorI2luY2x1ZGUgIlZlY3Rvci5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5n
bGU7CisKK25hbWVzcGFjZQoreworCitzdHJ1Y3QgRHluYW1pY1Byb21vdGlvblBhcmFtcyBmaW5h
bCA6IHB1YmxpYyBSZW5kZXJUZXN0UGFyYW1zCit7CisgICAgRHluYW1pY1Byb21vdGlvblBhcmFt
cygpOworICAgIHN0ZDo6c3RyaW5nIHN1ZmZpeCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgc2l6
ZV90IHZlcnRleENvdW50OworICAgIHVuc2lnbmVkIGludCBpdGVyYXRpb25zOworfTsKKworRHlu
YW1pY1Byb21vdGlvblBhcmFtczo6RHluYW1pY1Byb21vdGlvblBhcmFtcygpIDogdmVydGV4Q291
bnQoMTAyNCksIGl0ZXJhdGlvbnMoNCkKK3sKK30KKworc3RkOjpzdHJpbmcgRHluYW1pY1Byb21v
dGlvblBhcmFtczo6c3VmZml4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gUmVuZGVyVGVzdFBhcmFt
czo6c3VmZml4KCk7Cit9CisKK3N0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0g
Jm9zLCBjb25zdCBEeW5hbWljUHJvbW90aW9uUGFyYW1zICZwYXJhbXMpCit7CisgICAgb3MgPDwg
cGFyYW1zLnN1ZmZpeCgpLnN1YnN0cigxKTsKKyAgICByZXR1cm4gb3M7Cit9CisKK2NsYXNzIER5
bmFtaWNQcm9tb3Rpb25QZXJmVGVzdCA6IHB1YmxpYyBBTkdMRVJlbmRlclRlc3QsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdGVzdGluZzo6V2l0aFBhcmFtSW50ZXJm
YWNlPER5bmFtaWNQcm9tb3Rpb25QYXJhbXM+Cit7CisgIHB1YmxpYzoKKyAgICBEeW5hbWljUHJv
bW90aW9uUGVyZlRlc3QoKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUJlbmNobWFyaygpIG92ZXJy
aWRlOworICAgIHZvaWQgZGVzdHJveUJlbmNobWFyaygpIG92ZXJyaWRlOworICAgIHZvaWQgZHJh
d0JlbmNobWFyaygpIG92ZXJyaWRlOworCisgIHByaXZhdGU6CisgICAgR0x1aW50IG1Qcm9ncmFt
OworICAgIEdMdWludCBtRWxlbWVudEFycmF5QnVmZmVyOworICAgIEdMdWludCBtQXJyYXlCdWZm
ZXI7Cit9OworCitEeW5hbWljUHJvbW90aW9uUGVyZlRlc3Q6OkR5bmFtaWNQcm9tb3Rpb25QZXJm
VGVzdCgpCisgICAgOiBBTkdMRVJlbmRlclRlc3QoIkR5bmFtaWNQcm9tb3Rpb24iLCBHZXRQYXJh
bSgpKSwKKyAgICAgIG1Qcm9ncmFtKDApLAorICAgICAgbUVsZW1lbnRBcnJheUJ1ZmZlcigwKSwK
KyAgICAgIG1BcnJheUJ1ZmZlcigwKQoreworfQorCit2b2lkIER5bmFtaWNQcm9tb3Rpb25QZXJm
VGVzdDo6aW5pdGlhbGl6ZUJlbmNobWFyaygpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZl
cnRleFNoYWRlclNvdXJjZSA9CisgICAgICAgICJhdHRyaWJ1dGUgdmVjMiBwb3NpdGlvbjtcbiIK
KyAgICAgICAgImF0dHJpYnV0ZSB2ZWMzIGNvbG9yO1xuIgorICAgICAgICAidmFyeWluZyB2ZWMz
IHZDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAg
ICAgICIgICAgdkNvbG9yID0gY29sb3I7XG4iCisgICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSB2
ZWM0KHBvc2l0aW9uLCAwLCAxKTtcbiIKKyAgICAgICAgIn0iOworCisgICAgY29uc3Qgc3RkOjpz
dHJpbmcgJmZyYWdtZW50U2hhZGVyU291cmNlID0KKyAgICAgICAgInZhcnlpbmcgbWVkaXVtcCB2
ZWMzIHZDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisg
ICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh2Q29sb3IsIDEpO1xuIgorICAgICAgICAi
fSI7CisKKyAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwg
ZnJhZ21lbnRTaGFkZXJTb3VyY2UpOworICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOworCisg
ICAgY29uc3Qgc2l6ZV90IHZlcnRleENvdW50ID0gR2V0UGFyYW0oKS52ZXJ0ZXhDb3VudDsKKwor
ICAgIHN0ZDo6dmVjdG9yPEdMdXNob3J0PiBpbmRleERhdGE7CisgICAgc3RkOjp2ZWN0b3I8VmVj
dG9yMj4gcG9zaXRpb25EYXRhOworICAgIHN0ZDo6dmVjdG9yPFZlY3RvcjM+IGNvbG9yRGF0YTsK
KworICAgIEFTU0VSVF9HRShzdGF0aWNfY2FzdDxzaXplX3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8
R0x1c2hvcnQ+OjptYXgoKSksIHZlcnRleENvdW50KTsKKworICAgIFJORyBybmcoMSk7CisKKyAg
ICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgdmVydGV4Q291bnQ7ICsraW5kZXgpCisg
ICAgeworICAgICAgICBpbmRleERhdGEucHVzaF9iYWNrKHN0YXRpY19jYXN0PEdMdXNob3J0Pihp
bmRleCkpOworCisgICAgICAgIFZlY3RvcjIgcG9zaXRpb24ocm5nLnJhbmRvbU5lZ2F0aXZlT25l
VG9PbmUoKSwgcm5nLnJhbmRvbU5lZ2F0aXZlT25lVG9PbmUoKSk7CisgICAgICAgIHBvc2l0aW9u
RGF0YS5wdXNoX2JhY2socG9zaXRpb24pOworCisgICAgICAgIFZlY3RvcjMgY29sb3Iocm5nLnJh
bmRvbUZsb2F0KCksIHJuZy5yYW5kb21GbG9hdCgpLCBybmcucmFuZG9tRmxvYXQoKSk7CisgICAg
ICAgIGNvbG9yRGF0YS5wdXNoX2JhY2soY29sb3IpOworICAgIH0KKworICAgIGdsR2VuQnVmZmVy
cygxLCAmbUVsZW1lbnRBcnJheUJ1ZmZlcik7CisgICAgZ2xHZW5CdWZmZXJzKDEsICZtQXJyYXlC
dWZmZXIpOworCisgICAgZ2xCaW5kQnVmZmVyKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBtRWxl
bWVudEFycmF5QnVmZmVyKTsKKyAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtQXJy
YXlCdWZmZXIpOworCisgICAgR0xzaXplaXB0ciBlbGVtZW50QXJyYXlTaXplICA9IHNpemVvZihH
THVzaG9ydCkgKiB2ZXJ0ZXhDb3VudDsKKyAgICBHTHNpemVpcHRyIHBvc2l0aW9uQXJyYXlTaXpl
ID0gc2l6ZW9mKFZlY3RvcjIpICogdmVydGV4Q291bnQ7CisgICAgR0xzaXplaXB0ciBjb2xvckFy
cmF5U2l6ZSAgICA9IHNpemVvZihWZWN0b3IzKSAqIHZlcnRleENvdW50OworCisgICAgLy8gVGhl
IERZTkFNSUNfRFJBVyB1c2FnZSBpcyB0aGUga2V5IHRvIHRoZSB0ZXN0LgorICAgIGdsQnVmZmVy
RGF0YShHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgZWxlbWVudEFycmF5U2l6ZSwgaW5kZXhEYXRh
LmRhdGEoKSwgR0xfRFlOQU1JQ19EUkFXKTsKKyAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVG
RkVSLCBwb3NpdGlvbkFycmF5U2l6ZSArIGNvbG9yQXJyYXlTaXplLCBudWxscHRyLCBHTF9EWU5B
TUlDX0RSQVcpOworICAgIGdsQnVmZmVyU3ViRGF0YShHTF9BUlJBWV9CVUZGRVIsIDAsIHBvc2l0
aW9uQXJyYXlTaXplLCBwb3NpdGlvbkRhdGEuZGF0YSgpKTsKKyAgICBnbEJ1ZmZlclN1YkRhdGEo
R0xfQVJSQVlfQlVGRkVSLCBwb3NpdGlvbkFycmF5U2l6ZSwgY29sb3JBcnJheVNpemUsIGNvbG9y
RGF0YS5kYXRhKCkpOworCisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICBHTGludCBw
b3NpdGlvbkxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgInBvc2l0aW9u
Iik7CisgICAgQVNTRVJUX05FKC0xLCBwb3NpdGlvbkxvY2F0aW9uKTsKKyAgICBHTGludCBjb2xv
ckxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgImNvbG9yIik7CisgICAg
QVNTRVJUX05FKC0xLCBjb2xvckxvY2F0aW9uKTsKKworICAgIGdsVmVydGV4QXR0cmliUG9pbnRl
cihwb3NpdGlvbkxvY2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIG51bGxwdHIpOwor
ICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihjb2xvckxvY2F0aW9uLCAzLCBHTF9GTE9BVCwgR0xf
RkFMU0UsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgR0x2b2lkICo+KHBvc2l0aW9uQXJyYXlTaXplKSk7CisKKyAgICBnbEVuYWJsZVZlcnRleEF0
dHJpYkFycmF5KHBvc2l0aW9uTG9jYXRpb24pOworICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJy
YXkoY29sb3JMb2NhdGlvbik7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKK30KKwordm9p
ZCBEeW5hbWljUHJvbW90aW9uUGVyZlRlc3Q6OmRlc3Ryb3lCZW5jaG1hcmsoKQoreworICAgIGds
RGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtRWxlbWVu
dEFycmF5QnVmZmVyKTsKKyAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1BcnJheUJ1ZmZlcik7Cit9
CisKK3ZvaWQgRHluYW1pY1Byb21vdGlvblBlcmZUZXN0OjpkcmF3QmVuY2htYXJrKCkKK3sKKyAg
ICB1bnNpZ25lZCBpbnQgaXRlcmF0aW9ucyA9IEdldFBhcmFtKCkuaXRlcmF0aW9uczsKKyAgICBz
aXplX3QgdmVydGV4Q291bnQgICAgICA9IEdldFBhcmFtKCkudmVydGV4Q291bnQ7CisKKyAgICBn
bENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAgIGZvciAodW5zaWduZWQgaW50IGNvdW50
ID0gMDsgY291bnQgPCBpdGVyYXRpb25zOyArK2NvdW50KQorICAgIHsKKyAgICAgICAgZ2xEcmF3
RWxlbWVudHMoR0xfVFJJQU5HTEVTLCBzdGF0aWNfY2FzdDxHTHNpemVpPih2ZXJ0ZXhDb3VudCks
IEdMX1VOU0lHTkVEX1NIT1JULCBudWxscHRyKTsKKyAgICB9CisKKyAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKK30KKworRHluYW1pY1Byb21vdGlvblBhcmFtcyBEeW5hbWljUHJvbW90aW9uRDNE
MTFQYXJhbXMoKQoreworICAgIER5bmFtaWNQcm9tb3Rpb25QYXJhbXMgcGFyYW1zOworICAgIHBh
cmFtcy5lZ2xQYXJhbWV0ZXJzID0gZWdsX3BsYXRmb3JtOjpEM0QxMSgpOworICAgIHJldHVybiBw
YXJhbXM7Cit9CisKK0R5bmFtaWNQcm9tb3Rpb25QYXJhbXMgRHluYW1pY1Byb21vdGlvbkQzRDlQ
YXJhbXMoKQoreworICAgIER5bmFtaWNQcm9tb3Rpb25QYXJhbXMgcGFyYW1zOworICAgIHBhcmFt
cy5lZ2xQYXJhbWV0ZXJzID0gZWdsX3BsYXRmb3JtOjpEM0Q5KCk7CisgICAgcmV0dXJuIHBhcmFt
czsKK30KKworVEVTVF9QKER5bmFtaWNQcm9tb3Rpb25QZXJmVGVzdCwgUnVuKQoreworICAgIHJ1
bigpOworfQorCitBTkdMRV9JTlNUQU5USUFURV9URVNUKER5bmFtaWNQcm9tb3Rpb25QZXJmVGVz
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY1Byb21vdGlvbkQzRDExUGFyYW1zKCks
CisgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNQcm9tb3Rpb25EM0Q5UGFyYW1zKCkpOwor
Cit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9FR0xJbml0aWFsaXplUGVyZi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvRUdMSW5pdGlh
bGl6ZVBlcmYuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9wZXJmX3Rlc3RzL0VHTEluaXRpYWxpemVQZXJmLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDE2MSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEVHTEluaXRpYWxpemVQZXJmVGVzdDoKKy8v
ICAgUGVyZm9ybWFuY2UgdGVzdCBmb3IgZGV2aWNlIGNyZWF0aW9uLgorLy8KKworI2luY2x1ZGUg
IkFOR0xFUGVyZlRlc3QuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgInRlc3RfdXRp
bHMvYW5nbGVfdGVzdF9jb25maWdzLmgiCisjaW5jbHVkZSAidGVzdF91dGlscy9hbmdsZV90ZXN0
X2luc3RhbnRpYXRlLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vUGxhdGZvcm0uaCIKKwordXNpbmcg
bmFtZXNwYWNlIHRlc3Rpbmc7CisKK25hbWVzcGFjZQoreworCisvLyBPbmx5IGFwcGxpZXMgdG8g
RDNEMTEKK2NsYXNzIENhcHR1cmVQbGF0Zm9ybSA6IHB1YmxpYyBhbmdsZTo6UGxhdGZvcm0KK3sK
KyAgcHVibGljOgorICAgIENhcHR1cmVQbGF0Zm9ybSgpCisgICAgICAgIDogbVRpbWVyKENyZWF0
ZVRpbWVyKCkpLAorICAgICAgICAgIG1Mb2FkRExMc01TKDApLAorICAgICAgICAgIG1DcmVhdGVE
ZXZpY2VNUygwKSwKKyAgICAgICAgICBtSW5pdFJlc291cmNlc01TKDApCisgICAgeworICAgICAg
ICBtVGltZXItPnN0YXJ0KCk7CisgICAgfQorCisgICAgZG91YmxlIGN1cnJlbnRUaW1lKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBoaXN0b2dyYW1DdXN0b21Db3VudHMoCisgICAgICAgIGNvbnN0IGNo
YXIgKm5hbWUsIGludCBzYW1wbGUsIGludCBtaW4sIGludCBtYXgsIGludCBidWNrZXRDb3VudCkg
b3ZlcnJpZGU7CisKKyAgICBzaXplX3QgZ2V0TG9hZERMTHNNUygpIGNvbnN0IHsgcmV0dXJuIG1M
b2FkRExMc01TOyB9CisgICAgc2l6ZV90IGdldENyZWF0ZURldmljZU1TKCkgY29uc3QgeyByZXR1
cm4gbUNyZWF0ZURldmljZU1TOyB9CisgICAgc2l6ZV90IGdldEluaXRSZXNvdXJjZXNNUygpIGNv
bnN0IHsgcmV0dXJuIG1Jbml0UmVzb3VyY2VzTVM7IH0KKworICBwcml2YXRlOgorICAgIFRpbWVy
ICptVGltZXI7CisgICAgc2l6ZV90IG1Mb2FkRExMc01TOworICAgIHNpemVfdCBtQ3JlYXRlRGV2
aWNlTVM7CisgICAgc2l6ZV90IG1Jbml0UmVzb3VyY2VzTVM7Cit9OworCitkb3VibGUgQ2FwdHVy
ZVBsYXRmb3JtOjpjdXJyZW50VGltZSgpCit7CisgICAgcmV0dXJuIG1UaW1lci0+Z2V0RWxhcHNl
ZFRpbWUoKTsKK30KKwordm9pZCBDYXB0dXJlUGxhdGZvcm06Omhpc3RvZ3JhbUN1c3RvbUNvdW50
cygKKyAgICBjb25zdCBjaGFyICpuYW1lLCBpbnQgc2FtcGxlLCBpbnQgLyptaW4qLywgaW50IC8q
bWF4Ki8sIGludCAvKmJ1Y2tldENvdW50Ki8pCit7CisgICAgLy8gVGhlc2UgbXVzdCBtYXRjaCB0
aGUgbmFtZXMgb2YgdGhlIGhpc3RvZ3JhbXMuCisgICAgaWYgKHN0cmNtcChuYW1lLCAiR1BVLkFO
R0xFLlJlbmRlcmVyMTFJbml0aWFsaXplRExMc01TIikgPT0gMCkKKyAgICB7CisgICAgICAgIG1M
b2FkRExMc01TICs9IHN0YXRpY19jYXN0PHNpemVfdD4oc2FtcGxlKTsKKyAgICB9CisgICAgLy8g
Tm90ZTogbm90IGNhcHR1cmVkIGluIGRlYnVnLCBkdWUgdG8gY3JlYXRpbmcgYSBkZWJ1ZyBkZXZp
Y2UKKyAgICBlbHNlIGlmIChzdHJjbXAobmFtZSwgIkdQVS5BTkdMRS5EM0QxMUNyZWF0ZURldmlj
ZU1TIikgPT0gMCkKKyAgICB7CisgICAgICAgIG1DcmVhdGVEZXZpY2VNUyArPSBzdGF0aWNfY2Fz
dDxzaXplX3Q+KHNhbXBsZSk7CisgICAgfQorICAgIGVsc2UgaWYgKHN0cmNtcChuYW1lLCAiR1BV
LkFOR0xFLlJlbmRlcmVyMTFJbml0aWFsaXplRGV2aWNlTVMiKSA9PSAwKQorICAgIHsKKyAgICAg
ICAgbUluaXRSZXNvdXJjZXNNUyArPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNhbXBsZSk7CisgICAg
fQorfQorCitjbGFzcyBFR0xJbml0aWFsaXplUGVyZlRlc3QgOiBwdWJsaWMgQU5HTEVQZXJmVGVz
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXaXRoUGFyYW1JbnRlcmZh
Y2U8YW5nbGU6OlBsYXRmb3JtUGFyYW1ldGVycz4KK3sKKyAgcHVibGljOgorICAgIEVHTEluaXRp
YWxpemVQZXJmVGVzdCgpOworICAgIH5FR0xJbml0aWFsaXplUGVyZlRlc3QoKTsKKworICAgIHZv
aWQgc3RlcCgpIG92ZXJyaWRlOworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZTsKKworICBw
cml2YXRlOgorICAgIE9TV2luZG93ICptT1NXaW5kb3c7CisgICAgRUdMRGlzcGxheSBtRGlzcGxh
eTsKKyAgICBDYXB0dXJlUGxhdGZvcm0gbUNhcHR1cmVQbGF0Zm9ybTsKK307CisKK0VHTEluaXRp
YWxpemVQZXJmVGVzdDo6RUdMSW5pdGlhbGl6ZVBlcmZUZXN0KCkKKyAgICA6IEFOR0xFUGVyZlRl
c3QoIkVHTEluaXRpYWxpemUiLCAiX3J1biIpLAorICAgICAgbU9TV2luZG93KG51bGxwdHIpLAor
ICAgICAgbURpc3BsYXkoRUdMX05PX0RJU1BMQVkpCit7CisgICAgYXV0byBwbGF0Zm9ybSA9IEdl
dFBhcmFtKCkuZWdsUGFyYW1ldGVyczsKKworICAgIHN0ZDo6dmVjdG9yPEVHTGludD4gZGlzcGxh
eUF0dHJpYnV0ZXM7CisgICAgZGlzcGxheUF0dHJpYnV0ZXMucHVzaF9iYWNrKEVHTF9QTEFURk9S
TV9BTkdMRV9UWVBFX0FOR0xFKTsKKyAgICBkaXNwbGF5QXR0cmlidXRlcy5wdXNoX2JhY2socGxh
dGZvcm0ucmVuZGVyZXIpOworICAgIGRpc3BsYXlBdHRyaWJ1dGVzLnB1c2hfYmFjayhFR0xfUExB
VEZPUk1fQU5HTEVfTUFYX1ZFUlNJT05fTUFKT1JfQU5HTEUpOworICAgIGRpc3BsYXlBdHRyaWJ1
dGVzLnB1c2hfYmFjayhwbGF0Zm9ybS5tYWpvclZlcnNpb24pOworICAgIGRpc3BsYXlBdHRyaWJ1
dGVzLnB1c2hfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfTUFYX1ZFUlNJT05fTUlOT1JfQU5HTEUp
OworICAgIGRpc3BsYXlBdHRyaWJ1dGVzLnB1c2hfYmFjayhwbGF0Zm9ybS5taW5vclZlcnNpb24p
OworCisgICAgaWYgKHBsYXRmb3JtLnJlbmRlcmVyID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBF
X0QzRDlfQU5HTEUgfHwKKyAgICAgICAgcGxhdGZvcm0ucmVuZGVyZXIgPT0gRUdMX1BMQVRGT1JN
X0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUpCisgICAgeworICAgICAgICBkaXNwbGF5QXR0cmlidXRl
cy5wdXNoX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0FOR0xFKTsKKyAgICAg
ICAgZGlzcGxheUF0dHJpYnV0ZXMucHVzaF9iYWNrKHBsYXRmb3JtLmRldmljZVR5cGUpOworICAg
IH0KKyAgICBkaXNwbGF5QXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX05PTkUpOworCisgICAgbU9T
V2luZG93ID0gQ3JlYXRlT1NXaW5kb3coKTsKKyAgICBtT1NXaW5kb3ctPmluaXRpYWxpemUoIkVH
TEluaXRpYWxpemUgVGVzdCIsIDY0LCA2NCk7CisKKyAgICBhdXRvIGVnbEdldFBsYXRmb3JtRGlz
cGxheUVYVCA9CisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZORUdMR0VUUExBVEZPUk1ESVNQ
TEFZRVhUUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImVnbEdldFBsYXRmb3JtRGlzcGxheUVYVCIp
KTsKKyAgICBpZiAoZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUID09IG51bGxwdHIpCisgICAgewor
ICAgICAgICBzdGQ6OmNlcnIgPDwgIkVycm9yIGdldHRpbmcgcGxhdGZvcm0gZGlzcGxheSEiIDw8
IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1EaXNwbGF5ID0gZWds
R2V0UGxhdGZvcm1EaXNwbGF5RVhUKEVHTF9QTEFURk9STV9BTkdMRV9BTkdMRSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQgKj4o
bU9TV2luZG93LT5nZXROYXRpdmVEaXNwbGF5KCkpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZkaXNwbGF5QXR0cmlidXRlc1swXSk7CisKKyAgICBBTkdMRVBsYXRm
b3JtSW5pdGlhbGl6ZSgmbUNhcHR1cmVQbGF0Zm9ybSk7Cit9CisKK0VHTEluaXRpYWxpemVQZXJm
VGVzdDo6fkVHTEluaXRpYWxpemVQZXJmVGVzdCgpCit7CisgICAgU2FmZURlbGV0ZShtT1NXaW5k
b3cpOworfQorCit2b2lkIEVHTEluaXRpYWxpemVQZXJmVGVzdDo6c3RlcCgpCit7CisgICAgQVNT
RVJUX05FKEVHTF9OT19ESVNQTEFZLCBtRGlzcGxheSk7CisKKyAgICBFR0xpbnQgbWFqb3JWZXJz
aW9uLCBtaW5vclZlcnNpb247CisgICAgQVNTRVJUX0VRKHN0YXRpY19jYXN0PEVHTEJvb2xlYW4+
KEVHTF9UUlVFKSwgZWdsSW5pdGlhbGl6ZShtRGlzcGxheSwgJm1ham9yVmVyc2lvbiwgJm1pbm9y
VmVyc2lvbikpOworICAgIEFTU0VSVF9FUShzdGF0aWNfY2FzdDxFR0xCb29sZWFuPihFR0xfVFJV
RSksIGVnbFRlcm1pbmF0ZShtRGlzcGxheSkpOworfQorCit2b2lkIEVHTEluaXRpYWxpemVQZXJm
VGVzdDo6VGVhckRvd24oKQoreworICAgIEFOR0xFUGVyZlRlc3Q6OlRlYXJEb3duKCk7CisgICAg
cHJpbnRSZXN1bHQoIkxvYWRETExzIiwgbm9ybWFsaXplZFRpbWUobUNhcHR1cmVQbGF0Zm9ybS5n
ZXRMb2FkRExMc01TKCkpLCAibXMiLCB0cnVlKTsKKyAgICBwcmludFJlc3VsdCgiRDNEMTFDcmVh
dGVEZXZpY2UiLCBub3JtYWxpemVkVGltZShtQ2FwdHVyZVBsYXRmb3JtLmdldENyZWF0ZURldmlj
ZU1TKCkpLCAibXMiLCB0cnVlKTsKKyAgICBwcmludFJlc3VsdCgiSW5pdFJlc291cmNlcyIsIG5v
cm1hbGl6ZWRUaW1lKG1DYXB0dXJlUGxhdGZvcm0uZ2V0SW5pdFJlc291cmNlc01TKCkpLCAibXMi
LCB0cnVlKTsKKworICAgIEFOR0xFUGxhdGZvcm1TaHV0ZG93bigpOworfQorCitURVNUX1AoRUdM
SW5pdGlhbGl6ZVBlcmZUZXN0LCBSdW4pCit7CisgICAgcnVuKCk7Cit9CisKK0FOR0xFX0lOU1RB
TlRJQVRFX1RFU1QoRUdMSW5pdGlhbGl6ZVBlcmZUZXN0LCBhbmdsZTo6RVMyX0QzRDExKCkpOwor
Cit9IC8vIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L3BlcmZfdGVzdHMvSW5kZXhDb252ZXJzaW9uUGVyZi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvSW5kZXhDb252ZXJzaW9uUGVy
Zi5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L3BlcmZfdGVzdHMvSW5kZXhDb252ZXJzaW9uUGVyZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyNzEgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBJbmRleENvbnZlcnNpb25QZXJmOgorLy8gICBQZXJm
b3JtYW5jZSB0ZXN0cyBmb3IgQU5HTEUgaW5kZXggY29udmVyc2lvbiBpbiBEM0QxMS4KKy8vCisK
KyNpbmNsdWRlIDxzc3RyZWFtPgorCisjaW5jbHVkZSAiQU5HTEVQZXJmVGVzdC5oIgorI2luY2x1
ZGUgInNoYWRlcl91dGlscy5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKK25hbWVzcGFj
ZQoreworCitzdHJ1Y3QgSW5kZXhDb252ZXJzaW9uUGVyZlBhcmFtcyBmaW5hbCA6IHB1YmxpYyBS
ZW5kZXJUZXN0UGFyYW1zCit7CisgICAgc3RkOjpzdHJpbmcgc3VmZml4KCkgY29uc3Qgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cnN0cjsKKworICAgICAgICBp
ZiAoaW5kZXhSYW5nZU9mZnNldCA+IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0cnN0ciA8
PCAiX2luZGV4X3JhbmdlIjsKKyAgICAgICAgfQorCisgICAgICAgIHN0cnN0ciA8PCBSZW5kZXJU
ZXN0UGFyYW1zOjpzdWZmaXgoKTsKKworICAgICAgICByZXR1cm4gc3Ryc3RyLnN0cigpOworICAg
IH0KKworICAgIHVuc2lnbmVkIGludCBpdGVyYXRpb25zOworICAgIHVuc2lnbmVkIGludCBudW1J
bmRleFRyaXM7CisKKyAgICAvLyBBIHNlY29uZCB0ZXN0LCB3aGljaCBjb3ZlcnMgdXNpbmcgaW5k
ZXggcmFuZ2VzIHdpdGggYW4gb2Zmc2V0LgorICAgIHVuc2lnbmVkIGludCBpbmRleFJhbmdlT2Zm
c2V0OworfTsKKworLy8gUHJvdmlkZSBhIGN1c3RvbSBndGVzdCBwYXJhbWV0ZXIgbmFtZSBmdW5j
dGlvbiBmb3IgSW5kZXhDb252ZXJzaW9uUGVyZlBhcmFtcy4KK3N0ZDo6b3N0cmVhbSAmb3BlcmF0
b3I8PChzdGQ6Om9zdHJlYW0gJnN0cmVhbSwgY29uc3QgSW5kZXhDb252ZXJzaW9uUGVyZlBhcmFt
cyAmcGFyYW0pCit7CisgICAgc3RyZWFtIDw8IHBhcmFtLnN1ZmZpeCgpLnN1YnN0cigxKTsKKyAg
ICByZXR1cm4gc3RyZWFtOworfQorCitjbGFzcyBJbmRleENvbnZlcnNpb25QZXJmVGVzdCA6IHB1
YmxpYyBBTkdMRVJlbmRlclRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
YmxpYyA6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxJbmRleENvbnZlcnNpb25QZXJmUGFy
YW1zPgoreworICBwdWJsaWM6CisgICAgSW5kZXhDb252ZXJzaW9uUGVyZlRlc3QoKTsKKworICAg
IHZvaWQgaW5pdGlhbGl6ZUJlbmNobWFyaygpIG92ZXJyaWRlOworICAgIHZvaWQgZGVzdHJveUJl
bmNobWFyaygpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0JlbmNobWFyaygpIG92ZXJyaWRlOwor
CisgIHByaXZhdGU6CisgICAgdm9pZCB1cGRhdGVCdWZmZXJEYXRhKCk7CisgICAgdm9pZCBkcmF3
Q29udmVyc2lvbigpOworICAgIHZvaWQgZHJhd0luZGV4UmFuZ2UoKTsKKworICAgIEdMdWludCBt
UHJvZ3JhbTsKKyAgICBHTHVpbnQgbVZlcnRleEJ1ZmZlcjsKKyAgICBHTHVpbnQgbUluZGV4QnVm
ZmVyOworICAgIHN0ZDo6dmVjdG9yPEdMdXNob3J0PiBtSW5kZXhEYXRhOworfTsKKworSW5kZXhD
b252ZXJzaW9uUGVyZlRlc3Q6OkluZGV4Q29udmVyc2lvblBlcmZUZXN0KCkKKyAgICA6IEFOR0xF
UmVuZGVyVGVzdCgiSW5kZXhDb252ZXJzaW9uUGVyZlRlc3QiLCBHZXRQYXJhbSgpKSwKKyAgICAg
IG1Qcm9ncmFtKDApLAorICAgICAgbVZlcnRleEJ1ZmZlcigwKSwKKyAgICAgIG1JbmRleEJ1ZmZl
cigwKQoreworICAgIG1SdW5UaW1lU2Vjb25kcyA9IDMuMDsKK30KKwordm9pZCBJbmRleENvbnZl
cnNpb25QZXJmVGVzdDo6aW5pdGlhbGl6ZUJlbmNobWFyaygpCit7CisgICAgY29uc3QgYXV0byAm
cGFyYW1zID0gR2V0UGFyYW0oKTsKKworICAgIEFTU0VSVF9MVCgwdSwgcGFyYW1zLml0ZXJhdGlv
bnMpOworICAgIEFTU0VSVF9MVCgwdSwgcGFyYW1zLm51bUluZGV4VHJpcyk7CisKKyAgICBjb25z
dCBzdGQ6OnN0cmluZyB2cyA9IFNIQURFUl9TT1VSQ0UKKyAgICAoCisgICAgICAgIGF0dHJpYnV0
ZSB2ZWMyIHZQb3NpdGlvbjsKKyAgICAgICAgdW5pZm9ybSBmbG9hdCB1U2NhbGU7CisgICAgICAg
IHVuaWZvcm0gZmxvYXQgdU9mZnNldDsKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHZQb3NpdGlvbiAqIHZlYzIodVNjYWxlKSAt
IHZlYzIodU9mZnNldCksIDAsIDEpOworICAgICAgICB9CisgICAgKTsKKworICAgIGNvbnN0IHN0
ZDo6c3RyaW5nIGZzID0gU0hBREVSX1NPVVJDRQorICAgICgKKyAgICAgICAgcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICAgICAgfQorICAg
ICk7CisKKyAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZzLCBmcyk7CisgICAgQVNTRVJU
X05FKDB1LCBtUHJvZ3JhbSk7CisKKyAgICAvLyBVc2UgdGhlIHByb2dyYW0gb2JqZWN0CisgICAg
Z2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKKworICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAw
LjBmLCAwLjBmKTsKKworICAgIC8vIEluaXRpYWxpemUgdGhlIHZlcnRleCBkYXRhCisgICAgc3Rk
Ojp2ZWN0b3I8R0xmbG9hdD4gZmxvYXREYXRhOworCisgICAgc2l6ZV90IG51bVRyaXMgPSBzdGQ6
Om51bWVyaWNfbGltaXRzPEdMdXNob3J0Pjo6bWF4KCkgLyAzICsgMTsKKyAgICBmb3IgKHNpemVf
dCB0cmlJbmRleCA9IDA7IHRyaUluZGV4IDwgbnVtVHJpczsgKyt0cmlJbmRleCkKKyAgICB7Cisg
ICAgICAgIGZsb2F0RGF0YS5wdXNoX2JhY2soMSk7CisgICAgICAgIGZsb2F0RGF0YS5wdXNoX2Jh
Y2soMik7CisgICAgICAgIGZsb2F0RGF0YS5wdXNoX2JhY2soMCk7CisgICAgICAgIGZsb2F0RGF0
YS5wdXNoX2JhY2soMCk7CisgICAgICAgIGZsb2F0RGF0YS5wdXNoX2JhY2soMik7CisgICAgICAg
IGZsb2F0RGF0YS5wdXNoX2JhY2soMCk7CisgICAgfQorCisgICAgZ2xHZW5CdWZmZXJzKDEsICZt
VmVydGV4QnVmZmVyKTsKKyAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtVmVydGV4
QnVmZmVyKTsKKyAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBmbG9hdERhdGEuc2l6
ZSgpICogc2l6ZW9mKEdMZmxvYXQpLCAmZmxvYXREYXRhWzBdLCBHTF9TVEFUSUNfRFJBVyk7CisK
KyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCAw
KTsKKyAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOworCisgICAgLy8gSW5pdGlhbGl6
ZSB0aGUgaW5kZXggYnVmZmVyCisgICAgZm9yICh1bnNpZ25lZCBpbnQgdHJpSW5kZXggPSAwOyB0
cmlJbmRleCA8IHBhcmFtcy5udW1JbmRleFRyaXM7ICsrdHJpSW5kZXgpCisgICAgeworICAgICAg
ICAvLyBIYW5kbGUgdHdvIGRpZmZlcmVudCB0eXBlcyBvZiB0ZXN0cywgb25lIHdpdGggaW5kZXgg
Y29udmVyc2lvbiB0cmlnZ2VyZWQgYnkgYSAtMSBpbmRleC4KKyAgICAgICAgaWYgKHBhcmFtcy5p
bmRleFJhbmdlT2Zmc2V0ID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIG1JbmRleERhdGEu
cHVzaF9iYWNrKHN0ZDo6bnVtZXJpY19saW1pdHM8R0x1c2hvcnQ+OjptYXgoKSk7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBtSW5kZXhEYXRhLnB1c2hf
YmFjaygwKTsKKyAgICAgICAgfQorCisgICAgICAgIG1JbmRleERhdGEucHVzaF9iYWNrKDEpOwor
ICAgICAgICBtSW5kZXhEYXRhLnB1c2hfYmFjaygyKTsKKyAgICB9CisKKyAgICBnbEdlbkJ1ZmZl
cnMoMSwgJm1JbmRleEJ1ZmZlcik7CisgICAgZ2xCaW5kQnVmZmVyKEdMX0VMRU1FTlRfQVJSQVlf
QlVGRkVSLCBtSW5kZXhCdWZmZXIpOworICAgIHVwZGF0ZUJ1ZmZlckRhdGEoKTsKKworICAgIC8v
IFNldCB0aGUgdmlld3BvcnQKKyAgICBnbFZpZXdwb3J0KDAsIDAsIGdldFdpbmRvdygpLT5nZXRX
aWR0aCgpLCBnZXRXaW5kb3coKS0+Z2V0SGVpZ2h0KCkpOworCisgICAgR0xmbG9hdCBzY2FsZSA9
IDAuNWY7CisgICAgR0xmbG9hdCBvZmZzZXQgPSAwLjVmOworCisgICAgZ2xVbmlmb3JtMWYoZ2xH
ZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ1U2NhbGUiKSwgc2NhbGUpOworICAgIGdsVW5p
Zm9ybTFmKGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidU9mZnNldCIpLCBvZmZzZXQp
OworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9CisKK3ZvaWQgSW5kZXhDb252ZXJzaW9u
UGVyZlRlc3Q6OnVwZGF0ZUJ1ZmZlckRhdGEoKQoreworICAgIGdsQnVmZmVyRGF0YShHTF9FTEVN
RU5UX0FSUkFZX0JVRkZFUiwgbUluZGV4RGF0YS5zaXplKCkgKiBzaXplb2YobUluZGV4RGF0YVsw
XSksICZtSW5kZXhEYXRhWzBdLCBHTF9TVEFUSUNfRFJBVyk7Cit9CisKK3ZvaWQgSW5kZXhDb252
ZXJzaW9uUGVyZlRlc3Q6OmRlc3Ryb3lCZW5jaG1hcmsoKQoreworICAgIGdsRGVsZXRlUHJvZ3Jh
bShtUHJvZ3JhbSk7CisgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtVmVydGV4QnVmZmVyKTsKKyAg
ICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1JbmRleEJ1ZmZlcik7Cit9CisKK3ZvaWQgSW5kZXhDb252
ZXJzaW9uUGVyZlRlc3Q6OmRyYXdCZW5jaG1hcmsoKQoreworICAgIGNvbnN0IGF1dG8gJnBhcmFt
cyA9IEdldFBhcmFtKCk7CisKKyAgICBpZiAocGFyYW1zLmluZGV4UmFuZ2VPZmZzZXQgPT0gMCkK
KyAgICB7CisgICAgICAgIGRyYXdDb252ZXJzaW9uKCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7
CisgICAgICAgIGRyYXdJbmRleFJhbmdlKCk7CisgICAgfQorfQorCit2b2lkIEluZGV4Q29udmVy
c2lvblBlcmZUZXN0OjpkcmF3Q29udmVyc2lvbigpCit7CisgICAgY29uc3QgYXV0byAmcGFyYW1z
ID0gR2V0UGFyYW0oKTsKKworICAgIC8vIFRyaWdnZXIgYW4gdXBkYXRlIHRvIGVuc3VyZSB3ZSBj
b252ZXJ0IG9uY2UgYSBmcmFtZQorICAgIHVwZGF0ZUJ1ZmZlckRhdGEoKTsKKworICAgIGZvciAo
dW5zaWduZWQgaW50IGl0ID0gMDsgaXQgPCBwYXJhbXMuaXRlcmF0aW9uczsgaXQrKykKKyAgICB7
CisgICAgICAgIGdsRHJhd0VsZW1lbnRzKEdMX1RSSUFOR0xFUywKKyAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8R0xzaXplaT4ocGFyYW1zLm51bUluZGV4VHJpcyAqIDMgLSAxKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfU0hPUlQsCisgICAgICAgICAgICAg
ICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oMCkpOworICAgIH0KKworICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOworfQorCit2b2lkIEluZGV4Q29udmVyc2lvblBlcmZUZXN0Ojpk
cmF3SW5kZXhSYW5nZSgpCit7CisgICAgY29uc3QgYXV0byAmcGFyYW1zID0gR2V0UGFyYW0oKTsK
KworICAgIHVuc2lnbmVkIGludCBpbmRleENvdW50ID0gMzsKKyAgICBzaXplX3Qgb2Zmc2V0ICAg
ICAgICAgICA9IHN0YXRpY19jYXN0PHNpemVfdD4oaW5kZXhDb3VudCAqIGdldE51bVN0ZXBzUGVy
Zm9ybWVkKCkpOworCisgICAgb2Zmc2V0ICU9IChwYXJhbXMubnVtSW5kZXhUcmlzICogMyk7CisK
KyAgICAvLyBUaGlzIHRlc3QgaW5jcmVtZW50cyBhbiBvZmZzZXQgZWFjaCBzdGVwLiBEcmF3aW5n
IHJlcGVhdGVkbHkgbWF5IGNhdXNlIHRoZSBzeXN0ZW0gbWVtb3J5CisgICAgLy8gdG8gcmVsZWFz
ZS4gVGhlbiwgdXNpbmcgYSBmcmVzaCBvZmZzZXQgd2lsbCByZXF1aXJlIGluZGV4IHJhbmdlIHZh
bGlkYXRpb24sIHdoaWNoIHBhZ2VzCisgICAgLy8gaXQgYmFjayBpbi4gVGhlIHBlcmZvcm1hbmNl
IHNob3VsZCBiZSBnb29kIGV2ZW4gaWYgdGhlIGRhdGEgaXMgd2FzIHVzZWQgcXVpdGUgYSBiaXQu
CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaXQgPSAwOyBpdCA8IHBhcmFtcy5pdGVyYXRpb25zOyBp
dCsrKQorICAgIHsKKyAgICAgICAgZ2xEcmF3RWxlbWVudHMoR0xfVFJJQU5HTEVTLCBzdGF0aWNf
Y2FzdDxHTHNpemVpPihpbmRleENvdW50KSwgR0xfVU5TSUdORURfU0hPUlQsCisgICAgICAgICAg
ICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkICo+KG9mZnNldCkpOworICAgIH0K
KworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworfQorCitJbmRleENvbnZlcnNpb25QZXJmUGFy
YW1zIEluZGV4Q29udmVyc2lvblBlcmZEM0QxMVBhcmFtcygpCit7CisgICAgSW5kZXhDb252ZXJz
aW9uUGVyZlBhcmFtcyBwYXJhbXM7CisgICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBlZ2xfcGxh
dGZvcm06OkQzRDExX05VTEwoKTsKKyAgICBwYXJhbXMubWFqb3JWZXJzaW9uID0gMjsKKyAgICBw
YXJhbXMubWlub3JWZXJzaW9uID0gMDsKKyAgICBwYXJhbXMud2luZG93V2lkdGggPSAyNTY7Cisg
ICAgcGFyYW1zLndpbmRvd0hlaWdodCA9IDI1NjsKKyAgICBwYXJhbXMuaXRlcmF0aW9ucyAgICA9
IDIyNTsKKyAgICBwYXJhbXMubnVtSW5kZXhUcmlzID0gMzAwMDsKKyAgICBwYXJhbXMuaW5kZXhS
YW5nZU9mZnNldCA9IDA7CisgICAgcmV0dXJuIHBhcmFtczsKK30KKworSW5kZXhDb252ZXJzaW9u
UGVyZlBhcmFtcyBJbmRleFJhbmdlT2Zmc2V0UGVyZkQzRDExUGFyYW1zKCkKK3sKKyAgICBJbmRl
eENvbnZlcnNpb25QZXJmUGFyYW1zIHBhcmFtczsKKyAgICBwYXJhbXMuZWdsUGFyYW1ldGVycyAg
ICA9IGVnbF9wbGF0Zm9ybTo6RDNEMTFfTlVMTCgpOworICAgIHBhcmFtcy5tYWpvclZlcnNpb24g
ICAgID0gMjsKKyAgICBwYXJhbXMubWlub3JWZXJzaW9uICAgICA9IDA7CisgICAgcGFyYW1zLndp
bmRvd1dpZHRoICAgICAgPSAyNTY7CisgICAgcGFyYW1zLndpbmRvd0hlaWdodCAgICAgPSAyNTY7
CisgICAgcGFyYW1zLml0ZXJhdGlvbnMgICAgICAgPSAxNjsKKyAgICBwYXJhbXMubnVtSW5kZXhU
cmlzICAgICA9IDUwMDAwOworICAgIHBhcmFtcy5pbmRleFJhbmdlT2Zmc2V0ID0gNjQ7CisgICAg
cmV0dXJuIHBhcmFtczsKK30KKworVEVTVF9QKEluZGV4Q29udmVyc2lvblBlcmZUZXN0LCBSdW4p
Cit7CisgICAgcnVuKCk7Cit9CisKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoSW5kZXhDb252ZXJz
aW9uUGVyZlRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgIEluZGV4Q29udmVyc2lvblBlcmZE
M0QxMVBhcmFtcygpLAorICAgICAgICAgICAgICAgICAgICAgICBJbmRleFJhbmdlT2Zmc2V0UGVy
ZkQzRDExUGFyYW1zKCkpOworCit9ICAvLyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0luZGV4RGF0YU1hbmFnZXJUZXN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0
cy9JbmRleERhdGFNYW5hZ2VyVGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvSW5kZXhEYXRhTWFuYWdlclRlc3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTc2IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gSW5kZXhEYXRh
TWFuYWdlclBlcmZUZXN0OgorLy8gICBQZXJmb3JtYW5jZSB0ZXN0IGZvciBpbmRleCBidWZmZXIg
bWFuYWdlbWVudC4KKy8vCisKKyNpbmNsdWRlICJBTkdMRVBlcmZUZXN0LmgiCisKKyNpbmNsdWRl
IDxnbW9jay9nbW9jay5oPgorCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL0J1ZmZl
ckQzRC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9JbmRleEJ1ZmZlci5oIgor
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9JbmRleERhdGFNYW5hZ2VyLmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSB0ZXN0aW5nOworCituYW1lc3BhY2UKK3sKKworY2xhc3MgTW9ja0luZGV4
QnVmZmVyIDogcHVibGljIHJ4OjpJbmRleEJ1ZmZlcgoreworICBwdWJsaWM6CisgICAgTW9ja0lu
ZGV4QnVmZmVyKHVuc2lnbmVkIGludCBidWZmZXJTaXplLCBHTGVudW0gaW5kZXhUeXBlKQorICAg
ICAgICA6IG1CdWZmZXJTaXplKGJ1ZmZlclNpemUpLAorICAgICAgICAgIG1JbmRleFR5cGUoaW5k
ZXhUeXBlKQorICAgIHsKKyAgICB9CisKKyAgICBNT0NLX01FVEhPRDMoaW5pdGlhbGl6ZSwgZ2w6
OkVycm9yKHVuc2lnbmVkIGludCwgR0xlbnVtLCBib29sKSk7CisgICAgTU9DS19NRVRIT0QzKG1h
cEJ1ZmZlciwgZ2w6OkVycm9yKHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50LCB2b2lkKiopKTsK
KyAgICBNT0NLX01FVEhPRDAodW5tYXBCdWZmZXIsIGdsOjpFcnJvcigpKTsKKyAgICBNT0NLX01F
VEhPRDAoZGlzY2FyZCwgZ2w6OkVycm9yKCkpOworICAgIE1PQ0tfTUVUSE9EMihzZXRTaXplLCBn
bDo6RXJyb3IodW5zaWduZWQgaW50LCBHTGVudW0pKTsKKworICAgIC8vIGlubGluZWQgZm9yIHNw
ZWVkCisgICAgR0xlbnVtIGdldEluZGV4VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1J
bmRleFR5cGU7IH0KKyAgICB1bnNpZ25lZCBpbnQgZ2V0QnVmZmVyU2l6ZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1CdWZmZXJTaXplOyB9CisKKyAgcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBp
bnQgbUJ1ZmZlclNpemU7CisgICAgR0xlbnVtIG1JbmRleFR5cGU7Cit9OworCitjbGFzcyBNb2Nr
QnVmZmVyRmFjdG9yeUQzRCA6IHB1YmxpYyByeDo6QnVmZmVyRmFjdG9yeUQzRAoreworICBwdWJs
aWM6CisgICAgTW9ja0J1ZmZlckZhY3RvcnlEM0QodW5zaWduZWQgaW50IGJ1ZmZlclNpemUsIEdM
ZW51bSBpbmRleFR5cGUpCisgICAgICAgIDogbUJ1ZmZlclNpemUoYnVmZmVyU2l6ZSksCisgICAg
ICAgICAgbUluZGV4VHlwZShpbmRleFR5cGUpCisgICAgeworICAgIH0KKworICAgIE1PQ0tfTUVU
SE9EMChjcmVhdGVWZXJ0ZXhCdWZmZXIsIHJ4OjpWZXJ0ZXhCdWZmZXIqKCkpOworICAgIE1PQ0tf
Q09OU1RfTUVUSE9EMShnZXRWZXJ0ZXhDb252ZXJzaW9uVHlwZSwgcng6OlZlcnRleENvbnZlcnNp
b25UeXBlKGdsOjpWZXJ0ZXhGb3JtYXRUeXBlKSk7CisgICAgTU9DS19DT05TVF9NRVRIT0QxKGdl
dFZlcnRleENvbXBvbmVudFR5cGUsIEdMZW51bShnbDo6VmVydGV4Rm9ybWF0VHlwZSkpOworICAg
IE1PQ0tfQ09OU1RfTUVUSE9EMyhnZXRWZXJ0ZXhTcGFjZVJlcXVpcmVkLAorICAgICAgICAgICAg
ICAgICAgICAgICBnbDo6RXJyb3JPclJlc3VsdDx1bnNpZ25lZCBpbnQ+KGNvbnN0IGdsOjpWZXJ0
ZXhBdHRyaWJ1dGUgJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkpKTsKKworICAgIC8vIERlcGVuZGVuY3kgaW5q
ZWN0aW9uCisgICAgcng6OkluZGV4QnVmZmVyKiBjcmVhdGVJbmRleEJ1ZmZlcigpIG92ZXJyaWRl
CisgICAgeworICAgICAgICByZXR1cm4gbmV3IE1vY2tJbmRleEJ1ZmZlcihtQnVmZmVyU2l6ZSwg
bUluZGV4VHlwZSk7CisgICAgfQorCisgIHByaXZhdGU6CisgICAgdW5zaWduZWQgaW50IG1CdWZm
ZXJTaXplOworICAgIEdMZW51bSBtSW5kZXhUeXBlOworfTsKKworY2xhc3MgTW9ja0J1ZmZlckQz
RCA6IHB1YmxpYyByeDo6QnVmZmVyRDNECit7CisgIHB1YmxpYzoKKyAgICBNb2NrQnVmZmVyRDNE
KHJ4OjpCdWZmZXJGYWN0b3J5RDNEICpmYWN0b3J5KQorICAgICAgICA6IEJ1ZmZlckQzRChmYWN0
b3J5KSwKKyAgICAgICAgICBtRGF0YSgpCisgICAgeworICAgIH0KKworICAgIC8vIEJ1ZmZlcklt
cGwKKyAgICBnbDo6RXJyb3Igc2V0RGF0YShHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkICpkYXRh
LCBzaXplX3Qgc2l6ZSwgR0xlbnVtKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgbURhdGEucmVz
aXplKHNpemUpOworICAgICAgICBpZiAoZGF0YSAmJiBzaXplID4gMCkKKyAgICAgICAgeworICAg
ICAgICAgICAgbWVtY3B5KCZtRGF0YVswXSwgZGF0YSwgc2l6ZSk7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgfQorCisgICAgTU9DS19NRVRI
T0Q0KHNldFN1YkRhdGEsIGdsOjpFcnJvcihHTGVudW0sIGNvbnN0IHZvaWQgKiwgc2l6ZV90LCBz
aXplX3QpKTsKKyAgICBNT0NLX01FVEhPRDQoY29weVN1YkRhdGEsIGdsOjpFcnJvcihCdWZmZXJJ
bXBsKiwgR0xpbnRwdHIsIEdMaW50cHRyLCBHTHNpemVpcHRyKSk7CisgICAgTU9DS19NRVRIT0Qy
KG1hcCwgZ2w6OkVycm9yKEdMZW51bSwgR0x2b2lkICoqKSk7CisgICAgTU9DS19NRVRIT0Q0KG1h
cFJhbmdlLCBnbDo6RXJyb3Ioc2l6ZV90LCBzaXplX3QsIEdMYml0ZmllbGQsIEdMdm9pZCAqKikp
OworICAgIE1PQ0tfTUVUSE9EMSh1bm1hcCwgZ2w6OkVycm9yKEdMYm9vbGVhbiAqKSk7CisKKyAg
ICAvLyBCdWZmZXJEM0QKKyAgICBNT0NLX01FVEhPRDAobWFya1RyYW5zZm9ybUZlZWRiYWNrVXNh
Z2UsIGdsOjpFcnJvcigpKTsKKworICAgIC8vIGlubGluZWQgZm9yIHNwZWVkCisgICAgYm9vbCBz
dXBwb3J0c0RpcmVjdEJpbmRpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHNpemVfdCBnZXRTaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbURhdGEuc2l6ZSgp
OyB9CisKKyAgICBnbDo6RXJyb3IgZ2V0RGF0YShjb25zdCB1aW50OF90ICoqb3V0RGF0YSkgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgICpvdXREYXRhID0gJm1EYXRhWzBdOworICAgICAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICB9CisKKyAgcHJpdmF0ZToKKyAgICBzdGQ6
OnZlY3Rvcjx1aW50OF90PiBtRGF0YTsKK307CisKK2NsYXNzIEluZGV4RGF0YU1hbmFnZXJQZXJm
VGVzdCA6IHB1YmxpYyBBTkdMRVBlcmZUZXN0Cit7CisgIHB1YmxpYzoKKyAgICBJbmRleERhdGFN
YW5hZ2VyUGVyZlRlc3QoKTsKKworICAgIHZvaWQgc3RlcCgpIG92ZXJyaWRlOworCisgICAgcng6
OkluZGV4RGF0YU1hbmFnZXIgbUluZGV4RGF0YU1hbmFnZXI7CisgICAgR0xzaXplaSBtSW5kZXhD
b3VudDsKKyAgICB1bnNpZ25lZCBpbnQgbUJ1ZmZlclNpemU7CisgICAgTW9ja0J1ZmZlckZhY3Rv
cnlEM0QgbU1vY2tGYWN0b3J5OworICAgIGdsOjpCdWZmZXIgbUluZGV4QnVmZmVyOworfTsKKwor
TW9ja0J1ZmZlckQzRCAqSW5pdE1vY2tCdWZmZXJEM0QoTW9ja0J1ZmZlckZhY3RvcnlEM0QgKm1v
Y2tGYWN0b3J5KQoreworICAgIE1vY2tCdWZmZXJEM0QgKm1vY2tCdWZmZXJEM0QgPSBuZXcgTW9j
a0J1ZmZlckQzRChtb2NrRmFjdG9yeSk7CisKKyAgICBFWFBFQ1RfQ0FMTCgqbW9ja0ZhY3Rvcnks
IGNyZWF0ZVZlcnRleEJ1ZmZlcigpKS5XaWxsT25jZShSZXR1cm4obnVsbHB0cikpLlJldGlyZXNP
blNhdHVyYXRpb24oKTsKKyAgICBtb2NrQnVmZmVyRDNELT5pbml0aWFsaXplU3RhdGljRGF0YSgp
OworCisgICAgcmV0dXJuIG1vY2tCdWZmZXJEM0Q7Cit9CisKK0luZGV4RGF0YU1hbmFnZXJQZXJm
VGVzdDo6SW5kZXhEYXRhTWFuYWdlclBlcmZUZXN0KCkKKyAgICA6IEFOR0xFUGVyZlRlc3QoIklu
ZGV4RGF0YU1hbmdlciIsICJfcnVuIiksCisgICAgICBtSW5kZXhEYXRhTWFuYWdlcigmbU1vY2tG
YWN0b3J5LCByeDo6UkVOREVSRVJfRDNEMTEpLAorICAgICAgbUluZGV4Q291bnQoNDAwMCksCisg
ICAgICBtQnVmZmVyU2l6ZShtSW5kZXhDb3VudCAqIHNpemVvZihHTHVzaG9ydCkpLAorICAgICAg
bU1vY2tGYWN0b3J5KG1CdWZmZXJTaXplLCBHTF9VTlNJR05FRF9TSE9SVCksCisgICAgICBtSW5k
ZXhCdWZmZXIoSW5pdE1vY2tCdWZmZXJEM0QoJm1Nb2NrRmFjdG9yeSksIDEpCit7CisgICAgc3Rk
Ojp2ZWN0b3I8R0x1c2hvcnQ+IGluZGV4RGF0YShtSW5kZXhDb3VudCk7CisgICAgZm9yIChHTHNp
emVpIGluZGV4ID0gMDsgaW5kZXggPCBtSW5kZXhDb3VudDsgKytpbmRleCkKKyAgICB7CisgICAg
ICAgIGluZGV4RGF0YVtpbmRleF0gPSBzdGF0aWNfY2FzdDxHTHVzaG9ydD4oaW5kZXgpOworICAg
IH0KKyAgICBtSW5kZXhCdWZmZXIuYnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsICZpbmRleERh
dGFbMF0sIGluZGV4RGF0YS5zaXplKCkgKiBzaXplb2YoR0x1c2hvcnQpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX1NUQVRJQ19EUkFXKTsKK30KKwordm9pZCBJbmRleERhdGFNYW5h
Z2VyUGVyZlRlc3Q6OnN0ZXAoKQoreworICAgIHJ4OjpUcmFuc2xhdGVkSW5kZXhEYXRhIHRyYW5z
bGF0ZWRJbmRleERhdGE7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaXRlcmF0aW9uID0gMDsgaXRl
cmF0aW9uIDwgMTAwOyArK2l0ZXJhdGlvbikKKyAgICB7CisgICAgICAgIG1JbmRleEJ1ZmZlci5n
ZXRJbmRleFJhbmdlKEdMX1VOU0lHTkVEX1NIT1JULCAwLCBtSW5kZXhDb3VudCwgZmFsc2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cmFuc2xhdGVkSW5kZXhEYXRhLmlu
ZGV4UmFuZ2UpOworICAgICAgICBtSW5kZXhEYXRhTWFuYWdlci5wcmVwYXJlSW5kZXhEYXRhKEdM
X1VOU0lHTkVEX1NIT1JULCBtSW5kZXhDb3VudCwgJm1JbmRleEJ1ZmZlciwgbnVsbHB0ciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHJhbnNsYXRlZEluZGV4
RGF0YSwgZmFsc2UpOworICAgIH0KK30KKworVEVTVF9GKEluZGV4RGF0YU1hbmFnZXJQZXJmVGVz
dCwgUnVuKQoreworICAgIHJ1bigpOworfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9JbnN0YW5jaW5nUGVyZi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvSW5zdGFuY2lu
Z1BlcmYuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9wZXJmX3Rlc3RzL0luc3RhbmNpbmdQZXJmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDM2NiBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEluc3RhbmNpbmdQZXJmOgorLy8gICBQZXJmb3JtYW5j
ZSB0ZXN0cyBmb3IgQU5HTEUgaW5zdGFuY2VkIGRyYXcgY2FsbHMuCisvLworCisjaW5jbHVkZSA8
Y21hdGg+CisjaW5jbHVkZSA8c3N0cmVhbT4KKworI2luY2x1ZGUgIkFOR0xFUGVyZlRlc3QuaCIK
KyNpbmNsdWRlICJNYXRyaXguaCIKKyNpbmNsdWRlICJyYW5kb21fdXRpbHMuaCIKKyNpbmNsdWRl
ICJzaGFkZXJfdXRpbHMuaCIKKyNpbmNsdWRlICJWZWN0b3IuaCIKKwordXNpbmcgbmFtZXNwYWNl
IGFuZ2xlOwordXNpbmcgbmFtZXNwYWNlIGVnbF9wbGF0Zm9ybTsKKworbmFtZXNwYWNlCit7CisK
K2Zsb2F0IEFuaW1hdGlvblNpZ25hbChmbG9hdCB0KQoreworICAgIGZsb2F0IGwgPSB0IC8gMi4w
ZjsKKyAgICBmbG9hdCBmID0gbCAtIHN0ZDo6Zmxvb3IobCk7CisgICAgcmV0dXJuIChmID4gMC41
ZiA/IDEuMGYgLSBmIDogZikgKiA0LjBmIC0gMS4wZjsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CitzaXplX3QgVmVjdG9yU2l6ZUJ5dGVzKGNvbnN0IHN0ZDo6dmVjdG9yPFQ+ICZ2ZWMpCit7
CisgICAgcmV0dXJuIHNpemVvZihUKSAqIHZlYy5zaXplKCk7Cit9CisKK1ZlY3RvcjMgUmFuZG9t
VmVjdG9yMyhSTkcgKnJuZykKK3sKKyAgICByZXR1cm4gVmVjdG9yMyhybmctPnJhbmRvbU5lZ2F0
aXZlT25lVG9PbmUoKSwgcm5nLT5yYW5kb21OZWdhdGl2ZU9uZVRvT25lKCksCisgICAgICAgICAg
ICAgICAgICAgcm5nLT5yYW5kb21OZWdhdGl2ZU9uZVRvT25lKCkpOworfQorCitzdHJ1Y3QgSW5z
dGFuY2luZ1BlcmZQYXJhbXMgZmluYWwgOiBwdWJsaWMgUmVuZGVyVGVzdFBhcmFtcworeworICAg
IC8vIENvbW1vbiBkZWZhdWx0IG9wdGlvbnMKKyAgICBJbnN0YW5jaW5nUGVyZlBhcmFtcygpCisg
ICAgeworICAgICAgICBtYWpvclZlcnNpb24gICAgICA9IDI7CisgICAgICAgIG1pbm9yVmVyc2lv
biAgICAgID0gMDsKKyAgICAgICAgd2luZG93V2lkdGggICAgICAgPSAyNTY7CisgICAgICAgIHdp
bmRvd0hlaWdodCAgICAgID0gMjU2OworICAgICAgICBpdGVyYXRpb25zICAgICAgICA9IDE7Cisg
ICAgICAgIHJ1blRpbWVTZWNvbmRzICAgID0gMTAuMDsKKyAgICAgICAgYW5pbWF0aW9uRW5hYmxl
ZCAgPSBmYWxzZTsKKyAgICAgICAgaW5zdGFuY2luZ0VuYWJsZWQgPSB0cnVlOworICAgIH0KKwor
ICAgIHN0ZDo6c3RyaW5nIHN1ZmZpeCgpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBz
dGQ6OnN0cmluZ3N0cmVhbSBzdHJzdHI7CisKKyAgICAgICAgc3Ryc3RyIDw8IFJlbmRlclRlc3RQ
YXJhbXM6OnN1ZmZpeCgpOworCisgICAgICAgIGlmICghaW5zdGFuY2luZ0VuYWJsZWQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN0cnN0ciA8PCAiX2JpbGxib2FyZHMiOworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIHN0cnN0ci5zdHIoKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBpbnQg
aXRlcmF0aW9uczsKKyAgICBkb3VibGUgcnVuVGltZVNlY29uZHM7CisgICAgYm9vbCBhbmltYXRp
b25FbmFibGVkOworICAgIGJvb2wgaW5zdGFuY2luZ0VuYWJsZWQ7Cit9OworCitzdGQ6Om9zdHJl
YW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZvcywgY29uc3QgSW5zdGFuY2luZ1BlcmZQYXJh
bXMgJnBhcmFtcykKK3sKKyAgICBvcyA8PCBwYXJhbXMuc3VmZml4KCkuc3Vic3RyKDEpOworICAg
IHJldHVybiBvczsKK30KKworY2xhc3MgSW5zdGFuY2luZ1BlcmZCZW5jaG1hcmsgOiBwdWJsaWMg
QU5HTEVSZW5kZXJUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMg
Ojp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8SW5zdGFuY2luZ1BlcmZQYXJhbXM+Cit7Cisg
IHB1YmxpYzoKKyAgICBJbnN0YW5jaW5nUGVyZkJlbmNobWFyaygpOworCisgICAgdm9pZCBpbml0
aWFsaXplQmVuY2htYXJrKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXN0cm95QmVuY2htYXJrKCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3QmVuY2htYXJrKCkgb3ZlcnJpZGU7CisKKyAgcHJpdmF0
ZToKKyAgICBHTHVpbnQgbVByb2dyYW07CisgICAgc3RkOjp2ZWN0b3I8R0x1aW50PiBtQnVmZmVy
czsKKyAgICBHTHVpbnQgbU51bVBvaW50czsKKyAgICBzdGQ6OnZlY3RvcjxWZWN0b3IzPiBtVHJh
bnNsYXRlRGF0YTsKKyAgICBzdGQ6OnZlY3RvcjxmbG9hdD4gbVNpemVEYXRhOworICAgIHN0ZDo6
dmVjdG9yPFZlY3RvcjM+IG1Db2xvckRhdGE7CisgICAgYW5nbGU6OlJORyBtUk5HOworfTsKKwor
SW5zdGFuY2luZ1BlcmZCZW5jaG1hcms6Okluc3RhbmNpbmdQZXJmQmVuY2htYXJrKCkKKyAgICA6
IEFOR0xFUmVuZGVyVGVzdCgiSW5zdGFuY2luZ1BlcmYiLCBHZXRQYXJhbSgpKSwgbVByb2dyYW0o
MCksIG1OdW1Qb2ludHMoNzUwMDApCit7CisgICAgbVJ1blRpbWVTZWNvbmRzID0gR2V0UGFyYW0o
KS5ydW5UaW1lU2Vjb25kczsKK30KKwordm9pZCBJbnN0YW5jaW5nUGVyZkJlbmNobWFyazo6aW5p
dGlhbGl6ZUJlbmNobWFyaygpCit7CisgICAgY29uc3QgYXV0byAmcGFyYW1zID0gR2V0UGFyYW0o
KTsKKworICAgIEFTU0VSVF9MVCgwdSwgcGFyYW1zLml0ZXJhdGlvbnMpOworCisgICAgY29uc3Qg
c3RkOjpzdHJpbmcgdnMgPQorICAgICAgICAiYXR0cmlidXRlIHZlYzIgYVBvc2l0aW9uO1xuIgor
ICAgICAgICAiYXR0cmlidXRlIHZlYzMgYVRyYW5zbGF0ZTtcbiIKKyAgICAgICAgImF0dHJpYnV0
ZSBmbG9hdCBhU2NhbGU7XG4iCisgICAgICAgICJhdHRyaWJ1dGUgdmVjMyBhQ29sb3I7XG4iCisg
ICAgICAgICJ1bmlmb3JtIG1hdDQgdVdvcmxkTWF0cml4O1xuIgorICAgICAgICAidW5pZm9ybSBt
YXQ0IHVQcm9qZWN0aW9uTWF0cml4O1xuIgorICAgICAgICAidmFyeWluZyB2ZWMzIHZDb2xvcjtc
biIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAg
dmVjNCBwb3NpdGlvbiA9IHVXb3JsZE1hdHJpeCAqIHZlYzQoYVRyYW5zbGF0ZSwgMS4wKTtcbiIK
KyAgICAgICAgIiAgICBwb3NpdGlvbi54eSArPSBhUG9zaXRpb24gKiBhU2NhbGU7XG4iCisgICAg
ICAgICIgICAgZ2xfUG9zaXRpb24gPSB1UHJvamVjdGlvbk1hdHJpeCAqIHBvc2l0aW9uO1xuIgor
ICAgICAgICAiICAgIHZDb2xvciA9IGFDb2xvcjtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBj
b25zdCBzdGQ6OnN0cmluZyBmcyA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtc
biIKKyAgICAgICAgInZhcnlpbmcgdmVjMyB2Q29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4o
KVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQodkNv
bG9yLCAxLjApO1xuIgorICAgICAgICAifVxuIjsKKworICAgIG1Qcm9ncmFtID0gQ29tcGlsZVBy
b2dyYW0odnMsIGZzKTsKKyAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsKKworICAgIGdsVXNl
UHJvZ3JhbShtUHJvZ3JhbSk7CisKKyAgICBnbENsZWFyQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwg
MC4wZik7CisKKyAgICBHTHVpbnQgYmFzZUluZGV4RGF0YVs2XSAgICAgPSB7MCwgMSwgMiwgMSwg
MywgMn07CisgICAgVmVjdG9yMiBiYXNlUG9zaXRpb25EYXRhWzRdID0ge1ZlY3RvcjIoLTEuMGYs
IDEuMGYpLCBWZWN0b3IyKDEuMGYsIDEuMGYpLCBWZWN0b3IyKC0xLjBmLCAtMS4wZiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjIoMS4wZiwgLTEuMGYpfTsKKwor
ICAgIHN0ZDo6dmVjdG9yPEdMdWludD4gaW5kZXhEYXRhOworICAgIHN0ZDo6dmVjdG9yPFZlY3Rv
cjI+IHBvc2l0aW9uRGF0YTsKKworICAgIGlmICghcGFyYW1zLmluc3RhbmNpbmdFbmFibGVkKQor
ICAgIHsKKyAgICAgICAgR0x1aW50IHBvaW50VmVydGV4U3RyaWRlID0gNDsKKyAgICAgICAgZm9y
IChHTHVpbnQgcG9pbnRJbmRleCA9IDA7IHBvaW50SW5kZXggPCBtTnVtUG9pbnRzOyArK3BvaW50
SW5kZXgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoR0x1aW50IGluZGV4SW5kZXggPSAw
OyBpbmRleEluZGV4IDwgNjsgKytpbmRleEluZGV4KQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGluZGV4RGF0YS5wdXNoX2JhY2soYmFzZUluZGV4RGF0YVtpbmRleEluZGV4XSArIHBv
aW50SW5kZXggKiBwb2ludFZlcnRleFN0cmlkZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIFZlY3RvcjMgcmFuZFZlYyA9IFJhbmRvbVZlY3RvcjMoJm1STkcpOworICAgICAgICAgICAg
Zm9yIChHTHVpbnQgdmVydGV4SW5kZXggPSAwOyB2ZXJ0ZXhJbmRleCA8IDQ7ICsrdmVydGV4SW5k
ZXgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcG9zaXRpb25EYXRhLnB1c2hfYmFj
ayhiYXNlUG9zaXRpb25EYXRhW3ZlcnRleEluZGV4XSk7CisgICAgICAgICAgICAgICAgbVRyYW5z
bGF0ZURhdGEucHVzaF9iYWNrKHJhbmRWZWMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgbVNpemVEYXRhLnJlc2l6ZShtTnVtUG9pbnRzICogNCwgMC4wMTJmKTsKKyAgICAg
ICAgbUNvbG9yRGF0YS5yZXNpemUobU51bVBvaW50cyAqIDQsIFZlY3RvcjMoMS4wZiwgMC4wZiwg
MC4wZikpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBmb3IgKEdMdWludCBpbmRl
eCA6IGJhc2VJbmRleERhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGluZGV4RGF0YS5wdXNo
X2JhY2soaW5kZXgpOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChjb25zdCBWZWN0b3IyICZw
b3NpdGlvbiA6IGJhc2VQb3NpdGlvbkRhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIHBvc2l0
aW9uRGF0YS5wdXNoX2JhY2socG9zaXRpb24pOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChH
THVpbnQgcG9pbnRJbmRleCA9IDA7IHBvaW50SW5kZXggPCBtTnVtUG9pbnRzOyArK3BvaW50SW5k
ZXgpCisgICAgICAgIHsKKyAgICAgICAgICAgIFZlY3RvcjMgcmFuZFZlYyA9IFJhbmRvbVZlY3Rv
cjMoJm1STkcpOworICAgICAgICAgICAgbVRyYW5zbGF0ZURhdGEucHVzaF9iYWNrKHJhbmRWZWMp
OworICAgICAgICB9CisKKyAgICAgICAgbVNpemVEYXRhLnJlc2l6ZShtTnVtUG9pbnRzLCAwLjAx
MmYpOworICAgICAgICBtQ29sb3JEYXRhLnJlc2l6ZShtTnVtUG9pbnRzLCBWZWN0b3IzKDEuMGYs
IDAuMGYsIDAuMGYpKTsKKyAgICB9CisKKyAgICBtQnVmZmVycy5yZXNpemUoNSwgMCk7CisgICAg
Z2xHZW5CdWZmZXJzKHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1CdWZmZXJzLnNpemUoKSksICZtQnVm
ZmVyc1swXSk7CisKKyAgICAvLyBJbmRleCBEYXRhCisgICAgZ2xCaW5kQnVmZmVyKEdMX0VMRU1F
TlRfQVJSQVlfQlVGRkVSLCBtQnVmZmVyc1swXSk7CisgICAgZ2xCdWZmZXJEYXRhKEdMX0VMRU1F
TlRfQVJSQVlfQlVGRkVSLCBWZWN0b3JTaXplQnl0ZXMoaW5kZXhEYXRhKSwgJmluZGV4RGF0YVsw
XSwKKyAgICAgICAgICAgICAgICAgR0xfU1RBVElDX0RSQVcpOworCisgICAgLy8gUG9zaXRpb24g
RGF0YQorICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1CdWZmZXJzWzFdKTsKKyAg
ICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBWZWN0b3JTaXplQnl0ZXMocG9zaXRpb25E
YXRhKSwgJnBvc2l0aW9uRGF0YVswXSwgR0xfU1RBVElDX0RSQVcpOworICAgIEdMaW50IHBvc2l0
aW9uTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAiYVBvc2l0aW9uIik7
CisgICAgQVNTRVJUX05FKC0xLCBwb3NpdGlvbkxvY2F0aW9uKTsKKyAgICBnbFZlcnRleEF0dHJp
YlBvaW50ZXIocG9zaXRpb25Mb2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCA4LCBudWxs
cHRyKTsKKyAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHBvc2l0aW9uTG9jYXRpb24pOwor
CisgICAgLy8gVHJhbnNsYXRlIERhdGEKKyAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVS
LCBtQnVmZmVyc1syXSk7CisgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgVmVjdG9y
U2l6ZUJ5dGVzKG1UcmFuc2xhdGVEYXRhKSwgJm1UcmFuc2xhdGVEYXRhWzBdLAorICAgICAgICAg
ICAgICAgICBHTF9TVEFUSUNfRFJBVyk7CisgICAgR0xpbnQgdHJhbnNsYXRlTG9jYXRpb24gPSBn
bEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAiYVRyYW5zbGF0ZSIpOworICAgIEFTU0VSVF9O
RSgtMSwgdHJhbnNsYXRlTG9jYXRpb24pOworICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcih0cmFu
c2xhdGVMb2NhdGlvbiwgMywgR0xfRkxPQVQsIEdMX0ZBTFNFLCAxMiwgbnVsbHB0cik7CisgICAg
Z2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh0cmFuc2xhdGVMb2NhdGlvbik7CisgICAgZ2xWZXJ0
ZXhBdHRyaWJEaXZpc29yQU5HTEUodHJhbnNsYXRlTG9jYXRpb24sIDEpOworCisgICAgLy8gU2Nh
bGUgRGF0YQorICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1CdWZmZXJzWzNdKTsK
KyAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBWZWN0b3JTaXplQnl0ZXMobVNpemVE
YXRhKSwgbnVsbHB0ciwgR0xfRFlOQU1JQ19EUkFXKTsKKyAgICBHTGludCBzY2FsZUxvY2F0aW9u
ID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgImFTY2FsZSIpOworICAgIEFTU0VSVF9O
RSgtMSwgc2NhbGVMb2NhdGlvbik7CisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHNjYWxlTG9j
YXRpb24sIDEsIEdMX0ZMT0FULCBHTF9GQUxTRSwgNCwgbnVsbHB0cik7CisgICAgZ2xFbmFibGVW
ZXJ0ZXhBdHRyaWJBcnJheShzY2FsZUxvY2F0aW9uKTsKKyAgICBnbFZlcnRleEF0dHJpYkRpdmlz
b3JBTkdMRShzY2FsZUxvY2F0aW9uLCAxKTsKKworICAgIC8vIENvbG9yIERhdGEKKyAgICBnbEJp
bmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtQnVmZmVyc1s0XSk7CisgICAgZ2xCdWZmZXJEYXRh
KEdMX0FSUkFZX0JVRkZFUiwgVmVjdG9yU2l6ZUJ5dGVzKG1Db2xvckRhdGEpLCBudWxscHRyLCBH
TF9EWU5BTUlDX0RSQVcpOworICAgIEdMaW50IGNvbG9yTG9jYXRpb24gPSBnbEdldEF0dHJpYkxv
Y2F0aW9uKG1Qcm9ncmFtLCAiYUNvbG9yIik7CisgICAgQVNTRVJUX05FKC0xLCBjb2xvckxvY2F0
aW9uKTsKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoY29sb3JMb2NhdGlvbiwgMywgR0xfRkxP
QVQsIEdMX0ZBTFNFLCAxMiwgbnVsbHB0cik7CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJh
eShjb2xvckxvY2F0aW9uKTsKKyAgICBnbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShjb2xvckxv
Y2F0aW9uLCAxKTsKKworICAgIC8vIFNldCB0aGUgdmlld3BvcnQKKyAgICBnbFZpZXdwb3J0KDAs
IDAsIGdldFdpbmRvdygpLT5nZXRXaWR0aCgpLCBnZXRXaW5kb3coKS0+Z2V0SGVpZ2h0KCkpOwor
CisgICAgLy8gSW5pdCBtYXRyaWNlcworICAgIEdMaW50IHdvcmxkTWF0cml4TG9jYXRpb24gPSBn
bEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInVXb3JsZE1hdHJpeCIpOworICAgIEFTU0VS
VF9ORSgtMSwgd29ybGRNYXRyaXhMb2NhdGlvbik7CisgICAgTWF0cml4NCB3b3JsZE1hdHJpeCA9
IE1hdHJpeDQ6OnRyYW5zbGF0ZShWZWN0b3IzKDAsIDAsIC0zLjBmKSk7CisgICAgd29ybGRNYXRy
aXggKj0gTWF0cml4NDo6cm90YXRlKDI1LjBmLCBWZWN0b3IzKDAuNmYsIDEuMGYsIDAuMGYpKTsK
KyAgICBnbFVuaWZvcm1NYXRyaXg0ZnYod29ybGRNYXRyaXhMb2NhdGlvbiwgMSwgR0xfRkFMU0Us
ICZ3b3JsZE1hdHJpeC5kYXRhWzBdKTsKKworICAgIEdMaW50IHByb2plY3Rpb25NYXRyaXhMb2Nh
dGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidVByb2plY3Rpb25NYXRyaXgi
KTsKKyAgICBBU1NFUlRfTkUoLTEsIHByb2plY3Rpb25NYXRyaXhMb2NhdGlvbik7CisgICAgZmxv
YXQgZm92ID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGdldFdpbmRvdygpLT5nZXRXaWR0
aCgpKSAvIHN0YXRpY19jYXN0PGZsb2F0PihnZXRXaW5kb3coKS0+Z2V0SGVpZ2h0KCkpOworICAg
IE1hdHJpeDQgcHJvamVjdGlvbk1hdHJpeCA9IE1hdHJpeDQ6OnBlcnNwZWN0aXZlKDYwLjBmLCBm
b3YsIDEuMGYsIDMwMC4wZik7CisgICAgZ2xVbmlmb3JtTWF0cml4NGZ2KHByb2plY3Rpb25NYXRy
aXhMb2NhdGlvbiwgMSwgR0xfRkFMU0UsICZwcm9qZWN0aW9uTWF0cml4LmRhdGFbMF0pOworCisg
ICAgZ2V0V2luZG93KCktPnNldFZpc2libGUodHJ1ZSk7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKK30KKwordm9pZCBJbnN0YW5jaW5nUGVyZkJlbmNobWFyazo6ZGVzdHJveUJlbmNobWFy
aygpCit7CisgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKKworICAgIGlmICghbUJ1ZmZl
cnMuZW1wdHkoKSkKKyAgICB7CisgICAgICAgIGdsRGVsZXRlQnVmZmVycyhzdGF0aWNfY2FzdDxH
THNpemVpPihtQnVmZmVycy5zaXplKCkpLCAmbUJ1ZmZlcnNbMF0pOworICAgICAgICBtQnVmZmVy
cy5jbGVhcigpOworICAgIH0KK30KKwordm9pZCBJbnN0YW5jaW5nUGVyZkJlbmNobWFyazo6ZHJh
d0JlbmNobWFyaygpCit7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAg
IGNvbnN0IGF1dG8gJnBhcmFtcyA9IEdldFBhcmFtKCk7CisKKyAgICAvLyBBbmltYXRpbm8gbWFr
ZXMgdGhlIHRlc3QgbW9yZSBpbnRlcmVzdGluZyB2aXN1YWxseSwgYnV0IGFsc28gZWF0cyB1cCBt
YW55IENQVSBjeWNsZXMuCisgICAgaWYgKHBhcmFtcy5hbmltYXRpb25FbmFibGVkKQorICAgIHsK
KyAgICAgICAgLy8gTm90IGltcGxlbWVudGVkIGZvciBiaWxsYm9hcmRzLgorICAgICAgICBBU1NF
UlQocGFyYW1zLmluc3RhbmNpbmdFbmFibGVkKTsKKworICAgICAgICBmbG9hdCB0aW1lID0gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KG1UaW1lci0+Z2V0RWxhcHNlZFRpbWUoKSk7CisKKyAgICAgICAgZm9y
IChzaXplX3QgcG9pbnRJbmRleCA9IDA7IHBvaW50SW5kZXggPCBtVHJhbnNsYXRlRGF0YS5zaXpl
KCk7ICsrcG9pbnRJbmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgVmVjdG9yMyAm
dHJhbnNsYXRlID0gbVRyYW5zbGF0ZURhdGFbcG9pbnRJbmRleF07CisKKyAgICAgICAgICAgIGZs
b2F0IHR4ID0gdHJhbnNsYXRlLnggKyB0aW1lOworICAgICAgICAgICAgZmxvYXQgdHkgPSB0cmFu
c2xhdGUueSArIHRpbWU7CisgICAgICAgICAgICBmbG9hdCB0eiA9IHRyYW5zbGF0ZS56ICsgdGlt
ZTsKKworICAgICAgICAgICAgZmxvYXQgc2NhbGUgICAgICAgICAgID0gQW5pbWF0aW9uU2lnbmFs
KHR4KSAqIDAuMDFmICsgMC4wMWY7CisgICAgICAgICAgICBtU2l6ZURhdGFbcG9pbnRJbmRleF0g
PSBzY2FsZTsKKworICAgICAgICAgICAgVmVjdG9yMyBjb2xvcjsKKyAgICAgICAgICAgIGNvbG9y
LnggPSBBbmltYXRpb25TaWduYWwodHgpICogMC41ZiArIDAuNWY7CisgICAgICAgICAgICBjb2xv
ci55ID0gQW5pbWF0aW9uU2lnbmFsKHR5KSAqIDAuNWYgKyAwLjVmOworICAgICAgICAgICAgY29s
b3IueiA9IEFuaW1hdGlvblNpZ25hbCh0eikgKiAwLjVmICsgMC41ZjsKKworICAgICAgICAgICAg
bUNvbG9yRGF0YVtwb2ludEluZGV4XSA9IGNvbG9yOworICAgICAgICB9CisgICAgfQorCisgICAg
Ly8gVXBkYXRlIHNjYWxlcyBhbmQgY29sb3JzLgorICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9C
VUZGRVIsIG1CdWZmZXJzWzNdKTsKKyAgICBnbEJ1ZmZlclN1YkRhdGEoR0xfQVJSQVlfQlVGRkVS
LCAwLCBWZWN0b3JTaXplQnl0ZXMobVNpemVEYXRhKSwgJm1TaXplRGF0YVswXSk7CisKKyAgICBn
bEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtQnVmZmVyc1s0XSk7CisgICAgZ2xCdWZmZXJT
dWJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgMCwgVmVjdG9yU2l6ZUJ5dGVzKG1Db2xvckRhdGEpLCAm
bUNvbG9yRGF0YVswXSk7CisKKyAgICAvLyBSZW5kZXIgdGhlIGluc3RhbmNlcy9iaWxsYm9hcmRz
LgorICAgIGlmIChwYXJhbXMuaW5zdGFuY2luZ0VuYWJsZWQpCisgICAgeworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGludCBpdCA9IDA7IGl0IDwgcGFyYW1zLml0ZXJhdGlvbnM7IGl0KyspCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0xfVFJJQU5H
TEVTLCA2LCBHTF9VTlNJR05FRF9JTlQsIG51bGxwdHIsIG1OdW1Qb2ludHMpOworICAgICAgICB9
CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGl0ID0g
MDsgaXQgPCBwYXJhbXMuaXRlcmF0aW9uczsgaXQrKykKKyAgICAgICAgeworICAgICAgICAgICAg
Z2xEcmF3RWxlbWVudHMoR0xfVFJJQU5HTEVTLCA2ICogbU51bVBvaW50cywgR0xfVU5TSUdORURf
SU5ULCBudWxscHRyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOworfQorCitJbnN0YW5jaW5nUGVyZlBhcmFtcyBJbnN0YW5jaW5nUGVyZkQzRDExUGFyYW1z
KCkKK3sKKyAgICBJbnN0YW5jaW5nUGVyZlBhcmFtcyBwYXJhbXM7CisgICAgcGFyYW1zLmVnbFBh
cmFtZXRlcnMgPSBEM0QxMSgpOworICAgIHJldHVybiBwYXJhbXM7Cit9CisKK0luc3RhbmNpbmdQ
ZXJmUGFyYW1zIEluc3RhbmNpbmdQZXJmRDNEOVBhcmFtcygpCit7CisgICAgSW5zdGFuY2luZ1Bl
cmZQYXJhbXMgcGFyYW1zOworICAgIHBhcmFtcy5lZ2xQYXJhbWV0ZXJzID0gRDNEOSgpOworICAg
IHJldHVybiBwYXJhbXM7Cit9CisKK0luc3RhbmNpbmdQZXJmUGFyYW1zIEluc3RhbmNpbmdQZXJm
T3BlbkdMUGFyYW1zKCkKK3sKKyAgICBJbnN0YW5jaW5nUGVyZlBhcmFtcyBwYXJhbXM7CisgICAg
cGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBPUEVOR0woKTsKKyAgICByZXR1cm4gcGFyYW1zOworfQor
CitURVNUX1AoSW5zdGFuY2luZ1BlcmZCZW5jaG1hcmssIFJ1bikKK3sKKyAgICBydW4oKTsKK30K
KworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChJbnN0YW5jaW5nUGVyZkJlbmNobWFyaywKKyAgICAg
ICAgICAgICAgICAgICAgICAgSW5zdGFuY2luZ1BlcmZEM0QxMVBhcmFtcygpLAorICAgICAgICAg
ICAgICAgICAgICAgICBJbnN0YW5jaW5nUGVyZkQzRDlQYXJhbXMoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgSW5zdGFuY2luZ1BlcmZPcGVuR0xQYXJhbXMoKSk7CisKK30gIC8vIGFub255bW91
cyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJm
X3Rlc3RzL0ludGVybGVhdmVkQXR0cmlidXRlRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvSW50ZXJsZWF2ZWRBdHRyaWJ1
dGVEYXRhLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvcGVyZl90ZXN0cy9JbnRlcmxlYXZlZEF0dHJpYnV0ZURhdGEuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMjMxIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEludGVybGVhdmVkQXR0cmli
dXRlRGF0YToKKy8vICAgUGVyZm9ybWFuY2UgdGVzdCBmb3IgZHJhd3MgdXNpbmcgaW50ZXJsZWF2
ZWQgYXR0cmlidXRlIGRhdGEgaW4gdmVydGV4IGJ1ZmZlcnMuCisvLworCisjaW5jbHVkZSA8c3N0
cmVhbT4KKworI2luY2x1ZGUgIkFOR0xFUGVyZlRlc3QuaCIKKyNpbmNsdWRlICJzaGFkZXJfdXRp
bHMuaCIKKwordXNpbmcgbmFtZXNwYWNlIGFuZ2xlOworCituYW1lc3BhY2UKK3sKKworc3RydWN0
IEludGVybGVhdmVkQXR0cmlidXRlRGF0YVBhcmFtcyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJUZXN0
UGFyYW1zCit7CisgICAgSW50ZXJsZWF2ZWRBdHRyaWJ1dGVEYXRhUGFyYW1zKCkKKyAgICB7Cisg
ICAgICAgIC8vIENvbW1vbiBkZWZhdWx0IHZhbHVlcworICAgICAgICBtYWpvclZlcnNpb24gPSAy
OworICAgICAgICBtaW5vclZlcnNpb24gPSAwOworICAgICAgICB3aW5kb3dXaWR0aCAgPSA1MTI7
CisgICAgICAgIHdpbmRvd0hlaWdodCA9IDUxMjsKKyAgICAgICAgbnVtU3ByaXRlcyAgID0gMzAw
MDsKKyAgICB9CisKKyAgICAvLyBzdGF0aWMgcGFyYW1ldGVycworICAgIHVuc2lnbmVkIGludCBu
dW1TcHJpdGVzOworfTsKKworc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAm
b3MsIGNvbnN0IEludGVybGVhdmVkQXR0cmlidXRlRGF0YVBhcmFtcyAmcGFyYW1zKQoreworICAg
IG9zIDw8IHBhcmFtcy5zdWZmaXgoKS5zdWJzdHIoMSk7CisKKyAgICBpZiAocGFyYW1zLmVnbFBh
cmFtZXRlcnMubWFqb3JWZXJzaW9uICE9IEVHTF9ET05UX0NBUkUpCisgICAgeworICAgICAgICBv
cyA8PCAiXyIgPDwgcGFyYW1zLmVnbFBhcmFtZXRlcnMubWFqb3JWZXJzaW9uIDw8ICJfIiA8PCBw
YXJhbXMuZWdsUGFyYW1ldGVycy5taW5vclZlcnNpb247CisgICAgfQorCisgICAgcmV0dXJuIG9z
OworfQorCitjbGFzcyBJbnRlcmxlYXZlZEF0dHJpYnV0ZURhdGFCZW5jaG1hcmsKKyAgICA6IHB1
YmxpYyBBTkdMRVJlbmRlclRlc3QsCisgICAgICBwdWJsaWMgOjp0ZXN0aW5nOjpXaXRoUGFyYW1J
bnRlcmZhY2U8SW50ZXJsZWF2ZWRBdHRyaWJ1dGVEYXRhUGFyYW1zPgoreworICBwdWJsaWM6Cisg
ICAgSW50ZXJsZWF2ZWRBdHRyaWJ1dGVEYXRhQmVuY2htYXJrKCk7CisKKyAgICB2b2lkIGluaXRp
YWxpemVCZW5jaG1hcmsoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlc3Ryb3lCZW5jaG1hcmsoKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRyYXdCZW5jaG1hcmsoKSBvdmVycmlkZTsKKworICBwcml2YXRl
OgorICAgIEdMdWludCBtUG9pbnRTcHJpdGVQcm9ncmFtOworICAgIEdMdWludCBtUG9zaXRpb25D
b2xvckJ1ZmZlclsyXTsKKworICAgIC8vIFRoZSBidWZmZXJzIGNvbnRhaW4gdHdvIGZsb2F0cyBh
bmQgMyB1bnNpZ25lZCBieXRlcyBwZXIgcG9pbnQgc3ByaXRlCisgICAgY29uc3Qgc2l6ZV90IG1C
eXRlc1BlclNwcml0ZSA9IDIgKiBzaXplb2YoZmxvYXQpICsgMzsKK307CisKK0ludGVybGVhdmVk
QXR0cmlidXRlRGF0YUJlbmNobWFyazo6SW50ZXJsZWF2ZWRBdHRyaWJ1dGVEYXRhQmVuY2htYXJr
KCkKKyAgICA6IEFOR0xFUmVuZGVyVGVzdCgiSW50ZXJsZWF2ZWRBdHRyaWJ1dGVEYXRhIiwgR2V0
UGFyYW0oKSksIG1Qb2ludFNwcml0ZVByb2dyYW0oMCkKK3sKK30KKwordm9pZCBJbnRlcmxlYXZl
ZEF0dHJpYnV0ZURhdGFCZW5jaG1hcms6OmluaXRpYWxpemVCZW5jaG1hcmsoKQoreworICAgIGNv
bnN0IGF1dG8gJnBhcmFtcyA9IEdldFBhcmFtKCk7CisKKyAgICAvLyBDb21waWxlIHBvaW50IHNw
cml0ZSBzaGFkZXJzCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgdnMgPQorICAgICAgICAiYXR0cmli
dXRlIHZlYzQgYVBvc2l0aW9uOyIKKyAgICAgICAgImF0dHJpYnV0ZSB2ZWM0IGFDb2xvcjsiCisg
ICAgICAgICJ2YXJ5aW5nIHZlYzQgdkNvbG9yOyIKKyAgICAgICAgInZvaWQgbWFpbigpIgorICAg
ICAgICAieyIKKyAgICAgICAgIiAgICBnbF9Qb2ludFNpemUgPSAyNS4wOyIKKyAgICAgICAgIiAg
ICBnbF9Qb3NpdGlvbiAgPSBhUG9zaXRpb247IgorICAgICAgICAiICAgIHZDb2xvciA9IGFDb2xv
cjsiCisgICAgICAgICJ9IjsKKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZzID0KKyAgICAgICAg
InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OyIKKyAgICAgICAgInZhcnlpbmcgdmVjNCB2Q29sb3I7
IgorICAgICAgICAidm9pZCBtYWluKCkiCisgICAgICAgICJ7IgorICAgICAgICAiICAgIGdsX0Zy
YWdDb2xvciA9IHZDb2xvcjsiCisgICAgICAgICJ9IjsKKworICAgIG1Qb2ludFNwcml0ZVByb2dy
YW0gPSBDb21waWxlUHJvZ3JhbSh2cywgZnMpOworICAgIEFTU0VSVF9ORSgwdSwgbVBvaW50U3By
aXRlUHJvZ3JhbSk7CisKKyAgICBnbENsZWFyQ29sb3IoMC4wZiwgMS4wZiwgMC4wZiwgMS4wZik7
CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IEFycmF5U2l6ZShtUG9zaXRpb25Db2xvckJ1
ZmZlcik7IGkrKykKKyAgICB7CisgICAgICAgIC8vIFNldCB1cCBpbml0aWFsIGRhdGEgZm9yIHBv
aW50c3ByaXRlIHBvc2l0aW9ucyBhbmQgY29sb3JzCisgICAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4
X3Q+IHBvc2l0aW9uQ29sb3JEYXRhKG1CeXRlc1BlclNwcml0ZSAqIHBhcmFtcy5udW1TcHJpdGVz
KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaiA9IDA7IGogPCBwYXJhbXMubnVtU3ByaXRl
czsgaisrKQorICAgICAgICB7CisgICAgICAgICAgICBmbG9hdCBwb2ludFNwcml0ZVggPQorICAg
ICAgICAgICAgICAgIChzdGF0aWNfY2FzdDxmbG9hdD4ocmFuZCgpICUgZ2V0V2luZG93KCktPmdl
dFdpZHRoKCkpIC8gZ2V0V2luZG93KCktPmdldFdpZHRoKCkpICoKKyAgICAgICAgICAgICAgICAg
ICAgMi4wZiAtIDEuMGY7CisgICAgICAgICAgICBmbG9hdCBwb2ludFNwcml0ZVkgPQorICAgICAg
ICAgICAgICAgIChzdGF0aWNfY2FzdDxmbG9hdD4ocmFuZCgpICUgZ2V0V2luZG93KCktPmdldEhl
aWdodCgpKSAvIGdldFdpbmRvdygpLT5nZXRIZWlnaHQoKSkgKgorICAgICAgICAgICAgICAgICAg
ICAyLjBmIC0gMS4wZjsKKyAgICAgICAgICAgIEdMdWJ5dGUgcG9pbnRTcHJpdGVSZWQgICA9IHN0
YXRpY19jYXN0PEdMdWJ5dGU+KHJhbmQoKSAlIDI1NSk7CisgICAgICAgICAgICBHTHVieXRlIHBv
aW50U3ByaXRlR3JlZW4gPSBzdGF0aWNfY2FzdDxHTHVieXRlPihyYW5kKCkgJSAyNTUpOworICAg
ICAgICAgICAgR0x1Ynl0ZSBwb2ludFNwcml0ZUJsdWUgID0gc3RhdGljX2Nhc3Q8R0x1Ynl0ZT4o
cmFuZCgpICUgMjU1KTsKKworICAgICAgICAgICAgLy8gQWRkIHBvc2l0aW9uIGRhdGEgZm9yIHRo
ZSBwb2ludHNwcml0ZQorICAgICAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQgKj4oCisg
ICAgICAgICAgICAgICAgJihwb3NpdGlvbkNvbG9yRGF0YVtqICogbUJ5dGVzUGVyU3ByaXRlICsg
MCAqIHNpemVvZihmbG9hdCkgKyAwXSkpID0KKyAgICAgICAgICAgICAgICBwb2ludFNwcml0ZVg7
ICAvLyBYCisgICAgICAgICAgICAqcmVpbnRlcnByZXRfY2FzdDxmbG9hdCAqPigKKyAgICAgICAg
ICAgICAgICAmKHBvc2l0aW9uQ29sb3JEYXRhW2ogKiBtQnl0ZXNQZXJTcHJpdGUgKyAxICogc2l6
ZW9mKGZsb2F0KSArIDBdKSkgPQorICAgICAgICAgICAgICAgIHBvaW50U3ByaXRlWTsgIC8vIFkK
KworICAgICAgICAgICAgLy8gQWRkIGNvbG9yIGRhdGEgZm9yIHRoZSBwb2ludHNwcml0ZQorICAg
ICAgICAgICAgcG9zaXRpb25Db2xvckRhdGFbaiAqIG1CeXRlc1BlclNwcml0ZSArIDIgKiBzaXpl
b2YoZmxvYXQpICsgMF0gPSBwb2ludFNwcml0ZVJlZDsgICAgLy8gUgorICAgICAgICAgICAgcG9z
aXRpb25Db2xvckRhdGFbaiAqIG1CeXRlc1BlclNwcml0ZSArIDIgKiBzaXplb2YoZmxvYXQpICsg
MV0gPSBwb2ludFNwcml0ZUdyZWVuOyAgLy8gRworICAgICAgICAgICAgcG9zaXRpb25Db2xvckRh
dGFbaiAqIG1CeXRlc1BlclNwcml0ZSArIDIgKiBzaXplb2YoZmxvYXQpICsgMl0gPSBwb2ludFNw
cml0ZUJsdWU7ICAgLy8gQgorICAgICAgICB9CisKKyAgICAgICAgLy8gR2VuZXJhdGUgdGhlIEdM
IGJ1ZmZlciB3aXRoIHRoZSBwb3NpdGlvbi9jb2xvciBkYXRhCisgICAgICAgIGdsR2VuQnVmZmVy
cygxLCAmbVBvc2l0aW9uQ29sb3JCdWZmZXJbaV0pOworICAgICAgICBnbEJpbmRCdWZmZXIoR0xf
QVJSQVlfQlVGRkVSLCBtUG9zaXRpb25Db2xvckJ1ZmZlcltpXSk7CisgICAgICAgIGdsQnVmZmVy
RGF0YShHTF9BUlJBWV9CVUZGRVIsIHBhcmFtcy5udW1TcHJpdGVzICogbUJ5dGVzUGVyU3ByaXRl
LCAmKHBvc2l0aW9uQ29sb3JEYXRhWzBdKSwKKyAgICAgICAgICAgICAgICAgICAgIEdMX1NUQVRJ
Q19EUkFXKTsKKyAgICB9CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKK30KKwordm9pZCBJ
bnRlcmxlYXZlZEF0dHJpYnV0ZURhdGFCZW5jaG1hcms6OmRlc3Ryb3lCZW5jaG1hcmsoKQorewor
ICAgIGdsRGVsZXRlUHJvZ3JhbShtUG9pbnRTcHJpdGVQcm9ncmFtKTsKKworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgQXJyYXlTaXplKG1Qb3NpdGlvbkNvbG9yQnVmZmVyKTsgaSsrKQorICAg
IHsKKyAgICAgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtUG9zaXRpb25Db2xvckJ1ZmZlcltpXSk7
CisgICAgfQorfQorCit2b2lkIEludGVybGVhdmVkQXR0cmlidXRlRGF0YUJlbmNobWFyazo6ZHJh
d0JlbmNobWFyaygpCit7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAg
IGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgMjA7IGsrKykKKyAgICB7CisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgQXJyYXlTaXplKG1Qb3NpdGlvbkNvbG9yQnVmZmVyKTsgaSsrKQorICAg
ICAgICB7CisgICAgICAgICAgICAvLyBGaXJzdGx5IGdldCB0aGUgYXR0cmlidXRlIGxvY2F0aW9u
cyBmb3IgdGhlIHByb2dyYW0KKyAgICAgICAgICAgIGdsVXNlUHJvZ3JhbShtUG9pbnRTcHJpdGVQ
cm9ncmFtKTsKKyAgICAgICAgICAgIEdMaW50IHBvc2l0aW9uTG9jYXRpb24gPSBnbEdldEF0dHJp
YkxvY2F0aW9uKG1Qb2ludFNwcml0ZVByb2dyYW0sICJhUG9zaXRpb24iKTsKKyAgICAgICAgICAg
IEFTU0VSVF9ORShwb3NpdGlvbkxvY2F0aW9uLCAtMSk7CisgICAgICAgICAgICBHTGludCBjb2xv
ckxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUG9pbnRTcHJpdGVQcm9ncmFtLCAiYUNv
bG9yIik7CisgICAgICAgICAgICBBU1NFUlRfTkUoY29sb3JMb2NhdGlvbiwgLTEpOworCisgICAg
ICAgICAgICAvLyBCaW5kIHRoZSBwb3NpdGlvbiBkYXRhIGZyb20gb25lIGJ1ZmZlcgorICAgICAg
ICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbVBvc2l0aW9uQ29sb3JCdWZmZXJb
aV0pOworICAgICAgICAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxvY2F0
aW9uKTsKKyAgICAgICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxvY2F0aW9u
LCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8R0xzaXplaT4obUJ5dGVzUGVyU3ByaXRlKSwgMCk7CisKKyAgICAgICAg
ICAgIC8vIEJ1dCBiaW5kIHRoZSBjb2xvciBkYXRhIGZyb20gdGhlIG90aGVyIGJ1ZmZlci4KKyAg
ICAgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgbVBvc2l0aW9uQ29sb3JCdWZmZXJbKGkgKyAxKSAlIEFycmF5U2l6ZShtUG9zaXRp
b25Db2xvckJ1ZmZlcildKTsKKyAgICAgICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXko
Y29sb3JMb2NhdGlvbik7CisgICAgICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoY29sb3JM
b2NhdGlvbiwgMywgR0xfVU5TSUdORURfQllURSwgR0xfVFJVRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHNpemVpPihtQnl0ZXNQZXJTcHJpdGUpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAq
PigyICogc2l6ZW9mKGZsb2F0KSkpOworCisgICAgICAgICAgICAvLyBUaGVuIGRyYXcgdGhlIGNv
bG9yZWQgcG9pbnRzcHJpdGVzCisgICAgICAgICAgICBnbERyYXdBcnJheXMoR0xfUE9JTlRTLCAw
LCBHZXRQYXJhbSgpLm51bVNwcml0ZXMpOworICAgICAgICAgICAgZ2xGbHVzaCgpOworCisgICAg
ICAgICAgICBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxvY2F0aW9uKTsKKyAg
ICAgICAgICAgIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGNvbG9yTG9jYXRpb24pOworICAg
ICAgICB9CisgICAgfQorCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9CisKK1RFU1RfUChJ
bnRlcmxlYXZlZEF0dHJpYnV0ZURhdGFCZW5jaG1hcmssIFJ1bikKK3sKKyAgICBydW4oKTsKK30K
KworSW50ZXJsZWF2ZWRBdHRyaWJ1dGVEYXRhUGFyYW1zIEQzRDExUGFyYW1zKCkKK3sKKyAgICBJ
bnRlcmxlYXZlZEF0dHJpYnV0ZURhdGFQYXJhbXMgcGFyYW1zOworICAgIHBhcmFtcy5lZ2xQYXJh
bWV0ZXJzID0gZWdsX3BsYXRmb3JtOjpEM0QxMSgpOworICAgIHJldHVybiBwYXJhbXM7Cit9CisK
K0ludGVybGVhdmVkQXR0cmlidXRlRGF0YVBhcmFtcyBEM0QxMV85XzNQYXJhbXMoKQoreworICAg
IEludGVybGVhdmVkQXR0cmlidXRlRGF0YVBhcmFtcyBwYXJhbXM7CisgICAgcGFyYW1zLmVnbFBh
cmFtZXRlcnMgPSBlZ2xfcGxhdGZvcm06OkQzRDExX0ZMOV8zKCk7CisgICAgcmV0dXJuIHBhcmFt
czsKK30KKworSW50ZXJsZWF2ZWRBdHRyaWJ1dGVEYXRhUGFyYW1zIEQzRDlQYXJhbXMoKQorewor
ICAgIEludGVybGVhdmVkQXR0cmlidXRlRGF0YVBhcmFtcyBwYXJhbXM7CisgICAgcGFyYW1zLmVn
bFBhcmFtZXRlcnMgPSBlZ2xfcGxhdGZvcm06OkQzRDkoKTsKKyAgICByZXR1cm4gcGFyYW1zOwor
fQorCitJbnRlcmxlYXZlZEF0dHJpYnV0ZURhdGFQYXJhbXMgT3BlbkdMUGFyYW1zKCkKK3sKKyAg
ICBJbnRlcmxlYXZlZEF0dHJpYnV0ZURhdGFQYXJhbXMgcGFyYW1zOworICAgIHBhcmFtcy5lZ2xQ
YXJhbWV0ZXJzID0gZWdsX3BsYXRmb3JtOjpPUEVOR0woKTsKKyAgICByZXR1cm4gcGFyYW1zOwor
fQorCitBTkdMRV9JTlNUQU5USUFURV9URVNUKEludGVybGVhdmVkQXR0cmlidXRlRGF0YUJlbmNo
bWFyaywKKyAgICAgICAgICAgICAgICAgICAgICAgRDNEMTFQYXJhbXMoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgRDNEMTFfOV8zUGFyYW1zKCksCisgICAgICAgICAgICAgICAgICAgICAgIEQz
RDlQYXJhbXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgT3BlbkdMUGFyYW1zKCkpOworCit9
ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvcGVyZl90ZXN0cy9Qb2ludFNwcml0ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL1BvaW50U3ByaXRlcy5jcHAJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZf
dGVzdHMvUG9pbnRTcHJpdGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIzMCBAQAor
Ly8KKy8vIENvcHlyaWdodCAoYykgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisvLyBQb2ludFNwcml0ZXNCZW5jaG1hcms6CisvLyAgIFBlcmZvcm1hbmNl
IHRlc3QgZm9yIEFOR0xFIHBvaW50IHNwcml0ZXMuCisvLworLy8KKyNpbmNsdWRlICJBTkdMRVBl
cmZUZXN0LmgiCisKKyNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlIDxzc3RyZWFtPgorCisj
aW5jbHVkZSAic2hhZGVyX3V0aWxzLmgiCisjaW5jbHVkZSAicmFuZG9tX3V0aWxzLmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNlCit7CisKK3N0cnVjdCBQb2ludFNwcml0
ZXNQYXJhbXMgZmluYWwgOiBwdWJsaWMgUmVuZGVyVGVzdFBhcmFtcworeworICAgIFBvaW50U3By
aXRlc1BhcmFtcygpCisgICAgeworICAgICAgICAvLyBDb21tb24gZGVmYXVsdCBwYXJhbXMKKyAg
ICAgICAgbWFqb3JWZXJzaW9uID0gMjsKKyAgICAgICAgbWlub3JWZXJzaW9uID0gMDsKKyAgICAg
ICAgd2luZG93V2lkdGggPSAxMjgwOworICAgICAgICB3aW5kb3dIZWlnaHQgPSA3MjA7CisgICAg
ICAgIGl0ZXJhdGlvbnMgICA9IDEwMDsKKyAgICAgICAgY291bnQgPSAxMDsKKyAgICAgICAgc2l6
ZSA9IDMuMGY7CisgICAgICAgIG51bVZhcnlpbmdzID0gMzsKKyAgICB9CisKKyAgICBzdGQ6OnN0
cmluZyBzdWZmaXgoKSBjb25zdCBvdmVycmlkZTsKKworICAgIHVuc2lnbmVkIGludCBjb3VudDsK
KyAgICBmbG9hdCBzaXplOworICAgIHVuc2lnbmVkIGludCBudW1WYXJ5aW5nczsKKworICAgIC8v
IHN0YXRpYyBwYXJhbWV0ZXJzCisgICAgdW5zaWduZWQgaW50IGl0ZXJhdGlvbnM7Cit9OworCitz
dGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZvcywgY29uc3QgUG9pbnRTcHJp
dGVzUGFyYW1zICZwYXJhbXMpCit7CisgICAgb3MgPDwgcGFyYW1zLnN1ZmZpeCgpLnN1YnN0cigx
KTsKKyAgICByZXR1cm4gb3M7Cit9CisKK2NsYXNzIFBvaW50U3ByaXRlc0JlbmNobWFyayA6IHB1
YmxpYyBBTkdMRVJlbmRlclRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJs
aWMgOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8UG9pbnRTcHJpdGVzUGFyYW1zPgorewor
ICBwdWJsaWM6CisgICAgUG9pbnRTcHJpdGVzQmVuY2htYXJrKCk7CisKKyAgICB2b2lkIGluaXRp
YWxpemVCZW5jaG1hcmsoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlc3Ryb3lCZW5jaG1hcmsoKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRyYXdCZW5jaG1hcmsoKSBvdmVycmlkZTsKKworICBwcml2YXRl
OgorICAgIEdMdWludCBtUHJvZ3JhbTsKKyAgICBHTHVpbnQgbUJ1ZmZlcjsKKyAgICBSTkcgbVJO
RzsKK307CisKK3N0ZDo6c3RyaW5nIFBvaW50U3ByaXRlc1BhcmFtczo6c3VmZml4KCkgY29uc3QK
K3sKKyAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzdHJzdHI7CisKKyAgICBzdHJzdHIgPDwgUmVuZGVy
VGVzdFBhcmFtczo6c3VmZml4KCkKKyAgICAgICAgICAgPDwgIl8iIDw8IGNvdW50IDw8ICJfIiA8
PCBzaXplIDw8ICJweCIKKyAgICAgICAgICAgPDwgIl8iIDw8IG51bVZhcnlpbmdzIDw8ICJ2YXJz
IjsKKworICAgIHJldHVybiBzdHJzdHIuc3RyKCk7Cit9CisKK1BvaW50U3ByaXRlc0JlbmNobWFy
azo6UG9pbnRTcHJpdGVzQmVuY2htYXJrKCkKKyAgICA6IEFOR0xFUmVuZGVyVGVzdCgiUG9pbnRT
cHJpdGVzIiwgR2V0UGFyYW0oKSksIG1STkcoMSkKK3sKK30KKwordm9pZCBQb2ludFNwcml0ZXNC
ZW5jaG1hcms6OmluaXRpYWxpemVCZW5jaG1hcmsoKQoreworICAgIGNvbnN0IGF1dG8gJnBhcmFt
cyA9IEdldFBhcmFtKCk7CisKKyAgICBBU1NFUlRfTFQoMHUsIHBhcmFtcy5pdGVyYXRpb25zKTsK
KworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHZzdHJzdHI7CisKKyAgICAvLyBWZXJpZnkgIm51bVZh
cnlpbmdzIiBpcyB3aXRoaW4gTUFYX1ZBUllJTkdTIGxpbWl0CisgICAgR0xpbnQgbWF4VmFyeWlu
Z3M7CisgICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19WRUNUT1JTLCAmbWF4VmFyeWlu
Z3MpOworCisgICAgaWYgKHBhcmFtcy5udW1WYXJ5aW5ncyA+IHN0YXRpY19jYXN0PHVuc2lnbmVk
IGludD4obWF4VmFyeWluZ3MpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJWYXJ5aW5nIGNv
dW50ICgiIDw8IHBhcmFtcy5udW1WYXJ5aW5ncyA8PCAiKSIKKyAgICAgICAgICAgICAgIDw8ICIg
ZXhjZWVkcyBtYXhpbXVtIHZhcnlpbmdzOiAiIDw8IG1heFZhcnlpbmdzIDw8IHN0ZDo6ZW5kbDsK
KyAgICB9CisKKyAgICB2c3Ryc3RyIDw8ICJhdHRyaWJ1dGUgdmVjMiB2UG9zaXRpb247XG4iCisg
ICAgICAgICAgICAgICAidW5pZm9ybSBmbG9hdCB1UG9pbnRTaXplO1xuIjsKKworICAgIGZvciAo
dW5zaWduZWQgaW50IHZhckNvdW50ID0gMDsgdmFyQ291bnQgPCBwYXJhbXMubnVtVmFyeWluZ3M7
IHZhckNvdW50KyspCisgICAgeworICAgICAgICB2c3Ryc3RyIDw8ICJ2YXJ5aW5nIHZlYzQgdiIg
PDwgdmFyQ291bnQgPDwgIjtcbiI7CisgICAgfQorCisgICAgdnN0cnN0ciA8PCAidm9pZCBtYWlu
KClcbiIKKyAgICAgICAgICAgICAgICJ7XG4iOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgdmFy
Q291bnQgPSAwOyB2YXJDb3VudCA8IHBhcmFtcy5udW1WYXJ5aW5nczsgdmFyQ291bnQrKykKKyAg
ICB7CisgICAgICAgIHZzdHJzdHIgPDwgIiAgICB2IiA8PCB2YXJDb3VudCA8PCAiID0gdmVjNCgx
LjApO1xuIjsKKyAgICB9CisKKyAgICB2c3Ryc3RyIDw8ICIgICAgZ2xfUG9zaXRpb24gPSB2ZWM0
KHZQb3NpdGlvbiwgMCwgMS4wKTtcbiIKKyAgICAgICAgICAgICAgICIgICAgZ2xfUG9pbnRTaXpl
ID0gdVBvaW50U2l6ZTtcbiIKKyAgICAgICAgICAgICAgICJ9IjsKKworICAgIHN0ZDo6c3RyaW5n
c3RyZWFtIGZzdHJzdHI7CisKKyAgICBmc3Ryc3RyIDw8ICJwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDtcbiI7CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCB2YXJDb3VudCA9IDA7IHZhckNvdW50IDwg
cGFyYW1zLm51bVZhcnlpbmdzOyB2YXJDb3VudCsrKQorICAgIHsKKyAgICAgICAgZnN0cnN0ciA8
PCAidmFyeWluZyB2ZWM0IHYiIDw8IHZhckNvdW50IDw8ICI7XG4iOworICAgIH0KKworICAgIGZz
dHJzdHIgPDwgInZvaWQgbWFpbigpXG4iCisgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAg
ICAgICAgIiAgICB2ZWM0IGNvbG9yT3V0ID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApO1xuIjsK
KworICAgIGZvciAodW5zaWduZWQgaW50IHZhckNvdW50ID0gMDsgdmFyQ291bnQgPCBwYXJhbXMu
bnVtVmFyeWluZ3M7IHZhckNvdW50KyspCisgICAgeworICAgICAgICBmc3Ryc3RyIDw8ICIgICAg
Y29sb3JPdXQuciArPSB2IiA8PCB2YXJDb3VudCA8PCAiLnI7XG4iOworICAgIH0KKworICAgIGZz
dHJzdHIgPDwgIiAgICBnbF9GcmFnQ29sb3IgPSBjb2xvck91dDtcbiIKKyAgICAgICAgICAgICAg
ICJ9XG4iOworCisgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2c3Ryc3RyLnN0cigpLCBm
c3Ryc3RyLnN0cigpKTsKKyAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsKKworICAgIC8vIFVz
ZSB0aGUgcHJvZ3JhbSBvYmplY3QKKyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworCisgICAg
Z2xDbGVhckNvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYpOworCisgICAgc3RkOjp2ZWN0b3I8
ZmxvYXQ+IHZlcnRleFBvc2l0aW9ucyhwYXJhbXMuY291bnQgKiAyKTsKKyAgICBmb3IgKHNpemVf
dCBwb2ludEluZGV4ID0gMDsgcG9pbnRJbmRleCA8IHZlcnRleFBvc2l0aW9ucy5zaXplKCk7ICsr
cG9pbnRJbmRleCkKKyAgICB7CisgICAgICAgIHZlcnRleFBvc2l0aW9uc1twb2ludEluZGV4XSA9
IG1STkcucmFuZG9tTmVnYXRpdmVPbmVUb09uZSgpOworICAgIH0KKworICAgIGdsR2VuQnVmZmVy
cygxLCAmbUJ1ZmZlcik7CisgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZl
cik7CisgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgdmVydGV4UG9zaXRpb25zLnNp
emUoKSAqIHNpemVvZihmbG9hdCksICZ2ZXJ0ZXhQb3NpdGlvbnNbMF0sIEdMX1NUQVRJQ19EUkFX
KTsKKworICAgIEdMaW50IHBvc2l0aW9uTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Q
cm9ncmFtLCAidlBvc2l0aW9uIik7CisgICAgQVNTRVJUX05FKC0xLCBwb3NpdGlvbkxvY2F0aW9u
KTsKKworICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxvY2F0aW9uLCAyLCBHTF9G
TE9BVCwgR0xfRkFMU0UsIDAsIG51bGxwdHIpOworICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJy
YXkocG9zaXRpb25Mb2NhdGlvbik7CisKKyAgICAvLyBTZXQgdGhlIHZpZXdwb3J0CisgICAgZ2xW
aWV3cG9ydCgwLCAwLCBnZXRXaW5kb3coKS0+Z2V0V2lkdGgoKSwgZ2V0V2luZG93KCktPmdldEhl
aWdodCgpKTsKKworICAgIEdMaW50IHBvaW50U2l6ZUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9j
YXRpb24obVByb2dyYW0sICJ1UG9pbnRTaXplIik7CisgICAgQVNTRVJUX05FKC0xLCBwb2ludFNp
emVMb2NhdGlvbik7CisKKyAgICBnbFVuaWZvcm0xZihwb2ludFNpemVMb2NhdGlvbiwgcGFyYW1z
LnNpemUpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9CisKK3ZvaWQgUG9pbnRTcHJp
dGVzQmVuY2htYXJrOjpkZXN0cm95QmVuY2htYXJrKCkKK3sKKyAgICBnbERlbGV0ZVByb2dyYW0o
bVByb2dyYW0pOworICAgIGdsRGVsZXRlQnVmZmVycygxLCAmbUJ1ZmZlcik7Cit9CisKK3ZvaWQg
UG9pbnRTcHJpdGVzQmVuY2htYXJrOjpkcmF3QmVuY2htYXJrKCkKK3sKKyAgICBnbENsZWFyKEdM
X0NPTE9SX0JVRkZFUl9CSVQpOworCisgICAgY29uc3QgYXV0byAmcGFyYW1zID0gR2V0UGFyYW0o
KTsKKworICAgIGZvciAodW5zaWduZWQgaW50IGl0ID0gMDsgaXQgPCBwYXJhbXMuaXRlcmF0aW9u
czsgaXQrKykKKyAgICB7CisgICAgICAgIC8vVE9ETyhqbWFkaWxsKTogSW5kZXhlZCBwb2ludCBy
ZW5kZXJpbmcuIEFOR0xFIGlzIGJhZCBhdCB0aGlzLgorICAgICAgICBnbERyYXdBcnJheXMoR0xf
UE9JTlRTLCAwLCBwYXJhbXMuY291bnQpOworICAgIH0KKworICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOworfQorCitQb2ludFNwcml0ZXNQYXJhbXMgRDNEMTFQYXJhbXMoKQoreworICAgIFBvaW50
U3ByaXRlc1BhcmFtcyBwYXJhbXM7CisgICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBlZ2xfcGxh
dGZvcm06OkQzRDExKCk7CisgICAgcmV0dXJuIHBhcmFtczsKK30KKworUG9pbnRTcHJpdGVzUGFy
YW1zIEQzRDlQYXJhbXMoKQoreworICAgIFBvaW50U3ByaXRlc1BhcmFtcyBwYXJhbXM7CisgICAg
cGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBlZ2xfcGxhdGZvcm06OkQzRDkoKTsKKyAgICByZXR1cm4g
cGFyYW1zOworfQorCitQb2ludFNwcml0ZXNQYXJhbXMgT3BlbkdMUGFyYW1zKCkKK3sKKyAgICBQ
b2ludFNwcml0ZXNQYXJhbXMgcGFyYW1zOworICAgIHBhcmFtcy5lZ2xQYXJhbWV0ZXJzID0gZWds
X3BsYXRmb3JtOjpPUEVOR0woKTsKKyAgICByZXR1cm4gcGFyYW1zOworfQorCit9IC8vIG5hbWVz
cGFjZQorCitURVNUX1AoUG9pbnRTcHJpdGVzQmVuY2htYXJrLCBSdW4pCit7CisgICAgcnVuKCk7
Cit9CisKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoUG9pbnRTcHJpdGVzQmVuY2htYXJrLAorICAg
ICAgICAgICAgICAgICAgICAgICBEM0QxMVBhcmFtcygpLCBEM0Q5UGFyYW1zKCksIE9wZW5HTFBh
cmFtcygpKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rl
c3RzL1RleFN1YkltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9UZXhTdWJJbWFnZS5jcHAJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvVGV4U3ViSW1hZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjk4IEBACisvLworLy8gQ29weXJpZ2h0IChj
KSAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFRl
eFN1YkltYWdlQmVuY2htYXJrOgorLy8gICBQZXJmb3JtYWNlIHRlc3QgZm9yIEFOR0xFIHRleHR1
cmUgdXBkYXRlcy4KKy8vCisKKyNpbmNsdWRlIDxzc3RyZWFtPgorCisjaW5jbHVkZSAiQU5HTEVQ
ZXJmVGVzdC5oIgorI2luY2x1ZGUgInNoYWRlcl91dGlscy5oIgorCit1c2luZyBuYW1lc3BhY2Ug
YW5nbGU7CisKK25hbWVzcGFjZQoreworCitzdHJ1Y3QgVGV4U3ViSW1hZ2VQYXJhbXMgZmluYWwg
OiBwdWJsaWMgUmVuZGVyVGVzdFBhcmFtcworeworICAgIFRleFN1YkltYWdlUGFyYW1zKCkKKyAg
ICB7CisgICAgICAgIC8vIENvbW1vbiBkZWZhdWx0IHBhcmFtZXRlcnMKKyAgICAgICAgbWFqb3JW
ZXJzaW9uID0gMjsKKyAgICAgICAgbWlub3JWZXJzaW9uID0gMDsKKyAgICAgICAgd2luZG93V2lk
dGggPSA1MTI7CisgICAgICAgIHdpbmRvd0hlaWdodCA9IDUxMjsKKworICAgICAgICBpbWFnZVdp
ZHRoID0gMTAyNDsKKyAgICAgICAgaW1hZ2VIZWlnaHQgPSAxMDI0OworICAgICAgICBzdWJJbWFn
ZVdpZHRoID0gNjQ7CisgICAgICAgIHN1YkltYWdlSGVpZ2h0ID0gNjQ7CisgICAgICAgIGl0ZXJh
dGlvbnMgICAgID0gOTsKKyAgICB9CisKKyAgICBzdGQ6OnN0cmluZyBzdWZmaXgoKSBjb25zdCBv
dmVycmlkZTsKKworICAgIC8vIFN0YXRpYyBwYXJhbWV0ZXJzCisgICAgaW50IGltYWdlV2lkdGg7
CisgICAgaW50IGltYWdlSGVpZ2h0OworICAgIGludCBzdWJJbWFnZVdpZHRoOworICAgIGludCBz
dWJJbWFnZUhlaWdodDsKKyAgICB1bnNpZ25lZCBpbnQgaXRlcmF0aW9uczsKK307CisKK3N0ZDo6
b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJm9zLCBjb25zdCBUZXhTdWJJbWFnZVBh
cmFtcyAmcGFyYW1zKQoreworICAgIG9zIDw8IHBhcmFtcy5zdWZmaXgoKS5zdWJzdHIoMSk7Cisg
ICAgcmV0dXJuIG9zOworfQorCitjbGFzcyBUZXhTdWJJbWFnZUJlbmNobWFyayA6IHB1YmxpYyBB
TkdMRVJlbmRlclRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyA6OnRl
c3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxUZXhTdWJJbWFnZVBhcmFtcz4KK3sKKyAgcHVibGlj
OgorICAgIFRleFN1YkltYWdlQmVuY2htYXJrKCk7CisKKyAgICB2b2lkIGluaXRpYWxpemVCZW5j
aG1hcmsoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlc3Ryb3lCZW5jaG1hcmsoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRyYXdCZW5jaG1hcmsoKSBvdmVycmlkZTsKKworICBwcml2YXRlOgorICAgIEdM
dWludCBjcmVhdGVUZXh0dXJlKCk7CisKKyAgICAvLyBIYW5kbGUgdG8gYSBwcm9ncmFtIG9iamVj
dAorICAgIEdMdWludCBtUHJvZ3JhbTsKKworICAgIC8vIEF0dHJpYnV0ZSBsb2NhdGlvbnMKKyAg
ICBHTGludCBtUG9zaXRpb25Mb2M7CisgICAgR0xpbnQgbVRleENvb3JkTG9jOworCisgICAgLy8g
U2FtcGxlciBsb2NhdGlvbgorICAgIEdMaW50IG1TYW1wbGVyTG9jOworCisgICAgLy8gVGV4dHVy
ZSBoYW5kbGUKKyAgICBHTHVpbnQgbVRleHR1cmU7CisKKyAgICAvLyBCdWZmZXIgaGFuZGxlCisg
ICAgR0x1aW50IG1WZXJ0ZXhCdWZmZXI7CisgICAgR0x1aW50IG1JbmRleEJ1ZmZlcjsKKworICAg
IEdMdWJ5dGUgKm1QaXhlbHM7Cit9OworCitzdGQ6OnN0cmluZyBUZXhTdWJJbWFnZVBhcmFtczo6
c3VmZml4KCkgY29uc3QKK3sKKyAgICAvLyBUT0RPKGptYWRpbGwpCisgICAgcmV0dXJuIFJlbmRl
clRlc3RQYXJhbXM6OnN1ZmZpeCgpOworfQorCitUZXhTdWJJbWFnZUJlbmNobWFyazo6VGV4U3Vi
SW1hZ2VCZW5jaG1hcmsoKQorICAgIDogQU5HTEVSZW5kZXJUZXN0KCJUZXhTdWJJbWFnZSIsIEdl
dFBhcmFtKCkpLAorICAgICAgbVByb2dyYW0oMCksCisgICAgICBtUG9zaXRpb25Mb2MoLTEpLAor
ICAgICAgbVRleENvb3JkTG9jKC0xKSwKKyAgICAgIG1TYW1wbGVyTG9jKC0xKSwKKyAgICAgIG1U
ZXh0dXJlKDApLAorICAgICAgbVZlcnRleEJ1ZmZlcigwKSwKKyAgICAgIG1JbmRleEJ1ZmZlcigw
KSwKKyAgICAgIG1QaXhlbHMobnVsbHB0cikKK3sKK30KKworR0x1aW50IFRleFN1YkltYWdlQmVu
Y2htYXJrOjpjcmVhdGVUZXh0dXJlKCkKK3sKKyAgICBjb25zdCBhdXRvICZwYXJhbXMgPSBHZXRQ
YXJhbSgpOworCisgICAgYXNzZXJ0KHBhcmFtcy5pdGVyYXRpb25zID4gMCk7CisKKyAgICAvLyBV
c2UgdGlnaHRseSBwYWNrZWQgZGF0YQorICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX0FMSUdO
TUVOVCwgMSk7CisKKyAgICAvLyBHZW5lcmF0ZSBhIHRleHR1cmUgb2JqZWN0CisgICAgR0x1aW50
IHRleHR1cmU7CisgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4dHVyZSk7CisKKyAgICAvLyBCaW5k
IHRoZSB0ZXh0dXJlIG9iamVjdAorICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4
dHVyZSk7CisKKyAgICBnbFRleFN0b3JhZ2UyREVYVChHTF9URVhUVVJFXzJELCAxLCBHTF9SR0JB
OCwgcGFyYW1zLmltYWdlV2lkdGgsIHBhcmFtcy5pbWFnZUhlaWdodCk7CisKKyAgICAvLyBTZXQg
dGhlIGZpbHRlcmluZyBtb2RlCisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdM
X1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisKKyAgICBy
ZXR1cm4gdGV4dHVyZTsKK30KKwordm9pZCBUZXhTdWJJbWFnZUJlbmNobWFyazo6aW5pdGlhbGl6
ZUJlbmNobWFyaygpCit7CisgICAgY29uc3QgYXV0byAmcGFyYW1zID0gR2V0UGFyYW0oKTsKKwor
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzID0gU0hBREVSX1NPVVJDRQorICAgICgKKyAgICAgICAg
YXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsKKyAgICAgICAgYXR0cmlidXRlIHZlYzIgYV90ZXhD
b29yZDsKKyAgICAgICAgdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7CisgICAgICAgIHZvaWQgbWFp
bigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsKKyAg
ICAgICAgICAgIHZfdGV4Q29vcmQgPSBhX3RleENvb3JkOworICAgICAgICB9CisgICAgKTsKKwor
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZzID0gU0hBREVSX1NPVVJDRQorICAgICgKKyAgICAgICAg
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleENvb3Jk
OworICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBzX3RleHR1cmU7CisgICAgICAgIHZvaWQgbWFp
bigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRChzX3Rl
eHR1cmUsIHZfdGV4Q29vcmQpOworICAgICAgICB9CisgICAgKTsKKworICAgIG1Qcm9ncmFtID0g
Q29tcGlsZVByb2dyYW0odnMsIGZzKTsKKyAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsKKwor
ICAgIC8vIEdldCB0aGUgYXR0cmlidXRlIGxvY2F0aW9ucworICAgIG1Qb3NpdGlvbkxvYyA9IGds
R2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJhX3Bvc2l0aW9uIik7CisgICAgbVRleENvb3Jk
TG9jID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgImFfdGV4Q29vcmQiKTsKKworICAg
IC8vIEdldCB0aGUgc2FtcGxlciBsb2NhdGlvbgorICAgIG1TYW1wbGVyTG9jID0gZ2xHZXRVbmlm
b3JtTG9jYXRpb24obVByb2dyYW0sICJzX3RleHR1cmUiKTsKKworICAgIC8vIEJ1aWxkIHRoZSB2
ZXJ0ZXggYnVmZmVyCisgICAgR0xmbG9hdCB2ZXJ0aWNlc1tdID0KKyAgICB7CisgICAgICAgIC0w
LjVmLCAwLjVmLCAwLjBmLCAgLy8gUG9zaXRpb24gMAorICAgICAgICAwLjBmLCAwLjBmLCAgICAg
ICAgLy8gVGV4Q29vcmQgMAorICAgICAgICAtMC41ZiwgLTAuNWYsIDAuMGYsICAvLyBQb3NpdGlv
biAxCisgICAgICAgIDAuMGYsIDEuMGYsICAgICAgICAvLyBUZXhDb29yZCAxCisgICAgICAgIDAu
NWYsIC0wLjVmLCAwLjBmLCAgLy8gUG9zaXRpb24gMgorICAgICAgICAxLjBmLCAxLjBmLCAgICAg
ICAgLy8gVGV4Q29vcmQgMgorICAgICAgICAwLjVmLCAwLjVmLCAwLjBmLCAgLy8gUG9zaXRpb24g
MworICAgICAgICAxLjBmLCAwLjBmICAgICAgICAgLy8gVGV4Q29vcmQgMworICAgIH07CisKKyAg
ICBnbEdlbkJ1ZmZlcnMoMSwgJm1WZXJ0ZXhCdWZmZXIpOworICAgIGdsQmluZEJ1ZmZlcihHTF9B
UlJBWV9CVUZGRVIsIG1WZXJ0ZXhCdWZmZXIpOworICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9C
VUZGRVIsIHNpemVvZih2ZXJ0aWNlcyksIHZlcnRpY2VzLCBHTF9TVEFUSUNfRFJBVyk7CisKKyAg
ICBHTHVzaG9ydCBpbmRpY2VzW10gPSB7IDAsIDEsIDIsIDAsIDIsIDMgfTsKKyAgICBnbEdlbkJ1
ZmZlcnMoMSwgJm1JbmRleEJ1ZmZlcik7CisgICAgZ2xCaW5kQnVmZmVyKEdMX0VMRU1FTlRfQVJS
QVlfQlVGRkVSLCBtSW5kZXhCdWZmZXIpOworICAgIGdsQnVmZmVyRGF0YShHTF9FTEVNRU5UX0FS
UkFZX0JVRkZFUiwgc2l6ZW9mKGluZGljZXMpLCBpbmRpY2VzLCBHTF9TVEFUSUNfRFJBVyk7CisK
KyAgICAvLyBMb2FkIHRoZSB0ZXh0dXJlCisgICAgbVRleHR1cmUgPSBjcmVhdGVUZXh0dXJlKCk7
CisKKyAgICBnbENsZWFyQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgMC4wZik7CisKKyAgICBtUGl4
ZWxzID0gbmV3IEdMdWJ5dGVbcGFyYW1zLnN1YkltYWdlV2lkdGggKiBwYXJhbXMuc3ViSW1hZ2VI
ZWlnaHQgKiA0XTsKKworICAgIC8vIEZpbGwgdGhlIHBpeGVscyBzdHJ1Y3R1cmUgd2l0aCByYW5k
b20gZGF0YToKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IHBhcmFtcy5zdWJJbWFnZUhlaWdodDsg
Kyt5KQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBwYXJhbXMuc3ViSW1hZ2VX
aWR0aDsgKyt4KQorICAgICAgICB7CisgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKHggKyAoeSAq
IHBhcmFtcy5zdWJJbWFnZVdpZHRoKSkgKiA0OworICAgICAgICAgICAgbVBpeGVsc1tvZmZzZXQg
KyAwXSA9IHJhbmQoKSAlIDI1NTsgLy8gUmVkCisgICAgICAgICAgICBtUGl4ZWxzW29mZnNldCAr
IDFdID0gcmFuZCgpICUgMjU1OyAvLyBHcmVlbgorICAgICAgICAgICAgbVBpeGVsc1tvZmZzZXQg
KyAyXSA9IHJhbmQoKSAlIDI1NTsgLy8gQmx1ZQorICAgICAgICAgICAgbVBpeGVsc1tvZmZzZXQg
KyAzXSA9IDI1NTsgLy8gQWxwaGEKKyAgICAgICAgfQorICAgIH0KKworICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOworfQorCit2b2lkIFRleFN1YkltYWdlQmVuY2htYXJrOjpkZXN0cm95QmVuY2ht
YXJrKCkKK3sKKyAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOworICAgIGdsRGVsZXRlQnVm
ZmVycygxLCAmbVZlcnRleEJ1ZmZlcik7CisgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtSW5kZXhC
dWZmZXIpOworICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0dXJlKTsKKyAgICBkZWxldGVb
XSBtUGl4ZWxzOworfQorCit2b2lkIFRleFN1YkltYWdlQmVuY2htYXJrOjpkcmF3QmVuY2htYXJr
KCkKK3sKKyAgICAvLyBTZXQgdGhlIHZpZXdwb3J0CisgICAgZ2xWaWV3cG9ydCgwLCAwLCBnZXRX
aW5kb3coKS0+Z2V0V2lkdGgoKSwgZ2V0V2luZG93KCktPmdldEhlaWdodCgpKTsKKworICAgIC8v
IENsZWFyIHRoZSBjb2xvciBidWZmZXIKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQp
OworCisgICAgLy8gVXNlIHRoZSBwcm9ncmFtIG9iamVjdAorICAgIGdsVXNlUHJvZ3JhbShtUHJv
Z3JhbSk7CisKKyAgICAvLyBCaW5kIHRoZSBidWZmZXJzCisgICAgZ2xCaW5kQnVmZmVyKEdMX0FS
UkFZX0JVRkZFUiwgbVZlcnRleEJ1ZmZlcik7CisgICAgZ2xCaW5kQnVmZmVyKEdMX0VMRU1FTlRf
QVJSQVlfQlVGRkVSLCBtSW5kZXhCdWZmZXIpOworCisgICAgLy8gTG9hZCB0aGUgdmVydGV4IHBv
c2l0aW9uCisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKG1Qb3NpdGlvbkxvYywgMywgR0xfRkxP
QVQsIEdMX0ZBTFNFLCA1ICogc2l6ZW9mKEdMZmxvYXQpLCAwKTsKKyAgICAvLyBMb2FkIHRoZSB0
ZXh0dXJlIGNvb3JkaW5hdGUKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIobVRleENvb3JkTG9j
LCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDUgKiBzaXplb2YoR0xmbG9hdCksIChHTHZvaWQqKSgz
ICogc2l6ZW9mKEdMZmxvYXQpKSk7CisKKyAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1Q
b3NpdGlvbkxvYyk7CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtVGV4Q29vcmRMb2Mp
OworCisgICAgLy8gQmluZCB0aGUgdGV4dHVyZQorICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhU
VVJFMCk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZSk7CisKKyAg
ICAvLyBTZXQgdGhlIHRleHR1cmUgc2FtcGxlciB0byB0ZXh0dXJlIHVuaXQgdG8gMAorICAgIGds
VW5pZm9ybTFpKG1TYW1wbGVyTG9jLCAwKTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwor
CisgICAgY29uc3QgYXV0byAmcGFyYW1zID0gR2V0UGFyYW0oKTsKKworICAgIGZvciAodW5zaWdu
ZWQgaW50IGl0ZXJhdGlvbiA9IDA7IGl0ZXJhdGlvbiA8IHBhcmFtcy5pdGVyYXRpb25zOyArK2l0
ZXJhdGlvbikKKyAgICB7CisgICAgICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAw
LAorICAgICAgICAgICAgICAgICAgICAgICAgcmFuZCgpICUgKHBhcmFtcy5pbWFnZVdpZHRoIC0g
cGFyYW1zLnN1YkltYWdlV2lkdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgcmFuZCgpICUg
KHBhcmFtcy5pbWFnZUhlaWdodCAtIHBhcmFtcy5zdWJJbWFnZUhlaWdodCksCisgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJhbXMuc3ViSW1hZ2VXaWR0aCwgcGFyYW1zLnN1YkltYWdlSGVpZ2h0
LAorICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbVBp
eGVscyk7CisKKyAgICAgICAgZ2xEcmF3RWxlbWVudHMoR0xfVFJJQU5HTEVTLCA2LCBHTF9VTlNJ
R05FRF9TSE9SVCwgMCk7CisgICAgfQorCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9CisK
K1RleFN1YkltYWdlUGFyYW1zIEQzRDExUGFyYW1zKCkKK3sKKyAgICBUZXhTdWJJbWFnZVBhcmFt
cyBwYXJhbXM7CisgICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBlZ2xfcGxhdGZvcm06OkQzRDEx
KCk7CisgICAgcmV0dXJuIHBhcmFtczsKK30KKworVGV4U3ViSW1hZ2VQYXJhbXMgRDNEOVBhcmFt
cygpCit7CisgICAgVGV4U3ViSW1hZ2VQYXJhbXMgcGFyYW1zOworICAgIHBhcmFtcy5lZ2xQYXJh
bWV0ZXJzID0gZWdsX3BsYXRmb3JtOjpEM0Q5KCk7CisgICAgcmV0dXJuIHBhcmFtczsKK30KKwor
VGV4U3ViSW1hZ2VQYXJhbXMgT3BlbkdMUGFyYW1zKCkKK3sKKyAgICBUZXhTdWJJbWFnZVBhcmFt
cyBwYXJhbXM7CisgICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBlZ2xfcGxhdGZvcm06Ok9QRU5H
TCgpOworICAgIHJldHVybiBwYXJhbXM7Cit9CisKK30gLy8gbmFtZXNwYWNlCisKK1RFU1RfUChU
ZXhTdWJJbWFnZUJlbmNobWFyaywgUnVuKQoreworICAgIHJ1bigpOworfQorCitBTkdMRV9JTlNU
QU5USUFURV9URVNUKFRleFN1YkltYWdlQmVuY2htYXJrLAorICAgICAgICAgICAgICAgICAgICAg
ICBEM0QxMVBhcmFtcygpLCBEM0Q5UGFyYW1zKCksIE9wZW5HTFBhcmFtcygpKTsKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL1RleHR1cmVTYW1wbGlu
Zy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Bl
cmZfdGVzdHMvVGV4dHVyZVNhbXBsaW5nLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9UZXh0dXJlU2FtcGxpbmcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjg4IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE1
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFRleHR1cmVT
YW1wbGluZ0JlbmNobWFyazoKKy8vICAgUGVyZm9ybWFuY2UgdGVzdCBmb3IgdGV4dHVyZSBzYW1w
bGluZy4gVGhlIHRlc3QgZ2VuZXJhdGVzIGEgdGV4dHVyZSBjb250YWluaW5nIHJhbmRvbSBkYXRh
CisvLyAgIGFuZCB0aGVuIGJsdXJzIGl0IGluIGEgZnJhZ21lbnQgc2hhZGVyIHVzaW5nIG5lYXJl
c3QgbmVpZ2hib3Igc2FtcGxpbmcuIFRoZSB0ZXN0IGlzCisvLyAgIHNwZWNpZmljYWxseSBkZXNp
Z25lZCB0byB0ZXN0IG92ZXJoZWFkIG9mIEdMU0wncyBidWlsdGluIHRleHR1cmUqKCkgZnVuY3Rp
b25zIHRoYXQgbWF5IHJlc3VsdAorLy8gICBmcm9tIGhvdyBBTkdMRSB0cmFuc2xhdGVzIHRoZW0g
b24gZWFjaCBiYWNrZW5kLgorLy8KKworI2luY2x1ZGUgIkFOR0xFUGVyZlRlc3QuaCIKKworI2lu
Y2x1ZGUgPGlvc3RyZWFtPgorI2luY2x1ZGUgPHJhbmRvbT4KKyNpbmNsdWRlIDxzc3RyZWFtPgor
CisjaW5jbHVkZSAic2hhZGVyX3V0aWxzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKwor
bmFtZXNwYWNlCit7CisKK3N0cnVjdCBUZXh0dXJlU2FtcGxpbmdQYXJhbXMgZmluYWwgOiBwdWJs
aWMgUmVuZGVyVGVzdFBhcmFtcworeworICAgIFRleHR1cmVTYW1wbGluZ1BhcmFtcygpCisgICAg
eworICAgICAgICAvLyBDb21tb24gZGVmYXVsdCBwYXJhbXMKKyAgICAgICAgbWFqb3JWZXJzaW9u
ID0gMjsKKyAgICAgICAgbWlub3JWZXJzaW9uID0gMDsKKyAgICAgICAgd2luZG93V2lkdGggID0g
NzIwOworICAgICAgICB3aW5kb3dIZWlnaHQgPSA3MjA7CisgICAgICAgIGl0ZXJhdGlvbnMgICA9
IDQ7CisKKyAgICAgICAgbnVtU2FtcGxlcnMgPSAyOworICAgICAgICB0ZXh0dXJlU2l6ZSA9IDMy
OworICAgICAgICBrZXJuZWxTaXplICA9IDM7CisgICAgfQorCisgICAgc3RkOjpzdHJpbmcgc3Vm
Zml4KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdW5zaWduZWQgaW50IG51bVNhbXBsZXJzOworICAg
IHVuc2lnbmVkIGludCB0ZXh0dXJlU2l6ZTsKKyAgICB1bnNpZ25lZCBpbnQga2VybmVsU2l6ZTsK
KworICAgIC8vIHN0YXRpYyBwYXJhbWV0ZXJzCisgICAgdW5zaWduZWQgaW50IGl0ZXJhdGlvbnM7
Cit9OworCitzdGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZvcywgY29uc3Qg
VGV4dHVyZVNhbXBsaW5nUGFyYW1zICZwYXJhbXMpCit7CisgICAgb3MgPDwgcGFyYW1zLnN1ZmZp
eCgpLnN1YnN0cigxKTsKKyAgICByZXR1cm4gb3M7Cit9CisKK3N0ZDo6c3RyaW5nIFRleHR1cmVT
YW1wbGluZ1BhcmFtczo6c3VmZml4KCkgY29uc3QKK3sKKyAgICBzdGQ6OnN0cmluZ3N0cmVhbSBz
dHJzdHI7CisKKyAgICBzdHJzdHIgPDwgUmVuZGVyVGVzdFBhcmFtczo6c3VmZml4KCkgPDwgIl8i
IDw8IG51bVNhbXBsZXJzIDw8ICJzYW1wbGVycyI7CisKKyAgICByZXR1cm4gc3Ryc3RyLnN0cigp
OworfQorCitjbGFzcyBUZXh0dXJlU2FtcGxpbmdCZW5jaG1hcmsgOiBwdWJsaWMgQU5HTEVSZW5k
ZXJUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIDo6dGVzdGlu
Zzo6V2l0aFBhcmFtSW50ZXJmYWNlPFRleHR1cmVTYW1wbGluZ1BhcmFtcz4KK3sKKyAgcHVibGlj
OgorICAgIFRleHR1cmVTYW1wbGluZ0JlbmNobWFyaygpOworCisgICAgdm9pZCBpbml0aWFsaXpl
QmVuY2htYXJrKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXN0cm95QmVuY2htYXJrKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkcmF3QmVuY2htYXJrKCkgb3ZlcnJpZGU7CisKKyAgcHJpdmF0ZToKKyAg
ICB2b2lkIGluaXRTaGFkZXJzKCk7CisgICAgdm9pZCBpbml0VmVydGV4QnVmZmVyKCk7CisgICAg
dm9pZCBpbml0VGV4dHVyZXMoKTsKKworICAgIEdMdWludCBtUHJvZ3JhbTsKKyAgICBHTHVpbnQg
bUJ1ZmZlcjsKKyAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IG1UZXh0dXJlczsKK307CisKK1RleHR1
cmVTYW1wbGluZ0JlbmNobWFyazo6VGV4dHVyZVNhbXBsaW5nQmVuY2htYXJrKCkKKyAgICA6IEFO
R0xFUmVuZGVyVGVzdCgiVGV4dHVyZVNhbXBsaW5nIiwgR2V0UGFyYW0oKSksIG1Qcm9ncmFtKDB1
KSwgbUJ1ZmZlcigwdSkKK3sKK30KKwordm9pZCBUZXh0dXJlU2FtcGxpbmdCZW5jaG1hcms6Omlu
aXRpYWxpemVCZW5jaG1hcmsoKQoreworICAgIGNvbnN0IGF1dG8gJnBhcmFtcyA9IEdldFBhcmFt
KCk7CisKKyAgICBBU1NFUlRfTFQoMHUsIHBhcmFtcy5pdGVyYXRpb25zKTsKKworICAgIC8vIFZl
cmlmeSAibnVtU2FtcGxlcnMiIGlzIHdpdGhpbiBNQVhfVEVYVFVSRV9JTUFHRV9VTklUUyBsaW1p
dAorICAgIEdMaW50IG1heFRleHR1cmVJbWFnZVVuaXRzOworICAgIGdsR2V0SW50ZWdlcnYoR0xf
TUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMsICZtYXhUZXh0dXJlSW1hZ2VVbml0cyk7CisKKyAgICBp
ZiAocGFyYW1zLm51bVNhbXBsZXJzID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihtYXhUZXh0
dXJlSW1hZ2VVbml0cykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNhbXBsZXIgY291bnQg
KCIgPDwgcGFyYW1zLm51bVNhbXBsZXJzIDw8ICIpIgorICAgICAgICAgICAgICAgPDwgIiBleGNl
ZWRzIG1heGltdW0gdGV4dHVyZSBjb3VudDogIiA8PCBtYXhUZXh0dXJlSW1hZ2VVbml0cyA8PCBz
dGQ6OmVuZGw7CisgICAgfQorICAgIGluaXRTaGFkZXJzKCk7CisgICAgaW5pdFZlcnRleEJ1ZmZl
cigpOworICAgIGluaXRUZXh0dXJlcygpOworICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAw
LjBmLCAwLjBmKTsKKyAgICBnbFZpZXdwb3J0KDAsIDAsIGdldFdpbmRvdygpLT5nZXRXaWR0aCgp
LCBnZXRXaW5kb3coKS0+Z2V0SGVpZ2h0KCkpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
Cit9CisKK3ZvaWQgVGV4dHVyZVNhbXBsaW5nQmVuY2htYXJrOjppbml0U2hhZGVycygpCit7Cisg
ICAgY29uc3QgYXV0byAmcGFyYW1zID0gR2V0UGFyYW0oKTsKKworICAgIHN0ZDo6c3RyaW5nc3Ry
ZWFtIHZzdHJzdHI7CisgICAgdnN0cnN0ciA8PCAiYXR0cmlidXRlIHZlYzIgYVBvc2l0aW9uO1xu
IgorICAgICAgICAgICAgICAgInZhcnlpbmcgdmVjMiB2VGV4dHVyZUNvb3JkaW5hdGVzO1xuIgor
ICAgICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICAgICAgICAie1xuIgorICAg
ICAgICAgICAgICAgIiAgICB2VGV4dHVyZUNvb3JkaW5hdGVzID0gKGFQb3NpdGlvbiArIHZlYzIo
MS4wKSkgKiAwLjU7XG4iCisgICAgICAgICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gdmVjNChh
UG9zaXRpb24sIDAsIDEuMCk7XG4iCisgICAgICAgICAgICAgICAifSI7CisKKyAgICBzdGQ6OnN0
cmluZ3N0cmVhbSBmc3Ryc3RyOworICAgIGZzdHJzdHIgPDwgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0O1xuIgorICAgICAgICAgICAgICAgInZhcnlpbmcgdmVjMiB2VGV4dHVyZUNvb3JkaW5hdGVz
O1xuIjsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBjb3VudCA9IDA7IGNvdW50IDwgcGFyYW1zLm51
bVNhbXBsZXJzOyBjb3VudCsrKQorICAgIHsKKyAgICAgICAgZnN0cnN0ciA8PCAidW5pZm9ybSBz
YW1wbGVyMkQgdVNhbXBsZXIiIDw8IGNvdW50IDw8ICI7XG4iOworICAgIH0KKyAgICBmc3Ryc3Ry
IDw8ICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAg
ICIgICAgY29uc3QgZmxvYXQgaW52ZXJzZVRleHR1cmVTaXplID0gMS4wIC8gIgorICAgICAgICAg
ICAgPDwgcGFyYW1zLnRleHR1cmVTaXplIDw8ICIuMDtcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiICAgIHZlYzQgY29sb3JPdXQgPSB2ZWM0KDAuMCwgMC4wLCAwLjAs
IDEuMCk7XG4iOworICAgIGZvciAodW5zaWduZWQgaW50IGNvdW50ID0gMDsgY291bnQgPCBwYXJh
bXMubnVtU2FtcGxlcnM7IGNvdW50KyspCisgICAgeworICAgICAgICBmc3Ryc3RyIDw8ICIgICAg
Zm9yIChpbnQgeCA9IDA7IHggPCAiIDw8IHBhcmFtcy5rZXJuZWxTaXplIDw8ICI7ICsreClcbiIK
KyAgICAgICAgICAgICAgICAgICAiICAgIHtcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAg
ICBmb3IgKGludCB5ID0gMDsgeSA8ICIgPDwgcGFyYW1zLmtlcm5lbFNpemUgPDwgIjsgKyt5KVxu
IgorICAgICAgICAgICAgICAgICAgICIgICAgICAgIHtcbiIKKyAgICAgICAgICAgICAgICAgICAi
ICAgICAgICAgICAgY29sb3JPdXQgKz0gdGV4dHVyZTJEKHVTYW1wbGVyIiA8PCBjb3VudAorICAg
ICAgICAgICAgICAgICAgIDw8ICIsIHZUZXh0dXJlQ29vcmRpbmF0ZXMgKyB2ZWMyKHgsIHkpICog
aW52ZXJzZVRleHR1cmVTaXplKSAqIDAuMTtcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAg
ICB9XG4iCisgICAgICAgICAgICAgICAgICAgIiAgICB9XG4iOworICAgIH0KKyAgICBmc3Ryc3Ry
IDw8ICIgICAgZ2xfRnJhZ0NvbG9yID0gY29sb3JPdXQ7XG4iCisgICAgICAgICAgICAgICAifVxu
IjsKKworICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odnN0cnN0ci5zdHIoKSwgZnN0cnN0
ci5zdHIoKSk7CisgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7CisKKyAgICAvLyBVc2UgdGhl
IHByb2dyYW0gb2JqZWN0CisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKK30KKwordm9pZCBU
ZXh0dXJlU2FtcGxpbmdCZW5jaG1hcms6OmluaXRWZXJ0ZXhCdWZmZXIoKQoreworICAgIHN0ZDo6
dmVjdG9yPGZsb2F0PiB2ZXJ0ZXhQb3NpdGlvbnMoMTIpOworICAgIHsKKyAgICAgICAgLy8gQm90
dG9tIGxlZnQgdHJpYW5nbGUKKyAgICAgICAgdmVydGV4UG9zaXRpb25zWzBdID0gLTEuMGY7Cisg
ICAgICAgIHZlcnRleFBvc2l0aW9uc1sxXSA9IC0xLjBmOworICAgICAgICB2ZXJ0ZXhQb3NpdGlv
bnNbMl0gPSAxLjBmOworICAgICAgICB2ZXJ0ZXhQb3NpdGlvbnNbM10gPSAtMS4wZjsKKyAgICAg
ICAgdmVydGV4UG9zaXRpb25zWzRdID0gLTEuMGY7CisgICAgICAgIHZlcnRleFBvc2l0aW9uc1s1
XSA9IDEuMGY7CisKKyAgICAgICAgLy8gVG9wIHJpZ2h0IHRyaWFuZ2xlCisgICAgICAgIHZlcnRl
eFBvc2l0aW9uc1s2XSAgPSAtMS4wZjsKKyAgICAgICAgdmVydGV4UG9zaXRpb25zWzddICA9IDEu
MGY7CisgICAgICAgIHZlcnRleFBvc2l0aW9uc1s4XSAgPSAxLjBmOworICAgICAgICB2ZXJ0ZXhQ
b3NpdGlvbnNbOV0gID0gLTEuMGY7CisgICAgICAgIHZlcnRleFBvc2l0aW9uc1sxMF0gPSAxLjBm
OworICAgICAgICB2ZXJ0ZXhQb3NpdGlvbnNbMTFdID0gMS4wZjsKKyAgICB9CisKKyAgICBnbEdl
bkJ1ZmZlcnMoMSwgJm1CdWZmZXIpOworICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIs
IG1CdWZmZXIpOworICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIHZlcnRleFBvc2l0
aW9ucy5zaXplKCkgKiBzaXplb2YoZmxvYXQpLCAmdmVydGV4UG9zaXRpb25zWzBdLAorICAgICAg
ICAgICAgICAgICBHTF9TVEFUSUNfRFJBVyk7CisKKyAgICBHTGludCBwb3NpdGlvbkxvY2F0aW9u
ID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgImFQb3NpdGlvbiIpOworICAgIEFTU0VS
VF9ORSgtMSwgcG9zaXRpb25Mb2NhdGlvbik7CisKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIo
cG9zaXRpb25Mb2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCBudWxscHRyKTsKKyAg
ICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHBvc2l0aW9uTG9jYXRpb24pOworfQorCit2b2lk
IFRleHR1cmVTYW1wbGluZ0JlbmNobWFyazo6aW5pdFRleHR1cmVzKCkKK3sKKyAgICBjb25zdCBh
dXRvICZwYXJhbXMgPSBHZXRQYXJhbSgpOworCisgICAgdW5zaWduZWQgaW50IGRhdGFTaXplID0g
cGFyYW1zLnRleHR1cmVTaXplICogcGFyYW1zLnRleHR1cmVTaXplOworICAgIHN0ZDo6dmVjdG9y
PHVuc2lnbmVkIGludD4gcmFuZG9tVGV4dHVyZURhdGE7CisgICAgcmFuZG9tVGV4dHVyZURhdGEu
cmVzaXplKGRhdGFTaXplKTsKKworICAgIHVuc2lnbmVkIGludCBwc2V1ZG9SYW5kb20gPSAxdTsK
KyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGRhdGFTaXplOyArK2kpCisgICAgewor
ICAgICAgICBwc2V1ZG9SYW5kb20gICAgICAgICA9IHBzZXVkb1JhbmRvbSAqIDE2NjQ1MjV1ICsg
MTAxMzkwNDIyM3U7CisgICAgICAgIHJhbmRvbVRleHR1cmVEYXRhW2ldID0gcHNldWRvUmFuZG9t
OworICAgIH0KKworICAgIG1UZXh0dXJlcy5yZXNpemUocGFyYW1zLm51bVNhbXBsZXJzKTsKKyAg
ICBnbEdlblRleHR1cmVzKHBhcmFtcy5udW1TYW1wbGVycywgbVRleHR1cmVzLmRhdGEoKSk7Cisg
ICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwYXJhbXMubnVtU2FtcGxlcnM7ICsraSkK
KyAgICB7CisgICAgICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCArIGkpOworICAgICAg
ICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1tpXSk7CisgICAgICAgIGds
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBf
VE9fRURHRSk7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhU
VVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOworICAgICAg
ICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBH
TF9ORUFSRVNUKTsKKyAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JH
QkEsIHBhcmFtcy50ZXh0dXJlU2l6ZSwgcGFyYW1zLnRleHR1cmVTaXplLCAwLCBHTF9SR0JBLAor
ICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgcmFuZG9tVGV4dHVyZURhdGEu
ZGF0YSgpKTsKKyAgICB9CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBjb3VudCA9IDA7IGNvdW50
IDwgcGFyYW1zLm51bVNhbXBsZXJzOyBjb3VudCsrKQorICAgIHsKKyAgICAgICAgc3RkOjpzdHJp
bmdzdHJlYW0gc2FtcGxlcnN0cnN0cjsKKyAgICAgICAgc2FtcGxlcnN0cnN0ciA8PCAidVNhbXBs
ZXIiIDw8IGNvdW50OworICAgICAgICBHTGludCBzYW1wbGVyTG9jYXRpb24gPSBnbEdldFVuaWZv
cm1Mb2NhdGlvbihtUHJvZ3JhbSwgc2FtcGxlcnN0cnN0ci5zdHIoKS5jX3N0cigpKTsKKyAgICAg
ICAgQVNTRVJUX05FKC0xLCBzYW1wbGVyTG9jYXRpb24pOworCisgICAgICAgIGdsVW5pZm9ybTFp
KHNhbXBsZXJMb2NhdGlvbiwgY291bnQpOworICAgIH0KK30KKwordm9pZCBUZXh0dXJlU2FtcGxp
bmdCZW5jaG1hcms6OmRlc3Ryb3lCZW5jaG1hcmsoKQoreworICAgIGNvbnN0IGF1dG8gJnBhcmFt
cyA9IEdldFBhcmFtKCk7CisKKyAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOworICAgIGds
RGVsZXRlQnVmZmVycygxLCAmbUJ1ZmZlcik7CisgICAgaWYgKCFtVGV4dHVyZXMuZW1wdHkoKSkK
KyAgICB7CisgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMocGFyYW1zLm51bVNhbXBsZXJzLCBtVGV4
dHVyZXMuZGF0YSgpKTsKKyAgICB9Cit9CisKK3ZvaWQgVGV4dHVyZVNhbXBsaW5nQmVuY2htYXJr
OjpkcmF3QmVuY2htYXJrKCkKK3sKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwor
CisgICAgY29uc3QgYXV0byAmcGFyYW1zID0gR2V0UGFyYW0oKTsKKworICAgIGZvciAodW5zaWdu
ZWQgaW50IGl0ID0gMDsgaXQgPCBwYXJhbXMuaXRlcmF0aW9uczsgKytpdCkKKyAgICB7CisgICAg
ICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDYpOworICAgIH0KKworICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOworfQorCitUZXh0dXJlU2FtcGxpbmdQYXJhbXMgRDNEMTFQYXJhbXMo
KQoreworICAgIFRleHR1cmVTYW1wbGluZ1BhcmFtcyBwYXJhbXM7CisgICAgcGFyYW1zLmVnbFBh
cmFtZXRlcnMgPSBlZ2xfcGxhdGZvcm06OkQzRDExKCk7CisgICAgcmV0dXJuIHBhcmFtczsKK30K
KworVGV4dHVyZVNhbXBsaW5nUGFyYW1zIEQzRDlQYXJhbXMoKQoreworICAgIFRleHR1cmVTYW1w
bGluZ1BhcmFtcyBwYXJhbXM7CisgICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBlZ2xfcGxhdGZv
cm06OkQzRDkoKTsKKyAgICByZXR1cm4gcGFyYW1zOworfQorCitUZXh0dXJlU2FtcGxpbmdQYXJh
bXMgT3BlbkdMUGFyYW1zKCkKK3sKKyAgICBUZXh0dXJlU2FtcGxpbmdQYXJhbXMgcGFyYW1zOwor
ICAgIHBhcmFtcy5lZ2xQYXJhbWV0ZXJzID0gZWdsX3BsYXRmb3JtOjpPUEVOR0woKTsKKyAgICBy
ZXR1cm4gcGFyYW1zOworfQorCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK1RFU1RfUChU
ZXh0dXJlU2FtcGxpbmdCZW5jaG1hcmssIFJ1bikKK3sKKyAgICBydW4oKTsKK30KKworQU5HTEVf
SU5TVEFOVElBVEVfVEVTVChUZXh0dXJlU2FtcGxpbmdCZW5jaG1hcmssIEQzRDExUGFyYW1zKCks
IEQzRDlQYXJhbXMoKSwgT3BlbkdMUGFyYW1zKCkpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvVGV4dHVyZXNQZXJmLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9UZXh0dXJlc1Bl
cmYuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9wZXJmX3Rlc3RzL1RleHR1cmVzUGVyZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwy
OTMgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisvLworLy8gVGV4dHVyZXNQZXJmOgorLy8gICBQZXJmb3JtYW5jZSB0
ZXN0IGZvciBzZXR0aW5nIHRleHR1cmUgc3RhdGUuCisvLworCisjaW5jbHVkZSAiQU5HTEVQZXJm
VGVzdC5oIgorCisjaW5jbHVkZSA8aW9zdHJlYW0+CisjaW5jbHVkZSA8cmFuZG9tPgorI2luY2x1
ZGUgPHNzdHJlYW0+CisKKyNpbmNsdWRlICJzaGFkZXJfdXRpbHMuaCIKKworbmFtZXNwYWNlIGFu
Z2xlCit7CisKK3N0cnVjdCBUZXh0dXJlc1BhcmFtcyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJUZXN0
UGFyYW1zCit7CisgICAgVGV4dHVyZXNQYXJhbXMoKQorICAgIHsKKyAgICAgICAgLy8gQ29tbW9u
IGRlZmF1bHQgcGFyYW1zCisgICAgICAgIG1ham9yVmVyc2lvbiA9IDI7CisgICAgICAgIG1pbm9y
VmVyc2lvbiA9IDA7CisgICAgICAgIHdpbmRvd1dpZHRoICA9IDcyMDsKKyAgICAgICAgd2luZG93
SGVpZ2h0ID0gNzIwOworICAgICAgICBpdGVyYXRpb25zICAgPSAyNTY7CisKKyAgICAgICAgbnVt
VGV4dHVyZXMgICAgICAgICAgICAgICAgID0gODsKKyAgICAgICAgdGV4dHVyZVJlYmluZEZyZXF1
ZW5jeSAgICAgID0gNTsKKyAgICAgICAgdGV4dHVyZVN0YXRlVXBkYXRlRnJlcXVlbmN5ID0gMzsK
KyAgICAgICAgdGV4dHVyZU1pcENvdW50ICAgICAgICAgICAgID0gODsKKyAgICB9CisKKyAgICBz
dGQ6OnN0cmluZyBzdWZmaXgoKSBjb25zdCBvdmVycmlkZTsKKyAgICBzaXplX3QgbnVtVGV4dHVy
ZXM7CisgICAgc2l6ZV90IHRleHR1cmVSZWJpbmRGcmVxdWVuY3k7CisgICAgc2l6ZV90IHRleHR1
cmVTdGF0ZVVwZGF0ZUZyZXF1ZW5jeTsKKyAgICBzaXplX3QgdGV4dHVyZU1pcENvdW50OworCisg
ICAgLy8gc3RhdGljIHBhcmFtZXRlcnMKKyAgICBzaXplX3QgaXRlcmF0aW9uczsKK307CisKK3N0
ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJm9zLCBjb25zdCBUZXh0dXJlc1Bh
cmFtcyAmcGFyYW1zKQoreworICAgIG9zIDw8IHBhcmFtcy5zdWZmaXgoKS5zdWJzdHIoMSk7Cisg
ICAgcmV0dXJuIG9zOworfQorCitzdGQ6OnN0cmluZyBUZXh0dXJlc1BhcmFtczo6c3VmZml4KCkg
Y29uc3QKK3sKKyAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzdHJzdHI7CisKKyAgICBzdHJzdHIgPDwg
UmVuZGVyVGVzdFBhcmFtczo6c3VmZml4KCk7CisgICAgc3Ryc3RyIDw8ICJfIiA8PCBudW1UZXh0
dXJlcyA8PCAiX3RleHR1cmVzIjsKKyAgICBzdHJzdHIgPDwgIl8iIDw8IHRleHR1cmVSZWJpbmRG
cmVxdWVuY3kgPDwgIl9yZWJpbmQiOworICAgIHN0cnN0ciA8PCAiXyIgPDwgdGV4dHVyZVN0YXRl
VXBkYXRlRnJlcXVlbmN5IDw8ICJfc3RhdGUiOworICAgIHN0cnN0ciA8PCAiXyIgPDwgdGV4dHVy
ZU1pcENvdW50IDw8ICJfbWlwcyI7CisKKyAgICByZXR1cm4gc3Ryc3RyLnN0cigpOworfQorCitj
bGFzcyBUZXh0dXJlc0JlbmNobWFyayA6IHB1YmxpYyBBTkdMRVJlbmRlclRlc3QsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1YmxpYyA6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxU
ZXh0dXJlc1BhcmFtcz4KK3sKKyAgcHVibGljOgorICAgIFRleHR1cmVzQmVuY2htYXJrKCk7CisK
KyAgICB2b2lkIGluaXRpYWxpemVCZW5jaG1hcmsoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlc3Ry
b3lCZW5jaG1hcmsoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdCZW5jaG1hcmsoKSBvdmVycmlk
ZTsKKworICBwcml2YXRlOgorICAgIHZvaWQgaW5pdFNoYWRlcnMoKTsKKyAgICB2b2lkIGluaXRU
ZXh0dXJlcygpOworCisgICAgc3RkOjp2ZWN0b3I8R0x1aW50PiBtVGV4dHVyZXM7CisKKyAgICBH
THVpbnQgbVByb2dyYW07CisgICAgc3RkOjp2ZWN0b3I8R0x1aW50PiBtVW5pZm9ybUxvY2F0aW9u
czsKK307CisKK1RleHR1cmVzQmVuY2htYXJrOjpUZXh0dXJlc0JlbmNobWFyaygpIDogQU5HTEVS
ZW5kZXJUZXN0KCJUZXh0dXJlcyIsIEdldFBhcmFtKCkpLCBtUHJvZ3JhbSgwdSkKK3sKK30KKwor
dm9pZCBUZXh0dXJlc0JlbmNobWFyazo6aW5pdGlhbGl6ZUJlbmNobWFyaygpCit7CisgICAgY29u
c3QgYXV0byAmcGFyYW1zID0gR2V0UGFyYW0oKTsKKworICAgIEFTU0VSVF9HVChwYXJhbXMuaXRl
cmF0aW9ucywgMHUpOworCisgICAgLy8gVmVyaWZ5IHRoZSB1bmlmb3JtIGNvdW50cyBhcmUgd2l0
aGluIHRoZSBsaW1pdHMKKyAgICBHTGludCBtYXhUZXh0dXJlVW5pdHM7CisgICAgZ2xHZXRJbnRl
Z2VydihHTF9NQVhfVEVYVFVSRV9JTUFHRV9VTklUUywgJm1heFRleHR1cmVVbml0cyk7CisgICAg
aWYgKHBhcmFtcy5udW1UZXh0dXJlcyA+IHN0YXRpY19jYXN0PHNpemVfdD4obWF4VGV4dHVyZVVu
aXRzKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiVGV4dHVyZSBjb3VudCAoIiA8PCBwYXJh
bXMubnVtVGV4dHVyZXMgPDwgIikiCisgICAgICAgICAgICAgICA8PCAiIGV4Y2VlZHMgbWF4aW11
bSB0ZXh0dXJlIHVuaXQgY291bnQ6ICIgPDwgbWF4VGV4dHVyZVVuaXRzIDw8IHN0ZDo6ZW5kbDsK
KyAgICB9CisKKyAgICBpbml0U2hhZGVycygpOworICAgIGluaXRUZXh0dXJlcygpOworICAgIGds
Q2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKKyAgICBnbFZpZXdwb3J0KDAsIDAs
IGdldFdpbmRvdygpLT5nZXRXaWR0aCgpLCBnZXRXaW5kb3coKS0+Z2V0SGVpZ2h0KCkpOworCisg
ICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9CisKK3N0ZDo6c3RyaW5nIEdldFVuaWZvcm1Mb2Nh
dGlvbk5hbWUoc2l6ZV90IGlkeCwgYm9vbCB2ZXJ0ZXhTaGFkZXIpCit7CisgICAgc3RkOjpzdHJp
bmdzdHJlYW0gc3Ryc3RyOworICAgIHN0cnN0ciA8PCAodmVydGV4U2hhZGVyID8gInZzIiA6ICJm
cyIpIDw8ICJfdV8iIDw8IGlkeDsKKyAgICByZXR1cm4gc3Ryc3RyLnN0cigpOworfQorCit2b2lk
IFRleHR1cmVzQmVuY2htYXJrOjppbml0U2hhZGVycygpCit7CisgICAgY29uc3QgYXV0byAmcGFy
YW1zID0gR2V0UGFyYW0oKTsKKworICAgIHN0ZDo6c3RyaW5nIHZzID0KKyAgICAgICAgInZvaWQg
bWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSB2ZWM0
KDAsIDAsIDAsIDApO1xuIgorICAgICAgICAifVxuIjsKKworICAgIHN0ZDo6c3RyaW5nc3RyZWFt
IGZzdHJzdHI7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJhbXMubnVtVGV4dHVyZXM7
IGkrKykKKyAgICB7CisgICAgICAgIGZzdHJzdHIgPDwgInVuaWZvcm0gc2FtcGxlcjJEIHRleCIg
PDwgaSA8PCAiOyI7CisgICAgfQorICAgIGZzdHJzdHIgPDwgInZvaWQgbWFpbigpXG4iCisgICAg
ICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0
KDAsIDAsIDAsIDApIjsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtcy5udW1UZXh0
dXJlczsgaSsrKQorICAgIHsKKyAgICAgICAgZnN0cnN0ciA8PCAiKyB0ZXh0dXJlMkQodGV4IiA8
PCBpIDw8ICIsIHZlYzIoMCwgMCkpIjsKKyAgICB9CisgICAgZnN0cnN0ciA8PCAiO1xuIgorICAg
ICAgICAgICAgICAgIn1cbiI7CisKKyAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZzLCBm
c3Ryc3RyLnN0cigpKTsKKyAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsKKworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcGFyYW1zLm51bVRleHR1cmVzOyArK2kpCisgICAgeworICAgICAg
ICBzdGQ6OnN0cmluZ3N0cmVhbSB1bmlmb3JtTmFtZTsKKyAgICAgICAgdW5pZm9ybU5hbWUgPDwg
InRleCIgPDwgaTsKKworICAgICAgICBHTGludCBsb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0
aW9uKG1Qcm9ncmFtLCB1bmlmb3JtTmFtZS5zdHIoKS5jX3N0cigpKTsKKyAgICAgICAgQVNTRVJU
X05FKC0xLCBsb2NhdGlvbik7CisgICAgICAgIG1Vbmlmb3JtTG9jYXRpb25zLnB1c2hfYmFjayhs
b2NhdGlvbik7CisgICAgfQorCisgICAgLy8gVXNlIHRoZSBwcm9ncmFtIG9iamVjdAorICAgIGds
VXNlUHJvZ3JhbShtUHJvZ3JhbSk7Cit9CisKK3ZvaWQgVGV4dHVyZXNCZW5jaG1hcms6OmluaXRU
ZXh0dXJlcygpCit7CisgICAgY29uc3QgYXV0byAmcGFyYW1zID0gR2V0UGFyYW0oKTsKKworICAg
IHNpemVfdCB0ZXh0dXJlU2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4oMSkgPDwgcGFyYW1zLnRl
eHR1cmVNaXBDb3VudDsKKyAgICBzdGQ6OnZlY3RvcjxHTHVieXRlPiB0ZXh0dXJlRGF0YSh0ZXh0
dXJlU2l6ZSAqIHRleHR1cmVTaXplICogNCk7CisgICAgZm9yIChhdXRvICZieXRlIDogdGV4dHVy
ZURhdGEpCisgICAgeworICAgICAgICBieXRlID0gcmFuZCgpICUgMjU1dTsKKyAgICB9CisKKyAg
ICBmb3IgKHNpemVfdCB0ZXhJbmRleCA9IDA7IHRleEluZGV4IDwgcGFyYW1zLm51bVRleHR1cmVz
OyB0ZXhJbmRleCsrKQorICAgIHsKKyAgICAgICAgR0x1aW50IHRleCA9IDA7CisgICAgICAgIGds
R2VuVGV4dHVyZXMoMSwgJnRleCk7CisKKyAgICAgICAgZ2xBY3RpdmVUZXh0dXJlKHN0YXRpY19j
YXN0PEdMZW51bT4oR0xfVEVYVFVSRTAgKyB0ZXhJbmRleCkpOworICAgICAgICBnbEJpbmRUZXh0
dXJlKEdMX1RFWFRVUkVfMkQsIHRleCk7CisgICAgICAgIGZvciAoc2l6ZV90IG1pcCA9IDA7IG1p
cCA8IHBhcmFtcy50ZXh0dXJlTWlwQ291bnQ7IG1pcCsrKQorICAgICAgICB7CisgICAgICAgICAg
ICBHTHNpemVpIGxldmVsU2l6ZSA9IHN0YXRpY19jYXN0PEdMc2l6ZWk+KHRleHR1cmVTaXplID4+
IG1pcCk7CisgICAgICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgc3RhdGljX2Nh
c3Q8R0xpbnQ+KG1pcCksIEdMX1JHQkEsIGxldmVsU2l6ZSwgbGV2ZWxTaXplLCAwLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHRleHR1cmVEYXRh
LmRhdGEoKSk7CisgICAgICAgIH0KKyAgICAgICAgbVRleHR1cmVzLnB1c2hfYmFjayh0ZXgpOwor
CisgICAgICAgIGdsVW5pZm9ybTFpKG1Vbmlmb3JtTG9jYXRpb25zW3RleEluZGV4XSwgc3RhdGlj
X2Nhc3Q8R0xpbnQ+KHRleEluZGV4KSk7CisgICAgfQorfQorCit2b2lkIFRleHR1cmVzQmVuY2ht
YXJrOjpkZXN0cm95QmVuY2htYXJrKCkKK3sKKyAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0p
OworfQorCit2b2lkIFRleHR1cmVzQmVuY2htYXJrOjpkcmF3QmVuY2htYXJrKCkKK3sKKyAgICBj
b25zdCBhdXRvICZwYXJhbXMgPSBHZXRQYXJhbSgpOworCisgICAgZm9yIChzaXplX3QgaXQgPSAw
OyBpdCA8IHBhcmFtcy5pdGVyYXRpb25zOyArK2l0KQorICAgIHsKKyAgICAgICAgaWYgKGl0ICUg
cGFyYW1zLnRleHR1cmVSZWJpbmRGcmVxdWVuY3kgPT0gMCkKKyAgICAgICAgeworICAgICAgICAg
ICAgLy8gU3dhcCB0d28gdGV4dHVyZXMKKyAgICAgICAgICAgIHNpemVfdCBzd2FwVGV4dHVyZSA9
IChpdCAvIHBhcmFtcy50ZXh0dXJlUmViaW5kRnJlcXVlbmN5KSAlIChwYXJhbXMubnVtVGV4dHVy
ZXMgLSAxKTsKKworICAgICAgICAgICAgZ2xBY3RpdmVUZXh0dXJlKHN0YXRpY19jYXN0PEdMZW51
bT4oR0xfVEVYVFVSRTAgKyBzd2FwVGV4dHVyZSkpOworICAgICAgICAgICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbc3dhcFRleHR1cmVdKTsKKyAgICAgICAgICAgIGds
QWN0aXZlVGV4dHVyZShzdGF0aWNfY2FzdDxHTGVudW0+KEdMX1RFWFRVUkUwICsgc3dhcFRleHR1
cmUgKyAxKSk7CisgICAgICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0
dXJlc1tzd2FwVGV4dHVyZSArIDFdKTsKKyAgICAgICAgICAgIHN0ZDo6c3dhcChtVGV4dHVyZXNb
c3dhcFRleHR1cmVdLCBtVGV4dHVyZXNbc3dhcFRleHR1cmUgKyAxXSk7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoaXQgJSBwYXJhbXMudGV4dHVyZVN0YXRlVXBkYXRlRnJlcXVlbmN5ID09IDAp
CisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFVwZGF0ZSBhIHRleHR1cmUncyBzdGF0ZQorICAg
ICAgICAgICAgc2l6ZV90IHN0YXRlVXBkYXRlQ291bnQgPSBpdCAvIHBhcmFtcy50ZXh0dXJlU3Rh
dGVVcGRhdGVGcmVxdWVuY3k7CisKKyAgICAgICAgICAgIGNvbnN0IHNpemVfdCBudW1VcGRhdGVU
ZXh0dXJlcyA9IDQ7CisgICAgICAgICAgICBBU1NFUlRfTEUobnVtVXBkYXRlVGV4dHVyZXMsIHBh
cmFtcy5udW1UZXh0dXJlcyk7CisKKyAgICAgICAgICAgIHNpemVfdCBmaXJzdFRleHR1cmUgPSBz
dGF0ZVVwZGF0ZUNvdW50ICUgKHBhcmFtcy5udW1UZXh0dXJlcyAtIG51bVVwZGF0ZVRleHR1cmVz
KTsKKworICAgICAgICAgICAgZm9yIChzaXplX3QgdXBkYXRlVGV4dHVyZUlkeCA9IDA7IHVwZGF0
ZVRleHR1cmVJZHggPCBudW1VcGRhdGVUZXh0dXJlczsKKyAgICAgICAgICAgICAgICAgdXBkYXRl
VGV4dHVyZUlkeCsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHNpemVfdCB1cGRh
dGVUZXh0dXJlID0gZmlyc3RUZXh0dXJlICsgdXBkYXRlVGV4dHVyZUlkeDsKKyAgICAgICAgICAg
ICAgICBnbEFjdGl2ZVRleHR1cmUoc3RhdGljX2Nhc3Q8R0xlbnVtPihHTF9URVhUVVJFMCArIHVw
ZGF0ZVRleHR1cmUpKTsKKworICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51bSBtaW5GaWx0ZXJz
W10gPSB7CisgICAgICAgICAgICAgICAgICAgIEdMX05FQVJFU1QsCisgICAgICAgICAgICAgICAg
ICAgIEdMX0xJTkVBUiwKKyAgICAgICAgICAgICAgICAgICAgR0xfTkVBUkVTVF9NSVBNQVBfTkVB
UkVTVCwKKyAgICAgICAgICAgICAgICAgICAgR0xfTElORUFSX01JUE1BUF9ORUFSRVNULAorICAg
ICAgICAgICAgICAgICAgICBHTF9ORUFSRVNUX01JUE1BUF9MSU5FQVIsCisgICAgICAgICAgICAg
ICAgICAgIEdMX0xJTkVBUl9NSVBNQVBfTElORUFSLAorICAgICAgICAgICAgICAgIH07CisgICAg
ICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlO
X0ZJTFRFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluRmlsdGVyc1tzdGF0
ZVVwZGF0ZUNvdW50ICUgQXJyYXlTaXplKG1pbkZpbHRlcnMpXSk7CisKKyAgICAgICAgICAgICAg
ICBjb25zdCBHTGVudW0gbWFnRmlsdGVyc1tdID0geworICAgICAgICAgICAgICAgICAgICBHTF9O
RUFSRVNULCBHTF9MSU5FQVIsCisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWdGaWx0ZXJzW3N0YXRlVXBkYXRlQ291bnQg
JSBBcnJheVNpemUobWFnRmlsdGVycyldKTsKKworICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51
bSB3cmFwUGFyYW1ldGVyc1tdID0geworICAgICAgICAgICAgICAgICAgICBHTF9DTEFNUF9UT19F
REdFLCBHTF9SRVBFQVQsIEdMX01JUlJPUkVEX1JFUEVBVCwKKyAgICAgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJF
X1dSQVBfUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcFBhcmFtZXRlcnNb
c3RhdGVVcGRhdGVDb3VudCAlIEFycmF5U2l6ZSh3cmFwUGFyYW1ldGVycyldKTsKKyAgICAgICAg
ICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBQYXJhbWV0ZXJzW3N0YXRlVXBk
YXRlQ291bnQgJSBBcnJheVNpemUod3JhcFBhcmFtZXRlcnMpXSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVTLCAwLCAzKTsKKyAg
ICB9CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKK30KKworVGV4dHVyZXNQYXJhbXMgRDNE
MTFQYXJhbXMoKQoreworICAgIFRleHR1cmVzUGFyYW1zIHBhcmFtczsKKyAgICBwYXJhbXMuZWds
UGFyYW1ldGVycyA9IGVnbF9wbGF0Zm9ybTo6RDNEMTFfTlVMTCgpOworICAgIHJldHVybiBwYXJh
bXM7Cit9CisKK1RleHR1cmVzUGFyYW1zIEQzRDlQYXJhbXMoKQoreworICAgIFRleHR1cmVzUGFy
YW1zIHBhcmFtczsKKyAgICBwYXJhbXMuZWdsUGFyYW1ldGVycyA9IGVnbF9wbGF0Zm9ybTo6RDNE
OV9OVUxMKCk7CisgICAgcmV0dXJuIHBhcmFtczsKK30KKworVGV4dHVyZXNQYXJhbXMgT3BlbkdM
UGFyYW1zKCkKK3sKKyAgICBUZXh0dXJlc1BhcmFtcyBwYXJhbXM7CisgICAgcGFyYW1zLmVnbFBh
cmFtZXRlcnMgPSBlZ2xfcGxhdGZvcm06Ok9QRU5HTF9OVUxMKCk7CisgICAgcmV0dXJuIHBhcmFt
czsKK30KKworVEVTVF9QKFRleHR1cmVzQmVuY2htYXJrLCBSdW4pCit7CisgICAgcnVuKCk7Cit9
CisKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoVGV4dHVyZXNCZW5jaG1hcmssIEQzRDExUGFyYW1z
KCksIEQzRDlQYXJhbXMoKSwgT3BlbkdMUGFyYW1zKCkpOworCit9ICAvLyBuYW1lc3BhY2UgYW5n
bGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL1Vu
aWZvcm1zUGVyZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL3BlcmZfdGVzdHMvVW5pZm9ybXNQZXJmLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9Vbmlmb3Jtc1BlcmYuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjI4IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAy
MDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFVuaWZv
cm1zQmVuY2htYXJrOgorLy8gICBQZXJmb3JtYW5jZSB0ZXN0IGZvciBzZXR0aW5nIHVuaWZvcm0g
ZGF0YS4KKy8vCisKKyNpbmNsdWRlICJBTkdMRVBlcmZUZXN0LmgiCisKKyNpbmNsdWRlIDxpb3N0
cmVhbT4KKyNpbmNsdWRlIDxyYW5kb20+CisjaW5jbHVkZSA8c3N0cmVhbT4KKworI2luY2x1ZGUg
InNoYWRlcl91dGlscy5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKK25hbWVzcGFjZQor
eworCitzdHJ1Y3QgVW5pZm9ybXNQYXJhbXMgZmluYWwgOiBwdWJsaWMgUmVuZGVyVGVzdFBhcmFt
cworeworICAgIFVuaWZvcm1zUGFyYW1zKCkKKyAgICB7CisgICAgICAgIC8vIENvbW1vbiBkZWZh
dWx0IHBhcmFtcworICAgICAgICBtYWpvclZlcnNpb24gPSAyOworICAgICAgICBtaW5vclZlcnNp
b24gPSAwOworICAgICAgICB3aW5kb3dXaWR0aCAgPSA3MjA7CisgICAgICAgIHdpbmRvd0hlaWdo
dCA9IDcyMDsKKyAgICAgICAgaXRlcmF0aW9ucyAgID0gNDsKKworICAgICAgICBudW1WZXJ0ZXhV
bmlmb3JtcyAgID0gMjAwOworICAgICAgICBudW1GcmFnbWVudFVuaWZvcm1zID0gMjAwOworICAg
IH0KKworICAgIHN0ZDo6c3RyaW5nIHN1ZmZpeCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHNpemVf
dCBudW1WZXJ0ZXhVbmlmb3JtczsKKyAgICBzaXplX3QgbnVtRnJhZ21lbnRVbmlmb3JtczsKKwor
ICAgIC8vIHN0YXRpYyBwYXJhbWV0ZXJzCisgICAgc2l6ZV90IGl0ZXJhdGlvbnM7Cit9OworCitz
dGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZvcywgY29uc3QgVW5pZm9ybXNQ
YXJhbXMgJnBhcmFtcykKK3sKKyAgICBvcyA8PCBwYXJhbXMuc3VmZml4KCkuc3Vic3RyKDEpOwor
ICAgIHJldHVybiBvczsKK30KKworc3RkOjpzdHJpbmcgVW5pZm9ybXNQYXJhbXM6OnN1ZmZpeCgp
IGNvbnN0Cit7CisgICAgc3RkOjpzdHJpbmdzdHJlYW0gc3Ryc3RyOworCisgICAgc3Ryc3RyIDw8
IFJlbmRlclRlc3RQYXJhbXM6OnN1ZmZpeCgpOworICAgIHN0cnN0ciA8PCAiXyIgPDwgbnVtVmVy
dGV4VW5pZm9ybXMgPDwgIl92ZXJ0ZXhfdW5pZm9ybXMiOworICAgIHN0cnN0ciA8PCAiXyIgPDwg
bnVtRnJhZ21lbnRVbmlmb3JtcyA8PCAiX2ZyYWdtZW50X3VuaWZvcm1zIjsKKworICAgIHJldHVy
biBzdHJzdHIuc3RyKCk7Cit9CisKK2NsYXNzIFVuaWZvcm1zQmVuY2htYXJrIDogcHVibGljIEFO
R0xFUmVuZGVyVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIDo6dGVzdGlu
Zzo6V2l0aFBhcmFtSW50ZXJmYWNlPFVuaWZvcm1zUGFyYW1zPgoreworICBwdWJsaWM6CisgICAg
VW5pZm9ybXNCZW5jaG1hcmsoKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUJlbmNobWFyaygpIG92
ZXJyaWRlOworICAgIHZvaWQgZGVzdHJveUJlbmNobWFyaygpIG92ZXJyaWRlOworICAgIHZvaWQg
ZHJhd0JlbmNobWFyaygpIG92ZXJyaWRlOworCisgIHByaXZhdGU6CisgICAgdm9pZCBpbml0U2hh
ZGVycygpOworICAgIHZvaWQgaW5pdFZlcnRleEJ1ZmZlcigpOworICAgIHZvaWQgaW5pdFRleHR1
cmVzKCk7CisKKyAgICBHTHVpbnQgbVByb2dyYW07CisgICAgc3RkOjp2ZWN0b3I8R0x1aW50PiBt
VW5pZm9ybUxvY2F0aW9uczsKK307CisKK1VuaWZvcm1zQmVuY2htYXJrOjpVbmlmb3Jtc0JlbmNo
bWFyaygpIDogQU5HTEVSZW5kZXJUZXN0KCJVbmlmb3JtcyIsIEdldFBhcmFtKCkpLCBtUHJvZ3Jh
bSgwdSkKK3sKK30KKwordm9pZCBVbmlmb3Jtc0JlbmNobWFyazo6aW5pdGlhbGl6ZUJlbmNobWFy
aygpCit7CisgICAgY29uc3QgYXV0byAmcGFyYW1zID0gR2V0UGFyYW0oKTsKKworICAgIEFTU0VS
VF9HVChwYXJhbXMuaXRlcmF0aW9ucywgMHUpOworCisgICAgLy8gVmVyaWZ5IHRoZSB1bmlmb3Jt
IGNvdW50cyBhcmUgd2l0aGluIHRoZSBsaW1pdHMKKyAgICBHTGludCBtYXhWZXJ0ZXhVbmlmb3Jt
cywgbWF4RnJhZ21lbnRVbmlmb3JtczsKKyAgICBnbEdldEludGVnZXJ2KEdMX01BWF9WRVJURVhf
VU5JRk9STV9WRUNUT1JTLCAmbWF4VmVydGV4VW5pZm9ybXMpOworICAgIGdsR2V0SW50ZWdlcnYo
R0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUywgJm1heEZyYWdtZW50VW5pZm9ybXMpOwor
CisgICAgaWYgKHBhcmFtcy5udW1WZXJ0ZXhVbmlmb3JtcyA+IHN0YXRpY19jYXN0PHNpemVfdD4o
bWF4VmVydGV4VW5pZm9ybXMpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJWZXJ0ZXggdW5p
Zm9ybSBjb3VudCAoIiA8PCBwYXJhbXMubnVtVmVydGV4VW5pZm9ybXMgPDwgIikiCisgICAgICAg
ICAgICAgICA8PCAiIGV4Y2VlZHMgbWF4aW11bSB2ZXJ0ZXggdW5pZm9ybSBjb3VudDogIiA8PCBt
YXhWZXJ0ZXhVbmlmb3JtcyA8PCBzdGQ6OmVuZGw7CisgICAgfQorICAgIGlmIChwYXJhbXMubnVt
RnJhZ21lbnRVbmlmb3JtcyA+IHN0YXRpY19jYXN0PHNpemVfdD4obWF4RnJhZ21lbnRVbmlmb3Jt
cykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIkZyYWdtZW50IHVuaWZvcm0gY291bnQgKCIg
PDwgcGFyYW1zLm51bUZyYWdtZW50VW5pZm9ybXMgPDwgIikiCisgICAgICAgICAgICAgICA8PCAi
IGV4Y2VlZHMgbWF4aW11bSBmcmFnbWVudCB1bmlmb3JtIGNvdW50OiAiIDw8IG1heEZyYWdtZW50
VW5pZm9ybXMgPDwgc3RkOjplbmRsOworICAgIH0KKworICAgIGluaXRTaGFkZXJzKCk7CisgICAg
Z2xDbGVhckNvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYpOworICAgIGdsVmlld3BvcnQoMCwg
MCwgZ2V0V2luZG93KCktPmdldFdpZHRoKCksIGdldFdpbmRvdygpLT5nZXRIZWlnaHQoKSk7CisK
KyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKK30KKworc3RkOjpzdHJpbmcgR2V0VW5pZm9ybUxv
Y2F0aW9uTmFtZShzaXplX3QgaWR4LCBib29sIHZlcnRleFNoYWRlcikKK3sKKyAgICBzdGQ6OnN0
cmluZ3N0cmVhbSBzdHJzdHI7CisgICAgc3Ryc3RyIDw8ICh2ZXJ0ZXhTaGFkZXIgPyAidnMiIDog
ImZzIikgPDwgIl91XyIgPDwgaWR4OworICAgIHJldHVybiBzdHJzdHIuc3RyKCk7Cit9CisKK3Zv
aWQgVW5pZm9ybXNCZW5jaG1hcms6OmluaXRTaGFkZXJzKCkKK3sKKyAgICBjb25zdCBhdXRvICZw
YXJhbXMgPSBHZXRQYXJhbSgpOworCisgICAgc3RkOjpzdHJpbmdzdHJlYW0gdnN0cnN0cjsKKyAg
ICB2c3Ryc3RyIDw8ICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiI7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBwYXJhbXMubnVtVmVydGV4VW5pZm9ybXM7IGkrKykKKyAgICB7CisgICAg
ICAgIHZzdHJzdHIgPDwgInVuaWZvcm0gdmVjNCAiIDw8IEdldFVuaWZvcm1Mb2NhdGlvbk5hbWUo
aSwgdHJ1ZSkgPDwgIjtcbiI7CisgICAgfQorICAgIHZzdHJzdHIgPDwgInZvaWQgbWFpbigpXG4i
CisgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9
IHZlYzQoMCwgMCwgMCwgMCk7XG4iOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyYW1z
Lm51bVZlcnRleFVuaWZvcm1zOyBpKyspCisgICAgeworICAgICAgICB2c3Ryc3RyIDw8ICIgICAg
Z2xfUG9zaXRpb24gPSBnbF9Qb3NpdGlvbiArICIgPDwgR2V0VW5pZm9ybUxvY2F0aW9uTmFtZShp
LCB0cnVlKSA8PCAiO1xuIjsKKyAgICB9CisgICAgdnN0cnN0ciA8PCAifSI7CisKKyAgICBzdGQ6
OnN0cmluZ3N0cmVhbSBmc3Ryc3RyOworICAgIGZzdHJzdHIgPDwgInByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0O1xuIjsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtcy5udW1GcmFnbWVu
dFVuaWZvcm1zOyBpKyspCisgICAgeworICAgICAgICBmc3Ryc3RyIDw8ICJ1bmlmb3JtIHZlYzQg
IiA8PCBHZXRVbmlmb3JtTG9jYXRpb25OYW1lKGksIGZhbHNlKSA8PCAiO1xuIjsKKyAgICB9Cisg
ICAgZnN0cnN0ciA8PCAidm9pZCBtYWluKClcbiIKKyAgICAgICAgICAgICAgICJ7XG4iCisgICAg
ICAgICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMCwgMCwgMCwgMCk7XG4iOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyYW1zLm51bUZyYWdtZW50VW5pZm9ybXM7IGkrKykK
KyAgICB7CisgICAgICAgIGZzdHJzdHIgPDwgIiAgICBnbF9GcmFnQ29sb3IgPSBnbF9GcmFnQ29s
b3IgKyAiIDw8IEdldFVuaWZvcm1Mb2NhdGlvbk5hbWUoaSwgZmFsc2UpCisgICAgICAgICAgICAg
ICAgPDwgIjtcbiI7CisgICAgfQorICAgIGZzdHJzdHIgPDwgIn0iOworCisgICAgbVByb2dyYW0g
PSBDb21waWxlUHJvZ3JhbSh2c3Ryc3RyLnN0cigpLCBmc3Ryc3RyLnN0cigpKTsKKyAgICBBU1NF
UlRfTkUoMHUsIG1Qcm9ncmFtKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyYW1z
Lm51bVZlcnRleFVuaWZvcm1zOyArK2kpCisgICAgeworICAgICAgICBHTGludCBsb2NhdGlvbiA9
IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCBHZXRVbmlmb3JtTG9jYXRpb25OYW1lKGks
IHRydWUpLmNfc3RyKCkpOworICAgICAgICBBU1NFUlRfTkUoLTEsIGxvY2F0aW9uKTsKKyAgICAg
ICAgbVVuaWZvcm1Mb2NhdGlvbnMucHVzaF9iYWNrKGxvY2F0aW9uKTsKKyAgICB9CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBwYXJhbXMubnVtRnJhZ21lbnRVbmlmb3JtczsgKytpKQorICAg
IHsKKyAgICAgICAgR0xpbnQgbG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3Jh
bSwgR2V0VW5pZm9ybUxvY2F0aW9uTmFtZShpLCBmYWxzZSkuY19zdHIoKSk7CisgICAgICAgIEFT
U0VSVF9ORSgtMSwgbG9jYXRpb24pOworICAgICAgICBtVW5pZm9ybUxvY2F0aW9ucy5wdXNoX2Jh
Y2sobG9jYXRpb24pOworICAgIH0KKworICAgIC8vIFVzZSB0aGUgcHJvZ3JhbSBvYmplY3QKKyAg
ICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworfQorCit2b2lkIFVuaWZvcm1zQmVuY2htYXJrOjpk
ZXN0cm95QmVuY2htYXJrKCkKK3sKKyAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOworfQor
Cit2b2lkIFVuaWZvcm1zQmVuY2htYXJrOjpkcmF3QmVuY2htYXJrKCkKK3sKKyAgICBjb25zdCBh
dXRvICZwYXJhbXMgPSBHZXRQYXJhbSgpOworCisgICAgZm9yIChzaXplX3QgaXQgPSAwOyBpdCA8
IHBhcmFtcy5pdGVyYXRpb25zOyArK2l0KQorICAgIHsKKyAgICAgICAgZm9yIChzaXplX3QgdW5p
Zm9ybSA9IDA7IHVuaWZvcm0gPCBtVW5pZm9ybUxvY2F0aW9ucy5zaXplKCk7ICsrdW5pZm9ybSkK
KyAgICAgICAgeworICAgICAgICAgICAgZmxvYXQgdmFsdWUgPSBzdGF0aWNfY2FzdDxmbG9hdD4o
dW5pZm9ybSk7CisgICAgICAgICAgICBnbFVuaWZvcm00ZihtVW5pZm9ybUxvY2F0aW9uc1t1bmlm
b3JtXSwgdmFsdWUsIHZhbHVlLCB2YWx1ZSwgdmFsdWUpOworICAgICAgICB9CisKKyAgICAgICAg
Z2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMCwgMyk7CisgICAgfQorCisgICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7Cit9CisKK1VuaWZvcm1zUGFyYW1zIEQzRDExUGFyYW1zKCkKK3sKKyAgICBV
bmlmb3Jtc1BhcmFtcyBwYXJhbXM7CisgICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBlZ2xfcGxh
dGZvcm06OkQzRDExKCk7CisgICAgcmV0dXJuIHBhcmFtczsKK30KKworVW5pZm9ybXNQYXJhbXMg
RDNEOVBhcmFtcygpCit7CisgICAgVW5pZm9ybXNQYXJhbXMgcGFyYW1zOworICAgIHBhcmFtcy5l
Z2xQYXJhbWV0ZXJzID0gZWdsX3BsYXRmb3JtOjpEM0Q5KCk7CisgICAgcmV0dXJuIHBhcmFtczsK
K30KKworVW5pZm9ybXNQYXJhbXMgT3BlbkdMUGFyYW1zKCkKK3sKKyAgICBVbmlmb3Jtc1BhcmFt
cyBwYXJhbXM7CisgICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBlZ2xfcGxhdGZvcm06Ok9QRU5H
TCgpOworICAgIHJldHVybiBwYXJhbXM7Cit9CisKK30gIC8vIGFub255bW91cyBuYW1lc3BhY2UK
KworVEVTVF9QKFVuaWZvcm1zQmVuY2htYXJrLCBSdW4pCit7CisgICAgcnVuKCk7Cit9CisKK0FO
R0xFX0lOU1RBTlRJQVRFX1RFU1QoVW5pZm9ybXNCZW5jaG1hcmssIEQzRDExUGFyYW1zKCksIEQz
RDlQYXJhbXMoKSwgT3BlbkdMUGFyYW1zKCkpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvdGhpcmRfcGFydHkvcGVyZi9hbmdsZS1tb2RzLnBhdGNo
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rl
c3RzL3RoaXJkX3BhcnR5L3BlcmYvYW5nbGUtbW9kcy5wYXRjaAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy90aGlyZF9wYXJ0eS9w
ZXJmL2FuZ2xlLW1vZHMucGF0Y2gJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MSBAQAorZGlm
ZiAtLWdpdCBhL3Rlc3RzL3BlcmZfdGVzdHMvdGhpcmRfcGFydHkvcGVyZi9wZXJmX3Rlc3QuY2Mg
Yi90ZXN0cy9wZXJmX3Rlc3RzL3RoaXJkX3BhcnR5L3BlcmYvcGVyZl90ZXN0LmNjCitpbmRleCAw
ZDVhYmMwLi43MzY0MzMwIDEwMDY0NAorLS0tIGEvdGVzdHMvcGVyZl90ZXN0cy90aGlyZF9wYXJ0
eS9wZXJmL3BlcmZfdGVzdC5jYworKysrIGIvdGVzdHMvcGVyZl90ZXN0cy90aGlyZF9wYXJ0eS9w
ZXJmL3BlcmZfdGVzdC5jYworQEAgLTIsMTYgKzIsNTEgQEAKKyAvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisg
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy0jaW5jbHVkZSAidGVzdGluZy9wZXJm
L3BlcmZfdGVzdC5oIgorKyNpbmNsdWRlICJwZXJmX3Rlc3QuaCIKKyAKKyAjaW5jbHVkZSA8c3Rk
aW8uaD4KKy0KKy0jaW5jbHVkZSAiYmFzZS9sb2dnaW5nLmgiCistI2luY2x1ZGUgImJhc2Uvc3Ry
aW5ncy9zdHJpbmdfbnVtYmVyX2NvbnZlcnNpb25zLmgiCistI2luY2x1ZGUgImJhc2Uvc3RyaW5n
cy9zdHJpbmdwcmludGYuaCIKKysjaW5jbHVkZSA8c3RkYXJnLmg+CisrI2luY2x1ZGUgPHZlY3Rv
cj4KKyAKKyBuYW1lc3BhY2UgeworIAorK25hbWVzcGFjZSBiYXNlIHsKKysKKytzdGQ6OnN0cmlu
ZyBGb3JtYXRTdHJpbmcoY29uc3QgY2hhciAqZm10LCB2YV9saXN0IHZhcmFyZykgeworKyAgc3Rh
dGljIHN0ZDo6dmVjdG9yPGNoYXI+IGJ1ZmZlcig1MTIpOworKworKyAgLy8gQXR0ZW1wdCB0byBq
dXN0IHByaW50IHRvIHRoZSBjdXJyZW50IGJ1ZmZlcgorKyAgaW50IGxlbiA9IHZzbnByaW50Zigm
YnVmZmVyWzBdLCBidWZmZXIuc2l6ZSgpLCBmbXQsIHZhcmFyZyk7CisrICBpZiAobGVuIDwgMCB8
fCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbikgPj0gYnVmZmVyLnNpemUoKSkgeworKyAgICAvLyBC
dWZmZXIgd2FzIG5vdCBsYXJnZSBlbm91Z2gsIGNhbGN1bGF0ZSB0aGUgcmVxdWlyZWQgc2l6ZSBh
bmQgcmVzaXplIHRoZSBidWZmZXIKKysgICAgbGVuID0gdnNucHJpbnRmKE5VTEwsIDAsIGZtdCwg
dmFyYXJnKTsKKysgICAgYnVmZmVyLnJlc2l6ZShsZW4gKyAxKTsKKysKKysgICAgLy8gUHJpbnQg
YWdhaW4KKysgICAgdnNucHJpbnRmKCZidWZmZXJbMF0sIGJ1ZmZlci5zaXplKCksIGZtdCwgdmFy
YXJnKTsKKysgIH0KKysKKysgIHJldHVybiBzdGQ6OnN0cmluZyhidWZmZXIuZGF0YSgpLCBsZW4p
OworK30KKysKKytzdGQ6OnN0cmluZyBTdHJpbmdQcmludGYoY29uc3QgY2hhciAqZm10LCAuLi4p
IHsKKysgIHZhX2xpc3QgdmFyYXJnOworKyAgdmFfc3RhcnQodmFyYXJnLCBmbXQpOworKyAgc3Rk
OjpzdHJpbmcgcmVzdWx0ID0gRm9ybWF0U3RyaW5nKGZtdCwgdmFyYXJnKTsKKysgIHZhX2VuZCh2
YXJhcmcpOworKyAgcmV0dXJuIHJlc3VsdDsKKyt9CisrCisrc3RkOjpzdHJpbmcgVWludFRvU3Ry
aW5nKHVuc2lnbmVkIGludCB2YWx1ZSkgeworKyAgcmV0dXJuIFN0cmluZ1ByaW50ZigiJXUiLCB2
YWx1ZSk7CisrfQorKworK3N0ZDo6c3RyaW5nIERvdWJsZVRvU3RyaW5nKGRvdWJsZSB2YWx1ZSkg
eworKyAgcmV0dXJuIFN0cmluZ1ByaW50ZigiJS4xMGxmIiwgdmFsdWUpOworK30KKysKKyt9Cisr
Cisgc3RkOjpzdHJpbmcgUmVzdWx0c1RvU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZWFzdXJl
bWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1v
ZGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
dHJhY2UsCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0
cy90aGlyZF9wYXJ0eS9wZXJmL3BlcmZfdGVzdC5jYwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy90aGlyZF9wYXJ0eS9wZXJmL3BlcmZf
dGVzdC5jYwkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvcGVyZl90ZXN0cy90aGlyZF9wYXJ0eS9wZXJmL3BlcmZfdGVzdC5jYwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDIzOSBAQAorLy8gQ29weXJpZ2h0IDIwMTMgVGhlIENocm9taXVtIEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorCisjaW5jbHVkZSAicGVyZl90ZXN0LmgiCisKKyNpbmNsdWRlIDxz
dGRpby5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworbmFtZXNw
YWNlIHsKKworbmFtZXNwYWNlIGJhc2UgeworCitzdGQ6OnN0cmluZyBGb3JtYXRTdHJpbmcoY29u
c3QgY2hhciAqZm10LCB2YV9saXN0IHZhcmFyZykgeworICBzdGF0aWMgc3RkOjp2ZWN0b3I8Y2hh
cj4gYnVmZmVyKDUxMik7CisKKyAgLy8gQXR0ZW1wdCB0byBqdXN0IHByaW50IHRvIHRoZSBjdXJy
ZW50IGJ1ZmZlcgorICBpbnQgbGVuID0gdnNucHJpbnRmKCZidWZmZXJbMF0sIGJ1ZmZlci5zaXpl
KCksIGZtdCwgdmFyYXJnKTsKKyAgaWYgKGxlbiA8IDAgfHwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihs
ZW4pID49IGJ1ZmZlci5zaXplKCkpIHsKKyAgICAvLyBCdWZmZXIgd2FzIG5vdCBsYXJnZSBlbm91
Z2gsIGNhbGN1bGF0ZSB0aGUgcmVxdWlyZWQgc2l6ZSBhbmQgcmVzaXplIHRoZSBidWZmZXIKKyAg
ICBsZW4gPSB2c25wcmludGYoTlVMTCwgMCwgZm10LCB2YXJhcmcpOworICAgIGJ1ZmZlci5yZXNp
emUobGVuICsgMSk7CisKKyAgICAvLyBQcmludCBhZ2FpbgorICAgIHZzbnByaW50ZigmYnVmZmVy
WzBdLCBidWZmZXIuc2l6ZSgpLCBmbXQsIHZhcmFyZyk7CisgIH0KKworICByZXR1cm4gc3RkOjpz
dHJpbmcoYnVmZmVyLmRhdGEoKSwgbGVuKTsKK30KKworc3RkOjpzdHJpbmcgU3RyaW5nUHJpbnRm
KGNvbnN0IGNoYXIgKmZtdCwgLi4uKSB7CisgIHZhX2xpc3QgdmFyYXJnOworICB2YV9zdGFydCh2
YXJhcmcsIGZtdCk7CisgIHN0ZDo6c3RyaW5nIHJlc3VsdCA9IEZvcm1hdFN0cmluZyhmbXQsIHZh
cmFyZyk7CisgIHZhX2VuZCh2YXJhcmcpOworICByZXR1cm4gcmVzdWx0OworfQorCitzdGQ6OnN0
cmluZyBVaW50VG9TdHJpbmcodW5zaWduZWQgaW50IHZhbHVlKSB7CisgIHJldHVybiBTdHJpbmdQ
cmludGYoIiV1IiwgdmFsdWUpOworfQorCitzdGQ6OnN0cmluZyBEb3VibGVUb1N0cmluZyhkb3Vi
bGUgdmFsdWUpIHsKKyAgcmV0dXJuIFN0cmluZ1ByaW50ZigiJS4xMGxmIiwgdmFsdWUpOworfQor
Cit9CisKK3N0ZDo6c3RyaW5nIFJlc3VsdHNUb1N0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgbWVh
c3VyZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcm
IG1vZGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiB0cmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
dmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBw
cmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN1
ZmZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdW5p
dHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQpIHsKKyAgLy8g
PCo+UkVTVUxUIDxncmFwaF9uYW1lPjogPHRyYWNlX25hbWU+PSA8dmFsdWU+IDx1bml0cz4KKyAg
Ly8gPCo+UkVTVUxUIDxncmFwaF9uYW1lPjogPHRyYWNlX25hbWU+PSB7PG1lYW4+LCA8c3RkIGRl
dmlhdGlvbj59IDx1bml0cz4KKyAgLy8gPCo+UkVTVUxUIDxncmFwaF9uYW1lPjogPHRyYWNlX25h
bWU+PSBbPHZhbHVlPix2YWx1ZSx2YWx1ZSwuLi4sXSA8dW5pdHM+CisgIHJldHVybiBiYXNlOjpT
dHJpbmdQcmludGYoIiVzUkVTVUxUICVzJXM6ICVzPSAlcyVzJXMgJXNcbiIsCisgICAgICAgICBp
bXBvcnRhbnQgPyAiKiIgOiAiIiwgbWVhc3VyZW1lbnQuY19zdHIoKSwgbW9kaWZpZXIuY19zdHIo
KSwKKyAgICAgICAgIHRyYWNlLmNfc3RyKCksIHByZWZpeC5jX3N0cigpLCB2YWx1ZXMuY19zdHIo
KSwgc3VmZml4LmNfc3RyKCksCisgICAgICAgICB1bml0cy5jX3N0cigpKTsKK30KKwordm9pZCBQ
cmludFJlc3VsdHNJbXBsKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZWFzdXJlbWVudCwKKyAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbW9kaWZpZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHRyYWNlLAorICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcmIHByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgc3VmZml4LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1
bml0cywKKyAgICAgICAgICAgICAgICAgICAgICBib29sIGltcG9ydGFudCkgeworICBmZmx1c2go
c3Rkb3V0KTsKKyAgcHJpbnRmKCIlcyIsIFJlc3VsdHNUb1N0cmluZyhtZWFzdXJlbWVudCwgbW9k
aWZpZXIsIHRyYWNlLCB2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJl
Zml4LCBzdWZmaXgsIHVuaXRzLCBpbXBvcnRhbnQpLmNfc3RyKCkpOworICBmZmx1c2goc3Rkb3V0
KTsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKK25hbWVzcGFjZSBwZXJmX3Rlc3QgeworCit2b2lk
IFByaW50UmVzdWx0KGNvbnN0IHN0ZDo6c3RyaW5nJiBtZWFzdXJlbWVudCwKKyAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1vZGlmaWVyLAorICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgdHJhY2UsCisgICAgICAgICAgICAgICAgIHNpemVfdCB2YWx1ZSwKKyAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVuaXRzLAorICAgICAgICAgICAgICAg
ICBib29sIGltcG9ydGFudCkgeworICBQcmludFJlc3VsdHNJbXBsKG1lYXN1cmVtZW50LAorICAg
ICAgICAgICAgICAgICAgIG1vZGlmaWVyLAorICAgICAgICAgICAgICAgICAgIHRyYWNlLAorICAg
ICAgICAgICAgICAgICAgIGJhc2U6OlVpbnRUb1N0cmluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZCBp
bnQ+KHZhbHVlKSksCisgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcoKSwKKyAgICAgICAg
ICAgICAgICAgICBzdGQ6OnN0cmluZygpLAorICAgICAgICAgICAgICAgICAgIHVuaXRzLAorICAg
ICAgICAgICAgICAgICAgIGltcG9ydGFudCk7Cit9CisKK3ZvaWQgUHJpbnRSZXN1bHQoY29uc3Qg
c3RkOjpzdHJpbmcmIG1lYXN1cmVtZW50LAorICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgbW9kaWZpZXIsCisgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFj
ZSwKKyAgICAgICAgICAgICAgICAgZG91YmxlIHZhbHVlLAorICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgdW5pdHMsCisgICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50KSB7
CisgIFByaW50UmVzdWx0c0ltcGwobWVhc3VyZW1lbnQsCisgICAgICAgICAgICAgICAgICAgbW9k
aWZpZXIsCisgICAgICAgICAgICAgICAgICAgdHJhY2UsCisgICAgICAgICAgICAgICAgICAgYmFz
ZTo6RG91YmxlVG9TdHJpbmcodmFsdWUpLAorICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5n
KCksCisgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAg
ICB1bml0cywKKyAgICAgICAgICAgICAgICAgICBpbXBvcnRhbnQpOworfQorCit2b2lkIEFwcGVu
ZFJlc3VsdChzdGQ6OnN0cmluZyYgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIG1lYXN1cmVtZW50LAorICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIG1vZGlmaWVyLAorICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHRyYWNl
LAorICAgICAgICAgICAgICAgICAgc2l6ZV90IHZhbHVlLAorICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIHVuaXRzLAorICAgICAgICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQp
IHsKKyAgb3V0cHV0ICs9IFJlc3VsdHNUb1N0cmluZygKKyAgICAgIG1lYXN1cmVtZW50LAorICAg
ICAgbW9kaWZpZXIsCisgICAgICB0cmFjZSwKKyAgICAgIGJhc2U6OlVpbnRUb1N0cmluZyhzdGF0
aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHZhbHVlKSksCisgICAgICBzdGQ6OnN0cmluZygpLAorICAg
ICAgc3RkOjpzdHJpbmcoKSwKKyAgICAgIHVuaXRzLAorICAgICAgaW1wb3J0YW50KTsKK30KKwor
dm9pZCBQcmludFJlc3VsdChjb25zdCBzdGQ6OnN0cmluZyYgbWVhc3VyZW1lbnQsCisgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtb2RpZmllciwKKyAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIHRyYWNlLAorICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgdmFsdWUsCisgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1bml0cywK
KyAgICAgICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQpIHsKKyAgUHJpbnRSZXN1bHRzSW1wbCht
ZWFzdXJlbWVudCwKKyAgICAgICAgICAgICAgICAgICBtb2RpZmllciwKKyAgICAgICAgICAgICAg
ICAgICB0cmFjZSwKKyAgICAgICAgICAgICAgICAgICB2YWx1ZSwKKyAgICAgICAgICAgICAgICAg
ICBzdGQ6OnN0cmluZygpLAorICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKCksCisgICAg
ICAgICAgICAgICAgICAgdW5pdHMsCisgICAgICAgICAgICAgICAgICAgaW1wb3J0YW50KTsKK30K
Kwordm9pZCBBcHBlbmRSZXN1bHQoc3RkOjpzdHJpbmcmIG91dHB1dCwKKyAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZWFzdXJlbWVudCwKKyAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBtb2RpZmllciwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiB0cmFjZSwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1
ZSwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1bml0cywKKyAgICAgICAg
ICAgICAgICAgIGJvb2wgaW1wb3J0YW50KSB7CisgIG91dHB1dCArPSBSZXN1bHRzVG9TdHJpbmco
bWVhc3VyZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZygpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGFu
dCk7Cit9CisKK3ZvaWQgUHJpbnRSZXN1bHRNZWFuQW5kRXJyb3IoY29uc3Qgc3RkOjpzdHJpbmcm
IG1lYXN1cmVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgbW9kaWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiB0cmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIG1lYW5fYW5kX2Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgdW5pdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aW1wb3J0YW50KSB7CisgIFByaW50UmVzdWx0c0ltcGwobWVhc3VyZW1lbnQsIG1vZGlmaWVyLCB0
cmFjZSwgbWVhbl9hbmRfZXJyb3IsCisgICAgICAgICAgICAgICAgICAgInsiLCAifSIsIHVuaXRz
LCBpbXBvcnRhbnQpOworfQorCit2b2lkIEFwcGVuZFJlc3VsdE1lYW5BbmRFcnJvcihzdGQ6OnN0
cmluZyYgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIG1lYXN1cmVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcmIG1vZGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIHRyYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIG1lYW5fYW5kX2Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVuaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBpbXBvcnRhbnQpIHsKKyAgb3V0cHV0ICs9IFJlc3VsdHNUb1N0cmluZyhtZWFz
dXJlbWVudCwgbW9kaWZpZXIsIHRyYWNlLCBtZWFuX2FuZF9lcnJvciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAieyIsICJ9IiwgdW5pdHMsIGltcG9ydGFudCk7Cit9CisKK3ZvaWQgUHJp
bnRSZXN1bHRMaXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBtZWFzdXJlbWVudCwKKyAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtb2RpZmllciwKKyAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFjZSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiB2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgdW5pdHMsCisgICAgICAgICAgICAgICAgICAgICBib29sIGltcG9ydGFudCkgeworICBQ
cmludFJlc3VsdHNJbXBsKG1lYXN1cmVtZW50LCBtb2RpZmllciwgdHJhY2UsIHZhbHVlcywKKyAg
ICAgICAgICAgICAgICAgICAiWyIsICJdIiwgdW5pdHMsIGltcG9ydGFudCk7Cit9CisKK3ZvaWQg
QXBwZW5kUmVzdWx0TGlzdChzdGQ6OnN0cmluZyYgb3V0cHV0LAorICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZWFzdXJlbWVudCwKKyAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgbW9kaWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIHRyYWNlLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiB2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcm
IHVuaXRzLAorICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50KSB7CisgIG91dHB1
dCArPSBSZXN1bHRzVG9TdHJpbmcobWVhc3VyZW1lbnQsIG1vZGlmaWVyLCB0cmFjZSwgdmFsdWVz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJbIiwgIl0iLCB1bml0cywgaW1wb3J0YW50
KTsKK30KKwordm9pZCBQcmludFN5c3RlbUNvbW1pdENoYXJnZShjb25zdCBzdGQ6OnN0cmluZyYg
dGVzdF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY2hhcmdlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGltcG9ydGFudCkgeworICBQcmludFN5
c3RlbUNvbW1pdENoYXJnZShzdGRvdXQsIHRlc3RfbmFtZSwgY2hhcmdlLCBpbXBvcnRhbnQpOwor
fQorCit2b2lkIFByaW50U3lzdGVtQ29tbWl0Q2hhcmdlKEZJTEUqIHRhcmdldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3RfbmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNoYXJnZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQpIHsKKyAgZnByaW50Zih0YXJnZXQsICIlcyIsIFN5
c3RlbUNvbW1pdENoYXJnZVRvU3RyaW5nKHRlc3RfbmFtZSwgY2hhcmdlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0YW50KS5jX3N0cigp
KTsKK30KKworc3RkOjpzdHJpbmcgU3lzdGVtQ29tbWl0Q2hhcmdlVG9TdHJpbmcoY29uc3Qgc3Rk
OjpzdHJpbmcmIHRlc3RfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBjaGFyZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGltcG9ydGFudCkgeworICBzdGQ6OnN0cmluZyB0cmFjZV9uYW1lKHRlc3RfbmFtZSk7
CisgIHN0ZDo6c3RyaW5nIG91dHB1dDsKKyAgQXBwZW5kUmVzdWx0KG91dHB1dCwKKyAgICAgICAg
ICAgICAgICJjb21taXRfY2hhcmdlIiwKKyAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKCksCisg
ICAgICAgICAgICAgICAiY2MiICsgdHJhY2VfbmFtZSwKKyAgICAgICAgICAgICAgIGNoYXJnZSwK
KyAgICAgICAgICAgICAgICJrYiIsCisgICAgICAgICAgICAgICBpbXBvcnRhbnQpOworICByZXR1
cm4gb3V0cHV0OworfQorCit9ICAvLyBuYW1lc3BhY2UgcGVyZl90ZXN0CkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy90aGlyZF9wYXJ0eS9wZXJmL3Bl
cmZfdGVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9wZXJmX3Rlc3RzL3RoaXJkX3BhcnR5L3BlcmYvcGVyZl90ZXN0LmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvdGhpcmRfcGFy
dHkvcGVyZi9wZXJmX3Rlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExNiBAQAorLy8g
Q29weXJpZ2h0IDIwMTMgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisjaWZu
ZGVmIFRFU1RJTkdfUEVSRl9QRVJGX1RFU1RfSF8KKyNkZWZpbmUgVEVTVElOR19QRVJGX1BFUkZf
VEVTVF9IXworCisjaW5jbHVkZSA8c3RyaW5nPgorCituYW1lc3BhY2UgcGVyZl90ZXN0IHsKKwor
Ly8gUHJpbnRzIG51bWVyaWNhbCBpbmZvcm1hdGlvbiB0byBzdGRvdXQgaW4gYSBjb250cm9sbGVk
IGZvcm1hdCwgZm9yCisvLyBwb3N0LXByb2Nlc3NpbmcuIHxtZWFzdXJlbWVudHwgaXMgYSBkZXNj
cmlwdGlvbiBvZiB0aGUgcXVhbnRpdHkgYmVpbmcKKy8vIG1lYXN1cmVkLCBlLmcuICJ2bV9wZWFr
IjsgfG1vZGlmaWVyfCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlIGFuZAorLy8gd2lsbCBi
ZSBhcHBlbmRlZCBkaXJlY3RseSB0byB0aGUgbmFtZSBvZiB0aGUgfG1lYXN1cmVtZW50fCwgZS5n
LgorLy8gIl9icm93c2VyIjsgfHRyYWNlfCBpcyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBwYXJ0aWN1
bGFyIGRhdGEgcG9pbnQsIGUuZy4KKy8vICJyZWZlcmVuY2UiOyB8dmFsdWV8IGlzIHRoZSBtZWFz
dXJlZCB2YWx1ZTsgYW5kIHx1bml0c3wgaXMgYSBkZXNjcmlwdGlvbgorLy8gb2YgdGhlIHVuaXRz
IG9mIG1lYXN1cmUsIGUuZy4gImJ5dGVzIi4gSWYgfGltcG9ydGFudHwgaXMgdHJ1ZSwgdGhlIG91
dHB1dAorLy8gbGluZSB3aWxsIGJlIHNwZWNpYWxseSBtYXJrZWQsIHRvIG5vdGlmeSB0aGUgcG9z
dC1wcm9jZXNzb3IuIFRoZSBzdHJpbmdzCisvLyBtYXkgYmUgZW1wdHkuICBUaGV5IHNob3VsZCBu
b3QgY29udGFpbiBhbnkgY29sb25zICg6KSBvciBlcXVhbHMgc2lnbnMgKD0pLgorLy8gQSB0eXBp
Y2FsIHBvc3QtcHJvY2Vzc2luZyBzdGVwIHdvdWxkIGJlIHRvIHByb2R1Y2UgZ3JhcGhzIG9mIHRo
ZSBkYXRhCisvLyBwcm9kdWNlZCBmb3IgdmFyaW91cyBidWlsZHMsIHVzaW5nIHRoZSBjb21iaW5l
ZCB8bWVhc3VyZW1lbnR8ICsgfG1vZGlmaWVyfAorLy8gc3RyaW5nIHRvIHNwZWNpZnkgYSBwYXJ0
aWN1bGFyIGdyYXBoIGFuZCB0aGUgfHRyYWNlfCB0byBpZGVudGlmeSBhIHRyYWNlCisvLyAoaS5l
LiwgZGF0YSBzZXJpZXMpIG9uIHRoYXQgZ3JhcGguCit2b2lkIFByaW50UmVzdWx0KGNvbnN0IHN0
ZDo6c3RyaW5nJiBtZWFzdXJlbWVudCwKKyAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIG1vZGlmaWVyLAorICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdHJhY2Us
CisgICAgICAgICAgICAgICAgIHNpemVfdCB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcmIHVuaXRzLAorICAgICAgICAgICAgICAgICBib29sIGltcG9ydGFudCk7Cit2
b2lkIFByaW50UmVzdWx0KGNvbnN0IHN0ZDo6c3RyaW5nJiBtZWFzdXJlbWVudCwKKyAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1vZGlmaWVyLAorICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgdHJhY2UsCisgICAgICAgICAgICAgICAgIGRvdWJsZSB2YWx1ZSwK
KyAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVuaXRzLAorICAgICAgICAgICAg
ICAgICBib29sIGltcG9ydGFudCk7CisKK3ZvaWQgQXBwZW5kUmVzdWx0KHN0ZDo6c3RyaW5nJiBv
dXRwdXQsCisgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWVhc3VyZW1lbnQs
CisgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbW9kaWZpZXIsCisgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdHJhY2UsCisgICAgICAgICAgICAgICAgICBz
aXplX3QgdmFsdWUsCisgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdW5pdHMs
CisgICAgICAgICAgICAgICAgICBib29sIGltcG9ydGFudCk7CisKKy8vIExpa2UgdGhlIGFib3Zl
IHZlcnNpb24gb2YgUHJpbnRSZXN1bHQoKSwgYnV0IHRha2VzIGEgc3RkOjpzdHJpbmcgdmFsdWUK
Ky8vIGluc3RlYWQgb2YgYSBzaXplX3QuCit2b2lkIFByaW50UmVzdWx0KGNvbnN0IHN0ZDo6c3Ry
aW5nJiBtZWFzdXJlbWVudCwKKyAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1v
ZGlmaWVyLAorICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdHJhY2UsCisgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSwKKyAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIHVuaXRzLAorICAgICAgICAgICAgICAgICBib29sIGltcG9ydGFu
dCk7CisKK3ZvaWQgQXBwZW5kUmVzdWx0KHN0ZDo6c3RyaW5nJiBvdXRwdXQsCisgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWVhc3VyZW1lbnQsCisgICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgbW9kaWZpZXIsCisgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgdHJhY2UsCisgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
dmFsdWUsCisgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdW5pdHMsCisgICAg
ICAgICAgICAgICAgICBib29sIGltcG9ydGFudCk7CisKKy8vIExpa2UgUHJpbnRSZXN1bHQoKSwg
YnV0IHByaW50cyBhIChtZWFuLCBzdGFuZGFyZCBkZXZpYXRpb24pIHJlc3VsdCBwYWlyLgorLy8g
VGhlIHw8dmFsdWVzPnwgc2hvdWxkIGJlIHR3byBjb21tYS1zZXBhcmF0ZWQgbnVtYmVycywgdGhl
IG1lYW4gYW5kCisvLyBzdGFuZGFyZCBkZXZpYXRpb24gKG9yIG90aGVyIGVycm9yIG1ldHJpYykg
b2YgdGhlIG1lYXN1cmVtZW50Lgordm9pZCBQcmludFJlc3VsdE1lYW5BbmRFcnJvcihjb25zdCBz
dGQ6OnN0cmluZyYgbWVhc3VyZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBtb2RpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIHRyYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgbWVhbl9hbmRfZXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1bml0cywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBpbXBvcnRhbnQpOworCit2b2lkIEFwcGVuZFJlc3VsdE1lYW5BbmRFcnJvcihz
dGQ6OnN0cmluZyYgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcmIG1lYXN1cmVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIG1vZGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIHRyYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1lYW5fYW5kX2Vycm9yLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVuaXRzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQpOworCisvLyBMaWtlIFByaW50UmVzdWx0KCksIGJ1
dCBwcmludHMgYW4gZW50aXJlIGxpc3Qgb2YgcmVzdWx0cy4gVGhlIHx2YWx1ZXN8CisvLyB3aWxs
IGdlbmVyYWxseSBiZSBhIGxpc3Qgb2YgY29tbWEtc2VwYXJhdGVkIG51bWJlcnMuIEEgdHlwaWNh
bAorLy8gcG9zdC1wcm9jZXNzaW5nIHN0ZXAgbWlnaHQgcHJvZHVjZSBwbG90cyBvZiB0aGVpciBt
ZWFuIGFuZCBzdGFuZGFyZAorLy8gZGV2aWF0aW9uLgordm9pZCBQcmludFJlc3VsdExpc3QoY29u
c3Qgc3RkOjpzdHJpbmcmIG1lYXN1cmVtZW50LAorICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcmIG1vZGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIHRyYWNlLAorICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHZh
bHVlcywKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1bml0cywKKyAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50KTsKKwordm9pZCBBcHBlbmRSZXN1bHRM
aXN0KHN0ZDo6c3RyaW5nJiBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIG1lYXN1cmVtZW50LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBtb2RpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgdHJhY2UsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVl
cywKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdW5pdHMsCisgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQpOworCisvLyBQcmludHMgbWVtb3J5IGNv
bW1pdCBjaGFyZ2Ugc3RhdHMgZm9yIHVzZSBieSBwZXJmIGdyYXBocy4KK3ZvaWQgUHJpbnRTeXN0
ZW1Db21taXRDaGFyZ2UoY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3RfbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGNoYXJnZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBpbXBvcnRhbnQpOworCit2b2lkIFByaW50U3lzdGVtQ29tbWl0Q2hhcmdlKEZJ
TEUqIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIHRlc3RfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNoYXJn
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQpOworCitzdGQ6
OnN0cmluZyBTeXN0ZW1Db21taXRDaGFyZ2VUb1N0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgdGVz
dF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNo
YXJnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0
YW50KTsKKworfSAgLy8gbmFtZXNwYWNlIHBlcmZfdGVzdAorCisjZW5kaWYgIC8vIFRFU1RJTkdf
UEVSRl9QRVJGX1RFU1RfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9wcmVwcm9jZXNzb3JfdGVzdHMvTW9ja0RpYWdub3N0aWNzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9Nb2NrRGlh
Z25vc3RpY3MuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL01vY2tEaWFnbm9zdGljcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMjAgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaWZuZGVmIFBSRVBST0NFU1NPUl9U
RVNUU19NT0NLX0RJQUdOT1NUSUNTX0hfCisjZGVmaW5lIFBSRVBST0NFU1NPUl9URVNUU19NT0NL
X0RJQUdOT1NUSUNTX0hfCisKKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorI2luY2x1ZGUgImNv
bXBpbGVyL3ByZXByb2Nlc3Nvci9EaWFnbm9zdGljc0Jhc2UuaCIKKworY2xhc3MgTW9ja0RpYWdu
b3N0aWNzIDogcHVibGljIHBwOjpEaWFnbm9zdGljcworeworICBwdWJsaWM6CisgICAgTU9DS19N
RVRIT0QzKHByaW50LAorICAgICAgICB2b2lkKElEIGlkLCBjb25zdCBwcDo6U291cmNlTG9jYXRp
b24mIGxvYywgY29uc3Qgc3RkOjpzdHJpbmcmIHRleHQpKTsKK307CisKKyNlbmRpZiAgLy8gUFJF
UFJPQ0VTU09SX1RFU1RTX01PQ0tfRElBR05PU1RJQ1NfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvTW9ja0RpcmVjdGl2ZUhhbmRs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJl
cHJvY2Vzc29yX3Rlc3RzL01vY2tEaXJlY3RpdmVIYW5kbGVyLmgJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9Nb2Nr
RGlyZWN0aXZlSGFuZGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKKy8vCisv
LyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworCisjaWZuZGVmIFBSRVBST0NFU1NPUl9URVNUU19NT0NLX0RJUkVDVElWRV9IQU5E
TEVSX0hfCisjZGVmaW5lIFBSRVBST0NFU1NPUl9URVNUU19NT0NLX0RJUkVDVElWRV9IQU5ETEVS
X0hfCisKKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3ByZXBy
b2Nlc3Nvci9EaXJlY3RpdmVIYW5kbGVyQmFzZS5oIgorCitjbGFzcyBNb2NrRGlyZWN0aXZlSGFu
ZGxlciA6IHB1YmxpYyBwcDo6RGlyZWN0aXZlSGFuZGxlcgoreworICBwdWJsaWM6CisgICAgTU9D
S19NRVRIT0QyKGhhbmRsZUVycm9yLAorICAgICAgICB2b2lkKGNvbnN0IHBwOjpTb3VyY2VMb2Nh
dGlvbiYgbG9jLCBjb25zdCBzdGQ6OnN0cmluZyYgbXNnKSk7CisKKyAgICBNT0NLX01FVEhPRDQo
aGFuZGxlUHJhZ21hLAorICAgICAgICB2b2lkKGNvbnN0IHBwOjpTb3VyY2VMb2NhdGlvbiYgbG9j
LAorICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLAorICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSwKKyAgICAgICAgICAgICBib29sIHN0ZGdsKSk7CisKKyAg
ICBNT0NLX01FVEhPRDMoaGFuZGxlRXh0ZW5zaW9uLAorICAgICAgICB2b2lkKGNvbnN0IHBwOjpT
b3VyY2VMb2NhdGlvbiYgbG9jLAorICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1l
LAorICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBiZWhhdmlvcikpOworCisgICAgTU9D
S19NRVRIT0QyKGhhbmRsZVZlcnNpb24sCisgICAgICAgIHZvaWQoY29uc3QgcHA6OlNvdXJjZUxv
Y2F0aW9uJiBsb2MsIGludCB2ZXJzaW9uKSk7Cit9OworCisjZW5kaWYgIC8vIFBSRVBST0NFU1NP
Ul9URVNUU19NT0NLX0RJUkVDVElWRV9IQU5ETEVSX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL1ByZXByb2Nlc3NvclRlc3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9j
ZXNzb3JfdGVzdHMvUHJlcHJvY2Vzc29yVGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9QcmVwcm9jZXNz
b3JUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5IEBACisvLworLy8gQ29weXJp
Z2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
KworI2luY2x1ZGUgIlByZXByb2Nlc3NvclRlc3QuaCIKKyNpbmNsdWRlICJjb21waWxlci9wcmVw
cm9jZXNzb3IvVG9rZW4uaCIKKwordm9pZCBQcmVwcm9jZXNzb3JUZXN0OjpwcmVwcm9jZXNzKGNv
bnN0IGNoYXIqIGlucHV0LCBjb25zdCBjaGFyKiBleHBlY3RlZCkKK3sKKyAgICBBU1NFUlRfVFJV
RShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJmlucHV0LCBOVUxMKSk7CisKKyAgICBpbnQgbGluZSA9
IDE7CisgICAgcHA6OlRva2VuIHRva2VuOworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsK
KyAgICBkbworICAgIHsKKyAgICAgICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKKyAgICAg
ICAgZm9yICg7IGxpbmUgPCB0b2tlbi5sb2NhdGlvbi5saW5lOyArK2xpbmUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0cmVhbSA8PCAiXG4iOworICAgICAgICB9CisgICAgICAgIHN0cmVhbSA8
PCB0b2tlbjsKKyAgICB9IHdoaWxlICh0b2tlbi50eXBlICE9IHBwOjpUb2tlbjo6TEFTVCk7CisK
KyAgICBzdGQ6OnN0cmluZyBhY3R1YWwgPSBzdHJlYW0uc3RyKCk7CisgICAgRVhQRUNUX1NUUkVR
KGV4cGVjdGVkLCBhY3R1YWwuY19zdHIoKSk7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL1ByZXByb2Nlc3NvclRlc3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29y
X3Rlc3RzL1ByZXByb2Nlc3NvclRlc3QuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL1ByZXByb2Nlc3NvclRlc3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMwIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAy
MDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpbmNsdWRlICJNb2NrRGlhZ25vc3RpY3MuaCIKKyNpbmNs
dWRlICJNb2NrRGlyZWN0aXZlSGFuZGxlci5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nl
c3Nvci9QcmVwcm9jZXNzb3IuaCIKKworI2lmbmRlZiBQUkVQUk9DRVNTT1JfVEVTVFNfUFJFUFJP
Q0VTU09SX1RFU1RfSF8KKyNkZWZpbmUgUFJFUFJPQ0VTU09SX1RFU1RTX1BSRVBST0NFU1NPUl9U
RVNUX0hfCisKK2NsYXNzIFByZXByb2Nlc3NvclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdAor
eworICBwcm90ZWN0ZWQ6CisgICAgUHJlcHJvY2Vzc29yVGVzdCgpIDogbVByZXByb2Nlc3Nvcigm
bURpYWdub3N0aWNzLCAmbURpcmVjdGl2ZUhhbmRsZXIpIHsgfQorCisgICAgLy8gUHJlcHJvY2Vz
c2VzIHRoZSBpbnB1dCBzdHJpbmcgYW5kIHZlcmlmaWVzIHRoYXQgaXQgbWF0Y2hlcworICAgIC8v
IGV4cGVjdGVkIG91dHB1dC4KKyAgICB2b2lkIHByZXByb2Nlc3MoY29uc3QgY2hhciogaW5wdXQs
IGNvbnN0IGNoYXIqIGV4cGVjdGVkKTsKKworICAgIE1vY2tEaWFnbm9zdGljcyBtRGlhZ25vc3Rp
Y3M7CisgICAgTW9ja0RpcmVjdGl2ZUhhbmRsZXIgbURpcmVjdGl2ZUhhbmRsZXI7CisgICAgcHA6
OlByZXByb2Nlc3NvciBtUHJlcHJvY2Vzc29yOworfTsKKworI2VuZGlmICAvLyBQUkVQUk9DRVNT
T1JfVEVTVFNfUFJFUFJPQ0VTU09SX1RFU1RfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvY2hhcl90ZXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3Rz
L2NoYXJfdGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9jaGFyX3Rlc3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsOTggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSA8YWxnb3JpdGhtPgor
I2luY2x1ZGUgPGNsaW1pdHM+CisKKyNpbmNsdWRlICJQcmVwcm9jZXNzb3JUZXN0LmgiCisjaW5j
bHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmgiCisKK2NsYXNzIENoYXJUZXN0IDog
cHVibGljIFByZXByb2Nlc3NvclRlc3QsCisgICAgICAgICAgICAgICAgIHB1YmxpYyB0ZXN0aW5n
OjpXaXRoUGFyYW1JbnRlcmZhY2U8aW50PgoreworfTsKKworc3RhdGljIGNvbnN0IGNoYXIga1B1
bmN0dWF0b3JzW10gPSB7CisgICAgJy4nLCAnKycsICctJywgJy8nLCAnKicsICclJywgJzwnLCAn
PicsICdbJywgJ10nLCAnKCcsICcpJywgJ3snLCAnfScsCisgICAgJ14nLCAnfCcsICcmJywgJ34n
LCAnPScsICchJywgJzonLCAnOycsICcsJywgJz8nfTsKK3N0YXRpYyBjb25zdCBpbnQga051bVB1
bmN0dWF0b3JzID0KKyAgICBzaXplb2Yoa1B1bmN0dWF0b3JzKSAvIHNpemVvZihrUHVuY3R1YXRv
cnNbMF0pOworCitib29sIGlzUHVuY3R1YXRvcihjaGFyIGMpCit7CisgICAgc3RhdGljIGNvbnN0
IGNoYXIqIGtQdW5jdHVhdG9yQmVnID0ga1B1bmN0dWF0b3JzOworICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBrUHVuY3R1YXRvckVuZCA9IGtQdW5jdHVhdG9ycyArIGtOdW1QdW5jdHVhdG9yczsKKyAg
ICByZXR1cm4gc3RkOjpmaW5kKGtQdW5jdHVhdG9yQmVnLCBrUHVuY3R1YXRvckVuZCwgYykgIT0g
a1B1bmN0dWF0b3JFbmQ7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyIGtXaGl0ZXNwYWNlc1tdID0g
eycgJywgJ1x0JywgJ1x2JywgJ1xmJywgJ1xuJywgJ1xyJ307CitzdGF0aWMgY29uc3QgaW50IGtO
dW1XaGl0ZXNwYWNlcyA9CisgICAgc2l6ZW9mKGtXaGl0ZXNwYWNlcykgLyBzaXplb2Yoa1doaXRl
c3BhY2VzWzBdKTsKKworYm9vbCBpc1doaXRlc3BhY2UoY2hhciBjKQoreworICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBrV2hpdGVzcGFjZUJlZyA9IGtXaGl0ZXNwYWNlczsKKyAgICBzdGF0aWMgY29u
c3QgY2hhcioga1doaXRlc3BhY2VFbmQgPSBrV2hpdGVzcGFjZXMgKyBrTnVtV2hpdGVzcGFjZXM7
CisgICAgcmV0dXJuIHN0ZDo6ZmluZChrV2hpdGVzcGFjZUJlZywga1doaXRlc3BhY2VFbmQsIGMp
ICE9IGtXaGl0ZXNwYWNlRW5kOworfQorCitURVNUX1AoQ2hhclRlc3QsIElkZW50aWZpZWQpCit7
CisgICAgc3RkOjpzdHJpbmcgc3RyKDEsIHN0YXRpY19jYXN0PGNoYXI+KEdldFBhcmFtKCkpKTsK
KyAgICBjb25zdCBjaGFyKiBjc3RyID0gc3RyLmNfc3RyKCk7CisgICAgaW50IGxlbmd0aCA9IDE7
CisKKyAgICAvLyBOb3RlIHRoYXQgd2UgcGFzcyB0aGUgbGVuZ3RoIHBhcmFtIGFzIHdlbGwgYmVj
YXVzZSB0aGUgaW52YWxpZAorICAgIC8vIHN0cmluZyBtYXkgY29udGFpbiB0aGUgbnVsbCBjaGFy
YWN0ZXIuCisgICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZjc3RyLCAmbGVu
Z3RoKSk7CisKKyAgICBpbnQgZXhwZWN0ZWRUeXBlID0gcHA6OlRva2VuOjpMQVNUOworICAgIHN0
ZDo6c3RyaW5nIGV4cGVjdGVkVmFsdWU7CisKKyAgICBpZiAoc3RyWzBdID09ICcjJykKKyAgICB7
CisgICAgICAgIC8vIExvbmUgJyMnIGlzIGlnbm9yZWQuCisgICAgfQorICAgIGVsc2UgaWYgKChz
dHJbMF0gPT0gJ18nKSB8fAorICAgICAgICAgICAgICgoc3RyWzBdID49ICdhJykgJiYgKHN0clsw
XSA8PSAneicpKSB8fAorICAgICAgICAgICAgICgoc3RyWzBdID49ICdBJykgJiYgKHN0clswXSA8
PSAnWicpKSkKKyAgICB7CisgICAgICAgIGV4cGVjdGVkVHlwZSA9IHBwOjpUb2tlbjo6SURFTlRJ
RklFUjsKKyAgICAgICAgZXhwZWN0ZWRWYWx1ZSA9IHN0cjsKKyAgICB9CisgICAgZWxzZSBpZiAo
c3RyWzBdID49ICcwJyAmJiBzdHJbMF0gPD0gJzknKQorICAgIHsKKyAgICAgICAgZXhwZWN0ZWRU
eXBlID0gcHA6OlRva2VuOjpDT05TVF9JTlQ7CisgICAgICAgIGV4cGVjdGVkVmFsdWUgPSBzdHI7
CisgICAgfQorICAgIGVsc2UgaWYgKGlzUHVuY3R1YXRvcihzdHJbMF0pKQorICAgIHsKKyAgICAg
ICAgZXhwZWN0ZWRUeXBlID0gc3RyWzBdOworICAgICAgICBleHBlY3RlZFZhbHVlID0gc3RyOwor
ICAgIH0KKyAgICBlbHNlIGlmIChpc1doaXRlc3BhY2Uoc3RyWzBdKSkKKyAgICB7CisgICAgICAg
IC8vIFdoaXRlc3BhY2UgaXMgaWdub3JlZC4KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAg
ICAgLy8gRXZlcnl0aGluZyBlbHNlIGlzIGludmFsaWQuCisgICAgICAgIHVzaW5nIHRlc3Rpbmc6
Ol87CisgICAgICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKKyAgICAgICAgICAgIHByaW50
KHBwOjpEaWFnbm9zdGljczo6UFBfSU5WQUxJRF9DSEFSQUNURVIsIF8sIHN0cikpOworICAgIH0K
KworICAgIHBwOjpUb2tlbiB0b2tlbjsKKyAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOwor
ICAgIEVYUEVDVF9FUShleHBlY3RlZFR5cGUsIHRva2VuLnR5cGUpOworICAgIEVYUEVDVF9FUShl
eHBlY3RlZFZhbHVlLCB0b2tlbi50ZXh0KTsKK307CisKKy8vIE5vdGUgKzEgZm9yIHRoZSBtYXgt
dmFsdWUgaW4gcmFuZ2UuIEl0IGlzIHRoZXJlIGJlY2F1c2UgdGhlIG1heC12YWx1ZQorLy8gbm90
IGluY2x1ZGVkIGluIHRoZSByYW5nZS4KK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFsbCwgQ2hh
clRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpSYW5nZShDSEFSX01JTiwg
Q0hBUl9NQVggKyAxKSk7CisKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9wcmVwcm9jZXNzb3JfdGVzdHMvY29tbWVudF90ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2NvbW1lbnRf
dGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9jb21tZW50X3Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNjkgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAiUHJlcHJvY2Vzc29yVGVz
dC5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5oIgorCitjbGFzcyBD
b21tZW50VGVzdCA6IHB1YmxpYyBQcmVwcm9jZXNzb3JUZXN0LAorICAgICAgICAgICAgICAgICAg
ICBwdWJsaWMgdGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPGNvbnN0IGNoYXIqPgoreworfTsK
KworVEVTVF9QKENvbW1lbnRUZXN0LCBDb21tZW50SWdub3JlZCkKK3sKKyAgICBjb25zdCBjaGFy
KiBzdHIgPSBHZXRQYXJhbSgpOworCisgICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0
KDEsICZzdHIsIDApKTsKKworICAgIHBwOjpUb2tlbiB0b2tlbjsKKyAgICBtUHJlcHJvY2Vzc29y
LmxleCgmdG9rZW4pOworICAgIEVYUEVDVF9FUShwcDo6VG9rZW46OkxBU1QsIHRva2VuLnR5cGUp
OworfQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChMaW5lQ29tbWVudCwgQ29tbWVudFRlc3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpWYWx1ZXMoIi8vZm9vXG4iLCAvLyBX
aXRoIG5ld2xpbmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8v
Zm9vIiwgICAvLyBXaXRob3V0IG5ld2xpbmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIi8vKiovIiwgICAvLyBOZXN0ZWQgYmxvY2sgY29tbWVudC4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLy8vLyIsICAgIC8vIE5lc3RlZCBsaW5l
IGNvbW1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8vXCIi
KSk7ICAvLyBJbnZhbGlkIGNoYXJhY3Rlci4gIAorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChC
bG9ja0NvbW1lbnQsIENvbW1lbnRUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGlu
Zzo6VmFsdWVzKCIvKmZvbyovIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiLypmb29cbiovIiwgLy8gV2l0aCBuZXdsaW5lLgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICIvKi8vKi8iLCAgICAvLyBOZXN0ZWQgbGluZSBjb21tZW50Lgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvKi8qKi8iLCAgICAvLyBO
ZXN0ZWQgYmxvY2sgY29tbWVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiLyoqKi8iLCAgICAgLy8gV2l0aCBsb25lICcqJy4KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiLypcIiovIikpOyAgLy8gSW52YWxpZCBjaGFyYWN0ZXIuCisK
K2NsYXNzIEJsb2NrQ29tbWVudFRlc3QgOiBwdWJsaWMgUHJlcHJvY2Vzc29yVGVzdAoreworfTsK
KworVEVTVF9GKEJsb2NrQ29tbWVudFRlc3QsIENvbW1lbnRSZXBsYWNlZFdpdGhTcGFjZSkKK3sK
KyAgICBjb25zdCBjaGFyKiBzdHIgPSAiLypmb28qL2JhciI7CisKKyAgICBBU1NFUlRfVFJVRSht
UHJlcHJvY2Vzc29yLmluaXQoMSwgJnN0ciwgMCkpOworCisgICAgcHA6OlRva2VuIHRva2VuOwor
ICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7CisgICAgRVhQRUNUX0VRKHBwOjpUb2tlbjo6
SURFTlRJRklFUiwgdG9rZW4udHlwZSk7CisgICAgRVhQRUNUX0VRKCJiYXIiLCB0b2tlbi50ZXh0
KTsKKyAgICBFWFBFQ1RfVFJVRSh0b2tlbi5oYXNMZWFkaW5nU3BhY2UoKSk7Cit9CisKK1RFU1Rf
RihCbG9ja0NvbW1lbnRUZXN0LCBVbnRlcm1pbmF0ZWRDb21tZW50KQoreworICAgIGNvbnN0IGNo
YXIqIHN0ciA9ICIvKmZvbyI7CisKKyAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQo
MSwgJnN0ciwgMCkpOworCisgICAgdXNpbmcgdGVzdGluZzo6XzsKKyAgICBFWFBFQ1RfQ0FMTCht
RGlhZ25vc3RpY3MsIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfRU9GX0lOX0NPTU1FTlQsIF8s
IF8pKTsKKworICAgIHBwOjpUb2tlbiB0b2tlbjsKKyAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9r
ZW4pOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nl
c3Nvcl90ZXN0cy9kZWZpbmVfdGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9kZWZpbmVfdGVzdC5jcHAJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nl
c3Nvcl90ZXN0cy9kZWZpbmVfdGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NTcg
QEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAiUHJlcHJvY2Vzc29yVGVzdC5oIgorI2luY2x1
ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5oIgorCit1c2luZyB0ZXN0aW5nOjpfOwor
CitjbGFzcyBEZWZpbmVUZXN0IDogcHVibGljIFByZXByb2Nlc3NvclRlc3QKK3sKK307CisKK1RF
U1RfRihEZWZpbmVUZXN0LCBOb25JZGVudGlmaWVyKQoreworICAgIGNvbnN0IGNoYXIqIGlucHV0
ID0gIiNkZWZpbmUgMiBmb29cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICIyXG4iOworICAg
IGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IjJcbiI7CisKKyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsCisgICAgICAgICAgICAgICAg
cHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9VTkVYUEVDVEVEX1RPS0VOLAorICAgICAgICAgICAg
ICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAiMiIpKTsKKworICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKK307CisKK1RFU1Rf
RihEZWZpbmVUZXN0LCBSZWRlZmluZVByZWRlZmluZWQpCit7CisgICAgY29uc3QgY2hhciogaW5w
dXQgPSAiI2RlZmluZSBfX0xJTkVfXyAxMFxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIl9f
TElORV9fXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBfX0ZJTEVfXyAyMFxu
IgorICAgICAgICAgICAgICAgICAgICAgICAgIl9fRklMRV9fXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAiI2RlZmluZSBfX1ZFUlNJT05fXyAyMDBcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICJfX1ZFUlNJT05fX1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgR0xf
RVMgMFxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIkdMX0VTXG4iOworICAgIGNvbnN0IGNo
YXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIjJcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICIwXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiMTAwXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiMVxuIjsKKworICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9z
dGljcywKKyAgICAgICAgICAgICAgICBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX01BQ1JPX1BS
RURFRklORURfUkVERUZJTkVELAorICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2Nh
dGlvbigwLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAiX19MSU5FX18iKSk7CisgICAgRVhQ
RUNUX0NBTEwobURpYWdub3N0aWNzLAorICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9z
dGljczo6UFBfTUFDUk9fUFJFREVGSU5FRF9SRURFRklORUQsCisgICAgICAgICAgICAgICAgICAg
ICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDMpLAorICAgICAgICAgICAgICAgICAgICAgICJfX0ZJ
TEVfXyIpKTsKKyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsCisgICAgICAgICAgICAgICAg
cHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9NQUNST19QUkVERUZJTkVEX1JFREVGSU5FRCwKKyAg
ICAgICAgICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgNSksCisgICAgICAgICAg
ICAgICAgICAgICAgIl9fVkVSU0lPTl9fIikpOworICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGlj
cywKKyAgICAgICAgICAgICAgICBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX01BQ1JPX1BSRURF
RklORURfUkVERUZJTkVELAorICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlv
bigwLCA3KSwKKyAgICAgICAgICAgICAgICAgICAgICAiR0xfRVMiKSk7CisKKyAgICBwcmVwcm9j
ZXNzKGlucHV0LCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihEZWZpbmVUZXN0LCBSZXNlcnZlZFVu
ZGVyU2NvcmUxKQoreworICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgX19mb28gYmFy
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiX19mb29cbiI7CisgICAgY29uc3QgY2hhciog
ZXhwZWN0ZWQgPSAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFyXG4iOworCisg
ICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX1dB
Uk5JTkdfTUFDUk9fTkFNRV9SRVNFUlZFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwgIl9fZm9vIikpOworCisgICAgcHJlcHJv
Y2VzcyhpbnB1dCwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoRGVmaW5lVGVzdCwgUmVzZXJ2ZWRV
bmRlclNjb3JlMikKK3sKKyAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZvb19fYmFy
IGJhelxuIgorICAgICAgICAgICAgICAgICAgICAgICAgImZvb19fYmFyXG4iOworICAgIGNvbnN0
IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhelxu
IjsKKworICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQocHA6OkRpYWdub3N0aWNz
OjpQUF9XQVJOSU5HX01BQ1JPX05BTUVfUkVTRVJWRUQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgMSksICJmb29fX2JhciIpKTsKKwor
ICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKERlZmluZVRlc3Qs
IFJlc2VydmVkR0wpCit7CisgICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBHTF9mb28g
YmFyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiR0xfZm9vXG4iOworICAgIGNvbnN0IGNo
YXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdMX2Zvb1xu
IjsKKworICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKKyAgICAgICAgICAgICAgICBwcmlu
dChwcDo6RGlhZ25vc3RpY3M6OlBQX01BQ1JPX05BTUVfUkVTRVJWRUQsCisgICAgICAgICAgICAg
ICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLAorICAgICAgICAgICAgICAgICAgICAg
ICJHTF9mb28iKSk7CisKKyAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Cit9CisKK1RF
U1RfRihEZWZpbmVUZXN0LCBPYmpSZWRlZmluZVZhbGlkKQoreworICAgIGNvbnN0IGNoYXIqIGlu
cHV0ID0gIiNkZWZpbmUgZm9vICgxLTEpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiI2Rl
ZmluZSBmb28gLyogd2hpdGVzcGFjZSAqLyAoMS0xKSAvKiBvdGhlciAqLyBcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICJmb29cbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiKDEtMSlcbiI7CisgICAgLy8gTm8gZXJyb3Igb3Igd2FybmluZy4KKyAgICB1c2luZyB0
ZXN0aW5nOjpfOworICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQoXywgXywgXykp
LlRpbWVzKDApOworCisgICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOworfQorCitURVNU
X0YoRGVmaW5lVGVzdCwgT2JqUmVkZWZpbmVJbnZhbGlkKQoreworICAgIGNvbnN0IGNoYXIqIGlu
cHV0ID0gIiNkZWZpbmUgZm9vICgwKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIiNkZWZp
bmUgZm9vICgxLTEpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiZm9vXG4iOworICAgIGNv
bnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIigwKVxuIjsKKworICAgIEVYUEVDVF9DQUxM
KG1EaWFnbm9zdGljcywKKyAgICAgICAgICAgICAgICBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQ
X01BQ1JPX1JFREVGSU5FRCwKKyAgICAgICAgICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRp
b24oMCwgMiksCisgICAgICAgICAgICAgICAgICAgICAgImZvbyIpKTsKKworICAgIHByZXByb2Nl
c3MoaW5wdXQsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKERlZmluZVRlc3QsIEZ1bmNSZWRlZmlu
ZVZhbGlkKQoreworICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9vKGEpICggYSAp
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBmb28oIGEgKSggLyogd2hpdGVz
cGFjZSAqLyBhIC8qIG90aGVyICovIClcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJmb28o
YilcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiKCBiIClcbiI7Cisg
ICAgLy8gTm8gZXJyb3Igb3Igd2FybmluZy4KKyAgICB1c2luZyB0ZXN0aW5nOjpfOworICAgIEVY
UEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQoXywgXywgXykpLlRpbWVzKDApOworCisgICAg
cHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoRGVmaW5lVGVzdCwgRnVu
Y1JlZGVmaW5lSW52YWxpZCkKK3sKKyAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZv
byhiKSAoIGEgKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgZm9vKGIpICgg
YiApXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiZm9vKDEpXG4iOworICAgIGNvbnN0IGNo
YXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIiggYSApXG4iOworCisgICAgRVhQRUNUX0NBTEwobURp
YWdub3N0aWNzLAorICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfTUFD
Uk9fUkVERUZJTkVELAorICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigw
LCAyKSwKKyAgICAgICAgICAgICAgICAgICAgICAiZm9vIikpOworCisgICAgcHJlcHJvY2Vzcyhp
bnB1dCwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoRGVmaW5lVGVzdCwgT2JqQmFzaWMpCit7Cisg
ICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBmb28gMVxuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgImZvb1xuIjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICIxXG4iOworCisgICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhw
ZWN0ZWQpOworfQorCitURVNUX0YoRGVmaW5lVGVzdCwgT2JqRW1wdHkpCit7CisgICAgY29uc3Qg
Y2hhciogaW5wdXQgPSAiI2RlZmluZSBmb29cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJm
b29cbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiXG4iOworCisgICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOworfQor
CitURVNUX0YoRGVmaW5lVGVzdCwgT2JqQ2hhaW4pCit7CisgICAgY29uc3QgY2hhciogaW5wdXQg
PSAiI2RlZmluZSBmb28gMVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgYmFy
IGZvb1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgImJhclxuIjsKKyAgICBjb25zdCBjaGFy
KiBleHBlY3RlZCA9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICIxXG4iOworCisgICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhw
ZWN0ZWQpOworfQorCitURVNUX0YoRGVmaW5lVGVzdCwgT2JqQ2hhaW5SZXZlcnNlKQoreworICAg
IGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgYmFyIGZvb1xuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgIiNkZWZpbmUgZm9vIDFcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJiYXJc
biI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiMVxuIjsKKworICAgIHBy
ZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKERlZmluZVRlc3QsIE9ialJl
Y3Vyc2l2ZSkKK3sKKyAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZvbyBiYXJcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIGJhciBiYXpcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICIjZGVmaW5lIGJheiBmb29cbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJmb29cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJiYXJcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICJiYXpcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAi
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9vXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiYmFyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmF6XG4iOwor
CisgICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoRGVmaW5lVGVz
dCwgT2JqQ29tcG9zaXRlQ2hhaW4pCit7CisgICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmlu
ZSBmb28gMVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgYmFyIGEgZm9vXG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAiYmFyXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVj
dGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImEgMVxuIjsKKworICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVk
KTsKK30KKworVEVTVF9GKERlZmluZVRlc3QsIE9iakNvbXBvc2l0ZUNoYWluUmV2ZXJzZSkKK3sK
KyAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGJhciBhIGZvb1xuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgIiNkZWZpbmUgZm9vIDFcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJiYXJcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiYSAxXG4iOwor
CisgICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoRGVmaW5lVGVz
dCwgT2JqQ29tcG9zaXRlUmVjdXJzaXZlKQoreworICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNk
ZWZpbmUgZm9vIGEgYmFyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBiYXIg
YiBiYXpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIGJheiBjIGZvb1xuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgImZvb1xuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ImJhclxuIgorICAgICAgICAgICAgICAgICAgICAgICAgImJhelxuIjsKKyAgICBjb25zdCBjaGFy
KiBleHBlY3RlZCA9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJh
IGIgYyBmb29cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJiIGMgYSBiYXJcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJjIGEgYiBiYXpcbiI7CisKKyAgICBwcmVwcm9jZXNz
KGlucHV0LCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihEZWZpbmVUZXN0LCBPYmpDaGFpblNlbGZS
ZWN1cnNpdmUpCit7CisgICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBmb28gZm9vXG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBiYXIgZm9vXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAiYmFyXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImZvb1xuIjsKKworICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKK30KKworVEVT
VF9GKERlZmluZVRlc3QsIE9iamVjdExpa2VXaXRoUGFyZW5zKQoreworICAgIGNvbnN0IGNoYXIq
IGlucHV0ID0gIiNkZWZpbmUgZm9vICgpMVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgImZv
bygpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBiYXIgKCkyXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAiYmFyKClcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQg
PSAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiKCkxKClcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIoKTIoKVxu
IjsKKworICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKERlZmlu
ZVRlc3QsIEZ1bmNFbXB0eSkKK3sKKyAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZv
bygpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiZm9vKClcbiI7CisgICAgY29uc3QgY2hh
ciogZXhwZWN0ZWQgPSAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworCisg
ICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoRGVmaW5lVGVzdCwg
RnVuY05vQXJncykKK3sKKyAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZvbygpIGJh
clxuIgorICAgICAgICAgICAgICAgICAgICAgICAgImZvbygpXG4iOworICAgIGNvbnN0IGNoYXIq
IGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhclxuIjsKKwor
ICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKERlZmluZVRlc3Qs
IEZ1bmNPbmVBcmdVbnVzZWQpCit7CisgICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBm
b28oeCkgMVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgImZvbyhiYXIpXG4iOworICAgIGNv
bnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIjFc
biI7CisKKyAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihEZWZp
bmVUZXN0LCBGdW5jVHdvQXJnc1VudXNlZCkKK3sKKyAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIj
ZGVmaW5lIGZvbyh4LHkpIDFcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJmb28oYmFyLGJh
eilcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiMVxuIjsKKworICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKK30K
KworVEVTVF9GKERlZmluZVRlc3QsIEZ1bmNPbmVBcmcpCit7CisgICAgY29uc3QgY2hhciogaW5w
dXQgPSAiI2RlZmluZSBmb28oeCkgKCh4KSsxKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ImZvbyhiYXIpXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIigoYmFyKSsxKVxuIjsKKworICAgIHByZXByb2Nlc3MoaW5wdXQs
IGV4cGVjdGVkKTsKK30KKworVEVTVF9GKERlZmluZVRlc3QsIEZ1bmNUd29BcmdzKQoreworICAg
IGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9vKHgseSkgKCh4KSooeSkpXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAiZm9vKGJhcixiYXopXG4iOworICAgIGNvbnN0IGNoYXIqIGV4
cGVjdGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIigoYmFyKSooYmF6KSlc
biI7CisKKyAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihEZWZp
bmVUZXN0LCBGdW5jRW1wdHlBcmdzKQoreworICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZp
bmUgemVybygpIHBhc3NcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIG9uZSh4
KSBwYXNzXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSB0d28oeCx5KSBwYXNz
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiemVybygpXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAib25lKClcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0d28oLClcbiI7Cisg
ICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAicGFzc1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzXG4iOworCisgICAgcHJlcHJvY2Vzcyhp
bnB1dCwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoRGVmaW5lVGVzdCwgRnVuY01hY3JvQXNQYXJh
bSkKK3sKKyAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIHggMFxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgIiNkZWZpbmUgZm9vKHgpIHhcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICJmb28oMSlcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiMVxu
IjsKKworICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKERlZmlu
ZVRlc3QsIEZ1bmNPbmVBcmdNdWx0aSkKK3sKKyAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVm
aW5lIGZvbyh4KSAoeClcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJmb28odGhpcyBpcyBh
IG11bHRpLXdvcmQgYXJndW1lbnQpXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIih0aGlzIGlzIGEgbXVsdGktd29yZCBhcmd1
bWVudClcbiI7CisKKyAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Cit9CisKK1RFU1Rf
RihEZWZpbmVUZXN0LCBGdW5jVHdvQXJnc011bHRpKQoreworICAgIGNvbnN0IGNoYXIqIGlucHV0
ID0gIiNkZWZpbmUgZm9vKHgseSkgeCx0d28gZmlzaCxyZWQgZmlzaCx5XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAiZm9vKG9uZSBmaXNoLCBibHVlIGZpc2gpXG4iOworICAgIGNvbnN0IGNo
YXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9uZSBmaXNo
LHR3byBmaXNoLHJlZCBmaXNoLGJsdWUgZmlzaFxuIjsKKworICAgIHByZXByb2Nlc3MoaW5wdXQs
IGV4cGVjdGVkKTsKK30KKworVEVTVF9GKERlZmluZVRlc3QsIEZ1bmNDb21wb3NlKQoreworICAg
IGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgYmFyKHgpICgxKyh4KSlcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICIjZGVmaW5lIGZvbyh5KSAoMiooeSkpXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAiZm9vKGJhcigzKSlcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAi
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiKDIqKCgxKygzKSkpKVxuIjsKKworICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVj
dGVkKTsKK30KKworVEVTVF9GKERlZmluZVRlc3QsIEZ1bmNBcmdXaXRoUGFyZW5zKQoreworICAg
IGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9vKHgpICh4KVxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgImZvbyhhcmd1bWVudCh3aXRoIHBhcmVucykgRlRXKVxuIjsKKyAgICBjb25z
dCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIoYXJn
dW1lbnQod2l0aCBwYXJlbnMpIEZUVylcbiI7CisKKyAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBl
Y3RlZCk7Cit9CisKK1RFU1RfRihEZWZpbmVUZXN0LCBGdW5jTWFjcm9Bc05vbk1hY3JvKQorewor
ICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9vKGJhcikgYmFyXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAiZm9vIGJhclxuIjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9
ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb28gYmFyXG4iOworCisgICAgcHJl
cHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoRGVmaW5lVGVzdCwgRnVuY0V4
dHJhTmV3bGluZXMpCit7CisgICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBmb28oYSkg
KGEpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiZm9vXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAiKFxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIjFcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICIpXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIigxKVxuIjsKKworICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKK30K
KworVEVTVF9GKERlZmluZVRlc3QsIENoYWluT2JqVG9GdW5jKQoreworICAgIGNvbnN0IGNoYXIq
IGlucHV0ID0gIiNkZWZpbmUgZm9vKCkgcGFzc1xuIgorICAgICAgICAgICAgICAgICAgICAgICAg
IiNkZWZpbmUgYmFyIGZvbygpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiYmFyXG4iOwor
ICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NcbiI7CisKKyAgICBwcmVw
cm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihEZWZpbmVUZXN0LCBDaGFpbk9i
alRvTm9uRnVuYykKK3sKKyAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIHBhc3MoKSBm
YWlsXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBiYXIgcGFzc1xuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgImJhclxuIjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9
ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJwYXNzXG4iOworCisgICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwor
fQorCitURVNUX0YoRGVmaW5lVGVzdCwgQ2hhaW5PYmpUb0Z1bmNXaXRoQXJncykKK3sKKyAgICBj
b25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZvbyhmYWlsKSBmYWlsXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAiI2RlZmluZSBiYXIgZm9vKHBhc3MpXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAiYmFyXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgInBh
c3NcbiI7CisKKyAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihE
ZWZpbmVUZXN0LCBDaGFpbk9ialRvRnVuY0NvbXBvc2UpCit7CisgICAgY29uc3QgY2hhciogaW5w
dXQgPSAiI2RlZmluZSBiYXooZmFpbCkgZmFpbFxuIgorICAgICAgICAgICAgICAgICAgICAgICAg
IiNkZWZpbmUgYmFyKGZhaWwpIGZhaWxcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICIjZGVm
aW5lIGZvbyBiYXIoYmF6KHBhc3MpKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgImZvb1xu
IjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJwYXNzXG4iOworCisgICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0
ZWQpOworfQorCitURVNUX0YoRGVmaW5lVGVzdCwgQ2hhaW5PYmpUb0Z1bmNQYXJlbnNJblRleHQx
KQoreworICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZmFpbCgpIHBhc3NcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIGZvbyBmYWlsXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAiZm9vKClcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAicGFzc1xuIjsKKworICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKK30KKworVEVT
VF9GKERlZmluZVRlc3QsIENoYWluT2JqVG9GdW5jUGFyZW5zSW5UZXh0MikKK3sKKyAgICBjb25z
dCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGJhciB3aXRoLGVtYmVkZGVkLGNvbW1hc1xuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgZnVuYyh4KSBwYXNzXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAiI2RlZmluZSBmb28gZnVuY1xuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgImZvbyhiYXIpXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NcbiI7CisKKyAgICBwcmVwcm9jZXNz
KGlucHV0LCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihEZWZpbmVUZXN0LCBDaGFpbk9ialRvRnVu
Y011bHRpTGV2ZWwpCit7CisgICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBmb28oeCkg
cGFzc1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgYmFyIGZvb1xuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgYmF6IGJhclxuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgIiNkZWZpbmUgam9lIGJhelxuIgorICAgICAgICAgICAgICAgICAgICAgICAgImpv
ZSAoZmFpbClcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAicGFzc1xuIjsKKworICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKK30KKworVEVT
VF9GKERlZmluZVRlc3QsIE9ialRvRnVuY1JlY3Vyc2l2ZSkKK3sKKyAgICBjb25zdCBjaGFyKiBp
bnB1dCA9ICIjZGVmaW5lIEEoYSxiKSBCKGEsYilcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICIjZGVmaW5lIEMgQSgwLEMpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiQ1xuIjsKKyAg
ICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJCKDAsQylcbiI7CisKKyAgICBwcmVw
cm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihEZWZpbmVUZXN0LCBDaGFpbkZ1
bmNUb0Z1bmNDb21wb3NlKQoreworICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgYmF6
KGZhaWwpIGZhaWxcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIGJhcihmYWls
KSBmYWlsXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBmb28oKSBiYXIoYmF6
KHBhc3MpKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgImZvbygpXG4iOworICAgIGNvbnN0
IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInBhc3NcbiI7CisKKyAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Cit9CisKK1RF
U1RfRihEZWZpbmVUZXN0LCBGdW5jU2VsZlJlY3Vyc2l2ZSkKK3sKKyAgICBjb25zdCBjaGFyKiBp
bnB1dCA9ICIjZGVmaW5lIGZvbyhhKSBmb28oMiooYSkpXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAiZm9vKDMpXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImZvbygyKigzKSlcbiI7CisKKyAgICBwcmVwcm9jZXNzKGlu
cHV0LCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihEZWZpbmVUZXN0LCBGdW5jU2VsZkNvbXBvc2Up
Cit7CisgICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBmb28oYSkgZm9vKDIqKGEpKVxu
IgorICAgICAgICAgICAgICAgICAgICAgICAgImZvbyhmb28oMykpXG4iOworICAgIGNvbnN0IGNo
YXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbygyKihm
b28oMiooMykpKSlcbiI7CisKKyAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Cit9CisK
K1RFU1RfRihEZWZpbmVUZXN0LCBGdW5jU2VsZkNvbXBvc2VOb25GdW5jKQoreworICAgIGNvbnN0
IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9vKGJhcikgYmFyXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAiZm9vKGZvbylcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9vXG4iOworCisgICAgcHJlcHJvY2VzcyhpbnB1
dCwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoRGVmaW5lVGVzdCwgRnVuY1NlbGZDb21wb3NlTm9u
RnVuY011bHRpVG9rZW5BcmcpCit7CisgICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBm
b28oYmFyKSBiYXJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJmb28oMStmb28pXG4iOwor
ICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIjErZm9vXG4iOworCisgICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOworfQorCitU
RVNUX0YoRGVmaW5lVGVzdCwgRmluYWxpemVVbmV4cGFuZGVkTWFjcm8pCit7CisgICAgY29uc3Qg
Y2hhciogaW5wdXQgPSAiI2RlZmluZSBleHBhbmQoeCkgZXhwYW5kKHggb25jZSlcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIGZvbyh4KSB4XG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAiZm9vKGV4cGFuZChqdXN0KSlcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQg
PSAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZXhwYW5kKGp1c3Qgb25jZSlcbiI7CisKKyAgICBwcmVwcm9jZXNzKGlucHV0
LCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihEZWZpbmVUZXN0LCBGdW5jQXJnV2l0aENvbW1hcykK
K3sKKyAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZvbyh4KSBwYXNzXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAiZm9vKGFyZ3VtZW50ICh3aXRoLGVtYmVkZGVkLCBjb21tYXMp
IC0tIGJheilcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAicGFzc1xuIjsKKworICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVj
dGVkKTsKK30KKworVEVTVF9GKERlZmluZVRlc3QsIEZ1bmNBcmdPYmpNYXJvV2l0aENvbW1hKQor
eworICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9vKGEpIChhKVxuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgYmFyIHR3byx3b3Jkc1xuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgImZvbyhiYXIpXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIih0d28sd29yZHMpXG4iOworCisgICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQp
OworfQorCitURVNUX0YoRGVmaW5lVGVzdCwgRnVuY0xlZnRQYXJlbkluTWFjcm9SaWdodFBhcmVu
SW5UZXh0KQoreworICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgYmFyKGEpIGEqMlxu
IgorICAgICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgZm9vIGJhcihcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICJmb28gYilcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAi
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiYioyXG4iOworCisgICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOworfQor
CitURVNUX0YoRGVmaW5lVGVzdCwgUmVwZWF0ZWRBcmcpCit7CisgICAgY29uc3QgY2hhciogaW5w
dXQgPSAiI2RlZmluZSBkb3VibGUoeCkgeCB4XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAi
ZG91YmxlKDEpXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIjEgMVxuIjsKKworICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVj
dGVkKTsKK30KKworVEVTVF9GKERlZmluZVRlc3QsIEZ1bmNNaXNzaW5nUmlnaHRQYXJlbikKK3sK
KyAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZvbyh4KSAoMiooeCkpXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAiZm9vKDNcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQg
PSAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworCisgICAgRVhQRUNUX0NB
TEwobURpYWdub3N0aWNzLAorICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6
UFBfTUFDUk9fVU5URVJNSU5BVEVEX0lOVk9DQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAg
cHA6OlNvdXJjZUxvY2F0aW9uKDAsIDIpLAorICAgICAgICAgICAgICAgICAgICAgICJmb28iKSk7
CisKKyAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihEZWZpbmVU
ZXN0LCBGdW5jSW5jb3JyZWN0QXJnQ291bnQpCit7CisgICAgY29uc3QgY2hhciogaW5wdXQgPSAi
I2RlZmluZSBmb28oeCx5KSAoKHgpKyh5KSlcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJm
b28oKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgImZvbygxKVxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgImZvbygxLDIsMylcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAi
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworCisgICAgRVhQ
RUNUX0NBTEwobURpYWdub3N0aWNzLAorICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9z
dGljczo6UFBfTUFDUk9fVE9PX0ZFV19BUkdTLAorICAgICAgICAgICAgICAgICAgICAgIHBwOjpT
b3VyY2VMb2NhdGlvbigwLCAyKSwKKyAgICAgICAgICAgICAgICAgICAgICAiZm9vIikpOworICAg
IEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKKyAgICAgICAgICAgICAgICBwcmludChwcDo6RGlh
Z25vc3RpY3M6OlBQX01BQ1JPX1RPT19GRVdfQVJHUywKKyAgICAgICAgICAgICAgICAgICAgICBw
cDo6U291cmNlTG9jYXRpb24oMCwgMyksCisgICAgICAgICAgICAgICAgICAgICAgImZvbyIpKTsK
KyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsCisgICAgICAgICAgICAgICAgcHJpbnQocHA6
OkRpYWdub3N0aWNzOjpQUF9NQUNST19UT09fTUFOWV9BUkdTLAorICAgICAgICAgICAgICAgICAg
ICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCA0KSwKKyAgICAgICAgICAgICAgICAgICAgICAiZm9v
IikpOworCisgICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoRGVm
aW5lVGVzdCwgVW5kZWYpCit7CisgICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBmb28g
MVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgImZvb1xuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgIiN1bmRlZiBmb29cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJmb29cbiI7Cisg
ICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiMVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImZvb1xuIjsKKworICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsK
K30KKworVEVTVF9GKERlZmluZVRlc3QsIFVuZGVmUHJlZGVmaW5lZCkKK3sKKyAgICBjb25zdCBj
aGFyKiBpbnB1dCA9ICIjdW5kZWYgX19MSU5FX19cbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJfX0xJTkVfX1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgIiN1bmRlZiBfX0ZJTEVfX1xu
IgorICAgICAgICAgICAgICAgICAgICAgICAgIl9fRklMRV9fXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAiI3VuZGVmIF9fVkVSU0lPTl9fXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAi
X19WRVJTSU9OX19cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICIjdW5kZWYgR0xfRVNcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICJHTF9FU1xuIjsKKyAgICBjb25zdCBjaGFyKiBleHBl
Y3RlZCA9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIyXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiMFxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIjEwMFxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIjFcbiI7CisKKyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsCisg
ICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9NQUNST19QUkVERUZJTkVE
X1VOREVGSU5FRCwKKyAgICAgICAgICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwg
MSksCisgICAgICAgICAgICAgICAgICAgICAgIl9fTElORV9fIikpOworICAgIEVYUEVDVF9DQUxM
KG1EaWFnbm9zdGljcywKKyAgICAgICAgICAgICAgICBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQ
X01BQ1JPX1BSRURFRklORURfVU5ERUZJTkVELAorICAgICAgICAgICAgICAgICAgICAgIHBwOjpT
b3VyY2VMb2NhdGlvbigwLCAzKSwKKyAgICAgICAgICAgICAgICAgICAgICAiX19GSUxFX18iKSk7
CisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAorICAgICAgICAgICAgICAgIHByaW50KHBw
OjpEaWFnbm9zdGljczo6UFBfTUFDUk9fUFJFREVGSU5FRF9VTkRFRklORUQsCisgICAgICAgICAg
ICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDUpLAorICAgICAgICAgICAgICAgICAg
ICAgICJfX1ZFUlNJT05fXyIpKTsKKyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsCisgICAg
ICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9NQUNST19QUkVERUZJTkVEX1VO
REVGSU5FRCwKKyAgICAgICAgICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgNyks
CisgICAgICAgICAgICAgICAgICAgICAgIkdMX0VTIikpOworCisgICAgcHJlcHJvY2VzcyhpbnB1
dCwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoRGVmaW5lVGVzdCwgVW5kZWZSZWRlZmluZSkKK3sK
KyAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZvbyAxXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAiZm9vXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiI3VuZGVmIGZvb1xu
IgorICAgICAgICAgICAgICAgICAgICAgICAgImZvb1xuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgIiNkZWZpbmUgZm9vIDJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJmb29cbiI7Cisg
ICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiMVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImZvb1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIjJcbiI7CisKKyAgICBwcmVwcm9jZXNzKGlucHV0LCBl
eHBlY3RlZCk7Cit9CisKKy8vIEV4YW1wbGUgZnJvbSBDOTkgc3RhbmRhcmQgc2VjdGlvbiA2LjEw
LjMuNSBTY29wZSBvZiBtYWNybyBkZWZpbml0aW9ucworVEVTVF9GKERlZmluZVRlc3QsIEM5OUV4
YW1wbGUpCit7CisgICAgY29uc3QgY2hhciogaW5wdXQgPQorICAgICAgICAiI2RlZmluZSB4ICAg
IDMgICAgICAgICAgXG4iCisgICAgICAgICIjZGVmaW5lIGYoYSkgZih4ICogKGEpKSBcbiIKKyAg
ICAgICAgIiN1bmRlZiAgeCAgICAgICAgICAgICAgIFxuIgorICAgICAgICAiI2RlZmluZSB4ICAg
IDIgICAgICAgICAgXG4iCisgICAgICAgICIjZGVmaW5lIGcgICAgZiAgICAgICAgICBcbiIKKyAg
ICAgICAgIiNkZWZpbmUgeiAgICB6WzBdICAgICAgIFxuIgorICAgICAgICAiI2RlZmluZSBoICAg
IGcofiAgICAgICAgXG4iCisgICAgICAgICIjZGVmaW5lIG0oYSkgYSh3KSAgICAgICBcbiIKKyAg
ICAgICAgIiNkZWZpbmUgdyAgICAwLDEgICAgICAgIFxuIgorICAgICAgICAiI2RlZmluZSB0KGEp
IGEgICAgICAgICAgXG4iCisgICAgICAgICIjZGVmaW5lIHAoKSAgaW50ICAgICAgICBcbiIKKyAg
ICAgICAgIiNkZWZpbmUgcSh4KSB4ICAgICAgICAgIFxuIgorICAgICAgICAiICAgICAgICAgICAg
ICAgICAgICAgICAgXG4iCisgICAgICAgICJmKHkrMSkgKyBmKGYoeikpICUgdCh0KGcpKDApICsg
dCkoMSk7XG4iCisgICAgICAgICJnKHgrKDMsNCktdykgfCBoIDUpICYgbVxuIgorICAgICAgICAi
ICAgIChmKV5tKG0pO1xuIgorICAgICAgICAicCgpIGlbcSgpXSA9IHsgcSgxKSwgMjMsIDQsIDUs
IH07XG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gCisgICAgICAgICJcbiIKKyAgICAg
ICAgIlxuIgorICAgICAgICAiXG4iCisgICAgICAgICJcbiIKKyAgICAgICAgIlxuIgorICAgICAg
ICAiXG4iCisgICAgICAgICJcbiIKKyAgICAgICAgIlxuIgorICAgICAgICAiXG4iCisgICAgICAg
ICJcbiIKKyAgICAgICAgIlxuIgorICAgICAgICAiXG4iCisgICAgICAgICJcbiIKKyAgICAgICAg
ImYoMiAqICh5KzEpKSArIGYoMiAqIChmKDIgKiAoelswXSkpKSkgJSBmKDIgKiAoMCkpICsgdCgx
KTtcbiIKKyAgICAgICAgImYoMiAqICgyKygzLDQpLTAsMSkpIHwgZigyICogKH4gNSkpICZcbiIK
KyAgICAgICAgIiBmKDIgKiAoMCwxKSlebSgwLDEpO1xuIgorICAgICAgICAiaW50IGlbXSA9IHsg
MSwgMjMsIDQsIDUsIH07XG4iOworCisgICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwor
fQorCitURVNUX0YoRGVmaW5lVGVzdCwgUHJlZGVmaW5lZF9HTF9FUykKK3sKKyAgICBjb25zdCBj
aGFyKiBpbnB1dCA9ICJHTF9FU1xuIjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICIxXG4i
OworCisgICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoRGVmaW5l
VGVzdCwgUHJlZGVmaW5lZF9WRVJTSU9OKQoreworICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIl9f
VkVSU0lPTl9fXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIjEwMFxuIjsKKworICAg
IHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKERlZmluZVRlc3QsIFBy
ZWRlZmluZWRfTElORTEpCit7CisgICAgY29uc3QgY2hhciogc3RyID0gIlxuXG5fX0xJTkVfXyI7
CisgICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZzdHIsIE5VTEwpKTsKKwor
ICAgIHBwOjpUb2tlbiB0b2tlbjsKKyAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOworICAg
IEVYUEVDVF9FUShwcDo6VG9rZW46OkNPTlNUX0lOVCwgdG9rZW4udHlwZSk7CisgICAgRVhQRUNU
X0VRKCIzIiwgdG9rZW4udGV4dCk7Cit9CisKK1RFU1RfRihEZWZpbmVUZXN0LCBQcmVkZWZpbmVk
X0xJTkUyKQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjbGluZSAxMFxuIgorICAgICAgICAg
ICAgICAgICAgICAgICJfX0xJTkVfX1xuIjsKKyAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29y
LmluaXQoMSwgJnN0ciwgTlVMTCkpOworCisgICAgcHA6OlRva2VuIHRva2VuOworICAgIG1QcmVw
cm9jZXNzb3IubGV4KCZ0b2tlbik7CisgICAgRVhQRUNUX0VRKHBwOjpUb2tlbjo6Q09OU1RfSU5U
LCB0b2tlbi50eXBlKTsKKyAgICBFWFBFQ1RfRVEoIjEwIiwgdG9rZW4udGV4dCk7Cit9CisKK1RF
U1RfRihEZWZpbmVUZXN0LCBQcmVkZWZpbmVkX0ZJTEUxKQoreworICAgIGNvbnN0IGNoYXIqIGNv
bnN0IHN0cltdID0geyIiLCAiIiwgIl9fRklMRV9fIn07CisgICAgQVNTRVJUX1RSVUUobVByZXBy
b2Nlc3Nvci5pbml0KDMsIHN0ciwgTlVMTCkpOworCisgICAgcHA6OlRva2VuIHRva2VuOworICAg
IG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7CisgICAgRVhQRUNUX0VRKHBwOjpUb2tlbjo6Q09O
U1RfSU5ULCB0b2tlbi50eXBlKTsKKyAgICBFWFBFQ1RfRVEoIjIiLCB0b2tlbi50ZXh0KTsKK30K
KworVEVTVF9GKERlZmluZVRlc3QsIFByZWRlZmluZWRfRklMRTIpCit7CisgICAgY29uc3QgY2hh
ciogY29uc3Qgc3RyW10gPSB7IiNsaW5lIDEwIDIwXG4iLCAiX19GSUxFX18ifTsKKyAgICBBU1NF
UlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMiwgc3RyLCBOVUxMKSk7CisKKyAgICBwcDo6VG9r
ZW4gdG9rZW47CisgICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKKyAgICBFWFBFQ1RfRVEo
cHA6OlRva2VuOjpDT05TVF9JTlQsIHRva2VuLnR5cGUpOworICAgIEVYUEVDVF9FUSgiMjEiLCB0
b2tlbi50ZXh0KTsKK30KKworLy8gRGVmaW5lZCBvcGVyYXRvciBwcm9kdWNlZCBieSBtYWNybyBl
eHBhbnNpb24gc2hvdWxkIGJlIHBhcnNlZCBpbnNpZGUgI2lmIGRpcmVjdGl2ZXMKK1RFU1RfRihE
ZWZpbmVUZXN0LCBFeHBhbmRlZERlZmluZWRQYXJzZWRJbnNpZGVJZikKK3sKKyAgICBjb25zdCBj
aGFyICppbnB1dCA9CisgICAgICAgICIjZGVmaW5lIGJhciAxXG4iCisgICAgICAgICIjZGVmaW5l
IGZvbyBkZWZpbmVkKGJhcilcbiIKKyAgICAgICAgIiNpZiBmb29cbiIKKyAgICAgICAgImJhclxu
IgorICAgICAgICAiI2VuZGlmXG4iOworICAgIGNvbnN0IGNoYXIgKmV4cGVjdGVkID0KKyAgICAg
ICAgIlxuIgorICAgICAgICAiXG4iCisgICAgICAgICJcbiIKKyAgICAgICAgIjFcbiIKKyAgICAg
ICAgIlxuIjsKKyAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Cit9CisKKy8vIERlZmlu
ZWQgb3BlcmF0b3IgcHJvZHVjZWQgYnkgbWFjcm8gZXhwYW5zaW9uIHNob3VsZCBub3QgYmUgcGFy
c2VkIG91dHNpZGUgI2lmIGRpcmVjdGl2ZXMKK1RFU1RfRihEZWZpbmVUZXN0LCBFeHBhbmRlZERl
ZmluZWROb3RQYXJzZWRPdXRzaWRlSWYpCit7CisgICAgY29uc3QgY2hhciAqaW5wdXQgPQorICAg
ICAgICAiI2RlZmluZSBmb28gZGVmaW5lZChiYXIpXG4iCisgICAgICAgICJmb29cbiI7CisgICAg
Y29uc3QgY2hhciAqZXhwZWN0ZWQgPQorICAgICAgICAiXG4iCisgICAgICAgICJkZWZpbmVkKGJh
cilcbiI7CisgICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOworfQorCisvLyBUZXN0IHRo
YXQgbGluZSBkaXJlY3RpdmUgZXhwcmVzc2lvbnMgZ2l2ZSBlcnJvcnMgb24gbmVnYXRpdmUgb3Ig
dW5kZWZpbmVkIHNoaWZ0cy4KK1RFU1RfRihEZWZpbmVUZXN0LCBOZWdhdGl2ZVNoaWZ0SW5MaW5l
RGlyZWN0aXZlKQoreworICAgIGNvbnN0IGNoYXIgKmlucHV0ID0KKyAgICAgICAgIiNsaW5lIDEg
PDwgLTFcbiIKKyAgICAgICAgIiNsaW5lIDEgPj4gLTFcbiIKKyAgICAgICAgIiNsaW5lIDEgPDwg
eFxuIgorICAgICAgICAiI2xpbmUgMSA+PiB4XG4iOworICAgIGNvbnN0IGNoYXIgKmV4cGVjdGVk
ID0KKyAgICAgICAgIlxuIgorICAgICAgICAiXG4iCisgICAgICAgICJcbiIKKyAgICAgICAgIlxu
IjsKKworICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQocHA6OkRpYWdub3N0aWNz
OjpQUF9VTkRFRklORURfU0hJRlQsIF8sIF8pKS5UaW1lcyg0KTsKKyAgICBFWFBFQ1RfQ0FMTCht
RGlhZ25vc3RpY3MsIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfSU5WQUxJRF9MSU5FX05VTUJF
UiwgXywgXykpLlRpbWVzKDIpOworICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKK30K
KworLy8gVW5kZWZpbmluZyBhIG1hY3JvIGluIGl0cyBpbnZvY2F0aW9uIHBhcmFtZXRlcnMgcHJv
ZHVjZXMgYW5kIGVycm9yCitURVNUX0YoRGVmaW5lVGVzdCwgVW5kZWZpbmVJbkludm9jYXRpb24p
Cit7CisgICAgY29uc3QgY2hhciAqaW5wdXQgPQorICAgICAgICAiI2RlZmluZSBHKGEsIGIpIGEg
YlxuIgorICAgICAgICAiRyhcbiIKKyAgICAgICAgIiN1bmRlZiBHXG4iCisgICAgICAgICIxLCAy
KVxuIjsKKyAgICBjb25zdCBjaGFyICpleHBlY3RlZCA9ICJcblxuXG4xIDJcbiI7CisKKyAgICBF
WFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfTUFDUk9f
VU5ERUZJTkVEX1dISUxFX0lOVk9LRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgMyksIF8pKTsKKworICAgIHByZXByb2Nlc3MoaW5w
dXQsIGV4cGVjdGVkKTsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9wcmVwcm9jZXNzb3JfdGVzdHMvZXJyb3JfdGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9lcnJvcl90ZXN0
LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
cHJlcHJvY2Vzc29yX3Rlc3RzL2Vycm9yX3Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsOTIgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAiUHJlcHJvY2Vzc29yVGVzdC5oIgor
I2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5oIgorCitjbGFzcyBFcnJvclRl
c3QgOiBwdWJsaWMgUHJlcHJvY2Vzc29yVGVzdAoreworfTsKKworVEVTVF9GKEVycm9yVGVzdCwg
RW1wdHkpCit7CisgICAgY29uc3QgY2hhciogc3RyID0gIiNlcnJvclxuIjsKKyAgICBjb25zdCBj
aGFyKiBleHBlY3RlZCA9ICJcbiI7CisKKyAgICB1c2luZyB0ZXN0aW5nOjpfOworICAgIEVYUEVD
VF9DQUxMKG1EaXJlY3RpdmVIYW5kbGVyLCBoYW5kbGVFcnJvcihwcDo6U291cmNlTG9jYXRpb24o
MCwgMSksICIiKSk7CisgICAgLy8gTm8gZXJyb3Igb3Igd2FybmluZy4KKyAgICBFWFBFQ1RfQ0FM
TChtRGlhZ25vc3RpY3MsIHByaW50KF8sIF8sIF8pKS5UaW1lcygwKTsKKworICAgIHByZXByb2Nl
c3Moc3RyLCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihFcnJvclRlc3QsIE9uZVRva2VuTWVzc2Fn
ZSkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2Vycm9yIGZvb1xuIjsKKyAgICBjb25zdCBj
aGFyKiBleHBlY3RlZCA9ICJcbiI7CisKKyAgICB1c2luZyB0ZXN0aW5nOjpfOworICAgIEVYUEVD
VF9DQUxMKG1EaXJlY3RpdmVIYW5kbGVyLAorICAgICAgICAgICAgICAgIGhhbmRsZUVycm9yKHBw
OjpTb3VyY2VMb2NhdGlvbigwLCAxKSwgIiBmb28iKSk7CisgICAgLy8gTm8gZXJyb3Igb3Igd2Fy
bmluZy4KKyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KF8sIF8sIF8pKS5UaW1l
cygwKTsKKworICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihFcnJv
clRlc3QsIFR3b1Rva2VuTWVzc2FnZSkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2Vycm9y
IGZvbyBiYXJcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iOworCisgICAgdXNp
bmcgdGVzdGluZzo6XzsKKyAgICBFWFBFQ1RfQ0FMTChtRGlyZWN0aXZlSGFuZGxlciwKKyAgICAg
ICAgICAgICAgICBoYW5kbGVFcnJvcihwcDo6U291cmNlTG9jYXRpb24oMCwgMSksICIgZm9vIGJh
ciIpKTsKKyAgICAvLyBObyBlcnJvciBvciB3YXJuaW5nLgorICAgIEVYUEVDVF9DQUxMKG1EaWFn
bm9zdGljcywgcHJpbnQoXywgXywgXykpLlRpbWVzKDApOworCisgICAgcHJlcHJvY2VzcyhzdHIs
IGV4cGVjdGVkKTsKK30KKworVEVTVF9GKEVycm9yVGVzdCwgQ29tbWVudHMpCit7CisgICAgY29u
c3QgY2hhciogc3RyID0gIi8qZm9vKi8iCisgICAgICAgICAgICAgICAgICAgICAgIiMiCisgICAg
ICAgICAgICAgICAgICAgICAgIi8qZm9vKi8iCisgICAgICAgICAgICAgICAgICAgICAgImVycm9y
IgorICAgICAgICAgICAgICAgICAgICAgICIvKmZvbyovIgorICAgICAgICAgICAgICAgICAgICAg
ICJmb28iCisgICAgICAgICAgICAgICAgICAgICAgIi8qZm9vKi8iCisgICAgICAgICAgICAgICAg
ICAgICAgImJhciIKKyAgICAgICAgICAgICAgICAgICAgICAiLypmb28qLyIKKyAgICAgICAgICAg
ICAgICAgICAgICAiLy9mb28iCisgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICBjb25z
dCBjaGFyKiBleHBlY3RlZCA9ICJcbiI7CisKKyAgICB1c2luZyB0ZXN0aW5nOjpfOworICAgIEVY
UEVDVF9DQUxMKG1EaXJlY3RpdmVIYW5kbGVyLAorICAgICAgICAgICAgICAgIGhhbmRsZUVycm9y
KHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwgIiBmb28gYmFyIikpOworICAgIC8vIE5vIGVycm9y
IG9yIHdhcm5pbmcuCisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmludChfLCBfLCBf
KSkuVGltZXMoMCk7CisKKyAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOworfQorCitURVNU
X0YoRXJyb3JUZXN0LCBNaXNzaW5nTmV3bGluZSkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAi
I2Vycm9yIGZvbyI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiIjsKKworICAgIHVzaW5n
IHRlc3Rpbmc6Ol87CisgICAgLy8gRGlyZWN0aXZlIHN1Y2Nlc3NmdWxseSBwYXJzZWQuCisgICAg
RVhQRUNUX0NBTEwobURpcmVjdGl2ZUhhbmRsZXIsCisgICAgICAgICAgICAgICAgaGFuZGxlRXJy
b3IocHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLCAiIGZvbyIpKTsKKyAgICAvLyBFcnJvciByZXBv
cnRlZCBhYm91dCBFT0YuCisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmludChwcDo6
RGlhZ25vc3RpY3M6OlBQX0VPRl9JTl9ESVJFQ1RJVkUsIF8sIF8pKTsKKworICAgIHByZXByb2Nl
c3Moc3RyLCBleHBlY3RlZCk7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2V4dGVuc2lvbl90ZXN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2V4
dGVuc2lvbl90ZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2V4dGVuc2lvbl90ZXN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDEzNiBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpbmNsdWRlICJQcmVw
cm9jZXNzb3JUZXN0LmgiCisjaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmgi
CisKK2NsYXNzIEV4dGVuc2lvblRlc3QgOiBwdWJsaWMgUHJlcHJvY2Vzc29yVGVzdAoreworfTsK
KworVEVTVF9GKEV4dGVuc2lvblRlc3QsIFZhbGlkKQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9
ICIjZXh0ZW5zaW9uIGZvbyA6IGJhclxuIjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJc
biI7CisKKyAgICB1c2luZyB0ZXN0aW5nOjpfOworICAgIEVYUEVDVF9DQUxMKG1EaXJlY3RpdmVI
YW5kbGVyLAorICAgICAgICAgICAgICAgIGhhbmRsZUV4dGVuc2lvbihwcDo6U291cmNlTG9jYXRp
b24oMCwgMSksICJmb28iLCAiYmFyIikpOworICAgIC8vIE5vIGVycm9yIG9yIHdhcm5pbmcuCisg
ICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmludChfLCBfLCBfKSkuVGltZXMoMCk7CisK
KyAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoRXh0ZW5zaW9uVGVz
dCwgQ29tbWVudHMpCit7CisgICAgY29uc3QgY2hhciogc3RyID0gIi8qZm9vKi8iCisgICAgICAg
ICAgICAgICAgICAgICAgIiMiCisgICAgICAgICAgICAgICAgICAgICAgIi8qZm9vKi8iCisgICAg
ICAgICAgICAgICAgICAgICAgImV4dGVuc2lvbiIKKyAgICAgICAgICAgICAgICAgICAgICAiLypm
b28qLyIKKyAgICAgICAgICAgICAgICAgICAgICAiZm9vIgorICAgICAgICAgICAgICAgICAgICAg
ICIvKmZvbyovIgorICAgICAgICAgICAgICAgICAgICAgICI6IgorICAgICAgICAgICAgICAgICAg
ICAgICIvKmZvbyovIgorICAgICAgICAgICAgICAgICAgICAgICJiYXIiCisgICAgICAgICAgICAg
ICAgICAgICAgIi8qZm9vKi8iCisgICAgICAgICAgICAgICAgICAgICAgIi8vZm9vIgorICAgICAg
ICAgICAgICAgICAgICAgICJcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iOwor
CisgICAgdXNpbmcgdGVzdGluZzo6XzsKKyAgICBFWFBFQ1RfQ0FMTChtRGlyZWN0aXZlSGFuZGxl
ciwKKyAgICAgICAgICAgICAgICBoYW5kbGVFeHRlbnNpb24ocHA6OlNvdXJjZUxvY2F0aW9uKDAs
IDEpLCAiZm9vIiwgImJhciIpKTsKKyAgICAvLyBObyBlcnJvciBvciB3YXJuaW5nLgorICAgIEVY
UEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQoXywgXywgXykpLlRpbWVzKDApOworCisgICAg
cHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKEV4dGVuc2lvblRlc3QsIE1p
c3NpbmdOZXdsaW5lKQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjZXh0ZW5zaW9uIGZvbyA6
IGJhciI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiIjsKKworICAgIHVzaW5nIHRlc3Rp
bmc6Ol87CisgICAgLy8gRGlyZWN0aXZlIHN1Y2Nlc3NmdWxseSBwYXJzZWQuCisgICAgRVhQRUNU
X0NBTEwobURpcmVjdGl2ZUhhbmRsZXIsCisgICAgICAgICAgICAgICAgaGFuZGxlRXh0ZW5zaW9u
KHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwgImZvbyIsICJiYXIiKSk7CisgICAgLy8gRXJyb3Ig
cmVwb3J0ZWQgYWJvdXQgRU9GLgorICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQo
cHA6OkRpYWdub3N0aWNzOjpQUF9FT0ZfSU5fRElSRUNUSVZFLCBfLCBfKSk7CisKKyAgICBwcmVw
cm9jZXNzKHN0ciwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoRXh0ZW5zaW9uVGVzdCwgRXh0ZW5z
aW9uQWZ0ZXJOb25QcmVQcm9jZXNzb3JUb2tlbkVTU0wxKQoreworICAgIGNvbnN0IGNoYXIgKnN0
ciA9ICJpbnQgYmF6ID0gMTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2V4dGVuc2lvbiBm
b28gOiBiYXJcbiI7CisgICAgY29uc3QgY2hhciAqZXhwZWN0ZWQgPSAiaW50IGJheiA9IDE7XG5c
biI7CisKKyAgICB1c2luZyB0ZXN0aW5nOjpfOworICAgIC8vIERpcmVjdGl2ZSBzdWNjZXNzZnVs
bHkgcGFyc2VkLgorICAgIEVYUEVDVF9DQUxMKG1EaXJlY3RpdmVIYW5kbGVyLAorICAgICAgICBo
YW5kbGVFeHRlbnNpb24ocHA6OlNvdXJjZUxvY2F0aW9uKDAsIDIpLCAiZm9vIiwgImJhciIpKTsK
KyAgICAvLyBFeHBlY3QgYSB3YXJuaW5nIGFib3V0IGV4dGVuc2lvbiBwcmFnbWFzIGFmdGVyIG5v
bi1wcmVwcm9jZXNzb3IgdG9rZW5zLgorICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJp
bnQocHA6OkRpYWdub3N0aWNzOjpQUF9OT05fUFBfVE9LRU5fQkVGT1JFX0VYVEVOU0lPTl9FU1NM
MSwgXywgXykpOworCisgICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKK30KKworVEVTVF9G
KEV4dGVuc2lvblRlc3QsIEV4dGVuc2lvbkFmdGVyTm9uUHJlUHJvY2Vzc29yVG9rZW5FU1NMMykK
K3sKKyAgICBjb25zdCBjaGFyICpzdHIgPSAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgImludCBiYXogPSAxO1xuIgorICAgICAgICAgICAgICAgICAgICAgICIjZXh0
ZW5zaW9uIGZvbyA6IGJhclxuIjsKKyAgICBjb25zdCBjaGFyICpleHBlY3RlZCA9ICJcbmludCBi
YXogPSAxO1xuXG4iOworCisgICAgdXNpbmcgdGVzdGluZzo6XzsKKyAgICAvLyBEaXJlY3RpdmUg
c3VjY2Vzc2Z1bGx5IHBhcnNlZC4KKyAgICBFWFBFQ1RfQ0FMTChtRGlyZWN0aXZlSGFuZGxlciwK
KyAgICAgICAgaGFuZGxlVmVyc2lvbihwcDo6U291cmNlTG9jYXRpb24oMCwgMSksIDMwMCkpOwor
ICAgIC8vIEV4cGVjdCBhIGVycm9yIGFib3V0IGV4dGVuc2lvbiBwcmFnbWFzIGFmdGVyIG5vbi1w
cmVwcm9jZXNzb3IgdG9rZW5zLgorICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQo
cHA6OkRpYWdub3N0aWNzOjpQUF9OT05fUFBfVE9LRU5fQkVGT1JFX0VYVEVOU0lPTl9FU1NMMywg
XywgXykpOworCisgICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKK30KKworc3RydWN0IEV4
dGVuc2lvblRlc3RQYXJhbQoreworICAgIGNvbnN0IGNoYXIqIHN0cjsKKyAgICBwcDo6RGlhZ25v
c3RpY3M6OklEIGlkOworfTsKKwordXNpbmcgdGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlOwor
Y2xhc3MgSW52YWxpZEV4dGVuc2lvblRlc3QgOiBwdWJsaWMgRXh0ZW5zaW9uVGVzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFdpdGhQYXJhbUludGVyZmFjZTxFeHRlbnNp
b25UZXN0UGFyYW0+Cit7Cit9OworCitURVNUX1AoSW52YWxpZEV4dGVuc2lvblRlc3QsIElkZW50
aWZpZWQpCit7CisgICAgRXh0ZW5zaW9uVGVzdFBhcmFtIHBhcmFtID0gR2V0UGFyYW0oKTsKKyAg
ICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiI7CisKKyAgICB1c2luZyB0ZXN0aW5nOjpfOwor
ICAgIC8vIE5vIGhhbmRsZUV4dGVuc2lvbiBjYWxsLgorICAgIEVYUEVDVF9DQUxMKG1EaXJlY3Rp
dmVIYW5kbGVyLCBoYW5kbGVFeHRlbnNpb24oXywgXywgXykpLlRpbWVzKDApOworICAgIC8vIElu
dmFsaWQgZXh0ZW5zaW9uIGRpcmVjdGl2ZSBjYWxsLgorICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9z
dGljcywgcHJpbnQocGFyYW0uaWQsIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwgXykpOworCisg
ICAgcHJlcHJvY2VzcyhwYXJhbS5zdHIsIGV4cGVjdGVkKTsKK30KKworc3RhdGljIGNvbnN0IEV4
dGVuc2lvblRlc3RQYXJhbSBrUGFyYW1zW10gPSB7CisgICAgeyIjZXh0ZW5zaW9uXG4iLCBwcDo6
RGlhZ25vc3RpY3M6OlBQX0lOVkFMSURfRVhURU5TSU9OX0RJUkVDVElWRX0sCisgICAgeyIjZXh0
ZW5zaW9uIDFcbiIsIHBwOjpEaWFnbm9zdGljczo6UFBfSU5WQUxJRF9FWFRFTlNJT05fTkFNRX0s
CisgICAgeyIjZXh0ZW5zaW9uIGZvbyBiYXJcbiIsIHBwOjpEaWFnbm9zdGljczo6UFBfVU5FWFBF
Q1RFRF9UT0tFTn0sCisgICAgeyIjZXh0ZW5zaW9uIGZvbyA6IFxuIiwgcHA6OkRpYWdub3N0aWNz
OjpQUF9JTlZBTElEX0VYVEVOU0lPTl9ESVJFQ1RJVkV9LAorICAgIHsiI2V4dGVuc2lvbiBmb28g
OiAxXG4iLCBwcDo6RGlhZ25vc3RpY3M6OlBQX0lOVkFMSURfRVhURU5TSU9OX0JFSEFWSU9SfSwK
KyAgICB7IiNleHRlbnNpb24gZm9vIDogYmFyIGJhelxuIiwgcHA6OkRpYWdub3N0aWNzOjpQUF9V
TkVYUEVDVEVEX1RPS0VOfQorfTsKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFsbCwgSW52YWxp
ZEV4dGVuc2lvblRlc3QsIHRlc3Rpbmc6OlZhbHVlc0luKGtQYXJhbXMpKTsKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvaWRlbnRpZmll
cl90ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2lkZW50aWZpZXJfdGVzdC5jcHAJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9p
ZGVudGlmaWVyX3Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYyIEBACisvLwor
Ly8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgorLy8KKworI2luY2x1ZGUgIlByZXByb2Nlc3NvclRlc3QuaCIKKyNpbmNsdWRlICJjb21w
aWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uaCIKKworI2RlZmluZSBDTE9TRURfUkFOR0UoeCwgeSkg
dGVzdGluZzo6UmFuZ2UoeCwgc3RhdGljX2Nhc3Q8Y2hhcj4oKHkpICsgMSkpCisKK2NsYXNzIElk
ZW50aWZpZXJUZXN0IDogcHVibGljIFByZXByb2Nlc3NvclRlc3QKK3sKK3Byb3RlY3RlZDoKKyAg
ICB2b2lkIGV4cGVjdElkZW50aWZpZXIoY29uc3Qgc3RkOjpzdHJpbmcmIHN0cikKKyAgICB7Cisg
ICAgICAgIGNvbnN0IGNoYXIqIGNzdHIgPSBzdHIuY19zdHIoKTsKKyAgICAgICAgQVNTRVJUX1RS
VUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZjc3RyLCAwKSk7CisKKyAgICAgICAgcHA6OlRva2Vu
IHRva2VuOworICAgICAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOworICAgICAgICBFWFBF
Q1RfRVEocHA6OlRva2VuOjpJREVOVElGSUVSLCB0b2tlbi50eXBlKTsKKyAgICAgICAgRVhQRUNU
X0VRKHN0ciwgdG9rZW4udGV4dCk7CisgICAgfQorfTsKKworY2xhc3MgU2luZ2xlTGV0dGVySWRl
bnRpZmllclRlc3QgOiBwdWJsaWMgSWRlbnRpZmllclRlc3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1YmxpYyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8Y2hhcj4K
K3sKK307CisKKy8vIFRoaXMgdGVzdCBjb3ZlcnMgaWRlbnRpZmllciBuYW1lcyBvZiBmb3JtIFtf
YS16QS1aXS4KK1RFU1RfUChTaW5nbGVMZXR0ZXJJZGVudGlmaWVyVGVzdCwgSWRlbnRpZmllZCkK
K3sKKyAgICBzdGQ6OnN0cmluZyBzdHIoMSwgR2V0UGFyYW0oKSk7CisgICAgZXhwZWN0SWRlbnRp
ZmllcihzdHIpOworfQorCisvLyBUZXN0IHN0cmluZzogJ18nCitJTlNUQU5USUFURV9URVNUX0NB
U0VfUChVbmRlcnNjb3JlLAorICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlTGV0dGVySWRl
bnRpZmllclRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpWYWx1ZXMoJ18n
KSk7CisKKy8vIFRlc3Qgc3RyaW5nOiBbYS16XQorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoYV96
LAorICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlTGV0dGVySWRlbnRpZmllclRlc3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICBDTE9TRURfUkFOR0UoJ2EnLCAneicpKTsKKworLy8gVGVz
dCBzdHJpbmc6IFtBLVpdCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChBX1osCisgICAgICAgICAg
ICAgICAgICAgICAgICBTaW5nbGVMZXR0ZXJJZGVudGlmaWVyVGVzdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIENMT1NFRF9SQU5HRSgnQScsICdaJykpOworCit0eXBlZGVmIHN0ZDo6dHIxOjp0
dXBsZTxjaGFyLCBjaGFyPiBJZGVudGlmaWVyUGFyYW1zOworY2xhc3MgRG91YmxlTGV0dGVySWRl
bnRpZmllclRlc3QgOgorICAgIHB1YmxpYyBJZGVudGlmaWVyVGVzdCwKKyAgICBwdWJsaWMgdGVz
dGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPElkZW50aWZpZXJQYXJhbXM+Cit7Cit9OworCisvLyBU
aGlzIHRlc3QgY292ZXJzIGlkZW50aWZpZXIgbmFtZXMgb2YgZm9ybSBbX2EtekEtWl1bX2EtekEt
WjAtOV0uCitURVNUX1AoRG91YmxlTGV0dGVySWRlbnRpZmllclRlc3QsIElkZW50aWZpZWQpCit7
CisgICAgc3RkOjpzdHJpbmcgc3RyOworICAgIHN0ci5wdXNoX2JhY2soc3RkOjp0cjE6OmdldDww
PihHZXRQYXJhbSgpKSk7CisgICAgc3RyLnB1c2hfYmFjayhzdGQ6OnRyMTo6Z2V0PDE+KEdldFBh
cmFtKCkpKTsKKworICAgIGV4cGVjdElkZW50aWZpZXIoc3RyKTsKK30KKworLy8gVGVzdCBzdHJp
bmc6ICJfXyIKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFVuZGVyc2NvcmVfVW5kZXJzY29yZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIERvdWJsZUxldHRlcklkZW50aWZpZXJUZXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6Q29tYmluZSh0ZXN0aW5nOjpWYWx1ZXMoJ18n
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6VmFs
dWVzKCdfJykpKTsKKworLy8gVGVzdCBzdHJpbmc6ICJfIlthLXpdCitJTlNUQU5USUFURV9URVNU
X0NBU0VfUChVbmRlcnNjb3JlX2FfeiwKKyAgICAgICAgICAgICAgICAgICAgICAgIERvdWJsZUxl
dHRlcklkZW50aWZpZXJUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6Q29t
YmluZSh0ZXN0aW5nOjpWYWx1ZXMoJ18nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ0xPU0VEX1JBTkdFKCdhJywgJ3onKSkpOworCisvLyBUZXN0IHN0cmluZzog
Il8iW0EtWl0KK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFVuZGVyc2NvcmVfQV9aLAorICAgICAg
ICAgICAgICAgICAgICAgICAgRG91YmxlTGV0dGVySWRlbnRpZmllclRlc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0aW5nOjpDb21iaW5lKHRlc3Rpbmc6OlZhbHVlcygnXycpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDTE9TRURfUkFOR0UoJ0EnLCAn
WicpKSk7CisKKy8vIFRlc3Qgc3RyaW5nOiAiXyJbMC05XQorSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AoVW5kZXJzY29yZV8wXzksCisgICAgICAgICAgICAgICAgICAgICAgICBEb3VibGVMZXR0ZXJJ
ZGVudGlmaWVyVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OkNvbWJpbmUo
dGVzdGluZzo6VmFsdWVzKCdfJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENMT1NFRF9SQU5HRSgnMCcsICc5JykpKTsKKworLy8gVGVzdCBzdHJpbmc6IFthLXpd
Il8iCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChhX3pfVW5kZXJzY29yZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIERvdWJsZUxldHRlcklkZW50aWZpZXJUZXN0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdGluZzo6Q29tYmluZShDTE9TRURfUkFOR0UoJ2EnLCAneicpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpWYWx1ZXMoJ18nKSkp
OworCisvLyBUZXN0IHN0cmluZzogW2Etel1bYS16XQorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Ao
YV96X2FfeiwKKyAgICAgICAgICAgICAgICAgICAgICAgIERvdWJsZUxldHRlcklkZW50aWZpZXJU
ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6Q29tYmluZShDTE9TRURfUkFO
R0UoJ2EnLCAneicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
TE9TRURfUkFOR0UoJ2EnLCAneicpKSk7CisKKy8vIFRlc3Qgc3RyaW5nOiBbYS16XVtBLVpdCitJ
TlNUQU5USUFURV9URVNUX0NBU0VfUChhX3pfQV9aLAorICAgICAgICAgICAgICAgICAgICAgICAg
RG91YmxlTGV0dGVySWRlbnRpZmllclRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
aW5nOjpDb21iaW5lKENMT1NFRF9SQU5HRSgnYScsICd6JyksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENMT1NFRF9SQU5HRSgnQScsICdaJykpKTsKKworLy8gVGVz
dCBzdHJpbmc6IFthLXpdWzAtOV0KK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKGFfel8wXzksCisg
ICAgICAgICAgICAgICAgICAgICAgICBEb3VibGVMZXR0ZXJJZGVudGlmaWVyVGVzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OkNvbWJpbmUoQ0xPU0VEX1JBTkdFKCdhJywgJ3on
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0xPU0VEX1JBTkdF
KCcwJywgJzknKSkpOworCisvLyBUZXN0IHN0cmluZzogW0EtWl0iXyIKK0lOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QKEFfWl9VbmRlcnNjb3JlLAorICAgICAgICAgICAgICAgICAgICAgICAgRG91Ymxl
TGV0dGVySWRlbnRpZmllclRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpD
b21iaW5lKENMT1NFRF9SQU5HRSgnQScsICdaJyksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlZhbHVlcygnXycpKSk7CisKKy8vIFRlc3Qgc3RyaW5n
OiBbQS1aXVthLXpdCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChBX1pfYV96LAorICAgICAgICAg
ICAgICAgICAgICAgICAgRG91YmxlTGV0dGVySWRlbnRpZmllclRlc3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0aW5nOjpDb21iaW5lKENMT1NFRF9SQU5HRSgnQScsICdaJyksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMT1NFRF9SQU5HRSgnYScsICd6
JykpKTsKKworLy8gVGVzdCBzdHJpbmc6IFtBLVpdW0EtWl0KK0lOU1RBTlRJQVRFX1RFU1RfQ0FT
RV9QKEFfWl9BX1osCisgICAgICAgICAgICAgICAgICAgICAgICBEb3VibGVMZXR0ZXJJZGVudGlm
aWVyVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OkNvbWJpbmUoQ0xPU0VE
X1JBTkdFKCdBJywgJ1onKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ0xPU0VEX1JBTkdFKCdBJywgJ1onKSkpOworCisvLyBUZXN0IHN0cmluZzogW0EtWl1bMC05
XQorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQV9aXzBfOSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIERvdWJsZUxldHRlcklkZW50aWZpZXJUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
dGVzdGluZzo6Q29tYmluZShDTE9TRURfUkFOR0UoJ0EnLCAnWicpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDTE9TRURfUkFOR0UoJzAnLCAnOScpKSk7CisKKy8v
IFRoZSB0ZXN0cyBhYm92ZSBjb3ZlciBvbmUtbGV0dGVyIGFuZCB2YXJpb3VzIGNvbWJpbmF0aW9u
cyBvZiB0d28tbGV0dGVyCisvLyBpZGVudGlmaWVyIG5hbWVzLiBUaGlzIHRlc3QgY292ZXJzIGFs
bCBjaGFyYWN0ZXJzIGluIGEgc2luZ2xlIHN0cmluZy4KK1RFU1RfRihJZGVudGlmaWVyVGVzdCwg
QWxsTGV0dGVycykKK3sKKyAgICBzdGQ6OnN0cmluZyBzdHI7CisgICAgZm9yIChjaGFyIGMgPSAn
YSc7IGMgPD0gJ3onOyArK2MpCisgICAgICAgIHN0ci5wdXNoX2JhY2soYyk7CisKKyAgICBzdHIu
cHVzaF9iYWNrKCdfJyk7CisKKyAgICBmb3IgKGNoYXIgYyA9ICdBJzsgYyA8PSAnWic7ICsrYykK
KyAgICAgICAgc3RyLnB1c2hfYmFjayhjKTsKKworICAgIHN0ci5wdXNoX2JhY2soJ18nKTsKKwor
ICAgIGZvciAoY2hhciBjID0gJzAnOyBjIDw9ICc5JzsgKytjKQorICAgICAgICBzdHIucHVzaF9i
YWNrKGMpOworCisgICAgZXhwZWN0SWRlbnRpZmllcihzdHIpOworfQpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9pZl90ZXN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vz
c29yX3Rlc3RzL2lmX3Rlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvaWZfdGVzdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMDQ4IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgIlByZXBy
b2Nlc3NvclRlc3QuaCIKKyNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uaCIK
KworY2xhc3MgSWZUZXN0IDogcHVibGljIFByZXByb2Nlc3NvclRlc3QKK3sKK307CisKK1RFU1Rf
RihJZlRlc3QsIElmXzApCit7CisgICAgY29uc3QgY2hhciogc3RyID0gInBhc3NfMVxuIgorICAg
ICAgICAgICAgICAgICAgICAgICIjaWYgMFxuIgorICAgICAgICAgICAgICAgICAgICAgICJmYWls
XG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIgorICAgICAgICAgICAgICAgICAg
ICAgICJwYXNzXzJcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAicGFzc18xXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAicGFzc18yXG4iOworCisgICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsK
K30KKworVEVTVF9GKElmVGVzdCwgSWZfMSkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAicGFz
c18xXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNpZiAxXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgInBhc3NfMlxuIgorICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAicGFzc18zXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0g
InBhc3NfMVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInBhc3NfMlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NfM1xuIjsKKworICAgIHByZXByb2Nl
c3Moc3RyLCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihJZlRlc3QsIElmXzBfRWxzZSkKK3sKKyAg
ICBjb25zdCBjaGFyKiBzdHIgPSAicGFzc18xXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNp
ZiAwXG4iCisgICAgICAgICAgICAgICAgICAgICAgImZhaWxcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAiI2Vsc2VcbiIKKyAgICAgICAgICAgICAgICAgICAgICAicGFzc18yXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgIiNlbmRpZlxuIgorICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzNc
biI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAicGFzc18xXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAi
cGFzc18yXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAicGFzc18zXG4iOworCisgICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVk
KTsKK30KKworVEVTVF9GKElmVGVzdCwgSWZfMV9FbHNlKQoreworICAgIGNvbnN0IGNoYXIqIHN0
ciA9ICJwYXNzXzFcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2lmIDFcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAicGFzc18yXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNlbHNlXG4i
CisgICAgICAgICAgICAgICAgICAgICAgImZhaWxcbiIKKyAgICAgICAgICAgICAgICAgICAgICAi
I2VuZGlmXG4iCisgICAgICAgICAgICAgICAgICAgICAgInBhc3NfM1xuIjsKKyAgICBjb25zdCBj
aGFyKiBleHBlY3RlZCA9ICJwYXNzXzFcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzJcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJw
YXNzXzNcbiI7CisKKyAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOworfQorCitURVNUX0Yo
SWZUZXN0LCBJZl8wX0VsaWYpCit7CisgICAgY29uc3QgY2hhciogc3RyID0gInBhc3NfMVxuIgor
ICAgICAgICAgICAgICAgICAgICAgICIjaWYgMFxuIgorICAgICAgICAgICAgICAgICAgICAgICJm
YWlsXzFcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2VsaWYgMFxuIgorICAgICAgICAgICAg
ICAgICAgICAgICJmYWlsXzJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2VsaWYgMVxuIgor
ICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAi
I2VsaWYgMVxuIgorICAgICAgICAgICAgICAgICAgICAgICJmYWlsXzNcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAiI2Vsc2VcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiZmFpbF80XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIgorICAgICAgICAgICAgICAgICAgICAgICJw
YXNzXzNcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAicGFzc18xXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAicGFzc18yXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc18zXG4i
OworCisgICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKElmVGVzdCwg
SWZfMV9FbGlmKQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICJwYXNzXzFcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAiI2lmIDFcbiIKKyAgICAgICAgICAgICAgICAgICAgICAicGFzc18yXG4i
CisgICAgICAgICAgICAgICAgICAgICAgIiNlbGlmIDBcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAiZmFpbF8xXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNlbGlmIDFcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAiZmFpbF8yXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNlbHNlXG4i
CisgICAgICAgICAgICAgICAgICAgICAgImZhaWxfNFxuIgorICAgICAgICAgICAgICAgICAgICAg
ICIjZW5kaWZcbiIKKyAgICAgICAgICAgICAgICAgICAgICAicGFzc18zXG4iOworICAgIGNvbnN0
IGNoYXIqIGV4cGVjdGVkID0gInBhc3NfMVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NfMlxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInBhc3NfM1xuIjsKKworICAgIHByZXByb2Nlc3Moc3RyLCBleHBl
Y3RlZCk7Cit9CisKK1RFU1RfRihJZlRlc3QsIElmX0VsaWZfRWxzZSkKK3sKKyAgICBjb25zdCBj
aGFyKiBzdHIgPSAicGFzc18xXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNpZiAwXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgImZhaWxfMVxuIgorICAgICAgICAgICAgICAgICAgICAgICIj
ZWxpZiAwXG4iCisgICAgICAgICAgICAgICAgICAgICAgImZhaWxfMlxuIgorICAgICAgICAgICAg
ICAgICAgICAgICIjZWxpZiAwXG4iCisgICAgICAgICAgICAgICAgICAgICAgImZhaWxfM1xuIgor
ICAgICAgICAgICAgICAgICAgICAgICIjZWxzZVxuIgorICAgICAgICAgICAgICAgICAgICAgICJw
YXNzXzJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgInBhc3NfM1xuIjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJwYXNzXzFc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzJcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzNc
biI7CisKKyAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoSWZUZXN0
LCBJZl8wX05lc3RlZCkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAicGFzc18xXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgIiNpZiAwXG4iCisgICAgICAgICAgICAgICAgICAgICAgImZhaWxf
MVxuIgorICAgICAgICAgICAgICAgICAgICAgICIjaWYgMVxuIgorICAgICAgICAgICAgICAgICAg
ICAgICJmYWlsXzJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2Vsc2VcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAiZmFpbF8zXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxu
IgorICAgICAgICAgICAgICAgICAgICAgICIjZWxzZVxuIgorICAgICAgICAgICAgICAgICAgICAg
ICJwYXNzXzJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgInBhc3NfM1xuIjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJwYXNz
XzFcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJwYXNzXzJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzNcbiI7CisKKyAgICBwcmVwcm9jZXNz
KHN0ciwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoSWZUZXN0LCBJZl8xX05lc3RlZCkKK3sKKyAg
ICBjb25zdCBjaGFyKiBzdHIgPSAicGFzc18xXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNp
ZiAxXG4iCisgICAgICAgICAgICAgICAgICAgICAgInBhc3NfMlxuIgorICAgICAgICAgICAgICAg
ICAgICAgICIjaWYgMVxuIgorICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzNcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAiI2Vsc2VcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiZmFpbF8x
XG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIgorICAgICAgICAgICAgICAgICAg
ICAgICIjZWxzZVxuIgorICAgICAgICAgICAgICAgICAgICAgICJmYWlsXzJcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAiI2VuZGlmXG4iCisgICAgICAgICAgICAgICAgICAgICAgInBhc3NfNFxu
IjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJwYXNzXzFcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzJcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJwYXNzXzNcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJwYXNzXzRcbiI7CisKKyAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQp
OworfQorCitURVNUX0YoSWZUZXN0LCBPcGVyYXRvclByZWNlZGVuY2UpCit7CisgICAgY29uc3Qg
Y2hhciogc3RyID0gIiNpZiAxICsgMiAqIDMgKyAtICgyNiAlIDE3IC0gKyA0IC8gMilcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAiZmFpbF8xXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNl
bHNlXG4iCisgICAgICAgICAgICAgICAgICAgICAgInBhc3NfMVxuIgorICAgICAgICAgICAgICAg
ICAgICAgICIjZW5kaWZcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAi
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc18xXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiXG4iOworCisgICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKK30K
KworVEVTVF9GKElmVGVzdCwgT3BlcmF0b3JEZWZpbmVkKQoreworICAgIGNvbnN0IGNoYXIqIHN0
ciA9ICIjaWYgZGVmaW5lZCBmb29cbiIKKyAgICAgICAgICAgICAgICAgICAgICAiZmFpbF8xXG4i
CisgICAgICAgICAgICAgICAgICAgICAgIiNlbHNlXG4iCisgICAgICAgICAgICAgICAgICAgICAg
InBhc3NfMVxuIgorICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAiI2RlZmluZSBmb29cbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2lmIGRl
ZmluZWQoZm9vKVxuIgorICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzJcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAiI2Vsc2VcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiZmFpbF8yXG4i
CisgICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIgorICAgICAgICAgICAgICAgICAgICAg
ICIjdW5kZWYgZm9vXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNpZiBkZWZpbmVkICggZm9v
ICkgXG4iCisgICAgICAgICAgICAgICAgICAgICAgImZhaWxfM1xuIgorICAgICAgICAgICAgICAg
ICAgICAgICIjZWxzZVxuIgorICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzNcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0g
IlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NfMVxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInBhc3NfMlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3Nf
M1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKworICAgIHByZXByb2Nlc3Mo
c3RyLCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihJZlRlc3QsIE9wZXJhdG9yRVEpCit7CisgICAg
Y29uc3QgY2hhciogc3RyID0gIiNpZiA0IC0gMSA9PSAyICsgMVxuIgorICAgICAgICAgICAgICAg
ICAgICAgICJwYXNzXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNlbHNlXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgImZhaWxcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4i
OworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgInBhc3NcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiI7
CisKKyAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoSWZUZXN0LCBP
cGVyYXRvck5FKQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjaWYgMSAhPSAyXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgInBhc3NcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2Vsc2Vc
biIKKyAgICAgICAgICAgICAgICAgICAgICAiZmFpbFxuIgorICAgICAgICAgICAgICAgICAgICAg
ICIjZW5kaWZcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAicGFzc1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIlxuIjsKKworICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Cit9CisKK1RFU1Rf
RihJZlRlc3QsIE9wZXJhdG9yTGVzcykKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2lmIDEg
PCAyXG4iCisgICAgICAgICAgICAgICAgICAgICAgInBhc3NcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAiI2Vsc2VcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiZmFpbFxuIgorICAgICAgICAg
ICAgICAgICAgICAgICIjZW5kaWZcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc1xuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlxuIjsKKworICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7
Cit9CisKK1RFU1RfRihJZlRlc3QsIE9wZXJhdG9yR3JlYXRlcikKK3sKKyAgICBjb25zdCBjaGFy
KiBzdHIgPSAiI2lmIDIgPiAxXG4iCisgICAgICAgICAgICAgICAgICAgICAgInBhc3NcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAiI2Vsc2VcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiZmFp
bFxuIgorICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiI7CisgICAgY29uc3QgY2hhciog
ZXhwZWN0ZWQgPSAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc1xuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKworICAgIHByZXByb2Nlc3Mo
c3RyLCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihJZlRlc3QsIE9wZXJhdG9yTEUpCit7CisgICAg
Y29uc3QgY2hhciogc3RyID0gIiNpZiAxIDw9IDJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAi
cGFzc18xXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNlbHNlXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgImZhaWxfMVxuIgorICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAiI2lmIDIgPD0gMlxuIgorICAgICAgICAgICAgICAgICAgICAg
ICJwYXNzXzJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2Vsc2VcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAiZmFpbF8yXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIjsK
KyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJwYXNzXzFcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJwYXNzXzJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiI7
CisKKyAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoSWZUZXN0LCBP
cGVyYXRvckdFKQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjaWYgMiA+PSAxXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgInBhc3NfMVxuIgorICAgICAgICAgICAgICAgICAgICAgICIjZWxz
ZVxuIgorICAgICAgICAgICAgICAgICAgICAgICJmYWlsXzFcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAiI2VuZGlmXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNpZiAyID49IDJcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAicGFzc18yXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNl
bHNlXG4iCisgICAgICAgICAgICAgICAgICAgICAgImZhaWxfMlxuIgorICAgICAgICAgICAgICAg
ICAgICAgICIjZW5kaWZcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAicGFzc18xXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAicGFzc18yXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiXG4iOworCisgICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKK30K
KworVEVTVF9GKElmVGVzdCwgT3BlcmF0b3JCaXR3aXNlT1IpCit7CisgICAgY29uc3QgY2hhciog
c3RyID0gIiNpZiAoMHhhYWFhYWFhYSB8IDB4NTU1NTU1NTUpID09IDB4ZmZmZmZmZmZcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAicGFzc1xuIgorICAgICAgICAgICAgICAgICAgICAgICIjZWxz
ZVxuIgorICAgICAgICAgICAgICAgICAgICAgICJmYWlsXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgIiNlbmRpZlxuIjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJwYXNzXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAi
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiXG4iOworCisgICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKK30KKworVEVT
VF9GKElmVGVzdCwgT3BlcmF0b3JCaXR3aXNlQU5EKQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9
ICIjaWYgKDB4YWFhYWFhYSAmIDB4NTU1NTU1NSkgPT0gMFxuIgorICAgICAgICAgICAgICAgICAg
ICAgICJwYXNzXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNlbHNlXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgImZhaWxcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iOwor
ICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInBhc3NcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisK
KyAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoSWZUZXN0LCBPcGVy
YXRvckJpdHdpc2VYT1IpCit7CisgICAgY29uc3QgY2hhciogc3RyID0gIiNpZiAoMHhhYWFhYWFh
IF4gMHg1NTU1NTU1KSA9PSAweGZmZmZmZmZcbiIKKyAgICAgICAgICAgICAgICAgICAgICAicGFz
c1xuIgorICAgICAgICAgICAgICAgICAgICAgICIjZWxzZVxuIgorICAgICAgICAgICAgICAgICAg
ICAgICJmYWlsXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIjsKKyAgICBjb25z
dCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNz
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworCisgICAgcHJl
cHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKElmVGVzdCwgT3BlcmF0b3JCaXR3
aXNlQ29tcGxlbWVudCkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2lmICh+IDB4ZGVhZGJl
ZWYpID09IC0zNzM1OTI4NTYwXG4iCisgICAgICAgICAgICAgICAgICAgICAgInBhc3NcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAiI2Vsc2VcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiZmFp
bFxuIgorICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiI7CisgICAgY29uc3QgY2hhciog
ZXhwZWN0ZWQgPSAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc1xuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKworICAgIHByZXByb2Nlc3Mo
c3RyLCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihJZlRlc3QsIE9wZXJhdG9yTGVmdCkKK3sKKyAg
ICBjb25zdCBjaGFyKiBzdHIgPSAiI2lmICgxIDw8IDEyKSA9PSA0MDk2XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgInBhc3NcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2Vsc2VcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAiZmFpbFxuIgorICAgICAgICAgICAgICAgICAgICAgICIjZW5k
aWZcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAicGFzc1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlxuIjsKKworICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihJZlRl
c3QsIE9wZXJhdG9yUmlnaHQpCit7CisgICAgY29uc3QgY2hhciogc3RyID0gIiNpZiAoMzE3NjIg
Pj4gOCkgPT0gMTI0XG4iCisgICAgICAgICAgICAgICAgICAgICAgInBhc3NcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAiI2Vsc2VcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiZmFpbFxuIgor
ICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0
ZWQgPSAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc1xuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKworICAgIHByZXByb2Nlc3Moc3RyLCBl
eHBlY3RlZCk7Cit9CisKK1RFU1RfRihJZlRlc3QsIEV4cHJlc3Npb25XaXRoTWFjcm9zKQorewor
ICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjZGVmaW5lIG9uZSAxXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgIiNkZWZpbmUgdHdvIDJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSB0
aHJlZSAzXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNpZiBvbmUgKyB0d28gPT0gdGhyZWVc
biIKKyAgICAgICAgICAgICAgICAgICAgICAicGFzc1xuIgorICAgICAgICAgICAgICAgICAgICAg
ICIjZWxzZVxuIgorICAgICAgICAgICAgICAgICAgICAgICJmYWlsXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgIiNlbmRpZlxuIjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJwYXNzXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAi
XG4iOworCisgICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKElmVGVz
dCwgSnVua0luc2lkZUV4Y2x1ZGVkQmxvY2tJZ25vcmVkKQoreworICAgIGNvbnN0IGNoYXIqIHN0
ciA9ICIjaWYgMFxuIgorICAgICAgICAgICAgICAgICAgICAgICJmb28gIUAjJCVeJiogLjFiYXJc
biIKKyAgICAgICAgICAgICAgICAgICAgICAiI2Zvb1xuIgorICAgICAgICAgICAgICAgICAgICAg
ICIjaWYgYmFyXG4iCisgICAgICAgICAgICAgICAgICAgICAgImZhaWxcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAiI2VuZGlmXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNlbHNlXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgInBhc3NcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2Vu
ZGlmXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJcbiI7CisKKyAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQp
OworfQorCitURVNUX0YoSWZUZXN0LCBJZmRlZikKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAi
I2RlZmluZSBmb29cbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2lmZGVmIGZvb1xuIgorICAg
ICAgICAgICAgICAgICAgICAgICJwYXNzXzFcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2Vs
c2VcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiZmFpbF8xXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgIiNlbmRpZlxuIgorICAgICAgICAgICAgICAgICAgICAgICIjdW5kZWYgZm9vXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgIiNpZmRlZiBmb29cbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAiZmFpbF8yXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNlbHNlXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgInBhc3NfMlxuIgorICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiI7
CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc18xXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAicGFzc18yXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiXG4iOworCisgICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKK30KKworVEVTVF9G
KElmVGVzdCwgSWZuZGVmKQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjZGVmaW5lIGZvb1xu
IgorICAgICAgICAgICAgICAgICAgICAgICIjaWZuZGVmIGZvb1xuIgorICAgICAgICAgICAgICAg
ICAgICAgICJmYWlsXzFcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2Vsc2VcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAicGFzc18xXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNlbmRp
ZlxuIgorICAgICAgICAgICAgICAgICAgICAgICIjdW5kZWYgZm9vXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgIiNpZm5kZWYgZm9vXG4iCisgICAgICAgICAgICAgICAgICAgICAgInBhc3NfMlxu
IgorICAgICAgICAgICAgICAgICAgICAgICIjZWxzZVxuIgorICAgICAgICAgICAgICAgICAgICAg
ICJmYWlsXzJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iOworICAgIGNvbnN0
IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NfMVxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInBhc3NfMlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsK
KworICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihJZlRlc3QsIE1p
c3NpbmdFeHByZXNzaW9uKQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjaWZcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iOworICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNz
b3IuaW5pdCgxLCAmc3RyLCAwKSk7CisKKyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsCisg
ICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9JTlZBTElEX0VYUFJFU1NJ
T04sCisgICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLAorICAg
ICAgICAgICAgICAgICAgICAgICJzeW50YXggZXJyb3IiKSk7CisKKyAgICBwcDo6VG9rZW4gdG9r
ZW47CisgICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKK30KKworVEVTVF9GKElmVGVzdCwg
RGl2aXNpb25CeVplcm8pCit7CisgICAgY29uc3QgY2hhciogc3RyID0gIiNpZiAxIC8gKDMgLSAo
MSArIDIpKVxuIgorICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiI7CisgICAgQVNTRVJU
X1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZzdHIsIDApKTsKKworICAgIEVYUEVDVF9DQUxM
KG1EaWFnbm9zdGljcywKKyAgICAgICAgICAgICAgICBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQ
X0RJVklTSU9OX0JZX1pFUk8sCisgICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0
aW9uKDAsIDEpLCAiMSAvIDAiKSk7CisKKyAgICBwcDo6VG9rZW4gdG9rZW47CisgICAgbVByZXBy
b2Nlc3Nvci5sZXgoJnRva2VuKTsKK30KKworVEVTVF9GKElmVGVzdCwgTW9kdWxvQnlaZXJvKQor
eworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjaWYgMSAlICgzIC0gKDEgKyAyKSlcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iOworICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNz
b3IuaW5pdCgxLCAmc3RyLCAwKSk7CisKKyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsCisg
ICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9ESVZJU0lPTl9CWV9aRVJP
LAorICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwgIjEgJSAw
IikpOworCisgICAgcHA6OlRva2VuIHRva2VuOworICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tl
bik7Cit9CisKK1RFU1RfRihJZlRlc3QsIERlY0ludGVnZXJPdmVyZmxvdykKK3sKKyAgICBjb25z
dCBjaGFyKiBzdHIgPSAiI2lmIDQyOTQ5NjcyOTZcbiIKKyAgICAgICAgICAgICAgICAgICAgICAi
I2VuZGlmXG4iOworICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCAw
KSk7CisKKyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsCisgICAgICAgICAgICAgICAgcHJp
bnQocHA6OkRpYWdub3N0aWNzOjpQUF9JTlRFR0VSX09WRVJGTE9XLAorICAgICAgICAgICAgICAg
ICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwgIjQyOTQ5NjcyOTYiKSk7CisKKyAgICBw
cDo6VG9rZW4gdG9rZW47CisgICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKK30KKworVEVT
VF9GKElmVGVzdCwgT2N0SW50ZWdlck92ZXJmbG93KQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9
ICIjaWYgMDc3Nzc3Nzc3Nzc3XG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIjsK
KyAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJnN0ciwgMCkpOworCisgICAg
RVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAorICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFn
bm9zdGljczo6UFBfSU5URUdFUl9PVkVSRkxPVywKKyAgICAgICAgICAgICAgICAgICAgICBwcDo6
U291cmNlTG9jYXRpb24oMCwgMSksICIwNzc3Nzc3Nzc3NzciKSk7CisKKyAgICBwcDo6VG9rZW4g
dG9rZW47CisgICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKK30KKworVEVTVF9GKElmVGVz
dCwgSGV4SW50ZWdlck92ZXJmbG93KQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjaWYgMHhm
ZmZmZmZmZmZcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iOworICAgIEFTU0VS
VF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCAwKSk7CisKKyAgICBFWFBFQ1RfQ0FM
TChtRGlhZ25vc3RpY3MsCisgICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQ
UF9JTlRFR0VSX09WRVJGTE9XLAorICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2Nh
dGlvbigwLCAxKSwgIjB4ZmZmZmZmZmZmIikpOworCisgICAgcHA6OlRva2VuIHRva2VuOworICAg
IG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Cit9CisKK1RFU1RfRihJZlRlc3QsIFVuZGVmaW5l
ZE1hY3JvKQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjaWYgVU5ERUZJTkVEXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIjsKKyAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vz
c29yLmluaXQoMSwgJnN0ciwgMCkpOworCisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAor
ICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfQ09ORElUSU9OQUxfVU5F
WFBFQ1RFRF9UT0tFTiwKKyAgICAgICAgICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRpb24o
MCwgMSksCisgICAgICAgICAgICAgICAgICAgICAgIlVOREVGSU5FRCIpKTsKKworICAgIHBwOjpU
b2tlbiB0b2tlbjsKKyAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOworfQorCitURVNUX0Yo
SWZUZXN0LCBJbnZhbGlkRXhwcmVzc2lvbklnbm9yZWRGb3JFeGNsdWRlZEVsaWYpCit7CisgICAg
Y29uc3QgY2hhciogc3RyID0gIiNpZiAxXG4iCisgICAgICAgICAgICAgICAgICAgICAgInBhc3Nc
biIKKyAgICAgICAgICAgICAgICAgICAgICAiI2VsaWYgVU5ERUZJTkVEXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgImZhaWxcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iOwor
ICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInBhc3NcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisK
KyAgICAvLyBObyBlcnJvciBvciB3YXJuaW5nLgorICAgIHVzaW5nIHRlc3Rpbmc6Ol87CisgICAg
RVhQRUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmludChfLCBfLCBfKSkuVGltZXMoMCk7CisKKyAg
ICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoSWZUZXN0LCBFbHNlV2l0
aG91dElmKQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjZWxzZVxuIjsKKyAgICBBU1NFUlRf
VFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJnN0ciwgMCkpOworCisgICAgRVhQRUNUX0NBTEwo
bURpYWdub3N0aWNzLAorICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBf
Q09ORElUSU9OQUxfRUxTRV9XSVRIT1VUX0lGLAorICAgICAgICAgICAgICAgICAgICAgIHBwOjpT
b3VyY2VMb2NhdGlvbigwLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAiZWxzZSIpKTsKKwor
ICAgIHBwOjpUb2tlbiB0b2tlbjsKKyAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOworfQor
CitURVNUX0YoSWZUZXN0LCBFbGlmV2l0aG91dElmKQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9
ICIjZWxpZiAxXG4iOworICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmc3Ry
LCAwKSk7CisKKyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsCisgICAgICAgICAgICAgICAg
cHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9DT05ESVRJT05BTF9FTElGX1dJVEhPVVRfSUYsCisg
ICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLAorICAgICAgICAg
ICAgICAgICAgICAgICJlbGlmIikpOworCisgICAgcHA6OlRva2VuIHRva2VuOworICAgIG1QcmVw
cm9jZXNzb3IubGV4KCZ0b2tlbik7Cit9CisKK1RFU1RfRihJZlRlc3QsIEVuZGlmV2l0aG91dElm
KQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjZW5kaWZcbiI7CisgICAgQVNTRVJUX1RSVUUo
bVByZXByb2Nlc3Nvci5pbml0KDEsICZzdHIsIDApKTsKKworICAgIEVYUEVDVF9DQUxMKG1EaWFn
bm9zdGljcywKKyAgICAgICAgICAgICAgICBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX0NPTkRJ
VElPTkFMX0VORElGX1dJVEhPVVRfSUYsCisgICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJj
ZUxvY2F0aW9uKDAsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICJlbmRpZiIpKTsKKworICAg
IHBwOjpUb2tlbiB0b2tlbjsKKyAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOworfQorCitU
RVNUX0YoSWZUZXN0LCBFbHNlQWZ0ZXJFbHNlKQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIj
aWYgMVxuIgorICAgICAgICAgICAgICAgICAgICAgICIjZWxzZVxuIgorICAgICAgICAgICAgICAg
ICAgICAgICIjZWxzZVxuIgorICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiI7CisgICAg
QVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZzdHIsIDApKTsKKworICAgIEVYUEVD
VF9DQUxMKG1EaWFnbm9zdGljcywKKyAgICAgICAgICAgICAgICBwcmludChwcDo6RGlhZ25vc3Rp
Y3M6OlBQX0NPTkRJVElPTkFMX0VMU0VfQUZURVJfRUxTRSwKKyAgICAgICAgICAgICAgICAgICAg
ICBwcDo6U291cmNlTG9jYXRpb24oMCwgMyksCisgICAgICAgICAgICAgICAgICAgICAgImVsc2Ui
KSk7CisKKyAgICBwcDo6VG9rZW4gdG9rZW47CisgICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2Vu
KTsKK30KKworVEVTVF9GKElmVGVzdCwgRWxpZkFmdGVyRWxzZSkKK3sKKyAgICBjb25zdCBjaGFy
KiBzdHIgPSAiI2lmIDFcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2Vsc2VcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAiI2VsaWYgMFxuIgorICAgICAgICAgICAgICAgICAgICAgICIjZW5k
aWZcbiI7CisgICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZzdHIsIDApKTsK
KworICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKKyAgICAgICAgICAgICAgICBwcmludChw
cDo6RGlhZ25vc3RpY3M6OlBQX0NPTkRJVElPTkFMX0VMSUZfQUZURVJfRUxTRSwKKyAgICAgICAg
ICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgMyksCisgICAgICAgICAgICAgICAg
ICAgICAgImVsaWYiKSk7CisKKyAgICBwcDo6VG9rZW4gdG9rZW47CisgICAgbVByZXByb2Nlc3Nv
ci5sZXgoJnRva2VuKTsKK30KKworVEVTVF9GKElmVGVzdCwgVW50ZXJtaW5hdGVkSWYpCit7Cisg
ICAgY29uc3QgY2hhciogc3RyID0gIiNpZiAxXG4iOworICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9j
ZXNzb3IuaW5pdCgxLCAmc3RyLCAwKSk7CisKKyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3Ms
CisgICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9DT05ESVRJT05BTF9V
TlRFUk1JTkFURUQsCisgICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAs
IDEpLAorICAgICAgICAgICAgICAgICAgICAgICJpZiIpKTsKKworICAgIHBwOjpUb2tlbiB0b2tl
bjsKKyAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOworfQorCitURVNUX0YoSWZUZXN0LCBV
bnRlcm1pbmF0ZWRJZmRlZikKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2lmZGVmIGZvb1xu
IjsKKyAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJnN0ciwgMCkpOworCisg
ICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAorICAgICAgICAgICAgICAgIHByaW50KHBwOjpE
aWFnbm9zdGljczo6UFBfQ09ORElUSU9OQUxfVU5URVJNSU5BVEVELAorICAgICAgICAgICAgICAg
ICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAi
aWZkZWYiKSk7CisKKyAgICBwcDo6VG9rZW4gdG9rZW47CisgICAgbVByZXByb2Nlc3Nvci5sZXgo
JnRva2VuKTsKK30KKworLy8gVGhlIHByZXByb2Nlc3NvciBvbmx5IGFsbG93cyBvbmUgZXhwcmVz
c2lvbiB0byBmb2xsb3cgYW4gI2lmIGRpcmVjdGl2ZS4KKy8vIFN1cHBseWluZyB0d28gaW50ZWdl
ciBleHByZXNzaW9ucyBzaG91bGQgYmUgYW4gZXJyb3IuCitURVNUX0YoSWZUZXN0LCBFeHRyYUlu
dEV4cHJlc3Npb24pCit7CisgICAgY29uc3QgY2hhciAqc3RyID0KKyAgICAgICAgIiNpZiAxIDFc
biIKKyAgICAgICAgIiNlbmRpZlxuIjsKKyAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmlu
aXQoMSwgJnN0ciwgMCkpOworCisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmludChw
cDo6RGlhZ25vc3RpY3M6OlBQX0NPTkRJVElPTkFMX1VORVhQRUNURURfVE9LRU4sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgMSksICIx
IikpOworCisgICAgcHA6OlRva2VuIHRva2VuOworICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tl
bik7Cit9CisKKy8vIFRoZSBwcmVwcm9jZXNzb3Igb25seSBhbGxvd3Mgb25lIGV4cHJlc3Npb24g
dG8gZm9sbG93IGFuICNpZiBkaXJlY3RpdmUuCisvLyBTdXBwbHlpbmcgdHdvIGV4cHJlc3Npb25z
IHdoZXJlIG9uZSB1c2VzIGEgcHJlcHJvY2Vzc29yIGRlZmluZSBzaG91bGQgYmUgYW4gZXJyb3Iu
CitURVNUX0YoSWZUZXN0LCBFeHRyYUlkZW50aWZpZXJFeHByZXNzaW9uKQoreworICAgIGNvbnN0
IGNoYXIgKnN0ciA9CisgICAgICAgICIjZGVmaW5lIG9uZSAxXG4iCisgICAgICAgICIjaWYgMSBv
bmVcbiIKKyAgICAgICAgIiNlbmRpZlxuIjsKKyAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29y
LmluaXQoMSwgJnN0ciwgMCkpOworCisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmlu
dChwcDo6RGlhZ25vc3RpY3M6OlBQX0NPTkRJVElPTkFMX1VORVhQRUNURURfVE9LRU4sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgMiks
ICIxIikpOworCisgICAgcHA6OlRva2VuIHRva2VuOworICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0
b2tlbik7Cit9CisKKy8vIERpdmlkZSBieSB6ZXJvIHRoYXQncyBub3QgZXZhbHVhdGVkIGJlY2F1
c2Ugb2Ygc2hvcnQtY2lyY3VpdGluZyBzaG91bGQgbm90IGNhdXNlIGFuIGVycm9yLgorVEVTVF9G
KElmVGVzdCwgU2hvcnRDaXJjdWl0ZWREaXZpZGVCeVplcm8pCit7CisgICAgY29uc3QgY2hhciAq
c3RyID0KKyAgICAgICAgIiNpZiAxIHx8ICgyIC8gMClcbiIKKyAgICAgICAgInBhc3NcbiIKKyAg
ICAgICAgIiNlbmRpZlxuIjsKKyAgICBjb25zdCBjaGFyICpleHBlY3RlZCA9CisgICAgICAgICJc
biIKKyAgICAgICAgInBhc3NcbiIKKyAgICAgICAgIlxuIjsKKworICAgIHByZXByb2Nlc3Moc3Ry
LCBleHBlY3RlZCk7Cit9CisKKy8vIFVuZGVmaW5lZCBpZGVudGlmaWVyIHRoYXQncyBub3QgZXZh
bHVhdGVkIGJlY2F1c2Ugb2Ygc2hvcnQtY2lyY3VpdGluZyBzaG91bGQgbm90IGNhdXNlIGFuIGVy
cm9yLgorVEVTVF9GKElmVGVzdCwgU2hvcnRDaXJjdWl0ZWRVbmRlZmluZWQpCit7CisgICAgY29u
c3QgY2hhciAqc3RyID0KKyAgICAgICAgIiNpZiAxIHx8IFVOREVGSU5FRFxuIgorICAgICAgICAi
cGFzc1xuIgorICAgICAgICAiI2VuZGlmXG4iOworICAgIGNvbnN0IGNoYXIgKmV4cGVjdGVkID0K
KyAgICAgICAgIlxuIgorICAgICAgICAicGFzc1xuIgorICAgICAgICAiXG4iOworCisgICAgcHJl
cHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKK30KKworLy8gRGVmaW5lZCBvcGVyYXRvciBwcm9kdWNl
ZCBieSBtYWNybyBleHBhbnNpb24gaGFzIHVuZGVmaW5lZCBiZWhhdmlvciBhY2NvcmRpbmcgdG8g
QysrIHNwZWMsCisvLyB3aGljaCB0aGUgR0xTTCBzcGVjIHJlZmVyZW5jZXMgKHNlZSBDKysxNCBk
cmFmdCBzcGVjIHNlY3Rpb24gMTYuMS40KSwgYnV0IHRoaXMgYmVoYXZpb3IgaXMKKy8vIG5lZWRl
ZCBmb3IgcGFzc2luZyBkRVFQIHRlc3RzLCB3aGljaCBlbmZvcmNlIHN0cmljdGVyIGNvbXBhdGli
aWxpdHkgYmV0d2VlbiBpbXBsZW1lbnRhdGlvbnMuCitURVNUX0YoSWZUZXN0LCBEZWZpbmVkT3Bl
cmF0b3JWYWxpZEFmdGVyTWFjcm9FeHBhbnNpb24pCit7CisgICAgY29uc3QgY2hhciAqc3RyID0K
KyAgICAgICAgIiNkZWZpbmUgZm9vIGRlZmluZWRcbiIKKyAgICAgICAgIiNpZiAhZm9vIGJhclxu
IgorICAgICAgICAicGFzc1xuIgorICAgICAgICAiI2VuZGlmXG4iOworICAgIEFTU0VSVF9UUlVF
KG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCAwKSk7CisKKyAgICBFWFBFQ1RfQ0FMTChtRGlh
Z25vc3RpY3MsIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfQ09ORElUSU9OQUxfVU5FWFBFQ1RF
RF9UT0tFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VM
b2NhdGlvbigwLCAyKSwgImRlZmluZWQiKSk7CisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNz
LCBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX0NPTkRJVElPTkFMX1VORVhQRUNURURfVE9LRU4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRpb24o
MCwgMiksICJiYXIiKSk7CisKKyAgICBwcDo6VG9rZW4gdG9rZW47CisgICAgbVByZXByb2Nlc3Nv
ci5sZXgoJnRva2VuKTsKK30KKworLy8gRGVmaW5lZCBvcGVyYXRvciBwcm9kdWNlZCBieSBtYWNy
byBleHBhbnNpb24gaGFzIHVuZGVmaW5lZCBiZWhhdmlvciBhY2NvcmRpbmcgdG8gQysrIHNwZWMs
CisvLyB3aGljaCB0aGUgR0xTTCBzcGVjIHJlZmVyZW5jZXMgKHNlZSBDKysxNCBkcmFmdCBzcGVj
IHNlY3Rpb24gMTYuMS40KSwgYnV0IHRoaXMgYmVoYXZpb3IgaXMKKy8vIG5lZWRlZCBmb3IgcGFz
c2luZyBkRVFQIHRlc3RzLCB3aGljaCBlbmZvcmNlIHN0cmljdGVyIGNvbXBhdGliaWxpdHkgYmV0
d2VlbiBpbXBsZW1lbnRhdGlvbnMuCitURVNUX0YoSWZUZXN0LCBVbnRlcm1pbmF0ZWREZWZpbmVk
SW5NYWNybykKK3sKKyAgICBjb25zdCBjaGFyICpzdHIgPQorICAgICAgICAiI2RlZmluZSBmb28g
ZGVmaW5lZChcbiIKKyAgICAgICAgIiNpZiBmb29cbiIKKyAgICAgICAgIiNlbmRpZlxuIjsKKyAg
ICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJnN0ciwgMCkpOworCisgICAgRVhQ
RUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX0NPTkRJVElP
TkFMX1VORVhQRUNURURfVE9LRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcDo6U291cmNlTG9jYXRpb24oMCwgMiksICJkZWZpbmVkIikpOworICAgIEVYUEVDVF9DQUxM
KG1EaWFnbm9zdGljcywgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9DT05ESVRJT05BTF9VTkVY
UEVDVEVEX1RPS0VOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHA6OlNv
dXJjZUxvY2F0aW9uKDAsIDIpLCAiKCIpKTsKKworICAgIHBwOjpUb2tlbiB0b2tlbjsKKyAgICBt
UHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOworfQorCisvLyBEZWZpbmVkIG9wZXJhdG9yIHByb2R1
Y2VkIGJ5IG1hY3JvIGV4cGFuc2lvbiBoYXMgdW5kZWZpbmVkIGJlaGF2aW9yIGFjY29yZGluZyB0
byBDKysgc3BlYywKKy8vIHdoaWNoIHRoZSBHTFNMIHNwZWMgcmVmZXJlbmNlcyAoc2VlIEMrKzE0
IGRyYWZ0IHNwZWMgc2VjdGlvbiAxNi4xLjQpLCBidXQgdGhpcyBiZWhhdmlvciBpcworLy8gbmVl
ZGVkIGZvciBwYXNzaW5nIGRFUVAgdGVzdHMsIHdoaWNoIGVuZm9yY2Ugc3RyaWN0ZXIgY29tcGF0
aWJpbGl0eSBiZXR3ZWVuIGltcGxlbWVudGF0aW9ucy4KK1RFU1RfRihJZlRlc3QsIFVudGVybWlu
YXRlZERlZmluZWRJbk1hY3JvMikKK3sKKyAgICBjb25zdCBjaGFyICpzdHIgPQorICAgICAgICAi
I2RlZmluZSBmb28gZGVmaW5lZChiYXJcbiIKKyAgICAgICAgIiNpZiBmb29cbiIKKyAgICAgICAg
IiNlbmRpZlxuIjsKKyAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJnN0ciwg
MCkpOworCisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmludChwcDo6RGlhZ25vc3Rp
Y3M6OlBQX0NPTkRJVElPTkFMX1VORVhQRUNURURfVE9LRU4sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgMiksICJkZWZpbmVkIikpOwor
ICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9D
T05ESVRJT05BTF9VTkVYUEVDVEVEX1RPS0VOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDIpLCAiKCIpKTsKKworICAgIHBwOjpUb2tl
biB0b2tlbjsKKyAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOworfQorCisvLyBVbmRlZmlu
ZWQgc2hpZnQ6IG5lZ2F0aXZlIHNoaWZ0IG9mZnNldC4KK1RFU1RfRihJZlRlc3QsIEJpdFNoaWZ0
TGVmdE9wZXJhdG9yTmVnYXRpdmVPZmZzZXQpCit7CisgICAgY29uc3QgY2hhciAqc3RyID0KKyAg
ICAgICAgIiNpZiAyIDw8IC0xID09IDFcbiIKKyAgICAgICAgImZvb1xuIgorICAgICAgICAiI2Vu
ZGlmXG4iOworICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCAwKSk7
CisKKyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsCisgICAgICAgICAgICAgICAgcHJpbnQo
cHA6OkRpYWdub3N0aWNzOjpQUF9VTkRFRklORURfU0hJRlQsIHBwOjpTb3VyY2VMb2NhdGlvbigw
LCAxKSwgIjIgPDwgLTEiKSk7CisKKyAgICBwcDo6VG9rZW4gdG9rZW47CisgICAgbVByZXByb2Nl
c3Nvci5sZXgoJnRva2VuKTsKK30KKworLy8gVW5kZWZpbmVkIHNoaWZ0OiBzaGlmdCBvZmZzZXQg
aXMgb3V0IG9mIHJhbmdlLgorVEVTVF9GKElmVGVzdCwgQml0U2hpZnRMZWZ0T3BlcmF0b3JPZmZz
ZXQzMikKK3sKKyAgICBjb25zdCBjaGFyICpzdHIgPQorICAgICAgICAiI2lmIDIgPDwgMzIgPT0g
MVxuIgorICAgICAgICAiZm9vXG4iCisgICAgICAgICIjZW5kaWZcbiI7CisgICAgQVNTRVJUX1RS
VUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZzdHIsIDApKTsKKworICAgIEVYUEVDVF9DQUxMKG1E
aWFnbm9zdGljcywKKyAgICAgICAgICAgICAgICBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX1VO
REVGSU5FRF9TSElGVCwgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLCAiMiA8PCAzMiIpKTsKKwor
ICAgIHBwOjpUb2tlbiB0b2tlbjsKKyAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOworfQor
CisvLyBMZWZ0IGhhbmQgc2lkZSBvZiBzaGlmdCBpcyBuZWdhdGl2ZS4KK1RFU1RfRihJZlRlc3Qs
IEJpdFNoaWZ0TGVmdE9wZXJhdG9yTmVnYXRpdmVMSFMpCit7CisgICAgY29uc3QgY2hhciAqc3Ry
ID0KKyAgICAgICAgIiNpZiAoLTIpIDw8IDEgPT0gLTRcbiIKKyAgICAgICAgInBhc3NcbiIKKyAg
ICAgICAgIiNlbmRpZlxuIjsKKyAgICBjb25zdCBjaGFyICpleHBlY3RlZCA9CisgICAgICAgICJc
biIKKyAgICAgICAgInBhc3NcbiIKKyAgICAgICAgIlxuIjsKKworICAgIHByZXByb2Nlc3Moc3Ry
LCBleHBlY3RlZCk7Cit9CisKKy8vIFVuZGVmaW5lZCBzaGlmdDogc2hpZnQgb2Zmc2V0IGlzIG91
dCBvZiByYW5nZS4KK1RFU1RfRihJZlRlc3QsIEJpdFNoaWZ0UmlnaHRPcGVyYXRvck5lZ2F0aXZl
T2Zmc2V0KQoreworICAgIGNvbnN0IGNoYXIgKnN0ciA9CisgICAgICAgICIjaWYgMiA+PiAtMSA9
PSA0XG4iCisgICAgICAgICJmb29cbiIKKyAgICAgICAgIiNlbmRpZlxuIjsKKyAgICBBU1NFUlRf
VFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJnN0ciwgMCkpOworCisgICAgRVhQRUNUX0NBTEwo
bURpYWdub3N0aWNzLAorICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBf
VU5ERUZJTkVEX1NISUZULCBwcDo6U291cmNlTG9jYXRpb24oMCwgMSksICIyID4+IC0xIikpOwor
CisgICAgcHA6OlRva2VuIHRva2VuOworICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Cit9
CisKKy8vIFVuZGVmaW5lZCBzaGlmdDogc2hpZnQgb2Zmc2V0IGlzIG91dCBvZiByYW5nZS4KK1RF
U1RfRihJZlRlc3QsIEJpdFNoaWZ0UmlnaHRPcGVyYXRvck9mZnNldDMyKQoreworICAgIGNvbnN0
IGNoYXIgKnN0ciA9CisgICAgICAgICIjaWYgMiA+PiAzMiA9PSAwXG4iCisgICAgICAgICJmb29c
biIKKyAgICAgICAgIiNlbmRpZlxuIjsKKyAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmlu
aXQoMSwgJnN0ciwgMCkpOworCisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAorICAgICAg
ICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfVU5ERUZJTkVEX1NISUZULCBwcDo6
U291cmNlTG9jYXRpb24oMCwgMSksICIyID4+IDMyIikpOworCisgICAgcHA6OlRva2VuIHRva2Vu
OworICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Cit9CisKKy8vIExlZnQgaGFuZCBzaWRl
IG9mIHNoaWZ0IGlzIG5lZ2F0aXZlLgorVEVTVF9GKElmVGVzdCwgQml0U2hpZnRSaWdodE9wZXJh
dG9yTmVnYXRpdmVMSFMpCit7CisgICAgY29uc3QgY2hhciAqc3RyID0KKyAgICAgICAgIiNpZiAo
LTIpID4+IDEgPT0gMHg3ZmZmZmZmZlxuIgorICAgICAgICAicGFzc1xuIgorICAgICAgICAiI2Vu
ZGlmXG4iOworICAgIGNvbnN0IGNoYXIgKmV4cGVjdGVkID0KKyAgICAgICAgIlxuIgorICAgICAg
ICAicGFzc1xuIgorICAgICAgICAiXG4iOworCisgICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVk
KTsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNz
b3JfdGVzdHMvaW5wdXRfdGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9pbnB1dF90ZXN0LmNwcAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29y
X3Rlc3RzL2lucHV0X3Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTc4IEBACisv
LworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKworI2luY2x1ZGUgIlByZXByb2Nlc3NvclRlc3QuaCIKKyNpbmNsdWRlICJj
b21waWxlci9wcmVwcm9jZXNzb3IvSW5wdXQuaCIKKyNpbmNsdWRlICJjb21waWxlci9wcmVwcm9j
ZXNzb3IvVG9rZW4uaCIKKworY2xhc3MgSW5pdFRlc3QgOiBwdWJsaWMgUHJlcHJvY2Vzc29yVGVz
dAoreworfTsKKworVEVTVF9GKEluaXRUZXN0LCBaZXJvQ291bnQpCit7CisgICAgRVhQRUNUX1RS
VUUobVByZXByb2Nlc3Nvci5pbml0KDAsIE5VTEwsIE5VTEwpKTsKKworICAgIHBwOjpUb2tlbiB0
b2tlbjsKKyAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOworICAgIEVYUEVDVF9FUShwcDo6
VG9rZW46OkxBU1QsIHRva2VuLnR5cGUpOworfQorCitURVNUX0YoSW5pdFRlc3QsIE51bGxTdHJp
bmcpCit7CisgICAgRVhQRUNUX0ZBTFNFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCBOVUxMLCBOVUxM
KSk7Cit9CisKK1RFU1QoSW5wdXRUZXN0LCBEZWZhdWx0Q29uc3RydWN0b3IpCit7CisgICAgcHA6
OklucHV0IGlucHV0OworICAgIEVYUEVDVF9FUSgwdSwgaW5wdXQuY291bnQoKSk7CisgICAgaW50
IGxpbmVObyA9IDA7CisgICAgRVhQRUNUX0VRKDB1LCBpbnB1dC5yZWFkKE5VTEwsIDEsICZsaW5l
Tm8pKTsKK30KKworVEVTVChJbnB1dFRlc3QsIE51bGxMZW5ndGgpCit7CisgICAgY29uc3QgY2hh
ciogc3RyW10gPSB7ImZvbyJ9OworICAgIHBwOjpJbnB1dCBpbnB1dCgxLCBzdHIsIE5VTEwpOwor
ICAgIEVYUEVDVF9FUSgzdSwgaW5wdXQubGVuZ3RoKDApKTsKK30KKworVEVTVChJbnB1dFRlc3Qs
IE5lZ2F0aXZlTGVuZ3RoKQoreworICAgIGNvbnN0IGNoYXIqIHN0cltdID0geyJmb28ifTsKKyAg
ICBpbnQgbGVuZ3RoW10gPSB7LTF9OworICAgIHBwOjpJbnB1dCBpbnB1dCgxLCBzdHIsIGxlbmd0
aCk7CisgICAgRVhQRUNUX0VRKDN1LCBpbnB1dC5sZW5ndGgoMCkpOworfQorCitURVNUKElucHV0
VGVzdCwgQWN0dWFsTGVuZ3RoKQoreworICAgIGNvbnN0IGNoYXIqIHN0cltdID0geyJmb29iYXIi
fTsKKyAgICBpbnQgbGVuZ3RoW10gPSB7M307CisgICAgcHA6OklucHV0IGlucHV0KDEsIHN0ciwg
bGVuZ3RoKTsKKyAgICAvLyBOb3RlIHRoYXQgc3RybGVuKHN0clswXSkgIT0gbGVuZ3RoWzBdLgor
ICAgIC8vIEV2ZW4gdGhlbiBJbnB1dCBzaG91bGQganVzdCBhY2NlcHQgYW55IG5vbi1uZWdhdGl2
ZSBudW1iZXIuCisgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoWzBdKSwg
aW5wdXQubGVuZ3RoKDApKTsKK30KKworVEVTVChJbnB1dFRlc3QsIFN0cmluZykKK3sKKyAgICBj
b25zdCBjaGFyKiBzdHJbXSA9IHsiZm9vIn07CisgICAgcHA6OklucHV0IGlucHV0KDEsIHN0ciwg
TlVMTCk7CisgICAgRVhQRUNUX1NUUkVRKHN0clswXSwgaW5wdXQuc3RyaW5nKDApKTsKK30KKwor
VEVTVChJbnB1dFRlc3QsIFJlYWRTaW5nbGVTdHJpbmcpCit7CisgICAgaW50IGNvdW50ID0gMTsK
KyAgICBjb25zdCBjaGFyKiBzdHJbXSA9IHsiZm9vIn07CisgICAgY2hhciBidWZbNF0gPSB7J1ww
JywgJ1wwJywgJ1wwJywgJ1wwJ307CisKKyAgICBpbnQgbWF4U2l6ZSA9IDE7CisgICAgaW50IGxp
bmVObyA9IDA7CisgICAgcHA6OklucHV0IGlucHV0MShjb3VudCwgc3RyLCBOVUxMKTsKKyAgICBF
WFBFQ1RfRVEoMXUsIGlucHV0MS5yZWFkKGJ1ZiwgbWF4U2l6ZSwgJmxpbmVObykpOworICAgIEVY
UEVDVF9FUSgnZicsIGJ1ZlswXSk7CisgICAgRVhQRUNUX0VRKDF1LCBpbnB1dDEucmVhZChidWYs
IG1heFNpemUsICZsaW5lTm8pKTsKKyAgICBFWFBFQ1RfRVEoJ28nLCBidWZbMF0pOworICAgIEVY
UEVDVF9FUSgxdSwgaW5wdXQxLnJlYWQoYnVmLCBtYXhTaXplLCAmbGluZU5vKSk7CisgICAgRVhQ
RUNUX0VRKCdvJywgYnVmWzBdKTsKKyAgICBFWFBFQ1RfRVEoMHUsIGlucHV0MS5yZWFkKGJ1Ziwg
bWF4U2l6ZSwgJmxpbmVObykpOworCisgICAgbWF4U2l6ZSA9IDI7CisgICAgcHA6OklucHV0IGlu
cHV0Mihjb3VudCwgc3RyLCBOVUxMKTsKKyAgICBFWFBFQ1RfRVEoMnUsIGlucHV0Mi5yZWFkKGJ1
ZiwgbWF4U2l6ZSwgJmxpbmVObykpOworICAgIEVYUEVDVF9TVFJFUSgiZm8iLCBidWYpOworICAg
IEVYUEVDVF9FUSgxdSwgaW5wdXQyLnJlYWQoYnVmLCBtYXhTaXplLCAmbGluZU5vKSk7CisgICAg
RVhQRUNUX0VRKCdvJywgYnVmWzBdKTsKKyAgICBFWFBFQ1RfRVEoMHUsIGlucHV0Mi5yZWFkKGJ1
ZiwgbWF4U2l6ZSwgJmxpbmVObykpOworCisgICAgbWF4U2l6ZSA9IDM7CisgICAgcHA6OklucHV0
IGlucHV0Myhjb3VudCwgc3RyLCBOVUxMKTsKKyAgICBFWFBFQ1RfRVEoM3UsIGlucHV0My5yZWFk
KGJ1ZiwgbWF4U2l6ZSwgJmxpbmVObykpOworICAgIEVYUEVDVF9TVFJFUSgiZm9vIiwgYnVmKTsK
KyAgICBFWFBFQ1RfRVEoMHUsIGlucHV0My5yZWFkKGJ1ZiwgbWF4U2l6ZSwgJmxpbmVObykpOwor
CisgICAgbWF4U2l6ZSA9IDQ7CisgICAgcHA6OklucHV0IGlucHV0NChjb3VudCwgc3RyLCBOVUxM
KTsKKyAgICBFWFBFQ1RfRVEoM3UsIGlucHV0NC5yZWFkKGJ1ZiwgbWF4U2l6ZSwgJmxpbmVObykp
OworICAgIEVYUEVDVF9TVFJFUSgiZm9vIiwgYnVmKTsKKyAgICBFWFBFQ1RfRVEoMHUsIGlucHV0
NC5yZWFkKGJ1ZiwgbWF4U2l6ZSwgJmxpbmVObykpOworfQorCitURVNUKElucHV0VGVzdCwgUmVh
ZE11bHRpcGxlU3RyaW5ncykKK3sKKyAgICBpbnQgY291bnQgPSAzOworICAgIGNvbnN0IGNoYXIq
IHN0cltdID0geyJmIiwgIm8iLCAibyJ9OworICAgIGNoYXIgYnVmWzRdID0geydcMCcsICdcMCcs
ICdcMCcsICdcMCd9OworCisgICAgaW50IG1heFNpemUgPSAxOworICAgIGludCBsaW5lTm8gPSAw
OworICAgIHBwOjpJbnB1dCBpbnB1dDEoY291bnQsIHN0ciwgTlVMTCk7CisgICAgRVhQRUNUX0VR
KDF1LCBpbnB1dDEucmVhZChidWYsIG1heFNpemUsICZsaW5lTm8pKTsKKyAgICBFWFBFQ1RfRVEo
J2YnLCBidWZbMF0pOworICAgIEVYUEVDVF9FUSgxdSwgaW5wdXQxLnJlYWQoYnVmLCBtYXhTaXpl
LCAmbGluZU5vKSk7CisgICAgRVhQRUNUX0VRKCdvJywgYnVmWzBdKTsKKyAgICBFWFBFQ1RfRVEo
MXUsIGlucHV0MS5yZWFkKGJ1ZiwgbWF4U2l6ZSwgJmxpbmVObykpOworICAgIEVYUEVDVF9FUSgn
bycsIGJ1ZlswXSk7CisgICAgRVhQRUNUX0VRKDB1LCBpbnB1dDEucmVhZChidWYsIG1heFNpemUs
ICZsaW5lTm8pKTsKKworICAgIG1heFNpemUgPSAyOworICAgIHBwOjpJbnB1dCBpbnB1dDIoY291
bnQsIHN0ciwgTlVMTCk7CisgICAgRVhQRUNUX0VRKDJ1LCBpbnB1dDIucmVhZChidWYsIG1heFNp
emUsICZsaW5lTm8pKTsKKyAgICBFWFBFQ1RfU1RSRVEoImZvIiwgYnVmKTsKKyAgICBFWFBFQ1Rf
RVEoMXUsIGlucHV0Mi5yZWFkKGJ1ZiwgbWF4U2l6ZSwgJmxpbmVObykpOworICAgIEVYUEVDVF9F
USgnbycsIGJ1ZlswXSk7CisgICAgRVhQRUNUX0VRKDB1LCBpbnB1dDIucmVhZChidWYsIG1heFNp
emUsICZsaW5lTm8pKTsKKworICAgIG1heFNpemUgPSAzOworICAgIHBwOjpJbnB1dCBpbnB1dDMo
Y291bnQsIHN0ciwgTlVMTCk7CisgICAgRVhQRUNUX0VRKDN1LCBpbnB1dDMucmVhZChidWYsIG1h
eFNpemUsICZsaW5lTm8pKTsKKyAgICBFWFBFQ1RfU1RSRVEoImZvbyIsIGJ1Zik7CisgICAgRVhQ
RUNUX0VRKDB1LCBpbnB1dDMucmVhZChidWYsIG1heFNpemUsICZsaW5lTm8pKTsKKworICAgIG1h
eFNpemUgPSA0OworICAgIHBwOjpJbnB1dCBpbnB1dDQoY291bnQsIHN0ciwgTlVMTCk7CisgICAg
RVhQRUNUX0VRKDN1LCBpbnB1dDQucmVhZChidWYsIG1heFNpemUsICZsaW5lTm8pKTsKKyAgICBF
WFBFQ1RfU1RSRVEoImZvbyIsIGJ1Zik7CisgICAgRVhQRUNUX0VRKDB1LCBpbnB1dDQucmVhZChi
dWYsIG1heFNpemUsICZsaW5lTm8pKTsKK30KKworVEVTVChJbnB1dFRlc3QsIFJlYWRTdHJpbmdz
V2l0aExlbmd0aCkKK3sKKyAgICBpbnQgY291bnQgPSAyOworICAgIGNvbnN0IGNoYXIqIHN0cltd
ID0geyJmb28iLCAiYmFyIn07CisgICAgLy8gTm90ZSB0aGF0IHRoZSBsZW5ndGggZm9yIHRoZSBm
aXJzdCBzdHJpbmcgaXMgMiB3aGljaCBpcyBsZXNzIHRoYW4KKyAgICAvLyBzdHJsZW4oc3RyWzBd
LiBXZSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBsYXN0IGNoYXJhY3RlciBpcyBpZ25vcmVk
LgorICAgIGludCBsZW5ndGhbXSA9IHsyLCAzfTsKKyAgICBjaGFyIGJ1Zls2XSA9IHsnXDAnLCAn
XDAnLCAnXDAnLCAnXDAnLCAnXDAnLCAnXDAnfTsKKyAgICBzaXplX3QgbWF4U2l6ZSA9IDU7Cisg
ICAgaW50IGxpbmVObyA9IDA7CisKKyAgICBwcDo6SW5wdXQgaW5wdXQoY291bnQsIHN0ciwgbGVu
Z3RoKTsKKyAgICBFWFBFQ1RfRVEobWF4U2l6ZSwgaW5wdXQucmVhZChidWYsIG1heFNpemUsICZs
aW5lTm8pKTsKKyAgICBFWFBFQ1RfU1RSRVEoImZvYmFyIiwgYnVmKTsKK30KKworVEVTVChJbnB1
dFRlc3QsIFJlYWRTdHJpbmdzV2l0aExpbmVDb250aW51YXRpb24pCit7CisgICAgaW50IGNvdW50
ID0gMjsKKyAgICBjb25zdCBjaGFyKiBzdHJbXSA9IHsiZm9vXFwiLCAiXG5iYVxcXHJcbnIifTsK
KyAgICBpbnQgbGVuZ3RoW10gPSB7NCwgN307CisgICAgY2hhciBidWZbMTFdID0geydcMCcsICdc
MCcsICdcMCcsICdcMCcsICdcMCcsICdcMCcsICdcMCcsICdcMCcsICdcMCcsICdcMCcsICdcMCd9
OworICAgIHNpemVfdCBtYXhTaXplID0gMTE7CisgICAgaW50IGxpbmVObyA9IDA7CisKKyAgICBw
cDo6SW5wdXQgaW5wdXQoY291bnQsIHN0ciwgbGVuZ3RoKTsKKyAgICBFWFBFQ1RfRVEoM3UsIGlu
cHV0LnJlYWQoYnVmLCBtYXhTaXplLCAmbGluZU5vKSk7CisgICAgRVhQRUNUX0VRKDAsIGxpbmVO
byk7CisgICAgRVhQRUNUX0VRKDJ1LCBpbnB1dC5yZWFkKGJ1ZiArIDMsIG1heFNpemUgLSAzLCAm
bGluZU5vKSk7CisgICAgRVhQRUNUX0VRKDEsIGxpbmVObyk7CisgICAgRVhQRUNUX0VRKDF1LCBp
bnB1dC5yZWFkKGJ1ZiArIDUsIG1heFNpemUgLSA1LCAmbGluZU5vKSk7CisgICAgRVhQRUNUX0VR
KDIsIGxpbmVObyk7CisgICAgRVhQRUNUX1NUUkVRKCJmb29iYXIiLCBidWYpOworfQpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9sb2Nh
dGlvbl90ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2xvY2F0aW9uX3Rlc3QuY3BwCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMv
bG9jYXRpb25fdGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNTEgQEAKKy8vCisv
LyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworCisjaW5jbHVkZSAiUHJlcHJvY2Vzc29yVGVzdC5oIgorI2luY2x1ZGUgImNvbXBp
bGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5oIgorCitjbGFzcyBMb2NhdGlvblRlc3QgOiBwdWJsaWMg
UHJlcHJvY2Vzc29yVGVzdAoreworcHJvdGVjdGVkOgorICAgIHZvaWQgZXhwZWN0TG9jYXRpb24o
aW50IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogY29uc3Qgc3Ry
aW5nW10sCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgbGVuZ3RoW10sCisgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBwcDo6U291cmNlTG9jYXRpb24mIGxvY2F0aW9uKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KGNvdW50LCBzdHJp
bmcsIGxlbmd0aCkpOworCisgICAgICAgIHBwOjpUb2tlbiB0b2tlbjsKKyAgICAgICAgbVByZXBy
b2Nlc3Nvci5sZXgoJnRva2VuKTsKKyAgICAgICAgRVhQRUNUX0VRKHBwOjpUb2tlbjo6SURFTlRJ
RklFUiwgdG9rZW4udHlwZSk7CisgICAgICAgIEVYUEVDVF9FUSgiZm9vIiwgdG9rZW4udGV4dCk7
CisKKyAgICAgICAgRVhQRUNUX0VRKGxvY2F0aW9uLmZpbGUsIHRva2VuLmxvY2F0aW9uLmZpbGUp
OworICAgICAgICBFWFBFQ1RfRVEobG9jYXRpb24ubGluZSwgdG9rZW4ubG9jYXRpb24ubGluZSk7
CisgICAgfQorfTsKKworVEVTVF9GKExvY2F0aW9uVGVzdCwgU3RyaW5nMF9MaW5lMSkKK3sKKyAg
ICBjb25zdCBjaGFyKiBzdHIgPSAiZm9vIjsKKyAgICBwcDo6U291cmNlTG9jYXRpb24gbG9jKDAs
IDEpOworCisgICAgU0NPUEVEX1RSQUNFKCJTdHJpbmcwX0xpbmUxIik7CisgICAgZXhwZWN0TG9j
YXRpb24oMSwgJnN0ciwgTlVMTCwgbG9jKTsKK30KKworVEVTVF9GKExvY2F0aW9uVGVzdCwgU3Ry
aW5nMF9MaW5lMikKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAiXG5mb28iOworICAgIHBwOjpT
b3VyY2VMb2NhdGlvbiBsb2MoMCwgMik7CisKKyAgICBTQ09QRURfVFJBQ0UoIlN0cmluZzBfTGlu
ZTIiKTsKKyAgICBleHBlY3RMb2NhdGlvbigxLCAmc3RyLCBOVUxMLCBsb2MpOworfQorCitURVNU
X0YoTG9jYXRpb25UZXN0LCBTdHJpbmcxX0xpbmUxKQoreworICAgIGNvbnN0IGNoYXIqIGNvbnN0
IHN0cltdID0geyJcblxuIiwgImZvbyJ9OworICAgIHBwOjpTb3VyY2VMb2NhdGlvbiBsb2MoMSwg
MSk7CisKKyAgICBTQ09QRURfVFJBQ0UoIlN0cmluZzFfTGluZTEiKTsKKyAgICBleHBlY3RMb2Nh
dGlvbigyLCBzdHIsIE5VTEwsIGxvYyk7Cit9CisKK1RFU1RfRihMb2NhdGlvblRlc3QsIFN0cmlu
ZzFfTGluZTIpCit7CisgICAgY29uc3QgY2hhciogY29uc3Qgc3RyW10gPSB7IlxuXG4iLCAiXG5m
b28ifTsKKyAgICBwcDo6U291cmNlTG9jYXRpb24gbG9jKDEsIDIpOworCisgICAgU0NPUEVEX1RS
QUNFKCJTdHJpbmcxX0xpbmUyIik7CisgICAgZXhwZWN0TG9jYXRpb24oMiwgc3RyLCBOVUxMLCBs
b2MpOworfQorCitURVNUX0YoTG9jYXRpb25UZXN0LCBOZXdsaW5lSW5zaWRlQ29tbWVudENvdW50
ZWQpCit7CisgICAgY29uc3QgY2hhciogc3RyID0gIi8qXG5cbiovZm9vIjsKKyAgICBwcDo6U291
cmNlTG9jYXRpb24gbG9jKDAsIDMpOworCisgICAgU0NPUEVEX1RSQUNFKCJOZXdsaW5lSW5zaWRl
Q29tbWVudENvdW50ZWQiKTsKKyAgICBleHBlY3RMb2NhdGlvbigxLCAmc3RyLCBOVUxMLCBsb2Mp
OworfQorCitURVNUX0YoTG9jYXRpb25UZXN0LCBFcnJvckxvY2F0aW9uQWZ0ZXJDb21tZW50KQor
eworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIvKlxuXG4qL0AiOworCisgICAgQVNTRVJUX1RSVUUo
bVByZXByb2Nlc3Nvci5pbml0KDEsICZzdHIsIE5VTEwpKTsKKyAgICBFWFBFQ1RfQ0FMTChtRGlh
Z25vc3RpY3MsIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfSU5WQUxJRF9DSEFSQUNURVIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwg
MyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQCIpKTsKKworICAgIHBw
OjpUb2tlbiB0b2tlbjsKKyAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOworfQorCisvLyBU
aGUgbG9jYXRpb24gb2YgYSB0b2tlbiBzdHJhZGRsaW5nIHR3byBvciBtb3JlIHN0cmluZ3MgaXMg
dGhhdCBvZiB0aGUKKy8vIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgdG9rZW4uCisKK1RFU1RfRihM
b2NhdGlvblRlc3QsIFRva2VuU3RyYWRkbGluZ1R3b1N0cmluZ3MpCit7CisgICAgY29uc3QgY2hh
ciogY29uc3Qgc3RyW10gPSB7ImYiLCAib28ifTsKKyAgICBwcDo6U291cmNlTG9jYXRpb24gbG9j
KDAsIDEpOworCisgICAgU0NPUEVEX1RSQUNFKCJUb2tlblN0cmFkZGxpbmdUd29TdHJpbmdzIik7
CisgICAgZXhwZWN0TG9jYXRpb24oMiwgc3RyLCBOVUxMLCBsb2MpOworfQorCitURVNUX0YoTG9j
YXRpb25UZXN0LCBUb2tlblN0cmFkZGxpbmdUaHJlZVN0cmluZ3MpCit7CisgICAgY29uc3QgY2hh
ciogY29uc3Qgc3RyW10gPSB7ImYiLCAibyIsICJvIn07CisgICAgcHA6OlNvdXJjZUxvY2F0aW9u
IGxvYygwLCAxKTsKKworICAgIFNDT1BFRF9UUkFDRSgiVG9rZW5TdHJhZGRsaW5nVGhyZWVTdHJp
bmdzIik7CisgICAgZXhwZWN0TG9jYXRpb24oMywgc3RyLCBOVUxMLCBsb2MpOworfQorCitURVNU
X0YoTG9jYXRpb25UZXN0LCBFbmRPZkZpbGVXaXRob3V0TmV3bGluZSkKK3sKKyAgICBjb25zdCBj
aGFyKiBjb25zdCBzdHJbXSA9IHsiZm9vIn07CisgICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nv
ci5pbml0KDEsIHN0ciwgTlVMTCkpOworCisgICAgcHA6OlRva2VuIHRva2VuOworICAgIG1QcmVw
cm9jZXNzb3IubGV4KCZ0b2tlbik7CisgICAgRVhQRUNUX0VRKHBwOjpUb2tlbjo6SURFTlRJRklF
UiwgdG9rZW4udHlwZSk7CisgICAgRVhQRUNUX0VRKCJmb28iLCB0b2tlbi50ZXh0KTsKKyAgICBF
WFBFQ1RfRVEoMCwgdG9rZW4ubG9jYXRpb24uZmlsZSk7CisgICAgRVhQRUNUX0VRKDEsIHRva2Vu
LmxvY2F0aW9uLmxpbmUpOworCisgICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKKyAgICBF
WFBFQ1RfRVEocHA6OlRva2VuOjpMQVNULCB0b2tlbi50eXBlKTsKKyAgICBFWFBFQ1RfRVEoMCwg
dG9rZW4ubG9jYXRpb24uZmlsZSk7CisgICAgRVhQRUNUX0VRKDEsIHRva2VuLmxvY2F0aW9uLmxp
bmUpOworfQorCitURVNUX0YoTG9jYXRpb25UZXN0LCBFbmRPZkZpbGVBZnRlck5ld2xpbmUpCit7
CisgICAgY29uc3QgY2hhciogY29uc3Qgc3RyW10gPSB7ImZvb1xuIn07CisgICAgQVNTRVJUX1RS
VUUobVByZXByb2Nlc3Nvci5pbml0KDEsIHN0ciwgTlVMTCkpOworCisgICAgcHA6OlRva2VuIHRv
a2VuOworICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7CisgICAgRVhQRUNUX0VRKHBwOjpU
b2tlbjo6SURFTlRJRklFUiwgdG9rZW4udHlwZSk7CisgICAgRVhQRUNUX0VRKCJmb28iLCB0b2tl
bi50ZXh0KTsKKyAgICBFWFBFQ1RfRVEoMCwgdG9rZW4ubG9jYXRpb24uZmlsZSk7CisgICAgRVhQ
RUNUX0VRKDEsIHRva2VuLmxvY2F0aW9uLmxpbmUpOworCisgICAgbVByZXByb2Nlc3Nvci5sZXgo
JnRva2VuKTsKKyAgICBFWFBFQ1RfRVEocHA6OlRva2VuOjpMQVNULCB0b2tlbi50eXBlKTsKKyAg
ICBFWFBFQ1RfRVEoMCwgdG9rZW4ubG9jYXRpb24uZmlsZSk7CisgICAgRVhQRUNUX0VRKDIsIHRv
a2VuLmxvY2F0aW9uLmxpbmUpOworfQorCitURVNUX0YoTG9jYXRpb25UZXN0LCBFbmRPZkZpbGVB
ZnRlckVtcHR5U3RyaW5nKQoreworICAgIGNvbnN0IGNoYXIqIGNvbnN0IHN0cltdID0geyJmb29c
biIsICJcbiIsICIifTsKKyAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMywgc3Ry
LCBOVUxMKSk7CisKKyAgICBwcDo6VG9rZW4gdG9rZW47CisgICAgbVByZXByb2Nlc3Nvci5sZXgo
JnRva2VuKTsKKyAgICBFWFBFQ1RfRVEocHA6OlRva2VuOjpJREVOVElGSUVSLCB0b2tlbi50eXBl
KTsKKyAgICBFWFBFQ1RfRVEoImZvbyIsIHRva2VuLnRleHQpOworICAgIEVYUEVDVF9FUSgwLCB0
b2tlbi5sb2NhdGlvbi5maWxlKTsKKyAgICBFWFBFQ1RfRVEoMSwgdG9rZW4ubG9jYXRpb24ubGlu
ZSk7CisKKyAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOworICAgIEVYUEVDVF9FUShwcDo6
VG9rZW46OkxBU1QsIHRva2VuLnR5cGUpOworICAgIEVYUEVDVF9FUSgyLCB0b2tlbi5sb2NhdGlv
bi5maWxlKTsKKyAgICBFWFBFQ1RfRVEoMSwgdG9rZW4ubG9jYXRpb24ubGluZSk7Cit9CisKK1RF
U1RfRihMb2NhdGlvblRlc3QsIFZhbGlkTGluZURpcmVjdGl2ZTEpCit7CisgICAgY29uc3QgY2hh
ciogc3RyID0gIiNsaW5lIDEwXG4iCisgICAgICAgICAgICAgICAgICAgICAgImZvbyI7CisgICAg
cHA6OlNvdXJjZUxvY2F0aW9uIGxvYygwLCAxMCk7CisKKyAgICBTQ09QRURfVFJBQ0UoIlZhbGlk
TGluZURpcmVjdGl2ZTEiKTsKKyAgICBleHBlY3RMb2NhdGlvbigxLCAmc3RyLCBOVUxMLCBsb2Mp
OworfQorCitURVNUX0YoTG9jYXRpb25UZXN0LCBWYWxpZExpbmVEaXJlY3RpdmUyKQoreworICAg
IGNvbnN0IGNoYXIqIHN0ciA9ICIjbGluZSAxMCAyMFxuIgorICAgICAgICAgICAgICAgICAgICAg
ICJmb28iOworICAgIHBwOjpTb3VyY2VMb2NhdGlvbiBsb2MoMjAsIDEwKTsKKworICAgIFNDT1BF
RF9UUkFDRSgiVmFsaWRMaW5lRGlyZWN0aXZlMiIpOworICAgIGV4cGVjdExvY2F0aW9uKDEsICZz
dHIsIE5VTEwsIGxvYyk7Cit9CisKK1RFU1RfRihMb2NhdGlvblRlc3QsIExpbmVEaXJlY3RpdmVD
b21tZW50c0lnbm9yZWQpCit7CisgICAgY29uc3QgY2hhciogc3RyID0gIi8qIGJhciAqLyIKKyAg
ICAgICAgICAgICAgICAgICAgICAiIyIKKyAgICAgICAgICAgICAgICAgICAgICAiLyogYmFyICov
IgorICAgICAgICAgICAgICAgICAgICAgICJsaW5lIgorICAgICAgICAgICAgICAgICAgICAgICIv
KiBiYXIgKi8iCisgICAgICAgICAgICAgICAgICAgICAgIjEwIgorICAgICAgICAgICAgICAgICAg
ICAgICIvKiBiYXIgKi8iCisgICAgICAgICAgICAgICAgICAgICAgIjIwIgorICAgICAgICAgICAg
ICAgICAgICAgICIvKiBiYXIgKi8iCisgICAgICAgICAgICAgICAgICAgICAgIi8vIGJhciAgICIK
KyAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgImZvbyI7
CisgICAgcHA6OlNvdXJjZUxvY2F0aW9uIGxvYygyMCwgMTApOworCisgICAgU0NPUEVEX1RSQUNF
KCJMaW5lRGlyZWN0aXZlQ29tbWVudHNJZ25vcmVkIik7CisgICAgZXhwZWN0TG9jYXRpb24oMSwg
JnN0ciwgTlVMTCwgbG9jKTsKK30KKworVEVTVF9GKExvY2F0aW9uVGVzdCwgTGluZURpcmVjdGl2
ZVdpdGhNYWNybzEpCit7CisgICAgY29uc3QgY2hhciogc3RyID0gIiNkZWZpbmUgTCAxMFxuIgor
ICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIEYoeCkgeFxuIgorICAgICAgICAgICAgICAg
ICAgICAgICIjbGluZSBMIEYoMjApXG4iCisgICAgICAgICAgICAgICAgICAgICAgImZvbyI7Cisg
ICAgcHA6OlNvdXJjZUxvY2F0aW9uIGxvYygyMCwgMTApOworCisgICAgU0NPUEVEX1RSQUNFKCJM
aW5lRGlyZWN0aXZlV2l0aE1hY3JvMSIpOworICAgIGV4cGVjdExvY2F0aW9uKDEsICZzdHIsIE5V
TEwsIGxvYyk7Cit9CisKK1RFU1RfRihMb2NhdGlvblRlc3QsIExpbmVEaXJlY3RpdmVXaXRoTWFj
cm8yKQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjZGVmaW5lIExPQyAxMCAyMFxuIgorICAg
ICAgICAgICAgICAgICAgICAgICIjbGluZSBMT0NcbiIKKyAgICAgICAgICAgICAgICAgICAgICAi
Zm9vIjsKKyAgICBwcDo6U291cmNlTG9jYXRpb24gbG9jKDIwLCAxMCk7CisKKyAgICBTQ09QRURf
VFJBQ0UoIkxpbmVEaXJlY3RpdmVXaXRoTWFjcm8yIik7CisgICAgZXhwZWN0TG9jYXRpb24oMSwg
JnN0ciwgTlVMTCwgbG9jKTsKK30KKworVEVTVF9GKExvY2F0aW9uVGVzdCwgTGluZURpcmVjdGl2
ZVdpdGhQcmVkZWZpbmVkTWFjcm8pCit7CisgICAgY29uc3QgY2hhciogc3RyID0gIiNsaW5lIF9f
TElORV9fIF9fRklMRV9fXG4iCisgICAgICAgICAgICAgICAgICAgICAgImZvbyI7CisgICAgcHA6
OlNvdXJjZUxvY2F0aW9uIGxvYygwLCAxKTsKKworICAgIFNDT1BFRF9UUkFDRSgiTGluZURpcmVj
dGl2ZVdpdGhNYWNybyIpOworICAgIGV4cGVjdExvY2F0aW9uKDEsICZzdHIsIE5VTEwsIGxvYyk7
Cit9CisKK1RFU1RfRihMb2NhdGlvblRlc3QsIExpbmVEaXJlY3RpdmVOZXdsaW5lQmVmb3JlU3Ry
aW5nQnJlYWspCit7CisgICAgY29uc3QgY2hhciogY29uc3Qgc3RyW10gPSB7IiNsaW5lIDEwIDIw
XG4iLCAiZm9vIn07CisgICAgLy8gU3RyaW5nIG51bWJlciBpcyBpbmNyZW1lbnRlZCBhZnRlciBp
dCBpcyBzZXQgYnkgdGhlIGxpbmUgZGlyZWN0aXZlLgorICAgIC8vIEFsc28gbm90aWNlIHRoYXQg
bGluZSBudW1iZXIgaXMgcmVzZXQgYWZ0ZXIgdGhlIHN0cmluZyBicmVhay4KKyAgICBwcDo6U291
cmNlTG9jYXRpb24gbG9jKDIxLCAxKTsKKworICAgIFNDT1BFRF9UUkFDRSgiTGluZURpcmVjdGl2
ZU5ld2xpbmVCZWZvcmVTdHJpbmdCcmVhayIpOworICAgIGV4cGVjdExvY2F0aW9uKDIsIHN0ciwg
TlVMTCwgbG9jKTsKK30KKworVEVTVF9GKExvY2F0aW9uVGVzdCwgTGluZURpcmVjdGl2ZU5ld2xp
bmVBZnRlclN0cmluZ0JyZWFrKQoreworICAgIGNvbnN0IGNoYXIqIGNvbnN0IHN0cltdID0geyIj
bGluZSAxMCAyMCIsICJcbmZvbyJ9OworICAgIC8vIFN0cmluZyBudW1iZXIgaXMgaW5jcmVtZW50
ZWQgYmVmb3JlIGl0IGlzIHNldCBieSB0aGUgbGluZSBkaXJlY3RpdmUuCisgICAgcHA6OlNvdXJj
ZUxvY2F0aW9uIGxvYygyMCwgMTApOworCisgICAgU0NPUEVEX1RSQUNFKCJMaW5lRGlyZWN0aXZl
TmV3bGluZUFmdGVyU3RyaW5nQnJlYWsiKTsKKyAgICBleHBlY3RMb2NhdGlvbigyLCBzdHIsIE5V
TEwsIGxvYyk7Cit9CisKK1RFU1RfRihMb2NhdGlvblRlc3QsIExpbmVEaXJlY3RpdmVNaXNzaW5n
TmV3bGluZSkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2xpbmUgMTAiOworICAgIEFTU0VS
VF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCBOVUxMKSk7CisKKyAgICB1c2luZyB0
ZXN0aW5nOjpfOworICAgIC8vIEVycm9yIHJlcG9ydGVkIGFib3V0IEVPRi4KKyAgICBFWFBFQ1Rf
Q0FMTChtRGlhZ25vc3RpY3MsIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfRU9GX0lOX0RJUkVD
VElWRSwgXywgXykpOworCisgICAgcHA6OlRva2VuIHRva2VuOworICAgIG1QcmVwcm9jZXNzb3Iu
bGV4KCZ0b2tlbik7Cit9CisKK3N0cnVjdCBMaW5lVGVzdFBhcmFtCit7CisgICAgY29uc3QgY2hh
ciogc3RyOworICAgIHBwOjpEaWFnbm9zdGljczo6SUQgaWQ7Cit9OworCitjbGFzcyBJbnZhbGlk
TGluZVRlc3QgOiBwdWJsaWMgTG9jYXRpb25UZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
cHVibGljIHRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxMaW5lVGVzdFBhcmFtPgoreworfTsK
KworVEVTVF9QKEludmFsaWRMaW5lVGVzdCwgSWRlbnRpZmllZCkKK3sKKyAgICBMaW5lVGVzdFBh
cmFtIHBhcmFtID0gR2V0UGFyYW0oKTsKKyAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmlu
aXQoMSwgJnBhcmFtLnN0ciwgTlVMTCkpOworCisgICAgdXNpbmcgdGVzdGluZzo6XzsKKyAgICAv
LyBJbnZhbGlkIGxpbmUgZGlyZWN0aXZlIGNhbGwuCisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0
aWNzLCBwcmludChwYXJhbS5pZCwgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLCBfKSk7CisKKyAg
ICBwcDo6VG9rZW4gdG9rZW47CisgICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKK30KKwor
c3RhdGljIGNvbnN0IExpbmVUZXN0UGFyYW0ga1BhcmFtc1tdID0geworICAgIHsiI2xpbmVcbiIs
IHBwOjpEaWFnbm9zdGljczo6UFBfSU5WQUxJRF9MSU5FX0RJUkVDVElWRX0sCisgICAgeyIjbGlu
ZSBmb29cbiIsIHBwOjpEaWFnbm9zdGljczo6UFBfSU5WQUxJRF9MSU5FX05VTUJFUn0sCisgICAg
eyIjbGluZSBkZWZpbmVkKGZvbylcbiIsIHBwOjpEaWFnbm9zdGljczo6UFBfSU5WQUxJRF9MSU5F
X05VTUJFUn0sCisgICAgeyIjbGluZSAxMCBmb29cbiIsIHBwOjpEaWFnbm9zdGljczo6UFBfSU5W
QUxJRF9GSUxFX05VTUJFUn0sCisgICAgeyIjbGluZSAxMCAyMCBmb29cbiIsIHBwOjpEaWFnbm9z
dGljczo6UFBfVU5FWFBFQ1RFRF9UT0tFTn0sCisgICAgeyIjbGluZSAweGZmZmZmZmZmXG4iLCBw
cDo6RGlhZ25vc3RpY3M6OlBQX0lOVEVHRVJfT1ZFUkZMT1d9LAorICAgIHsiI2xpbmUgMTAgMHhm
ZmZmZmZmZlxuIiwgcHA6OkRpYWdub3N0aWNzOjpQUF9JTlRFR0VSX09WRVJGTE9XfX07CisKK0lO
U1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFsbCwgSW52YWxpZExpbmVUZXN0LCB0ZXN0aW5nOjpWYWx1
ZXNJbihrUGFyYW1zKSk7CisKK3N0cnVjdCBMaW5lRXhwcmVzc2lvblRlc3RQYXJhbQoreworICAg
IGNvbnN0IGNoYXIgKmV4cHJlc3Npb247CisgICAgaW50IGV4cGVjdGVkTGluZTsKK307CisKK2Ns
YXNzIExpbmVFeHByZXNzaW9uVGVzdCA6IHB1YmxpYyBMb2NhdGlvblRlc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdWJsaWMgdGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPExpbmVF
eHByZXNzaW9uVGVzdFBhcmFtPgoreworfTsKKworVEVTVF9QKExpbmVFeHByZXNzaW9uVGVzdCwg
RXhwcmVzc2lvbkV2YWx1YXRpb24pCit7CisgICAgTGluZUV4cHJlc3Npb25UZXN0UGFyYW0gcGFy
YW0gPSBHZXRQYXJhbSgpOworICAgIGNvbnN0IGNoYXIgKnN0cnNbM10gPSB7IiNsaW5lICIsIHBh
cmFtLmV4cHJlc3Npb24sICJcbmZvbyJ9OworCisgICAgcHA6OlNvdXJjZUxvY2F0aW9uIGxvYygy
LCBwYXJhbS5leHBlY3RlZExpbmUpOworCisgICAgZXhwZWN0TG9jYXRpb24oMywgc3RycywgTlVM
TCwgbG9jKTsKK30KKworc3RhdGljIGNvbnN0IExpbmVFeHByZXNzaW9uVGVzdFBhcmFtIGtQYXJh
bXNMaW5lRXhwcmVzc2lvblRlc3RbXSA9IHsKKyAgICB7IjEgKyAyIiwgM30sCisgICAgeyI1IC0g
MyIsIDJ9LAorICAgIHsiNyAqIDExIiwgNzd9LAorICAgIHsiMjAgLyAxMCIsIDJ9LAorICAgIHsi
MTAgJSA1IiwgMH0sCisgICAgeyI3ICYmIDMiLCAxfSwKKyAgICB7IjcgfHwgMCIsIDF9LAorICAg
IHsiMTEgPT0gMTEiLCAxfSwKKyAgICB7IjExICE9IDExIiwgMH0sCisgICAgeyIxMSA+IDciLCAx
fSwKKyAgICB7IjExIDwgNyIsIDB9LAorICAgIHsiMTEgPj0gNyIsIDF9LAorICAgIHsiMTEgPD0g
NyIsIDB9LAorICAgIHsiITExIiwgMH0sCisgICAgeyItMSIsIC0xfSwKKyAgICB7Iis5IiwgOX0s
CisgICAgeyIoMSArIDIpICogNCIsIDEyfSwKKyAgICB7IjMgfCA1IiwgN30sCisgICAgeyIzIF4g
NSIsIDZ9LAorICAgIHsiMyAmIDUiLCAxfSwKKyAgICB7In41IiwgfjV9LAorICAgIHsiMiA8PCAz
IiwgMTZ9LAorICAgIHsiMTYgPj4gMiIsIDR9fTsKKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Ao
QWxsLCBMaW5lRXhwcmVzc2lvblRlc3QsIHRlc3Rpbmc6OlZhbHVlc0luKGtQYXJhbXNMaW5lRXhw
cmVzc2lvblRlc3QpKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9w
cmVwcm9jZXNzb3JfdGVzdHMvbnVtYmVyX3Rlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvbnVtYmVyX3Rlc3Qu
Y3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9w
cmVwcm9jZXNzb3JfdGVzdHMvbnVtYmVyX3Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTcwIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgIlByZXByb2Nlc3NvclRlc3QuaCIK
KyNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uaCIKKworI2RlZmluZSBDTE9T
RURfUkFOR0UoeCwgeSkgdGVzdGluZzo6UmFuZ2UoeCwgc3RhdGljX2Nhc3Q8Y2hhcj4oKHkpICsg
MSkpCisKK2NsYXNzIEludmFsaWROdW1iZXJUZXN0IDogcHVibGljIFByZXByb2Nlc3NvclRlc3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRl
cmZhY2U8Y29uc3QgY2hhcio+Cit7Cit9OworCitURVNUX1AoSW52YWxpZE51bWJlclRlc3QsIElu
dmFsaWROdW1iZXJJZGVudGlmaWVkKQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9IEdldFBhcmFt
KCk7CisgICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZzdHIsIDApKTsKKwor
ICAgIHVzaW5nIHRlc3Rpbmc6Ol87CisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmlu
dChwcDo6RGlhZ25vc3RpY3M6OlBQX0lOVkFMSURfTlVNQkVSLCBfLCBzdHIpKTsKKworICAgIHBw
OjpUb2tlbiB0b2tlbjsKKyAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOworfQorCitJTlNU
QU5USUFURV9URVNUX0NBU0VfUChJbnZhbGlkSW50ZWdlcnMsIEludmFsaWROdW1iZXJUZXN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6VmFsdWVzKCIxYSIsICIwOCIsICIweEci
KSk7CisKKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoSW52YWxpZEZsb2F0cywgSW52YWxpZE51
bWJlclRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpWYWx1ZXMoIjFlZyIs
ICIwLmEiLCAiMC4xLjIiLCAiLjBhIiwgIi4wLjEiKSk7CisKK3R5cGVkZWYgc3RkOjp0cjE6OnR1
cGxlPGNvbnN0IGNoYXIqLCBjaGFyPiBJbnRlZ2VyUGFyYW1zOworY2xhc3MgSW50ZWdlclRlc3Qg
OiBwdWJsaWMgUHJlcHJvY2Vzc29yVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgcHVibGljIHRl
c3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxJbnRlZ2VyUGFyYW1zPgoreworfTsKKworVEVTVF9Q
KEludGVnZXJUZXN0LCBJZGVudGlmaWVkKQoreworICAgIHN0ZDo6c3RyaW5nIHN0cihzdGQ6OnRy
MTo6Z2V0PDA+KEdldFBhcmFtKCkpKTsgIC8vIHByZWZpeC4KKyAgICBzdHIucHVzaF9iYWNrKHN0
ZDo6dHIxOjpnZXQ8MT4oR2V0UGFyYW0oKSkpOyAgLy8gZGlnaXQuCisgICAgY29uc3QgY2hhciog
Y3N0ciA9IHN0ci5jX3N0cigpOworCisgICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0
KDEsICZjc3RyLCAwKSk7CisKKyAgICBwcDo6VG9rZW4gdG9rZW47CisgICAgbVByZXByb2Nlc3Nv
ci5sZXgoJnRva2VuKTsKKyAgICBFWFBFQ1RfRVEocHA6OlRva2VuOjpDT05TVF9JTlQsIHRva2Vu
LnR5cGUpOworICAgIEVYUEVDVF9FUShzdHIsIHRva2VuLnRleHQpOworfQorCitJTlNUQU5USUFU
RV9URVNUX0NBU0VfUChEZWNpbWFsSW50ZWdlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIElu
dGVnZXJUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6Q29tYmluZSh0ZXN0
aW5nOjpWYWx1ZXMoIiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDTE9TRURfUkFOR0UoJzAnLCAnOScpKSk7CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKE9j
dGFsSW50ZWdlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIEludGVnZXJUZXN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdGluZzo6Q29tYmluZSh0ZXN0aW5nOjpWYWx1ZXMoIjAiKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0xPU0VEX1JBTkdFKCcw
JywgJzcnKSkpOworCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChIZXhhZGVjaW1hbEludGVnZXJf
MF85LAorICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlclRlc3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0aW5nOjpDb21iaW5lKHRlc3Rpbmc6OlZhbHVlcygiMHgiLCAiMFgiKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0xPU0VEX1JBTkdFKCcw
JywgJzknKSkpOworCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChIZXhhZGVjaW1hbEludGVnZXJf
YV9mLAorICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlclRlc3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0aW5nOjpDb21iaW5lKHRlc3Rpbmc6OlZhbHVlcygiMHgiLCAiMFgiKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0xPU0VEX1JBTkdFKCdh
JywgJ2YnKSkpOworCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChIZXhhZGVjaW1hbEludGVnZXJf
QV9GLAorICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlclRlc3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0aW5nOjpDb21iaW5lKHRlc3Rpbmc6OlZhbHVlcygiMHgiLCAiMFgiKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0xPU0VEX1JBTkdFKCdB
JywgJ0YnKSkpOworCitjbGFzcyBGbG9hdFRlc3QgOiBwdWJsaWMgUHJlcHJvY2Vzc29yVGVzdAor
eworICBwcm90ZWN0ZWQ6CisgICAgdm9pZCBleHBlY3RGbG9hdChjb25zdCBzdGQ6OnN0cmluZyYg
c3RyKQorICAgIHsKKyAgICAgICAgY29uc3QgY2hhciogY3N0ciA9IHN0ci5jX3N0cigpOworICAg
ICAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJmNzdHIsIDApKTsKKworICAg
ICAgICBwcDo6VG9rZW4gdG9rZW47CisgICAgICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7
CisgICAgICAgIEVYUEVDVF9FUShwcDo6VG9rZW46OkNPTlNUX0ZMT0FULCB0b2tlbi50eXBlKTsK
KyAgICAgICAgRVhQRUNUX0VRKHN0ciwgdG9rZW4udGV4dCk7CisgICAgfQorfTsKKwordHlwZWRl
ZiBzdGQ6OnRyMTo6dHVwbGU8Y2hhciwgY2hhciwgY29uc3QgY2hhciosIGNoYXI+IEZsb2F0U2Np
ZW50aWZpY1BhcmFtczsKK2NsYXNzIEZsb2F0U2NpZW50aWZpY1Rlc3QgOgorICAgIHB1YmxpYyBG
bG9hdFRlc3QsCisgICAgcHVibGljIHRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxGbG9hdFNj
aWVudGlmaWNQYXJhbXM+Cit7Cit9OworCisvLyBUaGlzIHRlc3QgY292ZXJzIGZsb2F0aW5nIHBv
aW50IG51bWJlcnMgb2YgZm9ybSBbMC05XVtlRV1bKy1dP1swLTldLgorVEVTVF9QKEZsb2F0U2Np
ZW50aWZpY1Rlc3QsIEZsb2F0SWRlbnRpZmllZCkKK3sKKyAgICBzdGQ6OnN0cmluZyBzdHI7Cisg
ICAgc3RyLnB1c2hfYmFjayhzdGQ6OnRyMTo6Z2V0PDA+KEdldFBhcmFtKCkpKTsgIC8vIHNpZ25p
ZmljYW5kIFswLTldLgorICAgIHN0ci5wdXNoX2JhY2soc3RkOjp0cjE6OmdldDwxPihHZXRQYXJh
bSgpKSk7ICAvLyBzZXBhcmF0b3IgW2VFXS4KKyAgICBzdHIuYXBwZW5kKHN0ZDo6dHIxOjpnZXQ8
Mj4oR2V0UGFyYW0oKSkpOyAgLy8gc2lnbiBbIiAiICIrIiAiLSJdLgorICAgIHN0ci5wdXNoX2Jh
Y2soc3RkOjp0cjE6OmdldDwzPihHZXRQYXJhbSgpKSk7ICAvLyBleHBvbmVudCBbMC05XS4KKwor
ICAgIFNDT1BFRF9UUkFDRSgiRmxvYXRTY2llbnRpZmljVGVzdCIpOworICAgIGV4cGVjdEZsb2F0
KHN0cik7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEZsb2F0U2NpZW50aWZpYywKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEZsb2F0U2NpZW50aWZpY1Rlc3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0aW5nOjpDb21iaW5lKENMT1NFRF9SQU5HRSgnMCcsICc5JyksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlZhbHVlcygnZScs
ICdFJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6
OlZhbHVlcygiIiwgIisiLCAiLSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDTE9TRURfUkFOR0UoJzAnLCAnOScpKSk7CisKK3R5cGVkZWYgc3RkOjp0cjE6OnR1
cGxlPGNoYXIsIGNoYXI+IEZsb2F0RnJhY3Rpb25QYXJhbXM7CitjbGFzcyBGbG9hdEZyYWN0aW9u
VGVzdCA6CisgICAgcHVibGljIEZsb2F0VGVzdCwKKyAgICBwdWJsaWMgdGVzdGluZzo6V2l0aFBh
cmFtSW50ZXJmYWNlPEZsb2F0RnJhY3Rpb25QYXJhbXM+Cit7Cit9OworCisvLyBUaGlzIHRlc3Qg
Y292ZXJzIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgb2YgZm9ybSBbMC05XSIuIiBhbmQgWzAtOV0/
Ii4iWzAtOV0uCitURVNUX1AoRmxvYXRGcmFjdGlvblRlc3QsIEZsb2F0SWRlbnRpZmllZCkKK3sK
KyAgICBzdGQ6OnN0cmluZyBzdHI7CisKKyAgICBjaGFyIHNpZ25pZmljYW5kID0gc3RkOjp0cjE6
OmdldDwwPihHZXRQYXJhbSgpKTsKKyAgICBpZiAoc2lnbmlmaWNhbmQgIT0gJ1wwJykKKyAgICAg
ICAgc3RyLnB1c2hfYmFjayhzaWduaWZpY2FuZCk7CisKKyAgICBzdHIucHVzaF9iYWNrKCcuJyk7
CisKKyAgICBjaGFyIGZyYWN0aW9uID0gc3RkOjp0cjE6OmdldDwxPihHZXRQYXJhbSgpKTsKKyAg
ICBpZiAoZnJhY3Rpb24gIT0gJ1wwJykKKyAgICAgICAgc3RyLnB1c2hfYmFjayhmcmFjdGlvbik7
CisKKyAgICBTQ09QRURfVFJBQ0UoIkZsb2F0RnJhY3Rpb25UZXN0Iik7CisgICAgZXhwZWN0Rmxv
YXQoc3RyKTsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoRmxvYXRGcmFjdGlvbl9YX1gs
CisgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdEZyYWN0aW9uVGVzdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3Rpbmc6OkNvbWJpbmUoQ0xPU0VEX1JBTkdFKCcwJywgJzknKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0xPU0VEX1JBTkdFKCcwJywg
JzknKSkpOworCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChGbG9hdEZyYWN0aW9uXzBfWCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEZsb2F0RnJhY3Rpb25UZXN0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdGluZzo6Q29tYmluZSh0ZXN0aW5nOjpWYWx1ZXMoJ1wwJyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMT1NFRF9SQU5HRSgnMCcsICc5Jykp
KTsKKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoRmxvYXRGcmFjdGlvbl9YXzAsCisgICAgICAg
ICAgICAgICAgICAgICAgICBGbG9hdEZyYWN0aW9uVGVzdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3Rpbmc6OkNvbWJpbmUoQ0xPU0VEX1JBTkdFKCcwJywgJzknKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6VmFsdWVzKCdcMCcpKSk7CisK
Ky8vIEluIHRoZSB0ZXN0cyBhYm92ZSB3ZSBoYXZlIHRlc3RlZCBpbmRpdmlkdWFsIHBhcnRzIG9m
IGEgZmxvYXQgc2VwYXJhdGVseS4KKy8vIFRoaXMgdGVzdCBoYXMgYWxsIHBhcnRzIG9mIGEgZmxv
YXQuCitURVNUX0YoRmxvYXRUZXN0LCBGcmFjdGlvblNjaWVudGlmaWMpCit7CisgICAgU0NPUEVE
X1RSQUNFKCJGcmFjdGlvblNjaWVudGlmaWMiKTsKKyAgICBleHBlY3RGbG9hdCgiMC4xZSsyIik7
Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29y
X3Rlc3RzL29wZXJhdG9yX3Rlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvb3BlcmF0b3JfdGVzdC5jcHAJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nl
c3Nvcl90ZXN0cy9vcGVyYXRvcl90ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgw
IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgIlByZXByb2Nlc3NvclRlc3QuaCIKKyNpbmNs
dWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uaCIKKworc3RydWN0IE9wZXJhdG9yVGVz
dFBhcmFtCit7CisgICAgY29uc3QgY2hhciogc3RyOworICAgIGludCBvcDsKK307CisKK2NsYXNz
IE9wZXJhdG9yVGVzdCA6IHB1YmxpYyBQcmVwcm9jZXNzb3JUZXN0LAorICAgICAgICAgICAgICAg
ICAgICAgcHVibGljIHRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxPcGVyYXRvclRlc3RQYXJh
bT4KK3sKK307CisKK1RFU1RfUChPcGVyYXRvclRlc3QsIElkZW50aWZpZWQpCit7CisgICAgT3Bl
cmF0b3JUZXN0UGFyYW0gcGFyYW0gPSBHZXRQYXJhbSgpOworCisgICAgQVNTRVJUX1RSVUUobVBy
ZXByb2Nlc3Nvci5pbml0KDEsICZwYXJhbS5zdHIsIDApKTsKKworICAgIHBwOjpUb2tlbiB0b2tl
bjsKKyAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOworICAgIEVYUEVDVF9FUShwYXJhbS5v
cCwgdG9rZW4udHlwZSk7CisgICAgRVhQRUNUX0VRKHBhcmFtLnN0ciwgdG9rZW4udGV4dCk7Cit9
CisKK3N0YXRpYyBjb25zdCBPcGVyYXRvclRlc3RQYXJhbSBrT3BlcmF0b3JzW10gPSB7CisgICAg
eyIoIiwgJygnfSwKKyAgICB7IikiLCAnKSd9LAorICAgIHsiWyIsICdbJ30sCisgICAgeyJdIiwg
J10nfSwKKyAgICB7Ii4iLCAnLid9LAorICAgIHsiKyIsICcrJ30sCisgICAgeyItIiwgJy0nfSwK
KyAgICB7In4iLCAnfid9LAorICAgIHsiISIsICchJ30sCisgICAgeyIqIiwgJyonfSwKKyAgICB7
Ii8iLCAnLyd9LAorICAgIHsiJSIsICclJ30sCisgICAgeyI8IiwgJzwnfSwKKyAgICB7Ij4iLCAn
Pid9LAorICAgIHsiJiIsICcmJ30sCisgICAgeyJeIiwgJ14nfSwKKyAgICB7InwiLCAnfCd9LAor
ICAgIHsiPyIsICc/J30sCisgICAgeyI6IiwgJzonfSwKKyAgICB7Ij0iLCAnPSd9LAorICAgIHsi
LCIsICcsJ30sCisgICAgeyIrKyIsICBwcDo6VG9rZW46Ok9QX0lOQ30sCisgICAgeyItLSIsICBw
cDo6VG9rZW46Ok9QX0RFQ30sCisgICAgeyI8PCIsICBwcDo6VG9rZW46Ok9QX0xFRlR9LAorICAg
IHsiPj4iLCAgcHA6OlRva2VuOjpPUF9SSUdIVH0sCisgICAgeyI8PSIsICBwcDo6VG9rZW46Ok9Q
X0xFfSwKKyAgICB7Ij49IiwgIHBwOjpUb2tlbjo6T1BfR0V9LAorICAgIHsiPT0iLCAgcHA6OlRv
a2VuOjpPUF9FUX0sCisgICAgeyIhPSIsICBwcDo6VG9rZW46Ok9QX05FfSwKKyAgICB7IiYmIiwg
IHBwOjpUb2tlbjo6T1BfQU5EfSwKKyAgICB7Il5eIiwgIHBwOjpUb2tlbjo6T1BfWE9SfSwKKyAg
ICB7Inx8IiwgIHBwOjpUb2tlbjo6T1BfT1J9LAorICAgIHsiKz0iLCAgcHA6OlRva2VuOjpPUF9B
RERfQVNTSUdOfSwKKyAgICB7Ii09IiwgIHBwOjpUb2tlbjo6T1BfU1VCX0FTU0lHTn0sCisgICAg
eyIqPSIsICBwcDo6VG9rZW46Ok9QX01VTF9BU1NJR059LAorICAgIHsiLz0iLCAgcHA6OlRva2Vu
OjpPUF9ESVZfQVNTSUdOfSwKKyAgICB7IiU9IiwgIHBwOjpUb2tlbjo6T1BfTU9EX0FTU0lHTn0s
CisgICAgeyI8PD0iLCBwcDo6VG9rZW46Ok9QX0xFRlRfQVNTSUdOfSwKKyAgICB7Ij4+PSIsIHBw
OjpUb2tlbjo6T1BfUklHSFRfQVNTSUdOfSwKKyAgICB7IiY9IiwgIHBwOjpUb2tlbjo6T1BfQU5E
X0FTU0lHTn0sCisgICAgeyJePSIsICBwcDo6VG9rZW46Ok9QX1hPUl9BU1NJR059LAorICAgIHsi
fD0iLCAgcHA6OlRva2VuOjpPUF9PUl9BU1NJR059Cit9OworCitJTlNUQU5USUFURV9URVNUX0NB
U0VfUChBbGwsIE9wZXJhdG9yVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6
OlZhbHVlc0luKGtPcGVyYXRvcnMpKTsKKwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9wcmFnbWFfdGVzdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9w
cmFnbWFfdGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9wcmFnbWFfdGVzdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxNTQgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAiUHJlcHJvY2Vz
c29yVGVzdC5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5oIgorCitj
bGFzcyBQcmFnbWFUZXN0IDogcHVibGljIFByZXByb2Nlc3NvclRlc3QKK3sKK307CisKK1RFU1Rf
RihQcmFnbWFUZXN0LCBFbXB0eU5hbWUpCit7CisgICAgY29uc3QgY2hhciogc3RyID0gIiNwcmFn
bWFcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iOworCisgICAgdXNpbmcgdGVz
dGluZzo6XzsKKyAgICAvLyBObyBoYW5kbGVQcmFnbWEgY2FsbHMuCisgICAgRVhQRUNUX0NBTEwo
bURpcmVjdGl2ZUhhbmRsZXIsIGhhbmRsZVByYWdtYShfLCBfLCBfLCBmYWxzZSkpLlRpbWVzKDAp
OworICAgIC8vIE5vIGVycm9yIG9yIHdhcm5pbmcuCisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0
aWNzLCBwcmludChfLCBfLCBfKSkuVGltZXMoMCk7CisKKyAgICBwcmVwcm9jZXNzKHN0ciwgZXhw
ZWN0ZWQpOworfQorCitURVNUX0YoUHJhZ21hVGVzdCwgRW1wdHlWYWx1ZSkKK3sKKyAgICBjb25z
dCBjaGFyKiBzdHIgPSAiI3ByYWdtYSBmb29cbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQg
PSAiXG4iOworCisgICAgdXNpbmcgdGVzdGluZzo6XzsKKyAgICBFWFBFQ1RfQ0FMTChtRGlyZWN0
aXZlSGFuZGxlciwKKyAgICAgICAgICAgICAgICBoYW5kbGVQcmFnbWEocHA6OlNvdXJjZUxvY2F0
aW9uKDAsIDEpLCAiZm9vIiwgIiIsIGZhbHNlKSk7CisgICAgLy8gTm8gZXJyb3Igb3Igd2Fybmlu
Zy4KKyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KF8sIF8sIF8pKS5UaW1lcygw
KTsKKworICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihQcmFnbWFU
ZXN0LCBOYW1lVmFsdWUpCit7CisgICAgY29uc3QgY2hhciogc3RyID0gIiNwcmFnbWEgZm9vKGJh
cilcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iOworCisgICAgdXNpbmcgdGVz
dGluZzo6XzsKKyAgICBFWFBFQ1RfQ0FMTChtRGlyZWN0aXZlSGFuZGxlciwKKyAgICAgICAgICAg
ICAgICBoYW5kbGVQcmFnbWEocHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLCAiZm9vIiwgImJhciIs
IGZhbHNlKSk7CisgICAgLy8gTm8gZXJyb3Igb3Igd2FybmluZy4KKyAgICBFWFBFQ1RfQ0FMTCht
RGlhZ25vc3RpY3MsIHByaW50KF8sIF8sIF8pKS5UaW1lcygwKTsKKworICAgIHByZXByb2Nlc3Mo
c3RyLCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihQcmFnbWFUZXN0LCBTVERHTCkKK3sKKyAgICBj
b25zdCBjaGFyKiBzdHIgPSAiI3ByYWdtYSBTVERHTFxuIjsKKyAgICBjb25zdCBjaGFyKiBleHBl
Y3RlZCA9ICJcbiI7CisKKyAgICB1c2luZyB0ZXN0aW5nOjpfOworICAgIEVYUEVDVF9DQUxMKG1E
aXJlY3RpdmVIYW5kbGVyLAorICAgICAgICAgICAgICAgIGhhbmRsZVByYWdtYShfLCBfLCBfLCBf
KSkuVGltZXMoMCk7CisgICAgLy8gTm8gZXJyb3Igb3Igd2FybmluZy4KKyAgICBFWFBFQ1RfQ0FM
TChtRGlhZ25vc3RpY3MsIHByaW50KF8sIF8sIF8pKS5UaW1lcygwKTsKKworICAgIHByZXByb2Nl
c3Moc3RyLCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihQcmFnbWFUZXN0LCBTVERHTEludmFyaWFu
dEFsbCkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAiI3ByYWdtYSBTVERHTCBpbnZhcmlhbnQo
YWxsKVxuIjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiI7CisKKyAgICB1c2luZyB0
ZXN0aW5nOjpfOworICAgIEVYUEVDVF9DQUxMKG1EaXJlY3RpdmVIYW5kbGVyLAorICAgICAgICAg
ICAgICAgIGhhbmRsZVByYWdtYShwcDo6U291cmNlTG9jYXRpb24oMCwgMSksICJpbnZhcmlhbnQi
LCAiYWxsIiwgdHJ1ZSkpOworICAgIC8vIE5vIGVycm9yIG9yIHdhcm5pbmcuCisgICAgRVhQRUNU
X0NBTEwobURpYWdub3N0aWNzLCBwcmludChfLCBfLCBfKSkuVGltZXMoMCk7CisKKyAgICBwcmVw
cm9jZXNzKHN0ciwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoUHJhZ21hVGVzdCwgQ29tbWVudHMp
Cit7CisgICAgY29uc3QgY2hhciogc3RyID0gIi8qZm9vKi8iCisgICAgICAgICAgICAgICAgICAg
ICAgIiMiCisgICAgICAgICAgICAgICAgICAgICAgIi8qZm9vKi8iCisgICAgICAgICAgICAgICAg
ICAgICAgInByYWdtYSIKKyAgICAgICAgICAgICAgICAgICAgICAiLypmb28qLyIKKyAgICAgICAg
ICAgICAgICAgICAgICAiZm9vIgorICAgICAgICAgICAgICAgICAgICAgICIvKmZvbyovIgorICAg
ICAgICAgICAgICAgICAgICAgICIoIgorICAgICAgICAgICAgICAgICAgICAgICIvKmZvbyovIgor
ICAgICAgICAgICAgICAgICAgICAgICJiYXIiCisgICAgICAgICAgICAgICAgICAgICAgIi8qZm9v
Ki8iCisgICAgICAgICAgICAgICAgICAgICAgIikiCisgICAgICAgICAgICAgICAgICAgICAgIi8q
Zm9vKi8iCisgICAgICAgICAgICAgICAgICAgICAgIi8vZm9vIgorICAgICAgICAgICAgICAgICAg
ICAgICJcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iOworCisgICAgdXNpbmcg
dGVzdGluZzo6XzsKKyAgICBFWFBFQ1RfQ0FMTChtRGlyZWN0aXZlSGFuZGxlciwKKyAgICAgICAg
ICAgICAgICBoYW5kbGVQcmFnbWEocHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLCAiZm9vIiwgImJh
ciIsIGZhbHNlKSk7CisgICAgLy8gTm8gZXJyb3Igb3Igd2FybmluZy4KKyAgICBFWFBFQ1RfQ0FM
TChtRGlhZ25vc3RpY3MsIHByaW50KF8sIF8sIF8pKS5UaW1lcygwKTsKKworICAgIHByZXByb2Nl
c3Moc3RyLCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihQcmFnbWFUZXN0LCBNaXNzaW5nTmV3bGlu
ZSkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAiI3ByYWdtYSBmb28oYmFyKSI7CisgICAgY29u
c3QgY2hhciogZXhwZWN0ZWQgPSAiIjsKKworICAgIHVzaW5nIHRlc3Rpbmc6Ol87CisgICAgLy8g
UHJhZ21hIHN1Y2Nlc3NmdWxseSBwYXJzZWQuCisgICAgRVhQRUNUX0NBTEwobURpcmVjdGl2ZUhh
bmRsZXIsCisgICAgICAgICAgICAgICAgaGFuZGxlUHJhZ21hKHBwOjpTb3VyY2VMb2NhdGlvbigw
LCAxKSwgImZvbyIsICJiYXIiLCBmYWxzZSkpOworICAgIC8vIEVycm9yIHJlcG9ydGVkIGFib3V0
IEVPRi4KKyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KHBwOjpEaWFnbm9zdGlj
czo6UFBfRU9GX0lOX0RJUkVDVElWRSwgXywgXykpOworCisgICAgcHJlcHJvY2VzcyhzdHIsIGV4
cGVjdGVkKTsKK30KKworY2xhc3MgSW52YWxpZFByYWdtYVRlc3QgOiBwdWJsaWMgUHJhZ21hVGVz
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHRlc3Rpbmc6OldpdGhQYXJhbUlu
dGVyZmFjZTxjb25zdCBjaGFyKj4KK3sKK307CisKK1RFU1RfUChJbnZhbGlkUHJhZ21hVGVzdCwg
SWRlbnRpZmllZCkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSBHZXRQYXJhbSgpOworICAgIGNv
bnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIjsKKworICAgIHVzaW5nIHRlc3Rpbmc6Ol87CisgICAg
Ly8gTm8gaGFuZGxlUHJhZ21hIGNhbGxzLgorICAgIEVYUEVDVF9DQUxMKG1EaXJlY3RpdmVIYW5k
bGVyLCBoYW5kbGVQcmFnbWEoXywgXywgXywgZmFsc2UpKS5UaW1lcygwKTsKKyAgICAvLyBVbnJl
Y29nbml6ZWQgcHJhZ21hIHdhcm5pbmcuCisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAor
ICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfVU5SRUNPR05JWkVEX1BS
QUdNQSwKKyAgICAgICAgICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgMSksIF8p
KTsKKworICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Cit9CisKK0lOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QKEFsbCwgSW52YWxpZFByYWdtYVRlc3QsIHRlc3Rpbmc6OlZhbHVlcygKKyAgICAi
I3ByYWdtYSAxXG4iLCAgICAgICAgICAgICAgIC8vIEludmFsaWQgbmFtZS4KKyAgICAiI3ByYWdt
YSBmb28oKVxuIiwgICAgICAgICAgIC8vIE1pc3NpbmcgdmFsdWUuCisgICAgIiNwcmFnbWEgZm9v
IGJhcilcbiIsICAgICAgICAvLyBNaXNzaW5nIGxlZnQgcGFyZW4sCisgICAgIiNwcmFnbWEgZm9v
KGJhclxuIiwgICAgICAgICAvLyBNaXNzaW5nIHJpZ2h0IHBhcmVuLgorICAgICIjcHJhZ21hIGZv
byBiYXJcbiIsICAgICAgICAgLy8gTWlzc2luZyBwYXJlbnMuCisgICAgIiNwcmFnbWEgZm9vKGJh
cikgYmF6XG4iKSk7ICAvLyBFeHRyYSB0b2tlbnMuCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL3NwYWNlX3Rlc3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVz
dHMvc3BhY2VfdGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9zcGFjZV90ZXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEwNiBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpbmNsdWRlICJQcmVwcm9j
ZXNzb3JUZXN0LmgiCisjaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmgiCisK
K2NsYXNzIFNwYWNlVGVzdCA6IHB1YmxpYyBQcmVwcm9jZXNzb3JUZXN0Cit7CisgIHByb3RlY3Rl
ZDoKKyAgICB2b2lkIGV4cGVjdFNwYWNlKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpCisgICAgewor
ICAgICAgICBjb25zdCBjaGFyKiBjc3RyID0gc3RyLmNfc3RyKCk7CisgICAgICAgIEFTU0VSVF9U
UlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmY3N0ciwgMCkpOworCisgICAgICAgIHBwOjpUb2tl
biB0b2tlbjsKKyAgICAgICAgLy8gImZvbyIgaXMgcmV0dXJuZWQgYWZ0ZXIgaWdub3JpbmcgdGhl
IHdoaXRlc3BhY2UgY2hhcmFjdGVycy4KKyAgICAgICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2Vu
KTsKKyAgICAgICAgRVhQRUNUX0VRKHBwOjpUb2tlbjo6SURFTlRJRklFUiwgdG9rZW4udHlwZSk7
CisgICAgICAgIEVYUEVDVF9FUSgiZm9vIiwgdG9rZW4udGV4dCk7CisgICAgICAgIC8vIFRoZSB3
aGl0ZXNwYWNlIGNoYXJhY3RlciBpcyBob3dldmVyIHJlY29yZGVkIHdpdGggdGhlIG5leHQgdG9r
ZW4uCisgICAgICAgIEVYUEVDVF9UUlVFKHRva2VuLmhhc0xlYWRpbmdTcGFjZSgpKTsKKyAgICB9
Cit9OworCisvLyBXaGl0ZXNwYWNlIGNoYXJhY3RlcnMgYWxsb3dlZCBpbiBHTFNMLgorLy8gTm90
ZSB0aGF0IG5ld2xpbmUgY2hhcmFjdGVycyAoXG4pIHdpbGwgYmUgdGVzdGVkIHNlcGFyYXRlbHku
CitzdGF0aWMgY29uc3QgY2hhciBrU3BhY2VDaGFyc1tdID0geycgJywgJ1x0JywgJ1x2JywgJ1xm
J307CisKKy8vIFRoaXMgdGVzdCBmaXh0dXJlIHRlc3RzIHRoZSBwcm9jZXNzaW5nIG9mIGEgc2lu
Z2xlIHdoaXRlc3BhY2UgY2hhcmFjdGVyLgorLy8gQWxsIHRlc3RzIGluIHRoaXMgZml4dHVyZSBh
cmUgcmFuIHdpdGggYWxsIHBvc3NpYmxlIHdoaXRlc3BhY2UgY2hhcmFjdGVyCisvLyBhbGxvd2Vk
IGluIEdMU0wuCitjbGFzcyBTcGFjZUNoYXJUZXN0IDogcHVibGljIFNwYWNlVGVzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICBwdWJsaWMgdGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPGNoYXI+
Cit7Cit9OworCitURVNUX1AoU3BhY2VDaGFyVGVzdCwgU3BhY2VJZ25vcmVkKQoreworICAgIC8v
IENvbnN0cnVjdCB0ZXN0IHN0cmluZyB3aXRoIHRoZSB3aGl0ZXNwYWNlIGNoYXIgYmVmb3JlICJm
b28iLgorICAgIHN0ZDo6c3RyaW5nIHN0cigxLCBHZXRQYXJhbSgpKTsKKyAgICBzdHIuYXBwZW5k
KCJmb28iKTsKKworICAgIGV4cGVjdFNwYWNlKHN0cik7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1Rf
Q0FTRV9QKFNpbmdsZVNwYWNlQ2hhciwKKyAgICAgICAgICAgICAgICAgICAgICAgIFNwYWNlQ2hh
clRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpWYWx1ZXNJbihrU3BhY2VD
aGFycykpOworCisvLyBUaGlzIHRlc3QgZml4dHVyZSB0ZXN0cyB0aGUgcHJvY2Vzc2luZyBvZiBh
IHN0cmluZyBjb250YWluaW5nIGNvbnNlY3V0aXZlCisvLyB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMu
IEFsbCB0ZXN0cyBpbiB0aGlzIGZpeHR1cmUgYXJlIHJhbiB3aXRoIGFsbCBwb3NzaWJsZQorLy8g
Y29tYmluYXRpb25zIG9mIHdoaXRlc3BhY2UgY2hhcmFjdGVycyBhbGxvd2VkIGluIEdMU0wuCit0
eXBlZGVmIHN0ZDo6dHIxOjp0dXBsZTxjaGFyLCBjaGFyLCBjaGFyPiBTcGFjZVN0cmluZ1BhcmFt
czsKK2NsYXNzIFNwYWNlU3RyaW5nVGVzdCA6IHB1YmxpYyBTcGFjZVRlc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICBwdWJsaWMgdGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPFNwYWNlU3Ry
aW5nUGFyYW1zPgoreworfTsKKworVEVTVF9QKFNwYWNlU3RyaW5nVGVzdCwgU3BhY2VJZ25vcmVk
KQoreworICAgIC8vIENvbnN0cnVjdCB0ZXN0IHN0cmluZyB3aXRoIHRoZSB3aGl0ZXNwYWNlIGNo
YXIgYmVmb3JlICJmb28iLgorICAgIHN0ZDo6c3RyaW5nIHN0cjsKKyAgICBzdHIucHVzaF9iYWNr
KHN0ZDo6dHIxOjpnZXQ8MD4oR2V0UGFyYW0oKSkpOworICAgIHN0ci5wdXNoX2JhY2soc3RkOjp0
cjE6OmdldDwxPihHZXRQYXJhbSgpKSk7CisgICAgc3RyLnB1c2hfYmFjayhzdGQ6OnRyMTo6Z2V0
PDI+KEdldFBhcmFtKCkpKTsKKyAgICBzdHIuYXBwZW5kKCJmb28iKTsKKworICAgIGV4cGVjdFNw
YWNlKHN0cik7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFNwYWNlQ2hhckNvbWJpbmF0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgU3BhY2VTdHJpbmdUZXN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdGluZzo6Q29tYmluZSh0ZXN0aW5nOjpWYWx1ZXNJbihrU3BhY2VD
aGFycyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6
OlZhbHVlc0luKGtTcGFjZUNoYXJzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdGluZzo6VmFsdWVzSW4oa1NwYWNlQ2hhcnMpKSk7CisKKy8vIFRoZSB0ZXN0
cyBhYm92ZSBtYWtlIHN1cmUgdGhhdCB0aGUgc3BhY2UgY2hhciBpcyByZWNvcmRlZCBpbiB0aGUK
Ky8vIG5leHQgdG9rZW4uIFRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgYSB0b2tlbiBpcyBub3Qg
aW5jb3JyZWN0bHkgbWFya2VkCisvLyB0byBoYXZlIGxlYWRpbmcgc3BhY2UuCitURVNUX0YoU3Bh
Y2VUZXN0LCBMZWFkaW5nU3BhY2UpCit7CisgICAgY29uc3QgY2hhciogc3RyID0gIiBmb28rIC1i
YXIiOworICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCAwKSk7CisK
KyAgICBwcDo6VG9rZW4gdG9rZW47CisgICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKKyAg
ICBFWFBFQ1RfRVEocHA6OlRva2VuOjpJREVOVElGSUVSLCB0b2tlbi50eXBlKTsKKyAgICBFWFBF
Q1RfRVEoImZvbyIsIHRva2VuLnRleHQpOworICAgIEVYUEVDVF9UUlVFKHRva2VuLmhhc0xlYWRp
bmdTcGFjZSgpKTsKKworICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7CisgICAgRVhQRUNU
X0VRKCcrJywgdG9rZW4udHlwZSk7CisgICAgRVhQRUNUX0ZBTFNFKHRva2VuLmhhc0xlYWRpbmdT
cGFjZSgpKTsKKworICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7CisgICAgRVhQRUNUX0VR
KCctJywgdG9rZW4udHlwZSk7CisgICAgRVhQRUNUX1RSVUUodG9rZW4uaGFzTGVhZGluZ1NwYWNl
KCkpOworCisgICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKKyAgICBFWFBFQ1RfRVEocHA6
OlRva2VuOjpJREVOVElGSUVSLCB0b2tlbi50eXBlKTsKKyAgICBFWFBFQ1RfRVEoImJhciIsIHRv
a2VuLnRleHQpOworICAgIEVYUEVDVF9GQUxTRSh0b2tlbi5oYXNMZWFkaW5nU3BhY2UoKSk7Cit9
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rl
c3RzL3Rva2VuX3Rlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvdG9rZW5fdGVzdC5jcHAJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0
cy90b2tlbl90ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkwIEBACisvLworLy8g
Q29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpbmNsdWRlICJjb21waWxlci9w
cmVwcm9jZXNzb3IvVG9rZW4uaCIKKworVEVTVChUb2tlblRlc3QsIERlZmF1bHRDb25zdHJ1Y3Rv
cikKK3sKKyAgICBwcDo6VG9rZW4gdG9rZW47CisgICAgRVhQRUNUX0VRKDAsIHRva2VuLnR5cGUp
OworICAgIEVYUEVDVF9FUSgwdSwgdG9rZW4uZmxhZ3MpOworICAgIEVYUEVDVF9FUSgwLCB0b2tl
bi5sb2NhdGlvbi5saW5lKTsKKyAgICBFWFBFQ1RfRVEoMCwgdG9rZW4ubG9jYXRpb24uZmlsZSk7
CisgICAgRVhQRUNUX0VRKCIiLCB0b2tlbi50ZXh0KTsKK30KKworVEVTVChUb2tlblRlc3QsIEFz
c2lnbm1lbnQpCit7CisgICAgcHA6OlRva2VuIHRva2VuOworICAgIHRva2VuLnR5cGUgPSAxOwor
ICAgIHRva2VuLmZsYWdzID0gMTsKKyAgICB0b2tlbi5sb2NhdGlvbi5saW5lID0gMTsKKyAgICB0
b2tlbi5sb2NhdGlvbi5maWxlID0gMTsKKyAgICB0b2tlbi50ZXh0LmFzc2lnbigiZm9vIik7CisK
KyAgICB0b2tlbiA9IHBwOjpUb2tlbigpOworICAgIEVYUEVDVF9FUSgwLCB0b2tlbi50eXBlKTsK
KyAgICBFWFBFQ1RfRVEoMHUsIHRva2VuLmZsYWdzKTsKKyAgICBFWFBFQ1RfRVEoMCwgdG9rZW4u
bG9jYXRpb24ubGluZSk7CisgICAgRVhQRUNUX0VRKDAsIHRva2VuLmxvY2F0aW9uLmZpbGUpOwor
ICAgIEVYUEVDVF9FUSgiIiwgdG9rZW4udGV4dCk7Cit9CisKK1RFU1QoVG9rZW5UZXN0LCBFcXVh
bHMpCit7CisgICAgcHA6OlRva2VuIHRva2VuOworICAgIEVYUEVDVF9UUlVFKHRva2VuLmVxdWFs
cyhwcDo6VG9rZW4oKSkpOworCisgICAgdG9rZW4udHlwZSA9IDE7CisgICAgRVhQRUNUX0ZBTFNF
KHRva2VuLmVxdWFscyhwcDo6VG9rZW4oKSkpOworICAgIHRva2VuLnR5cGUgPSAwOworCisgICAg
dG9rZW4uZmxhZ3MgPSAxOworICAgIEVYUEVDVF9GQUxTRSh0b2tlbi5lcXVhbHMocHA6OlRva2Vu
KCkpKTsKKyAgICB0b2tlbi5mbGFncyA9IDA7CisKKyAgICB0b2tlbi5sb2NhdGlvbi5saW5lID0g
MTsKKyAgICBFWFBFQ1RfRkFMU0UodG9rZW4uZXF1YWxzKHBwOjpUb2tlbigpKSk7CisgICAgdG9r
ZW4ubG9jYXRpb24ubGluZSA9IDA7CisKKyAgICB0b2tlbi5sb2NhdGlvbi5maWxlID0gMTsKKyAg
ICBFWFBFQ1RfRkFMU0UodG9rZW4uZXF1YWxzKHBwOjpUb2tlbigpKSk7CisgICAgdG9rZW4ubG9j
YXRpb24uZmlsZSA9IDA7CisKKyAgICB0b2tlbi50ZXh0LmFzc2lnbigiZm9vIik7CisgICAgRVhQ
RUNUX0ZBTFNFKHRva2VuLmVxdWFscyhwcDo6VG9rZW4oKSkpOworICAgIHRva2VuLnRleHQuY2xl
YXIoKTsKKworICAgIEVYUEVDVF9UUlVFKHRva2VuLmVxdWFscyhwcDo6VG9rZW4oKSkpOworfQor
CitURVNUKFRva2VuVGVzdCwgSGFzTGVhZGluZ1NwYWNlKQoreworICAgIHBwOjpUb2tlbiB0b2tl
bjsKKyAgICBFWFBFQ1RfRkFMU0UodG9rZW4uaGFzTGVhZGluZ1NwYWNlKCkpOworICAgIHRva2Vu
LnNldEhhc0xlYWRpbmdTcGFjZSh0cnVlKTsKKyAgICBFWFBFQ1RfVFJVRSh0b2tlbi5oYXNMZWFk
aW5nU3BhY2UoKSk7CisgICAgdG9rZW4uc2V0SGFzTGVhZGluZ1NwYWNlKGZhbHNlKTsKKyAgICBF
WFBFQ1RfRkFMU0UodG9rZW4uaGFzTGVhZGluZ1NwYWNlKCkpOworfQorCitURVNUKFRva2VuVGVz
dCwgV3JpdGUpCit7CisgICAgcHA6OlRva2VuIHRva2VuOworICAgIHRva2VuLnRleHQuYXNzaWdu
KCJmb28iKTsKKyAgICBzdGQ6OnN0cmluZ3N0cmVhbSBvdXQxOworICAgIG91dDEgPDwgdG9rZW47
CisgICAgRVhQRUNUX1RSVUUob3V0MS5nb29kKCkpOworICAgIEVYUEVDVF9FUSgiZm9vIiwgb3V0
MS5zdHIoKSk7CisKKyAgICB0b2tlbi5zZXRIYXNMZWFkaW5nU3BhY2UodHJ1ZSk7CisgICAgc3Rk
OjpzdHJpbmdzdHJlYW0gb3V0MjsKKyAgICBvdXQyIDw8IHRva2VuOworICAgIEVYUEVDVF9UUlVF
KG91dDIuZ29vZCgpKTsKKyAgICBFWFBFQ1RfRVEoIiBmb28iLCBvdXQyLnN0cigpKTsKK30KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMv
dmVyc2lvbl90ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL3ZlcnNpb25fdGVzdC5jcHAJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0
cy92ZXJzaW9uX3Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjI5IEBACisvLwor
Ly8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgorLy8KKworI2luY2x1ZGUgIlByZXByb2Nlc3NvclRlc3QuaCIKKyNpbmNsdWRlICJjb21w
aWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uaCIKKworY2xhc3MgVmVyc2lvblRlc3QgOiBwdWJsaWMg
UHJlcHJvY2Vzc29yVGVzdAoreworfTsKKworVEVTVF9GKFZlcnNpb25UZXN0LCBWYWxpZCkKK3sK
KyAgICBjb25zdCBjaGFyKiBzdHIgPSAiI3ZlcnNpb24gMjAwXG4iOworICAgIGNvbnN0IGNoYXIq
IGV4cGVjdGVkID0gIlxuIjsKKworICAgIHVzaW5nIHRlc3Rpbmc6Ol87CisgICAgRVhQRUNUX0NB
TEwobURpcmVjdGl2ZUhhbmRsZXIsCisgICAgICAgICAgICAgICAgaGFuZGxlVmVyc2lvbihwcDo6
U291cmNlTG9jYXRpb24oMCwgMSksIDIwMCkpOworICAgIC8vIE5vIGVycm9yIG9yIHdhcm5pbmcu
CisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmludChfLCBfLCBfKSkuVGltZXMoMCk7
CisKKyAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoVmVyc2lvblRl
c3QsIENvbW1lbnRzSWdub3JlZCkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAiLypmb28qLyIK
KyAgICAgICAgICAgICAgICAgICAgICAiIyIKKyAgICAgICAgICAgICAgICAgICAgICAiLypmb28q
LyIKKyAgICAgICAgICAgICAgICAgICAgICAidmVyc2lvbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAiLypmb28qLyIKKyAgICAgICAgICAgICAgICAgICAgICAiMjAwIgorICAgICAgICAgICAgICAg
ICAgICAgICIvKmZvbyovIgorICAgICAgICAgICAgICAgICAgICAgICIvL2ZvbyIKKyAgICAgICAg
ICAgICAgICAgICAgICAiXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIjsKKwor
ICAgIHVzaW5nIHRlc3Rpbmc6Ol87CisgICAgRVhQRUNUX0NBTEwobURpcmVjdGl2ZUhhbmRsZXIs
CisgICAgICAgICAgICAgICAgaGFuZGxlVmVyc2lvbihwcDo6U291cmNlTG9jYXRpb24oMCwgMSks
IDIwMCkpOworICAgIC8vIE5vIGVycm9yIG9yIHdhcm5pbmcuCisgICAgRVhQRUNUX0NBTEwobURp
YWdub3N0aWNzLCBwcmludChfLCBfLCBfKSkuVGltZXMoMCk7CisKKyAgICBwcmVwcm9jZXNzKHN0
ciwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoVmVyc2lvblRlc3QsIE1pc3NpbmdOZXdsaW5lKQor
eworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjdmVyc2lvbiAyMDAiOworICAgIGNvbnN0IGNoYXIq
IGV4cGVjdGVkID0gIiI7CisKKyAgICB1c2luZyB0ZXN0aW5nOjpfOworICAgIC8vIERpcmVjdGl2
ZSBzdWNjZXNzZnVsbHkgcGFyc2VkLgorICAgIEVYUEVDVF9DQUxMKG1EaXJlY3RpdmVIYW5kbGVy
LAorICAgICAgICAgICAgICAgIGhhbmRsZVZlcnNpb24ocHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEp
LCAyMDApKTsKKyAgICAvLyBFcnJvciByZXBvcnRlZCBhYm91dCBFT0YuCisgICAgRVhQRUNUX0NB
TEwobURpYWdub3N0aWNzLCBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX0VPRl9JTl9ESVJFQ1RJ
VkUsIF8sIF8pKTsKKworICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Cit9CisKK1RFU1Rf
RihWZXJzaW9uVGVzdCwgQWZ0ZXJDb21tZW50cykKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAi
LyogYmxvY2sgY29tbWVudCBhY2NlcHRhYmxlICovXG4iCisgICAgICAgICAgICAgICAgICAgICAg
Ii8vIGxpbmUgY29tbWVudCBhY2NlcHRhYmxlXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiN2
ZXJzaW9uIDIwMFxuIjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcblxuXG4iOworCisg
ICAgdXNpbmcgdGVzdGluZzo6XzsKKyAgICAvLyBEaXJlY3RpdmUgc3VjY2Vzc2Z1bGx5IHBhcnNl
ZC4KKyAgICBFWFBFQ1RfQ0FMTChtRGlyZWN0aXZlSGFuZGxlciwKKyAgICAgICAgICAgICAgICBo
YW5kbGVWZXJzaW9uKHBwOjpTb3VyY2VMb2NhdGlvbigwLCAzKSwgMjAwKSk7CisgICAgLy8gTm8g
ZXJyb3Igb3Igd2FybmluZy4KKyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KF8s
IF8sIF8pKS5UaW1lcygwKTsKKyAgICAKKyAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOwor
fQorCitURVNUX0YoVmVyc2lvblRlc3QsIEFmdGVyV2hpdGVzcGFjZSkKK3sKKyAgICBjb25zdCBj
aGFyKiBzdHIgPSAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAg
ICAgICAgICAgICIjdmVyc2lvbiAyMDBcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAi
XG5cblxuIjsKKworICAgIHVzaW5nIHRlc3Rpbmc6Ol87CisgICAgLy8gRGlyZWN0aXZlIHN1Y2Nl
c3NmdWxseSBwYXJzZWQuCisgICAgRVhQRUNUX0NBTEwobURpcmVjdGl2ZUhhbmRsZXIsCisgICAg
ICAgICAgICAgICAgaGFuZGxlVmVyc2lvbihwcDo6U291cmNlTG9jYXRpb24oMCwgMyksIDIwMCkp
OworICAgIC8vIE5vIGVycm9yIG9yIHdhcm5pbmcuCisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0
aWNzLCBwcmludChfLCBfLCBfKSkuVGltZXMoMCk7CisgICAgCisgICAgcHJlcHJvY2VzcyhzdHIs
IGV4cGVjdGVkKTsKK30KKworVEVTVF9GKFZlcnNpb25UZXN0LCBBZnRlclZhbGlkVG9rZW4pCit7
CisgICAgY29uc3QgY2hhciogc3RyID0gImZvb1xuIgorICAgICAgICAgICAgICAgICAgICAgICIj
dmVyc2lvbiAyMDBcbiI7CisgICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZz
dHIsIE5VTEwpKTsKKworICAgIHVzaW5nIHRlc3Rpbmc6Ol87CisgICAgRVhQRUNUX0NBTEwobURp
YWdub3N0aWNzLAorICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfVkVS
U0lPTl9OT1RfRklSU1RfU1RBVEVNRU5ULAorICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3Vy
Y2VMb2NhdGlvbigwLCAyKSwgXykpOworCisgICAgcHA6OlRva2VuIHRva2VuOworICAgIGRvCisg
ICAgeworICAgICAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOworICAgIH0gd2hpbGUgKHRv
a2VuLnR5cGUgIT0gcHA6OlRva2VuOjpMQVNUKTsKK30KKworVEVTVF9GKFZlcnNpb25UZXN0LCBB
ZnRlckludmFsaWRUb2tlbikKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAiJFxuIgorICAgICAg
ICAgICAgICAgICAgICAgICIjdmVyc2lvbiAyMDBcbiI7CisgICAgQVNTRVJUX1RSVUUobVByZXBy
b2Nlc3Nvci5pbml0KDEsICZzdHIsIE5VTEwpKTsKKworICAgIHVzaW5nIHRlc3Rpbmc6Ol87Cisg
ICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAorICAgICAgICAgICAgICAgIHByaW50KHBwOjpE
aWFnbm9zdGljczo6UFBfSU5WQUxJRF9DSEFSQUNURVIsCisgICAgICAgICAgICAgICAgICAgICAg
cHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLCAiJCIpKTsKKyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25v
c3RpY3MsCisgICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9WRVJTSU9O
X05PVF9GSVJTVF9TVEFURU1FTlQsCisgICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxv
Y2F0aW9uKDAsIDIpLCBfKSk7CisKKyAgICBwcDo6VG9rZW4gdG9rZW47CisgICAgZG8KKyAgICB7
CisgICAgICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7CisgICAgfSB3aGlsZSAodG9rZW4u
dHlwZSAhPSBwcDo6VG9rZW46OkxBU1QpOworfQorCitURVNUX0YoVmVyc2lvblRlc3QsIEFmdGVy
VmFsaWREaXJlY3RpdmUpCit7CisgICAgY29uc3QgY2hhciogc3RyID0gIiNcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAiI3ZlcnNpb24gMjAwXG4iOworICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9j
ZXNzb3IuaW5pdCgxLCAmc3RyLCBOVUxMKSk7CisKKyAgICB1c2luZyB0ZXN0aW5nOjpfOworICAg
IEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKKyAgICAgICAgICAgICAgICBwcmludChwcDo6RGlh
Z25vc3RpY3M6OlBQX1ZFUlNJT05fTk9UX0ZJUlNUX1NUQVRFTUVOVCwKKyAgICAgICAgICAgICAg
ICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgMiksIF8pKTsKKworICAgIHBwOjpUb2tlbiB0
b2tlbjsKKyAgICBkbworICAgIHsKKyAgICAgICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsK
KyAgICB9IHdoaWxlICh0b2tlbi50eXBlICE9IHBwOjpUb2tlbjo6TEFTVCk7Cit9CisKK1RFU1Rf
RihWZXJzaW9uVGVzdCwgQWZ0ZXJJbnZhbGlkRGlyZWN0aXZlKQoreworICAgIGNvbnN0IGNoYXIq
IHN0ciA9ICIjZm9vXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiN2ZXJzaW9uIDIwMFxuIjsK
KyAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJnN0ciwgTlVMTCkpOworCisg
ICAgdXNpbmcgdGVzdGluZzo6XzsKKyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsCisgICAg
ICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9ESVJFQ1RJVkVfSU5WQUxJRF9O
QU1FLAorICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwgImZv
byIpKTsKKyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsCisgICAgICAgICAgICAgICAgcHJp
bnQocHA6OkRpYWdub3N0aWNzOjpQUF9WRVJTSU9OX05PVF9GSVJTVF9TVEFURU1FTlQsCisgICAg
ICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDIpLCBfKSk7CisKKyAgICBw
cDo6VG9rZW4gdG9rZW47CisgICAgZG8KKyAgICB7CisgICAgICAgIG1QcmVwcm9jZXNzb3IubGV4
KCZ0b2tlbik7CisgICAgfSB3aGlsZSAodG9rZW4udHlwZSAhPSBwcDo6VG9rZW46OkxBU1QpOwor
fQorCitURVNUX0YoVmVyc2lvblRlc3QsIEFmdGVyRXhjbHVkZWRCbG9jaykKK3sKKyAgICBjb25z
dCBjaGFyKiBzdHIgPSAiI2lmIDBcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiZm9vXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIgorICAgICAgICAgICAgICAgICAgICAgICIj
dmVyc2lvbiAyMDBcbiI7CisgICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZz
dHIsIE5VTEwpKTsKKworICAgIHVzaW5nIHRlc3Rpbmc6Ol87CisgICAgRVhQRUNUX0NBTEwobURp
YWdub3N0aWNzLAorICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfVkVS
U0lPTl9OT1RfRklSU1RfU1RBVEVNRU5ULAorICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3Vy
Y2VMb2NhdGlvbigwLCA0KSwgXykpOworCisgICAgcHA6OlRva2VuIHRva2VuOworICAgIGRvCisg
ICAgeworICAgICAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOworICAgIH0gd2hpbGUgKHRv
a2VuLnR5cGUgIT0gcHA6OlRva2VuOjpMQVNUKTsKK30KKworc3RydWN0IFZlcnNpb25UZXN0UGFy
YW0KK3sKKyAgICBjb25zdCBjaGFyKiBzdHI7CisgICAgcHA6OkRpYWdub3N0aWNzOjpJRCBpZDsK
K307CisKK2NsYXNzIEludmFsaWRWZXJzaW9uVGVzdCA6IHB1YmxpYyBWZXJzaW9uVGVzdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZh
Y2U8VmVyc2lvblRlc3RQYXJhbT4KK3sKK307CisKK1RFU1RfUChJbnZhbGlkVmVyc2lvblRlc3Qs
IElkZW50aWZpZWQpCit7CisgICAgVmVyc2lvblRlc3RQYXJhbSBwYXJhbSA9IEdldFBhcmFtKCk7
CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iOworCisgICAgdXNpbmcgdGVzdGluZzo6
XzsKKyAgICAvLyBObyBoYW5kbGVWZXJzaW9uIGNhbGwuCisgICAgRVhQRUNUX0NBTEwobURpcmVj
dGl2ZUhhbmRsZXIsIGhhbmRsZVZlcnNpb24oXywgXykpLlRpbWVzKDApOworICAgIC8vIEludmFs
aWQgdmVyc2lvbiBkaXJlY3RpdmUgY2FsbC4KKyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3Ms
IHByaW50KHBhcmFtLmlkLCBwcDo6U291cmNlTG9jYXRpb24oMCwgMSksIF8pKTsKKworICAgIHBy
ZXByb2Nlc3MocGFyYW0uc3RyLCBleHBlY3RlZCk7Cit9CisKK3N0YXRpYyBjb25zdCBWZXJzaW9u
VGVzdFBhcmFtIGtQYXJhbXNbXSA9IHsKKyAgICB7IiN2ZXJzaW9uXG4iLCBwcDo6RGlhZ25vc3Rp
Y3M6OlBQX0lOVkFMSURfVkVSU0lPTl9ESVJFQ1RJVkV9LAorICAgIHsiI3ZlcnNpb24gZm9vXG4i
LCBwcDo6RGlhZ25vc3RpY3M6OlBQX0lOVkFMSURfVkVSU0lPTl9OVU1CRVJ9LAorICAgIHsiI3Zl
cnNpb24gMTAwIGZvb1xuIiwgcHA6OkRpYWdub3N0aWNzOjpQUF9VTkVYUEVDVEVEX1RPS0VOfSwK
KyAgICB7IiN2ZXJzaW9uIDB4ZmZmZmZmZmZcbiIsIHBwOjpEaWFnbm9zdGljczo6UFBfSU5URUdF
Ul9PVkVSRkxPV30KK307CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFsbCwgSW52YWxpZFZl
cnNpb25UZXN0LCB0ZXN0aW5nOjpWYWx1ZXNJbihrUGFyYW1zKSk7CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9BTkdMRVRlc3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL0FOR0xF
VGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL3Rlc3RfdXRpbHMvQU5HTEVUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg1
NSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKy8vIEFOR0xFVGVzdDoKKy8vICAgSW1wbGVtZW50YXRpb24gb2YgY29t
bW9uIEFOR0xFIHRlc3RpbmcgZml4dHVyZS4KKy8vCisKKyNpbmNsdWRlICJBTkdMRVRlc3QuaCIK
KyNpbmNsdWRlICJFR0xXaW5kb3cuaCIKKyNpbmNsdWRlICJPU1dpbmRvdy5oIgorI2luY2x1ZGUg
InBsYXRmb3JtL1BsYXRmb3JtLmgiCisKK25hbWVzcGFjZSBhbmdsZQoreworCitjb25zdCBHTENv
bG9yUkdCIEdMQ29sb3JSR0I6OmJsYWNrKDB1LCAwdSwgMHUpOworY29uc3QgR0xDb2xvclJHQiBH
TENvbG9yUkdCOjpibHVlKDB1LCAwdSwgMjU1dSk7Citjb25zdCBHTENvbG9yUkdCIEdMQ29sb3JS
R0I6OmdyZWVuKDB1LCAyNTV1LCAwdSk7Citjb25zdCBHTENvbG9yUkdCIEdMQ29sb3JSR0I6OnJl
ZCgyNTV1LCAwdSwgMHUpOworY29uc3QgR0xDb2xvclJHQiBHTENvbG9yUkdCOjp5ZWxsb3coMjU1
dSwgMjU1dSwgMCk7CisKK2NvbnN0IEdMQ29sb3IgR0xDb2xvcjo6YmxhY2sgICAgICAgICAgICA9
IEdMQ29sb3IoMHUsIDB1LCAwdSwgMjU1dSk7Citjb25zdCBHTENvbG9yIEdMQ29sb3I6OmJsdWUg
ICAgICAgICAgICAgPSBHTENvbG9yKDB1LCAwdSwgMjU1dSwgMjU1dSk7Citjb25zdCBHTENvbG9y
IEdMQ29sb3I6OmN5YW4gICAgICAgICAgICAgPSBHTENvbG9yKDB1LCAyNTV1LCAyNTV1LCAyNTV1
KTsKK2NvbnN0IEdMQ29sb3IgR0xDb2xvcjo6Z3JlZW4gICAgICAgICAgICA9IEdMQ29sb3IoMHUs
IDI1NXUsIDB1LCAyNTV1KTsKK2NvbnN0IEdMQ29sb3IgR0xDb2xvcjo6cmVkICAgICAgICAgICAg
ICA9IEdMQ29sb3IoMjU1dSwgMHUsIDB1LCAyNTV1KTsKK2NvbnN0IEdMQ29sb3IgR0xDb2xvcjo6
dHJhbnNwYXJlbnRCbGFjayA9IEdMQ29sb3IoMHUsIDB1LCAwdSwgMHUpOworY29uc3QgR0xDb2xv
ciBHTENvbG9yOjp3aGl0ZSAgICAgICAgICAgID0gR0xDb2xvcigyNTV1LCAyNTV1LCAyNTV1LCAy
NTV1KTsKK2NvbnN0IEdMQ29sb3IgR0xDb2xvcjo6eWVsbG93ICAgICAgICAgICA9IEdMQ29sb3Io
MjU1dSwgMjU1dSwgMCwgMjU1dSk7CisKK25hbWVzcGFjZQoreworZmxvYXQgQ29sb3JOb3JtKEdM
dWJ5dGUgY2hhbm5lbFZhbHVlKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oY2hh
bm5lbFZhbHVlKSAvIDI1NS4wZjsKK30KKworR0x1Ynl0ZSBDb2xvckRlbm9ybShmbG9hdCBjb2xv
clZhbHVlKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTHVieXRlPihjb2xvclZhbHVlICog
MjU1LjBmKTsKK30KKworLy8gVXNlIGEgY3VzdG9tIEFOR0xFIHBsYXRmb3JtIGNsYXNzIHRvIGNh
cHR1cmUgYW5kIHJlcG9ydCBpbnRlcm5hbCBlcnJvcnMuCitjbGFzcyBUZXN0UGxhdGZvcm0gOiBw
dWJsaWMgYW5nbGU6OlBsYXRmb3JtCit7CisgIHB1YmxpYzoKKyAgICBUZXN0UGxhdGZvcm0oKSA6
IG1JZ25vcmVNZXNzYWdlcyhmYWxzZSkge30KKworICAgIHZvaWQgbG9nRXJyb3IoY29uc3QgY2hh
ciAqZXJyb3JNZXNzYWdlKSBvdmVycmlkZTsKKyAgICB2b2lkIGxvZ1dhcm5pbmcoY29uc3QgY2hh
ciAqd2FybmluZ01lc3NhZ2UpIG92ZXJyaWRlOworICAgIHZvaWQgbG9nSW5mbyhjb25zdCBjaGFy
ICppbmZvTWVzc2FnZSkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGlnbm9yZU1lc3NhZ2VzKCk7Cisg
ICAgdm9pZCBlbmFibGVNZXNzYWdlcygpOworCisgIHByaXZhdGU6CisgICAgYm9vbCBtSWdub3Jl
TWVzc2FnZXM7Cit9OworCit2b2lkIFRlc3RQbGF0Zm9ybTo6bG9nRXJyb3IoY29uc3QgY2hhciAq
ZXJyb3JNZXNzYWdlKQoreworICAgIGlmIChtSWdub3JlTWVzc2FnZXMpCisgICAgICAgIHJldHVy
bjsKKworICAgIEZBSUwoKSA8PCBlcnJvck1lc3NhZ2U7Cit9CisKK3ZvaWQgVGVzdFBsYXRmb3Jt
Ojpsb2dXYXJuaW5nKGNvbnN0IGNoYXIgKndhcm5pbmdNZXNzYWdlKQoreworICAgIGlmIChtSWdu
b3JlTWVzc2FnZXMpCisgICAgICAgIHJldHVybjsKKworICAgIHN0ZDo6Y2VyciA8PCAiV2Fybmlu
ZzogIiA8PCB3YXJuaW5nTWVzc2FnZSA8PCBzdGQ6OmVuZGw7Cit9CisKK3ZvaWQgVGVzdFBsYXRm
b3JtOjpsb2dJbmZvKGNvbnN0IGNoYXIgKmluZm9NZXNzYWdlKQoreworICAgIGlmIChtSWdub3Jl
TWVzc2FnZXMpCisgICAgICAgIHJldHVybjsKKworICAgIGFuZ2xlOjpXcml0ZURlYnVnTWVzc2Fn
ZSgiJXNcbiIsIGluZm9NZXNzYWdlKTsKK30KKwordm9pZCBUZXN0UGxhdGZvcm06Omlnbm9yZU1l
c3NhZ2VzKCkKK3sKKyAgICBtSWdub3JlTWVzc2FnZXMgPSB0cnVlOworfQorCit2b2lkIFRlc3RQ
bGF0Zm9ybTo6ZW5hYmxlTWVzc2FnZXMoKQoreworICAgIG1JZ25vcmVNZXNzYWdlcyA9IGZhbHNl
OworfQorCitUZXN0UGxhdGZvcm0gZ190ZXN0UGxhdGZvcm1JbnN0YW5jZTsKKworc3RkOjphcnJh
eTxWZWN0b3IzLCA0PiBHZXRJbmRleGVkUXVhZFZlcnRpY2VzKCkKK3sKKyAgICBzdGQ6OmFycmF5
PFZlY3RvcjMsIDQ+IHZlcnRpY2VzOworICAgIHZlcnRpY2VzWzBdID0gVmVjdG9yMygtMS4wZiwg
MS4wZiwgMC41Zik7CisgICAgdmVydGljZXNbMV0gPSBWZWN0b3IzKC0xLjBmLCAtMS4wZiwgMC41
Zik7CisgICAgdmVydGljZXNbMl0gPSBWZWN0b3IzKDEuMGYsIC0xLjBmLCAwLjVmKTsKKyAgICB2
ZXJ0aWNlc1szXSA9IFZlY3RvcjMoMS4wZiwgMS4wZiwgMC41Zik7CisgICAgcmV0dXJuIHZlcnRp
Y2VzOworfQorCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK0dMQ29sb3JSR0I6OkdMQ29s
b3JSR0IoKSA6IFIoMCksIEcoMCksIEIoMCkKK3sKK30KKworR0xDb2xvclJHQjo6R0xDb2xvclJH
QihHTHVieXRlIHIsIEdMdWJ5dGUgZywgR0x1Ynl0ZSBiKSA6IFIociksIEcoZyksIEIoYikKK3sK
K30KKworR0xDb2xvclJHQjo6R0xDb2xvclJHQihjb25zdCBWZWN0b3IzICZmbG9hdENvbG9yKQor
ICAgIDogUihDb2xvckRlbm9ybShmbG9hdENvbG9yLngpKSwgRyhDb2xvckRlbm9ybShmbG9hdENv
bG9yLnkpKSwgQihDb2xvckRlbm9ybShmbG9hdENvbG9yLnopKQoreworfQorCitHTENvbG9yOjpH
TENvbG9yKCkgOiBSKDApLCBHKDApLCBCKDApLCBBKDApCit7Cit9CisKK0dMQ29sb3I6OkdMQ29s
b3IoR0x1Ynl0ZSByLCBHTHVieXRlIGcsIEdMdWJ5dGUgYiwgR0x1Ynl0ZSBhKSA6IFIociksIEco
ZyksIEIoYiksIEEoYSkKK3sKK30KKworR0xDb2xvcjo6R0xDb2xvcihjb25zdCBWZWN0b3I0ICZm
bG9hdENvbG9yKQorICAgIDogUihDb2xvckRlbm9ybShmbG9hdENvbG9yLngpKSwKKyAgICAgIEco
Q29sb3JEZW5vcm0oZmxvYXRDb2xvci55KSksCisgICAgICBCKENvbG9yRGVub3JtKGZsb2F0Q29s
b3IueikpLAorICAgICAgQShDb2xvckRlbm9ybShmbG9hdENvbG9yLncpKQoreworfQorCitHTENv
bG9yOjpHTENvbG9yKEdMdWludCBjb2xvclZhbHVlKSA6IFIoMCksIEcoMCksIEIoMCksIEEoMCkK
K3sKKyAgICBtZW1jcHkoJlIsICZjb2xvclZhbHVlLCBzaXplb2YoR0x1aW50KSk7Cit9CisKK1Zl
Y3RvcjQgR0xDb2xvcjo6dG9Ob3JtYWxpemVkVmVjdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
VmVjdG9yNChDb2xvck5vcm0oUiksIENvbG9yTm9ybShHKSwgQ29sb3JOb3JtKEIpLCBDb2xvck5v
cm0oQSkpOworfQorCitHTENvbG9yIFJlYWRDb2xvcihHTGludCB4LCBHTGludCB5KQoreworICAg
IEdMQ29sb3IgYWN0dWFsOworICAgIGdsUmVhZFBpeGVscygoeCksICh5KSwgMSwgMSwgR0xfUkdC
QSwgR0xfVU5TSUdORURfQllURSwgJmFjdHVhbC5SKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1Io
KTsKKyAgICByZXR1cm4gYWN0dWFsOworfQorCitib29sIG9wZXJhdG9yPT0oY29uc3QgR0xDb2xv
ciAmYSwgY29uc3QgR0xDb2xvciAmYikKK3sKKyAgICByZXR1cm4gYS5SID09IGIuUiAmJiBhLkcg
PT0gYi5HICYmIGEuQiA9PSBiLkIgJiYgYS5BID09IGIuQTsKK30KKworc3RkOjpvc3RyZWFtICZv
cGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmb3N0cmVhbSwgY29uc3QgR0xDb2xvciAmY29sb3IpCit7
CisgICAgb3N0cmVhbSA8PCAiKCIgPDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihjb2xvci5S
KSA8PCAiLCAiCisgICAgICAgICAgICA8PCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGNvbG9y
LkcpIDw8ICIsICIgPDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihjb2xvci5CKQorICAgICAg
ICAgICAgPDwgIiwgIiA8PCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGNvbG9yLkEpIDw8ICIp
IjsKKyAgICByZXR1cm4gb3N0cmVhbTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCisKKy8v
IHN0YXRpYworc3RkOjphcnJheTxWZWN0b3IzLCA2PiBBTkdMRVRlc3Q6OkdldFF1YWRWZXJ0aWNl
cygpCit7CisgICAgc3RkOjphcnJheTxWZWN0b3IzLCA2PiB2ZXJ0aWNlczsKKyAgICB2ZXJ0aWNl
c1swXSA9IFZlY3RvcjMoLTEuMGYsIDEuMGYsIDAuNWYpOworICAgIHZlcnRpY2VzWzFdID0gVmVj
dG9yMygtMS4wZiwgLTEuMGYsIDAuNWYpOworICAgIHZlcnRpY2VzWzJdID0gVmVjdG9yMygxLjBm
LCAtMS4wZiwgMC41Zik7CisgICAgdmVydGljZXNbM10gPSBWZWN0b3IzKC0xLjBmLCAxLjBmLCAw
LjVmKTsKKyAgICB2ZXJ0aWNlc1s0XSA9IFZlY3RvcjMoMS4wZiwgLTEuMGYsIDAuNWYpOworICAg
IHZlcnRpY2VzWzVdID0gVmVjdG9yMygxLjBmLCAxLjBmLCAwLjVmKTsKKyAgICByZXR1cm4gdmVy
dGljZXM7Cit9CisKK0FOR0xFVGVzdDo6QU5HTEVUZXN0KCkKKyAgICA6IG1FR0xXaW5kb3cobnVs
bHB0ciksCisgICAgICBtV2lkdGgoMTYpLAorICAgICAgbUhlaWdodCgxNiksCisgICAgICBtSWdu
b3JlRDNEMTFTREtMYXllcnNXYXJuaW5ncyhmYWxzZSksCisgICAgICBtUXVhZFZlcnRleEJ1ZmZl
cigwKQoreworICAgIG1FR0xXaW5kb3cgPQorICAgICAgICBuZXcgRUdMV2luZG93KEdldFBhcmFt
KCkubWFqb3JWZXJzaW9uLCBHZXRQYXJhbSgpLm1pbm9yVmVyc2lvbiwgR2V0UGFyYW0oKS5lZ2xQ
YXJhbWV0ZXJzKTsKK30KKworQU5HTEVUZXN0Ojp+QU5HTEVUZXN0KCkKK3sKKyAgICBpZiAobVF1
YWRWZXJ0ZXhCdWZmZXIpCisgICAgeworICAgICAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1RdWFk
VmVydGV4QnVmZmVyKTsKKyAgICB9CisgICAgU2FmZURlbGV0ZShtRUdMV2luZG93KTsKK30KKwor
dm9pZCBBTkdMRVRlc3Q6OlNldFVwKCkKK3sKKyAgICBhbmdsZTo6Z190ZXN0UGxhdGZvcm1JbnN0
YW5jZS5lbmFibGVNZXNzYWdlcygpOworCisgICAgLy8gUmVzaXplIHRoZSB3aW5kb3cgYmVmb3Jl
IGNyZWF0aW5nIHRoZSBjb250ZXh0IHNvIHRoYXQgdGhlIGZpcnN0IG1ha2UgY3VycmVudAorICAg
IC8vIHNldHMgdGhlIHZpZXdwb3J0IGFuZCBzY2lzc29yIGJveCB0byB0aGUgcmlnaHQgc2l6ZS4K
KyAgICBib29sIG5lZWRTd2FwID0gZmFsc2U7CisgICAgaWYgKG1PU1dpbmRvdy0+Z2V0V2lkdGgo
KSAhPSBtV2lkdGggfHwgbU9TV2luZG93LT5nZXRIZWlnaHQoKSAhPSBtSGVpZ2h0KQorICAgIHsK
KyAgICAgICAgaWYgKCFtT1NXaW5kb3ctPnJlc2l6ZShtV2lkdGgsIG1IZWlnaHQpKQorICAgICAg
ICB7CisgICAgICAgICAgICBGQUlMKCkgPDwgIkZhaWxlZCB0byByZXNpemUgQU5HTEUgdGVzdCB3
aW5kb3cuIjsKKyAgICAgICAgfQorICAgICAgICBuZWVkU3dhcCA9IHRydWU7CisgICAgfQorCisg
ICAgaWYgKCFjcmVhdGVFR0xDb250ZXh0KCkpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgImVn
bCBjb250ZXh0IGNyZWF0aW9uIGZhaWxlZC4iOworICAgIH0KKworICAgIGlmIChuZWVkU3dhcCkK
KyAgICB7CisgICAgICAgIC8vIFN3YXAgdGhlIGJ1ZmZlcnMgc28gdGhhdCB0aGUgZGVmYXVsdCBm
cmFtZWJ1ZmZlciBwaWNrcyB1cCB0aGUgcmVzaXplCisgICAgICAgIC8vIHdoaWNoIHdpbGwgYWxs
b3cgZm9sbG93LXVwIHRlc3QgY29kZSB0byBhc3N1bWUgdGhlIGZyYW1lYnVmZmVyIGNvdmVycwor
ICAgICAgICAvLyB0aGUgd2hvbGUgd2luZG93LgorICAgICAgICBzd2FwQnVmZmVycygpOworICAg
IH0KKworICAgIC8vIFRoaXMgVmlld3BvcnQgY29tbWFuZCBpcyBub3Qgc3RyaWN0bHkgbmVjZXNz
YXJ5IGJ1dCB3ZSBhZGQgaXQgc28gdGhhdCBwcm9ncmFtcworICAgIC8vIHRha2luZyBPcGVuR0wg
dHJhY2VzIGNhbiBndWVzcyB0aGUgc2l6ZSBvZiB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciBhbmQg
c2hvdyBpdAorICAgIC8vIGluIHRoZWlyIFVJcworICAgIGdsVmlld3BvcnQoMCwgMCwgbVdpZHRo
LCBtSGVpZ2h0KTsKKworICAgIGNvbnN0IGF1dG8gJmluZm8gPSB0ZXN0aW5nOjpVbml0VGVzdDo6
R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKKyAgICBhbmdsZTo6V3JpdGVEZWJ1
Z01lc3NhZ2UoIkVudGVyaW5nICVzLiVzXG4iLCBpbmZvLT50ZXN0X2Nhc2VfbmFtZSgpLCBpbmZv
LT5uYW1lKCkpOworfQorCit2b2lkIEFOR0xFVGVzdDo6VGVhckRvd24oKQoreworICAgIGNoZWNr
RDNEMTFTREtMYXllcnNNZXNzYWdlcygpOworCisgICAgY29uc3QgYXV0byAmaW5mbyA9IHRlc3Rp
bmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygpOworICAgIGFu
Z2xlOjpXcml0ZURlYnVnTWVzc2FnZSgiRXhpdGluZyAlcy4lc1xuIiwgaW5mby0+dGVzdF9jYXNl
X25hbWUoKSwgaW5mby0+bmFtZSgpKTsKKworICAgIHN3YXBCdWZmZXJzKCk7CisgICAgbU9TV2lu
ZG93LT5tZXNzYWdlTG9vcCgpOworCisgICAgaWYgKCFkZXN0cm95RUdMQ29udGV4dCgpKQorICAg
IHsKKyAgICAgICAgRkFJTCgpIDw8ICJlZ2wgY29udGV4dCBkZXN0cnVjdGlvbiBmYWlsZWQuIjsK
KyAgICB9CisKKyAgICAvLyBDaGVjayBmb3IgcXVpdCBtZXNzYWdlCisgICAgRXZlbnQgbXlFdmVu
dDsKKyAgICB3aGlsZSAobU9TV2luZG93LT5wb3BFdmVudCgmbXlFdmVudCkpCisgICAgeworICAg
ICAgICBpZiAobXlFdmVudC5UeXBlID09IEV2ZW50OjpFVkVOVF9DTE9TRUQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGV4aXQoMCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgQU5HTEVU
ZXN0Ojpzd2FwQnVmZmVycygpCit7CisgICAgaWYgKG1FR0xXaW5kb3ctPmlzR0xJbml0aWFsaXpl
ZCgpKQorICAgIHsKKyAgICAgICAgbUVHTFdpbmRvdy0+c3dhcCgpOworICAgIH0KK30KKwordm9p
ZCBBTkdMRVRlc3Q6OnNldHVwUXVhZFZlcnRleEJ1ZmZlcihHTGZsb2F0IHBvc2l0aW9uQXR0cmli
WiwgR0xmbG9hdCBwb3NpdGlvbkF0dHJpYlhZU2NhbGUpCit7CisgICAgaWYgKG1RdWFkVmVydGV4
QnVmZmVyID09IDApCisgICAgeworICAgICAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1RdWFkVmVydGV4
QnVmZmVyKTsKKyAgICB9CisKKyAgICBhdXRvIHF1YWRWZXJ0aWNlcyA9IEdldFF1YWRWZXJ0aWNl
cygpOworICAgIGZvciAoVmVjdG9yMyAmdmVydGV4IDogcXVhZFZlcnRpY2VzKQorICAgIHsKKyAg
ICAgICAgdmVydGV4LnggKj0gcG9zaXRpb25BdHRyaWJYWVNjYWxlOworICAgICAgICB2ZXJ0ZXgu
eSAqPSBwb3NpdGlvbkF0dHJpYlhZU2NhbGU7CisgICAgICAgIHZlcnRleC56ID0gcG9zaXRpb25B
dHRyaWJaOworICAgIH0KKworICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1RdWFk
VmVydGV4QnVmZmVyKTsKKyAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBzaXplb2Yo
R0xmbG9hdCkgKiAzICogNiwgcXVhZFZlcnRpY2VzLmRhdGEoKSwgR0xfU1RBVElDX0RSQVcpOwor
fQorCit2b2lkIEFOR0xFVGVzdDo6c2V0dXBJbmRleGVkUXVhZFZlcnRleEJ1ZmZlcihHTGZsb2F0
IHBvc2l0aW9uQXR0cmliWiwgR0xmbG9hdCBwb3NpdGlvbkF0dHJpYlhZU2NhbGUpCit7CisgICAg
aWYgKG1RdWFkVmVydGV4QnVmZmVyID09IDApCisgICAgeworICAgICAgICBnbEdlbkJ1ZmZlcnMo
MSwgJm1RdWFkVmVydGV4QnVmZmVyKTsKKyAgICB9CisKKyAgICBhdXRvIHF1YWRWZXJ0aWNlcyA9
IGFuZ2xlOjpHZXRJbmRleGVkUXVhZFZlcnRpY2VzKCk7CisgICAgZm9yIChWZWN0b3IzICZ2ZXJ0
ZXggOiBxdWFkVmVydGljZXMpCisgICAgeworICAgICAgICB2ZXJ0ZXgueCAqPSBwb3NpdGlvbkF0
dHJpYlhZU2NhbGU7CisgICAgICAgIHZlcnRleC55ICo9IHBvc2l0aW9uQXR0cmliWFlTY2FsZTsK
KyAgICAgICAgdmVydGV4LnogPSBwb3NpdGlvbkF0dHJpYlo7CisgICAgfQorCisgICAgZ2xCaW5k
QnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbVF1YWRWZXJ0ZXhCdWZmZXIpOworICAgIGdsQnVmZmVy
RGF0YShHTF9BUlJBWV9CVUZGRVIsIHNpemVvZihHTGZsb2F0KSAqIDMgKiA0LCBxdWFkVmVydGlj
ZXMuZGF0YSgpLCBHTF9TVEFUSUNfRFJBVyk7Cit9CisKKy8vIHN0YXRpYwordm9pZCBBTkdMRVRl
c3Q6OmRyYXdRdWFkKEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZwb3NpdGlvbkF0dHJpYk5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xmbG9hdCBwb3NpdGlvbkF0dHJpYlopCit7CisgICAgZHJhd1F1YWQocHJvZ3JhbSwg
cG9zaXRpb25BdHRyaWJOYW1lLCBwb3NpdGlvbkF0dHJpYlosIDEuMGYpOworfQorCisvLyBzdGF0
aWMKK3ZvaWQgQU5HTEVUZXN0OjpkcmF3UXVhZChHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmcG9zaXRpb25BdHRyaWJOYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgcG9zaXRpb25BdHRyaWJaLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZmxvYXQgcG9zaXRpb25BdHRyaWJYWVNjYWxlKQoreworICAgIGRy
YXdRdWFkKHByb2dyYW0sIHBvc2l0aW9uQXR0cmliTmFtZSwgcG9zaXRpb25BdHRyaWJaLCBwb3Np
dGlvbkF0dHJpYlhZU2NhbGUsIGZhbHNlKTsKK30KKwordm9pZCBBTkdMRVRlc3Q6OmRyYXdRdWFk
KEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZwb3NpdGlvbkF0dHJpYk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9h
dCBwb3NpdGlvbkF0dHJpYlosCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBwb3Np
dGlvbkF0dHJpYlhZU2NhbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1c2VWZXJ0
ZXhCdWZmZXIpCit7CisgICAgR0xpbnQgcHJldmlvdXNQcm9ncmFtID0gMDsKKyAgICBnbEdldElu
dGVnZXJ2KEdMX0NVUlJFTlRfUFJPR1JBTSwgJnByZXZpb3VzUHJvZ3JhbSk7CisgICAgaWYgKHBy
ZXZpb3VzUHJvZ3JhbSAhPSBzdGF0aWNfY2FzdDxHTGludD4ocHJvZ3JhbSkpCisgICAgeworICAg
ICAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgfQorCisgICAgR0xpbnQgcG9zaXRpb25M
b2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgcG9zaXRpb25BdHRyaWJOYW1l
LmNfc3RyKCkpOworCisgICAgaWYgKHVzZVZlcnRleEJ1ZmZlcikKKyAgICB7CisgICAgICAgIHNl
dHVwUXVhZFZlcnRleEJ1ZmZlcihwb3NpdGlvbkF0dHJpYlosIHBvc2l0aW9uQXR0cmliWFlTY2Fs
ZSk7CisgICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxvY2F0aW9uLCAzLCBH
TF9GTE9BVCwgR0xfRkFMU0UsIDAsIDApOworICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlf
QlVGRkVSLCAwKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgYXV0byBxdWFkVmVy
dGljZXMgPSBHZXRRdWFkVmVydGljZXMoKTsKKyAgICAgICAgZm9yIChWZWN0b3IzICZ2ZXJ0ZXgg
OiBxdWFkVmVydGljZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZlcnRleC54ICo9IHBvc2l0
aW9uQXR0cmliWFlTY2FsZTsKKyAgICAgICAgICAgIHZlcnRleC55ICo9IHBvc2l0aW9uQXR0cmli
WFlTY2FsZTsKKyAgICAgICAgICAgIHZlcnRleC56ID0gcG9zaXRpb25BdHRyaWJaOworICAgICAg
ICB9CisKKyAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0aW9uTG9jYXRpb24sIDMs
IEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgcXVhZFZlcnRpY2VzLmRhdGEoKSk7CisgICAgfQorICAg
IGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2NhdGlvbik7CisKKyAgICBnbERy
YXdBcnJheXMoR0xfVFJJQU5HTEVTLCAwLCA2KTsKKworICAgIGdsRGlzYWJsZVZlcnRleEF0dHJp
YkFycmF5KHBvc2l0aW9uTG9jYXRpb24pOworICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3Np
dGlvbkxvY2F0aW9uLCA0LCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIE5VTEwpOworCisgICAgaWYg
KHByZXZpb3VzUHJvZ3JhbSAhPSBzdGF0aWNfY2FzdDxHTGludD4ocHJvZ3JhbSkpCisgICAgewor
ICAgICAgICBnbFVzZVByb2dyYW0ocHJldmlvdXNQcm9ncmFtKTsKKyAgICB9Cit9CisKK3ZvaWQg
QU5HTEVUZXN0OjpkcmF3SW5kZXhlZFF1YWQoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZwb3NpdGlvbkF0dHJpYk5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgcG9zaXRpb25BdHRyaWJa
KQoreworICAgIGRyYXdJbmRleGVkUXVhZChwcm9ncmFtLCBwb3NpdGlvbkF0dHJpYk5hbWUsIHBv
c2l0aW9uQXR0cmliWiwgMS4wZik7Cit9CisKK3ZvaWQgQU5HTEVUZXN0OjpkcmF3SW5kZXhlZFF1
YWQoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZwb3NpdGlvbkF0dHJpYk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZmxvYXQgcG9zaXRpb25BdHRyaWJaLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGZsb2F0IHBvc2l0aW9uQXR0cmliWFlTY2FsZSkKK3sKKyAgICBHTGludCBw
b3NpdGlvbkxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBwb3NpdGlvbkF0
dHJpYk5hbWUuY19zdHIoKSk7CisKKyAgICBHTGludCBhY3RpdmVQcm9ncmFtID0gMDsKKyAgICBn
bEdldEludGVnZXJ2KEdMX0NVUlJFTlRfUFJPR1JBTSwgJmFjdGl2ZVByb2dyYW0pOworICAgIGlm
IChzdGF0aWNfY2FzdDxHTHVpbnQ+KGFjdGl2ZVByb2dyYW0pICE9IHByb2dyYW0pCisgICAgewor
ICAgICAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgfQorCisgICAgR0x1aW50IHByZXZC
aW5kaW5nID0gMDsKKyAgICBnbEdldEludGVnZXJ2KEdMX0FSUkFZX0JVRkZFUl9CSU5ESU5HLCBy
ZWludGVycHJldF9jYXN0PEdMaW50ICo+KCZwcmV2QmluZGluZykpOworCisgICAgc2V0dXBJbmRl
eGVkUXVhZFZlcnRleEJ1ZmZlcihwb3NpdGlvbkF0dHJpYlosIHBvc2l0aW9uQXR0cmliWFlTY2Fs
ZSk7CisKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25Mb2NhdGlvbiwgMywgR0xf
RkxPQVQsIEdMX0ZBTFNFLCAwLCBudWxscHRyKTsKKyAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5KHBvc2l0aW9uTG9jYXRpb24pOworICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIs
IHByZXZCaW5kaW5nKTsKKworICAgIGNvbnN0IEdMdXNob3J0IGluZGljZXNbXSA9IHsKKyAgICAg
ICAgMCwgMSwgMiwgMCwgMiwgMywKKyAgICB9OworCisgICAgZ2xEcmF3RWxlbWVudHMoR0xfVFJJ
QU5HTEVTLCA2LCBHTF9VTlNJR05FRF9TSE9SVCwgaW5kaWNlcyk7CisKKyAgICBnbERpc2FibGVW
ZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxvY2F0aW9uKTsKKyAgICBnbFZlcnRleEF0dHJpYlBv
aW50ZXIocG9zaXRpb25Mb2NhdGlvbiwgNCwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCBOVUxMKTsK
KworICAgIGlmIChzdGF0aWNfY2FzdDxHTHVpbnQ+KGFjdGl2ZVByb2dyYW0pICE9IHByb2dyYW0p
CisgICAgeworICAgICAgICBnbFVzZVByb2dyYW0oc3RhdGljX2Nhc3Q8R0x1aW50PihhY3RpdmVQ
cm9ncmFtKSk7CisgICAgfQorfQorCitHTHVpbnQgQU5HTEVUZXN0Ojpjb21waWxlU2hhZGVyKEdM
ZW51bSB0eXBlLCBjb25zdCBzdGQ6OnN0cmluZyAmc291cmNlKQoreworICAgIEdMdWludCBzaGFk
ZXIgPSBnbENyZWF0ZVNoYWRlcih0eXBlKTsKKworICAgIGNvbnN0IGNoYXIgKnNvdXJjZUFycmF5
WzFdID0geyBzb3VyY2UuY19zdHIoKSB9OworICAgIGdsU2hhZGVyU291cmNlKHNoYWRlciwgMSwg
c291cmNlQXJyYXksIE5VTEwpOworICAgIGdsQ29tcGlsZVNoYWRlcihzaGFkZXIpOworCisgICAg
R0xpbnQgY29tcGlsZVJlc3VsdDsKKyAgICBnbEdldFNoYWRlcml2KHNoYWRlciwgR0xfQ09NUElM
RV9TVEFUVVMsICZjb21waWxlUmVzdWx0KTsKKworICAgIGlmIChjb21waWxlUmVzdWx0ID09IDAp
CisgICAgeworICAgICAgICBHTGludCBpbmZvTG9nTGVuZ3RoOworICAgICAgICBnbEdldFNoYWRl
cml2KHNoYWRlciwgR0xfSU5GT19MT0dfTEVOR1RILCAmaW5mb0xvZ0xlbmd0aCk7CisKKyAgICAg
ICAgaWYgKGluZm9Mb2dMZW5ndGggPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgc3RkOjpj
ZXJyIDw8ICJzaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkIHdpdGggZW1wdHkgbG9nLiIgPDwgc3Rk
OjplbmRsOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAg
c3RkOjp2ZWN0b3I8R0xjaGFyPiBpbmZvTG9nKGluZm9Mb2dMZW5ndGgpOworICAgICAgICAgICAg
Z2xHZXRTaGFkZXJJbmZvTG9nKHNoYWRlciwgc3RhdGljX2Nhc3Q8R0xzaXplaT4oaW5mb0xvZy5z
aXplKCkpLCBOVUxMLCAmaW5mb0xvZ1swXSk7CisKKyAgICAgICAgICAgIHN0ZDo6Y2VyciA8PCAi
c2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZDogIiA8PCAmaW5mb0xvZ1swXTsKKyAgICAgICAgfQor
CisgICAgICAgIGdsRGVsZXRlU2hhZGVyKHNoYWRlcik7CisgICAgICAgIHNoYWRlciA9IDA7Cisg
ICAgfQorCisgICAgcmV0dXJuIHNoYWRlcjsKK30KKwordm9pZCBBTkdMRVRlc3Q6OmNoZWNrRDNE
MTFTREtMYXllcnNNZXNzYWdlcygpCit7CisjaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9XSU5E
T1dTKSAmJiAhZGVmaW5lZChOREVCVUcpCisgICAgLy8gSW4gZGVidWcgRDNEMTEgbW9kZSwgY2hl
Y2sgSUQzRDExSW5mb1F1ZXVlIHRvIHNlZSBpZiBhbnkgRDNEMTEgU0RLIExheWVycyBtZXNzYWdl
cworICAgIC8vIHdlcmUgb3V0cHV0dGVkIGJ5IHRoZSB0ZXN0CisgICAgaWYgKG1JZ25vcmVEM0Qx
MVNES0xheWVyc1dhcm5pbmdzIHx8CisgICAgICAgIG1FR0xXaW5kb3ctPmdldFBsYXRmb3JtKCku
cmVuZGVyZXIgIT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUgfHwKKyAgICAg
ICAgbUVHTFdpbmRvdy0+Z2V0RGlzcGxheSgpID09IEVHTF9OT19ESVNQTEFZKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IGNoYXIgKmV4dGVuc2lvblN0cmluZyA9
CisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIgKj4oZWdsUXVlcnlTdHJpbmcobUVHTFdp
bmRvdy0+Z2V0RGlzcGxheSgpLCBFR0xfRVhURU5TSU9OUykpOworICAgIGlmICghc3Ryc3RyKGV4
dGVuc2lvblN0cmluZywgIkVHTF9FWFRfZGV2aWNlX3F1ZXJ5IikpCisgICAgeworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgRUdMQXR0cmliIGRldmljZSAgICAgID0gMDsKKyAgICBFR0xB
dHRyaWIgYW5nbGVEZXZpY2UgPSAwOworCisgICAgUEZORUdMUVVFUllESVNQTEFZQVRUUklCRVhU
UFJPQyBxdWVyeURpc3BsYXlBdHRyaWJFWFQ7CisgICAgUEZORUdMUVVFUllERVZJQ0VBVFRSSUJF
WFRQUk9DIHF1ZXJ5RGV2aWNlQXR0cmliRVhUOworCisgICAgcXVlcnlEaXNwbGF5QXR0cmliRVhU
ID0gcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xRVUVSWURJU1BMQVlBVFRSSUJFWFRQUk9DPigKKyAg
ICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImVnbFF1ZXJ5RGlzcGxheUF0dHJpYkVYVCIpKTsKKyAg
ICBxdWVyeURldmljZUF0dHJpYkVYVCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZORUdMUVVFUllERVZJ
Q0VBVFRSSUJFWFRQUk9DPigKKyAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImVnbFF1ZXJ5RGV2
aWNlQXR0cmliRVhUIikpOworICAgIEFTU0VSVF9ORShudWxscHRyLCBxdWVyeURpc3BsYXlBdHRy
aWJFWFQpOworICAgIEFTU0VSVF9ORShudWxscHRyLCBxdWVyeURldmljZUF0dHJpYkVYVCk7CisK
KyAgICBBU1NFUlRfRUdMX1RSVUUocXVlcnlEaXNwbGF5QXR0cmliRVhUKG1FR0xXaW5kb3ctPmdl
dERpc3BsYXkoKSwgRUdMX0RFVklDRV9FWFQsICZhbmdsZURldmljZSkpOworICAgIEFTU0VSVF9F
R0xfVFJVRShxdWVyeURldmljZUF0dHJpYkVYVChyZWludGVycHJldF9jYXN0PEVHTERldmljZUVY
VD4oYW5nbGVEZXZpY2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBFR0xfRDNEMTFfREVWSUNFX0FOR0xFLCAmZGV2aWNlKSk7CisgICAgSUQzRDExRGV2aWNlICpk
M2QxMURldmljZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SUQzRDExRGV2aWNlICo+KGRldmljZSk7CisK
KyAgICBJRDNEMTFJbmZvUXVldWUgKmluZm9RdWV1ZSA9IG51bGxwdHI7CisgICAgSFJFU1VMVCBo
ciA9CisgICAgICAgIGQzZDExRGV2aWNlLT5RdWVyeUludGVyZmFjZShfX3V1aWRvZihpbmZvUXVl
dWUpLCByZWludGVycHJldF9jYXN0PHZvaWQgKio+KCZpbmZvUXVldWUpKTsKKyAgICBpZiAoU1VD
Q0VFREVEKGhyKSkKKyAgICB7CisgICAgICAgIFVJTlQ2NCBudW1TdG9yZWREM0REZWJ1Z01lc3Nh
Z2VzID0KKyAgICAgICAgICAgIGluZm9RdWV1ZS0+R2V0TnVtU3RvcmVkTWVzc2FnZXNBbGxvd2Vk
QnlSZXRyaWV2YWxGaWx0ZXIoKTsKKworICAgICAgICBpZiAobnVtU3RvcmVkRDNERGVidWdNZXNz
YWdlcyA+IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoVUlOVDY0IGkgPSAwOyBpIDwg
bnVtU3RvcmVkRDNERGVidWdNZXNzYWdlczsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIFNJWkVfVCBtZXNzYWdlTGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICBociAgICAg
ICAgICAgICAgICAgICA9IGluZm9RdWV1ZS0+R2V0TWVzc2FnZShpLCBudWxscHRyLCAmbWVzc2Fn
ZUxlbmd0aCk7CisKKyAgICAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGhyKSkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIEQzRDExX01FU1NBR0UgKnBNZXNzYWdlID0K
KyAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8RDNEMTFfTUVTU0FHRSAq
PihtYWxsb2MobWVzc2FnZUxlbmd0aCkpOworICAgICAgICAgICAgICAgICAgICBpbmZvUXVldWUt
PkdldE1lc3NhZ2UoaSwgcE1lc3NhZ2UsICZtZXNzYWdlTGVuZ3RoKTsKKworICAgICAgICAgICAg
ICAgICAgICBzdGQ6OmNvdXQgPDwgIk1lc3NhZ2UgIiA8PCBpIDw8ICI6IgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPDwgIiAiIDw8IHBNZXNzYWdlLT5wRGVzY3JpcHRpb24gPDwgIlxu
IjsKKyAgICAgICAgICAgICAgICAgICAgZnJlZShwTWVzc2FnZSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBGQUlMKCkgPDwgbnVtU3RvcmVkRDNERGVi
dWdNZXNzYWdlcworICAgICAgICAgICAgICAgICAgIDw8ICIgRDNEMTEgU0RLIExheWVycyBtZXNz
YWdlKHMpIGRldGVjdGVkISBUZXN0IEZhaWxlZC5cbiI7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBTYWZlUmVsZWFzZShpbmZvUXVldWUpOworI2VuZGlmCit9CisKK3N0YXRpYyBib29sIGNoZWNr
RXh0ZW5zaW9uRXhpc3RzKGNvbnN0IGNoYXIgKmFsbEV4dGVuc2lvbnMsIGNvbnN0IHN0ZDo6c3Ry
aW5nICZleHROYW1lKQoreworICAgIHJldHVybiBzdHJzdHIoYWxsRXh0ZW5zaW9ucywgZXh0TmFt
ZS5jX3N0cigpKSAhPSBudWxscHRyOworfQorCitib29sIEFOR0xFVGVzdDo6ZXh0ZW5zaW9uRW5h
YmxlZChjb25zdCBzdGQ6OnN0cmluZyAmZXh0TmFtZSkKK3sKKyAgICByZXR1cm4gY2hlY2tFeHRl
bnNpb25FeGlzdHMocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KGdsR2V0U3RyaW5nKEdM
X0VYVEVOU0lPTlMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0TmFtZSk7
Cit9CisKK2Jvb2wgQU5HTEVUZXN0OjplZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZChFR0xEaXNw
bGF5IGRpc3BsYXksIGNvbnN0IHN0ZDo6c3RyaW5nICZleHROYW1lKQoreworICAgIHJldHVybiBj
aGVja0V4dGVuc2lvbkV4aXN0cyhlZ2xRdWVyeVN0cmluZyhkaXNwbGF5LCBFR0xfRVhURU5TSU9O
UyksIGV4dE5hbWUpOworfQorCitib29sIEFOR0xFVGVzdDo6ZWdsQ2xpZW50RXh0ZW5zaW9uRW5h
YmxlZChjb25zdCBzdGQ6OnN0cmluZyAmZXh0TmFtZSkKK3sKKyAgICByZXR1cm4gY2hlY2tFeHRl
bnNpb25FeGlzdHMoZWdsUXVlcnlTdHJpbmcoRUdMX05PX0RJU1BMQVksIEVHTF9FWFRFTlNJT05T
KSwgZXh0TmFtZSk7Cit9CisKK3ZvaWQgQU5HTEVUZXN0OjpzZXRXaW5kb3dXaWR0aChpbnQgd2lk
dGgpCit7CisgICAgbVdpZHRoID0gd2lkdGg7Cit9CisKK3ZvaWQgQU5HTEVUZXN0OjpzZXRXaW5k
b3dIZWlnaHQoaW50IGhlaWdodCkKK3sKKyAgICBtSGVpZ2h0ID0gaGVpZ2h0OworfQorCit2b2lk
IEFOR0xFVGVzdDo6c2V0Q29uZmlnUmVkQml0cyhpbnQgYml0cykKK3sKKyAgICBtRUdMV2luZG93
LT5zZXRDb25maWdSZWRCaXRzKGJpdHMpOworfQorCit2b2lkIEFOR0xFVGVzdDo6c2V0Q29uZmln
R3JlZW5CaXRzKGludCBiaXRzKQoreworICAgIG1FR0xXaW5kb3ctPnNldENvbmZpZ0dyZWVuQml0
cyhiaXRzKTsKK30KKwordm9pZCBBTkdMRVRlc3Q6OnNldENvbmZpZ0JsdWVCaXRzKGludCBiaXRz
KQoreworICAgIG1FR0xXaW5kb3ctPnNldENvbmZpZ0JsdWVCaXRzKGJpdHMpOworfQorCit2b2lk
IEFOR0xFVGVzdDo6c2V0Q29uZmlnQWxwaGFCaXRzKGludCBiaXRzKQoreworICAgIG1FR0xXaW5k
b3ctPnNldENvbmZpZ0FscGhhQml0cyhiaXRzKTsKK30KKwordm9pZCBBTkdMRVRlc3Q6OnNldENv
bmZpZ0RlcHRoQml0cyhpbnQgYml0cykKK3sKKyAgICBtRUdMV2luZG93LT5zZXRDb25maWdEZXB0
aEJpdHMoYml0cyk7Cit9CisKK3ZvaWQgQU5HTEVUZXN0OjpzZXRDb25maWdTdGVuY2lsQml0cyhp
bnQgYml0cykKK3sKKyAgICBtRUdMV2luZG93LT5zZXRDb25maWdTdGVuY2lsQml0cyhiaXRzKTsK
K30KKwordm9pZCBBTkdMRVRlc3Q6OnNldE11bHRpc2FtcGxlRW5hYmxlZChib29sIGVuYWJsZWQp
Cit7CisgICAgbUVHTFdpbmRvdy0+c2V0TXVsdGlzYW1wbGUoZW5hYmxlZCk7Cit9CisKK3ZvaWQg
QU5HTEVUZXN0OjpzZXREZWJ1Z0VuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIG1FR0xXaW5k
b3ctPnNldERlYnVnRW5hYmxlZChlbmFibGVkKTsKK30KKwordm9pZCBBTkdMRVRlc3Q6OnNldE5v
RXJyb3JFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtRUdMV2luZG93LT5zZXROb0Vycm9y
RW5hYmxlZChlbmFibGVkKTsKK30KKwordm9pZCBBTkdMRVRlc3Q6OnNldFdlYkdMQ29tcGF0aWJp
bGl0eUVuYWJsZWQoYm9vbCB3ZWJnbENvbXBhdGliaWxpdHkpCit7CisgICAgbUVHTFdpbmRvdy0+
c2V0V2ViR0xDb21wYXRpYmlsaXR5RW5hYmxlZCh3ZWJnbENvbXBhdGliaWxpdHkpOworfQorCit2
b2lkIEFOR0xFVGVzdDo6c2V0QmluZEdlbmVyYXRlc1Jlc291cmNlKGJvb2wgYmluZEdlbmVyYXRl
c1Jlc291cmNlKQoreworICAgIG1FR0xXaW5kb3ctPnNldEJpbmRHZW5lcmF0ZXNSZXNvdXJjZShi
aW5kR2VuZXJhdGVzUmVzb3VyY2UpOworfQorCitpbnQgQU5HTEVUZXN0OjpnZXRDbGllbnRNYWpv
clZlcnNpb24oKSBjb25zdAoreworICAgIHJldHVybiBtRUdMV2luZG93LT5nZXRDbGllbnRNYWpv
clZlcnNpb24oKTsKK30KKworaW50IEFOR0xFVGVzdDo6Z2V0Q2xpZW50TWlub3JWZXJzaW9uKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbUVHTFdpbmRvdy0+Z2V0Q2xpZW50TWlub3JWZXJzaW9uKCk7
Cit9CisKK0VHTFdpbmRvdyAqQU5HTEVUZXN0OjpnZXRFR0xXaW5kb3coKSBjb25zdAoreworICAg
IHJldHVybiBtRUdMV2luZG93OworfQorCitpbnQgQU5HTEVUZXN0OjpnZXRXaW5kb3dXaWR0aCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1XaWR0aDsKK30KKworaW50IEFOR0xFVGVzdDo6Z2V0V2lu
ZG93SGVpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUhlaWdodDsKK30KKworYm9vbCBBTkdM
RVRlc3Q6OmlzTXVsdGlzYW1wbGVFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUVHTFdp
bmRvdy0+aXNNdWx0aXNhbXBsZSgpOworfQorCitib29sIEFOR0xFVGVzdDo6Y3JlYXRlRUdMQ29u
dGV4dCgpCit7CisgICAgcmV0dXJuIG1FR0xXaW5kb3ctPmluaXRpYWxpemVHTChtT1NXaW5kb3cp
OworfQorCitib29sIEFOR0xFVGVzdDo6ZGVzdHJveUVHTENvbnRleHQoKQoreworICAgIG1FR0xX
aW5kb3ctPmRlc3Ryb3lHTCgpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEFOR0xFVGVz
dDo6SW5pdFRlc3RXaW5kb3coKQoreworICAgIG1PU1dpbmRvdyA9IENyZWF0ZU9TV2luZG93KCk7
CisgICAgaWYgKCFtT1NXaW5kb3ctPmluaXRpYWxpemUoIkFOR0xFX1RFU1QiLCAxMjgsIDEyOCkp
CisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgbU9TV2luZG93LT5z
ZXRWaXNpYmxlKHRydWUpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQU5HTEVUZXN0
OjpEZXN0cm95VGVzdFdpbmRvdygpCit7CisgICAgaWYgKG1PU1dpbmRvdykKKyAgICB7CisgICAg
ICAgIG1PU1dpbmRvdy0+ZGVzdHJveSgpOworICAgICAgICBkZWxldGUgbU9TV2luZG93OworICAg
ICAgICBtT1NXaW5kb3cgPSBOVUxMOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit2
b2lkIEFOR0xFVGVzdDo6U2V0V2luZG93VmlzaWJsZShib29sIGlzVmlzaWJsZSkKK3sKKyAgICBt
T1NXaW5kb3ctPnNldFZpc2libGUoaXNWaXNpYmxlKTsKK30KKworYm9vbCBJc0ludGVsKCkKK3sK
KyAgICBzdGQ6OnN0cmluZyByZW5kZXJlclN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIgKj4oZ2xHZXRTdHJpbmcoR0xfUkVOREVSRVIpKSk7CisgICAgcmV0dXJuIChyZW5kZXJlclN0
cmluZy5maW5kKCJJbnRlbCIpICE9IHN0ZDo6c3RyaW5nOjpucG9zKTsKK30KKworYm9vbCBJc0Fk
cmVubygpCit7CisgICAgc3RkOjpzdHJpbmcgcmVuZGVyZXJTdHJpbmcocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyICo+KGdsR2V0U3RyaW5nKEdMX1JFTkRFUkVSKSkpOworICAgIHJldHVybiAo
cmVuZGVyZXJTdHJpbmcuZmluZCgiQWRyZW5vIikgIT0gc3RkOjpzdHJpbmc6Om5wb3MpOworfQor
Citib29sIElzQU1EKCkKK3sKKyAgICBzdGQ6OnN0cmluZyByZW5kZXJlclN0cmluZyhyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIgKj4oZ2xHZXRTdHJpbmcoR0xfUkVOREVSRVIpKSk7CisgICAg
cmV0dXJuIChyZW5kZXJlclN0cmluZy5maW5kKCJBTUQiKSAhPSBzdGQ6OnN0cmluZzo6bnBvcykg
fHwKKyAgICAgICAgICAgKHJlbmRlcmVyU3RyaW5nLmZpbmQoIkFUSSIpICE9IHN0ZDo6c3RyaW5n
OjpucG9zKTsKK30KKworYm9vbCBJc05WSURJQSgpCit7CisgICAgc3RkOjpzdHJpbmcgcmVuZGVy
ZXJTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KGdsR2V0U3RyaW5nKEdMX1JF
TkRFUkVSKSkpOworICAgIHJldHVybiAocmVuZGVyZXJTdHJpbmcuZmluZCgiTlZJRElBIikgIT0g
c3RkOjpzdHJpbmc6Om5wb3MpOworfQorCitib29sIElzRDNEMTEoKQoreworICAgIHN0ZDo6c3Ry
aW5nIHJlbmRlcmVyU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihnbEdldFN0
cmluZyhHTF9SRU5ERVJFUikpKTsKKyAgICByZXR1cm4gKHJlbmRlcmVyU3RyaW5nLmZpbmQoIkRp
cmVjdDNEMTEgdnNfNV8wIikgIT0gc3RkOjpzdHJpbmc6Om5wb3MpOworfQorCitib29sIElzRDNE
MTFfRkw5MygpCit7CisgICAgc3RkOjpzdHJpbmcgcmVuZGVyZXJTdHJpbmcocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyICo+KGdsR2V0U3RyaW5nKEdMX1JFTkRFUkVSKSkpOworICAgIHJldHVy
biAocmVuZGVyZXJTdHJpbmcuZmluZCgiRGlyZWN0M0QxMSB2c180XzBfIikgIT0gc3RkOjpzdHJp
bmc6Om5wb3MpOworfQorCitib29sIElzRDNEOSgpCit7CisgICAgc3RkOjpzdHJpbmcgcmVuZGVy
ZXJTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KGdsR2V0U3RyaW5nKEdMX1JF
TkRFUkVSKSkpOworICAgIHJldHVybiAocmVuZGVyZXJTdHJpbmcuZmluZCgiRGlyZWN0M0Q5Iikg
IT0gc3RkOjpzdHJpbmc6Om5wb3MpOworfQorCitib29sIElzRDNEU00zKCkKK3sKKyAgICByZXR1
cm4gSXNEM0Q5KCkgfHwgSXNEM0QxMV9GTDkzKCk7Cit9CisKK2Jvb2wgSXNEZXNrdG9wT3BlbkdM
KCkKK3sKKyAgICByZXR1cm4gSXNPcGVuR0woKSAmJiAhSXNPcGVuR0xFUygpOworfQorCitib29s
IElzT3BlbkdMRVMoKQoreworICAgIHN0ZDo6c3RyaW5nIHJlbmRlcmVyU3RyaW5nKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihnbEdldFN0cmluZyhHTF9SRU5ERVJFUikpKTsKKyAgICBy
ZXR1cm4gKHJlbmRlcmVyU3RyaW5nLmZpbmQoIk9wZW5HTCBFUyIpICE9IHN0ZDo6c3RyaW5nOjpu
cG9zKTsKK30KKworYm9vbCBJc09wZW5HTCgpCit7CisgICAgc3RkOjpzdHJpbmcgcmVuZGVyZXJT
dHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KGdsR2V0U3RyaW5nKEdMX1JFTkRF
UkVSKSkpOworICAgIHJldHVybiAocmVuZGVyZXJTdHJpbmcuZmluZCgiT3BlbkdMIikgIT0gc3Rk
OjpzdHJpbmc6Om5wb3MpOworfQorCitib29sIElzQW5kcm9pZCgpCit7CisjaWYgZGVmaW5lZChB
TkdMRV9QTEFURk9STV9BTkRST0lEKQorICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICByZXR1
cm4gZmFsc2U7CisjZW5kaWYKK30KKworYm9vbCBJc0xpbnV4KCkKK3sKKyNpZiBkZWZpbmVkKEFO
R0xFX1BMQVRGT1JNX0xJTlVYKQorICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICByZXR1cm4g
ZmFsc2U7CisjZW5kaWYKK30KKworYm9vbCBJc09TWCgpCit7CisjaWYgZGVmaW5lZChBTkdMRV9Q
TEFURk9STV9BUFBMRSkKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNl
OworI2VuZGlmCit9CisKK2Jvb2wgSXNXaW5kb3dzKCkKK3sKKyNpZiBkZWZpbmVkKEFOR0xFX1BM
QVRGT1JNX1dJTkRPV1MpCisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiBmYWxz
ZTsKKyNlbmRpZgorfQorCitib29sIElzRGVidWcoKQoreworI2lmICFkZWZpbmVkKE5ERUJVRykK
KyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisK
K2Jvb2wgSXNSZWxlYXNlKCkKK3sKKyAgICByZXR1cm4gIUlzRGVidWcoKTsKK30KKworRUdMaW50
IEFOR0xFVGVzdDo6Z2V0UGxhdGZvcm1SZW5kZXJlcigpIGNvbnN0Cit7CisgICAgYXNzZXJ0KG1F
R0xXaW5kb3cpOworICAgIHJldHVybiBtRUdMV2luZG93LT5nZXRQbGF0Zm9ybSgpLnJlbmRlcmVy
OworfQorCit2b2lkIEFOR0xFVGVzdDo6aWdub3JlRDNEMTFTREtMYXllcnNXYXJuaW5ncygpCit7
CisgICAgLy8gU29tZSB0ZXN0cyBtYXkgbmVlZCB0byBkaXNhYmxlIHRoZSBEM0QxMSBTREsgTGF5
ZXJzIFdhcm5pbmdzIGNoZWNrcworICAgIG1JZ25vcmVEM0QxMVNES0xheWVyc1dhcm5pbmdzID0g
dHJ1ZTsKK30KKworT1NXaW5kb3cgKkFOR0xFVGVzdDo6bU9TV2luZG93ID0gTlVMTDsKKwordm9p
ZCBBTkdMRVRlc3RFbnZpcm9ubWVudDo6U2V0VXAoKQoreworICAgIG1HTEVTTGlicmFyeS5yZXNl
dChhbmdsZTo6bG9hZExpYnJhcnkoImxpYkdMRVN2MiIpKTsKKyAgICBpZiAobUdMRVNMaWJyYXJ5
KQorICAgIHsKKyAgICAgICAgYXV0byBpbml0RnVuYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8QU5HTEVQ
bGF0Zm9ybUluaXRpYWxpemVGdW5jPigKKyAgICAgICAgICAgIG1HTEVTTGlicmFyeS0+Z2V0U3lt
Ym9sKCJBTkdMRVBsYXRmb3JtSW5pdGlhbGl6ZSIpKTsKKyAgICAgICAgaWYgKGluaXRGdW5jKQor
ICAgICAgICB7CisgICAgICAgICAgICBpbml0RnVuYygmYW5nbGU6OmdfdGVzdFBsYXRmb3JtSW5z
dGFuY2UpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFBTkdMRVRlc3Q6OkluaXRUZXN0
V2luZG93KCkpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIkZhaWxlZCB0byBjcmVhdGUgQU5H
TEUgdGVzdCB3aW5kb3cuIjsKKyAgICB9Cit9CisKK3ZvaWQgQU5HTEVUZXN0RW52aXJvbm1lbnQ6
OlRlYXJEb3duKCkKK3sKKyAgICBBTkdMRVRlc3Q6OkRlc3Ryb3lUZXN0V2luZG93KCk7CisKKyAg
ICBpZiAobUdMRVNMaWJyYXJ5KQorICAgIHsKKyAgICAgICAgYXV0byBzaHV0ZG93bkZ1bmMgPSBy
ZWludGVycHJldF9jYXN0PEFOR0xFUGxhdGZvcm1TaHV0ZG93bkZ1bmM+KAorICAgICAgICAgICAg
bUdMRVNMaWJyYXJ5LT5nZXRTeW1ib2woIkFOR0xFUGxhdGZvcm1TaHV0ZG93biIpKTsKKyAgICAg
ICAgaWYgKHNodXRkb3duRnVuYykKKyAgICAgICAgeworICAgICAgICAgICAgc2h1dGRvd25GdW5j
KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSWdub3JlQU5HTEVQbGF0Zm9ybU1lc3Nh
Z2VzKCkKK3sKKyAgICAvLyBOZWdhdGl2ZSB0ZXN0cyBtYXkgdHJpZ2dlciBleHBlY3RlZCBlcnJv
cnMvd2FybmluZ3MgaW4gdGhlIEFOR0xFIFBsYXRmb3JtLgorICAgIGFuZ2xlOjpnX3Rlc3RQbGF0
Zm9ybUluc3RhbmNlLmlnbm9yZU1lc3NhZ2VzKCk7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9BTkdMRVRlc3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9BTkdMRVRlc3QuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91
dGlscy9BTkdMRVRlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI3MyBAQAorLy8KKy8v
IENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisvLyBBTkdMRVRlc3Q6CisvLyAgIEltcGxlbWVudGF0aW9uIG9mIGNvbW1vbiBBTkdM
RSB0ZXN0aW5nIGZpeHR1cmUuCisvLworCisjaWZuZGVmIEFOR0xFX1RFU1RTX0FOR0xFX1RFU1Rf
SF8KKyNkZWZpbmUgQU5HTEVfVEVTVFNfQU5HTEVfVEVTVF9IXworCisjaW5jbHVkZSA8Z3Rlc3Qv
Z3Rlc3QuaD4KKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8YXJyYXk+CisKKyNpbmNs
dWRlICJhbmdsZV9nbC5oIgorI2luY2x1ZGUgImFuZ2xlX3Rlc3RfY29uZmlncy5oIgorI2luY2x1
ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisjaW5jbHVkZSAic2hhZGVyX3V0aWxzLmgiCisjaW5j
bHVkZSAic3lzdGVtX3V0aWxzLmgiCisjaW5jbHVkZSAiVmVjdG9yLmgiCisKKyNkZWZpbmUgRVhQ
RUNUX0dMX0VSUk9SKGVycikgRVhQRUNUX0VRKHN0YXRpY19jYXN0PEdMZW51bT4oZXJyKSwgZ2xH
ZXRFcnJvcigpKQorI2RlZmluZSBFWFBFQ1RfR0xfTk9fRVJST1IoKSBFWFBFQ1RfRVEoc3RhdGlj
X2Nhc3Q8R0xlbnVtPihHTF9OT19FUlJPUiksIGdsR2V0RXJyb3IoKSkKKworI2RlZmluZSBBU1NF
UlRfR0xfRVJST1IoZXJyKSBBU1NFUlRfRVEoc3RhdGljX2Nhc3Q8R0xlbnVtPihlcnIpLCBnbEdl
dEVycm9yKCkpCisjZGVmaW5lIEFTU0VSVF9HTF9OT19FUlJPUigpIEFTU0VSVF9FUShzdGF0aWNf
Y2FzdDxHTGVudW0+KEdMX05PX0VSUk9SKSwgZ2xHZXRFcnJvcigpKQorCisjZGVmaW5lIEVYUEVD
VF9FR0xfRVJST1IoZXJyKSBFWFBFQ1RfRVEoKGVyciksIGVnbEdldEVycm9yKCkpCisjZGVmaW5l
IEVYUEVDVF9FR0xfU1VDQ0VTUygpIEVYUEVDVF9FR0xfRVJST1IoRUdMX1NVQ0NFU1MpCisKKy8v
IEVHTEJvb2xlYW4gaXMgfHVuc2lnbmVkIGludHwgYnV0IEVHTF9UUlVFIGlzIDAsIG5vdCAwdS4K
KyNkZWZpbmUgQVNTRVJUX0VHTF9UUlVFKGEpIEFTU0VSVF9FUShzdGF0aWNfY2FzdDxFR0xCb29s
ZWFuPihFR0xfVFJVRSksIChhKSkKKyNkZWZpbmUgQVNTRVJUX0VHTF9GQUxTRShhKSBBU1NFUlRf
RVEoc3RhdGljX2Nhc3Q8RUdMQm9vbGVhbj4oRUdMX0ZBTFNFKSwgKGEpKQorI2RlZmluZSBFWFBF
Q1RfRUdMX1RSVUUoYSkgRVhQRUNUX0VRKHN0YXRpY19jYXN0PEVHTEJvb2xlYW4+KEVHTF9UUlVF
KSwgKGEpKQorI2RlZmluZSBFWFBFQ1RfRUdMX0ZBTFNFKGEpIEVYUEVDVF9FUShzdGF0aWNfY2Fz
dDxFR0xCb29sZWFuPihFR0xfRkFMU0UpLCAoYSkpCisKKyNkZWZpbmUgQVNTRVJUX0VHTF9FUlJP
UihlcnIpIEFTU0VSVF9FUSgoZXJyKSwgZWdsR2V0RXJyb3IoKSkKKyNkZWZpbmUgQVNTRVJUX0VH
TF9TVUNDRVNTKCkgQVNTRVJUX0VHTF9FUlJPUihFR0xfU1VDQ0VTUykKKworI2RlZmluZSBBU1NF
UlRfR0xFTlVNX0VRKGV4cGVjdGVkLCBhY3R1YWwpIEFTU0VSVF9FUShzdGF0aWNfY2FzdDxHTGVu
dW0+KGV4cGVjdGVkKSwgc3RhdGljX2Nhc3Q8R0xlbnVtPihhY3R1YWwpKQorI2RlZmluZSBFWFBF
Q1RfR0xFTlVNX0VRKGV4cGVjdGVkLCBhY3R1YWwpIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxHTGVu
dW0+KGV4cGVjdGVkKSwgc3RhdGljX2Nhc3Q8R0xlbnVtPihhY3R1YWwpKQorCituYW1lc3BhY2Ug
YW5nbGUKK3sKK3N0cnVjdCBHTENvbG9yUkdCCit7CisgICAgR0xDb2xvclJHQigpOworICAgIEdM
Q29sb3JSR0IoR0x1Ynl0ZSByLCBHTHVieXRlIGcsIEdMdWJ5dGUgYik7CisgICAgR0xDb2xvclJH
Qihjb25zdCBWZWN0b3IzICZmbG9hdENvbG9yKTsKKworICAgIEdMdWJ5dGUgUiwgRywgQjsKKwor
ICAgIHN0YXRpYyBjb25zdCBHTENvbG9yUkdCIGJsYWNrOworICAgIHN0YXRpYyBjb25zdCBHTENv
bG9yUkdCIGJsdWU7CisgICAgc3RhdGljIGNvbnN0IEdMQ29sb3JSR0IgZ3JlZW47CisgICAgc3Rh
dGljIGNvbnN0IEdMQ29sb3JSR0IgcmVkOworICAgIHN0YXRpYyBjb25zdCBHTENvbG9yUkdCIHll
bGxvdzsKK307CisKK3N0cnVjdCBHTENvbG9yCit7CisgICAgR0xDb2xvcigpOworICAgIEdMQ29s
b3IoR0x1Ynl0ZSByLCBHTHVieXRlIGcsIEdMdWJ5dGUgYiwgR0x1Ynl0ZSBhKTsKKyAgICBHTENv
bG9yKGNvbnN0IFZlY3RvcjQgJmZsb2F0Q29sb3IpOworICAgIEdMQ29sb3IoR0x1aW50IGNvbG9y
VmFsdWUpOworCisgICAgVmVjdG9yNCB0b05vcm1hbGl6ZWRWZWN0b3IoKSBjb25zdDsKKworICAg
IEdMdWJ5dGUgUiwgRywgQiwgQTsKKworICAgIHN0YXRpYyBjb25zdCBHTENvbG9yIGJsYWNrOwor
ICAgIHN0YXRpYyBjb25zdCBHTENvbG9yIGJsdWU7CisgICAgc3RhdGljIGNvbnN0IEdMQ29sb3Ig
Y3lhbjsKKyAgICBzdGF0aWMgY29uc3QgR0xDb2xvciBncmVlbjsKKyAgICBzdGF0aWMgY29uc3Qg
R0xDb2xvciByZWQ7CisgICAgc3RhdGljIGNvbnN0IEdMQ29sb3IgdHJhbnNwYXJlbnRCbGFjazsK
KyAgICBzdGF0aWMgY29uc3QgR0xDb2xvciB3aGl0ZTsKKyAgICBzdGF0aWMgY29uc3QgR0xDb2xv
ciB5ZWxsb3c7Cit9OworCisvLyBVc2VmdWwgdG8gY2FzdCBhbnkgdHlwZSB0byBHTHVieXRlLgor
dGVtcGxhdGUgPHR5cGVuYW1lIFRSLCB0eXBlbmFtZSBURywgdHlwZW5hbWUgVEIsIHR5cGVuYW1l
IFRBPgorR0xDb2xvciBNYWtlR0xDb2xvcihUUiByLCBURyBnLCBUQiBiLCBUQSBhKQoreworICAg
IHJldHVybiBHTENvbG9yKHN0YXRpY19jYXN0PEdMdWJ5dGU+KHIpLCBzdGF0aWNfY2FzdDxHTHVi
eXRlPihnKSwgc3RhdGljX2Nhc3Q8R0x1Ynl0ZT4oYiksCisgICAgICAgICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8R0x1Ynl0ZT4oYSkpOworfQorCitib29sIG9wZXJhdG9yPT0oY29uc3QgR0xDb2xv
ciAmYSwgY29uc3QgR0xDb2xvciAmYik7CitzdGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpv
c3RyZWFtICZvc3RyZWFtLCBjb25zdCBHTENvbG9yICZjb2xvcik7CitHTENvbG9yIFJlYWRDb2xv
cihHTGludCB4LCBHTGludCB5KTsKKworfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCisKKyNkZWZpbmUg
RVhQRUNUX1BJWEVMX0VRKHgsIHksIHIsIGcsIGIsIGEpIFwKKyAgICBFWFBFQ1RfRVEoYW5nbGU6
Ok1ha2VHTENvbG9yKHIsIGcsIGIsIGEpLCBhbmdsZTo6UmVhZENvbG9yKHgsIHkpKQorCisjZGVm
aW5lIEVYUEVDVF9QSVhFTF9BTFBIQV9FUSh4LCB5LCBhKSBFWFBFQ1RfRVEoYSwgYW5nbGU6OlJl
YWRDb2xvcih4LCB5KS5BKQorCisjZGVmaW5lIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSh4LCB5LCBh
bmdsZUNvbG9yKSBFWFBFQ1RfRVEoYW5nbGVDb2xvciwgYW5nbGU6OlJlYWRDb2xvcih4LCB5KSkK
KworI2RlZmluZSBFWFBFQ1RfUElYRUxfTkVBUih4LCB5LCByLCBnLCBiLCBhLCBhYnNfZXJyb3Ip
IFwKK3sgXAorICAgIEdMdWJ5dGUgcGl4ZWxbNF07IFwKKyAgICBnbFJlYWRQaXhlbHMoKHgpLCAo
eSksIDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVsKTsgXAorICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOyBcCisgICAgRVhQRUNUX05FQVIoKHIpLCBwaXhlbFswXSwgYWJzX2Vy
cm9yKTsgXAorICAgIEVYUEVDVF9ORUFSKChnKSwgcGl4ZWxbMV0sIGFic19lcnJvcik7IFwKKyAg
ICBFWFBFQ1RfTkVBUigoYiksIHBpeGVsWzJdLCBhYnNfZXJyb3IpOyBcCisgICAgRVhQRUNUX05F
QVIoKGEpLCBwaXhlbFszXSwgYWJzX2Vycm9yKTsgXAorfQorCisvLyBUT0RPKGptYWRpbGwpOiBG
aWd1cmUgb3V0IGhvdyB3ZSBjYW4gdXNlIEdMQ29sb3IncyBuaWNlIHByaW50aW5nIHdpdGggRVhQ
RUNUX05FQVIuCisjZGVmaW5lIEVYUEVDVF9QSVhFTF9DT0xPUl9ORUFSKHgsIHksIGFuZ2xlQ29s
b3IsIGFic19lcnJvcikgXAorICAgIEVYUEVDVF9QSVhFTF9ORUFSKHgsIHksIGFuZ2xlQ29sb3Iu
UiwgYW5nbGVDb2xvci5HLCBhbmdsZUNvbG9yLkIsIGFuZ2xlQ29sb3IuQSwgYWJzX2Vycm9yKQor
CisjZGVmaW5lIEVYUEVDVF9DT0xPUl9ORUFSKGV4cGVjdGVkLCBhY3R1YWwsIGFic19lcnJvcikg
XAorICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgRVhQRUNUX05FQVIoZXhwZWN0ZWQuUiwgYWN0dWFsLlIsIGFic19lcnJvcik7
ICBcCisgICAgICAgIEVYUEVDVF9ORUFSKGV4cGVjdGVkLkcsIGFjdHVhbC5HLCBhYnNfZXJyb3Ip
OyAgXAorICAgICAgICBFWFBFQ1RfTkVBUihleHBlY3RlZC5CLCBhY3R1YWwuQiwgYWJzX2Vycm9y
KTsgIFwKKyAgICAgICAgRVhQRUNUX05FQVIoZXhwZWN0ZWQuQSwgYWN0dWFsLkEsIGFic19lcnJv
cik7ICBcCisgICAgXAorfQorCitjbGFzcyBFR0xXaW5kb3c7CitjbGFzcyBPU1dpbmRvdzsKKwor
Y2xhc3MgQU5HTEVUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxhbmdsZTo6
UGxhdGZvcm1QYXJhbWV0ZXJzPgoreworICBwcm90ZWN0ZWQ6CisgICAgQU5HTEVUZXN0KCk7Cisg
ICAgfkFOR0xFVGVzdCgpOworCisgIHB1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBJbml0VGVzdFdp
bmRvdygpOworICAgIHN0YXRpYyBib29sIERlc3Ryb3lUZXN0V2luZG93KCk7CisgICAgc3RhdGlj
IHZvaWQgU2V0V2luZG93VmlzaWJsZShib29sIGlzVmlzaWJsZSk7CisgICAgc3RhdGljIGJvb2wg
ZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQoRUdMRGlzcGxheSBkaXNwbGF5LCBjb25zdCBzdGQ6
OnN0cmluZyAmZXh0TmFtZSk7CisKKyAgcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBTZXRV
cCgpOworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpOworCisgICAgdmlydHVhbCB2b2lkIHN3
YXBCdWZmZXJzKCk7CisKKyAgICB2b2lkIHNldHVwUXVhZFZlcnRleEJ1ZmZlcihHTGZsb2F0IHBv
c2l0aW9uQXR0cmliWiwgR0xmbG9hdCBwb3NpdGlvbkF0dHJpYlhZU2NhbGUpOworICAgIHZvaWQg
c2V0dXBJbmRleGVkUXVhZFZlcnRleEJ1ZmZlcihHTGZsb2F0IHBvc2l0aW9uQXR0cmliWiwgR0xm
bG9hdCBwb3NpdGlvbkF0dHJpYlhZU2NhbGUpOworCisgICAgdm9pZCBkcmF3UXVhZChHTHVpbnQg
cHJvZ3JhbSwgY29uc3Qgc3RkOjpzdHJpbmcgJnBvc2l0aW9uQXR0cmliTmFtZSwgR0xmbG9hdCBw
b3NpdGlvbkF0dHJpYlopOworICAgIHZvaWQgZHJhd1F1YWQoR0x1aW50IHByb2dyYW0sCisgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmcG9zaXRpb25BdHRyaWJOYW1lLAorICAg
ICAgICAgICAgICAgICAgR0xmbG9hdCBwb3NpdGlvbkF0dHJpYlosCisgICAgICAgICAgICAgICAg
ICBHTGZsb2F0IHBvc2l0aW9uQXR0cmliWFlTY2FsZSk7CisgICAgdm9pZCBkcmF3UXVhZChHTHVp
bnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZwb3NpdGlv
bkF0dHJpYk5hbWUsCisgICAgICAgICAgICAgICAgICBHTGZsb2F0IHBvc2l0aW9uQXR0cmliWiwK
KyAgICAgICAgICAgICAgICAgIEdMZmxvYXQgcG9zaXRpb25BdHRyaWJYWVNjYWxlLAorICAgICAg
ICAgICAgICAgICAgYm9vbCB1c2VWZXJ0ZXhCdWZmZXIpOworICAgIHN0YXRpYyBzdGQ6OmFycmF5
PFZlY3RvcjMsIDY+IEdldFF1YWRWZXJ0aWNlcygpOworICAgIHZvaWQgZHJhd0luZGV4ZWRRdWFk
KEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZwb3NpdGlvbkF0dHJpYk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9h
dCBwb3NpdGlvbkF0dHJpYlopOworICAgIHZvaWQgZHJhd0luZGV4ZWRRdWFkKEdMdWludCBwcm9n
cmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZwb3NpdGlv
bkF0dHJpYk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBwb3NpdGlvbkF0
dHJpYlosCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBwb3NpdGlvbkF0dHJpYlhZ
U2NhbGUpOworCisgICAgc3RhdGljIEdMdWludCBjb21waWxlU2hhZGVyKEdMZW51bSB0eXBlLCBj
b25zdCBzdGQ6OnN0cmluZyAmc291cmNlKTsKKyAgICBzdGF0aWMgYm9vbCBleHRlbnNpb25FbmFi
bGVkKGNvbnN0IHN0ZDo6c3RyaW5nICZleHROYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBlZ2xDbGll
bnRFeHRlbnNpb25FbmFibGVkKGNvbnN0IHN0ZDo6c3RyaW5nICZleHROYW1lKTsKKworICAgIHZv
aWQgc2V0V2luZG93V2lkdGgoaW50IHdpZHRoKTsKKyAgICB2b2lkIHNldFdpbmRvd0hlaWdodChp
bnQgaGVpZ2h0KTsKKyAgICB2b2lkIHNldENvbmZpZ1JlZEJpdHMoaW50IGJpdHMpOworICAgIHZv
aWQgc2V0Q29uZmlnR3JlZW5CaXRzKGludCBiaXRzKTsKKyAgICB2b2lkIHNldENvbmZpZ0JsdWVC
aXRzKGludCBiaXRzKTsKKyAgICB2b2lkIHNldENvbmZpZ0FscGhhQml0cyhpbnQgYml0cyk7Cisg
ICAgdm9pZCBzZXRDb25maWdEZXB0aEJpdHMoaW50IGJpdHMpOworICAgIHZvaWQgc2V0Q29uZmln
U3RlbmNpbEJpdHMoaW50IGJpdHMpOworICAgIHZvaWQgc2V0TXVsdGlzYW1wbGVFbmFibGVkKGJv
b2wgZW5hYmxlZCk7CisgICAgdm9pZCBzZXREZWJ1Z0VuYWJsZWQoYm9vbCBlbmFibGVkKTsKKyAg
ICB2b2lkIHNldE5vRXJyb3JFbmFibGVkKGJvb2wgZW5hYmxlZCk7CisgICAgdm9pZCBzZXRXZWJH
TENvbXBhdGliaWxpdHlFbmFibGVkKGJvb2wgd2ViZ2xDb21wYXRpYmlsaXR5KTsKKyAgICB2b2lk
IHNldEJpbmRHZW5lcmF0ZXNSZXNvdXJjZShib29sIGJpbmRHZW5lcmF0ZXNSZXNvdXJjZSk7CisK
KyAgICBpbnQgZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgY29uc3Q7CisgICAgaW50IGdldENsaWVu
dE1pbm9yVmVyc2lvbigpIGNvbnN0OworCisgICAgRUdMV2luZG93ICpnZXRFR0xXaW5kb3coKSBj
b25zdDsKKyAgICBpbnQgZ2V0V2luZG93V2lkdGgoKSBjb25zdDsKKyAgICBpbnQgZ2V0V2luZG93
SGVpZ2h0KCkgY29uc3Q7CisgICAgYm9vbCBpc011bHRpc2FtcGxlRW5hYmxlZCgpIGNvbnN0Owor
CisgICAgRUdMaW50IGdldFBsYXRmb3JtUmVuZGVyZXIoKSBjb25zdDsKKworICAgIHZvaWQgaWdu
b3JlRDNEMTFTREtMYXllcnNXYXJuaW5ncygpOworCisgIHByaXZhdGU6CisgICAgYm9vbCBjcmVh
dGVFR0xDb250ZXh0KCk7CisgICAgYm9vbCBkZXN0cm95RUdMQ29udGV4dCgpOworCisgICAgdm9p
ZCBjaGVja0QzRDExU0RLTGF5ZXJzTWVzc2FnZXMoKTsKKworICAgIEVHTFdpbmRvdyAqbUVHTFdp
bmRvdzsKKyAgICBpbnQgbVdpZHRoOworICAgIGludCBtSGVpZ2h0OworCisgICAgYm9vbCBtSWdu
b3JlRDNEMTFTREtMYXllcnNXYXJuaW5nczsKKworICAgIC8vIFVzZWQgZm9yIGluZGV4ZWQgcXVh
ZCByZW5kZXJpbmcKKyAgICBHTHVpbnQgbVF1YWRWZXJ0ZXhCdWZmZXI7CisKKyAgICBzdGF0aWMg
T1NXaW5kb3cgKm1PU1dpbmRvdzsKK307CisKK2NsYXNzIEFOR0xFVGVzdEVudmlyb25tZW50IDog
cHVibGljIHRlc3Rpbmc6OkVudmlyb25tZW50Cit7CisgIHB1YmxpYzoKKyAgICB2b2lkIFNldFVw
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlOworCisgIHByaXZhdGU6
CisgICAgLy8gRm9yIGxvYWRpbmcgYW5kIGZyZWVpbmcgcGxhdGZvcm0KKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8YW5nbGU6OkxpYnJhcnk+IG1HTEVTTGlicmFyeTsKK307CisKKy8vIERyaXZlciB2ZW5k
b3JzCitib29sIElzSW50ZWwoKTsKK2Jvb2wgSXNBZHJlbm8oKTsKK2Jvb2wgSXNBTUQoKTsKK2Jv
b2wgSXNOVklESUEoKTsKKworLy8gUmVuZGVyZXIgYmFjay1lbmRzCisvLyBOb3RlOiBGTDlfMyBp
cyBleHBsaWNpdGx5ICpub3QqIGNvbnNpZGVyZWQgRDNEMTEuCitib29sIElzRDNEMTEoKTsKK2Jv
b2wgSXNEM0QxMV9GTDkzKCk7CisvLyBJcyBhIEQzRDktY2xhc3MgcmVuZGVyZXIuCitib29sIElz
RDNEOSgpOworLy8gSXMgRDNEOSBvciBTTTlfMyByZW5kZXJlci4KK2Jvb2wgSXNEM0RTTTMoKTsK
K2Jvb2wgSXNEZXNrdG9wT3BlbkdMKCk7Citib29sIElzT3BlbkdMRVMoKTsKK2Jvb2wgSXNPcGVu
R0woKTsKKworLy8gT3BlcmF0aW5nIHN5c3RlbXMKK2Jvb2wgSXNBbmRyb2lkKCk7Citib29sIElz
TGludXgoKTsKK2Jvb2wgSXNPU1goKTsKK2Jvb2wgSXNXaW5kb3dzKCk7CisKKy8vIERlYnVnL1Jl
bGVhc2UKK2Jvb2wgSXNEZWJ1ZygpOworYm9vbCBJc1JlbGVhc2UoKTsKKworLy8gTmVnYXRpdmUg
dGVzdHMgbWF5IHRyaWdnZXIgZXhwZWN0ZWQgZXJyb3JzL3dhcm5pbmdzIGluIHRoZSBBTkdMRSBQ
bGF0Zm9ybS4KK3ZvaWQgSWdub3JlQU5HTEVQbGF0Zm9ybU1lc3NhZ2VzKCk7CisKKy8vIE5vdGU6
IGdpdCBjbCBmb3JtYXQgbWVzc2VzIHVwIHRoaXMgZm9ybWF0dGluZy4KKyNkZWZpbmUgQU5HTEVf
U0tJUF9URVNUX0lGKENPTkQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFwK
K2lmKENPTkQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkOiAiICND
T05EICIuIiA8PCBzdGQ6OmVuZGw7IFwKKyAgICAgICAgcmV0dXJuOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFwKK30KKworI2VuZGlmICAvLyBB
TkdMRV9URVNUU19BTkdMRV9URVNUX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2NvbmZpZ3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3Rf
Y29uZmlncy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL3Rlc3RfdXRpbHMvYW5nbGVfdGVzdF9jb25maWdzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDU5OCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNCBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL2Fu
Z2xlX3Rlc3RfY29uZmlncy5oIgorCituYW1lc3BhY2UgYW5nbGUKK3sKKworUGxhdGZvcm1QYXJh
bWV0ZXJzOjpQbGF0Zm9ybVBhcmFtZXRlcnMoKQorICAgIDogUGxhdGZvcm1QYXJhbWV0ZXJzKDIs
IDAsIEVHTFBsYXRmb3JtUGFyYW1ldGVycygpKQoreworfQorCitQbGF0Zm9ybVBhcmFtZXRlcnM6
OlBsYXRmb3JtUGFyYW1ldGVycyhFR0xpbnQgbWFqb3JWZXJzaW9uLCBFR0xpbnQgbWlub3JWZXJz
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRUdMUGxh
dGZvcm1QYXJhbWV0ZXJzICZlZ2xQbGF0Zm9ybVBhcmFtZXRlcnMpCisgICAgOiBtYWpvclZlcnNp
b24obWFqb3JWZXJzaW9uKSwKKyAgICAgIG1pbm9yVmVyc2lvbihtaW5vclZlcnNpb24pLAorICAg
ICAgZWdsUGFyYW1ldGVycyhlZ2xQbGF0Zm9ybVBhcmFtZXRlcnMpCit7Cit9CisKK0VHTGludCBQ
bGF0Zm9ybVBhcmFtZXRlcnM6OmdldFJlbmRlcmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZWds
UGFyYW1ldGVycy5yZW5kZXJlcjsKK30KKworYm9vbCBvcGVyYXRvcjwoY29uc3QgUGxhdGZvcm1Q
YXJhbWV0ZXJzICZhLCBjb25zdCBQbGF0Zm9ybVBhcmFtZXRlcnMgJmIpCit7CisgICAgaWYgKGEu
bWFqb3JWZXJzaW9uICE9IGIubWFqb3JWZXJzaW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGEu
bWFqb3JWZXJzaW9uIDwgYi5tYWpvclZlcnNpb247CisgICAgfQorCisgICAgaWYgKGEubWlub3JW
ZXJzaW9uICE9IGIubWlub3JWZXJzaW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGEubWlub3JW
ZXJzaW9uIDwgYi5taW5vclZlcnNpb247CisgICAgfQorCisgICAgcmV0dXJuIGEuZWdsUGFyYW1l
dGVycyA8IGIuZWdsUGFyYW1ldGVyczsKK30KKworYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBsYXRm
b3JtUGFyYW1ldGVycyAmYSwgY29uc3QgUGxhdGZvcm1QYXJhbWV0ZXJzICZiKQoreworICAgIHJl
dHVybiAoYS5tYWpvclZlcnNpb24gPT0gYi5tYWpvclZlcnNpb24pICYmCisgICAgICAgICAgIChh
Lm1pbm9yVmVyc2lvbiA9PSBiLm1pbm9yVmVyc2lvbikgJiYKKyAgICAgICAgICAgKGEuZWdsUGFy
YW1ldGVycyA9PSBiLmVnbFBhcmFtZXRlcnMpOworfQorCitzdGQ6Om9zdHJlYW0gJm9wZXJhdG9y
PDwoc3RkOjpvc3RyZWFtJiBzdHJlYW0sIGNvbnN0IFBsYXRmb3JtUGFyYW1ldGVycyAmcHApCit7
CisgICAgc3RyZWFtIDw8ICJFUyIgPDwgcHAubWFqb3JWZXJzaW9uIDw8ICJfIiA7CisgICAgaWYg
KHBwLm1pbm9yVmVyc2lvbiAhPSAwKQorICAgIHsKKyAgICAgICAgc3RyZWFtIDw8IHBwLm1pbm9y
VmVyc2lvbiA8PCAiXyI7CisgICAgfQorCisgICAgc3dpdGNoIChwcC5lZ2xQYXJhbWV0ZXJzLnJl
bmRlcmVyKQorICAgIHsKKyAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEOV9B
TkdMRToKKyAgICAgICAgc3RyZWFtIDw8ICJEM0Q5IjsKKyAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFOgorICAgICAgICBzdHJlYW0g
PDwgIkQzRDExIjsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdM
RV9UWVBFX09QRU5HTF9BTkdMRToKKyAgICAgICAgc3RyZWFtIDw8ICJPUEVOR0wiOworICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5H
TEU6CisgICAgICAgICAgc3RyZWFtIDw8ICJPUEVOR0xFUyI7CisgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9ERUZBVUxUX0FOR0xFOgorICAgICAgICBz
dHJlYW0gPDwgIkRFRkFVTFQiOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAg
ICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChwcC5l
Z2xQYXJhbWV0ZXJzLm1ham9yVmVyc2lvbiAhPSBFR0xfRE9OVF9DQVJFKQorICAgIHsKKyAgICAg
ICAgc3RyZWFtIDw8ICJfIiA8PCBwcC5lZ2xQYXJhbWV0ZXJzLm1ham9yVmVyc2lvbjsKKyAgICB9
CisKKyAgICBpZiAocHAuZWdsUGFyYW1ldGVycy5taW5vclZlcnNpb24gIT0gRUdMX0RPTlRfQ0FS
RSkKKyAgICB7CisgICAgICAgIHN0cmVhbSA8PCAiXyIgPDwgcHAuZWdsUGFyYW1ldGVycy5taW5v
clZlcnNpb247CisgICAgfQorCisgICAgc3dpdGNoIChwcC5lZ2xQYXJhbWV0ZXJzLmRldmljZVR5
cGUpCisgICAgeworICAgICAgY2FzZSBFR0xfRE9OVF9DQVJFOgorICAgICAgY2FzZSBFR0xfUExB
VEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfSEFSRFdBUkVfQU5HTEU6CisgICAgICAgIC8vIGRlZmF1
bHQKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklD
RV9UWVBFX05VTExfQU5HTEU6CisgICAgICAgICAgc3RyZWFtIDw8ICJfTlVMTCI7CisgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX1JF
RkVSRU5DRV9BTkdMRToKKyAgICAgICAgc3RyZWFtIDw8ICJfUkVGRVJFTkNFIjsKKyAgICAgICAg
YnJlYWs7CisKKyAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX1dBUlBf
QU5HTEU6CisgICAgICAgIHN0cmVhbSA8PCAiX1dBUlAiOworICAgICAgICBicmVhazsKKworICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgc3dpdGNoIChwcC5lZ2xQYXJhbWV0ZXJzLnByZXNlbnRQYXRoKQorICAgIHsKKyAg
ICAgICAgY2FzZSBFR0xfRVhQRVJJTUVOVEFMX1BSRVNFTlRfUEFUSF9DT1BZX0FOR0xFOgorICAg
ICAgICAgICAgc3RyZWFtIDw8ICJfUFJFU0VOVF9QQVRIX0NPUFkiOworICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgY2FzZSBFR0xfRVhQRVJJTUVOVEFMX1BSRVNFTlRfUEFUSF9GQVNUX0FO
R0xFOgorICAgICAgICAgICAgc3RyZWFtIDw8ICJfUFJFU0VOVF9QQVRIX0ZBU1QiOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBFR0xfRE9OVF9DQVJFOgorICAgICAgICAgICAg
Ly8gZGVmYXVsdAorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBy
ZXR1cm4gc3RyZWFtOworfQorCisvLyBFR0wgcGxhdGZvcm1zCituYW1lc3BhY2UgZWdsX3BsYXRm
b3JtCit7CisKK0VHTFBsYXRmb3JtUGFyYW1ldGVycyBERUZBVUxUKCkKK3sKKyAgICByZXR1cm4g
RUdMUGxhdGZvcm1QYXJhbWV0ZXJzKEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0RFRkFVTFRfQU5H
TEUpOworfQorCitFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgREVGQVVMVF9OVUxMKCkKK3sKKyAgICBy
ZXR1cm4gRUdMUGxhdGZvcm1QYXJhbWV0ZXJzKAorICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVf
VFlQRV9ERUZBVUxUX0FOR0xFLAorICAgICAgICBFR0xfRE9OVF9DQVJFLCBFR0xfRE9OVF9DQVJF
LAorICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfTlVMTF9BTkdMRSk7Cit9
CisKK0VHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0Q5KCkKK3sKKyAgICByZXR1cm4gRUdMUGxhdGZv
cm1QYXJhbWV0ZXJzKAorICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0Q5X0FOR0xF
LAorICAgICAgICBFR0xfRE9OVF9DQVJFLCBFR0xfRE9OVF9DQVJFLAorICAgICAgICBFR0xfUExB
VEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfSEFSRFdBUkVfQU5HTEUpOworfQorCitFR0xQbGF0Zm9y
bVBhcmFtZXRlcnMgRDNEOV9OVUxMKCkKK3sKKyAgICByZXR1cm4gRUdMUGxhdGZvcm1QYXJhbWV0
ZXJzKAorICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0Q5X0FOR0xFLAorICAgICAg
ICBFR0xfRE9OVF9DQVJFLCBFR0xfRE9OVF9DQVJFLAorICAgICAgICBFR0xfUExBVEZPUk1fQU5H
TEVfREVWSUNFX1RZUEVfTlVMTF9BTkdMRSk7Cit9CisKK0VHTFBsYXRmb3JtUGFyYW1ldGVycyBE
M0Q5X1JFRkVSRU5DRSgpCit7CisgICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVycygKKyAg
ICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEOV9BTkdMRSwKKyAgICAgICAgRUdMX0RP
TlRfQ0FSRSwgRUdMX0RPTlRfQ0FSRSwKKyAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklD
RV9UWVBFX1JFRkVSRU5DRV9BTkdMRSk7Cit9CisKK0VHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0Qx
MSgpCit7CisgICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVycygKKyAgICAgICAgRUdMX1BM
QVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUsCisgICAgICAgIEVHTF9ET05UX0NBUkUsIEVH
TF9ET05UX0NBUkUsCisgICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9IQVJE
V0FSRV9BTkdMRSk7Cit9CisKK0VHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0QxMShFR0xlbnVtIHBy
ZXNlbnRQYXRoKQoreworICAgIHJldHVybiBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMoRUdMX1BMQVRG
T1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUsIEVHTF9ET05UX0NBUkUsIEVHTF9ET05UX0NBUkUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfREVW
SUNFX1RZUEVfSEFSRFdBUkVfQU5HTEUsIHByZXNlbnRQYXRoKTsKK30KKworRUdMUGxhdGZvcm1Q
YXJhbWV0ZXJzIEQzRDExX0ZMMTFfMSgpCit7CisgICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFyYW1l
dGVycygKKyAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUsCisgICAg
ICAgIDExLCAxLAorICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfSEFSRFdB
UkVfQU5HTEUpOworfQorCitFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFfRkwxMV8wKCkKK3sK
KyAgICByZXR1cm4gRUdMUGxhdGZvcm1QYXJhbWV0ZXJzKAorICAgICAgICBFR0xfUExBVEZPUk1f
QU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwKKyAgICAgICAgMTEsIDAsCisgICAgICAgIEVHTF9QTEFU
Rk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9IQVJEV0FSRV9BTkdMRSk7Cit9CisKK0VHTFBsYXRmb3Jt
UGFyYW1ldGVycyBEM0QxMV9GTDEwXzEoKQoreworICAgIHJldHVybiBFR0xQbGF0Zm9ybVBhcmFt
ZXRlcnMoCisgICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFLAorICAg
ICAgICAxMCwgMSwKKyAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0hBUkRX
QVJFX0FOR0xFKTsKK30KKworRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDExX0ZMMTBfMCgpCit7
CisgICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVycygKKyAgICAgICAgRUdMX1BMQVRGT1JN
X0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUsCisgICAgICAgIDEwLCAwLAorICAgICAgICBFR0xfUExB
VEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfSEFSRFdBUkVfQU5HTEUpOworfQorCitFR0xQbGF0Zm9y
bVBhcmFtZXRlcnMgRDNEMTFfRkw5XzMoKQoreworICAgIHJldHVybiBFR0xQbGF0Zm9ybVBhcmFt
ZXRlcnMoCisgICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFLAorICAg
ICAgICA5LCAzLAorICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfSEFSRFdB
UkVfQU5HTEUpOworfQorCitFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFfTlVMTCgpCit7Cisg
ICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVycygKKyAgICAgICAgRUdMX1BMQVRGT1JNX0FO
R0xFX1RZUEVfRDNEMTFfQU5HTEUsCisgICAgICAgIEVHTF9ET05UX0NBUkUsIEVHTF9ET05UX0NB
UkUsCisgICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9OVUxMX0FOR0xFKTsK
K30KKworRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDExX1dBUlAoKQoreworICAgIHJldHVybiBF
R0xQbGF0Zm9ybVBhcmFtZXRlcnMoCisgICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0Qz
RDExX0FOR0xFLAorICAgICAgICBFR0xfRE9OVF9DQVJFLCBFR0xfRE9OVF9DQVJFLAorICAgICAg
ICBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfV0FSUF9BTkdMRSk7Cit9CisKK0VHTFBs
YXRmb3JtUGFyYW1ldGVycyBEM0QxMV9GTDExXzFfV0FSUCgpCit7CisgICAgcmV0dXJuIEVHTFBs
YXRmb3JtUGFyYW1ldGVycygKKyAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFf
QU5HTEUsCisgICAgICAgIDExLCAxLAorICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNF
X1RZUEVfV0FSUF9BTkdMRSk7Cit9CisKK0VHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0QxMV9GTDEx
XzBfV0FSUCgpCit7CisgICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVycygKKyAgICAgICAg
RUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUsCisgICAgICAgIDExLCAwLAorICAg
ICAgICBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfV0FSUF9BTkdMRSk7Cit9CisKK0VH
TFBsYXRmb3JtUGFyYW1ldGVycyBEM0QxMV9GTDEwXzFfV0FSUCgpCit7CisgICAgcmV0dXJuIEVH
TFBsYXRmb3JtUGFyYW1ldGVycygKKyAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNE
MTFfQU5HTEUsCisgICAgICAgIDEwLCAxLAorICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfREVW
SUNFX1RZUEVfV0FSUF9BTkdMRSk7Cit9CisKK0VHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0QxMV9G
TDEwXzBfV0FSUCgpCit7CisgICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVycygKKyAgICAg
ICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUsCisgICAgICAgIDEwLCAwLAor
ICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfV0FSUF9BTkdMRSk7Cit9CisK
K0VHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0QxMV9GTDlfM19XQVJQKCkKK3sKKyAgICByZXR1cm4g
RUdMUGxhdGZvcm1QYXJhbWV0ZXJzKAorICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9E
M0QxMV9BTkdMRSwKKyAgICAgICAgOSwgMywKKyAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0RF
VklDRV9UWVBFX1dBUlBfQU5HTEUpOworfQorCitFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFf
UkVGRVJFTkNFKCkKK3sKKyAgICByZXR1cm4gRUdMUGxhdGZvcm1QYXJhbWV0ZXJzKAorICAgICAg
ICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwKKyAgICAgICAgRUdMX0RPTlRf
Q0FSRSwgRUdMX0RPTlRfQ0FSRSwKKyAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9U
WVBFX1JFRkVSRU5DRV9BTkdMRSk7Cit9CisKK0VHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0QxMV9G
TDExXzFfUkVGRVJFTkNFKCkKK3sKKyAgICByZXR1cm4gRUdMUGxhdGZvcm1QYXJhbWV0ZXJzKAor
ICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwKKyAgICAgICAgMTEs
IDEsCisgICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9SRUZFUkVOQ0VfQU5H
TEUpOworfQorCitFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFfRkwxMV8wX1JFRkVSRU5DRSgp
Cit7CisgICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVycygKKyAgICAgICAgRUdMX1BMQVRG
T1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUsCisgICAgICAgIDExLCAwLAorICAgICAgICBFR0xf
UExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfUkVGRVJFTkNFX0FOR0xFKTsKK30KKworRUdMUGxh
dGZvcm1QYXJhbWV0ZXJzIEQzRDExX0ZMMTBfMV9SRUZFUkVOQ0UoKQoreworICAgIHJldHVybiBF
R0xQbGF0Zm9ybVBhcmFtZXRlcnMoCisgICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0Qz
RDExX0FOR0xFLAorICAgICAgICAxMCwgMSwKKyAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0RF
VklDRV9UWVBFX1JFRkVSRU5DRV9BTkdMRSk7Cit9CisKK0VHTFBsYXRmb3JtUGFyYW1ldGVycyBE
M0QxMV9GTDEwXzBfUkVGRVJFTkNFKCkKK3sKKyAgICByZXR1cm4gRUdMUGxhdGZvcm1QYXJhbWV0
ZXJzKAorICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwKKyAgICAg
ICAgMTAsIDAsCisgICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9SRUZFUkVO
Q0VfQU5HTEUpOworfQorCitFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFfRkw5XzNfUkVGRVJF
TkNFKCkKK3sKKyAgICByZXR1cm4gRUdMUGxhdGZvcm1QYXJhbWV0ZXJzKAorICAgICAgICBFR0xf
UExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwKKyAgICAgICAgOSwgMywKKyAgICAgICAg
RUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX1JFRkVSRU5DRV9BTkdMRSk7Cit9CisKK0VH
TFBsYXRmb3JtUGFyYW1ldGVycyBPUEVOR0woKQoreworICAgIHJldHVybiBFR0xQbGF0Zm9ybVBh
cmFtZXRlcnMoRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFKTsKK30KKworCitF
R0xQbGF0Zm9ybVBhcmFtZXRlcnMgT1BFTkdMKEVHTGludCBtYWpvciwgRUdMaW50IG1pbm9yKQor
eworICAgIHJldHVybiBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMoCisgICAgICAgIEVHTF9QTEFURk9S
TV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSwKKyAgICAgICAgbWFqb3IsIG1pbm9yLAorICAgICAg
ICBFR0xfRE9OVF9DQVJFKTsKK30KKworRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIE9QRU5HTF9OVUxM
KCkKK3sKKyAgICByZXR1cm4gRUdMUGxhdGZvcm1QYXJhbWV0ZXJzKAorICAgICAgICBFR0xfUExB
VEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUsCisgICAgICAgIDAsIDAsCisgICAgICAgIEVH
TF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9OVUxMX0FOR0xFKTsKK30KKworRUdMUGxhdGZv
cm1QYXJhbWV0ZXJzIE9QRU5HTEVTKCkKK3sKKyAgICByZXR1cm4gRUdMUGxhdGZvcm1QYXJhbWV0
ZXJzKEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTEVTX0FOR0xFKTsKK30KKworRUdMUGxh
dGZvcm1QYXJhbWV0ZXJzIE9QRU5HTEVTKEVHTGludCBtYWpvciwgRUdMaW50IG1pbm9yKQorewor
ICAgIHJldHVybiBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMoRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVf
T1BFTkdMRVNfQU5HTEUsIG1ham9yLCBtaW5vciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVHTF9ET05UX0NBUkUpOworfQorCit9IC8vIG5hbWVzcGFjZSBlZ2xfcGxhdGZvcm0K
KworLy8gQU5HTEUgdGVzdHMgcGxhdGZvcm1zCitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDko
KQoreworICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMiwgMCwgZWdsX3BsYXRmb3JtOjpE
M0Q5KCkpOworfQorCitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDlfUkVGRVJFTkNFKCkKK3sK
KyAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDIsIDAsIGVnbF9wbGF0Zm9ybTo6RDNEOV9S
RUZFUkVOQ0UoKSk7Cit9CisKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEMTEoKQoreworICAg
IHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMiwgMCwgZWdsX3BsYXRmb3JtOjpEM0QxMSgpKTsK
K30KKworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9EM0QxMShFR0xlbnVtIHByZXNlbnRQYXRoKQor
eworICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMiwgMCwgZWdsX3BsYXRmb3JtOjpEM0Qx
MShwcmVzZW50UGF0aCkpOworfQorCitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDExX0ZMMTFf
MCgpCit7CisgICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygyLCAwLCBlZ2xfcGxhdGZvcm06
OkQzRDExX0ZMMTFfMCgpKTsKK30KKworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9EM0QxMV9GTDEw
XzEoKQoreworICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMiwgMCwgZWdsX3BsYXRmb3Jt
OjpEM0QxMV9GTDEwXzEoKSk7Cit9CisKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEMTFfRkwx
MF8wKCkKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDIsIDAsIGVnbF9wbGF0Zm9y
bTo6RDNEMTFfRkwxMF8wKCkpOworfQorCitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDExX0ZM
OV8zKCkKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDIsIDAsIGVnbF9wbGF0Zm9y
bTo6RDNEMTFfRkw5XzMoKSk7Cit9CisKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEMTFfV0FS
UCgpCit7CisgICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygyLCAwLCBlZ2xfcGxhdGZvcm06
OkQzRDExX1dBUlAoKSk7Cit9CisKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEMTFfRkwxMV8w
X1dBUlAoKQoreworICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMiwgMCwgZWdsX3BsYXRm
b3JtOjpEM0QxMV9GTDExXzBfV0FSUCgpKTsKK30KKworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9E
M0QxMV9GTDEwXzFfV0FSUCgpCit7CisgICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygyLCAw
LCBlZ2xfcGxhdGZvcm06OkQzRDExX0ZMMTBfMV9XQVJQKCkpOworfQorCitQbGF0Zm9ybVBhcmFt
ZXRlcnMgRVMyX0QzRDExX0ZMMTBfMF9XQVJQKCkKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1QYXJh
bWV0ZXJzKDIsIDAsIGVnbF9wbGF0Zm9ybTo6RDNEMTFfRkwxMF8wX1dBUlAoKSk7Cit9CisKK1Bs
YXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEMTFfRkw5XzNfV0FSUCgpCit7CisgICAgcmV0dXJuIFBs
YXRmb3JtUGFyYW1ldGVycygyLCAwLCBlZ2xfcGxhdGZvcm06OkQzRDExX0ZMOV8zX1dBUlAoKSk7
Cit9CisKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEMTFfUkVGRVJFTkNFKCkKK3sKKyAgICBy
ZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDIsIDAsIGVnbF9wbGF0Zm9ybTo6RDNEMTFfUkVGRVJF
TkNFKCkpOworfQorCitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDExX0ZMMTFfMF9SRUZFUkVO
Q0UoKQoreworICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMiwgMCwgZWdsX3BsYXRmb3Jt
OjpEM0QxMV9GTDExXzBfUkVGRVJFTkNFKCkpOworfQorCitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMy
X0QzRDExX0ZMMTBfMV9SRUZFUkVOQ0UoKQoreworICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRl
cnMoMiwgMCwgZWdsX3BsYXRmb3JtOjpEM0QxMV9GTDEwXzFfUkVGRVJFTkNFKCkpOworfQorCitQ
bGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDExX0ZMMTBfMF9SRUZFUkVOQ0UoKQoreworICAgIHJl
dHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMiwgMCwgZWdsX3BsYXRmb3JtOjpEM0QxMV9GTDEwXzBf
UkVGRVJFTkNFKCkpOworfQorCitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDExX0ZMOV8zX1JF
RkVSRU5DRSgpCit7CisgICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygyLCAwLCBlZ2xfcGxh
dGZvcm06OkQzRDExX0ZMOV8zX1JFRkVSRU5DRSgpKTsKK30KKworUGxhdGZvcm1QYXJhbWV0ZXJz
IEVTM19EM0QxMSgpCit7CisgICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygzLCAwLCBlZ2xf
cGxhdGZvcm06OkQzRDExKCkpOworfQorCitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMzX0QzRDExX0ZM
MTFfMSgpCit7CisgICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygzLCAwLCBlZ2xfcGxhdGZv
cm06OkQzRDExX0ZMMTFfMSgpKTsKK30KKworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19EM0QxMV9G
TDExXzAoKQoreworICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMywgMCwgZWdsX3BsYXRm
b3JtOjpEM0QxMV9GTDExXzAoKSk7Cit9CisKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzNfRDNEMTFf
RkwxMF8xKCkKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDMsIDAsIGVnbF9wbGF0
Zm9ybTo6RDNEMTFfRkwxMF8xKCkpOworfQorCitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMzX0QzRDEx
X0ZMMTBfMCgpCit7CisgICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygzLCAwLCBlZ2xfcGxh
dGZvcm06OkQzRDExX0ZMMTBfMCgpKTsKK30KKworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19EM0Qx
MV9XQVJQKCkKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDMsIDAsIGVnbF9wbGF0
Zm9ybTo6RDNEMTFfV0FSUCgpKTsKK30KKworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19EM0QxMV9G
TDExXzFfV0FSUCgpCit7CisgICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygzLCAwLCBlZ2xf
cGxhdGZvcm06OkQzRDExX0ZMMTFfMV9XQVJQKCkpOworfQorCitQbGF0Zm9ybVBhcmFtZXRlcnMg
RVMzX0QzRDExX0ZMMTFfMF9XQVJQKCkKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJz
KDMsIDAsIGVnbF9wbGF0Zm9ybTo6RDNEMTFfRkwxMV8wX1dBUlAoKSk7Cit9CisKK1BsYXRmb3Jt
UGFyYW1ldGVycyBFUzNfRDNEMTFfRkwxMF8xX1dBUlAoKQoreworICAgIHJldHVybiBQbGF0Zm9y
bVBhcmFtZXRlcnMoMywgMCwgZWdsX3BsYXRmb3JtOjpEM0QxMV9GTDEwXzFfV0FSUCgpKTsKK30K
KworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19EM0QxMV9GTDEwXzBfV0FSUCgpCit7CisgICAgcmV0
dXJuIFBsYXRmb3JtUGFyYW1ldGVycygzLCAwLCBlZ2xfcGxhdGZvcm06OkQzRDExX0ZMMTBfMF9X
QVJQKCkpOworfQorCitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMzX0QzRDExX1JFRkVSRU5DRSgpCit7
CisgICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygzLCAwLCBlZ2xfcGxhdGZvcm06OkQzRDEx
X1JFRkVSRU5DRSgpKTsKK30KKworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19EM0QxMV9GTDExXzFf
UkVGRVJFTkNFKCkKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDMsIDAsIGVnbF9w
bGF0Zm9ybTo6RDNEMTFfRkwxMV8xX1JFRkVSRU5DRSgpKTsKK30KKworUGxhdGZvcm1QYXJhbWV0
ZXJzIEVTM19EM0QxMV9GTDExXzBfUkVGRVJFTkNFKCkKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1Q
YXJhbWV0ZXJzKDMsIDAsIGVnbF9wbGF0Zm9ybTo6RDNEMTFfRkwxMV8wX1JFRkVSRU5DRSgpKTsK
K30KKworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19EM0QxMV9GTDEwXzFfUkVGRVJFTkNFKCkKK3sK
KyAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDMsIDAsIGVnbF9wbGF0Zm9ybTo6RDNEMTFf
RkwxMF8xX1JFRkVSRU5DRSgpKTsKK30KKworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19EM0QxMV9G
TDEwXzBfUkVGRVJFTkNFKCkKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDMsIDAs
IGVnbF9wbGF0Zm9ybTo6RDNEMTFfRkwxMF8wX1JFRkVSRU5DRSgpKTsKK30KKworUGxhdGZvcm1Q
YXJhbWV0ZXJzIEVTMl9PUEVOR0xFUygpCit7CisgICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVy
cygyLCAwLCBlZ2xfcGxhdGZvcm06Ok9QRU5HTEVTKCkpOworfQorCitQbGF0Zm9ybVBhcmFtZXRl
cnMgRVMyX09QRU5HTEVTKEVHTGludCBtYWpvciwgRUdMaW50IG1pbm9yKQoreworICAgIHJldHVy
biBQbGF0Zm9ybVBhcmFtZXRlcnMoMiwgMCwgZWdsX3BsYXRmb3JtOjpPUEVOR0xFUyhtYWpvciwg
bWlub3IpKTsKK30KKworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19PUEVOR0xFUygpCit7CisgICAg
cmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygzLCAwLCBlZ2xfcGxhdGZvcm06Ok9QRU5HTEVTKCkp
OworfQorCitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMzX09QRU5HTEVTKEVHTGludCBtYWpvciwgRUdM
aW50IG1pbm9yKQoreworICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMywgMCwgZWdsX3Bs
YXRmb3JtOjpPUEVOR0xFUyhtYWpvciwgbWlub3IpKTsKK30KKworUGxhdGZvcm1QYXJhbWV0ZXJz
IEVTMzFfT1BFTkdMRVMoKQoreworICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMywgMSwg
ZWdsX3BsYXRmb3JtOjpPUEVOR0xFUygpKTsKK30KKworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMzFf
T1BFTkdMRVMoRUdMaW50IG1ham9yLCBFR0xpbnQgbWlub3IpCit7CisgICAgcmV0dXJuIFBsYXRm
b3JtUGFyYW1ldGVycygzLCAxLCBlZ2xfcGxhdGZvcm06Ok9QRU5HTEVTKG1ham9yLCBtaW5vcikp
OworfQorCitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX09QRU5HTCgpCit7CisgICAgcmV0dXJuIFBs
YXRmb3JtUGFyYW1ldGVycygyLCAwLCBlZ2xfcGxhdGZvcm06Ok9QRU5HTCgpKTsKK30KKworUGxh
dGZvcm1QYXJhbWV0ZXJzIEVTMl9PUEVOR0woRUdMaW50IG1ham9yLCBFR0xpbnQgbWlub3IpCit7
CisgICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygyLCAwLCBlZ2xfcGxhdGZvcm06Ok9QRU5H
TChtYWpvciwgbWlub3IpKTsKK30KKworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19PUEVOR0woKQor
eworICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMywgMCwgZWdsX3BsYXRmb3JtOjpPUEVO
R0woKSk7Cit9CisKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzNfT1BFTkdMKEVHTGludCBtYWpvciwg
RUdMaW50IG1pbm9yKQoreworICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMywgMCwgZWds
X3BsYXRmb3JtOjpPUEVOR0wobWFqb3IsIG1pbm9yKSk7Cit9CisKK1BsYXRmb3JtUGFyYW1ldGVy
cyBFUzMxX09QRU5HTCgpCit7CisgICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygzLCAxLCBl
Z2xfcGxhdGZvcm06Ok9QRU5HTCgpKTsKK30KKworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMzFfT1BF
TkdMKEVHTGludCBtYWpvciwgRUdMaW50IG1pbm9yKQoreworICAgIHJldHVybiBQbGF0Zm9ybVBh
cmFtZXRlcnMoMywgMSwgZWdsX3BsYXRmb3JtOjpPUEVOR0wobWFqb3IsIG1pbm9yKSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIGFuZ2xlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2NvbmZpZ3MuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2NvbmZp
Z3MuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
dGVzdF91dGlscy9hbmdsZV90ZXN0X2NvbmZpZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDE0NCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpZm5kZWYgQU5HTEVfVEVTVF9DT05GSUdTX0hfCisj
ZGVmaW5lIEFOR0xFX1RFU1RfQ09ORklHU19IXworCisvLyBPbiBMaW51eCBFR0wvZWdsLmggaW5j
bHVkZXMgWC5oIHdoaWNoIGRvZXMgZGVmaW5lcyBmb3Igc29tZSB2ZXJ5IGNvbW1vbgorLy8gbmFt
ZXMgdGhhdCBhcmUgdXNlZCBieSBndGVzdCAobGlrZSBOb25lIGFuZCBCb29sKSBhbmQgY2F1c2Vz
IGEgbG90IG9mCisvLyBjb21waWxhdGlvbiBlcnJvcnMuIFRvIHdvcmsgYXJvdW5kIHRoaXMsIGV2
ZW4gaWYgdGhpcyBmaWxlIGRvZXNuJ3QgdXNlIGl0LAorLy8gd2UgaW5jbHVkZSBndGVzdCBiZWZv
cmUgRUdMIHNvIHRoYXQgaXQgY29tcGlsZXMgZmluZSBpbiBvdGhlciBmaWxlcyB0aGF0CisvLyB3
YW50IHRvIHVzZSBndGVzdC4KKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorCisjaW5jbHVkZSA8
RUdML2VnbC5oPgorI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KKworI2luY2x1ZGUgImFuZ2xlX3Rl
c3RfaW5zdGFudGlhdGUuaCIKKyNpbmNsdWRlICJFR0xXaW5kb3cuaCIKKworbmFtZXNwYWNlIGFu
Z2xlCit7CisKK3N0cnVjdCBQbGF0Zm9ybVBhcmFtZXRlcnMKK3sKKyAgICBQbGF0Zm9ybVBhcmFt
ZXRlcnMoKTsKKyAgICBQbGF0Zm9ybVBhcmFtZXRlcnMoRUdMaW50IG1ham9yVmVyc2lvbiwgRUdM
aW50IG1pbm9yVmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRUdMUGxhdGZv
cm1QYXJhbWV0ZXJzICZlZ2xQbGF0Zm9ybVBhcmFtZXRlcnMpOworCisgICAgRUdMaW50IGdldFJl
bmRlcmVyKCkgY29uc3Q7CisKKyAgICBFR0xpbnQgbWFqb3JWZXJzaW9uOworICAgIEVHTGludCBt
aW5vclZlcnNpb247CisgICAgRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIGVnbFBhcmFtZXRlcnM7Cit9
OworCitib29sIG9wZXJhdG9yPChjb25zdCBQbGF0Zm9ybVBhcmFtZXRlcnMgJmEsIGNvbnN0IFBs
YXRmb3JtUGFyYW1ldGVycyAmYik7Citib29sIG9wZXJhdG9yPT0oY29uc3QgUGxhdGZvcm1QYXJh
bWV0ZXJzICZhLCBjb25zdCBQbGF0Zm9ybVBhcmFtZXRlcnMgJmIpOworc3RkOjpvc3RyZWFtICZv
cGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgc3RyZWFtLCBjb25zdCBQbGF0Zm9ybVBhcmFtZXRlcnMg
JnBwKTsKKworLy8gRUdMIHBsYXRmb3JtcworbmFtZXNwYWNlIGVnbF9wbGF0Zm9ybQoreworCitF
R0xQbGF0Zm9ybVBhcmFtZXRlcnMgREVGQVVMVCgpOworRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIERF
RkFVTFRfTlVMTCgpOworCitFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEOSgpOworRUdMUGxhdGZv
cm1QYXJhbWV0ZXJzIEQzRDlfTlVMTCgpOworRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDlfUkVG
RVJFTkNFKCk7CisKK0VHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0QxMSgpOworRUdMUGxhdGZvcm1Q
YXJhbWV0ZXJzIEQzRDExKEVHTGVudW0gcHJlc2VudFBhdGgpOworRUdMUGxhdGZvcm1QYXJhbWV0
ZXJzIEQzRDExX0ZMMTFfMSgpOworRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDExX0ZMMTFfMCgp
OworRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDExX0ZMMTBfMSgpOworRUdMUGxhdGZvcm1QYXJh
bWV0ZXJzIEQzRDExX0ZMMTBfMCgpOworRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDExX0ZMOV8z
KCk7CisKK0VHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0QxMV9OVUxMKCk7CisKK0VHTFBsYXRmb3Jt
UGFyYW1ldGVycyBEM0QxMV9XQVJQKCk7CitFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFfRkwx
MV8xX1dBUlAoKTsKK0VHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0QxMV9GTDExXzBfV0FSUCgpOwor
RUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDExX0ZMMTBfMV9XQVJQKCk7CitFR0xQbGF0Zm9ybVBh
cmFtZXRlcnMgRDNEMTFfRkwxMF8wX1dBUlAoKTsKK0VHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0Qx
MV9GTDlfM19XQVJQKCk7CisKK0VHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0QxMV9SRUZFUkVOQ0Uo
KTsKK0VHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0QxMV9GTDExXzFfUkVGRVJFTkNFKCk7CitFR0xQ
bGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFfRkwxMV8wX1JFRkVSRU5DRSgpOworRUdMUGxhdGZvcm1Q
YXJhbWV0ZXJzIEQzRDExX0ZMMTBfMV9SRUZFUkVOQ0UoKTsKK0VHTFBsYXRmb3JtUGFyYW1ldGVy
cyBEM0QxMV9GTDEwXzBfUkVGRVJFTkNFKCk7CitFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFf
Rkw5XzNfUkVGRVJFTkNFKCk7CisKK0VHTFBsYXRmb3JtUGFyYW1ldGVycyBPUEVOR0woKTsKK0VH
TFBsYXRmb3JtUGFyYW1ldGVycyBPUEVOR0woRUdMaW50IG1ham9yLCBFR0xpbnQgbWlub3IpOwor
RUdMUGxhdGZvcm1QYXJhbWV0ZXJzIE9QRU5HTF9OVUxMKCk7CisKK0VHTFBsYXRmb3JtUGFyYW1l
dGVycyBPUEVOR0xFUygpOworRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIE9QRU5HTEVTKEVHTGludCBt
YWpvciwgRUdMaW50IG1pbm9yKTsKKworfSAvLyBuYW1lc3BhY2UgZWdsX3BsYXRmb3JtCisKKy8v
IEFOR0xFIHRlc3RzIHBsYXRmb3JtcworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9EM0Q5KCk7CitQ
bGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDlfUkVGRVJFTkNFKCk7CisKK1BsYXRmb3JtUGFyYW1l
dGVycyBFUzJfRDNEMTEoKTsKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEMTEoRUdMZW51bSBw
cmVzZW50UGF0aCk7CitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDExX0ZMMTFfMCgpOworUGxh
dGZvcm1QYXJhbWV0ZXJzIEVTMl9EM0QxMV9GTDEwXzEoKTsKK1BsYXRmb3JtUGFyYW1ldGVycyBF
UzJfRDNEMTFfRkwxMF8wKCk7CitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDExX0ZMOV8zKCk7
CisKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEMTFfV0FSUCgpOworUGxhdGZvcm1QYXJhbWV0
ZXJzIEVTMl9EM0QxMV9GTDExXzBfV0FSUCgpOworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9EM0Qx
MV9GTDEwXzFfV0FSUCgpOworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9EM0QxMV9GTDEwXzBfV0FS
UCgpOworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9EM0QxMV9GTDlfM19XQVJQKCk7CisKK1BsYXRm
b3JtUGFyYW1ldGVycyBFUzJfRDNEMTFfUkVGRVJFTkNFKCk7CitQbGF0Zm9ybVBhcmFtZXRlcnMg
RVMyX0QzRDExX0ZMMTFfMF9SRUZFUkVOQ0UoKTsKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNE
MTFfRkwxMF8xX1JFRkVSRU5DRSgpOworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9EM0QxMV9GTDEw
XzBfUkVGRVJFTkNFKCk7CitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDExX0ZMOV8zX1JFRkVS
RU5DRSgpOworCitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMzX0QzRDExKCk7CitQbGF0Zm9ybVBhcmFt
ZXRlcnMgRVMzX0QzRDExX0ZMMTFfMSgpOworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19EM0QxMV9G
TDExXzAoKTsKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzNfRDNEMTFfRkwxMF8xKCk7CitQbGF0Zm9y
bVBhcmFtZXRlcnMgRVMzX0QzRDExX0ZMMTBfMCgpOworCitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMz
X0QzRDExX1dBUlAoKTsKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzNfRDNEMTFfRkwxMV8xX1dBUlAo
KTsKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzNfRDNEMTFfRkwxMV8wX1dBUlAoKTsKK1BsYXRmb3Jt
UGFyYW1ldGVycyBFUzNfRDNEMTFfRkwxMF8xX1dBUlAoKTsKK1BsYXRmb3JtUGFyYW1ldGVycyBF
UzNfRDNEMTFfRkwxMF8wX1dBUlAoKTsKKworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19EM0QxMV9S
RUZFUkVOQ0UoKTsKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzNfRDNEMTFfRkwxMV8xX1JFRkVSRU5D
RSgpOworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19EM0QxMV9GTDExXzBfUkVGRVJFTkNFKCk7CitQ
bGF0Zm9ybVBhcmFtZXRlcnMgRVMzX0QzRDExX0ZMMTBfMV9SRUZFUkVOQ0UoKTsKK1BsYXRmb3Jt
UGFyYW1ldGVycyBFUzNfRDNEMTFfRkwxMF8wX1JFRkVSRU5DRSgpOworCitQbGF0Zm9ybVBhcmFt
ZXRlcnMgRVMyX09QRU5HTCgpOworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9PUEVOR0woRUdMaW50
IG1ham9yLCBFR0xpbnQgbWlub3IpOworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19PUEVOR0woKTsK
K1BsYXRmb3JtUGFyYW1ldGVycyBFUzNfT1BFTkdMKEVHTGludCBtYWpvciwgRUdMaW50IG1pbm9y
KTsKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzMxX09QRU5HTCgpOworUGxhdGZvcm1QYXJhbWV0ZXJz
IEVTMzFfT1BFTkdMKEVHTGludCBtYWpvciwgRUdMaW50IG1pbm9yKTsKKworUGxhdGZvcm1QYXJh
bWV0ZXJzIEVTMl9PUEVOR0xFUygpOworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9PUEVOR0xFUyhF
R0xpbnQgbWFqb3IsIEVHTGludCBtaW5vcik7CitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMzX09QRU5H
TEVTKCk7CitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMzX09QRU5HTEVTKEVHTGludCBtYWpvciwgRUdM
aW50IG1pbm9yKTsKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzMxX09QRU5HTEVTKCk7CitQbGF0Zm9y
bVBhcmFtZXRlcnMgRVMzMV9PUEVOR0xFUyhFR0xpbnQgbWFqb3IsIEVHTGludCBtaW5vcik7CisK
K30gLy8gbmFtZXNwYWNlIGFuZ2xlCisKKyNlbmRpZiAvLyBBTkdMRV9URVNUX0NPTkZJR1NfSF8K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xl
X3Rlc3RfaW5zdGFudGlhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfaW5zdGFudGlhdGUuY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxz
L2FuZ2xlX3Rlc3RfaW5zdGFudGlhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODgg
QEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisvLworCisvLyBhbmdsZV90ZXN0X2luc3RhbnRpYXRlLmNwcDogQWRkcyBz
dXBwb3J0IGZvciBmaWx0ZXJpbmcgcGFyYW1ldGVyaXplZAorLy8gdGVzdHMgYnkgcGxhdGZvcm0s
IHNvIHdlIHNraXAgdW5zdXBwb3J0ZWQgY29uZmlncy4KKworI2luY2x1ZGUgInRlc3RfdXRpbHMv
YW5nbGVfdGVzdF9pbnN0YW50aWF0ZS5oIgorCisjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPGlv
c3RyZWFtPgorCisjaW5jbHVkZSAiRUdMV2luZG93LmgiCisjaW5jbHVkZSAiT1NXaW5kb3cuaCIK
KyNpbmNsdWRlICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmlncy5oIgorCituYW1lc3BhY2Ug
YW5nbGUKK3sKKworYm9vbCBJc1BsYXRmb3JtQXZhaWxhYmxlKGNvbnN0IFBsYXRmb3JtUGFyYW1l
dGVycyAmcGFyYW0pCit7CisgICAgc3dpdGNoIChwYXJhbS5nZXRSZW5kZXJlcigpKQorICAgIHsK
KyAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfREVGQVVMVF9BTkdMRToKKyAgICAg
ICAgYnJlYWs7CisKKyAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEOV9BTkdM
RToKKyNpZm5kZWYgQU5HTEVfRU5BQkxFX0QzRDkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2Vu
ZGlmCisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBF
X0QzRDExX0FOR0xFOgorI2lmbmRlZiBBTkdMRV9FTkFCTEVfRDNEMTEKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworI2VuZGlmCisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEVHTF9QTEFURk9S
TV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRToKKyAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xF
X1RZUEVfT1BFTkdMRVNfQU5HTEU6CisjaWZuZGVmIEFOR0xFX0VOQUJMRV9PUEVOR0wKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAgICAgIGJyZWFrOworCisgICAgICBkZWZhdWx0
OgorICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBz
dGF0aWMgc3RkOjptYXA8UGxhdGZvcm1QYXJhbWV0ZXJzLCBib29sPiBwYXJhbUF2YWlsYWJpbGl0
eUNhY2hlOworICAgIGF1dG8gaXRlciA9IHBhcmFtQXZhaWxhYmlsaXR5Q2FjaGUuZmluZChwYXJh
bSk7CisgICAgaWYgKGl0ZXIgIT0gcGFyYW1BdmFpbGFiaWxpdHlDYWNoZS5lbmQoKSkKKyAgICB7
CisgICAgICAgIHJldHVybiBpdGVyLT5zZWNvbmQ7CisgICAgfQorICAgIGVsc2UKKyAgICB7Cisg
ICAgICAgIE9TV2luZG93ICpvc1dpbmRvdyA9IENyZWF0ZU9TV2luZG93KCk7CisgICAgICAgIGJv
b2wgcmVzdWx0ID0gb3NXaW5kb3ctPmluaXRpYWxpemUoIkNPTkZJR19URVNURVIiLCAxLCAxKTsK
KworICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICB7CisgICAgICAgICAgICBFR0xXaW5kb3cg
KmVnbFdpbmRvdyA9CisgICAgICAgICAgICAgICAgbmV3IEVHTFdpbmRvdyhwYXJhbS5tYWpvclZl
cnNpb24sIHBhcmFtLm1pbm9yVmVyc2lvbiwgcGFyYW0uZWdsUGFyYW1ldGVycyk7CisgICAgICAg
ICAgICByZXN1bHQgPSBlZ2xXaW5kb3ctPmluaXRpYWxpemVHTChvc1dpbmRvdyk7CisKKyAgICAg
ICAgICAgIGVnbFdpbmRvdy0+ZGVzdHJveUdMKCk7CisgICAgICAgICAgICBTYWZlRGVsZXRlKGVn
bFdpbmRvdyk7CisgICAgICAgIH0KKworICAgICAgICBvc1dpbmRvdy0+ZGVzdHJveSgpOworICAg
ICAgICBTYWZlRGVsZXRlKG9zV2luZG93KTsKKworICAgICAgICBwYXJhbUF2YWlsYWJpbGl0eUNh
Y2hlW3BhcmFtXSA9IHJlc3VsdDsKKworICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJTa2lwcGluZyB0ZXN0cyB1c2luZyBjb25maWd1cmF0
aW9uICIgPDwgcGFyYW0gPDwgIiBiZWNhdXNlIGl0IGlzIG5vdCBhdmFpbGFibGUuIiA8PCBzdGQ6
OmVuZGw7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KK30KKwor
fQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvYW5n
bGVfdGVzdF9pbnN0YW50aWF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfaW5zdGFudGlhdGUuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9h
bmdsZV90ZXN0X2luc3RhbnRpYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAor
Ly8KKy8vIENvcHlyaWdodCAoYykgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisKKy8vIGFuZ2xlX3Rlc3RfaW5zdGFudGlhdGUuaDogQWRkcyBzdXBwb3J0
IGZvciBmaWx0ZXJpbmcgcGFyYW1ldGVyaXplZAorLy8gdGVzdHMgYnkgcGxhdGZvcm0sIHNvIHdl
IHNraXAgdW5zdXBwb3J0ZWQgY29uZmlncy4KKworI2lmbmRlZiBBTkdMRV9URVNUX0lOU1RBTlRJ
QVRFX0hfCisjZGVmaW5lIEFOR0xFX1RFU1RfSU5TVEFOVElBVEVfSF8KKworI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0Lmg+CisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKworbmFtZXNwYWNlIGFu
Z2xlCit7CisKK3N0cnVjdCBQbGF0Zm9ybVBhcmFtZXRlcnM7CisKK2Jvb2wgSXNQbGF0Zm9ybUF2
YWlsYWJsZShjb25zdCBQbGF0Zm9ybVBhcmFtZXRlcnMgJnBhcmFtKTsKKworLy8gVGhpcyBmdW5j
dGlvbnMgaXMgdXNlZCB0byBmaWx0ZXIgd2hpY2ggdGVzdHMgc2hvdWxkIGJlIHJlZ2lzdGVyZWQs
CisvLyBUIG11c3QgYmUgb3IgaW5oZXJpdCBmcm9tIGFuZ2xlOjpQbGF0Zm9ybVBhcmFtZXRlcnMu
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0ZDo6dmVjdG9yPFQ+IEZpbHRlclRlc3RQYXJhbXMo
Y29uc3QgVCAqcGFyYW1zLCBzaXplX3QgbnVtUGFyYW1zKQoreworICAgIHN0ZDo6dmVjdG9yPFQ+
IGZpbHRlcmVkOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1QYXJhbXM7IGkrKykK
KyAgICB7CisgICAgICAgIGlmIChJc1BsYXRmb3JtQXZhaWxhYmxlKHBhcmFtc1tpXSkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGZpbHRlcmVkLnB1c2hfYmFjayhwYXJhbXNbaV0pOworICAgICAg
ICB9CisgICAgfQorCisgICAgcmV0dXJuIGZpbHRlcmVkOworfQorCisvLyBJbnN0YW50aWF0ZSB0
aGUgdGVzdCBvbmNlIGZvciBlYWNoIGV4dHJhIGFyZ3VtZW50LiBUaGUgdHlwZXMgb2YgYWxsIHRo
ZQorLy8gYXJndW1lbnRzIG11c3QgbWF0Y2gsIGFuZCBnZXRSZW5kZXJlciBtdXN0IGJlIGltcGxl
bWVudGVkIGZvciB0aGF0IHR5cGUuCisjZGVmaW5lIEFOR0xFX0lOU1RBTlRJQVRFX1RFU1QodGVz
dE5hbWUsIGZpcnN0UGFyYW0sIC4uLikgXAorICAgIGNvbnN0IGRlY2x0eXBlKGZpcnN0UGFyYW0p
IHRlc3ROYW1lIyNwYXJhbXNbXSA9IHsgZmlyc3RQYXJhbSwgIyNfX1ZBX0FSR1NfXyB9OyBcCisg
ICAgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoLCB0ZXN0TmFtZSwgXAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdGluZzo6VmFsdWVzSW4oOjphbmdsZTo6RmlsdGVyVGVzdFBhcmFt
cyh0ZXN0TmFtZSMjcGFyYW1zLCBBcnJheVNpemUodGVzdE5hbWUjI3BhcmFtcykpKSwgXAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFt
ZSgpKTsKKworfSAvLyBuYW1lc3BhY2UgYW5nbGUKKworI2VuZGlmIC8vIEFOR0xFX1RFU1RfSU5T
VEFOVElBVEVfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0
X3V0aWxzL2NvbXBpbGVyX3Rlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2NvbXBpbGVyX3Rlc3QuY3BwCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2NvbXBp
bGVyX3Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjE3IEBACisvLworLy8gQ29w
eXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKy8vIGNvbXBpbGVyX3Rlc3QuY3BwOgorLy8gICAgIHV0aWxpdGllcyBmb3IgY29tcGlsZXIg
dW5pdCB0ZXN0cy4KKworI2luY2x1ZGUgInRlc3RzL3Rlc3RfdXRpbHMvY29tcGlsZXJfdGVzdC5o
IgorCisjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9y
L0NvbXBpbGVyLmgiCisKK25hbWVzcGFjZQoreworCitjbGFzcyBTaGFkZXJWYXJpYWJsZUZpbmRl
ciA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCit7CisgIHB1YmxpYzoKKyAgICBTaGFkZXJWYXJp
YWJsZUZpbmRlcihjb25zdCBUU3RyaW5nICZ2YXJpYWJsZU5hbWUsIFRCYXNpY1R5cGUgYmFzaWNU
eXBlKQorICAgICAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKSwKKyAg
ICAgICAgICBtVmFyaWFibGVOYW1lKHZhcmlhYmxlTmFtZSksCisgICAgICAgICAgbU5vZGVGb3Vu
ZChudWxscHRyKSwKKyAgICAgICAgICBtQmFzaWNUeXBlKGJhc2ljVHlwZSkKKyAgICB7CisgICAg
fQorCisgICAgdm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICpub2RlKQorICAgIHsKKyAg
ICAgICAgaWYgKG5vZGUtPmdldEJhc2ljVHlwZSgpID09IG1CYXNpY1R5cGUgJiYgbm9kZS0+Z2V0
U3ltYm9sKCkgPT0gbVZhcmlhYmxlTmFtZSkKKyAgICAgICAgeworICAgICAgICAgICAgbU5vZGVG
b3VuZCA9IG5vZGU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBib29sIGlzRm91bmQoKSBjb25z
dCB7IHJldHVybiBtTm9kZUZvdW5kICE9IG51bGxwdHI7IH0KKyAgICBjb25zdCBUSW50ZXJtU3lt
Ym9sICpnZXROb2RlKCkgY29uc3QgeyByZXR1cm4gbU5vZGVGb3VuZDsgfQorCisgIHByaXZhdGU6
CisgICAgVFN0cmluZyBtVmFyaWFibGVOYW1lOworICAgIFRJbnRlcm1TeW1ib2wgKm1Ob2RlRm91
bmQ7CisgICAgVEJhc2ljVHlwZSBtQmFzaWNUeXBlOworfTsKKworfSAgLy8gYW5vbnltb3VzIG5h
bWVzcGFjZQorCitib29sIGNvbXBpbGVUZXN0U2hhZGVyKEdMZW51bSB0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICBTaFNoYWRlclNwZWMgc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAg
U2hTaGFkZXJPdXRwdXQgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyAmc2hhZGVyU3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICBTaEJ1aWx0SW5S
ZXNvdXJjZXMgKnJlc291cmNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgU2hDb21waWxlT3B0
aW9ucyBjb21waWxlT3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcg
KnRyYW5zbGF0ZWRDb2RlLAorICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyAqaW5m
b0xvZykKK3sKKyAgICBUQ29tcGlsZXIgKnRyYW5zbGF0b3IgPSBDb25zdHJ1Y3RDb21waWxlcih0
eXBlLCBzcGVjLCBvdXRwdXQpOworICAgIGlmICghdHJhbnNsYXRvci0+SW5pdCgqcmVzb3VyY2Vz
KSkKKyAgICB7CisgICAgICAgIFNhZmVEZWxldGUodHJhbnNsYXRvcik7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICBjb25zdCBjaGFyICpzaGFkZXJTdHJpbmdzW10gPSB7IHNo
YWRlclN0cmluZy5jX3N0cigpIH07CisKKyAgICBib29sIGNvbXBpbGF0aW9uU3VjY2VzcyA9IHRy
YW5zbGF0b3ItPmNvbXBpbGUoc2hhZGVyU3RyaW5ncywgMSwgU0hfT0JKRUNUX0NPREUgfCBjb21w
aWxlT3B0aW9ucyk7CisgICAgVEluZm9TaW5rICZpbmZvU2luayA9IHRyYW5zbGF0b3ItPmdldElu
Zm9TaW5rKCk7CisgICAgaWYgKHRyYW5zbGF0ZWRDb2RlKQorICAgICAgICAqdHJhbnNsYXRlZENv
ZGUgPSBpbmZvU2luay5vYmouY19zdHIoKTsKKyAgICBpZiAoaW5mb0xvZykKKyAgICAgICAgKmlu
Zm9Mb2cgPSBpbmZvU2luay5pbmZvLmNfc3RyKCk7CisgICAgU2FmZURlbGV0ZSh0cmFuc2xhdG9y
KTsKKyAgICByZXR1cm4gY29tcGlsYXRpb25TdWNjZXNzOworfQorCitib29sIGNvbXBpbGVUZXN0
U2hhZGVyKEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICBTaFNoYWRlclNwZWMg
c3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgU2hTaGFkZXJPdXRwdXQgb3V0cHV0LAorICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nLAorICAg
ICAgICAgICAgICAgICAgICAgICBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25zLAorICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyAqdHJhbnNsYXRlZENvZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nICppbmZvTG9nKQoreworICAgIFNoQnVpbHRJblJl
c291cmNlcyByZXNvdXJjZXM7CisgICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmcmVzb3VyY2Vz
KTsKKyAgICByZXR1cm4gY29tcGlsZVRlc3RTaGFkZXIodHlwZSwgc3BlYywgb3V0cHV0LCBzaGFk
ZXJTdHJpbmcsICZyZXNvdXJjZXMsIGNvbXBpbGVPcHRpb25zLCB0cmFuc2xhdGVkQ29kZSwgaW5m
b0xvZyk7Cit9CisKK01hdGNoT3V0cHV0Q29kZVRlc3Q6Ok1hdGNoT3V0cHV0Q29kZVRlc3QoR0xl
bnVtIHNoYWRlclR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNoQ29tcGlsZU9wdGlvbnMgZGVmYXVsdENvbXBpbGVPcHRpb25zLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTaFNoYWRlck91dHB1dCBvdXRwdXRUeXBlKQorICAg
IDogbVNoYWRlclR5cGUoc2hhZGVyVHlwZSksIG1EZWZhdWx0Q29tcGlsZU9wdGlvbnMoZGVmYXVs
dENvbXBpbGVPcHRpb25zKQoreworICAgIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoJm1SZXNvdXJj
ZXMpOworICAgIG1PdXRwdXRDb2RlW291dHB1dFR5cGVdID0gc3RkOjpzdHJpbmcoKTsKK30KKwor
dm9pZCBNYXRjaE91dHB1dENvZGVUZXN0OjphZGRPdXRwdXRUeXBlKGNvbnN0IFNoU2hhZGVyT3V0
cHV0IG91dHB1dFR5cGUpCit7CisgICAgbU91dHB1dENvZGVbb3V0cHV0VHlwZV0gPSBzdGQ6OnN0
cmluZygpOworfQorCitTaEJ1aWx0SW5SZXNvdXJjZXMgKk1hdGNoT3V0cHV0Q29kZVRlc3Q6Omdl
dFJlc291cmNlcygpCit7CisgICAgcmV0dXJuICZtUmVzb3VyY2VzOworfQorCit2b2lkIE1hdGNo
T3V0cHV0Q29kZVRlc3Q6OmNvbXBpbGUoY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZykK
K3sKKyAgICBjb21waWxlKHNoYWRlclN0cmluZywgbURlZmF1bHRDb21waWxlT3B0aW9ucyk7Cit9
CisKK3ZvaWQgTWF0Y2hPdXRwdXRDb2RlVGVzdDo6Y29tcGlsZShjb25zdCBzdGQ6OnN0cmluZyAm
c2hhZGVyU3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNo
Q29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpCit7CisgICAgc3RkOjpzdHJpbmcgaW5mb0xv
ZzsKKyAgICBmb3IgKGF1dG8gJmNvZGUgOiBtT3V0cHV0Q29kZSkKKyAgICB7CisgICAgICAgIGJv
b2wgY29tcGlsYXRpb25TdWNjZXNzID0KKyAgICAgICAgICAgIGNvbXBpbGVXaXRoU2V0dGluZ3Mo
Y29kZS5maXJzdCwgc2hhZGVyU3RyaW5nLCBjb21waWxlT3B0aW9ucywgJmNvZGUuc2Vjb25kLCAm
aW5mb0xvZyk7CisgICAgICAgIGlmICghY29tcGlsYXRpb25TdWNjZXNzKQorICAgICAgICB7Cisg
ICAgICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQ6XG4iIDw8IGlu
Zm9Mb2c7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgTWF0Y2hPdXRwdXRDb2RlVGVzdDo6
Y29tcGlsZVdpdGhTZXR0aW5ncyhTaFNoYWRlck91dHB1dCBvdXRwdXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRl
clN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25zLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nICp0cmFuc2xhdGVkQ29kZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmlu
ZyAqaW5mb0xvZykKK3sKKyAgICByZXR1cm4gY29tcGlsZVRlc3RTaGFkZXIobVNoYWRlclR5cGUs
IFNIX0dMRVMzX1NQRUMsIG91dHB1dCwgc2hhZGVyU3RyaW5nLCAmbVJlc291cmNlcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZU9wdGlvbnMsIHRyYW5zbGF0ZWRDb2RlLCBp
bmZvTG9nKTsKK30KKworYm9vbCBNYXRjaE91dHB1dENvZGVUZXN0Ojpmb3VuZEluQ29kZShTaFNo
YWRlck91dHB1dCBvdXRwdXQsIGNvbnN0IGNoYXIgKnN0cmluZ1RvRmluZCkgY29uc3QKK3sKKyAg
ICBjb25zdCBhdXRvIGNvZGUgPSBtT3V0cHV0Q29kZS5maW5kKG91dHB1dCk7CisgICAgRVhQRUNU
X05FKG1PdXRwdXRDb2RlLmVuZCgpLCBjb2RlKTsKKyAgICBpZiAoY29kZSA9PSBtT3V0cHV0Q29k
ZS5lbmQoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1
cm4gY29kZS0+c2Vjb25kLmZpbmQoc3RyaW5nVG9GaW5kKSAhPSBzdGQ6OnN0cmluZzo6bnBvczsK
K30KKworYm9vbCBNYXRjaE91dHB1dENvZGVUZXN0Ojpmb3VuZEluQ29kZShTaFNoYWRlck91dHB1
dCBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIgKnN0cmluZ1RvRmluZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgaW50IGV4cGVjdGVkT2NjdXJyZW5jZXMpIGNvbnN0Cit7CisgICAgY29uc3QgYXV0byBj
b2RlID0gbU91dHB1dENvZGUuZmluZChvdXRwdXQpOworICAgIEVYUEVDVF9ORShtT3V0cHV0Q29k
ZS5lbmQoKSwgY29kZSk7CisgICAgaWYgKGNvZGUgPT0gbU91dHB1dENvZGUuZW5kKCkpCisgICAg
eworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc2l6ZV90IGN1cnJlbnRQb3Mg
ID0gMDsKKyAgICBpbnQgb2NjdXJlbmNlc0xlZnQgPSBleHBlY3RlZE9jY3VycmVuY2VzOworICAg
IHdoaWxlIChvY2N1cmVuY2VzTGVmdC0tID4gMCkKKyAgICB7CisgICAgICAgIGF1dG8gcG9zaXRp
b24gPSBjb2RlLT5zZWNvbmQuZmluZChzdHJpbmdUb0ZpbmQsIGN1cnJlbnRQb3MpOworICAgICAg
ICBpZiAocG9zaXRpb24gPT0gc3RkOjpzdHJpbmc6Om5wb3MpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBjdXJyZW50UG9zID0gcG9zaXRp
b24gKyAxOworICAgIH0KKyAgICByZXR1cm4gY29kZS0+c2Vjb25kLmZpbmQoc3RyaW5nVG9GaW5k
LCBjdXJyZW50UG9zKSA9PSBzdGQ6OnN0cmluZzo6bnBvczsKK30KKworYm9vbCBNYXRjaE91dHB1
dENvZGVUZXN0Ojpmb3VuZEluQ29kZShjb25zdCBjaGFyICpzdHJpbmdUb0ZpbmQpIGNvbnN0Cit7
CisgICAgZm9yIChhdXRvICZjb2RlIDogbU91dHB1dENvZGUpCisgICAgeworICAgICAgICBpZiAo
IWZvdW5kSW5Db2RlKGNvZGUuZmlyc3QsIHN0cmluZ1RvRmluZCkpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBNYXRjaE91dHB1dENvZGVUZXN0Ojpmb3VuZEluQ29kZShjb25zdCBjaGFyICpz
dHJpbmdUb0ZpbmQsIGNvbnN0IGludCBleHBlY3RlZE9jY3VycmVuY2VzKSBjb25zdAoreworICAg
IGZvciAoYXV0byAmY29kZSA6IG1PdXRwdXRDb2RlKQorICAgIHsKKyAgICAgICAgaWYgKCFmb3Vu
ZEluQ29kZShjb2RlLmZpcnN0LCBzdHJpbmdUb0ZpbmQsIGV4cGVjdGVkT2NjdXJyZW5jZXMpKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTWF0Y2hPdXRwdXRDb2RlVGVzdDo6bm90Rm91bmRJ
bkNvZGUoY29uc3QgY2hhciAqc3RyaW5nVG9GaW5kKSBjb25zdAoreworICAgIGZvciAoYXV0byAm
Y29kZSA6IG1PdXRwdXRDb2RlKQorICAgIHsKKyAgICAgICAgaWYgKGZvdW5kSW5Db2RlKGNvZGUu
Zmlyc3QsIHN0cmluZ1RvRmluZCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworY29uc3QgVEludGVy
bVN5bWJvbCAqRmluZFN5bWJvbE5vZGUoVEludGVybU5vZGUgKnJvb3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZzeW1ib2xOYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEJhc2ljVHlwZSBiYXNpY1R5cGUpCit7Cisg
ICAgU2hhZGVyVmFyaWFibGVGaW5kZXIgZmluZGVyKHN5bWJvbE5hbWUsIGJhc2ljVHlwZSk7Cisg
ICAgcm9vdC0+dHJhdmVyc2UoJmZpbmRlcik7CisgICAgcmV0dXJuIGZpbmRlci5nZXROb2RlKCk7
Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9j
b21waWxlcl90ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL3Rlc3RfdXRpbHMvY29tcGlsZXJfdGVzdC5oCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2NvbXBpbGVyX3Rlc3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk2IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE1
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIGNvbXBpbGVy
X3Rlc3QuaDoKKy8vICAgICB1dGlsaXRpZXMgZm9yIGNvbXBpbGVyIHVuaXQgdGVzdHMuCisKKyNp
Zm5kZWYgVEVTVFNfVEVTVF9VVElMU19DT01QSUxFUl9URVNUX0hfCisjZGVmaW5lIFRFU1RTX1RF
U1RfVVRJTFNfQ09NUElMRVJfVEVTVF9IXworCisjaW5jbHVkZSA8bWFwPgorCisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKKworI2luY2x1ZGUgImFuZ2xlX2dsLmgiCisjaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yRVNTTC5oIgorI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVy
TGFuZy5oIgorCitib29sIGNvbXBpbGVUZXN0U2hhZGVyKEdMZW51bSB0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICBTaFNoYWRlclNwZWMgc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAg
U2hTaGFkZXJPdXRwdXQgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyAmc2hhZGVyU3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICBTaEJ1aWx0SW5S
ZXNvdXJjZXMgKnJlc291cmNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgU2hDb21waWxlT3B0
aW9ucyBjb21waWxlT3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcg
KnRyYW5zbGF0ZWRDb2RlLAorICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyAqaW5m
b0xvZyk7CisKK2Jvb2wgY29tcGlsZVRlc3RTaGFkZXIoR0xlbnVtIHR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgIFNoU2hhZGVyU3BlYyBzcGVjLAorICAgICAgICAgICAgICAgICAgICAgICBT
aFNoYWRlck91dHB1dCBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgIFNoQ29tcGlsZU9w
dGlvbnMgY29tcGlsZU9wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5n
ICp0cmFuc2xhdGVkQ29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgKmlu
Zm9Mb2cpOworCitjbGFzcyBNYXRjaE91dHB1dENvZGVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIE1hdGNoT3V0cHV0Q29kZVRlc3QoR0xlbnVtIHNoYWRl
clR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICBTaENvbXBpbGVPcHRpb25zIGRlZmF1bHRD
b21waWxlT3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgIFNoU2hhZGVyT3V0cHV0IG91
dHB1dFR5cGUpOworCisgICAgdm9pZCBhZGRPdXRwdXRUeXBlKGNvbnN0IFNoU2hhZGVyT3V0cHV0
IG91dHB1dFR5cGUpOworCisgICAgU2hCdWlsdEluUmVzb3VyY2VzICpnZXRSZXNvdXJjZXMoKTsK
KworICAgIC8vIENvbXBpbGUgZnVuY3Rpb25zIGNsZWFyIGFueSByZXN1bHRzIGZyb20gZWFybGll
ciBjYWxscyB0byB0aGVtLgorICAgIHZvaWQgY29tcGlsZShjb25zdCBzdGQ6OnN0cmluZyAmc2hh
ZGVyU3RyaW5nKTsKKyAgICB2b2lkIGNvbXBpbGUoY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0
cmluZywgY29uc3QgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucyk7CisKKyAgICBib29s
IGZvdW5kSW5FU1NMQ29kZShjb25zdCBjaGFyICpzdHJpbmdUb0ZpbmQpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gZm91bmRJbkNvZGUoU0hfRVNTTF9PVVRQVVQsIHN0cmluZ1RvRmluZCk7
CisgICAgfQorCisgICAgYm9vbCBmb3VuZEluR0xTTENvZGUoY29uc3QgY2hhciAqc3RyaW5nVG9G
aW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGZvdW5kSW5Db2RlKFNIX0dMU0xfQ09N
UEFUSUJJTElUWV9PVVRQVVQsIHN0cmluZ1RvRmluZCk7CisgICAgfQorCisgICAgYm9vbCBmb3Vu
ZEluQ29kZShTaFNoYWRlck91dHB1dCBvdXRwdXQsIGNvbnN0IGNoYXIgKnN0cmluZ1RvRmluZCkg
Y29uc3Q7CisKKyAgICAvLyBUZXN0IHRoYXQgdGhlIHN0cmluZyBvY2N1cnMgZm9yIGV4YWN0bHkg
ZXhwZWN0ZWRPY2N1cnJlbmNlcyB0aW1lcworICAgIGJvb2wgZm91bmRJbkNvZGUoU2hTaGFkZXJP
dXRwdXQgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3RyaW5nVG9G
aW5kLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IGV4cGVjdGVkT2NjdXJyZW5jZXMp
IGNvbnN0OworCisgICAgLy8gVGVzdCB0aGF0IHRoZSBzdHJpbmcgaXMgZm91bmQgaW4gYWxsIG91
dHB1dHMKKyAgICBib29sIGZvdW5kSW5Db2RlKGNvbnN0IGNoYXIgKnN0cmluZ1RvRmluZCkgY29u
c3Q7CisKKyAgICAvLyBUZXN0IHRoYXQgdGhlIHN0cmluZyBvY2N1cnMgZm9yIGV4YWN0bHkgZXhw
ZWN0ZWRPY2N1cnJlbmNlcyB0aW1lcyBpbiBhbGwgb3V0cHV0cworICAgIGJvb2wgZm91bmRJbkNv
ZGUoY29uc3QgY2hhciAqc3RyaW5nVG9GaW5kLCBjb25zdCBpbnQgZXhwZWN0ZWRPY2N1cnJlbmNl
cykgY29uc3Q7CisKKyAgICAvLyBUZXN0IHRoYXQgdGhlIHN0cmluZyBpcyBmb3VuZCBpbiBub25l
IG9mIHRoZSBvdXRwdXRzCisgICAgYm9vbCBub3RGb3VuZEluQ29kZShjb25zdCBjaGFyICpzdHJp
bmdUb0ZpbmQpIGNvbnN0OworCisgIHByaXZhdGU6CisgICAgYm9vbCBjb21waWxlV2l0aFNldHRp
bmdzKFNoU2hhZGVyT3V0cHV0IG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjpzdHJpbmcgKnRyYW5zbGF0ZWRDb2RlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6OnN0cmluZyAqaW5mb0xvZyk7CisKKyAgICBHTGVudW0gbVNoYWRl
clR5cGU7CisgICAgU2hDb21waWxlT3B0aW9ucyBtRGVmYXVsdENvbXBpbGVPcHRpb25zOworICAg
IFNoQnVpbHRJblJlc291cmNlcyBtUmVzb3VyY2VzOworCisgICAgc3RkOjptYXA8U2hTaGFkZXJP
dXRwdXQsIHN0ZDo6c3RyaW5nPiBtT3V0cHV0Q29kZTsKK307CisKK2NvbnN0IFRJbnRlcm1TeW1i
b2wgKkZpbmRTeW1ib2xOb2RlKFRJbnRlcm1Ob2RlICpyb290LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmc3ltYm9sTmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRCYXNpY1R5cGUgYmFzaWNUeXBlKTsKKworI2VuZGlm
IC8vIFRFU1RTX1RFU1RfVVRJTFNfQ09NUElMRVJfVEVTVF9IXwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvZ2xfcmFpaS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2dsX3JhaWkuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91
dGlscy9nbF9yYWlpLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NSBAQAorLy8KKy8vIENv
cHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisvLyBnbF9yYWlpOgorLy8gICBIZWxwZXIgbWV0aG9kcyBmb3IgY29udGFpbmluZyBHTCBv
YmplY3RzIGxpa2UgYnVmZmVycyBhbmQgdGV4dHVyZXMuCisKKyNpZm5kZWYgQU5HTEVfVEVTVFNf
R0xfUkFJSV9IXworI2RlZmluZSBBTkdMRV9URVNUU19HTF9SQUlJX0hfCisKKyNpbmNsdWRlIDxm
dW5jdGlvbmFsPgorCisjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKKworbmFtZXNwYWNlIGFuZ2xlCit7
CisKKy8vIFRoaXMgaXMgYSBiaXQgb2YgaGFjayB0byB3b3JrIGFyb3VuZCBhIGJ1ZyBpbiBNU1ZT
IGludGVsbGlzZW5zZSwgYW5kIG1ha2UgaXQgdmVyeSBlYXN5IHRvCisvLyB1c2UgdGhlIGNvcnJl
Y3QgZnVuY3Rpb24gcG9pbnRlciB0eXBlIHdpdGhvdXQgd29ycnlpbmcgYWJvdXQgdGhlIHZhcmlv
dXMgZGVmaW5pdGlvbnMgb2YKKy8vIEdMX0FQSUNBTEwuCit1c2luZyBHTEdlbiAgICA9IGRlY2x0
eXBlKGdsR2VuQnVmZmVycyk7Cit1c2luZyBHTERlbGV0ZSA9IGRlY2x0eXBlKGdsRGVsZXRlQnVm
ZmVycyk7CisKK3RlbXBsYXRlIDxHTEdlbiBHZW5GLCBHTERlbGV0ZSBEZWxldGVGPgorY2xhc3Mg
R0xXcmFwcGVyCit7CisgIHB1YmxpYzoKKyAgICBHTFdyYXBwZXIoKSB7fQorICAgIH5HTFdyYXBw
ZXIoKSB7IERlbGV0ZUYoMSwgJm1IYW5kbGUpOyB9CisKKyAgICBHTHVpbnQgZ2V0KCkKKyAgICB7
CisgICAgICAgIGlmICghbUhhbmRsZSkKKyAgICAgICAgeworICAgICAgICAgICAgR2VuRigxLCAm
bUhhbmRsZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1IYW5kbGU7CisgICAgfQorCisg
IHByaXZhdGU6CisgICAgR0x1aW50IG1IYW5kbGUgPSAwOworfTsKKwordXNpbmcgR0xCdWZmZXIg
ICAgICAgPSBHTFdyYXBwZXI8Z2xHZW5CdWZmZXJzLCBnbERlbGV0ZUJ1ZmZlcnM+OwordXNpbmcg
R0xUZXh0dXJlICAgICAgPSBHTFdyYXBwZXI8Z2xHZW5UZXh0dXJlcywgZ2xEZWxldGVUZXh0dXJl
cz47Cit1c2luZyBHTEZyYW1lYnVmZmVyICA9IEdMV3JhcHBlcjxnbEdlbkZyYW1lYnVmZmVycywg
Z2xEZWxldGVGcmFtZWJ1ZmZlcnM+OwordXNpbmcgR0xSZW5kZXJidWZmZXIgPSBHTFdyYXBwZXI8
Z2xHZW5SZW5kZXJidWZmZXJzLCBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnM+OworCitjbGFzcyBHTFBy
b2dyYW0KK3sKKyAgcHVibGljOgorICAgIEdMUHJvZ3JhbShjb25zdCBzdGQ6OnN0cmluZyAmdmVy
dGV4U2hhZGVyLCBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ21lbnRTaGFkZXIpCisgICAgICAgIDog
bUhhbmRsZSgwKSwgbVZlcnRleFNoYWRlcih2ZXJ0ZXhTaGFkZXIpLCBtRnJhZ21lbnRTaGFkZXIo
ZnJhZ21lbnRTaGFkZXIpCisgICAgeworICAgIH0KKworICAgIEdMUHJvZ3JhbShjb25zdCBzdGQ6
OnN0cmluZyAmY29tcHV0ZVNoYWRlcikgOiBtSGFuZGxlKDApLCBtQ29tcHV0ZVNoYWRlcihjb21w
dXRlU2hhZGVyKSB7fQorCisgICAgfkdMUHJvZ3JhbSgpIHsgZ2xEZWxldGVQcm9ncmFtKG1IYW5k
bGUpOyB9CisKKyAgICBHTHVpbnQgZ2V0KCkKKyAgICB7CisgICAgICAgIGlmIChtSGFuZGxlID09
IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbUNvbXB1dGVTaGFkZXIuZW1wdHkoKSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtSGFuZGxlID0gQ29tcGlsZUNvbXB1dGVQ
cm9ncmFtKG1Db21wdXRlU2hhZGVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtSGFuZGxlID0gQ29tcGlsZVByb2dyYW0o
bVZlcnRleFNoYWRlciwgbUZyYWdtZW50U2hhZGVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gbUhhbmRsZTsKKyAgICB9CisKKyAgcHJpdmF0ZToKKyAgICBHTHVp
bnQgbUhhbmRsZTsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBtVmVydGV4U2hhZGVyOworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nIG1GcmFnbWVudFNoYWRlcjsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBt
Q29tcHV0ZVNoYWRlcjsKK307CisKKyNkZWZpbmUgQU5HTEVfR0xfUFJPR1JBTShuYW1lLCB2ZXJ0
ZXgsIGZyYWdtZW50KSBcCisgICAgR0xQcm9ncmFtIG5hbWUodmVydGV4LCBmcmFnbWVudCk7ICAg
ICAgICAgICAgXAorICAgIEFTU0VSVF9ORSgwdSwgbmFtZS5nZXQoKSk7CisKKyNkZWZpbmUgQU5H
TEVfR0xfQ09NUFVURV9QUk9HUkFNKG5hbWUsIGNvbXB1dGUpIFwKKyAgICBHTFByb2dyYW0gbmFt
ZShjb21wdXRlKTsgICAgICAgICAgICAgICAgICAgIFwKKyAgICBBU1NFUlRfTkUoMHUsIG5hbWUu
Z2V0KCkpOworCit9ICAvLyBuYW1lc3BhY2UgYW5nbGUKKworI2VuZGlmICAvLyBBTkdMRV9URVNU
U19HTF9SQUlJX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhp
cmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL0hvd1RvTWFrZUNoYW5nZXMubWQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L2dw
dV90ZXN0X2V4cGVjdGF0aW9ucy9Ib3dUb01ha2VDaGFuZ2VzLm1kCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9ncHVfdGVzdF9l
eHBlY3RhdGlvbnMvSG93VG9NYWtlQ2hhbmdlcy5tZAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDIyIEBACitCZWNhdXNlIHRoZSBgYGBncHVfdGVzdF9leHBlY3RhdGlvbnNgYGAgZGlyZWN0b3J5
IGlzIGJhc2VkIG9uIHBhcnRzIG9mIENocm9taXVtJ3MgYGBgZ3B1L2NvbmZpZ2BgYAorZGlyZWN0
b3J5LCB3ZSB3YW50IHRvIGtlZXAgYSBwYXRjaCBvZiB0aGUgY2hhbmdlcyBhZGRlZCB0byBtYWtl
IGl0IGNvbXBpbGUgd2l0aCBBTkdMRS4gVGhpcword2lsbCBhbGxvdyB1cyB0byBtZXJnZSBDaHJv
bWl1bSBjaGFuZ2VzIGVhc2lseSBpbiBvdXIgYGBgZ3B1X3Rlc3RfZXhwZWN0YXRpb25zYGBgLgor
CitJbiBvcmRlciB0byBtYWtlIGEgY2hhbmdlIHRvIHRoaXMgZGlyZWN0b3J5LCBkbyB0aGUgZm9s
bG93aW5nOgorCisgKiBjb3B5IHRoZSBkaXJlY3Rvcnkgc29tZXdoZXJlIGxpa2UgaW4gYGBgZ3B1
X3Rlc3RfZXhwZWN0YXRpb25zX3JldmVydGVkYGBgCisgKiBpbiBgYGBncHVfdGVzdF9leHBlY3Rh
dGlvbnNfcmV2ZXJ0ZWRgYGAgcnVuIGBgYHBhdGNoIC1wIDEgLVIgPCBhbmdsZS1tb2RzLnBhdGNo
YGBgCisgKiBkbyB5b3VyIGNoYW5nZXMgaW4gYGBgZ3B1X3Rlc3RfZXhwZWN0YXRpb25zYGBgCisg
KiBkZWxldGUgYW5nbGUtbW9kcy5wYXRjaCBpbiBib3RoIGRpcmVjdG9yaWVzCisgKiBydW4gYGBg
ZGlmZiAtcnVwTiBncHVfdGVzdF9leHBlY3RhdGlvbnNfcmV2ZXJ0ZWQgZ3B1X3Rlc3RfZXhwZWN0
YXRpb25zID4gYW5nbGUtbW9kcy5wYXRjaGBgYAorICogY29weSBgYGBhbmdsZS1tb2RzLnBhdGNo
YGBgIGluIGBgYGdwdV90ZXN0X2V4cGVjdGF0aW9uc2BgYAorCitIb3cgdG8gdXBkYXRlIGZyb20g
Q2hyb21pdW06CisKKyAqIGBgYGdpdCBhcHBseSAtUiBhbmdsZS1tb2RzLnBhdGNoYGBgLCBgYGBn
aXQgYWRkIC4gLXVgYGAsIGBgYGdpdCBjb21taXRgYGAKKyAqIENvcHkgb3ZlciBDaHJvbWl1bSBm
aWxlcywgYGBgZ2l0IGFkZCAuIC11YGBgLCBgYGBnaXQgY29tbWl0YGBgCisgKiBgYGBnaXQgcmV2
ZXJ0IEhFQUR+YGBgCisgKiBgYGBybSBhbmdsZS1tb2RzLnBhdGNoYGBgCisgKiBgYGBnaXQgZGlm
ZiBIRUFEfiAoYClscyhgKSA+IGFuZ2xlLW1vZHMucGF0Y2hgYGAsYGBgZ2l0IGFkZCBhbmdsZS1t
b2RzLnBhdGNoYGBgLCBgYGBnaXQgY29tbWl0IC0tYW1lbmRgYGAKKyAqIGBgYGdpdCByZWJhc2Ug
LWlgYGAgdG8gc3F1YXNoIHRoZSB0aHJlZSBwYXRjaGVzIGludG8gb25lLgorCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0
YXRpb25zL2FuZ2xlLW1vZHMucGF0Y2gKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9hbmdsZS1t
b2RzLnBhdGNoCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy90aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBlY3RhdGlvbnMvYW5nbGUtbW9kcy5wYXRjaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg2OCBAQAorZGlmZiAtcnVwTiBncHVfdGVzdF9leHBl
Y3RhdGlvbnNfcmV2ZXJ0ZWQvYW5nbGVfY29uZmlnLmggZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2Fu
Z2xlX2NvbmZpZy5oCistLS0gZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3JldmVydGVkL2FuZ2xlX2Nv
bmZpZy5oCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCisrKysgZ3B1X3Rlc3Rf
ZXhwZWN0YXRpb25zL2FuZ2xlX2NvbmZpZy5oCTIwMTYtMDgtMjMgMTM6NTA6MTguMjgyNzQyNTA1
IC0wNDAwCitAQCAtMCwwICsxLDY2IEBACisrLy8KKysvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKysvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorKy8vCisrLy8gYW5nbGVfY29uZmln
Lmg6CisrLy8gICBIZWxwZXJzIGZvciBpbXBvcnRpbmcgdGhlIGdwdSB0ZXN0IGV4cGVjdGF0aW9u
cyBwYWNrYWdlIGZyb20gQ2hyb21lLgorKy8vCisrCisrI2lmbmRlZiBHUFVfVEVTVF9FWFBFQ1RB
VElPTlNfQU5HTEVfQ09ORklHX0hfCisrI2RlZmluZSBHUFVfVEVTVF9FWFBFQ1RBVElPTlNfQU5H
TEVfQ09ORklHX0hfCisrCisrI2luY2x1ZGUgPHN0ZGludC5oPgorKworKyNpbmNsdWRlIDxpb3N0
cmVhbT4KKysKKysjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisrI2luY2x1ZGUgImNvbW1vbi9z
dHJpbmdfdXRpbHMuaCIKKysKKysjZGVmaW5lIERDSEVDS19FUShBLEIpIEFTU0VSVCgoQSkgPT0g
KEIpKQorKyNkZWZpbmUgRENIRUNLX05FKEEsQikgQVNTRVJUKChBKSAhPSAoQikpCisrI2RlZmlu
ZSBEQ0hFQ0soWCkgQVNTRVJUKFgpCisrI2RlZmluZSBMT0coWCkgc3RkOjpjZXJyCisrCisrI2Rl
ZmluZSBHUFVfRVhQT1JUCisrCisrdHlwZWRlZiBpbnQzMl90IGludDMyOworK3R5cGVkZWYgdWlu
dDMyX3QgdWludDMyOworK3R5cGVkZWYgaW50NjRfdCBpbnQ2NDsKKyt0eXBlZGVmIHVpbnQ2NF90
IHVpbnQ2NDsKKysKKysvLyBTaGltIENocm9taXVtJ3MgYmFzZSBieSBpbXBvcnRpbmcgZnVuY3Rp
b25zIGluIHRoZSBiYXNlIG5hbWVzcGFjZS4KKytuYW1lc3BhY2UgYmFzZQorK3sKKysgICAgdXNp
bmcgYW5nbGU6OmtXaGl0ZXNwYWNlQVNDSUk7CisrICAgIHVzaW5nIGFuZ2xlOjpUUklNX1dISVRF
U1BBQ0U7CisrICAgIHVzaW5nIGFuZ2xlOjpLRUVQX1dISVRFU1BBQ0U7CisrICAgIHVzaW5nIGFu
Z2xlOjpTUExJVF9XQU5UX0FMTDsKKysgICAgdXNpbmcgYW5nbGU6OlNQTElUX1dBTlRfTk9ORU1Q
VFk7CisrICAgIHVzaW5nIGFuZ2xlOjpTcGxpdFN0cmluZzsKKysgICAgdXNpbmcgYW5nbGU6OlNw
bGl0U3RyaW5nQWxvbmdXaGl0ZXNwYWNlOworKyAgICB1c2luZyBhbmdsZTo6SGV4U3RyaW5nVG9V
SW50OworKyAgICB1c2luZyBhbmdsZTo6UmVhZEZpbGVUb1N0cmluZzsKKysKKysgICAgLy8gU3Ry
aW5nUHJpbnRmIGlzIGNhbGxlZCBkaWZmZXJlbnRseSBpbiBBTkdMRSBidXQgdXNpbmcgY2Fubm90
IGNoYW5nZQorKyAgICAvLyB0aGUgbmFtZSBvZiB0aGUgaW1wb3J0ZWQgZnVuY3Rpb24uIFVzZSBh
IGRlZmluZSB0byBjaGFuZ2UgdGhlIG5hbWUuCisrICAgIHVzaW5nIDo6Rm9ybWF0U3RyaW5nOwor
KyAgICAjZGVmaW5lIFN0cmluZ1ByaW50ZiBGb3JtYXRTdHJpbmcKKyt9CisrCisrLy8gVE9ETyhq
bWFkaWxsKTogb3RoZXIgcGxhdGZvcm1zCisrLy8gY2xhbmctZm9ybWF0IG9mZgorKyNpZiBkZWZp
bmVkKF9XSU4zMikgfHwgZGVmaW5lZChfV0lONjQpCisrIyAgICBkZWZpbmUgT1NfV0lOCisrI2Vs
aWYgZGVmaW5lZChBTkRST0lEKQorKyMgICAgZGVmaW5lIE9TX0FORFJPSUQKKysjZWxpZiBkZWZp
bmVkKF9fbGludXhfXykKKysjICAgIGRlZmluZSBPU19MSU5VWAorKyNlbGlmIGRlZmluZWQoX19B
UFBMRV9fKQorKyMgICAgZGVmaW5lIE9TX01BQ09TWAorKyNlbHNlCisrIyAgICBlcnJvciAiVW5z
dXBwb3J0ZWQgcGxhdGZvcm0iCisrI2VuZGlmCisrLy8gY2xhbmctZm9ybWF0IG9uCisrCisrI2Vu
ZGlmCitkaWZmIC1ydXBOIGdwdV90ZXN0X2V4cGVjdGF0aW9uc19yZXZlcnRlZC9ncHVfaW5mby5j
YyBncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X2luZm8uY2MKKy0tLSBncHVfdGVzdF9leHBlY3Rh
dGlvbnNfcmV2ZXJ0ZWQvZ3B1X2luZm8uY2MJMjAxNi0wOC0xMiAyMToyMzo1NC44ODQxMzI0MDUg
LTA0MDAKKysrKyBncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X2luZm8uY2MJMjAxNS0xMS0zMCAy
MTo1NDozMC4yMzkyNjc2MzUgLTA1MDAKK0BAIC0yLDcgKzIsNyBAQAorIC8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKyAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLSNpbmNsdWRlICJncHUvY29u
ZmlnL2dwdV9pbmZvLmgiCisrI2luY2x1ZGUgImdwdV9pbmZvLmgiCisgCisgbmFtZXNwYWNlIHsK
KyAKK0BAIC0xNywzMSArMTcsNiBAQCB2b2lkIEVudW1lcmF0ZUdQVURldmljZShjb25zdCBncHU6
OkdQVUluCisgICBlbnVtZXJhdG9yLT5FbmRHUFVEZXZpY2UoKTsKKyB9CisgCistdm9pZCBFbnVt
ZXJhdGVWaWRlb0RlY29kZUFjY2VsZXJhdG9yU3VwcG9ydGVkUHJvZmlsZSgKKy0gICAgY29uc3Qg
Z3B1OjpWaWRlb0RlY29kZUFjY2VsZXJhdG9yU3VwcG9ydGVkUHJvZmlsZSYgcHJvZmlsZSwKKy0g
ICAgZ3B1OjpHUFVJbmZvOjpFbnVtZXJhdG9yKiBlbnVtZXJhdG9yKSB7CistICBlbnVtZXJhdG9y
LT5CZWdpblZpZGVvRGVjb2RlQWNjZWxlcmF0b3JTdXBwb3J0ZWRQcm9maWxlKCk7CistICBlbnVt
ZXJhdG9yLT5BZGRJbnQoInByb2ZpbGUiLCBwcm9maWxlLnByb2ZpbGUpOworLSAgZW51bWVyYXRv
ci0+QWRkSW50KCJtYXhSZXNvbHV0aW9uV2lkdGgiLCBwcm9maWxlLm1heF9yZXNvbHV0aW9uLndp
ZHRoKCkpOworLSAgZW51bWVyYXRvci0+QWRkSW50KCJtYXhSZXNvbHV0aW9uSGVpZ2h0IiwgcHJv
ZmlsZS5tYXhfcmVzb2x1dGlvbi5oZWlnaHQoKSk7CistICBlbnVtZXJhdG9yLT5BZGRJbnQoIm1p
blJlc29sdXRpb25XaWR0aCIsIHByb2ZpbGUubWluX3Jlc29sdXRpb24ud2lkdGgoKSk7CistICBl
bnVtZXJhdG9yLT5BZGRJbnQoIm1pblJlc29sdXRpb25IZWlnaHQiLCBwcm9maWxlLm1pbl9yZXNv
bHV0aW9uLmhlaWdodCgpKTsKKy0gIGVudW1lcmF0b3ItPkVuZFZpZGVvRGVjb2RlQWNjZWxlcmF0
b3JTdXBwb3J0ZWRQcm9maWxlKCk7CistfQorLQorLXZvaWQgRW51bWVyYXRlVmlkZW9FbmNvZGVB
Y2NlbGVyYXRvclN1cHBvcnRlZFByb2ZpbGUoCistICAgIGNvbnN0IGdwdTo6VmlkZW9FbmNvZGVB
Y2NlbGVyYXRvclN1cHBvcnRlZFByb2ZpbGUmIHByb2ZpbGUsCistICAgIGdwdTo6R1BVSW5mbzo6
RW51bWVyYXRvciogZW51bWVyYXRvcikgeworLSAgZW51bWVyYXRvci0+QmVnaW5WaWRlb0VuY29k
ZUFjY2VsZXJhdG9yU3VwcG9ydGVkUHJvZmlsZSgpOworLSAgZW51bWVyYXRvci0+QWRkSW50KCJw
cm9maWxlIiwgcHJvZmlsZS5wcm9maWxlKTsKKy0gIGVudW1lcmF0b3ItPkFkZEludCgibWF4UmVz
b2x1dGlvbldpZHRoIiwgcHJvZmlsZS5tYXhfcmVzb2x1dGlvbi53aWR0aCgpKTsKKy0gIGVudW1l
cmF0b3ItPkFkZEludCgibWF4UmVzb2x1dGlvbkhlaWdodCIsIHByb2ZpbGUubWF4X3Jlc29sdXRp
b24uaGVpZ2h0KCkpOworLSAgZW51bWVyYXRvci0+QWRkSW50KCJtYXhGcmFtZXJhdGVOdW1lcmF0
b3IiLCBwcm9maWxlLm1heF9mcmFtZXJhdGVfbnVtZXJhdG9yKTsKKy0gIGVudW1lcmF0b3ItPkFk
ZEludCgibWF4RnJhbWVyYXRlRGVub21pbmF0b3IiLAorLSAgICAgICAgICAgICAgICAgICAgIHBy
b2ZpbGUubWF4X2ZyYW1lcmF0ZV9kZW5vbWluYXRvcik7CistICBlbnVtZXJhdG9yLT5FbmRWaWRl
b0VuY29kZUFjY2VsZXJhdG9yU3VwcG9ydGVkUHJvZmlsZSgpOworLX0KKy0KKyB9ICAvLyBuYW1l
c3BhY2UKKyAKKyBuYW1lc3BhY2UgZ3B1IHsKK0BAIC02OCw5ICs0Myw2IEBAIEdQVUluZm86OkdQ
VUluZm8oKQorICAgICAgIGluX3Byb2Nlc3NfZ3B1KHRydWUpLAorICAgICAgIGJhc2ljX2luZm9f
c3RhdGUoa0NvbGxlY3RJbmZvTm9uZSksCisgICAgICAgY29udGV4dF9pbmZvX3N0YXRlKGtDb2xs
ZWN0SW5mb05vbmUpLAorLSNpZiBkZWZpbmVkKE9TX1dJTikKKy0gICAgICBkeF9kaWFnbm9zdGlj
c19pbmZvX3N0YXRlKGtDb2xsZWN0SW5mb05vbmUpLAorLSNlbmRpZgorICAgICAgIGpwZWdfZGVj
b2RlX2FjY2VsZXJhdG9yX3N1cHBvcnRlZChmYWxzZSkgeworIH0KKyAKK0BAIC03OCwxMSArNTAs
OSBAQCBHUFVJbmZvOjp+R1BVSW5mbygpIHsgfQorIAorIHZvaWQgR1BVSW5mbzo6RW51bWVyYXRl
RmllbGRzKEVudW1lcmF0b3IqIGVudW1lcmF0b3IpIGNvbnN0IHsKKyAgIHN0cnVjdCBHUFVJbmZv
S25vd25GaWVsZHMgeworLSAgICBiYXNlOjpUaW1lRGVsdGEgaW5pdGlhbGl6YXRpb25fdGltZTsK
KyAgICAgYm9vbCBvcHRpbXVzOworICAgICBib29sIGFtZF9zd2l0Y2hhYmxlOworICAgICBib29s
IGxlbm92b19kY3V0ZTsKKy0gICAgVmVyc2lvbiBkaXNwbGF5X2xpbmtfdmVyc2lvbjsKKyAgICAg
R1BVRGV2aWNlIGdwdTsKKyAgICAgc3RkOjp2ZWN0b3I8R1BVRGV2aWNlPiBzZWNvbmRhcnlfZ3B1
czsKKyAgICAgdWludDY0IGFkYXB0ZXJfbHVpZDsKK0BAIC0xMTAsMTQgKzgwLDYgQEAgdm9pZCBH
UFVJbmZvOjpFbnVtZXJhdGVGaWVsZHMoRW51bWVyYXRvcgorICAgICBib29sIGluX3Byb2Nlc3Nf
Z3B1OworICAgICBDb2xsZWN0SW5mb1Jlc3VsdCBiYXNpY19pbmZvX3N0YXRlOworICAgICBDb2xs
ZWN0SW5mb1Jlc3VsdCBjb250ZXh0X2luZm9fc3RhdGU7CistI2lmIGRlZmluZWQoT1NfV0lOKQor
LSAgICBDb2xsZWN0SW5mb1Jlc3VsdCBkeF9kaWFnbm9zdGljc19pbmZvX3N0YXRlOworLSAgICBE
eERpYWdOb2RlIGR4X2RpYWdub3N0aWNzOworLSNlbmRpZgorLSAgICBWaWRlb0RlY29kZUFjY2Vs
ZXJhdG9yU3VwcG9ydGVkUHJvZmlsZXMKKy0gICAgICAgIHZpZGVvX2RlY29kZV9hY2NlbGVyYXRv
cl9zdXBwb3J0ZWRfcHJvZmlsZXM7CistICAgIFZpZGVvRW5jb2RlQWNjZWxlcmF0b3JTdXBwb3J0
ZWRQcm9maWxlcworLSAgICAgICAgdmlkZW9fZW5jb2RlX2FjY2VsZXJhdG9yX3N1cHBvcnRlZF9w
cm9maWxlczsKKyAgICAgYm9vbCBqcGVnX2RlY29kZV9hY2NlbGVyYXRvcl9zdXBwb3J0ZWQ7Cisg
ICB9OworIAorQEAgLTEzNiwxNSArOTgsOSBAQCB2b2lkIEdQVUluZm86OkVudW1lcmF0ZUZpZWxk
cyhFbnVtZXJhdG9yCisgICAgIEVudW1lcmF0ZUdQVURldmljZShzZWNvbmRhcnlfZ3B1LCBlbnVt
ZXJhdG9yKTsKKyAKKyAgIGVudW1lcmF0b3ItPkJlZ2luQXV4QXR0cmlidXRlcygpOworLSAgZW51
bWVyYXRvci0+QWRkVGltZURlbHRhSW5TZWNvbmRzRigiaW5pdGlhbGl6YXRpb25UaW1lIiwKKy0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb25fdGltZSk7
CisgICBlbnVtZXJhdG9yLT5BZGRCb29sKCJvcHRpbXVzIiwgb3B0aW11cyk7CisgICBlbnVtZXJh
dG9yLT5BZGRCb29sKCJhbWRTd2l0Y2hhYmxlIiwgYW1kX3N3aXRjaGFibGUpOworICAgZW51bWVy
YXRvci0+QWRkQm9vbCgibGVub3ZvRGN1dGUiLCBsZW5vdm9fZGN1dGUpOworLSAgaWYgKGRpc3Bs
YXlfbGlua192ZXJzaW9uLklzVmFsaWQoKSkgeworLSAgICBlbnVtZXJhdG9yLT5BZGRTdHJpbmco
ImRpc3BsYXlMaW5rVmVyc2lvbiIsCistICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5
X2xpbmtfdmVyc2lvbi5HZXRTdHJpbmcoKSk7CistICB9CisgICBlbnVtZXJhdG9yLT5BZGRJbnQ2
NCgiYWRhcHRlckx1aWQiLCBhZGFwdGVyX2x1aWQpOworICAgZW51bWVyYXRvci0+QWRkU3RyaW5n
KCJkcml2ZXJWZW5kb3IiLCBkcml2ZXJfdmVuZG9yKTsKKyAgIGVudW1lcmF0b3ItPkFkZFN0cmlu
ZygiZHJpdmVyVmVyc2lvbiIsIGRyaXZlcl92ZXJzaW9uKTsKK0BAIC0xNzEsMTQgKzEyNyw3IEBA
IHZvaWQgR1BVSW5mbzo6RW51bWVyYXRlRmllbGRzKEVudW1lcmF0b3IKKyAgIGVudW1lcmF0b3It
PkFkZEJvb2woImluUHJvY2Vzc0dwdSIsIGluX3Byb2Nlc3NfZ3B1KTsKKyAgIGVudW1lcmF0b3It
PkFkZEludCgiYmFzaWNJbmZvU3RhdGUiLCBiYXNpY19pbmZvX3N0YXRlKTsKKyAgIGVudW1lcmF0
b3ItPkFkZEludCgiY29udGV4dEluZm9TdGF0ZSIsIGNvbnRleHRfaW5mb19zdGF0ZSk7CistI2lm
IGRlZmluZWQoT1NfV0lOKQorLSAgZW51bWVyYXRvci0+QWRkSW50KCJEeERpYWdub3N0aWNzSW5m
b1N0YXRlIiwgZHhfZGlhZ25vc3RpY3NfaW5mb19zdGF0ZSk7CistI2VuZGlmCisgICAvLyBUT0RP
KGticik6IGFkZCBkeF9kaWFnbm9zdGljcyBvbiBXaW5kb3dzLgorLSAgZm9yIChjb25zdCBhdXRv
JiBwcm9maWxlIDogdmlkZW9fZGVjb2RlX2FjY2VsZXJhdG9yX3N1cHBvcnRlZF9wcm9maWxlcykK
Ky0gICAgRW51bWVyYXRlVmlkZW9EZWNvZGVBY2NlbGVyYXRvclN1cHBvcnRlZFByb2ZpbGUocHJv
ZmlsZSwgZW51bWVyYXRvcik7CistICBmb3IgKGNvbnN0IGF1dG8mIHByb2ZpbGUgOiB2aWRlb19l
bmNvZGVfYWNjZWxlcmF0b3Jfc3VwcG9ydGVkX3Byb2ZpbGVzKQorLSAgICBFbnVtZXJhdGVWaWRl
b0VuY29kZUFjY2VsZXJhdG9yU3VwcG9ydGVkUHJvZmlsZShwcm9maWxlLCBlbnVtZXJhdG9yKTsK
KyAgIGVudW1lcmF0b3ItPkFkZEJvb2woImpwZWdEZWNvZGVBY2NlbGVyYXRvclN1cHBvcnRlZCIs
CisgICAgICAganBlZ19kZWNvZGVfYWNjZWxlcmF0b3Jfc3VwcG9ydGVkKTsKKyAgIGVudW1lcmF0
b3ItPkVuZEF1eEF0dHJpYnV0ZXMoKTsKK2RpZmYgLXJ1cE4gZ3B1X3Rlc3RfZXhwZWN0YXRpb25z
X3JldmVydGVkL2dwdV9pbmZvLmggZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV9pbmZvLmgKKy0t
LSBncHVfdGVzdF9leHBlY3RhdGlvbnNfcmV2ZXJ0ZWQvZ3B1X2luZm8uaAkyMDE2LTA4LTEyIDIx
OjIzOjU0Ljg4NDEzMjQwNSAtMDQwMAorKysrIGdwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfaW5m
by5oCTIwMTUtMTEtMzAgMjE6NTQ6MzAuMjM5MjY3NjM1IC0wNTAwCitAQCAtMTEsMTMgKzExLDcg
QEAKKyAjaW5jbHVkZSA8c3RyaW5nPgorICNpbmNsdWRlIDx2ZWN0b3I+CisgCistI2luY2x1ZGUg
ImJhc2UvYmFzaWN0eXBlcy5oIgorLSNpbmNsdWRlICJiYXNlL3RpbWUvdGltZS5oIgorLSNpbmNs
dWRlICJiYXNlL3ZlcnNpb24uaCIKKy0jaW5jbHVkZSAiYnVpbGQvYnVpbGRfY29uZmlnLmgiCist
I2luY2x1ZGUgImdwdS9jb25maWcvZHhfZGlhZ19ub2RlLmgiCistI2luY2x1ZGUgImdwdS9ncHVf
ZXhwb3J0LmgiCistI2luY2x1ZGUgInVpL2dmeC9nZW9tZXRyeS9zaXplLmgiCisrI2luY2x1ZGUg
ImFuZ2xlX2NvbmZpZy5oIgorIAorIG5hbWVzcGFjZSBncHUgeworIAorQEAgLTU0LDI1ICs0OCw2
IEBAIGVudW0gVmlkZW9Db2RlY1Byb2ZpbGUgeworICAgVklERU9fQ09ERUNfUFJPRklMRV9NQVgg
PSBWUDlQUk9GSUxFX0FOWSwKKyB9OworIAorLS8vIFNwZWNpZmljYXRpb24gb2YgYSBkZWNvZGlu
ZyBwcm9maWxlIHN1cHBvcnRlZCBieSBhIGhhcmR3YXJlIGRlY29kZXIuCistc3RydWN0IEdQVV9F
WFBPUlQgVmlkZW9EZWNvZGVBY2NlbGVyYXRvclN1cHBvcnRlZFByb2ZpbGUgeworLSAgVmlkZW9D
b2RlY1Byb2ZpbGUgcHJvZmlsZTsKKy0gIGdmeDo6U2l6ZSBtYXhfcmVzb2x1dGlvbjsKKy0gIGdm
eDo6U2l6ZSBtaW5fcmVzb2x1dGlvbjsKKy19OworLXVzaW5nIFZpZGVvRGVjb2RlQWNjZWxlcmF0
b3JTdXBwb3J0ZWRQcm9maWxlcyA9CistICAgIHN0ZDo6dmVjdG9yPFZpZGVvRGVjb2RlQWNjZWxl
cmF0b3JTdXBwb3J0ZWRQcm9maWxlPjsKKy0KKy0vLyBTcGVjaWZpY2F0aW9uIG9mIGFuIGVuY29k
aW5nIHByb2ZpbGUgc3VwcG9ydGVkIGJ5IGEgaGFyZHdhcmUgZW5jb2Rlci4KKy1zdHJ1Y3QgR1BV
X0VYUE9SVCBWaWRlb0VuY29kZUFjY2VsZXJhdG9yU3VwcG9ydGVkUHJvZmlsZSB7CistICBWaWRl
b0NvZGVjUHJvZmlsZSBwcm9maWxlOworLSAgZ2Z4OjpTaXplIG1heF9yZXNvbHV0aW9uOworLSAg
dWludDMyIG1heF9mcmFtZXJhdGVfbnVtZXJhdG9yOworLSAgdWludDMyIG1heF9mcmFtZXJhdGVf
ZGVub21pbmF0b3I7CistfTsKKy11c2luZyBWaWRlb0VuY29kZUFjY2VsZXJhdG9yU3VwcG9ydGVk
UHJvZmlsZXMgPQorLSAgICBzdGQ6OnZlY3RvcjxWaWRlb0VuY29kZUFjY2VsZXJhdG9yU3VwcG9y
dGVkUHJvZmlsZT47CistCisgc3RydWN0IEdQVV9FWFBPUlQgR1BVSW5mbyB7CisgICBzdHJ1Y3Qg
R1BVX0VYUE9SVCBHUFVEZXZpY2UgeworICAgICBHUFVEZXZpY2UoKTsKK0BAIC0xMDQsMTAgKzc5
LDYgQEAgc3RydWN0IEdQVV9FWFBPUlQgR1BVSW5mbyB7CisgICAgIHJldHVybiAhY2FuX2xvc2Vf
Y29udGV4dCAmJiAhc29mdHdhcmVfcmVuZGVyaW5nOworICAgfQorIAorLSAgLy8gVGhlIGFtb3Vu
dCBvZiB0aW1lIHRha2VuIHRvIGdldCBmcm9tIHRoZSBwcm9jZXNzIHN0YXJ0aW5nIHRvIHRoZSBt
ZXNzYWdlCistICAvLyBsb29wIGJlaW5nIHB1bXBlZC4KKy0gIGJhc2U6OlRpbWVEZWx0YSBpbml0
aWFsaXphdGlvbl90aW1lOworLQorICAgLy8gQ29tcHV0ZXIgaGFzIE5WSURJQSBPcHRpbXVzCisg
ICBib29sIG9wdGltdXM7CisgCitAQCAtMTE3LDEwICs4OCw2IEBAIHN0cnVjdCBHUFVfRVhQT1JU
IEdQVUluZm8geworICAgLy8gTGVub3ZvIGRDdXRlIGlzIGluc3RhbGxlZC4gaHR0cDovL2NyYnVn
LmNvbS8xODE2NjUuCisgICBib29sIGxlbm92b19kY3V0ZTsKKyAKKy0gIC8vIFZlcnNpb24gb2Yg
RGlzcGxheUxpbmsgZHJpdmVyIGluc3RhbGxlZC4gWmVybyBpZiBub3QgaW5zdGFsbGVkLgorLSAg
Ly8gaHR0cDovL2NyYnVnLmNvbS8xNzc2MTEuCistICBWZXJzaW9uIGRpc3BsYXlfbGlua192ZXJz
aW9uOworLQorICAgLy8gUHJpbWFyeSBHUFUsIGZvciBleG1hcGxlLCB0aGUgZGlzY3JldGUgR1BV
IGluIGEgZHVhbCBHUFUgbWFjaGluZS4KKyAgIEdQVURldmljZSBncHU7CisgCitAQCAtMjEzLDE3
ICsxODAsNyBAQCBzdHJ1Y3QgR1BVX0VYUE9SVCBHUFVJbmZvIHsKKyAgIC8vIGlmIHRoZSBjb2xs
ZWN0aW9uIGZhaWxzIG9yIG5vdC4KKyAgIENvbGxlY3RJbmZvUmVzdWx0IGJhc2ljX2luZm9fc3Rh
dGU7CisgICBDb2xsZWN0SW5mb1Jlc3VsdCBjb250ZXh0X2luZm9fc3RhdGU7CistI2lmIGRlZmlu
ZWQoT1NfV0lOKQorLSAgQ29sbGVjdEluZm9SZXN1bHQgZHhfZGlhZ25vc3RpY3NfaW5mb19zdGF0
ZTsKKyAKKy0gIC8vIFRoZSBpbmZvcm1hdGlvbiByZXR1cm5lZCBieSB0aGUgRGlyZWN0WCBEaWFn
bm9zdGljcyBUb29sLgorLSAgRHhEaWFnTm9kZSBkeF9kaWFnbm9zdGljczsKKy0jZW5kaWYKKy0K
Ky0gIFZpZGVvRGVjb2RlQWNjZWxlcmF0b3JTdXBwb3J0ZWRQcm9maWxlcworLSAgICAgIHZpZGVv
X2RlY29kZV9hY2NlbGVyYXRvcl9zdXBwb3J0ZWRfcHJvZmlsZXM7CistICBWaWRlb0VuY29kZUFj
Y2VsZXJhdG9yU3VwcG9ydGVkUHJvZmlsZXMKKy0gICAgICB2aWRlb19lbmNvZGVfYWNjZWxlcmF0
b3Jfc3VwcG9ydGVkX3Byb2ZpbGVzOworICAgYm9vbCBqcGVnX2RlY29kZV9hY2NlbGVyYXRvcl9z
dXBwb3J0ZWQ7CisgCisgICAvLyBOb3RlOiB3aGVuIGFkZGluZyBuZXcgbWVtYmVycywgcGxlYXNl
IHJlbWVtYmVyIHRvIHVwZGF0ZSBFbnVtZXJhdGVGaWVsZHMKK0BAIC0yNDMsOCArMjAwLDYgQEAg
c3RydWN0IEdQVV9FWFBPUlQgR1BVSW5mbyB7CisgICAgIHZpcnR1YWwgdm9pZCBBZGRJbnQoY29u
c3QgY2hhciogbmFtZSwgaW50IHZhbHVlKSA9IDA7CisgICAgIHZpcnR1YWwgdm9pZCBBZGRTdHJp
bmcoY29uc3QgY2hhciogbmFtZSwgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKSA9IDA7CisgICAg
IHZpcnR1YWwgdm9pZCBBZGRCb29sKGNvbnN0IGNoYXIqIG5hbWUsIGJvb2wgdmFsdWUpID0gMDsK
Ky0gICAgdmlydHVhbCB2b2lkIEFkZFRpbWVEZWx0YUluU2Vjb25kc0YoY29uc3QgY2hhciogbmFt
ZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZTo6
VGltZURlbHRhJiB2YWx1ZSkgPSAwOworIAorICAgICAvLyBNYXJrZXJzIGluZGljYXRpbmcgdGhh
dCBhIEdQVURldmljZSBpcyBiZWluZyBkZXNjcmliZWQuCisgICAgIHZpcnR1YWwgdm9pZCBCZWdp
bkdQVURldmljZSgpID0gMDsKK2RpZmYgLXJ1cE4gZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3JldmVy
dGVkL2dwdV90ZXN0X2NvbmZpZy5jYyBncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X3Rlc3RfY29u
ZmlnLmNjCistLS0gZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3JldmVydGVkL2dwdV90ZXN0X2NvbmZp
Zy5jYwkyMDE2LTA4LTEyIDIxOjIzOjU0Ljg4NDEzMjQwNSAtMDQwMAorKysrIGdwdV90ZXN0X2V4
cGVjdGF0aW9ucy9ncHVfdGVzdF9jb25maWcuY2MJMjAxNi0wOS0wOSAxNjo0MDowNS41OTc4NjQ0
NjUgLTA0MDAKK0BAIC0yLDIwICsyLDIwNSBAQAorIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLSNpbmNsdWRlICJncHUvY29uZmlnL2dwdV90ZXN0
X2NvbmZpZy5oIgorKyNpbmNsdWRlICJncHVfdGVzdF9jb25maWcuaCIKKyAKKy0jaW5jbHVkZSAi
YmFzZS9sb2dnaW5nLmgiCistI2luY2x1ZGUgImJhc2Uvc3lzX2luZm8uaCIKKy0jaW5jbHVkZSAi
Z3B1L2NvbmZpZy9ncHVfaW5mby5oIgorLSNpbmNsdWRlICJncHUvY29uZmlnL2dwdV9pbmZvX2Nv
bGxlY3Rvci5oIgorLSNpbmNsdWRlICJncHUvY29uZmlnL2dwdV90ZXN0X2V4cGVjdGF0aW9uc19w
YXJzZXIuaCIKKysjaW5jbHVkZSAiZ3B1X2luZm8uaCIKKysjaW5jbHVkZSAiZ3B1X3Rlc3RfZXhw
ZWN0YXRpb25zX3BhcnNlci5oIgorKworKyNpZiBkZWZpbmVkKE9TX0xJTlVYKQorK2V4dGVybiAi
QyIgeworKyMgICBpbmNsdWRlIDxwY2kvcGNpLmg+CisrfQorKyNlbmRpZgorIAorICNpZiBkZWZp
bmVkKE9TX01BQ09TWCkKKy0jaW5jbHVkZSAiYmFzZS9tYWMvbWFjX3V0aWwuaCIKKy0jZWxpZiBk
ZWZpbmVkKE9TX1dJTikKKy0jaW5jbHVkZSAiYmFzZS93aW4vd2luZG93c192ZXJzaW9uLmgiCisr
I2luY2x1ZGUgImdwdV90ZXN0X2NvbmZpZ19tYWMuaCIKKysjZW5kaWYKKysKKyt1c2luZyBuYW1l
c3BhY2UgZ3B1OworKworKyNpZiBkZWZpbmVkKE9TX1dJTikKKysKKytuYW1lc3BhY2UgYmFzZSB7
CisrCisrbmFtZXNwYWNlIHsKKysKKysvLyBEaXNhYmxlIHRoZSBkZXByZWNhdGVkIGZ1bmN0aW9u
IHdhcm5pbmcgZm9yIEdldFZlcnNpb25FeAorKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0OTk2
KQorKworK2NsYXNzIFN5c0luZm8KKyt7CisrICBwdWJsaWM6CisrICAgIHN0YXRpYyB2b2lkIE9w
ZXJhdGluZ1N5c3RlbVZlcnNpb25OdW1iZXJzKAorKyAgICAgICAgaW50MzIgKm1ham9yX3ZlcnNp
b24sIGludDMyICptaW5vcl92ZXJzaW9uLCBpbnQzMiAqYnVnZml4X3ZlcnNpb24pOworK307Cisr
CisrLy8gc3RhdGljCisrdm9pZCBTeXNJbmZvOjpPcGVyYXRpbmdTeXN0ZW1WZXJzaW9uTnVtYmVy
cygKKysgICAgaW50MzIgKm1ham9yX3ZlcnNpb24sIGludDMyICptaW5vcl92ZXJzaW9uLCBpbnQz
MiAqYnVnZml4X3ZlcnNpb24pCisreworKyAgT1NWRVJTSU9OSU5GT0VYIHZlcnNpb25faW5mbyA9
IHsgc2l6ZW9mIHZlcnNpb25faW5mbyB9OworKyAgOjpHZXRWZXJzaW9uRXgocmVpbnRlcnByZXRf
Y2FzdDxPU1ZFUlNJT05JTkZPKj4oJnZlcnNpb25faW5mbykpOworKyAgKm1ham9yX3ZlcnNpb24g
PSB2ZXJzaW9uX2luZm8uZHdNYWpvclZlcnNpb247CisrICAqbWlub3JfdmVyc2lvbiA9IHZlcnNp
b25faW5mby5kd01pbm9yVmVyc2lvbjsKKysgICpidWdmaXhfdmVyc2lvbiA9IHZlcnNpb25faW5m
by5kd0J1aWxkTnVtYmVyOworK30KKysKKyt9IC8vIGFub255bW91cyBuYW1lc3BhY2UKKysKKyt9
IC8vIG5hbWVzcGFjZSBiYXNlCisrCisrdm9pZCBEZXZpY2VJRFRvVmVuZG9yQW5kRGV2aWNlKGNv
bnN0IHN0ZDo6c3RyaW5nJiBpZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDMyKiB2ZW5kb3JfaWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMiog
ZGV2aWNlX2lkKSB7CisrICAqdmVuZG9yX2lkID0gMDsKKysgICpkZXZpY2VfaWQgPSAwOworKyAg
aWYgKGlkLmxlbmd0aCgpIDwgMjEpCisrICAgIHJldHVybjsKKysgIHN0ZDo6c3RyaW5nIHZlbmRv
cl9pZF9zdHJpbmcgPSBpZC5zdWJzdHIoOCwgNCk7CisrICBzdGQ6OnN0cmluZyBkZXZpY2VfaWRf
c3RyaW5nID0gaWQuc3Vic3RyKDE3LCA0KTsKKysgIGJhc2U6OkhleFN0cmluZ1RvVUludCh2ZW5k
b3JfaWRfc3RyaW5nLCB2ZW5kb3JfaWQpOworKyAgYmFzZTo6SGV4U3RyaW5nVG9VSW50KGRldmlj
ZV9pZF9zdHJpbmcsIGRldmljZV9pZCk7CisrfQorKworK0NvbGxlY3RJbmZvUmVzdWx0IENvbGxl
Y3RHcHVJRCh1aW50MzIqIHZlbmRvcl9pZCwgdWludDMyKiBkZXZpY2VfaWQpIHsKKysgIERDSEVD
Syh2ZW5kb3JfaWQgJiYgZGV2aWNlX2lkKTsKKysgICp2ZW5kb3JfaWQgPSAwOworKyAgKmRldmlj
ZV9pZCA9IDA7CisrCisrICAvLyBUYWtlbiBmcm9tIGh0dHA6Ly9kZXZlbG9wZXIubnZpZGlhLmNv
bS9vYmplY3QvZGV2aWNlX2lkcy5odG1sCisrICBESVNQTEFZX0RFVklDRUEgZGQ7CisrICBkZC5j
YiA9IHNpemVvZihESVNQTEFZX0RFVklDRUEpOworKyAgc3RkOjpzdHJpbmcgaWQ7CisrICBmb3Ig
KGludCBpID0gMDsgRW51bURpc3BsYXlEZXZpY2VzQShOVUxMLCBpLCAmZGQsIDApOyArK2kpIHsK
KysgICAgaWYgKGRkLlN0YXRlRmxhZ3MgJiBESVNQTEFZX0RFVklDRV9QUklNQVJZX0RFVklDRSkg
eworKyAgICAgIGlkID0gZGQuRGV2aWNlSUQ7CisrICAgICAgYnJlYWs7CisrICAgIH0KKysgIH0K
KysKKysgIGlmIChpZC5sZW5ndGgoKSA+IDIwKSB7CisrICAgIERldmljZUlEVG9WZW5kb3JBbmRE
ZXZpY2UoaWQsIHZlbmRvcl9pZCwgZGV2aWNlX2lkKTsKKysgICAgaWYgKCp2ZW5kb3JfaWQgIT0g
MCAmJiAqZGV2aWNlX2lkICE9IDApCisrICAgICAgcmV0dXJuIGtDb2xsZWN0SW5mb1N1Y2Nlc3M7
CisrICB9CisrICByZXR1cm4ga0NvbGxlY3RJbmZvTm9uRmF0YWxGYWlsdXJlOworK30KKysKKysj
ZW5kaWYgLy8gZGVmaW5lZChPU19XSU4pCisrCisrI2lmIGRlZmluZWQoT1NfTElOVVgpCisrCisr
Y29uc3QgdWludDMyIGtWZW5kb3JJREludGVsID0gMHg4MDg2OworK2NvbnN0IHVpbnQzMiBrVmVu
ZG9ySUROVmlkaWEgPSAweDEwZGU7CisrY29uc3QgdWludDMyIGtWZW5kb3JJREFNRCA9IDB4MTAw
MjsKKysKKytDb2xsZWN0SW5mb1Jlc3VsdCBDb2xsZWN0UENJVmlkZW9DYXJkSW5mbyhHUFVJbmZv
KiBncHVfaW5mbykgeworKyAgRENIRUNLKGdwdV9pbmZvKTsKKysKKysgIHN0cnVjdCBwY2lfYWNj
ZXNzKiBhY2Nlc3MgPSBwY2lfYWxsb2MoKTsKKysgIERDSEVDSyhhY2Nlc3MgIT0gTlVMTCk7Cisr
ICBwY2lfaW5pdChhY2Nlc3MpOworKyAgcGNpX3NjYW5fYnVzKGFjY2Vzcyk7CisrCisrICBib29s
IHByaW1hcnlfZ3B1X2lkZW50aWZpZWQgPSBmYWxzZTsKKysgIGZvciAocGNpX2RldiogZGV2aWNl
ID0gYWNjZXNzLT5kZXZpY2VzOworKyAgICAgICBkZXZpY2UgIT0gTlVMTDsgZGV2aWNlID0gZGV2
aWNlLT5uZXh0KSB7CisrICAgIHBjaV9maWxsX2luZm8oZGV2aWNlLCAzMyk7CisrICAgIGJvb2wg
aXNfZ3B1ID0gZmFsc2U7CisrICAgIHN3aXRjaCAoZGV2aWNlLT5kZXZpY2VfY2xhc3MpIHsKKysg
ICAgICBjYXNlIFBDSV9DTEFTU19ESVNQTEFZX1ZHQToKKysgICAgICBjYXNlIFBDSV9DTEFTU19E
SVNQTEFZX1hHQToKKysgICAgICBjYXNlIFBDSV9DTEFTU19ESVNQTEFZXzNEOgorKyAgICAgICAg
aXNfZ3B1ID0gdHJ1ZTsKKysgICAgICAgIGJyZWFrOworKyAgICAgIGNhc2UgUENJX0NMQVNTX0RJ
U1BMQVlfT1RIRVI6CisrICAgICAgZGVmYXVsdDoKKysgICAgICAgIGJyZWFrOworKyAgICB9Cisr
ICAgIGlmICghaXNfZ3B1KQorKyAgICAgIGNvbnRpbnVlOworKyAgICBpZiAoZGV2aWNlLT52ZW5k
b3JfaWQgPT0gMCB8fCBkZXZpY2UtPmRldmljZV9pZCA9PSAwKQorKyAgICAgIGNvbnRpbnVlOwor
KworKyAgICBHUFVJbmZvOjpHUFVEZXZpY2UgZ3B1OworKyAgICBncHUudmVuZG9yX2lkID0gZGV2
aWNlLT52ZW5kb3JfaWQ7CisrICAgIGdwdS5kZXZpY2VfaWQgPSBkZXZpY2UtPmRldmljZV9pZDsK
KysKKysgICAgaWYgKCFwcmltYXJ5X2dwdV9pZGVudGlmaWVkKSB7CisrICAgICAgcHJpbWFyeV9n
cHVfaWRlbnRpZmllZCA9IHRydWU7CisrICAgICAgZ3B1X2luZm8tPmdwdSA9IGdwdTsKKysgICAg
fSBlbHNlIHsKKysgICAgICAvLyBUT0RPKHptbyk6IGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBHUFVz
LCB3ZSBhc3N1bWUgdGhlIG5vbiBJbnRlbAorKyAgICAgIC8vIG9uZSBpcyBwcmltYXJ5LiBSZXZp
c2l0IHRoaXMgbG9naWMgYmVjYXVzZSB3ZSBhY3R1YWxseSBkb24ndCBrbm93CisrICAgICAgLy8g
d2hpY2ggR1BVIHdlIGFyZSB1c2luZyBhdCB0aGlzIHBvaW50LgorKyAgICAgIGlmIChncHVfaW5m
by0+Z3B1LnZlbmRvcl9pZCA9PSBrVmVuZG9ySURJbnRlbCAmJgorKyAgICAgICAgICBncHUudmVu
ZG9yX2lkICE9IGtWZW5kb3JJREludGVsKSB7CisrICAgICAgICBncHVfaW5mby0+c2Vjb25kYXJ5
X2dwdXMucHVzaF9iYWNrKGdwdV9pbmZvLT5ncHUpOworKyAgICAgICAgZ3B1X2luZm8tPmdwdSA9
IGdwdTsKKysgICAgICB9IGVsc2UgeworKyAgICAgICAgZ3B1X2luZm8tPnNlY29uZGFyeV9ncHVz
LnB1c2hfYmFjayhncHUpOworKyAgICAgIH0KKysgICAgfQorKyAgfQorKworKyAgLy8gRGV0ZWN0
IE9wdGltdXMgb3IgQU1EIFN3aXRjaGFibGUgR1BVLgorKyAgaWYgKGdwdV9pbmZvLT5zZWNvbmRh
cnlfZ3B1cy5zaXplKCkgPT0gMSAmJgorKyAgICAgIGdwdV9pbmZvLT5zZWNvbmRhcnlfZ3B1c1sw
XS52ZW5kb3JfaWQgPT0ga1ZlbmRvcklESW50ZWwpIHsKKysgICAgaWYgKGdwdV9pbmZvLT5ncHUu
dmVuZG9yX2lkID09IGtWZW5kb3JJRE5WaWRpYSkKKysgICAgICBncHVfaW5mby0+b3B0aW11cyA9
IHRydWU7CisrICAgIGlmIChncHVfaW5mby0+Z3B1LnZlbmRvcl9pZCA9PSBrVmVuZG9ySURBTUQp
CisrICAgICAgZ3B1X2luZm8tPmFtZF9zd2l0Y2hhYmxlID0gdHJ1ZTsKKysgIH0KKysKKysgIHBj
aV9jbGVhbnVwKGFjY2Vzcyk7CisrICBpZiAoIXByaW1hcnlfZ3B1X2lkZW50aWZpZWQpCisrICAg
IHJldHVybiBrQ29sbGVjdEluZm9Ob25GYXRhbEZhaWx1cmU7CisrICByZXR1cm4ga0NvbGxlY3RJ
bmZvU3VjY2VzczsKKyt9CisrCisrQ29sbGVjdEluZm9SZXN1bHQgQ29sbGVjdEdwdUlEKHVpbnQz
MiogdmVuZG9yX2lkLCB1aW50MzIqIGRldmljZV9pZCkgeworKyAgRENIRUNLKHZlbmRvcl9pZCAm
JiBkZXZpY2VfaWQpOworKyAgKnZlbmRvcl9pZCA9IDA7CisrICAqZGV2aWNlX2lkID0gMDsKKysK
KysgIEdQVUluZm8gZ3B1X2luZm87CisrICBDb2xsZWN0SW5mb1Jlc3VsdCByZXN1bHQgPSBDb2xs
ZWN0UENJVmlkZW9DYXJkSW5mbygmZ3B1X2luZm8pOworKyAgaWYgKHJlc3VsdCA9PSBrQ29sbGVj
dEluZm9TdWNjZXNzKSB7CisrICAgICp2ZW5kb3JfaWQgPSBncHVfaW5mby5ncHUudmVuZG9yX2lk
OworKyAgICAqZGV2aWNlX2lkID0gZ3B1X2luZm8uZ3B1LmRldmljZV9pZDsKKysgIH0KKysgIHJl
dHVybiByZXN1bHQ7CisrfQorKworKyNlbmRpZiAvLyBkZWZpbmVkKE9TX0xJTlVYKQorKworKyNp
ZiBkZWZpbmVkKE9TX01BQ09TWCkKKysKKytDb2xsZWN0SW5mb1Jlc3VsdCBDb2xsZWN0R3B1SUQo
dWludDMyKiB2ZW5kb3JfaWQsIHVpbnQzMiogZGV2aWNlX2lkKSB7CisrICBEQ0hFQ0sodmVuZG9y
X2lkICYmIGRldmljZV9pZCk7CisrCisrICBHUFVJbmZvOjpHUFVEZXZpY2UgZ3B1ID0gR2V0QWN0
aXZlR1BVKCk7CisrICAqdmVuZG9yX2lkID0gZ3B1LnZlbmRvcl9pZDsKKysgICpkZXZpY2VfaWQg
PSBncHUuZGV2aWNlX2lkOworKworKyAgaWYgKCp2ZW5kb3JfaWQgIT0gMCAmJiAqZGV2aWNlX2lk
ICE9IDApCisrICAgIHJldHVybiBrQ29sbGVjdEluZm9TdWNjZXNzOworKyAgcmV0dXJuIGtDb2xs
ZWN0SW5mb05vbkZhdGFsRmFpbHVyZTsKKyt9CisrCisgI2VuZGlmCisgCisrI2lmIGRlZmluZWQo
T1NfQU5EUk9JRCkKKytDb2xsZWN0SW5mb1Jlc3VsdCBDb2xsZWN0R3B1SUQodWludDMyICp2ZW5k
b3JfaWQsIHVpbnQzMiAqZGV2aWNlX2lkKQorK3sKKysgICAgRENIRUNLKHZlbmRvcl9pZCAmJiBk
ZXZpY2VfaWQpOworKyAgICAqdmVuZG9yX2lkID0gMDsKKysgICAgKmRldmljZV9pZCA9IDA7Cisr
ICAgIHJldHVybiBrQ29sbGVjdEluZm9Ob25GYXRhbEZhaWx1cmU7CisrfQorKyNlbmRpZiAgLy8g
ZGVmaW5lZChPU19BTkRST0lEKQorKworIG5hbWVzcGFjZSBncHUgeworIAorIG5hbWVzcGFjZSB7
CitAQCAtMjQ1LDMzICs0MzAsNDEgQEAgYm9vbCBHUFVUZXN0Qm90Q29uZmlnOjpNYXRjaGVzKGNv
bnN0IHN0ZAorICAgcmV0dXJuIE1hdGNoZXMoY29uZmlnKTsKKyB9CisgCistYm9vbCBHUFVUZXN0
Qm90Q29uZmlnOjpMb2FkQ3VycmVudENvbmZpZyhjb25zdCBHUFVJbmZvKiBncHVfaW5mbykgewor
LSAgYm9vbCBydDsKKy0gIGlmIChncHVfaW5mbyA9PSBOVUxMKSB7CistICAgIEdQVUluZm8gbXlf
Z3B1X2luZm87CistICAgIENvbGxlY3RJbmZvUmVzdWx0IHJlc3VsdCA9IENvbGxlY3RHcHVJRCgK
Ky0gICAgICAgICZteV9ncHVfaW5mby5ncHUudmVuZG9yX2lkLCAmbXlfZ3B1X2luZm8uZ3B1LmRl
dmljZV9pZCk7CistICAgIGlmIChyZXN1bHQgIT0ga0NvbGxlY3RJbmZvU3VjY2VzcykgeworLSAg
ICAgIExPRyhFUlJPUikgPDwgIkZhaWwgdG8gaWRlbnRpZnkgR1BVIjsKKy0gICAgICBEaXNhYmxl
R1BVSW5mb1ZhbGlkYXRpb24oKTsKKy0gICAgICBydCA9IHRydWU7CistICAgIH0gZWxzZSB7Cist
ICAgICAgcnQgPSBTZXRHUFVJbmZvKG15X2dwdV9pbmZvKTsKKytib29sIEdQVVRlc3RCb3RDb25m
aWc6OkxvYWRDdXJyZW50Q29uZmlnKGNvbnN0IEdQVUluZm8gKmdwdV9pbmZvKQorK3sKKysgICAg
Ym9vbCBydDsKKysgICAgaWYgKGdwdV9pbmZvID09IE5VTEwpCisrICAgIHsKKysgICAgICAgIEdQ
VUluZm8gbXlfZ3B1X2luZm87CisrICAgICAgICBDb2xsZWN0SW5mb1Jlc3VsdCByZXN1bHQgPQor
KyAgICAgICAgICAgIENvbGxlY3RHcHVJRCgmbXlfZ3B1X2luZm8uZ3B1LnZlbmRvcl9pZCwgJm15
X2dwdV9pbmZvLmdwdS5kZXZpY2VfaWQpOworKyAgICAgICAgaWYgKHJlc3VsdCAhPSBrQ29sbGVj
dEluZm9TdWNjZXNzKQorKyAgICAgICAgeworKyAgICAgICAgICAgIExPRyhFUlJPUikgPDwgIkZh
aWwgdG8gaWRlbnRpZnkgR1BVXG4iOworKyAgICAgICAgICAgIERpc2FibGVHUFVJbmZvVmFsaWRh
dGlvbigpOworKyAgICAgICAgICAgIHJ0ID0gdHJ1ZTsKKysgICAgICAgIH0KKysgICAgICAgIGVs
c2UKKysgICAgICAgIHsKKysgICAgICAgICAgICBydCA9IFNldEdQVUluZm8obXlfZ3B1X2luZm8p
OworKyAgICAgICAgfQorKyAgICB9CisrICAgIGVsc2UKKysgICAgeworKyAgICAgICAgcnQgPSBT
ZXRHUFVJbmZvKCpncHVfaW5mbyk7CisrICAgIH0KKysgICAgc2V0X29zKEdldEN1cnJlbnRPUygp
KTsKKysgICAgaWYgKG9zKCkgPT0ga09zVW5rbm93bikKKysgICAgeworKyAgICAgICAgTE9HKEVS
Uk9SKSA8PCAiVW5rbm93biBPU1xuIjsKKysgICAgICAgIHJ0ID0gZmFsc2U7CisgICAgIH0KKy0g
IH0gZWxzZSB7CistICAgIHJ0ID0gU2V0R1BVSW5mbygqZ3B1X2luZm8pOworLSAgfQorLSAgc2V0
X29zKEdldEN1cnJlbnRPUygpKTsKKy0gIGlmIChvcygpID09IGtPc1Vua25vd24pIHsKKy0gICAg
TE9HKEVSUk9SKSA8PCAiVW5rbm93biBPUyI7CistICAgIHJ0ID0gZmFsc2U7CistICB9CisgI2lm
IGRlZmluZWQoTkRFQlVHKQorLSAgc2V0X2J1aWxkX3R5cGUoa0J1aWxkVHlwZVJlbGVhc2UpOwor
KyAgICBzZXRfYnVpbGRfdHlwZShrQnVpbGRUeXBlUmVsZWFzZSk7CisgI2Vsc2UKKy0gIHNldF9i
dWlsZF90eXBlKGtCdWlsZFR5cGVEZWJ1Zyk7CisrICAgIHNldF9idWlsZF90eXBlKGtCdWlsZFR5
cGVEZWJ1Zyk7CisgI2VuZGlmCistICByZXR1cm4gcnQ7CisrICAgIHJldHVybiBydDsKKyB9Cisg
CisgLy8gc3RhdGljCitAQCAtMjk1LDIxICs0ODgsNSBAQCBib29sIEdQVVRlc3RCb3RDb25maWc6
OkN1cnJlbnRDb25maWdNYXRjCisgICByZXR1cm4gZmFsc2U7CisgfQorIAorLS8vIHN0YXRpYwor
LWJvb2wgR1BVVGVzdEJvdENvbmZpZzo6R3B1QmxhY2tsaXN0ZWRPbkJvdCgpIHsKKy0jaWYgZGVm
aW5lZChPU19NQUNPU1gpCistICAvLyBCbGFja2xpc3QgcnVsZSAjODEgZGlzYWJsZXMgYWxsIEdw
dSBhY2NlbGVyYXRpb24gb24gTWFjIDwgMTAuOCBib3RzLgorLSAgaWYgKEN1cnJlbnRDb25maWdN
YXRjaGVzKCJNQUMgVk1XQVJFIikgJiYgYmFzZTo6bWFjOjpJc09TTGlvbk9yRWFybGllcigpKSB7
CistICAgIHJldHVybiB0cnVlOworLSAgfQorLSNlbGlmIGRlZmluZWQoT1NfV0lOKQorLSAgLy8g
QmxhY2tsaXN0IHJ1bGUgIzc5IGRpc2FibGVzIGFsbCBHcHUgYWNjZWxlcmF0aW9uIGJlZm9yZSBX
aW5kb3dzIDcuCistICBpZiAoYmFzZTo6d2luOjpHZXRWZXJzaW9uKCkgPD0gYmFzZTo6d2luOjpW
RVJTSU9OX1ZJU1RBKSB7CistICAgIHJldHVybiB0cnVlOworLSAgfQorLSNlbmRpZgorLSAgcmV0
dXJuIGZhbHNlOworLX0KKy0KKyB9ICAvLyBuYW1lc3BhY2UgZ3B1CisgCitkaWZmIC1ydXBOIGdw
dV90ZXN0X2V4cGVjdGF0aW9uc19yZXZlcnRlZC9ncHVfdGVzdF9jb25maWcuaCBncHVfdGVzdF9l
eHBlY3RhdGlvbnMvZ3B1X3Rlc3RfY29uZmlnLmgKKy0tLSBncHVfdGVzdF9leHBlY3RhdGlvbnNf
cmV2ZXJ0ZWQvZ3B1X3Rlc3RfY29uZmlnLmgJMjAxNi0wOC0xMiAyMToyMzo1NC44ODQxMzI0MDUg
LTA0MDAKKysrKyBncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X3Rlc3RfY29uZmlnLmgJMjAxNS0x
MS0zMCAyMTo1NDozMC4yMzkyNjc2MzUgLTA1MDAKK0BAIC04LDkgKzgsNyBAQAorICNpbmNsdWRl
IDxzdHJpbmc+CisgI2luY2x1ZGUgPHZlY3Rvcj4KKyAKKy0jaW5jbHVkZSAiYmFzZS9iYXNpY3R5
cGVzLmgiCistI2luY2x1ZGUgImJhc2UvY29tcGlsZXJfc3BlY2lmaWMuaCIKKy0jaW5jbHVkZSAi
Z3B1L2dwdV9leHBvcnQuaCIKKysjaW5jbHVkZSAiYW5nbGVfY29uZmlnLmgiCisgCisgbmFtZXNw
YWNlIGdwdSB7CisgCitAQCAtMTM0LDkgKzEzMiw2IEBAIGNsYXNzIEdQVV9FWFBPUlQgR1BVVGVz
dEJvdENvbmZpZyA6IHB1YmwKKyAgIC8vIENoZWNrIGlmIHRoaXMgYm90J3MgY29uZmlnIG1hdGNo
ZXMgfGNvbmZpZ19kYXRhfCBvciBhbnkgb2YgdGhlIHxjb25maWdzfC4KKyAgIHN0YXRpYyBib29s
IEN1cnJlbnRDb25maWdNYXRjaGVzKGNvbnN0IHN0ZDo6c3RyaW5nJiBjb25maWdfZGF0YSk7Cisg
ICBzdGF0aWMgYm9vbCBDdXJyZW50Q29uZmlnTWF0Y2hlcyhjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4mIGNvbmZpZ3MpOworLQorLSAgLy8gQ2hlY2sgaWYgdGhlIGJvdCBoYXMgYmxhY2ts
aXN0ZWQgYWxsIEdQVSBmZWF0dXJlcy4KKy0gIHN0YXRpYyBib29sIEdwdUJsYWNrbGlzdGVkT25C
b3QoKTsKKyB9OworIAorIH0gIC8vIG5hbWVzcGFjZSBncHUKK2RpZmYgLXJ1cE4gZ3B1X3Rlc3Rf
ZXhwZWN0YXRpb25zX3JldmVydGVkL2dwdV90ZXN0X2NvbmZpZ19tYWMuaCBncHVfdGVzdF9leHBl
Y3RhdGlvbnMvZ3B1X3Rlc3RfY29uZmlnX21hYy5oCistLS0gZ3B1X3Rlc3RfZXhwZWN0YXRpb25z
X3JldmVydGVkL2dwdV90ZXN0X2NvbmZpZ19tYWMuaAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAw
MDAwMCAtMDUwMAorKysrIGdwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9jb25maWdfbWFj
LmgJMjAxNS0xMS0zMCAyMTo1NDozMC4yMzkyNjc2MzUgLTA1MDAKK0BAIC0wLDAgKzEsMjggQEAK
KysvLworKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisrLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisrLy8KKysvLyBncHVfdGVzdF9jb25maWdfbWFjLmg6CisrLy8gICBIZWxwZXIg
ZnVuY3Rpb25zIGZvciBncHVfdGVzdF9jb25maWcgdGhhdCBoYXZlIHRvIGJlIGNvbXBpbGVkIGlu
IE9iamVjdGl2ZUMrKworKy8vCisrCisrI2lmbmRlZiBHUFVfVEVTVF9FWFBFQ1RBVElPTlNfR1BV
X1RFU1RfQ09ORklHX01BQ19IXworKyNkZWZpbmUgR1BVX1RFU1RfRVhQRUNUQVRJT05TX0dQVV9U
RVNUX0NPTkZJR19NQUNfSF8KKysKKysjaW5jbHVkZSAiZ3B1X2luZm8uaCIKKysKKytuYW1lc3Bh
Y2UgYmFzZSB7CisrCisrY2xhc3MgU3lzSW5mbworK3sKKysgIHB1YmxpYzoKKysgICAgc3RhdGlj
IHZvaWQgT3BlcmF0aW5nU3lzdGVtVmVyc2lvbk51bWJlcnMoCisrICAgICAgICBpbnQzMiAqbWFq
b3JfdmVyc2lvbiwgaW50MzIgKm1pbm9yX3ZlcnNpb24sIGludDMyICpidWdmaXhfdmVyc2lvbik7
CisrfTsKKysKKyt9IC8vIG5hbWVzcGFjZSBiYXNlCisrCisrZ3B1OjpHUFVJbmZvOjpHUFVEZXZp
Y2UgR2V0QWN0aXZlR1BVKCk7CisrCisrI2VuZGlmIC8vIEdQVV9URVNUX0VYUEVDVEFUSU9OU19H
UFVfVEVTVF9DT05GSUdfTUFDX0hfCitkaWZmIC1ydXBOIGdwdV90ZXN0X2V4cGVjdGF0aW9uc19y
ZXZlcnRlZC9ncHVfdGVzdF9jb25maWdfbWFjLm1tIGdwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVf
dGVzdF9jb25maWdfbWFjLm1tCistLS0gZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3JldmVydGVkL2dw
dV90ZXN0X2NvbmZpZ19tYWMubW0JMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAK
KysrKyBncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X3Rlc3RfY29uZmlnX21hYy5tbQkyMDE1LTEx
LTMwIDIxOjU0OjMwLjIzOTI2NzYzNSAtMDUwMAorQEAgLTAsMCArMSw2NyBAQAorKy8vIENvcHly
aWdodCAoYykgMjAxMiBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KysvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisrLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKysKKysv
LyBncHVfdGVzdF9jb25maWdfbWFjLm1tOgorKy8vICAgSGVscGVyIGZ1bmN0aW9ucyBmb3IgZ3B1
X3Rlc3RfY29uZmlnIHRoYXQgaGF2ZSB0byBiZSBjb21waWxlZCBpbiBPYmplY3RpdmVDKysKKysK
KysjaW5jbHVkZSAiZ3B1X3Rlc3RfY29uZmlnX21hYy5oIgorKworKyNpbXBvcnQgPENvY29hL0Nv
Y29hLmg+CisrCisrbmFtZXNwYWNlIGJhc2UgeworKworK3ZvaWQgU3lzSW5mbzo6T3BlcmF0aW5n
U3lzdGVtVmVyc2lvbk51bWJlcnMoCisrICAgIGludDMyICptYWpvcl92ZXJzaW9uLCBpbnQzMiAq
bWlub3JfdmVyc2lvbiwgaW50MzIgKmJ1Z2ZpeF92ZXJzaW9uKQorK3sKKysjaWYgTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPCBNQUNfT1NfWF9WRVJTSU9OXzEwXzgKKysgIEdlc3RhbHQo
Z2VzdGFsdFN5c3RlbVZlcnNpb25NYWpvciwgcmVpbnRlcnByZXRfY2FzdDxTSW50MzIqPihtYWpv
cl92ZXJzaW9uKSk7CisrICBHZXN0YWx0KGdlc3RhbHRTeXN0ZW1WZXJzaW9uTWlub3IsIHJlaW50
ZXJwcmV0X2Nhc3Q8U0ludDMyKj4obWlub3JfdmVyc2lvbikpOworKyAgR2VzdGFsdChnZXN0YWx0
U3lzdGVtVmVyc2lvbkJ1Z0ZpeCwgcmVpbnRlcnByZXRfY2FzdDxTSW50MzIqPihidWdmaXhfdmVy
c2lvbikpOworKyNlbHNlCisrICBOU09wZXJhdGluZ1N5c3RlbVZlcnNpb24gdmVyc2lvbiA9IFtb
TlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gb3BlcmF0aW5nU3lzdGVtVmVyc2lvbl07CisrICAq
bWFqb3JfdmVyc2lvbiA9IHZlcnNpb24ubWFqb3JWZXJzaW9uOworKyAgKm1pbm9yX3ZlcnNpb24g
PSB2ZXJzaW9uLm1pbm9yVmVyc2lvbjsKKysgICpidWdmaXhfdmVyc2lvbiA9IHZlcnNpb24ucGF0
Y2hWZXJzaW9uOworKyNlbmRpZgorK30KKysKKyt9IC8vIG5hbWVzcGFjZSBiYXNlCisrCisrVUlu
dDMyIEdldEVudHJ5UHJvcGVydHkoaW9fcmVnaXN0cnlfZW50cnlfdCBlbnRyeSwgQ0ZTdHJpbmdS
ZWYgcHJvcGVydHlfbmFtZSkgeworKyAgQ0ZUeXBlUmVmIHR5cGUgPSBJT1JlZ2lzdHJ5RW50cnlT
ZWFyY2hDRlByb3BlcnR5KGVudHJ5LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGtJT1NlcnZpY2VQbGFuZSwKKysgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eV9uYW1lLAorKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDRkFsbG9jYXRvckRl
ZmF1bHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAga0lPUmVnaXN0cnlJdGVyYXRlUmVjdXJzaXZlbHkgfCBrSU9SZWdpc3RyeUl0ZXJhdGVQYXJl
bnRzKTsKKysgIENGRGF0YVJlZiBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KHR5
cGUpOworKyAgaWYgKCFkYXRhKSB7CisrICAgIENGUmVsZWFzZShkYXRhKTsKKysgICAgcmV0dXJu
IDA7CisrICB9CisrCisrICBVSW50MzIgdmFsdWUgPSAwOworKyAgY29uc3QgdWludDMyX3QqIHZh
bHVlUG9pbnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihDRkRhdGFHZXRC
eXRlUHRyKGRhdGEpKTsKKysgIGlmICh2YWx1ZVBvaW50ZXIgIT0gTlVMTCkgeworKyAgICB2YWx1
ZSA9ICp2YWx1ZVBvaW50ZXI7CisrICB9CisrICBDRlJlbGVhc2UoZGF0YSk7CisrICByZXR1cm4g
dmFsdWU7CisrfQorKworK2dwdTo6R1BVSW5mbzo6R1BVRGV2aWNlIEdldEFjdGl2ZUdQVSgpIHsK
KysgIGdwdTo6R1BVSW5mbzo6R1BVRGV2aWNlIGdwdTsKKysKKysgIC8vIElnbm9yZSB0aGUgZmFj
dCB0aGF0IENHRGlzcGxheUlPU2VydmljZVBvcnQgaXMgZGVwcmVjYXRlZCBhcyBBcHBsZQorKyAg
Ly8gZGlkIG5vdCBwcm92aWRlIGEgZ29vZCByZXBsYWNlbWVudCBmb3IgaXQgYXMgb2YgMTAuMTAu
CisrICAvLyBUT0RPKGN3YWxsZXopIHJldmlzaXQgd2l0aCBsYXRlciBzeXN0ZW1zCisrICAjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorKyAgI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGln
bm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCisrICAgIGlvX3JlZ2lzdHJ5X2VudHJ5
X3QgZHNwX3BvcnQgPSBDR0Rpc3BsYXlJT1NlcnZpY2VQb3J0KGtDR0RpcmVjdE1haW5EaXNwbGF5
KTsKKysgICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKysKKysgIGdwdS52ZW5kb3JfaWQg
PSBHZXRFbnRyeVByb3BlcnR5KGRzcF9wb3J0LCBDRlNUUigidmVuZG9yLWlkIikpOworKyAgZ3B1
LmRldmljZV9pZCA9IEdldEVudHJ5UHJvcGVydHkoZHNwX3BvcnQsIENGU1RSKCJkZXZpY2UtaWQi
KSk7CisrICByZXR1cm4gZ3B1OworK30KKysKK2RpZmYgLXJ1cE4gZ3B1X3Rlc3RfZXhwZWN0YXRp
b25zX3JldmVydGVkL2dwdV90ZXN0X2V4cGVjdGF0aW9uc19wYXJzZXIuY2MgZ3B1X3Rlc3RfZXhw
ZWN0YXRpb25zL2dwdV90ZXN0X2V4cGVjdGF0aW9uc19wYXJzZXIuY2MKKy0tLSBncHVfdGVzdF9l
eHBlY3RhdGlvbnNfcmV2ZXJ0ZWQvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3BhcnNlci5jYwkyMDE2
LTA4LTEyIDIxOjIzOjU0Ljg4NDEzMjQwNSAtMDQwMAorKysrIGdwdV90ZXN0X2V4cGVjdGF0aW9u
cy9ncHVfdGVzdF9leHBlY3RhdGlvbnNfcGFyc2VyLmNjCTIwMTUtMTEtMzAgMjE6NTQ6MzAuMjM5
MjY3NjM1IC0wNTAwCitAQCAtMiwxNCArMiw0MyBAQAorIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLSNpbmNsdWRlICJncHUvY29uZmlnL2dwdV90
ZXN0X2V4cGVjdGF0aW9uc19wYXJzZXIuaCIKKysjaW5jbHVkZSAiZ3B1X3Rlc3RfZXhwZWN0YXRp
b25zX3BhcnNlci5oIgorIAorLSNpbmNsdWRlICJiYXNlL2ZpbGVzL2ZpbGVfdXRpbC5oIgorLSNp
bmNsdWRlICJiYXNlL2xvZ2dpbmcuaCIKKy0jaW5jbHVkZSAiYmFzZS9zdHJpbmdzL3N0cmluZ19u
dW1iZXJfY29udmVyc2lvbnMuaCIKKy0jaW5jbHVkZSAiYmFzZS9zdHJpbmdzL3N0cmluZ19zcGxp
dC5oIgorLSNpbmNsdWRlICJiYXNlL3N0cmluZ3Mvc3RyaW5nX3V0aWwuaCIKKy0jaW5jbHVkZSAi
YmFzZS9zdHJpbmdzL3N0cmluZ3ByaW50Zi5oIgorKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGls
cy5oIgorKworK25hbWVzcGFjZSBiYXNlIHsKKysKKytuYW1lc3BhY2UgeworKworK2Jvb2wgU3Rh
cnRzV2l0aEFTQ0lJKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIsCisrICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIHNlYXJjaCwKKysgICAgICAgICAgICAgICAgICAgICBib29s
IGNhc2Vfc2Vuc2l0aXZlKSB7CisrICBBU1NFUlQoIWNhc2Vfc2Vuc2l0aXZlKTsKKysgIHJldHVy
biBzdHIuY29tcGFyZSgwLCBzZWFyY2gubGVuZ3RoKCksIHNlYXJjaCkgPT0gMDsKKyt9CisrCisr
dGVtcGxhdGUgPGNsYXNzIENoYXI+IGlubGluZSBDaGFyIFRvTG93ZXJBU0NJSShDaGFyIGMpIHsK
KysgIHJldHVybiAoYyA+PSAnQScgJiYgYyA8PSAnWicpID8gKGMgKyAoJ2EnIC0gJ0EnKSkgOiBj
OworK30KKysKKyt0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyPgorK3N0YXRpYyBpbmxpbmUgYm9vbCBE
b0xvd2VyQ2FzZUVxdWFsc0FTQ0lJKEl0ZXIgYV9iZWdpbiwKKysgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBJdGVyIGFfZW5kLAorKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGIpIHsKKysgIGZvciAoSXRlciBpdCA9
IGFfYmVnaW47IGl0ICE9IGFfZW5kOyArK2l0LCArK2IpIHsKKysgICAgaWYgKCEqYiB8fCBiYXNl
OjpUb0xvd2VyQVNDSUkoKml0KSAhPSAqYikKKysgICAgICByZXR1cm4gZmFsc2U7CisrICB9Cisr
ICByZXR1cm4gKmIgPT0gMDsKKyt9CisrCisrYm9vbCBMb3dlckNhc2VFcXVhbHNBU0NJSShjb25z
dCBzdGQ6OnN0cmluZyYgYSwgY29uc3QgY2hhciogYikgeworKyAgcmV0dXJuIERvTG93ZXJDYXNl
RXF1YWxzQVNDSUkoYS5iZWdpbigpLCBhLmVuZCgpLCBiKTsKKyt9CisrCisrfSAvLyBhbm9ueW1v
dXMgbmFtZXNwYWNlCisrCisrfSAvLyBuYW1lc3BhY2UgYmFzZQorIAorIG5hbWVzcGFjZSBncHUg
eworIAorQEAgLTE0Niw5ICsxNzUsOSBAQCBjb25zdCBjaGFyKiBrRXJyb3JNZXNzYWdlW10gPSB7
CisgfTsKKyAKKyBUb2tlbiBQYXJzZVRva2VuKGNvbnN0IHN0ZDo6c3RyaW5nJiB3b3JkKSB7Cist
ICBpZiAoYmFzZTo6U3RhcnRzV2l0aCh3b3JkLCAiLy8iLCBiYXNlOjpDb21wYXJlQ2FzZTo6SU5T
RU5TSVRJVkVfQVNDSUkpKQorKyAgaWYgKGJhc2U6OlN0YXJ0c1dpdGhBU0NJSSh3b3JkLCAiLy8i
LCBmYWxzZSkpCisgICAgIHJldHVybiBrVG9rZW5Db21tZW50OworLSAgaWYgKGJhc2U6OlN0YXJ0
c1dpdGgod29yZCwgIjB4IiwgYmFzZTo6Q29tcGFyZUNhc2U6OklOU0VOU0lUSVZFX0FTQ0lJKSkK
KysgIGlmIChiYXNlOjpTdGFydHNXaXRoQVNDSUkod29yZCwgIjB4IiwgZmFsc2UpKQorICAgICBy
ZXR1cm4ga0NvbmZpZ0dQVURldmljZUlEOworIAorICAgZm9yIChpbnQzMiBpID0gMDsgaSA8IGtO
dW1iZXJPZkV4YWN0TWF0Y2hUb2tlbnM7ICsraSkgeworQEAgLTE3NiwxMCArMjA1LDEwIEBAIGJv
b2wgTmFtZXNNYXRjaGluZyhjb25zdCBzdGQ6OnN0cmluZyYgcmUKKyAKKyBHUFVUZXN0RXhwZWN0
YXRpb25zUGFyc2VyOjpHUFVUZXN0RXhwZWN0YXRpb25zUGFyc2VyKCkgeworICAgLy8gU29tZSBz
YW5pdHkgY2hlY2suCistICBEQ0hFQ0tfRVEoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihrTnVt
YmVyT2ZFeGFjdE1hdGNoVG9rZW5zKSwKKy0gICAgICAgICAgICBzaXplb2Yoa1Rva2VuRGF0YSkg
LyBzaXplb2Yoa1Rva2VuRGF0YVswXSkpOworLSAgRENIRUNLX0VRKHN0YXRpY19jYXN0PHVuc2ln
bmVkIGludD4oa051bWJlck9mRXJyb3JzKSwKKy0gICAgICAgICAgICBzaXplb2Yoa0Vycm9yTWVz
c2FnZSkgLyBzaXplb2Yoa0Vycm9yTWVzc2FnZVswXSkpOworKyAgc3RhdGljX2Fzc2VydChzdGF0
aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGtOdW1iZXJPZkV4YWN0TWF0Y2hUb2tlbnMpID09CisrICAg
ICAgICAgICAgICAgIHNpemVvZihrVG9rZW5EYXRhKSAvIHNpemVvZihrVG9rZW5EYXRhWzBdKSwg
InNhbml0eSBjaGVjayIpOworKyAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDx1bnNpZ25lZCBp
bnQ+KGtOdW1iZXJPZkVycm9ycykgPT0KKysgICAgICAgICAgICAgICAgc2l6ZW9mKGtFcnJvck1l
c3NhZ2UpIC8gc2l6ZW9mKGtFcnJvck1lc3NhZ2VbMF0pLCAic2FuaXR5IGNoZWNrIik7CisgfQor
IAorIEdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXI6On5HUFVUZXN0RXhwZWN0YXRpb25zUGFyc2Vy
KCkgeworQEAgLTIwNCw4ICsyMzMsOCBAQCBib29sIEdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXI6
OkxvYWRUZXN0CisgICByZXR1cm4gcnQ7CisgfQorIAorLWJvb2wgR1BVVGVzdEV4cGVjdGF0aW9u
c1BhcnNlcjo6TG9hZFRlc3RFeHBlY3RhdGlvbnMoCistICAgIGNvbnN0IGJhc2U6OkZpbGVQYXRo
JiBwYXRoKSB7CisrYm9vbCBHUFVUZXN0RXhwZWN0YXRpb25zUGFyc2VyOjpMb2FkVGVzdEV4cGVj
dGF0aW9uc0Zyb21GaWxlKAorKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCkgeworICAgZW50
cmllc18uY2xlYXIoKTsKKyAgIGVycm9yX21lc3NhZ2VzXy5jbGVhcigpOworIAorQEAgLTM5OSw3
ICs0MjgsNyBAQCBib29sIEdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXI6OlBhcnNlTGluCisgICAg
ICAgICAgIHN0YWdlKys7CisgICAgICAgICBicmVhazsKKyAgICAgICBkZWZhdWx0OgorLSAgICAg
ICAgRENIRUNLKGZhbHNlKTsKKysgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICBicmVh
azsKKyAgICAgfQorICAgfQorQEAgLTQ4OCw3ICs1MTcsNyBAQCBib29sIEdQVVRlc3RFeHBlY3Rh
dGlvbnNQYXJzZXI6OlVwZGF0ZVRlCisgICAgICAgY29uZmlnLT5zZXRfYXBpKGNvbmZpZy0+YXBp
KCkgfCBrVG9rZW5EYXRhW3Rva2VuXS5mbGFnKTsKKyAgICAgICBicmVhazsKKyAgICAgZGVmYXVs
dDoKKy0gICAgICBEQ0hFQ0soZmFsc2UpOworKyAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAg
YnJlYWs7CisgICB9CisgICByZXR1cm4gdHJ1ZTsKK2RpZmYgLXJ1cE4gZ3B1X3Rlc3RfZXhwZWN0
YXRpb25zX3JldmVydGVkL2dwdV90ZXN0X2V4cGVjdGF0aW9uc19wYXJzZXIuaCBncHVfdGVzdF9l
eHBlY3RhdGlvbnMvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3BhcnNlci5oCistLS0gZ3B1X3Rlc3Rf
ZXhwZWN0YXRpb25zX3JldmVydGVkL2dwdV90ZXN0X2V4cGVjdGF0aW9uc19wYXJzZXIuaAkyMDE2
LTA4LTEyIDIxOjIzOjU0Ljg4NDEzMjQwNSAtMDQwMAorKysrIGdwdV90ZXN0X2V4cGVjdGF0aW9u
cy9ncHVfdGVzdF9leHBlY3RhdGlvbnNfcGFyc2VyLmgJMjAxNS0xMS0zMCAyMTo1NDozMC4yMzky
Njc2MzUgLTA1MDAKK0BAIC04LDEwICs4LDggQEAKKyAjaW5jbHVkZSA8c3RyaW5nPgorICNpbmNs
dWRlIDx2ZWN0b3I+CisgCistI2luY2x1ZGUgImJhc2UvYmFzaWN0eXBlcy5oIgorLSNpbmNsdWRl
ICJiYXNlL2ZpbGVzL2ZpbGVfcGF0aC5oIgorLSNpbmNsdWRlICJncHUvY29uZmlnL2dwdV90ZXN0
X2NvbmZpZy5oIgorLSNpbmNsdWRlICJncHUvZ3B1X2V4cG9ydC5oIgorKyNpbmNsdWRlICJhbmds
ZV9jb25maWcuaCIKKysjaW5jbHVkZSAiZ3B1X3Rlc3RfY29uZmlnLmgiCisgCisgbmFtZXNwYWNl
IGdwdSB7CisgCitAQCAtMzIsNyArMzAsNyBAQCBjbGFzcyBHUFVfRVhQT1JUIEdQVVRlc3RFeHBl
Y3RhdGlvbnNQYXJzCisgICAvLyBzYXZlIGFsbCB0aGUgZW50cmllcy4gT3RoZXJ3aXNlLCBnZW5l
cmF0ZSBlcnJvciBtZXNzYWdlcy4KKyAgIC8vIFJldHVybiB0cnVlIGlmIHBhcnNpbmcgc3VjY2Vl
ZHMuCisgICBib29sIExvYWRUZXN0RXhwZWN0YXRpb25zKGNvbnN0IHN0ZDo6c3RyaW5nJiBkYXRh
KTsKKy0gIGJvb2wgTG9hZFRlc3RFeHBlY3RhdGlvbnMoY29uc3QgYmFzZTo6RmlsZVBhdGgmIHBh
dGgpOworKyAgYm9vbCBMb2FkVGVzdEV4cGVjdGF0aW9uc0Zyb21GaWxlKGNvbnN0IHN0ZDo6c3Ry
aW5nJiBwYXRoKTsKKyAKKyAgIC8vIFF1ZXJ5IGVycm9yIG1lc3NhZ2VzIGZyb20gdGhlIGxhc3Qg
TG9hZFRlc3RFeHBlY3RhdGlvbnMoKSBjYWxsLgorICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpz
dHJpbmc+JiBHZXRFcnJvck1lc3NhZ2VzKCkgY29uc3Q7CitkaWZmIC1ydXBOIGdwdV90ZXN0X2V4
cGVjdGF0aW9uc19yZXZlcnRlZC9Ib3dUb01ha2VDaGFuZ2VzLm1kIGdwdV90ZXN0X2V4cGVjdGF0
aW9ucy9Ib3dUb01ha2VDaGFuZ2VzLm1kCistLS0gZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3JldmVy
dGVkL0hvd1RvTWFrZUNoYW5nZXMubWQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1
MDAKKysrKyBncHVfdGVzdF9leHBlY3RhdGlvbnMvSG93VG9NYWtlQ2hhbmdlcy5tZAkyMDE2LTA5
LTA5IDE2OjI3OjU2LjU3NTgwOTkyMSAtMDQwMAorQEAgLTAsMCArMSwyMiBAQAorK0JlY2F1c2Ug
dGhlIGBgYGdwdV90ZXN0X2V4cGVjdGF0aW9uc2BgYCBkaXJlY3RvcnkgaXMgYmFzZWQgb24gcGFy
dHMgb2YgQ2hyb21pdW0ncyBgYGBncHUvY29uZmlnYGBgCisrZGlyZWN0b3J5LCB3ZSB3YW50IHRv
IGtlZXAgYSBwYXRjaCBvZiB0aGUgY2hhbmdlcyBhZGRlZCB0byBtYWtlIGl0IGNvbXBpbGUgd2l0
aCBBTkdMRS4gVGhpcworK3dpbGwgYWxsb3cgdXMgdG8gbWVyZ2UgQ2hyb21pdW0gY2hhbmdlcyBl
YXNpbHkgaW4gb3VyIGBgYGdwdV90ZXN0X2V4cGVjdGF0aW9uc2BgYC4KKysKKytJbiBvcmRlciB0
byBtYWtlIGEgY2hhbmdlIHRvIHRoaXMgZGlyZWN0b3J5LCBkbyB0aGUgZm9sbG93aW5nOgorKwor
KyAqIGNvcHkgdGhlIGRpcmVjdG9yeSBzb21ld2hlcmUgbGlrZSBpbiBgYGBncHVfdGVzdF9leHBl
Y3RhdGlvbnNfcmV2ZXJ0ZWRgYGAKKysgKiBpbiBgYGBncHVfdGVzdF9leHBlY3RhdGlvbnNfcmV2
ZXJ0ZWRgYGAgcnVuIGBgYHBhdGNoIC1wIDEgLVIgPCBhbmdsZS1tb2RzLnBhdGNoYGBgCisrICog
ZG8geW91ciBjaGFuZ2VzIGluIGBgYGdwdV90ZXN0X2V4cGVjdGF0aW9uc2BgYAorKyAqIGRlbGV0
ZSBhbmdsZS1tb2RzLnBhdGNoIGluIGJvdGggZGlyZWN0b3JpZXMKKysgKiBydW4gYGBgZGlmZiAt
cnVwTiBncHVfdGVzdF9leHBlY3RhdGlvbnNfcmV2ZXJ0ZWQgZ3B1X3Rlc3RfZXhwZWN0YXRpb25z
ID4gYW5nbGUtbW9kcy5wYXRjaGBgYAorKyAqIGNvcHkgYGBgYW5nbGUtbW9kcy5wYXRjaGBgYCBp
biBgYGBncHVfdGVzdF9leHBlY3RhdGlvbnNgYGAKKysKKytIb3cgdG8gdXBkYXRlIGZyb20gQ2hy
b21pdW06CisrCisrICogYGBgZ2l0IGFwcGx5IC1SIGFuZ2xlLW1vZHMucGF0Y2hgYGAsIGBgYGdp
dCBhZGQgLiAtdWBgYCwgYGBgZ2l0IGNvbW1pdGBgYAorKyAqIENvcHkgb3ZlciBDaHJvbWl1bSBm
aWxlcywgYGBgZ2l0IGFkZCAuIC11YGBgLCBgYGBnaXQgY29tbWl0YGBgCisrICogYGBgZ2l0IHJl
dmVydCBIRUFEfmBgYAorKyAqIGBgYHJtIGFuZ2xlLW1vZHMucGF0Y2hgYGAKKysgKiBgYGBnaXQg
ZGlmZiBIRUFEfiAoYClscyhgKSA+IGFuZ2xlLW1vZHMucGF0Y2hgYGAsYGBgZ2l0IGFkZCBhbmds
ZS1tb2RzLnBhdGNoYGBgLCBgYGBnaXQgY29tbWl0IC0tYW1lbmRgYGAKKysgKiBgYGBnaXQgcmVi
YXNlIC1pYGBgIHRvIHNxdWFzaCB0aGUgdGhyZWUgcGF0Y2hlcyBpbnRvIG9uZS4KKysKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9ncHVfdGVzdF9l
eHBlY3RhdGlvbnMvYW5nbGVfY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9hbmds
ZV9jb25maWcuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvdGhpcmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2FuZ2xlX2NvbmZpZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjYgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBhbmdsZV9jb25maWcu
aDoKKy8vICAgSGVscGVycyBmb3IgaW1wb3J0aW5nIHRoZSBncHUgdGVzdCBleHBlY3RhdGlvbnMg
cGFja2FnZSBmcm9tIENocm9tZS4KKy8vCisKKyNpZm5kZWYgR1BVX1RFU1RfRVhQRUNUQVRJT05T
X0FOR0xFX0NPTkZJR19IXworI2RlZmluZSBHUFVfVEVTVF9FWFBFQ1RBVElPTlNfQU5HTEVfQ09O
RklHX0hfCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI2luY2x1ZGUgPGlvc3RyZWFtPgorCisj
aW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisjaW5jbHVkZSAiY29tbW9uL3N0cmluZ191dGlscy5o
IgorCisjZGVmaW5lIERDSEVDS19FUShBLEIpIEFTU0VSVCgoQSkgPT0gKEIpKQorI2RlZmluZSBE
Q0hFQ0tfTkUoQSxCKSBBU1NFUlQoKEEpICE9IChCKSkKKyNkZWZpbmUgRENIRUNLKFgpIEFTU0VS
VChYKQorI2RlZmluZSBMT0coWCkgc3RkOjpjZXJyCisKKyNkZWZpbmUgR1BVX0VYUE9SVAorCit0
eXBlZGVmIGludDMyX3QgaW50MzI7Cit0eXBlZGVmIHVpbnQzMl90IHVpbnQzMjsKK3R5cGVkZWYg
aW50NjRfdCBpbnQ2NDsKK3R5cGVkZWYgdWludDY0X3QgdWludDY0OworCisvLyBTaGltIENocm9t
aXVtJ3MgYmFzZSBieSBpbXBvcnRpbmcgZnVuY3Rpb25zIGluIHRoZSBiYXNlIG5hbWVzcGFjZS4K
K25hbWVzcGFjZSBiYXNlCit7CisgICAgdXNpbmcgYW5nbGU6OmtXaGl0ZXNwYWNlQVNDSUk7Cisg
ICAgdXNpbmcgYW5nbGU6OlRSSU1fV0hJVEVTUEFDRTsKKyAgICB1c2luZyBhbmdsZTo6S0VFUF9X
SElURVNQQUNFOworICAgIHVzaW5nIGFuZ2xlOjpTUExJVF9XQU5UX0FMTDsKKyAgICB1c2luZyBh
bmdsZTo6U1BMSVRfV0FOVF9OT05FTVBUWTsKKyAgICB1c2luZyBhbmdsZTo6U3BsaXRTdHJpbmc7
CisgICAgdXNpbmcgYW5nbGU6OlNwbGl0U3RyaW5nQWxvbmdXaGl0ZXNwYWNlOworICAgIHVzaW5n
IGFuZ2xlOjpIZXhTdHJpbmdUb1VJbnQ7CisgICAgdXNpbmcgYW5nbGU6OlJlYWRGaWxlVG9TdHJp
bmc7CisKKyAgICAvLyBTdHJpbmdQcmludGYgaXMgY2FsbGVkIGRpZmZlcmVudGx5IGluIEFOR0xF
IGJ1dCB1c2luZyBjYW5ub3QgY2hhbmdlCisgICAgLy8gdGhlIG5hbWUgb2YgdGhlIGltcG9ydGVk
IGZ1bmN0aW9uLiBVc2UgYSBkZWZpbmUgdG8gY2hhbmdlIHRoZSBuYW1lLgorICAgIHVzaW5nIDo6
Rm9ybWF0U3RyaW5nOworICAgICNkZWZpbmUgU3RyaW5nUHJpbnRmIEZvcm1hdFN0cmluZworfQor
CisvLyBUT0RPKGptYWRpbGwpOiBvdGhlciBwbGF0Zm9ybXMKKy8vIGNsYW5nLWZvcm1hdCBvZmYK
KyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfV0lONjQpCisjICAgIGRlZmluZSBPU19X
SU4KKyNlbGlmIGRlZmluZWQoQU5EUk9JRCkKKyMgICAgZGVmaW5lIE9TX0FORFJPSUQKKyNlbGlm
IGRlZmluZWQoX19saW51eF9fKQorIyAgICBkZWZpbmUgT1NfTElOVVgKKyNlbGlmIGRlZmluZWQo
X19BUFBMRV9fKQorIyAgICBkZWZpbmUgT1NfTUFDT1NYCisjZWxzZQorIyAgICBlcnJvciAiVW5z
dXBwb3J0ZWQgcGxhdGZvcm0iCisjZW5kaWYKKy8vIGNsYW5nLWZvcm1hdCBvbgorCisjZW5kaWYK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9ncHVf
dGVzdF9leHBlY3RhdGlvbnMvZ3B1X2luZm8uY2MKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9n
cHVfaW5mby5jYwkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvdGhpcmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV9pbmZvLmNjCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTM2IEBACisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIENo
cm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisjaW5jbHVkZSAiZ3B1X2luZm8uaCIKKwor
bmFtZXNwYWNlIHsKKwordm9pZCBFbnVtZXJhdGVHUFVEZXZpY2UoY29uc3QgZ3B1OjpHUFVJbmZv
OjpHUFVEZXZpY2UmIGRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdwdTo6R1BVSW5m
bzo6RW51bWVyYXRvciogZW51bWVyYXRvcikgeworICBlbnVtZXJhdG9yLT5CZWdpbkdQVURldmlj
ZSgpOworICBlbnVtZXJhdG9yLT5BZGRJbnQoInZlbmRvcklkIiwgZGV2aWNlLnZlbmRvcl9pZCk7
CisgIGVudW1lcmF0b3ItPkFkZEludCgiZGV2aWNlSWQiLCBkZXZpY2UuZGV2aWNlX2lkKTsKKyAg
ZW51bWVyYXRvci0+QWRkQm9vbCgiYWN0aXZlIiwgZGV2aWNlLmFjdGl2ZSk7CisgIGVudW1lcmF0
b3ItPkFkZFN0cmluZygidmVuZG9yU3RyaW5nIiwgZGV2aWNlLnZlbmRvcl9zdHJpbmcpOworICBl
bnVtZXJhdG9yLT5BZGRTdHJpbmcoImRldmljZVN0cmluZyIsIGRldmljZS5kZXZpY2Vfc3RyaW5n
KTsKKyAgZW51bWVyYXRvci0+RW5kR1BVRGV2aWNlKCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQor
CituYW1lc3BhY2UgZ3B1IHsKKworR1BVSW5mbzo6R1BVRGV2aWNlOjpHUFVEZXZpY2UoKQorICAg
IDogdmVuZG9yX2lkKDApLAorICAgICAgZGV2aWNlX2lkKDApLAorICAgICAgYWN0aXZlKGZhbHNl
KSB7Cit9CisKK0dQVUluZm86OkdQVURldmljZTo6fkdQVURldmljZSgpIHsgfQorCitHUFVJbmZv
OjpHUFVJbmZvKCkKKyAgICA6IG9wdGltdXMoZmFsc2UpLAorICAgICAgYW1kX3N3aXRjaGFibGUo
ZmFsc2UpLAorICAgICAgbGVub3ZvX2RjdXRlKGZhbHNlKSwKKyAgICAgIGFkYXB0ZXJfbHVpZCgw
KSwKKyAgICAgIGdsX3Jlc2V0X25vdGlmaWNhdGlvbl9zdHJhdGVneSgwKSwKKyAgICAgIGNhbl9s
b3NlX2NvbnRleHQoZmFsc2UpLAorICAgICAgc29mdHdhcmVfcmVuZGVyaW5nKGZhbHNlKSwKKyAg
ICAgIGRpcmVjdF9yZW5kZXJpbmcodHJ1ZSksCisgICAgICBzYW5kYm94ZWQoZmFsc2UpLAorICAg
ICAgcHJvY2Vzc19jcmFzaF9jb3VudCgwKSwKKyAgICAgIGluX3Byb2Nlc3NfZ3B1KHRydWUpLAor
ICAgICAgYmFzaWNfaW5mb19zdGF0ZShrQ29sbGVjdEluZm9Ob25lKSwKKyAgICAgIGNvbnRleHRf
aW5mb19zdGF0ZShrQ29sbGVjdEluZm9Ob25lKSwKKyAgICAgIGpwZWdfZGVjb2RlX2FjY2VsZXJh
dG9yX3N1cHBvcnRlZChmYWxzZSkgeworfQorCitHUFVJbmZvOjp+R1BVSW5mbygpIHsgfQorCit2
b2lkIEdQVUluZm86OkVudW1lcmF0ZUZpZWxkcyhFbnVtZXJhdG9yKiBlbnVtZXJhdG9yKSBjb25z
dCB7CisgIHN0cnVjdCBHUFVJbmZvS25vd25GaWVsZHMgeworICAgIGJvb2wgb3B0aW11czsKKyAg
ICBib29sIGFtZF9zd2l0Y2hhYmxlOworICAgIGJvb2wgbGVub3ZvX2RjdXRlOworICAgIEdQVURl
dmljZSBncHU7CisgICAgc3RkOjp2ZWN0b3I8R1BVRGV2aWNlPiBzZWNvbmRhcnlfZ3B1czsKKyAg
ICB1aW50NjQgYWRhcHRlcl9sdWlkOworICAgIHN0ZDo6c3RyaW5nIGRyaXZlcl92ZW5kb3I7Cisg
ICAgc3RkOjpzdHJpbmcgZHJpdmVyX3ZlcnNpb247CisgICAgc3RkOjpzdHJpbmcgZHJpdmVyX2Rh
dGU7CisgICAgc3RkOjpzdHJpbmcgcGl4ZWxfc2hhZGVyX3ZlcnNpb247CisgICAgc3RkOjpzdHJp
bmcgdmVydGV4X3NoYWRlcl92ZXJzaW9uOworICAgIHN0ZDo6c3RyaW5nIG1heF9tc2FhX3NhbXBs
ZXM7CisgICAgc3RkOjpzdHJpbmcgbWFjaGluZV9tb2RlbF9uYW1lOworICAgIHN0ZDo6c3RyaW5n
IG1hY2hpbmVfbW9kZWxfdmVyc2lvbjsKKyAgICBzdGQ6OnN0cmluZyBnbF92ZXJzaW9uX3N0cmlu
ZzsKKyAgICBzdGQ6OnN0cmluZyBnbF92ZW5kb3I7CisgICAgc3RkOjpzdHJpbmcgZ2xfcmVuZGVy
ZXI7CisgICAgc3RkOjpzdHJpbmcgZ2xfZXh0ZW5zaW9uczsKKyAgICBzdGQ6OnN0cmluZyBnbF93
c192ZW5kb3I7CisgICAgc3RkOjpzdHJpbmcgZ2xfd3NfdmVyc2lvbjsKKyAgICBzdGQ6OnN0cmlu
ZyBnbF93c19leHRlbnNpb25zOworICAgIHVpbnQzMiBnbF9yZXNldF9ub3RpZmljYXRpb25fc3Ry
YXRlZ3k7CisgICAgYm9vbCBjYW5fbG9zZV9jb250ZXh0OworICAgIGJvb2wgc29mdHdhcmVfcmVu
ZGVyaW5nOworICAgIGJvb2wgZGlyZWN0X3JlbmRlcmluZzsKKyAgICBib29sIHNhbmRib3hlZDsK
KyAgICBpbnQgcHJvY2Vzc19jcmFzaF9jb3VudDsKKyAgICBib29sIGluX3Byb2Nlc3NfZ3B1Owor
ICAgIENvbGxlY3RJbmZvUmVzdWx0IGJhc2ljX2luZm9fc3RhdGU7CisgICAgQ29sbGVjdEluZm9S
ZXN1bHQgY29udGV4dF9pbmZvX3N0YXRlOworICAgIGJvb2wganBlZ19kZWNvZGVfYWNjZWxlcmF0
b3Jfc3VwcG9ydGVkOworICB9OworCisgIC8vIElmIHRoaXMgYXNzZXJ0IGZhaWxzIHRoZW4gbW9z
dCBsaWtlbHkgc29tZXRoaW5nIGJlbG93IG5lZWRzIHRvIGJlIHVwZGF0ZWQuCisgIC8vIE5vdGUg
dGhhdCB0aGlzIGFzc2VydCBpcyBvbmx5IGFwcHJveGltYXRlLiBJZiBhIG5ldyBmaWVsZCBpcyBh
ZGRlZCB0bworICAvLyBHUFVJbmZvIHdoaWNoIGZpdHMgd2l0aGluIHRoZSBjdXJyZW50IHBhZGRp
bmcgdGhlbiBpdCB3aWxsIG5vdCBiZSBjYXVnaHQuCisgIHN0YXRpY19hc3NlcnQoCisgICAgICBz
aXplb2YoR1BVSW5mbykgPT0gc2l6ZW9mKEdQVUluZm9Lbm93bkZpZWxkcyksCisgICAgICAiZmll
bGRzIGhhdmUgY2hhbmdlZCBpbiBHUFVJbmZvLCBHUFVJbmZvS25vd25GaWVsZHMgbXVzdCBiZSB1
cGRhdGVkIik7CisKKyAgLy8gUmVxdWlyZWQgZmllbGRzIChhY2NvcmRpbmcgdG8gRGV2VG9vbHMg
cHJvdG9jb2wpIGZpcnN0LgorICBlbnVtZXJhdG9yLT5BZGRTdHJpbmcoIm1hY2hpbmVNb2RlbE5h
bWUiLCBtYWNoaW5lX21vZGVsX25hbWUpOworICBlbnVtZXJhdG9yLT5BZGRTdHJpbmcoIm1hY2hp
bmVNb2RlbFZlcnNpb24iLCBtYWNoaW5lX21vZGVsX3ZlcnNpb24pOworICBFbnVtZXJhdGVHUFVE
ZXZpY2UoZ3B1LCBlbnVtZXJhdG9yKTsKKyAgZm9yIChjb25zdCBhdXRvJiBzZWNvbmRhcnlfZ3B1
OiBzZWNvbmRhcnlfZ3B1cykKKyAgICBFbnVtZXJhdGVHUFVEZXZpY2Uoc2Vjb25kYXJ5X2dwdSwg
ZW51bWVyYXRvcik7CisKKyAgZW51bWVyYXRvci0+QmVnaW5BdXhBdHRyaWJ1dGVzKCk7CisgIGVu
dW1lcmF0b3ItPkFkZEJvb2woIm9wdGltdXMiLCBvcHRpbXVzKTsKKyAgZW51bWVyYXRvci0+QWRk
Qm9vbCgiYW1kU3dpdGNoYWJsZSIsIGFtZF9zd2l0Y2hhYmxlKTsKKyAgZW51bWVyYXRvci0+QWRk
Qm9vbCgibGVub3ZvRGN1dGUiLCBsZW5vdm9fZGN1dGUpOworICBlbnVtZXJhdG9yLT5BZGRJbnQ2
NCgiYWRhcHRlckx1aWQiLCBhZGFwdGVyX2x1aWQpOworICBlbnVtZXJhdG9yLT5BZGRTdHJpbmco
ImRyaXZlclZlbmRvciIsIGRyaXZlcl92ZW5kb3IpOworICBlbnVtZXJhdG9yLT5BZGRTdHJpbmco
ImRyaXZlclZlcnNpb24iLCBkcml2ZXJfdmVyc2lvbik7CisgIGVudW1lcmF0b3ItPkFkZFN0cmlu
ZygiZHJpdmVyRGF0ZSIsIGRyaXZlcl9kYXRlKTsKKyAgZW51bWVyYXRvci0+QWRkU3RyaW5nKCJw
aXhlbFNoYWRlclZlcnNpb24iLCBwaXhlbF9zaGFkZXJfdmVyc2lvbik7CisgIGVudW1lcmF0b3It
PkFkZFN0cmluZygidmVydGV4U2hhZGVyVmVyc2lvbiIsIHZlcnRleF9zaGFkZXJfdmVyc2lvbik7
CisgIGVudW1lcmF0b3ItPkFkZFN0cmluZygibWF4TXNhYVNhbXBsZXMiLCBtYXhfbXNhYV9zYW1w
bGVzKTsKKyAgZW51bWVyYXRvci0+QWRkU3RyaW5nKCJnbFZlcnNpb24iLCBnbF92ZXJzaW9uKTsK
KyAgZW51bWVyYXRvci0+QWRkU3RyaW5nKCJnbFZlbmRvciIsIGdsX3ZlbmRvcik7CisgIGVudW1l
cmF0b3ItPkFkZFN0cmluZygiZ2xSZW5kZXJlciIsIGdsX3JlbmRlcmVyKTsKKyAgZW51bWVyYXRv
ci0+QWRkU3RyaW5nKCJnbEV4dGVuc2lvbnMiLCBnbF9leHRlbnNpb25zKTsKKyAgZW51bWVyYXRv
ci0+QWRkU3RyaW5nKCJnbFdzVmVuZG9yIiwgZ2xfd3NfdmVuZG9yKTsKKyAgZW51bWVyYXRvci0+
QWRkU3RyaW5nKCJnbFdzVmVyc2lvbiIsIGdsX3dzX3ZlcnNpb24pOworICBlbnVtZXJhdG9yLT5B
ZGRTdHJpbmcoImdsV3NFeHRlbnNpb25zIiwgZ2xfd3NfZXh0ZW5zaW9ucyk7CisgIGVudW1lcmF0
b3ItPkFkZEludCgKKyAgICAgICJnbFJlc2V0Tm90aWZpY2F0aW9uU3RyYXRlZ3kiLAorICAgICAg
c3RhdGljX2Nhc3Q8aW50PihnbF9yZXNldF9ub3RpZmljYXRpb25fc3RyYXRlZ3kpKTsKKyAgZW51
bWVyYXRvci0+QWRkQm9vbCgiY2FuX2xvc2VfY29udGV4dCIsIGNhbl9sb3NlX2NvbnRleHQpOwor
ICAvLyBUT0RPKGticik6IGFkZCBwZXJmb3JtYW5jZV9zdGF0cy4KKyAgZW51bWVyYXRvci0+QWRk
Qm9vbCgic29mdHdhcmVSZW5kZXJpbmciLCBzb2Z0d2FyZV9yZW5kZXJpbmcpOworICBlbnVtZXJh
dG9yLT5BZGRCb29sKCJkaXJlY3RSZW5kZXJpbmciLCBkaXJlY3RfcmVuZGVyaW5nKTsKKyAgZW51
bWVyYXRvci0+QWRkQm9vbCgic2FuZGJveGVkIiwgc2FuZGJveGVkKTsKKyAgZW51bWVyYXRvci0+
QWRkSW50KCJwcm9jZXNzQ3Jhc2hDb3VudCIsIHByb2Nlc3NfY3Jhc2hfY291bnQpOworICBlbnVt
ZXJhdG9yLT5BZGRCb29sKCJpblByb2Nlc3NHcHUiLCBpbl9wcm9jZXNzX2dwdSk7CisgIGVudW1l
cmF0b3ItPkFkZEludCgiYmFzaWNJbmZvU3RhdGUiLCBiYXNpY19pbmZvX3N0YXRlKTsKKyAgZW51
bWVyYXRvci0+QWRkSW50KCJjb250ZXh0SW5mb1N0YXRlIiwgY29udGV4dF9pbmZvX3N0YXRlKTsK
KyAgLy8gVE9ETyhrYnIpOiBhZGQgZHhfZGlhZ25vc3RpY3Mgb24gV2luZG93cy4KKyAgZW51bWVy
YXRvci0+QWRkQm9vbCgianBlZ0RlY29kZUFjY2VsZXJhdG9yU3VwcG9ydGVkIiwKKyAgICAgIGpw
ZWdfZGVjb2RlX2FjY2VsZXJhdG9yX3N1cHBvcnRlZCk7CisgIGVudW1lcmF0b3ItPkVuZEF1eEF0
dHJpYnV0ZXMoKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGdwdQpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9n
cHVfaW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy90aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X2luZm8uaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvZ3B1
X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV9pbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwy
MzMgQEAKKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisKKyNpZm5kZWYgR1BVX0NPTkZJR19HUFVfSU5GT19IXworI2RlZmluZSBHUFVfQ09O
RklHX0dQVV9JTkZPX0hfCisKKy8vIFByb3ZpZGVzIGFjY2VzcyB0byB0aGUgR1BVIGluZm9ybWF0
aW9uIGZvciB0aGUgc3lzdGVtCisvLyBvbiB3aGljaCBjaHJvbWUgaXMgY3VycmVudGx5IHJ1bm5p
bmcuCisKKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAi
YW5nbGVfY29uZmlnLmgiCisKK25hbWVzcGFjZSBncHUgeworCisvLyBSZXN1bHQgZm9yIHRoZSB2
YXJpb3VzIENvbGxlY3QqSW5mbyogZnVuY3Rpb25zIGJlbG93LgorLy8gRmF0YWwgZmFpbHVyZXMg
YXJlIGZvciBjYXNlcyB3aGVyZSB3ZSBjYW4ndCBjcmVhdGUgYSBjb250ZXh0IGF0IGFsbCBvcgor
Ly8gc29tZXRoaW5nLCBtYWtpbmcgdGhlIHVzZSBvZiB0aGUgR1BVIGltcG9zc2libGUuCisvLyBO
b24tZmF0YWwgZmFpbHVyZXMgYXJlIGZvciBjYXNlcyB3aGVyZSB3ZSBjb3VsZCBnYXRoZXIgbW9z
dCBpbmZvLCBidXQgbWF5YmUKKy8vIHNvbWUgaXMgbWlzc2luZyAoZS5nLiB1bmFibGUgdG8gcGFy
c2UgYSB2ZXJzaW9uIHN0cmluZyBvciB0byBkZXRlY3QgdGhlIGV4YWN0CisvLyBtb2RlbCkuCitl
bnVtIENvbGxlY3RJbmZvUmVzdWx0IHsKKyAga0NvbGxlY3RJbmZvTm9uZSA9IDAsCisgIGtDb2xs
ZWN0SW5mb1N1Y2Nlc3MgPSAxLAorICBrQ29sbGVjdEluZm9Ob25GYXRhbEZhaWx1cmUgPSAyLAor
ICBrQ29sbGVjdEluZm9GYXRhbEZhaWx1cmUgPSAzCit9OworCisvLyBWaWRlbyBwcm9maWxlLiAg
VGhpcyAqbXVzdCogbWF0Y2ggbWVkaWE6OlZpZGVvQ29kZWNQcm9maWxlLgorZW51bSBWaWRlb0Nv
ZGVjUHJvZmlsZSB7CisgIFZJREVPX0NPREVDX1BST0ZJTEVfVU5LTk9XTiA9IC0xLAorICBWSURF
T19DT0RFQ19QUk9GSUxFX01JTiA9IFZJREVPX0NPREVDX1BST0ZJTEVfVU5LTk9XTiwKKyAgSDI2
NFBST0ZJTEVfQkFTRUxJTkUgPSAwLAorICBIMjY0UFJPRklMRV9NQUlOID0gMSwKKyAgSDI2NFBS
T0ZJTEVfRVhURU5ERUQgPSAyLAorICBIMjY0UFJPRklMRV9ISUdIID0gMywKKyAgSDI2NFBST0ZJ
TEVfSElHSDEwUFJPRklMRSA9IDQsCisgIEgyNjRQUk9GSUxFX0hJR0g0MjJQUk9GSUxFID0gNSwK
KyAgSDI2NFBST0ZJTEVfSElHSDQ0NFBSRURJQ1RJVkVQUk9GSUxFID0gNiwKKyAgSDI2NFBST0ZJ
TEVfU0NBTEFCTEVCQVNFTElORSA9IDcsCisgIEgyNjRQUk9GSUxFX1NDQUxBQkxFSElHSCA9IDgs
CisgIEgyNjRQUk9GSUxFX1NURVJFT0hJR0ggPSA5LAorICBIMjY0UFJPRklMRV9NVUxUSVZJRVdI
SUdIID0gMTAsCisgIFZQOFBST0ZJTEVfQU5ZID0gMTEsCisgIFZQOVBST0ZJTEVfQU5ZID0gMTIs
CisgIFZJREVPX0NPREVDX1BST0ZJTEVfTUFYID0gVlA5UFJPRklMRV9BTlksCit9OworCitzdHJ1
Y3QgR1BVX0VYUE9SVCBHUFVJbmZvIHsKKyAgc3RydWN0IEdQVV9FWFBPUlQgR1BVRGV2aWNlIHsK
KyAgICBHUFVEZXZpY2UoKTsKKyAgICB+R1BVRGV2aWNlKCk7CisKKyAgICAvLyBUaGUgRFdPUkQg
KHVpbnQzMikgcmVwcmVzZW50aW5nIHRoZSBncmFwaGljcyBjYXJkIHZlbmRvciBpZC4KKyAgICB1
aW50MzIgdmVuZG9yX2lkOworCisgICAgLy8gVGhlIERXT1JEICh1aW50MzIpIHJlcHJlc2VudGlu
ZyB0aGUgZ3JhcGhpY3MgY2FyZCBkZXZpY2UgaWQuCisgICAgLy8gRGV2aWNlIGlkcyBhcmUgdW5p
cXVlIHRvIHZlbmRvciwgbm90IHRvIG9uZSBhbm90aGVyLgorICAgIHVpbnQzMiBkZXZpY2VfaWQ7
CisKKyAgICAvLyBXaGV0aGVyIHRoaXMgR1BVIGlzIHRoZSBjdXJyZW50bHkgdXNlZCBvbmUuCisg
ICAgLy8gQ3VycmVudGx5IHRoaXMgZmllbGQgaXMgb25seSBzdXBwb3J0ZWQgYW5kIG1lYW5pbmdm
dWwgb24gT1MgWC4KKyAgICBib29sIGFjdGl2ZTsKKworICAgIC8vIFRoZSBzdHJpbmdzIHRoYXQg
ZGVzY3JpYmUgdGhlIEdQVS4KKyAgICAvLyBJbiBMaW51eCB0aGVzZSBzdHJpbmdzIGFyZSBvYnRh
aW5lZCB0aHJvdWdoIGxpYnBjaS4KKyAgICAvLyBJbiBXaW4vTWFjT1NYLCB0aGVzZSB0d28gc3Ry
aW5ncyBhcmUgbm90IGZpbGxlZCBhdCB0aGUgbW9tZW50LgorICAgIC8vIEluIEFuZHJvaWQsIHRo
ZXNlIGFyZSByZXNwZWN0aXZlbHkgR0xfVkVORE9SIGFuZCBHTF9SRU5ERVJFUi4KKyAgICBzdGQ6
OnN0cmluZyB2ZW5kb3Jfc3RyaW5nOworICAgIHN0ZDo6c3RyaW5nIGRldmljZV9zdHJpbmc7Cisg
IH07CisKKyAgR1BVSW5mbygpOworICB+R1BVSW5mbygpOworCisgIGJvb2wgU3VwcG9ydHNBY2Nl
bGVyYXRlZDJkQ2FudmFzKCkgY29uc3QgeworICAgIHJldHVybiAhY2FuX2xvc2VfY29udGV4dCAm
JiAhc29mdHdhcmVfcmVuZGVyaW5nOworICB9CisKKyAgLy8gQ29tcHV0ZXIgaGFzIE5WSURJQSBP
cHRpbXVzCisgIGJvb2wgb3B0aW11czsKKworICAvLyBDb21wdXRlciBoYXMgQU1EIER5bmFtaWMg
U3dpdGNoYWJsZSBHcmFwaGljcworICBib29sIGFtZF9zd2l0Y2hhYmxlOworCisgIC8vIExlbm92
byBkQ3V0ZSBpcyBpbnN0YWxsZWQuIGh0dHA6Ly9jcmJ1Zy5jb20vMTgxNjY1LgorICBib29sIGxl
bm92b19kY3V0ZTsKKworICAvLyBQcmltYXJ5IEdQVSwgZm9yIGV4bWFwbGUsIHRoZSBkaXNjcmV0
ZSBHUFUgaW4gYSBkdWFsIEdQVSBtYWNoaW5lLgorICBHUFVEZXZpY2UgZ3B1OworCisgIC8vIFNl
Y29uZGFyeSBHUFVzLCBmb3IgZXhhbXBsZSwgdGhlIGludGVncmF0ZWQgR1BVIGluIGEgZHVhbCBH
UFUgbWFjaGluZS4KKyAgc3RkOjp2ZWN0b3I8R1BVRGV2aWNlPiBzZWNvbmRhcnlfZ3B1czsKKwor
ICAvLyBPbiBXaW5kb3dzLCB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGFkYXB0ZXIgdGhl
IEdQVSBwcm9jZXNzIHVzZXMuCisgIC8vIFRoZSBkZWZhdWx0IGlzIHplcm8sIHdoaWNoIG1ha2Vz
IHRoZSBicm93c2VyIHByb2Nlc3MgY3JlYXRlIGl0cyBEM0QgZGV2aWNlCisgIC8vIG9uIHRoZSBw
cmltYXJ5IGFkYXB0ZXIuIE5vdGUgdGhhdCB0aGUgcHJpbWFyeSBhZGFwdGVyIGNhbiBjaGFuZ2Ug
YXQgYW55CisgIC8vIHRpbWUgc28gaXQgaXMgYmV0dGVyIHRvIHNwZWNpZnkgYSBwYXJ0aWN1bGFy
IExVSUQuIE5vdGUgdGhhdCB2YWxpZCBMVUlEcworICAvLyBhcmUgYWx3YXlzIG5vbi16ZXJvLgor
ICB1aW50NjQgYWRhcHRlcl9sdWlkOworCisgIC8vIFRoZSB2ZW5kb3Igb2YgdGhlIGdyYXBoaWNz
IGRyaXZlciBjdXJyZW50bHkgaW5zdGFsbGVkLgorICBzdGQ6OnN0cmluZyBkcml2ZXJfdmVuZG9y
OworCisgIC8vIFRoZSB2ZXJzaW9uIG9mIHRoZSBncmFwaGljcyBkcml2ZXIgY3VycmVudGx5IGlu
c3RhbGxlZC4KKyAgc3RkOjpzdHJpbmcgZHJpdmVyX3ZlcnNpb247CisKKyAgLy8gVGhlIGRhdGUg
b2YgdGhlIGdyYXBoaWNzIGRyaXZlciBjdXJyZW50bHkgaW5zdGFsbGVkLgorICBzdGQ6OnN0cmlu
ZyBkcml2ZXJfZGF0ZTsKKworICAvLyBUaGUgdmVyc2lvbiBvZiB0aGUgcGl4ZWwvZnJhZ21lbnQg
c2hhZGVyIHVzZWQgYnkgdGhlIGdwdS4KKyAgc3RkOjpzdHJpbmcgcGl4ZWxfc2hhZGVyX3ZlcnNp
b247CisKKyAgLy8gVGhlIHZlcnNpb24gb2YgdGhlIHZlcnRleCBzaGFkZXIgdXNlZCBieSB0aGUg
Z3B1LgorICBzdGQ6OnN0cmluZyB2ZXJ0ZXhfc2hhZGVyX3ZlcnNpb247CisKKyAgLy8gVGhlIG1h
eGltdW0gbXVsdGlzYXBsaW5nIHNhbXBsZSBjb3VudCwgZWl0aGVyIHRocm91Z2ggRVMzIG9yCisg
IC8vIEVYVF9tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUgTVNBQS4KKyAgc3RkOjpzdHJp
bmcgbWF4X21zYWFfc2FtcGxlczsKKworICAvLyBUaGUgbWFjaGluZSBtb2RlbCBpZGVudGlmaWVy
LiBUaGV5IGNhbiBjb250YWluIGFueSBjaGFyYWN0ZXIsIGluY2x1ZGluZworICAvLyB3aGl0ZXNw
YWNlcy4gIEN1cnJlbnRseSBpdCBpcyBzdXBwb3J0ZWQgb24gTWFjT1NYIGFuZCBBbmRyb2lkLgor
ICAvLyBBbmRyb2lkIGV4YW1wbGVzOiAiTmF4dXMgNSIsICJYVDEwMzIiLgorICAvLyBPbiBNYWNP
U1gsIHRoZSB2ZXJzaW9uIGlzIHN0cmlwcGVkIG91dCBvZiB0aGUgbW9kZWwgaWRlbnRpZmllciwg
Zm9yCisgIC8vIGV4YW1wbGUsIHRoZSBvcmlnaW5hbCBpZGVudGlmaWVyIGlzICJNYWNCb29rUHJv
NywyIiwgYW5kIHdlIHB1dAorICAvLyAiTWFjQm9va1BybyIgYXMgbWFjaGluZV9tb2RlbF9uYW1l
LCBhbmQgIjcuMiIgYXMgbWFjaGluZV9tb2RlbF92ZXJzaW9uLgorICBzdGQ6OnN0cmluZyBtYWNo
aW5lX21vZGVsX25hbWU7CisKKyAgLy8gVGhlIHZlcnNpb24gb2YgdGhlIG1hY2hpbmUgbW9kZWwu
IEN1cnJlbnRseSBpdCBpcyBzdXBwb3J0ZWQgb24gTWFjT1NYLgorICAvLyBTZWUgbWFjaGluZV9t
b2RlbF9uYW1lJ3MgY29tbWVudC4KKyAgc3RkOjpzdHJpbmcgbWFjaGluZV9tb2RlbF92ZXJzaW9u
OworCisgIC8vIFRoZSBHTF9WRVJTSU9OIHN0cmluZy4KKyAgc3RkOjpzdHJpbmcgZ2xfdmVyc2lv
bjsKKworICAvLyBUaGUgR0xfVkVORE9SIHN0cmluZy4KKyAgc3RkOjpzdHJpbmcgZ2xfdmVuZG9y
OworCisgIC8vIFRoZSBHTF9SRU5ERVJFUiBzdHJpbmcuCisgIHN0ZDo6c3RyaW5nIGdsX3JlbmRl
cmVyOworCisgIC8vIFRoZSBHTF9FWFRFTlNJT05TIHN0cmluZy4KKyAgc3RkOjpzdHJpbmcgZ2xf
ZXh0ZW5zaW9uczsKKworICAvLyBHTCB3aW5kb3cgc3lzdGVtIGJpbmRpbmcgdmVuZG9yLiAgIiIg
aWYgbm90IGF2YWlsYWJsZS4KKyAgc3RkOjpzdHJpbmcgZ2xfd3NfdmVuZG9yOworCisgIC8vIEdM
IHdpbmRvdyBzeXN0ZW0gYmluZGluZyB2ZXJzaW9uLiAgIiIgaWYgbm90IGF2YWlsYWJsZS4KKyAg
c3RkOjpzdHJpbmcgZ2xfd3NfdmVyc2lvbjsKKworICAvLyBHTCB3aW5kb3cgc3lzdGVtIGJpbmRp
bmcgZXh0ZW5zaW9ucy4gICIiIGlmIG5vdCBhdmFpbGFibGUuCisgIHN0ZDo6c3RyaW5nIGdsX3dz
X2V4dGVuc2lvbnM7CisKKyAgLy8gR0wgcmVzZXQgbm90aWZpY2F0aW9uIHN0cmF0ZWd5IGFzIGRl
ZmluZWQgYnkgR0xfQVJCX3JvYnVzdG5lc3MuIDAgaWYgR1BVCisgIC8vIHJlc2V0IGRldGVjdGlv
biBvciBub3RpZmljYXRpb24gbm90IGF2YWlsYWJsZS4KKyAgdWludDMyIGdsX3Jlc2V0X25vdGlm
aWNhdGlvbl9zdHJhdGVneTsKKworICAvLyBUaGUgZGV2aWNlIHNlbWFudGljcywgaS5lLiB3aGV0
aGVyIHRoZSBWaXN0YSBhbmQgV2luZG93cyA3IHNwZWNpZmljCisgIC8vIHNlbWFudGljcyBhcmUg
YXZhaWxhYmxlLgorICBib29sIGNhbl9sb3NlX2NvbnRleHQ7CisKKyAgYm9vbCBzb2Z0d2FyZV9y
ZW5kZXJpbmc7CisKKyAgLy8gV2hldGhlciB0aGUgZHJpdmVyIHVzZXMgZGlyZWN0IHJlbmRlcmlu
Zy4gVHJ1ZSBvbiBtb3N0IHBsYXRmb3JtcywgZmFsc2Ugb24KKyAgLy8gWDExIHdoZW4gdXNpbmcg
cmVtb3RlIFguCisgIGJvb2wgZGlyZWN0X3JlbmRlcmluZzsKKworICAvLyBXaGV0aGVyIHRoZSBn
cHUgcHJvY2VzcyBpcyBydW5uaW5nIGluIGEgc2FuZGJveC4KKyAgYm9vbCBzYW5kYm94ZWQ7CisK
KyAgLy8gTnVtYmVyIG9mIEdQVSBwcm9jZXNzIGNyYXNoZXMgcmVjb3JkZWQuCisgIGludCBwcm9j
ZXNzX2NyYXNoX2NvdW50OworCisgIC8vIFRydWUgaWYgdGhlIEdQVSBpcyBydW5uaW5nIGluIHRo
ZSBicm93c2VyIHByb2Nlc3MgaW5zdGVhZCBvZiBpdHMgb3duLgorICBib29sIGluX3Byb2Nlc3Nf
Z3B1OworCisgIC8vIFRoZSBzdGF0ZSBvZiB3aGV0aGVyIHRoZSBiYXNpYy9jb250ZXh0L0R4RGlh
Z25vc3RpY3MgaW5mbyBpcyBjb2xsZWN0ZWQgYW5kCisgIC8vIGlmIHRoZSBjb2xsZWN0aW9uIGZh
aWxzIG9yIG5vdC4KKyAgQ29sbGVjdEluZm9SZXN1bHQgYmFzaWNfaW5mb19zdGF0ZTsKKyAgQ29s
bGVjdEluZm9SZXN1bHQgY29udGV4dF9pbmZvX3N0YXRlOworCisgIGJvb2wganBlZ19kZWNvZGVf
YWNjZWxlcmF0b3Jfc3VwcG9ydGVkOworCisgIC8vIE5vdGU6IHdoZW4gYWRkaW5nIG5ldyBtZW1i
ZXJzLCBwbGVhc2UgcmVtZW1iZXIgdG8gdXBkYXRlIEVudW1lcmF0ZUZpZWxkcworICAvLyBpbiBn
cHVfaW5mby5jYy4KKworICAvLyBJbiBjb25qdW5jdGlvbiB3aXRoIEVudW1lcmF0ZUZpZWxkcywg
dGhpcyBhbGxvd3MgdGhlIGVtYmVkZGVyIHRvCisgIC8vIGVudW1lcmF0ZSB0aGUgdmFsdWVzIGlu
IHRoaXMgc3RydWN0dXJlIHdpdGhvdXQgaGF2aW5nIHRvIGVtYmVkCisgIC8vIHJlZmVyZW5jZXMg
dG8gaXRzIHNwZWNpZmljIG1lbWJlciB2YXJpYWJsZXMuIFRoaXMgc2ltcGxpZmllcyB0aGUKKyAg
Ly8gYWRkaXRpb24gb2YgbmV3IGZpZWxkcyB0byB0aGlzIHR5cGUuCisgIGNsYXNzIEVudW1lcmF0
b3IgeworICAgcHVibGljOgorICAgIC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcHBseSB0byB0
aGUgImN1cnJlbnQiIG9iamVjdC4gSW5pdGlhbGx5IHRoaXMKKyAgICAvLyBpcyB0aGUgcm9vdCBv
YmplY3QsIGJ1dCBjYWxscyB0byBCZWdpbkdQVURldmljZS9FbmRHUFVEZXZpY2UgYW5kCisgICAg
Ly8gQmVnaW5BdXhBdHRyaWJ1dGVzL0VuZEF1eEF0dHJpYnV0ZXMgY2hhbmdlIHRoZSBvYmplY3Qg
dG8gd2hpY2ggdGhlc2UKKyAgICAvLyBjYWxscyBzaG91bGQgYXBwbHkuCisgICAgdmlydHVhbCB2
b2lkIEFkZEludDY0KGNvbnN0IGNoYXIqIG5hbWUsIGludDY0IHZhbHVlKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIEFkZEludChjb25zdCBjaGFyKiBuYW1lLCBpbnQgdmFsdWUpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgQWRkU3RyaW5nKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IHN0ZDo6c3RyaW5n
JiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBBZGRCb29sKGNvbnN0IGNoYXIqIG5hbWUs
IGJvb2wgdmFsdWUpID0gMDsKKworICAgIC8vIE1hcmtlcnMgaW5kaWNhdGluZyB0aGF0IGEgR1BV
RGV2aWNlIGlzIGJlaW5nIGRlc2NyaWJlZC4KKyAgICB2aXJ0dWFsIHZvaWQgQmVnaW5HUFVEZXZp
Y2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIEVuZEdQVURldmljZSgpID0gMDsKKworICAgIC8v
IE1hcmtlcnMgaW5kaWNhdGluZyB0aGF0IGEgVmlkZW9EZWNvZGVBY2NlbGVyYXRvclN1cHBvcnRl
ZFByb2ZpbGUgaXMKKyAgICAvLyBiZWluZyBkZXNjcmliZWQuCisgICAgdmlydHVhbCB2b2lkIEJl
Z2luVmlkZW9EZWNvZGVBY2NlbGVyYXRvclN1cHBvcnRlZFByb2ZpbGUoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIEVuZFZpZGVvRGVjb2RlQWNjZWxlcmF0b3JTdXBwb3J0ZWRQcm9maWxlKCkgPSAw
OworCisgICAgLy8gTWFya2VycyBpbmRpY2F0aW5nIHRoYXQgYSBWaWRlb0VuY29kZUFjY2VsZXJh
dG9yU3VwcG9ydGVkUHJvZmlsZSBpcworICAgIC8vIGJlaW5nIGRlc2NyaWJlZC4KKyAgICB2aXJ0
dWFsIHZvaWQgQmVnaW5WaWRlb0VuY29kZUFjY2VsZXJhdG9yU3VwcG9ydGVkUHJvZmlsZSgpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgRW5kVmlkZW9FbmNvZGVBY2NlbGVyYXRvclN1cHBvcnRlZFBy
b2ZpbGUoKSA9IDA7CisKKyAgICAvLyBNYXJrZXJzIGluZGljYXRpbmcgdGhhdCAiYXV4aWxpYXJ5
IiBhdHRyaWJ1dGVzIG9mIHRoZSBHUFVJbmZvCisgICAgLy8gKGFjY29yZGluZyB0byB0aGUgRGV2
VG9vbHMgcHJvdG9jb2wpIGFyZSBiZWluZyBkZXNjcmliZWQuCisgICAgdmlydHVhbCB2b2lkIEJl
Z2luQXV4QXR0cmlidXRlcygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgRW5kQXV4QXR0cmlidXRl
cygpID0gMDsKKworICAgcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfkVudW1lcmF0b3IoKSB7fQor
ICB9OworCisgIC8vIE91dHB1dHMgdGhlIGZpZWxkcyBpbiB0aGlzIHN0cnVjdHVyZSB0byB0aGUg
cHJvdmlkZWQgZW51bWVyYXRvci4KKyAgdm9pZCBFbnVtZXJhdGVGaWVsZHMoRW51bWVyYXRvciog
ZW51bWVyYXRvcikgY29uc3Q7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgZ3B1CisKKyNlbmRpZiAg
Ly8gR1BVX0NPTkZJR19HUFVfSU5GT19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9jb25m
aWcuY2MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Ro
aXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9jb25maWcuY2MJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5
L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9jb25maWcuY2MJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw0OTIgQEAKKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQ2hyb21pdW0gQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisKKyNpbmNsdWRlICJncHVfdGVzdF9jb25maWcuaCIKKworI2lu
Y2x1ZGUgImdwdV9pbmZvLmgiCisjaW5jbHVkZSAiZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3BhcnNl
ci5oIgorCisjaWYgZGVmaW5lZChPU19MSU5VWCkKK2V4dGVybiAiQyIgeworIyAgIGluY2x1ZGUg
PHBjaS9wY2kuaD4KK30KKyNlbmRpZgorCisjaWYgZGVmaW5lZChPU19NQUNPU1gpCisjaW5jbHVk
ZSAiZ3B1X3Rlc3RfY29uZmlnX21hYy5oIgorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBncHU7
CisKKyNpZiBkZWZpbmVkKE9TX1dJTikKKworbmFtZXNwYWNlIGJhc2UgeworCituYW1lc3BhY2Ug
eworCisvLyBEaXNhYmxlIHRoZSBkZXByZWNhdGVkIGZ1bmN0aW9uIHdhcm5pbmcgZm9yIEdldFZl
cnNpb25FeAorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ5OTYpCisKK2NsYXNzIFN5c0luZm8K
K3sKKyAgcHVibGljOgorICAgIHN0YXRpYyB2b2lkIE9wZXJhdGluZ1N5c3RlbVZlcnNpb25OdW1i
ZXJzKAorICAgICAgICBpbnQzMiAqbWFqb3JfdmVyc2lvbiwgaW50MzIgKm1pbm9yX3ZlcnNpb24s
IGludDMyICpidWdmaXhfdmVyc2lvbik7Cit9OworCisvLyBzdGF0aWMKK3ZvaWQgU3lzSW5mbzo6
T3BlcmF0aW5nU3lzdGVtVmVyc2lvbk51bWJlcnMoCisgICAgaW50MzIgKm1ham9yX3ZlcnNpb24s
IGludDMyICptaW5vcl92ZXJzaW9uLCBpbnQzMiAqYnVnZml4X3ZlcnNpb24pCit7CisgIE9TVkVS
U0lPTklORk9FWCB2ZXJzaW9uX2luZm8gPSB7IHNpemVvZiB2ZXJzaW9uX2luZm8gfTsKKyAgOjpH
ZXRWZXJzaW9uRXgocmVpbnRlcnByZXRfY2FzdDxPU1ZFUlNJT05JTkZPKj4oJnZlcnNpb25faW5m
bykpOworICAqbWFqb3JfdmVyc2lvbiA9IHZlcnNpb25faW5mby5kd01ham9yVmVyc2lvbjsKKyAg
Km1pbm9yX3ZlcnNpb24gPSB2ZXJzaW9uX2luZm8uZHdNaW5vclZlcnNpb247CisgICpidWdmaXhf
dmVyc2lvbiA9IHZlcnNpb25faW5mby5kd0J1aWxkTnVtYmVyOworfQorCit9IC8vIGFub255bW91
cyBuYW1lc3BhY2UKKworfSAvLyBuYW1lc3BhY2UgYmFzZQorCit2b2lkIERldmljZUlEVG9WZW5k
b3JBbmREZXZpY2UoY29uc3Qgc3RkOjpzdHJpbmcmIGlkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQzMiogdmVuZG9yX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQzMiogZGV2aWNlX2lkKSB7CisgICp2ZW5kb3JfaWQgPSAwOworICAqZGV2aWNlX2lk
ID0gMDsKKyAgaWYgKGlkLmxlbmd0aCgpIDwgMjEpCisgICAgcmV0dXJuOworICBzdGQ6OnN0cmlu
ZyB2ZW5kb3JfaWRfc3RyaW5nID0gaWQuc3Vic3RyKDgsIDQpOworICBzdGQ6OnN0cmluZyBkZXZp
Y2VfaWRfc3RyaW5nID0gaWQuc3Vic3RyKDE3LCA0KTsKKyAgYmFzZTo6SGV4U3RyaW5nVG9VSW50
KHZlbmRvcl9pZF9zdHJpbmcsIHZlbmRvcl9pZCk7CisgIGJhc2U6OkhleFN0cmluZ1RvVUludChk
ZXZpY2VfaWRfc3RyaW5nLCBkZXZpY2VfaWQpOworfQorCitDb2xsZWN0SW5mb1Jlc3VsdCBDb2xs
ZWN0R3B1SUQodWludDMyKiB2ZW5kb3JfaWQsIHVpbnQzMiogZGV2aWNlX2lkKSB7CisgIERDSEVD
Syh2ZW5kb3JfaWQgJiYgZGV2aWNlX2lkKTsKKyAgKnZlbmRvcl9pZCA9IDA7CisgICpkZXZpY2Vf
aWQgPSAwOworCisgIC8vIFRha2VuIGZyb20gaHR0cDovL2RldmVsb3Blci5udmlkaWEuY29tL29i
amVjdC9kZXZpY2VfaWRzLmh0bWwKKyAgRElTUExBWV9ERVZJQ0VBIGRkOworICBkZC5jYiA9IHNp
emVvZihESVNQTEFZX0RFVklDRUEpOworICBzdGQ6OnN0cmluZyBpZDsKKyAgZm9yIChpbnQgaSA9
IDA7IEVudW1EaXNwbGF5RGV2aWNlc0EoTlVMTCwgaSwgJmRkLCAwKTsgKytpKSB7CisgICAgaWYg
KGRkLlN0YXRlRmxhZ3MgJiBESVNQTEFZX0RFVklDRV9QUklNQVJZX0RFVklDRSkgeworICAgICAg
aWQgPSBkZC5EZXZpY2VJRDsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgfQorCisgIGlmIChpZC5s
ZW5ndGgoKSA+IDIwKSB7CisgICAgRGV2aWNlSURUb1ZlbmRvckFuZERldmljZShpZCwgdmVuZG9y
X2lkLCBkZXZpY2VfaWQpOworICAgIGlmICgqdmVuZG9yX2lkICE9IDAgJiYgKmRldmljZV9pZCAh
PSAwKQorICAgICAgcmV0dXJuIGtDb2xsZWN0SW5mb1N1Y2Nlc3M7CisgIH0KKyAgcmV0dXJuIGtD
b2xsZWN0SW5mb05vbkZhdGFsRmFpbHVyZTsKK30KKworI2VuZGlmIC8vIGRlZmluZWQoT1NfV0lO
KQorCisjaWYgZGVmaW5lZChPU19MSU5VWCkKKworY29uc3QgdWludDMyIGtWZW5kb3JJREludGVs
ID0gMHg4MDg2OworY29uc3QgdWludDMyIGtWZW5kb3JJRE5WaWRpYSA9IDB4MTBkZTsKK2NvbnN0
IHVpbnQzMiBrVmVuZG9ySURBTUQgPSAweDEwMDI7CisKK0NvbGxlY3RJbmZvUmVzdWx0IENvbGxl
Y3RQQ0lWaWRlb0NhcmRJbmZvKEdQVUluZm8qIGdwdV9pbmZvKSB7CisgIERDSEVDSyhncHVfaW5m
byk7CisKKyAgc3RydWN0IHBjaV9hY2Nlc3MqIGFjY2VzcyA9IHBjaV9hbGxvYygpOworICBEQ0hF
Q0soYWNjZXNzICE9IE5VTEwpOworICBwY2lfaW5pdChhY2Nlc3MpOworICBwY2lfc2Nhbl9idXMo
YWNjZXNzKTsKKworICBib29sIHByaW1hcnlfZ3B1X2lkZW50aWZpZWQgPSBmYWxzZTsKKyAgZm9y
IChwY2lfZGV2KiBkZXZpY2UgPSBhY2Nlc3MtPmRldmljZXM7CisgICAgICAgZGV2aWNlICE9IE5V
TEw7IGRldmljZSA9IGRldmljZS0+bmV4dCkgeworICAgIHBjaV9maWxsX2luZm8oZGV2aWNlLCAz
Myk7CisgICAgYm9vbCBpc19ncHUgPSBmYWxzZTsKKyAgICBzd2l0Y2ggKGRldmljZS0+ZGV2aWNl
X2NsYXNzKSB7CisgICAgICBjYXNlIFBDSV9DTEFTU19ESVNQTEFZX1ZHQToKKyAgICAgIGNhc2Ug
UENJX0NMQVNTX0RJU1BMQVlfWEdBOgorICAgICAgY2FzZSBQQ0lfQ0xBU1NfRElTUExBWV8zRDoK
KyAgICAgICAgaXNfZ3B1ID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIFBDSV9D
TEFTU19ESVNQTEFZX09USEVSOgorICAgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGlmICghaXNfZ3B1KQorICAgICAgY29udGludWU7CisgICAgaWYgKGRldmljZS0+dmVu
ZG9yX2lkID09IDAgfHwgZGV2aWNlLT5kZXZpY2VfaWQgPT0gMCkKKyAgICAgIGNvbnRpbnVlOwor
CisgICAgR1BVSW5mbzo6R1BVRGV2aWNlIGdwdTsKKyAgICBncHUudmVuZG9yX2lkID0gZGV2aWNl
LT52ZW5kb3JfaWQ7CisgICAgZ3B1LmRldmljZV9pZCA9IGRldmljZS0+ZGV2aWNlX2lkOworCisg
ICAgaWYgKCFwcmltYXJ5X2dwdV9pZGVudGlmaWVkKSB7CisgICAgICBwcmltYXJ5X2dwdV9pZGVu
dGlmaWVkID0gdHJ1ZTsKKyAgICAgIGdwdV9pbmZvLT5ncHUgPSBncHU7CisgICAgfSBlbHNlIHsK
KyAgICAgIC8vIFRPRE8oem1vKTogaWYgdGhlcmUgYXJlIG11bHRpcGxlIEdQVXMsIHdlIGFzc3Vt
ZSB0aGUgbm9uIEludGVsCisgICAgICAvLyBvbmUgaXMgcHJpbWFyeS4gUmV2aXNpdCB0aGlzIGxv
Z2ljIGJlY2F1c2Ugd2UgYWN0dWFsbHkgZG9uJ3Qga25vdworICAgICAgLy8gd2hpY2ggR1BVIHdl
IGFyZSB1c2luZyBhdCB0aGlzIHBvaW50LgorICAgICAgaWYgKGdwdV9pbmZvLT5ncHUudmVuZG9y
X2lkID09IGtWZW5kb3JJREludGVsICYmCisgICAgICAgICAgZ3B1LnZlbmRvcl9pZCAhPSBrVmVu
ZG9ySURJbnRlbCkgeworICAgICAgICBncHVfaW5mby0+c2Vjb25kYXJ5X2dwdXMucHVzaF9iYWNr
KGdwdV9pbmZvLT5ncHUpOworICAgICAgICBncHVfaW5mby0+Z3B1ID0gZ3B1OworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgZ3B1X2luZm8tPnNlY29uZGFyeV9ncHVzLnB1c2hfYmFjayhncHUpOwor
ICAgICAgfQorICAgIH0KKyAgfQorCisgIC8vIERldGVjdCBPcHRpbXVzIG9yIEFNRCBTd2l0Y2hh
YmxlIEdQVS4KKyAgaWYgKGdwdV9pbmZvLT5zZWNvbmRhcnlfZ3B1cy5zaXplKCkgPT0gMSAmJgor
ICAgICAgZ3B1X2luZm8tPnNlY29uZGFyeV9ncHVzWzBdLnZlbmRvcl9pZCA9PSBrVmVuZG9ySURJ
bnRlbCkgeworICAgIGlmIChncHVfaW5mby0+Z3B1LnZlbmRvcl9pZCA9PSBrVmVuZG9ySUROVmlk
aWEpCisgICAgICBncHVfaW5mby0+b3B0aW11cyA9IHRydWU7CisgICAgaWYgKGdwdV9pbmZvLT5n
cHUudmVuZG9yX2lkID09IGtWZW5kb3JJREFNRCkKKyAgICAgIGdwdV9pbmZvLT5hbWRfc3dpdGNo
YWJsZSA9IHRydWU7CisgIH0KKworICBwY2lfY2xlYW51cChhY2Nlc3MpOworICBpZiAoIXByaW1h
cnlfZ3B1X2lkZW50aWZpZWQpCisgICAgcmV0dXJuIGtDb2xsZWN0SW5mb05vbkZhdGFsRmFpbHVy
ZTsKKyAgcmV0dXJuIGtDb2xsZWN0SW5mb1N1Y2Nlc3M7Cit9CisKK0NvbGxlY3RJbmZvUmVzdWx0
IENvbGxlY3RHcHVJRCh1aW50MzIqIHZlbmRvcl9pZCwgdWludDMyKiBkZXZpY2VfaWQpIHsKKyAg
RENIRUNLKHZlbmRvcl9pZCAmJiBkZXZpY2VfaWQpOworICAqdmVuZG9yX2lkID0gMDsKKyAgKmRl
dmljZV9pZCA9IDA7CisKKyAgR1BVSW5mbyBncHVfaW5mbzsKKyAgQ29sbGVjdEluZm9SZXN1bHQg
cmVzdWx0ID0gQ29sbGVjdFBDSVZpZGVvQ2FyZEluZm8oJmdwdV9pbmZvKTsKKyAgaWYgKHJlc3Vs
dCA9PSBrQ29sbGVjdEluZm9TdWNjZXNzKSB7CisgICAgKnZlbmRvcl9pZCA9IGdwdV9pbmZvLmdw
dS52ZW5kb3JfaWQ7CisgICAgKmRldmljZV9pZCA9IGdwdV9pbmZvLmdwdS5kZXZpY2VfaWQ7Cisg
IH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKworI2VuZGlmIC8vIGRlZmluZWQoT1NfTElOVVgpCisK
KyNpZiBkZWZpbmVkKE9TX01BQ09TWCkKKworQ29sbGVjdEluZm9SZXN1bHQgQ29sbGVjdEdwdUlE
KHVpbnQzMiogdmVuZG9yX2lkLCB1aW50MzIqIGRldmljZV9pZCkgeworICBEQ0hFQ0sodmVuZG9y
X2lkICYmIGRldmljZV9pZCk7CisKKyAgR1BVSW5mbzo6R1BVRGV2aWNlIGdwdSA9IEdldEFjdGl2
ZUdQVSgpOworICAqdmVuZG9yX2lkID0gZ3B1LnZlbmRvcl9pZDsKKyAgKmRldmljZV9pZCA9IGdw
dS5kZXZpY2VfaWQ7CisKKyAgaWYgKCp2ZW5kb3JfaWQgIT0gMCAmJiAqZGV2aWNlX2lkICE9IDAp
CisgICAgcmV0dXJuIGtDb2xsZWN0SW5mb1N1Y2Nlc3M7CisgIHJldHVybiBrQ29sbGVjdEluZm9O
b25GYXRhbEZhaWx1cmU7Cit9CisKKyNlbmRpZgorCisjaWYgZGVmaW5lZChPU19BTkRST0lEKQor
Q29sbGVjdEluZm9SZXN1bHQgQ29sbGVjdEdwdUlEKHVpbnQzMiAqdmVuZG9yX2lkLCB1aW50MzIg
KmRldmljZV9pZCkKK3sKKyAgICBEQ0hFQ0sodmVuZG9yX2lkICYmIGRldmljZV9pZCk7CisgICAg
KnZlbmRvcl9pZCA9IDA7CisgICAgKmRldmljZV9pZCA9IDA7CisgICAgcmV0dXJuIGtDb2xsZWN0
SW5mb05vbkZhdGFsRmFpbHVyZTsKK30KKyNlbmRpZiAgLy8gZGVmaW5lZChPU19BTkRST0lEKQor
CituYW1lc3BhY2UgZ3B1IHsKKworbmFtZXNwYWNlIHsKKworR1BVVGVzdENvbmZpZzo6T1MgR2V0
Q3VycmVudE9TKCkgeworI2lmIGRlZmluZWQoT1NfQ0hST01FT1MpCisgIHJldHVybiBHUFVUZXN0
Q29uZmlnOjprT3NDaHJvbWVPUzsKKyNlbGlmIGRlZmluZWQoT1NfTElOVVgpIHx8IGRlZmluZWQo
T1NfT1BFTkJTRCkKKyAgcmV0dXJuIEdQVVRlc3RDb25maWc6OmtPc0xpbnV4OworI2VsaWYgZGVm
aW5lZChPU19XSU4pCisgIGludDMyIG1ham9yX3ZlcnNpb24gPSAwOworICBpbnQzMiBtaW5vcl92
ZXJzaW9uID0gMDsKKyAgaW50MzIgYnVnZml4X3ZlcnNpb24gPSAwOworICBiYXNlOjpTeXNJbmZv
OjpPcGVyYXRpbmdTeXN0ZW1WZXJzaW9uTnVtYmVycygKKyAgICAgICZtYWpvcl92ZXJzaW9uLCAm
bWlub3JfdmVyc2lvbiwgJmJ1Z2ZpeF92ZXJzaW9uKTsKKyAgaWYgKG1ham9yX3ZlcnNpb24gPT0g
NSkKKyAgICByZXR1cm4gR1BVVGVzdENvbmZpZzo6a09zV2luWFA7CisgIGlmIChtYWpvcl92ZXJz
aW9uID09IDYgJiYgbWlub3JfdmVyc2lvbiA9PSAwKQorICAgIHJldHVybiBHUFVUZXN0Q29uZmln
OjprT3NXaW5WaXN0YTsKKyAgaWYgKG1ham9yX3ZlcnNpb24gPT0gNiAmJiBtaW5vcl92ZXJzaW9u
ID09IDEpCisgICAgcmV0dXJuIEdQVVRlc3RDb25maWc6OmtPc1dpbjc7CisgIGlmIChtYWpvcl92
ZXJzaW9uID09IDYgJiYgKG1pbm9yX3ZlcnNpb24gPT0gMiB8fCBtaW5vcl92ZXJzaW9uID09IDMp
KQorICAgIHJldHVybiBHUFVUZXN0Q29uZmlnOjprT3NXaW44OworICBpZiAobWFqb3JfdmVyc2lv
biA9PSAxMCkKKyAgICByZXR1cm4gR1BVVGVzdENvbmZpZzo6a09zV2luMTA7CisjZWxpZiBkZWZp
bmVkKE9TX01BQ09TWCkKKyAgaW50MzIgbWFqb3JfdmVyc2lvbiA9IDA7CisgIGludDMyIG1pbm9y
X3ZlcnNpb24gPSAwOworICBpbnQzMiBidWdmaXhfdmVyc2lvbiA9IDA7CisgIGJhc2U6OlN5c0lu
Zm86Ok9wZXJhdGluZ1N5c3RlbVZlcnNpb25OdW1iZXJzKAorICAgICAgJm1ham9yX3ZlcnNpb24s
ICZtaW5vcl92ZXJzaW9uLCAmYnVnZml4X3ZlcnNpb24pOworICBpZiAobWFqb3JfdmVyc2lvbiA9
PSAxMCkgeworICAgIHN3aXRjaCAobWlub3JfdmVyc2lvbikgeworICAgICAgY2FzZSA1OgorICAg
ICAgICByZXR1cm4gR1BVVGVzdENvbmZpZzo6a09zTWFjTGVvcGFyZDsKKyAgICAgIGNhc2UgNjoK
KyAgICAgICAgcmV0dXJuIEdQVVRlc3RDb25maWc6OmtPc01hY1Nub3dMZW9wYXJkOworICAgICAg
Y2FzZSA3OgorICAgICAgICByZXR1cm4gR1BVVGVzdENvbmZpZzo6a09zTWFjTGlvbjsKKyAgICAg
IGNhc2UgODoKKyAgICAgICAgcmV0dXJuIEdQVVRlc3RDb25maWc6OmtPc01hY01vdW50YWluTGlv
bjsKKyAgICAgIGNhc2UgOToKKyAgICAgICAgcmV0dXJuIEdQVVRlc3RDb25maWc6OmtPc01hY01h
dmVyaWNrczsKKyAgICAgIGNhc2UgMTA6CisgICAgICAgIHJldHVybiBHUFVUZXN0Q29uZmlnOjpr
T3NNYWNZb3NlbWl0ZTsKKyAgICAgIGNhc2UgMTE6CisgICAgICAgIHJldHVybiBHUFVUZXN0Q29u
ZmlnOjprT3NNYWNFbENhcGl0YW47CisgICAgfQorICB9CisjZWxpZiBkZWZpbmVkKE9TX0FORFJP
SUQpCisgIHJldHVybiBHUFVUZXN0Q29uZmlnOjprT3NBbmRyb2lkOworI2VuZGlmCisgIHJldHVy
biBHUFVUZXN0Q29uZmlnOjprT3NVbmtub3duOworfQorCit9ICAvLyBuYW1lc3BhY2UgYW5vbnlt
b3VzCisKK0dQVVRlc3RDb25maWc6OkdQVVRlc3RDb25maWcoKQorICAgIDogdmFsaWRhdGVfZ3B1
X2luZm9fKHRydWUpLAorICAgICAgb3NfKGtPc1Vua25vd24pLAorICAgICAgZ3B1X2RldmljZV9p
ZF8oMCksCisgICAgICBidWlsZF90eXBlXyhrQnVpbGRUeXBlVW5rbm93biksCisgICAgICBhcGlf
KGtBUElVbmtub3duKSB7fQorCitHUFVUZXN0Q29uZmlnOjp+R1BVVGVzdENvbmZpZygpIHsKK30K
Kwordm9pZCBHUFVUZXN0Q29uZmlnOjpzZXRfb3MoaW50MzIgb3MpIHsKKyAgRENIRUNLX0VRKDAs
IG9zICYgfihrT3NBbmRyb2lkIHwga09zV2luIHwga09zTWFjIHwga09zTGludXggfCBrT3NDaHJv
bWVPUykpOworICBvc18gPSBvczsKK30KKwordm9pZCBHUFVUZXN0Q29uZmlnOjpBZGRHUFVWZW5k
b3IodWludDMyIGdwdV92ZW5kb3IpIHsKKyAgRENIRUNLX05FKDB1LCBncHVfdmVuZG9yKTsKKyAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBncHVfdmVuZG9yXy5zaXplKCk7ICsraSkKKyAgICBEQ0hF
Q0tfTkUoZ3B1X3ZlbmRvcl9baV0sIGdwdV92ZW5kb3IpOworICBncHVfdmVuZG9yXy5wdXNoX2Jh
Y2soZ3B1X3ZlbmRvcik7Cit9CisKK3ZvaWQgR1BVVGVzdENvbmZpZzo6c2V0X2dwdV9kZXZpY2Vf
aWQodWludDMyIGlkKSB7CisgIGdwdV9kZXZpY2VfaWRfID0gaWQ7Cit9CisKK3ZvaWQgR1BVVGVz
dENvbmZpZzo6c2V0X2J1aWxkX3R5cGUoaW50MzIgYnVpbGRfdHlwZSkgeworICBEQ0hFQ0tfRVEo
MCwgYnVpbGRfdHlwZSAmIH4oa0J1aWxkVHlwZVJlbGVhc2UgfCBrQnVpbGRUeXBlRGVidWcpKTsK
KyAgYnVpbGRfdHlwZV8gPSBidWlsZF90eXBlOworfQorCit2b2lkIEdQVVRlc3RDb25maWc6OnNl
dF9hcGkoaW50MzIgYXBpKSB7CisgIERDSEVDS19FUSgwLCBhcGkgJiB+KGtBUElEM0Q5IHwga0FQ
SUQzRDExIHwga0FQSUdMRGVza3RvcCB8IGtBUElHTEVTKSk7CisgIGFwaV8gPSBhcGk7Cit9CisK
K2Jvb2wgR1BVVGVzdENvbmZpZzo6SXNWYWxpZCgpIGNvbnN0IHsKKyAgaWYgKCF2YWxpZGF0ZV9n
cHVfaW5mb18pCisgICAgcmV0dXJuIHRydWU7CisgIGlmIChncHVfZGV2aWNlX2lkXyAhPSAwICYm
IChncHVfdmVuZG9yXy5zaXplKCkgIT0gMSB8fCBncHVfdmVuZG9yX1swXSA9PSAwKSkKKyAgICBy
ZXR1cm4gZmFsc2U7CisgIHJldHVybiB0cnVlOworfQorCitib29sIEdQVVRlc3RDb25maWc6Ok92
ZXJsYXBzV2l0aChjb25zdCBHUFVUZXN0Q29uZmlnJiBjb25maWcpIGNvbnN0IHsKKyAgRENIRUNL
KElzVmFsaWQoKSk7CisgIERDSEVDSyhjb25maWcuSXNWYWxpZCgpKTsKKyAgaWYgKGNvbmZpZy5v
c18gIT0ga09zVW5rbm93biAmJiBvc18gIT0ga09zVW5rbm93biAmJgorICAgICAgKG9zXyAmIGNv
bmZpZy5vc18pID09IDApCisgICAgcmV0dXJuIGZhbHNlOworICBpZiAoY29uZmlnLmdwdV92ZW5k
b3JfLnNpemUoKSA+IDAgJiYgZ3B1X3ZlbmRvcl8uc2l6ZSgpID4gMCkgeworICAgIGJvb2wgc2hh
cmVkID0gZmFsc2U7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb25maWcuZ3B1X3ZlbmRv
cl8uc2l6ZSgpICYmICFzaGFyZWQ7ICsraSkgeworICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGog
PCBncHVfdmVuZG9yXy5zaXplKCk7ICsraikgeworICAgICAgICBpZiAoY29uZmlnLmdwdV92ZW5k
b3JfW2ldID09IGdwdV92ZW5kb3JfW2pdKSB7CisgICAgICAgICAgc2hhcmVkID0gdHJ1ZTsKKyAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICBpZiAoIXNoYXJl
ZCkKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgfQorICBpZiAoY29uZmlnLmdwdV9kZXZpY2VfaWRf
ICE9IDAgJiYgZ3B1X2RldmljZV9pZF8gIT0gMCAmJgorICAgICAgZ3B1X2RldmljZV9pZF8gIT0g
Y29uZmlnLmdwdV9kZXZpY2VfaWRfKQorICAgIHJldHVybiBmYWxzZTsKKyAgaWYgKGNvbmZpZy5i
dWlsZF90eXBlXyAhPSBrQnVpbGRUeXBlVW5rbm93biAmJgorICAgICAgYnVpbGRfdHlwZV8gIT0g
a0J1aWxkVHlwZVVua25vd24gJiYKKyAgICAgIChidWlsZF90eXBlXyAmIGNvbmZpZy5idWlsZF90
eXBlXykgPT0gMCkKKyAgICByZXR1cm4gZmFsc2U7CisgIHJldHVybiB0cnVlOworfQorCit2b2lk
IEdQVVRlc3RDb25maWc6OkRpc2FibGVHUFVJbmZvVmFsaWRhdGlvbigpIHsKKyAgdmFsaWRhdGVf
Z3B1X2luZm9fID0gZmFsc2U7Cit9CisKK3ZvaWQgR1BVVGVzdENvbmZpZzo6Q2xlYXJHUFVWZW5k
b3IoKSB7CisgIGdwdV92ZW5kb3JfLmNsZWFyKCk7Cit9CisKK0dQVVRlc3RCb3RDb25maWc6On5H
UFVUZXN0Qm90Q29uZmlnKCkgeworfQorCit2b2lkIEdQVVRlc3RCb3RDb25maWc6OkFkZEdQVVZl
bmRvcih1aW50MzIgZ3B1X3ZlbmRvcikgeworICBEQ0hFQ0tfRVEoMHUsIEdQVVRlc3RDb25maWc6
OmdwdV92ZW5kb3IoKS5zaXplKCkpOworICBHUFVUZXN0Q29uZmlnOjpBZGRHUFVWZW5kb3IoZ3B1
X3ZlbmRvcik7Cit9CisKK2Jvb2wgR1BVVGVzdEJvdENvbmZpZzo6U2V0R1BVSW5mbyhjb25zdCBH
UFVJbmZvJiBncHVfaW5mbykgeworICBEQ0hFQ0sodmFsaWRhdGVfZ3B1X2luZm9fKTsKKyAgaWYg
KGdwdV9pbmZvLmdwdS5kZXZpY2VfaWQgPT0gMCB8fCBncHVfaW5mby5ncHUudmVuZG9yX2lkID09
IDApCisgICAgcmV0dXJuIGZhbHNlOworICBDbGVhckdQVVZlbmRvcigpOworICBBZGRHUFVWZW5k
b3IoZ3B1X2luZm8uZ3B1LnZlbmRvcl9pZCk7CisgIHNldF9ncHVfZGV2aWNlX2lkKGdwdV9pbmZv
LmdwdS5kZXZpY2VfaWQpOworICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBHUFVUZXN0Qm90Q29u
ZmlnOjpJc1ZhbGlkKCkgY29uc3QgeworICBzd2l0Y2ggKG9zKCkpIHsKKyAgICBjYXNlIGtPc1dp
blhQOgorICAgIGNhc2Uga09zV2luVmlzdGE6CisgICAgY2FzZSBrT3NXaW43OgorICAgIGNhc2Ug
a09zV2luODoKKyAgICBjYXNlIGtPc1dpbjEwOgorICAgIGNhc2Uga09zTWFjTGVvcGFyZDoKKyAg
ICBjYXNlIGtPc01hY1Nub3dMZW9wYXJkOgorICAgIGNhc2Uga09zTWFjTGlvbjoKKyAgICBjYXNl
IGtPc01hY01vdW50YWluTGlvbjoKKyAgICBjYXNlIGtPc01hY01hdmVyaWNrczoKKyAgICBjYXNl
IGtPc01hY1lvc2VtaXRlOgorICAgIGNhc2Uga09zTWFjRWxDYXBpdGFuOgorICAgIGNhc2Uga09z
TGludXg6CisgICAgY2FzZSBrT3NDaHJvbWVPUzoKKyAgICBjYXNlIGtPc0FuZHJvaWQ6CisgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIGZhbHNlOworICB9CisgIGlmICh2
YWxpZGF0ZV9ncHVfaW5mb18pIHsKKyAgICBpZiAoZ3B1X3ZlbmRvcigpLnNpemUoKSAhPSAxIHx8
IGdwdV92ZW5kb3IoKVswXSA9PSAwKQorICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChncHVf
ZGV2aWNlX2lkKCkgPT0gMCkKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgfQorICBzd2l0Y2ggKGJ1
aWxkX3R5cGUoKSkgeworICAgIGNhc2Uga0J1aWxkVHlwZVJlbGVhc2U6CisgICAgY2FzZSBrQnVp
bGRUeXBlRGVidWc6CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIGZh
bHNlOworICB9CisgIHJldHVybiB0cnVlOworfQorCitib29sIEdQVVRlc3RCb3RDb25maWc6Ok1h
dGNoZXMoY29uc3QgR1BVVGVzdENvbmZpZyYgY29uZmlnKSBjb25zdCB7CisgIERDSEVDSyhJc1Zh
bGlkKCkpOworICBEQ0hFQ0soY29uZmlnLklzVmFsaWQoKSk7CisgIGlmIChjb25maWcub3MoKSAh
PSBrT3NVbmtub3duICYmIChvcygpICYgY29uZmlnLm9zKCkpID09IDApCisgICAgcmV0dXJuIGZh
bHNlOworICBpZiAoY29uZmlnLmdwdV92ZW5kb3IoKS5zaXplKCkgPiAwKSB7CisgICAgYm9vbCBj
b250YWluZWQgPSBmYWxzZTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbmZpZy5ncHVf
dmVuZG9yKCkuc2l6ZSgpOyArK2kpIHsKKyAgICAgIGlmIChjb25maWcuZ3B1X3ZlbmRvcigpW2ld
ID09IGdwdV92ZW5kb3IoKVswXSkgeworICAgICAgICBjb250YWluZWQgPSB0cnVlOworICAgICAg
ICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgICAgaWYgKCFjb250YWluZWQpCisgICAgICByZXR1
cm4gZmFsc2U7CisgIH0KKyAgaWYgKGNvbmZpZy5ncHVfZGV2aWNlX2lkKCkgIT0gMCAmJgorICAg
ICAgZ3B1X2RldmljZV9pZCgpICE9IGNvbmZpZy5ncHVfZGV2aWNlX2lkKCkpCisgICAgcmV0dXJu
IGZhbHNlOworICBpZiAoY29uZmlnLmJ1aWxkX3R5cGUoKSAhPSBrQnVpbGRUeXBlVW5rbm93biAm
JgorICAgICAgKGJ1aWxkX3R5cGUoKSAmIGNvbmZpZy5idWlsZF90eXBlKCkpID09IDApCisgICAg
cmV0dXJuIGZhbHNlOworICBpZiAoY29uZmlnLmFwaSgpICE9IDAgJiYgKGFwaSgpICYgY29uZmln
LmFwaSgpKSA9PSAwKQorICAgIHJldHVybiBmYWxzZTsKKyAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgR1BVVGVzdEJvdENvbmZpZzo6TWF0Y2hlcyhjb25zdCBzdGQ6OnN0cmluZyYgY29uZmlnX2Rh
dGEpIGNvbnN0IHsKKyAgR1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNlciBwYXJzZXI7CisgIEdQVVRl
c3RDb25maWcgY29uZmlnOworCisgIGlmICghcGFyc2VyLlBhcnNlQ29uZmlnKGNvbmZpZ19kYXRh
LCAmY29uZmlnKSkKKyAgICByZXR1cm4gZmFsc2U7CisgIHJldHVybiBNYXRjaGVzKGNvbmZpZyk7
Cit9CisKK2Jvb2wgR1BVVGVzdEJvdENvbmZpZzo6TG9hZEN1cnJlbnRDb25maWcoY29uc3QgR1BV
SW5mbyAqZ3B1X2luZm8pCit7CisgICAgYm9vbCBydDsKKyAgICBpZiAoZ3B1X2luZm8gPT0gTlVM
TCkKKyAgICB7CisgICAgICAgIEdQVUluZm8gbXlfZ3B1X2luZm87CisgICAgICAgIENvbGxlY3RJ
bmZvUmVzdWx0IHJlc3VsdCA9CisgICAgICAgICAgICBDb2xsZWN0R3B1SUQoJm15X2dwdV9pbmZv
LmdwdS52ZW5kb3JfaWQsICZteV9ncHVfaW5mby5ncHUuZGV2aWNlX2lkKTsKKyAgICAgICAgaWYg
KHJlc3VsdCAhPSBrQ29sbGVjdEluZm9TdWNjZXNzKQorICAgICAgICB7CisgICAgICAgICAgICBM
T0coRVJST1IpIDw8ICJGYWlsIHRvIGlkZW50aWZ5IEdQVVxuIjsKKyAgICAgICAgICAgIERpc2Fi
bGVHUFVJbmZvVmFsaWRhdGlvbigpOworICAgICAgICAgICAgcnQgPSB0cnVlOworICAgICAgICB9
CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcnQgPSBTZXRHUFVJbmZvKG15
X2dwdV9pbmZvKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBy
dCA9IFNldEdQVUluZm8oKmdwdV9pbmZvKTsKKyAgICB9CisgICAgc2V0X29zKEdldEN1cnJlbnRP
UygpKTsKKyAgICBpZiAob3MoKSA9PSBrT3NVbmtub3duKQorICAgIHsKKyAgICAgICAgTE9HKEVS
Uk9SKSA8PCAiVW5rbm93biBPU1xuIjsKKyAgICAgICAgcnQgPSBmYWxzZTsKKyAgICB9CisjaWYg
ZGVmaW5lZChOREVCVUcpCisgICAgc2V0X2J1aWxkX3R5cGUoa0J1aWxkVHlwZVJlbGVhc2UpOwor
I2Vsc2UKKyAgICBzZXRfYnVpbGRfdHlwZShrQnVpbGRUeXBlRGVidWcpOworI2VuZGlmCisgICAg
cmV0dXJuIHJ0OworfQorCisvLyBzdGF0aWMKK2Jvb2wgR1BVVGVzdEJvdENvbmZpZzo6Q3VycmVu
dENvbmZpZ01hdGNoZXMoY29uc3Qgc3RkOjpzdHJpbmcmIGNvbmZpZ19kYXRhKSB7CisgIEdQVVRl
c3RCb3RDb25maWcgbXlfY29uZmlnOworICBpZiAoIW15X2NvbmZpZy5Mb2FkQ3VycmVudENvbmZp
ZyhOVUxMKSkKKyAgICByZXR1cm4gZmFsc2U7CisgIHJldHVybiBteV9jb25maWcuTWF0Y2hlcyhj
b25maWdfZGF0YSk7Cit9CisKKy8vIHN0YXRpYworYm9vbCBHUFVUZXN0Qm90Q29uZmlnOjpDdXJy
ZW50Q29uZmlnTWF0Y2hlcygKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIGNv
bmZpZ3MpIHsKKyAgR1BVVGVzdEJvdENvbmZpZyBteV9jb25maWc7CisgIGlmICghbXlfY29uZmln
LkxvYWRDdXJyZW50Q29uZmlnKE5VTEwpKQorICAgIHJldHVybiBmYWxzZTsKKyAgZm9yIChzaXpl
X3QgaSA9IDAgOyBpIDwgY29uZmlncy5zaXplKCk7ICsraSkgeworICAgIGlmIChteV9jb25maWcu
TWF0Y2hlcyhjb25maWdzW2ldKSkKKyAgICAgIHJldHVybiB0cnVlOworICB9CisgIHJldHVybiBm
YWxzZTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGdwdQorCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV90
ZXN0X2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy90aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X3Rlc3RfY29uZmlnLmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJk
X3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9jb25maWcuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDE0MCBAQAorLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBDaHJvbWl1
bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworI2lmbmRlZiBHUFVfQ09ORklHX0dQVV9URVNUX0NP
TkZJR19IXworI2RlZmluZSBHUFVfQ09ORklHX0dQVV9URVNUX0NPTkZJR19IXworCisjaW5jbHVk
ZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFuZ2xlX2NvbmZpZy5o
IgorCituYW1lc3BhY2UgZ3B1IHsKKworc3RydWN0IEdQVUluZm87CisKK2NsYXNzIEdQVV9FWFBP
UlQgR1BVVGVzdENvbmZpZyB7CisgcHVibGljOgorICBlbnVtIE9TIHsKKyAgICBrT3NVbmtub3du
ID0gMCwKKyAgICBrT3NXaW5YUCA9IDEgPDwgMCwKKyAgICBrT3NXaW5WaXN0YSA9IDEgPDwgMSwK
KyAgICBrT3NXaW43ID0gMSA8PCAyLAorICAgIGtPc1dpbjggPSAxIDw8IDMsCisgICAga09zTWFj
TGVvcGFyZCA9IDEgPDwgNCwKKyAgICBrT3NNYWNTbm93TGVvcGFyZCA9IDEgPDwgNSwKKyAgICBr
T3NNYWNMaW9uID0gMSA8PCA2LAorICAgIGtPc01hY01vdW50YWluTGlvbiA9IDEgPDwgNywKKyAg
ICBrT3NNYWNNYXZlcmlja3MgPSAxIDw8IDgsCisgICAga09zTWFjWW9zZW1pdGUgPSAxIDw8IDks
CisgICAga09zTWFjRWxDYXBpdGFuID0gMSA8PCAxMCwKKyAgICBrT3NNYWMgPSBrT3NNYWNMZW9w
YXJkIHwga09zTWFjU25vd0xlb3BhcmQgfCBrT3NNYWNMaW9uIHwKKyAgICAgICAgICAgICBrT3NN
YWNNb3VudGFpbkxpb24gfCBrT3NNYWNNYXZlcmlja3MgfCBrT3NNYWNZb3NlbWl0ZSB8CisgICAg
ICAgICAgICAga09zTWFjRWxDYXBpdGFuLAorICAgIGtPc0xpbnV4ID0gMSA8PCAxMSwKKyAgICBr
T3NDaHJvbWVPUyA9IDEgPDwgMTIsCisgICAga09zQW5kcm9pZCA9IDEgPDwgMTMsCisgICAga09z
V2luMTAgPSAxIDw8IDE0LAorICAgIGtPc1dpbiA9IGtPc1dpblhQIHwga09zV2luVmlzdGEgfCBr
T3NXaW43IHwga09zV2luOCB8IGtPc1dpbjEwLAorICB9OworCisgIGVudW0gQnVpbGRUeXBlIHsK
KyAgICBrQnVpbGRUeXBlVW5rbm93biA9IDAsCisgICAga0J1aWxkVHlwZVJlbGVhc2UgPSAxIDw8
IDAsCisgICAga0J1aWxkVHlwZURlYnVnID0gMSA8PCAxLAorICB9OworCisgIGVudW0gQVBJIHsK
KyAgICBrQVBJVW5rbm93biA9IDAsCisgICAga0FQSUQzRDkgPSAxIDw8IDAsCisgICAga0FQSUQz
RDExID0gMSA8PCAxLAorICAgIGtBUElHTERlc2t0b3AgPSAxIDw8IDIsCisgICAga0FQSUdMRVMg
PSAxIDw8IDMsCisgIH07CisKKyAgR1BVVGVzdENvbmZpZygpOworICB2aXJ0dWFsIH5HUFVUZXN0
Q29uZmlnKCk7CisKKyAgdm9pZCBzZXRfb3MoaW50MzIgb3MpOworICB2b2lkIHNldF9ncHVfZGV2
aWNlX2lkKHVpbnQzMiBpZCk7CisgIHZvaWQgc2V0X2J1aWxkX3R5cGUoaW50MzIgYnVpbGRfdHlw
ZSk7CisgIHZvaWQgc2V0X2FwaShpbnQzMiBhcGkpOworCisgIHZpcnR1YWwgdm9pZCBBZGRHUFVW
ZW5kb3IodWludDMyIGdwdV92ZW5kb3IpOworCisgIGludDMyIG9zKCkgY29uc3QgeyByZXR1cm4g
b3NfOyB9CisgIGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQzMj4mIGdwdV92ZW5kb3IoKSBjb25zdCB7
IHJldHVybiBncHVfdmVuZG9yXzsgfQorICB1aW50MzIgZ3B1X2RldmljZV9pZCgpIGNvbnN0IHsg
cmV0dXJuIGdwdV9kZXZpY2VfaWRfOyB9CisgIGludDMyIGJ1aWxkX3R5cGUoKSBjb25zdCB7IHJl
dHVybiBidWlsZF90eXBlXzsgfQorICBpbnQzMiBhcGkoKSBjb25zdCB7IHJldHVybiBhcGlfOyB9
CisKKyAgLy8gQ2hlY2sgaWYgdGhlIGNvbmZpZyBpcyB2YWxpZC4gRm9yIGV4YW1wbGUsIGlmIGdw
dV9kZXZpY2VfaWRfIGlzIHNldCwgYnV0CisgIC8vIGdwdV92ZW5kb3JfIGlzIHVua25vd24sIHRo
ZW4gaXQncyBpbnZhbGlkLgorICB2aXJ0dWFsIGJvb2wgSXNWYWxpZCgpIGNvbnN0OworCisgIC8v
IENoZWNrIGlmIHR3byBjb25maWdzIG92ZXJsYXAsIGkuZS4sIGlmIHRoZXJlIGV4aXN0cyBhIGNv
bmZpZyB0aGF0IG1hdGNoZXMKKyAgLy8gYm90aCBjb25maWdzLgorICBib29sIE92ZXJsYXBzV2l0
aChjb25zdCBHUFVUZXN0Q29uZmlnJiBjb25maWcpIGNvbnN0OworCisgIC8vIERpc2FibGUgdmFs
aWRhdGlvbiBvZiBHUFUgdmVuZG9yIGFuZCBkZXZpY2UgaWRzLgorICB2b2lkIERpc2FibGVHUFVJ
bmZvVmFsaWRhdGlvbigpOworCisgcHJvdGVjdGVkOgorICB2b2lkIENsZWFyR1BVVmVuZG9yKCk7
CisKKyAgLy8gSW5kaWNhdGVzIHRoYXQgdGhlIE9TIGhhcyB0aGUgbm90aW9uIG9mIGEgbnVtZXJp
YyBHUFUgdmVuZG9yIGFuZCBkZXZpY2UgaWQKKyAgLy8gYW5kIHRoaXMgZGF0YSBzaG91bGQgYmUg
dmFsaWRhdGVkLgorICBib29sIHZhbGlkYXRlX2dwdV9pbmZvXzsKKworIHByaXZhdGU6CisgIC8v
IG9wZXJhdGluZyBzeXN0ZW0uCisgIGludDMyIG9zXzsKKworICAvLyBHUFUgdmVuZG9yLgorICBz
dGQ6OnZlY3Rvcjx1aW50MzI+IGdwdV92ZW5kb3JfOworCisgIC8vIEdQVSBkZXZpY2UgaWQgKHVu
aXF1ZSB0byBlYWNoIHZlbmRvcikuCisgIHVpbnQzMiBncHVfZGV2aWNlX2lkXzsKKworICAvLyBS
ZWxlYXNlIG9yIERlYnVnLgorICBpbnQzMiBidWlsZF90eXBlXzsKKworICAvLyBCYWNrLWVuZCBy
ZW5kZXJpbmcgQVBJcy4KKyAgaW50MzIgYXBpXzsKK307CisKK2NsYXNzIEdQVV9FWFBPUlQgR1BV
VGVzdEJvdENvbmZpZyA6IHB1YmxpYyBHUFVUZXN0Q29uZmlnIHsKKyBwdWJsaWM6CisgIEdQVVRl
c3RCb3RDb25maWcoKSB7IH0KKyAgfkdQVVRlc3RCb3RDb25maWcoKSBvdmVycmlkZTsKKworICAv
LyBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIG5vIGdwdV92ZW5kb3IgaXMgYWRkZWQu
CisgIHZvaWQgQWRkR1BVVmVuZG9yKHVpbnQzMiBncHVfdmVuZG9yKSBvdmVycmlkZTsKKworICAv
LyBSZXR1cm4gZmFsc2UgaWYgZ3B1X2luZm8gZG9lcyBub3QgaGF2ZSB2YWxpZCB2ZW5kb3JfaWQg
YW5kIGRldmljZV9pZC4KKyAgYm9vbCBTZXRHUFVJbmZvKGNvbnN0IEdQVUluZm8mIGdwdV9pbmZv
KTsKKworICAvLyBDaGVjayBpZiB0aGUgYm90IGNvbmZpZyBpcyB2YWxpZCwgaS5lLiwgaWYgaXQg
aXMgb25lIHZhbGlkIHRlc3QtYm90CisgIC8vIGVudmlyb25tZW50LiBGb3IgZXhhbXBsZSwgaWYg
YSBmaWVsZCBpcyB1bmtub3duLCBvciBpZiBPUyBpcyBub3Qgb25lCisgIC8vIGZ1bGx5IGRlZmlu
ZWQgT1MsIHRoZW4gaXQncyB2YWxpZC4KKyAgYm9vbCBJc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGU7
CisKKyAgLy8gQ2hlY2sgaWYgYSBib3QgY29uZmlnIG1hdGNoZXMgYSB0ZXN0IGNvbmZpZywgaS5l
LiwgdGhlIHRlc3QgY29uZmlnIGlzIGEKKyAgLy8gc3VwZXJzZXQgb2YgdGhlIGJvdCBjb25maWcu
CisgIGJvb2wgTWF0Y2hlcyhjb25zdCBHUFVUZXN0Q29uZmlnJiBjb25maWcpIGNvbnN0OworICBi
b29sIE1hdGNoZXMoY29uc3Qgc3RkOjpzdHJpbmcmIGNvbmZpZ19kYXRhKSBjb25zdDsKKworICAv
LyBTZXR1cCB0aGUgY29uZmlnIHdpdGggdGhlIGN1cnJlbnQgZ3B1IHRlc3RpbmcgZW52aXJvbm1l
bnQuCisgIC8vIElmIGdwdV9pbmZvIGlzIE5VTEwsIGNvbGxlY3QgR1BVSW5mbyBmaXJzdC4KKyAg
Ym9vbCBMb2FkQ3VycmVudENvbmZpZyhjb25zdCBHUFVJbmZvKiBncHVfaW5mbyk7CisKKyAgLy8g
Q2hlY2sgaWYgdGhpcyBib3QncyBjb25maWcgbWF0Y2hlcyB8Y29uZmlnX2RhdGF8IG9yIGFueSBv
ZiB0aGUgfGNvbmZpZ3N8LgorICBzdGF0aWMgYm9vbCBDdXJyZW50Q29uZmlnTWF0Y2hlcyhjb25z
dCBzdGQ6OnN0cmluZyYgY29uZmlnX2RhdGEpOworICBzdGF0aWMgYm9vbCBDdXJyZW50Q29uZmln
TWF0Y2hlcyhjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIGNvbmZpZ3MpOworfTsKKwor
fSAgLy8gbmFtZXNwYWNlIGdwdQorCisjZW5kaWYgIC8vIEdQVV9DT05GSUdfR1BVX1RFU1RfQ09O
RklHX0hfCisKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9w
YXJ0eS9ncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X3Rlc3RfY29uZmlnX21hYy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9ncHVf
dGVzdF9leHBlY3RhdGlvbnMvZ3B1X3Rlc3RfY29uZmlnX21hYy5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9ncHVfdGVzdF9l
eHBlY3RhdGlvbnMvZ3B1X3Rlc3RfY29uZmlnX21hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMjggQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisvLyBncHVfdGVzdF9jb25maWdfbWFjLmg6CisvLyAgIEhlbHBl
ciBmdW5jdGlvbnMgZm9yIGdwdV90ZXN0X2NvbmZpZyB0aGF0IGhhdmUgdG8gYmUgY29tcGlsZWQg
aW4gT2JqZWN0aXZlQysrCisvLworCisjaWZuZGVmIEdQVV9URVNUX0VYUEVDVEFUSU9OU19HUFVf
VEVTVF9DT05GSUdfTUFDX0hfCisjZGVmaW5lIEdQVV9URVNUX0VYUEVDVEFUSU9OU19HUFVfVEVT
VF9DT05GSUdfTUFDX0hfCisKKyNpbmNsdWRlICJncHVfaW5mby5oIgorCituYW1lc3BhY2UgYmFz
ZSB7CisKK2NsYXNzIFN5c0luZm8KK3sKKyAgcHVibGljOgorICAgIHN0YXRpYyB2b2lkIE9wZXJh
dGluZ1N5c3RlbVZlcnNpb25OdW1iZXJzKAorICAgICAgICBpbnQzMiAqbWFqb3JfdmVyc2lvbiwg
aW50MzIgKm1pbm9yX3ZlcnNpb24sIGludDMyICpidWdmaXhfdmVyc2lvbik7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBiYXNlCisKK2dwdTo6R1BVSW5mbzo6R1BVRGV2aWNlIEdldEFjdGl2ZUdQVSgp
OworCisjZW5kaWYgLy8gR1BVX1RFU1RfRVhQRUNUQVRJT05TX0dQVV9URVNUX0NPTkZJR19NQUNf
SF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9n
cHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X3Rlc3RfY29uZmlnX21hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvZ3B1X3Rlc3Rf
ZXhwZWN0YXRpb25zL2dwdV90ZXN0X2NvbmZpZ19tYWMubW0JKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVj
dGF0aW9ucy9ncHVfdGVzdF9jb25maWdfbWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NjcgQEAKKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisKKy8vIGdwdV90ZXN0X2NvbmZpZ19tYWMubW06CisvLyAgIEhlbHBlciBmdW5jdGlv
bnMgZm9yIGdwdV90ZXN0X2NvbmZpZyB0aGF0IGhhdmUgdG8gYmUgY29tcGlsZWQgaW4gT2JqZWN0
aXZlQysrCisKKyNpbmNsdWRlICJncHVfdGVzdF9jb25maWdfbWFjLmgiCisKKyNpbXBvcnQgPENv
Y29hL0NvY29hLmg+CisKK25hbWVzcGFjZSBiYXNlIHsKKwordm9pZCBTeXNJbmZvOjpPcGVyYXRp
bmdTeXN0ZW1WZXJzaW9uTnVtYmVycygKKyAgICBpbnQzMiAqbWFqb3JfdmVyc2lvbiwgaW50MzIg
Km1pbm9yX3ZlcnNpb24sIGludDMyICpidWdmaXhfdmVyc2lvbikKK3sKKyNpZiBNQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA8IE1BQ19PU19YX1ZFUlNJT05fMTBfOAorICBHZXN0YWx0KGdl
c3RhbHRTeXN0ZW1WZXJzaW9uTWFqb3IsIHJlaW50ZXJwcmV0X2Nhc3Q8U0ludDMyKj4obWFqb3Jf
dmVyc2lvbikpOworICBHZXN0YWx0KGdlc3RhbHRTeXN0ZW1WZXJzaW9uTWlub3IsIHJlaW50ZXJw
cmV0X2Nhc3Q8U0ludDMyKj4obWlub3JfdmVyc2lvbikpOworICBHZXN0YWx0KGdlc3RhbHRTeXN0
ZW1WZXJzaW9uQnVnRml4LCByZWludGVycHJldF9jYXN0PFNJbnQzMio+KGJ1Z2ZpeF92ZXJzaW9u
KSk7CisjZWxzZQorICBOU09wZXJhdGluZ1N5c3RlbVZlcnNpb24gdmVyc2lvbiA9IFtbTlNQcm9j
ZXNzSW5mbyBwcm9jZXNzSW5mb10gb3BlcmF0aW5nU3lzdGVtVmVyc2lvbl07CisgICptYWpvcl92
ZXJzaW9uID0gdmVyc2lvbi5tYWpvclZlcnNpb247CisgICptaW5vcl92ZXJzaW9uID0gdmVyc2lv
bi5taW5vclZlcnNpb247CisgICpidWdmaXhfdmVyc2lvbiA9IHZlcnNpb24ucGF0Y2hWZXJzaW9u
OworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIGJhc2UKKworVUludDMyIEdldEVudHJ5UHJv
cGVydHkoaW9fcmVnaXN0cnlfZW50cnlfdCBlbnRyeSwgQ0ZTdHJpbmdSZWYgcHJvcGVydHlfbmFt
ZSkgeworICBDRlR5cGVSZWYgdHlwZSA9IElPUmVnaXN0cnlFbnRyeVNlYXJjaENGUHJvcGVydHko
ZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBrSU9TZXJ2aWNlUGxhbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwcm9wZXJ0eV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAga0NGQWxsb2NhdG9yRGVmYXVsdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtJT1JlZ2lzdHJ5SXRlcmF0
ZVJlY3Vyc2l2ZWx5IHwga0lPUmVnaXN0cnlJdGVyYXRlUGFyZW50cyk7CisgIENGRGF0YVJlZiBk
YXRhID0gcmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KHR5cGUpOworICBpZiAoIWRhdGEpIHsK
KyAgICBDRlJlbGVhc2UoZGF0YSk7CisgICAgcmV0dXJuIDA7CisgIH0KKworICBVSW50MzIgdmFs
dWUgPSAwOworICBjb25zdCB1aW50MzJfdCogdmFsdWVQb2ludGVyID0gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50MzJfdCo+KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpOworICBpZiAodmFsdWVQ
b2ludGVyICE9IE5VTEwpIHsKKyAgICB2YWx1ZSA9ICp2YWx1ZVBvaW50ZXI7CisgIH0KKyAgQ0ZS
ZWxlYXNlKGRhdGEpOworICByZXR1cm4gdmFsdWU7Cit9CisKK2dwdTo6R1BVSW5mbzo6R1BVRGV2
aWNlIEdldEFjdGl2ZUdQVSgpIHsKKyAgZ3B1OjpHUFVJbmZvOjpHUFVEZXZpY2UgZ3B1OworCisg
IC8vIElnbm9yZSB0aGUgZmFjdCB0aGF0IENHRGlzcGxheUlPU2VydmljZVBvcnQgaXMgZGVwcmVj
YXRlZCBhcyBBcHBsZQorICAvLyBkaWQgbm90IHByb3ZpZGUgYSBnb29kIHJlcGxhY2VtZW50IGZv
ciBpdCBhcyBvZiAxMC4xMC4KKyAgLy8gVE9ETyhjd2FsbGV6KSByZXZpc2l0IHdpdGggbGF0ZXIg
c3lzdGVtcworICAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorICAjcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKKyAgICBpb19y
ZWdpc3RyeV9lbnRyeV90IGRzcF9wb3J0ID0gQ0dEaXNwbGF5SU9TZXJ2aWNlUG9ydChrQ0dEaXJl
Y3RNYWluRGlzcGxheSk7CisgICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKworICBncHUu
dmVuZG9yX2lkID0gR2V0RW50cnlQcm9wZXJ0eShkc3BfcG9ydCwgQ0ZTVFIoInZlbmRvci1pZCIp
KTsKKyAgZ3B1LmRldmljZV9pZCA9IEdldEVudHJ5UHJvcGVydHkoZHNwX3BvcnQsIENGU1RSKCJk
ZXZpY2UtaWQiKSk7CisgIHJldHVybiBncHU7Cit9CisKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X3Rl
c3RfZXhwZWN0YXRpb25zX3BhcnNlci5jYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV90
ZXN0X2V4cGVjdGF0aW9uc19wYXJzZXIuY2MJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9n
cHVfdGVzdF9leHBlY3RhdGlvbnNfcGFyc2VyLmNjCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTgzIEBACisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorCisjaW5jbHVkZSAiZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3BhcnNlci5oIgorCisj
aW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNlIGJhc2UgeworCituYW1l
c3BhY2UgeworCitib29sIFN0YXJ0c1dpdGhBU0NJSShjb25zdCBzdGQ6OnN0cmluZyYgc3RyLAor
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHNlYXJjaCwKKyAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgY2FzZV9zZW5zaXRpdmUpIHsKKyAgQVNTRVJUKCFjYXNlX3NlbnNp
dGl2ZSk7CisgIHJldHVybiBzdHIuY29tcGFyZSgwLCBzZWFyY2gubGVuZ3RoKCksIHNlYXJjaCkg
PT0gMDsKK30KKwordGVtcGxhdGUgPGNsYXNzIENoYXI+IGlubGluZSBDaGFyIFRvTG93ZXJBU0NJ
SShDaGFyIGMpIHsKKyAgcmV0dXJuIChjID49ICdBJyAmJiBjIDw9ICdaJykgPyAoYyArICgnYScg
LSAnQScpKSA6IGM7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZXI+CitzdGF0aWMgaW5saW5l
IGJvb2wgRG9Mb3dlckNhc2VFcXVhbHNBU0NJSShJdGVyIGFfYmVnaW4sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyIGFfZW5kLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYikgeworICBmb3IgKEl0ZXIg
aXQgPSBhX2JlZ2luOyBpdCAhPSBhX2VuZDsgKytpdCwgKytiKSB7CisgICAgaWYgKCEqYiB8fCBi
YXNlOjpUb0xvd2VyQVNDSUkoKml0KSAhPSAqYikKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgfQor
ICByZXR1cm4gKmIgPT0gMDsKK30KKworYm9vbCBMb3dlckNhc2VFcXVhbHNBU0NJSShjb25zdCBz
dGQ6OnN0cmluZyYgYSwgY29uc3QgY2hhciogYikgeworICByZXR1cm4gRG9Mb3dlckNhc2VFcXVh
bHNBU0NJSShhLmJlZ2luKCksIGEuZW5kKCksIGIpOworfQorCit9IC8vIGFub255bW91cyBuYW1l
c3BhY2UKKworfSAvLyBuYW1lc3BhY2UgYmFzZQorCituYW1lc3BhY2UgZ3B1IHsKKworbmFtZXNw
YWNlIHsKKworZW51bSBMaW5lUGFyc2VyU3RhZ2UgeworICBrTGluZVBhcnNlckJlZ2luID0gMCwK
KyAga0xpbmVQYXJzZXJCdWdJRCwKKyAga0xpbmVQYXJzZXJDb25maWdzLAorICBrTGluZVBhcnNl
ckNvbG9uLAorICBrTGluZVBhcnNlclRlc3ROYW1lLAorICBrTGluZVBhcnNlckVxdWFsLAorICBr
TGluZVBhcnNlckV4cGVjdGF0aW9ucywKK307CisKK2VudW0gVG9rZW4geworICAvLyBvcworICBr
Q29uZmlnV2luWFAgPSAwLAorICBrQ29uZmlnV2luVmlzdGEsCisgIGtDb25maWdXaW43LAorICBr
Q29uZmlnV2luOCwKKyAga0NvbmZpZ1dpbjEwLAorICBrQ29uZmlnV2luLAorICBrQ29uZmlnTWFj
TGVvcGFyZCwKKyAga0NvbmZpZ01hY1Nub3dMZW9wYXJkLAorICBrQ29uZmlnTWFjTGlvbiwKKyAg
a0NvbmZpZ01hY01vdW50YWluTGlvbiwKKyAga0NvbmZpZ01hY01hdmVyaWNrcywKKyAga0NvbmZp
Z01hY1lvc2VtaXRlLAorICBrQ29uZmlnTWFjRWxDYXBpdGFuLAorICBrQ29uZmlnTWFjLAorICBr
Q29uZmlnTGludXgsCisgIGtDb25maWdDaHJvbWVPUywKKyAga0NvbmZpZ0FuZHJvaWQsCisgIC8v
IGdwdSB2ZW5kb3IKKyAga0NvbmZpZ05WaWRpYSwKKyAga0NvbmZpZ0FNRCwKKyAga0NvbmZpZ0lu
dGVsLAorICBrQ29uZmlnVk1XYXJlLAorICAvLyBidWlsZCB0eXBlCisgIGtDb25maWdSZWxlYXNl
LAorICBrQ29uZmlnRGVidWcsCisgIC8vIEFOR0xFIHJlbmRlcmVyCisgIGtDb25maWdEM0Q5LAor
ICBrQ29uZmlnRDNEMTEsCisgIGtDb25maWdHTERlc2t0b3AsCisgIGtDb25maWdHTEVTLAorICAv
LyBleHBlY3RhdGlvbgorICBrRXhwZWN0YXRpb25QYXNzLAorICBrRXhwZWN0YXRpb25GYWlsLAor
ICBrRXhwZWN0YXRpb25GbGFreSwKKyAga0V4cGVjdGF0aW9uVGltZW91dCwKKyAga0V4cGVjdGF0
aW9uU2tpcCwKKyAgLy8gc2VwYXJhdG9yCisgIGtTZXBhcmF0b3JDb2xvbiwKKyAga1NlcGFyYXRv
ckVxdWFsLAorCisgIGtOdW1iZXJPZkV4YWN0TWF0Y2hUb2tlbnMsCisKKyAgLy8gb3RoZXJzCisg
IGtDb25maWdHUFVEZXZpY2VJRCwKKyAga1Rva2VuQ29tbWVudCwKKyAga1Rva2VuV29yZCwKK307
CisKK3N0cnVjdCBUb2tlbkluZm8geworICBjb25zdCBjaGFyKiBuYW1lOworICBpbnQzMiBmbGFn
OworfTsKKworY29uc3QgVG9rZW5JbmZvIGtUb2tlbkRhdGFbXSA9IHsKKyAgICB7InhwIiwgR1BV
VGVzdENvbmZpZzo6a09zV2luWFB9LAorICAgIHsidmlzdGEiLCBHUFVUZXN0Q29uZmlnOjprT3NX
aW5WaXN0YX0sCisgICAgeyJ3aW43IiwgR1BVVGVzdENvbmZpZzo6a09zV2luN30sCisgICAgeyJ3
aW44IiwgR1BVVGVzdENvbmZpZzo6a09zV2luOH0sCisgICAgeyJ3aW4xMCIsIEdQVVRlc3RDb25m
aWc6OmtPc1dpbjEwfSwKKyAgICB7IndpbiIsIEdQVVRlc3RDb25maWc6OmtPc1dpbn0sCisgICAg
eyJsZW9wYXJkIiwgR1BVVGVzdENvbmZpZzo6a09zTWFjTGVvcGFyZH0sCisgICAgeyJzbm93bGVv
cGFyZCIsIEdQVVRlc3RDb25maWc6OmtPc01hY1Nub3dMZW9wYXJkfSwKKyAgICB7Imxpb24iLCBH
UFVUZXN0Q29uZmlnOjprT3NNYWNMaW9ufSwKKyAgICB7Im1vdW50YWlubGlvbiIsIEdQVVRlc3RD
b25maWc6OmtPc01hY01vdW50YWluTGlvbn0sCisgICAgeyJtYXZlcmlja3MiLCBHUFVUZXN0Q29u
ZmlnOjprT3NNYWNNYXZlcmlja3N9LAorICAgIHsieW9zZW1pdGUiLCBHUFVUZXN0Q29uZmlnOjpr
T3NNYWNZb3NlbWl0ZX0sCisgICAgeyJlbGNhcGl0YW4iLCBHUFVUZXN0Q29uZmlnOjprT3NNYWNF
bENhcGl0YW59LAorICAgIHsibWFjIiwgR1BVVGVzdENvbmZpZzo6a09zTWFjfSwKKyAgICB7Imxp
bnV4IiwgR1BVVGVzdENvbmZpZzo6a09zTGludXh9LAorICAgIHsiY2hyb21lb3MiLCBHUFVUZXN0
Q29uZmlnOjprT3NDaHJvbWVPU30sCisgICAgeyJhbmRyb2lkIiwgR1BVVGVzdENvbmZpZzo6a09z
QW5kcm9pZH0sCisgICAgeyJudmlkaWEiLCAweDEwREV9LAorICAgIHsiYW1kIiwgMHgxMDAyfSwK
KyAgICB7ImludGVsIiwgMHg4MDg2fSwKKyAgICB7InZtd2FyZSIsIDB4MTVhZH0sCisgICAgeyJy
ZWxlYXNlIiwgR1BVVGVzdENvbmZpZzo6a0J1aWxkVHlwZVJlbGVhc2V9LAorICAgIHsiZGVidWci
LCBHUFVUZXN0Q29uZmlnOjprQnVpbGRUeXBlRGVidWd9LAorICAgIHsiZDNkOSIsIEdQVVRlc3RD
b25maWc6OmtBUElEM0Q5fSwKKyAgICB7ImQzZDExIiwgR1BVVGVzdENvbmZpZzo6a0FQSUQzRDEx
fSwKKyAgICB7Im9wZW5nbCIsIEdQVVRlc3RDb25maWc6OmtBUElHTERlc2t0b3B9LAorICAgIHsi
Z2xlcyIsIEdQVVRlc3RDb25maWc6OmtBUElHTEVTfSwKKyAgICB7InBhc3MiLCBHUFVUZXN0RXhw
ZWN0YXRpb25zUGFyc2VyOjprR3B1VGVzdFBhc3N9LAorICAgIHsiZmFpbCIsIEdQVVRlc3RFeHBl
Y3RhdGlvbnNQYXJzZXI6OmtHcHVUZXN0RmFpbH0sCisgICAgeyJmbGFreSIsIEdQVVRlc3RFeHBl
Y3RhdGlvbnNQYXJzZXI6OmtHcHVUZXN0Rmxha3l9LAorICAgIHsidGltZW91dCIsIEdQVVRlc3RF
eHBlY3RhdGlvbnNQYXJzZXI6OmtHcHVUZXN0VGltZW91dH0sCisgICAgeyJza2lwIiwgR1BVVGVz
dEV4cGVjdGF0aW9uc1BhcnNlcjo6a0dwdVRlc3RTa2lwfSwKKyAgICB7IjoiLCAwfSwKKyAgICB7
Ij0iLCAwfSwKK307CisKK2VudW0gRXJyb3JUeXBlIHsKKyAga0Vycm9yRmlsZUlPID0gMCwKKyAg
a0Vycm9ySWxsZWdhbEVudHJ5LAorICBrRXJyb3JJbnZhbGlkRW50cnksCisgIGtFcnJvckVudHJ5
V2l0aE9zQ29uZmxpY3RzLAorICBrRXJyb3JFbnRyeVdpdGhHcHVWZW5kb3JDb25mbGljdHMsCisg
IGtFcnJvckVudHJ5V2l0aEJ1aWxkVHlwZUNvbmZsaWN0cywKKyAga0Vycm9yRW50cnlXaXRoQVBJ
Q29uZmxpY3RzLAorICBrRXJyb3JFbnRyeVdpdGhHcHVEZXZpY2VJZENvbmZsaWN0cywKKyAga0Vy
cm9yRW50cnlXaXRoRXhwZWN0YXRpb25Db25mbGljdHMsCisgIGtFcnJvckVudHJpZXNPdmVybGFw
LAorCisgIGtOdW1iZXJPZkVycm9ycywKK307CisKK2NvbnN0IGNoYXIqIGtFcnJvck1lc3NhZ2Vb
XSA9IHsKKyAgICAiZmlsZSBJTyBmYWlsZWQiLAorICAgICJlbnRyeSB3aXRoIHdyb25nIGZvcm1h
dCIsCisgICAgImVudHJ5IGludmFsaWQsIGxpa2VseSB3cm9uZyBtb2RpZmllcnMgY29tYmluYXRp
b24iLAorICAgICJlbnRyeSB3aXRoIE9TIG1vZGlmaWVyIGNvbmZsaWN0cyIsCisgICAgImVudHJ5
IHdpdGggR1BVIHZlbmRvciBtb2RpZmllciBjb25mbGljdHMiLAorICAgICJlbnRyeSB3aXRoIEdQ
VSBidWlsZCB0eXBlIGNvbmZsaWN0cyIsCisgICAgImVudHJ5IHdpdGggR1BVIEFQSSBjb25mbGlj
dHMiLAorICAgICJlbnRyeSB3aXRoIEdQVSBkZXZpY2UgaWQgY29uZmxpY3RzIG9yIG1hbGZvcm1h
dCIsCisgICAgImVudHJ5IHdpdGggZXhwZWN0YXRpb24gbW9kaWZpZXIgY29uZmxpY3RzIiwKKyAg
ICAidHdvIGVudHJpZXMnIGNvbmZpZ3Mgb3ZlcmxhcCIsCit9OworCitUb2tlbiBQYXJzZVRva2Vu
KGNvbnN0IHN0ZDo6c3RyaW5nJiB3b3JkKSB7CisgIGlmIChiYXNlOjpTdGFydHNXaXRoQVNDSUko
d29yZCwgIi8vIiwgZmFsc2UpKQorICAgIHJldHVybiBrVG9rZW5Db21tZW50OworICBpZiAoYmFz
ZTo6U3RhcnRzV2l0aEFTQ0lJKHdvcmQsICIweCIsIGZhbHNlKSkKKyAgICByZXR1cm4ga0NvbmZp
Z0dQVURldmljZUlEOworCisgIGZvciAoaW50MzIgaSA9IDA7IGkgPCBrTnVtYmVyT2ZFeGFjdE1h
dGNoVG9rZW5zOyArK2kpIHsKKyAgICBpZiAoYmFzZTo6TG93ZXJDYXNlRXF1YWxzQVNDSUkod29y
ZCwga1Rva2VuRGF0YVtpXS5uYW1lKSkKKyAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUb2tlbj4o
aSk7CisgIH0KKyAgcmV0dXJuIGtUb2tlbldvcmQ7Cit9CisKKy8vIHJlZmVyZW5jZSBuYW1lIGNh
biBoYXZlIHRoZSBsYXN0IGNoYXJhY3RlciBhcyAqLgorYm9vbCBOYW1lc01hdGNoaW5nKGNvbnN0
IHN0ZDo6c3RyaW5nJiByZWYsIGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0X25hbWUpIHsKKyAgc2l6
ZV90IGxlbiA9IHJlZi5sZW5ndGgoKTsKKyAgaWYgKGxlbiA9PSAwKQorICAgIHJldHVybiBmYWxz
ZTsKKyAgaWYgKHJlZltsZW4gLSAxXSA9PSAnKicpIHsKKyAgICBpZiAodGVzdF9uYW1lLmxlbmd0
aCgpID4gbGVuIC0xICYmCisgICAgICAgIHJlZi5jb21wYXJlKDAsIGxlbiAtIDEsIHRlc3RfbmFt
ZSwgMCwgbGVuIC0gMSkgPT0gMCkKKyAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBmYWxz
ZTsKKyAgfQorICByZXR1cm4gKHJlZiA9PSB0ZXN0X25hbWUpOworfQorCit9ICAvLyBuYW1lc3Bh
Y2UgYW5vbnltb3VzCisKK0dQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXI6OkdQVVRlc3RFeHBlY3Rh
dGlvbnNQYXJzZXIoKSB7CisgIC8vIFNvbWUgc2FuaXR5IGNoZWNrLgorICBzdGF0aWNfYXNzZXJ0
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oa051bWJlck9mRXhhY3RNYXRjaFRva2VucykgPT0K
KyAgICAgICAgICAgICAgICBzaXplb2Yoa1Rva2VuRGF0YSkgLyBzaXplb2Yoa1Rva2VuRGF0YVsw
XSksICJzYW5pdHkgY2hlY2siKTsKKyAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBpbnQ+KGtOdW1iZXJPZkVycm9ycykgPT0KKyAgICAgICAgICAgICAgICBzaXplb2Yoa0Vycm9y
TWVzc2FnZSkgLyBzaXplb2Yoa0Vycm9yTWVzc2FnZVswXSksICJzYW5pdHkgY2hlY2siKTsKK30K
KworR1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNlcjo6fkdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXIo
KSB7Cit9CisKK2Jvb2wgR1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNlcjo6TG9hZFRlc3RFeHBlY3Rh
dGlvbnMoY29uc3Qgc3RkOjpzdHJpbmcmIGRhdGEpIHsKKyAgZW50cmllc18uY2xlYXIoKTsKKyAg
ZXJyb3JfbWVzc2FnZXNfLmNsZWFyKCk7CisKKyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGxp
bmVzID0gYmFzZTo6U3BsaXRTdHJpbmcoCisgICAgICBkYXRhLCAiXG4iLCBiYXNlOjpUUklNX1dI
SVRFU1BBQ0UsIGJhc2U6OlNQTElUX1dBTlRfQUxMKTsKKyAgYm9vbCBydCA9IHRydWU7CisgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbGluZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBpZiAoIVBhcnNl
TGluZShsaW5lc1tpXSwgaSArIDEpKQorICAgICAgcnQgPSBmYWxzZTsKKyAgfQorICBpZiAoRGV0
ZWN0Q29uZmxpY3RzQmV0d2VlbkVudHJpZXMoKSkgeworICAgIGVudHJpZXNfLmNsZWFyKCk7Cisg
ICAgcnQgPSBmYWxzZTsKKyAgfQorCisgIHJldHVybiBydDsKK30KKworYm9vbCBHUFVUZXN0RXhw
ZWN0YXRpb25zUGFyc2VyOjpMb2FkVGVzdEV4cGVjdGF0aW9uc0Zyb21GaWxlKAorICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBwYXRoKSB7CisgIGVudHJpZXNfLmNsZWFyKCk7CisgIGVycm9yX21lc3Nh
Z2VzXy5jbGVhcigpOworCisgIHN0ZDo6c3RyaW5nIGRhdGE7CisgIGlmICghYmFzZTo6UmVhZEZp
bGVUb1N0cmluZyhwYXRoLCAmZGF0YSkpIHsKKyAgICBlcnJvcl9tZXNzYWdlc18ucHVzaF9iYWNr
KGtFcnJvck1lc3NhZ2Vba0Vycm9yRmlsZUlPXSk7CisgICAgcmV0dXJuIGZhbHNlOworICB9Cisg
IHJldHVybiBMb2FkVGVzdEV4cGVjdGF0aW9ucyhkYXRhKTsKK30KKworaW50MzIgR1BVVGVzdEV4
cGVjdGF0aW9uc1BhcnNlcjo6R2V0VGVzdEV4cGVjdGF0aW9uKAorICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiB0ZXN0X25hbWUsCisgICAgY29uc3QgR1BVVGVzdEJvdENvbmZpZyYgYm90X2NvbmZpZykg
Y29uc3QgeworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJpZXNfLnNpemUoKTsgKytpKSB7
CisgICAgaWYgKE5hbWVzTWF0Y2hpbmcoZW50cmllc19baV0udGVzdF9uYW1lLCB0ZXN0X25hbWUp
ICYmCisgICAgICAgIGJvdF9jb25maWcuTWF0Y2hlcyhlbnRyaWVzX1tpXS50ZXN0X2NvbmZpZykp
CisgICAgICByZXR1cm4gZW50cmllc19baV0udGVzdF9leHBlY3RhdGlvbjsKKyAgfQorICByZXR1
cm4ga0dwdVRlc3RQYXNzOworfQorCitjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mCitH
UFVUZXN0RXhwZWN0YXRpb25zUGFyc2VyOjpHZXRFcnJvck1lc3NhZ2VzKCkgY29uc3QgeworICBy
ZXR1cm4gZXJyb3JfbWVzc2FnZXNfOworfQorCitib29sIEdQVVRlc3RFeHBlY3RhdGlvbnNQYXJz
ZXI6OlBhcnNlQ29uZmlnKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb25maWdfZGF0YSwgR1BV
VGVzdENvbmZpZyogY29uZmlnKSB7CisgIERDSEVDSyhjb25maWcpOworICBzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4gdG9rZW5zID0gYmFzZTo6U3BsaXRTdHJpbmcoCisgICAgICBjb25maWdfZGF0
YSwgYmFzZTo6a1doaXRlc3BhY2VBU0NJSSwgYmFzZTo6S0VFUF9XSElURVNQQUNFLAorICAgICAg
YmFzZTo6U1BMSVRfV0FOVF9OT05FTVBUWSk7CisKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0
b2tlbnMuc2l6ZSgpOyArK2kpIHsKKyAgICBUb2tlbiB0b2tlbiA9IFBhcnNlVG9rZW4odG9rZW5z
W2ldKTsKKyAgICBzd2l0Y2ggKHRva2VuKSB7CisgICAgICBjYXNlIGtDb25maWdXaW5YUDoKKyAg
ICAgIGNhc2Uga0NvbmZpZ1dpblZpc3RhOgorICAgICAgY2FzZSBrQ29uZmlnV2luNzoKKyAgICAg
IGNhc2Uga0NvbmZpZ1dpbjg6CisgICAgICBjYXNlIGtDb25maWdXaW4xMDoKKyAgICAgIGNhc2Ug
a0NvbmZpZ1dpbjoKKyAgICAgIGNhc2Uga0NvbmZpZ01hY0xlb3BhcmQ6CisgICAgICBjYXNlIGtD
b25maWdNYWNTbm93TGVvcGFyZDoKKyAgICAgIGNhc2Uga0NvbmZpZ01hY0xpb246CisgICAgICBj
YXNlIGtDb25maWdNYWNNb3VudGFpbkxpb246CisgICAgICBjYXNlIGtDb25maWdNYWNNYXZlcmlj
a3M6CisgICAgICBjYXNlIGtDb25maWdNYWNZb3NlbWl0ZToKKyAgICAgIGNhc2Uga0NvbmZpZ01h
Y0VsQ2FwaXRhbjoKKyAgICAgIGNhc2Uga0NvbmZpZ01hYzoKKyAgICAgIGNhc2Uga0NvbmZpZ0xp
bnV4OgorICAgICAgY2FzZSBrQ29uZmlnQ2hyb21lT1M6CisgICAgICBjYXNlIGtDb25maWdBbmRy
b2lkOgorICAgICAgY2FzZSBrQ29uZmlnTlZpZGlhOgorICAgICAgY2FzZSBrQ29uZmlnQU1EOgor
ICAgICAgY2FzZSBrQ29uZmlnSW50ZWw6CisgICAgICBjYXNlIGtDb25maWdWTVdhcmU6CisgICAg
ICBjYXNlIGtDb25maWdSZWxlYXNlOgorICAgICAgY2FzZSBrQ29uZmlnRGVidWc6CisgICAgICBj
YXNlIGtDb25maWdEM0Q5OgorICAgICAgY2FzZSBrQ29uZmlnRDNEMTE6CisgICAgICBjYXNlIGtD
b25maWdHTERlc2t0b3A6CisgICAgICBjYXNlIGtDb25maWdHTEVTOgorICAgICAgY2FzZSBrQ29u
ZmlnR1BVRGV2aWNlSUQ6CisgICAgICAgIGlmICh0b2tlbiA9PSBrQ29uZmlnR1BVRGV2aWNlSUQp
IHsKKyAgICAgICAgICBpZiAoIVVwZGF0ZVRlc3RDb25maWcoY29uZmlnLCB0b2tlbnNbaV0sIDAp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
IGlmICghVXBkYXRlVGVzdENvbmZpZyhjb25maWcsIHRva2VuLCAwKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgR1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNlcjo6UGFyc2VMaW5lKAorICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBsaW5lX2RhdGEsIHNpemVfdCBsaW5lX251bWJlcikgeworICBzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4gdG9rZW5zID0gYmFzZTo6U3BsaXRTdHJpbmcoCisgICAgICBsaW5lX2RhdGEs
IGJhc2U6OmtXaGl0ZXNwYWNlQVNDSUksIGJhc2U6OktFRVBfV0hJVEVTUEFDRSwKKyAgICAgIGJh
c2U6OlNQTElUX1dBTlRfTk9ORU1QVFkpOworICBpbnQzMiBzdGFnZSA9IGtMaW5lUGFyc2VyQmVn
aW47CisgIEdQVVRlc3RFeHBlY3RhdGlvbkVudHJ5IGVudHJ5OworICBlbnRyeS5saW5lX251bWJl
ciA9IGxpbmVfbnVtYmVyOworICBHUFVUZXN0Q29uZmlnJiBjb25maWcgPSBlbnRyeS50ZXN0X2Nv
bmZpZzsKKyAgYm9vbCBjb21tZW50c19lbmNvdW50ZXJlZCA9IGZhbHNlOworICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHRva2Vucy5zaXplKCkgJiYgIWNvbW1lbnRzX2VuY291bnRlcmVkOyArK2kp
IHsKKyAgICBUb2tlbiB0b2tlbiA9IFBhcnNlVG9rZW4odG9rZW5zW2ldKTsKKyAgICBzd2l0Y2gg
KHRva2VuKSB7CisgICAgICBjYXNlIGtUb2tlbkNvbW1lbnQ6CisgICAgICAgIGNvbW1lbnRzX2Vu
Y291bnRlcmVkID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIGtDb25maWdXaW5Y
UDoKKyAgICAgIGNhc2Uga0NvbmZpZ1dpblZpc3RhOgorICAgICAgY2FzZSBrQ29uZmlnV2luNzoK
KyAgICAgIGNhc2Uga0NvbmZpZ1dpbjg6CisgICAgICBjYXNlIGtDb25maWdXaW4xMDoKKyAgICAg
IGNhc2Uga0NvbmZpZ1dpbjoKKyAgICAgIGNhc2Uga0NvbmZpZ01hY0xlb3BhcmQ6CisgICAgICBj
YXNlIGtDb25maWdNYWNTbm93TGVvcGFyZDoKKyAgICAgIGNhc2Uga0NvbmZpZ01hY0xpb246Cisg
ICAgICBjYXNlIGtDb25maWdNYWNNb3VudGFpbkxpb246CisgICAgICBjYXNlIGtDb25maWdNYWNN
YXZlcmlja3M6CisgICAgICBjYXNlIGtDb25maWdNYWNZb3NlbWl0ZToKKyAgICAgIGNhc2Uga0Nv
bmZpZ01hY0VsQ2FwaXRhbjoKKyAgICAgIGNhc2Uga0NvbmZpZ01hYzoKKyAgICAgIGNhc2Uga0Nv
bmZpZ0xpbnV4OgorICAgICAgY2FzZSBrQ29uZmlnQ2hyb21lT1M6CisgICAgICBjYXNlIGtDb25m
aWdBbmRyb2lkOgorICAgICAgY2FzZSBrQ29uZmlnTlZpZGlhOgorICAgICAgY2FzZSBrQ29uZmln
QU1EOgorICAgICAgY2FzZSBrQ29uZmlnSW50ZWw6CisgICAgICBjYXNlIGtDb25maWdWTVdhcmU6
CisgICAgICBjYXNlIGtDb25maWdSZWxlYXNlOgorICAgICAgY2FzZSBrQ29uZmlnRGVidWc6Cisg
ICAgICBjYXNlIGtDb25maWdEM0Q5OgorICAgICAgY2FzZSBrQ29uZmlnRDNEMTE6CisgICAgICBj
YXNlIGtDb25maWdHTERlc2t0b3A6CisgICAgICBjYXNlIGtDb25maWdHTEVTOgorICAgICAgY2Fz
ZSBrQ29uZmlnR1BVRGV2aWNlSUQ6CisgICAgICAgIC8vIE1PRElGSUVSUywgY291bGQgYmUgaW4g
YW55IG9yZGVyLCBuZWVkIGF0IGxlYXN0IG9uZS4KKyAgICAgICAgaWYgKHN0YWdlICE9IGtMaW5l
UGFyc2VyQ29uZmlncyAmJiBzdGFnZSAhPSBrTGluZVBhcnNlckJ1Z0lEKSB7CisgICAgICAgICAg
UHVzaEVycm9yTWVzc2FnZShrRXJyb3JNZXNzYWdlW2tFcnJvcklsbGVnYWxFbnRyeV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsaW5lX251bWJlcik7CisgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisgICAgICAgIGlmICh0b2tlbiA9PSBrQ29uZmlnR1BVRGV2aWNlSUQp
IHsKKyAgICAgICAgICBpZiAoIVVwZGF0ZVRlc3RDb25maWcoJmNvbmZpZywgdG9rZW5zW2ldLCBs
aW5lX251bWJlcikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgaWYgKCFVcGRhdGVUZXN0Q29uZmlnKCZjb25maWcsIHRva2VuLCBsaW5lX251
bWJlcikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KHN0YWdlID09IGtMaW5lUGFyc2VyQnVnSUQpCisgICAgICAgICAgc3RhZ2UrKzsKKyAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIGtTZXBhcmF0b3JDb2xvbjoKKyAgICAgICAgLy8gOgorICAgICAg
ICBpZiAoc3RhZ2UgIT0ga0xpbmVQYXJzZXJDb25maWdzKSB7CisgICAgICAgICAgUHVzaEVycm9y
TWVzc2FnZShrRXJyb3JNZXNzYWdlW2tFcnJvcklsbGVnYWxFbnRyeV0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsaW5lX251bWJlcik7CisgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisgICAgICAgIHN0YWdlKys7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBrU2Vw
YXJhdG9yRXF1YWw6CisgICAgICAgIC8vID0KKyAgICAgICAgaWYgKHN0YWdlICE9IGtMaW5lUGFy
c2VyVGVzdE5hbWUpIHsKKyAgICAgICAgICBQdXNoRXJyb3JNZXNzYWdlKGtFcnJvck1lc3NhZ2Vb
a0Vycm9ySWxsZWdhbEVudHJ5XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbnVt
YmVyKTsKKyAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgc3RhZ2Ur
KzsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIGtUb2tlbldvcmQ6CisgICAgICAgIC8vIEJV
R19JRCBvciBURVNUX05BTUUKKyAgICAgICAgaWYgKHN0YWdlID09IGtMaW5lUGFyc2VyQmVnaW4p
IHsKKyAgICAgICAgICAvLyBCdWcgSUQgaXMgbm90IHVzZWQgZm9yIGFueXRoaW5nOyBpZ25vcmUg
aXQuCisgICAgICAgIH0gZWxzZSBpZiAoc3RhZ2UgPT0ga0xpbmVQYXJzZXJDb2xvbikgeworICAg
ICAgICAgIGVudHJ5LnRlc3RfbmFtZSA9IHRva2Vuc1tpXTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICBQdXNoRXJyb3JNZXNzYWdlKGtFcnJvck1lc3NhZ2Vba0Vycm9ySWxsZWdhbEVudHJ5
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVyKTsKKyAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgc3RhZ2UrKzsKKyAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIGtFeHBlY3RhdGlvblBhc3M6CisgICAgICBjYXNlIGtFeHBlY3RhdGlvbkZh
aWw6CisgICAgICBjYXNlIGtFeHBlY3RhdGlvbkZsYWt5OgorICAgICAgY2FzZSBrRXhwZWN0YXRp
b25UaW1lb3V0OgorICAgICAgY2FzZSBrRXhwZWN0YXRpb25Ta2lwOgorICAgICAgICAvLyBURVNU
X0VYUEVDVEFUSU9OUworICAgICAgICBpZiAoc3RhZ2UgIT0ga0xpbmVQYXJzZXJFcXVhbCAmJiBz
dGFnZSAhPSBrTGluZVBhcnNlckV4cGVjdGF0aW9ucykgeworICAgICAgICAgIFB1c2hFcnJvck1l
c3NhZ2Uoa0Vycm9yTWVzc2FnZVtrRXJyb3JJbGxlZ2FsRW50cnldLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGluZV9udW1iZXIpOworICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoKGtUb2tlbkRhdGFbdG9rZW5dLmZsYWcgJiBlbnRyeS50ZXN0X2V4
cGVjdGF0aW9uKSAhPSAwKSB7CisgICAgICAgICAgUHVzaEVycm9yTWVzc2FnZShrRXJyb3JNZXNz
YWdlW2tFcnJvckVudHJ5V2l0aEV4cGVjdGF0aW9uQ29uZmxpY3RzXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxpbmVfbnVtYmVyKTsKKyAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICAgICAgZW50cnkudGVzdF9leHBlY3RhdGlvbiA9CisgICAgICAgICAgICAoa1Rv
a2VuRGF0YVt0b2tlbl0uZmxhZyB8IGVudHJ5LnRlc3RfZXhwZWN0YXRpb24pOworICAgICAgICBp
ZiAoc3RhZ2UgPT0ga0xpbmVQYXJzZXJFcXVhbCkKKyAgICAgICAgICBzdGFnZSsrOworICAgICAg
ICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgfQorICBpZiAoc3RhZ2UgPT0ga0xpbmVQYXJzZXJCZWdpbikgewor
ICAgIC8vIFRoZSB3aG9sZSBsaW5lIGlzIGVtcHR5IG9yIGFsbCBjb21tZW50cworICAgIHJldHVy
biB0cnVlOworICB9CisgIGlmIChzdGFnZSA9PSBrTGluZVBhcnNlckV4cGVjdGF0aW9ucykgewor
ICAgIGlmICghY29uZmlnLklzVmFsaWQoKSkgeworICAgICAgICBQdXNoRXJyb3JNZXNzYWdlKGtF
cnJvck1lc3NhZ2Vba0Vycm9ySW52YWxpZEVudHJ5XSwgbGluZV9udW1iZXIpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGVudHJpZXNfLnB1c2hfYmFjayhlbnRyeSk7CisgICAg
cmV0dXJuIHRydWU7CisgIH0KKyAgUHVzaEVycm9yTWVzc2FnZShrRXJyb3JNZXNzYWdlW2tFcnJv
cklsbGVnYWxFbnRyeV0sIGxpbmVfbnVtYmVyKTsKKyAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IEdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXI6OlVwZGF0ZVRlc3RDb25maWcoCisgICAgR1BVVGVz
dENvbmZpZyogY29uZmlnLCBpbnQzMiB0b2tlbiwgc2l6ZV90IGxpbmVfbnVtYmVyKSB7CisgIERD
SEVDSyhjb25maWcpOworICBzd2l0Y2ggKHRva2VuKSB7CisgICAgY2FzZSBrQ29uZmlnV2luWFA6
CisgICAgY2FzZSBrQ29uZmlnV2luVmlzdGE6CisgICAgY2FzZSBrQ29uZmlnV2luNzoKKyAgICBj
YXNlIGtDb25maWdXaW44OgorICAgIGNhc2Uga0NvbmZpZ1dpbjEwOgorICAgIGNhc2Uga0NvbmZp
Z1dpbjoKKyAgICBjYXNlIGtDb25maWdNYWNMZW9wYXJkOgorICAgIGNhc2Uga0NvbmZpZ01hY1Nu
b3dMZW9wYXJkOgorICAgIGNhc2Uga0NvbmZpZ01hY0xpb246CisgICAgY2FzZSBrQ29uZmlnTWFj
TW91bnRhaW5MaW9uOgorICAgIGNhc2Uga0NvbmZpZ01hY01hdmVyaWNrczoKKyAgICBjYXNlIGtD
b25maWdNYWNZb3NlbWl0ZToKKyAgICBjYXNlIGtDb25maWdNYWNFbENhcGl0YW46CisgICAgY2Fz
ZSBrQ29uZmlnTWFjOgorICAgIGNhc2Uga0NvbmZpZ0xpbnV4OgorICAgIGNhc2Uga0NvbmZpZ0No
cm9tZU9TOgorICAgIGNhc2Uga0NvbmZpZ0FuZHJvaWQ6CisgICAgICBpZiAoKGNvbmZpZy0+b3Mo
KSAmIGtUb2tlbkRhdGFbdG9rZW5dLmZsYWcpICE9IDApIHsKKyAgICAgICAgUHVzaEVycm9yTWVz
c2FnZShrRXJyb3JNZXNzYWdlW2tFcnJvckVudHJ5V2l0aE9zQ29uZmxpY3RzXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBsaW5lX251bWJlcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgIH0KKyAgICAgIGNvbmZpZy0+c2V0X29zKGNvbmZpZy0+b3MoKSB8IGtUb2tlbkRhdGFbdG9r
ZW5dLmZsYWcpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBrQ29uZmlnTlZpZGlhOgorICAgIGNh
c2Uga0NvbmZpZ0FNRDoKKyAgICBjYXNlIGtDb25maWdJbnRlbDoKKyAgICBjYXNlIGtDb25maWdW
TVdhcmU6CisgICAgICB7CisgICAgICAgIHVpbnQzMiBncHVfdmVuZG9yID0KKyAgICAgICAgICAg
IHN0YXRpY19jYXN0PHVpbnQzMj4oa1Rva2VuRGF0YVt0b2tlbl0uZmxhZyk7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY29uZmlnLT5ncHVfdmVuZG9yKCkuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgICBpZiAoY29uZmlnLT5ncHVfdmVuZG9yKClbaV0gPT0gZ3B1X3ZlbmRvcikgewor
ICAgICAgICAgICAgUHVzaEVycm9yTWVzc2FnZSgKKyAgICAgICAgICAgICAgICBrRXJyb3JNZXNz
YWdlW2tFcnJvckVudHJ5V2l0aEdwdVZlbmRvckNvbmZsaWN0c10sCisgICAgICAgICAgICAgICAg
bGluZV9udW1iZXIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBjb25maWctPkFkZEdQVVZlbmRvcihncHVfdmVuZG9yKTsKKyAgICAg
IH0KKyAgICAgIGJyZWFrOworICAgIGNhc2Uga0NvbmZpZ1JlbGVhc2U6CisgICAgY2FzZSBrQ29u
ZmlnRGVidWc6CisgICAgICBpZiAoKGNvbmZpZy0+YnVpbGRfdHlwZSgpICYga1Rva2VuRGF0YVt0
b2tlbl0uZmxhZykgIT0gMCkgeworICAgICAgICBQdXNoRXJyb3JNZXNzYWdlKAorICAgICAgICAg
ICAga0Vycm9yTWVzc2FnZVtrRXJyb3JFbnRyeVdpdGhCdWlsZFR5cGVDb25mbGljdHNdLAorICAg
ICAgICAgICAgbGluZV9udW1iZXIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9Cisg
ICAgICBjb25maWctPnNldF9idWlsZF90eXBlKAorICAgICAgICAgIGNvbmZpZy0+YnVpbGRfdHlw
ZSgpIHwga1Rva2VuRGF0YVt0b2tlbl0uZmxhZyk7CisgICAgICBicmVhazsKKyAgICBjYXNlIGtD
b25maWdEM0Q5OgorICAgIGNhc2Uga0NvbmZpZ0QzRDExOgorICAgIGNhc2Uga0NvbmZpZ0dMRGVz
a3RvcDoKKyAgICBjYXNlIGtDb25maWdHTEVTOgorICAgICAgaWYgKChjb25maWctPmFwaSgpICYg
a1Rva2VuRGF0YVt0b2tlbl0uZmxhZykgIT0gMCkgeworICAgICAgICBQdXNoRXJyb3JNZXNzYWdl
KGtFcnJvck1lc3NhZ2Vba0Vycm9yRW50cnlXaXRoQVBJQ29uZmxpY3RzXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBsaW5lX251bWJlcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
IH0KKyAgICAgIGNvbmZpZy0+c2V0X2FwaShjb25maWctPmFwaSgpIHwga1Rva2VuRGF0YVt0b2tl
bl0uZmxhZyk7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgVU5SRUFDSEFCTEUo
KTsKKyAgICAgIGJyZWFrOworICB9CisgIHJldHVybiB0cnVlOworfQorCitib29sIEdQVVRlc3RF
eHBlY3RhdGlvbnNQYXJzZXI6OlVwZGF0ZVRlc3RDb25maWcoCisgICAgR1BVVGVzdENvbmZpZyog
Y29uZmlnLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBncHVfZGV2aWNlX2lkLAorICAgIHNpemVf
dCBsaW5lX251bWJlcikgeworICBEQ0hFQ0soY29uZmlnKTsKKyAgdWludDMyIGRldmljZV9pZCA9
IDA7CisgIGlmIChjb25maWctPmdwdV9kZXZpY2VfaWQoKSAhPSAwIHx8CisgICAgICAhYmFzZTo6
SGV4U3RyaW5nVG9VSW50KGdwdV9kZXZpY2VfaWQsICZkZXZpY2VfaWQpIHx8CisgICAgICBkZXZp
Y2VfaWQgPT0gMCkgeworICAgIFB1c2hFcnJvck1lc3NhZ2Uoa0Vycm9yTWVzc2FnZVtrRXJyb3JF
bnRyeVdpdGhHcHVEZXZpY2VJZENvbmZsaWN0c10sCisgICAgICAgICAgICAgICAgICAgICBsaW5l
X251bWJlcik7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIGNvbmZpZy0+c2V0X2dwdV9kZXZp
Y2VfaWQoZGV2aWNlX2lkKTsKKyAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgR1BVVGVzdEV4cGVj
dGF0aW9uc1BhcnNlcjo6RGV0ZWN0Q29uZmxpY3RzQmV0d2VlbkVudHJpZXMoKSB7CisgIGJvb2wg
cnQgPSBmYWxzZTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbnRyaWVzXy5zaXplKCk7ICsr
aSkgeworICAgIGZvciAoc2l6ZV90IGogPSBpICsgMTsgaiA8IGVudHJpZXNfLnNpemUoKTsgKytq
KSB7CisgICAgICBpZiAoZW50cmllc19baV0udGVzdF9uYW1lID09IGVudHJpZXNfW2pdLnRlc3Rf
bmFtZSAmJgorICAgICAgICAgIGVudHJpZXNfW2ldLnRlc3RfY29uZmlnLk92ZXJsYXBzV2l0aChl
bnRyaWVzX1tqXS50ZXN0X2NvbmZpZykpIHsKKyAgICAgICAgUHVzaEVycm9yTWVzc2FnZShrRXJy
b3JNZXNzYWdlW2tFcnJvckVudHJpZXNPdmVybGFwXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBlbnRyaWVzX1tpXS5saW5lX251bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBlbnRy
aWVzX1tqXS5saW5lX251bWJlcik7CisgICAgICAgIHJ0ID0gdHJ1ZTsKKyAgICAgIH0KKyAgICB9
CisgIH0KKyAgcmV0dXJuIHJ0OworfQorCit2b2lkIEdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXI6
OlB1c2hFcnJvck1lc3NhZ2UoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UsIHNpemVf
dCBsaW5lX251bWJlcikgeworICBlcnJvcl9tZXNzYWdlc18ucHVzaF9iYWNrKAorICAgICAgYmFz
ZTo6U3RyaW5nUHJpbnRmKCJMaW5lICVkIDogJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PGludD4obGluZV9udW1iZXIpLCBtZXNzYWdlLmNfc3RyKCkpKTsKK30KKwor
dm9pZCBHUFVUZXN0RXhwZWN0YXRpb25zUGFyc2VyOjpQdXNoRXJyb3JNZXNzYWdlKAorICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlLAorICAgIHNpemVfdCBlbnRyeTFfbGluZV9udW1iZXIs
CisgICAgc2l6ZV90IGVudHJ5Ml9saW5lX251bWJlcikgeworICBlcnJvcl9tZXNzYWdlc18ucHVz
aF9iYWNrKAorICAgICAgYmFzZTo6U3RyaW5nUHJpbnRmKCJMaW5lICVkIGFuZCAlZCA6ICVzIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGVudHJ5MV9saW5lX251
bWJlciksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihlbnRyeTJf
bGluZV9udW1iZXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UuY19zdHIoKSkp
OworfQorCitHUFVUZXN0RXhwZWN0YXRpb25zUGFyc2VyOjogR1BVVGVzdEV4cGVjdGF0aW9uRW50
cnk6OkdQVVRlc3RFeHBlY3RhdGlvbkVudHJ5KCkKKyAgICA6IHRlc3RfZXhwZWN0YXRpb24oMCks
CisgICAgICBsaW5lX251bWJlcigwKSB7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBncHUKKwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L2dwdV90ZXN0
X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9leHBlY3RhdGlvbnNfcGFyc2VyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L2dwdV90ZXN0
X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9leHBlY3RhdGlvbnNfcGFyc2VyLmgJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L2dwdV90
ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9leHBlY3RhdGlvbnNfcGFyc2VyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw4NiBAQAorLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBDaHJvbWl1
bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworI2lmbmRlZiBHUFVfQ09ORklHX0dQVV9URVNUX0VY
UEVDVEFUSU9OU19QQVJTRVJfSF8KKyNkZWZpbmUgR1BVX0NPTkZJR19HUFVfVEVTVF9FWFBFQ1RB
VElPTlNfUEFSU0VSX0hfCisKKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgor
CisjaW5jbHVkZSAiYW5nbGVfY29uZmlnLmgiCisjaW5jbHVkZSAiZ3B1X3Rlc3RfY29uZmlnLmgi
CisKK25hbWVzcGFjZSBncHUgeworCitjbGFzcyBHUFVfRVhQT1JUIEdQVVRlc3RFeHBlY3RhdGlv
bnNQYXJzZXIgeworIHB1YmxpYzoKKyAgZW51bSBHUFVUZXN0RXhwZWN0YXRpb24geworICAgIGtH
cHVUZXN0UGFzcyA9IDEgPDwgMCwKKyAgICBrR3B1VGVzdEZhaWwgPSAxIDw8IDEsCisgICAga0dw
dVRlc3RGbGFreSA9IDEgPDwgMiwKKyAgICBrR3B1VGVzdFRpbWVvdXQgPSAxIDw8IDMsCisgICAg
a0dwdVRlc3RTa2lwID0gMSA8PCA0LAorICB9OworCisgIEdQVVRlc3RFeHBlY3RhdGlvbnNQYXJz
ZXIoKTsKKyAgfkdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXIoKTsKKworICAvLyBQYXJzZSB0aGUg
dGV4dCBleHBlY3RhdGlvbnMsIGFuZCBpZiBubyBlcnJvciBpcyBlbmNvdW50ZXJlZCwKKyAgLy8g
c2F2ZSBhbGwgdGhlIGVudHJpZXMuIE90aGVyd2lzZSwgZ2VuZXJhdGUgZXJyb3IgbWVzc2FnZXMu
CisgIC8vIFJldHVybiB0cnVlIGlmIHBhcnNpbmcgc3VjY2VlZHMuCisgIGJvb2wgTG9hZFRlc3RF
eHBlY3RhdGlvbnMoY29uc3Qgc3RkOjpzdHJpbmcmIGRhdGEpOworICBib29sIExvYWRUZXN0RXhw
ZWN0YXRpb25zRnJvbUZpbGUoY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgpOworCisgIC8vIFF1ZXJ5
IGVycm9yIG1lc3NhZ2VzIGZyb20gdGhlIGxhc3QgTG9hZFRlc3RFeHBlY3RhdGlvbnMoKSBjYWxs
LgorICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIEdldEVycm9yTWVzc2FnZXMoKSBj
b25zdDsKKworICAvLyBHZXQgdGhlIHRlc3QgZXhwZWN0YXRpb24gb2YgYSBnaXZlbiB0ZXN0IG9u
IGEgZ2l2ZW4gYm90LgorICBpbnQzMiBHZXRUZXN0RXhwZWN0YXRpb24oY29uc3Qgc3RkOjpzdHJp
bmcmIHRlc3RfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdQVVRlc3RC
b3RDb25maWcmIGJvdF9jb25maWcpIGNvbnN0OworCisgIC8vIFBhcnNlIGEgbGlzdCBvZiBjb25m
aWcgbW9kaWZpZXJzLiBJZiB3ZSBoYXZlIGEgdmFsaWQgZW50cnkgd2l0aCBubworICAvLyBjb25m
bGljdHMsIHwgY29uZmlnIHwgc3RvcmVzIGl0LCBhbmQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1
ZS4KKyAgYm9vbCBQYXJzZUNvbmZpZyhjb25zdCBzdGQ6OnN0cmluZyYgY29uZmlnX2RhdGEsIEdQ
VVRlc3RDb25maWcqIGNvbmZpZyk7CisKKyBwcml2YXRlOgorICBzdHJ1Y3QgR1BVVGVzdEV4cGVj
dGF0aW9uRW50cnkgeworICAgIEdQVVRlc3RFeHBlY3RhdGlvbkVudHJ5KCk7CisKKyAgICBzdGQ6
OnN0cmluZyB0ZXN0X25hbWU7CisgICAgR1BVVGVzdENvbmZpZyB0ZXN0X2NvbmZpZzsKKyAgICBp
bnQzMiB0ZXN0X2V4cGVjdGF0aW9uOworICAgIHNpemVfdCBsaW5lX251bWJlcjsKKyAgfTsKKwor
ICAvLyBQYXJzZSBhIGxpbmUgb2YgdGV4dC4gSWYgd2UgaGF2ZSBhIHZhbGlkIGVudHJ5LCBzYXZl
IGl0OyBvdGhlcndpc2UsCisgIC8vIGdlbmVyYXRlIGVycm9yIG1lc3NhZ2VzLgorICBib29sIFBh
cnNlTGluZShjb25zdCBzdGQ6OnN0cmluZyYgbGluZV9kYXRhLCBzaXplX3QgbGluZV9udW1iZXIp
OworCisgIC8vIFVwZGF0ZSBPUy9HUFVWZW5kb3IvQnVpbGRUeXBlIG1vZGlmaWVycy4gTWF5IGdl
bmVyYXRlIGFuIGVycm9yIG1lc3NhZ2UuCisgIGJvb2wgVXBkYXRlVGVzdENvbmZpZygKKyAgICAg
IEdQVVRlc3RDb25maWcqIGNvbmZpZywgaW50MzIgdG9rZW4sIHNpemVfdCBsaW5lX251bWJlcik7
CisKKyAgLy8gVXBkYXRlIEdQVURldmljZUlEIG1vZGlmaWVyLiBNYXkgZ2VuZXJhdGUgYW4gZXJy
b3IgbWVzc2FnZS4KKyAgYm9vbCBVcGRhdGVUZXN0Q29uZmlnKEdQVVRlc3RDb25maWcqIGNvbmZp
ZywKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICYgZ3B1X2Rldmlj
ZV9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsaW5lX251bWJlcik7CisKKyAg
Ly8gQ2hlY2sgaWYgdHdvIGVudHJpZXMnIGNvbmZpZyBvdmVybGFwIHdpdGggZWFjaCBvdGhlci4g
TWF5IGdlbmVyYXRlIGFuCisgIC8vIGVycm9yIG1lc3NhZ2UuCisgIGJvb2wgRGV0ZWN0Q29uZmxp
Y3RzQmV0d2VlbkVudHJpZXMoKTsKKworICAvLyBTYXZlIGFuIGVycm9yIG1lc3NhZ2UsIHdoaWNo
IGNhbiBiZSBxdWVyaWVkIGxhdGVyLgorICB2b2lkIFB1c2hFcnJvck1lc3NhZ2UoY29uc3Qgc3Rk
OjpzdHJpbmcmIG1lc3NhZ2UsIHNpemVfdCBsaW5lX251bWJlcik7CisgIHZvaWQgUHVzaEVycm9y
TWVzc2FnZShjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBlbnRyeTFfbGluZV9udW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgZW50cnkyX2xpbmVfbnVtYmVyKTsKKworICBzdGQ6OnZlY3RvcjxHUFVUZXN0RXhwZWN0
YXRpb25FbnRyeT4gZW50cmllc187CisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBlcnJvcl9t
ZXNzYWdlc187Cit9OworCit9ICAvLyBuYW1lc3BhY2UgZ3B1CisKKyNlbmRpZiAgLy8gR1BVX0NP
TkZJR19HUFVfVEVTVF9FWFBFQ1RBVElPTlNfUEFSU0VSX0hfCisKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vTElDRU5TRQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkv
cmFwaWRqc29uL0xJQ0VOU0UJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9MSUNFTlNFCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTkgQEAKK0NvcHlyaWdodCAoQykgMjAxMSBNaWxvIFlpcAorCitQZXJtaXNz
aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRh
aW5pbmcgYSBjb3B5CitvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRp
b24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAoraW4gdGhlIFNvZnR3YXJlIHdpdGhv
dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwor
dG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNl
bnNlLCBhbmQvb3Igc2VsbAorY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBw
ZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCitmdXJuaXNoZWQgdG8gZG8gc28sIHN1Ympl
Y3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCitUaGUgYWJvdmUgY29weXJpZ2h0IG5v
dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorYWxs
IGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKK1RIRSBT
T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E
LCBFWFBSRVNTIE9SCitJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKK0ZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorQVVUSE9S
UyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBP
UiBPVEhFUgorTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9S
VCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKK09VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ
VEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KK1RIRSBTT0ZU
V0FSRS4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL1JFQURNRS5jaHJvbWl1bQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFy
dHkvcmFwaWRqc29uL1JFQURNRS5jaHJvbWl1bQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL1JFQURNRS5jaHJv
bWl1bQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDggQEAKK05hbWU6IFJhcGlkSlNPTgorVVJM
OiBodHRwczovL2dpdGh1Yi5jb20vbWlsb3lpcC9yYXBpZGpzb24KK1ZlcnNpb246IDI0ZGQ3ZWY4
MzliNzk5NDFkMTI5ZTgzMzM2OGU5MTNhYTljMDQ1ZGEKK0xpY2Vuc2U6IEN1c3RvbQorTGljZW5z
ZSBGaWxlOiBMSUNFTlNFCisKK0Rlc2NyaXB0aW9uOgorUmFwaWRKU09OIGlzIGEgSlNPTiBwYXJz
ZXIgYW5kIGdlbmVyYXRvciBmb3IgQysrLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpz
b24vaW5jbHVkZS9yYXBpZGpzb24vYWxsb2NhdG9ycy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9y
YXBpZGpzb24vYWxsb2NhdG9ycy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24v
YWxsb2NhdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjQ1IEBACisvLyBDb3B5cmln
aHQgKEMpIDIwMTEgTWlsbyBZaXAKKy8vCisvLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk
LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisvLyBvZiB0
aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29m
dHdhcmUiKSwgdG8gZGVhbAorLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24s
IGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cworLy8gdG8gdXNlLCBjb3B5
LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Ig
c2VsbAorLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRv
IHdob20gdGhlIFNvZnR3YXJlIGlzCisvLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8g
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorLy8KKy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90
aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisvLyBh
bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKy8vCisv
LyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBB
TlkgS0lORCwgRVhQUkVTUyBPUgorLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRF
RCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisvLyBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUKKy8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg
Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ
T04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisvLyBPVVQg
T0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVS
IERFQUxJTkdTIElOCisvLyBUSEUgU09GVFdBUkUuCisKKyNpZm5kZWYgUkFQSURKU09OX0FMTE9D
QVRPUlNfSF8KKyNkZWZpbmUgUkFQSURKU09OX0FMTE9DQVRPUlNfSF8KKworI2luY2x1ZGUgInJh
cGlkanNvbi5oIgorCitSQVBJREpTT05fTkFNRVNQQUNFX0JFR0lOCisKKy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8KKy8vIEFsbG9jYXRvcgorCisvKiEgXGNsYXNzIHJhcGlkanNvbjo6QWxsb2NhdG9y
CisgICAgXGJyaWVmIENvbmNlcHQgZm9yIGFsbG9jYXRpbmcsIHJlc2l6aW5nIGFuZCBmcmVlaW5n
IG1lbW9yeSBibG9jay4KKyAgICAKKyAgICBOb3RlIHRoYXQgTWFsbG9jKCkgYW5kIFJlYWxsb2Mo
KSBhcmUgbm9uLXN0YXRpYyBidXQgRnJlZSgpIGlzIHN0YXRpYy4KKyAgICAKKyAgICBTbyBpZiBh
biBhbGxvY2F0b3IgbmVlZCB0byBzdXBwb3J0IEZyZWUoKSwgaXQgbmVlZHMgdG8gcHV0IGl0cyBw
b2ludGVyIGluIAorICAgIHRoZSBoZWFkZXIgb2YgbWVtb3J5IGJsb2NrLgorCitcY29kZQorY29u
Y2VwdCBBbGxvY2F0b3IgeworICAgIHN0YXRpYyBjb25zdCBib29sIGtOZWVkRnJlZTsgICAgLy8h
PCBXaGV0aGVyIHRoaXMgYWxsb2NhdG9yIG5lZWRzIHRvIGNhbGwgRnJlZSgpLgorCisgICAgLy8g
QWxsb2NhdGUgYSBtZW1vcnkgYmxvY2suCisgICAgLy8gXHBhcmFtIHNpemUgb2YgdGhlIG1lbW9y
eSBibG9jayBpbiBieXRlcy4KKyAgICAvLyBccmV0dXJucyBwb2ludGVyIHRvIHRoZSBtZW1vcnkg
YmxvY2suCisgICAgdm9pZCogTWFsbG9jKHNpemVfdCBzaXplKTsKKworICAgIC8vIFJlc2l6ZSBh
IG1lbW9yeSBibG9jay4KKyAgICAvLyBccGFyYW0gb3JpZ2luYWxQdHIgVGhlIHBvaW50ZXIgdG8g
Y3VycmVudCBtZW1vcnkgYmxvY2suIE51bGwgcG9pbnRlciBpcyBwZXJtaXR0ZWQuCisgICAgLy8g
XHBhcmFtIG9yaWdpbmFsU2l6ZSBUaGUgY3VycmVudCBzaXplIGluIGJ5dGVzLiAoRGVzaWduIGlz
c3VlOiBzaW5jZSBzb21lIGFsbG9jYXRvciBtYXkgbm90IGJvb2sta2VlcCB0aGlzLCBleHBsaWNp
dGx5IHBhc3MgdG8gaXQgY2FuIHNhdmUgbWVtb3J5LikKKyAgICAvLyBccGFyYW0gbmV3U2l6ZSB0
aGUgbmV3IHNpemUgaW4gYnl0ZXMuCisgICAgdm9pZCogUmVhbGxvYyh2b2lkKiBvcmlnaW5hbFB0
ciwgc2l6ZV90IG9yaWdpbmFsU2l6ZSwgc2l6ZV90IG5ld1NpemUpOworCisgICAgLy8gRnJlZSBh
IG1lbW9yeSBibG9jay4KKyAgICAvLyBccGFyYW0gcG9pbnRlciB0byB0aGUgbWVtb3J5IGJsb2Nr
LiBOdWxsIHBvaW50ZXIgaXMgcGVybWl0dGVkLgorICAgIHN0YXRpYyB2b2lkIEZyZWUodm9pZCAq
cHRyKTsKK307CitcZW5kY29kZQorKi8KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gQ3J0
QWxsb2NhdG9yCisKKy8vISBDLXJ1bnRpbWUgbGlicmFyeSBhbGxvY2F0b3IuCisvKiEgVGhpcyBj
bGFzcyBpcyBqdXN0IHdyYXBwZXIgZm9yIHN0YW5kYXJkIEMgbGlicmFyeSBtZW1vcnkgcm91dGlu
ZXMuCisgICAgXG5vdGUgaW1wbGVtZW50cyBBbGxvY2F0b3IgY29uY2VwdAorKi8KK2NsYXNzIENy
dEFsbG9jYXRvciB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IGJvb2wga05lZWRGcmVlID0g
dHJ1ZTsKKyAgICB2b2lkKiBNYWxsb2Moc2l6ZV90IHNpemUpIHsgcmV0dXJuIHN0ZDo6bWFsbG9j
KHNpemUpOyB9CisgICAgdm9pZCogUmVhbGxvYyh2b2lkKiBvcmlnaW5hbFB0ciwgc2l6ZV90IG9y
aWdpbmFsU2l6ZSwgc2l6ZV90IG5ld1NpemUpIHsgKHZvaWQpb3JpZ2luYWxTaXplOyByZXR1cm4g
c3RkOjpyZWFsbG9jKG9yaWdpbmFsUHRyLCBuZXdTaXplKTsgfQorICAgIHN0YXRpYyB2b2lkIEZy
ZWUodm9pZCAqcHRyKSB7IHN0ZDo6ZnJlZShwdHIpOyB9Cit9OworCisvLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vCisvLyBNZW1vcnlQb29sQWxsb2NhdG9yCisKKy8vISBEZWZhdWx0IG1lbW9yeSBhbGxv
Y2F0b3IgdXNlZCBieSB0aGUgcGFyc2VyIGFuZCBET00uCisvKiEgVGhpcyBhbGxvY2F0b3IgYWxs
b2NhdGUgbWVtb3J5IGJsb2NrcyBmcm9tIHByZS1hbGxvY2F0ZWQgbWVtb3J5IGNodW5rcy4gCisK
KyAgICBJdCBkb2VzIG5vdCBmcmVlIG1lbW9yeSBibG9ja3MuIEFuZCBSZWFsbG9jKCkgb25seSBh
bGxvY2F0ZSBuZXcgbWVtb3J5LgorCisgICAgVGhlIG1lbW9yeSBjaHVua3MgYXJlIGFsbG9jYXRl
ZCBieSBCYXNlQWxsb2NhdG9yLCB3aGljaCBpcyBDcnRBbGxvY2F0b3IgYnkgZGVmYXVsdC4KKwor
ICAgIFVzZXIgbWF5IGFsc28gc3VwcGx5IGEgYnVmZmVyIGFzIHRoZSBmaXJzdCBjaHVuay4KKwor
ICAgIElmIHRoZSB1c2VyLWJ1ZmZlciBpcyBmdWxsIHRoZW4gYWRkaXRpb25hbCBjaHVua3MgYXJl
IGFsbG9jYXRlZCBieSBCYXNlQWxsb2NhdG9yLgorCisgICAgVGhlIHVzZXItYnVmZmVyIGlzIG5v
dCBkZWFsbG9jYXRlZCBieSB0aGlzIGFsbG9jYXRvci4KKworICAgIFx0cGFyYW0gQmFzZUFsbG9j
YXRvciB0aGUgYWxsb2NhdG9yIHR5cGUgZm9yIGFsbG9jYXRpbmcgbWVtb3J5IGNodW5rcy4gRGVm
YXVsdCBpcyBDcnRBbGxvY2F0b3IuCisgICAgXG5vdGUgaW1wbGVtZW50cyBBbGxvY2F0b3IgY29u
Y2VwdAorKi8KK3RlbXBsYXRlIDx0eXBlbmFtZSBCYXNlQWxsb2NhdG9yID0gQ3J0QWxsb2NhdG9y
PgorY2xhc3MgTWVtb3J5UG9vbEFsbG9jYXRvciB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0
IGJvb2wga05lZWRGcmVlID0gZmFsc2U7ICAgIC8vITwgVGVsbCB1c2VycyB0aGF0IG5vIG5lZWQg
dG8gY2FsbCBGcmVlKCkgd2l0aCB0aGlzIGFsbG9jYXRvci4gKGNvbmNlcHQgQWxsb2NhdG9yKQor
CisgICAgLy8hIENvbnN0cnVjdG9yIHdpdGggY2h1bmtTaXplLgorICAgIC8qISBccGFyYW0gY2h1
bmtTaXplIFRoZSBzaXplIG9mIG1lbW9yeSBjaHVuay4gVGhlIGRlZmF1bHQgaXMga0RlZmF1bHRD
aHVua1NpemUuCisgICAgICAgIFxwYXJhbSBiYXNlQWxsb2NhdG9yIFRoZSBhbGxvY2F0b3IgZm9y
IGFsbG9jYXRpbmcgbWVtb3J5IGNodW5rcy4KKyAgICAqLworICAgIE1lbW9yeVBvb2xBbGxvY2F0
b3Ioc2l6ZV90IGNodW5rU2l6ZSA9IGtEZWZhdWx0Q2h1bmtDYXBhY2l0eSwgQmFzZUFsbG9jYXRv
ciogYmFzZUFsbG9jYXRvciA9IDApIDogCisgICAgICAgIGNodW5rSGVhZF8oMCksIGNodW5rX2Nh
cGFjaXR5XyhjaHVua1NpemUpLCB1c2VyQnVmZmVyXygwKSwgYmFzZUFsbG9jYXRvcl8oYmFzZUFs
bG9jYXRvciksIG93bkJhc2VBbGxvY2F0b3JfKDApCisgICAgeworICAgIH0KKworICAgIC8vISBD
b25zdHJ1Y3RvciB3aXRoIHVzZXItc3VwcGxpZWQgYnVmZmVyLgorICAgIC8qISBUaGUgdXNlciBi
dWZmZXIgd2lsbCBiZSB1c2VkIGZpcnN0bHkuIFdoZW4gaXQgaXMgZnVsbCwgbWVtb3J5IHBvb2wg
YWxsb2NhdGVzIG5ldyBjaHVuayB3aXRoIGNodW5rIHNpemUuCisKKyAgICAgICAgVGhlIHVzZXIg
YnVmZmVyIHdpbGwgbm90IGJlIGRlYWxsb2NhdGVkIHdoZW4gdGhpcyBhbGxvY2F0b3IgaXMgZGVz
dHJ1Y3RlZC4KKworICAgICAgICBccGFyYW0gYnVmZmVyIFVzZXIgc3VwcGxpZWQgYnVmZmVyLgor
ICAgICAgICBccGFyYW0gc2l6ZSBTaXplIG9mIHRoZSBidWZmZXIgaW4gYnl0ZXMuIEl0IG11c3Qg
YXQgbGVhc3QgbGFyZ2VyIHRoYW4gc2l6ZW9mKENodW5rSGVhZGVyKS4KKyAgICAgICAgXHBhcmFt
IGNodW5rU2l6ZSBUaGUgc2l6ZSBvZiBtZW1vcnkgY2h1bmsuIFRoZSBkZWZhdWx0IGlzIGtEZWZh
dWx0Q2h1bmtTaXplLgorICAgICAgICBccGFyYW0gYmFzZUFsbG9jYXRvciBUaGUgYWxsb2NhdG9y
IGZvciBhbGxvY2F0aW5nIG1lbW9yeSBjaHVua3MuCisgICAgKi8KKyAgICBNZW1vcnlQb29sQWxs
b2NhdG9yKHZvaWQgKmJ1ZmZlciwgc2l6ZV90IHNpemUsIHNpemVfdCBjaHVua1NpemUgPSBrRGVm
YXVsdENodW5rQ2FwYWNpdHksIEJhc2VBbGxvY2F0b3IqIGJhc2VBbGxvY2F0b3IgPSAwKSA6Cisg
ICAgICAgIGNodW5rSGVhZF8oMCksIGNodW5rX2NhcGFjaXR5XyhjaHVua1NpemUpLCB1c2VyQnVm
ZmVyXyhidWZmZXIpLCBiYXNlQWxsb2NhdG9yXyhiYXNlQWxsb2NhdG9yKSwgb3duQmFzZUFsbG9j
YXRvcl8oMCkKKyAgICB7CisgICAgICAgIFJBUElESlNPTl9BU1NFUlQoYnVmZmVyICE9IDApOwor
ICAgICAgICBSQVBJREpTT05fQVNTRVJUKHNpemUgPiBzaXplb2YoQ2h1bmtIZWFkZXIpKTsKKyAg
ICAgICAgY2h1bmtIZWFkXyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q2h1bmtIZWFkZXIqPihidWZmZXIp
OworICAgICAgICBjaHVua0hlYWRfLT5jYXBhY2l0eSA9IHNpemUgLSBzaXplb2YoQ2h1bmtIZWFk
ZXIpOworICAgICAgICBjaHVua0hlYWRfLT5zaXplID0gMDsKKyAgICAgICAgY2h1bmtIZWFkXy0+
bmV4dCA9IDA7CisgICAgfQorCisgICAgLy8hIERlc3RydWN0b3IuCisgICAgLyohIFRoaXMgZGVh
bGxvY2F0ZXMgYWxsIG1lbW9yeSBjaHVua3MsIGV4Y2x1ZGluZyB0aGUgdXNlci1zdXBwbGllZCBi
dWZmZXIuCisgICAgKi8KKyAgICB+TWVtb3J5UG9vbEFsbG9jYXRvcigpIHsKKyAgICAgICAgQ2xl
YXIoKTsKKyAgICAgICAgUkFQSURKU09OX0RFTEVURShvd25CYXNlQWxsb2NhdG9yXyk7CisgICAg
fQorCisgICAgLy8hIERlYWxsb2NhdGVzIGFsbCBtZW1vcnkgY2h1bmtzLCBleGNsdWRpbmcgdGhl
IHVzZXItc3VwcGxpZWQgYnVmZmVyLgorICAgIHZvaWQgQ2xlYXIoKSB7CisgICAgICAgIHdoaWxl
KGNodW5rSGVhZF8gIT0gMCAmJiBjaHVua0hlYWRfICE9IHVzZXJCdWZmZXJfKSB7CisgICAgICAg
ICAgICBDaHVua0hlYWRlciogbmV4dCA9IGNodW5rSGVhZF8tPm5leHQ7CisgICAgICAgICAgICBi
YXNlQWxsb2NhdG9yXy0+RnJlZShjaHVua0hlYWRfKTsKKyAgICAgICAgICAgIGNodW5rSGVhZF8g
PSBuZXh0OworICAgICAgICB9CisgICAgfQorCisgICAgLy8hIENvbXB1dGVzIHRoZSB0b3RhbCBj
YXBhY2l0eSBvZiBhbGxvY2F0ZWQgbWVtb3J5IGNodW5rcy4KKyAgICAvKiEgXHJldHVybiB0b3Rh
bCBjYXBhY2l0eSBpbiBieXRlcy4KKyAgICAqLworICAgIHNpemVfdCBDYXBhY2l0eSgpIGNvbnN0
IHsKKyAgICAgICAgc2l6ZV90IGNhcGFjaXR5ID0gMDsKKyAgICAgICAgZm9yIChDaHVua0hlYWRl
ciogYyA9IGNodW5rSGVhZF87IGMgIT0gMDsgYyA9IGMtPm5leHQpCisgICAgICAgICAgICBjYXBh
Y2l0eSArPSBjLT5jYXBhY2l0eTsKKyAgICAgICAgcmV0dXJuIGNhcGFjaXR5OworICAgIH0KKwor
ICAgIC8vISBDb21wdXRlcyB0aGUgbWVtb3J5IGJsb2NrcyBhbGxvY2F0ZWQuCisgICAgLyohIFxy
ZXR1cm4gdG90YWwgdXNlZCBieXRlcy4KKyAgICAqLworICAgIHNpemVfdCBTaXplKCkgY29uc3Qg
eworICAgICAgICBzaXplX3Qgc2l6ZSA9IDA7CisgICAgICAgIGZvciAoQ2h1bmtIZWFkZXIqIGMg
PSBjaHVua0hlYWRfOyBjICE9IDA7IGMgPSBjLT5uZXh0KQorICAgICAgICAgICAgc2l6ZSArPSBj
LT5zaXplOworICAgICAgICByZXR1cm4gc2l6ZTsKKyAgICB9CisKKyAgICAvLyEgQWxsb2NhdGVz
IGEgbWVtb3J5IGJsb2NrLiAoY29uY2VwdCBBbGxvY2F0b3IpCisgICAgdm9pZCogTWFsbG9jKHNp
emVfdCBzaXplKSB7CisgICAgICAgIHNpemUgPSBSQVBJREpTT05fQUxJR04oc2l6ZSk7CisgICAg
ICAgIGlmIChjaHVua0hlYWRfID09IDAgfHwgY2h1bmtIZWFkXy0+c2l6ZSArIHNpemUgPiBjaHVu
a0hlYWRfLT5jYXBhY2l0eSkKKyAgICAgICAgICAgIEFkZENodW5rKGNodW5rX2NhcGFjaXR5XyA+
IHNpemUgPyBjaHVua19jYXBhY2l0eV8gOiBzaXplKTsKKworICAgICAgICB2b2lkICpidWZmZXIg
PSByZWludGVycHJldF9jYXN0PGNoYXIgKj4oY2h1bmtIZWFkXyArIDEpICsgY2h1bmtIZWFkXy0+
c2l6ZTsKKyAgICAgICAgY2h1bmtIZWFkXy0+c2l6ZSArPSBzaXplOworICAgICAgICByZXR1cm4g
YnVmZmVyOworICAgIH0KKworICAgIC8vISBSZXNpemVzIGEgbWVtb3J5IGJsb2NrIChjb25jZXB0
IEFsbG9jYXRvcikKKyAgICB2b2lkKiBSZWFsbG9jKHZvaWQqIG9yaWdpbmFsUHRyLCBzaXplX3Qg
b3JpZ2luYWxTaXplLCBzaXplX3QgbmV3U2l6ZSkgeworICAgICAgICBpZiAob3JpZ2luYWxQdHIg
PT0gMCkKKyAgICAgICAgICAgIHJldHVybiBNYWxsb2MobmV3U2l6ZSk7CisKKyAgICAgICAgLy8g
RG8gbm90IHNocmluayBpZiBuZXcgc2l6ZSBpcyBzbWFsbGVyIHRoYW4gb3JpZ2luYWwKKyAgICAg
ICAgaWYgKG9yaWdpbmFsU2l6ZSA+PSBuZXdTaXplKQorICAgICAgICAgICAgcmV0dXJuIG9yaWdp
bmFsUHRyOworCisgICAgICAgIC8vIFNpbXBseSBleHBhbmQgaXQgaWYgaXQgaXMgdGhlIGxhc3Qg
YWxsb2NhdGlvbiBhbmQgdGhlcmUgaXMgc3VmZmljaWVudCBzcGFjZQorICAgICAgICBpZiAob3Jp
Z2luYWxQdHIgPT0gKGNoYXIgKikoY2h1bmtIZWFkXyArIDEpICsgY2h1bmtIZWFkXy0+c2l6ZSAt
IG9yaWdpbmFsU2l6ZSkgeworICAgICAgICAgICAgc2l6ZV90IGluY3JlbWVudCA9IHN0YXRpY19j
YXN0PHNpemVfdD4obmV3U2l6ZSAtIG9yaWdpbmFsU2l6ZSk7CisgICAgICAgICAgICBpbmNyZW1l
bnQgPSBSQVBJREpTT05fQUxJR04oaW5jcmVtZW50KTsKKyAgICAgICAgICAgIGlmIChjaHVua0hl
YWRfLT5zaXplICsgaW5jcmVtZW50IDw9IGNodW5rSGVhZF8tPmNhcGFjaXR5KSB7CisgICAgICAg
ICAgICAgICAgY2h1bmtIZWFkXy0+c2l6ZSArPSBpbmNyZW1lbnQ7CisgICAgICAgICAgICAgICAg
cmV0dXJuIG9yaWdpbmFsUHRyOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
Ly8gUmVhbGxvYyBwcm9jZXNzOiBhbGxvY2F0ZSBhbmQgY29weSBtZW1vcnksIGRvIG5vdCBmcmVl
IG9yaWdpbmFsIGJ1ZmZlci4KKyAgICAgICAgdm9pZCogbmV3QnVmZmVyID0gTWFsbG9jKG5ld1Np
emUpOworICAgICAgICBSQVBJREpTT05fQVNTRVJUKG5ld0J1ZmZlciAhPSAwKTsgICAvLyBEbyBu
b3QgaGFuZGxlIG91dC1vZi1tZW1vcnkgZXhwbGljaXRseS4KKyAgICAgICAgcmV0dXJuIHN0ZDo6
bWVtY3B5KG5ld0J1ZmZlciwgb3JpZ2luYWxQdHIsIG9yaWdpbmFsU2l6ZSk7CisgICAgfQorCisg
ICAgLy8hIEZyZWVzIGEgbWVtb3J5IGJsb2NrIChjb25jZXB0IEFsbG9jYXRvcikKKyAgICBzdGF0
aWMgdm9pZCBGcmVlKHZvaWQgKnB0cikgeyAodm9pZClwdHI7IH0gLy8gRG8gbm90aGluZworCitw
cml2YXRlOgorICAgIC8vISBDb3B5IGNvbnN0cnVjdG9yIGlzIG5vdCBwZXJtaXR0ZWQuCisgICAg
TWVtb3J5UG9vbEFsbG9jYXRvcihjb25zdCBNZW1vcnlQb29sQWxsb2NhdG9yJiByaHMpIC8qID0g
ZGVsZXRlICovOworICAgIC8vISBDb3B5IGFzc2lnbm1lbnQgb3BlcmF0b3IgaXMgbm90IHBlcm1p
dHRlZC4KKyAgICBNZW1vcnlQb29sQWxsb2NhdG9yJiBvcGVyYXRvcj0oY29uc3QgTWVtb3J5UG9v
bEFsbG9jYXRvciYgcmhzKSAvKiA9IGRlbGV0ZSAqLzsKKworICAgIC8vISBDcmVhdGVzIGEgbmV3
IGNodW5rLgorICAgIC8qISBccGFyYW0gY2FwYWNpdHkgQ2FwYWNpdHkgb2YgdGhlIGNodW5rIGlu
IGJ5dGVzLgorICAgICovCisgICAgdm9pZCBBZGRDaHVuayhzaXplX3QgY2FwYWNpdHkpIHsKKyAg
ICAgICAgaWYgKCFiYXNlQWxsb2NhdG9yXykKKyAgICAgICAgICAgIG93bkJhc2VBbGxvY2F0b3Jf
ID0gYmFzZUFsbG9jYXRvcl8gPSBSQVBJREpTT05fTkVXKEJhc2VBbGxvY2F0b3IoKSk7CisgICAg
ICAgIENodW5rSGVhZGVyKiBjaHVuayA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q2h1bmtIZWFkZXIqPihi
YXNlQWxsb2NhdG9yXy0+TWFsbG9jKHNpemVvZihDaHVua0hlYWRlcikgKyBjYXBhY2l0eSkpOwor
ICAgICAgICBjaHVuay0+Y2FwYWNpdHkgPSBjYXBhY2l0eTsKKyAgICAgICAgY2h1bmstPnNpemUg
PSAwOworICAgICAgICBjaHVuay0+bmV4dCA9IGNodW5rSGVhZF87CisgICAgICAgIGNodW5rSGVh
ZF8gPSAgY2h1bms7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGludCBrRGVmYXVsdENodW5r
Q2FwYWNpdHkgPSA2NCAqIDEwMjQ7IC8vITwgRGVmYXVsdCBjaHVuayBjYXBhY2l0eS4KKworICAg
IC8vISBDaHVuayBoZWFkZXIgZm9yIHBlcnBlbmRpbmcgdG8gZWFjaCBjaHVuay4KKyAgICAvKiEg
Q2h1bmtzIGFyZSBzdG9yZWQgYXMgYSBzaW5nbHkgbGlua2VkIGxpc3QuCisgICAgKi8KKyAgICBz
dHJ1Y3QgQ2h1bmtIZWFkZXIgeworICAgICAgICBzaXplX3QgY2FwYWNpdHk7ICAgIC8vITwgQ2Fw
YWNpdHkgb2YgdGhlIGNodW5rIGluIGJ5dGVzIChleGNsdWRpbmcgdGhlIGhlYWRlciBpdHNlbGYp
LgorICAgICAgICBzaXplX3Qgc2l6ZTsgICAgICAgIC8vITwgQ3VycmVudCBzaXplIG9mIGFsbG9j
YXRlZCBtZW1vcnkgaW4gYnl0ZXMuCisgICAgICAgIENodW5rSGVhZGVyICpuZXh0OyAgLy8hPCBO
ZXh0IGNodW5rIGluIHRoZSBsaW5rZWQgbGlzdC4KKyAgICB9OworCisgICAgQ2h1bmtIZWFkZXIg
KmNodW5rSGVhZF87ICAgIC8vITwgSGVhZCBvZiB0aGUgY2h1bmsgbGlua2VkLWxpc3QuIE9ubHkg
dGhlIGhlYWQgY2h1bmsgc2VydmVzIGFsbG9jYXRpb24uCisgICAgc2l6ZV90IGNodW5rX2NhcGFj
aXR5XzsgICAgIC8vITwgVGhlIG1pbmltdW0gY2FwYWNpdHkgb2YgY2h1bmsgd2hlbiB0aGV5IGFy
ZSBhbGxvY2F0ZWQuCisgICAgdm9pZCAqdXNlckJ1ZmZlcl87ICAgICAgICAgIC8vITwgVXNlciBz
dXBwbGllZCBidWZmZXIuCisgICAgQmFzZUFsbG9jYXRvciogYmFzZUFsbG9jYXRvcl87ICAvLyE8
IGJhc2UgYWxsb2NhdG9yIGZvciBhbGxvY2F0aW5nIG1lbW9yeSBjaHVua3MuCisgICAgQmFzZUFs
bG9jYXRvciogb3duQmFzZUFsbG9jYXRvcl87ICAgLy8hPCBiYXNlIGFsbG9jYXRvciBjcmVhdGVk
IGJ5IHRoaXMgb2JqZWN0LgorfTsKKworUkFQSURKU09OX05BTUVTUEFDRV9FTkQKKworI2VuZGlm
IC8vIFJBUElESlNPTl9FTkNPRElOR1NfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vZG9jdW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhp
cmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2RvY3VtZW50LmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3Jh
cGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9kb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTkzMiBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExIE1pbG8gWWlwCisvLworLy8gUGVy
bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g
b2J0YWluaW5nIGEgY29weQorLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1
bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKKy8vIGluIHRoZSBTb2Z0
d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRo
ZSByaWdodHMKKy8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJp
YnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKKy8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUs
IGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLy8gZnVybmlz
aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKy8vCisv
LyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBz
aGFsbCBiZSBpbmNsdWRlZCBpbgorLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9u
cyBvZiB0aGUgU29mdHdhcmUuCisvLworLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ
UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKy8vIElNUExJRUQs
IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZLAorLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJ
TkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisvLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBI
T0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisvLyBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT
RSwgQVJJU0lORyBGUk9NLAorLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G
VFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgorLy8gVEhFIFNPRlRXQVJFLgor
CisjaWZuZGVmIFJBUElESlNPTl9ET0NVTUVOVF9IXworI2RlZmluZSBSQVBJREpTT05fRE9DVU1F
TlRfSF8KKworLyohIFxmaWxlIGRvY3VtZW50LmggKi8KKworI2luY2x1ZGUgInJlYWRlci5oIgor
I2luY2x1ZGUgImludGVybmFsL21ldGEuaCIKKyNpbmNsdWRlICJpbnRlcm5hbC9zdHJmdW5jLmgi
CisjaW5jbHVkZSA8bmV3PiAgICAgIC8vIHBsYWNlbWVudCBuZXcKKworI2lmZGVmIF9NU0NfVkVS
CitSQVBJREpTT05fRElBR19QVVNICitSQVBJREpTT05fRElBR19PRkYoNDEyNykgLy8gY29uZGl0
aW9uYWwgZXhwcmVzc2lvbiBpcyBjb25zdGFudAorI2VsaWYgZGVmaW5lZChfX0dOVUNfXykKK1JB
UElESlNPTl9ESUFHX1BVU0gKK1JBUElESlNPTl9ESUFHX09GRihlZmZjKyspCisjZW5kaWYKKwor
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gUkFQSURKU09OX0hBU19TVERTVFJJTkcKKworI2lm
bmRlZiBSQVBJREpTT05fSEFTX1NURFNUUklORworI2lmZGVmIFJBUElESlNPTl9ET1hZR0VOX1JV
Tk5JTkcKKyNkZWZpbmUgUkFQSURKU09OX0hBU19TVERTVFJJTkcgMSAvLyBmb3JjZSBnZW5lcmF0
aW9uIG9mIGRvY3VtZW50YXRpb24KKyNlbHNlCisjZGVmaW5lIFJBUElESlNPTl9IQVNfU1REU1RS
SU5HIDAgLy8gbm8gc3RkOjpzdHJpbmcgc3VwcG9ydCBieSBkZWZhdWx0CisjZW5kaWYKKy8qISBc
ZGVmIFJBUElESlNPTl9IQVNfU1REU1RSSU5HCisgICAgXGluZ3JvdXAgUkFQSURKU09OX0NPTkZJ
RworICAgIFxicmllZiBFbmFibGUgUmFwaWRKU09OIHN1cHBvcnQgZm9yIFxjIHN0ZDo6c3RyaW5n
CisKKyAgICBCeSBkZWZpbmluZyB0aGlzIHByZXByb2Nlc3NvciBzeW1ib2wgdG8gXGMgMSwgc2V2
ZXJhbCBjb252ZW5pZW5jZSBmdW5jdGlvbnMgZm9yIHVzaW5nCisgICAgXHJlZiByYXBpZGpzb246
OkdlbmVyaWNWYWx1ZSB3aXRoIFxjIHN0ZDo6c3RyaW5nIGFyZSBlbmFibGVkLCBlc3BlY2lhbGx5
CisgICAgZm9yIGNvbnN0cnVjdGlvbiBhbmQgY29tcGFyaXNvbi4KKworICAgIFxoaWRlaW5pdGlh
bGl6ZXIKKyovCisjaW5jbHVkZSA8c3RyaW5nPgorI2VuZGlmIC8vIFJBUElESlNPTl9IQVNfU1RE
U1RSSU5HCisKKyNpZm5kZWYgUkFQSURKU09OX05PTUVNQkVSSVRFUkFUT1JDTEFTUworI2luY2x1
ZGUgPGl0ZXJhdG9yPiAvLyBzdGQ6Oml0ZXJhdG9yLCBzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0
b3JfdGFnCisjZW5kaWYKKworI2lmIFJBUElESlNPTl9IQVNfQ1hYMTFfUlZBTFVFX1JFRlMKKyNp
bmNsdWRlIDx1dGlsaXR5PiAvLyBzdGQ6Om1vdmUKKyNlbmRpZgorCitSQVBJREpTT05fTkFNRVNQ
QUNFX0JFR0lOCisKKy8vIEZvcndhcmQgZGVjbGFyYXRpb24uCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
RW5jb2RpbmcsIHR5cGVuYW1lIEFsbG9jYXRvcj4KK2NsYXNzIEdlbmVyaWNWYWx1ZTsKKworLy8h
IE5hbWUtdmFsdWUgcGFpciBpbiBhIEpTT04gb2JqZWN0IHZhbHVlLgorLyohCisgICAgVGhpcyBj
bGFzcyB3YXMgaW50ZXJuYWwgdG8gR2VuZXJpY1ZhbHVlLiBJdCB1c2VkIHRvIGJlIGEgaW5uZXIg
c3RydWN0LgorICAgIEJ1dCBhIGNvbXBpbGVyIChJQk0gWEwgQy9DKysgZm9yIEFJWCkgaGF2ZSBy
ZXBvcnRlZCB0byBoYXZlIHByb2JsZW0gd2l0aCB0aGF0IHNvIGl0IG1vdmVkIGFzIGEgbmFtZXNw
YWNlIHNjb3BlIHN0cnVjdC4KKyAgICBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3JhcGlkanNv
bi9pc3N1ZXMvZGV0YWlsP2lkPTY0CisqLwordGVtcGxhdGUgPHR5cGVuYW1lIEVuY29kaW5nLCB0
eXBlbmFtZSBBbGxvY2F0b3I+IAorc3RydWN0IEdlbmVyaWNNZW1iZXIgeyAKKyAgICBHZW5lcmlj
VmFsdWU8RW5jb2RpbmcsIEFsbG9jYXRvcj4gbmFtZTsgICAgIC8vITwgbmFtZSBvZiBtZW1iZXIg
KG11c3QgYmUgYSBzdHJpbmcpCisgICAgR2VuZXJpY1ZhbHVlPEVuY29kaW5nLCBBbGxvY2F0b3I+
IHZhbHVlOyAgICAvLyE8IHZhbHVlIG9mIG1lbWJlci4KK307CisKKy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KKy8vIEdlbmVyaWNNZW1iZXJJdGVyYXRvcgorCisjaWZuZGVmIFJBUElESlNPTl9OT01F
TUJFUklURVJBVE9SQ0xBU1MKKworLy8hIChDb25zdGFudCkgbWVtYmVyIGl0ZXJhdG9yIGZvciBh
IEpTT04gb2JqZWN0IHZhbHVlCisvKiEKKyAgICBcdHBhcmFtIENvbnN0IElzIHRoaXMgYSBjb25z
dGFudCBpdGVyYXRvcj8KKyAgICBcdHBhcmFtIEVuY29kaW5nICAgIEVuY29kaW5nIG9mIHRoZSB2
YWx1ZS4gKEV2ZW4gbm9uLXN0cmluZyB2YWx1ZXMgbmVlZCB0byBoYXZlIHRoZSBzYW1lIGVuY29k
aW5nIGluIGEgZG9jdW1lbnQpCisgICAgXHRwYXJhbSBBbGxvY2F0b3IgICBBbGxvY2F0b3IgdHlw
ZSBmb3IgYWxsb2NhdGluZyBtZW1vcnkgb2Ygb2JqZWN0LCBhcnJheSBhbmQgc3RyaW5nLgorCisg
ICAgVGhpcyBjbGFzcyBpbXBsZW1lbnRzIGEgUmFuZG9tIEFjY2VzcyBJdGVyYXRvciBmb3IgR2Vu
ZXJpY01lbWJlciBlbGVtZW50cworICAgIG9mIGEgR2VuZXJpY1ZhbHVlLCBzZWUgSVNPL0lFQyAx
NDg4MjoyMDAzKEUpIEMrKyBzdGFuZGFyZCwgMjQuMSBbbGliLml0ZXJhdG9yLnJlcXVpcmVtZW50
c10uCisKKyAgICBcbm90ZSBUaGlzIGl0ZXJhdG9yIGltcGxlbWVudGF0aW9uIGlzIG1haW5seSBp
bnRlbmRlZCB0byBhdm9pZCBpbXBsaWNpdAorICAgICAgICBjb252ZXJzaW9ucyBmcm9tIGl0ZXJh
dG9yIHZhbHVlcyB0byBcYyBOVUxMLAorICAgICAgICBlLmcuIGZyb20gR2VuZXJpY1ZhbHVlOjpG
aW5kTWVtYmVyLgorCisgICAgXG5vdGUgRGVmaW5lIFxjIFJBUElESlNPTl9OT01FTUJFUklURVJB
VE9SQ0xBU1MgdG8gZmFsbCBiYWNrIHRvIGEKKyAgICAgICAgcG9pbnRlci1iYXNlZCBpbXBsZW1l
bnRhdGlvbiwgaWYgeW91ciBwbGF0Zm9ybSBkb2Vzbid0IHByb3ZpZGUKKyAgICAgICAgdGhlIEMr
KyA8aXRlcmF0b3I+IGhlYWRlci4KKworICAgIFxzZWUgR2VuZXJpY01lbWJlciwgR2VuZXJpY1Zh
bHVlOjpNZW1iZXJJdGVyYXRvciwgR2VuZXJpY1ZhbHVlOjpDb25zdE1lbWJlckl0ZXJhdG9yCisg
Ki8KK3RlbXBsYXRlIDxib29sIENvbnN0LCB0eXBlbmFtZSBFbmNvZGluZywgdHlwZW5hbWUgQWxs
b2NhdG9yPgorY2xhc3MgR2VuZXJpY01lbWJlckl0ZXJhdG9yCisgICAgOiBwdWJsaWMgc3RkOjpp
dGVyYXRvcjxzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnCisgICAgICAgICwgdHlwZW5h
bWUgaW50ZXJuYWw6Ok1heWJlQWRkQ29uc3Q8Q29uc3QsR2VuZXJpY01lbWJlcjxFbmNvZGluZyxB
bGxvY2F0b3I+ID46OlR5cGU+IHsKKworICAgIGZyaWVuZCBjbGFzcyBHZW5lcmljVmFsdWU8RW5j
b2RpbmcsQWxsb2NhdG9yPjsKKyAgICB0ZW1wbGF0ZSA8Ym9vbCwgdHlwZW5hbWUsIHR5cGVuYW1l
PiBmcmllbmQgY2xhc3MgR2VuZXJpY01lbWJlckl0ZXJhdG9yOworCisgICAgdHlwZWRlZiBHZW5l
cmljTWVtYmVyPEVuY29kaW5nLEFsbG9jYXRvcj4gUGxhaW5UeXBlOworICAgIHR5cGVkZWYgdHlw
ZW5hbWUgaW50ZXJuYWw6Ok1heWJlQWRkQ29uc3Q8Q29uc3QsUGxhaW5UeXBlPjo6VHlwZSBWYWx1
ZVR5cGU7CisgICAgdHlwZWRlZiBzdGQ6Oml0ZXJhdG9yPHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVy
YXRvcl90YWcsVmFsdWVUeXBlPiBCYXNlVHlwZTsKKworcHVibGljOgorICAgIC8vISBJdGVyYXRv
ciB0eXBlIGl0c2VsZgorICAgIHR5cGVkZWYgR2VuZXJpY01lbWJlckl0ZXJhdG9yIEl0ZXJhdG9y
OworICAgIC8vISBDb25zdGFudCBpdGVyYXRvciB0eXBlCisgICAgdHlwZWRlZiBHZW5lcmljTWVt
YmVySXRlcmF0b3I8dHJ1ZSxFbmNvZGluZyxBbGxvY2F0b3I+ICBDb25zdEl0ZXJhdG9yOworICAg
IC8vISBOb24tY29uc3RhbnQgaXRlcmF0b3IgdHlwZQorICAgIHR5cGVkZWYgR2VuZXJpY01lbWJl
ckl0ZXJhdG9yPGZhbHNlLEVuY29kaW5nLEFsbG9jYXRvcj4gTm9uQ29uc3RJdGVyYXRvcjsKKwor
ICAgIC8vISBQb2ludGVyIHRvIChjb25zdCkgR2VuZXJpY01lbWJlcgorICAgIHR5cGVkZWYgdHlw
ZW5hbWUgQmFzZVR5cGU6OnBvaW50ZXIgICAgICAgICBQb2ludGVyOworICAgIC8vISBSZWZlcmVu
Y2UgdG8gKGNvbnN0KSBHZW5lcmljTWVtYmVyCisgICAgdHlwZWRlZiB0eXBlbmFtZSBCYXNlVHlw
ZTo6cmVmZXJlbmNlICAgICAgIFJlZmVyZW5jZTsKKyAgICAvLyEgU2lnbmVkIGludGVnZXIgdHlw
ZSAoZS5nLiBcYyBwdHJkaWZmX3QpCisgICAgdHlwZWRlZiB0eXBlbmFtZSBCYXNlVHlwZTo6ZGlm
ZmVyZW5jZV90eXBlIERpZmZlcmVuY2VUeXBlOworCisgICAgLy8hIERlZmF1bHQgY29uc3RydWN0
b3IgKHNpbmd1bGFyIHZhbHVlKQorICAgIC8qISBDcmVhdGVzIGFuIGl0ZXJhdG9yIHBvaW50aW5n
IHRvIG5vIGVsZW1lbnQuCisgICAgICAgIFxub3RlIEFsbCBvcGVyYXRpb25zLCBleGNlcHQgZm9y
IGNvbXBhcmlzb25zLCBhcmUgdW5kZWZpbmVkIG9uIHN1Y2ggdmFsdWVzLgorICAgICAqLworICAg
IEdlbmVyaWNNZW1iZXJJdGVyYXRvcigpIDogcHRyXygpIHt9CisKKyAgICAvLyEgSXRlcmF0b3Ig
Y29udmVyc2lvbnMgdG8gbW9yZSBjb25zdAorICAgIC8qIQorICAgICAgICBccGFyYW0gaXQgKE5v
bi1jb25zdCkgaXRlcmF0b3IgdG8gY29weSBmcm9tCisKKyAgICAgICAgQWxsb3dzIHRoZSBjcmVh
dGlvbiBvZiBhbiBpdGVyYXRvciBmcm9tIGFub3RoZXIgR2VuZXJpY01lbWJlckl0ZXJhdG9yCisg
ICAgICAgIHRoYXQgaXMgImxlc3MgY29uc3QiLiAgRXNwZWNpYWxseSwgY3JlYXRpbmcgYSBub24t
Y29uc3RhbnQgaXRlcmF0b3IKKyAgICAgICAgZnJvbSBhIGNvbnN0YW50IGl0ZXJhdG9yIGFyZSBk
aXNhYmxlZDoKKyAgICAgICAgXGxpIGNvbnN0IC0+IG5vbi1jb25zdCAobm90IG9rKQorICAgICAg
ICBcbGkgY29uc3QgLT4gY29uc3QgKG9rKQorICAgICAgICBcbGkgbm9uLWNvbnN0IC0+IGNvbnN0
IChvaykKKyAgICAgICAgXGxpIG5vbi1jb25zdCAtPiBub24tY29uc3QgKG9rKQorCisgICAgICAg
IFxub3RlIElmIHRoZSBcYyBDb25zdCB0ZW1wbGF0ZSBwYXJhbWV0ZXIgaXMgYWxyZWFkeSBcYyBm
YWxzZSwgdGhpcworICAgICAgICAgICAgY29uc3RydWN0b3IgZWZmZWN0aXZlbHkgZGVmaW5lcyBh
IHJlZ3VsYXIgY29weS1jb25zdHJ1Y3Rvci4KKyAgICAgICAgICAgIE90aGVyd2lzZSwgdGhlIGNv
cHkgY29uc3RydWN0b3IgaXMgaW1wbGljaXRseSBkZWZpbmVkLgorICAgICovCisgICAgR2VuZXJp
Y01lbWJlckl0ZXJhdG9yKGNvbnN0IE5vbkNvbnN0SXRlcmF0b3IgJiBpdCkgOiBwdHJfKGl0LnB0
cl8pIHt9CisKKyAgICAvLyEgQG5hbWUgc3RlcHBpbmcKKyAgICAvL0B7CisgICAgSXRlcmF0b3Im
IG9wZXJhdG9yKysoKXsgKytwdHJfOyByZXR1cm4gKnRoaXM7IH0KKyAgICBJdGVyYXRvciYgb3Bl
cmF0b3ItLSgpeyAtLXB0cl87IHJldHVybiAqdGhpczsgfQorICAgIEl0ZXJhdG9yICBvcGVyYXRv
cisrKGludCl7IEl0ZXJhdG9yIG9sZCgqdGhpcyk7ICsrcHRyXzsgcmV0dXJuIG9sZDsgfQorICAg
IEl0ZXJhdG9yICBvcGVyYXRvci0tKGludCl7IEl0ZXJhdG9yIG9sZCgqdGhpcyk7IC0tcHRyXzsg
cmV0dXJuIG9sZDsgfQorICAgIC8vQH0KKworICAgIC8vISBAbmFtZSBpbmNyZW1lbnQvZGVjcmVt
ZW50CisgICAgLy9AeworICAgIEl0ZXJhdG9yIG9wZXJhdG9yKyhEaWZmZXJlbmNlVHlwZSBuKSBj
b25zdCB7IHJldHVybiBJdGVyYXRvcihwdHJfK24pOyB9CisgICAgSXRlcmF0b3Igb3BlcmF0b3It
KERpZmZlcmVuY2VUeXBlIG4pIGNvbnN0IHsgcmV0dXJuIEl0ZXJhdG9yKHB0cl8tbik7IH0KKwor
ICAgIEl0ZXJhdG9yJiBvcGVyYXRvcis9KERpZmZlcmVuY2VUeXBlIG4pIHsgcHRyXys9bjsgcmV0
dXJuICp0aGlzOyB9CisgICAgSXRlcmF0b3ImIG9wZXJhdG9yLT0oRGlmZmVyZW5jZVR5cGUgbikg
eyBwdHJfLT1uOyByZXR1cm4gKnRoaXM7IH0KKyAgICAvL0B9CisKKyAgICAvLyEgQG5hbWUgcmVs
YXRpb25zCisgICAgLy9AeworICAgIGJvb2wgb3BlcmF0b3I9PShDb25zdEl0ZXJhdG9yIHRoYXQp
IGNvbnN0IHsgcmV0dXJuIHB0cl8gPT0gdGhhdC5wdHJfOyB9CisgICAgYm9vbCBvcGVyYXRvciE9
KENvbnN0SXRlcmF0b3IgdGhhdCkgY29uc3QgeyByZXR1cm4gcHRyXyAhPSB0aGF0LnB0cl87IH0K
KyAgICBib29sIG9wZXJhdG9yPD0oQ29uc3RJdGVyYXRvciB0aGF0KSBjb25zdCB7IHJldHVybiBw
dHJfIDw9IHRoYXQucHRyXzsgfQorICAgIGJvb2wgb3BlcmF0b3I+PShDb25zdEl0ZXJhdG9yIHRo
YXQpIGNvbnN0IHsgcmV0dXJuIHB0cl8gPj0gdGhhdC5wdHJfOyB9CisgICAgYm9vbCBvcGVyYXRv
cjwgKENvbnN0SXRlcmF0b3IgdGhhdCkgY29uc3QgeyByZXR1cm4gcHRyXyA8IHRoYXQucHRyXzsg
fQorICAgIGJvb2wgb3BlcmF0b3I+IChDb25zdEl0ZXJhdG9yIHRoYXQpIGNvbnN0IHsgcmV0dXJu
IHB0cl8gPiB0aGF0LnB0cl87IH0KKyAgICAvL0B9CisKKyAgICAvLyEgQG5hbWUgZGVyZWZlcmVu
Y2UKKyAgICAvL0B7CisgICAgUmVmZXJlbmNlIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpw
dHJfOyB9CisgICAgUG9pbnRlciAgIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBwdHJfOyB9
CisgICAgUmVmZXJlbmNlIG9wZXJhdG9yW10oRGlmZmVyZW5jZVR5cGUgbikgY29uc3QgeyByZXR1
cm4gcHRyX1tuXTsgfQorICAgIC8vQH0KKworICAgIC8vISBEaXN0YW5jZQorICAgIERpZmZlcmVu
Y2VUeXBlIG9wZXJhdG9yLShDb25zdEl0ZXJhdG9yIHRoYXQpIGNvbnN0IHsgcmV0dXJuIHB0cl8t
dGhhdC5wdHJfOyB9CisKK3ByaXZhdGU6CisgICAgLy8hIEludGVybmFsIGNvbnN0cnVjdG9yIGZy
b20gcGxhaW4gcG9pbnRlcgorICAgIGV4cGxpY2l0IEdlbmVyaWNNZW1iZXJJdGVyYXRvcihQb2lu
dGVyIHApIDogcHRyXyhwKSB7fQorCisgICAgUG9pbnRlciBwdHJfOyAvLyE8IHJhdyBwb2ludGVy
Cit9OworCisjZWxzZSAvLyBSQVBJREpTT05fTk9NRU1CRVJJVEVSQVRPUkNMQVNTCisKKy8vIGNs
YXNzLWJhc2VkIG1lbWJlciBpdGVyYXRvciBpbXBsZW1lbnRhdGlvbiBkaXNhYmxlZCwgdXNlIHBs
YWluIHBvaW50ZXJzCisKK3RlbXBsYXRlIDxib29sIENvbnN0LCB0eXBlbmFtZSBFbmNvZGluZywg
dHlwZW5hbWUgQWxsb2NhdG9yPgorc3RydWN0IEdlbmVyaWNNZW1iZXJJdGVyYXRvcjsKKworLy8h
IG5vbi1jb25zdCBHZW5lcmljTWVtYmVySXRlcmF0b3IKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbmNv
ZGluZywgdHlwZW5hbWUgQWxsb2NhdG9yPgorc3RydWN0IEdlbmVyaWNNZW1iZXJJdGVyYXRvcjxm
YWxzZSxFbmNvZGluZyxBbGxvY2F0b3I+IHsKKyAgICAvLyEgdXNlIHBsYWluIHBvaW50ZXIgYXMg
aXRlcmF0b3IgdHlwZQorICAgIHR5cGVkZWYgR2VuZXJpY01lbWJlcjxFbmNvZGluZyxBbGxvY2F0
b3I+KiBJdGVyYXRvcjsKK307CisvLyEgY29uc3QgR2VuZXJpY01lbWJlckl0ZXJhdG9yCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgRW5jb2RpbmcsIHR5cGVuYW1lIEFsbG9jYXRvcj4KK3N0cnVjdCBHZW5l
cmljTWVtYmVySXRlcmF0b3I8dHJ1ZSxFbmNvZGluZyxBbGxvY2F0b3I+IHsKKyAgICAvLyEgdXNl
IHBsYWluIGNvbnN0IHBvaW50ZXIgYXMgaXRlcmF0b3IgdHlwZQorICAgIHR5cGVkZWYgY29uc3Qg
R2VuZXJpY01lbWJlcjxFbmNvZGluZyxBbGxvY2F0b3I+KiBJdGVyYXRvcjsKK307CisKKyNlbmRp
ZiAvLyBSQVBJREpTT05fTk9NRU1CRVJJVEVSQVRPUkNMQVNTCisKKy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KKy8vIEdlbmVyaWNTdHJpbmdSZWYKKworLy8hIFJlZmVyZW5jZSB0byBhIGNvbnN0YW50
IHN0cmluZyAobm90IHRha2luZyBhIGNvcHkpCisvKiEKKyAgICBcdHBhcmFtIENoYXJUeXBlIGNo
YXJhY3RlciB0eXBlIG9mIHRoZSBzdHJpbmcKKworICAgIFRoaXMgaGVscGVyIGNsYXNzIGlzIHVz
ZWQgdG8gYXV0b21hdGljYWxseSBpbmZlciBjb25zdGFudCBzdHJpbmcKKyAgICByZWZlcmVuY2Vz
IGZvciBzdHJpbmcgbGl0ZXJhbHMsIGVzcGVjaWFsbHkgZnJvbSBcYyBjb25zdCBcYiAoISkKKyAg
ICBjaGFyYWN0ZXIgYXJyYXlzLgorCisgICAgVGhlIG1haW4gdXNlIGlzIGZvciBjcmVhdGluZyBK
U09OIHN0cmluZyB2YWx1ZXMgd2l0aG91dCBjb3B5aW5nIHRoZQorICAgIHNvdXJjZSBzdHJpbmcg
dmlhIGFuIFxyZWYgQWxsb2NhdG9yLiAgVGhpcyByZXF1aXJlcyB0aGF0IHRoZSByZWZlcmVuY2Vk
CisgICAgc3RyaW5nIHBvaW50ZXJzIGhhdmUgYSBzdWZmaWNpZW50IGxpZmV0aW1lLCB3aGljaCBl
eGNlZWRzIHRoZSBsaWZldGltZQorICAgIG9mIHRoZSBhc3NvY2lhdGVkIEdlbmVyaWNWYWx1ZS4K
KworICAgIFxiIEV4YW1wbGUKKyAgICBcY29kZQorICAgIFZhbHVlIHYoImZvbyIpOyAgIC8vIG9r
LCBubyBuZWVkIHRvIGNvcHkgJiBjYWxjdWxhdGUgbGVuZ3RoCisgICAgY29uc3QgY2hhciBmb29b
XSA9ICJmb28iOworICAgIHYuU2V0U3RyaW5nKGZvbyk7IC8vIG9rCisKKyAgICBjb25zdCBjaGFy
KiBiYXIgPSBmb287CisgICAgLy8gVmFsdWUgeChiYXIpOyAvLyBub3Qgb2ssIGNhbid0IHJlbHkg
b24gYmFyJ3MgbGlmZXRpbWUKKyAgICBWYWx1ZSB4KFN0cmluZ1JlZihiYXIpKTsgLy8gbGlmZXRp
bWUgZXhwbGljaXRseSBndWFyYW50ZWVkIGJ5IHVzZXIKKyAgICBWYWx1ZSB5KFN0cmluZ1JlZihi
YXIsIDMpKTsgIC8vIG9rLCBleHBsaWNpdGx5IHBhc3MgbGVuZ3RoCisgICAgXGVuZGNvZGUKKwor
ICAgIFxzZWUgU3RyaW5nUmVmLCBHZW5lcmljVmFsdWU6OlNldFN0cmluZworKi8KK3RlbXBsYXRl
PHR5cGVuYW1lIENoYXJUeXBlPgorc3RydWN0IEdlbmVyaWNTdHJpbmdSZWYgeworICAgIHR5cGVk
ZWYgQ2hhclR5cGUgQ2g7IC8vITwgY2hhcmFjdGVyIHR5cGUgb2YgdGhlIHN0cmluZworCisgICAg
Ly8hIENyZWF0ZSBzdHJpbmcgcmVmZXJlbmNlIGZyb20gXGMgY29uc3QgY2hhcmFjdGVyIGFycmF5
CisgICAgLyohCisgICAgICAgIFRoaXMgY29uc3RydWN0b3IgaW1wbGljaXRseSBjcmVhdGVzIGEg
Y29uc3RhbnQgc3RyaW5nIHJlZmVyZW5jZSBmcm9tCisgICAgICAgIGEgXGMgY29uc3QgY2hhcmFj
dGVyIGFycmF5LiAgSXQgaGFzIGJldHRlciBwZXJmb3JtYW5jZSB0aGFuCisgICAgICAgIFxyZWYg
U3RyaW5nUmVmKGNvbnN0IENoYXJUeXBlKikgYnkgaW5mZXJyaW5nIHRoZSBzdHJpbmcgXHJlZiBs
ZW5ndGgKKyAgICAgICAgZnJvbSB0aGUgYXJyYXkgbGVuZ3RoLCBhbmQgYWxzbyBzdXBwb3J0cyBz
dHJpbmdzIGNvbnRhaW5pbmcgbnVsbAorICAgICAgICBjaGFyYWN0ZXJzLgorCisgICAgICAgIFx0
cGFyYW0gTiBsZW5ndGggb2YgdGhlIHN0cmluZywgYXV0b21hdGljYWxseSBpbmZlcnJlZAorCisg
ICAgICAgIFxwYXJhbSBzdHIgQ29uc3RhbnQgY2hhcmFjdGVyIGFycmF5LCBsaWZldGltZSBhc3N1
bWVkIHRvIGJlIGxvbmdlcgorICAgICAgICAgICAgdGhhbiB0aGUgdXNlIG9mIHRoZSBzdHJpbmcg
aW4gZS5nLiBhIEdlbmVyaWNWYWx1ZQorCisgICAgICAgIFxwb3N0IFxyZWYgcyA9PSBzdHIKKwor
ICAgICAgICBcbm90ZSBDb25zdGFudCBjb21wbGV4aXR5LgorICAgICAgICBcbm90ZSBUaGVyZSBp
cyBhIGhpZGRlbiwgcHJpdmF0ZSBvdmVybG9hZCB0byBkaXNhbGxvdyByZWZlcmVuY2VzIHRvCisg
ICAgICAgICAgICBub24tY29uc3QgY2hhcmFjdGVyIGFycmF5cyB0byBiZSBjcmVhdGVkIHZpYSB0
aGlzIGNvbnN0cnVjdG9yLgorICAgICAgICAgICAgQnkgdGhpcywgZS5nLiBmdW5jdGlvbi1zY29w
ZSBhcnJheXMgdXNlZCB0byBiZSBmaWxsZWQgdmlhCisgICAgICAgICAgICBcYyBzbnByaW50ZiBh
cmUgZXhjbHVkZWQgZnJvbSBjb25zaWRlcmF0aW9uLgorICAgICAgICAgICAgSW4gc3VjaCBjYXNl
cywgdGhlIHJlZmVyZW5jZWQgc3RyaW5nIHNob3VsZCBiZSBcYiBjb3BpZWQgdG8gdGhlCisgICAg
ICAgICAgICBHZW5lcmljVmFsdWUgaW5zdGVhZC4KKyAgICAgKi8KKyAgICB0ZW1wbGF0ZTxTaXpl
VHlwZSBOPgorICAgIEdlbmVyaWNTdHJpbmdSZWYoY29uc3QgQ2hhclR5cGUgKCZzdHIpW05dKSBS
QVBJREpTT05fTk9FWENFUFQKKyAgICAgICAgOiBzKHN0ciksIGxlbmd0aChOLTEpIHt9CisKKyAg
ICAvLyEgRXhwbGljaXRseSBjcmVhdGUgc3RyaW5nIHJlZmVyZW5jZSBmcm9tIFxjIGNvbnN0IGNo
YXJhY3RlciBwb2ludGVyCisgICAgLyohCisgICAgICAgIFRoaXMgY29uc3RydWN0b3IgY2FuIGJl
IHVzZWQgdG8gXGIgZXhwbGljaXRseSAgY3JlYXRlIGEgcmVmZXJlbmNlIHRvCisgICAgICAgIGEg
Y29uc3RhbnQgc3RyaW5nIHBvaW50ZXIuCisKKyAgICAgICAgXHNlZSBTdHJpbmdSZWYoY29uc3Qg
Q2hhclR5cGUqKQorCisgICAgICAgIFxwYXJhbSBzdHIgQ29uc3RhbnQgY2hhcmFjdGVyIHBvaW50
ZXIsIGxpZmV0aW1lIGFzc3VtZWQgdG8gYmUgbG9uZ2VyCisgICAgICAgICAgICB0aGFuIHRoZSB1
c2Ugb2YgdGhlIHN0cmluZyBpbiBlLmcuIGEgR2VuZXJpY1ZhbHVlCisKKyAgICAgICAgXHBvc3Qg
XHJlZiBzID09IHN0cgorCisgICAgICAgIFxub3RlIFRoZXJlIGlzIGEgaGlkZGVuLCBwcml2YXRl
IG92ZXJsb2FkIHRvIGRpc2FsbG93IHJlZmVyZW5jZXMgdG8KKyAgICAgICAgICAgIG5vbi1jb25z
dCBjaGFyYWN0ZXIgYXJyYXlzIHRvIGJlIGNyZWF0ZWQgdmlhIHRoaXMgY29uc3RydWN0b3IuCisg
ICAgICAgICAgICBCeSB0aGlzLCBlLmcuIGZ1bmN0aW9uLXNjb3BlIGFycmF5cyB1c2VkIHRvIGJl
IGZpbGxlZCB2aWEKKyAgICAgICAgICAgIFxjIHNucHJpbnRmIGFyZSBleGNsdWRlZCBmcm9tIGNv
bnNpZGVyYXRpb24uCisgICAgICAgICAgICBJbiBzdWNoIGNhc2VzLCB0aGUgcmVmZXJlbmNlZCBz
dHJpbmcgc2hvdWxkIGJlIFxiIGNvcGllZCB0byB0aGUKKyAgICAgICAgICAgIEdlbmVyaWNWYWx1
ZSBpbnN0ZWFkLgorICAgICAqLworICAgIGV4cGxpY2l0IEdlbmVyaWNTdHJpbmdSZWYoY29uc3Qg
Q2hhclR5cGUqIHN0cikKKyAgICAgICAgOiBzKHN0ciksIGxlbmd0aChpbnRlcm5hbDo6U3RyTGVu
KHN0cikpeyBSQVBJREpTT05fQVNTRVJUKHMgIT0gTlVMTCk7IH0KKworICAgIC8vISBDcmVhdGUg
Y29uc3RhbnQgc3RyaW5nIHJlZmVyZW5jZSBmcm9tIHBvaW50ZXIgYW5kIGxlbmd0aAorICAgIC8q
ISBccGFyYW0gc3RyIGNvbnN0YW50IHN0cmluZywgbGlmZXRpbWUgYXNzdW1lZCB0byBiZSBsb25n
ZXIgdGhhbiB0aGUgdXNlIG9mIHRoZSBzdHJpbmcgaW4gZS5nLiBhIEdlbmVyaWNWYWx1ZQorICAg
ICAgICBccGFyYW0gbGVuIGxlbmd0aCBvZiB0aGUgc3RyaW5nLCBleGNsdWRpbmcgdGhlIHRyYWls
aW5nIE5VTEwgdGVybWluYXRvcgorCisgICAgICAgIFxwb3N0IFxyZWYgcyA9PSBzdHIgJiYgXHJl
ZiBsZW5ndGggPT0gbGVuCisgICAgICAgIFxub3RlIENvbnN0YW50IGNvbXBsZXhpdHkuCisgICAg
ICovCisgICAgR2VuZXJpY1N0cmluZ1JlZihjb25zdCBDaGFyVHlwZSogc3RyLCBTaXplVHlwZSBs
ZW4pCisgICAgICAgIDogcyhzdHIpLCBsZW5ndGgobGVuKSB7IFJBUElESlNPTl9BU1NFUlQocyAh
PSBOVUxMKTsgfQorCisgICAgLy8hIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gcGxhaW4gQ2hhclR5
cGUgcG9pbnRlcgorICAgIG9wZXJhdG9yIGNvbnN0IENoICooKSBjb25zdCB7IHJldHVybiBzOyB9
CisKKyAgICBjb25zdCBDaCogY29uc3QgczsgLy8hPCBwbGFpbiBDaGFyVHlwZSBwb2ludGVyCisg
ICAgY29uc3QgU2l6ZVR5cGUgbGVuZ3RoOyAvLyE8IGxlbmd0aCBvZiB0aGUgc3RyaW5nIChleGNs
dWRpbmcgdGhlIHRyYWlsaW5nIE5VTEwgdGVybWluYXRvcikKKworcHJpdmF0ZToKKyAgICAvLyEg
RGlzYWxsb3cgY29weS1hc3NpZ25tZW50CisgICAgR2VuZXJpY1N0cmluZ1JlZiBvcGVyYXRvcj0o
Y29uc3QgR2VuZXJpY1N0cmluZ1JlZiYpOworICAgIC8vISBEaXNhbGxvdyBjb25zdHJ1Y3Rpb24g
ZnJvbSBub24tY29uc3QgYXJyYXkKKyAgICB0ZW1wbGF0ZTxTaXplVHlwZSBOPgorICAgIEdlbmVy
aWNTdHJpbmdSZWYoQ2hhclR5cGUgKCZzdHIpW05dKSAvKiA9IGRlbGV0ZSAqLzsKK307CisKKy8v
ISBNYXJrIGEgY2hhcmFjdGVyIHBvaW50ZXIgYXMgY29uc3RhbnQgc3RyaW5nCisvKiEgTWFyayBh
IHBsYWluIGNoYXJhY3RlciBwb2ludGVyIGFzIGEgInN0cmluZyBsaXRlcmFsIi4gIFRoaXMgZnVu
Y3Rpb24KKyAgICBjYW4gYmUgdXNlZCB0byBhdm9pZCBjb3B5aW5nIGEgY2hhcmFjdGVyIHN0cmlu
ZyB0byBiZSByZWZlcmVuY2VkIGFzIGEKKyAgICB2YWx1ZSBpbiBhIEpTT04gR2VuZXJpY1ZhbHVl
IG9iamVjdCwgaWYgdGhlIHN0cmluZydzIGxpZmV0aW1lIGlzIGtub3duCisgICAgdG8gYmUgdmFs
aWQgbG9uZyBlbm91Z2guCisgICAgXHRwYXJhbSBDaGFyVHlwZSBDaGFyYWN0ZXIgdHlwZSBvZiB0
aGUgc3RyaW5nCisgICAgXHBhcmFtIHN0ciBDb25zdGFudCBzdHJpbmcsIGxpZmV0aW1lIGFzc3Vt
ZWQgdG8gYmUgbG9uZ2VyIHRoYW4gdGhlIHVzZSBvZiB0aGUgc3RyaW5nIGluIGUuZy4gYSBHZW5l
cmljVmFsdWUKKyAgICBccmV0dXJuIEdlbmVyaWNTdHJpbmdSZWYgc3RyaW5nIHJlZmVyZW5jZSBv
YmplY3QKKyAgICBccmVsYXRlc2Fsc28gR2VuZXJpY1N0cmluZ1JlZgorCisgICAgXHNlZSBHZW5l
cmljVmFsdWU6OkdlbmVyaWNWYWx1ZShTdHJpbmdSZWZUeXBlKSwgR2VuZXJpY1ZhbHVlOjpvcGVy
YXRvcj0oU3RyaW5nUmVmVHlwZSksIEdlbmVyaWNWYWx1ZTo6U2V0U3RyaW5nKFN0cmluZ1JlZlR5
cGUpLCBHZW5lcmljVmFsdWU6OlB1c2hCYWNrKFN0cmluZ1JlZlR5cGUsIEFsbG9jYXRvciYpLCBH
ZW5lcmljVmFsdWU6OkFkZE1lbWJlcgorKi8KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlPgor
aW5saW5lIEdlbmVyaWNTdHJpbmdSZWY8Q2hhclR5cGU+IFN0cmluZ1JlZihjb25zdCBDaGFyVHlw
ZSogc3RyKSB7CisgICAgcmV0dXJuIEdlbmVyaWNTdHJpbmdSZWY8Q2hhclR5cGU+KHN0ciwgaW50
ZXJuYWw6OlN0ckxlbihzdHIpKTsKK30KKworLy8hIE1hcmsgYSBjaGFyYWN0ZXIgcG9pbnRlciBh
cyBjb25zdGFudCBzdHJpbmcKKy8qISBNYXJrIGEgcGxhaW4gY2hhcmFjdGVyIHBvaW50ZXIgYXMg
YSAic3RyaW5nIGxpdGVyYWwiLiAgVGhpcyBmdW5jdGlvbgorICAgIGNhbiBiZSB1c2VkIHRvIGF2
b2lkIGNvcHlpbmcgYSBjaGFyYWN0ZXIgc3RyaW5nIHRvIGJlIHJlZmVyZW5jZWQgYXMgYQorICAg
IHZhbHVlIGluIGEgSlNPTiBHZW5lcmljVmFsdWUgb2JqZWN0LCBpZiB0aGUgc3RyaW5nJ3MgbGlm
ZXRpbWUgaXMga25vd24KKyAgICB0byBiZSB2YWxpZCBsb25nIGVub3VnaC4KKworICAgIFRoaXMg
dmVyc2lvbiBoYXMgYmV0dGVyIHBlcmZvcm1hbmNlIHdpdGggc3VwcGxpZWQgbGVuZ3RoLCBhbmQg
YWxzbworICAgIHN1cHBvcnRzIHN0cmluZyBjb250YWluaW5nIG51bGwgY2hhcmFjdGVycy4KKwor
ICAgIFx0cGFyYW0gQ2hhclR5cGUgY2hhcmFjdGVyIHR5cGUgb2YgdGhlIHN0cmluZworICAgIFxw
YXJhbSBzdHIgQ29uc3RhbnQgc3RyaW5nLCBsaWZldGltZSBhc3N1bWVkIHRvIGJlIGxvbmdlciB0
aGFuIHRoZSB1c2Ugb2YgdGhlIHN0cmluZyBpbiBlLmcuIGEgR2VuZXJpY1ZhbHVlCisgICAgXHBh
cmFtIGxlbmd0aCBUaGUgbGVuZ3RoIG9mIHNvdXJjZSBzdHJpbmcuCisgICAgXHJldHVybiBHZW5l
cmljU3RyaW5nUmVmIHN0cmluZyByZWZlcmVuY2Ugb2JqZWN0CisgICAgXHJlbGF0ZXNhbHNvIEdl
bmVyaWNTdHJpbmdSZWYKKyovCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZT4KK2lubGluZSBH
ZW5lcmljU3RyaW5nUmVmPENoYXJUeXBlPiBTdHJpbmdSZWYoY29uc3QgQ2hhclR5cGUqIHN0ciwg
c2l6ZV90IGxlbmd0aCkgeworICAgIHJldHVybiBHZW5lcmljU3RyaW5nUmVmPENoYXJUeXBlPihz
dHIsIFNpemVUeXBlKGxlbmd0aCkpOworfQorCisjaWYgUkFQSURKU09OX0hBU19TVERTVFJJTkcK
Ky8vISBNYXJrIGEgc3RyaW5nIG9iamVjdCBhcyBjb25zdGFudCBzdHJpbmcKKy8qISBNYXJrIGEg
c3RyaW5nIG9iamVjdCAoZS5nLiBcYyBzdGQ6OnN0cmluZykgYXMgYSAic3RyaW5nIGxpdGVyYWwi
LgorICAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gYXZvaWQgY29weWluZyBhIHN0cmlu
ZyB0byBiZSByZWZlcmVuY2VkIGFzIGEKKyAgICB2YWx1ZSBpbiBhIEpTT04gR2VuZXJpY1ZhbHVl
IG9iamVjdCwgaWYgdGhlIHN0cmluZydzIGxpZmV0aW1lIGlzIGtub3duCisgICAgdG8gYmUgdmFs
aWQgbG9uZyBlbm91Z2guCisKKyAgICBcdHBhcmFtIENoYXJUeXBlIGNoYXJhY3RlciB0eXBlIG9m
IHRoZSBzdHJpbmcKKyAgICBccGFyYW0gc3RyIENvbnN0YW50IHN0cmluZywgbGlmZXRpbWUgYXNz
dW1lZCB0byBiZSBsb25nZXIgdGhhbiB0aGUgdXNlIG9mIHRoZSBzdHJpbmcgaW4gZS5nLiBhIEdl
bmVyaWNWYWx1ZQorICAgIFxyZXR1cm4gR2VuZXJpY1N0cmluZ1JlZiBzdHJpbmcgcmVmZXJlbmNl
IG9iamVjdAorICAgIFxyZWxhdGVzYWxzbyBHZW5lcmljU3RyaW5nUmVmCisgICAgXG5vdGUgUmVx
dWlyZXMgdGhlIGRlZmluaXRpb24gb2YgdGhlIHByZXByb2Nlc3NvciBzeW1ib2wgXHJlZiBSQVBJ
REpTT05fSEFTX1NURFNUUklORy4KKyovCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZT4KK2lu
bGluZSBHZW5lcmljU3RyaW5nUmVmPENoYXJUeXBlPiBTdHJpbmdSZWYoY29uc3Qgc3RkOjpiYXNp
Y19zdHJpbmc8Q2hhclR5cGU+JiBzdHIpIHsKKyAgICByZXR1cm4gR2VuZXJpY1N0cmluZ1JlZjxD
aGFyVHlwZT4oc3RyLmRhdGEoKSwgU2l6ZVR5cGUoc3RyLnNpemUoKSkpOworfQorI2VuZGlmCisK
Ky8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIEdlbmVyaWNWYWx1ZSB0eXBlIHRyYWl0cworbmFt
ZXNwYWNlIGludGVybmFsIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEVuY29k
aW5nID0gdm9pZCwgdHlwZW5hbWUgQWxsb2NhdG9yID0gdm9pZD4KK3N0cnVjdCBJc0dlbmVyaWNW
YWx1ZUltcGwgOiBGYWxzZVR5cGUge307CisKKy8vIHNlbGVjdCBjYW5kaWRhdGVzIGFjY29yZGlu
ZyB0byBuZXN0ZWQgZW5jb2RpbmcgYW5kIGFsbG9jYXRvciB0eXBlcwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IHN0cnVjdCBJc0dlbmVyaWNWYWx1ZUltcGw8VCwgdHlwZW5hbWUgVm9pZDx0eXBlbmFt
ZSBUOjpFbmNvZGluZ1R5cGU+OjpUeXBlLCB0eXBlbmFtZSBWb2lkPHR5cGVuYW1lIFQ6OkFsbG9j
YXRvclR5cGU+OjpUeXBlPgorICAgIDogSXNCYXNlT2Y8R2VuZXJpY1ZhbHVlPHR5cGVuYW1lIFQ6
OkVuY29kaW5nVHlwZSwgdHlwZW5hbWUgVDo6QWxsb2NhdG9yVHlwZT4sIFQ+OjpUeXBlIHt9Owor
CisvLyBoZWxwZXIgdG8gbWF0Y2ggYXJiaXRyYXJ5IEdlbmVyaWNWYWx1ZSBpbnN0YW50aWF0aW9u
cywgaW5jbHVkaW5nIGRlcml2ZWQgY2xhc3NlcwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVj
dCBJc0dlbmVyaWNWYWx1ZSA6IElzR2VuZXJpY1ZhbHVlSW1wbDxUPjo6VHlwZSB7fTsKKworfSAv
LyBuYW1lc3BhY2UgaW50ZXJuYWwKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gR2VuZXJp
Y1ZhbHVlCisKKy8vISBSZXByZXNlbnRzIGEgSlNPTiB2YWx1ZS4gVXNlIFZhbHVlIGZvciBVVEY4
IGVuY29kaW5nIGFuZCBkZWZhdWx0IGFsbG9jYXRvci4KKy8qIQorICAgIEEgSlNPTiB2YWx1ZSBj
YW4gYmUgb25lIG9mIDcgdHlwZXMuIFRoaXMgY2xhc3MgaXMgYSB2YXJpYW50IHR5cGUgc3VwcG9y
dGluZworICAgIHRoZXNlIHR5cGVzLgorCisgICAgVXNlIHRoZSBWYWx1ZSBpZiBVVEY4IGFuZCBk
ZWZhdWx0IGFsbG9jYXRvcgorCisgICAgXHRwYXJhbSBFbmNvZGluZyAgICBFbmNvZGluZyBvZiB0
aGUgdmFsdWUuIChFdmVuIG5vbi1zdHJpbmcgdmFsdWVzIG5lZWQgdG8gaGF2ZSB0aGUgc2FtZSBl
bmNvZGluZyBpbiBhIGRvY3VtZW50KQorICAgIFx0cGFyYW0gQWxsb2NhdG9yICAgQWxsb2NhdG9y
IHR5cGUgZm9yIGFsbG9jYXRpbmcgbWVtb3J5IG9mIG9iamVjdCwgYXJyYXkgYW5kIHN0cmluZy4K
KyovCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRW5jb2RpbmcsIHR5cGVuYW1lIEFsbG9jYXRvciA9IE1l
bW9yeVBvb2xBbGxvY2F0b3I8PiA+IAorY2xhc3MgR2VuZXJpY1ZhbHVlIHsKK3B1YmxpYzoKKyAg
ICAvLyEgTmFtZS12YWx1ZSBwYWlyIGluIGFuIG9iamVjdC4KKyAgICB0eXBlZGVmIEdlbmVyaWNN
ZW1iZXI8RW5jb2RpbmcsIEFsbG9jYXRvcj4gTWVtYmVyOworICAgIHR5cGVkZWYgRW5jb2Rpbmcg
RW5jb2RpbmdUeXBlOyAgICAgICAgICAgICAgICAgIC8vITwgRW5jb2RpbmcgdHlwZSBmcm9tIHRl
bXBsYXRlIHBhcmFtZXRlci4KKyAgICB0eXBlZGVmIEFsbG9jYXRvciBBbGxvY2F0b3JUeXBlOyAg
ICAgICAgICAgICAgICAvLyE8IEFsbG9jYXRvciB0eXBlIGZyb20gdGVtcGxhdGUgcGFyYW1ldGVy
LgorICAgIHR5cGVkZWYgdHlwZW5hbWUgRW5jb2Rpbmc6OkNoIENoOyAgICAgICAgICAgICAgIC8v
ITwgQ2hhcmFjdGVyIHR5cGUgZGVyaXZlZCBmcm9tIEVuY29kaW5nLgorICAgIHR5cGVkZWYgR2Vu
ZXJpY1N0cmluZ1JlZjxDaD4gU3RyaW5nUmVmVHlwZTsgICAgIC8vITwgUmVmZXJlbmNlIHRvIGEg
Y29uc3RhbnQgc3RyaW5nCisgICAgdHlwZWRlZiB0eXBlbmFtZSBHZW5lcmljTWVtYmVySXRlcmF0
b3I8ZmFsc2UsRW5jb2RpbmcsQWxsb2NhdG9yPjo6SXRlcmF0b3IgTWVtYmVySXRlcmF0b3I7ICAv
LyE8IE1lbWJlciBpdGVyYXRvciBmb3IgaXRlcmF0aW5nIGluIG9iamVjdC4KKyAgICB0eXBlZGVm
IHR5cGVuYW1lIEdlbmVyaWNNZW1iZXJJdGVyYXRvcjx0cnVlLEVuY29kaW5nLEFsbG9jYXRvcj46
Okl0ZXJhdG9yIENvbnN0TWVtYmVySXRlcmF0b3I7ICAvLyE8IENvbnN0YW50IG1lbWJlciBpdGVy
YXRvciBmb3IgaXRlcmF0aW5nIGluIG9iamVjdC4KKyAgICB0eXBlZGVmIEdlbmVyaWNWYWx1ZSog
VmFsdWVJdGVyYXRvcjsgICAgICAgICAgICAvLyE8IFZhbHVlIGl0ZXJhdG9yIGZvciBpdGVyYXRp
bmcgaW4gYXJyYXkuCisgICAgdHlwZWRlZiBjb25zdCBHZW5lcmljVmFsdWUqIENvbnN0VmFsdWVJ
dGVyYXRvcjsgLy8hPCBDb25zdGFudCB2YWx1ZSBpdGVyYXRvciBmb3IgaXRlcmF0aW5nIGluIGFy
cmF5LgorCisgICAgLy8hQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9yLgorICAgIC8v
QHsKKworICAgIC8vISBEZWZhdWx0IGNvbnN0cnVjdG9yIGNyZWF0ZXMgYSBudWxsIHZhbHVlLgor
ICAgIEdlbmVyaWNWYWx1ZSgpIFJBUElESlNPTl9OT0VYQ0VQVCA6IGRhdGFfKCksIGZsYWdzXyhr
TnVsbEZsYWcpIHt9CisKKyNpZiBSQVBJREpTT05fSEFTX0NYWDExX1JWQUxVRV9SRUZTCisgICAg
Ly8hIE1vdmUgY29uc3RydWN0b3IgaW4gQysrMTEKKyAgICBHZW5lcmljVmFsdWUoR2VuZXJpY1Zh
bHVlJiYgcmhzKSBSQVBJREpTT05fTk9FWENFUFQgOiBkYXRhXyhyaHMuZGF0YV8pLCBmbGFnc18o
cmhzLmZsYWdzXykgeworICAgICAgICByaHMuZmxhZ3NfID0ga051bGxGbGFnOyAvLyBnaXZlIHVw
IGNvbnRlbnRzCisgICAgfQorI2VuZGlmCisKK3ByaXZhdGU6CisgICAgLy8hIENvcHkgY29uc3Ry
dWN0b3IgaXMgbm90IHBlcm1pdHRlZC4KKyAgICBHZW5lcmljVmFsdWUoY29uc3QgR2VuZXJpY1Zh
bHVlJiByaHMpOworCitwdWJsaWM6CisKKyAgICAvLyEgQ29uc3RydWN0b3Igd2l0aCBKU09OIHZh
bHVlIHR5cGUuCisgICAgLyohIFRoaXMgY3JlYXRlcyBhIFZhbHVlIG9mIHNwZWNpZmllZCB0eXBl
IHdpdGggZGVmYXVsdCBjb250ZW50LgorICAgICAgICBccGFyYW0gdHlwZSBUeXBlIG9mIHRoZSB2
YWx1ZS4KKyAgICAgICAgXG5vdGUgRGVmYXVsdCBjb250ZW50IGZvciBudW1iZXIgaXMgemVyby4K
KyAgICAqLworICAgIGV4cGxpY2l0IEdlbmVyaWNWYWx1ZShUeXBlIHR5cGUpIFJBUElESlNPTl9O
T0VYQ0VQVCA6IGRhdGFfKCksIGZsYWdzXygpIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGRlZmF1bHRGbGFnc1s3XSA9IHsKKyAgICAgICAgICAgIGtOdWxsRmxhZywga0ZhbHNlRmxh
Zywga1RydWVGbGFnLCBrT2JqZWN0RmxhZywga0FycmF5RmxhZywga1Nob3J0U3RyaW5nRmxhZywK
KyAgICAgICAgICAgIGtOdW1iZXJBbnlGbGFnCisgICAgICAgIH07CisgICAgICAgIFJBUElESlNP
Tl9BU1NFUlQodHlwZSA8PSBrTnVtYmVyVHlwZSk7CisgICAgICAgIGZsYWdzXyA9IGRlZmF1bHRG
bGFnc1t0eXBlXTsKKworICAgICAgICAvLyBVc2UgU2hvcnRTdHJpbmcgdG8gc3RvcmUgZW1wdHkg
c3RyaW5nLgorICAgICAgICBpZiAodHlwZSA9PSBrU3RyaW5nVHlwZSkKKyAgICAgICAgICAgIGRh
dGFfLnNzLlNldExlbmd0aCgwKTsKKyAgICB9CisKKyAgICAvLyEgRXhwbGljaXQgY29weSBjb25z
dHJ1Y3RvciAod2l0aCBhbGxvY2F0b3IpCisgICAgLyohIENyZWF0ZXMgYSBjb3B5IG9mIGEgVmFs
dWUgYnkgdXNpbmcgdGhlIGdpdmVuIEFsbG9jYXRvcgorICAgICAgICBcdHBhcmFtIFNvdXJjZUFs
bG9jYXRvciBhbGxvY2F0b3Igb2YgXGMgcmhzCisgICAgICAgIFxwYXJhbSByaHMgVmFsdWUgdG8g
Y29weSBmcm9tIChyZWFkLW9ubHkpCisgICAgICAgIFxwYXJhbSBhbGxvY2F0b3IgQWxsb2NhdG9y
IGZvciBhbGxvY2F0aW5nIGNvcGllZCBlbGVtZW50cyBhbmQgYnVmZmVycy4gQ29tbW9ubHkgdXNl
IEdlbmVyaWNEb2N1bWVudDo6R2V0QWxsb2NhdG9yKCkuCisgICAgICAgIFxzZWUgQ29weUZyb20o
KQorICAgICovCisgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFNvdXJjZUFsbG9jYXRvciA+CisgICAg
R2VuZXJpY1ZhbHVlKGNvbnN0IEdlbmVyaWNWYWx1ZTxFbmNvZGluZywgU291cmNlQWxsb2NhdG9y
PiYgcmhzLCBBbGxvY2F0b3IgJiBhbGxvY2F0b3IpOworCisgICAgLy8hIENvbnN0cnVjdG9yIGZv
ciBib29sZWFuIHZhbHVlLgorICAgIC8qISBccGFyYW0gYiBCb29sZWFuIHZhbHVlCisgICAgICAg
IFxub3RlIFRoaXMgY29uc3RydWN0b3IgaXMgbGltaXRlZCB0byBcZW0gcmVhbCBib29sZWFuIHZh
bHVlcyBhbmQgcmVqZWN0cworICAgICAgICAgICAgaW1wbGljaXRseSBjb252ZXJ0ZWQgdHlwZXMg
bGlrZSBhcmJpdHJhcnkgcG9pbnRlcnMuICBVc2UgYW4gZXhwbGljaXQgY2FzdAorICAgICAgICAg
ICAgdG8gXGMgYm9vbCwgaWYgeW91IHdhbnQgdG8gY29uc3RydWN0IGEgYm9vbGVhbiBKU09OIHZh
bHVlIGluIHN1Y2ggY2FzZXMuCisgICAgICovCisjaWZuZGVmIFJBUElESlNPTl9ET1hZR0VOX1JV
Tk5JTkcgLy8gaGlkZSBTRklOQUUgZnJvbSBEb3h5Z2VuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CisgICAgZXhwbGljaXQgR2VuZXJpY1ZhbHVlKFQgYiwgUkFQSURKU09OX0VOQUJMRUlGKChp
bnRlcm5hbDo6SXNTYW1lPFQsYm9vbD4pKSkgUkFQSURKU09OX05PRVhDRVBUCisjZWxzZQorICAg
IGV4cGxpY2l0IEdlbmVyaWNWYWx1ZShib29sIGIpIFJBUElESlNPTl9OT0VYQ0VQVAorI2VuZGlm
CisgICAgICAgIDogZGF0YV8oKSwgZmxhZ3NfKGIgPyBrVHJ1ZUZsYWcgOiBrRmFsc2VGbGFnKSB7
CisgICAgICAgICAgICAvLyBzYWZlLWd1YXJkIGFnYWluc3QgZmFpbGluZyBTRklOQUUKKyAgICAg
ICAgICAgIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKChpbnRlcm5hbDo6SXNTYW1lPGJvb2wsVD46
OlZhbHVlKSk7CisgICAgfQorCisgICAgLy8hIENvbnN0cnVjdG9yIGZvciBpbnQgdmFsdWUuCisg
ICAgZXhwbGljaXQgR2VuZXJpY1ZhbHVlKGludCBpKSBSQVBJREpTT05fTk9FWENFUFQgOiBkYXRh
XygpLCBmbGFnc18oa051bWJlckludEZsYWcpIHsKKyAgICAgICAgZGF0YV8ubi5pNjQgPSBpOwor
ICAgICAgICBpZiAoaSA+PSAwKQorICAgICAgICAgICAgZmxhZ3NfIHw9IGtVaW50RmxhZyB8IGtV
aW50NjRGbGFnOworICAgIH0KKworICAgIC8vISBDb25zdHJ1Y3RvciBmb3IgdW5zaWduZWQgdmFs
dWUuCisgICAgZXhwbGljaXQgR2VuZXJpY1ZhbHVlKHVuc2lnbmVkIHUpIFJBUElESlNPTl9OT0VY
Q0VQVCA6IGRhdGFfKCksIGZsYWdzXyhrTnVtYmVyVWludEZsYWcpIHsKKyAgICAgICAgZGF0YV8u
bi51NjQgPSB1OyAKKyAgICAgICAgaWYgKCEodSAmIDB4ODAwMDAwMDApKQorICAgICAgICAgICAg
ZmxhZ3NfIHw9IGtJbnRGbGFnIHwga0ludDY0RmxhZzsKKyAgICB9CisKKyAgICAvLyEgQ29uc3Ry
dWN0b3IgZm9yIGludDY0X3QgdmFsdWUuCisgICAgZXhwbGljaXQgR2VuZXJpY1ZhbHVlKGludDY0
X3QgaTY0KSBSQVBJREpTT05fTk9FWENFUFQgOiBkYXRhXygpLCBmbGFnc18oa051bWJlckludDY0
RmxhZykgeworICAgICAgICBkYXRhXy5uLmk2NCA9IGk2NDsKKyAgICAgICAgaWYgKGk2NCA+PSAw
KSB7CisgICAgICAgICAgICBmbGFnc18gfD0ga051bWJlclVpbnQ2NEZsYWc7CisgICAgICAgICAg
ICBpZiAoIShzdGF0aWNfY2FzdDx1aW50NjRfdD4oaTY0KSAmIFJBUElESlNPTl9VSU5UNjRfQzIo
MHhGRkZGRkZGRiwgMHgwMDAwMDAwMCkpKQorICAgICAgICAgICAgICAgIGZsYWdzXyB8PSBrVWlu
dEZsYWc7CisgICAgICAgICAgICBpZiAoIShzdGF0aWNfY2FzdDx1aW50NjRfdD4oaTY0KSAmIFJB
UElESlNPTl9VSU5UNjRfQzIoMHhGRkZGRkZGRiwgMHg4MDAwMDAwMCkpKQorICAgICAgICAgICAg
ICAgIGZsYWdzXyB8PSBrSW50RmxhZzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChpNjQg
Pj0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oUkFQSURKU09OX1VJTlQ2NF9DMigweEZGRkZGRkZGLCAw
eDgwMDAwMDAwKSkpCisgICAgICAgICAgICBmbGFnc18gfD0ga0ludEZsYWc7CisgICAgfQorCisg
ICAgLy8hIENvbnN0cnVjdG9yIGZvciB1aW50NjRfdCB2YWx1ZS4KKyAgICBleHBsaWNpdCBHZW5l
cmljVmFsdWUodWludDY0X3QgdTY0KSBSQVBJREpTT05fTk9FWENFUFQgOiBkYXRhXygpLCBmbGFn
c18oa051bWJlclVpbnQ2NEZsYWcpIHsKKyAgICAgICAgZGF0YV8ubi51NjQgPSB1NjQ7CisgICAg
ICAgIGlmICghKHU2NCAmIFJBUElESlNPTl9VSU5UNjRfQzIoMHg4MDAwMDAwMCwgMHgwMDAwMDAw
MCkpKQorICAgICAgICAgICAgZmxhZ3NfIHw9IGtJbnQ2NEZsYWc7CisgICAgICAgIGlmICghKHU2
NCAmIFJBUElESlNPTl9VSU5UNjRfQzIoMHhGRkZGRkZGRiwgMHgwMDAwMDAwMCkpKQorICAgICAg
ICAgICAgZmxhZ3NfIHw9IGtVaW50RmxhZzsKKyAgICAgICAgaWYgKCEodTY0ICYgUkFQSURKU09O
X1VJTlQ2NF9DMigweEZGRkZGRkZGLCAweDgwMDAwMDAwKSkpCisgICAgICAgICAgICBmbGFnc18g
fD0ga0ludEZsYWc7CisgICAgfQorCisgICAgLy8hIENvbnN0cnVjdG9yIGZvciBkb3VibGUgdmFs
dWUuCisgICAgZXhwbGljaXQgR2VuZXJpY1ZhbHVlKGRvdWJsZSBkKSBSQVBJREpTT05fTk9FWENF
UFQgOiBkYXRhXygpLCBmbGFnc18oa051bWJlckRvdWJsZUZsYWcpIHsgZGF0YV8ubi5kID0gZDsg
fQorCisgICAgLy8hIENvbnN0cnVjdG9yIGZvciBjb25zdGFudCBzdHJpbmcgKGkuZS4gZG8gbm90
IG1ha2UgYSBjb3B5IG9mIHN0cmluZykKKyAgICBHZW5lcmljVmFsdWUoY29uc3QgQ2gqIHMsIFNp
emVUeXBlIGxlbmd0aCkgUkFQSURKU09OX05PRVhDRVBUIDogZGF0YV8oKSwgZmxhZ3NfKCkgeyBT
ZXRTdHJpbmdSYXcoU3RyaW5nUmVmKHMsIGxlbmd0aCkpOyB9CisKKyAgICAvLyEgQ29uc3RydWN0
b3IgZm9yIGNvbnN0YW50IHN0cmluZyAoaS5lLiBkbyBub3QgbWFrZSBhIGNvcHkgb2Ygc3RyaW5n
KQorICAgIGV4cGxpY2l0IEdlbmVyaWNWYWx1ZShTdHJpbmdSZWZUeXBlIHMpIFJBUElESlNPTl9O
T0VYQ0VQVCA6IGRhdGFfKCksIGZsYWdzXygpIHsgU2V0U3RyaW5nUmF3KHMpOyB9CisKKyAgICAv
LyEgQ29uc3RydWN0b3IgZm9yIGNvcHktc3RyaW5nIChpLmUuIGRvIG1ha2UgYSBjb3B5IG9mIHN0
cmluZykKKyAgICBHZW5lcmljVmFsdWUoY29uc3QgQ2gqIHMsIFNpemVUeXBlIGxlbmd0aCwgQWxs
b2NhdG9yJiBhbGxvY2F0b3IpIDogZGF0YV8oKSwgZmxhZ3NfKCkgeyBTZXRTdHJpbmdSYXcoU3Ry
aW5nUmVmKHMsIGxlbmd0aCksIGFsbG9jYXRvcik7IH0KKworICAgIC8vISBDb25zdHJ1Y3RvciBm
b3IgY29weS1zdHJpbmcgKGkuZS4gZG8gbWFrZSBhIGNvcHkgb2Ygc3RyaW5nKQorICAgIEdlbmVy
aWNWYWx1ZShjb25zdCBDaCpzLCBBbGxvY2F0b3ImIGFsbG9jYXRvcikgOiBkYXRhXygpLCBmbGFn
c18oKSB7IFNldFN0cmluZ1JhdyhTdHJpbmdSZWYocyksIGFsbG9jYXRvcik7IH0KKworI2lmIFJB
UElESlNPTl9IQVNfU1REU1RSSU5HCisgICAgLy8hIENvbnN0cnVjdG9yIGZvciBjb3B5LXN0cmlu
ZyBmcm9tIGEgc3RyaW5nIG9iamVjdCAoaS5lLiBkbyBtYWtlIGEgY29weSBvZiBzdHJpbmcpCisg
ICAgLyohIFxub3RlIFJlcXVpcmVzIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBwcmVwcm9jZXNzb3Ig
c3ltYm9sIFxyZWYgUkFQSURKU09OX0hBU19TVERTVFJJTkcuCisgICAgICovCisgICAgR2VuZXJp
Y1ZhbHVlKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPENoPiYgcywgQWxsb2NhdG9yJiBhbGxvY2F0
b3IpIDogZGF0YV8oKSwgZmxhZ3NfKCkgeyBTZXRTdHJpbmdSYXcoU3RyaW5nUmVmKHMpLCBhbGxv
Y2F0b3IpOyB9CisjZW5kaWYKKworICAgIC8vISBEZXN0cnVjdG9yLgorICAgIC8qISBOZWVkIHRv
IGRlc3RydWN0IGVsZW1lbnRzIG9mIGFycmF5LCBtZW1iZXJzIG9mIG9iamVjdCwgb3IgY29weS1z
dHJpbmcuCisgICAgKi8KKyAgICB+R2VuZXJpY1ZhbHVlKCkgeworICAgICAgICBpZiAoQWxsb2Nh
dG9yOjprTmVlZEZyZWUpIHsgLy8gU2hvcnRjdXQgYnkgQWxsb2NhdG9yJ3MgdHJhaXQKKyAgICAg
ICAgICAgIHN3aXRjaChmbGFnc18pIHsKKyAgICAgICAgICAgIGNhc2Uga0FycmF5RmxhZzoKKyAg
ICAgICAgICAgICAgICBmb3IgKEdlbmVyaWNWYWx1ZSogdiA9IGRhdGFfLmEuZWxlbWVudHM7IHYg
IT0gZGF0YV8uYS5lbGVtZW50cyArIGRhdGFfLmEuc2l6ZTsgKyt2KQorICAgICAgICAgICAgICAg
ICAgICB2LT5+R2VuZXJpY1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgQWxsb2NhdG9yOjpGcmVl
KGRhdGFfLmEuZWxlbWVudHMpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICBjYXNlIGtPYmplY3RGbGFnOgorICAgICAgICAgICAgICAgIGZvciAoTWVtYmVySXRlcmF0b3Ig
bSA9IE1lbWJlckJlZ2luKCk7IG0gIT0gTWVtYmVyRW5kKCk7ICsrbSkKKyAgICAgICAgICAgICAg
ICAgICAgbS0+fk1lbWJlcigpOworICAgICAgICAgICAgICAgIEFsbG9jYXRvcjo6RnJlZShkYXRh
Xy5vLm1lbWJlcnMpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNl
IGtDb3B5U3RyaW5nRmxhZzoKKyAgICAgICAgICAgICAgICBBbGxvY2F0b3I6OkZyZWUoY29uc3Rf
Y2FzdDxDaCo+KGRhdGFfLnMuc3RyKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7ICAvLyBEbyBub3RoaW5nIGZv
ciBvdGhlciB0eXBlcy4KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8v
QH0KKworICAgIC8vIUBuYW1lIEFzc2lnbm1lbnQgb3BlcmF0b3JzCisgICAgLy9AeworCisgICAg
Ly8hIEFzc2lnbm1lbnQgd2l0aCBtb3ZlIHNlbWFudGljcy4KKyAgICAvKiEgXHBhcmFtIHJocyBT
b3VyY2Ugb2YgdGhlIGFzc2lnbm1lbnQuIEl0IHdpbGwgYmVjb21lIGEgbnVsbCB2YWx1ZSBhZnRl
ciBhc3NpZ25tZW50LgorICAgICovCisgICAgR2VuZXJpY1ZhbHVlJiBvcGVyYXRvcj0oR2VuZXJp
Y1ZhbHVlJiByaHMpIFJBUElESlNPTl9OT0VYQ0VQVCB7CisgICAgICAgIFJBUElESlNPTl9BU1NF
UlQodGhpcyAhPSAmcmhzKTsKKyAgICAgICAgdGhpcy0+fkdlbmVyaWNWYWx1ZSgpOworICAgICAg
ICBSYXdBc3NpZ24ocmhzKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworI2lmIFJB
UElESlNPTl9IQVNfQ1hYMTFfUlZBTFVFX1JFRlMKKyAgICAvLyEgTW92ZSBhc3NpZ25tZW50IGlu
IEMrKzExCisgICAgR2VuZXJpY1ZhbHVlJiBvcGVyYXRvcj0oR2VuZXJpY1ZhbHVlJiYgcmhzKSBS
QVBJREpTT05fTk9FWENFUFQgeworICAgICAgICByZXR1cm4gKnRoaXMgPSByaHMuTW92ZSgpOwor
ICAgIH0KKyNlbmRpZgorCisgICAgLy8hIEFzc2lnbm1lbnQgb2YgY29uc3RhbnQgc3RyaW5nIHJl
ZmVyZW5jZSAobm8gY29weSkKKyAgICAvKiEgXHBhcmFtIHN0ciBDb25zdGFudCBzdHJpbmcgcmVm
ZXJlbmNlIHRvIGJlIGFzc2lnbmVkCisgICAgICAgIFxub3RlIFRoaXMgb3ZlcmxvYWQgaXMgbmVl
ZGVkIHRvIGF2b2lkIGNsYXNoZXMgd2l0aCB0aGUgZ2VuZXJpYyBwcmltaXRpdmUgdHlwZSBhc3Np
Z25tZW50IG92ZXJsb2FkIGJlbG93LgorICAgICAgICBcc2VlIEdlbmVyaWNTdHJpbmdSZWYsIG9w
ZXJhdG9yPShUKQorICAgICovCisgICAgR2VuZXJpY1ZhbHVlJiBvcGVyYXRvcj0oU3RyaW5nUmVm
VHlwZSBzdHIpIFJBUElESlNPTl9OT0VYQ0VQVCB7CisgICAgICAgIEdlbmVyaWNWYWx1ZSBzKHN0
cik7CisgICAgICAgIHJldHVybiAqdGhpcyA9IHM7CisgICAgfQorCisgICAgLy8hIEFzc2lnbm1l
bnQgd2l0aCBwcmltaXRpdmUgdHlwZXMuCisgICAgLyohIFx0cGFyYW0gVCBFaXRoZXIgXHJlZiBU
eXBlLCBcYyBpbnQsIFxjIHVuc2lnbmVkLCBcYyBpbnQ2NF90LCBcYyB1aW50NjRfdAorICAgICAg
ICBccGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIGJlIGFzc2lnbmVkLgorCisgICAgICAgIFxub3Rl
IFRoZSBzb3VyY2UgdHlwZSBcYyBUIGV4cGxpY2l0bHkgZGlzYWxsb3dzIGFsbCBwb2ludGVyIHR5
cGVzLAorICAgICAgICAgICAgZXNwZWNpYWxseSAoXGMgY29uc3QpIFxyZWYgQ2gqLiAgVGhpcyBo
ZWxwcyBhdm9pZGluZyBpbXBsaWNpdGx5CisgICAgICAgICAgICByZWZlcmVuY2luZyBjaGFyYWN0
ZXIgc3RyaW5ncyB3aXRoIGluc3VmZmljaWVudCBsaWZldGltZSwgdXNlCisgICAgICAgICAgICBc
cmVmIFNldFN0cmluZyhjb25zdCBDaCosIEFsbG9jYXRvciYpIChmb3IgY29weWluZykgb3IKKyAg
ICAgICAgICAgIFxyZWYgU3RyaW5nUmVmKCkgKHRvIGV4cGxpY2l0bHkgbWFyayB0aGUgcG9pbnRl
ciBhcyBjb25zdGFudCkgaW5zdGVhZC4KKyAgICAgICAgICAgIEFsbCBvdGhlciBwb2ludGVyIHR5
cGVzIHdvdWxkIGltcGxpY2l0bHkgY29udmVydCB0byBcYyBib29sLAorICAgICAgICAgICAgdXNl
IFxyZWYgU2V0Qm9vbCgpIGluc3RlYWQuCisgICAgKi8KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KKyAgICBSQVBJREpTT05fRElTQUJMRUlGX1JFVFVSTigoaW50ZXJuYWw6OklzUG9pbnRlcjxU
PiksIChHZW5lcmljVmFsdWUmKSkKKyAgICBvcGVyYXRvcj0oVCB2YWx1ZSkgeworICAgICAgICBH
ZW5lcmljVmFsdWUgdih2YWx1ZSk7CisgICAgICAgIHJldHVybiAqdGhpcyA9IHY7CisgICAgfQor
CisgICAgLy8hIERlZXAtY29weSBhc3NpZ25tZW50IGZyb20gVmFsdWUKKyAgICAvKiEgQXNzaWdu
cyBhIFxiIGNvcHkgb2YgdGhlIFZhbHVlIHRvIHRoZSBjdXJyZW50IFZhbHVlIG9iamVjdAorICAg
ICAgICBcdHBhcmFtIFNvdXJjZUFsbG9jYXRvciBBbGxvY2F0b3IgdHlwZSBvZiBcYyByaHMKKyAg
ICAgICAgXHBhcmFtIHJocyBWYWx1ZSB0byBjb3B5IGZyb20gKHJlYWQtb25seSkKKyAgICAgICAg
XHBhcmFtIGFsbG9jYXRvciBBbGxvY2F0b3IgdG8gdXNlIGZvciBjb3B5aW5nCisgICAgICovCisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFNvdXJjZUFsbG9jYXRvcj4KKyAgICBHZW5lcmljVmFsdWUm
IENvcHlGcm9tKGNvbnN0IEdlbmVyaWNWYWx1ZTxFbmNvZGluZywgU291cmNlQWxsb2NhdG9yPiYg
cmhzLCBBbGxvY2F0b3ImIGFsbG9jYXRvcikgeworICAgICAgICBSQVBJREpTT05fQVNTRVJUKCh2
b2lkKil0aGlzICE9ICh2b2lkIGNvbnN0KikmcmhzKTsKKyAgICAgICAgdGhpcy0+fkdlbmVyaWNW
YWx1ZSgpOworICAgICAgICBuZXcgKHRoaXMpIEdlbmVyaWNWYWx1ZShyaHMsIGFsbG9jYXRvcik7
CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICAvLyEgRXhjaGFuZ2UgdGhlIGNv
bnRlbnRzIG9mIHRoaXMgdmFsdWUgd2l0aCB0aG9zZSBvZiBvdGhlci4KKyAgICAvKiEKKyAgICAg
ICAgXHBhcmFtIG90aGVyIEFub3RoZXIgdmFsdWUuCisgICAgICAgIFxub3RlIENvbnN0YW50IGNv
bXBsZXhpdHkuCisgICAgKi8KKyAgICBHZW5lcmljVmFsdWUmIFN3YXAoR2VuZXJpY1ZhbHVlJiBv
dGhlcikgUkFQSURKU09OX05PRVhDRVBUIHsKKyAgICAgICAgR2VuZXJpY1ZhbHVlIHRlbXA7Cisg
ICAgICAgIHRlbXAuUmF3QXNzaWduKCp0aGlzKTsKKyAgICAgICAgUmF3QXNzaWduKG90aGVyKTsK
KyAgICAgICAgb3RoZXIuUmF3QXNzaWduKHRlbXApOworICAgICAgICByZXR1cm4gKnRoaXM7Cisg
ICAgfQorCisgICAgLy8hIFByZXBhcmUgVmFsdWUgZm9yIG1vdmUgc2VtYW50aWNzCisgICAgLyoh
IFxyZXR1cm4gKnRoaXMgKi8KKyAgICBHZW5lcmljVmFsdWUmIE1vdmUoKSBSQVBJREpTT05fTk9F
WENFUFQgeyByZXR1cm4gKnRoaXM7IH0KKyAgICAvL0B9CisKKyAgICAvLyFAbmFtZSBFcXVhbC10
byBhbmQgbm90LWVxdWFsLXRvIG9wZXJhdG9ycworICAgIC8vQHsKKyAgICAvLyEgRXF1YWwtdG8g
b3BlcmF0b3IKKyAgICAvKiEKKyAgICAgICAgXG5vdGUgSWYgYW4gb2JqZWN0IGNvbnRhaW5zIGR1
cGxpY2F0ZWQgbmFtZWQgbWVtYmVyLCBjb21wYXJpbmcgZXF1YWxpdHkgd2l0aCBhbnkgb2JqZWN0
IGlzIGFsd2F5cyBcYyBmYWxzZS4KKyAgICAgICAgXG5vdGUgTGluZWFyIHRpbWUgY29tcGxleGl0
eSAobnVtYmVyIG9mIGFsbCB2YWx1ZXMgaW4gdGhlIHN1YnRyZWUgYW5kIHRvdGFsIGxlbmd0aHMg
b2YgYWxsIHN0cmluZ3MpLgorICAgICovCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFNvdXJjZUFs
bG9jYXRvcj4KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgR2VuZXJpY1ZhbHVlPEVuY29kaW5n
LCBTb3VyY2VBbGxvY2F0b3I+JiByaHMpIGNvbnN0IHsKKyAgICAgICAgdHlwZWRlZiBHZW5lcmlj
VmFsdWU8RW5jb2RpbmcsIFNvdXJjZUFsbG9jYXRvcj4gUmhzVHlwZTsKKyAgICAgICAgaWYgKEdl
dFR5cGUoKSAhPSByaHMuR2V0VHlwZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgIHN3aXRjaCAoR2V0VHlwZSgpKSB7CisgICAgICAgIGNhc2Uga09iamVjdFR5cGU6IC8v
IFdhcm5pbmc6IE8obl4yKSBpbm5lci1sb29wCisgICAgICAgICAgICBpZiAoZGF0YV8uby5zaXpl
ICE9IHJocy5kYXRhXy5vLnNpemUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgICAg
ICAgICAgCisgICAgICAgICAgICBmb3IgKENvbnN0TWVtYmVySXRlcmF0b3IgbGhzTWVtYmVySXRy
ID0gTWVtYmVyQmVnaW4oKTsgbGhzTWVtYmVySXRyICE9IE1lbWJlckVuZCgpOyArK2xoc01lbWJl
ckl0cikgeworICAgICAgICAgICAgICAgIHR5cGVuYW1lIFJoc1R5cGU6OkNvbnN0TWVtYmVySXRl
cmF0b3IgcmhzTWVtYmVySXRyID0gcmhzLkZpbmRNZW1iZXIobGhzTWVtYmVySXRyLT5uYW1lKTsK
KyAgICAgICAgICAgICAgICBpZiAocmhzTWVtYmVySXRyID09IHJocy5NZW1iZXJFbmQoKSB8fCBs
aHNNZW1iZXJJdHItPnZhbHVlICE9IHJoc01lbWJlckl0ci0+dmFsdWUpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgCisgICAgICAgIGNhc2Uga0FycmF5VHlwZToKKyAgICAgICAgICAg
IGlmIChkYXRhXy5hLnNpemUgIT0gcmhzLmRhdGFfLmEuc2l6ZSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBmb3IgKFNpemVUeXBlIGkgPSAwOyBpIDwgZGF0YV8u
YS5zaXplOyBpKyspCisgICAgICAgICAgICAgICAgaWYgKCgqdGhpcylbaV0gIT0gcmhzW2ldKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgICAgICBjYXNlIGtTdHJpbmdUeXBlOgorICAgICAgICAgICAgcmV0dXJuIFN0cmlu
Z0VxdWFsKHJocyk7CisKKyAgICAgICAgY2FzZSBrTnVtYmVyVHlwZToKKyAgICAgICAgICAgIGlm
IChJc0RvdWJsZSgpIHx8IHJocy5Jc0RvdWJsZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBH
ZXREb3VibGUoKSA9PSByaHMuR2V0RG91YmxlKCk7IC8vIE1heSBjb252ZXJ0IG9uZSBvcGVyYW5k
IGZyb20gaW50ZWdlciB0byBkb3VibGUuCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGRhdGFfLm4udTY0ID09IHJocy5kYXRhXy5uLnU2NDsKKworICAgICAgICBkZWZh
dWx0OiAvLyBrVHJ1ZVR5cGUsIGtGYWxzZVR5cGUsIGtOdWxsVHlwZQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyEgRXF1YWwtdG8gb3BlcmF0b3Ig
d2l0aCBjb25zdCBDLXN0cmluZyBwb2ludGVyCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENo
KiByaHMpIGNvbnN0IHsgcmV0dXJuICp0aGlzID09IEdlbmVyaWNWYWx1ZShTdHJpbmdSZWYocmhz
KSk7IH0KKworI2lmIFJBUElESlNPTl9IQVNfU1REU1RSSU5HCisgICAgLy8hIEVxdWFsLXRvIG9w
ZXJhdG9yIHdpdGggc3RyaW5nIG9iamVjdAorICAgIC8qISBcbm90ZSBSZXF1aXJlcyB0aGUgZGVm
aW5pdGlvbiBvZiB0aGUgcHJlcHJvY2Vzc29yIHN5bWJvbCBccmVmIFJBUElESlNPTl9IQVNfU1RE
U1RSSU5HLgorICAgICAqLworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBzdGQ6OmJhc2ljX3N0
cmluZzxDaD4mIHJocykgY29uc3QgeyByZXR1cm4gKnRoaXMgPT0gR2VuZXJpY1ZhbHVlKFN0cmlu
Z1JlZihyaHMpKTsgfQorI2VuZGlmCisKKyAgICAvLyEgRXF1YWwtdG8gb3BlcmF0b3Igd2l0aCBw
cmltaXRpdmUgdHlwZXMKKyAgICAvKiEgXHRwYXJhbSBUIEVpdGhlciBccmVmIFR5cGUsIFxjIGlu
dCwgXGMgdW5zaWduZWQsIFxjIGludDY0X3QsIFxjIHVpbnQ2NF90LCBcYyBkb3VibGUsIFxjIHRy
dWUsIFxjIGZhbHNlCisgICAgKi8KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gUkFQSURKU09O
X0RJU0FCTEVJRl9SRVRVUk4oKGludGVybmFsOjpPckV4cHI8aW50ZXJuYWw6OklzUG9pbnRlcjxU
PixpbnRlcm5hbDo6SXNHZW5lcmljVmFsdWU8VD4gPiksIChib29sKSkgb3BlcmF0b3I9PShjb25z
dCBUJiByaHMpIGNvbnN0IHsgcmV0dXJuICp0aGlzID09IEdlbmVyaWNWYWx1ZShyaHMpOyB9CisK
KyAgICAvLyEgTm90LWVxdWFsLXRvIG9wZXJhdG9yCisgICAgLyohIFxyZXR1cm4gISgqdGhpcyA9
PSByaHMpCisgICAgICovCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFNvdXJjZUFsbG9jYXRvcj4K
KyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgR2VuZXJpY1ZhbHVlPEVuY29kaW5nLCBTb3VyY2VB
bGxvY2F0b3I+JiByaHMpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gcmhzKTsgfQorCisgICAg
Ly8hIE5vdC1lcXVhbC10byBvcGVyYXRvciB3aXRoIGNvbnN0IEMtc3RyaW5nIHBvaW50ZXIKKyAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ2gqIHJocykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9
PSByaHMpOyB9CisKKyAgICAvLyEgTm90LWVxdWFsLXRvIG9wZXJhdG9yIHdpdGggYXJiaXRyYXJ5
IHR5cGVzCisgICAgLyohIFxyZXR1cm4gISgqdGhpcyA9PSByaHMpCisgICAgICovCisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IFJBUElESlNPTl9ESVNBQkxFSUZfUkVUVVJOKChpbnRlcm5hbDo6
SXNHZW5lcmljVmFsdWU8VD4pLCAoYm9vbCkpIG9wZXJhdG9yIT0oY29uc3QgVCYgcmhzKSBjb25z
dCB7IHJldHVybiAhKCp0aGlzID09IHJocyk7IH0KKworICAgIC8vISBFcXVhbC10byBvcGVyYXRv
ciB3aXRoIGFyYml0cmFyeSB0eXBlcyAoc3ltbWV0cmljIHZlcnNpb24pCisgICAgLyohIFxyZXR1
cm4gKHJocyA9PSBsaHMpCisgICAgICovCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGZyaWVu
ZCBSQVBJREpTT05fRElTQUJMRUlGX1JFVFVSTigoaW50ZXJuYWw6OklzR2VuZXJpY1ZhbHVlPFQ+
KSwgKGJvb2wpKSBvcGVyYXRvcj09KGNvbnN0IFQmIGxocywgY29uc3QgR2VuZXJpY1ZhbHVlJiBy
aHMpIHsgcmV0dXJuIHJocyA9PSBsaHM7IH0KKworICAgIC8vISBOb3QtRXF1YWwtdG8gb3BlcmF0
b3Igd2l0aCBhcmJpdHJhcnkgdHlwZXMgKHN5bW1ldHJpYyB2ZXJzaW9uKQorICAgIC8qISBccmV0
dXJuICEocmhzID09IGxocykKKyAgICAgKi8KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gZnJp
ZW5kIFJBUElESlNPTl9ESVNBQkxFSUZfUkVUVVJOKChpbnRlcm5hbDo6SXNHZW5lcmljVmFsdWU8
VD4pLCAoYm9vbCkpIG9wZXJhdG9yIT0oY29uc3QgVCYgbGhzLCBjb25zdCBHZW5lcmljVmFsdWUm
IHJocykgeyByZXR1cm4gIShyaHMgPT0gbGhzKTsgfQorICAgIC8vQH0KKworICAgIC8vIUBuYW1l
IFR5cGUKKyAgICAvL0B7CisKKyAgICBUeXBlIEdldFR5cGUoKSAgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8VHlwZT4oZmxhZ3NfICYga1R5cGVNYXNrKTsgfQorICAgIGJvb2wgSXNOdWxsKCkg
ICBjb25zdCB7IHJldHVybiBmbGFnc18gPT0ga051bGxGbGFnOyB9CisgICAgYm9vbCBJc0ZhbHNl
KCkgIGNvbnN0IHsgcmV0dXJuIGZsYWdzXyA9PSBrRmFsc2VGbGFnOyB9CisgICAgYm9vbCBJc1Ry
dWUoKSAgIGNvbnN0IHsgcmV0dXJuIGZsYWdzXyA9PSBrVHJ1ZUZsYWc7IH0KKyAgICBib29sIElz
Qm9vbCgpICAgY29uc3QgeyByZXR1cm4gKGZsYWdzXyAmIGtCb29sRmxhZykgIT0gMDsgfQorICAg
IGJvb2wgSXNPYmplY3QoKSBjb25zdCB7IHJldHVybiBmbGFnc18gPT0ga09iamVjdEZsYWc7IH0K
KyAgICBib29sIElzQXJyYXkoKSAgY29uc3QgeyByZXR1cm4gZmxhZ3NfID09IGtBcnJheUZsYWc7
IH0KKyAgICBib29sIElzTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gKGZsYWdzXyAmIGtOdW1iZXJG
bGFnKSAhPSAwOyB9CisgICAgYm9vbCBJc0ludCgpICAgIGNvbnN0IHsgcmV0dXJuIChmbGFnc18g
JiBrSW50RmxhZykgIT0gMDsgfQorICAgIGJvb2wgSXNVaW50KCkgICBjb25zdCB7IHJldHVybiAo
ZmxhZ3NfICYga1VpbnRGbGFnKSAhPSAwOyB9CisgICAgYm9vbCBJc0ludDY0KCkgIGNvbnN0IHsg
cmV0dXJuIChmbGFnc18gJiBrSW50NjRGbGFnKSAhPSAwOyB9CisgICAgYm9vbCBJc1VpbnQ2NCgp
IGNvbnN0IHsgcmV0dXJuIChmbGFnc18gJiBrVWludDY0RmxhZykgIT0gMDsgfQorICAgIGJvb2wg
SXNEb3VibGUoKSBjb25zdCB7IHJldHVybiAoZmxhZ3NfICYga0RvdWJsZUZsYWcpICE9IDA7IH0K
KyAgICBib29sIElzU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gKGZsYWdzXyAmIGtTdHJpbmdGbGFn
KSAhPSAwOyB9CisKKyAgICAvL0B9CisKKyAgICAvLyFAbmFtZSBOdWxsCisgICAgLy9AeworCisg
ICAgR2VuZXJpY1ZhbHVlJiBTZXROdWxsKCkgeyB0aGlzLT5+R2VuZXJpY1ZhbHVlKCk7IG5ldyAo
dGhpcykgR2VuZXJpY1ZhbHVlKCk7IHJldHVybiAqdGhpczsgfQorCisgICAgLy9AfQorCisgICAg
Ly8hQG5hbWUgQm9vbAorICAgIC8vQHsKKworICAgIGJvb2wgR2V0Qm9vbCgpIGNvbnN0IHsgUkFQ
SURKU09OX0FTU0VSVChJc0Jvb2woKSk7IHJldHVybiBmbGFnc18gPT0ga1RydWVGbGFnOyB9Cisg
ICAgLy8hPCBTZXQgYm9vbGVhbiB2YWx1ZQorICAgIC8qISBccG9zdCBJc0Jvb2woKSA9PSB0cnVl
ICovCisgICAgR2VuZXJpY1ZhbHVlJiBTZXRCb29sKGJvb2wgYikgeyB0aGlzLT5+R2VuZXJpY1Zh
bHVlKCk7IG5ldyAodGhpcykgR2VuZXJpY1ZhbHVlKGIpOyByZXR1cm4gKnRoaXM7IH0KKworICAg
IC8vQH0KKworICAgIC8vIUBuYW1lIE9iamVjdAorICAgIC8vQHsKKworICAgIC8vISBTZXQgdGhp
cyB2YWx1ZSBhcyBhbiBlbXB0eSBvYmplY3QuCisgICAgLyohIFxwb3N0IElzT2JqZWN0KCkgPT0g
dHJ1ZSAqLworICAgIEdlbmVyaWNWYWx1ZSYgU2V0T2JqZWN0KCkgeyB0aGlzLT5+R2VuZXJpY1Zh
bHVlKCk7IG5ldyAodGhpcykgR2VuZXJpY1ZhbHVlKGtPYmplY3RUeXBlKTsgcmV0dXJuICp0aGlz
OyB9CisKKyAgICAvLyEgR2V0IHRoZSBudW1iZXIgb2YgbWVtYmVycyBpbiB0aGUgb2JqZWN0Lgor
ICAgIFNpemVUeXBlIE1lbWJlckNvdW50KCkgY29uc3QgeyBSQVBJREpTT05fQVNTRVJUKElzT2Jq
ZWN0KCkpOyByZXR1cm4gZGF0YV8uby5zaXplOyB9CisKKyAgICAvLyEgQ2hlY2sgd2hldGhlciB0
aGUgb2JqZWN0IGlzIGVtcHR5LgorICAgIGJvb2wgT2JqZWN0RW1wdHkoKSBjb25zdCB7IFJBUElE
SlNPTl9BU1NFUlQoSXNPYmplY3QoKSk7IHJldHVybiBkYXRhXy5vLnNpemUgPT0gMDsgfQorCisg
ICAgLy8hIEdldCBhIHZhbHVlIGZyb20gYW4gb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGUgbmFt
ZS4KKyAgICAvKiEgXHByZSBJc09iamVjdCgpID09IHRydWUKKyAgICAgICAgXHRwYXJhbSBUIEVp
dGhlciBcYyBDaCBvciBcYyBjb25zdCBcYyBDaCAodGVtcGxhdGUgdXNlZCBmb3IgZGlzYW1iaWd1
YXRpb24gd2l0aCBccmVmIG9wZXJhdG9yW10oU2l6ZVR5cGUpKQorICAgICAgICBcbm90ZSBJbiB2
ZXJzaW9uIDAuMXgsIGlmIHRoZSBtZW1iZXIgaXMgbm90IGZvdW5kLCB0aGlzIGZ1bmN0aW9uIHJl
dHVybnMgYSBudWxsIHZhbHVlLiBUaGlzIG1ha2VzIGlzc3VlIDcuCisgICAgICAgIFNpbmNlIDAu
MiwgaWYgdGhlIG5hbWUgaXMgbm90IGNvcnJlY3QsIGl0IHdpbGwgYXNzZXJ0LgorICAgICAgICBJ
ZiB1c2VyIGlzIHVuc3VyZSB3aGV0aGVyIGEgbWVtYmVyIGV4aXN0cywgdXNlciBzaG91bGQgdXNl
IEhhc01lbWJlcigpIGZpcnN0LgorICAgICAgICBBIGJldHRlciBhcHByb2FjaCBpcyB0byB1c2Ug
RmluZE1lbWJlcigpLgorICAgICAgICBcbm90ZSBMaW5lYXIgdGltZSBjb21wbGV4aXR5LgorICAg
ICovCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgUkFQSURKU09OX0RJU0FCTEVJRl9S
RVRVUk4oKGludGVybmFsOjpOb3RFeHByPGludGVybmFsOjpJc1NhbWU8dHlwZW5hbWUgaW50ZXJu
YWw6OlJlbW92ZUNvbnN0PFQ+OjpUeXBlLCBDaD4gPiksKEdlbmVyaWNWYWx1ZSYpKSBvcGVyYXRv
cltdKFQqIG5hbWUpIHsKKyAgICAgICAgR2VuZXJpY1ZhbHVlIG4oU3RyaW5nUmVmKG5hbWUpKTsK
KyAgICAgICAgcmV0dXJuICgqdGhpcylbbl07CisgICAgfQorICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorICAgIFJBUElESlNPTl9ESVNBQkxFSUZfUkVUVVJOKChpbnRlcm5hbDo6Tm90RXhwcjxp
bnRlcm5hbDo6SXNTYW1lPHR5cGVuYW1lIGludGVybmFsOjpSZW1vdmVDb25zdDxUPjo6VHlwZSwg
Q2g+ID4pLChjb25zdCBHZW5lcmljVmFsdWUmKSkgb3BlcmF0b3JbXShUKiBuYW1lKSBjb25zdCB7
IHJldHVybiBjb25zdF9jYXN0PEdlbmVyaWNWYWx1ZSY+KCp0aGlzKVtuYW1lXTsgfQorCisgICAg
Ly8hIEdldCBhIHZhbHVlIGZyb20gYW4gb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGUgbmFtZS4K
KyAgICAvKiEgXHByZSBJc09iamVjdCgpID09IHRydWUKKyAgICAgICAgXHRwYXJhbSBTb3VyY2VB
bGxvY2F0b3IgQWxsb2NhdG9yIG9mIHRoZSBcYyBuYW1lIHZhbHVlCisKKyAgICAgICAgXG5vdGUg
Q29tcGFyZWQgdG8gXHJlZiBvcGVyYXRvcltdKFQqKSwgdGhpcyB2ZXJzaW9uIGlzIGZhc3RlciBi
ZWNhdXNlIGl0IGRvZXMgbm90IG5lZWQgYSBTdHJMZW4oKS4KKyAgICAgICAgQW5kIGl0IGNhbiBh
bHNvIGhhbmRsZSBzdHJpbmdzIHdpdGggZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXJzLgorCisgICAg
ICAgIFxub3RlIExpbmVhciB0aW1lIGNvbXBsZXhpdHkuCisgICAgKi8KKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgU291cmNlQWxsb2NhdG9yPgorICAgIEdlbmVyaWNWYWx1ZSYgb3BlcmF0b3JbXShj
b25zdCBHZW5lcmljVmFsdWU8RW5jb2RpbmcsIFNvdXJjZUFsbG9jYXRvcj4mIG5hbWUpIHsKKyAg
ICAgICAgTWVtYmVySXRlcmF0b3IgbWVtYmVyID0gRmluZE1lbWJlcihuYW1lKTsKKyAgICAgICAg
aWYgKG1lbWJlciAhPSBNZW1iZXJFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBtZW1iZXItPnZh
bHVlOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFJBUElESlNPTl9BU1NFUlQoZmFsc2Up
OyAgICAvLyBzZWUgYWJvdmUgbm90ZQorICAgICAgICAgICAgc3RhdGljIEdlbmVyaWNWYWx1ZSBO
dWxsVmFsdWU7CisgICAgICAgICAgICByZXR1cm4gTnVsbFZhbHVlOworICAgICAgICB9CisgICAg
fQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTb3VyY2VBbGxvY2F0b3I+CisgICAgY29uc3QgR2Vu
ZXJpY1ZhbHVlJiBvcGVyYXRvcltdKGNvbnN0IEdlbmVyaWNWYWx1ZTxFbmNvZGluZywgU291cmNl
QWxsb2NhdG9yPiYgbmFtZSkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxHZW5lcmljVmFsdWUm
PigqdGhpcylbbmFtZV07IH0KKworICAgIC8vISBDb25zdCBtZW1iZXIgaXRlcmF0b3IKKyAgICAv
KiEgXHByZSBJc09iamVjdCgpID09IHRydWUgKi8KKyAgICBDb25zdE1lbWJlckl0ZXJhdG9yIE1l
bWJlckJlZ2luKCkgY29uc3QgeyBSQVBJREpTT05fQVNTRVJUKElzT2JqZWN0KCkpOyByZXR1cm4g
Q29uc3RNZW1iZXJJdGVyYXRvcihkYXRhXy5vLm1lbWJlcnMpOyB9CisgICAgLy8hIENvbnN0IFxl
bSBwYXN0LXRoZS1lbmQgbWVtYmVyIGl0ZXJhdG9yCisgICAgLyohIFxwcmUgSXNPYmplY3QoKSA9
PSB0cnVlICovCisgICAgQ29uc3RNZW1iZXJJdGVyYXRvciBNZW1iZXJFbmQoKSBjb25zdCAgIHsg
UkFQSURKU09OX0FTU0VSVChJc09iamVjdCgpKTsgcmV0dXJuIENvbnN0TWVtYmVySXRlcmF0b3Io
ZGF0YV8uby5tZW1iZXJzICsgZGF0YV8uby5zaXplKTsgfQorICAgIC8vISBNZW1iZXIgaXRlcmF0
b3IKKyAgICAvKiEgXHByZSBJc09iamVjdCgpID09IHRydWUgKi8KKyAgICBNZW1iZXJJdGVyYXRv
ciBNZW1iZXJCZWdpbigpICAgICAgICAgICAgeyBSQVBJREpTT05fQVNTRVJUKElzT2JqZWN0KCkp
OyByZXR1cm4gTWVtYmVySXRlcmF0b3IoZGF0YV8uby5tZW1iZXJzKTsgfQorICAgIC8vISBcZW0g
UGFzdC10aGUtZW5kIG1lbWJlciBpdGVyYXRvcgorICAgIC8qISBccHJlIElzT2JqZWN0KCkgPT0g
dHJ1ZSAqLworICAgIE1lbWJlckl0ZXJhdG9yIE1lbWJlckVuZCgpICAgICAgICAgICAgICB7IFJB
UElESlNPTl9BU1NFUlQoSXNPYmplY3QoKSk7IHJldHVybiBNZW1iZXJJdGVyYXRvcihkYXRhXy5v
Lm1lbWJlcnMgKyBkYXRhXy5vLnNpemUpOyB9CisKKyAgICAvLyEgQ2hlY2sgd2hldGhlciBhIG1l
bWJlciBleGlzdHMgaW4gdGhlIG9iamVjdC4KKyAgICAvKiEKKyAgICAgICAgXHBhcmFtIG5hbWUg
TWVtYmVyIG5hbWUgdG8gYmUgc2VhcmNoZWQuCisgICAgICAgIFxwcmUgSXNPYmplY3QoKSA9PSB0
cnVlCisgICAgICAgIFxyZXR1cm4gV2hldGhlciBhIG1lbWJlciB3aXRoIHRoYXQgbmFtZSBleGlz
dHMuCisgICAgICAgIFxub3RlIEl0IGlzIGJldHRlciB0byB1c2UgRmluZE1lbWJlcigpIGRpcmVj
dGx5IGlmIHlvdSBuZWVkIHRoZSBvYnRhaW4gdGhlIHZhbHVlIGFzIHdlbGwuCisgICAgICAgIFxu
b3RlIExpbmVhciB0aW1lIGNvbXBsZXhpdHkuCisgICAgKi8KKyAgICBib29sIEhhc01lbWJlcihj
b25zdCBDaCogbmFtZSkgY29uc3QgeyByZXR1cm4gRmluZE1lbWJlcihuYW1lKSAhPSBNZW1iZXJF
bmQoKTsgfQorCisgICAgLy8hIENoZWNrIHdoZXRoZXIgYSBtZW1iZXIgZXhpc3RzIGluIHRoZSBv
YmplY3Qgd2l0aCBHZW5lcmljVmFsdWUgbmFtZS4KKyAgICAvKiEKKyAgICAgICAgVGhpcyB2ZXJz
aW9uIGlzIGZhc3RlciBiZWNhdXNlIGl0IGRvZXMgbm90IG5lZWQgYSBTdHJMZW4oKS4gSXQgY2Fu
IGFsc28gaGFuZGxlIHN0cmluZyB3aXRoIG51bGwgY2hhcmFjdGVyLgorICAgICAgICBccGFyYW0g
bmFtZSBNZW1iZXIgbmFtZSB0byBiZSBzZWFyY2hlZC4KKyAgICAgICAgXHByZSBJc09iamVjdCgp
ID09IHRydWUKKyAgICAgICAgXHJldHVybiBXaGV0aGVyIGEgbWVtYmVyIHdpdGggdGhhdCBuYW1l
IGV4aXN0cy4KKyAgICAgICAgXG5vdGUgSXQgaXMgYmV0dGVyIHRvIHVzZSBGaW5kTWVtYmVyKCkg
ZGlyZWN0bHkgaWYgeW91IG5lZWQgdGhlIG9idGFpbiB0aGUgdmFsdWUgYXMgd2VsbC4KKyAgICAg
ICAgXG5vdGUgTGluZWFyIHRpbWUgY29tcGxleGl0eS4KKyAgICAqLworICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBTb3VyY2VBbGxvY2F0b3I+CisgICAgYm9vbCBIYXNNZW1iZXIoY29uc3QgR2VuZXJp
Y1ZhbHVlPEVuY29kaW5nLCBTb3VyY2VBbGxvY2F0b3I+JiBuYW1lKSBjb25zdCB7IHJldHVybiBG
aW5kTWVtYmVyKG5hbWUpICE9IE1lbWJlckVuZCgpOyB9CisKKyAgICAvLyEgRmluZCBtZW1iZXIg
YnkgbmFtZS4KKyAgICAvKiEKKyAgICAgICAgXHBhcmFtIG5hbWUgTWVtYmVyIG5hbWUgdG8gYmUg
c2VhcmNoZWQuCisgICAgICAgIFxwcmUgSXNPYmplY3QoKSA9PSB0cnVlCisgICAgICAgIFxyZXR1
cm4gSXRlcmF0b3IgdG8gbWVtYmVyLCBpZiBpdCBleGlzdHMuCisgICAgICAgICAgICBPdGhlcndp
c2UgcmV0dXJucyBccmVmIE1lbWJlckVuZCgpLgorCisgICAgICAgIFxub3RlIEVhcmxpZXIgdmVy
c2lvbnMgb2YgUmFwaWRqc29uIHJldHVybmVkIGEgXGMgTlVMTCBwb2ludGVyLCBpbiBjYXNlCisg
ICAgICAgICAgICB0aGUgcmVxdWVzdGVkIG1lbWJlciBkb2Vzbid0IGV4aXN0LiBGb3IgY29uc2lz
dGVuY3kgd2l0aCBlLmcuCisgICAgICAgICAgICBcYyBzdGQ6Om1hcCwgdGhpcyBoYXMgYmVlbiBj
aGFuZ2VkIHRvIE1lbWJlckVuZCgpIG5vdy4KKyAgICAgICAgXG5vdGUgTGluZWFyIHRpbWUgY29t
cGxleGl0eS4KKyAgICAqLworICAgIE1lbWJlckl0ZXJhdG9yIEZpbmRNZW1iZXIoY29uc3QgQ2gq
IG5hbWUpIHsKKyAgICAgICAgR2VuZXJpY1ZhbHVlIG4oU3RyaW5nUmVmKG5hbWUpKTsKKyAgICAg
ICAgcmV0dXJuIEZpbmRNZW1iZXIobik7CisgICAgfQorCisgICAgQ29uc3RNZW1iZXJJdGVyYXRv
ciBGaW5kTWVtYmVyKGNvbnN0IENoKiBuYW1lKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEdl
bmVyaWNWYWx1ZSY+KCp0aGlzKS5GaW5kTWVtYmVyKG5hbWUpOyB9CisKKyAgICAvLyEgRmluZCBt
ZW1iZXIgYnkgbmFtZS4KKyAgICAvKiEKKyAgICAgICAgVGhpcyB2ZXJzaW9uIGlzIGZhc3RlciBi
ZWNhdXNlIGl0IGRvZXMgbm90IG5lZWQgYSBTdHJMZW4oKS4gSXQgY2FuIGFsc28gaGFuZGxlIHN0
cmluZyB3aXRoIG51bGwgY2hhcmFjdGVyLgorICAgICAgICBccGFyYW0gbmFtZSBNZW1iZXIgbmFt
ZSB0byBiZSBzZWFyY2hlZC4KKyAgICAgICAgXHByZSBJc09iamVjdCgpID09IHRydWUKKyAgICAg
ICAgXHJldHVybiBJdGVyYXRvciB0byBtZW1iZXIsIGlmIGl0IGV4aXN0cy4KKyAgICAgICAgICAg
IE90aGVyd2lzZSByZXR1cm5zIFxyZWYgTWVtYmVyRW5kKCkuCisKKyAgICAgICAgXG5vdGUgRWFy
bGllciB2ZXJzaW9ucyBvZiBSYXBpZGpzb24gcmV0dXJuZWQgYSBcYyBOVUxMIHBvaW50ZXIsIGlu
IGNhc2UKKyAgICAgICAgICAgIHRoZSByZXF1ZXN0ZWQgbWVtYmVyIGRvZXNuJ3QgZXhpc3QuIEZv
ciBjb25zaXN0ZW5jeSB3aXRoIGUuZy4KKyAgICAgICAgICAgIFxjIHN0ZDo6bWFwLCB0aGlzIGhh
cyBiZWVuIGNoYW5nZWQgdG8gTWVtYmVyRW5kKCkgbm93LgorICAgICAgICBcbm90ZSBMaW5lYXIg
dGltZSBjb21wbGV4aXR5LgorICAgICovCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFNvdXJjZUFs
bG9jYXRvcj4KKyAgICBNZW1iZXJJdGVyYXRvciBGaW5kTWVtYmVyKGNvbnN0IEdlbmVyaWNWYWx1
ZTxFbmNvZGluZywgU291cmNlQWxsb2NhdG9yPiYgbmFtZSkgeworICAgICAgICBSQVBJREpTT05f
QVNTRVJUKElzT2JqZWN0KCkpOworICAgICAgICBSQVBJREpTT05fQVNTRVJUKG5hbWUuSXNTdHJp
bmcoKSk7CisgICAgICAgIE1lbWJlckl0ZXJhdG9yIG1lbWJlciA9IE1lbWJlckJlZ2luKCk7Cisg
ICAgICAgIGZvciAoIDsgbWVtYmVyICE9IE1lbWJlckVuZCgpOyArK21lbWJlcikKKyAgICAgICAg
ICAgIGlmIChuYW1lLlN0cmluZ0VxdWFsKG1lbWJlci0+bmFtZSkpCisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIHJldHVybiBtZW1iZXI7CisgICAgfQorICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBTb3VyY2VBbGxvY2F0b3I+IENvbnN0TWVtYmVySXRlcmF0b3IgRmluZE1lbWJlcihjb25z
dCBHZW5lcmljVmFsdWU8RW5jb2RpbmcsIFNvdXJjZUFsbG9jYXRvcj4mIG5hbWUpIGNvbnN0IHsg
cmV0dXJuIGNvbnN0X2Nhc3Q8R2VuZXJpY1ZhbHVlJj4oKnRoaXMpLkZpbmRNZW1iZXIobmFtZSk7
IH0KKworICAgIC8vISBBZGQgYSBtZW1iZXIgKG5hbWUtdmFsdWUgcGFpcikgdG8gdGhlIG9iamVj
dC4KKyAgICAvKiEgXHBhcmFtIG5hbWUgQSBzdHJpbmcgdmFsdWUgYXMgbmFtZSBvZiBtZW1iZXIu
CisgICAgICAgIFxwYXJhbSB2YWx1ZSBWYWx1ZSBvZiBhbnkgdHlwZS4KKyAgICAgICAgXHBhcmFt
IGFsbG9jYXRvciAgICBBbGxvY2F0b3IgZm9yIHJlYWxsb2NhdGluZyBtZW1vcnkuIEl0IG11c3Qg
YmUgdGhlIHNhbWUgb25lIGFzIHVzZWQgYmVmb3JlLiBDb21tb25seSB1c2UgR2VuZXJpY0RvY3Vt
ZW50OjpHZXRBbGxvY2F0b3IoKS4KKyAgICAgICAgXHJldHVybiBUaGUgdmFsdWUgaXRzZWxmIGZv
ciBmbHVlbnQgQVBJLgorICAgICAgICBcbm90ZSBUaGUgb3duZXJzaGlwIG9mIFxjIG5hbWUgYW5k
IFxjIHZhbHVlIHdpbGwgYmUgdHJhbnNmZXJyZWQgdG8gdGhpcyBvYmplY3Qgb24gc3VjY2Vzcy4K
KyAgICAgICAgXHByZSAgSXNPYmplY3QoKSAmJiBuYW1lLklzU3RyaW5nKCkKKyAgICAgICAgXHBv
c3QgbmFtZS5Jc051bGwoKSAmJiB2YWx1ZS5Jc051bGwoKQorICAgICAgICBcbm90ZSBBbW9ydGl6
ZWQgQ29uc3RhbnQgdGltZSBjb21wbGV4aXR5LgorICAgICovCisgICAgR2VuZXJpY1ZhbHVlJiBB
ZGRNZW1iZXIoR2VuZXJpY1ZhbHVlJiBuYW1lLCBHZW5lcmljVmFsdWUmIHZhbHVlLCBBbGxvY2F0
b3ImIGFsbG9jYXRvcikgeworICAgICAgICBSQVBJREpTT05fQVNTRVJUKElzT2JqZWN0KCkpOwor
ICAgICAgICBSQVBJREpTT05fQVNTRVJUKG5hbWUuSXNTdHJpbmcoKSk7CisKKyAgICAgICAgT2Jq
ZWN0JiBvID0gZGF0YV8ubzsKKyAgICAgICAgaWYgKG8uc2l6ZSA+PSBvLmNhcGFjaXR5KSB7Cisg
ICAgICAgICAgICBpZiAoby5jYXBhY2l0eSA9PSAwKSB7CisgICAgICAgICAgICAgICAgby5jYXBh
Y2l0eSA9IGtEZWZhdWx0T2JqZWN0Q2FwYWNpdHk7CisgICAgICAgICAgICAgICAgby5tZW1iZXJz
ID0gcmVpbnRlcnByZXRfY2FzdDxNZW1iZXIqPihhbGxvY2F0b3IuTWFsbG9jKG8uY2FwYWNpdHkg
KiBzaXplb2YoTWVtYmVyKSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgU2l6ZVR5cGUgb2xkQ2FwYWNpdHkgPSBvLmNhcGFjaXR5OworICAgICAg
ICAgICAgICAgIG8uY2FwYWNpdHkgKz0gKG9sZENhcGFjaXR5ICsgMSkgLyAyOyAvLyBncm93IGJ5
IGZhY3RvciAxLjUKKyAgICAgICAgICAgICAgICBvLm1lbWJlcnMgPSByZWludGVycHJldF9jYXN0
PE1lbWJlcio+KGFsbG9jYXRvci5SZWFsbG9jKG8ubWVtYmVycywgb2xkQ2FwYWNpdHkgKiBzaXpl
b2YoTWVtYmVyKSwgby5jYXBhY2l0eSAqIHNpemVvZihNZW1iZXIpKSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgby5tZW1iZXJzW28uc2l6ZV0ubmFtZS5SYXdBc3NpZ24obmFt
ZSk7CisgICAgICAgIG8ubWVtYmVyc1tvLnNpemVdLnZhbHVlLlJhd0Fzc2lnbih2YWx1ZSk7Cisg
ICAgICAgIG8uc2l6ZSsrOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisjaWYgUkFQ
SURKU09OX0hBU19DWFgxMV9SVkFMVUVfUkVGUworICAgIEdlbmVyaWNWYWx1ZSYgQWRkTWVtYmVy
KEdlbmVyaWNWYWx1ZSYmIG5hbWUsIEdlbmVyaWNWYWx1ZSYmIHZhbHVlLCBBbGxvY2F0b3ImIGFs
bG9jYXRvcikgeworICAgICAgICByZXR1cm4gQWRkTWVtYmVyKG5hbWUsIHZhbHVlLCBhbGxvY2F0
b3IpOworICAgIH0KKyAgICBHZW5lcmljVmFsdWUmIEFkZE1lbWJlcihHZW5lcmljVmFsdWUmJiBu
YW1lLCBHZW5lcmljVmFsdWUmIHZhbHVlLCBBbGxvY2F0b3ImIGFsbG9jYXRvcikgeworICAgICAg
ICByZXR1cm4gQWRkTWVtYmVyKG5hbWUsIHZhbHVlLCBhbGxvY2F0b3IpOworICAgIH0KKyAgICBH
ZW5lcmljVmFsdWUmIEFkZE1lbWJlcihHZW5lcmljVmFsdWUmIG5hbWUsIEdlbmVyaWNWYWx1ZSYm
IHZhbHVlLCBBbGxvY2F0b3ImIGFsbG9jYXRvcikgeworICAgICAgICByZXR1cm4gQWRkTWVtYmVy
KG5hbWUsIHZhbHVlLCBhbGxvY2F0b3IpOworICAgIH0KKyAgICBHZW5lcmljVmFsdWUmIEFkZE1l
bWJlcihTdHJpbmdSZWZUeXBlIG5hbWUsIEdlbmVyaWNWYWx1ZSYmIHZhbHVlLCBBbGxvY2F0b3Im
IGFsbG9jYXRvcikgeworICAgICAgICBHZW5lcmljVmFsdWUgbihuYW1lKTsKKyAgICAgICAgcmV0
dXJuIEFkZE1lbWJlcihuLCB2YWx1ZSwgYWxsb2NhdG9yKTsKKyAgICB9CisjZW5kaWYgLy8gUkFQ
SURKU09OX0hBU19DWFgxMV9SVkFMVUVfUkVGUworCisKKyAgICAvLyEgQWRkIGEgbWVtYmVyIChu
YW1lLXZhbHVlIHBhaXIpIHRvIHRoZSBvYmplY3QuCisgICAgLyohIFxwYXJhbSBuYW1lIEEgY29u
c3RhbnQgc3RyaW5nIHJlZmVyZW5jZSBhcyBuYW1lIG9mIG1lbWJlci4KKyAgICAgICAgXHBhcmFt
IHZhbHVlIFZhbHVlIG9mIGFueSB0eXBlLgorICAgICAgICBccGFyYW0gYWxsb2NhdG9yICAgIEFs
bG9jYXRvciBmb3IgcmVhbGxvY2F0aW5nIG1lbW9yeS4gSXQgbXVzdCBiZSB0aGUgc2FtZSBvbmUg
YXMgdXNlZCBiZWZvcmUuIENvbW1vbmx5IHVzZSBHZW5lcmljRG9jdW1lbnQ6OkdldEFsbG9jYXRv
cigpLgorICAgICAgICBccmV0dXJuIFRoZSB2YWx1ZSBpdHNlbGYgZm9yIGZsdWVudCBBUEkuCisg
ICAgICAgIFxub3RlIFRoZSBvd25lcnNoaXAgb2YgXGMgdmFsdWUgd2lsbCBiZSB0cmFuc2ZlcnJl
ZCB0byB0aGlzIG9iamVjdCBvbiBzdWNjZXNzLgorICAgICAgICBccHJlICBJc09iamVjdCgpCisg
ICAgICAgIFxwb3N0IHZhbHVlLklzTnVsbCgpCisgICAgICAgIFxub3RlIEFtb3J0aXplZCBDb25z
dGFudCB0aW1lIGNvbXBsZXhpdHkuCisgICAgKi8KKyAgICBHZW5lcmljVmFsdWUmIEFkZE1lbWJl
cihTdHJpbmdSZWZUeXBlIG5hbWUsIEdlbmVyaWNWYWx1ZSYgdmFsdWUsIEFsbG9jYXRvciYgYWxs
b2NhdG9yKSB7CisgICAgICAgIEdlbmVyaWNWYWx1ZSBuKG5hbWUpOworICAgICAgICByZXR1cm4g
QWRkTWVtYmVyKG4sIHZhbHVlLCBhbGxvY2F0b3IpOworICAgIH0KKworICAgIC8vISBBZGQgYSBj
b25zdGFudCBzdHJpbmcgdmFsdWUgYXMgbWVtYmVyIChuYW1lLXZhbHVlIHBhaXIpIHRvIHRoZSBv
YmplY3QuCisgICAgLyohIFxwYXJhbSBuYW1lIEEgY29uc3RhbnQgc3RyaW5nIHJlZmVyZW5jZSBh
cyBuYW1lIG9mIG1lbWJlci4KKyAgICAgICAgXHBhcmFtIHZhbHVlIGNvbnN0YW50IHN0cmluZyBy
ZWZlcmVuY2UgYXMgdmFsdWUgb2YgbWVtYmVyLgorICAgICAgICBccGFyYW0gYWxsb2NhdG9yICAg
IEFsbG9jYXRvciBmb3IgcmVhbGxvY2F0aW5nIG1lbW9yeS4gSXQgbXVzdCBiZSB0aGUgc2FtZSBv
bmUgYXMgdXNlZCBiZWZvcmUuIENvbW1vbmx5IHVzZSBHZW5lcmljRG9jdW1lbnQ6OkdldEFsbG9j
YXRvcigpLgorICAgICAgICBccmV0dXJuIFRoZSB2YWx1ZSBpdHNlbGYgZm9yIGZsdWVudCBBUEku
CisgICAgICAgIFxwcmUgIElzT2JqZWN0KCkKKyAgICAgICAgXG5vdGUgVGhpcyBvdmVybG9hZCBp
cyBuZWVkZWQgdG8gYXZvaWQgY2xhc2hlcyB3aXRoIHRoZSBnZW5lcmljIHByaW1pdGl2ZSB0eXBl
IEFkZE1lbWJlcihTdHJpbmdSZWZUeXBlLFQsQWxsb2NhdG9yJikgb3ZlcmxvYWQgYmVsb3cuCisg
ICAgICAgIFxub3RlIEFtb3J0aXplZCBDb25zdGFudCB0aW1lIGNvbXBsZXhpdHkuCisgICAgKi8K
KyAgICBHZW5lcmljVmFsdWUmIEFkZE1lbWJlcihTdHJpbmdSZWZUeXBlIG5hbWUsIFN0cmluZ1Jl
ZlR5cGUgdmFsdWUsIEFsbG9jYXRvciYgYWxsb2NhdG9yKSB7CisgICAgICAgIEdlbmVyaWNWYWx1
ZSB2KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIEFkZE1lbWJlcihuYW1lLCB2LCBhbGxvY2F0b3Ip
OworICAgIH0KKworICAgIC8vISBBZGQgYW55IHByaW1pdGl2ZSB2YWx1ZSBhcyBtZW1iZXIgKG5h
bWUtdmFsdWUgcGFpcikgdG8gdGhlIG9iamVjdC4KKyAgICAvKiEgXHRwYXJhbSBUIEVpdGhlciBc
cmVmIFR5cGUsIFxjIGludCwgXGMgdW5zaWduZWQsIFxjIGludDY0X3QsIFxjIHVpbnQ2NF90Cisg
ICAgICAgIFxwYXJhbSBuYW1lIEEgY29uc3RhbnQgc3RyaW5nIHJlZmVyZW5jZSBhcyBuYW1lIG9m
IG1lbWJlci4KKyAgICAgICAgXHBhcmFtIHZhbHVlIFZhbHVlIG9mIHByaW1pdGl2ZSB0eXBlIFxj
IFQgYXMgdmFsdWUgb2YgbWVtYmVyCisgICAgICAgIFxwYXJhbSBhbGxvY2F0b3IgQWxsb2NhdG9y
IGZvciByZWFsbG9jYXRpbmcgbWVtb3J5LiBDb21tb25seSB1c2UgR2VuZXJpY0RvY3VtZW50OjpH
ZXRBbGxvY2F0b3IoKS4KKyAgICAgICAgXHJldHVybiBUaGUgdmFsdWUgaXRzZWxmIGZvciBmbHVl
bnQgQVBJLgorICAgICAgICBccHJlICBJc09iamVjdCgpCisKKyAgICAgICAgXG5vdGUgVGhlIHNv
dXJjZSB0eXBlIFxjIFQgZXhwbGljaXRseSBkaXNhbGxvd3MgYWxsIHBvaW50ZXIgdHlwZXMsCisg
ICAgICAgICAgICBlc3BlY2lhbGx5IChcYyBjb25zdCkgXHJlZiBDaCouICBUaGlzIGhlbHBzIGF2
b2lkaW5nIGltcGxpY2l0bHkKKyAgICAgICAgICAgIHJlZmVyZW5jaW5nIGNoYXJhY3RlciBzdHJp
bmdzIHdpdGggaW5zdWZmaWNpZW50IGxpZmV0aW1lLCB1c2UKKyAgICAgICAgICAgIFxyZWYgQWRk
TWVtYmVyKFN0cmluZ1JlZlR5cGUsIEdlbmVyaWNWYWx1ZSYsIEFsbG9jYXRvciYpIG9yIFxyZWYK
KyAgICAgICAgICAgIEFkZE1lbWJlcihTdHJpbmdSZWZUeXBlLCBTdHJpbmdSZWZUeXBlLCBBbGxv
Y2F0b3ImKS4KKyAgICAgICAgICAgIEFsbCBvdGhlciBwb2ludGVyIHR5cGVzIHdvdWxkIGltcGxp
Y2l0bHkgY29udmVydCB0byBcYyBib29sLAorICAgICAgICAgICAgdXNlIGFuIGV4cGxpY2l0IGNh
c3QgaW5zdGVhZCwgaWYgbmVlZGVkLgorICAgICAgICBcbm90ZSBBbW9ydGl6ZWQgQ29uc3RhbnQg
dGltZSBjb21wbGV4aXR5LgorICAgICovCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAg
UkFQSURKU09OX0RJU0FCTEVJRl9SRVRVUk4oKGludGVybmFsOjpPckV4cHI8aW50ZXJuYWw6Oklz
UG9pbnRlcjxUPiwgaW50ZXJuYWw6OklzR2VuZXJpY1ZhbHVlPFQ+ID4pLCAoR2VuZXJpY1ZhbHVl
JikpCisgICAgQWRkTWVtYmVyKFN0cmluZ1JlZlR5cGUgbmFtZSwgVCB2YWx1ZSwgQWxsb2NhdG9y
JiBhbGxvY2F0b3IpIHsKKyAgICAgICAgR2VuZXJpY1ZhbHVlIG4obmFtZSk7CisgICAgICAgIEdl
bmVyaWNWYWx1ZSB2KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIEFkZE1lbWJlcihuLCB2LCBhbGxv
Y2F0b3IpOworICAgIH0KKworICAgIC8vISBSZW1vdmUgYWxsIG1lbWJlcnMgaW4gdGhlIG9iamVj
dC4KKyAgICAvKiEgVGhpcyBmdW5jdGlvbiBkbyBub3QgZGVhbGxvY2F0ZSBtZW1vcnkgaW4gdGhl
IG9iamVjdCwgaS5lLiB0aGUgY2FwYWNpdHkgaXMgdW5jaGFuZ2VkLgorICAgICAgICBcbm90ZSBM
aW5lYXIgdGltZSBjb21wbGV4aXR5LgorICAgICovCisgICAgdm9pZCBSZW1vdmVBbGxNZW1iZXJz
KCkgeworICAgICAgICBSQVBJREpTT05fQVNTRVJUKElzT2JqZWN0KCkpOyAKKyAgICAgICAgZm9y
IChNZW1iZXJJdGVyYXRvciBtID0gTWVtYmVyQmVnaW4oKTsgbSAhPSBNZW1iZXJFbmQoKTsgKytt
KQorICAgICAgICAgICAgbS0+fk1lbWJlcigpOworICAgICAgICBkYXRhXy5vLnNpemUgPSAwOwor
ICAgIH0KKworICAgIC8vISBSZW1vdmUgYSBtZW1iZXIgaW4gb2JqZWN0IGJ5IGl0cyBuYW1lLgor
ICAgIC8qISBccGFyYW0gbmFtZSBOYW1lIG9mIG1lbWJlciB0byBiZSByZW1vdmVkLgorICAgICAg
ICBccmV0dXJuIFdoZXRoZXIgdGhlIG1lbWJlciBleGlzdGVkLgorICAgICAgICBcbm90ZSBUaGlz
IGZ1bmN0aW9uIG1heSByZW9yZGVyIHRoZSBvYmplY3QgbWVtYmVycy4gVXNlIFxyZWYKKyAgICAg
ICAgICAgIEVyYXNlTWVtYmVyKENvbnN0TWVtYmVySXRlcmF0b3IpIGlmIHlvdSBuZWVkIHRvIHBy
ZXNlcnZlIHRoZQorICAgICAgICAgICAgcmVsYXRpdmUgb3JkZXIgb2YgdGhlIHJlbWFpbmluZyBt
ZW1iZXJzLgorICAgICAgICBcbm90ZSBMaW5lYXIgdGltZSBjb21wbGV4aXR5LgorICAgICovCisg
ICAgYm9vbCBSZW1vdmVNZW1iZXIoY29uc3QgQ2gqIG5hbWUpIHsKKyAgICAgICAgR2VuZXJpY1Zh
bHVlIG4oU3RyaW5nUmVmKG5hbWUpKTsKKyAgICAgICAgcmV0dXJuIFJlbW92ZU1lbWJlcihuKTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU291cmNlQWxsb2NhdG9yPgorICAgIGJv
b2wgUmVtb3ZlTWVtYmVyKGNvbnN0IEdlbmVyaWNWYWx1ZTxFbmNvZGluZywgU291cmNlQWxsb2Nh
dG9yPiYgbmFtZSkgeworICAgICAgICBNZW1iZXJJdGVyYXRvciBtID0gRmluZE1lbWJlcihuYW1l
KTsKKyAgICAgICAgaWYgKG0gIT0gTWVtYmVyRW5kKCkpIHsKKyAgICAgICAgICAgIFJlbW92ZU1l
bWJlcihtKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyEgUmVtb3ZlIGEg
bWVtYmVyIGluIG9iamVjdCBieSBpdGVyYXRvci4KKyAgICAvKiEgXHBhcmFtIG0gbWVtYmVyIGl0
ZXJhdG9yIChvYnRhaW5lZCBieSBGaW5kTWVtYmVyKCkgb3IgTWVtYmVyQmVnaW4oKSkuCisgICAg
ICAgIFxyZXR1cm4gdGhlIG5ldyBpdGVyYXRvciBhZnRlciByZW1vdmFsLgorICAgICAgICBcbm90
ZSBUaGlzIGZ1bmN0aW9uIG1heSByZW9yZGVyIHRoZSBvYmplY3QgbWVtYmVycy4gVXNlIFxyZWYK
KyAgICAgICAgICAgIEVyYXNlTWVtYmVyKENvbnN0TWVtYmVySXRlcmF0b3IpIGlmIHlvdSBuZWVk
IHRvIHByZXNlcnZlIHRoZQorICAgICAgICAgICAgcmVsYXRpdmUgb3JkZXIgb2YgdGhlIHJlbWFp
bmluZyBtZW1iZXJzLgorICAgICAgICBcbm90ZSBDb25zdGFudCB0aW1lIGNvbXBsZXhpdHkuCisg
ICAgKi8KKyAgICBNZW1iZXJJdGVyYXRvciBSZW1vdmVNZW1iZXIoTWVtYmVySXRlcmF0b3IgbSkg
eworICAgICAgICBSQVBJREpTT05fQVNTRVJUKElzT2JqZWN0KCkpOworICAgICAgICBSQVBJREpT
T05fQVNTRVJUKGRhdGFfLm8uc2l6ZSA+IDApOworICAgICAgICBSQVBJREpTT05fQVNTRVJUKGRh
dGFfLm8ubWVtYmVycyAhPSAwKTsKKyAgICAgICAgUkFQSURKU09OX0FTU0VSVChtID49IE1lbWJl
ckJlZ2luKCkgJiYgbSA8IE1lbWJlckVuZCgpKTsKKworICAgICAgICBNZW1iZXJJdGVyYXRvciBs
YXN0KGRhdGFfLm8ubWVtYmVycyArIChkYXRhXy5vLnNpemUgLSAxKSk7CisgICAgICAgIGlmIChk
YXRhXy5vLnNpemUgPiAxICYmIG0gIT0gbGFzdCkgeworICAgICAgICAgICAgLy8gTW92ZSB0aGUg
bGFzdCBvbmUgdG8gdGhpcyBwbGFjZQorICAgICAgICAgICAgKm0gPSAqbGFzdDsKKyAgICAgICAg
fQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIE9ubHkgb25lIGxlZnQsIGp1c3QgZGVz
dHJveQorICAgICAgICAgICAgbS0+fk1lbWJlcigpOworICAgICAgICB9CisgICAgICAgIC0tZGF0
YV8uby5zaXplOworICAgICAgICByZXR1cm4gbTsKKyAgICB9CisKKyAgICAvLyEgUmVtb3ZlIGEg
bWVtYmVyIGZyb20gYW4gb2JqZWN0IGJ5IGl0ZXJhdG9yLgorICAgIC8qISBccGFyYW0gcG9zIGl0
ZXJhdG9yIHRvIHRoZSBtZW1iZXIgdG8gcmVtb3ZlCisgICAgICAgIFxwcmUgSXNPYmplY3QoKSA9
PSB0cnVlICYmIFxyZWYgTWVtYmVyQmVnaW4oKSA8PSBcYyBwb3MgPCBccmVmIE1lbWJlckVuZCgp
CisgICAgICAgIFxyZXR1cm4gSXRlcmF0b3IgZm9sbG93aW5nIHRoZSByZW1vdmVkIGVsZW1lbnQu
CisgICAgICAgICAgICBJZiB0aGUgaXRlcmF0b3IgXGMgcG9zIHJlZmVycyB0byB0aGUgbGFzdCBl
bGVtZW50LCB0aGUgXHJlZiBNZW1iZXJFbmQoKSBpdGVyYXRvciBpcyByZXR1cm5lZC4KKyAgICAg
ICAgXG5vdGUgVGhpcyBmdW5jdGlvbiBwcmVzZXJ2ZXMgdGhlIHJlbGF0aXZlIG9yZGVyIG9mIHRo
ZSByZW1haW5pbmcgb2JqZWN0CisgICAgICAgICAgICBtZW1iZXJzLiBJZiB5b3UgZG8gbm90IG5l
ZWQgdGhpcywgdXNlIHRoZSBtb3JlIGVmZmljaWVudCBccmVmIFJlbW92ZU1lbWJlcihNZW1iZXJJ
dGVyYXRvcikuCisgICAgICAgIFxub3RlIExpbmVhciB0aW1lIGNvbXBsZXhpdHkuCisgICAgKi8K
KyAgICBNZW1iZXJJdGVyYXRvciBFcmFzZU1lbWJlcihDb25zdE1lbWJlckl0ZXJhdG9yIHBvcykg
eworICAgICAgICByZXR1cm4gRXJhc2VNZW1iZXIocG9zLCBwb3MgKzEpOworICAgIH0KKworICAg
IC8vISBSZW1vdmUgbWVtYmVycyBpbiB0aGUgcmFuZ2UgW2ZpcnN0LCBsYXN0KSBmcm9tIGFuIG9i
amVjdC4KKyAgICAvKiEgXHBhcmFtIGZpcnN0IGl0ZXJhdG9yIHRvIHRoZSBmaXJzdCBtZW1iZXIg
dG8gcmVtb3ZlCisgICAgICAgIFxwYXJhbSBsYXN0ICBpdGVyYXRvciBmb2xsb3dpbmcgdGhlIGxh
c3QgbWVtYmVyIHRvIHJlbW92ZQorICAgICAgICBccHJlIElzT2JqZWN0KCkgPT0gdHJ1ZSAmJiBc
cmVmIE1lbWJlckJlZ2luKCkgPD0gXGMgZmlyc3QgPD0gXGMgbGFzdCA8PSBccmVmIE1lbWJlckVu
ZCgpCisgICAgICAgIFxyZXR1cm4gSXRlcmF0b3IgZm9sbG93aW5nIHRoZSBsYXN0IHJlbW92ZWQg
ZWxlbWVudC4KKyAgICAgICAgXG5vdGUgVGhpcyBmdW5jdGlvbiBwcmVzZXJ2ZXMgdGhlIHJlbGF0
aXZlIG9yZGVyIG9mIHRoZSByZW1haW5pbmcgb2JqZWN0CisgICAgICAgICAgICBtZW1iZXJzLgor
ICAgICAgICBcbm90ZSBMaW5lYXIgdGltZSBjb21wbGV4aXR5LgorICAgICovCisgICAgTWVtYmVy
SXRlcmF0b3IgRXJhc2VNZW1iZXIoQ29uc3RNZW1iZXJJdGVyYXRvciBmaXJzdCwgQ29uc3RNZW1i
ZXJJdGVyYXRvciBsYXN0KSB7CisgICAgICAgIFJBUElESlNPTl9BU1NFUlQoSXNPYmplY3QoKSk7
CisgICAgICAgIFJBUElESlNPTl9BU1NFUlQoZGF0YV8uby5zaXplID4gMCk7CisgICAgICAgIFJB
UElESlNPTl9BU1NFUlQoZGF0YV8uby5tZW1iZXJzICE9IDApOworICAgICAgICBSQVBJREpTT05f
QVNTRVJUKGZpcnN0ID49IE1lbWJlckJlZ2luKCkpOworICAgICAgICBSQVBJREpTT05fQVNTRVJU
KGZpcnN0IDw9IGxhc3QpOworICAgICAgICBSQVBJREpTT05fQVNTRVJUKGxhc3QgPD0gTWVtYmVy
RW5kKCkpOworCisgICAgICAgIE1lbWJlckl0ZXJhdG9yIHBvcyA9IE1lbWJlckJlZ2luKCkgKyAo
Zmlyc3QgLSBNZW1iZXJCZWdpbigpKTsKKyAgICAgICAgZm9yIChNZW1iZXJJdGVyYXRvciBpdHIg
PSBwb3M7IGl0ciAhPSBsYXN0OyArK2l0cikKKyAgICAgICAgICAgIGl0ci0+fk1lbWJlcigpOwor
ICAgICAgICBzdGQ6Om1lbW1vdmUoJipwb3MsICYqbGFzdCwgKE1lbWJlckVuZCgpIC0gbGFzdCkg
KiBzaXplb2YoTWVtYmVyKSk7CisgICAgICAgIGRhdGFfLm8uc2l6ZSAtPSAobGFzdCAtIGZpcnN0
KTsKKyAgICAgICAgcmV0dXJuIHBvczsKKyAgICB9CisKKyAgICAvL0B9CisKKyAgICAvLyFAbmFt
ZSBBcnJheQorICAgIC8vQHsKKworICAgIC8vISBTZXQgdGhpcyB2YWx1ZSBhcyBhbiBlbXB0eSBh
cnJheS4KKyAgICAvKiEgXHBvc3QgSXNBcnJheSA9PSB0cnVlICovCisgICAgR2VuZXJpY1ZhbHVl
JiBTZXRBcnJheSgpIHsgIHRoaXMtPn5HZW5lcmljVmFsdWUoKTsgbmV3ICh0aGlzKSBHZW5lcmlj
VmFsdWUoa0FycmF5VHlwZSk7IHJldHVybiAqdGhpczsgfQorCisgICAgLy8hIEdldCB0aGUgbnVt
YmVyIG9mIGVsZW1lbnRzIGluIGFycmF5LgorICAgIFNpemVUeXBlIFNpemUoKSBjb25zdCB7IFJB
UElESlNPTl9BU1NFUlQoSXNBcnJheSgpKTsgcmV0dXJuIGRhdGFfLmEuc2l6ZTsgfQorCisgICAg
Ly8hIEdldCB0aGUgY2FwYWNpdHkgb2YgYXJyYXkuCisgICAgU2l6ZVR5cGUgQ2FwYWNpdHkoKSBj
b25zdCB7IFJBUElESlNPTl9BU1NFUlQoSXNBcnJheSgpKTsgcmV0dXJuIGRhdGFfLmEuY2FwYWNp
dHk7IH0KKworICAgIC8vISBDaGVjayB3aGV0aGVyIHRoZSBhcnJheSBpcyBlbXB0eS4KKyAgICBi
b29sIEVtcHR5KCkgY29uc3QgeyBSQVBJREpTT05fQVNTRVJUKElzQXJyYXkoKSk7IHJldHVybiBk
YXRhXy5hLnNpemUgPT0gMDsgfQorCisgICAgLy8hIFJlbW92ZSBhbGwgZWxlbWVudHMgaW4gdGhl
IGFycmF5LgorICAgIC8qISBUaGlzIGZ1bmN0aW9uIGRvIG5vdCBkZWFsbG9jYXRlIG1lbW9yeSBp
biB0aGUgYXJyYXksIGkuZS4gdGhlIGNhcGFjaXR5IGlzIHVuY2hhbmdlZC4KKyAgICAgICAgXG5v
dGUgTGluZWFyIHRpbWUgY29tcGxleGl0eS4KKyAgICAqLworICAgIHZvaWQgQ2xlYXIoKSB7Cisg
ICAgICAgIFJBUElESlNPTl9BU1NFUlQoSXNBcnJheSgpKTsgCisgICAgICAgIGZvciAoU2l6ZVR5
cGUgaSA9IDA7IGkgPCBkYXRhXy5hLnNpemU7ICsraSkKKyAgICAgICAgICAgIGRhdGFfLmEuZWxl
bWVudHNbaV0ufkdlbmVyaWNWYWx1ZSgpOworICAgICAgICBkYXRhXy5hLnNpemUgPSAwOworICAg
IH0KKworICAgIC8vISBHZXQgYW4gZWxlbWVudCBmcm9tIGFycmF5IGJ5IGluZGV4LgorICAgIC8q
ISBccHJlIElzQXJyYXkoKSA9PSB0cnVlCisgICAgICAgIFxwYXJhbSBpbmRleCBaZXJvLWJhc2Vk
IGluZGV4IG9mIGVsZW1lbnQuCisgICAgICAgIFxzZWUgb3BlcmF0b3JbXShUKikKKyAgICAqLwor
ICAgIEdlbmVyaWNWYWx1ZSYgb3BlcmF0b3JbXShTaXplVHlwZSBpbmRleCkgeworICAgICAgICBS
QVBJREpTT05fQVNTRVJUKElzQXJyYXkoKSk7CisgICAgICAgIFJBUElESlNPTl9BU1NFUlQoaW5k
ZXggPCBkYXRhXy5hLnNpemUpOworICAgICAgICByZXR1cm4gZGF0YV8uYS5lbGVtZW50c1tpbmRl
eF07CisgICAgfQorICAgIGNvbnN0IEdlbmVyaWNWYWx1ZSYgb3BlcmF0b3JbXShTaXplVHlwZSBp
bmRleCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxHZW5lcmljVmFsdWUmPigqdGhpcylbaW5k
ZXhdOyB9CisKKyAgICAvLyEgRWxlbWVudCBpdGVyYXRvcgorICAgIC8qISBccHJlIElzQXJyYXko
KSA9PSB0cnVlICovCisgICAgVmFsdWVJdGVyYXRvciBCZWdpbigpIHsgUkFQSURKU09OX0FTU0VS
VChJc0FycmF5KCkpOyByZXR1cm4gZGF0YV8uYS5lbGVtZW50czsgfQorICAgIC8vISBcZW0gUGFz
dC10aGUtZW5kIGVsZW1lbnQgaXRlcmF0b3IKKyAgICAvKiEgXHByZSBJc0FycmF5KCkgPT0gdHJ1
ZSAqLworICAgIFZhbHVlSXRlcmF0b3IgRW5kKCkgeyBSQVBJREpTT05fQVNTRVJUKElzQXJyYXko
KSk7IHJldHVybiBkYXRhXy5hLmVsZW1lbnRzICsgZGF0YV8uYS5zaXplOyB9CisgICAgLy8hIENv
bnN0YW50IGVsZW1lbnQgaXRlcmF0b3IKKyAgICAvKiEgXHByZSBJc0FycmF5KCkgPT0gdHJ1ZSAq
LworICAgIENvbnN0VmFsdWVJdGVyYXRvciBCZWdpbigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nh
c3Q8R2VuZXJpY1ZhbHVlJj4oKnRoaXMpLkJlZ2luKCk7IH0KKyAgICAvLyEgQ29uc3RhbnQgXGVt
IHBhc3QtdGhlLWVuZCBlbGVtZW50IGl0ZXJhdG9yCisgICAgLyohIFxwcmUgSXNBcnJheSgpID09
IHRydWUgKi8KKyAgICBDb25zdFZhbHVlSXRlcmF0b3IgRW5kKCkgY29uc3QgeyByZXR1cm4gY29u
c3RfY2FzdDxHZW5lcmljVmFsdWUmPigqdGhpcykuRW5kKCk7IH0KKworICAgIC8vISBSZXF1ZXN0
IHRoZSBhcnJheSB0byBoYXZlIGVub3VnaCBjYXBhY2l0eSB0byBzdG9yZSBlbGVtZW50cy4KKyAg
ICAvKiEgXHBhcmFtIG5ld0NhcGFjaXR5ICBUaGUgY2FwYWNpdHkgdGhhdCB0aGUgYXJyYXkgYXQg
bGVhc3QgbmVlZCB0byBoYXZlLgorICAgICAgICBccGFyYW0gYWxsb2NhdG9yICAgIEFsbG9jYXRv
ciBmb3IgcmVhbGxvY2F0aW5nIG1lbW9yeS4gSXQgbXVzdCBiZSB0aGUgc2FtZSBvbmUgYXMgdXNl
ZCBiZWZvcmUuIENvbW1vbmx5IHVzZSBHZW5lcmljRG9jdW1lbnQ6OkdldEFsbG9jYXRvcigpLgor
ICAgICAgICBccmV0dXJuIFRoZSB2YWx1ZSBpdHNlbGYgZm9yIGZsdWVudCBBUEkuCisgICAgICAg
IFxub3RlIExpbmVhciB0aW1lIGNvbXBsZXhpdHkuCisgICAgKi8KKyAgICBHZW5lcmljVmFsdWUm
IFJlc2VydmUoU2l6ZVR5cGUgbmV3Q2FwYWNpdHksIEFsbG9jYXRvciAmYWxsb2NhdG9yKSB7Cisg
ICAgICAgIFJBUElESlNPTl9BU1NFUlQoSXNBcnJheSgpKTsKKyAgICAgICAgaWYgKG5ld0NhcGFj
aXR5ID4gZGF0YV8uYS5jYXBhY2l0eSkgeworICAgICAgICAgICAgZGF0YV8uYS5lbGVtZW50cyA9
IChHZW5lcmljVmFsdWUqKWFsbG9jYXRvci5SZWFsbG9jKGRhdGFfLmEuZWxlbWVudHMsIGRhdGFf
LmEuY2FwYWNpdHkgKiBzaXplb2YoR2VuZXJpY1ZhbHVlKSwgbmV3Q2FwYWNpdHkgKiBzaXplb2Yo
R2VuZXJpY1ZhbHVlKSk7CisgICAgICAgICAgICBkYXRhXy5hLmNhcGFjaXR5ID0gbmV3Q2FwYWNp
dHk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIC8vISBB
cHBlbmQgYSBHZW5lcmljVmFsdWUgYXQgdGhlIGVuZCBvZiB0aGUgYXJyYXkuCisgICAgLyohIFxw
YXJhbSB2YWx1ZSAgICAgICAgVmFsdWUgdG8gYmUgYXBwZW5kZWQuCisgICAgICAgIFxwYXJhbSBh
bGxvY2F0b3IgICAgQWxsb2NhdG9yIGZvciByZWFsbG9jYXRpbmcgbWVtb3J5LiBJdCBtdXN0IGJl
IHRoZSBzYW1lIG9uZSBhcyB1c2VkIGJlZm9yZS4gQ29tbW9ubHkgdXNlIEdlbmVyaWNEb2N1bWVu
dDo6R2V0QWxsb2NhdG9yKCkuCisgICAgICAgIFxwcmUgSXNBcnJheSgpID09IHRydWUKKyAgICAg
ICAgXHBvc3QgdmFsdWUuSXNOdWxsKCkgPT0gdHJ1ZQorICAgICAgICBccmV0dXJuIFRoZSB2YWx1
ZSBpdHNlbGYgZm9yIGZsdWVudCBBUEkuCisgICAgICAgIFxub3RlIFRoZSBvd25lcnNoaXAgb2Yg
XGMgdmFsdWUgd2lsbCBiZSB0cmFuc2ZlcnJlZCB0byB0aGlzIGFycmF5IG9uIHN1Y2Nlc3MuCisg
ICAgICAgIFxub3RlIElmIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gYmUgYXBwZW5kZWQgaXMg
a25vd24sIGNhbGxzIFJlc2VydmUoKSBvbmNlIGZpcnN0IG1heSBiZSBtb3JlIGVmZmljaWVudC4K
KyAgICAgICAgXG5vdGUgQW1vcnRpemVkIGNvbnN0YW50IHRpbWUgY29tcGxleGl0eS4KKyAgICAq
LworICAgIEdlbmVyaWNWYWx1ZSYgUHVzaEJhY2soR2VuZXJpY1ZhbHVlJiB2YWx1ZSwgQWxsb2Nh
dG9yJiBhbGxvY2F0b3IpIHsKKyAgICAgICAgUkFQSURKU09OX0FTU0VSVChJc0FycmF5KCkpOwor
ICAgICAgICBpZiAoZGF0YV8uYS5zaXplID49IGRhdGFfLmEuY2FwYWNpdHkpCisgICAgICAgICAg
ICBSZXNlcnZlKGRhdGFfLmEuY2FwYWNpdHkgPT0gMCA/IGtEZWZhdWx0QXJyYXlDYXBhY2l0eSA6
IChkYXRhXy5hLmNhcGFjaXR5ICsgKGRhdGFfLmEuY2FwYWNpdHkgKyAxKSAvIDIpLCBhbGxvY2F0
b3IpOworICAgICAgICBkYXRhXy5hLmVsZW1lbnRzW2RhdGFfLmEuc2l6ZSsrXS5SYXdBc3NpZ24o
dmFsdWUpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisjaWYgUkFQSURKU09OX0hB
U19DWFgxMV9SVkFMVUVfUkVGUworICAgIEdlbmVyaWNWYWx1ZSYgUHVzaEJhY2soR2VuZXJpY1Zh
bHVlJiYgdmFsdWUsIEFsbG9jYXRvciYgYWxsb2NhdG9yKSB7CisgICAgICAgIHJldHVybiBQdXNo
QmFjayh2YWx1ZSwgYWxsb2NhdG9yKTsKKyAgICB9CisjZW5kaWYgLy8gUkFQSURKU09OX0hBU19D
WFgxMV9SVkFMVUVfUkVGUworCisgICAgLy8hIEFwcGVuZCBhIGNvbnN0YW50IHN0cmluZyByZWZl
cmVuY2UgYXQgdGhlIGVuZCBvZiB0aGUgYXJyYXkuCisgICAgLyohIFxwYXJhbSB2YWx1ZSAgICAg
ICAgQ29uc3RhbnQgc3RyaW5nIHJlZmVyZW5jZSB0byBiZSBhcHBlbmRlZC4KKyAgICAgICAgXHBh
cmFtIGFsbG9jYXRvciAgICBBbGxvY2F0b3IgZm9yIHJlYWxsb2NhdGluZyBtZW1vcnkuIEl0IG11
c3QgYmUgdGhlIHNhbWUgb25lIHVzZWQgcHJldmlvdXNseS4gQ29tbW9ubHkgdXNlIEdlbmVyaWNE
b2N1bWVudDo6R2V0QWxsb2NhdG9yKCkuCisgICAgICAgIFxwcmUgSXNBcnJheSgpID09IHRydWUK
KyAgICAgICAgXHJldHVybiBUaGUgdmFsdWUgaXRzZWxmIGZvciBmbHVlbnQgQVBJLgorICAgICAg
ICBcbm90ZSBJZiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIGJlIGFwcGVuZGVkIGlzIGtub3du
LCBjYWxscyBSZXNlcnZlKCkgb25jZSBmaXJzdCBtYXkgYmUgbW9yZSBlZmZpY2llbnQuCisgICAg
ICAgIFxub3RlIEFtb3J0aXplZCBjb25zdGFudCB0aW1lIGNvbXBsZXhpdHkuCisgICAgICAgIFxz
ZWUgR2VuZXJpY1N0cmluZ1JlZgorICAgICovCisgICAgR2VuZXJpY1ZhbHVlJiBQdXNoQmFjayhT
dHJpbmdSZWZUeXBlIHZhbHVlLCBBbGxvY2F0b3ImIGFsbG9jYXRvcikgeworICAgICAgICByZXR1
cm4gKCp0aGlzKS50ZW1wbGF0ZSBQdXNoQmFjazxTdHJpbmdSZWZUeXBlPih2YWx1ZSwgYWxsb2Nh
dG9yKTsKKyAgICB9CisKKyAgICAvLyEgQXBwZW5kIGEgcHJpbWl0aXZlIHZhbHVlIGF0IHRoZSBl
bmQgb2YgdGhlIGFycmF5LgorICAgIC8qISBcdHBhcmFtIFQgRWl0aGVyIFxyZWYgVHlwZSwgXGMg
aW50LCBcYyB1bnNpZ25lZCwgXGMgaW50NjRfdCwgXGMgdWludDY0X3QKKyAgICAgICAgXHBhcmFt
IHZhbHVlIFZhbHVlIG9mIHByaW1pdGl2ZSB0eXBlIFQgdG8gYmUgYXBwZW5kZWQuCisgICAgICAg
IFxwYXJhbSBhbGxvY2F0b3IgICAgQWxsb2NhdG9yIGZvciByZWFsbG9jYXRpbmcgbWVtb3J5LiBJ
dCBtdXN0IGJlIHRoZSBzYW1lIG9uZSBhcyB1c2VkIGJlZm9yZS4gQ29tbW9ubHkgdXNlIEdlbmVy
aWNEb2N1bWVudDo6R2V0QWxsb2NhdG9yKCkuCisgICAgICAgIFxwcmUgSXNBcnJheSgpID09IHRy
dWUKKyAgICAgICAgXHJldHVybiBUaGUgdmFsdWUgaXRzZWxmIGZvciBmbHVlbnQgQVBJLgorICAg
ICAgICBcbm90ZSBJZiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIGJlIGFwcGVuZGVkIGlzIGtu
b3duLCBjYWxscyBSZXNlcnZlKCkgb25jZSBmaXJzdCBtYXkgYmUgbW9yZSBlZmZpY2llbnQuCisK
KyAgICAgICAgXG5vdGUgVGhlIHNvdXJjZSB0eXBlIFxjIFQgZXhwbGljaXRseSBkaXNhbGxvd3Mg
YWxsIHBvaW50ZXIgdHlwZXMsCisgICAgICAgICAgICBlc3BlY2lhbGx5IChcYyBjb25zdCkgXHJl
ZiBDaCouICBUaGlzIGhlbHBzIGF2b2lkaW5nIGltcGxpY2l0bHkKKyAgICAgICAgICAgIHJlZmVy
ZW5jaW5nIGNoYXJhY3RlciBzdHJpbmdzIHdpdGggaW5zdWZmaWNpZW50IGxpZmV0aW1lLCB1c2UK
KyAgICAgICAgICAgIFxyZWYgUHVzaEJhY2soR2VuZXJpY1ZhbHVlJiwgQWxsb2NhdG9yJikgb3Ig
XHJlZgorICAgICAgICAgICAgUHVzaEJhY2soU3RyaW5nUmVmVHlwZSwgQWxsb2NhdG9yJikuCisg
ICAgICAgICAgICBBbGwgb3RoZXIgcG9pbnRlciB0eXBlcyB3b3VsZCBpbXBsaWNpdGx5IGNvbnZl
cnQgdG8gXGMgYm9vbCwKKyAgICAgICAgICAgIHVzZSBhbiBleHBsaWNpdCBjYXN0IGluc3RlYWQs
IGlmIG5lZWRlZC4KKyAgICAgICAgXG5vdGUgQW1vcnRpemVkIGNvbnN0YW50IHRpbWUgY29tcGxl
eGl0eS4KKyAgICAqLworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIFJBUElESlNPTl9E
SVNBQkxFSUZfUkVUVVJOKChpbnRlcm5hbDo6T3JFeHByPGludGVybmFsOjpJc1BvaW50ZXI8VD4s
IGludGVybmFsOjpJc0dlbmVyaWNWYWx1ZTxUPiA+KSwgKEdlbmVyaWNWYWx1ZSYpKQorICAgIFB1
c2hCYWNrKFQgdmFsdWUsIEFsbG9jYXRvciYgYWxsb2NhdG9yKSB7CisgICAgICAgIEdlbmVyaWNW
YWx1ZSB2KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIFB1c2hCYWNrKHYsIGFsbG9jYXRvcik7Cisg
ICAgfQorCisgICAgLy8hIFJlbW92ZSB0aGUgbGFzdCBlbGVtZW50IGluIHRoZSBhcnJheS4KKyAg
ICAvKiEKKyAgICAgICAgXG5vdGUgQ29uc3RhbnQgdGltZSBjb21wbGV4aXR5LgorICAgICovCisg
ICAgR2VuZXJpY1ZhbHVlJiBQb3BCYWNrKCkgeworICAgICAgICBSQVBJREpTT05fQVNTRVJUKElz
QXJyYXkoKSk7CisgICAgICAgIFJBUElESlNPTl9BU1NFUlQoIUVtcHR5KCkpOworICAgICAgICBk
YXRhXy5hLmVsZW1lbnRzWy0tZGF0YV8uYS5zaXplXS5+R2VuZXJpY1ZhbHVlKCk7CisgICAgICAg
IHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICAvLyEgUmVtb3ZlIGFuIGVsZW1lbnQgb2YgYXJy
YXkgYnkgaXRlcmF0b3IuCisgICAgLyohCisgICAgICAgIFxwYXJhbSBwb3MgaXRlcmF0b3IgdG8g
dGhlIGVsZW1lbnQgdG8gcmVtb3ZlCisgICAgICAgIFxwcmUgSXNBcnJheSgpID09IHRydWUgJiYg
XHJlZiBCZWdpbigpIDw9IFxjIHBvcyA8IFxyZWYgRW5kKCkKKyAgICAgICAgXHJldHVybiBJdGVy
YXRvciBmb2xsb3dpbmcgdGhlIHJlbW92ZWQgZWxlbWVudC4gSWYgdGhlIGl0ZXJhdG9yIHBvcyBy
ZWZlcnMgdG8gdGhlIGxhc3QgZWxlbWVudCwgdGhlIEVuZCgpIGl0ZXJhdG9yIGlzIHJldHVybmVk
LgorICAgICAgICBcbm90ZSBMaW5lYXIgdGltZSBjb21wbGV4aXR5LgorICAgICovCisgICAgVmFs
dWVJdGVyYXRvciBFcmFzZShDb25zdFZhbHVlSXRlcmF0b3IgcG9zKSB7CisgICAgICAgIHJldHVy
biBFcmFzZShwb3MsIHBvcyArIDEpOworICAgIH0KKworICAgIC8vISBSZW1vdmUgZWxlbWVudHMg
aW4gdGhlIHJhbmdlIFtmaXJzdCwgbGFzdCkgb2YgdGhlIGFycmF5LgorICAgIC8qIQorICAgICAg
ICBccGFyYW0gZmlyc3QgaXRlcmF0b3IgdG8gdGhlIGZpcnN0IGVsZW1lbnQgdG8gcmVtb3ZlCisg
ICAgICAgIFxwYXJhbSBsYXN0ICBpdGVyYXRvciBmb2xsb3dpbmcgdGhlIGxhc3QgZWxlbWVudCB0
byByZW1vdmUKKyAgICAgICAgXHByZSBJc0FycmF5KCkgPT0gdHJ1ZSAmJiBccmVmIEJlZ2luKCkg
PD0gXGMgZmlyc3QgPD0gXGMgbGFzdCA8PSBccmVmIEVuZCgpCisgICAgICAgIFxyZXR1cm4gSXRl
cmF0b3IgZm9sbG93aW5nIHRoZSBsYXN0IHJlbW92ZWQgZWxlbWVudC4KKyAgICAgICAgXG5vdGUg
TGluZWFyIHRpbWUgY29tcGxleGl0eS4KKyAgICAqLworICAgIFZhbHVlSXRlcmF0b3IgRXJhc2Uo
Q29uc3RWYWx1ZUl0ZXJhdG9yIGZpcnN0LCBDb25zdFZhbHVlSXRlcmF0b3IgbGFzdCkgeworICAg
ICAgICBSQVBJREpTT05fQVNTRVJUKElzQXJyYXkoKSk7CisgICAgICAgIFJBUElESlNPTl9BU1NF
UlQoZGF0YV8uYS5zaXplID4gMCk7CisgICAgICAgIFJBUElESlNPTl9BU1NFUlQoZGF0YV8uYS5l
bGVtZW50cyAhPSAwKTsKKyAgICAgICAgUkFQSURKU09OX0FTU0VSVChmaXJzdCA+PSBCZWdpbigp
KTsKKyAgICAgICAgUkFQSURKU09OX0FTU0VSVChmaXJzdCA8PSBsYXN0KTsKKyAgICAgICAgUkFQ
SURKU09OX0FTU0VSVChsYXN0IDw9IEVuZCgpKTsKKyAgICAgICAgVmFsdWVJdGVyYXRvciBwb3Mg
PSBCZWdpbigpICsgKGZpcnN0IC0gQmVnaW4oKSk7CisgICAgICAgIGZvciAoVmFsdWVJdGVyYXRv
ciBpdHIgPSBwb3M7IGl0ciAhPSBsYXN0OyArK2l0cikKKyAgICAgICAgICAgIGl0ci0+fkdlbmVy
aWNWYWx1ZSgpOyAgICAgICAKKyAgICAgICAgc3RkOjptZW1tb3ZlKHBvcywgbGFzdCwgKEVuZCgp
IC0gbGFzdCkgKiBzaXplb2YoR2VuZXJpY1ZhbHVlKSk7CisgICAgICAgIGRhdGFfLmEuc2l6ZSAt
PSAobGFzdCAtIGZpcnN0KTsKKyAgICAgICAgcmV0dXJuIHBvczsKKyAgICB9CisKKyAgICAvL0B9
CisKKyAgICAvLyFAbmFtZSBOdW1iZXIKKyAgICAvL0B7CisKKyAgICBpbnQgR2V0SW50KCkgY29u
c3QgICAgICAgICAgeyBSQVBJREpTT05fQVNTRVJUKGZsYWdzXyAmIGtJbnRGbGFnKTsgICByZXR1
cm4gZGF0YV8ubi5pLmk7ICAgfQorICAgIHVuc2lnbmVkIEdldFVpbnQoKSBjb25zdCAgICB7IFJB
UElESlNPTl9BU1NFUlQoZmxhZ3NfICYga1VpbnRGbGFnKTsgIHJldHVybiBkYXRhXy5uLnUudTsg
ICB9CisgICAgaW50NjRfdCBHZXRJbnQ2NCgpIGNvbnN0ICAgIHsgUkFQSURKU09OX0FTU0VSVChm
bGFnc18gJiBrSW50NjRGbGFnKTsgcmV0dXJuIGRhdGFfLm4uaTY0OyB9CisgICAgdWludDY0X3Qg
R2V0VWludDY0KCkgY29uc3QgIHsgUkFQSURKU09OX0FTU0VSVChmbGFnc18gJiBrVWludDY0Rmxh
Zyk7IHJldHVybiBkYXRhXy5uLnU2NDsgfQorCisgICAgZG91YmxlIEdldERvdWJsZSgpIGNvbnN0
IHsKKyAgICAgICAgUkFQSURKU09OX0FTU0VSVChJc051bWJlcigpKTsKKyAgICAgICAgaWYgKChm
bGFnc18gJiBrRG91YmxlRmxhZykgIT0gMCkgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFfLm4u
ZDsgICAvLyBleGFjdCB0eXBlLCBubyBjb252ZXJzaW9uLgorICAgICAgICBpZiAoKGZsYWdzXyAm
IGtJbnRGbGFnKSAhPSAwKSAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YV8ubi5pLmk7IC8v
IGludCAtPiBkb3VibGUKKyAgICAgICAgaWYgKChmbGFnc18gJiBrVWludEZsYWcpICE9IDApICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFfLm4udS51OyAvLyB1bnNpZ25lZCAtPiBkb3VibGUK
KyAgICAgICAgaWYgKChmbGFnc18gJiBrSW50NjRGbGFnKSAhPSAwKSAgICAgICAgICAgICAgICAg
cmV0dXJuIChkb3VibGUpZGF0YV8ubi5pNjQ7IC8vIGludDY0X3QgLT4gZG91YmxlIChtYXkgbG9z
ZSBwcmVjaXNpb24pCisgICAgICAgIFJBUElESlNPTl9BU1NFUlQoKGZsYWdzXyAmIGtVaW50NjRG
bGFnKSAhPSAwKTsgIHJldHVybiAoZG91YmxlKWRhdGFfLm4udTY0OyAvLyB1aW50NjRfdCAtPiBk
b3VibGUgKG1heSBsb3NlIHByZWNpc2lvbikKKyAgICB9CisKKyAgICBHZW5lcmljVmFsdWUmIFNl
dEludChpbnQgaSkgICAgICAgICAgICAgeyB0aGlzLT5+R2VuZXJpY1ZhbHVlKCk7IG5ldyAodGhp
cykgR2VuZXJpY1ZhbHVlKGkpOyAgICByZXR1cm4gKnRoaXM7IH0KKyAgICBHZW5lcmljVmFsdWUm
IFNldFVpbnQodW5zaWduZWQgdSkgICAgICAgeyB0aGlzLT5+R2VuZXJpY1ZhbHVlKCk7IG5ldyAo
dGhpcykgR2VuZXJpY1ZhbHVlKHUpOyAgICByZXR1cm4gKnRoaXM7IH0KKyAgICBHZW5lcmljVmFs
dWUmIFNldEludDY0KGludDY0X3QgaTY0KSAgICAgeyB0aGlzLT5+R2VuZXJpY1ZhbHVlKCk7IG5l
dyAodGhpcykgR2VuZXJpY1ZhbHVlKGk2NCk7ICByZXR1cm4gKnRoaXM7IH0KKyAgICBHZW5lcmlj
VmFsdWUmIFNldFVpbnQ2NCh1aW50NjRfdCB1NjQpICAgeyB0aGlzLT5+R2VuZXJpY1ZhbHVlKCk7
IG5ldyAodGhpcykgR2VuZXJpY1ZhbHVlKHU2NCk7ICByZXR1cm4gKnRoaXM7IH0KKyAgICBHZW5l
cmljVmFsdWUmIFNldERvdWJsZShkb3VibGUgZCkgICAgICAgeyB0aGlzLT5+R2VuZXJpY1ZhbHVl
KCk7IG5ldyAodGhpcykgR2VuZXJpY1ZhbHVlKGQpOyAgICByZXR1cm4gKnRoaXM7IH0KKworICAg
IC8vQH0KKworICAgIC8vIUBuYW1lIFN0cmluZworICAgIC8vQHsKKworICAgIGNvbnN0IENoKiBH
ZXRTdHJpbmcoKSBjb25zdCB7IFJBUElESlNPTl9BU1NFUlQoSXNTdHJpbmcoKSk7IHJldHVybiAo
KGZsYWdzXyAmIGtJbmxpbmVTdHJGbGFnKSA/IGRhdGFfLnNzLnN0ciA6IGRhdGFfLnMuc3RyKTsg
fQorCisgICAgLy8hIEdldCB0aGUgbGVuZ3RoIG9mIHN0cmluZy4KKyAgICAvKiEgU2luY2UgcmFw
aWRqc29uIHBlcm1pdHMgIlxcdTAwMDAiIGluIHRoZSBqc29uIHN0cmluZywgc3RybGVuKHYuR2V0
U3RyaW5nKCkpIG1heSBub3QgZXF1YWwgdG8gdi5HZXRTdHJpbmdMZW5ndGgoKS4KKyAgICAqLwor
ICAgIFNpemVUeXBlIEdldFN0cmluZ0xlbmd0aCgpIGNvbnN0IHsgUkFQSURKU09OX0FTU0VSVChJ
c1N0cmluZygpKTsgcmV0dXJuICgoZmxhZ3NfICYga0lubGluZVN0ckZsYWcpID8gKGRhdGFfLnNz
LkdldExlbmd0aCgpKSA6IGRhdGFfLnMubGVuZ3RoKTsgfQorCisgICAgLy8hIFNldCB0aGlzIHZh
bHVlIGFzIGEgc3RyaW5nIHdpdGhvdXQgY29weWluZyBzb3VyY2Ugc3RyaW5nLgorICAgIC8qISBU
aGlzIHZlcnNpb24gaGFzIGJldHRlciBwZXJmb3JtYW5jZSB3aXRoIHN1cHBsaWVkIGxlbmd0aCwg
YW5kIGFsc28gc3VwcG9ydCBzdHJpbmcgY29udGFpbmluZyBudWxsIGNoYXJhY3Rlci4KKyAgICAg
ICAgXHBhcmFtIHMgc291cmNlIHN0cmluZyBwb2ludGVyLiAKKyAgICAgICAgXHBhcmFtIGxlbmd0
aCBUaGUgbGVuZ3RoIG9mIHNvdXJjZSBzdHJpbmcsIGV4Y2x1ZGluZyB0aGUgdHJhaWxpbmcgbnVs
bCB0ZXJtaW5hdG9yLgorICAgICAgICBccmV0dXJuIFRoZSB2YWx1ZSBpdHNlbGYgZm9yIGZsdWVu
dCBBUEkuCisgICAgICAgIFxwb3N0IElzU3RyaW5nKCkgPT0gdHJ1ZSAmJiBHZXRTdHJpbmcoKSA9
PSBzICYmIEdldFN0cmluZ0xlbmd0aCgpID09IGxlbmd0aAorICAgICAgICBcc2VlIFNldFN0cmlu
ZyhTdHJpbmdSZWZUeXBlKQorICAgICovCisgICAgR2VuZXJpY1ZhbHVlJiBTZXRTdHJpbmcoY29u
c3QgQ2gqIHMsIFNpemVUeXBlIGxlbmd0aCkgeyByZXR1cm4gU2V0U3RyaW5nKFN0cmluZ1JlZihz
LCBsZW5ndGgpKTsgfQorCisgICAgLy8hIFNldCB0aGlzIHZhbHVlIGFzIGEgc3RyaW5nIHdpdGhv
dXQgY29weWluZyBzb3VyY2Ugc3RyaW5nLgorICAgIC8qISBccGFyYW0gcyBzb3VyY2Ugc3RyaW5n
IHJlZmVyZW5jZQorICAgICAgICBccmV0dXJuIFRoZSB2YWx1ZSBpdHNlbGYgZm9yIGZsdWVudCBB
UEkuCisgICAgICAgIFxwb3N0IElzU3RyaW5nKCkgPT0gdHJ1ZSAmJiBHZXRTdHJpbmcoKSA9PSBz
ICYmIEdldFN0cmluZ0xlbmd0aCgpID09IHMubGVuZ3RoCisgICAgKi8KKyAgICBHZW5lcmljVmFs
dWUmIFNldFN0cmluZyhTdHJpbmdSZWZUeXBlIHMpIHsgdGhpcy0+fkdlbmVyaWNWYWx1ZSgpOyBT
ZXRTdHJpbmdSYXcocyk7IHJldHVybiAqdGhpczsgfQorCisgICAgLy8hIFNldCB0aGlzIHZhbHVl
IGFzIGEgc3RyaW5nIGJ5IGNvcHlpbmcgZnJvbSBzb3VyY2Ugc3RyaW5nLgorICAgIC8qISBUaGlz
IHZlcnNpb24gaGFzIGJldHRlciBwZXJmb3JtYW5jZSB3aXRoIHN1cHBsaWVkIGxlbmd0aCwgYW5k
IGFsc28gc3VwcG9ydCBzdHJpbmcgY29udGFpbmluZyBudWxsIGNoYXJhY3Rlci4KKyAgICAgICAg
XHBhcmFtIHMgc291cmNlIHN0cmluZy4gCisgICAgICAgIFxwYXJhbSBsZW5ndGggVGhlIGxlbmd0
aCBvZiBzb3VyY2Ugc3RyaW5nLCBleGNsdWRpbmcgdGhlIHRyYWlsaW5nIG51bGwgdGVybWluYXRv
ci4KKyAgICAgICAgXHBhcmFtIGFsbG9jYXRvciBBbGxvY2F0b3IgZm9yIGFsbG9jYXRpbmcgY29w
aWVkIGJ1ZmZlci4gQ29tbW9ubHkgdXNlIEdlbmVyaWNEb2N1bWVudDo6R2V0QWxsb2NhdG9yKCku
CisgICAgICAgIFxyZXR1cm4gVGhlIHZhbHVlIGl0c2VsZiBmb3IgZmx1ZW50IEFQSS4KKyAgICAg
ICAgXHBvc3QgSXNTdHJpbmcoKSA9PSB0cnVlICYmIEdldFN0cmluZygpICE9IHMgJiYgc3RyY21w
KEdldFN0cmluZygpLHMpID09IDAgJiYgR2V0U3RyaW5nTGVuZ3RoKCkgPT0gbGVuZ3RoCisgICAg
Ki8KKyAgICBHZW5lcmljVmFsdWUmIFNldFN0cmluZyhjb25zdCBDaCogcywgU2l6ZVR5cGUgbGVu
Z3RoLCBBbGxvY2F0b3ImIGFsbG9jYXRvcikgeyB0aGlzLT5+R2VuZXJpY1ZhbHVlKCk7IFNldFN0
cmluZ1JhdyhTdHJpbmdSZWYocywgbGVuZ3RoKSwgYWxsb2NhdG9yKTsgcmV0dXJuICp0aGlzOyB9
CisKKyAgICAvLyEgU2V0IHRoaXMgdmFsdWUgYXMgYSBzdHJpbmcgYnkgY29weWluZyBmcm9tIHNv
dXJjZSBzdHJpbmcuCisgICAgLyohIFxwYXJhbSBzIHNvdXJjZSBzdHJpbmcuIAorICAgICAgICBc
cGFyYW0gYWxsb2NhdG9yIEFsbG9jYXRvciBmb3IgYWxsb2NhdGluZyBjb3BpZWQgYnVmZmVyLiBD
b21tb25seSB1c2UgR2VuZXJpY0RvY3VtZW50OjpHZXRBbGxvY2F0b3IoKS4KKyAgICAgICAgXHJl
dHVybiBUaGUgdmFsdWUgaXRzZWxmIGZvciBmbHVlbnQgQVBJLgorICAgICAgICBccG9zdCBJc1N0
cmluZygpID09IHRydWUgJiYgR2V0U3RyaW5nKCkgIT0gcyAmJiBzdHJjbXAoR2V0U3RyaW5nKCks
cykgPT0gMCAmJiBHZXRTdHJpbmdMZW5ndGgoKSA9PSBsZW5ndGgKKyAgICAqLworICAgIEdlbmVy
aWNWYWx1ZSYgU2V0U3RyaW5nKGNvbnN0IENoKiBzLCBBbGxvY2F0b3ImIGFsbG9jYXRvcikgeyBy
ZXR1cm4gU2V0U3RyaW5nKHMsIGludGVybmFsOjpTdHJMZW4ocyksIGFsbG9jYXRvcik7IH0KKwor
I2lmIFJBUElESlNPTl9IQVNfU1REU1RSSU5HCisgICAgLy8hIFNldCB0aGlzIHZhbHVlIGFzIGEg
c3RyaW5nIGJ5IGNvcHlpbmcgZnJvbSBzb3VyY2Ugc3RyaW5nLgorICAgIC8qISBccGFyYW0gcyBz
b3VyY2Ugc3RyaW5nLgorICAgICAgICBccGFyYW0gYWxsb2NhdG9yIEFsbG9jYXRvciBmb3IgYWxs
b2NhdGluZyBjb3BpZWQgYnVmZmVyLiBDb21tb25seSB1c2UgR2VuZXJpY0RvY3VtZW50OjpHZXRB
bGxvY2F0b3IoKS4KKyAgICAgICAgXHJldHVybiBUaGUgdmFsdWUgaXRzZWxmIGZvciBmbHVlbnQg
QVBJLgorICAgICAgICBccG9zdCBJc1N0cmluZygpID09IHRydWUgJiYgR2V0U3RyaW5nKCkgIT0g
cy5kYXRhKCkgJiYgc3RyY21wKEdldFN0cmluZygpLHMuZGF0YSgpID09IDAgJiYgR2V0U3RyaW5n
TGVuZ3RoKCkgPT0gcy5zaXplKCkKKyAgICAgICAgXG5vdGUgUmVxdWlyZXMgdGhlIGRlZmluaXRp
b24gb2YgdGhlIHByZXByb2Nlc3NvciBzeW1ib2wgXHJlZiBSQVBJREpTT05fSEFTX1NURFNUUklO
Ry4KKyAgICAqLworICAgIEdlbmVyaWNWYWx1ZSYgU2V0U3RyaW5nKGNvbnN0IHN0ZDo6YmFzaWNf
c3RyaW5nPENoPiYgcywgQWxsb2NhdG9yJiBhbGxvY2F0b3IpIHsgcmV0dXJuIFNldFN0cmluZyhz
LmRhdGEoKSwgcy5zaXplKCksIGFsbG9jYXRvcik7IH0KKyNlbmRpZgorCisgICAgLy9AfQorCisg
ICAgLy8hIEdlbmVyYXRlIGV2ZW50cyBvZiB0aGlzIHZhbHVlIHRvIGEgSGFuZGxlci4KKyAgICAv
KiEgVGhpcyBmdW5jdGlvbiBhZG9wdHMgdGhlIEdvRiB2aXNpdG9yIHBhdHRlcm4uCisgICAgICAg
IFR5cGljYWwgdXNhZ2UgaXMgdG8gb3V0cHV0IHRoaXMgSlNPTiB2YWx1ZSBhcyBKU09OIHRleHQg
dmlhIFdyaXRlciwgd2hpY2ggaXMgYSBIYW5kbGVyLgorICAgICAgICBJdCBjYW4gYWxzbyBiZSB1
c2VkIHRvIGRlZXAgY2xvbmUgdGhpcyB2YWx1ZSB2aWEgR2VuZXJpY0RvY3VtZW50LCB3aGljaCBp
cyBhbHNvIGEgSGFuZGxlci4KKyAgICAgICAgXHRwYXJhbSBIYW5kbGVyIHR5cGUgb2YgaGFuZGxl
ci4KKyAgICAgICAgXHBhcmFtIGhhbmRsZXIgQW4gb2JqZWN0IGltcGxlbWVudGluZyBjb25jZXB0
IEhhbmRsZXIuCisgICAgKi8KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFuZGxlcj4KKyAgICBi
b29sIEFjY2VwdChIYW5kbGVyJiBoYW5kbGVyKSBjb25zdCB7CisgICAgICAgIHN3aXRjaChHZXRU
eXBlKCkpIHsKKyAgICAgICAgY2FzZSBrTnVsbFR5cGU6ICAgICByZXR1cm4gaGFuZGxlci5OdWxs
KCk7CisgICAgICAgIGNhc2Uga0ZhbHNlVHlwZTogICAgcmV0dXJuIGhhbmRsZXIuQm9vbChmYWxz
ZSk7CisgICAgICAgIGNhc2Uga1RydWVUeXBlOiAgICAgcmV0dXJuIGhhbmRsZXIuQm9vbCh0cnVl
KTsKKworICAgICAgICBjYXNlIGtPYmplY3RUeXBlOgorICAgICAgICAgICAgaWYgKCFoYW5kbGVy
LlN0YXJ0T2JqZWN0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgZm9yIChDb25zdE1lbWJlckl0ZXJhdG9yIG0gPSBNZW1iZXJCZWdpbigpOyBtICE9IE1lbWJl
ckVuZCgpOyArK20pIHsKKyAgICAgICAgICAgICAgICBSQVBJREpTT05fQVNTRVJUKG0tPm5hbWUu
SXNTdHJpbmcoKSk7IC8vIFVzZXIgbWF5IGNoYW5nZSB0aGUgdHlwZSBvZiBuYW1lIGJ5IE1lbWJl
ckl0ZXJhdG9yLgorICAgICAgICAgICAgICAgIGlmICghaGFuZGxlci5LZXkobS0+bmFtZS5HZXRT
dHJpbmcoKSwgbS0+bmFtZS5HZXRTdHJpbmdMZW5ndGgoKSwgKG0tPm5hbWUuZmxhZ3NfICYga0Nv
cHlGbGFnKSAhPSAwKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgICAgIGlmICghbS0+dmFsdWUuQWNjZXB0KGhhbmRsZXIpKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gaGFu
ZGxlci5FbmRPYmplY3QoZGF0YV8uby5zaXplKTsKKworICAgICAgICBjYXNlIGtBcnJheVR5cGU6
CisgICAgICAgICAgICBpZiAoIWhhbmRsZXIuU3RhcnRBcnJheSgpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGZvciAoR2VuZXJpY1ZhbHVlKiB2ID0gZGF0YV8u
YS5lbGVtZW50czsgdiAhPSBkYXRhXy5hLmVsZW1lbnRzICsgZGF0YV8uYS5zaXplOyArK3YpCisg
ICAgICAgICAgICAgICAgaWYgKCF2LT5BY2NlcHQoaGFuZGxlcikpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBoYW5kbGVyLkVuZEFycmF5KGRh
dGFfLmEuc2l6ZSk7CisgICAgCisgICAgICAgIGNhc2Uga1N0cmluZ1R5cGU6CisgICAgICAgICAg
ICByZXR1cm4gaGFuZGxlci5TdHJpbmcoR2V0U3RyaW5nKCksIEdldFN0cmluZ0xlbmd0aCgpLCAo
ZmxhZ3NfICYga0NvcHlGbGFnKSAhPSAwKTsKKyAgICAKKyAgICAgICAgY2FzZSBrTnVtYmVyVHlw
ZToKKyAgICAgICAgICAgIGlmIChJc0ludCgpKSAgICAgICAgICAgIHJldHVybiBoYW5kbGVyLklu
dChkYXRhXy5uLmkuaSk7CisgICAgICAgICAgICBlbHNlIGlmIChJc1VpbnQoKSkgICAgICByZXR1
cm4gaGFuZGxlci5VaW50KGRhdGFfLm4udS51KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKElzSW50
NjQoKSkgICAgIHJldHVybiBoYW5kbGVyLkludDY0KGRhdGFfLm4uaTY0KTsKKyAgICAgICAgICAg
IGVsc2UgaWYgKElzVWludDY0KCkpICAgIHJldHVybiBoYW5kbGVyLlVpbnQ2NChkYXRhXy5uLnU2
NCk7CisgICAgICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlci5E
b3VibGUoZGF0YV8ubi5kKTsKKyAgICAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJB
UElESlNPTl9BU1NFUlQoZmFsc2UpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLCB0eXBlbmFtZT4gZnJp
ZW5kIGNsYXNzIEdlbmVyaWNWYWx1ZTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUsIHR5cGVuYW1l
LCB0eXBlbmFtZT4gZnJpZW5kIGNsYXNzIEdlbmVyaWNEb2N1bWVudDsKKworICAgIGVudW0gewor
ICAgICAgICBrQm9vbEZsYWcgPSAweDEwMCwKKyAgICAgICAga051bWJlckZsYWcgPSAweDIwMCwK
KyAgICAgICAga0ludEZsYWcgPSAweDQwMCwKKyAgICAgICAga1VpbnRGbGFnID0gMHg4MDAsCisg
ICAgICAgIGtJbnQ2NEZsYWcgPSAweDEwMDAsCisgICAgICAgIGtVaW50NjRGbGFnID0gMHgyMDAw
LAorICAgICAgICBrRG91YmxlRmxhZyA9IDB4NDAwMCwKKyAgICAgICAga1N0cmluZ0ZsYWcgPSAw
eDEwMDAwMCwKKyAgICAgICAga0NvcHlGbGFnID0gMHgyMDAwMDAsCisgICAgICAgIGtJbmxpbmVT
dHJGbGFnID0gMHg0MDAwMDAsCisKKyAgICAgICAgLy8gSW5pdGlhbCBmbGFncyBvZiBkaWZmZXJl
bnQgdHlwZXMuCisgICAgICAgIGtOdWxsRmxhZyA9IGtOdWxsVHlwZSwKKyAgICAgICAga1RydWVG
bGFnID0ga1RydWVUeXBlIHwga0Jvb2xGbGFnLAorICAgICAgICBrRmFsc2VGbGFnID0ga0ZhbHNl
VHlwZSB8IGtCb29sRmxhZywKKyAgICAgICAga051bWJlckludEZsYWcgPSBrTnVtYmVyVHlwZSB8
IGtOdW1iZXJGbGFnIHwga0ludEZsYWcgfCBrSW50NjRGbGFnLAorICAgICAgICBrTnVtYmVyVWlu
dEZsYWcgPSBrTnVtYmVyVHlwZSB8IGtOdW1iZXJGbGFnIHwga1VpbnRGbGFnIHwga1VpbnQ2NEZs
YWcgfCBrSW50NjRGbGFnLAorICAgICAgICBrTnVtYmVySW50NjRGbGFnID0ga051bWJlclR5cGUg
fCBrTnVtYmVyRmxhZyB8IGtJbnQ2NEZsYWcsCisgICAgICAgIGtOdW1iZXJVaW50NjRGbGFnID0g
a051bWJlclR5cGUgfCBrTnVtYmVyRmxhZyB8IGtVaW50NjRGbGFnLAorICAgICAgICBrTnVtYmVy
RG91YmxlRmxhZyA9IGtOdW1iZXJUeXBlIHwga051bWJlckZsYWcgfCBrRG91YmxlRmxhZywKKyAg
ICAgICAga051bWJlckFueUZsYWcgPSBrTnVtYmVyVHlwZSB8IGtOdW1iZXJGbGFnIHwga0ludEZs
YWcgfCBrSW50NjRGbGFnIHwga1VpbnRGbGFnIHwga1VpbnQ2NEZsYWcgfCBrRG91YmxlRmxhZywK
KyAgICAgICAga0NvbnN0U3RyaW5nRmxhZyA9IGtTdHJpbmdUeXBlIHwga1N0cmluZ0ZsYWcsCisg
ICAgICAgIGtDb3B5U3RyaW5nRmxhZyA9IGtTdHJpbmdUeXBlIHwga1N0cmluZ0ZsYWcgfCBrQ29w
eUZsYWcsCisgICAgICAgIGtTaG9ydFN0cmluZ0ZsYWcgPSBrU3RyaW5nVHlwZSB8IGtTdHJpbmdG
bGFnIHwga0NvcHlGbGFnIHwga0lubGluZVN0ckZsYWcsCisgICAgICAgIGtPYmplY3RGbGFnID0g
a09iamVjdFR5cGUsCisgICAgICAgIGtBcnJheUZsYWcgPSBrQXJyYXlUeXBlLAorCisgICAgICAg
IGtUeXBlTWFzayA9IDB4RkYgICAgLy8gYml0d2lzZS1hbmQgd2l0aCBtYXNrIG9mIDB4RkYgY2Fu
IGJlIG9wdGltaXplZCBieSBjb21waWxlcgorICAgIH07CisKKyAgICBzdGF0aWMgY29uc3QgU2l6
ZVR5cGUga0RlZmF1bHRBcnJheUNhcGFjaXR5ID0gMTY7CisgICAgc3RhdGljIGNvbnN0IFNpemVU
eXBlIGtEZWZhdWx0T2JqZWN0Q2FwYWNpdHkgPSAxNjsKKworICAgIHN0cnVjdCBTdHJpbmcgewor
ICAgICAgICBjb25zdCBDaCogc3RyOworICAgICAgICBTaXplVHlwZSBsZW5ndGg7CisgICAgICAg
IHVuc2lnbmVkIGhhc2hjb2RlOyAgLy8hPCByZXNlcnZlZAorICAgIH07ICAvLyAxMiBieXRlcyBp
biAzMi1iaXQgbW9kZSwgMTYgYnl0ZXMgaW4gNjQtYml0IG1vZGUKKworICAgIC8vIGltcGxlbWVu
dGF0aW9uIGRldGFpbDogU2hvcnRTdHJpbmcgY2FuIHJlcHJlc2VudCB6ZXJvLXRlcm1pbmF0ZWQg
c3RyaW5ncyB1cCB0byBNYXhTaXplIGNoYXJzCisgICAgLy8gKGV4Y2x1ZGluZyB0aGUgdGVybWlu
YXRpbmcgemVybykgYW5kIHN0b3JlIGEgdmFsdWUgdG8gZGV0ZXJtaW5lIHRoZSBsZW5ndGggb2Yg
dGhlIGNvbnRhaW5lZAorICAgIC8vIHN0cmluZyBpbiB0aGUgbGFzdCBjaGFyYWN0ZXIgc3RyW0xl
blBvc10gYnkgc3RvcmluZyAiTWF4U2l6ZSAtIGxlbmd0aCIgdGhlcmUuIElmIHRoZSBzdHJpbmcK
KyAgICAvLyB0byBzdG9yZSBoYXMgdGhlIG1heGltYWwgbGVuZ3RoIG9mIE1heFNpemUgdGhlbiBz
dHJbTGVuUG9zXSB3aWxsIGJlIDAgYW5kIHRoZXJlZm9yZSBhY3QgYXMKKyAgICAvLyB0aGUgc3Ry
aW5nIHRlcm1pbmF0b3IgYXMgd2VsbC4gRm9yIGdldHRpbmcgdGhlIHN0cmluZyBsZW5ndGggYmFj
ayBmcm9tIHRoYXQgdmFsdWUganVzdCB1c2UKKyAgICAvLyAiTWF4U2l6ZSAtIHN0cltMZW5Qb3Nd
Ii4KKyAgICAvLyBUaGlzIGFsbG93cyB0byBzdG9yZSAxMS1jaGFycyBzdHJpbmdzIGluIDMyLWJp
dCBtb2RlIGFuZCAxNS1jaGFycyBzdHJpbmdzIGluIDY0LWJpdCBtb2RlCisgICAgLy8gaW5saW5l
IChmb3IgYFVURjhgLWVuY29kZWQgc3RyaW5ncykuCisgICAgc3RydWN0IFNob3J0U3RyaW5nIHsK
KyAgICAgICAgZW51bSB7IE1heENoYXJzID0gc2l6ZW9mKFN0cmluZykgLyBzaXplb2YoQ2gpLCBN
YXhTaXplID0gTWF4Q2hhcnMgLSAxLCBMZW5Qb3MgPSBNYXhTaXplIH07CisgICAgICAgIENoIHN0
cltNYXhDaGFyc107CisKKyAgICAgICAgaW5saW5lIHN0YXRpYyBib29sIFVzYWJsZShTaXplVHlw
ZSBsZW4pIHsgcmV0dXJuICAgICAgICAgICAgKE1heFNpemUgPj0gbGVuKTsgfQorICAgICAgICBp
bmxpbmUgdm9pZCAgICAgU2V0TGVuZ3RoKFNpemVUeXBlIGxlbikgeyBzdHJbTGVuUG9zXSA9IChD
aCkoTWF4U2l6ZSAtICBsZW4pOyB9CisgICAgICAgIGlubGluZSBTaXplVHlwZSBHZXRMZW5ndGgo
KSBjb25zdCAgICAgICB7IHJldHVybiAgKFNpemVUeXBlKShNYXhTaXplIC0gIHN0cltMZW5Qb3Nd
KTsgfQorICAgIH07ICAvLyBhdCBtb3N0IGFzIG1hbnkgYnl0ZXMgYXMgIlN0cmluZyIgYWJvdmUg
PT4gMTIgYnl0ZXMgaW4gMzItYml0IG1vZGUsIDE2IGJ5dGVzIGluIDY0LWJpdCBtb2RlCisKKyAg
ICAvLyBCeSB1c2luZyBwcm9wZXIgYmluYXJ5IGxheW91dCwgcmV0cmlldmFsIG9mIGRpZmZlcmVu
dCBpbnRlZ2VyIHR5cGVzIGRvIG5vdCBuZWVkIGNvbnZlcnNpb25zLgorICAgIHVuaW9uIE51bWJl
ciB7CisjaWYgUkFQSURKU09OX0VORElBTiA9PSBSQVBJREpTT05fTElUVExFRU5ESUFOCisgICAg
ICAgIHN0cnVjdCBJIHsKKyAgICAgICAgICAgIGludCBpOworICAgICAgICAgICAgY2hhciBwYWRk
aW5nWzRdOworICAgICAgICB9aTsKKyAgICAgICAgc3RydWN0IFUgeworICAgICAgICAgICAgdW5z
aWduZWQgdTsKKyAgICAgICAgICAgIGNoYXIgcGFkZGluZzJbNF07CisgICAgICAgIH11OworI2Vs
c2UKKyAgICAgICAgc3RydWN0IEkgeworICAgICAgICAgICAgY2hhciBwYWRkaW5nWzRdOworICAg
ICAgICAgICAgaW50IGk7CisgICAgICAgIH1pOworICAgICAgICBzdHJ1Y3QgVSB7CisgICAgICAg
ICAgICBjaGFyIHBhZGRpbmcyWzRdOworICAgICAgICAgICAgdW5zaWduZWQgdTsKKyAgICAgICAg
fXU7CisjZW5kaWYKKyAgICAgICAgaW50NjRfdCBpNjQ7CisgICAgICAgIHVpbnQ2NF90IHU2NDsK
KyAgICAgICAgZG91YmxlIGQ7CisgICAgfTsgIC8vIDggYnl0ZXMKKworICAgIHN0cnVjdCBPYmpl
Y3QgeworICAgICAgICBNZW1iZXIqIG1lbWJlcnM7CisgICAgICAgIFNpemVUeXBlIHNpemU7Cisg
ICAgICAgIFNpemVUeXBlIGNhcGFjaXR5OworICAgIH07ICAvLyAxMiBieXRlcyBpbiAzMi1iaXQg
bW9kZSwgMTYgYnl0ZXMgaW4gNjQtYml0IG1vZGUKKworICAgIHN0cnVjdCBBcnJheSB7CisgICAg
ICAgIEdlbmVyaWNWYWx1ZSogZWxlbWVudHM7CisgICAgICAgIFNpemVUeXBlIHNpemU7CisgICAg
ICAgIFNpemVUeXBlIGNhcGFjaXR5OworICAgIH07ICAvLyAxMiBieXRlcyBpbiAzMi1iaXQgbW9k
ZSwgMTYgYnl0ZXMgaW4gNjQtYml0IG1vZGUKKworICAgIHVuaW9uIERhdGEgeworICAgICAgICBT
dHJpbmcgczsKKyAgICAgICAgU2hvcnRTdHJpbmcgc3M7CisgICAgICAgIE51bWJlciBuOworICAg
ICAgICBPYmplY3QgbzsKKyAgICAgICAgQXJyYXkgYTsKKyAgICB9OyAgLy8gMTIgYnl0ZXMgaW4g
MzItYml0IG1vZGUsIDE2IGJ5dGVzIGluIDY0LWJpdCBtb2RlCisKKyAgICAvLyBJbml0aWFsaXpl
IHRoaXMgdmFsdWUgYXMgYXJyYXkgd2l0aCBpbml0aWFsIGRhdGEsIHdpdGhvdXQgY2FsbGluZyBk
ZXN0cnVjdG9yLgorICAgIHZvaWQgU2V0QXJyYXlSYXcoR2VuZXJpY1ZhbHVlKiB2YWx1ZXMsIFNp
emVUeXBlIGNvdW50LCBBbGxvY2F0b3ImIGFsbG9jYXRvcikgeworICAgICAgICBmbGFnc18gPSBr
QXJyYXlGbGFnOworICAgICAgICBkYXRhXy5hLmVsZW1lbnRzID0gKEdlbmVyaWNWYWx1ZSopYWxs
b2NhdG9yLk1hbGxvYyhjb3VudCAqIHNpemVvZihHZW5lcmljVmFsdWUpKTsKKyAgICAgICAgc3Rk
OjptZW1jcHkoZGF0YV8uYS5lbGVtZW50cywgdmFsdWVzLCBjb3VudCAqIHNpemVvZihHZW5lcmlj
VmFsdWUpKTsKKyAgICAgICAgZGF0YV8uYS5zaXplID0gZGF0YV8uYS5jYXBhY2l0eSA9IGNvdW50
OworICAgIH0KKworICAgIC8vISBJbml0aWFsaXplIHRoaXMgdmFsdWUgYXMgb2JqZWN0IHdpdGgg
aW5pdGlhbCBkYXRhLCB3aXRob3V0IGNhbGxpbmcgZGVzdHJ1Y3Rvci4KKyAgICB2b2lkIFNldE9i
amVjdFJhdyhNZW1iZXIqIG1lbWJlcnMsIFNpemVUeXBlIGNvdW50LCBBbGxvY2F0b3ImIGFsbG9j
YXRvcikgeworICAgICAgICBmbGFnc18gPSBrT2JqZWN0RmxhZzsKKyAgICAgICAgZGF0YV8uby5t
ZW1iZXJzID0gKE1lbWJlciopYWxsb2NhdG9yLk1hbGxvYyhjb3VudCAqIHNpemVvZihNZW1iZXIp
KTsKKyAgICAgICAgc3RkOjptZW1jcHkoZGF0YV8uby5tZW1iZXJzLCBtZW1iZXJzLCBjb3VudCAq
IHNpemVvZihNZW1iZXIpKTsKKyAgICAgICAgZGF0YV8uby5zaXplID0gZGF0YV8uby5jYXBhY2l0
eSA9IGNvdW50OworICAgIH0KKworICAgIC8vISBJbml0aWFsaXplIHRoaXMgdmFsdWUgYXMgY29u
c3RhbnQgc3RyaW5nLCB3aXRob3V0IGNhbGxpbmcgZGVzdHJ1Y3Rvci4KKyAgICB2b2lkIFNldFN0
cmluZ1JhdyhTdHJpbmdSZWZUeXBlIHMpIFJBUElESlNPTl9OT0VYQ0VQVCB7CisgICAgICAgIGZs
YWdzXyA9IGtDb25zdFN0cmluZ0ZsYWc7CisgICAgICAgIGRhdGFfLnMuc3RyID0gczsKKyAgICAg
ICAgZGF0YV8ucy5sZW5ndGggPSBzLmxlbmd0aDsKKyAgICB9CisKKyAgICAvLyEgSW5pdGlhbGl6
ZSB0aGlzIHZhbHVlIGFzIGNvcHkgc3RyaW5nIHdpdGggaW5pdGlhbCBkYXRhLCB3aXRob3V0IGNh
bGxpbmcgZGVzdHJ1Y3Rvci4KKyAgICB2b2lkIFNldFN0cmluZ1JhdyhTdHJpbmdSZWZUeXBlIHMs
IEFsbG9jYXRvciYgYWxsb2NhdG9yKSB7CisgICAgICAgIENoKiBzdHIgPSBOVUxMOworICAgICAg
ICBpZihTaG9ydFN0cmluZzo6VXNhYmxlKHMubGVuZ3RoKSkgeworICAgICAgICAgICAgZmxhZ3Nf
ID0ga1Nob3J0U3RyaW5nRmxhZzsKKyAgICAgICAgICAgIGRhdGFfLnNzLlNldExlbmd0aChzLmxl
bmd0aCk7CisgICAgICAgICAgICBzdHIgPSBkYXRhXy5zcy5zdHI7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBmbGFnc18gPSBrQ29weVN0cmluZ0ZsYWc7CisgICAgICAgICAgICBkYXRh
Xy5zLmxlbmd0aCA9IHMubGVuZ3RoOworICAgICAgICAgICAgc3RyID0gKENoICopYWxsb2NhdG9y
Lk1hbGxvYygocy5sZW5ndGggKyAxKSAqIHNpemVvZihDaCkpOworICAgICAgICAgICAgZGF0YV8u
cy5zdHIgPSBzdHI7CisgICAgICAgIH0KKyAgICAgICAgc3RkOjptZW1jcHkoc3RyLCBzLCBzLmxl
bmd0aCAqIHNpemVvZihDaCkpOworICAgICAgICBzdHJbcy5sZW5ndGhdID0gJ1wwJzsKKyAgICB9
CisKKyAgICAvLyEgQXNzaWdubWVudCB3aXRob3V0IGNhbGxpbmcgZGVzdHJ1Y3RvcgorICAgIHZv
aWQgUmF3QXNzaWduKEdlbmVyaWNWYWx1ZSYgcmhzKSBSQVBJREpTT05fTk9FWENFUFQgeworICAg
ICAgICBkYXRhXyA9IHJocy5kYXRhXzsKKyAgICAgICAgZmxhZ3NfID0gcmhzLmZsYWdzXzsKKyAg
ICAgICAgcmhzLmZsYWdzXyA9IGtOdWxsRmxhZzsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgU291cmNlQWxsb2NhdG9yPgorICAgIGJvb2wgU3RyaW5nRXF1YWwoY29uc3QgR2VuZXJp
Y1ZhbHVlPEVuY29kaW5nLCBTb3VyY2VBbGxvY2F0b3I+JiByaHMpIGNvbnN0IHsKKyAgICAgICAg
UkFQSURKU09OX0FTU0VSVChJc1N0cmluZygpKTsKKyAgICAgICAgUkFQSURKU09OX0FTU0VSVChy
aHMuSXNTdHJpbmcoKSk7CisKKyAgICAgICAgY29uc3QgU2l6ZVR5cGUgbGVuMSA9IEdldFN0cmlu
Z0xlbmd0aCgpOworICAgICAgICBjb25zdCBTaXplVHlwZSBsZW4yID0gcmhzLkdldFN0cmluZ0xl
bmd0aCgpOworICAgICAgICBpZihsZW4xICE9IGxlbjIpIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAg
ICAgICAgY29uc3QgQ2gqIGNvbnN0IHN0cjEgPSBHZXRTdHJpbmcoKTsKKyAgICAgICAgY29uc3Qg
Q2gqIGNvbnN0IHN0cjIgPSByaHMuR2V0U3RyaW5nKCk7CisgICAgICAgIGlmKHN0cjEgPT0gc3Ry
MikgeyByZXR1cm4gdHJ1ZTsgfSAvLyBmYXN0IHBhdGggZm9yIGNvbnN0YW50IHN0cmluZworCisg
ICAgICAgIHJldHVybiAoc3RkOjptZW1jbXAoc3RyMSwgc3RyMiwgc2l6ZW9mKENoKSAqIGxlbjEp
ID09IDApOworICAgIH0KKworICAgIERhdGEgZGF0YV87CisgICAgdW5zaWduZWQgZmxhZ3NfOwor
fTsKKworLy8hIEdlbmVyaWNWYWx1ZSB3aXRoIFVURjggZW5jb2RpbmcKK3R5cGVkZWYgR2VuZXJp
Y1ZhbHVlPFVURjg8PiA+IFZhbHVlOworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBHZW5l
cmljRG9jdW1lbnQgCisKKy8vISBBIGRvY3VtZW50IGZvciBwYXJzaW5nIEpTT04gdGV4dCBhcyBE
T00uCisvKiEKKyAgICBcbm90ZSBpbXBsZW1lbnRzIEhhbmRsZXIgY29uY2VwdAorICAgIFx0cGFy
YW0gRW5jb2RpbmcgRW5jb2RpbmcgZm9yIGJvdGggcGFyc2luZyBhbmQgc3RyaW5nIHN0b3JhZ2Uu
CisgICAgXHRwYXJhbSBBbGxvY2F0b3IgQWxsb2NhdG9yIGZvciBhbGxvY2F0aW5nIG1lbW9yeSBm
b3IgdGhlIERPTQorICAgIFx0cGFyYW0gU3RhY2tBbGxvY2F0b3IgQWxsb2NhdG9yIGZvciBhbGxv
Y2F0aW5nIG1lbW9yeSBmb3Igc3RhY2sgZHVyaW5nIHBhcnNpbmcuCisgICAgXHdhcm5pbmcgQWx0
aG91Z2ggR2VuZXJpY0RvY3VtZW50IGluaGVyaXRzIGZyb20gR2VuZXJpY1ZhbHVlLCB0aGUgQVBJ
IGRvZXMgXGIgbm90IHByb3ZpZGUgYW55IHZpcnR1YWwgZnVuY3Rpb25zLCBlc3BlY2lhbGx5IG5v
IHZpcnR1YWwgZGVzdHJ1Y3Rvci4gIFRvIGF2b2lkIG1lbW9yeSBsZWFrcywgZG8gbm90IFxjIGRl
bGV0ZSBhIEdlbmVyaWNEb2N1bWVudCBvYmplY3QgdmlhIGEgcG9pbnRlciB0byBhIEdlbmVyaWNW
YWx1ZS4KKyovCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRW5jb2RpbmcsIHR5cGVuYW1lIEFsbG9jYXRv
ciA9IE1lbW9yeVBvb2xBbGxvY2F0b3I8PiwgdHlwZW5hbWUgU3RhY2tBbGxvY2F0b3IgPSBDcnRB
bGxvY2F0b3I+CitjbGFzcyBHZW5lcmljRG9jdW1lbnQgOiBwdWJsaWMgR2VuZXJpY1ZhbHVlPEVu
Y29kaW5nLCBBbGxvY2F0b3I+IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHR5cGVuYW1lIEVuY29k
aW5nOjpDaCBDaDsgICAgICAgICAgICAgICAgICAgICAgIC8vITwgQ2hhcmFjdGVyIHR5cGUgZGVy
aXZlZCBmcm9tIEVuY29kaW5nLgorICAgIHR5cGVkZWYgR2VuZXJpY1ZhbHVlPEVuY29kaW5nLCBB
bGxvY2F0b3I+IFZhbHVlVHlwZTsgICAgLy8hPCBWYWx1ZSB0eXBlIG9mIHRoZSBkb2N1bWVudC4K
KyAgICB0eXBlZGVmIEFsbG9jYXRvciBBbGxvY2F0b3JUeXBlOyAgICAgICAgICAgICAgICAgICAg
ICAgIC8vITwgQWxsb2NhdG9yIHR5cGUgZnJvbSB0ZW1wbGF0ZSBwYXJhbWV0ZXIuCisKKyAgICAv
LyEgQ29uc3RydWN0b3IKKyAgICAvKiEgXHBhcmFtIGFsbG9jYXRvciAgICAgICAgT3B0aW9uYWwg
YWxsb2NhdG9yIGZvciBhbGxvY2F0aW5nIG1lbW9yeS4KKyAgICAgICAgXHBhcmFtIHN0YWNrQ2Fw
YWNpdHkgICAgT3B0aW9uYWwgaW5pdGlhbCBjYXBhY2l0eSBvZiBzdGFjayBpbiBieXRlcy4KKyAg
ICAgICAgXHBhcmFtIHN0YWNrQWxsb2NhdG9yICAgT3B0aW9uYWwgYWxsb2NhdG9yIGZvciBhbGxv
Y2F0aW5nIG1lbW9yeSBmb3Igc3RhY2suCisgICAgKi8KKyAgICBHZW5lcmljRG9jdW1lbnQoQWxs
b2NhdG9yKiBhbGxvY2F0b3IgPSAwLCBzaXplX3Qgc3RhY2tDYXBhY2l0eSA9IGtEZWZhdWx0U3Rh
Y2tDYXBhY2l0eSwgU3RhY2tBbGxvY2F0b3IqIHN0YWNrQWxsb2NhdG9yID0gMCkgOiAKKyAgICAg
ICAgYWxsb2NhdG9yXyhhbGxvY2F0b3IpLCBvd25BbGxvY2F0b3JfKDApLCBzdGFja18oc3RhY2tB
bGxvY2F0b3IsIHN0YWNrQ2FwYWNpdHkpLCBwYXJzZVJlc3VsdF8oKQorICAgIHsKKyAgICAgICAg
aWYgKCFhbGxvY2F0b3JfKQorICAgICAgICAgICAgb3duQWxsb2NhdG9yXyA9IGFsbG9jYXRvcl8g
PSBSQVBJREpTT05fTkVXKEFsbG9jYXRvcigpKTsKKyAgICB9CisKKyNpZiBSQVBJREpTT05fSEFT
X0NYWDExX1JWQUxVRV9SRUZTCisgICAgLy8hIE1vdmUgY29uc3RydWN0b3IgaW4gQysrMTEKKyAg
ICBHZW5lcmljRG9jdW1lbnQoR2VuZXJpY0RvY3VtZW50JiYgcmhzKSBSQVBJREpTT05fTk9FWENF
UFQKKyAgICAgICAgOiBWYWx1ZVR5cGUoc3RkOjptb3ZlKHJocykpLAorICAgICAgICAgIGFsbG9j
YXRvcl8ocmhzLmFsbG9jYXRvcl8pLAorICAgICAgICAgIG93bkFsbG9jYXRvcl8ocmhzLm93bkFs
bG9jYXRvcl8pLAorICAgICAgICAgIHN0YWNrXyhzdGQ6Om1vdmUocmhzLnN0YWNrXykpLAorICAg
ICAgICAgIHBhcnNlUmVzdWx0XyhyaHMucGFyc2VSZXN1bHRfKQorICAgIHsKKyAgICAgICAgcmhz
LmFsbG9jYXRvcl8gPSAwOworICAgICAgICByaHMub3duQWxsb2NhdG9yXyA9IDA7CisgICAgICAg
IHJocy5wYXJzZVJlc3VsdF8gPSBQYXJzZVJlc3VsdCgpOworICAgIH0KKyNlbmRpZgorCisgICAg
fkdlbmVyaWNEb2N1bWVudCgpIHsKKyAgICAgICAgRGVzdHJveSgpOworICAgIH0KKworI2lmIFJB
UElESlNPTl9IQVNfQ1hYMTFfUlZBTFVFX1JFRlMKKyAgICAvLyEgTW92ZSBhc3NpZ25tZW50IGlu
IEMrKzExCisgICAgR2VuZXJpY0RvY3VtZW50JiBvcGVyYXRvcj0oR2VuZXJpY0RvY3VtZW50JiYg
cmhzKSBSQVBJREpTT05fTk9FWENFUFQKKyAgICB7CisgICAgICAgIC8vIFRoZSBjYXN0IHRvIFZh
bHVlVHlwZSBpcyBuZWNlc3NhcnkgaGVyZSwgYmVjYXVzZSBvdGhlcndpc2UgaXQgd291bGQKKyAg
ICAgICAgLy8gYXR0ZW1wdCB0byBjYWxsIEdlbmVyaWNWYWx1ZSdzIHRlbXBsYXRlZCBhc3NpZ25t
ZW50IG9wZXJhdG9yLgorICAgICAgICBWYWx1ZVR5cGU6Om9wZXJhdG9yPShzdGQ6OmZvcndhcmQ8
VmFsdWVUeXBlPihyaHMpKTsKKworICAgICAgICAvLyBDYWxsaW5nIHRoZSBkZXN0cnVjdG9yIGhl
cmUgd291bGQgcHJlbWF0dXJlbHkgY2FsbCBzdGFja18ncyBkZXN0cnVjdG9yCisgICAgICAgIERl
c3Ryb3koKTsKKworICAgICAgICBhbGxvY2F0b3JfID0gcmhzLmFsbG9jYXRvcl87CisgICAgICAg
IG93bkFsbG9jYXRvcl8gPSByaHMub3duQWxsb2NhdG9yXzsKKyAgICAgICAgc3RhY2tfID0gc3Rk
Ojptb3ZlKHJocy5zdGFja18pOworICAgICAgICBwYXJzZVJlc3VsdF8gPSByaHMucGFyc2VSZXN1
bHRfOworCisgICAgICAgIHJocy5hbGxvY2F0b3JfID0gMDsKKyAgICAgICAgcmhzLm93bkFsbG9j
YXRvcl8gPSAwOworICAgICAgICByaHMucGFyc2VSZXN1bHRfID0gUGFyc2VSZXN1bHQoKTsKKwor
ICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorI2VuZGlmCisKKyAgICAvLyFAbmFtZSBQYXJz
ZSBmcm9tIHN0cmVhbQorICAgIC8vIUB7CisKKyAgICAvLyEgUGFyc2UgSlNPTiB0ZXh0IGZyb20g
YW4gaW5wdXQgc3RyZWFtICh3aXRoIEVuY29kaW5nIGNvbnZlcnNpb24pCisgICAgLyohIFx0cGFy
YW0gcGFyc2VGbGFncyBDb21iaW5hdGlvbiBvZiBccmVmIFBhcnNlRmxhZy4KKyAgICAgICAgXHRw
YXJhbSBTb3VyY2VFbmNvZGluZyBFbmNvZGluZyBvZiBpbnB1dCBzdHJlYW0KKyAgICAgICAgXHRw
YXJhbSBJbnB1dFN0cmVhbSBUeXBlIG9mIGlucHV0IHN0cmVhbSwgaW1wbGVtZW50aW5nIFN0cmVh
bSBjb25jZXB0CisgICAgICAgIFxwYXJhbSBpcyBJbnB1dCBzdHJlYW0gdG8gYmUgcGFyc2VkLgor
ICAgICAgICBccmV0dXJuIFRoZSBkb2N1bWVudCBpdHNlbGYgZm9yIGZsdWVudCBBUEkuCisgICAg
Ki8KKyAgICB0ZW1wbGF0ZSA8dW5zaWduZWQgcGFyc2VGbGFncywgdHlwZW5hbWUgU291cmNlRW5j
b2RpbmcsIHR5cGVuYW1lIElucHV0U3RyZWFtPgorICAgIEdlbmVyaWNEb2N1bWVudCYgUGFyc2VT
dHJlYW0oSW5wdXRTdHJlYW0mIGlzKSB7CisgICAgICAgIFZhbHVlVHlwZTo6U2V0TnVsbCgpOyAv
LyBSZW1vdmUgZXhpc3Rpbmcgcm9vdCBpZiBleGlzdAorICAgICAgICBHZW5lcmljUmVhZGVyPFNv
dXJjZUVuY29kaW5nLCBFbmNvZGluZywgQWxsb2NhdG9yPiByZWFkZXIoJkdldEFsbG9jYXRvcigp
KTsKKyAgICAgICAgQ2xlYXJTdGFja09uRXhpdCBzY29wZSgqdGhpcyk7CisgICAgICAgIHBhcnNl
UmVzdWx0XyA9IHJlYWRlci50ZW1wbGF0ZSBQYXJzZTxwYXJzZUZsYWdzPihpcywgKnRoaXMpOwor
ICAgICAgICBpZiAocGFyc2VSZXN1bHRfKSB7CisgICAgICAgICAgICBSQVBJREpTT05fQVNTRVJU
KHN0YWNrXy5HZXRTaXplKCkgPT0gc2l6ZW9mKFZhbHVlVHlwZSkpOyAvLyBHb3Qgb25lIGFuZCBv
bmx5IG9uZSByb290IG9iamVjdAorICAgICAgICAgICAgdGhpcy0+UmF3QXNzaWduKCpzdGFja18u
dGVtcGxhdGUgUG9wPFZhbHVlVHlwZT4oMSkpOyAgICAvLyBBZGQgdGhpcy0+IHRvIHByZXZlbnQg
aXNzdWUgMTMuCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAg
IC8vISBQYXJzZSBKU09OIHRleHQgZnJvbSBhbiBpbnB1dCBzdHJlYW0KKyAgICAvKiEgXHRwYXJh
bSBwYXJzZUZsYWdzIENvbWJpbmF0aW9uIG9mIFxyZWYgUGFyc2VGbGFnLgorICAgICAgICBcdHBh
cmFtIElucHV0U3RyZWFtIFR5cGUgb2YgaW5wdXQgc3RyZWFtLCBpbXBsZW1lbnRpbmcgU3RyZWFt
IGNvbmNlcHQKKyAgICAgICAgXHBhcmFtIGlzIElucHV0IHN0cmVhbSB0byBiZSBwYXJzZWQuCisg
ICAgICAgIFxyZXR1cm4gVGhlIGRvY3VtZW50IGl0c2VsZiBmb3IgZmx1ZW50IEFQSS4KKyAgICAq
LworICAgIHRlbXBsYXRlIDx1bnNpZ25lZCBwYXJzZUZsYWdzLCB0eXBlbmFtZSBJbnB1dFN0cmVh
bT4KKyAgICBHZW5lcmljRG9jdW1lbnQmIFBhcnNlU3RyZWFtKElucHV0U3RyZWFtJiBpcykgewor
ICAgICAgICByZXR1cm4gUGFyc2VTdHJlYW08cGFyc2VGbGFncyxFbmNvZGluZyxJbnB1dFN0cmVh
bT4oaXMpOworICAgIH0KKworICAgIC8vISBQYXJzZSBKU09OIHRleHQgZnJvbSBhbiBpbnB1dCBz
dHJlYW0gKHdpdGggXHJlZiBrUGFyc2VEZWZhdWx0RmxhZ3MpCisgICAgLyohIFx0cGFyYW0gSW5w
dXRTdHJlYW0gVHlwZSBvZiBpbnB1dCBzdHJlYW0sIGltcGxlbWVudGluZyBTdHJlYW0gY29uY2Vw
dAorICAgICAgICBccGFyYW0gaXMgSW5wdXQgc3RyZWFtIHRvIGJlIHBhcnNlZC4KKyAgICAgICAg
XHJldHVybiBUaGUgZG9jdW1lbnQgaXRzZWxmIGZvciBmbHVlbnQgQVBJLgorICAgICovCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIElucHV0U3RyZWFtPgorICAgIEdlbmVyaWNEb2N1bWVudCYgUGFy
c2VTdHJlYW0oSW5wdXRTdHJlYW0mIGlzKSB7CisgICAgICAgIHJldHVybiBQYXJzZVN0cmVhbTxr
UGFyc2VEZWZhdWx0RmxhZ3MsIEVuY29kaW5nLCBJbnB1dFN0cmVhbT4oaXMpOworICAgIH0KKyAg
ICAvLyFAfQorCisgICAgLy8hQG5hbWUgUGFyc2UgaW4tcGxhY2UgZnJvbSBtdXRhYmxlIHN0cmlu
ZworICAgIC8vIUB7CisKKyAgICAvLyEgUGFyc2UgSlNPTiB0ZXh0IGZyb20gYSBtdXRhYmxlIHN0
cmluZyAod2l0aCBFbmNvZGluZyBjb252ZXJzaW9uKQorICAgIC8qISBcdHBhcmFtIHBhcnNlRmxh
Z3MgQ29tYmluYXRpb24gb2YgXHJlZiBQYXJzZUZsYWcuCisgICAgICAgIFx0cGFyYW0gU291cmNl
RW5jb2RpbmcgVHJhbnNjb2RpbmcgZnJvbSBpbnB1dCBFbmNvZGluZworICAgICAgICBccGFyYW0g
c3RyIE11dGFibGUgemVyby10ZXJtaW5hdGVkIHN0cmluZyB0byBiZSBwYXJzZWQuCisgICAgICAg
IFxyZXR1cm4gVGhlIGRvY3VtZW50IGl0c2VsZiBmb3IgZmx1ZW50IEFQSS4KKyAgICAqLworICAg
IHRlbXBsYXRlIDx1bnNpZ25lZCBwYXJzZUZsYWdzLCB0eXBlbmFtZSBTb3VyY2VFbmNvZGluZz4K
KyAgICBHZW5lcmljRG9jdW1lbnQmIFBhcnNlSW5zaXR1KENoKiBzdHIpIHsKKyAgICAgICAgR2Vu
ZXJpY0luc2l0dVN0cmluZ1N0cmVhbTxFbmNvZGluZz4gcyhzdHIpOworICAgICAgICByZXR1cm4g
UGFyc2VTdHJlYW08cGFyc2VGbGFncyB8IGtQYXJzZUluc2l0dUZsYWcsIFNvdXJjZUVuY29kaW5n
PihzKTsKKyAgICB9CisKKyAgICAvLyEgUGFyc2UgSlNPTiB0ZXh0IGZyb20gYSBtdXRhYmxlIHN0
cmluZworICAgIC8qISBcdHBhcmFtIHBhcnNlRmxhZ3MgQ29tYmluYXRpb24gb2YgXHJlZiBQYXJz
ZUZsYWcuCisgICAgICAgIFxwYXJhbSBzdHIgTXV0YWJsZSB6ZXJvLXRlcm1pbmF0ZWQgc3RyaW5n
IHRvIGJlIHBhcnNlZC4KKyAgICAgICAgXHJldHVybiBUaGUgZG9jdW1lbnQgaXRzZWxmIGZvciBm
bHVlbnQgQVBJLgorICAgICovCisgICAgdGVtcGxhdGUgPHVuc2lnbmVkIHBhcnNlRmxhZ3M+Cisg
ICAgR2VuZXJpY0RvY3VtZW50JiBQYXJzZUluc2l0dShDaCogc3RyKSB7CisgICAgICAgIHJldHVy
biBQYXJzZUluc2l0dTxwYXJzZUZsYWdzLCBFbmNvZGluZz4oc3RyKTsKKyAgICB9CisKKyAgICAv
LyEgUGFyc2UgSlNPTiB0ZXh0IGZyb20gYSBtdXRhYmxlIHN0cmluZyAod2l0aCBccmVmIGtQYXJz
ZURlZmF1bHRGbGFncykKKyAgICAvKiEgXHBhcmFtIHN0ciBNdXRhYmxlIHplcm8tdGVybWluYXRl
ZCBzdHJpbmcgdG8gYmUgcGFyc2VkLgorICAgICAgICBccmV0dXJuIFRoZSBkb2N1bWVudCBpdHNl
bGYgZm9yIGZsdWVudCBBUEkuCisgICAgKi8KKyAgICBHZW5lcmljRG9jdW1lbnQmIFBhcnNlSW5z
aXR1KENoKiBzdHIpIHsKKyAgICAgICAgcmV0dXJuIFBhcnNlSW5zaXR1PGtQYXJzZURlZmF1bHRG
bGFncywgRW5jb2Rpbmc+KHN0cik7CisgICAgfQorICAgIC8vIUB9CisKKyAgICAvLyFAbmFtZSBQ
YXJzZSBmcm9tIHJlYWQtb25seSBzdHJpbmcKKyAgICAvLyFAeworCisgICAgLy8hIFBhcnNlIEpT
T04gdGV4dCBmcm9tIGEgcmVhZC1vbmx5IHN0cmluZyAod2l0aCBFbmNvZGluZyBjb252ZXJzaW9u
KQorICAgIC8qISBcdHBhcmFtIHBhcnNlRmxhZ3MgQ29tYmluYXRpb24gb2YgXHJlZiBQYXJzZUZs
YWcgKG11c3Qgbm90IGNvbnRhaW4gXHJlZiBrUGFyc2VJbnNpdHVGbGFnKS4KKyAgICAgICAgXHRw
YXJhbSBTb3VyY2VFbmNvZGluZyBUcmFuc2NvZGluZyBmcm9tIGlucHV0IEVuY29kaW5nCisgICAg
ICAgIFxwYXJhbSBzdHIgUmVhZC1vbmx5IHplcm8tdGVybWluYXRlZCBzdHJpbmcgdG8gYmUgcGFy
c2VkLgorICAgICovCisgICAgdGVtcGxhdGUgPHVuc2lnbmVkIHBhcnNlRmxhZ3MsIHR5cGVuYW1l
IFNvdXJjZUVuY29kaW5nPgorICAgIEdlbmVyaWNEb2N1bWVudCYgUGFyc2UoY29uc3QgQ2gqIHN0
cikgeworICAgICAgICBSQVBJREpTT05fQVNTRVJUKCEocGFyc2VGbGFncyAmIGtQYXJzZUluc2l0
dUZsYWcpKTsKKyAgICAgICAgR2VuZXJpY1N0cmluZ1N0cmVhbTxTb3VyY2VFbmNvZGluZz4gcyhz
dHIpOworICAgICAgICByZXR1cm4gUGFyc2VTdHJlYW08cGFyc2VGbGFncywgU291cmNlRW5jb2Rp
bmc+KHMpOworICAgIH0KKworICAgIC8vISBQYXJzZSBKU09OIHRleHQgZnJvbSBhIHJlYWQtb25s
eSBzdHJpbmcKKyAgICAvKiEgXHRwYXJhbSBwYXJzZUZsYWdzIENvbWJpbmF0aW9uIG9mIFxyZWYg
UGFyc2VGbGFnIChtdXN0IG5vdCBjb250YWluIFxyZWYga1BhcnNlSW5zaXR1RmxhZykuCisgICAg
ICAgIFxwYXJhbSBzdHIgUmVhZC1vbmx5IHplcm8tdGVybWluYXRlZCBzdHJpbmcgdG8gYmUgcGFy
c2VkLgorICAgICovCisgICAgdGVtcGxhdGUgPHVuc2lnbmVkIHBhcnNlRmxhZ3M+CisgICAgR2Vu
ZXJpY0RvY3VtZW50JiBQYXJzZShjb25zdCBDaCogc3RyKSB7CisgICAgICAgIHJldHVybiBQYXJz
ZTxwYXJzZUZsYWdzLCBFbmNvZGluZz4oc3RyKTsKKyAgICB9CisKKyAgICAvLyEgUGFyc2UgSlNP
TiB0ZXh0IGZyb20gYSByZWFkLW9ubHkgc3RyaW5nICh3aXRoIFxyZWYga1BhcnNlRGVmYXVsdEZs
YWdzKQorICAgIC8qISBccGFyYW0gc3RyIFJlYWQtb25seSB6ZXJvLXRlcm1pbmF0ZWQgc3RyaW5n
IHRvIGJlIHBhcnNlZC4KKyAgICAqLworICAgIEdlbmVyaWNEb2N1bWVudCYgUGFyc2UoY29uc3Qg
Q2gqIHN0cikgeworICAgICAgICByZXR1cm4gUGFyc2U8a1BhcnNlRGVmYXVsdEZsYWdzPihzdHIp
OworICAgIH0KKyAgICAvLyFAfQorCisgICAgLy8hQG5hbWUgSGFuZGxpbmcgcGFyc2UgZXJyb3Jz
CisgICAgLy8hQHsKKworICAgIC8vISBXaGV0aGVyIGEgcGFyc2UgZXJyb3IgaGFzIG9jY3VyZWQg
aW4gdGhlIGxhc3QgcGFyc2luZy4KKyAgICBib29sIEhhc1BhcnNlRXJyb3IoKSBjb25zdCB7IHJl
dHVybiBwYXJzZVJlc3VsdF8uSXNFcnJvcigpOyB9CisKKyAgICAvLyEgR2V0IHRoZSBccmVmIFBh
cnNlRXJyb3JDb2RlIG9mIGxhc3QgcGFyc2luZy4KKyAgICBQYXJzZUVycm9yQ29kZSBHZXRQYXJz
ZUVycm9yKCkgY29uc3QgeyByZXR1cm4gcGFyc2VSZXN1bHRfLkNvZGUoKTsgfQorCisgICAgLy8h
IEdldCB0aGUgcG9zaXRpb24gb2YgbGFzdCBwYXJzaW5nIGVycm9yIGluIGlucHV0LCAwIG90aGVy
d2lzZS4KKyAgICBzaXplX3QgR2V0RXJyb3JPZmZzZXQoKSBjb25zdCB7IHJldHVybiBwYXJzZVJl
c3VsdF8uT2Zmc2V0KCk7IH0KKworICAgIC8vIUB9CisKKyAgICAvLyEgR2V0IHRoZSBhbGxvY2F0
b3Igb2YgdGhpcyBkb2N1bWVudC4KKyAgICBBbGxvY2F0b3ImIEdldEFsbG9jYXRvcigpIHsgcmV0
dXJuICphbGxvY2F0b3JfOyB9CisKKyAgICAvLyEgR2V0IHRoZSBjYXBhY2l0eSBvZiBzdGFjayBp
biBieXRlcy4KKyAgICBzaXplX3QgR2V0U3RhY2tDYXBhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIHN0
YWNrXy5HZXRDYXBhY2l0eSgpOyB9CisKK3ByaXZhdGU6CisgICAgLy8gY2xlYXIgc3RhY2sgb24g
YW55IGV4aXQgZnJvbSBQYXJzZVN0cmVhbSwgZS5nLiBkdWUgdG8gZXhjZXB0aW9uCisgICAgc3Ry
dWN0IENsZWFyU3RhY2tPbkV4aXQgeworICAgICAgICBleHBsaWNpdCBDbGVhclN0YWNrT25FeGl0
KEdlbmVyaWNEb2N1bWVudCYgZCkgOiBkXyhkKSB7fQorICAgICAgICB+Q2xlYXJTdGFja09uRXhp
dCgpIHsgZF8uQ2xlYXJTdGFjaygpOyB9CisgICAgcHJpdmF0ZToKKyAgICAgICAgQ2xlYXJTdGFj
a09uRXhpdChjb25zdCBDbGVhclN0YWNrT25FeGl0Jik7CisgICAgICAgIENsZWFyU3RhY2tPbkV4
aXQmIG9wZXJhdG9yPShjb25zdCBDbGVhclN0YWNrT25FeGl0Jik7CisgICAgICAgIEdlbmVyaWNE
b2N1bWVudCYgZF87CisgICAgfTsKKworICAgIC8vIGNhbGxlcnMgb2YgdGhlIGZvbGxvd2luZyBw
cml2YXRlIEhhbmRsZXIgZnVuY3Rpb25zCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLHR5cGVuYW1l
LHR5cGVuYW1lPiBmcmllbmQgY2xhc3MgR2VuZXJpY1JlYWRlcjsgLy8gZm9yIHBhcnNpbmcKKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUsIHR5cGVuYW1lPiBmcmllbmQgY2xhc3MgR2VuZXJpY1ZhbHVl
OyAvLyBmb3IgZGVlcCBjb3B5aW5nCisKKyAgICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBIYW5kbGVy
CisgICAgYm9vbCBOdWxsKCkgeyBuZXcgKHN0YWNrXy50ZW1wbGF0ZSBQdXNoPFZhbHVlVHlwZT4o
KSkgVmFsdWVUeXBlKCk7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBCb29sKGJvb2wgYikgeyBu
ZXcgKHN0YWNrXy50ZW1wbGF0ZSBQdXNoPFZhbHVlVHlwZT4oKSkgVmFsdWVUeXBlKGIpOyByZXR1
cm4gdHJ1ZTsgfQorICAgIGJvb2wgSW50KGludCBpKSB7IG5ldyAoc3RhY2tfLnRlbXBsYXRlIFB1
c2g8VmFsdWVUeXBlPigpKSBWYWx1ZVR5cGUoaSk7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBV
aW50KHVuc2lnbmVkIGkpIHsgbmV3IChzdGFja18udGVtcGxhdGUgUHVzaDxWYWx1ZVR5cGU+KCkp
IFZhbHVlVHlwZShpKTsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIEludDY0KGludDY0X3QgaSkg
eyBuZXcgKHN0YWNrXy50ZW1wbGF0ZSBQdXNoPFZhbHVlVHlwZT4oKSkgVmFsdWVUeXBlKGkpOyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgVWludDY0KHVpbnQ2NF90IGkpIHsgbmV3IChzdGFja18u
dGVtcGxhdGUgUHVzaDxWYWx1ZVR5cGU+KCkpIFZhbHVlVHlwZShpKTsgcmV0dXJuIHRydWU7IH0K
KyAgICBib29sIERvdWJsZShkb3VibGUgZCkgeyBuZXcgKHN0YWNrXy50ZW1wbGF0ZSBQdXNoPFZh
bHVlVHlwZT4oKSkgVmFsdWVUeXBlKGQpOyByZXR1cm4gdHJ1ZTsgfQorCisgICAgYm9vbCBTdHJp
bmcoY29uc3QgQ2gqIHN0ciwgU2l6ZVR5cGUgbGVuZ3RoLCBib29sIGNvcHkpIHsgCisgICAgICAg
IGlmIChjb3B5KSAKKyAgICAgICAgICAgIG5ldyAoc3RhY2tfLnRlbXBsYXRlIFB1c2g8VmFsdWVU
eXBlPigpKSBWYWx1ZVR5cGUoc3RyLCBsZW5ndGgsIEdldEFsbG9jYXRvcigpKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgbmV3IChzdGFja18udGVtcGxhdGUgUHVzaDxWYWx1ZVR5cGU+KCkp
IFZhbHVlVHlwZShzdHIsIGxlbmd0aCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIGJvb2wgU3RhcnRPYmplY3QoKSB7IG5ldyAoc3RhY2tfLnRlbXBsYXRlIFB1c2g8VmFsdWVU
eXBlPigpKSBWYWx1ZVR5cGUoa09iamVjdFR5cGUpOyByZXR1cm4gdHJ1ZTsgfQorICAgIAorICAg
IGJvb2wgS2V5KGNvbnN0IENoKiBzdHIsIFNpemVUeXBlIGxlbmd0aCwgYm9vbCBjb3B5KSB7IHJl
dHVybiBTdHJpbmcoc3RyLCBsZW5ndGgsIGNvcHkpOyB9CisKKyAgICBib29sIEVuZE9iamVjdChT
aXplVHlwZSBtZW1iZXJDb3VudCkgeworICAgICAgICB0eXBlbmFtZSBWYWx1ZVR5cGU6Ok1lbWJl
ciogbWVtYmVycyA9IHN0YWNrXy50ZW1wbGF0ZSBQb3A8dHlwZW5hbWUgVmFsdWVUeXBlOjpNZW1i
ZXI+KG1lbWJlckNvdW50KTsKKyAgICAgICAgc3RhY2tfLnRlbXBsYXRlIFRvcDxWYWx1ZVR5cGU+
KCktPlNldE9iamVjdFJhdyhtZW1iZXJzLCAoU2l6ZVR5cGUpbWVtYmVyQ291bnQsIEdldEFsbG9j
YXRvcigpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgYm9vbCBTdGFydEFy
cmF5KCkgeyBuZXcgKHN0YWNrXy50ZW1wbGF0ZSBQdXNoPFZhbHVlVHlwZT4oKSkgVmFsdWVUeXBl
KGtBcnJheVR5cGUpOyByZXR1cm4gdHJ1ZTsgfQorICAgIAorICAgIGJvb2wgRW5kQXJyYXkoU2l6
ZVR5cGUgZWxlbWVudENvdW50KSB7CisgICAgICAgIFZhbHVlVHlwZSogZWxlbWVudHMgPSBzdGFj
a18udGVtcGxhdGUgUG9wPFZhbHVlVHlwZT4oZWxlbWVudENvdW50KTsKKyAgICAgICAgc3RhY2tf
LnRlbXBsYXRlIFRvcDxWYWx1ZVR5cGU+KCktPlNldEFycmF5UmF3KGVsZW1lbnRzLCBlbGVtZW50
Q291bnQsIEdldEFsbG9jYXRvcigpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCitw
cml2YXRlOgorICAgIC8vISBQcm9oaWJpdCBjb3B5aW5nCisgICAgR2VuZXJpY0RvY3VtZW50KGNv
bnN0IEdlbmVyaWNEb2N1bWVudCYpOworICAgIC8vISBQcm9oaWJpdCBhc3NpZ25tZW50CisgICAg
R2VuZXJpY0RvY3VtZW50JiBvcGVyYXRvcj0oY29uc3QgR2VuZXJpY0RvY3VtZW50Jik7CisKKyAg
ICB2b2lkIENsZWFyU3RhY2soKSB7CisgICAgICAgIGlmIChBbGxvY2F0b3I6OmtOZWVkRnJlZSkK
KyAgICAgICAgICAgIHdoaWxlIChzdGFja18uR2V0U2l6ZSgpID4gMCkgICAgLy8gSGVyZSBhc3N1
bWVzIGFsbCBlbGVtZW50cyBpbiBzdGFjayBhcnJheSBhcmUgR2VuZXJpY1ZhbHVlIChNZW1iZXIg
aXMgYWN0dWFsbHkgMiBHZW5lcmljVmFsdWUgb2JqZWN0cykKKyAgICAgICAgICAgICAgICAoc3Rh
Y2tfLnRlbXBsYXRlIFBvcDxWYWx1ZVR5cGU+KDEpKS0+flZhbHVlVHlwZSgpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBzdGFja18uQ2xlYXIoKTsKKyAgICAgICAgc3RhY2tfLlNocmlua1Rv
Rml0KCk7CisgICAgfQorCisgICAgdm9pZCBEZXN0cm95KCkgeworICAgICAgICBSQVBJREpTT05f
REVMRVRFKG93bkFsbG9jYXRvcl8pOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
a0RlZmF1bHRTdGFja0NhcGFjaXR5ID0gMTAyNDsKKyAgICBBbGxvY2F0b3IqIGFsbG9jYXRvcl87
CisgICAgQWxsb2NhdG9yKiBvd25BbGxvY2F0b3JfOworICAgIGludGVybmFsOjpTdGFjazxTdGFj
a0FsbG9jYXRvcj4gc3RhY2tfOworICAgIFBhcnNlUmVzdWx0IHBhcnNlUmVzdWx0XzsKK307CisK
Ky8vISBHZW5lcmljRG9jdW1lbnQgd2l0aCBVVEY4IGVuY29kaW5nCit0eXBlZGVmIEdlbmVyaWNE
b2N1bWVudDxVVEY4PD4gPiBEb2N1bWVudDsKKworLy8gZGVmaW5lZCBoZXJlIGR1ZSB0byB0aGUg
ZGVwZW5kZW5jeSBvbiBHZW5lcmljRG9jdW1lbnQKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbmNvZGlu
ZywgdHlwZW5hbWUgQWxsb2NhdG9yPgordGVtcGxhdGUgPHR5cGVuYW1lIFNvdXJjZUFsbG9jYXRv
cj4KK2lubGluZQorR2VuZXJpY1ZhbHVlPEVuY29kaW5nLEFsbG9jYXRvcj46OkdlbmVyaWNWYWx1
ZShjb25zdCBHZW5lcmljVmFsdWU8RW5jb2RpbmcsU291cmNlQWxsb2NhdG9yPiYgcmhzLCBBbGxv
Y2F0b3ImIGFsbG9jYXRvcikKK3sKKyAgICBzd2l0Y2ggKHJocy5HZXRUeXBlKCkpIHsKKyAgICBj
YXNlIGtPYmplY3RUeXBlOgorICAgIGNhc2Uga0FycmF5VHlwZTogeyAvLyBwZXJmb3JtIGRlZXAg
Y29weSB2aWEgU0FYIEhhbmRsZXIKKyAgICAgICAgICAgIEdlbmVyaWNEb2N1bWVudDxFbmNvZGlu
ZyxBbGxvY2F0b3I+IGQoJmFsbG9jYXRvcik7CisgICAgICAgICAgICByaHMuQWNjZXB0KGQpOwor
ICAgICAgICAgICAgUmF3QXNzaWduKCpkLnN0YWNrXy50ZW1wbGF0ZSBQb3A8R2VuZXJpY1ZhbHVl
PigxKSk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrU3RyaW5nVHlwZToK
KyAgICAgICAgaWYgKHJocy5mbGFnc18gPT0ga0NvbnN0U3RyaW5nRmxhZykgeworICAgICAgICAg
ICAgZmxhZ3NfID0gcmhzLmZsYWdzXzsKKyAgICAgICAgICAgIGRhdGFfICA9ICpyZWludGVycHJl
dF9jYXN0PGNvbnN0IERhdGEqPigmcmhzLmRhdGFfKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIFNldFN0cmluZ1JhdyhTdHJpbmdSZWYocmhzLkdldFN0cmluZygpLCByaHMuR2V0U3Ry
aW5nTGVuZ3RoKCkpLCBhbGxvY2F0b3IpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAg
IGRlZmF1bHQ6IC8vIGtOdW1iZXJUeXBlLCBrVHJ1ZVR5cGUsIGtGYWxzZVR5cGUsIGtOdWxsVHlw
ZQorICAgICAgICBmbGFnc18gPSByaHMuZmxhZ3NfOworICAgICAgICBkYXRhXyAgPSAqcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBEYXRhKj4oJnJocy5kYXRhXyk7CisgICAgfQorfQorCitSQVBJREpT
T05fTkFNRVNQQUNFX0VORAorCisjaWYgZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX0dO
VUNfXykKK1JBUElESlNPTl9ESUFHX1BPUAorI2VuZGlmCisKKyNlbmRpZiAvLyBSQVBJREpTT05f
RE9DVU1FTlRfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGly
ZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vZW5jb2RlZHN0cmVhbS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9y
YXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vZW5jb2RlZHN0cmVhbS5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpz
b24vaW5jbHVkZS9yYXBpZGpzb24vZW5jb2RlZHN0cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMjkwIEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEgTWlsbyBZaXAKKy8vCisvLyBQZXJt
aXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBv
YnRhaW5pbmcgYSBjb3B5CisvLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3Vt
ZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAorLy8gaW4gdGhlIFNvZnR3
YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhl
IHJpZ2h0cworLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmli
dXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwg
YW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisvLyBmdXJuaXNo
ZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorLy8KKy8v
IFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNo
YWxsIGJlIGluY2x1ZGVkIGluCisvLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25z
IG9mIHRoZSBTb2Z0d2FyZS4KKy8vCisvLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT
IiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorLy8gSU1QTElFRCwg
SU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFksCisvLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklO
R0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKy8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhP
TERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKy8vIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF
LCBBUklTSU5HIEZST00sCisvLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU
V0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCisvLyBUSEUgU09GVFdBUkUuCisK
KyNpZm5kZWYgUkFQSURKU09OX0VOQ09ERURTVFJFQU1fSF8KKyNkZWZpbmUgUkFQSURKU09OX0VO
Q09ERURTVFJFQU1fSF8KKworI2luY2x1ZGUgInJhcGlkanNvbi5oIgorCisjaWZkZWYgX19HTlVD
X18KK1JBUElESlNPTl9ESUFHX1BVU0gKK1JBUElESlNPTl9ESUFHX09GRihlZmZjKyspCisjZW5k
aWYKKworUkFQSURKU09OX05BTUVTUEFDRV9CRUdJTgorCisvLyEgSW5wdXQgYnl0ZSBzdHJlYW0g
d3JhcHBlciB3aXRoIGEgc3RhdGljYWxseSBib3VuZCBlbmNvZGluZy4KKy8qIQorICAgIFx0cGFy
YW0gRW5jb2RpbmcgVGhlIGludGVycHJldGF0aW9uIG9mIGVuY29kaW5nIG9mIHRoZSBzdHJlYW0u
IEVpdGhlciBVVEY4LCBVVEYxNkxFLCBVVEYxNkJFLCBVVEYzMkxFLCBVVEYzMkJFLgorICAgIFx0
cGFyYW0gSW5wdXRCeXRlU3RyZWFtIFR5cGUgb2YgaW5wdXQgYnl0ZSBzdHJlYW0uIEZvciBleGFt
cGxlLCBGaWxlUmVhZFN0cmVhbS4KKyovCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRW5jb2RpbmcsIHR5
cGVuYW1lIElucHV0Qnl0ZVN0cmVhbT4KK2NsYXNzIEVuY29kZWRJbnB1dFN0cmVhbSB7CisgICAg
UkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIElucHV0Qnl0ZVN0cmVhbTo6
Q2gpID09IDEpOworcHVibGljOgorICAgIHR5cGVkZWYgdHlwZW5hbWUgRW5jb2Rpbmc6OkNoIENo
OworCisgICAgRW5jb2RlZElucHV0U3RyZWFtKElucHV0Qnl0ZVN0cmVhbSYgaXMpIDogaXNfKGlz
KSB7IAorICAgICAgICBjdXJyZW50XyA9IEVuY29kaW5nOjpUYWtlQk9NKGlzXyk7CisgICAgfQor
CisgICAgQ2ggUGVlaygpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRfOyB9CisgICAgQ2ggVGFrZSgp
IHsgQ2ggYyA9IGN1cnJlbnRfOyBjdXJyZW50XyA9IEVuY29kaW5nOjpUYWtlKGlzXyk7IHJldHVy
biBjOyB9CisgICAgc2l6ZV90IFRlbGwoKSBjb25zdCB7IHJldHVybiBpc18uVGVsbCgpOyB9CisK
KyAgICAvLyBOb3QgaW1wbGVtZW50ZWQKKyAgICB2b2lkIFB1dChDaCkgeyBSQVBJREpTT05fQVNT
RVJUKGZhbHNlKTsgfQorICAgIHZvaWQgRmx1c2goKSB7IFJBUElESlNPTl9BU1NFUlQoZmFsc2Up
OyB9IAorICAgIENoKiBQdXRCZWdpbigpIHsgUkFQSURKU09OX0FTU0VSVChmYWxzZSk7IHJldHVy
biAwOyB9CisgICAgc2l6ZV90IFB1dEVuZChDaCopIHsgUkFQSURKU09OX0FTU0VSVChmYWxzZSk7
IHJldHVybiAwOyB9CisKK3ByaXZhdGU6CisgICAgRW5jb2RlZElucHV0U3RyZWFtKGNvbnN0IEVu
Y29kZWRJbnB1dFN0cmVhbSYpOworICAgIEVuY29kZWRJbnB1dFN0cmVhbSYgb3BlcmF0b3I9KGNv
bnN0IEVuY29kZWRJbnB1dFN0cmVhbSYpOworCisgICAgSW5wdXRCeXRlU3RyZWFtJiBpc187Cisg
ICAgQ2ggY3VycmVudF87Cit9OworCisvLyEgT3V0cHV0IGJ5dGUgc3RyZWFtIHdyYXBwZXIgd2l0
aCBzdGF0aWNhbGx5IGJvdW5kIGVuY29kaW5nLgorLyohCisgICAgXHRwYXJhbSBFbmNvZGluZyBU
aGUgaW50ZXJwcmV0YXRpb24gb2YgZW5jb2Rpbmcgb2YgdGhlIHN0cmVhbS4gRWl0aGVyIFVURjgs
IFVURjE2TEUsIFVURjE2QkUsIFVURjMyTEUsIFVURjMyQkUuCisgICAgXHRwYXJhbSBJbnB1dEJ5
dGVTdHJlYW0gVHlwZSBvZiBpbnB1dCBieXRlIHN0cmVhbS4gRm9yIGV4YW1wbGUsIEZpbGVXcml0
ZVN0cmVhbS4KKyovCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRW5jb2RpbmcsIHR5cGVuYW1lIE91dHB1
dEJ5dGVTdHJlYW0+CitjbGFzcyBFbmNvZGVkT3V0cHV0U3RyZWFtIHsKKyAgICBSQVBJREpTT05f
U1RBVElDX0FTU0VSVChzaXplb2YodHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVhbTo6Q2gpID09IDEp
OworcHVibGljOgorICAgIHR5cGVkZWYgdHlwZW5hbWUgRW5jb2Rpbmc6OkNoIENoOworCisgICAg
RW5jb2RlZE91dHB1dFN0cmVhbShPdXRwdXRCeXRlU3RyZWFtJiBvcywgYm9vbCBwdXRCT00gPSB0
cnVlKSA6IG9zXyhvcykgeyAKKyAgICAgICAgaWYgKHB1dEJPTSkKKyAgICAgICAgICAgIEVuY29k
aW5nOjpQdXRCT00ob3NfKTsKKyAgICB9CisKKyAgICB2b2lkIFB1dChDaCBjKSB7IEVuY29kaW5n
OjpQdXQob3NfLCBjKTsgIH0KKyAgICB2b2lkIEZsdXNoKCkgeyBvc18uRmx1c2goKTsgfQorCisg
ICAgLy8gTm90IGltcGxlbWVudGVkCisgICAgQ2ggUGVlaygpIGNvbnN0IHsgUkFQSURKU09OX0FT
U0VSVChmYWxzZSk7IH0KKyAgICBDaCBUYWtlKCkgeyBSQVBJREpTT05fQVNTRVJUKGZhbHNlKTsg
IH0KKyAgICBzaXplX3QgVGVsbCgpIGNvbnN0IHsgUkFQSURKU09OX0FTU0VSVChmYWxzZSk7ICBy
ZXR1cm4gMDsgfQorICAgIENoKiBQdXRCZWdpbigpIHsgUkFQSURKU09OX0FTU0VSVChmYWxzZSk7
IHJldHVybiAwOyB9CisgICAgc2l6ZV90IFB1dEVuZChDaCopIHsgUkFQSURKU09OX0FTU0VSVChm
YWxzZSk7IHJldHVybiAwOyB9CisKK3ByaXZhdGU6CisgICAgRW5jb2RlZE91dHB1dFN0cmVhbShj
b25zdCBFbmNvZGVkT3V0cHV0U3RyZWFtJik7CisgICAgRW5jb2RlZE91dHB1dFN0cmVhbSYgb3Bl
cmF0b3I9KGNvbnN0IEVuY29kZWRPdXRwdXRTdHJlYW0mKTsKKworICAgIE91dHB1dEJ5dGVTdHJl
YW0mIG9zXzsKK307CisKKyNkZWZpbmUgUkFQSURKU09OX0VOQ09ESU5HU19GVU5DKHgpIFVURjg8
Q2g+Ojp4LCBVVEYxNkxFPENoPjo6eCwgVVRGMTZCRTxDaD46OngsIFVURjMyTEU8Q2g+Ojp4LCBV
VEYzMkJFPENoPjo6eAorCisvLyEgSW5wdXQgc3RyZWFtIHdyYXBwZXIgd2l0aCBkeW5hbWljYWxs
eSBib3VuZCBlbmNvZGluZyBhbmQgYXV0b21hdGljIGVuY29kaW5nIGRldGVjdGlvbi4KKy8qIQor
ICAgIFx0cGFyYW0gQ2hhclR5cGUgVHlwZSBvZiBjaGFyYWN0ZXIgZm9yIHJlYWRpbmcuCisgICAg
XHRwYXJhbSBJbnB1dEJ5dGVTdHJlYW0gdHlwZSBvZiBpbnB1dCBieXRlIHN0cmVhbSB0byBiZSB3
cmFwcGVkLgorKi8KK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZSwgdHlwZW5hbWUgSW5wdXRC
eXRlU3RyZWFtPgorY2xhc3MgQXV0b1VURklucHV0U3RyZWFtIHsKKyAgICBSQVBJREpTT05fU1RB
VElDX0FTU0VSVChzaXplb2YodHlwZW5hbWUgSW5wdXRCeXRlU3RyZWFtOjpDaCkgPT0gMSk7Citw
dWJsaWM6CisgICAgdHlwZWRlZiBDaGFyVHlwZSBDaDsKKworICAgIC8vISBDb25zdHJ1Y3Rvci4K
KyAgICAvKiEKKyAgICAgICAgXHBhcmFtIGlzIGlucHV0IHN0cmVhbSB0byBiZSB3cmFwcGVkLgor
ICAgICAgICBccGFyYW0gdHlwZSBVVEYgZW5jb2RpbmcgdHlwZSBpZiBpdCBpcyBub3QgZGV0ZWN0
ZWQgZnJvbSB0aGUgc3RyZWFtLgorICAgICovCisgICAgQXV0b1VURklucHV0U3RyZWFtKElucHV0
Qnl0ZVN0cmVhbSYgaXMsIFVURlR5cGUgdHlwZSA9IGtVVEY4KSA6IGlzXygmaXMpLCB0eXBlXyh0
eXBlKSwgaGFzQk9NXyhmYWxzZSkgeworICAgICAgICBEZXRlY3RUeXBlKCk7CisgICAgICAgIHN0
YXRpYyBjb25zdCBUYWtlRnVuYyBmW10gPSB7IFJBUElESlNPTl9FTkNPRElOR1NfRlVOQyhUYWtl
KSB9OworICAgICAgICB0YWtlRnVuY18gPSBmW3R5cGVfXTsKKyAgICAgICAgY3VycmVudF8gPSB0
YWtlRnVuY18oKmlzXyk7CisgICAgfQorCisgICAgVVRGVHlwZSBHZXRUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gdHlwZV87IH0KKyAgICBib29sIEhhc0JPTSgpIGNvbnN0IHsgcmV0dXJuIGhhc0JPTV87
IH0KKworICAgIENoIFBlZWsoKSBjb25zdCB7IHJldHVybiBjdXJyZW50XzsgfQorICAgIENoIFRh
a2UoKSB7IENoIGMgPSBjdXJyZW50XzsgY3VycmVudF8gPSB0YWtlRnVuY18oKmlzXyk7IHJldHVy
biBjOyB9CisgICAgc2l6ZV90IFRlbGwoKSBjb25zdCB7IHJldHVybiBpc18tPlRlbGwoKTsgfQor
CisgICAgLy8gTm90IGltcGxlbWVudGVkCisgICAgdm9pZCBQdXQoQ2gpIHsgUkFQSURKU09OX0FT
U0VSVChmYWxzZSk7IH0KKyAgICB2b2lkIEZsdXNoKCkgeyBSQVBJREpTT05fQVNTRVJUKGZhbHNl
KTsgfSAKKyAgICBDaCogUHV0QmVnaW4oKSB7IFJBUElESlNPTl9BU1NFUlQoZmFsc2UpOyByZXR1
cm4gMDsgfQorICAgIHNpemVfdCBQdXRFbmQoQ2gqKSB7IFJBUElESlNPTl9BU1NFUlQoZmFsc2Up
OyByZXR1cm4gMDsgfQorCitwcml2YXRlOgorICAgIEF1dG9VVEZJbnB1dFN0cmVhbShjb25zdCBB
dXRvVVRGSW5wdXRTdHJlYW0mKTsKKyAgICBBdXRvVVRGSW5wdXRTdHJlYW0mIG9wZXJhdG9yPShj
b25zdCBBdXRvVVRGSW5wdXRTdHJlYW0mKTsKKworICAgIC8vIERldGVjdCBlbmNvZGluZyB0eXBl
IHdpdGggQk9NIG9yIFJGQyA0NjI3CisgICAgdm9pZCBEZXRlY3RUeXBlKCkgeworICAgICAgICAv
LyBCT00gKEJ5dGUgT3JkZXIgTWFyayk6CisgICAgICAgIC8vIDAwIDAwIEZFIEZGICBVVEYtMzJC
RQorICAgICAgICAvLyBGRiBGRSAwMCAwMCAgVVRGLTMyTEUKKyAgICAgICAgLy8gRkUgRkYgICAg
ICAgIFVURi0xNkJFCisgICAgICAgIC8vIEZGIEZFICAgICAgICBVVEYtMTZMRQorICAgICAgICAv
LyBFRiBCQiBCRiAgICAgVVRGLTgKKworICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBjID0g
KGNvbnN0IHVuc2lnbmVkIGNoYXIgKilpc18tPlBlZWs0KCk7CisgICAgICAgIGlmICghYykKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICB1bnNpZ25lZCBib20gPSBjWzBdIHwgKGNbMV0g
PDwgOCkgfCAoY1syXSA8PCAxNikgfCAoY1szXSA8PCAyNCk7CisgICAgICAgIGhhc0JPTV8gPSBm
YWxzZTsKKyAgICAgICAgaWYgKGJvbSA9PSAweEZGRkUwMDAwKSAgICAgICAgICAgICAgICAgIHsg
dHlwZV8gPSBrVVRGMzJCRTsgaGFzQk9NXyA9IHRydWU7IGlzXy0+VGFrZSgpOyBpc18tPlRha2Uo
KTsgaXNfLT5UYWtlKCk7IGlzXy0+VGFrZSgpOyB9CisgICAgICAgIGVsc2UgaWYgKGJvbSA9PSAw
eDAwMDBGRUZGKSAgICAgICAgICAgICB7IHR5cGVfID0ga1VURjMyTEU7IGhhc0JPTV8gPSB0cnVl
OyBpc18tPlRha2UoKTsgaXNfLT5UYWtlKCk7IGlzXy0+VGFrZSgpOyBpc18tPlRha2UoKTsgfQor
ICAgICAgICBlbHNlIGlmICgoYm9tICYgMHhGRkZGKSA9PSAweEZGRkUpICAgICAgeyB0eXBlXyA9
IGtVVEYxNkJFOyBoYXNCT01fID0gdHJ1ZTsgaXNfLT5UYWtlKCk7IGlzXy0+VGFrZSgpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoKGJvbSAmIDB4RkZGRikg
PT0gMHhGRUZGKSAgICAgIHsgdHlwZV8gPSBrVVRGMTZMRTsgaGFzQk9NXyA9IHRydWU7IGlzXy0+
VGFrZSgpOyBpc18tPlRha2UoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
IGVsc2UgaWYgKChib20gJiAweEZGRkZGRikgPT0gMHhCRkJCRUYpICB7IHR5cGVfID0ga1VURjg7
ICAgIGhhc0JPTV8gPSB0cnVlOyBpc18tPlRha2UoKTsgaXNfLT5UYWtlKCk7IGlzXy0+VGFrZSgp
OyAgICAgICAgICAgICAgfQorCisgICAgICAgIC8vIFJGQyA0NjI3OiBTZWN0aW9uIDMKKyAgICAg
ICAgLy8gIlNpbmNlIHRoZSBmaXJzdCB0d28gY2hhcmFjdGVycyBvZiBhIEpTT04gdGV4dCB3aWxs
IGFsd2F5cyBiZSBBU0NJSQorICAgICAgICAvLyBjaGFyYWN0ZXJzIFtSRkMwMDIwXSwgaXQgaXMg
cG9zc2libGUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYW4gb2N0ZXQKKyAgICAgICAgLy8gc3RyZWFt
IGlzIFVURi04LCBVVEYtMTYgKEJFIG9yIExFKSwgb3IgVVRGLTMyIChCRSBvciBMRSkgYnkgbG9v
a2luZworICAgICAgICAvLyBhdCB0aGUgcGF0dGVybiBvZiBudWxscyBpbiB0aGUgZmlyc3QgZm91
ciBvY3RldHMuIgorICAgICAgICAvLyAwMCAwMCAwMCB4eCAgVVRGLTMyQkUKKyAgICAgICAgLy8g
MDAgeHggMDAgeHggIFVURi0xNkJFCisgICAgICAgIC8vIHh4IDAwIDAwIDAwICBVVEYtMzJMRQor
ICAgICAgICAvLyB4eCAwMCB4eCAwMCAgVVRGLTE2TEUKKyAgICAgICAgLy8geHggeHggeHggeHgg
IFVURi04CisKKyAgICAgICAgaWYgKCFoYXNCT01fKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBw
YXR0ZXJuID0gKGNbMF0gPyAxIDogMCkgfCAoY1sxXSA/IDIgOiAwKSB8IChjWzJdID8gNCA6IDAp
IHwgKGNbM10gPyA4IDogMCk7CisgICAgICAgICAgICBzd2l0Y2ggKHBhdHRlcm4pIHsKKyAgICAg
ICAgICAgIGNhc2UgMHgwODogdHlwZV8gPSBrVVRGMzJCRTsgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIDB4MEE6IHR5cGVfID0ga1VURjE2QkU7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAweDAx
OiB0eXBlXyA9IGtVVEYzMkxFOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMHgwNTogdHlwZV8g
PSBrVVRGMTZMRTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDB4MEY6IHR5cGVfID0ga1VURjg7
ICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDogYnJlYWs7IC8vIFVzZSB0eXBlIGRlZmlu
ZWQgYnkgdXNlci4KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFJ1bnRp
bWUgY2hlY2sgd2hldGhlciB0aGUgc2l6ZSBvZiBjaGFyYWN0ZXIgdHlwZSBpcyBzdWZmaWNpZW50
LiBJdCBvbmx5IHBlcmZvcm0gY2hlY2tzIHdpdGggYXNzZXJ0aW9uLgorICAgICAgICBzd2l0Y2gg
KHR5cGVfKSB7CisgICAgICAgIGNhc2Uga1VURjg6CisgICAgICAgICAgICAvLyBEbyBub3RoaW5n
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBrVVRGMTZMRToKKyAgICAgICAgY2Fz
ZSBrVVRGMTZCRToKKyAgICAgICAgICAgIFJBUElESlNPTl9BU1NFUlQoc2l6ZW9mKENoKSA+PSAy
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIGtVVEYzMkxFOgorICAgICAgICBj
YXNlIGtVVEYzMkJFOgorICAgICAgICAgICAgUkFQSURKU09OX0FTU0VSVChzaXplb2YoQ2gpID49
IDQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBS
QVBJREpTT05fQVNTRVJUKGZhbHNlKTsgICAgLy8gSW52YWxpZCB0eXBlCisgICAgICAgIH0KKyAg
ICB9CisKKyAgICB0eXBlZGVmIENoICgqVGFrZUZ1bmMpKElucHV0Qnl0ZVN0cmVhbSYgaXMpOwor
ICAgIElucHV0Qnl0ZVN0cmVhbSogaXNfOworICAgIFVURlR5cGUgdHlwZV87CisgICAgQ2ggY3Vy
cmVudF87CisgICAgVGFrZUZ1bmMgdGFrZUZ1bmNfOworICAgIGJvb2wgaGFzQk9NXzsKK307CisK
Ky8vISBPdXRwdXQgc3RyZWFtIHdyYXBwZXIgd2l0aCBkeW5hbWljYWxseSBib3VuZCBlbmNvZGlu
ZyBhbmQgYXV0b21hdGljIGVuY29kaW5nIGRldGVjdGlvbi4KKy8qIQorICAgIFx0cGFyYW0gQ2hh
clR5cGUgVHlwZSBvZiBjaGFyYWN0ZXIgZm9yIHdyaXRpbmcuCisgICAgXHRwYXJhbSBJbnB1dEJ5
dGVTdHJlYW0gdHlwZSBvZiBvdXRwdXQgYnl0ZSBzdHJlYW0gdG8gYmUgd3JhcHBlZC4KKyovCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGUsIHR5cGVuYW1lIE91dHB1dEJ5dGVTdHJlYW0+Citj
bGFzcyBBdXRvVVRGT3V0cHV0U3RyZWFtIHsKKyAgICBSQVBJREpTT05fU1RBVElDX0FTU0VSVChz
aXplb2YodHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVhbTo6Q2gpID09IDEpOworcHVibGljOgorICAg
IHR5cGVkZWYgQ2hhclR5cGUgQ2g7CisKKyAgICAvLyEgQ29uc3RydWN0b3IuCisgICAgLyohCisg
ICAgICAgIFxwYXJhbSBvcyBvdXRwdXQgc3RyZWFtIHRvIGJlIHdyYXBwZWQuCisgICAgICAgIFxw
YXJhbSB0eXBlIFVURiBlbmNvZGluZyB0eXBlLgorICAgICAgICBccGFyYW0gcHV0Qk9NIFdoZXRo
ZXIgdG8gd3JpdGUgQk9NIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmVhbS4KKyAgICAqLwor
ICAgIEF1dG9VVEZPdXRwdXRTdHJlYW0oT3V0cHV0Qnl0ZVN0cmVhbSYgb3MsIFVURlR5cGUgdHlw
ZSwgYm9vbCBwdXRCT00pIDogb3NfKCZvcyksIHR5cGVfKHR5cGUpIHsKKyAgICAgICAgLy8gUlVu
dGltZSBjaGVjayB3aGV0aGVyIHRoZSBzaXplIG9mIGNoYXJhY3RlciB0eXBlIGlzIHN1ZmZpY2ll
bnQuIEl0IG9ubHkgcGVyZm9ybSBjaGVja3Mgd2l0aCBhc3NlcnRpb24uCisgICAgICAgIHN3aXRj
aCAodHlwZV8pIHsKKyAgICAgICAgY2FzZSBrVVRGMTZMRToKKyAgICAgICAgY2FzZSBrVVRGMTZC
RToKKyAgICAgICAgICAgIFJBUElESlNPTl9BU1NFUlQoc2l6ZW9mKENoKSA+PSAyKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIGtVVEYzMkxFOgorICAgICAgICBjYXNlIGtVVEYz
MkJFOgorICAgICAgICAgICAgUkFQSURKU09OX0FTU0VSVChzaXplb2YoQ2gpID49IDQpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Uga1VURjg6CisgICAgICAgICAgICAvLyBEbyBu
b3RoaW5nCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IFJBUElESlNPTl9BU1NFUlQoZmFsc2UpOyAgICAvLyBJbnZhbGlkIFVURlR5cGUKKyAgICAgICAg
fQorCisgICAgICAgIHN0YXRpYyBjb25zdCBQdXRGdW5jIGZbXSA9IHsgUkFQSURKU09OX0VOQ09E
SU5HU19GVU5DKFB1dCkgfTsKKyAgICAgICAgcHV0RnVuY18gPSBmW3R5cGVfXTsKKworICAgICAg
ICBpZiAocHV0Qk9NKQorICAgICAgICAgICAgUHV0Qk9NKCk7CisgICAgfQorCisgICAgVVRGVHlw
ZSBHZXRUeXBlKCkgY29uc3QgeyByZXR1cm4gdHlwZV87IH0KKworICAgIHZvaWQgUHV0KENoIGMp
IHsgcHV0RnVuY18oKm9zXywgYyk7IH0KKyAgICB2b2lkIEZsdXNoKCkgeyBvc18tPkZsdXNoKCk7
IH0gCisKKyAgICAvLyBOb3QgaW1wbGVtZW50ZWQKKyAgICBDaCBQZWVrKCkgY29uc3QgeyBSQVBJ
REpTT05fQVNTRVJUKGZhbHNlKTsgfQorICAgIENoIFRha2UoKSB7IFJBUElESlNPTl9BU1NFUlQo
ZmFsc2UpOyB9CisgICAgc2l6ZV90IFRlbGwoKSBjb25zdCB7IFJBUElESlNPTl9BU1NFUlQoZmFs
c2UpOyByZXR1cm4gMDsgfQorICAgIENoKiBQdXRCZWdpbigpIHsgUkFQSURKU09OX0FTU0VSVChm
YWxzZSk7IHJldHVybiAwOyB9CisgICAgc2l6ZV90IFB1dEVuZChDaCopIHsgUkFQSURKU09OX0FT
U0VSVChmYWxzZSk7IHJldHVybiAwOyB9CisKK3ByaXZhdGU6CisgICAgQXV0b1VURk91dHB1dFN0
cmVhbShjb25zdCBBdXRvVVRGT3V0cHV0U3RyZWFtJik7CisgICAgQXV0b1VURk91dHB1dFN0cmVh
bSYgb3BlcmF0b3I9KGNvbnN0IEF1dG9VVEZPdXRwdXRTdHJlYW0mKTsKKworICAgIHZvaWQgUHV0
Qk9NKCkgeyAKKyAgICAgICAgdHlwZWRlZiB2b2lkICgqUHV0Qk9NRnVuYykoT3V0cHV0Qnl0ZVN0
cmVhbSYpOworICAgICAgICBzdGF0aWMgY29uc3QgUHV0Qk9NRnVuYyBmW10gPSB7IFJBUElESlNP
Tl9FTkNPRElOR1NfRlVOQyhQdXRCT00pIH07CisgICAgICAgIGZbdHlwZV9dKCpvc18pOworICAg
IH0KKworICAgIHR5cGVkZWYgdm9pZCAoKlB1dEZ1bmMpKE91dHB1dEJ5dGVTdHJlYW0mLCBDaCk7
CisKKyAgICBPdXRwdXRCeXRlU3RyZWFtKiBvc187CisgICAgVVRGVHlwZSB0eXBlXzsKKyAgICBQ
dXRGdW5jIHB1dEZ1bmNfOworfTsKKworI3VuZGVmIFJBUElESlNPTl9FTkNPRElOR1NfRlVOQwor
CitSQVBJREpTT05fTkFNRVNQQUNFX0VORAorCisjaWZkZWYgX19HTlVDX18KK1JBUElESlNPTl9E
SUFHX1BPUAorI2VuZGlmCisKKyNlbmRpZiAvLyBSQVBJREpTT05fRklMRVNUUkVBTV9IXwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNv
bi9pbmNsdWRlL3JhcGlkanNvbi9lbmNvZGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFw
aWRqc29uL2VuY29kaW5ncy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vZW5j
b2RpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MzAgQEAKKy8vIENvcHlyaWdodCAo
QykgMjAxMSBNaWxvIFlpcAorLy8KKy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZy
ZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKy8vIG9mIHRoaXMg
c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2Fy
ZSIpLCB0byBkZWFsCisvLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5j
bHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCisvLyB0byB1c2UsIGNvcHksIG1v
ZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxs
CisvLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv
bSB0aGUgU29mdHdhcmUgaXMKKy8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnM6CisvLworLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Ug
YW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKy8vIGFsbCBj
b3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorLy8KKy8vIFRI
RSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBL
SU5ELCBFWFBSRVNTIE9SCisvLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRP
IFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKy8vIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RQorLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJ
TSwgREFNQUdFUyBPUiBPVEhFUgorLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBP
RiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKy8vIE9VVCBPRiBP
UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVB
TElOR1MgSU4KKy8vIFRIRSBTT0ZUV0FSRS4KKworI2lmbmRlZiBSQVBJREpTT05fRU5DT0RJTkdT
X0hfCisjZGVmaW5lIFJBUElESlNPTl9FTkNPRElOR1NfSF8KKworI2luY2x1ZGUgInJhcGlkanNv
bi5oIgorCisjaWZkZWYgX01TQ19WRVIKK1JBUElESlNPTl9ESUFHX1BVU0gKK1JBUElESlNPTl9E
SUFHX09GRig0MjQ0KSAvLyBjb252ZXJzaW9uIGZyb20gJ3R5cGUxJyB0byAndHlwZTInLCBwb3Nz
aWJsZSBsb3NzIG9mIGRhdGEKK1JBUElESlNPTl9ESUFHX09GRig0NzAyKSAgLy8gdW5yZWFjaGFi
bGUgY29kZQorI2VsaWYgZGVmaW5lZChfX0dOVUNfXykKK1JBUElESlNPTl9ESUFHX1BVU0gKK1JB
UElESlNPTl9ESUFHX09GRihlZmZjKyspCisjZW5kaWYKKworUkFQSURKU09OX05BTUVTUEFDRV9C
RUdJTgorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBFbmNvZGluZworCisvKiEgXGNsYXNz
IHJhcGlkanNvbjo6RW5jb2RpbmcKKyAgICBcYnJpZWYgQ29uY2VwdCBmb3IgZW5jb2Rpbmcgb2Yg
VW5pY29kZSBjaGFyYWN0ZXJzLgorCitcY29kZQorY29uY2VwdCBFbmNvZGluZyB7CisgICAgdHlw
ZW5hbWUgQ2g7ICAgIC8vISBUeXBlIG9mIGNoYXJhY3Rlci4gQSAiY2hhcmFjdGVyIiBpcyBhY3R1
YWxseSBhIGNvZGUgdW5pdCBpbiB1bmljb2RlJ3MgZGVmaW5pdGlvbi4KKworICAgIGVudW0geyBz
dXBwb3J0VW5pY29kZSA9IDEgfTsgLy8gb3IgMCBpZiBub3Qgc3VwcG9ydGluZyB1bmljb2RlCisK
KyAgICAvLyEgXGJyaWVmIEVuY29kZSBhIFVuaWNvZGUgY29kZXBvaW50IHRvIGFuIG91dHB1dCBz
dHJlYW0uCisgICAgLy8hIFxwYXJhbSBvcyBPdXRwdXQgc3RyZWFtLgorICAgIC8vISBccGFyYW0g
Y29kZXBvaW50IEFuIHVuaWNvZGUgY29kZXBvaW50LCByYW5naW5nIGZyb20gMHgwIHRvIDB4MTBG
RkZGIGluY2x1c2l2ZWx5LgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE91dHB1dFN0cmVhbT4KKyAg
ICBzdGF0aWMgdm9pZCBFbmNvZGUoT3V0cHV0U3RyZWFtJiBvcywgdW5zaWduZWQgY29kZXBvaW50
KTsKKworICAgIC8vISBcYnJpZWYgRGVjb2RlIGEgVW5pY29kZSBjb2RlcG9pbnQgZnJvbSBhbiBp
bnB1dCBzdHJlYW0uCisgICAgLy8hIFxwYXJhbSBpcyBJbnB1dCBzdHJlYW0uCisgICAgLy8hIFxw
YXJhbSBjb2RlcG9pbnQgT3V0cHV0IG9mIHRoZSB1bmljb2RlIGNvZGVwb2ludC4KKyAgICAvLyEg
XHJldHVybiB0cnVlIGlmIGEgdmFsaWQgY29kZXBvaW50IGNhbiBiZSBkZWNvZGVkIGZyb20gdGhl
IHN0cmVhbS4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRTdHJlYW0+CisgICAgc3RhdGlj
IGJvb2wgRGVjb2RlKElucHV0U3RyZWFtJiBpcywgdW5zaWduZWQqIGNvZGVwb2ludCk7CisKKyAg
ICAvLyEgXGJyaWVmIFZhbGlkYXRlIG9uZSBVbmljb2RlIGNvZGVwb2ludCBmcm9tIGFuIGVuY29k
ZWQgc3RyZWFtLgorICAgIC8vISBccGFyYW0gaXMgSW5wdXQgc3RyZWFtIHRvIG9idGFpbiBjb2Rl
cG9pbnQuCisgICAgLy8hIFxwYXJhbSBvcyBPdXRwdXQgZm9yIGNvcHlpbmcgb25lIGNvZGVwb2lu
dC4KKyAgICAvLyEgXHJldHVybiB0cnVlIGlmIGl0IGlzIHZhbGlkLgorICAgIC8vISBcbm90ZSBU
aGlzIGZ1bmN0aW9uIGp1c3QgdmFsaWRhdGluZyBhbmQgY29weWluZyB0aGUgY29kZXBvaW50IHdp
dGhvdXQgYWN0dWFsbHkgZGVjb2RlIGl0LgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dFN0
cmVhbSwgdHlwZW5hbWUgT3V0cHV0U3RyZWFtPgorICAgIHN0YXRpYyBib29sIFZhbGlkYXRlKElu
cHV0U3RyZWFtJiBpcywgT3V0cHV0U3RyZWFtJiBvcyk7CisKKyAgICAvLyBUaGUgZm9sbG93aW5n
IGZ1bmN0aW9ucyBhcmUgZGVhbCB3aXRoIGJ5dGUgc3RyZWFtcy4KKworICAgIC8vISBUYWtlIGEg
Y2hhcmFjdGVyIGZyb20gaW5wdXQgYnl0ZSBzdHJlYW0sIHNraXAgQk9NIGlmIGV4aXN0LgorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEJ5dGVTdHJlYW0+CisgICAgc3RhdGljIENoYXJUeXBl
IFRha2VCT00oSW5wdXRCeXRlU3RyZWFtJiBpcyk7CisKKyAgICAvLyEgVGFrZSBhIGNoYXJhY3Rl
ciBmcm9tIGlucHV0IGJ5dGUgc3RyZWFtLgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEJ5
dGVTdHJlYW0+CisgICAgc3RhdGljIENoIFRha2UoSW5wdXRCeXRlU3RyZWFtJiBpcyk7CisKKyAg
ICAvLyEgUHV0IEJPTSB0byBvdXRwdXQgYnl0ZSBzdHJlYW0uCisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIE91dHB1dEJ5dGVTdHJlYW0+CisgICAgc3RhdGljIHZvaWQgUHV0Qk9NKE91dHB1dEJ5dGVT
dHJlYW0mIG9zKTsKKworICAgIC8vISBQdXQgYSBjaGFyYWN0ZXIgdG8gb3V0cHV0IGJ5dGUgc3Ry
ZWFtLgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPdXRwdXRCeXRlU3RyZWFtPgorICAgIHN0YXRp
YyB2b2lkIFB1dChPdXRwdXRCeXRlU3RyZWFtJiBvcywgQ2ggYyk7Cit9OworXGVuZGNvZGUKKyov
CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIFVURjgKKworLy8hIFVURi04IGVuY29kaW5n
LgorLyohIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVVRGLTgKKyAgICBodHRwOi8vdG9v
bHMuaWV0Zi5vcmcvaHRtbC9yZmMzNjI5CisgICAgXHRwYXJhbSBDaGFyVHlwZSBDb2RlIHVuaXQg
Zm9yIHN0b3JpbmcgOC1iaXQgVVRGLTggZGF0YS4gRGVmYXVsdCBpcyBjaGFyLgorICAgIFxub3Rl
IGltcGxlbWVudHMgRW5jb2RpbmcgY29uY2VwdAorKi8KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJU
eXBlID0gY2hhcj4KK3N0cnVjdCBVVEY4IHsKKyAgICB0eXBlZGVmIENoYXJUeXBlIENoOworCisg
ICAgZW51bSB7IHN1cHBvcnRVbmljb2RlID0gMSB9OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3V0cHV0U3RyZWFtPgorICAgIHN0YXRpYyB2b2lkIEVuY29kZShPdXRwdXRTdHJlYW0mIG9zLCB1
bnNpZ25lZCBjb2RlcG9pbnQpIHsKKyAgICAgICAgaWYgKGNvZGVwb2ludCA8PSAweDdGKSAKKyAg
ICAgICAgICAgIG9zLlB1dChzdGF0aWNfY2FzdDxDaD4oY29kZXBvaW50ICYgMHhGRikpOworICAg
ICAgICBlbHNlIGlmIChjb2RlcG9pbnQgPD0gMHg3RkYpIHsKKyAgICAgICAgICAgIG9zLlB1dChz
dGF0aWNfY2FzdDxDaD4oMHhDMCB8ICgoY29kZXBvaW50ID4+IDYpICYgMHhGRikpKTsKKyAgICAg
ICAgICAgIG9zLlB1dChzdGF0aWNfY2FzdDxDaD4oMHg4MCB8ICgoY29kZXBvaW50ICYgMHgzRikp
KSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoY29kZXBvaW50IDw9IDB4RkZGRikgewor
ICAgICAgICAgICAgb3MuUHV0KHN0YXRpY19jYXN0PENoPigweEUwIHwgKChjb2RlcG9pbnQgPj4g
MTIpICYgMHhGRikpKTsKKyAgICAgICAgICAgIG9zLlB1dChzdGF0aWNfY2FzdDxDaD4oMHg4MCB8
ICgoY29kZXBvaW50ID4+IDYpICYgMHgzRikpKTsKKyAgICAgICAgICAgIG9zLlB1dChzdGF0aWNf
Y2FzdDxDaD4oMHg4MCB8IChjb2RlcG9pbnQgJiAweDNGKSkpOworICAgICAgICB9CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgUkFQSURKU09OX0FTU0VSVChjb2RlcG9pbnQgPD0gMHgxMEZG
RkYpOworICAgICAgICAgICAgb3MuUHV0KHN0YXRpY19jYXN0PENoPigweEYwIHwgKChjb2RlcG9p
bnQgPj4gMTgpICYgMHhGRikpKTsKKyAgICAgICAgICAgIG9zLlB1dChzdGF0aWNfY2FzdDxDaD4o
MHg4MCB8ICgoY29kZXBvaW50ID4+IDEyKSAmIDB4M0YpKSk7CisgICAgICAgICAgICBvcy5QdXQo
c3RhdGljX2Nhc3Q8Q2g+KDB4ODAgfCAoKGNvZGVwb2ludCA+PiA2KSAmIDB4M0YpKSk7CisgICAg
ICAgICAgICBvcy5QdXQoc3RhdGljX2Nhc3Q8Q2g+KDB4ODAgfCAoY29kZXBvaW50ICYgMHgzRikp
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dFN0cmVh
bT4KKyAgICBzdGF0aWMgYm9vbCBEZWNvZGUoSW5wdXRTdHJlYW0mIGlzLCB1bnNpZ25lZCogY29k
ZXBvaW50KSB7CisjZGVmaW5lIENPUFkoKSBjID0gaXMuVGFrZSgpOyAqY29kZXBvaW50ID0gKCpj
b2RlcG9pbnQgPDwgNikgfCAoKHVuc2lnbmVkIGNoYXIpYyAmIDB4M0Z1KQorI2RlZmluZSBUUkFO
UyhtYXNrKSByZXN1bHQgJj0gKChHZXRSYW5nZSgodW5zaWduZWQgY2hhciljKSAmIG1hc2spICE9
IDApCisjZGVmaW5lIFRBSUwoKSBDT1BZKCk7IFRSQU5TKDB4NzApCisgICAgICAgIENoIGMgPSBp
cy5UYWtlKCk7CisgICAgICAgIGlmICghKGMgJiAweDgwKSkgeworICAgICAgICAgICAgKmNvZGVw
b2ludCA9ICh1bnNpZ25lZCBjaGFyKWM7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorCisgICAgICAgIHVuc2lnbmVkIGNoYXIgdHlwZSA9IEdldFJhbmdlKCh1bnNpZ25lZCBj
aGFyKWMpOworICAgICAgICAqY29kZXBvaW50ID0gKDB4RkYgPj4gdHlwZSkgJiAodW5zaWduZWQg
Y2hhciljOworICAgICAgICBib29sIHJlc3VsdCA9IHRydWU7CisgICAgICAgIHN3aXRjaCAodHlw
ZSkgeworICAgICAgICBjYXNlIDI6IFRBSUwoKTsgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgY2Fz
ZSAzOiBUQUlMKCk7IFRBSUwoKTsgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgY2FzZSA0OiBDT1BZ
KCk7IFRSQU5TKDB4NTApOyBUQUlMKCk7IHJldHVybiByZXN1bHQ7CisgICAgICAgIGNhc2UgNTog
Q09QWSgpOyBUUkFOUygweDEwKTsgVEFJTCgpOyBUQUlMKCk7IHJldHVybiByZXN1bHQ7CisgICAg
ICAgIGNhc2UgNjogVEFJTCgpOyBUQUlMKCk7IFRBSUwoKTsgcmV0dXJuIHJlc3VsdDsKKyAgICAg
ICAgY2FzZSAxMDogQ09QWSgpOyBUUkFOUygweDIwKTsgVEFJTCgpOyByZXR1cm4gcmVzdWx0Owor
ICAgICAgICBjYXNlIDExOiBDT1BZKCk7IFRSQU5TKDB4NjApOyBUQUlMKCk7IFRBSUwoKTsgcmV0
dXJuIHJlc3VsdDsKKyAgICAgICAgZGVmYXVsdDogcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisj
dW5kZWYgQ09QWQorI3VuZGVmIFRSQU5TCisjdW5kZWYgVEFJTAorICAgIH0KKworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBJbnB1dFN0cmVhbSwgdHlwZW5hbWUgT3V0cHV0U3RyZWFtPgorICAgIHN0
YXRpYyBib29sIFZhbGlkYXRlKElucHV0U3RyZWFtJiBpcywgT3V0cHV0U3RyZWFtJiBvcykgewor
I2RlZmluZSBDT1BZKCkgb3MuUHV0KGMgPSBpcy5UYWtlKCkpCisjZGVmaW5lIFRSQU5TKG1hc2sp
IHJlc3VsdCAmPSAoKEdldFJhbmdlKCh1bnNpZ25lZCBjaGFyKWMpICYgbWFzaykgIT0gMCkKKyNk
ZWZpbmUgVEFJTCgpIENPUFkoKTsgVFJBTlMoMHg3MCkKKyAgICAgICAgQ2ggYzsKKyAgICAgICAg
Q09QWSgpOworICAgICAgICBpZiAoIShjICYgMHg4MCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgICAgICBib29sIHJlc3VsdCA9IHRydWU7CisgICAgICAgIHN3aXRjaCAoR2V0UmFu
Z2UoKHVuc2lnbmVkIGNoYXIpYykpIHsKKyAgICAgICAgY2FzZSAyOiBUQUlMKCk7IHJldHVybiBy
ZXN1bHQ7CisgICAgICAgIGNhc2UgMzogVEFJTCgpOyBUQUlMKCk7IHJldHVybiByZXN1bHQ7Cisg
ICAgICAgIGNhc2UgNDogQ09QWSgpOyBUUkFOUygweDUwKTsgVEFJTCgpOyByZXR1cm4gcmVzdWx0
OworICAgICAgICBjYXNlIDU6IENPUFkoKTsgVFJBTlMoMHgxMCk7IFRBSUwoKTsgVEFJTCgpOyBy
ZXR1cm4gcmVzdWx0OworICAgICAgICBjYXNlIDY6IFRBSUwoKTsgVEFJTCgpOyBUQUlMKCk7IHJl
dHVybiByZXN1bHQ7CisgICAgICAgIGNhc2UgMTA6IENPUFkoKTsgVFJBTlMoMHgyMCk7IFRBSUwo
KTsgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgY2FzZSAxMTogQ09QWSgpOyBUUkFOUygweDYwKTsg
VEFJTCgpOyBUQUlMKCk7IHJldHVybiByZXN1bHQ7CisgICAgICAgIGRlZmF1bHQ6IHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorI3VuZGVmIENPUFkKKyN1bmRlZiBUUkFOUworI3VuZGVmIFRBSUwK
KyAgICB9CisKKyAgICBzdGF0aWMgdW5zaWduZWQgY2hhciBHZXRSYW5nZSh1bnNpZ25lZCBjaGFy
IGMpIHsKKyAgICAgICAgLy8gUmVmZXJyaW5nIHRvIERGQSBvZiBodHRwOi8vYmpvZXJuLmhvZWhy
bWFubi5kZS91dGYtOC9kZWNvZGVyL2RmYS8KKyAgICAgICAgLy8gV2l0aCBuZXcgbWFwcGluZyAx
IC0+IDB4MTAsIDcgLT4gMHgyMCwgOSAtPiAweDQwLCBzdWNoIHRoYXQgQU5EIG9wZXJhdGlvbiBj
YW4gdGVzdCBtdWx0aXBsZSB0eXBlcy4KKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo
YXIgdHlwZVtdID0geworICAgICAgICAgICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAs
MCwgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCisgICAgICAgICAgICAwLDAsMCww
LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLCAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAs
MCwKKyAgICAgICAgICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsICAwLDAsMCww
LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAorICAgICAgICAgICAgMCwwLDAsMCwwLDAsMCwwLDAs
MCwwLDAsMCwwLDAsMCwgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCisgICAgICAg
ICAgICAweDEwLDB4MTAsMHgxMCwweDEwLDB4MTAsMHgxMCwweDEwLDB4MTAsMHgxMCwweDEwLDB4
MTAsMHgxMCwweDEwLDB4MTAsMHgxMCwweDEwLAorICAgICAgICAgICAgMHg0MCwweDQwLDB4NDAs
MHg0MCwweDQwLDB4NDAsMHg0MCwweDQwLDB4NDAsMHg0MCwweDQwLDB4NDAsMHg0MCwweDQwLDB4
NDAsMHg0MCwKKyAgICAgICAgICAgIDB4MjAsMHgyMCwweDIwLDB4MjAsMHgyMCwweDIwLDB4MjAs
MHgyMCwweDIwLDB4MjAsMHgyMCwweDIwLDB4MjAsMHgyMCwweDIwLDB4MjAsCisgICAgICAgICAg
ICAweDIwLDB4MjAsMHgyMCwweDIwLDB4MjAsMHgyMCwweDIwLDB4MjAsMHgyMCwweDIwLDB4MjAs
MHgyMCwweDIwLDB4MjAsMHgyMCwweDIwLAorICAgICAgICAgICAgOCw4LDIsMiwyLDIsMiwyLDIs
MiwyLDIsMiwyLDIsMiwgIDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsCisgICAgICAg
ICAgICAxMCwzLDMsMywzLDMsMywzLDMsMywzLDMsMyw0LDMsMywgMTEsNiw2LDYsNSw4LDgsOCw4
LDgsOCw4LDgsOCw4LDgsCisgICAgICAgIH07CisgICAgICAgIHJldHVybiB0eXBlW2NdOworICAg
IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEJ5dGVTdHJlYW0+CisgICAgc3RhdGlj
IENoYXJUeXBlIFRha2VCT00oSW5wdXRCeXRlU3RyZWFtJiBpcykgeworICAgICAgICBSQVBJREpT
T05fU1RBVElDX0FTU0VSVChzaXplb2YodHlwZW5hbWUgSW5wdXRCeXRlU3RyZWFtOjpDaCkgPT0g
MSk7CisgICAgICAgIENoIGMgPSBUYWtlKGlzKTsKKyAgICAgICAgaWYgKCh1bnNpZ25lZCBjaGFy
KWMgIT0gMHhFRnUpIHJldHVybiBjOworICAgICAgICBjID0gaXMuVGFrZSgpOworICAgICAgICBp
ZiAoKHVuc2lnbmVkIGNoYXIpYyAhPSAweEJCdSkgcmV0dXJuIGM7CisgICAgICAgIGMgPSBpcy5U
YWtlKCk7CisgICAgICAgIGlmICgodW5zaWduZWQgY2hhciljICE9IDB4QkZ1KSByZXR1cm4gYzsK
KyAgICAgICAgYyA9IGlzLlRha2UoKTsKKyAgICAgICAgcmV0dXJuIGM7CisgICAgfQorCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIElucHV0Qnl0ZVN0cmVhbT4KKyAgICBzdGF0aWMgQ2ggVGFrZShJ
bnB1dEJ5dGVTdHJlYW0mIGlzKSB7CisgICAgICAgIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHNp
emVvZih0eXBlbmFtZSBJbnB1dEJ5dGVTdHJlYW06OkNoKSA9PSAxKTsKKyAgICAgICAgcmV0dXJu
IGlzLlRha2UoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3V0cHV0Qnl0ZVN0
cmVhbT4KKyAgICBzdGF0aWMgdm9pZCBQdXRCT00oT3V0cHV0Qnl0ZVN0cmVhbSYgb3MpIHsKKyAg
ICAgICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIE91dHB1dEJ5dGVT
dHJlYW06OkNoKSA9PSAxKTsKKyAgICAgICAgb3MuUHV0KDB4RUZ1KTsgb3MuUHV0KDB4QkJ1KTsg
b3MuUHV0KDB4QkZ1KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3V0cHV0Qnl0
ZVN0cmVhbT4KKyAgICBzdGF0aWMgdm9pZCBQdXQoT3V0cHV0Qnl0ZVN0cmVhbSYgb3MsIENoIGMp
IHsKKyAgICAgICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIE91dHB1
dEJ5dGVTdHJlYW06OkNoKSA9PSAxKTsKKyAgICAgICAgb3MuUHV0KHN0YXRpY19jYXN0PHR5cGVu
YW1lIE91dHB1dEJ5dGVTdHJlYW06OkNoPihjKSk7CisgICAgfQorfTsKKworLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLworLy8gVVRGMTYKKworLy8hIFVURi0xNiBlbmNvZGluZy4KKy8qISBodHRwOi8v
ZW4ud2lraXBlZGlhLm9yZy93aWtpL1VURi0xNgorICAgIGh0dHA6Ly90b29scy5pZXRmLm9yZy9o
dG1sL3JmYzI3ODEKKyAgICBcdHBhcmFtIENoYXJUeXBlIFR5cGUgZm9yIHN0b3JpbmcgMTYtYml0
IFVURi0xNiBkYXRhLiBEZWZhdWx0IGlzIHdjaGFyX3QuIEMrKzExIG1heSB1c2UgY2hhcjE2X3Qg
aW5zdGVhZC4KKyAgICBcbm90ZSBpbXBsZW1lbnRzIEVuY29kaW5nIGNvbmNlcHQKKworICAgIFxu
b3RlIEZvciBpbi1tZW1vcnkgYWNjZXNzLCBubyBuZWVkIHRvIGNvbmNlcm4gZW5kaWFubmVzcy4g
VGhlIGNvZGUgdW5pdHMgYW5kIGNvZGUgcG9pbnRzIGFyZSByZXByZXNlbnRlZCBieSBDUFUncyBl
bmRpYW5uZXNzLgorICAgIEZvciBzdHJlYW1pbmcsIHVzZSBVVEYxNkxFIGFuZCBVVEYxNkJFLCB3
aGljaCBoYW5kbGUgZW5kaWFubmVzcy4KKyovCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZSA9
IHdjaGFyX3Q+CitzdHJ1Y3QgVVRGMTYgeworICAgIHR5cGVkZWYgQ2hhclR5cGUgQ2g7CisgICAg
UkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKENoKSA+PSAyKTsKKworICAgIGVudW0geyBz
dXBwb3J0VW5pY29kZSA9IDEgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE91dHB1dFN0cmVh
bT4KKyAgICBzdGF0aWMgdm9pZCBFbmNvZGUoT3V0cHV0U3RyZWFtJiBvcywgdW5zaWduZWQgY29k
ZXBvaW50KSB7CisgICAgICAgIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHNpemVvZih0eXBlbmFt
ZSBPdXRwdXRTdHJlYW06OkNoKSA+PSAyKTsKKyAgICAgICAgaWYgKGNvZGVwb2ludCA8PSAweEZG
RkYpIHsKKyAgICAgICAgICAgIFJBUElESlNPTl9BU1NFUlQoY29kZXBvaW50IDwgMHhEODAwIHx8
IGNvZGVwb2ludCA+IDB4REZGRik7IC8vIENvZGUgcG9pbnQgaXRzZWxmIGNhbm5vdCBiZSBzdXJy
b2dhdGUgcGFpciAKKyAgICAgICAgICAgIG9zLlB1dChzdGF0aWNfY2FzdDx0eXBlbmFtZSBPdXRw
dXRTdHJlYW06OkNoPihjb2RlcG9pbnQpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIFJBUElESlNPTl9BU1NFUlQoY29kZXBvaW50IDw9IDB4MTBGRkZGKTsKKyAgICAg
ICAgICAgIHVuc2lnbmVkIHYgPSBjb2RlcG9pbnQgLSAweDEwMDAwOworICAgICAgICAgICAgb3Mu
UHV0KHN0YXRpY19jYXN0PHR5cGVuYW1lIE91dHB1dFN0cmVhbTo6Q2g+KCh2ID4+IDEwKSB8IDB4
RDgwMCkpOworICAgICAgICAgICAgb3MuUHV0KCh2ICYgMHgzRkYpIHwgMHhEQzAwKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dFN0cmVhbT4KKyAgICBz
dGF0aWMgYm9vbCBEZWNvZGUoSW5wdXRTdHJlYW0mIGlzLCB1bnNpZ25lZCogY29kZXBvaW50KSB7
CisgICAgICAgIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHNpemVvZih0eXBlbmFtZSBJbnB1dFN0
cmVhbTo6Q2gpID49IDIpOworICAgICAgICBDaCBjID0gaXMuVGFrZSgpOworICAgICAgICBpZiAo
YyA8IDB4RDgwMCB8fCBjID4gMHhERkZGKSB7CisgICAgICAgICAgICAqY29kZXBvaW50ID0gYzsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGMg
PD0gMHhEQkZGKSB7CisgICAgICAgICAgICAqY29kZXBvaW50ID0gKGMgJiAweDNGRikgPDwgMTA7
CisgICAgICAgICAgICBjID0gaXMuVGFrZSgpOworICAgICAgICAgICAgKmNvZGVwb2ludCB8PSAo
YyAmIDB4M0ZGKTsKKyAgICAgICAgICAgICpjb2RlcG9pbnQgKz0gMHgxMDAwMDsKKyAgICAgICAg
ICAgIHJldHVybiBjID49IDB4REMwMCAmJiBjIDw9IDB4REZGRjsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0U3Ry
ZWFtLCB0eXBlbmFtZSBPdXRwdXRTdHJlYW0+CisgICAgc3RhdGljIGJvb2wgVmFsaWRhdGUoSW5w
dXRTdHJlYW0mIGlzLCBPdXRwdXRTdHJlYW0mIG9zKSB7CisgICAgICAgIFJBUElESlNPTl9TVEFU
SUNfQVNTRVJUKHNpemVvZih0eXBlbmFtZSBJbnB1dFN0cmVhbTo6Q2gpID49IDIpOworICAgICAg
ICBSQVBJREpTT05fU1RBVElDX0FTU0VSVChzaXplb2YodHlwZW5hbWUgT3V0cHV0U3RyZWFtOjpD
aCkgPj0gMik7CisgICAgICAgIENoIGM7CisgICAgICAgIG9zLlB1dChjID0gaXMuVGFrZSgpKTsK
KyAgICAgICAgaWYgKGMgPCAweEQ4MDAgfHwgYyA+IDB4REZGRikKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICBlbHNlIGlmIChjIDw9IDB4REJGRikgeworICAgICAgICAgICAgb3Mu
UHV0KGMgPSBpcy5UYWtlKCkpOworICAgICAgICAgICAgcmV0dXJuIGMgPj0gMHhEQzAwICYmIGMg
PD0gMHhERkZGOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9Owor
CisvLyEgVVRGLTE2IGxpdHRsZSBlbmRpYW4gZW5jb2RpbmcuCit0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyVHlwZSA9IHdjaGFyX3Q+CitzdHJ1Y3QgVVRGMTZMRSA6IFVURjE2PENoYXJUeXBlPiB7Cisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0Qnl0ZVN0cmVhbT4KKyAgICBzdGF0aWMgQ2hhclR5
cGUgVGFrZUJPTShJbnB1dEJ5dGVTdHJlYW0mIGlzKSB7CisgICAgICAgIFJBUElESlNPTl9TVEFU
SUNfQVNTRVJUKHNpemVvZih0eXBlbmFtZSBJbnB1dEJ5dGVTdHJlYW06OkNoKSA9PSAxKTsKKyAg
ICAgICAgQ2hhclR5cGUgYyA9IFRha2UoaXMpOworICAgICAgICByZXR1cm4gKHVuc2lnbmVkIHNo
b3J0KWMgPT0gMHhGRUZGdSA/IFRha2UoaXMpIDogYzsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgSW5wdXRCeXRlU3RyZWFtPgorICAgIHN0YXRpYyBDaGFyVHlwZSBUYWtlKElucHV0
Qnl0ZVN0cmVhbSYgaXMpIHsKKyAgICAgICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9m
KHR5cGVuYW1lIElucHV0Qnl0ZVN0cmVhbTo6Q2gpID09IDEpOworICAgICAgICBDaGFyVHlwZSBj
ID0gKHVuc2lnbmVkIGNoYXIpaXMuVGFrZSgpOworICAgICAgICBjIHw9ICh1bnNpZ25lZCBjaGFy
KWlzLlRha2UoKSA8PCA4OworICAgICAgICByZXR1cm4gYzsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVhbT4KKyAgICBzdGF0aWMgdm9pZCBQdXRCT00oT3V0
cHV0Qnl0ZVN0cmVhbSYgb3MpIHsKKyAgICAgICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6
ZW9mKHR5cGVuYW1lIE91dHB1dEJ5dGVTdHJlYW06OkNoKSA9PSAxKTsKKyAgICAgICAgb3MuUHV0
KDB4RkZ1KTsgb3MuUHV0KDB4RkV1KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
T3V0cHV0Qnl0ZVN0cmVhbT4KKyAgICBzdGF0aWMgdm9pZCBQdXQoT3V0cHV0Qnl0ZVN0cmVhbSYg
b3MsIENoYXJUeXBlIGMpIHsKKyAgICAgICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9m
KHR5cGVuYW1lIE91dHB1dEJ5dGVTdHJlYW06OkNoKSA9PSAxKTsKKyAgICAgICAgb3MuUHV0KGMg
JiAweEZGdSk7CisgICAgICAgIG9zLlB1dCgoYyA+PiA4KSAmIDB4RkZ1KTsKKyAgICB9Cit9Owor
CisvLyEgVVRGLTE2IGJpZyBlbmRpYW4gZW5jb2RpbmcuCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
VHlwZSA9IHdjaGFyX3Q+CitzdHJ1Y3QgVVRGMTZCRSA6IFVURjE2PENoYXJUeXBlPiB7CisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIElucHV0Qnl0ZVN0cmVhbT4KKyAgICBzdGF0aWMgQ2hhclR5cGUg
VGFrZUJPTShJbnB1dEJ5dGVTdHJlYW0mIGlzKSB7CisgICAgICAgIFJBUElESlNPTl9TVEFUSUNf
QVNTRVJUKHNpemVvZih0eXBlbmFtZSBJbnB1dEJ5dGVTdHJlYW06OkNoKSA9PSAxKTsKKyAgICAg
ICAgQ2hhclR5cGUgYyA9IFRha2UoaXMpOworICAgICAgICByZXR1cm4gKHVuc2lnbmVkIHNob3J0
KWMgPT0gMHhGRUZGdSA/IFRha2UoaXMpIDogYzsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSW5wdXRCeXRlU3RyZWFtPgorICAgIHN0YXRpYyBDaGFyVHlwZSBUYWtlKElucHV0Qnl0
ZVN0cmVhbSYgaXMpIHsKKyAgICAgICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5
cGVuYW1lIElucHV0Qnl0ZVN0cmVhbTo6Q2gpID09IDEpOworICAgICAgICBDaGFyVHlwZSBjID0g
KHVuc2lnbmVkIGNoYXIpaXMuVGFrZSgpIDw8IDg7CisgICAgICAgIGMgfD0gKHVuc2lnbmVkIGNo
YXIpaXMuVGFrZSgpOworICAgICAgICByZXR1cm4gYzsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVhbT4KKyAgICBzdGF0aWMgdm9pZCBQdXRCT00oT3V0cHV0
Qnl0ZVN0cmVhbSYgb3MpIHsKKyAgICAgICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9m
KHR5cGVuYW1lIE91dHB1dEJ5dGVTdHJlYW06OkNoKSA9PSAxKTsKKyAgICAgICAgb3MuUHV0KDB4
RkV1KTsgb3MuUHV0KDB4RkZ1KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3V0
cHV0Qnl0ZVN0cmVhbT4KKyAgICBzdGF0aWMgdm9pZCBQdXQoT3V0cHV0Qnl0ZVN0cmVhbSYgb3Ms
IENoYXJUeXBlIGMpIHsKKyAgICAgICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5
cGVuYW1lIE91dHB1dEJ5dGVTdHJlYW06OkNoKSA9PSAxKTsKKyAgICAgICAgb3MuUHV0KChjID4+
IDgpICYgMHhGRnUpOworICAgICAgICBvcy5QdXQoYyAmIDB4RkZ1KTsKKyAgICB9Cit9OworCisv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBVVEYzMgorCisvLyEgVVRGLTMyIGVuY29kaW5nLiAK
Ky8qISBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VURi0zMgorICAgIFx0cGFyYW0gQ2hh
clR5cGUgVHlwZSBmb3Igc3RvcmluZyAzMi1iaXQgVVRGLTMyIGRhdGEuIERlZmF1bHQgaXMgdW5z
aWduZWQuIEMrKzExIG1heSB1c2UgY2hhcjMyX3QgaW5zdGVhZC4KKyAgICBcbm90ZSBpbXBsZW1l
bnRzIEVuY29kaW5nIGNvbmNlcHQKKworICAgIFxub3RlIEZvciBpbi1tZW1vcnkgYWNjZXNzLCBu
byBuZWVkIHRvIGNvbmNlcm4gZW5kaWFubmVzcy4gVGhlIGNvZGUgdW5pdHMgYW5kIGNvZGUgcG9p
bnRzIGFyZSByZXByZXNlbnRlZCBieSBDUFUncyBlbmRpYW5uZXNzLgorICAgIEZvciBzdHJlYW1p
bmcsIHVzZSBVVEYzMkxFIGFuZCBVVEYzMkJFLCB3aGljaCBoYW5kbGUgZW5kaWFubmVzcy4KKyov
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZSA9IHVuc2lnbmVkPgorc3RydWN0IFVURjMyIHsK
KyAgICB0eXBlZGVmIENoYXJUeXBlIENoOworICAgIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHNp
emVvZihDaCkgPj0gNCk7CisKKyAgICBlbnVtIHsgc3VwcG9ydFVuaWNvZGUgPSAxIH07CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdXRwdXRTdHJlYW0+CisgICAgc3RhdGljIHZvaWQgRW5jb2Rl
KE91dHB1dFN0cmVhbSYgb3MsIHVuc2lnbmVkIGNvZGVwb2ludCkgeworICAgICAgICBSQVBJREpT
T05fU1RBVElDX0FTU0VSVChzaXplb2YodHlwZW5hbWUgT3V0cHV0U3RyZWFtOjpDaCkgPj0gNCk7
CisgICAgICAgIFJBUElESlNPTl9BU1NFUlQoY29kZXBvaW50IDw9IDB4MTBGRkZGKTsKKyAgICAg
ICAgb3MuUHV0KGNvZGVwb2ludCk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIElu
cHV0U3RyZWFtPgorICAgIHN0YXRpYyBib29sIERlY29kZShJbnB1dFN0cmVhbSYgaXMsIHVuc2ln
bmVkKiBjb2RlcG9pbnQpIHsKKyAgICAgICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9m
KHR5cGVuYW1lIElucHV0U3RyZWFtOjpDaCkgPj0gNCk7CisgICAgICAgIENoIGMgPSBpcy5UYWtl
KCk7CisgICAgICAgICpjb2RlcG9pbnQgPSBjOworICAgICAgICByZXR1cm4gYyA8PSAweDEwRkZG
RjsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRTdHJlYW0sIHR5cGVuYW1l
IE91dHB1dFN0cmVhbT4KKyAgICBzdGF0aWMgYm9vbCBWYWxpZGF0ZShJbnB1dFN0cmVhbSYgaXMs
IE91dHB1dFN0cmVhbSYgb3MpIHsKKyAgICAgICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6
ZW9mKHR5cGVuYW1lIElucHV0U3RyZWFtOjpDaCkgPj0gNCk7CisgICAgICAgIENoIGM7CisgICAg
ICAgIG9zLlB1dChjID0gaXMuVGFrZSgpKTsKKyAgICAgICAgcmV0dXJuIGMgPD0gMHgxMEZGRkY7
CisgICAgfQorfTsKKworLy8hIFVURi0zMiBsaXR0bGUgZW5kaWFuIGVub2NvZGluZy4KK3RlbXBs
YXRlPHR5cGVuYW1lIENoYXJUeXBlID0gdW5zaWduZWQ+CitzdHJ1Y3QgVVRGMzJMRSA6IFVURjMy
PENoYXJUeXBlPiB7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0Qnl0ZVN0cmVhbT4KKyAg
ICBzdGF0aWMgQ2hhclR5cGUgVGFrZUJPTShJbnB1dEJ5dGVTdHJlYW0mIGlzKSB7CisgICAgICAg
IFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHNpemVvZih0eXBlbmFtZSBJbnB1dEJ5dGVTdHJlYW06
OkNoKSA9PSAxKTsKKyAgICAgICAgQ2hhclR5cGUgYyA9IFRha2UoaXMpOworICAgICAgICByZXR1
cm4gKHVuc2lnbmVkKWMgPT0gMHgwMDAwRkVGRnUgPyBUYWtlKGlzKSA6IGM7CisgICAgfQorCisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0Qnl0ZVN0cmVhbT4KKyAgICBzdGF0aWMgQ2hhclR5
cGUgVGFrZShJbnB1dEJ5dGVTdHJlYW0mIGlzKSB7CisgICAgICAgIFJBUElESlNPTl9TVEFUSUNf
QVNTRVJUKHNpemVvZih0eXBlbmFtZSBJbnB1dEJ5dGVTdHJlYW06OkNoKSA9PSAxKTsKKyAgICAg
ICAgQ2hhclR5cGUgYyA9ICh1bnNpZ25lZCBjaGFyKWlzLlRha2UoKTsKKyAgICAgICAgYyB8PSAo
dW5zaWduZWQgY2hhcilpcy5UYWtlKCkgPDwgODsKKyAgICAgICAgYyB8PSAodW5zaWduZWQgY2hh
cilpcy5UYWtlKCkgPDwgMTY7CisgICAgICAgIGMgfD0gKHVuc2lnbmVkIGNoYXIpaXMuVGFrZSgp
IDw8IDI0OworICAgICAgICByZXR1cm4gYzsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgT3V0cHV0Qnl0ZVN0cmVhbT4KKyAgICBzdGF0aWMgdm9pZCBQdXRCT00oT3V0cHV0Qnl0ZVN0
cmVhbSYgb3MpIHsKKyAgICAgICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVu
YW1lIE91dHB1dEJ5dGVTdHJlYW06OkNoKSA9PSAxKTsKKyAgICAgICAgb3MuUHV0KDB4RkZ1KTsg
b3MuUHV0KDB4RkV1KTsgb3MuUHV0KDB4MDB1KTsgb3MuUHV0KDB4MDB1KTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVhbT4KKyAgICBzdGF0aWMgdm9pZCBQ
dXQoT3V0cHV0Qnl0ZVN0cmVhbSYgb3MsIENoYXJUeXBlIGMpIHsKKyAgICAgICAgUkFQSURKU09O
X1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIE91dHB1dEJ5dGVTdHJlYW06OkNoKSA9PSAx
KTsKKyAgICAgICAgb3MuUHV0KGMgJiAweEZGdSk7CisgICAgICAgIG9zLlB1dCgoYyA+PiA4KSAm
IDB4RkZ1KTsKKyAgICAgICAgb3MuUHV0KChjID4+IDE2KSAmIDB4RkZ1KTsKKyAgICAgICAgb3Mu
UHV0KChjID4+IDI0KSAmIDB4RkZ1KTsKKyAgICB9Cit9OworCisvLyEgVVRGLTMyIGJpZyBlbmRp
YW4gZW5jb2RpbmcuCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZSA9IHVuc2lnbmVkPgorc3Ry
dWN0IFVURjMyQkUgOiBVVEYzMjxDaGFyVHlwZT4geworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJ
bnB1dEJ5dGVTdHJlYW0+CisgICAgc3RhdGljIENoYXJUeXBlIFRha2VCT00oSW5wdXRCeXRlU3Ry
ZWFtJiBpcykgeworICAgICAgICBSQVBJREpTT05fU1RBVElDX0FTU0VSVChzaXplb2YodHlwZW5h
bWUgSW5wdXRCeXRlU3RyZWFtOjpDaCkgPT0gMSk7CisgICAgICAgIENoYXJUeXBlIGMgPSBUYWtl
KGlzKTsKKyAgICAgICAgcmV0dXJuICh1bnNpZ25lZCljID09IDB4MDAwMEZFRkZ1ID8gVGFrZShp
cykgOiBjOyAKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRCeXRlU3RyZWFt
PgorICAgIHN0YXRpYyBDaGFyVHlwZSBUYWtlKElucHV0Qnl0ZVN0cmVhbSYgaXMpIHsKKyAgICAg
ICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIElucHV0Qnl0ZVN0cmVh
bTo6Q2gpID09IDEpOworICAgICAgICBDaGFyVHlwZSBjID0gKHVuc2lnbmVkIGNoYXIpaXMuVGFr
ZSgpIDw8IDI0OworICAgICAgICBjIHw9ICh1bnNpZ25lZCBjaGFyKWlzLlRha2UoKSA8PCAxNjsK
KyAgICAgICAgYyB8PSAodW5zaWduZWQgY2hhcilpcy5UYWtlKCkgPDwgODsKKyAgICAgICAgYyB8
PSAodW5zaWduZWQgY2hhcilpcy5UYWtlKCk7CisgICAgICAgIHJldHVybiBjOworICAgIH0KKwor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPdXRwdXRCeXRlU3RyZWFtPgorICAgIHN0YXRpYyB2b2lk
IFB1dEJPTShPdXRwdXRCeXRlU3RyZWFtJiBvcykgeworICAgICAgICBSQVBJREpTT05fU1RBVElD
X0FTU0VSVChzaXplb2YodHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVhbTo6Q2gpID09IDEpOworICAg
ICAgICBvcy5QdXQoMHgwMHUpOyBvcy5QdXQoMHgwMHUpOyBvcy5QdXQoMHhGRXUpOyBvcy5QdXQo
MHhGRnUpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPdXRwdXRCeXRlU3RyZWFt
PgorICAgIHN0YXRpYyB2b2lkIFB1dChPdXRwdXRCeXRlU3RyZWFtJiBvcywgQ2hhclR5cGUgYykg
eworICAgICAgICBSQVBJREpTT05fU1RBVElDX0FTU0VSVChzaXplb2YodHlwZW5hbWUgT3V0cHV0
Qnl0ZVN0cmVhbTo6Q2gpID09IDEpOworICAgICAgICBvcy5QdXQoKGMgPj4gMjQpICYgMHhGRnUp
OworICAgICAgICBvcy5QdXQoKGMgPj4gMTYpICYgMHhGRnUpOworICAgICAgICBvcy5QdXQoKGMg
Pj4gOCkgJiAweEZGdSk7CisgICAgICAgIG9zLlB1dChjICYgMHhGRnUpOworICAgIH0KK307CisK
Ky8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIEFTQ0lJCisKKy8vISBBU0NJSSBlbmNvZGluZy4K
Ky8qISBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FTQ0lJCisgICAgXHRwYXJhbSBDaGFy
VHlwZSBDb2RlIHVuaXQgZm9yIHN0b3JpbmcgNy1iaXQgQVNDSUkgZGF0YS4gRGVmYXVsdCBpcyBj
aGFyLgorICAgIFxub3RlIGltcGxlbWVudHMgRW5jb2RpbmcgY29uY2VwdAorKi8KK3RlbXBsYXRl
PHR5cGVuYW1lIENoYXJUeXBlID0gY2hhcj4KK3N0cnVjdCBBU0NJSSB7CisgICAgdHlwZWRlZiBD
aGFyVHlwZSBDaDsKKworICAgIGVudW0geyBzdXBwb3J0VW5pY29kZSA9IDAgfTsKKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE91dHB1dFN0cmVhbT4KKyAgICBzdGF0aWMgdm9pZCBFbmNvZGUoT3V0
cHV0U3RyZWFtJiBvcywgdW5zaWduZWQgY29kZXBvaW50KSB7CisgICAgICAgIFJBUElESlNPTl9B
U1NFUlQoY29kZXBvaW50IDw9IDB4N0YpOworICAgICAgICBvcy5QdXQoc3RhdGljX2Nhc3Q8Q2g+
KGNvZGVwb2ludCAmIDB4RkYpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5w
dXRTdHJlYW0+CisgICAgc3RhdGljIGJvb2wgRGVjb2RlKElucHV0U3RyZWFtJiBpcywgdW5zaWdu
ZWQqIGNvZGVwb2ludCkgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyPihpcy5UYWtlKCkpOworICAgICAgICAqY29kZXBvaW50ID0gYzsKKyAgICAg
ICAgcmV0dXJuIGMgPD0gMFg3RjsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5w
dXRTdHJlYW0sIHR5cGVuYW1lIE91dHB1dFN0cmVhbT4KKyAgICBzdGF0aWMgYm9vbCBWYWxpZGF0
ZShJbnB1dFN0cmVhbSYgaXMsIE91dHB1dFN0cmVhbSYgb3MpIHsKKyAgICAgICAgdW5zaWduZWQg
Y2hhciBjID0gaXMuVGFrZSgpOworICAgICAgICBvcy5QdXQoYyk7CisgICAgICAgIHJldHVybiBj
IDw9IDB4N0Y7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0Qnl0ZVN0cmVh
bT4KKyAgICBzdGF0aWMgQ2hhclR5cGUgVGFrZUJPTShJbnB1dEJ5dGVTdHJlYW0mIGlzKSB7Cisg
ICAgICAgIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHNpemVvZih0eXBlbmFtZSBJbnB1dEJ5dGVT
dHJlYW06OkNoKSA9PSAxKTsKKyAgICAgICAgQ2ggYyA9IFRha2UoaXMpOworICAgICAgICByZXR1
cm4gYzsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRCeXRlU3RyZWFtPgor
ICAgIHN0YXRpYyBDaCBUYWtlKElucHV0Qnl0ZVN0cmVhbSYgaXMpIHsKKyAgICAgICAgUkFQSURK
U09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIElucHV0Qnl0ZVN0cmVhbTo6Q2gpID09
IDEpOworICAgICAgICByZXR1cm4gaXMuVGFrZSgpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBPdXRwdXRCeXRlU3RyZWFtPgorICAgIHN0YXRpYyB2b2lkIFB1dEJPTShPdXRwdXRC
eXRlU3RyZWFtJiBvcykgeworICAgICAgICBSQVBJREpTT05fU1RBVElDX0FTU0VSVChzaXplb2Yo
dHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVhbTo6Q2gpID09IDEpOworICAgICAgICAodm9pZClvczsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVhbT4KKyAgICBz
dGF0aWMgdm9pZCBQdXQoT3V0cHV0Qnl0ZVN0cmVhbSYgb3MsIENoIGMpIHsKKyAgICAgICAgUkFQ
SURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIE91dHB1dEJ5dGVTdHJlYW06OkNo
KSA9PSAxKTsKKyAgICAgICAgb3MuUHV0KHN0YXRpY19jYXN0PHR5cGVuYW1lIE91dHB1dEJ5dGVT
dHJlYW06OkNoPihjKSk7CisgICAgfQorfTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8g
QXV0b1VURgorCisvLyEgUnVudGltZS1zcGVjaWZpZWQgVVRGIGVuY29kaW5nIHR5cGUgb2YgYSBz
dHJlYW0uCitlbnVtIFVURlR5cGUgeworICAgIGtVVEY4ID0gMCwgICAgICAvLyE8IFVURi04Lgor
ICAgIGtVVEYxNkxFID0gMSwgICAvLyE8IFVURi0xNiBsaXR0bGUgZW5kaWFuLgorICAgIGtVVEYx
NkJFID0gMiwgICAvLyE8IFVURi0xNiBiaWcgZW5kaWFuLgorICAgIGtVVEYzMkxFID0gMywgICAv
LyE8IFVURi0zMiBsaXR0bGUgZW5kaWFuLgorICAgIGtVVEYzMkJFID0gNCAgICAvLyE8IFVURi0z
MiBiaWcgZW5kaWFuLgorfTsKKworLy8hIER5bmFtaWNhbGx5IHNlbGVjdCBlbmNvZGluZyBhY2Nv
cmRpbmcgdG8gc3RyZWFtJ3MgcnVudGltZS1zcGVjaWZpZWQgVVRGIGVuY29kaW5nIHR5cGUuCisv
KiEgXG5vdGUgVGhpcyBjbGFzcyBjYW4gYmUgdXNlZCB3aXRoIEF1dG9VVEZJbnB1dHRTdHJlYW0g
YW5kIEF1dG9VVEZPdXRwdXRTdHJlYW0sIHdoaWNoIHByb3ZpZGVzIEdldFR5cGUoKS4KKyovCit0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZT4KK3N0cnVjdCBBdXRvVVRGIHsKKyAgICB0eXBlZGVm
IENoYXJUeXBlIENoOworCisgICAgZW51bSB7IHN1cHBvcnRVbmljb2RlID0gMSB9OworCisjZGVm
aW5lIFJBUElESlNPTl9FTkNPRElOR1NfRlVOQyh4KSBVVEY4PENoPjo6eCwgVVRGMTZMRTxDaD46
OngsIFVURjE2QkU8Q2g+Ojp4LCBVVEYzMkxFPENoPjo6eCwgVVRGMzJCRTxDaD46OngKKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE91dHB1dFN0cmVhbT4KKyAgICBSQVBJREpTT05fRk9SQ0VJTkxJ
TkUgc3RhdGljIHZvaWQgRW5jb2RlKE91dHB1dFN0cmVhbSYgb3MsIHVuc2lnbmVkIGNvZGVwb2lu
dCkgeworICAgICAgICB0eXBlZGVmIHZvaWQgKCpFbmNvZGVGdW5jKShPdXRwdXRTdHJlYW0mLCB1
bnNpZ25lZCk7CisgICAgICAgIHN0YXRpYyBjb25zdCBFbmNvZGVGdW5jIGZbXSA9IHsgUkFQSURK
U09OX0VOQ09ESU5HU19GVU5DKEVuY29kZSkgfTsKKyAgICAgICAgKCpmW29zLkdldFR5cGUoKV0p
KG9zLCBjb2RlcG9pbnQpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dFN0
cmVhbT4KKyAgICBSQVBJREpTT05fRk9SQ0VJTkxJTkUgc3RhdGljIGJvb2wgRGVjb2RlKElucHV0
U3RyZWFtJiBpcywgdW5zaWduZWQqIGNvZGVwb2ludCkgeworICAgICAgICB0eXBlZGVmIGJvb2wg
KCpEZWNvZGVGdW5jKShJbnB1dFN0cmVhbSYsIHVuc2lnbmVkKik7CisgICAgICAgIHN0YXRpYyBj
b25zdCBEZWNvZGVGdW5jIGZbXSA9IHsgUkFQSURKU09OX0VOQ09ESU5HU19GVU5DKERlY29kZSkg
fTsKKyAgICAgICAgcmV0dXJuICgqZltpcy5HZXRUeXBlKCldKShpcywgY29kZXBvaW50KTsKKyAg
ICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRTdHJlYW0sIHR5cGVuYW1lIE91dHB1
dFN0cmVhbT4KKyAgICBSQVBJREpTT05fRk9SQ0VJTkxJTkUgc3RhdGljIGJvb2wgVmFsaWRhdGUo
SW5wdXRTdHJlYW0mIGlzLCBPdXRwdXRTdHJlYW0mIG9zKSB7CisgICAgICAgIHR5cGVkZWYgYm9v
bCAoKlZhbGlkYXRlRnVuYykoSW5wdXRTdHJlYW0mLCBPdXRwdXRTdHJlYW0mKTsKKyAgICAgICAg
c3RhdGljIGNvbnN0IFZhbGlkYXRlRnVuYyBmW10gPSB7IFJBUElESlNPTl9FTkNPRElOR1NfRlVO
QyhWYWxpZGF0ZSkgfTsKKyAgICAgICAgcmV0dXJuICgqZltpcy5HZXRUeXBlKCldKShpcywgb3Mp
OworICAgIH0KKworI3VuZGVmIFJBUElESlNPTl9FTkNPRElOR1NfRlVOQworfTsKKworLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLworLy8gVHJhbnNjb2RlcgorCisvLyEgRW5jb2RpbmcgY29udmVyc2lv
bi4KK3RlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZUVuY29kaW5nLCB0eXBlbmFtZSBUYXJnZXRFbmNv
ZGluZz4KK3N0cnVjdCBUcmFuc2NvZGVyIHsKKyAgICAvLyEgVGFrZSBvbmUgVW5pY29kZSBjb2Rl
cG9pbnQgZnJvbSBzb3VyY2UgZW5jb2RpbmcsIGNvbnZlcnQgaXQgdG8gdGFyZ2V0IGVuY29kaW5n
IGFuZCBwdXQgaXQgdG8gdGhlIG91dHB1dCBzdHJlYW0uCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
SW5wdXRTdHJlYW0sIHR5cGVuYW1lIE91dHB1dFN0cmVhbT4KKyAgICBSQVBJREpTT05fRk9SQ0VJ
TkxJTkUgc3RhdGljIGJvb2wgVHJhbnNjb2RlKElucHV0U3RyZWFtJiBpcywgT3V0cHV0U3RyZWFt
JiBvcykgeworICAgICAgICB1bnNpZ25lZCBjb2RlcG9pbnQ7CisgICAgICAgIGlmICghU291cmNl
RW5jb2Rpbmc6OkRlY29kZShpcywgJmNvZGVwb2ludCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIFRhcmdldEVuY29kaW5nOjpFbmNvZGUob3MsIGNvZGVwb2ludCk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vISBWYWxpZGF0ZSBvbmUgVW5pY29kZSBj
b2RlcG9pbnQgZnJvbSBhbiBlbmNvZGVkIHN0cmVhbS4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJ
bnB1dFN0cmVhbSwgdHlwZW5hbWUgT3V0cHV0U3RyZWFtPgorICAgIFJBUElESlNPTl9GT1JDRUlO
TElORSBzdGF0aWMgYm9vbCBWYWxpZGF0ZShJbnB1dFN0cmVhbSYgaXMsIE91dHB1dFN0cmVhbSYg
b3MpIHsKKyAgICAgICAgcmV0dXJuIFRyYW5zY29kZShpcywgb3MpOyAgIC8vIFNpbmNlIHNvdXJj
ZS90YXJnZXQgZW5jb2RpbmcgaXMgZGlmZmVyZW50LCBtdXN0IHRyYW5zY29kZS4KKyAgICB9Cit9
OworCisvLyEgU3BlY2lhbGl6YXRpb24gb2YgVHJhbnNjb2RlciB3aXRoIHNhbWUgc291cmNlIGFu
ZCB0YXJnZXQgZW5jb2RpbmcuCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGluZz4KK3N0cnVjdCBU
cmFuc2NvZGVyPEVuY29kaW5nLCBFbmNvZGluZz4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIElu
cHV0U3RyZWFtLCB0eXBlbmFtZSBPdXRwdXRTdHJlYW0+CisgICAgUkFQSURKU09OX0ZPUkNFSU5M
SU5FIHN0YXRpYyBib29sIFRyYW5zY29kZShJbnB1dFN0cmVhbSYgaXMsIE91dHB1dFN0cmVhbSYg
b3MpIHsKKyAgICAgICAgb3MuUHV0KGlzLlRha2UoKSk7ICAvLyBKdXN0IGNvcHkgb25lIGNvZGUg
dW5pdC4gVGhpcyBzZW1hbnRpYyBpcyBkaWZmZXJlbnQgZnJvbSBwcmltYXJ5IHRlbXBsYXRlIGNs
YXNzLgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgSW5wdXRTdHJlYW0sIHR5cGVuYW1lIE91dHB1dFN0cmVhbT4KKyAgICBSQVBJREpTT05f
Rk9SQ0VJTkxJTkUgc3RhdGljIGJvb2wgVmFsaWRhdGUoSW5wdXRTdHJlYW0mIGlzLCBPdXRwdXRT
dHJlYW0mIG9zKSB7CisgICAgICAgIHJldHVybiBFbmNvZGluZzo6VmFsaWRhdGUoaXMsIG9zKTsg
IC8vIHNvdXJjZS90YXJnZXQgZW5jb2RpbmcgYXJlIHRoZSBzYW1lCisgICAgfQorfTsKKworUkFQ
SURKU09OX05BTUVTUEFDRV9FTkQKKworI2lmIGRlZmluZWQoX19HTlVDX18pIHx8IGRlZmluZWQo
X01TVl9WRVIpCitSQVBJREpTT05fRElBR19QT1AKKyNlbmRpZgorCisjZW5kaWYgLy8gUkFQSURK
U09OX0VOQ09ESU5HU19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9maWxlcmVhZHN0cmVhbS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9w
YXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vZmlsZXJlYWRzdHJlYW0uaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkv
cmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ZpbGVyZWFkc3RyZWFtLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw5NCBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExIE1pbG8gWWlwCisvLwor
Ly8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBw
ZXJzb24gb2J0YWluaW5nIGEgY29weQorLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl
ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKKy8vIGluIHRo
ZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0
aW9uIHRoZSByaWdodHMKKy8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwg
ZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKKy8vIGNvcGllcyBvZiB0aGUgU29m
dHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLy8g
ZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoK
Ky8vCisvLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5v
dGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw
b3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisvLworLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVE
ICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKy8vIElN
UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZLAorLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5P
TklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisvLyBBVVRIT1JTIE9SIENPUFlS
SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisv
LyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9U
SEVSV0lTRSwgQVJJU0lORyBGUk9NLAorLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBU
SEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgorLy8gVEhFIFNPRlRX
QVJFLgorCisjaWZuZGVmIFJBUElESlNPTl9GSUxFUkVBRFNUUkVBTV9IXworI2RlZmluZSBSQVBJ
REpTT05fRklMRVJFQURTVFJFQU1fSF8KKworI2luY2x1ZGUgInJhcGlkanNvbi5oIgorI2luY2x1
ZGUgPGNzdGRpbz4KKworUkFQSURKU09OX05BTUVTUEFDRV9CRUdJTgorCisvLyEgRmlsZSBieXRl
IHN0cmVhbSBmb3IgaW5wdXQgdXNpbmcgZnJlYWQoKS4KKy8qIQorICAgIFxub3RlIGltcGxlbWVu
dHMgU3RyZWFtIGNvbmNlcHQKKyovCitjbGFzcyBGaWxlUmVhZFN0cmVhbSB7CitwdWJsaWM6Cisg
ICAgdHlwZWRlZiBjaGFyIENoOyAgICAvLyE8IENoYXJhY3RlciB0eXBlIChieXRlKS4KKworICAg
IC8vISBDb25zdHJ1Y3Rvci4KKyAgICAvKiEKKyAgICAgICAgXHBhcmFtIGZwIEZpbGUgcG9pbnRl
ciBvcGVuZWQgZm9yIHJlYWQuCisgICAgICAgIFxwYXJhbSBidWZmZXIgdXNlci1zdXBwbGllZCBi
dWZmZXIuCisgICAgICAgIFxwYXJhbSBidWZmZXJTaXplIHNpemUgb2YgYnVmZmVyIGluIGJ5dGVz
LiBNdXN0ID49NCBieXRlcy4KKyAgICAqLworICAgIEZpbGVSZWFkU3RyZWFtKHN0ZDo6RklMRSog
ZnAsIGNoYXIqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUpIDogZnBfKGZwKSwgYnVmZmVyXyhi
dWZmZXIpLCBidWZmZXJTaXplXyhidWZmZXJTaXplKSwgYnVmZmVyTGFzdF8oMCksIGN1cnJlbnRf
KGJ1ZmZlcl8pLCByZWFkQ291bnRfKDApLCBjb3VudF8oMCksIGVvZl8oZmFsc2UpIHsgCisgICAg
ICAgIFJBUElESlNPTl9BU1NFUlQoZnBfICE9IDApOworICAgICAgICBSQVBJREpTT05fQVNTRVJU
KGJ1ZmZlclNpemUgPj0gNCk7CisgICAgICAgIFJlYWQoKTsKKyAgICB9CisKKyAgICBDaCBQZWVr
KCkgY29uc3QgeyByZXR1cm4gKmN1cnJlbnRfOyB9CisgICAgQ2ggVGFrZSgpIHsgQ2ggYyA9ICpj
dXJyZW50XzsgUmVhZCgpOyByZXR1cm4gYzsgfQorICAgIHNpemVfdCBUZWxsKCkgY29uc3QgeyBy
ZXR1cm4gY291bnRfICsgc3RhdGljX2Nhc3Q8c2l6ZV90PihjdXJyZW50XyAtIGJ1ZmZlcl8pOyB9
CisKKyAgICAvLyBOb3QgaW1wbGVtZW50ZWQKKyAgICB2b2lkIFB1dChDaCkgeyBSQVBJREpTT05f
QVNTRVJUKGZhbHNlKTsgfQorICAgIHZvaWQgRmx1c2goKSB7IFJBUElESlNPTl9BU1NFUlQoZmFs
c2UpOyB9IAorICAgIENoKiBQdXRCZWdpbigpIHsgUkFQSURKU09OX0FTU0VSVChmYWxzZSk7IHJl
dHVybiAwOyB9CisgICAgc2l6ZV90IFB1dEVuZChDaCopIHsgUkFQSURKU09OX0FTU0VSVChmYWxz
ZSk7IHJldHVybiAwOyB9CisKKyAgICAvLyBGb3IgZW5jb2RpbmcgZGV0ZWN0aW9uIG9ubHkuCisg
ICAgY29uc3QgQ2gqIFBlZWs0KCkgY29uc3QgeworICAgICAgICByZXR1cm4gKGN1cnJlbnRfICsg
NCA8PSBidWZmZXJMYXN0XykgPyBjdXJyZW50XyA6IDA7CisgICAgfQorCitwcml2YXRlOgorICAg
IHZvaWQgUmVhZCgpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRfIDwgYnVmZmVyTGFzdF8pCisgICAg
ICAgICAgICArK2N1cnJlbnRfOworICAgICAgICBlbHNlIGlmICghZW9mXykgeworICAgICAgICAg
ICAgY291bnRfICs9IHJlYWRDb3VudF87CisgICAgICAgICAgICByZWFkQ291bnRfID0gZnJlYWQo
YnVmZmVyXywgMSwgYnVmZmVyU2l6ZV8sIGZwXyk7CisgICAgICAgICAgICBidWZmZXJMYXN0XyA9
IGJ1ZmZlcl8gKyByZWFkQ291bnRfIC0gMTsKKyAgICAgICAgICAgIGN1cnJlbnRfID0gYnVmZmVy
XzsKKworICAgICAgICAgICAgaWYgKHJlYWRDb3VudF8gPCBidWZmZXJTaXplXykgeworICAgICAg
ICAgICAgICAgIGJ1ZmZlcl9bcmVhZENvdW50X10gPSAnXDAnOworICAgICAgICAgICAgICAgICsr
YnVmZmVyTGFzdF87CisgICAgICAgICAgICAgICAgZW9mXyA9IHRydWU7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGQ6OkZJTEUqIGZwXzsKKyAgICBDaCAqYnVmZmVy
XzsKKyAgICBzaXplX3QgYnVmZmVyU2l6ZV87CisgICAgQ2ggKmJ1ZmZlckxhc3RfOworICAgIENo
ICpjdXJyZW50XzsKKyAgICBzaXplX3QgcmVhZENvdW50XzsKKyAgICBzaXplX3QgY291bnRfOyAg
Ly8hPCBOdW1iZXIgb2YgY2hhcmFjdGVycyByZWFkCisgICAgYm9vbCBlb2ZfOworfTsKKworUkFQ
SURKU09OX05BTUVTUEFDRV9FTkQKKworI2VuZGlmIC8vIFJBUElESlNPTl9GSUxFU1RSRUFNX0hf
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFw
aWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ZpbGVzdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1
ZGUvcmFwaWRqc29uL2ZpbGVzdHJlYW0uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRq
c29uL2ZpbGVzdHJlYW0uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDczIEBACisvLyBDb3B5
cmlnaHQgKEMpIDIwMTEgTWlsbyBZaXAKKy8vCisvLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu
dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisvLyBv
ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAi
U29mdHdhcmUiKSwgdG8gZGVhbAorLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp
b24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cworLy8gdG8gdXNlLCBj
b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQv
b3Igc2VsbAorLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z
IHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisvLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg
dG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorLy8KKy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQg
bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisv
LyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKy8v
CisvLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP
RiBBTlkgS0lORCwgRVhQUkVTUyBPUgorLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN
SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisvLyBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUKKy8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBB
TlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB
Q1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisvLyBP
VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9U
SEVSIERFQUxJTkdTIElOCisvLyBUSEUgU09GVFdBUkUuCisKKyNpZm5kZWYgUkFQSURKU09OX0ZJ
TEVTVFJFQU1fSF8KKyNkZWZpbmUgUkFQSURKU09OX0ZJTEVTVFJFQU1fSF8KKworI2luY2x1ZGUg
InJhcGlkanNvbi5oIgorI2luY2x1ZGUgPGNzdGRpbz4KKworUkFQSURKU09OX05BTUVTUEFDRV9C
RUdJTgorCisvLyEgKERlcHJlY2F0ZWQpIFdyYXBwZXIgb2YgQyBmaWxlIHN0cmVhbSBmb3IgaW5w
dXQgb3Igb3V0cHV0LgorLyohCisgICAgVGhpcyBzaW1wbGUgd3JhcHBlciBkb2VzIG5vdCBjaGVj
ayB0aGUgdmFsaWRpdHkgb2YgdGhlIHN0cmVhbS4KKyAgICBcbm90ZSBpbXBsZW1lbnRzIFN0cmVh
bSBjb25jZXB0CisgICAgXG5vdGUgZGVwcmVjYXRlZDogVGhpcyB3YXMgb25seSBmb3IgYmFzaWMg
dGVzdGluZyBpbiB2ZXJzaW9uIDAuMSwgaXQgaXMgZm91bmQgdGhhdCB0aGUgcGVyZm9ybWFuY2Ug
aXMgdmVyeSBsb3cgYnkgdXNpbmcgZmdldGMoKS4gVXNlIEZpbGVSZWFkU3RyZWFtIGluc3RlYWQu
CisqLworY2xhc3MgRmlsZVN0cmVhbSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBjaGFyIENoOyAg
ICAvLyE8IENoYXJhY3RlciB0eXBlLiBPbmx5IHN1cHBvcnQgY2hhci4KKworICAgIEZpbGVTdHJl
YW0oc3RkOjpGSUxFKiBmcCkgOiBmcF8oZnApLCBjdXJyZW50XygnXDAnKSwgY291bnRfKDApIHsg
UmVhZCgpOyB9CisgICAgY2hhciBQZWVrKCkgY29uc3QgeyByZXR1cm4gY3VycmVudF87IH0KKyAg
ICBjaGFyIFRha2UoKSB7IGNoYXIgYyA9IGN1cnJlbnRfOyBSZWFkKCk7IHJldHVybiBjOyB9Cisg
ICAgc2l6ZV90IFRlbGwoKSBjb25zdCB7IHJldHVybiBjb3VudF87IH0KKyAgICB2b2lkIFB1dChj
aGFyIGMpIHsgZnB1dGMoYywgZnBfKTsgfQorICAgIHZvaWQgRmx1c2goKSB7IGZmbHVzaChmcF8p
OyB9CisKKyAgICAvLyBOb3QgaW1wbGVtZW50ZWQKKyAgICBjaGFyKiBQdXRCZWdpbigpIHsgcmV0
dXJuIDA7IH0KKyAgICBzaXplX3QgUHV0RW5kKGNoYXIqKSB7IHJldHVybiAwOyB9CisKK3ByaXZh
dGU6CisgICAgLy8gUHJvaGliaXQgY29weSBjb25zdHJ1Y3RvciAmIGFzc2lnbm1lbnQgb3BlcmF0
b3IuCisgICAgRmlsZVN0cmVhbShjb25zdCBGaWxlU3RyZWFtJik7CisgICAgRmlsZVN0cmVhbSYg
b3BlcmF0b3I9KGNvbnN0IEZpbGVTdHJlYW0mKTsKKworICAgIHZvaWQgUmVhZCgpIHsKKyAgICAg
ICAgUkFQSURKU09OX0FTU0VSVChmcF8gIT0gMCk7CisgICAgICAgIGludCBjID0gZmdldGMoZnBf
KTsKKyAgICAgICAgaWYgKGMgIT0gRU9GKSB7CisgICAgICAgICAgICBjdXJyZW50XyA9IChjaGFy
KWM7CisgICAgICAgICAgICBjb3VudF8rKzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChj
dXJyZW50XyAhPSAnXDAnKQorICAgICAgICAgICAgY3VycmVudF8gPSAnXDAnOworICAgIH0KKwor
ICAgIHN0ZDo6RklMRSogZnBfOworICAgIGNoYXIgY3VycmVudF87CisgICAgc2l6ZV90IGNvdW50
XzsKK307CisKK1JBUElESlNPTl9OQU1FU1BBQ0VfRU5ECisKKyNlbmRpZiAvLyBSQVBJREpTT05f
RklMRVNUUkVBTV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Ro
aXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9maWxld3JpdGVzdHJlYW0uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFy
dHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ZpbGV3cml0ZXN0cmVhbS5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9y
YXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vZmlsZXdyaXRlc3RyZWFtLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw5NyBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExIE1pbG8gWWlwCisvLwor
Ly8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBw
ZXJzb24gb2J0YWluaW5nIGEgY29weQorLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl
ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKKy8vIGluIHRo
ZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0
aW9uIHRoZSByaWdodHMKKy8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwg
ZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKKy8vIGNvcGllcyBvZiB0aGUgU29m
dHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLy8g
ZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoK
Ky8vCisvLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5v
dGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw
b3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisvLworLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVE
ICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKy8vIElN
UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZLAorLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5P
TklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisvLyBBVVRIT1JTIE9SIENPUFlS
SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisv
LyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9U
SEVSV0lTRSwgQVJJU0lORyBGUk9NLAorLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBU
SEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgorLy8gVEhFIFNPRlRX
QVJFLgorCisjaWZuZGVmIFJBUElESlNPTl9GSUxFV1JJVEVTVFJFQU1fSF8KKyNkZWZpbmUgUkFQ
SURKU09OX0ZJTEVXUklURVNUUkVBTV9IXworCisjaW5jbHVkZSAicmFwaWRqc29uLmgiCisjaW5j
bHVkZSA8Y3N0ZGlvPgorCitSQVBJREpTT05fTkFNRVNQQUNFX0JFR0lOCisKKy8vISBXcmFwcGVy
IG9mIEMgZmlsZSBzdHJlYW0gZm9yIGlucHV0IHVzaW5nIGZyZWFkKCkuCisvKiEKKyAgICBcbm90
ZSBpbXBsZW1lbnRzIFN0cmVhbSBjb25jZXB0CisqLworY2xhc3MgRmlsZVdyaXRlU3RyZWFtIHsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIGNoYXIgQ2g7ICAgIC8vITwgQ2hhcmFjdGVyIHR5cGUuIE9u
bHkgc3VwcG9ydCBjaGFyLgorCisgICAgRmlsZVdyaXRlU3RyZWFtKHN0ZDo6RklMRSogZnAsIGNo
YXIqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUpIDogZnBfKGZwKSwgYnVmZmVyXyhidWZmZXIp
LCBidWZmZXJFbmRfKGJ1ZmZlciArIGJ1ZmZlclNpemUpLCBjdXJyZW50XyhidWZmZXJfKSB7IAor
ICAgICAgICBSQVBJREpTT05fQVNTRVJUKGZwXyAhPSAwKTsKKyAgICB9CisKKyAgICB2b2lkIFB1
dChjaGFyIGMpIHsgCisgICAgICAgIGlmIChjdXJyZW50XyA+PSBidWZmZXJFbmRfKQorICAgICAg
ICAgICAgRmx1c2goKTsKKworICAgICAgICAqY3VycmVudF8rKyA9IGM7CisgICAgfQorCisgICAg
dm9pZCBQdXROKGNoYXIgYywgc2l6ZV90IG4pIHsKKyAgICAgICAgc2l6ZV90IGF2YWlsID0gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihidWZmZXJFbmRfIC0gY3VycmVudF8pOworICAgICAgICB3aGlsZSAo
biA+IGF2YWlsKSB7CisgICAgICAgICAgICBzdGQ6Om1lbXNldChjdXJyZW50XywgYywgYXZhaWwp
OworICAgICAgICAgICAgY3VycmVudF8gKz0gYXZhaWw7CisgICAgICAgICAgICBGbHVzaCgpOwor
ICAgICAgICAgICAgbiAtPSBhdmFpbDsKKyAgICAgICAgICAgIGF2YWlsID0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihidWZmZXJFbmRfIC0gY3VycmVudF8pOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KG4gPiAwKSB7CisgICAgICAgICAgICBzdGQ6Om1lbXNldChjdXJyZW50XywgYywgbik7CisgICAg
ICAgICAgICBjdXJyZW50XyArPSBuOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBGbHVz
aCgpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRfICE9IGJ1ZmZlcl8pIHsKKyAgICAgICAgICAgIGZ3
cml0ZShidWZmZXJfLCAxLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGN1cnJlbnRfIC0gYnVmZmVyXyks
IGZwXyk7CisgICAgICAgICAgICBjdXJyZW50XyA9IGJ1ZmZlcl87CisgICAgICAgIH0KKyAgICB9
CisKKyAgICAvLyBOb3QgaW1wbGVtZW50ZWQKKyAgICBjaGFyIFBlZWsoKSBjb25zdCB7IFJBUElE
SlNPTl9BU1NFUlQoZmFsc2UpOyByZXR1cm4gMDsgfQorICAgIGNoYXIgVGFrZSgpIHsgUkFQSURK
U09OX0FTU0VSVChmYWxzZSk7IHJldHVybiAwOyB9CisgICAgc2l6ZV90IFRlbGwoKSBjb25zdCB7
IFJBUElESlNPTl9BU1NFUlQoZmFsc2UpOyByZXR1cm4gMDsgfQorICAgIGNoYXIqIFB1dEJlZ2lu
KCkgeyBSQVBJREpTT05fQVNTRVJUKGZhbHNlKTsgcmV0dXJuIDA7IH0KKyAgICBzaXplX3QgUHV0
RW5kKGNoYXIqKSB7IFJBUElESlNPTl9BU1NFUlQoZmFsc2UpOyByZXR1cm4gMDsgfQorCitwcml2
YXRlOgorICAgIC8vIFByb2hpYml0IGNvcHkgY29uc3RydWN0b3IgJiBhc3NpZ25tZW50IG9wZXJh
dG9yLgorICAgIEZpbGVXcml0ZVN0cmVhbShjb25zdCBGaWxlV3JpdGVTdHJlYW0mKTsKKyAgICBG
aWxlV3JpdGVTdHJlYW0mIG9wZXJhdG9yPShjb25zdCBGaWxlV3JpdGVTdHJlYW0mKTsKKworICAg
IHN0ZDo6RklMRSogZnBfOworICAgIGNoYXIgKmJ1ZmZlcl87CisgICAgY2hhciAqYnVmZmVyRW5k
XzsKKyAgICBjaGFyICpjdXJyZW50XzsKK307CisKKy8vISBJbXBsZW1lbnQgc3BlY2lhbGl6ZWQg
dmVyc2lvbiBvZiBQdXROKCkgd2l0aCBtZW1zZXQoKSBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLgor
dGVtcGxhdGU8PgoraW5saW5lIHZvaWQgUHV0TihGaWxlV3JpdGVTdHJlYW0mIHN0cmVhbSwgY2hh
ciBjLCBzaXplX3QgbikgeworICAgIHN0cmVhbS5QdXROKGMsIG4pOworfQorCitSQVBJREpTT05f
TkFNRVNQQUNFX0VORAorCisjZW5kaWYgLy8gUkFQSURKU09OX0ZJTEVTVFJFQU1fSF8KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24v
aW5jbHVkZS9yYXBpZGpzb24vbWVtb3J5YnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3Jh
cGlkanNvbi9tZW1vcnlidWZmZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29u
L21lbW9yeWJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzYgQEAKKy8vIENvcHly
aWdodCAoQykgMjAxMSBNaWxvIFlpcAorLy8KKy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50
ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKy8vIG9m
IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJT
b2Z0d2FyZSIpLCB0byBkZWFsCisvLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlv
biwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCisvLyB0byB1c2UsIGNv
cHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9v
ciBzZWxsCisvLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMg
dG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0
byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisvLworLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBu
b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKy8v
IGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorLy8K
Ky8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9G
IEFOWSBLSU5ELCBFWFBSRVNTIE9SCisvLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1J
VEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKy8vIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRQorLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO
WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFD
VElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKy8vIE9V
VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI
RVIgREVBTElOR1MgSU4KKy8vIFRIRSBTT0ZUV0FSRS4KKworI2lmbmRlZiBSQVBJREpTT05fTUVN
T1JZQlVGRkVSX0hfCisjZGVmaW5lIFJBUElESlNPTl9NRU1PUllCVUZGRVJfSF8KKworI2luY2x1
ZGUgInJhcGlkanNvbi5oIgorI2luY2x1ZGUgImludGVybmFsL3N0YWNrLmgiCisKK1JBUElESlNP
Tl9OQU1FU1BBQ0VfQkVHSU4KKworLy8hIFJlcHJlc2VudHMgYW4gaW4tbWVtb3J5IG91dHB1dCBi
eXRlIHN0cmVhbS4KKy8qIQorICAgIFRoaXMgY2xhc3MgaXMgbWFpbmx5IGZvciBiZWluZyB3cmFw
cGVkIGJ5IEVuY29kZWRPdXRwdXRTdHJlYW0gb3IgQXV0b1VURk91dHB1dFN0cmVhbS4KKworICAg
IEl0IGlzIHNpbWlsYXIgdG8gRmlsZVdyaXRlQnVmZmVyIGJ1dCB0aGUgZGVzdGluYXRpb24gaXMg
YW4gaW4tbWVtb3J5IGJ1ZmZlciBpbnN0ZWFkIG9mIGEgZmlsZS4KKworICAgIERpZmZlcmVuY2Vz
IGJldHdlZW4gTWVtb3J5QnVmZmVyIGFuZCBTdHJpbmdCdWZmZXI6CisgICAgMS4gU3RyaW5nQnVm
ZmVyIGhhcyBFbmNvZGluZyBidXQgTWVtb3J5QnVmZmVyIGlzIG9ubHkgYSBieXRlIGJ1ZmZlci4g
CisgICAgMi4gU3RyaW5nQnVmZmVyOjpHZXRTdHJpbmcoKSByZXR1cm5zIGEgbnVsbC10ZXJtaW5h
dGVkIHN0cmluZy4gTWVtb3J5QnVmZmVyOjpHZXRCdWZmZXIoKSByZXR1cm5zIGEgYnVmZmVyIHdp
dGhvdXQgdGVybWluYXRvci4KKworICAgIFx0cGFyYW0gQWxsb2NhdG9yIHR5cGUgZm9yIGFsbG9j
YXRpbmcgbWVtb3J5IGJ1ZmZlci4KKyAgICBcbm90ZSBpbXBsZW1lbnRzIFN0cmVhbSBjb25jZXB0
CisqLwordGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jYXRvciA9IENydEFsbG9jYXRvcj4KK3N0cnVj
dCBHZW5lcmljTWVtb3J5QnVmZmVyIHsKKyAgICB0eXBlZGVmIGNoYXIgQ2g7IC8vIGJ5dGUKKwor
ICAgIEdlbmVyaWNNZW1vcnlCdWZmZXIoQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSAwLCBzaXplX3Qg
Y2FwYWNpdHkgPSBrRGVmYXVsdENhcGFjaXR5KSA6IHN0YWNrXyhhbGxvY2F0b3IsIGNhcGFjaXR5
KSB7fQorCisgICAgdm9pZCBQdXQoQ2ggYykgeyAqc3RhY2tfLnRlbXBsYXRlIFB1c2g8Q2g+KCkg
PSBjOyB9CisgICAgdm9pZCBGbHVzaCgpIHt9CisKKyAgICB2b2lkIENsZWFyKCkgeyBzdGFja18u
Q2xlYXIoKTsgfQorICAgIHZvaWQgU2hyaW5rVG9GaXQoKSB7IHN0YWNrXy5TaHJpbmtUb0ZpdCgp
OyB9CisgICAgQ2gqIFB1c2goc2l6ZV90IGNvdW50KSB7IHJldHVybiBzdGFja18udGVtcGxhdGUg
UHVzaDxDaD4oY291bnQpOyB9CisgICAgdm9pZCBQb3Aoc2l6ZV90IGNvdW50KSB7IHN0YWNrXy50
ZW1wbGF0ZSBQb3A8Q2g+KGNvdW50KTsgfQorCisgICAgY29uc3QgQ2gqIEdldEJ1ZmZlcigpIGNv
bnN0IHsKKyAgICAgICAgcmV0dXJuIHN0YWNrXy50ZW1wbGF0ZSBCb3R0b208Q2g+KCk7CisgICAg
fQorCisgICAgc2l6ZV90IEdldFNpemUoKSBjb25zdCB7IHJldHVybiBzdGFja18uR2V0U2l6ZSgp
OyB9CisKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtEZWZhdWx0Q2FwYWNpdHkgPSAyNTY7Cisg
ICAgbXV0YWJsZSBpbnRlcm5hbDo6U3RhY2s8QWxsb2NhdG9yPiBzdGFja187Cit9OworCit0eXBl
ZGVmIEdlbmVyaWNNZW1vcnlCdWZmZXI8PiBNZW1vcnlCdWZmZXI7CisKKy8vISBJbXBsZW1lbnQg
c3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBQdXROKCkgd2l0aCBtZW1zZXQoKSBmb3IgYmV0dGVyIHBl
cmZvcm1hbmNlLgordGVtcGxhdGU8PgoraW5saW5lIHZvaWQgUHV0TihNZW1vcnlCdWZmZXImIG1l
bW9yeUJ1ZmZlciwgY2hhciBjLCBzaXplX3QgbikgeworICAgIHN0ZDo6bWVtc2V0KG1lbW9yeUJ1
ZmZlci5zdGFja18uUHVzaDxjaGFyPihuKSwgYywgbiAqIHNpemVvZihjKSk7Cit9CisKK1JBUElE
SlNPTl9OQU1FU1BBQ0VfRU5ECisKKyNlbmRpZiAvLyBSQVBJREpTT05fTUVNT1JZQlVGRkVSX0hf
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFw
aWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL21lbW9yeXN0cmVhbS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5j
bHVkZS9yYXBpZGpzb24vbWVtb3J5c3RyZWFtLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3Jh
cGlkanNvbi9tZW1vcnlzdHJlYW0uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY3IEBACisv
LyBDb3B5cmlnaHQgKEMpIDIwMTEgTWlsbyBZaXAKKy8vCisvLyBQZXJtaXNzaW9uIGlzIGhlcmVi
eSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5
CisvLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg
KHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAorLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz
dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cworLy8gdG8g
dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl
LCBhbmQvb3Igc2VsbAorLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBw
ZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisvLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1
YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorLy8KKy8vIFRoZSBhYm92ZSBjb3B5
cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVk
IGluCisvLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2Fy
ZS4KKy8vCisvLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJS
QU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBO
T1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisvLyBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUKKy8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxF
IEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKy8vIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00s
CisvLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNF
IE9SIE9USEVSIERFQUxJTkdTIElOCisvLyBUSEUgU09GVFdBUkUuCisKKyNpZm5kZWYgUkFQSURK
U09OX01FTU9SWVNUUkVBTV9IXworI2RlZmluZSBSQVBJREpTT05fTUVNT1JZU1RSRUFNX0hfCisK
KyNpbmNsdWRlICJyYXBpZGpzb24uaCIKKworUkFQSURKU09OX05BTUVTUEFDRV9CRUdJTgorCisv
LyEgUmVwcmVzZW50cyBhbiBpbi1tZW1vcnkgaW5wdXQgYnl0ZSBzdHJlYW0uCisvKiEKKyAgICBU
aGlzIGNsYXNzIGlzIG1haW5seSBmb3IgYmVpbmcgd3JhcHBlZCBieSBFbmNvZGVkSW5wdXRTdHJl
YW0gb3IgQXV0b1VURklucHV0U3RyZWFtLgorCisgICAgSXQgaXMgc2ltaWxhciB0byBGaWxlUmVh
ZEJ1ZmZlciBidXQgdGhlIHNvdXJjZSBpcyBhbiBpbi1tZW1vcnkgYnVmZmVyIGluc3RlYWQgb2Yg
YSBmaWxlLgorCisgICAgRGlmZmVyZW5jZXMgYmV0d2VlbiBNZW1vcnlTdHJlYW0gYW5kIFN0cmlu
Z1N0cmVhbToKKyAgICAxLiBTdHJpbmdTdHJlYW0gaGFzIGVuY29kaW5nIGJ1dCBNZW1vcnlTdHJl
YW0gaXMgYSBieXRlIHN0cmVhbS4KKyAgICAyLiBNZW1vcnlTdHJlYW0gbmVlZHMgc2l6ZSBvZiB0
aGUgc291cmNlIGJ1ZmZlciBhbmQgdGhlIGJ1ZmZlciBkb24ndCBuZWVkIHRvIGJlIG51bGwgdGVy
bWluYXRlZC4gU3RyaW5nU3RyZWFtIGFzc3VtZSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nIGFzIHNv
dXJjZS4KKyAgICAzLiBNZW1vcnlTdHJlYW0gc3VwcG9ydHMgUGVlazQoKSBmb3IgZW5jb2Rpbmcg
ZGV0ZWN0aW9uLiBTdHJpbmdTdHJlYW0gaXMgc3BlY2lmaWVkIHdpdGggYW4gZW5jb2Rpbmcgc28g
aXQgc2hvdWxkIG5vdCBoYXZlIFBlZWs0KCkuCisgICAgXG5vdGUgaW1wbGVtZW50cyBTdHJlYW0g
Y29uY2VwdAorKi8KK3N0cnVjdCBNZW1vcnlTdHJlYW0geworICAgIHR5cGVkZWYgY2hhciBDaDsg
Ly8gYnl0ZQorCisgICAgTWVtb3J5U3RyZWFtKGNvbnN0IENoICpzcmMsIHNpemVfdCBzaXplKSA6
IHNyY18oc3JjKSwgYmVnaW5fKHNyYyksIGVuZF8oc3JjICsgc2l6ZSksIHNpemVfKHNpemUpIHt9
CisKKyAgICBDaCBQZWVrKCkgY29uc3QgeyByZXR1cm4gKHNyY18gPT0gZW5kXykgPyAnXDAnIDog
KnNyY187IH0KKyAgICBDaCBUYWtlKCkgeyByZXR1cm4gKHNyY18gPT0gZW5kXykgPyAnXDAnIDog
KnNyY18rKzsgfQorICAgIHNpemVfdCBUZWxsKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
c2l6ZV90PihzcmNfIC0gYmVnaW5fKTsgfQorCisgICAgQ2gqIFB1dEJlZ2luKCkgeyBSQVBJREpT
T05fQVNTRVJUKGZhbHNlKTsgcmV0dXJuIDA7IH0KKyAgICB2b2lkIFB1dChDaCkgeyBSQVBJREpT
T05fQVNTRVJUKGZhbHNlKTsgfQorICAgIHZvaWQgRmx1c2goKSB7IFJBUElESlNPTl9BU1NFUlQo
ZmFsc2UpOyB9CisgICAgc2l6ZV90IFB1dEVuZChDaCopIHsgUkFQSURKU09OX0FTU0VSVChmYWxz
ZSk7IHJldHVybiAwOyB9CisKKyAgICAvLyBGb3IgZW5jb2RpbmcgZGV0ZWN0aW9uIG9ubHkuCisg
ICAgY29uc3QgQ2gqIFBlZWs0KCkgY29uc3QgeworICAgICAgICByZXR1cm4gVGVsbCgpICsgNCA8
PSBzaXplXyA/IHNyY18gOiAwOworICAgIH0KKworICAgIGNvbnN0IENoKiBzcmNfOyAgICAgLy8h
PCBDdXJyZW50IHJlYWQgcG9zaXRpb24uCisgICAgY29uc3QgQ2gqIGJlZ2luXzsgICAvLyE8IE9y
aWdpbmFsIGhlYWQgb2YgdGhlIHN0cmluZy4KKyAgICBjb25zdCBDaCogZW5kXzsgICAgIC8vITwg
RW5kIG9mIHN0cmVhbS4KKyAgICBzaXplX3Qgc2l6ZV87ICAgICAgIC8vITwgU2l6ZSBvZiB0aGUg
c3RyZWFtLgorfTsKKworUkFQSURKU09OX05BTUVTUEFDRV9FTkQKKworI2VuZGlmIC8vIFJBUElE
SlNPTl9NRU1PUllCVUZGRVJfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vcHJldHR5d3JpdGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJk
X3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9wcmV0dHl3cml0ZXIuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkv
cmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL3ByZXR0eXdyaXRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMjA1IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEgTWlsbyBZaXAKKy8vCisv
LyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBl
cnNvbiBvYnRhaW5pbmcgYSBjb3B5CisvLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVk
IGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAorLy8gaW4gdGhl
IFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRp
b24gdGhlIHJpZ2h0cworLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBk
aXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorLy8gY29waWVzIG9mIHRoZSBTb2Z0
d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisvLyBm
dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgor
Ly8KKy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90
aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisvLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv
cnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKy8vCisvLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg
IkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorLy8gSU1Q
TElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFksCisvLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9O
SU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKy8vIEFVVEhPUlMgT1IgQ09QWVJJ
R0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKy8v
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RI
RVJXSVNFLCBBUklTSU5HIEZST00sCisvLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRI
RSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCisvLyBUSEUgU09GVFdB
UkUuCisKKyNpZm5kZWYgUkFQSURKU09OX1BSRVRUWVdSSVRFUl9IXworI2RlZmluZSBSQVBJREpT
T05fUFJFVFRZV1JJVEVSX0hfCisKKyNpbmNsdWRlICJ3cml0ZXIuaCIKKworI2lmZGVmIF9fR05V
Q19fCitSQVBJREpTT05fRElBR19QVVNICitSQVBJREpTT05fRElBR19PRkYoZWZmYysrKQorI2Vu
ZGlmCisKK1JBUElESlNPTl9OQU1FU1BBQ0VfQkVHSU4KKworLy8hIFdyaXRlciB3aXRoIGluZGVu
dGF0aW9uIGFuZCBzcGFjaW5nLgorLyohCisgICAgXHRwYXJhbSBPdXRwdXRTdHJlYW0gVHlwZSBv
ZiBvdXB0dXQgb3MuCisgICAgXHRwYXJhbSBTb3VyY2VFbmNvZGluZyBFbmNvZGluZyBvZiBzb3Vy
Y2Ugc3RyaW5nLgorICAgIFx0cGFyYW0gVGFyZ2V0RW5jb2RpbmcgRW5jb2Rpbmcgb2Ygb3V0cHV0
IHN0cmVhbS4KKyAgICBcdHBhcmFtIFN0YWNrQWxsb2NhdG9yIFR5cGUgb2YgYWxsb2NhdG9yIGZv
ciBhbGxvY2F0aW5nIG1lbW9yeSBvZiBzdGFjay4KKyovCit0ZW1wbGF0ZTx0eXBlbmFtZSBPdXRw
dXRTdHJlYW0sIHR5cGVuYW1lIFNvdXJjZUVuY29kaW5nID0gVVRGODw+LCB0eXBlbmFtZSBUYXJn
ZXRFbmNvZGluZyA9IFVURjg8PiwgdHlwZW5hbWUgU3RhY2tBbGxvY2F0b3IgPSBDcnRBbGxvY2F0
b3I+CitjbGFzcyBQcmV0dHlXcml0ZXIgOiBwdWJsaWMgV3JpdGVyPE91dHB1dFN0cmVhbSwgU291
cmNlRW5jb2RpbmcsIFRhcmdldEVuY29kaW5nLCBTdGFja0FsbG9jYXRvcj4geworcHVibGljOgor
ICAgIHR5cGVkZWYgV3JpdGVyPE91dHB1dFN0cmVhbSwgU291cmNlRW5jb2RpbmcsIFRhcmdldEVu
Y29kaW5nLCBTdGFja0FsbG9jYXRvcj4gQmFzZTsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIEJhc2U6
OkNoIENoOworCisgICAgLy8hIENvbnN0cnVjdG9yCisgICAgLyohIFxwYXJhbSBvcyBPdXRwdXQg
c3RyZWFtLgorICAgICAgICBccGFyYW0gYWxsb2NhdG9yIFVzZXIgc3VwcGxpZWQgYWxsb2NhdG9y
LiBJZiBpdCBpcyBudWxsLCBpdCB3aWxsIGNyZWF0ZSBhIHByaXZhdGUgb25lLgorICAgICAgICBc
cGFyYW0gbGV2ZWxEZXB0aCBJbml0aWFsIGNhcGFjaXR5IG9mIHN0YWNrLgorICAgICovCisgICAg
UHJldHR5V3JpdGVyKE91dHB1dFN0cmVhbSYgb3MsIFN0YWNrQWxsb2NhdG9yKiBhbGxvY2F0b3Ig
PSAwLCBzaXplX3QgbGV2ZWxEZXB0aCA9IEJhc2U6OmtEZWZhdWx0TGV2ZWxEZXB0aCkgOiAKKyAg
ICAgICAgQmFzZShvcywgYWxsb2NhdG9yLCBsZXZlbERlcHRoKSwgaW5kZW50Q2hhcl8oJyAnKSwg
aW5kZW50Q2hhckNvdW50Xyg0KSB7fQorCisgICAgLy8hIFNldCBjdXN0b20gaW5kZW50YXRpb24u
CisgICAgLyohIFxwYXJhbSBpbmRlbnRDaGFyICAgICAgIENoYXJhY3RlciBmb3IgaW5kZW50YXRp
b24uIE11c3QgYmUgd2hpdGVzcGFjZSBjaGFyYWN0ZXIgKCcgJywgJ1xcdCcsICdcXG4nLCAnXFxy
JykuCisgICAgICAgIFxwYXJhbSBpbmRlbnRDaGFyQ291bnQgIE51bWJlciBvZiBpbmRlbnQgY2hh
cmFjdGVycyBmb3IgZWFjaCBpbmRlbnRhdGlvbiBsZXZlbC4KKyAgICAgICAgXG5vdGUgVGhlIGRl
ZmF1bHQgaW5kZW50YXRpb24gaXMgNCBzcGFjZXMuCisgICAgKi8KKyAgICBQcmV0dHlXcml0ZXIm
IFNldEluZGVudChDaCBpbmRlbnRDaGFyLCB1bnNpZ25lZCBpbmRlbnRDaGFyQ291bnQpIHsKKyAg
ICAgICAgUkFQSURKU09OX0FTU0VSVChpbmRlbnRDaGFyID09ICcgJyB8fCBpbmRlbnRDaGFyID09
ICdcdCcgfHwgaW5kZW50Q2hhciA9PSAnXG4nIHx8IGluZGVudENoYXIgPT0gJ1xyJyk7CisgICAg
ICAgIGluZGVudENoYXJfID0gaW5kZW50Q2hhcjsKKyAgICAgICAgaW5kZW50Q2hhckNvdW50XyA9
IGluZGVudENoYXJDb3VudDsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIC8q
ISBAbmFtZSBJbXBsZW1lbnRhdGlvbiBvZiBIYW5kbGVyCisgICAgICAgIFxzZWUgSGFuZGxlcgor
ICAgICovCisgICAgLy9AeworCisgICAgYm9vbCBOdWxsKCkgICAgICAgICAgICAgICAgIHsgUHJl
dHR5UHJlZml4KGtOdWxsVHlwZSk7ICAgcmV0dXJuIEJhc2U6OldyaXRlTnVsbCgpOyB9CisgICAg
Ym9vbCBCb29sKGJvb2wgYikgICAgICAgICAgIHsgUHJldHR5UHJlZml4KGIgPyBrVHJ1ZVR5cGUg
OiBrRmFsc2VUeXBlKTsgcmV0dXJuIEJhc2U6OldyaXRlQm9vbChiKTsgfQorICAgIGJvb2wgSW50
KGludCBpKSAgICAgICAgICAgICB7IFByZXR0eVByZWZpeChrTnVtYmVyVHlwZSk7IHJldHVybiBC
YXNlOjpXcml0ZUludChpKTsgfQorICAgIGJvb2wgVWludCh1bnNpZ25lZCB1KSAgICAgICB7IFBy
ZXR0eVByZWZpeChrTnVtYmVyVHlwZSk7IHJldHVybiBCYXNlOjpXcml0ZVVpbnQodSk7IH0KKyAg
ICBib29sIEludDY0KGludDY0X3QgaTY0KSAgICAgeyBQcmV0dHlQcmVmaXgoa051bWJlclR5cGUp
OyByZXR1cm4gQmFzZTo6V3JpdGVJbnQ2NChpNjQpOyB9CisgICAgYm9vbCBVaW50NjQodWludDY0
X3QgdTY0KSAgIHsgUHJldHR5UHJlZml4KGtOdW1iZXJUeXBlKTsgcmV0dXJuIEJhc2U6OldyaXRl
VWludDY0KHU2NCk7ICB9CisgICAgYm9vbCBEb3VibGUoZG91YmxlIGQpICAgICAgIHsgUHJldHR5
UHJlZml4KGtOdW1iZXJUeXBlKTsgcmV0dXJuIEJhc2U6OldyaXRlRG91YmxlKGQpOyB9CisKKyAg
ICBib29sIFN0cmluZyhjb25zdCBDaCogc3RyLCBTaXplVHlwZSBsZW5ndGgsIGJvb2wgY29weSA9
IGZhbHNlKSB7CisgICAgICAgICh2b2lkKWNvcHk7CisgICAgICAgIFByZXR0eVByZWZpeChrU3Ry
aW5nVHlwZSk7CisgICAgICAgIHJldHVybiBCYXNlOjpXcml0ZVN0cmluZyhzdHIsIGxlbmd0aCk7
CisgICAgfQorCisgICAgYm9vbCBTdGFydE9iamVjdCgpIHsKKyAgICAgICAgUHJldHR5UHJlZml4
KGtPYmplY3RUeXBlKTsKKyAgICAgICAgbmV3IChCYXNlOjpsZXZlbF9zdGFja18udGVtcGxhdGUg
UHVzaDx0eXBlbmFtZSBCYXNlOjpMZXZlbD4oKSkgdHlwZW5hbWUgQmFzZTo6TGV2ZWwoZmFsc2Up
OworICAgICAgICByZXR1cm4gQmFzZTo6V3JpdGVTdGFydE9iamVjdCgpOworICAgIH0KKworICAg
IGJvb2wgS2V5KGNvbnN0IENoKiBzdHIsIFNpemVUeXBlIGxlbmd0aCwgYm9vbCBjb3B5ID0gZmFs
c2UpIHsgcmV0dXJuIFN0cmluZyhzdHIsIGxlbmd0aCwgY29weSk7IH0KKwkKKyAgICBib29sIEVu
ZE9iamVjdChTaXplVHlwZSBtZW1iZXJDb3VudCA9IDApIHsKKyAgICAgICAgKHZvaWQpbWVtYmVy
Q291bnQ7CisgICAgICAgIFJBUElESlNPTl9BU1NFUlQoQmFzZTo6bGV2ZWxfc3RhY2tfLkdldFNp
emUoKSA+PSBzaXplb2YodHlwZW5hbWUgQmFzZTo6TGV2ZWwpKTsKKyAgICAgICAgUkFQSURKU09O
X0FTU0VSVCghQmFzZTo6bGV2ZWxfc3RhY2tfLnRlbXBsYXRlIFRvcDx0eXBlbmFtZSBCYXNlOjpM
ZXZlbD4oKS0+aW5BcnJheSk7CisgICAgICAgIGJvb2wgZW1wdHkgPSBCYXNlOjpsZXZlbF9zdGFj
a18udGVtcGxhdGUgUG9wPHR5cGVuYW1lIEJhc2U6OkxldmVsPigxKS0+dmFsdWVDb3VudCA9PSAw
OworCisgICAgICAgIGlmICghZW1wdHkpIHsKKyAgICAgICAgICAgIEJhc2U6Om9zXy0+UHV0KCdc
bicpOworICAgICAgICAgICAgV3JpdGVJbmRlbnQoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
IUJhc2U6OldyaXRlRW5kT2JqZWN0KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGlmIChCYXNlOjpsZXZlbF9zdGFja18uRW1wdHkoKSkgLy8gZW5kIG9mIGpzb24gdGV4dAor
ICAgICAgICAgICAgQmFzZTo6b3NfLT5GbHVzaCgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICBib29sIFN0YXJ0QXJyYXkoKSB7CisgICAgICAgIFByZXR0eVByZWZpeChrQXJy
YXlUeXBlKTsKKyAgICAgICAgbmV3IChCYXNlOjpsZXZlbF9zdGFja18udGVtcGxhdGUgUHVzaDx0
eXBlbmFtZSBCYXNlOjpMZXZlbD4oKSkgdHlwZW5hbWUgQmFzZTo6TGV2ZWwodHJ1ZSk7CisgICAg
ICAgIHJldHVybiBCYXNlOjpXcml0ZVN0YXJ0QXJyYXkoKTsKKyAgICB9CisKKyAgICBib29sIEVu
ZEFycmF5KFNpemVUeXBlIG1lbWJlckNvdW50ID0gMCkgeworICAgICAgICAodm9pZCltZW1iZXJD
b3VudDsKKyAgICAgICAgUkFQSURKU09OX0FTU0VSVChCYXNlOjpsZXZlbF9zdGFja18uR2V0U2l6
ZSgpID49IHNpemVvZih0eXBlbmFtZSBCYXNlOjpMZXZlbCkpOworICAgICAgICBSQVBJREpTT05f
QVNTRVJUKEJhc2U6OmxldmVsX3N0YWNrXy50ZW1wbGF0ZSBUb3A8dHlwZW5hbWUgQmFzZTo6TGV2
ZWw+KCktPmluQXJyYXkpOworICAgICAgICBib29sIGVtcHR5ID0gQmFzZTo6bGV2ZWxfc3RhY2tf
LnRlbXBsYXRlIFBvcDx0eXBlbmFtZSBCYXNlOjpMZXZlbD4oMSktPnZhbHVlQ291bnQgPT0gMDsK
KworICAgICAgICBpZiAoIWVtcHR5KSB7CisgICAgICAgICAgICBCYXNlOjpvc18tPlB1dCgnXG4n
KTsKKyAgICAgICAgICAgIFdyaXRlSW5kZW50KCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFC
YXNlOjpXcml0ZUVuZEFycmF5KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IGlmIChCYXNlOjpsZXZlbF9zdGFja18uRW1wdHkoKSkgLy8gZW5kIG9mIGpzb24gdGV4dAorICAg
ICAgICAgICAgQmFzZTo6b3NfLT5GbHVzaCgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICAvL0B9CisKKyAgICAvKiEgQG5hbWUgQ29udmVuaWVuY2UgZXh0ZW5zaW9ucyAqLwor
ICAgIC8vQHsKKworICAgIC8vISBTaW1wbGVyIGJ1dCBzbG93ZXIgb3ZlcmxvYWQuCisgICAgYm9v
bCBTdHJpbmcoY29uc3QgQ2gqIHN0cikgeyByZXR1cm4gU3RyaW5nKHN0ciwgaW50ZXJuYWw6OlN0
ckxlbihzdHIpKTsgfQorICAgIGJvb2wgS2V5KGNvbnN0IENoKiBzdHIpIHsgcmV0dXJuIEtleShz
dHIsIGludGVybmFsOjpTdHJMZW4oc3RyKSk7IH0KKworICAgIC8vQH0KK3Byb3RlY3RlZDoKKyAg
ICB2b2lkIFByZXR0eVByZWZpeChUeXBlIHR5cGUpIHsKKyAgICAgICAgKHZvaWQpdHlwZTsKKyAg
ICAgICAgaWYgKEJhc2U6OmxldmVsX3N0YWNrXy5HZXRTaXplKCkgIT0gMCkgeyAvLyB0aGlzIHZh
bHVlIGlzIG5vdCBhdCByb290CisgICAgICAgICAgICB0eXBlbmFtZSBCYXNlOjpMZXZlbCogbGV2
ZWwgPSBCYXNlOjpsZXZlbF9zdGFja18udGVtcGxhdGUgVG9wPHR5cGVuYW1lIEJhc2U6OkxldmVs
PigpOworCisgICAgICAgICAgICBpZiAobGV2ZWwtPmluQXJyYXkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAobGV2ZWwtPnZhbHVlQ291bnQgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIEJhc2U6
Om9zXy0+UHV0KCcsJyk7IC8vIGFkZCBjb21tYSBpZiBpdCBpcyBub3QgdGhlIGZpcnN0IGVsZW1l
bnQgaW4gYXJyYXkKKyAgICAgICAgICAgICAgICAgICAgQmFzZTo6b3NfLT5QdXQoJ1xuJyk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgQmFzZTo6b3NfLT5QdXQoJ1xuJyk7CisgICAgICAgICAgICAgICAgV3JpdGVJbmRlbnQoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeyAgLy8gaW4gb2JqZWN0CisgICAgICAg
ICAgICAgICAgaWYgKGxldmVsLT52YWx1ZUNvdW50ID4gMCkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAobGV2ZWwtPnZhbHVlQ291bnQgJSAyID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEJhc2U6Om9zXy0+UHV0KCcsJyk7CisgICAgICAgICAgICAgICAgICAgICAgICBCYXNlOjpv
c18tPlB1dCgnXG4nKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEJhc2U6Om9zXy0+UHV0KCc6Jyk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBCYXNlOjpvc18tPlB1dCgnICcpOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgQmFzZTo6b3NfLT5QdXQoJ1xuJyk7CisKKyAgICAgICAgICAgICAgICBp
ZiAobGV2ZWwtPnZhbHVlQ291bnQgJSAyID09IDApCisgICAgICAgICAgICAgICAgICAgIFdyaXRl
SW5kZW50KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWxldmVsLT5pbkFycmF5
ICYmIGxldmVsLT52YWx1ZUNvdW50ICUgMiA9PSAwKQorICAgICAgICAgICAgICAgIFJBUElESlNP
Tl9BU1NFUlQodHlwZSA9PSBrU3RyaW5nVHlwZSk7ICAvLyBpZiBpdCdzIGluIG9iamVjdCwgdGhl
biBldmVuIG51bWJlciBzaG91bGQgYmUgYSBuYW1lCisgICAgICAgICAgICBsZXZlbC0+dmFsdWVD
b3VudCsrOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUkFQSURKU09O
X0FTU0VSVCghQmFzZTo6aGFzUm9vdF8pOyAgLy8gU2hvdWxkIG9ubHkgaGFzIG9uZSBhbmQgb25s
eSBvbmUgcm9vdC4KKyAgICAgICAgICAgIEJhc2U6Omhhc1Jvb3RfID0gdHJ1ZTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHZvaWQgV3JpdGVJbmRlbnQoKSAgeworICAgICAgICBzaXplX3QgY291
bnQgPSAoQmFzZTo6bGV2ZWxfc3RhY2tfLkdldFNpemUoKSAvIHNpemVvZih0eXBlbmFtZSBCYXNl
OjpMZXZlbCkpICogaW5kZW50Q2hhckNvdW50XzsKKyAgICAgICAgUHV0TigqQmFzZTo6b3NfLCBp
bmRlbnRDaGFyXywgY291bnQpOworICAgIH0KKworICAgIENoIGluZGVudENoYXJfOworICAgIHVu
c2lnbmVkIGluZGVudENoYXJDb3VudF87CisKK3ByaXZhdGU6CisgICAgLy8gUHJvaGliaXQgY29w
eSBjb25zdHJ1Y3RvciAmIGFzc2lnbm1lbnQgb3BlcmF0b3IuCisgICAgUHJldHR5V3JpdGVyKGNv
bnN0IFByZXR0eVdyaXRlciYpOworICAgIFByZXR0eVdyaXRlciYgb3BlcmF0b3I9KGNvbnN0IFBy
ZXR0eVdyaXRlciYpOworfTsKKworUkFQSURKU09OX05BTUVTUEFDRV9FTkQKKworI2lmZGVmIF9f
R05VQ19fCitSQVBJREpTT05fRElBR19QT1AKKyNlbmRpZgorCisjZW5kaWYgLy8gUkFQSURKU09O
X1JBUElESlNPTl9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Ro
aXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9yYXBpZGpzb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFw
aWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL3JhcGlkanNvbi5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5j
bHVkZS9yYXBpZGpzb24vcmFwaWRqc29uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2Mjgg
QEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSBNaWxvIFlpcAorLy8KKy8vIFBlcm1pc3Npb24gaXMg
aGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBh
IGNvcHkKKy8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBm
aWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCisvLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91
dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCisv
LyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1Ymxp
Y2Vuc2UsIGFuZC9vciBzZWxsCisvLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVy
bWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy8vIGZ1cm5pc2hlZCB0byBkbyBz
bywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisvLworLy8gVGhlIGFib3Zl
IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5j
bHVkZWQgaW4KKy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNv
ZnR3YXJlLgorLy8KKy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VU
IFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisvLyBJTVBMSUVELCBJTkNMVURJTkcg
QlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKy8v
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRQorLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBM
SUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorLy8gTElBQklMSVRZLCBXSEVU
SEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcg
RlJPTSwKKy8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRI
RSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KKy8vIFRIRSBTT0ZUV0FSRS4KKworI2lmbmRlZiBS
QVBJREpTT05fUkFQSURKU09OX0hfCisjZGVmaW5lIFJBUElESlNPTl9SQVBJREpTT05fSF8KKwor
Ly8gQ29weXJpZ2h0IChjKSAyMDExIE1pbG8gWWlwIChtaWxveWlwQGdtYWlsLmNvbSkKKy8vIFZl
cnNpb24gMC4xCisKKy8qIVxmaWxlIHJhcGlkanNvbi5oCisgICAgXGJyaWVmIGNvbW1vbiBkZWZp
bml0aW9ucyBhbmQgY29uZmlndXJhdGlvbgorCisgICAgXHNlZSBSQVBJREpTT05fQ09ORklHCisg
Ki8KKworLyohIFxkZWZncm91cCBSQVBJREpTT05fQ09ORklHIFJhcGlkSlNPTiBjb25maWd1cmF0
aW9uCisgICAgXGJyaWVmIENvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciBsaWJyYXJ5IGZlYXR1cmVz
CisKKyAgICBTb21lIFJhcGlkSlNPTiBmZWF0dXJlcyBhcmUgY29uZmlndXJhYmxlIHRvIGFkYXB0
IHRoZSBsaWJyYXJ5IHRvIGEgd2lkZQorICAgIHZhcmlldHkgb2YgcGxhdGZvcm1zLCBlbnZpcm9u
bWVudHMgYW5kIHVzYWdlIHNjZW5hcmlvcy4gIE1vc3Qgb2YgdGhlCisgICAgZmVhdHVyZXMgY2Fu
IGJlIGNvbmZpZ3VyZWQgaW4gdGVybXMgb2Ygb3ZlcnJpZGVuIG9yIHByZWRlZmluZWQKKyAgICBw
cmVwcm9jZXNzb3IgbWFjcm9zIGF0IGNvbXBpbGUtdGltZS4KKworICAgIFNvbWUgYWRkaXRpb25h
bCBjdXN0b21pemF0aW9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgXHJlZiBSQVBJREpTT05fRVJST1JT
IEFQSXMuCisKKyAgICBcbm90ZSBUaGVzZSBtYWNyb3Mgc2hvdWxkIGJlIGdpdmVuIG9uIHRoZSBj
b21waWxlciBjb21tYW5kLWxpbmUKKyAgICAgICAgICAod2hlcmUgYXBwbGljYWJsZSkgIHRvIGF2
b2lkIGluY29uc2lzdGVudCB2YWx1ZXMgd2hlbiBjb21waWxpbmcKKyAgICAgICAgICBkaWZmZXJl
bnQgdHJhbnNsYXRpb24gdW5pdHMgb2YgYSBzaW5nbGUgYXBwbGljYXRpb24uCisgKi8KKworI2lu
Y2x1ZGUgPGNzdGRsaWI+ICAvLyBtYWxsb2MoKSwgcmVhbGxvYygpLCBmcmVlKCksIHNpemVfdAor
I2luY2x1ZGUgPGNzdHJpbmc+ICAvLyBtZW1zZXQoKSwgbWVtY3B5KCksIG1lbW1vdmUoKSwgbWVt
Y21wKCkKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gUkFQSURKU09OX05BTUVTUEFDRV8o
QkVHSU58RU5EKQorLyohIFxkZWYgUkFQSURKU09OX05BTUVTUEFDRQorICAgIFxpbmdyb3VwIFJB
UElESlNPTl9DT05GSUcKKyAgICBcYnJpZWYgICBwcm92aWRlIGN1c3RvbSByYXBpZGpzb24gbmFt
ZXNwYWNlCisKKyAgICBJbiBvcmRlciB0byBhdm9pZCBzeW1ib2wgY2xhc2hlcyBhbmQvb3IgIk9u
ZSBEZWZpbml0aW9uIFJ1bGUiIGVycm9ycworICAgIGJldHdlZW4gbXVsdGlwbGUgaW5jbHVzaW9u
cyBvZiAoZGlmZmVyZW50IHZlcnNpb25zIG9mKSBSYXBpZEpTT04gaW4KKyAgICBhIHNpbmdsZSBi
aW5hcnksIHVzZXJzIGNhbiBjdXN0b21pemUgdGhlIG5hbWUgb2YgdGhlIG1haW4gUmFwaWRKU09O
CisgICAgbmFtZXNwYWNlLgorCisgICAgSW4gY2FzZSBvZiBhIHNpbmdsZSBuZXN0aW5nIGxldmVs
LCBkZWZpbmluZyBcYyBSQVBJREpTT05fTkFNRVNQQUNFCisgICAgdG8gYSBjdXN0b20gbmFtZSAo
ZS5nLiBcYyBNeVJhcGlkSlNPTikgaXMgc3VmZmljaWVudC4gIElmIG11bHRpcGxlCisgICAgbGV2
ZWxzIGFyZSBuZWVkZWQsIGJvdGggXHJlZiBSQVBJREpTT05fTkFNRVNQQUNFX0JFR0lOIGFuZCBc
cmVmCisgICAgUkFQSURKU09OX05BTUVTUEFDRV9FTkQgbmVlZCB0byBiZSBkZWZpbmVkIGFzIHdl
bGw6CisKKyAgICBcY29kZQorICAgIC8vIGluIHNvbWUgLmNwcCBmaWxlCisgICAgI2RlZmluZSBS
QVBJREpTT05fTkFNRVNQQUNFIG15OjpyYXBpZGpzb24KKyAgICAjZGVmaW5lIFJBUElESlNPTl9O
QU1FU1BBQ0VfQkVHSU4gbmFtZXNwYWNlIG15IHsgbmFtZXNwYWNlIHJhcGlkanNvbiB7CisgICAg
I2RlZmluZSBSQVBJREpTT05fTkFNRVNQQUNFX0VORCAgIH0gfQorICAgICNpbmNsdWRlICJyYXBp
ZGpzb24vLi4uIgorICAgIFxlbmRjb2RlCisKKyAgICBcc2VlIHJhcGlkanNvbgorICovCisvKiEg
XGRlZiBSQVBJREpTT05fTkFNRVNQQUNFX0JFR0lOCisgICAgXGluZ3JvdXAgUkFQSURKU09OX0NP
TkZJRworICAgIFxicmllZiAgIHByb3ZpZGUgY3VzdG9tIHJhcGlkanNvbiBuYW1lc3BhY2UgKG9w
ZW5pbmcgZXhwcmVzc2lvbikKKyAgICBcc2VlIFJBUElESlNPTl9OQU1FU1BBQ0UKKyovCisvKiEg
XGRlZiBSQVBJREpTT05fTkFNRVNQQUNFX0VORAorICAgIFxpbmdyb3VwIFJBUElESlNPTl9DT05G
SUcKKyAgICBcYnJpZWYgICBwcm92aWRlIGN1c3RvbSByYXBpZGpzb24gbmFtZXNwYWNlIChjbG9z
aW5nIGV4cHJlc3Npb24pCisgICAgXHNlZSBSQVBJREpTT05fTkFNRVNQQUNFCisqLworI2lmbmRl
ZiBSQVBJREpTT05fTkFNRVNQQUNFCisjZGVmaW5lIFJBUElESlNPTl9OQU1FU1BBQ0UgcmFwaWRq
c29uCisjZW5kaWYKKyNpZm5kZWYgUkFQSURKU09OX05BTUVTUEFDRV9CRUdJTgorI2RlZmluZSBS
QVBJREpTT05fTkFNRVNQQUNFX0JFR0lOIG5hbWVzcGFjZSBSQVBJREpTT05fTkFNRVNQQUNFIHsK
KyNlbmRpZgorI2lmbmRlZiBSQVBJREpTT05fTkFNRVNQQUNFX0VORAorI2RlZmluZSBSQVBJREpT
T05fTkFNRVNQQUNFX0VORCB9CisjZW5kaWYKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8g
UkFQSURKU09OX05PX0lOVDY0REVGSU5FCisKKy8qISBcZGVmIFJBUElESlNPTl9OT19JTlQ2NERF
RklORQorICAgIFxpbmdyb3VwIFJBUElESlNPTl9DT05GSUcKKyAgICBcYnJpZWYgVXNlIGV4dGVy
bmFsIDY0LWJpdCBpbnRlZ2VyIHR5cGVzLgorCisgICAgUmFwaWRKU09OIHJlcXVpcmVzIHRoZSA2
NC1iaXQgaW50ZWdlciB0eXBlcyBcYyBpbnQ2NF90IGFuZCAgXGMgdWludDY0X3QgdHlwZXMKKyAg
ICB0byBiZSBhdmFpbGFibGUgYXQgZ2xvYmFsIHNjb3BlLgorCisgICAgSWYgdXNlcnMgaGF2ZSB0
aGVpciBvd24gZGVmaW5pdGlvbiwgZGVmaW5lIFJBUElESlNPTl9OT19JTlQ2NERFRklORSB0bwor
ICAgIHByZXZlbnQgUmFwaWRKU09OIGZyb20gZGVmaW5pbmcgaXRzIG93biB0eXBlcy4KKyovCisj
aWZuZGVmIFJBUElESlNPTl9OT19JTlQ2NERFRklORQorLy8hQGNvbmQgUkFQSURKU09OX0hJRERF
Tl9GUk9NX0RPWFlHRU4KKyNpZmRlZiBfTVNDX1ZFUgorI2luY2x1ZGUgIm1zaW50dHlwZXMvc3Rk
aW50LmgiCisjaW5jbHVkZSAibXNpbnR0eXBlcy9pbnR0eXBlcy5oIgorI2Vsc2UKKy8vIE90aGVy
IGNvbXBpbGVycyBzaG91bGQgaGF2ZSB0aGlzLgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1
ZGUgPGludHR5cGVzLmg+CisjZW5kaWYKKy8vIUBlbmRjb25kCisjaWZkZWYgUkFQSURKU09OX0RP
WFlHRU5fUlVOTklORworI2RlZmluZSBSQVBJREpTT05fTk9fSU5UNjRERUZJTkUKKyNlbmRpZgor
I2VuZGlmIC8vIFJBUElESlNPTl9OT19JTlQ2NFRZUEVERUYKKworLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLworLy8gUkFQSURKU09OX0ZPUkNFSU5MSU5FCisKKyNpZm5kZWYgUkFQSURKU09OX0ZPUkNF
SU5MSU5FCisvLyFAY29uZCBSQVBJREpTT05fSElEREVOX0ZST01fRE9YWUdFTgorI2lmZGVmIF9N
U0NfVkVSCisjZGVmaW5lIFJBUElESlNPTl9GT1JDRUlOTElORSBfX2ZvcmNlaW5saW5lCisjZWxp
ZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA+PSA0CisjZGVmaW5lIFJBUElESlNPTl9G
T1JDRUlOTElORSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkKKyNlbHNlCisjZGVmaW5l
IFJBUElESlNPTl9GT1JDRUlOTElORQorI2VuZGlmCisvLyFAZW5kY29uZAorI2VuZGlmIC8vIFJB
UElESlNPTl9GT1JDRUlOTElORQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBSQVBJREpT
T05fRU5ESUFOCisjZGVmaW5lIFJBUElESlNPTl9MSVRUTEVFTkRJQU4gIDAgICAvLyE8IExpdHRs
ZSBlbmRpYW4gbWFjaGluZQorI2RlZmluZSBSQVBJREpTT05fQklHRU5ESUFOICAgICAxICAgLy8h
PCBCaWcgZW5kaWFuIG1hY2hpbmUKKworLy8hIEVuZGlhbm5lc3Mgb2YgdGhlIG1hY2hpbmUuCisv
KiEKKyAgICBcZGVmIFJBUElESlNPTl9FTkRJQU4KKyAgICBcaW5ncm91cCBSQVBJREpTT05fQ09O
RklHCisKKyAgICBHQ0MgNC42IHByb3ZpZGVkIG1hY3JvIGZvciBkZXRlY3RpbmcgZW5kaWFubmVz
cyBvZiB0aGUgdGFyZ2V0IG1hY2hpbmUuIEJ1dCBvdGhlcgorICAgIGNvbXBpbGVycyBtYXkgbm90
IGhhdmUgdGhpcy4gVXNlciBjYW4gZGVmaW5lIFJBUElESlNPTl9FTkRJQU4gdG8gZWl0aGVyCisg
ICAgXHJlZiBSQVBJREpTT05fTElUVExFRU5ESUFOIG9yIFxyZWYgUkFQSURKU09OX0JJR0VORElB
Ti4KKworICAgIERlZmF1bHQgZGV0ZWN0aW9uIGltcGxlbWVudGVkIHdpdGggcmVmZXJlbmNlIHRv
CisgICAgXGxpIGh0dHBzOi8vZ2NjLmdudS5vcmcvb25saW5lZG9jcy9nY2MtNC42LjAvY3BwL0Nv
bW1vbi1QcmVkZWZpbmVkLU1hY3Jvcy5odG1sCisgICAgXGxpIGh0dHA6Ly93d3cuYm9vc3Qub3Jn
L2RvYy9saWJzLzFfNDJfMC9ib29zdC9kZXRhaWwvZW5kaWFuLmhwcAorKi8KKyNpZm5kZWYgUkFQ
SURKU09OX0VORElBTgorLy8gRGV0ZWN0IHdpdGggR0NDIDQuNidzIG1hY3JvCisjICBpZmRlZiBf
X0JZVEVfT1JERVJfXworIyAgICBpZiBfX0JZVEVfT1JERVJfXyA9PSBfX09SREVSX0xJVFRMRV9F
TkRJQU5fXworIyAgICAgIGRlZmluZSBSQVBJREpTT05fRU5ESUFOIFJBUElESlNPTl9MSVRUTEVF
TkRJQU4KKyMgICAgZWxpZiBfX0JZVEVfT1JERVJfXyA9PSBfX09SREVSX0JJR19FTkRJQU5fXwor
IyAgICAgIGRlZmluZSBSQVBJREpTT05fRU5ESUFOIFJBUElESlNPTl9CSUdFTkRJQU4KKyMgICAg
ZWxzZQorIyAgICAgIGVycm9yIFVua25vd24gbWFjaGluZSBlbmRpYW5lc3MgZGV0ZWN0ZWQuIFVz
ZXIgbmVlZHMgdG8gZGVmaW5lIFJBUElESlNPTl9FTkRJQU4uCisjICAgIGVuZGlmIC8vIF9fQllU
RV9PUkRFUl9fCisvLyBEZXRlY3Qgd2l0aCBHTElCQydzIGVuZGlhbi5oCisjICBlbGlmIGRlZmlu
ZWQoX19HTElCQ19fKQorIyAgICBpbmNsdWRlIDxlbmRpYW4uaD4KKyMgICAgaWYgKF9fQllURV9P
UkRFUiA9PSBfX0xJVFRMRV9FTkRJQU4pCisjICAgICAgZGVmaW5lIFJBUElESlNPTl9FTkRJQU4g
UkFQSURKU09OX0xJVFRMRUVORElBTgorIyAgICBlbGlmIChfX0JZVEVfT1JERVIgPT0gX19CSUdf
RU5ESUFOKQorIyAgICAgIGRlZmluZSBSQVBJREpTT05fRU5ESUFOIFJBUElESlNPTl9CSUdFTkRJ
QU4KKyMgICAgZWxzZQorIyAgICAgIGVycm9yIFVua25vd24gbWFjaGluZSBlbmRpYW5lc3MgZGV0
ZWN0ZWQuIFVzZXIgbmVlZHMgdG8gZGVmaW5lIFJBUElESlNPTl9FTkRJQU4uCisjICAgZW5kaWYg
Ly8gX19HTElCQ19fCisvLyBEZXRlY3Qgd2l0aCBfTElUVExFX0VORElBTiBhbmQgX0JJR19FTkRJ
QU4gbWFjcm8KKyMgIGVsaWYgZGVmaW5lZChfTElUVExFX0VORElBTikgJiYgIWRlZmluZWQoX0JJ
R19FTkRJQU4pCisjICAgIGRlZmluZSBSQVBJREpTT05fRU5ESUFOIFJBUElESlNPTl9MSVRUTEVF
TkRJQU4KKyMgIGVsaWYgZGVmaW5lZChfQklHX0VORElBTikgJiYgIWRlZmluZWQoX0xJVFRMRV9F
TkRJQU4pCisjICAgIGRlZmluZSBSQVBJREpTT05fRU5ESUFOIFJBUElESlNPTl9CSUdFTkRJQU4K
Ky8vIERldGVjdCB3aXRoIGFyY2hpdGVjdHVyZSBtYWNyb3MKKyMgIGVsaWYgZGVmaW5lZChfX3Nw
YXJjKSB8fCBkZWZpbmVkKF9fc3BhcmNfXykgfHwgZGVmaW5lZChfUE9XRVIpIHx8IGRlZmluZWQo
X19wb3dlcnBjX18pIHx8IGRlZmluZWQoX19wcGNfXykgfHwgZGVmaW5lZChfX2hwdXgpIHx8IGRl
ZmluZWQoX19ocHBhKSB8fCBkZWZpbmVkKF9NSVBTRUIpIHx8IGRlZmluZWQoX1BPV0VSKSB8fCBk
ZWZpbmVkKF9fczM5MF9fKQorIyAgICBkZWZpbmUgUkFQSURKU09OX0VORElBTiBSQVBJREpTT05f
QklHRU5ESUFOCisjICBlbGlmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hbHBoYV9f
KSB8fCBkZWZpbmVkKF9faWE2NCkgfHwgZGVmaW5lZChfX2lhNjRfXykgfHwgZGVmaW5lZChfTV9J
WDg2KSB8fCBkZWZpbmVkKF9NX0lBNjQpIHx8IGRlZmluZWQoX01fQUxQSEEpIHx8IGRlZmluZWQo
X19hbWQ2NCkgfHwgZGVmaW5lZChfX2FtZDY0X18pIHx8IGRlZmluZWQoX01fQU1ENjQpIHx8IGRl
ZmluZWQoX194ODZfNjQpIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfTV9YNjQp
IHx8IGRlZmluZWQoX19iZmluX18pCisjICAgIGRlZmluZSBSQVBJREpTT05fRU5ESUFOIFJBUElE
SlNPTl9MSVRUTEVFTkRJQU4KKyMgIGVsaWYgZGVmaW5lZChSQVBJREpTT05fRE9YWUdFTl9SVU5O
SU5HKQorIyAgICBkZWZpbmUgUkFQSURKU09OX0VORElBTgorIyAgZWxzZQorIyAgICBlcnJvciBV
bmtub3duIG1hY2hpbmUgZW5kaWFuZXNzIGRldGVjdGVkLiBVc2VyIG5lZWRzIHRvIGRlZmluZSBS
QVBJREpTT05fRU5ESUFOLiAgIAorIyAgZW5kaWYKKyNlbmRpZiAvLyBSQVBJREpTT05fRU5ESUFO
CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIFJBUElESlNPTl82NEJJVAorCisvLyEgV2hl
dGhlciB1c2luZyA2NC1iaXQgYXJjaGl0ZWN0dXJlCisjaWZuZGVmIFJBUElESlNPTl82NEJJVAor
I2lmIGRlZmluZWQoX19MUDY0X18pIHx8IGRlZmluZWQoX1dJTjY0KQorI2RlZmluZSBSQVBJREpT
T05fNjRCSVQgMQorI2Vsc2UKKyNkZWZpbmUgUkFQSURKU09OXzY0QklUIDAKKyNlbmRpZgorI2Vu
ZGlmIC8vIFJBUElESlNPTl82NEJJVAorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBSQVBJ
REpTT05fQUxJR04KKworLy8hIERhdGEgYWxpZ25tZW50IG9mIHRoZSBtYWNoaW5lLgorLyohIFxp
bmdyb3VwIFJBUElESlNPTl9DT05GSUcKKyAgICBccGFyYW0geCBwb2ludGVyIHRvIGFsaWduCisK
KyAgICBTb21lIG1hY2hpbmVzIHJlcXVpcmUgc3RyaWN0IGRhdGEgYWxpZ25tZW50LiBDdXJyZW50
bHkgdGhlIGRlZmF1bHQgdXNlcyA0IGJ5dGVzCisgICAgYWxpZ25tZW50LiBVc2VyIGNhbiBjdXN0
b21pemUgYnkgZGVmaW5pbmcgdGhlIFJBUElESlNPTl9BTElHTiBmdW5jdGlvbiBtYWNyby4sCisq
LworI2lmbmRlZiBSQVBJREpTT05fQUxJR04KKyNkZWZpbmUgUkFQSURKU09OX0FMSUdOKHgpICgo
eCArIDN1KSAmIH4zdSkKKyNlbmRpZgorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBSQVBJ
REpTT05fVUlOVDY0X0MyCisKKy8vISBDb25zdHJ1Y3QgYSA2NC1iaXQgbGl0ZXJhbCBieSBhIHBh
aXIgb2YgMzItYml0IGludGVnZXIuCisvKiEKKyAgICA2NC1iaXQgbGl0ZXJhbCB3aXRoIG9yIHdp
dGhvdXQgVUxMIHN1ZmZpeCBpcyBwcm9uZSB0byBjb21waWxlciB3YXJuaW5ncy4KKyAgICBVSU5U
NjRfQygpIGlzIEMgbWFjcm8gd2hpY2ggY2F1c2UgY29tcGlsYXRpb24gcHJvYmxlbXMuCisgICAg
VXNlIHRoaXMgbWFjcm8gdG8gZGVmaW5lIDY0LWJpdCBjb25zdGFudHMgYnkgYSBwYWlyIG9mIDMy
LWJpdCBpbnRlZ2VyLgorKi8KKyNpZm5kZWYgUkFQSURKU09OX1VJTlQ2NF9DMgorI2RlZmluZSBS
QVBJREpTT05fVUlOVDY0X0MyKGhpZ2gzMiwgbG93MzIpICgoc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KGhpZ2gzMikgPDwgMzIpIHwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxvdzMyKSkKKyNlbmRpZgor
CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBSQVBJREpTT05fU1NFMi9SQVBJREpTT05fU1NF
NDIvUkFQSURKU09OX1NJTUQKKworLyohIFxkZWYgUkFQSURKU09OX1NJTUQKKyAgICBcaW5ncm91
cCBSQVBJREpTT05fQ09ORklHCisgICAgXGJyaWVmIEVuYWJsZSBTU0UyL1NTRTQuMiBvcHRpbWl6
YXRpb24uCisKKyAgICBSYXBpZEpTT04gc3VwcG9ydHMgb3B0aW1pemVkIGltcGxlbWVudGF0aW9u
cyBmb3Igc29tZSBwYXJzaW5nIG9wZXJhdGlvbnMKKyAgICBiYXNlZCBvbiB0aGUgU1NFMiBvciBT
U0U0LjIgU0lNRCBleHRlbnNpb25zIG9uIG1vZGVybiBJbnRlbC1jb21wYXRpYmxlCisgICAgcHJv
Y2Vzc29ycy4KKworICAgIFRvIGVuYWJsZSB0aGVzZSBvcHRpbWl6YXRpb25zLCB0d28gZGlmZmVy
ZW50IHN5bWJvbHMgY2FuIGJlIGRlZmluZWQ7CisgICAgXGNvZGUKKyAgICAvLyBFbmFibGUgU1NF
MiBvcHRpbWl6YXRpb24uCisgICAgI2RlZmluZSBSQVBJREpTT05fU1NFMgorCisgICAgLy8gRW5h
YmxlIFNTRTQuMiBvcHRpbWl6YXRpb24uCisgICAgI2RlZmluZSBSQVBJREpTT05fU1NFNDIKKyAg
ICBcZW5kY29kZQorCisgICAgXGMgUkFQSURKU09OX1NTRTQyIHRha2VzIHByZWNlZGVuY2UsIGlm
IGJvdGggYXJlIGRlZmluZWQuCisKKyAgICBJZiBhbnkgb2YgdGhlc2Ugc3ltYm9scyBpcyBkZWZp
bmVkLCBSYXBpZEpTT04gZGVmaW5lcyB0aGUgbWFjcm8KKyAgICBcYyBSQVBJREpTT05fU0lNRCB0
byBpbmRpY2F0ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoZSBvcHRpbWl6ZWQgY29kZS4KKyovCisj
aWYgZGVmaW5lZChSQVBJREpTT05fU1NFMikgfHwgZGVmaW5lZChSQVBJREpTT05fU1NFNDIpIFwK
KyAgICB8fCBkZWZpbmVkKFJBUElESlNPTl9ET1hZR0VOX1JVTk5JTkcpCisjZGVmaW5lIFJBUElE
SlNPTl9TSU1ECisjZW5kaWYKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gUkFQSURKU09O
X05PX1NJWkVUWVBFREVGSU5FCisKKyNpZm5kZWYgUkFQSURKU09OX05PX1NJWkVUWVBFREVGSU5F
CisvKiEgXGRlZiBSQVBJREpTT05fTk9fU0laRVRZUEVERUZJTkUKKyAgICBcaW5ncm91cCBSQVBJ
REpTT05fQ09ORklHCisgICAgXGJyaWVmIFVzZXItcHJvdmlkZWQgXGMgU2l6ZVR5cGUgZGVmaW5p
dGlvbi4KKworICAgIEluIG9yZGVyIHRvIGF2b2lkIHVzaW5nIDMyLWJpdCBzaXplIHR5cGVzIGZv
ciBpbmRleGluZyBzdHJpbmdzIGFuZCBhcnJheXMsCisgICAgZGVmaW5lIHRoaXMgcHJlcHJvY2Vz
c29yIHN5bWJvbCBhbmQgcHJvdmlkZSB0aGUgdHlwZSByYXBpZGpzb246OlNpemVUeXBlCisgICAg
YmVmb3JlIGluY2x1ZGluZyBSYXBpZEpTT046CisgICAgXGNvZGUKKyAgICAjZGVmaW5lIFJBUElE
SlNPTl9OT19TSVpFVFlQRURFRklORQorICAgIG5hbWVzcGFjZSByYXBpZGpzb24geyB0eXBlZGVm
IDo6c3RkOjpzaXplX3QgU2l6ZVR5cGU7IH0KKyAgICAjaW5jbHVkZSAicmFwaWRqc29uLy4uLiIK
KyAgICBcZW5kY29kZQorCisgICAgXHNlZSByYXBpZGpzb246OlNpemVUeXBlCisqLworI2lmZGVm
IFJBUElESlNPTl9ET1hZR0VOX1JVTk5JTkcKKyNkZWZpbmUgUkFQSURKU09OX05PX1NJWkVUWVBF
REVGSU5FCisjZW5kaWYKK1JBUElESlNPTl9OQU1FU1BBQ0VfQkVHSU4KKy8vISBTaXplIHR5cGUg
KGZvciBzdHJpbmcgbGVuZ3RocywgYXJyYXkgc2l6ZXMsIGV0Yy4pCisvKiEgUmFwaWRKU09OIHVz
ZXMgMzItYml0IGFycmF5L3N0cmluZyBpbmRpY2VzIGV2ZW4gb24gNjQtYml0IHBsYXRmb3JtcywK
KyAgICBpbnN0ZWFkIG9mIHVzaW5nIFxjIHNpemVfdC4gVXNlcnMgbWF5IG92ZXJyaWRlIHRoZSBT
aXplVHlwZSBieSBkZWZpbmluZworICAgIFxyZWYgUkFQSURKU09OX05PX1NJWkVUWVBFREVGSU5F
LgorKi8KK3R5cGVkZWYgdW5zaWduZWQgU2l6ZVR5cGU7CitSQVBJREpTT05fTkFNRVNQQUNFX0VO
RAorI2VuZGlmCisKKy8vIGFsd2F5cyBpbXBvcnQgc3RkOjpzaXplX3QgdG8gcmFwaWRqc29uIG5h
bWVzcGFjZQorUkFQSURKU09OX05BTUVTUEFDRV9CRUdJTgordXNpbmcgc3RkOjpzaXplX3Q7CitS
QVBJREpTT05fTkFNRVNQQUNFX0VORAorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBSQVBJ
REpTT05fQVNTRVJUCisKKy8vISBBc3NlcnRpb24uCisvKiEgXGluZ3JvdXAgUkFQSURKU09OX0NP
TkZJRworICAgIEJ5IGRlZmF1bHQsIHJhcGlkanNvbiB1c2VzIEMgXGMgYXNzZXJ0KCkgZm9yIGlu
dGVybmFsIGFzc2VydGlvbnMuCisgICAgVXNlciBjYW4gb3ZlcnJpZGUgaXQgYnkgZGVmaW5pbmcg
UkFQSURKU09OX0FTU0VSVCh4KSBtYWNyby4KKworICAgIFxub3RlIFBhcnNpbmcgZXJyb3JzIGFy
ZSBoYW5kbGVkIGFuZCBjYW4gYmUgY3VzdG9taXplZCBieSB0aGUKKyAgICAgICAgICBccmVmIFJB
UElESlNPTl9FUlJPUlMgQVBJcy4KKyovCisjaWZuZGVmIFJBUElESlNPTl9BU1NFUlQKKyNpbmNs
dWRlIDxjYXNzZXJ0PgorI2RlZmluZSBSQVBJREpTT05fQVNTRVJUKHgpIGFzc2VydCh4KQorI2Vu
ZGlmIC8vIFJBUElESlNPTl9BU1NFUlQKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gUkFQ
SURKU09OX1NUQVRJQ19BU1NFUlQKKworLy8gQWRvcHQgZnJvbSBib29zdAorI2lmbmRlZiBSQVBJ
REpTT05fU1RBVElDX0FTU0VSVAorLy8hQGNvbmQgUkFQSURKU09OX0hJRERFTl9GUk9NX0RPWFlH
RU4KK1JBUElESlNPTl9OQU1FU1BBQ0VfQkVHSU4KK3RlbXBsYXRlIDxib29sIHg+IHN0cnVjdCBT
VEFUSUNfQVNTRVJUSU9OX0ZBSUxVUkU7Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgU1RBVElDX0FTU0VS
VElPTl9GQUlMVVJFPHRydWU+IHsgZW51bSB7IHZhbHVlID0gMSB9OyB9OwordGVtcGxhdGU8aW50
IHg+IHN0cnVjdCBTdGF0aWNBc3NlcnRUZXN0IHt9OworUkFQSURKU09OX05BTUVTUEFDRV9FTkQK
KworI2RlZmluZSBSQVBJREpTT05fSk9JTihYLCBZKSBSQVBJREpTT05fRE9fSk9JTihYLCBZKQor
I2RlZmluZSBSQVBJREpTT05fRE9fSk9JTihYLCBZKSBSQVBJREpTT05fRE9fSk9JTjIoWCwgWSkK
KyNkZWZpbmUgUkFQSURKU09OX0RPX0pPSU4yKFgsIFkpIFgjI1kKKworI2lmIGRlZmluZWQoX19H
TlVDX18pCisjZGVmaW5lIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUX1VOVVNFRF9BVFRSSUJVVEUg
X19hdHRyaWJ1dGVfXygodW51c2VkKSkKKyNlbHNlCisjZGVmaW5lIFJBUElESlNPTl9TVEFUSUNf
QVNTRVJUX1VOVVNFRF9BVFRSSUJVVEUgCisjZW5kaWYKKy8vIUBlbmRjb25kCisKKy8qISBcZGVm
IFJBUElESlNPTl9TVEFUSUNfQVNTRVJUCisgICAgXGJyaWVmIChJbnRlcm5hbCkgbWFjcm8gdG8g
Y2hlY2sgZm9yIGNvbmRpdGlvbnMgYXQgY29tcGlsZS10aW1lCisgICAgXHBhcmFtIHggY29tcGls
ZS10aW1lIGNvbmRpdGlvbgorICAgIFxoaWRlaW5pdGlhbGl6ZXIKKyAqLworI2RlZmluZSBSQVBJ
REpTT05fU1RBVElDX0FTU0VSVCh4KSBcCisgICAgdHlwZWRlZiA6OlJBUElESlNPTl9OQU1FU1BB
Q0U6OlN0YXRpY0Fzc2VydFRlc3Q8IFwKKyAgICAgIHNpemVvZig6OlJBUElESlNPTl9OQU1FU1BB
Q0U6OlNUQVRJQ19BU1NFUlRJT05fRkFJTFVSRTxib29sKHgpID4pPiBcCisgICAgUkFQSURKU09O
X0pPSU4oU3RhdGljQXNzZXJ0VHlwZWRlZiwgX19MSU5FX18pIFJBUElESlNPTl9TVEFUSUNfQVNT
RVJUX1VOVVNFRF9BVFRSSUJVVEUKKyNlbmRpZgorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisv
LyBIZWxwZXJzCisKKy8vIUBjb25kIFJBUElESlNPTl9ISURERU5fRlJPTV9ET1hZR0VOCisKKyNk
ZWZpbmUgUkFQSURKU09OX01VTFRJTElORU1BQ1JPX0JFR0lOIGRvIHsgIAorI2RlZmluZSBSQVBJ
REpTT05fTVVMVElMSU5FTUFDUk9fRU5EIFwKK30gd2hpbGUoKHZvaWQpMCwgMCkKKworLy8gYWRv
cHRlZCBmcm9tIEJvb3N0CisjZGVmaW5lIFJBUElESlNPTl9WRVJTSU9OX0NPREUoeCx5LHopIFwK
KyAgKCgoeCkqMTAwMDAwKSArICgoeSkqMTAwKSArICh6KSkKKworLy8gdG9rZW4gc3RyaW5naWZp
Y2F0aW9uCisjZGVmaW5lIFJBUElESlNPTl9TVFJJTkdJRlkoeCkgUkFQSURKU09OX0RPX1NUUklO
R0lGWSh4KQorI2RlZmluZSBSQVBJREpTT05fRE9fU1RSSU5HSUZZKHgpICN4CisKKy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KKy8vIFJBUElESlNPTl9ESUFHX1BVU0gvUE9QLCBSQVBJREpTT05fRElB
R19PRkYKKworI2lmIGRlZmluZWQoX19HTlVDX18pCisjZGVmaW5lIFJBUElESlNPTl9HTlVDIFwK
KyAgICBSQVBJREpTT05fVkVSU0lPTl9DT0RFKF9fR05VQ19fLF9fR05VQ19NSU5PUl9fLF9fR05V
Q19QQVRDSExFVkVMX18pCisjZW5kaWYKKworI2lmIGRlZmluZWQoX19jbGFuZ19fKSB8fCAoZGVm
aW5lZChSQVBJREpTT05fR05VQykgJiYgUkFQSURKU09OX0dOVUMgPj0gUkFQSURKU09OX1ZFUlNJ
T05fQ09ERSg0LDIsMCkpCisKKyNkZWZpbmUgUkFQSURKU09OX1BSQUdNQSh4KSBfUHJhZ21hKFJB
UElESlNPTl9TVFJJTkdJRlkoeCkpCisjZGVmaW5lIFJBUElESlNPTl9ESUFHX1BSQUdNQSh4KSBS
QVBJREpTT05fUFJBR01BKEdDQyBkaWFnbm9zdGljIHgpCisjZGVmaW5lIFJBUElESlNPTl9ESUFH
X09GRih4KSBcCisgICAgUkFQSURKU09OX0RJQUdfUFJBR01BKGlnbm9yZWQgUkFQSURKU09OX1NU
UklOR0lGWShSQVBJREpTT05fSk9JTigtVyx4KSkpCisKKy8vIHB1c2gvcG9wIHN1cHBvcnQgaW4g
Q2xhbmcgYW5kIEdDQz49NC42CisjaWYgZGVmaW5lZChfX2NsYW5nX18pIHx8IChkZWZpbmVkKFJB
UElESlNPTl9HTlVDKSAmJiBSQVBJREpTT05fR05VQyA+PSBSQVBJREpTT05fVkVSU0lPTl9DT0RF
KDQsNiwwKSkKKyNkZWZpbmUgUkFQSURKU09OX0RJQUdfUFVTSCBSQVBJREpTT05fRElBR19QUkFH
TUEocHVzaCkKKyNkZWZpbmUgUkFQSURKU09OX0RJQUdfUE9QICBSQVBJREpTT05fRElBR19QUkFH
TUEocG9wKQorI2Vsc2UgLy8gR0NDID49IDQuMiwgPCA0LjYKKyNkZWZpbmUgUkFQSURKU09OX0RJ
QUdfUFVTSCAvKiBpZ25vcmVkICovCisjZGVmaW5lIFJBUElESlNPTl9ESUFHX1BPUCAvKiBpZ25v
cmVkICovCisjZW5kaWYKKworI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKKworLy8gcHJhZ21hIChN
U1ZDIHNwZWNpZmljKQorI2RlZmluZSBSQVBJREpTT05fUFJBR01BKHgpIF9fcHJhZ21hKHgpCisj
ZGVmaW5lIFJBUElESlNPTl9ESUFHX1BSQUdNQSh4KSBSQVBJREpTT05fUFJBR01BKHdhcm5pbmco
eCkpCisKKyNkZWZpbmUgUkFQSURKU09OX0RJQUdfT0ZGKHgpIFJBUElESlNPTl9ESUFHX1BSQUdN
QShkaXNhYmxlOiB4KQorI2RlZmluZSBSQVBJREpTT05fRElBR19QVVNIIFJBUElESlNPTl9ESUFH
X1BSQUdNQShwdXNoKQorI2RlZmluZSBSQVBJREpTT05fRElBR19QT1AgIFJBUElESlNPTl9ESUFH
X1BSQUdNQShwb3ApCisKKyNlbHNlCisKKyNkZWZpbmUgUkFQSURKU09OX0RJQUdfT0ZGKHgpIC8q
IGlnbm9yZWQgKi8KKyNkZWZpbmUgUkFQSURKU09OX0RJQUdfUFVTSCAgIC8qIGlnbm9yZWQgKi8K
KyNkZWZpbmUgUkFQSURKU09OX0RJQUdfUE9QICAgIC8qIGlnbm9yZWQgKi8KKworI2VuZGlmIC8v
IFJBUElESlNPTl9ESUFHXyoKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gQysrMTEgZmVh
dHVyZXMKKworI2lmbmRlZiBSQVBJREpTT05fSEFTX0NYWDExX1JWQUxVRV9SRUZTCisjaWYgZGVm
aW5lZChfX2NsYW5nX18pCisjZGVmaW5lIFJBUElESlNPTl9IQVNfQ1hYMTFfUlZBTFVFX1JFRlMg
X19oYXNfZmVhdHVyZShjeHhfcnZhbHVlX3JlZmVyZW5jZXMpCisjZWxpZiAoZGVmaW5lZChSQVBJ
REpTT05fR05VQykgJiYgKFJBUElESlNPTl9HTlVDID49IFJBUElESlNPTl9WRVJTSU9OX0NPREUo
NCwzLDApKSAmJiBkZWZpbmVkKF9fR1hYX0VYUEVSSU1FTlRBTF9DWFgwWF9fKSkgfHwgXAorICAg
ICAgKGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSID49IDE2MDApCisKKyNkZWZpbmUgUkFQ
SURKU09OX0hBU19DWFgxMV9SVkFMVUVfUkVGUyAxCisjZWxzZQorI2RlZmluZSBSQVBJREpTT05f
SEFTX0NYWDExX1JWQUxVRV9SRUZTIDAKKyNlbmRpZgorI2VuZGlmIC8vIFJBUElESlNPTl9IQVNf
Q1hYMTFfUlZBTFVFX1JFRlMKKworI2lmbmRlZiBSQVBJREpTT05fSEFTX0NYWDExX05PRVhDRVBU
CisjaWYgZGVmaW5lZChfX2NsYW5nX18pCisjZGVmaW5lIFJBUElESlNPTl9IQVNfQ1hYMTFfTk9F
WENFUFQgX19oYXNfZmVhdHVyZShjeHhfbm9leGNlcHQpCisjZWxpZiAoZGVmaW5lZChSQVBJREpT
T05fR05VQykgJiYgKFJBUElESlNPTl9HTlVDID49IFJBUElESlNPTl9WRVJTSU9OX0NPREUoNCw2
LDApKSAmJiBkZWZpbmVkKF9fR1hYX0VYUEVSSU1FTlRBTF9DWFgwWF9fKSkKKy8vICAgIChkZWZp
bmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+PSA/Pz8/KSAvLyBub3QgeWV0IHN1cHBvcnRlZAor
I2RlZmluZSBSQVBJREpTT05fSEFTX0NYWDExX05PRVhDRVBUIDEKKyNlbHNlCisjZGVmaW5lIFJB
UElESlNPTl9IQVNfQ1hYMTFfTk9FWENFUFQgMAorI2VuZGlmCisjZW5kaWYKKyNpZiBSQVBJREpT
T05fSEFTX0NYWDExX05PRVhDRVBUCisjZGVmaW5lIFJBUElESlNPTl9OT0VYQ0VQVCBub2V4Y2Vw
dAorI2Vsc2UKKyNkZWZpbmUgUkFQSURKU09OX05PRVhDRVBUIC8qIG5vZXhjZXB0ICovCisjZW5k
aWYgLy8gUkFQSURKU09OX0hBU19DWFgxMV9OT0VYQ0VQVAorCisvLyBubyBhdXRvbWF0aWMgZGV0
ZWN0aW9uLCB5ZXQKKyNpZm5kZWYgUkFQSURKU09OX0hBU19DWFgxMV9UWVBFVFJBSVRTCisjZGVm
aW5lIFJBUElESlNPTl9IQVNfQ1hYMTFfVFlQRVRSQUlUUyAwCisjZW5kaWYKKworLy8hQGVuZGNv
bmQKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gbmV3L2RlbGV0ZQorCisjaWZuZGVmIFJB
UElESlNPTl9ORVcKKy8vLyEgY3VzdG9taXphdGlvbiBwb2ludCBmb3IgZ2xvYmFsIFxjIG5ldwor
I2RlZmluZSBSQVBJREpTT05fTkVXKHgpIG5ldyB4CisjZW5kaWYKKyNpZm5kZWYgUkFQSURKU09O
X0RFTEVURQorLy8vISBjdXN0b21pemF0aW9uIHBvaW50IGZvciBnbG9iYWwgXGMgZGVsZXRlCisj
ZGVmaW5lIFJBUElESlNPTl9ERUxFVEUoeCkgZGVsZXRlIHgKKyNlbmRpZgorCisvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCisvLyBBbGxvY2F0b3JzIGFuZCBFbmNvZGluZ3MKKworI2luY2x1ZGUgImFs
bG9jYXRvcnMuaCIKKyNpbmNsdWRlICJlbmNvZGluZ3MuaCIKKworLyohIFxuYW1lc3BhY2UgcmFw
aWRqc29uCisgICAgXGJyaWVmIG1haW4gUmFwaWRKU09OIG5hbWVzcGFjZQorICAgIFxzZWUgUkFQ
SURKU09OX05BTUVTUEFDRQorKi8KK1JBUElESlNPTl9OQU1FU1BBQ0VfQkVHSU4KKworLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLworLy8gIFN0cmVhbQorCisvKiEgXGNsYXNzIHJhcGlkanNvbjo6U3Ry
ZWFtCisgICAgXGJyaWVmIENvbmNlcHQgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgY2hhcmFjdGVy
cy4KKworICAgIEZvciByZWFkLW9ubHkgc3RyZWFtLCBubyBuZWVkIHRvIGltcGxlbWVudCBQdXRC
ZWdpbigpLCBQdXQoKSwgRmx1c2goKSBhbmQgUHV0RW5kKCkuCisKKyAgICBGb3Igd3JpdGUtb25s
eSBzdHJlYW0sIG9ubHkgbmVlZCB0byBpbXBsZW1lbnQgUHV0KCkgYW5kIEZsdXNoKCkuCisKK1xj
b2RlCitjb25jZXB0IFN0cmVhbSB7CisgICAgdHlwZW5hbWUgQ2g7ICAgIC8vITwgQ2hhcmFjdGVy
IHR5cGUgb2YgdGhlIHN0cmVhbS4KKworICAgIC8vISBSZWFkIHRoZSBjdXJyZW50IGNoYXJhY3Rl
ciBmcm9tIHN0cmVhbSB3aXRob3V0IG1vdmluZyB0aGUgcmVhZCBjdXJzb3IuCisgICAgQ2ggUGVl
aygpIGNvbnN0OworCisgICAgLy8hIFJlYWQgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGZyb20gc3Ry
ZWFtIGFuZCBtb3ZpbmcgdGhlIHJlYWQgY3Vyc29yIHRvIG5leHQgY2hhcmFjdGVyLgorICAgIENo
IFRha2UoKTsKKworICAgIC8vISBHZXQgdGhlIGN1cnJlbnQgcmVhZCBjdXJzb3IuCisgICAgLy8h
IFxyZXR1cm4gTnVtYmVyIG9mIGNoYXJhY3RlcnMgcmVhZCBmcm9tIHN0YXJ0LgorICAgIHNpemVf
dCBUZWxsKCk7CisKKyAgICAvLyEgQmVnaW4gd3JpdGluZyBvcGVyYXRpb24gYXQgdGhlIGN1cnJl
bnQgcmVhZCBwb2ludGVyLgorICAgIC8vISBccmV0dXJuIFRoZSBiZWdpbiB3cml0ZXIgcG9pbnRl
ci4KKyAgICBDaCogUHV0QmVnaW4oKTsKKworICAgIC8vISBXcml0ZSBhIGNoYXJhY3Rlci4KKyAg
ICB2b2lkIFB1dChDaCBjKTsKKworICAgIC8vISBGbHVzaCB0aGUgYnVmZmVyLgorICAgIHZvaWQg
Rmx1c2goKTsKKworICAgIC8vISBFbmQgdGhlIHdyaXRpbmcgb3BlcmF0aW9uLgorICAgIC8vISBc
cGFyYW0gYmVnaW4gVGhlIGJlZ2luIHdyaXRlIHBvaW50ZXIgcmV0dXJuZWQgYnkgUHV0QmVnaW4o
KS4KKyAgICAvLyEgXHJldHVybiBOdW1iZXIgb2YgY2hhcmFjdGVycyB3cml0dGVuLgorICAgIHNp
emVfdCBQdXRFbmQoQ2gqIGJlZ2luKTsKK30KK1xlbmRjb2RlCisqLworCisvLyEgUHJvdmlkZXMg
YWRkaXRpb25hbCBpbmZvcm1hdGlvbiBmb3Igc3RyZWFtLgorLyohCisgICAgQnkgdXNpbmcgdHJh
aXRzIHBhdHRlcm4sIHRoaXMgdHlwZSBwcm92aWRlcyBhIGRlZmF1bHQgY29uZmlndXJhdGlvbiBm
b3Igc3RyZWFtLgorICAgIEZvciBjdXN0b20gc3RyZWFtLCB0aGlzIHR5cGUgY2FuIGJlIHNwZWNp
YWxpemVkIGZvciBvdGhlciBjb25maWd1cmF0aW9uLgorICAgIFNlZSBURVNUKFJlYWRlciwgQ3Vz
dG9tU3RyaW5nU3RyZWFtKSBpbiByZWFkZXJ0ZXN0LmNwcCBmb3IgZXhhbXBsZS4KKyovCit0ZW1w
bGF0ZTx0eXBlbmFtZSBTdHJlYW0+CitzdHJ1Y3QgU3RyZWFtVHJhaXRzIHsKKyAgICAvLyEgV2hl
dGhlciB0byBtYWtlIGxvY2FsIGNvcHkgb2Ygc3RyZWFtIGZvciBvcHRpbWl6YXRpb24gZHVyaW5n
IHBhcnNpbmcuCisgICAgLyohCisgICAgICAgIEJ5IGRlZmF1bHQsIGZvciBzYWZldHksIHN0cmVh
bXMgZG8gbm90IHVzZSBsb2NhbCBjb3B5IG9wdGltaXphdGlvbi4KKyAgICAgICAgU3RyZWFtIHRo
YXQgY2FuIGJlIGNvcGllZCBmYXN0IHNob3VsZCBzcGVjaWFsaXplIHRoaXMsIGxpa2UgU3RyZWFt
VHJhaXRzPFN0cmluZ1N0cmVhbT4uCisgICAgKi8KKyAgICBlbnVtIHsgY29weU9wdGltaXphdGlv
biA9IDAgfTsKK307CisKKy8vISBQdXQgTiBjb3BpZXMgb2YgYSBjaGFyYWN0ZXIgdG8gYSBzdHJl
YW0uCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJlYW0sIHR5cGVuYW1lIENoPgoraW5saW5lIHZvaWQg
UHV0TihTdHJlYW0mIHN0cmVhbSwgQ2ggYywgc2l6ZV90IG4pIHsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG47IGkrKykKKyAgICAgICAgc3RyZWFtLlB1dChjKTsKK30KKworLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLworLy8gU3RyaW5nU3RyZWFtCisKKy8vISBSZWFkLW9ubHkgc3RyaW5nIHN0
cmVhbS4KKy8qISBcbm90ZSBpbXBsZW1lbnRzIFN0cmVhbSBjb25jZXB0CisqLwordGVtcGxhdGUg
PHR5cGVuYW1lIEVuY29kaW5nPgorc3RydWN0IEdlbmVyaWNTdHJpbmdTdHJlYW0geworICAgIHR5
cGVkZWYgdHlwZW5hbWUgRW5jb2Rpbmc6OkNoIENoOworCisgICAgR2VuZXJpY1N0cmluZ1N0cmVh
bShjb25zdCBDaCAqc3JjKSA6IHNyY18oc3JjKSwgaGVhZF8oc3JjKSB7fQorCisgICAgQ2ggUGVl
aygpIGNvbnN0IHsgcmV0dXJuICpzcmNfOyB9CisgICAgQ2ggVGFrZSgpIHsgcmV0dXJuICpzcmNf
Kys7IH0KKyAgICBzaXplX3QgVGVsbCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVf
dD4oc3JjXyAtIGhlYWRfKTsgfQorCisgICAgQ2gqIFB1dEJlZ2luKCkgeyBSQVBJREpTT05fQVNT
RVJUKGZhbHNlKTsgcmV0dXJuIDA7IH0KKyAgICB2b2lkIFB1dChDaCkgeyBSQVBJREpTT05fQVNT
RVJUKGZhbHNlKTsgfQorICAgIHZvaWQgRmx1c2goKSB7IFJBUElESlNPTl9BU1NFUlQoZmFsc2Up
OyB9CisgICAgc2l6ZV90IFB1dEVuZChDaCopIHsgUkFQSURKU09OX0FTU0VSVChmYWxzZSk7IHJl
dHVybiAwOyB9CisKKyAgICBjb25zdCBDaCogc3JjXzsgICAgIC8vITwgQ3VycmVudCByZWFkIHBv
c2l0aW9uLgorICAgIGNvbnN0IENoKiBoZWFkXzsgICAgLy8hPCBPcmlnaW5hbCBoZWFkIG9mIHRo
ZSBzdHJpbmcuCit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRW5jb2Rpbmc+CitzdHJ1Y3QgU3Ry
ZWFtVHJhaXRzPEdlbmVyaWNTdHJpbmdTdHJlYW08RW5jb2Rpbmc+ID4geworICAgIGVudW0geyBj
b3B5T3B0aW1pemF0aW9uID0gMSB9OworfTsKKworLy8hIFN0cmluZyBzdHJlYW0gd2l0aCBVVEY4
IGVuY29kaW5nLgordHlwZWRlZiBHZW5lcmljU3RyaW5nU3RyZWFtPFVURjg8PiA+IFN0cmluZ1N0
cmVhbTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gSW5zaXR1U3RyaW5nU3RyZWFtCisK
Ky8vISBBIHJlYWQtd3JpdGUgc3RyaW5nIHN0cmVhbS4KKy8qISBUaGlzIHN0cmluZyBzdHJlYW0g
aXMgcGFydGljdWxhcmx5IGRlc2lnbmVkIGZvciBpbi1zaXR1IHBhcnNpbmcuCisgICAgXG5vdGUg
aW1wbGVtZW50cyBTdHJlYW0gY29uY2VwdAorKi8KK3RlbXBsYXRlIDx0eXBlbmFtZSBFbmNvZGlu
Zz4KK3N0cnVjdCBHZW5lcmljSW5zaXR1U3RyaW5nU3RyZWFtIHsKKyAgICB0eXBlZGVmIHR5cGVu
YW1lIEVuY29kaW5nOjpDaCBDaDsKKworICAgIEdlbmVyaWNJbnNpdHVTdHJpbmdTdHJlYW0oQ2gg
KnNyYykgOiBzcmNfKHNyYyksIGRzdF8oMCksIGhlYWRfKHNyYykge30KKworICAgIC8vIFJlYWQK
KyAgICBDaCBQZWVrKCkgeyByZXR1cm4gKnNyY187IH0KKyAgICBDaCBUYWtlKCkgeyByZXR1cm4g
KnNyY18rKzsgfQorICAgIHNpemVfdCBUZWxsKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90
PihzcmNfIC0gaGVhZF8pOyB9CisKKyAgICAvLyBXcml0ZQorICAgIHZvaWQgUHV0KENoIGMpIHsg
UkFQSURKU09OX0FTU0VSVChkc3RfICE9IDApOyAqZHN0XysrID0gYzsgfQorCisgICAgQ2gqIFB1
dEJlZ2luKCkgeyByZXR1cm4gZHN0XyA9IHNyY187IH0KKyAgICBzaXplX3QgUHV0RW5kKENoKiBi
ZWdpbikgeyByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90Pihkc3RfIC0gYmVnaW4pOyB9CisgICAg
dm9pZCBGbHVzaCgpIHt9CisKKyAgICBDaCogUHVzaChzaXplX3QgY291bnQpIHsgQ2gqIGJlZ2lu
ID0gZHN0XzsgZHN0XyArPSBjb3VudDsgcmV0dXJuIGJlZ2luOyB9CisgICAgdm9pZCBQb3Aoc2l6
ZV90IGNvdW50KSB7IGRzdF8gLT0gY291bnQ7IH0KKworICAgIENoKiBzcmNfOworICAgIENoKiBk
c3RfOworICAgIENoKiBoZWFkXzsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbmNvZGluZz4K
K3N0cnVjdCBTdHJlYW1UcmFpdHM8R2VuZXJpY0luc2l0dVN0cmluZ1N0cmVhbTxFbmNvZGluZz4g
PiB7CisgICAgZW51bSB7IGNvcHlPcHRpbWl6YXRpb24gPSAxIH07Cit9OworCisvLyEgSW5zaXR1
IHN0cmluZyBzdHJlYW0gd2l0aCBVVEY4IGVuY29kaW5nLgordHlwZWRlZiBHZW5lcmljSW5zaXR1
U3RyaW5nU3RyZWFtPFVURjg8PiA+IEluc2l0dVN0cmluZ1N0cmVhbTsKKworLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLworLy8gVHlwZQorCisvLyEgVHlwZSBvZiBKU09OIHZhbHVlCitlbnVtIFR5cGUg
eworICAgIGtOdWxsVHlwZSA9IDAsICAgICAgLy8hPCBudWxsCisgICAga0ZhbHNlVHlwZSA9IDEs
ICAgICAvLyE8IGZhbHNlCisgICAga1RydWVUeXBlID0gMiwgICAgICAvLyE8IHRydWUKKyAgICBr
T2JqZWN0VHlwZSA9IDMsICAgIC8vITwgb2JqZWN0CisgICAga0FycmF5VHlwZSA9IDQsICAgICAv
LyE8IGFycmF5IAorICAgIGtTdHJpbmdUeXBlID0gNSwgICAgLy8hPCBzdHJpbmcKKyAgICBrTnVt
YmVyVHlwZSA9IDYgICAgIC8vITwgbnVtYmVyCit9OworCitSQVBJREpTT05fTkFNRVNQQUNFX0VO
RAorCisjZW5kaWYgLy8gUkFQSURKU09OX1JBUElESlNPTl9IXwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlk
anNvbi9yZWFkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL3JlYWRlci5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9w
YXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vcmVhZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxNDQ0IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEgTWlsbyBZaXAKKy8vCisv
LyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBl
cnNvbiBvYnRhaW5pbmcgYSBjb3B5CisvLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVk
IGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAorLy8gaW4gdGhl
IFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRp
b24gdGhlIHJpZ2h0cworLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBk
aXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorLy8gY29waWVzIG9mIHRoZSBTb2Z0
d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisvLyBm
dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgor
Ly8KKy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90
aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisvLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv
cnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKy8vCisvLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg
IkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorLy8gSU1Q
TElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFksCisvLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9O
SU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKy8vIEFVVEhPUlMgT1IgQ09QWVJJ
R0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKy8v
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RI
RVJXSVNFLCBBUklTSU5HIEZST00sCisvLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRI
RSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCisvLyBUSEUgU09GVFdB
UkUuCisKKyNpZm5kZWYgUkFQSURKU09OX1JFQURFUl9IXworI2RlZmluZSBSQVBJREpTT05fUkVB
REVSX0hfCisKKy8qISBcZmlsZSByZWFkZXIuaCAqLworCisjaW5jbHVkZSAicmFwaWRqc29uLmgi
CisjaW5jbHVkZSAiZW5jb2RpbmdzLmgiCisjaW5jbHVkZSAiaW50ZXJuYWwvbWV0YS5oIgorI2lu
Y2x1ZGUgImludGVybmFsL3N0YWNrLmgiCisjaW5jbHVkZSAiaW50ZXJuYWwvc3RydG9kLmgiCisK
KyNpZiBkZWZpbmVkKFJBUElESlNPTl9TSU1EKSAmJiBkZWZpbmVkKF9NU0NfVkVSKQorI2luY2x1
ZGUgPGludHJpbi5oPgorI3ByYWdtYSBpbnRyaW5zaWMoX0JpdFNjYW5Gb3J3YXJkKQorI2VuZGlm
CisjaWZkZWYgUkFQSURKU09OX1NTRTQyCisjaW5jbHVkZSA8bm1taW50cmluLmg+CisjZWxpZiBk
ZWZpbmVkKFJBUElESlNPTl9TU0UyKQorI2luY2x1ZGUgPGVtbWludHJpbi5oPgorI2VuZGlmCisK
KyNpZmRlZiBfTVNDX1ZFUgorUkFQSURKU09OX0RJQUdfUFVTSAorUkFQSURKU09OX0RJQUdfT0ZG
KDQxMjcpICAvLyBjb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50CitSQVBJREpTT05f
RElBR19PRkYoNDcwMikgIC8vIHVucmVhY2hhYmxlIGNvZGUKKyNlbmRpZgorCisjaWZkZWYgX19H
TlVDX18KK1JBUElESlNPTl9ESUFHX1BVU0gKK1JBUElESlNPTl9ESUFHX09GRihlZmZjKyspCisj
ZW5kaWYKKworLy8hQGNvbmQgUkFQSURKU09OX0hJRERFTl9GUk9NX0RPWFlHRU4KKyNkZWZpbmUg
UkFQSURKU09OX05PVEhJTkcgLyogZGVsaWJlcmF0ZWx5IGVtcHR5ICovCisjaWZuZGVmIFJBUElE
SlNPTl9QQVJTRV9FUlJPUl9FQVJMWV9SRVRVUk4KKyNkZWZpbmUgUkFQSURKU09OX1BBUlNFX0VS
Uk9SX0VBUkxZX1JFVFVSTih2YWx1ZSkgXAorICAgIFJBUElESlNPTl9NVUxUSUxJTkVNQUNST19C
RUdJTiBcCisgICAgaWYgKEhhc1BhcnNlRXJyb3IoKSkgeyByZXR1cm4gdmFsdWU7IH0gXAorICAg
IFJBUElESlNPTl9NVUxUSUxJTkVNQUNST19FTkQKKyNlbmRpZgorI2RlZmluZSBSQVBJREpTT05f
UEFSU0VfRVJST1JfRUFSTFlfUkVUVVJOX1ZPSUQgXAorICAgIFJBUElESlNPTl9QQVJTRV9FUlJP
Ul9FQVJMWV9SRVRVUk4oUkFQSURKU09OX05PVEhJTkcpCisvLyFAZW5kY29uZAorCisvKiEgXGRl
ZiBSQVBJREpTT05fUEFSU0VfRVJST1JfTk9SRVRVUk4KKyAgICBcaW5ncm91cCBSQVBJREpTT05f
RVJST1JTCisgICAgXGJyaWVmIE1hY3JvIHRvIGluZGljYXRlIGEgcGFyc2UgZXJyb3IuCisgICAg
XHBhcmFtIHBhcnNlRXJyb3JDb2RlIFxyZWYgcmFwaWRqc29uOjpQYXJzZUVycm9yQ29kZSBvZiB0
aGUgZXJyb3IKKyAgICBccGFyYW0gb2Zmc2V0ICBwb3NpdGlvbiBvZiB0aGUgZXJyb3IgaW4gSlNP
TiBpbnB1dCAoXGMgc2l6ZV90KQorCisgICAgVGhpcyBtYWNyb3MgY2FuIGJlIHVzZWQgYXMgYSBj
dXN0b21pemF0aW9uIHBvaW50IGZvciB0aGUgaW50ZXJuYWwKKyAgICBlcnJvciBoYW5kbGluZyBt
ZWNoYW5pc20gb2YgUmFwaWRKU09OLgorCisgICAgQSBjb21tb24gdXNhZ2UgbW9kZWwgaXMgdG8g
dGhyb3cgYW4gZXhjZXB0aW9uIGluc3RlYWQgb2YgcmVxdWlyaW5nIHRoZQorICAgIGNhbGxlciB0
byBleHBsaWNpdGx5IGNoZWNrIHRoZSBccmVmIHJhcGlkanNvbjo6R2VuZXJpY1JlYWRlcjo6UGFy
c2UncworICAgIHJldHVybiB2YWx1ZToKKworICAgIFxjb2RlCisgICAgI2RlZmluZSBSQVBJREpT
T05fUEFSU0VfRVJST1JfTk9SRVRVUk4ocGFyc2VFcnJvckNvZGUsb2Zmc2V0KSBcCisgICAgICAg
dGhyb3cgUGFyc2VFeGNlcHRpb24ocGFyc2VFcnJvckNvZGUsICNwYXJzZUVycm9yQ29kZSwgb2Zm
c2V0KQorCisgICAgI2luY2x1ZGUgPHN0ZGV4Y2VwdD4gICAgICAgICAgICAgICAvLyBzdGQ6OnJ1
bnRpbWVfZXJyb3IKKyAgICAjaW5jbHVkZSAicmFwaWRqc29uL2Vycm9yL2Vycm9yLmgiIC8vIHJh
cGlkanNvbjo6UGFyc2VSZXN1bHQKKworICAgIHN0cnVjdCBQYXJzZUV4Y2VwdGlvbiA6IHN0ZDo6
cnVudGltZV9lcnJvciwgcmFwaWRqc29uOjpQYXJzZVJlc3VsdCB7CisgICAgICBQYXJzZUV4Y2Vw
dGlvbihyYXBpZGpzb246OlBhcnNlRXJyb3JDb2RlIGNvZGUsIGNvbnN0IGNoYXIqIG1zZywgc2l6
ZV90IG9mZnNldCkKKyAgICAgICAgOiBzdGQ6OnJ1bnRpbWVfZXJyb3IobXNnKSwgUGFyc2VSZXN1
bHQoY29kZSwgb2Zmc2V0KSB7fQorICAgIH07CisKKyAgICAjaW5jbHVkZSAicmFwaWRqc29uL3Jl
YWRlci5oIgorICAgIFxlbmRjb2RlCisKKyAgICBcc2VlIFJBUElESlNPTl9QQVJTRV9FUlJPUiwg
cmFwaWRqc29uOjpHZW5lcmljUmVhZGVyOjpQYXJzZQorICovCisjaWZuZGVmIFJBUElESlNPTl9Q
QVJTRV9FUlJPUl9OT1JFVFVSTgorI2RlZmluZSBSQVBJREpTT05fUEFSU0VfRVJST1JfTk9SRVRV
Uk4ocGFyc2VFcnJvckNvZGUsIG9mZnNldCkgXAorICAgIFJBUElESlNPTl9NVUxUSUxJTkVNQUNS
T19CRUdJTiBcCisgICAgUkFQSURKU09OX0FTU0VSVCghSGFzUGFyc2VFcnJvcigpKTsgLyogRXJy
b3IgY2FuIG9ubHkgYmUgYXNzaWduZWQgb25jZSAqLyBcCisgICAgU2V0UGFyc2VFcnJvcihwYXJz
ZUVycm9yQ29kZSwgb2Zmc2V0KTsgXAorICAgIFJBUElESlNPTl9NVUxUSUxJTkVNQUNST19FTkQK
KyNlbmRpZgorCisvKiEgXGRlZiBSQVBJREpTT05fUEFSU0VfRVJST1IKKyAgICBcaW5ncm91cCBS
QVBJREpTT05fRVJST1JTCisgICAgXGJyaWVmIChJbnRlcm5hbCkgbWFjcm8gdG8gaW5kaWNhdGUg
YW5kIGhhbmRsZSBhIHBhcnNlIGVycm9yLgorICAgIFxwYXJhbSBwYXJzZUVycm9yQ29kZSBccmVm
IHJhcGlkanNvbjo6UGFyc2VFcnJvckNvZGUgb2YgdGhlIGVycm9yCisgICAgXHBhcmFtIG9mZnNl
dCAgcG9zaXRpb24gb2YgdGhlIGVycm9yIGluIEpTT04gaW5wdXQgKFxjIHNpemVfdCkKKworICAg
IEludm9rZXMgUkFQSURKU09OX1BBUlNFX0VSUk9SX05PUkVUVVJOIGFuZCBzdG9wcyB0aGUgcGFy
c2luZy4KKworICAgIFxzZWUgUkFQSURKU09OX1BBUlNFX0VSUk9SX05PUkVUVVJOCisgICAgXGhp
ZGVpbml0aWFsaXplcgorICovCisjaWZuZGVmIFJBUElESlNPTl9QQVJTRV9FUlJPUgorI2RlZmlu
ZSBSQVBJREpTT05fUEFSU0VfRVJST1IocGFyc2VFcnJvckNvZGUsIG9mZnNldCkgXAorICAgIFJB
UElESlNPTl9NVUxUSUxJTkVNQUNST19CRUdJTiBcCisgICAgUkFQSURKU09OX1BBUlNFX0VSUk9S
X05PUkVUVVJOKHBhcnNlRXJyb3JDb2RlLCBvZmZzZXQpOyBcCisgICAgUkFQSURKU09OX1BBUlNF
X0VSUk9SX0VBUkxZX1JFVFVSTl9WT0lEOyBcCisgICAgUkFQSURKU09OX01VTFRJTElORU1BQ1JP
X0VORAorI2VuZGlmCisKKyNpbmNsdWRlICJlcnJvci9lcnJvci5oIiAvLyBQYXJzZUVycm9yQ29k
ZSwgUGFyc2VSZXN1bHQKKworUkFQSURKU09OX05BTUVTUEFDRV9CRUdJTgorCisvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCisvLyBQYXJzZUZsYWcKKworLyohIFxkZWYgUkFQSURKU09OX1BBUlNFX0RF
RkFVTFRfRkxBR1MgCisgICAgXGluZ3JvdXAgUkFQSURKU09OX0NPTkZJRworICAgIFxicmllZiBV
c2VyLWRlZmluZWQga1BhcnNlRGVmYXVsdEZsYWdzIGRlZmluaXRpb24uCisKKyAgICBVc2VyIGNh
biBkZWZpbmUgdGhpcyBhcyBhbnkgXGMgUGFyc2VGbGFnIGNvbWJpbmF0aW9ucy4KKyovCisjaWZu
ZGVmIFJBUElESlNPTl9QQVJTRV9ERUZBVUxUX0ZMQUdTCisjZGVmaW5lIFJBUElESlNPTl9QQVJT
RV9ERUZBVUxUX0ZMQUdTIGtQYXJzZU5vRmxhZ3MKKyNlbmRpZgorCisvLyEgQ29tYmluYXRpb24g
b2YgcGFyc2VGbGFncworLyohIFxzZWUgUmVhZGVyOjpQYXJzZSwgRG9jdW1lbnQ6OlBhcnNlLCBE
b2N1bWVudDo6UGFyc2VJbnNpdHUsIERvY3VtZW50OjpQYXJzZVN0cmVhbQorICovCitlbnVtIFBh
cnNlRmxhZyB7CisgICAga1BhcnNlTm9GbGFncyA9IDAsICAgICAgICAgICAgICAvLyE8IE5vIGZs
YWdzIGFyZSBzZXQuCisgICAga1BhcnNlSW5zaXR1RmxhZyA9IDEsICAgICAgICAgICAvLyE8IElu
LXNpdHUoZGVzdHJ1Y3RpdmUpIHBhcnNpbmcuCisgICAga1BhcnNlVmFsaWRhdGVFbmNvZGluZ0Zs
YWcgPSAyLCAvLyE8IFZhbGlkYXRlIGVuY29kaW5nIG9mIEpTT04gc3RyaW5ncy4KKyAgICBrUGFy
c2VJdGVyYXRpdmVGbGFnID0gNCwgICAgICAgIC8vITwgSXRlcmF0aXZlKGNvbnN0YW50IGNvbXBs
ZXhpdHkgaW4gdGVybXMgb2YgZnVuY3Rpb24gY2FsbCBzdGFjayBzaXplKSBwYXJzaW5nLgorICAg
IGtQYXJzZVN0b3BXaGVuRG9uZUZsYWcgPSA4LCAgICAgLy8hPCBBZnRlciBwYXJzaW5nIGEgY29t
cGxldGUgSlNPTiByb290IGZyb20gc3RyZWFtLCBzdG9wIGZ1cnRoZXIgcHJvY2Vzc2luZyB0aGUg
cmVzdCBvZiBzdHJlYW0uIFdoZW4gdGhpcyBmbGFnIGlzIHVzZWQsIHBhcnNlciB3aWxsIG5vdCBn
ZW5lcmF0ZSBrUGFyc2VFcnJvckRvY3VtZW50Um9vdE5vdFNpbmd1bGFyIGVycm9yLgorICAgIGtQ
YXJzZUZ1bGxQcmVjaXNpb25GbGFnID0gMTYsICAgLy8hPCBQYXJzZSBudW1iZXIgaW4gZnVsbCBw
cmVjaXNpb24gKGJ1dCBzbG93ZXIpLgorICAgIGtQYXJzZURlZmF1bHRGbGFncyA9IFJBUElESlNP
Tl9QQVJTRV9ERUZBVUxUX0ZMQUdTICAvLyE8IERlZmF1bHQgcGFyc2UgZmxhZ3MuIENhbiBiZSBj
dXN0b21pemVkIGJ5IGRlZmluaW5nIFJBUElESlNPTl9QQVJTRV9ERUZBVUxUX0ZMQUdTCit9Owor
CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBIYW5kbGVyCisKKy8qISBcY2xhc3MgcmFwaWRq
c29uOjpIYW5kbGVyCisgICAgXGJyaWVmIENvbmNlcHQgZm9yIHJlY2VpdmluZyBldmVudHMgZnJv
bSBHZW5lcmljUmVhZGVyIHVwb24gcGFyc2luZy4KKyAgICBUaGUgZnVuY3Rpb25zIHJldHVybiB0
cnVlIGlmIG5vIGVycm9yIG9jY3Vycy4gSWYgdGhleSByZXR1cm4gZmFsc2UsIAorICAgIHRoZSBl
dmVudCBwdWJsaXNoZXIgc2hvdWxkIHRlcm1pbmF0ZSB0aGUgcHJvY2Vzcy4KK1xjb2RlCitjb25j
ZXB0IEhhbmRsZXIgeworICAgIHR5cGVuYW1lIENoOworCisgICAgYm9vbCBOdWxsKCk7CisgICAg
Ym9vbCBCb29sKGJvb2wgYik7CisgICAgYm9vbCBJbnQoaW50IGkpOworICAgIGJvb2wgVWludCh1
bnNpZ25lZCBpKTsKKyAgICBib29sIEludDY0KGludDY0X3QgaSk7CisgICAgYm9vbCBVaW50NjQo
dWludDY0X3QgaSk7CisgICAgYm9vbCBEb3VibGUoZG91YmxlIGQpOworICAgIGJvb2wgU3RyaW5n
KGNvbnN0IENoKiBzdHIsIFNpemVUeXBlIGxlbmd0aCwgYm9vbCBjb3B5KTsKKyAgICBib29sIFN0
YXJ0T2JqZWN0KCk7CisgICAgYm9vbCBLZXkoY29uc3QgQ2gqIHN0ciwgU2l6ZVR5cGUgbGVuZ3Ro
LCBib29sIGNvcHkpOworICAgIGJvb2wgRW5kT2JqZWN0KFNpemVUeXBlIG1lbWJlckNvdW50KTsK
KyAgICBib29sIFN0YXJ0QXJyYXkoKTsKKyAgICBib29sIEVuZEFycmF5KFNpemVUeXBlIGVsZW1l
bnRDb3VudCk7Cit9OworXGVuZGNvZGUKKyovCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBC
YXNlUmVhZGVySGFuZGxlcgorCisvLyEgRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiBIYW5kbGVy
LgorLyohIFRoaXMgY2FuIGJlIHVzZWQgYXMgYmFzZSBjbGFzcyBvZiBhbnkgcmVhZGVyIGhhbmRs
ZXIuCisgICAgXG5vdGUgaW1wbGVtZW50cyBIYW5kbGVyIGNvbmNlcHQKKyovCit0ZW1wbGF0ZTx0
eXBlbmFtZSBFbmNvZGluZyA9IFVURjg8PiwgdHlwZW5hbWUgRGVyaXZlZCA9IHZvaWQ+CitzdHJ1
Y3QgQmFzZVJlYWRlckhhbmRsZXIgeworICAgIHR5cGVkZWYgdHlwZW5hbWUgRW5jb2Rpbmc6OkNo
IENoOworCisgICAgdHlwZWRlZiB0eXBlbmFtZSBpbnRlcm5hbDo6U2VsZWN0SWY8aW50ZXJuYWw6
OklzU2FtZTxEZXJpdmVkLCB2b2lkPiwgQmFzZVJlYWRlckhhbmRsZXIsIERlcml2ZWQ+OjpUeXBl
IE92ZXJyaWRlOworCisgICAgYm9vbCBEZWZhdWx0KCkgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJv
b2wgTnVsbCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE92ZXJyaWRlJj4oKnRoaXMpLkRlZmF1bHQo
KTsgfQorICAgIGJvb2wgQm9vbChib29sKSB7IHJldHVybiBzdGF0aWNfY2FzdDxPdmVycmlkZSY+
KCp0aGlzKS5EZWZhdWx0KCk7IH0KKyAgICBib29sIEludChpbnQpIHsgcmV0dXJuIHN0YXRpY19j
YXN0PE92ZXJyaWRlJj4oKnRoaXMpLkRlZmF1bHQoKTsgfQorICAgIGJvb2wgVWludCh1bnNpZ25l
ZCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8T3ZlcnJpZGUmPigqdGhpcykuRGVmYXVsdCgpOyB9Cisg
ICAgYm9vbCBJbnQ2NChpbnQ2NF90KSB7IHJldHVybiBzdGF0aWNfY2FzdDxPdmVycmlkZSY+KCp0
aGlzKS5EZWZhdWx0KCk7IH0KKyAgICBib29sIFVpbnQ2NCh1aW50NjRfdCkgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8T3ZlcnJpZGUmPigqdGhpcykuRGVmYXVsdCgpOyB9CisgICAgYm9vbCBEb3VibGUo
ZG91YmxlKSB7IHJldHVybiBzdGF0aWNfY2FzdDxPdmVycmlkZSY+KCp0aGlzKS5EZWZhdWx0KCk7
IH0KKyAgICBib29sIFN0cmluZyhjb25zdCBDaCosIFNpemVUeXBlLCBib29sKSB7IHJldHVybiBz
dGF0aWNfY2FzdDxPdmVycmlkZSY+KCp0aGlzKS5EZWZhdWx0KCk7IH0KKyAgICBib29sIFN0YXJ0
T2JqZWN0KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8T3ZlcnJpZGUmPigqdGhpcykuRGVmYXVsdCgp
OyB9CisgICAgYm9vbCBLZXkoY29uc3QgQ2gqIHN0ciwgU2l6ZVR5cGUgbGVuLCBib29sIGNvcHkp
IHsgcmV0dXJuIHN0YXRpY19jYXN0PE92ZXJyaWRlJj4oKnRoaXMpLlN0cmluZyhzdHIsIGxlbiwg
Y29weSk7IH0KKyAgICBib29sIEVuZE9iamVjdChTaXplVHlwZSkgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8T3ZlcnJpZGUmPigqdGhpcykuRGVmYXVsdCgpOyB9CisgICAgYm9vbCBTdGFydEFycmF5KCkg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8T3ZlcnJpZGUmPigqdGhpcykuRGVmYXVsdCgpOyB9CisgICAg
Ym9vbCBFbmRBcnJheShTaXplVHlwZSkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8T3ZlcnJpZGUmPigq
dGhpcykuRGVmYXVsdCgpOyB9Cit9OworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBTdHJl
YW1Mb2NhbENvcHkKKworbmFtZXNwYWNlIGludGVybmFsIHsKKwordGVtcGxhdGU8dHlwZW5hbWUg
U3RyZWFtLCBpbnQgPSBTdHJlYW1UcmFpdHM8U3RyZWFtPjo6Y29weU9wdGltaXphdGlvbj4KK2Ns
YXNzIFN0cmVhbUxvY2FsQ29weTsKKworLy8hIERvIGNvcHkgb3B0aW1pemF0aW9uLgordGVtcGxh
dGU8dHlwZW5hbWUgU3RyZWFtPgorY2xhc3MgU3RyZWFtTG9jYWxDb3B5PFN0cmVhbSwgMT4gewor
cHVibGljOgorICAgIFN0cmVhbUxvY2FsQ29weShTdHJlYW0mIG9yaWdpbmFsKSA6IHMob3JpZ2lu
YWwpLCBvcmlnaW5hbF8ob3JpZ2luYWwpIHt9CisgICAgflN0cmVhbUxvY2FsQ29weSgpIHsgb3Jp
Z2luYWxfID0gczsgfQorCisgICAgU3RyZWFtIHM7CisKK3ByaXZhdGU6CisgICAgU3RyZWFtTG9j
YWxDb3B5JiBvcGVyYXRvcj0oY29uc3QgU3RyZWFtTG9jYWxDb3B5JikgLyogPSBkZWxldGUgKi87
CisKKyAgICBTdHJlYW0mIG9yaWdpbmFsXzsKK307CisKKy8vISBLZWVwIHJlZmVyZW5jZS4KK3Rl
bXBsYXRlPHR5cGVuYW1lIFN0cmVhbT4KK2NsYXNzIFN0cmVhbUxvY2FsQ29weTxTdHJlYW0sIDA+
IHsKK3B1YmxpYzoKKyAgICBTdHJlYW1Mb2NhbENvcHkoU3RyZWFtJiBvcmlnaW5hbCkgOiBzKG9y
aWdpbmFsKSB7fQorCisgICAgU3RyZWFtJiBzOworCitwcml2YXRlOgorICAgIFN0cmVhbUxvY2Fs
Q29weSYgb3BlcmF0b3I9KGNvbnN0IFN0cmVhbUxvY2FsQ29weSYpIC8qID0gZGVsZXRlICovOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwor
Ly8gU2tpcFdoaXRlc3BhY2UKKworLy8hIFNraXAgdGhlIEpTT04gd2hpdGUgc3BhY2VzIGluIGEg
c3RyZWFtLgorLyohIFxwYXJhbSBpcyBBIGlucHV0IHN0cmVhbSBmb3Igc2tpcHBpbmcgd2hpdGUg
c3BhY2VzLgorICAgIFxub3RlIFRoaXMgZnVuY3Rpb24gaGFzIFNTRTIvU1NFNC4yIHNwZWNpYWxp
emF0aW9uLgorKi8KK3RlbXBsYXRlPHR5cGVuYW1lIElucHV0U3RyZWFtPgordm9pZCBTa2lwV2hp
dGVzcGFjZShJbnB1dFN0cmVhbSYgaXMpIHsKKyAgICBpbnRlcm5hbDo6U3RyZWFtTG9jYWxDb3B5
PElucHV0U3RyZWFtPiBjb3B5KGlzKTsKKyAgICBJbnB1dFN0cmVhbSYgcyhjb3B5LnMpOworCisg
ICAgd2hpbGUgKHMuUGVlaygpID09ICcgJyB8fCBzLlBlZWsoKSA9PSAnXG4nIHx8IHMuUGVlaygp
ID09ICdccicgfHwgcy5QZWVrKCkgPT0gJ1x0JykKKyAgICAgICAgcy5UYWtlKCk7Cit9CisKKyNp
ZmRlZiBSQVBJREpTT05fU1NFNDIKKy8vISBTa2lwIHdoaXRlc3BhY2Ugd2l0aCBTU0UgNC4yIHBj
bXBpc3RybSBpbnN0cnVjdGlvbiwgdGVzdGluZyAxNiA4LWJ5dGUgY2hhcmFjdGVycyBhdCBvbmNl
LgoraW5saW5lIGNvbnN0IGNoYXIgKlNraXBXaGl0ZXNwYWNlX1NJTUQoY29uc3QgY2hhciogcCkg
eworCS8vIEZhc3QgcmV0dXJuIGZvciBzaW5nbGUgbm9uLXdoaXRlc3BhY2UKKwlpZiAoKnAgPT0g
JyAnIHx8ICpwID09ICdcbicgfHwgKnAgPT0gJ1xyJyB8fCAqcCA9PSAnXHQnKQorCQkrK3A7CisJ
ZWxzZQorCQlyZXR1cm4gcDsKKworCS8vIDE2LWJ5dGUgYWxpZ24gdG8gdGhlIG5leHQgYm91bmRh
cnkKKwljb25zdCBjaGFyKiBuZXh0QWxpZ25lZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KChyZWludGVycHJldF9jYXN0PHNpemVfdD4ocCkgKyAxNSkgJiB+MTUpOworCXdoaWxlIChw
ICE9IG5leHRBbGlnbmVkKQorCQlpZiAoKnAgPT0gJyAnIHx8ICpwID09ICdcbicgfHwgKnAgPT0g
J1xyJyB8fCAqcCA9PSAnXHQnKQorCQkJKytwOworCQllbHNlCisJCQlyZXR1cm4gcDsKKworICAg
IC8vIFRoZSByZXN0IG9mIHN0cmluZyB1c2luZyBTSU1ECisJc3RhdGljIGNvbnN0IGNoYXIgd2hp
dGVzcGFjZVsxNl0gPSAiIFxuXHJcdCI7CisJY29uc3QgX19tMTI4aSB3ID0gX21tX2xvYWR1X3Np
MTI4KChjb25zdCBfX20xMjhpICopJndoaXRlc3BhY2VbMF0pOworCisgICAgZm9yICg7OyBwICs9
IDE2KSB7CisgICAgICAgIGNvbnN0IF9fbTEyOGkgcyA9IF9tbV9sb2FkX3NpMTI4KChjb25zdCBf
X20xMjhpICopcCk7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHIgPSBfbW1fY3Z0c2kxMjhfc2kz
MihfbW1fY21waXN0cm0odywgcywgX1NJRERfVUJZVEVfT1BTIHwgX1NJRERfQ01QX0VRVUFMX0FO
WSB8IF9TSUREX0JJVF9NQVNLIHwgX1NJRERfTkVHQVRJVkVfUE9MQVJJVFkpKTsKKyAgICAgICAg
aWYgKHIgIT0gMCkgeyAgIC8vIHNvbWUgb2YgY2hhcmFjdGVycyBpcyBub24td2hpdGVzcGFjZQor
I2lmZGVmIF9NU0NfVkVSICAgICAgICAgLy8gRmluZCB0aGUgaW5kZXggb2YgZmlyc3Qgbm9uLXdo
aXRlc3BhY2UKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0OworICAgICAgICAgICAg
X0JpdFNjYW5Gb3J3YXJkKCZvZmZzZXQsIHIpOworICAgICAgICAgICAgcmV0dXJuIHAgKyBvZmZz
ZXQ7CisjZWxzZQorICAgICAgICAgICAgcmV0dXJuIHAgKyBfX2J1aWx0aW5fZmZzKHIpIC0gMTsK
KyNlbmRpZgorICAgICAgICB9CisgICAgfQorfQorCisjZWxpZiBkZWZpbmVkKFJBUElESlNPTl9T
U0UyKQorCisvLyEgU2tpcCB3aGl0ZXNwYWNlIHdpdGggU1NFMiBpbnN0cnVjdGlvbnMsIHRlc3Rp
bmcgMTYgOC1ieXRlIGNoYXJhY3RlcnMgYXQgb25jZS4KK2lubGluZSBjb25zdCBjaGFyICpTa2lw
V2hpdGVzcGFjZV9TSU1EKGNvbnN0IGNoYXIqIHApIHsKKwkvLyBGYXN0IHJldHVybiBmb3Igc2lu
Z2xlIG5vbi13aGl0ZXNwYWNlCisJaWYgKCpwID09ICcgJyB8fCAqcCA9PSAnXG4nIHx8ICpwID09
ICdccicgfHwgKnAgPT0gJ1x0JykKKwkJKytwOworCWVsc2UKKwkJcmV0dXJuIHA7CisKKyAgICAv
LyAxNi1ieXRlIGFsaWduIHRvIHRoZSBuZXh0IGJvdW5kYXJ5CisJY29uc3QgY2hhciogbmV4dEFs
aWduZWQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPigocmVpbnRlcnByZXRfY2FzdDxz
aXplX3Q+KHApICsgMTUpICYgfjE1KTsKKwl3aGlsZSAocCAhPSBuZXh0QWxpZ25lZCkKKwkJaWYg
KCpwID09ICcgJyB8fCAqcCA9PSAnXG4nIHx8ICpwID09ICdccicgfHwgKnAgPT0gJ1x0JykKKwkJ
CSsrcDsKKwkJZWxzZQorCQkJcmV0dXJuIHA7CisKKyAgICAvLyBUaGUgcmVzdCBvZiBzdHJpbmcK
KwlzdGF0aWMgY29uc3QgY2hhciB3aGl0ZXNwYWNlc1s0XVsxN10gPSB7CisJCSIgICAgICAgICAg
ICAgICAgIiwKKwkJIlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuIiwKKwkJIlxyXHJc
clxyXHJcclxyXHJcclxyXHJcclxyXHJcclxyIiwKKwkJIlx0XHRcdFx0XHRcdFx0XHRcdFx0XHRc
dFx0XHRcdFx0In07CisKKwkJY29uc3QgX19tMTI4aSB3MCA9IF9tbV9sb2FkdV9zaTEyOCgoY29u
c3QgX19tMTI4aSAqKSZ3aGl0ZXNwYWNlc1swXVswXSk7CisJCWNvbnN0IF9fbTEyOGkgdzEgPSBf
bW1fbG9hZHVfc2kxMjgoKGNvbnN0IF9fbTEyOGkgKikmd2hpdGVzcGFjZXNbMV1bMF0pOworCQlj
b25zdCBfX20xMjhpIHcyID0gX21tX2xvYWR1X3NpMTI4KChjb25zdCBfX20xMjhpICopJndoaXRl
c3BhY2VzWzJdWzBdKTsKKwkJY29uc3QgX19tMTI4aSB3MyA9IF9tbV9sb2FkdV9zaTEyOCgoY29u
c3QgX19tMTI4aSAqKSZ3aGl0ZXNwYWNlc1szXVswXSk7CisKKyAgICBmb3IgKDs7IHAgKz0gMTYp
IHsKKyAgICAgICAgY29uc3QgX19tMTI4aSBzID0gX21tX2xvYWRfc2kxMjgoKGNvbnN0IF9fbTEy
OGkgKilwKTsKKyAgICAgICAgX19tMTI4aSB4ID0gX21tX2NtcGVxX2VwaTgocywgdzApOworICAg
ICAgICB4ID0gX21tX29yX3NpMTI4KHgsIF9tbV9jbXBlcV9lcGk4KHMsIHcxKSk7CisgICAgICAg
IHggPSBfbW1fb3Jfc2kxMjgoeCwgX21tX2NtcGVxX2VwaTgocywgdzIpKTsKKyAgICAgICAgeCA9
IF9tbV9vcl9zaTEyOCh4LCBfbW1fY21wZXFfZXBpOChzLCB3MykpOworICAgICAgICB1bnNpZ25l
ZCBzaG9ydCByID0gKHVuc2lnbmVkIHNob3J0KX5fbW1fbW92ZW1hc2tfZXBpOCh4KTsKKyAgICAg
ICAgaWYgKHIgIT0gMCkgeyAgIC8vIHNvbWUgb2YgY2hhcmFjdGVycyBtYXkgYmUgbm9uLXdoaXRl
c3BhY2UKKyNpZmRlZiBfTVNDX1ZFUiAgICAgICAgIC8vIEZpbmQgdGhlIGluZGV4IG9mIGZpcnN0
IG5vbi13aGl0ZXNwYWNlCisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG9mZnNldDsKKyAgICAg
ICAgICAgIF9CaXRTY2FuRm9yd2FyZCgmb2Zmc2V0LCByKTsKKyAgICAgICAgICAgIHJldHVybiBw
ICsgb2Zmc2V0OworI2Vsc2UKKyAgICAgICAgICAgIHJldHVybiBwICsgX19idWlsdGluX2Zmcyhy
KSAtIDE7CisjZW5kaWYKKyAgICAgICAgfQorICAgIH0KK30KKworI2VuZGlmIC8vIFJBUElESlNP
Tl9TU0UyCisKKyNpZmRlZiBSQVBJREpTT05fU0lNRAorLy8hIFRlbXBsYXRlIGZ1bmN0aW9uIHNw
ZWNpYWxpemF0aW9uIGZvciBJbnNpdHVTdHJpbmdTdHJlYW0KK3RlbXBsYXRlPD4gaW5saW5lIHZv
aWQgU2tpcFdoaXRlc3BhY2UoSW5zaXR1U3RyaW5nU3RyZWFtJiBpcykgeyAKKyAgICBpcy5zcmNf
ID0gY29uc3RfY2FzdDxjaGFyKj4oU2tpcFdoaXRlc3BhY2VfU0lNRChpcy5zcmNfKSk7Cit9CisK
Ky8vISBUZW1wbGF0ZSBmdW5jdGlvbiBzcGVjaWFsaXphdGlvbiBmb3IgU3RyaW5nU3RyZWFtCit0
ZW1wbGF0ZTw+IGlubGluZSB2b2lkIFNraXBXaGl0ZXNwYWNlKFN0cmluZ1N0cmVhbSYgaXMpIHsK
KyAgICBpcy5zcmNfID0gU2tpcFdoaXRlc3BhY2VfU0lNRChpcy5zcmNfKTsKK30KKyNlbmRpZiAv
LyBSQVBJREpTT05fU0lNRAorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBHZW5lcmljUmVh
ZGVyCisKKy8vISBTQVgtc3R5bGUgSlNPTiBwYXJzZXIuIFVzZSBccmVmIFJlYWRlciBmb3IgVVRG
OCBlbmNvZGluZyBhbmQgZGVmYXVsdCBhbGxvY2F0b3IuCisvKiEgR2VuZXJpY1JlYWRlciBwYXJz
ZXMgSlNPTiB0ZXh0IGZyb20gYSBzdHJlYW0sIGFuZCBzZW5kIGV2ZW50cyBzeW5jaHJvbm91c2x5
IHRvIGFuIAorICAgIG9iamVjdCBpbXBsZW1lbnRpbmcgSGFuZGxlciBjb25jZXB0LgorCisgICAg
SXQgbmVlZHMgdG8gYWxsb2NhdGUgYSBzdGFjayBmb3Igc3RvcmluZyBhIHNpbmdsZSBkZWNvZGVk
IHN0cmluZyBkdXJpbmcgCisgICAgbm9uLWRlc3RydWN0aXZlIHBhcnNpbmcuCisKKyAgICBGb3Ig
aW4tc2l0dSBwYXJzaW5nLCB0aGUgZGVjb2RlZCBzdHJpbmcgaXMgZGlyZWN0bHkgd3JpdHRlbiB0
byB0aGUgc291cmNlIAorICAgIHRleHQgc3RyaW5nLCBubyB0ZW1wb3JhcnkgYnVmZmVyIGlzIHJl
cXVpcmVkLgorCisgICAgQSBHZW5lcmljUmVhZGVyIG9iamVjdCBjYW4gYmUgcmV1c2VkIGZvciBw
YXJzaW5nIG11bHRpcGxlIEpTT04gdGV4dC4KKyAgICAKKyAgICBcdHBhcmFtIFNvdXJjZUVuY29k
aW5nIEVuY29kaW5nIG9mIHRoZSBpbnB1dCBzdHJlYW0uCisgICAgXHRwYXJhbSBUYXJnZXRFbmNv
ZGluZyBFbmNvZGluZyBvZiB0aGUgcGFyc2Ugb3V0cHV0LgorICAgIFx0cGFyYW0gU3RhY2tBbGxv
Y2F0b3IgQWxsb2NhdG9yIHR5cGUgZm9yIHN0YWNrLgorKi8KK3RlbXBsYXRlIDx0eXBlbmFtZSBT
b3VyY2VFbmNvZGluZywgdHlwZW5hbWUgVGFyZ2V0RW5jb2RpbmcsIHR5cGVuYW1lIFN0YWNrQWxs
b2NhdG9yID0gQ3J0QWxsb2NhdG9yPgorY2xhc3MgR2VuZXJpY1JlYWRlciB7CitwdWJsaWM6Cisg
ICAgdHlwZWRlZiB0eXBlbmFtZSBTb3VyY2VFbmNvZGluZzo6Q2ggQ2g7IC8vITwgU291cmNlRW5j
b2RpbmcgY2hhcmFjdGVyIHR5cGUKKworICAgIC8vISBDb25zdHJ1Y3Rvci4KKyAgICAvKiEgXHBh
cmFtIGFsbG9jYXRvciBPcHRpb25hbCBhbGxvY2F0b3IgZm9yIGFsbG9jYXRpbmcgc3RhY2sgbWVt
b3J5LiAoT25seSB1c2UgZm9yIG5vbi1kZXN0cnVjdGl2ZSBwYXJzaW5nKQorICAgICAgICBccGFy
YW0gc3RhY2tDYXBhY2l0eSBzdGFjayBjYXBhY2l0eSBpbiBieXRlcyBmb3Igc3RvcmluZyBhIHNp
bmdsZSBkZWNvZGVkIHN0cmluZy4gIChPbmx5IHVzZSBmb3Igbm9uLWRlc3RydWN0aXZlIHBhcnNp
bmcpCisgICAgKi8KKyAgICBHZW5lcmljUmVhZGVyKFN0YWNrQWxsb2NhdG9yKiBzdGFja0FsbG9j
YXRvciA9IDAsIHNpemVfdCBzdGFja0NhcGFjaXR5ID0ga0RlZmF1bHRTdGFja0NhcGFjaXR5KSA6
IHN0YWNrXyhzdGFja0FsbG9jYXRvciwgc3RhY2tDYXBhY2l0eSksIHBhcnNlUmVzdWx0XygpIHt9
CisKKyAgICAvLyEgUGFyc2UgSlNPTiB0ZXh0LgorICAgIC8qISBcdHBhcmFtIHBhcnNlRmxhZ3Mg
Q29tYmluYXRpb24gb2YgXHJlZiBQYXJzZUZsYWcuCisgICAgICAgIFx0cGFyYW0gSW5wdXRTdHJl
YW0gVHlwZSBvZiBpbnB1dCBzdHJlYW0sIGltcGxlbWVudGluZyBTdHJlYW0gY29uY2VwdC4KKyAg
ICAgICAgXHRwYXJhbSBIYW5kbGVyIFR5cGUgb2YgaGFuZGxlciwgaW1wbGVtZW50aW5nIEhhbmRs
ZXIgY29uY2VwdC4KKyAgICAgICAgXHBhcmFtIGlzIElucHV0IHN0cmVhbSB0byBiZSBwYXJzZWQu
CisgICAgICAgIFxwYXJhbSBoYW5kbGVyIFRoZSBoYW5kbGVyIHRvIHJlY2VpdmUgZXZlbnRzLgor
ICAgICAgICBccmV0dXJuIFdoZXRoZXIgdGhlIHBhcnNpbmcgaXMgc3VjY2Vzc2Z1bC4KKyAgICAq
LworICAgIHRlbXBsYXRlIDx1bnNpZ25lZCBwYXJzZUZsYWdzLCB0eXBlbmFtZSBJbnB1dFN0cmVh
bSwgdHlwZW5hbWUgSGFuZGxlcj4KKyAgICBQYXJzZVJlc3VsdCBQYXJzZShJbnB1dFN0cmVhbSYg
aXMsIEhhbmRsZXImIGhhbmRsZXIpIHsKKyAgICAgICAgaWYgKHBhcnNlRmxhZ3MgJiBrUGFyc2VJ
dGVyYXRpdmVGbGFnKQorICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGl2ZVBhcnNlPHBhcnNlRmxh
Z3M+KGlzLCBoYW5kbGVyKTsKKworICAgICAgICBwYXJzZVJlc3VsdF8uQ2xlYXIoKTsKKworICAg
ICAgICBDbGVhclN0YWNrT25FeGl0IHNjb3BlKCp0aGlzKTsKKworICAgICAgICBTa2lwV2hpdGVz
cGFjZShpcyk7CisKKyAgICAgICAgaWYgKGlzLlBlZWsoKSA9PSAnXDAnKSB7CisgICAgICAgICAg
ICBSQVBJREpTT05fUEFSU0VfRVJST1JfTk9SRVRVUk4oa1BhcnNlRXJyb3JEb2N1bWVudEVtcHR5
LCBpcy5UZWxsKCkpOworICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SX0VBUkxZX1JF
VFVSTihwYXJzZVJlc3VsdF8pOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgUGFyc2VWYWx1ZTxwYXJzZUZsYWdzPihpcywgaGFuZGxlcik7CisgICAgICAgICAgICBSQVBJ
REpTT05fUEFSU0VfRVJST1JfRUFSTFlfUkVUVVJOKHBhcnNlUmVzdWx0Xyk7CisKKyAgICAgICAg
ICAgIGlmICghKHBhcnNlRmxhZ3MgJiBrUGFyc2VTdG9wV2hlbkRvbmVGbGFnKSkgeworICAgICAg
ICAgICAgICAgIFNraXBXaGl0ZXNwYWNlKGlzKTsKKworICAgICAgICAgICAgICAgIGlmIChpcy5Q
ZWVrKCkgIT0gJ1wwJykgeworICAgICAgICAgICAgICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJS
T1JfTk9SRVRVUk4oa1BhcnNlRXJyb3JEb2N1bWVudFJvb3ROb3RTaW5ndWxhciwgaXMuVGVsbCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SX0VBUkxZX1JFVFVS
TihwYXJzZVJlc3VsdF8pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiBwYXJzZVJlc3VsdF87CisgICAgfQorCisgICAgLy8hIFBh
cnNlIEpTT04gdGV4dCAod2l0aCBccmVmIGtQYXJzZURlZmF1bHRGbGFncykKKyAgICAvKiEgXHRw
YXJhbSBJbnB1dFN0cmVhbSBUeXBlIG9mIGlucHV0IHN0cmVhbSwgaW1wbGVtZW50aW5nIFN0cmVh
bSBjb25jZXB0CisgICAgICAgIFx0cGFyYW0gSGFuZGxlciBUeXBlIG9mIGhhbmRsZXIsIGltcGxl
bWVudGluZyBIYW5kbGVyIGNvbmNlcHQuCisgICAgICAgIFxwYXJhbSBpcyBJbnB1dCBzdHJlYW0g
dG8gYmUgcGFyc2VkLgorICAgICAgICBccGFyYW0gaGFuZGxlciBUaGUgaGFuZGxlciB0byByZWNl
aXZlIGV2ZW50cy4KKyAgICAgICAgXHJldHVybiBXaGV0aGVyIHRoZSBwYXJzaW5nIGlzIHN1Y2Nl
c3NmdWwuCisgICAgKi8KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRTdHJlYW0sIHR5cGVu
YW1lIEhhbmRsZXI+CisgICAgUGFyc2VSZXN1bHQgUGFyc2UoSW5wdXRTdHJlYW0mIGlzLCBIYW5k
bGVyJiBoYW5kbGVyKSB7CisgICAgICAgIHJldHVybiBQYXJzZTxrUGFyc2VEZWZhdWx0RmxhZ3M+
KGlzLCBoYW5kbGVyKTsKKyAgICB9CisKKyAgICAvLyEgV2hldGhlciBhIHBhcnNlIGVycm9yIGhh
cyBvY2N1cmVkIGluIHRoZSBsYXN0IHBhcnNpbmcuCisgICAgYm9vbCBIYXNQYXJzZUVycm9yKCkg
Y29uc3QgeyByZXR1cm4gcGFyc2VSZXN1bHRfLklzRXJyb3IoKTsgfQorICAgIAorICAgIC8vISBH
ZXQgdGhlIFxyZWYgUGFyc2VFcnJvckNvZGUgb2YgbGFzdCBwYXJzaW5nLgorICAgIFBhcnNlRXJy
b3JDb2RlIEdldFBhcnNlRXJyb3JDb2RlKCkgY29uc3QgeyByZXR1cm4gcGFyc2VSZXN1bHRfLkNv
ZGUoKTsgfQorCisgICAgLy8hIEdldCB0aGUgcG9zaXRpb24gb2YgbGFzdCBwYXJzaW5nIGVycm9y
IGluIGlucHV0LCAwIG90aGVyd2lzZS4KKyAgICBzaXplX3QgR2V0RXJyb3JPZmZzZXQoKSBjb25z
dCB7IHJldHVybiBwYXJzZVJlc3VsdF8uT2Zmc2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAgIHZv
aWQgU2V0UGFyc2VFcnJvcihQYXJzZUVycm9yQ29kZSBjb2RlLCBzaXplX3Qgb2Zmc2V0KSB7IHBh
cnNlUmVzdWx0Xy5TZXQoY29kZSwgb2Zmc2V0KTsgfQorCitwcml2YXRlOgorICAgIC8vIFByb2hp
Yml0IGNvcHkgY29uc3RydWN0b3IgJiBhc3NpZ25tZW50IG9wZXJhdG9yLgorICAgIEdlbmVyaWNS
ZWFkZXIoY29uc3QgR2VuZXJpY1JlYWRlciYpOworICAgIEdlbmVyaWNSZWFkZXImIG9wZXJhdG9y
PShjb25zdCBHZW5lcmljUmVhZGVyJik7CisKKyAgICB2b2lkIENsZWFyU3RhY2soKSB7IHN0YWNr
Xy5DbGVhcigpOyB9CisKKyAgICAvLyBjbGVhciBzdGFjayBvbiBhbnkgZXhpdCBmcm9tIFBhcnNl
U3RyZWFtLCBlLmcuIGR1ZSB0byBleGNlcHRpb24KKyAgICBzdHJ1Y3QgQ2xlYXJTdGFja09uRXhp
dCB7CisgICAgICAgIGV4cGxpY2l0IENsZWFyU3RhY2tPbkV4aXQoR2VuZXJpY1JlYWRlciYgcikg
OiByXyhyKSB7fQorICAgICAgICB+Q2xlYXJTdGFja09uRXhpdCgpIHsgcl8uQ2xlYXJTdGFjaygp
OyB9CisgICAgcHJpdmF0ZToKKyAgICAgICAgR2VuZXJpY1JlYWRlciYgcl87CisgICAgICAgIENs
ZWFyU3RhY2tPbkV4aXQoY29uc3QgQ2xlYXJTdGFja09uRXhpdCYpOworICAgICAgICBDbGVhclN0
YWNrT25FeGl0JiBvcGVyYXRvcj0oY29uc3QgQ2xlYXJTdGFja09uRXhpdCYpOworICAgIH07CisK
KyAgICAvLyBQYXJzZSBvYmplY3Q6IHsgc3RyaW5nIDogdmFsdWUsIC4uLiB9CisgICAgdGVtcGxh
dGU8dW5zaWduZWQgcGFyc2VGbGFncywgdHlwZW5hbWUgSW5wdXRTdHJlYW0sIHR5cGVuYW1lIEhh
bmRsZXI+CisgICAgdm9pZCBQYXJzZU9iamVjdChJbnB1dFN0cmVhbSYgaXMsIEhhbmRsZXImIGhh
bmRsZXIpIHsKKyAgICAgICAgUkFQSURKU09OX0FTU0VSVChpcy5QZWVrKCkgPT0gJ3snKTsKKyAg
ICAgICAgaXMuVGFrZSgpOyAgLy8gU2tpcCAneycKKyAgICAgICAgCisgICAgICAgIGlmICghaGFu
ZGxlci5TdGFydE9iamVjdCgpKQorICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SKGtQ
YXJzZUVycm9yVGVybWluYXRpb24sIGlzLlRlbGwoKSk7CisKKyAgICAgICAgU2tpcFdoaXRlc3Bh
Y2UoaXMpOworCisgICAgICAgIGlmIChpcy5QZWVrKCkgPT0gJ30nKSB7CisgICAgICAgICAgICBp
cy5UYWtlKCk7CisgICAgICAgICAgICBpZiAoIWhhbmRsZXIuRW5kT2JqZWN0KDApKSAgLy8gZW1w
dHkgb2JqZWN0CisgICAgICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SKGtQYXJzZUVy
cm9yVGVybWluYXRpb24sIGlzLlRlbGwoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBmb3IgKFNpemVUeXBlIG1lbWJlckNvdW50ID0gMDs7KSB7CisgICAgICAg
ICAgICBpZiAoaXMuUGVlaygpICE9ICciJykKKyAgICAgICAgICAgICAgICBSQVBJREpTT05fUEFS
U0VfRVJST1Ioa1BhcnNlRXJyb3JPYmplY3RNaXNzTmFtZSwgaXMuVGVsbCgpKTsKKworICAgICAg
ICAgICAgUGFyc2VTdHJpbmc8cGFyc2VGbGFncz4oaXMsIGhhbmRsZXIsIHRydWUpOworICAgICAg
ICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SX0VBUkxZX1JFVFVSTl9WT0lEOworCisgICAgICAg
ICAgICBTa2lwV2hpdGVzcGFjZShpcyk7CisKKyAgICAgICAgICAgIGlmIChpcy5UYWtlKCkgIT0g
JzonKQorICAgICAgICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUihrUGFyc2VFcnJvck9i
amVjdE1pc3NDb2xvbiwgaXMuVGVsbCgpKTsKKworICAgICAgICAgICAgU2tpcFdoaXRlc3BhY2Uo
aXMpOworCisgICAgICAgICAgICBQYXJzZVZhbHVlPHBhcnNlRmxhZ3M+KGlzLCBoYW5kbGVyKTsK
KyAgICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUl9FQVJMWV9SRVRVUk5fVk9JRDsKKwor
ICAgICAgICAgICAgU2tpcFdoaXRlc3BhY2UoaXMpOworCisgICAgICAgICAgICArK21lbWJlckNv
dW50OworCisgICAgICAgICAgICBzd2l0Y2ggKGlzLlRha2UoKSkgeworICAgICAgICAgICAgICAg
IGNhc2UgJywnOiBTa2lwV2hpdGVzcGFjZShpcyk7IGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgJ30nOiAKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFoYW5kbGVyLkVuZE9iamVjdChtZW1i
ZXJDb3VudCkpCisgICAgICAgICAgICAgICAgICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Io
a1BhcnNlRXJyb3JUZXJtaW5hdGlvbiwgaXMuVGVsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6ICBSQVBJREpTT05fUEFSU0VfRVJST1Io
a1BhcnNlRXJyb3JPYmplY3RNaXNzQ29tbWFPckN1cmx5QnJhY2tldCwgaXMuVGVsbCgpKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFBhcnNlIGFycmF5OiBbIHZh
bHVlLCAuLi4gXQorICAgIHRlbXBsYXRlPHVuc2lnbmVkIHBhcnNlRmxhZ3MsIHR5cGVuYW1lIElu
cHV0U3RyZWFtLCB0eXBlbmFtZSBIYW5kbGVyPgorICAgIHZvaWQgUGFyc2VBcnJheShJbnB1dFN0
cmVhbSYgaXMsIEhhbmRsZXImIGhhbmRsZXIpIHsKKyAgICAgICAgUkFQSURKU09OX0FTU0VSVChp
cy5QZWVrKCkgPT0gJ1snKTsKKyAgICAgICAgaXMuVGFrZSgpOyAgLy8gU2tpcCAnWycKKyAgICAg
ICAgCisgICAgICAgIGlmICghaGFuZGxlci5TdGFydEFycmF5KCkpCisgICAgICAgICAgICBSQVBJ
REpTT05fUEFSU0VfRVJST1Ioa1BhcnNlRXJyb3JUZXJtaW5hdGlvbiwgaXMuVGVsbCgpKTsKKyAg
ICAgICAgCisgICAgICAgIFNraXBXaGl0ZXNwYWNlKGlzKTsKKworICAgICAgICBpZiAoaXMuUGVl
aygpID09ICddJykgeworICAgICAgICAgICAgaXMuVGFrZSgpOworICAgICAgICAgICAgaWYgKCFo
YW5kbGVyLkVuZEFycmF5KDApKSAvLyBlbXB0eSBhcnJheQorICAgICAgICAgICAgICAgIFJBUElE
SlNPTl9QQVJTRV9FUlJPUihrUGFyc2VFcnJvclRlcm1pbmF0aW9uLCBpcy5UZWxsKCkpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChTaXplVHlwZSBlbGVt
ZW50Q291bnQgPSAwOzspIHsKKyAgICAgICAgICAgIFBhcnNlVmFsdWU8cGFyc2VGbGFncz4oaXMs
IGhhbmRsZXIpOworICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SX0VBUkxZX1JFVFVS
Tl9WT0lEOworCisgICAgICAgICAgICArK2VsZW1lbnRDb3VudDsKKyAgICAgICAgICAgIFNraXBX
aGl0ZXNwYWNlKGlzKTsKKworICAgICAgICAgICAgc3dpdGNoIChpcy5UYWtlKCkpIHsKKyAgICAg
ICAgICAgICAgICBjYXNlICcsJzogU2tpcFdoaXRlc3BhY2UoaXMpOyBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlICddJzogCisgICAgICAgICAgICAgICAgICAgIGlmICghaGFuZGxlci5FbmRB
cnJheShlbGVtZW50Q291bnQpKQorICAgICAgICAgICAgICAgICAgICAgICAgUkFQSURKU09OX1BB
UlNFX0VSUk9SKGtQYXJzZUVycm9yVGVybWluYXRpb24sIGlzLlRlbGwoKSk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OiAgUkFQSURKU09OX1BB
UlNFX0VSUk9SKGtQYXJzZUVycm9yQXJyYXlNaXNzQ29tbWFPclNxdWFyZUJyYWNrZXQsIGlzLlRl
bGwoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx1
bnNpZ25lZCBwYXJzZUZsYWdzLCB0eXBlbmFtZSBJbnB1dFN0cmVhbSwgdHlwZW5hbWUgSGFuZGxl
cj4KKyAgICB2b2lkIFBhcnNlTnVsbChJbnB1dFN0cmVhbSYgaXMsIEhhbmRsZXImIGhhbmRsZXIp
IHsKKyAgICAgICAgUkFQSURKU09OX0FTU0VSVChpcy5QZWVrKCkgPT0gJ24nKTsKKyAgICAgICAg
aXMuVGFrZSgpOworCisgICAgICAgIGlmIChpcy5UYWtlKCkgPT0gJ3UnICYmIGlzLlRha2UoKSA9
PSAnbCcgJiYgaXMuVGFrZSgpID09ICdsJykgeworICAgICAgICAgICAgaWYgKCFoYW5kbGVyLk51
bGwoKSkKKyAgICAgICAgICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Ioa1BhcnNlRXJyb3JU
ZXJtaW5hdGlvbiwgaXMuVGVsbCgpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAg
ICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Ioa1BhcnNlRXJyb3JWYWx1ZUludmFsaWQsIGlzLlRl
bGwoKSAtIDEpOworICAgIH0KKworICAgIHRlbXBsYXRlPHVuc2lnbmVkIHBhcnNlRmxhZ3MsIHR5
cGVuYW1lIElucHV0U3RyZWFtLCB0eXBlbmFtZSBIYW5kbGVyPgorICAgIHZvaWQgUGFyc2VUcnVl
KElucHV0U3RyZWFtJiBpcywgSGFuZGxlciYgaGFuZGxlcikgeworICAgICAgICBSQVBJREpTT05f
QVNTRVJUKGlzLlBlZWsoKSA9PSAndCcpOworICAgICAgICBpcy5UYWtlKCk7CisKKyAgICAgICAg
aWYgKGlzLlRha2UoKSA9PSAncicgJiYgaXMuVGFrZSgpID09ICd1JyAmJiBpcy5UYWtlKCkgPT0g
J2UnKSB7CisgICAgICAgICAgICBpZiAoIWhhbmRsZXIuQm9vbCh0cnVlKSkKKyAgICAgICAgICAg
ICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Ioa1BhcnNlRXJyb3JUZXJtaW5hdGlvbiwgaXMuVGVs
bCgpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBSQVBJREpTT05fUEFS
U0VfRVJST1Ioa1BhcnNlRXJyb3JWYWx1ZUludmFsaWQsIGlzLlRlbGwoKSAtIDEpOworICAgIH0K
KworICAgIHRlbXBsYXRlPHVuc2lnbmVkIHBhcnNlRmxhZ3MsIHR5cGVuYW1lIElucHV0U3RyZWFt
LCB0eXBlbmFtZSBIYW5kbGVyPgorICAgIHZvaWQgUGFyc2VGYWxzZShJbnB1dFN0cmVhbSYgaXMs
IEhhbmRsZXImIGhhbmRsZXIpIHsKKyAgICAgICAgUkFQSURKU09OX0FTU0VSVChpcy5QZWVrKCkg
PT0gJ2YnKTsKKyAgICAgICAgaXMuVGFrZSgpOworCisgICAgICAgIGlmIChpcy5UYWtlKCkgPT0g
J2EnICYmIGlzLlRha2UoKSA9PSAnbCcgJiYgaXMuVGFrZSgpID09ICdzJyAmJiBpcy5UYWtlKCkg
PT0gJ2UnKSB7CisgICAgICAgICAgICBpZiAoIWhhbmRsZXIuQm9vbChmYWxzZSkpCisgICAgICAg
ICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SKGtQYXJzZUVycm9yVGVybWluYXRpb24sIGlz
LlRlbGwoKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgUkFQSURKU09O
X1BBUlNFX0VSUk9SKGtQYXJzZUVycm9yVmFsdWVJbnZhbGlkLCBpcy5UZWxsKCkgLSAxKTsKKyAg
ICB9CisKKyAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gcGFyc2UgZm91ciBoZXhpZGVjaW1hbCBk
aWdpdHMgaW4gXHVYWFhYIGluIFBhcnNlU3RyaW5nKCkuCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
SW5wdXRTdHJlYW0+CisgICAgdW5zaWduZWQgUGFyc2VIZXg0KElucHV0U3RyZWFtJiBpcykgewor
ICAgICAgICB1bnNpZ25lZCBjb2RlcG9pbnQgPSAwOworICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IDQ7IGkrKykgeworICAgICAgICAgICAgQ2ggYyA9IGlzLlRha2UoKTsKKyAgICAgICAgICAg
IGNvZGVwb2ludCA8PD0gNDsKKyAgICAgICAgICAgIGNvZGVwb2ludCArPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oYyk7CisgICAgICAgICAgICBpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpCisgICAg
ICAgICAgICAgICAgY29kZXBvaW50IC09ICcwJzsKKyAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0g
J0EnICYmIGMgPD0gJ0YnKQorICAgICAgICAgICAgICAgIGNvZGVwb2ludCAtPSAnQScgLSAxMDsK
KyAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gJ2EnICYmIGMgPD0gJ2YnKQorICAgICAgICAgICAg
ICAgIGNvZGVwb2ludCAtPSAnYScgLSAxMDsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUl9OT1JFVFVSTihrUGFyc2VFcnJvclN0cmluZ1Vu
aWNvZGVFc2NhcGVJbnZhbGlkSGV4LCBpcy5UZWxsKCkgLSAxKTsKKyAgICAgICAgICAgICAgICBS
QVBJREpTT05fUEFSU0VfRVJST1JfRUFSTFlfUkVUVVJOKDApOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIHJldHVybiBjb2RlcG9pbnQ7CisgICAgfQorCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIENoYXJUeXBlPgorICAgIGNsYXNzIFN0YWNrU3RyZWFtIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIHR5cGVkZWYgQ2hhclR5cGUgQ2g7CisKKyAgICAgICAgU3RhY2tTdHJlYW0oaW50
ZXJuYWw6OlN0YWNrPFN0YWNrQWxsb2NhdG9yPiYgc3RhY2spIDogc3RhY2tfKHN0YWNrKSwgbGVu
Z3RoXygwKSB7fQorICAgICAgICBSQVBJREpTT05fRk9SQ0VJTkxJTkUgdm9pZCBQdXQoQ2ggYykg
eworICAgICAgICAgICAgKnN0YWNrXy50ZW1wbGF0ZSBQdXNoPENoPigpID0gYzsKKyAgICAgICAg
ICAgICsrbGVuZ3RoXzsKKyAgICAgICAgfQorICAgICAgICBzaXplX3QgTGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gbGVuZ3RoXzsgfQorICAgICAgICBDaCogUG9wKCkgeworICAgICAgICAgICAgcmV0
dXJuIHN0YWNrXy50ZW1wbGF0ZSBQb3A8Q2g+KGxlbmd0aF8pOworICAgICAgICB9CisKKyAgICBw
cml2YXRlOgorICAgICAgICBTdGFja1N0cmVhbShjb25zdCBTdGFja1N0cmVhbSYpOworICAgICAg
ICBTdGFja1N0cmVhbSYgb3BlcmF0b3I9KGNvbnN0IFN0YWNrU3RyZWFtJik7CisKKyAgICAgICAg
aW50ZXJuYWw6OlN0YWNrPFN0YWNrQWxsb2NhdG9yPiYgc3RhY2tfOworICAgICAgICBTaXplVHlw
ZSBsZW5ndGhfOworICAgIH07CisKKyAgICAvLyBQYXJzZSBzdHJpbmcgYW5kIGdlbmVyYXRlIFN0
cmluZyBldmVudC4gRGlmZmVyZW50IGNvZGUgcGF0aHMgZm9yIGtQYXJzZUluc2l0dUZsYWcuCisg
ICAgdGVtcGxhdGU8dW5zaWduZWQgcGFyc2VGbGFncywgdHlwZW5hbWUgSW5wdXRTdHJlYW0sIHR5
cGVuYW1lIEhhbmRsZXI+CisgICAgdm9pZCBQYXJzZVN0cmluZyhJbnB1dFN0cmVhbSYgaXMsIEhh
bmRsZXImIGhhbmRsZXIsIGJvb2wgaXNLZXkgPSBmYWxzZSkgeworICAgICAgICBpbnRlcm5hbDo6
U3RyZWFtTG9jYWxDb3B5PElucHV0U3RyZWFtPiBjb3B5KGlzKTsKKyAgICAgICAgSW5wdXRTdHJl
YW0mIHMoY29weS5zKTsKKworICAgICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAg
aWYgKHBhcnNlRmxhZ3MgJiBrUGFyc2VJbnNpdHVGbGFnKSB7CisgICAgICAgICAgICB0eXBlbmFt
ZSBJbnB1dFN0cmVhbTo6Q2ggKmhlYWQgPSBzLlB1dEJlZ2luKCk7CisgICAgICAgICAgICBQYXJz
ZVN0cmluZ1RvU3RyZWFtPHBhcnNlRmxhZ3MsIFNvdXJjZUVuY29kaW5nLCBTb3VyY2VFbmNvZGlu
Zz4ocywgcyk7CisgICAgICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJST1JfRUFSTFlfUkVUVVJO
X1ZPSUQ7CisgICAgICAgICAgICBzaXplX3QgbGVuZ3RoID0gcy5QdXRFbmQoaGVhZCkgLSAxOwor
ICAgICAgICAgICAgUkFQSURKU09OX0FTU0VSVChsZW5ndGggPD0gMHhGRkZGRkZGRik7CisgICAg
ICAgICAgICBjb25zdCB0eXBlbmFtZSBUYXJnZXRFbmNvZGluZzo6Q2gqIGNvbnN0IHN0ciA9ICh0
eXBlbmFtZSBUYXJnZXRFbmNvZGluZzo6Q2gqKWhlYWQ7CisgICAgICAgICAgICBzdWNjZXNzID0g
KGlzS2V5ID8gaGFuZGxlci5LZXkoc3RyLCBTaXplVHlwZShsZW5ndGgpLCBmYWxzZSkgOiBoYW5k
bGVyLlN0cmluZyhzdHIsIFNpemVUeXBlKGxlbmd0aCksIGZhbHNlKSk7CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBTdGFja1N0cmVhbTx0eXBlbmFtZSBUYXJnZXRFbmNv
ZGluZzo6Q2g+IHN0YWNrU3RyZWFtKHN0YWNrXyk7CisgICAgICAgICAgICBQYXJzZVN0cmluZ1Rv
U3RyZWFtPHBhcnNlRmxhZ3MsIFNvdXJjZUVuY29kaW5nLCBUYXJnZXRFbmNvZGluZz4ocywgc3Rh
Y2tTdHJlYW0pOworICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SX0VBUkxZX1JFVFVS
Tl9WT0lEOworICAgICAgICAgICAgU2l6ZVR5cGUgbGVuZ3RoID0gc3RhdGljX2Nhc3Q8U2l6ZVR5
cGU+KHN0YWNrU3RyZWFtLkxlbmd0aCgpKSAtIDE7CisgICAgICAgICAgICBjb25zdCB0eXBlbmFt
ZSBUYXJnZXRFbmNvZGluZzo6Q2gqIGNvbnN0IHN0ciA9IHN0YWNrU3RyZWFtLlBvcCgpOworICAg
ICAgICAgICAgc3VjY2VzcyA9IChpc0tleSA/IGhhbmRsZXIuS2V5KHN0ciwgbGVuZ3RoLCB0cnVl
KSA6IGhhbmRsZXIuU3RyaW5nKHN0ciwgbGVuZ3RoLCB0cnVlKSk7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKCFzdWNjZXNzKQorICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SKGtQYXJz
ZUVycm9yVGVybWluYXRpb24sIHMuVGVsbCgpKTsKKyAgICB9CisKKyAgICAvLyBQYXJzZSBzdHJp
bmcgdG8gYW4gb3V0cHV0IGlzCisgICAgLy8gVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSBwcmVm
aXgvc3VmZml4IGRvdWJsZSBxdW90ZXMsIGVzY2FwaW5nLCBhbmQgb3B0aW9uYWwgZW5jb2Rpbmcg
dmFsaWRhdGlvbi4KKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBwYXJzZUZsYWdzLCB0eXBlbmFtZSBT
RW5jb2RpbmcsIHR5cGVuYW1lIFRFbmNvZGluZywgdHlwZW5hbWUgSW5wdXRTdHJlYW0sIHR5cGVu
YW1lIE91dHB1dFN0cmVhbT4KKyAgICBSQVBJREpTT05fRk9SQ0VJTkxJTkUgdm9pZCBQYXJzZVN0
cmluZ1RvU3RyZWFtKElucHV0U3RyZWFtJiBpcywgT3V0cHV0U3RyZWFtJiBvcykgeworLy8hQGNv
bmQgUkFQSURKU09OX0hJRERFTl9GUk9NX0RPWFlHRU4KKyNkZWZpbmUgWjE2IDAsMCwwLDAsMCww
LDAsMCwwLDAsMCwwLDAsMCwwLDAKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgZXNjYXBlWzI1
Nl0gPSB7CisgICAgICAgICAgICBaMTYsIFoxNiwgMCwgMCwnXCInLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCcvJywgCisgICAgICAgICAgICBaMTYsIFoxNiwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwnXFwnLCAwLCAwLCAwLCAKKyAgICAgICAgICAgIDAs
IDAsJ1xiJywgMCwgMCwgMCwnXGYnLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCdcbicsIDAsIAorICAg
ICAgICAgICAgMCwgMCwnXHInLCAwLCdcdCcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIAorICAgICAgICAgICAgWjE2LCBaMTYsIFoxNiwgWjE2LCBaMTYsIFoxNiwgWjE2LCBaMTYK
KyAgICAgICAgfTsKKyN1bmRlZiBaMTYKKy8vIUBlbmRjb25kCisKKyAgICAgICAgUkFQSURKU09O
X0FTU0VSVChpcy5QZWVrKCkgPT0gJ1wiJyk7CisgICAgICAgIGlzLlRha2UoKTsgIC8vIFNraXAg
J1wiJworCisgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgIENoIGMgPSBpcy5QZWVrKCk7
CisgICAgICAgICAgICBpZiAoYyA9PSAnXFwnKSB7ICAgIC8vIEVzY2FwZQorICAgICAgICAgICAg
ICAgIGlzLlRha2UoKTsKKyAgICAgICAgICAgICAgICBDaCBlID0gaXMuVGFrZSgpOworICAgICAg
ICAgICAgICAgIGlmICgoc2l6ZW9mKENoKSA9PSAxIHx8IHVuc2lnbmVkKGUpIDwgMjU2KSAmJiBl
c2NhcGVbKHVuc2lnbmVkIGNoYXIpZV0pIHsKKyAgICAgICAgICAgICAgICAgICAgb3MuUHV0KGVz
Y2FwZVsodW5zaWduZWQgY2hhcillXSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKGUgPT0gJ3UnKSB7ICAgIC8vIFVuaWNvZGUKKyAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgY29kZXBvaW50ID0gUGFyc2VIZXg0KGlzKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGNvZGVwb2ludCA+PSAweEQ4MDAgJiYgY29kZXBvaW50IDw9IDB4REJGRikgeworICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gSGFuZGxlIFVURi0xNiBzdXJyb2dhdGUgcGFpcgorICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGlzLlRha2UoKSAhPSAnXFwnIHx8IGlzLlRha2UoKSAh
PSAndScpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9S
KGtQYXJzZUVycm9yU3RyaW5nVW5pY29kZVN1cnJvZ2F0ZUludmFsaWQsIGlzLlRlbGwoKSAtIDIp
OworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY29kZXBvaW50MiA9IFBhcnNlSGV4
NChpcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29kZXBvaW50MiA8IDB4REMwMCB8
fCBjb2RlcG9pbnQyID4gMHhERkZGKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJBUElE
SlNPTl9QQVJTRV9FUlJPUihrUGFyc2VFcnJvclN0cmluZ1VuaWNvZGVTdXJyb2dhdGVJbnZhbGlk
LCBpcy5UZWxsKCkgLSAyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVwb2ludCA9ICgo
KGNvZGVwb2ludCAtIDB4RDgwMCkgPDwgMTApIHwgKGNvZGVwb2ludDIgLSAweERDMDApKSArIDB4
MTAwMDA7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgVEVuY29k
aW5nOjpFbmNvZGUob3MsIGNvZGVwb2ludCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SKGtQ
YXJzZUVycm9yU3RyaW5nRXNjYXBlSW52YWxpZCwgaXMuVGVsbCgpIC0gMSk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBlbHNlIGlmIChjID09ICciJykgeyAgICAvLyBDbG9zaW5nIGRvdWJs
ZSBxdW90ZQorICAgICAgICAgICAgICAgIGlzLlRha2UoKTsKKyAgICAgICAgICAgICAgICBvcy5Q
dXQoJ1wwJyk7ICAgLy8gbnVsbC10ZXJtaW5hdGUgdGhlIHN0cmluZworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1wwJykK
KyAgICAgICAgICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Ioa1BhcnNlRXJyb3JTdHJpbmdN
aXNzUXVvdGF0aW9uTWFyaywgaXMuVGVsbCgpIC0gMSk7CisgICAgICAgICAgICBlbHNlIGlmICgo
dW5zaWduZWQpYyA8IDB4MjApIC8vIFJGQyA0NjI3OiB1bmVzY2FwZWQgPSAleDIwLTIxIC8gJXgy
My01QiAvICV4NUQtMTBGRkZGCisgICAgICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9S
KGtQYXJzZUVycm9yU3RyaW5nRXNjYXBlSW52YWxpZCwgaXMuVGVsbCgpIC0gMSk7CisgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAocGFyc2VGbGFncyAmIGtQYXJzZVZhbGlk
YXRlRW5jb2RpbmdGbGFnID8gCisgICAgICAgICAgICAgICAgICAgICFUcmFuc2NvZGVyPFNFbmNv
ZGluZywgVEVuY29kaW5nPjo6VmFsaWRhdGUoaXMsIG9zKSA6IAorICAgICAgICAgICAgICAgICAg
ICAhVHJhbnNjb2RlcjxTRW5jb2RpbmcsIFRFbmNvZGluZz46OlRyYW5zY29kZShpcywgb3MpKQor
ICAgICAgICAgICAgICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Ioa1BhcnNlRXJyb3JTdHJp
bmdJbnZhbGlkRW5jb2RpbmcsIGlzLlRlbGwoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnB1dFN0cmVhbSwgYm9vbCBiYWNrdXA+
CisgICAgY2xhc3MgTnVtYmVyU3RyZWFtIHt9OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW5w
dXRTdHJlYW0+CisgICAgY2xhc3MgTnVtYmVyU3RyZWFtPElucHV0U3RyZWFtLCBmYWxzZT4gewor
ICAgIHB1YmxpYzoKKyAgICAgICAgTnVtYmVyU3RyZWFtKEdlbmVyaWNSZWFkZXImIHJlYWRlciwg
SW5wdXRTdHJlYW0mIGlzKSA6IGlzKGlzKSB7ICh2b2lkKXJlYWRlcjsgIH0KKyAgICAgICAgfk51
bWJlclN0cmVhbSgpIHt9CisKKyAgICAgICAgUkFQSURKU09OX0ZPUkNFSU5MSU5FIENoIFBlZWso
KSBjb25zdCB7IHJldHVybiBpcy5QZWVrKCk7IH0KKyAgICAgICAgUkFQSURKU09OX0ZPUkNFSU5M
SU5FIENoIFRha2VQdXNoKCkgeyByZXR1cm4gaXMuVGFrZSgpOyB9CisgICAgICAgIFJBUElESlNP
Tl9GT1JDRUlOTElORSBDaCBUYWtlKCkgeyByZXR1cm4gaXMuVGFrZSgpOyB9CisgICAgICAgIHNp
emVfdCBUZWxsKCkgeyByZXR1cm4gaXMuVGVsbCgpOyB9CisgICAgICAgIHNpemVfdCBMZW5ndGgo
KSB7IHJldHVybiAwOyB9CisgICAgICAgIGNvbnN0IGNoYXIqIFBvcCgpIHsgcmV0dXJuIDA7IH0K
KworICAgIHByb3RlY3RlZDoKKyAgICAgICAgTnVtYmVyU3RyZWFtJiBvcGVyYXRvcj0oY29uc3Qg
TnVtYmVyU3RyZWFtJik7CisKKyAgICAgICAgSW5wdXRTdHJlYW0mIGlzOworICAgIH07CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnB1dFN0cmVhbT4KKyAgICBjbGFzcyBOdW1iZXJTdHJlYW08
SW5wdXRTdHJlYW0sIHRydWU+IDogcHVibGljIE51bWJlclN0cmVhbTxJbnB1dFN0cmVhbSwgZmFs
c2U+IHsKKyAgICAgICAgdHlwZWRlZiBOdW1iZXJTdHJlYW08SW5wdXRTdHJlYW0sIGZhbHNlPiBC
YXNlOworICAgIHB1YmxpYzoKKyAgICAgICAgTnVtYmVyU3RyZWFtKEdlbmVyaWNSZWFkZXImIHJl
YWRlciwgSW5wdXRTdHJlYW0mIGlzKSA6IE51bWJlclN0cmVhbTxJbnB1dFN0cmVhbSwgZmFsc2U+
KHJlYWRlciwgaXMpLCBzdGFja1N0cmVhbShyZWFkZXIuc3RhY2tfKSB7fQorICAgICAgICB+TnVt
YmVyU3RyZWFtKCkge30KKworICAgICAgICBSQVBJREpTT05fRk9SQ0VJTkxJTkUgQ2ggVGFrZVB1
c2goKSB7CisgICAgICAgICAgICBzdGFja1N0cmVhbS5QdXQoKGNoYXIpQmFzZTo6aXMuUGVlaygp
KTsKKyAgICAgICAgICAgIHJldHVybiBCYXNlOjppcy5UYWtlKCk7CisgICAgICAgIH0KKworICAg
ICAgICBzaXplX3QgTGVuZ3RoKCkgeyByZXR1cm4gc3RhY2tTdHJlYW0uTGVuZ3RoKCk7IH0KKwor
ICAgICAgICBjb25zdCBjaGFyKiBQb3AoKSB7CisgICAgICAgICAgICBzdGFja1N0cmVhbS5QdXQo
J1wwJyk7CisgICAgICAgICAgICByZXR1cm4gc3RhY2tTdHJlYW0uUG9wKCk7CisgICAgICAgIH0K
KworICAgIHByaXZhdGU6CisgICAgICAgIFN0YWNrU3RyZWFtPGNoYXI+IHN0YWNrU3RyZWFtOwor
ICAgIH07CisKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBwYXJzZUZsYWdzLCB0eXBlbmFtZSBJbnB1
dFN0cmVhbSwgdHlwZW5hbWUgSGFuZGxlcj4KKyAgICB2b2lkIFBhcnNlTnVtYmVyKElucHV0U3Ry
ZWFtJiBpcywgSGFuZGxlciYgaGFuZGxlcikgeworICAgICAgICBpbnRlcm5hbDo6U3RyZWFtTG9j
YWxDb3B5PElucHV0U3RyZWFtPiBjb3B5KGlzKTsKKyAgICAgICAgTnVtYmVyU3RyZWFtPElucHV0
U3RyZWFtLCAocGFyc2VGbGFncyAmIGtQYXJzZUZ1bGxQcmVjaXNpb25GbGFnKSAhPSAwPiBzKCp0
aGlzLCBjb3B5LnMpOworCisgICAgICAgIC8vIFBhcnNlIG1pbnVzCisgICAgICAgIGJvb2wgbWlu
dXMgPSBmYWxzZTsKKyAgICAgICAgaWYgKHMuUGVlaygpID09ICctJykgeworICAgICAgICAgICAg
bWludXMgPSB0cnVlOworICAgICAgICAgICAgcy5UYWtlKCk7CisgICAgICAgIH0KKworICAgICAg
ICAvLyBQYXJzZSBpbnQ6IHplcm8gLyAoIGRpZ2l0MS05ICpESUdJVCApCisgICAgICAgIHVuc2ln
bmVkIGkgPSAwOworICAgICAgICB1aW50NjRfdCBpNjQgPSAwOworICAgICAgICBib29sIHVzZTY0
Yml0ID0gZmFsc2U7CisgICAgICAgIGludCBzaWduaWZpY2FuZERpZ2l0ID0gMDsKKyAgICAgICAg
aWYgKHMuUGVlaygpID09ICcwJykgeworICAgICAgICAgICAgaSA9IDA7CisgICAgICAgICAgICBz
LlRha2VQdXNoKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAocy5QZWVrKCkgPj0gJzEn
ICYmIHMuUGVlaygpIDw9ICc5JykgeworICAgICAgICAgICAgaSA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihzLlRha2VQdXNoKCkgLSAnMCcpOworCisgICAgICAgICAgICBpZiAobWludXMpCisgICAg
ICAgICAgICAgICAgd2hpbGUgKHMuUGVlaygpID49ICcwJyAmJiBzLlBlZWsoKSA8PSAnOScpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj0gMjE0NzQ4MzY0KSB7IC8vIDJeMzEgPSAyMTQ3
NDgzNjQ4CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSAhPSAyMTQ3NDgzNjQgfHwgcy5Q
ZWVrKCkgPiAnOCcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpNjQgPSBpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVzZTY0Yml0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpID0gaSAqIDEwICsgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHMuVGFrZVB1c2goKSAtICcwJyk7CisgICAgICAgICAgICAgICAgICAgIHNp
Z25pZmljYW5kRGlnaXQrKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgd2hpbGUgKHMuUGVlaygpID49ICcwJyAmJiBzLlBlZWsoKSA8PSAnOScp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj0gNDI5NDk2NzI5KSB7IC8vIDJeMzIgLSAx
ID0gNDI5NDk2NzI5NQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgIT0gNDI5NDk2NzI5
IHx8IHMuUGVlaygpID4gJzUnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTY0ID0g
aTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2U2NGJpdCA9IHRydWU7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaSA9IGkgKiAxMCArIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihzLlRha2VQdXNoKCkgLSAnMCcpOworICAgICAgICAgICAgICAg
ICAgICBzaWduaWZpY2FuZERpZ2l0Kys7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUihrUGFyc2VFcnJv
clZhbHVlSW52YWxpZCwgcy5UZWxsKCkpOworCisgICAgICAgIC8vIFBhcnNlIDY0Yml0IGludAor
ICAgICAgICBib29sIHVzZURvdWJsZSA9IGZhbHNlOworICAgICAgICBkb3VibGUgZCA9IDAuMDsK
KyAgICAgICAgaWYgKHVzZTY0Yml0KSB7CisgICAgICAgICAgICBpZiAobWludXMpIAorICAgICAg
ICAgICAgICAgIHdoaWxlIChzLlBlZWsoKSA+PSAnMCcgJiYgcy5QZWVrKCkgPD0gJzknKSB7ICAg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgIGlmIChpNjQgPj0gUkFQSURK
U09OX1VJTlQ2NF9DMigweDBDQ0NDQ0NDLCAweENDQ0NDQ0NDKSkgLy8gMl42MyA9IDkyMjMzNzIw
MzY4NTQ3NzU4MDgKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpNjQgIT0gUkFQSURKU09O
X1VJTlQ2NF9DMigweDBDQ0NDQ0NDLCAweENDQ0NDQ0NDKSB8fCBzLlBlZWsoKSA+ICc4Jykgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBpNjQ7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdXNlRG91YmxlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaTY0
ID0gaTY0ICogMTAgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocy5UYWtlUHVzaCgpIC0gJzAnKTsK
KyAgICAgICAgICAgICAgICAgICAgc2lnbmlmaWNhbmREaWdpdCsrOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB3aGlsZSAocy5QZWVrKCkgPj0g
JzAnICYmIHMuUGVlaygpIDw9ICc5JykgeyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgICAgIGlmIChpNjQgPj0gUkFQSURKU09OX1VJTlQ2NF9DMigweDE5OTk5OTk5LCAweDk5
OTk5OTk5KSkgLy8gMl42NCAtIDEgPSAxODQ0Njc0NDA3MzcwOTU1MTYxNQorICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGk2NCAhPSBSQVBJREpTT05fVUlOVDY0X0MyKDB4MTk5OTk5OTksIDB4
OTk5OTk5OTkpIHx8IHMuUGVlaygpID4gJzUnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZCA9IGk2NDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VEb3VibGUgPSB0cnVl
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpNjQgPSBpNjQgKiAxMCArIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzLlRha2VQdXNoKCkgLSAnMCcpOworICAgICAgICAgICAgICAgICAgICBzaWdu
aWZpY2FuZERpZ2l0Kys7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
Ly8gRm9yY2UgZG91YmxlIGZvciBiaWcgaW50ZWdlcgorICAgICAgICBpZiAodXNlRG91YmxlKSB7
CisgICAgICAgICAgICB3aGlsZSAocy5QZWVrKCkgPj0gJzAnICYmIHMuUGVlaygpIDw9ICc5Jykg
eworICAgICAgICAgICAgICAgIGlmIChkID49IDEuNzk3NjkzMTM0ODYyMzE1N2UzMDcpIC8vIERC
TF9NQVggLyAxMC4wCisgICAgICAgICAgICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUihr
UGFyc2VFcnJvck51bWJlclRvb0JpZywgcy5UZWxsKCkpOworICAgICAgICAgICAgICAgIGQgPSBk
ICogMTAgKyAocy5UYWtlUHVzaCgpIC0gJzAnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIC8vIFBhcnNlIGZyYWMgPSBkZWNpbWFsLXBvaW50IDEqRElHSVQKKyAgICAgICAg
aW50IGV4cEZyYWMgPSAwOworICAgICAgICBzaXplX3QgZGVjaW1hbFBvc2l0aW9uOworICAgICAg
ICBpZiAocy5QZWVrKCkgPT0gJy4nKSB7CisgICAgICAgICAgICBzLlRha2UoKTsKKyAgICAgICAg
ICAgIGRlY2ltYWxQb3NpdGlvbiA9IHMuTGVuZ3RoKCk7CisKKyAgICAgICAgICAgIGlmICghKHMu
UGVlaygpID49ICcwJyAmJiBzLlBlZWsoKSA8PSAnOScpKQorICAgICAgICAgICAgICAgIFJBUElE
SlNPTl9QQVJTRV9FUlJPUihrUGFyc2VFcnJvck51bWJlck1pc3NGcmFjdGlvbiwgcy5UZWxsKCkp
OworCisgICAgICAgICAgICBpZiAoIXVzZURvdWJsZSkgeworI2lmIFJBUElESlNPTl82NEJJVAor
ICAgICAgICAgICAgICAgIC8vIFVzZSBpNjQgdG8gc3RvcmUgc2lnbmlmaWNhbmQgaW4gNjQtYml0
IGFyY2hpdGVjdHVyZQorICAgICAgICAgICAgICAgIGlmICghdXNlNjRiaXQpCisgICAgICAgICAg
ICAgICAgICAgIGk2NCA9IGk7CisgICAgICAgIAorICAgICAgICAgICAgICAgIHdoaWxlIChzLlBl
ZWsoKSA+PSAnMCcgJiYgcy5QZWVrKCkgPD0gJzknKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChpNjQgPiBSQVBJREpTT05fVUlOVDY0X0MyKDB4MUZGRkZGLCAweEZGRkZGRkZGKSkgLy8gMl41
MyAtIDEgZm9yIGZhc3QgcGF0aAorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgaTY0ID0gaTY0
ICogMTAgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocy5UYWtlUHVzaCgpIC0gJzAnKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC0tZXhwRnJhYzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChpNjQgIT0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduaWZpY2FuZERpZ2l0
Kys7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICBkID0gKGRvdWJsZSlpNjQ7CisjZWxzZQorICAgICAgICAgICAgICAgIC8vIFVzZSBk
b3VibGUgdG8gc3RvcmUgc2lnbmlmaWNhbmQgaW4gMzItYml0IGFyY2hpdGVjdHVyZQorICAgICAg
ICAgICAgICAgIGQgPSB1c2U2NGJpdCA/IChkb3VibGUpaTY0IDogKGRvdWJsZSlpOworI2VuZGlm
CisgICAgICAgICAgICAgICAgdXNlRG91YmxlID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgd2hpbGUgKHMuUGVlaygpID49ICcwJyAmJiBzLlBlZWsoKSA8PSAnOScpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoc2lnbmlmaWNhbmREaWdpdCA8IDE3KSB7CisgICAgICAgICAgICAg
ICAgICAgIGQgPSBkICogMTAuMCArIChzLlRha2VQdXNoKCkgLSAnMCcpOworICAgICAgICAgICAg
ICAgICAgICAtLWV4cEZyYWM7CisgICAgICAgICAgICAgICAgICAgIGlmIChkICE9IDAuMCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNpZ25pZmljYW5kRGlnaXQrKzsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzLlRha2VQdXNo
KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
ZGVjaW1hbFBvc2l0aW9uID0gcy5MZW5ndGgoKTsgLy8gZGVjaW1hbCBwb3NpdGlvbiBhdCB0aGUg
ZW5kIG9mIGludGVnZXIuCisKKyAgICAgICAgLy8gUGFyc2UgZXhwID0gZSBbIG1pbnVzIC8gcGx1
cyBdIDEqRElHSVQKKyAgICAgICAgaW50IGV4cCA9IDA7CisgICAgICAgIGlmIChzLlBlZWsoKSA9
PSAnZScgfHwgcy5QZWVrKCkgPT0gJ0UnKSB7CisgICAgICAgICAgICBpZiAoIXVzZURvdWJsZSkg
eworICAgICAgICAgICAgICAgIGQgPSB1c2U2NGJpdCA/IGk2NCA6IGk7CisgICAgICAgICAgICAg
ICAgdXNlRG91YmxlID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHMuVGFrZSgp
OworCisgICAgICAgICAgICBib29sIGV4cE1pbnVzID0gZmFsc2U7CisgICAgICAgICAgICBpZiAo
cy5QZWVrKCkgPT0gJysnKQorICAgICAgICAgICAgICAgIHMuVGFrZSgpOworICAgICAgICAgICAg
ZWxzZSBpZiAocy5QZWVrKCkgPT0gJy0nKSB7CisgICAgICAgICAgICAgICAgcy5UYWtlKCk7Cisg
ICAgICAgICAgICAgICAgZXhwTWludXMgPSB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBpZiAocy5QZWVrKCkgPj0gJzAnICYmIHMuUGVlaygpIDw9ICc5JykgeworICAgICAgICAg
ICAgICAgIGV4cCA9IHMuVGFrZSgpIC0gJzAnOworICAgICAgICAgICAgICAgIHdoaWxlIChzLlBl
ZWsoKSA+PSAnMCcgJiYgcy5QZWVrKCkgPD0gJzknKSB7CisgICAgICAgICAgICAgICAgICAgIGV4
cCA9IGV4cCAqIDEwICsgKHMuVGFrZSgpIC0gJzAnKTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGV4cCA+IDMwOCAmJiAhZXhwTWludXMpIC8vIGV4cCA+IDMwOCBzaG91bGQgYmUgcmFyZSwgc28g
aXQgc2hvdWxkIGJlIGNoZWNrZWQgZmlyc3QuCisgICAgICAgICAgICAgICAgICAgICAgICBSQVBJ
REpTT05fUEFSU0VfRVJST1Ioa1BhcnNlRXJyb3JOdW1iZXJUb29CaWcsIHMuVGVsbCgpKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SKGtQYXJzZUVycm9yTnVtYmVyTWlzc0V4cG9u
ZW50LCBzLlRlbGwoKSk7CisKKyAgICAgICAgICAgIGlmIChleHBNaW51cykKKyAgICAgICAgICAg
ICAgICBleHAgPSAtZXhwOworICAgICAgICB9CisKKyAgICAgICAgLy8gRmluaXNoIHBhcnNpbmcs
IGNhbGwgZXZlbnQgYWNjb3JkaW5nIHRvIHRoZSB0eXBlIG9mIG51bWJlci4KKyAgICAgICAgYm9v
bCBjb250ID0gdHJ1ZTsKKyAgICAgICAgc2l6ZV90IGxlbmd0aCA9IHMuTGVuZ3RoKCk7CisgICAg
ICAgIGNvbnN0IGNoYXIqIGRlY2ltYWwgPSBzLlBvcCgpOyAgLy8gUG9wIHN0YWNrIG5vIG1hdHRl
ciBpZiBpdCB3aWxsIGJlIHVzZWQgb3Igbm90LgorCisgICAgICAgIGlmICh1c2VEb3VibGUpIHsK
KyAgICAgICAgICAgIGludCBwID0gZXhwICsgZXhwRnJhYzsKKyAgICAgICAgICAgIGlmIChwYXJz
ZUZsYWdzICYga1BhcnNlRnVsbFByZWNpc2lvbkZsYWcpCisgICAgICAgICAgICAgICAgZCA9IGlu
dGVybmFsOjpTdHJ0b2RGdWxsUHJlY2lzaW9uKGQsIHAsIGRlY2ltYWwsIGxlbmd0aCwgZGVjaW1h
bFBvc2l0aW9uLCBleHApOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGQgPSBp
bnRlcm5hbDo6U3RydG9kTm9ybWFsUHJlY2lzaW9uKGQsIHApOworCisgICAgICAgICAgICBjb250
ID0gaGFuZGxlci5Eb3VibGUobWludXMgPyAtZCA6IGQpOworICAgICAgICB9CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgaWYgKHVzZTY0Yml0KSB7CisgICAgICAgICAgICAgICAgaWYgKG1p
bnVzKQorICAgICAgICAgICAgICAgICAgICBjb250ID0gaGFuZGxlci5JbnQ2NCgtKGludDY0X3Qp
aTY0KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGNvbnQgPSBo
YW5kbGVyLlVpbnQ2NChpNjQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWYgKG1pbnVzKQorICAgICAgICAgICAgICAgICAgICBjb250ID0gaGFu
ZGxlci5JbnQoLShpbnQpaSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICBjb250ID0gaGFuZGxlci5VaW50KGkpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGlmICghY29udCkKKyAgICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUihrUGFy
c2VFcnJvclRlcm1pbmF0aW9uLCBzLlRlbGwoKSk7CisgICAgfQorCisgICAgLy8gUGFyc2UgYW55
IEpTT04gdmFsdWUKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBwYXJzZUZsYWdzLCB0eXBlbmFtZSBJ
bnB1dFN0cmVhbSwgdHlwZW5hbWUgSGFuZGxlcj4KKyAgICB2b2lkIFBhcnNlVmFsdWUoSW5wdXRT
dHJlYW0mIGlzLCBIYW5kbGVyJiBoYW5kbGVyKSB7CisgICAgICAgIHN3aXRjaCAoaXMuUGVlaygp
KSB7CisgICAgICAgICAgICBjYXNlICduJzogUGFyc2VOdWxsICA8cGFyc2VGbGFncz4oaXMsIGhh
bmRsZXIpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ3QnOiBQYXJzZVRydWUgIDxwYXJzZUZs
YWdzPihpcywgaGFuZGxlcik7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAnZic6IFBhcnNlRmFs
c2UgPHBhcnNlRmxhZ3M+KGlzLCBoYW5kbGVyKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlICci
JzogUGFyc2VTdHJpbmc8cGFyc2VGbGFncz4oaXMsIGhhbmRsZXIpOyBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgJ3snOiBQYXJzZU9iamVjdDxwYXJzZUZsYWdzPihpcywgaGFuZGxlcik7IGJyZWFr
OworICAgICAgICAgICAgY2FzZSAnWyc6IFBhcnNlQXJyYXkgPHBhcnNlRmxhZ3M+KGlzLCBoYW5k
bGVyKTsgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0IDogUGFyc2VOdW1iZXI8cGFyc2VGbGFn
cz4oaXMsIGhhbmRsZXIpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gSXRlcmF0aXZlIFBh
cnNpbmcKKworICAgIC8vIFN0YXRlcworICAgIGVudW0gSXRlcmF0aXZlUGFyc2luZ1N0YXRlIHsK
KyAgICAgICAgSXRlcmF0aXZlUGFyc2luZ1N0YXJ0U3RhdGUgPSAwLAorICAgICAgICBJdGVyYXRp
dmVQYXJzaW5nRmluaXNoU3RhdGUsCisgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRl
LAorCisgICAgICAgIC8vIE9iamVjdCBzdGF0ZXMKKyAgICAgICAgSXRlcmF0aXZlUGFyc2luZ09i
amVjdEluaXRpYWxTdGF0ZSwKKyAgICAgICAgSXRlcmF0aXZlUGFyc2luZ01lbWJlcktleVN0YXRl
LAorICAgICAgICBJdGVyYXRpdmVQYXJzaW5nS2V5VmFsdWVEZWxpbWl0ZXJTdGF0ZSwKKyAgICAg
ICAgSXRlcmF0aXZlUGFyc2luZ01lbWJlclZhbHVlU3RhdGUsCisgICAgICAgIEl0ZXJhdGl2ZVBh
cnNpbmdNZW1iZXJEZWxpbWl0ZXJTdGF0ZSwKKyAgICAgICAgSXRlcmF0aXZlUGFyc2luZ09iamVj
dEZpbmlzaFN0YXRlLAorCisgICAgICAgIC8vIEFycmF5IHN0YXRlcworICAgICAgICBJdGVyYXRp
dmVQYXJzaW5nQXJyYXlJbml0aWFsU3RhdGUsCisgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFbGVt
ZW50U3RhdGUsCisgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFbGVtZW50RGVsaW1pdGVyU3RhdGUs
CisgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdBcnJheUZpbmlzaFN0YXRlLAorCisgICAgICAgIC8v
IFNpbmdsZSB2YWx1ZSBzdGF0ZQorICAgICAgICBJdGVyYXRpdmVQYXJzaW5nVmFsdWVTdGF0ZSwK
KworICAgICAgICBjSXRlcmF0aXZlUGFyc2luZ1N0YXRlQ291bnQKKyAgICB9OworCisgICAgLy8g
VG9rZW5zCisgICAgZW51bSBUb2tlbiB7CisgICAgICAgIExlZnRCcmFja2V0VG9rZW4gPSAwLAor
ICAgICAgICBSaWdodEJyYWNrZXRUb2tlbiwKKworICAgICAgICBMZWZ0Q3VybHlCcmFja2V0VG9r
ZW4sCisgICAgICAgIFJpZ2h0Q3VybHlCcmFja2V0VG9rZW4sCisKKyAgICAgICAgQ29tbWFUb2tl
biwKKyAgICAgICAgQ29sb25Ub2tlbiwKKworICAgICAgICBTdHJpbmdUb2tlbiwKKyAgICAgICAg
RmFsc2VUb2tlbiwKKyAgICAgICAgVHJ1ZVRva2VuLAorICAgICAgICBOdWxsVG9rZW4sCisgICAg
ICAgIE51bWJlclRva2VuLAorCisgICAgICAgIGtUb2tlbkNvdW50CisgICAgfTsKKworICAgIFJB
UElESlNPTl9GT1JDRUlOTElORSBUb2tlbiBUb2tlbml6ZShDaCBjKSB7CisKKy8vIUBjb25kIFJB
UElESlNPTl9ISURERU5fRlJPTV9ET1hZR0VOCisjZGVmaW5lIE4gTnVtYmVyVG9rZW4KKyNkZWZp
bmUgTjE2IE4sTixOLE4sTixOLE4sTixOLE4sTixOLE4sTixOLE4KKyAgICAgICAgLy8gTWFwcyBm
cm9tIEFTQ0lJIHRvIFRva2VuCisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHRv
a2VuTWFwWzI1Nl0gPSB7CisgICAgICAgICAgICBOMTYsIC8vIDAwfjBGCisgICAgICAgICAgICBO
MTYsIC8vIDEwfjFGCisgICAgICAgICAgICBOLCBOLCBTdHJpbmdUb2tlbiwgTiwgTiwgTiwgTiwg
TiwgTiwgTiwgTiwgTiwgQ29tbWFUb2tlbiwgTiwgTiwgTiwgLy8gMjB+MkYKKyAgICAgICAgICAg
IE4sIE4sIE4sIE4sIE4sIE4sIE4sIE4sIE4sIE4sIENvbG9uVG9rZW4sIE4sIE4sIE4sIE4sIE4s
IC8vIDMwfjNGCisgICAgICAgICAgICBOMTYsIC8vIDQwfjRGCisgICAgICAgICAgICBOLCBOLCBO
LCBOLCBOLCBOLCBOLCBOLCBOLCBOLCBOLCBMZWZ0QnJhY2tldFRva2VuLCBOLCBSaWdodEJyYWNr
ZXRUb2tlbiwgTiwgTiwgLy8gNTB+NUYKKyAgICAgICAgICAgIE4sIE4sIE4sIE4sIE4sIE4sIEZh
bHNlVG9rZW4sIE4sIE4sIE4sIE4sIE4sIE4sIE4sIE51bGxUb2tlbiwgTiwgLy8gNjB+NkYKKyAg
ICAgICAgICAgIE4sIE4sIE4sIE4sIFRydWVUb2tlbiwgTiwgTiwgTiwgTiwgTiwgTiwgTGVmdEN1
cmx5QnJhY2tldFRva2VuLCBOLCBSaWdodEN1cmx5QnJhY2tldFRva2VuLCBOLCBOLCAvLyA3MH43
RgorICAgICAgICAgICAgTjE2LCBOMTYsIE4xNiwgTjE2LCBOMTYsIE4xNiwgTjE2LCBOMTYgLy8g
ODB+RkYKKyAgICAgICAgfTsKKyN1bmRlZiBOCisjdW5kZWYgTjE2CisvLyFAZW5kY29uZAorICAg
ICAgICAKKyAgICAgICAgaWYgKHNpemVvZihDaCkgPT0gMSB8fCB1bnNpZ25lZChjKSA8IDI1NikK
KyAgICAgICAgICAgIHJldHVybiAoVG9rZW4pdG9rZW5NYXBbKHVuc2lnbmVkIGNoYXIpY107Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBOdW1iZXJUb2tlbjsKKyAgICB9CisKKyAg
ICBSQVBJREpTT05fRk9SQ0VJTkxJTkUgSXRlcmF0aXZlUGFyc2luZ1N0YXRlIFByZWRpY3QoSXRl
cmF0aXZlUGFyc2luZ1N0YXRlIHN0YXRlLCBUb2tlbiB0b2tlbikgeworICAgICAgICAvLyBjdXJy
ZW50IHN0YXRlIHggb25lIGxvb2thaGVhZCB0b2tlbiAtPiBuZXcgc3RhdGUKKyAgICAgICAgc3Rh
dGljIGNvbnN0IGNoYXIgR1tjSXRlcmF0aXZlUGFyc2luZ1N0YXRlQ291bnRdW2tUb2tlbkNvdW50
XSA9IHsKKyAgICAgICAgICAgIC8vIFN0YXJ0CisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgSXRlcmF0aXZlUGFyc2luZ0FycmF5SW5pdGlhbFN0YXRlLCAgLy8gTGVmdCBicmFja2V0Cisg
ICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgLy8gUmln
aHQgYnJhY2tldAorICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdPYmplY3RJbml0aWFs
U3RhdGUsIC8vIExlZnQgY3VybHkgYnJhY2tldAorICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBh
cnNpbmdFcnJvclN0YXRlLCAgICAgICAgIC8vIFJpZ2h0IGN1cmx5IGJyYWNrZXQKKyAgICAgICAg
ICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAvLyBDb21tYQorICAg
ICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgIC8vIENvbG9u
CisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ1ZhbHVlU3RhdGUsICAgICAgICAgLy8g
U3RyaW5nCisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ1ZhbHVlU3RhdGUsICAgICAg
ICAgLy8gRmFsc2UKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nVmFsdWVTdGF0ZSwg
ICAgICAgICAvLyBUcnVlCisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ1ZhbHVlU3Rh
dGUsICAgICAgICAgLy8gTnVsbAorICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdWYWx1
ZVN0YXRlICAgICAgICAgIC8vIE51bWJlcgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIC8v
IEZpbmlzaChzaW5rIHN0YXRlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEl0ZXJh
dGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0
aXZlUGFyc2luZ0Vycm9yU3RhdGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRp
dmVQYXJzaW5nRXJyb3JTdGF0ZSwKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJy
b3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJv
clN0YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9y
U3RhdGUsCisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUKKyAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAvLyBFcnJvcihzaW5rIHN0YXRlKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQ
YXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsIEl0ZXJhdGl2ZVBh
cnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwKKyAgICAgICAgICAg
ICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3Rh
dGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0
ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsCisgICAgICAgICAgICAgICAgSXRlcmF0aXZl
UGFyc2luZ0Vycm9yU3RhdGUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAvLyBPYmplY3RJ
bml0aWFsCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vy
cm9yU3RhdGUsICAgICAgICAgLy8gTGVmdCBicmFja2V0CisgICAgICAgICAgICAgICAgSXRlcmF0
aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgLy8gUmlnaHQgYnJhY2tldAorICAgICAgICAg
ICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgIC8vIExlZnQgY3VybHkg
YnJhY2tldAorICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdPYmplY3RGaW5pc2hTdGF0
ZSwgIC8vIFJpZ2h0IGN1cmx5IGJyYWNrZXQKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJz
aW5nRXJyb3JTdGF0ZSwgICAgICAgICAvLyBDb21tYQorICAgICAgICAgICAgICAgIEl0ZXJhdGl2
ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgIC8vIENvbG9uCisgICAgICAgICAgICAgICAgSXRl
cmF0aXZlUGFyc2luZ01lbWJlcktleVN0YXRlLCAgICAgLy8gU3RyaW5nCisgICAgICAgICAgICAg
ICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgLy8gRmFsc2UKKyAgICAgICAg
ICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAvLyBUcnVlCisgICAg
ICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgLy8gTnVsbAor
ICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlICAgICAgICAgIC8vIE51
bWJlcgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIC8vIE1lbWJlcktleQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAg
ICAgICAvLyBMZWZ0IGJyYWNrZXQKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJy
b3JTdGF0ZSwgICAgICAgICAgICAgLy8gUmlnaHQgYnJhY2tldAorICAgICAgICAgICAgICAgIEl0
ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgICAgICAvLyBMZWZ0IGN1cmx5IGJyYWNr
ZXQKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAg
ICAgLy8gUmlnaHQgY3VybHkgYnJhY2tldAorICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNp
bmdFcnJvclN0YXRlLCAgICAgICAgICAgICAvLyBDb21tYQorICAgICAgICAgICAgICAgIEl0ZXJh
dGl2ZVBhcnNpbmdLZXlWYWx1ZURlbGltaXRlclN0YXRlLCAvLyBDb2xvbgorICAgICAgICAgICAg
ICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgICAgICAvLyBTdHJpbmcKKyAg
ICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAgICAgLy8g
RmFsc2UKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAg
ICAgICAgLy8gVHJ1ZQorICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRl
LCAgICAgICAgICAgICAvLyBOdWxsCisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vy
cm9yU3RhdGUgICAgICAgICAgICAgIC8vIE51bWJlcgorICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgIC8vIEtleVZhbHVlRGVsaW1pdGVyCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
SXRlcmF0aXZlUGFyc2luZ0FycmF5SW5pdGlhbFN0YXRlLCAgICAgIC8vIExlZnQgYnJhY2tldChw
dXNoIE1lbWJlclZhbHVlIHN0YXRlKQorICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdF
cnJvclN0YXRlLCAgICAgICAgICAgICAvLyBSaWdodCBicmFja2V0CisgICAgICAgICAgICAgICAg
SXRlcmF0aXZlUGFyc2luZ09iamVjdEluaXRpYWxTdGF0ZSwgICAgIC8vIExlZnQgY3VybHkgYnJh
Y2tldChwdXNoIE1lbWJlclZhbHVlIHN0YXRlKQorICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBh
cnNpbmdFcnJvclN0YXRlLCAgICAgICAgICAgICAvLyBSaWdodCBjdXJseSBicmFja2V0CisgICAg
ICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgICAgIC8vIENv
bW1hCisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAg
ICAgIC8vIENvbG9uCisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ01lbWJlclZhbHVl
U3RhdGUsICAgICAgIC8vIFN0cmluZworICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdN
ZW1iZXJWYWx1ZVN0YXRlLCAgICAgICAvLyBGYWxzZQorICAgICAgICAgICAgICAgIEl0ZXJhdGl2
ZVBhcnNpbmdNZW1iZXJWYWx1ZVN0YXRlLCAgICAgICAvLyBUcnVlCisgICAgICAgICAgICAgICAg
SXRlcmF0aXZlUGFyc2luZ01lbWJlclZhbHVlU3RhdGUsICAgICAgIC8vIE51bGwKKyAgICAgICAg
ICAgICAgICBJdGVyYXRpdmVQYXJzaW5nTWVtYmVyVmFsdWVTdGF0ZSAgICAgICAgLy8gTnVtYmVy
CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgLy8gTWVtYmVyVmFsdWUKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAg
ICAgLy8gTGVmdCBicmFja2V0CisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9y
U3RhdGUsICAgICAgICAgICAgIC8vIFJpZ2h0IGJyYWNrZXQKKyAgICAgICAgICAgICAgICBJdGVy
YXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAgICAgLy8gTGVmdCBjdXJseSBicmFja2V0
CisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ09iamVjdEZpbmlzaFN0YXRlLCAgICAg
IC8vIFJpZ2h0IGN1cmx5IGJyYWNrZXQKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5n
TWVtYmVyRGVsaW1pdGVyU3RhdGUsICAgLy8gQ29tbWEKKyAgICAgICAgICAgICAgICBJdGVyYXRp
dmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAgICAgLy8gQ29sb24KKyAgICAgICAgICAgICAg
ICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAgICAgLy8gU3RyaW5nCisgICAg
ICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgICAgIC8vIEZh
bHNlCisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAg
ICAgIC8vIFRydWUKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwg
ICAgICAgICAgICAgLy8gTnVsbAorICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJv
clN0YXRlICAgICAgICAgICAgICAvLyBOdW1iZXIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAvLyBNZW1iZXJEZWxpbWl0ZXIKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJdGVy
YXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAvLyBMZWZ0IGJyYWNrZXQKKyAgICAgICAg
ICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAvLyBSaWdodCBicmFj
a2V0CisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAg
Ly8gTGVmdCBjdXJseSBicmFja2V0CisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vy
cm9yU3RhdGUsICAgICAgICAgLy8gUmlnaHQgY3VybHkgYnJhY2tldAorICAgICAgICAgICAgICAg
IEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgIC8vIENvbW1hCisgICAgICAgICAg
ICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgLy8gQ29sb24KKyAgICAg
ICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nTWVtYmVyS2V5U3RhdGUsICAgICAvLyBTdHJpbmcK
KyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAvLyBG
YWxzZQorICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAg
IC8vIFRydWUKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAg
ICAgICAvLyBOdWxsCisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUg
ICAgICAgICAgLy8gTnVtYmVyCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgLy8gT2JqZWN0
RmluaXNoKHNpbmsgc3RhdGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSXRlcmF0
aXZlUGFyc2luZ0Vycm9yU3RhdGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRp
dmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsIEl0ZXJhdGl2
ZVBhcnNpbmdFcnJvclN0YXRlLAorICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJv
clN0YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9y
U3RhdGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JT
dGF0ZSwKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZQorICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgIC8vIEFycmF5SW5pdGlhbAorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdBcnJheUluaXRpYWxTdGF0ZSwgICAgICAvLyBM
ZWZ0IGJyYWNrZXQocHVzaCBFbGVtZW50IHN0YXRlKQorICAgICAgICAgICAgICAgIEl0ZXJhdGl2
ZVBhcnNpbmdBcnJheUZpbmlzaFN0YXRlLCAgICAgICAvLyBSaWdodCBicmFja2V0CisgICAgICAg
ICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ09iamVjdEluaXRpYWxTdGF0ZSwgICAgIC8vIExlZnQg
Y3VybHkgYnJhY2tldChwdXNoIEVsZW1lbnQgc3RhdGUpCisgICAgICAgICAgICAgICAgSXRlcmF0
aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgICAgIC8vIFJpZ2h0IGN1cmx5IGJyYWNrZXQK
KyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAgICAg
Ly8gQ29tbWEKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAg
ICAgICAgICAgLy8gQ29sb24KKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRWxlbWVu
dFN0YXRlLCAgICAgICAgICAgLy8gU3RyaW5nCisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFy
c2luZ0VsZW1lbnRTdGF0ZSwgICAgICAgICAgIC8vIEZhbHNlCisgICAgICAgICAgICAgICAgSXRl
cmF0aXZlUGFyc2luZ0VsZW1lbnRTdGF0ZSwgICAgICAgICAgIC8vIFRydWUKKyAgICAgICAgICAg
ICAgICBJdGVyYXRpdmVQYXJzaW5nRWxlbWVudFN0YXRlLCAgICAgICAgICAgLy8gTnVsbAorICAg
ICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFbGVtZW50U3RhdGUgICAgICAgICAgICAvLyBO
dW1iZXIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAvLyBFbGVtZW50CisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAg
ICAgIC8vIExlZnQgYnJhY2tldAorICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdBcnJh
eUZpbmlzaFN0YXRlLCAgICAgICAvLyBSaWdodCBicmFja2V0CisgICAgICAgICAgICAgICAgSXRl
cmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgICAgIC8vIExlZnQgY3VybHkgYnJhY2tl
dAorICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgICAg
ICAvLyBSaWdodCBjdXJseSBicmFja2V0CisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2lu
Z0VsZW1lbnREZWxpbWl0ZXJTdGF0ZSwgIC8vIENvbW1hCisgICAgICAgICAgICAgICAgSXRlcmF0
aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgICAgIC8vIENvbG9uCisgICAgICAgICAgICAg
ICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgICAgIC8vIFN0cmluZworICAg
ICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgICAgICAvLyBG
YWxzZQorICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAg
ICAgICAvLyBUcnVlCisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUs
ICAgICAgICAgICAgIC8vIE51bGwKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJy
b3JTdGF0ZSAgICAgICAgICAgICAgLy8gTnVtYmVyCisgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgLy8gRWxlbWVudERlbGltaXRlcgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEl0
ZXJhdGl2ZVBhcnNpbmdBcnJheUluaXRpYWxTdGF0ZSwgICAgICAvLyBMZWZ0IGJyYWNrZXQocHVz
aCBFbGVtZW50IHN0YXRlKQorICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0
YXRlLCAgICAgICAgICAgICAvLyBSaWdodCBicmFja2V0CisgICAgICAgICAgICAgICAgSXRlcmF0
aXZlUGFyc2luZ09iamVjdEluaXRpYWxTdGF0ZSwgICAgIC8vIExlZnQgY3VybHkgYnJhY2tldChw
dXNoIEVsZW1lbnQgc3RhdGUpCisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9y
U3RhdGUsICAgICAgICAgICAgIC8vIFJpZ2h0IGN1cmx5IGJyYWNrZXQKKyAgICAgICAgICAgICAg
ICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAgICAgLy8gQ29tbWEKKyAgICAg
ICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAgICAgLy8gQ29s
b24KKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRWxlbWVudFN0YXRlLCAgICAgICAg
ICAgLy8gU3RyaW5nCisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0VsZW1lbnRTdGF0
ZSwgICAgICAgICAgIC8vIEZhbHNlCisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vs
ZW1lbnRTdGF0ZSwgICAgICAgICAgIC8vIFRydWUKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQ
YXJzaW5nRWxlbWVudFN0YXRlLCAgICAgICAgICAgLy8gTnVsbAorICAgICAgICAgICAgICAgIEl0
ZXJhdGl2ZVBhcnNpbmdFbGVtZW50U3RhdGUgICAgICAgICAgICAvLyBOdW1iZXIKKyAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAvLyBBcnJheUZpbmlzaChzaW5rIHN0YXRlKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRp
dmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsIEl0ZXJhdGl2
ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwKKyAgICAgICAg
ICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9y
U3RhdGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JT
dGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsCisgICAgICAgICAgICAgICAgSXRlcmF0
aXZlUGFyc2luZ0Vycm9yU3RhdGUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAvLyBTaW5n
bGUgVmFsdWUgKHNpbmsgc3RhdGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSXRl
cmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVy
YXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsIEl0ZXJh
dGl2ZVBhcnNpbmdFcnJvclN0YXRlLAorICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdF
cnJvclN0YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vy
cm9yU3RhdGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJy
b3JTdGF0ZSwKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZQorICAg
ICAgICAgICAgfQorICAgICAgICB9OyAvLyBFbmQgb2YgRworCisgICAgICAgIHJldHVybiAoSXRl
cmF0aXZlUGFyc2luZ1N0YXRlKUdbc3RhdGVdW3Rva2VuXTsKKyAgICB9CisKKyAgICAvLyBNYWtl
IGFuIGFkdmFuY2UgaW4gdGhlIHRva2VuIHN0cmVhbSBhbmQgc3RhdGUgYmFzZWQgb24gdGhlIGNh
bmRpZGF0ZSBkZXN0aW5hdGlvbiBzdGF0ZSB3aGljaCB3YXMgcmV0dXJuZWQgYnkgVHJhbnNpdCgp
LgorICAgIC8vIE1heSByZXR1cm4gYSBuZXcgc3RhdGUgb24gc3RhdGUgcG9wLgorICAgIHRlbXBs
YXRlIDx1bnNpZ25lZCBwYXJzZUZsYWdzLCB0eXBlbmFtZSBJbnB1dFN0cmVhbSwgdHlwZW5hbWUg
SGFuZGxlcj4KKyAgICBSQVBJREpTT05fRk9SQ0VJTkxJTkUgSXRlcmF0aXZlUGFyc2luZ1N0YXRl
IFRyYW5zaXQoSXRlcmF0aXZlUGFyc2luZ1N0YXRlIHNyYywgVG9rZW4gdG9rZW4sIEl0ZXJhdGl2
ZVBhcnNpbmdTdGF0ZSBkc3QsIElucHV0U3RyZWFtJiBpcywgSGFuZGxlciYgaGFuZGxlcikgewor
ICAgICAgICBzd2l0Y2ggKGRzdCkgeworICAgICAgICBjYXNlIEl0ZXJhdGl2ZVBhcnNpbmdTdGFy
dFN0YXRlOgorICAgICAgICAgICAgUkFQSURKU09OX0FTU0VSVChmYWxzZSk7CisgICAgICAgICAg
ICByZXR1cm4gSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGU7CisKKyAgICAgICAgY2FzZSBJdGVy
YXRpdmVQYXJzaW5nRmluaXNoU3RhdGU6CisgICAgICAgICAgICByZXR1cm4gZHN0OworCisgICAg
ICAgIGNhc2UgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGU6CisgICAgICAgICAgICByZXR1cm4g
ZHN0OworCisgICAgICAgIGNhc2UgSXRlcmF0aXZlUGFyc2luZ09iamVjdEluaXRpYWxTdGF0ZToK
KyAgICAgICAgY2FzZSBJdGVyYXRpdmVQYXJzaW5nQXJyYXlJbml0aWFsU3RhdGU6CisgICAgICAg
IHsKKyAgICAgICAgICAgIC8vIFB1c2ggdGhlIHN0YXRlKEVsZW1lbnQgb3IgTWVtZWJlclZhbHVl
KSBpZiB3ZSBhcmUgbmVzdGVkIGluIGFub3RoZXIgYXJyYXkgb3IgdmFsdWUgb2YgbWVtYmVyLgor
ICAgICAgICAgICAgLy8gSW4gdGhpcyB3YXkgd2UgY2FuIGdldCB0aGUgY29ycmVjdCBzdGF0ZSBv
biBPYmplY3RGaW5pc2ggb3IgQXJyYXlGaW5pc2ggYnkgZnJhbWUgcG9wLgorICAgICAgICAgICAg
SXRlcmF0aXZlUGFyc2luZ1N0YXRlIG4gPSBzcmM7CisgICAgICAgICAgICBpZiAoc3JjID09IEl0
ZXJhdGl2ZVBhcnNpbmdBcnJheUluaXRpYWxTdGF0ZSB8fCBzcmMgPT0gSXRlcmF0aXZlUGFyc2lu
Z0VsZW1lbnREZWxpbWl0ZXJTdGF0ZSkKKyAgICAgICAgICAgICAgICBuID0gSXRlcmF0aXZlUGFy
c2luZ0VsZW1lbnRTdGF0ZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHNyYyA9PSBJdGVyYXRpdmVQ
YXJzaW5nS2V5VmFsdWVEZWxpbWl0ZXJTdGF0ZSkKKyAgICAgICAgICAgICAgICBuID0gSXRlcmF0
aXZlUGFyc2luZ01lbWJlclZhbHVlU3RhdGU7CisgICAgICAgICAgICAvLyBQdXNoIGN1cnJlbnQg
c3RhdGUuCisgICAgICAgICAgICAqc3RhY2tfLnRlbXBsYXRlIFB1c2g8U2l6ZVR5cGU+KDEpID0g
bjsKKyAgICAgICAgICAgIC8vIEluaXRpYWxpemUgYW5kIHB1c2ggdGhlIG1lbWJlci9lbGVtZW50
IGNvdW50LgorICAgICAgICAgICAgKnN0YWNrXy50ZW1wbGF0ZSBQdXNoPFNpemVUeXBlPigxKSA9
IDA7CisgICAgICAgICAgICAvLyBDYWxsIGhhbmRsZXIKKyAgICAgICAgICAgIGJvb2wgaHIgPSAo
ZHN0ID09IEl0ZXJhdGl2ZVBhcnNpbmdPYmplY3RJbml0aWFsU3RhdGUpID8gaGFuZGxlci5TdGFy
dE9iamVjdCgpIDogaGFuZGxlci5TdGFydEFycmF5KCk7CisgICAgICAgICAgICAvLyBPbiBoYW5k
bGVyIHNob3J0IGNpcmN1aXRzIHRoZSBwYXJzaW5nLgorICAgICAgICAgICAgaWYgKCFocikgewor
ICAgICAgICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUl9OT1JFVFVSTihrUGFyc2VFcnJv
clRlcm1pbmF0aW9uLCBpcy5UZWxsKCkpOworICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRp
dmVQYXJzaW5nRXJyb3JTdGF0ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgIGlzLlRha2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZHN0Owor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgY2FzZSBJdGVyYXRpdmVQYXJzaW5n
TWVtYmVyS2V5U3RhdGU6CisgICAgICAgICAgICBQYXJzZVN0cmluZzxwYXJzZUZsYWdzPihpcywg
aGFuZGxlciwgdHJ1ZSk7CisgICAgICAgICAgICBpZiAoSGFzUGFyc2VFcnJvcigpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gZHN0OworCisgICAgICAgIGNhc2UgSXRlcmF0
aXZlUGFyc2luZ0tleVZhbHVlRGVsaW1pdGVyU3RhdGU6CisgICAgICAgICAgICBpZiAodG9rZW4g
PT0gQ29sb25Ub2tlbikgeworICAgICAgICAgICAgICAgIGlzLlRha2UoKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZHN0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHJldHVybiBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZTsKKworICAgICAgICBj
YXNlIEl0ZXJhdGl2ZVBhcnNpbmdNZW1iZXJWYWx1ZVN0YXRlOgorICAgICAgICAgICAgLy8gTXVz
dCBiZSBub24tY29tcG91bmQgdmFsdWUuIE9yIGl0IHdvdWxkIGJlIE9iamVjdEluaXRpYWwgb3Ig
QXJyYXlJbml0aWFsIHN0YXRlLgorICAgICAgICAgICAgUGFyc2VWYWx1ZTxwYXJzZUZsYWdzPihp
cywgaGFuZGxlcik7CisgICAgICAgICAgICBpZiAoSGFzUGFyc2VFcnJvcigpKSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgcmV0dXJuIGRzdDsKKworICAgICAgICBjYXNlIEl0ZXJhdGl2ZVBhcnNp
bmdFbGVtZW50U3RhdGU6CisgICAgICAgICAgICAvLyBNdXN0IGJlIG5vbi1jb21wb3VuZCB2YWx1
ZS4gT3IgaXQgd291bGQgYmUgT2JqZWN0SW5pdGlhbCBvciBBcnJheUluaXRpYWwgc3RhdGUuCisg
ICAgICAgICAgICBQYXJzZVZhbHVlPHBhcnNlRmxhZ3M+KGlzLCBoYW5kbGVyKTsKKyAgICAgICAg
ICAgIGlmIChIYXNQYXJzZUVycm9yKCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0
aXZlUGFyc2luZ0Vycm9yU3RhdGU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4g
ZHN0OworCisgICAgICAgIGNhc2UgSXRlcmF0aXZlUGFyc2luZ01lbWJlckRlbGltaXRlclN0YXRl
OgorICAgICAgICBjYXNlIEl0ZXJhdGl2ZVBhcnNpbmdFbGVtZW50RGVsaW1pdGVyU3RhdGU6Cisg
ICAgICAgICAgICBpcy5UYWtlKCk7CisgICAgICAgICAgICAvLyBVcGRhdGUgbWVtYmVyL2VsZW1l
bnQgY291bnQuCisgICAgICAgICAgICAqc3RhY2tfLnRlbXBsYXRlIFRvcDxTaXplVHlwZT4oKSA9
ICpzdGFja18udGVtcGxhdGUgVG9wPFNpemVUeXBlPigpICsgMTsKKyAgICAgICAgICAgIHJldHVy
biBkc3Q7CisKKyAgICAgICAgY2FzZSBJdGVyYXRpdmVQYXJzaW5nT2JqZWN0RmluaXNoU3RhdGU6
CisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIEdldCBtZW1iZXIgY291bnQuCisgICAgICAgICAg
ICBTaXplVHlwZSBjID0gKnN0YWNrXy50ZW1wbGF0ZSBQb3A8U2l6ZVR5cGU+KDEpOworICAgICAg
ICAgICAgLy8gSWYgdGhlIG9iamVjdCBpcyBub3QgZW1wdHksIGNvdW50IHRoZSBsYXN0IG1lbWJl
ci4KKyAgICAgICAgICAgIGlmIChzcmMgPT0gSXRlcmF0aXZlUGFyc2luZ01lbWJlclZhbHVlU3Rh
dGUpCisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgLy8gUmVzdG9yZSB0aGUgc3Rh
dGUuCisgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nU3RhdGUgbiA9IHN0YXRpY19jYXN0PEl0
ZXJhdGl2ZVBhcnNpbmdTdGF0ZT4oKnN0YWNrXy50ZW1wbGF0ZSBQb3A8U2l6ZVR5cGU+KDEpKTsK
KyAgICAgICAgICAgIC8vIFRyYW5zaXQgdG8gRmluaXNoIHN0YXRlIGlmIHRoaXMgaXMgdGhlIHRv
cG1vc3Qgc2NvcGUuCisgICAgICAgICAgICBpZiAobiA9PSBJdGVyYXRpdmVQYXJzaW5nU3RhcnRT
dGF0ZSkKKyAgICAgICAgICAgICAgICBuID0gSXRlcmF0aXZlUGFyc2luZ0ZpbmlzaFN0YXRlOwor
ICAgICAgICAgICAgLy8gQ2FsbCBoYW5kbGVyCisgICAgICAgICAgICBib29sIGhyID0gaGFuZGxl
ci5FbmRPYmplY3QoYyk7CisgICAgICAgICAgICAvLyBPbiBoYW5kbGVyIHNob3J0IGNpcmN1aXRz
IHRoZSBwYXJzaW5nLgorICAgICAgICAgICAgaWYgKCFocikgeworICAgICAgICAgICAgICAgIFJB
UElESlNPTl9QQVJTRV9FUlJPUl9OT1JFVFVSTihrUGFyc2VFcnJvclRlcm1pbmF0aW9uLCBpcy5U
ZWxsKCkpOworICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlz
LlRha2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIGNhc2UgSXRlcmF0aXZlUGFyc2luZ0FycmF5RmluaXNoU3RhdGU6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIC8vIEdldCBlbGVtZW50IGNvdW50LgorICAgICAgICAgICAg
U2l6ZVR5cGUgYyA9ICpzdGFja18udGVtcGxhdGUgUG9wPFNpemVUeXBlPigxKTsKKyAgICAgICAg
ICAgIC8vIElmIHRoZSBhcnJheSBpcyBub3QgZW1wdHksIGNvdW50IHRoZSBsYXN0IGVsZW1lbnQu
CisgICAgICAgICAgICBpZiAoc3JjID09IEl0ZXJhdGl2ZVBhcnNpbmdFbGVtZW50U3RhdGUpCisg
ICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgLy8gUmVzdG9yZSB0aGUgc3RhdGUuCisg
ICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nU3RhdGUgbiA9IHN0YXRpY19jYXN0PEl0ZXJhdGl2
ZVBhcnNpbmdTdGF0ZT4oKnN0YWNrXy50ZW1wbGF0ZSBQb3A8U2l6ZVR5cGU+KDEpKTsKKyAgICAg
ICAgICAgIC8vIFRyYW5zaXQgdG8gRmluaXNoIHN0YXRlIGlmIHRoaXMgaXMgdGhlIHRvcG1vc3Qg
c2NvcGUuCisgICAgICAgICAgICBpZiAobiA9PSBJdGVyYXRpdmVQYXJzaW5nU3RhcnRTdGF0ZSkK
KyAgICAgICAgICAgICAgICBuID0gSXRlcmF0aXZlUGFyc2luZ0ZpbmlzaFN0YXRlOworICAgICAg
ICAgICAgLy8gQ2FsbCBoYW5kbGVyCisgICAgICAgICAgICBib29sIGhyID0gaGFuZGxlci5FbmRB
cnJheShjKTsKKyAgICAgICAgICAgIC8vIE9uIGhhbmRsZXIgc2hvcnQgY2lyY3VpdHMgdGhlIHBh
cnNpbmcuCisgICAgICAgICAgICBpZiAoIWhyKSB7CisgICAgICAgICAgICAgICAgUkFQSURKU09O
X1BBUlNFX0VSUk9SX05PUkVUVVJOKGtQYXJzZUVycm9yVGVybWluYXRpb24sIGlzLlRlbGwoKSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaXMuVGFrZSgp
OworICAgICAgICAgICAgICAgIHJldHVybiBuOworICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgY2FzZSBJdGVyYXRpdmVQYXJzaW5nVmFsdWVTdGF0ZToKKyAgICAgICAgICAgIC8v
IE11c3QgYmUgbm9uLWNvbXBvdW5kIHZhbHVlLiBPciBpdCB3b3VsZCBiZSBPYmplY3RJbml0aWFs
IG9yIEFycmF5SW5pdGlhbCBzdGF0ZS4KKyAgICAgICAgICAgIFBhcnNlVmFsdWU8cGFyc2VGbGFn
cz4oaXMsIGhhbmRsZXIpOworICAgICAgICAgICAgaWYgKEhhc1BhcnNlRXJyb3IoKSkgeworICAg
ICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpdmVQYXJzaW5nRmluaXNoU3RhdGU7CisK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJBUElESlNPTl9BU1NFUlQoZmFsc2UpOwor
ICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlOworICAgICAgICB9
CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0U3RyZWFtPgorICAgIHZvaWQg
SGFuZGxlRXJyb3IoSXRlcmF0aXZlUGFyc2luZ1N0YXRlIHNyYywgSW5wdXRTdHJlYW0mIGlzKSB7
CisgICAgICAgIGlmIChIYXNQYXJzZUVycm9yKCkpIHsKKyAgICAgICAgICAgIC8vIEVycm9yIGZs
YWcgaGFzIGJlZW4gc2V0LgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBzd2l0Y2ggKHNyYykgeworICAgICAgICBjYXNlIEl0ZXJhdGl2ZVBhcnNpbmdT
dGFydFN0YXRlOiAgICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUihrUGFyc2VFcnJvckRv
Y3VtZW50RW1wdHksIGlzLlRlbGwoKSk7CisgICAgICAgIGNhc2UgSXRlcmF0aXZlUGFyc2luZ0Zp
bmlzaFN0YXRlOiAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SKGtQYXJzZUVycm9yRG9j
dW1lbnRSb290Tm90U2luZ3VsYXIsIGlzLlRlbGwoKSk7CisgICAgICAgIGNhc2UgSXRlcmF0aXZl
UGFyc2luZ09iamVjdEluaXRpYWxTdGF0ZToKKyAgICAgICAgY2FzZSBJdGVyYXRpdmVQYXJzaW5n
TWVtYmVyRGVsaW1pdGVyU3RhdGU6ICBSQVBJREpTT05fUEFSU0VfRVJST1Ioa1BhcnNlRXJyb3JP
YmplY3RNaXNzTmFtZSwgaXMuVGVsbCgpKTsKKyAgICAgICAgY2FzZSBJdGVyYXRpdmVQYXJzaW5n
TWVtYmVyS2V5U3RhdGU6ICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Ioa1BhcnNlRXJyb3JP
YmplY3RNaXNzQ29sb24sIGlzLlRlbGwoKSk7CisgICAgICAgIGNhc2UgSXRlcmF0aXZlUGFyc2lu
Z01lbWJlclZhbHVlU3RhdGU6ICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SKGtQYXJzZUVycm9y
T2JqZWN0TWlzc0NvbW1hT3JDdXJseUJyYWNrZXQsIGlzLlRlbGwoKSk7CisgICAgICAgIGNhc2Ug
SXRlcmF0aXZlUGFyc2luZ0VsZW1lbnRTdGF0ZTogICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VS
Uk9SKGtQYXJzZUVycm9yQXJyYXlNaXNzQ29tbWFPclNxdWFyZUJyYWNrZXQsIGlzLlRlbGwoKSk7
CisgICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkFQ
SURKU09OX1BBUlNFX0VSUk9SKGtQYXJzZUVycm9yVW5zcGVjaWZpY1N5bnRheEVycm9yLCBpcy5U
ZWxsKCkpOworICAgICAgICB9ICAgICAgIAorICAgIH0KKworICAgIHRlbXBsYXRlIDx1bnNpZ25l
ZCBwYXJzZUZsYWdzLCB0eXBlbmFtZSBJbnB1dFN0cmVhbSwgdHlwZW5hbWUgSGFuZGxlcj4KKyAg
ICBQYXJzZVJlc3VsdCBJdGVyYXRpdmVQYXJzZShJbnB1dFN0cmVhbSYgaXMsIEhhbmRsZXImIGhh
bmRsZXIpIHsKKyAgICAgICAgcGFyc2VSZXN1bHRfLkNsZWFyKCk7CisgICAgICAgIENsZWFyU3Rh
Y2tPbkV4aXQgc2NvcGUoKnRoaXMpOworICAgICAgICBJdGVyYXRpdmVQYXJzaW5nU3RhdGUgc3Rh
dGUgPSBJdGVyYXRpdmVQYXJzaW5nU3RhcnRTdGF0ZTsKKworICAgICAgICBTa2lwV2hpdGVzcGFj
ZShpcyk7CisgICAgICAgIHdoaWxlIChpcy5QZWVrKCkgIT0gJ1wwJykgeworICAgICAgICAgICAg
VG9rZW4gdCA9IFRva2VuaXplKGlzLlBlZWsoKSk7CisgICAgICAgICAgICBJdGVyYXRpdmVQYXJz
aW5nU3RhdGUgbiA9IFByZWRpY3Qoc3RhdGUsIHQpOworICAgICAgICAgICAgSXRlcmF0aXZlUGFy
c2luZ1N0YXRlIGQgPSBUcmFuc2l0PHBhcnNlRmxhZ3M+KHN0YXRlLCB0LCBuLCBpcywgaGFuZGxl
cik7CisKKyAgICAgICAgICAgIGlmIChkID09IEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlKSB7
CisgICAgICAgICAgICAgICAgSGFuZGxlRXJyb3Ioc3RhdGUsIGlzKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3RhdGUgPSBkOworCisgICAg
ICAgICAgICAvLyBEbyBub3QgZnVydGhlciBjb25zdW1lIHN0cmVhbXMgaWYgYSByb290IEpTT04g
aGFzIGJlZW4gcGFyc2VkLgorICAgICAgICAgICAgaWYgKChwYXJzZUZsYWdzICYga1BhcnNlU3Rv
cFdoZW5Eb25lRmxhZykgJiYgc3RhdGUgPT0gSXRlcmF0aXZlUGFyc2luZ0ZpbmlzaFN0YXRlKQor
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBTa2lwV2hpdGVzcGFjZShpcyk7
CisgICAgICAgIH0KKworICAgICAgICAvLyBIYW5kbGUgdGhlIGVuZCBvZiBmaWxlLgorICAgICAg
ICBpZiAoc3RhdGUgIT0gSXRlcmF0aXZlUGFyc2luZ0ZpbmlzaFN0YXRlKQorICAgICAgICAgICAg
SGFuZGxlRXJyb3Ioc3RhdGUsIGlzKTsKKworICAgICAgICByZXR1cm4gcGFyc2VSZXN1bHRfOwor
ICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBzaXplX3Qga0RlZmF1bHRTdGFja0NhcGFjaXR5ID0g
MjU2OyAgICAvLyE8IERlZmF1bHQgc3RhY2sgY2FwYWNpdHkgaW4gYnl0ZXMgZm9yIHN0b3Jpbmcg
YSBzaW5nbGUgZGVjb2RlZCBzdHJpbmcuCisgICAgaW50ZXJuYWw6OlN0YWNrPFN0YWNrQWxsb2Nh
dG9yPiBzdGFja187ICAvLyE8IEEgc3RhY2sgZm9yIHN0b3JpbmcgZGVjb2RlZCBzdHJpbmcgdGVt
cG9yYXJpbHkgZHVyaW5nIG5vbi1kZXN0cnVjdGl2ZSBwYXJzaW5nLgorICAgIFBhcnNlUmVzdWx0
IHBhcnNlUmVzdWx0XzsKK307IC8vIGNsYXNzIEdlbmVyaWNSZWFkZXIKKworLy8hIFJlYWRlciB3
aXRoIFVURjggZW5jb2RpbmcgYW5kIGRlZmF1bHQgYWxsb2NhdG9yLgordHlwZWRlZiBHZW5lcmlj
UmVhZGVyPFVURjg8PiwgVVRGODw+ID4gUmVhZGVyOworCitSQVBJREpTT05fTkFNRVNQQUNFX0VO
RAorCisjaWZkZWYgX19HTlVDX18KK1JBUElESlNPTl9ESUFHX1BPUAorI2VuZGlmCisKKyNpZmRl
ZiBfTVNDX1ZFUgorUkFQSURKU09OX0RJQUdfUE9QCisjZW5kaWYKKworI2VuZGlmIC8vIFJBUElE
SlNPTl9SRUFERVJfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90
aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vc3RyaW5nYnVmZmVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5
L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9zdHJpbmdidWZmZXIuaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRq
c29uL2luY2x1ZGUvcmFwaWRqc29uL3N0cmluZ2J1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsOTkgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSBNaWxvIFlpcAorLy8KKy8vIFBlcm1p
c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9i
dGFpbmluZyBhIGNvcHkKKy8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1l
bnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCisvLyBpbiB0aGUgU29mdHdh
cmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUg
cmlnaHRzCisvLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1
dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCisvLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBh
bmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy8vIGZ1cm5pc2hl
ZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisvLworLy8g
VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hh
bGwgYmUgaW5jbHVkZWQgaW4KKy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMg
b2YgdGhlIFNvZnR3YXJlLgorLy8KKy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMi
LCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisvLyBJTVBMSUVELCBJ
TkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSwKKy8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5H
RU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9M
REVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorLy8gTElBQklM
SVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0Us
IEFSSVNJTkcgRlJPTSwKKy8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX
QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KKy8vIFRIRSBTT0ZUV0FSRS4KKwor
I2lmbmRlZiBSQVBJREpTT05fU1RSSU5HQlVGRkVSX0hfCisjZGVmaW5lIFJBUElESlNPTl9TVFJJ
TkdCVUZGRVJfSF8KKworI2luY2x1ZGUgInJhcGlkanNvbi5oIgorCisjaWYgUkFQSURKU09OX0hB
U19DWFgxMV9SVkFMVUVfUkVGUworI2luY2x1ZGUgPHV0aWxpdHk+IC8vIHN0ZDo6bW92ZQorI2Vu
ZGlmCisKKyNpbmNsdWRlICJpbnRlcm5hbC9zdGFjay5oIgorCitSQVBJREpTT05fTkFNRVNQQUNF
X0JFR0lOCisKKy8vISBSZXByZXNlbnRzIGFuIGluLW1lbW9yeSBvdXRwdXQgc3RyZWFtLgorLyoh
CisgICAgXHRwYXJhbSBFbmNvZGluZyBFbmNvZGluZyBvZiB0aGUgc3RyZWFtLgorICAgIFx0cGFy
YW0gQWxsb2NhdG9yIHR5cGUgZm9yIGFsbG9jYXRpbmcgbWVtb3J5IGJ1ZmZlci4KKyAgICBcbm90
ZSBpbXBsZW1lbnRzIFN0cmVhbSBjb25jZXB0CisqLwordGVtcGxhdGUgPHR5cGVuYW1lIEVuY29k
aW5nLCB0eXBlbmFtZSBBbGxvY2F0b3IgPSBDcnRBbGxvY2F0b3I+CitjbGFzcyBHZW5lcmljU3Ry
aW5nQnVmZmVyIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHR5cGVuYW1lIEVuY29kaW5nOjpDaCBD
aDsKKworICAgIEdlbmVyaWNTdHJpbmdCdWZmZXIoQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSAwLCBz
aXplX3QgY2FwYWNpdHkgPSBrRGVmYXVsdENhcGFjaXR5KSA6IHN0YWNrXyhhbGxvY2F0b3IsIGNh
cGFjaXR5KSB7fQorCisjaWYgUkFQSURKU09OX0hBU19DWFgxMV9SVkFMVUVfUkVGUworICAgIEdl
bmVyaWNTdHJpbmdCdWZmZXIoR2VuZXJpY1N0cmluZ0J1ZmZlciYmIHJocykgOiBzdGFja18oc3Rk
Ojptb3ZlKHJocy5zdGFja18pKSB7fQorICAgIEdlbmVyaWNTdHJpbmdCdWZmZXImIG9wZXJhdG9y
PShHZW5lcmljU3RyaW5nQnVmZmVyJiYgcmhzKSB7CisgICAgICAgIGlmICgmcmhzICE9IHRoaXMp
CisgICAgICAgICAgICBzdGFja18gPSBzdGQ6Om1vdmUocmhzLnN0YWNrXyk7CisgICAgICAgIHJl
dHVybiAqdGhpczsKKyAgICB9CisjZW5kaWYKKworICAgIHZvaWQgUHV0KENoIGMpIHsgKnN0YWNr
Xy50ZW1wbGF0ZSBQdXNoPENoPigpID0gYzsgfQorICAgIHZvaWQgRmx1c2goKSB7fQorCisgICAg
dm9pZCBDbGVhcigpIHsgc3RhY2tfLkNsZWFyKCk7IH0KKyAgICB2b2lkIFNocmlua1RvRml0KCkg
eworICAgICAgICAvLyBQdXNoIGFuZCBwb3AgYSBudWxsIHRlcm1pbmF0b3IuIFRoaXMgaXMgc2Fm
ZS4KKyAgICAgICAgKnN0YWNrXy50ZW1wbGF0ZSBQdXNoPENoPigpID0gJ1wwJzsKKyAgICAgICAg
c3RhY2tfLlNocmlua1RvRml0KCk7CisgICAgICAgIHN0YWNrXy50ZW1wbGF0ZSBQb3A8Q2g+KDEp
OworICAgIH0KKyAgICBDaCogUHVzaChzaXplX3QgY291bnQpIHsgcmV0dXJuIHN0YWNrXy50ZW1w
bGF0ZSBQdXNoPENoPihjb3VudCk7IH0KKyAgICB2b2lkIFBvcChzaXplX3QgY291bnQpIHsgc3Rh
Y2tfLnRlbXBsYXRlIFBvcDxDaD4oY291bnQpOyB9CisKKyAgICBjb25zdCBDaCogR2V0U3RyaW5n
KCkgY29uc3QgeworICAgICAgICAvLyBQdXNoIGFuZCBwb3AgYSBudWxsIHRlcm1pbmF0b3IuIFRo
aXMgaXMgc2FmZS4KKyAgICAgICAgKnN0YWNrXy50ZW1wbGF0ZSBQdXNoPENoPigpID0gJ1wwJzsK
KyAgICAgICAgc3RhY2tfLnRlbXBsYXRlIFBvcDxDaD4oMSk7CisKKyAgICAgICAgcmV0dXJuIHN0
YWNrXy50ZW1wbGF0ZSBCb3R0b208Q2g+KCk7CisgICAgfQorCisgICAgc2l6ZV90IEdldFNpemUo
KSBjb25zdCB7IHJldHVybiBzdGFja18uR2V0U2l6ZSgpOyB9CisKKyAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IGtEZWZhdWx0Q2FwYWNpdHkgPSAyNTY7CisgICAgbXV0YWJsZSBpbnRlcm5hbDo6U3Rh
Y2s8QWxsb2NhdG9yPiBzdGFja187CisKK3ByaXZhdGU6CisgICAgLy8gUHJvaGliaXQgY29weSBj
b25zdHJ1Y3RvciAmIGFzc2lnbm1lbnQgb3BlcmF0b3IuCisgICAgR2VuZXJpY1N0cmluZ0J1ZmZl
cihjb25zdCBHZW5lcmljU3RyaW5nQnVmZmVyJik7CisgICAgR2VuZXJpY1N0cmluZ0J1ZmZlciYg
b3BlcmF0b3I9KGNvbnN0IEdlbmVyaWNTdHJpbmdCdWZmZXImKTsKK307CisKKy8vISBTdHJpbmcg
YnVmZmVyIHdpdGggVVRGOCBlbmNvZGluZwordHlwZWRlZiBHZW5lcmljU3RyaW5nQnVmZmVyPFVU
Rjg8PiA+IFN0cmluZ0J1ZmZlcjsKKworLy8hIEltcGxlbWVudCBzcGVjaWFsaXplZCB2ZXJzaW9u
IG9mIFB1dE4oKSB3aXRoIG1lbXNldCgpIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuCit0ZW1wbGF0
ZTw+CitpbmxpbmUgdm9pZCBQdXROKEdlbmVyaWNTdHJpbmdCdWZmZXI8VVRGODw+ID4mIHN0cmVh
bSwgY2hhciBjLCBzaXplX3QgbikgeworICAgIHN0ZDo6bWVtc2V0KHN0cmVhbS5zdGFja18uUHVz
aDxjaGFyPihuKSwgYywgbiAqIHNpemVvZihjKSk7Cit9CisKK1JBUElESlNPTl9OQU1FU1BBQ0Vf
RU5ECisKKyNlbmRpZiAvLyBSQVBJREpTT05fU1RSSU5HQlVGRkVSX0hfCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUv
cmFwaWRqc29uL3dyaXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vd3JpdGVy
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Ro
aXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi93cml0ZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDM5MSBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExIE1pbG8gWWlwCisv
LworLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu
eSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np
YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKKy8vIGlu
IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p
dGF0aW9uIHRoZSByaWdodHMKKy8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz
aCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKKy8vIGNvcGllcyBvZiB0aGUg
U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwor
Ly8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
czoKKy8vCisvLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u
IG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlh
bCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisvLworLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJ
REVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKy8v
IElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZLAorLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5E
IE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisvLyBBVVRIT1JTIE9SIENP
UFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVS
CisvLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9S
IE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lU
SCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgorLy8gVEhFIFNP
RlRXQVJFLgorCisjaWZuZGVmIFJBUElESlNPTl9XUklURVJfSF8KKyNkZWZpbmUgUkFQSURKU09O
X1dSSVRFUl9IXworCisjaW5jbHVkZSAicmFwaWRqc29uLmgiCisjaW5jbHVkZSAiaW50ZXJuYWwv
c3RhY2suaCIKKyNpbmNsdWRlICJpbnRlcm5hbC9zdHJmdW5jLmgiCisjaW5jbHVkZSAiaW50ZXJu
YWwvZHRvYS5oIgorI2luY2x1ZGUgImludGVybmFsL2l0b2EuaCIKKyNpbmNsdWRlICJzdHJpbmdi
dWZmZXIuaCIKKyNpbmNsdWRlIDxuZXc+ICAgICAgLy8gcGxhY2VtZW50IG5ldworCisjaWZkZWYg
X01TQ19WRVIKK1JBUElESlNPTl9ESUFHX1BVU0gKK1JBUElESlNPTl9ESUFHX09GRig0MTI3KSAv
LyBjb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50CisjZW5kaWYKKworUkFQSURKU09O
X05BTUVTUEFDRV9CRUdJTgorCisvLyEgSlNPTiB3cml0ZXIKKy8qISBXcml0ZXIgaW1wbGVtZW50
cyB0aGUgY29uY2VwdCBIYW5kbGVyLgorICAgIEl0IGdlbmVyYXRlcyBKU09OIHRleHQgYnkgZXZl
bnRzIHRvIGFuIG91dHB1dCBvcy4KKworICAgIFVzZXIgbWF5IHByb2dyYW1tYXRpY2FsbHkgY2Fs
bHMgdGhlIGZ1bmN0aW9ucyBvZiBhIHdyaXRlciB0byBnZW5lcmF0ZSBKU09OIHRleHQuCisKKyAg
ICBPbiB0aGUgb3RoZXIgc2lkZSwgYSB3cml0ZXIgY2FuIGFsc28gYmUgcGFzc2VkIHRvIG9iamVj
dHMgdGhhdCBnZW5lcmF0ZXMgZXZlbnRzLCAKKworICAgIGZvciBleGFtcGxlIFJlYWRlcjo6UGFy
c2UoKSBhbmQgRG9jdW1lbnQ6OkFjY2VwdCgpLgorCisgICAgXHRwYXJhbSBPdXRwdXRTdHJlYW0g
VHlwZSBvZiBvdXRwdXQgc3RyZWFtLgorICAgIFx0cGFyYW0gU291cmNlRW5jb2RpbmcgRW5jb2Rp
bmcgb2Ygc291cmNlIHN0cmluZy4KKyAgICBcdHBhcmFtIFRhcmdldEVuY29kaW5nIEVuY29kaW5n
IG9mIG91dHB1dCBzdHJlYW0uCisgICAgXHRwYXJhbSBTdGFja0FsbG9jYXRvciBUeXBlIG9mIGFs
bG9jYXRvciBmb3IgYWxsb2NhdGluZyBtZW1vcnkgb2Ygc3RhY2suCisgICAgXG5vdGUgaW1wbGVt
ZW50cyBIYW5kbGVyIGNvbmNlcHQKKyovCit0ZW1wbGF0ZTx0eXBlbmFtZSBPdXRwdXRTdHJlYW0s
IHR5cGVuYW1lIFNvdXJjZUVuY29kaW5nID0gVVRGODw+LCB0eXBlbmFtZSBUYXJnZXRFbmNvZGlu
ZyA9IFVURjg8PiwgdHlwZW5hbWUgU3RhY2tBbGxvY2F0b3IgPSBDcnRBbGxvY2F0b3I+CitjbGFz
cyBXcml0ZXIgeworcHVibGljOgorICAgIHR5cGVkZWYgdHlwZW5hbWUgU291cmNlRW5jb2Rpbmc6
OkNoIENoOworCisgICAgLy8hIENvbnN0cnVjdG9yCisgICAgLyohIFxwYXJhbSBvcyBPdXRwdXQg
c3RyZWFtLgorICAgICAgICBccGFyYW0gc3RhY2tBbGxvY2F0b3IgVXNlciBzdXBwbGllZCBhbGxv
Y2F0b3IuIElmIGl0IGlzIG51bGwsIGl0IHdpbGwgY3JlYXRlIGEgcHJpdmF0ZSBvbmUuCisgICAg
ICAgIFxwYXJhbSBsZXZlbERlcHRoIEluaXRpYWwgY2FwYWNpdHkgb2Ygc3RhY2suCisgICAgKi8K
KyAgICBleHBsaWNpdAorICAgIFdyaXRlcihPdXRwdXRTdHJlYW0mIG9zLCBTdGFja0FsbG9jYXRv
ciogc3RhY2tBbGxvY2F0b3IgPSAwLCBzaXplX3QgbGV2ZWxEZXB0aCA9IGtEZWZhdWx0TGV2ZWxE
ZXB0aCkgOiAKKyAgICAgICAgb3NfKCZvcyksIGxldmVsX3N0YWNrXyhzdGFja0FsbG9jYXRvciwg
bGV2ZWxEZXB0aCAqIHNpemVvZihMZXZlbCkpLCBoYXNSb290XyhmYWxzZSkge30KKworICAgIGV4
cGxpY2l0CisgICAgV3JpdGVyKFN0YWNrQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSAwLCBzaXplX3Qg
bGV2ZWxEZXB0aCA9IGtEZWZhdWx0TGV2ZWxEZXB0aCkgOgorICAgICAgICBvc18oMCksIGxldmVs
X3N0YWNrXyhhbGxvY2F0b3IsIGxldmVsRGVwdGggKiBzaXplb2YoTGV2ZWwpKSwgaGFzUm9vdF8o
ZmFsc2UpIHt9CisKKyAgICAvLyEgUmVzZXQgdGhlIHdyaXRlciB3aXRoIGEgbmV3IHN0cmVhbS4K
KyAgICAvKiEKKyAgICAgICAgVGhpcyBmdW5jdGlvbiByZXNldCB0aGUgd3JpdGVyIHdpdGggYSBu
ZXcgc3RyZWFtIGFuZCBkZWZhdWx0IHNldHRpbmdzLAorICAgICAgICBpbiBvcmRlciB0byBtYWtl
IGEgV3JpdGVyIG9iamVjdCByZXVzYWJsZSBmb3Igb3V0cHV0IG11bHRpcGxlIEpTT05zLgorCisg
ICAgICAgIFxwYXJhbSBvcyBOZXcgb3V0cHV0IHN0cmVhbS4KKyAgICAgICAgXGNvZGUKKyAgICAg
ICAgV3JpdGVyPE91dHB1dFN0cmVhbT4gd3JpdGVyKG9zMSk7CisgICAgICAgIHdyaXRlci5TdGFy
dE9iamVjdCgpOworICAgICAgICAvLyAuLi4KKyAgICAgICAgd3JpdGVyLkVuZE9iamVjdCgpOwor
CisgICAgICAgIHdyaXRlci5SZXNldChvczIpOworICAgICAgICB3cml0ZXIuU3RhcnRPYmplY3Qo
KTsKKyAgICAgICAgLy8gLi4uCisgICAgICAgIHdyaXRlci5FbmRPYmplY3QoKTsKKyAgICAgICAg
XGVuZGNvZGUKKyAgICAqLworICAgIHZvaWQgUmVzZXQoT3V0cHV0U3RyZWFtJiBvcykgeworICAg
ICAgICBvc18gPSAmb3M7CisgICAgICAgIGhhc1Jvb3RfID0gZmFsc2U7CisgICAgICAgIGxldmVs
X3N0YWNrXy5DbGVhcigpOworICAgIH0KKworICAgIC8vISBDaGVja3Mgd2hldGhlciB0aGUgb3V0
cHV0IGlzIGEgY29tcGxldGUgSlNPTi4KKyAgICAvKiEKKyAgICAgICAgQSBjb21wbGV0ZSBKU09O
IGhhcyBhIGNvbXBsZXRlIHJvb3Qgb2JqZWN0IG9yIGFycmF5LgorICAgICovCisgICAgYm9vbCBJ
c0NvbXBsZXRlKCkgY29uc3QgeworICAgICAgICByZXR1cm4gaGFzUm9vdF8gJiYgbGV2ZWxfc3Rh
Y2tfLkVtcHR5KCk7CisgICAgfQorCisgICAgLyohQG5hbWUgSW1wbGVtZW50YXRpb24gb2YgSGFu
ZGxlcgorICAgICAgICBcc2VlIEhhbmRsZXIKKyAgICAqLworICAgIC8vQHsKKworICAgIGJvb2wg
TnVsbCgpICAgICAgICAgICAgICAgICB7IFByZWZpeChrTnVsbFR5cGUpOyAgIHJldHVybiBXcml0
ZU51bGwoKTsgfQorICAgIGJvb2wgQm9vbChib29sIGIpICAgICAgICAgICB7IFByZWZpeChiID8g
a1RydWVUeXBlIDoga0ZhbHNlVHlwZSk7IHJldHVybiBXcml0ZUJvb2woYik7IH0KKyAgICBib29s
IEludChpbnQgaSkgICAgICAgICAgICAgeyBQcmVmaXgoa051bWJlclR5cGUpOyByZXR1cm4gV3Jp
dGVJbnQoaSk7IH0KKyAgICBib29sIFVpbnQodW5zaWduZWQgdSkgICAgICAgeyBQcmVmaXgoa051
bWJlclR5cGUpOyByZXR1cm4gV3JpdGVVaW50KHUpOyB9CisgICAgYm9vbCBJbnQ2NChpbnQ2NF90
IGk2NCkgICAgIHsgUHJlZml4KGtOdW1iZXJUeXBlKTsgcmV0dXJuIFdyaXRlSW50NjQoaTY0KTsg
fQorICAgIGJvb2wgVWludDY0KHVpbnQ2NF90IHU2NCkgICB7IFByZWZpeChrTnVtYmVyVHlwZSk7
IHJldHVybiBXcml0ZVVpbnQ2NCh1NjQpOyB9CisKKyAgICAvLyEgV3JpdGVzIHRoZSBnaXZlbiBc
YyBkb3VibGUgdmFsdWUgdG8gdGhlIHN0cmVhbQorICAgIC8qIQorICAgICAgICBccGFyYW0gZCBU
aGUgdmFsdWUgdG8gYmUgd3JpdHRlbi4KKyAgICAgICAgXHJldHVybiBXaGV0aGVyIGl0IGlzIHN1
Y2NlZWQuCisgICAgKi8KKyAgICBib29sIERvdWJsZShkb3VibGUgZCkgICAgICAgeyBQcmVmaXgo
a051bWJlclR5cGUpOyByZXR1cm4gV3JpdGVEb3VibGUoZCk7IH0KKworICAgIGJvb2wgU3RyaW5n
KGNvbnN0IENoKiBzdHIsIFNpemVUeXBlIGxlbmd0aCwgYm9vbCBjb3B5ID0gZmFsc2UpIHsKKyAg
ICAgICAgKHZvaWQpY29weTsKKyAgICAgICAgUHJlZml4KGtTdHJpbmdUeXBlKTsKKyAgICAgICAg
cmV0dXJuIFdyaXRlU3RyaW5nKHN0ciwgbGVuZ3RoKTsKKyAgICB9CisKKyAgICBib29sIFN0YXJ0
T2JqZWN0KCkgeworICAgICAgICBQcmVmaXgoa09iamVjdFR5cGUpOworICAgICAgICBuZXcgKGxl
dmVsX3N0YWNrXy50ZW1wbGF0ZSBQdXNoPExldmVsPigpKSBMZXZlbChmYWxzZSk7CisgICAgICAg
IHJldHVybiBXcml0ZVN0YXJ0T2JqZWN0KCk7CisgICAgfQorCisgICAgYm9vbCBLZXkoY29uc3Qg
Q2gqIHN0ciwgU2l6ZVR5cGUgbGVuZ3RoLCBib29sIGNvcHkgPSBmYWxzZSkgeyByZXR1cm4gU3Ry
aW5nKHN0ciwgbGVuZ3RoLCBjb3B5KTsgfQorCQorICAgIGJvb2wgRW5kT2JqZWN0KFNpemVUeXBl
IG1lbWJlckNvdW50ID0gMCkgeworICAgICAgICAodm9pZCltZW1iZXJDb3VudDsKKyAgICAgICAg
UkFQSURKU09OX0FTU0VSVChsZXZlbF9zdGFja18uR2V0U2l6ZSgpID49IHNpemVvZihMZXZlbCkp
OworICAgICAgICBSQVBJREpTT05fQVNTRVJUKCFsZXZlbF9zdGFja18udGVtcGxhdGUgVG9wPExl
dmVsPigpLT5pbkFycmF5KTsKKyAgICAgICAgbGV2ZWxfc3RhY2tfLnRlbXBsYXRlIFBvcDxMZXZl
bD4oMSk7CisgICAgICAgIGJvb2wgcmV0ID0gV3JpdGVFbmRPYmplY3QoKTsKKyAgICAgICAgaWYg
KGxldmVsX3N0YWNrXy5FbXB0eSgpKSAgIC8vIGVuZCBvZiBqc29uIHRleHQKKyAgICAgICAgICAg
IG9zXy0+Rmx1c2goKTsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICBib29sIFN0
YXJ0QXJyYXkoKSB7CisgICAgICAgIFByZWZpeChrQXJyYXlUeXBlKTsKKyAgICAgICAgbmV3IChs
ZXZlbF9zdGFja18udGVtcGxhdGUgUHVzaDxMZXZlbD4oKSkgTGV2ZWwodHJ1ZSk7CisgICAgICAg
IHJldHVybiBXcml0ZVN0YXJ0QXJyYXkoKTsKKyAgICB9CisKKyAgICBib29sIEVuZEFycmF5KFNp
emVUeXBlIGVsZW1lbnRDb3VudCA9IDApIHsKKyAgICAgICAgKHZvaWQpZWxlbWVudENvdW50Owor
ICAgICAgICBSQVBJREpTT05fQVNTRVJUKGxldmVsX3N0YWNrXy5HZXRTaXplKCkgPj0gc2l6ZW9m
KExldmVsKSk7CisgICAgICAgIFJBUElESlNPTl9BU1NFUlQobGV2ZWxfc3RhY2tfLnRlbXBsYXRl
IFRvcDxMZXZlbD4oKS0+aW5BcnJheSk7CisgICAgICAgIGxldmVsX3N0YWNrXy50ZW1wbGF0ZSBQ
b3A8TGV2ZWw+KDEpOworICAgICAgICBib29sIHJldCA9IFdyaXRlRW5kQXJyYXkoKTsKKyAgICAg
ICAgaWYgKGxldmVsX3N0YWNrXy5FbXB0eSgpKSAgIC8vIGVuZCBvZiBqc29uIHRleHQKKyAgICAg
ICAgICAgIG9zXy0+Rmx1c2goKTsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisgICAgLy9A
fQorCisgICAgLyohIEBuYW1lIENvbnZlbmllbmNlIGV4dGVuc2lvbnMgKi8KKyAgICAvL0B7CisK
KyAgICAvLyEgU2ltcGxlciBidXQgc2xvd2VyIG92ZXJsb2FkLgorICAgIGJvb2wgU3RyaW5nKGNv
bnN0IENoKiBzdHIpIHsgcmV0dXJuIFN0cmluZyhzdHIsIGludGVybmFsOjpTdHJMZW4oc3RyKSk7
IH0KKyAgICBib29sIEtleShjb25zdCBDaCogc3RyKSB7IHJldHVybiBLZXkoc3RyLCBpbnRlcm5h
bDo6U3RyTGVuKHN0cikpOyB9CisKKyAgICAvL0B9CisKK3Byb3RlY3RlZDoKKyAgICAvLyEgSW5m
b3JtYXRpb24gZm9yIGVhY2ggbmVzdGVkIGxldmVsCisgICAgc3RydWN0IExldmVsIHsKKyAgICAg
ICAgTGV2ZWwoYm9vbCBpbkFycmF5XykgOiB2YWx1ZUNvdW50KDApLCBpbkFycmF5KGluQXJyYXlf
KSB7fQorICAgICAgICBzaXplX3QgdmFsdWVDb3VudDsgIC8vITwgbnVtYmVyIG9mIHZhbHVlcyBp
biB0aGlzIGxldmVsCisgICAgICAgIGJvb2wgaW5BcnJheTsgICAgICAgLy8hPCB0cnVlIGlmIGlu
IGFycmF5LCBvdGhlcndpc2UgaW4gb2JqZWN0CisgICAgfTsKKworICAgIHN0YXRpYyBjb25zdCBz
aXplX3Qga0RlZmF1bHRMZXZlbERlcHRoID0gMzI7CisKKyAgICBib29sIFdyaXRlTnVsbCgpICB7
CisgICAgICAgIG9zXy0+UHV0KCduJyk7IG9zXy0+UHV0KCd1Jyk7IG9zXy0+UHV0KCdsJyk7IG9z
Xy0+UHV0KCdsJyk7IHJldHVybiB0cnVlOworICAgIH0KKworICAgIGJvb2wgV3JpdGVCb29sKGJv
b2wgYikgIHsKKyAgICAgICAgaWYgKGIpIHsKKyAgICAgICAgICAgIG9zXy0+UHV0KCd0Jyk7IG9z
Xy0+UHV0KCdyJyk7IG9zXy0+UHV0KCd1Jyk7IG9zXy0+UHV0KCdlJyk7CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBvc18tPlB1dCgnZicpOyBvc18tPlB1dCgnYScpOyBv
c18tPlB1dCgnbCcpOyBvc18tPlB1dCgncycpOyBvc18tPlB1dCgnZScpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGJvb2wgV3JpdGVJbnQoaW50IGkpIHsK
KyAgICAgICAgY2hhciBidWZmZXJbMTFdOworICAgICAgICBjb25zdCBjaGFyKiBlbmQgPSBpbnRl
cm5hbDo6aTMydG9hKGksIGJ1ZmZlcik7CisgICAgICAgIGZvciAoY29uc3QgY2hhciogcCA9IGJ1
ZmZlcjsgcCAhPSBlbmQ7ICsrcCkKKyAgICAgICAgICAgIG9zXy0+UHV0KCpwKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCisgICAgYm9vbCBXcml0ZVVpbnQodW5zaWduZWQgdSkgewor
ICAgICAgICBjaGFyIGJ1ZmZlclsxMF07CisgICAgICAgIGNvbnN0IGNoYXIqIGVuZCA9IGludGVy
bmFsOjp1MzJ0b2EodSwgYnVmZmVyKTsKKyAgICAgICAgZm9yIChjb25zdCBjaGFyKiBwID0gYnVm
ZmVyOyBwICE9IGVuZDsgKytwKQorICAgICAgICAgICAgb3NfLT5QdXQoKnApOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBib29sIFdyaXRlSW50NjQoaW50NjRfdCBpNjQpIHsK
KyAgICAgICAgY2hhciBidWZmZXJbMjFdOworICAgICAgICBjb25zdCBjaGFyKiBlbmQgPSBpbnRl
cm5hbDo6aTY0dG9hKGk2NCwgYnVmZmVyKTsKKyAgICAgICAgZm9yIChjb25zdCBjaGFyKiBwID0g
YnVmZmVyOyBwICE9IGVuZDsgKytwKQorICAgICAgICAgICAgb3NfLT5QdXQoKnApOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBib29sIFdyaXRlVWludDY0KHVpbnQ2NF90IHU2
NCkgeworICAgICAgICBjaGFyIGJ1ZmZlclsyMF07CisgICAgICAgIGNoYXIqIGVuZCA9IGludGVy
bmFsOjp1NjR0b2EodTY0LCBidWZmZXIpOworICAgICAgICBmb3IgKGNoYXIqIHAgPSBidWZmZXI7
IHAgIT0gZW5kOyArK3ApCisgICAgICAgICAgICBvc18tPlB1dCgqcCk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIGJvb2wgV3JpdGVEb3VibGUoZG91YmxlIGQpIHsKKyAgICAg
ICAgY2hhciBidWZmZXJbMjVdOworICAgICAgICBjaGFyKiBlbmQgPSBpbnRlcm5hbDo6ZHRvYShk
LCBidWZmZXIpOworICAgICAgICBmb3IgKGNoYXIqIHAgPSBidWZmZXI7IHAgIT0gZW5kOyArK3Ap
CisgICAgICAgICAgICBvc18tPlB1dCgqcCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIGJvb2wgV3JpdGVTdHJpbmcoY29uc3QgQ2gqIHN0ciwgU2l6ZVR5cGUgbGVuZ3RoKSAg
eworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciBoZXhEaWdpdHNbMTZdID0geyAnMCcsICcxJywg
JzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JywgJzgnLCAnOScsICdBJywgJ0InLCAnQycsICdE
JywgJ0UnLCAnRicgfTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgZXNjYXBlWzI1Nl0gPSB7
CisjZGVmaW5lIFoxNiAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwCisgICAgICAgICAg
ICAvLzAgICAgMSAgICAyICAgIDMgICAgNCAgICA1ICAgIDYgICAgNyAgICA4ICAgIDkgICAgQSAg
ICBCICAgIEMgICAgRCAgICBFICAgIEYKKyAgICAgICAgICAgICd1JywgJ3UnLCAndScsICd1Jywg
J3UnLCAndScsICd1JywgJ3UnLCAnYicsICd0JywgJ24nLCAndScsICdmJywgJ3InLCAndScsICd1
JywgLy8gMDAKKyAgICAgICAgICAgICd1JywgJ3UnLCAndScsICd1JywgJ3UnLCAndScsICd1Jywg
J3UnLCAndScsICd1JywgJ3UnLCAndScsICd1JywgJ3UnLCAndScsICd1JywgLy8gMTAKKyAgICAg
ICAgICAgICAgMCwgICAwLCAnIicsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgLy8gMjAKKyAgICAgICAgICAgIFoxNiwgWjE2
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gMzB+NEYKKyAgICAgICAgICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsJ1xcJywgICAwLCAgIDAsICAg
MCwgLy8gNTAKKyAgICAgICAgICAgIFoxNiwgWjE2LCBaMTYsIFoxNiwgWjE2LCBaMTYsIFoxNiwg
WjE2LCBaMTYsIFoxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNjB+RkYKKyN1
bmRlZiBaMTYKKyAgICAgICAgfTsKKworICAgICAgICBvc18tPlB1dCgnXCInKTsKKyAgICAgICAg
R2VuZXJpY1N0cmluZ1N0cmVhbTxTb3VyY2VFbmNvZGluZz4gaXMoc3RyKTsKKyAgICAgICAgd2hp
bGUgKGlzLlRlbGwoKSA8IGxlbmd0aCkgeworICAgICAgICAgICAgY29uc3QgQ2ggYyA9IGlzLlBl
ZWsoKTsKKyAgICAgICAgICAgIGlmICghVGFyZ2V0RW5jb2Rpbmc6OnN1cHBvcnRVbmljb2RlICYm
ICh1bnNpZ25lZCljID49IDB4ODApIHsKKyAgICAgICAgICAgICAgICAvLyBVbmljb2RlIGVzY2Fw
aW5nCisgICAgICAgICAgICAgICAgdW5zaWduZWQgY29kZXBvaW50OworICAgICAgICAgICAgICAg
IGlmICghU291cmNlRW5jb2Rpbmc6OkRlY29kZShpcywgJmNvZGVwb2ludCkpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBvc18tPlB1dCgnXFwnKTsK
KyAgICAgICAgICAgICAgICBvc18tPlB1dCgndScpOworICAgICAgICAgICAgICAgIGlmIChjb2Rl
cG9pbnQgPD0gMHhEN0ZGIHx8IChjb2RlcG9pbnQgPj0gMHhFMDAwICYmIGNvZGVwb2ludCA8PSAw
eEZGRkYpKSB7CisgICAgICAgICAgICAgICAgICAgIG9zXy0+UHV0KGhleERpZ2l0c1soY29kZXBv
aW50ID4+IDEyKSAmIDE1XSk7CisgICAgICAgICAgICAgICAgICAgIG9zXy0+UHV0KGhleERpZ2l0
c1soY29kZXBvaW50ID4+ICA4KSAmIDE1XSk7CisgICAgICAgICAgICAgICAgICAgIG9zXy0+UHV0
KGhleERpZ2l0c1soY29kZXBvaW50ID4+ICA0KSAmIDE1XSk7CisgICAgICAgICAgICAgICAgICAg
IG9zXy0+UHV0KGhleERpZ2l0c1soY29kZXBvaW50ICAgICAgKSAmIDE1XSk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvZGVwb2ludCA+PSAweDAxMDAwMCAm
JiBjb2RlcG9pbnQgPD0gMHgxMEZGRkYpICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gU3Vy
cm9nYXRlIHBhaXIKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcyA9IGNvZGVwb2ludCAt
IDB4MDEwMDAwOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZWFkID0gKHMgPj4gMTAp
ICsgMHhEODAwOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB0cmFpbCA9IChzICYgMHgz
RkYpICsgMHhEQzAwOworICAgICAgICAgICAgICAgICAgICBvc18tPlB1dChoZXhEaWdpdHNbKGxl
YWQgPj4gMTIpICYgMTVdKTsKKyAgICAgICAgICAgICAgICAgICAgb3NfLT5QdXQoaGV4RGlnaXRz
WyhsZWFkID4+ICA4KSAmIDE1XSk7CisgICAgICAgICAgICAgICAgICAgIG9zXy0+UHV0KGhleERp
Z2l0c1sobGVhZCA+PiAgNCkgJiAxNV0pOworICAgICAgICAgICAgICAgICAgICBvc18tPlB1dCho
ZXhEaWdpdHNbKGxlYWQgICAgICApICYgMTVdKTsKKyAgICAgICAgICAgICAgICAgICAgb3NfLT5Q
dXQoJ1xcJyk7CisgICAgICAgICAgICAgICAgICAgIG9zXy0+UHV0KCd1Jyk7CisgICAgICAgICAg
ICAgICAgICAgIG9zXy0+UHV0KGhleERpZ2l0c1sodHJhaWwgPj4gMTIpICYgMTVdKTsKKyAgICAg
ICAgICAgICAgICAgICAgb3NfLT5QdXQoaGV4RGlnaXRzWyh0cmFpbCA+PiAgOCkgJiAxNV0pOwor
ICAgICAgICAgICAgICAgICAgICBvc18tPlB1dChoZXhEaWdpdHNbKHRyYWlsID4+ICA0KSAmIDE1
XSk7CisgICAgICAgICAgICAgICAgICAgIG9zXy0+UHV0KGhleERpZ2l0c1sodHJhaWwgICAgICAp
ICYgMTVdKTsgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgICAvLyBpbnZh
bGlkIGNvZGUgcG9pbnQKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKChzaXpl
b2YoQ2gpID09IDEgfHwgKHVuc2lnbmVkKWMgPCAyNTYpICYmIGVzY2FwZVsodW5zaWduZWQgY2hh
ciljXSkgIHsKKyAgICAgICAgICAgICAgICBpcy5UYWtlKCk7CisgICAgICAgICAgICAgICAgb3Nf
LT5QdXQoJ1xcJyk7CisgICAgICAgICAgICAgICAgb3NfLT5QdXQoZXNjYXBlWyh1bnNpZ25lZCBj
aGFyKWNdKTsKKyAgICAgICAgICAgICAgICBpZiAoZXNjYXBlWyh1bnNpZ25lZCBjaGFyKWNdID09
ICd1JykgeworICAgICAgICAgICAgICAgICAgICBvc18tPlB1dCgnMCcpOworICAgICAgICAgICAg
ICAgICAgICBvc18tPlB1dCgnMCcpOworICAgICAgICAgICAgICAgICAgICBvc18tPlB1dChoZXhE
aWdpdHNbKHVuc2lnbmVkIGNoYXIpYyA+PiA0XSk7CisgICAgICAgICAgICAgICAgICAgIG9zXy0+
UHV0KGhleERpZ2l0c1sodW5zaWduZWQgY2hhciljICYgMHhGXSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFRyYW5z
Y29kZXI8U291cmNlRW5jb2RpbmcsIFRhcmdldEVuY29kaW5nPjo6VHJhbnNjb2RlKGlzLCAqb3Nf
KTsKKyAgICAgICAgfQorICAgICAgICBvc18tPlB1dCgnXCInKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCisgICAgYm9vbCBXcml0ZVN0YXJ0T2JqZWN0KCkgeyBvc18tPlB1dCgneycp
OyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgV3JpdGVFbmRPYmplY3QoKSAgIHsgb3NfLT5QdXQo
J30nKTsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIFdyaXRlU3RhcnRBcnJheSgpICB7IG9zXy0+
UHV0KCdbJyk7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBXcml0ZUVuZEFycmF5KCkgICAgeyBv
c18tPlB1dCgnXScpOyByZXR1cm4gdHJ1ZTsgfQorCisgICAgdm9pZCBQcmVmaXgoVHlwZSB0eXBl
KSB7CisgICAgICAgICh2b2lkKXR5cGU7CisgICAgICAgIGlmIChsZXZlbF9zdGFja18uR2V0U2l6
ZSgpICE9IDApIHsgLy8gdGhpcyB2YWx1ZSBpcyBub3QgYXQgcm9vdAorICAgICAgICAgICAgTGV2
ZWwqIGxldmVsID0gbGV2ZWxfc3RhY2tfLnRlbXBsYXRlIFRvcDxMZXZlbD4oKTsKKyAgICAgICAg
ICAgIGlmIChsZXZlbC0+dmFsdWVDb3VudCA+IDApIHsKKyAgICAgICAgICAgICAgICBpZiAobGV2
ZWwtPmluQXJyYXkpIAorICAgICAgICAgICAgICAgICAgICBvc18tPlB1dCgnLCcpOyAvLyBhZGQg
Y29tbWEgaWYgaXQgaXMgbm90IHRoZSBmaXJzdCBlbGVtZW50IGluIGFycmF5CisgICAgICAgICAg
ICAgICAgZWxzZSAgLy8gaW4gb2JqZWN0CisgICAgICAgICAgICAgICAgICAgIG9zXy0+UHV0KChs
ZXZlbC0+dmFsdWVDb3VudCAlIDIgPT0gMCkgPyAnLCcgOiAnOicpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKCFsZXZlbC0+aW5BcnJheSAmJiBsZXZlbC0+dmFsdWVDb3VudCAlIDIg
PT0gMCkKKyAgICAgICAgICAgICAgICBSQVBJREpTT05fQVNTRVJUKHR5cGUgPT0ga1N0cmluZ1R5
cGUpOyAgLy8gaWYgaXQncyBpbiBvYmplY3QsIHRoZW4gZXZlbiBudW1iZXIgc2hvdWxkIGJlIGEg
bmFtZQorICAgICAgICAgICAgbGV2ZWwtPnZhbHVlQ291bnQrKzsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIFJBUElESlNPTl9BU1NFUlQoIWhhc1Jvb3RfKTsgICAgLy8g
U2hvdWxkIG9ubHkgaGFzIG9uZSBhbmQgb25seSBvbmUgcm9vdC4KKyAgICAgICAgICAgIGhhc1Jv
b3RfID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIE91dHB1dFN0cmVhbSogb3NfOwor
ICAgIGludGVybmFsOjpTdGFjazxTdGFja0FsbG9jYXRvcj4gbGV2ZWxfc3RhY2tfOworICAgIGJv
b2wgaGFzUm9vdF87CisKK3ByaXZhdGU6CisgICAgLy8gUHJvaGliaXQgY29weSBjb25zdHJ1Y3Rv
ciAmIGFzc2lnbm1lbnQgb3BlcmF0b3IuCisgICAgV3JpdGVyKGNvbnN0IFdyaXRlciYpOworICAg
IFdyaXRlciYgb3BlcmF0b3I9KGNvbnN0IFdyaXRlciYpOworfTsKKworLy8gRnVsbCBzcGVjaWFs
aXphdGlvbiBmb3IgU3RyaW5nU3RyZWFtIHRvIHByZXZlbnQgbWVtb3J5IGNvcHlpbmcKKwordGVt
cGxhdGU8PgoraW5saW5lIGJvb2wgV3JpdGVyPFN0cmluZ0J1ZmZlcj46OldyaXRlSW50KGludCBp
KSB7CisgICAgY2hhciAqYnVmZmVyID0gb3NfLT5QdXNoKDExKTsKKyAgICBjb25zdCBjaGFyKiBl
bmQgPSBpbnRlcm5hbDo6aTMydG9hKGksIGJ1ZmZlcik7CisgICAgb3NfLT5Qb3AoMTEgLSAoZW5k
IC0gYnVmZmVyKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPD4KK2lubGluZSBi
b29sIFdyaXRlcjxTdHJpbmdCdWZmZXI+OjpXcml0ZVVpbnQodW5zaWduZWQgdSkgeworICAgIGNo
YXIgKmJ1ZmZlciA9IG9zXy0+UHVzaCgxMCk7CisgICAgY29uc3QgY2hhciogZW5kID0gaW50ZXJu
YWw6OnUzMnRvYSh1LCBidWZmZXIpOworICAgIG9zXy0+UG9wKDEwIC0gKGVuZCAtIGJ1ZmZlcikp
OworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgYm9vbCBXcml0ZXI8
U3RyaW5nQnVmZmVyPjo6V3JpdGVJbnQ2NChpbnQ2NF90IGk2NCkgeworICAgIGNoYXIgKmJ1ZmZl
ciA9IG9zXy0+UHVzaCgyMSk7CisgICAgY29uc3QgY2hhciogZW5kID0gaW50ZXJuYWw6Omk2NHRv
YShpNjQsIGJ1ZmZlcik7CisgICAgb3NfLT5Qb3AoMjEgLSAoZW5kIC0gYnVmZmVyKSk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPD4KK2lubGluZSBib29sIFdyaXRlcjxTdHJpbmdC
dWZmZXI+OjpXcml0ZVVpbnQ2NCh1aW50NjRfdCB1KSB7CisgICAgY2hhciAqYnVmZmVyID0gb3Nf
LT5QdXNoKDIwKTsKKyAgICBjb25zdCBjaGFyKiBlbmQgPSBpbnRlcm5hbDo6dTY0dG9hKHUsIGJ1
ZmZlcik7CisgICAgb3NfLT5Qb3AoMjAgLSAoZW5kIC0gYnVmZmVyKSk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3RlbXBsYXRlPD4KK2lubGluZSBib29sIFdyaXRlcjxTdHJpbmdCdWZmZXI+OjpX
cml0ZURvdWJsZShkb3VibGUgZCkgeworICAgIGNoYXIgKmJ1ZmZlciA9IG9zXy0+UHVzaCgyNSk7
CisgICAgY2hhciogZW5kID0gaW50ZXJuYWw6OmR0b2EoZCwgYnVmZmVyKTsKKyAgICBvc18tPlBv
cCgyNSAtIChlbmQgLSBidWZmZXIpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUkFQSURKU09O
X05BTUVTUEFDRV9FTkQKKworI2lmZGVmIF9NU0NfVkVSCitSQVBJREpTT05fRElBR19QT1AKKyNl
bmRpZgorCisjZW5kaWYgLy8gUkFQSURKU09OX1JBUElESlNPTl9IXwpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3Jh
cGlkanNvbi9lcnJvci9lbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vZXJyb3Iv
ZW4uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
dGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2Vycm9yL2VuLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw3MSBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExIE1pbG8gWWlw
CisvLworLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRv
IGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNz
b2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKKy8v
IGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBs
aW1pdGF0aW9uIHRoZSByaWdodHMKKy8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVi
bGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKKy8vIGNvcGllcyBvZiB0
aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBp
cworLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9uczoKKy8vCisvLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNz
aW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorLy8gYWxsIGNvcGllcyBvciBzdWJzdGFu
dGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisvLworLy8gVEhFIFNPRlRXQVJFIElTIFBS
T1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IK
Ky8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZLAorLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisvLyBBVVRIT1JTIE9S
IENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9U
SEVSCisvLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JU
IE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04g
V0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgorLy8gVEhF
IFNPRlRXQVJFLgorCisjaWZuZGVmIFJBUElESlNPTl9FUlJPUl9FTl9IX18KKyNkZWZpbmUgUkFQ
SURKU09OX0VSUk9SX0VOX0hfXworCisjaW5jbHVkZSAiZXJyb3IuaCIKKworUkFQSURKU09OX05B
TUVTUEFDRV9CRUdJTgorCisvLyEgTWFwcyBlcnJvciBjb2RlIG9mIHBhcnNpbmcgaW50byBlcnJv
ciBtZXNzYWdlLgorLyohCisgICAgXGluZ3JvdXAgUkFQSURKU09OX0VSUk9SUworICAgIFxwYXJh
bSBwYXJzZUVycm9yQ29kZSBFcnJvciBjb2RlIG9idGFpbmVkIGluIHBhcnNpbmcuCisgICAgXHJl
dHVybiB0aGUgZXJyb3IgbWVzc2FnZS4KKyAgICBcbm90ZSBVc2VyIGNhbiBtYWtlIGEgY29weSBv
ZiB0aGlzIGZ1bmN0aW9uIGZvciBsb2NhbGl6YXRpb24uCisgICAgICAgIFVzaW5nIHN3aXRjaC1j
YXNlIGlzIHNhZmVyIGZvciBmdXR1cmUgbW9kaWZpY2F0aW9uIG9mIGVycm9yIGNvZGVzLgorKi8K
K2lubGluZSBjb25zdCBSQVBJREpTT05fRVJST1JfQ0hBUlRZUEUqIEdldFBhcnNlRXJyb3JfRW4o
UGFyc2VFcnJvckNvZGUgcGFyc2VFcnJvckNvZGUpIHsKKyAgICBzd2l0Y2ggKHBhcnNlRXJyb3JD
b2RlKSB7CisgICAgICAgIGNhc2Uga1BhcnNlRXJyb3JOb25lOiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBSQVBJREpTT05fRVJST1JfU1RSSU5HKCJObyBlcnJvci4iKTsKKworICAg
ICAgICBjYXNlIGtQYXJzZUVycm9yRG9jdW1lbnRFbXB0eTogICAgICAgICAgICAgICAgICByZXR1
cm4gUkFQSURKU09OX0VSUk9SX1NUUklORygiVGhlIGRvY3VtZW50IGlzIGVtcHR5LiIpOworICAg
ICAgICBjYXNlIGtQYXJzZUVycm9yRG9jdW1lbnRSb290Tm90U2luZ3VsYXI6ICAgICAgICByZXR1
cm4gUkFQSURKU09OX0VSUk9SX1NUUklORygiVGhlIGRvY3VtZW50IHJvb3QgbXVzdCBub3QgZm9s
bG93IGJ5IG90aGVyIHZhbHVlcy4iKTsKKyAgICAKKyAgICAgICAgY2FzZSBrUGFyc2VFcnJvclZh
bHVlSW52YWxpZDogICAgICAgICAgICAgICAgICAgcmV0dXJuIFJBUElESlNPTl9FUlJPUl9TVFJJ
TkcoIkludmFsaWQgdmFsdWUuIik7CisgICAgCisgICAgICAgIGNhc2Uga1BhcnNlRXJyb3JPYmpl
Y3RNaXNzTmFtZTogICAgICAgICAgICAgICAgIHJldHVybiBSQVBJREpTT05fRVJST1JfU1RSSU5H
KCJNaXNzaW5nIGEgbmFtZSBmb3Igb2JqZWN0IG1lbWJlci4iKTsKKyAgICAgICAgY2FzZSBrUGFy
c2VFcnJvck9iamVjdE1pc3NDb2xvbjogICAgICAgICAgICAgICAgcmV0dXJuIFJBUElESlNPTl9F
UlJPUl9TVFJJTkcoIk1pc3NpbmcgYSBjb2xvbiBhZnRlciBhIG5hbWUgb2Ygb2JqZWN0IG1lbWJl
ci4iKTsKKyAgICAgICAgY2FzZSBrUGFyc2VFcnJvck9iamVjdE1pc3NDb21tYU9yQ3VybHlCcmFj
a2V0OiAgcmV0dXJuIFJBUElESlNPTl9FUlJPUl9TVFJJTkcoIk1pc3NpbmcgYSBjb21tYSBvciAn
fScgYWZ0ZXIgYW4gb2JqZWN0IG1lbWJlci4iKTsKKyAgICAKKyAgICAgICAgY2FzZSBrUGFyc2VF
cnJvckFycmF5TWlzc0NvbW1hT3JTcXVhcmVCcmFja2V0OiAgcmV0dXJuIFJBUElESlNPTl9FUlJP
Ul9TVFJJTkcoIk1pc3NpbmcgYSBjb21tYSBvciAnXScgYWZ0ZXIgYW4gYXJyYXkgZWxlbWVudC4i
KTsKKworICAgICAgICBjYXNlIGtQYXJzZUVycm9yU3RyaW5nVW5pY29kZUVzY2FwZUludmFsaWRI
ZXg6ICByZXR1cm4gUkFQSURKU09OX0VSUk9SX1NUUklORygiSW5jb3JyZWN0IGhleCBkaWdpdCBh
ZnRlciBcXHUgZXNjYXBlIGluIHN0cmluZy4iKTsKKyAgICAgICAgY2FzZSBrUGFyc2VFcnJvclN0
cmluZ1VuaWNvZGVTdXJyb2dhdGVJbnZhbGlkOiAgcmV0dXJuIFJBUElESlNPTl9FUlJPUl9TVFJJ
TkcoIlRoZSBzdXJyb2dhdGUgcGFpciBpbiBzdHJpbmcgaXMgaW52YWxpZC4iKTsKKyAgICAgICAg
Y2FzZSBrUGFyc2VFcnJvclN0cmluZ0VzY2FwZUludmFsaWQ6ICAgICAgICAgICAgcmV0dXJuIFJB
UElESlNPTl9FUlJPUl9TVFJJTkcoIkludmFsaWQgZXNjYXBlIGNoYXJhY3RlciBpbiBzdHJpbmcu
Iik7CisgICAgICAgIGNhc2Uga1BhcnNlRXJyb3JTdHJpbmdNaXNzUXVvdGF0aW9uTWFyazogICAg
ICAgIHJldHVybiBSQVBJREpTT05fRVJST1JfU1RSSU5HKCJNaXNzaW5nIGEgY2xvc2luZyBxdW90
YXRpb24gbWFyayBpbiBzdHJpbmcuIik7CisgICAgICAgIGNhc2Uga1BhcnNlRXJyb3JTdHJpbmdJ
bnZhbGlkRW5jb2Rpbmc6ICAgICAgICAgIHJldHVybiBSQVBJREpTT05fRVJST1JfU1RSSU5HKCJJ
bnZhbGlkIGVuY29kaW5nIGluIHN0cmluZy4iKTsKKworICAgICAgICBjYXNlIGtQYXJzZUVycm9y
TnVtYmVyVG9vQmlnOiAgICAgICAgICAgICAgICAgICByZXR1cm4gUkFQSURKU09OX0VSUk9SX1NU
UklORygiTnVtYmVyIHRvbyBiaWcgdG8gYmUgc3RvcmVkIGluIGRvdWJsZS4iKTsKKyAgICAgICAg
Y2FzZSBrUGFyc2VFcnJvck51bWJlck1pc3NGcmFjdGlvbjogICAgICAgICAgICAgcmV0dXJuIFJB
UElESlNPTl9FUlJPUl9TVFJJTkcoIk1pc3MgZnJhY3Rpb24gcGFydCBpbiBudW1iZXIuIik7Cisg
ICAgICAgIGNhc2Uga1BhcnNlRXJyb3JOdW1iZXJNaXNzRXhwb25lbnQ6ICAgICAgICAgICAgIHJl
dHVybiBSQVBJREpTT05fRVJST1JfU1RSSU5HKCJNaXNzIGV4cG9uZW50IGluIG51bWJlci4iKTsK
KworICAgICAgICBjYXNlIGtQYXJzZUVycm9yVGVybWluYXRpb246ICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gUkFQSURKU09OX0VSUk9SX1NUUklORygiVGVybWluYXRlIHBhcnNpbmcgZHVlIHRv
IEhhbmRsZXIgZXJyb3IuIik7CisgICAgICAgIGNhc2Uga1BhcnNlRXJyb3JVbnNwZWNpZmljU3lu
dGF4RXJyb3I6ICAgICAgICAgIHJldHVybiBSQVBJREpTT05fRVJST1JfU1RSSU5HKCJVbnNwZWNp
ZmljIHN5bnRheCBlcnJvci4iKTsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0
dXJuIFJBUElESlNPTl9FUlJPUl9TVFJJTkcoIlVua25vd24gZXJyb3IuIik7CisgICAgfQorfQor
CitSQVBJREpTT05fTkFNRVNQQUNFX0VORAorCisjZW5kaWYgLy8gUkFQSURKU09OX0VSUk9SX0VO
X0hfXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5
L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9lcnJvci9lcnJvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24v
aW5jbHVkZS9yYXBpZGpzb24vZXJyb3IvZXJyb3IuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUv
cmFwaWRqc29uL2Vycm9yL2Vycm9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNTAgQEAK
Ky8vIENvcHlyaWdodCAoQykgMjAxMSBNaWxvIFlpcAorLy8KKy8vIFBlcm1pc3Npb24gaXMgaGVy
ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNv
cHkKKy8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl
cyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCisvLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCBy
ZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCisvLyB0
byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu
c2UsIGFuZC9vciBzZWxsCisvLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0
IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy8vIGZ1cm5pc2hlZCB0byBkbyBzbywg
c3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisvLworLy8gVGhlIGFib3ZlIGNv
cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVk
ZWQgaW4KKy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3
YXJlLgorLy8KKy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB
UlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisvLyBJTVBMSUVELCBJTkNMVURJTkcgQlVU
IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKy8vIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRQorLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFC
TEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorLy8gTElBQklMSVRZLCBXSEVUSEVS
IElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJP
TSwKKy8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBV
U0UgT1IgT1RIRVIgREVBTElOR1MgSU4KKy8vIFRIRSBTT0ZUV0FSRS4KKworI2lmbmRlZiBSQVBJ
REpTT05fRVJST1JfRVJST1JfSF9fCisjZGVmaW5lIFJBUElESlNPTl9FUlJPUl9FUlJPUl9IX18K
KworLyohIFxmaWxlIGVycm9yLmggKi8KKworLyohIFxkZWZncm91cCBSQVBJREpTT05fRVJST1JT
IFJhcGlkSlNPTiBlcnJvciBoYW5kbGluZyAqLworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisv
LyBSQVBJREpTT05fRVJST1JfQ0hBUlRZUEUKKworLy8hIENoYXJhY3RlciB0eXBlIG9mIGVycm9y
IG1lc3NhZ2VzLgorLyohIFxpbmdyb3VwIFJBUElESlNPTl9FUlJPUlMKKyAgICBUaGUgZGVmYXVs
dCBjaGFyYWN0ZXIgdHlwZSBpcyBcYyBjaGFyLgorICAgIE9uIFdpbmRvd3MsIHVzZXIgY2FuIGRl
ZmluZSB0aGlzIG1hY3JvIGFzIFxjIFRDSEFSIGZvciBzdXBwb3J0aW5nIGJvdGgKKyAgICB1bmlj
b2RlL25vbi11bmljb2RlIHNldHRpbmdzLgorKi8KKyNpZm5kZWYgUkFQSURKU09OX0VSUk9SX0NI
QVJUWVBFCisjZGVmaW5lIFJBUElESlNPTl9FUlJPUl9DSEFSVFlQRSBjaGFyCisjZW5kaWYKKwor
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gUkFQSURKU09OX0VSUk9SX1NUUklORworCisvLyEg
TWFjcm8gZm9yIGNvbnZlcnRpbmcgc3RyaW5nIGxpdGVyaWFsIHRvIFxyZWYgUkFQSURKU09OX0VS
Uk9SX0NIQVJUWVBFW10uCisvKiEgXGluZ3JvdXAgUkFQSURKU09OX0VSUk9SUworICAgIEJ5IGRl
ZmF1bHQgdGhpcyBjb252ZXJzaW9uIG1hY3JvIGRvZXMgbm90aGluZy4KKyAgICBPbiBXaW5kb3dz
LCB1c2VyIGNhbiBkZWZpbmUgdGhpcyBtYWNybyBhcyBcYyBfVCh4KSBmb3Igc3VwcG9ydGluZyBi
b3RoCisgICAgdW5pY29kZS9ub24tdW5pY29kZSBzZXR0aW5ncy4KKyovCisjaWZuZGVmIFJBUElE
SlNPTl9FUlJPUl9TVFJJTkcKKyNkZWZpbmUgUkFQSURKU09OX0VSUk9SX1NUUklORyh4KSB4Cisj
ZW5kaWYKKworUkFQSURKU09OX05BTUVTUEFDRV9CRUdJTgorCisvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCisvLyBQYXJzZUVycm9yQ29kZQorCisvLyEgRXJyb3IgY29kZSBvZiBwYXJzaW5nLgorLyoh
IFxpbmdyb3VwIFJBUElESlNPTl9FUlJPUlMKKyAgICBcc2VlIEdlbmVyaWNSZWFkZXI6OlBhcnNl
LCBHZW5lcmljUmVhZGVyOjpHZXRQYXJzZUVycm9yQ29kZQorKi8KK2VudW0gUGFyc2VFcnJvckNv
ZGUgeworICAgIGtQYXJzZUVycm9yTm9uZSA9IDAsICAgICAgICAgICAgICAgICAgICAgICAgLy8h
PCBObyBlcnJvci4KKworICAgIGtQYXJzZUVycm9yRG9jdW1lbnRFbXB0eSwgICAgICAgICAgICAg
ICAgICAgLy8hPCBUaGUgZG9jdW1lbnQgaXMgZW1wdHkuCisgICAga1BhcnNlRXJyb3JEb2N1bWVu
dFJvb3ROb3RTaW5ndWxhciwgICAgICAgICAvLyE8IFRoZSBkb2N1bWVudCByb290IG11c3Qgbm90
IGZvbGxvdyBieSBvdGhlciB2YWx1ZXMuCisKKyAgICBrUGFyc2VFcnJvclZhbHVlSW52YWxpZCwg
ICAgICAgICAgICAgICAgICAgIC8vITwgSW52YWxpZCB2YWx1ZS4KKworICAgIGtQYXJzZUVycm9y
T2JqZWN0TWlzc05hbWUsICAgICAgICAgICAgICAgICAgLy8hPCBNaXNzaW5nIGEgbmFtZSBmb3Ig
b2JqZWN0IG1lbWJlci4KKyAgICBrUGFyc2VFcnJvck9iamVjdE1pc3NDb2xvbiwgICAgICAgICAg
ICAgICAgIC8vITwgTWlzc2luZyBhIGNvbG9uIGFmdGVyIGEgbmFtZSBvZiBvYmplY3QgbWVtYmVy
LgorICAgIGtQYXJzZUVycm9yT2JqZWN0TWlzc0NvbW1hT3JDdXJseUJyYWNrZXQsICAgLy8hPCBN
aXNzaW5nIGEgY29tbWEgb3IgJ30nIGFmdGVyIGFuIG9iamVjdCBtZW1iZXIuCisKKyAgICBrUGFy
c2VFcnJvckFycmF5TWlzc0NvbW1hT3JTcXVhcmVCcmFja2V0LCAgIC8vITwgTWlzc2luZyBhIGNv
bW1hIG9yICddJyBhZnRlciBhbiBhcnJheSBlbGVtZW50LgorCisgICAga1BhcnNlRXJyb3JTdHJp
bmdVbmljb2RlRXNjYXBlSW52YWxpZEhleCwgICAvLyE8IEluY29ycmVjdCBoZXggZGlnaXQgYWZ0
ZXIgXFx1IGVzY2FwZSBpbiBzdHJpbmcuCisgICAga1BhcnNlRXJyb3JTdHJpbmdVbmljb2RlU3Vy
cm9nYXRlSW52YWxpZCwgICAvLyE8IFRoZSBzdXJyb2dhdGUgcGFpciBpbiBzdHJpbmcgaXMgaW52
YWxpZC4KKyAgICBrUGFyc2VFcnJvclN0cmluZ0VzY2FwZUludmFsaWQsICAgICAgICAgICAgIC8v
ITwgSW52YWxpZCBlc2NhcGUgY2hhcmFjdGVyIGluIHN0cmluZy4KKyAgICBrUGFyc2VFcnJvclN0
cmluZ01pc3NRdW90YXRpb25NYXJrLCAgICAgICAgIC8vITwgTWlzc2luZyBhIGNsb3NpbmcgcXVv
dGF0aW9uIG1hcmsgaW4gc3RyaW5nLgorICAgIGtQYXJzZUVycm9yU3RyaW5nSW52YWxpZEVuY29k
aW5nLCAgICAgICAgICAgLy8hPCBJbnZhbGlkIGVuY29kaW5nIGluIHN0cmluZy4KKworICAgIGtQ
YXJzZUVycm9yTnVtYmVyVG9vQmlnLCAgICAgICAgICAgICAgICAgICAgLy8hPCBOdW1iZXIgdG9v
IGJpZyB0byBiZSBzdG9yZWQgaW4gZG91YmxlLgorICAgIGtQYXJzZUVycm9yTnVtYmVyTWlzc0Zy
YWN0aW9uLCAgICAgICAgICAgICAgLy8hPCBNaXNzIGZyYWN0aW9uIHBhcnQgaW4gbnVtYmVyLgor
ICAgIGtQYXJzZUVycm9yTnVtYmVyTWlzc0V4cG9uZW50LCAgICAgICAgICAgICAgLy8hPCBNaXNz
IGV4cG9uZW50IGluIG51bWJlci4KKworICAgIGtQYXJzZUVycm9yVGVybWluYXRpb24sICAgICAg
ICAgICAgICAgICAgICAgLy8hPCBQYXJzaW5nIHdhcyB0ZXJtaW5hdGVkLgorICAgIGtQYXJzZUVy
cm9yVW5zcGVjaWZpY1N5bnRheEVycm9yLCAgICAgICAgICAgLy8hPCBVbnNwZWNpZmljIHN5bnRh
eCBlcnJvci4KK307CisKKy8vISBSZXN1bHQgb2YgcGFyc2luZyAod3JhcHMgUGFyc2VFcnJvckNv
ZGUpCisvKiEKKyAgICBcaW5ncm91cCBSQVBJREpTT05fRVJST1JTCisgICAgXGNvZGUKKyAgICAg
ICAgRG9jdW1lbnQgZG9jOworICAgICAgICBQYXJzZVJlc3VsdCBvayA9IGRvYy5QYXJzZSgiWzQy
XSIpOworICAgICAgICBpZiAoIW9rKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkpT
T04gcGFyc2UgZXJyb3I6ICVzICgldSkiLAorICAgICAgICAgICAgICAgICAgICBHZXRQYXJzZUVy
cm9yX0VuKG9rLkNvZGUoKSksIG9rLk9mZnNldCgpKTsKKyAgICAgICAgICAgIGV4aXQoRVhJVF9G
QUlMVVJFKTsKKyAgICAgICAgfQorICAgIFxlbmRjb2RlCisgICAgXHNlZSBHZW5lcmljUmVhZGVy
OjpQYXJzZSwgR2VuZXJpY0RvY3VtZW50OjpQYXJzZQorKi8KK3N0cnVjdCBQYXJzZVJlc3VsdCB7
CisKKyAgICAvLyEgRGVmYXVsdCBjb25zdHJ1Y3Rvciwgbm8gZXJyb3IuCisgICAgUGFyc2VSZXN1
bHQoKSA6IGNvZGVfKGtQYXJzZUVycm9yTm9uZSksIG9mZnNldF8oMCkge30KKyAgICAvLyEgQ29u
c3RydWN0b3IgdG8gc2V0IGFuIGVycm9yLgorICAgIFBhcnNlUmVzdWx0KFBhcnNlRXJyb3JDb2Rl
IGNvZGUsIHNpemVfdCBvZmZzZXQpIDogY29kZV8oY29kZSksIG9mZnNldF8ob2Zmc2V0KSB7fQor
CisgICAgLy8hIEdldCB0aGUgZXJyb3IgY29kZS4KKyAgICBQYXJzZUVycm9yQ29kZSBDb2RlKCkg
Y29uc3QgeyByZXR1cm4gY29kZV87IH0KKyAgICAvLyEgR2V0IHRoZSBlcnJvciBvZmZzZXQsIGlm
IFxyZWYgSXNFcnJvcigpLCAwIG90aGVyd2lzZS4KKyAgICBzaXplX3QgT2Zmc2V0KCkgY29uc3Qg
eyByZXR1cm4gb2Zmc2V0XzsgfQorCisgICAgLy8hIENvbnZlcnNpb24gdG8gXGMgYm9vbCwgcmV0
dXJucyBcYyB0cnVlLCBpZmYgIVxyZWYgSXNFcnJvcigpLgorICAgIG9wZXJhdG9yIGJvb2woKSBj
b25zdCB7IHJldHVybiAhSXNFcnJvcigpOyB9CisgICAgLy8hIFdoZXRoZXIgdGhlIHJlc3VsdCBp
cyBhbiBlcnJvci4KKyAgICBib29sIElzRXJyb3IoKSBjb25zdCB7IHJldHVybiBjb2RlXyAhPSBr
UGFyc2VFcnJvck5vbmU7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYXJzZVJlc3Vs
dCYgdGhhdCkgY29uc3QgeyByZXR1cm4gY29kZV8gPT0gdGhhdC5jb2RlXzsgfQorICAgIGJvb2wg
b3BlcmF0b3I9PShQYXJzZUVycm9yQ29kZSBjb2RlKSBjb25zdCB7IHJldHVybiBjb2RlXyA9PSBj
b2RlOyB9CisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShQYXJzZUVycm9yQ29kZSBjb2RlLCBj
b25zdCBQYXJzZVJlc3VsdCAmIGVycikgeyByZXR1cm4gY29kZSA9PSBlcnIuY29kZV87IH0KKwor
ICAgIC8vISBSZXNldCBlcnJvciBjb2RlLgorICAgIHZvaWQgQ2xlYXIoKSB7IFNldChrUGFyc2VF
cnJvck5vbmUpOyB9CisgICAgLy8hIFVwZGF0ZSBlcnJvciBjb2RlIGFuZCBvZmZzZXQuCisgICAg
dm9pZCBTZXQoUGFyc2VFcnJvckNvZGUgY29kZSwgc2l6ZV90IG9mZnNldCA9IDApIHsgY29kZV8g
PSBjb2RlOyBvZmZzZXRfID0gb2Zmc2V0OyB9CisKK3ByaXZhdGU6CisgICAgUGFyc2VFcnJvckNv
ZGUgY29kZV87CisgICAgc2l6ZV90IG9mZnNldF87Cit9OworCisvLyEgRnVuY3Rpb24gcG9pbnRl
ciB0eXBlIG9mIEdldFBhcnNlRXJyb3IoKS4KKy8qISBcaW5ncm91cCBSQVBJREpTT05fRVJST1JT
CisKKyAgICBUaGlzIGlzIHRoZSBwcm90b3R5cGUgZm9yIFxjIEdldFBhcnNlRXJyb3JfWCgpLCB3
aGVyZSBcYyBYIGlzIGEgbG9jYWxlLgorICAgIFVzZXIgY2FuIGR5bmFtaWNhbGx5IGNoYW5nZSBs
b2NhbGUgaW4gcnVudGltZSwgZS5nLjoKK1xjb2RlCisgICAgR2V0UGFyc2VFcnJvckZ1bmMgR2V0
UGFyc2VFcnJvciA9IEdldFBhcnNlRXJyb3JfRW47IC8vIG9yIHdoYXRldmVyCisgICAgY29uc3Qg
UkFQSURKU09OX0VSUk9SX0NIQVJUWVBFKiBzID0gR2V0UGFyc2VFcnJvcihkb2N1bWVudC5HZXRQ
YXJzZUVycm9yQ29kZSgpKTsKK1xlbmRjb2RlCisqLwordHlwZWRlZiBjb25zdCBSQVBJREpTT05f
RVJST1JfQ0hBUlRZUEUqICgqR2V0UGFyc2VFcnJvckZ1bmMpKFBhcnNlRXJyb3JDb2RlKTsKKwor
UkFQSURKU09OX05BTUVTUEFDRV9FTkQKKworI2VuZGlmIC8vIFJBUElESlNPTl9FUlJPUl9FUlJP
Ul9IX18KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0
eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvYmlnaW50ZWdlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9y
YXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvYmlnaW50ZWdlci5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9y
YXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvYmlnaW50ZWdlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMjk0IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEgTWlsbyBZaXAK
Ky8vCisvLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g
YW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisvLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv
Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAorLy8g
aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp
bWl0YXRpb24gdGhlIHJpZ2h0cworLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs
aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorLy8gY29waWVzIG9mIHRo
ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlz
CisvLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zOgorLy8KKy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np
b24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisvLyBhbGwgY29waWVzIG9yIHN1YnN0YW50
aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKy8vCisvLyBUSEUgU09GVFdBUkUgSVMgUFJP
VklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgor
Ly8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFksCisvLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
TkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKy8vIEFVVEhPUlMgT1Ig
Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RI
RVIKKy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg
T1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisvLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX
SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCisvLyBUSEUg
U09GVFdBUkUuCisKKyNpZm5kZWYgUkFQSURKU09OX0JJR0lOVEVHRVJfSF8KKyNkZWZpbmUgUkFQ
SURKU09OX0JJR0lOVEVHRVJfSF8KKworI2luY2x1ZGUgIi4uL3JhcGlkanNvbi5oIgorCisjaWYg
ZGVmaW5lZChfTVNDX1ZFUikgJiYgZGVmaW5lZChfTV9BTUQ2NCkKKyNpbmNsdWRlIDxpbnRyaW4u
aD4gLy8gZm9yIF91bXVsMTI4CisjZW5kaWYKKworUkFQSURKU09OX05BTUVTUEFDRV9CRUdJTgor
bmFtZXNwYWNlIGludGVybmFsIHsKKworY2xhc3MgQmlnSW50ZWdlciB7CitwdWJsaWM6CisgICAg
dHlwZWRlZiB1aW50NjRfdCBUeXBlOworCisgICAgQmlnSW50ZWdlcihjb25zdCBCaWdJbnRlZ2Vy
JiByaHMpIDogY291bnRfKHJocy5jb3VudF8pIHsKKyAgICAgICAgc3RkOjptZW1jcHkoZGlnaXRz
XywgcmhzLmRpZ2l0c18sIGNvdW50XyAqIHNpemVvZihUeXBlKSk7CisgICAgfQorCisgICAgZXhw
bGljaXQgQmlnSW50ZWdlcih1aW50NjRfdCB1KSA6IGNvdW50XygxKSB7CisgICAgICAgIGRpZ2l0
c19bMF0gPSB1OworICAgIH0KKworICAgIEJpZ0ludGVnZXIoY29uc3QgY2hhciogZGVjaW1hbHMs
IHNpemVfdCBsZW5ndGgpIDogY291bnRfKDEpIHsKKyAgICAgICAgUkFQSURKU09OX0FTU0VSVChs
ZW5ndGggPiAwKTsKKyAgICAgICAgZGlnaXRzX1swXSA9IDA7CisgICAgICAgIHNpemVfdCBpID0g
MDsKKyAgICAgICAgY29uc3Qgc2l6ZV90IGtNYXhEaWdpdFBlckl0ZXJhdGlvbiA9IDE5OyAgLy8g
Ml42NCA9IDE4NDQ2NzQ0MDczNzA5NTUxNjE2ID4gMTBeMTkKKyAgICAgICAgd2hpbGUgKGxlbmd0
aCA+PSBrTWF4RGlnaXRQZXJJdGVyYXRpb24pIHsKKyAgICAgICAgICAgIEFwcGVuZERlY2ltYWw2
NChkZWNpbWFscyArIGksIGRlY2ltYWxzICsgaSArIGtNYXhEaWdpdFBlckl0ZXJhdGlvbik7Cisg
ICAgICAgICAgICBsZW5ndGggLT0ga01heERpZ2l0UGVySXRlcmF0aW9uOworICAgICAgICAgICAg
aSArPSBrTWF4RGlnaXRQZXJJdGVyYXRpb247CisgICAgICAgIH0KKworICAgICAgICBpZiAobGVu
Z3RoID4gMCkKKyAgICAgICAgICAgIEFwcGVuZERlY2ltYWw2NChkZWNpbWFscyArIGksIGRlY2lt
YWxzICsgaSArIGxlbmd0aCk7CisgICAgfQorCisgICAgQmlnSW50ZWdlciYgb3BlcmF0b3I9KHVp
bnQ2NF90IHUpIHsKKyAgICAgICAgZGlnaXRzX1swXSA9IHU7ICAgICAgICAgICAgCisgICAgICAg
IGNvdW50XyA9IDE7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBCaWdJbnRl
Z2VyJiBvcGVyYXRvcis9KHVpbnQ2NF90IHUpIHsKKyAgICAgICAgVHlwZSBiYWNrdXAgPSBkaWdp
dHNfWzBdOworICAgICAgICBkaWdpdHNfWzBdICs9IHU7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgY291bnRfIC0gMTsgaSsrKSB7CisgICAgICAgICAgICBpZiAoZGlnaXRzX1tpXSA+
PSBiYWNrdXApCisgICAgICAgICAgICAgICAgcmV0dXJuICp0aGlzOyAvLyBubyBjYXJyeQorICAg
ICAgICAgICAgYmFja3VwID0gZGlnaXRzX1tpICsgMV07CisgICAgICAgICAgICBkaWdpdHNfW2kg
KyAxXSArPSAxOworICAgICAgICB9CisKKyAgICAgICAgLy8gTGFzdCBjYXJyeQorICAgICAgICBp
ZiAoZGlnaXRzX1tjb3VudF8gLSAxXSA8IGJhY2t1cCkKKyAgICAgICAgICAgIFB1c2hCYWNrKDEp
OworCisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBCaWdJbnRlZ2VyJiBvcGVy
YXRvcio9KHVpbnQ2NF90IHUpIHsKKyAgICAgICAgaWYgKHUgPT0gMCkgcmV0dXJuICp0aGlzID0g
MDsKKyAgICAgICAgaWYgKHUgPT0gMSkgcmV0dXJuICp0aGlzOworICAgICAgICBpZiAoKnRoaXMg
PT0gMSkgcmV0dXJuICp0aGlzID0gdTsKKworICAgICAgICB1aW50NjRfdCBrID0gMDsKKyAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudF87IGkrKykgeworICAgICAgICAgICAgdWlu
dDY0X3QgaGk7CisgICAgICAgICAgICBkaWdpdHNfW2ldID0gTXVsQWRkNjQoZGlnaXRzX1tpXSwg
dSwgaywgJmhpKTsKKyAgICAgICAgICAgIGsgPSBoaTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgaWYgKGsgPiAwKQorICAgICAgICAgICAgUHVzaEJhY2soayk7CisKKyAgICAgICAgcmV0
dXJuICp0aGlzOworICAgIH0KKworICAgIEJpZ0ludGVnZXImIG9wZXJhdG9yKj0odWludDMyX3Qg
dSkgeworICAgICAgICBpZiAodSA9PSAwKSByZXR1cm4gKnRoaXMgPSAwOworICAgICAgICBpZiAo
dSA9PSAxKSByZXR1cm4gKnRoaXM7CisgICAgICAgIGlmICgqdGhpcyA9PSAxKSByZXR1cm4gKnRo
aXMgPSB1OworCisgICAgICAgIHVpbnQzMl90IGsgPSAwOworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGNvdW50XzsgaSsrKSB7CisgICAgICAgICAgICBjb25zdCB1aW50NjRfdCBjID0g
ZGlnaXRzX1tpXSA+PiAzMjsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQ2NF90IGQgPSBkaWdpdHNf
W2ldICYgMHhGRkZGRkZGRjsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQ2NF90IHVjID0gdSAqIGM7
CisgICAgICAgICAgICBjb25zdCB1aW50NjRfdCB1ZCA9IHUgKiBkOworICAgICAgICAgICAgY29u
c3QgdWludDY0X3QgcDAgPSB1ZCArIGs7CisgICAgICAgICAgICBjb25zdCB1aW50NjRfdCBwMSA9
IHVjICsgKHAwID4+IDMyKTsKKyAgICAgICAgICAgIGRpZ2l0c19baV0gPSAocDAgJiAweEZGRkZG
RkZGKSB8IChwMSA8PCAzMik7CisgICAgICAgICAgICBrID0gcDEgPj4gMzI7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIGlmIChrID4gMCkKKyAgICAgICAgICAgIFB1c2hCYWNrKGspOwor
CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBCaWdJbnRlZ2VyJiBvcGVyYXRv
cjw8PShzaXplX3Qgc2hpZnQpIHsKKyAgICAgICAgaWYgKElzWmVybygpIHx8IHNoaWZ0ID09IDAp
IHJldHVybiAqdGhpczsKKworICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc2hpZnQgLyBrVHlwZUJp
dDsKKyAgICAgICAgc2l6ZV90IGludGVyU2hpZnQgPSBzaGlmdCAlIGtUeXBlQml0OworICAgICAg
ICBSQVBJREpTT05fQVNTRVJUKGNvdW50XyArIG9mZnNldCA8PSBrQ2FwYWNpdHkpOworCisgICAg
ICAgIGlmIChpbnRlclNoaWZ0ID09IDApIHsKKyAgICAgICAgICAgIHN0ZDo6bWVtbW92ZSgmZGln
aXRzX1tjb3VudF8gLSAxICsgb2Zmc2V0XSwgJmRpZ2l0c19bY291bnRfIC0gMV0sIGNvdW50XyAq
IHNpemVvZihUeXBlKSk7CisgICAgICAgICAgICBjb3VudF8gKz0gb2Zmc2V0OworICAgICAgICB9
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZGlnaXRzX1tjb3VudF9dID0gMDsKKyAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSBjb3VudF87IGkgPiAwOyBpLS0pCisgICAgICAgICAgICAg
ICAgZGlnaXRzX1tpICsgb2Zmc2V0XSA9IChkaWdpdHNfW2ldIDw8IGludGVyU2hpZnQpIHwgKGRp
Z2l0c19baSAtIDFdID4+IChrVHlwZUJpdCAtIGludGVyU2hpZnQpKTsKKyAgICAgICAgICAgIGRp
Z2l0c19bb2Zmc2V0XSA9IGRpZ2l0c19bMF0gPDwgaW50ZXJTaGlmdDsKKyAgICAgICAgICAgIGNv
dW50XyArPSBvZmZzZXQ7CisgICAgICAgICAgICBpZiAoZGlnaXRzX1tjb3VudF9dKQorICAgICAg
ICAgICAgICAgIGNvdW50XysrOworICAgICAgICB9CisKKyAgICAgICAgc3RkOjptZW1zZXQoZGln
aXRzXywgMCwgb2Zmc2V0ICogc2l6ZW9mKFR5cGUpKTsKKworICAgICAgICByZXR1cm4gKnRoaXM7
CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJpZ0ludGVnZXImIHJocykgY29u
c3QgeworICAgICAgICByZXR1cm4gY291bnRfID09IHJocy5jb3VudF8gJiYgbWVtY21wKGRpZ2l0
c18sIHJocy5kaWdpdHNfLCBjb3VudF8gKiBzaXplb2YoVHlwZSkpID09IDA7CisgICAgfQorCisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFR5cGUgcmhzKSBjb25zdCB7CisgICAgICAgIHJldHVy
biBjb3VudF8gPT0gMSAmJiBkaWdpdHNfWzBdID09IHJoczsKKyAgICB9CisKKyAgICBCaWdJbnRl
Z2VyJiBNdWx0aXBseVBvdzUodW5zaWduZWQgZXhwKSB7CisgICAgICAgIHN0YXRpYyBjb25zdCB1
aW50MzJfdCBrUG93NVsxMl0gPSB7CisgICAgICAgICAgICA1LAorICAgICAgICAgICAgNSAqIDUs
CisgICAgICAgICAgICA1ICogNSAqIDUsCisgICAgICAgICAgICA1ICogNSAqIDUgKiA1LAorICAg
ICAgICAgICAgNSAqIDUgKiA1ICogNSAqIDUsCisgICAgICAgICAgICA1ICogNSAqIDUgKiA1ICog
NSAqIDUsCisgICAgICAgICAgICA1ICogNSAqIDUgKiA1ICogNSAqIDUgKiA1LAorICAgICAgICAg
ICAgNSAqIDUgKiA1ICogNSAqIDUgKiA1ICogNSAqIDUsCisgICAgICAgICAgICA1ICogNSAqIDUg
KiA1ICogNSAqIDUgKiA1ICogNSAqIDUsCisgICAgICAgICAgICA1ICogNSAqIDUgKiA1ICogNSAq
IDUgKiA1ICogNSAqIDUgKiA1LAorICAgICAgICAgICAgNSAqIDUgKiA1ICogNSAqIDUgKiA1ICog
NSAqIDUgKiA1ICogNSAqIDUsCisgICAgICAgICAgICA1ICogNSAqIDUgKiA1ICogNSAqIDUgKiA1
ICogNSAqIDUgKiA1ICogNSAqIDUKKyAgICAgICAgfTsKKyAgICAgICAgaWYgKGV4cCA9PSAwKSBy
ZXR1cm4gKnRoaXM7CisgICAgICAgIGZvciAoOyBleHAgPj0gMjc7IGV4cCAtPSAyNykgKnRoaXMg
Kj0gUkFQSURKU09OX1VJTlQ2NF9DMigwWDY3NjVDNzkzLCAwWEZBMTAwNzlEKTsgLy8gNV4yNwor
ICAgICAgICBmb3IgKDsgZXhwID49IDEzOyBleHAgLT0gMTMpICp0aGlzICo9IDEyMjA3MDMxMjV1
OyAvLyA1XjEzCisgICAgICAgIGlmIChleHAgPiAwKSAgICAgICAgICAgICAgICAgKnRoaXMgKj0g
a1BvdzVbZXhwIC0gMV07CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICAvLyBD
b21wdXRlIGFic29sdXRlIGRpZmZlcmVuY2Ugb2YgdGhpcyBhbmQgcmhzLgorICAgIC8vIFJldHVy
biBmYWxzZSBpZiB0aGlzIDwgcmhzCisgICAgYm9vbCBEaWZmZXJlbmNlKGNvbnN0IEJpZ0ludGVn
ZXImIHJocywgQmlnSW50ZWdlciogb3V0KSBjb25zdCB7CisgICAgICAgIGludCBjbXAgPSBDb21w
YXJlKHJocyk7CisgICAgICAgIGlmIChjbXAgPT0gMCkgeworICAgICAgICAgICAgKm91dCA9IEJp
Z0ludGVnZXIoMCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAg
ICAgY29uc3QgQmlnSW50ZWdlciAqYSwgKmI7ICAvLyBNYWtlcyBhID4gYgorICAgICAgICBib29s
IHJldDsKKyAgICAgICAgaWYgKGNtcCA8IDApIHsgYSA9ICZyaHM7IGIgPSB0aGlzOyByZXQgPSB0
cnVlOyB9CisgICAgICAgIGVsc2UgICAgICAgICB7IGEgPSB0aGlzOyBiID0gJnJoczsgcmV0ID0g
ZmFsc2U7IH0KKworICAgICAgICBUeXBlIGJvcnJvdyA9IDA7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgYS0+Y291bnRfOyBpKyspIHsKKyAgICAgICAgICAgIFR5cGUgZCA9IGEtPmRp
Z2l0c19baV0gLSBib3Jyb3c7CisgICAgICAgICAgICBpZiAoaSA8IGItPmNvdW50XykKKyAgICAg
ICAgICAgICAgICBkIC09IGItPmRpZ2l0c19baV07CisgICAgICAgICAgICBib3Jyb3cgPSAoZCA+
IGEtPmRpZ2l0c19baV0pID8gMSA6IDA7CisgICAgICAgICAgICBvdXQtPmRpZ2l0c19baV0gPSBk
OworICAgICAgICAgICAgaWYgKGQgIT0gMCkKKyAgICAgICAgICAgICAgICBvdXQtPmNvdW50XyA9
IGkgKyAxOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICBp
bnQgQ29tcGFyZShjb25zdCBCaWdJbnRlZ2VyJiByaHMpIGNvbnN0IHsKKyAgICAgICAgaWYgKGNv
dW50XyAhPSByaHMuY291bnRfKQorICAgICAgICAgICAgcmV0dXJuIGNvdW50XyA8IHJocy5jb3Vu
dF8gPyAtMSA6IDE7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IGNvdW50XzsgaS0tID4gMDsp
CisgICAgICAgICAgICBpZiAoZGlnaXRzX1tpXSAhPSByaHMuZGlnaXRzX1tpXSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZGlnaXRzX1tpXSA8IHJocy5kaWdpdHNfW2ldID8gLTEgOiAxOworCisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHNpemVfdCBHZXRDb3VudCgpIGNvbnN0IHsg
cmV0dXJuIGNvdW50XzsgfQorICAgIFR5cGUgR2V0RGlnaXQoc2l6ZV90IGluZGV4KSBjb25zdCB7
IFJBUElESlNPTl9BU1NFUlQoaW5kZXggPCBjb3VudF8pOyByZXR1cm4gZGlnaXRzX1tpbmRleF07
IH0KKyAgICBib29sIElzWmVybygpIGNvbnN0IHsgcmV0dXJuIGNvdW50XyA9PSAxICYmIGRpZ2l0
c19bMF0gPT0gMDsgfQorCitwcml2YXRlOgorICAgIHZvaWQgQXBwZW5kRGVjaW1hbDY0KGNvbnN0
IGNoYXIqIGJlZ2luLCBjb25zdCBjaGFyKiBlbmQpIHsKKyAgICAgICAgdWludDY0X3QgdSA9IFBh
cnNlVWludDY0KGJlZ2luLCBlbmQpOworICAgICAgICBpZiAoSXNaZXJvKCkpCisgICAgICAgICAg
ICAqdGhpcyA9IHU7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdW5zaWduZWQgZXhwID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCAtIGJlZ2luKTsKKyAgICAgICAgICAgIChNdWx0aXBs
eVBvdzUoZXhwKSA8PD0gZXhwKSArPSB1OyAgIC8vICp0aGlzID0gKnRoaXMgKiAxMF5leHAgKyB1
CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIFB1c2hCYWNrKFR5cGUgZGlnaXQpIHsKKyAg
ICAgICAgUkFQSURKU09OX0FTU0VSVChjb3VudF8gPCBrQ2FwYWNpdHkpOworICAgICAgICBkaWdp
dHNfW2NvdW50XysrXSA9IGRpZ2l0OworICAgIH0KKworICAgIHN0YXRpYyB1aW50NjRfdCBQYXJz
ZVVpbnQ2NChjb25zdCBjaGFyKiBiZWdpbiwgY29uc3QgY2hhciogZW5kKSB7CisgICAgICAgIHVp
bnQ2NF90IHIgPSAwOworICAgICAgICBmb3IgKGNvbnN0IGNoYXIqIHAgPSBiZWdpbjsgcCAhPSBl
bmQ7ICsrcCkgeworICAgICAgICAgICAgUkFQSURKU09OX0FTU0VSVCgqcCA+PSAnMCcgJiYgKnAg
PD0gJzknKTsKKyAgICAgICAgICAgIHIgPSByICogMTAgKyAoKnAgLSAnMCcpOworICAgICAgICB9
CisgICAgICAgIHJldHVybiByOworICAgIH0KKworICAgIC8vIEFzc3VtZSBhICogYiArIGsgPCAy
XjEyOAorICAgIHN0YXRpYyB1aW50NjRfdCBNdWxBZGQ2NCh1aW50NjRfdCBhLCB1aW50NjRfdCBi
LCB1aW50NjRfdCBrLCB1aW50NjRfdCogb3V0SGlnaCkgeworI2lmIGRlZmluZWQoX01TQ19WRVIp
ICYmIGRlZmluZWQoX01fQU1ENjQpCisgICAgICAgIHVpbnQ2NF90IGxvdyA9IF91bXVsMTI4KGEs
IGIsIG91dEhpZ2gpICsgazsKKyAgICAgICAgaWYgKGxvdyA8IGspCisgICAgICAgICAgICAoKm91
dEhpZ2gpKys7CisgICAgICAgIHJldHVybiBsb3c7CisjZWxpZiAoX19HTlVDX18gPiA0IHx8IChf
X0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fID49IDYpKSAmJiBkZWZpbmVkKF9feDg2XzY0
X18pCisgICAgICAgIHVuc2lnbmVkIF9faW50MTI4IHAgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBf
X2ludDEyOD4oYSkgKiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBfX2ludDEyOD4oYik7CisgICAgICAg
IHAgKz0gazsKKyAgICAgICAgKm91dEhpZ2ggPSBwID4+IDY0OworICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KHApOworI2Vsc2UKKyAgICAgICAgY29uc3QgdWludDY0X3QgYTAg
PSBhICYgMHhGRkZGRkZGRiwgYTEgPSBhID4+IDMyLCBiMCA9IGIgJiAweEZGRkZGRkZGLCBiMSA9
IGIgPj4gMzI7CisgICAgICAgIHVpbnQ2NF90IHgwID0gYTAgKiBiMCwgeDEgPSBhMCAqIGIxLCB4
MiA9IGExICogYjAsIHgzID0gYTEgKiBiMTsKKyAgICAgICAgeDEgKz0gKHgwID4+IDMyKTsgLy8g
Y2FuJ3QgZ2l2ZSBjYXJyeQorICAgICAgICB4MSArPSB4MjsKKyAgICAgICAgaWYgKHgxIDwgeDIp
CisgICAgICAgICAgICB4MyArPSAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDEpIDw8IDMyKTsKKyAg
ICAgICAgdWludDY0X3QgbG8gPSAoeDEgPDwgMzIpICsgKHgwICYgMHhGRkZGRkZGRik7CisgICAg
ICAgIHVpbnQ2NF90IGhpID0geDMgKyAoeDEgPj4gMzIpOworCisgICAgICAgIGxvICs9IGs7Cisg
ICAgICAgIGlmIChsbyA8IGspCisgICAgICAgICAgICBoaSsrOworICAgICAgICAqb3V0SGlnaCA9
IGhpOworICAgICAgICByZXR1cm4gbG87CisjZW5kaWYKKyAgICB9CisKKyAgICBzdGF0aWMgVHlw
ZSBGdWxsQWRkKFR5cGUgYSwgVHlwZSBiLCBib29sIGluQ2FycnksIGJvb2wqIG91dENhcnJ5KSB7
CisgICAgICAgIFR5cGUgYyA9IGEgKyBiICsgKGluQ2FycnkgPyAxIDogMCk7CisgICAgICAgICpv
dXRDYXJyeSA9IGMgPCBhOworICAgICAgICByZXR1cm4gYzsKKyAgICB9CisKKyAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IGtCaXRDb3VudCA9IDMzMjg7ICAvLyA2NGJpdCAqIDU0ID4gMTBeMTAwMAor
ICAgIHN0YXRpYyBjb25zdCBzaXplX3Qga0NhcGFjaXR5ID0ga0JpdENvdW50IC8gc2l6ZW9mKFR5
cGUpOworICAgIHN0YXRpYyBjb25zdCBzaXplX3Qga1R5cGVCaXQgPSBzaXplb2YoVHlwZSkgKiA4
OworCisgICAgVHlwZSBkaWdpdHNfW2tDYXBhY2l0eV07CisgICAgc2l6ZV90IGNvdW50XzsKK307
CisKK30gLy8gbmFtZXNwYWNlIGludGVybmFsCitSQVBJREpTT05fTkFNRVNQQUNFX0VORAorCisj
ZW5kaWYgLy8gUkFQSURKU09OX0JJR0lOVEVHRVJfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24v
aW50ZXJuYWwvZGl5ZnAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ludGVybmFs
L2RpeWZwLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9pbnRlcm5hbC9kaXlm
cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjY4IEBACisvLyBDb3B5cmlnaHQgKEMpIDIw
MTEgTWlsbyBZaXAKKy8vCisvLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9m
IGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisvLyBvZiB0aGlzIHNvZnR3
YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwg
dG8gZGVhbAorLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGlu
ZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cworLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnks
IG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorLy8g
Y29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhl
IFNvZnR3YXJlIGlzCisvLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zOgorLy8KKy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0
aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisvLyBhbGwgY29waWVz
IG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKy8vCisvLyBUSEUgU09G
VFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwg
RVhQUkVTUyBPUgorLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisvLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKy8v
IEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERB
TUFHRVMgT1IgT1RIRVIKKy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09O
VFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisvLyBPVVQgT0YgT1IgSU4g
Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdT
IElOCisvLyBUSEUgU09GVFdBUkUuCisKKy8vIFRoaXMgaXMgYSBDKysgaGVhZGVyLW9ubHkgaW1w
bGVtZW50YXRpb24gb2YgR3Jpc3UyIGFsZ29yaXRobSBmcm9tIHRoZSBwdWJsaWNhdGlvbjoKKy8v
IExvaXRzY2gsIEZsb3JpYW4uICJQcmludGluZyBmbG9hdGluZy1wb2ludCBudW1iZXJzIHF1aWNr
bHkgYW5kIGFjY3VyYXRlbHkgd2l0aAorLy8gaW50ZWdlcnMuIiBBQ00gU2lncGxhbiBOb3RpY2Vz
IDQ1LjYgKDIwMTApOiAyMzMtMjQzLgorCisjaWZuZGVmIFJBUElESlNPTl9ESVlGUF9IXworI2Rl
ZmluZSBSQVBJREpTT05fRElZRlBfSF8KKworI2lmIGRlZmluZWQoX01TQ19WRVIpCisjaW5jbHVk
ZSA8aW50cmluLmg+CisjaWYgZGVmaW5lZChfTV9BTUQ2NCkKKyNwcmFnbWEgaW50cmluc2ljKF9C
aXRTY2FuUmV2ZXJzZTY0KQorI2VuZGlmCisjZW5kaWYKKworUkFQSURKU09OX05BTUVTUEFDRV9C
RUdJTgorbmFtZXNwYWNlIGludGVybmFsIHsKKworI2lmZGVmIF9fR05VQ19fCitSQVBJREpTT05f
RElBR19QVVNICitSQVBJREpTT05fRElBR19PRkYoZWZmYysrKQorI2VuZGlmCisKK3N0cnVjdCBE
aXlGcCB7CisgICAgRGl5RnAoKSB7fQorCisgICAgRGl5RnAodWludDY0X3QgZnAsIGludCBleHAp
IDogZihmcCksIGUoZXhwKSB7fQorCisgICAgZXhwbGljaXQgRGl5RnAoZG91YmxlIGQpIHsKKyAg
ICAgICAgdW5pb24geworICAgICAgICAgICAgZG91YmxlIGQ7CisgICAgICAgICAgICB1aW50NjRf
dCB1NjQ7CisgICAgICAgIH0gdSA9IHsgZCB9OworCisgICAgICAgIGludCBiaWFzZWRfZSA9ICh1
LnU2NCAmIGtEcEV4cG9uZW50TWFzaykgPj4ga0RwU2lnbmlmaWNhbmRTaXplOworICAgICAgICB1
aW50NjRfdCBzaWduaWZpY2FuZCA9ICh1LnU2NCAmIGtEcFNpZ25pZmljYW5kTWFzayk7CisgICAg
ICAgIGlmIChiaWFzZWRfZSAhPSAwKSB7CisgICAgICAgICAgICBmID0gc2lnbmlmaWNhbmQgKyBr
RHBIaWRkZW5CaXQ7CisgICAgICAgICAgICBlID0gYmlhc2VkX2UgLSBrRHBFeHBvbmVudEJpYXM7
CisgICAgICAgIH0gCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZiA9IHNpZ25pZmljYW5k
OworICAgICAgICAgICAgZSA9IGtEcE1pbkV4cG9uZW50ICsgMTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIERpeUZwIG9wZXJhdG9yLShjb25zdCBEaXlGcCYgcmhzKSBjb25zdCB7CisgICAgICAg
IHJldHVybiBEaXlGcChmIC0gcmhzLmYsIGUpOworICAgIH0KKworICAgIERpeUZwIG9wZXJhdG9y
Kihjb25zdCBEaXlGcCYgcmhzKSBjb25zdCB7CisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgZGVm
aW5lZChfTV9BTUQ2NCkKKyAgICAgICAgdWludDY0X3QgaDsKKyAgICAgICAgdWludDY0X3QgbCA9
IF91bXVsMTI4KGYsIHJocy5mLCAmaCk7CisgICAgICAgIGlmIChsICYgKHVpbnQ2NF90KDEpIDw8
IDYzKSkgLy8gcm91bmRpbmcKKyAgICAgICAgICAgIGgrKzsKKyAgICAgICAgcmV0dXJuIERpeUZw
KGgsIGUgKyByaHMuZSArIDY0KTsKKyNlbGlmIChfX0dOVUNfXyA+IDQgfHwgKF9fR05VQ19fID09
IDQgJiYgX19HTlVDX01JTk9SX18gPj0gNikpICYmIGRlZmluZWQoX194ODZfNjRfXykKKyAgICAg
ICAgdW5zaWduZWQgX19pbnQxMjggcCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIF9faW50MTI4Pihm
KSAqIHN0YXRpY19jYXN0PHVuc2lnbmVkIF9faW50MTI4PihyaHMuZik7CisgICAgICAgIHVpbnQ2
NF90IGggPSBwID4+IDY0OworICAgICAgICB1aW50NjRfdCBsID0gc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KHApOworICAgICAgICBpZiAobCAmICh1aW50NjRfdCgxKSA8PCA2MykpIC8vIHJvdW5kaW5n
CisgICAgICAgICAgICBoKys7CisgICAgICAgIHJldHVybiBEaXlGcChoLCBlICsgcmhzLmUgKyA2
NCk7CisjZWxzZQorICAgICAgICBjb25zdCB1aW50NjRfdCBNMzIgPSAweEZGRkZGRkZGOworICAg
ICAgICBjb25zdCB1aW50NjRfdCBhID0gZiA+PiAzMjsKKyAgICAgICAgY29uc3QgdWludDY0X3Qg
YiA9IGYgJiBNMzI7CisgICAgICAgIGNvbnN0IHVpbnQ2NF90IGMgPSByaHMuZiA+PiAzMjsKKyAg
ICAgICAgY29uc3QgdWludDY0X3QgZCA9IHJocy5mICYgTTMyOworICAgICAgICBjb25zdCB1aW50
NjRfdCBhYyA9IGEgKiBjOworICAgICAgICBjb25zdCB1aW50NjRfdCBiYyA9IGIgKiBjOworICAg
ICAgICBjb25zdCB1aW50NjRfdCBhZCA9IGEgKiBkOworICAgICAgICBjb25zdCB1aW50NjRfdCBi
ZCA9IGIgKiBkOworICAgICAgICB1aW50NjRfdCB0bXAgPSAoYmQgPj4gMzIpICsgKGFkICYgTTMy
KSArIChiYyAmIE0zMik7CisgICAgICAgIHRtcCArPSAxVSA8PCAzMTsgIC8vLyBtdWx0X3JvdW5k
CisgICAgICAgIHJldHVybiBEaXlGcChhYyArIChhZCA+PiAzMikgKyAoYmMgPj4gMzIpICsgKHRt
cCA+PiAzMiksIGUgKyByaHMuZSArIDY0KTsKKyNlbmRpZgorICAgIH0KKworICAgIERpeUZwIE5v
cm1hbGl6ZSgpIGNvbnN0IHsKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBkZWZpbmVkKF9NX0FN
RDY0KQorICAgICAgICB1bnNpZ25lZCBsb25nIGluZGV4OworICAgICAgICBfQml0U2NhblJldmVy
c2U2NCgmaW5kZXgsIGYpOworICAgICAgICByZXR1cm4gRGl5RnAoZiA8PCAoNjMgLSBpbmRleCks
IGUgLSAoNjMgLSBpbmRleCkpOworI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18g
Pj0gNAorICAgICAgICBpbnQgcyA9IF9fYnVpbHRpbl9jbHpsbChmKTsKKyAgICAgICAgcmV0dXJu
IERpeUZwKGYgPDwgcywgZSAtIHMpOworI2Vsc2UKKyAgICAgICAgRGl5RnAgcmVzID0gKnRoaXM7
CisgICAgICAgIHdoaWxlICghKHJlcy5mICYgKHN0YXRpY19jYXN0PHVpbnQ2NF90PigxKSA8PCA2
MykpKSB7CisgICAgICAgICAgICByZXMuZiA8PD0gMTsKKyAgICAgICAgICAgIHJlcy5lLS07Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlczsKKyNlbmRpZgorICAgIH0KKworICAgIERpeUZw
IE5vcm1hbGl6ZUJvdW5kYXJ5KCkgY29uc3QgeworICAgICAgICBEaXlGcCByZXMgPSAqdGhpczsK
KyAgICAgICAgd2hpbGUgKCEocmVzLmYgJiAoa0RwSGlkZGVuQml0IDw8IDEpKSkgeworICAgICAg
ICAgICAgcmVzLmYgPDw9IDE7CisgICAgICAgICAgICByZXMuZS0tOworICAgICAgICB9CisgICAg
ICAgIHJlcy5mIDw8PSAoa0RpeVNpZ25pZmljYW5kU2l6ZSAtIGtEcFNpZ25pZmljYW5kU2l6ZSAt
IDIpOworICAgICAgICByZXMuZSA9IHJlcy5lIC0gKGtEaXlTaWduaWZpY2FuZFNpemUgLSBrRHBT
aWduaWZpY2FuZFNpemUgLSAyKTsKKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICB9CisKKyAgICB2
b2lkIE5vcm1hbGl6ZWRCb3VuZGFyaWVzKERpeUZwKiBtaW51cywgRGl5RnAqIHBsdXMpIGNvbnN0
IHsKKyAgICAgICAgRGl5RnAgcGwgPSBEaXlGcCgoZiA8PCAxKSArIDEsIGUgLSAxKS5Ob3JtYWxp
emVCb3VuZGFyeSgpOworICAgICAgICBEaXlGcCBtaSA9IChmID09IGtEcEhpZGRlbkJpdCkgPyBE
aXlGcCgoZiA8PCAyKSAtIDEsIGUgLSAyKSA6IERpeUZwKChmIDw8IDEpIC0gMSwgZSAtIDEpOwor
ICAgICAgICBtaS5mIDw8PSBtaS5lIC0gcGwuZTsKKyAgICAgICAgbWkuZSA9IHBsLmU7CisgICAg
ICAgICpwbHVzID0gcGw7CisgICAgICAgICptaW51cyA9IG1pOworICAgIH0KKworICAgIGRvdWJs
ZSBUb0RvdWJsZSgpIGNvbnN0IHsKKyAgICAgICAgdW5pb24geworICAgICAgICAgICAgZG91Ymxl
IGQ7CisgICAgICAgICAgICB1aW50NjRfdCB1NjQ7CisgICAgICAgIH11OworICAgICAgICB1aW50
NjRfdCBzaWduaWZpY2FuZCA9IGY7CisgICAgICAgIGludCBleHBvbmVudCA9IGU7CisgICAgICAg
IHdoaWxlIChzaWduaWZpY2FuZCA+IGtEcEhpZGRlbkJpdCArIGtEcFNpZ25pZmljYW5kTWFzaykg
eworICAgICAgICAgICAgc2lnbmlmaWNhbmQgPj49IDE7CisgICAgICAgICAgICBleHBvbmVudCsr
OworICAgICAgICB9CisgICAgICAgIHdoaWxlIChleHBvbmVudCA+IGtEcERlbm9ybWFsRXhwb25l
bnQgJiYgKHNpZ25pZmljYW5kICYga0RwSGlkZGVuQml0KSA9PSAwKSB7CisgICAgICAgICAgICBz
aWduaWZpY2FuZCA8PD0gMTsKKyAgICAgICAgICAgIGV4cG9uZW50LS07CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKGV4cG9uZW50ID49IGtEcE1heEV4cG9uZW50KSB7CisgICAgICAgICAgICB1LnU2
NCA9IGtEcEV4cG9uZW50TWFzazsgICAgLy8gSW5maW5pdHkKKyAgICAgICAgICAgIHJldHVybiB1
LmQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZXhwb25lbnQgPCBrRHBEZW5vcm1hbEV4
cG9uZW50KQorICAgICAgICAgICAgcmV0dXJuIDAuMDsKKyAgICAgICAgY29uc3QgdWludDY0X3Qg
YmUgPSAoZXhwb25lbnQgPT0ga0RwRGVub3JtYWxFeHBvbmVudCAmJiAoc2lnbmlmaWNhbmQgJiBr
RHBIaWRkZW5CaXQpID09IDApID8gMCA6IAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KGV4cG9uZW50ICsga0RwRXhwb25lbnRCaWFzKTsKKyAgICAgICAgdS51NjQgPSAoc2lnbmlm
aWNhbmQgJiBrRHBTaWduaWZpY2FuZE1hc2spIHwgKGJlIDw8IGtEcFNpZ25pZmljYW5kU2l6ZSk7
CisgICAgICAgIHJldHVybiB1LmQ7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGludCBrRGl5
U2lnbmlmaWNhbmRTaXplID0gNjQ7CisgICAgc3RhdGljIGNvbnN0IGludCBrRHBTaWduaWZpY2Fu
ZFNpemUgPSA1MjsKKyAgICBzdGF0aWMgY29uc3QgaW50IGtEcEV4cG9uZW50QmlhcyA9IDB4M0ZG
ICsga0RwU2lnbmlmaWNhbmRTaXplOworICAgIHN0YXRpYyBjb25zdCBpbnQga0RwTWF4RXhwb25l
bnQgPSAweDdGRiAtIGtEcEV4cG9uZW50QmlhczsKKyAgICBzdGF0aWMgY29uc3QgaW50IGtEcE1p
bkV4cG9uZW50ID0gLWtEcEV4cG9uZW50QmlhczsKKyAgICBzdGF0aWMgY29uc3QgaW50IGtEcERl
bm9ybWFsRXhwb25lbnQgPSAta0RwRXhwb25lbnRCaWFzICsgMTsKKyAgICBzdGF0aWMgY29uc3Qg
dWludDY0X3Qga0RwRXhwb25lbnRNYXNrID0gUkFQSURKU09OX1VJTlQ2NF9DMigweDdGRjAwMDAw
LCAweDAwMDAwMDAwKTsKKyAgICBzdGF0aWMgY29uc3QgdWludDY0X3Qga0RwU2lnbmlmaWNhbmRN
YXNrID0gUkFQSURKU09OX1VJTlQ2NF9DMigweDAwMEZGRkZGLCAweEZGRkZGRkZGKTsKKyAgICBz
dGF0aWMgY29uc3QgdWludDY0X3Qga0RwSGlkZGVuQml0ID0gUkFQSURKU09OX1VJTlQ2NF9DMigw
eDAwMTAwMDAwLCAweDAwMDAwMDAwKTsKKworICAgIHVpbnQ2NF90IGY7CisgICAgaW50IGU7Cit9
OworCitpbmxpbmUgRGl5RnAgR2V0Q2FjaGVkUG93ZXJCeUluZGV4KHNpemVfdCBpbmRleCkgewor
ICAgIC8vIDEwXi0zNDgsIDEwXi0zNDAsIC4uLiwgMTBeMzQwCisgICAgc3RhdGljIGNvbnN0IHVp
bnQ2NF90IGtDYWNoZWRQb3dlcnNfRltdID0geworICAgICAgICBSQVBJREpTT05fVUlOVDY0X0My
KDB4ZmE4ZmQ1YTAsIDB4MDgxYzAyODgpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4YmFhZWUxN2Ys
IDB4YTIzZWJmNzYpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4OGIxNmZiMjAsIDB4
MzA1NWFjNzYpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4Y2Y0Mjg5NGEsIDB4NWRjZTM1ZWEpLAor
ICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4OWE2YmIwYWEsIDB4NTU2NTNiMmQpLCBSQVBJ
REpTT05fVUlOVDY0X0MyKDB4ZTYxYWNmMDMsIDB4M2QxYTQ1ZGYpLAorICAgICAgICBSQVBJREpT
T05fVUlOVDY0X0MyKDB4YWI3MGZlMTcsIDB4Yzc5YWM2Y2EpLCBSQVBJREpTT05fVUlOVDY0X0My
KDB4ZmY3N2IxZmMsIDB4YmViY2RjNGYpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4
YmU1NjkxZWYsIDB4NDE2YmQ2MGMpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4OGRkMDFmYWQsIDB4
OTA3ZmZjM2MpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZDM1MTVjMjgsIDB4MzE1
NTlhODMpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4OWQ3MWFjOGYsIDB4YWRhNmM5YjUpLAorICAg
ICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZWE5YzIyNzcsIDB4MjNlZThiY2IpLCBSQVBJREpT
T05fVUlOVDY0X0MyKDB4YWVjYzQ5OTEsIDB4NDA3ODUzNmQpLAorICAgICAgICBSQVBJREpTT05f
VUlOVDY0X0MyKDB4ODIzYzEyNzksIDB4NWRiNmNlNTcpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4
YzIxMDk0MzYsIDB4NGRmYjU2MzcpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4OTA5
NmVhNmYsIDB4Mzg0ODk4NGYpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZDc3NDg1Y2IsIDB4MjU4
MjNhYzcpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4YTA4NmNmY2QsIDB4OTdiZjk3
ZjQpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZWYzNDBhOTgsIDB4MTcyYWFjZTUpLAorICAgICAg
ICBSQVBJREpTT05fVUlOVDY0X0MyKDB4YjIzODY3ZmIsIDB4MmEzNWIyOGUpLCBSQVBJREpTT05f
VUlOVDY0X0MyKDB4ODRjOGQ0ZGYsIDB4ZDJjNjNmM2IpLAorICAgICAgICBSQVBJREpTT05fVUlO
VDY0X0MyKDB4YzVkZDQ0MjcsIDB4MWFkM2NkYmEpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4OTM2
YjlmY2UsIDB4YmIyNWM5OTYpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZGJhYzZj
MjQsIDB4N2Q2MmE1ODQpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4YTNhYjY2NTgsIDB4MGQ1ZmRh
ZjYpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZjNlMmY4OTMsIDB4ZGVjM2YxMjYp
LCBSQVBJREpTT05fVUlOVDY0X0MyKDB4YjViNWFkYTgsIDB4YWFmZjgwYjgpLAorICAgICAgICBS
QVBJREpTT05fVUlOVDY0X0MyKDB4ODc2MjVmMDUsIDB4NmM3YzRhOGIpLCBSQVBJREpTT05fVUlO
VDY0X0MyKDB4YzliY2ZmNjAsIDB4MzRjMTMwNTMpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0
X0MyKDB4OTY0ZTg1OGMsIDB4OTFiYTI2NTUpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZGZmOTc3
MjQsIDB4NzAyOTdlYmQpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4YTZkZmJkOWYs
IDB4YjhlNWI4OGYpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZjhhOTVmY2YsIDB4ODg3NDdkOTQp
LAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4Yjk0NDcwOTMsIDB4OGZhODliY2YpLCBS
QVBJREpTT05fVUlOVDY0X0MyKDB4OGEwOGYwZjgsIDB4YmYwZjE1NmIpLAorICAgICAgICBSQVBJ
REpTT05fVUlOVDY0X0MyKDB4Y2RiMDI1NTUsIDB4NjUzMTMxYjYpLCBSQVBJREpTT05fVUlOVDY0
X0MyKDB4OTkzZmUyYzYsIDB4ZDA3YjdmYWMpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0My
KDB4ZTQ1YzEwYzQsIDB4MmEyYjNiMDYpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4YWEyNDI0OTks
IDB4Njk3MzkyZDMpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZmQ4N2I1ZjIsIDB4
ODMwMGNhMGUpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4YmNlNTA4NjQsIDB4OTIxMTFhZWIpLAor
ICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4OGNiY2NjMDksIDB4NmY1MDg4Y2MpLCBSQVBJ
REpTT05fVUlOVDY0X0MyKDB4ZDFiNzE3NTgsIDB4ZTIxOTY1MmMpLAorICAgICAgICBSQVBJREpT
T05fVUlOVDY0X0MyKDB4OWM0MDAwMDAsIDB4MDAwMDAwMDApLCBSQVBJREpTT05fVUlOVDY0X0My
KDB4ZThkNGE1MTAsIDB4MDAwMDAwMDApLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4
YWQ3OGViYzUsIDB4YWM2MjAwMDApLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4ODEzZjM5NzgsIDB4
Zjg5NDA5ODQpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4YzA5N2NlN2IsIDB4Yzkw
NzE1YjMpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4OGY3ZTMyY2UsIDB4N2JlYTVjNzApLAorICAg
ICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZDVkMjM4YTQsIDB4YWJlOTgwNjgpLCBSQVBJREpT
T05fVUlOVDY0X0MyKDB4OWY0ZjI3MjYsIDB4MTc5YTIyNDUpLAorICAgICAgICBSQVBJREpTT05f
VUlOVDY0X0MyKDB4ZWQ2M2EyMzEsIDB4ZDRjNGZiMjcpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4
YjBkZTY1MzgsIDB4OGNjOGFkYTgpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ODNj
NzA4OGUsIDB4MWFhYjY1ZGIpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4YzQ1ZDFkZjksIDB4NDI3
MTFkOWEpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4OTI0ZDY5MmMsIDB4YTYxYmU3
NTgpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZGEwMWVlNjQsIDB4MWE3MDhkZWEpLAorICAgICAg
ICBSQVBJREpTT05fVUlOVDY0X0MyKDB4YTI2ZGEzOTksIDB4OWFlZjc3NGEpLCBSQVBJREpTT05f
VUlOVDY0X0MyKDB4ZjIwOTc4N2IsIDB4YjQ3ZDZiODUpLAorICAgICAgICBSQVBJREpTT05fVUlO
VDY0X0MyKDB4YjQ1NGU0YTEsIDB4NzlkZDE4NzcpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4ODY1
Yjg2OTIsIDB4NWI5YmM1YzIpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4YzgzNTUz
YzUsIDB4Yzg5NjVkM2QpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4OTUyYWI0NWMsIDB4ZmE5N2Ew
YjMpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZGU0NjlmYmQsIDB4OTlhMDVmZTMp
LCBSQVBJREpTT05fVUlOVDY0X0MyKDB4YTU5YmMyMzQsIDB4ZGIzOThjMjUpLAorICAgICAgICBS
QVBJREpTT05fVUlOVDY0X0MyKDB4ZjZjNjlhNzIsIDB4YTM5ODlmNWMpLCBSQVBJREpTT05fVUlO
VDY0X0MyKDB4YjdkY2JmNTMsIDB4NTRlOWJlY2UpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0
X0MyKDB4ODhmY2YzMTcsIDB4ZjIyMjQxZTIpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4Y2MyMGNl
OWIsIDB4ZDM1Yzc4YTUpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4OTgxNjVhZjMs
IDB4N2IyMTUzZGYpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZTJhMGI1ZGMsIDB4OTcxZjMwM2Ep
LAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4YThkOWQxNTMsIDB4NWNlM2IzOTYpLCBS
QVBJREpTT05fVUlOVDY0X0MyKDB4ZmI5YjdjZDksIDB4YTRhNzQ0M2MpLAorICAgICAgICBSQVBJ
REpTT05fVUlOVDY0X0MyKDB4YmI3NjRjNGMsIDB4YTdhNDQ0MTApLCBSQVBJREpTT05fVUlOVDY0
X0MyKDB4OGJhYjhlZWYsIDB4YjY0MDljMWEpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0My
KDB4ZDAxZmVmMTAsIDB4YTY1Nzg0MmMpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4OWIxMGE0ZTUs
IDB4ZTk5MTMxMjkpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZTcxMDliZmIsIDB4
YTE5YzBjOWQpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4YWMyODIwZDksIDB4NjIzYmY0MjkpLAor
ICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ODA0NDRiNWUsIDB4N2FhN2NmODUpLCBSQVBJ
REpTT05fVUlOVDY0X0MyKDB4YmYyMWU0NDAsIDB4MDNhY2RkMmQpLAorICAgICAgICBSQVBJREpT
T05fVUlOVDY0X0MyKDB4OGU2NzljMmYsIDB4NWU0NGZmOGYpLCBSQVBJREpTT05fVUlOVDY0X0My
KDB4ZDQzMzE3OWQsIDB4OWM4Y2I4NDEpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4
OWUxOWRiOTIsIDB4YjRlMzFiYTkpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZWI5NmJmNmUsIDB4
YmFkZjc3ZDkpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4YWY4NzAyM2IsIDB4OWJm
MGVlNmIpCisgICAgfTsKKyAgICBzdGF0aWMgY29uc3QgaW50MTZfdCBrQ2FjaGVkUG93ZXJzX0Vb
XSA9IHsKKyAgICAgICAgLTEyMjAsIC0xMTkzLCAtMTE2NiwgLTExNDAsIC0xMTEzLCAtMTA4Nywg
LTEwNjAsIC0xMDM0LCAtMTAwNywgIC05ODAsCisgICAgICAgIC05NTQsICAtOTI3LCAgLTkwMSwg
IC04NzQsICAtODQ3LCAgLTgyMSwgIC03OTQsICAtNzY4LCAgLTc0MSwgIC03MTUsCisgICAgICAg
IC02ODgsICAtNjYxLCAgLTYzNSwgIC02MDgsICAtNTgyLCAgLTU1NSwgIC01MjksICAtNTAyLCAg
LTQ3NSwgIC00NDksCisgICAgICAgIC00MjIsICAtMzk2LCAgLTM2OSwgIC0zNDMsICAtMzE2LCAg
LTI4OSwgIC0yNjMsICAtMjM2LCAgLTIxMCwgIC0xODMsCisgICAgICAgIC0xNTcsICAtMTMwLCAg
LTEwMywgICAtNzcsICAgLTUwLCAgIC0yNCwgICAgIDMsICAgIDMwLCAgICA1NiwgICAgODMsCisg
ICAgICAgIDEwOSwgICAxMzYsICAgMTYyLCAgIDE4OSwgICAyMTYsICAgMjQyLCAgIDI2OSwgICAy
OTUsICAgMzIyLCAgIDM0OCwKKyAgICAgICAgMzc1LCAgIDQwMiwgICA0MjgsICAgNDU1LCAgIDQ4
MSwgICA1MDgsICAgNTM0LCAgIDU2MSwgICA1ODgsICAgNjE0LAorICAgICAgICA2NDEsICAgNjY3
LCAgIDY5NCwgICA3MjAsICAgNzQ3LCAgIDc3NCwgICA4MDAsICAgODI3LCAgIDg1MywgICA4ODAs
CisgICAgICAgIDkwNywgICA5MzMsICAgOTYwLCAgIDk4NiwgIDEwMTMsICAxMDM5LCAgMTA2Ngor
ICAgIH07CisgICAgcmV0dXJuIERpeUZwKGtDYWNoZWRQb3dlcnNfRltpbmRleF0sIGtDYWNoZWRQ
b3dlcnNfRVtpbmRleF0pOworfQorICAgIAoraW5saW5lIERpeUZwIEdldENhY2hlZFBvd2VyKGlu
dCBlLCBpbnQqIEspIHsKKworICAgIC8vaW50IGsgPSBzdGF0aWNfY2FzdDxpbnQ+KGNlaWwoKC02
MSAtIGUpICogMC4zMDEwMjk5OTU2NjM5ODExNCkpICsgMzc0OworICAgIGRvdWJsZSBkayA9ICgt
NjEgLSBlKSAqIDAuMzAxMDI5OTk1NjYzOTgxMTQgKyAzNDc7ICAvLyBkayBtdXN0IGJlIHBvc2l0
aXZlLCBzbyBjYW4gZG8gY2VpbGluZyBpbiBwb3NpdGl2ZQorICAgIGludCBrID0gc3RhdGljX2Nh
c3Q8aW50Pihkayk7CisgICAgaWYgKGsgIT0gZGspCisgICAgICAgIGsrKzsKKworICAgIHVuc2ln
bmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KChrID4+IDMpICsgMSk7CisgICAgKksg
PSAtKC0zNDggKyBzdGF0aWNfY2FzdDxpbnQ+KGluZGV4IDw8IDMpKTsgICAgLy8gZGVjaW1hbCBl
eHBvbmVudCBubyBuZWVkIGxvb2t1cCB0YWJsZQorCisgICAgcmV0dXJuIEdldENhY2hlZFBvd2Vy
QnlJbmRleChpbmRleCk7Cit9CisKK2lubGluZSBEaXlGcCBHZXRDYWNoZWRQb3dlcjEwKGludCBl
eHAsIGludCAqb3V0RXhwKSB7CisgICAgIHVuc2lnbmVkIGluZGV4ID0gKGV4cCArIDM0OCkgLyA4
OworICAgICAqb3V0RXhwID0gLTM0OCArIGluZGV4ICogODsKKyAgICAgcmV0dXJuIEdldENhY2hl
ZFBvd2VyQnlJbmRleChpbmRleCk7CisgfQorCisjaWZkZWYgX19HTlVDX18KK1JBUElESlNPTl9E
SUFHX1BPUAorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIGludGVybmFsCitSQVBJREpTT05fTkFN
RVNQQUNFX0VORAorCisjZW5kaWYgLy8gUkFQSURKU09OX0RJWUZQX0hfCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUv
cmFwaWRqc29uL2ludGVybmFsL2R0b2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29u
L2ludGVybmFsL2R0b2EuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ludGVy
bmFsL2R0b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIyNSBAQAorLy8gQ29weXJpZ2h0
IChDKSAyMDExIE1pbG8gWWlwCisvLworLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwg
ZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorLy8gb2YgdGhp
cyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3
YXJlIiksIHRvIGRlYWwKKy8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBp
bmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKKy8vIHRvIHVzZSwgY29weSwg
bW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNl
bGwKKy8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3
aG9tIHRoZSBTb2Z0d2FyZSBpcworLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKy8vCisvLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj
ZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorLy8gYWxs
IGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisvLworLy8g
VEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5Z
IEtJTkQsIEVYUFJFU1MgT1IKKy8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQg
VE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorLy8gRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFCisvLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENM
QUlNLCBEQU1BR0VTIE9SIE9USEVSCisvLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9O
IE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorLy8gT1VUIE9G
IE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBE
RUFMSU5HUyBJTgorLy8gVEhFIFNPRlRXQVJFLgorCisvLyBUaGlzIGlzIGEgQysrIGhlYWRlci1v
bmx5IGltcGxlbWVudGF0aW9uIG9mIEdyaXN1MiBhbGdvcml0aG0gZnJvbSB0aGUgcHVibGljYXRp
b246CisvLyBMb2l0c2NoLCBGbG9yaWFuLiAiUHJpbnRpbmcgZmxvYXRpbmctcG9pbnQgbnVtYmVy
cyBxdWlja2x5IGFuZCBhY2N1cmF0ZWx5IHdpdGgKKy8vIGludGVnZXJzLiIgQUNNIFNpZ3BsYW4g
Tm90aWNlcyA0NS42ICgyMDEwKTogMjMzLTI0My4KKworI2lmbmRlZiBSQVBJREpTT05fRFRPQV8K
KyNkZWZpbmUgUkFQSURKU09OX0RUT0FfCisKKyNpbmNsdWRlICJpdG9hLmgiIC8vIEdldERpZ2l0
c0x1dCgpCisjaW5jbHVkZSAiZGl5ZnAuaCIKKworUkFQSURKU09OX05BTUVTUEFDRV9CRUdJTgor
bmFtZXNwYWNlIGludGVybmFsIHsKKworI2lmZGVmIF9fR05VQ19fCitSQVBJREpTT05fRElBR19Q
VVNICitSQVBJREpTT05fRElBR19PRkYoZWZmYysrKQorI2VuZGlmCisKK2lubGluZSB2b2lkIEdy
aXN1Um91bmQoY2hhciogYnVmZmVyLCBpbnQgbGVuLCB1aW50NjRfdCBkZWx0YSwgdWludDY0X3Qg
cmVzdCwgdWludDY0X3QgdGVuX2thcHBhLCB1aW50NjRfdCB3cF93KSB7CisgICAgd2hpbGUgKHJl
c3QgPCB3cF93ICYmIGRlbHRhIC0gcmVzdCA+PSB0ZW5fa2FwcGEgJiYKKyAgICAgICAgICAgKHJl
c3QgKyB0ZW5fa2FwcGEgPCB3cF93IHx8ICAvLy8gY2xvc2VyCisgICAgICAgICAgICB3cF93IC0g
cmVzdCA+IHJlc3QgKyB0ZW5fa2FwcGEgLSB3cF93KSkgeworICAgICAgICBidWZmZXJbbGVuIC0g
MV0tLTsKKyAgICAgICAgcmVzdCArPSB0ZW5fa2FwcGE7CisgICAgfQorfQorCitpbmxpbmUgdW5z
aWduZWQgQ291bnREZWNpbWFsRGlnaXQzMih1aW50MzJfdCBuKSB7CisgICAgLy8gU2ltcGxlIHB1
cmUgQysrIGltcGxlbWVudGF0aW9uIHdhcyBmYXN0ZXIgdGhhbiBfX2J1aWx0aW5fY2x6IHZlcnNp
b24gaW4gdGhpcyBzaXR1YXRpb24uCisgICAgaWYgKG4gPCAxMCkgcmV0dXJuIDE7CisgICAgaWYg
KG4gPCAxMDApIHJldHVybiAyOworICAgIGlmIChuIDwgMTAwMCkgcmV0dXJuIDM7CisgICAgaWYg
KG4gPCAxMDAwMCkgcmV0dXJuIDQ7CisgICAgaWYgKG4gPCAxMDAwMDApIHJldHVybiA1OworICAg
IGlmIChuIDwgMTAwMDAwMCkgcmV0dXJuIDY7CisgICAgaWYgKG4gPCAxMDAwMDAwMCkgcmV0dXJu
IDc7CisgICAgaWYgKG4gPCAxMDAwMDAwMDApIHJldHVybiA4OworICAgIGlmIChuIDwgMTAwMDAw
MDAwMCkgcmV0dXJuIDk7CisgICAgcmV0dXJuIDEwOworfQorCitpbmxpbmUgdm9pZCBEaWdpdEdl
bihjb25zdCBEaXlGcCYgVywgY29uc3QgRGl5RnAmIE1wLCB1aW50NjRfdCBkZWx0YSwgY2hhciog
YnVmZmVyLCBpbnQqIGxlbiwgaW50KiBLKSB7CisgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IGtQ
b3cxMFtdID0geyAxLCAxMCwgMTAwLCAxMDAwLCAxMDAwMCwgMTAwMDAwLCAxMDAwMDAwLCAxMDAw
MDAwMCwgMTAwMDAwMDAwLCAxMDAwMDAwMDAwIH07CisgICAgY29uc3QgRGl5RnAgb25lKHVpbnQ2
NF90KDEpIDw8IC1NcC5lLCBNcC5lKTsKKyAgICBjb25zdCBEaXlGcCB3cF93ID0gTXAgLSBXOwor
ICAgIHVpbnQzMl90IHAxID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KE1wLmYgPj4gLW9uZS5lKTsK
KyAgICB1aW50NjRfdCBwMiA9IE1wLmYgJiAob25lLmYgLSAxKTsKKyAgICBpbnQga2FwcGEgPSBD
b3VudERlY2ltYWxEaWdpdDMyKHAxKTsKKyAgICAqbGVuID0gMDsKKworICAgIHdoaWxlIChrYXBw
YSA+IDApIHsKKyAgICAgICAgdWludDMyX3QgZDsKKyAgICAgICAgc3dpdGNoIChrYXBwYSkgewor
ICAgICAgICAgICAgY2FzZSAxMDogZCA9IHAxIC8gMTAwMDAwMDAwMDsgcDEgJT0gMTAwMDAwMDAw
MDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlICA5OiBkID0gcDEgLyAgMTAwMDAwMDAwOyBwMSAl
PSAgMTAwMDAwMDAwOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIDg6IGQgPSBwMSAvICAgMTAw
MDAwMDA7IHAxICU9ICAgMTAwMDAwMDA7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAgNzogZCA9
IHAxIC8gICAgMTAwMDAwMDsgcDEgJT0gICAgMTAwMDAwMDsgYnJlYWs7CisgICAgICAgICAgICBj
YXNlICA2OiBkID0gcDEgLyAgICAgMTAwMDAwOyBwMSAlPSAgICAgMTAwMDAwOyBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgIDU6IGQgPSBwMSAvICAgICAgMTAwMDA7IHAxICU9ICAgICAgMTAwMDA7
IGJyZWFrOworICAgICAgICAgICAgY2FzZSAgNDogZCA9IHAxIC8gICAgICAgMTAwMDsgcDEgJT0g
ICAgICAgMTAwMDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlICAzOiBkID0gcDEgLyAgICAgICAg
MTAwOyBwMSAlPSAgICAgICAgMTAwOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIDI6IGQgPSBw
MSAvICAgICAgICAgMTA7IHAxICU9ICAgICAgICAgMTA7IGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSAgMTogZCA9IHAxOyAgICAgICAgICAgICAgcDEgPSAgICAgICAgICAgMDsgYnJlYWs7CisgICAg
ICAgICAgICBkZWZhdWx0OiAKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorICAgICAgICAgICAgICAg
IF9fYXNzdW1lKDApOworI2VsaWYgX19HTlVDX18gPiA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9f
R05VQ19NSU5PUl9fID49IDUpCisgICAgICAgICAgICAgICAgX19idWlsdGluX3VucmVhY2hhYmxl
KCk7CisjZWxzZQorICAgICAgICAgICAgICAgIGQgPSAwOworI2VuZGlmCisgICAgICAgIH0KKyAg
ICAgICAgaWYgKGQgfHwgKmxlbikKKyAgICAgICAgICAgIGJ1ZmZlclsoKmxlbikrK10gPSBzdGF0
aWNfY2FzdDxjaGFyPignMCcgKyBzdGF0aWNfY2FzdDxjaGFyPihkKSk7CisgICAgICAgIGthcHBh
LS07CisgICAgICAgIHVpbnQ2NF90IHRtcCA9IChzdGF0aWNfY2FzdDx1aW50NjRfdD4ocDEpIDw8
IC1vbmUuZSkgKyBwMjsKKyAgICAgICAgaWYgKHRtcCA8PSBkZWx0YSkgeworICAgICAgICAgICAg
KksgKz0ga2FwcGE7CisgICAgICAgICAgICBHcmlzdVJvdW5kKGJ1ZmZlciwgKmxlbiwgZGVsdGEs
IHRtcCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGtQb3cxMFtrYXBwYV0pIDw8IC1vbmUuZSwgd3Bf
dy5mKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIGth
cHBhID0gMAorICAgIGZvciAoOzspIHsKKyAgICAgICAgcDIgKj0gMTA7CisgICAgICAgIGRlbHRh
ICo9IDEwOworICAgICAgICBjaGFyIGQgPSBzdGF0aWNfY2FzdDxjaGFyPihwMiA+PiAtb25lLmUp
OworICAgICAgICBpZiAoZCB8fCAqbGVuKQorICAgICAgICAgICAgYnVmZmVyWygqbGVuKSsrXSA9
IHN0YXRpY19jYXN0PGNoYXI+KCcwJyArIGQpOworICAgICAgICBwMiAmPSBvbmUuZiAtIDE7Cisg
ICAgICAgIGthcHBhLS07CisgICAgICAgIGlmIChwMiA8IGRlbHRhKSB7CisgICAgICAgICAgICAq
SyArPSBrYXBwYTsKKyAgICAgICAgICAgIEdyaXN1Um91bmQoYnVmZmVyLCAqbGVuLCBkZWx0YSwg
cDIsIG9uZS5mLCB3cF93LmYgKiBrUG93MTBbLWthcHBhXSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICB9Cit9CisKK2lubGluZSB2b2lkIEdyaXN1Mihkb3VibGUgdmFsdWUs
IGNoYXIqIGJ1ZmZlciwgaW50KiBsZW5ndGgsIGludCogSykgeworICAgIGNvbnN0IERpeUZwIHYo
dmFsdWUpOworICAgIERpeUZwIHdfbSwgd19wOworICAgIHYuTm9ybWFsaXplZEJvdW5kYXJpZXMo
JndfbSwgJndfcCk7CisKKyAgICBjb25zdCBEaXlGcCBjX21rID0gR2V0Q2FjaGVkUG93ZXIod19w
LmUsIEspOworICAgIGNvbnN0IERpeUZwIFcgPSB2Lk5vcm1hbGl6ZSgpICogY19tazsKKyAgICBE
aXlGcCBXcCA9IHdfcCAqIGNfbWs7CisgICAgRGl5RnAgV20gPSB3X20gKiBjX21rOworICAgIFdt
LmYrKzsKKyAgICBXcC5mLS07CisgICAgRGlnaXRHZW4oVywgV3AsIFdwLmYgLSBXbS5mLCBidWZm
ZXIsIGxlbmd0aCwgSyk7Cit9CisKK2lubGluZSBjaGFyKiBXcml0ZUV4cG9uZW50KGludCBLLCBj
aGFyKiBidWZmZXIpIHsKKyAgICBpZiAoSyA8IDApIHsKKyAgICAgICAgKmJ1ZmZlcisrID0gJy0n
OworICAgICAgICBLID0gLUs7CisgICAgfQorCisgICAgaWYgKEsgPj0gMTAwKSB7CisgICAgICAg
ICpidWZmZXIrKyA9IHN0YXRpY19jYXN0PGNoYXI+KCcwJyArIHN0YXRpY19jYXN0PGNoYXI+KEsg
LyAxMDApKTsKKyAgICAgICAgSyAlPSAxMDA7CisgICAgICAgIGNvbnN0IGNoYXIqIGQgPSBHZXRE
aWdpdHNMdXQoKSArIEsgKiAyOworICAgICAgICAqYnVmZmVyKysgPSBkWzBdOworICAgICAgICAq
YnVmZmVyKysgPSBkWzFdOworICAgIH0KKyAgICBlbHNlIGlmIChLID49IDEwKSB7CisgICAgICAg
IGNvbnN0IGNoYXIqIGQgPSBHZXREaWdpdHNMdXQoKSArIEsgKiAyOworICAgICAgICAqYnVmZmVy
KysgPSBkWzBdOworICAgICAgICAqYnVmZmVyKysgPSBkWzFdOworICAgIH0KKyAgICBlbHNlCisg
ICAgICAgICpidWZmZXIrKyA9IHN0YXRpY19jYXN0PGNoYXI+KCcwJyArIHN0YXRpY19jYXN0PGNo
YXI+KEspKTsKKworICAgIHJldHVybiBidWZmZXI7Cit9CisKK2lubGluZSBjaGFyKiBQcmV0dGlm
eShjaGFyKiBidWZmZXIsIGludCBsZW5ndGgsIGludCBrKSB7CisgICAgY29uc3QgaW50IGtrID0g
bGVuZ3RoICsgazsgIC8vIDEwXihray0xKSA8PSB2IDwgMTBea2sKKworICAgIGlmIChsZW5ndGgg
PD0ga2sgJiYga2sgPD0gMjEpIHsKKyAgICAgICAgLy8gMTIzNGU3IC0+IDEyMzQwMDAwMDAwCisg
ICAgICAgIGZvciAoaW50IGkgPSBsZW5ndGg7IGkgPCBrazsgaSsrKQorICAgICAgICAgICAgYnVm
ZmVyW2ldID0gJzAnOworICAgICAgICBidWZmZXJba2tdID0gJy4nOworICAgICAgICBidWZmZXJb
a2sgKyAxXSA9ICcwJzsKKyAgICAgICAgcmV0dXJuICZidWZmZXJba2sgKyAyXTsKKyAgICB9Cisg
ICAgZWxzZSBpZiAoMCA8IGtrICYmIGtrIDw9IDIxKSB7CisgICAgICAgIC8vIDEyMzRlLTIgLT4g
MTIuMzQKKyAgICAgICAgc3RkOjptZW1tb3ZlKCZidWZmZXJba2sgKyAxXSwgJmJ1ZmZlcltra10s
IGxlbmd0aCAtIGtrKTsKKyAgICAgICAgYnVmZmVyW2trXSA9ICcuJzsKKyAgICAgICAgcmV0dXJu
ICZidWZmZXJbbGVuZ3RoICsgMV07CisgICAgfQorICAgIGVsc2UgaWYgKC02IDwga2sgJiYga2sg
PD0gMCkgeworICAgICAgICAvLyAxMjM0ZS02IC0+IDAuMDAxMjM0CisgICAgICAgIGNvbnN0IGlu
dCBvZmZzZXQgPSAyIC0ga2s7CisgICAgICAgIHN0ZDo6bWVtbW92ZSgmYnVmZmVyW29mZnNldF0s
ICZidWZmZXJbMF0sIGxlbmd0aCk7CisgICAgICAgIGJ1ZmZlclswXSA9ICcwJzsKKyAgICAgICAg
YnVmZmVyWzFdID0gJy4nOworICAgICAgICBmb3IgKGludCBpID0gMjsgaSA8IG9mZnNldDsgaSsr
KQorICAgICAgICAgICAgYnVmZmVyW2ldID0gJzAnOworICAgICAgICByZXR1cm4gJmJ1ZmZlclts
ZW5ndGggKyBvZmZzZXRdOworICAgIH0KKyAgICBlbHNlIGlmIChsZW5ndGggPT0gMSkgeworICAg
ICAgICAvLyAxZTMwCisgICAgICAgIGJ1ZmZlclsxXSA9ICdlJzsKKyAgICAgICAgcmV0dXJuIFdy
aXRlRXhwb25lbnQoa2sgLSAxLCAmYnVmZmVyWzJdKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAg
ICAgIC8vIDEyMzRlMzAgLT4gMS4yMzRlMzMKKyAgICAgICAgc3RkOjptZW1tb3ZlKCZidWZmZXJb
Ml0sICZidWZmZXJbMV0sIGxlbmd0aCAtIDEpOworICAgICAgICBidWZmZXJbMV0gPSAnLic7Cisg
ICAgICAgIGJ1ZmZlcltsZW5ndGggKyAxXSA9ICdlJzsKKyAgICAgICAgcmV0dXJuIFdyaXRlRXhw
b25lbnQoa2sgLSAxLCAmYnVmZmVyWzAgKyBsZW5ndGggKyAyXSk7CisgICAgfQorfQorCitpbmxp
bmUgY2hhciogZHRvYShkb3VibGUgdmFsdWUsIGNoYXIqIGJ1ZmZlcikgeworICAgIGlmICh2YWx1
ZSA9PSAwKSB7CisgICAgICAgIGJ1ZmZlclswXSA9ICcwJzsKKyAgICAgICAgYnVmZmVyWzFdID0g
Jy4nOworICAgICAgICBidWZmZXJbMl0gPSAnMCc7CisgICAgICAgIHJldHVybiAmYnVmZmVyWzNd
OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKHZhbHVlIDwgMCkgeworICAgICAgICAg
ICAgKmJ1ZmZlcisrID0gJy0nOworICAgICAgICAgICAgdmFsdWUgPSAtdmFsdWU7CisgICAgICAg
IH0KKyAgICAgICAgaW50IGxlbmd0aCwgSzsKKyAgICAgICAgR3Jpc3UyKHZhbHVlLCBidWZmZXIs
ICZsZW5ndGgsICZLKTsKKyAgICAgICAgcmV0dXJuIFByZXR0aWZ5KGJ1ZmZlciwgbGVuZ3RoLCBL
KTsKKyAgICB9Cit9CisKKyNpZmRlZiBfX0dOVUNfXworUkFQSURKU09OX0RJQUdfUE9QCisjZW5k
aWYKKworfSAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKK1JBUElESlNPTl9OQU1FU1BBQ0VfRU5ECisK
KyNlbmRpZiAvLyBSQVBJREpTT05fRFRPQV8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJu
YWwvaWVlZTc1NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvaWVl
ZTc1NC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvaWVlZTc1
NC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTAgQEAKKy8vIENvcHlyaWdodCAoQykgMjAx
MSBNaWxvIFlpcAorLy8KKy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2Yg
Y2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKy8vIG9mIHRoaXMgc29mdHdh
cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0
byBkZWFsCisvLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5n
IHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCisvLyB0byB1c2UsIGNvcHksIG1vZGlmeSwg
bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCisvLyBj
b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUg
U29mdHdhcmUgaXMKKy8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnM6CisvLworLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo
aXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKy8vIGFsbCBjb3BpZXMg
b3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorLy8KKy8vIFRIRSBTT0ZU
V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF
WFBSRVNTIE9SCisvLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKy8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorLy8g
QVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFN
QUdFUyBPUiBPVEhFUgorLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05U
UkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKy8vIE9VVCBPRiBPUiBJTiBD
T05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1Mg
SU4KKy8vIFRIRSBTT0ZUV0FSRS4KKworI2lmbmRlZiBSQVBJREpTT05fSUVFRTc1NF8KKyNkZWZp
bmUgUkFQSURKU09OX0lFRUU3NTRfCisKKyNpbmNsdWRlICIuLi9yYXBpZGpzb24uaCIKKworUkFQ
SURKU09OX05BTUVTUEFDRV9CRUdJTgorbmFtZXNwYWNlIGludGVybmFsIHsKKworY2xhc3MgRG91
YmxlIHsKK3B1YmxpYzoKKyAgICBEb3VibGUoKSB7fQorICAgIERvdWJsZShkb3VibGUgZCkgOiBk
KGQpIHt9CisgICAgRG91YmxlKHVpbnQ2NF90IHUpIDogdSh1KSB7fQorCisgICAgZG91YmxlIFZh
bHVlKCkgY29uc3QgeyByZXR1cm4gZDsgfQorICAgIHVpbnQ2NF90IFVpbnQ2NFZhbHVlKCkgY29u
c3QgeyByZXR1cm4gdTsgfQorCisgICAgZG91YmxlIE5leHRQb3NpdGl2ZURvdWJsZSgpIGNvbnN0
IHsKKyAgICAgICAgUkFQSURKU09OX0FTU0VSVCghU2lnbigpKTsKKyAgICAgICAgcmV0dXJuIERv
dWJsZSh1ICsgMSkuVmFsdWUoKTsKKyAgICB9CisKKyAgICBkb3VibGUgUHJldmlvdXNQb3NpdGl2
ZURvdWJsZSgpIGNvbnN0IHsKKyAgICAgICAgUkFQSURKU09OX0FTU0VSVCghU2lnbigpKTsKKyAg
ICAgICAgaWYgKGQgPT0gMC4wKQorICAgICAgICAgICAgcmV0dXJuIDAuMDsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgcmV0dXJuIERvdWJsZSh1IC0gMSkuVmFsdWUoKTsKKyAgICB9CisKKyAg
ICBib29sIFNpZ24oKSBjb25zdCB7IHJldHVybiAodSAmIGtTaWduTWFzaykgIT0gMDsgfQorICAg
IHVpbnQ2NF90IFNpZ25pZmljYW5kKCkgY29uc3QgeyByZXR1cm4gdSAmIGtTaWduaWZpY2FuZE1h
c2s7IH0KKyAgICBpbnQgRXhwb25lbnQoKSBjb25zdCB7IHJldHVybiAoKHUgJiBrRXhwb25lbnRN
YXNrKSA+PiBrU2lnbmlmaWNhbmRTaXplKSAtIGtFeHBvbmVudEJpYXM7IH0KKworICAgIGJvb2wg
SXNOYW4oKSBjb25zdCB7IHJldHVybiAodSAmIGtFeHBvbmVudE1hc2spID09IGtFeHBvbmVudE1h
c2sgJiYgU2lnbmlmaWNhbmQoKSAhPSAwOyB9CisgICAgYm9vbCBJc0luZigpIGNvbnN0IHsgcmV0
dXJuICh1ICYga0V4cG9uZW50TWFzaykgPT0ga0V4cG9uZW50TWFzayAmJiBTaWduaWZpY2FuZCgp
ID09IDA7IH0KKyAgICBib29sIElzTm9ybWFsKCkgY29uc3QgeyByZXR1cm4gKHUgJiBrRXhwb25l
bnRNYXNrKSAhPSAwIHx8IFNpZ25pZmljYW5kKCkgPT0gMDsgfQorCisgICAgdWludDY0X3QgSW50
ZWdlclNpZ25pZmljYW5kKCkgY29uc3QgeyByZXR1cm4gSXNOb3JtYWwoKSA/IFNpZ25pZmljYW5k
KCkgfCBrSGlkZGVuQml0IDogU2lnbmlmaWNhbmQoKTsgfQorICAgIGludCBJbnRlZ2VyRXhwb25l
bnQoKSBjb25zdCB7IHJldHVybiAoSXNOb3JtYWwoKSA/IEV4cG9uZW50KCkgOiBrRGVub3JtYWxF
eHBvbmVudCkgLSBrU2lnbmlmaWNhbmRTaXplOyB9CisgICAgdWludDY0X3QgVG9CaWFzKCkgY29u
c3QgeyByZXR1cm4gKHUgJiBrU2lnbk1hc2spID8gfnUgKyAxIDogdSB8IGtTaWduTWFzazsgfQor
CisgICAgc3RhdGljIHVuc2lnbmVkIEVmZmVjdGl2ZVNpZ25pZmljYW5kU2l6ZShpbnQgb3JkZXIp
IHsKKyAgICAgICAgaWYgKG9yZGVyID49IC0xMDIxKQorICAgICAgICAgICAgcmV0dXJuIDUzOwor
ICAgICAgICBlbHNlIGlmIChvcmRlciA8PSAtMTA3NCkKKyAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gb3JkZXIgKyAxMDc0OworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3QgaW50IGtTaWduaWZpY2FuZFNpemUgPSA1MjsKKyAg
ICBzdGF0aWMgY29uc3QgaW50IGtFeHBvbmVudEJpYXMgPSAweDNGRjsKKyAgICBzdGF0aWMgY29u
c3QgaW50IGtEZW5vcm1hbEV4cG9uZW50ID0gMSAtIGtFeHBvbmVudEJpYXM7CisgICAgc3RhdGlj
IGNvbnN0IHVpbnQ2NF90IGtTaWduTWFzayA9IFJBUElESlNPTl9VSU5UNjRfQzIoMHg4MDAwMDAw
MCwgMHgwMDAwMDAwMCk7CisgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGtFeHBvbmVudE1hc2sg
PSBSQVBJREpTT05fVUlOVDY0X0MyKDB4N0ZGMDAwMDAsIDB4MDAwMDAwMDApOworICAgIHN0YXRp
YyBjb25zdCB1aW50NjRfdCBrU2lnbmlmaWNhbmRNYXNrID0gUkFQSURKU09OX1VJTlQ2NF9DMigw
eDAwMEZGRkZGLCAweEZGRkZGRkZGKTsKKyAgICBzdGF0aWMgY29uc3QgdWludDY0X3Qga0hpZGRl
bkJpdCA9IFJBUElESlNPTl9VSU5UNjRfQzIoMHgwMDEwMDAwMCwgMHgwMDAwMDAwMCk7CisKKyAg
ICB1bmlvbiB7CisgICAgICAgIGRvdWJsZSBkOworICAgICAgICB1aW50NjRfdCB1OworICAgIH07
Cit9OworCit9IC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorUkFQSURKU09OX05BTUVTUEFDRV9FTkQK
KworI2VuZGlmIC8vIFJBUElESlNPTl9JRUVFNzU0XwpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9p
bnRlcm5hbC9pdG9hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9pbnRlcm5hbC9p
dG9hLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9pbnRlcm5hbC9pdG9hLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMDYgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSBN
aWxvIFlpcAorLy8KKy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hh
cmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKy8vIG9mIHRoaXMgc29mdHdhcmUg
YW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBk
ZWFsCisvLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdp
dGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCisvLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVy
Z2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCisvLyBjb3Bp
ZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29m
dHdhcmUgaXMKKy8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnM6CisvLworLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMg
cGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKy8vIGFsbCBjb3BpZXMgb3Ig
c3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorLy8KKy8vIFRIRSBTT0ZUV0FS
RSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBS
RVNTIE9SCisvLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKy8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorLy8gQVVU
SE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdF
UyBPUiBPVEhFUgorLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFD
VCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKy8vIE9VVCBPRiBPUiBJTiBDT05O
RUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4K
Ky8vIFRIRSBTT0ZUV0FSRS4KKworI2lmbmRlZiBSQVBJREpTT05fSVRPQV8KKyNkZWZpbmUgUkFQ
SURKU09OX0lUT0FfCisKK1JBUElESlNPTl9OQU1FU1BBQ0VfQkVHSU4KK25hbWVzcGFjZSBpbnRl
cm5hbCB7CisKK2lubGluZSBjb25zdCBjaGFyKiBHZXREaWdpdHNMdXQoKSB7CisgICAgc3RhdGlj
IGNvbnN0IGNoYXIgY0RpZ2l0c0x1dFsyMDBdID0geworICAgICAgICAnMCcsJzAnLCcwJywnMScs
JzAnLCcyJywnMCcsJzMnLCcwJywnNCcsJzAnLCc1JywnMCcsJzYnLCcwJywnNycsJzAnLCc4Jywn
MCcsJzknLAorICAgICAgICAnMScsJzAnLCcxJywnMScsJzEnLCcyJywnMScsJzMnLCcxJywnNCcs
JzEnLCc1JywnMScsJzYnLCcxJywnNycsJzEnLCc4JywnMScsJzknLAorICAgICAgICAnMicsJzAn
LCcyJywnMScsJzInLCcyJywnMicsJzMnLCcyJywnNCcsJzInLCc1JywnMicsJzYnLCcyJywnNycs
JzInLCc4JywnMicsJzknLAorICAgICAgICAnMycsJzAnLCczJywnMScsJzMnLCcyJywnMycsJzMn
LCczJywnNCcsJzMnLCc1JywnMycsJzYnLCczJywnNycsJzMnLCc4JywnMycsJzknLAorICAgICAg
ICAnNCcsJzAnLCc0JywnMScsJzQnLCcyJywnNCcsJzMnLCc0JywnNCcsJzQnLCc1JywnNCcsJzYn
LCc0JywnNycsJzQnLCc4JywnNCcsJzknLAorICAgICAgICAnNScsJzAnLCc1JywnMScsJzUnLCcy
JywnNScsJzMnLCc1JywnNCcsJzUnLCc1JywnNScsJzYnLCc1JywnNycsJzUnLCc4JywnNScsJzkn
LAorICAgICAgICAnNicsJzAnLCc2JywnMScsJzYnLCcyJywnNicsJzMnLCc2JywnNCcsJzYnLCc1
JywnNicsJzYnLCc2JywnNycsJzYnLCc4JywnNicsJzknLAorICAgICAgICAnNycsJzAnLCc3Jywn
MScsJzcnLCcyJywnNycsJzMnLCc3JywnNCcsJzcnLCc1JywnNycsJzYnLCc3JywnNycsJzcnLCc4
JywnNycsJzknLAorICAgICAgICAnOCcsJzAnLCc4JywnMScsJzgnLCcyJywnOCcsJzMnLCc4Jywn
NCcsJzgnLCc1JywnOCcsJzYnLCc4JywnNycsJzgnLCc4JywnOCcsJzknLAorICAgICAgICAnOScs
JzAnLCc5JywnMScsJzknLCcyJywnOScsJzMnLCc5JywnNCcsJzknLCc1JywnOScsJzYnLCc5Jywn
NycsJzknLCc4JywnOScsJzknCisgICAgfTsKKyAgICByZXR1cm4gY0RpZ2l0c0x1dDsKK30KKwor
aW5saW5lIGNoYXIqIHUzMnRvYSh1aW50MzJfdCB2YWx1ZSwgY2hhciogYnVmZmVyKSB7CisgICAg
Y29uc3QgY2hhciogY0RpZ2l0c0x1dCA9IEdldERpZ2l0c0x1dCgpOworCisgICAgaWYgKHZhbHVl
IDwgMTAwMDApIHsKKyAgICAgICAgY29uc3QgdWludDMyX3QgZDEgPSAodmFsdWUgLyAxMDApIDw8
IDE7CisgICAgICAgIGNvbnN0IHVpbnQzMl90IGQyID0gKHZhbHVlICUgMTAwKSA8PCAxOworICAg
ICAgICAKKyAgICAgICAgaWYgKHZhbHVlID49IDEwMDApCisgICAgICAgICAgICAqYnVmZmVyKysg
PSBjRGlnaXRzTHV0W2QxXTsKKyAgICAgICAgaWYgKHZhbHVlID49IDEwMCkKKyAgICAgICAgICAg
ICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDEgKyAxXTsKKyAgICAgICAgaWYgKHZhbHVlID49IDEw
KQorICAgICAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkMl07CisgICAgICAgICpidWZm
ZXIrKyA9IGNEaWdpdHNMdXRbZDIgKyAxXTsKKyAgICB9CisgICAgZWxzZSBpZiAodmFsdWUgPCAx
MDAwMDAwMDApIHsKKyAgICAgICAgLy8gdmFsdWUgPSBiYmJiY2NjYworICAgICAgICBjb25zdCB1
aW50MzJfdCBiID0gdmFsdWUgLyAxMDAwMDsKKyAgICAgICAgY29uc3QgdWludDMyX3QgYyA9IHZh
bHVlICUgMTAwMDA7CisgICAgICAgIAorICAgICAgICBjb25zdCB1aW50MzJfdCBkMSA9IChiIC8g
MTAwKSA8PCAxOworICAgICAgICBjb25zdCB1aW50MzJfdCBkMiA9IChiICUgMTAwKSA8PCAxOwor
ICAgICAgICAKKyAgICAgICAgY29uc3QgdWludDMyX3QgZDMgPSAoYyAvIDEwMCkgPDwgMTsKKyAg
ICAgICAgY29uc3QgdWludDMyX3QgZDQgPSAoYyAlIDEwMCkgPDwgMTsKKyAgICAgICAgCisgICAg
ICAgIGlmICh2YWx1ZSA+PSAxMDAwMDAwMCkKKyAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdp
dHNMdXRbZDFdOworICAgICAgICBpZiAodmFsdWUgPj0gMTAwMDAwMCkKKyAgICAgICAgICAgICpi
dWZmZXIrKyA9IGNEaWdpdHNMdXRbZDEgKyAxXTsKKyAgICAgICAgaWYgKHZhbHVlID49IDEwMDAw
MCkKKyAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDJdOworICAgICAgICAqYnVm
ZmVyKysgPSBjRGlnaXRzTHV0W2QyICsgMV07CisgICAgICAgIAorICAgICAgICAqYnVmZmVyKysg
PSBjRGlnaXRzTHV0W2QzXTsKKyAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkMyArIDFd
OworICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2Q0XTsKKyAgICAgICAgKmJ1ZmZlcisr
ID0gY0RpZ2l0c0x1dFtkNCArIDFdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLy8gdmFs
dWUgPSBhYWJiYmJjY2NjIGluIGRlY2ltYWwKKyAgICAgICAgCisgICAgICAgIGNvbnN0IHVpbnQz
Ml90IGEgPSB2YWx1ZSAvIDEwMDAwMDAwMDsgLy8gMSB0byA0MgorICAgICAgICB2YWx1ZSAlPSAx
MDAwMDAwMDA7CisgICAgICAgIAorICAgICAgICBpZiAoYSA+PSAxMCkgeworICAgICAgICAgICAg
Y29uc3QgdW5zaWduZWQgaSA9IGEgPDwgMTsKKyAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdp
dHNMdXRbaV07CisgICAgICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2kgKyAxXTsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICAqYnVmZmVyKysgPSBzdGF0aWNfY2Fz
dDxjaGFyPignMCcgKyBzdGF0aWNfY2FzdDxjaGFyPihhKSk7CisKKyAgICAgICAgY29uc3QgdWlu
dDMyX3QgYiA9IHZhbHVlIC8gMTAwMDA7IC8vIDAgdG8gOTk5OQorICAgICAgICBjb25zdCB1aW50
MzJfdCBjID0gdmFsdWUgJSAxMDAwMDsgLy8gMCB0byA5OTk5CisgICAgICAgIAorICAgICAgICBj
b25zdCB1aW50MzJfdCBkMSA9IChiIC8gMTAwKSA8PCAxOworICAgICAgICBjb25zdCB1aW50MzJf
dCBkMiA9IChiICUgMTAwKSA8PCAxOworICAgICAgICAKKyAgICAgICAgY29uc3QgdWludDMyX3Qg
ZDMgPSAoYyAvIDEwMCkgPDwgMTsKKyAgICAgICAgY29uc3QgdWludDMyX3QgZDQgPSAoYyAlIDEw
MCkgPDwgMTsKKyAgICAgICAgCisgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDFdOwor
ICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QxICsgMV07CisgICAgICAgICpidWZmZXIr
KyA9IGNEaWdpdHNMdXRbZDJdOworICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QyICsg
MV07CisgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDNdOworICAgICAgICAqYnVmZmVy
KysgPSBjRGlnaXRzTHV0W2QzICsgMV07CisgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRb
ZDRdOworICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2Q0ICsgMV07CisgICAgfQorICAg
IHJldHVybiBidWZmZXI7Cit9CisKK2lubGluZSBjaGFyKiBpMzJ0b2EoaW50MzJfdCB2YWx1ZSwg
Y2hhciogYnVmZmVyKSB7CisgICAgaWYgKHZhbHVlIDwgMCkgeworICAgICAgICAqYnVmZmVyKysg
PSAnLSc7CisgICAgICAgIHZhbHVlID0gLXZhbHVlOworICAgIH0KKworICAgIHJldHVybiB1MzJ0
b2Eoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlKSwgYnVmZmVyKTsKK30KKworaW5saW5lIGNo
YXIqIHU2NHRvYSh1aW50NjRfdCB2YWx1ZSwgY2hhciogYnVmZmVyKSB7CisgICAgY29uc3QgY2hh
ciogY0RpZ2l0c0x1dCA9IEdldERpZ2l0c0x1dCgpOworICAgIGNvbnN0IHVpbnQ2NF90ICBrVGVu
OCA9IDEwMDAwMDAwMDsKKyAgICBjb25zdCB1aW50NjRfdCAga1RlbjkgPSBrVGVuOCAqIDEwOwor
ICAgIGNvbnN0IHVpbnQ2NF90IGtUZW4xMCA9IGtUZW44ICogMTAwOworICAgIGNvbnN0IHVpbnQ2
NF90IGtUZW4xMSA9IGtUZW44ICogMTAwMDsKKyAgICBjb25zdCB1aW50NjRfdCBrVGVuMTIgPSBr
VGVuOCAqIDEwMDAwOworICAgIGNvbnN0IHVpbnQ2NF90IGtUZW4xMyA9IGtUZW44ICogMTAwMDAw
OworICAgIGNvbnN0IHVpbnQ2NF90IGtUZW4xNCA9IGtUZW44ICogMTAwMDAwMDsKKyAgICBjb25z
dCB1aW50NjRfdCBrVGVuMTUgPSBrVGVuOCAqIDEwMDAwMDAwOworICAgIGNvbnN0IHVpbnQ2NF90
IGtUZW4xNiA9IGtUZW44ICoga1Rlbjg7CisgICAgCisgICAgaWYgKHZhbHVlIDwga1RlbjgpIHsK
KyAgICAgICAgdWludDMyX3QgdiA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSk7CisgICAg
ICAgIGlmICh2IDwgMTAwMDApIHsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IGQxID0gKHYg
LyAxMDApIDw8IDE7CisgICAgICAgICAgICBjb25zdCB1aW50MzJfdCBkMiA9ICh2ICUgMTAwKSA8
PCAxOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAodiA+PSAxMDAwKQorICAgICAgICAg
ICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDFdOworICAgICAgICAgICAgaWYgKHYgPj0g
MTAwKQorICAgICAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDEgKyAxXTsKKyAg
ICAgICAgICAgIGlmICh2ID49IDEwKQorICAgICAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdp
dHNMdXRbZDJdOworICAgICAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkMiArIDFdOwor
ICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gdmFsdWUgPSBiYmJiY2Nj
YworICAgICAgICAgICAgY29uc3QgdWludDMyX3QgYiA9IHYgLyAxMDAwMDsKKyAgICAgICAgICAg
IGNvbnN0IHVpbnQzMl90IGMgPSB2ICUgMTAwMDA7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGNvbnN0IHVpbnQzMl90IGQxID0gKGIgLyAxMDApIDw8IDE7CisgICAgICAgICAgICBjb25zdCB1
aW50MzJfdCBkMiA9IChiICUgMTAwKSA8PCAxOworICAgICAgICAgICAgCisgICAgICAgICAgICBj
b25zdCB1aW50MzJfdCBkMyA9IChjIC8gMTAwKSA8PCAxOworICAgICAgICAgICAgY29uc3QgdWlu
dDMyX3QgZDQgPSAoYyAlIDEwMCkgPDwgMTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYg
KHZhbHVlID49IDEwMDAwMDAwKQorICAgICAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNM
dXRbZDFdOworICAgICAgICAgICAgaWYgKHZhbHVlID49IDEwMDAwMDApCisgICAgICAgICAgICAg
ICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkMSArIDFdOworICAgICAgICAgICAgaWYgKHZhbHVl
ID49IDEwMDAwMCkKKyAgICAgICAgICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QyXTsK
KyAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDIgKyAxXTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkM107CisgICAgICAgICAgICAq
YnVmZmVyKysgPSBjRGlnaXRzTHV0W2QzICsgMV07CisgICAgICAgICAgICAqYnVmZmVyKysgPSBj
RGlnaXRzTHV0W2Q0XTsKKyAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDQgKyAx
XTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmICh2YWx1ZSA8IGtUZW4xNikgeworICAg
ICAgICBjb25zdCB1aW50MzJfdCB2MCA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSAvIGtU
ZW44KTsKKyAgICAgICAgY29uc3QgdWludDMyX3QgdjEgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
dmFsdWUgJSBrVGVuOCk7CisgICAgICAgIAorICAgICAgICBjb25zdCB1aW50MzJfdCBiMCA9IHYw
IC8gMTAwMDA7CisgICAgICAgIGNvbnN0IHVpbnQzMl90IGMwID0gdjAgJSAxMDAwMDsKKyAgICAg
ICAgCisgICAgICAgIGNvbnN0IHVpbnQzMl90IGQxID0gKGIwIC8gMTAwKSA8PCAxOworICAgICAg
ICBjb25zdCB1aW50MzJfdCBkMiA9IChiMCAlIDEwMCkgPDwgMTsKKyAgICAgICAgCisgICAgICAg
IGNvbnN0IHVpbnQzMl90IGQzID0gKGMwIC8gMTAwKSA8PCAxOworICAgICAgICBjb25zdCB1aW50
MzJfdCBkNCA9IChjMCAlIDEwMCkgPDwgMTsKKworICAgICAgICBjb25zdCB1aW50MzJfdCBiMSA9
IHYxIC8gMTAwMDA7CisgICAgICAgIGNvbnN0IHVpbnQzMl90IGMxID0gdjEgJSAxMDAwMDsKKyAg
ICAgICAgCisgICAgICAgIGNvbnN0IHVpbnQzMl90IGQ1ID0gKGIxIC8gMTAwKSA8PCAxOworICAg
ICAgICBjb25zdCB1aW50MzJfdCBkNiA9IChiMSAlIDEwMCkgPDwgMTsKKyAgICAgICAgCisgICAg
ICAgIGNvbnN0IHVpbnQzMl90IGQ3ID0gKGMxIC8gMTAwKSA8PCAxOworICAgICAgICBjb25zdCB1
aW50MzJfdCBkOCA9IChjMSAlIDEwMCkgPDwgMTsKKworICAgICAgICBpZiAodmFsdWUgPj0ga1Rl
bjE1KQorICAgICAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkMV07CisgICAgICAgIGlm
ICh2YWx1ZSA+PSBrVGVuMTQpCisgICAgICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2Qx
ICsgMV07CisgICAgICAgIGlmICh2YWx1ZSA+PSBrVGVuMTMpCisgICAgICAgICAgICAqYnVmZmVy
KysgPSBjRGlnaXRzTHV0W2QyXTsKKyAgICAgICAgaWYgKHZhbHVlID49IGtUZW4xMikKKyAgICAg
ICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDIgKyAxXTsKKyAgICAgICAgaWYgKHZhbHVl
ID49IGtUZW4xMSkKKyAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDNdOworICAg
ICAgICBpZiAodmFsdWUgPj0ga1RlbjEwKQorICAgICAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0
c0x1dFtkMyArIDFdOworICAgICAgICBpZiAodmFsdWUgPj0ga1RlbjkpCisgICAgICAgICAgICAq
YnVmZmVyKysgPSBjRGlnaXRzTHV0W2Q0XTsKKyAgICAgICAgaWYgKHZhbHVlID49IGtUZW44KQor
ICAgICAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkNCArIDFdOworICAgICAgICAKKyAg
ICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkNV07CisgICAgICAgICpidWZmZXIrKyA9IGNE
aWdpdHNMdXRbZDUgKyAxXTsKKyAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkNl07Cisg
ICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDYgKyAxXTsKKyAgICAgICAgKmJ1ZmZlcisr
ID0gY0RpZ2l0c0x1dFtkN107CisgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDcgKyAx
XTsKKyAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkOF07CisgICAgICAgICpidWZmZXIr
KyA9IGNEaWdpdHNMdXRbZDggKyAxXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGNvbnN0
IHVpbnQzMl90IGEgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4odmFsdWUgLyBrVGVuMTYpOyAvLyAx
IHRvIDE4NDQKKyAgICAgICAgdmFsdWUgJT0ga1RlbjE2OworICAgICAgICAKKyAgICAgICAgaWYg
KGEgPCAxMCkKKyAgICAgICAgICAgICpidWZmZXIrKyA9IHN0YXRpY19jYXN0PGNoYXI+KCcwJyAr
IHN0YXRpY19jYXN0PGNoYXI+KGEpKTsKKyAgICAgICAgZWxzZSBpZiAoYSA8IDEwMCkgeworICAg
ICAgICAgICAgY29uc3QgdWludDMyX3QgaSA9IGEgPDwgMTsKKyAgICAgICAgICAgICpidWZmZXIr
KyA9IGNEaWdpdHNMdXRbaV07CisgICAgICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2kg
KyAxXTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChhIDwgMTAwMCkgeworICAgICAgICAg
ICAgKmJ1ZmZlcisrID0gc3RhdGljX2Nhc3Q8Y2hhcj4oJzAnICsgc3RhdGljX2Nhc3Q8Y2hhcj4o
YSAvIDEwMCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBjb25zdCB1aW50MzJfdCBpID0g
KGEgJSAxMDApIDw8IDE7CisgICAgICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2ldOwor
ICAgICAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtpICsgMV07CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBjb25zdCB1aW50MzJfdCBpID0gKGEgLyAxMDApIDw8
IDE7CisgICAgICAgICAgICBjb25zdCB1aW50MzJfdCBqID0gKGEgJSAxMDApIDw8IDE7CisgICAg
ICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2ldOworICAgICAgICAgICAgKmJ1ZmZlcisr
ID0gY0RpZ2l0c0x1dFtpICsgMV07CisgICAgICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0
W2pdOworICAgICAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtqICsgMV07CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIGNvbnN0IHVpbnQzMl90IHYwID0gc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KHZhbHVlIC8ga1RlbjgpOworICAgICAgICBjb25zdCB1aW50MzJfdCB2MSA9IHN0YXRp
Y19jYXN0PHVpbnQzMl90Pih2YWx1ZSAlIGtUZW44KTsKKyAgICAgICAgCisgICAgICAgIGNvbnN0
IHVpbnQzMl90IGIwID0gdjAgLyAxMDAwMDsKKyAgICAgICAgY29uc3QgdWludDMyX3QgYzAgPSB2
MCAlIDEwMDAwOworICAgICAgICAKKyAgICAgICAgY29uc3QgdWludDMyX3QgZDEgPSAoYjAgLyAx
MDApIDw8IDE7CisgICAgICAgIGNvbnN0IHVpbnQzMl90IGQyID0gKGIwICUgMTAwKSA8PCAxOwor
ICAgICAgICAKKyAgICAgICAgY29uc3QgdWludDMyX3QgZDMgPSAoYzAgLyAxMDApIDw8IDE7Cisg
ICAgICAgIGNvbnN0IHVpbnQzMl90IGQ0ID0gKGMwICUgMTAwKSA8PCAxOworICAgICAgICAKKyAg
ICAgICAgY29uc3QgdWludDMyX3QgYjEgPSB2MSAvIDEwMDAwOworICAgICAgICBjb25zdCB1aW50
MzJfdCBjMSA9IHYxICUgMTAwMDA7CisgICAgICAgIAorICAgICAgICBjb25zdCB1aW50MzJfdCBk
NSA9IChiMSAvIDEwMCkgPDwgMTsKKyAgICAgICAgY29uc3QgdWludDMyX3QgZDYgPSAoYjEgJSAx
MDApIDw8IDE7CisgICAgICAgIAorICAgICAgICBjb25zdCB1aW50MzJfdCBkNyA9IChjMSAvIDEw
MCkgPDwgMTsKKyAgICAgICAgY29uc3QgdWludDMyX3QgZDggPSAoYzEgJSAxMDApIDw8IDE7Cisg
ICAgICAgIAorICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QxXTsKKyAgICAgICAgKmJ1
ZmZlcisrID0gY0RpZ2l0c0x1dFtkMSArIDFdOworICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRz
THV0W2QyXTsKKyAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkMiArIDFdOworICAgICAg
ICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QzXTsKKyAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0
c0x1dFtkMyArIDFdOworICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2Q0XTsKKyAgICAg
ICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkNCArIDFdOworICAgICAgICAqYnVmZmVyKysgPSBj
RGlnaXRzTHV0W2Q1XTsKKyAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkNSArIDFdOwor
ICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2Q2XTsKKyAgICAgICAgKmJ1ZmZlcisrID0g
Y0RpZ2l0c0x1dFtkNiArIDFdOworICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2Q3XTsK
KyAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkNyArIDFdOworICAgICAgICAqYnVmZmVy
KysgPSBjRGlnaXRzTHV0W2Q4XTsKKyAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkOCAr
IDFdOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gYnVmZmVyOworfQorCitpbmxpbmUgY2hhciog
aTY0dG9hKGludDY0X3QgdmFsdWUsIGNoYXIqIGJ1ZmZlcikgeworICAgIGlmICh2YWx1ZSA8IDAp
IHsKKyAgICAgICAgKmJ1ZmZlcisrID0gJy0nOworICAgICAgICB2YWx1ZSA9IC12YWx1ZTsKKyAg
ICB9CisKKyAgICByZXR1cm4gdTY0dG9hKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2YWx1ZSksIGJ1
ZmZlcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIGludGVybmFsCitSQVBJREpTT05fTkFNRVNQQUNF
X0VORAorCisjZW5kaWYgLy8gUkFQSURKU09OX0lUT0FfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29u
L2ludGVybmFsL21ldGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ludGVybmFs
L21ldGEuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ludGVybmFsL21ldGEu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4OSBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDEx
IE1pbG8gWWlwCisvLworLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj
aGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorLy8gb2YgdGhpcyBzb2Z0d2Fy
ZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRv
IGRlYWwKKy8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcg
d2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKKy8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBt
ZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKKy8vIGNv
cGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBT
b2Z0d2FyZSBpcworLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9uczoKKy8vCisvLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhp
cyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorLy8gYWxsIGNvcGllcyBv
ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisvLworLy8gVEhFIFNPRlRX
QVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVY
UFJFU1MgT1IKKy8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisvLyBB
VVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1B
R0VTIE9SIE9USEVSCisvLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRS
QUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorLy8gT1VUIE9GIE9SIElOIENP
Tk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJ
TgorLy8gVEhFIFNPRlRXQVJFLgorCisjaWZuZGVmIFJBUElESlNPTl9JTlRFUk5BTF9NRVRBX0hf
CisjZGVmaW5lIFJBUElESlNPTl9JTlRFUk5BTF9NRVRBX0hfCisKKyNpZm5kZWYgUkFQSURKU09O
X1JBUElESlNPTl9IXworI2Vycm9yIDxyYXBpZGpzb24uaD4gbm90IHlldCBpbmNsdWRlZC4gRG8g
bm90IGluY2x1ZGUgdGhpcyBmaWxlIGRpcmVjdGx5LgorI2VuZGlmCisKKyNpZmRlZiBfX0dOVUNf
XworUkFQSURKU09OX0RJQUdfUFVTSAorUkFQSURKU09OX0RJQUdfT0ZGKGVmZmMrKykKKyNlbmRp
ZgorI2lmIGRlZmluZWQoX01TQ19WRVIpCitSQVBJREpTT05fRElBR19QVVNICitSQVBJREpTT05f
RElBR19PRkYoNjMzNCkKKyNlbmRpZgorCisjaWYgUkFQSURKU09OX0hBU19DWFgxMV9UWVBFVFJB
SVRTCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjZW5kaWYKKworLy9AY29uZCBSQVBJREpTT05f
SU5URVJOQUwKK1JBUElESlNPTl9OQU1FU1BBQ0VfQkVHSU4KK25hbWVzcGFjZSBpbnRlcm5hbCB7
CisKKy8vIEhlbHBlciB0byB3cmFwL2NvbnZlcnQgYXJiaXRyYXJ5IHR5cGVzIHRvIHZvaWQsIHVz
ZWZ1bCBmb3IgYXJiaXRyYXJ5IHR5cGUgbWF0Y2hpbmcKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBz
dHJ1Y3QgVm9pZCB7IHR5cGVkZWYgdm9pZCBUeXBlOyB9OworCisvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCisvLyBCb29sVHlwZSwgVHJ1ZVR5cGUsIEZhbHNlVHlwZQorLy8KK3RlbXBsYXRlIDxib29s
IENvbmQ+IHN0cnVjdCBCb29sVHlwZSB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgVmFsdWUgPSBD
b25kOworICAgIHR5cGVkZWYgQm9vbFR5cGUgVHlwZTsKK307Cit0eXBlZGVmIEJvb2xUeXBlPHRy
dWU+IFRydWVUeXBlOwordHlwZWRlZiBCb29sVHlwZTxmYWxzZT4gRmFsc2VUeXBlOworCisKKy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIFNlbGVjdElmLCBCb29sRXhwciwgTm90RXhwciwgQW5k
RXhwciwgT3JFeHByCisvLworCit0ZW1wbGF0ZSA8Ym9vbCBDPiBzdHJ1Y3QgU2VsZWN0SWZJbXBs
IHsgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4gc3RydWN0IEFwcGx5IHsgdHlw
ZWRlZiBUMSBUeXBlOyB9OyB9OwordGVtcGxhdGUgPD4gc3RydWN0IFNlbGVjdElmSW1wbDxmYWxz
ZT4geyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPiBzdHJ1Y3QgQXBwbHkgeyB0
eXBlZGVmIFQyIFR5cGU7IH07IH07Cit0ZW1wbGF0ZSA8Ym9vbCBDLCB0eXBlbmFtZSBUMSwgdHlw
ZW5hbWUgVDI+IHN0cnVjdCBTZWxlY3RJZkNvbmQgOiBTZWxlY3RJZkltcGw8Qz46OnRlbXBsYXRl
IEFwcGx5PFQxLFQyPiB7fTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBDLCB0eXBlbmFtZSBUMSwgdHlw
ZW5hbWUgVDI+IHN0cnVjdCBTZWxlY3RJZiA6IFNlbGVjdElmQ29uZDxDOjpWYWx1ZSwgVDEsIFQy
PiB7fTsKKwordGVtcGxhdGUgPGJvb2wgQ29uZDEsIGJvb2wgQ29uZDI+IHN0cnVjdCBBbmRFeHBy
Q29uZCA6IEZhbHNlVHlwZSB7fTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBBbmRFeHByQ29uZDx0cnVl
LCB0cnVlPiA6IFRydWVUeXBlIHt9OwordGVtcGxhdGUgPGJvb2wgQ29uZDEsIGJvb2wgQ29uZDI+
IHN0cnVjdCBPckV4cHJDb25kIDogVHJ1ZVR5cGUge307Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgT3JF
eHByQ29uZDxmYWxzZSwgZmFsc2U+IDogRmFsc2VUeXBlIHt9OworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgQz4gc3RydWN0IEJvb2xFeHByIDogU2VsZWN0SWY8QyxUcnVlVHlwZSxGYWxzZVR5cGU+OjpU
eXBlIHt9OwordGVtcGxhdGUgPHR5cGVuYW1lIEM+IHN0cnVjdCBOb3RFeHByICA6IFNlbGVjdElm
PEMsRmFsc2VUeXBlLFRydWVUeXBlPjo6VHlwZSB7fTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBDMSwg
dHlwZW5hbWUgQzI+IHN0cnVjdCBBbmRFeHByIDogQW5kRXhwckNvbmQ8QzE6OlZhbHVlLCBDMjo6
VmFsdWU+OjpUeXBlIHt9OwordGVtcGxhdGUgPHR5cGVuYW1lIEMxLCB0eXBlbmFtZSBDMj4gc3Ry
dWN0IE9yRXhwciAgOiBPckV4cHJDb25kPEMxOjpWYWx1ZSwgQzI6OlZhbHVlPjo6VHlwZSB7fTsK
KworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBBZGRDb25zdCwgTWF5YmVBZGRDb25zdCwg
UmVtb3ZlQ29uc3QKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgQWRkQ29uc3QgeyB0eXBl
ZGVmIGNvbnN0IFQgVHlwZTsgfTsKK3RlbXBsYXRlIDxib29sIENvbnN0aWZ5LCB0eXBlbmFtZSBU
PiBzdHJ1Y3QgTWF5YmVBZGRDb25zdCA6IFNlbGVjdElmQ29uZDxDb25zdGlmeSwgY29uc3QgVCwg
VD4ge307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlbW92ZUNvbnN0IHsgdHlwZWRl
ZiBUIFR5cGU7IH07Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlbW92ZUNvbnN0PGNv
bnN0IFQ+IHsgdHlwZWRlZiBUIFR5cGU7IH07CisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwor
Ly8gSXNTYW1lLCBJc0NvbnN0LCBJc01vcmVDb25zdCwgSXNQb2ludGVyCisvLwordGVtcGxhdGUg
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IHN0cnVjdCBJc1NhbWUgOiBGYWxzZVR5cGUge307Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElzU2FtZTxULCBUPiA6IFRydWVUeXBlIHt9Owor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElzQ29uc3QgOiBGYWxzZVR5cGUge307Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElzQ29uc3Q8Y29uc3QgVD4gOiBUcnVlVHlwZSB7
fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIENULCB0eXBlbmFtZSBUPgorc3RydWN0IElzTW9yZUNv
bnN0CisgICAgOiBBbmRFeHByPElzU2FtZTx0eXBlbmFtZSBSZW1vdmVDb25zdDxDVD46OlR5cGUs
IHR5cGVuYW1lIFJlbW92ZUNvbnN0PFQ+OjpUeXBlPiwKKyAgICAgICAgICAgICAgQm9vbFR5cGU8
SXNDb25zdDxDVD46OlZhbHVlID49IElzQ29uc3Q8VD46OlZhbHVlPiA+OjpUeXBlIHt9OworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElzUG9pbnRlciA6IEZhbHNlVHlwZSB7fTsKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgSXNQb2ludGVyPFQqPiA6IFRydWVUeXBlIHt9Owor
CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBJc0Jhc2VPZgorLy8KKyNpZiBSQVBJREpTT05f
SEFTX0NYWDExX1RZUEVUUkFJVFMKKwordGVtcGxhdGUgPHR5cGVuYW1lIEIsIHR5cGVuYW1lIEQ+
IHN0cnVjdCBJc0Jhc2VPZgorICAgIDogQm9vbFR5cGU8IDo6c3RkOjppc19iYXNlX29mPEIsRD46
OnZhbHVlPiB7fTsKKworI2Vsc2UgLy8gc2ltcGxpZmllZCB2ZXJzaW9uIGFkb3B0ZWQgZnJvbSBC
b29zdAorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCLCB0eXBlbmFtZSBEPiBzdHJ1Y3QgSXNCYXNlT2ZJ
bXBsIHsKKyAgICBSQVBJREpTT05fU1RBVElDX0FTU0VSVChzaXplb2YoQikgIT0gMCk7CisgICAg
UkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKEQpICE9IDApOworCisgICAgdHlwZWRlZiBj
aGFyICgmWWVzKVsxXTsKKyAgICB0eXBlZGVmIGNoYXIgKCZObykgWzJdOworCisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CisgICAgc3RhdGljIFllcyBDaGVjayhjb25zdCBEKiwgVCk7CisgICAg
c3RhdGljIE5vICBDaGVjayhjb25zdCBCKiwgaW50KTsKKworICAgIHN0cnVjdCBIb3N0IHsKKyAg
ICAgICAgb3BlcmF0b3IgY29uc3QgQiooKSBjb25zdDsKKyAgICAgICAgb3BlcmF0b3IgY29uc3Qg
RCooKTsKKyAgICB9OworCisgICAgZW51bSB7IFZhbHVlID0gKHNpemVvZihDaGVjayhIb3N0KCks
IDApKSA9PSBzaXplb2YoWWVzKSkgfTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBCLCB0eXBl
bmFtZSBEPiBzdHJ1Y3QgSXNCYXNlT2YKKyAgICA6IE9yRXhwcjxJc1NhbWU8QiwgRD4sIEJvb2xF
eHByPElzQmFzZU9mSW1wbDxCLCBEPiA+ID46OlR5cGUge307CisKKyNlbmRpZiAvLyBSQVBJREpT
T05fSEFTX0NYWDExX1RZUEVUUkFJVFMKKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gRW5hYmxl
SWYgLyBEaXNhYmxlSWYKKy8vCit0ZW1wbGF0ZSA8Ym9vbCBDb25kaXRpb24sIHR5cGVuYW1lIFQg
PSB2b2lkPiBzdHJ1Y3QgRW5hYmxlSWZDb25kICB7IHR5cGVkZWYgVCBUeXBlOyB9OwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBFbmFibGVJZkNvbmQ8ZmFsc2UsIFQ+IHsgLyogZW1wdHkg
Ki8gfTsKKwordGVtcGxhdGUgPGJvb2wgQ29uZGl0aW9uLCB0eXBlbmFtZSBUID0gdm9pZD4gc3Ry
dWN0IERpc2FibGVJZkNvbmQgeyB0eXBlZGVmIFQgVHlwZTsgfTsKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgRGlzYWJsZUlmQ29uZDx0cnVlLCBUPiB7IC8qIGVtcHR5ICovIH07CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBDb25kaXRpb24sIHR5cGVuYW1lIFQgPSB2b2lkPgorc3RydWN0IEVu
YWJsZUlmIDogRW5hYmxlSWZDb25kPENvbmRpdGlvbjo6VmFsdWUsIFQ+IHt9OworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ29uZGl0aW9uLCB0eXBlbmFtZSBUID0gdm9pZD4KK3N0cnVjdCBEaXNhYmxl
SWYgOiBEaXNhYmxlSWZDb25kPENvbmRpdGlvbjo6VmFsdWUsIFQ+IHt9OworCisvLyBTRklOQUUg
aGVscGVycworc3RydWN0IFNmaW5hZVRhZyB7fTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1
Y3QgUmVtb3ZlU2ZpbmFlVGFnOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBSZW1vdmVT
ZmluYWVUYWc8U2ZpbmFlVGFnJigqKShUKT4geyB0eXBlZGVmIFQgVHlwZTsgfTsKKworI2RlZmlu
ZSBSQVBJREpTT05fUkVNT1ZFRlBUUl8odHlwZSkgXAorICAgIHR5cGVuYW1lIDo6UkFQSURKU09O
X05BTUVTUEFDRTo6aW50ZXJuYWw6OlJlbW92ZVNmaW5hZVRhZyBcCisgICAgICAgIDwgOjpSQVBJ
REpTT05fTkFNRVNQQUNFOjppbnRlcm5hbDo6U2ZpbmFlVGFnJigqKSB0eXBlPjo6VHlwZQorCisj
ZGVmaW5lIFJBUElESlNPTl9FTkFCTEVJRihjb25kKSBcCisgICAgdHlwZW5hbWUgOjpSQVBJREpT
T05fTkFNRVNQQUNFOjppbnRlcm5hbDo6RW5hYmxlSWYgXAorICAgICAgICA8UkFQSURKU09OX1JF
TU9WRUZQVFJfKGNvbmQpPjo6VHlwZSAqID0gTlVMTAorCisjZGVmaW5lIFJBUElESlNPTl9ESVNB
QkxFSUYoY29uZCkgXAorICAgIHR5cGVuYW1lIDo6UkFQSURKU09OX05BTUVTUEFDRTo6aW50ZXJu
YWw6OkRpc2FibGVJZiBcCisgICAgICAgIDxSQVBJREpTT05fUkVNT1ZFRlBUUl8oY29uZCk+OjpU
eXBlICogPSBOVUxMCisKKyNkZWZpbmUgUkFQSURKU09OX0VOQUJMRUlGX1JFVFVSTihjb25kLHJl
dHVybnR5cGUpIFwKKyAgICB0eXBlbmFtZSA6OlJBUElESlNPTl9OQU1FU1BBQ0U6OmludGVybmFs
OjpFbmFibGVJZiBcCisgICAgICAgIDxSQVBJREpTT05fUkVNT1ZFRlBUUl8oY29uZCksIFwKKyAg
ICAgICAgIFJBUElESlNPTl9SRU1PVkVGUFRSXyhyZXR1cm50eXBlKT46OlR5cGUKKworI2RlZmlu
ZSBSQVBJREpTT05fRElTQUJMRUlGX1JFVFVSTihjb25kLHJldHVybnR5cGUpIFwKKyAgICB0eXBl
bmFtZSA6OlJBUElESlNPTl9OQU1FU1BBQ0U6OmludGVybmFsOjpEaXNhYmxlSWYgXAorICAgICAg
ICA8UkFQSURKU09OX1JFTU9WRUZQVFJfKGNvbmQpLCBcCisgICAgICAgICBSQVBJREpTT05fUkVN
T1ZFRlBUUl8ocmV0dXJudHlwZSk+OjpUeXBlCisKK30gLy8gbmFtZXNwYWNlIGludGVybmFsCitS
QVBJREpTT05fTkFNRVNQQUNFX0VORAorLy9AZW5kY29uZAorCisjaWYgZGVmaW5lZChfX0dOVUNf
XykgfHwgZGVmaW5lZChfTVNDX1ZFUikKK1JBUElESlNPTl9ESUFHX1BPUAorI2VuZGlmCisKKyNl
bmRpZiAvLyBSQVBJREpTT05fSU5URVJOQUxfTUVUQV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNv
bi9pbnRlcm5hbC9wb3cxMC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJu
YWwvcG93MTAuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ludGVybmFsL3Bv
dzEwLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OSBAQAorLy8gQ29weXJpZ2h0IChDKSAy
MDExIE1pbG8gWWlwCisvLworLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv
ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorLy8gb2YgdGhpcyBzb2Z0
d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiks
IHRvIGRlYWwKKy8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp
bmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKKy8vIHRvIHVzZSwgY29weSwgbW9kaWZ5
LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKKy8v
IGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo
ZSBTb2Z0d2FyZSBpcworLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9uczoKKy8vCisvLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg
dGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorLy8gYWxsIGNvcGll
cyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisvLworLy8gVEhFIFNP
RlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs
IEVYUFJFU1MgT1IKKy8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhF
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisv
LyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBE
QU1BR0VTIE9SIE9USEVSCisvLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENP
TlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorLy8gT1VUIE9GIE9SIElO
IENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5H
UyBJTgorLy8gVEhFIFNPRlRXQVJFLgorCisjaWZuZGVmIFJBUElESlNPTl9QT1cxMF8KKyNkZWZp
bmUgUkFQSURKU09OX1BPVzEwXworCitSQVBJREpTT05fTkFNRVNQQUNFX0JFR0lOCituYW1lc3Bh
Y2UgaW50ZXJuYWwgeworCisvLyEgQ29tcHV0ZXMgaW50ZWdlciBwb3dlcnMgb2YgMTAgaW4gZG91
YmxlICgxMC4wXm4pLgorLyohIFRoaXMgZnVuY3Rpb24gdXNlcyBsb29rdXAgdGFibGUgZm9yIGZh
c3QgYW5kIGFjY3VyYXRlIHJlc3VsdHMuCisgICAgXHBhcmFtIG4gbm9uLW5lZ2F0aXZlIGV4cG9u
ZW50LiBNdXN0IDw9IDMwOC4KKyAgICBccmV0dXJuIDEwLjBebgorKi8KK2lubGluZSBkb3VibGUg
UG93MTAoaW50IG4pIHsKKyAgICBzdGF0aWMgY29uc3QgZG91YmxlIGVbXSA9IHsgLy8gMWUtMC4u
LjFlMzA4OiAzMDkgKiA4IGJ5dGVzID0gMjQ3MiBieXRlcworICAgICAgICAxZSswLCAgCisgICAg
ICAgIDFlKzEsICAxZSsyLCAgMWUrMywgIDFlKzQsICAxZSs1LCAgMWUrNiwgIDFlKzcsICAxZSs4
LCAgMWUrOSwgIDFlKzEwLCAxZSsxMSwgMWUrMTIsIDFlKzEzLCAxZSsxNCwgMWUrMTUsIDFlKzE2
LCAxZSsxNywgMWUrMTgsIDFlKzE5LCAxZSsyMCwgCisgICAgICAgIDFlKzIxLCAxZSsyMiwgMWUr
MjMsIDFlKzI0LCAxZSsyNSwgMWUrMjYsIDFlKzI3LCAxZSsyOCwgMWUrMjksIDFlKzMwLCAxZSsz
MSwgMWUrMzIsIDFlKzMzLCAxZSszNCwgMWUrMzUsIDFlKzM2LCAxZSszNywgMWUrMzgsIDFlKzM5
LCAxZSs0MCwKKyAgICAgICAgMWUrNDEsIDFlKzQyLCAxZSs0MywgMWUrNDQsIDFlKzQ1LCAxZSs0
NiwgMWUrNDcsIDFlKzQ4LCAxZSs0OSwgMWUrNTAsIDFlKzUxLCAxZSs1MiwgMWUrNTMsIDFlKzU0
LCAxZSs1NSwgMWUrNTYsIDFlKzU3LCAxZSs1OCwgMWUrNTksIDFlKzYwLAorICAgICAgICAxZSs2
MSwgMWUrNjIsIDFlKzYzLCAxZSs2NCwgMWUrNjUsIDFlKzY2LCAxZSs2NywgMWUrNjgsIDFlKzY5
LCAxZSs3MCwgMWUrNzEsIDFlKzcyLCAxZSs3MywgMWUrNzQsIDFlKzc1LCAxZSs3NiwgMWUrNzcs
IDFlKzc4LCAxZSs3OSwgMWUrODAsCisgICAgICAgIDFlKzgxLCAxZSs4MiwgMWUrODMsIDFlKzg0
LCAxZSs4NSwgMWUrODYsIDFlKzg3LCAxZSs4OCwgMWUrODksIDFlKzkwLCAxZSs5MSwgMWUrOTIs
IDFlKzkzLCAxZSs5NCwgMWUrOTUsIDFlKzk2LCAxZSs5NywgMWUrOTgsIDFlKzk5LCAxZSsxMDAs
CisgICAgICAgIDFlKzEwMSwxZSsxMDIsMWUrMTAzLDFlKzEwNCwxZSsxMDUsMWUrMTA2LDFlKzEw
NywxZSsxMDgsMWUrMTA5LDFlKzExMCwxZSsxMTEsMWUrMTEyLDFlKzExMywxZSsxMTQsMWUrMTE1
LDFlKzExNiwxZSsxMTcsMWUrMTE4LDFlKzExOSwxZSsxMjAsCisgICAgICAgIDFlKzEyMSwxZSsx
MjIsMWUrMTIzLDFlKzEyNCwxZSsxMjUsMWUrMTI2LDFlKzEyNywxZSsxMjgsMWUrMTI5LDFlKzEz
MCwxZSsxMzEsMWUrMTMyLDFlKzEzMywxZSsxMzQsMWUrMTM1LDFlKzEzNiwxZSsxMzcsMWUrMTM4
LDFlKzEzOSwxZSsxNDAsCisgICAgICAgIDFlKzE0MSwxZSsxNDIsMWUrMTQzLDFlKzE0NCwxZSsx
NDUsMWUrMTQ2LDFlKzE0NywxZSsxNDgsMWUrMTQ5LDFlKzE1MCwxZSsxNTEsMWUrMTUyLDFlKzE1
MywxZSsxNTQsMWUrMTU1LDFlKzE1NiwxZSsxNTcsMWUrMTU4LDFlKzE1OSwxZSsxNjAsCisgICAg
ICAgIDFlKzE2MSwxZSsxNjIsMWUrMTYzLDFlKzE2NCwxZSsxNjUsMWUrMTY2LDFlKzE2NywxZSsx
NjgsMWUrMTY5LDFlKzE3MCwxZSsxNzEsMWUrMTcyLDFlKzE3MywxZSsxNzQsMWUrMTc1LDFlKzE3
NiwxZSsxNzcsMWUrMTc4LDFlKzE3OSwxZSsxODAsCisgICAgICAgIDFlKzE4MSwxZSsxODIsMWUr
MTgzLDFlKzE4NCwxZSsxODUsMWUrMTg2LDFlKzE4NywxZSsxODgsMWUrMTg5LDFlKzE5MCwxZSsx
OTEsMWUrMTkyLDFlKzE5MywxZSsxOTQsMWUrMTk1LDFlKzE5NiwxZSsxOTcsMWUrMTk4LDFlKzE5
OSwxZSsyMDAsCisgICAgICAgIDFlKzIwMSwxZSsyMDIsMWUrMjAzLDFlKzIwNCwxZSsyMDUsMWUr
MjA2LDFlKzIwNywxZSsyMDgsMWUrMjA5LDFlKzIxMCwxZSsyMTEsMWUrMjEyLDFlKzIxMywxZSsy
MTQsMWUrMjE1LDFlKzIxNiwxZSsyMTcsMWUrMjE4LDFlKzIxOSwxZSsyMjAsCisgICAgICAgIDFl
KzIyMSwxZSsyMjIsMWUrMjIzLDFlKzIyNCwxZSsyMjUsMWUrMjI2LDFlKzIyNywxZSsyMjgsMWUr
MjI5LDFlKzIzMCwxZSsyMzEsMWUrMjMyLDFlKzIzMywxZSsyMzQsMWUrMjM1LDFlKzIzNiwxZSsy
MzcsMWUrMjM4LDFlKzIzOSwxZSsyNDAsCisgICAgICAgIDFlKzI0MSwxZSsyNDIsMWUrMjQzLDFl
KzI0NCwxZSsyNDUsMWUrMjQ2LDFlKzI0NywxZSsyNDgsMWUrMjQ5LDFlKzI1MCwxZSsyNTEsMWUr
MjUyLDFlKzI1MywxZSsyNTQsMWUrMjU1LDFlKzI1NiwxZSsyNTcsMWUrMjU4LDFlKzI1OSwxZSsy
NjAsCisgICAgICAgIDFlKzI2MSwxZSsyNjIsMWUrMjYzLDFlKzI2NCwxZSsyNjUsMWUrMjY2LDFl
KzI2NywxZSsyNjgsMWUrMjY5LDFlKzI3MCwxZSsyNzEsMWUrMjcyLDFlKzI3MywxZSsyNzQsMWUr
Mjc1LDFlKzI3NiwxZSsyNzcsMWUrMjc4LDFlKzI3OSwxZSsyODAsCisgICAgICAgIDFlKzI4MSwx
ZSsyODIsMWUrMjgzLDFlKzI4NCwxZSsyODUsMWUrMjg2LDFlKzI4NywxZSsyODgsMWUrMjg5LDFl
KzI5MCwxZSsyOTEsMWUrMjkyLDFlKzI5MywxZSsyOTQsMWUrMjk1LDFlKzI5NiwxZSsyOTcsMWUr
Mjk4LDFlKzI5OSwxZSszMDAsCisgICAgICAgIDFlKzMwMSwxZSszMDIsMWUrMzAzLDFlKzMwNCwx
ZSszMDUsMWUrMzA2LDFlKzMwNywxZSszMDgKKyAgICB9OworICAgIFJBUElESlNPTl9BU1NFUlQo
biA+PSAwICYmIG4gPD0gMzA4KTsKKyAgICByZXR1cm4gZVtuXTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgaW50ZXJuYWwKK1JBUElESlNPTl9OQU1FU1BBQ0VfRU5ECisKKyNlbmRpZiAvLyBSQVBJREpT
T05fUE9XMTBfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRf
cGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ludGVybmFsL3N0YWNrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3Jh
cGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9pbnRlcm5hbC9zdGFjay5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpz
b24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvc3RhY2suaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE4MyBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExIE1pbG8gWWlwCisvLworLy8gUGVy
bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g
b2J0YWluaW5nIGEgY29weQorLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1
bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKKy8vIGluIHRoZSBTb2Z0
d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRo
ZSByaWdodHMKKy8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJp
YnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKKy8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUs
IGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLy8gZnVybmlz
aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKy8vCisv
LyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBz
aGFsbCBiZSBpbmNsdWRlZCBpbgorLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9u
cyBvZiB0aGUgU29mdHdhcmUuCisvLworLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ
UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKy8vIElNUExJRUQs
IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZLAorLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJ
TkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisvLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBI
T0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisvLyBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT
RSwgQVJJU0lORyBGUk9NLAorLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G
VFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgorLy8gVEhFIFNPRlRXQVJFLgor
CisjaWZuZGVmIFJBUElESlNPTl9JTlRFUk5BTF9TVEFDS19IXworI2RlZmluZSBSQVBJREpTT05f
SU5URVJOQUxfU1RBQ0tfSF8KKworUkFQSURKU09OX05BTUVTUEFDRV9CRUdJTgorbmFtZXNwYWNl
IGludGVybmFsIHsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gU3RhY2sKKworLy8hIEEg
dHlwZS11bnNhZmUgc3RhY2sgZm9yIHN0b3JpbmcgZGlmZmVyZW50IHR5cGVzIG9mIGRhdGEuCisv
KiEgXHRwYXJhbSBBbGxvY2F0b3IgQWxsb2NhdG9yIGZvciBhbGxvY2F0aW5nIHN0YWNrIG1lbW9y
eS4KKyovCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2NhdG9yPgorY2xhc3MgU3RhY2sgeworcHVi
bGljOgorICAgIC8vIE9wdGltaXphdGlvbiBub3RlOiBEbyBub3QgYWxsb2NhdGUgbWVtb3J5IGZv
ciBzdGFja18gaW4gY29uc3RydWN0b3IuCisgICAgLy8gRG8gaXQgbGF6aWx5IHdoZW4gZmlyc3Qg
UHVzaCgpIC0+IEV4cGFuZCgpIC0+IFJlc2l6ZSgpLgorICAgIFN0YWNrKEFsbG9jYXRvciogYWxs
b2NhdG9yLCBzaXplX3Qgc3RhY2tDYXBhY2l0eSkgOiBhbGxvY2F0b3JfKGFsbG9jYXRvciksIG93
bkFsbG9jYXRvcl8oMCksIHN0YWNrXygwKSwgc3RhY2tUb3BfKDApLCBzdGFja0VuZF8oMCksIGlu
aXRpYWxDYXBhY2l0eV8oc3RhY2tDYXBhY2l0eSkgeworICAgICAgICBSQVBJREpTT05fQVNTRVJU
KHN0YWNrQ2FwYWNpdHkgPiAwKTsKKyAgICB9CisKKyNpZiBSQVBJREpTT05fSEFTX0NYWDExX1JW
QUxVRV9SRUZTCisgICAgU3RhY2soU3RhY2smJiByaHMpCisgICAgICAgIDogYWxsb2NhdG9yXyhy
aHMuYWxsb2NhdG9yXyksCisgICAgICAgICAgb3duQWxsb2NhdG9yXyhyaHMub3duQWxsb2NhdG9y
XyksCisgICAgICAgICAgc3RhY2tfKHJocy5zdGFja18pLAorICAgICAgICAgIHN0YWNrVG9wXyhy
aHMuc3RhY2tUb3BfKSwKKyAgICAgICAgICBzdGFja0VuZF8ocmhzLnN0YWNrRW5kXyksCisgICAg
ICAgICAgaW5pdGlhbENhcGFjaXR5XyhyaHMuaW5pdGlhbENhcGFjaXR5XykKKyAgICB7CisgICAg
ICAgIHJocy5hbGxvY2F0b3JfID0gMDsKKyAgICAgICAgcmhzLm93bkFsbG9jYXRvcl8gPSAwOwor
ICAgICAgICByaHMuc3RhY2tfID0gMDsKKyAgICAgICAgcmhzLnN0YWNrVG9wXyA9IDA7CisgICAg
ICAgIHJocy5zdGFja0VuZF8gPSAwOworICAgICAgICByaHMuaW5pdGlhbENhcGFjaXR5XyA9IDA7
CisgICAgfQorI2VuZGlmCisKKyAgICB+U3RhY2soKSB7CisgICAgICAgIERlc3Ryb3koKTsKKyAg
ICB9CisKKyNpZiBSQVBJREpTT05fSEFTX0NYWDExX1JWQUxVRV9SRUZTCisgICAgU3RhY2smIG9w
ZXJhdG9yPShTdGFjayYmIHJocykgeworICAgICAgICBpZiAoJnJocyAhPSB0aGlzKQorICAgICAg
ICB7CisgICAgICAgICAgICBEZXN0cm95KCk7CisKKyAgICAgICAgICAgIGFsbG9jYXRvcl8gPSBy
aHMuYWxsb2NhdG9yXzsKKyAgICAgICAgICAgIG93bkFsbG9jYXRvcl8gPSByaHMub3duQWxsb2Nh
dG9yXzsKKyAgICAgICAgICAgIHN0YWNrXyA9IHJocy5zdGFja187CisgICAgICAgICAgICBzdGFj
a1RvcF8gPSByaHMuc3RhY2tUb3BfOworICAgICAgICAgICAgc3RhY2tFbmRfID0gcmhzLnN0YWNr
RW5kXzsKKyAgICAgICAgICAgIGluaXRpYWxDYXBhY2l0eV8gPSByaHMuaW5pdGlhbENhcGFjaXR5
XzsKKworICAgICAgICAgICAgcmhzLmFsbG9jYXRvcl8gPSAwOworICAgICAgICAgICAgcmhzLm93
bkFsbG9jYXRvcl8gPSAwOworICAgICAgICAgICAgcmhzLnN0YWNrXyA9IDA7CisgICAgICAgICAg
ICByaHMuc3RhY2tUb3BfID0gMDsKKyAgICAgICAgICAgIHJocy5zdGFja0VuZF8gPSAwOworICAg
ICAgICAgICAgcmhzLmluaXRpYWxDYXBhY2l0eV8gPSAwOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiAqdGhpczsKKyAgICB9CisjZW5kaWYKKworICAgIHZvaWQgQ2xlYXIoKSB7IHN0YWNrVG9w
XyA9IHN0YWNrXzsgfQorCisgICAgdm9pZCBTaHJpbmtUb0ZpdCgpIHsgCisgICAgICAgIGlmIChF
bXB0eSgpKSB7CisgICAgICAgICAgICAvLyBJZiB0aGUgc3RhY2sgaXMgZW1wdHksIGNvbXBsZXRl
bHkgZGVhbGxvY2F0ZSB0aGUgbWVtb3J5LgorICAgICAgICAgICAgQWxsb2NhdG9yOjpGcmVlKHN0
YWNrXyk7CisgICAgICAgICAgICBzdGFja18gPSAwOworICAgICAgICAgICAgc3RhY2tUb3BfID0g
MDsKKyAgICAgICAgICAgIHN0YWNrRW5kXyA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgUmVzaXplKEdldFNpemUoKSk7CisgICAgfQorCisgICAgLy8gT3B0aW1pemF0
aW9uIG5vdGU6IHRyeSB0byBtaW5pbWl6ZSB0aGUgc2l6ZSBvZiB0aGlzIGZ1bmN0aW9uIGZvciBm
b3JjZSBpbmxpbmUuCisgICAgLy8gRXhwYW5zaW9uIGlzIHJ1biB2ZXJ5IGluZnJlcXVlbnRseSwg
c28gaXQgaXMgbW92ZWQgdG8gYW5vdGhlciAocHJvYmFibHkgbm9uLWlubGluZSkgZnVuY3Rpb24u
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBSQVBJREpTT05fRk9SQ0VJTkxJTkUgVCog
UHVzaChzaXplX3QgY291bnQgPSAxKSB7CisgICAgICAgICAvLyBFeHBhbmQgdGhlIHN0YWNrIGlm
IG5lZWRlZAorICAgICAgICBpZiAoc3RhY2tUb3BfICsgc2l6ZW9mKFQpICogY291bnQgPj0gc3Rh
Y2tFbmRfKQorICAgICAgICAgICAgRXhwYW5kPFQ+KGNvdW50KTsKKworICAgICAgICBUKiByZXQg
PSByZWludGVycHJldF9jYXN0PFQqPihzdGFja1RvcF8pOworICAgICAgICBzdGFja1RvcF8gKz0g
c2l6ZW9mKFQpICogY291bnQ7CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KKyAgICBUKiBQb3Aoc2l6ZV90IGNvdW50KSB7CisgICAgICAgIFJB
UElESlNPTl9BU1NFUlQoR2V0U2l6ZSgpID49IGNvdW50ICogc2l6ZW9mKFQpKTsKKyAgICAgICAg
c3RhY2tUb3BfIC09IGNvdW50ICogc2l6ZW9mKFQpOworICAgICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxUKj4oc3RhY2tUb3BfKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgorICAgIFQqIFRvcCgpIHsgCisgICAgICAgIFJBUElESlNPTl9BU1NFUlQoR2V0U2l6ZSgpID49
IHNpemVvZihUKSk7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQqPihzdGFja1Rv
cF8gLSBzaXplb2YoVCkpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAg
VCogQm90dG9tKCkgeyByZXR1cm4gKFQqKXN0YWNrXzsgfQorCisgICAgQWxsb2NhdG9yJiBHZXRB
bGxvY2F0b3IoKSB7IHJldHVybiAqYWxsb2NhdG9yXzsgfQorICAgIGJvb2wgRW1wdHkoKSBjb25z
dCB7IHJldHVybiBzdGFja1RvcF8gPT0gc3RhY2tfOyB9CisgICAgc2l6ZV90IEdldFNpemUoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0YWNrVG9wXyAtIHN0YWNrXyk7IH0K
KyAgICBzaXplX3QgR2V0Q2FwYWNpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxzaXpl
X3Q+KHN0YWNrRW5kXyAtIHN0YWNrXyk7IH0KKworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorICAgIHZvaWQgRXhwYW5kKHNpemVfdCBjb3VudCkgeworICAgICAgICAvLyBPbmx5
IGV4cGFuZCB0aGUgY2FwYWNpdHkgaWYgdGhlIGN1cnJlbnQgc3RhY2sgZXhpc3RzLiBPdGhlcndp
c2UganVzdCBjcmVhdGUgYSBzdGFjayB3aXRoIGluaXRpYWwgY2FwYWNpdHkuCisgICAgICAgIHNp
emVfdCBuZXdDYXBhY2l0eTsKKyAgICAgICAgaWYgKHN0YWNrXyA9PSAwKSB7CisgICAgICAgICAg
ICBpZiAoIWFsbG9jYXRvcl8pCisgICAgICAgICAgICAgICAgb3duQWxsb2NhdG9yXyA9IGFsbG9j
YXRvcl8gPSBSQVBJREpTT05fTkVXKEFsbG9jYXRvcigpKTsKKyAgICAgICAgICAgIG5ld0NhcGFj
aXR5ID0gaW5pdGlhbENhcGFjaXR5XzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG5l
d0NhcGFjaXR5ID0gR2V0Q2FwYWNpdHkoKTsKKyAgICAgICAgICAgIG5ld0NhcGFjaXR5ICs9IChu
ZXdDYXBhY2l0eSArIDEpIC8gMjsKKyAgICAgICAgfQorICAgICAgICBzaXplX3QgbmV3U2l6ZSA9
IEdldFNpemUoKSArIHNpemVvZihUKSAqIGNvdW50OworICAgICAgICBpZiAobmV3Q2FwYWNpdHkg
PCBuZXdTaXplKQorICAgICAgICAgICAgbmV3Q2FwYWNpdHkgPSBuZXdTaXplOworCisgICAgICAg
IFJlc2l6ZShuZXdDYXBhY2l0eSk7CisgICAgfQorCisgICAgdm9pZCBSZXNpemUoc2l6ZV90IG5l
d0NhcGFjaXR5KSB7CisgICAgICAgIGNvbnN0IHNpemVfdCBzaXplID0gR2V0U2l6ZSgpOyAgLy8g
QmFja3VwIHRoZSBjdXJyZW50IHNpemUKKyAgICAgICAgc3RhY2tfID0gKGNoYXIqKWFsbG9jYXRv
cl8tPlJlYWxsb2Moc3RhY2tfLCBHZXRDYXBhY2l0eSgpLCBuZXdDYXBhY2l0eSk7CisgICAgICAg
IHN0YWNrVG9wXyA9IHN0YWNrXyArIHNpemU7CisgICAgICAgIHN0YWNrRW5kXyA9IHN0YWNrXyAr
IG5ld0NhcGFjaXR5OworICAgIH0KKworICAgIHZvaWQgRGVzdHJveSgpIHsKKyAgICAgICAgQWxs
b2NhdG9yOjpGcmVlKHN0YWNrXyk7CisgICAgICAgIFJBUElESlNPTl9ERUxFVEUob3duQWxsb2Nh
dG9yXyk7IC8vIE9ubHkgZGVsZXRlIGlmIGl0IGlzIG93bmVkIGJ5IHRoZSBzdGFjaworICAgIH0K
KworICAgIC8vIFByb2hpYml0IGNvcHkgY29uc3RydWN0b3IgJiBhc3NpZ25tZW50IG9wZXJhdG9y
LgorICAgIFN0YWNrKGNvbnN0IFN0YWNrJik7CisgICAgU3RhY2smIG9wZXJhdG9yPShjb25zdCBT
dGFjayYpOworCisgICAgQWxsb2NhdG9yKiBhbGxvY2F0b3JfOworICAgIEFsbG9jYXRvciogb3du
QWxsb2NhdG9yXzsKKyAgICBjaGFyICpzdGFja187CisgICAgY2hhciAqc3RhY2tUb3BfOworICAg
IGNoYXIgKnN0YWNrRW5kXzsKKyAgICBzaXplX3QgaW5pdGlhbENhcGFjaXR5XzsKK307CisKK30g
Ly8gbmFtZXNwYWNlIGludGVybmFsCitSQVBJREpTT05fTkFNRVNQQUNFX0VORAorCisjZW5kaWYg
Ly8gUkFQSURKU09OX1NUQUNLX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ludGVybmFsL3N0
cmZ1bmMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
dGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ludGVybmFsL3N0cmZ1bmMu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhp
cmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ludGVybmFsL3N0cmZ1bmMuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzIEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEgTWls
byBZaXAKKy8vCisvLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn
ZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisvLyBvZiB0aGlzIHNvZnR3YXJlIGFu
ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVh
bAorLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRo
b3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cworLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdl
LCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorLy8gY29waWVz
IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3
YXJlIGlzCisvLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zOgorLy8KKy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBl
cm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisvLyBhbGwgY29waWVzIG9yIHN1
YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKy8vCisvLyBUSEUgU09GVFdBUkUg
SVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVT
UyBPUgorLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisvLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKy8vIEFVVEhP
UlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMg
T1IgT1RIRVIKKy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1Qs
IFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisvLyBPVVQgT0YgT1IgSU4gQ09OTkVD
VElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCisv
LyBUSEUgU09GVFdBUkUuCisKKyNpZm5kZWYgUkFQSURKU09OX0lOVEVSTkFMX1NUUkZVTkNfSF8K
KyNkZWZpbmUgUkFQSURKU09OX0lOVEVSTkFMX1NUUkZVTkNfSF8KKworUkFQSURKU09OX05BTUVT
UEFDRV9CRUdJTgorbmFtZXNwYWNlIGludGVybmFsIHsKKworLy8hIEN1c3RvbSBzdHJsZW4oKSB3
aGljaCB3b3JrcyBvbiBkaWZmZXJlbnQgY2hhcmFjdGVyIHR5cGVzLgorLyohIFx0cGFyYW0gQ2gg
Q2hhcmFjdGVyIHR5cGUgKGUuZy4gY2hhciwgd2NoYXJfdCwgc2hvcnQpCisgICAgXHBhcmFtIHMg
TnVsbC10ZXJtaW5hdGVkIGlucHV0IHN0cmluZy4KKyAgICBccmV0dXJuIE51bWJlciBvZiBjaGFy
YWN0ZXJzIGluIHRoZSBzdHJpbmcuIAorICAgIFxub3RlIFRoaXMgaGFzIHRoZSBzYW1lIHNlbWFu
dGljcyBhcyBzdHJsZW4oKSwgdGhlIHJldHVybiB2YWx1ZSBpcyBub3QgbnVtYmVyIG9mIFVuaWNv
ZGUgY29kZXBvaW50cy4KKyovCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2g+CitpbmxpbmUgU2l6ZVR5
cGUgU3RyTGVuKGNvbnN0IENoKiBzKSB7CisgICAgY29uc3QgQ2gqIHAgPSBzOworICAgIHdoaWxl
ICgqcCkgKytwOworICAgIHJldHVybiBTaXplVHlwZShwIC0gcyk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIGludGVybmFsCitSQVBJREpTT05fTkFNRVNQQUNFX0VORAorCisjZW5kaWYgLy8gUkFQSURK
U09OX0lOVEVSTkFMX1NUUkZVTkNfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwv
c3RydG9kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9pbnRlcm5hbC9zdHJ0b2Qu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhp
cmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ludGVybmFsL3N0cnRvZC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjg1IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEgTWls
byBZaXAKKy8vCisvLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn
ZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisvLyBvZiB0aGlzIHNvZnR3YXJlIGFu
ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVh
bAorLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRo
b3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cworLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdl
LCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorLy8gY29waWVz
IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3
YXJlIGlzCisvLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zOgorLy8KKy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBl
cm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisvLyBhbGwgY29waWVzIG9yIHN1
YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKy8vCisvLyBUSEUgU09GVFdBUkUg
SVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVT
UyBPUgorLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisvLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKy8vIEFVVEhP
UlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMg
T1IgT1RIRVIKKy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1Qs
IFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisvLyBPVVQgT0YgT1IgSU4gQ09OTkVD
VElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCisv
LyBUSEUgU09GVFdBUkUuCisKKyNpZm5kZWYgUkFQSURKU09OX1NUUlRPRF8KKyNkZWZpbmUgUkFQ
SURKU09OX1NUUlRPRF8KKworI2luY2x1ZGUgIi4uL3JhcGlkanNvbi5oIgorI2luY2x1ZGUgImll
ZWU3NTQuaCIKKyNpbmNsdWRlICJiaWdpbnRlZ2VyLmgiCisjaW5jbHVkZSAiZGl5ZnAuaCIKKyNp
bmNsdWRlICJwb3cxMC5oIgorCitSQVBJREpTT05fTkFNRVNQQUNFX0JFR0lOCituYW1lc3BhY2Ug
aW50ZXJuYWwgeworCitpbmxpbmUgZG91YmxlIEZhc3RQYXRoKGRvdWJsZSBzaWduaWZpY2FuZCwg
aW50IGV4cCkgeworICAgIGlmIChleHAgPCAtMzA4KQorICAgICAgICByZXR1cm4gMC4wOworICAg
IGVsc2UgaWYgKGV4cCA+PSAwKQorICAgICAgICByZXR1cm4gc2lnbmlmaWNhbmQgKiBpbnRlcm5h
bDo6UG93MTAoZXhwKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBzaWduaWZpY2FuZCAvIGlu
dGVybmFsOjpQb3cxMCgtZXhwKTsKK30KKworaW5saW5lIGRvdWJsZSBTdHJ0b2ROb3JtYWxQcmVj
aXNpb24oZG91YmxlIGQsIGludCBwKSB7CisgICAgaWYgKHAgPCAtMzA4KSB7CisgICAgICAgIC8v
IFByZXZlbnQgZXhwU3VtIDwgLTMwOCwgbWFraW5nIFBvdzEwKHApID0gMAorICAgICAgICBkID0g
RmFzdFBhdGgoZCwgLTMwOCk7CisgICAgICAgIGQgPSBGYXN0UGF0aChkLCBwICsgMzA4KTsKKyAg
ICB9CisgICAgZWxzZQorICAgICAgICBkID0gRmFzdFBhdGgoZCwgcCk7CisgICAgcmV0dXJuIGQ7
Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIFQgTWluMyhUIGEsIFQgYiwgVCBj
KSB7CisgICAgVCBtID0gYTsKKyAgICBpZiAobSA+IGIpIG0gPSBiOworICAgIGlmIChtID4gYykg
bSA9IGM7CisgICAgcmV0dXJuIG07Cit9CisKK2lubGluZSBpbnQgQ2hlY2tXaXRoaW5IYWxmVUxQ
KGRvdWJsZSBiLCBjb25zdCBCaWdJbnRlZ2VyJiBkLCBpbnQgZEV4cCwgYm9vbCogYWRqdXN0VG9O
ZWdhdGl2ZSkgeworICAgIGNvbnN0IERvdWJsZSBkYihiKTsKKyAgICBjb25zdCB1aW50NjRfdCBi
SW50ID0gZGIuSW50ZWdlclNpZ25pZmljYW5kKCk7CisgICAgY29uc3QgaW50IGJFeHAgPSBkYi5J
bnRlZ2VyRXhwb25lbnQoKTsKKyAgICBjb25zdCBpbnQgaEV4cCA9IGJFeHAgLSAxOworCisgICAg
aW50IGRTX0V4cDIgPSAwLCBkU19FeHA1ID0gMCwgYlNfRXhwMiA9IDAsIGJTX0V4cDUgPSAwLCBo
U19FeHAyID0gMCwgaFNfRXhwNSA9IDA7CisKKyAgICAvLyBBZGp1c3QgZm9yIGRlY2ltYWwgZXhw
b25lbnQKKyAgICBpZiAoZEV4cCA+PSAwKSB7CisgICAgICAgIGRTX0V4cDIgKz0gZEV4cDsKKyAg
ICAgICAgZFNfRXhwNSArPSBkRXhwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYlNfRXhw
MiAtPSBkRXhwOworICAgICAgICBiU19FeHA1IC09IGRFeHA7CisgICAgICAgIGhTX0V4cDIgLT0g
ZEV4cDsKKyAgICAgICAgaFNfRXhwNSAtPSBkRXhwOworICAgIH0KKworICAgIC8vIEFkanVzdCBm
b3IgYmluYXJ5IGV4cG9uZW50CisgICAgaWYgKGJFeHAgPj0gMCkKKyAgICAgICAgYlNfRXhwMiAr
PSBiRXhwOworICAgIGVsc2UgeworICAgICAgICBkU19FeHAyIC09IGJFeHA7CisgICAgICAgIGhT
X0V4cDIgLT0gYkV4cDsKKyAgICB9CisKKyAgICAvLyBBZGp1c3QgZm9yIGhhbGYgdWxwIGV4cG9u
ZW50CisgICAgaWYgKGhFeHAgPj0gMCkKKyAgICAgICAgaFNfRXhwMiArPSBoRXhwOworICAgIGVs
c2UgeworICAgICAgICBkU19FeHAyIC09IGhFeHA7CisgICAgICAgIGJTX0V4cDIgLT0gaEV4cDsK
KyAgICB9CisKKyAgICAvLyBSZW1vdmUgY29tbW9uIHBvd2VyIG9mIHR3byBmYWN0b3IgZnJvbSBh
bGwgdGhyZWUgc2NhbGVkIHZhbHVlcworICAgIGludCBjb21tb25fRXhwMiA9IE1pbjMoZFNfRXhw
MiwgYlNfRXhwMiwgaFNfRXhwMik7CisgICAgZFNfRXhwMiAtPSBjb21tb25fRXhwMjsKKyAgICBi
U19FeHAyIC09IGNvbW1vbl9FeHAyOworICAgIGhTX0V4cDIgLT0gY29tbW9uX0V4cDI7CisKKyAg
ICBCaWdJbnRlZ2VyIGRTID0gZDsKKyAgICBkUy5NdWx0aXBseVBvdzUoZFNfRXhwNSkgPDw9IGRT
X0V4cDI7CisKKyAgICBCaWdJbnRlZ2VyIGJTKGJJbnQpOworICAgIGJTLk11bHRpcGx5UG93NShi
U19FeHA1KSA8PD0gYlNfRXhwMjsKKworICAgIEJpZ0ludGVnZXIgaFMoMSk7CisgICAgaFMuTXVs
dGlwbHlQb3c1KGhTX0V4cDUpIDw8PSBoU19FeHAyOworCisgICAgQmlnSW50ZWdlciBkZWx0YSgw
KTsKKyAgICAqYWRqdXN0VG9OZWdhdGl2ZSA9IGRTLkRpZmZlcmVuY2UoYlMsICZkZWx0YSk7CisK
KyAgICBpbnQgY21wID0gZGVsdGEuQ29tcGFyZShoUyk7CisgICAgLy8gSWYgZGVsdGEgaXMgd2l0
aGluIDEvMiBVTFAsIGNoZWNrIGZvciBzcGVjaWFsIGNhc2Ugd2hlbiBzaWduaWZpY2FuZCBpcyBw
b3dlciBvZiB0d28uCisgICAgLy8gSW4gdGhpcyBjYXNlLCBuZWVkIHRvIGNvbXBhcmUgd2l0aCAx
LzJoIGluIHRoZSBsb3dlciBib3VuZC4KKyAgICBpZiAoY21wIDwgMCAmJiAqYWRqdXN0VG9OZWdh
dGl2ZSAmJiAvLyB3aXRoaW4gYW5kIGRTIDwgYlMKKyAgICAgICAgZGIuSXNOb3JtYWwoKSAmJiAo
YkludCAmIChiSW50IC0gMSkpID09IDAgJiYgLy8gUG93ZXIgb2YgMgorICAgICAgICBkYi5VaW50
NjRWYWx1ZSgpICE9IFJBUElESlNPTl9VSU5UNjRfQzIoMHgwMDEwMDAwMCwgMHgwMDAwMDAwMCkp
IC8vIG1pbmltdW0gbm9ybWFsIG51bWJlciBtdXN0IG5vdCBkbyB0aGlzCisgICAgeworICAgICAg
ICBkZWx0YSA8PD0gMTsKKyAgICAgICAgcmV0dXJuIGRlbHRhLkNvbXBhcmUoaFMpOworICAgIH0K
KyAgICByZXR1cm4gY21wOworfQorCitpbmxpbmUgYm9vbCBTdHJ0b2RGYXN0KGRvdWJsZSBkLCBp
bnQgcCwgZG91YmxlKiByZXN1bHQpIHsKKyAgICAvLyBVc2UgZmFzdCBwYXRoIGZvciBzdHJpbmct
dG8tZG91YmxlIGNvbnZlcnNpb24gaWYgcG9zc2libGUKKyAgICAvLyBzZWUgaHR0cDovL3d3dy5l
eHBsb3JpbmdiaW5hcnkuY29tL2Zhc3QtcGF0aC1kZWNpbWFsLXRvLWZsb2F0aW5nLXBvaW50LWNv
bnZlcnNpb24vCisgICAgaWYgKHAgPiAyMiAgJiYgcCA8IDIyICsgMTYpIHsKKyAgICAgICAgLy8g
RmFzdCBQYXRoIENhc2VzIEluIERpc2d1aXNlCisgICAgICAgIGQgKj0gaW50ZXJuYWw6OlBvdzEw
KHAgLSAyMik7CisgICAgICAgIHAgPSAyMjsKKyAgICB9CisKKyAgICBpZiAocCA+PSAtMjIgJiYg
cCA8PSAyMiAmJiBkIDw9IDkwMDcxOTkyNTQ3NDA5OTEuMCkgeyAvLyAyXjUzIC0gMQorICAgICAg
ICAqcmVzdWx0ID0gRmFzdFBhdGgoZCwgcCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyAgICBlbHNlCisgICAgICAgIHJldHVybiBmYWxzZTsKK30KKworLy8gQ29tcHV0ZSBhbiBhcHBy
b3hpbWF0aW9uIGFuZCBzZWUgaWYgaXQgaXMgd2l0aGluIDEvMiBVTFAKK2lubGluZSBib29sIFN0
cnRvZERpeUZwKGNvbnN0IGNoYXIqIGRlY2ltYWxzLCBzaXplX3QgbGVuZ3RoLCBzaXplX3QgZGVj
aW1hbFBvc2l0aW9uLCBpbnQgZXhwLCBkb3VibGUqIHJlc3VsdCkgeworICAgIHVpbnQ2NF90IHNp
Z25pZmljYW5kID0gMDsKKyAgICBzaXplX3QgaSA9IDA7ICAgLy8gMl42NCAtIDEgPSAxODQ0Njc0
NDA3MzcwOTU1MTYxNSwgMTg0NDY3NDQwNzM3MDk1NTE2MSA9IDB4MTk5OTk5OTk5OTk5OTk5OSAg
ICAKKyAgICBmb3IgKDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmIChzaWduaWZpY2Fu
ZCAgPiAgUkFQSURKU09OX1VJTlQ2NF9DMigweDE5OTk5OTk5LCAweDk5OTk5OTk5KSB8fAorICAg
ICAgICAgICAgKHNpZ25pZmljYW5kID09IFJBUElESlNPTl9VSU5UNjRfQzIoMHgxOTk5OTk5OSwg
MHg5OTk5OTk5OSkgJiYgZGVjaW1hbHNbaV0gPiAnNScpKQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIHNpZ25pZmljYW5kID0gc2lnbmlmaWNhbmQgKiAxMCArIChkZWNpbWFsc1tpXSAtICcw
Jyk7CisgICAgfQorICAgIAorICAgIGlmIChpIDwgbGVuZ3RoICYmIGRlY2ltYWxzW2ldID49ICc1
JykgLy8gUm91bmRpbmcKKyAgICAgICAgc2lnbmlmaWNhbmQrKzsKKworICAgIHNpemVfdCByZW1h
aW5pbmcgPSBsZW5ndGggLSBpOworICAgIGNvbnN0IHVuc2lnbmVkIGtVbHBTaGlmdCA9IDM7Cisg
ICAgY29uc3QgdW5zaWduZWQga1VscCA9IDEgPDwga1VscFNoaWZ0OworICAgIGludCBlcnJvciA9
IChyZW1haW5pbmcgPT0gMCkgPyAwIDoga1VscCAvIDI7CisKKyAgICBEaXlGcCB2KHNpZ25pZmlj
YW5kLCAwKTsKKyAgICB2ID0gdi5Ob3JtYWxpemUoKTsKKyAgICBlcnJvciA8PD0gLXYuZTsKKwor
ICAgIGNvbnN0IGludCBkRXhwID0gKGludClkZWNpbWFsUG9zaXRpb24gLSAoaW50KWkgKyBleHA7
CisKKyAgICBpbnQgYWN0dWFsRXhwOworICAgIERpeUZwIGNhY2hlZFBvd2VyID0gR2V0Q2FjaGVk
UG93ZXIxMChkRXhwLCAmYWN0dWFsRXhwKTsKKyAgICBpZiAoYWN0dWFsRXhwICE9IGRFeHApIHsK
KyAgICAgICAgc3RhdGljIGNvbnN0IERpeUZwIGtQb3cxMFtdID0geworICAgICAgICAgICAgRGl5
RnAoUkFQSURKU09OX1VJTlQ2NF9DMigweGEwMDAwMDAwLCAwMDAwMDAwMCksIC02MCksICAvLyAx
MF4xCisgICAgICAgICAgICBEaXlGcChSQVBJREpTT05fVUlOVDY0X0MyKDB4YzgwMDAwMDAsIDAw
MDAwMDAwKSwgLTU3KSwgIC8vIDEwXjIKKyAgICAgICAgICAgIERpeUZwKFJBUElESlNPTl9VSU5U
NjRfQzIoMHhmYTAwMDAwMCwgMDAwMDAwMDApLCAtNTQpLCAgLy8gMTBeMworICAgICAgICAgICAg
RGl5RnAoUkFQSURKU09OX1VJTlQ2NF9DMigweDljNDAwMDAwLCAwMDAwMDAwMCksIC01MCksICAv
LyAxMF40CisgICAgICAgICAgICBEaXlGcChSQVBJREpTT05fVUlOVDY0X0MyKDB4YzM1MDAwMDAs
IDAwMDAwMDAwKSwgLTQ3KSwgIC8vIDEwXjUKKyAgICAgICAgICAgIERpeUZwKFJBUElESlNPTl9V
SU5UNjRfQzIoMHhmNDI0MDAwMCwgMDAwMDAwMDApLCAtNDQpLCAgLy8gMTBeNgorICAgICAgICAg
ICAgRGl5RnAoUkFQSURKU09OX1VJTlQ2NF9DMigweDk4OTY4MDAwLCAwMDAwMDAwMCksIC00MCkg
ICAvLyAxMF43CisgICAgICAgIH07CisgICAgICAgIGludCBhZGp1c3RtZW50ID0gZEV4cCAtIGFj
dHVhbEV4cCAtIDE7CisgICAgICAgIFJBUElESlNPTl9BU1NFUlQoYWRqdXN0bWVudCA+PSAwICYm
IGFkanVzdG1lbnQgPCA3KTsKKyAgICAgICAgdiA9IHYgKiBrUG93MTBbYWRqdXN0bWVudF07Cisg
ICAgICAgIGlmIChsZW5ndGggKyBhZGp1c3RtZW50ID4gMTkpIC8vIGhhcyBtb3JlIGRpZ2l0cyB0
aGFuIGRlY2ltYWwgZGlnaXRzIGluIDY0LWJpdAorICAgICAgICAgICAgZXJyb3IgKz0ga1VscCAv
IDI7CisgICAgfQorCisgICAgdiA9IHYgKiBjYWNoZWRQb3dlcjsKKworICAgIGVycm9yICs9IGtV
bHAgKyAoZXJyb3IgPT0gMCA/IDAgOiAxKTsKKworICAgIGNvbnN0IGludCBvbGRFeHAgPSB2LmU7
CisgICAgdiA9IHYuTm9ybWFsaXplKCk7CisgICAgZXJyb3IgPDw9IG9sZEV4cCAtIHYuZTsKKwor
ICAgIGNvbnN0IHVuc2lnbmVkIGVmZmVjdGl2ZVNpZ25pZmljYW5kU2l6ZSA9IERvdWJsZTo6RWZm
ZWN0aXZlU2lnbmlmaWNhbmRTaXplKDY0ICsgdi5lKTsKKyAgICB1bnNpZ25lZCBwcmVjaXNpb25T
aXplID0gNjQgLSBlZmZlY3RpdmVTaWduaWZpY2FuZFNpemU7CisgICAgaWYgKHByZWNpc2lvblNp
emUgKyBrVWxwU2hpZnQgPj0gNjQpIHsKKyAgICAgICAgdW5zaWduZWQgc2NhbGVFeHAgPSAocHJl
Y2lzaW9uU2l6ZSArIGtVbHBTaGlmdCkgLSA2MzsKKyAgICAgICAgdi5mID4+PSBzY2FsZUV4cDsK
KyAgICAgICAgdi5lICs9IHNjYWxlRXhwOyAKKyAgICAgICAgZXJyb3IgPSAoZXJyb3IgPj4gc2Nh
bGVFeHApICsgMSArIGtVbHA7CisgICAgICAgIHByZWNpc2lvblNpemUgLT0gc2NhbGVFeHA7Cisg
ICAgfQorCisgICAgRGl5RnAgcm91bmRlZCh2LmYgPj4gcHJlY2lzaW9uU2l6ZSwgdi5lICsgcHJl
Y2lzaW9uU2l6ZSk7CisgICAgY29uc3QgdWludDY0X3QgcHJlY2lzaW9uQml0cyA9ICh2LmYgJiAo
KHVpbnQ2NF90KDEpIDw8IHByZWNpc2lvblNpemUpIC0gMSkpICoga1VscDsKKyAgICBjb25zdCB1
aW50NjRfdCBoYWxmV2F5ID0gKHVpbnQ2NF90KDEpIDw8IChwcmVjaXNpb25TaXplIC0gMSkpICog
a1VscDsKKyAgICBpZiAocHJlY2lzaW9uQml0cyA+PSBoYWxmV2F5ICsgZXJyb3IpCisgICAgICAg
IHJvdW5kZWQuZisrOworCisgICAgKnJlc3VsdCA9IHJvdW5kZWQuVG9Eb3VibGUoKTsKKworICAg
IHJldHVybiBoYWxmV2F5IC0gZXJyb3IgPj0gcHJlY2lzaW9uQml0cyB8fCBwcmVjaXNpb25CaXRz
ID49IGhhbGZXYXkgKyBlcnJvcjsKK30KKworaW5saW5lIGRvdWJsZSBTdHJ0b2RCaWdJbnRlZ2Vy
KGRvdWJsZSBhcHByb3gsIGNvbnN0IGNoYXIqIGRlY2ltYWxzLCBzaXplX3QgbGVuZ3RoLCBzaXpl
X3QgZGVjaW1hbFBvc2l0aW9uLCBpbnQgZXhwKSB7CisgICAgY29uc3QgQmlnSW50ZWdlciBkSW50
KGRlY2ltYWxzLCBsZW5ndGgpOworICAgIGNvbnN0IGludCBkRXhwID0gKGludClkZWNpbWFsUG9z
aXRpb24gLSAoaW50KWxlbmd0aCArIGV4cDsKKyAgICBEb3VibGUgYShhcHByb3gpOworICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykgeworICAgICAgICBib29sIGFkanVzdFRvTmVnYXRp
dmU7CisgICAgICAgIGludCBjbXAgPSBDaGVja1dpdGhpbkhhbGZVTFAoYS5WYWx1ZSgpLCBkSW50
LCBkRXhwLCAmYWRqdXN0VG9OZWdhdGl2ZSk7CisgICAgICAgIGlmIChjbXAgPCAwKQorICAgICAg
ICAgICAgcmV0dXJuIGEuVmFsdWUoKTsgIC8vIHdpdGhpbiBoYWxmIFVMUAorICAgICAgICBlbHNl
IGlmIChjbXAgPT0gMCkgeworICAgICAgICAgICAgLy8gUm91bmQgdG93YXJkcyBldmVuCisgICAg
ICAgICAgICBpZiAoYS5TaWduaWZpY2FuZCgpICYgMSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
YWRqdXN0VG9OZWdhdGl2ZSA/IGEuUHJldmlvdXNQb3NpdGl2ZURvdWJsZSgpIDogYS5OZXh0UG9z
aXRpdmVEb3VibGUoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4g
YS5WYWx1ZSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgLy8gYWRqdXN0bWVudAorICAgICAg
ICAgICAgYSA9IGFkanVzdFRvTmVnYXRpdmUgPyBhLlByZXZpb3VzUG9zaXRpdmVEb3VibGUoKSA6
IGEuTmV4dFBvc2l0aXZlRG91YmxlKCk7CisgICAgfQorCisgICAgLy8gVGhpcyBzaG91bGQgbm90
IGhhcHBlbiwgYnV0IGluIGNhc2UgdGhlcmUgaXMgcmVhbGx5IGEgYnVnLCBicmVhayB0aGUgaW5m
aW5pdGUtbG9vcAorICAgIHJldHVybiBhLlZhbHVlKCk7Cit9CisKK2lubGluZSBkb3VibGUgU3Ry
dG9kRnVsbFByZWNpc2lvbihkb3VibGUgZCwgaW50IHAsIGNvbnN0IGNoYXIqIGRlY2ltYWxzLCBz
aXplX3QgbGVuZ3RoLCBzaXplX3QgZGVjaW1hbFBvc2l0aW9uLCBpbnQgZXhwKSB7CisgICAgUkFQ
SURKU09OX0FTU0VSVChkID49IDAuMCk7CisgICAgUkFQSURKU09OX0FTU0VSVChsZW5ndGggPj0g
MSk7CisKKyAgICBkb3VibGUgcmVzdWx0OworICAgIGlmIChTdHJ0b2RGYXN0KGQsIHAsICZyZXN1
bHQpKQorICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgLy8gVHJpbSBsZWFkaW5nIHplcm9z
CisgICAgd2hpbGUgKCpkZWNpbWFscyA9PSAnMCcgJiYgbGVuZ3RoID4gMSkgeworICAgICAgICBs
ZW5ndGgtLTsKKyAgICAgICAgZGVjaW1hbHMrKzsKKyAgICAgICAgZGVjaW1hbFBvc2l0aW9uLS07
CisgICAgfQorCisgICAgLy8gVHJpbSB0cmFpbGluZyB6ZXJvcworICAgIHdoaWxlIChkZWNpbWFs
c1tsZW5ndGggLSAxXSA9PSAnMCcgJiYgbGVuZ3RoID4gMSkgeworICAgICAgICBsZW5ndGgtLTsK
KyAgICAgICAgZGVjaW1hbFBvc2l0aW9uLS07CisgICAgICAgIGV4cCsrOworICAgIH0KKworICAg
IC8vIFRyaW0gcmlnaHQtbW9zdCBkaWdpdHMKKyAgICBjb25zdCBpbnQga01heERlY2ltYWxEaWdp
dCA9IDc4MDsKKyAgICBpZiAoKGludClsZW5ndGggPiBrTWF4RGVjaW1hbERpZ2l0KSB7CisgICAg
ICAgIGV4cCArPSAoaW50KGxlbmd0aCkgLSBrTWF4RGVjaW1hbERpZ2l0KTsKKyAgICAgICAgbGVu
Z3RoID0ga01heERlY2ltYWxEaWdpdDsKKyAgICB9CisKKyAgICAvLyBJZiB0b28gc21hbGwsIHVu
ZGVyZmxvdyB0byB6ZXJvCisgICAgaWYgKGludChsZW5ndGgpICsgZXhwIDwgLTMyNCkKKyAgICAg
ICAgcmV0dXJuIDAuMDsKKworICAgIGlmIChTdHJ0b2REaXlGcChkZWNpbWFscywgbGVuZ3RoLCBk
ZWNpbWFsUG9zaXRpb24sIGV4cCwgJnJlc3VsdCkpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisK
KyAgICAvLyBVc2UgYXBwcm94aW1hdGlvbiBmcm9tIFN0cnRvZERpeUZwIGFuZCBtYWtlIGFkanVz
dG1lbnQgd2l0aCBCaWdJbnRlZ2VyIGNvbXBhcmlzb24KKyAgICByZXR1cm4gU3RydG9kQmlnSW50
ZWdlcihyZXN1bHQsIGRlY2ltYWxzLCBsZW5ndGgsIGRlY2ltYWxQb3NpdGlvbiwgZXhwKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKK1JBUElESlNPTl9OQU1FU1BBQ0VfRU5ECisKKyNl
bmRpZiAvLyBSQVBJREpTT05fU1RSVE9EXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9tc2ludHR5
cGVzL2ludHR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9tc2ludHR5cGVz
L2ludHR5cGVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9tc2ludHR5cGVz
L2ludHR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMTIgQEAKKy8vIElTTyBDOXgg
IGNvbXBsaWFudCBpbnR0eXBlcy5oIGZvciBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbworLy8gQmFz
ZWQgb24gSVNPL0lFQyA5ODk5OlRDMiBDb21taXR0ZWUgZHJhZnQgKE1heSA2LCAyMDA1KSBXRzE0
L04xMTI0IAorLy8gCisvLyAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTMgQWxleGFuZGVyIENoZW1l
cmlzCisvLyAKKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisvLyAKKy8vICAg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQgbm90aWNlLAorLy8gICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gCisvLyAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKy8vICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vIAorLy8gICAzLiBOZWl0aGVyIHRoZSBu
YW1lIG9mIHRoZSBwcm9kdWN0IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkK
Ky8vICAgICAgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tIHRoaXMgc29mdHdhcmUKKy8vICAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisvLyAKKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFV
VEhPUiBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKKy8vIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
CisvLyBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTworLy8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7CisvLyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgCisvLyBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUgorLy8gT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRgorLy8gQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLyAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworI2lm
bmRlZiBfTVNDX1ZFUiAvLyBbCisjZXJyb3IgIlVzZSB0aGlzIGhlYWRlciBvbmx5IHdpdGggTWlj
cm9zb2Z0IFZpc3VhbCBDKysgY29tcGlsZXJzISIKKyNlbmRpZiAvLyBfTVNDX1ZFUiBdCisKKyNp
Zm5kZWYgX01TQ19JTlRUWVBFU19IXyAvLyBbCisjZGVmaW5lIF9NU0NfSU5UVFlQRVNfSF8KKwor
I2lmIF9NU0NfVkVSID4gMTAwMAorI3ByYWdtYSBvbmNlCisjZW5kaWYKKworI2luY2x1ZGUgInN0
ZGludC5oIgorCisvLyBtaWxveWlwOiBWQyBzdXBwb3J0cyBpbnR0eXBlcy5oIHNpbmNlIFZDMjAx
MworI2lmIF9NU0NfVkVSID49IDE4MDAKKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorI2Vsc2UKKwor
Ly8gNy44IEZvcm1hdCBjb252ZXJzaW9uIG9mIGludGVnZXIgdHlwZXMKKwordHlwZWRlZiBzdHJ1
Y3QgeworICAgaW50bWF4X3QgcXVvdDsKKyAgIGludG1heF90IHJlbTsKK30gaW1heGRpdl90Owor
CisvLyA3LjguMSBNYWNyb3MgZm9yIGZvcm1hdCBzcGVjaWZpZXJzCisKKyNpZiAhZGVmaW5lZChf
X2NwbHVzcGx1cykgfHwgZGVmaW5lZChfX1NURENfRk9STUFUX01BQ1JPUykgLy8gWyAgIFNlZSBm
b290bm90ZSAxODUgYXQgcGFnZSAxOTgKKworLy8gVGhlIGZwcmludGYgbWFjcm9zIGZvciBzaWdu
ZWQgaW50ZWdlcnMgYXJlOgorI2RlZmluZSBQUklkOCAgICAgICAiZCIKKyNkZWZpbmUgUFJJaTgg
ICAgICAgImkiCisjZGVmaW5lIFBSSWRMRUFTVDggICJkIgorI2RlZmluZSBQUklpTEVBU1Q4ICAi
aSIKKyNkZWZpbmUgUFJJZEZBU1Q4ICAgImQiCisjZGVmaW5lIFBSSWlGQVNUOCAgICJpIgorCisj
ZGVmaW5lIFBSSWQxNiAgICAgICAiaGQiCisjZGVmaW5lIFBSSWkxNiAgICAgICAiaGkiCisjZGVm
aW5lIFBSSWRMRUFTVDE2ICAiaGQiCisjZGVmaW5lIFBSSWlMRUFTVDE2ICAiaGkiCisjZGVmaW5l
IFBSSWRGQVNUMTYgICAiaGQiCisjZGVmaW5lIFBSSWlGQVNUMTYgICAiaGkiCisKKyNkZWZpbmUg
UFJJZDMyICAgICAgICJJMzJkIgorI2RlZmluZSBQUklpMzIgICAgICAgIkkzMmkiCisjZGVmaW5l
IFBSSWRMRUFTVDMyICAiSTMyZCIKKyNkZWZpbmUgUFJJaUxFQVNUMzIgICJJMzJpIgorI2RlZmlu
ZSBQUklkRkFTVDMyICAgIkkzMmQiCisjZGVmaW5lIFBSSWlGQVNUMzIgICAiSTMyaSIKKworI2Rl
ZmluZSBQUklkNjQgICAgICAgIkk2NGQiCisjZGVmaW5lIFBSSWk2NCAgICAgICAiSTY0aSIKKyNk
ZWZpbmUgUFJJZExFQVNUNjQgICJJNjRkIgorI2RlZmluZSBQUklpTEVBU1Q2NCAgIkk2NGkiCisj
ZGVmaW5lIFBSSWRGQVNUNjQgICAiSTY0ZCIKKyNkZWZpbmUgUFJJaUZBU1Q2NCAgICJJNjRpIgor
CisjZGVmaW5lIFBSSWRNQVggICAgICJJNjRkIgorI2RlZmluZSBQUklpTUFYICAgICAiSTY0aSIK
KworI2RlZmluZSBQUklkUFRSICAgICAiSWQiCisjZGVmaW5lIFBSSWlQVFIgICAgICJJaSIKKwor
Ly8gVGhlIGZwcmludGYgbWFjcm9zIGZvciB1bnNpZ25lZCBpbnRlZ2VycyBhcmU6CisjZGVmaW5l
IFBSSW84ICAgICAgICJvIgorI2RlZmluZSBQUkl1OCAgICAgICAidSIKKyNkZWZpbmUgUFJJeDgg
ICAgICAgIngiCisjZGVmaW5lIFBSSVg4ICAgICAgICJYIgorI2RlZmluZSBQUklvTEVBU1Q4ICAi
byIKKyNkZWZpbmUgUFJJdUxFQVNUOCAgInUiCisjZGVmaW5lIFBSSXhMRUFTVDggICJ4IgorI2Rl
ZmluZSBQUklYTEVBU1Q4ICAiWCIKKyNkZWZpbmUgUFJJb0ZBU1Q4ICAgIm8iCisjZGVmaW5lIFBS
SXVGQVNUOCAgICJ1IgorI2RlZmluZSBQUkl4RkFTVDggICAieCIKKyNkZWZpbmUgUFJJWEZBU1Q4
ICAgIlgiCisKKyNkZWZpbmUgUFJJbzE2ICAgICAgICJobyIKKyNkZWZpbmUgUFJJdTE2ICAgICAg
ICJodSIKKyNkZWZpbmUgUFJJeDE2ICAgICAgICJoeCIKKyNkZWZpbmUgUFJJWDE2ICAgICAgICJo
WCIKKyNkZWZpbmUgUFJJb0xFQVNUMTYgICJobyIKKyNkZWZpbmUgUFJJdUxFQVNUMTYgICJodSIK
KyNkZWZpbmUgUFJJeExFQVNUMTYgICJoeCIKKyNkZWZpbmUgUFJJWExFQVNUMTYgICJoWCIKKyNk
ZWZpbmUgUFJJb0ZBU1QxNiAgICJobyIKKyNkZWZpbmUgUFJJdUZBU1QxNiAgICJodSIKKyNkZWZp
bmUgUFJJeEZBU1QxNiAgICJoeCIKKyNkZWZpbmUgUFJJWEZBU1QxNiAgICJoWCIKKworI2RlZmlu
ZSBQUklvMzIgICAgICAgIkkzMm8iCisjZGVmaW5lIFBSSXUzMiAgICAgICAiSTMydSIKKyNkZWZp
bmUgUFJJeDMyICAgICAgICJJMzJ4IgorI2RlZmluZSBQUklYMzIgICAgICAgIkkzMlgiCisjZGVm
aW5lIFBSSW9MRUFTVDMyICAiSTMybyIKKyNkZWZpbmUgUFJJdUxFQVNUMzIgICJJMzJ1IgorI2Rl
ZmluZSBQUkl4TEVBU1QzMiAgIkkzMngiCisjZGVmaW5lIFBSSVhMRUFTVDMyICAiSTMyWCIKKyNk
ZWZpbmUgUFJJb0ZBU1QzMiAgICJJMzJvIgorI2RlZmluZSBQUkl1RkFTVDMyICAgIkkzMnUiCisj
ZGVmaW5lIFBSSXhGQVNUMzIgICAiSTMyeCIKKyNkZWZpbmUgUFJJWEZBU1QzMiAgICJJMzJYIgor
CisjZGVmaW5lIFBSSW82NCAgICAgICAiSTY0byIKKyNkZWZpbmUgUFJJdTY0ICAgICAgICJJNjR1
IgorI2RlZmluZSBQUkl4NjQgICAgICAgIkk2NHgiCisjZGVmaW5lIFBSSVg2NCAgICAgICAiSTY0
WCIKKyNkZWZpbmUgUFJJb0xFQVNUNjQgICJJNjRvIgorI2RlZmluZSBQUkl1TEVBU1Q2NCAgIkk2
NHUiCisjZGVmaW5lIFBSSXhMRUFTVDY0ICAiSTY0eCIKKyNkZWZpbmUgUFJJWExFQVNUNjQgICJJ
NjRYIgorI2RlZmluZSBQUklvRkFTVDY0ICAgIkk2NG8iCisjZGVmaW5lIFBSSXVGQVNUNjQgICAi
STY0dSIKKyNkZWZpbmUgUFJJeEZBU1Q2NCAgICJJNjR4IgorI2RlZmluZSBQUklYRkFTVDY0ICAg
Ikk2NFgiCisKKyNkZWZpbmUgUFJJb01BWCAgICAgIkk2NG8iCisjZGVmaW5lIFBSSXVNQVggICAg
ICJJNjR1IgorI2RlZmluZSBQUkl4TUFYICAgICAiSTY0eCIKKyNkZWZpbmUgUFJJWE1BWCAgICAg
Ikk2NFgiCisKKyNkZWZpbmUgUFJJb1BUUiAgICAgIklvIgorI2RlZmluZSBQUkl1UFRSICAgICAi
SXUiCisjZGVmaW5lIFBSSXhQVFIgICAgICJJeCIKKyNkZWZpbmUgUFJJWFBUUiAgICAgIklYIgor
CisvLyBUaGUgZnNjYW5mIG1hY3JvcyBmb3Igc2lnbmVkIGludGVnZXJzIGFyZToKKyNkZWZpbmUg
U0NOZDggICAgICAgImQiCisjZGVmaW5lIFNDTmk4ICAgICAgICJpIgorI2RlZmluZSBTQ05kTEVB
U1Q4ICAiZCIKKyNkZWZpbmUgU0NOaUxFQVNUOCAgImkiCisjZGVmaW5lIFNDTmRGQVNUOCAgICJk
IgorI2RlZmluZSBTQ05pRkFTVDggICAiaSIKKworI2RlZmluZSBTQ05kMTYgICAgICAgImhkIgor
I2RlZmluZSBTQ05pMTYgICAgICAgImhpIgorI2RlZmluZSBTQ05kTEVBU1QxNiAgImhkIgorI2Rl
ZmluZSBTQ05pTEVBU1QxNiAgImhpIgorI2RlZmluZSBTQ05kRkFTVDE2ICAgImhkIgorI2RlZmlu
ZSBTQ05pRkFTVDE2ICAgImhpIgorCisjZGVmaW5lIFNDTmQzMiAgICAgICAibGQiCisjZGVmaW5l
IFNDTmkzMiAgICAgICAibGkiCisjZGVmaW5lIFNDTmRMRUFTVDMyICAibGQiCisjZGVmaW5lIFND
TmlMRUFTVDMyICAibGkiCisjZGVmaW5lIFNDTmRGQVNUMzIgICAibGQiCisjZGVmaW5lIFNDTmlG
QVNUMzIgICAibGkiCisKKyNkZWZpbmUgU0NOZDY0ICAgICAgICJJNjRkIgorI2RlZmluZSBTQ05p
NjQgICAgICAgIkk2NGkiCisjZGVmaW5lIFNDTmRMRUFTVDY0ICAiSTY0ZCIKKyNkZWZpbmUgU0NO
aUxFQVNUNjQgICJJNjRpIgorI2RlZmluZSBTQ05kRkFTVDY0ICAgIkk2NGQiCisjZGVmaW5lIFND
TmlGQVNUNjQgICAiSTY0aSIKKworI2RlZmluZSBTQ05kTUFYICAgICAiSTY0ZCIKKyNkZWZpbmUg
U0NOaU1BWCAgICAgIkk2NGkiCisKKyNpZmRlZiBfV0lONjQgLy8gWworIyAgZGVmaW5lIFNDTmRQ
VFIgICAgICJJNjRkIgorIyAgZGVmaW5lIFNDTmlQVFIgICAgICJJNjRpIgorI2Vsc2UgIC8vIF9X
SU42NCBdWworIyAgZGVmaW5lIFNDTmRQVFIgICAgICJsZCIKKyMgIGRlZmluZSBTQ05pUFRSICAg
ICAibGkiCisjZW5kaWYgIC8vIF9XSU42NCBdCisKKy8vIFRoZSBmc2NhbmYgbWFjcm9zIGZvciB1
bnNpZ25lZCBpbnRlZ2VycyBhcmU6CisjZGVmaW5lIFNDTm84ICAgICAgICJvIgorI2RlZmluZSBT
Q051OCAgICAgICAidSIKKyNkZWZpbmUgU0NOeDggICAgICAgIngiCisjZGVmaW5lIFNDTlg4ICAg
ICAgICJYIgorI2RlZmluZSBTQ05vTEVBU1Q4ICAibyIKKyNkZWZpbmUgU0NOdUxFQVNUOCAgInUi
CisjZGVmaW5lIFNDTnhMRUFTVDggICJ4IgorI2RlZmluZSBTQ05YTEVBU1Q4ICAiWCIKKyNkZWZp
bmUgU0NOb0ZBU1Q4ICAgIm8iCisjZGVmaW5lIFNDTnVGQVNUOCAgICJ1IgorI2RlZmluZSBTQ054
RkFTVDggICAieCIKKyNkZWZpbmUgU0NOWEZBU1Q4ICAgIlgiCisKKyNkZWZpbmUgU0NObzE2ICAg
ICAgICJobyIKKyNkZWZpbmUgU0NOdTE2ICAgICAgICJodSIKKyNkZWZpbmUgU0NOeDE2ICAgICAg
ICJoeCIKKyNkZWZpbmUgU0NOWDE2ICAgICAgICJoWCIKKyNkZWZpbmUgU0NOb0xFQVNUMTYgICJo
byIKKyNkZWZpbmUgU0NOdUxFQVNUMTYgICJodSIKKyNkZWZpbmUgU0NOeExFQVNUMTYgICJoeCIK
KyNkZWZpbmUgU0NOWExFQVNUMTYgICJoWCIKKyNkZWZpbmUgU0NOb0ZBU1QxNiAgICJobyIKKyNk
ZWZpbmUgU0NOdUZBU1QxNiAgICJodSIKKyNkZWZpbmUgU0NOeEZBU1QxNiAgICJoeCIKKyNkZWZp
bmUgU0NOWEZBU1QxNiAgICJoWCIKKworI2RlZmluZSBTQ05vMzIgICAgICAgImxvIgorI2RlZmlu
ZSBTQ051MzIgICAgICAgImx1IgorI2RlZmluZSBTQ054MzIgICAgICAgImx4IgorI2RlZmluZSBT
Q05YMzIgICAgICAgImxYIgorI2RlZmluZSBTQ05vTEVBU1QzMiAgImxvIgorI2RlZmluZSBTQ051
TEVBU1QzMiAgImx1IgorI2RlZmluZSBTQ054TEVBU1QzMiAgImx4IgorI2RlZmluZSBTQ05YTEVB
U1QzMiAgImxYIgorI2RlZmluZSBTQ05vRkFTVDMyICAgImxvIgorI2RlZmluZSBTQ051RkFTVDMy
ICAgImx1IgorI2RlZmluZSBTQ054RkFTVDMyICAgImx4IgorI2RlZmluZSBTQ05YRkFTVDMyICAg
ImxYIgorCisjZGVmaW5lIFNDTm82NCAgICAgICAiSTY0byIKKyNkZWZpbmUgU0NOdTY0ICAgICAg
ICJJNjR1IgorI2RlZmluZSBTQ054NjQgICAgICAgIkk2NHgiCisjZGVmaW5lIFNDTlg2NCAgICAg
ICAiSTY0WCIKKyNkZWZpbmUgU0NOb0xFQVNUNjQgICJJNjRvIgorI2RlZmluZSBTQ051TEVBU1Q2
NCAgIkk2NHUiCisjZGVmaW5lIFNDTnhMRUFTVDY0ICAiSTY0eCIKKyNkZWZpbmUgU0NOWExFQVNU
NjQgICJJNjRYIgorI2RlZmluZSBTQ05vRkFTVDY0ICAgIkk2NG8iCisjZGVmaW5lIFNDTnVGQVNU
NjQgICAiSTY0dSIKKyNkZWZpbmUgU0NOeEZBU1Q2NCAgICJJNjR4IgorI2RlZmluZSBTQ05YRkFT
VDY0ICAgIkk2NFgiCisKKyNkZWZpbmUgU0NOb01BWCAgICAgIkk2NG8iCisjZGVmaW5lIFNDTnVN
QVggICAgICJJNjR1IgorI2RlZmluZSBTQ054TUFYICAgICAiSTY0eCIKKyNkZWZpbmUgU0NOWE1B
WCAgICAgIkk2NFgiCisKKyNpZmRlZiBfV0lONjQgLy8gWworIyAgZGVmaW5lIFNDTm9QVFIgICAg
ICJJNjRvIgorIyAgZGVmaW5lIFNDTnVQVFIgICAgICJJNjR1IgorIyAgZGVmaW5lIFNDTnhQVFIg
ICAgICJJNjR4IgorIyAgZGVmaW5lIFNDTlhQVFIgICAgICJJNjRYIgorI2Vsc2UgIC8vIF9XSU42
NCBdWworIyAgZGVmaW5lIFNDTm9QVFIgICAgICJsbyIKKyMgIGRlZmluZSBTQ051UFRSICAgICAi
bHUiCisjICBkZWZpbmUgU0NOeFBUUiAgICAgImx4IgorIyAgZGVmaW5lIFNDTlhQVFIgICAgICJs
WCIKKyNlbmRpZiAgLy8gX1dJTjY0IF0KKworI2VuZGlmIC8vIF9fU1REQ19GT1JNQVRfTUFDUk9T
IF0KKworLy8gNy44LjIgRnVuY3Rpb25zIGZvciBncmVhdGVzdC13aWR0aCBpbnRlZ2VyIHR5cGVz
CisKKy8vIDcuOC4yLjEgVGhlIGltYXhhYnMgZnVuY3Rpb24KKyNkZWZpbmUgaW1heGFicyBfYWJz
NjQKKworLy8gNy44LjIuMiBUaGUgaW1heGRpdiBmdW5jdGlvbgorCisvLyBUaGlzIGlzIG1vZGlm
aWVkIHZlcnNpb24gb2YgZGl2KCkgZnVuY3Rpb24gZnJvbSBNaWNyb3NvZnQncyBkaXYuYyBmb3Vu
ZAorLy8gaW4gJU1TVkMuTkVUJVxjcnRcc3JjXGRpdi5jCisjaWZkZWYgU1RBVElDX0lNQVhESVYg
Ly8gWworc3RhdGljCisjZWxzZSAvLyBTVEFUSUNfSU1BWERJViBdWworX2lubGluZQorI2VuZGlm
IC8vIFNUQVRJQ19JTUFYRElWIF0KK2ltYXhkaXZfdCBfX2NkZWNsIGltYXhkaXYoaW50bWF4X3Qg
bnVtZXIsIGludG1heF90IGRlbm9tKQoreworICAgaW1heGRpdl90IHJlc3VsdDsKKworICAgcmVz
dWx0LnF1b3QgPSBudW1lciAvIGRlbm9tOworICAgcmVzdWx0LnJlbSA9IG51bWVyICUgZGVub207
CisKKyAgIGlmIChudW1lciA8IDAgJiYgcmVzdWx0LnJlbSA+IDApIHsKKyAgICAgIC8vIGRpZCBk
aXZpc2lvbiB3cm9uZzsgbXVzdCBmaXggdXAKKyAgICAgICsrcmVzdWx0LnF1b3Q7CisgICAgICBy
ZXN1bHQucmVtIC09IGRlbm9tOworICAgfQorCisgICByZXR1cm4gcmVzdWx0OworfQorCisvLyA3
LjguMi4zIFRoZSBzdHJ0b2ltYXggYW5kIHN0cnRvdW1heCBmdW5jdGlvbnMKKyNkZWZpbmUgc3Ry
dG9pbWF4IF9zdHJ0b2k2NAorI2RlZmluZSBzdHJ0b3VtYXggX3N0cnRvdWk2NAorCisvLyA3Ljgu
Mi40IFRoZSB3Y3N0b2ltYXggYW5kIHdjc3RvdW1heCBmdW5jdGlvbnMKKyNkZWZpbmUgd2NzdG9p
bWF4IF93Y3N0b2k2NAorI2RlZmluZSB3Y3N0b3VtYXggX3djc3RvdWk2NAorCisjZW5kaWYgLy8g
X01TQ19WRVIgPj0gMTgwMAorCisjZW5kaWYgLy8gX01TQ19JTlRUWVBFU19IXyBdCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2lu
Y2x1ZGUvcmFwaWRqc29uL21zaW50dHlwZXMvc3RkaW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRl
L3JhcGlkanNvbi9tc2ludHR5cGVzL3N0ZGludC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9y
YXBpZGpzb24vbXNpbnR0eXBlcy9zdGRpbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5
NiBAQAorLy8gSVNPIEM5eCAgY29tcGxpYW50IHN0ZGludC5oIGZvciBNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpbworLy8gQmFzZWQgb24gSVNPL0lFQyA5ODk5OlRDMiBDb21taXR0ZWUgZHJhZnQgKE1h
eSA2LCAyMDA1KSBXRzE0L04xMTI0IAorLy8gCisvLyAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTMg
QWxleGFuZGVyIENoZW1lcmlzCisvLyAKKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBt
ZXQ6CisvLyAKKy8vICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorLy8gICAgICB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gCisvLyAgIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisvLyAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vIAorLy8gICAz
LiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBwcm9kdWN0IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkKKy8vICAgICAgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKy8vICAgICAgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLyAKKy8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQK
Ky8vIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GCisvLyBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTworLy8gRVZFTlQgU0hBTEwgVEhF
IEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
Ly8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7CisvLyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgCisvLyBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUgorLy8gT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRgorLy8gQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLyAKKy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8KKworI2lmbmRlZiBfTVNDX1ZFUiAvLyBbCisjZXJyb3IgIlVzZSB0aGlzIGhlYWRl
ciBvbmx5IHdpdGggTWljcm9zb2Z0IFZpc3VhbCBDKysgY29tcGlsZXJzISIKKyNlbmRpZiAvLyBf
TVNDX1ZFUiBdCisKKyNpZm5kZWYgX01TQ19TVERJTlRfSF8gLy8gWworI2RlZmluZSBfTVNDX1NU
RElOVF9IXworCisjaWYgX01TQ19WRVIgPiAxMDAwCisjcHJhZ21hIG9uY2UKKyNlbmRpZgorCisv
LyBtaWxveWlwOiBPcmlnaW5hbGx5IFZpc3VhbCBTdHVkaW8gMjAxMCB1c2VzIGl0cyBvd24gc3Rk
aW50LmguIEhvd2V2ZXIgaXQgZ2VuZXJhdGVzIHdhcm5pbmcgd2l0aCBJTlQ2NF9DKCksIHNvIGNo
YW5nZSB0byB1c2UgdGhpcyBmaWxlIGZvciB2czIwMTAuCisjaWYgX01TQ19WRVIgPj0gMTYwMCAv
LyBbCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNpZiAhZGVmaW5lZChfX2NwbHVzcGx1cykgfHwg
ZGVmaW5lZChfX1NURENfQ09OU1RBTlRfTUFDUk9TKSAvLyBbICAgU2VlIGZvb3Rub3RlIDIyNCBh
dCBwYWdlIDI2MAorCisjdW5kZWYgSU5UOF9DCisjdW5kZWYgSU5UMTZfQworI3VuZGVmIElOVDMy
X0MKKyN1bmRlZiBJTlQ2NF9DCisjdW5kZWYgVUlOVDhfQworI3VuZGVmIFVJTlQxNl9DCisjdW5k
ZWYgVUlOVDMyX0MKKyN1bmRlZiBVSU5UNjRfQworCisvLyA3LjE4LjQuMSBNYWNyb3MgZm9yIG1p
bmltdW0td2lkdGggaW50ZWdlciBjb25zdGFudHMKKworI2RlZmluZSBJTlQ4X0ModmFsKSAgdmFs
IyNpOAorI2RlZmluZSBJTlQxNl9DKHZhbCkgdmFsIyNpMTYKKyNkZWZpbmUgSU5UMzJfQyh2YWwp
IHZhbCMjaTMyCisjZGVmaW5lIElOVDY0X0ModmFsKSB2YWwjI2k2NAorCisjZGVmaW5lIFVJTlQ4
X0ModmFsKSAgdmFsIyN1aTgKKyNkZWZpbmUgVUlOVDE2X0ModmFsKSB2YWwjI3VpMTYKKyNkZWZp
bmUgVUlOVDMyX0ModmFsKSB2YWwjI3VpMzIKKyNkZWZpbmUgVUlOVDY0X0ModmFsKSB2YWwjI3Vp
NjQKKworLy8gNy4xOC40LjIgTWFjcm9zIGZvciBncmVhdGVzdC13aWR0aCBpbnRlZ2VyIGNvbnN0
YW50cworLy8gVGhlc2UgI2lmbmRlZidzIGFyZSBuZWVkZWQgdG8gcHJldmVudCBjb2xsaXNpb25z
IHdpdGggPGJvb3N0L2NzdGRpbnQuaHBwPi4KKy8vIENoZWNrIG91dCBJc3N1ZSA5IGZvciB0aGUg
ZGV0YWlscy4KKyNpZm5kZWYgSU5UTUFYX0MgLy8gICBbCisjICBkZWZpbmUgSU5UTUFYX0MgICBJ
TlQ2NF9DCisjZW5kaWYgLy8gSU5UTUFYX0MgICAgXQorI2lmbmRlZiBVSU5UTUFYX0MgLy8gIFsK
KyMgIGRlZmluZSBVSU5UTUFYX0MgIFVJTlQ2NF9DCisjZW5kaWYgLy8gVUlOVE1BWF9DICAgXQor
CisjZW5kaWYgLy8gX19TVERDX0NPTlNUQU5UX01BQ1JPUyBdCisKKyNlbHNlIC8vIF0gX01TQ19W
RVIgPj0gMTcwMCBbCisKKyNpbmNsdWRlIDxsaW1pdHMuaD4KKworLy8gRm9yIFZpc3VhbCBTdHVk
aW8gNiBpbiBDKysgbW9kZSBhbmQgZm9yIG1hbnkgVmlzdWFsIFN0dWRpbyB2ZXJzaW9ucyB3aGVu
CisvLyBjb21waWxpbmcgZm9yIEFSTSB3ZSBzaG91bGQgd3JhcCA8d2NoYXIuaD4gaW5jbHVkZSB3
aXRoICdleHRlcm4gIkMrKyIge30nCisvLyBvciBjb21waWxlciBnaXZlIG1hbnkgZXJyb3JzIGxp
a2UgdGhpczoKKy8vICAgZXJyb3IgQzI3MzM6IHNlY29uZCBDIGxpbmthZ2Ugb2Ygb3ZlcmxvYWRl
ZCBmdW5jdGlvbiAnd21lbWNocicgbm90IGFsbG93ZWQKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0
ZXJuICJDIiB7CisjZW5kaWYKKyMgIGluY2x1ZGUgPHdjaGFyLmg+CisjaWZkZWYgX19jcGx1c3Bs
dXMKK30KKyNlbmRpZgorCisvLyBEZWZpbmUgX1c2NCBtYWNyb3MgdG8gbWFyayB0eXBlcyBjaGFu
Z2luZyB0aGVpciBzaXplLCBsaWtlIGludHB0cl90LgorI2lmbmRlZiBfVzY0CisjICBpZiAhZGVm
aW5lZChfX21pZGwpICYmIChkZWZpbmVkKF9YODZfKSB8fCBkZWZpbmVkKF9NX0lYODYpKSAmJiBf
TVNDX1ZFUiA+PSAxMzAwCisjICAgICBkZWZpbmUgX1c2NCBfX3c2NAorIyAgZWxzZQorIyAgICAg
ZGVmaW5lIF9XNjQKKyMgIGVuZGlmCisjZW5kaWYKKworCisvLyA3LjE4LjEgSW50ZWdlciB0eXBl
cworCisvLyA3LjE4LjEuMSBFeGFjdC13aWR0aCBpbnRlZ2VyIHR5cGVzCisKKy8vIFZpc3VhbCBT
dHVkaW8gNiBhbmQgRW1iZWRkZWQgVmlzdWFsIEMrKyA0IGRvZXNuJ3QKKy8vIHJlYWxpemUgdGhh
dCwgZS5nLiBjaGFyIGhhcyB0aGUgc2FtZSBzaXplIGFzIF9faW50OAorLy8gc28gd2UgZ2l2ZSB1
cCBvbiBfX2ludFggZm9yIHRoZW0uCisjaWYgKF9NU0NfVkVSIDwgMTMwMCkKKyAgIHR5cGVkZWYg
c2lnbmVkIGNoYXIgICAgICAgaW50OF90OworICAgdHlwZWRlZiBzaWduZWQgc2hvcnQgICAgICBp
bnQxNl90OworICAgdHlwZWRlZiBzaWduZWQgaW50ICAgICAgICBpbnQzMl90OworICAgdHlwZWRl
ZiB1bnNpZ25lZCBjaGFyICAgICB1aW50OF90OworICAgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCAg
ICB1aW50MTZfdDsKKyAgIHR5cGVkZWYgdW5zaWduZWQgaW50ICAgICAgdWludDMyX3Q7CisjZWxz
ZQorICAgdHlwZWRlZiBzaWduZWQgX19pbnQ4ICAgICBpbnQ4X3Q7CisgICB0eXBlZGVmIHNpZ25l
ZCBfX2ludDE2ICAgIGludDE2X3Q7CisgICB0eXBlZGVmIHNpZ25lZCBfX2ludDMyICAgIGludDMy
X3Q7CisgICB0eXBlZGVmIHVuc2lnbmVkIF9faW50OCAgIHVpbnQ4X3Q7CisgICB0eXBlZGVmIHVu
c2lnbmVkIF9faW50MTYgIHVpbnQxNl90OworICAgdHlwZWRlZiB1bnNpZ25lZCBfX2ludDMyICB1
aW50MzJfdDsKKyNlbmRpZgordHlwZWRlZiBzaWduZWQgX19pbnQ2NCAgICAgICBpbnQ2NF90Owor
dHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0ICAgICB1aW50NjRfdDsKKworCisvLyA3LjE4LjEuMiBN
aW5pbXVtLXdpZHRoIGludGVnZXIgdHlwZXMKK3R5cGVkZWYgaW50OF90ICAgIGludF9sZWFzdDhf
dDsKK3R5cGVkZWYgaW50MTZfdCAgIGludF9sZWFzdDE2X3Q7Cit0eXBlZGVmIGludDMyX3QgICBp
bnRfbGVhc3QzMl90OwordHlwZWRlZiBpbnQ2NF90ICAgaW50X2xlYXN0NjRfdDsKK3R5cGVkZWYg
dWludDhfdCAgIHVpbnRfbGVhc3Q4X3Q7Cit0eXBlZGVmIHVpbnQxNl90ICB1aW50X2xlYXN0MTZf
dDsKK3R5cGVkZWYgdWludDMyX3QgIHVpbnRfbGVhc3QzMl90OwordHlwZWRlZiB1aW50NjRfdCAg
dWludF9sZWFzdDY0X3Q7CisKKy8vIDcuMTguMS4zIEZhc3Rlc3QgbWluaW11bS13aWR0aCBpbnRl
Z2VyIHR5cGVzCit0eXBlZGVmIGludDhfdCAgICBpbnRfZmFzdDhfdDsKK3R5cGVkZWYgaW50MTZf
dCAgIGludF9mYXN0MTZfdDsKK3R5cGVkZWYgaW50MzJfdCAgIGludF9mYXN0MzJfdDsKK3R5cGVk
ZWYgaW50NjRfdCAgIGludF9mYXN0NjRfdDsKK3R5cGVkZWYgdWludDhfdCAgIHVpbnRfZmFzdDhf
dDsKK3R5cGVkZWYgdWludDE2X3QgIHVpbnRfZmFzdDE2X3Q7Cit0eXBlZGVmIHVpbnQzMl90ICB1
aW50X2Zhc3QzMl90OwordHlwZWRlZiB1aW50NjRfdCAgdWludF9mYXN0NjRfdDsKKworLy8gNy4x
OC4xLjQgSW50ZWdlciB0eXBlcyBjYXBhYmxlIG9mIGhvbGRpbmcgb2JqZWN0IHBvaW50ZXJzCisj
aWZkZWYgX1dJTjY0IC8vIFsKKyAgIHR5cGVkZWYgc2lnbmVkIF9faW50NjQgICAgaW50cHRyX3Q7
CisgICB0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgIHVpbnRwdHJfdDsKKyNlbHNlIC8vIF9XSU42
NCBdWworICAgdHlwZWRlZiBfVzY0IHNpZ25lZCBpbnQgICBpbnRwdHJfdDsKKyAgIHR5cGVkZWYg
X1c2NCB1bnNpZ25lZCBpbnQgdWludHB0cl90OworI2VuZGlmIC8vIF9XSU42NCBdCisKKy8vIDcu
MTguMS41IEdyZWF0ZXN0LXdpZHRoIGludGVnZXIgdHlwZXMKK3R5cGVkZWYgaW50NjRfdCAgIGlu
dG1heF90OwordHlwZWRlZiB1aW50NjRfdCAgdWludG1heF90OworCisKKy8vIDcuMTguMiBMaW1p
dHMgb2Ygc3BlY2lmaWVkLXdpZHRoIGludGVnZXIgdHlwZXMKKworI2lmICFkZWZpbmVkKF9fY3Bs
dXNwbHVzKSB8fCBkZWZpbmVkKF9fU1REQ19MSU1JVF9NQUNST1MpIC8vIFsgICBTZWUgZm9vdG5v
dGUgMjIwIGF0IHBhZ2UgMjU3IGFuZCBmb290bm90ZSAyMjEgYXQgcGFnZSAyNTkKKworLy8gNy4x
OC4yLjEgTGltaXRzIG9mIGV4YWN0LXdpZHRoIGludGVnZXIgdHlwZXMKKyNkZWZpbmUgSU5UOF9N
SU4gICAgICgoaW50OF90KV9JOF9NSU4pCisjZGVmaW5lIElOVDhfTUFYICAgICBfSThfTUFYCisj
ZGVmaW5lIElOVDE2X01JTiAgICAoKGludDE2X3QpX0kxNl9NSU4pCisjZGVmaW5lIElOVDE2X01B
WCAgICBfSTE2X01BWAorI2RlZmluZSBJTlQzMl9NSU4gICAgKChpbnQzMl90KV9JMzJfTUlOKQor
I2RlZmluZSBJTlQzMl9NQVggICAgX0kzMl9NQVgKKyNkZWZpbmUgSU5UNjRfTUlOICAgICgoaW50
NjRfdClfSTY0X01JTikKKyNkZWZpbmUgSU5UNjRfTUFYICAgIF9JNjRfTUFYCisjZGVmaW5lIFVJ
TlQ4X01BWCAgICBfVUk4X01BWAorI2RlZmluZSBVSU5UMTZfTUFYICAgX1VJMTZfTUFYCisjZGVm
aW5lIFVJTlQzMl9NQVggICBfVUkzMl9NQVgKKyNkZWZpbmUgVUlOVDY0X01BWCAgIF9VSTY0X01B
WAorCisvLyA3LjE4LjIuMiBMaW1pdHMgb2YgbWluaW11bS13aWR0aCBpbnRlZ2VyIHR5cGVzCisj
ZGVmaW5lIElOVF9MRUFTVDhfTUlOICAgIElOVDhfTUlOCisjZGVmaW5lIElOVF9MRUFTVDhfTUFY
ICAgIElOVDhfTUFYCisjZGVmaW5lIElOVF9MRUFTVDE2X01JTiAgIElOVDE2X01JTgorI2RlZmlu
ZSBJTlRfTEVBU1QxNl9NQVggICBJTlQxNl9NQVgKKyNkZWZpbmUgSU5UX0xFQVNUMzJfTUlOICAg
SU5UMzJfTUlOCisjZGVmaW5lIElOVF9MRUFTVDMyX01BWCAgIElOVDMyX01BWAorI2RlZmluZSBJ
TlRfTEVBU1Q2NF9NSU4gICBJTlQ2NF9NSU4KKyNkZWZpbmUgSU5UX0xFQVNUNjRfTUFYICAgSU5U
NjRfTUFYCisjZGVmaW5lIFVJTlRfTEVBU1Q4X01BWCAgIFVJTlQ4X01BWAorI2RlZmluZSBVSU5U
X0xFQVNUMTZfTUFYICBVSU5UMTZfTUFYCisjZGVmaW5lIFVJTlRfTEVBU1QzMl9NQVggIFVJTlQz
Ml9NQVgKKyNkZWZpbmUgVUlOVF9MRUFTVDY0X01BWCAgVUlOVDY0X01BWAorCisvLyA3LjE4LjIu
MyBMaW1pdHMgb2YgZmFzdGVzdCBtaW5pbXVtLXdpZHRoIGludGVnZXIgdHlwZXMKKyNkZWZpbmUg
SU5UX0ZBU1Q4X01JTiAgICBJTlQ4X01JTgorI2RlZmluZSBJTlRfRkFTVDhfTUFYICAgIElOVDhf
TUFYCisjZGVmaW5lIElOVF9GQVNUMTZfTUlOICAgSU5UMTZfTUlOCisjZGVmaW5lIElOVF9GQVNU
MTZfTUFYICAgSU5UMTZfTUFYCisjZGVmaW5lIElOVF9GQVNUMzJfTUlOICAgSU5UMzJfTUlOCisj
ZGVmaW5lIElOVF9GQVNUMzJfTUFYICAgSU5UMzJfTUFYCisjZGVmaW5lIElOVF9GQVNUNjRfTUlO
ICAgSU5UNjRfTUlOCisjZGVmaW5lIElOVF9GQVNUNjRfTUFYICAgSU5UNjRfTUFYCisjZGVmaW5l
IFVJTlRfRkFTVDhfTUFYICAgVUlOVDhfTUFYCisjZGVmaW5lIFVJTlRfRkFTVDE2X01BWCAgVUlO
VDE2X01BWAorI2RlZmluZSBVSU5UX0ZBU1QzMl9NQVggIFVJTlQzMl9NQVgKKyNkZWZpbmUgVUlO
VF9GQVNUNjRfTUFYICBVSU5UNjRfTUFYCisKKy8vIDcuMTguMi40IExpbWl0cyBvZiBpbnRlZ2Vy
IHR5cGVzIGNhcGFibGUgb2YgaG9sZGluZyBvYmplY3QgcG9pbnRlcnMKKyNpZmRlZiBfV0lONjQg
Ly8gWworIyAgZGVmaW5lIElOVFBUUl9NSU4gICBJTlQ2NF9NSU4KKyMgIGRlZmluZSBJTlRQVFJf
TUFYICAgSU5UNjRfTUFYCisjICBkZWZpbmUgVUlOVFBUUl9NQVggIFVJTlQ2NF9NQVgKKyNlbHNl
IC8vIF9XSU42NCBdWworIyAgZGVmaW5lIElOVFBUUl9NSU4gICBJTlQzMl9NSU4KKyMgIGRlZmlu
ZSBJTlRQVFJfTUFYICAgSU5UMzJfTUFYCisjICBkZWZpbmUgVUlOVFBUUl9NQVggIFVJTlQzMl9N
QVgKKyNlbmRpZiAvLyBfV0lONjQgXQorCisvLyA3LjE4LjIuNSBMaW1pdHMgb2YgZ3JlYXRlc3Qt
d2lkdGggaW50ZWdlciB0eXBlcworI2RlZmluZSBJTlRNQVhfTUlOICAgSU5UNjRfTUlOCisjZGVm
aW5lIElOVE1BWF9NQVggICBJTlQ2NF9NQVgKKyNkZWZpbmUgVUlOVE1BWF9NQVggIFVJTlQ2NF9N
QVgKKworLy8gNy4xOC4zIExpbWl0cyBvZiBvdGhlciBpbnRlZ2VyIHR5cGVzCisKKyNpZmRlZiBf
V0lONjQgLy8gWworIyAgZGVmaW5lIFBUUkRJRkZfTUlOICBfSTY0X01JTgorIyAgZGVmaW5lIFBU
UkRJRkZfTUFYICBfSTY0X01BWAorI2Vsc2UgIC8vIF9XSU42NCBdWworIyAgZGVmaW5lIFBUUkRJ
RkZfTUlOICBfSTMyX01JTgorIyAgZGVmaW5lIFBUUkRJRkZfTUFYICBfSTMyX01BWAorI2VuZGlm
ICAvLyBfV0lONjQgXQorCisjZGVmaW5lIFNJR19BVE9NSUNfTUlOICBJTlRfTUlOCisjZGVmaW5l
IFNJR19BVE9NSUNfTUFYICBJTlRfTUFYCisKKyNpZm5kZWYgU0laRV9NQVggLy8gWworIyAgaWZk
ZWYgX1dJTjY0IC8vIFsKKyMgICAgIGRlZmluZSBTSVpFX01BWCAgX1VJNjRfTUFYCisjICBlbHNl
IC8vIF9XSU42NCBdWworIyAgICAgZGVmaW5lIFNJWkVfTUFYICBfVUkzMl9NQVgKKyMgIGVuZGlm
IC8vIF9XSU42NCBdCisjZW5kaWYgLy8gU0laRV9NQVggXQorCisvLyBXQ0hBUl9NSU4gYW5kIFdD
SEFSX01BWCBhcmUgYWxzbyBkZWZpbmVkIGluIDx3Y2hhci5oPgorI2lmbmRlZiBXQ0hBUl9NSU4g
Ly8gWworIyAgZGVmaW5lIFdDSEFSX01JTiAgMAorI2VuZGlmICAvLyBXQ0hBUl9NSU4gXQorI2lm
bmRlZiBXQ0hBUl9NQVggLy8gWworIyAgZGVmaW5lIFdDSEFSX01BWCAgX1VJMTZfTUFYCisjZW5k
aWYgIC8vIFdDSEFSX01BWCBdCisKKyNkZWZpbmUgV0lOVF9NSU4gIDAKKyNkZWZpbmUgV0lOVF9N
QVggIF9VSTE2X01BWAorCisjZW5kaWYgLy8gX19TVERDX0xJTUlUX01BQ1JPUyBdCisKKworLy8g
Ny4xOC40IExpbWl0cyBvZiBvdGhlciBpbnRlZ2VyIHR5cGVzCisKKyNpZiAhZGVmaW5lZChfX2Nw
bHVzcGx1cykgfHwgZGVmaW5lZChfX1NURENfQ09OU1RBTlRfTUFDUk9TKSAvLyBbICAgU2VlIGZv
b3Rub3RlIDIyNCBhdCBwYWdlIDI2MAorCisvLyA3LjE4LjQuMSBNYWNyb3MgZm9yIG1pbmltdW0t
d2lkdGggaW50ZWdlciBjb25zdGFudHMKKworI2RlZmluZSBJTlQ4X0ModmFsKSAgdmFsIyNpOAor
I2RlZmluZSBJTlQxNl9DKHZhbCkgdmFsIyNpMTYKKyNkZWZpbmUgSU5UMzJfQyh2YWwpIHZhbCMj
aTMyCisjZGVmaW5lIElOVDY0X0ModmFsKSB2YWwjI2k2NAorCisjZGVmaW5lIFVJTlQ4X0ModmFs
KSAgdmFsIyN1aTgKKyNkZWZpbmUgVUlOVDE2X0ModmFsKSB2YWwjI3VpMTYKKyNkZWZpbmUgVUlO
VDMyX0ModmFsKSB2YWwjI3VpMzIKKyNkZWZpbmUgVUlOVDY0X0ModmFsKSB2YWwjI3VpNjQKKwor
Ly8gNy4xOC40LjIgTWFjcm9zIGZvciBncmVhdGVzdC13aWR0aCBpbnRlZ2VyIGNvbnN0YW50cwor
Ly8gVGhlc2UgI2lmbmRlZidzIGFyZSBuZWVkZWQgdG8gcHJldmVudCBjb2xsaXNpb25zIHdpdGgg
PGJvb3N0L2NzdGRpbnQuaHBwPi4KKy8vIENoZWNrIG91dCBJc3N1ZSA5IGZvciB0aGUgZGV0YWls
cy4KKyNpZm5kZWYgSU5UTUFYX0MgLy8gICBbCisjICBkZWZpbmUgSU5UTUFYX0MgICBJTlQ2NF9D
CisjZW5kaWYgLy8gSU5UTUFYX0MgICAgXQorI2lmbmRlZiBVSU5UTUFYX0MgLy8gIFsKKyMgIGRl
ZmluZSBVSU5UTUFYX0MgIFVJTlQ2NF9DCisjZW5kaWYgLy8gVUlOVE1BWF9DICAgXQorCisjZW5k
aWYgLy8gX19TVERDX0NPTlNUQU5UX01BQ1JPUyBdCisKKyNlbmRpZiAvLyBfTVNDX1ZFUiA+PSAx
NjAwIF0KKworI2VuZGlmIC8vIF9NU0NfU1RESU5UX0hfIF0KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9saWJYTlZDdHJsL0JVSUxELmduCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9saWJYTlZDdHJsL0JV
SUxELmduCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGly
ZF9wYXJ0eS9saWJYTlZDdHJsL0JVSUxELmduCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjgg
QEAKKyMgQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKworIyBUaGlzIHdhcm5pbmcgZGlzYWJsZSBtdXN0IGJlIGFwcGVuZGVkIHRvIHRoZSBj
b21tYW5kIGxpbmUgYWZ0ZXIgdGhlIGdlbmVyYWwKKyMgd2FybmluZ3Mgc2V0dXAsIHNvIG11c3Qg
YmUgaW4gYSBjb25maWcuCitjb25maWcoImxpYlhOVkN0cmxfY29uZmlnIikgeworICAjIFRoaXMg
d2lsbCBidWlsZCB1bmRlciBtb3N0IGNvbmZpZ3VyYXRpb25zIHdpdGggdGhpcyB3YXJuaW5nIGVu
YWJsZWQsIGJ1dAorICAjIHNvbWUgb2xkZXIgc3lzdGVtIGhlYWRlcnMgYXJlIG1pc3NpbmcgYSAi
Y29uc3QiIG9uIHRoZSB0aGlyZCBwYXJhbWV0ZXIgb2YKKyAgIyBYZXh0QWRkRGlzcGxheSB3aGlj
aCB3aWxsIGNhdXNlIGEgZmFpbHVyZS4KKyAgY2ZsYWdzID0gWworICAgICItV25vLWluY29tcGF0
aWJsZS1wb2ludGVyLXR5cGVzLWRpc2NhcmRzLXF1YWxpZmllcnMiLAorICBdCit9CisKK3NvdXJj
ZV9zZXQoImxpYlhOVkN0cmwiKSB7CisgIHNvdXJjZXMgPSBbCisgICAgIk5WQ3RybC5jIiwKKyAg
ICAiTlZDdHJsLmgiLAorICAgICJOVkN0cmxMaWIuaCIsCisgICAgIm52X2NvbnRyb2wuaCIsCisg
IF0KKworICBjb25maWdzICs9IFsKKyAgICAiOmxpYlhOVkN0cmxfY29uZmlnIiwKKyAgICAiLy9i
dWlsZC9jb25maWcvbGludXg6eDExIiwKKyAgXQorfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0cmwvTElDRU5TRQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbGliWE5WQ3RybC9MSUNFTlNF
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0
eS9saWJYTlZDdHJsL0xJQ0VOU0UJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMiBAQAorLyoK
KyAqIENvcHlyaWdodCAoYykgMjAwOCBOVklESUEsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlz
c2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0
YWluaW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVu
dGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKKyAqIGluIHRoZSBTb2Z0d2Fy
ZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSBy
aWdodHMKKyAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0
ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFu
ZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVk
IHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBU
aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5j
bHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBj
b3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisg
KiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBB
TlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRF
RCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hB
TEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5Z
IENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU
SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorICogT1VU
IE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhF
UiBERUFMSU5HUyBJTiBUSEUKKyAqIFNPRlRXQVJFLgorICovClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2xp
YlhOVkN0cmwvTlZDdHJsLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0cmwvTlZDdHJsLmMJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0cmwvTlZDdHJsLmMJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjQwIEBACisvKgorICogQ29weXJpZ2h0IChjKSAy
MDA4IE5WSURJQSwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu
dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgKiBv
ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAi
U29mdHdhcmUiKSwgdG8gZGVhbAorICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp
b24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cworICogdG8gdXNlLCBj
b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQv
b3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z
IHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg
dG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQg
bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAq
IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlh
bCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9S
CisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMg
T1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1Ig
T1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP
UlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElP
TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQor
ICogU09GVFdBUkUuCisgKi8KKworLyoKKyAqIE1ha2Ugc3VyZSB0aGF0IFhUSFJFQURTIGlzIGRl
ZmluZWQsIHNvIHRoYXQgdGhlCisgKiBMb2NrRGlzcGxheS9VbmxvY2tEaXNwbGF5IG1hY3JvcyBh
cmUgZXhwYW5kZWQgcHJvcGVybHkgYW5kIHRoZQorICogbGliWE5WQ3RybCBsaWJyYXJ5IHByb3Bl
cmx5IHByb3RlY3RzIHRoZSBEaXNwbGF5IGNvbm5lY3Rpb24uCisgKi8KKworI2lmICFkZWZpbmVk
KFhUSFJFQURTKQorI2RlZmluZSBYVEhSRUFEUworI2VuZGlmIC8qIFhUSFJFQURTICovCisKKyNk
ZWZpbmUgTkVFRF9FVkVOVFMKKyNkZWZpbmUgTkVFRF9SRVBMSUVTCisjaW5jbHVkZSA8c3RkaW50
Lmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8WDExL1hsaWJpbnQuaD4KKyNpbmNs
dWRlIDxYMTEvWHV0aWwuaD4KKyNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YZXh0Lmg+CisjaW5j
bHVkZSA8WDExL2V4dGVuc2lvbnMvZXh0dXRpbC5oPgorI2luY2x1ZGUgIk5WQ3RybExpYi5oIgor
I2luY2x1ZGUgIm52X2NvbnRyb2wuaCIKKworI2RlZmluZSBOVkNUUkxfRVhUX0VYSVNUUyAgICAg
ICAgICAgICAgMQorI2RlZmluZSBOVkNUUkxfRVhUX05FRURfVEFSR0VUX1NXQVAgICAgMgorI2Rl
ZmluZSBOVkNUUkxfRVhUXzY0X0JJVF9BVFRSSUJVVEVTICAgNAorI2RlZmluZSBOVkNUUkxfRVhU
X05FRURfQ0hFQ0sgICAgICAgICAgKDEgPDwgKHNpemVvZihYUG9pbnRlcikgLSAxKSkKKworc3Rh
dGljIFhFeHRlbnNpb25JbmZvIF9udmN0cmxfZXh0X2luZm9fZGF0YTsKK3N0YXRpYyBYRXh0ZW5z
aW9uSW5mbyAqbnZjdHJsX2V4dF9pbmZvID0gJl9udmN0cmxfZXh0X2luZm9fZGF0YTsKK3N0YXRp
YyBjb25zdCBjaGFyICpudmN0cmxfZXh0ZW5zaW9uX25hbWUgPSBOVl9DT05UUk9MX05BTUU7CisK
KyNkZWZpbmUgWE5WQ1RSTENoZWNrRXh0ZW5zaW9uKGRweSxpLHZhbCkgXAorICBYZXh0Q2hlY2tF
eHRlbnNpb24gKGRweSwgaSwgbnZjdHJsX2V4dGVuc2lvbl9uYW1lLCB2YWwpCisjZGVmaW5lIFhO
VkNUUkxTaW1wbGVDaGVja0V4dGVuc2lvbihkcHksaSkgXAorICBYZXh0U2ltcGxlQ2hlY2tFeHRl
bnNpb24gKGRweSwgaSwgbnZjdHJsX2V4dGVuc2lvbl9uYW1lKQorCitzdGF0aWMgaW50IGNsb3Nl
X2Rpc3BsYXkoKTsKK3N0YXRpYyB1aW50cHRyX3QgdmVyc2lvbl9mbGFncyhEaXNwbGF5ICpkcHks
IFhFeHREaXNwbGF5SW5mbyAqaW5mbyk7CitzdGF0aWMgQm9vbCB3aXJlX3RvX2V2ZW50KCk7Citz
dGF0aWMgLyogY29uc3QgKi8gWEV4dGVuc2lvbkhvb2tzIG52Y3RybF9leHRlbnNpb25faG9va3Mg
PSB7CisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY3JlYXRlX2dj
ICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY29weV9nYyAq
LworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZsdXNoX2djICov
CisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZnJlZV9nYyAqLwor
ICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNyZWF0ZV9mb250ICov
CisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZnJlZV9mb250ICov
CisgICAgY2xvc2VfZGlzcGxheSwgICAgICAgICAgICAgICAgICAgICAgLyogY2xvc2VfZGlzcGxh
eSAqLworICAgIHdpcmVfdG9fZXZlbnQsICAgICAgICAgICAgICAgICAgICAgIC8qIHdpcmVfdG9f
ZXZlbnQgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldmVu
dF90b193aXJlICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
ZXJyb3IgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlcnJv
cl9zdHJpbmcgKi8KK307CisKK3N0YXRpYyBYRVhUX0dFTkVSQVRFX0ZJTkRfRElTUExBWSAoZmlu
ZF9kaXNwbGF5LCBudmN0cmxfZXh0X2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG52Y3RybF9leHRlbnNpb25fbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJm52Y3RybF9leHRlbnNpb25faG9va3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5WX0NPTlRST0xfRVZFTlRTLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoWFBvaW50ZXIpTlZDVFJMX0VYVF9ORUVEX0NIRUNLKQorCitzdGF0aWMgWEVY
VF9HRU5FUkFURV9DTE9TRV9ESVNQTEFZIChjbG9zZV9kaXNwbGF5LCBudmN0cmxfZXh0X2luZm8p
CisKKy8qCisgKiBOVi1DT05UUk9MIHZlcnNpb25zIDEuOCBhbmQgMS45IHBhY2sgdGhlIHRhcmdl
dF90eXBlIGFuZCB0YXJnZXRfaWQKKyAqIGZpZWxkcyBpbiByZXZlcnNlZCBvcmRlci4gIEluIG9y
ZGVyIHRvIHRhbGsgdG8gb25lIG9mIHRoZXNlIHNlcnZlcnMsCisgKiB3ZSBuZWVkIHRvIHN3YXAg
dGhlc2UgZmllbGRzLgorICovCisKK3N0YXRpYyB2b2lkIFhOVkNUUkxDaGVja1RhcmdldERhdGEo
RGlzcGxheSAqZHB5LCBYRXh0RGlzcGxheUluZm8gKmluZm8sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCAqdGFyZ2V0X3R5cGUsIGludCAqdGFyZ2V0X2lkKQoreworICAg
IHVpbnRwdHJfdCBmbGFncyA9IHZlcnNpb25fZmxhZ3MoZHB5LCBpbmZvKTsKKworICAgIC8qIFdl
IG5lZWQgdG8gc3dhcCB0aGUgdGFyZ2V0X3R5cGUgYW5kIHRhcmdldF9pZCAqLworICAgIGlmIChm
bGFncyAmIE5WQ1RSTF9FWFRfTkVFRF9UQVJHRVRfU1dBUCkgeworICAgICAgICBpbnQgdG1wOwor
ICAgICAgICB0bXAgPSAqdGFyZ2V0X3R5cGU7CisgICAgICAgICp0YXJnZXRfdHlwZSA9ICp0YXJn
ZXRfaWQ7CisgICAgICAgICp0YXJnZXRfaWQgPSB0bXA7CisgICAgfQorfQorCisKK0Jvb2wgWE5W
Q1RSTFF1ZXJ5RXh0ZW5zaW9uICgKKyAgICBEaXNwbGF5ICpkcHksCisgICAgaW50ICpldmVudF9i
YXNlcCwKKyAgICBpbnQgKmVycm9yX2Jhc2VwCispeworICAgIFhFeHREaXNwbGF5SW5mbyAqaW5m
byA9IGZpbmRfZGlzcGxheSAoZHB5KTsKKworICAgIGlmIChYZXh0SGFzRXh0ZW5zaW9uKGluZm8p
KSB7CisgICAgICAgIGlmIChldmVudF9iYXNlcCkgKmV2ZW50X2Jhc2VwID0gaW5mby0+Y29kZXMt
PmZpcnN0X2V2ZW50OworICAgICAgICBpZiAoZXJyb3JfYmFzZXApICplcnJvcl9iYXNlcCA9IGlu
Zm8tPmNvZGVzLT5maXJzdF9lcnJvcjsKKyAgICAgICAgcmV0dXJuIFRydWU7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgcmV0dXJuIEZhbHNlOworICAgIH0KK30KKworLyoKKyAqIFJldHJpZXZlIGFu
eSBjYWNoZWQgZmxhZ3MgdGhhdCBkZXBlbmQgb24gdGhlIHZlcnNpb24gb2YgdGhlIE5WLUNPTlRS
T0wKKyAqIGV4dGVuc2lvbi4KKyAqLworCitzdGF0aWMgdWludHB0cl90IHZlcnNpb25fZmxhZ3Mo
RGlzcGxheSAqZHB5LCBYRXh0RGlzcGxheUluZm8gKmluZm8pCit7CisgICAgdWludHB0cl90IGRh
dGEgPSAodWludHB0cl90KWluZm8tPmRhdGE7CisKKyAgICAvKiBJZiBuZWNlc3NhcnksIGRldGVy
bWluZSB0aGUgTlYtQ09OVFJPTCB2ZXJzaW9uICovCisgICAgaWYgKGRhdGEgJiBOVkNUUkxfRVhU
X05FRURfQ0hFQ0spIHsKKyAgICAgICAgaW50IG1ham9yLCBtaW5vcjsKKyAgICAgICAgZGF0YSA9
IDA7CisgICAgICAgIGlmIChYTlZDVFJMUXVlcnlWZXJzaW9uKGRweSwgJm1ham9yLCAmbWlub3Ip
KSB7CisgICAgICAgICAgICBkYXRhIHw9IE5WQ1RSTF9FWFRfRVhJU1RTOworICAgICAgICAgICAg
aWYgKG1ham9yID09IDEgJiYgKG1pbm9yID09IDggfHwgbWlub3IgPT0gOSkpIHsKKyAgICAgICAg
ICAgICAgICBkYXRhIHw9IE5WQ1RSTF9FWFRfTkVFRF9UQVJHRVRfU1dBUDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmICgobWFqb3IgPiAxKSB8fCAoKG1ham9yID09IDEpICYmIChtaW5v
ciA+IDIwKSkpIHsKKyAgICAgICAgICAgICAgICBkYXRhIHw9IE5WQ1RSTF9FWFRfNjRfQklUX0FU
VFJJQlVURVM7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpbmZvLT5kYXRh
ID0gKFhQb2ludGVyKWRhdGE7CisgICAgfQorCisgICAgcmV0dXJuIGRhdGE7Cit9CisKK0Jvb2wg
WE5WQ1RSTFF1ZXJ5VmVyc2lvbiAoCisgICAgRGlzcGxheSAqZHB5LAorICAgIGludCAqbWFqb3Is
CisgICAgaW50ICptaW5vcgorKXsKKyAgICBYRXh0RGlzcGxheUluZm8gKmluZm8gPSBmaW5kX2Rp
c3BsYXkgKGRweSk7CisgICAgeG52Q3RybFF1ZXJ5RXh0ZW5zaW9uUmVwbHkgcmVwOworICAgIHhu
dkN0cmxRdWVyeUV4dGVuc2lvblJlcSAgICpyZXE7CisKKyAgICBpZighWGV4dEhhc0V4dGVuc2lv
bihpbmZvKSkKKyAgICAgICAgcmV0dXJuIEZhbHNlOworCisgICAgWE5WQ1RSTENoZWNrRXh0ZW5z
aW9uIChkcHksIGluZm8sIEZhbHNlKTsKKworICAgIExvY2tEaXNwbGF5IChkcHkpOworICAgIEdl
dFJlcSAobnZDdHJsUXVlcnlFeHRlbnNpb24sIHJlcSk7CisgICAgcmVxLT5yZXFUeXBlID0gaW5m
by0+Y29kZXMtPm1ham9yX29wY29kZTsKKyAgICByZXEtPm52UmVxVHlwZSA9IFhfbnZDdHJsUXVl
cnlFeHRlbnNpb247CisgICAgaWYgKCFfWFJlcGx5IChkcHksICh4UmVwbHkgKikgJnJlcCwgMCwg
eFRydWUpKSB7CisgICAgICAgIFVubG9ja0Rpc3BsYXkgKGRweSk7CisgICAgICAgIFN5bmNIYW5k
bGUgKCk7CisgICAgICAgIHJldHVybiBGYWxzZTsKKyAgICB9CisgICAgaWYgKG1ham9yKSAqbWFq
b3IgPSByZXAubWFqb3I7CisgICAgaWYgKG1pbm9yKSAqbWlub3IgPSByZXAubWlub3I7CisgICAg
VW5sb2NrRGlzcGxheSAoZHB5KTsKKyAgICBTeW5jSGFuZGxlICgpOworICAgIHJldHVybiBUcnVl
OworfQorCisKK0Jvb2wgWE5WQ1RSTElzTnZTY3JlZW4gKAorICAgIERpc3BsYXkgKmRweSwKKyAg
ICBpbnQgc2NyZWVuCispeworICAgIFhFeHREaXNwbGF5SW5mbyAqaW5mbyA9IGZpbmRfZGlzcGxh
eSAoZHB5KTsKKyAgICB4bnZDdHJsSXNOdlJlcGx5IHJlcDsKKyAgICB4bnZDdHJsSXNOdlJlcSAg
ICpyZXE7CisgICAgQm9vbCBpc252OworCisgICAgaWYoIVhleHRIYXNFeHRlbnNpb24oaW5mbykp
CisgICAgICAgIHJldHVybiBGYWxzZTsKKworICAgIFhOVkNUUkxDaGVja0V4dGVuc2lvbiAoZHB5
LCBpbmZvLCBGYWxzZSk7CisKKyAgICBMb2NrRGlzcGxheSAoZHB5KTsKKyAgICBHZXRSZXEgKG52
Q3RybElzTnYsIHJlcSk7CisgICAgcmVxLT5yZXFUeXBlID0gaW5mby0+Y29kZXMtPm1ham9yX29w
Y29kZTsKKyAgICByZXEtPm52UmVxVHlwZSA9IFhfbnZDdHJsSXNOdjsKKyAgICByZXEtPnNjcmVl
biA9IHNjcmVlbjsKKyAgICBpZiAoIV9YUmVwbHkgKGRweSwgKHhSZXBseSAqKSAmcmVwLCAwLCB4
VHJ1ZSkpIHsKKyAgICAgICAgVW5sb2NrRGlzcGxheSAoZHB5KTsKKyAgICAgICAgU3luY0hhbmRs
ZSAoKTsKKyAgICAgICAgcmV0dXJuIEZhbHNlOworICAgIH0KKyAgICBpc252ID0gcmVwLmlzbnY7
CisgICAgVW5sb2NrRGlzcGxheSAoZHB5KTsKKyAgICBTeW5jSGFuZGxlICgpOworICAgIHJldHVy
biBpc252OworfQorCisKK0Jvb2wgWE5WQ1RSTFF1ZXJ5VGFyZ2V0Q291bnQgKAorICAgIERpc3Bs
YXkgKmRweSwKKyAgICBpbnQgdGFyZ2V0X3R5cGUsCisgICAgaW50ICp2YWx1ZQorKXsKKyAgICBY
RXh0RGlzcGxheUluZm8gKmluZm8gPSBmaW5kX2Rpc3BsYXkgKGRweSk7CisgICAgeG52Q3RybFF1
ZXJ5VGFyZ2V0Q291bnRSZXBseSAgcmVwOworICAgIHhudkN0cmxRdWVyeVRhcmdldENvdW50UmVx
ICAgKnJlcTsKKworICAgIGlmKCFYZXh0SGFzRXh0ZW5zaW9uKGluZm8pKQorICAgICAgICByZXR1
cm4gRmFsc2U7CisKKyAgICBYTlZDVFJMQ2hlY2tFeHRlbnNpb24gKGRweSwgaW5mbywgRmFsc2Up
OworCisgICAgTG9ja0Rpc3BsYXkgKGRweSk7CisgICAgR2V0UmVxIChudkN0cmxRdWVyeVRhcmdl
dENvdW50LCByZXEpOworICAgIHJlcS0+cmVxVHlwZSA9IGluZm8tPmNvZGVzLT5tYWpvcl9vcGNv
ZGU7CisgICAgcmVxLT5udlJlcVR5cGUgPSBYX252Q3RybFF1ZXJ5VGFyZ2V0Q291bnQ7CisgICAg
cmVxLT50YXJnZXRfdHlwZSA9IHRhcmdldF90eXBlOworICAgIGlmICghX1hSZXBseSAoZHB5LCAo
eFJlcGx5ICopICZyZXAsIDAsIHhUcnVlKSkgeworICAgICAgICBVbmxvY2tEaXNwbGF5IChkcHkp
OworICAgICAgICBTeW5jSGFuZGxlICgpOworICAgICAgICByZXR1cm4gRmFsc2U7CisgICAgfQor
ICAgIGlmICh2YWx1ZSkgKnZhbHVlID0gcmVwLmNvdW50OworICAgIFVubG9ja0Rpc3BsYXkgKGRw
eSk7CisgICAgU3luY0hhbmRsZSAoKTsKKyAgICByZXR1cm4gVHJ1ZTsKK30KKworCit2b2lkIFhO
VkNUUkxTZXRUYXJnZXRBdHRyaWJ1dGUgKAorICAgIERpc3BsYXkgKmRweSwKKyAgICBpbnQgdGFy
Z2V0X3R5cGUsCisgICAgaW50IHRhcmdldF9pZCwKKyAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9t
YXNrLAorICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCisgICAgaW50IHZhbHVlCispeworICAg
IFhFeHREaXNwbGF5SW5mbyAqaW5mbyA9IGZpbmRfZGlzcGxheSAoZHB5KTsKKyAgICB4bnZDdHJs
U2V0QXR0cmlidXRlUmVxICpyZXE7CisKKyAgICBYTlZDVFJMU2ltcGxlQ2hlY2tFeHRlbnNpb24g
KGRweSwgaW5mbyk7CisgICAgWE5WQ1RSTENoZWNrVGFyZ2V0RGF0YShkcHksIGluZm8sICZ0YXJn
ZXRfdHlwZSwgJnRhcmdldF9pZCk7CisKKyAgICBMb2NrRGlzcGxheSAoZHB5KTsKKyAgICBHZXRS
ZXEgKG52Q3RybFNldEF0dHJpYnV0ZSwgcmVxKTsKKyAgICByZXEtPnJlcVR5cGUgPSBpbmZvLT5j
b2Rlcy0+bWFqb3Jfb3Bjb2RlOworICAgIHJlcS0+bnZSZXFUeXBlID0gWF9udkN0cmxTZXRBdHRy
aWJ1dGU7CisgICAgcmVxLT50YXJnZXRfdHlwZSA9IHRhcmdldF90eXBlOworICAgIHJlcS0+dGFy
Z2V0X2lkID0gdGFyZ2V0X2lkOworICAgIHJlcS0+ZGlzcGxheV9tYXNrID0gZGlzcGxheV9tYXNr
OworICAgIHJlcS0+YXR0cmlidXRlID0gYXR0cmlidXRlOworICAgIHJlcS0+dmFsdWUgPSB2YWx1
ZTsKKyAgICBVbmxvY2tEaXNwbGF5IChkcHkpOworICAgIFN5bmNIYW5kbGUgKCk7Cit9CisKK3Zv
aWQgWE5WQ1RSTFNldEF0dHJpYnV0ZSAoCisgICAgRGlzcGxheSAqZHB5LAorICAgIGludCBzY3Jl
ZW4sCisgICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywKKyAgICB1bnNpZ25lZCBpbnQgYXR0
cmlidXRlLAorICAgIGludCB2YWx1ZQorKXsKKyAgICBYTlZDVFJMU2V0VGFyZ2V0QXR0cmlidXRl
IChkcHksIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4sIHNjcmVlbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkaXNwbGF5X21hc2ssIGF0dHJpYnV0ZSwgdmFsdWUpOworfQor
CisKK0Jvb2wgWE5WQ1RSTFNldFRhcmdldEF0dHJpYnV0ZUFuZEdldFN0YXR1cyAoCisgICAgRGlz
cGxheSAqZHB5LAorICAgIGludCB0YXJnZXRfdHlwZSwKKyAgICBpbnQgdGFyZ2V0X2lkLAorICAg
IHVuc2lnbmVkIGludCBkaXNwbGF5X21hc2ssCisgICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZSwK
KyAgICBpbnQgdmFsdWUKKyl7CisgICAgWEV4dERpc3BsYXlJbmZvICppbmZvID0gZmluZF9kaXNw
bGF5IChkcHkpOworICAgIHhudkN0cmxTZXRBdHRyaWJ1dGVBbmRHZXRTdGF0dXNSZXEgKnJlcTsK
KyAgICB4bnZDdHJsU2V0QXR0cmlidXRlQW5kR2V0U3RhdHVzUmVwbHkgcmVwOworICAgIEJvb2wg
c3VjY2VzczsKKworICAgIGlmKCFYZXh0SGFzRXh0ZW5zaW9uKGluZm8pKQorICAgICAgICByZXR1
cm4gRmFsc2U7CisKKyAgICBYTlZDVFJMQ2hlY2tFeHRlbnNpb24gKGRweSwgaW5mbywgRmFsc2Up
OworCisgICAgTG9ja0Rpc3BsYXkgKGRweSk7CisgICAgR2V0UmVxIChudkN0cmxTZXRBdHRyaWJ1
dGVBbmRHZXRTdGF0dXMsIHJlcSk7CisgICAgcmVxLT5yZXFUeXBlID0gaW5mby0+Y29kZXMtPm1h
am9yX29wY29kZTsKKyAgICByZXEtPm52UmVxVHlwZSA9IFhfbnZDdHJsU2V0QXR0cmlidXRlQW5k
R2V0U3RhdHVzOworICAgIHJlcS0+dGFyZ2V0X3R5cGUgPSB0YXJnZXRfdHlwZTsKKyAgICByZXEt
PnRhcmdldF9pZCA9IHRhcmdldF9pZDsKKyAgICByZXEtPmRpc3BsYXlfbWFzayA9IGRpc3BsYXlf
bWFzazsKKyAgICByZXEtPmF0dHJpYnV0ZSA9IGF0dHJpYnV0ZTsKKyAgICByZXEtPnZhbHVlID0g
dmFsdWU7CisgICAgaWYgKCFfWFJlcGx5IChkcHksICh4UmVwbHkgKikgJnJlcCwgMCwgRmFsc2Up
KSB7CisgICAgICAgIFVubG9ja0Rpc3BsYXkgKGRweSk7CisgICAgICAgIFN5bmNIYW5kbGUgKCk7
CisgICAgICAgIHJldHVybiBGYWxzZTsKKyAgICB9CisgICAgVW5sb2NrRGlzcGxheSAoZHB5KTsK
KyAgICBTeW5jSGFuZGxlICgpOworICAgIAorICAgIHN1Y2Nlc3MgPSByZXAuZmxhZ3M7CisgICAg
cmV0dXJuIHN1Y2Nlc3M7Cit9CisKK0Jvb2wgWE5WQ1RSTFNldEF0dHJpYnV0ZUFuZEdldFN0YXR1
cyAoCisgICAgRGlzcGxheSAqZHB5LAorICAgIGludCBzY3JlZW4sCisgICAgdW5zaWduZWQgaW50
IGRpc3BsYXlfbWFzaywKKyAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAorICAgIGludCB2YWx1
ZQorKXsKKyAgICByZXR1cm4gWE5WQ1RSTFNldFRhcmdldEF0dHJpYnV0ZUFuZEdldFN0YXR1cyhk
cHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlZf
Q1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzY3JlZW4sIGRpc3BsYXlfbWFzaywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUsIHZhbHVlKTsKK30K
KworCitCb29sIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSAoCisgICAgRGlzcGxheSAqZHB5
LAorICAgIGludCB0YXJnZXRfdHlwZSwKKyAgICBpbnQgdGFyZ2V0X2lkLAorICAgIHVuc2lnbmVk
IGludCBkaXNwbGF5X21hc2ssCisgICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKKyAgICBpbnQg
KnZhbHVlCispeworICAgIFhFeHREaXNwbGF5SW5mbyAqaW5mbyA9IGZpbmRfZGlzcGxheSAoZHB5
KTsKKyAgICB4bnZDdHJsUXVlcnlBdHRyaWJ1dGVSZXBseSByZXA7CisgICAgeG52Q3RybFF1ZXJ5
QXR0cmlidXRlUmVxICAgKnJlcTsKKyAgICBCb29sIGV4aXN0czsKKworICAgIGlmKCFYZXh0SGFz
RXh0ZW5zaW9uKGluZm8pKQorICAgICAgICByZXR1cm4gRmFsc2U7CisKKyAgICBYTlZDVFJMQ2hl
Y2tFeHRlbnNpb24gKGRweSwgaW5mbywgRmFsc2UpOworICAgIFhOVkNUUkxDaGVja1RhcmdldERh
dGEoZHB5LCBpbmZvLCAmdGFyZ2V0X3R5cGUsICZ0YXJnZXRfaWQpOworCisgICAgTG9ja0Rpc3Bs
YXkgKGRweSk7CisgICAgR2V0UmVxIChudkN0cmxRdWVyeUF0dHJpYnV0ZSwgcmVxKTsKKyAgICBy
ZXEtPnJlcVR5cGUgPSBpbmZvLT5jb2Rlcy0+bWFqb3Jfb3Bjb2RlOworICAgIHJlcS0+bnZSZXFU
eXBlID0gWF9udkN0cmxRdWVyeUF0dHJpYnV0ZTsKKyAgICByZXEtPnRhcmdldF90eXBlID0gdGFy
Z2V0X3R5cGU7CisgICAgcmVxLT50YXJnZXRfaWQgPSB0YXJnZXRfaWQ7CisgICAgcmVxLT5kaXNw
bGF5X21hc2sgPSBkaXNwbGF5X21hc2s7CisgICAgcmVxLT5hdHRyaWJ1dGUgPSBhdHRyaWJ1dGU7
CisgICAgaWYgKCFfWFJlcGx5IChkcHksICh4UmVwbHkgKikgJnJlcCwgMCwgeFRydWUpKSB7Cisg
ICAgICAgIFVubG9ja0Rpc3BsYXkgKGRweSk7CisgICAgICAgIFN5bmNIYW5kbGUgKCk7CisgICAg
ICAgIHJldHVybiBGYWxzZTsKKyAgICB9CisgICAgZXhpc3RzID0gcmVwLmZsYWdzOworICAgIGlm
IChleGlzdHMgJiYgdmFsdWUpICp2YWx1ZSA9IHJlcC52YWx1ZTsKKyAgICBVbmxvY2tEaXNwbGF5
IChkcHkpOworICAgIFN5bmNIYW5kbGUgKCk7CisgICAgcmV0dXJuIGV4aXN0czsKK30KKworQm9v
bCBYTlZDVFJMUXVlcnlBdHRyaWJ1dGUgKAorICAgIERpc3BsYXkgKmRweSwKKyAgICBpbnQgc2Ny
ZWVuLAorICAgIHVuc2lnbmVkIGludCBkaXNwbGF5X21hc2ssCisgICAgdW5zaWduZWQgaW50IGF0
dHJpYnV0ZSwKKyAgICBpbnQgKnZhbHVlCispeworICAgIHJldHVybiBYTlZDVFJMUXVlcnlUYXJn
ZXRBdHRyaWJ1dGUoZHB5LCBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyZWVuLCBkaXNwbGF5X21hc2ssIGF0dHJp
YnV0ZSwgdmFsdWUpOworfQorCisKK0Jvb2wgWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlNjQg
KAorICAgIERpc3BsYXkgKmRweSwKKyAgICBpbnQgdGFyZ2V0X3R5cGUsCisgICAgaW50IHRhcmdl
dF9pZCwKKyAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrLAorICAgIHVuc2lnbmVkIGludCBh
dHRyaWJ1dGUsCisgICAgaW50NjRfdCAqdmFsdWUKKyl7CisgICAgWEV4dERpc3BsYXlJbmZvICpp
bmZvID0gZmluZF9kaXNwbGF5KGRweSk7CisgICAgeG52Q3RybFF1ZXJ5QXR0cmlidXRlNjRSZXBs
eSByZXA7CisgICAgeG52Q3RybFF1ZXJ5QXR0cmlidXRlUmVxICpyZXE7CisgICAgQm9vbCBleGlz
dHM7CisKKyAgICBpZiAoIVhleHRIYXNFeHRlbnNpb24oaW5mbykpCisgICAgICAgIHJldHVybiBG
YWxzZTsKKworICAgIFhOVkNUUkxDaGVja0V4dGVuc2lvbihkcHksIGluZm8sIEZhbHNlKTsKKyAg
ICBYTlZDVFJMQ2hlY2tUYXJnZXREYXRhKGRweSwgaW5mbywgJnRhcmdldF90eXBlLCAmdGFyZ2V0
X2lkKTsKKworICAgIExvY2tEaXNwbGF5KGRweSk7CisgICAgR2V0UmVxKG52Q3RybFF1ZXJ5QXR0
cmlidXRlLCByZXEpOworICAgIHJlcS0+cmVxVHlwZSA9IGluZm8tPmNvZGVzLT5tYWpvcl9vcGNv
ZGU7CisgICAgcmVxLT5udlJlcVR5cGUgPSBYX252Q3RybFF1ZXJ5QXR0cmlidXRlNjQ7CisgICAg
cmVxLT50YXJnZXRfdHlwZSA9IHRhcmdldF90eXBlOworICAgIHJlcS0+dGFyZ2V0X2lkID0gdGFy
Z2V0X2lkOworICAgIHJlcS0+ZGlzcGxheV9tYXNrID0gZGlzcGxheV9tYXNrOworICAgIHJlcS0+
YXR0cmlidXRlID0gYXR0cmlidXRlOworICAgIGlmICghX1hSZXBseShkcHksICh4UmVwbHkgKikm
cmVwLCAwLCB4VHJ1ZSkpIHsKKyAgICAgICAgVW5sb2NrRGlzcGxheShkcHkpOworICAgICAgICBT
eW5jSGFuZGxlKCk7CisgICAgICAgIHJldHVybiBGYWxzZTsKKyAgICB9CisgICAgZXhpc3RzID0g
cmVwLmZsYWdzOworICAgIGlmIChleGlzdHMgJiYgdmFsdWUpICp2YWx1ZSA9IHJlcC52YWx1ZV82
NDsKKyAgICBVbmxvY2tEaXNwbGF5KGRweSk7CisgICAgU3luY0hhbmRsZSgpOworICAgIHJldHVy
biBleGlzdHM7Cit9CisKKworQm9vbCBYTlZDVFJMUXVlcnlUYXJnZXRTdHJpbmdBdHRyaWJ1dGUg
KAorICAgIERpc3BsYXkgKmRweSwKKyAgICBpbnQgdGFyZ2V0X3R5cGUsCisgICAgaW50IHRhcmdl
dF9pZCwKKyAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrLAorICAgIHVuc2lnbmVkIGludCBh
dHRyaWJ1dGUsCisgICAgY2hhciAqKnB0cgorKXsKKyAgICBYRXh0RGlzcGxheUluZm8gKmluZm8g
PSBmaW5kX2Rpc3BsYXkgKGRweSk7CisgICAgeG52Q3RybFF1ZXJ5U3RyaW5nQXR0cmlidXRlUmVw
bHkgcmVwOworICAgIHhudkN0cmxRdWVyeVN0cmluZ0F0dHJpYnV0ZVJlcSAgICpyZXE7CisgICAg
Qm9vbCBleGlzdHM7CisgICAgaW50IGxlbmd0aCwgbnVtYnl0ZXMsIHNsb3A7CisKKyAgICBpZiAo
IXB0cikgcmV0dXJuIEZhbHNlOworCisgICAgaWYoIVhleHRIYXNFeHRlbnNpb24oaW5mbykpCisg
ICAgICAgIHJldHVybiBGYWxzZTsKKworICAgIFhOVkNUUkxDaGVja0V4dGVuc2lvbiAoZHB5LCBp
bmZvLCBGYWxzZSk7CisgICAgWE5WQ1RSTENoZWNrVGFyZ2V0RGF0YShkcHksIGluZm8sICZ0YXJn
ZXRfdHlwZSwgJnRhcmdldF9pZCk7CisKKyAgICBMb2NrRGlzcGxheSAoZHB5KTsKKyAgICBHZXRS
ZXEgKG52Q3RybFF1ZXJ5U3RyaW5nQXR0cmlidXRlLCByZXEpOworICAgIHJlcS0+cmVxVHlwZSA9
IGluZm8tPmNvZGVzLT5tYWpvcl9vcGNvZGU7CisgICAgcmVxLT5udlJlcVR5cGUgPSBYX252Q3Ry
bFF1ZXJ5U3RyaW5nQXR0cmlidXRlOworICAgIHJlcS0+dGFyZ2V0X3R5cGUgPSB0YXJnZXRfdHlw
ZTsKKyAgICByZXEtPnRhcmdldF9pZCA9IHRhcmdldF9pZDsKKyAgICByZXEtPmRpc3BsYXlfbWFz
ayA9IGRpc3BsYXlfbWFzazsKKyAgICByZXEtPmF0dHJpYnV0ZSA9IGF0dHJpYnV0ZTsKKyAgICBp
ZiAoIV9YUmVwbHkgKGRweSwgKHhSZXBseSAqKSAmcmVwLCAwLCBGYWxzZSkpIHsKKyAgICAgICAg
VW5sb2NrRGlzcGxheSAoZHB5KTsKKyAgICAgICAgU3luY0hhbmRsZSAoKTsKKyAgICAgICAgcmV0
dXJuIEZhbHNlOworICAgIH0KKyAgICBsZW5ndGggPSByZXAubGVuZ3RoOworICAgIG51bWJ5dGVz
ID0gcmVwLm47CisgICAgc2xvcCA9IG51bWJ5dGVzICYgMzsKKyAgICBleGlzdHMgPSByZXAuZmxh
Z3M7CisgICAgaWYgKGV4aXN0cykgeworICAgICAgICAqcHRyID0gKGNoYXIgKikgWG1hbGxvYyhu
dW1ieXRlcyk7CisgICAgfQorICAgIGlmICghZXhpc3RzIHx8ICEqcHRyKSB7CisgICAgICAgIF9Y
RWF0RGF0YShkcHksIGxlbmd0aCk7CisgICAgICAgIFVubG9ja0Rpc3BsYXkgKGRweSk7CisgICAg
ICAgIFN5bmNIYW5kbGUgKCk7CisgICAgICAgIHJldHVybiBGYWxzZTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBfWFJlYWQoZHB5LCAoY2hhciAqKSAqcHRyLCBudW1ieXRlcyk7CisgICAgICAgIGlm
IChzbG9wKSBfWEVhdERhdGEoZHB5LCA0LXNsb3ApOworICAgIH0KKyAgICBVbmxvY2tEaXNwbGF5
IChkcHkpOworICAgIFN5bmNIYW5kbGUgKCk7CisgICAgcmV0dXJuIGV4aXN0czsKK30KKworQm9v
bCBYTlZDVFJMUXVlcnlTdHJpbmdBdHRyaWJ1dGUgKAorICAgIERpc3BsYXkgKmRweSwKKyAgICBp
bnQgc2NyZWVuLAorICAgIHVuc2lnbmVkIGludCBkaXNwbGF5X21hc2ssCisgICAgdW5zaWduZWQg
aW50IGF0dHJpYnV0ZSwKKyAgICBjaGFyICoqcHRyCispeworICAgIHJldHVybiBYTlZDVFJMUXVl
cnlUYXJnZXRTdHJpbmdBdHRyaWJ1dGUoZHB5LCBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVO
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyZWVuLCBk
aXNwbGF5X21hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhdHRyaWJ1dGUsIHB0cik7Cit9CisKKworQm9vbCBYTlZDVFJMU2V0VGFyZ2V0U3RyaW5nQXR0
cmlidXRlICgKKyAgICBEaXNwbGF5ICpkcHksCisgICAgaW50IHRhcmdldF90eXBlLAorICAgIGlu
dCB0YXJnZXRfaWQsCisgICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywKKyAgICB1bnNpZ25l
ZCBpbnQgYXR0cmlidXRlLAorICAgIGNoYXIgKnB0cgorKXsKKyAgICBYRXh0RGlzcGxheUluZm8g
KmluZm8gPSBmaW5kX2Rpc3BsYXkgKGRweSk7CisgICAgeG52Q3RybFNldFN0cmluZ0F0dHJpYnV0
ZVJlcSAqcmVxOworICAgIHhudkN0cmxTZXRTdHJpbmdBdHRyaWJ1dGVSZXBseSByZXA7CisgICAg
aW50IHNpemU7CisgICAgQm9vbCBzdWNjZXNzOworICAgIAorICAgIGlmKCFYZXh0SGFzRXh0ZW5z
aW9uKGluZm8pKQorICAgICAgICByZXR1cm4gRmFsc2U7CisKKyAgICBYTlZDVFJMQ2hlY2tFeHRl
bnNpb24gKGRweSwgaW5mbywgRmFsc2UpOworCisgICAgc2l6ZSA9IHN0cmxlbihwdHIpKzE7CisK
KyAgICBMb2NrRGlzcGxheSAoZHB5KTsKKyAgICBHZXRSZXEgKG52Q3RybFNldFN0cmluZ0F0dHJp
YnV0ZSwgcmVxKTsKKyAgICByZXEtPnJlcVR5cGUgPSBpbmZvLT5jb2Rlcy0+bWFqb3Jfb3Bjb2Rl
OworICAgIHJlcS0+bnZSZXFUeXBlID0gWF9udkN0cmxTZXRTdHJpbmdBdHRyaWJ1dGU7CisgICAg
cmVxLT50YXJnZXRfdHlwZSA9IHRhcmdldF90eXBlOworICAgIHJlcS0+dGFyZ2V0X2lkID0gdGFy
Z2V0X2lkOworICAgIHJlcS0+ZGlzcGxheV9tYXNrID0gZGlzcGxheV9tYXNrOworICAgIHJlcS0+
YXR0cmlidXRlID0gYXR0cmlidXRlOworICAgIHJlcS0+bGVuZ3RoICs9ICgoc2l6ZSArIDMpICYg
fjMpID4+IDI7CisgICAgcmVxLT5udW1fYnl0ZXMgPSBzaXplOworICAgIERhdGEoZHB5LCBwdHIs
IHNpemUpOworICAgIAorICAgIGlmICghX1hSZXBseSAoZHB5LCAoeFJlcGx5ICopICZyZXAsIDAs
IEZhbHNlKSkgeworICAgICAgICBVbmxvY2tEaXNwbGF5IChkcHkpOworICAgICAgICBTeW5jSGFu
ZGxlICgpOworICAgICAgICByZXR1cm4gRmFsc2U7CisgICAgfQorICAgIFVubG9ja0Rpc3BsYXkg
KGRweSk7CisgICAgU3luY0hhbmRsZSAoKTsKKyAgICAKKyAgICBzdWNjZXNzID0gcmVwLmZsYWdz
OworICAgIHJldHVybiBzdWNjZXNzOworfQorCitCb29sIFhOVkNUUkxTZXRTdHJpbmdBdHRyaWJ1
dGUgKAorICAgIERpc3BsYXkgKmRweSwKKyAgICBpbnQgc2NyZWVuLAorICAgIHVuc2lnbmVkIGlu
dCBkaXNwbGF5X21hc2ssCisgICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKKyAgICBjaGFyICpw
dHIKKyl7CisgICAgcmV0dXJuIFhOVkNUUkxTZXRUYXJnZXRTdHJpbmdBdHRyaWJ1dGUoZHB5LCBO
Vl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNjcmVlbiwgZGlzcGxheV9tYXNrLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSwgcHRyKTsKK30KKworCitzdGF0aWMg
Qm9vbCBYTlZDVFJMUXVlcnlWYWxpZFRhcmdldEF0dHJpYnV0ZVZhbHVlczMyICgKKyAgICBEaXNw
bGF5ICpkcHksCisgICAgWEV4dERpc3BsYXlJbmZvICppbmZvLAorICAgIGludCB0YXJnZXRfdHlw
ZSwKKyAgICBpbnQgdGFyZ2V0X2lkLAorICAgIHVuc2lnbmVkIGludCBkaXNwbGF5X21hc2ssCisg
ICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKKyAgICBOVkNUUkxBdHRyaWJ1dGVWYWxpZFZhbHVlc1JlYyAqdmFsdWVzCispeworICAgIHhu
dkN0cmxRdWVyeVZhbGlkQXR0cmlidXRlVmFsdWVzUmVwbHkgcmVwOworICAgIHhudkN0cmxRdWVy
eVZhbGlkQXR0cmlidXRlVmFsdWVzUmVxICAgKnJlcTsKKyAgICBCb29sIGV4aXN0czsKKworICAg
IExvY2tEaXNwbGF5IChkcHkpOworICAgIEdldFJlcSAobnZDdHJsUXVlcnlWYWxpZEF0dHJpYnV0
ZVZhbHVlcywgcmVxKTsKKyAgICByZXEtPnJlcVR5cGUgPSBpbmZvLT5jb2Rlcy0+bWFqb3Jfb3Bj
b2RlOworICAgIHJlcS0+bnZSZXFUeXBlID0gWF9udkN0cmxRdWVyeVZhbGlkQXR0cmlidXRlVmFs
dWVzOworICAgIHJlcS0+dGFyZ2V0X3R5cGUgPSB0YXJnZXRfdHlwZTsKKyAgICByZXEtPnRhcmdl
dF9pZCA9IHRhcmdldF9pZDsKKyAgICByZXEtPmRpc3BsYXlfbWFzayA9IGRpc3BsYXlfbWFzazsK
KyAgICByZXEtPmF0dHJpYnV0ZSA9IGF0dHJpYnV0ZTsKKyAgICBpZiAoIV9YUmVwbHkgKGRweSwg
KHhSZXBseSAqKSAmcmVwLCAwLCB4VHJ1ZSkpIHsKKyAgICAgICAgVW5sb2NrRGlzcGxheSAoZHB5
KTsKKyAgICAgICAgU3luY0hhbmRsZSAoKTsKKyAgICAgICAgcmV0dXJuIEZhbHNlOworICAgIH0K
KyAgICBleGlzdHMgPSByZXAuZmxhZ3M7CisgICAgaWYgKGV4aXN0cykgeworICAgICAgICB2YWx1
ZXMtPnR5cGUgPSByZXAuYXR0cl90eXBlOworICAgICAgICBpZiAocmVwLmF0dHJfdHlwZSA9PSBB
VFRSSUJVVEVfVFlQRV9SQU5HRSkgeworICAgICAgICAgICAgdmFsdWVzLT51LnJhbmdlLm1pbiA9
IHJlcC5taW47CisgICAgICAgICAgICB2YWx1ZXMtPnUucmFuZ2UubWF4ID0gcmVwLm1heDsKKyAg
ICAgICAgfQorICAgICAgICBpZiAocmVwLmF0dHJfdHlwZSA9PSBBVFRSSUJVVEVfVFlQRV9JTlRf
QklUUykgeworICAgICAgICAgICAgdmFsdWVzLT51LmJpdHMuaW50cyA9IHJlcC5iaXRzOworICAg
ICAgICB9CisgICAgICAgIHZhbHVlcy0+cGVybWlzc2lvbnMgPSByZXAucGVybXM7CisgICAgfQor
ICAgIFVubG9ja0Rpc3BsYXkgKGRweSk7CisgICAgU3luY0hhbmRsZSAoKTsKKyAgICByZXR1cm4g
ZXhpc3RzOworfQorCisKK0Jvb2wgWE5WQ1RSTFF1ZXJ5VmFsaWRUYXJnZXRTdHJpbmdBdHRyaWJ1
dGVWYWx1ZXMgKAorICAgIERpc3BsYXkgKmRweSwKKyAgICBpbnQgdGFyZ2V0X3R5cGUsCisgICAg
aW50IHRhcmdldF9pZCwKKyAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrLAorICAgIHVuc2ln
bmVkIGludCBhdHRyaWJ1dGUsCisgICAgTlZDVFJMQXR0cmlidXRlVmFsaWRWYWx1ZXNSZWMgKnZh
bHVlcworKXsKKyAgICBYRXh0RGlzcGxheUluZm8gKmluZm8gPSBmaW5kX2Rpc3BsYXkoZHB5KTsK
KyAgICBCb29sIGV4aXN0czsKKyAgICB4bnZDdHJsUXVlcnlWYWxpZEF0dHJpYnV0ZVZhbHVlc1Jl
cGx5IHJlcDsKKyAgICB4bnZDdHJsUXVlcnlWYWxpZEF0dHJpYnV0ZVZhbHVlc1JlcSAgICpyZXE7
CisKKyAgICBpZiAoIXZhbHVlcykgcmV0dXJuIEZhbHNlOworCisgICAgaWYgKCFYZXh0SGFzRXh0
ZW5zaW9uKGluZm8pKQorICAgICAgICByZXR1cm4gRmFsc2U7CisKKyAgICBYTlZDVFJMQ2hlY2tF
eHRlbnNpb24oZHB5LCBpbmZvLCBGYWxzZSk7CisKKyAgICBMb2NrRGlzcGxheShkcHkpOworICAg
IEdldFJlcSAobnZDdHJsUXVlcnlWYWxpZEF0dHJpYnV0ZVZhbHVlcywgcmVxKTsKKyAgICByZXEt
PnJlcVR5cGUgPSBpbmZvLT5jb2Rlcy0+bWFqb3Jfb3Bjb2RlOworICAgIHJlcS0+bnZSZXFUeXBl
ID0gWF9udkN0cmxRdWVyeVZhbGlkU3RyaW5nQXR0cmlidXRlVmFsdWVzOworICAgIHJlcS0+dGFy
Z2V0X3R5cGUgPSB0YXJnZXRfdHlwZTsKKyAgICByZXEtPnRhcmdldF9pZCA9IHRhcmdldF9pZDsK
KyAgICByZXEtPmRpc3BsYXlfbWFzayA9IGRpc3BsYXlfbWFzazsKKyAgICByZXEtPmF0dHJpYnV0
ZSA9IGF0dHJpYnV0ZTsKKyAgICBpZiAoIV9YUmVwbHkoZHB5LCAoeFJlcGx5ICopJnJlcCwgMCwg
eFRydWUpKSB7CisgICAgICAgIFVubG9ja0Rpc3BsYXkoZHB5KTsKKyAgICAgICAgU3luY0hhbmRs
ZSgpOworICAgICAgICByZXR1cm4gRmFsc2U7CisgICAgfQorICAgIGV4aXN0cyA9IHJlcC5mbGFn
czsKKyAgICBpZiAoZXhpc3RzKSB7CisgICAgICAgIHZhbHVlcy0+dHlwZSA9IHJlcC5hdHRyX3R5
cGU7CisgICAgICAgIHZhbHVlcy0+cGVybWlzc2lvbnMgPSByZXAucGVybXM7CisgICAgfQorICAg
IFVubG9ja0Rpc3BsYXkoZHB5KTsKKyAgICBTeW5jSGFuZGxlKCk7CisgICAgcmV0dXJuIGV4aXN0
czsKK30KKworCitzdGF0aWMgQm9vbCBYTlZDVFJMUXVlcnlWYWxpZFRhcmdldEF0dHJpYnV0ZVZh
bHVlczY0ICgKKyAgICBEaXNwbGF5ICpkcHksCisgICAgWEV4dERpc3BsYXlJbmZvICppbmZvLAor
ICAgIGludCB0YXJnZXRfdHlwZSwKKyAgICBpbnQgdGFyZ2V0X2lkLAorICAgIHVuc2lnbmVkIGlu
dCBkaXNwbGF5X21hc2ssCisgICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKKyAgICBOVkNUUkxB
dHRyaWJ1dGVWYWxpZFZhbHVlc1JlYyAqdmFsdWVzCispeworICAgIHhudkN0cmxRdWVyeVZhbGlk
QXR0cmlidXRlVmFsdWVzNjRSZXBseSByZXA7CisgICAgeG52Q3RybFF1ZXJ5VmFsaWRBdHRyaWJ1
dGVWYWx1ZXNSZXEgKnJlcTsKKyAgICBCb29sIGV4aXN0czsKKworICAgIExvY2tEaXNwbGF5KGRw
eSk7CisgICAgR2V0UmVxKG52Q3RybFF1ZXJ5VmFsaWRBdHRyaWJ1dGVWYWx1ZXMsIHJlcSk7Cisg
ICAgcmVxLT5yZXFUeXBlID0gaW5mby0+Y29kZXMtPm1ham9yX29wY29kZTsKKyAgICByZXEtPm52
UmVxVHlwZSA9IFhfbnZDdHJsUXVlcnlWYWxpZEF0dHJpYnV0ZVZhbHVlczY0OworICAgIHJlcS0+
dGFyZ2V0X3R5cGUgPSB0YXJnZXRfdHlwZTsKKyAgICByZXEtPnRhcmdldF9pZCA9IHRhcmdldF9p
ZDsKKyAgICByZXEtPmRpc3BsYXlfbWFzayA9IGRpc3BsYXlfbWFzazsKKyAgICByZXEtPmF0dHJp
YnV0ZSA9IGF0dHJpYnV0ZTsKKyAgICBpZiAoIV9YUmVwbHkoZHB5LCAoeFJlcGx5ICopJnJlcCwK
KyAgICAgICAgICAgICAgICAgc3pfeG52Q3RybFF1ZXJ5VmFsaWRBdHRyaWJ1dGVWYWx1ZXM2NFJl
cGx5X2V4dHJhLAorICAgICAgICAgICAgICAgICB4VHJ1ZSkpIHsKKyAgICAgICAgVW5sb2NrRGlz
cGxheShkcHkpOworICAgICAgICBTeW5jSGFuZGxlKCk7CisgICAgICAgIHJldHVybiBGYWxzZTsK
KyAgICB9CisgICAgZXhpc3RzID0gcmVwLmZsYWdzOworICAgIGlmIChleGlzdHMpIHsKKyAgICAg
ICAgdmFsdWVzLT50eXBlID0gcmVwLmF0dHJfdHlwZTsKKyAgICAgICAgaWYgKHJlcC5hdHRyX3R5
cGUgPT0gQVRUUklCVVRFX1RZUEVfUkFOR0UpIHsKKyAgICAgICAgICAgIHZhbHVlcy0+dS5yYW5n
ZS5taW4gPSByZXAubWluXzY0OworICAgICAgICAgICAgdmFsdWVzLT51LnJhbmdlLm1heCA9IHJl
cC5tYXhfNjQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlcC5hdHRyX3R5cGUgPT0gQVRUUklC
VVRFX1RZUEVfSU5UX0JJVFMpIHsKKyAgICAgICAgICAgIHZhbHVlcy0+dS5iaXRzLmludHMgPSBy
ZXAuYml0c182NDsKKyAgICAgICAgfQorICAgICAgICB2YWx1ZXMtPnBlcm1pc3Npb25zID0gcmVw
LnBlcm1zOworICAgIH0KKyAgICBVbmxvY2tEaXNwbGF5KGRweSk7CisgICAgU3luY0hhbmRsZSgp
OworICAgIHJldHVybiBleGlzdHM7Cit9CisKK0Jvb2wgWE5WQ1RSTFF1ZXJ5VmFsaWRUYXJnZXRB
dHRyaWJ1dGVWYWx1ZXMgKAorICAgIERpc3BsYXkgKmRweSwKKyAgICBpbnQgdGFyZ2V0X3R5cGUs
CisgICAgaW50IHRhcmdldF9pZCwKKyAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrLAorICAg
IHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCisgICAgTlZDVFJMQXR0cmlidXRlVmFsaWRWYWx1ZXNS
ZWMgKnZhbHVlcworKXsKKyAgICBYRXh0RGlzcGxheUluZm8gKmluZm8gPSBmaW5kX2Rpc3BsYXko
ZHB5KTsKKyAgICBCb29sIGV4aXN0czsKKyAgICB1aW50cHRyX3QgZmxhZ3M7CisKKyAgICBpZiAo
IXZhbHVlcykgcmV0dXJuIEZhbHNlOworCisgICAgaWYgKCFYZXh0SGFzRXh0ZW5zaW9uKGluZm8p
KQorICAgICAgICByZXR1cm4gRmFsc2U7CisKKyAgICBYTlZDVFJMQ2hlY2tFeHRlbnNpb24oZHB5
LCBpbmZvLCBGYWxzZSk7CisgICAgWE5WQ1RSTENoZWNrVGFyZ2V0RGF0YShkcHksIGluZm8sICZ0
YXJnZXRfdHlwZSwgJnRhcmdldF9pZCk7CisKKyAgICBmbGFncyA9IHZlcnNpb25fZmxhZ3MoZHB5
LGluZm8pOworCisgICAgaWYgKCEoZmxhZ3MgJiBOVkNUUkxfRVhUX0VYSVNUUykpCisgICAgICAg
IHJldHVybiBGYWxzZTsKKworICAgIGlmIChmbGFncyAmIE5WQ1RSTF9FWFRfNjRfQklUX0FUVFJJ
QlVURVMpIHsKKyAgICAgICAgZXhpc3RzID0gWE5WQ1RSTFF1ZXJ5VmFsaWRUYXJnZXRBdHRyaWJ1
dGVWYWx1ZXM2NChkcHksIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3R5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2lkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3Bs
YXlfbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBl
eGlzdHMgPSBYTlZDVFJMUXVlcnlWYWxpZFRhcmdldEF0dHJpYnV0ZVZhbHVlczMyKGRweSwgaW5m
bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0YXJnZXRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0YXJnZXRfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheV9tYXNrLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YWx1ZXMpOworICAgIH0KKyAgICByZXR1cm4gZXhpc3RzOworfQorCisKK0Jvb2wgWE5W
Q1RSTFF1ZXJ5VmFsaWRBdHRyaWJ1dGVWYWx1ZXMgKAorICAgIERpc3BsYXkgKmRweSwKKyAgICBp
bnQgc2NyZWVuLAorICAgIHVuc2lnbmVkIGludCBkaXNwbGF5X21hc2ssCisgICAgdW5zaWduZWQg
aW50IGF0dHJpYnV0ZSwKKyAgICBOVkNUUkxBdHRyaWJ1dGVWYWxpZFZhbHVlc1JlYyAqdmFsdWVz
CispeworICAgIHJldHVybiBYTlZDVFJMUXVlcnlWYWxpZFRhcmdldEF0dHJpYnV0ZVZhbHVlcyhk
cHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5W
X0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNjcmVlbiwgZGlzcGxheV9tYXNrLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUsIHZhbHVlcyk7
Cit9CisKKworc3RhdGljIEJvb2wgUXVlcnlBdHRyaWJ1dGVQZXJtaXNzaW9uc0ludGVybmFsICgK
KyAgICBEaXNwbGF5ICpkcHksCisgICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKKyAgICBOVkNU
UkxBdHRyaWJ1dGVQZXJtaXNzaW9uc1JlYyAqcGVybWlzc2lvbnMsCisgICAgdW5zaWduZWQgaW50
IHJlcVR5cGUKKyl7CisgICAgWEV4dERpc3BsYXlJbmZvICppbmZvID0gZmluZF9kaXNwbGF5IChk
cHkpOworICAgIHhudkN0cmxRdWVyeUF0dHJpYnV0ZVBlcm1pc3Npb25zUmVwbHkgcmVwOworICAg
IHhudkN0cmxRdWVyeUF0dHJpYnV0ZVBlcm1pc3Npb25zUmVxICpyZXE7CisgICAgQm9vbCBleGlz
dHM7CisKKyAgICBpZighWGV4dEhhc0V4dGVuc2lvbihpbmZvKSkKKyAgICAgICAgcmV0dXJuIEZh
bHNlOworCisgICAgWE5WQ1RSTENoZWNrRXh0ZW5zaW9uIChkcHksIGluZm8sIEZhbHNlKTsKKwor
ICAgIExvY2tEaXNwbGF5KGRweSk7CisgICAgR2V0UmVxKG52Q3RybFF1ZXJ5QXR0cmlidXRlUGVy
bWlzc2lvbnMsIHJlcSk7CisgICAgcmVxLT5yZXFUeXBlID0gaW5mby0+Y29kZXMtPm1ham9yX29w
Y29kZTsKKyAgICByZXEtPm52UmVxVHlwZSA9IHJlcVR5cGU7CisgICAgcmVxLT5hdHRyaWJ1dGUg
PSBhdHRyaWJ1dGU7CisgICAgaWYgKCFfWFJlcGx5IChkcHksICh4UmVwbHkgKikgJnJlcCwgMCwg
eFRydWUpKSB7CisgICAgICAgIFVubG9ja0Rpc3BsYXkgKGRweSk7CisgICAgICAgIFN5bmNIYW5k
bGUoKTsKKyAgICAgICAgcmV0dXJuIEZhbHNlOworICAgIH0KKyAgICBleGlzdHMgPSByZXAuZmxh
Z3M7CisgICAgaWYgKGV4aXN0cyAmJiBwZXJtaXNzaW9ucykgeworICAgICAgICBwZXJtaXNzaW9u
cy0+dHlwZSA9IHJlcC5hdHRyX3R5cGU7CisgICAgICAgIHBlcm1pc3Npb25zLT5wZXJtaXNzaW9u
cyA9IHJlcC5wZXJtczsKKyAgICB9CisgICAgVW5sb2NrRGlzcGxheShkcHkpOworICAgIFN5bmNI
YW5kbGUoKTsKKyAgICByZXR1cm4gZXhpc3RzOworfQorCisKK0Jvb2wgWE5WQ1RSTFF1ZXJ5QXR0
cmlidXRlUGVybWlzc2lvbnMgKAorICAgIERpc3BsYXkgKmRweSwKKyAgICB1bnNpZ25lZCBpbnQg
YXR0cmlidXRlLAorICAgIE5WQ1RSTEF0dHJpYnV0ZVBlcm1pc3Npb25zUmVjICpwZXJtaXNzaW9u
cworKXsKKyAgICByZXR1cm4gUXVlcnlBdHRyaWJ1dGVQZXJtaXNzaW9uc0ludGVybmFsKGRweSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb25z
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWF9udkN0cmxR
dWVyeUF0dHJpYnV0ZVBlcm1pc3Npb25zKTsKK30KKworCitCb29sIFhOVkNUUkxRdWVyeVN0cmlu
Z0F0dHJpYnV0ZVBlcm1pc3Npb25zICgKKyAgICBEaXNwbGF5ICpkcHksCisgICAgdW5zaWduZWQg
aW50IGF0dHJpYnV0ZSwKKyAgICBOVkNUUkxBdHRyaWJ1dGVQZXJtaXNzaW9uc1JlYyAqcGVybWlz
c2lvbnMKKyl7CisgICAgcmV0dXJuIFF1ZXJ5QXR0cmlidXRlUGVybWlzc2lvbnNJbnRlcm5hbChk
cHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1
dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJtaXNz
aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhfbnZD
dHJsUXVlcnlTdHJpbmdBdHRyaWJ1dGVQZXJtaXNzaW9ucyk7Cit9CisKKworQm9vbCBYTlZDVFJM
UXVlcnlCaW5hcnlEYXRhQXR0cmlidXRlUGVybWlzc2lvbnMgKAorICAgIERpc3BsYXkgKmRweSwK
KyAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAorICAgIE5WQ1RSTEF0dHJpYnV0ZVBlcm1pc3Np
b25zUmVjICpwZXJtaXNzaW9ucworKXsKKyAgICByZXR1cm4gUXVlcnlBdHRyaWJ1dGVQZXJtaXNz
aW9uc0ludGVybmFsKGRweSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBlcm1pc3Npb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgWF9udkN0cmxRdWVyeUJpbmFyeURhdGFBdHRyaWJ1dGVQZXJtaXNzaW9ucyk7Cit9
CisKKworQm9vbCBYTlZDVFJMUXVlcnlTdHJpbmdPcGVyYXRpb25BdHRyaWJ1dGVQZXJtaXNzaW9u
cyAoCisgICAgRGlzcGxheSAqZHB5LAorICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCisgICAg
TlZDVFJMQXR0cmlidXRlUGVybWlzc2lvbnNSZWMgKnBlcm1pc3Npb25zCispeworICAgIHJldHVy
biBRdWVyeUF0dHJpYnV0ZVBlcm1pc3Npb25zSW50ZXJuYWwoZHB5LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVybWlzc2lvbnMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYX252Q3RybFF1ZXJ5U3RyaW5nT3BlcmF0
aW9uQXR0cmlidXRlUGVybWlzc2lvbnMpOworfQorCisKK3ZvaWQgWE5WQ1RSTFNldEd2b0NvbG9y
Q29udmVyc2lvbiAoCisgICAgRGlzcGxheSAqZHB5LAorICAgIGludCBzY3JlZW4sCisgICAgZmxv
YXQgY29sb3JNYXRyaXhbM11bM10sCisgICAgZmxvYXQgY29sb3JPZmZzZXRbM10sCisgICAgZmxv
YXQgY29sb3JTY2FsZVszXQorKXsKKyAgICBYRXh0RGlzcGxheUluZm8gKmluZm8gPSBmaW5kX2Rp
c3BsYXkgKGRweSk7CisgICAgeG52Q3RybFNldEd2b0NvbG9yQ29udmVyc2lvblJlcSAqcmVxOwor
CisgICAgWE5WQ1RSTFNpbXBsZUNoZWNrRXh0ZW5zaW9uIChkcHksIGluZm8pOworCisgICAgTG9j
a0Rpc3BsYXkgKGRweSk7CisgICAgR2V0UmVxIChudkN0cmxTZXRHdm9Db2xvckNvbnZlcnNpb24s
IHJlcSk7CisgICAgcmVxLT5yZXFUeXBlID0gaW5mby0+Y29kZXMtPm1ham9yX29wY29kZTsKKyAg
ICByZXEtPm52UmVxVHlwZSA9IFhfbnZDdHJsU2V0R3ZvQ29sb3JDb252ZXJzaW9uOworICAgIHJl
cS0+c2NyZWVuID0gc2NyZWVuOworCisgICAgcmVxLT5jc2NNYXRyaXhfeV9yID0gY29sb3JNYXRy
aXhbMF1bMF07CisgICAgcmVxLT5jc2NNYXRyaXhfeV9nID0gY29sb3JNYXRyaXhbMF1bMV07Cisg
ICAgcmVxLT5jc2NNYXRyaXhfeV9iID0gY29sb3JNYXRyaXhbMF1bMl07CisKKyAgICByZXEtPmNz
Y01hdHJpeF9jcl9yID0gY29sb3JNYXRyaXhbMV1bMF07CisgICAgcmVxLT5jc2NNYXRyaXhfY3Jf
ZyA9IGNvbG9yTWF0cml4WzFdWzFdOworICAgIHJlcS0+Y3NjTWF0cml4X2NyX2IgPSBjb2xvck1h
dHJpeFsxXVsyXTsKKworICAgIHJlcS0+Y3NjTWF0cml4X2NiX3IgPSBjb2xvck1hdHJpeFsyXVsw
XTsKKyAgICByZXEtPmNzY01hdHJpeF9jYl9nID0gY29sb3JNYXRyaXhbMl1bMV07CisgICAgcmVx
LT5jc2NNYXRyaXhfY2JfYiA9IGNvbG9yTWF0cml4WzJdWzJdOworCisgICAgcmVxLT5jc2NPZmZz
ZXRfeSAgPSBjb2xvck9mZnNldFswXTsKKyAgICByZXEtPmNzY09mZnNldF9jciA9IGNvbG9yT2Zm
c2V0WzFdOworICAgIHJlcS0+Y3NjT2Zmc2V0X2NiID0gY29sb3JPZmZzZXRbMl07CisKKyAgICBy
ZXEtPmNzY1NjYWxlX3kgID0gY29sb3JTY2FsZVswXTsKKyAgICByZXEtPmNzY1NjYWxlX2NyID0g
Y29sb3JTY2FsZVsxXTsKKyAgICByZXEtPmNzY1NjYWxlX2NiID0gY29sb3JTY2FsZVsyXTsKKwor
ICAgIFVubG9ja0Rpc3BsYXkgKGRweSk7CisgICAgU3luY0hhbmRsZSAoKTsKK30KKworCitCb29s
IFhOVkNUUkxRdWVyeUd2b0NvbG9yQ29udmVyc2lvbiAoCisgICAgRGlzcGxheSAqZHB5LAorICAg
IGludCBzY3JlZW4sCisgICAgZmxvYXQgY29sb3JNYXRyaXhbM11bM10sCisgICAgZmxvYXQgY29s
b3JPZmZzZXRbM10sCisgICAgZmxvYXQgY29sb3JTY2FsZVszXQorKXsKKyAgICBYRXh0RGlzcGxh
eUluZm8gKmluZm8gPSBmaW5kX2Rpc3BsYXkgKGRweSk7CisgICAgeG52Q3RybFF1ZXJ5R3ZvQ29s
b3JDb252ZXJzaW9uUmVwbHkgcmVwOworICAgIHhudkN0cmxRdWVyeUd2b0NvbG9yQ29udmVyc2lv
blJlcSAqcmVxOworCisgICAgaWYoIVhleHRIYXNFeHRlbnNpb24oaW5mbykpCisgICAgICAgIHJl
dHVybiBGYWxzZTsKKworICAgIFhOVkNUUkxDaGVja0V4dGVuc2lvbiAoZHB5LCBpbmZvLCBGYWxz
ZSk7CisKKyAgICBMb2NrRGlzcGxheSAoZHB5KTsKKworICAgIEdldFJlcSAobnZDdHJsUXVlcnlH
dm9Db2xvckNvbnZlcnNpb24sIHJlcSk7CisgICAgcmVxLT5yZXFUeXBlID0gaW5mby0+Y29kZXMt
Pm1ham9yX29wY29kZTsKKyAgICByZXEtPm52UmVxVHlwZSA9IFhfbnZDdHJsUXVlcnlHdm9Db2xv
ckNvbnZlcnNpb247CisgICAgcmVxLT5zY3JlZW4gPSBzY3JlZW47CisKKyAgICBpZiAoIV9YUmVw
bHkoZHB5LCAoeFJlcGx5ICopICZyZXAsIDAsIHhGYWxzZSkpIHsKKyAgICAgICAgVW5sb2NrRGlz
cGxheSAoZHB5KTsKKyAgICAgICAgU3luY0hhbmRsZSAoKTsKKyAgICAgICAgcmV0dXJuIEZhbHNl
OworICAgIH0KKworICAgIF9YUmVhZChkcHksIChjaGFyICopKGNvbG9yTWF0cml4KSwgMzYpOwor
ICAgIF9YUmVhZChkcHksIChjaGFyICopKGNvbG9yT2Zmc2V0KSwgMTIpOworICAgIF9YUmVhZChk
cHksIChjaGFyICopKGNvbG9yU2NhbGUpLCAxMik7CisKKyAgICBVbmxvY2tEaXNwbGF5IChkcHkp
OworICAgIFN5bmNIYW5kbGUgKCk7CisKKyAgICByZXR1cm4gVHJ1ZTsKK30KKworCitCb29sIFhO
VkN0cmxTZWxlY3RUYXJnZXROb3RpZnkgKAorICAgIERpc3BsYXkgKmRweSwKKyAgICBpbnQgdGFy
Z2V0X3R5cGUsCisgICAgaW50IHRhcmdldF9pZCwKKyAgICBpbnQgbm90aWZ5X3R5cGUsCisgICAg
Qm9vbCBvbm9mZgorKXsKKyAgICBYRXh0RGlzcGxheUluZm8gKmluZm8gPSBmaW5kX2Rpc3BsYXkg
KGRweSk7CisgICAgeG52Q3RybFNlbGVjdFRhcmdldE5vdGlmeVJlcSAqcmVxOworCisgICAgaWYo
IVhleHRIYXNFeHRlbnNpb24gKGluZm8pKQorICAgICAgICByZXR1cm4gRmFsc2U7CisKKyAgICBY
TlZDVFJMQ2hlY2tFeHRlbnNpb24gKGRweSwgaW5mbywgRmFsc2UpOworCisgICAgTG9ja0Rpc3Bs
YXkgKGRweSk7CisgICAgR2V0UmVxIChudkN0cmxTZWxlY3RUYXJnZXROb3RpZnksIHJlcSk7Cisg
ICAgcmVxLT5yZXFUeXBlID0gaW5mby0+Y29kZXMtPm1ham9yX29wY29kZTsKKyAgICByZXEtPm52
UmVxVHlwZSA9IFhfbnZDdHJsU2VsZWN0VGFyZ2V0Tm90aWZ5OworICAgIHJlcS0+dGFyZ2V0X3R5
cGUgPSB0YXJnZXRfdHlwZTsKKyAgICByZXEtPnRhcmdldF9pZCA9IHRhcmdldF9pZDsKKyAgICBy
ZXEtPm5vdGlmeVR5cGUgPSBub3RpZnlfdHlwZTsKKyAgICByZXEtPm9ub2ZmID0gb25vZmY7Cisg
ICAgVW5sb2NrRGlzcGxheSAoZHB5KTsKKyAgICBTeW5jSGFuZGxlICgpOworCisgICAgcmV0dXJu
IFRydWU7Cit9CisKKworQm9vbCBYTlZDdHJsU2VsZWN0Tm90aWZ5ICgKKyAgICBEaXNwbGF5ICpk
cHksCisgICAgaW50IHNjcmVlbiwKKyAgICBpbnQgdHlwZSwKKyAgICBCb29sIG9ub2ZmCispewor
ICAgIFhFeHREaXNwbGF5SW5mbyAqaW5mbyA9IGZpbmRfZGlzcGxheSAoZHB5KTsKKyAgICB4bnZD
dHJsU2VsZWN0Tm90aWZ5UmVxICpyZXE7CisKKyAgICBpZighWGV4dEhhc0V4dGVuc2lvbiAoaW5m
bykpCisgICAgICAgIHJldHVybiBGYWxzZTsKKworICAgIFhOVkNUUkxDaGVja0V4dGVuc2lvbiAo
ZHB5LCBpbmZvLCBGYWxzZSk7CisKKyAgICBMb2NrRGlzcGxheSAoZHB5KTsKKyAgICBHZXRSZXEg
KG52Q3RybFNlbGVjdE5vdGlmeSwgcmVxKTsKKyAgICByZXEtPnJlcVR5cGUgPSBpbmZvLT5jb2Rl
cy0+bWFqb3Jfb3Bjb2RlOworICAgIHJlcS0+bnZSZXFUeXBlID0gWF9udkN0cmxTZWxlY3ROb3Rp
Znk7CisgICAgcmVxLT5zY3JlZW4gPSBzY3JlZW47CisgICAgcmVxLT5ub3RpZnlUeXBlID0gdHlw
ZTsKKyAgICByZXEtPm9ub2ZmID0gb25vZmY7CisgICAgVW5sb2NrRGlzcGxheSAoZHB5KTsKKyAg
ICBTeW5jSGFuZGxlICgpOworCisgICAgcmV0dXJuIFRydWU7Cit9CisKK0Jvb2wgWE5WQ1RSTFF1
ZXJ5VGFyZ2V0QmluYXJ5RGF0YSAoCisgICAgRGlzcGxheSAqZHB5LAorICAgIGludCB0YXJnZXRf
dHlwZSwKKyAgICBpbnQgdGFyZ2V0X2lkLAorICAgIHVuc2lnbmVkIGludCBkaXNwbGF5X21hc2ss
CisgICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKKyAgICB1bnNpZ25lZCBjaGFyICoqcHRyLAor
ICAgIGludCAqbGVuCispeworICAgIFhFeHREaXNwbGF5SW5mbyAqaW5mbyA9IGZpbmRfZGlzcGxh
eSAoZHB5KTsKKyAgICB4bnZDdHJsUXVlcnlCaW5hcnlEYXRhUmVwbHkgcmVwOworICAgIHhudkN0
cmxRdWVyeUJpbmFyeURhdGFSZXEgICAqcmVxOworICAgIEJvb2wgZXhpc3RzOworICAgIGludCBs
ZW5ndGgsIG51bWJ5dGVzLCBzbG9wOworCisgICAgaWYgKCFwdHIpIHJldHVybiBGYWxzZTsKKwor
ICAgIGlmKCFYZXh0SGFzRXh0ZW5zaW9uKGluZm8pKQorICAgICAgICByZXR1cm4gRmFsc2U7CisK
KyAgICBYTlZDVFJMQ2hlY2tFeHRlbnNpb24gKGRweSwgaW5mbywgRmFsc2UpOworICAgIFhOVkNU
UkxDaGVja1RhcmdldERhdGEoZHB5LCBpbmZvLCAmdGFyZ2V0X3R5cGUsICZ0YXJnZXRfaWQpOwor
CisgICAgTG9ja0Rpc3BsYXkgKGRweSk7CisgICAgR2V0UmVxIChudkN0cmxRdWVyeUJpbmFyeURh
dGEsIHJlcSk7CisgICAgcmVxLT5yZXFUeXBlID0gaW5mby0+Y29kZXMtPm1ham9yX29wY29kZTsK
KyAgICByZXEtPm52UmVxVHlwZSA9IFhfbnZDdHJsUXVlcnlCaW5hcnlEYXRhOworICAgIHJlcS0+
dGFyZ2V0X3R5cGUgPSB0YXJnZXRfdHlwZTsKKyAgICByZXEtPnRhcmdldF9pZCA9IHRhcmdldF9p
ZDsKKyAgICByZXEtPmRpc3BsYXlfbWFzayA9IGRpc3BsYXlfbWFzazsKKyAgICByZXEtPmF0dHJp
YnV0ZSA9IGF0dHJpYnV0ZTsKKyAgICBpZiAoIV9YUmVwbHkgKGRweSwgKHhSZXBseSAqKSAmcmVw
LCAwLCBGYWxzZSkpIHsKKyAgICAgICAgVW5sb2NrRGlzcGxheSAoZHB5KTsKKyAgICAgICAgU3lu
Y0hhbmRsZSAoKTsKKyAgICAgICAgcmV0dXJuIEZhbHNlOworICAgIH0KKyAgICBsZW5ndGggPSBy
ZXAubGVuZ3RoOworICAgIG51bWJ5dGVzID0gcmVwLm47CisgICAgc2xvcCA9IG51bWJ5dGVzICYg
MzsKKyAgICBleGlzdHMgPSByZXAuZmxhZ3M7CisgICAgaWYgKGV4aXN0cykgeworICAgICAgICAq
cHRyID0gKHVuc2lnbmVkIGNoYXIgKikgWG1hbGxvYyhudW1ieXRlcyk7CisgICAgfQorICAgIGlm
ICghZXhpc3RzIHx8ICEqcHRyKSB7CisgICAgICAgIF9YRWF0RGF0YShkcHksIGxlbmd0aCk7Cisg
ICAgICAgIFVubG9ja0Rpc3BsYXkgKGRweSk7CisgICAgICAgIFN5bmNIYW5kbGUgKCk7CisgICAg
ICAgIHJldHVybiBGYWxzZTsKKyAgICB9IGVsc2UgeworICAgICAgICBfWFJlYWQoZHB5LCAoY2hh
ciAqKSAqcHRyLCBudW1ieXRlcyk7CisgICAgICAgIGlmIChzbG9wKSBfWEVhdERhdGEoZHB5LCA0
LXNsb3ApOworICAgIH0KKyAgICBpZiAobGVuKSAqbGVuID0gbnVtYnl0ZXM7CisgICAgVW5sb2Nr
RGlzcGxheSAoZHB5KTsKKyAgICBTeW5jSGFuZGxlICgpOworICAgIHJldHVybiBleGlzdHM7Cit9
CisKK0Jvb2wgWE5WQ1RSTFF1ZXJ5QmluYXJ5RGF0YSAoCisgICAgRGlzcGxheSAqZHB5LAorICAg
IGludCBzY3JlZW4sCisgICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywKKyAgICB1bnNpZ25l
ZCBpbnQgYXR0cmlidXRlLAorICAgIHVuc2lnbmVkIGNoYXIgKipwdHIsCisgICAgaW50ICpsZW4K
Kyl7CisgICAgcmV0dXJuIFhOVkNUUkxRdWVyeVRhcmdldEJpbmFyeURhdGEoZHB5LCBOVl9DVFJM
X1RBUkdFVF9UWVBFX1hfU0NSRUVOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNjcmVlbiwgZGlzcGxheV9tYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGF0dHJpYnV0ZSwgcHRyLCBsZW4pOworfQorCitCb29sIFhOVkNUUkxTdHJp
bmdPcGVyYXRpb24gKAorICAgIERpc3BsYXkgKmRweSwKKyAgICBpbnQgdGFyZ2V0X3R5cGUsCisg
ICAgaW50IHRhcmdldF9pZCwKKyAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrLAorICAgIHVu
c2lnbmVkIGludCBhdHRyaWJ1dGUsCisgICAgY2hhciAqcEluLAorICAgIGNoYXIgKipwcE91dAor
KSB7CisgICAgWEV4dERpc3BsYXlJbmZvICppbmZvID0gZmluZF9kaXNwbGF5KGRweSk7CisgICAg
eG52Q3RybFN0cmluZ09wZXJhdGlvblJlcSAqcmVxOworICAgIHhudkN0cmxTdHJpbmdPcGVyYXRp
b25SZXBseSByZXA7CisgICAgQm9vbCByZXQ7CisgICAgaW50IGluU2l6ZSwgb3V0U2l6ZSwgbGVu
Z3RoLCBzbG9wOworCisgICAgaWYgKCFYZXh0SGFzRXh0ZW5zaW9uKGluZm8pKQorICAgICAgICBy
ZXR1cm4gRmFsc2U7CisgICAgCisgICAgaWYgKCFwcE91dCkKKyAgICAgICAgcmV0dXJuIEZhbHNl
OworCisgICAgKnBwT3V0ID0gTlVMTDsKKyAgICAKKyAgICBYTlZDVFJMQ2hlY2tFeHRlbnNpb24o
ZHB5LCBpbmZvLCBGYWxzZSk7CisgICAgWE5WQ1RSTENoZWNrVGFyZ2V0RGF0YShkcHksIGluZm8s
ICZ0YXJnZXRfdHlwZSwgJnRhcmdldF9pZCk7CisgICAgCisgICAgaWYgKHBJbikgeworICAgICAg
ICBpblNpemUgPSBzdHJsZW4ocEluKSArIDE7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaW5TaXpl
ID0gMDsKKyAgICB9CisgICAgCisgICAgTG9ja0Rpc3BsYXkoZHB5KTsKKyAgICBHZXRSZXEobnZD
dHJsU3RyaW5nT3BlcmF0aW9uLCByZXEpOworICAgIAorICAgIHJlcS0+cmVxVHlwZSA9IGluZm8t
PmNvZGVzLT5tYWpvcl9vcGNvZGU7CisgICAgcmVxLT5udlJlcVR5cGUgPSBYX252Q3RybFN0cmlu
Z09wZXJhdGlvbjsKKyAgICByZXEtPnRhcmdldF90eXBlID0gdGFyZ2V0X3R5cGU7CisgICAgcmVx
LT50YXJnZXRfaWQgPSB0YXJnZXRfaWQ7CisgICAgcmVxLT5kaXNwbGF5X21hc2sgPSBkaXNwbGF5
X21hc2s7CisgICAgcmVxLT5hdHRyaWJ1dGUgPSBhdHRyaWJ1dGU7CisKKyAgICByZXEtPmxlbmd0
aCArPSAoKGluU2l6ZSArIDMpICYgfjMpID4+IDI7CisgICAgcmVxLT5udW1fYnl0ZXMgPSBpblNp
emU7CisgICAgCisgICAgaWYgKHBJbikgeworICAgICAgICBEYXRhKGRweSwgcEluLCBpblNpemUp
OworICAgIH0KKyAgICAKKyAgICBpZiAoIV9YUmVwbHkgKGRweSwgKHhSZXBseSAqKSAmcmVwLCAw
LCBGYWxzZSkpIHsKKyAgICAgICAgVW5sb2NrRGlzcGxheShkcHkpOworICAgICAgICBTeW5jSGFu
ZGxlKCk7CisgICAgICAgIHJldHVybiBGYWxzZTsKKyAgICB9CisgICAgCisgICAgbGVuZ3RoID0g
cmVwLmxlbmd0aDsKKyAgICBvdXRTaXplID0gcmVwLm51bV9ieXRlczsKKyAgICBzbG9wID0gb3V0
U2l6ZSAmIDM7CisKKyAgICBpZiAob3V0U2l6ZSkgKnBwT3V0ID0gKGNoYXIgKikgWG1hbGxvYyhv
dXRTaXplKTsKKyAgICAKKyAgICBpZiAoISpwcE91dCkgeworICAgICAgICBfWEVhdERhdGEoZHB5
LCBsZW5ndGgpOworICAgIH0gZWxzZSB7CisgICAgICAgIF9YUmVhZChkcHksIChjaGFyICopICpw
cE91dCwgb3V0U2l6ZSk7CisgICAgICAgIGlmIChzbG9wKSBfWEVhdERhdGEoZHB5LCA0LXNsb3Ap
OworICAgIH0KKyAgICAKKyAgICByZXQgPSByZXAucmV0OworICAgIAorICAgIFVubG9ja0Rpc3Bs
YXkoZHB5KTsKKyAgICBTeW5jSGFuZGxlKCk7CisgICAgCisgICAgcmV0dXJuIHJldDsKK30KKwor
CitzdGF0aWMgQm9vbCB3aXJlX3RvX2V2ZW50IChEaXNwbGF5ICpkcHksIFhFdmVudCAqaG9zdCwg
eEV2ZW50ICp3aXJlKQoreworICAgIFhFeHREaXNwbGF5SW5mbyAqaW5mbyA9IGZpbmRfZGlzcGxh
eSAoZHB5KTsKKyAgICBYTlZDdHJsRXZlbnQgKnJlOworICAgIHhudmN0cmxFdmVudCAqZXZlbnQ7
CisgICAgWE5WQ3RybEV2ZW50VGFyZ2V0ICpyZVRhcmdldDsKKyAgICB4bnZjdHJsRXZlbnRUYXJn
ZXQgKmV2ZW50VGFyZ2V0OworICAgIFhOVkN0cmxFdmVudFRhcmdldEF2YWlsYWJpbGl0eSAqcmVU
YXJnZXRBdmFpbGFiaWxpdHk7CisgICAgWE5WQ3RybFN0cmluZ0V2ZW50VGFyZ2V0ICpyZVRhcmdl
dFN0cmluZzsKKyAgICBYTlZDdHJsQmluYXJ5RXZlbnRUYXJnZXQgKnJlVGFyZ2V0QmluYXJ5Owor
CisgICAgWE5WQ1RSTENoZWNrRXh0ZW5zaW9uIChkcHksIGluZm8sIEZhbHNlKTsKKyAgICAKKyAg
ICBzd2l0Y2ggKCh3aXJlLT51LnUudHlwZSAmIDB4N0YpIC0gaW5mby0+Y29kZXMtPmZpcnN0X2V2
ZW50KSB7CisgICAgY2FzZSBBVFRSSUJVVEVfQ0hBTkdFRF9FVkVOVDoKKyAgICAgICAgcmUgPSAo
WE5WQ3RybEV2ZW50ICopIGhvc3Q7CisgICAgICAgIGV2ZW50ID0gKHhudmN0cmxFdmVudCAqKSB3
aXJlOworICAgICAgICByZS0+YXR0cmlidXRlX2NoYW5nZWQudHlwZSA9IGV2ZW50LT51LnUudHlw
ZSAmIDB4N0Y7CisgICAgICAgIHJlLT5hdHRyaWJ1dGVfY2hhbmdlZC5zZXJpYWwgPQorICAgICAg
ICAgICAgX1hTZXRMYXN0UmVxdWVzdFJlYWQoZHB5LCAoeEdlbmVyaWNSZXBseSopIGV2ZW50KTsK
KyAgICAgICAgcmUtPmF0dHJpYnV0ZV9jaGFuZ2VkLnNlbmRfZXZlbnQgPSAoKGV2ZW50LT51LnUu
dHlwZSAmIDB4ODApICE9IDApOworICAgICAgICByZS0+YXR0cmlidXRlX2NoYW5nZWQuZGlzcGxh
eSA9IGRweTsKKyAgICAgICAgcmUtPmF0dHJpYnV0ZV9jaGFuZ2VkLnRpbWUgPSBldmVudC0+dS5h
dHRyaWJ1dGVfY2hhbmdlZC50aW1lOworICAgICAgICByZS0+YXR0cmlidXRlX2NoYW5nZWQuc2Ny
ZWVuID0gZXZlbnQtPnUuYXR0cmlidXRlX2NoYW5nZWQuc2NyZWVuOworICAgICAgICByZS0+YXR0
cmlidXRlX2NoYW5nZWQuZGlzcGxheV9tYXNrID0KKyAgICAgICAgICAgIGV2ZW50LT51LmF0dHJp
YnV0ZV9jaGFuZ2VkLmRpc3BsYXlfbWFzazsKKyAgICAgICAgcmUtPmF0dHJpYnV0ZV9jaGFuZ2Vk
LmF0dHJpYnV0ZSA9IGV2ZW50LT51LmF0dHJpYnV0ZV9jaGFuZ2VkLmF0dHJpYnV0ZTsKKyAgICAg
ICAgcmUtPmF0dHJpYnV0ZV9jaGFuZ2VkLnZhbHVlID0gZXZlbnQtPnUuYXR0cmlidXRlX2NoYW5n
ZWQudmFsdWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVEFSR0VUX0FUVFJJQlVURV9DSEFO
R0VEX0VWRU5UOgorICAgICAgICByZVRhcmdldCA9IChYTlZDdHJsRXZlbnRUYXJnZXQgKikgaG9z
dDsKKyAgICAgICAgZXZlbnRUYXJnZXQgPSAoeG52Y3RybEV2ZW50VGFyZ2V0ICopIHdpcmU7Cisg
ICAgICAgIHJlVGFyZ2V0LT5hdHRyaWJ1dGVfY2hhbmdlZC50eXBlID0gZXZlbnRUYXJnZXQtPnUu
dS50eXBlICYgMHg3RjsKKyAgICAgICAgcmVUYXJnZXQtPmF0dHJpYnV0ZV9jaGFuZ2VkLnNlcmlh
bCA9CisgICAgICAgICAgICBfWFNldExhc3RSZXF1ZXN0UmVhZChkcHksICh4R2VuZXJpY1JlcGx5
KikgZXZlbnRUYXJnZXQpOworICAgICAgICByZVRhcmdldC0+YXR0cmlidXRlX2NoYW5nZWQuc2Vu
ZF9ldmVudCA9CisgICAgICAgICAgICAoKGV2ZW50VGFyZ2V0LT51LnUudHlwZSAmIDB4ODApICE9
IDApOworICAgICAgICByZVRhcmdldC0+YXR0cmlidXRlX2NoYW5nZWQuZGlzcGxheSA9IGRweTsK
KyAgICAgICAgcmVUYXJnZXQtPmF0dHJpYnV0ZV9jaGFuZ2VkLnRpbWUgPQorICAgICAgICAgICAg
ZXZlbnRUYXJnZXQtPnUuYXR0cmlidXRlX2NoYW5nZWQudGltZTsKKyAgICAgICAgcmVUYXJnZXQt
PmF0dHJpYnV0ZV9jaGFuZ2VkLnRhcmdldF90eXBlID0KKyAgICAgICAgICAgIGV2ZW50VGFyZ2V0
LT51LmF0dHJpYnV0ZV9jaGFuZ2VkLnRhcmdldF90eXBlOworICAgICAgICByZVRhcmdldC0+YXR0
cmlidXRlX2NoYW5nZWQudGFyZ2V0X2lkID0KKyAgICAgICAgICAgIGV2ZW50VGFyZ2V0LT51LmF0
dHJpYnV0ZV9jaGFuZ2VkLnRhcmdldF9pZDsKKyAgICAgICAgcmVUYXJnZXQtPmF0dHJpYnV0ZV9j
aGFuZ2VkLmRpc3BsYXlfbWFzayA9CisgICAgICAgICAgICBldmVudFRhcmdldC0+dS5hdHRyaWJ1
dGVfY2hhbmdlZC5kaXNwbGF5X21hc2s7CisgICAgICAgIHJlVGFyZ2V0LT5hdHRyaWJ1dGVfY2hh
bmdlZC5hdHRyaWJ1dGUgPQorICAgICAgICAgICAgZXZlbnRUYXJnZXQtPnUuYXR0cmlidXRlX2No
YW5nZWQuYXR0cmlidXRlOworICAgICAgICByZVRhcmdldC0+YXR0cmlidXRlX2NoYW5nZWQudmFs
dWUgPQorICAgICAgICAgICAgZXZlbnRUYXJnZXQtPnUuYXR0cmlidXRlX2NoYW5nZWQudmFsdWU7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVEFSR0VUX0FUVFJJQlVURV9BVkFJTEFCSUxJVFlf
Q0hBTkdFRF9FVkVOVDoKKyAgICAgICAgcmVUYXJnZXRBdmFpbGFiaWxpdHkgPSAoWE5WQ3RybEV2
ZW50VGFyZ2V0QXZhaWxhYmlsaXR5ICopIGhvc3Q7CisgICAgICAgIGV2ZW50VGFyZ2V0ID0gKHhu
dmN0cmxFdmVudFRhcmdldCAqKSB3aXJlOworICAgICAgICByZVRhcmdldEF2YWlsYWJpbGl0eS0+
YXR0cmlidXRlX2NoYW5nZWQudHlwZSA9CisgICAgICAgICAgICBldmVudFRhcmdldC0+dS51LnR5
cGUgJiAweDdGOworICAgICAgICByZVRhcmdldEF2YWlsYWJpbGl0eS0+YXR0cmlidXRlX2NoYW5n
ZWQuc2VyaWFsID0KKyAgICAgICAgICAgIF9YU2V0TGFzdFJlcXVlc3RSZWFkKGRweSwgKHhHZW5l
cmljUmVwbHkqKSBldmVudFRhcmdldCk7CisgICAgICAgIHJlVGFyZ2V0QXZhaWxhYmlsaXR5LT5h
dHRyaWJ1dGVfY2hhbmdlZC5zZW5kX2V2ZW50ID0KKyAgICAgICAgICAgICgoZXZlbnRUYXJnZXQt
PnUudS50eXBlICYgMHg4MCkgIT0gMCk7CisgICAgICAgIHJlVGFyZ2V0QXZhaWxhYmlsaXR5LT5h
dHRyaWJ1dGVfY2hhbmdlZC5kaXNwbGF5ID0gZHB5OworICAgICAgICByZVRhcmdldEF2YWlsYWJp
bGl0eS0+YXR0cmlidXRlX2NoYW5nZWQudGltZSA9CisgICAgICAgICAgICBldmVudFRhcmdldC0+
dS5hdmFpbGFiaWxpdHlfY2hhbmdlZC50aW1lOworICAgICAgICByZVRhcmdldEF2YWlsYWJpbGl0
eS0+YXR0cmlidXRlX2NoYW5nZWQudGFyZ2V0X3R5cGUgPQorICAgICAgICAgICAgZXZlbnRUYXJn
ZXQtPnUuYXZhaWxhYmlsaXR5X2NoYW5nZWQudGFyZ2V0X3R5cGU7CisgICAgICAgIHJlVGFyZ2V0
QXZhaWxhYmlsaXR5LT5hdHRyaWJ1dGVfY2hhbmdlZC50YXJnZXRfaWQgPQorICAgICAgICAgICAg
ZXZlbnRUYXJnZXQtPnUuYXZhaWxhYmlsaXR5X2NoYW5nZWQudGFyZ2V0X2lkOworICAgICAgICBy
ZVRhcmdldEF2YWlsYWJpbGl0eS0+YXR0cmlidXRlX2NoYW5nZWQuZGlzcGxheV9tYXNrID0KKyAg
ICAgICAgICAgIGV2ZW50VGFyZ2V0LT51LmF2YWlsYWJpbGl0eV9jaGFuZ2VkLmRpc3BsYXlfbWFz
azsKKyAgICAgICAgcmVUYXJnZXRBdmFpbGFiaWxpdHktPmF0dHJpYnV0ZV9jaGFuZ2VkLmF0dHJp
YnV0ZSA9CisgICAgICAgICAgICBldmVudFRhcmdldC0+dS5hdmFpbGFiaWxpdHlfY2hhbmdlZC5h
dHRyaWJ1dGU7CisgICAgICAgIHJlVGFyZ2V0QXZhaWxhYmlsaXR5LT5hdHRyaWJ1dGVfY2hhbmdl
ZC5hdmFpbGFiaWxpdHkgPQorICAgICAgICAgICAgZXZlbnRUYXJnZXQtPnUuYXZhaWxhYmlsaXR5
X2NoYW5nZWQuYXZhaWxhYmlsaXR5OworICAgICAgICByZVRhcmdldEF2YWlsYWJpbGl0eS0+YXR0
cmlidXRlX2NoYW5nZWQudmFsdWUgPQorICAgICAgICAgICAgZXZlbnRUYXJnZXQtPnUuYXZhaWxh
YmlsaXR5X2NoYW5nZWQudmFsdWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVEFSR0VUX1NU
UklOR19BVFRSSUJVVEVfQ0hBTkdFRF9FVkVOVDoKKyAgICAgICAgcmVUYXJnZXRTdHJpbmcgPSAo
WE5WQ3RybFN0cmluZ0V2ZW50VGFyZ2V0ICopIGhvc3Q7CisgICAgICAgIGV2ZW50VGFyZ2V0ID0g
KHhudmN0cmxFdmVudFRhcmdldCAqKSB3aXJlOworICAgICAgICByZVRhcmdldFN0cmluZy0+YXR0
cmlidXRlX2NoYW5nZWQudHlwZSA9IGV2ZW50VGFyZ2V0LT51LnUudHlwZSAmIDB4N0Y7CisgICAg
ICAgIHJlVGFyZ2V0U3RyaW5nLT5hdHRyaWJ1dGVfY2hhbmdlZC5zZXJpYWwgPQorICAgICAgICAg
ICAgX1hTZXRMYXN0UmVxdWVzdFJlYWQoZHB5LCAoeEdlbmVyaWNSZXBseSopIGV2ZW50VGFyZ2V0
KTsKKyAgICAgICAgcmVUYXJnZXRTdHJpbmctPmF0dHJpYnV0ZV9jaGFuZ2VkLnNlbmRfZXZlbnQg
PQorICAgICAgICAgICAgKChldmVudFRhcmdldC0+dS51LnR5cGUgJiAweDgwKSAhPSAwKTsKKyAg
ICAgICAgcmVUYXJnZXRTdHJpbmctPmF0dHJpYnV0ZV9jaGFuZ2VkLmRpc3BsYXkgPSBkcHk7Cisg
ICAgICAgIHJlVGFyZ2V0U3RyaW5nLT5hdHRyaWJ1dGVfY2hhbmdlZC50aW1lID0KKyAgICAgICAg
ICAgIGV2ZW50VGFyZ2V0LT51LmF0dHJpYnV0ZV9jaGFuZ2VkLnRpbWU7CisgICAgICAgIHJlVGFy
Z2V0U3RyaW5nLT5hdHRyaWJ1dGVfY2hhbmdlZC50YXJnZXRfdHlwZSA9CisgICAgICAgICAgICBl
dmVudFRhcmdldC0+dS5hdHRyaWJ1dGVfY2hhbmdlZC50YXJnZXRfdHlwZTsKKyAgICAgICAgcmVU
YXJnZXRTdHJpbmctPmF0dHJpYnV0ZV9jaGFuZ2VkLnRhcmdldF9pZCA9CisgICAgICAgICAgICBl
dmVudFRhcmdldC0+dS5hdHRyaWJ1dGVfY2hhbmdlZC50YXJnZXRfaWQ7CisgICAgICAgIHJlVGFy
Z2V0U3RyaW5nLT5hdHRyaWJ1dGVfY2hhbmdlZC5kaXNwbGF5X21hc2sgPQorICAgICAgICAgICAg
ZXZlbnRUYXJnZXQtPnUuYXR0cmlidXRlX2NoYW5nZWQuZGlzcGxheV9tYXNrOworICAgICAgICBy
ZVRhcmdldFN0cmluZy0+YXR0cmlidXRlX2NoYW5nZWQuYXR0cmlidXRlID0KKyAgICAgICAgICAg
IGV2ZW50VGFyZ2V0LT51LmF0dHJpYnV0ZV9jaGFuZ2VkLmF0dHJpYnV0ZTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBUQVJHRVRfQklOQVJZX0FUVFJJQlVURV9DSEFOR0VEX0VWRU5UOgorICAg
ICAgICByZVRhcmdldEJpbmFyeSA9IChYTlZDdHJsQmluYXJ5RXZlbnRUYXJnZXQgKikgaG9zdDsK
KyAgICAgICAgZXZlbnRUYXJnZXQgPSAoeG52Y3RybEV2ZW50VGFyZ2V0ICopIHdpcmU7CisgICAg
ICAgIHJlVGFyZ2V0QmluYXJ5LT5hdHRyaWJ1dGVfY2hhbmdlZC50eXBlID0gZXZlbnRUYXJnZXQt
PnUudS50eXBlICYgMHg3RjsKKyAgICAgICAgcmVUYXJnZXRCaW5hcnktPmF0dHJpYnV0ZV9jaGFu
Z2VkLnNlcmlhbCA9CisgICAgICAgICAgICBfWFNldExhc3RSZXF1ZXN0UmVhZChkcHksICh4R2Vu
ZXJpY1JlcGx5KikgZXZlbnRUYXJnZXQpOworICAgICAgICByZVRhcmdldEJpbmFyeS0+YXR0cmli
dXRlX2NoYW5nZWQuc2VuZF9ldmVudCA9CisgICAgICAgICAgICAoKGV2ZW50VGFyZ2V0LT51LnUu
dHlwZSAmIDB4ODApICE9IDApOworICAgICAgICByZVRhcmdldEJpbmFyeS0+YXR0cmlidXRlX2No
YW5nZWQuZGlzcGxheSA9IGRweTsKKyAgICAgICAgcmVUYXJnZXRCaW5hcnktPmF0dHJpYnV0ZV9j
aGFuZ2VkLnRpbWUgPQorICAgICAgICAgICAgZXZlbnRUYXJnZXQtPnUuYXR0cmlidXRlX2NoYW5n
ZWQudGltZTsKKyAgICAgICAgcmVUYXJnZXRCaW5hcnktPmF0dHJpYnV0ZV9jaGFuZ2VkLnRhcmdl
dF90eXBlID0KKyAgICAgICAgICAgIGV2ZW50VGFyZ2V0LT51LmF0dHJpYnV0ZV9jaGFuZ2VkLnRh
cmdldF90eXBlOworICAgICAgICByZVRhcmdldEJpbmFyeS0+YXR0cmlidXRlX2NoYW5nZWQudGFy
Z2V0X2lkID0KKyAgICAgICAgICAgIGV2ZW50VGFyZ2V0LT51LmF0dHJpYnV0ZV9jaGFuZ2VkLnRh
cmdldF9pZDsKKyAgICAgICAgcmVUYXJnZXRCaW5hcnktPmF0dHJpYnV0ZV9jaGFuZ2VkLmRpc3Bs
YXlfbWFzayA9CisgICAgICAgICAgICBldmVudFRhcmdldC0+dS5hdHRyaWJ1dGVfY2hhbmdlZC5k
aXNwbGF5X21hc2s7CisgICAgICAgIHJlVGFyZ2V0QmluYXJ5LT5hdHRyaWJ1dGVfY2hhbmdlZC5h
dHRyaWJ1dGUgPQorICAgICAgICAgICAgZXZlbnRUYXJnZXQtPnUuYXR0cmlidXRlX2NoYW5nZWQu
YXR0cmlidXRlOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBGYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gVHJ1ZTsKK30KKwpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0cmwvTlZDdHJsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0
cmwvTlZDdHJsLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3RoaXJkX3BhcnR5L2xpYlhOVkN0cmwvTlZDdHJsLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw0MzY1IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEwIE5WSURJQSwgQ29ycG9yYXRpb24K
KyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g
YW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv
Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAorICog
aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp
bWl0YXRpb24gdGhlIHJpZ2h0cworICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs
aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRo
ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlz
CisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np
b24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5j
bHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNv
ZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VU
IFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcg
QlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAq
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUg
TElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5H
IEZST00sCisgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU
SEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQorICogU09GVFdBUkUuCisgKi8KKworI2lm
bmRlZiBfX05WQ1RSTF9ICisjZGVmaW5lIF9fTlZDVFJMX0gKKworI2luY2x1ZGUgPHN0ZGludC5o
PgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBBdHRyaWJ1dGUgVGFyZ2V0cworICoK
KyAqIFRhcmdldHMgZGVmaW5lIGF0dHJpYnV0ZSBncm91cHMuICBGb3IgZXhhbXBsZSwgc29tZSBh
dHRyaWJ1dGVzIGFyZSBvbmx5CisgKiB2YWxpZCB0byBzZXQgb24gYSBHUFUsIG90aGVycyBhcmUg
b25seSB2YWxpZCB3aGVuIHRhbGtpbmcgYWJvdXQgYW4KKyAqIFggU2NyZWVuLiAgVGFyZ2V0IHR5
cGVzIGFyZSB0aGVuIHdoYXQgaXMgdXNlZCB0byBpZGVudGlmeSB0aGUgdGFyZ2V0CisgKiBncm91
cCBvZiB0aGUgYXR0cmlidXRlIHlvdSB3aXNoIHRvIHNldC9xdWVyeS4KKyAqCisgKiBIZXJlIGFy
ZSB0aGUgc3VwcG9ydGVkIHRhcmdldCB0eXBlczoKKyAqLworCisjZGVmaW5lIE5WX0NUUkxfVEFS
R0VUX1RZUEVfWF9TQ1JFRU4gMAorI2RlZmluZSBOVl9DVFJMX1RBUkdFVF9UWVBFX0dQVSAxCisj
ZGVmaW5lIE5WX0NUUkxfVEFSR0VUX1RZUEVfRlJBTUVMT0NLIDIKKyNkZWZpbmUgTlZfQ1RSTF9U
QVJHRVRfVFlQRV9WQ1NDIDMgLyogVmlzdWFsIENvbXB1dGluZyBTeXN0ZW0gKi8KKyNkZWZpbmUg
TlZfQ1RSTF9UQVJHRVRfVFlQRV9HVkkgNAorI2RlZmluZSBOVl9DVFJMX1RBUkdFVF9UWVBFX0NP
T0xFUiA1IC8qIGUuZy4sIGZhbiAqLworI2RlZmluZSBOVl9DVFJMX1RBUkdFVF9UWVBFX1RIRVJN
QUxfU0VOU09SIDYKKyNkZWZpbmUgTlZfQ1RSTF9UQVJHRVRfVFlQRV8zRF9WSVNJT05fUFJPX1RS
QU5TQ0VJVkVSIDcKKyNkZWZpbmUgTlZfQ1RSTF9UQVJHRVRfVFlQRV9ESVNQTEFZIDgKKworLyoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqLworCisvKgorICogQXR0cmlidXRlcworICoKKyAqIFNvbWUgYXR0cmli
dXRlcyBtYXkgb25seSBiZSByZWFkOyBzb21lIG1heSByZXF1aXJlIGEgZGlzcGxheV9tYXNrCisg
KiBhcmd1bWVudCBhbmQgb3RoZXJzIG1heSBiZSB2YWxpZCBvbmx5IGZvciBzcGVjaWZpYyB0YXJn
ZXQgdHlwZXMuCisgKiBUaGlzIGluZm9ybWF0aW9uIGlzIGVuY29kZWQgaW4gdGhlICJwZXJtaXNz
aW9uIiBjb21tZW50IGFmdGVyIGVhY2gKKyAqIGF0dHJpYnV0ZSAjZGVmaW5lLCBhbmQgY2FuIGJl
IHF1ZXJpZWQgYXQgcnVuIHRpbWUgd2l0aAorICogWE5WQ1RSTFF1ZXJ5VmFsaWRBdHRyaWJ1dGVW
YWx1ZXMoKSBhbmQvb3IKKyAqIFhOVkNUUkxRdWVyeVZhbGlkVGFyZ2V0QXR0cmlidXRlVmFsdWVz
KCkKKyAqCisgKiBLZXkgdG8gSW50ZWdlciBBdHRyaWJ1dGUgIlBlcm1pc3Npb25zIjoKKyAqCisg
KiBSOiBUaGUgYXR0cmlidXRlIGlzIHJlYWRhYmxlIChpbiBnZW5lcmFsLCBhbGwgYXR0cmlidXRl
cyB3aWxsIGJlCisgKiAgICByZWFkYWJsZSkKKyAqCisgKiBXOiBUaGUgYXR0cmlidXRlIGlzIHdy
aXRhYmxlIChhdHRyaWJ1dGVzIG1heSBub3QgYmUgd3JpdGFibGUgZm9yCisgKiAgICB2YXJpb3Vz
IHJlYXNvbnM6IHRoZXkgcmVwcmVzZW50IHN0YXRpYyBzeXN0ZW0gaW5mb3JtYXRpb24sIHRoZXkK
KyAqICAgIGNhbiBvbmx5IGJlIGNoYW5nZWQgYnkgY2hhbmdpbmcgYW4gWEY4NkNvbmZpZyBvcHRp
b24sIGV0YykuCisgKgorICogRDogVGhlIGF0dHJpYnV0ZSByZXF1aXJlcyB0aGUgZGlzcGxheSBt
YXNrIGFyZ3VtZW50LiAgVGhlCisgKiAgICBhdHRyaWJ1dGVzIE5WX0NUUkxfQ09OTkVDVEVEX0RJ
U1BMQVlTIGFuZCBOVl9DVFJMX0VOQUJMRURfRElTUExBWVMKKyAqICAgIHdpbGwgYmUgYSBiaXRt
YXNrIG9mIHdoYXQgZGlzcGxheSBkZXZpY2VzIGFyZSBjb25uZWN0ZWQgYW5kIHdoYXQKKyAqICAg
IGRpc3BsYXkgZGV2aWNlcyBhcmUgZW5hYmxlZCBmb3IgdXNlIGluIFgsIHJlc3BlY3RpdmVseS4g
IEVhY2ggYml0CisgKiAgICBpbiB0aGUgYml0bWFzayByZXByZXNlbnRzIGEgZGlzcGxheSBkZXZp
Y2U7IGl0IGlzIHRoZXNlIGJpdHMgd2hpY2gKKyAqICAgIHNob3VsZCBiZSB1c2VkIGFzIHRoZSBk
aXNwbGF5X21hc2sgd2hlbiBkZWFsaW5nIHdpdGggYXR0cmlidXRlcworICogICAgZGVzaWduYXRl
ZCB3aXRoICJEIiBiZWxvdy4gIEZvciBhdHRyaWJ1dGVzIHRoYXQgZG8gbm90IHJlcXVpcmUgdGhl
CisgKiAgICBkaXNwbGF5IG1hc2ssIHRoZSBhcmd1bWVudCBpcyBpZ25vcmVkLgorICoKKyAqICAg
IEFsdGVybmF0aXZlbHksIE5WLUNPTlRST0wgdmVyc2lvbnMgMS4yNyBhbmQgZ3JlYXRlciBhbGxv
dyB0aGVzZQorICogICAgYXR0cmlidXRlcyB0byBiZSBhY2Nlc3NlZCB2aWEgZGlzcGxheSB0YXJn
ZXQgdHlwZXMsIGluIHdoaWNoIGNhc2UKKyAqICAgIHRoZSBkaXNwbGF5X21hc2sgaXMgaWdub3Jl
ZC4KKyAqCisgKiBHOiBUaGUgYXR0cmlidXRlIG1heSBiZSBxdWVyaWVkIHVzaW5nIGFuIE5WX0NU
UkxfVEFSR0VUX1RZUEVfR1BVCisgKiAgICB0YXJnZXQgdHlwZSB2aWEgWE5WQ1RSTFF1ZXJ5VGFy
Z2V0QXR0cmlidXRlKCkuCisgKgorICogRjogVGhlIGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB1
c2luZyBhbiBOVl9DVFJMX1RBUkdFVF9UWVBFX0ZSQU1FTE9DSworICogICAgdGFyZ2V0IHR5cGUg
dmlhIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpLgorICoKKyAqIFg6IFdoZW4gWGluZXJh
bWEgaXMgZW5hYmxlZCwgdGhpcyBhdHRyaWJ1dGUgaXMga2VwdCBjb25zaXN0ZW50IGFjcm9zcwor
ICogICAgYWxsIFBoeXNpY2FsIFggU2NyZWVuczsgIGFzc2lnbm1lbnQgb2YgdGhpcyBhdHRyaWJ1
dGUgd2lsbCBiZQorICogICAgYnJvYWRjYXN0IGJ5IHRoZSBOVklESUEgWCBEcml2ZXIgdG8gYWxs
IFggU2NyZWVucy4KKyAqCisgKiBWOiBUaGUgYXR0cmlidXRlIG1heSBiZSBxdWVyaWVkIHVzaW5n
IGFuIE5WX0NUUkxfVEFSR0VUX1RZUEVfVkNTQworICogICAgdGFyZ2V0IHR5cGUgdmlhIFhOVkNU
UkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpLgorICoKKyAqIEk6IFRoZSBhdHRyaWJ1dGUgbWF5IGJl
IHF1ZXJpZWQgdXNpbmcgYW4gTlZfQ1RSTF9UQVJHRVRfVFlQRV9HVkkgdGFyZ2V0IHR5cGUKKyAq
ICAgIHZpYSBYTlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUoKS4KKyAqCisgKiBROiBUaGUgYXR0
cmlidXRlIGlzIGEgNjQtYml0IGludGVnZXIgYXR0cmlidXRlOyAgdXNlIHRoZSA2NC1iaXQgdmVy
c2lvbnMKKyAqICAgIG9mIHRoZSBhcHByb3ByaWF0ZSBxdWVyeSBpbnRlcmZhY2VzLgorICoKKyAq
IEM6IFRoZSBhdHRyaWJ1dGUgbWF5IGJlIHF1ZXJpZWQgdXNpbmcgYW4gTlZfQ1RSTF9UQVJHRVRf
VFlQRV9DT09MRVIgdGFyZ2V0CisgKiAgICB0eXBlIHZpYSBYTlZDVFJMUXVlcnlUYXJnZXRBdHRy
aWJ1dGUoKS4KKyAqCisgKiBTOiBUaGUgYXR0cmlidXRlIG1heSBiZSBxdWVyaWVkIHVzaW5nIGFu
IE5WX0NUUkxfVEFSR0VUX1RZUEVfVEhFUk1BTF9TRU5TT1IKKyAqICAgIHRhcmdldCB0eXBlIHZp
YSBYTlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUoKS4KKyAqCisgKiBUOiBUaGUgYXR0cmlidXRl
IG1heSBiZSBxdWVyaWVkIHVzaW5nIGFuCisgKiAgICBOVl9DVFJMX1RBUkdFVF9UWVBFXzNEX1ZJ
U0lPTl9QUk9fVFJBTlNDRUlWRVIgdGFyZ2V0IHR5cGUKKyAqICAgIHZpYSBYTlZDVFJMUXVlcnlU
YXJnZXRBdHRyaWJ1dGUoKS4KKyAqCisgKiBOT1RFOiBVbmxlc3MgbWVudGlvbmVkIG90aGVyd2lz
ZSwgYWxsIGF0dHJpYnV0ZXMgbWF5IGJlIHF1ZXJpZWQgdXNpbmcKKyAqICAgICAgIGFuIE5WX0NU
UkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4gdGFyZ2V0IHR5cGUgdmlhCisgKiAgICAgICBYTlZDVFJM
UXVlcnlUYXJnZXRBdHRyaWJ1dGUoKS4KKyAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8q
CisgKiBJbnRlZ2VyIGF0dHJpYnV0ZXM6CisgKgorICogSW50ZWdlciBhdHRyaWJ1dGVzIGNhbiBi
ZSBxdWVyaWVkIHRocm91Z2ggdGhlIFhOVkNUUkxRdWVyeUF0dHJpYnV0ZSgpIGFuZAorICogWE5W
Q1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkgZnVuY3Rpb24gY2FsbHMuCisgKgorICogSW50ZWdl
ciBhdHRyaWJ1dGVzIGNhbiBiZSBzZXQgdGhyb3VnaCB0aGUgWE5WQ1RSTFNldEF0dHJpYnV0ZSgp
IGFuZAorICogWE5WQ1RSTFNldFRhcmdldEF0dHJpYnV0ZSgpIGZ1bmN0aW9uIGNhbGxzLgorICoK
KyAqIFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIGFsbCBpbnRlZ2VyIGF0dHJpYnV0ZXMgY2FuIGJl
IHF1ZXJpZWQvc2V0CisgKiB1c2luZyBhbiBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOIHRh
cmdldC4gIEF0dHJpYnV0ZXMgdGhhdCBjYW5ub3QKKyAqIHRha2UgYW4gTlZfQ1RSTF9UQVJHRVRf
VFlQRV9YX1NDUkVFTiBhbHNvIGNhbm5vdCBiZSBxdWVyaWVkL3NldCB0aHJvdWdoCisgKiBYTlZD
VFJMUXVlcnlBdHRyaWJ1dGUoKS9YTlZDVFJMU2V0QXR0cmlidXRlKCkgKFNpbmNlIHRoZXNlIGFz
c3VtZQorICogYW4gWCBTY3JlZW4gdGFyZ2V0KS4KKyAqLworCisvKgorICogTlZfQ1RSTF9GTEFU
UEFORUxfU0NBTElORyAtIG5vdCBzdXBwb3J0ZWQKKyAqLworCisjZGVmaW5lIE5WX0NUUkxfRkxB
VFBBTkVMX1NDQUxJTkcgMiAvKiBSV0RHICovCisjZGVmaW5lIE5WX0NUUkxfRkxBVFBBTkVMX1ND
QUxJTkdfREVGQVVMVCAwCisjZGVmaW5lIE5WX0NUUkxfRkxBVFBBTkVMX1NDQUxJTkdfTkFUSVZF
IDEKKyNkZWZpbmUgTlZfQ1RSTF9GTEFUUEFORUxfU0NBTElOR19TQ0FMRUQgMgorI2RlZmluZSBO
Vl9DVFJMX0ZMQVRQQU5FTF9TQ0FMSU5HX0NFTlRFUkVEIDMKKyNkZWZpbmUgTlZfQ1RSTF9GTEFU
UEFORUxfU0NBTElOR19BU1BFQ1RfU0NBTEVEIDQKKworLyoKKyAqIE5WX0NUUkxfRkxBVFBBTkVM
X0RJVEhFUklORyBpcyBkZXByZWNhdGVkOyBOVl9DVFJMX0RJVEhFUklORyBzaG91bGQKKyAqIGJl
IHVzZWQgaW5zdGVhZC4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfRkxBVFBBTkVMX0RJVEhFUklO
RyAzIC8qIFJXREcgKi8KKyNkZWZpbmUgTlZfQ1RSTF9GTEFUUEFORUxfRElUSEVSSU5HX0RFRkFV
TFQgMAorI2RlZmluZSBOVl9DVFJMX0ZMQVRQQU5FTF9ESVRIRVJJTkdfRU5BQkxFRCAxCisjZGVm
aW5lIE5WX0NUUkxfRkxBVFBBTkVMX0RJVEhFUklOR19ESVNBQkxFRCAyCisKKy8qCisgKiBOVl9D
VFJMX0RJVEhFUklORyAtIHRoZSByZXF1ZXN0ZWQgZGl0aGVyaW5nIGNvbmZpZ3VyYXRpb247Cisg
KiBwb3NzaWJsZSB2YWx1ZXMgYXJlOgorICoKKyAqIDA6IGF1dG8gICAgICh0aGUgZHJpdmVyIHdp
bGwgZGVjaWRlIHdoZW4gdG8gZGl0aGVyKQorICogMTogZW5hYmxlZCAgKHRoZSBkcml2ZXIgd2ls
bCBhbHdheXMgZGl0aGVyIHdoZW4gcG9zc2libGUpCisgKiAyOiBkaXNhYmxlZCAodGhlIGRyaXZl
ciB3aWxsIG5ldmVyIGRpdGhlcikKKyAqLworCisjZGVmaW5lIE5WX0NUUkxfRElUSEVSSU5HIDMg
LyogUldERyAqLworI2RlZmluZSBOVl9DVFJMX0RJVEhFUklOR19BVVRPIDAKKyNkZWZpbmUgTlZf
Q1RSTF9ESVRIRVJJTkdfRU5BQkxFRCAxCisjZGVmaW5lIE5WX0NUUkxfRElUSEVSSU5HX0RJU0FC
TEVEIDIKKworLyoKKyAqIE5WX0NUUkxfRElHSVRBTF9WSUJSQU5DRSAtIHNldHMgdGhlIGRpZ2l0
YWwgdmlicmFuY2UgbGV2ZWwgZm9yIHRoZQorICogc3BlY2lmaWVkIGRpc3BsYXkgZGV2aWNlLgor
ICovCisKKyNkZWZpbmUgTlZfQ1RSTF9ESUdJVEFMX1ZJQlJBTkNFIDQgLyogUldERyAqLworCisv
KgorICogTlZfQ1RSTF9CVVNfVFlQRSAtIHJldHVybnMgdGhlIGJ1cyB0eXBlIHRocm91Z2ggd2hp
Y2ggdGhlIHNwZWNpZmllZCBkZXZpY2UKKyAqIGlzIGNvbm5lY3RlZCB0byB0aGUgY29tcHV0ZXIu
CisgKiBXaGVuIHRoaXMgYXR0cmlidXRlIGlzIHF1ZXJpZWQgb24gYW4gWCBzY3JlZW4gdGFyZ2V0
LCB0aGUgYnVzIHR5cGUgb2YgdGhlCisgKiBHUFUgZHJpdmluZyB0aGUgWCBzY3JlZW4gaXMgcmV0
dXJuZWQuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0JVU19UWVBFIDUgLyogUi0tR0kgKi8KKyNk
ZWZpbmUgTlZfQ1RSTF9CVVNfVFlQRV9BR1AgMAorI2RlZmluZSBOVl9DVFJMX0JVU19UWVBFX1BD
SSAxCisjZGVmaW5lIE5WX0NUUkxfQlVTX1RZUEVfUENJX0VYUFJFU1MgMgorI2RlZmluZSBOVl9D
VFJMX0JVU19UWVBFX0lOVEVHUkFURUQgMworCisvKgorICogTlZfQ1RSTF9WSURFT19SQU0gLSBy
ZXR1cm5zIHRoZSB0b3RhbCBhbW91bnQgb2YgbWVtb3J5IGF2YWlsYWJsZQorICogdG8gdGhlIHNw
ZWNpZmllZCBHUFUgKG9yIHRoZSBHUFUgZHJpdmluZyB0aGUgc3BlY2lmaWVkIFgKKyAqIHNjcmVl
bikuICBOb3RlOiBpZiB0aGUgR1BVIHN1cHBvcnRzIFR1cmJvQ2FjaGUoVE0pLCB0aGUgdmFsdWUK
KyAqIHJlcG9ydGVkIG1heSBleGNlZWQgdGhlIGFtb3VudCBvZiB2aWRlbyBtZW1vcnkgaW5zdGFs
bGVkIG9uIHRoZQorICogR1BVLiAgVGhlIHZhbHVlIHJlcG9ydGVkIGZvciBpbnRlZ3JhdGVkIEdQ
VXMgbWF5IGxpa2V3aXNlIGV4Y2VlZAorICogdGhlIGFtb3VudCBvZiBkZWRpY2F0ZWQgc3lzdGVt
IG1lbW9yeSBzZXQgYXNpZGUgYnkgdGhlIHN5c3RlbQorICogQklPUyBmb3IgdXNlIGJ5IHRoZSBp
bnRlZ3JhdGVkIEdQVS4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfVklERU9fUkFNIDYgLyogUi0t
RyAqLworCisvKgorICogTlZfQ1RSTF9JUlEgLSByZXR1cm5zIHRoZSBpbnRlcnJ1cHQgcmVxdWVz
dCBsaW5lIHVzZWQgYnkgdGhlIHNwZWNpZmllZAorICogZGV2aWNlLgorICogV2hlbiB0aGlzIGF0
dHJpYnV0ZSBpcyBxdWVyaWVkIG9uIGFuIFggc2NyZWVuIHRhcmdldCwgdGhlIElSUSBvZiB0aGUg
R1BVCisgKiBkcml2aW5nIHRoZSBYIHNjcmVlbiBpcyByZXR1cm5lZC4KKyAqLworCisjZGVmaW5l
IE5WX0NUUkxfSVJRIDcgLyogUi0tR0kgKi8KKworLyoKKyAqIE5WX0NUUkxfT1BFUkFUSU5HX1NZ
U1RFTSAtIHJldHVybnMgdGhlIG9wZXJhdGluZyBzeXN0ZW0gb24gd2hpY2gKKyAqIHRoZSBYIHNl
cnZlciBpcyBydW5uaW5nLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9PUEVSQVRJTkdfU1lTVEVN
IDggLyogUi0tRyAqLworI2RlZmluZSBOVl9DVFJMX09QRVJBVElOR19TWVNURU1fTElOVVggMAor
I2RlZmluZSBOVl9DVFJMX09QRVJBVElOR19TWVNURU1fRlJFRUJTRCAxCisjZGVmaW5lIE5WX0NU
UkxfT1BFUkFUSU5HX1NZU1RFTV9TVU5PUyAyCisKKy8qCisgKiBOVl9DVFJMX1NZTkNfVE9fVkJM
QU5LIC0gZW5hYmxlcyBzeW5jIHRvIHZibGFuayBmb3IgT3BlbkdMIGNsaWVudHMuCisgKiBUaGlz
IHNldHRpbmcgaXMgb25seSBhcHBsaWVkIHRvIE9wZW5HTCBjbGllbnRzIHRoYXQgYXJlIHN0YXJ0
ZWQKKyAqIGFmdGVyIHRoaXMgc2V0dGluZyBpcyBhcHBsaWVkLgorICovCisKKyNkZWZpbmUgTlZf
Q1RSTF9TWU5DX1RPX1ZCTEFOSyA5IC8qIFJXLVggKi8KKyNkZWZpbmUgTlZfQ1RSTF9TWU5DX1RP
X1ZCTEFOS19PRkYgMAorI2RlZmluZSBOVl9DVFJMX1NZTkNfVE9fVkJMQU5LX09OIDEKKworLyoK
KyAqIE5WX0NUUkxfTE9HX0FOSVNPIC0gZW5hYmxlcyBhbmlzb3Ryb3BpYyBmaWx0ZXJpbmcgZm9y
IE9wZW5HTAorICogY2xpZW50czsgb24gc29tZSBOVklESUEgaGFyZHdhcmUsIHRoaXMgY2FuIG9u
bHkgYmUgZW5hYmxlZCBvcgorICogZGlzYWJsZWQ7IG9uIG90aGVyIGhhcmR3YXJlIGRpZmZlcmVu
dCBsZXZlbHMgb2YgYW5pc290cm9waWMKKyAqIGZpbHRlcmluZyBjYW4gYmUgc3BlY2lmaWVkLiAg
VGhpcyBzZXR0aW5nIGlzIG9ubHkgYXBwbGllZCB0byBPcGVuR0wKKyAqIGNsaWVudHMgdGhhdCBh
cmUgc3RhcnRlZCBhZnRlciB0aGlzIHNldHRpbmcgaXMgYXBwbGllZC4KKyAqLworCisjZGVmaW5l
IE5WX0NUUkxfTE9HX0FOSVNPIDEwIC8qIFJXLVggKi8KKworLyoKKyAqIE5WX0NUUkxfRlNBQV9N
T0RFIC0gdGhlIEZTQUEgc2V0dGluZyBmb3IgT3BlbkdMIGNsaWVudHM7IHBvc3NpYmxlCisgKiBG
U0FBIG1vZGVzOgorICoKKyAqIE5WX0NUUkxfRlNBQV9NT0RFXzJ4ICAgICAiMnggQmlsaW5lYXIg
TXVsdGlzYW1wbGluZyIKKyAqIE5WX0NUUkxfRlNBQV9NT0RFXzJ4XzV0ICAiMnggUXVpbmN1bngg
TXVsdGlzYW1wbGluZyIKKyAqIE5WX0NUUkxfRlNBQV9NT0RFXzE1eDE1ICAiMS41IHggMS41IFN1
cGVyc2FtcGxpbmciCisgKiBOVl9DVFJMX0ZTQUFfTU9ERV8yeDIgICAgIjIgeCAyIFN1cGVyc2Ft
cGxpbmciCisgKiBOVl9DVFJMX0ZTQUFfTU9ERV80eCAgICAgIjR4IEJpbGluZWFyIE11bHRpc2Ft
cGxpbmciCisgKiBOVl9DVFJMX0ZTQUFfTU9ERV80eF85dCAgIjR4IEdhdXNzaWFuIE11bHRpc2Ft
cGxpbmciCisgKiBOVl9DVFJMX0ZTQUFfTU9ERV84eCAgICAgIjJ4IEJpbGluZWFyIE11bHRpc2Ft
cGxpbmcgYnkgNHggU3VwZXJzYW1wbGluZyIKKyAqIE5WX0NUUkxfRlNBQV9NT0RFXzE2eCAgICAi
NHggQmlsaW5lYXIgTXVsdGlzYW1wbGluZyBieSA0eCBTdXBlcnNhbXBsaW5nIgorICogTlZfQ1RS
TF9GU0FBX01PREVfOHhTICAgICI0eCBNdWx0aXNhbXBsaW5nIGJ5IDJ4IFN1cGVyc2FtcGxpbmci
CisgKgorICogVGhpcyBzZXR0aW5nIGlzIG9ubHkgYXBwbGllZCB0byBPcGVuR0wgY2xpZW50cyB0
aGF0IGFyZSBzdGFydGVkCisgKiBhZnRlciB0aGlzIHNldHRpbmcgaXMgYXBwbGllZC4KKyAqLwor
CisjZGVmaW5lIE5WX0NUUkxfRlNBQV9NT0RFIDExIC8qIFJXLVggKi8KKyNkZWZpbmUgTlZfQ1RS
TF9GU0FBX01PREVfTk9ORSAwCisjZGVmaW5lIE5WX0NUUkxfRlNBQV9NT0RFXzJ4IDEKKyNkZWZp
bmUgTlZfQ1RSTF9GU0FBX01PREVfMnhfNXQgMgorI2RlZmluZSBOVl9DVFJMX0ZTQUFfTU9ERV8x
NXgxNSAzCisjZGVmaW5lIE5WX0NUUkxfRlNBQV9NT0RFXzJ4MiA0CisjZGVmaW5lIE5WX0NUUkxf
RlNBQV9NT0RFXzR4IDUKKyNkZWZpbmUgTlZfQ1RSTF9GU0FBX01PREVfNHhfOXQgNgorI2RlZmlu
ZSBOVl9DVFJMX0ZTQUFfTU9ERV84eCA3CisjZGVmaW5lIE5WX0NUUkxfRlNBQV9NT0RFXzE2eCA4
CisjZGVmaW5lIE5WX0NUUkxfRlNBQV9NT0RFXzh4UyA5CisjZGVmaW5lIE5WX0NUUkxfRlNBQV9N
T0RFXzh4USAxMAorI2RlZmluZSBOVl9DVFJMX0ZTQUFfTU9ERV8xNnhTIDExCisjZGVmaW5lIE5W
X0NUUkxfRlNBQV9NT0RFXzE2eFEgMTIKKyNkZWZpbmUgTlZfQ1RSTF9GU0FBX01PREVfMzJ4UyAx
MworI2RlZmluZSBOVl9DVFJMX0ZTQUFfTU9ERV8zMnggMTQKKyNkZWZpbmUgTlZfQ1RSTF9GU0FB
X01PREVfNjR4UyAxNQorI2RlZmluZSBOVl9DVFJMX0ZTQUFfTU9ERV9NQVggTlZfQ1RSTF9GU0FB
X01PREVfNjR4UworCisvKgorICogTlZfQ1RSTF9URVhUVVJFX1NIQVJQRU4gLSBlbmFibGVzIHRl
eHR1cmUgc2hhcnBlbmluZyBmb3IgT3BlbkdMCisgKiBjbGllbnRzLiAgVGhpcyBzZXR0aW5nIGlz
IG9ubHkgYXBwbGllZCB0byBPcGVuR0wgY2xpZW50cyB0aGF0IGFyZQorICogc3RhcnRlZCBhZnRl
ciB0aGlzIHNldHRpbmcgaXMgYXBwbGllZC4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfVEVYVFVS
RV9TSEFSUEVOIDEyIC8qIFJXLVggKi8KKyNkZWZpbmUgTlZfQ1RSTF9URVhUVVJFX1NIQVJQRU5f
T0ZGIDAKKyNkZWZpbmUgTlZfQ1RSTF9URVhUVVJFX1NIQVJQRU5fT04gMQorCisvKgorICogTlZf
Q1RSTF9VQkIgLSByZXR1cm5zIHdoZXRoZXIgVUJCIGlzIGVuYWJsZWQgZm9yIHRoZSBzcGVjaWZp
ZWQgWAorICogc2NyZWVuLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9VQkIgMTMgLyogUi0tICov
CisjZGVmaW5lIE5WX0NUUkxfVUJCX09GRiAwCisjZGVmaW5lIE5WX0NUUkxfVUJCX09OIDEKKwor
LyoKKyAqIE5WX0NUUkxfT1ZFUkxBWSAtIHJldHVybnMgd2hldGhlciB0aGUgUkdCIG92ZXJsYXkg
aXMgZW5hYmxlZCBmb3IKKyAqIHRoZSBzcGVjaWZpZWQgWCBzY3JlZW4uCisgKi8KKworI2RlZmlu
ZSBOVl9DVFJMX09WRVJMQVkgMTQgLyogUi0tICovCisjZGVmaW5lIE5WX0NUUkxfT1ZFUkxBWV9P
RkYgMAorI2RlZmluZSBOVl9DVFJMX09WRVJMQVlfT04gMQorCisvKgorICogTlZfQ1RSTF9TVEVS
RU8gLSByZXR1cm5zIHdoZXRoZXIgc3RlcmVvIChhbmQgd2hhdCB0eXBlKSBpcyBlbmFibGVkCisg
KiBmb3IgdGhlIHNwZWNpZmllZCBYIHNjcmVlbi4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfU1RF
UkVPIDE2IC8qIFItLSAqLworI2RlZmluZSBOVl9DVFJMX1NURVJFT19PRkYgMAorI2RlZmluZSBO
Vl9DVFJMX1NURVJFT19EREMgMQorI2RlZmluZSBOVl9DVFJMX1NURVJFT19CTFVFTElORSAyCisj
ZGVmaW5lIE5WX0NUUkxfU1RFUkVPX0RJTiAzCisjZGVmaW5lIE5WX0NUUkxfU1RFUkVPX1BBU1NJ
VkVfRVlFX1BFUl9EUFkgNAorI2RlZmluZSBOVl9DVFJMX1NURVJFT19WRVJUSUNBTF9JTlRFUkxB
Q0VEIDUKKyNkZWZpbmUgTlZfQ1RSTF9TVEVSRU9fQ09MT1JfSU5URVJMQUNFRCA2CisjZGVmaW5l
IE5WX0NUUkxfU1RFUkVPX0hPUklaT05UQUxfSU5URVJMQUNFRCA3CisjZGVmaW5lIE5WX0NUUkxf
U1RFUkVPX0NIRUNLRVJCT0FSRF9QQVRURVJOIDgKKyNkZWZpbmUgTlZfQ1RSTF9TVEVSRU9fSU5W
RVJTRV9DSEVDS0VSQk9BUkRfUEFUVEVSTiA5CisjZGVmaW5lIE5WX0NUUkxfU1RFUkVPXzNEX1ZJ
U0lPTiAxMAorI2RlZmluZSBOVl9DVFJMX1NURVJFT18zRF9WSVNJT05fUFJPIDExCisKKy8qCisg
KiBOVl9DVFJMX0VNVUxBVEUgLSBjb250cm9scyBPcGVuR0wgc29mdHdhcmUgZW11bGF0aW9uIG9m
IGZ1dHVyZQorICogTlZJRElBIEdQVXMuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0VNVUxBVEUg
MTcgLyogUlctICovCisjZGVmaW5lIE5WX0NUUkxfRU1VTEFURV9OT05FIDAKKworLyoKKyAqIE5W
X0NUUkxfVFdJTlZJRVcgLSByZXR1cm5zIHdoZXRoZXIgVHdpblZpZXcgaXMgZW5hYmxlZCBmb3Ig
dGhlCisgKiBzcGVjaWZpZWQgWCBzY3JlZW4uCisgKi8KKworI2RlZmluZSBOVl9DVFJMX1RXSU5W
SUVXIDE4IC8qIFItLSAqLworI2RlZmluZSBOVl9DVFJMX1RXSU5WSUVXX05PVF9FTkFCTEVEIDAK
KyNkZWZpbmUgTlZfQ1RSTF9UV0lOVklFV19FTkFCTEVEIDEKKworLyoKKyAqIE5WX0NUUkxfQ09O
TkVDVEVEX0RJU1BMQVlTIC0gcmV0dXJucyBhIGRpc3BsYXkgbWFzayBpbmRpY2F0aW5nIHRoZSBs
YXN0CisgKiBjYWNoZWQgc3RhdGUgb2YgdGhlIGRpc3BsYXkgZGV2aWNlcyBjb25uZWN0ZWQgdG8g
dGhlIEdQVSBvciBHUFUgZHJpdmluZworICogdGhlIHNwZWNpZmllZCBYIHNjcmVlbi4KKyAqCisg
KiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdl
dEF0dHJpYnV0ZSgpCisgKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfR1BVIG9yIE5WX0NU
UkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4gdGFyZ2V0LgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9D
T05ORUNURURfRElTUExBWVMgMTkgLyogUi0tRyAqLworCisvKgorICogTlZfQ1RSTF9FTkFCTEVE
X0RJU1BMQVlTIC0gcmV0dXJucyBhIGRpc3BsYXkgbWFzayBpbmRpY2F0aW5nIHdoYXQKKyAqIGRp
c3BsYXkgZGV2aWNlcyBhcmUgZW5hYmxlZCBmb3IgdXNlIG9uIHRoZSBzcGVjaWZpZWQgWCBzY3Jl
ZW4gb3IKKyAqIEdQVS4KKyAqCisgKiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB0aHJv
dWdoIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpCisgKiB1c2luZyBhIE5WX0NUUkxfVEFS
R0VUX1RZUEVfR1BVIG9yIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4gdGFyZ2V0LgorICov
CisKKyNkZWZpbmUgTlZfQ1RSTF9FTkFCTEVEX0RJU1BMQVlTIDIwIC8qIFItLUcgKi8KKworLyoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqLworLyoKKyAqIEludGVnZXIgYXR0cmlidXRlcyBzcGVjaWZpYyB0byBj
b25maWd1cmluZyBGcmFtZSBMb2NrIG9uIGJvYXJkcyB0aGF0CisgKiBzdXBwb3J0IGl0LgorICov
CisKKy8qCisgKiBOVl9DVFJMX0ZSQU1FTE9DSyAtIHJldHVybnMgd2hldGhlciB0aGUgdW5kZXJs
eWluZyBHUFUgc3VwcG9ydHMKKyAqIEZyYW1lIExvY2suICBBbGwgb2YgdGhlIG90aGVyIGZyYW1l
IGxvY2sgYXR0cmlidXRlcyBhcmUgb25seQorICogYXBwbGljYWJsZSBpZiBOVl9DVFJMX0ZSQU1F
TE9DSyBpcyBfU1VQUE9SVEVELgorICoKKyAqIFRoaXMgYXR0cmlidXRlIG1heSBiZSBxdWVyaWVk
IHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkKKyAqIHVzaW5nIGEgTlZfQ1RS
TF9UQVJHRVRfVFlQRV9HUFUgb3IgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiB0YXJnZXQu
CisgKi8KKworI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DSyAyMSAvKiBSLS1HICovCisjZGVmaW5l
IE5WX0NUUkxfRlJBTUVMT0NLX05PVF9TVVBQT1JURUQgMAorI2RlZmluZSBOVl9DVFJMX0ZSQU1F
TE9DS19TVVBQT1JURUQgMQorCisvKgorICogTlZfQ1RSTF9GUkFNRUxPQ0tfTUFTVEVSIC0gZ2V0
L3NldCB3aGljaCBkaXNwbGF5IGRldmljZSB0byB1c2UKKyAqIGFzIHRoZSBmcmFtZSBsb2NrIG1h
c3RlciBmb3IgdGhlIGVudGlyZSBzeW5jIGdyb3VwLiAgTm90ZSB0aGF0IG9ubHkKKyAqIG9uZSBu
b2RlIGluIHRoZSBzeW5jIGdyb3VwIHNob3VsZCBiZSBjb25maWd1cmVkIGFzIHRoZSBtYXN0ZXIu
CisgKgorICogVGhpcyBhdHRyaWJ1dGUgY2FuIG9ubHkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNU
UkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpCisgKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVf
R1BVIHRhcmdldC4gIFRoaXMgYXR0cmlidXRlIGNhbm5vdCBiZQorICogcXVlcmllZCB1c2luZyBh
IE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4uCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0ZS
QU1FTE9DS19NQVNURVIgMjIgLyogUlctRyAqLworCisvKiBUaGVzZSBhcmUgZGVwcmVjYXRlZC4g
IE5WX0NUUkxfRlJBTUVMT0NLX01BU1RFUiBub3cgdGFrZXMgYW5kCisgICByZXR1cm5zIGEgZGlz
cGxheSBtYXNrIGFzIHZhbHVlLiAqLworI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19NQVNURVJf
RkFMU0UgMAorI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19NQVNURVJfVFJVRSAxCisKKy8qCisg
KiBOVl9DVFJMX0ZSQU1FTE9DS19QT0xBUklUWSAtIHN5bmMgZWl0aGVyIHRvIHRoZSByaXNpbmcg
ZWRnZSBvZiB0aGUKKyAqIGZyYW1lIGxvY2sgcHVsc2UsIHRoZSBmYWxsaW5nIGVkZ2Ugb2YgdGhl
IGZyYW1lIGxvY2sgcHVsc2Ugb3IgYm90aC4KKyAqCisgKiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUg
cXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpCisgKiB1c2luZyBh
IE5WX0NUUkxfVEFSR0VUX1RZUEVfRlJBTUVMT0NLIG9yIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9T
Q1JFRU4KKyAqIHRhcmdldC4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX1BPTEFS
SVRZIDIzIC8qIFJXLUYgKi8KKyNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfUE9MQVJJVFlfUklT
SU5HX0VER0UgMHgxCisjZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX1BPTEFSSVRZX0ZBTExJTkdf
RURHRSAweDIKKyNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfUE9MQVJJVFlfQk9USF9FREdFUyAw
eDMKKworLyoKKyAqIE5WX0NUUkxfRlJBTUVMT0NLX1NZTkNfREVMQVkgLSBkZWxheSBiZXR3ZWVu
IHRoZSBmcmFtZSBsb2NrIHB1bHNlCisgKiBhbmQgdGhlIEdQVSBzeW5jLiAgVGhpcyB2YWx1ZSBt
dXN0IGJlIG11bHRpcGxpZWQgYnkKKyAqIE5WX0NUUkxfRlJBTUVMT0NLX1NZTkNfREVMQVlfUkVT
T0xVVElPTiB0byBkZXRlcm1pbmUgdGhlIHN5bmMgZGVsYXkgaW4KKyAqIG5hbm9zZWNvbmRzLgor
ICoKKyAqIFRoaXMgYXR0cmlidXRlIG1heSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5
VGFyZ2V0QXR0cmlidXRlKCkKKyAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9GUkFNRUxP
Q0sgb3IgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTgorICogdGFyZ2V0LgorICoKKyAqIFVT
QUdFIE5PREU6IE5WX0NUUkxfRlJBTUVMT0NLX1NZTkNfREVMQVlfTUFYIGFuZAorICogICAgICAg
ICAgICAgTlZfQ1RSTF9GUkFNRUxPQ0tfU1lOQ19ERUxBWV9GQUNUT1IgYXJlIGRlcHJlY2F0ZWQu
CisgKiAgICAgICAgICAgICBUaGUgU3luYyBEZWxheSBfTUFYIGFuZCBfRkFDVE9SIGFyZSBkaWZm
ZXJlbnQgZm9yIGRpZmZlcmVudAorICogICAgICAgICAgICAgR1N5bmMgcHJvZHVjdHMgYW5kIHNv
LCB0byBiZSBjb3JyZWN0LCB0aGUgdmFsaWQgdmFsdWVzIGZvcgorICogICAgICAgICAgICAgTlZf
Q1RSTF9GUkFNRUxPQ0tfU1lOQ19ERUxBWSBtdXN0IGJlIHF1ZXJpZWQgdG8gZ2V0IHRoZSByYW5n
ZQorICogICAgICAgICAgICAgb2YgYWNjZXB0YWJsZSBzeW5jIGRlbGF5IHZhbHVlcywgYW5kCisg
KiAgICAgICAgICAgICBOVl9DVFJMX0ZSQU1FTE9DS19TWU5DX0RFTEFZX1JFU09MVVRJT04gbXVz
dCBiZSBxdWVyaWVkIHRvCisgKiAgICAgICAgICAgICBvYnRhaW4gdGhlIGNvcnJlY3QgZmFjdG9y
LgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfU1lOQ19ERUxBWSAyNCAgICAgICAg
ICAgLyogUlctRiAqLworI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19TWU5DX0RFTEFZX01BWCAy
MDQ3ICAgICAvLyBkZXByZWNhdGVkCisjZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX1NZTkNfREVM
QVlfRkFDVE9SIDcuODEgIC8vIGRlcHJlY2F0ZWQKKworLyoKKyAqIE5WX0NUUkxfRlJBTUVMT0NL
X1NZTkNfSU5URVJWQUwgLSBob3cgbWFueSBob3VzZSBzeW5jIHB1bHNlcworICogYmV0d2VlbiB0
aGUgZnJhbWUgbG9jayBzeW5jIGdlbmVyYXRpb24gKDAgPT0gc3luYyBldmVyeSBob3VzZSBzeW5j
KTsKKyAqIHRoaXMgb25seSBhcHBsaWVzIHRvIHRoZSBtYXN0ZXIgd2hlbiByZWNlaXZpbmcgaG91
c2Ugc3luYy4KKyAqCisgKiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB0aHJvdWdoIFhO
VkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpCisgKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZ
UEVfRlJBTUVMT0NLIG9yIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4KKyAqIHRhcmdldC4K
KyAqLworCisjZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX1NZTkNfSU5URVJWQUwgMjUgLyogUlct
RiAqLworCisvKgorICogTlZfQ1RSTF9GUkFNRUxPQ0tfUE9SVDBfU1RBVFVTIC0gc3RhdHVzIG9m
IHRoZSByajQ1IHBvcnQwLgorICoKKyAqIFRoaXMgYXR0cmlidXRlIG1heSBiZSBxdWVyaWVkIHRo
cm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkKKyAqIHVzaW5nIGEgTlZfQ1RSTF9U
QVJHRVRfVFlQRV9GUkFNRUxPQ0sgb3IgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTgorICog
dGFyZ2V0LgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfUE9SVDBfU1RBVFVTIDI2
IC8qIFItLUYgKi8KKyNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfUE9SVDBfU1RBVFVTX0lOUFVU
IDAKKyNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfUE9SVDBfU1RBVFVTX09VVFBVVCAxCisKKy8q
CisgKiBOVl9DVFJMX0ZSQU1FTE9DS19QT1JUMV9TVEFUVVMgLSBzdGF0dXMgb2YgdGhlIHJqNDUg
cG9ydDEuCisgKgorICogVGhpcyBhdHRyaWJ1dGUgbWF5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZD
VFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUoKQorICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBF
X0ZSQU1FTE9DSyBvciBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOCisgKiB0YXJnZXQuCisg
Ki8KKworI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19QT1JUMV9TVEFUVVMgMjcgLyogUi0tRiAq
LworI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19QT1JUMV9TVEFUVVNfSU5QVVQgMAorI2RlZmlu
ZSBOVl9DVFJMX0ZSQU1FTE9DS19QT1JUMV9TVEFUVVNfT1VUUFVUIDEKKworLyoKKyAqIE5WX0NU
UkxfRlJBTUVMT0NLX0hPVVNFX1NUQVRVUyAtIHJldHVybnMgd2hldGhlciBvciBub3QgdGhlIGhv
dXNlCisgKiBzeW5jIHNpZ25hbCB3YXMgZGV0ZWN0ZWQgb24gdGhlIEJOQyBjb25uZWN0b3Igb2Yg
dGhlIGZyYW1lIGxvY2sKKyAqIGJvYXJkLgorICoKKyAqIFRoaXMgYXR0cmlidXRlIG1heSBiZSBx
dWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkKKyAqIHVzaW5nIGEg
TlZfQ1RSTF9UQVJHRVRfVFlQRV9GUkFNRUxPQ0sgb3IgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1ND
UkVFTgorICogdGFyZ2V0LgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfSE9VU0Vf
U1RBVFVTIDI4IC8qIFItLUYgKi8KKyNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfSE9VU0VfU1RB
VFVTX05PVF9ERVRFQ1RFRCAwCisjZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX0hPVVNFX1NUQVRV
U19ERVRFQ1RFRCAxCisKKy8qCisgKiBOVl9DVFJMX0ZSQU1FTE9DS19TWU5DIC0gZW5hYmxlL2Rp
c2FibGUgdGhlIHN5bmNpbmcgb2YgZGlzcGxheQorICogZGV2aWNlcyB0byB0aGUgZnJhbWUgbG9j
ayBwdWxzZSBhcyBzcGVjaWZpZWQgYnkgcHJldmlvdXMgY2FsbHMgdG8KKyAqIE5WX0NUUkxfRlJB
TUVMT0NLX01BU1RFUiBhbmQgTlZfQ1RSTF9GUkFNRUxPQ0tfU0xBVkVTLgorICoKKyAqIFRoaXMg
YXR0cmlidXRlIGNhbiBvbmx5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRB
dHRyaWJ1dGUoKQorICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0dQVSB0YXJnZXQuICBU
aGlzIGF0dHJpYnV0ZSBjYW5ub3QgYmUKKyAqIHF1ZXJpZWQgdXNpbmcgYSBOVl9DVFJMX1RBUkdF
VF9UWVBFX1hfU0NSRUVOLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfU1lOQyAy
OSAvKiBSVy1HICovCisjZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX1NZTkNfRElTQUJMRSAwCisj
ZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX1NZTkNfRU5BQkxFIDEKKworLyoKKyAqIE5WX0NUUkxf
RlJBTUVMT0NLX1NZTkNfUkVBRFkgLSByZXBvcnRzIHdoZXRoZXIgYSBmcmFtZSBsb2NrCisgKiBi
b2FyZCBpcyByZWNlaXZpbmcgc3luYyAocmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCBhbnkg
ZGlzcGxheQorICogZGV2aWNlcyBhcmUgdXNpbmcgdGhlIHN5bmMpLgorICoKKyAqIFRoaXMgYXR0
cmlidXRlIG1heSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRl
KCkKKyAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9GUkFNRUxPQ0sgb3IgTlZfQ1RSTF9U
QVJHRVRfVFlQRV9YX1NDUkVFTgorICogdGFyZ2V0LgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9G
UkFNRUxPQ0tfU1lOQ19SRUFEWSAzMCAvKiBSLS1GICovCisjZGVmaW5lIE5WX0NUUkxfRlJBTUVM
T0NLX1NZTkNfUkVBRFlfRkFMU0UgMAorI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19TWU5DX1JF
QURZX1RSVUUgMQorCisvKgorICogTlZfQ1RSTF9GUkFNRUxPQ0tfU1RFUkVPX1NZTkMgLSB0aGlz
IGluZGljYXRlcyB0aGF0IHRoZSBHUFUgc3RlcmVvCisgKiBzaWduYWwgaXMgaW4gc3luYyB3aXRo
IHRoZSBmcmFtZSBsb2NrIHN0ZXJlbyBzaWduYWwuCisgKgorICogVGhpcyBhdHRyaWJ1dGUgbWF5
IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUoKQorICogdXNp
bmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0dQVSBvciBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NS
RUVOCisgKiB0YXJnZXQuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19TVEVSRU9f
U1lOQyAzMSAvKiBSLS1HICovCisjZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX1NURVJFT19TWU5D
X0ZBTFNFIDAKKyNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfU1RFUkVPX1NZTkNfVFJVRSAxCisK
Ky8qCisgKiBOVl9DVFJMX0ZSQU1FTE9DS19URVNUX1NJR05BTCAtIHRvIHRlc3QgdGhlIGNvbm5l
Y3Rpb25zIGluIHRoZSBzeW5jCisgKiBncm91cCwgdGVsbCB0aGUgbWFzdGVyIHRvIGVuYWJsZSBh
IHRlc3Qgc2lnbmFsLCB0aGVuIHF1ZXJ5IHBvcnRbMDFdCisgKiBzdGF0dXMgYW5kIHN5bmNfcmVh
ZHkgb24gYWxsIHNsYXZlcy4gIFdoZW4gZG9uZSwgdGVsbCB0aGUgbWFzdGVyIHRvCisgKiBkaXNh
YmxlIHRoZSB0ZXN0IHNpZ25hbC4gIFRlc3Qgc2lnbmFsIHNob3VsZCBvbmx5IGJlIG1hbmlwdWxh
dGVkCisgKiB3aGlsZSBOVl9DVFJMX0ZSQU1FTE9DS19TWU5DIGlzIGVuYWJsZWQuCisgKgorICog
VGhlIFRFU1RfU0lHTkFMIGlzIGFsc28gdXNlZCB0byByZXNldCB0aGUgVW5pdmVyc2FsIEZyYW1l
IENvdW50IChhcworICogcmV0dXJuZWQgYnkgdGhlIGdsWFF1ZXJ5RnJhbWVDb3VudE5WKCkgZnVu
Y3Rpb24gaW4gdGhlCisgKiBHTFhfTlZfc3dhcF9ncm91cCBleHRlbnNpb24pLiAgTm90ZTogZm9y
IGJlc3QgYWNjdXJhY3kgb2YgdGhlCisgKiBVbml2ZXJzYWwgRnJhbWUgQ291bnQsIGl0IGlzIHJl
Y29tbWVuZGVkIHRvIHRvZ2dsZSB0aGUgVEVTVF9TSUdOQUwKKyAqIG9uIGFuZCBvZmYgYWZ0ZXIg
ZW5hYmxpbmcgZnJhbWUgbG9jay4KKyAqCisgKiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmll
ZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpCisgKiB1c2luZyBhIE5WX0NU
UkxfVEFSR0VUX1RZUEVfR1BVIG9yIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4gdGFyZ2V0
LgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfVEVTVF9TSUdOQUwgMzIgLyogUlct
RyAqLworI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19URVNUX1NJR05BTF9ESVNBQkxFIDAKKyNk
ZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfVEVTVF9TSUdOQUxfRU5BQkxFIDEKKworLyoKKyAqIE5W
X0NUUkxfRlJBTUVMT0NLX0VUSEVSTkVUX0RFVEVDVEVEIC0gVGhlIGZyYW1lIGxvY2sgYm9hcmRz
IGFyZQorICogY2FibGVkIHRvZ2V0aGVyIHVzaW5nIHJlZ3VsYXIgY2F0NSBjYWJsZSwgY29ubmVj
dGluZyB0byByajQ1IHBvcnRzCisgKiBvbiB0aGUgYmFja3BsYW5lIG9mIHRoZSBjYXJkLiAgVGhl
cmUgaXMgc29tZSBjb25jZXJuIHRoYXQgdXNlcnMgbWF5CisgKiB0aGluayB0aGVzZSBhcmUgZXRo
ZXJuZXQgcG9ydHMgYW5kIGNvbm5lY3QgdGhlbSB0byBhCisgKiByb3V0ZXIvaHViL2V0Yy4gIFRo
ZSBoYXJkd2FyZSBjYW4gZGV0ZWN0IHRoaXMgYW5kIHdpbGwgc2h1dCBvZmYgdG8KKyAqIHByZXZl
bnQgZGFtYWdlIChlaXRoZXIgdG8gaXRzZWxmIG9yIHRvIHRoZSByb3V0ZXIpLgorICogTlZfQ1RS
TF9GUkFNRUxPQ0tfRVRIRVJORVRfREVURUNURUQgbWF5IGJlIGNhbGxlZCB0byBmaW5kIG91dCBp
ZgorICogZXRoZXJuZXQgaXMgY29ubmVjdGVkIHRvIG9uZSBvZiB0aGUgcmo0NSBwb3J0cy4gIEFu
IGFwcHJvcHJpYXRlCisgKiBlcnJvciBtZXNzYWdlIHNob3VsZCB0aGVuIGJlIGRpc3BsYXllZC4g
IFRoZSBfUE9SVDAgYW5kIF9QT1JUMQorICogdmFsdWVzIG1heSBiZSBvcidlZCB0b2dldGhlci4K
KyAqCisgKiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVy
eVRhcmdldEF0dHJpYnV0ZSgpCisgKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfRlJBTUVM
T0NLIG9yIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4KKyAqIHRhcmdldC4KKyAqLworCisj
ZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX0VUSEVSTkVUX0RFVEVDVEVEIDMzIC8qIFItLUYgKi8K
KyNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfRVRIRVJORVRfREVURUNURURfTk9ORSAwCisjZGVm
aW5lIE5WX0NUUkxfRlJBTUVMT0NLX0VUSEVSTkVUX0RFVEVDVEVEX1BPUlQwIDB4MQorI2RlZmlu
ZSBOVl9DVFJMX0ZSQU1FTE9DS19FVEhFUk5FVF9ERVRFQ1RFRF9QT1JUMSAweDIKKworLyoKKyAq
IE5WX0NUUkxfRlJBTUVMT0NLX1ZJREVPX01PREUgLSBnZXQvc2V0IHdoYXQgdmlkZW8gbW9kZSBp
cyB1c2VkCisgKiB0byBpbnRlcnBlcmF0ZSB0aGUgaG91c2Ugc3luYyBzaWduYWwuICBUaGlzIHNo
b3VsZCBvbmx5IGJlIHNldAorICogb24gdGhlIG1hc3Rlci4KKyAqCisgKiBUaGlzIGF0dHJpYnV0
ZSBtYXkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpCisg
KiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfRlJBTUVMT0NLIG9yIE5WX0NUUkxfVEFSR0VU
X1RZUEVfWF9TQ1JFRU4KKyAqIHRhcmdldC4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfRlJBTUVM
T0NLX1ZJREVPX01PREUgMzQgLyogUlctRiAqLworI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19W
SURFT19NT0RFX05PTkUgMAorI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19WSURFT19NT0RFX1RU
TCAxCisjZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX1ZJREVPX01PREVfTlRTQ1BBTFNFQ0FNIDIK
KyNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfVklERU9fTU9ERV9IRFRWIDMKKworLyoKKyAqIER1
cmluZyBGUkFNRUxPQ0sgYnJpbmctdXAsIHRoZSBhYm92ZSB2YWx1ZXMgd2VyZSByZWRlZmluZWQg
dG8KKyAqIHRoZXNlOgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfVklERU9fTU9E
RV9DT01QT1NJVEVfQVVUTyAwCisjZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX1ZJREVPX01PREVf
VFRMIDEKKyNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfVklERU9fTU9ERV9DT01QT1NJVEVfQklf
TEVWRUwgMgorI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19WSURFT19NT0RFX0NPTVBPU0lURV9U
UklfTEVWRUwgMworCisvKgorICogTlZfQ1RSTF9GUkFNRUxPQ0tfU1lOQ19SQVRFIC0gdGhpcyBp
cyB0aGUgcmVmcmVzaCByYXRlIHRoYXQgdGhlCisgKiBmcmFtZSBsb2NrIGJvYXJkIGlzIHNlbmRp
bmcgdG8gdGhlIEdQVSwgaW4gbWlsbGlIei4KKyAqCisgKiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUg
cXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpCisgKiB1c2luZyBh
IE5WX0NUUkxfVEFSR0VUX1RZUEVfRlJBTUVMT0NLIG9yIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9T
Q1JFRU4KKyAqIHRhcmdldC4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX1NZTkNf
UkFURSAzNSAvKiBSLS1GICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIE5WX0NU
UkxfRk9SQ0VfR0VORVJJQ19DUFUgLSBpbmhpYml0IHRoZSB1c2Ugb2YgQ1BVIHNwZWNpZmljCisg
KiBmZWF0dXJlcyBzdWNoIGFzIE1NWCwgU1NFLCBvciAzRE5PVyEgZm9yIE9wZW5HTCBjbGllbnRz
OyB0aGlzCisgKiBvcHRpb24gbWF5IHJlc3VsdCBpbiBwZXJmb3JtYW5jZSBsb3NzLCBidXQgbWF5
IGJlIHVzZWZ1bCBpbgorICogY29uanVuY3Rpb24gd2l0aCBzb2Z0d2FyZSBzdWNoIGFzIHRoZSBW
YWxncmluZCBtZW1vcnkgZGVidWdnZXIuCisgKiBUaGlzIHNldHRpbmcgaXMgb25seSBhcHBsaWVk
IHRvIE9wZW5HTCBjbGllbnRzIHRoYXQgYXJlIHN0YXJ0ZWQKKyAqIGFmdGVyIHRoaXMgc2V0dGlu
ZyBpcyBhcHBsaWVkLgorICoKKyAqIFVTQUdFIE5PVEU6IFRoaXMgYXR0cmlidXRlIGlzIGRlcHJl
Y2F0ZWQuIENQVSBjb21wYXRpYmlsaXR5IGlzIG5vdworICogICAgICAgICAgICAgY2hlY2tlZCBl
YWNoIHRpbWUgZHVyaW5nIGluaXRpYWxpemF0aW9uLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9G
T1JDRV9HRU5FUklDX0NQVSAzNyAvKiBSVy1YICovCisjZGVmaW5lIE5WX0NUUkxfRk9SQ0VfR0VO
RVJJQ19DUFVfRElTQUJMRSAwCisjZGVmaW5lIE5WX0NUUkxfRk9SQ0VfR0VORVJJQ19DUFVfRU5B
QkxFIDEKKworLyoKKyAqIE5WX0NUUkxfT1BFTkdMX0FBX0xJTkVfR0FNTUEgLSBmb3IgT3BlbkdM
IGNsaWVudHMsIGFsbG93CisgKiBHYW1tYS1jb3JyZWN0ZWQgYW50aWFsaWFzZWQgbGluZXMgdG8g
Y29uc2lkZXIgdmFyaWFuY2VzIGluIHRoZQorICogY29sb3IgZGlzcGxheSBjYXBhYmlsaXRpZXMg
b2Ygb3V0cHV0IGRldmljZXMgd2hlbiByZW5kZXJpbmcgc21vb3RoCisgKiBsaW5lcy4gIE9ubHkg
YXZhaWxhYmxlIG9uIHJlY2VudCBRdWFkcm8gR1BVcy4gIFRoaXMgc2V0dGluZyBpcyBvbmx5Cisg
KiBhcHBsaWVkIHRvIE9wZW5HTCBjbGllbnRzIHRoYXQgYXJlIHN0YXJ0ZWQgYWZ0ZXIgdGhpcyBz
ZXR0aW5nIGlzCisgKiBhcHBsaWVkLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9PUEVOR0xfQUFf
TElORV9HQU1NQSAzOCAvKiBSVy1YICovCisjZGVmaW5lIE5WX0NUUkxfT1BFTkdMX0FBX0xJTkVf
R0FNTUFfRElTQUJMRSAwCisjZGVmaW5lIE5WX0NUUkxfT1BFTkdMX0FBX0xJTkVfR0FNTUFfRU5B
QkxFIDEKKworLyoKKyAqIE5WX0NUUkxfRlJBTUVMT0NLX1RJTUlORyAtIHRoaXMgaXMgVFJVRSB3
aGVuIHRoZSBncHUgaXMgYm90aCByZWNlaXZpbmcKKyAqIGFuZCBsb2NrZWQgdG8gYW4gaW5wdXQg
dGltaW5nIHNpZ25hbC4gVGltaW5nIGluZm9ybWF0aW9uIG1heSBjb21lIGZyb20KKyAqIHRoZSBm
b2xsb3dpbmcgcGxhY2VzOiBBbm90aGVyIGZyYW1lIGxvY2sgZGV2aWNlIHRoYXQgaXMgc2V0IHRv
IG1hc3RlciwKKyAqIHRoZSBob3VzZSBzeW5jIHNpZ25hbCwgb3IgdGhlIEdQVSdzIGludGVybmFs
IHRpbWluZyBmcm9tIGEgZGlzcGxheQorICogZGV2aWNlLgorICoKKyAqIFRoaXMgYXR0cmlidXRl
IG1heSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkKKyAq
IHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9HUFUgb3IgTlZfQ1RSTF9UQVJHRVRfVFlQRV9Y
X1NDUkVFTiB0YXJnZXQuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19USU1JTkcg
MzkgLyogUi0tRyAqLworI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19USU1JTkdfRkFMU0UgMAor
I2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19USU1JTkdfVFJVRSAxCisKKy8qCisgKiBOVl9DVFJM
X0ZMSVBQSU5HX0FMTE9XRUQgLSB3aGVuIFRSVUUsIE9wZW5HTCB3aWxsIHN3YXAgYnkgZmxpcHBp
bmcKKyAqIHdoZW4gcG9zc2libGU7IHdoZW4gRkFMU0UsIE9wZW5HTCB3aWxsIGFsd2F5IHN3YXAg
YnkgYmxpdHRpbmcuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0ZMSVBQSU5HX0FMTE9XRUQgNDAg
LyogUlctWCAqLworI2RlZmluZSBOVl9DVFJMX0ZMSVBQSU5HX0FMTE9XRURfRkFMU0UgMAorI2Rl
ZmluZSBOVl9DVFJMX0ZMSVBQSU5HX0FMTE9XRURfVFJVRSAxCisKKy8qCisgKiBOVl9DVFJMX0FS
Q0hJVEVDVFVSRSAtIHJldHVybnMgdGhlIGFyY2hpdGVjdHVyZSBvbiB3aGljaCB0aGUgWCBzZXJ2
ZXIgaXMKKyAqIHJ1bm5pbmcuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0FSQ0hJVEVDVFVSRSA0
MSAvKiBSLS0gKi8KKyNkZWZpbmUgTlZfQ1RSTF9BUkNISVRFQ1RVUkVfWDg2IDAKKyNkZWZpbmUg
TlZfQ1RSTF9BUkNISVRFQ1RVUkVfWDg2XzY0IDEKKyNkZWZpbmUgTlZfQ1RSTF9BUkNISVRFQ1RV
UkVfSUE2NCAyCisKKy8qCisgKiBOVl9DVFJMX1RFWFRVUkVfQ0xBTVBJTkcgLSB0ZXh0dXJlIGNs
YW1waW5nIG1vZGUgaW4gT3BlbkdMLiAgQnkKKyAqIGRlZmF1bHQsIF9TUEVDIGlzIHVzZWQsIHdo
aWNoIGZvcmNlcyBPcGVuR0wgdGV4dHVyZSBjbGFtcGluZyB0bworICogY29uZm9ybSB3aXRoIHRo
ZSBPcGVuR0wgc3BlY2lmaWNhdGlvbi4gIF9FREdFIGZvcmNlcyBOVklESUEncworICogT3BlbkdM
IGltcGxlbWVudGF0aW9uIHRvIHJlbWFwIEdMX0NMQU1QIHRvIEdMX0NMQU1QX1RPX0VER0UsCisg
KiB3aGljaCBpcyBub3Qgc3RyaWN0bHkgY29uZm9ybWFudCwgYnV0IHNvbWUgYXBwbGljYXRpb25z
IHJlbHkgb24KKyAqIHRoZSBub24tY29uZm9ybWFudCBiZWhhdmlvci4KKyAqLworCisjZGVmaW5l
IE5WX0NUUkxfVEVYVFVSRV9DTEFNUElORyA0MiAvKiBSVy1YICovCisjZGVmaW5lIE5WX0NUUkxf
VEVYVFVSRV9DTEFNUElOR19FREdFIDAKKyNkZWZpbmUgTlZfQ1RSTF9URVhUVVJFX0NMQU1QSU5H
X1NQRUMgMQorCisjZGVmaW5lIE5WX0NUUkxfQ1VSU09SX1NIQURPVyA0MyAvKiBSVy0gKi8KKyNk
ZWZpbmUgTlZfQ1RSTF9DVVJTT1JfU0hBRE9XX0RJU0FCTEUgMAorI2RlZmluZSBOVl9DVFJMX0NV
UlNPUl9TSEFET1dfRU5BQkxFIDEKKworI2RlZmluZSBOVl9DVFJMX0NVUlNPUl9TSEFET1dfQUxQ
SEEgNDQgLyogUlctICovCisjZGVmaW5lIE5WX0NUUkxfQ1VSU09SX1NIQURPV19SRUQgNDUgICAv
KiBSVy0gKi8KKyNkZWZpbmUgTlZfQ1RSTF9DVVJTT1JfU0hBRE9XX0dSRUVOIDQ2IC8qIFJXLSAq
LworI2RlZmluZSBOVl9DVFJMX0NVUlNPUl9TSEFET1dfQkxVRSA0NyAgLyogUlctICovCisKKyNk
ZWZpbmUgTlZfQ1RSTF9DVVJTT1JfU0hBRE9XX1hfT0ZGU0VUIDQ4IC8qIFJXLSAqLworI2RlZmlu
ZSBOVl9DVFJMX0NVUlNPUl9TSEFET1dfWV9PRkZTRVQgNDkgLyogUlctICovCisKKy8qCisgKiBX
aGVuIEFwcGxpY2F0aW9uIENvbnRyb2wgZm9yIEZTQUEgaXMgZW5hYmxlZCwgdGhlbiB3aGF0IHRo
ZQorICogYXBwbGljYXRpb24gcmVxdWVzdHMgaXMgdXNlZCwgYW5kIE5WX0NUUkxfRlNBQV9NT0RF
IGlzIGlnbm9yZWQuICBJZgorICogdGhpcyBpcyBkaXNhYmxlZCwgdGhlbiBhbnkgYXBwbGljYXRp
b24gc2V0dGluZyBpcyBvdmVycmlkZGVuIHdpdGgKKyAqIE5WX0NUUkxfRlNBQV9NT0RFCisgKi8K
KworI2RlZmluZSBOVl9DVFJMX0ZTQUFfQVBQTElDQVRJT05fQ09OVFJPTExFRCA1MCAvKiBSVy1Y
ICovCisjZGVmaW5lIE5WX0NUUkxfRlNBQV9BUFBMSUNBVElPTl9DT05UUk9MTEVEX0VOQUJMRUQg
MQorI2RlZmluZSBOVl9DVFJMX0ZTQUFfQVBQTElDQVRJT05fQ09OVFJPTExFRF9ESVNBQkxFRCAw
CisKKy8qCisgKiBXaGVuIEFwcGxpY2F0aW9uIENvbnRyb2wgZm9yIExvZ0FuaXNvIGlzIGVuYWJs
ZWQsIHRoZW4gd2hhdCB0aGUKKyAqIGFwcGxpY2F0aW9uIHJlcXVlc3RzIGlzIHVzZWQsIGFuZCBO
Vl9DVFJMX0xPR19BTklTTyBpcyBpZ25vcmVkLiAgSWYKKyAqIHRoaXMgaXMgZGlzYWJsZWQsIHRo
ZW4gYW55IGFwcGxpY2F0aW9uIHNldHRpbmcgaXMgb3ZlcnJpZGRlbiB3aXRoCisgKiBOVl9DVFJM
X0xPR19BTklTTworICovCisKKyNkZWZpbmUgTlZfQ1RSTF9MT0dfQU5JU09fQVBQTElDQVRJT05f
Q09OVFJPTExFRCA1MSAvKiBSVy1YICovCisjZGVmaW5lIE5WX0NUUkxfTE9HX0FOSVNPX0FQUExJ
Q0FUSU9OX0NPTlRST0xMRURfRU5BQkxFRCAxCisjZGVmaW5lIE5WX0NUUkxfTE9HX0FOSVNPX0FQ
UExJQ0FUSU9OX0NPTlRST0xMRURfRElTQUJMRUQgMAorCisvKgorICogSU1BR0VfU0hBUlBFTklO
RyBhZGp1c3RzIHRoZSBzaGFycG5lc3Mgb2YgdGhlIGRpc3BsYXkncyBpbWFnZQorICogcXVhbGl0
eSBieSBhbXBsaWZ5aW5nIGhpZ2ggZnJlcXVlbmN5IGNvbnRlbnQuICBWYWxpZCB2YWx1ZXMgd2ls
bAorICogbm9ybWFsbHkgYmUgaW4gdGhlIHJhbmdlIFswLDMyKS4gIE9ubHkgYXZhaWxhYmxlIG9u
IEdlRm9yY2VGWCBvcgorICogbmV3ZXIuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0lNQUdFX1NI
QVJQRU5JTkcgNTIgLyogUldERyAqLworCisvKgorICogTlZfQ1RSTF9UVl9PVkVSU0NBTiBhZGp1
c3RzIHRoZSBhbW91bnQgb2Ygb3ZlcnNjYW4gb24gdGhlIHNwZWNpZmllZAorICogZGlzcGxheSBk
ZXZpY2UuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX1RWX09WRVJTQ0FOIDUzIC8qIFJXREcgKi8K
KworLyoKKyAqIE5WX0NUUkxfVFZfRkxJQ0tFUl9GSUxURVIgYWRqdXN0cyB0aGUgYW1vdW50IG9m
IGZsaWNrZXIgZmlsdGVyIG9uCisgKiB0aGUgc3BlY2lmaWVkIGRpc3BsYXkgZGV2aWNlLgorICov
CisKKyNkZWZpbmUgTlZfQ1RSTF9UVl9GTElDS0VSX0ZJTFRFUiA1NCAvKiBSV0RHICovCisKKy8q
CisgKiBOVl9DVFJMX1RWX0JSSUdIVE5FU1MgYWRqdXN0cyB0aGUgYW1vdW50IG9mIGJyaWdodG5l
c3Mgb24gdGhlCisgKiBzcGVjaWZpZWQgZGlzcGxheSBkZXZpY2UuCisgKi8KKworI2RlZmluZSBO
Vl9DVFJMX1RWX0JSSUdIVE5FU1MgNTUgLyogUldERyAqLworCisvKgorICogTlZfQ1RSTF9UVl9I
VUUgYWRqdXN0cyB0aGUgYW1vdW50IG9mIGh1ZSBvbiB0aGUgc3BlY2lmaWVkIGRpc3BsYXkKKyAq
IGRldmljZS4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfVFZfSFVFIDU2IC8qIFJXREcgKi8KKwor
LyoKKyAqIE5WX0NUUkxfVFZfQ09OVFJBU1QgYWRqdXN0cyB0aGUgYW1vdW50IG9mIGNvbnRyYXN0
IG9uIHRoZSBzcGVjaWZpZWQKKyAqIGRpc3BsYXkgZGV2aWNlLgorICovCisKKyNkZWZpbmUgTlZf
Q1RSTF9UVl9DT05UUkFTVCA1NyAvKiBSV0RHICovCisKKy8qCisgKiBOVl9DVFJMX1RWX1NBVFVS
QVRJT04gYWRqdXN0cyB0aGUgYW1vdW50IG9mIHNhdHVyYXRpb24gb24gdGhlCisgKiBzcGVjaWZp
ZWQgZGlzcGxheSBkZXZpY2UuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX1RWX1NBVFVSQVRJT04g
NTggLyogUldERyAqLworCisvKgorICogTlZfQ1RSTF9UVl9SRVNFVF9TRVRUSU5HUyAtIHRoaXMg
d3JpdGUtb25seSBhdHRyaWJ1dGUgY2FuIGJlIHVzZWQKKyAqIHRvIHJlcXVlc3QgdGhhdCBhbGwg
VFYgU2V0dGluZ3MgYmUgcmVzZXQgdG8gdGhlaXIgZGVmYXVsdCB2YWx1ZXM7CisgKiB0eXBpY2Fs
IHVzYWdlIHdvdWxkIGJlIHRoYXQgdGhpcyBhdHRyaWJ1dGUgYmUgc2VudCwgYW5kIHRoZW4gYWxs
CisgKiB0aGUgVFYgYXR0cmlidXRlcyBiZSBxdWVyaWVkIHRvIHJldHJpZXZlIHRoZWlyIG5ldyB2
YWx1ZXMuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX1RWX1JFU0VUX1NFVFRJTkdTIDU5IC8qIC1X
REcgKi8KKworLyoKKyAqIE5WX0NUUkxfR1BVX0NPUkVfVEVNUEVSQVRVUkUgcmVwb3J0cyB0aGUg
Y3VycmVudCBjb3JlIHRlbXBlcmF0dXJlCisgKiBvZiB0aGUgR1BVIGRyaXZpbmcgdGhlIFggc2Ny
ZWVuLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HUFVfQ09SRV9URU1QRVJBVFVSRSA2MCAvKiBS
LS1HICovCisKKy8qCisgKiBOVl9DVFJMX0dQVV9DT1JFX1RIUkVTSE9MRCByZXBvcnRzIHRoZSBj
dXJyZW50IEdQVSBjb3JlIHNsb3dkb3duCisgKiB0aHJlc2hvbGQgdGVtcGVyYXR1cmUsIE5WX0NU
UkxfR1BVX0RFRkFVTFRfQ09SRV9USFJFU0hPTEQgYW5kCisgKiBOVl9DVFJMX0dQVV9NQVhfQ09S
RV9USFJFU0hPTEQgcmVwb3J0IHRoZSBkZWZhdWx0IGFuZCBNQVggY29yZQorICogc2xvd2Rvd24g
dGhyZXNob2xkIHRlbXBlcmF0dXJlcy4KKyAqCisgKiBOVl9DVFJMX0dQVV9DT1JFX1RIUkVTSE9M
RCByZWZsZWN0cyB0aGUgdGVtcGVyYXR1cmUgYXQgd2hpY2ggdGhlCisgKiBHUFUgaXMgdGhyb3R0
bGVkIHRvIHByZXZlbnQgb3ZlcmhlYXRpbmcuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0dQVV9D
T1JFX1RIUkVTSE9MRCA2MSAgICAgICAgIC8qIFItLUcgKi8KKyNkZWZpbmUgTlZfQ1RSTF9HUFVf
REVGQVVMVF9DT1JFX1RIUkVTSE9MRCA2MiAvKiBSLS1HICovCisjZGVmaW5lIE5WX0NUUkxfR1BV
X01BWF9DT1JFX1RIUkVTSE9MRCA2MyAgICAgLyogUi0tRyAqLworCisvKgorICogTlZfQ1RSTF9B
TUJJRU5UX1RFTVBFUkFUVVJFIHJlcG9ydHMgdGhlIGN1cnJlbnQgdGVtcGVyYXR1cmUgaW4gdGhl
CisgKiBpbW1lZGlhdGUgbmVpZ2hib3VyaG9vZCBvZiB0aGUgR1BVIGRyaXZpbmcgdGhlIFggc2Ny
ZWVuLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9BTUJJRU5UX1RFTVBFUkFUVVJFIDY0IC8qIFIt
LUcgKi8KKworLyoKKyAqIE5WX0NUUkxfUEJVRkZFUl9TQ0FOT1VUX1NVUFBPUlRFRCAtIHJldHVy
bnMgd2hldGhlciB0aGlzIFggc2NyZWVuCisgKiBzdXBwb3J0cyBzY2Fub3V0IG9mIEZQIHBidWZm
ZXJzOworICoKKyAqIGlmIHRoaXMgc2NyZWVuIGRvZXMgbm90IHN1cHBvcnQgUEJVRkZFUl9TQ0FO
T1VULCB0aGVuIGFsbCBvdGhlcgorICogUEJVRkZFUl9TQ0FOT1VUIGF0dHJpYnV0ZXMgYXJlIHVu
YXZhaWxhYmxlLgorICoKKyAqIFBCVUZGRVJfU0NBTk9VVCBpcyBzdXBwb3J0ZWQgaWYgYW5kIG9u
bHkgaWY6CisgKiAtIFR3aW52aWV3IGlzIGNvbmZpZ3VyZWQgd2l0aCBjbG9uZSBtb2RlLiAgVGhl
IHNlY29uZGFyeSBzY3JlZW4gaXMgdXNlZCB0bworICogICBzY2Fub3V0IHRoZSBwYnVmZmVyLgor
ICogLSBUaGUgZGVza3RvcCBpcyBydW5uaW5nIGluIHdpdGggMTYgYml0cyBwZXIgcGl4ZWwuCisg
Ki8KKyNkZWZpbmUgTlZfQ1RSTF9QQlVGRkVSX1NDQU5PVVRfU1VQUE9SVEVEIDY1IC8qIFItLSAq
LworI2RlZmluZSBOVl9DVFJMX1BCVUZGRVJfU0NBTk9VVF9GQUxTRSAwCisjZGVmaW5lIE5WX0NU
UkxfUEJVRkZFUl9TQ0FOT1VUX1RSVUUgMQorCisvKgorICogTlZfQ1RSTF9QQlVGRkVSX1NDQU5P
VVRfWElEIGluZGljYXRlcyB0aGUgWElEIG9mIHRoZSBwYnVmZmVyIHVzZWQgZm9yCisgKiBzY2Fu
b3V0LgorICovCisjZGVmaW5lIE5WX0NUUkxfUEJVRkZFUl9TQ0FOT1VUX1hJRCA2NiAvKiBSVy0g
Ki8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqIFRoZSBOVl9DVFJMX0dWT18qIGludGVn
ZXIgYXR0cmlidXRlcyBhcmUgdXNlZCB0byBjb25maWd1cmUgR1ZPCisgKiAoR3JhcGhpY3MgdG8g
VmlkZW8gT3V0KS4gIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBhdmFpbGFibGUsIGZvcgorICogZXhh
bXBsZSwgb24gdGhlIFF1YWRybyBGWCA0MDAwIFNESSBncmFwaGljcyBib2FyZC4KKyAqCisgKiBU
aGUgZm9sbG93aW5nIGlzIGEgdHlwaWNhbCB1c2FnZSBwYXR0ZXJuIGZvciB0aGUgR1ZPIGF0dHJp
YnV0ZXM6CisgKgorICogLSBxdWVyeSBOVl9DVFJMX0dWT19TVVBQT1JURUQgdG8gZGV0ZXJtaW5l
IGlmIHRoZSBYIHNjcmVlbiBzdXBwb3J0cyBHVjAuCisgKgorICogLSBzcGVjaWZ5IE5WX0NUUkxf
R1ZPX1NZTkNfTU9ERSAob25lIG9mIEZSRUVfUlVOTklORywgR0VOTE9DSywgb3IKKyAqIEZSQU1F
TE9DSyk7IGlmIHlvdSBzcGVjaWZ5IEdFTkxPQ0sgb3IgRlJBTUVMT0NLLCB5b3Ugc2hvdWxkIGFs
c28KKyAqIHNwZWNpZnkgTlZfQ1RSTF9HVk9fU1lOQ19TT1VSQ0UuCisgKgorICogLSBVc2UgTlZf
Q1RSTF9HVk9fQ09NUE9TSVRFX1NZTkNfSU5QVVRfREVURUNURUQgYW5kCisgKiBOVl9DVFJMX0dW
T19TRElfU1lOQ19JTlBVVF9ERVRFQ1RFRCB0byBkZXRlY3Qgd2hhdCBpbnB1dCBzeW5jcyBhcmUK
KyAqIHByZXNlbnQuCisgKgorICogKElmIG5vIGFuYWxvZyBzeW5jIGlzIGRldGVjdGVkIGJ1dCBp
dCBpcyBrbm93biB0aGF0IGEgdmFsaWQKKyAqIGJpLWxldmVsIG9yIHRyaS1sZXZlbCBzeW5jIGlz
IGNvbm5lY3RlZCBzZXQKKyAqIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9TWU5DX0lOUFVUX0RFVEVD
VF9NT0RFIGFwcHJvcHJpYXRlbHkgYW5kCisgKiByZXRlc3Qgd2l0aCBOVl9DVFJMX0dWT19DT01Q
T1NJVEVfU1lOQ19JTlBVVF9ERVRFQ1RFRCkuCisgKgorICogLSBpZiBzeW5jaW5nIHRvIGlucHV0
IHN5bmMsIHF1ZXJ5IHRoZQorICogTlZfQ1RSTF9HVklPX0RFVEVDVEVEX1ZJREVPX0ZPUk1BVCBh
dHRyaWJ1dGU7IG5vdGUgdGhhdCBJbnB1dCB2aWRlbworICogZm9ybWF0IGNhbiBvbmx5IGJlIHF1
ZXJpZWQgYWZ0ZXIgU1lOQ19TT1VSQ0UgaXMgc3BlY2lmaWVkLgorICoKKyAqIC0gc3BlY2lmeSB0
aGUgTlZfQ1RSTF9HVklPX1JFUVVFU1RFRF9WSURFT19GT1JNQVQKKyAqCisgKiAtIHNwZWNpZnkg
dGhlIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUCisgKgorICogLSBzcGVjaWZ5IGFueSBjdXN0b20g
Q29sb3IgU3BhY2UgQ29udmVyc2lvbiAoQ1NDKSBtYXRyaXgsIG9mZnNldCwKKyAqIGFuZCBzY2Fs
ZSB3aXRoIFhOVkNUUkxTZXRHdm9Db2xvckNvbnZlcnNpb24oKS4KKyAqCisgKiAtIGlmIHVzaW5n
IHRoZSBHTFhfTlZfdmlkZW9fb3V0IGV4dGVuc2lvbiB0byBkaXNwbGF5IG9uZSBvciBtb3JlCisg
KiBwYnVmZmVycywgY2FsbCBnbFhHZXRWaWRlb0RldmljZU5WKCkgdG8gbG9jayB0aGUgR1ZPIG91
dHB1dCBmb3IgdXNlCisgKiBieSB0aGUgR0xYIGNsaWVudDsgdGhlbiBiaW5kIHRoZSBwYnVmZmVy
KHMpIHRvIHRoZSBHVk8gb3V0cHV0IHdpdGgKKyAqIGdsWEJpbmRWaWRlb0ltYWdlTlYoKSBhbmQg
c2VuZCBwYnVmZmVycyB0byB0aGUgR1ZPIG91dHB1dCB3aXRoCisgKiBnbFhTZW5kUGJ1ZmZlclRv
VmlkZW9OVigpOyBzZWUgdGhlIEdMWF9OVl92aWRlb19vdXQgc3BlYyBmb3IgbW9yZQorICogZGV0
YWlscy4KKyAqCisgKiAtIGlmIHVzaW5nIHRoZSBHTFhfTlZfcHJlc2VudF92aWRlbyBleHRlbnNp
b24sIGNhbGwKKyAqIGdsWEJpbmRWaWRlb0RldmljZU5WKCkgdG8gYmluZCB0aGUgR1ZPIHZpZGVv
IGRldmljZSB0byBjdXJyZW50CisgKiBPcGVuR0wgY29udGV4dC4KKyAqCisgKiBOb3RlIHRoYXQg
c2V0dGluZyBtb3N0IEdWTyBhdHRyaWJ1dGVzIG9ubHkgY2F1c2VzIHRoZSB2YWx1ZSB0byBiZQor
ICogY2FjaGVkIGluIHRoZSBYIHNlcnZlci4gIFRoZSB2YWx1ZXMgd2lsbCBiZSBmbHVzaGVkIHRv
IHRoZSBoYXJkd2FyZQorICogZWl0aGVyIHdoZW4gdGhlIG5leHQgTWV0YU1vZGUgaXMgc2V0IHRo
YXQgdXNlcyB0aGUgR1ZPIGRpc3BsYXkKKyAqIGRldmljZSwgb3Igd2hlbiBhIEdMWCBwYnVmZmVy
IGlzIGJvdW5kIHRvIHRoZSBHVk8gb3V0cHV0ICh3aXRoCisgKiBnbFhCaW5kVmlkZW9JbWFnZU5W
KCkpLgorICoKKyAqIE5vdGUgdGhhdCBHTFhfTlZfdmlkZW9fb3V0L0dMWF9OVl9wcmVzZW50X3Zp
ZGVvIGFuZCBYIHNjcmVlbiB1c2UKKyAqIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuICBJZiBhIE1l
dGFNb2RlIGlzIGN1cnJlbnRseSB1c2luZyB0aGUgR1ZPCisgKiBkZXZpY2UsIHRoZW4gZ2xYR2V0
VmlkZW9EZXZpY2VOViBhbmQgZ2xYQmluZFZpZGVvSW1hZ2VOVigpIHdpbGwKKyAqIGZhaWwuICBT
aW1pbGFybHksIGlmIGEgR0xYIGNsaWVudCBoYXMgbG9ja2VkIHRoZSBHVk8gb3V0cHV0ICh2aWEK
KyAqIGdsWEdldFZpZGVvRGV2aWNlTlYgb3IgZ2xYQmluZFZpZGVvSW1hZ2VOViksIHRoZW4gc2V0
dGluZyBhCisgKiBNZXRhTW9kZSB0aGF0IHVzZXMgdGhlIEdWTyBkZXZpY2Ugd2lsbCBmYWlsLiAg
VGhlCisgKiBOVl9DVFJMX0dWT19HTFhfTE9DS0VEIGV2ZW50IHdpbGwgYmUgc2VudCB3aGVuIGEg
R0xYIGNsaWVudCBsb2NrcworICogdGhlIEdWTyBvdXRwdXQuCisgKgorICovCisKKy8qCisgKiBO
Vl9DVFJMX0dWT19TVVBQT1JURUQgLSByZXR1cm5zIHdoZXRoZXIgdGhpcyBYIHNjcmVlbiBzdXBw
b3J0cyBHVk87CisgKiBpZiB0aGlzIHNjcmVlbiBkb2VzIG5vdCBzdXBwb3J0IEdWTyBvdXRwdXQs
IHRoZW4gYWxsIG90aGVyIEdWTworICogYXR0cmlidXRlcyBhcmUgdW5hdmFpbGFibGUuCisgKi8K
KworI2RlZmluZSBOVl9DVFJMX0dWT19TVVBQT1JURUQgNjcgLyogUi0tICovCisjZGVmaW5lIE5W
X0NUUkxfR1ZPX1NVUFBPUlRFRF9GQUxTRSAwCisjZGVmaW5lIE5WX0NUUkxfR1ZPX1NVUFBPUlRF
RF9UUlVFIDEKKworLyoKKyAqIE5WX0NUUkxfR1ZPX1NZTkNfTU9ERSAtIHNlbGVjdHMgdGhlIEdW
TyBzeW5jIG1vZGU7IHBvc3NpYmxlIHZhbHVlcworICogYXJlOgorICoKKyAqIEZSRUVfUlVOTklO
RyAtIEdWTyBkb2VzIG5vdCBzeW5jIHRvIGFueSBleHRlcm5hbCBzaWduYWwKKyAqCisgKiBHRU5M
T0NLIC0gdGhlIEdWTyBvdXRwdXQgaXMgZ2VubG9ja2VkIHRvIGFuIGluY29taW5nIHN5bmMgc2ln
bmFsOworICogZ2VubG9ja2luZyBsb2NrcyBhdCBoc3luYy4gIFRoaXMgcmVxdWlyZXMgdGhhdCB0
aGUgb3V0cHV0IHZpZGVvCisgKiBmb3JtYXQgZXhhY3RseSBtYXRjaCB0aGUgaW5jb21pbmcgc3lu
YyB2aWRlbyBmb3JtYXQuCisgKgorICogRlJBTUVMT0NLIC0gdGhlIEdWTyBvdXRwdXQgaXMgZnJh
bWUgbG9ja2VkIHRvIGFuIGluY29taW5nIHN5bmMKKyAqIHNpZ25hbDsgZnJhbWUgbG9ja2luZyBs
b2NrcyBhdCB2c3luYy4gIFRoaXMgcmVxdWlyZXMgdGhhdCB0aGUgb3V0cHV0CisgKiB2aWRlbyBm
b3JtYXQgaGF2ZSB0aGUgc2FtZSByZWZyZXNoIHJhdGUgYXMgdGhlIGluY29taW5nIHN5bmMgdmlk
ZW8KKyAqIGZvcm1hdC4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfR1ZPX1NZTkNfTU9ERSA2OCAv
KiBSVy0gKi8KKyNkZWZpbmUgTlZfQ1RSTF9HVk9fU1lOQ19NT0RFX0ZSRUVfUlVOTklORyAwCisj
ZGVmaW5lIE5WX0NUUkxfR1ZPX1NZTkNfTU9ERV9HRU5MT0NLIDEKKyNkZWZpbmUgTlZfQ1RSTF9H
Vk9fU1lOQ19NT0RFX0ZSQU1FTE9DSyAyCisKKy8qCisgKiBOVl9DVFJMX0dWT19TWU5DX1NPVVJD
RSAtIGlmIE5WX0NUUkxfR1ZPX1NZTkNfTU9ERSBpcyBzZXQgdG8gZWl0aGVyCisgKiBHRU5MT0NL
IG9yIEZSQU1FTE9DSywgdGhpcyBjb250cm9scyB3aGljaCBzeW5jIHNvdXJjZSBpcyB1c2VkIGFz
CisgKiB0aGUgaW5jb21pbmcgc3luYyBzaWduYWwgKGVpdGhlciBDb21wb3NpdGUgb3IgU0RJKS4g
IElmCisgKiBOVl9DVFJMX0dWT19TWU5DX01PREUgaXMgRlJFRV9SVU5OSU5HLCB0aGlzIGF0dHJp
YnV0ZSBoYXMgbm8KKyAqIGVmZmVjdC4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfR1ZPX1NZTkNf
U09VUkNFIDY5IC8qIFJXLSAqLworI2RlZmluZSBOVl9DVFJMX0dWT19TWU5DX1NPVVJDRV9DT01Q
T1NJVEUgMAorI2RlZmluZSBOVl9DVFJMX0dWT19TWU5DX1NPVVJDRV9TREkgMQorCisvKgorICog
TlZfQ1RSTF9HVklPX1JFUVVFU1RFRF9WSURFT19GT1JNQVQgLSBzcGVjaWZpZXMgdGhlIGRlc2ly
ZWQgb3V0cHV0IHZpZGVvCisgKiBmb3JtYXQgZm9yIEdWTyBkZXZpY2VzIG9yIHRoZSBkZXNpcmVk
IGlucHV0IHZpZGVvIGZvcm1hdCBmb3IgR1ZJIGRldmljZXMuCisgKgorICogTm90ZSB0aGF0IGZv
ciBHVk8sIHRoZSB2YWxpZCB2aWRlbyBmb3JtYXRzIG1heSB2YXJ5IGRlcGVuZGluZyBvbgorICog
dGhlIE5WX0NUUkxfR1ZPX1NZTkNfTU9ERSBhbmQgdGhlIGluY29taW5nIHN5bmMgdmlkZW8gZm9y
bWF0LiAgU2VlCisgKiB0aGUgZGVmaW5pdGlvbiBvZiBOVl9DVFJMX0dWT19TWU5DX01PREUuCisg
KgorICogTm90ZSB0aGF0IHdoZW4gcXVlcnlpbmcgdGhlIFZhbGlkVmFsdWVzIGZvciB0aGlzIGRh
dGEgdHlwZSwgdGhlCisgKiB2YWx1ZXMgYXJlIHJlcG9ydGVkIGFzIGJpdHMgd2l0aGluIGEgYml0
bWFzaworICogKEFUVFJJQlVURV9UWVBFX0lOVF9CSVRTKTsgdW5mb3J0dW5hdGVseSwgdGhlcmUg
YXJlIG1vcmUgdmFsaWQKKyAqIHZhbHVlIGJpdHMgdGhhbiB3aWxsIGZpdCBpbiBhIHNpbmdsZSAz
Mi1iaXQgdmFsdWUuICBUbyBzb2x2ZSB0aGlzLAorICogcXVlcnkgdGhlIFZhbGlkVmFsdWVzIGZv
ciBOVl9DVFJMX0dWSU9fUkVRVUVTVEVEX1ZJREVPX0ZPUk1BVCB0bworICogY2hlY2sgd2hpY2gg
b2YgdGhlIGZpcnN0IDMxIFZJREVPX0ZPUk1BVFMgYXJlIHZhbGlkLCBxdWVyeSB0aGUKKyAqIFZh
bGlkVmFsdWVzIGZvciBOVl9DVFJMX0dWSU9fUkVRVUVTVEVEX1ZJREVPX0ZPUk1BVDIgdG8gY2hl
Y2sgd2hpY2gKKyAqIG9mIHRoZSAzMi02MyBWSURFT19GT1JNQVRTIGFyZSB2YWxpZCwgYW5kIHF1
ZXJ5IHRoZSBWYWxpZFZhbHVlcyBvZgorICogTlZfQ1RSTF9HVklPX1JFUVVFU1RFRF9WSURFT19G
T1JNQVQzIHRvIGNoZWNrIHdoaWNoIG9mIHRoZSA2NC05NQorICogVklERU9fRk9STUFUUyBhcmUg
dmFsaWQuCisgKgorICogTm90ZTogU2V0dGluZyB0aGlzIGF0dHJpYnV0ZSBvbiBhIEdWSSBkZXZp
Y2UgbWF5IGFsc28gcmVzdWx0IGluIHRoZQorICogICAgICAgZm9sbG93aW5nIE5WLUNPTlRST0wg
YXR0cmlidXRlcyBiZWluZyByZXNldCBvbiB0aGF0IGRldmljZSAodG8KKyAqICAgICAgIGVuc3Vy
ZSB0aGUgY29uZmlndXJhdGlvbiByZW1haW5zIHZhbGlkKToKKyAqICAgICAgICAgICBOVl9DVFJM
X0dWSV9SRVFVRVNURURfU1RSRUFNX0JJVFNfUEVSX0NPTVBPTkVOVAorICogICAgICAgICAgIE5W
X0NUUkxfR1ZJX1JFUVVFU1RFRF9TVFJFQU1fQ09NUE9ORU5UX1NBTVBMSU5HCisgKi8KKworI2Rl
ZmluZSBOVl9DVFJMX0dWSU9fUkVRVUVTVEVEX1ZJREVPX0ZPUk1BVCA3MCAvKiBSVy0tSSAqLwor
CisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfTk9ORSAwCisjZGVmaW5lIE5WX0NU
UkxfR1ZJT19WSURFT19GT1JNQVRfNDg3SV81OV85NF9TTVBURTI1OV9OVFNDIDEKKyNkZWZpbmUg
TlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF81NzZJXzUwXzAwX1NNUFRFMjU5X1BBTCAyCisjZGVm
aW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfNzIwUF81OV85NF9TTVBURTI5NiAzCisjZGVm
aW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfNzIwUF82MF8wMF9TTVBURTI5NiA0CisjZGVm
aW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMTAzNUlfNTlfOTRfU01QVEUyNjAgNQorI2Rl
ZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzEwMzVJXzYwXzAwX1NNUFRFMjYwIDYKKyNk
ZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8xMDgwSV81MF8wMF9TTVBURTI5NSA3Cisj
ZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMTA4MElfNTBfMDBfU01QVEUyNzQgOAor
I2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzEwODBJXzU5Xzk0X1NNUFRFMjc0IDkK
KyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8xMDgwSV82MF8wMF9TTVBURTI3NCAx
MAorI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzEwODBQXzIzXzk3Nl9TTVBURTI3
NCAxMQorI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzEwODBQXzI0XzAwX1NNUFRF
Mjc0IDEyCisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMTA4MFBfMjVfMDBfU01Q
VEUyNzQgMTMKKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8xMDgwUF8yOV85N19T
TVBURTI3NCAxNAorI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzEwODBQXzMwXzAw
X1NNUFRFMjc0IDE1CisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfNzIwUF81MF8w
MF9TTVBURTI5NiAxNgorI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzEwODBJXzQ4
XzAwX1NNUFRFMjc0IDE3CisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMTA4MElf
NDdfOTZfU01QVEUyNzQgMTgKKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF83MjBQ
XzMwXzAwX1NNUFRFMjk2IDE5CisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfNzIw
UF8yOV85N19TTVBURTI5NiAyMAorI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzcy
MFBfMjVfMDBfU01QVEUyOTYgMjEKKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF83
MjBQXzI0XzAwX1NNUFRFMjk2IDIyCisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRf
NzIwUF8yM185OF9TTVBURTI5NiAyMworI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFU
XzEwODBQU0ZfMjVfMDBfU01QVEUyNzQgMjQKKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZP
Uk1BVF8xMDgwUFNGXzI5Xzk3X1NNUFRFMjc0IDI1CisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURF
T19GT1JNQVRfMTA4MFBTRl8zMF8wMF9TTVBURTI3NCAyNgorI2RlZmluZSBOVl9DVFJMX0dWSU9f
VklERU9fRk9STUFUXzEwODBQU0ZfMjRfMDBfU01QVEUyNzQgMjcKKyNkZWZpbmUgTlZfQ1RSTF9H
VklPX1ZJREVPX0ZPUk1BVF8xMDgwUFNGXzIzXzk4X1NNUFRFMjc0IDI4CisjZGVmaW5lIE5WX0NU
UkxfR1ZJT19WSURFT19GT1JNQVRfMjA0OFBfMzBfMDBfU01QVEUzNzIgMjkKKyNkZWZpbmUgTlZf
Q1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8yMDQ4UF8yOV85N19TTVBURTM3MiAzMAorI2RlZmluZSBO
Vl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzIwNDhJXzYwXzAwX1NNUFRFMzcyIDMxCisjZGVmaW5l
IE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMjA0OElfNTlfOTRfU01QVEUzNzIgMzIKKyNkZWZp
bmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8yMDQ4UF8yNV8wMF9TTVBURTM3MiAzMworI2Rl
ZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzIwNDhJXzUwXzAwX1NNUFRFMzcyIDM0Cisj
ZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMjA0OFBfMjRfMDBfU01QVEUzNzIgMzUK
KyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8yMDQ4UF8yM185OF9TTVBURTM3MiAz
NgorI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzIwNDhJXzQ4XzAwX1NNUFRFMzcy
IDM3CisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMjA0OElfNDdfOTZfU01QVEUz
NzIgMzgKKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8xMDgwUF81MF8wMF8zR19M
RVZFTF9BX1NNUFRFMjc0IDM5CisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMTA4
MFBfNTlfOTRfM0dfTEVWRUxfQV9TTVBURTI3NCA0MAorI2RlZmluZSBOVl9DVFJMX0dWSU9fVklE
RU9fRk9STUFUXzEwODBQXzYwXzAwXzNHX0xFVkVMX0FfU01QVEUyNzQgNDEKKyNkZWZpbmUgTlZf
Q1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8xMDgwUF82MF8wMF8zR19MRVZFTF9CX1NNUFRFMjc0IDQy
CisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMTA4MElfNjBfMDBfM0dfTEVWRUxf
Ql9TTVBURTI3NCA0MworI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzIwNDhJXzYw
XzAwXzNHX0xFVkVMX0JfU01QVEUzNzIgNDQKKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZP
Uk1BVF8xMDgwUF81MF8wMF8zR19MRVZFTF9CX1NNUFRFMjc0IDQ1CisjZGVmaW5lIE5WX0NUUkxf
R1ZJT19WSURFT19GT1JNQVRfMTA4MElfNTBfMDBfM0dfTEVWRUxfQl9TTVBURTI3NCA0NgorI2Rl
ZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzIwNDhJXzUwXzAwXzNHX0xFVkVMX0JfU01Q
VEUzNzIgNDcKKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8xMDgwUF8zMF8wMF8z
R19MRVZFTF9CX1NNUFRFMjc0IDQ4CisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRf
MjA0OFBfMzBfMDBfM0dfTEVWRUxfQl9TTVBURTM3MiA0OQorI2RlZmluZSBOVl9DVFJMX0dWSU9f
VklERU9fRk9STUFUXzEwODBQXzI1XzAwXzNHX0xFVkVMX0JfU01QVEUyNzQgNTAKKyNkZWZpbmUg
TlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8yMDQ4UF8yNV8wMF8zR19MRVZFTF9CX1NNUFRFMzcy
IDUxCisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMTA4MFBfMjRfMDBfM0dfTEVW
RUxfQl9TTVBURTI3NCA1MgorI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzIwNDhQ
XzI0XzAwXzNHX0xFVkVMX0JfU01QVEUzNzIgNTMKKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVP
X0ZPUk1BVF8xMDgwSV80OF8wMF8zR19MRVZFTF9CX1NNUFRFMjc0IDU0CisjZGVmaW5lIE5WX0NU
UkxfR1ZJT19WSURFT19GT1JNQVRfMjA0OElfNDhfMDBfM0dfTEVWRUxfQl9TTVBURTM3MiA1NQor
I2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzEwODBQXzU5Xzk0XzNHX0xFVkVMX0Jf
U01QVEUyNzQgNTYKKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8xMDgwSV81OV85
NF8zR19MRVZFTF9CX1NNUFRFMjc0IDU3CisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JN
QVRfMjA0OElfNTlfOTRfM0dfTEVWRUxfQl9TTVBURTM3MiA1OAorI2RlZmluZSBOVl9DVFJMX0dW
SU9fVklERU9fRk9STUFUXzEwODBQXzI5Xzk3XzNHX0xFVkVMX0JfU01QVEUyNzQgNTkKKyNkZWZp
bmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8yMDQ4UF8yOV85N18zR19MRVZFTF9CX1NNUFRF
MzcyIDYwCisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMTA4MFBfMjNfOThfM0df
TEVWRUxfQl9TTVBURTI3NCA2MQorI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzIw
NDhQXzIzXzk4XzNHX0xFVkVMX0JfU01QVEUzNzIgNjIKKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJ
REVPX0ZPUk1BVF8xMDgwSV80N185Nl8zR19MRVZFTF9CX1NNUFRFMjc0IDYzCisjZGVmaW5lIE5W
X0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMjA0OElfNDdfOTZfM0dfTEVWRUxfQl9TTVBURTM3MiA2
NAorCisvKgorICogVGhlIGZvbGxvd2luZyBhcmUgZGVwcmVjYXRlZDsgTlZfQ1RSTF9HVklPX1JF
UVVFU1RFRF9WSURFT19GT1JNQVQgYW5kIHRoZQorICogY29ycmVzcG9uZGluZyBOVl9DVFJMX0dW
SU9fKiBmb3JtYXRzIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCisgKi8KKyNkZWZpbmUgTlZfQ1RS
TF9HVk9fT1VUUFVUX1ZJREVPX0ZPUk1BVCA3MCAvKiBSVy0gKi8KKworI2RlZmluZSBOVl9DVFJM
X0dWT19WSURFT19GT1JNQVRfTk9ORSAwCisjZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1B
VF80ODdJXzU5Xzk0X1NNUFRFMjU5X05UU0MgMQorI2RlZmluZSBOVl9DVFJMX0dWT19WSURFT19G
T1JNQVRfNTc2SV81MF8wMF9TTVBURTI1OV9QQUwgMgorI2RlZmluZSBOVl9DVFJMX0dWT19WSURF
T19GT1JNQVRfNzIwUF81OV85NF9TTVBURTI5NiAzCisjZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVP
X0ZPUk1BVF83MjBQXzYwXzAwX1NNUFRFMjk2IDQKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9f
Rk9STUFUXzEwMzVJXzU5Xzk0X1NNUFRFMjYwIDUKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9f
Rk9STUFUXzEwMzVJXzYwXzAwX1NNUFRFMjYwIDYKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9f
Rk9STUFUXzEwODBJXzUwXzAwX1NNUFRFMjk1IDcKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9f
Rk9STUFUXzEwODBJXzUwXzAwX1NNUFRFMjc0IDgKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9f
Rk9STUFUXzEwODBJXzU5Xzk0X1NNUFRFMjc0IDkKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9f
Rk9STUFUXzEwODBJXzYwXzAwX1NNUFRFMjc0IDEwCisjZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVP
X0ZPUk1BVF8xMDgwUF8yM185NzZfU01QVEUyNzQgMTEKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fVklE
RU9fRk9STUFUXzEwODBQXzI0XzAwX1NNUFRFMjc0IDEyCisjZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJ
REVPX0ZPUk1BVF8xMDgwUF8yNV8wMF9TTVBURTI3NCAxMworI2RlZmluZSBOVl9DVFJMX0dWT19W
SURFT19GT1JNQVRfMTA4MFBfMjlfOTdfU01QVEUyNzQgMTQKKyNkZWZpbmUgTlZfQ1RSTF9HVk9f
VklERU9fRk9STUFUXzEwODBQXzMwXzAwX1NNUFRFMjc0IDE1CisjZGVmaW5lIE5WX0NUUkxfR1ZP
X1ZJREVPX0ZPUk1BVF83MjBQXzUwXzAwX1NNUFRFMjk2IDE2CisjZGVmaW5lIE5WX0NUUkxfR1ZP
X1ZJREVPX0ZPUk1BVF8xMDgwSV80OF8wMF9TTVBURTI3NCAxNworI2RlZmluZSBOVl9DVFJMX0dW
T19WSURFT19GT1JNQVRfMTA4MElfNDdfOTZfU01QVEUyNzQgMTgKKyNkZWZpbmUgTlZfQ1RSTF9H
Vk9fVklERU9fRk9STUFUXzcyMFBfMzBfMDBfU01QVEUyOTYgMTkKKyNkZWZpbmUgTlZfQ1RSTF9H
Vk9fVklERU9fRk9STUFUXzcyMFBfMjlfOTdfU01QVEUyOTYgMjAKKyNkZWZpbmUgTlZfQ1RSTF9H
Vk9fVklERU9fRk9STUFUXzcyMFBfMjVfMDBfU01QVEUyOTYgMjEKKyNkZWZpbmUgTlZfQ1RSTF9H
Vk9fVklERU9fRk9STUFUXzcyMFBfMjRfMDBfU01QVEUyOTYgMjIKKyNkZWZpbmUgTlZfQ1RSTF9H
Vk9fVklERU9fRk9STUFUXzcyMFBfMjNfOThfU01QVEUyOTYgMjMKKyNkZWZpbmUgTlZfQ1RSTF9H
Vk9fVklERU9fRk9STUFUXzEwODBQU0ZfMjVfMDBfU01QVEUyNzQgMjQKKyNkZWZpbmUgTlZfQ1RS
TF9HVk9fVklERU9fRk9STUFUXzEwODBQU0ZfMjlfOTdfU01QVEUyNzQgMjUKKyNkZWZpbmUgTlZf
Q1RSTF9HVk9fVklERU9fRk9STUFUXzEwODBQU0ZfMzBfMDBfU01QVEUyNzQgMjYKKyNkZWZpbmUg
TlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzEwODBQU0ZfMjRfMDBfU01QVEUyNzQgMjcKKyNkZWZp
bmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzEwODBQU0ZfMjNfOThfU01QVEUyNzQgMjgKKyNk
ZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzIwNDhQXzMwXzAwX1NNUFRFMzcyIDI5Cisj
ZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF8yMDQ4UF8yOV85N19TTVBURTM3MiAzMAor
I2RlZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfMjA0OElfNjBfMDBfU01QVEUzNzIgMzEK
KyNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzIwNDhJXzU5Xzk0X1NNUFRFMzcyIDMy
CisjZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF8yMDQ4UF8yNV8wMF9TTVBURTM3MiAz
MworI2RlZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfMjA0OElfNTBfMDBfU01QVEUzNzIg
MzQKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzIwNDhQXzI0XzAwX1NNUFRFMzcy
IDM1CisjZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF8yMDQ4UF8yM185OF9TTVBURTM3
MiAzNgorI2RlZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfMjA0OElfNDhfMDBfU01QVEUz
NzIgMzcKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzIwNDhJXzQ3Xzk2X1NNUFRF
MzcyIDM4CisKKy8qCisgKiBOVl9DVFJMX0dWSU9fREVURUNURURfVklERU9fRk9STUFUIC0gaW5k
aWNhdGVzIHRoZSBpbnB1dCB2aWRlbyBmb3JtYXQKKyAqIGRldGVjdGVkIGZvciBHVk8gb3IgR1ZJ
IGRldmljZXM7IHRoZSBwb3NzaWJsZSB2YWx1ZXMgYXJlIHRoZQorICogTlZfQ1RSTF9HVklPX1ZJ
REVPX0ZPUk1BVCBjb25zdGFudHMuCisgKgorICogRm9yIEdWSSBkZXZpY2VzLCB0aGUgamFjayBu
dW1iZXIgc2hvdWxkIGJlIHNwZWNpZmllZCBpbiB0aGUgbG93ZXIKKyAqIDE2IGJpdHMgb2YgdGhl
ICJkaXNwbGF5X21hc2siIHBhcmFtZXRlciwgd2hpbGUgdGhlIGNoYW5uZWwgbnVtYmVyIHNob3Vs
ZCBiZQorICogc3BlY2lmaWVkIGluIHRoZSB1cHBlciAxNiBiaXRzLgorICovCisKKyNkZWZpbmUg
TlZfQ1RSTF9HVklPX0RFVEVDVEVEX1ZJREVPX0ZPUk1BVCA3MSAvKiBSLS1JICovCisKKy8qCisg
KiBUaGUgZm9sbG93aW5nIGlzIGRlcHJlY2F0ZWQuICBVc2UgTlZfQ1RSTF9HVklPX0RFVEVDVEVE
X1ZJREVPX0ZPUk1BVCwKKyAqIGluc3RlYWQuCisgKi8KKyNkZWZpbmUgTlZfQ1RSTF9HVk9fSU5Q
VVRfVklERU9fRk9STUFUIDcxIC8qIFItLSAqLworCisvKgorICogTlZfQ1RSTF9HVk9fREFUQV9G
T1JNQVQgLSBUaGlzIGNvbnRyb2xzIGhvdyB0aGUgZGF0YSBpbiB0aGUgc291cmNlCisgKiAoZWl0
aGVyIHRoZSBYIHNjcmVlbiBvciB0aGUgR0xYIHBidWZmZXIpIGlzIGludGVycHJldHRlZCBhbmQK
KyAqIGRpc3BsYXllZC4KKyAqCisgKiBOb3RlOiBzb21lIG9mIHRoZSBiZWxvdyBEQVRBX0ZPUk1B
VFMgaGF2ZSBiZWVuIHJlbmFtZWQuICBGb3IKKyAqIGV4YW1wbGUsIFI4RzhCOF9UT19SR0I0NDQg
aGFzIGJlZW4gcmVuYW1lZCB0byBYOFg4WDhfNDQ0X1BBU1NUSFJVLgorICogVGhpcyBpcyB0byBt
b3JlIGFjY3VyYXRlbHkgcmVmbGVjdCBEQVRBX0ZPUk1BVFMgd2hlcmUgdGhlCisgKiBwZXItY2hh
bm5lbCBkYXRhIGNvdWxkIGJlIGVpdGhlciBSR0Igb3IgWUNyQ2IgLS0gdGhlIHBvaW50IGlzIHRo
YXQKKyAqIHRoZSBkcml2ZXIgYW5kIEdWTyBoYXJkd2FyZSBkbyBub3QgcGVyZm9ybSBhbnkgaW1w
bGljaXQgY29sb3Igc3BhY2UKKyAqIGNvbnZlcnNpb24gb24gdGhlIGRhdGE7IGl0IGlzIHBhc3Nl
ZCB0aHJvdWdoIHRvIHRoZSBTREkgb3V0LgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fREFU
QV9GT1JNQVQgNzIgLyogUlctICovCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUX1I4
RzhCOF9UT19ZQ1JDQjQ0NCAwCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUX1I4RzhC
OEE4X1RPX1lDUkNCQTQ0NDQgMQorI2RlZmluZSBOVl9DVFJMX0dWT19EQVRBX0ZPUk1BVF9SOEc4
QjhaMTBfVE9fWUNSQ0JaNDQ0NCAyCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUX1I4
RzhCOF9UT19ZQ1JDQjQyMiAzCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUX1I4RzhC
OEE4X1RPX1lDUkNCQTQyMjQgNAorI2RlZmluZSBOVl9DVFJMX0dWT19EQVRBX0ZPUk1BVF9SOEc4
QjhaMTBfVE9fWUNSQ0JaNDIyNCA1CisjZGVmaW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUX1I4
RzhCOF9UT19SR0I0NDQgNiAgLy8gcmVuYW1lZAorI2RlZmluZSBOVl9DVFJMX0dWT19EQVRBX0ZP
Uk1BVF9YOFg4WDhfNDQ0X1BBU1NUSFJVIDYKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JN
QVRfUjhHOEI4QThfVE9fUkdCQTQ0NDQgNyAgLy8gcmVuYW1lZAorI2RlZmluZSBOVl9DVFJMX0dW
T19EQVRBX0ZPUk1BVF9YOFg4WDhBOF80NDQ0X1BBU1NUSFJVIDcKKyNkZWZpbmUgTlZfQ1RSTF9H
Vk9fREFUQV9GT1JNQVRfUjhHOEI4WjEwX1RPX1JHQlo0NDQ0IDggIC8vIHJlbmFtZWQKKyNkZWZp
bmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRfWDhYOFg4WjhfNDQ0NF9QQVNTVEhSVSA4CisjZGVm
aW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUX1kxMENSMTBDQjEwX1RPX1lDUkNCNDQ0IDkgIC8v
IHJlbmFtZWQKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRfWDEwWDEwWDEwXzQ0NF9Q
QVNTVEhSVSA5CisjZGVmaW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUX1kxMENSOENCOF9UT19Z
Q1JDQjQ0NCAxMCAgLy8gcmVuYW1lZAorI2RlZmluZSBOVl9DVFJMX0dWT19EQVRBX0ZPUk1BVF9Y
MTBYOFg4XzQ0NF9QQVNTVEhSVSAxMAorI2RlZmluZSBOVl9DVFJMX0dWT19EQVRBX0ZPUk1BVF9Z
MTBDUjhDQjhBMTBfVE9fWUNSQ0JBNDQ0NCAxMSAgLy8gcmVuYW1lZAorI2RlZmluZSBOVl9DVFJM
X0dWT19EQVRBX0ZPUk1BVF9YMTBYOFg4QTEwXzQ0NDRfUEFTU1RIUlUgMTEKKyNkZWZpbmUgTlZf
Q1RSTF9HVk9fREFUQV9GT1JNQVRfWTEwQ1I4Q0I4WjEwX1RPX1lDUkNCWjQ0NDQgMTIgIC8vIHJl
bmFtZWQKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRfWDEwWDhYOFoxMF80NDQ0X1BB
U1NUSFJVIDEyCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUX0RVQUxfUjhHOEI4X1RP
X0RVQUxfWUNSQ0I0MjIgMTMKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRfRFVBTF9Z
OENSOENCOF9UT19EVUFMX1lDUkNCNDIyIDE0ICAvLyByZW5hbWVkCisjZGVmaW5lIE5WX0NUUkxf
R1ZPX0RBVEFfRk9STUFUX0RVQUxfWDhYOFg4X1RPX0RVQUxfNDIyX1BBU1NUSFJVIDE0CisjZGVm
aW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUX1IxMEcxMEIxMF9UT19ZQ1JDQjQyMiAxNQorI2Rl
ZmluZSBOVl9DVFJMX0dWT19EQVRBX0ZPUk1BVF9SMTBHMTBCMTBfVE9fWUNSQ0I0NDQgMTYKKyNk
ZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRfWTEyQ1IxMkNCMTJfVE9fWUNSQ0I0NDQgMTcg
IC8vIHJlbmFtZWQKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRfWDEyWDEyWDEyXzQ0
NF9QQVNTVEhSVSAxNworI2RlZmluZSBOVl9DVFJMX0dWT19EQVRBX0ZPUk1BVF9SMTJHMTJCMTJf
VE9fWUNSQ0I0NDQgMTgKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRfWDhYOFg4XzQy
Ml9QQVNTVEhSVSAxOQorI2RlZmluZSBOVl9DVFJMX0dWT19EQVRBX0ZPUk1BVF9YOFg4WDhBOF80
MjI0X1BBU1NUSFJVIDIwCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUX1g4WDhYOFo4
XzQyMjRfUEFTU1RIUlUgMjEKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRfWDEwWDEw
WDEwXzQyMl9QQVNTVEhSVSAyMgorI2RlZmluZSBOVl9DVFJMX0dWT19EQVRBX0ZPUk1BVF9YMTBY
OFg4XzQyMl9QQVNTVEhSVSAyMworI2RlZmluZSBOVl9DVFJMX0dWT19EQVRBX0ZPUk1BVF9YMTBY
OFg4QTEwXzQyMjRfUEFTU1RIUlUgMjQKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRf
WDEwWDhYOFoxMF80MjI0X1BBU1NUSFJVIDI1CisjZGVmaW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9S
TUFUX1gxMlgxMlgxMl80MjJfUEFTU1RIUlUgMjYKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9G
T1JNQVRfUjEyRzEyQjEyX1RPX1lDUkNCNDIyIDI3CisKKy8qCisgKiBOVl9DVFJMX0dWT19ESVNQ
TEFZX1hfU0NSRUVOIC0gbm8gbG9uZ2VyIHN1cHBvcnRlZAorICovCisKKyNkZWZpbmUgTlZfQ1RS
TF9HVk9fRElTUExBWV9YX1NDUkVFTiA3MyAvKiBSVy0gKi8KKyNkZWZpbmUgTlZfQ1RSTF9HVk9f
RElTUExBWV9YX1NDUkVFTl9FTkFCTEUgMQorI2RlZmluZSBOVl9DVFJMX0dWT19ESVNQTEFZX1hf
U0NSRUVOX0RJU0FCTEUgMAorCisvKgorICogTlZfQ1RSTF9HVk9fQ09NUE9TSVRFX1NZTkNfSU5Q
VVRfREVURUNURUQgLSBpbmRpY2F0ZXMgd2hldGhlcgorICogQ29tcG9zaXRlIFN5bmMgaW5wdXQg
aXMgZGV0ZWN0ZWQuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0dWT19DT01QT1NJVEVfU1lOQ19J
TlBVVF9ERVRFQ1RFRCA3NCAvKiBSLS0gKi8KKyNkZWZpbmUgTlZfQ1RSTF9HVk9fQ09NUE9TSVRF
X1NZTkNfSU5QVVRfREVURUNURURfRkFMU0UgMAorI2RlZmluZSBOVl9DVFJMX0dWT19DT01QT1NJ
VEVfU1lOQ19JTlBVVF9ERVRFQ1RFRF9UUlVFIDEKKworLyoKKyAqIE5WX0NUUkxfR1ZPX0NPTVBP
U0lURV9TWU5DX0lOUFVUX0RFVEVDVF9NT0RFIC0gZ2V0L3NldCB0aGUKKyAqIENvbXBvc2l0ZSBT
eW5jIGlucHV0IGRldGVjdCBtb2RlLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fQ09NUE9T
SVRFX1NZTkNfSU5QVVRfREVURUNUX01PREUgNzUgLyogUlctICovCisjZGVmaW5lIE5WX0NUUkxf
R1ZPX0NPTVBPU0lURV9TWU5DX0lOUFVUX0RFVEVDVF9NT0RFX0FVVE8gMAorI2RlZmluZSBOVl9D
VFJMX0dWT19DT01QT1NJVEVfU1lOQ19JTlBVVF9ERVRFQ1RfTU9ERV9CSV9MRVZFTCAxCisjZGVm
aW5lIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9TWU5DX0lOUFVUX0RFVEVDVF9NT0RFX1RSSV9MRVZF
TCAyCisKKy8qCisgKiBOVl9DVFJMX0dWT19TWU5DX0lOUFVUX0RFVEVDVEVEIC0gaW5kaWNhdGVz
IHdoZXRoZXIgU0RJIFN5bmMgaW5wdXQKKyAqIGlzIGRldGVjdGVkLCBhbmQgd2hhdCB0eXBlLgor
ICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fU0RJX1NZTkNfSU5QVVRfREVURUNURUQgNzYgLyog
Ui0tICovCisjZGVmaW5lIE5WX0NUUkxfR1ZPX1NESV9TWU5DX0lOUFVUX0RFVEVDVEVEX05PTkUg
MAorI2RlZmluZSBOVl9DVFJMX0dWT19TRElfU1lOQ19JTlBVVF9ERVRFQ1RFRF9IRCAxCisjZGVm
aW5lIE5WX0NUUkxfR1ZPX1NESV9TWU5DX0lOUFVUX0RFVEVDVEVEX1NEIDIKKworLyoKKyAqIE5W
X0NUUkxfR1ZPX1ZJREVPX09VVFBVVFMgLSBpbmRpY2F0ZXMgd2hpY2ggR1ZPIHZpZGVvIG91dHB1
dAorICogY29ubmVjdG9ycyBhcmUgY3VycmVudGx5IG91dHB1dGluZyBkYXRhLgorICovCisKKyNk
ZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fT1VUUFVUUyA3NyAvKiBSLS0gKi8KKyNkZWZpbmUgTlZf
Q1RSTF9HVk9fVklERU9fT1VUUFVUU19OT05FIDAKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9f
T1VUUFVUU19WSURFTzEgMQorI2RlZmluZSBOVl9DVFJMX0dWT19WSURFT19PVVRQVVRTX1ZJREVP
MiAyCisjZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX09VVFBVVFNfVklERU9fQk9USCAzCisKKy8q
CisgKiBOVl9DVFJMX0dWT19GUEdBX1ZFUlNJT04gLSBpbmRpY2F0ZXMgdGhlIHZlcnNpb24gb2Yg
dGhlIEZpcm13YXJlIG9uCisgKiB0aGUgR1ZPIGRldmljZS4gIERlcHJlY2F0ZWQ7IHVzZQorICog
TlZfQ1RSTF9TVFJJTkdfR1ZJT19GSVJNV0FSRV9WRVJTSU9OIGluc3RlYWQuCisgKi8KKworI2Rl
ZmluZSBOVl9DVFJMX0dWT19GSVJNV0FSRV9WRVJTSU9OIDc4IC8qIFItLSAqLworCisvKgorICog
TlZfQ1RSTF9HVk9fU1lOQ19ERUxBWV9QSVhFTFMgLSBjb250cm9scyB0aGUgZGVsYXkgYmV0d2Vl
biB0aGUKKyAqIGlucHV0IHN5bmMgYW5kIHRoZSBvdXRwdXQgc3luYyBpbiBudW1iZXJzIG9mIHBp
eGVscyBmcm9tIGhzeW5jOworICogdGhpcyBpcyBhIDEyIGJpdCB2YWx1ZS4KKyAqCisgKiBJZiB0
aGUgTlZfQ1RSTF9HVk9fQ0FQQUJJTElUSUVTX0FEVkFOQ0VfU1lOQ19TS0VXIGJpdCBpcyBzZXQs
CisgKiB0aGVuIHNldHRpbmcgdGhpcyB2YWx1ZSB3aWxsIHNldCBhbiBhZHZhbmNlIGluc3RlYWQg
b2YgYSBkZWxheS4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfR1ZPX1NZTkNfREVMQVlfUElYRUxT
IDc5IC8qIFJXLSAqLworCisvKgorICogTlZfQ1RSTF9HVk9fU1lOQ19ERUxBWV9MSU5FUyAtIGNv
bnRyb2xzIHRoZSBkZWxheSBiZXR3ZWVuIHRoZSBpbnB1dAorICogc3luYyBhbmQgdGhlIG91dHB1
dCBzeW5jIGluIG51bWJlcnMgb2YgbGluZXMgZnJvbSB2c3luYzsgdGhpcyBpcyBhCisgKiAxMiBi
aXQgdmFsdWUuCisgKgorICogSWYgdGhlIE5WX0NUUkxfR1ZPX0NBUEFCSUxJVElFU19BRFZBTkNF
X1NZTkNfU0tFVyBiaXQgaXMgc2V0LAorICogdGhlbiBzZXR0aW5nIHRoaXMgdmFsdWUgd2lsbCBz
ZXQgYW4gYWR2YW5jZSBpbnN0ZWFkIG9mIGEgZGVsYXkuCisgKi8KKworI2RlZmluZSBOVl9DVFJM
X0dWT19TWU5DX0RFTEFZX0xJTkVTIDgwIC8qIFJXLSAqLworCisvKgorICogTlZfQ1RSTF9HVk9f
SU5QVVRfVklERU9fRk9STUFUX1JFQUNRVUlSRSAtIG11c3QgYmUgc2V0IGZvciBhIHBlcmlvZAor
ICogb2YgYWJvdXQgMiBzZWNvbmRzIGZvciB0aGUgbmV3IElucHV0VmlkZW9Gb3JtYXQgdG8gYmUg
cHJvcGVybHkKKyAqIGxvY2tlZCB0by4gIEluIG52aWRpYS1zZXR0aW5ncywgd2UgZG8gYSByZWFj
cXVpcmUgd2hlbmV2ZXIgZ2VubG9jaworICogb3IgZnJhbWUgbG9jayBtb2RlIGlzIGVudGVyZWQg
aW50bywgd2hlbiB0aGUgdXNlciBjbGlja3MgdGhlCisgKiAiZGV0ZWN0IiBidXR0b24uICBUaGlz
IHZhbHVlIGNhbiBiZSB3cml0dGVuLCBidXQgYWx3YXlzIHJlYWRzIGJhY2sKKyAqIF9GQUxTRS4K
KyAqLworCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0lOUFVUX1ZJREVPX0ZPUk1BVF9SRUFDUVVJUkUg
ODEgLyogLVctICovCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0lOUFVUX1ZJREVPX0ZPUk1BVF9SRUFD
UVVJUkVfRkFMU0UgMAorI2RlZmluZSBOVl9DVFJMX0dWT19JTlBVVF9WSURFT19GT1JNQVRfUkVB
Q1FVSVJFX1RSVUUgMQorCisvKgorICogTlZfQ1RSTF9HVk9fR0xYX0xPQ0tFRCAtIGluZGljYXRl
cyB0aGF0IEdWTyBjb25maWd1cmFiaWxpdHkgaXMKKyAqIGxvY2tlZCBieSBHTFg7IHRoaXMgb2Nj
dXJzIHdoZW4gZWl0aGVyIGdsWEdldFZpZGVvRGV2aWNlTlYgKHBhcnQgb2YKKyAqIEdMWF9OVl92
aWRlb19vdXQpIG9yIGdsWEJpbmRWaWRlb0RldmljZU5WIChwYXJ0IG9mCisgKiBHTFhfTlZfcHJl
c2VudF92aWRlbykgaXMgY2FsbGVkLiAgQWxsIEdWTyBvdXRwdXQgcmVzb3VyY2VzIGFyZQorICog
bG9ja2VkIHVudGlsIHJlbGVhc2VkIGJ5IHRoZSBHTFhfTlZfdmlkZW9fb3V0L0dMWF9OVl9wcmVz
ZW50X3ZpZGVvCisgKiBjbGllbnQuCisgKgorICogV2hlbiBHVk8gaXMgbG9ja2VkLCBzZXR0aW5n
IG9mIHRoZSBmb2xsb3dpbmcgR1ZPIE5WLUNPTlRST0wgYXR0cmlidXRlcyB3aWxsCisgKiBub3Qg
aGFwcGVuIGltbWVkaWF0ZWx5IGFuZCB3aWxsIGluc3RlYWQgYmUgY2FjaGVkLiAgVGhlIEdWTyBy
ZXNvdXJjZSB3aWxsCisgKiBuZWVkIHRvIGJlIGRpc2FibGVkL3JlbGVhc2VkIGFuZCByZS1lbmFi
bGVkL2NsYWltZWQgZm9yIHRoZSB2YWx1ZXMgdG8gYmUKKyAqIGZsdXNoZWQuIFRoZXNlIGF0dHJp
YnV0ZXMgYXJlOgorICogICAgTlZfQ1RSTF9HVklPX1JFUVVFU1RFRF9WSURFT19GT1JNQVQKKyAq
ICAgIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUCisgKiAgICBOVl9DVFJMX0dWT19GTElQX1FVRVVF
X1NJWkUKKyAqCisgKiBUaGlzIGF0dHJpYnV0ZSBpcyBkZXByZWNhdGVkIGFuZCBtYXkgYmUgcmVt
b3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiAgSXRzCisgKiBmdW5jdGlvbmFsaXR5IGhhcyBiZWVu
IHJlcGxhY2VkIGJ5IE5WX0NUUkxfR1ZPX0xPQ0tfT1dORVIuCisgKi8KKworI2RlZmluZSBOVl9D
VFJMX0dWT19HTFhfTE9DS0VEIDgyIC8qIFItLSAqLworI2RlZmluZSBOVl9DVFJMX0dWT19HTFhf
TE9DS0VEX0ZBTFNFIDAKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fR0xYX0xPQ0tFRF9UUlVFIDEKKwor
LyoKKyAqIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfe1dJRFRILEhFSUdIVCxSRUZSRVNIX1JB
VEV9IC0gcXVlcnkgdGhlCisgKiB3aWR0aCwgaGVpZ2h0LCBhbmQgcmVmcmVzaCByYXRlIGZvciB0
aGUgc3BlY2lmaWVkCisgKiBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXyouICBTbyB0aGF0IHRo
aXMgY2FuIGJlIHF1ZXJpZWQgd2l0aAorICogZXhpc3RpbmcgaW50ZXJmYWNlcywgWE5WQ1RSTFF1
ZXJ5QXR0cmlidXRlKCkgc2hvdWxkIGJlIHVzZWQsIGFuZAorICogdGhlIHZpZGVvIGZvcm1hdCBz
cGVjaWZpZWQgaW4gdGhlIGRpc3BsYXlfbWFzayBmaWVsZDsgZWc6CisgKgorICogWE5WQ1RSTFF1
ZXJ5QXR0cmlidXRlIChkcHksCisgKiAgICAgICAgICAgICAgICAgICAgICAgIHNjcmVlbiwKKyAq
ICAgICAgICAgICAgICAgICAgICAgICAgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF80ODdJXzU5
Xzk0X1NNUFRFMjU5X05UU0MsCisgKiAgICAgICAgICAgICAgICAgICAgICAgIE5WX0NUUkxfR1ZJ
T19WSURFT19GT1JNQVRfV0lEVEgsCisgKiAgICAgICAgICAgICAgICAgICAgICAgICZ2YWx1ZSk7
CisgKgorICogTm90ZSB0aGF0IFJlZnJlc2ggUmF0ZSBpcyBpbiBtaWxsaUhlcnR6IHZhbHVlcwor
ICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF9XSURUSCA4MyAgICAgICAg
LyogUi0tSSAqLworI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUX0hFSUdIVCA4NCAg
ICAgICAvKiBSLS1JICovCisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfUkVGUkVT
SF9SQVRFIDg1IC8qIFItLUkgKi8KKworLyogVGhlIGZvbGxvd2luZyBhcmUgZGVwcmVjYXRlZDsg
dXNlIHRoZSBOVl9DVFJMX0dWSU9fKiB2ZXJzaW9ucywgaW5zdGVhZCAqLworI2RlZmluZSBOVl9D
VFJMX0dWT19WSURFT19GT1JNQVRfV0lEVEggODMgICAgICAgIC8qIFItLSAqLworI2RlZmluZSBO
Vl9DVFJMX0dWT19WSURFT19GT1JNQVRfSEVJR0hUIDg0ICAgICAgIC8qIFItLSAqLworI2RlZmlu
ZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfUkVGUkVTSF9SQVRFIDg1IC8qIFItLSAqLworCisv
KgorICogTlZfQ1RSTF9HVk9fWF9TQ1JFRU5fUEFOX1tYWV0gLSBubyBsb25nZXIgc3VwcG9ydGVk
CisgKi8KKworI2RlZmluZSBOVl9DVFJMX0dWT19YX1NDUkVFTl9QQU5fWCA4NiAvKiBSVy0gKi8K
KyNkZWZpbmUgTlZfQ1RSTF9HVk9fWF9TQ1JFRU5fUEFOX1kgODcgLyogUlctICovCisKKy8qCisg
KiBOVl9DVFJMX0dQVV9PVkVSQ0xPQ0tJTkdfU1RBVEUgLSBxdWVyeSB0aGUgY3VycmVudCBvciBz
ZXQgYSBuZXcKKyAqIG92ZXJjbG9ja2luZyBzdGF0ZTsgdGhlIHZhbHVlIG9mIHRoaXMgYXR0cmli
dXRlIGNvbnRyb2xzIHRoZQorICogYXZhaWxhYmlsaXR5IG9mIGFkZGl0aW9uYWwgb3ZlcmNsb2Nr
aW5nIGF0dHJpYnV0ZXMgKHNlZSBiZWxvdykuCisgKgorICogTm90ZTogdGhpcyBhdHRyaWJ1dGUg
aXMgdW5hdmFpbGFibGUgdW5sZXNzIG92ZXJjbG9ja2luZyBzdXBwb3J0CisgKiBoYXMgYmVlbiBl
bmFibGVkIGluIHRoZSBYIHNlcnZlciAoYnkgdGhlIHVzZXIpLgorICovCisKKyNkZWZpbmUgTlZf
Q1RSTF9HUFVfT1ZFUkNMT0NLSU5HX1NUQVRFIDg4IC8qIFJXLUcgKi8KKyNkZWZpbmUgTlZfQ1RS
TF9HUFVfT1ZFUkNMT0NLSU5HX1NUQVRFX05PTkUgMAorI2RlZmluZSBOVl9DVFJMX0dQVV9PVkVS
Q0xPQ0tJTkdfU1RBVEVfTUFOVUFMIDEKKworLyoKKyAqIE5WX0NUUkxfR1BVX3syLDN9RF9DTE9D
S19GUkVRUyAtIHF1ZXJ5IG9yIHNldCB0aGUgR1BVIGFuZCBtZW1vcnkKKyAqIGNsb2NrcyBvZiB0
aGUgZGV2aWNlIGRyaXZpbmcgdGhlIFggc2NyZWVuLiAgTmV3IGNsb2NrIGZyZXF1ZW5jaWVzCisg
KiBhcmUgdGVzdGVkIGJlZm9yZSBiZWluZyBhcHBsaWVkLCBhbmQgbWF5IGJlIHJlamVjdGVkLgor
ICoKKyAqIE5vdGU6IGlmIHRoZSB0YXJnZXQgY2xvY2tzIGFyZSB0b28gYWdncmVzc2l2ZSwgdGhl
aXIgdGVzdGluZyBtYXkKKyAqIHJlbmRlciB0aGUgc3lzdGVtIHVucmVzcG9uc2l2ZS4KKyAqCisg
KiBOb3RlOiB3aGlsZSB0aGlzIGF0dHJpYnV0ZSBjYW4gYWx3YXlzIGJlIHF1ZXJpZWQsIGl0IGNh
bid0IGJlIHNldAorICogdW5sZXNzIE5WX0NUUkxfR1BVX09WRVJDTE9DS0lOR19TVEFURSBpcyBz
ZXQgdG8gX01BTlVBTC4gIFNpbmNlCisgKiB0aGUgdGFyZ2V0IGNsb2NrcyBtYXkgYmUgcmVqZWN0
ZWQsIHRoZSByZXF1ZXN0ZXIgc2hvdWxkIHJlYWQgdGhpcworICogYXR0cmlidXRlIGFmdGVyIHRo
ZSBzZXQgdG8gZGV0ZXJtaW5lIHN1Y2Nlc3Mgb3IgZmFpbHVyZS4KKyAqCisgKiBOVl9DVFJMX0dQ
VV97MiwzfURfQ0xPQ0tfRlJFUVMgYXJlICJwYWNrZWQiIGludGVnZXIgYXR0cmlidXRlczsgdGhl
CisgKiBHUFUgY2xvY2sgaXMgc3RvcmVkIGluIHRoZSB1cHBlciAxNiBiaXRzIG9mIHRoZSBpbnRl
Z2VyLCBhbmQgdGhlCisgKiBtZW1vcnkgY2xvY2sgaXMgc3RvcmVkIGluIHRoZSBsb3dlciAxNiBi
aXRzIG9mIHRoZSBpbnRlZ2VyLiAgQWxsCisgKiBjbG9jayB2YWx1ZXMgYXJlIGluIE1Iei4KKyAq
LworCisjZGVmaW5lIE5WX0NUUkxfR1BVXzJEX0NMT0NLX0ZSRVFTIDg5IC8qIFJXLUcgKi8KKyNk
ZWZpbmUgTlZfQ1RSTF9HUFVfM0RfQ0xPQ0tfRlJFUVMgOTAgLyogUlctRyAqLworCisvKgorICog
TlZfQ1RSTF9HUFVfREVGQVVMVF97MiwzfURfQ0xPQ0tfRlJFUVMgLSBxdWVyeSB0aGUgZGVmYXVs
dCBtZW1vcnkKKyAqIGFuZCBHUFUgY29yZSBjbG9ja3Mgb2YgdGhlIGRldmljZSBkcml2aW5nIHRo
ZSBYIHNjcmVlbi4KKyAqCisgKiBOVl9DVFJMX0dQVV9ERUZBVUxUX3syLDN9RF9DTE9DS19GUkVR
UyBhcmUgInBhY2tlZCIgaW50ZWdlcgorICogYXR0cmlidXRlczsgdGhlIEdQVSBjbG9jayBpcyBz
dG9yZWQgaW4gdGhlIHVwcGVyIDE2IGJpdHMgb2YgdGhlCisgKiBpbnRlZ2VyLCBhbmQgdGhlIG1l
bW9yeSBjbG9jayBpcyBzdG9yZWQgaW4gdGhlIGxvd2VyIDE2IGJpdHMgb2YgdGhlCisgKiBpbnRl
Z2VyLiAgQWxsIGNsb2NrIHZhbHVlcyBhcmUgaW4gTUh6LgorICovCisKKyNkZWZpbmUgTlZfQ1RS
TF9HUFVfREVGQVVMVF8yRF9DTE9DS19GUkVRUyA5MSAvKiBSLS1HICovCisjZGVmaW5lIE5WX0NU
UkxfR1BVX0RFRkFVTFRfM0RfQ0xPQ0tfRlJFUVMgOTIgLyogUi0tRyAqLworCisvKgorICogTlZf
Q1RSTF9HUFVfQ1VSUkVOVF9DTE9DS19GUkVRUyAtIHF1ZXJ5IHRoZSBjdXJyZW50IEdQVSBhbmQg
bWVtb3J5CisgKiBjbG9ja3Mgb2YgdGhlIGdyYXBoaWNzIGRldmljZSBkcml2aW5nIHRoZSBYIHNj
cmVlbi4KKyAqCisgKiBOVl9DVFJMX0dQVV9DVVJSRU5UX0NMT0NLX0ZSRVFTIGlzIGEgInBhY2tl
ZCIgaW50ZWdlciBhdHRyaWJ1dGU7CisgKiB0aGUgR1BVIGNsb2NrIGlzIHN0b3JlZCBpbiB0aGUg
dXBwZXIgMTYgYml0cyBvZiB0aGUgaW50ZWdlciwgYW5kCisgKiB0aGUgbWVtb3J5IGNsb2NrIGlz
IHN0b3JlZCBpbiB0aGUgbG93ZXIgMTYgYml0cyBvZiB0aGUgaW50ZWdlci4KKyAqIEFsbCBjbG9j
ayB2YWx1ZXMgYXJlIGluIE1Iei4gIEFsbCBjbG9jayB2YWx1ZXMgYXJlIGluIE1Iei4KKyAqLwor
CisjZGVmaW5lIE5WX0NUUkxfR1BVX0NVUlJFTlRfQ0xPQ0tfRlJFUVMgOTMgLyogUi0tRyAqLwor
CisvKgorICogTlZfQ1RSTF9HUFVfT1BUSU1BTF9DTE9DS19GUkVRUyAtIEhvbGRzIHRoZSBsYXN0
IGNhbGN1bGF0ZWQKKyAqIG9wdGltYWwgM0QgY2xvY2sgZnJlcXVlbmNpZXMgZm91bmQgYnkgdGhl
CisgKiBOVl9DVFJMX0dQVV9PUFRJTUFMX0NMT0NLX0ZSRVFTX0RFVEVDVElPTiBwcm9jZXNzLiAg
UXVlcnlpbmcgdGhpcworICogYXR0cmlidXRlIGJlZm9yZSBoYXZpbmcgcHJvYmVkIGZvciB0aGUg
b3B0aW1hbCBjbG9ja3Mgd2lsbCByZXR1cm4KKyAqIE5WX0NUUkxfR1BVX09QVElNQUxfQ0xPQ0tf
RlJFUVNfSU5WQUxJRAorICoKKyAqIE5vdGU6IHVubGVzcyBOVl9DVFJMX0dQVV9PVkVSQ0xPQ0tJ
TkdfU1RBVEUgaXMgc2V0IHRvIF9NQU5VQUwsIHRoZQorICogb3B0aW1hbCBjbG9jayBkZXRlY3Rp
b24gcHJvY2VzcyBpcyB1bmF2YWlsYWJsZS4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfR1BVX09Q
VElNQUxfQ0xPQ0tfRlJFUVMgOTQgLyogUi0tRyAqLworI2RlZmluZSBOVl9DVFJMX0dQVV9PUFRJ
TUFMX0NMT0NLX0ZSRVFTX0lOVkFMSUQgMAorCisvKgorICogTlZfQ1RSTF9HUFVfT1BUSU1BTF9D
TE9DS19GUkVRU19ERVRFQ1RJT04gLSBzZXQgdG8gX1NUQVJUIHRvCisgKiBpbml0aWF0ZSB0ZXN0
aW5nIGZvciB0aGUgb3B0aW1hbCAzRCBjbG9jayBmcmVxdWVuY2llcy4gIE9uY2UKKyAqIGZvdW5k
LCB0aGUgb3B0aW1hbCBjbG9jayBmcmVxdWVuY2llcyB3aWxsIGJlIHJldHVybmVkIGJ5IHRoZQor
ICogTlZfQ1RSTF9HUFVfT1BUSU1BTF9DTE9DS19GUkVRUyBhdHRyaWJ1dGUgYXN5bmNocm9ub3Vz
bHkKKyAqICh1c2luZyBhbiBYIGV2ZW50LCBzZWUgWE5WQ3RybFNlbGVjdE5vdGlmeSkuCisgKgor
ICogVG8gY2FuY2VsIGFuIG9uZ29pbmcgdGVzdCBmb3IgdGhlIG9wdGltYWwgY2xvY2tzLCBzZXQg
dGhlCisgKiBOVl9DVFJMX0dQVV9PUFRJTUFMX0NMT0NLX0ZSRVFTX0RFVEVDVElPTiBhdHRyaWJ1
dGUgdG8gX0NBTkNFTAorICoKKyAqIE5vdGU6IHVubGVzcyBOVl9DVFJMX0dQVV9PVkVSQ0xPQ0tJ
TkdfU1RBVEUgaXMgc2V0IHRvIF9NQU5VQUwsIHRoZQorICogb3B0aW1hbCBjbG9jayBkZXRlY3Rp
b24gcHJvY2VzcyBpcyB1bmF2YWlsYWJsZS4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfR1BVX09Q
VElNQUxfQ0xPQ0tfRlJFUVNfREVURUNUSU9OIDk1IC8qIC1XLUcgKi8KKyNkZWZpbmUgTlZfQ1RS
TF9HUFVfT1BUSU1BTF9DTE9DS19GUkVRU19ERVRFQ1RJT05fU1RBUlQgMAorI2RlZmluZSBOVl9D
VFJMX0dQVV9PUFRJTUFMX0NMT0NLX0ZSRVFTX0RFVEVDVElPTl9DQU5DRUwgMQorCisvKgorICog
TlZfQ1RSTF9HUFVfT1BUSU1BTF9DTE9DS19GUkVRU19ERVRFQ1RJT05fU1RBVEUgLSBxdWVyeSB0
aGlzCisgKiB2YXJpYWJsZSB0byBrbm93IGlmIGEgdGVzdCBpcyBjdXJyZW50bHkgYmVpbmcgcnVu
IHRvCisgKiBkZXRlcm1pbmUgdGhlIG9wdGltYWwgM0QgY2xvY2sgZnJlcXVlbmNpZXMuICBfQlVT
WSBtZWFucyBhCisgKiB0ZXN0IGlzIGN1cnJlbnRseSBydW5uaW5nLCBfSURMRSBtZWFucyB0aGUg
dGVzdCBpcyBub3QgcnVubmluZy4KKyAqCisgKiBOb3RlOiB1bmxlc3MgTlZfQ1RSTF9HUFVfT1ZF
UkNMT0NLSU5HX1NUQVRFIGlzIHNldCB0byBfTUFOVUFMLCB0aGUKKyAqIG9wdGltYWwgY2xvY2sg
ZGV0ZWN0aW9uIHByb2Nlc3MgaXMgdW5hdmFpbGFibGUuCisgKi8KKworI2RlZmluZSBOVl9DVFJM
X0dQVV9PUFRJTUFMX0NMT0NLX0ZSRVFTX0RFVEVDVElPTl9TVEFURSA5NiAvKiBSLS1HICovCisj
ZGVmaW5lIE5WX0NUUkxfR1BVX09QVElNQUxfQ0xPQ0tfRlJFUVNfREVURUNUSU9OX1NUQVRFX0lE
TEUgMAorI2RlZmluZSBOVl9DVFJMX0dQVV9PUFRJTUFMX0NMT0NLX0ZSRVFTX0RFVEVDVElPTl9T
VEFURV9CVVNZIDEKKworLyoKKyAqIE5WX0NUUkxfRkxBVFBBTkVMX0NISVBfTE9DQVRJT04gLSBm
b3IgdGhlIHNwZWNpZmllZCBkaXNwbGF5IGRldmljZSwKKyAqIHJlcG9ydCB3aGV0aGVyIHRoZSBm
bGF0IHBhbmVsIGlzIGRyaXZlbiBieSB0aGUgb24tY2hpcCBjb250cm9sbGVyLAorICogb3IgYSBz
ZXBhcmF0ZSBjb250cm9sbGVyIGNoaXAgZWxzZXdoZXJlIG9uIHRoZSBncmFwaGljcyBib2FyZC4K
KyAqIFRoaXMgYXR0cmlidXRlIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBmbGF0IHBhbmVscy4KKyAq
LworCisjZGVmaW5lIE5WX0NUUkxfRkxBVFBBTkVMX0NISVBfTE9DQVRJT04gMjE1IC8qIFItREcg
Ki8KKyNkZWZpbmUgTlZfQ1RSTF9GTEFUUEFORUxfQ0hJUF9MT0NBVElPTl9JTlRFUk5BTCAwCisj
ZGVmaW5lIE5WX0NUUkxfRkxBVFBBTkVMX0NISVBfTE9DQVRJT05fRVhURVJOQUwgMQorCisvKgor
ICogTlZfQ1RSTF9GTEFUUEFORUxfTElOSyAtIHJlcG9ydCB0aGUgbnVtYmVyIG9mIGxpbmtzIGZv
ciBhIERWSSBjb25uZWN0aW9uLCBvcgorICogdGhlIG1haW4gbGluaydzIGFjdGl2ZSBsYW5lIGNv
dW50IGZvciBEaXNwbGF5UG9ydC4KKyAqIFRoaXMgYXR0cmlidXRlIGlzIG9ubHkgYXZhaWxhYmxl
IGZvciBmbGF0IHBhbmVscy4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfRkxBVFBBTkVMX0xJTksg
MjE2IC8qIFItREcgKi8KKyNkZWZpbmUgTlZfQ1RSTF9GTEFUUEFORUxfTElOS19TSU5HTEUgMAor
I2RlZmluZSBOVl9DVFJMX0ZMQVRQQU5FTF9MSU5LX0RVQUwgMQorI2RlZmluZSBOVl9DVFJMX0ZM
QVRQQU5FTF9MSU5LX1FVQUQgMworCisvKgorICogTlZfQ1RSTF9GTEFUUEFORUxfU0lHTkFMIC0g
Zm9yIHRoZSBzcGVjaWZpZWQgZGlzcGxheSBkZXZpY2UsIHJlcG9ydAorICogd2hldGhlciB0aGUg
ZmxhdCBwYW5lbCBpcyBkcml2ZW4gYnkgYW4gTFZEUywgVE1EUywgb3IgRGlzcGxheVBvcnQgc2ln
bmFsLgorICogVGhpcyBhdHRyaWJ1dGUgaXMgb25seSBhdmFpbGFibGUgZm9yIGZsYXQgcGFuZWxz
LgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9GTEFUUEFORUxfU0lHTkFMIDIxNyAvKiBSLURHICov
CisjZGVmaW5lIE5WX0NUUkxfRkxBVFBBTkVMX1NJR05BTF9MVkRTIDAKKyNkZWZpbmUgTlZfQ1RS
TF9GTEFUUEFORUxfU0lHTkFMX1RNRFMgMQorI2RlZmluZSBOVl9DVFJMX0ZMQVRQQU5FTF9TSUdO
QUxfRElTUExBWVBPUlQgMgorCisvKgorICogTlZfQ1RSTF9VU0VfSE9VU0VfU1lOQyAtIHdoZW4g
VFJVRSwgdGhlIHNlcnZlciAobWFzdGVyKSBmcmFtZSBsb2NrCisgKiBkZXZpY2Ugd2lsbCBwcm9w
YWdhdGUgdGhlIGluY29taW5nIGhvdXNlIHN5bmMgc2lnbmFsIGFzIHRoZSBvdXRnb2luZworICog
ZnJhbWUgbG9jayBzeW5jIHNpZ25hbC4gIElmIHRoZSBmcmFtZSBsb2NrIGRldmljZSBjYW5ub3Qg
ZGV0ZWN0IGEKKyAqIGZyYW1lIGxvY2sgc3luYyBzaWduYWwsIGl0IHdpbGwgZGVmYXVsdCB0byB1
c2luZyB0aGUgaW50ZXJuYWwgdGltaW5ncworICogZnJvbSB0aGUgR1BVIGNvbm5lY3RlZCB0byB0
aGUgcHJpbWFyeSBjb25uZWN0b3IuCisgKgorICogVGhpcyBhdHRyaWJ1dGUgbWF5IGJlIHF1ZXJp
ZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUoKQorICogdXNpbmcgYSBOVl9D
VFJMX1RBUkdFVF9UWVBFX0ZSQU1FTE9DSyBvciBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVO
CisgKiB0YXJnZXQuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX1VTRV9IT1VTRV9TWU5DIDIxOCAv
KiBSVy1GICovCisjZGVmaW5lIE5WX0NUUkxfVVNFX0hPVVNFX1NZTkNfRkFMU0UgMAorI2RlZmlu
ZSBOVl9DVFJMX1VTRV9IT1VTRV9TWU5DX1RSVUUgMQorCisvKgorICogTlZfQ1RSTF9FRElEX0FW
QUlMQUJMRSAtIHJlcG9ydCBpZiBhbiBFRElEIGlzIGF2YWlsYWJsZSBmb3IgdGhlCisgKiBzcGVj
aWZpZWQgZGlzcGxheSBkZXZpY2UuCisgKgorICogVGhpcyBhdHRyaWJ1dGUgbWF5IGFsc28gYmUg
cXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpCisgKiB1c2luZyBh
IE5WX0NUUkxfVEFSR0VUX1RZUEVfR1BVIG9yIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4K
KyAqIHRhcmdldC4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfRURJRF9BVkFJTEFCTEUgMjE5IC8q
IFItREcgKi8KKyNkZWZpbmUgTlZfQ1RSTF9FRElEX0FWQUlMQUJMRV9GQUxTRSAwCisjZGVmaW5l
IE5WX0NUUkxfRURJRF9BVkFJTEFCTEVfVFJVRSAxCisKKy8qCisgKiBOVl9DVFJMX0ZPUkNFX1NU
RVJFTyAtIHdoZW4gVFJVRSwgT3BlbkdMIHdpbGwgZm9yY2Ugc3RlcmVvIGZsaXBwaW5nCisgKiBl
dmVuIHdoZW4gbm8gc3RlcmVvIGRyYXdhYmxlcyBhcmUgdmlzaWJsZSAoaWYgdGhlIGRldmljZSBp
cyBjb25maWd1cmVkCisgKiB0byBzdXBwb3J0IGl0LCBzZWUgdGhlICJTdGVyZW8iIFggY29uZmln
IG9wdGlvbikuCisgKiBXaGVuIGZhbHNlLCBmYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQgYmVoYXZp
b3Igb2Ygb25seSBmbGlwcGluZyB3aGVuIGEKKyAqIHN0ZXJlbyBkcmF3YWJsZSBpcyB2aXNpYmxl
LgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9GT1JDRV9TVEVSRU8gMjIwIC8qIFJXLSAqLworI2Rl
ZmluZSBOVl9DVFJMX0ZPUkNFX1NURVJFT19GQUxTRSAwCisjZGVmaW5lIE5WX0NUUkxfRk9SQ0Vf
U1RFUkVPX1RSVUUgMQorCisvKgorICogTlZfQ1RSTF9JTUFHRV9TRVRUSU5HUyAtIHRoZSBpbWFn
ZSBxdWFsaXR5IHNldHRpbmcgZm9yIE9wZW5HTCBjbGllbnRzLgorICoKKyAqIFRoaXMgc2V0dGlu
ZyBpcyBvbmx5IGFwcGxpZWQgdG8gT3BlbkdMIGNsaWVudHMgdGhhdCBhcmUgc3RhcnRlZAorICog
YWZ0ZXIgdGhpcyBzZXR0aW5nIGlzIGFwcGxpZWQuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0lN
QUdFX1NFVFRJTkdTIDIyMSAvKiBSVy1YICovCisjZGVmaW5lIE5WX0NUUkxfSU1BR0VfU0VUVElO
R1NfSElHSF9RVUFMSVRZIDAKKyNkZWZpbmUgTlZfQ1RSTF9JTUFHRV9TRVRUSU5HU19RVUFMSVRZ
IDEKKyNkZWZpbmUgTlZfQ1RSTF9JTUFHRV9TRVRUSU5HU19QRVJGT1JNQU5DRSAyCisjZGVmaW5l
IE5WX0NUUkxfSU1BR0VfU0VUVElOR1NfSElHSF9QRVJGT1JNQU5DRSAzCisKKy8qCisgKiBOVl9D
VFJMX1hJTkVSQU1BIC0gcmV0dXJuIHdoZXRoZXIgeGluZXJhbWEgaXMgZW5hYmxlZAorICovCisK
KyNkZWZpbmUgTlZfQ1RSTF9YSU5FUkFNQSAyMjIgLyogUi0tRyAqLworI2RlZmluZSBOVl9DVFJM
X1hJTkVSQU1BX09GRiAwCisjZGVmaW5lIE5WX0NUUkxfWElORVJBTUFfT04gMQorCisvKgorICog
TlZfQ1RSTF9YSU5FUkFNQV9TVEVSRU8gLSB3aGVuIFRSVUUsIE9wZW5HTCB3aWxsIGFsbG93IHN0
ZXJlbyBmbGlwcGluZworICogb24gbXVsdGlwbGUgWCBzY3JlZW5zIGNvbmZpZ3VyZWQgd2l0aCBY
aW5lcmFtYS4KKyAqIFdoZW4gRkFMU0UsIGZsaXBwaW5nIGlzIGFsbG93ZWQgb25seSBvbiBvbmUg
WCBzY3JlZW4gYXQgYSB0aW1lLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9YSU5FUkFNQV9TVEVS
RU8gMjIzIC8qIFJXLSAqLworI2RlZmluZSBOVl9DVFJMX1hJTkVSQU1BX1NURVJFT19GQUxTRSAw
CisjZGVmaW5lIE5WX0NUUkxfWElORVJBTUFfU1RFUkVPX1RSVUUgMQorCisvKgorICogTlZfQ1RS
TF9CVVNfUkFURSAtIGlmIHRoZSBidXMgdHlwZSBvZiB0aGUgc3BlY2lmaWVkIGRldmljZSBpcyBB
R1AsIHRoZW4KKyAqIE5WX0NUUkxfQlVTX1JBVEUgcmV0dXJucyB0aGUgY29uZmlndXJlZCBBR1Ag
dHJhbnNmZXIgcmF0ZS4gIElmIHRoZSBidXMgdHlwZQorICogaXMgUENJIEV4cHJlc3MsIHRoZW4g
dGhpcyBhdHRyaWJ1dGUgcmV0dXJucyB0aGUgbWF4aW11bSBsaW5rIHdpZHRoLgorICogV2hlbiB0
aGlzIGF0dHJpYnV0ZSBpcyBxdWVyaWVkIG9uIGFuIFggc2NyZWVuIHRhcmdldCwgdGhlIGJ1cyBy
YXRlIG9mIHRoZQorICogR1BVIGRyaXZpbmcgdGhlIFggc2NyZWVuIGlzIHJldHVybmVkLgorICov
CisKKyNkZWZpbmUgTlZfQ1RSTF9CVVNfUkFURSAyMjQgLyogUi0tR0kgKi8KKworLyoKKyAqIE5W
X0NUUkxfR1BVX1BDSUVfTUFYX0xJTktfV0lEVEggLSByZXR1cm5zIHRoZSBtYXhpbXVtCisgKiBQ
Q0llIGxpbmsgd2lkdGgsIGluIG51bWJlciBvZiBsYW5lcy4KKyAqLworI2RlZmluZSBOVl9DVFJM
X0dQVV9QQ0lFX01BWF9MSU5LX1dJRFRIIE5WX0NUUkxfQlVTX1JBVEUKKworLyoKKyAqIE5WX0NU
UkxfU0hPV19TTElfSFVEIC0gd2hlbiBUUlVFLCBPcGVuR0wgd2lsbCBkcmF3IGluZm9ybWF0aW9u
IGFib3V0IHRoZQorICogY3VycmVudCBTTEkgbW9kZS4KKyAqIFJlbmFtZWQgdGhpcyBhdHRyaWJ1
dGUgdG8gTlZfQ1RSTF9TSE9XX1NMSV9WSVNVQUxfSU5ESUNBVE9SCisgKi8KKworI2RlZmluZSBO
Vl9DVFJMX1NIT1dfU0xJX0hVRCBOVl9DVFJMX1NIT1dfU0xJX1ZJU1VBTF9JTkRJQ0FUT1IKKyNk
ZWZpbmUgTlZfQ1RSTF9TSE9XX1NMSV9IVURfRkFMU0UgTlZfQ1RSTF9TSE9XX1NMSV9WSVNVQUxf
SU5ESUNBVE9SX0ZBTFNFCisjZGVmaW5lIE5WX0NUUkxfU0hPV19TTElfSFVEX1RSVUUgTlZfQ1RS
TF9TSE9XX1NMSV9WSVNVQUxfSU5ESUNBVE9SX1RSVUUKKworLyoKKyAqIE5WX0NUUkxfU0hPV19T
TElfVklTVUFMX0lORElDQVRPUiAtIHdoZW4gVFJVRSwgT3BlbkdMIHdpbGwgZHJhdyBpbmZvcm1h
dGlvbgorICogYWJvdXQgdGhlIGN1cnJlbnQgU0xJIG1vZGUuCisgKi8KKworI2RlZmluZSBOVl9D
VFJMX1NIT1dfU0xJX1ZJU1VBTF9JTkRJQ0FUT1IgMjI1IC8qIFJXLVggKi8KKyNkZWZpbmUgTlZf
Q1RSTF9TSE9XX1NMSV9WSVNVQUxfSU5ESUNBVE9SX0ZBTFNFIDAKKyNkZWZpbmUgTlZfQ1RSTF9T
SE9XX1NMSV9WSVNVQUxfSU5ESUNBVE9SX1RSVUUgMQorCisvKgorICogTlZfQ1RSTF9YVl9TWU5D
X1RPX0RJU1BMQVkgLSB0aGlzIGNvbnRyb2wgaXMgdmFsaWQgd2hlbiBUd2luVmlldyBhbmQKKyAq
IFhWaWRlbyBTeW5jIFRvIFZCbGFuayBhcmUgZW5hYmxlZC4KKyAqIEl0IGNvbnRyb2xzIHdoaWNo
IGRpc3BsYXkgZGV2aWNlIHdpbGwgYmUgc3luY2hlZCB0by4KKyAqLworCisjZGVmaW5lIE5WX0NU
UkxfWFZfU1lOQ19UT19ESVNQTEFZIDIyNiAvKiBSVy0gKi8KKworLyoKKyAqIE5WX0NUUkxfR1ZJ
T19SRVFVRVNURURfVklERU9fRk9STUFUMiAtIHRoaXMgYXR0cmlidXRlIGlzIG9ubHkKKyAqIGlu
dGVuZGVkIHRvIGJlIHVzZWQgdG8gcXVlcnkgdGhlIFZhbGlkVmFsdWVzIGZvcgorICogTlZfQ1RS
TF9HVklPX1JFUVVFU1RFRF9WSURFT19GT1JNQVQgZm9yIFZJREVPX0ZPUk1BVCB2YWx1ZXMgYmV0
d2VlbgorICogMzEgYW5kIDYzLiAgU2VlIE5WX0NUUkxfR1ZJT19SRVFVRVNURURfVklERU9fRk9S
TUFUIGZvciBkZXRhaWxzLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1JFUVVFU1RFRF9W
SURFT19GT1JNQVQyIDIyNyAvKiAtLS1HSSAqLworCisvKgorICogVGhlIGZvbGxvd2luZyBpcyBk
ZXByZWNhdGVkOyB1c2UgTlZfQ1RSTF9HVklPX1JFUVVFU1RFRF9WSURFT19GT1JNQVQyLAorICog
aW5zdGVhZAorICovCisjZGVmaW5lIE5WX0NUUkxfR1ZPX09VVFBVVF9WSURFT19GT1JNQVQyIDIy
NyAvKiAtLS0gKi8KKworLyoKKyAqIE5WX0NUUkxfR1ZPX09WRVJSSURFX0hXX0NTQyAtIE92ZXJy
aWRlIHRoZSBTREkgaGFyZHdhcmUncyBDb2xvciBTcGFjZQorICogQ29udmVyc2lvbiB3aXRoIHRo
ZSB2YWx1ZXMgY29udHJvbGxlZCB0aHJvdWdoCisgKiBYTlZDVFJMU2V0R3ZvQ29sb3JDb252ZXJz
aW9uKCkgYW5kIFhOVkNUUkxHZXRHdm9Db2xvckNvbnZlcnNpb24oKS4gIElmCisgKiB0aGlzIGF0
dHJpYnV0ZSBpcyBGQUxTRSwgdGhlbiB0aGUgdmFsdWVzIHNwZWNpZmllZCB0aHJvdWdoCisgKiBY
TlZDVFJMU2V0R3ZvQ29sb3JDb252ZXJzaW9uKCkgYXJlIGlnbm9yZWQuCisgKi8KKworI2RlZmlu
ZSBOVl9DVFJMX0dWT19PVkVSUklERV9IV19DU0MgMjI4IC8qIFJXLSAqLworI2RlZmluZSBOVl9D
VFJMX0dWT19PVkVSUklERV9IV19DU0NfRkFMU0UgMAorI2RlZmluZSBOVl9DVFJMX0dWT19PVkVS
UklERV9IV19DU0NfVFJVRSAxCisKKy8qCisgKiBOVl9DVFJMX0dWT19DQVBBQklMSVRJRVMgLSB0
aGlzIHJlYWQtb25seSBhdHRyaWJ1dGUgZGVzY3JpYmVzIEdWTworICogY2FwYWJpbGl0aWVzIHRo
YXQgZGlmZmVyIGJldHdlZW4gTlZJRElBIFNESSBwcm9kdWN0cy4gIFRoaXMgdmFsdWUKKyAqIGlz
IGEgYml0bWFzayB3aGVyZSBlYWNoIGJpdCBpbmRpY2F0ZXMgd2hldGhlciB0aGF0IGNhcGFiaWxp
dHkgaXMKKyAqIGF2YWlsYWJsZS4KKyAqCisgKiBBUFBMWV9DU0NfSU1NRURJQVRFTFkgLSB3aGV0
aGVyIHRoZSBDU0MgbWF0cml4LCBvZmZzZXQsIGFuZCBzY2FsZQorICogc3BlY2lmaWVkIHRocm91
Z2ggWE5WQ1RSTFNldEd2b0NvbG9yQ29udmVyc2lvbigpIHdpbGwgdGFrZSBhZmZlY3QKKyAqIGlt
bWVkaWF0ZWx5LCBvciBvbmx5IGFmdGVyIFNESSBvdXRwdXQgaXMgZGlzYWJsZWQgYW5kIGVuYWJs
ZWQKKyAqIGFnYWluLgorICoKKyAqIEFQUExZX0NTQ19UT19YX1NDUkVFTiAtIHdoZXRoZXIgdGhl
IENTQyBtYXRyaXgsIG9mZnNldCwgYW5kIHNjYWxlCisgKiBzcGVjaWZpZWQgdGhyb3VnaCBYTlZD
VFJMU2V0R3ZvQ29sb3JDb252ZXJzaW9uKCkgd2lsbCBhbHNvIGFwcGx5CisgKiB0byBHVk8gb3V0
cHV0IG9mIGFuIFggc2NyZWVuLCBvciBvbmx5IHRvIE9wZW5HTCBHVk8gb3V0cHV0LCBhcworICog
ZW5hYmxlZCB0aHJvdWdoIHRoZSBHTFhfTlZfdmlkZW9fb3V0IGV4dGVuc2lvbi4KKyAqCisgKiBD
T01QT1NJVEVfVEVSTUlOQVRJT04gLSB3aGV0aGVyIHRoZSA3NSBvaG0gdGVybWluYXRpb24gb2Yg
dGhlCisgKiBTREkgY29tcG9zaXRlIGlucHV0IHNpZ25hbCBjYW4gYmUgcHJvZ3JhbW1lZCB0aHJv
dWdoIHRoZQorICogTlZfQ1RSTF9HVk9fQ09NUE9TSVRFX1RFUk1JTkFUSU9OIGF0dHJpYnV0ZS4K
KyAqCisgKiBTSEFSRURfU1lOQ19CTkMgLSB3aGV0aGVyIHRoZSBTREkgZGV2aWNlIGhhcyBhIHNp
bmdsZSBCTkMKKyAqIGNvbm5lY3RvciB1c2VkIGZvciBib3RoIChTREkgJiBDb21wb3NpdGUpIGlu
Y29taW5nIHNpZ25hbHMuCisgKgorICogTVVMVElSQVRFX1NZTkMgLSB3aGV0aGVyIHRoZSBTREkg
ZGV2aWNlIHN1cHBvcnRzIHN5bmNocm9uaXphdGlvbgorICogb2YgaW5wdXQgYW5kIG91dHB1dCB2
aWRlbyBtb2RlcyB0aGF0IG1hdGNoIGluIGJlaW5nIG9kZCBvciBldmVuCisgKiBtb2RlcyAoaWUs
IEFBLjAwIEh6IG1vZGVzIGNhbiBiZSBzeW5jaGVkIHRvIG90aGVyIEJCLjAwIEh6IG1vZGVzIGFu
ZAorICogQUEuWFggSHogY2FuIG1hdGNoIHRvIEJCLllZIEh6IHdoZXJlIC5YWCBhbmQgLllZIGFy
ZSBub3QgLjAwKQorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fQ0FQQUJJTElUSUVTIDIyOSAv
KiBSLS0gKi8KKyNkZWZpbmUgTlZfQ1RSTF9HVk9fQ0FQQUJJTElUSUVTX0FQUExZX0NTQ19JTU1F
RElBVEVMWSAweDAwMDAwMDAxCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0NBUEFCSUxJVElFU19BUFBM
WV9DU0NfVE9fWF9TQ1JFRU4gMHgwMDAwMDAwMgorI2RlZmluZSBOVl9DVFJMX0dWT19DQVBBQklM
SVRJRVNfQ09NUE9TSVRFX1RFUk1JTkFUSU9OIDB4MDAwMDAwMDQKKyNkZWZpbmUgTlZfQ1RSTF9H
Vk9fQ0FQQUJJTElUSUVTX1NIQVJFRF9TWU5DX0JOQyAweDAwMDAwMDA4CisjZGVmaW5lIE5WX0NU
UkxfR1ZPX0NBUEFCSUxJVElFU19NVUxUSVJBVEVfU1lOQyAweDAwMDAwMDEwCisjZGVmaW5lIE5W
X0NUUkxfR1ZPX0NBUEFCSUxJVElFU19BRFZBTkNFX1NZTkNfU0tFVyAweDAwMDAwMDIwCisKKy8q
CisgKiBOVl9DVFJMX0dWT19DT01QT1NJVEVfVEVSTUlOQVRJT04gLSBlbmFibGUgb3IgZGlzYWJs
ZSA3NSBvaG0KKyAqIHRlcm1pbmF0aW9uIG9mIHRoZSBTREkgY29tcG9zaXRlIGlucHV0IHNpZ25h
bC4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9URVJNSU5BVElPTiAyMzAg
LyogUlctICovCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9URVJNSU5BVElPTl9FTkFC
TEUgMQorI2RlZmluZSBOVl9DVFJMX0dWT19DT01QT1NJVEVfVEVSTUlOQVRJT05fRElTQUJMRSAw
CisKKy8qCisgKiBOVl9DVFJMX0FTU09DSUFURURfRElTUExBWV9ERVZJQ0VTIC0gZGlzcGxheSBk
ZXZpY2UgbWFzayBpbmRpY2F0aW5nCisgKiB3aGljaCBkaXNwbGF5IGRldmljZXMgYXJlICJhc3Nv
Y2lhdGVkIiB3aXRoIHRoZSBzcGVjaWZpZWQgWCBzY3JlZW4KKyAqIChpZTogYXJlIGF2YWlsYWJs
ZSB0byB0aGUgWCBzY3JlZW4gZm9yIGRpc3BsYXlpbmcgdGhlIFggc2NyZWVuKS4KKyAqLworCisj
ZGVmaW5lIE5WX0NUUkxfQVNTT0NJQVRFRF9ESVNQTEFZX0RFVklDRVMgMjMxIC8qIFJXLSAqLwor
CisvKgorICogTlZfQ1RSTF9GUkFNRUxPQ0tfU0xBVkVTIC0gZ2V0L3NldCB3aGV0aGVyIHRoZSBk
aXNwbGF5IGRldmljZShzKQorICogZ2l2ZW4gc2hvdWxkIGxpc3RlbiBvciBpZ25vcmUgdGhlIG1h
c3RlcidzIHN5bmMgc2lnbmFsLgorICoKKyAqIFRoaXMgYXR0cmlidXRlIGNhbiBvbmx5IGJlIHF1
ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUoKQorICogdXNpbmcgYSBO
Vl9DVFJMX1RBUkdFVF9UWVBFX0dQVSB0YXJnZXQuICBUaGlzIGF0dHJpYnV0ZSBjYW5ub3QgYmUK
KyAqIHF1ZXJpZWQgdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOLgorICovCisK
KyNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfU0xBVkVTIDIzMiAvKiBSVy1HICovCisKKy8qCisg
KiBOVl9DVFJMX0ZSQU1FTE9DS19NQVNURVJBQkxFIC0gQ2FuIGFueSBvZiB0aGUgZ2l2ZW4gZGlz
cGxheSBkZXZpY2VzCisgKiBiZSBzZXQgYXMgbWFzdGVyIG9mIHRoZSBmcmFtZSBsb2NrIGdyb3Vw
LiAgUmV0dXJucyBhIGJpdG1hc2sgb2YgdGhlCisgKiBjb3JyZXNwb25kaW5nIGRpc3BsYXkgZGV2
aWNlcyB0aGF0IGNhbiBiZSBzZXQgYXMgbWFzdGVyLgorICoKKyAqIFRoaXMgYXR0cmlidXRlIGNh
biBvbmx5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUoKQor
ICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0dQVSB0YXJnZXQuICBUaGlzIGF0dHJpYnV0
ZSBjYW5ub3QgYmUKKyAqIHF1ZXJpZWQgdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NS
RUVOLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfTUFTVEVSQUJMRSAyMzMgLyog
Ui1ERyAqLworCisvKgorICogTlZfQ1RSTF9QUk9CRV9ESVNQTEFZUyAtIHJlLXByb2JlcyB0aGUg
aGFyZHdhcmUgdG8gZGV0ZWN0IHdoYXQKKyAqIGRpc3BsYXkgZGV2aWNlcyBhcmUgY29ubmVjdGVk
IHRvIHRoZSBHUFUgb3IgR1BVIGRyaXZpbmcgdGhlCisgKiBzcGVjaWZpZWQgWCBzY3JlZW4uICBS
ZXR1cm5zIGEgZGlzcGxheSBtYXNrLgorICoKKyAqIFRoaXMgYXR0cmlidXRlIG1heSBiZSBxdWVy
aWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkKKyAqIHVzaW5nIGEgTlZf
Q1RSTF9UQVJHRVRfVFlQRV9HUFUgb3IgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiB0YXJn
ZXQuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX1BST0JFX0RJU1BMQVlTIDIzNCAvKiBSLS1HICov
CisKKy8qCisgKiBOVl9DVFJMX1JFRlJFU0hfUkFURSAtIFJldHVybnMgdGhlIHJlZnJlc2ggcmF0
ZSBvZiB0aGUgc3BlY2lmaWVkCisgKiBkaXNwbGF5IGRldmljZSBpbiAxMDAgKiBIeiAoaWUuIHRv
IGdldCB0aGUgcmVmcmVzaCByYXRlIGluIEh6LCBkaXZpZGUKKyAqIHRoZSByZXR1cm5lZCB2YWx1
ZSBieSAxMDAuKQorICoKKyAqIFRoaXMgYXR0cmlidXRlIG1heSBiZSBxdWVyaWVkIHRocm91Z2gg
WE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkKKyAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRf
VFlQRV9HUFUgb3IgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiB0YXJnZXQuCisgKi8KKwor
I2RlZmluZSBOVl9DVFJMX1JFRlJFU0hfUkFURSAyMzUgLyogUi1ERyAqLworCisvKgorICogTlZf
Q1RSTF9HVk9fRkxJUF9RVUVVRV9TSVpFIC0gVGhlIEdyYXBoaWNzIHRvIFZpZGVvIE91dCBpbnRl
cmZhY2UKKyAqIGV4cG9zZWQgdGhyb3VnaCBOVi1DT05UUk9MIGFuZCB0aGUgR0xYX05WX3ZpZGVv
X291dCBleHRlbnNpb24gdXNlcworICogYW4gaW50ZXJuYWwgZmxpcCBxdWV1ZSB3aGVuIHBidWZm
ZXJzIGFyZSBzZW50IHRvIHRoZSB2aWRlbyBkZXZpY2UKKyAqICh2aWEgZ2xYU2VuZFBidWZmZXJU
b1ZpZGVvTlYoKSkuICBUaGUgTlZfQ1RSTF9HVk9fRkxJUF9RVUVVRV9TSVpFCisgKiBjYW4gYmUg
dXNlZCB0byBxdWVyeSBhbmQgYXNzaWduIHRoZSBmbGlwIHF1ZXVlIHNpemUuICBUaGlzCisgKiBh
dHRyaWJ1dGUgaXMgYXBwbGllZCB0byBHTFggd2hlbiBnbFhHZXRWaWRlb0RldmljZU5WKCkgaXMg
Y2FsbGVkIGJ5CisgKiB0aGUgYXBwbGljYXRpb24uCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0dW
T19GTElQX1FVRVVFX1NJWkUgMjM2IC8qIFJXLSAqLworCisvKgorICogTlZfQ1RSTF9DVVJSRU5U
X1NDQU5MSU5FIC0gcXVlcnkgdGhlIGN1cnJlbnQgc2NhbmxpbmUgZm9yIHRoZQorICogc3BlY2lm
aWVkIGRpc3BsYXkgZGV2aWNlLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9DVVJSRU5UX1NDQU5M
SU5FIDIzNyAvKiBSLURHICovCisKKy8qCisgKiBOVl9DVFJMX0lOSVRJQUxfUElYTUFQX1BMQUNF
TUVOVCAtIENvbnRyb2xzIHdoZXJlIFggcGl4bWFwcyBhcmUgaW5pdGlhbGx5CisgKiBjcmVhdGVk
LgorICoKKyAqIE5WX0NUUkxfSU5JVElBTF9QSVhNQVBfUExBQ0VNRU5UX0ZPUkNFX1NZU01FTSBj
YXVzZXMgcGl4bWFwcyB0byBzdGF5IGluCisgKiBzeXN0ZW0gbWVtb3J5LiBUaGVzZSBwaXhtYXBz
IGNhbid0IGJlIGFjY2VsZXJhdGVkIGJ5IHRoZSBOVklESUEgZHJpdmVyOyB0aGlzCisgKiB3aWxs
IGNhdXNlIGJsYW5rIHdpbmRvd3MgaWYgdXNlZCB3aXRoIGFuIE9wZW5HTCBjb21wb3NpdGluZyBt
YW5hZ2VyLgorICogTlZfQ1RSTF9JTklUSUFMX1BJWE1BUF9QTEFDRU1FTlRfU1lTTUVNIGNyZWF0
ZXMgcGl4bWFwcyBpbiBzeXN0ZW0gbWVtb3J5CisgKiBpbml0aWFsbHksIGJ1dCBhbGxvd3MgdGhl
bSB0byBtaWdyYXRlIHRvIHZpZGVvIG1lbW9yeS4KKyAqIE5WX0NUUkxfSU5JVElBTF9QSVhNQVBf
UExBQ0VNRU5UX1ZJRE1FTSBjcmVhdGVzIHBpeG1hcHMgaW4gdmlkZW8gbWVtb3J5CisgKiB3aGVu
IGVub3VnaCByZXNvdXJjZXMgYXJlIGF2YWlsYWJsZS4KKyAqIE5WX0NUUkxfSU5JVElBTF9QSVhN
QVBfUExBQ0VNRU5UX1JFU0VSVkVEIGlzIGN1cnJlbnRseSByZXNlcnZlZCBmb3IgZnV0dXJlCisg
KiB1c2UuICBCZWhhdmlvciBpcyB1bmRlZmluZWQuCisgKiBOVl9DVFJMX0lOSVRJQUxfUElYTUFQ
X1BMQUNFTUVOVF9HUFVfU1lTTUVNIGNyZWF0ZXMgcGl4bWFwcyBpbiBHUFUgYWNjZXNzaWJsZQor
ICogc3lzdGVtIG1lbW9yeSB3aGVuIGVub3VnaCByZXNvdXJjZXMgYXJlIGF2YWlsYWJsZS4KKyAq
LworCisjZGVmaW5lIE5WX0NUUkxfSU5JVElBTF9QSVhNQVBfUExBQ0VNRU5UIDIzOCAvKiBSVy0g
Ki8KKyNkZWZpbmUgTlZfQ1RSTF9JTklUSUFMX1BJWE1BUF9QTEFDRU1FTlRfRk9SQ0VfU1lTTUVN
IDAKKyNkZWZpbmUgTlZfQ1RSTF9JTklUSUFMX1BJWE1BUF9QTEFDRU1FTlRfU1lTTUVNIDEKKyNk
ZWZpbmUgTlZfQ1RSTF9JTklUSUFMX1BJWE1BUF9QTEFDRU1FTlRfVklETUVNIDIKKyNkZWZpbmUg
TlZfQ1RSTF9JTklUSUFMX1BJWE1BUF9QTEFDRU1FTlRfUkVTRVJWRUQgMworI2RlZmluZSBOVl9D
VFJMX0lOSVRJQUxfUElYTUFQX1BMQUNFTUVOVF9HUFVfU1lTTUVNIDQKKworLyoKKyAqIE5WX0NU
UkxfUENJX0JVUyAtIFJldHVybnMgdGhlIFBDSSBidXMgbnVtYmVyIHRoZSBzcGVjaWZpZWQgZGV2
aWNlIGlzIHVzaW5nLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9QQ0lfQlVTIDIzOSAvKiBSLS1H
SSAqLworCisvKgorICogTlZfQ1RSTF9QQ0lfREVWSUNFIC0gUmV0dXJucyB0aGUgUENJIGRldmlj
ZSBudW1iZXIgdGhlIHNwZWNpZmllZCBkZXZpY2UgaXMKKyAqIHVzaW5nLgorICovCisKKyNkZWZp
bmUgTlZfQ1RSTF9QQ0lfREVWSUNFIDI0MCAvKiBSLS1HSSAqLworCisvKgorICogTlZfQ1RSTF9Q
Q0lfRlVOQ1RJT04gLSBSZXR1cm5zIHRoZSBQQ0kgZnVuY3Rpb24gbnVtYmVyIHRoZSBzcGVjaWZp
ZWQgZGV2aWNlCisgKiBpcyB1c2luZy4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfUENJX0ZVTkNU
SU9OIDI0MSAvKiBSLS1HSSAqLworCisvKgorICogTlZfQ1RSTF9GUkFNRUxPQ0tfRlBHQV9SRVZJ
U0lPTiAtIFF1ZXJ5cyB0aGUgRlBHQSByZXZpc2lvbiBvZiB0aGUKKyAqIEZyYW1lIExvY2sgZGV2
aWNlLgorICoKKyAqIFRoaXMgYXR0cmlidXRlIG11c3QgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNU
UkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpCisgKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVf
RlJBTUVMT0NLIHRhcmdldC4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX0ZQR0Ff
UkVWSVNJT04gMjQyIC8qIFItLUYgKi8KKworLyoKKyAqIE5WX0NUUkxfTUFYX1NDUkVFTl97V0lE
VEgsSEVJR0hUfSAtIHRoZSBtYXhpbXVtIGFsbG93YWJsZSBzaXplLCBpbgorICogcGl4ZWxzLCBv
ZiBlaXRoZXIgdGhlIHNwZWNpZmllZCBYIHNjcmVlbiAoaWYgdGhlIHRhcmdldF90eXBlIG9mIHRo
ZQorICogcXVlcnkgaXMgYW4gWCBzY3JlZW4pLCBvciBhbnkgWCBzY3JlZW4gb24gdGhlIHNwZWNp
ZmllZCBHUFUgKGlmIHRoZQorICogdGFyZ2V0X3R5cGUgb2YgdGhlIHF1ZXJ5IGlzIGEgR1BVKS4K
KyAqLworCisjZGVmaW5lIE5WX0NUUkxfTUFYX1NDUkVFTl9XSURUSCAyNDMgIC8qIFItLUcgKi8K
KyNkZWZpbmUgTlZfQ1RSTF9NQVhfU0NSRUVOX0hFSUdIVCAyNDQgLyogUi0tRyAqLworCisvKgor
ICogTlZfQ1RSTF9NQVhfRElTUExBWVMgLSB0aGUgbWF4aW11bSBudW1iZXIgb2YgZGlzcGxheSBk
ZXZpY2VzIHRoYXQKKyAqIGNhbiBiZSBkcml2ZW4gc2ltdWx0YW5lb3VzbHkgb24gYSBHUFUgKGUu
Zy4sIHRoYXQgY2FuIGJlIHVzZWQgaW4gYQorICogTWV0YU1vZGUgYXQgb25jZSkuICBOb3RlIHRo
YXQgdGhpcyBkb2VzIG5vdCBpbmRpY2F0ZSB0aGUgbWF4aW11bQorICogbnVtYmVyIG9mIGJpdHMg
dGhhdCBjYW4gYmUgc2V0IGluIE5WX0NUUkxfQ09OTkVDVEVEX0RJU1BMQVlTLAorICogYmVjYXVz
ZSBtb3JlIGRpc3BsYXkgZGV2aWNlcyBjYW4gYmUgY29ubmVjdGVkIHRoYW4gYXJlIGFjdGl2ZWx5
IGluCisgKiB1c2UuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX01BWF9ESVNQTEFZUyAyNDUgLyog
Ui0tRyAqLworCisvKgorICogTlZfQ1RSTF9EWU5BTUlDX1RXSU5WSUVXIC0gUmV0dXJucyB3aGV0
aGVyIG9yIG5vdCB0aGUgc2NyZWVuCisgKiBzdXBwb3J0cyBkeW5hbWljIHR3aW52aWV3LgorICov
CisKKyNkZWZpbmUgTlZfQ1RSTF9EWU5BTUlDX1RXSU5WSUVXIDI0NiAvKiBSLS0gKi8KKworLyoK
KyAqIE5WX0NUUkxfTVVMVElHUFVfRElTUExBWV9PV05FUiAtIFJldHVybnMgdGhlIChOVi1DT05U
Uk9MKSBHUFUgSUQgb2YKKyAqIHRoZSBHUFUgdGhhdCBoYXMgdGhlIGRpc3BsYXkgZGV2aWNlKHMp
IHVzZWQgZm9yIHNob3dpbmcgdGhlIFggU2NyZWVuLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9N
VUxUSUdQVV9ESVNQTEFZX09XTkVSIDI0NyAvKiBSLS0gKi8KKworLyoKKyAqIE5WX0NUUkxfR1BV
X1NDQUxJTkcgLSBub3Qgc3VwcG9ydGVkCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0dQVV9TQ0FM
SU5HIDI0OCAvKiBSV0RHICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HUFVfU0NBTElOR19UQVJHRVRf
SU5WQUxJRCAwCisjZGVmaW5lIE5WX0NUUkxfR1BVX1NDQUxJTkdfVEFSR0VUX0ZMQVRQQU5FTF9C
RVNUX0ZJVCAxCisjZGVmaW5lIE5WX0NUUkxfR1BVX1NDQUxJTkdfVEFSR0VUX0ZMQVRQQU5FTF9O
QVRJVkUgMgorCisjZGVmaW5lIE5WX0NUUkxfR1BVX1NDQUxJTkdfTUVUSE9EX0lOVkFMSUQgMAor
I2RlZmluZSBOVl9DVFJMX0dQVV9TQ0FMSU5HX01FVEhPRF9TVFJFVENIRUQgMQorI2RlZmluZSBO
Vl9DVFJMX0dQVV9TQ0FMSU5HX01FVEhPRF9DRU5URVJFRCAyCisjZGVmaW5lIE5WX0NUUkxfR1BV
X1NDQUxJTkdfTUVUSE9EX0FTUEVDVF9TQ0FMRUQgMworCisvKgorICogTlZfQ1RSTF9GUk9OVEVO
RF9SRVNPTFVUSU9OIC0gbm90IHN1cHBvcnRlZAorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9GUk9O
VEVORF9SRVNPTFVUSU9OIDI0OSAvKiBSLURHICovCisKKy8qCisgKiBOVl9DVFJMX0JBQ0tFTkRf
UkVTT0xVVElPTiAtIG5vdCBzdXBwb3J0ZWQKKyAqLworCisjZGVmaW5lIE5WX0NUUkxfQkFDS0VO
RF9SRVNPTFVUSU9OIDI1MCAvKiBSLURHICovCisKKy8qCisgKiBOVl9DVFJMX0ZMQVRQQU5FTF9O
QVRJVkVfUkVTT0xVVElPTiAtIFJldHVybnMgdGhlIGRpbWVuc2lvbnMgb2YgdGhlCisgKiBuYXRp
dmUgcmVzb2x1dGlvbiBvZiB0aGUgZmxhdCBwYW5lbCBhcyBkZXRlcm1pbmVkIGJ5IHRoZQorICog
TlZJRElBIFggRHJpdmVyLgorICoKKyAqIFRoZSBuYXRpdmUgcmVzb2x1dGlvbiBpcyB0aGUgcmVz
b2x1dGlvbiBhdCB3aGljaCBhIGZsYXQgcGFuZWwKKyAqIG11c3QgZGlzcGxheSBhbnkgaW1hZ2Uu
ICBBbGwgb3RoZXIgcmVzb2x1dGlvbnMgbXVzdCBiZSBzY2FsZWQgdG8gdGhpcworICogcmVzb2x1
dGlvbiB0aHJvdWdoIEdQVSBzY2FsaW5nIG9yIHRoZSBERlAncyBuYXRpdmUgc2NhbGluZyBjYXBh
YmlsaXRpZXMKKyAqIGluIG9yZGVyIHRvIGJlIGRpc3BsYXllZC4KKyAqCisgKiBUaGlzIGF0dHJp
YnV0ZSBpcyBvbmx5IHZhbGlkIGZvciBmbGF0IHBhbmVsIChERlApIGRpc3BsYXkgZGV2aWNlcy4K
KyAqCisgKiBUaGlzIGF0dHJpYnV0ZSBpcyBhIHBhY2tlZCBpbnRlZ2VyOyB0aGUgd2lkdGggaXMg
cGFja2VkIGluIHRoZSB1cHBlcgorICogMTYtYml0cyBhbmQgdGhlIGhlaWdodCBpcyBwYWNrZWQg
aW4gdGhlIGxvd2VyIDE2LWJpdHMuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0ZMQVRQQU5FTF9O
QVRJVkVfUkVTT0xVVElPTiAyNTEgLyogUi1ERyAqLworCisvKgorICogTlZfQ1RSTF9GTEFUUEFO
RUxfQkVTVF9GSVRfUkVTT0xVVElPTiAtIG5vdCBzdXBwb3J0ZWQKKyAqLworCisjZGVmaW5lIE5W
X0NUUkxfRkxBVFBBTkVMX0JFU1RfRklUX1JFU09MVVRJT04gMjUyIC8qIFItREcgKi8KKworLyoK
KyAqIE5WX0NUUkxfR1BVX1NDQUxJTkdfQUNUSVZFIC0gbm90IHN1cHBvcnRlZAorICovCisKKyNk
ZWZpbmUgTlZfQ1RSTF9HUFVfU0NBTElOR19BQ1RJVkUgMjUzIC8qIFItREcgKi8KKworLyoKKyAq
IE5WX0NUUkxfREZQX1NDQUxJTkdfQUNUSVZFIC0gbm90IHN1cHBvcnRlZAorICovCisKKyNkZWZp
bmUgTlZfQ1RSTF9ERlBfU0NBTElOR19BQ1RJVkUgMjU0IC8qIFItREcgKi8KKworLyoKKyAqIE5W
X0NUUkxfRlNBQV9BUFBMSUNBVElPTl9FTkhBTkNFRCAtIENvbnRyb2xzIGhvdyB0aGUgTlZfQ1RS
TF9GU0FBX01PREUKKyAqIGlzIGFwcGxpZWQgd2hlbiBOVl9DVFJMX0ZTQUFfQVBQTElDQVRJT05f
Q09OVFJPTExFRCBpcyBzZXQgdG8KKyAqIE5WX0NUUkxfQVBQTElDQVRJT05fQ09OVFJPTExFRF9E
SVNBQkxFRC4gIFdoZW4KKyAqIE5WX0NUUkxfRlNBQV9BUFBMSUNBVElPTl9FTkhBTkNFRCBpcyBf
RElTQUJMRUQsIE9wZW5HTCBhcHBsaWNhdGlvbnMgd2lsbAorICogYmUgZm9yY2VkIHRvIHVzZSB0
aGUgRlNBQSBtb2RlIHNwZWNpZmllZCBieSBOVl9DVFJMX0ZTQUFfTU9ERS4gIHdoZW4gc2V0Cisg
KiB0byBfRU5BQkxFRCwgb25seSB0aG9zZSBhcHBsaWNhdGlvbnMgdGhhdCBoYXZlIHNlbGVjdGVk
IGEgbXVsdGlzYW1wbGUKKyAqIEZCQ29uZmlnIHdpbGwgYmUgbWFkZSB0byB1c2UgdGhlIE5WX0NU
UkxfRlNBQV9NT0RFIHNwZWNpZmllZC4KKyAqCisgKiBUaGlzIGF0dHJpYnV0ZSBpcyBpZ25vcmVk
IHdoZW4gTlZfQ1RSTF9GU0FBX0FQUExJQ0FUSU9OX0NPTlRST0xMRUQgaXMKKyAqIHNldCB0byBO
Vl9DVFJMX0ZTQUFfQVBQTElDQVRJT05fQ09OVFJPTExFRF9FTkFCTEVELgorICovCisKKyNkZWZp
bmUgTlZfQ1RSTF9GU0FBX0FQUExJQ0FUSU9OX0VOSEFOQ0VEIDI1NSAvKiBSVy1YICovCisjZGVm
aW5lIE5WX0NUUkxfRlNBQV9BUFBMSUNBVElPTl9FTkhBTkNFRF9FTkFCTEVEIDEKKyNkZWZpbmUg
TlZfQ1RSTF9GU0FBX0FQUExJQ0FUSU9OX0VOSEFOQ0VEX0RJU0FCTEVEIDAKKworLyoKKyAqIE5W
X0NUUkxfRlJBTUVMT0NLX1NZTkNfUkFURV80IC0gVGhpcyBpcyB0aGUgcmVmcmVzaCByYXRlIHRo
YXQgdGhlCisgKiBmcmFtZSBsb2NrIGJvYXJkIGlzIHNlbmRpbmcgdG8gdGhlIEdQVSB3aXRoIDQg
ZGlnaXRzIG9mIHByZWNpc2lvbi4KKyAqCisgKiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmll
ZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpCisgKiB1c2luZyBhIE5WX0NU
UkxfVEFSR0VUX1RZUEVfRlJBTUVMT0NLLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxP
Q0tfU1lOQ19SQVRFXzQgMjU2IC8qIFItLUYgKi8KKworLyoKKyAqIE5WX0NUUkxfR1ZPX0xPQ0tf
T1dORVIgLSBpbmRpY2F0ZXMgdGhhdCB0aGUgR1ZPIGRldmljZSBpcyBhdmFpbGFibGUKKyAqIG9y
IGluIHVzZSAoYnkgR0xYIG9yIGFuIFggc2NyZWVuKS4KKyAqCisgKiBUaGUgR1ZPIGRldmljZSBp
cyBsb2NrZWQgYnkgR0xYIHdoZW4gZWl0aGVyIGdsWEdldFZpZGVvRGV2aWNlTlYKKyAqIChwYXJ0
IG9mIEdMWF9OVl92aWRlb19vdXQpIG9yIGdsWEJpbmRWaWRlb0RldmljZU5WIChwYXJ0IG9mCisg
KiBHTFhfTlZfcHJlc2VudF92aWRlbykgaXMgY2FsbGVkLiAgQWxsIEdWTyBvdXRwdXQgcmVzb3Vy
Y2VzIGFyZQorICogbG9ja2VkIHVudGlsIHJlbGVhc2VkIGJ5IHRoZSBHTFhfTlZfdmlkZW9fb3V0
L0dMWF9OVl9wcmVzZW50X3ZpZGVvCisgKiBjbGllbnQuCisgKgorICogVGhlIEdWTyBkZXZpY2Ug
aXMgbG9ja2VkL3VubG9ja2VkIGJ5IGFuIFggc2NyZWVuLCB3aGVuIHRoZSBHVk8gZGV2aWNlIGlz
CisgKiB1c2VkIGluIGEgTWV0YU1vZGUgb24gYW4gWCBzY3JlZW4uCisgKgorICogV2hlbiB0aGUg
R1ZPIGRldmljZSBpcyBsb2NrZWQsIHNldHRpbmcgb2YgdGhlIGZvbGxvd2luZyBHVk8gTlYtQ09O
VFJPTAorICogYXR0cmlidXRlcyB3aWxsIG5vdCBoYXBwZW4gaW1tZWRpYXRlbHkgYW5kIHdpbGwg
aW5zdGVhZCBiZSBjYWNoZWQuICBUaGUKKyAqIEdWTyByZXNvdXJjZSB3aWxsIG5lZWQgdG8gYmUg
ZGlzYWJsZWQvcmVsZWFzZWQgYW5kIHJlLWVuYWJsZWQvY2xhaW1lZCBmb3IKKyAqIHRoZSB2YWx1
ZXMgdG8gYmUgZmx1c2hlZC4gVGhlc2UgYXR0cmlidXRlcyBhcmU6CisgKgorICogICAgTlZfQ1RS
TF9HVklPX1JFUVVFU1RFRF9WSURFT19GT1JNQVQKKyAqICAgIE5WX0NUUkxfR1ZPX0RBVEFfRk9S
TUFUCisgKiAgICBOVl9DVFJMX0dWT19GTElQX1FVRVVFX1NJWkUKKyAqLworCisjZGVmaW5lIE5W
X0NUUkxfR1ZPX0xPQ0tfT1dORVIgMjU3IC8qIFItLSAqLworI2RlZmluZSBOVl9DVFJMX0dWT19M
T0NLX09XTkVSX05PTkUgMAorI2RlZmluZSBOVl9DVFJMX0dWT19MT0NLX09XTkVSX0dMWCAxCisj
ZGVmaW5lIE5WX0NUUkxfR1ZPX0xPQ0tfT1dORVJfQ0xPTkUgLyogbm8gbG9uZ2VyIHN1cHBvcnRl
ZCAqLyAyCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0xPQ0tfT1dORVJfWF9TQ1JFRU4gMworCisvKgor
ICogTlZfQ1RSTF9IV09WRVJMQVkgLSB3aGVuIGEgd29ya3N0YXRpb24gb3ZlcmxheSBpcyBpbiB1
c2UsIHJlcG9ydHMKKyAqIHdoZXRoZXIgdGhlIGhhcmR3YXJlIG92ZXJsYXkgaXMgdXNlZCwgb3Ig
aWYgdGhlIG92ZXJsYXkgaXMgZW11bGF0ZWQuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0hXT1ZF
UkxBWSAyNTggLyogUi0tICovCisjZGVmaW5lIE5WX0NUUkxfSFdPVkVSTEFZX0ZBTFNFIDAKKyNk
ZWZpbmUgTlZfQ1RSTF9IV09WRVJMQVlfVFJVRSAxCisKKy8qCisgKiBOVl9DVFJMX05VTV9HUFVf
RVJST1JTX1JFQ09WRVJFRCAtIFJldHVybnMgdGhlIG51bWJlciBvZiBHUFUgZXJyb3JzCisgKiBv
Y2N1cmVkLiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVy
eVRhcmdldEF0dHJpYnV0ZSgpCisgKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JF
RU4gdGFyZ2V0LgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9OVU1fR1BVX0VSUk9SU19SRUNPVkVS
RUQgMjU5IC8qIFItLS0gKi8KKworLyoKKyAqIE5WX0NUUkxfUkVGUkVTSF9SQVRFXzMgLSBSZXR1
cm5zIHRoZSByZWZyZXNoIHJhdGUgb2YgdGhlIHNwZWNpZmllZAorICogZGlzcGxheSBkZXZpY2Ug
aW4gMTAwMCAqIEh6IChpZS4gdG8gZ2V0IHRoZSByZWZyZXNoIHJhdGUgaW4gSHosIGRpdmlkZQor
ICogdGhlIHJldHVybmVkIHZhbHVlIGJ5IDEwMDAuKQorICoKKyAqIFRoaXMgYXR0cmlidXRlIG1h
eSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkKKyAqIHVz
aW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9HUFUgb3IgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1ND
UkVFTiB0YXJnZXQuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX1JFRlJFU0hfUkFURV8zIDI2MCAv
KiBSLURHICovCisKKy8qCisgKiBOVl9DVFJMX09OREVNQU5EX1ZCTEFOS19JTlRFUlJVUFRTIC0g
aWYgdGhlIE9uRGVtYW5kVkJsYW5rSW50ZXJydXB0cworICogWCBkcml2ZXIgb3B0aW9uIGlzIHNl
dCB0byB0cnVlLCB0aGlzIGF0dHJpYnV0ZSBjYW4gYmUgdXNlZCB0bworICogZGV0ZXJtaW5lIGlm
IG9uLWRlbWFuZCBWQmxhbmsgaW50ZXJydXB0IGNvbnRyb2wgaXMgZW5hYmxlZCBvbiB0aGUKKyAq
IHNwZWNpZmllZCBHUFUsIGFzIHdlbGwgYXMgdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhpcyBmZWF0
dXJlLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9PTkRFTUFORF9WQkxBTktfSU5URVJSVVBUUyAy
NjEgLyogUlctRyAqLworI2RlZmluZSBOVl9DVFJMX09OREVNQU5EX1ZCTEFOS19JTlRFUlJVUFRT
X09GRiAwCisjZGVmaW5lIE5WX0NUUkxfT05ERU1BTkRfVkJMQU5LX0lOVEVSUlVQVFNfT04gMQor
CisvKgorICogTlZfQ1RSTF9HUFVfUE9XRVJfU09VUkNFIHJlcG9ydHMgdGhlIHR5cGUgb2YgcG93
ZXIgc291cmNlCisgKiBvZiB0aGUgR1BVIGRyaXZpbmcgdGhlIFggc2NyZWVuLgorICovCisKKyNk
ZWZpbmUgTlZfQ1RSTF9HUFVfUE9XRVJfU09VUkNFIDI2MiAvKiBSLS1HICovCisjZGVmaW5lIE5W
X0NUUkxfR1BVX1BPV0VSX1NPVVJDRV9BQyAwCisjZGVmaW5lIE5WX0NUUkxfR1BVX1BPV0VSX1NP
VVJDRV9CQVRURVJZIDEKKworLyoKKyAqIE5WX0NUUkxfR1BVX0NVUlJFTlRfUEVSRk9STUFOQ0Vf
TU9ERSBpcyBkZXByZWNhdGVkCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0dQVV9DVVJSRU5UX1BF
UkZPUk1BTkNFX01PREUgMjYzIC8qIFItLUcgKi8KKyNkZWZpbmUgTlZfQ1RSTF9HUFVfQ1VSUkVO
VF9QRVJGT1JNQU5DRV9NT0RFX0RFU0tUT1AgMAorI2RlZmluZSBOVl9DVFJMX0dQVV9DVVJSRU5U
X1BFUkZPUk1BTkNFX01PREVfTUFYUEVSRiAxCisKKy8qIE5WX0NUUkxfR0xZUEhfQ0FDSEUgLSBF
bmFibGVzIFJFTkRFUiBHbHlwaCBDYWNoaW5nIHRvIFZSQU0gKi8KKworI2RlZmluZSBOVl9DVFJM
X0dMWVBIX0NBQ0hFIDI2NCAvKiBSVy0gKi8KKyNkZWZpbmUgTlZfQ1RSTF9HTFlQSF9DQUNIRV9E
SVNBQkxFRCAwCisjZGVmaW5lIE5WX0NUUkxfR0xZUEhfQ0FDSEVfRU5BQkxFRCAxCisKKy8qCisg
KiBOVl9DVFJMX0dQVV9DVVJSRU5UX1BFUkZPUk1BTkNFX0xFVkVMIHJlcG9ydHMgdGhlIGN1cnJl
bnQKKyAqIFBlcmZvcm1hbmNlIGxldmVsIG9mIHRoZSBHUFUgZHJpdmluZyB0aGUgWCBzY3JlZW4u
ICBFYWNoCisgKiBQZXJmb3JtYW5jZSBsZXZlbCBoYXMgYXNzb2NpYXRlZCBOVkNsb2NrIGFuZCBN
ZW0gQ2xvY2sgdmFsdWVzLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HUFVfQ1VSUkVOVF9QRVJG
T1JNQU5DRV9MRVZFTCAyNjUgLyogUi0tRyAqLworCisvKgorICogTlZfQ1RSTF9HUFVfQURBUFRJ
VkVfQ0xPQ0tfU1RBVEUgcmVwb3J0cyBpZiBBZGFwdGl2ZSBDbG9ja2luZworICogaXMgRW5hYmxl
ZCBvbiB0aGUgR1BVIGRyaXZpbmcgdGhlIFggc2NyZWVuLgorICovCisKKyNkZWZpbmUgTlZfQ1RS
TF9HUFVfQURBUFRJVkVfQ0xPQ0tfU1RBVEUgMjY2IC8qIFItLUcgKi8KKyNkZWZpbmUgTlZfQ1RS
TF9HUFVfQURBUFRJVkVfQ0xPQ0tfU1RBVEVfRElTQUJMRUQgMAorI2RlZmluZSBOVl9DVFJMX0dQ
VV9BREFQVElWRV9DTE9DS19TVEFURV9FTkFCTEVEIDEKKworLyoKKyAqIE5WX0NUUkxfR1ZPX09V
VFBVVF9WSURFT19MT0NLRUQgLSBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBHVk8gb3V0cHV0
CisgKiB2aWRlbyBpcyBsb2NrZWQgdG8gdGhlIEdQVS4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxf
R1ZPX09VVFBVVF9WSURFT19MT0NLRUQgMjY3IC8qIFItLS0gKi8KKyNkZWZpbmUgTlZfQ1RSTF9H
Vk9fT1VUUFVUX1ZJREVPX0xPQ0tFRF9GQUxTRSAwCisjZGVmaW5lIE5WX0NUUkxfR1ZPX09VVFBV
VF9WSURFT19MT0NLRURfVFJVRSAxCisKKy8qCisgKiBOVl9DVFJMX0dWT19TWU5DX0xPQ0tfU1RB
VFVTIC0gUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgR1ZPIGRldmljZQorICogaXMgbG9ja2Vk
IHRvIHRoZSBpbnB1dCByZWYgc2lnbmFsLiAgSWYgdGhlIHN5bmMgbW9kZSBpcyBzZXQgdG8KKyAq
IE5WX0NUUkxfR1ZPX1NZTkNfTU9ERV9HRU5MT0NLLCB0aGVuIHRoaXMgcmV0dXJucyB0aGUgZ2Vu
bG9jaworICogc3luYyBzdGF0dXMsIGFuZCBpZiB0aGUgc3luYyBtb2RlIGlzIHNldCB0byBOVl9D
VFJMX0dWT19TWU5DX01PREVfRlJBTUVMT0NLLAorICogdGhlbiB0aGlzIHJlcG9ydHMgdGhlIGZy
YW1lIGxvY2sgc3RhdHVzLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fU1lOQ19MT0NLX1NU
QVRVUyAyNjggLyogUi0tLSAqLworI2RlZmluZSBOVl9DVFJMX0dWT19TWU5DX0xPQ0tfU1RBVFVT
X1VOTE9DS0VEIDAKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fU1lOQ19MT0NLX1NUQVRVU19MT0NLRUQg
MQorCisvKgorICogTlZfQ1RSTF9HVk9fQU5DX1RJTUVfQ09ERV9HRU5FUkFUSU9OIC0gQWxsb3dz
IFNESSBkZXZpY2UgdG8gZ2VuZXJhdGUKKyAqIHRpbWUgY29kZXMgaW4gdGhlIEFOQyByZWdpb24g
b2YgdGhlIFNESSB2aWRlbyBvdXRwdXQgc3RyZWFtLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9H
Vk9fQU5DX1RJTUVfQ09ERV9HRU5FUkFUSU9OIDI2OSAvKiBSVy0tICovCisjZGVmaW5lIE5WX0NU
UkxfR1ZPX0FOQ19USU1FX0NPREVfR0VORVJBVElPTl9ESVNBQkxFIDAKKyNkZWZpbmUgTlZfQ1RS
TF9HVk9fQU5DX1RJTUVfQ09ERV9HRU5FUkFUSU9OX0VOQUJMRSAxCisKKy8qCisgKiBOVl9DVFJM
X0dWT19DT01QT1NJVEUgLSBFbmFibGVzL0Rpc2FibGVzIFNESSBjb21wb3NpdGluZy4gIFRoaXMg
YXR0cmlidXRlCisgKiBpcyBvbmx5IGF2YWlsYWJsZSB3aGVuIGFuIFNESSBpbnB1dCBzb3VyY2Ug
aXMgZGV0ZWN0ZWQgYW5kIGlzIGluIGdlbmxvY2sKKyAqIG1vZGUuCisgKi8KKworI2RlZmluZSBO
Vl9DVFJMX0dWT19DT01QT1NJVEUgMjcwIC8qIFJXLS0gKi8KKyNkZWZpbmUgTlZfQ1RSTF9HVk9f
Q09NUE9TSVRFX0RJU0FCTEUgMAorI2RlZmluZSBOVl9DVFJMX0dWT19DT01QT1NJVEVfRU5BQkxF
IDEKKworLyoKKyAqIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9BTFBIQV9LRVkgLSBXaGVuIGNvbXBv
c2l0aW5nIGlzIGVuYWJsZWQsIHRoaXMKKyAqIGVuYWJsZXMvZGlzYWJsZXMgYWxwaGEgYmxlbmRp
bmcuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0dWT19DT01QT1NJVEVfQUxQSEFfS0VZIDI3MSAv
KiBSVy0tICovCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9BTFBIQV9LRVlfRElTQUJM
RSAwCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9BTFBIQV9LRVlfRU5BQkxFIDEKKwor
LyoKKyAqIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9MVU1BX0tFWV9SQU5HRSAtIFNldCB0aGUgdmFs
dWVzIG9mIGEgbHVtYQorICogY2hhbm5lbCByYW5nZS4gIFRoaXMgaXMgYSBwYWNrZWQgaW50IHRo
YXQgaGFzIHRoZSBmb2xsb3dpbmcgZm9ybWF0CisgKiAoaW4gb3JkZXIgb2YgaGlnaC1iaXRzIHRv
IGxvdyBiaXRzKToKKyAqCisgKiBSYW5nZSAjICgxMSBiaXRzKSwgKEVuYWJsZWQgMSBiaXQpLCBt
aW4gdmFsdWUgKDEwIGJpdHMpLCBtYXggdmFsdWUgKDEwIGJpdHMpCisgKgorICogVG8gcXVlcnkg
dGhlIGN1cnJlbnQgdmFsdWVzLCBwYXNzIHRoZSByYW5nZSAjIHRocm91Z2h0IHRoZSBkaXNwbGF5
X21hc2sKKyAqIHZhcmlhYmxlLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fQ09NUE9TSVRF
X0xVTUFfS0VZX1JBTkdFIDI3MiAvKiBSVy0tICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fQ09N
UE9TSVRFX01BS0VfUkFOR0UocmFuZ2UsIGVuYWJsZSwgbWluLCBtYXgpICAgICAgICAgICAgXAor
ICAgICgoKChtaW4pJjB4M0ZGKSA8PCAwKSB8ICgoKG1heCkmMHgzRkYpIDw8IDEwKSB8ICgoKGVu
YWJsZSkmMHgxKSA8PCAyMCkgfCBcCisgICAgICgoKHJhbmdlKSYweDdGRikgPDwgMjEpKQorCisj
ZGVmaW5lIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9HRVRfUkFOR0UodmFsLCByYW5nZSwgZW5hYmxl
LCBtaW4sIG1heCkgXAorICAgIChtaW4pID0gKCh2YWwpID4+IDApICYgMHgzRkY7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAobWF4KSA9ICgodmFsKSA+PiAxMCkg
JiAweDNGRjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKGVuYWJs
ZSkgPSAoKHZhbCkgPj4gMjApICYgMHgxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIChyYW5nZSkgPSAoKHZhbCkgPj4gMjEpICYgMHg3RkY7CisKKy8qCisgKiBOVl9D
VFJMX0dWT19DT01QT1NJVEVfQ1JfS0VZX1JBTkdFIC0gU2V0IHRoZSB2YWx1ZXMgb2YgYSBDUgor
ICogY2hhbm5lbCByYW5nZS4gIFRoaXMgaXMgYSBwYWNrZWQgaW50IHRoYXQgaGFzIHRoZSBmb2xs
b3dpbmcgZm9ybWF0CisgKiAoaW4gb3JkZXIgb2YgaGlnaC1iaXRzIHRvIGxvdyBiaXRzKToKKyAq
CisgKiBSYW5nZSAjICgxMSBiaXRzKSwgKEVuYWJsZWQgMSBiaXQpLCBtaW4gdmFsdWUgKDEwIGJp
dHMpLCBtYXggdmFsdWUgKDEwIGJpdHMpCisgKgorICogVG8gcXVlcnkgdGhlIGN1cnJlbnQgdmFs
dWVzLCBwYXNzIHRoZSByYW5nZSAjIHRocm91Z2h0IGhlIGRpc3BsYXlfbWFzaworICogdmFyaWFi
bGUuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0dWT19DT01QT1NJVEVfQ1JfS0VZX1JBTkdFIDI3
MyAvKiBSVy0tICovCisKKy8qCisgKiBOVl9DVFJMX0dWT19DT01QT1NJVEVfQ0JfS0VZX1JBTkdF
IC0gU2V0IHRoZSB2YWx1ZXMgb2YgYSBDQgorICogY2hhbm5lbCByYW5nZS4gIFRoaXMgaXMgYSBw
YWNrZWQgaW50IHRoYXQgaGFzIHRoZSBmb2xsb3dpbmcgZm9ybWF0CisgKiAoaW4gb3JkZXIgb2Yg
aGlnaC1iaXRzIHRvIGxvdyBiaXRzKToKKyAqCisgKiBSYW5nZSAjICgxMSBiaXRzKSwgKEVuYWJs
ZWQgMSBiaXQpLCBtaW4gdmFsdWUgKDEwIGJpdHMpLCBtYXggdmFsdWUgKDEwIGJpdHMpCisgKgor
ICogVG8gcXVlcnkgdGhlIGN1cnJlbnQgdmFsdWVzLCBwYXNzIHRoZSByYW5nZSAjIHRocm91Z2h0
IGhlIGRpc3BsYXlfbWFzaworICogdmFyaWFibGUuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0dW
T19DT01QT1NJVEVfQ0JfS0VZX1JBTkdFIDI3NCAvKiBSVy0tICovCisKKy8qCisgKiBOVl9DVFJM
X0dWT19DT01QT1NJVEVfTlVNX0tFWV9SQU5HRVMgLSBSZXR1cm5zIHRoZSBudW1iZXIgb2YgcmFu
Z2VzCisgKiBhdmFpbGFibGUgZm9yIGVhY2ggY2hhbm5lbCAoWS9MdW1hLCBDciwgYW5kIENiLikK
KyAqLworCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9OVU1fS0VZX1JBTkdFUyAyNzUg
LyogUi0tLSAqLworCisvKgorICogTlZfQ1RSTF9TV0lUQ0hfVE9fRElTUExBWVMgLSBDYW4gYmUg
dXNlZCB0byBzZWxlY3Qgd2hpY2ggZGlzcGxheXMKKyAqIHRvIHN3aXRjaCB0byAoYXMgYSBob3Rr
ZXkgZXZlbnQpLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9TV0lUQ0hfVE9fRElTUExBWVMgMjc2
IC8qIC1XLSAqLworCisvKgorICogTlZfQ1RSTF9OT1RFQk9PS19ESVNQTEFZX0NIQU5HRV9MSURf
RVZFTlQgLSBFdmVudCB0aGF0IG5vdGlmaWVzCisgKiB3aGVuIGEgbm90ZWJvb2sgbGlkIGNoYW5n
ZSBvY2N1cnMgKGkuZS4gd2hlbiB0aGUgbGlkIGlzIG9wZW5lZCBvcgorICogY2xvc2VkLikgIFRo
aXMgYXR0cmlidXRlIGNhbiBiZSBxdWVyaWVkIHRvIHJldHJpZXZlIHRoZSBjdXJyZW50CisgKiBu
b3RlYm9vayBsaWQgc3RhdHVzIChvcGVuZWQvY2xvc2VkLikKKyAqLworCisjZGVmaW5lIE5WX0NU
UkxfTk9URUJPT0tfRElTUExBWV9DSEFOR0VfTElEX0VWRU5UIDI3NyAvKiBSVy0gKi8KKyNkZWZp
bmUgTlZfQ1RSTF9OT1RFQk9PS19ESVNQTEFZX0NIQU5HRV9MSURfRVZFTlRfQ0xPU0UgMAorI2Rl
ZmluZSBOVl9DVFJMX05PVEVCT09LX0RJU1BMQVlfQ0hBTkdFX0xJRF9FVkVOVF9PUEVOIDEKKwor
LyoKKyAqIE5WX0NUUkxfTk9URUJPT0tfSU5URVJOQUxfTENEIC0gUmV0dXJucyB0aGUgZGlzcGxh
eSBkZXZpY2UgbWFzayBvZgorICogdGhlIGludGVuYWwgTENEIG9mIGEgbm90ZWJvb2suCisgKi8K
KworI2RlZmluZSBOVl9DVFJMX05PVEVCT09LX0lOVEVSTkFMX0xDRCAyNzggLyogUi0tICovCisK
Ky8qCisgKiBOVl9DVFJMX0RFUFRIXzMwX0FMTE9XRUQgLSByZXR1cm5zIHdoZXRoZXIgdGhlIE5W
SURJQSBYIGRyaXZlciBzdXBwb3J0cworICogZGVwdGggMzAgb24gdGhlIHNwZWNpZmllZCBYIHNj
cmVlbiBvciBHUFUuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0RFUFRIXzMwX0FMTE9XRUQgMjc5
IC8qIFItLUcgKi8KKworLyoKKyAqIE5WX0NUUkxfTU9ERV9TRVRfRVZFTlQgVGhpcyBhdHRyaWJ1
dGUgaXMgc2VudCBhcyBhbiBldmVudAorICogd2hlbiBob3RrZXksIGN0cmwtYWx0LSsvLSBvciBy
YW5kciBldmVudCBvY2N1cnMuICBOb3RlIHRoYXQKKyAqIFRoaXMgYXR0cmlidXRlIGNhbm5vdCBi
ZSBzZXQgb3IgcXVlcmllZCBhbmQgaXMgbWVhbnQgdG8KKyAqIGJlIHJlY2VpdmVkIGJ5IGNsaWVu
dHMgdGhhdCB3aXNoIHRvIGJlIG5vdGlmaWVkIG9mIHdoZW4KKyAqIG1vZGUgc2V0IGV2ZW50cyBv
Y2N1ci4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfTU9ERV9TRVRfRVZFTlQgMjgwIC8qIC0tLSAq
LworCisvKgorICogTlZfQ1RSTF9PUEVOR0xfQUFfTElORV9HQU1NQV9WQUxVRSAtIHRoZSBnYW1t
YSB2YWx1ZSB1c2VkIGJ5CisgKiBPcGVuR0wgd2hlbiBOVl9DVFJMX09QRU5HTF9BQV9MSU5FX0dB
TU1BIGlzIGVuYWJsZWQKKyAqLworCisjZGVmaW5lIE5WX0NUUkxfT1BFTkdMX0FBX0xJTkVfR0FN
TUFfVkFMVUUgMjgxIC8qIFJXLVggKi8KKworLyoKKyAqIE5WX0NUUkxfVkNTQ19ISUdIX1BFUkZf
TU9ERSAtIElzIHVzZWQgdG8gYm90aCBxdWVyeSBIaWdoIFBlcmZvcm1hbmNlIE1vZGUKKyAqIHN0
YXR1cyBvbiB0aGUgVmlzdWFsIENvbXB1dGluZyBTeXN0ZW0sIGFuZCBhbHNvIHRvIGVuYWJsZSBv
ciBkaXNhYmxlIEhpZ2gKKyAqIFBlcmZvcm1hbmNlIE1vZGUuCisgKi8KKworI2RlZmluZSBOVl9D
VFJMX1ZDU0NfSElHSF9QRVJGX01PREUgMjgyIC8qIFJXLVYgKi8KKyNkZWZpbmUgTlZfQ1RSTF9W
Q1NDX0hJR0hfUEVSRl9NT0RFX0RJU0FCTEUgMAorI2RlZmluZSBOVl9DVFJMX1ZDU0NfSElHSF9Q
RVJGX01PREVfRU5BQkxFIDEKKworLyoKKyAqIE5WX0NUUkxfRElTUExBWVBPUlRfTElOS19SQVRF
IC0gcmV0dXJucyB0aGUgbmVnb3RpYXRlZCBsYW5lIGJhbmR3aWR0aCBvZiB0aGUKKyAqIERpc3Bs
YXlQb3J0IG1haW4gbGluay4KKyAqIFRoaXMgYXR0cmlidXRlIGlzIG9ubHkgYXZhaWxhYmxlIGZv
ciBEaXNwbGF5UG9ydCBmbGF0IHBhbmVscy4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfRElTUExB
WVBPUlRfTElOS19SQVRFIDI5MSAvKiBSLURHICovCisjZGVmaW5lIE5WX0NUUkxfRElTUExBWVBP
UlRfTElOS19SQVRFX0RJU0FCTEVEIDB4MAorI2RlZmluZSBOVl9DVFJMX0RJU1BMQVlQT1JUX0xJ
TktfUkFURV8xXzYyR0JQUyAweDYKKyNkZWZpbmUgTlZfQ1RSTF9ESVNQTEFZUE9SVF9MSU5LX1JB
VEVfMl83MEdCUFMgMHhBCisKKy8qCisgKiBOVl9DVFJMX1NURVJFT19FWUVTX0VYQ0hBTkdFIC0g
Q29udHJvbHMgd2hldGhlciBvciBub3QgdGhlIGxlZnQgYW5kIHJpZ2h0CisgKiBleWVzIG9mIGEg
c3RlcmVvIGltYWdlIGFyZSBmbGlwcGVkLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9TVEVSRU9f
RVlFU19FWENIQU5HRSAyOTIgLyogUlctWCAqLworI2RlZmluZSBOVl9DVFJMX1NURVJFT19FWUVT
X0VYQ0hBTkdFX09GRiAwCisjZGVmaW5lIE5WX0NUUkxfU1RFUkVPX0VZRVNfRVhDSEFOR0VfT04g
MQorCisvKgorICogTlZfQ1RSTF9OT19TQ0FOT1VUIC0gcmV0dXJucyB3aGV0aGVyIHRoZSBzcGVj
aWFsICJOb1NjYW5vdXQiIG1vZGUgaXMKKyAqIGVuYWJsZWQgb24gdGhlIHNwZWNpZmllZCBYIHNj
cmVlbiBvciBHUFU7IGZvciBkZXRhaWxzIG9uIHRoaXMgbW9kZSwKKyAqIHNlZSB0aGUgZGVzY3Jp
cHRpb24gb2YgdGhlICJub25lIiB2YWx1ZSBmb3IgdGhlICJVc2VEaXNwbGF5RGV2aWNlIgorICog
WCBjb25maWd1cmF0aW9uIG9wdGlvbiBpbiB0aGUgTlZJRElBIGRyaXZlciBSRUFETUUuCisgKi8K
KworI2RlZmluZSBOVl9DVFJMX05PX1NDQU5PVVQgMjkzIC8qIFItLUcgKi8KKyNkZWZpbmUgTlZf
Q1RSTF9OT19TQ0FOT1VUX0RJU0FCTEVEIDAKKyNkZWZpbmUgTlZfQ1RSTF9OT19TQ0FOT1VUX0VO
QUJMRUQgMQorCisvKgorICogTlZfQ1RSTF9HVk9fQ1NDX0NIQU5HRURfRVZFTlQgVGhpcyBhdHRy
aWJ1dGUgaXMgc2VudCBhcyBhbiBldmVudAorICogd2hlbiB0aGUgY29sb3Igc3BhY2UgY29udmVy
c2lvbiBtYXRyaXggaGFzIGJlZW4gYWx0ZXJlZCBieSBhbm90aGVyCisgKiBjbGllbnQuCisgKi8K
KworI2RlZmluZSBOVl9DVFJMX0dWT19DU0NfQ0hBTkdFRF9FVkVOVCAyOTQgLyogLS0tICovCisK
Ky8qCisgKiBOVl9DVFJMX0ZSQU1FTE9DS19TTEFWRUFCTEUgLSBSZXR1cm5zIGEgYml0bWFzayBv
ZiB0aGUgZGlzcGxheSBkZXZpY2VzCisgKiB0aGF0IGFyZSAoY3VycmVudGx5KSBhbGxvd2VkIHRv
IGJlIHNlbGVjdGVkIGFzIHNsYXZlIGRldmljZXMgZm9yIHRoZQorICogZ2l2ZW4gR1BVCisgKi8K
KworI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19TTEFWRUFCTEUgMjk1IC8qIFItREcgKi8KKwor
LyoKKyAqIE5WX0NUUkxfR1ZPX1NZTkNfVE9fRElTUExBWSBUaGlzIGF0dHJpYnV0ZSBjb250cm9s
cyB3aGV0aGVyIG9yIG5vdAorICogdGhlIG5vbi1TREkgZGlzcGxheSBkZXZpY2Ugd2lsbCBiZSBz
eW5jJ2VkIHRvIHRoZSBTREkgZGlzcGxheSBkZXZpY2UKKyAqICh3aGVuIGNvbmZpZ3VyZWQgaW4g
VHdpblZpZXcsIENsb25lIE1vZGUgb3Igd2hlbiB1c2luZyB0aGUgU0RJIGRldmljZQorICogd2l0
aCBPcGVuR0wpLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fU1lOQ19UT19ESVNQTEFZIDI5
NiAvKiAtLS0gKi8KKyNkZWZpbmUgTlZfQ1RSTF9HVk9fU1lOQ19UT19ESVNQTEFZX0RJU0FCTEUg
MAorI2RlZmluZSBOVl9DVFJMX0dWT19TWU5DX1RPX0RJU1BMQVlfRU5BQkxFIDEKKworLyoKKyAq
IE5WX0NUUkxfWF9TRVJWRVJfVU5JUVVFX0lEIC0gcmV0dXJucyBhIHBzZXVkby11bmlxdWUgaWRl
bnRpZmllciBmb3IgdGhpcworICogWCBzZXJ2ZXIuIEludGVuZGVkIGZvciB1c2UgaW4gY2FzZXMg
d2hlcmUgYW4gTlYtQ09OVFJPTCBjbGllbnQgY29tbXVuaWNhdGVzCisgKiB3aXRoIG11bHRpcGxl
IFggc2VydmVycywgYW5kIHdhbnRzIHNvbWUgbGV2ZWwgb2YgY29uZmlkZW5jZSB0aGF0IHR3bwor
ICogWCBEaXNwbGF5IGNvbm5lY3Rpb25zIGNvcnJlc3BvbmQgdG8gdGhlIHNhbWUgb3IgZGlmZmVy
ZW50IFggc2VydmVycy4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfWF9TRVJWRVJfVU5JUVVFX0lE
IDI5NyAvKiBSLS0tICovCisKKy8qCisgKiBOVl9DVFJMX1BJWE1BUF9DQUNIRSAtIFRoaXMgYXR0
cmlidXRlIGNvbnRyb2xzIHdoZXRoZXIgdGhlIGRyaXZlciBhdHRlbXB0cyB0bworICogc3RvcmUg
dmlkZW8gbWVtb3J5IHBpeG1hcHMgaW4gYSBjYWNoZS4gIFRoZSBjYWNoZSBzcGVlZHMgdXAgYWxs
b2NhdGlvbiBhbmQKKyAqIGRlYWxsb2NhdGlvbiBvZiBwaXhtYXBzLCBidXQgY291bGQgdXNlIG1v
cmUgbWVtb3J5IHRoYW4gd2hlbiB0aGUgY2FjaGUgaXMKKyAqIGRpc2FibGVkLgorICovCisKKyNk
ZWZpbmUgTlZfQ1RSTF9QSVhNQVBfQ0FDSEUgMjk4IC8qIFJXLVggKi8KKyNkZWZpbmUgTlZfQ1RS
TF9QSVhNQVBfQ0FDSEVfRElTQUJMRSAwCisjZGVmaW5lIE5WX0NUUkxfUElYTUFQX0NBQ0hFX0VO
QUJMRSAxCisKKy8qCisgKiBOVl9DVFJMX1BJWE1BUF9DQUNIRV9ST1VORElOR19TSVpFX0tCIC0g
V2hlbiB0aGUgcGl4bWFwIGNhY2hlIGlzIGVuYWJsZWQgYW5kCisgKiB0aGVyZSBpcyBub3QgZW5v
dWdoIGZyZWUgc3BhY2UgaW4gdGhlIGNhY2hlIHRvIGZpdCBhIG5ldyBwaXhtYXAsIHRoZSBkcml2
ZXIKKyAqIHdpbGwgcm91bmQgdXAgdG8gdGhlIG5leHQgbXVsdGlwbGUgb2YgdGhpcyBudW1iZXIg
b2Yga2lsb2J5dGVzIHdoZW4KKyAqIGFsbG9jYXRpbmcgbW9yZSBtZW1vcnkgZm9yIHRoZSBjYWNo
ZS4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfUElYTUFQX0NBQ0hFX1JPVU5ESU5HX1NJWkVfS0Ig
Mjk5IC8qIFJXLVggKi8KKworLyoKKyAqIE5WX0NUUkxfSVNfR1ZPX0RJU1BMQVkgLSByZXR1cm5z
IHdoZXRoZXIgb3Igbm90IGEgZ2l2ZW4gZGlzcGxheSBpcyBhbgorICogU0RJIGRldmljZS4KKyAq
LworCisjZGVmaW5lIE5WX0NUUkxfSVNfR1ZPX0RJU1BMQVkgMzAwIC8qIFItRCAqLworI2RlZmlu
ZSBOVl9DVFJMX0lTX0dWT19ESVNQTEFZX0ZBTFNFIDAKKyNkZWZpbmUgTlZfQ1RSTF9JU19HVk9f
RElTUExBWV9UUlVFIDEKKworLyoKKyAqIE5WX0NUUkxfUENJX0lEIC0gUmV0dXJucyB0aGUgUENJ
IHZlbmRvciBhbmQgZGV2aWNlIElEIG9mIHRoZSBzcGVjaWZpZWQKKyAqIGRldmljZS4KKyAqCisg
KiBOVl9DVFJMX1BDSV9JRCBpcyBhICJwYWNrZWQiIGludGVnZXIgYXR0cmlidXRlOyB0aGUgUENJ
IHZlbmRvciBJRCBpcyBzdG9yZWQKKyAqIGluIHRoZSB1cHBlciAxNiBiaXRzIG9mIHRoZSBpbnRl
Z2VyLCBhbmQgdGhlIFBDSSBkZXZpY2UgSUQgaXMgc3RvcmVkIGluIHRoZQorICogbG93ZXIgMTYg
Yml0cyBvZiB0aGUgaW50ZWdlci4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfUENJX0lEIDMwMSAv
KiBSLS1HSSAqLworCisvKgorICogTlZfQ1RSTF9HVk9fRlVMTF9SQU5HRV9DT0xPUiAtIEFsbG93
IGZ1bGwgcmFuZ2UgY29sb3IgZGF0YSBbNC0xMDE5XQorICogd2l0aG91dCBjbGFtcGluZyB0byBb
NjQtOTQwXS4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0ZVTExfUkFOR0VfQ09MT1IgMzAy
IC8qIFJXLSAqLworI2RlZmluZSBOVl9DVFJMX0dWT19GVUxMX1JBTkdFX0NPTE9SX0RJU0FCTEVE
IDAKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fRlVMTF9SQU5HRV9DT0xPUl9FTkFCTEVEIDEKKworLyoK
KyAqIE5WX0NUUkxfU0xJX01PU0FJQ19NT0RFX0FWQUlMQUJMRSAtIFJldHVybnMgd2hldGhlciBv
ciBub3QKKyAqIFNMSSBNb3NhaWMgTW9kZSBzdXBwb3J0ZWQuCisgKi8KKworI2RlZmluZSBOVl9D
VFJMX1NMSV9NT1NBSUNfTU9ERV9BVkFJTEFCTEUgMzAzIC8qIFItLSAqLworI2RlZmluZSBOVl9D
VFJMX1NMSV9NT1NBSUNfTU9ERV9BVkFJTEFCTEVfRkFMU0UgMAorI2RlZmluZSBOVl9DVFJMX1NM
SV9NT1NBSUNfTU9ERV9BVkFJTEFCTEVfVFJVRSAxCisKKy8qCisgKiBOVl9DVFJMX0dWT19FTkFC
TEVfUkdCX0RBVEEgLSBBbGxvd3MgY2xpZW50cyB0byBzcGVjaWZ5IHdoZW4KKyAqIHRoZSBHVk8g
Ym9hcmQgc2hvdWxkIHByb2Nlc3MgY29sb3JzIGFzIFJHQiB3aGVuIHRoZSBvdXRwdXQgZGF0YQor
ICogZm9ybWF0IGlzIG9uZSBvZiB0aGUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRfPz8/X1BBU1NU
UkhVIG1vZGVzLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fRU5BQkxFX1JHQl9EQVRBIDMw
NCAvKiBSVy0gKi8KKyNkZWZpbmUgTlZfQ1RSTF9HVk9fRU5BQkxFX1JHQl9EQVRBX0RJU0FCTEUg
MAorI2RlZmluZSBOVl9DVFJMX0dWT19FTkFCTEVfUkdCX0RBVEFfRU5BQkxFIDEKKworLyoKKyAq
IE5WX0NUUkxfSU1BR0VfU0hBUlBFTklOR19ERUZBVUxUIC0gUmV0dXJucyBkZWZhdWx0IHZhbHVl
IG9mCisgKiBJbWFnZSBTaGFycGVuaW5nLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9JTUFHRV9T
SEFSUEVOSU5HX0RFRkFVTFQgMzA1IC8qIFItLSAqLworCisvKgorICogTlZfQ1RSTF9QQ0lfRE9N
QUlOIC0gUmV0dXJucyB0aGUgUENJIGRvbWFpbiBudW1iZXIgdGhlIHNwZWNpZmllZCBkZXZpY2Ug
aXMKKyAqIHVzaW5nLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9QQ0lfRE9NQUlOIDMwNiAvKiBS
LS1HSSAqLworCisvKgorICogTlZfQ1RSTF9HVklfTlVNX0pBQ0tTIC0gUmV0dXJucyB0aGUgbnVt
YmVyIG9mIGlucHV0IEJOQyBqYWNrcyBhdmFpbGFibGUKKyAqIG9uIGEgR1ZJIGRldmljZS4KKyAq
LworCisjZGVmaW5lIE5WX0NUUkxfR1ZJX05VTV9KQUNLUyAzMDcgLyogUi0tSSAqLworCisvKgor
ICogTlZfQ1RSTF9HVklfTUFYX0xJTktTX1BFUl9TVFJFQU0gLSBSZXR1cm5zIHRoZSBtYXhpbXVt
IHN1cHBvcnRlZCBudW1iZXIgb2YKKyAqIGxpbmtzIHRoYXQgY2FuIGJlIHRpZWQgdG8gb25lIHN0
cmVhbS4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfR1ZJX01BWF9MSU5LU19QRVJfU1RSRUFNIDMw
OCAvKiBSLS1JICovCisKKy8qCisgKiBOVl9DVFJMX0dWSV9ERVRFQ1RFRF9DSEFOTkVMX0JJVFNf
UEVSX0NPTVBPTkVOVCAtIFJldHVybnMgdGhlIGRldGVjdGVkCisgKiBudW1iZXIgb2YgYml0cyBw
ZXIgY29tcG9uZW50IChCUEMpIG9mIGRhdGEgb24gdGhlIGdpdmVuIGlucHV0IGphY2srCisgKiBj
aGFubmVsLgorICoKKyAqIFRoZSBqYWNrIG51bWJlciBzaG91bGQgYmUgc3BlY2lmaWVkIGluIHRo
ZSBsb3dlciAxNiBiaXRzIG9mIHRoZQorICogImRpc3BsYXlfbWFzayIgcGFyYW1ldGVyLCB3aGls
ZSB0aGUgY2hhbm5lbCBudW1iZXIgc2hvdWxkIGJlIHNwZWNpZmllZCBpbgorICogdGhlIHVwcGVy
IDE2IGJpdHMuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0dWSV9ERVRFQ1RFRF9DSEFOTkVMX0JJ
VFNfUEVSX0NPTVBPTkVOVCAzMDkgLyogUi0tSSAqLworI2RlZmluZSBOVl9DVFJMX0dWSV9CSVRT
X1BFUl9DT01QT05FTlRfVU5LTk9XTiAwCisjZGVmaW5lIE5WX0NUUkxfR1ZJX0JJVFNfUEVSX0NP
TVBPTkVOVF84IDEKKyNkZWZpbmUgTlZfQ1RSTF9HVklfQklUU19QRVJfQ09NUE9ORU5UXzEwIDIK
KyNkZWZpbmUgTlZfQ1RSTF9HVklfQklUU19QRVJfQ09NUE9ORU5UXzEyIDMKKworLyoKKyAqIE5W
X0NUUkxfR1ZJX1JFUVVFU1RFRF9TVFJFQU1fQklUU19QRVJfQ09NUE9ORU5UIC0gU3BlY2lmeSB0
aGUgbnVtYmVyIG9mCisgKiBiaXRzIHBlciBjb21wb25lbnQgKEJQQykgb2YgZGF0YSBmb3IgdGhl
IGNhcHR1cmVkIHN0cmVhbS4KKyAqIFRoZSBzdHJlYW0gbnVtYmVyIHNob3VsZCBiZSBzcGVjaWZp
ZWQgaW4gdGhlICJkaXNwbGF5X21hc2siIHBhcmFtZXRlci4KKyAqCisgKiBOb3RlOiBTZXR0aW5n
IHRoaXMgYXR0cmlidXRlIG1heSBhbHNvIHJlc3VsdCBpbiB0aGUgZm9sbG93aW5nCisgKiAgICAg
ICBOVi1DT05UUk9MIGF0dHJpYnV0ZXMgYmVpbmcgcmVzZXQgb24gdGhlIEdWSSBkZXZpY2UgKHRv
IGVuc3VyZQorICogICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gcmVtYWlucyB2YWxpZCk6CisgKiAg
ICAgICAgICAgTlZfQ1RSTF9HVklfUkVRVUVTVEVEX1NUUkVBTV9DT01QT05FTlRfU0FNUExJTkcK
KyAqLworCisjZGVmaW5lIE5WX0NUUkxfR1ZJX1JFUVVFU1RFRF9TVFJFQU1fQklUU19QRVJfQ09N
UE9ORU5UIDMxMCAvKiBSVy1JICovCisKKy8qCisgKiBOVl9DVFJMX0dWSV9ERVRFQ1RFRF9DSEFO
TkVMX0NPTVBPTkVOVF9TQU1QTElORyAtIFJldHVybnMgdGhlIGRldGVjdGVkCisgKiBzYW1wbGlu
ZyBmb3JtYXQgZm9yIHRoZSBpbnB1dCBqYWNrK2NoYW5uZWwuCisgKgorICogVGhlIGphY2sgbnVt
YmVyIHNob3VsZCBiZSBzcGVjaWZpZWQgaW4gdGhlIGxvd2VyIDE2IGJpdHMgb2YgdGhlCisgKiAi
ZGlzcGxheV9tYXNrIiBwYXJhbWV0ZXIsIHdoaWxlIHRoZSBjaGFubmVsIG51bWJlciBzaG91bGQg
YmUgc3BlY2lmaWVkIGluCisgKiB0aGUgdXBwZXIgMTYgYml0cy4KKyAqLworCisjZGVmaW5lIE5W
X0NUUkxfR1ZJX0RFVEVDVEVEX0NIQU5ORUxfQ09NUE9ORU5UX1NBTVBMSU5HIDMxMSAvKiBSLS1J
ICovCisjZGVmaW5lIE5WX0NUUkxfR1ZJX0NPTVBPTkVOVF9TQU1QTElOR19VTktOT1dOIDAKKyNk
ZWZpbmUgTlZfQ1RSTF9HVklfQ09NUE9ORU5UX1NBTVBMSU5HXzQ0NDQgMQorI2RlZmluZSBOVl9D
VFJMX0dWSV9DT01QT05FTlRfU0FNUExJTkdfNDIyNCAyCisjZGVmaW5lIE5WX0NUUkxfR1ZJX0NP
TVBPTkVOVF9TQU1QTElOR180NDQgMworI2RlZmluZSBOVl9DVFJMX0dWSV9DT01QT05FTlRfU0FN
UExJTkdfNDIyIDQKKyNkZWZpbmUgTlZfQ1RSTF9HVklfQ09NUE9ORU5UX1NBTVBMSU5HXzQyMCA1
CisKKy8qCisgKiBOVl9DVFJMX0dWSV9SRVFVRVNURURfQ09NUE9ORU5UX1NBTVBMSU5HIC0gU3Bl
Y2lmeSB0aGUgc2FtcGxpbmcgZm9ybWF0IGZvcgorICogdGhlIGNhcHR1cmVkIHN0cmVhbS4KKyAq
IFRoZSBwb3NzaWJsZSB2YWx1ZXMgYXJlIHRoZSBOVl9DVFJMX0dWSV9ERVRFQ1RFRF9DT01QT05F
TlRfU0FNUExJTkcKKyAqIGNvbnN0YW50cy4KKyAqIFRoZSBzdHJlYW0gbnVtYmVyIHNob3VsZCBi
ZSBzcGVjaWZpZWQgaW4gdGhlICJkaXNwbGF5X21hc2siIHBhcmFtZXRlci4KKyAqLworCisjZGVm
aW5lIE5WX0NUUkxfR1ZJX1JFUVVFU1RFRF9TVFJFQU1fQ09NUE9ORU5UX1NBTVBMSU5HIDMxMiAv
KiBSVy1JICovCisKKy8qCisgKiBOVl9DVFJMX0dWSV9DSFJPTUFfRVhQQU5EIC0gRW5hYmxlIG9y
IGRpc2FibGUgNDoyOjIgLT4gNDo0OjQgY2hyb21hCisgKiBleHBhbnNpb24gZm9yIHRoZSBjYXB0
dXJlZCBzdHJlYW0uICBUaGlzIHZhbHVlIGlzIGlnbm9yZWQgd2hlbiBhCisgKiBDT01QT05FTlRf
U0FNUExJTkcgZm9ybWF0IGlzIHNlbGVjdGVkIHRoYXQgZG9lcyBub3QgdXNlIGNocm9tYSBzdWJz
YW1wbGluZywKKyAqIG9yIGlmIGEgQklUU19QRVJfQ09NUE9ORU5UIHZhbHVlIGlzIHNlbGVjdGVk
IHRoYXQgaXMgbm90IHN1cHBvcnRlZC4KKyAqIFRoZSBzdHJlYW0gbnVtYmVyIHNob3VsZCBiZSBz
cGVjaWZpZWQgaW4gdGhlICJkaXNwbGF5X21hc2siIHBhcmFtZXRlci4KKyAqLworCisjZGVmaW5l
IE5WX0NUUkxfR1ZJX1JFUVVFU1RFRF9TVFJFQU1fQ0hST01BX0VYUEFORCAzMTMgLyogUlctSSAq
LworI2RlZmluZSBOVl9DVFJMX0dWSV9DSFJPTUFfRVhQQU5EX0ZBTFNFIDAKKyNkZWZpbmUgTlZf
Q1RSTF9HVklfQ0hST01BX0VYUEFORF9UUlVFIDEKKworLyoKKyAqIE5WX0NUUkxfR1ZJX0RFVEVD
VEVEX0NIQU5ORUxfQ09MT1JfU1BBQ0UgLSBSZXR1cm5zIHRoZSBkZXRlY3RlZCBjb2xvciBzcGFj
ZQorICogb2YgdGhlIGlucHV0IGphY2srY2hhbm5lbC4KKyAqCisgKiBUaGUgamFjayBudW1iZXIg
c2hvdWxkIGJlIHNwZWNpZmllZCBpbiB0aGUgbG93ZXIgMTYgYml0cyBvZiB0aGUKKyAqICJkaXNw
bGF5X21hc2siIHBhcmFtZXRlciwgd2hpbGUgdGhlIGNoYW5uZWwgbnVtYmVyIHNob3VsZCBiZSBz
cGVjaWZpZWQgaW4KKyAqIHRoZSB1cHBlciAxNiBiaXRzLgorICovCisKKyNkZWZpbmUgTlZfQ1RS
TF9HVklfREVURUNURURfQ0hBTk5FTF9DT0xPUl9TUEFDRSAzMTQgLyogUi0tSSAqLworI2RlZmlu
ZSBOVl9DVFJMX0dWSV9DT0xPUl9TUEFDRV9VTktOT1dOIDAKKyNkZWZpbmUgTlZfQ1RSTF9HVklf
Q09MT1JfU1BBQ0VfR0JSIDEKKyNkZWZpbmUgTlZfQ1RSTF9HVklfQ09MT1JfU1BBQ0VfR0JSQSAy
CisjZGVmaW5lIE5WX0NUUkxfR1ZJX0NPTE9SX1NQQUNFX0dCUkQgMworI2RlZmluZSBOVl9DVFJM
X0dWSV9DT0xPUl9TUEFDRV9ZQ0JDUiA0CisjZGVmaW5lIE5WX0NUUkxfR1ZJX0NPTE9SX1NQQUNF
X1lDQkNSQSA1CisjZGVmaW5lIE5WX0NUUkxfR1ZJX0NPTE9SX1NQQUNFX1lDQkNSRCA2CisKKy8q
CisgKiBOVl9DVFJMX0dWSV9ERVRFQ1RFRF9DSEFOTkVMX0xJTktfSUQgLSBSZXR1cm5zIHRoZSBk
ZXRlY3RlZCBsaW5rIGlkZW50aWZpZXIKKyAqIGZvciB0aGUgZ2l2ZW4gaW5wdXQgamFjaytjaGFu
bmVsLgorICoKKyAqIFRoZSBqYWNrIG51bWJlciBzaG91bGQgYmUgc3BlY2lmaWVkIGluIHRoZSBs
b3dlciAxNiBiaXRzIG9mIHRoZQorICogImRpc3BsYXlfbWFzayIgcGFyYW1ldGVyLCB3aGlsZSB0
aGUgY2hhbm5lbCBudW1iZXIgc2hvdWxkIGJlIHNwZWNpZmllZCBpbgorICogdGhlIHVwcGVyIDE2
IGJpdHMuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0dWSV9ERVRFQ1RFRF9DSEFOTkVMX0xJTktf
SUQgMzE1IC8qIFItLUkgKi8KKyNkZWZpbmUgTlZfQ1RSTF9HVklfTElOS19JRF9VTktOT1dOIDB4
RkZGRgorCisvKgorICogTlZfQ1RSTF9HVklfREVURUNURURfQ0hBTk5FTF9TTVBURTM1Ml9JREVO
VElGSUVSIC0gUmV0dXJucyB0aGUgNC1ieXRlCisgKiBTTVBURSAzNTIgaWRlbnRpZmllciBmcm9t
IHRoZSBnaXZlbiBpbnB1dCBqYWNrK2NoYW5uZWwuCisgKgorICogVGhlIGphY2sgbnVtYmVyIHNo
b3VsZCBiZSBzcGVjaWZpZWQgaW4gdGhlIGxvd2VyIDE2IGJpdHMgb2YgdGhlCisgKiAiZGlzcGxh
eV9tYXNrIiBwYXJhbWV0ZXIsIHdoaWxlIHRoZSBjaGFubmVsIG51bWJlciBzaG91bGQgYmUgc3Bl
Y2lmaWVkIGluCisgKiB0aGUgdXBwZXIgMTYgYml0cy4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxf
R1ZJX0RFVEVDVEVEX0NIQU5ORUxfU01QVEUzNTJfSURFTlRJRklFUiAzMTYgLyogUi0tSSAqLwor
CisvKgorICogTlZfQ1RSTF9HVklfR0xPQkFMX0lERU5USUZJRVIgLSBSZXR1cm5zIGEgZ2xvYmFs
IGlkZW50aWZpZXIgZm9yIHRoZQorICogR1ZJIGRldmljZS4gIFRoaXMgaWRlbnRpZmllciBjYW4g
YmUgdXNlZCB0byByZWxhdGUgR1ZJIGRldmljZXMgbmFtZWQKKyAqIGluIE5WLUNPTlRST0wgd2l0
aCB0aG9zZSBlbnVtZXJhdGVkIGluIE9wZW5HTC4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfR1ZJ
X0dMT0JBTF9JREVOVElGSUVSIDMxNyAvKiBSLS1JICovCisKKy8qCisgKiBOVl9DVFJMX0ZSQU1F
TE9DS19TWU5DX0RFTEFZX1JFU09MVVRJT04gLSBSZXR1cm5zIHRoZSBudW1iZXIgb2YgbmFub3Nl
Y29uZHMKKyAqIHRoYXQgb25lIHVuaXQgb2YgTlZfQ1RSTF9GUkFNRUxPQ0tfU1lOQ19ERUxBWSBj
b3JyZXNwb25kcyB0by4KKyAqLworI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19TWU5DX0RFTEFZ
X1JFU09MVVRJT04gMzE4IC8qIFItLSAqLworCisvKgorICogTlZfQ1RSTF9HUFVfQ09PTEVSX01B
TlVBTF9DT05UUk9MIC0gUXVlcnkgdGhlIGN1cnJlbnQgb3Igc2V0IGEgbmV3CisgKiBjb29sZXIg
Y29udHJvbCBzdGF0ZTsgdGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlIGNvbnRyb2xzIHRoZQor
ICogYXZhaWxhYmlsaXR5IG9mIGFkZGl0aW9uYWwgY29vbGVyIGNvbnRyb2wgYXR0cmlidXRlcyAo
c2VlIGJlbG93KS4KKyAqCisgKiBOb3RlOiB0aGlzIGF0dHJpYnV0ZSBpcyB1bmF2YWlsYWJsZSB1
bmxlc3MgY29vbGVyIGNvbnRyb2wgc3VwcG9ydAorICogaGFzIGJlZW4gZW5hYmxlZCBpbiB0aGUg
WCBzZXJ2ZXIgKGJ5IHRoZSB1c2VyKS4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfR1BVX0NPT0xF
Ul9NQU5VQUxfQ09OVFJPTCAzMTkgLyogUlctRyAqLworI2RlZmluZSBOVl9DVFJMX0dQVV9DT09M
RVJfTUFOVUFMX0NPTlRST0xfRkFMU0UgMAorI2RlZmluZSBOVl9DVFJMX0dQVV9DT09MRVJfTUFO
VUFMX0NPTlRST0xfVFJVRSAxCisKKy8qCisgKiBOVl9DVFJMX1RIRVJNQUxfQ09PTEVSX0xFVkVM
IC0gUmV0dXJucyBjb29sZXIncyBjdXJyZW50IG9wZXJhdGluZworICogbGV2ZWwuCisgKi8KKwor
I2RlZmluZSBOVl9DVFJMX1RIRVJNQUxfQ09PTEVSX0xFVkVMIDMyMCAvKiBSVy1DICovCisKKy8q
IE5WX0NUUkxfVEhFUk1BTF9DT09MRVJfTEVWRUxfU0VUX0RFRkFVTFQgLSBTZXRzIGRlZmF1bHQg
dmFsdWVzIG9mCisgKiBjb29sZXIuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX1RIRVJNQUxfQ09P
TEVSX0xFVkVMX1NFVF9ERUZBVUxUIDMyMSAvKiAtVy1DICovCisKKy8qCisgKiBOVl9DVFJMX1RI
RVJNQUxfQ09PTEVSX0NPTlRST0xfVFlQRSAtCisgKiBSZXR1cm5zIGEgY29vbGVyJ3MgY29udHJv
bCBzaWduYWwgY2hhcmFjdGVyaXN0aWNzLgorICogVGhlIHBvc3NpYmxlIHR5cGVzIGFyZSByZXN0
cmljdGVkLCBWYXJpYWJsZSBhbmQgVG9nZ2xlLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9USEVS
TUFMX0NPT0xFUl9DT05UUk9MX1RZUEUgMzIyIC8qIFItLUMgKi8KKyNkZWZpbmUgTlZfQ1RSTF9U
SEVSTUFMX0NPT0xFUl9DT05UUk9MX1RZUEVfTk9ORSAwCisjZGVmaW5lIE5WX0NUUkxfVEhFUk1B
TF9DT09MRVJfQ09OVFJPTF9UWVBFX1RPR0dMRSAxCisjZGVmaW5lIE5WX0NUUkxfVEhFUk1BTF9D
T09MRVJfQ09OVFJPTF9UWVBFX1ZBUklBQkxFIDIKKworLyoKKyAqIE5WX0NUUkxfVEhFUk1BTF9D
T09MRVJfVEFSR0VUIC0gUmV0dXJucyBvYmplY3RzIHRoYXQgY29vbGVyIGNvb2xzLgorICogVGFy
Z2V0cyBtYXkgYmUgR1BVLCBNZW1vcnksIFBvd2VyIFN1cHBseSBvciBBbGwgb2YgdGhlc2UuCisg
KiBHUFVfUkVMQVRFRCA9IEdQVSB8IE1FTU9SWSB8IFBPV0VSX1NVUFBMWQorICoKKyAqLworCisj
ZGVmaW5lIE5WX0NUUkxfVEhFUk1BTF9DT09MRVJfVEFSR0VUIDMyMyAvKiBSLS1DICovCisjZGVm
aW5lIE5WX0NUUkxfVEhFUk1BTF9DT09MRVJfVEFSR0VUX05PTkUgMAorI2RlZmluZSBOVl9DVFJM
X1RIRVJNQUxfQ09PTEVSX1RBUkdFVF9HUFUgMQorI2RlZmluZSBOVl9DVFJMX1RIRVJNQUxfQ09P
TEVSX1RBUkdFVF9NRU1PUlkgMgorI2RlZmluZSBOVl9DVFJMX1RIRVJNQUxfQ09PTEVSX1RBUkdF
VF9QT1dFUl9TVVBQTFkgNAorI2RlZmluZSBOVl9DVFJMX1RIRVJNQUxfQ09PTEVSX1RBUkdFVF9H
UFVfUkVMQVRFRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKE5WX0NUUkxf
VEhFUk1BTF9DT09MRVJfVEFSR0VUX0dQVSB8IE5WX0NUUkxfVEhFUk1BTF9DT09MRVJfVEFSR0VU
X01FTU9SWSB8IFwKKyAgICAgTlZfQ1RSTF9USEVSTUFMX0NPT0xFUl9UQVJHRVRfUE9XRVJfU1VQ
UExZKQorCisvKgorICogTlZfQ1RSTF9HUFVfRUNDX1NVUFBPUlRFRCAtIFJlcG9ydHMgd2hldGhl
ciBFQ0MgaXMgc3VwcG9ydGVkIGJ5IHRoZQorICogdGFyZ2V0ZWQgR1BVLgorICovCisjZGVmaW5l
IE5WX0NUUkxfR1BVX0VDQ19TVVBQT1JURUQgMzI0IC8qIFItLUcgKi8KKyNkZWZpbmUgTlZfQ1RS
TF9HUFVfRUNDX1NVUFBPUlRFRF9GQUxTRSAwCisjZGVmaW5lIE5WX0NUUkxfR1BVX0VDQ19TVVBQ
T1JURURfVFJVRSAxCisKKy8qCisgKiBOVl9DVFJMX0dQVV9FQ0NfU1RBVFVTIC0gUmV0dXJucyB0
aGUgY3VycmVudCBoYXJkd2FyZSBFQ0Mgc2V0dGluZworICogZm9yIHRoZSB0YXJnZXRlZCBHUFUu
CisgKi8KKyNkZWZpbmUgTlZfQ1RSTF9HUFVfRUNDX1NUQVRVUyAzMjUgLyogUi0tRyAqLworI2Rl
ZmluZSBOVl9DVFJMX0dQVV9FQ0NfU1RBVFVTX0RJU0FCTEVEIDAKKyNkZWZpbmUgTlZfQ1RSTF9H
UFVfRUNDX1NUQVRVU19FTkFCTEVEIDEKKworLyoKKyAqIE5WX0NUUkxfR1BVX0VDQ19DT05GSUdV
UkFUSU9OIC0gUmVwb3J0cyB3aGV0aGVyIEVDQyBjYW4gYmUgY29uZmlndXJlZAorICogZHluYW1p
Y2FsbHkgZm9yIHRoZSBHUFUgaW4gcXVlc3Rpb24uCisgKi8KKyNkZWZpbmUgTlZfQ1RSTF9HUFVf
RUNDX0NPTkZJR1VSQVRJT05fU1VQUE9SVEVEIDMyNiAvKiBSLS1HICovCisjZGVmaW5lIE5WX0NU
UkxfR1BVX0VDQ19DT05GSUdVUkFUSU9OX1NVUFBPUlRFRF9GQUxTRSAwCisjZGVmaW5lIE5WX0NU
UkxfR1BVX0VDQ19DT05GSUdVUkFUSU9OX1NVUFBPUlRFRF9UUlVFIDEKKworLyoKKyAqIE5WX0NU
UkxfR1BVX0VDQ19DT05GSUdVUkFUSU9OX1NFVFRJTkcgLSBSZXR1cm5zIHRoZSBjdXJyZW50IEVD
QworICogY29uZmlndXJhdGlvbiBzZXR0aW5nIG9yIHNwZWNpZmllcyBuZXcgc2V0dGluZ3MuICBO
ZXcgc2V0dGluZ3MgZG8gbm90CisgKiB0YWtlIGVmZmVjdCB1bnRpbCB0aGUgbmV4dCBQT1NULgor
ICovCisjZGVmaW5lIE5WX0NUUkxfR1BVX0VDQ19DT05GSUdVUkFUSU9OIDMyNyAvKiBSVy1HICov
CisjZGVmaW5lIE5WX0NUUkxfR1BVX0VDQ19DT05GSUdVUkFUSU9OX0RJU0FCTEVEIDAKKyNkZWZp
bmUgTlZfQ1RSTF9HUFVfRUNDX0NPTkZJR1VSQVRJT05fRU5BQkxFRCAxCisKKy8qCisgKiBOVl9D
VFJMX0dQVV9FQ0NfREVGQVVMVF9DT05GSUdVUkFUSU9OX1NFVFRJTkcgLSBSZXR1cm5zIHRoZSBk
ZWZhdWx0CisgKiBFQ0MgY29uZmlndXJhdGlvbiBzZXR0aW5nLgorICovCisjZGVmaW5lIE5WX0NU
UkxfR1BVX0VDQ19ERUZBVUxUX0NPTkZJR1VSQVRJT04gMzI4IC8qIFItLUcgKi8KKyNkZWZpbmUg
TlZfQ1RSTF9HUFVfRUNDX0RFRkFVTFRfQ09ORklHVVJBVElPTl9ESVNBQkxFRCAwCisjZGVmaW5l
IE5WX0NUUkxfR1BVX0VDQ19ERUZBVUxUX0NPTkZJR1VSQVRJT05fRU5BQkxFRCAxCisKKy8qCisg
KiBOVl9DVFJMX0dQVV9FQ0NfU0lOR0xFX0JJVF9FUlJPUlMgLSBSZXR1cm5zIHRoZSBudW1iZXIg
b2Ygc2luZ2xlLWJpdAorICogRUNDIGVycm9ycyBkZXRlY3RlZCBieSB0aGUgdGFyZ2V0ZWQgR1BV
IHNpbmNlIHRoZSBsYXN0IFBPU1QuCisgKiBOb3RlOiB0aGlzIGF0dHJpYnV0ZSBpcyBhIDY0LWJp
dCBpbnRlZ2VyIGF0dHJpYnV0ZS4KKyAqLworI2RlZmluZSBOVl9DVFJMX0dQVV9FQ0NfU0lOR0xF
X0JJVF9FUlJPUlMgMzI5IC8qIFItLUdRICovCisKKy8qCisgKiBOVl9DVFJMX0dQVV9FQ0NfRE9V
QkxFX0JJVF9FUlJPUlMgLSBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZG91YmxlLWJpdAorICogRUND
IGVycm9ycyBkZXRlY3RlZCBieSB0aGUgdGFyZ2V0ZWQgR1BVIHNpbmNlIHRoZSBsYXN0IFBPU1Qu
CisgKiBOb3RlOiB0aGlzIGF0dHJpYnV0ZSBpcyBhIDY0LWJpdCBpbnRlZ2VyIGF0dHJpYnV0ZS4K
KyAqLworI2RlZmluZSBOVl9DVFJMX0dQVV9FQ0NfRE9VQkxFX0JJVF9FUlJPUlMgMzMwIC8qIFIt
LUdRICovCisKKy8qCisgKiBOVl9DVFJMX0dQVV9FQ0NfQUdHUkVHQVRFX1NJTkdMRV9CSVRfRVJS
T1JTIC0gUmV0dXJucyB0aGUgbnVtYmVyIG9mCisgKiBzaW5nbGUtYml0IEVDQyBlcnJvcnMgZGV0
ZWN0ZWQgYnkgdGhlIHRhcmdldGVkIEdQVSBzaW5jZSB0aGUKKyAqIGxhc3QgY291bnRlciByZXNl
dC4KKyAqIE5vdGU6IHRoaXMgYXR0cmlidXRlIGlzIGEgNjQtYml0IGludGVnZXIgYXR0cmlidXRl
LgorICovCisjZGVmaW5lIE5WX0NUUkxfR1BVX0VDQ19BR0dSRUdBVEVfU0lOR0xFX0JJVF9FUlJP
UlMgMzMxIC8qIFItLUdRICovCisKKy8qCisgKiBOVl9DVFJMX0dQVV9FQ0NfQUdHUkVHQVRFX0RP
VUJMRV9CSVRfRVJST1JTIC0gUmV0dXJucyB0aGUgbnVtYmVyIG9mCisgKiBkb3VibGUtYml0IEVD
QyBlcnJvcnMgZGV0ZWN0ZWQgYnkgdGhlIHRhcmdldGVkIEdQVSBzaW5jZSB0aGUKKyAqIGxhc3Qg
Y291bnRlciByZXNldC4KKyAqIE5vdGU6IHRoaXMgYXR0cmlidXRlIGlzIGEgNjQtYml0IGludGVn
ZXIgYXR0cmlidXRlLgorICovCisjZGVmaW5lIE5WX0NUUkxfR1BVX0VDQ19BR0dSRUdBVEVfRE9V
QkxFX0JJVF9FUlJPUlMgMzMyIC8qIFItLUdRICovCisKKy8qCisgKiBOVl9DVFJMX0dQVV9FQ0Nf
UkVTRVRfRVJST1JfU1RBVFVTIC0gUmVzZXRzIHRoZSB2b2xhdGlsZS9hZ2dyZWdhdGUKKyAqIHNp
bmdsZS1iaXQgYW5kIGRvdWJsZS1iaXQgZXJyb3IgY291bnRlcnMuICBUaGlzIGF0dHJpYnV0ZSBp
cyBhCisgKiBiaXRtYXNrIGF0dHJpYnV0ZS4KKyAqLworI2RlZmluZSBOVl9DVFJMX0dQVV9FQ0Nf
UkVTRVRfRVJST1JfU1RBVFVTIDMzMyAvKiAtVy1HICovCisjZGVmaW5lIE5WX0NUUkxfR1BVX0VD
Q19SRVNFVF9FUlJPUl9TVEFUVVNfVk9MQVRJTEUgMHgwMDAwMDAwMQorI2RlZmluZSBOVl9DVFJM
X0dQVV9FQ0NfUkVTRVRfRVJST1JfU1RBVFVTX0FHR1JFR0FURSAweDAwMDAwMDAyCisKKy8qCisg
KiBOVl9DVFJMX0dQVV9QT1dFUl9NSVpFUl9NT0RFIC0gUHJvdmlkZXMgYSBoaW50IHRvIHRoZSBk
cml2ZXIKKyAqIGFzIHRvIGhvdyB0byBtYW5hZ2UgdGhlIHBlcmZvcm1hbmNlIG9mIHRoZSBHUFUu
CisgKgorICogQURBUFRJVkUgICAgICAgICAgICAgICAgICAgICAtIGFkanVzdCBHUFUgY2xvY2tz
IGJhc2VkIG9uIEdQVQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWxpemF0
aW9uCisgKiBQUkVGRVJfTUFYSU1VTV9QRVJGT1JNQU5DRSAgIC0gcmFpc2UgR1BVIGNsb2NrcyB0
byBmYXZvcgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGltdW0gcGVyZm9y
bWFuY2UsIHRvIHRoZSBleHRlbnQKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aGF0IHRoZXJtYWwgYW5kIG90aGVyIGNvbnN0cmFpbnRzCisgKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYWxsb3cKKyAqLworI2RlZmluZSBOVl9DVFJMX0dQVV9QT1dFUl9NSVpFUl9N
T0RFIDMzNCAvKiBSVy1HICovCisjZGVmaW5lIE5WX0NUUkxfR1BVX1BPV0VSX01JWkVSX01PREVf
QURBUFRJVkUgMAorI2RlZmluZSBOVl9DVFJMX0dQVV9QT1dFUl9NSVpFUl9NT0RFX1BSRUZFUl9N
QVhJTVVNX1BFUkZPUk1BTkNFIDEKKworLyoKKyAqIE5WX0NUUkxfR1ZJX1NZTkNfT1VUUFVUX0ZP
Uk1BVCAtIFJldHVybnMgdGhlIG91dHB1dCBzeW5jIHNpZ25hbAorICogZnJvbSB0aGUgR1ZJIGRl
dmljZS4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfR1ZJX1NZTkNfT1VUUFVUX0ZPUk1BVCAzMzUg
LyogUi0tSSAqLworCisvKgorICogTlZfQ1RSTF9HVklfTUFYX0NIQU5ORUxTX1BFUl9KQUNLICAt
IFJldHVybnMgdGhlIG1heGltdW0KKyAqIHN1cHBvcnRlZCBudW1iZXIgb2YgKGxvZ2ljYWwpIGNo
YW5uZWxzIHdpdGhpbiBhIHNpbmdsZSBwaHlzaWNhbCBqYWNrIG9mCisgKiBhIEdWSSBkZXZpY2Uu
ICBGb3IgbW9zdCBTREkgdmlkZW8gZm9ybWF0cywgdGhlcmUgaXMgb25seSBvbmUgY2hhbm5lbAor
ICogKGNoYW5uZWwgMCkuICBCdXQgZm9yIDNHIHZpZGVvIGZvcm1hdHMgKGFzIHNwZWNpZmllZCBp
biBTTVBURSA0MjUpLAorICogYXMgYW4gZXhhbXBsZSwgdGhlcmUgYXJlIHR3byBjaGFubmVscyAo
Y2hhbm5lbCAwIGFuZCBjaGFubmVsIDEpIHBlcgorICogcGh5c2ljYWwgamFjay4KKyAqLworCisj
ZGVmaW5lIE5WX0NUUkxfR1ZJX01BWF9DSEFOTkVMU19QRVJfSkFDSyAzMzYgLyogUi0tSSAqLwor
CisvKgorICogTlZfQ1RSTF9HVklfTUFYX1NUUkVBTVMgIC0gUmV0dXJucyB0aGUgbWF4aW11bSBu
dW1iZXIgb2Ygc3RyZWFtcworICogdGhhdCBjYW4gYmUgY29uZmlndXJlZCBvbiB0aGUgR1ZJIGRl
dmljZS4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfR1ZJX01BWF9TVFJFQU1TIDMzNyAvKiBSLS1J
ICovCisKKy8qCisgKiBOVl9DVFJMX0dWSV9OVU1fQ0FQVFVSRV9TVVJGQUNFUyAtIFRoZSBHVkkg
aW50ZXJmYWNlIGV4cG9zZWQgdGhyb3VnaAorICogTlYtQ09OVFJPTCBhbmQgdGhlIEdMWF9OVl92
aWRlb19pbnB1dCBleHRlbnNpb24gdXNlcyBpbnRlcm5hbCBjYXB0dXJlCisgKiBzdXJmYWNlcyB3
aGVuIGZyYW1lcyBhcmUgcmVhZCBmcm9tIHRoZSBHVkkgZGV2aWNlLiAgVGhlCisgKiBOVl9DVFJM
X0dWSV9OVU1fQ0FQVFVSRV9TVVJGQUNFUyBjYW4gYmUgdXNlZCB0byBxdWVyeSBhbmQgYXNzaWdu
IHRoZQorICogbnVtYmVyIG9mIGNhcHR1cmUgc3VyZmFjZXMuICBUaGlzIGF0dHJpYnV0ZSBpcyBh
cHBsaWVkIHdoZW4KKyAqIGdsWEJpbmRWaWRlb0NhcHR1cmVEZXZpY2VOVigpIGlzIGNhbGxlZCBi
eSB0aGUgYXBwbGljYXRpb24uCisgKgorICogQSBsb3dlciBudW1iZXIgb2YgY2FwdHVyZSBzdXJm
YWNlcyB3aWxsIG1lYW4gbGVzcyB2aWRlbyBtZW1vcnkgaXMgdXNlZCwKKyAqIGJ1dCBjYW4gcmVz
dWx0IGluIGZyYW1lcyBiZWluZyBkcm9wcGVkIGlmIHRoZSBhcHBsaWNhdGlvbiBjYW5ub3Qga2Vl
cCB1cAorICogd2l0aCB0aGUgY2FwdHVyZSBkZXZpY2UuICBBIGhpZ2hlciBudW1iZXIgd2lsbCBw
cmV2ZW50IGZyYW1lcyBmcm9tIGJlaW5nCisgKiBkcm9wcGVkLCBtYWtpbmcgY2FwdHVyZSBtb3Jl
IHJlbGlhYmxlIGJ1dCB3aWxsIGNvbnN1bWUgbW92ZSB2aWRlbyBtZW1vcnkuCisgKi8KKyNkZWZp
bmUgTlZfQ1RSTF9HVklfTlVNX0NBUFRVUkVfU1VSRkFDRVMgMzM4IC8qIFJXLUkgKi8KKworLyoK
KyAqIE5WX0NUUkxfT1ZFUlNDQU5fQ09NUEVOU0FUSU9OIC0gbm90IHN1cHBvcnRlZAorICovCisj
ZGVmaW5lIE5WX0NUUkxfT1ZFUlNDQU5fQ09NUEVOU0FUSU9OIDMzOSAvKiBSV0RHICovCisKKy8q
CisgKiBOVl9DVFJMX0dQVV9QQ0lFX0dFTkVSQVRJT04gLSBSZXBvcnRzIHRoZSBjdXJyZW50IFBD
SWUgZ2VuZXJhdGlvbi4KKyAqLworI2RlZmluZSBOVl9DVFJMX0dQVV9QQ0lFX0dFTkVSQVRJT04g
MzQxIC8qIFItLUdJICovCisjZGVmaW5lIE5WX0NUUkxfR1BVX1BDSUVfR0VORVJBVElPTjEgMHgw
MDAwMDAwMQorI2RlZmluZSBOVl9DVFJMX0dQVV9QQ0lFX0dFTkVSQVRJT04yIDB4MDAwMDAwMDIK
KyNkZWZpbmUgTlZfQ1RSTF9HUFVfUENJRV9HRU5FUkFUSU9OMyAweDAwMDAwMDAzCisKKy8qCisg
KiBOVl9DVFJMX0dWSV9CT1VORF9HUFUgLSBSZXR1cm5zIHRoZSBOVl9DVFJMX1RBUkdFVF9UWVBF
X0dQVSB0YXJnZXRfaWQgb2YKKyAqIHRoZSBHUFUgY3VycmVudGx5IGJvdW5kIHRvIHRoZSBHVkkg
ZGV2aWNlLiAgUmV0dXJucyAtMSBpZiBubyBHUFUgaXMKKyAqIGN1cnJlbnRseSBib3VuZCB0byB0
aGUgR1ZJIGRldmljZS4KKyAqLworI2RlZmluZSBOVl9DVFJMX0dWSV9CT1VORF9HUFUgMzQyIC8q
IFItLUkgKi8KKworLyoKKyAqIE5WX0NUUkxfR1ZJT19SRVFVRVNURURfVklERU9fRk9STUFUMyAt
IHRoaXMgYXR0cmlidXRlIGlzIG9ubHkKKyAqIGludGVuZGVkIHRvIGJlIHVzZWQgdG8gcXVlcnkg
dGhlIFZhbGlkVmFsdWVzIGZvcgorICogTlZfQ1RSTF9HVklPX1JFUVVFU1RFRF9WSURFT19GT1JN
QVQgZm9yIFZJREVPX0ZPUk1BVCB2YWx1ZXMgYmV0d2VlbgorICogNjQgYW5kIDk1LiAgU2VlIE5W
X0NUUkxfR1ZJT19SRVFVRVNURURfVklERU9fRk9STUFUIGZvciBkZXRhaWxzLgorICovCisKKyNk
ZWZpbmUgTlZfQ1RSTF9HVklPX1JFUVVFU1RFRF9WSURFT19GT1JNQVQzIDM0MyAvKiAtLS1HSSAq
LworCisvKgorICogTlZfQ1RSTF9BQ0NFTEVSQVRFX1RSQVBFWk9JRFMgLSBUb2dnbGVzIFJFTkRF
UiBUcmFwZXpvaWQgYWNjZWxlcmF0aW9uCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0FDQ0VMRVJB
VEVfVFJBUEVaT0lEUyAzNDQgLyogUlctICovCisjZGVmaW5lIE5WX0NUUkxfQUNDRUxFUkFURV9U
UkFQRVpPSURTX0RJU0FCTEUgMAorI2RlZmluZSBOVl9DVFJMX0FDQ0VMRVJBVEVfVFJBUEVaT0lE
U19FTkFCTEUgMQorCisvKgorICogTlZfQ1RSTF9HUFVfQ09SRVMgLSBSZXR1cm5zIG51bWJlciBv
ZiBHUFUgY29yZXMgc3VwcG9ydGVkIGJ5IHRoZSBncmFwaGljcworICogcGlwZWxpbmUuCisgKi8K
KworI2RlZmluZSBOVl9DVFJMX0dQVV9DT1JFUyAzNDUgLyogUi0tRyAqLworCisvKgorICogTlZf
Q1RSTF9HUFVfTUVNT1JZX0JVU19XSURUSCAtIFJldHVybnMgbWVtb3J5IGJ1cyBiYW5kd2lkdGgg
b24gdGhlIGFzc29jaWF0ZWQKKyAqIHN1YmRldmljZS4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxf
R1BVX01FTU9SWV9CVVNfV0lEVEggMzQ2IC8qIFItLUcgKi8KKworLyoKKyAqIE5WX0NUUkxfR1ZJ
X1RFU1RfTU9ERSAtIFRoaXMgYXR0cmlidXRlIGNvbnRyb2xzIHRoZSBHVkkgdGVzdCBtb2RlLiAg
V2hlbgorICogZW5hYmxlZCwgdGhlIEdWSSBkZXZpY2Ugd2lsbCBnZW5lcmF0ZSBmYWtlIGRhdGEg
YXMgcXVpY2tseSBhcyBwb3NzaWJsZS4gIEFsbAorICogR1ZJIHNldHRpbmdzIGFyZSBzdGlsbCB2
YWxpZCB3aGVuIHRoaXMgaXMgZW5hYmxlZCAoZS5nLiwgdGhlIHJlcXVlc3RlZCB2aWRlbworICog
Zm9ybWF0IGlzIGhvbm9yZWQgYW5kIHNldHMgdGhlIHZpZGVvIHNpemUpLgorICogVGhpcyBtYXkg
YmUgdXNlZCB0byB0ZXN0IHRoZSBwaXBlbGluZS4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfR1ZJ
X1RFU1RfTU9ERSAzNDcgLyogUi0tSSAqLworI2RlZmluZSBOVl9DVFJMX0dWSV9URVNUX01PREVf
RElTQUJMRSAwCisjZGVmaW5lIE5WX0NUUkxfR1ZJX1RFU1RfTU9ERV9FTkFCTEUgMQorCisvKgor
ICogTlZfQ1RSTF9DT0xPUl9TUEFDRSAtIFRoaXMgb3B0aW9uIHNldHMgY29sb3Igc3BhY2Ugb2Yg
dGhlIHZpZGVvCisgKiBzaWduYWwuCisgKi8KKyNkZWZpbmUgTlZfQ1RSTF9DT0xPUl9TUEFDRSAz
NDggLyogUldERyAqLworI2RlZmluZSBOVl9DVFJMX0NPTE9SX1NQQUNFX1JHQiAwCisjZGVmaW5l
IE5WX0NUUkxfQ09MT1JfU1BBQ0VfWUNiQ3I0MjIgMQorI2RlZmluZSBOVl9DVFJMX0NPTE9SX1NQ
QUNFX1lDYkNyNDQ0IDIKKworLyoKKyAqIE5WX0NUUkxfQ09MT1JfUkFOR0UgLSBUaGlzIG9wdGlv
biBzZXRzIGNvbG9yIHJhbmdlIG9mIHRoZSB2aWRlbworICogc2lnbmFsLgorICovCisjZGVmaW5l
IE5WX0NUUkxfQ09MT1JfUkFOR0UgMzQ5IC8qIFJXREcgKi8KKyNkZWZpbmUgTlZfQ1RSTF9DT0xP
Ul9SQU5HRV9GVUxMIDAKKyNkZWZpbmUgTlZfQ1RSTF9DT0xPUl9SQU5HRV9MSU1JVEVEIDEKKwor
LyoKKyAqIE5WX0NUUkxfR1BVX1NDQUxJTkdfREVGQVVMVF9UQVJHRVQgLSBub3Qgc3VwcG9ydGVk
CisgKgorICogTlZfQ1RSTF9HUFVfU0NBTElOR19ERUZBVUxUX01FVEhPRCAtIG5vdCBzdXBwb3J0
ZWQKKyAqLworI2RlZmluZSBOVl9DVFJMX0dQVV9TQ0FMSU5HX0RFRkFVTFRfVEFSR0VUIDM1MCAv
KiBSLURHICovCisjZGVmaW5lIE5WX0NUUkxfR1BVX1NDQUxJTkdfREVGQVVMVF9NRVRIT0QgMzUx
IC8qIFItREcgKi8KKworLyoKKyAqIE5WX0NUUkxfRElUSEVSSU5HX01PREUgLSBDb250cm9scyB0
aGUgZGl0aGVyaW5nIG1vZGUsIHdoZW4KKyAqIE5WX0NUUkxfQ1VSUkVOVF9ESVRIRVJJTkcgaXMg
RW5hYmxlZC4KKyAqCisgKiBBVVRPOiBhbGxvdyB0aGUgZHJpdmVyIHRvIGNob29zZSB0aGUgZGl0
aGVyaW5nIG1vZGUgYXV0b21hdGljYWxseS4KKyAqCisgKiBEWU5BTUlDXzJYMjogdXNlIGEgMngy
IG1hdHJpeCB0byBkaXRoZXIgZnJvbSB0aGUgR1BVJ3MgcGl4ZWwKKyAqIHBpcGVsaW5lIHRvIHRo
ZSBiaXQgZGVwdGggb2YgdGhlIGZsYXQgcGFuZWwuICBUaGUgbWF0cml4IHZhbHVlcworICogYXJl
IGNoYW5nZWQgZnJvbSBmcmFtZSB0byBmcmFtZS4KKyAqCisgKiBTVEFUSUNfMlgyOiB1c2UgYSAy
eDIgbWF0cml4IHRvIGRpdGhlciBmcm9tIHRoZSBHUFUncyBwaXhlbAorICogcGlwZWxpbmUgdG8g
dGhlIGJpdCBkZXB0aCBvZiB0aGUgZmxhdCBwYW5lbC4gIFRoZSBtYXRyaXggdmFsdWVzCisgKiBk
byBub3QgY2hhbmdlIGZyb20gZnJhbWUgdG8gZnJhbWUuCisgKgorICogVEVNUE9SQUw6IHVzZSBh
IHBzZXVkb3JhbmRvbSB2YWx1ZSBmcm9tIGEgdW5pZm9ybSBkaXN0cmlidXRpb24gY2FsY3VsYXRl
ZCBhdAorICogZXZlcnkgcGl4ZWwgdG8gYWNoaWV2ZSBzdG9jaGFzdGljIGRpdGhlcmluZy4gIFRo
aXMgbWV0aG9kIHByb2R1Y2VzIGEgYmV0dGVyCisgKiB2aXN1YWwgcmVzdWx0IHRoYW4gMngyIG1h
dHJpeCBhcHByb2FjaGVzLgorICovCisjZGVmaW5lIE5WX0NUUkxfRElUSEVSSU5HX01PREUgMzUy
IC8qIFJXREcgKi8KKyNkZWZpbmUgTlZfQ1RSTF9ESVRIRVJJTkdfTU9ERV9BVVRPIDAKKyNkZWZp
bmUgTlZfQ1RSTF9ESVRIRVJJTkdfTU9ERV9EWU5BTUlDXzJYMiAxCisjZGVmaW5lIE5WX0NUUkxf
RElUSEVSSU5HX01PREVfU1RBVElDXzJYMiAyCisjZGVmaW5lIE5WX0NUUkxfRElUSEVSSU5HX01P
REVfVEVNUE9SQUwgMworCisvKgorICogTlZfQ1RSTF9DVVJSRU5UX0RJVEhFUklORyAtIFJldHVy
bnMgdGhlIGN1cnJlbnQgZGl0aGVyaW5nIHN0YXRlLgorICovCisjZGVmaW5lIE5WX0NUUkxfQ1VS
UkVOVF9ESVRIRVJJTkcgMzUzIC8qIFItREcgKi8KKyNkZWZpbmUgTlZfQ1RSTF9DVVJSRU5UX0RJ
VEhFUklOR19ESVNBQkxFRCAwCisjZGVmaW5lIE5WX0NUUkxfQ1VSUkVOVF9ESVRIRVJJTkdfRU5B
QkxFRCAxCisKKy8qCisgKiBOVl9DVFJMX0NVUlJFTlRfRElUSEVSSU5HX01PREUgLSBSZXR1cm5z
IHRoZSBjdXJyZW50IGRpdGhlcmluZworICogbW9kZS4KKyAqLworI2RlZmluZSBOVl9DVFJMX0NV
UlJFTlRfRElUSEVSSU5HX01PREUgMzU0IC8qIFItREcgKi8KKyNkZWZpbmUgTlZfQ1RSTF9DVVJS
RU5UX0RJVEhFUklOR19NT0RFX05PTkUgMAorI2RlZmluZSBOVl9DVFJMX0NVUlJFTlRfRElUSEVS
SU5HX01PREVfRFlOQU1JQ18yWDIgMQorI2RlZmluZSBOVl9DVFJMX0NVUlJFTlRfRElUSEVSSU5H
X01PREVfU1RBVElDXzJYMiAyCisjZGVmaW5lIE5WX0NUUkxfQ1VSUkVOVF9ESVRIRVJJTkdfTU9E
RV9URU1QT1JBTCAzCisKKy8qCisgKiBOVl9DVFJMX1RIRVJNQUxfU0VOU09SX1JFQURJTkcgLSBS
ZXR1cm5zIHRoZSB0aGVybWFsIHNlbnNvcidzIGN1cnJlbnQKKyAqIHJlYWRpbmcuCisgKi8KKyNk
ZWZpbmUgTlZfQ1RSTF9USEVSTUFMX1NFTlNPUl9SRUFESU5HIDM1NSAvKiBSLS1TICovCisKKy8q
CisgKiBOVl9DVFJMX1RIRVJNQUxfU0VOU09SX1BST1ZJREVSIC0gUmV0dXJucyB0aGUgaGFyZHdh
cmUgZGV2aWNlIHRoYXQKKyAqIHByb3ZpZGVzIHRoZSB0aGVybWFsIHNlbnNvci4KKyAqLworI2Rl
ZmluZSBOVl9DVFJMX1RIRVJNQUxfU0VOU09SX1BST1ZJREVSIDM1NiAvKiBSLS1TICovCisjZGVm
aW5lIE5WX0NUUkxfVEhFUk1BTF9TRU5TT1JfUFJPVklERVJfTk9ORSAwCisjZGVmaW5lIE5WX0NU
UkxfVEhFUk1BTF9TRU5TT1JfUFJPVklERVJfR1BVX0lOVEVSTkFMIDEKKyNkZWZpbmUgTlZfQ1RS
TF9USEVSTUFMX1NFTlNPUl9QUk9WSURFUl9BRE0xMDMyIDIKKyNkZWZpbmUgTlZfQ1RSTF9USEVS
TUFMX1NFTlNPUl9QUk9WSURFUl9BRFQ3NDYxIDMKKyNkZWZpbmUgTlZfQ1RSTF9USEVSTUFMX1NF
TlNPUl9QUk9WSURFUl9NQVg2NjQ5IDQKKyNkZWZpbmUgTlZfQ1RSTF9USEVSTUFMX1NFTlNPUl9Q
Uk9WSURFUl9NQVgxNjE3IDUKKyNkZWZpbmUgTlZfQ1RSTF9USEVSTUFMX1NFTlNPUl9QUk9WSURF
Ul9MTTk5IDYKKyNkZWZpbmUgTlZfQ1RSTF9USEVSTUFMX1NFTlNPUl9QUk9WSURFUl9MTTg5IDcK
KyNkZWZpbmUgTlZfQ1RSTF9USEVSTUFMX1NFTlNPUl9QUk9WSURFUl9MTTY0IDgKKyNkZWZpbmUg
TlZfQ1RSTF9USEVSTUFMX1NFTlNPUl9QUk9WSURFUl9HNzgxIDkKKyNkZWZpbmUgTlZfQ1RSTF9U
SEVSTUFMX1NFTlNPUl9QUk9WSURFUl9BRFQ3NDczIDEwCisjZGVmaW5lIE5WX0NUUkxfVEhFUk1B
TF9TRU5TT1JfUFJPVklERVJfU0JNQVg2NjQ5IDExCisjZGVmaW5lIE5WX0NUUkxfVEhFUk1BTF9T
RU5TT1JfUFJPVklERVJfVkJJT1NFVlQgMTIKKyNkZWZpbmUgTlZfQ1RSTF9USEVSTUFMX1NFTlNP
Ul9QUk9WSURFUl9PUyAxMworI2RlZmluZSBOVl9DVFJMX1RIRVJNQUxfU0VOU09SX1BST1ZJREVS
X1VOS05PV04gMHhGRkZGRkZGRgorCisvKgorICogTlZfQ1RSTF9USEVSTUFMX1NFTlNPUl9UQVJH
RVQgLSBSZXR1cm5zIHdoYXQgaGFyZHdhcmUgY29tcG9uZW50CisgKiB0aGUgdGhlcm1hbCBzZW5z
b3IgaXMgbWVhc3VyaW5nLgorICovCisjZGVmaW5lIE5WX0NUUkxfVEhFUk1BTF9TRU5TT1JfVEFS
R0VUIDM1NyAvKiBSLS1TICovCisjZGVmaW5lIE5WX0NUUkxfVEhFUk1BTF9TRU5TT1JfVEFSR0VU
X05PTkUgMAorI2RlZmluZSBOVl9DVFJMX1RIRVJNQUxfU0VOU09SX1RBUkdFVF9HUFUgMQorI2Rl
ZmluZSBOVl9DVFJMX1RIRVJNQUxfU0VOU09SX1RBUkdFVF9NRU1PUlkgMgorI2RlZmluZSBOVl9D
VFJMX1RIRVJNQUxfU0VOU09SX1RBUkdFVF9QT1dFUl9TVVBQTFkgNAorI2RlZmluZSBOVl9DVFJM
X1RIRVJNQUxfU0VOU09SX1RBUkdFVF9CT0FSRCA4CisjZGVmaW5lIE5WX0NUUkxfVEhFUk1BTF9T
RU5TT1JfVEFSR0VUX1VOS05PV04gMHhGRkZGRkZGRgorCisvKgorICogTlZfQ1RSTF9TSE9XX01V
TFRJR1BVX1ZJU1VBTF9JTkRJQ0FUT1IgLSB3aGVuIFRSVUUsIE9wZW5HTCB3aWxsCisgKiBkcmF3
IGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IE1VTFRJR1BVIG1vZGUuCisgKi8KKyNkZWZp
bmUgTlZfQ1RSTF9TSE9XX01VTFRJR1BVX1ZJU1VBTF9JTkRJQ0FUT1IgMzU4IC8qIFJXLVggKi8K
KyNkZWZpbmUgTlZfQ1RSTF9TSE9XX01VTFRJR1BVX1ZJU1VBTF9JTkRJQ0FUT1JfRkFMU0UgMAor
I2RlZmluZSBOVl9DVFJMX1NIT1dfTVVMVElHUFVfVklTVUFMX0lORElDQVRPUl9UUlVFIDEKKwor
LyoKKyAqIE5WX0NUUkxfR1BVX0NVUlJFTlRfUFJPQ0VTU09SX0NMT0NLX0ZSRVFTIC0gUmV0dXJu
cyBHUFUncyBwcm9jZXNzb3IKKyAqIGNsb2NrIGZyZXFzLgorICovCisjZGVmaW5lIE5WX0NUUkxf
R1BVX0NVUlJFTlRfUFJPQ0VTU09SX0NMT0NLX0ZSRVFTIDM1OSAvKiBSVy1HICovCisKKy8qCisg
KiBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUX0ZMQUdTIC0gcXVlcnkgdGhlIGZsYWdzICh2YXJp
b3VzIGluZm9ybWF0aW9uCisgKiBmb3IgdGhlIHNwZWNpZmllZCBOVl9DVFJMX0dWSU9fVklERU9f
Rk9STUFUXyouICBTbyB0aGF0IHRoaXMgY2FuIGJlCisgKiBxdWVyaWVkIHdpdGggZXhpc3Rpbmcg
aW50ZXJmYWNlcywgdGhlIHZpZGVvIGZvcm1hdCBzaG91bGQgYmUgc3BlY2lmaWVkCisgKiBpbiB0
aGUgZGlzcGxheV9tYXNrIGZpZWxkOyBlZzoKKyAqCisgKiBYTlZDVFJMUXVlcnlUYXJnZXRBdHRy
aWJ1dGUoZHB5LAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5WX0NUUkxfVEFSR0VU
X1RZUEVfR1ZJLAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd2aSwKKyAqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzcyMFBfNjBf
MDBfU01QVEUyOTYsCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlZfQ1RSTF9HVklP
X1ZJREVPX0ZPUk1BVF9GTEFHUywKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmxh
Z3MpOworICoKKyAqIE5vdGU6IFRoZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUX0ZMQUdTXzNH
XzEwODBQX05PXzEyQlBDIGZsYWcgaXMgc2V0CisgKiAgICAgICBmb3IgdGhvc2UgMTA4MFAgM0cg
bW9kZXMgKGxldmVsIEEgYW5kIEIpIHRoYXQgZG8gbm90IHN1cHBvcnQKKyAqICAgICAgIDEyIGJp
dHMgcGVyIGNvbXBvbmVudCAod2hlbiBjb25maWd1cmluZyBhIEdWSSBzdHJlYW0uKQorICovCisK
KyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF9GTEFHUyAzNjAgLyogUi0tSSAqLwor
I2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUX0ZMQUdTX05PTkUgMHgwMDAwMDAwMAor
I2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUX0ZMQUdTX0lOVEVSTEFDRUQgMHgwMDAw
MDAwMQorI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUX0ZMQUdTX1BST0dSRVNTSVZF
IDB4MDAwMDAwMDIKKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF9GTEFHU19QU0Yg
MHgwMDAwMDAwNAorI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUX0ZMQUdTXzNHX0xF
VkVMX0EgMHgwMDAwMDAwOAorI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUX0ZMQUdT
XzNHX0xFVkVMX0IgMHgwMDAwMDAxMAorI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFU
X0ZMQUdTXzNHIFwKKyAgICAoKE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfRkxBR1NfM0dfTEVW
RUxfQSkgfCAoTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF9GTEFHU18zR19MRVZFTF9CKSkKKyNk
ZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF9GTEFHU18zR18xMDgwUF9OT18xMkJQQyAw
eDAwMDAwMDIwCisKKy8qCisgKiBOVl9DVFJMX0dQVV9QQ0lFX01BWF9MSU5LX1NQRUVEIC0gcmV0
dXJucyBtYXhpbXVtIFBDSWUgbGluayBzcGVlZCwKKyAqIGluIGdpZ2F0cmFuc2ZlcnMgcGVyIHNl
Y29uZCAoR1QvcykuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0dQVV9QQ0lFX01BWF9MSU5LX1NQ
RUVEIDM2MSAvKiBSLS1HSSAqLworCisvKgorICogTlZfQ1RSTF8zRF9WSVNJT05fUFJPX1JFU0VU
X1RSQU5TQ0VJVkVSX1RPX0ZBQ1RPUllfU0VUVElOR1MgLSBSZXNldHMgdGhlCisgKiAzRCBWaXNp
b24gUHJvIHRyYW5zY2VpdmVyIHRvIGl0cyBmYWN0b3J5IHNldHRpbmdzLgorICovCisjZGVmaW5l
IE5WX0NUUkxfM0RfVklTSU9OX1BST19SRVNFVF9UUkFOU0NFSVZFUl9UT19GQUNUT1JZX1NFVFRJ
TkdTIDM2MyAvKiAtVy1UICovCisKKy8qCisgKiBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fVFJBTlND
RUlWRVJfQ0hBTk5FTCAtIENvbnRyb2xzIHRoZSBjaGFubmVsIHRoYXQgaXMKKyAqIGN1cnJlbnRs
eSB1c2VkIGJ5IHRoZSAzRCBWaXNpb24gUHJvIHRyYW5zY2VpdmVyLgorICovCisjZGVmaW5lIE5W
X0NUUkxfM0RfVklTSU9OX1BST19UUkFOU0NFSVZFUl9DSEFOTkVMIDM2NCAvKiBSVy1UICovCisK
Ky8qCisgKiBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fVFJBTlNDRUlWRVJfTU9ERSAtIENvbnRyb2xz
IHRoZSBtb2RlIGluIHdoaWNoIHRoZQorICogM0QgVmlzaW9uIFBybyB0cmFuc2NlaXZlciBvcGVy
YXRlcy4KKyAqIE5WX0NUUkxfM0RfVklTSU9OX1BST19UTV9MT1dfUkFOR0UgaXMgYmlkaXJlY3Rp
b25hbAorICogTlZfQ1RSTF8zRF9WSVNJT05fUFJPX1RNX01FRElVTV9SQU5HRSBpcyBiaWRpcmVj
dGlvbmFsCisgKiBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fVE1fSElHSF9SQU5HRSBtYXkgYmUgYmlk
aXJlY3Rpb25hbCBqdXN0IHVwIHRvIGEKKyAqICAgICBnaXZlbiByYW5nZSwgYW5kIHVuaWRpcmVj
dGlvbmFsIGJleW9uZCBpdAorICogTlZfQ1RSTF8zRF9WSVNJT05fUFJPX1RNX0NPVU5UIGlzIHRo
ZSB0b3RhbCBudW1iZXIgb2YKKyAqICAgICAzRCBWaXNpb24gUHJvIHRyYW5zY2VpdmVyIG1vZGVz
CisgKi8KKyNkZWZpbmUgTlZfQ1RSTF8zRF9WSVNJT05fUFJPX1RSQU5TQ0VJVkVSX01PREUgMzY1
IC8qIFJXLVQgKi8KKyNkZWZpbmUgTlZfQ1RSTF8zRF9WSVNJT05fUFJPX1RSQU5TQ0VJVkVSX01P
REVfSU5WQUxJRCAwCisjZGVmaW5lIE5WX0NUUkxfM0RfVklTSU9OX1BST19UUkFOU0NFSVZFUl9N
T0RFX0xPV19SQU5HRSAxCisjZGVmaW5lIE5WX0NUUkxfM0RfVklTSU9OX1BST19UUkFOU0NFSVZF
Ul9NT0RFX01FRElVTV9SQU5HRSAyCisjZGVmaW5lIE5WX0NUUkxfM0RfVklTSU9OX1BST19UUkFO
U0NFSVZFUl9NT0RFX0hJR0hfUkFOR0UgMworI2RlZmluZSBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9f
VFJBTlNDRUlWRVJfTU9ERV9DT1VOVCA0CisKKy8qCisgKiBOVl9DVFJMX1NZTkNIUk9OT1VTX1BB
TEVUVEVfVVBEQVRFUyAtIGNvbnRyb2xzIHdoZXRoZXIgdXBkYXRlcyB0byB0aGUgY29sb3IKKyAq
IGxvb2t1cCB0YWJsZSAoTFVUKSBhcmUgc3luY2hyb25vdXMgd2l0aCByZXNwZWN0IHRvIFggcmVu
ZGVyaW5nLiAgRm9yIGV4YW1wbGUsCisgKiBpZiBhbiBYIGNsaWVudCBzZW5kcyBYU3RvcmVDb2xv
cnMgZm9sbG93ZWQgYnkgWEZpbGxSZWN0YW5nbGUsIHRoZSBkcml2ZXIgd2lsbAorICogZ3VhcmFu
dGVlIHRoYXQgdGhlIEZpbGxSZWN0YW5nbGUgcmVxdWVzdCBpcyBub3QgcHJvY2Vzc2VkIHVudGls
IGFmdGVyIHRoZQorICogdXBkYXRlZCBMVVQgY29sb3JzIGFyZSBhY3R1YWxseSB2aXNpYmxlIG9u
IHRoZSBzY3JlZW4gaWYKKyAqIE5WX0NUUkxfU1lOQ0hST05PVVNfUEFMRVRURV9VUERBVEVTIGlz
IGVuYWJsZWQuICBPdGhlcndpc2UsIHRoZSByZW5kZXJpbmcgbWF5CisgKiBvY2N1ciBmaXJzdC4K
KyAqCisgKiBUaGlzIG1ha2VzIGEgZGlmZmVyZW5jZSBmb3IgYXBwbGljYXRpb25zIHRoYXQgdXNl
IHRoZSBMVVQgdG8gYW5pbWF0ZSwgc3VjaCBhcworICogWFBpbG90LiAgSWYgeW91IGV4cGVyaWVu
Y2UgZmxpY2tlcmluZyBpbiBhcHBsaWNhdGlvbnMgdGhhdCB1c2UgTFVUCisgKiBhbmltYXRpb25z
LCB0cnkgZW5hYmxpbmcgdGhpcyBhdHRyaWJ1dGUuCisgKgorICogV2hlbiBzeW5jaHJvbm91cyB1
cGRhdGVzIGFyZSBlbmFibGVkLCBYU3RvcmVDb2xvcnMgcmVxdWVzdHMgd2lsbCBiZSBwcm9jZXNz
ZWQKKyAqIGF0IHlvdXIgc2NyZWVuJ3MgcmVmcmVzaCByYXRlLgorICovCisKKyNkZWZpbmUgTlZf
Q1RSTF9TWU5DSFJPTk9VU19QQUxFVFRFX1VQREFURVMgMzY3IC8qIFJXREcgKi8KKyNkZWZpbmUg
TlZfQ1RSTF9TWU5DSFJPTk9VU19QQUxFVFRFX1VQREFURVNfRElTQUJMRSAwCisjZGVmaW5lIE5W
X0NUUkxfU1lOQ0hST05PVVNfUEFMRVRURV9VUERBVEVTX0VOQUJMRSAxCisKKy8qCisgKiBOVl9D
VFJMX0RJVEhFUklOR19ERVBUSCAtIENvbnRyb2xzIHRoZSBkaXRoZXJpbmcgZGVwdGggd2hlbgor
ICogTlZfQ1RSTF9DVVJSRU5UX0RJVEhFUklORyBpcyBFTkFCTEVELiAgU29tZSBkaXNwbGF5cyBj
b25uZWN0ZWQKKyAqIHRvIHRoZSBHUFUgdmlhIHRoZSBEVkkgb3IgTFZEUyBpbnRlcmZhY2VzIGNh
bm5vdCBkaXNwbGF5IHRoZQorICogZnVsbCBjb2xvciByYW5nZSBvZiB0ZW4gYml0cyBwZXIgY2hh
bm5lbCwgc28gdGhlIEdQVSB3aWxsCisgKiBkaXRoZXIgdG8gZWl0aGVyIDYgb3IgOCBiaXRzIHBl
ciBjaGFubmVsLgorICovCisjZGVmaW5lIE5WX0NUUkxfRElUSEVSSU5HX0RFUFRIIDM2OCAvKiBS
V0RHICovCisjZGVmaW5lIE5WX0NUUkxfRElUSEVSSU5HX0RFUFRIX0FVVE8gMAorI2RlZmluZSBO
Vl9DVFJMX0RJVEhFUklOR19ERVBUSF82X0JJVFMgMQorI2RlZmluZSBOVl9DVFJMX0RJVEhFUklO
R19ERVBUSF84X0JJVFMgMgorCisvKgorICogTlZfQ1RSTF9DVVJSRU5UX0RJVEhFUklOR19ERVBU
SCAtIFJldHVybnMgdGhlIGN1cnJlbnQgZGl0aGVyaW5nCisgKiBkZXB0aCB2YWx1ZS4KKyAqLwor
I2RlZmluZSBOVl9DVFJMX0NVUlJFTlRfRElUSEVSSU5HX0RFUFRIIDM2OSAvKiBSLURHICovCisj
ZGVmaW5lIE5WX0NUUkxfQ1VSUkVOVF9ESVRIRVJJTkdfREVQVEhfTk9ORSAwCisjZGVmaW5lIE5W
X0NUUkxfQ1VSUkVOVF9ESVRIRVJJTkdfREVQVEhfNl9CSVRTIDEKKyNkZWZpbmUgTlZfQ1RSTF9D
VVJSRU5UX0RJVEhFUklOR19ERVBUSF84X0JJVFMgMgorCisvKgorICogTlZfQ1RSTF8zRF9WSVNJ
T05fUFJPX1RSQU5TQ0VJVkVSX0NIQU5ORUxfRlJFUVVFTkNZIC0gUmV0dXJucyB0aGUKKyAqIGZy
ZXF1ZW5jeSBvZiB0aGUgY2hhbm5lbChpbiBrSHopIG9mIHRoZSAzRCBWaXNpb24gUHJvIHRyYW5z
Y2VpdmVyLgorICogVXNlIHRoZSBkaXNwbGF5X21hc2sgcGFyYW1ldGVyIHRvIHNwZWNpZnkgdGhl
IGNoYW5uZWwgbnVtYmVyLgorICovCisjZGVmaW5lIE5WX0NUUkxfM0RfVklTSU9OX1BST19UUkFO
U0NFSVZFUl9DSEFOTkVMX0ZSRVFVRU5DWSAzNzAgLyogUi0tVCAqLworCisvKgorICogTlZfQ1RS
TF8zRF9WSVNJT05fUFJPX1RSQU5TQ0VJVkVSX0NIQU5ORUxfUVVBTElUWSAtIFJldHVybnMgdGhl
CisgKiBxdWFsaXR5IG9mIHRoZSBjaGFubmVsKGluIHBlcmNlbnRhZ2UpIG9mIHRoZSAzRCBWaXNp
b24gUHJvIHRyYW5zY2VpdmVyLgorICogVXNlIHRoZSBkaXNwbGF5X21hc2sgcGFyYW1ldGVyIHRv
IHNwZWNpZnkgdGhlIGNoYW5uZWwgbnVtYmVyLgorICovCisjZGVmaW5lIE5WX0NUUkxfM0RfVklT
SU9OX1BST19UUkFOU0NFSVZFUl9DSEFOTkVMX1FVQUxJVFkgMzcxIC8qIFItLVQgKi8KKworLyoK
KyAqIE5WX0NUUkxfM0RfVklTSU9OX1BST19UUkFOU0NFSVZFUl9DSEFOTkVMX0NPVU5UIC0gUmV0
dXJucyB0aGUgbnVtYmVyIG9mCisgKiBjaGFubmVscyBvbiB0aGUgM0QgVmlzaW9uIFBybyB0cmFu
c2NlaXZlci4KKyAqLworI2RlZmluZSBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fVFJBTlNDRUlWRVJf
Q0hBTk5FTF9DT1VOVCAzNzIgLyogUi0tVCAqLworCisvKgorICogTlZfQ1RSTF8zRF9WSVNJT05f
UFJPX1BBSVJfR0xBU1NFUyAtIFB1dHMgdGhlIDNEIFZpc2lvbiBQcm8KKyAqIHRyYW5zY2VpdmVy
IGludG8gcGFpcmluZyBtb2RlIHRvIGdhdGhlciBhZGRpdGlvbmFsIGdsYXNzZXMuCisgKiBOVl9D
VFJMXzNEX1ZJU0lPTl9QUk9fUEFJUl9HTEFTU0VTX1NUT1AgLSBzdG9wcyBhbnkgcGFpcmluZwor
ICogTlZfQ1RSTF8zRF9WSVNJT05fUFJPX1BBSVJfR0xBU1NFU19CRUFDT04gLSBzdGFydHMgY29u
dGludW91cworICogICAgIHBhaXJpbmcgdmlhIGJlYWNvbiBtb2RlCisgKiBBbnkgb3RoZXIgdmFs
dWUsIE4gLSBQdXRzIHRoZSAzRCBWaXNpb24gUHJvIHRyYW5zY2VpdmVyIGludG8KKyAqICAgICBh
dXRoZW50aWNhdGVkIHBhaXJpbmcgbW9kZSBmb3IgTiBzZWNvbmRzLgorICovCisjZGVmaW5lIE5W
X0NUUkxfM0RfVklTSU9OX1BST19QQUlSX0dMQVNTRVMgMzczIC8qIC1XLVQgKi8KKyNkZWZpbmUg
TlZfQ1RSTF8zRF9WSVNJT05fUFJPX1BBSVJfR0xBU1NFU19TVE9QIDAKKyNkZWZpbmUgTlZfQ1RS
TF8zRF9WSVNJT05fUFJPX1BBSVJfR0xBU1NFU19CRUFDT04gMHhGRkZGRkZGRgorCisvKgorICog
TlZfQ1RSTF8zRF9WSVNJT05fUFJPX1VOUEFJUl9HTEFTU0VTIC0gVGVsbHMgYSBzcGVjaWZpYyBw
YWlyCisgKiBvZiBnbGFzc2VzIHRvIHVucGFpci4gVGhlIGdsYXNzZXMgd2lsbCAiZm9yZ2V0IiB0
aGUgYWRkcmVzcworICogb2YgdGhlIDNEIFZpc2lvbiBQcm8gdHJhbnNjZWl2ZXIgdG8gd2hpY2gg
dGhleSBoYXZlIGJlZW4gcGFpcmVkLgorICogVG8gdW5wYWlyIGFsbCB0aGUgY3VycmVudGx5IHBh
aXJlZCBnbGFzc2VzLCBzcGVjaWZ5CisgKiB0aGUgZ2xhc3NlcyBpZCBhcyAwLgorICovCisjZGVm
aW5lIE5WX0NUUkxfM0RfVklTSU9OX1BST19VTlBBSVJfR0xBU1NFUyAzNzQgLyogLVctVCAqLwor
CisvKgorICogTlZfQ1RSTF8zRF9WSVNJT05fUFJPX0RJU0NPVkVSX0dMQVNTRVMgLSBUZWxscyB0
aGUgM0QgVmlzaW9uIFBybworICogdHJhbnNjZWl2ZXIgYWJvdXQgdGhlIGdsYXNzZXMgdGhhdCBo
YXZlIGJlZW4gcGFpcmVkIHVzaW5nCisgKiBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fUEFJUl9HTEFT
U0VTX0JFQUNPTi4gVW5sZXNzIHRoaXMgaXMgZG9uZSwKKyAqIHRoZSAzRCBWaXNpb24gUHJvIHRy
YW5zY2VpdmVyIHdpbGwgbm90IGtub3cgYWJvdXQgZ2xhc3NlcyBwYWlyZWQgaW4KKyAqIGJlYWNv
biBtb2RlLgorICovCisjZGVmaW5lIE5WX0NUUkxfM0RfVklTSU9OX1BST19ESVNDT1ZFUl9HTEFT
U0VTIDM3NSAvKiAtVy1UICovCisKKy8qCisgKiBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fSURFTlRJ
RllfR0xBU1NFUyAtIENhdXNlcyBnbGFzc2VzIExFRHMgdG8KKyAqIGZsYXNoIGZvciBhIHNob3J0
IHBlcmlvZCBvZiB0aW1lLgorICovCisjZGVmaW5lIE5WX0NUUkxfM0RfVklTSU9OX1BST19JREVO
VElGWV9HTEFTU0VTIDM3NiAvKiAtVy1UICovCisKKy8qCisgKiBOVl9DVFJMXzNEX1ZJU0lPTl9Q
Uk9fR0xBU1NFU19TWU5DX0NZQ0xFIC0gQ29udHJvbHMgdGhlCisgKiBzeW5jIGN5Y2xlIGR1cmF0
aW9uKGluIG1pbGxpc2Vjb25kcykgb2YgdGhlIGdsYXNzZXMuCisgKiBVc2UgdGhlIGRpc3BsYXlf
bWFzayBwYXJhbWV0ZXIgdG8gc3BlY2lmeSB0aGUgZ2xhc3NlcyBpZC4KKyAqLworI2RlZmluZSBO
Vl9DVFJMXzNEX1ZJU0lPTl9QUk9fR0xBU1NFU19TWU5DX0NZQ0xFIDM3OCAvKiBSVy1UICovCisK
Ky8qCisgKiBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fR0xBU1NFU19NSVNTRURfU1lOQ19DWUNMRVMg
LSBSZXR1cm5zIHRoZQorICogbnVtYmVyIG9mIHN0YXRlIHN5bmMgY3ljbGVzIHJlY2VudGx5IG1p
c3NlZCBieSB0aGUgZ2xhc3Nlcy4KKyAqIFVzZSB0aGUgZGlzcGxheV9tYXNrIHBhcmFtZXRlciB0
byBzcGVjaWZ5IHRoZSBnbGFzc2VzIGlkLgorICovCisjZGVmaW5lIE5WX0NUUkxfM0RfVklTSU9O
X1BST19HTEFTU0VTX01JU1NFRF9TWU5DX0NZQ0xFUyAzNzkgLyogUi0tVCAqLworCisvKgorICog
TlZfQ1RSTF8zRF9WSVNJT05fUFJPX0dMQVNTRVNfQkFUVEVSWV9MRVZFTCAtIFJldHVybnMgdGhl
CisgKiBiYXR0ZXJ5IGxldmVsKGluIHBlcmNlbnRhZ2UpIG9mIHRoZSBnbGFzc2VzLgorICogVXNl
IHRoZSBkaXNwbGF5X21hc2sgcGFyYW1ldGVyIHRvIHNwZWNpZnkgdGhlIGdsYXNzZXMgaWQuCisg
Ki8KKyNkZWZpbmUgTlZfQ1RSTF8zRF9WSVNJT05fUFJPX0dMQVNTRVNfQkFUVEVSWV9MRVZFTCAz
ODAgLyogUi0tVCAqLworCisvKgorICogTlZfQ1RSTF9HVk9fQU5DX1BBUklUWV9DT01QVVRBVElP
TiAtIENvbnRyb2xzIHRoZSBTREkgZGV2aWNlJ3MgY29tcHV0YXRpb24KKyAqIG9mIHRoZSBwYXJp
dHkgYml0IChiaXQgOCkgZm9yIEFOQyBkYXRhIHdvcmRzLgorICovCisKKyNkZWZpbmUgTlZfQ1RS
TF9HVk9fQU5DX1BBUklUWV9DT01QVVRBVElPTiAzODEgLyogUlctLS0gKi8KKyNkZWZpbmUgTlZf
Q1RSTF9HVk9fQU5DX1BBUklUWV9DT01QVVRBVElPTl9BVVRPIDAKKyNkZWZpbmUgTlZfQ1RSTF9H
Vk9fQU5DX1BBUklUWV9DT01QVVRBVElPTl9PTiAxCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0FOQ19Q
QVJJVFlfQ09NUFVUQVRJT05fT0ZGIDIKKworLyoKKyAqIE5WX0NUUkxfM0RfVklTSU9OX1BST19H
TEFTU0VTX1BBSVJfRVZFTlQgLSBUaGlzIGF0dHJpYnV0ZSBpcyBzZW50CisgKiBhcyBhbiBldmVu
dCB3aGVuIGdsYXNzZXMgZ2V0IHBhaXJlZCBpbiByZXNwb25zZSB0byBwYWlyIGNvbW1hbmQKKyAq
IGZyb20gYW55IG9mIHRoZSBjbGllbnRzLgorICovCisjZGVmaW5lIE5WX0NUUkxfM0RfVklTSU9O
X1BST19HTEFTU0VTX1BBSVJfRVZFTlQgMzgyIC8qIC0tLVQgKi8KKworLyoKKyAqIE5WX0NUUkxf
M0RfVklTSU9OX1BST19HTEFTU0VTX1VOUEFJUl9FVkVOVCAtIFRoaXMgYXR0cmlidXRlIGlzIHNl
bnQKKyAqIGFzIGFuIGV2ZW50IHdoZW4gZ2xhc3NlcyBnZXQgdW5wYWlyZWQgaW4gcmVzcG9uc2Ug
dG8gdW5wYWlyIGNvbW1hbmQKKyAqIGZyb20gYW55IG9mIHRoZSBjbGllbnRzLgorICovCisjZGVm
aW5lIE5WX0NUUkxfM0RfVklTSU9OX1BST19HTEFTU0VTX1VOUEFJUl9FVkVOVCAzODMgLyogLS0t
VCAqLworCisvKgorICogTlZfQ1RSTF9HUFVfUENJRV9DVVJSRU5UX0xJTktfV0lEVEggLSByZXR1
cm5zIHRoZSBjdXJyZW50CisgKiBQQ0llIGxpbmsgd2lkdGgsIGluIG51bWJlciBvZiBsYW5lcy4K
KyAqLworI2RlZmluZSBOVl9DVFJMX0dQVV9QQ0lFX0NVUlJFTlRfTElOS19XSURUSCAzODQgLyog
Ui0tR0kgKi8KKworLyoKKyAqIE5WX0NUUkxfR1BVX1BDSUVfQ1VSUkVOVF9MSU5LX1NQRUVEIC0g
cmV0dXJucyB0aGUgY3VycmVudAorICogUENJZSBsaW5rIHNwZWVkLCBpbiBtZWdhdHJhbnNmZXJz
IHBlciBzZWNvbmQgKEdUL3MpLgorICovCisjZGVmaW5lIE5WX0NUUkxfR1BVX1BDSUVfQ1VSUkVO
VF9MSU5LX1NQRUVEIDM4NSAvKiBSLS1HSSAqLworCisvKgorICogTlZfQ1RSTF9HVk9fQVVESU9f
QkxBTktJTkcgLSBzcGVjaWZpZXMgd2hldGhlciB0aGUgR1ZPIGRldmljZSBzaG91bGQgZGVsZXRl
CisgKiBhdWRpbyBhbmNpbGxhcnkgZGF0YSBwYWNrZXRzIHdoZW4gZnJhbWVzIGFyZSByZXBlYXRl
ZC4KKyAqCisgKiBXaGVuIGEgbmV3IGZyYW1lIGlzIG5vdCByZWFkeSBpbiB0aW1lLCB0aGUgY3Vy
cmVudCBmcmFtZSwgaW5jbHVkaW5nIGFsbAorICogYW5jaWxsYXJ5IGRhdGEgcGFja2V0cywgaXMg
cmVwZWF0ZWQuICBXaGVuIHRoaXMgZGF0YSBpbmNsdWRlcyBhdWRpbyBwYWNrZXRzLAorICogdGhp
cyBjYW4gcmVzdWx0IGluIHN0dXR0ZXJzIG9yIGNsaWNrcy4gIFdoZW4gdGhpcyBvcHRpb24gaXMg
ZW5hYmxlZCwgdGhlIEdWTworICogZGV2aWNlIHdpbGwgZGV0ZWN0IHdoZW4gZnJhbWVzIGFyZSBy
ZXBlYXRlZCwgaWRlbnRpZnkgYXVkaW8gYW5jaWxsYXJ5IGRhdGEKKyAqIHBhY2tldHMsIGFuZCBt
YXJrIHRoZW0gZm9yIGRlbGV0aW9uLgorICoKKyAqIFRoaXMgb3B0aW9uIGlzIGFwcGxpZWQgd2hl
biB0aGUgR1ZPIGRldmljZSBpcyBib3VuZC4KKyAqLworI2RlZmluZSBOVl9DVFJMX0dWT19BVURJ
T19CTEFOS0lORyAzODYgLyogUlctICovCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0FVRElPX0JMQU5L
SU5HX0RJU0FCTEUgMAorI2RlZmluZSBOVl9DVFJMX0dWT19BVURJT19CTEFOS0lOR19FTkFCTEUg
MQorCisvKgorICogTlZfQ1RSTF9DVVJSRU5UX01FVEFNT0RFX0lEIC0gc3dpdGNoIG1vZGVzIHRv
IHRoZSBNZXRhTW9kZSB3aXRoCisgKiB0aGUgc3BlY2lmaWVkIElELgorICovCisjZGVmaW5lIE5W
X0NUUkxfQ1VSUkVOVF9NRVRBTU9ERV9JRCAzODcgLyogUlctICovCisKKy8qCisgKiBOVl9DVFJM
X0RJU1BMQVlfRU5BQkxFRCAtIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIGRpc3BsYXkgZGV2
aWNlCisgKiBpcyBjdXJyZW50bHkgZW5hYmxlZC4KKyAqLworI2RlZmluZSBOVl9DVFJMX0RJU1BM
QVlfRU5BQkxFRCAzODggLyogUi1EICovCisjZGVmaW5lIE5WX0NUUkxfRElTUExBWV9FTkFCTEVE
X1RSVUUgMQorI2RlZmluZSBOVl9DVFJMX0RJU1BMQVlfRU5BQkxFRF9GQUxTRSAwCisKKyNkZWZp
bmUgTlZfQ1RSTF9MQVNUX0FUVFJJQlVURSBOVl9DVFJMX0RJU1BMQVlfRU5BQkxFRAorCisvKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKiovCisKKy8qCisgKiBTdHJpbmcgQXR0cmlidXRlczoKKyAqCisgKiBTdHJp
bmcgYXR0cmlidXRlcyBjYW4gYmUgcXVlcnlpZWQgdGhyb3VnaCB0aGUgWE5WQ1RSTFF1ZXJ5U3Ry
aW5nQXR0cmlidXRlKCkKKyAqIGFuZCBYTlZDVFJMUXVlcnlUYXJnZXRTdHJpbmdBdHRyaWJ1dGUo
KSBmdW5jdGlvbiBjYWxscy4KKyAqCisgKiBTdHJpbmcgYXR0cmlidXRlcyBjYW4gYmUgc2V0IHRo
cm91Z2ggdGhlIFhOVkNUUkxTZXRTdHJpbmdBdHRyaWJ1dGUoKQorICogZnVuY3Rpb24gY2FsbC4g
IChUaGVyZSBhcmUgY3VycmVudGx5IG5vIHN0cmluZyBhdHRyaWJ1dGVzIHRoYXQgY2FuIGJlCisg
KiBzZXQgb24gbm9uLVggU2NyZWVuIHRhcmdldHMuKQorICoKKyAqIFVubGVzcyBvdGhlcndpc2Ug
bm90ZWQsIGFsbCBzdHJpbmcgYXR0cmlidXRlcyBjYW4gYmUgcXVlcmllZC9zZXQgdXNpbmcgYW4K
KyAqIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4gdGFyZ2V0LiAgQXR0cmlidXRlcyB0aGF0
IGNhbm5vdCB0YWtlIGFuCisgKiBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOIHRhcmdldCBh
bHNvIGNhbm5vdCBiZSBxdWVyaWVkL3NldCB0aHJvdWdoCisgKiBYTlZDVFJMUXVlcnlTdHJpbmdB
dHRyaWJ1dGUoKS9YTlZDVFJMU2V0U3RyaW5nQXR0cmlidXRlKCkgKFNpbmNlCisgKiB0aGVzZSBh
c3N1bWUgYW4gWCBTY3JlZW4gdGFyZ2V0KS4KKyAqLworCisvKgorICogTlZfQ1RSTF9TVFJJTkdf
UFJPRFVDVF9OQU1FIC0gdGhlIEdQVSBwcm9kdWN0IG5hbWUgb24gd2hpY2ggdGhlCisgKiBzcGVj
aWZpZWQgWCBzY3JlZW4gaXMgcnVubmluZy4KKyAqCisgKiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUg
cXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldFN0cmluZ0F0dHJpYnV0ZSgpCisgKiB1
c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfR1BVIG9yIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9T
Q1JFRU4gdGFyZ2V0LgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfUFJPRFVDVF9OQU1F
IDAgLyogUi0tRyAqLworCisvKgorICogTlZfQ1RSTF9TVFJJTkdfVkJJT1NfVkVSU0lPTiAtIHRo
ZSB2aWRlbyBiaW9zIHZlcnNpb24gb24gdGhlIEdQVSBvbgorICogd2hpY2ggdGhlIHNwZWNpZmll
ZCBYIHNjcmVlbiBpcyBydW5uaW5nLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfVkJJ
T1NfVkVSU0lPTiAxIC8qIFItLUcgKi8KKworLyoKKyAqIE5WX0NUUkxfU1RSSU5HX05WSURJQV9E
UklWRVJfVkVSU0lPTiAtIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUKKyAqIE5WSURJQSBk
cml2ZXIgdmVyc2lvbiBudW1iZXIgZm9yIHRoZSBOVklESUEgWCBkcml2ZXIgaW4gdXNlLgorICov
CisKKyNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfTlZJRElBX0RSSVZFUl9WRVJTSU9OIDMgLyogUi0t
RyAqLworCisvKgorICogTlZfQ1RSTF9TVFJJTkdfRElTUExBWV9ERVZJQ0VfTkFNRSAtIG5hbWUg
b2YgdGhlIGRpc3BsYXkgZGV2aWNlCisgKiBzcGVjaWZpZWQgaW4gdGhlIGRpc3BsYXlfbWFzayBh
cmd1bWVudC4KKyAqCisgKiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB0aHJvdWdoIFhO
VkNUUkxRdWVyeVRhcmdldFN0cmluZ0F0dHJpYnV0ZSgpCisgKiB1c2luZyBhIE5WX0NUUkxfVEFS
R0VUX1RZUEVfR1BVIG9yIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4gdGFyZ2V0LgorICov
CisKKyNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfRElTUExBWV9ERVZJQ0VfTkFNRSA0IC8qIFItREcg
Ki8KKworLyoKKyAqIE5WX0NUUkxfU1RSSU5HX1RWX0VOQ09ERVJfTkFNRSAtIG5hbWUgb2YgdGhl
IFRWIGVuY29kZXIgdXNlZCBieSB0aGUKKyAqIHNwZWNpZmllZCBkaXNwbGF5IGRldmljZTsgb25s
eSB2YWxpZCBpZiB0aGUgZGlzcGxheSBkZXZpY2UgaXMgYSBUVi4KKyAqLworCisjZGVmaW5lIE5W
X0NUUkxfU1RSSU5HX1RWX0VOQ09ERVJfTkFNRSA1IC8qIFItREcgKi8KKworLyoKKyAqIE5WX0NU
UkxfU1RSSU5HX0dWSU9fRklSTVdBUkVfVkVSU0lPTiAtIGluZGljYXRlcyB0aGUgdmVyc2lvbiBv
ZiB0aGUKKyAqIEZpcm13YXJlIG9uIHRoZSBHVklPIGRldmljZS4KKyAqLworCisjZGVmaW5lIE5W
X0NUUkxfU1RSSU5HX0dWSU9fRklSTVdBUkVfVkVSU0lPTiA4IC8qIFItLUkgKi8KKworLyoKKyAq
IFRoZSBmb2xsb3dpbmcgaXMgZGVwcmVjYXRlZDsgdXNlIE5WX0NUUkxfU1RSSU5HX0dWSU9fRklS
TVdBUkVfVkVSU0lPTiwKKyAqIGluc3RlYWQKKyAqLworI2RlZmluZSBOVl9DVFJMX1NUUklOR19H
Vk9fRklSTVdBUkVfVkVSU0lPTiA4IC8qIFItLSAqLworCisvKgorICogTlZfQ1RSTF9TVFJJTkdf
Q1VSUkVOVF9NT0RFTElORSAtIFJldHVybiB0aGUgTW9kZUxpbmUgY3VycmVudGx5CisgKiBiZWlu
ZyB1c2VkIGJ5IHRoZSBzcGVjaWZpZWQgZGlzcGxheSBkZXZpY2UuCisgKgorICogVGhpcyBhdHRy
aWJ1dGUgbWF5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRTdHJpbmdBdHRy
aWJ1dGUoKQorICogdXNpbmcgYW4gTlZfQ1RSTF9UQVJHRVRfVFlQRV9HUFUgb3IgTlZfQ1RSTF9U
QVJHRVRfVFlQRV9YX1NDUkVFTiB0YXJnZXQuCisgKgorICogVGhlIE1vZGVMaW5lIHN0cmluZyBt
YXkgYmUgcHJlcGVuZGVkIHdpdGggYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZgorICogInRva2Vu
PXZhbHVlIiBwYWlycywgc2VwYXJhdGVkIGZyb20gdGhlIE1vZGVMaW5lIHN0cmluZyBieSAiOjoi
LgorICogVGhpcyAidG9rZW49dmFsdWUiIHN5bnRheCBpcyB0aGUgc2FtZSBhcyB0aGF0IHVzZWQg
aW4KKyAqIE5WX0NUUkxfQklOQVJZX0RBVEFfTU9ERUxJTkVTCisgKi8KKworI2RlZmluZSBOVl9D
VFJMX1NUUklOR19DVVJSRU5UX01PREVMSU5FIDkgLyogUi1ERyAqLworCisvKgorICogTlZfQ1RS
TF9TVFJJTkdfQUREX01PREVMSU5FIC0gQWRkcyBhIE1vZGVMaW5lIHRvIHRoZSBzcGVjaWZpZWQK
KyAqIGRpc3BsYXkgZGV2aWNlLiAgVGhlIE1vZGVMaW5lIGlzIG5vdCBhZGRlZCBpZiB2YWxpZGF0
aW9uIGZhaWxzLgorICoKKyAqIFRoZSBNb2RlTGluZSBzdHJpbmcgc2hvdWxkIGhhdmUgdGhlIHNh
bWUgc3ludGF4IGFzIGEgTW9kZUxpbmUgaW4KKyAqIHRoZSBYIGNvbmZpZ3VyYXRpb24gZmlsZTsg
ZS5nLiwKKyAqCisgKiAiMTYwMHgxMjAwIiAgMjI5LjUgIDE2MDAgMTY2NCAxODU2IDIxNjAgIDEy
MDAgMTIwMSAxMjA0IDEyNTAgICtIU3luYyArVlN5bmMKKyAqLworCisjZGVmaW5lIE5WX0NUUkxf
U1RSSU5HX0FERF9NT0RFTElORSAxMCAvKiAtV0RHICovCisKKy8qCisgKiBOVl9DVFJMX1NUUklO
R19ERUxFVEVfTU9ERUxJTkUgLSBEZWxldGVzIGFuIGV4aXN0aW5nIE1vZGVMaW5lCisgKiBmcm9t
IHRoZSBzcGVjaWZpZWQgZGlzcGxheSBkZXZpY2UuICBUaGUgY3VycmVudGx5IHNlbGVjdGVkCisg
KiBNb2RlTGluZSBjYW5ub3QgYmUgZGVsZXRlZC4gIChUaGlzIGFsc28gbWVhbnMgeW91IGNhbm5v
dCBkZWxldGUKKyAqIHRoZSBsYXN0IE1vZGVMaW5lLikKKyAqCisgKiBUaGUgTW9kZUxpbmUgc3Ry
aW5nIHNob3VsZCBoYXZlIHRoZSBzYW1lIHN5bnRheCBhcyBhIE1vZGVMaW5lIGluCisgKiB0aGUg
WCBjb25maWd1cmF0aW9uIGZpbGU7IGUuZy4sCisgKgorICogIjE2MDB4MTIwMCIgIDIyOS41ICAx
NjAwIDE2NjQgMTg1NiAyMTYwICAxMjAwIDEyMDEgMTIwNCAxMjUwICArSFN5bmMgK1ZTeW5jCisg
Ki8KKworI2RlZmluZSBOVl9DVFJMX1NUUklOR19ERUxFVEVfTU9ERUxJTkUgMTEgLyogLVdERyAq
LworCisvKgorICogTlZfQ1RSTF9TVFJJTkdfQ1VSUkVOVF9NRVRBTU9ERSAtIFJldHVybnMgdGhl
IG1ldGFtb2RlIGN1cnJlbnRseQorICogYmVpbmcgdXNlZCBieSB0aGUgc3BlY2lmaWVkIFggc2Ny
ZWVuLiAgVGhlIE1ldGFNb2RlIHN0cmluZyBoYXMgdGhlCisgKiBzYW1lIHN5bnRheCBhcyB0aGUg
TWV0YU1vZGUgWCBjb25maWd1cmF0aW9uIG9wdGlvbiwgYXMgZG9jdW1lbnRlZAorICogaW4gdGhl
IE5WSURJQSBkcml2ZXIgUkVBRE1FLgorICoKKyAqIFRoZSByZXR1cm5lZCBzdHJpbmcgbWF5IGJl
IHByZXBlbmRlZCB3aXRoIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YKKyAqICJ0b2tlbj12YWx1
ZSIgcGFpcnMsIHNlcGFyYXRlZCBmcm9tIHRoZSBNZXRhTW9kZSBzdHJpbmcgYnkgIjo6Ii4KKyAq
IFRoaXMgInRva2VuPXZhbHVlIiBzeW50YXggaXMgdGhlIHNhbWUgYXMgdGhhdCB1c2VkIGluCisg
KiBOVl9DVFJMX0JJTkFSWV9EQVRBX01FVEFNT0RFUy4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxf
U1RSSU5HX0NVUlJFTlRfTUVUQU1PREUgMTIgLyogUlctLSAqLworI2RlZmluZSBOVl9DVFJMX1NU
UklOR19DVVJSRU5UX01FVEFNT0RFX1ZFUlNJT05fMSBOVl9DVFJMX1NUUklOR19DVVJSRU5UX01F
VEFNT0RFCisKKy8qCisgKiBOVl9DVFJMX1NUUklOR19BRERfTUVUQU1PREUgLSBBZGRzIGEgTWV0
YU1vZGUgdG8gdGhlIHNwZWNpZmllZAorICogWCBTY3JlZW4uCisgKgorICogSXQgaXMgcmVjb21t
ZW5kZWQgdG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSwgYnV0IGluc3RlYWQgdXNlCisgKiBOVl9D
VFJMX1NUUklOR19PUEVSQVRJT05fQUREX01FVEFNT0RFLgorICovCisKKyNkZWZpbmUgTlZfQ1RS
TF9TVFJJTkdfQUREX01FVEFNT0RFIDEzIC8qIC1XLS0gKi8KKworLyoKKyAqIE5WX0NUUkxfU1RS
SU5HX0RFTEVURV9NRVRBTU9ERSAtIERlbGV0ZXMgYW4gZXhpc3RpbmcgTWV0YU1vZGUgZnJvbQor
ICogdGhlIHNwZWNpZmllZCBYIFNjcmVlbi4gIFRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgTWV0YU1v
ZGUgY2Fubm90IGJlCisgKiBkZWxldGVkLiAgKFRoaXMgYWxzbyBtZWFucyB5b3UgY2Fubm90IGRl
bGV0ZSB0aGUgbGFzdCBNZXRhTW9kZSkuCisgKiBUaGUgTWV0YU1vZGUgc3RyaW5nIHNob3VsZCBo
YXZlIHRoZSBzYW1lIHN5bnRheCBhcyB0aGUgTWV0YU1vZGUgWAorICogY29uZmlndXJhdGlvbiBv
cHRpb24sIGFzIGRvY3VtZW50ZWQgaW4gdGhlIE5WSURJQSBkcml2ZXIgUkVBRE1FLgorICovCisK
KyNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfREVMRVRFX01FVEFNT0RFIDE0IC8qIC1XRC0tICovCisK
Ky8qCisgKiBOVl9DVFJMX1NUUklOR19WQ1NDX1BST0RVQ1RfTkFNRSAtIFF1ZXJ5cyB0aGUgcHJv
ZHVjdCBuYW1lIG9mIHRoZQorICogVkNTQyBkZXZpY2UuCisgKgorICogVGhpcyBhdHRyaWJ1dGUg
bXVzdCBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0U3RyaW5nQXR0cmlidXRl
KCkKKyAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9WQ1NDIHRhcmdldC4KKyAqLworCisj
ZGVmaW5lIE5WX0NUUkxfU1RSSU5HX1ZDU0NfUFJPRFVDVF9OQU1FIDE1IC8qIFItLS1WICovCisK
Ky8qCisgKiBOVl9DVFJMX1NUUklOR19WQ1NDX1BST0RVQ1RfSUQgLSBRdWVyeXMgdGhlIHByb2R1
Y3QgSUQgb2YgdGhlIFZDU0MgZGV2aWNlLgorICoKKyAqIFRoaXMgYXR0cmlidXRlIG11c3QgYmUg
cXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldFN0cmluZ0F0dHJpYnV0ZSgpCisgKiB1
c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfVkNTQyB0YXJnZXQuCisgKi8KKworI2RlZmluZSBO
Vl9DVFJMX1NUUklOR19WQ1NDX1BST0RVQ1RfSUQgMTYgLyogUi0tLVYgKi8KKworLyoKKyAqIE5W
X0NUUkxfU1RSSU5HX1ZDU0NfU0VSSUFMX05VTUJFUiAtIFF1ZXJ5cyB0aGUgdW5pcXVlIHNlcmlh
bCBudW1iZXIKKyAqIG9mIHRoZSBWQ1MgZGV2aWNlLgorICoKKyAqIFRoaXMgYXR0cmlidXRlIG11
c3QgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldFN0cmluZ0F0dHJpYnV0ZSgp
CisgKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfVkNTQyB0YXJnZXQuCisgKi8KKworI2Rl
ZmluZSBOVl9DVFJMX1NUUklOR19WQ1NDX1NFUklBTF9OVU1CRVIgMTcgLyogUi0tLVYgKi8KKwor
LyoKKyAqIE5WX0NUUkxfU1RSSU5HX1ZDU0NfQlVJTERfREFURSAtIFF1ZXJ5cyB0aGUgZGF0ZSBv
ZiB0aGUgVkNTIGRldmljZS4KKyAqIHRoZSByZXR1cm5lZCBzdHJpbmcgaXMgaW4gdGhlIGZvbGxv
d2luZyBmb3JtYXQ6ICJXZWVrLlllYXIiCisgKgorICogVGhpcyBhdHRyaWJ1dGUgbXVzdCBiZSBx
dWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0U3RyaW5nQXR0cmlidXRlKCkKKyAqIHVz
aW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9WQ1NDIHRhcmdldC4KKyAqLworCisjZGVmaW5lIE5W
X0NUUkxfU1RSSU5HX1ZDU0NfQlVJTERfREFURSAxOCAvKiBSLS0tViAqLworCisvKgorICogTlZf
Q1RSTF9TVFJJTkdfVkNTQ19GSVJNV0FSRV9WRVJTSU9OIC0gUXVlcnlzIHRoZSBmaXJtd2FyZSB2
ZXJzaW9uCisgKiBvZiB0aGUgVkNTIGRldmljZS4KKyAqCisgKiBUaGlzIGF0dHJpYnV0ZSBtdXN0
IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRTdHJpbmdBdHRyaWJ1dGUoKQor
ICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX1ZDU0MgdGFyZ2V0LgorICovCisKKyNkZWZp
bmUgTlZfQ1RSTF9TVFJJTkdfVkNTQ19GSVJNV0FSRV9WRVJTSU9OIDE5IC8qIFItLS1WICovCisK
Ky8qCisgKiBOVl9DVFJMX1NUUklOR19WQ1NDX0ZJUk1XQVJFX1JFVklTSU9OIC0gUXVlcnlzIHRo
ZSBmaXJtd2FyZSByZXZpc2lvbgorICogb2YgdGhlIFZDUyBkZXZpY2UuCisgKgorICogVGhpcyBh
dHRyaWJ1dGUgbXVzdCBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0U3RyaW5n
QXR0cmlidXRlKCkKKyAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9WQ1MgdGFyZ2V0Lgor
ICovCisKKyNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfVkNTQ19GSVJNV0FSRV9SRVZJU0lPTiAyMCAv
KiBSLS0tViAqLworCisvKgorICogTlZfQ1RSTF9TVFJJTkdfVkNTQ19IQVJEV0FSRV9WRVJTSU9O
IC0gUXVlcnlzIHRoZSBoYXJkd2FyZSB2ZXJzaW9uCisgKiBvZiB0aGUgVkNTIGRldmljZS4KKyAq
CisgKiBUaGlzIGF0dHJpYnV0ZSBtdXN0IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlU
YXJnZXRTdHJpbmdBdHRyaWJ1dGUoKQorICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX1ZD
U0MgdGFyZ2V0LgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfVkNTQ19IQVJEV0FSRV9W
RVJTSU9OIDIxIC8qIFItLS1WICovCisKKy8qCisgKiBOVl9DVFJMX1NUUklOR19WQ1NDX0hBUkRX
QVJFX1JFVklTSU9OIC0gUXVlcnlzIHRoZSBoYXJkd2FyZSByZXZpc2lvbgorICogb2YgdGhlIFZD
UyBkZXZpY2UuCisgKgorICogVGhpcyBhdHRyaWJ1dGUgbXVzdCBiZSBxdWVyaWVkIHRocm91Z2gg
WE5WQ1RSTFF1ZXJ5VGFyZ2V0U3RyaW5nQXR0cmlidXRlKCkKKyAqIHVzaW5nIGEgTlZfQ1RSTF9U
QVJHRVRfVFlQRV9WQ1NDIHRhcmdldC4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfU1RSSU5HX1ZD
U0NfSEFSRFdBUkVfUkVWSVNJT04gMjIgLyogUi0tLVYgKi8KKworLyoKKyAqIE5WX0NUUkxfU1RS
SU5HX01PVkVfTUVUQU1PREUgLSBNb3ZlcyBhIE1ldGFNb2RlIHRvIHRoZSBzcGVjaWZpZWQKKyAq
IGluZGV4IGxvY2F0aW9uLiAgVGhlIE1ldGFNb2RlIG11c3QgYWxyZWFkeSBleGlzdCBpbiB0aGUg
WCBTY3JlZW4ncworICogbGlzdCBvZiBNZXRhTW9kZXMgKGFzIHJldHVybmVkIGJ5IHRoZSBOVl9D
VFJMX0JJTkFSWV9EQVRBX01FVEFNT0RFUworICogYXR0cmlidXRlKS4gIElmIHRoZSBpbmRleCBp
cyBsYXJnZXIgdGhhbiB0aGUgbnVtYmVyIG9mIE1ldGFNb2RlcyBpbgorICogdGhlIGxpc3QsIHRo
ZSBNZXRhTW9kZSBpcyBtb3ZlZCB0byB0aGUgZW5kIG9mIHRoZSBsaXN0LiAgVGhlCisgKiBNZXRh
TW9kZSBzdHJpbmcgc2hvdWxkIGhhdmUgdGhlIHNhbWUgc3ludGF4IGFzIHRoZSBNZXRhTW9kZSBY
CisgKiBjb25maWd1cmF0aW9uIG9wdGlvbiwgYXMgZG9jdW1lbnRlZCBpbiB0aGUgTlZJRElBIGRy
aXZlciBSRUFETUUuCisKKyAqIFRoZSBNZXRhTW9kZSBzdHJpbmcgbXVzdCBiZSBwcmVwZW5kZWQg
d2l0aCBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0CisgKiBvZiAidG9rZW49dmFsdWUiIHBhaXJzLCBz
ZXBhcmF0ZWQgZnJvbSB0aGUgTWV0YU1vZGUgc3RyaW5nIGJ5ICI6OiIuCisgKiBDdXJyZW50bHks
IHRoZSBvbmx5IHZhbGlkIHRva2VuIGlzICJpbmRleCIsIHdoaWNoIGluZGljYXRlcyB3aGVyZQor
ICogaW4gdGhlIE1ldGFNb2RlIGxpc3QgdGhlIE1ldGFNb2RlIHNob3VsZCBiZSBtb3ZlZCB0by4K
KyAqCisgKiBPdGhlciB0b2tlbnMgbWF5IGJlIGFkZGVkIGluIHRoZSBmdXR1cmUuCisgKgorICog
RS5nLiwKKyAqICAiaW5kZXg9NSA6OiBDUlQtMDogMTAyNHg3NjggQDEwMjR4NzY4ICswKzAiCisg
Ki8KKworI2RlZmluZSBOVl9DVFJMX1NUUklOR19NT1ZFX01FVEFNT0RFIDIzIC8qIC1XLS0gKi8K
KworLyoKKyAqIE5WX0NUUkxfU1RSSU5HX1ZBTElEX0hPUklaX1NZTkNfUkFOR0VTIC0gcmV0dXJu
cyB0aGUgdmFsaWQKKyAqIGhvcml6b250YWwgc3luYyByYW5nZXMgdXNlZCB0byBwZXJmb3JtIG1v
ZGUgdmFsaWRhdGlvbiBmb3IgdGhlCisgKiBzcGVjaWZpZWQgZGlzcGxheSBkZXZpY2UuICBUaGUg
cmFuZ2VzIGFyZSBpbiB0aGUgc2FtZSBmb3JtYXQgYXMgdGhlCisgKiAiSG9yaXpTeW5jIiBYIGNv
bmZpZyBvcHRpb246CisgKgorICogICAiaG9yaXpzeW5jLXJhbmdlIG1heSBiZSBhIGNvbW1hIHNl
cGFyYXRlZCBsaXN0IG9mIGVpdGhlciBkaXNjcmV0ZQorICogICB2YWx1ZXMgb3IgcmFuZ2VzIG9m
IHZhbHVlcy4gIEEgcmFuZ2Ugb2YgdmFsdWVzIGlzIHR3byB2YWx1ZXMKKyAqICAgc2VwYXJhdGVk
IGJ5IGEgZGFzaC4iCisgKgorICogVGhlIHZhbHVlcyBhcmUgaW4ga0h6LgorICoKKyAqIEFkZGl0
aW9uYWxseSwgdGhlIHN0cmluZyBtYXkgYmUgcHJlcGVuZGVkIHdpdGggYSBjb21tYS1zZXBhcmF0
ZWQKKyAqIGxpc3Qgb2YgInRva2VuPXZhbHVlIiBwYWlycywgc2VwYXJhdGVkIGZyb20gdGhlIEhv
cml6U3luYyBzdHJpbmcgYnkKKyAqICI6OiIuICBWYWxpZCB0b2tlbnM6CisgKgorICogICAgVG9r
ZW4gICAgIFZhbHVlCisgKiAgICJzb3VyY2UiICAiZWRpZCIgICAgIC0gSG9yaXpTeW5jIGlzIGZy
b20gdGhlIGRpc3BsYXkgZGV2aWNlJ3MgRURJRAorICogICAgICAgICAgICAgInhjb25maWciICAt
IEhvcml6U3luYyBpcyBmcm9tIHRoZSAiSG9yaXpTeW5jIiBlbnRyeSBpbgorICogICAgICAgICAg
ICAgICAgICAgICAgICAgIHRoZSBNb25pdG9yIHNlY3Rpb24gb2YgdGhlIFggY29uZmlnIGZpbGUK
KyAqICAgICAgICAgICAgICJvcHRpb24iICAgLSBIb3JpelN5bmMgaXMgZnJvbSB0aGUgIkhvcml6
U3luYyIgTlZJRElBIFgKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcgb3B0aW9u
CisgKiAgICAgICAgICAgICAidHdpbnZpZXciIC0gSG9yaXpTeW5jIGlzIGZyb20gdGhlICJTZWNv
bmRNb25pdG9ySG9yaXpTeW5jIgorICogICAgICAgICAgICAgICAgICAgICAgICAgIE5WSURJQSBY
IGNvbmZpZyBvcHRpb24KKyAqICAgICAgICAgICAgICJidWlsdGluIiAgLSBIb3JpelN5bmMgaXMg
ZnJvbSBOVklESUEgWCBkcml2ZXIgYnVpbHRpbgorICogICAgICAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQgdmFsdWVzCisgKgorICogQWRkaXRpb25hbCB0b2tlbnMgYW5kL29yIHZhbHVlcyBt
YXkgYmUgYWRkZWQgaW4gdGhlIGZ1dHVyZS4KKyAqCisgKiBFeGFtcGxlOiAic291cmNlPWVkaWQg
OjogMzAuMDAwLTYyLjAwMCIKKyAqLworCisjZGVmaW5lIE5WX0NUUkxfU1RSSU5HX1ZBTElEX0hP
UklaX1NZTkNfUkFOR0VTIDI0IC8qIFItREcgKi8KKworLyoKKyAqIE5WX0NUUkxfU1RSSU5HX1ZB
TElEX1ZFUlRfUkVGUkVTSF9SQU5HRVMgLSByZXR1cm5zIHRoZSB2YWxpZAorICogdmVydGljYWwg
cmVmcmVzaCByYW5nZXMgdXNlZCB0byBwZXJmb3JtIG1vZGUgdmFsaWRhdGlvbiBmb3IgdGhlCisg
KiBzcGVjaWZpZWQgZGlzcGxheSBkZXZpY2UuICBUaGUgcmFuZ2VzIGFyZSBpbiB0aGUgc2FtZSBm
b3JtYXQgYXMgdGhlCisgKiAiVmVydFJlZnJlc2giIFggY29uZmlnIG9wdGlvbjoKKyAqCisgKiAg
ICJ2ZXJ0cmVmcmVzaC1yYW5nZSBtYXkgYmUgYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBlaXRo
ZXIgZGlzY3JldGUKKyAqICAgIHZhbHVlcyBvciByYW5nZXMgb2YgdmFsdWVzLiAgQSByYW5nZSBv
ZiB2YWx1ZXMgaXMgdHdvIHZhbHVlcworICogICAgc2VwYXJhdGVkIGJ5IGEgZGFzaC4iCisgKgor
ICogVGhlIHZhbHVlcyBhcmUgaW4gSHouCisgKgorICogQWRkaXRpb25hbGx5LCB0aGUgc3RyaW5n
IG1heSBiZSBwcmVwZW5kZWQgd2l0aCBhIGNvbW1hLXNlcGFyYXRlZAorICogbGlzdCBvZiAidG9r
ZW49dmFsdWUiIHBhaXJzLCBzZXBhcmF0ZWQgZnJvbSB0aGUgVmVydFJlZnJlc2ggc3RyaW5nIGJ5
CisgKiAiOjoiLiAgVmFsaWQgdG9rZW5zOgorICoKKyAqICAgIFRva2VuICAgICBWYWx1ZQorICog
ICAic291cmNlIiAgImVkaWQiICAgICAtIFZlcnRSZWZyZXNoIGlzIGZyb20gdGhlIGRpc3BsYXkg
ZGV2aWNlJ3MgRURJRAorICogICAgICAgICAgICAgInhjb25maWciICAtIFZlcnRSZWZyZXNoIGlz
IGZyb20gdGhlICJWZXJ0UmVmcmVzaCIgZW50cnkgaW4KKyAqICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aGUgTW9uaXRvciBzZWN0aW9uIG9mIHRoZSBYIGNvbmZpZyBmaWxlCisgKiAgICAgICAg
ICAgICAib3B0aW9uIiAgIC0gVmVydFJlZnJlc2ggaXMgZnJvbSB0aGUgIlZlcnRSZWZyZXNoIiBO
VklESUEgWAorICogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZyBvcHRpb24KKyAqICAg
ICAgICAgICAgICJ0d2ludmlldyIgLSBWZXJ0UmVmcmVzaCBpcyBmcm9tIHRoZSAiU2Vjb25kTW9u
aXRvclZlcnRSZWZyZXNoIgorICogICAgICAgICAgICAgICAgICAgICAgICAgIE5WSURJQSBYIGNv
bmZpZyBvcHRpb24KKyAqICAgICAgICAgICAgICJidWlsdGluIiAgLSBWZXJ0UmVmcmVzaCBpcyBm
cm9tIE5WSURJQSBYIGRyaXZlciBidWlsdGluCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdCB2YWx1ZXMKKyAqCisgKiBBZGRpdGlvbmFsIHRva2VucyBhbmQvb3IgdmFsdWVzIG1h
eSBiZSBhZGRlZCBpbiB0aGUgZnV0dXJlLgorICoKKyAqIEV4YW1wbGU6ICJzb3VyY2U9ZWRpZCA6
OiA1MC4wMDAtNzUuMDAwIgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfVkFMSURfVkVS
VF9SRUZSRVNIX1JBTkdFUyAyNSAvKiBSLURHICovCisKKy8qCisgKiBOVl9DVFJMX1NUUklOR19Y
SU5FUkFNQV9TQ1JFRU5fSU5GTyAtIHJldHVybnMgdGhlIHBoeXNpY2FsIFggU2NyZWVuJ3MKKyAq
IGluaXRpYWwgcG9zaXRpb24gYW5kIHNpemUgKGluIGFic29sdXRlIGNvb3JkaW5hdGVzKSB3aXRo
aW4gdGhlIFhpbmVyYW1hCisgKiBkZXNrdG9wIGFzIHRoZSAidG9rZW49dmFsdWUiIHN0cmluZzog
ICJ4PSMsIHk9Iywgd2lkdGg9IywgaGVpZ2h0PSMiCisgKgorICogUXVlcnlpbmcgdGhpcyBhdHRy
aWJ1dGUgcmV0dXJucyBGQUxTRSBpZiBOVl9DVFJMX1hJTkVSQU1BIGlzIG5vdAorICogTlZfQ1RS
TF9YSU5FUkFNQV9PTi4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfU1RSSU5HX1hJTkVSQU1BX1ND
UkVFTl9JTkZPIDI2IC8qIFItLS0gKi8KKworLyoKKyAqIE5WX0NUUkxfU1RSSU5HX1RXSU5WSUVX
X1hJTkVSQU1BX0lORk9fT1JERVIgLSB1c2VkIHRvIHNwZWNpZnkgdGhlCisgKiBvcmRlciB0aGF0
IGRpc3BsYXkgZGV2aWNlcyB3aWxsIGJlIHJldHVybmVkIHZpYSBYaW5lcmFtYSB3aGVuCisgKiBu
dmlkaWFYaW5lcmFtYUluZm8gaXMgZW5hYmxlZC4gIEZvbGxvd3MgdGhlIHNhbWUgc3ludGF4IGFz
IHRoZQorICogbnZpZGlhWGluZXJhbWFJbmZvT3JkZXIgWCBjb25maWcgb3B0aW9uLgorICovCisK
KyNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfTlZJRElBX1hJTkVSQU1BX0lORk9fT1JERVIgMjcgLyog
UlctLSAqLworCisjZGVmaW5lIE5WX0NUUkxfU1RSSU5HX1RXSU5WSUVXX1hJTkVSQU1BX0lORk9f
T1JERVIgXAorICAgIE5WX0NUUkxfU1RSSU5HX05WSURJQV9YSU5FUkFNQV9JTkZPX09SREVSIC8q
IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eTogKi8KKworLyoKKyAqIE5WX0NUUkxfU1RSSU5H
X1NMSV9NT0RFIC0gcmV0dXJucyBhIHN0cmluZyBkZXNjcmliaW5nIHRoZSBjdXJyZW50CisgKiBT
TEkgbW9kZSwgaWYgYW55LCBvciBGQUxTRSBpZiBTTEkgaXMgbm90IGN1cnJlbnRseSBlbmFibGVk
LgorICoKKyAqIFRoaXMgc3RyaW5nIHNob3VsZCBiZSB1c2VkIGZvciBpbmZvcm1hdGlvbmFsIHB1
cnBvc2VzIG9ubHksIGFuZAorICogc2hvdWxkIG5vdCBiZSB1c2VkIHRvIGRpc3Rpbmd1aXNoIGJl
dHdlZW4gU0xJIG1vZGVzLCBvdGhlciB0aGFuIHRvCisgKiByZWNvZ25pemUgd2hlbiBTTEkgaXMg
ZGlzYWJsZWQgKEZBTFNFIGlzIHJldHVybmVkKSBvcgorICogZW5hYmxlZCAodGhlIHJldHVybmVk
IHN0cmluZyBpcyBub24tTlVMTCBhbmQgZGVzY3JpYmVzIHRoZSBjdXJyZW50CisgKiBTTEkgY29u
ZmlndXJhdGlvbikuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX1NUUklOR19TTElfTU9ERSAyOCAv
KiBSLS0tKi8KKworLyoKKyAqIE5WX0NUUkxfU1RSSU5HX1BFUkZPUk1BTkNFX01PREVTIC0gcmV0
dXJucyBhIHN0cmluZyB3aXRoIGFsbCB0aGUKKyAqIHBlcmZvcm1hbmNlIG1vZGVzIGRlZmluZWQg
Zm9yIHRoaXMgR1BVIGFsb25nIHdpdGggdGhlaXIgYXNzb2NpYXRlZAorICogTlYgQ2xvY2sgYW5k
IE1lbW9yeSBDbG9jayB2YWx1ZXMuCisgKgorICogRWFjaCBwZXJmb3JtYW5jZSBtb2RlcyBhcmUg
cmV0dXJuZWQgYXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZgorICogInRva2VuPXZhbHVlIiBw
YWlycy4gIEVhY2ggc2V0IG9mIHBlcmZvcm1hbmNlIG1vZGUgdG9rZW5zIGFyZSBzZXBhcmF0ZWQK
KyAqIGJ5IGEgIjsiLiAgVmFsaWQgdG9rZW5zOgorICoKKyAqICAgIFRva2VuICAgICAgVmFsdWUK
KyAqICAgInBlcmYiICAgICAgaW50ZWdlciAgIC0gdGhlIFBlcmZvcm1hbmNlIGxldmVsCisgKiAg
ICJudmNsb2NrIiAgIGludGVnZXIgICAtIHRoZSBHUFUgY2xvY2tzIChpbiBNSHopIGZvciB0aGUg
cGVyZiBsZXZlbAorICogICAibWVtY2xvY2siICBpbnRlZ2VyICAgLSB0aGUgbWVtb3J5IGNsb2Nr
cyAoaW4gTUh6KSBmb3IgdGhlIHBlcmYgbGV2ZWwKKyAqCisgKgorICogRXhhbXBsZToKKyAqCisg
KiAgIHBlcmY9MCwgbnZjbG9jaz01MDAsIG1lbWNsb2NrPTUwNSA7IHBlcmY9MSwgbnZjbG9jaz02
NTAsIG1lbWNsb2NrPTUwNQorICoKKyAqIFRoaXMgYXR0cmlidXRlIG1heSBiZSBxdWVyaWVkIHRo
cm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0U3RyaW5nQXR0cmlidXRlKCkKKyAqIHVzaW5nIGEgTlZf
Q1RSTF9UQVJHRVRfVFlQRV9HUFUgb3IgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiB0YXJn
ZXQuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX1NUUklOR19QRVJGT1JNQU5DRV9NT0RFUyAyOSAv
KiBSLS1HICovCisKKy8qCisgKiBOVl9DVFJMX1NUUklOR19WQ1NDX0ZBTl9TVEFUVVMgLSByZXR1
cm5zIGEgc3RyaW5nIHdpdGggc3RhdHVzIG9mIGFsbCB0aGUKKyAqIGZhbnMgaW4gdGhlIFZpc3Vh
bCBDb21wdXRpbmcgU3lzdGVtLCBpZiBzdWNoIGEgcXVlcnkgaXMgc3VwcG9ydGVkLiAgRmFuCisg
KiBpbmZvcm1hdGlvbiBpcyByZXBvcnRlZCBhbG9uZyB3aXRoIGl0cyB0YWNob21ldGVyIHJlYWRp
bmcgKGluIFJQTSkgYW5kIGEKKyAqIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmYW4gaGFz
IGZhaWxlZCBvciBub3QuCisgKgorICogVmFsaWQgdG9rZW5zOgorICoKKyAqICAgIFRva2VuICAg
ICAgVmFsdWUKKyAqICAgImZhbiIgICAgICAgaW50ZWdlciAgIC0gdGhlIEZhbiBpbmRleAorICog
ICAic3BlZWQiICAgICBpbnRlZ2VyICAgLSB0aGUgdGFjaG9tZXRlciByZWFkaW5nIG9mIHRoZSBm
YW4gaW4gcnBtCisgKiAgICJmYWlsIiAgICAgIGludGVnZXIgICAtIGZsYWcgdG8gaW5kaWNhdGUg
d2hldGhlciB0aGUgZmFuIGhhcyBmYWlsZWQKKyAqCisgKiBFeGFtcGxlOgorICoKKyAqICAgZmFu
PTAsIHNwZWVkPTY5NCwgZmFpbD0wIDsgZmFuPTEsIHNwZWVkPTY5MywgZmFpbD0wCisgKgorICog
VGhpcyBhdHRyaWJ1dGUgbXVzdCBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0
U3RyaW5nQXR0cmlidXRlKCkKKyAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9WQ1NDIHRh
cmdldC4KKyAqCisgKi8KKworI2RlZmluZSBOVl9DVFJMX1NUUklOR19WQ1NDX0ZBTl9TVEFUVVMg
MzAgLyogUi0tLVYgKi8KKworLyoKKyAqIE5WX0NUUkxfU1RSSU5HX1ZDU0NfVEVNUEVSQVRVUkVT
IC0gcmV0dXJucyBhIHN0cmluZyB3aXRoIGFsbCBUZW1wZXJhdHVyZQorICogcmVhZGluZ3MgaW4g
dGhlIFZpc3VhbCBDb21wdXRpbmcgU3lzdGVtLCBpZiBzdWNoIGEgcXVlcnkgaXMgc3VwcG9ydGVk
LgorICogSW50YWtlLCBFeGhhdXN0IGFuZCBCb2FyZCBUZW1wZXJhdHVyZSB2YWx1ZXMgYXJlIHJl
cG9ydGVkIGluIENlbGNpdXMuCisgKgorICogVmFsaWQgdG9rZW5zOgorICoKKyAqICAgIFRva2Vu
ICAgICAgVmFsdWUKKyAqICAgImludGFrZSIgICAgaW50ZWdlciAgIC0gdGhlIGludGFrZSB0ZW1w
ZXJhdHVyZSBmb3IgdGhlIFZDUworICogICAiZXhoYXVzdCIgICBpbnRlZ2VyICAgLSB0aGUgZXho
YXVzdCB0ZW1wZXJhdHVyZSBmb3IgdGhlIFZDUworICogICAiYm9hcmQiICAgICBpbnRlZ2VyICAg
LSB0aGUgYm9hcmQgdGVtcGVyYXR1cmUgb2YgdGhlIFZDUworICoKKyAqIEV4YW1wbGU6CisgKgor
ICogICBpbnRha2U9MjksIGV4aGF1c3Q9NDYsIGJvYXJkPTQxCisgKgorICogVGhpcyBhdHRyaWJ1
dGUgbXVzdCBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0U3RyaW5nQXR0cmli
dXRlKCkKKyAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9WQ1NDIHRhcmdldC4KKyAqCisg
Ki8KKworI2RlZmluZSBOVl9DVFJMX1NUUklOR19WQ1NDX1RFTVBFUkFUVVJFUyAzMSAvKiBSLS0t
ViAqLworCisvKgorICogTlZfQ1RSTF9TVFJJTkdfVkNTQ19QU1VfSU5GTyAtIHJldHVybnMgYSBz
dHJpbmcgd2l0aCBhbGwgUG93ZXIgU3VwcGx5IFVuaXQKKyAqIHJlbGF0ZWQgcmVhZGluZ3MgaW4g
dGhlIFZpc3VhbCBDb21wdXRpbmcgU3lzdGVtLCBpZiBzdWNoIGEgcXVlcnkgaXMKKyAqIHN1cHBv
cnRlZC4gIEN1cnJlbnQgaW4gYW1wZXJlcywgUG93ZXIgaW4gd2F0dHMsIFZvbHRhZ2UgaW4gdm9s
dHMgYW5kIFBTVQorICogc3RhdGUgbWF5IGJlIHJlcG9ydGVkLiAgTm90IGFsbCBQU1UgdHlwZXMg
c3VwcG9ydCBhbGwgb2YgdGhlc2UgdmFsdWVzLCBhbmQKKyAqIHRoZXJlZm9yZSBzb21lIHJlYWRp
bmdzIG1heSBiZSB1bmtub3duLgorICoKKyAqIFZhbGlkIHRva2VuczoKKyAqCisgKiAgICBUb2tl
biAgICAgIFZhbHVlCisgKiAgICJjdXJyZW50IiAgIGludGVnZXIgICAtIHRoZSBjdXJyZW50IGRy
YXduIGluIGFtcGVyZXMgYnkgdGhlIFZDUworICogICAicG93ZXIiICAgICBpbnRlZ2VyICAgLSB0
aGUgcG93ZXIgZHJhd24gaW4gd2F0dHMgYnkgdGhlIFZDUworICogICAidm9sdGFnZSIgICBpbnRl
Z2VyICAgLSB0aGUgdm9sdGFnZSByZWFkaW5nIG9mIHRoZSBWQ1MKKyAqICAgInN0YXRlIiAgICAg
aW50ZWdlciAgIC0gZmxhZyB0byBpbmRpY2F0ZSB3aGV0aGVyIFBTVSBpcyBvcGVyYXRpbmcgbm9y
bWFsbHkKKyAqCisgKiBFeGFtcGxlOgorICoKKyAqICAgY3VycmVudD0xMCwgcG93ZXI9MTUsIHZv
bHRhZ2U9dW5rbm93biwgc3RhdGU9bm9ybWFsCisgKgorICogVGhpcyBhdHRyaWJ1dGUgbXVzdCBi
ZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0U3RyaW5nQXR0cmlidXRlKCkKKyAq
IHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9WQ1NDIHRhcmdldC4KKyAqCisgKi8KKworI2Rl
ZmluZSBOVl9DVFJMX1NUUklOR19WQ1NDX1BTVV9JTkZPIDMyIC8qIFItLS1WICovCisKKy8qCisg
KiBOVl9DVFJMX1NUUklOR19HVklPX1ZJREVPX0ZPUk1BVF9OQU1FIC0gcXVlcnkgdGhlIG5hbWUg
Zm9yIHRoZSBzcGVjaWZpZWQKKyAqIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfKi4gIFNvIHRo
YXQgdGhpcyBjYW4gYmUgcXVlcmllZCB3aXRoIGV4aXN0aW5nCisgKiBpbnRlcmZhY2VzLCBYTlZD
VFJMUXVlcnlTdHJpbmdBdHRyaWJ1dGUoKSBzaG91bGQgYmUgdXNlZCwgYW5kIHRoZSB2aWRlbwor
ICogZm9ybWF0IHNwZWNpZmllZCBpbiB0aGUgZGlzcGxheV9tYXNrIGZpZWxkOyBlZzoKKyAqCisg
KiBYTlZDVFJMUXVlcnlTdHJpbmdBdHRyaWJ1dGUoZHB5LAorICogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNjcmVlbiwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVl9DVFJM
X0dWSU9fVklERU9fRk9STUFUXzcyMFBfNjBfMDBfU01QVEUyOTYsCisgKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF9OQU1FLAorICogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZuYW1lKTsKKyAqLworCisjZGVmaW5lIE5WX0NUUkxfU1RS
SU5HX0dWSU9fVklERU9fRk9STUFUX05BTUUgMzMgLyogUi0tR0kgKi8KKworLyoKKyAqIFRoZSBm
b2xsb3dpbmcgaXMgZGVwcmVjYXRlZDsgdXNlIE5WX0NUUkxfU1RSSU5HX0dWSU9fVklERU9fRk9S
TUFUX05BTUUsCisgKiBpbnN0ZWFkCisgKi8KKyNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfR1ZPX1ZJ
REVPX0ZPUk1BVF9OQU1FIDMzIC8qIFItLS0gKi8KKworLyoKKyAqIE5WX0NUUkxfU1RSSU5HX0dQ
VV9DVVJSRU5UX0NMT0NLX0ZSRVFTIC0gcmV0dXJucyBhIHN0cmluZyB3aXRoIHRoZQorICogYXNz
b2NpYXRlZCBOViBDbG9jaywgTWVtb3J5IENsb2NrIGFuZCBQcm9jZXNzb3IgQ2xvY2sgdmFsdWVz
LgorICoKKyAqIEN1cnJlbnQgdmFsaWQgdG9rZW5zIGFyZSAibnZjbG9jayIsICJtZW1jbG9jayIs
IGFuZCAicHJvY2Vzc29yY2xvY2siLgorICogTm90IGFsbCB0b2tlbnMgd2lsbCBiZSByZXBvcnRl
ZCBvbiBhbGwgR1BVcywgYW5kIGFkZGl0aW9uYWwgdG9rZW5zCisgKiBtYXkgYmUgYWRkZWQgaW4g
dGhlIGZ1dHVyZS4KKyAqCisgKiBDbG9jayB2YWx1ZXMgYXJlIHJldHVybmVkIGFzIGEgY29tbWEt
c2VwYXJhdGVkIGxpc3Qgb2YKKyAqICJ0b2tlbj12YWx1ZSIgcGFpcnMuCisgKiBWYWxpZCB0b2tl
bnM6CisgKgorICogICAgVG9rZW4gICAgICAgICAgIFZhbHVlCisgKiAgICJudmNsb2NrIiAgICAg
ICAgaW50ZWdlciAtIHRoZSBHUFUgY2xvY2tzIChpbiBNSHopIGZvciB0aGUgY3VycmVudAorICog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJmIGxldmVsCisgKiAgICJtZW1jbG9jayIg
ICAgICAgaW50ZWdlciAtIHRoZSBtZW1vcnkgY2xvY2tzIChpbiBNSHopIGZvciB0aGUgY3VycmVu
dAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJmIGxldmVsCisgKiAgICJwcm9j
ZXNzb3JjbG9jayIgaW50ZWdlciAtIHRoZSBwcm9jZXNzb3IgY2xvY2tzIChpbiBNSHopIGZvciB0
aGUgcGVyZiBsZXZlbAorICoKKyAqCisgKiBFeGFtcGxlOgorICoKKyAqICAgIG52Y2xvY2s9NDU5
LCBtZW1jbG9jaz00MDAsIHByb2Nlc3NvcmNsb2NrPTkxOAorICoKKyAqIFRoaXMgYXR0cmlidXRl
IG1heSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0U3RyaW5nQXR0cmlidXRl
KCkKKyAqIHVzaW5nIGFuIE5WX0NUUkxfVEFSR0VUX1RZUEVfR1BVIG9yIE5WX0NUUkxfVEFSR0VU
X1RZUEVfWF9TQ1JFRU4gdGFyZ2V0LgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfR1BV
X0NVUlJFTlRfQ0xPQ0tfRlJFUVMgMzQgLyogUlctRyAqLworCisvKgorICogTlZfQ1RSTF9TVFJJ
TkdfM0RfVklTSU9OX1BST19UUkFOU0NFSVZFUl9IQVJEV0FSRV9SRVZJU0lPTiAtIFJldHVybnMg
dGhlCisgKiBoYXJkd2FyZSByZXZpc2lvbiBvZiB0aGUgM0QgVmlzaW9uIFBybyB0cmFuc2NlaXZl
ci4KKyAqLworI2RlZmluZSBOVl9DVFJMX1NUUklOR18zRF9WSVNJT05fUFJPX1RSQU5TQ0VJVkVS
X0hBUkRXQVJFX1JFVklTSU9OIDM1IC8qIFItLVQgKi8KKworLyoKKyAqIE5WX0NUUkxfU1RSSU5H
XzNEX1ZJU0lPTl9QUk9fVFJBTlNDRUlWRVJfRklSTVdBUkVfVkVSU0lPTl9BIC0gUmV0dXJucyB0
aGUKKyAqIGZpcm13YXJlIHZlcnNpb24gb2YgY2hpcCBBIG9mIHRoZSAzRCBWaXNpb24gUHJvIHRy
YW5zY2VpdmVyLgorICovCisjZGVmaW5lIE5WX0NUUkxfU1RSSU5HXzNEX1ZJU0lPTl9QUk9fVFJB
TlNDRUlWRVJfRklSTVdBUkVfVkVSU0lPTl9BIDM2IC8qIFItLVQgKi8KKworLyoKKyAqIE5WX0NU
UkxfU1RSSU5HXzNEX1ZJU0lPTl9QUk9fVFJBTlNDRUlWRVJfRklSTVdBUkVfREFURV9BIC0gUmV0
dXJucyB0aGUKKyAqIGRhdGUgb2YgdGhlIGZpcm13YXJlIG9mIGNoaXAgQSBvZiB0aGUgM0QgVmlz
aW9uIFBybyB0cmFuc2NlaXZlci4KKyAqLworI2RlZmluZSBOVl9DVFJMX1NUUklOR18zRF9WSVNJ
T05fUFJPX1RSQU5TQ0VJVkVSX0ZJUk1XQVJFX0RBVEVfQSAzNyAvKiBSLS1UICovCisKKy8qCisg
KiBOVl9DVFJMX1NUUklOR18zRF9WSVNJT05fUFJPX1RSQU5TQ0VJVkVSX0ZJUk1XQVJFX1ZFUlNJ
T05fQiAtIFJldHVybnMgdGhlCisgKiBmaXJtd2FyZSB2ZXJzaW9uIG9mIGNoaXAgQiBvZiB0aGUg
M0QgVmlzaW9uIFBybyB0cmFuc2NlaXZlci4KKyAqLworI2RlZmluZSBOVl9DVFJMX1NUUklOR18z
RF9WSVNJT05fUFJPX1RSQU5TQ0VJVkVSX0ZJUk1XQVJFX1ZFUlNJT05fQiAzOCAvKiBSLS1UICov
CisKKy8qCisgKiBOVl9DVFJMX1NUUklOR18zRF9WSVNJT05fUFJPX1RSQU5TQ0VJVkVSX0ZJUk1X
QVJFX0RBVEVfQiAtIFJldHVybnMgdGhlCisgKiBkYXRlIG9mIHRoZSBmaXJtd2FyZSBvZiBjaGlw
IEIgb2YgdGhlIDNEIFZpc2lvbiBQcm8gdHJhbnNjZWl2ZXIuCisgKi8KKyNkZWZpbmUgTlZfQ1RS
TF9TVFJJTkdfM0RfVklTSU9OX1BST19UUkFOU0NFSVZFUl9GSVJNV0FSRV9EQVRFX0IgMzkgLyog
Ui0tVCAqLworCisvKgorICogTlZfQ1RSTF9TVFJJTkdfM0RfVklTSU9OX1BST19UUkFOU0NFSVZF
Ul9BRERSRVNTIC0gUmV0dXJucyB0aGUgUkYgYWRkcmVzcworICogb2YgdGhlIDNEIFZpc2lvbiBQ
cm8gdHJhbnNjZWl2ZXIuCisgKi8KKyNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfM0RfVklTSU9OX1BS
T19UUkFOU0NFSVZFUl9BRERSRVNTIDQwIC8qIFItLVQgKi8KKworLyoKKyAqIE5WX0NUUkxfU1RS
SU5HXzNEX1ZJU0lPTl9QUk9fR0xBU1NFU19GSVJNV0FSRV9WRVJTSU9OX0EgLSBSZXR1cm5zIHRo
ZQorICogZmlybXdhcmUgdmVyc2lvbiBvZiBjaGlwIEEgb2YgdGhlIGdsYXNzZXMuCisgKiBVc2Ug
dGhlIGRpc3BsYXlfbWFzayBwYXJhbWV0ZXIgdG8gc3BlY2lmeSB0aGUgZ2xhc3NlcyBpZC4KKyAq
LworI2RlZmluZSBOVl9DVFJMX1NUUklOR18zRF9WSVNJT05fUFJPX0dMQVNTRVNfRklSTVdBUkVf
VkVSU0lPTl9BIDQxIC8qIFItLVQgKi8KKworLyoKKyAqIE5WX0NUUkxfU1RSSU5HXzNEX1ZJU0lP
Tl9QUk9fR0xBU1NFU19GSVJNV0FSRV9EQVRFX0EgLSBSZXR1cm5zIHRoZQorICogZGF0ZSBvZiB0
aGUgZmlybXdhcmUgb2YgY2hpcCBBIG9mIHRoZSBnbGFzc2VzLgorICogVXNlIHRoZSBkaXNwbGF5
X21hc2sgcGFyYW1ldGVyIHRvIHNwZWNpZnkgdGhlIGdsYXNzZXMgaWQuCisgKi8KKyNkZWZpbmUg
TlZfQ1RSTF9TVFJJTkdfM0RfVklTSU9OX1BST19HTEFTU0VTX0ZJUk1XQVJFX0RBVEVfQSA0MiAv
KiBSLS1UICovCisKKy8qCisgKiBOVl9DVFJMX1NUUklOR18zRF9WSVNJT05fUFJPX0dMQVNTRVNf
QUREUkVTUyAtIFJldHVybnMgdGhlIFJGIGFkZHJlc3MKKyAqIG9mIHRoZSBnbGFzc2VzLgorICog
VXNlIHRoZSBkaXNwbGF5X21hc2sgcGFyYW1ldGVyIHRvIHNwZWNpZnkgdGhlIGdsYXNzZXMgaWQu
CisgKi8KKyNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfM0RfVklTSU9OX1BST19HTEFTU0VTX0FERFJF
U1MgNDMgLyogUi0tVCAqLworCisvKgorICogTlZfQ1RSTF9TVFJJTkdfM0RfVklTSU9OX1BST19H
TEFTU0VTX05BTUUgLSBDb250cm9scyB0aGUgbmFtZSB0aGUKKyAqIGdsYXNzZXMgc2hvdWxkIHVz
ZS4KKyAqIFVzZSB0aGUgZGlzcGxheV9tYXNrIHBhcmFtZXRlciB0byBzcGVjaWZ5IHRoZSBnbGFz
c2VzIGlkLgorICogR2xhc3NlcycgbmFtZSBzaG91bGQgc3RhcnQgYW5kIGVuZCB3aXRoIGFuIGFs
cGhhLW51bWVyaWMgY2hhcmFjdGVyLgorICovCisjZGVmaW5lIE5WX0NUUkxfU1RSSU5HXzNEX1ZJ
U0lPTl9QUk9fR0xBU1NFU19OQU1FIDQ0IC8qIFJXLVQgKi8KKworLyoKKyAqIE5WX0NUUkxfU1RS
SU5HX0NVUlJFTlRfTUVUQU1PREVfVkVSU0lPTl8yIC0gUmV0dXJucyB0aGUgbWV0YW1vZGUgY3Vy
cmVudGx5CisgKiBiZWluZyB1c2VkIGJ5IHRoZSBzcGVjaWZpZWQgWCBzY3JlZW4uICBUaGUgTWV0
YU1vZGUgc3RyaW5nIGhhcyB0aGUgc2FtZQorICogc3ludGF4IGFzIHRoZSBNZXRhTW9kZSBYIGNv
bmZpZ3VyYXRpb24gb3B0aW9uLCBhcyBkb2N1bWVudGVkIGluIHRoZSBOVklESUEKKyAqIGRyaXZl
ciBSRUFETUUuICBBbHNvLCBzZWUgTlZfQ1RSTF9CSU5BUllfREFUQV9NRVRBTU9ERVNfVkVSU0lP
Tl8yIGZvciBtb3JlCisgKiBkZXRhaWxzIG9uIHRoZSBiYXNlIHN5bnRheC4KKyAqCisgKiBUaGUg
cmV0dXJuZWQgc3RyaW5nIG1heSBhbHNvIGJlIHByZXBlbmRlZCB3aXRoIGEgY29tbWEtc2VwYXJh
dGVkIGxpc3Qgb2YKKyAqICJ0b2tlbj12YWx1ZSIgcGFpcnMsIHNlcGFyYXRlZCBmcm9tIHRoZSBN
ZXRhTW9kZSBzdHJpbmcgYnkgIjo6Ii4KKyAqLworI2RlZmluZSBOVl9DVFJMX1NUUklOR19DVVJS
RU5UX01FVEFNT0RFX1ZFUlNJT05fMiA0NSAvKiBSVy0tICovCisKKy8qCisgKiBOVl9DVFJMX1NU
UklOR19ESVNQTEFZX05BTUVfVFlQRV9CQVNFTkFNRSAtIFJldHVybnMgYSB0eXBlIG5hbWUgZm9y
IHRoZQorICogZGlzcGxheSBkZXZpY2UgKCJDUlQiLCAiREZQIiwgb3IgIlRWIikuICBIb3dldmVy
LCBub3RlIHRoYXQgdGhlIGRldGVybWluYXRpb24KKyAqIG9mIHRoZSBuYW1lIGlzIGJhc2VkIG9u
IHRoZSBwcm90b2NvbCB0aHJvdWdoIHdoaWNoIHRoZSBYIGRyaXZlciBjb21tdW5pY2F0ZXMKKyAq
IHRvIHRoZSBkaXNwbGF5IGRldmljZS4gIEUuZy4sIGlmIHRoZSBkcml2ZXIgY29tbXVuaWNhdGVz
IHVzaW5nIFZHQSAsdGhlbiB0aGUKKyAqIGJhc2VuYW1lIGlzICJDUlQiOyBpZiB0aGUgZHJpdmVy
IGNvbW11bmljYXRlcyB1c2luZyBUTURTLCBMVkRTLCBvciBEUCwgdGhlbgorICogdGhlIG5hbWUg
aXMgIkRGUCIuCisgKi8KKyNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfRElTUExBWV9OQU1FX1RZUEVf
QkFTRU5BTUUgNDYgLyogUi1ELSAqLworCisvKgorICogTlZfQ1RSTF9TVFJJTkdfRElTUExBWV9O
QU1FX1RZUEVfSUQgLSBSZXR1cm5zIHRoZSB0eXBlLWJhc2VkIG5hbWUgKyBJRCBmb3IKKyAqIHRo
ZSBkaXNwbGF5IGRldmljZSwgZS5nLiAiQ1JULTAiLCAiREZQLTEiLCAiVFYtMiIuICBJZiB0aGlz
IGRldmljZSBpcyBhCisgKiBEaXNwbGF5UG9ydCAxLjIgZGV2aWNlLCB0aGVuIHRoaXMgbmFtZSB3
aWxsIGFsc28gYmUgcHJlcGVuZGVkIHdpdGggdGhlCisgKiBkZXZpY2UncyBwb3J0IGFkZHJlc3Mg
bGlrZSBzbzogIkRGUC0xLjAuMS4yLjMiLiAgU2VlCisgKiBOVl9DVFJMX1NUUklOR19ESVNQTEFZ
X05BTUVfVFlQRV9CQVNFTkFNRSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUKKyAqIGNv
bnN0cnVjdGlvbiBvZiB0eXBlLWJhc2VkIG5hbWVzLgorICovCisjZGVmaW5lIE5WX0NUUkxfU1RS
SU5HX0RJU1BMQVlfTkFNRV9UWVBFX0lEIDQ3IC8qIFItRC0gKi8KKworLyoKKyAqIE5WX0NUUkxf
U1RSSU5HX0RJU1BMQVlfTkFNRV9EUF9HVUlEIC0gUmV0dXJucyB0aGUgR1VJRCBvZiB0aGUgRGlz
cGxheVBvcnQKKyAqIGRpc3BsYXkgZGV2aWNlLiAgZS5nLiAiRFAtR1VJRC1mMTZhNWJkZS03OWYz
LTExZTEtYjJhZS04YjVhODk2OWJhOWMiCisgKgorICogVGhlIGRpc3BsYXkgZGV2aWNlIG11c3Qg
YmUgYSBEaXNwbGF5UG9ydCAxLjIgZGV2aWNlLgorICovCisjZGVmaW5lIE5WX0NUUkxfU1RSSU5H
X0RJU1BMQVlfTkFNRV9EUF9HVUlEIDQ4IC8qIFItRC0gKi8KKworLyoKKyAqIE5WX0NUUkxfU1RS
SU5HX0RJU1BMQVlfTkFNRV9FRElEX0hBU0ggLSBSZXR1cm5zIHRoZSBTSEEtMSBoYXNoIG9mIHRo
ZQorICogZGlzcGxheSBkZXZpY2UncyBFRElEIGluIDgtNC00LTQtMTIgVUlEIGZvcm1hdC4gZS5n
LgorICogIkRQWS1FRElELWYxNmE1YmRlLTc5ZjMtMTFlMS1iMmFlLThiNWE4OTY5YmE5YyIKKyAq
CisgKiBUaGUgZGlzcGxheSBkZXZpY2UgbXVzdCBoYXZlIGEgdmFsaWQgRURJRC4KKyAqLworI2Rl
ZmluZSBOVl9DVFJMX1NUUklOR19ESVNQTEFZX05BTUVfRURJRF9IQVNIIDQ5IC8qIFItRC0gKi8K
KworLyoKKyAqIE5WX0NUUkxfU1RSSU5HX0RJU1BMQVlfTkFNRV9UQVJHRVRfSU5ERVggLSBSZXR1
cm5zIHRoZSBjdXJyZW50IE5WLUNPTlRST0wKKyAqIHRhcmdldCBJRCAobmFtZSkgb2YgdGhlIGRp
c3BsYXkgZGV2aWNlLiAgZS5nLiAiRFBZLTEiLCAiRFBZLTQiCisgKgorICogVGhpcyBuYW1lIGZv
ciB0aGUgZGlzcGxheSBkZXZpY2UgaXMgbm90IGd1YXJlbnRlZWQgdG8gYmUgdGhlIHNhbWUgYmV0
d2VlbgorICogZGlmZmVyZW50IHJ1bnMgb2YgdGhlIFggc2VydmVyLgorICovCisjZGVmaW5lIE5W
X0NUUkxfU1RSSU5HX0RJU1BMQVlfTkFNRV9UQVJHRVRfSU5ERVggNTAgLyogUi1ELSAqLworCisv
KgorICogTlZfQ1RSTF9TVFJJTkdfRElTUExBWV9OQU1FX1JBTkRSIC0gUmV0dXJucyB0aGUgUmFu
ZFIgb3V0cHV0IG5hbWUgZm9yIHRoZQorICogZGlzcGxheSBkZXZpY2UuICBlLmcuICAiVkdBLTEi
LCAiRFZJLUktMCIsICJEVkktRC0zIiwgIkxWRFMtMSIsICJEUC0yIiwKKyAqICJIRE1JLTMiLCAi
ZURQLTYiLiAgVGhpcyBuYW1lIHNob3VsZCBtYXRjaCAgSWYgdGhpcyBkZXZpY2UgaXMgYSBEaXNw
bGF5UG9ydAorICogMS4yIGRldmljZSwgdGhlbiB0aGlzIG5hbWUgd2lsbCBhbHNvIGJlIHByZXBl
bmRlZCB3aXRoIHRoZSBkZXZpY2UncyBwb3J0CisgKiBhZGRyZXNzIGxpa2Ugc286ICJEVkktSS0z
LjAuMS4yLjMiCisgKi8KKyNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfRElTUExBWV9OQU1FX1JBTkRS
IDUxIC8qIFItRC0gKi8KKworI2RlZmluZSBOVl9DVFJMX1NUUklOR19MQVNUX0FUVFJJQlVURSBO
Vl9DVFJMX1NUUklOR19ESVNQTEFZX05BTUVfUkFORFIKKworLyoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwor
CisvKgorICogQmluYXJ5IERhdGEgQXR0cmlidXRlczoKKyAqCisgKiBCaW5hcnkgZGF0YSBhdHRy
aWJ1dGVzIGNhbiBiZSBxdWVyeWllZCB0aHJvdWdoIHRoZSBYTlZDVFJMUXVlcnlCaW5hcnlEYXRh
KCkKKyAqIGFuZCBYTlZDVFJMUXVlcnlUYXJnZXRCaW5hcnlEYXRhKCkgZnVuY3Rpb24gY2FsbHMu
CisgKgorICogVGhlcmUgYXJlIGN1cnJlbnRseSBubyBiaW5hcnkgZGF0YSBhdHRyaWJ1dGVzIHRo
YXQgY2FuIGJlIHNldC4KKyAqCisgKiBVbmxlc3Mgb3RoZXJ3aXNlIG5vdGVkLCBhbGwgQmluYXJ5
IGRhdGEgYXR0cmlidXRlcyBjYW4gYmUgcXVlcmllZAorICogdXNpbmcgYW4gTlZfQ1RSTF9UQVJH
RVRfVFlQRV9YX1NDUkVFTiB0YXJnZXQuICBBdHRyaWJ1dGVzIHRoYXQgY2Fubm90IHRha2UKKyAq
IGFuIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4gdGFyZ2V0IGFsc28gY2Fubm90IGJlIHF1
ZXJpZWQgdGhyb3VnaAorICogWE5WQ1RSTFF1ZXJ5QmluYXJ5RGF0YSgpIChTaW5jZSBhbiBYIFNj
cmVlbiB0YXJnZXQgaXMgYXNzdW1lZCkuCisgKi8KKworLyoKKyAqIE5WX0NUUkxfQklOQVJZX0RB
VEFfRURJRCAtIFJldHVybnMgYSBkaXNwbGF5IGRldmljZSdzIEVESUQgaW5mb3JtYXRpb24KKyAq
IGRhdGEuCisgKgorICogVGhpcyBhdHRyaWJ1dGUgbWF5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZD
VFJMUXVlcnlUYXJnZXRCaW5hcnlEYXRhKCkKKyAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQ
RV9HUFUgb3IgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiB0YXJnZXQuCisgKi8KKworI2Rl
ZmluZSBOVl9DVFJMX0JJTkFSWV9EQVRBX0VESUQgMCAvKiBSLURHICovCisKKy8qCisgKiBOVl9D
VFJMX0JJTkFSWV9EQVRBX01PREVMSU5FUyAtIFJldHVybnMgYSBkaXNwbGF5IGRldmljZSdzIHN1
cHBvcnRlZAorICogTW9kZUxpbmVzLiAgTW9kZUxpbmVzIGFyZSByZXR1cm5lZCBpbiBhIGJ1ZmZl
ciwgc2VwYXJhdGVkIGJ5IGEgc2luZ2xlCisgKiAnXDAnIGFuZCB0ZXJtaW5hdGVkIGJ5IHR3byBj
b25zZWN1dGl2ZSAnXDAnIHMgbGlrZSBzbzoKKyAqCisgKiAgIk1vZGVMaW5lIDFcME1vZGVMaW5l
IDJcME1vZGVMaW5lIDNcMExhc3QgTW9kZUxpbmVcMFwwIgorICoKKyAqIFRoaXMgYXR0cmlidXRl
IG1heSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QmluYXJ5RGF0YSgpCisg
KiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfR1BVIG9yIE5WX0NUUkxfVEFSR0VUX1RZUEVf
WF9TQ1JFRU4gdGFyZ2V0LgorICoKKyAqIEVhY2ggTW9kZUxpbmUgc3RyaW5nIG1heSBiZSBwcmVw
ZW5kZWQgd2l0aCBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0CisgKiBvZiAidG9rZW49dmFsdWUiIHBh
aXJzLCBzZXBhcmF0ZWQgZnJvbSB0aGUgTW9kZUxpbmUgc3RyaW5nIHdpdGggYQorICogIjo6Ii4g
IFZhbGlkIHRva2VuczoKKyAqCisgKiAgICBUb2tlbiAgICBWYWx1ZQorICogICAic291cmNlIiAi
eHNlcnZlciIgICAgLSB0aGUgTW9kZUxpbmUgaXMgZnJvbSB0aGUgY29yZSBYIHNlcnZlcgorICog
ICAgICAgICAgICAieGNvbmZpZyIgICAgLSB0aGUgTW9kZUxpbmUgd2FzIHNwZWNpZmllZCBpbiB0
aGUgWCBjb25maWcgZmlsZQorICogICAgICAgICAgICAiYnVpbHRpbiIgICAgLSB0aGUgTlZJRElB
IGRyaXZlciBwcm92aWRlZCB0aGlzIGJ1aWx0aW4gTW9kZUxpbmUKKyAqICAgICAgICAgICAgInZl
c2EiICAgICAgIC0gdGhpcyBpcyBhIFZFU0Egc3RhbmRhcmQgTW9kZUxpbmUKKyAqICAgICAgICAg
ICAgImVkaWQiICAgICAgIC0gdGhlIE1vZGVMaW5lIHdhcyBpbiB0aGUgZGlzcGxheSBkZXZpY2Un
cyBFRElECisgKiAgICAgICAgICAgICJudi1jb250cm9sIiAtIHRoZSBNb2RlTGluZSB3YXMgc3Bl
Y2lmaWVkIHZpYSBOVi1DT05UUk9MCisgKgorICogICAieGNvbmZpZy1uYW1lIiAgICAgICAgLSBm
b3IgTW9kZUxpbmVzIHRoYXQgd2VyZSBzcGVjaWZpZWQgaW4gdGhlIFggY29uZmlnCisgKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZpbGUsIHRoaXMgaXMgdGhlIG5hbWUgdGhlIFggY29uZmln
IGZpbGUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2F2ZSBmb3IgdGhlIE1vZGVMaW5l
LgorICoKKyAqIE5vdGUgdGhhdCBhIE1vZGVMaW5lIGNhbiBoYXZlIHNldmVyYWwgc291cmNlczsg
dGhlICJzb3VyY2UiIHRva2VuCisgKiBjYW4gYXBwZWFyIG11bHRpcGxlIHRpbWVzIGluIHRoZSAi
dG9rZW49dmFsdWUiIHBhaXJzIGxpc3QuCisgKiBBZGRpdGlvbmFsIHNvdXJjZSB2YWx1ZXMgbWF5
IGJlIHNwZWNpZmllZCBpbiB0aGUgZnV0dXJlLgorICoKKyAqIEFkZGl0aW9uYWwgdG9rZW5zIG1h
eSBiZSBhZGRlZCBpbiB0aGUgZnV0dXJlLCBzbyBpdCBpcyByZWNvbW1lbmRlZAorICogdGhhdCBh
bnkgdG9rZW4gcGFyc2VyIHByb2Nlc3NpbmcgdGhlIHJldHVybmVkIHN0cmluZyBmcm9tCisgKiBO
Vl9DVFJMX0JJTkFSWV9EQVRBX01PREVMSU5FUyBiZSBpbXBsZW1lbnRlZCB0byBncmFjZWZ1bGx5
IGlnbm9yZQorICogdW5yZWNvZ25pemVkIHRva2Vucy4KKyAqCisgKiBFLmcuLAorICoKKyAqICJz
b3VyY2U9eHNlcnZlciwgc291cmNlPXZlc2EsIHNvdXJjZT1lZGlkIDo6ICIxMDI0eDc2OF83MCIg
IDc1LjAgIDEwMjQgMTA0OCAxMTg0IDEzMjggIDc2OCA3NzEKKyAqIDc3NyA4MDYgIC1IU3luYyAt
VlN5bmMiCisgKiAic291cmNlPXhjb25maWcsIHhjb25maWctbmFtZT0xNjAweDEyMDBfNjAuMDAg
OjogIjE2MDB4MTIwMF82MF8wIiAgMTYxLjAgIDE2MDAgMTcwNCAxODgwIDIxNjAKKyAqIDEyMDAg
MTIwMSAxMjA0IDEyNDIgIC1IU3luYyArVlN5bmMiCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0JJ
TkFSWV9EQVRBX01PREVMSU5FUyAxIC8qIFItREcgKi8KKworLyoKKyAqIE5WX0NUUkxfQklOQVJZ
X0RBVEFfTUVUQU1PREVTIC0gUmV0dXJucyBhbiBYIFNjcmVlbidzIHN1cHBvcnRlZAorICogTWV0
YU1vZGVzLiAgTWV0YU1vZGVzIGFyZSByZXR1cm5lZCBpbiBhIGJ1ZmZlciBzZXBhcmF0ZWQgYnkg
YQorICogc2luZ2xlICdcMCcgYW5kIHRlcm1pbmF0ZWQgYnkgdHdvIGNvbnNlY3V0aXZlICdcMCcg
cyBsaWtlIHNvOgorICoKKyAqICAiTWV0YU1vZGUgMVwwTWV0YU1vZGUgMlwwTWV0YU1vZGUgM1ww
TGFzdCBNZXRhTW9kZVwwXDAiCisgKgorICogVGhlIE1ldGFNb2RlIHN0cmluZyBzaG91bGQgaGF2
ZSB0aGUgc2FtZSBzeW50YXggYXMgdGhlIE1ldGFNb2RlIFgKKyAqIGNvbmZpZ3VyYXRpb24gb3B0
aW9uLCBhcyBkb2N1bWVudGVkIGluIHRoZSBOVklESUEgZHJpdmVyIFJFQURNRS4KKworICogRWFj
aCBNZXRhTW9kZSBzdHJpbmcgbWF5IGJlIHByZXBlbmRlZCB3aXRoIGEgY29tbWEtc2VwYXJhdGVk
IGxpc3QKKyAqIG9mICJ0b2tlbj12YWx1ZSIgcGFpcnMsIHNlcGFyYXRlZCBmcm9tIHRoZSBNZXRh
TW9kZSBzdHJpbmcgd2l0aAorICogIjo6Ii4gIEN1cnJlbnRseSwgdmFsaWQgdG9rZW5zIGFyZToK
KyAqCisgKiAgICBUb2tlbiAgICAgICAgVmFsdWUKKyAqICAgImlkIiAgICAgICAgIDxudW1iZXI+
ICAgICAtIHRoZSBpZCBvZiB0aGlzIE1ldGFNb2RlOyB0aGlzIGlzIHN0b3JlZCBpbgorICogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFZlcnRpY2FsIFJlZnJlc2ggZmllbGQsIGFz
IHZpZXdlZAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgdGhlIFhSYW5kUiBh
bmQgWEY4NlZpZE1vZGUgWCAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRl
bnNpb25zLgorICoKKyAqICAgInN3aXRjaGFibGUiICJ5ZXMiLyJubyIgICAtIHdoZXRoZXIgdGhp
cyBNZXRhTW9kZSBtYXkgYmUgc3dpdGNoZWQgdG8gdmlhCisgKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjdHJsLWFsdC0rLy07IEltcGxpY2l0IE1ldGFNb2RlcyAoc2VlCisgKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgIkluY2x1ZGVJbXBsaWNpdE1ldGFNb2RlcyIg
WAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnIG9wdGlvbiksIGZvciBl
eGFtcGxlLCBhcmUgbm90CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxs
eSBtYWRlIGF2YWlsYWJsZSB0aHJvdWdoCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjdHJsLWFsdC0rLy0uCisgKgorICogICAic291cmNlIiAgICAgInhjb25maWciICAgIC0gdGhl
IE1ldGFNb2RlIHdhcyBzcGVjaWZpZWQgaW4gdGhlIFgKKyAqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbmZpZyBmaWxlLgorICogICAgICAgICAgICAgICAgImltcGxpY2l0IiAgIC0g
dGhlIE1ldGFNb2RlIHdhcyBpbXBsaWNpdGx5IGFkZGVkOyBzZWUgdGhlCisgKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiSW5jbHVkZUltcGxpY2l0TWV0YU1vZGVzIiBYIGNvbmZpZyBv
cHRpb24KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBkZXRhaWxzLgorICog
ICAgICAgICAgICAgICAgIm52LWNvbnRyb2wiIC0gdGhlIE1ldGFNb2RlIHdhcyBhZGRlZCB2aWEg
dGhlIE5WLUNPTlRST0wgWAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5z
aW9uIHRvIHRoZSBjdXJyZW50bHkgcnVubmluZyBYIHNlcnZlci4KKyAqICAgICAgICAgICAgICAg
ICJSYW5kUiIgICAgICAtIHRoZSBNZXRhTW9kZSB3YXMgbW9kaWZpZWQgaW4gcmVzcG9uc2UgdG8g
YW4KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhbmRSIFJSU2V0Q3J0Y0NvbmZp
ZyByZXF1ZXN0LgorICoKKyAqIEFkZGl0aW9uYWwgdG9rZW5zIG1heSBiZSBhZGRlZCBpbiB0aGUg
ZnV0dXJlLCBzbyBpdCBpcyByZWNvbW1lbmRlZAorICogdGhhdCBhbnkgdG9rZW4gcGFyc2VyIHBy
b2Nlc3NpbmcgdGhlIHJldHVybmVkIHN0cmluZyBmcm9tCisgKiBOVl9DVFJMX0JJTkFSWV9EQVRB
X01FVEFNT0RFUyBiZSBpbXBsZW1lbnRlZCB0byBncmFjZWZ1bGx5IGlnbm9yZQorICogdW5yZWNv
Z25pemVkIHRva2Vucy4KKyAqCisgKiBFLmcuLAorICoKKyAqICAgImlkPTUwLCBzd2l0Y2hhYmxl
PXllcywgc291cmNlPXhjb25maWcgOjogQ1JULTA6IDEwMjR4NzY4IEAxMDI0eDc2OCArMCswIgor
ICovCisKKyNkZWZpbmUgTlZfQ1RSTF9CSU5BUllfREFUQV9NRVRBTU9ERVMgMiAvKiBSLUQtICov
CisjZGVmaW5lIE5WX0NUUkxfQklOQVJZX0RBVEFfTUVUQU1PREVTX1ZFUlNJT05fMSBOVl9DVFJM
X0JJTkFSWV9EQVRBX01FVEFNT0RFUworCisvKgorICogTlZfQ1RSTF9CSU5BUllfREFUQV9YU0NS
RUVOU19VU0lOR19HUFUgLSBSZXR1cm5zIHRoZSBsaXN0IG9mIFgKKyAqIHNjcmVlbnMgY3VycmVu
dGx5IGRyaXZlbiBieSB0aGUgZ2l2ZW4gR1BVLgorICoKKyAqIFRoZSBmb3JtYXQgb2YgdGhlIHJl
dHVybmVkIGRhdGEgaXM6CisgKgorICogICAgIDQgICAgICAgQ0FSRDMyIG51bWJlciBvZiBzY3Jl
ZW5zCisgKiAgICAgNCAqIG4gICBDQVJEMzIgc2NyZWVuIGluZGljZXMKKyAqCisgKiBUaGlzIGF0
dHJpYnV0ZSBjYW4gb25seSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0Qmlu
YXJ5RGF0YSgpCisgKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfR1BVIHRhcmdldC4gIFRo
aXMgYXR0cmlidXRlIGNhbm5vdCBiZQorICogcXVlcmllZCB1c2luZyBhIE5WX0NUUkxfVEFSR0VU
X1RZUEVfWF9TQ1JFRU4uCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0JJTkFSWV9EQVRBX1hTQ1JF
RU5TX1VTSU5HX0dQVSAzIC8qIFItREcgKi8KKworLyoKKyAqIE5WX0NUUkxfQklOQVJZX0RBVEFf
R1BVU19VU0VEX0JZX1hTQ1JFRU4gLSBSZXR1cm5zIHRoZSBsaXN0IG9mIEdQVXMKKyAqIGN1cnJl
bnRseSBpbiB1c2UgYnkgdGhlIGdpdmVuIFggc2NyZWVuLgorICoKKyAqIFRoZSBmb3JtYXQgb2Yg
dGhlIHJldHVybmVkIGRhdGEgaXM6CisgKgorICogICAgIDQgICAgICAgQ0FSRDMyIG51bWJlciBv
ZiBHUFVzCisgKiAgICAgNCAqIG4gICBDQVJEMzIgR1BVIGluZGljZXMKKyAqLworCisjZGVmaW5l
IE5WX0NUUkxfQklOQVJZX0RBVEFfR1BVU19VU0VEX0JZX1hTQ1JFRU4gNCAvKiBSLS0tICovCisK
Ky8qCisgKiBOVl9DVFJMX0JJTkFSWV9EQVRBX0dQVVNfVVNJTkdfRlJBTUVMT0NLIC0gUmV0dXJu
cyB0aGUgbGlzdCBvZgorICogR1BVcyBjdXJyZW50bHkgY29ubmVjdGVkIHRvIHRoZSBnaXZlbiBm
cmFtZSBsb2NrIGJvYXJkLgorICoKKyAqIFRoZSBmb3JtYXQgb2YgdGhlIHJldHVybmVkIGRhdGEg
aXM6CisgKgorICogICAgIDQgICAgICAgQ0FSRDMyIG51bWJlciBvZiBHUFVzCisgKiAgICAgNCAq
IG4gICBDQVJEMzIgR1BVIGluZGljZXMKKyAqCisgKiBUaGlzIGF0dHJpYnV0ZSBjYW4gb25seSBi
ZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QmluYXJ5RGF0YSgpCisgKiB1c2lu
ZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfRlJBTUVMT0NLIHRhcmdldC4gIFRoaXMgYXR0cmlidXRl
IGNhbm5vdCBiZQorICogcXVlcmllZCB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JF
RU4uCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0JJTkFSWV9EQVRBX0dQVVNfVVNJTkdfRlJBTUVM
T0NLIDUgLyogUi1ERiAqLworCisvKgorICogTlZfQ1RSTF9CSU5BUllfREFUQV9ESVNQTEFZX1ZJ
RVdQT1JUIC0gUmV0dXJucyB0aGUgRGlzcGxheSBEZXZpY2UncworICogdmlld3BvcnQgYm94IGlu
dG8gdGhlIGdpdmVuIFggU2NyZWVuIChpbiBYIFNjcmVlbiBjb29yZGluYXRlcy4pCisgKgorICog
VGhlIGZvcm1hdCBvZiB0aGUgcmV0dXJuZWQgZGF0YSBpczoKKyAqCisgKiAgICAgNCAgICAgICBD
QVJEMzIgT2Zmc2V0IFgKKyAqICAgICA0ICAgICAgIENBUkQzMiBPZmZzZXQgWQorICogICAgIDQg
ICAgICAgQ0FSRDMyIFdpZHRoCisgKiAgICAgNCAgICAgICBDQVJEMzIgSGVpZ2h0CisgKi8KKwor
I2RlZmluZSBOVl9DVFJMX0JJTkFSWV9EQVRBX0RJU1BMQVlfVklFV1BPUlQgNiAvKiBSLURHICov
CisKKy8qCisgKiBOVl9DVFJMX0JJTkFSWV9EQVRBX0ZSQU1FTE9DS1NfVVNFRF9CWV9HUFUgLSBS
ZXR1cm5zIHRoZSBsaXN0IG9mCisgKiBGcmFtZWxvY2sgZGV2aWNlcyBjdXJyZW50bHkgY29ubmVj
dGVkIHRvIHRoZSBnaXZlbiBHUFUuCisgKgorICogVGhlIGZvcm1hdCBvZiB0aGUgcmV0dXJuZWQg
ZGF0YSBpczoKKyAqCisgKiAgICAgNCAgICAgICBDQVJEMzIgbnVtYmVyIG9mIEZyYW1lbG9ja3MK
KyAqICAgICA0ICogbiAgIENBUkQzMiBGcmFtZWxvY2sgaW5kaWNlcworICoKKyAqIFRoaXMgYXR0
cmlidXRlIGNhbiBvbmx5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRCaW5h
cnlEYXRhKCkKKyAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9HUFUgdGFyZ2V0LiAgVGhp
cyBhdHRyaWJ1dGUgY2Fubm90IGJlCisgKiBxdWVyaWVkIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRf
VFlQRV9YX1NDUkVFTi4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfQklOQVJZX0RBVEFfRlJBTUVM
T0NLU19VU0VEX0JZX0dQVSA3IC8qIFItREcgKi8KKworLyoKKyAqIE5WX0NUUkxfQklOQVJZX0RB
VEFfR1BVU19VU0lOR19WQ1NDIC0gUmV0dXJucyB0aGUgbGlzdCBvZgorICogR1BVIGRldmljZXMg
Y29ubmVjdGVkIHRvIHRoZSBnaXZlbiBWQ1MuCisgKgorICogVGhlIGZvcm1hdCBvZiB0aGUgcmV0
dXJuZWQgZGF0YSBpczoKKyAqCisgKiAgICAgNCAgICAgICBDQVJEMzIgbnVtYmVyIG9mIEdQVXMK
KyAqICAgICA0ICogbiAgIENBUkQzMiBHUFUgaW5kaWNlcworICoKKyAqIFRoaXMgYXR0cmlidXRl
IGNhbiBvbmx5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRCaW5hcnlEYXRh
KCkKKyAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9WQ1NDIHRhcmdldC4gIFRoaXMgYXR0
cmlidXRlIGNhbm5vdCBiZQorICogcXVlcmllZCB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVf
WF9TQ1JFRU4gYW5kIGNhbm5vdCBiZSBxdWVyaWVkIHVzaW5nCisgKiBhICBOVl9DVFJMX1RBUkdF
VF9UWVBFX1hfR1BVCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0JJTkFSWV9EQVRBX0dQVVNfVVNJ
TkdfVkNTQyA4IC8qIFItRFYgKi8KKworLyoKKyAqIE5WX0NUUkxfQklOQVJZX0RBVEFfVkNTQ1Nf
VVNFRF9CWV9HUFUgLSBSZXR1cm5zIHRoZSBWQ1NDIGRldmljZQorICogdGhhdCBpcyBjb250cm9s
bGluZyB0aGUgZ2l2ZW4gR1BVLgorICoKKyAqIFRoZSBmb3JtYXQgb2YgdGhlIHJldHVybmVkIGRh
dGEgaXM6CisgKgorICogICAgIDQgICAgICAgQ0FSRDMyIG51bWJlciBvZiBWQ1MgKGFsd2F5cyAx
KQorICogICAgIDQgKiBuICAgQ0FSRDMyIFZDUyBpbmRpY2VzCisgKgorICogVGhpcyBhdHRyaWJ1
dGUgY2FuIG9ubHkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEJpbmFyeURh
dGEoKQorICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0dQVSB0YXJnZXQuICBUaGlzIGF0
dHJpYnV0ZSBjYW5ub3QgYmUKKyAqIHF1ZXJpZWQgdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBF
X1hfU0NSRUVOCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0JJTkFSWV9EQVRBX1ZDU0NTX1VTRURf
QllfR1BVIDkgLyogUi1ERyAqLworCisvKgorICogTlZfQ1RSTF9CSU5BUllfREFUQV9DT09MRVJT
X1VTRURfQllfR1BVIC0gUmV0dXJucyB0aGUgY29vbGVycyB0aGF0CisgKiBhcmUgY29vbGluZyB0
aGUgZ2l2ZW4gR1BVLgorICoKKyAqIFRoZSBmb3JtYXQgb2YgdGhlIHJldHVybmVkIGRhdGEgaXM6
CisgKgorICogICAgIDQgICAgICAgQ0FSRDMyIG51bWJlciBvZiBDT09MRVIKKyAqICAgICA0ICog
biAgIENBUkQzMiBDT09MRVIgaW5kaWNlcworICoKKyAqIFRoaXMgYXR0cmlidXRlIGNhbiBvbmx5
IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRCaW5hcnlEYXRhKCkKKyAqIHVz
aW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9HUFUgdGFyZ2V0LiAgVGhpcyBhdHRyaWJ1dGUgY2Fu
bm90IGJlCisgKiBxdWVyaWVkIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTgor
ICovCisKKyNkZWZpbmUgTlZfQ1RSTF9CSU5BUllfREFUQV9DT09MRVJTX1VTRURfQllfR1BVIDEw
IC8qIFItREcgKi8KKworLyoKKyAqIE5WX0NUUkxfQklOQVJZX0RBVEFfR1BVU19VU0VEX0JZX0xP
R0lDQUxfWFNDUkVFTiAtIFJldHVybnMgdGhlIGxpc3Qgb2YKKyAqIEdQVXMgY3VycmVudGx5IGRy
aXZpbmcgdGhlIGdpdmVuIFggc2NyZWVuLiAgSWYgWGluZXJhbWEgaXMgZW5hYmxlZCwgdGhpcwor
ICogd2lsbCByZXR1cm4gYWxsIEdQVXMgdGhhdCBhcmUgZHJpdmluZyBhbnkgWCBzY3JlZW4uCisg
KgorICogVGhlIGZvcm1hdCBvZiB0aGUgcmV0dXJuZWQgZGF0YSBpczoKKyAqCisgKiAgICAgNCAg
ICAgICBDQVJEMzIgbnVtYmVyIG9mIEdQVXMKKyAqICAgICA0ICogbiAgIENBUkQzMiBHUFUgaW5k
aWNlcworICovCisKKyNkZWZpbmUgTlZfQ1RSTF9CSU5BUllfREFUQV9HUFVTX1VTRURfQllfTE9H
SUNBTF9YU0NSRUVOIDExIC8qIFItLS0gKi8KKworLyoKKyAqIE5WX0NUUkxfQklOQVJZX0RBVEFf
VEhFUk1BTF9TRU5TT1JTX1VTRURfQllfR1BVIC0gUmV0dXJucyB0aGUgc2Vuc29ycyB0aGF0Cisg
KiBhcmUgYXR0YWNoZWQgdG8gdGhlIGdpdmVuIEdQVS4KKyAqCisgKiBUaGUgZm9ybWF0IG9mIHRo
ZSByZXR1cm5lZCBkYXRhIGlzOgorICoKKyAqICAgICA0ICAgICAgIENBUkQzMiBudW1iZXIgb2Yg
U0VOU09SCisgKiAgICAgNCAqIG4gICBDQVJEMzIgU0VOU09SIGluZGljZXMKKyAqCisgKiBUaGlz
IGF0dHJpYnV0ZSBjYW4gb25seSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0
QmluYXJ5RGF0YSgpCisgKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfR1BVIHRhcmdldC4g
IFRoaXMgYXR0cmlidXRlIGNhbm5vdCBiZQorICogcXVlcmllZCB1c2luZyBhIE5WX0NUUkxfVEFS
R0VUX1RZUEVfWF9TQ1JFRU4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfQklOQVJZX0RBVEFfVEhF
Uk1BTF9TRU5TT1JTX1VTRURfQllfR1BVIDEyIC8qIFItLUcgKi8KKworLyoKKyAqIE5WX0NUUkxf
QklOQVJZX0RBVEFfR0xBU1NFU19QQUlSRURfVE9fM0RfVklTSU9OX1BST19UUkFOU0NFSVZFUiAt
IFJldHVybnMKKyAqIHRoZSBpZCBvZiB0aGUgZ2xhc3NlcyB0aGF0IGFyZSBjdXJyZW50bHkgcGFp
cmVkIHRvIHRoZSBnaXZlbgorICogM0QgVmlzaW9uIFBybyB0cmFuc2NlaXZlci4KKyAqCisgKiBU
aGUgZm9ybWF0IG9mIHRoZSByZXR1cm5lZCBkYXRhIGlzOgorICoKKyAqICAgICA0ICAgICAgIENB
UkQzMiBudW1iZXIgb2YgZ2xhc3NlcworICogICAgIDQgKiBuICAgQ0FSRDMyIGlkIG9mIGdsYXNz
ZXMKKyAqCisgKiBUaGlzIGF0dHJpYnV0ZSBjYW4gb25seSBiZSBxdWVyaWVkIHRocm91Z2ggWE5W
Q1RSTFF1ZXJ5VGFyZ2V0QmluYXJ5RGF0YSgpCisgKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZ
UEVfM0RfVklTSU9OX1BST19UUkFOU0NFSVZFUiB0YXJnZXQuCisgKi8KKyNkZWZpbmUgTlZfQ1RS
TF9CSU5BUllfREFUQV9HTEFTU0VTX1BBSVJFRF9UT18zRF9WSVNJT05fUFJPX1RSQU5TQ0VJVkVS
IDEzIC8qIFItLVQgKi8KKworLyoKKyAqIE5WX0NUUkxfQklOQVJZX0RBVEFfRElTUExBWV9UQVJH
RVRTIC0gUmV0dXJucyBhbGwgdGhlIGRpc3BsYXkgZGV2aWNlcworICogY3VycmVudGx5IGNvbm5l
Y3RlZCB0byBhbnkgR1BVIG9uIHRoZSBYIHNlcnZlci4KKyAqCisgKiBUaGUgZm9ybWF0IG9mIHRo
ZSByZXR1cm5lZCBkYXRhIGlzOgorICoKKyAqICAgICA0ICAgICAgIENBUkQzMiBudW1iZXIgb2Yg
ZGlzcGxheSBkZXZpY2VzCisgKiAgICAgNCAqIG4gICBDQVJEMzIgZGlzcGxheSBkZXZpY2UgaW5k
aWNlcworICoKKyAqIFRoaXMgYXR0cmlidXRlIGNhbiBvbmx5IGJlIHF1ZXJpZWQgdGhyb3VnaCBY
TlZDVFJMUXVlcnlUYXJnZXRCaW5hcnlEYXRhKCkuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0JJ
TkFSWV9EQVRBX0RJU1BMQVlfVEFSR0VUUyAxNCAvKiBSLS0tICovCisKKy8qCisgKiBOVl9DVFJM
X0JJTkFSWV9EQVRBX0RJU1BMQVlTX0NPTk5FQ1RFRF9UT19HUFUgLSBSZXR1cm5zIHRoZSBsaXN0
IG9mCisgKiBkaXNwbGF5IGRldmljZXMgdGhhdCBhcmUgY29ubmVjdGVkIHRvIHRoZSBHUFUgdGFy
Z2V0LgorICoKKyAqIFRoZSBmb3JtYXQgb2YgdGhlIHJldHVybmVkIGRhdGEgaXM6CisgKgorICog
ICAgIDQgICAgICAgQ0FSRDMyIG51bWJlciBvZiBkaXNwbGF5IGRldmljZXMKKyAqICAgICA0ICog
biAgIENBUkQzMiBkaXNwbGF5IGRldmljZSBpbmRpY2VzCisgKgorICogVGhpcyBhdHRyaWJ1dGUg
Y2FuIG9ubHkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEJpbmFyeURhdGEo
KQorICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0dQVSB0YXJnZXQuCisgKi8KKworI2Rl
ZmluZSBOVl9DVFJMX0JJTkFSWV9EQVRBX0RJU1BMQVlTX0NPTk5FQ1RFRF9UT19HUFUgMTUgLyog
Ui0tRyAqLworCisvKgorICogTlZfQ1RSTF9CSU5BUllfREFUQV9NRVRBTU9ERVNfVkVSU0lPTl8y
ICAtIFJldHVybnMgdmFsdWVzIHNpbWlsYXIgdG8KKyAqIE5WX0NUUkxfQklOQVJZX0RBVEFfTUVU
QU1PREVTKF9WRVJTSU9OXzEpIGJ1dCBhbHNvIHJldHVybnMgZXh0ZW5kZWQgc3ludGF4CisgKiBp
bmZvcm1hdGlvbiB0byBpbmRpY2F0ZSBhIHNwZWNpZmljIGRpc3BsYXkgZGV2aWNlLCBhcyB3ZWxs
IGFzIG90aGVyIHBlci0KKyAqIGRpc3BsYXkgZGV2aWNlZmxhZ3MgYXMgInRva2VuPXZhbHVlIiBw
YWlycy4gIEZvciBleGFtcGxlOgorICoKKyAqICAgIkRQWS0xOiAxMjgweDEwMjQge1N0ZXJlbz1Q
YXNzaXZlTGVmdH0sCisgKiAgICBEUFktMjogMTI4MHgxMDI0IHtTdGVyZW89UGFzc2l2ZVJpZ2h0
fSwiCisgKgorICogVGhlIGRpc3BsYXkgZGV2aWNlIG5hbWVzIGhhdmUgdGhlIGZvcm0gIkRQWS0l
ZCIsIHdoZXJlIHRoZSBpbnRlZ2VyCisgKiBwYXJ0IG9mIHRoZSBuYW1lIGlzIHRoZSBOVi1DT05U
Uk9MIHRhcmdldCBJRCBmb3IgdGhhdCBkaXNwbGF5IGRldmljZQorICogZm9yIHRoaXMgaW5zdGFu
Y2Ugb2YgdGhlIFggc2VydmVyLiAgTm90ZSB0aGF0IGRpc3BsYXkgZGV2aWNlIE5WLUNPTlRST0wK
KyAqIHRhcmdldCBJRHMgYXJlIG5vdCBndWFyYW50ZWVkIHRvIGJlIHRoZSBzYW1lIGZyb20gb25l
IHJ1biBvZiB0aGUgWAorICogc2VydmVyIHRvIHRoZSBuZXh0LgorICovCisKKyNkZWZpbmUgTlZf
Q1RSTF9CSU5BUllfREFUQV9NRVRBTU9ERVNfVkVSU0lPTl8yIDE2IC8qIFItRC0gKi8KKworLyoK
KyAqIE5WX0NUUkxfQklOQVJZX0RBVEFfRElTUExBWVNfRU5BQkxFRF9PTl9YU0NSRUVOIC0gUmV0
dXJucyB0aGUgbGlzdCBvZgorICogZGlzcGxheSBkZXZpY2VzIHRoYXQgYXJlIGN1cnJlbnRseSBz
Y2FubmluZyBvdXQgdGhlIFggc2NyZWVuIHRhcmdldC4KKyAqCisgKiBUaGUgZm9ybWF0IG9mIHRo
ZSByZXR1cm5lZCBkYXRhIGlzOgorICoKKyAqICAgICA0ICAgICAgIENBUkQzMiBudW1iZXIgb2Yg
ZGlzcGxheSBkZXZpY2VzCisgKiAgICAgNCAqIG4gICBDQVJEMzIgZGlzcGxheSBkZXZpY2UgaW5k
aWNlcworICoKKyAqIFRoaXMgYXR0cmlidXRlIGNhbiBvbmx5IGJlIHF1ZXJpZWQgdGhyb3VnaCBY
TlZDVFJMUXVlcnlUYXJnZXRCaW5hcnlEYXRhKCkKKyAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRf
VFlQRV9YX1NDUkVFTiB0YXJnZXQuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0JJTkFSWV9EQVRB
X0RJU1BMQVlTX0VOQUJMRURfT05fWFNDUkVFTiAxNyAvKiBSLS0tICovCisKKyNkZWZpbmUgTlZf
Q1RSTF9CSU5BUllfREFUQV9MQVNUX0FUVFJJQlVURSBOVl9DVFJMX0JJTkFSWV9EQVRBX0RJU1BM
QVlTX0VOQUJMRURfT05fWFNDUkVFTgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBT
dHJpbmcgT3BlcmF0aW9uIEF0dHJpYnV0ZXM6CisgKgorICogVGhlc2UgYXR0cmlidXRlcyBhcmUg
dXNlZCB3aXRoIHRoZSBYTlZDVFJMU3RyaW5nT3BlcmF0aW9uKCkKKyAqIGZ1bmN0aW9uOyBhIHN0
cmluZyBpcyBzcGVjaWZpZWQgYXMgaW5wdXQsIGFuZCBhIHN0cmluZyBpcyByZXR1cm5lZAorICog
YXMgb3V0cHV0LgorICoKKyAqIFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIGFsbCBhdHRyaWJ1dGVz
IGNhbiBiZSBvcGVyYXRlZCB1cG9uIHVzaW5nCisgKiBhbiBOVl9DVFJMX1RBUkdFVF9UWVBFX1hf
U0NSRUVOIHRhcmdldC4KKyAqLworCisvKgorICogTlZfQ1RSTF9TVFJJTkdfT1BFUkFUSU9OX0FE
RF9NRVRBTU9ERSAtIHByb3ZpZGUgYSBNZXRhTW9kZSBzdHJpbmcKKyAqIGFzIGlucHV0LCBhbmQg
cmV0dXJucyBhIHN0cmluZyBjb250YWluaW5nIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mCisgKiAi
dG9rZW49dmFsdWUiIHBhaXJzIGFzIG91dHB1dC4gIEN1cnJlbnRseSwgdGhlIG9ubHkgb3V0cHV0
IHRva2VuIGlzCisgKiAiaWQiLCB3aGljaCBpbmRpY2F0ZXMgdGhlIGlkIHRoYXQgd2FzIGFzc2ln
bmVkIHRvIHRoZSBNZXRhTW9kZS4KKyAqCisgKiBBbGwgTW9kZUxpbmVzIHJlZmVyZW5jZWQgaW4g
dGhlIE1ldGFNb2RlIG11c3QgYWxyZWFkeSBleGlzdCBmb3IKKyAqIGVhY2ggZGlzcGxheSBkZXZp
Y2UgKGFzIHJldHVybmVkIGJ5IHRoZQorICogTlZfQ1RSTF9CSU5BUllfREFUQV9NT0RFTElORVMg
YXR0cmlidXRlKS4KKyAqCisgKiBUaGUgTWV0YU1vZGUgc3RyaW5nIHNob3VsZCBoYXZlIHRoZSBz
YW1lIHN5bnRheCBhcyB0aGUgTWV0YU1vZGUgWAorICogY29uZmlndXJhdGlvbiBvcHRpb24sIGFz
IGRvY3VtZW50ZWQgaW4gdGhlIE5WSURJQSBkcml2ZXIgUkVBRE1FLgorICoKKyAqIFRoZSBpbnB1
dCBzdHJpbmcgY2FuIG9wdGlvbmFsbHkgYmUgcHJlcGVuZGVkIHdpdGggYSBzdHJpbmcgb2YKKyAq
IGNvbW1hLXNlcGFyYXRlZCAidG9rZW49dmFsdWUiIHBhaXJzLCBzZXBhcmF0ZWQgZnJvbSB0aGUg
TWV0YU1vZGUKKyAqIHN0cmluZyBieSAiOjoiLiAgQ3VycmVudGx5LCB0aGUgb25seSB2YWxpZCB0
b2tlbiBpcyAiaW5kZXgiIHdoaWNoCisgKiBpbmRpY2F0ZXMgdGhlIGluc2VydGlvbiBpbmRleCBm
b3IgdGhlIE1ldGFNb2RlLgorICoKKyAqIEUuZy4sCisgKgorICogSW5wdXQ6ICJpbmRleD01IDo6
IDE2MDB4MTIwMCswKzAsIDE2MDB4MTIwMCsxNjAwKzAiCisgKiBPdXRwdXQ6ICJpZD01OCIKKyAq
CisgKiB3aGljaCBjYXVzZXMgdGhlIE1ldGFNb2RlIHRvIGJlIGluc2VydGVkIGF0IHBvc2l0aW9u
IDUgaW4gdGhlCisgKiBNZXRhTW9kZSBsaXN0IChhbGwgZW50cmllcyBhZnRlciA1IHdpbGwgYmUg
c2hpZnRlZCBkb3duIG9uZSBzbG90IGluCisgKiB0aGUgbGlzdCksIGFuZCB0aGUgWCBzZXJ2ZXIn
cyBjb250YWluaW5nIG1vZGUgc3RvcmVzIDU4IGFzIHRoZQorICogVlJlZnJlc2gsIHNvIHRoYXQg
dGhlIE1ldGFNb2RlIGNhbiBiZSB1bmlxdWVseSBpZGVudGlmZWQgdGhyb3VnaAorICogWFJhbmRS
IGFuZCBYRjg2VmlkTW9kZS4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfU1RSSU5HX09QRVJBVElP
Tl9BRERfTUVUQU1PREUgMAorCisvKgorICogTlZfQ1RSTF9TVFJJTkdfT1BFUkFUSU9OX0dURl9N
T0RFTElORSAtIHByb3ZpZGUgYXMgaW5wdXQgYSBzdHJpbmcKKyAqIG9mIGNvbW1hLXNlcGFyYXRl
ZCAidG9rZW49dmFsdWUiIHBhaXJzLCBhbmQgcmV0dXJucyBhIE1vZGVMaW5lCisgKiBzdHJpbmcs
IGNvbXB1dGVkIHVzaW5nIHRoZSBHVEYgZm9ybXVsYSB1c2luZyB0aGUgcGFyYW1ldGVycyBmcm9t
CisgKiB0aGUgaW5wdXQgc3RyaW5nLiAgVmFsaWQgdG9rZW5zIGZvciB0aGUgaW5wdXQgc3RyaW5n
IGFyZSAid2lkdGgiLAorICogImhlaWdodCIsIGFuZCAicmVmcmVzaHJhdGUiLgorICoKKyAqIEUu
Zy4sCisgKgorICogSW5wdXQ6ICJ3aWR0aD0xNjAwLCBoZWlnaHQ9MTIwMCwgcmVmcmVzaHJhdGU9
NjAiCisgKiBPdXRwdXQ6ICIxNjAuOTYgIDE2MDAgMTcwNCAxODgwIDIxNjAgIDEyMDAgMTIwMSAx
MjA0IDEyNDIgIC1IU3luYyArVlN5bmMiCisgKgorICogVGhpcyBvcGVyYXRpb24gZG9lcyBub3Qg
aGF2ZSBhbnkgaW1wYWN0IG9uIGFueSBkaXNwbGF5IGRldmljZSdzCisgKiBtb2RlUG9vbCwgYW5k
IHRoZSBNb2RlTGluZSBpcyBub3QgdmFsaWRhdGVkOyBpdCBpcyBzaW1wbHkgaW50ZW5kZWQKKyAq
IGZvciBnZW5lcmF0aW5nIE1vZGVMaW5lcy4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfU1RSSU5H
X09QRVJBVElPTl9HVEZfTU9ERUxJTkUgMQorCisvKgorICogTlZfQ1RSTF9TVFJJTkdfT1BFUkFU
SU9OX0NWVF9NT0RFTElORSAtIHByb3ZpZGUgYXMgaW5wdXQgYSBzdHJpbmcKKyAqIG9mIGNvbW1h
LXNlcGFyYXRlZCAidG9rZW49dmFsdWUiIHBhaXJzLCBhbmQgcmV0dXJucyBhIE1vZGVMaW5lCisg
KiBzdHJpbmcsIGNvbXB1dGVkIHVzaW5nIHRoZSBDVlQgZm9ybXVsYSB1c2luZyB0aGUgcGFyYW1l
dGVycyBmcm9tCisgKiB0aGUgaW5wdXQgc3RyaW5nLiAgVmFsaWQgdG9rZW5zIGZvciB0aGUgaW5w
dXQgc3RyaW5nIGFyZSAid2lkdGgiLAorICogImhlaWdodCIsICJyZWZyZXNocmF0ZSIsIGFuZCAi
cmVkdWNlZC1ibGFua2luZyIuICBUaGUKKyAqICJyZWR1Y2VkLWJsYW5raW5nIiBhcmd1bWVudCBj
YW4gYmUgIjAiIG9yICIxIiwgdG8gZW5hYmxlIG9yIGRpc2FibGUKKyAqIHVzZSBvZiByZWR1Y2Vk
IGJsYW5raW5nIGZvciB0aGUgQ1ZUIGZvcm11bGEuCisgKgorICogRS5nLiwKKyAqCisgKiBJbnB1
dDogIndpZHRoPTE2MDAsIGhlaWdodD0xMjAwLCByZWZyZXNocmF0ZT02MCwgcmVkdWNlZC1ibGFu
a2luZz0xIgorICogT3V0cHV0OiAiMTMwLjI1ICAxNjAwIDE2NDggMTY4MCAxNzYwICAxMjAwIDEy
MDMgMTIwNyAxMjM1ICArSFN5bmMgLVZTeW5jIgorICoKKyAqIFRoaXMgb3BlcmF0aW9uIGRvZXMg
bm90IGhhdmUgYW55IGltcGFjdCBvbiBhbnkgZGlzcGxheSBkZXZpY2UncworICogbW9kZVBvb2ws
IGFuZCB0aGUgTW9kZUxpbmUgaXMgbm90IHZhbGlkYXRlZDsgaXQgaXMgc2ltcGx5IGludGVuZGVk
CisgKiBmb3IgZ2VuZXJhdGluZyBNb2RlTGluZXMuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX1NU
UklOR19PUEVSQVRJT05fQ1ZUX01PREVMSU5FIDIKKworLyoKKyAqIE5WX0NUUkxfU1RSSU5HX09Q
RVJBVElPTl9CVUlMRF9NT0RFUE9PTCAtIGJ1aWxkIGEgTW9kZVBvb2wgZm9yIHRoZQorICogc3Bl
Y2lmaWVkIGRpc3BsYXkgZGV2aWNlIG9uIHRoZSBzcGVjaWZpZWQgdGFyZ2V0IChlaXRoZXIgYW4g
WAorICogc2NyZWVuIG9yIGEgR1BVKS4gIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgdG8gZ2VuZXJh
dGUgYSBNb2RlUG9vbAorICogZm9yIGEgZGlzcGxheSBkZXZpY2Ugb24gYSBHUFUgb24gd2hpY2gg
bm8gWCBzY3JlZW5zIGFyZSBwcmVzZW50LgorICoKKyAqIEN1cnJlbnRseSwgYSBkaXNwbGF5IGRl
dmljZSdzIE1vZGVQb29sIGlzIHN0YXRpYyBmb3IgdGhlIGxpZmUgb2YKKyAqIHRoZSBYIHNlcnZl
ciwgc28gWE5WQ1RSTFN0cmluZ09wZXJhdGlvbiB3aWxsIHJldHVybiBGQUxTRSBpZgorICogcmVx
dWVzdGVkIHRvIGJ1aWxkIGEgTW9kZVBvb2wgb24gYSBkaXNwbGF5IGRldmljZSB0aGF0IGFscmVh
ZHkgaGFzCisgKiBhIE1vZGVQb29sLgorICoKKyAqIFRoZSBzdHJpbmcgaW5wdXQgdG8gQlVJTERf
TU9ERVBPT0wgbWF5IGJlIE5VTEwuICBJZiBpdCBpcyBub3QgTlVMTCwKKyAqIHRoZW4gaXQgaXMg
aW50ZXJwcmV0ZWQgYXMgYSBkb3VibGUtY29sb24gKCI6OiIpIHNlcGFyYXRlZCBsaXN0CisgKiBv
ZiAib3B0aW9uPXZhbHVlIiBwYWlycywgd2hlcmUgdGhlIG9wdGlvbnMgYW5kIHRoZSBzeW50YXgg
b2YgdGhlaXIKKyAqIHZhbHVlcyBhcmUgdGhlIFggY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQg
aW1wYWN0IHRoZSBiZWhhdmlvciBvZgorICogbW9kZVBvb2wgY29uc3RydWN0aW9uOyBuYW1lbHk6
CisgKgorICogICAgIk1vZGVWYWxpZGF0aW9uIgorICogICAgIkhvcml6U3luYyIKKyAqICAgICJW
ZXJ0UmVmcmVzaCIKKyAqICAgICJGbGF0UGFuZWxQcm9wZXJ0aWVzIgorICogICAgIlRWU3RhbmRh
cmQiCisgKiAgICAiRXhhY3RNb2RlVGltaW5nc0RWSSIKKyAqICAgICJVc2VFZGlkRnJlcXMiCisg
KgorICogQW4gZXhhbXBsZSBpbnB1dCBzdHJpbmcgbWlnaHQgbG9vayBsaWtlOgorICoKKyAqICAg
Ik1vZGVWYWxpZGF0aW9uPU5vVmVzYU1vZGVzIDo6IEhvcml6U3luYz01MC0xMTAgOjogVmVydFJl
ZnJlc2g9NTAtMTUwIgorICoKKyAqIFRoaXMgcmVxdWVzdCBjdXJyZW50bHkgZG9lcyBub3QgcmV0
dXJuIGEgc3RyaW5nLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfT1BFUkFUSU9OX0JV
SUxEX01PREVQT09MIDMgLyogREcgKi8KKworLyoKKyAqIE5WX0NUUkxfU1RSSU5HX09QRVJBVElP
Tl9HVklfQ09ORklHVVJFX1NUUkVBTVMgLSBDb25maWd1cmUgdGhlIHN0cmVhbXMtCisgKiB0by1q
YWNrK2NoYW5uZWwgdG9wb2xvZ3kgZm9yIGEgR1ZJIChHcmFwaGljcyBjYXB0dXJlIGJvYXJkKS4K
KyAqCisgKiBUaGUgc3RyaW5nIGlucHV0IHRvIEdWSV9DT05GSUdVUkVfU1RSRUFNUyBtYXkgYmUg
TlVMTC4gIElmIHRoaXMgaXMgdGhlCisgKiBjYXNlLCB0aGVuIHRoZSBjdXJyZW50IHRvcG9sb2d5
IGlzIHJldHVybmVkLgorICoKKyAqIElmIHRoZSBpbnB1dCBzdHJpbmcgdG8gR1ZJX0NPTkZJR1VS
RV9TVFJFQU1TIGlzIG5vdCBOVUxMLCB0aGUgc3RyaW5nCisgKiBpcyBpbnRlcnByZXRlZCBhcyBh
IHNlbWljb2xvbiAoIjsiKSBzZXBhcmF0ZWQgbGlzdCBvZiBjb21tYS1zZXBhcmF0ZWQKKyAqIGxp
c3RzIG9mICJvcHRpb249dmFsdWUiIHBhaXJzIHRoYXQgZGVmaW5lIGEgc3RyZWFtJ3MgY29tcG9z
aXRpb24uICBUaGUKKyAqIGF2YWlsYWJsZSBvcHRpb25zIGFuZCB0aGVpciB2YWx1ZXMgYXJlOgor
ICoKKyAqICAgInN0cmVhbSI6IERlZmluZXMgd2hpY2ggc3RyZWFtIHRoaXMgY29tbWEtc2VwYXJh
dGVkIGxpc3QgZGVzY3JpYmVzLgorICogICAgICAgICAgICAgVmFsaWQgdmFsdWVzIGFyZSB0aGUg
aW50ZWdlcnMgYmV0d2VlbiAwIGFuZAorICogICAgICAgICAgICAgTlZfQ1RSTF9HVklfTlVNX1NU
UkVBTVMtMSAoaW5jbHVzaXZlKS4KKyAqCisgKiAgICJsaW5rTiI6ICBEZWZpbmVzIGEgamFjaytj
aGFubmVsIHBhaXIgdG8gdXNlIGZvciB0aGUgZ2l2ZW4gbGluayBOLgorICogICAgICAgICAgICAg
VmFsaWQgb3B0aW9ucyBhcmUgdGhlIHN0cmluZyAibGlua04iLCB3aGVyZSBOIGlzIGFuIGludGVn
ZXIKKyAqICAgICAgICAgICAgIGJldHdlZW4gMCBhbmQgTlZfQ1RSTF9HVklfTUFYX0xJTktTX1BF
Ul9TVFJFQU0tMSAoaW5jbHVzaXZlKS4KKyAqICAgICAgICAgICAgIFZhbGlkIHZhbHVlcyBmb3Ig
dGhlc2Ugb3B0aW9ucyBhcmUgc3RyaW5ncyBvZiB0aGUgZm9ybQorICogICAgICAgICAgICAgImph
Y2tYIiBhbmQvb3IgImphY2tYLlkiLCB3aGVyZSBYIGlzIGFuIGludGVnZXIgYmV0d2VlbiAwIGFu
ZAorICogICAgICAgICAgICAgTlZfQ1RSTF9HVklfTlVNX0pBQ0tTLTEgKGluY2x1c2l2ZSksIGFu
ZCBZIChvcHRpb25hbCkgaXMgYW4KKyAqICAgICAgICAgICAgIGludGVnZXIgYmV0d2VlbiAwIGFu
ZCBOVl9DVFJMX0dWSV9NQVhfQ0hBTk5FTFNfUEVSX0pBQ0stMQorICogICAgICAgICAgICAgKGlu
Y2x1c2l2ZSkuCisgKgorICogQW4gZXhhbXBsZSBpbnB1dCBzdHJpbmcgbWlnaHQgbG9vayBsaWtl
OgorICoKKyAqICAgInN0cmVhbT0wLCBsaW5rMD1qYWNrMCwgbGluazE9amFjazE7IHN0cmVhbT0x
LCBsaW5rMD1qYWNrMi4xIgorICoKKyAqICAgVGhpcyBleGFtcGxlIHNwZWNpZmllcyB0d28gc3Ry
ZWFtcywgc3RyZWFtIDAgYW5kIHN0cmVhbSAxLiAgU3RyZWFtIDAKKyAqICAgaXMgZGVmaW5lZCB0
byBjYXB0dXJlIGxpbmswIGRhdGEgZnJvbSB0aGUgZmlyc3QgY2hhbm5lbCAoY2hhbm5lbCAwKSBv
ZgorICogICBCTkMgamFjayAwIGFuZCBsaW5rMSBkYXRhIGZyb20gdGhlIGZpcnN0IGNoYW5uZWwg
b2YgQk5DIGphY2sgMS4gIFRoZQorICogICBzZWNvbmQgc3RyZWFtIChTdHJlYW0gMSkgaXMgZGVm
aW5lZCB0byBjYXB0dXJlIGxpbmswIGRhdGEgZnJvbSBjaGFubmVsIDEKKyAqICAgKHNlY29uZCBj
aGFubmVsKSBvZiBCTkMgamFjayAyLgorICoKKyAqIFRoaXMgZXhhbXBsZSBzaG93cyBhIHBvc3Np
YmxlIGNvbmZpZ3VyYXRpb24gZm9yIGNhcHR1cmluZyAzRyBpbnB1dDoKKyAqCisgKiAgICJzdHJl
YW09MCwgbGluazA9amFjazAuMCwgbGluazE9amFjazAuMSIKKyAqCisgKiBBcHBsaWNhdGlvbnMg
c2hvdWxkIHF1ZXJ5IHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyB0byBkZXRlcm1pbmUKKyAqIHBv
c3NpYmxlIGNvbWJpbmF0aW9uczoKKyAqCisgKiAgIE5WX0NUUkxfR1ZJX01BWF9TVFJFQU1TCisg
KiAgIE5WX0NUUkxfR1ZJX01BWF9MSU5LU19QRVJfU1RSRUFNCisgKiAgIE5WX0NUUkxfR1ZJX05V
TV9KQUNLUworICogICBOVl9DVFJMX0dWSV9NQVhfQ0hBTk5FTFNfUEVSX0pBQ0sKKyAqCisgKiBO
b3RlOiBBIGphY2srY2hhbm5lbCBwYWlyIGNhbiBvbmx5IGJlIHRpZWQgdG8gb25lIGxpbmsvc3Ry
ZWFtLgorICoKKyAqIFVwb24gc3VjY2Vzc2Z1bCBjb25maWd1cmF0aW9uIG9yIHF1ZXJ5aW5nIG9m
IHRoaXMgYXR0cmlidXRlLCBhIHN0cmluZworICogcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IHRv
cG9sb2d5IGZvciBhbGwga25vd24gc3RyZWFtcyBvbiB0aGUgZGV2aWNlCisgKiB3aWxsIGJlIHJl
dHVybmVkLiAgT24gZmFpbHVyZSwgTlVMTCBpcyByZXR1cm5lZC4KKyAqCisgKiBOb3RlOiBTZXR0
aW5nIHRoaXMgYXR0cmlidXRlIG1heSBhbHNvIHJlc3VsdCBpbiB0aGUgZm9sbG93aW5nCisgKiAg
ICAgICBOVi1DT05UUk9MIGF0dHJpYnV0ZXMgYmVpbmcgcmVzZXQgb24gdGhlIEdWSSBkZXZpY2Ug
KHRvIGVuc3VyZQorICogICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gcmVtYWlucyB2YWxpZCk6Cisg
KiAgICAgICAgICAgTlZfQ1RSTF9HVklPX1JFUVVFU1RFRF9WSURFT19GT1JNQVQKKyAqICAgICAg
ICAgICBOVl9DVFJMX0dWSV9SRVFVRVNURURfU1RSRUFNX0JJVFNfUEVSX0NPTVBPTkVOVAorICog
ICAgICAgICAgIE5WX0NUUkxfR1ZJX1JFUVVFU1RFRF9TVFJFQU1fQ09NUE9ORU5UX1NBTVBMSU5H
CisgKi8KKworI2RlZmluZSBOVl9DVFJMX1NUUklOR19PUEVSQVRJT05fR1ZJX0NPTkZJR1VSRV9T
VFJFQU1TIDQgLyogUlctSSAqLworCisjZGVmaW5lIE5WX0NUUkxfU1RSSU5HX09QRVJBVElPTl9M
QVNUX0FUVFJJQlVURSBOVl9DVFJMX1NUUklOR19PUEVSQVRJT05fR1ZJX0NPTkZJR1VSRV9TVFJF
QU1TCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIENUUkxBdHRyaWJ1dGVWYWxpZFZh
bHVlc1JlYyAtCisgKgorICogc3RydWN0dXJlIGFuZCByZWxhdGVkIGRlZmluZXMgdXNlZCBieQor
ICogWE5WQ1RSTFF1ZXJ5VmFsaWRBdHRyaWJ1dGVWYWx1ZXMoKSB0byBkZXNjcmliZSB0aGUgdmFs
aWQgdmFsdWVzIG9mCisgKiBhIHBhcnRpY3VsYXIgYXR0cmlidXRlLiAgVGhlIHR5cGUgZmllbGQg
d2lsbCBiZSBvbmUgb2Y6CisgKgorICogQVRUUklCVVRFX1RZUEVfSU5URUdFUiA6IHRoZSBhdHRy
aWJ1dGUgaXMgYW4gaW50ZWdlciB2YWx1ZTsgdGhlcmUKKyAqIGlzIG5vIGZpeGVkIHJhbmdlIG9m
IHZhbGlkIHZhbHVlcy4KKyAqCisgKiBBVFRSSUJVVEVfVFlQRV9CSVRNQVNLIDogdGhlIGF0dHJp
YnV0ZSBpcyBhbiBpbnRlZ2VyIHZhbHVlLAorICogaW50ZXJwcmV0dGVkIGFzIGEgYml0bWFzay4K
KyAqCisgKiBBVFRSSUJVVEVfVFlQRV9CT09MIDogdGhlIGF0dHJpYnV0ZSBpcyBhIGJvb2xlYW4s
IHZhbGlkIHZhbHVlcyBhcmUKKyAqIGVpdGhlciAxIChvbi90cnVlKSBvciAwIChvZmYvZmFsc2Up
LgorICoKKyAqIEFUVFJJQlVURV9UWVBFX1JBTkdFIDogdGhlIGF0dHJpYnV0ZSBjYW4gaGF2ZSBh
bnkgaW50ZWdlciB2YWx1ZQorICogYmV0d2VlbiBOVkNUUkxBdHRyaWJ1dGVWYWxpZFZhbHVlcy51
LnJhbmdlLm1pbiBhbmQKKyAqIE5WQ1RSTEF0dHJpYnV0ZVZhbGlkVmFsdWVzLnUucmFuZ2UubWF4
IChpbmNsdXNpdmUpLgorICoKKyAqIEFUVFJJQlVURV9UWVBFX0lOVF9CSVRTIDogdGhlIGF0dHJp
YnV0ZSBjYW4gb25seSBoYXZlIGNlcnRhaW4KKyAqIGludGVnZXIgdmFsdWVzLCBpbmRpY2F0ZWQg
Ynkgd2hpY2ggYml0cyBpbgorICogTlZDVFJMQXR0cmlidXRlVmFsaWRWYWx1ZXMudS5iaXRzLmlu
dHMgYXJlIG9uIChmb3IgZXhhbXBsZTogaWYgYml0CisgKiAwIGlzIG9uLCB0aGVuIDAgaXMgYSB2
YWxpZCB2YWx1ZTsgaWYgYml0IDUgaXMgb24sIHRoZW4gNSBpcyBhIHZhbGlkCisgKiB2YWx1ZSwg
ZXRjKS4gIFRoaXMgaXMgdXNlZnVsIGZvciBhdHRyaWJ1dGVzIGxpa2UgTlZfQ1RSTF9GU0FBX01P
REUsCisgKiB3aGljaCBjYW4gb25seSBoYXZlIGNlcnRhaW4gdmFsdWVzLCBkZXBlbmRpbmcgb24g
R1BVLgorICoKKyAqIEFUVFJJQlVURV9UWVBFXzY0QklUX0lOVEVHRVIgOiB0aGUgYXR0cmlidXRl
IGlzIGEgNjQgYml0IGludGVnZXIgdmFsdWU7CisgKiB0aGVyZSBpcyBubyBmaXhlZCByYW5nZSBv
ZiB2YWxpZCB2YWx1ZXMuCisgKgorICogQVRUUklCVVRFX1RZUEVfU1RSSU5HIDogdGhlIGF0dHJp
YnV0ZSBpcyBhIHN0cmluZyB2YWx1ZTsgdGhlcmUgaXMgbm8gZml4ZWQKKyAqIHJhbmdlIG9mIHZh
bGlkIHZhbHVlcy4KKyAqCisgKiBBVFRSSUJVVEVfVFlQRV9CSU5BUllfREFUQSA6IHRoZSBhdHRy
aWJ1dGUgaXMgYmluYXJ5IGRhdGE7IHRoZXJlIGlzCisgKiBubyBmaXhlZCByYW5nZSBvZiB2YWxp
ZCB2YWx1ZXMuCisgKgorICogQVRUUklCVVRFX1RZUEVfU1RSSU5HX09QRVJBVElPTiA6IHRoZSBh
dHRyaWJ1dGUgaXMgYSBzdHJpbmc7IHRoZXJlIGlzCisgKiBubyBmaXhlZCByYW5nZSBvZiB2YWxp
ZCB2YWx1ZXMuCisgKgorICoKKyAqIFRoZSBwZXJtaXNzaW9ucyBmaWVsZCBvZiBOVkNUUkxBdHRy
aWJ1dGVWYWxpZFZhbHVlc1JlYyBpcyBhIGJpdG1hc2sKKyAqIHRoYXQgbWF5IGNvbnRhaW46Cisg
KgorICogQVRUUklCVVRFX1RZUEVfUkVBRCAgICAgIC0gQXR0cmlidXRlIG1heSBiZSByZWFkIChx
dWVyaWVkLikKKyAqIEFUVFJJQlVURV9UWVBFX1dSSVRFICAgICAtIEF0dHJpYnV0ZSBtYXkgYmUg
d3JpdHRlbiB0byAoc2V0LikKKyAqIEFUVFJJQlVURV9UWVBFX0RJU1BMQVkgICAtIEF0dHJpYnV0
ZSBpcyB2YWxpZCBmb3IgZGlzcGxheSB0YXJnZXQgdHlwZXMKKyAqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChyZXF1aXJlcyBhIGRpc3BsYXlfbWFzayBpZiBxdWVyaWVkIHZpYQorICogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYSBHUFUgb3IgWCBzY3JlZW4uKQorICogQVRUUklCVVRF
X1RZUEVfR1BVICAgICAgIC0gQXR0cmlidXRlIGlzIHZhbGlkIGZvciBHUFUgdGFyZ2V0IHR5cGVz
LgorICogQVRUUklCVVRFX1RZUEVfRlJBTUVMT0NLIC0gQXR0cmlidXRlIGlzIHZhbGlkIGZvciBG
cmFtZSBMb2NrIHRhcmdldCB0eXBlcy4KKyAqIEFUVFJJQlVURV9UWVBFX1hfU0NSRUVOICAtIEF0
dHJpYnV0ZSBpcyB2YWxpZCBmb3IgWCBTY3JlZW4gdGFyZ2V0IHR5cGVzLgorICogQVRUUklCVVRF
X1RZUEVfWElORVJBTUEgIC0gQXR0cmlidXRlIHdpbGwgYmUgbWFkZSBjb25zaXN0ZW50IGZvciBh
bGwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIFggU2NyZWVucyB3aGVuIHRoZSBYaW5l
cmFtYSBleHRlbnNpb24gaXMgZW5hYmxlZC4KKyAqIEFUVFJJQlVURV9UWVBFX1ZDU0MgICAgICAt
IEF0dHJpYnV0ZSBpcyB2YWxpZCBmb3IgVmlzdWFsIENvbXB1dGluZyBTeXN0ZW0KKyAqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCB0eXBlcy4KKyAqIEFUVFJJQlVURV9UWVBFX0dW
SSAgICAgICAtIEF0dHJpYnV0ZSBpcyB2YWxpZCBmb3IgR3JhcGhpY3MgVmlkZW8gSW4gdGFyZ2V0
CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlcy4KKyAqIEFUVFJJQlVURV9UWVBF
X0NPT0xFUiAgICAtIEF0dHJpYnV0ZSBpcyB2YWxpZCBmb3IgQ29vbGVyIHRhcmdldCB0eXBlcy4K
KyAqIEFUVFJJQlVURV9UWVBFXzNEX1ZJU0lPTl9QUk9fVFJBTlNDRUlWRVIgLSBBdHRyaWJ1dGUg
aXMgdmFsaWQgZm9yIDNEIFZpc2lvbgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBybyBUcmFuc2NlaXZlciB0YXJnZXQgdHlwZXMuCisgKgorICogU2VlICdL
ZXkgdG8gSW50ZWdlciBBdHRyaWJ1dGUgIlBlcm1pc3Npb25zIicgYXQgdGhlIHRvcCBvZiB0aGlz
CisgKiBmaWxlIGZvciBhIGRlc2NyaXB0aW9uIG9mIHdoYXQgdGhlc2UgcGVybWlzc2lvbiBiaXRz
IG1lYW4uCisgKi8KKworI2RlZmluZSBBVFRSSUJVVEVfVFlQRV9VTktOT1dOIDAKKyNkZWZpbmUg
QVRUUklCVVRFX1RZUEVfSU5URUdFUiAxCisjZGVmaW5lIEFUVFJJQlVURV9UWVBFX0JJVE1BU0sg
MgorI2RlZmluZSBBVFRSSUJVVEVfVFlQRV9CT09MIDMKKyNkZWZpbmUgQVRUUklCVVRFX1RZUEVf
UkFOR0UgNAorI2RlZmluZSBBVFRSSUJVVEVfVFlQRV9JTlRfQklUUyA1CisjZGVmaW5lIEFUVFJJ
QlVURV9UWVBFXzY0QklUX0lOVEVHRVIgNgorI2RlZmluZSBBVFRSSUJVVEVfVFlQRV9TVFJJTkcg
NworI2RlZmluZSBBVFRSSUJVVEVfVFlQRV9CSU5BUllfREFUQSA4CisjZGVmaW5lIEFUVFJJQlVU
RV9UWVBFX1NUUklOR19PUEVSQVRJT04gOQorCisjZGVmaW5lIEFUVFJJQlVURV9UWVBFX1JFQUQg
MHgwMDEKKyNkZWZpbmUgQVRUUklCVVRFX1RZUEVfV1JJVEUgMHgwMDIKKyNkZWZpbmUgQVRUUklC
VVRFX1RZUEVfRElTUExBWSAweDAwNAorI2RlZmluZSBBVFRSSUJVVEVfVFlQRV9HUFUgMHgwMDgK
KyNkZWZpbmUgQVRUUklCVVRFX1RZUEVfRlJBTUVMT0NLIDB4MDEwCisjZGVmaW5lIEFUVFJJQlVU
RV9UWVBFX1hfU0NSRUVOIDB4MDIwCisjZGVmaW5lIEFUVFJJQlVURV9UWVBFX1hJTkVSQU1BIDB4
MDQwCisjZGVmaW5lIEFUVFJJQlVURV9UWVBFX1ZDU0MgMHgwODAKKyNkZWZpbmUgQVRUUklCVVRF
X1RZUEVfR1ZJIDB4MTAwCisjZGVmaW5lIEFUVFJJQlVURV9UWVBFX0NPT0xFUiAweDIwMAorI2Rl
ZmluZSBBVFRSSUJVVEVfVFlQRV9USEVSTUFMX1NFTlNPUiAweDQwMAorI2RlZmluZSBBVFRSSUJV
VEVfVFlQRV8zRF9WSVNJT05fUFJPX1RSQU5TQ0VJVkVSIDB4ODAwCisKKyNkZWZpbmUgQVRUUklC
VVRFX1RZUEVfQUxMX1RBUkdFVFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAoKEFUVFJJQlVURV9UWVBFX0RJU1BMQVkpIHwgKEFUVFJJQlVU
RV9UWVBFX0dQVSkgfCAoQVRUUklCVVRFX1RZUEVfRlJBTUVMT0NLKSB8IFwKKyAgICAgKEFUVFJJ
QlVURV9UWVBFX1hfU0NSRUVOKSB8IChBVFRSSUJVVEVfVFlQRV9WQ1NDKSB8IChBVFRSSUJVVEVf
VFlQRV9HVkkpIHwgICAgIFwKKyAgICAgKEFUVFJJQlVURV9UWVBFX0NPT0xFUikgfCAoQVRUUklC
VVRFX1RZUEVfVEhFUk1BTF9TRU5TT1IpIHwgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKEFU
VFJJQlVURV9UWVBFXzNEX1ZJU0lPTl9QUk9fVFJBTlNDRUlWRVIpKQorCit0eXBlZGVmIHN0cnVj
dCBfTlZDVFJMQXR0cmlidXRlVmFsaWRWYWx1ZXMKK3sKKyAgICBpbnQgdHlwZTsKKyAgICB1bmlv
bgorICAgIHsKKyAgICAgICAgc3RydWN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGludDY0X3Qg
bWluOworICAgICAgICAgICAgaW50NjRfdCBtYXg7CisgICAgICAgIH0gcmFuZ2U7CisgICAgICAg
IHN0cnVjdAorICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaW50czsKKyAgICAg
ICAgfSBiaXRzOworICAgIH0gdTsKKyAgICB1bnNpZ25lZCBpbnQgcGVybWlzc2lvbnM7Cit9IE5W
Q1RSTEF0dHJpYnV0ZVZhbGlkVmFsdWVzUmVjOworCit0eXBlZGVmIHN0cnVjdCBfTlZDVFJMQXR0
cmlidXRlUGVybWlzc2lvbnMKK3sKKyAgICBpbnQgdHlwZTsKKyAgICB1bnNpZ25lZCBpbnQgcGVy
bWlzc2lvbnM7Cit9IE5WQ1RSTEF0dHJpYnV0ZVBlcm1pc3Npb25zUmVjOworCisvKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKiovCisKKy8qCisgKiBOVi1DT05UUk9MIFggZXZlbnQgbm90aWZpY2F0aW9uLgorICoK
KyAqIFRvIHJlY2VpdmUgWCBldmVudCBub3RpZmljYXRpb25zIGRlYWxpbmcgd2l0aCBOVi1DT05U
Uk9MLCB5b3Ugc2hvdWxkCisgKiBjYWxsIFhOVkN0cmxTZWxlY3ROb3RpZnkoKSB3aXRoIG9uZSBv
ZiB0aGUgZm9sbG93aW5nIHNldCBhcyB0aGUgdHlwZQorICogb2YgZXZlbnQgdG8gcmVjZWl2ZSAo
c2VlIE5WQ3RybExpYi5oIGZvciBtb3JlIGluZm9ybWF0aW9uKToKKyAqLworCisjZGVmaW5lIEFU
VFJJQlVURV9DSEFOR0VEX0VWRU5UIDAKKyNkZWZpbmUgVEFSR0VUX0FUVFJJQlVURV9DSEFOR0VE
X0VWRU5UIDEKKyNkZWZpbmUgVEFSR0VUX0FUVFJJQlVURV9BVkFJTEFCSUxJVFlfQ0hBTkdFRF9F
VkVOVCAyCisjZGVmaW5lIFRBUkdFVF9TVFJJTkdfQVRUUklCVVRFX0NIQU5HRURfRVZFTlQgMwor
I2RlZmluZSBUQVJHRVRfQklOQVJZX0FUVFJJQlVURV9DSEFOR0VEX0VWRU5UIDQKKworI2VuZGlm
IC8qIF9fTlZDVFJMX0ggKi8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGly
ZF9wYXJ0eS9saWJYTlZDdHJsL05WQ3RybExpYi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9saWJYTlZDdHJsL05WQ3RybExpYi5oCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9saWJY
TlZDdHJsL05WQ3RybExpYi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzA3IEBACisvKgor
ICogQ29weXJpZ2h0IChjKSAyMDA4IE5WSURJQSwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNz
aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRh
aW5pbmcgYSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50
YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAorICogaW4gdGhlIFNvZnR3YXJl
IHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJp
Z2h0cworICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl
LCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5k
IHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQg
dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRo
ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNs
dWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNv
cGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAq
IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO
WSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE
IFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg
Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ
T04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisgKiBPVVQg
T0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVS
IERFQUxJTkdTIElOIFRIRQorICogU09GVFdBUkUuCisgKi8KKworI2lmbmRlZiBfX05WQ1RSTExJ
Ql9ICisjZGVmaW5lIF9fTlZDVFJMTElCX0gKKworI2luY2x1ZGUgIk5WQ3RybC5oIgorCisjaWYg
ZGVmaW5lZCBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoKKyAqICBYTlZD
VFJMUXVlcnlFeHRlbnNpb24gLQorICoKKyAqICBSZXR1cm5zIFRydWUgaWYgdGhlIGV4dGVuc2lv
biBleGlzdHMsIHJldHVybnMgRmFsc2Ugb3RoZXJ3aXNlLgorICogIGV2ZW50X2Jhc2VwIGFuZCBl
cnJvcl9iYXNlcCBhcmUgdGhlIGV4dGVuc2lvbiBldmVudCBhbmQgZXJyb3IKKyAqICBiYXNlcy4g
IEN1cnJlbnRseSwgbm8gZXh0ZW5zaW9uIHNwZWNpZmljIGVycm9ycyBvciBldmVudHMgYXJlCisg
KiAgZGVmaW5lZC4KKyAqLworCitCb29sIFhOVkNUUkxRdWVyeUV4dGVuc2lvbihEaXNwbGF5ICpk
cHksIGludCAqZXZlbnRfYmFzZXAsIGludCAqZXJyb3JfYmFzZXApOworCisvKgorICogIFhOVkNU
UkxRdWVyeVZlcnNpb24gLQorICoKKyAqICBSZXR1cm5zIFRydWUgaWYgdGhlIGV4dGVuc2lvbiBl
eGlzdHMsIHJldHVybnMgRmFsc2Ugb3RoZXJ3aXNlLgorICogIG1ham9yIGFuZCBtaW5vciBhcmUg
dGhlIGV4dGVuc2lvbidzIG1ham9yIGFuZCBtaW5vciB2ZXJzaW9uCisgKiAgbnVtYmVycy4KKyAq
LworCitCb29sIFhOVkNUUkxRdWVyeVZlcnNpb24oRGlzcGxheSAqZHB5LCBpbnQgKm1ham9yLCBp
bnQgKm1pbm9yKTsKKworLyoKKyAqICBYTlZDVFJMSXNOdlNjcmVlbgorICoKKyAqICBSZXR1cm5z
IFRydWUgaXMgdGhlIHNwZWNpZmllZCBzY3JlZW4gaXMgY29udHJvbGxlZCBieSB0aGUgTlZJRElB
CisgKiAgZHJpdmVyLiAgUmV0dXJucyBGYWxzZSBvdGhlcndpc2UuCisgKi8KKworQm9vbCBYTlZD
VFJMSXNOdlNjcmVlbihEaXNwbGF5ICpkcHksIGludCBzY3JlZW4pOworCisvKgorICogIFhOVkNU
UkxRdWVyeVRhcmdldENvdW50IC0KKyAqCisgKiAgUmV0dXJucyBUcnVlIGlmIHRoZSB0YXJnZXQg
dHlwZSBleGlzdHMuICBSZXR1cm5zIEZhbHNlIG90aGVyd2lzZS4KKyAqICBJZiBYTlZDVFJMUXVl
cnlUYXJnZXRDb3VudCByZXR1cm5zIFRydWUsIHZhbHVlIHdpbGwgY29udGFpbiB0aGUKKyAqICBj
b3VudCBvZiBleGlzdGluZyB0YXJnZXRzIG9uIHRoZSBzZXJ2ZXIgb2YgdGhlIHNwZWNpZmllZCB0
YXJnZXQKKyAqICB0eXBlLgorICoKKyAqICBQbGVhc2Ugc2VlICJBdHRyaWJ1dGUgVGFyZ2V0cyIg
aW4gTlZDdHJsLmggZm9yIHRoZSBsaXN0IG9mIHZhbGlkCisgKiAgdGFyZ2V0IHR5cGVzLgorICoK
KyAqICBQb3NzaWJsZSBlcnJvcnM6CisgKiAgICAgQmFkVmFsdWUgLSBUaGUgdGFyZ2V0IGRvZXNu
J3QgZXhpc3QuCisgKi8KKworQm9vbCBYTlZDVFJMUXVlcnlUYXJnZXRDb3VudChEaXNwbGF5ICpk
cHksIGludCB0YXJnZXRfdHlwZSwgaW50ICp2YWx1ZSk7CisKKy8qCisgKiAgWE5WQ1RSTFNldEF0
dHJpYnV0ZSAtCisgKgorICogIFNldHMgdGhlIGF0dHJpYnV0ZSB0byB0aGUgZ2l2ZW4gdmFsdWUu
ICBUaGUgYXR0cmlidXRlcyBhbmQgdGhlaXIKKyAqICBwb3NzaWJsZSB2YWx1ZXMgYXJlIGxpc3Rl
ZCBpbiBOVkN0cmwuaC4KKyAqCisgKiAgTm90IGFsbCBhdHRyaWJ1dGVzIHJlcXVpcmUgdGhlIGRp
c3BsYXlfbWFzayBwYXJhbWV0ZXI7IHNlZQorICogIE5WQ3RybC5oIGZvciBkZXRhaWxzLgorICoK
KyAqICBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nIFhOVkNU
UkxTZXRUYXJnZXRBdHRyaWJ1dGUoKQorICogIHdpdGggdGhlIHRhcmdldF90eXBlIHNldCB0byBO
Vl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOIGFuZAorICogIHRhcmdldF9pZCBzZXQgdG8gJ3Nj
cmVlbicuCisgKgorICogIFBvc3NpYmxlIGVycm9yczoKKyAqICAgICBCYWRWYWx1ZSAtIFRoZSBz
Y3JlZW4gb3IgYXR0cmlidXRlIGRvZXNuJ3QgZXhpc3QuCisgKiAgICAgQmFkTWF0Y2ggLSBUaGUg
TlZJRElBIGRyaXZlciBpcyBub3QgcHJlc2VudCBvbiB0aGF0IHNjcmVlbi4KKyAqLworCit2b2lk
IFhOVkNUUkxTZXRBdHRyaWJ1dGUoRGlzcGxheSAqZHB5LAorICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBzY3JlZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRp
c3BsYXlfbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXR0cmli
dXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2YWx1ZSk7CisKKy8qCisgKiAgWE5W
Q1RSTFNldFRhcmdldEF0dHJpYnV0ZSAtCisgKgorICogIFNldHMgdGhlIGF0dHJpYnV0ZSB0byB0
aGUgZ2l2ZW4gdmFsdWUuICBUaGUgYXR0cmlidXRlcyBhbmQgdGhlaXIKKyAqICBwb3NzaWJsZSB2
YWx1ZXMgYXJlIGxpc3RlZCBpbiBOVkN0cmwuaC4KKyAqCisgKiAgTm90IGFsbCBhdHRyaWJ1dGVz
IHJlcXVpcmUgdGhlIGRpc3BsYXlfbWFzayBwYXJhbWV0ZXI7IHNlZQorICogIE5WQ3RybC5oIGZv
ciBkZXRhaWxzLgorICoKKyAqICBQb3NzaWJsZSBlcnJvcnM6CisgKiAgICAgQmFkVmFsdWUgLSBU
aGUgdGFyZ2V0IG9yIGF0dHJpYnV0ZSBkb2Vzbid0IGV4aXN0LgorICogICAgIEJhZE1hdGNoIC0g
VGhlIE5WSURJQSBkcml2ZXIgaXMgbm90IHByZXNlbnQgb24gdGhhdCB0YXJnZXQuCisgKi8KKwor
dm9pZCBYTlZDVFJMU2V0VGFyZ2V0QXR0cmlidXRlKERpc3BsYXkgKmRweSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0X3R5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IHRhcmdldF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHZhbHVlKTsKKworLyoKKyAqICBYTlZDVFJMU2V0QXR0cmlidXRlQW5kR2V0U3RhdHVz
IC0KKyAqCisgKiBTYW1lIGFzIFhOVkNUUkxTZXRBdHRyaWJ1dGUoKS4KKyAqIEluIGFkZGl0aW9u
LCBYTlZDVFJMU2V0QXR0cmlidXRlQW5kR2V0U3RhdHVzKCkgcmV0dXJucworICogVHJ1ZSBpZiB0
aGUgb3BlcmF0aW9uIHN1Y2NlZWRzLCBGYWxzZSBvdGhlcndpc2UuCisgKgorICovCisKK0Jvb2wg
WE5WQ1RSTFNldEF0dHJpYnV0ZUFuZEdldFN0YXR1cyhEaXNwbGF5ICpkcHksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNjcmVlbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZhbHVlKTsKKworLyoKKyAqICBY
TlZDVFJMU2V0VGFyZ2V0QXR0cmlidXRlQW5kR2V0U3RhdHVzIC0KKyAqCisgKiBTYW1lIGFzIFhO
VkNUUkxTZXRUYXJnZXRBdHRyaWJ1dGUoKS4KKyAqIEluIGFkZGl0aW9uLCBYTlZDVFJMU2V0VGFy
Z2V0QXR0cmlidXRlQW5kR2V0U3RhdHVzKCkgcmV0dXJucworICogVHJ1ZSBpZiB0aGUgb3BlcmF0
aW9uIHN1Y2NlZWRzLCBGYWxzZSBvdGhlcndpc2UuCisgKgorICovCisKK0Jvb2wgWE5WQ1RSTFNl
dFRhcmdldEF0dHJpYnV0ZUFuZEdldFN0YXR1cyhEaXNwbGF5ICpkcHksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRhcmdldF90eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0YXJnZXRfaWQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRpc3BsYXlf
bWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgYXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCB2YWx1ZSk7CisKKy8qCisgKiAgWE5WQ1RSTFF1ZXJ5QXR0cmlidXRlIC0KKyAqCisg
KiAgUmV0dXJucyBUcnVlIGlmIHRoZSBhdHRyaWJ1dGUgZXhpc3RzLiAgUmV0dXJucyBGYWxzZSBv
dGhlcndpc2UuCisgKiAgSWYgWE5WQ1RSTFF1ZXJ5QXR0cmlidXRlIHJldHVybnMgVHJ1ZSwgdmFs
dWUgd2lsbCBjb250YWluIHRoZQorICogIHZhbHVlIG9mIHRoZSBzcGVjaWZpZWQgYXR0cmlidXRl
LgorICoKKyAqICBOb3QgYWxsIGF0dHJpYnV0ZXMgcmVxdWlyZSB0aGUgZGlzcGxheV9tYXNrIHBh
cmFtZXRlcjsgc2VlCisgKiAgTlZDdHJsLmggZm9yIGRldGFpbHMuCisgKgorICogIENhbGxpbmcg
dGhpcyBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcKKyAqICBYTlZDVFJMUXVlcnlU
YXJnZXRBdHRyaWJ1dGUoKSB3aXRoIHRoZSB0YXJnZXRfdHlwZSBzZXQgdG8KKyAqICBOVl9DVFJM
X1RBUkdFVF9UWVBFX1hfU0NSRUVOIGFuZCB0YXJnZXRfaWQgc2V0IHRvICdzY3JlZW4nLgorICoK
KyAqICBQb3NzaWJsZSBlcnJvcnM6CisgKiAgICAgQmFkVmFsdWUgLSBUaGUgc2NyZWVuIGRvZXNu
J3QgZXhpc3QuCisgKiAgICAgQmFkTWF0Y2ggLSBUaGUgTlZJRElBIGRyaXZlciBpcyBub3QgcHJl
c2VudCBvbiB0aGF0IHNjcmVlbi4KKyAqLworCitCb29sIFhOVkNUUkxRdWVyeUF0dHJpYnV0ZShE
aXNwbGF5ICpkcHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2NyZWVuLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgKnZhbHVlKTsKKworLyoKKyAqIFhOVkNUUkxRdWVyeVRhcmdl
dEF0dHJpYnV0ZSAtCisgKgorICogIFJldHVybnMgVHJ1ZSBpZiB0aGUgYXR0cmlidXRlIGV4aXN0
cy4gIFJldHVybnMgRmFsc2Ugb3RoZXJ3aXNlLgorICogIElmIFhOVkNUUkxRdWVyeVRhcmdldEF0
dHJpYnV0ZSByZXR1cm5zIFRydWUsIHZhbHVlIHdpbGwgY29udGFpbiB0aGUKKyAqICB2YWx1ZSBv
ZiB0aGUgc3BlY2lmaWVkIGF0dHJpYnV0ZS4KKyAqCisgKiAgTm90IGFsbCBhdHRyaWJ1dGVzIHJl
cXVpcmUgdGhlIGRpc3BsYXlfbWFzayBwYXJhbWV0ZXI7IHNlZQorICogIE5WQ3RybC5oIGZvciBk
ZXRhaWxzLgorICoKKyAqICBQb3NzaWJsZSBlcnJvcnM6CisgKiAgICAgQmFkVmFsdWUgLSBUaGUg
dGFyZ2V0IGRvZXNuJ3QgZXhpc3QuCisgKiAgICAgQmFkTWF0Y2ggLSBUaGUgTlZJRElBIGRyaXZl
ciBkb2VzIG5vdCBjb250cm9sIHRoZSB0YXJnZXQuCisgKi8KKworQm9vbCBYTlZDVFJMUXVlcnlU
YXJnZXRBdHRyaWJ1dGUoRGlzcGxheSAqZHB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IHRhcmdldF9UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IHRhcmdldF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCBkaXNwbGF5X21hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgYXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
ICp2YWx1ZSk7CisKKy8qCisgKiBYTlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGU2NCAtCisgKgor
ICogIFJldHVybnMgVHJ1ZSBpZiB0aGUgYXR0cmlidXRlIGV4aXN0cy4gIFJldHVybnMgRmFsc2Ug
b3RoZXJ3aXNlLgorICogIElmIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSByZXR1cm5zIFRy
dWUsIHZhbHVlIHdpbGwgY29udGFpbiB0aGUKKyAqICB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIGF0
dHJpYnV0ZS4KKyAqCisgKiAgTm90IGFsbCBhdHRyaWJ1dGVzIHJlcXVpcmUgdGhlIGRpc3BsYXlf
bWFzayBwYXJhbWV0ZXI7IHNlZQorICogIE5WQ3RybC5oIGZvciBkZXRhaWxzLgorICoKKyAqICBO
b3RlOiB0aGlzIGZ1bmN0aW9uIGJlaGF2ZXMgbGlrZSBYTlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1
dGUoKSwKKyAqICBidXQgc3VwcG9ydHMgNjQtYml0IGludGVnZXIgYXR0cmlidXRlcy4KKyAqCisg
KiAgUG9zc2libGUgZXJyb3JzOgorICogICAgIEJhZFZhbHVlIC0gVGhlIHRhcmdldCBkb2Vzbid0
IGV4aXN0LgorICogICAgIEJhZE1hdGNoIC0gVGhlIE5WSURJQSBkcml2ZXIgZG9lcyBub3QgY29u
dHJvbCB0aGUgdGFyZ2V0LgorICovCisKK0Jvb2wgWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRl
NjQoRGlzcGxheSAqZHB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
dGFyZ2V0X1R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0YXJn
ZXRfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBk
aXNwbGF5X21hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCBhdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0
X3QgKnZhbHVlKTsKKworLyoKKyAqICBYTlZDVFJMUXVlcnlTdHJpbmdBdHRyaWJ1dGUgLQorICoK
KyAqICBSZXR1cm5zIFRydWUgaWYgdGhlIGF0dHJpYnV0ZSBleGlzdHMuICBSZXR1cm5zIEZhbHNl
IG90aGVyd2lzZS4KKyAqICBJZiBYTlZDVFJMUXVlcnlTdHJpbmdBdHRyaWJ1dGUgcmV0dXJucyBU
cnVlLCAqcHRyIHdpbGwgcG9pbnQgdG8gYW4KKyAqICBhbGxvY2F0ZWQgc3RyaW5nIGNvbnRhaW5p
bmcgdGhlIHN0cmluZyBhdHRyaWJ1dGUgcmVxdWVzdGVkLiAgSXQgaXMKKyAqICB0aGUgY2FsbGVy
J3MgcmVzcG9uc2liaWxpdHkgdG8gZnJlZSB0aGUgc3RyaW5nIHdoZW4gZG9uZS4KKyAqCisgKiAg
Q2FsbGluZyB0aGlzIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZworICogIFhOVkNU
UkxRdWVyeVRhcmdldFN0cmluZ0F0dHJpYnV0ZSgpIHdpdGggdGhlIHRhcmdldF90eXBlIHNldCB0
bworICogIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4gYW5kIHRhcmdldF9pZCBzZXQgdG8g
J3NjcmVlbicuCisgKgorICogIFBvc3NpYmxlIGVycm9yczoKKyAqICAgICBCYWRWYWx1ZSAtIFRo
ZSBzY3JlZW4gZG9lc24ndCBleGlzdC4KKyAqICAgICBCYWRNYXRjaCAtIFRoZSBOVklESUEgZHJp
dmVyIGlzIG5vdCBwcmVzZW50IG9uIHRoYXQgc2NyZWVuLgorICogICAgIEJhZEFsbG9jIC0gSW5z
dWZmaWNpZW50IHJlc291cmNlcyB0byBmdWxmaWxsIHRoZSByZXF1ZXN0LgorICovCisKK0Jvb2wg
WE5WQ1RSTFF1ZXJ5U3RyaW5nQXR0cmlidXRlKERpc3BsYXkgKmRweSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBzY3JlZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYXIgKipwdHIpOworCisvKgorICogIFhOVkNUUkxRdWVyeVRhcmdldFN0
cmluZ0F0dHJpYnV0ZSAtCisgKgorICogIFJldHVybnMgVHJ1ZSBpZiB0aGUgYXR0cmlidXRlIGV4
aXN0cy4gIFJldHVybnMgRmFsc2Ugb3RoZXJ3aXNlLgorICogIElmIFhOVkNUUkxRdWVyeVRhcmdl
dFN0cmluZ0F0dHJpYnV0ZSByZXR1cm5zIFRydWUsICpwdHIgd2lsbCBwb2ludAorICogIHRvIGFu
IGFsbG9jYXRlZCBzdHJpbmcgY29udGFpbmluZyB0aGUgc3RyaW5nIGF0dHJpYnV0ZSByZXF1ZXN0
ZWQuCisgKiAgSXQgaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGZyZWUgdGhlIHN0
cmluZyB3aGVuIGRvbmUuCisgKgorICogIFBvc3NpYmxlIGVycm9yczoKKyAqICAgICBCYWRWYWx1
ZSAtIFRoZSB0YXJnZXQgZG9lc24ndCBleGlzdC4KKyAqICAgICBCYWRNYXRjaCAtIFRoZSBOVklE
SUEgZHJpdmVyIGRvZXMgbm90IGNvbnRyb2wgdGhlIHRhcmdldC4KKyAqICAgICBCYWRBbGxvYyAt
IEluc3VmZmljaWVudCByZXNvdXJjZXMgdG8gZnVsZmlsbCB0aGUgcmVxdWVzdC4KKyAqLworCitC
b29sIFhOVkNUUkxRdWVyeVRhcmdldFN0cmluZ0F0dHJpYnV0ZShEaXNwbGF5ICpkcHksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0X3R5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0X2lkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFz
aywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBh
dHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoq
cHRyKTsKKworLyoKKyAqICBYTlZDVFJMU2V0U3RyaW5nQXR0cmlidXRlIC0KKyAqCisgKiAgUmV0
dXJucyBUcnVlIGlmIHRoZSBvcGVyYXRpb24gc3VjY2VkZWQuICBSZXR1cm5zIEZhbHNlIG90aGVy
d2lzZS4KKyAqCisgKiAgUG9zc2libGUgWCBlcnJvcnM6CisgKiAgICAgQmFkVmFsdWUgLSBUaGUg
c2NyZWVuIGRvZXNuJ3QgZXhpc3QuCisgKiAgICAgQmFkTWF0Y2ggLSBUaGUgTlZJRElBIGRyaXZl
ciBpcyBub3QgcHJlc2VudCBvbiB0aGF0IHNjcmVlbi4KKyAqICAgICBCYWRBbGxvYyAtIEluc3Vm
ZmljaWVudCByZXNvdXJjZXMgdG8gZnVsZmlsbCB0aGUgcmVxdWVzdC4KKyAqLworCitCb29sIFhO
VkNUUkxTZXRTdHJpbmdBdHRyaWJ1dGUoRGlzcGxheSAqZHB5LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBzY3JlZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXIgKnB0cik7CisKKy8qCisgKiAgWE5WQ1RSTFNldFRhcmdldFN0cmluZ0F0dHJpYnV0ZSAt
CisgKgorICogIFJldHVybnMgVHJ1ZSBpZiB0aGUgb3BlcmF0aW9uIHN1Y2NlZGVkLiAgUmV0dXJu
cyBGYWxzZSBvdGhlcndpc2UuCisgKgorICogIFBvc3NpYmxlIFggZXJyb3JzOgorICogICAgIEJh
ZFZhbHVlIC0gVGhlIHNjcmVlbiBkb2Vzbid0IGV4aXN0LgorICogICAgIEJhZE1hdGNoIC0gVGhl
IE5WSURJQSBkcml2ZXIgaXMgbm90IHByZXNlbnQgb24gdGhhdCBzY3JlZW4uCisgKiAgICAgQmFk
QWxsb2MgLSBJbnN1ZmZpY2llbnQgcmVzb3VyY2VzIHRvIGZ1bGZpbGwgdGhlIHJlcXVlc3QuCisg
Ki8KKworQm9vbCBYTlZDVFJMU2V0VGFyZ2V0U3RyaW5nQXR0cmlidXRlKERpc3BsYXkgKmRweSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0X3R5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRhcmdldF9pZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNr
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBhdHRy
aWJ1dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqcHRyKTsK
KworLyoKKyAqIFhOVkNUUkxRdWVyeVZhbGlkQXR0cmlidXRlVmFsdWVzIC0KKyAqCisgKiBSZXR1
cm5zIFRydWUgaWYgdGhlIGF0dHJpYnV0ZSBleGlzdHMuICBSZXR1cm5zIEZhbHNlIG90aGVyd2lz
ZS4gIElmCisgKiBYTlZDVFJMUXVlcnlWYWxpZEF0dHJpYnV0ZVZhbHVlcyByZXR1cm5zIFRydWUs
IHZhbHVlcyB3aWxsIGluZGljYXRlCisgKiB0aGUgdmFsaWQgdmFsdWVzIGZvciB0aGUgc3BlY2lm
aWVkIGF0dHJpYnV0ZTsgc2VlIHRoZSBkZXNjcmlwdGlvbgorICogb2YgTlZDVFJMQXR0cmlidXRl
VmFsaWRWYWx1ZXMgaW4gTlZDdHJsLmguCisgKgorICogIENhbGxpbmcgdGhpcyBmdW5jdGlvbiBp
cyBlcXVpdmFsZW50IHRvIGNhbGxpbmcKKyAqICBYTlZDVFJMUXVlcnlWYWxpZFRhcmdldEF0dHJp
YnV0ZVZhbHVlcygpIHdpdGggdGhlIHRhcmdldF90eXBlIHNldCB0bworICogIE5WX0NUUkxfVEFS
R0VUX1RZUEVfWF9TQ1JFRU4gYW5kIHRhcmdldF9pZCBzZXQgdG8gJ3NjcmVlbicuCisgKi8KKwor
Qm9vbCBYTlZDVFJMUXVlcnlWYWxpZEF0dHJpYnV0ZVZhbHVlcyhEaXNwbGF5ICpkcHksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzY3JlZW4sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkaXNwbGF5X21hc2ssCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1
dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5WQ1RSTEF0dHJpYnV0
ZVZhbGlkVmFsdWVzUmVjICp2YWx1ZXMpOworCisvKgorICogWE5WQ1RSTFF1ZXJ5VmFsaWRUYXJn
ZXRBdHRyaWJ1dGVWYWx1ZXMgLQorICoKKyAqIFJldHVybnMgVHJ1ZSBpZiB0aGUgYXR0cmlidXRl
IGV4aXN0cy4gIFJldHVybnMgRmFsc2Ugb3RoZXJ3aXNlLiAgSWYKKyAqIFhOVkNUUkxRdWVyeVZh
bGlkVGFyZ2V0QXR0cmlidXRlVmFsdWVzIHJldHVybnMgVHJ1ZSwgdmFsdWVzIHdpbGwgaW5kaWNh
dGUKKyAqIHRoZSB2YWxpZCB2YWx1ZXMgZm9yIHRoZSBzcGVjaWZpZWQgYXR0cmlidXRlLgorICov
CisKK0Jvb2wgWE5WQ1RSTFF1ZXJ5VmFsaWRUYXJnZXRBdHRyaWJ1dGVWYWx1ZXMoRGlzcGxheSAq
ZHB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGFy
Z2V0X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCB0YXJnZXRfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBkaXNwbGF5X21hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5WQ1RSTEF0dHJpYnV0ZVZhbGlkVmFsdWVzUmVj
ICp2YWx1ZXMpOworCisvKgorICogWE5WQ1RSTFF1ZXJ5VmFsaWRUYXJnZXRTdHJpbmdBdHRyaWJ1
dGVWYWx1ZXMgLQorICoKKyAqIFJldHVybnMgVHJ1ZSBpZiB0aGUgYXR0cmlidXRlIGV4aXN0cy4g
IFJldHVybnMgRmFsc2Ugb3RoZXJ3aXNlLiAgSWYKKyAqIFhOVkNUUkxRdWVyeVZhbGlkVGFyZ2V0
U3RyaW5nQXR0cmlidXRlVmFsdWVzIHJldHVybnMgVHJ1ZSwgdmFsdWVzIHdpbGwKKyAqIGluZGlj
YXRlIHRoZSB2YWxpZCB2YWx1ZXMgZm9yIHRoZSBzcGVjaWZpZWQgYXR0cmlidXRlLgorICovCisK
K0Jvb2wgWE5WQ1RSTFF1ZXJ5VmFsaWRUYXJnZXRTdHJpbmdBdHRyaWJ1dGVWYWx1ZXMoRGlzcGxh
eSAqZHB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgdGFyZ2V0X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCB0YXJnZXRfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkaXNwbGF5X21hc2ssCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBh
dHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5WQ1RSTEF0dHJpYnV0ZVZhbGlkVmFsdWVzUmVjICp2YWx1ZXMpOworCisvKgorICogWE5W
Q1RSTFF1ZXJ5QXR0cmlidXRlUGVybWlzc2lvbnMgLQorICoKKyAqIFJldHVybnMgVHJ1ZSBpZiB0
aGUgYXR0cmlidXRlIGV4aXN0cy4gIFJldHVybnMgRmFsc2Ugb3RoZXJ3aXNlLiAgSWYKKyAqIFhO
VkNUUkxRdWVyeUF0dHJpYnV0ZVBlcm1pc3Npb25zIHJldHVybnMgVHJ1ZSwgcGVybWlzc2lvbnMg
d2lsbAorICogaW5kaWNhdGUgdGhlIHBlcm1pc3Npb24gZmxhZ3MgZm9yIHRoZSBhdHRyaWJ1dGUu
CisgKi8KKworQm9vbCBYTlZDVFJMUXVlcnlBdHRyaWJ1dGVQZXJtaXNzaW9ucyhEaXNwbGF5ICpk
cHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBh
dHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5WQ1RSTEF0
dHJpYnV0ZVBlcm1pc3Npb25zUmVjICpwZXJtaXNzaW9ucyk7CisKKy8qCisgKiBYTlZDVFJMUXVl
cnlTdHJpbmdBdHRyaWJ1dGVQZXJtaXNzaW9ucyAtCisgKgorICogUmV0dXJucyBUcnVlIGlmIHRo
ZSBhdHRyaWJ1dGUgZXhpc3RzLiAgUmV0dXJucyBGYWxzZSBvdGhlcndpc2UuICBJZgorICogWE5W
Q1RSTFF1ZXJ5U3RyaW5nQXR0cmlidXRlUGVybWlzc2lvbnMgcmV0dXJucyBUcnVlLCBwZXJtaXNz
aW9ucyB3aWxsCisgKiBpbmRpY2F0ZSB0aGUgcGVybWlzc2lvbiBmbGFncyBmb3IgdGhlIGF0dHJp
YnV0ZS4KKyAqLworCitCb29sIFhOVkNUUkxRdWVyeVN0cmluZ0F0dHJpYnV0ZVBlcm1pc3Npb25z
KERpc3BsYXkgKmRweSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTlZDVFJMQXR0cmlidXRlUGVybWlzc2lvbnNSZWMgKnBlcm1pc3Npb25z
KTsKKworLyoKKyAqIFhOVkNUUkxRdWVyeUJpbmFyeURhdGFBdHRyaWJ1dGVQZXJtaXNzaW9ucyAt
CisgKgorICogUmV0dXJucyBUcnVlIGlmIHRoZSBhdHRyaWJ1dGUgZXhpc3RzLiAgUmV0dXJucyBG
YWxzZSBvdGhlcndpc2UuICBJZgorICogWE5WQ1RSTFF1ZXJ5QmluYXJ5RGF0YUF0dHJpYnV0ZVBl
cm1pc3Npb25zIHJldHVybnMgVHJ1ZSwgcGVybWlzc2lvbnMKKyAqIHdpbGwgaW5kaWNhdGUgdGhl
IHBlcm1pc3Npb24gZmxhZ3MgZm9yIHRoZSBhdHRyaWJ1dGUuCisgKi8KKworQm9vbCBYTlZDVFJM
UXVlcnlCaW5hcnlEYXRhQXR0cmlidXRlUGVybWlzc2lvbnMoRGlzcGxheSAqZHB5LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGF0
dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5WQ1RSTEF0dHJpYnV0ZVBlcm1pc3Npb25zUmVjICpwZXJtaXNzaW9ucyk7CisKKy8qCisgKiBY
TlZDVFJMUXVlcnlTdHJpbmdPcGVyYXRpb25BdHRyaWJ1dGVQZXJtaXNzaW9ucyAtCisgKgorICog
UmV0dXJucyBUcnVlIGlmIHRoZSBhdHRyaWJ1dGUgZXhpc3RzLiAgUmV0dXJucyBGYWxzZSBvdGhl
cndpc2UuICBJZgorICogWE5WQ1RSTFF1ZXJ5U3RyaW5nT3BlcmF0aW9uQXR0cmlidXRlUGVybWlz
c2lvbnMgcmV0dXJucyBUcnVlLAorICogcGVybWlzc2lvbnMgd2lsbCBpbmRpY2F0ZSB0aGUgcGVy
bWlzc2lvbiBmbGFncyBmb3IgdGhlIGF0dHJpYnV0ZS4KKyAqLworCitCb29sIFhOVkNUUkxRdWVy
eVN0cmluZ09wZXJhdGlvbkF0dHJpYnV0ZVBlcm1pc3Npb25zKERpc3BsYXkgKmRweSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IGF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTlZDVFJMQXR0cmlidXRlUGVybWlzc2lvbnNSZWMgKnBlcm1pc3Npb25zKTsK
KworLyoKKyAqICBYTlZDVFJMU2V0R3ZvQ29sb3JDb252ZXJzaW9uIC0KKyAqCisgKiAgU2V0cyB0
aGUgY29sb3IgY29udmVyc2lvbiBtYXRyaXgsIG9mZnNldCwgYW5kIHNjYWxlIHRoYXQgc2hvdWxk
IGJlCisgKiAgdXNlZCBmb3IgR1ZPIChHcmFwaGljIHRvIFZpZGVvIE91dCkuCisgKgorICogIFRo
ZSBDb2xvciBTcGFjZSBDb252ZXJzaW9uIGRhdGEgaXMgb3JkZXJlZCBsaWtlIHRoaXM6CisgKgor
ICogICBjb2xvck1hdHJpeFswXVswXSAvLyByLlkKKyAqICAgY29sb3JNYXRyaXhbMF1bMV0gLy8g
Zy5ZCisgKiAgIGNvbG9yTWF0cml4WzBdWzJdIC8vIGIuWQorICoKKyAqICAgY29sb3JNYXRyaXhb
MV1bMF0gLy8gci5DcgorICogICBjb2xvck1hdHJpeFsxXVsxXSAvLyBnLkNyCisgKiAgIGNvbG9y
TWF0cml4WzFdWzJdIC8vIGIuQ3IKKyAqCisgKiAgIGNvbG9yTWF0cml4WzJdWzBdIC8vIHIuQ2IK
KyAqICAgY29sb3JNYXRyaXhbMl1bMV0gLy8gZy5DYgorICogICBjb2xvck1hdHJpeFsyXVsyXSAv
LyBiLkNiCisgKgorICogICBjb2xvck9mZnNldFswXSAgICAvLyBZCisgKiAgIGNvbG9yT2Zmc2V0
WzFdICAgIC8vIENyCisgKiAgIGNvbG9yT2Zmc2V0WzJdICAgIC8vIENiCisgKgorICogICBjb2xv
clNjYWxlWzBdICAgICAvLyBZCisgKiAgIGNvbG9yU2NhbGVbMV0gICAgIC8vIENyCisgKiAgIGNv
bG9yU2NhbGVbMl0gICAgIC8vIENiCisgKgorICogIHdoZXJlIHRoZSBkYXRhIGlzIHVzZWQgYWNj
b3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcgZm9ybXVsYWU6CisgKgorICogICBZICA9ICBjb2xvck9m
ZnNldFswXSArIGNvbG9yU2NhbGVbMF0gKgorICogICAgICAgICAgIChSICogY29sb3JNYXRyaXhb
MF1bMF0gKworICogICAgICAgICAgICBHICogY29sb3JNYXRyaXhbMF1bMV0gKworICogICAgICAg
ICAgICBCICogY29sb3JNYXRyaXhbMF1bMl0pOworICoKKyAqICAgQ3IgPSAgY29sb3JPZmZzZXRb
MV0gKyBjb2xvclNjYWxlWzFdICoKKyAqICAgICAgICAgICAoUiAqIGNvbG9yTWF0cml4WzFdWzBd
ICsKKyAqICAgICAgICAgICAgRyAqIGNvbG9yTWF0cml4WzFdWzFdICsKKyAqICAgICAgICAgICAg
QiAqIGNvbG9yTWF0cml4WzFdWzJdKTsKKyAqCisgKiAgIENiID0gIGNvbG9yT2Zmc2V0WzJdICsg
Y29sb3JTY2FsZVsyXSAqCisgKiAgICAgICAgICAgKFIgKiBjb2xvck1hdHJpeFsyXVswXSArCisg
KiAgICAgICAgICAgIEcgKiBjb2xvck1hdHJpeFsyXVsxXSArCisgKiAgICAgICAgICAgIEIgKiBj
b2xvck1hdHJpeFsyXVsyXSk7CisgKgorICogIFBvc3NpYmxlIGVycm9yczoKKyAqICAgICBCYWRN
YXRjaCAtIFRoZSBOVklESUEgZHJpdmVyIGlzIG5vdCBwcmVzZW50IG9uIHRoYXQgc2NyZWVuLgor
ICogICAgIEJhZEltcGxlbWVudGF0aW9uIC0gR1ZPIGlzIG5vdCBhdmFpbGFibGUgb24gdGhhdCBz
Y3JlZW4uCisgKi8KKwordm9pZCBYTlZDVFJMU2V0R3ZvQ29sb3JDb252ZXJzaW9uKERpc3BsYXkg
KmRweSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2NyZWVuLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGNvbG9yTWF0cml4WzNdWzNdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGNvbG9yT2Zmc2V0WzNdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGNvbG9yU2NhbGVbM10pOwor
CisvKgorICogIFhOVkNUUkxRdWVyeUd2b0NvbG9yQ29udmVyc2lvbiAtCisgKgorICogIFJldHJp
ZXZlcyB0aGUgY29sb3IgY29udmVyc2lvbiBtYXRyaXggYW5kIGNvbG9yIG9mZnNldAorICogIHRo
YXQgYXJlIGN1cnJlbnRseSBiZWluZyB1c2VkIGZvciBHVk8gKEdyYXBoaWMgdG8gVmlkZW8gT3V0
KS4KKyAqCisgKiAgVGhlIHZhbHVlcyBhcmUgb3JkZXJlZCB3aXRoaW4gdGhlIGFycmF5cyBhY2Nv
cmRpbmcgdG8gdGhlIGNvbW1lbnRzCisgKiAgZm9yIFhOVkNUUkxTZXRHdm9Db2xvckNvbnZlcnNp
b24oKS4KKyAqCisgKiAgUG9zc2libGUgZXJyb3JzOgorICogICAgIEJhZE1hdGNoIC0gVGhlIE5W
SURJQSBkcml2ZXIgaXMgbm90IHByZXNlbnQgb24gdGhhdCBzY3JlZW4uCisgKiAgICAgQmFkSW1w
bGVtZW50YXRpb24gLSBHVk8gaXMgbm90IGF2YWlsYWJsZSBvbiB0aGF0IHNjcmVlbi4KKyAqLwor
CitCb29sIFhOVkNUUkxRdWVyeUd2b0NvbG9yQ29udmVyc2lvbihEaXNwbGF5ICpkcHksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2NyZWVuLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgY29sb3JNYXRyaXhbM11bM10sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBjb2xvck9mZnNldFszXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGNvbG9yU2NhbGVbM10pOworCisv
KgorICogIFhOVkNUUkxRdWVyeUJpbmFyeURhdGEgLQorICoKKyAqICBSZXR1cm5zIFRydWUgaWYg
dGhlIGF0dHJpYnV0ZSBleGlzdHMuICBSZXR1cm5zIEZhbHNlIG90aGVyd2lzZS4KKyAqICBJZiBY
TlZDVFJMUXVlcnlCaW5hcnlEYXRhIHJldHVybnMgVHJ1ZSwgKnB0ciB3aWxsIHBvaW50IHRvIGFu
CisgKiAgYWxsb2NhdGVkIGJsb2NrIG9mIG1lbW9yeSBjb250YWluaW5nIHRoZSBiaW5hcnkgZGF0
YSBhdHRyaWJ1dGUKKyAqICByZXF1ZXN0ZWQuICBJdCBpcyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2li
aWxpdHkgdG8gZnJlZSB0aGUgZGF0YQorICogIHdoZW4gZG9uZS4gIGxlbiB3aWxsIGxpc3QgdGhl
IGxlbmd0aCBvZiB0aGUgYmluYXJ5IGRhdGEuCisgKgorICogIENhbGxpbmcgdGhpcyBmdW5jdGlv
biBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcKKyAqICBYTlZDVFJMUXVlcnlUYXJnZXRCaW5hcnlE
YXRhKCkgd2l0aCB0aGUgdGFyZ2V0X3R5cGUgc2V0IHRvCisgKiAgTlZfQ1RSTF9UQVJHRVRfVFlQ
RV9YX1NDUkVFTiBhbmQgdGFyZ2V0X2lkIHNldCB0byAnc2NyZWVuJy4KKyAqCisgKiAgUG9zc2li
bGUgZXJyb3JzOgorICogICAgIEJhZFZhbHVlIC0gVGhlIHNjcmVlbiBkb2Vzbid0IGV4aXN0Lgor
ICogICAgIEJhZE1hdGNoIC0gVGhlIE5WSURJQSBkcml2ZXIgaXMgbm90IHByZXNlbnQgb24gdGhh
dCBzY3JlZW4uCisgKiAgICAgQmFkQWxsb2MgLSBJbnN1ZmZpY2llbnQgcmVzb3VyY2VzIHRvIGZ1
bGZpbGwgdGhlIHJlcXVlc3QuCisgKi8KKworQm9vbCBYTlZDVFJMUXVlcnlCaW5hcnlEYXRhKERp
c3BsYXkgKmRweSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2NyZWVuLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkaXNwbGF5X21hc2ssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqcHRyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCAqbGVuKTsKKworLyoKKyAqIFhOVkNUUkxRdWVyeVRhcmdldEJpbmFy
eURhdGEgLQorICoKKyAqICBSZXR1cm5zIFRydWUgaWYgdGhlIGF0dHJpYnV0ZSBleGlzdHMuICBS
ZXR1cm5zIEZhbHNlIG90aGVyd2lzZS4KKyAqICBJZiBYTlZDVFJMUXVlcnlUYXJnZXRCaW5hcnlE
YXRhIHJldHVybnMgVHJ1ZSwgKnB0ciB3aWxsIHBvaW50IHRvIGFuCisgKiAgYWxsb2NhdGVkIGJs
b2NrIG9mIG1lbW9yeSBjb250YWluaW5nIHRoZSBiaW5hcnkgZGF0YSBhdHRyaWJ1dGUKKyAqICBy
ZXF1ZXN0ZWQuICBJdCBpcyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gZnJlZSB0aGUg
ZGF0YQorICogIHdoZW4gZG9uZS4gIGxlbiB3aWxsIGxpc3QgdGhlIGxlbmd0aCBvZiB0aGUgYmlu
YXJ5IGRhdGEuCisgKgorICogIFBvc3NpYmxlIGVycm9yczoKKyAqICAgICBCYWRWYWx1ZSAtIFRo
ZSB0YXJnZXQgZG9lc24ndCBleGlzdC4KKyAqICAgICBCYWRNYXRjaCAtIFRoZSBOVklESUEgZHJp
dmVyIGRvZXMgbm90IGNvbnRyb2wgdGhlIHRhcmdldC4KKyAqICAgICBCYWRBbGxvYyAtIEluc3Vm
ZmljaWVudCByZXNvdXJjZXMgdG8gZnVsZmlsbCB0aGUgcmVxdWVzdC4KKyAqLworCitCb29sIFhO
VkNUUkxRdWVyeVRhcmdldEJpbmFyeURhdGEoRGlzcGxheSAqZHB5LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCB0YXJnZXRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgdGFyZ2V0X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBkaXNwbGF5X21hc2ssCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqcHRyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCAqbGVuKTsKKworLyoKKyAqIFhOVkNUUkxTdHJpbmdPcGVyYXRpb24g
LQorICoKKyAqIFRha2VzIGEgc3RyaW5nIGFzIGlucHV0IGFuZCByZXR1cm5zIGEgWG1hbGxvYydl
ZCBzdHJpbmcgYXMgb3V0cHV0LgorICogUmV0dXJucyBUcnVlIG9uIHN1Y2Nlc3MgYW5kIEZhbHNl
IG9uIGZhaWx1cmUuCisgKi8KKworQm9vbCBYTlZDVFJMU3RyaW5nT3BlcmF0aW9uKERpc3BsYXkg
KmRweSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0X3R5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRhcmdldF9pZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqcEluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipwcE91
dCk7CisKKy8qCisgKiBYTlZDdHJsU2VsZWN0Tm90aWZ5IC0KKyAqCisgKiBUaGlzIGVuYWJsZXMv
ZGlzYWJsZXMgcmVjZWl2aW5nIG9mIE5WLUNPTlRST0wgZXZlbnRzLiAgVGhlIHR5cGUKKyAqIHNw
ZWNpZmllcyB0aGUgdHlwZSBvZiBldmVudCB0byBlbmFibGUgKGN1cnJlbnRseSwgdGhlIG9ubHkK
KyAqIHR5cGUgdGhhdCBjYW4gYmUgcmVxdWVzdGVkIHBlci1zY3JlZW4gd2l0aCBYTlZDdHJsU2Vs
ZWN0Tm90aWZ5KCkKKyAqIGlzIEFUVFJJQlVURV9DSEFOR0VEX0VWRU5UKTsgb25vZmYgY29udHJv
bHMgd2hldGhlciByZWNlaXZpbmcgdGhpcworICogdHlwZSBvZiBldmVudCBzaG91bGQgYmUgZW5h
YmxlZCAoVHJ1ZSkgb3IgZGlzYWJsZWQgKEZhbHNlKS4KKyAqCisgKiBSZXR1cm5zIFRydWUgaWYg
c3VjY2Vzc2Z1bCwgb3IgRmFsc2UgaWYgdGhlIHNjcmVlbiBpcyBub3QKKyAqIGNvbnRyb2xsZWQg
YnkgdGhlIE5WSURJQSBkcml2ZXIuCisgKi8KKworQm9vbCBYTlZDdHJsU2VsZWN0Tm90aWZ5KERp
c3BsYXkgKmRweSwgaW50IHNjcmVlbiwgaW50IHR5cGUsIEJvb2wgb25vZmYpOworCisvKgorICog
WE5WQ3RybFNlbGVjdFRhcmdldE5vdGlmeSAtCisgKgorICogVGhpcyBlbmFibGVzL2Rpc2FibGVz
IHJlY2VpdmluZyBvZiBOVi1DT05UUk9MIGV2ZW50cyB0aGF0IGhhcHBlbiBvbgorICogdGhlIHNw
ZWNpZmllZCB0YXJnZXQuICBUaGUgbm90aWZ5X3R5cGUgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIGV2
ZW50IHRvCisgKiBlbmFibGUgKGN1cnJlbnRseSwgdGhlIG9ubHkgdHlwZSB0aGF0IGNhbiBiZSBy
ZXF1ZXN0ZWQgcGVyLXRhcmdldCB3aXRoCisgKiBYTlZDdHJsU2VsZWN0VGFyZ2V0Tm90aWZ5KCkg
aXMgVEFSR0VUX0FUVFJJQlVURV9DSEFOR0VEX0VWRU5UKTsgb25vZmYKKyAqIGNvbnRyb2xzIHdo
ZXRoZXIgcmVjZWl2aW5nIHRoaXMgdHlwZSBvZiBldmVudCBzaG91bGQgYmUgZW5hYmxlZCAoVHJ1
ZSkKKyAqIG9yIGRpc2FibGVkIChGYWxzZSkuCisgKgorICogUmV0dXJucyBUcnVlIGlmIHN1Y2Nl
c3NmdWwsIG9yIEZhbHNlIGlmIHRoZSB0YXJnZXQgaXMgbm90CisgKiBjb250cm9sbGVkIGJ5IHRo
ZSBOVklESUEgZHJpdmVyLgorICovCisKK0Jvb2wgWE5WQ3RybFNlbGVjdFRhcmdldE5vdGlmeShE
aXNwbGF5ICpkcHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRhcmdldF90
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0YXJnZXRfaWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5vdGlmeV90eXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEJvb2wgb25vZmYpOworCisvKgorICogWE5WQ3RybEV2ZW50IHN0
cnVjdHVyZQorICovCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgaW50IHR5cGU7CisgICAgdW5z
aWduZWQgbG9uZyBzZXJpYWw7CisgICAgQm9vbCBzZW5kX2V2ZW50OyAvKiBhbHdheXMgRkFMU0Us
IHdlIGRvbid0IGFsbG93IHNlbmRfZXZlbnRzICovCisgICAgRGlzcGxheSAqZGlzcGxheTsKKyAg
ICBUaW1lIHRpbWU7CisgICAgaW50IHNjcmVlbjsKKyAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9t
YXNrOworICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGU7CisgICAgaW50IHZhbHVlOworfSBYTlZD
dHJsQXR0cmlidXRlQ2hhbmdlZEV2ZW50OworCit0eXBlZGVmIHVuaW9uCit7CisgICAgaW50IHR5
cGU7CisgICAgWE5WQ3RybEF0dHJpYnV0ZUNoYW5nZWRFdmVudCBhdHRyaWJ1dGVfY2hhbmdlZDsK
KyAgICBsb25nIHBhZFsyNF07Cit9IFhOVkN0cmxFdmVudDsKKworLyoKKyAqIFhOVkN0cmxFdmVu
dFRhcmdldCBzdHJ1Y3R1cmUKKyAqLworCit0eXBlZGVmIHN0cnVjdAoreworICAgIGludCB0eXBl
OworICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOworICAgIEJvb2wgc2VuZF9ldmVudDsgLyogYWx3
YXlzIEZBTFNFLCB3ZSBkb24ndCBhbGxvdyBzZW5kX2V2ZW50cyAqLworICAgIERpc3BsYXkgKmRp
c3BsYXk7CisgICAgVGltZSB0aW1lOworICAgIGludCB0YXJnZXRfdHlwZTsKKyAgICBpbnQgdGFy
Z2V0X2lkOworICAgIHVuc2lnbmVkIGludCBkaXNwbGF5X21hc2s7CisgICAgdW5zaWduZWQgaW50
IGF0dHJpYnV0ZTsKKyAgICBpbnQgdmFsdWU7Cit9IFhOVkN0cmxBdHRyaWJ1dGVDaGFuZ2VkRXZl
bnRUYXJnZXQ7CisKK3R5cGVkZWYgdW5pb24KK3sKKyAgICBpbnQgdHlwZTsKKyAgICBYTlZDdHJs
QXR0cmlidXRlQ2hhbmdlZEV2ZW50VGFyZ2V0IGF0dHJpYnV0ZV9jaGFuZ2VkOworICAgIGxvbmcg
cGFkWzI0XTsKK30gWE5WQ3RybEV2ZW50VGFyZ2V0OworCisvKgorICogWE5WQ3RybEV2ZW50VGFy
Z2V0QXZhaWxhYmlsaXR5IHN0cnVjdHVyZQorICovCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAg
aW50IHR5cGU7CisgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CisgICAgQm9vbCBzZW5kX2V2ZW50
OyAvKiBhbHdheXMgRkFMU0UsIHdlIGRvbid0IGFsbG93IHNlbmRfZXZlbnRzICovCisgICAgRGlz
cGxheSAqZGlzcGxheTsKKyAgICBUaW1lIHRpbWU7CisgICAgaW50IHRhcmdldF90eXBlOworICAg
IGludCB0YXJnZXRfaWQ7CisgICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzazsKKyAgICB1bnNp
Z25lZCBpbnQgYXR0cmlidXRlOworICAgIGludCB2YWx1ZTsKKyAgICBCb29sIGF2YWlsYWJpbGl0
eTsKK30gWE5WQ3RybEF0dHJpYnV0ZUNoYW5nZWRFdmVudFRhcmdldEF2YWlsYWJpbGl0eTsKKwor
dHlwZWRlZiB1bmlvbgoreworICAgIGludCB0eXBlOworICAgIFhOVkN0cmxBdHRyaWJ1dGVDaGFu
Z2VkRXZlbnRUYXJnZXRBdmFpbGFiaWxpdHkgYXR0cmlidXRlX2NoYW5nZWQ7CisgICAgbG9uZyBw
YWRbMjRdOworfSBYTlZDdHJsRXZlbnRUYXJnZXRBdmFpbGFiaWxpdHk7CisKKy8qCisgKiBYTlZD
dHJsU3RyaW5nRXZlbnRUYXJnZXQgc3RydWN0dXJlCisgKi8KKwordHlwZWRlZiBzdHJ1Y3QKK3sK
KyAgICBpbnQgdHlwZTsKKyAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKKyAgICBCb29sIHNlbmRf
ZXZlbnQ7IC8qIGFsd2F5cyBGQUxTRSwgd2UgZG9uJ3QgYWxsb3cgc2VuZF9ldmVudHMgKi8KKyAg
ICBEaXNwbGF5ICpkaXNwbGF5OworICAgIFRpbWUgdGltZTsKKyAgICBpbnQgdGFyZ2V0X3R5cGU7
CisgICAgaW50IHRhcmdldF9pZDsKKyAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrOworICAg
IHVuc2lnbmVkIGludCBhdHRyaWJ1dGU7Cit9IFhOVkN0cmxTdHJpbmdBdHRyaWJ1dGVDaGFuZ2Vk
RXZlbnRUYXJnZXQ7CisKK3R5cGVkZWYgdW5pb24KK3sKKyAgICBpbnQgdHlwZTsKKyAgICBYTlZD
dHJsU3RyaW5nQXR0cmlidXRlQ2hhbmdlZEV2ZW50VGFyZ2V0IGF0dHJpYnV0ZV9jaGFuZ2VkOwor
ICAgIGxvbmcgcGFkWzI0XTsKK30gWE5WQ3RybFN0cmluZ0V2ZW50VGFyZ2V0OworCisvKgorICog
WE5WQ3RybEJpbmFyeUV2ZW50VGFyZ2V0IHN0cnVjdHVyZQorICovCisKK3R5cGVkZWYgc3RydWN0
Cit7CisgICAgaW50IHR5cGU7CisgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CisgICAgQm9vbCBz
ZW5kX2V2ZW50OyAvKiBhbHdheXMgRkFMU0UsIHdlIGRvbid0IGFsbG93IHNlbmRfZXZlbnRzICov
CisgICAgRGlzcGxheSAqZGlzcGxheTsKKyAgICBUaW1lIHRpbWU7CisgICAgaW50IHRhcmdldF90
eXBlOworICAgIGludCB0YXJnZXRfaWQ7CisgICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzazsK
KyAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlOworfSBYTlZDdHJsQmluYXJ5QXR0cmlidXRlQ2hh
bmdlZEV2ZW50VGFyZ2V0OworCit0eXBlZGVmIHVuaW9uCit7CisgICAgaW50IHR5cGU7CisgICAg
WE5WQ3RybEJpbmFyeUF0dHJpYnV0ZUNoYW5nZWRFdmVudFRhcmdldCBhdHRyaWJ1dGVfY2hhbmdl
ZDsKKyAgICBsb25nIHBhZFsyNF07Cit9IFhOVkN0cmxCaW5hcnlFdmVudFRhcmdldDsKKworI2lm
IGRlZmluZWQgX19jcGx1c3BsdXMKK30gLyogZXh0ZXJuICJDIiAqLworI2VuZGlmCisKKyNlbmRp
ZiAvKiBfX05WQ1RSTExJQl9IICovCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGhpcmRfcGFydHkvbGliWE5WQ3RybC9SRUFETUUuYW5nbGUKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0cmwvUkVBRE1FLmFuZ2xl
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0
eS9saWJYTlZDdHJsL1JFQURNRS5hbmdsZQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBA
CitOYW1lOiBOVmlkaWEgQ29udHJvbCBYIEV4dGVuc2lvbiBMaWJyYXJ5CitTaG9ydCBOYW1lOiBs
aWJYTlZDdHJsCitVUkw6IGh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9+YXBsYXR0bmVyL252
aWRpYS1zZXR0aW5ncy8KK1ZlcnNpb246IHVua25vd24KK0RhdGU6IDIwMDgKK0xpY2Vuc2U6IE1J
VAorU2VjdXJpdHkgQ3JpdGljYWw6IG5vCisKK0Rlc2NyaXB0aW9uOgorVGhpcyBwYWNrYWdlIHBy
b3ZpZGVzIGFjY2VzcyB0byBOVmlkaWEgQ29udHJvbCBYIEV4dGVuc2lvbi4gSXQgaXMgdXNlZCB0
byBkZXRlcm1pbmUgdGhlIHZlcnNpb24gb2YgdGhlIE5WSURJQSBkcml2ZXIgaW4gdXNlLgorCitU
aGUgY3VycmVudCB2ZXJzaW9uIGlzIHB1bGxlZCBmcm9tIG52aWRpYS1zZXR0aW5ncy0zMDIuMTcu
CisKK0xvY2FsIE1vZGlmaWNhdGlvbnM6CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGhpcmRfcGFydHkvbGliWE5WQ3RybC9saWJYTlZDdHJsLmd5cAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbGliWE5WQ3RybC9saWJYTlZD
dHJsLmd5cAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhp
cmRfcGFydHkvbGliWE5WQ3RybC9saWJYTlZDdHJsLmd5cAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDE4IEBACisjIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisKK3sKKyAgICAndGFyZ2V0cyc6CisgICAgW3sKKyAgICAgICAgJ3Rhcmdl
dF9uYW1lJzogJ2xpYlhOVkN0cmwnLAorICAgICAgICAndHlwZSc6ICdzdGF0aWNfbGlicmFyeScs
CisgICAgICAgICdzb3VyY2VzJzoKKyAgICAgICAgWworICAgICAgICAgICAgJ05WQ3RybC5jJywK
KyAgICAgICAgICAgICdOVkN0cmwuaCcsCisgICAgICAgICAgICAnTlZDdHJsTGliLmgnLAorICAg
ICAgICAgICAgJ252X2NvbnRyb2wuaCcsCisgICAgICAgIF0sCisgICAgfV0sCit9CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbGliWE5WQ3RybC9udl9jb250
cm9sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3Bh
cnR5L2xpYlhOVkN0cmwvbnZfY29udHJvbC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9saWJYTlZDdHJsL252X2NvbnRyb2wuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDY1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOCBO
VklESUEsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwg
ZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2YgdGhp
cyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3
YXJlIiksIHRvIGRlYWwKKyAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBp
bmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKKyAqIHRvIHVzZSwgY29weSwg
bW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNl
bGwKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3
aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj
ZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJh
Z3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9y
dGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklE
RUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICog
SU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQg
Tk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9SIENP
UFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVS
CisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9S
IE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lU
SCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKKyAqIFNP
RlRXQVJFLgorICoKKyAqCisgKiBOVi1DT05UUk9MIFByb3RvY29sIFZlcnNpb24gSGlzdG9yeQor
ICoKKyAqIDEuMCAtIDEuNSAgIE5WSURJQSBJbnRlcm5hbCBkZXZlbG9wbWVudCB2ZXJzaW9ucwor
ICogMS42ICAgICAgICAgSW5pdGlhbCBwdWJsaWMgdmVyc2lvbgorICogMS43ICAgICAgICAgQWRk
ZWQgUXVlcnlCaW5hcnlEYXRhIHJlcXVlc3QKKyAqIDEuOCAgICAgICAgIEFkZGVkIFRhcmdldFR5
cGVzCisgKiAxLjkgICAgICAgICBBZGRlZCBRdWVyeVRhcmdldENvdW50IHJlcXVlc3QKKyAqIDEu
MTAgICAgICAgIEZpeGVkIHRhcmdldCB0eXBlL2lkIGJ5dGUgb3JkZXJpbmcgZm9yIGNvbXBhdGli
aWxpdHkgd2l0aAorICogICAgICAgICAgICAgcHJlLTEuOCBOVi1DT05UUk9MIGNsaWVudHMKKyAq
IDEuMTEgICAgICAgIE5WSURJQSBJbnRlcm5hbCBkZXZlbG9wbWVudCB2ZXJzaW9uCisgKiAxLjEy
ICAgICAgICBBZGRlZCBTdHJpbmdPcGVyYXRpb24gcmVxdWVzdAorICogMS4xMyAgICAgICAgTlZJ
RElBIEludGVybmFsIGRldmVsb3BtZW50IHZlcnNpb24KKyAqIDEuMTQgICAgICAgIEZpeGVkIGFu
IE5WX0NUUkxfQklOQVJZX0RBVEFfTU9ERUxJTkVTIGRvdWJsZSBzY2FuIG1vZGVsaW5lCisgKiAg
ICAgICAgICAgICByZXBvcnRpbmcgYnVnICh2c3luY3N0YXJ0LCB2c3luY2VuZCwgYW5kIHZ0b3Rh
bCB3ZXJlIGluY29ycmVjdGx5CisgKiAgICAgICAgICAgICBkb3VibGVkKQorICogMS4xNSAgICAg
ICAgQWRkZWQgQVZBSUxBQklMSVRZX1RBUkdFVF9BVFRSSUJVVEVfQ0hBTkdFRF9FVkVOVAorICog
MS4xNiAgICAgICAgQWRkZWQgVEFSR0VUX1NUUklOR19BVFRSSUJVVEVfQ0hBTkdFRF9FVkVOVAor
ICogMS4xNyAgICAgICAgQWRkZWQgVEFSR0VUX0JJTkFSWV9BVFRSSUJVVEVfQ0hBTkdFRF9FVkVO
VAorICogMS4xOCAgICAgICAgVXBkYXRlZCBRdWVyeVRhcmdldENvdW50IHRvIHJldHVybiBhIGNv
dW50IG9mIDAsIHJhdGhlciB0aGFuCisgKiAgICAgICAgICAgICBCYWRNYXRjaCwgaWYgYW4gdW5r
bm93biBUYXJnZXRUeXBlIGlzIHNwZWNpZmllZAorICogMS4xOSAgICAgICAgQWRkZWQgVGFyZ2V0
VHlwZSBzdXBwb3J0IGZvciBTZXRBdHRyaWJ1dGVBbmRHZXRTdGF0dXMgYW5kCisgKiAgICAgICAg
ICAgICBTZXRTdHJpbmdBdHRyaWJ1dGUgcmVxdWVzdHMKKyAqIDEuMjAgICAgICAgIEFkZGVkIENP
T0xFUiBUYXJnZXRUeXBlCisgKiAxLjIxICAgICAgICBBZGRlZCBpbml0aWFsIDY0LWJpdCBpbnRl
Z2VyIGF0dHJpYnV0ZSBzdXBwb3J0IChyZWFkLW9ubHkpCisgKiAxLjIyICAgICAgICBBZGRlZCBY
X252Q3RybFF1ZXJ5VmFsaWRTdHJpbmdBdHRyaWJ1dGVWYWx1ZXMgdG8gY2hlY2sKKyAqICAgICAg
ICAgICAgIHN0cmluZyBhdHRyaWJ1dGUgcGVybWlzc2lvbnMuCisgKiAxLjIzICAgICAgICBBZGRl
ZCBTRU5TT1IgVGFyZ2V0VHlwZQorICogMS4yNCAgICAgICAgRml4ZWQgYSBidWcgd2hlcmUgU0xJ
X01PU0FJQ19NT0RFX0FWQUlMQUJMRSBhdHRyaWJ1dGUgd291bGQKKyAqICAgICAgICAgICAgIHJl
cG9ydCBmYWxzZSBwb3NpdGl2ZXMgdmlhIHRoZSBHUFUgYW5kIFggc2NyZWVuIHRhcmdldCB0eXBl
cworICogMS4yNSAgICAgICAgQWRkZWQgM0RfVklTSU9OX1BST19UUkFOU0NFSVZFUiBUYXJnZXRU
eXBlCisgKiAxLjI2ICAgICAgICBBZGRlZCBYTlZDVFJMUXVlcnlYWFhBdHRyaWJ1dGVQZXJtaXNz
aW9ucy4KKyAqIDEuMjcgICAgICAgIEFkZGVkIERJU1BMQVkgVGFyZ2V0VHlwZQorICogMS4yOCAg
ICAgICAgQWRkZWQgTlZfQ1RSTF9DVVJSRU5UX01FVEFNT0RFX0lEOiBjbGllbnRzIHNob3VsZCB1
c2UgdGhpcworICogICAgICAgICAgICAgYXR0cmlidXRlIHRvIHN3aXRjaCBNZXRhTW9kZXMsIHJh
dGhlciB0aGFuIHBhc3MgdGhlIE1ldGFNb2RlIElECisgKiAgICAgICAgICAgICB0aHJvdWdoIHRo
ZSBSUlNldFNjcmVlbkNvbmZpZyBwcm90b2NvbCByZXF1ZXN0LgorICovCisKKyNpZm5kZWYgX19O
VkNPTlRST0xfSAorI2RlZmluZSBfX05WQ09OVFJPTF9ICisKKyNkZWZpbmUgTlZfQ09OVFJPTF9F
UlJPUlMgMAorI2RlZmluZSBOVl9DT05UUk9MX0VWRU5UUyA1CisjZGVmaW5lIE5WX0NPTlRST0xf
TkFNRSAiTlYtQ09OVFJPTCIKKworI2RlZmluZSBOVl9DT05UUk9MX01BSk9SIDEKKyNkZWZpbmUg
TlZfQ09OVFJPTF9NSU5PUiAyOAorCisjZGVmaW5lIFhfbnZDdHJsUXVlcnlFeHRlbnNpb24gMAor
I2RlZmluZSBYX252Q3RybElzTnYgMQorI2RlZmluZSBYX252Q3RybFF1ZXJ5QXR0cmlidXRlIDIK
KyNkZWZpbmUgWF9udkN0cmxTZXRBdHRyaWJ1dGUgMworI2RlZmluZSBYX252Q3RybFF1ZXJ5U3Ry
aW5nQXR0cmlidXRlIDQKKyNkZWZpbmUgWF9udkN0cmxRdWVyeVZhbGlkQXR0cmlidXRlVmFsdWVz
IDUKKyNkZWZpbmUgWF9udkN0cmxTZWxlY3ROb3RpZnkgNgorI2RlZmluZSBYX252Q3RybFNldEd2
b0NvbG9yQ29udmVyc2lvbkRlcHJlY2F0ZWQgNworI2RlZmluZSBYX252Q3RybFF1ZXJ5R3ZvQ29s
b3JDb252ZXJzaW9uRGVwcmVjYXRlZCA4CisjZGVmaW5lIFhfbnZDdHJsU2V0U3RyaW5nQXR0cmli
dXRlIDkKKy8qIFNUVUIgWF9udkN0cmxRdWVyeUREQ0NJTHV0U2l6ZSAgICAgICAgICAgICAgICAg
ICAxMCAqLworLyogU1RVQiBYX252Q3RybFF1ZXJ5RERDQ0lTaW5nbGVQb2ludEx1dE9wZXJhdGlv
biAgIDExICovCisvKiBTVFVCIFhfbnZDdHJsU2V0RERDQ0lTaW5nbGVQb2ludEx1dE9wZXJhdGlv
biAgICAgMTIgKi8KKy8qIFNUVUIgWF9udkN0cmxRdWVyeUREQ0NJQmxvY2tMdXRPcGVyYXRpb24g
ICAgICAgICAxMyAqLworLyogU1RVQiBYX252Q3RybFNldEREQ0NJQmxvY2tMdXRPcGVyYXRpb24g
ICAgICAgICAgIDE0ICovCisvKiBTVFVCIFhfbnZDdHJsU2V0RERDQ0lSZW1vdGVQcm9jZWR1cmVD
YWxsICAgICAgICAgMTUgKi8KKy8qIFNUVUIgWF9udkN0cmxRdWVyeUREQ0NJRGlzcGxheUNvbnRy
b2xsZXJUeXBlICAgICAxNiAqLworLyogU1RVQiBYX252Q3RybFF1ZXJ5RERDQ0lDYXBhYmlsaXRp
ZXMgICAgICAgICAgICAgIDE3ICovCisvKiBTVFVCIFhfbnZDdHJsUXVlcnlERENDSVRpbWluZ1Jl
cG9ydCAgICAgICAgICAgICAgMTggKi8KKyNkZWZpbmUgWF9udkN0cmxTZXRBdHRyaWJ1dGVBbmRH
ZXRTdGF0dXMgMTkKKyNkZWZpbmUgWF9udkN0cmxRdWVyeUJpbmFyeURhdGEgMjAKKyNkZWZpbmUg
WF9udkN0cmxTZXRHdm9Db2xvckNvbnZlcnNpb24gMjEKKyNkZWZpbmUgWF9udkN0cmxRdWVyeUd2
b0NvbG9yQ29udmVyc2lvbiAyMgorI2RlZmluZSBYX252Q3RybFNlbGVjdFRhcmdldE5vdGlmeSAy
MworI2RlZmluZSBYX252Q3RybFF1ZXJ5VGFyZ2V0Q291bnQgMjQKKyNkZWZpbmUgWF9udkN0cmxT
dHJpbmdPcGVyYXRpb24gMjUKKyNkZWZpbmUgWF9udkN0cmxRdWVyeVZhbGlkQXR0cmlidXRlVmFs
dWVzNjQgMjYKKyNkZWZpbmUgWF9udkN0cmxRdWVyeUF0dHJpYnV0ZTY0IDI3CisjZGVmaW5lIFhf
bnZDdHJsUXVlcnlWYWxpZFN0cmluZ0F0dHJpYnV0ZVZhbHVlcyAyOAorI2RlZmluZSBYX252Q3Ry
bFF1ZXJ5QXR0cmlidXRlUGVybWlzc2lvbnMgMjkKKyNkZWZpbmUgWF9udkN0cmxRdWVyeVN0cmlu
Z0F0dHJpYnV0ZVBlcm1pc3Npb25zIDMwCisjZGVmaW5lIFhfbnZDdHJsUXVlcnlCaW5hcnlEYXRh
QXR0cmlidXRlUGVybWlzc2lvbnMgMzEKKyNkZWZpbmUgWF9udkN0cmxRdWVyeVN0cmluZ09wZXJh
dGlvbkF0dHJpYnV0ZVBlcm1pc3Npb25zIDMyCisKKyNkZWZpbmUgWF9udkN0cmxMYXN0UmVxdWVz
dCAoWF9udkN0cmxRdWVyeVN0cmluZ09wZXJhdGlvbkF0dHJpYnV0ZVBlcm1pc3Npb25zICsgMSkK
KworLyogRGVmaW5lIDMyIGJpdCBmbG9hdHMgKi8KK3R5cGVkZWYgZmxvYXQgRkxPQVQzMjsKKyNp
Zm5kZWYgRjMyCisjZGVmaW5lIEYzMgorI2VuZGlmCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAg
Q0FSRDggcmVxVHlwZTsKKyAgICBDQVJEOCBudlJlcVR5cGU7CisgICAgQ0FSRDE2IGxlbmd0aCBC
MTY7Cit9IHhudkN0cmxRdWVyeUV4dGVuc2lvblJlcTsKKyNkZWZpbmUgc3pfeG52Q3RybFF1ZXJ5
RXh0ZW5zaW9uUmVxIDQKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBCWVRFIHR5cGU7IC8qIFhf
UmVwbHkgKi8KKyAgICBDQVJEOCBwYWRiMTsKKyAgICBDQVJEMTYgc2VxdWVuY2VOdW1iZXIgQjE2
OworICAgIENBUkQzMiBsZW5ndGggQjMyOworICAgIENBUkQxNiBtYWpvciBCMTY7CisgICAgQ0FS
RDE2IG1pbm9yIEIxNjsKKyAgICBDQVJEMzIgcGFkbDQgQjMyOworICAgIENBUkQzMiBwYWRsNSBC
MzI7CisgICAgQ0FSRDMyIHBhZGw2IEIzMjsKKyAgICBDQVJEMzIgcGFkbDcgQjMyOworICAgIENB
UkQzMiBwYWRsOCBCMzI7Cit9IHhudkN0cmxRdWVyeUV4dGVuc2lvblJlcGx5OworI2RlZmluZSBz
el94bnZDdHJsUXVlcnlFeHRlbnNpb25SZXBseSAzMgorCit0eXBlZGVmIHN0cnVjdAoreworICAg
IENBUkQ4IHJlcVR5cGU7CisgICAgQ0FSRDggbnZSZXFUeXBlOworICAgIENBUkQxNiBsZW5ndGgg
QjE2OworICAgIENBUkQzMiBzY3JlZW4gQjMyOworfSB4bnZDdHJsSXNOdlJlcTsKKyNkZWZpbmUg
c3pfeG52Q3RybElzTnZSZXEgOAorCit0eXBlZGVmIHN0cnVjdAoreworICAgIEJZVEUgdHlwZTsg
LyogWF9SZXBseSAqLworICAgIENBUkQ4IHBhZGIxOworICAgIENBUkQxNiBzZXF1ZW5jZU51bWJl
ciBCMTY7CisgICAgQ0FSRDMyIGxlbmd0aCBCMzI7CisgICAgQ0FSRDMyIGlzbnYgQjMyOworICAg
IENBUkQzMiBwYWRsNCBCMzI7CisgICAgQ0FSRDMyIHBhZGw1IEIzMjsKKyAgICBDQVJEMzIgcGFk
bDYgQjMyOworICAgIENBUkQzMiBwYWRsNyBCMzI7CisgICAgQ0FSRDMyIHBhZGw4IEIzMjsKK30g
eG52Q3RybElzTnZSZXBseTsKKyNkZWZpbmUgc3pfeG52Q3RybElzTnZSZXBseSAzMgorCit0eXBl
ZGVmIHN0cnVjdAoreworICAgIENBUkQ4IHJlcVR5cGU7CisgICAgQ0FSRDggbnZSZXFUeXBlOwor
ICAgIENBUkQxNiBsZW5ndGggQjE2OworICAgIENBUkQzMiB0YXJnZXRfdHlwZSBCMzI7Cit9IHhu
dkN0cmxRdWVyeVRhcmdldENvdW50UmVxOworI2RlZmluZSBzel94bnZDdHJsUXVlcnlUYXJnZXRD
b3VudFJlcSA4CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgQllURSB0eXBlOyAvKiBYX1JlcGx5
ICovCisgICAgQ0FSRDggcGFkYjE7CisgICAgQ0FSRDE2IHNlcXVlbmNlTnVtYmVyIEIxNjsKKyAg
ICBDQVJEMzIgbGVuZ3RoIEIzMjsKKyAgICBDQVJEMzIgY291bnQgQjMyOworICAgIENBUkQzMiBw
YWRsNCBCMzI7CisgICAgQ0FSRDMyIHBhZGw1IEIzMjsKKyAgICBDQVJEMzIgcGFkbDYgQjMyOwor
ICAgIENBUkQzMiBwYWRsNyBCMzI7CisgICAgQ0FSRDMyIHBhZGw4IEIzMjsKK30geG52Q3RybFF1
ZXJ5VGFyZ2V0Q291bnRSZXBseTsKKyNkZWZpbmUgc3pfeG52Q3RybFF1ZXJ5VGFyZ2V0Q291bnRS
ZXBseSAzMgorCit0eXBlZGVmIHN0cnVjdAoreworICAgIENBUkQ4IHJlcVR5cGU7CisgICAgQ0FS
RDggbnZSZXFUeXBlOworICAgIENBUkQxNiBsZW5ndGggQjE2OworICAgIENBUkQxNiB0YXJnZXRf
aWQgQjE2OyAgIC8qIFggc2NyZWVuIG51bWJlciBvciBHUFUgbnVtYmVyICovCisgICAgQ0FSRDE2
IHRhcmdldF90eXBlIEIxNjsgLyogWCBzY3JlZW4gb3IgR1BVICovCisgICAgQ0FSRDMyIGRpc3Bs
YXlfbWFzayBCMzI7CisgICAgQ0FSRDMyIGF0dHJpYnV0ZSBCMzI7Cit9IHhudkN0cmxRdWVyeUF0
dHJpYnV0ZVJlcTsKKyNkZWZpbmUgc3pfeG52Q3RybFF1ZXJ5QXR0cmlidXRlUmVxIDE2CisKK3R5
cGVkZWYgc3RydWN0Cit7CisgICAgQllURSB0eXBlOworICAgIEJZVEUgcGFkMDsKKyAgICBDQVJE
MTYgc2VxdWVuY2VOdW1iZXIgQjE2OworICAgIENBUkQzMiBsZW5ndGggQjMyOworICAgIENBUkQz
MiBmbGFncyBCMzI7CisgICAgSU5UMzIgdmFsdWUgQjMyOworICAgIENBUkQzMiBwYWQ0IEIzMjsK
KyAgICBDQVJEMzIgcGFkNSBCMzI7CisgICAgQ0FSRDMyIHBhZDYgQjMyOworICAgIENBUkQzMiBw
YWQ3IEIzMjsKK30geG52Q3RybFF1ZXJ5QXR0cmlidXRlUmVwbHk7CisjZGVmaW5lIHN6X3hudkN0
cmxRdWVyeUF0dHJpYnV0ZVJlcGx5IDMyCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgQllURSB0
eXBlOworICAgIEJZVEUgcGFkMDsKKyAgICBDQVJEMTYgc2VxdWVuY2VOdW1iZXIgQjE2OworICAg
IENBUkQzMiBsZW5ndGggQjMyOworICAgIENBUkQzMiBmbGFncyBCMzI7CisgICAgQ0FSRDMyIHBh
ZDMgQjMyOworICAgIGludDY0X3QgdmFsdWVfNjQ7CisgICAgQ0FSRDMyIHBhZDYgQjMyOworICAg
IENBUkQzMiBwYWQ3IEIzMjsKK30geG52Q3RybFF1ZXJ5QXR0cmlidXRlNjRSZXBseTsKKyNkZWZp
bmUgc3pfeG52Q3RybFF1ZXJ5QXR0cmlidXRlNjRSZXBseSAzMgorCit0eXBlZGVmIHN0cnVjdAor
eworICAgIENBUkQ4IHJlcVR5cGU7CisgICAgQ0FSRDggbnZSZXFUeXBlOworICAgIENBUkQxNiBs
ZW5ndGggQjE2OworICAgIENBUkQxNiB0YXJnZXRfaWQgQjE2OworICAgIENBUkQxNiB0YXJnZXRf
dHlwZSBCMTY7CisgICAgQ0FSRDMyIGRpc3BsYXlfbWFzayBCMzI7CisgICAgQ0FSRDMyIGF0dHJp
YnV0ZSBCMzI7CisgICAgSU5UMzIgdmFsdWUgQjMyOworfSB4bnZDdHJsU2V0QXR0cmlidXRlUmVx
OworI2RlZmluZSBzel94bnZDdHJsU2V0QXR0cmlidXRlUmVxIDIwCisKK3R5cGVkZWYgc3RydWN0
Cit7CisgICAgQ0FSRDggcmVxVHlwZTsKKyAgICBDQVJEOCBudlJlcVR5cGU7CisgICAgQ0FSRDE2
IGxlbmd0aCBCMTY7CisgICAgQ0FSRDE2IHRhcmdldF9pZCBCMTY7CisgICAgQ0FSRDE2IHRhcmdl
dF90eXBlIEIxNjsKKyAgICBDQVJEMzIgZGlzcGxheV9tYXNrIEIzMjsKKyAgICBDQVJEMzIgYXR0
cmlidXRlIEIzMjsKKyAgICBJTlQzMiB2YWx1ZSBCMzI7Cit9IHhudkN0cmxTZXRBdHRyaWJ1dGVB
bmRHZXRTdGF0dXNSZXE7CisjZGVmaW5lIHN6X3hudkN0cmxTZXRBdHRyaWJ1dGVBbmRHZXRTdGF0
dXNSZXEgMjAKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBCWVRFIHR5cGU7CisgICAgQllURSBw
YWQwOworICAgIENBUkQxNiBzZXF1ZW5jZU51bWJlciBCMTY7CisgICAgQ0FSRDMyIGxlbmd0aCBC
MzI7CisgICAgQ0FSRDMyIGZsYWdzIEIzMjsKKyAgICBDQVJEMzIgcGFkMyBCMzI7CisgICAgQ0FS
RDMyIHBhZDQgQjMyOworICAgIENBUkQzMiBwYWQ1IEIzMjsKKyAgICBDQVJEMzIgcGFkNiBCMzI7
CisgICAgQ0FSRDMyIHBhZDcgQjMyOworfSB4bnZDdHJsU2V0QXR0cmlidXRlQW5kR2V0U3RhdHVz
UmVwbHk7CisjZGVmaW5lIHN6X3hudkN0cmxTZXRBdHRyaWJ1dGVBbmRHZXRTdGF0dXNSZXBseSAz
MgorCit0eXBlZGVmIHN0cnVjdAoreworICAgIENBUkQ4IHJlcVR5cGU7CisgICAgQ0FSRDggbnZS
ZXFUeXBlOworICAgIENBUkQxNiBsZW5ndGggQjE2OworICAgIENBUkQxNiB0YXJnZXRfaWQgQjE2
OyAgIC8qIFggc2NyZWVuIG51bWJlciBvciBHUFUgbnVtYmVyICovCisgICAgQ0FSRDE2IHRhcmdl
dF90eXBlIEIxNjsgLyogWCBzY3JlZW4gb3IgR1BVICovCisgICAgQ0FSRDMyIGRpc3BsYXlfbWFz
ayBCMzI7CisgICAgQ0FSRDMyIGF0dHJpYnV0ZSBCMzI7Cit9IHhudkN0cmxRdWVyeVN0cmluZ0F0
dHJpYnV0ZVJlcTsKKyNkZWZpbmUgc3pfeG52Q3RybFF1ZXJ5U3RyaW5nQXR0cmlidXRlUmVxIDE2
CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgQllURSB0eXBlOworICAgIEJZVEUgcGFkMDsKKyAg
ICBDQVJEMTYgc2VxdWVuY2VOdW1iZXIgQjE2OworICAgIENBUkQzMiBsZW5ndGggQjMyOworICAg
IENBUkQzMiBmbGFncyBCMzI7CisgICAgQ0FSRDMyIG4gQjMyOyAvKiBMZW5ndGggb2Ygc3RyaW5n
ICovCisgICAgQ0FSRDMyIHBhZDQgQjMyOworICAgIENBUkQzMiBwYWQ1IEIzMjsKKyAgICBDQVJE
MzIgcGFkNiBCMzI7CisgICAgQ0FSRDMyIHBhZDcgQjMyOworfSB4bnZDdHJsUXVlcnlTdHJpbmdB
dHRyaWJ1dGVSZXBseTsKKyNkZWZpbmUgc3pfeG52Q3RybFF1ZXJ5U3RyaW5nQXR0cmlidXRlUmVw
bHkgMzIKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBDQVJEOCByZXFUeXBlOworICAgIENBUkQ4
IG52UmVxVHlwZTsKKyAgICBDQVJEMTYgbGVuZ3RoIEIxNjsKKyAgICBDQVJEMTYgdGFyZ2V0X2lk
IEIxNjsKKyAgICBDQVJEMTYgdGFyZ2V0X3R5cGUgQjE2OworICAgIENBUkQzMiBkaXNwbGF5X21h
c2sgQjMyOworICAgIENBUkQzMiBhdHRyaWJ1dGUgQjMyOworICAgIENBUkQzMiBudW1fYnl0ZXMg
QjMyOworfSB4bnZDdHJsU2V0U3RyaW5nQXR0cmlidXRlUmVxOworI2RlZmluZSBzel94bnZDdHJs
U2V0U3RyaW5nQXR0cmlidXRlUmVxIDIwCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgQllURSB0
eXBlOworICAgIEJZVEUgcGFkMDsKKyAgICBDQVJEMTYgc2VxdWVuY2VOdW1iZXIgQjE2OworICAg
IENBUkQzMiBsZW5ndGggQjMyOworICAgIENBUkQzMiBmbGFncyBCMzI7CisgICAgQ0FSRDMyIHBh
ZDMgQjMyOworICAgIENBUkQzMiBwYWQ0IEIzMjsKKyAgICBDQVJEMzIgcGFkNSBCMzI7CisgICAg
Q0FSRDMyIHBhZDYgQjMyOworICAgIENBUkQzMiBwYWQ3IEIzMjsKK30geG52Q3RybFNldFN0cmlu
Z0F0dHJpYnV0ZVJlcGx5OworI2RlZmluZSBzel94bnZDdHJsU2V0U3RyaW5nQXR0cmlidXRlUmVw
bHkgMzIKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBDQVJEOCByZXFUeXBlOworICAgIENBUkQ4
IG52UmVxVHlwZTsKKyAgICBDQVJEMTYgbGVuZ3RoIEIxNjsKKyAgICBDQVJEMTYgdGFyZ2V0X2lk
IEIxNjsgICAvKiBYIHNjcmVlbiBudW1iZXIgb3IgR1BVIG51bWJlciAqLworICAgIENBUkQxNiB0
YXJnZXRfdHlwZSBCMTY7IC8qIFggc2NyZWVuIG9yIEdQVSAqLworICAgIENBUkQzMiBkaXNwbGF5
X21hc2sgQjMyOworICAgIENBUkQzMiBhdHRyaWJ1dGUgQjMyOworfSB4bnZDdHJsUXVlcnlWYWxp
ZEF0dHJpYnV0ZVZhbHVlc1JlcTsKKyNkZWZpbmUgc3pfeG52Q3RybFF1ZXJ5VmFsaWRBdHRyaWJ1
dGVWYWx1ZXNSZXEgMTYKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBCWVRFIHR5cGU7CisgICAg
QllURSBwYWQwOworICAgIENBUkQxNiBzZXF1ZW5jZU51bWJlciBCMTY7CisgICAgQ0FSRDMyIGxl
bmd0aCBCMzI7CisgICAgQ0FSRDMyIGZsYWdzIEIzMjsKKyAgICBJTlQzMiBhdHRyX3R5cGUgQjMy
OworICAgIElOVDMyIG1pbiBCMzI7CisgICAgSU5UMzIgbWF4IEIzMjsKKyAgICBDQVJEMzIgYml0
cyBCMzI7CisgICAgQ0FSRDMyIHBlcm1zIEIzMjsKK30geG52Q3RybFF1ZXJ5VmFsaWRBdHRyaWJ1
dGVWYWx1ZXNSZXBseTsKKyNkZWZpbmUgc3pfeG52Q3RybFF1ZXJ5VmFsaWRBdHRyaWJ1dGVWYWx1
ZXNSZXBseSAzMgorCit0eXBlZGVmIHN0cnVjdAoreworICAgIEJZVEUgdHlwZTsKKyAgICBCWVRF
IHBhZDA7CisgICAgQ0FSRDE2IHNlcXVlbmNlTnVtYmVyIEIxNjsKKyAgICBDQVJEMzIgbGVuZ3Ro
IEIzMjsKKyAgICBDQVJEMzIgZmxhZ3MgQjMyOworICAgIElOVDMyIGF0dHJfdHlwZSBCMzI7Cisg
ICAgaW50NjRfdCBtaW5fNjQ7CisgICAgaW50NjRfdCBtYXhfNjQ7CisgICAgQ0FSRDY0IGJpdHNf
NjQ7CisgICAgQ0FSRDMyIHBlcm1zIEIzMjsKKyAgICBDQVJEMzIgcGFkMSBCMzI7Cit9IHhudkN0
cmxRdWVyeVZhbGlkQXR0cmlidXRlVmFsdWVzNjRSZXBseTsKKyNkZWZpbmUgc3pfeG52Q3RybFF1
ZXJ5VmFsaWRBdHRyaWJ1dGVWYWx1ZXM2NFJlcGx5IDQ4CisjZGVmaW5lIHN6X3hudkN0cmxRdWVy
eVZhbGlkQXR0cmlidXRlVmFsdWVzNjRSZXBseV9leHRyYSAoKDQ4IC0gMzIpID4+IDIpCisKK3R5
cGVkZWYgc3RydWN0Cit7CisgICAgQ0FSRDggcmVxVHlwZTsKKyAgICBDQVJEOCBudlJlcVR5cGU7
CisgICAgQ0FSRDE2IGxlbmd0aCBCMTY7CisgICAgQ0FSRDMyIGF0dHJpYnV0ZSBCMzI7Cit9IHhu
dkN0cmxRdWVyeUF0dHJpYnV0ZVBlcm1pc3Npb25zUmVxOworI2RlZmluZSBzel94bnZDdHJsUXVl
cnlBdHRyaWJ1dGVQZXJtaXNzaW9uc1JlcSA4CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgQllU
RSB0eXBlOworICAgIEJZVEUgcGFkMDsKKyAgICBDQVJEMTYgc2VxdWVuY2VOdW1iZXIgQjE2Owor
ICAgIENBUkQzMiBsZW5ndGggQjMyOworICAgIENBUkQzMiBmbGFncyBCMzI7CisgICAgSU5UMzIg
YXR0cl90eXBlIEIzMjsKKyAgICBDQVJEMzIgcGVybXMgQjMyOworICAgIENBUkQzMiBwYWQ1IEIz
MjsKKyAgICBDQVJEMzIgcGFkNiBCMzI7CisgICAgQ0FSRDMyIHBhZDcgQjMyOworICAgIENBUkQz
MiBwYWQ4IEIzMjsKK30geG52Q3RybFF1ZXJ5QXR0cmlidXRlUGVybWlzc2lvbnNSZXBseTsKKyNk
ZWZpbmUgc3pfeG52Q3RybFF1ZXJ5QXR0cmlidXRlUGVybWlzc2lvbnNSZXBseSAzMgorCisvKiBT
ZXQgR1ZPIENvbG9yIENvbnZlcnNpb24gcmVxdWVzdCAoZGVwcmVjYXRlZCkgKi8KK3R5cGVkZWYg
c3RydWN0Cit7CisgICAgQ0FSRDggcmVxVHlwZTsKKyAgICBDQVJEOCBudlJlcVR5cGU7CisgICAg
Q0FSRDE2IGxlbmd0aCBCMTY7CisgICAgQ0FSRDMyIHNjcmVlbiBCMzI7CisgICAgRkxPQVQzMiBy
b3cxX2NvbDEgRjMyOworICAgIEZMT0FUMzIgcm93MV9jb2wyIEYzMjsKKyAgICBGTE9BVDMyIHJv
dzFfY29sMyBGMzI7CisgICAgRkxPQVQzMiByb3cxX2NvbDQgRjMyOworICAgIEZMT0FUMzIgcm93
Ml9jb2wxIEYzMjsKKyAgICBGTE9BVDMyIHJvdzJfY29sMiBGMzI7CisgICAgRkxPQVQzMiByb3cy
X2NvbDMgRjMyOworICAgIEZMT0FUMzIgcm93Ml9jb2w0IEYzMjsKKyAgICBGTE9BVDMyIHJvdzNf
Y29sMSBGMzI7CisgICAgRkxPQVQzMiByb3czX2NvbDIgRjMyOworICAgIEZMT0FUMzIgcm93M19j
b2wzIEYzMjsKKyAgICBGTE9BVDMyIHJvdzNfY29sNCBGMzI7Cit9IHhudkN0cmxTZXRHdm9Db2xv
ckNvbnZlcnNpb25EZXByZWNhdGVkUmVxOworI2RlZmluZSBzel94bnZDdHJsU2V0R3ZvQ29sb3JD
b252ZXJzaW9uRGVwcmVjYXRlZFJlcSA1NgorCisvKiBRdWVyeSBHVk8gQ29sb3IgQ29udmVyc2lv
biByZXF1ZXN0IChkZXByZWNhdGVkKSAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBDQVJEOCBy
ZXFUeXBlOworICAgIENBUkQ4IG52UmVxVHlwZTsKKyAgICBDQVJEMTYgbGVuZ3RoIEIxNjsKKyAg
ICBDQVJEMzIgc2NyZWVuIEIzMjsKK30geG52Q3RybFF1ZXJ5R3ZvQ29sb3JDb252ZXJzaW9uRGVw
cmVjYXRlZFJlcTsKKyNkZWZpbmUgc3pfeG52Q3RybFF1ZXJ5R3ZvQ29sb3JDb252ZXJzaW9uRGVw
cmVjYXRlZFJlcSA4CisKKy8qIFF1ZXJ5IEdWTyBDb2xvciBDb252ZXJzaW9uIHJlcGx5IChkZXBy
ZWNhdGVkKSAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBCWVRFIHR5cGU7IC8qIFhfUmVwbHkg
Ki8KKyAgICBCWVRFIHBhZDA7CisgICAgQ0FSRDE2IHNlcXVlbmNlTnVtYmVyIEIxNjsKKyAgICBD
QVJEMzIgbGVuZ3RoIEIzMjsKKyAgICBDQVJEMzIgcGFkMyBCMzI7CisgICAgQ0FSRDMyIHBhZDQg
QjMyOworICAgIENBUkQzMiBwYWQ1IEIzMjsKKyAgICBDQVJEMzIgcGFkNiBCMzI7CisgICAgQ0FS
RDMyIHBhZDcgQjMyOworICAgIENBUkQzMiBwYWQ4IEIzMjsKK30geG52Q3RybFF1ZXJ5R3ZvQ29s
b3JDb252ZXJzaW9uRGVwcmVjYXRlZFJlcGx5OworI2RlZmluZSBzel94bnZDdHJsUXVlcnlHdm9D
b2xvckNvbnZlcnNpb25EZXByZWNhdGVkUmVwbHkgMzIKKworLyogU2V0IEdWTyBDb2xvciBDb252
ZXJzaW9uIHJlcXVlc3QgKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgICAgQ0FSRDggcmVxVHlwZTsK
KyAgICBDQVJEOCBudlJlcVR5cGU7CisgICAgQ0FSRDE2IGxlbmd0aCBCMTY7CisgICAgQ0FSRDMy
IHNjcmVlbiBCMzI7CisKKyAgICBGTE9BVDMyIGNzY01hdHJpeF95X3IgRjMyOworICAgIEZMT0FU
MzIgY3NjTWF0cml4X3lfZyBGMzI7CisgICAgRkxPQVQzMiBjc2NNYXRyaXhfeV9iIEYzMjsKKwor
ICAgIEZMT0FUMzIgY3NjTWF0cml4X2NyX3IgRjMyOworICAgIEZMT0FUMzIgY3NjTWF0cml4X2Ny
X2cgRjMyOworICAgIEZMT0FUMzIgY3NjTWF0cml4X2NyX2IgRjMyOworCisgICAgRkxPQVQzMiBj
c2NNYXRyaXhfY2JfciBGMzI7CisgICAgRkxPQVQzMiBjc2NNYXRyaXhfY2JfZyBGMzI7CisgICAg
RkxPQVQzMiBjc2NNYXRyaXhfY2JfYiBGMzI7CisKKyAgICBGTE9BVDMyIGNzY09mZnNldF95IEYz
MjsKKyAgICBGTE9BVDMyIGNzY09mZnNldF9jciBGMzI7CisgICAgRkxPQVQzMiBjc2NPZmZzZXRf
Y2IgRjMyOworCisgICAgRkxPQVQzMiBjc2NTY2FsZV95IEYzMjsKKyAgICBGTE9BVDMyIGNzY1Nj
YWxlX2NyIEYzMjsKKyAgICBGTE9BVDMyIGNzY1NjYWxlX2NiIEYzMjsKKworfSB4bnZDdHJsU2V0
R3ZvQ29sb3JDb252ZXJzaW9uUmVxOworI2RlZmluZSBzel94bnZDdHJsU2V0R3ZvQ29sb3JDb252
ZXJzaW9uUmVxIDY4CisKKy8qIFF1ZXJ5IEdWTyBDb2xvciBDb252ZXJzaW9uIHJlcXVlc3QgKi8K
K3R5cGVkZWYgc3RydWN0Cit7CisgICAgQ0FSRDggcmVxVHlwZTsKKyAgICBDQVJEOCBudlJlcVR5
cGU7CisgICAgQ0FSRDE2IGxlbmd0aCBCMTY7CisgICAgQ0FSRDMyIHNjcmVlbiBCMzI7Cit9IHhu
dkN0cmxRdWVyeUd2b0NvbG9yQ29udmVyc2lvblJlcTsKKyNkZWZpbmUgc3pfeG52Q3RybFF1ZXJ5
R3ZvQ29sb3JDb252ZXJzaW9uUmVxIDgKKworLyogUXVlcnkgR1ZPIENvbG9yIENvbnZlcnNpb24g
cmVwbHkgKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgICAgQllURSB0eXBlOyAvKiBYX1JlcGx5ICov
CisgICAgQllURSBwYWQwOworICAgIENBUkQxNiBzZXF1ZW5jZU51bWJlciBCMTY7CisgICAgQ0FS
RDMyIGxlbmd0aCBCMzI7CisgICAgQ0FSRDMyIHBhZDMgQjMyOworICAgIENBUkQzMiBwYWQ0IEIz
MjsKKyAgICBDQVJEMzIgcGFkNSBCMzI7CisgICAgQ0FSRDMyIHBhZDYgQjMyOworICAgIENBUkQz
MiBwYWQ3IEIzMjsKKyAgICBDQVJEMzIgcGFkOCBCMzI7Cit9IHhudkN0cmxRdWVyeUd2b0NvbG9y
Q29udmVyc2lvblJlcGx5OworI2RlZmluZSBzel94bnZDdHJsUXVlcnlHdm9Db2xvckNvbnZlcnNp
b25SZXBseSAzMgorCit0eXBlZGVmIHN0cnVjdAoreworICAgIENBUkQ4IHJlcVR5cGU7CisgICAg
Q0FSRDggbnZSZXFUeXBlOworICAgIENBUkQxNiBsZW5ndGggQjE2OworICAgIENBUkQxNiB0YXJn
ZXRfaWQgQjE2OyAgIC8qIFggc2NyZWVuIG51bWJlciBvciBHUFUgbnVtYmVyICovCisgICAgQ0FS
RDE2IHRhcmdldF90eXBlIEIxNjsgLyogWCBzY3JlZW4gb3IgR1BVICovCisgICAgQ0FSRDMyIGRp
c3BsYXlfbWFzayBCMzI7CisgICAgQ0FSRDMyIGF0dHJpYnV0ZSBCMzI7Cit9IHhudkN0cmxRdWVy
eUJpbmFyeURhdGFSZXE7CisjZGVmaW5lIHN6X3hudkN0cmxRdWVyeUJpbmFyeURhdGFSZXEgMTYK
KwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBCWVRFIHR5cGU7CisgICAgQllURSBwYWQwOworICAg
IENBUkQxNiBzZXF1ZW5jZU51bWJlciBCMTY7CisgICAgQ0FSRDMyIGxlbmd0aCBCMzI7CisgICAg
Q0FSRDMyIGZsYWdzIEIzMjsKKyAgICBDQVJEMzIgbiBCMzI7CisgICAgQ0FSRDMyIHBhZDQgQjMy
OworICAgIENBUkQzMiBwYWQ1IEIzMjsKKyAgICBDQVJEMzIgcGFkNiBCMzI7CisgICAgQ0FSRDMy
IHBhZDcgQjMyOworfSB4bnZDdHJsUXVlcnlCaW5hcnlEYXRhUmVwbHk7CisjZGVmaW5lIHN6X3hu
dkN0cmxRdWVyeUJpbmFyeURhdGFSZXBseSAzMgorCit0eXBlZGVmIHN0cnVjdAoreworICAgIENB
UkQ4IHJlcVR5cGU7CisgICAgQ0FSRDggbnZSZXFUeXBlOworICAgIENBUkQxNiBsZW5ndGggQjE2
OworICAgIENBUkQzMiBzY3JlZW4gQjMyOworICAgIENBUkQxNiBub3RpZnlUeXBlIEIxNjsKKyAg
ICBDQVJEMTYgb25vZmYgQjE2OworfSB4bnZDdHJsU2VsZWN0Tm90aWZ5UmVxOworI2RlZmluZSBz
el94bnZDdHJsU2VsZWN0Tm90aWZ5UmVxIDEyCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgQ0FS
RDggcmVxVHlwZTsKKyAgICBDQVJEOCBudlJlcVR5cGU7CisgICAgQ0FSRDE2IGxlbmd0aCBCMTY7
CisgICAgQ0FSRDE2IHRhcmdldF9pZCBCMTY7ICAgLyogWCBzY3JlZW4gbnVtYmVyIG9yIEdQVSBu
dW1iZXIgKi8KKyAgICBDQVJEMTYgdGFyZ2V0X3R5cGUgQjE2OyAvKiBYIHNjcmVlbiBvciBHUFUg
Ki8KKyAgICBDQVJEMzIgZGlzcGxheV9tYXNrIEIzMjsKKyAgICBDQVJEMzIgYXR0cmlidXRlIEIz
MjsKKyAgICBDQVJEMzIgbnVtX2J5dGVzIEIzMjsgLyogTGVuZ3RoIG9mIHN0cmluZyAqLworfSB4
bnZDdHJsU3RyaW5nT3BlcmF0aW9uUmVxOworI2RlZmluZSBzel94bnZDdHJsU3RyaW5nT3BlcmF0
aW9uUmVxIDIwCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgQllURSB0eXBlOyAvKiBYX1JlcGx5
ICovCisgICAgQ0FSRDggcGFkYjE7CisgICAgQ0FSRDE2IHNlcXVlbmNlTnVtYmVyIEIxNjsKKyAg
ICBDQVJEMzIgbGVuZ3RoIEIzMjsKKyAgICBDQVJEMzIgcmV0IEIzMjsKKyAgICBDQVJEMzIgbnVt
X2J5dGVzIEIzMjsgLyogTGVuZ3RoIG9mIHN0cmluZyAqLworICAgIENBUkQzMiBwYWRsNCBCMzI7
CisgICAgQ0FSRDMyIHBhZGw1IEIzMjsKKyAgICBDQVJEMzIgcGFkbDYgQjMyOworICAgIENBUkQz
MiBwYWRsNyBCMzI7Cit9IHhudkN0cmxTdHJpbmdPcGVyYXRpb25SZXBseTsKKyNkZWZpbmUgc3pf
eG52Q3RybFN0cmluZ09wZXJhdGlvblJlcGx5IDMyCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAg
dW5pb24KKyAgICB7CisgICAgICAgIHN0cnVjdAorICAgICAgICB7CisgICAgICAgICAgICBCWVRF
IHR5cGU7CisgICAgICAgICAgICBCWVRFIGRldGFpbDsKKyAgICAgICAgICAgIENBUkQxNiBzZXF1
ZW5jZU51bWJlciBCMTY7CisgICAgICAgIH0gdTsKKyAgICAgICAgc3RydWN0CisgICAgICAgIHsK
KyAgICAgICAgICAgIEJZVEUgdHlwZTsKKyAgICAgICAgICAgIEJZVEUgZGV0YWlsOworICAgICAg
ICAgICAgQ0FSRDE2IHNlcXVlbmNlTnVtYmVyIEIxNjsKKyAgICAgICAgICAgIENBUkQzMiB0aW1l
IEIzMjsKKyAgICAgICAgICAgIENBUkQzMiBzY3JlZW4gQjMyOworICAgICAgICAgICAgQ0FSRDMy
IGRpc3BsYXlfbWFzayBCMzI7CisgICAgICAgICAgICBDQVJEMzIgYXR0cmlidXRlIEIzMjsKKyAg
ICAgICAgICAgIENBUkQzMiB2YWx1ZSBCMzI7CisgICAgICAgICAgICBDQVJEMzIgcGFkMCBCMzI7
CisgICAgICAgICAgICBDQVJEMzIgcGFkMSBCMzI7CisgICAgICAgIH0gYXR0cmlidXRlX2NoYW5n
ZWQ7CisgICAgfSB1OworfSB4bnZjdHJsRXZlbnQ7CisKKy8qCisgKiBMZWF2ZSB0YXJnZXRfdHlw
ZSBiZWZvcmUgdGFyZ2V0X2lkIGZvciB0aGUKKyAqIHhudkN0cmxTZWxlY3RUYXJnZXROb3RpZnlS
ZXEgYW5kIHhudmN0cmxFdmVudFRhcmdldAorICogc3RydWN0dXJlcywgZXZlbiB0aG91Z2ggb3Ro
ZXIgcmVxdWVzdCBwcm90b2NvbCBzdHJ1Y3R1cmVzCisgKiBzdG9yZSB0YXJnZXRfaWQgaW4gdGhl
IGJvdHRvbSAxNi1iaXRzIG9mIHRoZSBzZWNvbmQgRFdPUkQgb2YgdGhlCisgKiBzdHJ1Y3R1cmVz
LiAgVGhlIGV2ZW50LXJlbGF0ZWQgc3RydWN0dXJlcyB3ZXJlIGFkZGVkIGluIHZlcnNpb24KKyAq
IDEuOCwgYW5kIHNvIHRoZXJlIGlzIG5vIHByaW9yIHZlcnNpb24gd2l0aCB3aGljaCB0byBtYWlu
dGFpbgorICogY29tcGF0aWJpbGl0eS4KKyAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBDQVJE
OCByZXFUeXBlOworICAgIENBUkQ4IG52UmVxVHlwZTsKKyAgICBDQVJEMTYgbGVuZ3RoIEIxNjsK
KyAgICBDQVJEMTYgdGFyZ2V0X3R5cGUgQjE2OyAvKiBEb24ndCBzd2FwIHRoZXNlICovCisgICAg
Q0FSRDE2IHRhcmdldF9pZCBCMTY7CisgICAgQ0FSRDE2IG5vdGlmeVR5cGUgQjE2OworICAgIENB
UkQxNiBvbm9mZiBCMTY7Cit9IHhudkN0cmxTZWxlY3RUYXJnZXROb3RpZnlSZXE7CisjZGVmaW5l
IHN6X3hudkN0cmxTZWxlY3RUYXJnZXROb3RpZnlSZXEgMTIKKwordHlwZWRlZiBzdHJ1Y3QKK3sK
KyAgICB1bmlvbgorICAgIHsKKyAgICAgICAgc3RydWN0CisgICAgICAgIHsKKyAgICAgICAgICAg
IEJZVEUgdHlwZTsKKyAgICAgICAgICAgIEJZVEUgZGV0YWlsOworICAgICAgICAgICAgQ0FSRDE2
IHNlcXVlbmNlTnVtYmVyIEIxNjsKKyAgICAgICAgfSB1OworICAgICAgICBzdHJ1Y3QKKyAgICAg
ICAgeworICAgICAgICAgICAgQllURSB0eXBlOworICAgICAgICAgICAgQllURSBkZXRhaWw7Cisg
ICAgICAgICAgICBDQVJEMTYgc2VxdWVuY2VOdW1iZXIgQjE2OworICAgICAgICAgICAgQ0FSRDMy
IHRpbWUgQjMyOworICAgICAgICAgICAgQ0FSRDE2IHRhcmdldF90eXBlIEIxNjsgLyogRG9uJ3Qg
c3dhcCB0aGVzZSAqLworICAgICAgICAgICAgQ0FSRDE2IHRhcmdldF9pZCBCMTY7CisgICAgICAg
ICAgICBDQVJEMzIgZGlzcGxheV9tYXNrIEIzMjsKKyAgICAgICAgICAgIENBUkQzMiBhdHRyaWJ1
dGUgQjMyOworICAgICAgICAgICAgQ0FSRDMyIHZhbHVlIEIzMjsKKyAgICAgICAgICAgIENBUkQz
MiBwYWQwIEIzMjsKKyAgICAgICAgICAgIENBUkQzMiBwYWQxIEIzMjsKKyAgICAgICAgfSBhdHRy
aWJ1dGVfY2hhbmdlZDsKKyAgICAgICAgc3RydWN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEJZ
VEUgdHlwZTsKKyAgICAgICAgICAgIEJZVEUgZGV0YWlsOworICAgICAgICAgICAgQ0FSRDE2IHNl
cXVlbmNlTnVtYmVyIEIxNjsKKyAgICAgICAgICAgIENBUkQzMiB0aW1lIEIzMjsKKyAgICAgICAg
ICAgIENBUkQxNiB0YXJnZXRfdHlwZSBCMTY7IC8qIERvbid0IHN3YXAgdGhlc2UgKi8KKyAgICAg
ICAgICAgIENBUkQxNiB0YXJnZXRfaWQgQjE2OworICAgICAgICAgICAgQ0FSRDMyIGRpc3BsYXlf
bWFzayBCMzI7CisgICAgICAgICAgICBDQVJEMzIgYXR0cmlidXRlIEIzMjsKKyAgICAgICAgICAg
IENBUkQzMiB2YWx1ZSBCMzI7CisgICAgICAgICAgICBDQVJEOCBhdmFpbGFiaWxpdHk7CisgICAg
ICAgICAgICBDQVJEOCBwYWQwOworICAgICAgICAgICAgQ0FSRDE2IHBhZDEgQjE2OworICAgICAg
ICAgICAgQ0FSRDMyIHBhZDIgQjMyOworICAgICAgICB9IGF2YWlsYWJpbGl0eV9jaGFuZ2VkOwor
ICAgIH0gdTsKK30geG52Y3RybEV2ZW50VGFyZ2V0OworCisjZW5kaWYgLyogX19OVkNPTlRST0xf
SCAqLwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L211cm11
cmhhc2gvTXVybXVySGFzaDMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90aGlyZF9wYXJ0eS9tdXJtdXJoYXNoL011cm11ckhhc2gzLmNwcAkocmV2aXNpb24g
MjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L211cm11
cmhhc2gvTXVybXVySGFzaDMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNiwyMCArMTYsMjAgQEAK
IAogI2lmIGRlZmluZWQoX01TQ19WRVIpCiAKLSNkZWZpbmUgRk9SQ0VfSU5MSU5FIF9fZm9yY2Vp
bmxpbmUKKyNkZWZpbmUgRk9SQ0VfSU5MSU5FCV9fZm9yY2VpbmxpbmUKIAogI2luY2x1ZGUgPHN0
ZGxpYi5oPgogCi0jZGVmaW5lIFJPVEwzMih4LHkpIF9yb3RsKHgseSkKLSNkZWZpbmUgUk9UTDY0
KHgseSkgX3JvdGw2NCh4LHkpCisjZGVmaW5lIFJPVEwzMih4LHkpCV9yb3RsKHgseSkKKyNkZWZp
bmUgUk9UTDY0KHgseSkJX3JvdGw2NCh4LHkpCiAKICNkZWZpbmUgQklHX0NPTlNUQU5UKHgpICh4
KQogCiAvLyBPdGhlciBjb21waWxlcnMKIAotI2Vsc2UgLy8gZGVmaW5lZChfTVNDX1ZFUikKKyNl
bHNlCS8vIGRlZmluZWQoX01TQ19WRVIpCiAKLSNkZWZpbmUgRk9SQ0VfSU5MSU5FIGlubGluZSBf
X2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkKKyNkZWZpbmUJRk9SQ0VfSU5MSU5FIGlubGlu
ZSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkKIAogaW5saW5lIHVpbnQzMl90IHJvdGwz
MiAoIHVpbnQzMl90IHgsIGludDhfdCByICkKIHsKQEAgLTQxLDggKzQxLDggQEAgaW5saW5lIHVp
bnQ2NF90IHJvdGw2NCAoIHVpbnQ2NF90IHgsIGludAogICByZXR1cm4gKHggPDwgcikgfCAoeCA+
PiAoNjQgLSByKSk7CiB9CiAKLSNkZWZpbmUgUk9UTDMyKHgseSkgcm90bDMyKHgseSkKLSNkZWZp
bmUgUk9UTDY0KHgseSkgcm90bDY0KHgseSkKKyNkZWZpbmUJUk9UTDMyKHgseSkJcm90bDMyKHgs
eSkKKyNkZWZpbmUgUk9UTDY0KHgseSkJcm90bDY0KHgseSkKIAogI2RlZmluZSBCSUdfQ09OU1RB
TlQoeCkgKHgjI0xMVSkKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJk
X3BhcnR5L211cm11cmhhc2gvTXVybXVySGFzaDMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbXVybXVyaGFzaC9NdXJtdXJIYXNoMy5oCShy
ZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFy
dHkvbXVybXVyaGFzaC9NdXJtdXJIYXNoMy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw3ICsxOCw3
IEBAIHR5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCB1aW50NjRfdDsKIAogLy8gT3RoZXIgY29tcGls
ZXJzCiAKLSNlbHNlIC8vIGRlZmluZWQoX01TQ19WRVIpCisjZWxzZQkvLyBkZWZpbmVkKF9NU0Nf
VkVSKQogCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3RoaXJkX3BhcnR5L2RlcXAvUkVBRE1FLmFuZ2xlCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3RoaXJkX3BhcnR5L2RlcXAvUkVBRE1FLmFuZ2xlCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3RoaXJkX3BhcnR5L2RlcXAvUkVBRE1FLmFu
Z2xlCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKK05hbWU6IGRyYXdFbGVtZW50cyBR
dWFsaXR5IFByb2dyYW0KK1Nob3J0IE5hbWU6IGRFUVAKK1ZlcnNpb246IDEuMAorVVJMOiBodHRw
czovL3NvdXJjZS5hbmRyb2lkLmNvbS9kZXZpY2VzL2dyYXBoaWNzL3Rlc3RpbmcuaHRtbAorU09V
UkNFIENPREU6IGdpdCBjbG9uZSAtYiBkZXFwLWRldiBodHRwczovL2FuZHJvaWQuZ29vZ2xlc291
cmNlLmNvbS9wbGF0Zm9ybS9leHRlcm5hbC9kZXFwLworRGF0ZTogMjAvMDYvMjAxNgorUmV2aXNp
b246IGY0ZjNkODA3OWU3YTM3ZDc2NzVhYjkzNTgzZTY0MzhkMGJjYTBlNTgKK1NlY3VyaXR5IENy
aXRpY2FsOiBubworTGljZW5zZTogQXBhY2hlIDIuMAorTGljZW5zZSBGaWxlOiBMSUNFTlNFCisK
K0Rlc2NyaXB0aW9uOgorZEVRUCBpcyBhIHNldCBvZiB0ZXN0cyBhbmQgdGVzdGluZyB0b29scyBm
b3IgR1BVcyBhbmQgdGhlaXIgZHJpdmVycy4gSXQgY3VycmVudGx5IHN1cHBvcnRzIE9wZW5HTCBF
UyAyLjAgLSAzLjEgJiBBRVAgYW5kIEVHTC4gVGhlIGRFUVAgaGFzIGJlZW4gcGFydCBvZiB0aGUg
QW5kcm9pZCBDVFMgc2luY2UgdGhlIEwgcmVsZWFzZS4KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3V0aWwvRUdMV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS91dGlsL0VHTFdpbmRvdy5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3V0aWwvRUdMV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEw
LDYgKzExMCw4IEBAIEVHTFdpbmRvdzo6RUdMV2luZG93KEVHTGludCBnbGVzTWFqb3JWZXIKICAg
ICAgIG1NdWx0aXNhbXBsZShmYWxzZSksCiAgICAgICBtRGVidWcoZmFsc2UpLAogICAgICAgbU5v
RXJyb3IoZmFsc2UpLAorICAgICAgbVdlYkdMQ29tcGF0aWJpbGl0eShmYWxzZSksCisgICAgICBt
QmluZEdlbmVyYXRlc1Jlc291cmNlKHRydWUpLAogICAgICAgbVN3YXBJbnRlcnZhbCgtMSkKIHsK
IH0KQEAgLTIwNyw2ICsyMDksMjIgQEAgYm9vbCBFR0xXaW5kb3c6OmluaXRpYWxpemVHTChPU1dp
bmRvdyAqbwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgYm9vbCBoYXNXZWJH
TENvbXBhdGliaWxpdHkgPQorICAgICAgICBzdHJzdHIoZGlzcGxheUV4dGVuc2lvbnMsICJFR0xf
QU5HTEVfY3JlYXRlX2NvbnRleHRfd2ViZ2xfY29tcGF0aWJpbGl0eSIpICE9IG51bGxwdHI7Cisg
ICAgaWYgKG1XZWJHTENvbXBhdGliaWxpdHkgJiYgIWhhc1dlYkdMQ29tcGF0aWJpbGl0eSkKKyAg
ICB7CisgICAgICAgIGRlc3Ryb3lHTCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgYm9vbCBoYXNCaW5kR2VuZXJhdGVzUmVzb3VyY2UgPQorICAgICAgICBzdHJzdHIoZGlz
cGxheUV4dGVuc2lvbnMsICJFR0xfQ0hST01JVU1fY3JlYXRlX2NvbnRleHRfYmluZF9nZW5lcmF0
ZXNfcmVzb3VyY2UiKSAhPSBudWxscHRyOworICAgIGlmICghbUJpbmRHZW5lcmF0ZXNSZXNvdXJj
ZSAmJiAhaGFzQmluZEdlbmVyYXRlc1Jlc291cmNlKQorICAgIHsKKyAgICAgICAgZGVzdHJveUdM
KCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICBlZ2xCaW5kQVBJKEVHTF9P
UEVOR0xfRVNfQVBJKTsKICAgICBpZiAoZWdsR2V0RXJyb3IoKSAhPSBFR0xfU1VDQ0VTUykKICAg
ICB7CkBAIC0yNzUsNiArMjkzLDE4IEBAIGJvb2wgRUdMV2luZG93Ojppbml0aWFsaXplR0woT1NX
aW5kb3cgKm8KIAogICAgICAgICBjb250ZXh0QXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX0NPTlRF
WFRfT1BFTkdMX05PX0VSUk9SX0tIUik7CiAgICAgICAgIGNvbnRleHRBdHRyaWJ1dGVzLnB1c2hf
YmFjayhtTm9FcnJvciA/IEVHTF9UUlVFIDogRUdMX0ZBTFNFKTsKKworICAgICAgICBpZiAoaGFz
V2ViR0xDb21wYXRpYmlsaXR5KQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0QXR0cmli
dXRlcy5wdXNoX2JhY2soRUdMX0NPTlRFWFRfV0VCR0xfQ09NUEFUSUJJTElUWV9BTkdMRSk7Cisg
ICAgICAgICAgICBjb250ZXh0QXR0cmlidXRlcy5wdXNoX2JhY2sobVdlYkdMQ29tcGF0aWJpbGl0
eSA/IEVHTF9UUlVFIDogRUdMX0ZBTFNFKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChoYXNC
aW5kR2VuZXJhdGVzUmVzb3VyY2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHRBdHRy
aWJ1dGVzLnB1c2hfYmFjayhFR0xfQ09OVEVYVF9CSU5EX0dFTkVSQVRFU19SRVNPVVJDRV9DSFJP
TUlVTSk7CisgICAgICAgICAgICBjb250ZXh0QXR0cmlidXRlcy5wdXNoX2JhY2sobUJpbmRHZW5l
cmF0ZXNSZXNvdXJjZSA/IEVHTF9UUlVFIDogRUdMX0ZBTFNFKTsKKyAgICAgICAgfQogICAgIH0K
ICAgICBjb250ZXh0QXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX05PTkUpOwogCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL0VHTFdpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvRUdMV2luZG93LmgJKHJldmlzaW9uIDIwNzgwNCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvRUdMV2luZG93LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyLDYgKzEyLDcgQEAKICNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxzdHJpbmc+
CiAKKyNpbmNsdWRlIDxleHBvcnQuaD4KICNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KICNpbmNsdWRl
IDxHTEVTMi9nbDJleHQuaD4KICNpbmNsdWRlIDxHTEVTMy9nbDMuaD4KQEAgLTI4LDcgKzI5LDcg
QEAgY2xhc3MgT1NXaW5kb3c7CiAjZGVmaW5lIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQ
RV9OVUxMX0FOR0xFIDB4NkFDMAogI2VuZGlmCiAKLXN0cnVjdCBFR0xQbGF0Zm9ybVBhcmFtZXRl
cnMKK3N0cnVjdCBBTkdMRV9FWFBPUlQgRUdMUGxhdGZvcm1QYXJhbWV0ZXJzCiB7CiAgICAgRUdM
aW50IHJlbmRlcmVyOwogICAgIEVHTGludCBtYWpvclZlcnNpb247CkBAIC00NiwxMCArNDcsMTAg
QEAgc3RydWN0IEVHTFBsYXRmb3JtUGFyYW1ldGVycwogICAgICAgICAgICAgICAgICAgICAgICAg
ICBFR0xpbnQgcHJlc2VudFBhdGgpOwogfTsKIAotYm9vbCBvcGVyYXRvcjwoY29uc3QgRUdMUGxh
dGZvcm1QYXJhbWV0ZXJzICZhLCBjb25zdCBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgJmIpOwotYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEVHTFBsYXRmb3JtUGFyYW1ldGVycyAmYSwgY29uc3QgRUdMUGxh
dGZvcm1QYXJhbWV0ZXJzICZiKTsKK0FOR0xFX0VYUE9SVCBib29sIG9wZXJhdG9yPChjb25zdCBF
R0xQbGF0Zm9ybVBhcmFtZXRlcnMgJmEsIGNvbnN0IEVHTFBsYXRmb3JtUGFyYW1ldGVycyAmYik7
CitBTkdMRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEVHTFBsYXRmb3JtUGFyYW1ldGVy
cyAmYSwgY29uc3QgRUdMUGxhdGZvcm1QYXJhbWV0ZXJzICZiKTsKIAotY2xhc3MgRUdMV2luZG93
IDogYW5nbGU6Ok5vbkNvcHlhYmxlCitjbGFzcyBBTkdMRV9FWFBPUlQgRUdMV2luZG93IDogYW5n
bGU6Ok5vbkNvcHlhYmxlCiB7CiAgIHB1YmxpYzoKICAgICBFR0xXaW5kb3coRUdMaW50IGdsZXNN
YWpvclZlcnNpb24sCkBAIC02Nyw2ICs2OCwxNCBAQCBjbGFzcyBFR0xXaW5kb3cgOiBhbmdsZTo6
Tm9uQ29weWFibGUKICAgICB2b2lkIHNldE11bHRpc2FtcGxlKGJvb2wgbXVsdGlzYW1wbGUpIHsg
bU11bHRpc2FtcGxlID0gbXVsdGlzYW1wbGU7IH0KICAgICB2b2lkIHNldERlYnVnRW5hYmxlZChi
b29sIGRlYnVnKSB7IG1EZWJ1ZyA9IGRlYnVnOyB9CiAgICAgdm9pZCBzZXROb0Vycm9yRW5hYmxl
ZChib29sIG5vRXJyb3IpIHsgbU5vRXJyb3IgPSBub0Vycm9yOyB9CisgICAgdm9pZCBzZXRXZWJH
TENvbXBhdGliaWxpdHlFbmFibGVkKGJvb2wgd2ViZ2xDb21wYXRpYmlsaXR5KQorICAgIHsKKyAg
ICAgICAgbVdlYkdMQ29tcGF0aWJpbGl0eSA9IHdlYmdsQ29tcGF0aWJpbGl0eTsKKyAgICB9Cisg
ICAgdm9pZCBzZXRCaW5kR2VuZXJhdGVzUmVzb3VyY2UoYm9vbCBiaW5kR2VuZXJhdGVzUmVzb3Vy
Y2UpCisgICAgeworICAgICAgICBtQmluZEdlbmVyYXRlc1Jlc291cmNlID0gYmluZEdlbmVyYXRl
c1Jlc291cmNlOworICAgIH0KICAgICB2b2lkIHNldFN3YXBJbnRlcnZhbChFR0xpbnQgc3dhcElu
dGVydmFsKSB7IG1Td2FwSW50ZXJ2YWwgPSBzd2FwSW50ZXJ2YWw7IH0KIAogICAgIHN0YXRpYyBF
R0xCb29sZWFuIEZpbmRFR0xDb25maWcoRUdMRGlzcGxheSBkcHksIGNvbnN0IEVHTGludCAqYXR0
cmliX2xpc3QsIEVHTENvbmZpZyAqY29uZmlnKTsKQEAgLTExMiw2ICsxMjEsOCBAQCBjbGFzcyBF
R0xXaW5kb3cgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBib29sIG1NdWx0aXNhbXBsZTsKICAg
ICBib29sIG1EZWJ1ZzsKICAgICBib29sIG1Ob0Vycm9yOworICAgIGJvb2wgbVdlYkdMQ29tcGF0
aWJpbGl0eTsKKyAgICBib29sIG1CaW5kR2VuZXJhdGVzUmVzb3VyY2U7CiAgICAgRUdMaW50IG1T
d2FwSW50ZXJ2YWw7CiB9OwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL01h
dHJpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvTWF0cml4
LmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvTWF0
cml4LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwLDkgKzEwLDExIEBACiAjaWZuZGVmIFVUSUxfTUFU
UklYX0gKICNkZWZpbmUgVVRJTF9NQVRSSVhfSAogCisjaW5jbHVkZSA8ZXhwb3J0Lmg+CisKICNp
bmNsdWRlICJWZWN0b3IuaCIKIAotc3RydWN0IE1hdHJpeDQKK3N0cnVjdCBBTkdMRV9FWFBPUlQg
TWF0cml4NAogewogICAgIGZsb2F0IGRhdGFbMTZdOwogCkBAIC00OSwxMyArNTEsMTMgQEAgc3Ry
dWN0IE1hdHJpeDQKICAgICBzdGF0aWMgVmVjdG9yMyB0cmFuc2Zvcm0oY29uc3QgTWF0cml4NCAm
bWF0LCBjb25zdCBWZWN0b3I0ICZwdCk7CiB9OwogCi1NYXRyaXg0IG9wZXJhdG9yKihjb25zdCBN
YXRyaXg0ICZhLCBjb25zdCBNYXRyaXg0ICZiKTsKLU1hdHJpeDQgJm9wZXJhdG9yKj0oTWF0cml4
NCAmYSwgY29uc3QgTWF0cml4NCAmYik7Ci1NYXRyaXg0IG9wZXJhdG9yKihjb25zdCBNYXRyaXg0
ICZhLCBmbG9hdCBiKTsKLU1hdHJpeDQgJm9wZXJhdG9yKj0oTWF0cml4NCAmYSwgZmxvYXQgYik7
Ci1WZWN0b3I0IG9wZXJhdG9yKihjb25zdCBNYXRyaXg0ICZhLCBjb25zdCBWZWN0b3I0ICZiKTsK
K0FOR0xFX0VYUE9SVCBNYXRyaXg0IG9wZXJhdG9yKihjb25zdCBNYXRyaXg0ICZhLCBjb25zdCBN
YXRyaXg0ICZiKTsKK0FOR0xFX0VYUE9SVCBNYXRyaXg0ICZvcGVyYXRvcio9KE1hdHJpeDQgJmEs
IGNvbnN0IE1hdHJpeDQgJmIpOworQU5HTEVfRVhQT1JUIE1hdHJpeDQgb3BlcmF0b3IqKGNvbnN0
IE1hdHJpeDQgJmEsIGZsb2F0IGIpOworQU5HTEVfRVhQT1JUIE1hdHJpeDQgJm9wZXJhdG9yKj0o
TWF0cml4NCAmYSwgZmxvYXQgYik7CitBTkdMRV9FWFBPUlQgVmVjdG9yNCBvcGVyYXRvciooY29u
c3QgTWF0cml4NCAmYSwgY29uc3QgVmVjdG9yNCAmYik7CiAKLWJvb2wgb3BlcmF0b3I9PShjb25z
dCBNYXRyaXg0ICZhLCBjb25zdCBNYXRyaXg0ICZiKTsKLWJvb2wgb3BlcmF0b3IhPShjb25zdCBN
YXRyaXg0ICZhLCBjb25zdCBNYXRyaXg0ICZiKTsKK0FOR0xFX0VYUE9SVCBib29sIG9wZXJhdG9y
PT0oY29uc3QgTWF0cml4NCAmYSwgY29uc3QgTWF0cml4NCAmYik7CitBTkdMRV9FWFBPUlQgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IE1hdHJpeDQgJmEsIGNvbnN0IE1hdHJpeDQgJmIpOwogCiAjZW5k
aWYgIC8vIFVUSUxfTUFUUklYX0gKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwv
T1NQaXhtYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL09T
UGl4bWFwLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0
aWwvT1NQaXhtYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMTEsMTIgKzExLDEzIEBACiAKICNpbmNs
dWRlIDxzdGRsaWIuaD4KIAorI2luY2x1ZGUgPGV4cG9ydC5oPgogI2luY2x1ZGUgPEVHTC9lZ2wu
aD4KICNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CiAKICNpbmNsdWRlICJFdmVudC5oIgogCi1jbGFz
cyBPU1BpeG1hcAorY2xhc3MgQU5HTEVfRVhQT1JUIE9TUGl4bWFwCiB7CiAgIHB1YmxpYzoKICAg
ICBPU1BpeG1hcCgpIHt9CkBAIC0yNyw2ICsyOCw2IEBAIGNsYXNzIE9TUGl4bWFwCiAgICAgdmly
dHVhbCBFR0xOYXRpdmVQaXhtYXBUeXBlIGdldE5hdGl2ZVBpeG1hcCgpIGNvbnN0ID0gMDsKIH07
CiAKLU9TUGl4bWFwICpDcmVhdGVPU1BpeG1hcCgpOworQU5HTEVfRVhQT1JUIE9TUGl4bWFwICpD
cmVhdGVPU1BpeG1hcCgpOwogCiAjZW5kaWYgLy8gU0FNUExFX1VUSUxfUElYTUFQX0hfCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL09TV2luZG93LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9PU1dpbmRvdy5oCShyZXZpc2lvbiAyMDc4MDQp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL09TV2luZG93LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTExLDEyICsxMSwxMyBAQAogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0
cmluZz4KIAorI2luY2x1ZGUgPGV4cG9ydC5oPgogI2luY2x1ZGUgPEVHTC9lZ2wuaD4KICNpbmNs
dWRlIDxFR0wvZWdsZXh0Lmg+CiAKICNpbmNsdWRlICJFdmVudC5oIgogCi1jbGFzcyBPU1dpbmRv
dworY2xhc3MgQU5HTEVfRVhQT1JUIE9TV2luZG93CiB7CiAgIHB1YmxpYzoKICAgICBPU1dpbmRv
dygpOwpAQCAtNjMsNiArNjQsNiBAQCBjbGFzcyBPU1dpbmRvdwogICAgIHN0ZDo6bGlzdDxFdmVu
dD4gbUV2ZW50czsKIH07CiAKLU9TV2luZG93ICpDcmVhdGVPU1dpbmRvdygpOworQU5HTEVfRVhQ
T1JUIE9TV2luZG93ICpDcmVhdGVPU1dpbmRvdygpOwogCiAjZW5kaWYgLy8gU0FNUExFX1VUSUxf
V0lORE9XX0gKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvVGltZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL1RpbWVyLmgJKHJldmlzaW9u
IDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvVGltZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNyw3ICs3LDkgQEAKICNpZm5kZWYgU0FNUExFX1VUSUxfVElNRVJfSAogI2Rl
ZmluZSBTQU1QTEVfVVRJTF9USU1FUl9ICiAKLWNsYXNzIFRpbWVyCisjaW5jbHVkZSA8ZXhwb3J0
Lmg+CisKK2NsYXNzIEFOR0xFX0VYUE9SVCBUaW1lcgogewogICBwdWJsaWM6CiAgICAgdmlydHVh
bCB+VGltZXIoKSB7fQpAQCAtMTYsNiArMTgsNiBAQCBjbGFzcyBUaW1lcgogICAgIHZpcnR1YWwg
ZG91YmxlIGdldEVsYXBzZWRUaW1lKCkgY29uc3QgPSAwOwogfTsKIAotVGltZXIgKkNyZWF0ZVRp
bWVyKCk7CitBTkdMRV9FWFBPUlQgVGltZXIgKkNyZWF0ZVRpbWVyKCk7CiAKICNlbmRpZiAvLyBT
QU1QTEVfVVRJTF9USU1FUl9ICkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL1Zl
Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9WZWN0
b3IuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGls
L1ZlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw2ICsxMzIsMTYgQEAgVmVjdG9yMyBv
cGVyYXRvci0oY29uc3QgVmVjdG9yMyAmYSwgY29ucwogICAgIHJldHVybiBWZWN0b3IzKGEueCAt
IGIueCwgYS55IC0gYi55LCBhLnogLSBiLnopOwogfQogCitib29sIG9wZXJhdG9yPT0oY29uc3Qg
VmVjdG9yMyAmYSwgY29uc3QgVmVjdG9yMyAmYikKK3sKKyAgICByZXR1cm4gKGEueCA9PSBiLngg
JiYgYS55ID09IGIueSAmJiBhLnogPT0gYi56KTsKK30KKworYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFZlY3RvcjMgJmEsIGNvbnN0IFZlY3RvcjMgJmIpCit7CisgICAgcmV0dXJuICEoYSA9PSBiKTsK
K30KKwogVmVjdG9yNDo6VmVjdG9yNCgpIDogeCgwLjBmKSwgeSgwLjBmKSwgeigwLjBmKSwgdygw
LjBmKQogewogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9WZWN0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL1ZlY3Rvci5oCShyZXZp
c2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL1ZlY3Rvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMiw3ICsxMiw5IEBACiAKICNpbmNsdWRlIDxvc3RyZWFtPgogCi1z
dHJ1Y3QgVmVjdG9yMgorI2luY2x1ZGUgPGV4cG9ydC5oPgorCitzdHJ1Y3QgQU5HTEVfRVhQT1JU
IFZlY3RvcjIKIHsKICAgICBWZWN0b3IyKCk7CiAgICAgVmVjdG9yMihmbG9hdCB4LCBmbG9hdCB5
KTsKQEAgLTMxLDkgKzMzLDkgQEAgc3RydWN0IFZlY3RvcjIKICAgICBmbG9hdCB4LCB5OwogfTsK
IAotc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmc3RyZWFtLCBjb25zdCBW
ZWN0b3IyICZ2ZWMpOworQU5HTEVfRVhQT1JUIHN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6
Om9zdHJlYW0gJnN0cmVhbSwgY29uc3QgVmVjdG9yMiAmdmVjKTsKIAotc3RydWN0IFZlY3RvcjMK
K3N0cnVjdCBBTkdMRV9FWFBPUlQgVmVjdG9yMwogewogICAgIFZlY3RvcjMoKTsKICAgICBWZWN0
b3IzKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopOwpAQCAtNTIsMTQgKzU0LDE2IEBAIHN0cnVj
dCBWZWN0b3IzCiAgICAgZmxvYXQgeCwgeSwgejsKIH07CiAKLVZlY3RvcjMgb3BlcmF0b3IqKGNv
bnN0IFZlY3RvcjMgJmEsIGNvbnN0IFZlY3RvcjMgJmIpOwotVmVjdG9yMyBvcGVyYXRvciooY29u
c3QgVmVjdG9yMyAmYSwgY29uc3QgZmxvYXQgJmIpOwotVmVjdG9yMyBvcGVyYXRvci8oY29uc3Qg
VmVjdG9yMyAmYSwgY29uc3QgVmVjdG9yMyAmYik7Ci1WZWN0b3IzIG9wZXJhdG9yLyhjb25zdCBW
ZWN0b3IzICZhLCBjb25zdCBmbG9hdCAmYik7Ci1WZWN0b3IzIG9wZXJhdG9yKyhjb25zdCBWZWN0
b3IzICZhLCBjb25zdCBWZWN0b3IzICZiKTsKLVZlY3RvcjMgb3BlcmF0b3ItKGNvbnN0IFZlY3Rv
cjMgJmEsIGNvbnN0IFZlY3RvcjMgJmIpOworQU5HTEVfRVhQT1JUIFZlY3RvcjMgb3BlcmF0b3Iq
KGNvbnN0IFZlY3RvcjMgJmEsIGNvbnN0IFZlY3RvcjMgJmIpOworQU5HTEVfRVhQT1JUIFZlY3Rv
cjMgb3BlcmF0b3IqKGNvbnN0IFZlY3RvcjMgJmEsIGNvbnN0IGZsb2F0ICZiKTsKK0FOR0xFX0VY
UE9SVCBWZWN0b3IzIG9wZXJhdG9yLyhjb25zdCBWZWN0b3IzICZhLCBjb25zdCBWZWN0b3IzICZi
KTsKK0FOR0xFX0VYUE9SVCBWZWN0b3IzIG9wZXJhdG9yLyhjb25zdCBWZWN0b3IzICZhLCBjb25z
dCBmbG9hdCAmYik7CitBTkdMRV9FWFBPUlQgVmVjdG9yMyBvcGVyYXRvcisoY29uc3QgVmVjdG9y
MyAmYSwgY29uc3QgVmVjdG9yMyAmYik7CitBTkdMRV9FWFBPUlQgVmVjdG9yMyBvcGVyYXRvci0o
Y29uc3QgVmVjdG9yMyAmYSwgY29uc3QgVmVjdG9yMyAmYik7CitBTkdMRV9FWFBPUlQgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFZlY3RvcjMgJmEsIGNvbnN0IFZlY3RvcjMgJmIpOworQU5HTEVfRVhQ
T1JUIGJvb2wgb3BlcmF0b3IhPShjb25zdCBWZWN0b3IzICZhLCBjb25zdCBWZWN0b3IzICZiKTsK
IAotc3RydWN0IFZlY3RvcjQKK3N0cnVjdCBBTkdMRV9FWFBPUlQgVmVjdG9yNAogewogICAgIFZl
Y3RvcjQoKTsKICAgICBWZWN0b3I0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcp
OwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9nZW9tZXRyeV91dGlscy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvZ2VvbWV0cnlfdXRpbHMu
aAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9nZW9t
ZXRyeV91dGlscy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMiwyMCArMTIsMjIgQEAKIAogI2luY2x1
ZGUgPGNzdGRkZWY+CiAjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSA8ZXhwb3J0Lmg+CiAj
aW5jbHVkZSA8R0xFUzIvZ2wyLmg+CiAKICNpbmNsdWRlICJWZWN0b3IuaCIKIAotc3RydWN0IFNw
aGVyZUdlb21ldHJ5CitzdHJ1Y3QgQU5HTEVfRVhQT1JUIFNwaGVyZUdlb21ldHJ5CiB7CiAgICAg
c3RkOjp2ZWN0b3I8VmVjdG9yMz4gcG9zaXRpb25zOwogICAgIHN0ZDo6dmVjdG9yPFZlY3RvcjM+
IG5vcm1hbHM7CiAgICAgc3RkOjp2ZWN0b3I8R0x1c2hvcnQ+IGluZGljZXM7CiB9OwogCi12b2lk
IENyZWF0ZVNwaGVyZUdlb21ldHJ5KHNpemVfdCBzbGljZUNvdW50LCBmbG9hdCByYWRpdXMsIFNw
aGVyZUdlb21ldHJ5ICpyZXN1bHQpOworQU5HTEVfRVhQT1JUIHZvaWQgQ3JlYXRlU3BoZXJlR2Vv
bWV0cnkoc2l6ZV90IHNsaWNlQ291bnQsIGZsb2F0IHJhZGl1cywgU3BoZXJlR2VvbWV0cnkgKnJl
c3VsdCk7CiAKLXN0cnVjdCBDdWJlR2VvbWV0cnkKK3N0cnVjdCBBTkdMRV9FWFBPUlQgQ3ViZUdl
b21ldHJ5CiB7CiAgICAgc3RkOjp2ZWN0b3I8VmVjdG9yMz4gcG9zaXRpb25zOwogICAgIHN0ZDo6
dmVjdG9yPFZlY3RvcjM+IG5vcm1hbHM7CkBAIC0zMyw2ICszNSw2IEBAIHN0cnVjdCBDdWJlR2Vv
bWV0cnkKICAgICBzdGQ6OnZlY3RvcjxHTHVzaG9ydD4gaW5kaWNlczsKIH07CiAKLXZvaWQgR2Vu
ZXJhdGVDdWJlR2VvbWV0cnkoZmxvYXQgcmFkaXVzLCBDdWJlR2VvbWV0cnkgKnJlc3VsdCk7CitB
TkdMRV9FWFBPUlQgdm9pZCBHZW5lcmF0ZUN1YmVHZW9tZXRyeShmbG9hdCByYWRpdXMsIEN1YmVH
ZW9tZXRyeSAqcmVzdWx0KTsKIAogI2VuZGlmICAvLyBVVElMX0dFT01FVFJZX1VUSUxTX0gKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvcGF0aF91dGlscy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvcGF0aF91dGlscy5oCShyZXZpc2lvbiAy
MDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3BhdGhfdXRpbHMuaAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDE1ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaWZuZGVmIFNBTVBM
RV9VVElMX1BBVEhfVVRJTFNfSAotI2RlZmluZSBTQU1QTEVfVVRJTF9QQVRIX1VUSUxTX0gKLQot
I2luY2x1ZGUgPHN0cmluZz4KLQotc3RkOjpzdHJpbmcgR2V0RXhlY3V0YWJsZVBhdGgoKTsKLXN0
ZDo6c3RyaW5nIEdldEV4ZWN1dGFibGVEaXJlY3RvcnkoKTsKLQotI2VuZGlmIC8vIFNBTVBMRV9V
VElMX1BBVEhfVVRJTFNfSApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9yYW5k
b21fdXRpbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3Jh
bmRvbV91dGlscy5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS91dGlsL3JhbmRvbV91dGlscy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMywxMCArMTMsMTIgQEAK
IC8vIFRPRE8oam1hZGlsbCk6IFJld29yayB0aGlzIGlmIENocm9taXVtIGRlY2lkZXMgdG8gYmFu
IDxyYW5kb20+CiAjaW5jbHVkZSA8cmFuZG9tPgogCisjaW5jbHVkZSA8ZXhwb3J0Lmg+CisKIG5h
bWVzcGFjZSBhbmdsZQogewogCi1jbGFzcyBSTkcKK2NsYXNzIEFOR0xFX0VYUE9SVCBSTkcKIHsK
ICAgcHVibGljOgogICAgIC8vIFNlZWQgZnJvbSBjbG9jawpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvdXRpbC9zaGFkZXJfdXRpbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3V0aWwvc2hhZGVyX3V0aWxzLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9zaGFkZXJfdXRpbHMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03Nyw2ICs3Nyw0MCBAQCBHTHVpbnQgQ29tcGlsZVNoYWRlckZyb21GaWxlKEdMZW51
bSB0eXBlCiAgICAgcmV0dXJuIENvbXBpbGVTaGFkZXIodHlwZSwgc291cmNlKTsKIH0KIAorR0x1
aW50IENoZWNrTGlua1N0YXR1c0FuZFJldHVyblByb2dyYW0oR0x1aW50IHByb2dyYW0sIGJvb2wg
b3V0cHV0RXJyb3JNZXNzYWdlcykKK3sKKyAgICBHTGludCBsaW5rU3RhdHVzOworICAgIGdsR2V0
UHJvZ3JhbWl2KHByb2dyYW0sIEdMX0xJTktfU1RBVFVTLCAmbGlua1N0YXR1cyk7CisgICAgaWYg
KGxpbmtTdGF0dXMgPT0gMCkKKyAgICB7CisgICAgICAgIGlmIChvdXRwdXRFcnJvck1lc3NhZ2Vz
KQorICAgICAgICB7CisgICAgICAgICAgICBHTGludCBpbmZvTG9nTGVuZ3RoOworICAgICAgICAg
ICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xfSU5GT19MT0dfTEVOR1RILCAmaW5mb0xvZ0xl
bmd0aCk7CisKKyAgICAgICAgICAgIC8vIEluZm8gbG9nIGxlbmd0aCBpbmNsdWRlcyB0aGUgbnVs
bCB0ZXJtaW5hdG9yLCBzbyAxIG1lYW5zIHRoYXQgdGhlIGluZm8gbG9nIGlzIGFuCisgICAgICAg
ICAgICAvLyBlbXB0eSBzdHJpbmcuCisgICAgICAgICAgICBpZiAoaW5mb0xvZ0xlbmd0aCA+IDEp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8R0xjaGFyPiBpbmZv
TG9nKGluZm9Mb2dMZW5ndGgpOworICAgICAgICAgICAgICAgIGdsR2V0UHJvZ3JhbUluZm9Mb2co
cHJvZ3JhbSwgc3RhdGljX2Nhc3Q8R0xzaXplaT4oaW5mb0xvZy5zaXplKCkpLCBudWxscHRyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmluZm9Mb2dbMF0pOworCisgICAg
ICAgICAgICAgICAgc3RkOjpjZXJyIDw8ICJwcm9ncmFtIGxpbmsgZmFpbGVkOiAiIDw8ICZpbmZv
TG9nWzBdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHN0ZDo6Y2VyciA8PCAicHJvZ3JhbSBsaW5rIGZhaWxlZC4gPEVtcHR5
IGxvZyBtZXNzYWdlPiI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBnbERl
bGV0ZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJl
dHVybiBwcm9ncmFtOworfQorCiBHTHVpbnQgQ29tcGlsZVByb2dyYW1XaXRoVHJhbnNmb3JtRmVl
ZGJhY2soCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZzU291cmNlLAogICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZmc1NvdXJjZSwKQEAgLTExNywzMyArMTUxLDcgQEAgR0x1aW50IENvbXBpbGVQcm9n
cmFtV2l0aFRyYW5zZm9ybUZlZWRiYQogCiAgICAgZ2xMaW5rUHJvZ3JhbShwcm9ncmFtKTsKIAot
ICAgIEdMaW50IGxpbmtTdGF0dXM7Ci0gICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xfTElO
S19TVEFUVVMsICZsaW5rU3RhdHVzKTsKLQotICAgIGlmIChsaW5rU3RhdHVzID09IDApCi0gICAg
ewotICAgICAgICBHTGludCBpbmZvTG9nTGVuZ3RoOwotICAgICAgICBnbEdldFByb2dyYW1pdihw
cm9ncmFtLCBHTF9JTkZPX0xPR19MRU5HVEgsICZpbmZvTG9nTGVuZ3RoKTsKLQotICAgICAgICAv
LyBJbmZvIGxvZyBsZW5ndGggaW5jbHVkZXMgdGhlIG51bGwgdGVybWluYXRvciwgc28gMSBtZWFu
cyB0aGF0IHRoZSBpbmZvIGxvZyBpcyBhbiBlbXB0eQotICAgICAgICAvLyBzdHJpbmcuCi0gICAg
ICAgIGlmIChpbmZvTG9nTGVuZ3RoID4gMSkKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjp2
ZWN0b3I8R0xjaGFyPiBpbmZvTG9nKGluZm9Mb2dMZW5ndGgpOwotICAgICAgICAgICAgZ2xHZXRQ
cm9ncmFtSW5mb0xvZyhwcm9ncmFtLCBzdGF0aWNfY2FzdDxHTHNpemVpPihpbmZvTG9nLnNpemUo
KSksIG51bGxwdHIsICZpbmZvTG9nWzBdKTsKLQotICAgICAgICAgICAgc3RkOjpjZXJyIDw8ICJw
cm9ncmFtIGxpbmsgZmFpbGVkOiAiIDw8ICZpbmZvTG9nWzBdOwotICAgICAgICB9Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjpjZXJyIDw8ICJwcm9ncmFtIGxpbmsg
ZmFpbGVkLiA8RW1wdHkgbG9nIG1lc3NhZ2U+IjsKLSAgICAgICAgfQotCi0gICAgICAgIGdsRGVs
ZXRlUHJvZ3JhbShwcm9ncmFtKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgcmV0
dXJuIHByb2dyYW07CisgICAgcmV0dXJuIENoZWNrTGlua1N0YXR1c0FuZFJldHVyblByb2dyYW0o
cHJvZ3JhbSwgdHJ1ZSk7CiB9CiAKIEdMdWludCBDb21waWxlUHJvZ3JhbShjb25zdCBzdGQ6OnN0
cmluZyAmdnNTb3VyY2UsIGNvbnN0IHN0ZDo6c3RyaW5nICZmc1NvdXJjZSkKQEAgLTE2MywzICsx
NzEsMjEgQEAgR0x1aW50IENvbXBpbGVQcm9ncmFtRnJvbUZpbGVzKGNvbnN0IHN0ZAogCiAgICAg
cmV0dXJuIENvbXBpbGVQcm9ncmFtKHZzU291cmNlLCBmc1NvdXJjZSk7CiB9CisKK0dMdWludCBD
b21waWxlQ29tcHV0ZVByb2dyYW0oY29uc3Qgc3RkOjpzdHJpbmcgJmNzU291cmNlLCBib29sIG91
dHB1dEVycm9yTWVzc2FnZXMpCit7CisgICAgR0x1aW50IHByb2dyYW0gPSBnbENyZWF0ZVByb2dy
YW0oKTsKKworICAgIEdMdWludCBjcyA9IENvbXBpbGVTaGFkZXIoR0xfQ09NUFVURV9TSEFERVIs
IGNzU291cmNlKTsKKyAgICBpZiAoY3MgPT0gMCkKKyAgICB7CisgICAgICAgIGdsRGVsZXRlUHJv
Z3JhbShwcm9ncmFtKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgZ2xBdHRhY2hT
aGFkZXIocHJvZ3JhbSwgY3MpOworCisgICAgZ2xMaW5rUHJvZ3JhbShwcm9ncmFtKTsKKworICAg
IHJldHVybiBDaGVja0xpbmtTdGF0dXNBbmRSZXR1cm5Qcm9ncmFtKHByb2dyYW0sIG91dHB1dEVy
cm9yTWVzc2FnZXMpOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9zaGFk
ZXJfdXRpbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3No
YWRlcl91dGlscy5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS91dGlsL3NoYWRlcl91dGlscy5oCSh3b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsOCBAQAogI2lm
bmRlZiBTQU1QTEVfVVRJTF9TSEFERVJfVVRJTFNfSAogI2RlZmluZSBTQU1QTEVfVVRJTF9TSEFE
RVJfVVRJTFNfSAogCisjaW5jbHVkZSA8ZXhwb3J0Lmg+CisjaW5jbHVkZSA8R0xFUzMvZ2wzMS5o
PgogI2luY2x1ZGUgPEdMRVMzL2dsMy5oPgogI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgogI2luY2x1
ZGUgPEdMRVMyL2dsMmV4dC5oPgpAQCAtMTgsMTUgKzIwLDE3IEBACiAKICNkZWZpbmUgU0hBREVS
X1NPVVJDRSguLi4pICNfX1ZBX0FSR1NfXwogCi1HTHVpbnQgQ29tcGlsZVNoYWRlcihHTGVudW0g
dHlwZSwgY29uc3Qgc3RkOjpzdHJpbmcgJnNvdXJjZSk7Ci1HTHVpbnQgQ29tcGlsZVNoYWRlckZy
b21GaWxlKEdMZW51bSB0eXBlLCBjb25zdCBzdGQ6OnN0cmluZyAmc291cmNlUGF0aCk7CitBTkdM
RV9FWFBPUlQgR0x1aW50IENvbXBpbGVTaGFkZXIoR0xlbnVtIHR5cGUsIGNvbnN0IHN0ZDo6c3Ry
aW5nICZzb3VyY2UpOworQU5HTEVfRVhQT1JUIEdMdWludCBDb21waWxlU2hhZGVyRnJvbUZpbGUo
R0xlbnVtIHR5cGUsIGNvbnN0IHN0ZDo6c3RyaW5nICZzb3VyY2VQYXRoKTsKIAotR0x1aW50IENv
bXBpbGVQcm9ncmFtV2l0aFRyYW5zZm9ybUZlZWRiYWNrKAotICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZ2c1NvdXJjZSwKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnNTb3VyY2UsCi0gICAgY29uc3Qg
c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+ICZ0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzLAotICAg
IEdMZW51bSBidWZmZXJNb2RlKTsKLUdMdWludCBDb21waWxlUHJvZ3JhbShjb25zdCBzdGQ6OnN0
cmluZyAmdnNTb3VyY2UsIGNvbnN0IHN0ZDo6c3RyaW5nICZmc1NvdXJjZSk7Ci1HTHVpbnQgQ29t
cGlsZVByb2dyYW1Gcm9tRmlsZXMoY29uc3Qgc3RkOjpzdHJpbmcgJnZzUGF0aCwgY29uc3Qgc3Rk
OjpzdHJpbmcgJmZzUGF0aCk7CitBTkdMRV9FWFBPUlQgR0x1aW50CitDb21waWxlUHJvZ3JhbVdp
dGhUcmFuc2Zvcm1GZWVkYmFjayhjb25zdCBzdGQ6OnN0cmluZyAmdnNTb3VyY2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnNTb3VyY2Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4gJnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gYnVmZmVyTW9kZSk7CitBTkdMRV9FWFBPUlQgR0x1
aW50IENvbXBpbGVQcm9ncmFtKGNvbnN0IHN0ZDo6c3RyaW5nICZ2c1NvdXJjZSwgY29uc3Qgc3Rk
OjpzdHJpbmcgJmZzU291cmNlKTsKK0FOR0xFX0VYUE9SVCBHTHVpbnQgQ29tcGlsZVByb2dyYW1G
cm9tRmlsZXMoY29uc3Qgc3RkOjpzdHJpbmcgJnZzUGF0aCwgY29uc3Qgc3RkOjpzdHJpbmcgJmZz
UGF0aCk7CitBTkdMRV9FWFBPUlQgR0x1aW50IENvbXBpbGVDb21wdXRlUHJvZ3JhbShjb25zdCBz
dGQ6OnN0cmluZyAmY3NTb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIG91dHB1dEVycm9yTWVzc2FnZXMgPSB0cnVlKTsKIAogI2VuZGlmIC8vIFNB
TVBMRV9VVElMX1NIQURFUl9VVElMU19ICkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91
dGlsL3N5c3RlbV91dGlscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3V0aWwvc3lzdGVtX3V0aWxzLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3V0aWwvc3lzdGVtX3V0aWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYsMjUgKzYs
MzkgQEAKIAogLy8gc3lzdGVtX3V0aWxzLmg6IGRlY2xhcmF0aW9uIG9mIE9TLXNwZWNpZmljIHV0
aWxpdHkgZnVuY3Rpb25zCiAKLSNpZm5kZWYgU0FNUExFX1VUSUxfUEFUSF9VVElMU19ICi0jZGVm
aW5lIFNBTVBMRV9VVElMX1BBVEhfVVRJTFNfSAorI2lmbmRlZiBVVElMX1NZU1RFTV9VVElMU19I
XworI2RlZmluZSBVVElMX1NZU1RFTV9VVElMU19IXwogCiAjaW5jbHVkZSA8c3RyaW5nPgogCisj
aW5jbHVkZSA8ZXhwb3J0Lmg+CisKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorCiBu
YW1lc3BhY2UgYW5nbGUKIHsKIAotc3RkOjpzdHJpbmcgR2V0RXhlY3V0YWJsZVBhdGgoKTsKLXN0
ZDo6c3RyaW5nIEdldEV4ZWN1dGFibGVEaXJlY3RvcnkoKTsKK0FOR0xFX0VYUE9SVCBjb25zdCBj
aGFyICpHZXRFeGVjdXRhYmxlUGF0aCgpOworQU5HTEVfRVhQT1JUIGNvbnN0IGNoYXIgKkdldEV4
ZWN1dGFibGVEaXJlY3RvcnkoKTsKK0FOR0xFX0VYUE9SVCBjb25zdCBjaGFyICpHZXRTaGFyZWRM
aWJyYXJ5RXh0ZW5zaW9uKCk7CiAKIC8vIENyb3NzIHBsYXRmb3JtIGVxdWl2YWxlbnQgb2YgdGhl
IFdpbmRvd3MgU2xlZXAgZnVuY3Rpb24KLXZvaWQgU2xlZXAodW5zaWduZWQgaW50IG1pbGxpc2Vj
b25kcyk7CitBTkdMRV9FWFBPUlQgdm9pZCBTbGVlcCh1bnNpZ25lZCBpbnQgbWlsbGlzZWNvbmRz
KTsKIAotdm9pZCBTZXRMb3dQcmlvcml0eVByb2Nlc3MoKTsKK0FOR0xFX0VYUE9SVCB2b2lkIFNl
dExvd1ByaW9yaXR5UHJvY2VzcygpOwogCiAvLyBXcml0ZSBhIGRlYnVnIG1lc3NhZ2UsIGVpdGhl
ciB0byBhIHN0YW5kYXJkIG91dHB1dCBvciBEZWJ1ZyB3aW5kb3cuCi12b2lkIFdyaXRlRGVidWdN
ZXNzYWdlKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKK0FOR0xFX0VYUE9SVCB2b2lkIFdyaXRl
RGVidWdNZXNzYWdlKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKKworY2xhc3MgQU5HTEVfRVhQ
T1JUIExpYnJhcnkgOiBhbmdsZTo6Tm9uQ29weWFibGUKK3sKKyAgcHVibGljOgorICAgIHZpcnR1
YWwgfkxpYnJhcnkoKSB7fQorICAgIHZpcnR1YWwgdm9pZCAqZ2V0U3ltYm9sKGNvbnN0IHN0ZDo6
c3RyaW5nICZzeW1ib2xOYW1lKSA9IDA7Cit9OworCitBTkdMRV9FWFBPUlQgTGlicmFyeSAqbG9h
ZExpYnJhcnkoY29uc3Qgc3RkOjpzdHJpbmcgJmxpYnJhcnlOYW1lKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgYW5nbGUKIAotI2VuZGlmIC8vIFNBTVBMRV9VVElMX1BBVEhfVVRJTFNfSAorI2VuZGlmICAv
LyBVVElMX1NZU1RFTV9VVElMU19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRp
bC90ZXN0Zml4dHVyZXR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvdXRpbC90ZXN0Zml4dHVyZXR5cGVzLmgJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3V0aWwvdGVzdGZpeHR1cmV0eXBlcy5oCShub25leGlzdGVudCkKQEAg
LTEsMTIxICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaWZuZGVmIFVUSUxfVEVTVF9GSVhUVVJF
X1RZUEVTX0gKLSNkZWZpbmUgVVRJTF9URVNUX0ZJWFRVUkVfVFlQRVNfSAotCi0jaW5jbHVkZSAi
RUdMV2luZG93LmgiCi0KLSNpbmNsdWRlIDxFR0wvZWdsLmg+Ci0jaW5jbHVkZSA8RUdML2VnbGV4
dC5oPgotCi10ZW1wbGF0ZTxFR0xpbnQgcGxhdGZvcm0sIEVHTGludCBwbGF0Zm9ybU1ham9yVmVy
c2lvbiwgRUdMaW50IHBsYXRmb3JtTWlub3JWZXJzaW9uLCBFR0xpbnQgd2FycD4KLXN0cnVjdCBQ
bGF0Zm9ybQotewotICAgIHN0YXRpYyBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgR2V0UGxhdGZvcm0o
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVycyhwbGF0Zm9ybSwg
cGxhdGZvcm1NYWpvclZlcnNpb24sIHBsYXRmb3JtTWlub3JWZXJzaW9uLCB3YXJwKTsKLSAgICB9
Ci19OwotCi0vLyBUeXBlZGVmcyBvZiBjb21tb24gcGxhdGZvcm0gdHlwZXMKLSNkZWZpbmUgREVG
SU5FX0FOR0xFX1RFU1RfUExBVEZPUk0obmFtZSwgcGxhdGZvcm0sIG1ham9yVmVyc2lvbiwgbWlu
b3JWZXJzaW9uLCB1c2VXYXJwKSBcCi0gICAgc3RydWN0IG5hbWUgOiBwdWJsaWMgUGxhdGZvcm08
cGxhdGZvcm0sIG1ham9yVmVyc2lvbiwgbWlub3JWZXJzaW9uLCB1c2VXYXJwPiB7IH0KLQotREVG
SU5FX0FOR0xFX1RFU1RfUExBVEZPUk0oRDNEOSwgICAgICAgICAgICAgICAgICAgRUdMX1BMQVRG
T1JNX0FOR0xFX1RZUEVfRDNEOV9BTkdMRSwgICAgIEVHTF9ET05UX0NBUkUsIEVHTF9ET05UX0NB
UkUsIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9IQVJEV0FSRV9BTkdMRSk7Ci1ERUZJ
TkVfQU5HTEVfVEVTVF9QTEFURk9STShEM0Q5X1JFRkVSRU5DRSwgICAgICAgICBFR0xfUExBVEZP
Uk1fQU5HTEVfVFlQRV9EM0Q5X0FOR0xFLCAgICAgRUdMX0RPTlRfQ0FSRSwgRUdMX0RPTlRfQ0FS
RSwgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX1JFRkVSRU5DRV9BTkdMRSk7Ci0KLURF
RklORV9BTkdMRV9URVNUX1BMQVRGT1JNKEQzRDExLCAgICAgICAgICAgICAgICAgIEVHTF9QTEFU
Rk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFLCAgICBFR0xfRE9OVF9DQVJFLCBFR0xfRE9OVF9D
QVJFLCBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfSEFSRFdBUkVfQU5HTEUpOwotREVG
SU5FX0FOR0xFX1RFU1RfUExBVEZPUk0oRDNEMTFfRkwxMV8xLCAgICAgICAgICAgRUdMX1BMQVRG
T1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUsICAgICAgICAgICAgICAgMTEsICAgICAgICAgICAg
IDEsIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9IQVJEV0FSRV9BTkdMRSk7Ci1ERUZJ
TkVfQU5HTEVfVEVTVF9QTEFURk9STShEM0QxMV9GTDExXzAsICAgICAgICAgICBFR0xfUExBVEZP
Uk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwgICAgICAgICAgICAgICAxMSwgICAgICAgICAgICAg
MCwgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0hBUkRXQVJFX0FOR0xFKTsKLURFRklO
RV9BTkdMRV9URVNUX1BMQVRGT1JNKEQzRDExX0ZMMTBfMSwgICAgICAgICAgIEVHTF9QTEFURk9S
TV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFLCAgICAgICAgICAgICAgIDEwLCAgICAgICAgICAgICAx
LCBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfSEFSRFdBUkVfQU5HTEUpOwotREVGSU5F
X0FOR0xFX1RFU1RfUExBVEZPUk0oRDNEMTFfRkwxMF8wLCAgICAgICAgICAgRUdMX1BMQVRGT1JN
X0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUsICAgICAgICAgICAgICAgMTAsICAgICAgICAgICAgIDAs
IEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9IQVJEV0FSRV9BTkdMRSk7Ci1ERUZJTkVf
QU5HTEVfVEVTVF9QTEFURk9STShEM0QxMV9GTDlfMywgICAgICAgICAgICBFR0xfUExBVEZPUk1f
QU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwgICAgICAgICAgICAgICAgOSwgICAgICAgICAgICAgMywg
RUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0hBUkRXQVJFX0FOR0xFKTsKLQotREVGSU5F
X0FOR0xFX1RFU1RfUExBVEZPUk0oRDNEMTFfV0FSUCwgICAgICAgICAgICAgRUdMX1BMQVRGT1JN
X0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUsICAgIEVHTF9ET05UX0NBUkUsIEVHTF9ET05UX0NBUkUs
IEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9XQVJQX0FOR0xFKTsKLURFRklORV9BTkdM
RV9URVNUX1BMQVRGT1JNKEQzRDExX0ZMMTFfMV9XQVJQLCAgICAgIEVHTF9QTEFURk9STV9BTkdM
RV9UWVBFX0QzRDExX0FOR0xFLCAgICAgICAgICAgICAgIDExLCAgICAgICAgICAgICAxLCBFR0xf
UExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfV0FSUF9BTkdMRSk7Ci1ERUZJTkVfQU5HTEVfVEVT
VF9QTEFURk9STShEM0QxMV9GTDExXzBfV0FSUCwgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQ
RV9EM0QxMV9BTkdMRSwgICAgICAgICAgICAgICAxMSwgICAgICAgICAgICAgMCwgRUdMX1BMQVRG
T1JNX0FOR0xFX0RFVklDRV9UWVBFX1dBUlBfQU5HTEUpOwotREVGSU5FX0FOR0xFX1RFU1RfUExB
VEZPUk0oRDNEMTFfRkwxMF8xX1dBUlAsICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNE
MTFfQU5HTEUsICAgICAgICAgICAgICAgMTAsICAgICAgICAgICAgIDEsIEVHTF9QTEFURk9STV9B
TkdMRV9ERVZJQ0VfVFlQRV9XQVJQX0FOR0xFKTsKLURFRklORV9BTkdMRV9URVNUX1BMQVRGT1JN
KEQzRDExX0ZMMTBfMF9XQVJQLCAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FO
R0xFLCAgICAgICAgICAgICAgIDEwLCAgICAgICAgICAgICAwLCBFR0xfUExBVEZPUk1fQU5HTEVf
REVWSUNFX1RZUEVfV0FSUF9BTkdMRSk7Ci1ERUZJTkVfQU5HTEVfVEVTVF9QTEFURk9STShEM0Qx
MV9GTDlfM19XQVJQLCAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwg
ICAgICAgICAgICAgICAgOSwgICAgICAgICAgICAgMywgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklD
RV9UWVBFX1dBUlBfQU5HTEUpOwotCi1ERUZJTkVfQU5HTEVfVEVTVF9QTEFURk9STShEM0QxMV9S
RUZFUkVOQ0UsICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwgICAg
RUdMX0RPTlRfQ0FSRSwgRUdMX0RPTlRfQ0FSRSwgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9U
WVBFX1JFRkVSRU5DRV9BTkdMRSk7Ci1ERUZJTkVfQU5HTEVfVEVTVF9QTEFURk9STShEM0QxMV9G
TDExXzFfUkVGRVJFTkNFLCBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwgICAg
ICAgICAgICAgICAxMSwgICAgICAgICAgICAgMSwgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9U
WVBFX1JFRkVSRU5DRV9BTkdMRSk7Ci1ERUZJTkVfQU5HTEVfVEVTVF9QTEFURk9STShEM0QxMV9G
TDExXzBfUkVGRVJFTkNFLCBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwgICAg
ICAgICAgICAgICAxMSwgICAgICAgICAgICAgMCwgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9U
WVBFX1JFRkVSRU5DRV9BTkdMRSk7Ci1ERUZJTkVfQU5HTEVfVEVTVF9QTEFURk9STShEM0QxMV9G
TDEwXzFfUkVGRVJFTkNFLCBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwgICAg
ICAgICAgICAgICAxMCwgICAgICAgICAgICAgMSwgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9U
WVBFX1JFRkVSRU5DRV9BTkdMRSk7Ci1ERUZJTkVfQU5HTEVfVEVTVF9QTEFURk9STShEM0QxMV9G
TDEwXzBfUkVGRVJFTkNFLCBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwgICAg
ICAgICAgICAgICAxMCwgICAgICAgICAgICAgMCwgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9U
WVBFX1JFRkVSRU5DRV9BTkdMRSk7Ci1ERUZJTkVfQU5HTEVfVEVTVF9QTEFURk9STShEM0QxMV9G
TDlfM19SRUZFUkVOQ0UsICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwgICAg
ICAgICAgICAgICAgOSwgICAgICAgICAgICAgMywgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9U
WVBFX1JFRkVSRU5DRV9BTkdMRSk7Ci0KLURFRklORV9BTkdMRV9URVNUX1BMQVRGT1JNKE9QRU5H
TCwgICAgICAgICAgICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSwg
ICBFR0xfRE9OVF9DQVJFLCBFR0xfRE9OVF9DQVJFLCBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNF
X1RZUEVfSEFSRFdBUkVfQU5HTEUpOwotREVGSU5FX0FOR0xFX1RFU1RfUExBVEZPUk0oT1BFTkdM
RVMsICAgICAgICAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEUs
IEVHTF9ET05UX0NBUkUsIEVHTF9ET05UX0NBUkUsIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0Vf
VFlQRV9IQVJEV0FSRV9BTkdMRSk7Ci0KLSN1bmRlZiBERUZJTkVfQU5HTEVfVEVTVF9QTEFURk9S
TQotCi0vLyBUZXN0IEZpeHR1cmUgVHlwZQotdGVtcGxhdGU8R0xpbnQgR0xFU01ham9yVmVyc2lv
biwgdHlwZW5hbWUgcGxhdGZvcm1UPgotc3RydWN0IFRlc3RGaXh0dXJlCi17Ci0gICAgc3RhdGlj
IEVHTGludCBHZXRHbGVzTWFqb3JWZXJzaW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBHTEVT
TWFqb3JWZXJzaW9uOwotICAgIH0KLQotICAgIHN0YXRpYyBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMg
R2V0UGxhdGZvcm0oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHBsYXRmb3JtVDo6R2V0UGxhdGZv
cm0oKTsKLSAgICB9Ci19OwotCi0vLyBUeXBlZGVmcyBvZiBjb21tb24gZml4dHVyZSB0eXBlcwot
dHlwZWRlZiBUZXN0Rml4dHVyZTwyLCBEM0Q5PiAgICAgICAgICAgICAgICAgICBFUzJfRDNEOTsK
LXR5cGVkZWYgVGVzdEZpeHR1cmU8MiwgRDNEOV9SRUZFUkVOQ0U+ICAgICAgICAgRVMyX0QzRDlf
UkVGRVJFTkNFOwotCi10eXBlZGVmIFRlc3RGaXh0dXJlPDIsIEQzRDExPiAgICAgICAgICAgICAg
ICAgIEVTMl9EM0QxMTsKLXR5cGVkZWYgVGVzdEZpeHR1cmU8MiwgRDNEMTFfRkwxMV8wPiAgICAg
ICAgICAgRVMyX0QzRDExX0ZMMTFfMDsKLXR5cGVkZWYgVGVzdEZpeHR1cmU8MiwgRDNEMTFfRkwx
MF8xPiAgICAgICAgICAgRVMyX0QzRDExX0ZMMTBfMTsKLXR5cGVkZWYgVGVzdEZpeHR1cmU8Miwg
RDNEMTFfRkwxMF8wPiAgICAgICAgICAgRVMyX0QzRDExX0ZMMTBfMDsKLXR5cGVkZWYgVGVzdEZp
eHR1cmU8MiwgRDNEMTFfRkw5XzM+ICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8zOwotCi10eXBl
ZGVmIFRlc3RGaXh0dXJlPDIsIEQzRDExX1dBUlA+ICAgICAgICAgICAgIEVTMl9EM0QxMV9XQVJQ
OwotdHlwZWRlZiBUZXN0Rml4dHVyZTwyLCBEM0QxMV9GTDExXzBfV0FSUD4gICAgICBFUzJfRDNE
MTFfRkwxMV8wX1dBUlA7Ci10eXBlZGVmIFRlc3RGaXh0dXJlPDIsIEQzRDExX0ZMMTBfMV9XQVJQ
PiAgICAgIEVTMl9EM0QxMV9GTDEwXzFfV0FSUDsKLXR5cGVkZWYgVGVzdEZpeHR1cmU8MiwgRDNE
MTFfRkwxMF8wX1dBUlA+ICAgICAgRVMyX0QzRDExX0ZMMTBfMF9XQVJQOwotdHlwZWRlZiBUZXN0
Rml4dHVyZTwyLCBEM0QxMV9GTDlfM19XQVJQPiAgICAgICBFUzJfRDNEMTFfRkw5XzNfV0FSUDsK
LQotdHlwZWRlZiBUZXN0Rml4dHVyZTwyLCBEM0QxMV9SRUZFUkVOQ0U+ICAgICAgICBFUzJfRDNE
MTFfUkVGRVJFTkNFOwotdHlwZWRlZiBUZXN0Rml4dHVyZTwyLCBEM0QxMV9GTDExXzBfUkVGRVJF
TkNFPiBFUzJfRDNEMTFfRkwxMV8wX1JFRkVSRU5DRTsKLXR5cGVkZWYgVGVzdEZpeHR1cmU8Miwg
RDNEMTFfRkwxMF8xX1JFRkVSRU5DRT4gRVMyX0QzRDExX0ZMMTBfMV9SRUZFUkVOQ0U7Ci10eXBl
ZGVmIFRlc3RGaXh0dXJlPDIsIEQzRDExX0ZMMTBfMF9SRUZFUkVOQ0U+IEVTMl9EM0QxMV9GTDEw
XzBfUkVGRVJFTkNFOwotdHlwZWRlZiBUZXN0Rml4dHVyZTwyLCBEM0QxMV9GTDlfM19SRUZFUkVO
Q0U+ICBFUzJfRDNEMTFfRkw5XzNfUkVGRVJFTkNFOwotCi10eXBlZGVmIFRlc3RGaXh0dXJlPDIs
IE9QRU5HTD4gICAgICAgICAgICAgICAgIEVTMl9PUEVOR0w7Ci10eXBlZGVmIFRlc3RGaXh0dXJl
PDIsIE9QRU5HTEVTPiAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUzsKLQotdHlwZWRlZiBUZXN0
Rml4dHVyZTwzLCBEM0QxMT4gICAgICAgICAgICAgICAgICBFUzNfRDNEMTE7Ci10eXBlZGVmIFRl
c3RGaXh0dXJlPDMsIEQzRDExX0ZMMTFfMT4gICAgICAgICAgIEVTM19EM0QxMV9GTDExXzE7Ci10
eXBlZGVmIFRlc3RGaXh0dXJlPDMsIEQzRDExX0ZMMTFfMD4gICAgICAgICAgIEVTM19EM0QxMV9G
TDExXzA7Ci10eXBlZGVmIFRlc3RGaXh0dXJlPDMsIEQzRDExX0ZMMTBfMT4gICAgICAgICAgIEVT
M19EM0QxMV9GTDEwXzE7Ci10eXBlZGVmIFRlc3RGaXh0dXJlPDMsIEQzRDExX0ZMMTBfMD4gICAg
ICAgICAgIEVTM19EM0QxMV9GTDEwXzA7Ci0KLXR5cGVkZWYgVGVzdEZpeHR1cmU8MywgRDNEMTFf
V0FSUD4gICAgICAgICAgICAgRVMzX0QzRDExX1dBUlA7Ci10eXBlZGVmIFRlc3RGaXh0dXJlPDMs
IEQzRDExX0ZMMTFfMF9XQVJQPiAgICAgIEVTM19EM0QxMV9GTDExXzBfV0FSUDsKLXR5cGVkZWYg
VGVzdEZpeHR1cmU8MywgRDNEMTFfRkwxMF8xX1dBUlA+ICAgICAgRVMzX0QzRDExX0ZMMTBfMV9X
QVJQOwotdHlwZWRlZiBUZXN0Rml4dHVyZTwzLCBEM0QxMV9GTDEwXzBfV0FSUD4gICAgICBFUzNf
RDNEMTFfRkwxMF8wX1dBUlA7Ci0KLXR5cGVkZWYgVGVzdEZpeHR1cmU8MywgRDNEMTFfUkVGRVJF
TkNFPiAgICAgICAgRVMzX0QzRDExX1JFRkVSRU5DRTsKLXR5cGVkZWYgVGVzdEZpeHR1cmU8Mywg
RDNEMTFfRkwxMV8xX1JFRkVSRU5DRT4gRVMzX0QzRDExX0ZMMTFfMV9SRUZFUkVOQ0U7Ci10eXBl
ZGVmIFRlc3RGaXh0dXJlPDMsIEQzRDExX0ZMMTFfMF9SRUZFUkVOQ0U+IEVTM19EM0QxMV9GTDEx
XzBfUkVGRVJFTkNFOwotdHlwZWRlZiBUZXN0Rml4dHVyZTwzLCBEM0QxMV9GTDEwXzFfUkVGRVJF
TkNFPiBFUzNfRDNEMTFfRkwxMF8xX1JFRkVSRU5DRTsKLXR5cGVkZWYgVGVzdEZpeHR1cmU8Mywg
RDNEMTFfRkwxMF8wX1JFRkVSRU5DRT4gRVMzX0QzRDExX0ZMMTBfMF9SRUZFUkVOQ0U7Ci0KLXR5
cGVkZWYgVGVzdEZpeHR1cmU8MywgT1BFTkdMPiAgICAgICAgICAgICAgICAgRVMzX09QRU5HTDsK
LXR5cGVkZWYgVGVzdEZpeHR1cmU8MywgT1BFTkdMRVM+ICAgICAgICAgICAgICAgRVMzX09QRU5H
TEVTOwotCi0jZGVmaW5lIEFOR0xFX1RZUEVEX1RFU1RfQ0FTRSh0ZXN0TmFtZSwgLi4uKSBcCi0g
ICAgdHlwZWRlZiA6OnRlc3Rpbmc6OlR5cGVzPF9fVkFfQVJHU19fPiBIZWxwZXIjI3Rlc3ROYW1l
OyBcCi0gICAgVFlQRURfVEVTVF9DQVNFKHRlc3ROYW1lLCBIZWxwZXIjI3Rlc3ROYW1lKTsKLQot
I2VuZGlmIC8vIFVUSUxfVEVTVF9GSVhUVVJFX1RZUEVTX0gKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3V0aWwvdXRpbC5neXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvdXRpbC91dGlsLmd5cAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvdXRpbC91dGlsLmd5cAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsMTIgQEAK
ICAgICAgICAgICAgICd4MTEvWDExV2luZG93LmNwcCcsCiAgICAgICAgICAgICAneDExL1gxMVdp
bmRvdy5oJywKICAgICAgICAgXSwKKyAgICAgICAgJ3V0aWxfb3pvbmVfc291cmNlcyc6CisgICAg
ICAgIFsKKyAgICAgICAgICAgICdvem9uZS9Pem9uZVBpeG1hcC5jcHAnLAorICAgICAgICAgICAg
J296b25lL096b25lV2luZG93LmNwcCcsCisgICAgICAgICAgICAnb3pvbmUvT3pvbmVXaW5kb3cu
aCcsCisgICAgICAgIF0sCiAgICAgICAgICd1dGlsX29zeF9zb3VyY2VzJzoKICAgICAgICAgWwog
ICAgICAgICAgICAgJ29zeC9PU1hfc3lzdGVtX3V0aWxzLmNwcCcsCkBAIC03NywxMiArODMsMjAg
QEAKICAgICAgICAgICAgICdvc3gvT1NYV2luZG93LmgnLAogICAgICAgICAgICAgJ3Bvc2l4L1Bv
c2l4X3N5c3RlbV91dGlscy5jcHAnLAogICAgICAgICBdLAorICAgICAgICAndXRpbF9hbmRyb2lk
X3NvdXJjZXMnOgorICAgICAgICBbCisgICAgICAgICAgICAnYW5kcm9pZC9BbmRyb2lkUGl4bWFw
LmNwcCcsCisgICAgICAgICAgICAnYW5kcm9pZC9BbmRyb2lkV2luZG93LmNwcCcsCisgICAgICAg
ICAgICAnYW5kcm9pZC9BbmRyb2lkV2luZG93LmgnLAorICAgICAgICAgICAgJ2FuZHJvaWQvdGhp
cmRfcGFydHkvYW5kcm9pZF9uYXRpdmVfYXBwX2dsdWUuYycsCisgICAgICAgICAgICAnYW5kcm9p
ZC90aGlyZF9wYXJ0eS9hbmRyb2lkX25hdGl2ZV9hcHBfZ2x1ZS5oJywKKyAgICAgICAgXSwKICAg
ICB9LAogICAgICd0YXJnZXRzJzoKICAgICBbCiAgICAgICAgIHsKICAgICAgICAgICAgICd0YXJn
ZXRfbmFtZSc6ICdhbmdsZV91dGlsJywKLSAgICAgICAgICAgICd0eXBlJzogJ3N0YXRpY19saWJy
YXJ5JywKKyAgICAgICAgICAgICd0eXBlJzogJ3NoYXJlZF9saWJyYXJ5JywKICAgICAgICAgICAg
ICdpbmNsdWRlcyc6IFsgJy4uL2J1aWxkL2NvbW1vbl9kZWZpbmVzLmd5cGknLCBdLAogICAgICAg
ICAgICAgJ2RlcGVuZGVuY2llcyc6CiAgICAgICAgICAgICBbCkBAIC0xMDcsNiArMTIxLDcgQEAK
ICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAnR0xfR0xFWFRfUFJPVE9UWVBFUycsCiAg
ICAgICAgICAgICAgICAgJ0VHTF9FR0xFWFRfUFJPVE9UWVBFUycsCisgICAgICAgICAgICAgICAg
J0xJQkFOR0xFX1VUSUxfSU1QTEVNRU5UQVRJT04nLAogICAgICAgICAgICAgXSwKICAgICAgICAg
ICAgICdkaXJlY3RfZGVwZW5kZW50X3NldHRpbmdzJzoKICAgICAgICAgICAgIHsKQEAgLTE0Myw2
ICsxNTgsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAg
ICAgJzxAKHV0aWxfbGludXhfc291cmNlcyknLAogICAgICAgICAgICAgICAgICAgICBdLAorICAg
ICAgICAgICAgICAgICAgICAnbGlua19zZXR0aW5ncyc6CisgICAgICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICdsaWJyYXJpZXMnOgorICAgICAgICAgICAgICAgICAg
ICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICctbGRsJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAg
fV0sCiAgICAgICAgICAgICAgICAgWyd1c2VfeDExPT0xJywKICAgICAgICAgICAgICAgICB7CkBA
IC0xNjIsMTIgKzE4NCwyMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAg
ICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICB9XSwKKyAgICAgICAgICAgICAgICBbJ3Vz
ZV9vem9uZT09MScsCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAnc291
cmNlcyc6CisgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICc8
QCh1dGlsX296b25lX3NvdXJjZXMpJywKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgICAgICB9XSwKICAgICAgICAgICAgICAgICBbJ09TPT0ibWFjIicsCiAgICAgICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6CiAgICAgICAgICAgICAgICAgICAg
IFsKICAgICAgICAgICAgICAgICAgICAgICAgICc8QCh1dGlsX29zeF9zb3VyY2VzKScsCiAgICAg
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICd4Y29kZV9zZXR0aW5ncyc6
CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICdEWUxJQl9J
TlNUQUxMX05BTUVfQkFTRSc6ICdAcnBhdGgnLAorICAgICAgICAgICAgICAgICAgICB9LAogICAg
ICAgICAgICAgICAgICAgICAnbGlua19zZXR0aW5ncyc6CiAgICAgICAgICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICdsaWJyYXJpZXMnOgpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvdXRpbC93aW4zMi9XaW4zMlRpbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3dpbjMyL1dpbjMyVGltZXIuY3BwCShyZXZpc2lvbiAy
MDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3dpbjMyL1dpbjMyVGltZXIu
Y3BwCShub25leGlzdGVudCkKQEAgLTEsNTggKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykg
MjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNs
dWRlICJ3aW4zMi9XaW4zMlRpbWVyLmgiCi0KLVdpbjMyVGltZXI6OldpbjMyVGltZXIoKQotICAg
IDogbVJ1bm5pbmcoZmFsc2UpLAotICAgICAgbVN0YXJ0VGltZSgwKSwKLSAgICAgIG1TdG9wVGlt
ZSgwKQotewotfQotCi12b2lkIFdpbjMyVGltZXI6OnN0YXJ0KCkKLXsKLSAgICBMQVJHRV9JTlRF
R0VSIGZyZXF1ZW5jeTsKLSAgICBRdWVyeVBlcmZvcm1hbmNlRnJlcXVlbmN5KCZmcmVxdWVuY3kp
OwotICAgIG1GcmVxdWVuY3kgPSBmcmVxdWVuY3kuUXVhZFBhcnQ7Ci0KLSAgICBMQVJHRV9JTlRF
R0VSIGN1clRpbWU7Ci0gICAgUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIoJmN1clRpbWUpOwotICAg
IG1TdGFydFRpbWUgPSBjdXJUaW1lLlF1YWRQYXJ0OwotCi0gICAgbVJ1bm5pbmcgPSB0cnVlOwot
fQotCi12b2lkIFdpbjMyVGltZXI6OnN0b3AoKQotewotICAgIExBUkdFX0lOVEVHRVIgY3VyVGlt
ZTsKLSAgICBRdWVyeVBlcmZvcm1hbmNlQ291bnRlcigmY3VyVGltZSk7Ci0gICAgbVN0b3BUaW1l
ID0gY3VyVGltZS5RdWFkUGFydDsKLQotICAgIG1SdW5uaW5nID0gZmFsc2U7Ci19Ci0KLWRvdWJs
ZSBXaW4zMlRpbWVyOjpnZXRFbGFwc2VkVGltZSgpIGNvbnN0Ci17Ci0gICAgTE9OR0xPTkcgZW5k
VGltZTsKLSAgICBpZiAobVJ1bm5pbmcpCi0gICAgewotICAgICAgICBMQVJHRV9JTlRFR0VSIGN1
clRpbWU7Ci0gICAgICAgIFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyKCZjdXJUaW1lKTsKLSAgICAg
ICAgZW5kVGltZSA9IGN1clRpbWUuUXVhZFBhcnQ7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0g
ICAgICAgIGVuZFRpbWUgPSBtU3RvcFRpbWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PGRvdWJsZT4oZW5kVGltZSAtIG1TdGFydFRpbWUpIC8gbUZyZXF1ZW5jeTsKLX0KLQotVGlt
ZXIgKkNyZWF0ZVRpbWVyKCkKLXsKLSAgICByZXR1cm4gbmV3IFdpbjMyVGltZXIoKTsKLX0KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvd2luMzIvV2luMzJUaW1lci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvd2luMzIvV2luMzJUaW1lci5o
CShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3dpbjMy
L1dpbjMyVGltZXIuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDMwICswLDAgQEAKLS8vCi0vLyBDb3B5
cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0v
LwotCi0jaWZuZGVmIFNBTVBMRV9VVElMX1dJTjMyX1RJTUVSX0gKLSNkZWZpbmUgU0FNUExFX1VU
SUxfV0lOMzJfVElNRVJfSAotCi0jaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDx3aW5kb3dz
Lmg+Ci0KLWNsYXNzIFdpbjMyVGltZXIgOiBwdWJsaWMgVGltZXIKLXsKLSAgcHVibGljOgotICAg
IFdpbjMyVGltZXIoKTsKLQotICAgIHZvaWQgc3RhcnQoKTsKLSAgICB2b2lkIHN0b3AoKTsKLSAg
ICBkb3VibGUgZ2V0RWxhcHNlZFRpbWUoKSBjb25zdCA7Ci0KLSAgcHJpdmF0ZToKLSAgICBib29s
IG1SdW5uaW5nOwotICAgIExPTkdMT05HIG1TdGFydFRpbWU7Ci0gICAgTE9OR0xPTkcgbVN0b3BU
aW1lOwotCi0gICAgTE9OR0xPTkcgbUZyZXF1ZW5jeTsKLX07Ci0KLSNlbmRpZiAvLyBTQU1QTEVf
VVRJTF9XSU4zMl9USU1FUl9ICkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3dp
bjMyL1dpbjMyV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS91dGlsL3dpbjMyL1dpbjMyV2luZG93LmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvdXRpbC93aW4zMi9XaW4zMldpbmRvdy5jcHAJKG5vbmV4aXN0ZW50
KQpAQCAtMSw1OTkgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxNCBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQot
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNsdWRlICJ3aW4zMi9XaW4z
MldpbmRvdy5oIgotCi0jaW5jbHVkZSA8c3N0cmVhbT4KLQotS2V5IFZpcnR1YWxLZXlDb2RlVG9L
ZXkoV1BBUkFNIGtleSwgTFBBUkFNIGZsYWdzKQotewotICAgIHN3aXRjaCAoa2V5KQotICAgIHsK
LSAgICAgICAgLy8gQ2hlY2sgdGhlIHNjYW5jb2RlIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gbGVm
dCBhbmQgcmlnaHQgc2hpZnQKLSAgICAgIGNhc2UgVktfU0hJRlQ6Ci0gICAgICAgIHsKLSAgICAg
ICAgICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgbFNoaWZ0ID0gTWFwVmlydHVhbEtleShWS19MU0hJ
RlQsIE1BUFZLX1ZLX1RPX1ZTQyk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2NhbmNvZGUg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KChmbGFncyAmICgweEZGIDw8IDE2KSkgPj4gMTYp
OwotICAgICAgICAgICAgcmV0dXJuIHNjYW5jb2RlID09IGxTaGlmdCA/IEtFWV9MU0hJRlQgOiBL
RVlfUlNISUZUOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQ2hlY2sgdGhlICJleHRlbmRlZCIg
ZmxhZyB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIGxlZnQgYW5kIHJpZ2h0IGFsdAotICAgICAgY2Fz
ZSBWS19NRU5VOiAgICAgICByZXR1cm4gKEhJV09SRChmbGFncykgJiBLRl9FWFRFTkRFRCkgPyBL
RVlfUkFMVCA6IEtFWV9MQUxUOwotCi0gICAgICAgIC8vIENoZWNrIHRoZSAiZXh0ZW5kZWQiIGZs
YWcgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBsZWZ0IGFuZCByaWdodCBjb250cm9sCi0gICAgICBj
YXNlIFZLX0NPTlRST0w6ICAgIHJldHVybiAoSElXT1JEKGZsYWdzKSAmIEtGX0VYVEVOREVEKSA/
IEtFWV9SQ09OVFJPTCA6IEtFWV9MQ09OVFJPTDsKLQotICAgICAgICAvLyBPdGhlciBrZXlzIGFy
ZSByZXBvcnRlZCBwcm9wZXJseQotICAgICAgY2FzZSBWS19MV0lOOiAgICAgICByZXR1cm4gS0VZ
X0xTWVNURU07Ci0gICAgICBjYXNlIFZLX1JXSU46ICAgICAgIHJldHVybiBLRVlfUlNZU1RFTTsK
LSAgICAgIGNhc2UgVktfQVBQUzogICAgICAgcmV0dXJuIEtFWV9NRU5VOwotICAgICAgY2FzZSBW
S19PRU1fMTogICAgICByZXR1cm4gS0VZX1NFTUlDT0xPTjsKLSAgICAgIGNhc2UgVktfT0VNXzI6
ICAgICAgcmV0dXJuIEtFWV9TTEFTSDsKLSAgICAgIGNhc2UgVktfT0VNX1BMVVM6ICAgcmV0dXJu
IEtFWV9FUVVBTDsKLSAgICAgIGNhc2UgVktfT0VNX01JTlVTOiAgcmV0dXJuIEtFWV9EQVNIOwot
ICAgICAgY2FzZSBWS19PRU1fNDogICAgICByZXR1cm4gS0VZX0xCUkFDS0VUOwotICAgICAgY2Fz
ZSBWS19PRU1fNjogICAgICByZXR1cm4gS0VZX1JCUkFDS0VUOwotICAgICAgY2FzZSBWS19PRU1f
Q09NTUE6ICByZXR1cm4gS0VZX0NPTU1BOwotICAgICAgY2FzZSBWS19PRU1fUEVSSU9EOiByZXR1
cm4gS0VZX1BFUklPRDsKLSAgICAgIGNhc2UgVktfT0VNXzc6ICAgICAgcmV0dXJuIEtFWV9RVU9U
RTsKLSAgICAgIGNhc2UgVktfT0VNXzU6ICAgICAgcmV0dXJuIEtFWV9CQUNLU0xBU0g7Ci0gICAg
ICBjYXNlIFZLX09FTV8zOiAgICAgIHJldHVybiBLRVlfVElMREU7Ci0gICAgICBjYXNlIFZLX0VT
Q0FQRTogICAgIHJldHVybiBLRVlfRVNDQVBFOwotICAgICAgY2FzZSBWS19TUEFDRTogICAgICBy
ZXR1cm4gS0VZX1NQQUNFOwotICAgICAgY2FzZSBWS19SRVRVUk46ICAgICByZXR1cm4gS0VZX1JF
VFVSTjsKLSAgICAgIGNhc2UgVktfQkFDSzogICAgICAgcmV0dXJuIEtFWV9CQUNLOwotICAgICAg
Y2FzZSBWS19UQUI6ICAgICAgICByZXR1cm4gS0VZX1RBQjsKLSAgICAgIGNhc2UgVktfUFJJT1I6
ICAgICAgcmV0dXJuIEtFWV9QQUdFVVA7Ci0gICAgICBjYXNlIFZLX05FWFQ6ICAgICAgIHJldHVy
biBLRVlfUEFHRURPV047Ci0gICAgICBjYXNlIFZLX0VORDogICAgICAgIHJldHVybiBLRVlfRU5E
OwotICAgICAgY2FzZSBWS19IT01FOiAgICAgICByZXR1cm4gS0VZX0hPTUU7Ci0gICAgICBjYXNl
IFZLX0lOU0VSVDogICAgIHJldHVybiBLRVlfSU5TRVJUOwotICAgICAgY2FzZSBWS19ERUxFVEU6
ICAgICByZXR1cm4gS0VZX0RFTEVURTsKLSAgICAgIGNhc2UgVktfQUREOiAgICAgICAgcmV0dXJu
IEtFWV9BREQ7Ci0gICAgICBjYXNlIFZLX1NVQlRSQUNUOiAgIHJldHVybiBLRVlfU1VCVFJBQ1Q7
Ci0gICAgICBjYXNlIFZLX01VTFRJUExZOiAgIHJldHVybiBLRVlfTVVMVElQTFk7Ci0gICAgICBj
YXNlIFZLX0RJVklERTogICAgIHJldHVybiBLRVlfRElWSURFOwotICAgICAgY2FzZSBWS19QQVVT
RTogICAgICByZXR1cm4gS0VZX1BBVVNFOwotICAgICAgY2FzZSBWS19GMTogICAgICAgICByZXR1
cm4gS0VZX0YxOwotICAgICAgY2FzZSBWS19GMjogICAgICAgICByZXR1cm4gS0VZX0YyOwotICAg
ICAgY2FzZSBWS19GMzogICAgICAgICByZXR1cm4gS0VZX0YzOwotICAgICAgY2FzZSBWS19GNDog
ICAgICAgICByZXR1cm4gS0VZX0Y0OwotICAgICAgY2FzZSBWS19GNTogICAgICAgICByZXR1cm4g
S0VZX0Y1OwotICAgICAgY2FzZSBWS19GNjogICAgICAgICByZXR1cm4gS0VZX0Y2OwotICAgICAg
Y2FzZSBWS19GNzogICAgICAgICByZXR1cm4gS0VZX0Y3OwotICAgICAgY2FzZSBWS19GODogICAg
ICAgICByZXR1cm4gS0VZX0Y4OwotICAgICAgY2FzZSBWS19GOTogICAgICAgICByZXR1cm4gS0VZ
X0Y5OwotICAgICAgY2FzZSBWS19GMTA6ICAgICAgICByZXR1cm4gS0VZX0YxMDsKLSAgICAgIGNh
c2UgVktfRjExOiAgICAgICAgcmV0dXJuIEtFWV9GMTE7Ci0gICAgICBjYXNlIFZLX0YxMjogICAg
ICAgIHJldHVybiBLRVlfRjEyOwotICAgICAgY2FzZSBWS19GMTM6ICAgICAgICByZXR1cm4gS0VZ
X0YxMzsKLSAgICAgIGNhc2UgVktfRjE0OiAgICAgICAgcmV0dXJuIEtFWV9GMTQ7Ci0gICAgICBj
YXNlIFZLX0YxNTogICAgICAgIHJldHVybiBLRVlfRjE1OwotICAgICAgY2FzZSBWS19MRUZUOiAg
ICAgICByZXR1cm4gS0VZX0xFRlQ7Ci0gICAgICBjYXNlIFZLX1JJR0hUOiAgICAgIHJldHVybiBL
RVlfUklHSFQ7Ci0gICAgICBjYXNlIFZLX1VQOiAgICAgICAgIHJldHVybiBLRVlfVVA7Ci0gICAg
ICBjYXNlIFZLX0RPV046ICAgICAgIHJldHVybiBLRVlfRE9XTjsKLSAgICAgIGNhc2UgVktfTlVN
UEFEMDogICAgcmV0dXJuIEtFWV9OVU1QQUQwOwotICAgICAgY2FzZSBWS19OVU1QQUQxOiAgICBy
ZXR1cm4gS0VZX05VTVBBRDE7Ci0gICAgICBjYXNlIFZLX05VTVBBRDI6ICAgIHJldHVybiBLRVlf
TlVNUEFEMjsKLSAgICAgIGNhc2UgVktfTlVNUEFEMzogICAgcmV0dXJuIEtFWV9OVU1QQUQzOwot
ICAgICAgY2FzZSBWS19OVU1QQUQ0OiAgICByZXR1cm4gS0VZX05VTVBBRDQ7Ci0gICAgICBjYXNl
IFZLX05VTVBBRDU6ICAgIHJldHVybiBLRVlfTlVNUEFENTsKLSAgICAgIGNhc2UgVktfTlVNUEFE
NjogICAgcmV0dXJuIEtFWV9OVU1QQUQ2OwotICAgICAgY2FzZSBWS19OVU1QQUQ3OiAgICByZXR1
cm4gS0VZX05VTVBBRDc7Ci0gICAgICBjYXNlIFZLX05VTVBBRDg6ICAgIHJldHVybiBLRVlfTlVN
UEFEODsKLSAgICAgIGNhc2UgVktfTlVNUEFEOTogICAgcmV0dXJuIEtFWV9OVU1QQUQ5OwotICAg
ICAgY2FzZSAnQSc6ICAgICAgICAgICByZXR1cm4gS0VZX0E7Ci0gICAgICBjYXNlICdaJzogICAg
ICAgICAgIHJldHVybiBLRVlfWjsKLSAgICAgIGNhc2UgJ0UnOiAgICAgICAgICAgcmV0dXJuIEtF
WV9FOwotICAgICAgY2FzZSAnUic6ICAgICAgICAgICByZXR1cm4gS0VZX1I7Ci0gICAgICBjYXNl
ICdUJzogICAgICAgICAgIHJldHVybiBLRVlfVDsKLSAgICAgIGNhc2UgJ1knOiAgICAgICAgICAg
cmV0dXJuIEtFWV9ZOwotICAgICAgY2FzZSAnVSc6ICAgICAgICAgICByZXR1cm4gS0VZX1U7Ci0g
ICAgICBjYXNlICdJJzogICAgICAgICAgIHJldHVybiBLRVlfSTsKLSAgICAgIGNhc2UgJ08nOiAg
ICAgICAgICAgcmV0dXJuIEtFWV9POwotICAgICAgY2FzZSAnUCc6ICAgICAgICAgICByZXR1cm4g
S0VZX1A7Ci0gICAgICBjYXNlICdRJzogICAgICAgICAgIHJldHVybiBLRVlfUTsKLSAgICAgIGNh
c2UgJ1MnOiAgICAgICAgICAgcmV0dXJuIEtFWV9TOwotICAgICAgY2FzZSAnRCc6ICAgICAgICAg
ICByZXR1cm4gS0VZX0Q7Ci0gICAgICBjYXNlICdGJzogICAgICAgICAgIHJldHVybiBLRVlfRjsK
LSAgICAgIGNhc2UgJ0cnOiAgICAgICAgICAgcmV0dXJuIEtFWV9HOwotICAgICAgY2FzZSAnSCc6
ICAgICAgICAgICByZXR1cm4gS0VZX0g7Ci0gICAgICBjYXNlICdKJzogICAgICAgICAgIHJldHVy
biBLRVlfSjsKLSAgICAgIGNhc2UgJ0snOiAgICAgICAgICAgcmV0dXJuIEtFWV9LOwotICAgICAg
Y2FzZSAnTCc6ICAgICAgICAgICByZXR1cm4gS0VZX0w7Ci0gICAgICBjYXNlICdNJzogICAgICAg
ICAgIHJldHVybiBLRVlfTTsKLSAgICAgIGNhc2UgJ1cnOiAgICAgICAgICAgcmV0dXJuIEtFWV9X
OwotICAgICAgY2FzZSAnWCc6ICAgICAgICAgICByZXR1cm4gS0VZX1g7Ci0gICAgICBjYXNlICdD
JzogICAgICAgICAgIHJldHVybiBLRVlfQzsKLSAgICAgIGNhc2UgJ1YnOiAgICAgICAgICAgcmV0
dXJuIEtFWV9WOwotICAgICAgY2FzZSAnQic6ICAgICAgICAgICByZXR1cm4gS0VZX0I7Ci0gICAg
ICBjYXNlICdOJzogICAgICAgICAgIHJldHVybiBLRVlfTjsKLSAgICAgIGNhc2UgJzAnOiAgICAg
ICAgICAgcmV0dXJuIEtFWV9OVU0wOwotICAgICAgY2FzZSAnMSc6ICAgICAgICAgICByZXR1cm4g
S0VZX05VTTE7Ci0gICAgICBjYXNlICcyJzogICAgICAgICAgIHJldHVybiBLRVlfTlVNMjsKLSAg
ICAgIGNhc2UgJzMnOiAgICAgICAgICAgcmV0dXJuIEtFWV9OVU0zOwotICAgICAgY2FzZSAnNCc6
ICAgICAgICAgICByZXR1cm4gS0VZX05VTTQ7Ci0gICAgICBjYXNlICc1JzogICAgICAgICAgIHJl
dHVybiBLRVlfTlVNNTsKLSAgICAgIGNhc2UgJzYnOiAgICAgICAgICAgcmV0dXJuIEtFWV9OVU02
OwotICAgICAgY2FzZSAnNyc6ICAgICAgICAgICByZXR1cm4gS0VZX05VTTc7Ci0gICAgICBjYXNl
ICc4JzogICAgICAgICAgIHJldHVybiBLRVlfTlVNODsKLSAgICAgIGNhc2UgJzknOiAgICAgICAg
ICAgcmV0dXJuIEtFWV9OVU05OwotICAgIH0KLQotICAgIHJldHVybiBLZXkoMCk7Ci19Ci0KLUxS
RVNVTFQgQ0FMTEJBQ0sgV25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQ
YXJhbSwgTFBBUkFNIGxQYXJhbSkKLXsKLSAgICBzd2l0Y2gobWVzc2FnZSkKLSAgICB7Ci0gICAg
ICBjYXNlIFdNX05DQ1JFQVRFOgotICAgICAgICB7Ci0gICAgICAgICAgICBMUENSRUFURVNUUlVD
VCBwQ3JlYXRlU3RydWN0ID0gcmVpbnRlcnByZXRfY2FzdDxMUENSRUFURVNUUlVDVD4obFBhcmFt
KTsKLSAgICAgICAgICAgIFNldFdpbmRvd0xvbmdQdHIoaFduZCwgR1dMUF9VU0VSREFUQSwgcmVp
bnRlcnByZXRfY2FzdDxMT05HX1BUUj4ocENyZWF0ZVN0cnVjdC0+bHBDcmVhdGVQYXJhbXMpKTsK
LSAgICAgICAgICAgIHJldHVybiBEZWZXaW5kb3dQcm9jQShoV25kLCBtZXNzYWdlLCB3UGFyYW0s
IGxQYXJhbSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBXaW4zMldpbmRvdyAqd2luZG93ID0g
cmVpbnRlcnByZXRfY2FzdDxXaW4zMldpbmRvdyo+KEdldFdpbmRvd0xvbmdQdHIoaFduZCwgR1dM
UF9VU0VSREFUQSkpOwotICAgIGlmICh3aW5kb3cpCi0gICAgewotICAgICAgICBzd2l0Y2ggKG1l
c3NhZ2UpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIFdNX0RFU1RST1k6Ci0gICAgICAgICAg
Y2FzZSBXTV9DTE9TRToKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBFdmVudCBldmVu
dDsKLSAgICAgICAgICAgICAgICBldmVudC5UeXBlID0gRXZlbnQ6OkVWRU5UX0NMT1NFRDsKLSAg
ICAgICAgICAgICAgICB3aW5kb3ctPnB1c2hFdmVudChldmVudCk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICBjYXNlIFdNX01PVkU6Ci0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgUkVDVCB3aW5SZWN0OwotICAgICAgICAgICAgICAgIEdl
dENsaWVudFJlY3QoaFduZCwgJndpblJlY3QpOwotCi0gICAgICAgICAgICAgICAgUE9JTlQgdG9w
TGVmdDsKLSAgICAgICAgICAgICAgICB0b3BMZWZ0LnggPSB3aW5SZWN0LmxlZnQ7Ci0gICAgICAg
ICAgICAgICAgdG9wTGVmdC55ID0gd2luUmVjdC50b3A7Ci0gICAgICAgICAgICAgICAgQ2xpZW50
VG9TY3JlZW4oaFduZCwgJnRvcExlZnQpOwotCi0gICAgICAgICAgICAgICAgRXZlbnQgZXZlbnQ7
Ci0gICAgICAgICAgICAgICAgZXZlbnQuVHlwZSAgICAgICAgPSBFdmVudDo6RVZFTlRfTU9WRUQ7
Ci0gICAgICAgICAgICAgICAgZXZlbnQuTW92ZS5YICAgICAgPSB0b3BMZWZ0Lng7Ci0gICAgICAg
ICAgICAgICAgZXZlbnQuTW92ZS5ZICAgICAgPSB0b3BMZWZ0Lnk7Ci0gICAgICAgICAgICAgICAg
d2luZG93LT5wdXNoRXZlbnQoZXZlbnQpOwotCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICBjYXNlIFdNX1NJWkU6Ci0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgUkVDVCB3aW5SZWN0OwotICAgICAgICAgICAgICAgIEdldENsaWVudFJlY3Qo
aFduZCwgJndpblJlY3QpOwotCi0gICAgICAgICAgICAgICAgUE9JTlQgdG9wTGVmdDsKLSAgICAg
ICAgICAgICAgICB0b3BMZWZ0LnggPSB3aW5SZWN0LmxlZnQ7Ci0gICAgICAgICAgICAgICAgdG9w
TGVmdC55ID0gd2luUmVjdC50b3A7Ci0gICAgICAgICAgICAgICAgQ2xpZW50VG9TY3JlZW4oaFdu
ZCwgJnRvcExlZnQpOwotCi0gICAgICAgICAgICAgICAgUE9JTlQgYm90UmlnaHQ7Ci0gICAgICAg
ICAgICAgICAgYm90UmlnaHQueCA9IHdpblJlY3QucmlnaHQ7Ci0gICAgICAgICAgICAgICAgYm90
UmlnaHQueSA9IHdpblJlY3QuYm90dG9tOwotICAgICAgICAgICAgICAgIENsaWVudFRvU2NyZWVu
KGhXbmQsICZib3RSaWdodCk7Ci0KLSAgICAgICAgICAgICAgICBFdmVudCBldmVudDsKLSAgICAg
ICAgICAgICAgICBldmVudC5UeXBlICAgICAgICA9IEV2ZW50OjpFVkVOVF9SRVNJWkVEOwotICAg
ICAgICAgICAgICAgIGV2ZW50LlNpemUuV2lkdGggID0gYm90UmlnaHQueCAtIHRvcExlZnQueDsK
LSAgICAgICAgICAgICAgICBldmVudC5TaXplLkhlaWdodCA9IGJvdFJpZ2h0LnkgLSB0b3BMZWZ0
Lnk7Ci0gICAgICAgICAgICAgICAgd2luZG93LT5wdXNoRXZlbnQoZXZlbnQpOwotCi0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICBjYXNlIFdNX1NFVEZP
Q1VTOgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEV2ZW50IGV2ZW50OwotICAgICAg
ICAgICAgICAgIGV2ZW50LlR5cGUgPSBFdmVudDo6RVZFTlRfR0FJTkVEX0ZPQ1VTOwotICAgICAg
ICAgICAgICAgIHdpbmRvdy0+cHVzaEV2ZW50KGV2ZW50KTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgIGNhc2UgV01fS0lMTEZPQ1VTOgotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIEV2ZW50IGV2ZW50OwotICAgICAgICAgICAgICAgIGV2
ZW50LlR5cGUgPSBFdmVudDo6RVZFTlRfTE9TVF9GT0NVUzsKLSAgICAgICAgICAgICAgICB3aW5k
b3ctPnB1c2hFdmVudChldmVudCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICBjYXNlIFdNX0tFWURPV046Ci0gICAgICAgICAgY2FzZSBXTV9TWVNL
RVlET1dOOgotICAgICAgICAgIGNhc2UgV01fS0VZVVA6Ci0gICAgICAgICAgY2FzZSBXTV9TWVNL
RVlVUDoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBib29sIGRvd24gPSAobWVzc2Fn
ZSA9PSBXTV9LRVlET1dOIHx8IG1lc3NhZ2UgPT0gV01fU1lTS0VZRE9XTik7Ci0KLSAgICAgICAg
ICAgICAgICBFdmVudCBldmVudDsKLSAgICAgICAgICAgICAgICBldmVudC5UeXBlICAgICAgICA9
IGRvd24gPyBFdmVudDo6RVZFTlRfS0VZX1BSRVNTRUQgOiBFdmVudDo6RVZFTlRfS0VZX1JFTEVB
U0VEOwotICAgICAgICAgICAgICAgIGV2ZW50LktleS5BbHQgICAgID0gSElXT1JEKEdldEFzeW5j
S2V5U3RhdGUoVktfTUVOVSkpICAgICE9IDA7Ci0gICAgICAgICAgICAgICAgZXZlbnQuS2V5LkNv
bnRyb2wgPSBISVdPUkQoR2V0QXN5bmNLZXlTdGF0ZShWS19DT05UUk9MKSkgIT0gMDsKLSAgICAg
ICAgICAgICAgICBldmVudC5LZXkuU2hpZnQgICA9IEhJV09SRChHZXRBc3luY0tleVN0YXRlKFZL
X1NISUZUKSkgICAhPSAwOwotICAgICAgICAgICAgICAgIGV2ZW50LktleS5TeXN0ZW0gID0gSElX
T1JEKEdldEFzeW5jS2V5U3RhdGUoVktfTFdJTikpIHx8IEhJV09SRChHZXRBc3luY0tleVN0YXRl
KFZLX1JXSU4pKTsKLSAgICAgICAgICAgICAgICBldmVudC5LZXkuQ29kZSAgICA9IFZpcnR1YWxL
ZXlDb2RlVG9LZXkod1BhcmFtLCBsUGFyYW0pOwotICAgICAgICAgICAgICAgIHdpbmRvdy0+cHVz
aEV2ZW50KGV2ZW50KTsKLQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgY2FzZSBXTV9NT1VTRVdIRUVMOgotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIEV2ZW50IGV2ZW50OwotICAgICAgICAgICAgICAgIGV2ZW50LlR5cGUgPSBFdmVudDo6
RVZFTlRfTU9VU0VfV0hFRUxfTU9WRUQ7Ci0gICAgICAgICAgICAgICAgZXZlbnQuTW91c2VXaGVl
bC5EZWx0YSA9IHN0YXRpY19jYXN0PHNob3J0PihISVdPUkQod1BhcmFtKSkgLyAxMjA7Ci0gICAg
ICAgICAgICAgICAgd2luZG93LT5wdXNoRXZlbnQoZXZlbnQpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgY2FzZSBXTV9MQlVUVE9ORE9XTjoKLSAg
ICAgICAgICBjYXNlIFdNX0xCVVRUT05EQkxDTEs6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgRXZlbnQgZXZlbnQ7Ci0gICAgICAgICAgICAgICAgZXZlbnQuVHlwZSAgICAgICAgICAg
ICAgID0gRXZlbnQ6OkVWRU5UX01PVVNFX0JVVFRPTl9QUkVTU0VEOwotICAgICAgICAgICAgICAg
IGV2ZW50Lk1vdXNlQnV0dG9uLkJ1dHRvbiA9IE1PVVNFQlVUVE9OX0xFRlQ7Ci0gICAgICAgICAg
ICAgICAgZXZlbnQuTW91c2VCdXR0b24uWCAgICAgID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KExPV09S
RChsUGFyYW0pKTsKLSAgICAgICAgICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5ZICAgICAgPSBz
dGF0aWNfY2FzdDxzaG9ydD4oSElXT1JEKGxQYXJhbSkpOwotICAgICAgICAgICAgICAgIHdpbmRv
dy0+cHVzaEV2ZW50KGV2ZW50KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgIGNhc2UgV01fTEJVVFRPTlVQOgotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIEV2ZW50IGV2ZW50OwotICAgICAgICAgICAgICAgIGV2ZW50LlR5cGUgICAgICAg
ICAgICAgICA9IEV2ZW50OjpFVkVOVF9NT1VTRV9CVVRUT05fUkVMRUFTRUQ7Ci0gICAgICAgICAg
ICAgICAgZXZlbnQuTW91c2VCdXR0b24uQnV0dG9uID0gTU9VU0VCVVRUT05fTEVGVDsKLSAgICAg
ICAgICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5YICAgICAgPSBzdGF0aWNfY2FzdDxzaG9ydD4o
TE9XT1JEKGxQYXJhbSkpOwotICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNlQnV0dG9uLlkgICAg
ICA9IHN0YXRpY19jYXN0PHNob3J0PihISVdPUkQobFBhcmFtKSk7Ci0gICAgICAgICAgICAgICAg
d2luZG93LT5wdXNoRXZlbnQoZXZlbnQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgY2FzZSBXTV9SQlVUVE9ORE9XTjoKLSAgICAgICAgICBjYXNl
IFdNX1JCVVRUT05EQkxDTEs6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgRXZlbnQg
ZXZlbnQ7Ci0gICAgICAgICAgICAgICAgZXZlbnQuVHlwZSAgICAgICAgICAgICAgID0gRXZlbnQ6
OkVWRU5UX01PVVNFX0JVVFRPTl9QUkVTU0VEOwotICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNl
QnV0dG9uLkJ1dHRvbiA9IE1PVVNFQlVUVE9OX1JJR0hUOwotICAgICAgICAgICAgICAgIGV2ZW50
Lk1vdXNlQnV0dG9uLlggICAgICA9IHN0YXRpY19jYXN0PHNob3J0PihMT1dPUkQobFBhcmFtKSk7
Ci0gICAgICAgICAgICAgICAgZXZlbnQuTW91c2VCdXR0b24uWSAgICAgID0gc3RhdGljX2Nhc3Q8
c2hvcnQ+KEhJV09SRChsUGFyYW0pKTsKLSAgICAgICAgICAgICAgICB3aW5kb3ctPnB1c2hFdmVu
dChldmVudCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIC8vIE1vdXNlIHJpZ2h0IGJ1dHRvbiB1cCBldmVudAotICAgICAgICAgIGNhc2UgV01f
UkJVVFRPTlVQOgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEV2ZW50IGV2ZW50Owot
ICAgICAgICAgICAgICAgIGV2ZW50LlR5cGUgICAgICAgICAgICAgICA9IEV2ZW50OjpFVkVOVF9N
T1VTRV9CVVRUT05fUkVMRUFTRUQ7Ci0gICAgICAgICAgICAgICAgZXZlbnQuTW91c2VCdXR0b24u
QnV0dG9uID0gTU9VU0VCVVRUT05fUklHSFQ7Ci0gICAgICAgICAgICAgICAgZXZlbnQuTW91c2VC
dXR0b24uWCAgICAgID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KExPV09SRChsUGFyYW0pKTsKLSAgICAg
ICAgICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5ZICAgICAgPSBzdGF0aWNfY2FzdDxzaG9ydD4o
SElXT1JEKGxQYXJhbSkpOwotICAgICAgICAgICAgICAgIHdpbmRvdy0+cHVzaEV2ZW50KGV2ZW50
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
Ly8gTW91c2Ugd2hlZWwgYnV0dG9uIGRvd24gZXZlbnQKLSAgICAgICAgICBjYXNlIFdNX01CVVRU
T05ET1dOOgotICAgICAgICAgIGNhc2UgV01fTUJVVFRPTkRCTENMSzoKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBFdmVudCBldmVudDsKLSAgICAgICAgICAgICAgICBldmVudC5UeXBl
ICAgICAgICAgICAgICAgPSBFdmVudDo6RVZFTlRfTU9VU0VfQlVUVE9OX1BSRVNTRUQ7Ci0gICAg
ICAgICAgICAgICAgZXZlbnQuTW91c2VCdXR0b24uQnV0dG9uID0gTU9VU0VCVVRUT05fTUlERExF
OwotICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNlQnV0dG9uLlggICAgICA9IHN0YXRpY19jYXN0
PHNob3J0PihMT1dPUkQobFBhcmFtKSk7Ci0gICAgICAgICAgICAgICAgZXZlbnQuTW91c2VCdXR0
b24uWSAgICAgID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KEhJV09SRChsUGFyYW0pKTsKLSAgICAgICAg
ICAgICAgICB3aW5kb3ctPnB1c2hFdmVudChldmVudCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIE1vdXNlIHdoZWVsIGJ1dHRvbiB1cCBl
dmVudAotICAgICAgICAgIGNhc2UgV01fTUJVVFRPTlVQOgotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIEV2ZW50IGV2ZW50OwotICAgICAgICAgICAgICAgIGV2ZW50LlR5cGUgICAgICAg
ICAgICAgICA9IEV2ZW50OjpFVkVOVF9NT1VTRV9CVVRUT05fUkVMRUFTRUQ7Ci0gICAgICAgICAg
ICAgICAgZXZlbnQuTW91c2VCdXR0b24uQnV0dG9uID0gTU9VU0VCVVRUT05fTUlERExFOwotICAg
ICAgICAgICAgICAgIGV2ZW50Lk1vdXNlQnV0dG9uLlggICAgICA9IHN0YXRpY19jYXN0PHNob3J0
PihMT1dPUkQobFBhcmFtKSk7Ci0gICAgICAgICAgICAgICAgZXZlbnQuTW91c2VCdXR0b24uWSAg
ICAgID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KEhJV09SRChsUGFyYW0pKTsKLSAgICAgICAgICAgICAg
ICB3aW5kb3ctPnB1c2hFdmVudChldmVudCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIE1vdXNlIFggYnV0dG9uIGRvd24gZXZlbnQKLSAg
ICAgICAgICBjYXNlIFdNX1hCVVRUT05ET1dOOgotICAgICAgICAgIGNhc2UgV01fWEJVVFRPTkRC
TENMSzoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBFdmVudCBldmVudDsKLSAgICAg
ICAgICAgICAgICBldmVudC5UeXBlICAgICAgICAgICAgICAgPSBFdmVudDo6RVZFTlRfTU9VU0Vf
QlVUVE9OX1BSRVNTRUQ7Ci0gICAgICAgICAgICAgICAgZXZlbnQuTW91c2VCdXR0b24uQnV0dG9u
ID0gKEhJV09SRCh3UGFyYW0pID09IFhCVVRUT04xKSA/IE1PVVNFQlVUVE9OX0JVVFRPTjQgOiBN
T1VTRUJVVFRPTl9CVVRUT041OwotICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNlQnV0dG9uLlgg
ICAgICA9IHN0YXRpY19jYXN0PHNob3J0PihMT1dPUkQobFBhcmFtKSk7Ci0gICAgICAgICAgICAg
ICAgZXZlbnQuTW91c2VCdXR0b24uWSAgICAgID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KEhJV09SRChs
UGFyYW0pKTsKLSAgICAgICAgICAgICAgICB3aW5kb3ctPnB1c2hFdmVudChldmVudCk7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIE1vdXNl
IFggYnV0dG9uIHVwIGV2ZW50Ci0gICAgICAgICAgY2FzZSBXTV9YQlVUVE9OVVA6Ci0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgRXZlbnQgZXZlbnQ7Ci0gICAgICAgICAgICAgICAgZXZl
bnQuVHlwZSAgICAgICAgICAgICAgID0gRXZlbnQ6OkVWRU5UX01PVVNFX0JVVFRPTl9SRUxFQVNF
RDsKLSAgICAgICAgICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5CdXR0b24gPSAoSElXT1JEKHdQ
YXJhbSkgPT0gWEJVVFRPTjEpID8gTU9VU0VCVVRUT05fQlVUVE9ONCA6IE1PVVNFQlVUVE9OX0JV
VFRPTjU7Ci0gICAgICAgICAgICAgICAgZXZlbnQuTW91c2VCdXR0b24uWCAgICAgID0gc3RhdGlj
X2Nhc3Q8c2hvcnQ+KExPV09SRChsUGFyYW0pKTsKLSAgICAgICAgICAgICAgICBldmVudC5Nb3Vz
ZUJ1dHRvbi5ZICAgICAgPSBzdGF0aWNfY2FzdDxzaG9ydD4oSElXT1JEKGxQYXJhbSkpOwotICAg
ICAgICAgICAgICAgIHdpbmRvdy0+cHVzaEV2ZW50KGV2ZW50KTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgIGNhc2UgV01fTU9VU0VNT1ZFOgotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGludCBtb3VzZVggPSBzdGF0aWNfY2FzdDxzaG9y
dD4oTE9XT1JEKGxQYXJhbSkpOwotICAgICAgICAgICAgICAgIGludCBtb3VzZVkgPSBzdGF0aWNf
Y2FzdDxzaG9ydD4oSElXT1JEKGxQYXJhbSkpOwotCi0gICAgICAgICAgICAgICAgRXZlbnQgZXZl
bnQ7Ci0gICAgICAgICAgICAgICAgZXZlbnQuVHlwZSAgICAgICAgPSBFdmVudDo6RVZFTlRfTU9V
U0VfTU9WRUQ7Ci0gICAgICAgICAgICAgICAgZXZlbnQuTW91c2VNb3ZlLlggPSBtb3VzZVg7Ci0g
ICAgICAgICAgICAgICAgZXZlbnQuTW91c2VNb3ZlLlkgPSBtb3VzZVk7Ci0gICAgICAgICAgICAg
ICAgd2luZG93LT5wdXNoRXZlbnQoZXZlbnQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgY2FzZSBXTV9NT1VTRUxFQVZFOgotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIEV2ZW50IGV2ZW50OwotICAgICAgICAgICAgICAgIGV2ZW50LlR5
cGUgPSBFdmVudDo6RVZFTlRfTU9VU0VfTEVGVDsKLSAgICAgICAgICAgICAgICB3aW5kb3ctPnB1
c2hFdmVudChldmVudCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICBjYXNlIFdNX1VTRVI6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
RXZlbnQgdGVzdEV2ZW50OwotICAgICAgICAgICAgICAgIHRlc3RFdmVudC5UeXBlID0gRXZlbnQ6
OkVWRU5UX1RFU1Q7Ci0gICAgICAgICAgICAgICAgd2luZG93LT5wdXNoRXZlbnQodGVzdEV2ZW50
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0g
ICAgfQotICAgIHJldHVybiBEZWZXaW5kb3dQcm9jQShoV25kLCBtZXNzYWdlLCB3UGFyYW0sIGxQ
YXJhbSk7Ci19Ci0KLVdpbjMyV2luZG93OjpXaW4zMldpbmRvdygpCi0gICAgOiBtTmF0aXZlV2lu
ZG93KDApLAotICAgICAgbVBhcmVudFdpbmRvdygwKSwKLSAgICAgIG1OYXRpdmVEaXNwbGF5KDAp
Ci17Ci19Ci0KLVdpbjMyV2luZG93Ojp+V2luMzJXaW5kb3coKQotewotICAgIGRlc3Ryb3koKTsK
LX0KLQotYm9vbCBXaW4zMldpbmRvdzo6aW5pdGlhbGl6ZShjb25zdCBzdGQ6OnN0cmluZyAmbmFt
ZSwgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0KQotewotICAgIGRlc3Ryb3koKTsKLQotICAg
IC8vIFVzZSBhIG5ldyB3aW5kb3cgY2xhc3MgbmFtZSBmb3IgZXZlciB3aW5kb3cgdG8gZW5zdXJl
IHRoYXQgYSBuZXcgd2luZG93IGNhbiBiZSBjcmVhdGVkCi0gICAgLy8gZXZlbiBpZiB0aGUgbGFz
dCBvbmUgd2FzIG5vdCBwcm9wZXJseSBkZXN0cm95ZWQKLSAgICBzdGF0aWMgc2l6ZV90IHdpbmRv
d0lkeCA9IDA7Ci0gICAgc3RkOjpvc3RyaW5nc3RyZWFtIG5hbWVTdHJlYW07Ci0gICAgbmFtZVN0
cmVhbSA8PCBuYW1lIDw8ICJfIiA8PCB3aW5kb3dJZHgrKzsKLQotICAgIG1QYXJlbnRDbGFzc05h
bWUgPSBuYW1lU3RyZWFtLnN0cigpOwotICAgIG1DaGlsZENsYXNzTmFtZSA9IG1QYXJlbnRDbGFz
c05hbWUgKyAiX0NoaWxkIjsKLQotICAgIC8vIFdvcmsgYXJvdW5kIGNvbXBpbGUgZXJyb3IgZnJv
bSBub3QgZGVmaW5pbmcgIlVOSUNPREUiIHdoaWxlIENocm9taXVtIGRvZXMKLSAgICBjb25zdCBM
UFNUUiBpZGNBcnJvdyA9IE1BS0VJTlRSRVNPVVJDRUEoMzI1MTIpOwotCi0gICAgV05EQ0xBU1NF
WEEgcGFyZW50V2luZG93Q2xhc3MgPSB7IDAgfTsKLSAgICBwYXJlbnRXaW5kb3dDbGFzcy5jYlNp
emUgPSBzaXplb2YoV05EQ0xBU1NFWEEpOwotICAgIHBhcmVudFdpbmRvd0NsYXNzLnN0eWxlID0g
MDsKLSAgICBwYXJlbnRXaW5kb3dDbGFzcy5scGZuV25kUHJvYyA9IFduZFByb2M7Ci0gICAgcGFy
ZW50V2luZG93Q2xhc3MuY2JDbHNFeHRyYSA9IDA7Ci0gICAgcGFyZW50V2luZG93Q2xhc3MuY2JX
bmRFeHRyYSA9IDA7Ci0gICAgcGFyZW50V2luZG93Q2xhc3MuaEluc3RhbmNlID0gR2V0TW9kdWxl
SGFuZGxlKE5VTEwpOwotICAgIHBhcmVudFdpbmRvd0NsYXNzLmhJY29uID0gTlVMTDsKLSAgICBw
YXJlbnRXaW5kb3dDbGFzcy5oQ3Vyc29yID0gTG9hZEN1cnNvckEoTlVMTCwgaWRjQXJyb3cpOwot
ICAgIHBhcmVudFdpbmRvd0NsYXNzLmhickJhY2tncm91bmQgPSAwOwotICAgIHBhcmVudFdpbmRv
d0NsYXNzLmxwc3pNZW51TmFtZSA9IE5VTEw7Ci0gICAgcGFyZW50V2luZG93Q2xhc3MubHBzekNs
YXNzTmFtZSA9IG1QYXJlbnRDbGFzc05hbWUuY19zdHIoKTsKLSAgICBpZiAoIVJlZ2lzdGVyQ2xh
c3NFeEEoJnBhcmVudFdpbmRvd0NsYXNzKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0KLSAgICBXTkRDTEFTU0VYQSBjaGlsZFdpbmRvd0NsYXNzID0geyAwIH07Ci0gICAg
Y2hpbGRXaW5kb3dDbGFzcy5jYlNpemUgPSBzaXplb2YoV05EQ0xBU1NFWEEpOwotICAgIGNoaWxk
V2luZG93Q2xhc3Muc3R5bGUgPSBDU19PV05EQzsKLSAgICBjaGlsZFdpbmRvd0NsYXNzLmxwZm5X
bmRQcm9jID0gV25kUHJvYzsKLSAgICBjaGlsZFdpbmRvd0NsYXNzLmNiQ2xzRXh0cmEgPSAwOwot
ICAgIGNoaWxkV2luZG93Q2xhc3MuY2JXbmRFeHRyYSA9IDA7Ci0gICAgY2hpbGRXaW5kb3dDbGFz
cy5oSW5zdGFuY2UgPSBHZXRNb2R1bGVIYW5kbGUoTlVMTCk7Ci0gICAgY2hpbGRXaW5kb3dDbGFz
cy5oSWNvbiA9IE5VTEw7Ci0gICAgY2hpbGRXaW5kb3dDbGFzcy5oQ3Vyc29yID0gTG9hZEN1cnNv
ckEoTlVMTCwgaWRjQXJyb3cpOwotICAgIGNoaWxkV2luZG93Q2xhc3MuaGJyQmFja2dyb3VuZCA9
IDA7Ci0gICAgY2hpbGRXaW5kb3dDbGFzcy5scHN6TWVudU5hbWUgPSBOVUxMOwotICAgIGNoaWxk
V2luZG93Q2xhc3MubHBzekNsYXNzTmFtZSA9IG1DaGlsZENsYXNzTmFtZS5jX3N0cigpOwotICAg
IGlmICghUmVnaXN0ZXJDbGFzc0V4QSgmY2hpbGRXaW5kb3dDbGFzcykpCi0gICAgewotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgRFdPUkQgcGFyZW50U3R5bGUgPSBXU19DQVBU
SU9OIHwgV1NfVEhJQ0tGUkFNRSB8IFdTX01JTklNSVpFQk9YIHwgV1NfTUFYSU1JWkVCT1ggfCBX
U19TWVNNRU5VOwotICAgIERXT1JEIHBhcmVudEV4dGVuZGVkU3R5bGUgPSBXU19FWF9BUFBXSU5E
T1c7Ci0KLSAgICBSRUNUIHNpemVSZWN0ID0geyAwLCAwLCB3aWR0aCwgaGVpZ2h0IH07Ci0gICAg
QWRqdXN0V2luZG93UmVjdEV4KCZzaXplUmVjdCwgcGFyZW50U3R5bGUsIEZBTFNFLCBwYXJlbnRF
eHRlbmRlZFN0eWxlKTsKLQotICAgIG1QYXJlbnRXaW5kb3cgPSBDcmVhdGVXaW5kb3dFeEEocGFy
ZW50RXh0ZW5kZWRTdHlsZSwgbVBhcmVudENsYXNzTmFtZS5jX3N0cigpLCBuYW1lLmNfc3RyKCks
IHBhcmVudFN0eWxlLCBDV19VU0VERUZBVUxULCBDV19VU0VERUZBVUxULAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZVJlY3QucmlnaHQgLSBzaXplUmVjdC5sZWZ0LCBz
aXplUmVjdC5ib3R0b20gLSBzaXplUmVjdC50b3AsIE5VTEwsIE5VTEwsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHZXRNb2R1bGVIYW5kbGUoTlVMTCksIHRoaXMpOwotCi0g
ICAgbU5hdGl2ZVdpbmRvdyA9IENyZWF0ZVdpbmRvd0V4QSgwLCBtQ2hpbGRDbGFzc05hbWUuY19z
dHIoKSwgbmFtZS5jX3N0cigpLCBXU19DSElMRCwgMCwgMCwgd2lkdGgsIGhlaWdodCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1QYXJlbnRXaW5kb3csIE5VTEwsIEdldE1v
ZHVsZUhhbmRsZShOVUxMKSwgdGhpcyk7Ci0KLSAgICBtTmF0aXZlRGlzcGxheSA9IEdldERDKG1O
YXRpdmVXaW5kb3cpOwotICAgIGlmICghbU5hdGl2ZURpc3BsYXkpCi0gICAgewotICAgICAgICBk
ZXN0cm95KCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotdm9pZCBXaW4zMldpbmRvdzo6ZGVzdHJveSgpCi17Ci0gICAgaWYgKG1OYXRpdmVE
aXNwbGF5KQotICAgIHsKLSAgICAgICAgUmVsZWFzZURDKG1OYXRpdmVXaW5kb3csIG1OYXRpdmVE
aXNwbGF5KTsKLSAgICAgICAgbU5hdGl2ZURpc3BsYXkgPSAwOwotICAgIH0KLQotICAgIGlmICht
TmF0aXZlV2luZG93KQotICAgIHsKLSAgICAgICAgRGVzdHJveVdpbmRvdyhtTmF0aXZlV2luZG93
KTsKLSAgICAgICAgbU5hdGl2ZVdpbmRvdyA9IDA7Ci0gICAgfQotCi0gICAgaWYgKG1QYXJlbnRX
aW5kb3cpCi0gICAgewotICAgICAgICBEZXN0cm95V2luZG93KG1QYXJlbnRXaW5kb3cpOwotICAg
ICAgICBtUGFyZW50V2luZG93ID0gMDsKLSAgICB9Ci0KLSAgICBVbnJlZ2lzdGVyQ2xhc3NBKG1Q
YXJlbnRDbGFzc05hbWUuY19zdHIoKSwgTlVMTCk7Ci0gICAgVW5yZWdpc3RlckNsYXNzQShtQ2hp
bGRDbGFzc05hbWUuY19zdHIoKSwgTlVMTCk7Ci19Ci0KLUVHTE5hdGl2ZVdpbmRvd1R5cGUgV2lu
MzJXaW5kb3c6OmdldE5hdGl2ZVdpbmRvdygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1OYXRpdmVX
aW5kb3c7Ci19Ci0KLUVHTE5hdGl2ZURpc3BsYXlUeXBlIFdpbjMyV2luZG93OjpnZXROYXRpdmVE
aXNwbGF5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbU5hdGl2ZURpc3BsYXk7Ci19Ci0KLXZvaWQg
V2luMzJXaW5kb3c6Om1lc3NhZ2VMb29wKCkKLXsKLSAgICBNU0cgbXNnOwotICAgIHdoaWxlIChQ
ZWVrTWVzc2FnZSgmbXNnLCBOVUxMLCAwLCAwLCBQTV9SRU1PVkUpKQotICAgIHsKLSAgICAgICAg
VHJhbnNsYXRlTWVzc2FnZSgmbXNnKTsKLSAgICAgICAgRGlzcGF0Y2hNZXNzYWdlKCZtc2cpOwot
ICAgIH0KLX0KLQotdm9pZCBXaW4zMldpbmRvdzo6c2V0TW91c2VQb3NpdGlvbihpbnQgeCwgaW50
IHkpCi17Ci0gICAgUkVDVCB3aW5SZWN0OwotICAgIEdldENsaWVudFJlY3QobU5hdGl2ZVdpbmRv
dywgJndpblJlY3QpOwotCi0gICAgUE9JTlQgdG9wTGVmdDsKLSAgICB0b3BMZWZ0LnggPSB3aW5S
ZWN0LmxlZnQ7Ci0gICAgdG9wTGVmdC55ID0gd2luUmVjdC50b3A7Ci0gICAgQ2xpZW50VG9TY3Jl
ZW4obU5hdGl2ZVdpbmRvdywgJnRvcExlZnQpOwotCi0gICAgU2V0Q3Vyc29yUG9zKHRvcExlZnQu
eCArIHgsIHRvcExlZnQueSArIHkpOwotfQotCi1PU1dpbmRvdyAqQ3JlYXRlT1NXaW5kb3coKQot
ewotICAgIHJldHVybiBuZXcgV2luMzJXaW5kb3coKTsKLX0KLQotYm9vbCBXaW4zMldpbmRvdzo6
c2V0UG9zaXRpb24oaW50IHgsIGludCB5KQotewotICAgIGlmIChtWCA9PSB4ICYmIG1ZID09IG1Z
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgUkVDVCB3aW5kb3dS
ZWN0OwotICAgIGlmICghR2V0V2luZG93UmVjdChtUGFyZW50V2luZG93LCAmd2luZG93UmVjdCkp
Ci0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKCFNb3ZlV2lu
ZG93KG1QYXJlbnRXaW5kb3csIHgsIHksIHdpbmRvd1JlY3QucmlnaHQgLSB3aW5kb3dSZWN0Lmxl
ZnQsIHdpbmRvd1JlY3QuYm90dG9tIC0gd2luZG93UmVjdC50b3AsIFRSVUUpKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29s
IFdpbjMyV2luZG93OjpyZXNpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQotewotICAgIGlmICh3
aWR0aCA9PSBtV2lkdGggJiYgaGVpZ2h0ID09IG1IZWlnaHQpCi0gICAgewotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBSRUNUIHdpbmRvd1JlY3Q7Ci0gICAgaWYgKCFHZXRXaW5k
b3dSZWN0KG1QYXJlbnRXaW5kb3csICZ3aW5kb3dSZWN0KSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgICBSRUNUIGNsaWVudFJlY3Q7Ci0gICAgaWYgKCFHZXRDbGll
bnRSZWN0KG1QYXJlbnRXaW5kb3csICZjbGllbnRSZWN0KSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgICBMT05HIGRpZmZYID0gKHdpbmRvd1JlY3QucmlnaHQgLSB3
aW5kb3dSZWN0LmxlZnQpIC0gY2xpZW50UmVjdC5yaWdodDsKLSAgICBMT05HIGRpZmZZID0gKHdp
bmRvd1JlY3QuYm90dG9tIC0gd2luZG93UmVjdC50b3ApIC0gY2xpZW50UmVjdC5ib3R0b207Ci0g
ICAgaWYgKCFNb3ZlV2luZG93KG1QYXJlbnRXaW5kb3csIHdpbmRvd1JlY3QubGVmdCwgd2luZG93
UmVjdC50b3AsIHdpZHRoICsgZGlmZlgsIGhlaWdodCArIGRpZmZZLCBUUlVFKSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoIU1vdmVXaW5kb3cobU5hdGl2
ZVdpbmRvdywgMCwgMCwgd2lkdGgsIGhlaWdodCwgRkFMU0UpKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFdpbjMyV2lu
ZG93OjpzZXRWaXNpYmxlKGJvb2wgaXNWaXNpYmxlKQotewotICAgIGludCBmbGFnID0gKGlzVmlz
aWJsZSA/IFNXX1NIT1cgOiBTV19ISURFKTsKLQotICAgIFNob3dXaW5kb3cobVBhcmVudFdpbmRv
dywgZmxhZyk7Ci0gICAgU2hvd1dpbmRvdyhtTmF0aXZlV2luZG93LCBmbGFnKTsKLX0KLQotdm9p
ZCBXaW4zMldpbmRvdzo6cHVzaEV2ZW50KEV2ZW50IGV2ZW50KQotewotICAgIE9TV2luZG93Ojpw
dXNoRXZlbnQoZXZlbnQpOwotCi0gICAgc3dpdGNoIChldmVudC5UeXBlKQotICAgIHsKLSAgICAg
IGNhc2UgRXZlbnQ6OkVWRU5UX1JFU0laRUQ6Ci0gICAgICAgIE1vdmVXaW5kb3cobU5hdGl2ZVdp
bmRvdywgMCwgMCwgbVdpZHRoLCBtSGVpZ2h0LCBGQUxTRSk7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLX0KLQotdm9pZCBXaW4zMldpbmRvdzo6c2lnbmFsVGVzdEV2ZW50KCkKLXsKLSAgICBQb3N0
TWVzc2FnZShtTmF0aXZlV2luZG93LCBXTV9VU0VSLCAwLCAwKTsKLX0KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3V0aWwvd2luMzIvV2luMzJXaW5kb3cuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3dpbjMyL1dpbjMyV2luZG93LmgJKHJldmlzaW9u
IDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvd2luMzIvV2luMzJXaW5k
b3cuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ2ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMp
IDIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaWZu
ZGVmIFNBTVBMRV9VVElMX1dJTjMyX1dJTkRPV19ICi0jZGVmaW5lIFNBTVBMRV9VVElMX1dJTjMy
X1dJTkRPV19ICi0KLSNpbmNsdWRlICJPU1dpbmRvdy5oIgotI2luY2x1ZGUgPHN0cmluZz4KLSNp
bmNsdWRlIDx3aW5kb3dzLmg+Ci0KLWNsYXNzIFdpbjMyV2luZG93IDogcHVibGljIE9TV2luZG93
Ci17Ci0gIHB1YmxpYzoKLSAgICBXaW4zMldpbmRvdygpOwotICAgIH5XaW4zMldpbmRvdygpOwot
Ci0gICAgYm9vbCBpbml0aWFsaXplKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lLCBzaXplX3Qgd2lk
dGgsIHNpemVfdCBoZWlnaHQpIG92ZXJyaWRlOwotICAgIHZvaWQgZGVzdHJveSgpIG92ZXJyaWRl
OwotCi0gICAgRUdMTmF0aXZlV2luZG93VHlwZSBnZXROYXRpdmVXaW5kb3coKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBFR0xOYXRpdmVEaXNwbGF5VHlwZSBnZXROYXRpdmVEaXNwbGF5KCkgY29uc3Qg
b3ZlcnJpZGU7Ci0KLSAgICB2b2lkIG1lc3NhZ2VMb29wKCkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lk
IHB1c2hFdmVudChFdmVudCBldmVudCkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIHNldE1vdXNlUG9z
aXRpb24oaW50IHgsIGludCB5KSBvdmVycmlkZTsKLSAgICBib29sIHNldFBvc2l0aW9uKGludCB4
LCBpbnQgeSkgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZXNpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KSBvdmVycmlkZTsKLSAgICB2b2lkIHNldFZpc2libGUoYm9vbCBpc1Zpc2libGUpIG92ZXJyaWRl
OwotCi0gICAgdm9pZCBzaWduYWxUZXN0RXZlbnQoKSBvdmVycmlkZTsKLQotICBwcml2YXRlOgot
ICAgIHN0ZDo6c3RyaW5nIG1QYXJlbnRDbGFzc05hbWU7Ci0gICAgc3RkOjpzdHJpbmcgbUNoaWxk
Q2xhc3NOYW1lOwotCi0gICAgRUdMTmF0aXZlV2luZG93VHlwZSBtTmF0aXZlV2luZG93OwotICAg
IEVHTE5hdGl2ZVdpbmRvd1R5cGUgbVBhcmVudFdpbmRvdzsKLSAgICBFR0xOYXRpdmVEaXNwbGF5
VHlwZSBtTmF0aXZlRGlzcGxheTsKLX07Ci0KLSNlbmRpZiAvLyBTQU1QTEVfVVRJTF9XSU5ET1df
SApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC93aW4zMi9XaW4zMl9wYXRoX3V0
aWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3dpbjMy
L1dpbjMyX3BhdGhfdXRpbHMuY3BwCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS91dGlsL3dpbjMyL1dpbjMyX3BhdGhfdXRpbHMuY3BwCShub25leGlzdGVudCkK
QEAgLTEsMjMgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxNCBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNsdWRlICJwYXRoX3V0aWxzLmgi
Ci0jaW5jbHVkZSA8YXJyYXk+Ci0jaW5jbHVkZSA8d2luZG93cy5oPgotCi1zdGQ6OnN0cmluZyBH
ZXRFeGVjdXRhYmxlUGF0aCgpCi17Ci0gICAgc3RkOjphcnJheTxjaGFyLCBNQVhfUEFUSD4gZXhl
Y3V0YWJsZUZpbGVCdWY7Ci0gICAgRFdPUkQgZXhlY3V0YWJsZVBhdGhMZW4gPSBHZXRNb2R1bGVG
aWxlTmFtZUEoTlVMTCwgZXhlY3V0YWJsZUZpbGVCdWYuZGF0YSgpLCBleGVjdXRhYmxlRmlsZUJ1
Zi5zaXplKCkpOwotICAgIHJldHVybiAoZXhlY3V0YWJsZVBhdGhMZW4gPiAwID8gc3RkOjpzdHJp
bmcoZXhlY3V0YWJsZUZpbGVCdWYuZGF0YSgpKSA6ICIiKTsKLX0KLQotc3RkOjpzdHJpbmcgR2V0
RXhlY3V0YWJsZURpcmVjdG9yeSgpCi17Ci0gICAgc3RkOjpzdHJpbmcgZXhlY3V0YWJsZVBhdGgg
PSBHZXRFeGVjdXRhYmxlUGF0aCgpOwotICAgIHNpemVfdCBsYXN0UGF0aFNlcExvYyA9IGV4ZWN1
dGFibGVQYXRoLmZpbmRfbGFzdF9vZigiXFwvIik7Ci0gICAgcmV0dXJuIChsYXN0UGF0aFNlcExv
YyAhPSBzdGQ6OnN0cmluZzo6bnBvcykgPyBleGVjdXRhYmxlUGF0aC5zdWJzdHIoMCwgbGFzdFBh
dGhTZXBMb2MpIDogIiI7Ci19CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL2Fu
ZHJvaWQvQW5kcm9pZFBpeG1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvdXRpbC9hbmRyb2lkL0FuZHJvaWRQaXhtYXAuY3BwCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvYW5kcm9pZC9BbmRyb2lkUGl4bWFwLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gQW5kcm9pZFBp
eG1hcC5jcHA6IEltcGxlbWVudGF0aW9uIG9mIE9TUGl4bWFwIGZvciBBbmRyb2lkCisKKyNpbmNs
dWRlICJPU1BpeG1hcC5oIgorCitPU1BpeG1hcCAqQ3JlYXRlT1NQaXhtYXAoKQoreworICAgIHJl
dHVybiBudWxscHRyOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9hbmRy
b2lkL0FuZHJvaWRXaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3V0aWwvYW5kcm9pZC9BbmRyb2lkV2luZG93LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL2FuZHJvaWQvQW5kcm9pZFdpbmRvdy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxNTQgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBBbmRyb2lkV2lu
ZG93LmNwcDogSW1wbGVtZW50YXRpb24gb2YgT1NXaW5kb3cgZm9yIEFuZHJvaWQKKworI2luY2x1
ZGUgImFuZHJvaWQvQW5kcm9pZFdpbmRvdy5oIgorCisjaW5jbHVkZSA8cHRocmVhZC5oPgorCisj
aW5jbHVkZSAiYW5kcm9pZC90aGlyZF9wYXJ0eS9hbmRyb2lkX25hdGl2ZV9hcHBfZ2x1ZS5oIgor
I2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UKK3sKKyAgICBzdHJ1Y3QgYW5k
cm9pZF9hcHAgKnNBcHAgPSBudWxscHRyOworICAgIHB0aHJlYWRfbXV0ZXhfdCBzSW5pdFdpbmRv
d011dGV4OworICAgIHB0aHJlYWRfY29uZF90IHNJbml0V2luZG93Q29uZDsKKyAgICBib29sIHNJ
bml0V2luZG93RG9uZSA9IGZhbHNlOworfSAgLy8gbmFtZXNwYWNlCisKK0FuZHJvaWRXaW5kb3c6
OkFuZHJvaWRXaW5kb3coKQoreworfQorCitBbmRyb2lkV2luZG93Ojp+QW5kcm9pZFdpbmRvdygp
Cit7Cit9CisKK2Jvb2wgQW5kcm9pZFdpbmRvdzo6aW5pdGlhbGl6ZShjb25zdCBzdGQ6OnN0cmlu
ZyAmbmFtZSwgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0KQoreworICAgIHJldHVybiByZXNp
emUod2lkdGgsIGhlaWdodCk7Cit9Cit2b2lkIEFuZHJvaWRXaW5kb3c6OmRlc3Ryb3koKQorewor
fQorCitFR0xOYXRpdmVXaW5kb3dUeXBlIEFuZHJvaWRXaW5kb3c6OmdldE5hdGl2ZVdpbmRvdygp
IGNvbnN0Cit7CisgICAgLy8gUmV0dXJuIHRoZSBlbnRpcmUgQWN0aXZpdHkgU3VyZmFjZSBmb3Ig
bm93CisgICAgLy8gc0FwcC0+d2luZG93IGlzIHZhbGlkIG9ubHkgYWZ0ZXIgc0luaXRXaW5kb3dE
b25lLCB3aGljaCBpcyB0cnVlIGFmdGVyIGluaXRpYWxpemUoKQorICAgIHJldHVybiBzQXBwLT53
aW5kb3c7Cit9CisKK0VHTE5hdGl2ZURpc3BsYXlUeXBlIEFuZHJvaWRXaW5kb3c6OmdldE5hdGl2
ZURpc3BsYXkoKSBjb25zdAoreworICAgIHJldHVybiBFR0xfREVGQVVMVF9ESVNQTEFZOworfQor
Cit2b2lkIEFuZHJvaWRXaW5kb3c6Om1lc3NhZ2VMb29wKCkKK3sKKyAgICAvLyBUT0RPOiBhY2N1
bXVsYXRlIGV2ZW50cyBpbiB0aGUgcmVhbCBtZXNzYWdlIGxvb3Agb2YgYW5kcm9pZF9tYWluLAor
ICAgIC8vIGFuZCBwcm9jZXNzIHRoZW0gaGVyZQorfQorCit2b2lkIEFuZHJvaWRXaW5kb3c6OnNl
dE1vdXNlUG9zaXRpb24oaW50IHgsIGludCB5KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30K
KworYm9vbCBBbmRyb2lkV2luZG93OjpzZXRQb3NpdGlvbihpbnQgeCwgaW50IHkpCit7CisgICAg
VU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBbmRyb2lkV2lu
ZG93OjpyZXNpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIG1XaWR0aCA9IHdpZHRo
OworICAgIG1IZWlnaHQgPSBoZWlnaHQ7CisKKyAgICAvLyBzQXBwLT53aW5kb3cgdXNlZCBiZWxv
dyBpcyB2YWxpZCBvbmx5IGFmdGVyIEFjdGl2aXR5IFN1cmZhY2UgaXMgY3JlYXRlZAorICAgIHB0
aHJlYWRfbXV0ZXhfbG9jaygmc0luaXRXaW5kb3dNdXRleCk7CisgICAgd2hpbGUgKCFzSW5pdFdp
bmRvd0RvbmUpCisgICAgeworICAgICAgICBwdGhyZWFkX2NvbmRfd2FpdCgmc0luaXRXaW5kb3dD
b25kLCAmc0luaXRXaW5kb3dNdXRleCk7CisgICAgfQorICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2Nr
KCZzSW5pdFdpbmRvd011dGV4KTsKKworICAgIC8vIFRPRE86IGZpZ3VyZSBvdXQgYSB3YXkgdG8g
c2V0IHRoZSBmb3JtYXQgYXMgd2VsbCwKKyAgICAvLyB3aGljaCBpcyBhdmFpbGFibGUgb25seSBh
ZnRlciBFR0xXaW5kb3cgaW5pdGlhbGl6YXRpb24KKyAgICBpbnQzMl90IGVyciA9IEFOYXRpdmVX
aW5kb3dfc2V0QnVmZmVyc0dlb21ldHJ5KHNBcHAtPndpbmRvdywgbVdpZHRoLCBtSGVpZ2h0LCAw
KTsKKyAgICByZXR1cm4gZXJyID09IDA7Cit9CisKK3ZvaWQgQW5kcm9pZFdpbmRvdzo6c2V0Vmlz
aWJsZShib29sIGlzVmlzaWJsZSkKK3sKK30KKwordm9pZCBBbmRyb2lkV2luZG93OjpzaWduYWxU
ZXN0RXZlbnQoKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKworT1NXaW5kb3cgKkNyZWF0
ZU9TV2luZG93KCkKK3sKKyAgICAvLyBUaGVyZSBzaG91bGQgYmUgb25seSBvbmUgbGl2ZSBpbnN0
YW5jZSBvZiBBbmRyb2lkV2luZG93IGF0IGEgdGltZSwKKyAgICAvLyBhcyB0aGVyZSBpcyBvbmx5
IG9uZSBBY3Rpdml0eSBTdXJmYWNlIGJlaGluZCBpdC4KKyAgICAvLyBDcmVhdGluZyBhIG5ldyBB
bmRyb2lkV2luZG93IGVhY2ggdGltZSB3b3JrcyBmb3IgQU5HTEVUZXN0LAorICAgIC8vIGFzIGl0
IGRlc3Ryb3lzIGFuIG9sZCB3aW5kb3cgYmVmb3JlIGNyZWF0aW5nIGEgbmV3IG9uZS4KKyAgICAv
LyBUT0RPOiB1c2UgR0xTdXJmYWNlVmlldyB0byBzdXBwb3J0IG11bHRpcGxlIHdpbmRvd3MKKyAg
ICByZXR1cm4gbmV3IEFuZHJvaWRXaW5kb3coKTsKK30KKworc3RhdGljIHZvaWQgb25BcHBDbWQo
c3RydWN0IGFuZHJvaWRfYXBwICphcHAsIGludDMyX3QgY21kKQoreworICAgIHN3aXRjaCAoY21k
KQorICAgIHsKKyAgICAgICAgY2FzZSBBUFBfQ01EX0lOSVRfV0lORE9XOgorICAgICAgICAgICAg
cHRocmVhZF9tdXRleF9sb2NrKCZzSW5pdFdpbmRvd011dGV4KTsKKyAgICAgICAgICAgIHNJbml0
V2luZG93RG9uZSA9IHRydWU7CisgICAgICAgICAgICBwdGhyZWFkX2NvbmRfYnJvYWRjYXN0KCZz
SW5pdFdpbmRvd0NvbmQpOworICAgICAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJnNJbml0
V2luZG93TXV0ZXgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIFRPRE86IHByb2Nl
c3Mgb3RoZXIgY29tbWFuZHMgYW5kIHBhc3MgdGhlbSB0byBBbmRyb2lkV2luZG93IGZvciBoYW5k
bGluZworICAgICAgICAvLyBUT0RPOiBmaWd1cmUgb3V0IGhvdyB0byBoYW5kbGUgQVBQX0NNRF9Q
QVVTRSwKKyAgICAgICAgLy8gd2hpY2ggc2hvdWxkIGltbWVkaWF0ZWx5IGhhbHQgYWxsIHRoZSBy
ZW5kZXJpbmcsCisgICAgICAgIC8vIHNpbmNlIEFjdGl2aXR5IFN1cmZhY2UgaXMgbm8gbG9uZ2Vy
IGF2YWlsYWJsZS4KKyAgICAgICAgLy8gQ3VycmVudGx5IHRlc3RzIGNyYXNoIHdoZW4gcGF1c2Vk
LCBmb3IgZXhhbXBsZSwgZHVlIHRvIGRldmljZSBjaGFuZ2luZyBvcmllbnRhdGlvbgorICAgIH0K
K30KKworc3RhdGljIGludDMyX3Qgb25JbnB1dEV2ZW50KHN0cnVjdCBhbmRyb2lkX2FwcCAqYXBw
LCBBSW5wdXRFdmVudCAqZXZlbnQpCit7CisgICAgLy8gVE9ETzogSGFuZGxlIGlucHV0IGV2ZW50
cworICAgIHJldHVybiAwOyAgLy8gMCA9PSBub3QgaGFuZGxlZAorfQorCit2b2lkIGFuZHJvaWRf
bWFpbihzdHJ1Y3QgYW5kcm9pZF9hcHAgKmFwcCkKK3sKKyAgICBpbnQgZXZlbnRzOworICAgIHN0
cnVjdCBhbmRyb2lkX3BvbGxfc291cmNlICpzb3VyY2U7CisKKyAgICBzQXBwID0gYXBwOworICAg
IHB0aHJlYWRfbXV0ZXhfaW5pdCgmc0luaXRXaW5kb3dNdXRleCwgbnVsbHB0cik7CisgICAgcHRo
cmVhZF9jb25kX2luaXQoJnNJbml0V2luZG93Q29uZCwgbnVsbHB0cik7CisKKyAgICAvLyBFdmVu
dCBoYW5kbGVycywgaW52b2tlZCBmcm9tIHNvdXJjZS0+cHJvY2VzcygpCisgICAgYXBwLT5vbkFw
cENtZCA9IG9uQXBwQ21kOworICAgIGFwcC0+b25JbnB1dEV2ZW50ID0gb25JbnB1dEV2ZW50Owor
CisgICAgLy8gTWVzc2FnZSBsb29wLCBwb2xsaW5nIGZvciBldmVudHMgaW5kZWZpbml0ZWx5IChk
dWUgdG8gLTEgdGltZW91dCkKKyAgICAvLyBNdXN0IGJlIGhlcmUgaW4gb3JkZXIgdG8gaGFuZGxl
IEFQUF9DTURfSU5JVF9XSU5ET1cgZXZlbnQsCisgICAgLy8gd2hpY2ggb2NjdXJzIGFmdGVyIEFu
ZHJvaWRXaW5kb3c6OmluaXRpYWxpemUoKSwgYnV0IGJlZm9yZSBBbmRyb2lkV2luZG93OjptZXNz
YWdlTG9vcAorICAgIHdoaWxlIChBTG9vcGVyX3BvbGxBbGwoLTEsIG51bGxwdHIsICZldmVudHMs
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqKj4oJnNvdXJjZSkpID49IDApCisgICAgeworICAgICAg
ICBpZiAoc291cmNlICE9IG51bGxwdHIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNvdXJjZS0+
cHJvY2VzcyhhcHAsIHNvdXJjZSk7CisgICAgICAgIH0KKyAgICB9Cit9CkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS91dGlsL2FuZHJvaWQvQW5kcm9pZFdpbmRvdy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvYW5kcm9pZC9BbmRyb2lkV2luZG93LmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9hbmRyb2lkL0Fu
ZHJvaWRXaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2IEBACisvLworLy8gQ29w
eXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKworLy8gQW5kcm9pZFdpbmRvdy5oOiBEZWZpbml0aW9uIG9mIHRoZSBpbXBsZW1lbnRhdGlv
biBvZiBPU1dpbmRvdyBmb3IgQW5kcm9pZAorCisjaWZuZGVmIFVUSUxfQU5EUk9JRF9XSU5ET1df
SF8KKyNkZWZpbmUgVVRJTF9BTkRST0lEX1dJTkRPV19IXworCisjaW5jbHVkZSAiT1NXaW5kb3cu
aCIKKworY2xhc3MgQW5kcm9pZFdpbmRvdyA6IHB1YmxpYyBPU1dpbmRvdworeworICBwdWJsaWM6
CisgICAgQW5kcm9pZFdpbmRvdygpOworICAgIH5BbmRyb2lkV2luZG93KCkgb3ZlcnJpZGU7CisK
KyAgICBib29sIGluaXRpYWxpemUoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsIHNpemVfdCB3aWR0
aCwgc2l6ZV90IGhlaWdodCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXN0cm95KCkgb3ZlcnJpZGU7
CisKKyAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIGdldE5hdGl2ZVdpbmRvdygpIGNvbnN0IG92ZXJy
aWRlOworICAgIEVHTE5hdGl2ZURpc3BsYXlUeXBlIGdldE5hdGl2ZURpc3BsYXkoKSBjb25zdCBv
dmVycmlkZTsKKworICAgIHZvaWQgbWVzc2FnZUxvb3AoKSBvdmVycmlkZTsKKworICAgIHZvaWQg
c2V0TW91c2VQb3NpdGlvbihpbnQgeCwgaW50IHkpIG92ZXJyaWRlOworICAgIGJvb2wgc2V0UG9z
aXRpb24oaW50IHgsIGludCB5KSBvdmVycmlkZTsKKyAgICBib29sIHJlc2l6ZShpbnQgd2lkdGgs
IGludCBoZWlnaHQpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VmlzaWJsZShib29sIGlzVmlzaWJs
ZSkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNpZ25hbFRlc3RFdmVudCgpIG92ZXJyaWRlOworfTsK
KworI2VuZGlmIC8qIFVUSUxfQU5EUk9JRF9XSU5ET1dfSF8gKi8KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3V0aWwvYW5kcm9pZC90aGlyZF9wYXJ0eS9SRUFETUUuYW5nbGUKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9hbmRyb2lkL3RoaXJkX3BhcnR5
L1JFQURNRS5hbmdsZQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91
dGlsL2FuZHJvaWQvdGhpcmRfcGFydHkvUkVBRE1FLmFuZ2xlCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsOCBAQAorTmFtZTogYW5kcm9pZF9uYXRpdmVfYXBwX2dsdWUKK1VSTDogaHR0cHM6Ly9h
bmRyb2lkLmdvb2dsZXNvdXJjZS5jb20vcGxhdGZvcm0vbmRrLysvNjU5NjZkNTAzM2FmMzYxMzQx
MzVkMTMwOGJkYzYyYjIxNmE1YTQxNC9zb3VyY2VzL2FuZHJvaWQvbmF0aXZlX2FwcF9nbHVlCitW
ZXJzaW9uOiA2NTk2NmQ1MDMzYWYzNjEzNDEzNWQxMzA4YmRjNjJiMjE2YTVhNDE0CitMaWNlbnNl
OiBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAKK0xpY2Vuc2UgRmlsZTogaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK0Rlc2NyaXB0aW9uOgorSGVscGVyIGds
dWUgY29kZSBmb3IgQU5hdGl2ZUFjdGl2aXR5IGltcGxlbWVudGF0aW9ucwpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvYW5kcm9p
ZC90aGlyZF9wYXJ0eS9hbmRyb2lkX25hdGl2ZV9hcHBfZ2x1ZS5jCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvYW5kcm9pZC90aGlyZF9wYXJ0eS9hbmRyb2lkX25h
dGl2ZV9hcHBfZ2x1ZS5jCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3V0aWwvYW5kcm9pZC90aGlyZF9wYXJ0eS9hbmRyb2lkX25hdGl2ZV9hcHBfZ2x1ZS5jCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRo
ZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUg
QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
KyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNl
IGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICog
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisKKyNpbmNsdWRlIDxqbmku
aD4KKworI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8
c3RyaW5nLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+
CisKKyNpbmNsdWRlICJhbmRyb2lkX25hdGl2ZV9hcHBfZ2x1ZS5oIgorI2luY2x1ZGUgPGFuZHJv
aWQvbG9nLmg+CisKKyNkZWZpbmUgTE9HSSguLi4pICgodm9pZClfX2FuZHJvaWRfbG9nX3ByaW50
KEFORFJPSURfTE9HX0lORk8sICJ0aHJlYWRlZF9hcHAiLCBfX1ZBX0FSR1NfXykpCisjZGVmaW5l
IExPR0UoLi4uKSAoKHZvaWQpX19hbmRyb2lkX2xvZ19wcmludChBTkRST0lEX0xPR19FUlJPUiwg
InRocmVhZGVkX2FwcCIsIF9fVkFfQVJHU19fKSkKKworLyogRm9yIGRlYnVnIGJ1aWxkcywgYWx3
YXlzIGVuYWJsZSB0aGUgZGVidWcgdHJhY2VzIGluIHRoaXMgbGlicmFyeSAqLworI2lmbmRlZiBO
REVCVUcKKyMgIGRlZmluZSBMT0dWKC4uLikgICgodm9pZClfX2FuZHJvaWRfbG9nX3ByaW50KEFO
RFJPSURfTE9HX1ZFUkJPU0UsICJ0aHJlYWRlZF9hcHAiLCBfX1ZBX0FSR1NfXykpCisjZWxzZQor
IyAgZGVmaW5lIExPR1YoLi4uKSAgKCh2b2lkKTApCisjZW5kaWYKKworc3RhdGljIHZvaWQgZnJl
ZV9zYXZlZF9zdGF0ZShzdHJ1Y3QgYW5kcm9pZF9hcHAqIGFuZHJvaWRfYXBwKSB7CisgICAgcHRo
cmVhZF9tdXRleF9sb2NrKCZhbmRyb2lkX2FwcC0+bXV0ZXgpOworICAgIGlmIChhbmRyb2lkX2Fw
cC0+c2F2ZWRTdGF0ZSAhPSBOVUxMKSB7CisgICAgICAgIGZyZWUoYW5kcm9pZF9hcHAtPnNhdmVk
U3RhdGUpOworICAgICAgICBhbmRyb2lkX2FwcC0+c2F2ZWRTdGF0ZSA9IE5VTEw7CisgICAgICAg
IGFuZHJvaWRfYXBwLT5zYXZlZFN0YXRlU2l6ZSA9IDA7CisgICAgfQorICAgIHB0aHJlYWRfbXV0
ZXhfdW5sb2NrKCZhbmRyb2lkX2FwcC0+bXV0ZXgpOworfQorCitpbnQ4X3QgYW5kcm9pZF9hcHBf
cmVhZF9jbWQoc3RydWN0IGFuZHJvaWRfYXBwKiBhbmRyb2lkX2FwcCkgeworICAgIGludDhfdCBj
bWQ7CisgICAgaWYgKHJlYWQoYW5kcm9pZF9hcHAtPm1zZ3JlYWQsICZjbWQsIHNpemVvZihjbWQp
KSA9PSBzaXplb2YoY21kKSkgeworICAgICAgICBzd2l0Y2ggKGNtZCkgeworICAgICAgICAgICAg
Y2FzZSBBUFBfQ01EX1NBVkVfU1RBVEU6CisgICAgICAgICAgICAgICAgZnJlZV9zYXZlZF9zdGF0
ZShhbmRyb2lkX2FwcCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIGNtZDsKKyAgICB9IGVsc2UgeworICAgICAgICBMT0dFKCJObyBkYXRhIG9uIGNv
bW1hbmQgcGlwZSEiKTsKKyAgICB9CisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgdm9pZCBw
cmludF9jdXJfY29uZmlnKHN0cnVjdCBhbmRyb2lkX2FwcCogYW5kcm9pZF9hcHApIHsKKyAgICBj
aGFyIGxhbmdbMl0sIGNvdW50cnlbMl07CisgICAgQUNvbmZpZ3VyYXRpb25fZ2V0TGFuZ3VhZ2Uo
YW5kcm9pZF9hcHAtPmNvbmZpZywgbGFuZyk7CisgICAgQUNvbmZpZ3VyYXRpb25fZ2V0Q291bnRy
eShhbmRyb2lkX2FwcC0+Y29uZmlnLCBjb3VudHJ5KTsKKworICAgIExPR1YoIkNvbmZpZzogbWNj
PSVkIG1uYz0lZCBsYW5nPSVjJWMgY250PSVjJWMgb3JpZW49JWQgdG91Y2g9JWQgZGVucz0lZCAi
CisgICAgICAgICAgICAia2V5cz0lZCBuYXY9JWQga2V5c0hpZD0lZCBuYXZIaWQ9JWQgc2RrPSVk
IHNpemU9JWQgbG9uZz0lZCAiCisgICAgICAgICAgICAibW9kZXR5cGU9JWQgbW9kZW5pZ2h0PSVk
IiwKKyAgICAgICAgICAgIEFDb25maWd1cmF0aW9uX2dldE1jYyhhbmRyb2lkX2FwcC0+Y29uZmln
KSwKKyAgICAgICAgICAgIEFDb25maWd1cmF0aW9uX2dldE1uYyhhbmRyb2lkX2FwcC0+Y29uZmln
KSwKKyAgICAgICAgICAgIGxhbmdbMF0sIGxhbmdbMV0sIGNvdW50cnlbMF0sIGNvdW50cnlbMV0s
CisgICAgICAgICAgICBBQ29uZmlndXJhdGlvbl9nZXRPcmllbnRhdGlvbihhbmRyb2lkX2FwcC0+
Y29uZmlnKSwKKyAgICAgICAgICAgIEFDb25maWd1cmF0aW9uX2dldFRvdWNoc2NyZWVuKGFuZHJv
aWRfYXBwLT5jb25maWcpLAorICAgICAgICAgICAgQUNvbmZpZ3VyYXRpb25fZ2V0RGVuc2l0eShh
bmRyb2lkX2FwcC0+Y29uZmlnKSwKKyAgICAgICAgICAgIEFDb25maWd1cmF0aW9uX2dldEtleWJv
YXJkKGFuZHJvaWRfYXBwLT5jb25maWcpLAorICAgICAgICAgICAgQUNvbmZpZ3VyYXRpb25fZ2V0
TmF2aWdhdGlvbihhbmRyb2lkX2FwcC0+Y29uZmlnKSwKKyAgICAgICAgICAgIEFDb25maWd1cmF0
aW9uX2dldEtleXNIaWRkZW4oYW5kcm9pZF9hcHAtPmNvbmZpZyksCisgICAgICAgICAgICBBQ29u
ZmlndXJhdGlvbl9nZXROYXZIaWRkZW4oYW5kcm9pZF9hcHAtPmNvbmZpZyksCisgICAgICAgICAg
ICBBQ29uZmlndXJhdGlvbl9nZXRTZGtWZXJzaW9uKGFuZHJvaWRfYXBwLT5jb25maWcpLAorICAg
ICAgICAgICAgQUNvbmZpZ3VyYXRpb25fZ2V0U2NyZWVuU2l6ZShhbmRyb2lkX2FwcC0+Y29uZmln
KSwKKyAgICAgICAgICAgIEFDb25maWd1cmF0aW9uX2dldFNjcmVlbkxvbmcoYW5kcm9pZF9hcHAt
PmNvbmZpZyksCisgICAgICAgICAgICBBQ29uZmlndXJhdGlvbl9nZXRVaU1vZGVUeXBlKGFuZHJv
aWRfYXBwLT5jb25maWcpLAorICAgICAgICAgICAgQUNvbmZpZ3VyYXRpb25fZ2V0VWlNb2RlTmln
aHQoYW5kcm9pZF9hcHAtPmNvbmZpZykpOworfQorCit2b2lkIGFuZHJvaWRfYXBwX3ByZV9leGVj
X2NtZChzdHJ1Y3QgYW5kcm9pZF9hcHAqIGFuZHJvaWRfYXBwLCBpbnQ4X3QgY21kKSB7CisgICAg
c3dpdGNoIChjbWQpIHsKKyAgICAgICAgY2FzZSBBUFBfQ01EX0lOUFVUX0NIQU5HRUQ6CisgICAg
ICAgICAgICBMT0dWKCJBUFBfQ01EX0lOUFVUX0NIQU5HRURcbiIpOworICAgICAgICAgICAgcHRo
cmVhZF9tdXRleF9sb2NrKCZhbmRyb2lkX2FwcC0+bXV0ZXgpOworICAgICAgICAgICAgaWYgKGFu
ZHJvaWRfYXBwLT5pbnB1dFF1ZXVlICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBBSW5wdXRR
dWV1ZV9kZXRhY2hMb29wZXIoYW5kcm9pZF9hcHAtPmlucHV0UXVldWUpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYW5kcm9pZF9hcHAtPmlucHV0UXVldWUgPSBhbmRyb2lkX2FwcC0+cGVu
ZGluZ0lucHV0UXVldWU7CisgICAgICAgICAgICBpZiAoYW5kcm9pZF9hcHAtPmlucHV0UXVldWUg
IT0gTlVMTCkgeworICAgICAgICAgICAgICAgIExPR1YoIkF0dGFjaGluZyBpbnB1dCBxdWV1ZSB0
byBsb29wZXIiKTsKKyAgICAgICAgICAgICAgICBBSW5wdXRRdWV1ZV9hdHRhY2hMb29wZXIoYW5k
cm9pZF9hcHAtPmlucHV0UXVldWUsCisgICAgICAgICAgICAgICAgICAgICAgICBhbmRyb2lkX2Fw
cC0+bG9vcGVyLCBMT09QRVJfSURfSU5QVVQsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAmYW5kcm9pZF9hcHAtPmlucHV0UG9sbFNvdXJjZSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBwdGhyZWFkX2NvbmRfYnJvYWRjYXN0KCZhbmRyb2lkX2FwcC0+Y29uZCk7CisgICAgICAg
ICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmYW5kcm9pZF9hcHAtPm11dGV4KTsKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQVBQX0NNRF9JTklUX1dJTkRPVzoKKyAgICAgICAg
ICAgIExPR1YoIkFQUF9DTURfSU5JVF9XSU5ET1dcbiIpOworICAgICAgICAgICAgcHRocmVhZF9t
dXRleF9sb2NrKCZhbmRyb2lkX2FwcC0+bXV0ZXgpOworICAgICAgICAgICAgYW5kcm9pZF9hcHAt
PndpbmRvdyA9IGFuZHJvaWRfYXBwLT5wZW5kaW5nV2luZG93OworICAgICAgICAgICAgcHRocmVh
ZF9jb25kX2Jyb2FkY2FzdCgmYW5kcm9pZF9hcHAtPmNvbmQpOworICAgICAgICAgICAgcHRocmVh
ZF9tdXRleF91bmxvY2soJmFuZHJvaWRfYXBwLT5tdXRleCk7CisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBjYXNlIEFQUF9DTURfVEVSTV9XSU5ET1c6CisgICAgICAgICAgICBMT0dWKCJB
UFBfQ01EX1RFUk1fV0lORE9XXG4iKTsKKyAgICAgICAgICAgIHB0aHJlYWRfY29uZF9icm9hZGNh
c3QoJmFuZHJvaWRfYXBwLT5jb25kKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNh
c2UgQVBQX0NNRF9SRVNVTUU6CisgICAgICAgIGNhc2UgQVBQX0NNRF9TVEFSVDoKKyAgICAgICAg
Y2FzZSBBUFBfQ01EX1BBVVNFOgorICAgICAgICBjYXNlIEFQUF9DTURfU1RPUDoKKyAgICAgICAg
ICAgIExPR1YoImFjdGl2aXR5U3RhdGU9JWRcbiIsIGNtZCk7CisgICAgICAgICAgICBwdGhyZWFk
X211dGV4X2xvY2soJmFuZHJvaWRfYXBwLT5tdXRleCk7CisgICAgICAgICAgICBhbmRyb2lkX2Fw
cC0+YWN0aXZpdHlTdGF0ZSA9IGNtZDsKKyAgICAgICAgICAgIHB0aHJlYWRfY29uZF9icm9hZGNh
c3QoJmFuZHJvaWRfYXBwLT5jb25kKTsKKyAgICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2Nr
KCZhbmRyb2lkX2FwcC0+bXV0ZXgpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2Fz
ZSBBUFBfQ01EX0NPTkZJR19DSEFOR0VEOgorICAgICAgICAgICAgTE9HVigiQVBQX0NNRF9DT05G
SUdfQ0hBTkdFRFxuIik7CisgICAgICAgICAgICBBQ29uZmlndXJhdGlvbl9mcm9tQXNzZXRNYW5h
Z2VyKGFuZHJvaWRfYXBwLT5jb25maWcsCisgICAgICAgICAgICAgICAgICAgIGFuZHJvaWRfYXBw
LT5hY3Rpdml0eS0+YXNzZXRNYW5hZ2VyKTsKKyAgICAgICAgICAgIHByaW50X2N1cl9jb25maWco
YW5kcm9pZF9hcHApOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBBUFBfQ01E
X0RFU1RST1k6CisgICAgICAgICAgICBMT0dWKCJBUFBfQ01EX0RFU1RST1lcbiIpOworICAgICAg
ICAgICAgYW5kcm9pZF9hcHAtPmRlc3Ryb3lSZXF1ZXN0ZWQgPSAxOworICAgICAgICAgICAgYnJl
YWs7CisgICAgfQorfQorCit2b2lkIGFuZHJvaWRfYXBwX3Bvc3RfZXhlY19jbWQoc3RydWN0IGFu
ZHJvaWRfYXBwKiBhbmRyb2lkX2FwcCwgaW50OF90IGNtZCkgeworICAgIHN3aXRjaCAoY21kKSB7
CisgICAgICAgIGNhc2UgQVBQX0NNRF9URVJNX1dJTkRPVzoKKyAgICAgICAgICAgIExPR1YoIkFQ
UF9DTURfVEVSTV9XSU5ET1dcbiIpOworICAgICAgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCZh
bmRyb2lkX2FwcC0+bXV0ZXgpOworICAgICAgICAgICAgYW5kcm9pZF9hcHAtPndpbmRvdyA9IE5V
TEw7CisgICAgICAgICAgICBwdGhyZWFkX2NvbmRfYnJvYWRjYXN0KCZhbmRyb2lkX2FwcC0+Y29u
ZCk7CisgICAgICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmYW5kcm9pZF9hcHAtPm11dGV4
KTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQVBQX0NNRF9TQVZFX1NUQVRF
OgorICAgICAgICAgICAgTE9HVigiQVBQX0NNRF9TQVZFX1NUQVRFXG4iKTsKKyAgICAgICAgICAg
IHB0aHJlYWRfbXV0ZXhfbG9jaygmYW5kcm9pZF9hcHAtPm11dGV4KTsKKyAgICAgICAgICAgIGFu
ZHJvaWRfYXBwLT5zdGF0ZVNhdmVkID0gMTsKKyAgICAgICAgICAgIHB0aHJlYWRfY29uZF9icm9h
ZGNhc3QoJmFuZHJvaWRfYXBwLT5jb25kKTsKKyAgICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5s
b2NrKCZhbmRyb2lkX2FwcC0+bXV0ZXgpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
Y2FzZSBBUFBfQ01EX1JFU1VNRToKKyAgICAgICAgICAgIGZyZWVfc2F2ZWRfc3RhdGUoYW5kcm9p
ZF9hcHApOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit2b2lkIGFwcF9kdW1teSgp
IHsKKworfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX2FwcF9kZXN0cm95KHN0cnVjdCBhbmRyb2lk
X2FwcCogYW5kcm9pZF9hcHApIHsKKyAgICBMT0dWKCJhbmRyb2lkX2FwcF9kZXN0cm95ISIpOwor
ICAgIGZyZWVfc2F2ZWRfc3RhdGUoYW5kcm9pZF9hcHApOworICAgIHB0aHJlYWRfbXV0ZXhfbG9j
aygmYW5kcm9pZF9hcHAtPm11dGV4KTsKKyAgICBpZiAoYW5kcm9pZF9hcHAtPmlucHV0UXVldWUg
IT0gTlVMTCkgeworICAgICAgICBBSW5wdXRRdWV1ZV9kZXRhY2hMb29wZXIoYW5kcm9pZF9hcHAt
PmlucHV0UXVldWUpOworICAgIH0KKyAgICBBQ29uZmlndXJhdGlvbl9kZWxldGUoYW5kcm9pZF9h
cHAtPmNvbmZpZyk7CisgICAgYW5kcm9pZF9hcHAtPmRlc3Ryb3llZCA9IDE7CisgICAgcHRocmVh
ZF9jb25kX2Jyb2FkY2FzdCgmYW5kcm9pZF9hcHAtPmNvbmQpOworICAgIHB0aHJlYWRfbXV0ZXhf
dW5sb2NrKCZhbmRyb2lkX2FwcC0+bXV0ZXgpOworICAgIC8vIENhbid0IHRvdWNoIGFuZHJvaWRf
YXBwIG9iamVjdCBhZnRlciB0aGlzLgorfQorCitzdGF0aWMgdm9pZCBwcm9jZXNzX2lucHV0KHN0
cnVjdCBhbmRyb2lkX2FwcCogYXBwLCBzdHJ1Y3QgYW5kcm9pZF9wb2xsX3NvdXJjZSogc291cmNl
KSB7CisgICAgQUlucHV0RXZlbnQqIGV2ZW50ID0gTlVMTDsKKyAgICB3aGlsZSAoQUlucHV0UXVl
dWVfZ2V0RXZlbnQoYXBwLT5pbnB1dFF1ZXVlLCAmZXZlbnQpID49IDApIHsKKyAgICAgICAgTE9H
VigiTmV3IGlucHV0IGV2ZW50OiB0eXBlPSVkXG4iLCBBSW5wdXRFdmVudF9nZXRUeXBlKGV2ZW50
KSk7CisgICAgICAgIGlmIChBSW5wdXRRdWV1ZV9wcmVEaXNwYXRjaEV2ZW50KGFwcC0+aW5wdXRR
dWV1ZSwgZXZlbnQpKSB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAg
ICBpbnQzMl90IGhhbmRsZWQgPSAwOworICAgICAgICBpZiAoYXBwLT5vbklucHV0RXZlbnQgIT0g
TlVMTCkgaGFuZGxlZCA9IGFwcC0+b25JbnB1dEV2ZW50KGFwcCwgZXZlbnQpOworICAgICAgICBB
SW5wdXRRdWV1ZV9maW5pc2hFdmVudChhcHAtPmlucHV0UXVldWUsIGV2ZW50LCBoYW5kbGVkKTsK
KyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHByb2Nlc3NfY21kKHN0cnVjdCBhbmRyb2lkX2FwcCog
YXBwLCBzdHJ1Y3QgYW5kcm9pZF9wb2xsX3NvdXJjZSogc291cmNlKSB7CisgICAgaW50OF90IGNt
ZCA9IGFuZHJvaWRfYXBwX3JlYWRfY21kKGFwcCk7CisgICAgYW5kcm9pZF9hcHBfcHJlX2V4ZWNf
Y21kKGFwcCwgY21kKTsKKyAgICBpZiAoYXBwLT5vbkFwcENtZCAhPSBOVUxMKSBhcHAtPm9uQXBw
Q21kKGFwcCwgY21kKTsKKyAgICBhbmRyb2lkX2FwcF9wb3N0X2V4ZWNfY21kKGFwcCwgY21kKTsK
K30KKworc3RhdGljIHZvaWQqIGFuZHJvaWRfYXBwX2VudHJ5KHZvaWQqIHBhcmFtKSB7CisgICAg
c3RydWN0IGFuZHJvaWRfYXBwKiBhbmRyb2lkX2FwcCA9IChzdHJ1Y3QgYW5kcm9pZF9hcHAqKXBh
cmFtOworCisgICAgYW5kcm9pZF9hcHAtPmNvbmZpZyA9IEFDb25maWd1cmF0aW9uX25ldygpOwor
ICAgIEFDb25maWd1cmF0aW9uX2Zyb21Bc3NldE1hbmFnZXIoYW5kcm9pZF9hcHAtPmNvbmZpZywg
YW5kcm9pZF9hcHAtPmFjdGl2aXR5LT5hc3NldE1hbmFnZXIpOworCisgICAgcHJpbnRfY3VyX2Nv
bmZpZyhhbmRyb2lkX2FwcCk7CisKKyAgICBhbmRyb2lkX2FwcC0+Y21kUG9sbFNvdXJjZS5pZCA9
IExPT1BFUl9JRF9NQUlOOworICAgIGFuZHJvaWRfYXBwLT5jbWRQb2xsU291cmNlLmFwcCA9IGFu
ZHJvaWRfYXBwOworICAgIGFuZHJvaWRfYXBwLT5jbWRQb2xsU291cmNlLnByb2Nlc3MgPSBwcm9j
ZXNzX2NtZDsKKyAgICBhbmRyb2lkX2FwcC0+aW5wdXRQb2xsU291cmNlLmlkID0gTE9PUEVSX0lE
X0lOUFVUOworICAgIGFuZHJvaWRfYXBwLT5pbnB1dFBvbGxTb3VyY2UuYXBwID0gYW5kcm9pZF9h
cHA7CisgICAgYW5kcm9pZF9hcHAtPmlucHV0UG9sbFNvdXJjZS5wcm9jZXNzID0gcHJvY2Vzc19p
bnB1dDsKKworICAgIEFMb29wZXIqIGxvb3BlciA9IEFMb29wZXJfcHJlcGFyZShBTE9PUEVSX1BS
RVBBUkVfQUxMT1dfTk9OX0NBTExCQUNLUyk7CisgICAgQUxvb3Blcl9hZGRGZChsb29wZXIsIGFu
ZHJvaWRfYXBwLT5tc2dyZWFkLCBMT09QRVJfSURfTUFJTiwgQUxPT1BFUl9FVkVOVF9JTlBVVCwg
TlVMTCwKKyAgICAgICAgICAgICZhbmRyb2lkX2FwcC0+Y21kUG9sbFNvdXJjZSk7CisgICAgYW5k
cm9pZF9hcHAtPmxvb3BlciA9IGxvb3BlcjsKKworICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmYW5k
cm9pZF9hcHAtPm11dGV4KTsKKyAgICBhbmRyb2lkX2FwcC0+cnVubmluZyA9IDE7CisgICAgcHRo
cmVhZF9jb25kX2Jyb2FkY2FzdCgmYW5kcm9pZF9hcHAtPmNvbmQpOworICAgIHB0aHJlYWRfbXV0
ZXhfdW5sb2NrKCZhbmRyb2lkX2FwcC0+bXV0ZXgpOworCisgICAgYW5kcm9pZF9tYWluKGFuZHJv
aWRfYXBwKTsKKworICAgIGFuZHJvaWRfYXBwX2Rlc3Ryb3koYW5kcm9pZF9hcHApOworICAgIHJl
dHVybiBOVUxMOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gTmF0aXZlIGFjdGl2aXR5IGludGVy
YWN0aW9uIChjYWxsZWQgZnJvbSBtYWluIHRocmVhZCkKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N0YXRp
YyBzdHJ1Y3QgYW5kcm9pZF9hcHAqIGFuZHJvaWRfYXBwX2NyZWF0ZShBTmF0aXZlQWN0aXZpdHkq
IGFjdGl2aXR5LAorICAgICAgICB2b2lkKiBzYXZlZFN0YXRlLCBzaXplX3Qgc2F2ZWRTdGF0ZVNp
emUpIHsKKyAgICBzdHJ1Y3QgYW5kcm9pZF9hcHAqIGFuZHJvaWRfYXBwID0gKHN0cnVjdCBhbmRy
b2lkX2FwcCopbWFsbG9jKHNpemVvZihzdHJ1Y3QgYW5kcm9pZF9hcHApKTsKKyAgICBtZW1zZXQo
YW5kcm9pZF9hcHAsIDAsIHNpemVvZihzdHJ1Y3QgYW5kcm9pZF9hcHApKTsKKyAgICBhbmRyb2lk
X2FwcC0+YWN0aXZpdHkgPSBhY3Rpdml0eTsKKworICAgIHB0aHJlYWRfbXV0ZXhfaW5pdCgmYW5k
cm9pZF9hcHAtPm11dGV4LCBOVUxMKTsKKyAgICBwdGhyZWFkX2NvbmRfaW5pdCgmYW5kcm9pZF9h
cHAtPmNvbmQsIE5VTEwpOworCisgICAgaWYgKHNhdmVkU3RhdGUgIT0gTlVMTCkgeworICAgICAg
ICBhbmRyb2lkX2FwcC0+c2F2ZWRTdGF0ZSA9IG1hbGxvYyhzYXZlZFN0YXRlU2l6ZSk7CisgICAg
ICAgIGFuZHJvaWRfYXBwLT5zYXZlZFN0YXRlU2l6ZSA9IHNhdmVkU3RhdGVTaXplOworICAgICAg
ICBtZW1jcHkoYW5kcm9pZF9hcHAtPnNhdmVkU3RhdGUsIHNhdmVkU3RhdGUsIHNhdmVkU3RhdGVT
aXplKTsKKyAgICB9CisKKyAgICBpbnQgbXNncGlwZVsyXTsKKyAgICBpZiAocGlwZShtc2dwaXBl
KSkgeworICAgICAgICBMT0dFKCJjb3VsZCBub3QgY3JlYXRlIHBpcGU6ICVzIiwgc3RyZXJyb3Io
ZXJybm8pKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGFuZHJvaWRfYXBwLT5t
c2dyZWFkID0gbXNncGlwZVswXTsKKyAgICBhbmRyb2lkX2FwcC0+bXNnd3JpdGUgPSBtc2dwaXBl
WzFdOworCisgICAgcHRocmVhZF9hdHRyX3QgYXR0cjsKKyAgICBwdGhyZWFkX2F0dHJfaW5pdCgm
YXR0cik7CisgICAgcHRocmVhZF9hdHRyX3NldGRldGFjaHN0YXRlKCZhdHRyLCBQVEhSRUFEX0NS
RUFURV9ERVRBQ0hFRCk7CisgICAgcHRocmVhZF9jcmVhdGUoJmFuZHJvaWRfYXBwLT50aHJlYWQs
ICZhdHRyLCBhbmRyb2lkX2FwcF9lbnRyeSwgYW5kcm9pZF9hcHApOworCisgICAgLy8gV2FpdCBm
b3IgdGhyZWFkIHRvIHN0YXJ0LgorICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmYW5kcm9pZF9hcHAt
Pm11dGV4KTsKKyAgICB3aGlsZSAoIWFuZHJvaWRfYXBwLT5ydW5uaW5nKSB7CisgICAgICAgIHB0
aHJlYWRfY29uZF93YWl0KCZhbmRyb2lkX2FwcC0+Y29uZCwgJmFuZHJvaWRfYXBwLT5tdXRleCk7
CisgICAgfQorICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZhbmRyb2lkX2FwcC0+bXV0ZXgpOwor
CisgICAgcmV0dXJuIGFuZHJvaWRfYXBwOworfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX2FwcF93
cml0ZV9jbWQoc3RydWN0IGFuZHJvaWRfYXBwKiBhbmRyb2lkX2FwcCwgaW50OF90IGNtZCkgewor
ICAgIGlmICh3cml0ZShhbmRyb2lkX2FwcC0+bXNnd3JpdGUsICZjbWQsIHNpemVvZihjbWQpKSAh
PSBzaXplb2YoY21kKSkgeworICAgICAgICBMT0dFKCJGYWlsdXJlIHdyaXRpbmcgYW5kcm9pZF9h
cHAgY21kOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lk
IGFuZHJvaWRfYXBwX3NldF9pbnB1dChzdHJ1Y3QgYW5kcm9pZF9hcHAqIGFuZHJvaWRfYXBwLCBB
SW5wdXRRdWV1ZSogaW5wdXRRdWV1ZSkgeworICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmYW5kcm9p
ZF9hcHAtPm11dGV4KTsKKyAgICBhbmRyb2lkX2FwcC0+cGVuZGluZ0lucHV0UXVldWUgPSBpbnB1
dFF1ZXVlOworICAgIGFuZHJvaWRfYXBwX3dyaXRlX2NtZChhbmRyb2lkX2FwcCwgQVBQX0NNRF9J
TlBVVF9DSEFOR0VEKTsKKyAgICB3aGlsZSAoYW5kcm9pZF9hcHAtPmlucHV0UXVldWUgIT0gYW5k
cm9pZF9hcHAtPnBlbmRpbmdJbnB1dFF1ZXVlKSB7CisgICAgICAgIHB0aHJlYWRfY29uZF93YWl0
KCZhbmRyb2lkX2FwcC0+Y29uZCwgJmFuZHJvaWRfYXBwLT5tdXRleCk7CisgICAgfQorICAgIHB0
aHJlYWRfbXV0ZXhfdW5sb2NrKCZhbmRyb2lkX2FwcC0+bXV0ZXgpOworfQorCitzdGF0aWMgdm9p
ZCBhbmRyb2lkX2FwcF9zZXRfd2luZG93KHN0cnVjdCBhbmRyb2lkX2FwcCogYW5kcm9pZF9hcHAs
IEFOYXRpdmVXaW5kb3cqIHdpbmRvdykgeworICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmYW5kcm9p
ZF9hcHAtPm11dGV4KTsKKyAgICBpZiAoYW5kcm9pZF9hcHAtPnBlbmRpbmdXaW5kb3cgIT0gTlVM
TCkgeworICAgICAgICBhbmRyb2lkX2FwcF93cml0ZV9jbWQoYW5kcm9pZF9hcHAsIEFQUF9DTURf
VEVSTV9XSU5ET1cpOworICAgIH0KKyAgICBhbmRyb2lkX2FwcC0+cGVuZGluZ1dpbmRvdyA9IHdp
bmRvdzsKKyAgICBpZiAod2luZG93ICE9IE5VTEwpIHsKKyAgICAgICAgYW5kcm9pZF9hcHBfd3Jp
dGVfY21kKGFuZHJvaWRfYXBwLCBBUFBfQ01EX0lOSVRfV0lORE9XKTsKKyAgICB9CisgICAgd2hp
bGUgKGFuZHJvaWRfYXBwLT53aW5kb3cgIT0gYW5kcm9pZF9hcHAtPnBlbmRpbmdXaW5kb3cpIHsK
KyAgICAgICAgcHRocmVhZF9jb25kX3dhaXQoJmFuZHJvaWRfYXBwLT5jb25kLCAmYW5kcm9pZF9h
cHAtPm11dGV4KTsKKyAgICB9CisgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmFuZHJvaWRfYXBw
LT5tdXRleCk7Cit9CisKK3N0YXRpYyB2b2lkIGFuZHJvaWRfYXBwX3NldF9hY3Rpdml0eV9zdGF0
ZShzdHJ1Y3QgYW5kcm9pZF9hcHAqIGFuZHJvaWRfYXBwLCBpbnQ4X3QgY21kKSB7CisgICAgcHRo
cmVhZF9tdXRleF9sb2NrKCZhbmRyb2lkX2FwcC0+bXV0ZXgpOworICAgIGFuZHJvaWRfYXBwX3dy
aXRlX2NtZChhbmRyb2lkX2FwcCwgY21kKTsKKyAgICB3aGlsZSAoYW5kcm9pZF9hcHAtPmFjdGl2
aXR5U3RhdGUgIT0gY21kKSB7CisgICAgICAgIHB0aHJlYWRfY29uZF93YWl0KCZhbmRyb2lkX2Fw
cC0+Y29uZCwgJmFuZHJvaWRfYXBwLT5tdXRleCk7CisgICAgfQorICAgIHB0aHJlYWRfbXV0ZXhf
dW5sb2NrKCZhbmRyb2lkX2FwcC0+bXV0ZXgpOworfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX2Fw
cF9mcmVlKHN0cnVjdCBhbmRyb2lkX2FwcCogYW5kcm9pZF9hcHApIHsKKyAgICBwdGhyZWFkX211
dGV4X2xvY2soJmFuZHJvaWRfYXBwLT5tdXRleCk7CisgICAgYW5kcm9pZF9hcHBfd3JpdGVfY21k
KGFuZHJvaWRfYXBwLCBBUFBfQ01EX0RFU1RST1kpOworICAgIHdoaWxlICghYW5kcm9pZF9hcHAt
PmRlc3Ryb3llZCkgeworICAgICAgICBwdGhyZWFkX2NvbmRfd2FpdCgmYW5kcm9pZF9hcHAtPmNv
bmQsICZhbmRyb2lkX2FwcC0+bXV0ZXgpOworICAgIH0KKyAgICBwdGhyZWFkX211dGV4X3VubG9j
aygmYW5kcm9pZF9hcHAtPm11dGV4KTsKKworICAgIGNsb3NlKGFuZHJvaWRfYXBwLT5tc2dyZWFk
KTsKKyAgICBjbG9zZShhbmRyb2lkX2FwcC0+bXNnd3JpdGUpOworICAgIHB0aHJlYWRfY29uZF9k
ZXN0cm95KCZhbmRyb2lkX2FwcC0+Y29uZCk7CisgICAgcHRocmVhZF9tdXRleF9kZXN0cm95KCZh
bmRyb2lkX2FwcC0+bXV0ZXgpOworICAgIGZyZWUoYW5kcm9pZF9hcHApOworfQorCitzdGF0aWMg
dm9pZCBvbkRlc3Ryb3koQU5hdGl2ZUFjdGl2aXR5KiBhY3Rpdml0eSkgeworICAgIExPR1YoIkRl
c3Ryb3k6ICVwXG4iLCBhY3Rpdml0eSk7CisgICAgYW5kcm9pZF9hcHBfZnJlZSgoc3RydWN0IGFu
ZHJvaWRfYXBwKilhY3Rpdml0eS0+aW5zdGFuY2UpOworfQorCitzdGF0aWMgdm9pZCBvblN0YXJ0
KEFOYXRpdmVBY3Rpdml0eSogYWN0aXZpdHkpIHsKKyAgICBMT0dWKCJTdGFydDogJXBcbiIsIGFj
dGl2aXR5KTsKKyAgICBhbmRyb2lkX2FwcF9zZXRfYWN0aXZpdHlfc3RhdGUoKHN0cnVjdCBhbmRy
b2lkX2FwcCopYWN0aXZpdHktPmluc3RhbmNlLCBBUFBfQ01EX1NUQVJUKTsKK30KKworc3RhdGlj
IHZvaWQgb25SZXN1bWUoQU5hdGl2ZUFjdGl2aXR5KiBhY3Rpdml0eSkgeworICAgIExPR1YoIlJl
c3VtZTogJXBcbiIsIGFjdGl2aXR5KTsKKyAgICBhbmRyb2lkX2FwcF9zZXRfYWN0aXZpdHlfc3Rh
dGUoKHN0cnVjdCBhbmRyb2lkX2FwcCopYWN0aXZpdHktPmluc3RhbmNlLCBBUFBfQ01EX1JFU1VN
RSk7Cit9CisKK3N0YXRpYyB2b2lkKiBvblNhdmVJbnN0YW5jZVN0YXRlKEFOYXRpdmVBY3Rpdml0
eSogYWN0aXZpdHksIHNpemVfdCogb3V0TGVuKSB7CisgICAgc3RydWN0IGFuZHJvaWRfYXBwKiBh
bmRyb2lkX2FwcCA9IChzdHJ1Y3QgYW5kcm9pZF9hcHAqKWFjdGl2aXR5LT5pbnN0YW5jZTsKKyAg
ICB2b2lkKiBzYXZlZFN0YXRlID0gTlVMTDsKKworICAgIExPR1YoIlNhdmVJbnN0YW5jZVN0YXRl
OiAlcFxuIiwgYWN0aXZpdHkpOworICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmYW5kcm9pZF9hcHAt
Pm11dGV4KTsKKyAgICBhbmRyb2lkX2FwcC0+c3RhdGVTYXZlZCA9IDA7CisgICAgYW5kcm9pZF9h
cHBfd3JpdGVfY21kKGFuZHJvaWRfYXBwLCBBUFBfQ01EX1NBVkVfU1RBVEUpOworICAgIHdoaWxl
ICghYW5kcm9pZF9hcHAtPnN0YXRlU2F2ZWQpIHsKKyAgICAgICAgcHRocmVhZF9jb25kX3dhaXQo
JmFuZHJvaWRfYXBwLT5jb25kLCAmYW5kcm9pZF9hcHAtPm11dGV4KTsKKyAgICB9CisKKyAgICBp
ZiAoYW5kcm9pZF9hcHAtPnNhdmVkU3RhdGUgIT0gTlVMTCkgeworICAgICAgICBzYXZlZFN0YXRl
ID0gYW5kcm9pZF9hcHAtPnNhdmVkU3RhdGU7CisgICAgICAgICpvdXRMZW4gPSBhbmRyb2lkX2Fw
cC0+c2F2ZWRTdGF0ZVNpemU7CisgICAgICAgIGFuZHJvaWRfYXBwLT5zYXZlZFN0YXRlID0gTlVM
TDsKKyAgICAgICAgYW5kcm9pZF9hcHAtPnNhdmVkU3RhdGVTaXplID0gMDsKKyAgICB9CisKKyAg
ICBwdGhyZWFkX211dGV4X3VubG9jaygmYW5kcm9pZF9hcHAtPm11dGV4KTsKKworICAgIHJldHVy
biBzYXZlZFN0YXRlOworfQorCitzdGF0aWMgdm9pZCBvblBhdXNlKEFOYXRpdmVBY3Rpdml0eSog
YWN0aXZpdHkpIHsKKyAgICBMT0dWKCJQYXVzZTogJXBcbiIsIGFjdGl2aXR5KTsKKyAgICBhbmRy
b2lkX2FwcF9zZXRfYWN0aXZpdHlfc3RhdGUoKHN0cnVjdCBhbmRyb2lkX2FwcCopYWN0aXZpdHkt
Pmluc3RhbmNlLCBBUFBfQ01EX1BBVVNFKTsKK30KKworc3RhdGljIHZvaWQgb25TdG9wKEFOYXRp
dmVBY3Rpdml0eSogYWN0aXZpdHkpIHsKKyAgICBMT0dWKCJTdG9wOiAlcFxuIiwgYWN0aXZpdHkp
OworICAgIGFuZHJvaWRfYXBwX3NldF9hY3Rpdml0eV9zdGF0ZSgoc3RydWN0IGFuZHJvaWRfYXBw
KilhY3Rpdml0eS0+aW5zdGFuY2UsIEFQUF9DTURfU1RPUCk7Cit9CisKK3N0YXRpYyB2b2lkIG9u
Q29uZmlndXJhdGlvbkNoYW5nZWQoQU5hdGl2ZUFjdGl2aXR5KiBhY3Rpdml0eSkgeworICAgIHN0
cnVjdCBhbmRyb2lkX2FwcCogYW5kcm9pZF9hcHAgPSAoc3RydWN0IGFuZHJvaWRfYXBwKilhY3Rp
dml0eS0+aW5zdGFuY2U7CisgICAgTE9HVigiQ29uZmlndXJhdGlvbkNoYW5nZWQ6ICVwXG4iLCBh
Y3Rpdml0eSk7CisgICAgYW5kcm9pZF9hcHBfd3JpdGVfY21kKGFuZHJvaWRfYXBwLCBBUFBfQ01E
X0NPTkZJR19DSEFOR0VEKTsKK30KKworc3RhdGljIHZvaWQgb25Mb3dNZW1vcnkoQU5hdGl2ZUFj
dGl2aXR5KiBhY3Rpdml0eSkgeworICAgIHN0cnVjdCBhbmRyb2lkX2FwcCogYW5kcm9pZF9hcHAg
PSAoc3RydWN0IGFuZHJvaWRfYXBwKilhY3Rpdml0eS0+aW5zdGFuY2U7CisgICAgTE9HVigiTG93
TWVtb3J5OiAlcFxuIiwgYWN0aXZpdHkpOworICAgIGFuZHJvaWRfYXBwX3dyaXRlX2NtZChhbmRy
b2lkX2FwcCwgQVBQX0NNRF9MT1dfTUVNT1JZKTsKK30KKworc3RhdGljIHZvaWQgb25XaW5kb3dG
b2N1c0NoYW5nZWQoQU5hdGl2ZUFjdGl2aXR5KiBhY3Rpdml0eSwgaW50IGZvY3VzZWQpIHsKKyAg
ICBMT0dWKCJXaW5kb3dGb2N1c0NoYW5nZWQ6ICVwIC0tICVkXG4iLCBhY3Rpdml0eSwgZm9jdXNl
ZCk7CisgICAgYW5kcm9pZF9hcHBfd3JpdGVfY21kKChzdHJ1Y3QgYW5kcm9pZF9hcHAqKWFjdGl2
aXR5LT5pbnN0YW5jZSwKKyAgICAgICAgICAgIGZvY3VzZWQgPyBBUFBfQ01EX0dBSU5FRF9GT0NV
UyA6IEFQUF9DTURfTE9TVF9GT0NVUyk7Cit9CisKK3N0YXRpYyB2b2lkIG9uTmF0aXZlV2luZG93
Q3JlYXRlZChBTmF0aXZlQWN0aXZpdHkqIGFjdGl2aXR5LCBBTmF0aXZlV2luZG93KiB3aW5kb3cp
IHsKKyAgICBMT0dWKCJOYXRpdmVXaW5kb3dDcmVhdGVkOiAlcCAtLSAlcFxuIiwgYWN0aXZpdHks
IHdpbmRvdyk7CisgICAgYW5kcm9pZF9hcHBfc2V0X3dpbmRvdygoc3RydWN0IGFuZHJvaWRfYXBw
KilhY3Rpdml0eS0+aW5zdGFuY2UsIHdpbmRvdyk7Cit9CisKK3N0YXRpYyB2b2lkIG9uTmF0aXZl
V2luZG93RGVzdHJveWVkKEFOYXRpdmVBY3Rpdml0eSogYWN0aXZpdHksIEFOYXRpdmVXaW5kb3cq
IHdpbmRvdykgeworICAgIExPR1YoIk5hdGl2ZVdpbmRvd0Rlc3Ryb3llZDogJXAgLS0gJXBcbiIs
IGFjdGl2aXR5LCB3aW5kb3cpOworICAgIGFuZHJvaWRfYXBwX3NldF93aW5kb3coKHN0cnVjdCBh
bmRyb2lkX2FwcCopYWN0aXZpdHktPmluc3RhbmNlLCBOVUxMKTsKK30KKworc3RhdGljIHZvaWQg
b25JbnB1dFF1ZXVlQ3JlYXRlZChBTmF0aXZlQWN0aXZpdHkqIGFjdGl2aXR5LCBBSW5wdXRRdWV1
ZSogcXVldWUpIHsKKyAgICBMT0dWKCJJbnB1dFF1ZXVlQ3JlYXRlZDogJXAgLS0gJXBcbiIsIGFj
dGl2aXR5LCBxdWV1ZSk7CisgICAgYW5kcm9pZF9hcHBfc2V0X2lucHV0KChzdHJ1Y3QgYW5kcm9p
ZF9hcHAqKWFjdGl2aXR5LT5pbnN0YW5jZSwgcXVldWUpOworfQorCitzdGF0aWMgdm9pZCBvbklu
cHV0UXVldWVEZXN0cm95ZWQoQU5hdGl2ZUFjdGl2aXR5KiBhY3Rpdml0eSwgQUlucHV0UXVldWUq
IHF1ZXVlKSB7CisgICAgTE9HVigiSW5wdXRRdWV1ZURlc3Ryb3llZDogJXAgLS0gJXBcbiIsIGFj
dGl2aXR5LCBxdWV1ZSk7CisgICAgYW5kcm9pZF9hcHBfc2V0X2lucHV0KChzdHJ1Y3QgYW5kcm9p
ZF9hcHAqKWFjdGl2aXR5LT5pbnN0YW5jZSwgTlVMTCk7Cit9CisKK19fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpIHZvaWQgQU5hdGl2ZUFjdGl2aXR5X29uQ3JlYXRlKEFOYXRp
dmVBY3Rpdml0eSogYWN0aXZpdHksCisgICAgICAgIHZvaWQqIHNhdmVkU3RhdGUsIHNpemVfdCBz
YXZlZFN0YXRlU2l6ZSkgeworICAgIExPR1YoIkNyZWF0aW5nOiAlcFxuIiwgYWN0aXZpdHkpOwor
ICAgIGFjdGl2aXR5LT5jYWxsYmFja3MtPm9uRGVzdHJveSA9IG9uRGVzdHJveTsKKyAgICBhY3Rp
dml0eS0+Y2FsbGJhY2tzLT5vblN0YXJ0ID0gb25TdGFydDsKKyAgICBhY3Rpdml0eS0+Y2FsbGJh
Y2tzLT5vblJlc3VtZSA9IG9uUmVzdW1lOworICAgIGFjdGl2aXR5LT5jYWxsYmFja3MtPm9uU2F2
ZUluc3RhbmNlU3RhdGUgPSBvblNhdmVJbnN0YW5jZVN0YXRlOworICAgIGFjdGl2aXR5LT5jYWxs
YmFja3MtPm9uUGF1c2UgPSBvblBhdXNlOworICAgIGFjdGl2aXR5LT5jYWxsYmFja3MtPm9uU3Rv
cCA9IG9uU3RvcDsKKyAgICBhY3Rpdml0eS0+Y2FsbGJhY2tzLT5vbkNvbmZpZ3VyYXRpb25DaGFu
Z2VkID0gb25Db25maWd1cmF0aW9uQ2hhbmdlZDsKKyAgICBhY3Rpdml0eS0+Y2FsbGJhY2tzLT5v
bkxvd01lbW9yeSA9IG9uTG93TWVtb3J5OworICAgIGFjdGl2aXR5LT5jYWxsYmFja3MtPm9uV2lu
ZG93Rm9jdXNDaGFuZ2VkID0gb25XaW5kb3dGb2N1c0NoYW5nZWQ7CisgICAgYWN0aXZpdHktPmNh
bGxiYWNrcy0+b25OYXRpdmVXaW5kb3dDcmVhdGVkID0gb25OYXRpdmVXaW5kb3dDcmVhdGVkOwor
ICAgIGFjdGl2aXR5LT5jYWxsYmFja3MtPm9uTmF0aXZlV2luZG93RGVzdHJveWVkID0gb25OYXRp
dmVXaW5kb3dEZXN0cm95ZWQ7CisgICAgYWN0aXZpdHktPmNhbGxiYWNrcy0+b25JbnB1dFF1ZXVl
Q3JlYXRlZCA9IG9uSW5wdXRRdWV1ZUNyZWF0ZWQ7CisgICAgYWN0aXZpdHktPmNhbGxiYWNrcy0+
b25JbnB1dFF1ZXVlRGVzdHJveWVkID0gb25JbnB1dFF1ZXVlRGVzdHJveWVkOworCisgICAgYWN0
aXZpdHktPmluc3RhbmNlID0gYW5kcm9pZF9hcHBfY3JlYXRlKGFjdGl2aXR5LCBzYXZlZFN0YXRl
LCBzYXZlZFN0YXRlU2l6ZSk7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGls
L2FuZHJvaWQvdGhpcmRfcGFydHkvYW5kcm9pZF9uYXRpdmVfYXBwX2dsdWUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL2FuZHJvaWQvdGhpcmRfcGFydHkvYW5k
cm9pZF9uYXRpdmVfYXBwX2dsdWUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS91dGlsL2FuZHJvaWQvdGhpcmRfcGFydHkvYW5kcm9pZF9uYXRpdmVfYXBwX2dsdWUu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisg
KiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAq
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworCisjaWZuZGVm
IF9BTkRST0lEX05BVElWRV9BUFBfR0xVRV9ICisjZGVmaW5lIF9BTkRST0lEX05BVElWRV9BUFBf
R0xVRV9ICisKKyNpbmNsdWRlIDxwb2xsLmg+CisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2luY2x1
ZGUgPHNjaGVkLmg+CisKKyNpbmNsdWRlIDxhbmRyb2lkL2NvbmZpZ3VyYXRpb24uaD4KKyNpbmNs
dWRlIDxhbmRyb2lkL2xvb3Blci5oPgorI2luY2x1ZGUgPGFuZHJvaWQvbmF0aXZlX2FjdGl2aXR5
Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqCisg
KiBUaGUgbmF0aXZlIGFjdGl2aXR5IGludGVyZmFjZSBwcm92aWRlZCBieSA8YW5kcm9pZC9uYXRp
dmVfYWN0aXZpdHkuaD4KKyAqIGlzIGJhc2VkIG9uIGEgc2V0IG9mIGFwcGxpY2F0aW9uLXByb3Zp
ZGVkIGNhbGxiYWNrcyB0aGF0IHdpbGwgYmUgY2FsbGVkCisgKiBieSB0aGUgQWN0aXZpdHkncyBt
YWluIHRocmVhZCB3aGVuIGNlcnRhaW4gZXZlbnRzIG9jY3VyLgorICoKKyAqIFRoaXMgbWVhbnMg
dGhhdCBlYWNoIG9uZSBvZiB0aGlzIGNhbGxiYWNrcyBfc2hvdWxkXyBfbm90XyBibG9jaywgb3Ig
dGhleQorICogcmlzayBoYXZpbmcgdGhlIHN5c3RlbSBmb3JjZS1jbG9zZSB0aGUgYXBwbGljYXRp
b24uIFRoaXMgcHJvZ3JhbW1pbmcKKyAqIG1vZGVsIGlzIGRpcmVjdCwgbGlnaHR3ZWlnaHQsIGJ1
dCBjb25zdHJhaW5pbmcuCisgKgorICogVGhlICdhbmRyb2lkX25hdGl2ZV9hcHBfZ2x1ZScgc3Rh
dGljIGxpYnJhcnkgaXMgdXNlZCB0byBwcm92aWRlIGEgZGlmZmVyZW50CisgKiBleGVjdXRpb24g
bW9kZWwgd2hlcmUgdGhlIGFwcGxpY2F0aW9uIGNhbiBpbXBsZW1lbnQgaXRzIG93biBtYWluIGV2
ZW50CisgKiBsb29wIGluIGEgZGlmZmVyZW50IHRocmVhZCBpbnN0ZWFkLiBIZXJlJ3MgaG93IGl0
IHdvcmtzOgorICoKKyAqIDEvIFRoZSBhcHBsaWNhdGlvbiBtdXN0IHByb3ZpZGUgYSBmdW5jdGlv
biBuYW1lZCAiYW5kcm9pZF9tYWluKCkiIHRoYXQKKyAqICAgIHdpbGwgYmUgY2FsbGVkIHdoZW4g
dGhlIGFjdGl2aXR5IGlzIGNyZWF0ZWQsIGluIGEgbmV3IHRocmVhZCB0aGF0IGlzCisgKiAgICBk
aXN0aW5jdCBmcm9tIHRoZSBhY3Rpdml0eSdzIG1haW4gdGhyZWFkLgorICoKKyAqIDIvIGFuZHJv
aWRfbWFpbigpIHJlY2VpdmVzIGEgcG9pbnRlciB0byBhIHZhbGlkICJhbmRyb2lkX2FwcCIgc3Ry
dWN0dXJlCisgKiAgICB0aGF0IGNvbnRhaW5zIHJlZmVyZW5jZXMgdG8gb3RoZXIgaW1wb3J0YW50
IG9iamVjdHMsIGUuZy4gdGhlCisgKiAgICBBTmF0aXZlQWN0aXZpdHkgb2JlamN0IGluc3RhbmNl
IHRoZSBhcHBsaWNhdGlvbiBpcyBydW5uaW5nIGluLgorICoKKyAqIDMvIHRoZSAiYW5kcm9pZF9h
cHAiIG9iamVjdCBob2xkcyBhbiBBTG9vcGVyIGluc3RhbmNlIHRoYXQgYWxyZWFkeQorICogICAg
bGlzdGVucyB0byB0d28gaW1wb3J0YW50IHRoaW5nczoKKyAqCisgKiAgICAgIC0gYWN0aXZpdHkg
bGlmZWN5Y2xlIGV2ZW50cyAoZS5nLiAicGF1c2UiLCAicmVzdW1lIikuIFNlZSBBUFBfQ01EX1hY
WAorICogICAgICAgIGRlY2xhcmF0aW9ucyBiZWxvdy4KKyAqCisgKiAgICAgIC0gaW5wdXQgZXZl
bnRzIGNvbWluZyBmcm9tIHRoZSBBSW5wdXRRdWV1ZSBhdHRhY2hlZCB0byB0aGUgYWN0aXZpdHku
CisgKgorICogICAgRWFjaCBvZiB0aGVzZSBjb3JyZXNwb25kIHRvIGFuIEFMb29wZXIgaWRlbnRp
ZmllciByZXR1cm5lZCBieQorICogICAgQUxvb3Blcl9wb2xsT25jZSB3aXRoIHZhbHVlcyBvZiBM
T09QRVJfSURfTUFJTiBhbmQgTE9PUEVSX0lEX0lOUFVULAorICogICAgcmVzcGVjdGl2ZWx5Lgor
ICoKKyAqICAgIFlvdXIgYXBwbGljYXRpb24gY2FuIHVzZSB0aGUgc2FtZSBBTG9vcGVyIHRvIGxp
c3RlbiB0byBhZGRpdGlvbmFsCisgKiAgICBmaWxlLWRlc2NyaXB0b3JzLiAgVGhleSBjYW4gZWl0
aGVyIGJlIGNhbGxiYWNrIGJhc2VkLCBvciB3aXRoIHJldHVybgorICogICAgaWRlbnRpZmllcnMg
c3RhcnRpbmcgd2l0aCBMT09QRVJfSURfVVNFUi4KKyAqCisgKiA0LyBXaGVuZXZlciB5b3UgcmVj
ZWl2ZSBhIExPT1BFUl9JRF9NQUlOIG9yIExPT1BFUl9JRF9JTlBVVCBldmVudCwKKyAqICAgIHRo
ZSByZXR1cm5lZCBkYXRhIHdpbGwgcG9pbnQgdG8gYW4gYW5kcm9pZF9wb2xsX3NvdXJjZSBzdHJ1
Y3R1cmUuICBZb3UKKyAqICAgIGNhbiBjYWxsIHRoZSBwcm9jZXNzKCkgZnVuY3Rpb24gb24gaXQs
IGFuZCBmaWxsIGluIGFuZHJvaWRfYXBwLT5vbkFwcENtZAorICogICAgYW5kIGFuZHJvaWRfYXBw
LT5vbklucHV0RXZlbnQgdG8gYmUgY2FsbGVkIGZvciB5b3VyIG93biBwcm9jZXNzaW5nCisgKiAg
ICBvZiB0aGUgZXZlbnQuCisgKgorICogICAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBjYWxsIHRo
ZSBsb3ctbGV2ZWwgZnVuY3Rpb25zIHRvIHJlYWQgYW5kIHByb2Nlc3MKKyAqICAgIHRoZSBkYXRh
IGRpcmVjdGx5Li4uICBsb29rIGF0IHRoZSBwcm9jZXNzX2NtZCgpIGFuZCBwcm9jZXNzX2lucHV0
KCkKKyAqICAgIGltcGxlbWVudGF0aW9ucyBpbiB0aGUgZ2x1ZSB0byBzZWUgaG93IHRvIGRvIHRo
aXMuCisgKgorICogU2VlIHRoZSBzYW1wbGUgbmFtZWQgIm5hdGl2ZS1hY3Rpdml0eSIgdGhhdCBj
b21lcyB3aXRoIHRoZSBOREsgd2l0aCBhCisgKiBmdWxsIHVzYWdlIGV4YW1wbGUuICBBbHNvIGxv
b2sgYXQgdGhlIEphdmFEb2Mgb2YgTmF0aXZlQWN0aXZpdHkuCisgKi8KKworc3RydWN0IGFuZHJv
aWRfYXBwOworCisvKioKKyAqIERhdGEgYXNzb2NpYXRlZCB3aXRoIGFuIEFMb29wZXIgZmQgdGhh
dCB3aWxsIGJlIHJldHVybmVkIGFzIHRoZSAib3V0RGF0YSIKKyAqIHdoZW4gdGhhdCBzb3VyY2Ug
aGFzIGRhdGEgcmVhZHkuCisgKi8KK3N0cnVjdCBhbmRyb2lkX3BvbGxfc291cmNlIHsKKyAgICAv
LyBUaGUgaWRlbnRpZmllciBvZiB0aGlzIHNvdXJjZS4gIE1heSBiZSBMT09QRVJfSURfTUFJTiBv
cgorICAgIC8vIExPT1BFUl9JRF9JTlBVVC4KKyAgICBpbnQzMl90IGlkOworCisgICAgLy8gVGhl
IGFuZHJvaWRfYXBwIHRoaXMgaWRlbnQgaXMgYXNzb2NpYXRlZCB3aXRoLgorICAgIHN0cnVjdCBh
bmRyb2lkX2FwcCogYXBwOworCisgICAgLy8gRnVuY3Rpb24gdG8gY2FsbCB0byBwZXJmb3JtIHRo
ZSBzdGFuZGFyZCBwcm9jZXNzaW5nIG9mIGRhdGEgZnJvbQorICAgIC8vIHRoaXMgc291cmNlLgor
ICAgIHZvaWQgKCpwcm9jZXNzKShzdHJ1Y3QgYW5kcm9pZF9hcHAqIGFwcCwgc3RydWN0IGFuZHJv
aWRfcG9sbF9zb3VyY2UqIHNvdXJjZSk7Cit9OworCisvKioKKyAqIFRoaXMgaXMgdGhlIGludGVy
ZmFjZSBmb3IgdGhlIHN0YW5kYXJkIGdsdWUgY29kZSBvZiBhIHRocmVhZGVkCisgKiBhcHBsaWNh
dGlvbi4gIEluIHRoaXMgbW9kZWwsIHRoZSBhcHBsaWNhdGlvbidzIGNvZGUgaXMgcnVubmluZwor
ICogaW4gaXRzIG93biB0aHJlYWQgc2VwYXJhdGUgZnJvbSB0aGUgbWFpbiB0aHJlYWQgb2YgdGhl
IHByb2Nlc3MuCisgKiBJdCBpcyBub3QgcmVxdWlyZWQgdGhhdCB0aGlzIHRocmVhZCBiZSBhc3Nv
Y2lhdGVkIHdpdGggdGhlIEphdmEKKyAqIFZNLCBhbHRob3VnaCBpdCB3aWxsIG5lZWQgdG8gYmUg
aW4gb3JkZXIgdG8gbWFrZSBKTkkgY2FsbHMgYW55CisgKiBKYXZhIG9iamVjdHMuCisgKi8KK3N0
cnVjdCBhbmRyb2lkX2FwcCB7CisgICAgLy8gVGhlIGFwcGxpY2F0aW9uIGNhbiBwbGFjZSBhIHBv
aW50ZXIgdG8gaXRzIG93biBzdGF0ZSBvYmplY3QKKyAgICAvLyBoZXJlIGlmIGl0IGxpa2VzLgor
ICAgIHZvaWQqIHVzZXJEYXRhOworCisgICAgLy8gRmlsbCB0aGlzIGluIHdpdGggdGhlIGZ1bmN0
aW9uIHRvIHByb2Nlc3MgbWFpbiBhcHAgY29tbWFuZHMgKEFQUF9DTURfKikKKyAgICB2b2lkICgq
b25BcHBDbWQpKHN0cnVjdCBhbmRyb2lkX2FwcCogYXBwLCBpbnQzMl90IGNtZCk7CisKKyAgICAv
LyBGaWxsIHRoaXMgaW4gd2l0aCB0aGUgZnVuY3Rpb24gdG8gcHJvY2VzcyBpbnB1dCBldmVudHMu
ICBBdCB0aGlzIHBvaW50CisgICAgLy8gdGhlIGV2ZW50IGhhcyBhbHJlYWR5IGJlZW4gcHJlLWRp
c3BhdGNoZWQsIGFuZCBpdCB3aWxsIGJlIGZpbmlzaGVkIHVwb24KKyAgICAvLyByZXR1cm4uICBS
ZXR1cm4gMSBpZiB5b3UgaGF2ZSBoYW5kbGVkIHRoZSBldmVudCwgMCBmb3IgYW55IGRlZmF1bHQK
KyAgICAvLyBkaXNwYXRjaGluZy4KKyAgICBpbnQzMl90ICgqb25JbnB1dEV2ZW50KShzdHJ1Y3Qg
YW5kcm9pZF9hcHAqIGFwcCwgQUlucHV0RXZlbnQqIGV2ZW50KTsKKworICAgIC8vIFRoZSBBTmF0
aXZlQWN0aXZpdHkgb2JqZWN0IGluc3RhbmNlIHRoYXQgdGhpcyBhcHAgaXMgcnVubmluZyBpbi4K
KyAgICBBTmF0aXZlQWN0aXZpdHkqIGFjdGl2aXR5OworCisgICAgLy8gVGhlIGN1cnJlbnQgY29u
ZmlndXJhdGlvbiB0aGUgYXBwIGlzIHJ1bm5pbmcgaW4uCisgICAgQUNvbmZpZ3VyYXRpb24qIGNv
bmZpZzsKKworICAgIC8vIFRoaXMgaXMgdGhlIGxhc3QgaW5zdGFuY2UncyBzYXZlZCBzdGF0ZSwg
YXMgcHJvdmlkZWQgYXQgY3JlYXRpb24gdGltZS4KKyAgICAvLyBJdCBpcyBOVUxMIGlmIHRoZXJl
IHdhcyBubyBzdGF0ZS4gIFlvdSBjYW4gdXNlIHRoaXMgYXMgeW91IG5lZWQ7IHRoZQorICAgIC8v
IG1lbW9yeSB3aWxsIHJlbWFpbiBhcm91bmQgdW50aWwgeW91IGNhbGwgYW5kcm9pZF9hcHBfZXhl
Y19jbWQoKSBmb3IKKyAgICAvLyBBUFBfQ01EX1JFU1VNRSwgYXQgd2hpY2ggcG9pbnQgaXQgd2ls
bCBiZSBmcmVlZCBhbmQgc2F2ZWRTdGF0ZSBzZXQgdG8gTlVMTC4KKyAgICAvLyBUaGVzZSB2YXJp
YWJsZXMgc2hvdWxkIG9ubHkgYmUgY2hhbmdlZCB3aGVuIHByb2Nlc3NpbmcgYSBBUFBfQ01EX1NB
VkVfU1RBVEUsCisgICAgLy8gYXQgd2hpY2ggcG9pbnQgdGhleSB3aWxsIGJlIGluaXRpYWxpemVk
IHRvIE5VTEwgYW5kIHlvdSBjYW4gbWFsbG9jIHlvdXIKKyAgICAvLyBzdGF0ZSBhbmQgcGxhY2Ug
dGhlIGluZm9ybWF0aW9uIGhlcmUuICBJbiB0aGF0IGNhc2UgdGhlIG1lbW9yeSB3aWxsIGJlCisg
ICAgLy8gZnJlZWQgZm9yIHlvdSBsYXRlci4KKyAgICB2b2lkKiBzYXZlZFN0YXRlOworICAgIHNp
emVfdCBzYXZlZFN0YXRlU2l6ZTsKKworICAgIC8vIFRoZSBBTG9vcGVyIGFzc29jaWF0ZWQgd2l0
aCB0aGUgYXBwJ3MgdGhyZWFkLgorICAgIEFMb29wZXIqIGxvb3BlcjsKKworICAgIC8vIFdoZW4g
bm9uLU5VTEwsIHRoaXMgaXMgdGhlIGlucHV0IHF1ZXVlIGZyb20gd2hpY2ggdGhlIGFwcCB3aWxs
CisgICAgLy8gcmVjZWl2ZSB1c2VyIGlucHV0IGV2ZW50cy4KKyAgICBBSW5wdXRRdWV1ZSogaW5w
dXRRdWV1ZTsKKworICAgIC8vIFdoZW4gbm9uLU5VTEwsIHRoaXMgaXMgdGhlIHdpbmRvdyBzdXJm
YWNlIHRoYXQgdGhlIGFwcCBjYW4gZHJhdyBpbi4KKyAgICBBTmF0aXZlV2luZG93KiB3aW5kb3c7
CisKKyAgICAvLyBDdXJyZW50IGNvbnRlbnQgcmVjdGFuZ2xlIG9mIHRoZSB3aW5kb3c7IHRoaXMg
aXMgdGhlIGFyZWEgd2hlcmUgdGhlCisgICAgLy8gd2luZG93J3MgY29udGVudCBzaG91bGQgYmUg
cGxhY2VkIHRvIGJlIHNlZW4gYnkgdGhlIHVzZXIuCisgICAgQVJlY3QgY29udGVudFJlY3Q7CisK
KyAgICAvLyBDdXJyZW50IHN0YXRlIG9mIHRoZSBhcHAncyBhY3Rpdml0eS4gIE1heSBiZSBlaXRo
ZXIgQVBQX0NNRF9TVEFSVCwKKyAgICAvLyBBUFBfQ01EX1JFU1VNRSwgQVBQX0NNRF9QQVVTRSwg
b3IgQVBQX0NNRF9TVE9QOyBzZWUgYmVsb3cuCisgICAgaW50IGFjdGl2aXR5U3RhdGU7CisKKyAg
ICAvLyBUaGlzIGlzIG5vbi16ZXJvIHdoZW4gdGhlIGFwcGxpY2F0aW9uJ3MgTmF0aXZlQWN0aXZp
dHkgaXMgYmVpbmcKKyAgICAvLyBkZXN0cm95ZWQgYW5kIHdhaXRpbmcgZm9yIHRoZSBhcHAgdGhy
ZWFkIHRvIGNvbXBsZXRlLgorICAgIGludCBkZXN0cm95UmVxdWVzdGVkOworCisgICAgLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIEJl
bG93IGFyZSAicHJpdmF0ZSIgaW1wbGVtZW50YXRpb24gb2YgdGhlIGdsdWUgY29kZS4KKworICAg
IHB0aHJlYWRfbXV0ZXhfdCBtdXRleDsKKyAgICBwdGhyZWFkX2NvbmRfdCBjb25kOworCisgICAg
aW50IG1zZ3JlYWQ7CisgICAgaW50IG1zZ3dyaXRlOworCisgICAgcHRocmVhZF90IHRocmVhZDsK
KworICAgIHN0cnVjdCBhbmRyb2lkX3BvbGxfc291cmNlIGNtZFBvbGxTb3VyY2U7CisgICAgc3Ry
dWN0IGFuZHJvaWRfcG9sbF9zb3VyY2UgaW5wdXRQb2xsU291cmNlOworCisgICAgaW50IHJ1bm5p
bmc7CisgICAgaW50IHN0YXRlU2F2ZWQ7CisgICAgaW50IGRlc3Ryb3llZDsKKyAgICBpbnQgcmVk
cmF3TmVlZGVkOworICAgIEFJbnB1dFF1ZXVlKiBwZW5kaW5nSW5wdXRRdWV1ZTsKKyAgICBBTmF0
aXZlV2luZG93KiBwZW5kaW5nV2luZG93OworICAgIEFSZWN0IHBlbmRpbmdDb250ZW50UmVjdDsK
K307CisKK2VudW0geworICAgIC8qKgorICAgICAqIExvb3BlciBkYXRhIElEIG9mIGNvbW1hbmRz
IGNvbWluZyBmcm9tIHRoZSBhcHAncyBtYWluIHRocmVhZCwgd2hpY2gKKyAgICAgKiBpcyByZXR1
cm5lZCBhcyBhbiBpZGVudGlmaWVyIGZyb20gQUxvb3Blcl9wb2xsT25jZSgpLiAgVGhlIGRhdGEg
Zm9yIHRoaXMKKyAgICAgKiBpZGVudGlmaWVyIGlzIGEgcG9pbnRlciB0byBhbiBhbmRyb2lkX3Bv
bGxfc291cmNlIHN0cnVjdHVyZS4KKyAgICAgKiBUaGVzZSBjYW4gYmUgcmV0cmlldmVkIGFuZCBw
cm9jZXNzZWQgd2l0aCBhbmRyb2lkX2FwcF9yZWFkX2NtZCgpCisgICAgICogYW5kIGFuZHJvaWRf
YXBwX2V4ZWNfY21kKCkuCisgICAgICovCisgICAgTE9PUEVSX0lEX01BSU4gPSAxLAorCisgICAg
LyoqCisgICAgICogTG9vcGVyIGRhdGEgSUQgb2YgZXZlbnRzIGNvbWluZyBmcm9tIHRoZSBBSW5w
dXRRdWV1ZSBvZiB0aGUKKyAgICAgKiBhcHBsaWNhdGlvbidzIHdpbmRvdywgd2hpY2ggaXMgcmV0
dXJuZWQgYXMgYW4gaWRlbnRpZmllciBmcm9tCisgICAgICogQUxvb3Blcl9wb2xsT25jZSgpLiAg
VGhlIGRhdGEgZm9yIHRoaXMgaWRlbnRpZmllciBpcyBhIHBvaW50ZXIgdG8gYW4KKyAgICAgKiBh
bmRyb2lkX3BvbGxfc291cmNlIHN0cnVjdHVyZS4gIFRoZXNlIGNhbiBiZSByZWFkIHZpYSB0aGUg
aW5wdXRRdWV1ZQorICAgICAqIG9iamVjdCBvZiBhbmRyb2lkX2FwcC4KKyAgICAgKi8KKyAgICBM
T09QRVJfSURfSU5QVVQgPSAyLAorCisgICAgLyoqCisgICAgICogU3RhcnQgb2YgdXNlci1kZWZp
bmVkIEFMb29wZXIgaWRlbnRpZmllcnMuCisgICAgICovCisgICAgTE9PUEVSX0lEX1VTRVIgPSAz
LAorfTsKKworZW51bSB7CisgICAgLyoqCisgICAgICogQ29tbWFuZCBmcm9tIG1haW4gdGhyZWFk
OiB0aGUgQUlucHV0UXVldWUgaGFzIGNoYW5nZWQuICBVcG9uIHByb2Nlc3NpbmcKKyAgICAgKiB0
aGlzIGNvbW1hbmQsIGFuZHJvaWRfYXBwLT5pbnB1dFF1ZXVlIHdpbGwgYmUgdXBkYXRlZCB0byB0
aGUgbmV3IHF1ZXVlCisgICAgICogKG9yIE5VTEwpLgorICAgICAqLworICAgIEFQUF9DTURfSU5Q
VVRfQ0hBTkdFRCwKKworICAgIC8qKgorICAgICAqIENvbW1hbmQgZnJvbSBtYWluIHRocmVhZDog
YSBuZXcgQU5hdGl2ZVdpbmRvdyBpcyByZWFkeSBmb3IgdXNlLiAgVXBvbgorICAgICAqIHJlY2Vp
dmluZyB0aGlzIGNvbW1hbmQsIGFuZHJvaWRfYXBwLT53aW5kb3cgd2lsbCBjb250YWluIHRoZSBu
ZXcgd2luZG93CisgICAgICogc3VyZmFjZS4KKyAgICAgKi8KKyAgICBBUFBfQ01EX0lOSVRfV0lO
RE9XLAorCisgICAgLyoqCisgICAgICogQ29tbWFuZCBmcm9tIG1haW4gdGhyZWFkOiB0aGUgZXhp
c3RpbmcgQU5hdGl2ZVdpbmRvdyBuZWVkcyB0byBiZQorICAgICAqIHRlcm1pbmF0ZWQuICBVcG9u
IHJlY2VpdmluZyB0aGlzIGNvbW1hbmQsIGFuZHJvaWRfYXBwLT53aW5kb3cgc3RpbGwKKyAgICAg
KiBjb250YWlucyB0aGUgZXhpc3Rpbmcgd2luZG93OyBhZnRlciBjYWxsaW5nIGFuZHJvaWRfYXBw
X2V4ZWNfY21kCisgICAgICogaXQgd2lsbCBiZSBzZXQgdG8gTlVMTC4KKyAgICAgKi8KKyAgICBB
UFBfQ01EX1RFUk1fV0lORE9XLAorCisgICAgLyoqCisgICAgICogQ29tbWFuZCBmcm9tIG1haW4g
dGhyZWFkOiB0aGUgY3VycmVudCBBTmF0aXZlV2luZG93IGhhcyBiZWVuIHJlc2l6ZWQuCisgICAg
ICogUGxlYXNlIHJlZHJhdyB3aXRoIGl0cyBuZXcgc2l6ZS4KKyAgICAgKi8KKyAgICBBUFBfQ01E
X1dJTkRPV19SRVNJWkVELAorCisgICAgLyoqCisgICAgICogQ29tbWFuZCBmcm9tIG1haW4gdGhy
ZWFkOiB0aGUgc3lzdGVtIG5lZWRzIHRoYXQgdGhlIGN1cnJlbnQgQU5hdGl2ZVdpbmRvdworICAg
ICAqIGJlIHJlZHJhd24uICBZb3Ugc2hvdWxkIHJlZHJhdyB0aGUgd2luZG93IGJlZm9yZSBoYW5k
aW5nIHRoaXMgdG8KKyAgICAgKiBhbmRyb2lkX2FwcF9leGVjX2NtZCgpIGluIG9yZGVyIHRvIGF2
b2lkIHRyYW5zaWVudCBkcmF3aW5nIGdsaXRjaGVzLgorICAgICAqLworICAgIEFQUF9DTURfV0lO
RE9XX1JFRFJBV19ORUVERUQsCisKKyAgICAvKioKKyAgICAgKiBDb21tYW5kIGZyb20gbWFpbiB0
aHJlYWQ6IHRoZSBjb250ZW50IGFyZWEgb2YgdGhlIHdpbmRvdyBoYXMgY2hhbmdlZCwKKyAgICAg
KiBzdWNoIGFzIGZyb20gdGhlIHNvZnQgaW5wdXQgd2luZG93IGJlaW5nIHNob3duIG9yIGhpZGRl
bi4gIFlvdSBjYW4KKyAgICAgKiBmaW5kIHRoZSBuZXcgY29udGVudCByZWN0IGluIGFuZHJvaWRf
YXBwOjpjb250ZW50UmVjdC4KKyAgICAgKi8KKyAgICBBUFBfQ01EX0NPTlRFTlRfUkVDVF9DSEFO
R0VELAorCisgICAgLyoqCisgICAgICogQ29tbWFuZCBmcm9tIG1haW4gdGhyZWFkOiB0aGUgYXBw
J3MgYWN0aXZpdHkgd2luZG93IGhhcyBnYWluZWQKKyAgICAgKiBpbnB1dCBmb2N1cy4KKyAgICAg
Ki8KKyAgICBBUFBfQ01EX0dBSU5FRF9GT0NVUywKKworICAgIC8qKgorICAgICAqIENvbW1hbmQg
ZnJvbSBtYWluIHRocmVhZDogdGhlIGFwcCdzIGFjdGl2aXR5IHdpbmRvdyBoYXMgbG9zdAorICAg
ICAqIGlucHV0IGZvY3VzLgorICAgICAqLworICAgIEFQUF9DTURfTE9TVF9GT0NVUywKKworICAg
IC8qKgorICAgICAqIENvbW1hbmQgZnJvbSBtYWluIHRocmVhZDogdGhlIGN1cnJlbnQgZGV2aWNl
IGNvbmZpZ3VyYXRpb24gaGFzIGNoYW5nZWQuCisgICAgICovCisgICAgQVBQX0NNRF9DT05GSUdf
Q0hBTkdFRCwKKworICAgIC8qKgorICAgICAqIENvbW1hbmQgZnJvbSBtYWluIHRocmVhZDogdGhl
IHN5c3RlbSBpcyBydW5uaW5nIGxvdyBvbiBtZW1vcnkuCisgICAgICogVHJ5IHRvIHJlZHVjZSB5
b3VyIG1lbW9yeSB1c2UuCisgICAgICovCisgICAgQVBQX0NNRF9MT1dfTUVNT1JZLAorCisgICAg
LyoqCisgICAgICogQ29tbWFuZCBmcm9tIG1haW4gdGhyZWFkOiB0aGUgYXBwJ3MgYWN0aXZpdHkg
aGFzIGJlZW4gc3RhcnRlZC4KKyAgICAgKi8KKyAgICBBUFBfQ01EX1NUQVJULAorCisgICAgLyoq
CisgICAgICogQ29tbWFuZCBmcm9tIG1haW4gdGhyZWFkOiB0aGUgYXBwJ3MgYWN0aXZpdHkgaGFz
IGJlZW4gcmVzdW1lZC4KKyAgICAgKi8KKyAgICBBUFBfQ01EX1JFU1VNRSwKKworICAgIC8qKgor
ICAgICAqIENvbW1hbmQgZnJvbSBtYWluIHRocmVhZDogdGhlIGFwcCBzaG91bGQgZ2VuZXJhdGUg
YSBuZXcgc2F2ZWQgc3RhdGUKKyAgICAgKiBmb3IgaXRzZWxmLCB0byByZXN0b3JlIGZyb20gbGF0
ZXIgaWYgbmVlZGVkLiAgSWYgeW91IGhhdmUgc2F2ZWQgc3RhdGUsCisgICAgICogYWxsb2NhdGUg
aXQgd2l0aCBtYWxsb2MgYW5kIHBsYWNlIGl0IGluIGFuZHJvaWRfYXBwLnNhdmVkU3RhdGUgd2l0
aAorICAgICAqIHRoZSBzaXplIGluIGFuZHJvaWRfYXBwLnNhdmVkU3RhdGVTaXplLiAgVGhlIHdp
bGwgYmUgZnJlZWQgZm9yIHlvdQorICAgICAqIGxhdGVyLgorICAgICAqLworICAgIEFQUF9DTURf
U0FWRV9TVEFURSwKKworICAgIC8qKgorICAgICAqIENvbW1hbmQgZnJvbSBtYWluIHRocmVhZDog
dGhlIGFwcCdzIGFjdGl2aXR5IGhhcyBiZWVuIHBhdXNlZC4KKyAgICAgKi8KKyAgICBBUFBfQ01E
X1BBVVNFLAorCisgICAgLyoqCisgICAgICogQ29tbWFuZCBmcm9tIG1haW4gdGhyZWFkOiB0aGUg
YXBwJ3MgYWN0aXZpdHkgaGFzIGJlZW4gc3RvcHBlZC4KKyAgICAgKi8KKyAgICBBUFBfQ01EX1NU
T1AsCisKKyAgICAvKioKKyAgICAgKiBDb21tYW5kIGZyb20gbWFpbiB0aHJlYWQ6IHRoZSBhcHAn
cyBhY3Rpdml0eSBpcyBiZWluZyBkZXN0cm95ZWQsCisgICAgICogYW5kIHdhaXRpbmcgZm9yIHRo
ZSBhcHAgdGhyZWFkIHRvIGNsZWFuIHVwIGFuZCBleGl0IGJlZm9yZSBwcm9jZWVkaW5nLgorICAg
ICAqLworICAgIEFQUF9DTURfREVTVFJPWSwKK307CisKKy8qKgorICogQ2FsbCB3aGVuIEFMb29w
ZXJfcG9sbEFsbCgpIHJldHVybnMgTE9PUEVSX0lEX01BSU4sIHJlYWRpbmcgdGhlIG5leHQKKyAq
IGFwcCBjb21tYW5kIG1lc3NhZ2UuCisgKi8KK2ludDhfdCBhbmRyb2lkX2FwcF9yZWFkX2NtZChz
dHJ1Y3QgYW5kcm9pZF9hcHAqIGFuZHJvaWRfYXBwKTsKKworLyoqCisgKiBDYWxsIHdpdGggdGhl
IGNvbW1hbmQgcmV0dXJuZWQgYnkgYW5kcm9pZF9hcHBfcmVhZF9jbWQoKSB0byBkbyB0aGUKKyAq
IGluaXRpYWwgcHJlLXByb2Nlc3Npbmcgb2YgdGhlIGdpdmVuIGNvbW1hbmQuICBZb3UgY2FuIHBl
cmZvcm0geW91ciBvd24KKyAqIGFjdGlvbnMgZm9yIHRoZSBjb21tYW5kIGFmdGVyIGNhbGxpbmcg
dGhpcyBmdW5jdGlvbi4KKyAqLwordm9pZCBhbmRyb2lkX2FwcF9wcmVfZXhlY19jbWQoc3RydWN0
IGFuZHJvaWRfYXBwKiBhbmRyb2lkX2FwcCwgaW50OF90IGNtZCk7CisKKy8qKgorICogQ2FsbCB3
aXRoIHRoZSBjb21tYW5kIHJldHVybmVkIGJ5IGFuZHJvaWRfYXBwX3JlYWRfY21kKCkgdG8gZG8g
dGhlCisgKiBmaW5hbCBwb3N0LXByb2Nlc3Npbmcgb2YgdGhlIGdpdmVuIGNvbW1hbmQuICBZb3Ug
bXVzdCBoYXZlIGRvbmUgeW91ciBvd24KKyAqIGFjdGlvbnMgZm9yIHRoZSBjb21tYW5kIGJlZm9y
ZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCisgKi8KK3ZvaWQgYW5kcm9pZF9hcHBfcG9zdF9leGVj
X2NtZChzdHJ1Y3QgYW5kcm9pZF9hcHAqIGFuZHJvaWRfYXBwLCBpbnQ4X3QgY21kKTsKKworLyoq
CisgKiBEdW1teSBmdW5jdGlvbiB5b3UgY2FuIGNhbGwgdG8gZW5zdXJlIGdsdWUgY29kZSBpc24n
dCBzdHJpcHBlZC4KKyAqLwordm9pZCBhcHBfZHVtbXkoKTsKKworLyoqCisgKiBUaGlzIGlzIHRo
ZSBmdW5jdGlvbiB0aGF0IGFwcGxpY2F0aW9uIGNvZGUgbXVzdCBpbXBsZW1lbnQsIHJlcHJlc2Vu
dGluZworICogdGhlIG1haW4gZW50cnkgdG8gdGhlIGFwcC4KKyAqLworZXh0ZXJuIHZvaWQgYW5k
cm9pZF9tYWluKHN0cnVjdCBhbmRyb2lkX2FwcCogYXBwKTsKKworI2lmZGVmIF9fY3BsdXNwbHVz
Cit9CisjZW5kaWYKKworI2VuZGlmIC8qIF9BTkRST0lEX05BVElWRV9BUFBfR0xVRV9IICovCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL2xpbnV4L0xpbnV4VGltZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvbGludXgvTGludXhUaW1l
ci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9saW51
eC9MaW51eFRpbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvLworLy8g
Q29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKworLy8gTGludXhUaW1lci5jcHA6IEltcGxlbWVudGF0aW9uIG9mIGEgaGlnaCBwcmVj
aXNpb24gdGltZXIgY2xhc3Mgb24gTGludXgKKworI2luY2x1ZGUgImxpbnV4L0xpbnV4VGltZXIu
aCIKKyNpbmNsdWRlIDxpb3N0cmVhbT4KKworTGludXhUaW1lcjo6TGludXhUaW1lcigpCisgICAg
OiBtUnVubmluZyhmYWxzZSkKK3sKK30KKwordm9pZCBMaW51eFRpbWVyOjpzdGFydCgpCit7Cisg
ICAgY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICZtU3RhcnRUaW1lKTsKKyAgICBtUnVu
bmluZyA9IHRydWU7Cit9CisKK3ZvaWQgTGludXhUaW1lcjo6c3RvcCgpCit7CisgICAgY2xvY2tf
Z2V0dGltZShDTE9DS19NT05PVE9OSUMsICZtU3RvcFRpbWUpOworICAgIG1SdW5uaW5nID0gZmFs
c2U7Cit9CisKK2RvdWJsZSBMaW51eFRpbWVyOjpnZXRFbGFwc2VkVGltZSgpIGNvbnN0Cit7Cisg
ICAgc3RydWN0IHRpbWVzcGVjIGVuZFRpbWU7CisgICAgaWYgKG1SdW5uaW5nKQorICAgIHsKKyAg
ICAgICAgY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICZlbmRUaW1lKTsKKyAgICB9Cisg
ICAgZWxzZQorICAgIHsKKyAgICAgICAgZW5kVGltZSA9IG1TdG9wVGltZTsKKyAgICB9CisKKyAg
ICBkb3VibGUgc3RhcnRTZWNvbmRzID0gbVN0YXJ0VGltZS50dl9zZWMgKyAoMS4wIC8gMTAwMDAw
MDAwMCkgKiBtU3RhcnRUaW1lLnR2X25zZWM7CisgICAgZG91YmxlIGVuZFNlY29uZHMgPSBlbmRU
aW1lLnR2X3NlYyArICgxLjAgLyAxMDAwMDAwMDAwKSAqIGVuZFRpbWUudHZfbnNlYzsKKyAgICBy
ZXR1cm4gZW5kU2Vjb25kcyAtIHN0YXJ0U2Vjb25kczsKK30KKworVGltZXIgKkNyZWF0ZVRpbWVy
KCkKK3sKKyAgICByZXR1cm4gbmV3IExpbnV4VGltZXIoKTsKK30KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3V0aWwvbGludXgvTGludXhUaW1lci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvbGludXgvTGludXhUaW1lci5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvbGludXgvTGludXhUaW1lci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMzEgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBMaW51eFRpbWVy
Lmg6IERlZmluaXRpb24gb2YgYSBoaWdoIHByZWNpc2lvbiB0aW1lciBjbGFzcyBvbiBMaW51eAor
CisjaWZuZGVmIFVUSUxfTElOVVhfVElNRVJfSAorI2RlZmluZSBVVElMX0xJTlVYX1RJTUVSX0gK
KworI2luY2x1ZGUgPHRpbWUuaD4KKworI2luY2x1ZGUgIlRpbWVyLmgiCisKK2NsYXNzIExpbnV4
VGltZXIgOiBwdWJsaWMgVGltZXIKK3sKKyAgcHVibGljOgorICAgIExpbnV4VGltZXIoKTsKKwor
ICAgIHZvaWQgc3RhcnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKKyAg
ICBkb3VibGUgZ2V0RWxhcHNlZFRpbWUoKSBjb25zdCBvdmVycmlkZTsKKworICBwcml2YXRlOgor
ICAgIGJvb2wgbVJ1bm5pbmc7CisgICAgc3RydWN0IHRpbWVzcGVjIG1TdGFydFRpbWU7CisgICAg
c3RydWN0IHRpbWVzcGVjIG1TdG9wVGltZTsKK307CisKKyNlbmRpZiAvLyBVVElMX0xJTlVYX1RJ
TUVSX0gKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvbGludXgvTGludXhfc3lz
dGVtX3V0aWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGls
L2xpbnV4L0xpbnV4X3N5c3RlbV91dGlscy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvdXRpbC9saW51eC9MaW51eF9zeXN0ZW1fdXRpbHMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNjQgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBMaW51eF9zeXN0ZW1f
dXRpbHMuY3BwOiBJbXBsZW1lbnRhdGlvbiBvZiBPUy1zcGVjaWZpYyBmdW5jdGlvbnMgZm9yIExp
bnV4CisKKyNpbmNsdWRlICJzeXN0ZW1fdXRpbHMuaCIKKworI2luY2x1ZGUgPHN5cy9zdGF0Lmg+
CisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRl
IDx1bmlzdGQuaD4KKworbmFtZXNwYWNlIGFuZ2xlCit7CisKK25hbWVzcGFjZQoreworCitzdGQ6
OnN0cmluZyBHZXRFeGVjdXRhYmxlUGF0aEltcGwoKQoreworICAgIC8vIFdlIGNhbm5vdCB1c2Ug
bHN0YXQgdG8gZ2V0IHRoZSBzaXplIG9mIC9wcm9jL3NlbGYvZXhlIGFzIGl0IGFsd2F5cyByZXR1
cm5zIDAKKyAgICAvLyBzbyB3ZSBqdXN0IHVzZSBhIGJpZyBidWZmZXIgYW5kIGhvcGUgdGhlIHBh
dGggZml0cyBpbiBpdC4KKyAgICBjaGFyIHBhdGhbNDA5Nl07CisKKyAgICBzc2l6ZV90IHJlc3Vs
dCA9IHJlYWRsaW5rKCIvcHJvYy9zZWxmL2V4ZSIsIHBhdGgsIHNpemVvZihwYXRoKSAtIDEpOwor
ICAgIGlmIChyZXN1bHQgPCAwIHx8IHN0YXRpY19jYXN0PHNpemVfdD4ocmVzdWx0KSA+PSBzaXpl
b2YocGF0aCkgLSAxKQorICAgIHsKKyAgICAgICAgcmV0dXJuICIiOworICAgIH0KKworICAgIHBh
dGhbcmVzdWx0XSA9ICdcMCc7CisgICAgcmV0dXJuIHBhdGg7Cit9CisKK3N0ZDo6c3RyaW5nIEdl
dEV4ZWN1dGFibGVEaXJlY3RvcnlJbXBsKCkKK3sKKyAgICBzdGQ6OnN0cmluZyBleGVjdXRhYmxl
UGF0aCA9IEdldEV4ZWN1dGFibGVQYXRoKCk7CisgICAgc2l6ZV90IGxhc3RQYXRoU2VwTG9jID0g
ZXhlY3V0YWJsZVBhdGguZmluZF9sYXN0X29mKCIvIik7CisgICAgcmV0dXJuIChsYXN0UGF0aFNl
cExvYyAhPSBzdGQ6OnN0cmluZzo6bnBvcykgPyBleGVjdXRhYmxlUGF0aC5zdWJzdHIoMCwgbGFz
dFBhdGhTZXBMb2MpIDogIiI7Cit9CisKK30gIC8vIGFub255bW91cyBuYW1lc3BhY2UKKworY29u
c3QgY2hhciAqR2V0RXhlY3V0YWJsZVBhdGgoKQoreworICAgIGNvbnN0IHN0YXRpYyBzdGQ6OnN0
cmluZyAmZXhlUGF0aCA9IEdldEV4ZWN1dGFibGVQYXRoSW1wbCgpOworICAgIHJldHVybiBleGVQ
YXRoLmNfc3RyKCk7Cit9CisKK2NvbnN0IGNoYXIgKkdldEV4ZWN1dGFibGVEaXJlY3RvcnkoKQor
eworICAgIGNvbnN0IHN0YXRpYyBzdGQ6OnN0cmluZyAmZXhlRGlyID0gR2V0RXhlY3V0YWJsZURp
cmVjdG9yeUltcGwoKTsKKyAgICByZXR1cm4gZXhlRGlyLmNfc3RyKCk7Cit9CisKK2NvbnN0IGNo
YXIgKkdldFNoYXJlZExpYnJhcnlFeHRlbnNpb24oKQoreworICAgIHJldHVybiAic28iOworfQor
Cit9IC8vIG5hbWVzcGFjZSBhbmdsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRp
bC9vc3gvT1NYUGl4bWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
dXRpbC9vc3gvT1NYUGl4bWFwLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvdXRpbC9vc3gvT1NYUGl4bWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBA
QAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKy8vCisKKy8vIE9TWFBpeG1hcC5oOiBEZWZpbml0aW9uIG9mIHRoZSBpbXBs
ZW1lbnRhdGlvbiBvZiBPU1BpeG1hcCBmb3IgT1NYCisKKyNpZm5kZWYgVVRJTF9PU1hfUElYTUFQ
X0hfCisjZGVmaW5lIFVUSUxfT1NYX1BJWE1BUF9IXworCisjaW5jbHVkZSAiT1NQaXhtYXAuaCIK
KworI2VuZGlmIC8vIFVUSUxfT1NYX1BJWE1BUF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvdXRpbC9vc3gvT1NYUGl4bWFwLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3V0aWwvb3N4L09TWFBpeG1hcC5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS91dGlsL29zeC9PU1hQaXhtYXAubW0JKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxNSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIE9TWFBpeG1hcC5jcHA6IEltcGxlbWVu
dGF0aW9uIG9mIE9TUGl4bWFwIGZvciBPU1gKKworI2luY2x1ZGUgIm9zeC9PU1hQaXhtYXAuaCIK
KworLy8gVE9ETyhjd2FsbGV6KSBmaW5kIG91dCB0aGUgbmF0aXZlIE9TWCBwaXhtYXAgdHlwZSBh
bmQgaW1wbGVtZW50IHRoaXMKK09TUGl4bWFwICpDcmVhdGVPU1BpeG1hcCgpCit7CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL29zeC9P
U1hUaW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9v
c3gvT1NYVGltZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3V0aWwvb3N4L09TWFRpbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYwIEBACisv
LworLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKworLy8gT1NYVGltZXIuY3BwOiBJbXBsZW1lbnRhdGlvbiBvZiBhIGhpZ2gg
cHJlY2lzaW9uIHRpbWVyIGNsYXNzIG9uIE9TWAorCisjaW5jbHVkZSAib3N4L09TWFRpbWVyLmgi
CisKKyNpbmNsdWRlIDxDb3JlU2VydmljZXMvQ29yZVNlcnZpY2VzLmg+CisjaW5jbHVkZSA8bWFj
aC9tYWNoLmg+CisjaW5jbHVkZSA8bWFjaC9tYWNoX3RpbWUuaD4KKworT1NYVGltZXI6Ok9TWFRp
bWVyKCkKKyAgICA6IG1SdW5uaW5nKGZhbHNlKQoreworfQorCit2b2lkIE9TWFRpbWVyOjpzdGFy
dCgpCit7CisgICAgbVN0YXJ0VGltZSA9IG1hY2hfYWJzb2x1dGVfdGltZSgpOworICAgIG1SdW5u
aW5nID0gdHJ1ZTsKK30KKwordm9pZCBPU1hUaW1lcjo6c3RvcCgpCit7CisgICAgbVN0b3BUaW1l
ID0gbWFjaF9hYnNvbHV0ZV90aW1lKCk7CisgICAgbVJ1bm5pbmcgPSBmYWxzZTsKK30KKworZG91
YmxlIE9TWFRpbWVyOjpnZXRFbGFwc2VkVGltZSgpIGNvbnN0Cit7CisgICAgLy8gSWYgdGhpcyBp
cyB0aGUgZmlyc3QgdGltZSB3ZSd2ZSBydW4sIGdldCB0aGUgdGltZWJhc2UuCisgICAgLy8gV2Ug
Y2FuIHVzZSBkZW5vbSA9PSAwIHRvIGluZGljYXRlIHRoYXQgc1RpbWViYXNlSW5mbyBpcworICAg
IC8vIHVuaW5pdGlhbGlzZWQgYmVjYXVzZSBpdCBtYWtlcyBubyBzZW5zZSB0byBoYXZlIGEgemVy
bworICAgIC8vIGRlbm9taW5hdG9yIGluIGEgZnJhY3Rpb24uCisgICAgc3RhdGljIG1hY2hfdGlt
ZWJhc2VfaW5mb19kYXRhX3QgdGltZWJhc2VJbmZvOworICAgIHN0YXRpYyBkb3VibGUgc2Vjb25k
Q29lZmY7CisKKyAgICBpZiAoIHRpbWViYXNlSW5mby5kZW5vbSA9PSAwICkKKyAgICB7CisgICAg
ICAgIG1hY2hfdGltZWJhc2VfaW5mbygmdGltZWJhc2VJbmZvKTsKKyAgICAgICAgc2Vjb25kQ29l
ZmYgPSB0aW1lYmFzZUluZm8ubnVtZXIgKiAoMS4wIC8gMTAwMDAwMDAwMCkgLyB0aW1lYmFzZUlu
Zm8uZGVub207CisgICAgfQorCisgICAgaWYgKG1SdW5uaW5nKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHNlY29uZENvZWZmICogKG1hY2hfYWJzb2x1dGVfdGltZSgpIC0gbVN0YXJ0VGltZSk7Cisg
ICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiBzZWNvbmRDb2VmZiAqIChtU3Rv
cFRpbWUgLSBtU3RhcnRUaW1lKTsKKyAgICB9Cit9CisKK1RpbWVyICpDcmVhdGVUaW1lcigpCit7
CisgICAgcmV0dXJuIG5ldyBPU1hUaW1lcigpOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvdXRpbC9vc3gvT1NYVGltZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS91dGlsL29zeC9PU1hUaW1lci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3V0aWwvb3N4L09TWFRpbWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwzMiBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIE9TWFRpbWVyLmg6IERlZmluaXRpb24gb2YgYSBo
aWdoIHByZWNpc2lvbiB0aW1lciBjbGFzcyBvbiBPU1gKKworI2lmbmRlZiBVVElMX09TWF9USU1F
Ul9IXworI2RlZmluZSBVVElMX09TWF9USU1FUl9IXworCisjaW5jbHVkZSA8c3RkaW50Lmg+Cisj
aW5jbHVkZSA8dGltZS5oPgorCisjaW5jbHVkZSAiVGltZXIuaCIKKworY2xhc3MgT1NYVGltZXIg
OiBwdWJsaWMgVGltZXIKK3sKKyAgcHVibGljOgorICAgIE9TWFRpbWVyKCk7CisKKyAgICB2b2lk
IHN0YXJ0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CisgICAgZG91Ymxl
IGdldEVsYXBzZWRUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgcHJpdmF0ZToKKyAgICBib29s
IG1SdW5uaW5nOworICAgIHVpbnQ2NF90IG1TdGFydFRpbWU7CisgICAgdWludDY0X3QgbVN0b3BU
aW1lOworfTsKKworI2VuZGlmIC8vIFVUSUxfT1NYX1RJTUVSX0hfCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS91dGlsL29zeC9PU1hXaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS91dGlsL29zeC9PU1hXaW5kb3cuaAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL29zeC9PU1hXaW5kb3cuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDYzIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gT1NYV2luZG93Lmg6IERlZmlu
aXRpb24gb2YgdGhlIGltcGxlbWVudGF0aW9uIG9mIE9TV2luZG93IGZvciBPU1gKKworI2lmbmRl
ZiBVVElMX09TWF9XSU5ET1dfSF8KKyNkZWZpbmUgVVRJTF9PU1hfV0lORE9XX0hfCisKKyNpbXBv
cnQgPENvY29hL0NvY29hLmg+CisKKyNpbmNsdWRlICJPU1dpbmRvdy5oIgorCitjbGFzcyBPU1hX
aW5kb3c7CisKK0BpbnRlcmZhY2UgV2luZG93RGVsZWdhdGUgOiBOU09iamVjdAoreworICAgIE9T
WFdpbmRvdyAqbVdpbmRvdzsKK30KKy0gKGlkKSBpbml0V2l0aFdpbmRvdzogKE9TWFdpbmRvdyop
IHdpbmRvdzsKK0BlbmQKKworQGludGVyZmFjZSBDb250ZW50VmlldyA6IE5TVmlldworeworICAg
IE9TWFdpbmRvdyAqbVdpbmRvdzsKKyAgICBOU1RyYWNraW5nQXJlYSAqbVRyYWNraW5nQXJlYTsK
KyAgICBpbnQgbUN1cnJlbnRNb2RpZmllcjsKK30KKy0gKGlkKSBpbml0V2l0aFdpbmRvdzogKE9T
WFdpbmRvdyopIHdpbmRvdzsKK0BlbmQKKworY2xhc3MgT1NYV2luZG93IDogcHVibGljIE9TV2lu
ZG93Cit7CisgIHB1YmxpYzoKKyAgICBPU1hXaW5kb3coKTsKKyAgICB+T1NYV2luZG93KCk7CisK
KyAgICBib29sIGluaXRpYWxpemUoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsIHNpemVfdCB3aWR0
aCwgc2l6ZV90IGhlaWdodCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXN0cm95KCkgb3ZlcnJpZGU7
CisKKyAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIGdldE5hdGl2ZVdpbmRvdygpIGNvbnN0IG92ZXJy
aWRlOworICAgIEVHTE5hdGl2ZURpc3BsYXlUeXBlIGdldE5hdGl2ZURpc3BsYXkoKSBjb25zdCBv
dmVycmlkZTsKKworICAgIHZvaWQgbWVzc2FnZUxvb3AoKSBvdmVycmlkZTsKKworICAgIHZvaWQg
c2V0TW91c2VQb3NpdGlvbihpbnQgeCwgaW50IHkpIG92ZXJyaWRlOworICAgIGJvb2wgc2V0UG9z
aXRpb24oaW50IHgsIGludCB5KSBvdmVycmlkZTsKKyAgICBib29sIHJlc2l6ZShpbnQgd2lkdGgs
IGludCBoZWlnaHQpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VmlzaWJsZShib29sIGlzVmlzaWJs
ZSkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNpZ25hbFRlc3RFdmVudCgpIG92ZXJyaWRlOworCisg
ICAgTlNXaW5kb3cgKmdldE5TV2luZG93KCkgY29uc3Q7CisKKyAgcHJpdmF0ZToKKyAgICBOU1dp
bmRvdyAqbVdpbmRvdzsKKyAgICBXaW5kb3dEZWxlZ2F0ZSAqbURlbGVnYXRlOworICAgIENvbnRl
bnRWaWV3ICptVmlldzsKK307CisKKyNlbmRpZiAvLyBVVElMX09TWF9XSU5ET1dfSF8KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvb3N4L09TWFdpbmRvdy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL29zeC9PU1hXaW5kb3cubW0JKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9vc3gvT1NYV2luZG93Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjg2IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAy
MDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gT1NY
V2luZG93Lm1tOiBJbXBsZW1lbnRhdGlvbiBvZiBPU1dpbmRvdyBmb3IgT1NYCisKKyNpbmNsdWRl
ICJvc3gvT1NYV2luZG93LmgiCisKKyNpbmNsdWRlIDxzZXQ+CisvLyBJbmNsdWRlIENhcmJvbiB0
byB1c2UgdGhlIGtleWNvZGUgbmFtZXMgaW4gQ2FyYm9uJ3MgRXZlbnQuaAorI2luY2x1ZGUgPENh
cmJvbi9DYXJib24uaD4KKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCisvLyBTb21lIGV2
ZW50cyBzdWNoIGFzICJTaG91bGRUZXJtaW5hdGUiIGFyZSBzZW50IHRvIHRoZSB3aG9sZSBhcHBs
aWNhdGlvbiBzbyB3ZSBrZWVwIGEgbGlzdCBvZgorLy8gYWxsIHRoZSB3aW5kb3dzIGluIG9yZGVy
IHRvIGZvcndhcmQgdGhlIGV2ZW50IHRvIGVhY2ggb2YgdGhlbS4gSG93ZXZlciB0aGlzIGFuZCBj
YWxsaW5nIHB1c2hFdmVudAorLy8gaW4gQXBwbGljYXRpb25EZWxlZ2F0ZSBpcyBpbmhlcmVudGx5
IHVuc2FmZSBpbiBhIG11bHRpdGhyZWFkZWQgZW52aXJvbm1lbnQuCitzdGF0aWMgc3RkOjpzZXQ8
T1NYV2luZG93Kj4gZ0FsbFdpbmRvd3M7CisKK0BpbnRlcmZhY2UgQXBwbGljYXRpb24gOiBOU0Fw
cGxpY2F0aW9uCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBBcHBsaWNhdGlvbgorICAgIC0gKHZv
aWQpIHNlbmRFdmVudDogKE5TRXZlbnQqKSBuc0V2ZW50CisgICAgeworICAgICAgICBpZiAoW25z
RXZlbnQgdHlwZV0gPT0gTlNBcHBsaWNhdGlvbkRlZmluZWQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGZvciAoYXV0byB3aW5kb3cgOiBnQWxsV2luZG93cykKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBpZiAoW3dpbmRvdy0+Z2V0TlNXaW5kb3coKSB3aW5kb3dOdW1iZXJdID09IFtu
c0V2ZW50IHdpbmRvd051bWJlcl0pCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBFdmVudCBldmVudDsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQuVHlwZSA9IEV2ZW50
OjpFVkVOVF9URVNUOworICAgICAgICAgICAgICAgICAgICB3aW5kb3ctPnB1c2hFdmVudChldmVu
dCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IFtzdXBlciBzZW5kRXZlbnQ6IG5zRXZlbnRdOworICAgIH0KK0BlbmQKKworLy8gVGhlIERlbGVn
YXRlIHJlY2VpdmluZyBhcHBsaWNhdGlvbi13aWRlIGV2ZW50cy4KK0BpbnRlcmZhY2UgQXBwbGlj
YXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBBcHBsaWNh
dGlvbkRlbGVnYXRlCisgICAgLSAoTlNBcHBsaWNhdGlvblRlcm1pbmF0ZVJlcGx5KSBhcHBsaWNh
dGlvblNob3VsZFRlcm1pbmF0ZTogKE5TQXBwbGljYXRpb24qKSBzZW5kZXIKKyAgICB7CisgICAg
ICAgIEV2ZW50IGV2ZW50OworICAgICAgICBldmVudC5UeXBlID0gRXZlbnQ6OkVWRU5UX0NMT1NF
RDsKKyAgICAgICAgZm9yIChhdXRvIHdpbmRvdyA6IGdBbGxXaW5kb3dzKQorICAgICAgICB7Cisg
ICAgICAgICAgICB3aW5kb3ctPnB1c2hFdmVudChldmVudCk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIE5TVGVybWluYXRlQ2FuY2VsOworICAgIH0KK0BlbmQKK3N0YXRpYyBBcHBsaWNhdGlv
bkRlbGVnYXRlICpnQXBwbGljYXRpb25EZWxlZ2F0ZSA9IG5pbDsKKworc3RhdGljIGJvb2wgSW5p
dGlhbGl6ZUFwcEtpdCgpCit7CisgICAgaWYgKE5TQXBwICE9IG5pbCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIEluaXRpYWxpemUgdGhlIGdsb2JhbCB2YXJp
YWJsZSAiTlNBcHAiCisgICAgW0FwcGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXTsKKworICAg
IC8vIE1ha2UgdXMgYXBwZWFyIGluIHRoZSBkb2NrCisgICAgW05TQXBwIHNldEFjdGl2YXRpb25Q
b2xpY3k6TlNBcHBsaWNhdGlvbkFjdGl2YXRpb25Qb2xpY3lSZWd1bGFyXTsKKworICAgIC8vIFJl
Z2lzdGVyIG91ciBnbG9iYWwgZXZlbnQgaGFuZGxlcgorICAgIGdBcHBsaWNhdGlvbkRlbGVnYXRl
ID0gW1tBcHBsaWNhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XTsKKyAgICBpZiAoZ0FwcGxpY2F0
aW9uRGVsZWdhdGUgPT0gbmlsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICBbTlNBcHAgc2V0RGVsZWdhdGU6IHN0YXRpY19jYXN0PGlkPihnQXBwbGljYXRpb25EZWxl
Z2F0ZSldOworCisgICAgLy8gU2V0IG91ciBzdGF0dXMgdG8gInN0YXJ0ZWQiIHNvIHdlIGFyZSBu
b3QgYm91bmNpbmcgaW4gdGhlIGRvYyBhbmQgY2FuIGFjdGl2YXRlCisgICAgW05TQXBwIGZpbmlz
aExhdW5jaGluZ107CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIE5TJ3MgYW5kIENHJ3MgY29v
cmRpbmF0ZSBzeXN0ZW1zIHN0YXJ0IGF0IHRoZSBib3R0b20gbGVmdCwgd2hpbGUgT1NXaW5kb3cn
cyBjb29yZGluYXRlCisvLyBzeXN0ZW0gc3RhcnRzIGF0IHRoZSB0b3AgbGVmdC4gVGhpcyBmdW5j
dGlvbiBjb252ZXJ0cyB0aGUgWSBjb29yZGluYXRlIGFjY29yZGluZ2x5Lgorc3RhdGljIGZsb2F0
IFlDb29yZFRvRnJvbUNHKGZsb2F0IHkpCit7CisgICAgZmxvYXQgc2NyZWVuSGVpZ2h0ID0gQ0dE
aXNwbGF5Qm91bmRzKENHTWFpbkRpc3BsYXlJRCgpKS5zaXplLmhlaWdodDsKKyAgICByZXR1cm4g
c2NyZWVuSGVpZ2h0IC0geTsKK30KKworLy8gRGVsZWdhdGUgZm9yIHdpbmRvdy13aWRlIGV2ZW50
cywgbm90ZSB0aGF0IHRoZSBwcm90b2NvbCBkb2Vzbid0IGNvbnRhaW4gYW55dGhpbmcgaW5wdXQg
cmVsYXRlZC4KK0BpbXBsZW1lbnRhdGlvbiBXaW5kb3dEZWxlZ2F0ZQorICAgIC0gKGlkKSBpbml0
V2l0aFdpbmRvdzogKE9TWFdpbmRvdyopIHdpbmRvdworICAgIHsKKyAgICAgICAgc2VsZiA9IFtz
dXBlciBpbml0XTsKKyAgICAgICAgaWYgKHNlbGYgIT0gbmlsKQorICAgICAgICB7CisgICAgICAg
ICAgICBtV2luZG93ID0gd2luZG93OworICAgICAgICB9CisgICAgICAgIHJldHVybiBzZWxmOwor
ICAgIH0KKworICAgIC0gKHZvaWQpIG9uT1NYV2luZG93RGVsZXRlZAorICAgIHsKKyAgICAgICAg
bVdpbmRvdyA9IG5pbDsKKyAgICB9CisKKyAgICAtIChCT09MKSB3aW5kb3dTaG91bGRDbG9zZTog
KGlkKSBzZW5kZXIKKyAgICB7CisgICAgICAgIEV2ZW50IGV2ZW50OworICAgICAgICBldmVudC5U
eXBlID0gRXZlbnQ6OkVWRU5UX0NMT1NFRDsKKyAgICAgICAgbVdpbmRvdy0+cHVzaEV2ZW50KGV2
ZW50KTsKKyAgICAgICAgcmV0dXJuIE5POworICAgIH0KKworICAgIC0gKHZvaWQpIHdpbmRvd0Rp
ZFJlc2l6ZTogKE5TTm90aWZpY2F0aW9uKikgbm90aWZpY2F0aW9uCisgICAgeworICAgICAgICBO
U1NpemUgd2luZG93U2l6ZSA9IFtbbVdpbmRvdy0+Z2V0TlNXaW5kb3coKSBjb250ZW50Vmlld10g
ZnJhbWVdLnNpemU7CisgICAgICAgIEV2ZW50IGV2ZW50OworICAgICAgICBldmVudC5UeXBlID0g
RXZlbnQ6OkVWRU5UX1JFU0laRUQ7CisgICAgICAgIGV2ZW50LlNpemUuV2lkdGggPSB3aW5kb3dT
aXplLndpZHRoOworICAgICAgICBldmVudC5TaXplLkhlaWdodCA9IHdpbmRvd1NpemUuaGVpZ2h0
OworICAgICAgICBtV2luZG93LT5wdXNoRXZlbnQoZXZlbnQpOworICAgIH0KKworICAgIC0gKHZv
aWQpIHdpbmRvd0RpZE1vdmU6IChOU05vdGlmaWNhdGlvbiopIG5vdGlmaWNhdGlvbgorICAgIHsK
KyAgICAgICAgTlNSZWN0IHNjcmVlbnNwYWNlID0gW21XaW5kb3ctPmdldE5TV2luZG93KCkgZnJh
bWVdOworICAgICAgICBFdmVudCBldmVudDsKKyAgICAgICAgZXZlbnQuVHlwZSA9IEV2ZW50OjpF
VkVOVF9NT1ZFRDsKKyAgICAgICAgZXZlbnQuTW92ZS5YID0gc2NyZWVuc3BhY2Uub3JpZ2luLng7
CisgICAgICAgIGV2ZW50Lk1vdmUuWSA9IFlDb29yZFRvRnJvbUNHKHNjcmVlbnNwYWNlLm9yaWdp
bi55ICsgc2NyZWVuc3BhY2Uuc2l6ZS5oZWlnaHQpOworICAgICAgICBtV2luZG93LT5wdXNoRXZl
bnQoZXZlbnQpOworICAgIH0KKworICAgIC0gKHZvaWQpIHdpbmRvd0RpZEJlY29tZUtleTogKE5T
Tm90aWZpY2F0aW9uKikgbm90aWZpY2F0aW9uCisgICAgeworICAgICAgICBFdmVudCBldmVudDsK
KyAgICAgICAgZXZlbnQuVHlwZSA9IEV2ZW50OjpFVkVOVF9HQUlORURfRk9DVVM7CisgICAgICAg
IG1XaW5kb3ctPnB1c2hFdmVudChldmVudCk7CisgICAgICAgIFtzZWxmIHJldGFpbl07CisgICAg
fQorCisgICAgLSAodm9pZCkgd2luZG93RGlkUmVzaWduS2V5OiAoTlNOb3RpZmljYXRpb24qKSBu
b3RpZmljYXRpb24KKyAgICB7CisgICAgICAgIGlmIChtV2luZG93ICE9IG5pbCkKKyAgICAgICAg
eworICAgICAgICAgICAgRXZlbnQgZXZlbnQ7CisgICAgICAgICAgICBldmVudC5UeXBlID0gRXZl
bnQ6OkVWRU5UX0xPU1RfRk9DVVM7CisgICAgICAgICAgICBtV2luZG93LT5wdXNoRXZlbnQoZXZl
bnQpOworICAgICAgICB9CisgICAgICAgIFtzZWxmIHJlbGVhc2VdOworICAgIH0KK0BlbmQKKwor
c3RhdGljIEtleSBOU0NvZGVUb0tleShpbnQga2V5Q29kZSkKK3sKKyAgICAvLyBNaXNzaW5nIEtF
WV9QQVVTRQorICAgIHN3aXRjaCAoa2V5Q29kZSkKKyAgICB7CisgICAgICBjYXNlIGtWS19TaGlm
dDogICAgICAgICAgICAgICByZXR1cm4gS0VZX0xTSElGVDsKKyAgICAgIGNhc2Uga1ZLX1JpZ2h0
U2hpZnQ6ICAgICAgICAgIHJldHVybiBLRVlfUlNISUZUOworICAgICAgY2FzZSBrVktfT3B0aW9u
OiAgICAgICAgICAgICAgcmV0dXJuIEtFWV9MQUxUOworICAgICAgY2FzZSBrVktfUmlnaHRPcHRp
b246ICAgICAgICAgcmV0dXJuIEtFWV9SQUxUOworICAgICAgY2FzZSBrVktfQ29udHJvbDogICAg
ICAgICAgICAgcmV0dXJuIEtFWV9MQ09OVFJPTDsKKyAgICAgIGNhc2Uga1ZLX1JpZ2h0Q29udHJv
bDogICAgICAgIHJldHVybiBLRVlfUkNPTlRST0w7CisgICAgICBjYXNlIGtWS19Db21tYW5kOiAg
ICAgICAgICAgICByZXR1cm4gS0VZX0xTWVNURU07CisgICAgICAvLyBSaWdodCBTeXN0ZW0gZG9l
c24ndCBoYXZlIGEgbmFtZSwgYnV0IHNob3dzIHVwIGFzIDB4MzYuCisgICAgICBjYXNlIDB4MzY6
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gS0VZX1JTWVNURU07CisgICAgICBjYXNlIGtWS19G
dW5jdGlvbjogICAgICAgICAgICByZXR1cm4gS0VZX01FTlU7CisKKyAgICAgIGNhc2Uga1ZLX0FO
U0lfU2VtaWNvbG9uOiAgICAgIHJldHVybiBLRVlfU0VNSUNPTE9OOworICAgICAgY2FzZSBrVktf
QU5TSV9TbGFzaDogICAgICAgICAgcmV0dXJuIEtFWV9TTEFTSDsKKyAgICAgIGNhc2Uga1ZLX0FO
U0lfRXF1YWw6ICAgICAgICAgIHJldHVybiBLRVlfRVFVQUw7CisgICAgICBjYXNlIGtWS19BTlNJ
X01pbnVzOiAgICAgICAgICByZXR1cm4gS0VZX0RBU0g7CisgICAgICBjYXNlIGtWS19BTlNJX0xl
ZnRCcmFja2V0OiAgICByZXR1cm4gS0VZX0xCUkFDS0VUOworICAgICAgY2FzZSBrVktfQU5TSV9S
aWdodEJyYWNrZXQ6ICAgcmV0dXJuIEtFWV9SQlJBQ0tFVDsKKyAgICAgIGNhc2Uga1ZLX0FOU0lf
Q29tbWE6ICAgICAgICAgIHJldHVybiBLRVlfQ09NTUE7CisgICAgICBjYXNlIGtWS19BTlNJX1Bl
cmlvZDogICAgICAgICByZXR1cm4gS0VZX1BFUklPRDsKKyAgICAgIGNhc2Uga1ZLX0FOU0lfQmFj
a3NsYXNoOiAgICAgIHJldHVybiBLRVlfQkFDS1NMQVNIOworICAgICAgY2FzZSBrVktfQU5TSV9H
cmF2ZTogICAgICAgICAgcmV0dXJuIEtFWV9USUxERTsKKyAgICAgIGNhc2Uga1ZLX0VzY2FwZTog
ICAgICAgICAgICAgIHJldHVybiBLRVlfRVNDQVBFOworICAgICAgY2FzZSBrVktfU3BhY2U6ICAg
ICAgICAgICAgICAgcmV0dXJuIEtFWV9TUEFDRTsKKyAgICAgIGNhc2Uga1ZLX1JldHVybjogICAg
ICAgICAgICAgIHJldHVybiBLRVlfUkVUVVJOOworICAgICAgY2FzZSBrVktfRGVsZXRlOiAgICAg
ICAgICAgICAgcmV0dXJuIEtFWV9CQUNLOworICAgICAgY2FzZSBrVktfVGFiOiAgICAgICAgICAg
ICAgICAgcmV0dXJuIEtFWV9UQUI7CisgICAgICBjYXNlIGtWS19QYWdlVXA6ICAgICAgICAgICAg
ICByZXR1cm4gS0VZX1BBR0VVUDsKKyAgICAgIGNhc2Uga1ZLX1BhZ2VEb3duOiAgICAgICAgICAg
IHJldHVybiBLRVlfUEFHRURPV047CisgICAgICBjYXNlIGtWS19FbmQ6ICAgICAgICAgICAgICAg
ICByZXR1cm4gS0VZX0VORDsKKyAgICAgIGNhc2Uga1ZLX0hvbWU6ICAgICAgICAgICAgICAgIHJl
dHVybiBLRVlfSE9NRTsKKyAgICAgIGNhc2Uga1ZLX0hlbHA6ICAgICAgICAgICAgICAgIHJldHVy
biBLRVlfSU5TRVJUOworICAgICAgY2FzZSBrVktfRm9yd2FyZERlbGV0ZTogICAgICAgcmV0dXJu
IEtFWV9ERUxFVEU7CisgICAgICBjYXNlIGtWS19BTlNJX0tleXBhZFBsdXM6ICAgICByZXR1cm4g
S0VZX0FERDsKKyAgICAgIGNhc2Uga1ZLX0FOU0lfS2V5cGFkTWludXM6ICAgIHJldHVybiBLRVlf
U1VCVFJBQ1Q7CisgICAgICBjYXNlIGtWS19BTlNJX0tleXBhZE11bHRpcGx5OiByZXR1cm4gS0VZ
X01VTFRJUExZOworICAgICAgY2FzZSBrVktfQU5TSV9LZXlwYWREaXZpZGU6ICAgcmV0dXJuIEtF
WV9ESVZJREU7CisKKyAgICAgIGNhc2Uga1ZLX0YxOiAgICAgICAgICAgICAgICAgIHJldHVybiBL
RVlfRjE7CisgICAgICBjYXNlIGtWS19GMjogICAgICAgICAgICAgICAgICByZXR1cm4gS0VZX0Yy
OworICAgICAgY2FzZSBrVktfRjM6ICAgICAgICAgICAgICAgICAgcmV0dXJuIEtFWV9GMzsKKyAg
ICAgIGNhc2Uga1ZLX0Y0OiAgICAgICAgICAgICAgICAgIHJldHVybiBLRVlfRjQ7CisgICAgICBj
YXNlIGtWS19GNTogICAgICAgICAgICAgICAgICByZXR1cm4gS0VZX0Y1OworICAgICAgY2FzZSBr
VktfRjY6ICAgICAgICAgICAgICAgICAgcmV0dXJuIEtFWV9GNjsKKyAgICAgIGNhc2Uga1ZLX0Y3
OiAgICAgICAgICAgICAgICAgIHJldHVybiBLRVlfRjc7CisgICAgICBjYXNlIGtWS19GODogICAg
ICAgICAgICAgICAgICByZXR1cm4gS0VZX0Y4OworICAgICAgY2FzZSBrVktfRjk6ICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEtFWV9GOTsKKyAgICAgIGNhc2Uga1ZLX0YxMDogICAgICAgICAgICAg
ICAgIHJldHVybiBLRVlfRjEwOworICAgICAgY2FzZSBrVktfRjExOiAgICAgICAgICAgICAgICAg
cmV0dXJuIEtFWV9GMTE7CisgICAgICBjYXNlIGtWS19GMTI6ICAgICAgICAgICAgICAgICByZXR1
cm4gS0VZX0YxMjsKKyAgICAgIGNhc2Uga1ZLX0YxMzogICAgICAgICAgICAgICAgIHJldHVybiBL
RVlfRjEzOworICAgICAgY2FzZSBrVktfRjE0OiAgICAgICAgICAgICAgICAgcmV0dXJuIEtFWV9G
MTQ7CisgICAgICBjYXNlIGtWS19GMTU6ICAgICAgICAgICAgICAgICByZXR1cm4gS0VZX0YxNTsK
KworICAgICAgY2FzZSBrVktfTGVmdEFycm93OiAgICAgICAgICAgcmV0dXJuIEtFWV9MRUZUOwor
ICAgICAgY2FzZSBrVktfUmlnaHRBcnJvdzogICAgICAgICAgcmV0dXJuIEtFWV9SSUdIVDsKKyAg
ICAgIGNhc2Uga1ZLX0Rvd25BcnJvdzogICAgICAgICAgIHJldHVybiBLRVlfRE9XTjsKKyAgICAg
IGNhc2Uga1ZLX1VwQXJyb3c6ICAgICAgICAgICAgIHJldHVybiBLRVlfVVA7CisKKyAgICAgIGNh
c2Uga1ZLX0FOU0lfS2V5cGFkMDogICAgICAgIHJldHVybiBLRVlfTlVNUEFEMDsKKyAgICAgIGNh
c2Uga1ZLX0FOU0lfS2V5cGFkMTogICAgICAgIHJldHVybiBLRVlfTlVNUEFEMTsKKyAgICAgIGNh
c2Uga1ZLX0FOU0lfS2V5cGFkMjogICAgICAgIHJldHVybiBLRVlfTlVNUEFEMjsKKyAgICAgIGNh
c2Uga1ZLX0FOU0lfS2V5cGFkMzogICAgICAgIHJldHVybiBLRVlfTlVNUEFEMzsKKyAgICAgIGNh
c2Uga1ZLX0FOU0lfS2V5cGFkNDogICAgICAgIHJldHVybiBLRVlfTlVNUEFENDsKKyAgICAgIGNh
c2Uga1ZLX0FOU0lfS2V5cGFkNTogICAgICAgIHJldHVybiBLRVlfTlVNUEFENTsKKyAgICAgIGNh
c2Uga1ZLX0FOU0lfS2V5cGFkNjogICAgICAgIHJldHVybiBLRVlfTlVNUEFENjsKKyAgICAgIGNh
c2Uga1ZLX0FOU0lfS2V5cGFkNzogICAgICAgIHJldHVybiBLRVlfTlVNUEFENzsKKyAgICAgIGNh
c2Uga1ZLX0FOU0lfS2V5cGFkODogICAgICAgIHJldHVybiBLRVlfTlVNUEFEODsKKyAgICAgIGNh
c2Uga1ZLX0FOU0lfS2V5cGFkOTogICAgICAgIHJldHVybiBLRVlfTlVNUEFEOTsKKworICAgICAg
Y2FzZSBrVktfQU5TSV9BOiAgICAgICAgICAgICAgcmV0dXJuIEtFWV9BOworICAgICAgY2FzZSBr
VktfQU5TSV9COiAgICAgICAgICAgICAgcmV0dXJuIEtFWV9COworICAgICAgY2FzZSBrVktfQU5T
SV9DOiAgICAgICAgICAgICAgcmV0dXJuIEtFWV9DOworICAgICAgY2FzZSBrVktfQU5TSV9EOiAg
ICAgICAgICAgICAgcmV0dXJuIEtFWV9EOworICAgICAgY2FzZSBrVktfQU5TSV9FOiAgICAgICAg
ICAgICAgcmV0dXJuIEtFWV9FOworICAgICAgY2FzZSBrVktfQU5TSV9GOiAgICAgICAgICAgICAg
cmV0dXJuIEtFWV9GOworICAgICAgY2FzZSBrVktfQU5TSV9HOiAgICAgICAgICAgICAgcmV0dXJu
IEtFWV9HOworICAgICAgY2FzZSBrVktfQU5TSV9IOiAgICAgICAgICAgICAgcmV0dXJuIEtFWV9I
OworICAgICAgY2FzZSBrVktfQU5TSV9JOiAgICAgICAgICAgICAgcmV0dXJuIEtFWV9JOworICAg
ICAgY2FzZSBrVktfQU5TSV9KOiAgICAgICAgICAgICAgcmV0dXJuIEtFWV9KOworICAgICAgY2Fz
ZSBrVktfQU5TSV9LOiAgICAgICAgICAgICAgcmV0dXJuIEtFWV9LOworICAgICAgY2FzZSBrVktf
QU5TSV9MOiAgICAgICAgICAgICAgcmV0dXJuIEtFWV9MOworICAgICAgY2FzZSBrVktfQU5TSV9N
OiAgICAgICAgICAgICAgcmV0dXJuIEtFWV9NOworICAgICAgY2FzZSBrVktfQU5TSV9OOiAgICAg
ICAgICAgICAgcmV0dXJuIEtFWV9OOworICAgICAgY2FzZSBrVktfQU5TSV9POiAgICAgICAgICAg
ICAgcmV0dXJuIEtFWV9POworICAgICAgY2FzZSBrVktfQU5TSV9QOiAgICAgICAgICAgICAgcmV0
dXJuIEtFWV9QOworICAgICAgY2FzZSBrVktfQU5TSV9ROiAgICAgICAgICAgICAgcmV0dXJuIEtF
WV9ROworICAgICAgY2FzZSBrVktfQU5TSV9SOiAgICAgICAgICAgICAgcmV0dXJuIEtFWV9SOwor
ICAgICAgY2FzZSBrVktfQU5TSV9TOiAgICAgICAgICAgICAgcmV0dXJuIEtFWV9TOworICAgICAg
Y2FzZSBrVktfQU5TSV9UOiAgICAgICAgICAgICAgcmV0dXJuIEtFWV9UOworICAgICAgY2FzZSBr
VktfQU5TSV9VOiAgICAgICAgICAgICAgcmV0dXJuIEtFWV9VOworICAgICAgY2FzZSBrVktfQU5T
SV9WOiAgICAgICAgICAgICAgcmV0dXJuIEtFWV9WOworICAgICAgY2FzZSBrVktfQU5TSV9XOiAg
ICAgICAgICAgICAgcmV0dXJuIEtFWV9XOworICAgICAgY2FzZSBrVktfQU5TSV9YOiAgICAgICAg
ICAgICAgcmV0dXJuIEtFWV9YOworICAgICAgY2FzZSBrVktfQU5TSV9ZOiAgICAgICAgICAgICAg
cmV0dXJuIEtFWV9ZOworICAgICAgY2FzZSBrVktfQU5TSV9aOiAgICAgICAgICAgICAgcmV0dXJu
IEtFWV9aOworCisgICAgICBjYXNlIGtWS19BTlNJXzE6ICAgICAgICAgICAgICByZXR1cm4gS0VZ
X05VTTE7CisgICAgICBjYXNlIGtWS19BTlNJXzI6ICAgICAgICAgICAgICByZXR1cm4gS0VZX05V
TTI7CisgICAgICBjYXNlIGtWS19BTlNJXzM6ICAgICAgICAgICAgICByZXR1cm4gS0VZX05VTTM7
CisgICAgICBjYXNlIGtWS19BTlNJXzQ6ICAgICAgICAgICAgICByZXR1cm4gS0VZX05VTTQ7Cisg
ICAgICBjYXNlIGtWS19BTlNJXzU6ICAgICAgICAgICAgICByZXR1cm4gS0VZX05VTTU7CisgICAg
ICBjYXNlIGtWS19BTlNJXzY6ICAgICAgICAgICAgICByZXR1cm4gS0VZX05VTTY7CisgICAgICBj
YXNlIGtWS19BTlNJXzc6ICAgICAgICAgICAgICByZXR1cm4gS0VZX05VTTc7CisgICAgICBjYXNl
IGtWS19BTlNJXzg6ICAgICAgICAgICAgICByZXR1cm4gS0VZX05VTTg7CisgICAgICBjYXNlIGtW
S19BTlNJXzk6ICAgICAgICAgICAgICByZXR1cm4gS0VZX05VTTk7CisgICAgICBjYXNlIGtWS19B
TlNJXzA6ICAgICAgICAgICAgICByZXR1cm4gS0VZX05VTTA7CisgICAgfQorCisgICAgcmV0dXJu
IEtleSgwKTsKK30KKworc3RhdGljIHZvaWQgQWRkTlNLZXlTdGF0ZVRvRXZlbnQoRXZlbnQgKmV2
ZW50LCBpbnQgc3RhdGUpCit7CisgICAgZXZlbnQtPktleS5TaGlmdCA9IHN0YXRlICYgTlNTaGlm
dEtleU1hc2s7CisgICAgZXZlbnQtPktleS5Db250cm9sID0gc3RhdGUgJiBOU0NvbnRyb2xLZXlN
YXNrOworICAgIGV2ZW50LT5LZXkuQWx0ID0gc3RhdGUgJiBOU0FsdGVybmF0ZUtleU1hc2s7Cisg
ICAgZXZlbnQtPktleS5TeXN0ZW0gPSBzdGF0ZSAmIE5TQ29tbWFuZEtleU1hc2s7Cit9CisKK3N0
YXRpYyBNb3VzZUJ1dHRvbiBUcmFuc2xhdGVNb3VzZUJ1dHRvbihpbnQgYnV0dG9uKQoreworICAg
IHN3aXRjaCAoYnV0dG9uKQorICAgIHsKKyAgICAgIGNhc2UgMjoKKyAgICAgICAgcmV0dXJuIE1P
VVNFQlVUVE9OX01JRERMRTsKKyAgICAgIGNhc2UgMzoKKyAgICAgICAgcmV0dXJuIE1PVVNFQlVU
VE9OX0JVVFRPTjQ7CisgICAgICBjYXNlIDQ6CisgICAgICAgIHJldHVybiBNT1VTRUJVVFRPTl9C
VVRUT041OworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIE1PVVNFQlVUVE9OX1VOS05P
V047CisgICAgfQorfQorCisvLyBEZWxlZ2F0ZSBmb3IgTlNWaWV3IGV2ZW50cywgbW9zdGx5IHRo
ZSBpbnB1dCBldmVudHMKK0BpbXBsZW1lbnRhdGlvbiBDb250ZW50VmlldworICAgIC0gKGlkKSBp
bml0V2l0aFdpbmRvdzogKE9TWFdpbmRvdyopIHdpbmRvdworICAgIHsKKyAgICAgICAgc2VsZiA9
IFtzdXBlciBpbml0XTsKKyAgICAgICAgaWYgKHNlbGYgIT0gbmlsKQorICAgICAgICB7CisgICAg
ICAgICAgICBtV2luZG93ID0gd2luZG93OworICAgICAgICAgICAgbVRyYWNraW5nQXJlYSA9IG5p
bDsKKyAgICAgICAgICAgIG1DdXJyZW50TW9kaWZpZXIgPSAwOworICAgICAgICAgICAgW3NlbGYg
dXBkYXRlVHJhY2tpbmdBcmVhc107CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHNlbGY7Cisg
ICAgfQorCisgICAgLSAodm9pZCkgZGVhbGxvYworICAgIHsKKyAgICAgICAgW21UcmFja2luZ0Fy
ZWEgcmVsZWFzZV07CisgICAgICAgIFtzdXBlciBkZWFsbG9jXTsKKyAgICB9CisKKyAgICAtICh2
b2lkKSB1cGRhdGVUcmFja2luZ0FyZWFzCisgICAgeworICAgICAgICBpZiAobVRyYWNraW5nQXJl
YSAhPSBuaWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIFtzZWxmIHJlbW92ZVRyYWNraW5nQXJl
YTogbVRyYWNraW5nQXJlYV07CisgICAgICAgICAgICBbbVRyYWNraW5nQXJlYSByZWxlYXNlXTsK
KyAgICAgICAgICAgIG1UcmFja2luZ0FyZWEgPSBuaWw7CisgICAgICAgIH0KKworICAgICAgICBO
U1JlY3QgYm91bmRzID0gW3NlbGYgYm91bmRzXTsKKyAgICAgICAgTlNUcmFja2luZ0FyZWFPcHRp
b25zIGZsYWdzID0gTlNUcmFja2luZ01vdXNlRW50ZXJlZEFuZEV4aXRlZCB8CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TVHJhY2tpbmdBY3RpdmVJbktleVdpbmRvdyB8
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TVHJhY2tpbmdDdXJzb3JV
cGRhdGUgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOU1RyYWNraW5n
SW5WaXNpYmxlUmVjdCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5T
VHJhY2tpbmdBc3N1bWVJbnNpZGU7CisgICAgICAgIG1UcmFja2luZ0FyZWEgPSBbW05TVHJhY2tp
bmdBcmVhIGFsbG9jXSBpbml0V2l0aFJlY3Q6IGJvdW5kcworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IGZsYWdzCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvd25lcjogc2VsZgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcklu
Zm86IG5pbF07CisKKyAgICAgICAgW3NlbGYgYWRkVHJhY2tpbmdBcmVhOiBtVHJhY2tpbmdBcmVh
XTsKKyAgICAgICAgW3N1cGVyIHVwZGF0ZVRyYWNraW5nQXJlYXNdOworICAgIH0KKworICAgIC8v
IEhlbHBzIHdpdGggcGVyZm9ybWFuY2UKKyAgICAtIChCT09MKSBpc09wYXF1ZQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIFlFUzsKKyAgICB9CisKKyAgICAtIChCT09MKSBjYW5CZWNvbWVLZXlWaWV3
CisgICAgeworICAgICAgICByZXR1cm4gWUVTOworICAgIH0KKworICAgIC0gKEJPT0wpIGFjY2Vw
dHNGaXJzdFJlc3BvbmRlcgorICAgIHsKKyAgICAgICAgcmV0dXJuIFlFUzsKKyAgICB9CisKKyAg
ICAvLyBIYW5kbGUgbW91c2UgZXZlbnRzIGZyb20gdGhlIE5TUmVzcG9uZGVyIHByb3RvY29sCisg
ICAgLSAoZmxvYXQpIHRyYW5zbGF0ZU1vdXNlWTogKGZsb2F0KSB5CisgICAgeworICAgICAgICBy
ZXR1cm4gW3NlbGYgZnJhbWVdLnNpemUuaGVpZ2h0IC0geTsKKyAgICB9CisKKyAgICAtICh2b2lk
KSBhZGRCdXR0b25FdmVudDogKE5TRXZlbnQqKSBuc0V2ZW50IHR5cGU6KEV2ZW50OjpFdmVudFR5
cGUpIGV2ZW50VHlwZSBidXR0b246KE1vdXNlQnV0dG9uKSBidXR0b24KKyAgICB7CisgICAgICAg
IEV2ZW50IGV2ZW50OworICAgICAgICBldmVudC5UeXBlID0gZXZlbnRUeXBlOworICAgICAgICBl
dmVudC5Nb3VzZUJ1dHRvbi5CdXR0b24gPSBidXR0b247CisgICAgICAgIGV2ZW50Lk1vdXNlQnV0
dG9uLlggPSBbbnNFdmVudCBsb2NhdGlvbkluV2luZG93XS54OworICAgICAgICBldmVudC5Nb3Vz
ZUJ1dHRvbi5ZID0gW3NlbGYgdHJhbnNsYXRlTW91c2VZOiBbbnNFdmVudCBsb2NhdGlvbkluV2lu
ZG93XS55XTsKKyAgICAgICAgbVdpbmRvdy0+cHVzaEV2ZW50KGV2ZW50KTsKKyAgICB9CisKKyAg
ICAtICh2b2lkKSBtb3VzZURvd246IChOU0V2ZW50KikgZXZlbnQKKyAgICB7CisgICAgICAgIFtz
ZWxmIGFkZEJ1dHRvbkV2ZW50OiBldmVudAorICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTog
RXZlbnQ6OkVWRU5UX01PVVNFX0JVVFRPTl9QUkVTU0VECisgICAgICAgICAgICAgICAgICAgICAg
YnV0dG9uOiBNT1VTRUJVVFRPTl9MRUZUXTsKKyAgICB9CisKKyAgICAtICh2b2lkKSBtb3VzZURy
YWdnZWQ6IChOU0V2ZW50KikgZXZlbnQKKyAgICB7CisgICAgICAgIFtzZWxmIG1vdXNlTW92ZWQ6
IGV2ZW50XTsKKyAgICB9CisKKyAgICAtICh2b2lkKSBtb3VzZVVwOiAoTlNFdmVudCopIGV2ZW50
CisgICAgeworICAgICAgICBbc2VsZiBhZGRCdXR0b25FdmVudDogZXZlbnQKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHR5cGU6IEV2ZW50OjpFVkVOVF9NT1VTRV9CVVRUT05fUkVMRUFTRUQKKyAg
ICAgICAgICAgICAgICAgICAgICBidXR0b246IE1PVVNFQlVUVE9OX0xFRlRdOworICAgIH0KKwor
ICAgIC0gKHZvaWQpIG1vdXNlTW92ZWQ6IChOU0V2ZW50KikgbnNFdmVudAorICAgIHsKKyAgICAg
ICAgRXZlbnQgZXZlbnQ7CisgICAgICAgIGV2ZW50LlR5cGUgPSBFdmVudDo6RVZFTlRfTU9VU0Vf
TU9WRUQ7CisgICAgICAgIGV2ZW50Lk1vdXNlTW92ZS5YID0gW25zRXZlbnQgbG9jYXRpb25Jbldp
bmRvd10ueDsKKyAgICAgICAgZXZlbnQuTW91c2VNb3ZlLlkgPSBbc2VsZiB0cmFuc2xhdGVNb3Vz
ZVk6IFtuc0V2ZW50IGxvY2F0aW9uSW5XaW5kb3ddLnldOworICAgICAgICBtV2luZG93LT5wdXNo
RXZlbnQoZXZlbnQpOworICAgIH0KKworICAgIC0gKHZvaWQpIG1vdXNlRW50ZXJlZDogKE5TRXZl
bnQqKSBuc0V2ZW50CisgICAgeworICAgICAgICBFdmVudCBldmVudDsKKyAgICAgICAgZXZlbnQu
VHlwZSA9IEV2ZW50OjpFVkVOVF9NT1VTRV9FTlRFUkVEOworICAgICAgICBtV2luZG93LT5wdXNo
RXZlbnQoZXZlbnQpOworICAgIH0KKworICAgIC0gKHZvaWQpIG1vdXNlRXhpdGVkOiAoTlNFdmVu
dCopIG5zRXZlbnQKKyAgICB7CisgICAgICAgIEV2ZW50IGV2ZW50OworICAgICAgICBldmVudC5U
eXBlID0gRXZlbnQ6OkVWRU5UX01PVVNFX0xFRlQ7CisgICAgICAgIG1XaW5kb3ctPnB1c2hFdmVu
dChldmVudCk7CisgICAgfQorCisgICAgLSAodm9pZClyaWdodE1vdXNlRG93bjooTlNFdmVudCAq
KWV2ZW50CisgICAgeworICAgICAgICBbc2VsZiBhZGRCdXR0b25FdmVudDogZXZlbnQKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHR5cGU6IEV2ZW50OjpFVkVOVF9NT1VTRV9CVVRUT05fUFJFU1NF
RAorICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogTU9VU0VCVVRUT05fUklHSFRdOworICAg
IH0KKworICAgIC0gKHZvaWQpIHJpZ2h0TW91c2VEcmFnZ2VkOiAoTlNFdmVudCopIGV2ZW50Cisg
ICAgeworICAgICAgICBbc2VsZiBtb3VzZU1vdmVkOiBldmVudF07CisgICAgfQorCisgICAgLSAo
dm9pZCkgcmlnaHRNb3VzZVVwOiAoTlNFdmVudCopZXZlbnQKKyAgICB7CisgICAgICAgIFtzZWxm
IGFkZEJ1dHRvbkV2ZW50OiBldmVudAorICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRXZl
bnQ6OkVWRU5UX01PVVNFX0JVVFRPTl9SRUxFQVNFRAorICAgICAgICAgICAgICAgICAgICAgIGJ1
dHRvbjogTU9VU0VCVVRUT05fUklHSFRdOworICAgIH0KKworICAgIC0gKHZvaWQpIG90aGVyTW91
c2VEb3duOiAoTlNFdmVudCopIGV2ZW50CisgICAgeworICAgICAgICBbc2VsZiBhZGRCdXR0b25F
dmVudDogZXZlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEV2ZW50OjpFVkVOVF9N
T1VTRV9CVVRUT05fUFJFU1NFRAorICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVHJhbnNs
YXRlTW91c2VCdXR0b24oW2V2ZW50IGJ1dHRvbk51bWJlcl0pXTsKKyAgICB9CisKKyAgICAtICh2
b2lkKSBvdGhlck1vdXNlRHJhZ2dlZDogKE5TRXZlbnQqKSBldmVudAorICAgIHsKKyAgICAgICAg
W3NlbGYgbW91c2VNb3ZlZDogZXZlbnRdOworICAgIH0KKworICAgIC0gKHZvaWQpIG90aGVyTW91
c2VVcDogKE5TRXZlbnQqKSBldmVudAorICAgIHsKKyAgICAgICAgW3NlbGYgYWRkQnV0dG9uRXZl
bnQ6IGV2ZW50CisgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBFdmVudDo6RVZFTlRfTU9V
U0VfQlVUVE9OX1JFTEVBU0VECisgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBUcmFuc2xh
dGVNb3VzZUJ1dHRvbihbZXZlbnQgYnV0dG9uTnVtYmVyXSldOworICAgIH0KKworICAgIC0gKHZv
aWQpIHNjcm9sbFdoZWVsOiAoTlNFdmVudCopIG5zRXZlbnQKKyAgICB7CisgICAgICAgIGlmIChz
dGF0aWNfY2FzdDxpbnQ+KFtuc0V2ZW50IGRlbHRhWV0pID09IDApCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEV2ZW50IGV2ZW50OworICAgICAg
ICBldmVudC5UeXBlID0gRXZlbnQ6OkVWRU5UX01PVVNFX1dIRUVMX01PVkVEOworICAgICAgICBl
dmVudC5Nb3VzZVdoZWVsLkRlbHRhID0gW25zRXZlbnQgZGVsdGFZXTsKKyAgICAgICAgbVdpbmRv
dy0+cHVzaEV2ZW50KGV2ZW50KTsKKyAgICB9CisKKyAgICAvLyBIYW5kbGUga2V5IGV2ZW50cyBm
cm9tIHRoZSBOU1Jlc3BvbmRlciBwcm90b2NvbAorICAgIC0gKHZvaWQpIGtleURvd246IChOU0V2
ZW50KikgbnNFdmVudAorICAgIHsKKyAgICAgICAgLy8gVE9ETyhjd2FsbGV6KSBhbHNvIHNlbmQg
dGV4dCBldmVudHMKKyAgICAgICAgRXZlbnQgZXZlbnQ7CisgICAgICAgIGV2ZW50LlR5cGUgPSBF
dmVudDo6RVZFTlRfS0VZX1BSRVNTRUQ7CisgICAgICAgIGV2ZW50LktleS5Db2RlID0gTlNDb2Rl
VG9LZXkoW25zRXZlbnQga2V5Q29kZV0pOworICAgICAgICBBZGROU0tleVN0YXRlVG9FdmVudCgm
ZXZlbnQsIFtuc0V2ZW50IG1vZGlmaWVyRmxhZ3NdKTsKKyAgICAgICAgbVdpbmRvdy0+cHVzaEV2
ZW50KGV2ZW50KTsKKyAgICB9CisKKyAgICAtICh2b2lkKSBrZXlVcDogKE5TRXZlbnQqKSBuc0V2
ZW50CisgICAgeworICAgICAgICBFdmVudCBldmVudDsKKyAgICAgICAgZXZlbnQuVHlwZSA9IEV2
ZW50OjpFVkVOVF9LRVlfUkVMRUFTRUQ7CisgICAgICAgIGV2ZW50LktleS5Db2RlID0gTlNDb2Rl
VG9LZXkoW25zRXZlbnQga2V5Q29kZV0pOworICAgICAgICBBZGROU0tleVN0YXRlVG9FdmVudCgm
ZXZlbnQsIFtuc0V2ZW50IG1vZGlmaWVyRmxhZ3NdKTsKKyAgICAgICAgbVdpbmRvdy0+cHVzaEV2
ZW50KGV2ZW50KTsKKyAgICB9CisKKyAgICAvLyBNb2RpZmllciBrZXlzIGRvIG5vdCB0cmlnZ2Vy
IGtleVVwL0Rvd24gZXZlbnRzIGJ1dCBvbmx5IGZsYWdzQ2hhbmdlZCBldmVudHMuCisgICAgLSAo
dm9pZCkgZmxhZ3NDaGFuZ2VkOiAoTlNFdmVudCopIG5zRXZlbnQKKyAgICB7CisgICAgICAgIEV2
ZW50IGV2ZW50OworCisgICAgICAgIC8vIEd1ZXNzIGlmIHRoZSBrZXkgaGFzIGJlZW4gcHJlc3Nl
ZCBvciByZWxlYXNlZCB3aXRoIHRoZSBjaGFuZ2Ugb2YgbW9kaWZpZXJzCisgICAgICAgIC8vIEl0
IGN1cnJlbnRseSBkb2Vzbid0IHdvcmsgd2hlbiBtb2RpZmllcnMgYXJlIHVuY2hhbmdlZCwgc3Vj
aCBhcyB3aGVuIHByZXNzaW5nCisgICAgICAgIC8vIGJvdGggc2hpZnQga2V5cy4gR0xGVyBoYXMg
YSBzb2x1dGlvbiBmb3IgdGhpcyBidXQgaXQgcmVxdWlyZXMgdHJhY2tpbmcgdGhlCisgICAgICAg
IC8vIHN0YXRlIG9mIHRoZSBrZXlzLiBJbXBsZW1lbnRpbmcgdGhpcyBpcyBzdGlsbCBUT0RPKGN3
YWxsZXopCisgICAgICAgIGludCBtb2RpZmllciA9IFtuc0V2ZW50IG1vZGlmaWVyRmxhZ3NdICYg
TlNEZXZpY2VJbmRlcGVuZGVudE1vZGlmaWVyRmxhZ3NNYXNrOworICAgICAgICBpZiAobW9kaWZp
ZXIgPCBtQ3VycmVudE1vZGlmaWVyKQorICAgICAgICB7CisgICAgICAgICAgICBldmVudC5UeXBl
ID0gRXZlbnQ6OkVWRU5UX0tFWV9SRUxFQVNFRDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGV2ZW50LlR5cGUgPSBFdmVudDo6RVZFTlRfS0VZX1BSRVNT
RUQ7CisgICAgICAgIH0KKyAgICAgICAgbUN1cnJlbnRNb2RpZmllciA9IG1vZGlmaWVyOworCisg
ICAgICAgIGV2ZW50LktleS5Db2RlID0gTlNDb2RlVG9LZXkoW25zRXZlbnQga2V5Q29kZV0pOwor
ICAgICAgICBBZGROU0tleVN0YXRlVG9FdmVudCgmZXZlbnQsIFtuc0V2ZW50IG1vZGlmaWVyRmxh
Z3NdKTsKKyAgICAgICAgbVdpbmRvdy0+cHVzaEV2ZW50KGV2ZW50KTsKKyAgICB9CitAZW5kCisK
K09TWFdpbmRvdzo6T1NYV2luZG93KCkKKyAgICA6IG1XaW5kb3cobmlsKSwKKyAgICAgIG1EZWxl
Z2F0ZShuaWwpLAorICAgICAgbVZpZXcobmlsKQoreworfQorCitPU1hXaW5kb3c6On5PU1hXaW5k
b3coKQoreworICAgIGRlc3Ryb3koKTsKK30KKworYm9vbCBPU1hXaW5kb3c6OmluaXRpYWxpemUo
Y29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCkKK3sK
KyAgICBpZiAoIUluaXRpYWxpemVBcHBLaXQoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBpbnQgc3R5bGVNYXNrID0gTlNUaXRsZWRXaW5kb3dN
YXNrIHwgTlNDbG9zYWJsZVdpbmRvd01hc2sgfCBOU1Jlc2l6YWJsZVdpbmRvd01hc2sgfAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOU01pbmlhdHVyaXphYmxlV2luZG93TWFzazsKKyAg
ICBtV2luZG93ID0gW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDogTlNNYWtl
UmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3R5bGVNYXNrOiBzdHlsZU1hc2sKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYmFja2luZzogTlNCYWNraW5nU3RvcmVCdWZmZXJlZAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVyOiBOT107CisK
KyAgICBpZiAobVdpbmRvdyA9PSBuaWwpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgbURlbGVnYXRlID0gW1tXaW5kb3dEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhX
aW5kb3c6IHRoaXNdOworICAgIGlmIChtRGVsZWdhdGUgPT0gbmlsKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBbbVdpbmRvdyBzZXREZWxlZ2F0ZTogc3RhdGljX2Nh
c3Q8aWQ+KG1EZWxlZ2F0ZSldOworCisgICAgbVZpZXcgPSBbW0NvbnRlbnRWaWV3IGFsbG9jXSBp
bml0V2l0aFdpbmRvdzogdGhpc107CisgICAgaWYgKG1WaWV3ID09IG5pbCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgW21WaWV3IHNldFdhbnRzTGF5ZXI6WUVTXTsK
KworICAgIFttV2luZG93IHNldENvbnRlbnRWaWV3OiBtVmlld107CisgICAgW21XaW5kb3cgc2V0
VGl0bGU6IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzogbmFtZS5jX3N0cigpXV07Cisg
ICAgW21XaW5kb3cgc2V0QWNjZXB0c01vdXNlTW92ZWRFdmVudHM6IFlFU107CisgICAgW21XaW5k
b3cgY2VudGVyXTsKKworICAgIFtOU0FwcCBhY3RpdmF0ZUlnbm9yaW5nT3RoZXJBcHBzOiBZRVNd
OworCisgICAgbVggPSAwOworICAgIG1ZID0gMDsKKyAgICBtV2lkdGggPSB3aWR0aDsKKyAgICBt
SGVpZ2h0ID0gaGVpZ2h0OworCisgICAgZ0FsbFdpbmRvd3MuaW5zZXJ0KHRoaXMpOworICAgIHJl
dHVybiB0cnVlOworfQorCit2b2lkIE9TWFdpbmRvdzo6ZGVzdHJveSgpCit7CisgICAgZ0FsbFdp
bmRvd3MuZXJhc2UodGhpcyk7CisKKyAgICBbbVZpZXcgcmVsZWFzZV07CisgICAgbVZpZXcgPSBu
aWw7CisgICAgW21EZWxlZ2F0ZSBvbk9TWFdpbmRvd0RlbGV0ZWRdOworICAgIFttRGVsZWdhdGUg
cmVsZWFzZV07CisgICAgbURlbGVnYXRlID0gbmlsOworICAgIFttV2luZG93IHJlbGVhc2VdOwor
ICAgIG1XaW5kb3cgPSBuaWw7Cit9CisKK0VHTE5hdGl2ZVdpbmRvd1R5cGUgT1NYV2luZG93Ojpn
ZXROYXRpdmVXaW5kb3coKSBjb25zdAoreworICAgIHJldHVybiBbbVZpZXcgbGF5ZXJdOworfQor
CitFR0xOYXRpdmVEaXNwbGF5VHlwZSBPU1hXaW5kb3c6OmdldE5hdGl2ZURpc3BsYXkoKSBjb25z
dAoreworICAgIC8vIFRPRE8oY3dhbGxleik6IGltcGxlbWVudCBpdCBvbmNlIHdlIGhhdmUgZGVm
aW5lZCB3aGF0IEVHTE5hdGl2ZURpc3BsYXlUeXBlIGlzCisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEVHTE5hdGl2ZURpc3BsYXlUeXBlPigwKTsKK30KKwordm9pZCBPU1hXaW5kb3c6Om1lc3NhZ2VM
b29wKCkKK3sKKyAgICBAYXV0b3JlbGVhc2Vwb29sCisgICAgeworICAgICAgICB3aGlsZSAodHJ1
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgTlNFdmVudCogZXZlbnQgPSBbTlNBcHAgbmV4dEV2
ZW50TWF0Y2hpbmdNYXNrOiBOU0FueUV2ZW50TWFzaworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW50aWxEYXRlOiBbTlNEYXRlIGRpc3RhbnRQYXN0XQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5Nb2Rl
OiBOU0RlZmF1bHRSdW5Mb29wTW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXF1ZXVlOiBZRVNdOworICAgICAgICAgICAgaWYgKGV2ZW50ID09
IG5pbCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIFtOU0FwcCBzZW5kRXZlbnQ6IGV2ZW50XTsKKyAgICAgICAgfQorICAg
IH0KK30KKwordm9pZCBPU1hXaW5kb3c6OnNldE1vdXNlUG9zaXRpb24oaW50IHgsIGludCB5KQor
eworICAgIHkgPSBbbVdpbmRvdyBmcmFtZV0uc2l6ZS5oZWlnaHQgLSB5IC0xOworICAgIE5TUG9p
bnQgc2NyZWVuc3BhY2U7CisKKyAgICAjaWYgTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
PCBNQUNfT1NfWF9WRVJTSU9OXzEwXzcKKyAgICAgICAgc2NyZWVuc3BhY2UgPSBbbVdpbmRvdyBj
b252ZXJ0QmFzZVRvU2NyZWVuOiBOU01ha2VQb2ludCh4LCB5KV07CisgICAgI2Vsc2UKKyAgICAg
ICAgc2NyZWVuc3BhY2UgPSBbbVdpbmRvdyBjb252ZXJ0UmVjdFRvU2NyZWVuOiBOU01ha2VSZWN0
KHgsIHksIDAsIDApXS5vcmlnaW47CisgICAgI2VuZGlmCisgICAgQ0dXYXJwTW91c2VDdXJzb3JQ
b3NpdGlvbihDR1BvaW50TWFrZShzY3JlZW5zcGFjZS54LCBZQ29vcmRUb0Zyb21DRyhzY3JlZW5z
cGFjZS55KSkpOworfQorCitib29sIE9TWFdpbmRvdzo6c2V0UG9zaXRpb24oaW50IHgsIGludCB5
KQoreworICAgIC8vIEdpdmVuIENHIGFuZCBOUydzIGNvb3JkaW5hdGUgc3lzdGVtLCB0aGUgIlki
IHBvc2l0aW9uIG9mIGEgd2luZG93IGlzIHRoZSBZIGNvb3JkaW5hdGUKKyAgICAvLyBvZiB0aGUg
Ym90dG9tIG9mIHRoZSB3aW5kb3cuCisgICAgaW50IG5ld0JvdHRvbSA9IFttV2luZG93IGZyYW1l
XS5zaXplLmhlaWdodCArIHk7CisgICAgTlNSZWN0IGVtcHR5UmVjdCA9IE5TTWFrZVJlY3QoeCwg
WUNvb3JkVG9Gcm9tQ0cobmV3Qm90dG9tKSwgMCwgMCk7CisgICAgW21XaW5kb3cgc2V0RnJhbWVP
cmlnaW46IFttV2luZG93IGZyYW1lUmVjdEZvckNvbnRlbnRSZWN0OiBlbXB0eVJlY3RdLm9yaWdp
bl07CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgT1NYV2luZG93OjpyZXNpemUoaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIFttV2luZG93IHNldENvbnRlbnRTaXplOiBOU01ha2VT
aXplKHdpZHRoLCBoZWlnaHQpXTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBPU1hXaW5k
b3c6OnNldFZpc2libGUoYm9vbCBpc1Zpc2libGUpCit7CisgICAgaWYgKGlzVmlzaWJsZSkKKyAg
ICB7CisgICAgICAgIFttV2luZG93IG1ha2VLZXlBbmRPcmRlckZyb250OiBuaWxdOworICAgIH0K
KyAgICBlbHNlCisgICAgeworICAgICAgICBbbVdpbmRvdyBvcmRlck91dDogbmlsXTsKKyAgICB9
Cit9CisKK3ZvaWQgT1NYV2luZG93OjpzaWduYWxUZXN0RXZlbnQoKQoreworICAgIEBhdXRvcmVs
ZWFzZXBvb2wKKyAgICB7CisgICAgICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TRXZlbnQgb3RoZXJF
dmVudFdpdGhUeXBlOiBOU0FwcGxpY2F0aW9uRGVmaW5lZAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjogTlNNYWtlUG9pbnQoMCwgMCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6IDAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IDAuMAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd051bWJlcjogW21XaW5k
b3cgd2luZG93TnVtYmVyXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dDogbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdWJ0eXBlOiAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGExOiAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGEyOiAwXTsKKyAgICAgICAgW05TQXBwIHBvc3RFdmVudDogZXZlbnQgYXRT
dGFydDogWUVTXTsKKyAgICB9Cit9CisKK05TV2luZG93KiBPU1hXaW5kb3c6OmdldE5TV2luZG93
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVdpbmRvdzsKK30KKworT1NXaW5kb3cgKkNyZWF0ZU9T
V2luZG93KCkKK3sKKyAgICByZXR1cm4gbmV3IE9TWFdpbmRvdzsKK30KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3V0aWwvb3N4L09TWF9zeXN0ZW1fdXRpbHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvb3N4L09TWF9zeXN0ZW1fdXRpbHMuY3Bw
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvb3N4L09TWF9z
eXN0ZW1fdXRpbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjcgQEAKKy8vCisvLyBD
b3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisvLworCisvLyBPU1hfc3lzdGVtX3V0aWxzLmNwcDogSW1wbGVtZW50YXRpb24gb2YgT1Mtc3Bl
Y2lmaWMgZnVuY3Rpb25zIGZvciBPU1gKKworI2luY2x1ZGUgInN5c3RlbV91dGlscy5oIgorCisj
aW5jbHVkZSA8Y3N0ZGxpYj4KKyNpbmNsdWRlIDxtYWNoLW8vZHlsZC5oPgorI2luY2x1ZGUgPHZl
Y3Rvcj4KKworbmFtZXNwYWNlIGFuZ2xlCit7CisKK25hbWVzcGFjZQoreworCitzdGQ6OnN0cmlu
ZyBHZXRFeGVjdXRhYmxlUGF0aEltcGwoKQoreworICAgIHN0ZDo6c3RyaW5nIHJlc3VsdDsKKwor
ICAgIHVpbnQzMl90IHNpemUgPSAwOworICAgIF9OU0dldEV4ZWN1dGFibGVQYXRoKG51bGxwdHIs
ICZzaXplKTsKKworICAgIHN0ZDo6dmVjdG9yPGNoYXI+IGJ1ZmZlcjsKKyAgICBidWZmZXIucmVz
aXplKHNpemUgKyAxKTsKKworICAgIF9OU0dldEV4ZWN1dGFibGVQYXRoKGJ1ZmZlci5kYXRhKCks
ICZzaXplKTsKKyAgICBidWZmZXJbc2l6ZV0gPSAnXDAnOworCisgICAgaWYgKCFzdHJyY2hyKGJ1
ZmZlci5kYXRhKCksICcvJykpCisgICAgeworICAgICAgICByZXR1cm4gIiI7CisgICAgfQorICAg
IHJldHVybiBidWZmZXIuZGF0YSgpOworfQorCitzdGQ6OnN0cmluZyBHZXRFeGVjdXRhYmxlRGly
ZWN0b3J5SW1wbCgpCit7CisgICAgc3RkOjpzdHJpbmcgZXhlY3V0YWJsZVBhdGggPSBHZXRFeGVj
dXRhYmxlUGF0aCgpOworICAgIHNpemVfdCBsYXN0UGF0aFNlcExvYyA9IGV4ZWN1dGFibGVQYXRo
LmZpbmRfbGFzdF9vZigiLyIpOworICAgIHJldHVybiAobGFzdFBhdGhTZXBMb2MgIT0gc3RkOjpz
dHJpbmc6Om5wb3MpID8gZXhlY3V0YWJsZVBhdGguc3Vic3RyKDAsIGxhc3RQYXRoU2VwTG9jKSA6
ICIiOworfQorCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK2NvbnN0IGNoYXIgKkdldEV4
ZWN1dGFibGVQYXRoKCkKK3sKKyAgICBjb25zdCBzdGF0aWMgc3RkOjpzdHJpbmcgJmV4ZVBhdGgg
PSBHZXRFeGVjdXRhYmxlUGF0aEltcGwoKTsKKyAgICByZXR1cm4gZXhlUGF0aC5jX3N0cigpOwor
fQorCitjb25zdCBjaGFyICpHZXRFeGVjdXRhYmxlRGlyZWN0b3J5KCkKK3sKKyAgICBjb25zdCBz
dGF0aWMgc3RkOjpzdHJpbmcgJmV4ZURpciA9IEdldEV4ZWN1dGFibGVEaXJlY3RvcnlJbXBsKCk7
CisgICAgcmV0dXJuIGV4ZURpci5jX3N0cigpOworfQorCitjb25zdCBjaGFyICpHZXRTaGFyZWRM
aWJyYXJ5RXh0ZW5zaW9uKCkKK3sKKyAgICByZXR1cm4gImR5bGliIjsKK30KKworfSAvLyBuYW1l
c3BhY2UgYW5nbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvb3pvbmUvT3pv
bmVQaXhtYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwv
b3pvbmUvT3pvbmVQaXhtYXAuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3V0aWwvb3pvbmUvT3pvbmVQaXhtYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTIgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAiT1NQaXhtYXAuaCIKKworT1NQaXht
YXAgKkNyZWF0ZU9TUGl4bWFwKCkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvb3pvbmUvT3pvbmVXaW5kb3cuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvb3pvbmUvT3pvbmVXaW5kb3cuY3Bw
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvb3pvbmUvT3pv
bmVXaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODIgQEAKKy8vCisvLyBDb3B5
cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworCisvLyBPem9uZVdpbmRvdy5jcHA6IEltcGxlbWVudGF0aW9uIG9mIE9TV2luZG93IGZvciBP
em9uZQorCisjaW5jbHVkZSAib3pvbmUvT3pvbmVXaW5kb3cuaCIKKworaW50IE96b25lV2luZG93
OjpzTGFzdERlcHRoID0gMDsKKworT3pvbmVXaW5kb3c6Ok96b25lV2luZG93KCkKK3sKK30KKwor
T3pvbmVXaW5kb3c6On5Pem9uZVdpbmRvdygpCit7Cit9CisKK2Jvb2wgT3pvbmVXaW5kb3c6Omlu
aXRpYWxpemUoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhl
aWdodCkKK3sKKyAgICBtTmF0aXZlLnggPSBtWCA9IDA7CisgICAgbU5hdGl2ZS55ID0gbVkgPSAw
OworICAgIG1OYXRpdmUud2lkdGggPSBtV2lkdGggPSB3aWR0aDsKKyAgICBtTmF0aXZlLmhlaWdo
dCA9IG1IZWlnaHQgPSBoZWlnaHQ7CisgICAgbU5hdGl2ZS5ib3JkZXJXaWR0aCAgPSA1OworICAg
IG1OYXRpdmUuYm9yZGVySGVpZ2h0ID0gNTsKKyAgICBtTmF0aXZlLnZpc2libGUgICAgICA9IDA7
CisgICAgbU5hdGl2ZS5kZXB0aCAgICAgICAgPSBzTGFzdERlcHRoKys7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3ZvaWQgT3pvbmVXaW5kb3c6OmRlc3Ryb3koKQoreworfQorCitFR0xOYXRpdmVX
aW5kb3dUeXBlIE96b25lV2luZG93OjpnZXROYXRpdmVXaW5kb3coKSBjb25zdAoreworICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PEVHTE5hdGl2ZVdpbmRvd1R5cGU+KCZtTmF0aXZlKTsKK30K
KworRUdMTmF0aXZlRGlzcGxheVR5cGUgT3pvbmVXaW5kb3c6OmdldE5hdGl2ZURpc3BsYXkoKSBj
b25zdAoreworICAgIHJldHVybiBFR0xfREVGQVVMVF9ESVNQTEFZOworfQorCit2b2lkIE96b25l
V2luZG93OjptZXNzYWdlTG9vcCgpCit7Cit9CisKK3ZvaWQgT3pvbmVXaW5kb3c6OnNldE1vdXNl
UG9zaXRpb24oaW50IHgsIGludCB5KQoreworfQorCitib29sIE96b25lV2luZG93OjpzZXRQb3Np
dGlvbihpbnQgeCwgaW50IHkpCit7CisgICAgbU5hdGl2ZS54ID0gbVggPSB4OworICAgIG1OYXRp
dmUueSA9IG1ZID0geTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBPem9uZVdpbmRvdzo6
cmVzaXplKGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICBtTmF0aXZlLndpZHRoID0gbVdp
ZHRoID0gd2lkdGg7CisgICAgbU5hdGl2ZS5oZWlnaHQgPSBtSGVpZ2h0ID0gaGVpZ2h0OworICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIE96b25lV2luZG93OjpzZXRWaXNpYmxlKGJvb2wgaXNW
aXNpYmxlKQoreworICAgIG1OYXRpdmUudmlzaWJsZSA9IGlzVmlzaWJsZTsKK30KKwordm9pZCBP
em9uZVdpbmRvdzo6c2lnbmFsVGVzdEV2ZW50KCkKK3sKK30KKworT1NXaW5kb3cgKkNyZWF0ZU9T
V2luZG93KCkKK3sKKyAgICByZXR1cm4gbmV3IE96b25lV2luZG93KCk7Cit9CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL296b25lL096b25lV2luZG93LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9vem9uZS9Pem9uZVdpbmRvdy5oCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvb3pvbmUvT3pvbmVXaW5k
b3cuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU0IEBACisvLworLy8gQ29weXJpZ2h0IChj
KSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8g
T3pvbmVXaW5kb3cuaDogRGVmaW5pdGlvbiBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgT1NXaW5k
b3cgZm9yIE96b25lCisKKyNpZm5kZWYgVVRJTF9PWk9ORV9XSU5ET1dfSAorI2RlZmluZSBVVElM
X09aT05FX1dJTkRPV19ICisKKyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJPU1dpbmRv
dy5oIgorCitjbGFzcyBPem9uZVdpbmRvdyA6IHB1YmxpYyBPU1dpbmRvdworeworICBwdWJsaWM6
CisgICAgT3pvbmVXaW5kb3coKTsKKyAgICB+T3pvbmVXaW5kb3coKTsKKworICAgIGJvb2wgaW5p
dGlhbGl6ZShjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSwgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVp
Z2h0KSBvdmVycmlkZTsKKyAgICB2b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsKKworICAgIEVHTE5h
dGl2ZVdpbmRvd1R5cGUgZ2V0TmF0aXZlV2luZG93KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRUdM
TmF0aXZlRGlzcGxheVR5cGUgZ2V0TmF0aXZlRGlzcGxheSgpIGNvbnN0IG92ZXJyaWRlOworCisg
ICAgdm9pZCBtZXNzYWdlTG9vcCgpIG92ZXJyaWRlOworCisgICAgdm9pZCBzZXRNb3VzZVBvc2l0
aW9uKGludCB4LCBpbnQgeSkgb3ZlcnJpZGU7CisgICAgYm9vbCBzZXRQb3NpdGlvbihpbnQgeCwg
aW50IHkpIG92ZXJyaWRlOworICAgIGJvb2wgcmVzaXplKGludCB3aWR0aCwgaW50IGhlaWdodCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wgaXNWaXNpYmxlKSBvdmVycmlkZTsK
KworICAgIHZvaWQgc2lnbmFsVGVzdEV2ZW50KCkgb3ZlcnJpZGU7CisKKyAgcHJpdmF0ZToKKyAg
ICBzdHJ1Y3QgTmF0aXZlCisgICAgeworICAgICAgICBpbnQzMl90IHg7CisgICAgICAgIGludDMy
X3QgeTsKKyAgICAgICAgaW50MzJfdCB3aWR0aDsKKyAgICAgICAgaW50MzJfdCBoZWlnaHQ7Cisg
ICAgICAgIGludDMyX3QgYm9yZGVyV2lkdGg7CisgICAgICAgIGludDMyX3QgYm9yZGVySGVpZ2h0
OworICAgICAgICBpbnQzMl90IHZpc2libGU7CisgICAgICAgIGludDMyX3QgZGVwdGg7CisgICAg
fTsKKworICAgIE5hdGl2ZSBtTmF0aXZlOworICAgIHN0YXRpYyBpbnQgc0xhc3REZXB0aDsKK307
CisKKyNlbmRpZiAgLy8gVVRJTF9PWk9ORV9XSU5ET1dfSApJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvdXRpbC9wb3NpeC9Qb3NpeF9zeXN0ZW1fdXRpbHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvcG9zaXgvUG9zaXhfc3lzdGVtX3V0aWxzLmNw
cAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3Bvc2l4L1Bv
c2l4X3N5c3RlbV91dGlscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MSBAQAorLy8K
Ky8vIENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vCisKKy8vIFBvc2l4X3N5c3RlbV91dGlscy5jcHA6IEltcGxlbWVudGF0aW9uIG9m
IE9TLXNwZWNpZmljIGZ1bmN0aW9ucyBmb3IgUG9zaXggc3lzdGVtcworCisjaW5jbHVkZSAic3lz
dGVtX3V0aWxzLmgiCisKKyNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KKyNpbmNsdWRlIDxkbGZj
bi5oPgorI2luY2x1ZGUgPHNjaGVkLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHVu
aXN0ZC5oPgorCituYW1lc3BhY2UgYW5nbGUKK3sKKwordm9pZCBTbGVlcCh1bnNpZ25lZCBpbnQg
bWlsbGlzZWNvbmRzKQoreworICAgIC8vIE9uIFdpbmRvd3MgU2xlZXAoMCkgeWllbGRzIHdoaWxl
IGl0IGlzbid0IGd1YXJhbnRlZWQgYnkgUG9zaXgncyBzbGVlcAorICAgIC8vIHNvIHdlIHJlcGxp
Y2F0ZSBXaW5kb3dzJyBiZWhhdmlvciB3aXRoIGFuIGV4cGxpY2l0IHlpZWxkLgorICAgIGlmICht
aWxsaXNlY29uZHMgPT0gMCkKKyAgICB7CisgICAgICAgIHNjaGVkX3lpZWxkKCk7CisgICAgfQor
ICAgIGVsc2UKKyAgICB7CisgICAgICAgIHRpbWVzcGVjIHNsZWVwVGltZSA9CisgICAgICAgIHsK
KyAgICAgICAgICAgIC50dl9zZWMgPSBtaWxsaXNlY29uZHMgLyAxMDAwLAorICAgICAgICAgICAg
LnR2X25zZWMgPSAobWlsbGlzZWNvbmRzICUgMTAwMCkgKiAxMDAwMDAwLAorICAgICAgICB9Owor
CisgICAgICAgIG5hbm9zbGVlcCgmc2xlZXBUaW1lLCBudWxscHRyKTsKKyAgICB9Cit9CisKK3Zv
aWQgU2V0TG93UHJpb3JpdHlQcm9jZXNzKCkKK3sKKyAgICBzZXRwcmlvcml0eShQUklPX1BST0NF
U1MsIGdldHBpZCgpLCAxMCk7Cit9CisKK3ZvaWQgV3JpdGVEZWJ1Z01lc3NhZ2UoY29uc3QgY2hh
ciAqZm9ybWF0LCAuLi4pCit7CisgICAgLy8gVE9ETyhqbWFkaWxsKTogSW1wbGVtZW50IHRoaXMK
K30KKworY2xhc3MgUG9zaXhMaWJyYXJ5IDogcHVibGljIExpYnJhcnkKK3sKKyAgcHVibGljOgor
ICAgIFBvc2l4TGlicmFyeShjb25zdCBzdGQ6OnN0cmluZyAmbGlicmFyeU5hbWUpOworICAgIH5Q
b3NpeExpYnJhcnkoKSBvdmVycmlkZTsKKworICAgIHZvaWQgKmdldFN5bWJvbChjb25zdCBzdGQ6
OnN0cmluZyAmc3ltYm9sTmFtZSkgb3ZlcnJpZGU7CisKKyAgcHJpdmF0ZToKKyAgICB2b2lkICpt
TW9kdWxlOworfTsKKworUG9zaXhMaWJyYXJ5OjpQb3NpeExpYnJhcnkoY29uc3Qgc3RkOjpzdHJp
bmcgJmxpYnJhcnlOYW1lKSA6IG1Nb2R1bGUobnVsbHB0cikKK3sKKyAgICBjb25zdCBhdXRvICZm
dWxsTmFtZSA9IGxpYnJhcnlOYW1lICsgIi4iICsgR2V0U2hhcmVkTGlicmFyeUV4dGVuc2lvbigp
OworICAgIG1Nb2R1bGUgICAgICAgICAgICAgID0gZGxvcGVuKGZ1bGxOYW1lLmNfc3RyKCksIFJU
TERfTk9XKTsKK30KKworUG9zaXhMaWJyYXJ5Ojp+UG9zaXhMaWJyYXJ5KCkKK3sKKyAgICBpZiAo
bU1vZHVsZSkKKyAgICB7CisgICAgICAgIGRsY2xvc2UobU1vZHVsZSk7CisgICAgfQorfQorCit2
b2lkICpQb3NpeExpYnJhcnk6OmdldFN5bWJvbChjb25zdCBzdGQ6OnN0cmluZyAmc3ltYm9sTmFt
ZSkKK3sKKyAgICBpZiAoIW1Nb2R1bGUpCisgICAgeworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisKKyAgICByZXR1cm4gZGxzeW0obU1vZHVsZSwgc3ltYm9sTmFtZS5jX3N0cigpKTsK
K30KKworTGlicmFyeSAqbG9hZExpYnJhcnkoY29uc3Qgc3RkOjpzdHJpbmcgJmxpYnJhcnlOYW1l
KQoreworICAgIHJldHVybiBuZXcgUG9zaXhMaWJyYXJ5KGxpYnJhcnlOYW1lKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgYW5nbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvd2lu
MzIvV2luMzJUaW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
dXRpbC93aW4zMi9XaW4zMlRpbWVyLmNwcAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvdXRpbC93aW4zMi9XaW4zMlRpbWVyLmNwcAkobm9uZXhpc3RlbnQpCkBA
IC0xLDU4ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAid2luMzIvV2luMzJUaW1l
ci5oIgotCi1XaW4zMlRpbWVyOjpXaW4zMlRpbWVyKCkKLSAgICA6IG1SdW5uaW5nKGZhbHNlKSwK
LSAgICAgIG1TdGFydFRpbWUoMCksCi0gICAgICBtU3RvcFRpbWUoMCkKLXsKLX0KLQotdm9pZCBX
aW4zMlRpbWVyOjpzdGFydCgpCi17Ci0gICAgTEFSR0VfSU5URUdFUiBmcmVxdWVuY3k7Ci0gICAg
UXVlcnlQZXJmb3JtYW5jZUZyZXF1ZW5jeSgmZnJlcXVlbmN5KTsKLSAgICBtRnJlcXVlbmN5ID0g
ZnJlcXVlbmN5LlF1YWRQYXJ0OwotCi0gICAgTEFSR0VfSU5URUdFUiBjdXJUaW1lOwotICAgIFF1
ZXJ5UGVyZm9ybWFuY2VDb3VudGVyKCZjdXJUaW1lKTsKLSAgICBtU3RhcnRUaW1lID0gY3VyVGlt
ZS5RdWFkUGFydDsKLQotICAgIG1SdW5uaW5nID0gdHJ1ZTsKLX0KLQotdm9pZCBXaW4zMlRpbWVy
OjpzdG9wKCkKLXsKLSAgICBMQVJHRV9JTlRFR0VSIGN1clRpbWU7Ci0gICAgUXVlcnlQZXJmb3Jt
YW5jZUNvdW50ZXIoJmN1clRpbWUpOwotICAgIG1TdG9wVGltZSA9IGN1clRpbWUuUXVhZFBhcnQ7
Ci0KLSAgICBtUnVubmluZyA9IGZhbHNlOwotfQotCi1kb3VibGUgV2luMzJUaW1lcjo6Z2V0RWxh
cHNlZFRpbWUoKSBjb25zdAotewotICAgIExPTkdMT05HIGVuZFRpbWU7Ci0gICAgaWYgKG1SdW5u
aW5nKQotICAgIHsKLSAgICAgICAgTEFSR0VfSU5URUdFUiBjdXJUaW1lOwotICAgICAgICBRdWVy
eVBlcmZvcm1hbmNlQ291bnRlcigmY3VyVGltZSk7Ci0gICAgICAgIGVuZFRpbWUgPSBjdXJUaW1l
LlF1YWRQYXJ0OwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBlbmRUaW1lID0gbVN0
b3BUaW1lOwotICAgIH0KLQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KGVuZFRpbWUg
LSBtU3RhcnRUaW1lKSAvIG1GcmVxdWVuY3k7Ci19Ci0KLVRpbWVyICpDcmVhdGVUaW1lcigpCi17
Ci0gICAgcmV0dXJuIG5ldyBXaW4zMlRpbWVyKCk7Ci19CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS91dGlsL3dpbjMyL1dpbjMyVGltZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS91dGlsL3dpbjMyL1dpbjMyVGltZXIuaAkocmV2aXNpb24gMjA3ODA0KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC93aW4zMi9XaW4zMlRpbWVyLmgJKG5vbmV4
aXN0ZW50KQpAQCAtMSwzMCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2lmbmRlZiBTQU1QTEVf
VVRJTF9XSU4zMl9USU1FUl9ICi0jZGVmaW5lIFNBTVBMRV9VVElMX1dJTjMyX1RJTUVSX0gKLQot
I2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8d2luZG93cy5oPgotCi1jbGFzcyBXaW4zMlRp
bWVyIDogcHVibGljIFRpbWVyCi17Ci0gIHB1YmxpYzoKLSAgICBXaW4zMlRpbWVyKCk7Ci0KLSAg
ICB2b2lkIHN0YXJ0KCk7Ci0gICAgdm9pZCBzdG9wKCk7Ci0gICAgZG91YmxlIGdldEVsYXBzZWRU
aW1lKCkgY29uc3QgOwotCi0gIHByaXZhdGU6Ci0gICAgYm9vbCBtUnVubmluZzsKLSAgICBMT05H
TE9ORyBtU3RhcnRUaW1lOwotICAgIExPTkdMT05HIG1TdG9wVGltZTsKLQotICAgIExPTkdMT05H
IG1GcmVxdWVuY3k7Ci19OwotCi0jZW5kaWYgLy8gU0FNUExFX1VUSUxfV0lOMzJfVElNRVJfSApJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC93aW4zMi9XaW4zMldpbmRvdy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC93aW4zMi9XaW4zMldp
bmRvdy5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0
aWwvd2luMzIvV2luMzJXaW5kb3cuY3BwCShub25leGlzdGVudCkKQEAgLTEsNTk5ICswLDAgQEAK
LS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAid2luMzIvV2luMzJXaW5kb3cuaCIKLQotI2luY2x1
ZGUgPHNzdHJlYW0+Ci0KLUtleSBWaXJ0dWFsS2V5Q29kZVRvS2V5KFdQQVJBTSBrZXksIExQQVJB
TSBmbGFncykKLXsKLSAgICBzd2l0Y2ggKGtleSkKLSAgICB7Ci0gICAgICAgIC8vIENoZWNrIHRo
ZSBzY2FuY29kZSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIGxlZnQgYW5kIHJpZ2h0IHNoaWZ0Ci0g
ICAgICBjYXNlIFZLX1NISUZUOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgdW5zaWdu
ZWQgaW50IGxTaGlmdCA9IE1hcFZpcnR1YWxLZXkoVktfTFNISUZULCBNQVBWS19WS19UT19WU0Mp
OwotICAgICAgICAgICAgdW5zaWduZWQgaW50IHNjYW5jb2RlID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgaW50PigoZmxhZ3MgJiAoMHhGRiA8PCAxNikpID4+IDE2KTsKLSAgICAgICAgICAgIHJldHVy
biBzY2FuY29kZSA9PSBsU2hpZnQgPyBLRVlfTFNISUZUIDogS0VZX1JTSElGVDsKLSAgICAgICAg
fQotCi0gICAgICAgIC8vIENoZWNrIHRoZSAiZXh0ZW5kZWQiIGZsYWcgdG8gZGlzdGluZ3Vpc2gg
YmV0d2VlbiBsZWZ0IGFuZCByaWdodCBhbHQKLSAgICAgIGNhc2UgVktfTUVOVTogICAgICAgcmV0
dXJuIChISVdPUkQoZmxhZ3MpICYgS0ZfRVhURU5ERUQpID8gS0VZX1JBTFQgOiBLRVlfTEFMVDsK
LQotICAgICAgICAvLyBDaGVjayB0aGUgImV4dGVuZGVkIiBmbGFnIHRvIGRpc3Rpbmd1aXNoIGJl
dHdlZW4gbGVmdCBhbmQgcmlnaHQgY29udHJvbAotICAgICAgY2FzZSBWS19DT05UUk9MOiAgICBy
ZXR1cm4gKEhJV09SRChmbGFncykgJiBLRl9FWFRFTkRFRCkgPyBLRVlfUkNPTlRST0wgOiBLRVlf
TENPTlRST0w7Ci0KLSAgICAgICAgLy8gT3RoZXIga2V5cyBhcmUgcmVwb3J0ZWQgcHJvcGVybHkK
LSAgICAgIGNhc2UgVktfTFdJTjogICAgICAgcmV0dXJuIEtFWV9MU1lTVEVNOwotICAgICAgY2Fz
ZSBWS19SV0lOOiAgICAgICByZXR1cm4gS0VZX1JTWVNURU07Ci0gICAgICBjYXNlIFZLX0FQUFM6
ICAgICAgIHJldHVybiBLRVlfTUVOVTsKLSAgICAgIGNhc2UgVktfT0VNXzE6ICAgICAgcmV0dXJu
IEtFWV9TRU1JQ09MT047Ci0gICAgICBjYXNlIFZLX09FTV8yOiAgICAgIHJldHVybiBLRVlfU0xB
U0g7Ci0gICAgICBjYXNlIFZLX09FTV9QTFVTOiAgIHJldHVybiBLRVlfRVFVQUw7Ci0gICAgICBj
YXNlIFZLX09FTV9NSU5VUzogIHJldHVybiBLRVlfREFTSDsKLSAgICAgIGNhc2UgVktfT0VNXzQ6
ICAgICAgcmV0dXJuIEtFWV9MQlJBQ0tFVDsKLSAgICAgIGNhc2UgVktfT0VNXzY6ICAgICAgcmV0
dXJuIEtFWV9SQlJBQ0tFVDsKLSAgICAgIGNhc2UgVktfT0VNX0NPTU1BOiAgcmV0dXJuIEtFWV9D
T01NQTsKLSAgICAgIGNhc2UgVktfT0VNX1BFUklPRDogcmV0dXJuIEtFWV9QRVJJT0Q7Ci0gICAg
ICBjYXNlIFZLX09FTV83OiAgICAgIHJldHVybiBLRVlfUVVPVEU7Ci0gICAgICBjYXNlIFZLX09F
TV81OiAgICAgIHJldHVybiBLRVlfQkFDS1NMQVNIOwotICAgICAgY2FzZSBWS19PRU1fMzogICAg
ICByZXR1cm4gS0VZX1RJTERFOwotICAgICAgY2FzZSBWS19FU0NBUEU6ICAgICByZXR1cm4gS0VZ
X0VTQ0FQRTsKLSAgICAgIGNhc2UgVktfU1BBQ0U6ICAgICAgcmV0dXJuIEtFWV9TUEFDRTsKLSAg
ICAgIGNhc2UgVktfUkVUVVJOOiAgICAgcmV0dXJuIEtFWV9SRVRVUk47Ci0gICAgICBjYXNlIFZL
X0JBQ0s6ICAgICAgIHJldHVybiBLRVlfQkFDSzsKLSAgICAgIGNhc2UgVktfVEFCOiAgICAgICAg
cmV0dXJuIEtFWV9UQUI7Ci0gICAgICBjYXNlIFZLX1BSSU9SOiAgICAgIHJldHVybiBLRVlfUEFH
RVVQOwotICAgICAgY2FzZSBWS19ORVhUOiAgICAgICByZXR1cm4gS0VZX1BBR0VET1dOOwotICAg
ICAgY2FzZSBWS19FTkQ6ICAgICAgICByZXR1cm4gS0VZX0VORDsKLSAgICAgIGNhc2UgVktfSE9N
RTogICAgICAgcmV0dXJuIEtFWV9IT01FOwotICAgICAgY2FzZSBWS19JTlNFUlQ6ICAgICByZXR1
cm4gS0VZX0lOU0VSVDsKLSAgICAgIGNhc2UgVktfREVMRVRFOiAgICAgcmV0dXJuIEtFWV9ERUxF
VEU7Ci0gICAgICBjYXNlIFZLX0FERDogICAgICAgIHJldHVybiBLRVlfQUREOwotICAgICAgY2Fz
ZSBWS19TVUJUUkFDVDogICByZXR1cm4gS0VZX1NVQlRSQUNUOwotICAgICAgY2FzZSBWS19NVUxU
SVBMWTogICByZXR1cm4gS0VZX01VTFRJUExZOwotICAgICAgY2FzZSBWS19ESVZJREU6ICAgICBy
ZXR1cm4gS0VZX0RJVklERTsKLSAgICAgIGNhc2UgVktfUEFVU0U6ICAgICAgcmV0dXJuIEtFWV9Q
QVVTRTsKLSAgICAgIGNhc2UgVktfRjE6ICAgICAgICAgcmV0dXJuIEtFWV9GMTsKLSAgICAgIGNh
c2UgVktfRjI6ICAgICAgICAgcmV0dXJuIEtFWV9GMjsKLSAgICAgIGNhc2UgVktfRjM6ICAgICAg
ICAgcmV0dXJuIEtFWV9GMzsKLSAgICAgIGNhc2UgVktfRjQ6ICAgICAgICAgcmV0dXJuIEtFWV9G
NDsKLSAgICAgIGNhc2UgVktfRjU6ICAgICAgICAgcmV0dXJuIEtFWV9GNTsKLSAgICAgIGNhc2Ug
VktfRjY6ICAgICAgICAgcmV0dXJuIEtFWV9GNjsKLSAgICAgIGNhc2UgVktfRjc6ICAgICAgICAg
cmV0dXJuIEtFWV9GNzsKLSAgICAgIGNhc2UgVktfRjg6ICAgICAgICAgcmV0dXJuIEtFWV9GODsK
LSAgICAgIGNhc2UgVktfRjk6ICAgICAgICAgcmV0dXJuIEtFWV9GOTsKLSAgICAgIGNhc2UgVktf
RjEwOiAgICAgICAgcmV0dXJuIEtFWV9GMTA7Ci0gICAgICBjYXNlIFZLX0YxMTogICAgICAgIHJl
dHVybiBLRVlfRjExOwotICAgICAgY2FzZSBWS19GMTI6ICAgICAgICByZXR1cm4gS0VZX0YxMjsK
LSAgICAgIGNhc2UgVktfRjEzOiAgICAgICAgcmV0dXJuIEtFWV9GMTM7Ci0gICAgICBjYXNlIFZL
X0YxNDogICAgICAgIHJldHVybiBLRVlfRjE0OwotICAgICAgY2FzZSBWS19GMTU6ICAgICAgICBy
ZXR1cm4gS0VZX0YxNTsKLSAgICAgIGNhc2UgVktfTEVGVDogICAgICAgcmV0dXJuIEtFWV9MRUZU
OwotICAgICAgY2FzZSBWS19SSUdIVDogICAgICByZXR1cm4gS0VZX1JJR0hUOwotICAgICAgY2Fz
ZSBWS19VUDogICAgICAgICByZXR1cm4gS0VZX1VQOwotICAgICAgY2FzZSBWS19ET1dOOiAgICAg
ICByZXR1cm4gS0VZX0RPV047Ci0gICAgICBjYXNlIFZLX05VTVBBRDA6ICAgIHJldHVybiBLRVlf
TlVNUEFEMDsKLSAgICAgIGNhc2UgVktfTlVNUEFEMTogICAgcmV0dXJuIEtFWV9OVU1QQUQxOwot
ICAgICAgY2FzZSBWS19OVU1QQUQyOiAgICByZXR1cm4gS0VZX05VTVBBRDI7Ci0gICAgICBjYXNl
IFZLX05VTVBBRDM6ICAgIHJldHVybiBLRVlfTlVNUEFEMzsKLSAgICAgIGNhc2UgVktfTlVNUEFE
NDogICAgcmV0dXJuIEtFWV9OVU1QQUQ0OwotICAgICAgY2FzZSBWS19OVU1QQUQ1OiAgICByZXR1
cm4gS0VZX05VTVBBRDU7Ci0gICAgICBjYXNlIFZLX05VTVBBRDY6ICAgIHJldHVybiBLRVlfTlVN
UEFENjsKLSAgICAgIGNhc2UgVktfTlVNUEFENzogICAgcmV0dXJuIEtFWV9OVU1QQUQ3OwotICAg
ICAgY2FzZSBWS19OVU1QQUQ4OiAgICByZXR1cm4gS0VZX05VTVBBRDg7Ci0gICAgICBjYXNlIFZL
X05VTVBBRDk6ICAgIHJldHVybiBLRVlfTlVNUEFEOTsKLSAgICAgIGNhc2UgJ0EnOiAgICAgICAg
ICAgcmV0dXJuIEtFWV9BOwotICAgICAgY2FzZSAnWic6ICAgICAgICAgICByZXR1cm4gS0VZX1o7
Ci0gICAgICBjYXNlICdFJzogICAgICAgICAgIHJldHVybiBLRVlfRTsKLSAgICAgIGNhc2UgJ1In
OiAgICAgICAgICAgcmV0dXJuIEtFWV9SOwotICAgICAgY2FzZSAnVCc6ICAgICAgICAgICByZXR1
cm4gS0VZX1Q7Ci0gICAgICBjYXNlICdZJzogICAgICAgICAgIHJldHVybiBLRVlfWTsKLSAgICAg
IGNhc2UgJ1UnOiAgICAgICAgICAgcmV0dXJuIEtFWV9VOwotICAgICAgY2FzZSAnSSc6ICAgICAg
ICAgICByZXR1cm4gS0VZX0k7Ci0gICAgICBjYXNlICdPJzogICAgICAgICAgIHJldHVybiBLRVlf
TzsKLSAgICAgIGNhc2UgJ1AnOiAgICAgICAgICAgcmV0dXJuIEtFWV9QOwotICAgICAgY2FzZSAn
USc6ICAgICAgICAgICByZXR1cm4gS0VZX1E7Ci0gICAgICBjYXNlICdTJzogICAgICAgICAgIHJl
dHVybiBLRVlfUzsKLSAgICAgIGNhc2UgJ0QnOiAgICAgICAgICAgcmV0dXJuIEtFWV9EOwotICAg
ICAgY2FzZSAnRic6ICAgICAgICAgICByZXR1cm4gS0VZX0Y7Ci0gICAgICBjYXNlICdHJzogICAg
ICAgICAgIHJldHVybiBLRVlfRzsKLSAgICAgIGNhc2UgJ0gnOiAgICAgICAgICAgcmV0dXJuIEtF
WV9IOwotICAgICAgY2FzZSAnSic6ICAgICAgICAgICByZXR1cm4gS0VZX0o7Ci0gICAgICBjYXNl
ICdLJzogICAgICAgICAgIHJldHVybiBLRVlfSzsKLSAgICAgIGNhc2UgJ0wnOiAgICAgICAgICAg
cmV0dXJuIEtFWV9MOwotICAgICAgY2FzZSAnTSc6ICAgICAgICAgICByZXR1cm4gS0VZX007Ci0g
ICAgICBjYXNlICdXJzogICAgICAgICAgIHJldHVybiBLRVlfVzsKLSAgICAgIGNhc2UgJ1gnOiAg
ICAgICAgICAgcmV0dXJuIEtFWV9YOwotICAgICAgY2FzZSAnQyc6ICAgICAgICAgICByZXR1cm4g
S0VZX0M7Ci0gICAgICBjYXNlICdWJzogICAgICAgICAgIHJldHVybiBLRVlfVjsKLSAgICAgIGNh
c2UgJ0InOiAgICAgICAgICAgcmV0dXJuIEtFWV9COwotICAgICAgY2FzZSAnTic6ICAgICAgICAg
ICByZXR1cm4gS0VZX047Ci0gICAgICBjYXNlICcwJzogICAgICAgICAgIHJldHVybiBLRVlfTlVN
MDsKLSAgICAgIGNhc2UgJzEnOiAgICAgICAgICAgcmV0dXJuIEtFWV9OVU0xOwotICAgICAgY2Fz
ZSAnMic6ICAgICAgICAgICByZXR1cm4gS0VZX05VTTI7Ci0gICAgICBjYXNlICczJzogICAgICAg
ICAgIHJldHVybiBLRVlfTlVNMzsKLSAgICAgIGNhc2UgJzQnOiAgICAgICAgICAgcmV0dXJuIEtF
WV9OVU00OwotICAgICAgY2FzZSAnNSc6ICAgICAgICAgICByZXR1cm4gS0VZX05VTTU7Ci0gICAg
ICBjYXNlICc2JzogICAgICAgICAgIHJldHVybiBLRVlfTlVNNjsKLSAgICAgIGNhc2UgJzcnOiAg
ICAgICAgICAgcmV0dXJuIEtFWV9OVU03OwotICAgICAgY2FzZSAnOCc6ICAgICAgICAgICByZXR1
cm4gS0VZX05VTTg7Ci0gICAgICBjYXNlICc5JzogICAgICAgICAgIHJldHVybiBLRVlfTlVNOTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gS2V5KDApOwotfQotCi1MUkVTVUxUIENBTExCQUNLIFduZFBy
b2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0p
Ci17Ci0gICAgc3dpdGNoKG1lc3NhZ2UpCi0gICAgewotICAgICAgY2FzZSBXTV9OQ0NSRUFURToK
LSAgICAgICAgewotICAgICAgICAgICAgTFBDUkVBVEVTVFJVQ1QgcENyZWF0ZVN0cnVjdCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8TFBDUkVBVEVTVFJVQ1Q+KGxQYXJhbSk7Ci0gICAgICAgICAgICBTZXRX
aW5kb3dMb25nUHRyKGhXbmQsIEdXTFBfVVNFUkRBVEEsIHJlaW50ZXJwcmV0X2Nhc3Q8TE9OR19Q
VFI+KHBDcmVhdGVTdHJ1Y3QtPmxwQ3JlYXRlUGFyYW1zKSk7Ci0gICAgICAgICAgICByZXR1cm4g
RGVmV2luZG93UHJvY0EoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgV2luMzJXaW5kb3cgKndpbmRvdyA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2lu
MzJXaW5kb3cqPihHZXRXaW5kb3dMb25nUHRyKGhXbmQsIEdXTFBfVVNFUkRBVEEpKTsKLSAgICBp
ZiAod2luZG93KQotICAgIHsKLSAgICAgICAgc3dpdGNoIChtZXNzYWdlKQotICAgICAgICB7Ci0g
ICAgICAgICAgY2FzZSBXTV9ERVNUUk9ZOgotICAgICAgICAgIGNhc2UgV01fQ0xPU0U6Ci0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgRXZlbnQgZXZlbnQ7Ci0gICAgICAgICAgICAgICAg
ZXZlbnQuVHlwZSA9IEV2ZW50OjpFVkVOVF9DTE9TRUQ7Ci0gICAgICAgICAgICAgICAgd2luZG93
LT5wdXNoRXZlbnQoZXZlbnQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgY2FzZSBXTV9NT1ZFOgotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIFJFQ1Qgd2luUmVjdDsKLSAgICAgICAgICAgICAgICBHZXRDbGllbnRSZWN0KGhXbmQsICZ3
aW5SZWN0KTsKLQotICAgICAgICAgICAgICAgIFBPSU5UIHRvcExlZnQ7Ci0gICAgICAgICAgICAg
ICAgdG9wTGVmdC54ID0gd2luUmVjdC5sZWZ0OwotICAgICAgICAgICAgICAgIHRvcExlZnQueSA9
IHdpblJlY3QudG9wOwotICAgICAgICAgICAgICAgIENsaWVudFRvU2NyZWVuKGhXbmQsICZ0b3BM
ZWZ0KTsKLQotICAgICAgICAgICAgICAgIEV2ZW50IGV2ZW50OwotICAgICAgICAgICAgICAgIGV2
ZW50LlR5cGUgICAgICAgID0gRXZlbnQ6OkVWRU5UX01PVkVEOwotICAgICAgICAgICAgICAgIGV2
ZW50Lk1vdmUuWCAgICAgID0gdG9wTGVmdC54OwotICAgICAgICAgICAgICAgIGV2ZW50Lk1vdmUu
WSAgICAgID0gdG9wTGVmdC55OwotICAgICAgICAgICAgICAgIHdpbmRvdy0+cHVzaEV2ZW50KGV2
ZW50KTsKLQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgY2FzZSBXTV9TSVpFOgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFJFQ1Qgd2lu
UmVjdDsKLSAgICAgICAgICAgICAgICBHZXRDbGllbnRSZWN0KGhXbmQsICZ3aW5SZWN0KTsKLQot
ICAgICAgICAgICAgICAgIFBPSU5UIHRvcExlZnQ7Ci0gICAgICAgICAgICAgICAgdG9wTGVmdC54
ID0gd2luUmVjdC5sZWZ0OwotICAgICAgICAgICAgICAgIHRvcExlZnQueSA9IHdpblJlY3QudG9w
OwotICAgICAgICAgICAgICAgIENsaWVudFRvU2NyZWVuKGhXbmQsICZ0b3BMZWZ0KTsKLQotICAg
ICAgICAgICAgICAgIFBPSU5UIGJvdFJpZ2h0OwotICAgICAgICAgICAgICAgIGJvdFJpZ2h0Lngg
PSB3aW5SZWN0LnJpZ2h0OwotICAgICAgICAgICAgICAgIGJvdFJpZ2h0LnkgPSB3aW5SZWN0LmJv
dHRvbTsKLSAgICAgICAgICAgICAgICBDbGllbnRUb1NjcmVlbihoV25kLCAmYm90UmlnaHQpOwot
Ci0gICAgICAgICAgICAgICAgRXZlbnQgZXZlbnQ7Ci0gICAgICAgICAgICAgICAgZXZlbnQuVHlw
ZSAgICAgICAgPSBFdmVudDo6RVZFTlRfUkVTSVpFRDsKLSAgICAgICAgICAgICAgICBldmVudC5T
aXplLldpZHRoICA9IGJvdFJpZ2h0LnggLSB0b3BMZWZ0Lng7Ci0gICAgICAgICAgICAgICAgZXZl
bnQuU2l6ZS5IZWlnaHQgPSBib3RSaWdodC55IC0gdG9wTGVmdC55OwotICAgICAgICAgICAgICAg
IHdpbmRvdy0+cHVzaEV2ZW50KGV2ZW50KTsKLQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgY2FzZSBXTV9TRVRGT0NVUzoKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBFdmVudCBldmVudDsKLSAgICAgICAgICAgICAgICBldmVudC5UeXBl
ID0gRXZlbnQ6OkVWRU5UX0dBSU5FRF9GT0NVUzsKLSAgICAgICAgICAgICAgICB3aW5kb3ctPnB1
c2hFdmVudChldmVudCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICBjYXNlIFdNX0tJTExGT0NVUzoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBFdmVudCBldmVudDsKLSAgICAgICAgICAgICAgICBldmVudC5UeXBlID0gRXZlbnQ6OkVW
RU5UX0xPU1RfRk9DVVM7Ci0gICAgICAgICAgICAgICAgd2luZG93LT5wdXNoRXZlbnQoZXZlbnQp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgY2Fz
ZSBXTV9LRVlET1dOOgotICAgICAgICAgIGNhc2UgV01fU1lTS0VZRE9XTjoKLSAgICAgICAgICBj
YXNlIFdNX0tFWVVQOgotICAgICAgICAgIGNhc2UgV01fU1lTS0VZVVA6Ci0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgYm9vbCBkb3duID0gKG1lc3NhZ2UgPT0gV01fS0VZRE9XTiB8fCBt
ZXNzYWdlID09IFdNX1NZU0tFWURPV04pOwotCi0gICAgICAgICAgICAgICAgRXZlbnQgZXZlbnQ7
Ci0gICAgICAgICAgICAgICAgZXZlbnQuVHlwZSAgICAgICAgPSBkb3duID8gRXZlbnQ6OkVWRU5U
X0tFWV9QUkVTU0VEIDogRXZlbnQ6OkVWRU5UX0tFWV9SRUxFQVNFRDsKLSAgICAgICAgICAgICAg
ICBldmVudC5LZXkuQWx0ICAgICA9IEhJV09SRChHZXRBc3luY0tleVN0YXRlKFZLX01FTlUpKSAg
ICAhPSAwOwotICAgICAgICAgICAgICAgIGV2ZW50LktleS5Db250cm9sID0gSElXT1JEKEdldEFz
eW5jS2V5U3RhdGUoVktfQ09OVFJPTCkpICE9IDA7Ci0gICAgICAgICAgICAgICAgZXZlbnQuS2V5
LlNoaWZ0ICAgPSBISVdPUkQoR2V0QXN5bmNLZXlTdGF0ZShWS19TSElGVCkpICAgIT0gMDsKLSAg
ICAgICAgICAgICAgICBldmVudC5LZXkuU3lzdGVtICA9IEhJV09SRChHZXRBc3luY0tleVN0YXRl
KFZLX0xXSU4pKSB8fCBISVdPUkQoR2V0QXN5bmNLZXlTdGF0ZShWS19SV0lOKSk7Ci0gICAgICAg
ICAgICAgICAgZXZlbnQuS2V5LkNvZGUgICAgPSBWaXJ0dWFsS2V5Q29kZVRvS2V5KHdQYXJhbSwg
bFBhcmFtKTsKLSAgICAgICAgICAgICAgICB3aW5kb3ctPnB1c2hFdmVudChldmVudCk7Ci0KLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgIGNhc2UgV01f
TU9VU0VXSEVFTDoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBFdmVudCBldmVudDsK
LSAgICAgICAgICAgICAgICBldmVudC5UeXBlID0gRXZlbnQ6OkVWRU5UX01PVVNFX1dIRUVMX01P
VkVEOwotICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNlV2hlZWwuRGVsdGEgPSBzdGF0aWNfY2Fz
dDxzaG9ydD4oSElXT1JEKHdQYXJhbSkpIC8gMTIwOwotICAgICAgICAgICAgICAgIHdpbmRvdy0+
cHVzaEV2ZW50KGV2ZW50KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgIGNhc2UgV01fTEJVVFRPTkRPV046Ci0gICAgICAgICAgY2FzZSBXTV9MQlVU
VE9OREJMQ0xLOgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEV2ZW50IGV2ZW50Owot
ICAgICAgICAgICAgICAgIGV2ZW50LlR5cGUgICAgICAgICAgICAgICA9IEV2ZW50OjpFVkVOVF9N
T1VTRV9CVVRUT05fUFJFU1NFRDsKLSAgICAgICAgICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5C
dXR0b24gPSBNT1VTRUJVVFRPTl9MRUZUOwotICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNlQnV0
dG9uLlggICAgICA9IHN0YXRpY19jYXN0PHNob3J0PihMT1dPUkQobFBhcmFtKSk7Ci0gICAgICAg
ICAgICAgICAgZXZlbnQuTW91c2VCdXR0b24uWSAgICAgID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KEhJ
V09SRChsUGFyYW0pKTsKLSAgICAgICAgICAgICAgICB3aW5kb3ctPnB1c2hFdmVudChldmVudCk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICBjYXNl
IFdNX0xCVVRUT05VUDoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBFdmVudCBldmVu
dDsKLSAgICAgICAgICAgICAgICBldmVudC5UeXBlICAgICAgICAgICAgICAgPSBFdmVudDo6RVZF
TlRfTU9VU0VfQlVUVE9OX1JFTEVBU0VEOwotICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNlQnV0
dG9uLkJ1dHRvbiA9IE1PVVNFQlVUVE9OX0xFRlQ7Ci0gICAgICAgICAgICAgICAgZXZlbnQuTW91
c2VCdXR0b24uWCAgICAgID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KExPV09SRChsUGFyYW0pKTsKLSAg
ICAgICAgICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5ZICAgICAgPSBzdGF0aWNfY2FzdDxzaG9y
dD4oSElXT1JEKGxQYXJhbSkpOwotICAgICAgICAgICAgICAgIHdpbmRvdy0+cHVzaEV2ZW50KGV2
ZW50KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
IGNhc2UgV01fUkJVVFRPTkRPV046Ci0gICAgICAgICAgY2FzZSBXTV9SQlVUVE9OREJMQ0xLOgot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEV2ZW50IGV2ZW50OwotICAgICAgICAgICAg
ICAgIGV2ZW50LlR5cGUgICAgICAgICAgICAgICA9IEV2ZW50OjpFVkVOVF9NT1VTRV9CVVRUT05f
UFJFU1NFRDsKLSAgICAgICAgICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5CdXR0b24gPSBNT1VT
RUJVVFRPTl9SSUdIVDsKLSAgICAgICAgICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5YICAgICAg
PSBzdGF0aWNfY2FzdDxzaG9ydD4oTE9XT1JEKGxQYXJhbSkpOwotICAgICAgICAgICAgICAgIGV2
ZW50Lk1vdXNlQnV0dG9uLlkgICAgICA9IHN0YXRpY19jYXN0PHNob3J0PihISVdPUkQobFBhcmFt
KSk7Ci0gICAgICAgICAgICAgICAgd2luZG93LT5wdXNoRXZlbnQoZXZlbnQpOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBNb3VzZSByaWdo
dCBidXR0b24gdXAgZXZlbnQKLSAgICAgICAgICBjYXNlIFdNX1JCVVRUT05VUDoKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBFdmVudCBldmVudDsKLSAgICAgICAgICAgICAgICBldmVu
dC5UeXBlICAgICAgICAgICAgICAgPSBFdmVudDo6RVZFTlRfTU9VU0VfQlVUVE9OX1JFTEVBU0VE
OwotICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNlQnV0dG9uLkJ1dHRvbiA9IE1PVVNFQlVUVE9O
X1JJR0hUOwotICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNlQnV0dG9uLlggICAgICA9IHN0YXRp
Y19jYXN0PHNob3J0PihMT1dPUkQobFBhcmFtKSk7Ci0gICAgICAgICAgICAgICAgZXZlbnQuTW91
c2VCdXR0b24uWSAgICAgID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KEhJV09SRChsUGFyYW0pKTsKLSAg
ICAgICAgICAgICAgICB3aW5kb3ctPnB1c2hFdmVudChldmVudCk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIE1vdXNlIHdoZWVsIGJ1dHRv
biBkb3duIGV2ZW50Ci0gICAgICAgICAgY2FzZSBXTV9NQlVUVE9ORE9XTjoKLSAgICAgICAgICBj
YXNlIFdNX01CVVRUT05EQkxDTEs6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgRXZl
bnQgZXZlbnQ7Ci0gICAgICAgICAgICAgICAgZXZlbnQuVHlwZSAgICAgICAgICAgICAgID0gRXZl
bnQ6OkVWRU5UX01PVVNFX0JVVFRPTl9QUkVTU0VEOwotICAgICAgICAgICAgICAgIGV2ZW50Lk1v
dXNlQnV0dG9uLkJ1dHRvbiA9IE1PVVNFQlVUVE9OX01JRERMRTsKLSAgICAgICAgICAgICAgICBl
dmVudC5Nb3VzZUJ1dHRvbi5YICAgICAgPSBzdGF0aWNfY2FzdDxzaG9ydD4oTE9XT1JEKGxQYXJh
bSkpOwotICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNlQnV0dG9uLlkgICAgICA9IHN0YXRpY19j
YXN0PHNob3J0PihISVdPUkQobFBhcmFtKSk7Ci0gICAgICAgICAgICAgICAgd2luZG93LT5wdXNo
RXZlbnQoZXZlbnQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAvLyBNb3VzZSB3aGVlbCBidXR0b24gdXAgZXZlbnQKLSAgICAgICAgICBjYXNl
IFdNX01CVVRUT05VUDoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBFdmVudCBldmVu
dDsKLSAgICAgICAgICAgICAgICBldmVudC5UeXBlICAgICAgICAgICAgICAgPSBFdmVudDo6RVZF
TlRfTU9VU0VfQlVUVE9OX1JFTEVBU0VEOwotICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNlQnV0
dG9uLkJ1dHRvbiA9IE1PVVNFQlVUVE9OX01JRERMRTsKLSAgICAgICAgICAgICAgICBldmVudC5N
b3VzZUJ1dHRvbi5YICAgICAgPSBzdGF0aWNfY2FzdDxzaG9ydD4oTE9XT1JEKGxQYXJhbSkpOwot
ICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNlQnV0dG9uLlkgICAgICA9IHN0YXRpY19jYXN0PHNo
b3J0PihISVdPUkQobFBhcmFtKSk7Ci0gICAgICAgICAgICAgICAgd2luZG93LT5wdXNoRXZlbnQo
ZXZlbnQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAvLyBNb3VzZSBYIGJ1dHRvbiBkb3duIGV2ZW50Ci0gICAgICAgICAgY2FzZSBXTV9YQlVU
VE9ORE9XTjoKLSAgICAgICAgICBjYXNlIFdNX1hCVVRUT05EQkxDTEs6Ci0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgRXZlbnQgZXZlbnQ7Ci0gICAgICAgICAgICAgICAgZXZlbnQuVHlw
ZSAgICAgICAgICAgICAgID0gRXZlbnQ6OkVWRU5UX01PVVNFX0JVVFRPTl9QUkVTU0VEOwotICAg
ICAgICAgICAgICAgIGV2ZW50Lk1vdXNlQnV0dG9uLkJ1dHRvbiA9IChISVdPUkQod1BhcmFtKSA9
PSBYQlVUVE9OMSkgPyBNT1VTRUJVVFRPTl9CVVRUT040IDogTU9VU0VCVVRUT05fQlVUVE9ONTsK
LSAgICAgICAgICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5YICAgICAgPSBzdGF0aWNfY2FzdDxz
aG9ydD4oTE9XT1JEKGxQYXJhbSkpOwotICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNlQnV0dG9u
LlkgICAgICA9IHN0YXRpY19jYXN0PHNob3J0PihISVdPUkQobFBhcmFtKSk7Ci0gICAgICAgICAg
ICAgICAgd2luZG93LT5wdXNoRXZlbnQoZXZlbnQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBNb3VzZSBYIGJ1dHRvbiB1cCBldmVudAot
ICAgICAgICAgIGNhc2UgV01fWEJVVFRPTlVQOgotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIEV2ZW50IGV2ZW50OwotICAgICAgICAgICAgICAgIGV2ZW50LlR5cGUgICAgICAgICAgICAg
ICA9IEV2ZW50OjpFVkVOVF9NT1VTRV9CVVRUT05fUkVMRUFTRUQ7Ci0gICAgICAgICAgICAgICAg
ZXZlbnQuTW91c2VCdXR0b24uQnV0dG9uID0gKEhJV09SRCh3UGFyYW0pID09IFhCVVRUT04xKSA/
IE1PVVNFQlVUVE9OX0JVVFRPTjQgOiBNT1VTRUJVVFRPTl9CVVRUT041OwotICAgICAgICAgICAg
ICAgIGV2ZW50Lk1vdXNlQnV0dG9uLlggICAgICA9IHN0YXRpY19jYXN0PHNob3J0PihMT1dPUkQo
bFBhcmFtKSk7Ci0gICAgICAgICAgICAgICAgZXZlbnQuTW91c2VCdXR0b24uWSAgICAgID0gc3Rh
dGljX2Nhc3Q8c2hvcnQ+KEhJV09SRChsUGFyYW0pKTsKLSAgICAgICAgICAgICAgICB3aW5kb3ct
PnB1c2hFdmVudChldmVudCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICBjYXNlIFdNX01PVVNFTU9WRToKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBpbnQgbW91c2VYID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KExPV09SRChsUGFyYW0pKTsK
LSAgICAgICAgICAgICAgICBpbnQgbW91c2VZID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KEhJV09SRChs
UGFyYW0pKTsKLQotICAgICAgICAgICAgICAgIEV2ZW50IGV2ZW50OwotICAgICAgICAgICAgICAg
IGV2ZW50LlR5cGUgICAgICAgID0gRXZlbnQ6OkVWRU5UX01PVVNFX01PVkVEOwotICAgICAgICAg
ICAgICAgIGV2ZW50Lk1vdXNlTW92ZS5YID0gbW91c2VYOwotICAgICAgICAgICAgICAgIGV2ZW50
Lk1vdXNlTW92ZS5ZID0gbW91c2VZOwotICAgICAgICAgICAgICAgIHdpbmRvdy0+cHVzaEV2ZW50
KGV2ZW50KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgIGNhc2UgV01fTU9VU0VMRUFWRToKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBF
dmVudCBldmVudDsKLSAgICAgICAgICAgICAgICBldmVudC5UeXBlID0gRXZlbnQ6OkVWRU5UX01P
VVNFX0xFRlQ7Ci0gICAgICAgICAgICAgICAgd2luZG93LT5wdXNoRXZlbnQoZXZlbnQpOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgY2FzZSBXTV9V
U0VSOgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEV2ZW50IHRlc3RFdmVudDsKLSAg
ICAgICAgICAgICAgICB0ZXN0RXZlbnQuVHlwZSA9IEV2ZW50OjpFVkVOVF9URVNUOwotICAgICAg
ICAgICAgICAgIHdpbmRvdy0+cHVzaEV2ZW50KHRlc3RFdmVudCk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgIH0KLSAgICByZXR1cm4gRGVm
V2luZG93UHJvY0EoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOwotfQotCi1XaW4zMldp
bmRvdzo6V2luMzJXaW5kb3coKQotICAgIDogbU5hdGl2ZVdpbmRvdygwKSwKLSAgICAgIG1QYXJl
bnRXaW5kb3coMCksCi0gICAgICBtTmF0aXZlRGlzcGxheSgwKQotewotfQotCi1XaW4zMldpbmRv
dzo6fldpbjMyV2luZG93KCkKLXsKLSAgICBkZXN0cm95KCk7Ci19Ci0KLWJvb2wgV2luMzJXaW5k
b3c6OmluaXRpYWxpemUoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsIHNpemVfdCB3aWR0aCwgc2l6
ZV90IGhlaWdodCkKLXsKLSAgICBkZXN0cm95KCk7Ci0KLSAgICAvLyBVc2UgYSBuZXcgd2luZG93
IGNsYXNzIG5hbWUgZm9yIGV2ZXIgd2luZG93IHRvIGVuc3VyZSB0aGF0IGEgbmV3IHdpbmRvdyBj
YW4gYmUgY3JlYXRlZAotICAgIC8vIGV2ZW4gaWYgdGhlIGxhc3Qgb25lIHdhcyBub3QgcHJvcGVy
bHkgZGVzdHJveWVkCi0gICAgc3RhdGljIHNpemVfdCB3aW5kb3dJZHggPSAwOwotICAgIHN0ZDo6
b3N0cmluZ3N0cmVhbSBuYW1lU3RyZWFtOwotICAgIG5hbWVTdHJlYW0gPDwgbmFtZSA8PCAiXyIg
PDwgd2luZG93SWR4Kys7Ci0KLSAgICBtUGFyZW50Q2xhc3NOYW1lID0gbmFtZVN0cmVhbS5zdHIo
KTsKLSAgICBtQ2hpbGRDbGFzc05hbWUgPSBtUGFyZW50Q2xhc3NOYW1lICsgIl9DaGlsZCI7Ci0K
LSAgICAvLyBXb3JrIGFyb3VuZCBjb21waWxlIGVycm9yIGZyb20gbm90IGRlZmluaW5nICJVTklD
T0RFIiB3aGlsZSBDaHJvbWl1bSBkb2VzCi0gICAgY29uc3QgTFBTVFIgaWRjQXJyb3cgPSBNQUtF
SU5UUkVTT1VSQ0VBKDMyNTEyKTsKLQotICAgIFdORENMQVNTRVhBIHBhcmVudFdpbmRvd0NsYXNz
ID0geyAwIH07Ci0gICAgcGFyZW50V2luZG93Q2xhc3MuY2JTaXplID0gc2l6ZW9mKFdORENMQVNT
RVhBKTsKLSAgICBwYXJlbnRXaW5kb3dDbGFzcy5zdHlsZSA9IDA7Ci0gICAgcGFyZW50V2luZG93
Q2xhc3MubHBmblduZFByb2MgPSBXbmRQcm9jOwotICAgIHBhcmVudFdpbmRvd0NsYXNzLmNiQ2xz
RXh0cmEgPSAwOwotICAgIHBhcmVudFdpbmRvd0NsYXNzLmNiV25kRXh0cmEgPSAwOwotICAgIHBh
cmVudFdpbmRvd0NsYXNzLmhJbnN0YW5jZSA9IEdldE1vZHVsZUhhbmRsZShOVUxMKTsKLSAgICBw
YXJlbnRXaW5kb3dDbGFzcy5oSWNvbiA9IE5VTEw7Ci0gICAgcGFyZW50V2luZG93Q2xhc3MuaEN1
cnNvciA9IExvYWRDdXJzb3JBKE5VTEwsIGlkY0Fycm93KTsKLSAgICBwYXJlbnRXaW5kb3dDbGFz
cy5oYnJCYWNrZ3JvdW5kID0gMDsKLSAgICBwYXJlbnRXaW5kb3dDbGFzcy5scHN6TWVudU5hbWUg
PSBOVUxMOwotICAgIHBhcmVudFdpbmRvd0NsYXNzLmxwc3pDbGFzc05hbWUgPSBtUGFyZW50Q2xh
c3NOYW1lLmNfc3RyKCk7Ci0gICAgaWYgKCFSZWdpc3RlckNsYXNzRXhBKCZwYXJlbnRXaW5kb3dD
bGFzcykpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgV05EQ0xB
U1NFWEEgY2hpbGRXaW5kb3dDbGFzcyA9IHsgMCB9OwotICAgIGNoaWxkV2luZG93Q2xhc3MuY2JT
aXplID0gc2l6ZW9mKFdORENMQVNTRVhBKTsKLSAgICBjaGlsZFdpbmRvd0NsYXNzLnN0eWxlID0g
Q1NfT1dOREM7Ci0gICAgY2hpbGRXaW5kb3dDbGFzcy5scGZuV25kUHJvYyA9IFduZFByb2M7Ci0g
ICAgY2hpbGRXaW5kb3dDbGFzcy5jYkNsc0V4dHJhID0gMDsKLSAgICBjaGlsZFdpbmRvd0NsYXNz
LmNiV25kRXh0cmEgPSAwOwotICAgIGNoaWxkV2luZG93Q2xhc3MuaEluc3RhbmNlID0gR2V0TW9k
dWxlSGFuZGxlKE5VTEwpOwotICAgIGNoaWxkV2luZG93Q2xhc3MuaEljb24gPSBOVUxMOwotICAg
IGNoaWxkV2luZG93Q2xhc3MuaEN1cnNvciA9IExvYWRDdXJzb3JBKE5VTEwsIGlkY0Fycm93KTsK
LSAgICBjaGlsZFdpbmRvd0NsYXNzLmhickJhY2tncm91bmQgPSAwOwotICAgIGNoaWxkV2luZG93
Q2xhc3MubHBzek1lbnVOYW1lID0gTlVMTDsKLSAgICBjaGlsZFdpbmRvd0NsYXNzLmxwc3pDbGFz
c05hbWUgPSBtQ2hpbGRDbGFzc05hbWUuY19zdHIoKTsKLSAgICBpZiAoIVJlZ2lzdGVyQ2xhc3NF
eEEoJmNoaWxkV2luZG93Q2xhc3MpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLQotICAgIERXT1JEIHBhcmVudFN0eWxlID0gV1NfQ0FQVElPTiB8IFdTX1RISUNLRlJBTUUg
fCBXU19NSU5JTUlaRUJPWCB8IFdTX01BWElNSVpFQk9YIHwgV1NfU1lTTUVOVTsKLSAgICBEV09S
RCBwYXJlbnRFeHRlbmRlZFN0eWxlID0gV1NfRVhfQVBQV0lORE9XOwotCi0gICAgUkVDVCBzaXpl
UmVjdCA9IHsgMCwgMCwgd2lkdGgsIGhlaWdodCB9OwotICAgIEFkanVzdFdpbmRvd1JlY3RFeCgm
c2l6ZVJlY3QsIHBhcmVudFN0eWxlLCBGQUxTRSwgcGFyZW50RXh0ZW5kZWRTdHlsZSk7Ci0KLSAg
ICBtUGFyZW50V2luZG93ID0gQ3JlYXRlV2luZG93RXhBKHBhcmVudEV4dGVuZGVkU3R5bGUsIG1Q
YXJlbnRDbGFzc05hbWUuY19zdHIoKSwgbmFtZS5jX3N0cigpLCBwYXJlbnRTdHlsZSwgQ1dfVVNF
REVGQVVMVCwgQ1dfVVNFREVGQVVMVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVSZWN0LnJpZ2h0IC0gc2l6ZVJlY3QubGVmdCwgc2l6ZVJlY3QuYm90dG9tIC0gc2l6
ZVJlY3QudG9wLCBOVUxMLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR2V0TW9kdWxlSGFuZGxlKE5VTEwpLCB0aGlzKTsKLQotICAgIG1OYXRpdmVXaW5kb3cgPSBD
cmVhdGVXaW5kb3dFeEEoMCwgbUNoaWxkQ2xhc3NOYW1lLmNfc3RyKCksIG5hbWUuY19zdHIoKSwg
V1NfQ0hJTEQsIDAsIDAsIHdpZHRoLCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtUGFyZW50V2luZG93LCBOVUxMLCBHZXRNb2R1bGVIYW5kbGUoTlVMTCksIHRo
aXMpOwotCi0gICAgbU5hdGl2ZURpc3BsYXkgPSBHZXREQyhtTmF0aXZlV2luZG93KTsKLSAgICBp
ZiAoIW1OYXRpdmVEaXNwbGF5KQotICAgIHsKLSAgICAgICAgZGVzdHJveSgpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgV2luMzJX
aW5kb3c6OmRlc3Ryb3koKQotewotICAgIGlmIChtTmF0aXZlRGlzcGxheSkKLSAgICB7Ci0gICAg
ICAgIFJlbGVhc2VEQyhtTmF0aXZlV2luZG93LCBtTmF0aXZlRGlzcGxheSk7Ci0gICAgICAgIG1O
YXRpdmVEaXNwbGF5ID0gMDsKLSAgICB9Ci0KLSAgICBpZiAobU5hdGl2ZVdpbmRvdykKLSAgICB7
Ci0gICAgICAgIERlc3Ryb3lXaW5kb3cobU5hdGl2ZVdpbmRvdyk7Ci0gICAgICAgIG1OYXRpdmVX
aW5kb3cgPSAwOwotICAgIH0KLQotICAgIGlmIChtUGFyZW50V2luZG93KQotICAgIHsKLSAgICAg
ICAgRGVzdHJveVdpbmRvdyhtUGFyZW50V2luZG93KTsKLSAgICAgICAgbVBhcmVudFdpbmRvdyA9
IDA7Ci0gICAgfQotCi0gICAgVW5yZWdpc3RlckNsYXNzQShtUGFyZW50Q2xhc3NOYW1lLmNfc3Ry
KCksIE5VTEwpOwotICAgIFVucmVnaXN0ZXJDbGFzc0EobUNoaWxkQ2xhc3NOYW1lLmNfc3RyKCks
IE5VTEwpOwotfQotCi1FR0xOYXRpdmVXaW5kb3dUeXBlIFdpbjMyV2luZG93OjpnZXROYXRpdmVX
aW5kb3coKSBjb25zdAotewotICAgIHJldHVybiBtTmF0aXZlV2luZG93OwotfQotCi1FR0xOYXRp
dmVEaXNwbGF5VHlwZSBXaW4zMldpbmRvdzo6Z2V0TmF0aXZlRGlzcGxheSgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1OYXRpdmVEaXNwbGF5OwotfQotCi12b2lkIFdpbjMyV2luZG93OjptZXNzYWdl
TG9vcCgpCi17Ci0gICAgTVNHIG1zZzsKLSAgICB3aGlsZSAoUGVla01lc3NhZ2UoJm1zZywgTlVM
TCwgMCwgMCwgUE1fUkVNT1ZFKSkKLSAgICB7Ci0gICAgICAgIFRyYW5zbGF0ZU1lc3NhZ2UoJm1z
Zyk7Ci0gICAgICAgIERpc3BhdGNoTWVzc2FnZSgmbXNnKTsKLSAgICB9Ci19Ci0KLXZvaWQgV2lu
MzJXaW5kb3c6OnNldE1vdXNlUG9zaXRpb24oaW50IHgsIGludCB5KQotewotICAgIFJFQ1Qgd2lu
UmVjdDsKLSAgICBHZXRDbGllbnRSZWN0KG1OYXRpdmVXaW5kb3csICZ3aW5SZWN0KTsKLQotICAg
IFBPSU5UIHRvcExlZnQ7Ci0gICAgdG9wTGVmdC54ID0gd2luUmVjdC5sZWZ0OwotICAgIHRvcExl
ZnQueSA9IHdpblJlY3QudG9wOwotICAgIENsaWVudFRvU2NyZWVuKG1OYXRpdmVXaW5kb3csICZ0
b3BMZWZ0KTsKLQotICAgIFNldEN1cnNvclBvcyh0b3BMZWZ0LnggKyB4LCB0b3BMZWZ0LnkgKyB5
KTsKLX0KLQotT1NXaW5kb3cgKkNyZWF0ZU9TV2luZG93KCkKLXsKLSAgICByZXR1cm4gbmV3IFdp
bjMyV2luZG93KCk7Ci19Ci0KLWJvb2wgV2luMzJXaW5kb3c6OnNldFBvc2l0aW9uKGludCB4LCBp
bnQgeSkKLXsKLSAgICBpZiAobVggPT0geCAmJiBtWSA9PSBtWSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLQotICAgIFJFQ1Qgd2luZG93UmVjdDsKLSAgICBpZiAoIUdldFdp
bmRvd1JlY3QobVBhcmVudFdpbmRvdywgJndpbmRvd1JlY3QpKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmICghTW92ZVdpbmRvdyhtUGFyZW50V2luZG93LCB4
LCB5LCB3aW5kb3dSZWN0LnJpZ2h0IC0gd2luZG93UmVjdC5sZWZ0LCB3aW5kb3dSZWN0LmJvdHRv
bSAtIHdpbmRvd1JlY3QudG9wLCBUUlVFKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBXaW4zMldpbmRvdzo6cmVzaXpl
KGludCB3aWR0aCwgaW50IGhlaWdodCkKLXsKLSAgICBpZiAod2lkdGggPT0gbVdpZHRoICYmIGhl
aWdodCA9PSBtSGVpZ2h0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0g
ICAgUkVDVCB3aW5kb3dSZWN0OwotICAgIGlmICghR2V0V2luZG93UmVjdChtUGFyZW50V2luZG93
LCAmd2luZG93UmVjdCkpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0g
ICAgUkVDVCBjbGllbnRSZWN0OwotICAgIGlmICghR2V0Q2xpZW50UmVjdChtUGFyZW50V2luZG93
LCAmY2xpZW50UmVjdCkpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0g
ICAgTE9ORyBkaWZmWCA9ICh3aW5kb3dSZWN0LnJpZ2h0IC0gd2luZG93UmVjdC5sZWZ0KSAtIGNs
aWVudFJlY3QucmlnaHQ7Ci0gICAgTE9ORyBkaWZmWSA9ICh3aW5kb3dSZWN0LmJvdHRvbSAtIHdp
bmRvd1JlY3QudG9wKSAtIGNsaWVudFJlY3QuYm90dG9tOwotICAgIGlmICghTW92ZVdpbmRvdyht
UGFyZW50V2luZG93LCB3aW5kb3dSZWN0LmxlZnQsIHdpbmRvd1JlY3QudG9wLCB3aWR0aCArIGRp
ZmZYLCBoZWlnaHQgKyBkaWZmWSwgVFJVRSkpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCi0gICAgaWYgKCFNb3ZlV2luZG93KG1OYXRpdmVXaW5kb3csIDAsIDAsIHdpZHRo
LCBoZWlnaHQsIEZBTFNFKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBXaW4zMldpbmRvdzo6c2V0VmlzaWJsZShib29s
IGlzVmlzaWJsZSkKLXsKLSAgICBpbnQgZmxhZyA9IChpc1Zpc2libGUgPyBTV19TSE9XIDogU1df
SElERSk7Ci0KLSAgICBTaG93V2luZG93KG1QYXJlbnRXaW5kb3csIGZsYWcpOwotICAgIFNob3dX
aW5kb3cobU5hdGl2ZVdpbmRvdywgZmxhZyk7Ci19Ci0KLXZvaWQgV2luMzJXaW5kb3c6OnB1c2hF
dmVudChFdmVudCBldmVudCkKLXsKLSAgICBPU1dpbmRvdzo6cHVzaEV2ZW50KGV2ZW50KTsKLQot
ICAgIHN3aXRjaCAoZXZlbnQuVHlwZSkKLSAgICB7Ci0gICAgICBjYXNlIEV2ZW50OjpFVkVOVF9S
RVNJWkVEOgotICAgICAgICBNb3ZlV2luZG93KG1OYXRpdmVXaW5kb3csIDAsIDAsIG1XaWR0aCwg
bUhlaWdodCwgRkFMU0UpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXZvaWQgV2luMzJX
aW5kb3c6OnNpZ25hbFRlc3RFdmVudCgpCi17Ci0gICAgUG9zdE1lc3NhZ2UobU5hdGl2ZVdpbmRv
dywgV01fVVNFUiwgMCwgMCk7Ci19CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGls
L3dpbjMyL1dpbjMyV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvdXRpbC93aW4zMi9XaW4zMldpbmRvdy5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS91dGlsL3dpbjMyL1dpbjMyV2luZG93LmgJKG5vbmV4aXN0ZW50KQpA
QCAtMSw0NiArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2lmbmRlZiBTQU1QTEVfVVRJTF9XSU4z
Ml9XSU5ET1dfSAotI2RlZmluZSBTQU1QTEVfVVRJTF9XSU4zMl9XSU5ET1dfSAotCi0jaW5jbHVk
ZSAiT1NXaW5kb3cuaCIKLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8d2luZG93cy5oPgot
Ci1jbGFzcyBXaW4zMldpbmRvdyA6IHB1YmxpYyBPU1dpbmRvdwotewotICBwdWJsaWM6Ci0gICAg
V2luMzJXaW5kb3coKTsKLSAgICB+V2luMzJXaW5kb3coKTsKLQotICAgIGJvb2wgaW5pdGlhbGl6
ZShjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSwgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0KSBv
dmVycmlkZTsKLSAgICB2b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsKLQotICAgIEVHTE5hdGl2ZVdp
bmRvd1R5cGUgZ2V0TmF0aXZlV2luZG93KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgRUdMTmF0aXZl
RGlzcGxheVR5cGUgZ2V0TmF0aXZlRGlzcGxheSgpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgdm9p
ZCBtZXNzYWdlTG9vcCgpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBwdXNoRXZlbnQoRXZlbnQgZXZl
bnQpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBzZXRNb3VzZVBvc2l0aW9uKGludCB4LCBpbnQgeSkg
b3ZlcnJpZGU7Ci0gICAgYm9vbCBzZXRQb3NpdGlvbihpbnQgeCwgaW50IHkpIG92ZXJyaWRlOwot
ICAgIGJvb2wgcmVzaXplKGludCB3aWR0aCwgaW50IGhlaWdodCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBzZXRWaXNpYmxlKGJvb2wgaXNWaXNpYmxlKSBvdmVycmlkZTsKLQotICAgIHZvaWQgc2lnbmFs
VGVzdEV2ZW50KCkgb3ZlcnJpZGU7Ci0KLSAgcHJpdmF0ZToKLSAgICBzdGQ6OnN0cmluZyBtUGFy
ZW50Q2xhc3NOYW1lOwotICAgIHN0ZDo6c3RyaW5nIG1DaGlsZENsYXNzTmFtZTsKLQotICAgIEVH
TE5hdGl2ZVdpbmRvd1R5cGUgbU5hdGl2ZVdpbmRvdzsKLSAgICBFR0xOYXRpdmVXaW5kb3dUeXBl
IG1QYXJlbnRXaW5kb3c7Ci0gICAgRUdMTmF0aXZlRGlzcGxheVR5cGUgbU5hdGl2ZURpc3BsYXk7
Ci19OwotCi0jZW5kaWYgLy8gU0FNUExFX1VUSUxfV0lORE9XX0gKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3V0aWwvd2luMzIvV2luMzJfcGF0aF91dGlscy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC93aW4zMi9XaW4zMl9wYXRoX3V0aWxzLmNw
cAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC93aW4z
Mi9XaW4zMl9wYXRoX3V0aWxzLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDIzICswLDAgQEAKLS8v
Ci0vLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCi0vLwotCi0jaW5jbHVkZSAicGF0aF91dGlscy5oIgotI2luY2x1ZGUgPGFycmF5Pgot
I2luY2x1ZGUgPHdpbmRvd3MuaD4KLQotc3RkOjpzdHJpbmcgR2V0RXhlY3V0YWJsZVBhdGgoKQot
ewotICAgIHN0ZDo6YXJyYXk8Y2hhciwgTUFYX1BBVEg+IGV4ZWN1dGFibGVGaWxlQnVmOwotICAg
IERXT1JEIGV4ZWN1dGFibGVQYXRoTGVuID0gR2V0TW9kdWxlRmlsZU5hbWVBKE5VTEwsIGV4ZWN1
dGFibGVGaWxlQnVmLmRhdGEoKSwgZXhlY3V0YWJsZUZpbGVCdWYuc2l6ZSgpKTsKLSAgICByZXR1
cm4gKGV4ZWN1dGFibGVQYXRoTGVuID4gMCA/IHN0ZDo6c3RyaW5nKGV4ZWN1dGFibGVGaWxlQnVm
LmRhdGEoKSkgOiAiIik7Ci19Ci0KLXN0ZDo6c3RyaW5nIEdldEV4ZWN1dGFibGVEaXJlY3Rvcnko
KQotewotICAgIHN0ZDo6c3RyaW5nIGV4ZWN1dGFibGVQYXRoID0gR2V0RXhlY3V0YWJsZVBhdGgo
KTsKLSAgICBzaXplX3QgbGFzdFBhdGhTZXBMb2MgPSBleGVjdXRhYmxlUGF0aC5maW5kX2xhc3Rf
b2YoIlxcLyIpOwotICAgIHJldHVybiAobGFzdFBhdGhTZXBMb2MgIT0gc3RkOjpzdHJpbmc6Om5w
b3MpID8gZXhlY3V0YWJsZVBhdGguc3Vic3RyKDAsIGxhc3RQYXRoU2VwTG9jKSA6ICIiOwotfQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC93aW5kb3dzL1dpbmRvd3NUaW1lci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC93aW5kb3dzL1dp
bmRvd3NUaW1lci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
dXRpbC93aW5kb3dzL1dpbmRvd3NUaW1lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
NyBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFdpbmRvd3NUaW1lci5jcHA6IEltcGxlbWVudGF0aW9u
IG9mIGEgaGlnaCBwcmVjaXNpb24gdGltZXIgY2xhc3Mgb24gV2luZG93cworCisjaW5jbHVkZSAi
d2luZG93cy9XaW5kb3dzVGltZXIuaCIKKworV2luZG93c1RpbWVyOjpXaW5kb3dzVGltZXIoKSA6
IG1SdW5uaW5nKGZhbHNlKSwgbVN0YXJ0VGltZSgwKSwgbVN0b3BUaW1lKDApCit7Cit9CisKK3Zv
aWQgV2luZG93c1RpbWVyOjpzdGFydCgpCit7CisgICAgTEFSR0VfSU5URUdFUiBmcmVxdWVuY3k7
CisgICAgUXVlcnlQZXJmb3JtYW5jZUZyZXF1ZW5jeSgmZnJlcXVlbmN5KTsKKyAgICBtRnJlcXVl
bmN5ID0gZnJlcXVlbmN5LlF1YWRQYXJ0OworCisgICAgTEFSR0VfSU5URUdFUiBjdXJUaW1lOwor
ICAgIFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyKCZjdXJUaW1lKTsKKyAgICBtU3RhcnRUaW1lID0g
Y3VyVGltZS5RdWFkUGFydDsKKworICAgIG1SdW5uaW5nID0gdHJ1ZTsKK30KKwordm9pZCBXaW5k
b3dzVGltZXI6OnN0b3AoKQoreworICAgIExBUkdFX0lOVEVHRVIgY3VyVGltZTsKKyAgICBRdWVy
eVBlcmZvcm1hbmNlQ291bnRlcigmY3VyVGltZSk7CisgICAgbVN0b3BUaW1lID0gY3VyVGltZS5R
dWFkUGFydDsKKworICAgIG1SdW5uaW5nID0gZmFsc2U7Cit9CisKK2RvdWJsZSBXaW5kb3dzVGlt
ZXI6OmdldEVsYXBzZWRUaW1lKCkgY29uc3QKK3sKKyAgICBMT05HTE9ORyBlbmRUaW1lOworICAg
IGlmIChtUnVubmluZykKKyAgICB7CisgICAgICAgIExBUkdFX0lOVEVHRVIgY3VyVGltZTsKKyAg
ICAgICAgUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIoJmN1clRpbWUpOworICAgICAgICBlbmRUaW1l
ID0gY3VyVGltZS5RdWFkUGFydDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgZW5k
VGltZSA9IG1TdG9wVGltZTsKKyAgICB9CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91Ymxl
PihlbmRUaW1lIC0gbVN0YXJ0VGltZSkgLyBtRnJlcXVlbmN5OworfQorCitUaW1lciAqQ3JlYXRl
VGltZXIoKQoreworICAgIHJldHVybiBuZXcgV2luZG93c1RpbWVyKCk7Cit9CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3dpbmRvd3MvV2luZG93c1RpbWVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC93aW5kb3dzL1dpbmRvd3NUaW1lci5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvd2luZG93cy9X
aW5kb3dzVGltZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMzIEBACisvLworLy8gQ29w
eXJpZ2h0IChjKSAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKworLy8gV2luZG93c1RpbWVyLmg6IERlZmluaXRpb24gb2YgYSBoaWdoIHByZWNpc2lvbiB0
aW1lciBjbGFzcyBvbiBXaW5kb3dzCisKKyNpZm5kZWYgVVRJTF9XSU5ET1dTX1RJTUVSX0gKKyNk
ZWZpbmUgVVRJTF9XSU5ET1dTX1RJTUVSX0gKKworI2luY2x1ZGUgPHdpbmRvd3MuaD4KKworI2lu
Y2x1ZGUgIlRpbWVyLmgiCisKK2NsYXNzIFdpbmRvd3NUaW1lciA6IHB1YmxpYyBUaW1lcgorewor
ICBwdWJsaWM6CisgICAgV2luZG93c1RpbWVyKCk7CisKKyAgICB2b2lkIHN0YXJ0KCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CisgICAgZG91YmxlIGdldEVsYXBzZWRUaW1l
KCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgcHJpdmF0ZToKKyAgICBib29sIG1SdW5uaW5nOworICAg
IExPTkdMT05HIG1TdGFydFRpbWU7CisgICAgTE9OR0xPTkcgbVN0b3BUaW1lOworCisgICAgTE9O
R0xPTkcgbUZyZXF1ZW5jeTsKK307CisKKyNlbmRpZiAgLy8gVVRJTF9XSU5ET1dTX1RJTUVSX0gK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvd2luZG93cy9XaW5kb3dzX3N5c3Rl
bV91dGlscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC93
aW5kb3dzL1dpbmRvd3Nfc3lzdGVtX3V0aWxzLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS91dGlsL3dpbmRvd3MvV2luZG93c19zeXN0ZW1fdXRpbHMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzYgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTQg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBXaW5kb3dz
X3N5c3RlbV91dGlscy5jcHA6IEltcGxlbWVudGF0aW9uIG9mIE9TLXNwZWNpZmljIGZ1bmN0aW9u
cyBmb3IgV2luZG93cworCisjaW5jbHVkZSAic3lzdGVtX3V0aWxzLmgiCisKKyNpbmNsdWRlIDxz
dGRhcmcuaD4KKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVk
ZSA8dmVjdG9yPgorCituYW1lc3BhY2UgYW5nbGUKK3sKKworbmFtZXNwYWNlCit7CisKK3N0ZDo6
c3RyaW5nIEdldEV4ZWN1dGFibGVQYXRoSW1wbCgpCit7CisgICAgc3RkOjphcnJheTxjaGFyLCBN
QVhfUEFUSD4gZXhlY3V0YWJsZUZpbGVCdWY7CisgICAgRFdPUkQgZXhlY3V0YWJsZVBhdGhMZW4g
PSBHZXRNb2R1bGVGaWxlTmFtZUEoTlVMTCwgZXhlY3V0YWJsZUZpbGVCdWYuZGF0YSgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PERXT1JEPihleGVjdXRhYmxlRmlsZUJ1Zi5zaXplKCkpKTsKKyAgICByZXR1cm4gKGV4ZWN1dGFi
bGVQYXRoTGVuID4gMCA/IHN0ZDo6c3RyaW5nKGV4ZWN1dGFibGVGaWxlQnVmLmRhdGEoKSkgOiAi
Iik7Cit9CisKK3N0ZDo6c3RyaW5nIEdldEV4ZWN1dGFibGVEaXJlY3RvcnlJbXBsKCkKK3sKKyAg
ICBzdGQ6OnN0cmluZyBleGVjdXRhYmxlUGF0aCA9IEdldEV4ZWN1dGFibGVQYXRoKCk7CisgICAg
c2l6ZV90IGxhc3RQYXRoU2VwTG9jID0gZXhlY3V0YWJsZVBhdGguZmluZF9sYXN0X29mKCJcXC8i
KTsKKyAgICByZXR1cm4gKGxhc3RQYXRoU2VwTG9jICE9IHN0ZDo6c3RyaW5nOjpucG9zKSA/IGV4
ZWN1dGFibGVQYXRoLnN1YnN0cigwLCBsYXN0UGF0aFNlcExvYykgOiAiIjsKK30KKworfSAgLy8g
YW5vbnltb3VzIG5hbWVzcGFjZQorCitjb25zdCBjaGFyICpHZXRFeGVjdXRhYmxlUGF0aCgpCit7
CisgICAgY29uc3Qgc3RhdGljIHN0ZDo6c3RyaW5nICZleGVQYXRoID0gR2V0RXhlY3V0YWJsZVBh
dGhJbXBsKCk7CisgICAgcmV0dXJuIGV4ZVBhdGguY19zdHIoKTsKK30KKworY29uc3QgY2hhciAq
R2V0RXhlY3V0YWJsZURpcmVjdG9yeSgpCit7CisgICAgY29uc3Qgc3RhdGljIHN0ZDo6c3RyaW5n
ICZleGVEaXIgPSBHZXRFeGVjdXRhYmxlRGlyZWN0b3J5SW1wbCgpOworICAgIHJldHVybiBleGVE
aXIuY19zdHIoKTsKK30KKworY29uc3QgY2hhciAqR2V0U2hhcmVkTGlicmFyeUV4dGVuc2lvbigp
Cit7CisgICAgcmV0dXJuICJkbGwiOworfQorCit2b2lkIFNsZWVwKHVuc2lnbmVkIGludCBtaWxs
aXNlY29uZHMpCit7CisgICAgOjpTbGVlcChzdGF0aWNfY2FzdDxEV09SRD4obWlsbGlzZWNvbmRz
KSk7Cit9CisKK3ZvaWQgV3JpdGVEZWJ1Z01lc3NhZ2UoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4p
Cit7CisgICAgdmFfbGlzdCBhcmdzOworICAgIHZhX3N0YXJ0KGFyZ3MsIGZvcm1hdCk7CisgICAg
aW50IHNpemUgPSB2c25wcmludGYobnVsbHB0ciwgMCwgZm9ybWF0LCBhcmdzKTsKKyAgICB2YV9l
bmQoYXJncyk7CisKKyAgICBzdGQ6OnZlY3RvcjxjaGFyPiBidWZmZXIoc2l6ZSArIDIpOworICAg
IHZhX3N0YXJ0KGFyZ3MsIGZvcm1hdCk7CisgICAgdnNucHJpbnRmKGJ1ZmZlci5kYXRhKCksIHNp
emUgKyAxLCBmb3JtYXQsIGFyZ3MpOworICAgIHZhX2VuZChhcmdzKTsKKworICAgIE91dHB1dERl
YnVnU3RyaW5nQShidWZmZXIuZGF0YSgpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3dpbmRvd3Mvd2luMzIvV2luMzJQaXht
YXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvd2luZG93
cy93aW4zMi9XaW4zMlBpeG1hcC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvdXRpbC93aW5kb3dzL3dpbjMyL1dpbjMyUGl4bWFwLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDU5IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gV2luMzJQaXhtYXAuY3BwOiBJ
bXBsZW1lbnRhdGlvbiBvZiBPU1BpeG1hcCBmb3IgV2luMzIgKFdpbmRvd3MpCisKKyNpbmNsdWRl
ICJ3aW5kb3dzL3dpbjMyL1dpbjMyUGl4bWFwLmgiCisKK1dpbjMyUGl4bWFwOjpXaW4zMlBpeG1h
cCgpIDogbUJpdG1hcChudWxscHRyKQoreworfQorCitXaW4zMlBpeG1hcDo6fldpbjMyUGl4bWFw
KCkKK3sKKyAgICBpZiAobUJpdG1hcCkKKyAgICB7CisgICAgICAgIERlbGV0ZU9iamVjdChtQml0
bWFwKTsKKyAgICB9Cit9CisKK2Jvb2wgV2luMzJQaXhtYXA6OmluaXRpYWxpemUoRUdMTmF0aXZl
RGlzcGxheVR5cGUgZGlzcGxheSwgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBpbnQgZGVw
dGgpCit7CisgICAgQklUTUFQSU5GTyBiaXRtYXBJbmZvOworICAgIG1lbXNldCgmYml0bWFwSW5m
bywgMCwgc2l6ZW9mKGJpdG1hcEluZm8pKTsKKworICAgIGlmIChkZXB0aCAhPSAyNCAmJiBkZXB0
aCAhPSAzMikKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBiaXRt
YXBJbmZvLmJtaUhlYWRlci5iaVNpemUgICAgICAgICAgPSBzaXplb2YoYml0bWFwSW5mbyk7Cisg
ICAgYml0bWFwSW5mby5ibWlIZWFkZXIuYmlXaWR0aCAgICAgICAgID0gc3RhdGljX2Nhc3Q8TE9O
Rz4od2lkdGgpOworICAgIGJpdG1hcEluZm8uYm1pSGVhZGVyLmJpSGVpZ2h0ICAgICAgICA9IHN0
YXRpY19jYXN0PExPTkc+KGhlaWdodCk7CisgICAgYml0bWFwSW5mby5ibWlIZWFkZXIuYmlQbGFu
ZXMgICAgICAgID0gMTsKKyAgICBiaXRtYXBJbmZvLmJtaUhlYWRlci5iaUJpdENvdW50ICAgICAg
PSBzdGF0aWNfY2FzdDxXT1JEPihkZXB0aCk7CisgICAgYml0bWFwSW5mby5ibWlIZWFkZXIuYmlD
b21wcmVzc2lvbiAgID0gQklfUkdCOworICAgIGJpdG1hcEluZm8uYm1pSGVhZGVyLmJpU2l6ZUlt
YWdlICAgICA9IDA7CisgICAgYml0bWFwSW5mby5ibWlIZWFkZXIuYmlYUGVsc1Blck1ldGVyID0g
MTsKKyAgICBiaXRtYXBJbmZvLmJtaUhlYWRlci5iaVlQZWxzUGVyTWV0ZXIgPSAxOworICAgIGJp
dG1hcEluZm8uYm1pSGVhZGVyLmJpQ2xyVXNlZCAgICAgICA9IDA7CisgICAgYml0bWFwSW5mby5i
bWlIZWFkZXIuYmlDbHJJbXBvcnRhbnQgID0gMDsKKworICAgIHZvaWQgKmJpdG1hcFB0ciA9IG51
bGxwdHI7CisgICAgbUJpdG1hcCAgICAgICAgID0gQ3JlYXRlRElCU2VjdGlvbihkaXNwbGF5LCAm
Yml0bWFwSW5mbywgRElCX1JHQl9DT0xPUlMsICZiaXRtYXBQdHIsIG51bGxwdHIsIDApOworCisg
ICAgcmV0dXJuIG1CaXRtYXAgIT0gbnVsbHB0cjsKK30KKworRUdMTmF0aXZlUGl4bWFwVHlwZSBX
aW4zMlBpeG1hcDo6Z2V0TmF0aXZlUGl4bWFwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUJpdG1h
cDsKK30KKworT1NQaXhtYXAgKkNyZWF0ZU9TUGl4bWFwKCkKK3sKKyAgICByZXR1cm4gbmV3IFdp
bjMyUGl4bWFwKCk7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3dpbmRv
d3Mvd2luMzIvV2luMzJQaXhtYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS91dGlsL3dpbmRvd3Mvd2luMzIvV2luMzJQaXhtYXAuaAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3dpbmRvd3Mvd2luMzIvV2luMzJQaXhtYXAuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMwIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE1
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gV2luMzJQ
aXhtYXAuaDogRGVmaW5pdGlvbiBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgT1NQaXhtYXAgZm9y
IFdpbjMyIChXaW5kb3dzKQorCisjaWZuZGVmIFVUSUxfV0lOMzJfUElYTUFQX0hfCisjZGVmaW5l
IFVUSUxfV0lOMzJfUElYTUFQX0hfCisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisKKyNpbmNsdWRl
ICJPU1BpeG1hcC5oIgorCitjbGFzcyBXaW4zMlBpeG1hcCA6IHB1YmxpYyBPU1BpeG1hcAorewor
ICBwdWJsaWM6CisgICAgV2luMzJQaXhtYXAoKTsKKyAgICB+V2luMzJQaXhtYXAoKSBvdmVycmlk
ZTsKKworICAgIGJvb2wgaW5pdGlhbGl6ZShFR0xOYXRpdmVEaXNwbGF5VHlwZSBkaXNwbGF5LCBz
aXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIGludCBkZXB0aCkgb3ZlcnJpZGU7CisKKyAgICBF
R0xOYXRpdmVQaXhtYXBUeXBlIGdldE5hdGl2ZVBpeG1hcCgpIGNvbnN0IG92ZXJyaWRlOworCisg
IHByaXZhdGU6CisgICAgSEJJVE1BUCBtQml0bWFwOworfTsKKworI2VuZGlmICAvLyBVVElMX1dJ
TjMyX1BJWE1BUF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC93aW5kb3dz
L3dpbjMyL1dpbjMyV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS91dGlsL3dpbmRvd3Mvd2luMzIvV2luMzJXaW5kb3cuY3BwCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvd2luZG93cy93aW4zMi9XaW4zMldpbmRvdy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MzEgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMp
IDIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBX
aW4zMldpbmRvdy5jcHA6IEltcGxlbWVudGF0aW9uIG9mIE9TV2luZG93IGZvciBXaW4zMiAoV2lu
ZG93cykKKworI2luY2x1ZGUgIndpbmRvd3Mvd2luMzIvV2luMzJXaW5kb3cuaCIKKworI2luY2x1
ZGUgPHNzdHJlYW0+CisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKworS2V5IFZpcnR1YWxL
ZXlDb2RlVG9LZXkoV1BBUkFNIGtleSwgTFBBUkFNIGZsYWdzKQoreworICAgIHN3aXRjaCAoa2V5
KQorICAgIHsKKyAgICAgICAgLy8gQ2hlY2sgdGhlIHNjYW5jb2RlIHRvIGRpc3Rpbmd1aXNoIGJl
dHdlZW4gbGVmdCBhbmQgcmlnaHQgc2hpZnQKKyAgICAgICAgY2FzZSBWS19TSElGVDoKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGludCBsU2hpZnQgPSBNYXBWaXJ0dWFs
S2V5KFZLX0xTSElGVCwgTUFQVktfVktfVE9fVlNDKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCBzY2FuY29kZSAgICAgID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PigoZmxhZ3MgJiAoMHhG
RiA8PCAxNikpID4+IDE2KTsKKyAgICAgICAgICAgIHJldHVybiBzY2FuY29kZSA9PSBsU2hpZnQg
PyBLRVlfTFNISUZUIDogS0VZX1JTSElGVDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENoZWNr
IHRoZSAiZXh0ZW5kZWQiIGZsYWcgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBsZWZ0IGFuZCByaWdo
dCBhbHQKKyAgICAgICAgY2FzZSBWS19NRU5VOgorICAgICAgICAgICAgcmV0dXJuIChISVdPUkQo
ZmxhZ3MpICYgS0ZfRVhURU5ERUQpID8gS0VZX1JBTFQgOiBLRVlfTEFMVDsKKworICAgICAgICAv
LyBDaGVjayB0aGUgImV4dGVuZGVkIiBmbGFnIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gbGVmdCBh
bmQgcmlnaHQgY29udHJvbAorICAgICAgICBjYXNlIFZLX0NPTlRST0w6CisgICAgICAgICAgICBy
ZXR1cm4gKEhJV09SRChmbGFncykgJiBLRl9FWFRFTkRFRCkgPyBLRVlfUkNPTlRST0wgOiBLRVlf
TENPTlRST0w7CisKKyAgICAgICAgLy8gT3RoZXIga2V5cyBhcmUgcmVwb3J0ZWQgcHJvcGVybHkK
KyAgICAgICAgY2FzZSBWS19MV0lOOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9MU1lTVEVNOwor
ICAgICAgICBjYXNlIFZLX1JXSU46CisgICAgICAgICAgICByZXR1cm4gS0VZX1JTWVNURU07Cisg
ICAgICAgIGNhc2UgVktfQVBQUzoKKyAgICAgICAgICAgIHJldHVybiBLRVlfTUVOVTsKKyAgICAg
ICAgY2FzZSBWS19PRU1fMToKKyAgICAgICAgICAgIHJldHVybiBLRVlfU0VNSUNPTE9OOworICAg
ICAgICBjYXNlIFZLX09FTV8yOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9TTEFTSDsKKyAgICAg
ICAgY2FzZSBWS19PRU1fUExVUzoKKyAgICAgICAgICAgIHJldHVybiBLRVlfRVFVQUw7CisgICAg
ICAgIGNhc2UgVktfT0VNX01JTlVTOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9EQVNIOworICAg
ICAgICBjYXNlIFZLX09FTV80OgorICAgICAgICAgICAgcmV0dXJuIEtFWV9MQlJBQ0tFVDsKKyAg
ICAgICAgY2FzZSBWS19PRU1fNjoKKyAgICAgICAgICAgIHJldHVybiBLRVlfUkJSQUNLRVQ7Cisg
ICAgICAgIGNhc2UgVktfT0VNX0NPTU1BOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9DT01NQTsK
KyAgICAgICAgY2FzZSBWS19PRU1fUEVSSU9EOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9QRVJJ
T0Q7CisgICAgICAgIGNhc2UgVktfT0VNXzc6CisgICAgICAgICAgICByZXR1cm4gS0VZX1FVT1RF
OworICAgICAgICBjYXNlIFZLX09FTV81OgorICAgICAgICAgICAgcmV0dXJuIEtFWV9CQUNLU0xB
U0g7CisgICAgICAgIGNhc2UgVktfT0VNXzM6CisgICAgICAgICAgICByZXR1cm4gS0VZX1RJTERF
OworICAgICAgICBjYXNlIFZLX0VTQ0FQRToKKyAgICAgICAgICAgIHJldHVybiBLRVlfRVNDQVBF
OworICAgICAgICBjYXNlIFZLX1NQQUNFOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9TUEFDRTsK
KyAgICAgICAgY2FzZSBWS19SRVRVUk46CisgICAgICAgICAgICByZXR1cm4gS0VZX1JFVFVSTjsK
KyAgICAgICAgY2FzZSBWS19CQUNLOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9CQUNLOworICAg
ICAgICBjYXNlIFZLX1RBQjoKKyAgICAgICAgICAgIHJldHVybiBLRVlfVEFCOworICAgICAgICBj
YXNlIFZLX1BSSU9SOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9QQUdFVVA7CisgICAgICAgIGNh
c2UgVktfTkVYVDoKKyAgICAgICAgICAgIHJldHVybiBLRVlfUEFHRURPV047CisgICAgICAgIGNh
c2UgVktfRU5EOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9FTkQ7CisgICAgICAgIGNhc2UgVktf
SE9NRToKKyAgICAgICAgICAgIHJldHVybiBLRVlfSE9NRTsKKyAgICAgICAgY2FzZSBWS19JTlNF
UlQ6CisgICAgICAgICAgICByZXR1cm4gS0VZX0lOU0VSVDsKKyAgICAgICAgY2FzZSBWS19ERUxF
VEU6CisgICAgICAgICAgICByZXR1cm4gS0VZX0RFTEVURTsKKyAgICAgICAgY2FzZSBWS19BREQ6
CisgICAgICAgICAgICByZXR1cm4gS0VZX0FERDsKKyAgICAgICAgY2FzZSBWS19TVUJUUkFDVDoK
KyAgICAgICAgICAgIHJldHVybiBLRVlfU1VCVFJBQ1Q7CisgICAgICAgIGNhc2UgVktfTVVMVElQ
TFk6CisgICAgICAgICAgICByZXR1cm4gS0VZX01VTFRJUExZOworICAgICAgICBjYXNlIFZLX0RJ
VklERToKKyAgICAgICAgICAgIHJldHVybiBLRVlfRElWSURFOworICAgICAgICBjYXNlIFZLX1BB
VVNFOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9QQVVTRTsKKyAgICAgICAgY2FzZSBWS19GMToK
KyAgICAgICAgICAgIHJldHVybiBLRVlfRjE7CisgICAgICAgIGNhc2UgVktfRjI6CisgICAgICAg
ICAgICByZXR1cm4gS0VZX0YyOworICAgICAgICBjYXNlIFZLX0YzOgorICAgICAgICAgICAgcmV0
dXJuIEtFWV9GMzsKKyAgICAgICAgY2FzZSBWS19GNDoKKyAgICAgICAgICAgIHJldHVybiBLRVlf
RjQ7CisgICAgICAgIGNhc2UgVktfRjU6CisgICAgICAgICAgICByZXR1cm4gS0VZX0Y1OworICAg
ICAgICBjYXNlIFZLX0Y2OgorICAgICAgICAgICAgcmV0dXJuIEtFWV9GNjsKKyAgICAgICAgY2Fz
ZSBWS19GNzoKKyAgICAgICAgICAgIHJldHVybiBLRVlfRjc7CisgICAgICAgIGNhc2UgVktfRjg6
CisgICAgICAgICAgICByZXR1cm4gS0VZX0Y4OworICAgICAgICBjYXNlIFZLX0Y5OgorICAgICAg
ICAgICAgcmV0dXJuIEtFWV9GOTsKKyAgICAgICAgY2FzZSBWS19GMTA6CisgICAgICAgICAgICBy
ZXR1cm4gS0VZX0YxMDsKKyAgICAgICAgY2FzZSBWS19GMTE6CisgICAgICAgICAgICByZXR1cm4g
S0VZX0YxMTsKKyAgICAgICAgY2FzZSBWS19GMTI6CisgICAgICAgICAgICByZXR1cm4gS0VZX0Yx
MjsKKyAgICAgICAgY2FzZSBWS19GMTM6CisgICAgICAgICAgICByZXR1cm4gS0VZX0YxMzsKKyAg
ICAgICAgY2FzZSBWS19GMTQ6CisgICAgICAgICAgICByZXR1cm4gS0VZX0YxNDsKKyAgICAgICAg
Y2FzZSBWS19GMTU6CisgICAgICAgICAgICByZXR1cm4gS0VZX0YxNTsKKyAgICAgICAgY2FzZSBW
S19MRUZUOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9MRUZUOworICAgICAgICBjYXNlIFZLX1JJ
R0hUOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9SSUdIVDsKKyAgICAgICAgY2FzZSBWS19VUDoK
KyAgICAgICAgICAgIHJldHVybiBLRVlfVVA7CisgICAgICAgIGNhc2UgVktfRE9XTjoKKyAgICAg
ICAgICAgIHJldHVybiBLRVlfRE9XTjsKKyAgICAgICAgY2FzZSBWS19OVU1QQUQwOgorICAgICAg
ICAgICAgcmV0dXJuIEtFWV9OVU1QQUQwOworICAgICAgICBjYXNlIFZLX05VTVBBRDE6CisgICAg
ICAgICAgICByZXR1cm4gS0VZX05VTVBBRDE7CisgICAgICAgIGNhc2UgVktfTlVNUEFEMjoKKyAg
ICAgICAgICAgIHJldHVybiBLRVlfTlVNUEFEMjsKKyAgICAgICAgY2FzZSBWS19OVU1QQUQzOgor
ICAgICAgICAgICAgcmV0dXJuIEtFWV9OVU1QQUQzOworICAgICAgICBjYXNlIFZLX05VTVBBRDQ6
CisgICAgICAgICAgICByZXR1cm4gS0VZX05VTVBBRDQ7CisgICAgICAgIGNhc2UgVktfTlVNUEFE
NToKKyAgICAgICAgICAgIHJldHVybiBLRVlfTlVNUEFENTsKKyAgICAgICAgY2FzZSBWS19OVU1Q
QUQ2OgorICAgICAgICAgICAgcmV0dXJuIEtFWV9OVU1QQUQ2OworICAgICAgICBjYXNlIFZLX05V
TVBBRDc6CisgICAgICAgICAgICByZXR1cm4gS0VZX05VTVBBRDc7CisgICAgICAgIGNhc2UgVktf
TlVNUEFEODoKKyAgICAgICAgICAgIHJldHVybiBLRVlfTlVNUEFEODsKKyAgICAgICAgY2FzZSBW
S19OVU1QQUQ5OgorICAgICAgICAgICAgcmV0dXJuIEtFWV9OVU1QQUQ5OworICAgICAgICBjYXNl
ICdBJzoKKyAgICAgICAgICAgIHJldHVybiBLRVlfQTsKKyAgICAgICAgY2FzZSAnWic6CisgICAg
ICAgICAgICByZXR1cm4gS0VZX1o7CisgICAgICAgIGNhc2UgJ0UnOgorICAgICAgICAgICAgcmV0
dXJuIEtFWV9FOworICAgICAgICBjYXNlICdSJzoKKyAgICAgICAgICAgIHJldHVybiBLRVlfUjsK
KyAgICAgICAgY2FzZSAnVCc6CisgICAgICAgICAgICByZXR1cm4gS0VZX1Q7CisgICAgICAgIGNh
c2UgJ1knOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9ZOworICAgICAgICBjYXNlICdVJzoKKyAg
ICAgICAgICAgIHJldHVybiBLRVlfVTsKKyAgICAgICAgY2FzZSAnSSc6CisgICAgICAgICAgICBy
ZXR1cm4gS0VZX0k7CisgICAgICAgIGNhc2UgJ08nOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9P
OworICAgICAgICBjYXNlICdQJzoKKyAgICAgICAgICAgIHJldHVybiBLRVlfUDsKKyAgICAgICAg
Y2FzZSAnUSc6CisgICAgICAgICAgICByZXR1cm4gS0VZX1E7CisgICAgICAgIGNhc2UgJ1MnOgor
ICAgICAgICAgICAgcmV0dXJuIEtFWV9TOworICAgICAgICBjYXNlICdEJzoKKyAgICAgICAgICAg
IHJldHVybiBLRVlfRDsKKyAgICAgICAgY2FzZSAnRic6CisgICAgICAgICAgICByZXR1cm4gS0VZ
X0Y7CisgICAgICAgIGNhc2UgJ0cnOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9HOworICAgICAg
ICBjYXNlICdIJzoKKyAgICAgICAgICAgIHJldHVybiBLRVlfSDsKKyAgICAgICAgY2FzZSAnSic6
CisgICAgICAgICAgICByZXR1cm4gS0VZX0o7CisgICAgICAgIGNhc2UgJ0snOgorICAgICAgICAg
ICAgcmV0dXJuIEtFWV9LOworICAgICAgICBjYXNlICdMJzoKKyAgICAgICAgICAgIHJldHVybiBL
RVlfTDsKKyAgICAgICAgY2FzZSAnTSc6CisgICAgICAgICAgICByZXR1cm4gS0VZX007CisgICAg
ICAgIGNhc2UgJ1cnOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9XOworICAgICAgICBjYXNlICdY
JzoKKyAgICAgICAgICAgIHJldHVybiBLRVlfWDsKKyAgICAgICAgY2FzZSAnQyc6CisgICAgICAg
ICAgICByZXR1cm4gS0VZX0M7CisgICAgICAgIGNhc2UgJ1YnOgorICAgICAgICAgICAgcmV0dXJu
IEtFWV9WOworICAgICAgICBjYXNlICdCJzoKKyAgICAgICAgICAgIHJldHVybiBLRVlfQjsKKyAg
ICAgICAgY2FzZSAnTic6CisgICAgICAgICAgICByZXR1cm4gS0VZX047CisgICAgICAgIGNhc2Ug
JzAnOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9OVU0wOworICAgICAgICBjYXNlICcxJzoKKyAg
ICAgICAgICAgIHJldHVybiBLRVlfTlVNMTsKKyAgICAgICAgY2FzZSAnMic6CisgICAgICAgICAg
ICByZXR1cm4gS0VZX05VTTI7CisgICAgICAgIGNhc2UgJzMnOgorICAgICAgICAgICAgcmV0dXJu
IEtFWV9OVU0zOworICAgICAgICBjYXNlICc0JzoKKyAgICAgICAgICAgIHJldHVybiBLRVlfTlVN
NDsKKyAgICAgICAgY2FzZSAnNSc6CisgICAgICAgICAgICByZXR1cm4gS0VZX05VTTU7CisgICAg
ICAgIGNhc2UgJzYnOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9OVU02OworICAgICAgICBjYXNl
ICc3JzoKKyAgICAgICAgICAgIHJldHVybiBLRVlfTlVNNzsKKyAgICAgICAgY2FzZSAnOCc6Cisg
ICAgICAgICAgICByZXR1cm4gS0VZX05VTTg7CisgICAgICAgIGNhc2UgJzknOgorICAgICAgICAg
ICAgcmV0dXJuIEtFWV9OVU05OworICAgIH0KKworICAgIHJldHVybiBLZXkoMCk7Cit9CisKK0xS
RVNVTFQgQ0FMTEJBQ0sgV2luMzJXaW5kb3c6OlduZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3Nh
Z2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCit7CisgICAgc3dpdGNoIChtZXNzYWdl
KQorICAgIHsKKyAgICAgICAgY2FzZSBXTV9OQ0NSRUFURToKKyAgICAgICAgeworICAgICAgICAg
ICAgTFBDUkVBVEVTVFJVQ1QgcENyZWF0ZVN0cnVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8TFBDUkVB
VEVTVFJVQ1Q+KGxQYXJhbSk7CisgICAgICAgICAgICBTZXRXaW5kb3dMb25nUHRyKGhXbmQsIEdX
TFBfVVNFUkRBVEEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8TE9OR19QVFI+KHBDcmVhdGVTdHJ1Y3QtPmxwQ3JlYXRlUGFyYW1zKSk7CisgICAgICAgICAg
ICByZXR1cm4gRGVmV2luZG93UHJvY0EoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOwor
ICAgICAgICB9CisgICAgfQorCisgICAgV2luMzJXaW5kb3cgKndpbmRvdyA9IHJlaW50ZXJwcmV0
X2Nhc3Q8V2luMzJXaW5kb3cgKj4oR2V0V2luZG93TG9uZ1B0cihoV25kLCBHV0xQX1VTRVJEQVRB
KSk7CisgICAgaWYgKHdpbmRvdykKKyAgICB7CisgICAgICAgIHN3aXRjaCAobWVzc2FnZSkKKyAg
ICAgICAgeworICAgICAgICAgICAgY2FzZSBXTV9ERVNUUk9ZOgorICAgICAgICAgICAgY2FzZSBX
TV9DTE9TRToKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBFdmVudCBldmVudDsKKyAg
ICAgICAgICAgICAgICBldmVudC5UeXBlID0gRXZlbnQ6OkVWRU5UX0NMT1NFRDsKKyAgICAgICAg
ICAgICAgICB3aW5kb3ctPnB1c2hFdmVudChldmVudCk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgV01fTU9WRToKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBSRUNUIHdpblJlY3Q7CisgICAgICAgICAgICAgICAgR2V0Q2xp
ZW50UmVjdChoV25kLCAmd2luUmVjdCk7CisKKyAgICAgICAgICAgICAgICBQT0lOVCB0b3BMZWZ0
OworICAgICAgICAgICAgICAgIHRvcExlZnQueCA9IHdpblJlY3QubGVmdDsKKyAgICAgICAgICAg
ICAgICB0b3BMZWZ0LnkgPSB3aW5SZWN0LnRvcDsKKyAgICAgICAgICAgICAgICBDbGllbnRUb1Nj
cmVlbihoV25kLCAmdG9wTGVmdCk7CisKKyAgICAgICAgICAgICAgICBFdmVudCBldmVudDsKKyAg
ICAgICAgICAgICAgICBldmVudC5UeXBlICAgPSBFdmVudDo6RVZFTlRfTU9WRUQ7CisgICAgICAg
ICAgICAgICAgZXZlbnQuTW92ZS5YID0gdG9wTGVmdC54OworICAgICAgICAgICAgICAgIGV2ZW50
Lk1vdmUuWSA9IHRvcExlZnQueTsKKyAgICAgICAgICAgICAgICB3aW5kb3ctPnB1c2hFdmVudChl
dmVudCk7CisKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgY2FzZSBXTV9TSVpFOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFJFQ1Qg
d2luUmVjdDsKKyAgICAgICAgICAgICAgICBHZXRDbGllbnRSZWN0KGhXbmQsICZ3aW5SZWN0KTsK
KworICAgICAgICAgICAgICAgIFBPSU5UIHRvcExlZnQ7CisgICAgICAgICAgICAgICAgdG9wTGVm
dC54ID0gd2luUmVjdC5sZWZ0OworICAgICAgICAgICAgICAgIHRvcExlZnQueSA9IHdpblJlY3Qu
dG9wOworICAgICAgICAgICAgICAgIENsaWVudFRvU2NyZWVuKGhXbmQsICZ0b3BMZWZ0KTsKKwor
ICAgICAgICAgICAgICAgIFBPSU5UIGJvdFJpZ2h0OworICAgICAgICAgICAgICAgIGJvdFJpZ2h0
LnggPSB3aW5SZWN0LnJpZ2h0OworICAgICAgICAgICAgICAgIGJvdFJpZ2h0LnkgPSB3aW5SZWN0
LmJvdHRvbTsKKyAgICAgICAgICAgICAgICBDbGllbnRUb1NjcmVlbihoV25kLCAmYm90UmlnaHQp
OworCisgICAgICAgICAgICAgICAgRXZlbnQgZXZlbnQ7CisgICAgICAgICAgICAgICAgZXZlbnQu
VHlwZSAgICAgICAgPSBFdmVudDo6RVZFTlRfUkVTSVpFRDsKKyAgICAgICAgICAgICAgICBldmVu
dC5TaXplLldpZHRoICA9IGJvdFJpZ2h0LnggLSB0b3BMZWZ0Lng7CisgICAgICAgICAgICAgICAg
ZXZlbnQuU2l6ZS5IZWlnaHQgPSBib3RSaWdodC55IC0gdG9wTGVmdC55OworICAgICAgICAgICAg
ICAgIHdpbmRvdy0+cHVzaEV2ZW50KGV2ZW50KTsKKworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlIFdNX1NFVEZPQ1VTOgorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIEV2ZW50IGV2ZW50OworICAgICAgICAgICAgICAgIGV2ZW50
LlR5cGUgPSBFdmVudDo6RVZFTlRfR0FJTkVEX0ZPQ1VTOworICAgICAgICAgICAgICAgIHdpbmRv
dy0+cHVzaEV2ZW50KGV2ZW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgY2FzZSBXTV9LSUxMRk9DVVM6CisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgRXZlbnQgZXZlbnQ7CisgICAgICAgICAgICAgICAgZXZlbnQuVHlwZSA9IEV2
ZW50OjpFVkVOVF9MT1NUX0ZPQ1VTOworICAgICAgICAgICAgICAgIHdpbmRvdy0+cHVzaEV2ZW50
KGV2ZW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgY2FzZSBXTV9LRVlET1dOOgorICAgICAgICAgICAgY2FzZSBXTV9TWVNLRVlET1dOOgor
ICAgICAgICAgICAgY2FzZSBXTV9LRVlVUDoKKyAgICAgICAgICAgIGNhc2UgV01fU1lTS0VZVVA6
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYm9vbCBkb3duID0gKG1lc3NhZ2UgPT0g
V01fS0VZRE9XTiB8fCBtZXNzYWdlID09IFdNX1NZU0tFWURPV04pOworCisgICAgICAgICAgICAg
ICAgRXZlbnQgZXZlbnQ7CisgICAgICAgICAgICAgICAgZXZlbnQuVHlwZSAgICAgICAgPSBkb3du
ID8gRXZlbnQ6OkVWRU5UX0tFWV9QUkVTU0VEIDogRXZlbnQ6OkVWRU5UX0tFWV9SRUxFQVNFRDsK
KyAgICAgICAgICAgICAgICBldmVudC5LZXkuQWx0ICAgICA9IEhJV09SRChHZXRBc3luY0tleVN0
YXRlKFZLX01FTlUpKSAhPSAwOworICAgICAgICAgICAgICAgIGV2ZW50LktleS5Db250cm9sID0g
SElXT1JEKEdldEFzeW5jS2V5U3RhdGUoVktfQ09OVFJPTCkpICE9IDA7CisgICAgICAgICAgICAg
ICAgZXZlbnQuS2V5LlNoaWZ0ID0gSElXT1JEKEdldEFzeW5jS2V5U3RhdGUoVktfU0hJRlQpKSAh
PSAwOworICAgICAgICAgICAgICAgIGV2ZW50LktleS5TeXN0ZW0gPQorICAgICAgICAgICAgICAg
ICAgICBISVdPUkQoR2V0QXN5bmNLZXlTdGF0ZShWS19MV0lOKSkgfHwgSElXT1JEKEdldEFzeW5j
S2V5U3RhdGUoVktfUldJTikpOworICAgICAgICAgICAgICAgIGV2ZW50LktleS5Db2RlID0gVmly
dHVhbEtleUNvZGVUb0tleSh3UGFyYW0sIGxQYXJhbSk7CisgICAgICAgICAgICAgICAgd2luZG93
LT5wdXNoRXZlbnQoZXZlbnQpOworCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGNhc2UgV01fTU9VU0VXSEVFTDoKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBFdmVudCBldmVudDsKKyAgICAgICAgICAgICAgICBldmVudC5UeXBlICAg
ICAgICAgICAgID0gRXZlbnQ6OkVWRU5UX01PVVNFX1dIRUVMX01PVkVEOworICAgICAgICAgICAg
ICAgIGV2ZW50Lk1vdXNlV2hlZWwuRGVsdGEgPSBzdGF0aWNfY2FzdDxzaG9ydD4oSElXT1JEKHdQ
YXJhbSkpIC8gMTIwOworICAgICAgICAgICAgICAgIHdpbmRvdy0+cHVzaEV2ZW50KGV2ZW50KTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2Fz
ZSBXTV9MQlVUVE9ORE9XTjoKKyAgICAgICAgICAgIGNhc2UgV01fTEJVVFRPTkRCTENMSzoKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBFdmVudCBldmVudDsKKyAgICAgICAgICAgICAg
ICBldmVudC5UeXBlICAgICAgICAgICAgICAgPSBFdmVudDo6RVZFTlRfTU9VU0VfQlVUVE9OX1BS
RVNTRUQ7CisgICAgICAgICAgICAgICAgZXZlbnQuTW91c2VCdXR0b24uQnV0dG9uID0gTU9VU0VC
VVRUT05fTEVGVDsKKyAgICAgICAgICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5YICAgICAgPSBz
dGF0aWNfY2FzdDxzaG9ydD4oTE9XT1JEKGxQYXJhbSkpOworICAgICAgICAgICAgICAgIGV2ZW50
Lk1vdXNlQnV0dG9uLlkgPSBzdGF0aWNfY2FzdDxzaG9ydD4oSElXT1JEKGxQYXJhbSkpOworICAg
ICAgICAgICAgICAgIHdpbmRvdy0+cHVzaEV2ZW50KGV2ZW50KTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSBXTV9MQlVUVE9OVVA6Cisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRXZlbnQgZXZlbnQ7CisgICAgICAgICAgICAg
ICAgZXZlbnQuVHlwZSAgICAgICAgICAgICAgID0gRXZlbnQ6OkVWRU5UX01PVVNFX0JVVFRPTl9S
RUxFQVNFRDsKKyAgICAgICAgICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5CdXR0b24gPSBNT1VT
RUJVVFRPTl9MRUZUOworICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNlQnV0dG9uLlggICAgICA9
IHN0YXRpY19jYXN0PHNob3J0PihMT1dPUkQobFBhcmFtKSk7CisgICAgICAgICAgICAgICAgZXZl
bnQuTW91c2VCdXR0b24uWSA9IHN0YXRpY19jYXN0PHNob3J0PihISVdPUkQobFBhcmFtKSk7Cisg
ICAgICAgICAgICAgICAgd2luZG93LT5wdXNoRXZlbnQoZXZlbnQpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlIFdNX1JCVVRUT05ET1dO
OgorICAgICAgICAgICAgY2FzZSBXTV9SQlVUVE9OREJMQ0xLOgorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIEV2ZW50IGV2ZW50OworICAgICAgICAgICAgICAgIGV2ZW50LlR5cGUgICAg
ICAgICAgICAgICA9IEV2ZW50OjpFVkVOVF9NT1VTRV9CVVRUT05fUFJFU1NFRDsKKyAgICAgICAg
ICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5CdXR0b24gPSBNT1VTRUJVVFRPTl9SSUdIVDsKKyAg
ICAgICAgICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5YICAgICAgPSBzdGF0aWNfY2FzdDxzaG9y
dD4oTE9XT1JEKGxQYXJhbSkpOworICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNlQnV0dG9uLlkg
PSBzdGF0aWNfY2FzdDxzaG9ydD4oSElXT1JEKGxQYXJhbSkpOworICAgICAgICAgICAgICAgIHdp
bmRvdy0+cHVzaEV2ZW50KGV2ZW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gTW91c2UgcmlnaHQgYnV0dG9uIHVwIGV2ZW50CisgICAg
ICAgICAgICBjYXNlIFdNX1JCVVRUT05VUDoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBFdmVudCBldmVudDsKKyAgICAgICAgICAgICAgICBldmVudC5UeXBlICAgICAgICAgICAgICAg
PSBFdmVudDo6RVZFTlRfTU9VU0VfQlVUVE9OX1JFTEVBU0VEOworICAgICAgICAgICAgICAgIGV2
ZW50Lk1vdXNlQnV0dG9uLkJ1dHRvbiA9IE1PVVNFQlVUVE9OX1JJR0hUOworICAgICAgICAgICAg
ICAgIGV2ZW50Lk1vdXNlQnV0dG9uLlggICAgICA9IHN0YXRpY19jYXN0PHNob3J0PihMT1dPUkQo
bFBhcmFtKSk7CisgICAgICAgICAgICAgICAgZXZlbnQuTW91c2VCdXR0b24uWSA9IHN0YXRpY19j
YXN0PHNob3J0PihISVdPUkQobFBhcmFtKSk7CisgICAgICAgICAgICAgICAgd2luZG93LT5wdXNo
RXZlbnQoZXZlbnQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAvLyBNb3VzZSB3aGVlbCBidXR0b24gZG93biBldmVudAorICAgICAgICAgICAg
Y2FzZSBXTV9NQlVUVE9ORE9XTjoKKyAgICAgICAgICAgIGNhc2UgV01fTUJVVFRPTkRCTENMSzoK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBFdmVudCBldmVudDsKKyAgICAgICAgICAg
ICAgICBldmVudC5UeXBlICAgICAgICAgICAgICAgPSBFdmVudDo6RVZFTlRfTU9VU0VfQlVUVE9O
X1BSRVNTRUQ7CisgICAgICAgICAgICAgICAgZXZlbnQuTW91c2VCdXR0b24uQnV0dG9uID0gTU9V
U0VCVVRUT05fTUlERExFOworICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNlQnV0dG9uLlggICAg
ICA9IHN0YXRpY19jYXN0PHNob3J0PihMT1dPUkQobFBhcmFtKSk7CisgICAgICAgICAgICAgICAg
ZXZlbnQuTW91c2VCdXR0b24uWSA9IHN0YXRpY19jYXN0PHNob3J0PihISVdPUkQobFBhcmFtKSk7
CisgICAgICAgICAgICAgICAgd2luZG93LT5wdXNoRXZlbnQoZXZlbnQpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBNb3VzZSB3aGVlbCBi
dXR0b24gdXAgZXZlbnQKKyAgICAgICAgICAgIGNhc2UgV01fTUJVVFRPTlVQOgorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIEV2ZW50IGV2ZW50OworICAgICAgICAgICAgICAgIGV2ZW50
LlR5cGUgICAgICAgICAgICAgICA9IEV2ZW50OjpFVkVOVF9NT1VTRV9CVVRUT05fUkVMRUFTRUQ7
CisgICAgICAgICAgICAgICAgZXZlbnQuTW91c2VCdXR0b24uQnV0dG9uID0gTU9VU0VCVVRUT05f
TUlERExFOworICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNlQnV0dG9uLlggICAgICA9IHN0YXRp
Y19jYXN0PHNob3J0PihMT1dPUkQobFBhcmFtKSk7CisgICAgICAgICAgICAgICAgZXZlbnQuTW91
c2VCdXR0b24uWSA9IHN0YXRpY19jYXN0PHNob3J0PihISVdPUkQobFBhcmFtKSk7CisgICAgICAg
ICAgICAgICAgd2luZG93LT5wdXNoRXZlbnQoZXZlbnQpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBNb3VzZSBYIGJ1dHRvbiBkb3duIGV2
ZW50CisgICAgICAgICAgICBjYXNlIFdNX1hCVVRUT05ET1dOOgorICAgICAgICAgICAgY2FzZSBX
TV9YQlVUVE9OREJMQ0xLOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEV2ZW50IGV2
ZW50OworICAgICAgICAgICAgICAgIGV2ZW50LlR5cGUgPSBFdmVudDo6RVZFTlRfTU9VU0VfQlVU
VE9OX1BSRVNTRUQ7CisgICAgICAgICAgICAgICAgZXZlbnQuTW91c2VCdXR0b24uQnV0dG9uID0K
KyAgICAgICAgICAgICAgICAgICAgKEhJV09SRCh3UGFyYW0pID09IFhCVVRUT04xKSA/IE1PVVNF
QlVUVE9OX0JVVFRPTjQgOiBNT1VTRUJVVFRPTl9CVVRUT041OworICAgICAgICAgICAgICAgIGV2
ZW50Lk1vdXNlQnV0dG9uLlggPSBzdGF0aWNfY2FzdDxzaG9ydD4oTE9XT1JEKGxQYXJhbSkpOwor
ICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNlQnV0dG9uLlkgPSBzdGF0aWNfY2FzdDxzaG9ydD4o
SElXT1JEKGxQYXJhbSkpOworICAgICAgICAgICAgICAgIHdpbmRvdy0+cHVzaEV2ZW50KGV2ZW50
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gTW91c2UgWCBidXR0b24gdXAgZXZlbnQKKyAgICAgICAgICAgIGNhc2UgV01fWEJVVFRPTlVQ
OgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEV2ZW50IGV2ZW50OworICAgICAgICAg
ICAgICAgIGV2ZW50LlR5cGUgPSBFdmVudDo6RVZFTlRfTU9VU0VfQlVUVE9OX1JFTEVBU0VEOwor
ICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNlQnV0dG9uLkJ1dHRvbiA9CisgICAgICAgICAgICAg
ICAgICAgIChISVdPUkQod1BhcmFtKSA9PSBYQlVUVE9OMSkgPyBNT1VTRUJVVFRPTl9CVVRUT040
IDogTU9VU0VCVVRUT05fQlVUVE9ONTsKKyAgICAgICAgICAgICAgICBldmVudC5Nb3VzZUJ1dHRv
bi5YID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KExPV09SRChsUGFyYW0pKTsKKyAgICAgICAgICAgICAg
ICBldmVudC5Nb3VzZUJ1dHRvbi5ZID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KEhJV09SRChsUGFyYW0p
KTsKKyAgICAgICAgICAgICAgICB3aW5kb3ctPnB1c2hFdmVudChldmVudCk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgV01fTU9VU0VN
T1ZFOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICghd2luZG93LT5tSXNNb3Vz
ZUluV2luZG93KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgd2luZG93
LT5tSXNNb3VzZUluV2luZG93ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgRXZlbnQgZXZl
bnQ7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50LlR5cGUgPSBFdmVudDo6RVZFTlRfTU9VU0Vf
RU5URVJFRDsKKyAgICAgICAgICAgICAgICAgICAgd2luZG93LT5wdXNoRXZlbnQoZXZlbnQpOwor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGludCBtb3VzZVggPSBzdGF0aWNf
Y2FzdDxzaG9ydD4oTE9XT1JEKGxQYXJhbSkpOworICAgICAgICAgICAgICAgIGludCBtb3VzZVkg
PSBzdGF0aWNfY2FzdDxzaG9ydD4oSElXT1JEKGxQYXJhbSkpOworCisgICAgICAgICAgICAgICAg
RXZlbnQgZXZlbnQ7CisgICAgICAgICAgICAgICAgZXZlbnQuVHlwZSAgICAgICAgPSBFdmVudDo6
RVZFTlRfTU9VU0VfTU9WRUQ7CisgICAgICAgICAgICAgICAgZXZlbnQuTW91c2VNb3ZlLlggPSBt
b3VzZVg7CisgICAgICAgICAgICAgICAgZXZlbnQuTW91c2VNb3ZlLlkgPSBtb3VzZVk7CisgICAg
ICAgICAgICAgICAgd2luZG93LT5wdXNoRXZlbnQoZXZlbnQpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlIFdNX01PVVNFTEVBVkU6Cisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRXZlbnQgZXZlbnQ7CisgICAgICAgICAgICAg
ICAgZXZlbnQuVHlwZSA9IEV2ZW50OjpFVkVOVF9NT1VTRV9MRUZUOworICAgICAgICAgICAgICAg
IHdpbmRvdy0+cHVzaEV2ZW50KGV2ZW50KTsKKyAgICAgICAgICAgICAgICB3aW5kb3ctPm1Jc01v
dXNlSW5XaW5kb3cgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgY2FzZSBXTV9VU0VSOgorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIEV2ZW50IHRlc3RFdmVudDsKKyAgICAgICAgICAgICAgICB0ZXN0RXZlbnQuVHlwZSA9
IEV2ZW50OjpFVkVOVF9URVNUOworICAgICAgICAgICAgICAgIHdpbmRvdy0+cHVzaEV2ZW50KHRl
c3RFdmVudCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisgICAgcmV0dXJuIERlZldpbmRvd1Byb2NBKGhXbmQsIG1lc3NhZ2UsIHdQYXJh
bSwgbFBhcmFtKTsKK30KKworV2luMzJXaW5kb3c6OldpbjMyV2luZG93KCkKKyAgICA6IG1Jc1Zp
c2libGUoZmFsc2UpLAorICAgICAgbVNldFZpc2libGVUaW1lcihDcmVhdGVUaW1lcigpKSwKKyAg
ICAgIG1Jc01vdXNlSW5XaW5kb3coZmFsc2UpLAorICAgICAgbU5hdGl2ZVdpbmRvdygwKSwKKyAg
ICAgIG1QYXJlbnRXaW5kb3coMCksCisgICAgICBtTmF0aXZlRGlzcGxheSgwKQoreworfQorCitX
aW4zMldpbmRvdzo6fldpbjMyV2luZG93KCkKK3sKKyAgICBkZXN0cm95KCk7CisgICAgZGVsZXRl
IG1TZXRWaXNpYmxlVGltZXI7Cit9CisKK2Jvb2wgV2luMzJXaW5kb3c6OmluaXRpYWxpemUoY29u
c3Qgc3RkOjpzdHJpbmcgJm5hbWUsIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCkKK3sKKyAg
ICBkZXN0cm95KCk7CisKKyAgICAvLyBVc2UgYSBuZXcgd2luZG93IGNsYXNzIG5hbWUgZm9yIGV2
ZXIgd2luZG93IHRvIGVuc3VyZSB0aGF0IGEgbmV3IHdpbmRvdyBjYW4gYmUgY3JlYXRlZAorICAg
IC8vIGV2ZW4gaWYgdGhlIGxhc3Qgb25lIHdhcyBub3QgcHJvcGVybHkgZGVzdHJveWVkCisgICAg
c3RhdGljIHNpemVfdCB3aW5kb3dJZHggPSAwOworICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBuYW1l
U3RyZWFtOworICAgIG5hbWVTdHJlYW0gPDwgbmFtZSA8PCAiXyIgPDwgd2luZG93SWR4Kys7CisK
KyAgICBtUGFyZW50Q2xhc3NOYW1lID0gbmFtZVN0cmVhbS5zdHIoKTsKKyAgICBtQ2hpbGRDbGFz
c05hbWUgID0gbVBhcmVudENsYXNzTmFtZSArICJfQ2hpbGQiOworCisgICAgLy8gV29yayBhcm91
bmQgY29tcGlsZSBlcnJvciBmcm9tIG5vdCBkZWZpbmluZyAiVU5JQ09ERSIgd2hpbGUgQ2hyb21p
dW0gZG9lcworICAgIGNvbnN0IExQU1RSIGlkY0Fycm93ID0gTUFLRUlOVFJFU09VUkNFQSgzMjUx
Mik7CisKKyAgICBXTkRDTEFTU0VYQSBwYXJlbnRXaW5kb3dDbGFzcyAgID0gezB9OworICAgIHBh
cmVudFdpbmRvd0NsYXNzLmNiU2l6ZSAgICAgICAgPSBzaXplb2YoV05EQ0xBU1NFWEEpOworICAg
IHBhcmVudFdpbmRvd0NsYXNzLnN0eWxlICAgICAgICAgPSAwOworICAgIHBhcmVudFdpbmRvd0Ns
YXNzLmxwZm5XbmRQcm9jICAgPSBXbmRQcm9jOworICAgIHBhcmVudFdpbmRvd0NsYXNzLmNiQ2xz
RXh0cmEgICAgPSAwOworICAgIHBhcmVudFdpbmRvd0NsYXNzLmNiV25kRXh0cmEgICAgPSAwOwor
ICAgIHBhcmVudFdpbmRvd0NsYXNzLmhJbnN0YW5jZSAgICAgPSBHZXRNb2R1bGVIYW5kbGUoTlVM
TCk7CisgICAgcGFyZW50V2luZG93Q2xhc3MuaEljb24gICAgICAgICA9IE5VTEw7CisgICAgcGFy
ZW50V2luZG93Q2xhc3MuaEN1cnNvciAgICAgICA9IExvYWRDdXJzb3JBKE5VTEwsIGlkY0Fycm93
KTsKKyAgICBwYXJlbnRXaW5kb3dDbGFzcy5oYnJCYWNrZ3JvdW5kID0gMDsKKyAgICBwYXJlbnRX
aW5kb3dDbGFzcy5scHN6TWVudU5hbWUgID0gTlVMTDsKKyAgICBwYXJlbnRXaW5kb3dDbGFzcy5s
cHN6Q2xhc3NOYW1lID0gbVBhcmVudENsYXNzTmFtZS5jX3N0cigpOworICAgIGlmICghUmVnaXN0
ZXJDbGFzc0V4QSgmcGFyZW50V2luZG93Q2xhc3MpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIFdORENMQVNTRVhBIGNoaWxkV2luZG93Q2xhc3MgICA9IHswfTsK
KyAgICBjaGlsZFdpbmRvd0NsYXNzLmNiU2l6ZSAgICAgICAgPSBzaXplb2YoV05EQ0xBU1NFWEEp
OworICAgIGNoaWxkV2luZG93Q2xhc3Muc3R5bGUgICAgICAgICA9IENTX09XTkRDOworICAgIGNo
aWxkV2luZG93Q2xhc3MubHBmblduZFByb2MgICA9IFduZFByb2M7CisgICAgY2hpbGRXaW5kb3dD
bGFzcy5jYkNsc0V4dHJhICAgID0gMDsKKyAgICBjaGlsZFdpbmRvd0NsYXNzLmNiV25kRXh0cmEg
ICAgPSAwOworICAgIGNoaWxkV2luZG93Q2xhc3MuaEluc3RhbmNlICAgICA9IEdldE1vZHVsZUhh
bmRsZShOVUxMKTsKKyAgICBjaGlsZFdpbmRvd0NsYXNzLmhJY29uICAgICAgICAgPSBOVUxMOwor
ICAgIGNoaWxkV2luZG93Q2xhc3MuaEN1cnNvciAgICAgICA9IExvYWRDdXJzb3JBKE5VTEwsIGlk
Y0Fycm93KTsKKyAgICBjaGlsZFdpbmRvd0NsYXNzLmhickJhY2tncm91bmQgPSAwOworICAgIGNo
aWxkV2luZG93Q2xhc3MubHBzek1lbnVOYW1lICA9IE5VTEw7CisgICAgY2hpbGRXaW5kb3dDbGFz
cy5scHN6Q2xhc3NOYW1lID0gbUNoaWxkQ2xhc3NOYW1lLmNfc3RyKCk7CisgICAgaWYgKCFSZWdp
c3RlckNsYXNzRXhBKCZjaGlsZFdpbmRvd0NsYXNzKSkKKyAgICB7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBEV09SRCBwYXJlbnRTdHlsZSAgICAgICAgID0gV1NfQ0FQVElP
TiB8IFdTX1RISUNLRlJBTUUgfCBXU19NSU5JTUlaRUJPWCB8IFdTX01BWElNSVpFQk9YIHwgV1Nf
U1lTTUVOVTsKKyAgICBEV09SRCBwYXJlbnRFeHRlbmRlZFN0eWxlID0gV1NfRVhfQVBQV0lORE9X
OworCisgICAgUkVDVCBzaXplUmVjdCA9IHswLCAwLCBzdGF0aWNfY2FzdDxMT05HPih3aWR0aCks
IHN0YXRpY19jYXN0PExPTkc+KGhlaWdodCl9OworICAgIEFkanVzdFdpbmRvd1JlY3RFeCgmc2l6
ZVJlY3QsIHBhcmVudFN0eWxlLCBGQUxTRSwgcGFyZW50RXh0ZW5kZWRTdHlsZSk7CisKKyAgICBt
UGFyZW50V2luZG93ID0KKyAgICAgICAgQ3JlYXRlV2luZG93RXhBKHBhcmVudEV4dGVuZGVkU3R5
bGUsIG1QYXJlbnRDbGFzc05hbWUuY19zdHIoKSwgbmFtZS5jX3N0cigpLCBwYXJlbnRTdHlsZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIENXX1VTRURFRkFVTFQsIENXX1VTRURFRkFVTFQsIHNp
emVSZWN0LnJpZ2h0IC0gc2l6ZVJlY3QubGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVSZWN0LmJvdHRvbSAtIHNpemVSZWN0LnRvcCwgTlVMTCwgTlVMTCwgR2V0TW9kdWxlSGFuZGxl
KE5VTEwpLCB0aGlzKTsKKworICAgIG1OYXRpdmVXaW5kb3cgPSBDcmVhdGVXaW5kb3dFeEEoMCwg
bUNoaWxkQ2xhc3NOYW1lLmNfc3RyKCksIG5hbWUuY19zdHIoKSwgV1NfQ0hJTEQsIDAsIDAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KHdpZHRo
KSwgc3RhdGljX2Nhc3Q8aW50PihoZWlnaHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbVBhcmVudFdpbmRvdywgTlVMTCwgR2V0TW9kdWxlSGFuZGxlKE5VTEwpLCB0aGlz
KTsKKworICAgIG1OYXRpdmVEaXNwbGF5ID0gR2V0REMobU5hdGl2ZVdpbmRvdyk7CisgICAgaWYg
KCFtTmF0aXZlRGlzcGxheSkKKyAgICB7CisgICAgICAgIGRlc3Ryb3koKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFdpbjMyV2lu
ZG93OjpkZXN0cm95KCkKK3sKKyAgICBpZiAobU5hdGl2ZURpc3BsYXkpCisgICAgeworICAgICAg
ICBSZWxlYXNlREMobU5hdGl2ZVdpbmRvdywgbU5hdGl2ZURpc3BsYXkpOworICAgICAgICBtTmF0
aXZlRGlzcGxheSA9IDA7CisgICAgfQorCisgICAgaWYgKG1OYXRpdmVXaW5kb3cpCisgICAgewor
ICAgICAgICBEZXN0cm95V2luZG93KG1OYXRpdmVXaW5kb3cpOworICAgICAgICBtTmF0aXZlV2lu
ZG93ID0gMDsKKyAgICB9CisKKyAgICBpZiAobVBhcmVudFdpbmRvdykKKyAgICB7CisgICAgICAg
IERlc3Ryb3lXaW5kb3cobVBhcmVudFdpbmRvdyk7CisgICAgICAgIG1QYXJlbnRXaW5kb3cgPSAw
OworICAgIH0KKworICAgIFVucmVnaXN0ZXJDbGFzc0EobVBhcmVudENsYXNzTmFtZS5jX3N0cigp
LCBOVUxMKTsKKyAgICBVbnJlZ2lzdGVyQ2xhc3NBKG1DaGlsZENsYXNzTmFtZS5jX3N0cigpLCBO
VUxMKTsKK30KKworYm9vbCBXaW4zMldpbmRvdzo6dGFrZVNjcmVlbnNob3QodWludDhfdCAqcGl4
ZWxEYXRhKQoreworICAgIGlmIChtSXNWaXNpYmxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGJvb2wgZXJyb3IgPSBmYWxzZTsKKworICAgIC8vIEhhY2sgZm9y
IERXTTogVGhlcmUgaXMgbm8gd2F5IHRvIHdhaXQgZm9yIERXTSBhbmltYXRpb25zIHRvIGZpbmlz
aCwgc28gd2UganVzdCBoYXZlIHRvIHdhaXQKKyAgICAvLyBmb3IgYSB3aGlsZSBiZWZvcmUgaXNz
dWluZyBzY3JlZW5zaG90IGlmIHdpbmRvdyB3YXMganVzdCBtYWRlIHZpc2libGUuCisgICAgewor
ICAgICAgICBzdGF0aWMgY29uc3QgZG91YmxlIFdBSVRfV0lORE9XX1ZJU0lCTEVfTVMgPSAwLjU7
ICAvLyBIYWxmIGEgc2Vjb25kIGZvciB0aGUgYW5pbWF0aW9uCisgICAgICAgIGRvdWJsZSB0aW1l
U2luY2VWaXNpYmxlICAgICAgICAgICAgICAgICAgICA9IG1TZXRWaXNpYmxlVGltZXItPmdldEVs
YXBzZWRUaW1lKCk7CisKKyAgICAgICAgaWYgKHRpbWVTaW5jZVZpc2libGUgPCBXQUlUX1dJTkRP
V19WSVNJQkxFX01TKQorICAgICAgICB7CisgICAgICAgICAgICBTbGVlcChzdGF0aWNfY2FzdDxE
V09SRD4oKFdBSVRfV0lORE9XX1ZJU0lCTEVfTVMgLSB0aW1lU2luY2VWaXNpYmxlKSAqIDEwMDAp
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEhEQyBzY3JlZW5EQyAgICAgID0gbnVsbHB0cjsK
KyAgICBIREMgd2luZG93REMgICAgICA9IG51bGxwdHI7CisgICAgSERDIHRtcERDICAgICAgICAg
PSBudWxscHRyOworICAgIEhCSVRNQVAgdG1wQml0bWFwID0gbnVsbHB0cjsKKworICAgIGlmICgh
ZXJyb3IpCisgICAgeworICAgICAgICBzY3JlZW5EQyA9IEdldERDKG51bGxwdHIpOworICAgICAg
ICBlcnJvciAgICA9IHNjcmVlbkRDID09IG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKCFlcnJv
cikKKyAgICB7CisgICAgICAgIHdpbmRvd0RDID0gR2V0REMobU5hdGl2ZVdpbmRvdyk7CisgICAg
ICAgIGVycm9yICAgID0gd2luZG93REMgPT0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAoIWVy
cm9yKQorICAgIHsKKyAgICAgICAgdG1wREMgPSBDcmVhdGVDb21wYXRpYmxlREMoc2NyZWVuREMp
OworICAgICAgICBlcnJvciA9IHRtcERDID09IG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKCFl
cnJvcikKKyAgICB7CisgICAgICAgIHRtcEJpdG1hcCA9IENyZWF0ZUNvbXBhdGlibGVCaXRtYXAo
c2NyZWVuREMsIG1XaWR0aCwgbUhlaWdodCk7CisgICAgICAgIGVycm9yICAgICA9IHRtcEJpdG1h
cCA9PSBudWxscHRyOworICAgIH0KKworICAgIFJFQ1QgcmVjdCA9IHswLCAwLCAwLCAwfTsKKyAg
ICBpZiAoIWVycm9yKQorICAgIHsKKyAgICAgICAgTWFwV2luZG93UG9pbnRzKG1OYXRpdmVXaW5k
b3csIG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8TFBQT0lOVD4oJnJlY3QpLCAwKTsKKworICAg
ICAgICBlcnJvciA9IFNlbGVjdE9iamVjdCh0bXBEQywgdG1wQml0bWFwKSA9PSBudWxscHRyOwor
ICAgIH0KKworICAgIGlmICghZXJyb3IpCisgICAgeworICAgICAgICBlcnJvciA9CisgICAgICAg
ICAgICBCaXRCbHQodG1wREMsIDAsIDAsIG1XaWR0aCwgbUhlaWdodCwgc2NyZWVuREMsIHJlY3Qu
bGVmdCwgcmVjdC50b3AsIFNSQ0NPUFkpID09IFRSVUU7CisgICAgfQorCisgICAgaWYgKCFlcnJv
cikKKyAgICB7CisgICAgICAgIEJJVE1BUElORk9IRUFERVIgYml0bWFwSW5mbzsKKyAgICAgICAg
Yml0bWFwSW5mby5iaVNpemUgICAgICAgICAgPSBzaXplb2YoQklUTUFQSU5GT0hFQURFUik7Cisg
ICAgICAgIGJpdG1hcEluZm8uYmlXaWR0aCAgICAgICAgID0gbVdpZHRoOworICAgICAgICBiaXRt
YXBJbmZvLmJpSGVpZ2h0ICAgICAgICA9IC1tSGVpZ2h0OworICAgICAgICBiaXRtYXBJbmZvLmJp
UGxhbmVzICAgICAgICA9IDE7CisgICAgICAgIGJpdG1hcEluZm8uYmlCaXRDb3VudCAgICAgID0g
MzI7CisgICAgICAgIGJpdG1hcEluZm8uYmlDb21wcmVzc2lvbiAgID0gQklfUkdCOworICAgICAg
ICBiaXRtYXBJbmZvLmJpU2l6ZUltYWdlICAgICA9IDA7CisgICAgICAgIGJpdG1hcEluZm8uYmlY
UGVsc1Blck1ldGVyID0gMDsKKyAgICAgICAgYml0bWFwSW5mby5iaVlQZWxzUGVyTWV0ZXIgPSAw
OworICAgICAgICBiaXRtYXBJbmZvLmJpQ2xyVXNlZCAgICAgICA9IDA7CisgICAgICAgIGJpdG1h
cEluZm8uYmlDbHJJbXBvcnRhbnQgID0gMDsKKyAgICAgICAgaW50IGdldEJpdHNSZXN1bHQgPSBH
ZXRESUJpdHMoc2NyZWVuREMsIHRtcEJpdG1hcCwgMCwgbUhlaWdodCwgcGl4ZWxEYXRhLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PEJJVE1B
UElORk8gKj4oJmJpdG1hcEluZm8pLCBESUJfUkdCX0NPTE9SUyk7CisgICAgICAgIGVycm9yID0g
Z2V0Qml0c1Jlc3VsdCAhPSAwOworICAgIH0KKworICAgIGlmICh0bXBCaXRtYXAgIT0gbnVsbHB0
cikKKyAgICB7CisgICAgICAgIERlbGV0ZU9iamVjdCh0bXBCaXRtYXApOworICAgIH0KKyAgICBp
ZiAodG1wREMgIT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIERlbGV0ZURDKHRtcERDKTsKKyAg
ICB9CisgICAgaWYgKHNjcmVlbkRDICE9IG51bGxwdHIpCisgICAgeworICAgICAgICBSZWxlYXNl
REMobnVsbHB0ciwgc2NyZWVuREMpOworICAgIH0KKyAgICBpZiAod2luZG93REMgIT0gbnVsbHB0
cikKKyAgICB7CisgICAgICAgIFJlbGVhc2VEQyhtTmF0aXZlV2luZG93LCB3aW5kb3dEQyk7Cisg
ICAgfQorCisgICAgcmV0dXJuICFlcnJvcjsKK30KKworRUdMTmF0aXZlV2luZG93VHlwZSBXaW4z
MldpbmRvdzo6Z2V0TmF0aXZlV2luZG93KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbU5hdGl2ZVdp
bmRvdzsKK30KKworRUdMTmF0aXZlRGlzcGxheVR5cGUgV2luMzJXaW5kb3c6OmdldE5hdGl2ZURp
c3BsYXkoKSBjb25zdAoreworICAgIHJldHVybiBtTmF0aXZlRGlzcGxheTsKK30KKwordm9pZCBX
aW4zMldpbmRvdzo6bWVzc2FnZUxvb3AoKQoreworICAgIE1TRyBtc2c7CisgICAgd2hpbGUgKFBl
ZWtNZXNzYWdlKCZtc2csIE5VTEwsIDAsIDAsIFBNX1JFTU9WRSkpCisgICAgeworICAgICAgICBU
cmFuc2xhdGVNZXNzYWdlKCZtc2cpOworICAgICAgICBEaXNwYXRjaE1lc3NhZ2UoJm1zZyk7Cisg
ICAgfQorfQorCit2b2lkIFdpbjMyV2luZG93OjpzZXRNb3VzZVBvc2l0aW9uKGludCB4LCBpbnQg
eSkKK3sKKyAgICBSRUNUIHdpblJlY3Q7CisgICAgR2V0Q2xpZW50UmVjdChtTmF0aXZlV2luZG93
LCAmd2luUmVjdCk7CisKKyAgICBQT0lOVCB0b3BMZWZ0OworICAgIHRvcExlZnQueCA9IHdpblJl
Y3QubGVmdDsKKyAgICB0b3BMZWZ0LnkgPSB3aW5SZWN0LnRvcDsKKyAgICBDbGllbnRUb1NjcmVl
bihtTmF0aXZlV2luZG93LCAmdG9wTGVmdCk7CisKKyAgICBTZXRDdXJzb3JQb3ModG9wTGVmdC54
ICsgeCwgdG9wTGVmdC55ICsgeSk7Cit9CisKK09TV2luZG93ICpDcmVhdGVPU1dpbmRvdygpCit7
CisgICAgcmV0dXJuIG5ldyBXaW4zMldpbmRvdygpOworfQorCitib29sIFdpbjMyV2luZG93Ojpz
ZXRQb3NpdGlvbihpbnQgeCwgaW50IHkpCit7CisgICAgaWYgKG1YID09IHggJiYgbVkgPT0geSkK
KyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIFJFQ1Qgd2luZG93UmVj
dDsKKyAgICBpZiAoIUdldFdpbmRvd1JlY3QobVBhcmVudFdpbmRvdywgJndpbmRvd1JlY3QpKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghTW92ZVdpbmRv
dyhtUGFyZW50V2luZG93LCB4LCB5LCB3aW5kb3dSZWN0LnJpZ2h0IC0gd2luZG93UmVjdC5sZWZ0
LAorICAgICAgICAgICAgICAgICAgICB3aW5kb3dSZWN0LmJvdHRvbSAtIHdpbmRvd1JlY3QudG9w
LCBUUlVFKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBXaW4zMldpbmRvdzo6cmVzaXplKGludCB3aWR0aCwgaW50IGhl
aWdodCkKK3sKKyAgICBpZiAod2lkdGggPT0gbVdpZHRoICYmIGhlaWdodCA9PSBtSGVpZ2h0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgUkVDVCB3aW5kb3dSZWN0
OworICAgIGlmICghR2V0V2luZG93UmVjdChtUGFyZW50V2luZG93LCAmd2luZG93UmVjdCkpCisg
ICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgUkVDVCBjbGllbnRSZWN0
OworICAgIGlmICghR2V0Q2xpZW50UmVjdChtUGFyZW50V2luZG93LCAmY2xpZW50UmVjdCkpCisg
ICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgTE9ORyBkaWZmWCA9ICh3
aW5kb3dSZWN0LnJpZ2h0IC0gd2luZG93UmVjdC5sZWZ0KSAtIGNsaWVudFJlY3QucmlnaHQ7Cisg
ICAgTE9ORyBkaWZmWSA9ICh3aW5kb3dSZWN0LmJvdHRvbSAtIHdpbmRvd1JlY3QudG9wKSAtIGNs
aWVudFJlY3QuYm90dG9tOworICAgIGlmICghTW92ZVdpbmRvdyhtUGFyZW50V2luZG93LCB3aW5k
b3dSZWN0LmxlZnQsIHdpbmRvd1JlY3QudG9wLCB3aWR0aCArIGRpZmZYLCBoZWlnaHQgKyBkaWZm
WSwKKyAgICAgICAgICAgICAgICAgICAgVFJVRSkpCisgICAgeworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgaWYgKCFNb3ZlV2luZG93KG1OYXRpdmVXaW5kb3csIDAsIDAsIHdp
ZHRoLCBoZWlnaHQsIEZBTFNFKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXaW4zMldpbmRvdzo6c2V0VmlzaWJsZShi
b29sIGlzVmlzaWJsZSkKK3sKKyAgICBpbnQgZmxhZyA9IChpc1Zpc2libGUgPyBTV19TSE9XIDog
U1dfSElERSk7CisKKyAgICBTaG93V2luZG93KG1QYXJlbnRXaW5kb3csIGZsYWcpOworICAgIFNo
b3dXaW5kb3cobU5hdGl2ZVdpbmRvdywgZmxhZyk7CisKKyAgICBpZiAoaXNWaXNpYmxlKQorICAg
IHsKKyAgICAgICAgbVNldFZpc2libGVUaW1lci0+c3RvcCgpOworICAgICAgICBtU2V0VmlzaWJs
ZVRpbWVyLT5zdGFydCgpOworICAgIH0KK30KKwordm9pZCBXaW4zMldpbmRvdzo6cHVzaEV2ZW50
KEV2ZW50IGV2ZW50KQoreworICAgIE9TV2luZG93OjpwdXNoRXZlbnQoZXZlbnQpOworCisgICAg
c3dpdGNoIChldmVudC5UeXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBFdmVudDo6RVZFTlRfUkVT
SVpFRDoKKyAgICAgICAgICAgIE1vdmVXaW5kb3cobU5hdGl2ZVdpbmRvdywgMCwgMCwgbVdpZHRo
LCBtSGVpZ2h0LCBGQUxTRSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBXaW4zMldpbmRvdzo6c2lnbmFs
VGVzdEV2ZW50KCkKK3sKKyAgICBQb3N0TWVzc2FnZShtTmF0aXZlV2luZG93LCBXTV9VU0VSLCAw
LCAwKTsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvd2luZG93cy93aW4z
Mi9XaW4zMldpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0
aWwvd2luZG93cy93aW4zMi9XaW4zMldpbmRvdy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3V0aWwvd2luZG93cy93aW4zMi9XaW4zMldpbmRvdy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNTkgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBXaW4zMldpbmRvdy5o
OiBEZWZpbml0aW9uIG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBPU1dpbmRvdyBmb3IgV2luMzIg
KFdpbmRvd3MpCisKKyNpZm5kZWYgVVRJTF9XSU4zMl9XSU5ET1dfSAorI2RlZmluZSBVVElMX1dJ
TjMyX1dJTkRPV19ICisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8c3RyaW5nPgor
CisjaW5jbHVkZSAiT1NXaW5kb3cuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorCitjbGFzcyBXaW4z
MldpbmRvdyA6IHB1YmxpYyBPU1dpbmRvdworeworICBwdWJsaWM6CisgICAgV2luMzJXaW5kb3co
KTsKKyAgICB+V2luMzJXaW5kb3coKSBvdmVycmlkZTsKKworICAgIGJvb2wgaW5pdGlhbGl6ZShj
b25zdCBzdGQ6OnN0cmluZyAmbmFtZSwgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0KSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsKKworICAgIGJvb2wgdGFrZVNjcmVl
bnNob3QodWludDhfdCAqcGl4ZWxEYXRhKSBvdmVycmlkZTsKKworICAgIEVHTE5hdGl2ZVdpbmRv
d1R5cGUgZ2V0TmF0aXZlV2luZG93KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRUdMTmF0aXZlRGlz
cGxheVR5cGUgZ2V0TmF0aXZlRGlzcGxheSgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgdm9pZCBt
ZXNzYWdlTG9vcCgpIG92ZXJyaWRlOworCisgICAgdm9pZCBwdXNoRXZlbnQoRXZlbnQgZXZlbnQp
IG92ZXJyaWRlOworCisgICAgdm9pZCBzZXRNb3VzZVBvc2l0aW9uKGludCB4LCBpbnQgeSkgb3Zl
cnJpZGU7CisgICAgYm9vbCBzZXRQb3NpdGlvbihpbnQgeCwgaW50IHkpIG92ZXJyaWRlOworICAg
IGJvb2wgcmVzaXplKGludCB3aWR0aCwgaW50IGhlaWdodCkgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZXRWaXNpYmxlKGJvb2wgaXNWaXNpYmxlKSBvdmVycmlkZTsKKworICAgIHZvaWQgc2lnbmFsVGVz
dEV2ZW50KCkgb3ZlcnJpZGU7CisKKyAgcHJpdmF0ZToKKyAgICBzdGF0aWMgTFJFU1VMVCBDQUxM
QkFDSyBXbmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFS
QU0gbFBhcmFtKTsKKworICAgIHN0ZDo6c3RyaW5nIG1QYXJlbnRDbGFzc05hbWU7CisgICAgc3Rk
OjpzdHJpbmcgbUNoaWxkQ2xhc3NOYW1lOworCisgICAgYm9vbCBtSXNWaXNpYmxlOworICAgIFRp
bWVyICptU2V0VmlzaWJsZVRpbWVyOworCisgICAgYm9vbCBtSXNNb3VzZUluV2luZG93OworCisg
ICAgRUdMTmF0aXZlV2luZG93VHlwZSBtTmF0aXZlV2luZG93OworICAgIEVHTE5hdGl2ZVdpbmRv
d1R5cGUgbVBhcmVudFdpbmRvdzsKKyAgICBFR0xOYXRpdmVEaXNwbGF5VHlwZSBtTmF0aXZlRGlz
cGxheTsKK307CisKKyNlbmRpZiAgLy8gVVRJTF9XSU4zMl9XSU5ET1dfSApJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvdXRpbC93aW5kb3dzL3dpbjMyL1dpbjMyX3N5c3RlbV91dGlscy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC93aW5kb3dzL3dp
bjMyL1dpbjMyX3N5c3RlbV91dGlscy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvdXRpbC93aW5kb3dzL3dpbjMyL1dpbjMyX3N5c3RlbV91dGlscy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw2MyBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNCBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFdpbjMyX3N5
c3RlbV91dGlscy5jcHA6IEltcGxlbWVudGF0aW9uIG9mIE9TLXNwZWNpZmljIGZ1bmN0aW9ucyBm
b3IgV2luMzIgKFdpbmRvd3MpCisKKyNpbmNsdWRlICJzeXN0ZW1fdXRpbHMuaCIKKworI2luY2x1
ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDxhcnJheT4KKworbmFtZXNwYWNlIGFuZ2xlCit7CisK
K3ZvaWQgU2V0TG93UHJpb3JpdHlQcm9jZXNzKCkKK3sKKyAgICBTZXRQcmlvcml0eUNsYXNzKEdl
dEN1cnJlbnRQcm9jZXNzKCksIEJFTE9XX05PUk1BTF9QUklPUklUWV9DTEFTUyk7Cit9CisKK2Ns
YXNzIFdpbjMyTGlicmFyeSA6IHB1YmxpYyBMaWJyYXJ5Cit7CisgIHB1YmxpYzoKKyAgICBXaW4z
MkxpYnJhcnkoY29uc3Qgc3RkOjpzdHJpbmcgJmxpYnJhcnlOYW1lKTsKKyAgICB+V2luMzJMaWJy
YXJ5KCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkICpnZXRTeW1ib2woY29uc3Qgc3RkOjpzdHJpbmcg
JnN5bWJvbE5hbWUpIG92ZXJyaWRlOworCisgIHByaXZhdGU6CisgICAgSE1PRFVMRSBtTW9kdWxl
OworfTsKKworV2luMzJMaWJyYXJ5OjpXaW4zMkxpYnJhcnkoY29uc3Qgc3RkOjpzdHJpbmcgJmxp
YnJhcnlOYW1lKSA6IG1Nb2R1bGUobnVsbHB0cikKK3sKKyAgICBjb25zdCBhdXRvICZmdWxsTmFt
ZSA9IGxpYnJhcnlOYW1lICsgIi4iICsgR2V0U2hhcmVkTGlicmFyeUV4dGVuc2lvbigpOworICAg
IG1Nb2R1bGUgICAgICAgICAgICAgID0gTG9hZExpYnJhcnlBKGZ1bGxOYW1lLmNfc3RyKCkpOwor
fQorCitXaW4zMkxpYnJhcnk6On5XaW4zMkxpYnJhcnkoKQoreworICAgIGlmIChtTW9kdWxlKQor
ICAgIHsKKyAgICAgICAgRnJlZUxpYnJhcnkobU1vZHVsZSk7CisgICAgfQorfQorCit2b2lkICpX
aW4zMkxpYnJhcnk6OmdldFN5bWJvbChjb25zdCBzdGQ6OnN0cmluZyAmc3ltYm9sTmFtZSkKK3sK
KyAgICBpZiAoIW1Nb2R1bGUpCisgICAgeworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisKKyAgICByZXR1cm4gR2V0UHJvY0FkZHJlc3MobU1vZHVsZSwgc3ltYm9sTmFtZS5jX3N0cigp
KTsKK30KKworTGlicmFyeSAqbG9hZExpYnJhcnkoY29uc3Qgc3RkOjpzdHJpbmcgJmxpYnJhcnlO
YW1lKQoreworICAgIHJldHVybiBuZXcgV2luMzJMaWJyYXJ5KGxpYnJhcnlOYW1lKTsKK30KKwor
fSAgLy8gbmFtZXNwYWNlIGFuZ2xlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGls
L3dpbmRvd3Mvd2lucnQvV2luUlRQaXhtYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3V0aWwvd2luZG93cy93aW5ydC9XaW5SVFBpeG1hcC5jcHAJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC93aW5kb3dzL3dpbnJ0L1dpblJU
UGl4bWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3IEBACisvLworLy8gQ29weXJp
Z2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
KworLy8gV2luUlRQaXhtYXAuY3BwOiBTdHViIGltcGxlbWVudGF0aW9uIG9mIE9TUGl4bWFwIGZ1
bmN0aW9ucyBmb3IgV2luUlQgKFdpbmRvd3MpCisKKyNpbmNsdWRlICJPU1BpeG1hcC5oIgorCisj
aW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK09TUGl4bWFwICpDcmVhdGVPU1BpeG1hcCgpCit7
CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvd2lu
ZG93cy93aW5ydC9XaW5SVFdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvdXRpbC93aW5kb3dzL3dpbnJ0L1dpblJUV2luZG93LmNwcAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3dpbmRvd3Mvd2lucnQvV2luUlRXaW5k
b3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjg0IEBACisvLworLy8gQ29weXJpZ2h0
IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKwor
Ly8gV2luUlRXaW5kb3cuY3BwOiBJbXBsZW1lbnRhdGlvbiBvZiBPU1dpbmRvdyBmb3IgV2luUlQg
KFdpbmRvd3MpCisKKyNpbmNsdWRlICJ3aW5kb3dzL3dpbnJ0L1dpblJUV2luZG93LmgiCisKKyNp
bmNsdWRlIDx3cmwuaD4KKyNpbmNsdWRlIDx3aW5kb3dzLmFwcGxpY2F0aW9ubW9kZWwuY29yZS5o
PgorI2luY2x1ZGUgPHdpbmRvd3MudWkueGFtbC5oPgorCisjaW5jbHVkZSAiYW5nbGVfd2luZG93
c3N0b3JlLmgiCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBB
Qkk6OldpbmRvd3M6OkFwcGxpY2F0aW9uTW9kZWw6OkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgQUJJ
OjpXaW5kb3dzOjpGb3VuZGF0aW9uOwordXNpbmcgbmFtZXNwYWNlIEFCSTo6V2luZG93czo6Rm91
bmRhdGlvbjo6Q29sbGVjdGlvbnM7Cit1c2luZyBuYW1lc3BhY2UgQUJJOjpXaW5kb3dzOjpVSTo6
Q29yZTsKK3VzaW5nIG5hbWVzcGFjZSBNaWNyb3NvZnQ6OldSTDsKK3VzaW5nIG5hbWVzcGFjZSBN
aWNyb3NvZnQ6OldSTDo6V3JhcHBlcnM7CisKK1dpblJUV2luZG93OjpXaW5SVFdpbmRvdygpIDog
bU5hdGl2ZVdpbmRvdyhudWxscHRyKQoreworfQorCitXaW5SVFdpbmRvdzo6fldpblJUV2luZG93
KCkKK3sKKyAgICBkZXN0cm95KCk7Cit9CisKK2Jvb2wgV2luUlRXaW5kb3c6OmluaXRpYWxpemUo
Y29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCkKK3sK
KyAgICBDb21QdHI8SUNvcmVXaW5kb3dTdGF0aWM+IGNvcmVXaW5kb3dTdGF0aWM7CisgICAgQ29t
UHRyPElBY3RpdmF0aW9uRmFjdG9yeT4gcHJvcGVydHlTZXRGYWN0b3J5OworICAgIENvbVB0cjxJ
UHJvcGVydHlWYWx1ZVN0YXRpY3M+IHByb3BlcnR5VmFsdWVTdGF0aWNzOworCisgICAgQ29tUHRy
PElDb3JlQXBwbGljYXRpb24+IGNvcmVBcHBsaWNhdGlvbjsKKyAgICBDb21QdHI8SVByb3BlcnR5
U2V0PiBjb3JlQXBwbGljYXRpb25Qcm9wZXJ0aWVzOworICAgIENvbVB0cjxJTWFwPEhTVFJJTkcs
IElJbnNwZWN0YWJsZSAqPj4gY29yZUFwcGxpY2F0aW9uUHJvcGVydGllc0FzTWFwOworCisgICAg
Q29tUHRyPElNYXA8SFNUUklORywgSUluc3BlY3RhYmxlICo+PiBuYXRpdmVXaW5kb3dBc01hcDsK
KyAgICBDb21QdHI8SUluc3BlY3RhYmxlPiBzaXplVmFsdWU7CisKKyAgICBIUkVTVUxUIHJlc3Vs
dCAgICAgICAgICAgPSBTX09LOworICAgIGJvb2xlYW4gcHJvcGVydHlSZXBsYWNlZCA9IGZhbHNl
OworCisgICAgZGVzdHJveSgpOworCisgICAgLy8gR2V0IGFsbCB0aGUgcmVsZXZhbnQgYWN0aXZh
dGlvbiBmYWN0b3JpZXMKKyAgICByZXN1bHQgPSBHZXRBY3RpdmF0aW9uRmFjdG9yeSgKKyAgICAg
ICAgSFN0cmluZ1JlZmVyZW5jZShSdW50aW1lQ2xhc3NfV2luZG93c19VSV9Db3JlX0NvcmVXaW5k
b3cpLkdldCgpLCAmY29yZVdpbmRvd1N0YXRpYyk7CisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJlc3VsdCA9IEdldEFj
dGl2YXRpb25GYWN0b3J5KAorICAgICAgICBIU3RyaW5nUmVmZXJlbmNlKFJ1bnRpbWVDbGFzc19X
aW5kb3dzX0ZvdW5kYXRpb25fQ29sbGVjdGlvbnNfUHJvcGVydHlTZXQpLkdldCgpLAorICAgICAg
ICAmcHJvcGVydHlTZXRGYWN0b3J5KTsKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgewor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmVzdWx0ID0KKyAgICAgICAgR2V0
QWN0aXZhdGlvbkZhY3RvcnkoSFN0cmluZ1JlZmVyZW5jZShSdW50aW1lQ2xhc3NfV2luZG93c19G
b3VuZGF0aW9uX1Byb3BlcnR5VmFsdWUpLkdldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmcHJvcGVydHlWYWx1ZVN0YXRpY3MpOworICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXN1bHQgPSBHZXRBY3Rp
dmF0aW9uRmFjdG9yeSgKKyAgICAgICAgSFN0cmluZ1JlZmVyZW5jZShSdW50aW1lQ2xhc3NfV2lu
ZG93c19BcHBsaWNhdGlvbk1vZGVsX0NvcmVfQ29yZUFwcGxpY2F0aW9uKS5HZXQoKSwKKyAgICAg
ICAgJmNvcmVBcHBsaWNhdGlvbik7CisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIENyZWF0ZSBhIFByb3BlcnR5U2V0
IHRvIGJlIHVzZWQgYXMgdGhlIG5hdGl2ZSB3aW5kb3cKKyAgICByZXN1bHQgPSBwcm9wZXJ0eVNl
dEZhY3RvcnktPkFjdGl2YXRlSW5zdGFuY2UoJm1OYXRpdmVXaW5kb3cpOworICAgIGlmIChGQUlM
RUQocmVzdWx0KSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAv
LyBHZXQgdGhlIFByb3BlcnR5U2V0IGFzIGEgbWFwLCBzbyB3ZSBjYW4gSW5zZXJ0IHRoaW5ncyBp
bnRvIGl0IGxhdGVyCisgICAgQ29tUHRyPElJbnNwZWN0YWJsZT4gdGVtcE5hdGl2ZVdpbmRvdyA9
IG1OYXRpdmVXaW5kb3c7CisgICAgcmVzdWx0ID0gdGVtcE5hdGl2ZVdpbmRvdy5BcygmbmF0aXZl
V2luZG93QXNNYXApOworICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBHZXQgdGhlIENvcmVBcHBsaWNhdGlvbiBwcm9w
ZXJ0aWVzCisgICAgcmVzdWx0ID0gY29yZUFwcGxpY2F0aW9uLT5nZXRfUHJvcGVydGllcyhjb3Jl
QXBwbGljYXRpb25Qcm9wZXJ0aWVzLkdldEFkZHJlc3NPZigpKTsKKyAgICBpZiAoRkFJTEVEKHJl
c3VsdCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gR2V0
IHRoZSBDb3JlQXBwbGljYXRpb24gcHJvcGVydGllcyBhcyBhIG1hcAorICAgIHJlc3VsdCA9IGNv
cmVBcHBsaWNhdGlvblByb3BlcnRpZXMuQXMoJmNvcmVBcHBsaWNhdGlvblByb3BlcnRpZXNBc01h
cCk7CisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIC8vIFNlZSBpZiB0aGUgYXBwbGljYXRpb24gcHJvcGVydGllcyBjb250
YWluIGFuIEVHTE5hdGl2ZVdpbmRvd1R5cGVQcm9wZXJ0eQorICAgIGJvb2xlYW4gaGFzRUdMTmF0
aXZlV2luZG93VHlwZVByb3BlcnR5OworICAgIHJlc3VsdCA9IGNvcmVBcHBsaWNhdGlvblByb3Bl
cnRpZXNBc01hcC0+SGFzS2V5KAorICAgICAgICBIU3RyaW5nUmVmZXJlbmNlKEVHTE5hdGl2ZVdp
bmRvd1R5cGVQcm9wZXJ0eSkuR2V0KCksICZoYXNFR0xOYXRpdmVXaW5kb3dUeXBlUHJvcGVydHkp
OworICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICAvLyBJZiBhbiBFR0xOYXRpdmVXaW5kb3dUeXBlUHJvcGVydHkgaXMgaW5w
dXR0ZWQgdGhlbiB1c2UgaXQKKyAgICBpZiAoaGFzRUdMTmF0aXZlV2luZG93VHlwZVByb3BlcnR5
KQorICAgIHsKKyAgICAgICAgQ29tUHRyPElJbnNwZWN0YWJsZT4gY29yZUFwcGxpY2F0aW9uUHJv
cGVydHlOYXRpdmVXaW5kb3c7CisKKyAgICAgICAgcmVzdWx0ID0gY29yZUFwcGxpY2F0aW9uUHJv
cGVydGllc0FzTWFwLT5Mb29rdXAoCisgICAgICAgICAgICBIU3RyaW5nUmVmZXJlbmNlKEVHTE5h
dGl2ZVdpbmRvd1R5cGVQcm9wZXJ0eSkuR2V0KCksCisgICAgICAgICAgICAmY29yZUFwcGxpY2F0
aW9uUHJvcGVydHlOYXRpdmVXaW5kb3cpOworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIFNlZSBpZiB0aGUgaW5wdXR0ZWQgd2luZG93IHdhcyBhIENvcmVXaW5kb3cKKyAgICAgICAg
Q29tUHRyPElDb3JlV2luZG93PiBhcHBsaWNhdGlvblByb3BlcnR5Q29yZVdpbmRvdzsKKyAgICAg
ICAgaWYgKFNVQ0NFRURFRChjb3JlQXBwbGljYXRpb25Qcm9wZXJ0eU5hdGl2ZVdpbmRvdy5Bcygm
YXBwbGljYXRpb25Qcm9wZXJ0eUNvcmVXaW5kb3cpKSkKKyAgICAgICAgeworICAgICAgICAgICAg
Ly8gU3RvcmUgYXdheSB0aGUgQ29yZVdpbmRvdydzIGRpc3BhdGNoZXIsIHRvIGJlIHVzZWQgbGF0
ZXIgdG8gcHJvY2VzcyBtZXNzYWdlcworICAgICAgICAgICAgcmVzdWx0ID0gYXBwbGljYXRpb25Q
cm9wZXJ0eUNvcmVXaW5kb3ctPmdldF9EaXNwYXRjaGVyKCZtQ29yZURpc3BhdGNoZXIpOworICAg
ICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNl
CisgICAgICAgIHsKKyAgICAgICAgICAgIENvbVB0cjxJUHJvcGVydHlTZXQ+IHByb3BTZXQ7CisK
KyAgICAgICAgICAgIC8vIERpc2FsbG93IFByb3BlcnR5IFNldHMgaGVyZSwgc2luY2Ugd2Ugd2Fu
dCB0byB3cmFwIHRoaXMgd2luZG93IGluCisgICAgICAgICAgICAvLyBhIHByb3BlcnR5IHNldCB3
aXRoIHRoZSBzaXplIHByb3BlcnR5IGJlbG93CisgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGNv
cmVBcHBsaWNhdGlvblByb3BlcnR5TmF0aXZlV2luZG93LkFzKCZwcm9wU2V0KSkpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgLy8gQWRkIHRoZSB3aW5kb3cgdG8gdGhlIG1hcAorICAgICAgICBy
ZXN1bHQgPQorICAgICAgICAgICAgbmF0aXZlV2luZG93QXNNYXAtPkluc2VydChIU3RyaW5nUmVm
ZXJlbmNlKEVHTE5hdGl2ZVdpbmRvd1R5cGVQcm9wZXJ0eSkuR2V0KCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmVBcHBsaWNhdGlvblByb3BlcnR5TmF0aXZlV2lu
ZG93LkdldCgpLCAmcHJvcGVydHlSZXBsYWNlZCk7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0
KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
fQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIENvbVB0cjxJQ29yZVdpbmRvdz4gY3VycmVudFRo
cmVhZENvcmVXaW5kb3c7CisKKyAgICAgICAgLy8gR2V0IHRoZSBDb3JlV2luZG93IGZvciB0aGUg
Y3VycmVudCB0aHJlYWQKKyAgICAgICAgcmVzdWx0ID0gY29yZVdpbmRvd1N0YXRpYy0+R2V0Rm9y
Q3VycmVudFRocmVhZCgmY3VycmVudFRocmVhZENvcmVXaW5kb3cpOworICAgICAgICBpZiAoRkFJ
TEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIEJ5IGRlZmF1bHQsIGp1c3QgYWRkIHRoaXMgdGhyZWFkJ3MgQ29y
ZVdpbmRvdyB0byB0aGUgUHJvcGVydHlTZXQKKyAgICAgICAgcmVzdWx0ID0gbmF0aXZlV2luZG93
QXNNYXAtPkluc2VydChIU3RyaW5nUmVmZXJlbmNlKEVHTE5hdGl2ZVdpbmRvd1R5cGVQcm9wZXJ0
eSkuR2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vy
cmVudFRocmVhZENvcmVXaW5kb3cuR2V0KCksICZwcm9wZXJ0eVJlcGxhY2VkKTsKKyAgICAgICAg
aWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKworICAgICAgICAvLyBTdG9yZSBhd2F5IHRoZSBDb3JlV2luZG93J3MgZGlz
cGF0Y2hlciwgdG8gYmUgdXNlZCBsYXRlciB0byBwcm9jZXNzIG1lc3NhZ2VzCisgICAgICAgIHJl
c3VsdCA9IGN1cnJlbnRUaHJlYWRDb3JlV2luZG93LT5nZXRfRGlzcGF0Y2hlcigmbUNvcmVEaXNw
YXRjaGVyKTsKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBDcmVhdGUgYSBT
aXplIHRvIHJlcHJlc2VudCB0aGUgTmF0aXZlIFdpbmRvdydzIHNpemUKKyAgICBTaXplIHJlbmRl
clNpemU7CisgICAgcmVuZGVyU2l6ZS5XaWR0aCAgPSBzdGF0aWNfY2FzdDxmbG9hdD4od2lkdGgp
OworICAgIHJlbmRlclNpemUuSGVpZ2h0ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGhlaWdodCk7Cisg
ICAgcmVzdWx0ID0gcHJvcGVydHlWYWx1ZVN0YXRpY3MtPkNyZWF0ZVNpemUocmVuZGVyU2l6ZSwg
c2l6ZVZhbHVlLkdldEFkZHJlc3NPZigpKTsKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAg
eworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gQWRkIHRoZSBTaXplIHRv
IHRoZSBQcm9wZXJ0eVNldAorICAgIHJlc3VsdCA9IG5hdGl2ZVdpbmRvd0FzTWFwLT5JbnNlcnQo
SFN0cmluZ1JlZmVyZW5jZShFR0xSZW5kZXJTdXJmYWNlU2l6ZVByb3BlcnR5KS5HZXQoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVWYWx1ZS5HZXQoKSwgJnBy
b3BlcnR5UmVwbGFjZWQpOworICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICB7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK307CisKK3ZvaWQgV2lu
UlRXaW5kb3c6OmRlc3Ryb3koKQoreworICAgIFNhZmVSZWxlYXNlKG1OYXRpdmVXaW5kb3cpOwor
CisgICAgbUNvcmVEaXNwYXRjaGVyLlJlc2V0KCk7Cit9CisKK0VHTE5hdGl2ZVdpbmRvd1R5cGUg
V2luUlRXaW5kb3c6OmdldE5hdGl2ZVdpbmRvdygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1OYXRp
dmVXaW5kb3c7Cit9CisKK0VHTE5hdGl2ZURpc3BsYXlUeXBlIFdpblJUV2luZG93OjpnZXROYXRp
dmVEaXNwbGF5KCkgY29uc3QKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEVHTE5hdGl2ZURpc3BsYXlUeXBlPigwKTsKK30KKwordm9pZCBXaW5SVFdpbmRv
dzo6bWVzc2FnZUxvb3AoKQoreworICAgIC8vIElmIHdlIGhhdmUgYSBDb3JlRGlzcGF0Y2hlciB0
aGVuIHVzZSBpdCB0byBwcm9jZXNzIGV2ZW50cworICAgIGlmIChtQ29yZURpc3BhdGNoZXIpCisg
ICAgeworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9CisgICAgICAgICAgICBtQ29yZURpc3BhdGNo
ZXItPlByb2Nlc3NFdmVudHMoQ29yZVByb2Nlc3NFdmVudHNPcHRpb25fUHJvY2Vzc0FsbElmUHJl
c2VudCk7CisgICAgICAgIFVOVVNFRF9BU1NFUlRJT05fVkFSSUFCTEUocmVzdWx0KTsKKyAgICAg
ICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICB9Cit9CisKK3ZvaWQgV2luUlRXaW5k
b3c6OnNldE1vdXNlUG9zaXRpb24oaW50IC8qIHggKi8sIGludCAvKiB5ICovKQoreworICAgIFVO
SU1QTEVNRU5URUQoKTsKK30KKworYm9vbCBXaW5SVFdpbmRvdzo6c2V0UG9zaXRpb24oaW50IC8q
IHggKi8sIGludCAvKiB5ICovKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK2Jvb2wgV2luUlRXaW5kb3c6OnJlc2l6ZShpbnQgLyogd2lkdGggKi8sIGlu
dCAvKiBoZWlnaHQgKi8pCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKwordm9pZCBXaW5SVFdpbmRvdzo6c2V0VmlzaWJsZShib29sIGlzVmlzaWJsZSkKK3sK
KyAgICBpZiAoaXNWaXNpYmxlKQorICAgIHsKKyAgICAgICAgLy8gQWxyZWFkeSB2aXNpYmxlIGJ5
IGRlZmF1bHQKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAg
ICAvLyBOb3QgaW1wbGVtZW50ZWQgaW4gV2luUlQKKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgIH0KK30KKwordm9pZCBXaW5SVFdpbmRvdzo6c2lnbmFsVGVzdEV2ZW50KCkKK3sKKyAgICBV
TklNUExFTUVOVEVEKCk7Cit9CisKK09TV2luZG93ICpDcmVhdGVPU1dpbmRvdygpCit7CisgICAg
cmV0dXJuIG5ldyBXaW5SVFdpbmRvdygpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvd2luZG93cy93aW5ydC9XaW5SVFdp
bmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvd2luZG93
cy93aW5ydC9XaW5SVFdpbmRvdy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3V0aWwvd2luZG93cy93aW5ydC9XaW5SVFdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNDUgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBXaW5SVFdpbmRvdy5oOiBEZWZpbml0
aW9uIG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBPU1dpbmRvdyBmb3IgV2luUlQgKFdpbmRvd3Mp
CisKKyNpZm5kZWYgVVRJTF9XSU5SVF9XSU5ET1dfSAorI2RlZmluZSBVVElMX1dJTlJUX1dJTkRP
V19ICisKKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUg
PHdpbmRvd3MuYXBwbGljYXRpb25tb2RlbC5jb3JlLmg+CisjaW5jbHVkZSA8d3JsLmg+CisKKyNp
bmNsdWRlICJPU1dpbmRvdy5oIgorCitjbGFzcyBXaW5SVFdpbmRvdyA6IHB1YmxpYyBPU1dpbmRv
dworeworICBwdWJsaWM6CisgICAgV2luUlRXaW5kb3coKTsKKyAgICB+V2luUlRXaW5kb3coKSBv
dmVycmlkZTsKKworICAgIGJvb2wgaW5pdGlhbGl6ZShjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSwg
c2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICB2b2lkIGRlc3Ryb3ko
KSBvdmVycmlkZTsKKworICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgZ2V0TmF0aXZlV2luZG93KCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgRUdMTmF0aXZlRGlzcGxheVR5cGUgZ2V0TmF0aXZlRGlzcGxh
eSgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgdm9pZCBtZXNzYWdlTG9vcCgpIG92ZXJyaWRlOwor
CisgICAgdm9pZCBzZXRNb3VzZVBvc2l0aW9uKGludCB4LCBpbnQgeSkgb3ZlcnJpZGU7CisgICAg
Ym9vbCBzZXRQb3NpdGlvbihpbnQgeCwgaW50IHkpIG92ZXJyaWRlOworICAgIGJvb2wgcmVzaXpl
KGludCB3aWR0aCwgaW50IGhlaWdodCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRWaXNpYmxlKGJv
b2wgaXNWaXNpYmxlKSBvdmVycmlkZTsKKworICAgIHZvaWQgc2lnbmFsVGVzdEV2ZW50KCkgb3Zl
cnJpZGU7CisKKyAgcHJpdmF0ZToKKyAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIG1OYXRpdmVXaW5k
b3c7CisgICAgTWljcm9zb2Z0OjpXUkw6OkNvbVB0cjxBQkk6OldpbmRvd3M6OlVJOjpDb3JlOjpJ
Q29yZURpc3BhdGNoZXI+IG1Db3JlRGlzcGF0Y2hlcjsKK307CisKKyNlbmRpZiAgLy8gVVRJTF9X
SU5SVF9XSU5ET1dfSApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC93aW5kb3dz
L3dpbnJ0L1dpblJUX3N5c3RlbV91dGlscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvdXRpbC93aW5kb3dzL3dpbnJ0L1dpblJUX3N5c3RlbV91dGlscy5jcHAJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC93aW5kb3dzL3dpbnJ0
L1dpblJUX3N5c3RlbV91dGlscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAor
Ly8KKy8vIENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisKKy8vIFdpblJUX3N5c3RlbV91dGlscy5jcHA6IEltcGxlbWVudGF0aW9u
IG9mIE9TLXNwZWNpZmljIGZ1bmN0aW9ucyBmb3IgV2luUlQgKFdpbmRvd3MpCisKKyNpbmNsdWRl
ICJzeXN0ZW1fdXRpbHMuaCIKKworI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDxhcnJh
eT4KKworbmFtZXNwYWNlIGFuZ2xlCit7CisKK3ZvaWQgU2V0TG93UHJpb3JpdHlQcm9jZXNzKCkK
K3sKKyAgICAvLyBObyBlcXVpdmFsZW50IHRvIHRoaXMgaW4gV2luUlQKK30KKworTGlicmFyeSAq
bG9hZExpYnJhcnkoY29uc3Qgc3RkOjpzdHJpbmcgJmxpYnJhcnlOYW1lKQoreworICAgIC8vIFdp
blJUIGNhbm5vdCBsb2FkIGNvZGUgZHluYW1pY2FsbHkuCisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK30gIC8vIG5hbWVzcGFjZSBhbmdsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
dXRpbC94MTEvWDExUGl4bWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS91dGlsL3gxMS9YMTFQaXhtYXAuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3V0aWwveDExL1gxMVBpeG1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0NSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFgxMVBpeG1hcC5jcHA6IEltcGxlbWVudGF0
aW9uIG9mIE9TUGl4bWFwIGZvciBYMTEKKworI2luY2x1ZGUgIngxMS9YMTFQaXhtYXAuaCIKKwor
WDExUGl4bWFwOjpYMTFQaXhtYXAoKQorICA6IG1QaXhtYXAoMCksCisgICAgbURpc3BsYXkobnVs
bHB0cikKK3sKK30KKworWDExUGl4bWFwOjp+WDExUGl4bWFwKCkKK3sKKyAgICBpZiAobVBpeG1h
cCkKKyAgICB7CisgICAgICAgIFhGcmVlUGl4bWFwKG1EaXNwbGF5LCBtUGl4bWFwKTsKKyAgICB9
Cit9CisKK2Jvb2wgWDExUGl4bWFwOjppbml0aWFsaXplKEVHTE5hdGl2ZURpc3BsYXlUeXBlIGRp
c3BsYXksIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgaW50IGRlcHRoKQoreworICAgIG1E
aXNwbGF5ID0gZGlzcGxheTsKKworICAgIGludCBzY3JlZW4gPSBEZWZhdWx0U2NyZWVuKG1EaXNw
bGF5KTsKKyAgICBXaW5kb3cgcm9vdCA9IFJvb3RXaW5kb3cobURpc3BsYXksIHNjcmVlbik7CisK
KyAgICBtUGl4bWFwID0gWENyZWF0ZVBpeG1hcChtRGlzcGxheSwgcm9vdCwgd2lkdGgsIGhlaWdo
dCwgZGVwdGgpOworCisgICAgcmV0dXJuIG1QaXhtYXAgIT0gMDsKK30KKworRUdMTmF0aXZlUGl4
bWFwVHlwZSBYMTFQaXhtYXA6OmdldE5hdGl2ZVBpeG1hcCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1QaXhtYXA7Cit9CisKK09TUGl4bWFwICpDcmVhdGVPU1BpeG1hcCgpCit7CisgICAgcmV0dXJu
IG5ldyBYMTFQaXhtYXAoKTsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwv
eDExL1gxMVBpeG1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0
aWwveDExL1gxMVBpeG1hcC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3V0aWwveDExL1gxMVBpeG1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzIgQEAK
Ky8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworCisvLyBYMTFQaXhtYXAuaDogRGVmaW5pdGlvbiBvZiB0aGUgaW1wbGVt
ZW50YXRpb24gb2YgT1NQaXhtYXAgZm9yIFgxMQorCisjaWZuZGVmIFVUSUxfWDExX1BJWE1BUF9I
XworI2RlZmluZSBVVElMX1gxMV9QSVhNQVBfSF8KKworI2luY2x1ZGUgPFgxMS9YbGliLmg+Cisj
aW5jbHVkZSA8WDExL1h1dGlsLmg+CisKKyNpbmNsdWRlICJPU1BpeG1hcC5oIgorCitjbGFzcyBY
MTFQaXhtYXAgOiBwdWJsaWMgT1NQaXhtYXAKK3sKKyAgcHVibGljOgorICAgIFgxMVBpeG1hcCgp
OworICAgIH5YMTFQaXhtYXAoKSBvdmVycmlkZTsKKworICAgIGJvb2wgaW5pdGlhbGl6ZShFR0xO
YXRpdmVEaXNwbGF5VHlwZSBkaXNwbGF5LCBzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIGlu
dCBkZXB0aCkgb3ZlcnJpZGU7CisKKyAgICBFR0xOYXRpdmVQaXhtYXBUeXBlIGdldE5hdGl2ZVBp
eG1hcCgpIGNvbnN0IG92ZXJyaWRlOworCisgIHByaXZhdGU6CisgICAgUGl4bWFwIG1QaXhtYXA7
CisgICAgRGlzcGxheSAqbURpc3BsYXk7Cit9OworCisjZW5kaWYgLy8gVVRJTF9YMTFfUElYTUFQ
X0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3gxMS9YMTFXaW5kb3cuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwveDExL1gxMVdpbmRv
dy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC94MTEv
WDExV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYxMSBAQAorLy8KKy8vIENv
cHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisKKy8vIFgxMVdpbmRvdy5jcHA6IEltcGxlbWVudGF0aW9uIG9mIE9TV2luZG93IGZvciBY
MTEKKworI2luY2x1ZGUgIngxMS9YMTFXaW5kb3cuaCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1
Zy5oIgorI2luY2x1ZGUgInN5c3RlbV91dGlscy5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCisKK25h
bWVzcGFjZSB7CisKK0Jvb2wgV2FpdEZvck1hcE5vdGlmeShEaXNwbGF5ICpkcHksIFhFdmVudCAq
ZXZlbnQsIFhQb2ludGVyIHdpbmRvdykKK3sKKyAgICByZXR1cm4gZXZlbnQtPnR5cGUgPT0gTWFw
Tm90aWZ5ICYmIGV2ZW50LT54bWFwLndpbmRvdyA9PSByZWludGVycHJldF9jYXN0PFdpbmRvdz4o
d2luZG93KTsKK30KKworc3RhdGljIEtleSBYMTFDb2RlVG9LZXkoRGlzcGxheSAqZGlzcGxheSwg
dW5zaWduZWQgaW50IHNjYW5jb2RlKQoreworICAgIGludCB0ZW1wOworICAgIEtleVN5bSAqa2V5
U3ltYm9sczsKKyAgICBrZXlTeW1ib2xzID0gWEdldEtleWJvYXJkTWFwcGluZyhkaXNwbGF5LCBz
Y2FuY29kZSwgMSwgJnRlbXApOworCisgICAgdW5zaWduZWQgaW50IGtleVN5bWJvbCA9IGtleVN5
bWJvbHNbMF07CisgICAgWEZyZWUoa2V5U3ltYm9scyk7CisKKyAgICBzd2l0Y2ggKGtleVN5bWJv
bCkKKyAgICB7CisgICAgICBjYXNlIFhLX1NoaWZ0X0w6ICAgICByZXR1cm4gS0VZX0xTSElGVDsK
KyAgICAgIGNhc2UgWEtfU2hpZnRfUjogICAgIHJldHVybiBLRVlfUlNISUZUOworICAgICAgY2Fz
ZSBYS19BbHRfTDogICAgICAgcmV0dXJuIEtFWV9MQUxUOworICAgICAgY2FzZSBYS19BbHRfUjog
ICAgICAgcmV0dXJuIEtFWV9SQUxUOworICAgICAgY2FzZSBYS19Db250cm9sX0w6ICAgcmV0dXJu
IEtFWV9MQ09OVFJPTDsKKyAgICAgIGNhc2UgWEtfQ29udHJvbF9SOiAgIHJldHVybiBLRVlfUkNP
TlRST0w7CisgICAgICBjYXNlIFhLX1N1cGVyX0w6ICAgICByZXR1cm4gS0VZX0xTWVNURU07Cisg
ICAgICBjYXNlIFhLX1N1cGVyX1I6ICAgICByZXR1cm4gS0VZX1JTWVNURU07CisgICAgICBjYXNl
IFhLX01lbnU6ICAgICAgICByZXR1cm4gS0VZX01FTlU7CisKKyAgICAgIGNhc2UgWEtfc2VtaWNv
bG9uOiAgIHJldHVybiBLRVlfU0VNSUNPTE9OOworICAgICAgY2FzZSBYS19zbGFzaDogICAgICAg
cmV0dXJuIEtFWV9TTEFTSDsKKyAgICAgIGNhc2UgWEtfZXF1YWw6ICAgICAgIHJldHVybiBLRVlf
RVFVQUw7CisgICAgICBjYXNlIFhLX21pbnVzOiAgICAgICByZXR1cm4gS0VZX0RBU0g7CisgICAg
ICBjYXNlIFhLX2JyYWNrZXRsZWZ0OiByZXR1cm4gS0VZX0xCUkFDS0VUOworICAgICAgY2FzZSBY
S19icmFja2V0cmlnaHQ6cmV0dXJuIEtFWV9SQlJBQ0tFVDsKKyAgICAgIGNhc2UgWEtfY29tbWE6
ICAgICAgIHJldHVybiBLRVlfQ09NTUE7CisgICAgICBjYXNlIFhLX3BlcmlvZDogICAgICByZXR1
cm4gS0VZX1BFUklPRDsKKyAgICAgIGNhc2UgWEtfYmFja3NsYXNoOiAgIHJldHVybiBLRVlfQkFD
S1NMQVNIOworICAgICAgY2FzZSBYS19hc2NpaXRpbGRlOiAgcmV0dXJuIEtFWV9USUxERTsKKyAg
ICAgIGNhc2UgWEtfRXNjYXBlOiAgICAgIHJldHVybiBLRVlfRVNDQVBFOworICAgICAgY2FzZSBY
S19zcGFjZTogICAgICAgcmV0dXJuIEtFWV9TUEFDRTsKKyAgICAgIGNhc2UgWEtfUmV0dXJuOiAg
ICAgIHJldHVybiBLRVlfUkVUVVJOOworICAgICAgY2FzZSBYS19CYWNrU3BhY2U6ICAgcmV0dXJu
IEtFWV9CQUNLOworICAgICAgY2FzZSBYS19UYWI6ICAgICAgICAgcmV0dXJuIEtFWV9UQUI7Cisg
ICAgICBjYXNlIFhLX1BhZ2VfVXA6ICAgICByZXR1cm4gS0VZX1BBR0VVUDsKKyAgICAgIGNhc2Ug
WEtfUGFnZV9Eb3duOiAgIHJldHVybiBLRVlfUEFHRURPV047CisgICAgICBjYXNlIFhLX0VuZDog
ICAgICAgICByZXR1cm4gS0VZX0VORDsKKyAgICAgIGNhc2UgWEtfSG9tZTogICAgICAgIHJldHVy
biBLRVlfSE9NRTsKKyAgICAgIGNhc2UgWEtfSW5zZXJ0OiAgICAgIHJldHVybiBLRVlfSU5TRVJU
OworICAgICAgY2FzZSBYS19EZWxldGU6ICAgICAgcmV0dXJuIEtFWV9ERUxFVEU7CisgICAgICBj
YXNlIFhLX0tQX0FkZDogICAgICByZXR1cm4gS0VZX0FERDsKKyAgICAgIGNhc2UgWEtfS1BfU3Vi
dHJhY3Q6IHJldHVybiBLRVlfU1VCVFJBQ1Q7CisgICAgICBjYXNlIFhLX0tQX011bHRpcGx5OiBy
ZXR1cm4gS0VZX01VTFRJUExZOworICAgICAgY2FzZSBYS19LUF9EaXZpZGU6ICAgcmV0dXJuIEtF
WV9ESVZJREU7CisgICAgICBjYXNlIFhLX1BhdXNlOiAgICAgICByZXR1cm4gS0VZX1BBVVNFOwor
CisgICAgICBjYXNlIFhLX0YxOiAgICAgICAgICByZXR1cm4gS0VZX0YxOworICAgICAgY2FzZSBY
S19GMjogICAgICAgICAgcmV0dXJuIEtFWV9GMjsKKyAgICAgIGNhc2UgWEtfRjM6ICAgICAgICAg
IHJldHVybiBLRVlfRjM7CisgICAgICBjYXNlIFhLX0Y0OiAgICAgICAgICByZXR1cm4gS0VZX0Y0
OworICAgICAgY2FzZSBYS19GNTogICAgICAgICAgcmV0dXJuIEtFWV9GNTsKKyAgICAgIGNhc2Ug
WEtfRjY6ICAgICAgICAgIHJldHVybiBLRVlfRjY7CisgICAgICBjYXNlIFhLX0Y3OiAgICAgICAg
ICByZXR1cm4gS0VZX0Y3OworICAgICAgY2FzZSBYS19GODogICAgICAgICAgcmV0dXJuIEtFWV9G
ODsKKyAgICAgIGNhc2UgWEtfRjk6ICAgICAgICAgIHJldHVybiBLRVlfRjk7CisgICAgICBjYXNl
IFhLX0YxMDogICAgICAgICByZXR1cm4gS0VZX0YxMDsKKyAgICAgIGNhc2UgWEtfRjExOiAgICAg
ICAgIHJldHVybiBLRVlfRjExOworICAgICAgY2FzZSBYS19GMTI6ICAgICAgICAgcmV0dXJuIEtF
WV9GMTI7CisgICAgICBjYXNlIFhLX0YxMzogICAgICAgICByZXR1cm4gS0VZX0YxMzsKKyAgICAg
IGNhc2UgWEtfRjE0OiAgICAgICAgIHJldHVybiBLRVlfRjE0OworICAgICAgY2FzZSBYS19GMTU6
ICAgICAgICAgcmV0dXJuIEtFWV9GMTU7CisKKyAgICAgIGNhc2UgWEtfTGVmdDogICAgICAgIHJl
dHVybiBLRVlfTEVGVDsKKyAgICAgIGNhc2UgWEtfUmlnaHQ6ICAgICAgIHJldHVybiBLRVlfUklH
SFQ7CisgICAgICBjYXNlIFhLX0Rvd246ICAgICAgICByZXR1cm4gS0VZX0RPV047CisgICAgICBj
YXNlIFhLX1VwOiAgICAgICAgICByZXR1cm4gS0VZX1VQOworCisgICAgICBjYXNlIFhLX0tQX0lu
c2VydDogICByZXR1cm4gS0VZX05VTVBBRDA7CisgICAgICBjYXNlIFhLX0tQX0VuZDogICAgICBy
ZXR1cm4gS0VZX05VTVBBRDE7CisgICAgICBjYXNlIFhLX0tQX0Rvd246ICAgICByZXR1cm4gS0VZ
X05VTVBBRDI7CisgICAgICBjYXNlIFhLX0tQX1BhZ2VfRG93bjpyZXR1cm4gS0VZX05VTVBBRDM7
CisgICAgICBjYXNlIFhLX0tQX0xlZnQ6ICAgICByZXR1cm4gS0VZX05VTVBBRDQ7CisgICAgICBj
YXNlIFhLX0tQXzU6ICAgICAgICByZXR1cm4gS0VZX05VTVBBRDU7CisgICAgICBjYXNlIFhLX0tQ
X1JpZ2h0OiAgICByZXR1cm4gS0VZX05VTVBBRDY7CisgICAgICBjYXNlIFhLX0tQX0hvbWU6ICAg
ICByZXR1cm4gS0VZX05VTVBBRDc7CisgICAgICBjYXNlIFhLX0tQX1VwOiAgICAgICByZXR1cm4g
S0VZX05VTVBBRDg7CisgICAgICBjYXNlIFhLX0tQX1BhZ2VfVXA6ICByZXR1cm4gS0VZX05VTVBB
RDk7CisKKyAgICAgIGNhc2UgWEtfYTogICAgICAgICAgIHJldHVybiBLRVlfQTsKKyAgICAgIGNh
c2UgWEtfYjogICAgICAgICAgIHJldHVybiBLRVlfQjsKKyAgICAgIGNhc2UgWEtfYzogICAgICAg
ICAgIHJldHVybiBLRVlfQzsKKyAgICAgIGNhc2UgWEtfZDogICAgICAgICAgIHJldHVybiBLRVlf
RDsKKyAgICAgIGNhc2UgWEtfZTogICAgICAgICAgIHJldHVybiBLRVlfRTsKKyAgICAgIGNhc2Ug
WEtfZjogICAgICAgICAgIHJldHVybiBLRVlfRjsKKyAgICAgIGNhc2UgWEtfZzogICAgICAgICAg
IHJldHVybiBLRVlfRzsKKyAgICAgIGNhc2UgWEtfaDogICAgICAgICAgIHJldHVybiBLRVlfSDsK
KyAgICAgIGNhc2UgWEtfaTogICAgICAgICAgIHJldHVybiBLRVlfSTsKKyAgICAgIGNhc2UgWEtf
ajogICAgICAgICAgIHJldHVybiBLRVlfSjsKKyAgICAgIGNhc2UgWEtfazogICAgICAgICAgIHJl
dHVybiBLRVlfSzsKKyAgICAgIGNhc2UgWEtfbDogICAgICAgICAgIHJldHVybiBLRVlfTDsKKyAg
ICAgIGNhc2UgWEtfbTogICAgICAgICAgIHJldHVybiBLRVlfTTsKKyAgICAgIGNhc2UgWEtfbjog
ICAgICAgICAgIHJldHVybiBLRVlfTjsKKyAgICAgIGNhc2UgWEtfbzogICAgICAgICAgIHJldHVy
biBLRVlfTzsKKyAgICAgIGNhc2UgWEtfcDogICAgICAgICAgIHJldHVybiBLRVlfUDsKKyAgICAg
IGNhc2UgWEtfcTogICAgICAgICAgIHJldHVybiBLRVlfUTsKKyAgICAgIGNhc2UgWEtfcjogICAg
ICAgICAgIHJldHVybiBLRVlfUjsKKyAgICAgIGNhc2UgWEtfczogICAgICAgICAgIHJldHVybiBL
RVlfUzsKKyAgICAgIGNhc2UgWEtfdDogICAgICAgICAgIHJldHVybiBLRVlfVDsKKyAgICAgIGNh
c2UgWEtfdTogICAgICAgICAgIHJldHVybiBLRVlfVTsKKyAgICAgIGNhc2UgWEtfdjogICAgICAg
ICAgIHJldHVybiBLRVlfVjsKKyAgICAgIGNhc2UgWEtfdzogICAgICAgICAgIHJldHVybiBLRVlf
VzsKKyAgICAgIGNhc2UgWEtfeDogICAgICAgICAgIHJldHVybiBLRVlfWDsKKyAgICAgIGNhc2Ug
WEtfeTogICAgICAgICAgIHJldHVybiBLRVlfWTsKKyAgICAgIGNhc2UgWEtfejogICAgICAgICAg
IHJldHVybiBLRVlfWjsKKworICAgICAgY2FzZSBYS18xOiAgICAgICAgICAgcmV0dXJuIEtFWV9O
VU0xOworICAgICAgY2FzZSBYS18yOiAgICAgICAgICAgcmV0dXJuIEtFWV9OVU0yOworICAgICAg
Y2FzZSBYS18zOiAgICAgICAgICAgcmV0dXJuIEtFWV9OVU0zOworICAgICAgY2FzZSBYS180OiAg
ICAgICAgICAgcmV0dXJuIEtFWV9OVU00OworICAgICAgY2FzZSBYS181OiAgICAgICAgICAgcmV0
dXJuIEtFWV9OVU01OworICAgICAgY2FzZSBYS182OiAgICAgICAgICAgcmV0dXJuIEtFWV9OVU02
OworICAgICAgY2FzZSBYS183OiAgICAgICAgICAgcmV0dXJuIEtFWV9OVU03OworICAgICAgY2Fz
ZSBYS184OiAgICAgICAgICAgcmV0dXJuIEtFWV9OVU04OworICAgICAgY2FzZSBYS185OiAgICAg
ICAgICAgcmV0dXJuIEtFWV9OVU05OworICAgICAgY2FzZSBYS18wOiAgICAgICAgICAgcmV0dXJu
IEtFWV9OVU0wOworICAgIH0KKworICAgIHJldHVybiBLZXkoMCk7Cit9CisKK3N0YXRpYyB2b2lk
IEFkZFgxMUtleVN0YXRlVG9FdmVudChFdmVudCAqZXZlbnQsIHVuc2lnbmVkIGludCBzdGF0ZSkK
K3sKKyAgICBldmVudC0+S2V5LlNoaWZ0ID0gc3RhdGUgJiBTaGlmdE1hc2s7CisgICAgZXZlbnQt
PktleS5Db250cm9sID0gc3RhdGUgJiBDb250cm9sTWFzazsKKyAgICBldmVudC0+S2V5LkFsdCA9
IHN0YXRlICYgTW9kMU1hc2s7CisgICAgZXZlbnQtPktleS5TeXN0ZW0gPSBzdGF0ZSAmIE1vZDRN
YXNrOworfQorCit9CisKK1gxMVdpbmRvdzo6WDExV2luZG93KCkKKyAgICA6IFdNX0RFTEVURV9X
SU5ET1coTm9uZSksCisgICAgICBXTV9QUk9UT0NPTFMoTm9uZSksCisgICAgICBURVNUX0VWRU5U
KE5vbmUpLAorICAgICAgbURpc3BsYXkobnVsbHB0ciksCisgICAgICBtV2luZG93KDApLAorICAg
ICAgbVJlcXVlc3RlZFZpc3VhbElkKC0xKSwKKyAgICAgIG1WaXNpYmxlKGZhbHNlKQoreworfQor
CitYMTFXaW5kb3c6OlgxMVdpbmRvdyhpbnQgdmlzdWFsSWQpCisgICAgOiBXTV9ERUxFVEVfV0lO
RE9XKE5vbmUpLAorICAgICAgV01fUFJPVE9DT0xTKE5vbmUpLAorICAgICAgVEVTVF9FVkVOVChO
b25lKSwKKyAgICAgIG1EaXNwbGF5KG51bGxwdHIpLAorICAgICAgbVdpbmRvdygwKSwKKyAgICAg
IG1SZXF1ZXN0ZWRWaXN1YWxJZCh2aXN1YWxJZCksCisgICAgICBtVmlzaWJsZShmYWxzZSkKK3sK
K30KKworWDExV2luZG93Ojp+WDExV2luZG93KCkKK3sKKyAgICBkZXN0cm95KCk7Cit9CisKK2Jv
b2wgWDExV2luZG93Ojppbml0aWFsaXplKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lLCBzaXplX3Qg
d2lkdGgsIHNpemVfdCBoZWlnaHQpCit7CisgICAgZGVzdHJveSgpOworCisgICAgbURpc3BsYXkg
PSBYT3BlbkRpc3BsYXkoTlVMTCk7CisgICAgaWYgKCFtRGlzcGxheSkKKyAgICB7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGludCBzY3JlZW4gPSBEZWZh
dWx0U2NyZWVuKG1EaXNwbGF5KTsKKyAgICAgICAgV2luZG93IHJvb3QgPSBSb290V2luZG93KG1E
aXNwbGF5LCBzY3JlZW4pOworCisgICAgICAgIFZpc3VhbCAqdmlzdWFsOworICAgICAgICBpZiAo
bVJlcXVlc3RlZFZpc3VhbElkID09IC0xKQorICAgICAgICB7CisgICAgICAgICAgICB2aXN1YWwg
PSBEZWZhdWx0VmlzdWFsKG1EaXNwbGF5LCBzY3JlZW4pOworICAgICAgICB9CisgICAgICAgIGVs
c2UKKyAgICAgICAgeworICAgICAgICAgICAgWFZpc3VhbEluZm8gdmlzdWFsVGVtcGxhdGU7Cisg
ICAgICAgICAgICB2aXN1YWxUZW1wbGF0ZS52aXN1YWxpZCA9IG1SZXF1ZXN0ZWRWaXN1YWxJZDsK
KworICAgICAgICAgICAgaW50IG51bVZpc3VhbHMgICAgICAgPSAwOworICAgICAgICAgICAgWFZp
c3VhbEluZm8gKnZpc3VhbHMgPSBYR2V0VmlzdWFsSW5mbyhtRGlzcGxheSwgVmlzdWFsSURNYXNr
LCAmdmlzdWFsVGVtcGxhdGUsICZudW1WaXN1YWxzKTsKKyAgICAgICAgICAgIGlmIChudW1WaXN1
YWxzIDw9IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKG51bVZpc3VhbHMgPT0gMSk7CisKKyAg
ICAgICAgICAgIHZpc3VhbCA9IHZpc3VhbHNbMF0udmlzdWFsOworICAgICAgICAgICAgWEZyZWUo
dmlzdWFscyk7CisgICAgICAgIH0KKworICAgICAgICBpbnQgZGVwdGggPSBEZWZhdWx0RGVwdGgo
bURpc3BsYXksIHNjcmVlbik7CisgICAgICAgIENvbG9ybWFwIGNvbG9ybWFwID0gWENyZWF0ZUNv
bG9ybWFwKG1EaXNwbGF5LCByb290LCB2aXN1YWwsIEFsbG9jTm9uZSk7CisKKyAgICAgICAgWFNl
dFdpbmRvd0F0dHJpYnV0ZXMgYXR0cmlidXRlczsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBhdHRy
aWJ1dGVNYXNrID0gQ1dCb3JkZXJQaXhlbCB8IENXQ29sb3JtYXAgfCBDV0V2ZW50TWFzazsKKwor
ICAgICAgICBhdHRyaWJ1dGVzLmV2ZW50X21hc2sgPSBTdHJ1Y3R1cmVOb3RpZnlNYXNrIHwgUG9p
bnRlck1vdGlvbk1hc2sgfCBCdXR0b25QcmVzc01hc2sgfAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBCdXR0b25SZWxlYXNlTWFzayB8IEZvY3VzQ2hhbmdlTWFzayB8IEVudGVyV2lu
ZG93TWFzayB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlYXZlV2luZG93TWFz
ayB8IEtleVByZXNzTWFzayB8IEtleVJlbGVhc2VNYXNrOworICAgICAgICBhdHRyaWJ1dGVzLmJv
cmRlcl9waXhlbCA9IDA7CisgICAgICAgIGF0dHJpYnV0ZXMuY29sb3JtYXAgPSBjb2xvcm1hcDsK
KworICAgICAgICBtV2luZG93ID0gWENyZWF0ZVdpbmRvdyhtRGlzcGxheSwgcm9vdCwgMCwgMCwg
d2lkdGgsIGhlaWdodCwgMCwgZGVwdGgsIElucHV0T3V0cHV0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2aXN1YWwsIGF0dHJpYnV0ZU1hc2ssICZhdHRyaWJ1dGVzKTsKKyAgICAg
ICAgWEZyZWVDb2xvcm1hcChtRGlzcGxheSwgY29sb3JtYXApOworICAgIH0KKworICAgIGlmICgh
bVdpbmRvdykKKyAgICB7CisgICAgICAgIGRlc3Ryb3koKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIC8vIFRlbGwgdGhlIHdpbmRvdyBtYW5hZ2VyIHRvIG5vdGlmeSB1cyB3
aGVuIHRoZSB1c2VyIHdhbnRzIHRvIGNsb3NlIHRoZQorICAgIC8vIHdpbmRvdyBzbyB3ZSBjYW4g
ZG8gaXQgb3Vyc2VsdmVzLgorICAgIFdNX0RFTEVURV9XSU5ET1cgPSBYSW50ZXJuQXRvbShtRGlz
cGxheSwgIldNX0RFTEVURV9XSU5ET1ciLCBGYWxzZSk7CisgICAgV01fUFJPVE9DT0xTID0gWElu
dGVybkF0b20obURpc3BsYXksICJXTV9QUk9UT0NPTFMiLCBGYWxzZSk7CisgICAgaWYgKFdNX0RF
TEVURV9XSU5ET1cgPT0gTm9uZSB8fCBXTV9QUk9UT0NPTFMgPT0gTm9uZSkKKyAgICB7CisgICAg
ICAgIGRlc3Ryb3koKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmKFhT
ZXRXTVByb3RvY29scyhtRGlzcGxheSwgbVdpbmRvdywgJldNX0RFTEVURV9XSU5ET1csIDEpID09
IDApCisgICAgeworICAgICAgICBkZXN0cm95KCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICAvLyBDcmVhdGUgYW4gYXRvbSB0byBpZGVudGlmeSBvdXIgdGVzdCBldmVudAor
ICAgIFRFU1RfRVZFTlQgPSBYSW50ZXJuQXRvbShtRGlzcGxheSwgIkFOR0xFX1RFU1RfRVZFTlQi
LCBGYWxzZSk7CisgICAgaWYgKFRFU1RfRVZFTlQgPT0gTm9uZSkKKyAgICB7CisgICAgICAgIGRl
c3Ryb3koKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFhGbHVzaChtRGlz
cGxheSk7CisKKyAgICBtWCA9IDA7CisgICAgbVkgPSAwOworICAgIG1XaWR0aCA9IHdpZHRoOwor
ICAgIG1IZWlnaHQgPSBoZWlnaHQ7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBYMTFX
aW5kb3c6OmRlc3Ryb3koKQoreworICAgIGlmIChtV2luZG93KQorICAgIHsKKyAgICAgICAgWERl
c3Ryb3lXaW5kb3cobURpc3BsYXksIG1XaW5kb3cpOworICAgICAgICBtV2luZG93ID0gMDsKKyAg
ICB9CisgICAgaWYgKG1EaXNwbGF5KQorICAgIHsKKyAgICAgICAgWENsb3NlRGlzcGxheShtRGlz
cGxheSk7CisgICAgICAgIG1EaXNwbGF5ID0gbnVsbHB0cjsKKyAgICB9CisgICAgV01fREVMRVRF
X1dJTkRPVyA9IE5vbmU7CisgICAgV01fUFJPVE9DT0xTID0gTm9uZTsKK30KKworRUdMTmF0aXZl
V2luZG93VHlwZSBYMTFXaW5kb3c6OmdldE5hdGl2ZVdpbmRvdygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1XaW5kb3c7Cit9CisKK0VHTE5hdGl2ZURpc3BsYXlUeXBlIFgxMVdpbmRvdzo6Z2V0TmF0
aXZlRGlzcGxheSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1EaXNwbGF5OworfQorCit2b2lkIFgx
MVdpbmRvdzo6bWVzc2FnZUxvb3AoKQoreworICAgIGludCBldmVudENvdW50ID0gWFBlbmRpbmco
bURpc3BsYXkpOworICAgIHdoaWxlIChldmVudENvdW50LS0pCisgICAgeworICAgICAgICBYRXZl
bnQgZXZlbnQ7CisgICAgICAgIFhOZXh0RXZlbnQobURpc3BsYXksICZldmVudCk7CisgICAgICAg
IHByb2Nlc3NFdmVudChldmVudCk7CisgICAgfQorfQorCit2b2lkIFgxMVdpbmRvdzo6c2V0TW91
c2VQb3NpdGlvbihpbnQgeCwgaW50IHkpCit7CisgICAgWFdhcnBQb2ludGVyKG1EaXNwbGF5LCBO
b25lLCBtV2luZG93LCAwLCAwLCAwLCAwLCB4LCB5KTsKK30KKworT1NXaW5kb3cgKkNyZWF0ZU9T
V2luZG93KCkKK3sKKyAgICByZXR1cm4gbmV3IFgxMVdpbmRvdygpOworfQorCitib29sIFgxMVdp
bmRvdzo6c2V0UG9zaXRpb24oaW50IHgsIGludCB5KQoreworICAgIFhNb3ZlV2luZG93KG1EaXNw
bGF5LCBtV2luZG93LCB4LCB5KTsKKyAgICBYRmx1c2gobURpc3BsYXkpOworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIFgxMVdpbmRvdzo6cmVzaXplKGludCB3aWR0aCwgaW50IGhlaWdodCkK
K3sKKyAgICBYUmVzaXplV2luZG93KG1EaXNwbGF5LCBtV2luZG93LCB3aWR0aCwgaGVpZ2h0KTsK
KyAgICBYRmx1c2gobURpc3BsYXkpOworCisgICAgVGltZXIqIHRpbWVyID0gQ3JlYXRlVGltZXIo
KTsKKyAgICB0aW1lci0+c3RhcnQoKTsKKworICAgIC8vIFdhaXQgdW50aWwgdGhlIHdpbmRvdyBh
cyBhY3R1YWxseSBiZWVuIHJlc2l6ZWQgc28gdGhhdCB0aGUgY29kZSBjYWxsaW5nIHJlc2l6ZQor
ICAgIC8vIGNhbiBhc3N1bWUgdGhlIHdpbmRvdyBoYXMgYmVlbiByZXNpemVkLgorICAgIGNvbnN0
IGRvdWJsZSBrUmVzaXplV2FpdERlbGF5ID0gMC4yOworICAgIHdoaWxlIChtSGVpZ2h0ICE9IGhl
aWdodCAmJiBtV2lkdGggIT0gd2lkdGggJiYgdGltZXItPmdldEVsYXBzZWRUaW1lKCkgPCBrUmVz
aXplV2FpdERlbGF5KQorICAgIHsKKyAgICAgICAgbWVzc2FnZUxvb3AoKTsKKyAgICAgICAgYW5n
bGU6OlNsZWVwKDEwKTsKKyAgICB9CisKKyAgICBkZWxldGUgdGltZXI7CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordm9pZCBYMTFXaW5kb3c6OnNldFZpc2libGUoYm9vbCBpc1Zpc2libGUpCit7
CisgICAgaWYgKG1WaXNpYmxlID09IGlzVmlzaWJsZSkKKyAgICB7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAoaXNWaXNpYmxlKQorICAgIHsKKyAgICAgICAgWE1hcFdpbmRvdyht
RGlzcGxheSwgbVdpbmRvdyk7CisKKyAgICAgICAgLy8gV2FpdCB1bnRpbCB3ZSBnZXQgYW4gZXZl
bnQgc2F5aW5nIHRoaXMgd2luZG93IGlzIG1hcHBlZCBzbyB0aGF0IHRoZQorICAgICAgICAvLyBj
b2RlIGNhbGxpbmcgc2V0VmlzaWJsZSBjYW4gYXNzdW1lIHRoZSB3aW5kb3cgaXMgdmlzaWJsZS4K
KyAgICAgICAgLy8gVGhpcyBpcyBpbXBvcnRhbnQgd2hlbiBjcmVhdGluZyBhIGZyYW1lYnVmZmVy
IGFzIHRoZSBmcmFtZWJ1ZmZlciBjb250ZW50CisgICAgICAgIC8vIGlzIHVuZGVmaW5lZCB3aGVu
IHRoZSB3aW5kb3cgaXMgbm90IHZpc2libGUuCisgICAgICAgIFhFdmVudCBkdW1teUV2ZW50Owor
ICAgICAgICBYSWZFdmVudChtRGlzcGxheSwgJmR1bW15RXZlbnQsIFdhaXRGb3JNYXBOb3RpZnks
IHJlaW50ZXJwcmV0X2Nhc3Q8WFBvaW50ZXI+KG1XaW5kb3cpKTsKKyAgICB9CisgICAgZWxzZQor
ICAgIHsKKyAgICAgICAgWFVubWFwV2luZG93KG1EaXNwbGF5LCBtV2luZG93KTsKKyAgICAgICAg
WEZsdXNoKG1EaXNwbGF5KTsKKyAgICB9CisgICAgbVZpc2libGUgPSBpc1Zpc2libGU7Cit9CisK
K3ZvaWQgWDExV2luZG93OjpzaWduYWxUZXN0RXZlbnQoKQoreworICAgIFhFdmVudCBldmVudDsK
KyAgICBldmVudC50eXBlID0gQ2xpZW50TWVzc2FnZTsKKyAgICBldmVudC54Y2xpZW50Lm1lc3Nh
Z2VfdHlwZSA9IFRFU1RfRVZFTlQ7CisgICAgLy8gRm9ybWF0IG5lZWRzIHRvIGJlIHZhbGlkIG9y
IGEgQmFkVmFsdWUgaXMgZ2VuZXJhdGVkCisgICAgZXZlbnQueGNsaWVudC5mb3JtYXQgPSAzMjsK
KworICAgIC8vIEhpamFjayBTdHJ1Y3R1cmVOb3RpZnlNYXNrIGFzIHdlIGtub3cgd2Ugd2lsbCBi
ZSBsaXN0ZW5pbmcgZm9yIGl0LgorICAgIFhTZW5kRXZlbnQobURpc3BsYXksIG1XaW5kb3csIEZh
bHNlLCBTdHJ1Y3R1cmVOb3RpZnlNYXNrLCAmZXZlbnQpOworfQorCit2b2lkIFgxMVdpbmRvdzo6
cHJvY2Vzc0V2ZW50KGNvbnN0IFhFdmVudCAmeEV2ZW50KQoreworICAgIC8vIFRPRE8oY3dhbGxl
eikgdGV4dCBldmVudHMKKyAgICBzd2l0Y2ggKHhFdmVudC50eXBlKQorICAgIHsKKyAgICAgIGNh
c2UgQnV0dG9uUHJlc3M6CisgICAgICAgIHsKKyAgICAgICAgICAgIEV2ZW50IGV2ZW50OworICAg
ICAgICAgICAgTW91c2VCdXR0b24gYnV0dG9uID0gTU9VU0VCVVRUT05fVU5LTk9XTjsKKyAgICAg
ICAgICAgIGludCB3aGVlbFggPSAwOworICAgICAgICAgICAgaW50IHdoZWVsWSA9IDA7CisKKyAg
ICAgICAgICAgIC8vIFRoZSBtb3VzZSB3aGVlbCB1cGRhdGVzIGFyZSBzZW50IHZpYSBidXR0b24g
ZXZlbnRzLgorICAgICAgICAgICAgc3dpdGNoICh4RXZlbnQueGJ1dHRvbi5idXR0b24pCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgQnV0dG9uNDoKKyAgICAgICAgICAgICAgICB3
aGVlbFkgPSAxOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEJ1
dHRvbjU6CisgICAgICAgICAgICAgICAgd2hlZWxZID0gLTE7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgIGNhc2UgNjoKKyAgICAgICAgICAgICAgICB3aGVlbFggPSAxOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDc6CisgICAgICAgICAg
ICAgICAgd2hlZWxYID0gLTE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
ICAgY2FzZSBCdXR0b24xOgorICAgICAgICAgICAgICAgIGJ1dHRvbiA9IE1PVVNFQlVUVE9OX0xF
RlQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgQnV0dG9uMjoK
KyAgICAgICAgICAgICAgICBidXR0b24gPSBNT1VTRUJVVFRPTl9NSURETEU7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgQnV0dG9uMzoKKyAgICAgICAgICAgICAg
ICBidXR0b24gPSBNT1VTRUJVVFRPTl9SSUdIVDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgY2FzZSA4OgorICAgICAgICAgICAgICAgIGJ1dHRvbiA9IE1PVVNFQlVUVE9O
X0JVVFRPTjQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgOToK
KyAgICAgICAgICAgICAgICBidXR0b24gPSBNT1VTRUJVVFRPTl9CVVRUT041OworICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh3aGVlbFkgIT0gMCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBldmVudC5UeXBlID0gRXZlbnQ6OkVWRU5UX01P
VVNFX1dIRUVMX01PVkVEOworICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNlV2hlZWwuRGVsdGEg
PSB3aGVlbFk7CisgICAgICAgICAgICAgICAgcHVzaEV2ZW50KGV2ZW50KTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgaWYgKGJ1dHRvbiAhPSBNT1VTRUJVVFRPTl9VTktOT1dOKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGV2ZW50LlR5cGUgPSBFdmVudDo6RVZFTlRfTU9V
U0VfQlVUVE9OX1JFTEVBU0VEOworICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNlQnV0dG9uLkJ1
dHRvbiA9IGJ1dHRvbjsKKyAgICAgICAgICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5YID0geEV2
ZW50LnhidXR0b24ueDsKKyAgICAgICAgICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5ZID0geEV2
ZW50LnhidXR0b24ueTsKKyAgICAgICAgICAgICAgICBwdXNoRXZlbnQoZXZlbnQpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEJ1dHRvblJl
bGVhc2U6CisgICAgICAgIHsKKyAgICAgICAgICAgIEV2ZW50IGV2ZW50OworICAgICAgICAgICAg
TW91c2VCdXR0b24gYnV0dG9uID0gTU9VU0VCVVRUT05fVU5LTk9XTjsKKworICAgICAgICAgICAg
c3dpdGNoICh4RXZlbnQueGJ1dHRvbi5idXR0b24pCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgIGNhc2UgQnV0dG9uMToKKyAgICAgICAgICAgICAgICBidXR0b24gPSBNT1VTRUJVVFRPTl9M
RUZUOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEJ1dHRvbjI6
CisgICAgICAgICAgICAgICAgYnV0dG9uID0gTU9VU0VCVVRUT05fTUlERExFOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEJ1dHRvbjM6CisgICAgICAgICAgICAg
ICAgYnV0dG9uID0gTU9VU0VCVVRUT05fUklHSFQ7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgIGNhc2UgODoKKyAgICAgICAgICAgICAgICBidXR0b24gPSBNT1VTRUJVVFRP
Tl9CVVRUT040OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDk6
CisgICAgICAgICAgICAgICAgYnV0dG9uID0gTU9VU0VCVVRUT05fQlVUVE9ONTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYnV0dG9uICE9IE1PVVNF
QlVUVE9OX1VOS05PV04pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXZlbnQuVHlw
ZSA9IEV2ZW50OjpFVkVOVF9NT1VTRV9CVVRUT05fUkVMRUFTRUQ7CisgICAgICAgICAgICAgICAg
ZXZlbnQuTW91c2VCdXR0b24uQnV0dG9uID0gYnV0dG9uOworICAgICAgICAgICAgICAgIGV2ZW50
Lk1vdXNlQnV0dG9uLlggPSB4RXZlbnQueGJ1dHRvbi54OworICAgICAgICAgICAgICAgIGV2ZW50
Lk1vdXNlQnV0dG9uLlkgPSB4RXZlbnQueGJ1dHRvbi55OworICAgICAgICAgICAgICAgIHB1c2hF
dmVudChldmVudCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisK
KyAgICAgIGNhc2UgS2V5UHJlc3M6CisgICAgICAgIHsKKyAgICAgICAgICAgIEV2ZW50IGV2ZW50
OworICAgICAgICAgICAgZXZlbnQuVHlwZSA9IEV2ZW50OjpFVkVOVF9LRVlfUFJFU1NFRDsKKyAg
ICAgICAgICAgIGV2ZW50LktleS5Db2RlID0gWDExQ29kZVRvS2V5KG1EaXNwbGF5LCB4RXZlbnQu
eGtleS5rZXljb2RlKTsKKyAgICAgICAgICAgIEFkZFgxMUtleVN0YXRlVG9FdmVudCgmZXZlbnQs
IHhFdmVudC54a2V5LnN0YXRlKTsKKyAgICAgICAgICAgIHB1c2hFdmVudChldmVudCk7CisgICAg
ICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgS2V5UmVsZWFzZToKKyAgICAgICAg
eworICAgICAgICAgICAgRXZlbnQgZXZlbnQ7CisgICAgICAgICAgICBldmVudC5UeXBlID0gRXZl
bnQ6OkVWRU5UX0tFWV9SRUxFQVNFRDsKKyAgICAgICAgICAgIGV2ZW50LktleS5Db2RlID0gWDEx
Q29kZVRvS2V5KG1EaXNwbGF5LCB4RXZlbnQueGtleS5rZXljb2RlKTsKKyAgICAgICAgICAgIEFk
ZFgxMUtleVN0YXRlVG9FdmVudCgmZXZlbnQsIHhFdmVudC54a2V5LnN0YXRlKTsKKyAgICAgICAg
ICAgIHB1c2hFdmVudChldmVudCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAg
IGNhc2UgRW50ZXJOb3RpZnk6CisgICAgICAgIHsKKyAgICAgICAgICAgIEV2ZW50IGV2ZW50Owor
ICAgICAgICAgICAgZXZlbnQuVHlwZSA9IEV2ZW50OjpFVkVOVF9NT1VTRV9FTlRFUkVEOworICAg
ICAgICAgICAgcHVzaEV2ZW50KGV2ZW50KTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKwor
ICAgICAgY2FzZSBMZWF2ZU5vdGlmeToKKyAgICAgICAgeworICAgICAgICAgICAgRXZlbnQgZXZl
bnQ7CisgICAgICAgICAgICBldmVudC5UeXBlID0gRXZlbnQ6OkVWRU5UX01PVVNFX0xFRlQ7Cisg
ICAgICAgICAgICBwdXNoRXZlbnQoZXZlbnQpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
CisgICAgICBjYXNlIE1vdGlvbk5vdGlmeToKKyAgICAgICAgeworICAgICAgICAgICAgRXZlbnQg
ZXZlbnQ7CisgICAgICAgICAgICBldmVudC5UeXBlID0gRXZlbnQ6OkVWRU5UX01PVVNFX01PVkVE
OworICAgICAgICAgICAgZXZlbnQuTW91c2VNb3ZlLlggPSB4RXZlbnQueG1vdGlvbi54OworICAg
ICAgICAgICAgZXZlbnQuTW91c2VNb3ZlLlkgPSB4RXZlbnQueG1vdGlvbi55OworICAgICAgICAg
ICAgcHVzaEV2ZW50KGV2ZW50KTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgICAg
Y2FzZSBDb25maWd1cmVOb3RpZnk6CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh4RXZlbnQu
eGNvbmZpZ3VyZS53aWR0aCAhPSBtV2lkdGggfHwgeEV2ZW50Lnhjb25maWd1cmUuaGVpZ2h0ICE9
IG1IZWlnaHQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRXZlbnQgZXZlbnQ7Cisg
ICAgICAgICAgICAgICAgZXZlbnQuVHlwZSA9IEV2ZW50OjpFVkVOVF9SRVNJWkVEOworICAgICAg
ICAgICAgICAgIGV2ZW50LlNpemUuV2lkdGggPSB4RXZlbnQueGNvbmZpZ3VyZS53aWR0aDsKKyAg
ICAgICAgICAgICAgICBldmVudC5TaXplLkhlaWdodCA9IHhFdmVudC54Y29uZmlndXJlLmhlaWdo
dDsKKyAgICAgICAgICAgICAgICBwdXNoRXZlbnQoZXZlbnQpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKHhFdmVudC54Y29uZmlndXJlLnggIT0gbVggfHwgeEV2ZW50Lnhjb25maWd1
cmUueSAhPSBtWSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBTb21ldGltZXMs
IHRoZSB3aW5kb3cgbWFuYWdlciByZXBhcmVudHMgb3VyIHdpbmRvdyAoZm9yIGV4YW1wbGUKKyAg
ICAgICAgICAgICAgICAvLyB3aGVuIHJlc2l6aW5nKSB0aGVuIHRoZSBYIGFuZCBZIGNvb3JkaW5h
dGVzIHdpbGwgYmUgd2l0aCByZXNwZWN0IHRvCisgICAgICAgICAgICAgICAgLy8gdGhlIG5ldyBw
YXJlbnQgYW5kIG5vdCB3aGF0IHRoZSB1c2VyIHdhbnRzIHRvIGtub3cuIFVzZQorICAgICAgICAg
ICAgICAgIC8vIFhUcmFuc2xhdGVDb29yZGluYXRlcyB0byBnZXQgdGhlIGNvb3JkaW5hdGVzIG9u
IHRoZSBzY3JlZW4uCisgICAgICAgICAgICAgICAgaW50IHNjcmVlbiA9IERlZmF1bHRTY3JlZW4o
bURpc3BsYXkpOworICAgICAgICAgICAgICAgIFdpbmRvdyByb290ID0gUm9vdFdpbmRvdyhtRGlz
cGxheSwgc2NyZWVuKTsKKworICAgICAgICAgICAgICAgIGludCB4LCB5OworICAgICAgICAgICAg
ICAgIFdpbmRvdyBjaGlsZDsKKyAgICAgICAgICAgICAgICBYVHJhbnNsYXRlQ29vcmRpbmF0ZXMo
bURpc3BsYXksIG1XaW5kb3csIHJvb3QsIDAsIDAsICZ4LCAmeSwgJmNoaWxkKTsKKworICAgICAg
ICAgICAgICAgIGlmICh4ICE9IG1YIHx8IHkgIT0gbVkpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBFdmVudCBldmVudDsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQu
VHlwZSA9IEV2ZW50OjpFVkVOVF9NT1ZFRDsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQuTW92
ZS5YID0geDsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQuTW92ZS5ZID0geTsKKyAgICAgICAg
ICAgICAgICAgICAgcHVzaEV2ZW50KGV2ZW50KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgRm9jdXNJbjoK
KyAgICAgICAgaWYgKHhFdmVudC54Zm9jdXMubW9kZSA9PSBOb3RpZnlOb3JtYWwgfHwgeEV2ZW50
Lnhmb2N1cy5tb2RlID09IE5vdGlmeVdoaWxlR3JhYmJlZCkKKyAgICAgICAgeworICAgICAgICAg
ICAgRXZlbnQgZXZlbnQ7CisgICAgICAgICAgICBldmVudC5UeXBlID0gRXZlbnQ6OkVWRU5UX0dB
SU5FRF9GT0NVUzsKKyAgICAgICAgICAgIHB1c2hFdmVudChldmVudCk7CisgICAgICAgIH0KKyAg
ICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgRm9jdXNPdXQ6CisgICAgICAgIGlmICh4RXZlbnQu
eGZvY3VzLm1vZGUgPT0gTm90aWZ5Tm9ybWFsIHx8IHhFdmVudC54Zm9jdXMubW9kZSA9PSBOb3Rp
ZnlXaGlsZUdyYWJiZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEV2ZW50IGV2ZW50OworICAg
ICAgICAgICAgZXZlbnQuVHlwZSA9IEV2ZW50OjpFVkVOVF9MT1NUX0ZPQ1VTOworICAgICAgICAg
ICAgcHVzaEV2ZW50KGV2ZW50KTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgICAg
Y2FzZSBEZXN0cm95Tm90aWZ5OgorICAgICAgICAvLyBXZSBhbHJlYWR5IHJlY2VpdmVkIFdNX0RF
TEVURV9XSU5ET1cKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgQ2xpZW50TWVzc2FnZToK
KyAgICAgICAgaWYgKHhFdmVudC54Y2xpZW50Lm1lc3NhZ2VfdHlwZSA9PSBXTV9QUk9UT0NPTFMg
JiYKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEF0b20+KHhFdmVudC54Y2xpZW50LmRhdGEubFsw
XSkgPT0gV01fREVMRVRFX1dJTkRPVykKKyAgICAgICAgeworICAgICAgICAgICAgRXZlbnQgZXZl
bnQ7CisgICAgICAgICAgICBldmVudC5UeXBlID0gRXZlbnQ6OkVWRU5UX0NMT1NFRDsKKyAgICAg
ICAgICAgIHB1c2hFdmVudChldmVudCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoeEV2
ZW50LnhjbGllbnQubWVzc2FnZV90eXBlID09IFRFU1RfRVZFTlQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIEV2ZW50IGV2ZW50OworICAgICAgICAgICAgZXZlbnQuVHlwZSA9IEV2ZW50OjpFVkVO
VF9URVNUOworICAgICAgICAgICAgcHVzaEV2ZW50KGV2ZW50KTsKKyAgICAgICAgfQorICAgICAg
ICBicmVhazsKKyAgICB9Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3gx
MS9YMTFXaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGls
L3gxMS9YMTFXaW5kb3cuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS91dGlsL3gxMS9YMTFXaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACisv
LworLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKworLy8gWDExV2luZG93Lmg6IERlZmluaXRpb24gb2YgdGhlIGltcGxlbWVu
dGF0aW9uIG9mIE9TV2luZG93IGZvciBYMTEKKworI2lmbmRlZiBVVElMX1gxMV9XSU5ET1dfSAor
I2RlZmluZSBVVElMX1gxMV9XSU5ET1dfSAorCisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUg
PFgxMS9YbGliLmg+CisjaW5jbHVkZSA8WDExL1h1dGlsLmg+CisjaW5jbHVkZSA8WDExL1hyZXNv
dXJjZS5oPgorCisjaW5jbHVkZSA8ZXhwb3J0Lmg+CisKKyNpbmNsdWRlICJPU1dpbmRvdy5oIgor
CitjbGFzcyBBTkdMRV9FWFBPUlQgWDExV2luZG93IDogcHVibGljIE9TV2luZG93Cit7CisgIHB1
YmxpYzoKKyAgICBYMTFXaW5kb3coKTsKKyAgICBYMTFXaW5kb3coaW50IHZpc3VhbElkKTsKKyAg
ICB+WDExV2luZG93KCk7CisKKyAgICBib29sIGluaXRpYWxpemUoY29uc3Qgc3RkOjpzdHJpbmcg
Jm5hbWUsIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCkgb3ZlcnJpZGU7CisgICAgdm9pZCBk
ZXN0cm95KCkgb3ZlcnJpZGU7CisKKyAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIGdldE5hdGl2ZVdp
bmRvdygpIGNvbnN0IG92ZXJyaWRlOworICAgIEVHTE5hdGl2ZURpc3BsYXlUeXBlIGdldE5hdGl2
ZURpc3BsYXkoKSBjb25zdCBvdmVycmlkZTsKKworICAgIHZvaWQgbWVzc2FnZUxvb3AoKSBvdmVy
cmlkZTsKKworICAgIHZvaWQgc2V0TW91c2VQb3NpdGlvbihpbnQgeCwgaW50IHkpIG92ZXJyaWRl
OworICAgIGJvb2wgc2V0UG9zaXRpb24oaW50IHgsIGludCB5KSBvdmVycmlkZTsKKyAgICBib29s
IHJlc2l6ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Vmlz
aWJsZShib29sIGlzVmlzaWJsZSkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNpZ25hbFRlc3RFdmVu
dCgpIG92ZXJyaWRlOworCisgIHByaXZhdGU6CisgICAgdm9pZCBwcm9jZXNzRXZlbnQoY29uc3Qg
WEV2ZW50ICZldmVudCk7CisKKyAgICBBdG9tIFdNX0RFTEVURV9XSU5ET1c7CisgICAgQXRvbSBX
TV9QUk9UT0NPTFM7CisgICAgQXRvbSBURVNUX0VWRU5UOworCisgICAgRGlzcGxheSAqbURpc3Bs
YXk7CisgICAgV2luZG93IG1XaW5kb3c7CisgICAgaW50IG1SZXF1ZXN0ZWRWaXN1YWxJZDsKKyAg
ICBib29sIG1WaXNpYmxlOworfTsKKworI2VuZGlmIC8vIFVUSUxfWDExX1dJTkRPV19ICkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyMDc4MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzOCBAQAorMjAxNi0xMC0yNyAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVwZGF0ZSBBTkdMRQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTAxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hDaGVja1Zh
cmlhYmxlc1dpdGhpblBhY2tpbmdMaW1pdHMgaGFzIGNoYW5nZWQgc2lnbmF0dXJlcyBmcm9tIHRh
a2luZyBhIFNoVmFyaWFibGVJbmZvKiBhbmQgbGVuZ3RoCisgICAgICAgIHRvIHRha2luZyBhIHN0
ZDo6dmVjdG9yPHNoOjpTaGFkZXJWYXJpYWJsZT4gd2hpY2ggcmVxdWlyZXMgbW9yZSBpbmZvcm1h
dGlvbiBhYm91dCB0aGUgc2hhZGVyIHZhcmlhYmxlcworICAgICAgICB0aGFuIHdlIGtlcHQgaW4g
R3JhcGhpY3NDb250ZXh0M0Q6OlN5bWJvbEluZm8uICBJIHJlbW92ZWQgdGhlIFN5bWJvbEluZm8g
Y2xhc3MgYmVjYXVzZSBpdCB3YXMgcmVkdW5kYW50CisgICAgICAgIHdpdGggQU5HTEUncyBzaDo6
U2hhZGVyVmFyaWFibGUgYW5kIG5vdyB1bnVzZWQuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlz
dGluZyBXZWJHTCB0ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmFwcGVuZFN5bWJvbCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRTdHJ1Y3RJbmZvKToK
KyAgICAgICAgKFdlYkNvcmU6OmdldFN5bWJvbEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6QU5H
TEVXZWJLaXRCcmlkZ2U6OmNvbXBpbGVTaGFkZXJTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmg6CisgICAgICAgIChXZWJDb3JlOjpBTkdMRVNo
YWRlclN5bWJvbDo6aXNTYW1wbGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQzRC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OlN5bWJvbEluZm86OlN5bWJvbEluZm8pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OlN5bWJvbEluZm86Om9wZXJhdG9yPT0pOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21t
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uOjpnZXRU
cmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y2hlY2tWYXJ5aW5nc1BhY2tpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnByZWNpc2lvbnNNYXRjaCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6bWFwcGVkU3ltYm9sTmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6b3JpZ2luYWxTeW1ib2xOYW1lKToKKwogMjAxNi0x
MC0yNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFVSTFBhcnNlciBzaG91bGQgbWF0Y2ggb2xkIFVSTDo6cGFyc2Ugd2l0aCAlMkUgaW4gcGF0
aApJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMjQ1LDYgKzMyNDUsNyBA
QCBpZiAoRU5BQkxFX0dSQVBISUNTX0NPTlRFWFRfM0QpCiAgICAgICAgICR7VEhJUkRQQVJUWV9E
SVJ9L0FOR0xFL3NyYy9jb21tb24vdXRpbGl0aWVzLmNwcAogICAgICAgICAke1RISVJEUEFSVFlf
RElSfS9BTkdMRS9zcmMvY29tbW9uL3Rscy5jcHAKIAorICAgICAgICAke1RISVJEUEFSVFlfRElS
fS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9BZGRBbmRUcnVlVG9Mb29wQ29uZGl0aW9u
LmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9BcnJheVJldHVyblZhbHVlVG9PdXRQYXJhbWV0ZXIuY3BwCiAgICAgICAgICR7VEhJUkRQ
QVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0FTVE1ldGFkYXRhSExTTC5j
cHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvYmxvY2tsYXlvdXQuY3BwCkBAIC0zMjU2LDkgKzMyNTcsMTEgQEAgaWYgKEVOQUJMRV9HUkFQ
SElDU19DT05URVhUXzNEKQogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9DYWxsREFHLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db2RlR2VuLmNwcAogICAgICAgICAke1RISVJE
UEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db21waWxlci5jcHAKKyAg
ICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29u
c3RhbnRVbmlvbi5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvRGVmZXJHbG9iYWxJbml0aWFsaXplcnMuY3BwCiAgICAgICAgICR7VEhJ
UkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0RpYWdub3N0aWNzLmNw
cAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9EaXJlY3RpdmVIYW5kbGVyLmNwcAorICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9FbXVsYXRlR0xGcmFnQ29sb3JCcm9hZGNhc3QuY3BwCiAg
ICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0Vt
dWxhdGVQcmVjaXNpb24uY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL0V4dGVuc2lvbkdMU0wuY3BwCiAgICAgICAgICR7VEhJUkRQQVJU
WV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2dsc2xhbmdfbGV4LmNwcApAQCAt
MzI4Myw2ICszMjg2LDcgQEAgaWYgKEVOQUJMRV9HUkFQSElDU19DT05URVhUXzNEKQogICAgICAg
ICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9QYXJzZUNv
bnRleHQuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1Bvb2xBbGxvYy5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUHJ1bmVFbXB0eURlY2xhcmF0aW9ucy5jcHAKKyAgICAg
ICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUXVhbGlm
aWVyVHlwZXMuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL1JlY29yZENvbnN0YW50UHJlY2lzaW9uLmNwcAogICAgICAgICAke1RISVJE
UEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZWdlbmVyYXRlU3RydWN0
TmFtZXMuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1JlbW92ZUR5bmFtaWNJbmRleGluZy5jcHAKQEAgLTMyOTAsNiArMzI5NCw3IEBA
IGlmIChFTkFCTEVfR1JBUEhJQ1NfQ09OVEVYVF8zRCkKICAgICAgICAgJHtUSElSRFBBUlRZX0RJ
Un0vQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlU3dpdGNoRmFsbFRocm91Z2gu
Y3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1Jld3JpdGVEb1doaWxlLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlRWxzZUJsb2Nrcy5jcHAKKyAgICAgICAgJHtU
SElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVRleGVs
RmV0Y2hPZmZzZXQuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1NjYWxhcml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJncy5jcHAKICAg
ICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2Vh
cmNoU3ltYm9sLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9TZXBhcmF0ZUFycmF5SW5pdGlhbGl6YXRpb24uY3BwCkBAIC0zMzA2LDYg
KzMzMTEsNyBAQCBpZiAoRU5BQkxFX0dSQVBISUNTX0NPTlRFWFRfM0QpCiAgICAgICAgICR7VEhJ
UkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1VuZm9sZFNob3J0Q2ly
Y3VpdEFTVC5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvVW5mb2xkU2hvcnRDaXJjdWl0VG9JZi5jcHAKICAgICAgICAgJHtUSElSRFBB
UlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVW5pZm9ybUhMU0wuY3BwCisg
ICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Vz
ZUludGVyZmFjZUJsb2NrRmllbGRzLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci91dGlsLmNwcAogICAgICAgICAke1RISVJEUEFSVFlf
RElSfS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9VdGlsc0hMU0wuY3BwCiAgICAgICAg
ICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRl
R2xvYmFsSW5pdGlhbGl6ZXIuY3BwCkBAIC0zMzE3LDExICszMzIzLDYgQEAgaWYgKEVOQUJMRV9H
UkFQSElDU19DT05URVhUXzNEKQogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9WYXJpYWJsZVBhY2tlci5jcHAKICAgICAgICAgJHtUSElSRFBB
UlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmVyc2lvbkdMU0wuY3BwCiAK
LSAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
ZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoLmNwcAotICAgICAgICAke1RISVJEUEFSVFlfRElSfS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhCdWls
ZGVyLmNwcAotICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhPdXRwdXQuY3BwCi0gICAgICAgICR7VEhJ
UkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVu
ZGVuY3lHcmFwaFRyYXZlcnNlLmNwcAotCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xF
L3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRGlhZ25vc3RpY3NCYXNlLmNwcAogICAgICAgICAk
e1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpcmVjdGl2
ZUhhbmRsZXJCYXNlLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29t
cGlsZXIvcHJlcHJvY2Vzc29yL0RpcmVjdGl2ZVBhcnNlci5jcHAKQEAgLTMzMzQsOSArMzMzNSw2
IEBAIGlmIChFTkFCTEVfR1JBUEhJQ1NfQ09OVEVYVF8zRCkKICAgICAgICAgJHtUSElSRFBBUlRZ
X0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5jcHAKICAgICAgICAg
JHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6
ZXIuY3BwCiAKLSAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvdGltaW5nL1Jlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmcuY3BwCi0gICAgICAg
ICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3RpbWluZy9S
ZXN0cmljdFZlcnRleFNoYWRlclRpbWluZy5jcHAKLQogICAgICAgICAke1RISVJEUEFSVFlfRElS
fS9BTkdMRS9zcmMvbGliQU5HTEUvUGxhdGZvcm0uY3BwCiAKICAgICAgICAgJHtUSElSRFBBUlRZ
X0RJUn0vQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5j
cHAKQEAgLTM4NzIsNiArMzg3MCw3IEBAIGlmIChFTkFCTEVfR1JBUEhJQ1NfQ09OVEVYVF8zRCBB
TkQgTk9UIFcKICAgICB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhBTkdMRVN1cHBvcnQgUFJJ
VkFURQogICAgICAgICAiJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvaW5jbHVkZSIKICAgICAgICAg
IiR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYyIKKyAgICAgICAgIiR7VEhJUkRQQVJUWV9ESVJ9
L0FOR0xFL3NyYy9jb21tb24vdGhpcmRfcGFydHkvbnVtZXJpY3MiCiAgICAgKQogICAgIGxpc3Qo
QVBQRU5EIFdlYkNvcmVfTElCUkFSSUVTIEFOR0xFU3VwcG9ydCkKICAgICBXRUJLSVRfU0VUX0VY
VFJBX0NPTVBJTEVSX0ZMQUdTKEFOR0xFU3VwcG9ydCBJR05PUkVDWFhfV0FSTklOR1MpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1NYWMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTU4Nyw2ICs1ODcsNyBA
QCBzZXQoV2ViQ29yZV9GT1JXQVJESU5HX0hFQURFUlNfRElSRUNUT1JJCiAgICAgTW9kdWxlcy9h
cHBsZXBheQogICAgIE1vZHVsZXMvZ2VvbG9jYXRpb24KICAgICBNb2R1bGVzL2luZGV4ZWRkYgor
ICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0KICAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMKICAgICBN
b2R1bGVzL3dlYmRhdGFiYXNlCiAgICAgTW9kdWxlcy93ZWJzb2NrZXRzCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybVdpbi5jbWFrZQkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1XaW4uY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi1hZGRfZGVmaW5p
dGlvbnMoL2JpZ29iaikKK2FkZF9kZWZpbml0aW9ucygvYmlnb2JqIC1EX19TVERDX0NPTlNUQU5U
X01BQ1JPUykKIAogbGlzdChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAg
IiR7V0VCQ09SRV9ESVJ9L0ZvcndhcmRpbmdIZWFkZXJzIgpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcAkocmV2
aXNpb24gMjA3ODA0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVX
ZWJLaXRCcmlkZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMSArMzUsMTQgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAvLyBGSVhNRTogVGhpcyBpcyBhd2Z1bC4gR2V0IHJpZCBvZiBBTkdM
RVdlYktpdEJyaWRnZSBjb21wbGV0ZWx5IGFuZCBjYWxsIHRoZSBsaWJBTkdMRSBBUEkgZGlyZWN0
bHkgdG8gdmFsaWRhdGUgc2hhZGVycy4KIAotc3RhdGljIHZvaWQgYXBwZW5kU3ltYm9sKGNvbnN0
IHNoOjpTaGFkZXJWYXJpYWJsZSYgdmFyaWFibGUsIEFOR0xFU2hhZGVyU3ltYm9sVHlwZSBzeW1i
b2xUeXBlLCBWZWN0b3I8QU5HTEVTaGFkZXJTeW1ib2w+JiBzeW1ib2xzLCBjb25zdCBzdGQ6OnN0
cmluZyYgbmFtZSwgY29uc3Qgc3RkOjpzdHJpbmcmIG1hcHBlZE5hbWUpCitzdGF0aWMgdm9pZCBh
cHBlbmRTeW1ib2woY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlJiB2YXJpYWJsZSwgQU5HTEVTaGFk
ZXJTeW1ib2xUeXBlIHN5bWJvbFR5cGUsIFZlY3RvcjxzdGQ6OnBhaXI8QU5HTEVTaGFkZXJTeW1i
b2xUeXBlLCBzaDo6U2hhZGVyVmFyaWFibGU+PiYgc3ltYm9scywgY29uc3Qgc3RkOjpzdHJpbmcm
IG5hbWUsIGNvbnN0IHN0ZDo6c3RyaW5nJiBtYXBwZWROYW1lKQogewogICAgIExPRyhXZWJHTCwg
Ik1hcCBzaGFkZXIgc3ltYm9sICVzIC0+ICVzXG4iLCBuYW1lLmNfc3RyKCksIG1hcHBlZE5hbWUu
Y19zdHIoKSk7CiAgICAgCi0gICAgc3ltYm9scy5hcHBlbmQoQU5HTEVTaGFkZXJTeW1ib2woe3N5
bWJvbFR5cGUsIG5hbWUuY19zdHIoKSwgbWFwcGVkTmFtZS5jX3N0cigpLCB2YXJpYWJsZS50eXBl
LCB2YXJpYWJsZS5hcnJheVNpemUsIHZhcmlhYmxlLnByZWNpc2lvbiwgdmFyaWFibGUuc3RhdGlj
VXNlfSkpOworICAgIHNoOjpTaGFkZXJWYXJpYWJsZSB2YXJpYWJsZVRvQXBwZW5kID0gdmFyaWFi
bGU7CisgICAgdmFyaWFibGVUb0FwcGVuZC5uYW1lID0gbmFtZTsKKyAgICB2YXJpYWJsZVRvQXBw
ZW5kLm1hcHBlZE5hbWUgPSBtYXBwZWROYW1lOworICAgIHN5bWJvbHMuYXBwZW5kKHN0ZDo6bWFr
ZV9wYWlyKHN5bWJvbFR5cGUsIHZhcmlhYmxlVG9BcHBlbmQpKTsKICAgICAKICAgICBpZiAodmFy
aWFibGUuaXNBcnJheSgpKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YXJp
YWJsZS5lbGVtZW50Q291bnQoKTsgaSsrKSB7CkBAIC00NywxMyArNTAsMTQgQEAgc3RhdGljIHZv
aWQgYXBwZW5kU3ltYm9sKGNvbnN0IHNoOjpTaGFkZQogICAgICAgICAgICAgc3RkOjpzdHJpbmcg
YXJyYXlOYW1lID0gbmFtZSArIGFycmF5QnJhY2tldHM7CiAgICAgICAgICAgICBzdGQ6OnN0cmlu
ZyBhcnJheU1hcHBlZE5hbWUgPSBtYXBwZWROYW1lICsgYXJyYXlCcmFja2V0czsKICAgICAgICAg
ICAgIExPRyhXZWJHTCwgIk1hcCBzaGFkZXIgc3ltYm9sICVzIC0+ICVzXG4iLCBhcnJheU5hbWUu
Y19zdHIoKSwgYXJyYXlNYXBwZWROYW1lLmNfc3RyKCkpOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICBzeW1ib2xzLmFwcGVuZCh7c3ltYm9sVHlwZSwgYXJyYXlOYW1lLmNfc3RyKCksIGFycmF5
TWFwcGVkTmFtZS5jX3N0cigpLCB2YXJpYWJsZS50eXBlLCB2YXJpYWJsZS5hcnJheVNpemUsIHZh
cmlhYmxlLnByZWNpc2lvbiwgdmFyaWFibGUuc3RhdGljVXNlfSk7CisgICAgICAgICAgICB2YXJp
YWJsZVRvQXBwZW5kLm5hbWUgPSBhcnJheU5hbWU7CisgICAgICAgICAgICB2YXJpYWJsZVRvQXBw
ZW5kLm1hcHBlZE5hbWUgPSBhcnJheU1hcHBlZE5hbWU7CisgICAgICAgICAgICBzeW1ib2xzLmFw
cGVuZChzdGQ6Om1ha2VfcGFpcihzeW1ib2xUeXBlLCB2YXJpYWJsZVRvQXBwZW5kKSk7CiAgICAg
ICAgIH0KICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIGdldFN0cnVjdEluZm8oY29uc3Qgc2g6OlNo
YWRlclZhcmlhYmxlJiBmaWVsZCwgQU5HTEVTaGFkZXJTeW1ib2xUeXBlIHN5bWJvbFR5cGUsIFZl
Y3RvcjxBTkdMRVNoYWRlclN5bWJvbD4mIHN5bWJvbHMsIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1l
UHJlZml4LCBjb25zdCBzdGQ6OnN0cmluZyYgbWFwcGVkTmFtZVByZWZpeCkKK3N0YXRpYyB2b2lk
IGdldFN0cnVjdEluZm8oY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlJiBmaWVsZCwgQU5HTEVTaGFk
ZXJTeW1ib2xUeXBlIHN5bWJvbFR5cGUsIFZlY3RvcjxzdGQ6OnBhaXI8QU5HTEVTaGFkZXJTeW1i
b2xUeXBlLCBzaDo6U2hhZGVyVmFyaWFibGU+PiYgc3ltYm9scywgY29uc3Qgc3RkOjpzdHJpbmcm
IG5hbWVQcmVmaXgsIGNvbnN0IHN0ZDo6c3RyaW5nJiBtYXBwZWROYW1lUHJlZml4KQogewogICAg
IHN0ZDo6c3RyaW5nIG5hbWUgPSBuYW1lUHJlZml4ICsgJy4nICsgZmllbGQubmFtZTsKICAgICBz
dGQ6OnN0cmluZyBtYXBwZWROYW1lID0gbWFwcGVkTmFtZVByZWZpeCArICcuJyArIGZpZWxkLm1h
cHBlZE5hbWU7CkBAIC02Nyw3ICs3MSw3IEBAIHN0YXRpYyB2b2lkIGdldFN0cnVjdEluZm8oY29u
c3Qgc2g6OlNoYWQKICAgICAgICAgYXBwZW5kU3ltYm9sKGZpZWxkLCBzeW1ib2xUeXBlLCBzeW1i
b2xzLCBuYW1lLCBtYXBwZWROYW1lKTsKIH0KIAotc3RhdGljIHZvaWQgZ2V0U3ltYm9sSW5mbyhj
b25zdCBzaDo6U2hhZGVyVmFyaWFibGUmIHZhcmlhYmxlLCBBTkdMRVNoYWRlclN5bWJvbFR5cGUg
c3ltYm9sVHlwZSwgVmVjdG9yPEFOR0xFU2hhZGVyU3ltYm9sPiYgc3ltYm9scykKK3N0YXRpYyB2
b2lkIGdldFN5bWJvbEluZm8oY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlJiB2YXJpYWJsZSwgQU5H
TEVTaGFkZXJTeW1ib2xUeXBlIHN5bWJvbFR5cGUsIFZlY3RvcjxzdGQ6OnBhaXI8QU5HTEVTaGFk
ZXJTeW1ib2xUeXBlLCBzaDo6U2hhZGVyVmFyaWFibGU+PiYgc3ltYm9scykKIHsKICAgICBpZiAo
dmFyaWFibGUuaXNTdHJ1Y3QoKSkgewogICAgICAgICBpZiAodmFyaWFibGUuaXNBcnJheSgpKSB7
CkBAIC04Niw3ICs5MCw3IEBAIHN0YXRpYyB2b2lkIGdldFN5bWJvbEluZm8oY29uc3Qgc2g6OlNo
YWQKICAgICAgICAgYXBwZW5kU3ltYm9sKHZhcmlhYmxlLCBzeW1ib2xUeXBlLCBzeW1ib2xzLCB2
YXJpYWJsZS5uYW1lLCB2YXJpYWJsZS5tYXBwZWROYW1lKTsKIH0KIAotc3RhdGljIGJvb2wgZ2V0
U3ltYm9sSW5mbyhTaEhhbmRsZSBjb21waWxlciwgQU5HTEVTaGFkZXJTeW1ib2xUeXBlIHN5bWJv
bFR5cGUsIFZlY3RvcjxBTkdMRVNoYWRlclN5bWJvbD4mIHN5bWJvbHMpCitzdGF0aWMgYm9vbCBn
ZXRTeW1ib2xJbmZvKFNoSGFuZGxlIGNvbXBpbGVyLCBBTkdMRVNoYWRlclN5bWJvbFR5cGUgc3lt
Ym9sVHlwZSwgVmVjdG9yPHN0ZDo6cGFpcjxBTkdMRVNoYWRlclN5bWJvbFR5cGUsIHNoOjpTaGFk
ZXJWYXJpYWJsZT4+JiBzeW1ib2xzKQogewogICAgIHN3aXRjaCAoc3ltYm9sVHlwZSkgewogICAg
IGNhc2UgU0hBREVSX1NZTUJPTF9UWVBFX1VOSUZPUk06IHsKQEAgLTE1Niw3ICsxNjAsNyBAQCB2
b2lkIEFOR0xFV2ViS2l0QnJpZGdlOjpzZXRSZXNvdXJjZXMoU2hCCiAgICAgbV9yZXNvdXJjZXMg
PSByZXNvdXJjZXM7CiB9CiAKLWJvb2wgQU5HTEVXZWJLaXRCcmlkZ2U6OmNvbXBpbGVTaGFkZXJT
b3VyY2UoY29uc3QgY2hhciogc2hhZGVyU291cmNlLCBBTkdMRVNoYWRlclR5cGUgc2hhZGVyVHlw
ZSwgU3RyaW5nJiB0cmFuc2xhdGVkU2hhZGVyU291cmNlLCBTdHJpbmcmIHNoYWRlclZhbGlkYXRp
b25Mb2csIFZlY3RvcjxBTkdMRVNoYWRlclN5bWJvbD4mIHN5bWJvbHMsIGludCBleHRyYUNvbXBp
bGVPcHRpb25zKQorYm9vbCBBTkdMRVdlYktpdEJyaWRnZTo6Y29tcGlsZVNoYWRlclNvdXJjZShj
b25zdCBjaGFyKiBzaGFkZXJTb3VyY2UsIEFOR0xFU2hhZGVyVHlwZSBzaGFkZXJUeXBlLCBTdHJp
bmcmIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UsIFN0cmluZyYgc2hhZGVyVmFsaWRhdGlvbkxvZywg
VmVjdG9yPHN0ZDo6cGFpcjxBTkdMRVNoYWRlclN5bWJvbFR5cGUsIHNoOjpTaGFkZXJWYXJpYWJs
ZT4+JiBzeW1ib2xzLCBpbnQgZXh0cmFDb21waWxlT3B0aW9ucykKIHsKICAgICBpZiAoIWJ1aWx0
Q29tcGlsZXJzKSB7CiAgICAgICAgIG1fZnJhZ21lbnRDb21waWxlciA9IFNoQ29uc3RydWN0Q29t
cGlsZXIoR0xfRlJBR01FTlRfU0hBREVSLCBtX3NoYWRlclNwZWMsIG1fc2hhZGVyT3V0cHV0LCAm
bV9yZXNvdXJjZXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5H
TEVXZWJLaXRCcmlkZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5oCShyZXZpc2lvbiAyMDc4MDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NywyNyArNTcsNiBAQCBlbnVtIEFOR0xFU2hhZGVyU3ltYm9sVHlwZSB7CiAgICAg
U0hBREVSX1NZTUJPTF9UWVBFX1ZBUllJTkcKIH07CiAKLXN0cnVjdCBBTkdMRVNoYWRlclN5bWJv
bCB7Ci0gICAgQU5HTEVTaGFkZXJTeW1ib2xUeXBlIHN5bWJvbFR5cGU7Ci0gICAgU3RyaW5nIG5h
bWU7Ci0gICAgU3RyaW5nIG1hcHBlZE5hbWU7Ci0gICAgc2g6OkdMZW51bSBkYXRhVHlwZTsKLSAg
ICB1bnNpZ25lZCBzaXplOwotICAgIHNoOjpHTGVudW0gcHJlY2lzaW9uOwotICAgIGludCBzdGF0
aWNVc2U7Ci0KLSAgICBib29sIGlzU2FtcGxlcigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gc3ltYm9sVHlwZSA9PSBTSEFERVJfU1lNQk9MX1RZUEVfVU5JRk9STQotICAgICAgICAgICAg
JiYgKGRhdGFUeXBlID09IEdMX1NBTVBMRVJfMkQKLSAgICAgICAgICAgIHx8IGRhdGFUeXBlID09
IEdMX1NBTVBMRVJfQ1VCRQotI2lmICFQTEFURk9STShJT1MpICYmICEoKFBMQVRGT1JNKEVGTCkg
fHwgUExBVEZPUk0oR1RLKSkgJiYgVVNFKE9QRU5HTF9FU18yKSkKLSAgICAgICAgICAgIHx8IGRh
dGFUeXBlID09IEdMX1NBTVBMRVJfMkRfUkVDVF9BUkIKLSNlbmRpZgotICAgICAgICAgICAgKTsK
LSAgICB9Ci19OwotCiBjbGFzcyBBTkdMRVdlYktpdEJyaWRnZSB7CiBwdWJsaWM6CiAKQEAgLTg3
LDcgKzY2LDcgQEAgcHVibGljOgogICAgIFNoQnVpbHRJblJlc291cmNlcyBnZXRSZXNvdXJjZXMo
KSB7IHJldHVybiBtX3Jlc291cmNlczsgfQogICAgIHZvaWQgc2V0UmVzb3VyY2VzKFNoQnVpbHRJ
blJlc291cmNlcyk7CiAgICAgCi0gICAgYm9vbCBjb21waWxlU2hhZGVyU291cmNlKGNvbnN0IGNo
YXIqIHNoYWRlclNvdXJjZSwgQU5HTEVTaGFkZXJUeXBlLCBTdHJpbmcmIHRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2UsIFN0cmluZyYgc2hhZGVyVmFsaWRhdGlvbkxvZywgVmVjdG9yPEFOR0xFU2hhZGVy
U3ltYm9sPiYgc3ltYm9scywgaW50IGV4dHJhQ29tcGlsZU9wdGlvbnMgPSAwKTsKKyAgICBib29s
IGNvbXBpbGVTaGFkZXJTb3VyY2UoY29uc3QgY2hhciogc2hhZGVyU291cmNlLCBBTkdMRVNoYWRl
clR5cGUsIFN0cmluZyYgdHJhbnNsYXRlZFNoYWRlclNvdXJjZSwgU3RyaW5nJiBzaGFkZXJWYWxp
ZGF0aW9uTG9nLCBWZWN0b3I8c3RkOjpwYWlyPEFOR0xFU2hhZGVyU3ltYm9sVHlwZSwgc2g6OlNo
YWRlclZhcmlhYmxlPj4mIHN5bWJvbHMsIGludCBleHRyYUNvbXBpbGVPcHRpb25zID0gMCk7CiAK
IHByaXZhdGU6CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24gMjA3ODA0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5
KQpAQCAtMTI5OCwzNyArMTI5OCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FM
YXllcj4gbV93ZWJHTExheWVyOwogI2VuZGlmCiAKLSAgICBzdHJ1Y3QgU3ltYm9sSW5mbyB7Ci0g
ICAgICAgIFN5bWJvbEluZm8oKQotICAgICAgICAgICAgOiB0eXBlKDApCi0gICAgICAgICAgICAs
IHNpemUoMCkKLSAgICAgICAgICAgICwgcHJlY2lzaW9uKEdMX05PTkUpIC8vIEludmFsaWQgcHJl
Y2lzaW9uLgotICAgICAgICAgICAgLCBzdGF0aWNVc2UoMCkKLSAgICAgICAgewotICAgICAgICB9
Ci0KLSAgICAgICAgU3ltYm9sSW5mbyhHQzNEZW51bSB0eXBlLCBpbnQgc2l6ZSwgY29uc3QgU3Ry
aW5nJiBtYXBwZWROYW1lLCBzaDo6R0xlbnVtIHByZWNpc2lvbiwgaW50IHN0YXRpY1VzZSkKLSAg
ICAgICAgICAgIDogdHlwZSh0eXBlKQotICAgICAgICAgICAgLCBzaXplKHNpemUpCi0gICAgICAg
ICAgICAsIG1hcHBlZE5hbWUobWFwcGVkTmFtZSkKLSAgICAgICAgICAgICwgcHJlY2lzaW9uKHBy
ZWNpc2lvbikKLSAgICAgICAgICAgICwgc3RhdGljVXNlKHN0YXRpY1VzZSkKLSAgICAgICAgewot
ICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KFN5bWJvbEluZm8mIG90aGVyKSBj
b25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdHlwZSA9PSBvdGhlci50eXBlICYm
IHNpemUgPT0gb3RoZXIuc2l6ZSAmJiBtYXBwZWROYW1lID09IG90aGVyLm1hcHBlZE5hbWU7Ci0g
ICAgICAgIH0KLQotICAgICAgICBHQzNEZW51bSB0eXBlOwotICAgICAgICBpbnQgc2l6ZTsKLSAg
ICAgICAgU3RyaW5nIG1hcHBlZE5hbWU7Ci0gICAgICAgIHNoOjpHTGVudW0gcHJlY2lzaW9uOwot
ICAgICAgICBpbnQgc3RhdGljVXNlOwotICAgIH07Ci0KLSAgICB0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBTeW1ib2xJbmZvPiBTaGFkZXJTeW1ib2xNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFN0
cmluZywgc2g6OlNoYWRlclZhcmlhYmxlPiBTaGFkZXJTeW1ib2xNYXA7CiAKICAgICBzdHJ1Y3Qg
U2hhZGVyU291cmNlRW50cnkgewogICAgICAgICBHQzNEZW51bSB0eXBlOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1v
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5jcHAJKHJldmlzaW9uIDIwNzgwNCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xD
b21tb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODAsMjIgKzE4MCwyMCBAQCBTdHJpbmcgRXh0
ZW5zaW9uczNET3BlbkdMQ29tbW9uOjpnZXRUcmFuCiAKICAgICBTdHJpbmcgdHJhbnNsYXRlZFNo
YWRlclNvdXJjZTsKICAgICBTdHJpbmcgc2hhZGVySW5mb0xvZzsKLSAgICBpbnQgZXh0cmFDb21w
aWxlT3B0aW9ucyA9IFNIX0NMQU1QX0lORElSRUNUX0FSUkFZX0JPVU5EUyB8IFNIX1VORk9MRF9T
SE9SVF9DSVJDVUlUIHwgU0hfRU5GT1JDRV9QQUNLSU5HX1JFU1RSSUNUSU9OUyB8IFNIX0lOSVRf
VkFSWUlOR1NfV0lUSE9VVF9TVEFUSUNfVVNFIHwgU0hfTElNSVRfRVhQUkVTU0lPTl9DT01QTEVY
SVRZIHwgU0hfTElNSVRfQ0FMTF9TVEFDS19ERVBUSDsKKyAgICBpbnQgZXh0cmFDb21waWxlT3B0
aW9ucyA9IFNIX0NMQU1QX0lORElSRUNUX0FSUkFZX0JPVU5EUyB8IFNIX1VORk9MRF9TSE9SVF9D
SVJDVUlUIHwgU0hfSU5JVF9PVVRQVVRfVkFSSUFCTEVTIHwgU0hfRU5GT1JDRV9QQUNLSU5HX1JF
U1RSSUNUSU9OUyB8IFNIX0xJTUlUX0VYUFJFU1NJT05fQ09NUExFWElUWSB8IFNIX0xJTUlUX0NB
TExfU1RBQ0tfREVQVEg7CiAKICAgICBpZiAobV9yZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxh
dGlvbikKLSAgICAgICAgZXh0cmFDb21waWxlT3B0aW9ucyB8PSBTSF9FTVVMQVRFX0JVSUxUX0lO
X0ZVTkNUSU9OUzsKKyAgICAgICAgZXh0cmFDb21waWxlT3B0aW9ucyB8PSBTSF9FTVVMQVRFX0FC
U19JTlRfRlVOQ1RJT047CiAKLSAgICBWZWN0b3I8QU5HTEVTaGFkZXJTeW1ib2w+IHN5bWJvbHM7
CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxBTkdMRVNoYWRlclN5bWJvbFR5cGUsIHNoOjpTaGFkZXJW
YXJpYWJsZT4+IHN5bWJvbHM7CiAgICAgYm9vbCBpc1ZhbGlkID0gY29tcGlsZXIuY29tcGlsZVNo
YWRlclNvdXJjZShlbnRyeS5zb3VyY2UudXRmOCgpLmRhdGEoKSwgc2hhZGVyVHlwZSwgdHJhbnNs
YXRlZFNoYWRlclNvdXJjZSwgc2hhZGVySW5mb0xvZywgc3ltYm9scywgZXh0cmFDb21waWxlT3B0
aW9ucyk7CiAKICAgICBlbnRyeS5sb2cgPSBzaGFkZXJJbmZvTG9nOwogICAgIGVudHJ5LmlzVmFs
aWQgPSBpc1ZhbGlkOwogCi0gICAgc2l6ZV90IG51bVN5bWJvbHMgPSBzeW1ib2xzLnNpemUoKTsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVN5bWJvbHM7ICsraSkgewotICAgICAgICBB
TkdMRVNoYWRlclN5bWJvbCBzaGFkZXJTeW1ib2wgPSBzeW1ib2xzW2ldOwotICAgICAgICBHcmFw
aGljc0NvbnRleHQzRDo6U3ltYm9sSW5mbyBzeW1ib2xJbmZvKHNoYWRlclN5bWJvbC5kYXRhVHlw
ZSwgc2hhZGVyU3ltYm9sLnNpemUsIHNoYWRlclN5bWJvbC5tYXBwZWROYW1lLCBzaGFkZXJTeW1i
b2wucHJlY2lzaW9uLCBzaGFkZXJTeW1ib2wuc3RhdGljVXNlKTsKLSAgICAgICAgZW50cnkuc3lt
Ym9sTWFwKHNoYWRlclN5bWJvbC5zeW1ib2xUeXBlKS5zZXQoc2hhZGVyU3ltYm9sLm5hbWUsIHN5
bWJvbEluZm8pOworICAgIGZvciAoY29uc3Qgc3RkOjpwYWlyPEFOR0xFU2hhZGVyU3ltYm9sVHlw
ZSwgc2g6OlNoYWRlclZhcmlhYmxlPiYgcGFpciA6IHN5bWJvbHMpIHsKKyAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcmIG5hbWUgPSBwYWlyLnNlY29uZC5uYW1lOworICAgICAgICBlbnRyeS5zeW1i
b2xNYXAocGFpci5maXJzdCkuc2V0KFN0cmluZyhuYW1lLmNfc3RyKCksIG5hbWUubGVuZ3RoKCkp
LCBwYWlyLnNlY29uZCk7CiAgICAgfQogCiAgICAgaWYgKCFpc1ZhbGlkKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdM
Q29tbW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCShyZXZpc2lvbiAyMDc4
MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0M0RPcGVuR0xDb21tb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzYsNyArMzc2LDcg
QEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Y2hlY2tWYXJ5aW5nc1BhYwogICAgIGNvbnN0IGF1
dG8mIHZlcnRleEVudHJ5ID0gbV9zaGFkZXJTb3VyY2VNYXAuZmluZCh2ZXJ0ZXhTaGFkZXIpLT52
YWx1ZTsKICAgICBjb25zdCBhdXRvJiBmcmFnbWVudEVudHJ5ID0gbV9zaGFkZXJTb3VyY2VNYXAu
ZmluZChmcmFnbWVudFNoYWRlciktPnZhbHVlOwogCi0gICAgSGFzaE1hcDxTdHJpbmcsIFNoVmFy
aWFibGVJbmZvPiBjb21iaW5lZFZhcnlpbmdzOworICAgIEhhc2hNYXA8U3RyaW5nLCBzaDo6U2hh
ZGVyVmFyaWFibGU+IGNvbWJpbmVkVmFyeWluZ3M7CiAgICAgZm9yIChjb25zdCBhdXRvJiB2ZXJ0
ZXhTeW1ib2wgOiB2ZXJ0ZXhFbnRyeS52YXJ5aW5nTWFwKSB7CiAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgc3ltYm9sTmFtZSA9IHZlcnRleFN5bWJvbC5rZXk7CiAgICAgICAgIC8vIFRoZSB2YXJ5aW5n
IG1hcCBpbmNsdWRlcyB2YXJpYWJsZXMgZm9yIGVhY2ggaW5kZXggb2YgYW4gYXJyYXkgdmFyaWFi
bGUuCkBAIC0zODksMjUgKzM4OSwxOCBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpjaGVja1Zh
cnlpbmdzUGFjCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBjb25zdCBhdXRvJiBm
cmFnbWVudFN5bWJvbCA9IGZyYWdtZW50RW50cnkudmFyeWluZ01hcC5maW5kKHN5bWJvbE5hbWUp
OwotICAgICAgICBpZiAoZnJhZ21lbnRTeW1ib2wgIT0gZnJhZ21lbnRFbnRyeS52YXJ5aW5nTWFw
LmVuZCgpKSB7Ci0gICAgICAgICAgICBTaFZhcmlhYmxlSW5mbyBzeW1ib2xJbmZvOwotICAgICAg
ICAgICAgc3ltYm9sSW5mby50eXBlID0gKGZyYWdtZW50U3ltYm9sLT52YWx1ZSkudHlwZTsKLSAg
ICAgICAgICAgIC8vIFRoZSBhcnJheXMgYXJlIGFscmVhZHkgc3BsaXQgdXAuCi0gICAgICAgICAg
ICBzeW1ib2xJbmZvLnNpemUgPSAoZnJhZ21lbnRTeW1ib2wtPnZhbHVlKS5zaXplOwotICAgICAg
ICAgICAgY29tYmluZWRWYXJ5aW5ncy5hZGQoc3ltYm9sTmFtZSwgc3ltYm9sSW5mbyk7Ci0gICAg
ICAgIH0KKyAgICAgICAgaWYgKGZyYWdtZW50U3ltYm9sICE9IGZyYWdtZW50RW50cnkudmFyeWlu
Z01hcC5lbmQoKSkKKyAgICAgICAgICAgIGNvbWJpbmVkVmFyeWluZ3MuYWRkKHN5bWJvbE5hbWUs
IGZyYWdtZW50U3ltYm9sLT52YWx1ZSk7CiAgICAgfQogCiAgICAgc2l6ZV90IG51bVZhcnlpbmdz
ID0gY29tYmluZWRWYXJ5aW5ncy5zaXplKCk7CiAgICAgaWYgKCFudW1WYXJ5aW5ncykKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKLSAgICBTaFZhcmlhYmxlSW5mbyogdmFyaWFibGVzID0gbmV3IFNo
VmFyaWFibGVJbmZvW251bVZhcnlpbmdzXTsKLSAgICBpbnQgaW5kZXggPSAwOwotICAgIGZvciAo
Y29uc3QgYXV0byYgdmFyeWluZ1N5bWJvbCA6IGNvbWJpbmVkVmFyeWluZ3MpIHsKLSAgICAgICAg
dmFyaWFibGVzW2luZGV4XSA9IHZhcnlpbmdTeW1ib2wudmFsdWU7Ci0gICAgICAgIGluZGV4Kys7
Ci0gICAgfQorICAgIHN0ZDo6dmVjdG9yPHNoOjpTaGFkZXJWYXJpYWJsZT4gdmFyaWFibGVzOwor
ICAgIHZhcmlhYmxlcy5yZXNlcnZlKGNvbWJpbmVkVmFyeWluZ3Muc2l6ZSgpKTsKKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIHZhcnlpbmdTeW1ib2wgOiBjb21iaW5lZFZhcnlpbmdzLnZhbHVlcygpKQor
ICAgICAgICB2YXJpYWJsZXMucHVzaF9iYWNrKHZhcnlpbmdTeW1ib2wpOwogCiAgICAgR0MzRGlu
dCBtYXhWYXJ5aW5nVmVjdG9ycyA9IDA7CiAjaWYgIVBMQVRGT1JNKElPUykgJiYgISgoUExBVEZP
Uk0oV0lOKSB8fCBQTEFURk9STShHVEspKSAmJiBVU0UoT1BFTkdMX0VTXzIpKQpAQCAtNDE3LDkg
KzQxMCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmNoZWNrVmFyeWluZ3NQYWMKICNlbHNl
CiAgICAgOjpnbEdldEludGVnZXJ2KE1BWF9WQVJZSU5HX1ZFQ1RPUlMsICZtYXhWYXJ5aW5nVmVj
dG9ycyk7CiAjZW5kaWYKLSAgICBpbnQgcmVzdWx0ID0gU2hDaGVja1ZhcmlhYmxlc1dpdGhpblBh
Y2tpbmdMaW1pdHMobWF4VmFyeWluZ1ZlY3RvcnMsIHZhcmlhYmxlcywgbnVtVmFyeWluZ3MpOwot
ICAgIGRlbGV0ZVtdIHZhcmlhYmxlczsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBT
aENoZWNrVmFyaWFibGVzV2l0aGluUGFja2luZ0xpbWl0cyhtYXhWYXJ5aW5nVmVjdG9ycywgdmFy
aWFibGVzKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6cHJlY2lzaW9uc01hdGNoKFBs
YXRmb3JtM0RPYmplY3QgdmVydGV4U2hhZGVyLCBQbGF0Zm9ybTNET2JqZWN0IGZyYWdtZW50U2hh
ZGVyKSBjb25zdApAQCAtNDMxLDExICs0MjIsMTQgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6
cHJlY2lzaW9uc01hdGNoKAogCiAgICAgSGFzaE1hcDxTdHJpbmcsIHNoOjpHTGVudW0+IHZlcnRl
eFN5bWJvbFByZWNpc2lvbk1hcDsKIAotICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiB2ZXJ0
ZXhFbnRyeS51bmlmb3JtTWFwKQotICAgICAgICB2ZXJ0ZXhTeW1ib2xQcmVjaXNpb25NYXAuYWRk
KGVudHJ5LnZhbHVlLm1hcHBlZE5hbWUsIGVudHJ5LnZhbHVlLnByZWNpc2lvbik7CisgICAgZm9y
IChjb25zdCBhdXRvJiBlbnRyeSA6IHZlcnRleEVudHJ5LnVuaWZvcm1NYXApIHsKKyAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIG1hcHBlZE5hbWUgPSBlbnRyeS52YWx1ZS5tYXBwZWROYW1lOwor
ICAgICAgICB2ZXJ0ZXhTeW1ib2xQcmVjaXNpb25NYXAuYWRkKFN0cmluZyhtYXBwZWROYW1lLmNf
c3RyKCksIG1hcHBlZE5hbWUubGVuZ3RoKCkpLCBlbnRyeS52YWx1ZS5wcmVjaXNpb24pOworICAg
IH0KIAogICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiBmcmFnbWVudEVudHJ5LnVuaWZvcm1N
YXApIHsKLSAgICAgICAgY29uc3QgYXV0byYgdmVydGV4U3ltYm9sID0gdmVydGV4U3ltYm9sUHJl
Y2lzaW9uTWFwLmZpbmQoZW50cnkudmFsdWUubWFwcGVkTmFtZSk7CisgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBtYXBwZWROYW1lID0gZW50cnkudmFsdWUubWFwcGVkTmFtZTsKKyAgICAgICAg
Y29uc3QgYXV0byYgdmVydGV4U3ltYm9sID0gdmVydGV4U3ltYm9sUHJlY2lzaW9uTWFwLmZpbmQo
U3RyaW5nKG1hcHBlZE5hbWUuY19zdHIoKSwgbWFwcGVkTmFtZS5sZW5ndGgoKSkpOwogICAgICAg
ICBpZiAodmVydGV4U3ltYm9sICE9IHZlcnRleFN5bWJvbFByZWNpc2lvbk1hcC5lbmQoKSAmJiB2
ZXJ0ZXhTeW1ib2wtPnZhbHVlICE9IGVudHJ5LnZhbHVlLnByZWNpc2lvbikKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CkBAIC05MDEsOCArODk1LDEwIEBAIFN0cmluZyBHcmFwaGlj
c0NvbnRleHQzRDo6bWFwcGVkU3ltYm9sTmEKIAogICAgICAgICBjb25zdCBTaGFkZXJTeW1ib2xN
YXAmIHN5bWJvbE1hcCA9IHJlc3VsdC0+dmFsdWUuc3ltYm9sTWFwKHN5bWJvbFR5cGUpOwogICAg
ICAgICBTaGFkZXJTeW1ib2xNYXA6OmNvbnN0X2l0ZXJhdG9yIHN5bWJvbEVudHJ5ID0gc3ltYm9s
TWFwLmZpbmQobmFtZSk7Ci0gICAgICAgIGlmIChzeW1ib2xFbnRyeSAhPSBzeW1ib2xNYXAuZW5k
KCkpCi0gICAgICAgICAgICByZXR1cm4gc3ltYm9sRW50cnktPnZhbHVlLm1hcHBlZE5hbWU7Cisg
ICAgICAgIGlmIChzeW1ib2xFbnRyeSAhPSBzeW1ib2xNYXAuZW5kKCkpIHsKKyAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiBtYXBwZWROYW1lID0gc3ltYm9sRW50cnktPnZhbHVlLm1hcHBl
ZE5hbWU7CisgICAgICAgICAgICByZXR1cm4gU3RyaW5nKG1hcHBlZE5hbWUuY19zdHIoKSwgbWFw
cGVkTmFtZS5sZW5ndGgoKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoc3ltYm9sVHlw
ZSA9PSBTSEFERVJfU1lNQk9MX1RZUEVfQVRUUklCVVRFICYmICFuYW1lLmlzRW1wdHkoKSkgewpA
QCAtOTM3LDcgKzkzMyw3IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6b3JpZ2luYWxTeW1i
b2wKICAgICAgICAgCiAgICAgICAgIGNvbnN0IFNoYWRlclN5bWJvbE1hcCYgc3ltYm9sTWFwID0g
cmVzdWx0LT52YWx1ZS5zeW1ib2xNYXAoc3ltYm9sVHlwZSk7CiAgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgc3ltYm9sRW50cnkgOiBzeW1ib2xNYXApIHsKLSAgICAgICAgICAgIGlmIChzeW1ib2xF
bnRyeS52YWx1ZS5tYXBwZWROYW1lID09IG5hbWUpCisgICAgICAgICAgICBpZiAobmFtZSA9PSBz
eW1ib2xFbnRyeS52YWx1ZS5tYXBwZWROYW1lLmNfc3RyKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHN5bWJvbEVudHJ5LmtleTsKICAgICAgICAgfQogICAgIH0KQEAgLTk2NCw3ICs5NjAsNyBA
QCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6Om1hcHBlZFN5bWJvbE5hCiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGNvbnN0IFNoYWRlclN5bWJvbE1hcCYgc3ltYm9sTWFwID0gcmVzdWx0LT52
YWx1ZS5zeW1ib2xNYXAoc3RhdGljX2Nhc3Q8ZW51bSBBTkdMRVNoYWRlclN5bWJvbFR5cGU+KHN5
bWJvbFR5cGUpKTsKICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgc3ltYm9sRW50cnkgOiBz
eW1ib2xNYXApIHsKLSAgICAgICAgICAgICAgICBpZiAoc3ltYm9sRW50cnkudmFsdWUubWFwcGVk
TmFtZSA9PSBuYW1lKQorICAgICAgICAgICAgICAgIGlmIChuYW1lID09IHN5bWJvbEVudHJ5LnZh
bHVlLm1hcHBlZE5hbWUuY19zdHIoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJv
bEVudHJ5LmtleTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293099</attachid>
            <date>2016-10-27 18:59:31 -0700</date>
            <delta_ts>2016-10-27 20:33:04 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>10994009</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnBsaXN0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnBsaXN0CShyZXZpc2lvbiAyMDgwMjEpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS5wbGlzdAkod29ya2luZyBjb3B5KQpAQCAt
MTAsNyArMTAsNyBAQAogICAgICAgICA8a2V5Pk9wZW5Tb3VyY2VXZWJzaXRlVVJMPC9rZXk+CiAg
ICAgICAgIDxzdHJpbmc+aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2FuZ2xlcHJvamVjdC88L3N0
cmluZz4KICAgICAgICAgPGtleT5PcGVuU291cmNlU0NNPC9rZXk+Ci0gICAgICAgIDxzdHJpbmc+
Z2l0IGNsb25lIGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9hbmdsZS9hbmdsZSAm
YW1wOyZhbXA7IGNkIGFuZ2xlICZhbXA7JmFtcDsgZ2l0IGNoZWNrb3V0IDY2ODQwMDdhNzc1NzJm
MzYxNmZjNDUzMTM4YjBlZjVmN2Q0MmQwMzg8L3N0cmluZz4KKyAgICAgICAgPHN0cmluZz5naXQg
Y2xvbmUgaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2FuZ2xlL2FuZ2xlICZhbXA7
JmFtcDsgY2QgYW5nbGUgJmFtcDsmYW1wOyBnaXQgY2hlY2tvdXQgZjAxNzMxNTMwZTdmNzU0ZTVl
YmFmMzJkMDBmM2UyM2I2MjM3NjQyNDwvc3RyaW5nPgogICAgICAgICA8a2V5Pk9wZW5Tb3VyY2VJ
bXBvcnREYXRlPC9rZXk+CiAgICAgICAgIDxzdHJpbmc+MjAxNC0wNC0yOTwvc3RyaW5nPgogICAg
ICAgICA8a2V5Pk9wZW5Tb3VyY2VMaWNlbnNlPC9rZXk+CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE0LDEzICsxNCw2IEBACiAJCTMx
MDEyRTE2MThCOTdCOUIwMDM5MDYyRiAvKiBDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDEyREE0MThCOTdCOUIwMDM5MDYyRiAvKiBDb21t
b24uaCAqLzsgfTsKIAkJMzEwMTJFMTcxOEI5N0I5QjAwMzkwNjJGIC8qIENvbXBpbGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDEyREE1MThC
OTdCOUIwMDM5MDYyRiAvKiBDb21waWxlci5jcHAgKi87IH07CiAJCTMxMDEyRTFBMThCOTdCOUIw
MDM5MDYyRiAvKiBDb25zdGFudFVuaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzMTAxMkRBODE4Qjk3QjlCMDAzOTA2MkYgLyogQ29uc3RhbnRVbmlv
bi5oICovOyB9OwotCQkzMTAxMkUxQjE4Qjk3QjlCMDAzOTA2MkYgLyogRGVwZW5kZW5jeUdyYXBo
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDEy
REFBMThCOTdCOUIwMDM5MDYyRiAvKiBEZXBlbmRlbmN5R3JhcGguY3BwICovOyB9OwotCQkzMTAx
MkUxQzE4Qjk3QjlCMDAzOTA2MkYgLyogRGVwZW5kZW5jeUdyYXBoLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAxMkRBQjE4Qjk3QjlCMDAzOTA2MkYg
LyogRGVwZW5kZW5jeUdyYXBoLmggKi87IH07Ci0JCTMxMDEyRTFEMThCOTdCOUIwMDM5MDYyRiAv
KiBEZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDEyREFDMThCOTdCOUIwMDM5MDYyRiAvKiBEZXBlbmRlbmN5
R3JhcGhCdWlsZGVyLmNwcCAqLzsgfTsKLQkJMzEwMTJFMUUxOEI5N0I5QjAwMzkwNjJGIC8qIERl
cGVuZGVuY3lHcmFwaEJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMxMDEyREFEMThCOTdCOUIwMDM5MDYyRiAvKiBEZXBlbmRlbmN5R3JhcGhC
dWlsZGVyLmggKi87IH07Ci0JCTMxMDEyRTFGMThCOTdCOUIwMDM5MDYyRiAvKiBEZXBlbmRlbmN5
R3JhcGhPdXRwdXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzEwMTJEQUUxOEI5N0I5QjAwMzkwNjJGIC8qIERlcGVuZGVuY3lHcmFwaE91dHB1dC5j
cHAgKi87IH07Ci0JCTMxMDEyRTIwMThCOTdCOUIwMDM5MDYyRiAvKiBEZXBlbmRlbmN5R3JhcGhP
dXRwdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMx
MDEyREFGMThCOTdCOUIwMDM5MDYyRiAvKiBEZXBlbmRlbmN5R3JhcGhPdXRwdXQuaCAqLzsgfTsK
LQkJMzEwMTJFMjExOEI5N0I5QjAwMzkwNjJGIC8qIERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDEyREIw
MThCOTdCOUIwMDM5MDYyRiAvKiBEZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAgKi87IH07CiAJ
CTMxMDEyRTI2MThCOTdCOUIwMDM5MDYyRiAvKiBEaWFnbm9zdGljcy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAxMkRCNTE4Qjk3QjlCMDAzOTA2
MkYgLyogRGlhZ25vc3RpY3MuY3BwICovOyB9OwogCQkzMTAxMkUyNzE4Qjk3QjlCMDAzOTA2MkYg
LyogRGlhZ25vc3RpY3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxMDEyREI2MThCOTdCOUIwMDM5MDYyRiAvKiBEaWFnbm9zdGljcy5oICovOyB9Owog
CQkzMTAxMkUyODE4Qjk3QjlCMDAzOTA2MkYgLyogRGlyZWN0aXZlSGFuZGxlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAxMkRCNzE4Qjk3QjlC
MDAzOTA2MkYgLyogRGlyZWN0aXZlSGFuZGxlci5jcHAgKi87IH07CkBAIC02Miw4ICs1NSw2IEBA
CiAJCTMxMDEyRTU2MThCOTdCOUIwMDM5MDYyRiAvKiBQb29sQWxsb2MuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwMTJERTYxOEI5N0I5QjAwMzkw
NjJGIC8qIFBvb2xBbGxvYy5jcHAgKi87IH07CiAJCTMxMDEyRTU3MThCOTdCOUIwMDM5MDYyRiAv
KiBQb29sQWxsb2MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMxMDEyREU3MThCOTdCOUIwMDM5MDYyRiAvKiBQb29sQWxsb2MuaCAqLzsgfTsKIAkJMzEw
MTJFNTgxOEI5N0I5QjAwMzkwNjJGIC8qIFByYWdtYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwMTJERTgxOEI5N0I5QjAwMzkwNjJGIC8qIFByYWdt
YS5oICovOyB9OwotCQkzMTAxMkU1QTE4Qjk3QjlCMDAzOTA2MkYgLyogUXVhbGlmaWVyQWxpdmUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDEyREVB
MThCOTdCOUIwMDM5MDYyRiAvKiBRdWFsaWZpZXJBbGl2ZS5oICovOyB9OwotCQkzMTAxMkU1RDE4
Qjk3QjlCMDAzOTA2MkYgLyogUmVuYW1lRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDEyREVEMThCOTdCOUIwMDM5MDYyRiAvKiBSZW5h
bWVGdW5jdGlvbi5oICovOyB9OwogCQkzMTAxMkU1RTE4Qjk3QjlCMDAzOTA2MkYgLyogUmV3cml0
ZUVsc2VCbG9ja3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzEwMTJERUUxOEI5N0I5QjAwMzkwNjJGIC8qIFJld3JpdGVFbHNlQmxvY2tzLmNwcCAq
LzsgfTsKIAkJMzEwMTJFNUYxOEI5N0I5QjAwMzkwNjJGIC8qIFJld3JpdGVFbHNlQmxvY2tzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAxMkRFRjE4
Qjk3QjlCMDAzOTA2MkYgLyogUmV3cml0ZUVsc2VCbG9ja3MuaCAqLzsgfTsKIAkJMzEwMTJFNjAx
OEI5N0I5QjAwMzkwNjJGIC8qIFNlYXJjaFN5bWJvbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAxMkRGMDE4Qjk3QjlCMDAzOTA2MkYgLyogU2Vh
cmNoU3ltYm9sLmNwcCAqLzsgfTsKQEAgLTcxLDEwICs2Miw2IEBACiAJCTMxMDEyRTYyMThCOTdC
OUIwMDM5MDYyRiAvKiBTaGFkZXJMYW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDEyREYyMThCOTdCOUIwMDM5MDYyRiAvKiBTaGFkZXJMYW5n
LmNwcCAqLzsgfTsKIAkJMzEwMTJFNjQxOEI5N0I5QjAwMzkwNjJGIC8qIFN5bWJvbFRhYmxlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDEyREY0
MThCOTdCOUIwMDM5MDYyRiAvKiBTeW1ib2xUYWJsZS5jcHAgKi87IH07CiAJCTMxMDEyRTY1MThC
OTdCOUIwMDM5MDYyRiAvKiBTeW1ib2xUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwMTJERjUxOEI5N0I5QjAwMzkwNjJGIC8qIFN5bWJvbFRh
YmxlLmggKi87IH07Ci0JCTMxMDEyRTY2MThCOTdCOUIwMDM5MDYyRiAvKiBSZXN0cmljdEZyYWdt
ZW50U2hhZGVyVGltaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxMDEyREY3MThCOTdCOUIwMDM5MDYyRiAvKiBSZXN0cmljdEZyYWdtZW50U2hh
ZGVyVGltaW5nLmNwcCAqLzsgfTsKLQkJMzEwMTJFNjcxOEI5N0I5QjAwMzkwNjJGIC8qIFJlc3Ry
aWN0RnJhZ21lbnRTaGFkZXJUaW1pbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMxMDEyREY4MThCOTdCOUIwMDM5MDYyRiAvKiBSZXN0cmljdEZyYWdt
ZW50U2hhZGVyVGltaW5nLmggKi87IH07Ci0JCTMxMDEyRTY4MThCOTdCOUIwMDM5MDYyRiAvKiBS
ZXN0cmljdFZlcnRleFNoYWRlclRpbWluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAxMkRGOTE4Qjk3QjlCMDAzOTA2MkYgLyogUmVzdHJpY3RW
ZXJ0ZXhTaGFkZXJUaW1pbmcuY3BwICovOyB9OwotCQkzMTAxMkU2OTE4Qjk3QjlCMDAzOTA2MkYg
LyogUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDEyREZBMThCOTdCOUIwMDM5MDYyRiAvKiBSZXN0cmlj
dFZlcnRleFNoYWRlclRpbWluZy5oICovOyB9OwogCQkzMTAxMkU2QTE4Qjk3QjlCMDAzOTA2MkYg
LyogVHJhbnNsYXRvckVTU0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzEwMTJERkIxOEI5N0I5QjAwMzkwNjJGIC8qIFRyYW5zbGF0b3JFU1NMLmNw
cCAqLzsgfTsKIAkJMzEwMTJFNkIxOEI5N0I5QjAwMzkwNjJGIC8qIFRyYW5zbGF0b3JFU1NMLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAxMkRGQzE4
Qjk3QjlCMDAzOTA2MkYgLyogVHJhbnNsYXRvckVTU0wuaCAqLzsgfTsKIAkJMzEwMTJFNkMxOEI5
N0I5QjAwMzkwNjJGIC8qIFRyYW5zbGF0b3JHTFNMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDEyREZEMThCOTdCOUIwMDM5MDYyRiAvKiBUcmFu
c2xhdG9yR0xTTC5jcHAgKi87IH07CkBAIC0xNTcsOCArMTQ0LDYgQEAKIAkJNUMxREJERTExQjA0
MzhEMzAwMjM1NTUyIC8qIENvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUMxREJDNTYxQjA0MzhEMjAwMjM1NTUyIC8qIENvbnN0YW50cy5o
ICovOyB9OwogCQk1QzFEQkRFMjFCMDQzOEQzMDAyMzU1NTIgLyogQ29udGV4dC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzFEQkM1NzFCMDQzOEQy
MDAyMzU1NTIgLyogQ29udGV4dC5jcHAgKi87IH07CiAJCTVDMURCREUzMUIwNDM4RDMwMDIzNTU1
MiAvKiBDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1QzFEQkM1ODFCMDQzOEQyMDAyMzU1NTIgLyogQ29udGV4dC5oICovOyB9OwotCQk1QzFE
QkRFNDFCMDQzOEQzMDAyMzU1NTIgLyogRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzFEQkM1OTFCMDQzOEQyMDAyMzU1NTIgLyogRGF0YS5j
cHAgKi87IH07Ci0JCTVDMURCREU1MUIwNDM4RDMwMDIzNTU1MiAvKiBEYXRhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzFEQkM1QTFCMDQzOEQyMDAy
MzU1NTIgLyogRGF0YS5oICovOyB9OwogCQk1QzFEQkRFNjFCMDQzOEQzMDAyMzU1NTIgLyogRGV2
aWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
MURCQzVCMUIwNDM4RDIwMDIzNTU1MiAvKiBEZXZpY2UuY3BwICovOyB9OwogCQk1QzFEQkRFNzFC
MDQzOEQzMDAyMzU1NTIgLyogRGV2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1QzFEQkM1QzFCMDQzOEQyMDAyMzU1NTIgLyogRGV2aWNlLmggKi87
IH07CiAJCTVDMURCREU4MUIwNDM4RDMwMDIzNTU1MiAvKiBEaXNwbGF5LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMURCQzVEMUIwNDM4RDIwMDIz
NTU1MiAvKiBEaXNwbGF5LmNwcCAqLzsgfTsKQEAgLTE2OCw3ICsxNTMsNiBAQAogCQk1QzFEQkRF
QzFCMDQzOEQzMDAyMzU1NTIgLyogZmVhdHVyZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMURCQzYyMUIwNDM4RDIwMDIzNTU1MiAvKiBmZWF0dXJl
cy5oICovOyB9OwogCQk1QzFEQkRFRTFCMDQzOEQzMDAyMzU1NTIgLyogRmVuY2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxREJDNjQxQjA0MzhE
MjAwMjM1NTUyIC8qIEZlbmNlLmNwcCAqLzsgfTsKIAkJNUMxREJERUYxQjA0MzhEMzAwMjM1NTUy
IC8qIEZlbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1QzFEQkM2NTFCMDQzOEQyMDAyMzU1NTIgLyogRmVuY2UuaCAqLzsgfTsKLQkJNUMxREJERjAx
QjA0MzhEMzAwMjM1NTUyIC8qIEZsb2F0MTZUb0Zsb2F0MzIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxREJDNjYxQjA0MzhEMjAwMjM1NTUyIC8q
IEZsb2F0MTZUb0Zsb2F0MzIuY3BwICovOyB9OwogCQk1QzFEQkRGMTFCMDQzOEQzMDAyMzU1NTIg
LyogZm9ybWF0dXRpbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUMxREJDNjgxQjA0MzhEMjAwMjM1NTUyIC8qIGZvcm1hdHV0aWxzLmNwcCAqLzsg
fTsKIAkJNUMxREJERjIxQjA0MzhEMzAwMjM1NTUyIC8qIGZvcm1hdHV0aWxzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzFEQkM2OTFCMDQzOEQyMDAy
MzU1NTIgLyogZm9ybWF0dXRpbHMuaCAqLzsgfTsKIAkJNUMxREJERjMxQjA0MzhEMzAwMjM1NTUy
IC8qIEZyYW1lYnVmZmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVDMURCQzZBMUIwNDM4RDIwMDIzNTU1MiAvKiBGcmFtZWJ1ZmZlci5jcHAgKi87
IH07CkBAIC0yNTYsNiArMjQwLDU5IEBACiAJCTVDQzdENDc5MTkxMDI2MjEwMDBCOEMxRiAvKiB1
dGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUNDN0Q0NjgxOTEwMjYyMDAwMEI4QzFGIC8qIHV0aWxpdGllcy5jcHAgKi87IH07CiAJCTVD
QzdENDdBMTkxMDI2MjEwMDBCOEMxRiAvKiB1dGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQzdENDY5MTkxMDI2MjAwMDBCOEMxRiAvKiB1
dGlsaXRpZXMuaCAqLzsgfTsKIAkJNUNDN0Q0N0IxOTEwMjYyMTAwMEI4QzFGIC8qIHZlcnNpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQzdENDZB
MTkxMDI2MjAwMDBCOEMxRiAvKiB2ZXJzaW9uLmggKi87IH07CisJCTVDQ0Q4MTcwMURCRkU5OTkw
MDYwNjZCOCAvKiBDb250ZXh0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUNDRDgxNTgxREJGRTk5OTAwNjA2NkI4IC8qIENvbnRleHRTdGF0
ZS5jcHAgKi87IH07CisJCTVDQ0Q4MTcxMURCRkU5OTkwMDYwNjZCOCAvKiBDb250ZXh0U3RhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTU5
MURCRkU5OTkwMDYwNjZCOCAvKiBDb250ZXh0U3RhdGUuaCAqLzsgfTsKKwkJNUNDRDgxNzIxREJG
RTk5OTAwNjA2NkI4IC8qIERlYnVnLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTVBMURCRkU5OTkwMDYwNjZCOCAvKiBEZWJ1Zy5jcHAgKi87
IH07CisJCTVDQ0Q4MTczMURCRkU5OTkwMDYwNjZCOCAvKiBEZWJ1Zy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDgxNUIxREJGRTk5OTAwNjA2NkI4
IC8qIERlYnVnLmggKi87IH07CisJCTVDQ0Q4MTc0MURCRkU5OTkwMDYwNjZCOCAvKiBIYW5kbGVS
YW5nZUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1Q0NEODE1QzFEQkZFOTk5MDA2MDY2QjggLyogSGFuZGxlUmFuZ2VBbGxvY2F0b3Iu
Y3BwICovOyB9OworCQk1Q0NEODE3NTFEQkZFOTk5MDA2MDY2QjggLyogSGFuZGxlUmFuZ2VBbGxv
Y2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
Q0Q4MTVEMURCRkU5OTkwMDYwNjZCOCAvKiBIYW5kbGVSYW5nZUFsbG9jYXRvci5oICovOyB9Owor
CQk1Q0NEODE3NjFEQkZFOTk5MDA2MDY2QjggLyogSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDgxNUUxREJGRTk5OTAwNjA2NkI4IC8q
IEltYWdlLmNwcCAqLzsgfTsKKwkJNUNDRDgxNzcxREJGRTk5OTAwNjA2NkI4IC8qIEltYWdlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODE1RjFE
QkZFOTk5MDA2MDY2QjggLyogSW1hZ2UuaCAqLzsgfTsKKwkJNUNDRDgxNzgxREJGRTk5OTAwNjA2
NkI4IC8qIEluZGV4UmFuZ2VDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODE2MDFEQkZFOTk5MDA2MDY2QjggLyogSW5kZXhSYW5nZUNh
Y2hlLmNwcCAqLzsgfTsKKwkJNUNDRDgxNzkxREJGRTk5OTAwNjA2NkI4IC8qIEluZGV4UmFuZ2VD
YWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUND
RDgxNjExREJGRTk5OTAwNjA2NkI4IC8qIEluZGV4UmFuZ2VDYWNoZS5oICovOyB9OworCQk1Q0NE
ODE3QTFEQkZFOTk5MDA2MDY2QjggLyogUGF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODE2MjFEQkZFOTk5MDA2MDY2QjggLyogUGF0aC5j
cHAgKi87IH07CisJCTVDQ0Q4MTdCMURCRkU5OTkwMDYwNjZCOCAvKiBQYXRoLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODE2MzFEQkZFOTk5MDA2
MDY2QjggLyogUGF0aC5oICovOyB9OworCQk1Q0NEODE3QzFEQkZFOTk5MDA2MDY2QjggLyogcXVl
cnl1dGlscy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1Q0NEODE2NDFEQkZFOTk5MDA2MDY2QjggLyogcXVlcnl1dGlscy5jcHAgKi87IH07CisJCTVD
Q0Q4MTdEMURCRkU5OTkwMDYwNjZCOCAvKiBxdWVyeXV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODE2NTFEQkZFOTk5MDA2MDY2QjggLyog
cXVlcnl1dGlscy5oICovOyB9OworCQk1Q0NEODE3RTFEQkZFOTk5MDA2MDY2QjggLyogc2lnbmFs
X3V0aWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDQ0Q4MTY2MURCRkU5OTkwMDYwNjZCOCAvKiBzaWduYWxfdXRpbHMuY3BwICovOyB9OworCQk1
Q0NEODE3RjFEQkZFOTk5MDA2MDY2QjggLyogc2lnbmFsX3V0aWxzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODE2NzFEQkZFOTk5MDA2MDY2Qjgg
Lyogc2lnbmFsX3V0aWxzLmggKi87IH07CisJCTVDQ0Q4MTgwMURCRkU5OTkwMDYwNjZCOCAvKiBT
dHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUNDRDgxNjgxREJGRTk5OTAwNjA2NkI4IC8qIFN0cmVhbS5jcHAgKi87IH07CisJCTVDQ0Q4MTgx
MURCRkU5OTkwMDYwNjZCOCAvKiBTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTY5MURCRkU5OTkwMDYwNjZCOCAvKiBTdHJlYW0uaCAq
LzsgfTsKKwkJNUNDRDgxODIxREJGRTk5OTAwNjA2NkI4IC8qIHZhbGlkYXRpb25FUzMxLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTZBMURC
RkU5OTkwMDYwNjZCOCAvKiB2YWxpZGF0aW9uRVMzMS5jcHAgKi87IH07CisJCTVDQ0Q4MTgzMURC
RkU5OTkwMDYwNjZCOCAvKiB2YWxpZGF0aW9uRVMzMS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDgxNkIxREJGRTk5OTAwNjA2NkI4IC8qIHZhbGlk
YXRpb25FUzMxLmggKi87IH07CisJCTVDQ0Q4MTg0MURCRkU5OTkwMDYwNjZCOCAvKiBWZXJzaW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODE2
QzFEQkZFOTk5MDA2MDY2QjggLyogVmVyc2lvbi5oICovOyB9OworCQk1Q0NEODE4NTFEQkZFOTk5
MDA2MDY2QjggLyogV29ya2Fyb3VuZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTZGMURCRkU5OTkwMDYwNjZCOCAvKiBXb3JrYXJvdW5kcy5o
ICovOyB9OworCQk1Q0NEODE4RDFEQkZFQTEwMDA2MDY2QjggLyogQml0U2V0SXRlcmF0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTg2MURC
RkVBMTAwMDYwNjZCOCAvKiBCaXRTZXRJdGVyYXRvci5oICovOyB9OworCQk1Q0NEODE4RTFEQkZF
QTEwMDA2MDY2QjggLyogQ29sb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDQ0Q4MTg3MURCRkVBMTAwMDYwNjZCOCAvKiBDb2xvci5oICovOyB9Owor
CQk1Q0NEODE4RjFEQkZFQTEwMDA2MDY2QjggLyogRmxvYXQxNlRvRmxvYXQzMi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODE4OTFEQkZFQTEw
MDA2MDY2QjggLyogRmxvYXQxNlRvRmxvYXQzMi5jcHAgKi87IH07CisJCTVDQ0Q4MTkwMURCRkVB
MTAwMDYwNjZCOCAvKiBtYXRyaXhfdXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MThBMURCRkVBMTAwMDYwNjZCOCAvKiBtYXRyaXhfdXRp
bHMuaCAqLzsgfTsKKwkJNUNDRDgxOTExREJGRUExMDAwNjA2NkI4IC8qIHN0cmluZ191dGlscy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODE4
QjFEQkZFQTEwMDA2MDY2QjggLyogc3RyaW5nX3V0aWxzLmNwcCAqLzsgfTsKKwkJNUNDRDgxOTIx
REJGRUExMDAwNjA2NkI4IC8qIHN0cmluZ191dGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDgxOEMxREJGRUExMDAwNjA2NkI4IC8qIHN0cmlu
Z191dGlscy5oICovOyB9OworCQk1Q0NEODFBQTFEQkZFQTVDMDA2MDY2QjggLyogQWRkQW5kVHJ1
ZVRvTG9vcENvbmRpdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1Q0NEODE5MzFEQkZFQTVDMDA2MDY2QjggLyogQWRkQW5kVHJ1ZVRvTG9vcENv
bmRpdGlvbi5jcHAgKi87IH07CisJCTVDQ0Q4MUFCMURCRkVBNUMwMDYwNjZCOCAvKiBBZGRBbmRU
cnVlVG9Mb29wQ29uZGl0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1Q0NEODE5NDFEQkZFQTVDMDA2MDY2QjggLyogQWRkQW5kVHJ1ZVRvTG9vcENv
bmRpdGlvbi5oICovOyB9OworCQk1Q0NEODFBQzFEQkZFQTVDMDA2MDY2QjggLyogQWRkRGVmYXVs
dFJldHVyblN0YXRlbWVudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUNDRDgxOTUxREJGRUE1QzAwNjA2NkI4IC8qIEFkZERlZmF1bHRSZXR1cm5T
dGF0ZW1lbnRzLmNwcCAqLzsgfTsKKwkJNUNDRDgxQUQxREJGRUE1QzAwNjA2NkI4IC8qIEFkZERl
ZmF1bHRSZXR1cm5TdGF0ZW1lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1Q0NEODE5NjFEQkZFQTVDMDA2MDY2QjggLyogQWRkRGVmYXVsdFJldHVy
blN0YXRlbWVudHMuaCAqLzsgfTsKKwkJNUNDRDgxQUUxREJGRUE1QzAwNjA2NkI4IC8qIEJyZWFr
VmFyaWFibGVBbGlhc2luZ0luSW5uZXJMb29wcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODE5NzFEQkZFQTVDMDA2MDY2QjggLyogQnJlYWtW
YXJpYWJsZUFsaWFzaW5nSW5Jbm5lckxvb3BzLmNwcCAqLzsgfTsKKwkJNUNDRDgxQUYxREJGRUE1
QzAwNjA2NkI4IC8qIEJyZWFrVmFyaWFibGVBbGlhc2luZ0luSW5uZXJMb29wcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDgxOTgxREJGRUE1QzAw
NjA2NkI4IC8qIEJyZWFrVmFyaWFibGVBbGlhc2luZ0luSW5uZXJMb29wcy5oICovOyB9OworCQk1
Q0NEODFCMDFEQkZFQTVDMDA2MDY2QjggLyogQ29uc3RhbnRVbmlvbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODE5OTFEQkZFQTVDMDA2MDY2
QjggLyogQ29uc3RhbnRVbmlvbi5jcHAgKi87IH07CisJCTVDQ0Q4MUIxMURCRkVBNUMwMDYwNjZC
OCAvKiBFeHBhbmRJbnRlZ2VyUG93RXhwcmVzc2lvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDgxOUExREJGRUE1QzAwNjA2NkI4IC8qIEV4
cGFuZEludGVnZXJQb3dFeHByZXNzaW9ucy5jcHAgKi87IH07CisJCTVDQ0Q4MUIyMURCRkVBNUMw
MDYwNjZCOCAvKiBFeHBhbmRJbnRlZ2VyUG93RXhwcmVzc2lvbnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTlCMURCRkVBNUMwMDYwNjZCOCAv
KiBFeHBhbmRJbnRlZ2VyUG93RXhwcmVzc2lvbnMuaCAqLzsgfTsKKwkJNUNDRDgxQjMxREJGRUE1
QzAwNjA2NkI4IC8qIEludGVybU5vZGVQYXR0ZXJuTWF0Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODE5QzFEQkZFQTVDMDA2MDY2Qjgg
LyogSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVyLmNwcCAqLzsgfTsKKwkJNUNDRDgxQjQxREJGRUE1
QzAwNjA2NkI4IC8qIEludGVybU5vZGVQYXR0ZXJuTWF0Y2hlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDgxOUQxREJGRUE1QzAwNjA2NkI4IC8q
IEludGVybU5vZGVQYXR0ZXJuTWF0Y2hlci5oICovOyB9OworCQk1Q0NEODFCNTFEQkZFQTVDMDA2
MDY2QjggLyogUXVhbGlmaWVyVHlwZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUNDRDgxOUUxREJGRUE1QzAwNjA2NkI4IC8qIFF1YWxpZmllclR5
cGVzLmNwcCAqLzsgfTsKKwkJNUNDRDgxQjYxREJGRUE1QzAwNjA2NkI4IC8qIFF1YWxpZmllclR5
cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NE
ODE5RjFEQkZFQTVDMDA2MDY2QjggLyogUXVhbGlmaWVyVHlwZXMuaCAqLzsgfTsKKwkJNUNDRDgx
QjcxREJGRUE1QzAwNjA2NkI4IC8qIFJld3JpdGVUZXhlbEZldGNoT2Zmc2V0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MUEwMURCRkVBNUMw
MDYwNjZCOCAvKiBSZXdyaXRlVGV4ZWxGZXRjaE9mZnNldC5jcHAgKi87IH07CisJCTVDQ0Q4MUI4
MURCRkVBNUMwMDYwNjZCOCAvKiBSZXdyaXRlVGV4ZWxGZXRjaE9mZnNldC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDgxQTExREJGRUE1QzAwNjA2
NkI4IC8qIFJld3JpdGVUZXhlbEZldGNoT2Zmc2V0LmggKi87IH07CisJCTVDQ0Q4MUI5MURCRkVB
NUMwMDYwNjZCOCAvKiBSZXdyaXRlVW5hcnlNaW51c09wZXJhdG9ySW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MUEyMURCRkVBNUMwMDYw
NjZCOCAvKiBSZXdyaXRlVW5hcnlNaW51c09wZXJhdG9ySW50LmNwcCAqLzsgfTsKKwkJNUNDRDgx
QkExREJGRUE1QzAwNjA2NkI4IC8qIFJld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JJbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MUEzMURCRkVB
NUMwMDYwNjZCOCAvKiBSZXdyaXRlVW5hcnlNaW51c09wZXJhdG9ySW50LmggKi87IH07CisJCTVD
Q0Q4MUJCMURCRkVBNUMwMDYwNjZCOCAvKiBTaW1wbGlmeUxvb3BDb25kaXRpb25zLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MUE0MURCRkVB
NUMwMDYwNjZCOCAvKiBTaW1wbGlmeUxvb3BDb25kaXRpb25zLmNwcCAqLzsgfTsKKwkJNUNDRDgx
QkMxREJGRUE1QzAwNjA2NkI4IC8qIFNpbXBsaWZ5TG9vcENvbmRpdGlvbnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MUE1MURCRkVBNUMwMDYw
NjZCOCAvKiBTaW1wbGlmeUxvb3BDb25kaXRpb25zLmggKi87IH07CisJCTVDQ0Q4MUJEMURCRkVB
NUMwMDYwNjZCOCAvKiBTcGxpdFNlcXVlbmNlT3BlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDgxQTYxREJGRUE1QzAwNjA2NkI4IC8q
IFNwbGl0U2VxdWVuY2VPcGVyYXRvci5jcHAgKi87IH07CisJCTVDQ0Q4MUJFMURCRkVBNUMwMDYw
NjZCOCAvKiBTcGxpdFNlcXVlbmNlT3BlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MUE3MURCRkVBNUMwMDYwNjZCOCAvKiBTcGxpdFNl
cXVlbmNlT3BlcmF0b3IuaCAqLzsgfTsKKwkJNUNDRDgxQkYxREJGRUE1QzAwNjA2NkI4IC8qIFVz
ZUludGVyZmFjZUJsb2NrRmllbGRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MUE4MURCRkVBNUMwMDYwNjZCOCAvKiBVc2VJbnRlcmZhY2VC
bG9ja0ZpZWxkcy5jcHAgKi87IH07CisJCTVDQ0Q4MUMwMURCRkVBNUMwMDYwNjZCOCAvKiBVc2VJ
bnRlcmZhY2VCbG9ja0ZpZWxkcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUNDRDgxQTkxREJGRUE1QzAwNjA2NkI4IC8qIFVzZUludGVyZmFjZUJsb2Nr
RmllbGRzLmggKi87IH07CisJCTVDQ0Q4MUMzMURCRkVBRDkwMDYwNjZCOCAvKiBFbXVsYXRlR0xG
cmFnQ29sb3JCcm9hZGNhc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUNDRDgxQzExREJGRUFEOTAwNjA2NkI4IC8qIEVtdWxhdGVHTEZyYWdDb2xv
ckJyb2FkY2FzdC5jcHAgKi87IH07CisJCTVDQ0Q4MUM0MURCRkVBRDkwMDYwNjZCOCAvKiBFbXVs
YXRlR0xGcmFnQ29sb3JCcm9hZGNhc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MUMyMURCRkVBRDkwMDYwNjZCOCAvKiBFbXVsYXRlR0xGcmFn
Q29sb3JCcm9hZGNhc3QuaCAqLzsgfTsKIAkJNzIzMDlBNTYxODNDMjdERTAwMzcwQjkzIC8qIFRv
a2VuaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MjMwOUE1NTE4M0MyN0RCMDAzNzBCOTMgLyogVG9rZW5pemVyLmNwcCAqLzsgfTsKIAkJNzIz
MDlBNTgxODNDMjdGMzAwMzcwQjkzIC8qIEV4cHJlc3Npb25QYXJzZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIzMDlBNTcxODNDMjdGMTAwMzcw
QjkzIC8qIEV4cHJlc3Npb25QYXJzZXIuY3BwICovOyB9OwogCQlBMDhDM0NEQzE2RDZDQjYxMDAz
RjBCODMgLyogQXJyYXlCb3VuZHNDbGFtcGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEwOEMzQ0RBMTZENkNCNjEwMDNGMEI4MyAvKiBBcnJheUJv
dW5kc0NsYW1wZXIuY3BwICovOyB9OwpAQCAtMjc2LDcgKzMxMyw2IEBACiAJCUEyNjRGOEJBMTY5
NzRERUQwMDZGQUE1QSAvKiBNYWNyb0V4cGFuZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEyNjRGOEExMTY5NzRERUQwMDZGQUE1QSAvKiBNYWNy
b0V4cGFuZGVyLmNwcCAqLzsgfTsKIAkJQTI2NEY4QkIxNjk3NERFRDAwNkZBQTVBIC8qIE1hY3Jv
RXhwYW5kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEEyNjRGOEEyMTY5NzRERUQwMDZGQUE1QSAvKiBNYWNyb0V4cGFuZGVyLmggKi87IH07CiAJCUEy
NjRGOEJDMTY5NzRERUQwMDZGQUE1QSAvKiBudW1lcmljX2xleC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTI2NEY4QTMxNjk3NERFRDAwNkZBQTVBIC8q
IG51bWVyaWNfbGV4LmggKi87IH07Ci0JCUEyNjRGOEJEMTY5NzRERUQwMDZGQUE1QSAvKiBwcF91
dGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTI2
NEY4QTQxNjk3NERFRDAwNkZBQTVBIC8qIHBwX3V0aWxzLmggKi87IH07CiAJCUEyNjRGOEJFMTY5
NzRERUQwMDZGQUE1QSAvKiBQcmVwcm9jZXNzb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTI2NEY4QTUxNjk3NERFRDAwNkZBQTVBIC8qIFByZXBy
b2Nlc3Nvci5jcHAgKi87IH07CiAJCUEyNjRGOEJGMTY5NzRERUQwMDZGQUE1QSAvKiBQcmVwcm9j
ZXNzb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEy
NjRGOEE2MTY5NzRERUQwMDZGQUE1QSAvKiBQcmVwcm9jZXNzb3IuaCAqLzsgfTsKIAkJQTI2NEY4
QzAxNjk3NERFRDAwNkZBQTVBIC8qIFNvdXJjZUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMjY0RjhBNzE2OTc0REVEMDA2RkFBNUEgLyog
U291cmNlTG9jYXRpb24uaCAqLzsgfTsKQEAgLTMxOCwxMyArMzU0LDYgQEAKIAkJMzEwMTJEQTQx
OEI5N0I5QjAwMzkwNjJGIC8qIENvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEwMTJEQTUxOEI5
N0I5QjAwMzkwNjJGIC8qIENvbXBpbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENvbXBpbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEw
MTJEQTgxOEI5N0I5QjAwMzkwNjJGIC8qIENvbnN0YW50VW5pb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RhbnRVbmlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkzMTAxMkRBQTE4Qjk3QjlCMDAzOTA2MkYgLyogRGVwZW5kZW5jeUdyYXBoLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlcGVuZGVuY3lHcmFwaC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMDEyREFCMThCOTdCOUIwMDM5MDYyRiAv
KiBEZXBlbmRlbmN5R3JhcGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVw
ZW5kZW5jeUdyYXBoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMDEyREFDMThC
OTdCOUIwMDM5MDYyRiAvKiBEZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTAxMkRBRDE4Qjk3QjlCMDAzOTA2MkYgLyogRGVw
ZW5kZW5jeUdyYXBoQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
ZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMx
MDEyREFFMThCOTdCOUIwMDM5MDYyRiAvKiBEZXBlbmRlbmN5R3JhcGhPdXRwdXQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzEwMTJEQUYxOEI5N0I5QjAwMzkwNjJG
IC8qIERlcGVuZGVuY3lHcmFwaE91dHB1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEZXBlbmRlbmN5R3JhcGhPdXRwdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMzEwMTJEQjAxOEI5N0I5QjAwMzkwNjJGIC8qIERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlcGVuZGVuY3lHcmFwaFRy
YXZlcnNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEwMTJEQjUxOEI5N0I5
QjAwMzkwNjJGIC8qIERpYWdub3N0aWNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IERpYWdub3N0aWNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MzEwMTJEQjYxOEI5N0I5QjAwMzkwNjJGIC8qIERpYWdub3N0aWNzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERpYWdub3N0aWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTMxMDEyREI3MThCOTdCOUIwMDM5MDYyRiAvKiBEaXJlY3RpdmVIYW5kbGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpcmVjdGl2ZUhhbmRsZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzY2LDggKzM5NSw2IEBACiAJCTMxMDEy
REU2MThCOTdCOUIwMDM5MDYyRiAvKiBQb29sQWxsb2MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUG9vbEFsbG9jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzEwMTJERTcxOEI5N0I5QjAwMzkwNjJGIC8qIFBvb2xBbGxvYy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQb29sQWxsb2MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzEwMTJERTgxOEI5N0I5QjAwMzkwNjJGIC8qIFByYWdtYS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQcmFnbWEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMzEwMTJERUExOEI5N0I5QjAwMzkwNjJGIC8qIFF1YWxpZmllckFsaXZlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1YWxpZmllckFsaXZlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTMxMDEyREVEMThCOTdCOUIwMDM5MDYyRiAvKiBSZW5hbWVGdW5j
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5hbWVGdW5jdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTAxMkRFRTE4Qjk3QjlCMDAzOTA2MkYg
LyogUmV3cml0ZUVsc2VCbG9ja3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmV3cml0ZUVsc2VCbG9ja3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzMTAxMkRFRjE4Qjk3QjlCMDAzOTA2MkYgLyogUmV3cml0ZUVsc2VCbG9ja3MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmV3cml0ZUVsc2VCbG9ja3MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEwMTJERjAxOEI5N0I5QjAwMzkwNjJGIC8qIFNlYXJjaFN5
bWJvbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWFyY2hTeW1i
b2wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzc1LDEwICs0MDIsNiBAQAog
CQkzMTAxMkRGMjE4Qjk3QjlCMDAzOTA2MkYgLyogU2hhZGVyTGFuZy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFkZXJMYW5nLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzEwMTJERjQxOEI5N0I5QjAwMzkwNjJGIC8qIFN5bWJvbFRhYmxlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5bWJvbFRhYmxlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEwMTJERjUxOEI5N0I5QjAwMzkwNjJGIC8q
IFN5bWJvbFRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5bWJvbFRh
YmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMDEyREY3MThCOTdCOUIwMDM5
MDYyRiAvKiBSZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmcuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTAxMkRGODE4Qjk3QjlCMDAzOTA2MkYgLyog
UmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTMxMDEyREY5MThCOTdCOUIwMDM5MDYyRiAvKiBSZXN0cmljdFZlcnRleFNo
YWRlclRpbWluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXN0
cmljdFZlcnRleFNoYWRlclRpbWluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTMxMDEyREZBMThCOTdCOUIwMDM5MDYyRiAvKiBSZXN0cmljdFZlcnRleFNoYWRlclRpbWluZy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXN0cmljdFZlcnRleFNoYWRlclRp
bWluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTAxMkRGQjE4Qjk3QjlCMDAz
OTA2MkYgLyogVHJhbnNsYXRvckVTU0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVHJhbnNsYXRvckVTU0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzMTAxMkRGQzE4Qjk3QjlCMDAzOTA2MkYgLyogVHJhbnNsYXRvckVTU0wuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhbnNsYXRvckVTU0wuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzEwMTJERkQxOEI5N0I5QjAwMzkwNjJGIC8qIFRyYW5zbGF0b3JHTFNM
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRyYW5zbGF0b3JHTFNM
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2MSw4ICs0ODQsNiBAQAogCQk1
QzFEQkM1NjFCMDQzOEQyMDAyMzU1NTIgLyogQ29uc3RhbnRzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IENvbnN0YW50cy5oOyBwYXRoID0gc3JjL2xpYkFOR0xFL0NvbnN0YW50
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzFEQkM1NzFCMDQzOEQyMDAyMzU1
NTIgLyogQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBD
b250ZXh0LmNwcDsgcGF0aCA9IHNyYy9saWJBTkdMRS9Db250ZXh0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUMxREJDNTgxQjA0MzhEMjAwMjM1NTUyIC8qIENvbnRleHQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ29udGV4dC5oOyBwYXRoID0gc3JjL2xp
YkFOR0xFL0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUMxREJDNTkx
QjA0MzhEMjAwMjM1NTUyIC8qIERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gRGF0YS5jcHA7IHBhdGggPSBzcmMvbGliQU5HTEUvRGF0YS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDMURCQzVBMUIwNDM4RDIwMDIzNTU1MiAvKiBEYXRhLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGEuaDsgcGF0aCA9IHNyYy9saWJB
TkdMRS9EYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMURCQzVCMUIwNDM4
RDIwMDIzNTU1MiAvKiBEZXZpY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gRGV2aWNlLmNwcDsgcGF0aCA9IHNyYy9saWJBTkdMRS9EZXZpY2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1QzFEQkM1QzFCMDQzOEQyMDAyMzU1NTIgLyogRGV2aWNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERldmljZS5oOyBwYXRoID0gc3Jj
L2xpYkFOR0xFL0RldmljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzFEQkM1
RDFCMDQzOEQyMDAyMzU1NTIgLyogRGlzcGxheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBEaXNwbGF5LmNwcDsgcGF0aCA9IHNyYy9saWJBTkdMRS9EaXNwbGF5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ3Myw3ICs0OTQsNiBAQAogCQk1QzFE
QkM2MjFCMDQzOEQyMDAyMzU1NTIgLyogZmVhdHVyZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gZmVhdHVyZXMuaDsgcGF0aCA9IHNyYy9saWJBTkdMRS9mZWF0dXJlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzFEQkM2NDFCMDQzOEQyMDAyMzU1NTIgLyog
RmVuY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRmVuY2UuY3Bw
OyBwYXRoID0gc3JjL2xpYkFOR0xFL0ZlbmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUMxREJDNjUxQjA0MzhEMjAwMjM1NTUyIC8qIEZlbmNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEZlbmNlLmg7IHBhdGggPSBzcmMvbGliQU5HTEUvRmVuY2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUMxREJDNjYxQjA0MzhEMjAwMjM1NTUyIC8q
IEZsb2F0MTZUb0Zsb2F0MzIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gRmxvYXQxNlRvRmxvYXQzMi5jcHA7IHBhdGggPSBzcmMvbGliQU5HTEUvRmxvYXQxNlRvRmxv
YXQzMi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMURCQzY4MUIwNDM4RDIw
MDIzNTU1MiAvKiBmb3JtYXR1dGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBmb3JtYXR1dGlscy5jcHA7IHBhdGggPSBzcmMvbGliQU5HTEUvZm9ybWF0dXRpbHMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzFEQkM2OTFCMDQzOEQyMDAyMzU1
NTIgLyogZm9ybWF0dXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gZm9y
bWF0dXRpbHMuaDsgcGF0aCA9IHNyYy9saWJBTkdMRS9mb3JtYXR1dGlscy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1QzFEQkM2QTFCMDQzOEQyMDAyMzU1NTIgLyogRnJhbWVidWZm
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRnJhbWVidWZmZXIu
Y3BwOyBwYXRoID0gc3JjL2xpYkFOR0xFL0ZyYW1lYnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTU2MSw2ICs1ODEsNjMgQEAKIAkJNUNDN0Q0NjgxOTEwMjYyMDAwMEI4
QzFGIC8qIHV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSB1dGlsaXRpZXMuY3BwOyBwYXRoID0gc3JjL2NvbW1vbi91dGlsaXRpZXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0M3RDQ2OTE5MTAyNjIwMDAwQjhDMUYgLyogdXRpbGl0
aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHV0aWxpdGllcy5oOyBwYXRo
ID0gc3JjL2NvbW1vbi91dGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUNDN0Q0NkExOTEwMjYyMDAwMEI4QzFGIC8qIHZlcnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gdmVyc2lvbi5oOyBwYXRoID0gc3JjL2NvbW1vbi92ZXJzaW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQ0Q4MTU3MURCRkU5OTkwMDYwNjZCOCAvKiBh
bmdsZXR5cGVzLmlubCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBhbmdsZXR5cGVzLmlubDsgcGF0
aCA9IHNyYy9saWJBTkdMRS9hbmdsZXR5cGVzLmlubDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNUNDRDgxNTgxREJGRTk5OTAwNjA2NkI4IC8qIENvbnRleHRTdGF0ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDb250ZXh0U3RhdGUuY3BwOyBwYXRoID0g
c3JjL2xpYkFOR0xFL0NvbnRleHRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTVDQ0Q4MTU5MURCRkU5OTkwMDYwNjZCOCAvKiBDb250ZXh0U3RhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ29udGV4dFN0YXRlLmg7IHBhdGggPSBzcmMvbGliQU5H
TEUvQ29udGV4dFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQ0Q4MTVB
MURCRkU5OTkwMDYwNjZCOCAvKiBEZWJ1Zy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBEZWJ1Zy5jcHA7IHBhdGggPSBzcmMvbGliQU5HTEUvRGVidWcuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0NEODE1QjFEQkZFOTk5MDA2MDY2QjggLyogRGVi
dWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGVidWcuaDsgcGF0aCA9IHNy
Yy9saWJBTkdMRS9EZWJ1Zy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0NEODE1
QzFEQkZFOTk5MDA2MDY2QjggLyogSGFuZGxlUmFuZ2VBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSGFuZGxlUmFuZ2VBbGxvY2F0b3IuY3BwOyBwYXRo
ID0gc3JjL2xpYkFOR0xFL0hhbmRsZVJhbmdlQWxsb2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNUNDRDgxNUQxREJGRTk5OTAwNjA2NkI4IC8qIEhhbmRsZVJhbmdlQWxs
b2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEhhbmRsZVJhbmdlQWxs
b2NhdG9yLmg7IHBhdGggPSBzcmMvbGliQU5HTEUvSGFuZGxlUmFuZ2VBbGxvY2F0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDRDgxNUUxREJGRTk5OTAwNjA2NkI4IC8qIElt
YWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEltYWdlLmNwcDsg
cGF0aCA9IHNyYy9saWJBTkdMRS9JbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTVDQ0Q4MTVGMURCRkU5OTkwMDYwNjZCOCAvKiBJbWFnZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBJbWFnZS5oOyBwYXRoID0gc3JjL2xpYkFOR0xFL0ltYWdlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQ0Q4MTYwMURCRkU5OTkwMDYwNjZCOCAvKiBJ
bmRleFJhbmdlQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
SW5kZXhSYW5nZUNhY2hlLmNwcDsgcGF0aCA9IHNyYy9saWJBTkdMRS9JbmRleFJhbmdlQ2FjaGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0NEODE2MTFEQkZFOTk5MDA2MDY2
QjggLyogSW5kZXhSYW5nZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEluZGV4UmFuZ2VDYWNoZS5oOyBwYXRoID0gc3JjL2xpYkFOR0xFL0luZGV4UmFuZ2VDYWNoZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0NEODE2MjFEQkZFOTk5MDA2MDY2Qjgg
LyogUGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQYXRoLmNw
cDsgcGF0aCA9IHNyYy9saWJBTkdMRS9QYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNUNDRDgxNjMxREJGRTk5OTAwNjA2NkI4IC8qIFBhdGguaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gUGF0aC5oOyBwYXRoID0gc3JjL2xpYkFOR0xFL1BhdGguaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDRDgxNjQxREJGRTk5OTAwNjA2NkI4IC8qIHF1
ZXJ5dXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gcXVlcnl1
dGlscy5jcHA7IHBhdGggPSBzcmMvbGliQU5HTEUvcXVlcnl1dGlscy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTVDQ0Q4MTY1MURCRkU5OTkwMDYwNjZCOCAvKiBxdWVyeXV0aWxz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHF1ZXJ5dXRpbHMuaDsgcGF0aCA9
IHNyYy9saWJBTkdMRS9xdWVyeXV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDQ0Q4MTY2MURCRkU5OTkwMDYwNjZCOCAvKiBzaWduYWxfdXRpbHMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gc2lnbmFsX3V0aWxzLmNwcDsgcGF0aCA9IHNyYy9s
aWJBTkdMRS9zaWduYWxfdXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
Q0NEODE2NzFEQkZFOTk5MDA2MDY2QjggLyogc2lnbmFsX3V0aWxzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IHNpZ25hbF91dGlscy5oOyBwYXRoID0gc3JjL2xpYkFOR0xFL3Np
Z25hbF91dGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0NEODE2ODFEQkZF
OTk5MDA2MDY2QjggLyogU3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFN0cmVhbS5jcHA7IHBhdGggPSBzcmMvbGliQU5HTEUvU3RyZWFtLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDRDgxNjkxREJGRTk5OTAwNjA2NkI4IC8qIFN0cmVh
bS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdHJlYW0uaDsgcGF0aCA9IHNy
Yy9saWJBTkdMRS9TdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDRDgx
NkExREJGRTk5OTAwNjA2NkI4IC8qIHZhbGlkYXRpb25FUzMxLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHZhbGlkYXRpb25FUzMxLmNwcDsgcGF0aCA9IHNyYy9saWJB
TkdMRS92YWxpZGF0aW9uRVMzMS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVD
Q0Q4MTZCMURCRkU5OTkwMDYwNjZCOCAvKiB2YWxpZGF0aW9uRVMzMS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSB2YWxpZGF0aW9uRVMzMS5oOyBwYXRoID0gc3JjL2xpYkFOR0xF
L3ZhbGlkYXRpb25FUzMxLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQ0Q4MTZD
MURCRkU5OTkwMDYwNjZCOCAvKiBWZXJzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFZlcnNpb24uaDsgcGF0aCA9IHNyYy9saWJBTkdMRS9WZXJzaW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQ0Q4MTZEMURCRkU5OTkwMDYwNjZCOCAvKiBWZXJzaW9u
LmlubCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBWZXJzaW9uLmlubDsgcGF0aCA9IHNyYy9saWJB
TkdMRS9WZXJzaW9uLmlubDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDRDgxNkUx
REJGRTk5OTAwNjA2NkI4IC8qIFZlcnRleEF0dHJpYnV0ZS5pbmwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBu
YW1lID0gVmVydGV4QXR0cmlidXRlLmlubDsgcGF0aCA9IHNyYy9saWJBTkdMRS9WZXJ0ZXhBdHRy
aWJ1dGUuaW5sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0NEODE2RjFEQkZFOTk5
MDA2MDY2QjggLyogV29ya2Fyb3VuZHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gV29ya2Fyb3VuZHMuaDsgcGF0aCA9IHNyYy9saWJBTkdMRS9Xb3JrYXJvdW5kcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0NEODE4NjFEQkZFQTEwMDA2MDY2QjggLyogQml0
U2V0SXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQml0U2V0SXRl
cmF0b3IuaDsgcGF0aCA9IHNyYy9jb21tb24vQml0U2V0SXRlcmF0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNUNDRDgxODcxREJGRUExMDAwNjA2NkI4IC8qIENvbG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENvbG9yLmg7IHBhdGggPSBzcmMvY29tbW9u
L0NvbG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQ0Q4MTg4MURCRkVBMTAw
MDYwNjZCOCAvKiBDb2xvci5pbmwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gQ29sb3IuaW5sOyBw
YXRoID0gc3JjL2NvbW1vbi9Db2xvci5pbmw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDQ0Q4MTg5MURCRkVBMTAwMDYwNjZCOCAvKiBGbG9hdDE2VG9GbG9hdDMyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZsb2F0MTZUb0Zsb2F0MzIuY3BwOyBwYXRo
ID0gc3JjL2NvbW1vbi9GbG9hdDE2VG9GbG9hdDMyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUNDRDgxOEExREJGRUExMDAwNjA2NkI4IC8qIG1hdHJpeF91dGlscy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBtYXRyaXhfdXRpbHMuaDsgcGF0aCA9IHNyYy9j
b21tb24vbWF0cml4X3V0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQ0Q4
MThCMURCRkVBMTAwMDYwNjZCOCAvKiBzdHJpbmdfdXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gc3RyaW5nX3V0aWxzLmNwcDsgcGF0aCA9IHNyYy9jb21tb24v
c3RyaW5nX3V0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDRDgxOEMx
REJGRUExMDAwNjA2NkI4IC8qIHN0cmluZ191dGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBzdHJpbmdfdXRpbHMuaDsgcGF0aCA9IHNyYy9jb21tb24vc3RyaW5nX3V0aWxz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQ0Q4MTkzMURCRkVBNUMwMDYwNjZC
OCAvKiBBZGRBbmRUcnVlVG9Mb29wQ29uZGl0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEFkZEFuZFRydWVUb0xvb3BDb25kaXRpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1Q0NEODE5NDFEQkZFQTVDMDA2MDY2QjggLyogQWRkQW5kVHJ1
ZVRvTG9vcENvbmRpdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBZGRB
bmRUcnVlVG9Mb29wQ29uZGl0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVD
Q0Q4MTk1MURCRkVBNUMwMDYwNjZCOCAvKiBBZGREZWZhdWx0UmV0dXJuU3RhdGVtZW50cy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBZGREZWZhdWx0UmV0dXJuU3Rh
dGVtZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQ0Q4MTk2MURCRkVB
NUMwMDYwNjZCOCAvKiBBZGREZWZhdWx0UmV0dXJuU3RhdGVtZW50cy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBZGREZWZhdWx0UmV0dXJuU3RhdGVtZW50cy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1Q0NEODE5NzFEQkZFQTVDMDA2MDY2QjggLyogQnJlYWtW
YXJpYWJsZUFsaWFzaW5nSW5Jbm5lckxvb3BzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEJyZWFrVmFyaWFibGVBbGlhc2luZ0luSW5uZXJMb29wcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQ0Q4MTk4MURCRkVBNUMwMDYwNjZCOCAvKiBCcmVh
a1ZhcmlhYmxlQWxpYXNpbmdJbklubmVyTG9vcHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQnJlYWtWYXJpYWJsZUFsaWFzaW5nSW5Jbm5lckxvb3BzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTVDQ0Q4MTk5MURCRkVBNUMwMDYwNjZCOCAvKiBDb25zdGFudFVu
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnN0YW50VW5p
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0NEODE5QTFEQkZFQTVDMDA2
MDY2QjggLyogRXhwYW5kSW50ZWdlclBvd0V4cHJlc3Npb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4cGFuZEludGVnZXJQb3dFeHByZXNzaW9ucy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQ0Q4MTlCMURCRkVBNUMwMDYwNjZCOCAvKiBF
eHBhbmRJbnRlZ2VyUG93RXhwcmVzc2lvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRXhwYW5kSW50ZWdlclBvd0V4cHJlc3Npb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTVDQ0Q4MTlDMURCRkVBNUMwMDYwNjZCOCAvKiBJbnRlcm1Ob2RlUGF0dGVybk1h
dGNoZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50ZXJtTm9k
ZVBhdHRlcm5NYXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDRDgx
OUQxREJGRUE1QzAwNjA2NkI4IC8qIEludGVybU5vZGVQYXR0ZXJuTWF0Y2hlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDRDgxOUUxREJGRUE1QzAwNjA2NkI4IC8qIFF1
YWxpZmllclR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFF1
YWxpZmllclR5cGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDRDgxOUYx
REJGRUE1QzAwNjA2NkI4IC8qIFF1YWxpZmllclR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFF1YWxpZmllclR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTVDQ0Q4MUEwMURCRkVBNUMwMDYwNjZCOCAvKiBSZXdyaXRlVGV4ZWxGZXRjaE9mZnNldC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXdyaXRlVGV4ZWxGZXRj
aE9mZnNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQ0Q4MUExMURCRkVB
NUMwMDYwNjZCOCAvKiBSZXdyaXRlVGV4ZWxGZXRjaE9mZnNldC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZXdyaXRlVGV4ZWxGZXRjaE9mZnNldC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1Q0NEODFBMjFEQkZFQTVDMDA2MDY2QjggLyogUmV3cml0ZVVuYXJ5
TWludXNPcGVyYXRvckludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZXdyaXRlVW5hcnlNaW51c09wZXJhdG9ySW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUNDRDgxQTMxREJGRUE1QzAwNjA2NkI4IC8qIFJld3JpdGVVbmFyeU1pbnVzT3Bl
cmF0b3JJbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmV3cml0ZVVuYXJ5
TWludXNPcGVyYXRvckludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0NEODFB
NDFEQkZFQTVDMDA2MDY2QjggLyogU2ltcGxpZnlMb29wQ29uZGl0aW9ucy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaW1wbGlmeUxvb3BDb25kaXRpb25zLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDRDgxQTUxREJGRUE1QzAwNjA2NkI4IC8q
IFNpbXBsaWZ5TG9vcENvbmRpdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2ltcGxpZnlMb29wQ29uZGl0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1Q0NEODFBNjFEQkZFQTVDMDA2MDY2QjggLyogU3BsaXRTZXF1ZW5jZU9wZXJhdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwbGl0U2VxdWVuY2VPcGVyYXRv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQ0Q4MUE3MURCRkVBNUMwMDYw
NjZCOCAvKiBTcGxpdFNlcXVlbmNlT3BlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3BsaXRTZXF1ZW5jZU9wZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTVDQ0Q4MUE4MURCRkVBNUMwMDYwNjZCOCAvKiBVc2VJbnRlcmZhY2VCbG9ja0ZpZWxk
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VJbnRlcmZhY2VC
bG9ja0ZpZWxkcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQ0Q4MUE5MURC
RkVBNUMwMDYwNjZCOCAvKiBVc2VJbnRlcmZhY2VCbG9ja0ZpZWxkcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBVc2VJbnRlcmZhY2VCbG9ja0ZpZWxkcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1Q0NEODFDMTFEQkZFQUQ5MDA2MDY2QjggLyogRW11bGF0ZUdM
RnJhZ0NvbG9yQnJvYWRjYXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEVtdWxhdGVHTEZyYWdDb2xvckJyb2FkY2FzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTVDQ0Q4MUMyMURCRkVBRDkwMDYwNjZCOCAvKiBFbXVsYXRlR0xGcmFnQ29sb3JC
cm9hZGNhc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRW11bGF0ZUdMRnJh
Z0NvbG9yQnJvYWRjYXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEN0M1OUM1
MTIwOEM2OEIwMDFDODczRSAvKiBBTkdMRS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25m
aWc7IHBhdGggPSBBTkdMRS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUQ3QzU5QzYxMjA4QzY4QjAwMUM4NzNFIC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnhjY29uZmlnOyBwYXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUQ3QzU5QzcxMjA4QzY4QjAwMUM4NzNFIC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01ODQsNyArNjYxLDYgQEAKIAkJQTI2NEY4QTEx
Njk3NERFRDAwNkZBQTVBIC8qIE1hY3JvRXhwYW5kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWFjcm9FeHBhbmRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUEyNjRGOEEyMTY5NzRERUQwMDZGQUE1QSAvKiBNYWNyb0V4cGFuZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvRXhwYW5kZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTI2NEY4QTMxNjk3NERFRDAwNkZBQTVBIC8qIG51bWVyaWNf
bGV4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG51bWVyaWNfbGV4Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUEyNjRGOEE0MTY5NzRERUQwMDZGQUE1QSAvKiBw
cF91dGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBwcF91dGlscy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMjY0RjhBNTE2OTc0REVEMDA2RkFBNUEgLyog
UHJlcHJvY2Vzc29yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBy
ZXByb2Nlc3Nvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEyNjRGOEE2MTY5
NzRERUQwMDZGQUE1QSAvKiBQcmVwcm9jZXNzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUHJlcHJvY2Vzc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEy
NjRGOEE3MTY5NzRERUQwMDZGQUE1QSAvKiBTb3VyY2VMb2NhdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VMb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNjEwLDYgKzY4NiwzMSBAQAogCQkzMTAxMkQ5RjE4Qjk3QjlCMDAzOTA2MkYg
LyogdHJhbnNsYXRvciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJNUNDRDgxQzExREJGRUFEOTAwNjA2NkI4IC8qIEVtdWxhdGVHTEZyYWdDb2xvckJyb2Fk
Y2FzdC5jcHAgKi8sCisJCQkJNUNDRDgxQzIxREJGRUFEOTAwNjA2NkI4IC8qIEVtdWxhdGVHTEZy
YWdDb2xvckJyb2FkY2FzdC5oICovLAorCQkJCTVDQ0Q4MTkzMURCRkVBNUMwMDYwNjZCOCAvKiBB
ZGRBbmRUcnVlVG9Mb29wQ29uZGl0aW9uLmNwcCAqLywKKwkJCQk1Q0NEODE5NDFEQkZFQTVDMDA2
MDY2QjggLyogQWRkQW5kVHJ1ZVRvTG9vcENvbmRpdGlvbi5oICovLAorCQkJCTVDQ0Q4MTk1MURC
RkVBNUMwMDYwNjZCOCAvKiBBZGREZWZhdWx0UmV0dXJuU3RhdGVtZW50cy5jcHAgKi8sCisJCQkJ
NUNDRDgxOTYxREJGRUE1QzAwNjA2NkI4IC8qIEFkZERlZmF1bHRSZXR1cm5TdGF0ZW1lbnRzLmgg
Ki8sCisJCQkJNUNDRDgxOTcxREJGRUE1QzAwNjA2NkI4IC8qIEJyZWFrVmFyaWFibGVBbGlhc2lu
Z0luSW5uZXJMb29wcy5jcHAgKi8sCisJCQkJNUNDRDgxOTgxREJGRUE1QzAwNjA2NkI4IC8qIEJy
ZWFrVmFyaWFibGVBbGlhc2luZ0luSW5uZXJMb29wcy5oICovLAorCQkJCTVDQ0Q4MTk5MURCRkVB
NUMwMDYwNjZCOCAvKiBDb25zdGFudFVuaW9uLmNwcCAqLywKKwkJCQk1Q0NEODE5QTFEQkZFQTVD
MDA2MDY2QjggLyogRXhwYW5kSW50ZWdlclBvd0V4cHJlc3Npb25zLmNwcCAqLywKKwkJCQk1Q0NE
ODE5QjFEQkZFQTVDMDA2MDY2QjggLyogRXhwYW5kSW50ZWdlclBvd0V4cHJlc3Npb25zLmggKi8s
CisJCQkJNUNDRDgxOUMxREJGRUE1QzAwNjA2NkI4IC8qIEludGVybU5vZGVQYXR0ZXJuTWF0Y2hl
ci5jcHAgKi8sCisJCQkJNUNDRDgxOUQxREJGRUE1QzAwNjA2NkI4IC8qIEludGVybU5vZGVQYXR0
ZXJuTWF0Y2hlci5oICovLAorCQkJCTVDQ0Q4MTlFMURCRkVBNUMwMDYwNjZCOCAvKiBRdWFsaWZp
ZXJUeXBlcy5jcHAgKi8sCisJCQkJNUNDRDgxOUYxREJGRUE1QzAwNjA2NkI4IC8qIFF1YWxpZmll
clR5cGVzLmggKi8sCisJCQkJNUNDRDgxQTAxREJGRUE1QzAwNjA2NkI4IC8qIFJld3JpdGVUZXhl
bEZldGNoT2Zmc2V0LmNwcCAqLywKKwkJCQk1Q0NEODFBMTFEQkZFQTVDMDA2MDY2QjggLyogUmV3
cml0ZVRleGVsRmV0Y2hPZmZzZXQuaCAqLywKKwkJCQk1Q0NEODFBMjFEQkZFQTVDMDA2MDY2Qjgg
LyogUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckludC5jcHAgKi8sCisJCQkJNUNDRDgxQTMxREJG
RUE1QzAwNjA2NkI4IC8qIFJld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JJbnQuaCAqLywKKwkJCQk1
Q0NEODFBNDFEQkZFQTVDMDA2MDY2QjggLyogU2ltcGxpZnlMb29wQ29uZGl0aW9ucy5jcHAgKi8s
CisJCQkJNUNDRDgxQTUxREJGRUE1QzAwNjA2NkI4IC8qIFNpbXBsaWZ5TG9vcENvbmRpdGlvbnMu
aCAqLywKKwkJCQk1Q0NEODFBNjFEQkZFQTVDMDA2MDY2QjggLyogU3BsaXRTZXF1ZW5jZU9wZXJh
dG9yLmNwcCAqLywKKwkJCQk1Q0NEODFBNzFEQkZFQTVDMDA2MDY2QjggLyogU3BsaXRTZXF1ZW5j
ZU9wZXJhdG9yLmggKi8sCisJCQkJNUNDRDgxQTgxREJGRUE1QzAwNjA2NkI4IC8qIFVzZUludGVy
ZmFjZUJsb2NrRmllbGRzLmNwcCAqLywKKwkJCQk1Q0NEODFBOTFEQkZFQTVDMDA2MDY2QjggLyog
VXNlSW50ZXJmYWNlQmxvY2tGaWVsZHMuaCAqLywKIAkJCQk1QzMxNUNFODFDQzVCNkRBMDA3NzY2
OTcgLyogQ2FjaGUuY3BwICovLAogCQkJCTVDMzE1Q0U5MUNDNUI2REEwMDc3NjY5NyAvKiBDYWNo
ZS5oICovLAogCQkJCTVDMzE1Q0VBMUNDNUI2REEwMDc3NjY5NyAvKiBEZWZlckdsb2JhbEluaXRp
YWxpemVycy5jcHAgKi8sCkBAIC02NzUsOCArNzc2LDYgQEAKIAkJCQk1Q0M3RDQ0QzE5MTAyNEU0
MDAwQjhDMUYgLyogTG9vcEluZm8uaCAqLywKIAkJCQk1Q0M3RDQ1MDE5MTAyNEU0MDAwQjhDMUYg
LyogVmFsaWRhdGVPdXRwdXRzLmNwcCAqLywKIAkJCQk1Q0M3RDQ1MTE5MTAyNEU0MDAwQjhDMUYg
LyogVmFsaWRhdGVPdXRwdXRzLmggKi8sCi0JCQkJMzEwMTJEQTkxOEI5N0I5QjAwMzkwNjJGIC8q
IGRlcGdyYXBoICovLAotCQkJCTMxMDEyREY2MThCOTdCOUIwMDM5MDYyRiAvKiB0aW1pbmcgKi8s
CiAJCQkJMzEwMTJEQTAxOEI5N0I5QjAwMzkwNjJGIC8qIEJhc2VUeXBlcy5oICovLAogCQkJCTMx
MDEyREExMThCOTdCOUIwMDM5MDYyRiAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAgKi8s
CiAJCQkJMzEwMTJEQTIxOEI5N0I5QjAwMzkwNjJGIC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9y
LmggKi8sCkBAIC03MjUsOCArODI0LDYgQEAKIAkJCQkzMTAxMkRFNjE4Qjk3QjlCMDAzOTA2MkYg
LyogUG9vbEFsbG9jLmNwcCAqLywKIAkJCQkzMTAxMkRFNzE4Qjk3QjlCMDAzOTA2MkYgLyogUG9v
bEFsbG9jLmggKi8sCiAJCQkJMzEwMTJERTgxOEI5N0I5QjAwMzkwNjJGIC8qIFByYWdtYS5oICov
LAotCQkJCTMxMDEyREVBMThCOTdCOUIwMDM5MDYyRiAvKiBRdWFsaWZpZXJBbGl2ZS5oICovLAot
CQkJCTMxMDEyREVEMThCOTdCOUIwMDM5MDYyRiAvKiBSZW5hbWVGdW5jdGlvbi5oICovLAogCQkJ
CTMxMDEyREVFMThCOTdCOUIwMDM5MDYyRiAvKiBSZXdyaXRlRWxzZUJsb2Nrcy5jcHAgKi8sCiAJ
CQkJMzEwMTJERUYxOEI5N0I5QjAwMzkwNjJGIC8qIFJld3JpdGVFbHNlQmxvY2tzLmggKi8sCiAJ
CQkJMzEwMTJERjAxOEI5N0I5QjAwMzkwNjJGIC8qIFNlYXJjaFN5bWJvbC5jcHAgKi8sCkBAIC03
NTcsMzEgKzg1NCw2IEBACiAJCQlwYXRoID0gdHJhbnNsYXRvcjsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CiAJCX07Ci0JCTMxMDEyREE5MThCOTdCOUIwMDM5MDYyRiAvKiBkZXBncmFwaCAq
LyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJMzEwMTJEQUEx
OEI5N0I5QjAwMzkwNjJGIC8qIERlcGVuZGVuY3lHcmFwaC5jcHAgKi8sCi0JCQkJMzEwMTJEQUIx
OEI5N0I5QjAwMzkwNjJGIC8qIERlcGVuZGVuY3lHcmFwaC5oICovLAotCQkJCTMxMDEyREFDMThC
OTdCOUIwMDM5MDYyRiAvKiBEZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcCAqLywKLQkJCQkzMTAx
MkRBRDE4Qjk3QjlCMDAzOTA2MkYgLyogRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5oICovLAotCQkJ
CTMxMDEyREFFMThCOTdCOUIwMDM5MDYyRiAvKiBEZXBlbmRlbmN5R3JhcGhPdXRwdXQuY3BwICov
LAotCQkJCTMxMDEyREFGMThCOTdCOUIwMDM5MDYyRiAvKiBEZXBlbmRlbmN5R3JhcGhPdXRwdXQu
aCAqLywKLQkJCQkzMTAxMkRCMDE4Qjk3QjlCMDAzOTA2MkYgLyogRGVwZW5kZW5jeUdyYXBoVHJh
dmVyc2UuY3BwICovLAotCQkJKTsKLQkJCXBhdGggPSBkZXBncmFwaDsKLQkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7Ci0JCX07Ci0JCTMxMDEyREY2MThCOTdCOUIwMDM5MDYyRiAvKiB0aW1pbmcg
Ki8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTMxMDEyREY3
MThCOTdCOUIwMDM5MDYyRiAvKiBSZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nLmNwcCAqLywK
LQkJCQkzMTAxMkRGODE4Qjk3QjlCMDAzOTA2MkYgLyogUmVzdHJpY3RGcmFnbWVudFNoYWRlclRp
bWluZy5oICovLAotCQkJCTMxMDEyREY5MThCOTdCOUIwMDM5MDYyRiAvKiBSZXN0cmljdFZlcnRl
eFNoYWRlclRpbWluZy5jcHAgKi8sCi0JCQkJMzEwMTJERkExOEI5N0I5QjAwMzkwNjJGIC8qIFJl
c3RyaWN0VmVydGV4U2hhZGVyVGltaW5nLmggKi8sCi0JCQkpOwotCQkJcGF0aCA9IHRpbWluZzsK
LQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTMxMkJEQjA3MTVGRUM4RTYwMDk3
RUJDNyAvKiBtaXNjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
QEAgLTc5NCw2ICs4NjYsMzEgQEAKIAkJNUMxREJDNDcxQjA0MzhCNzAwMjM1NTUyIC8qIGxpYkFO
R0xFICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1Q0NE
ODE1NzFEQkZFOTk5MDA2MDY2QjggLyogYW5nbGV0eXBlcy5pbmwgKi8sCisJCQkJNUNDRDgxNTgx
REJGRTk5OTAwNjA2NkI4IC8qIENvbnRleHRTdGF0ZS5jcHAgKi8sCisJCQkJNUNDRDgxNTkxREJG
RTk5OTAwNjA2NkI4IC8qIENvbnRleHRTdGF0ZS5oICovLAorCQkJCTVDQ0Q4MTVBMURCRkU5OTkw
MDYwNjZCOCAvKiBEZWJ1Zy5jcHAgKi8sCisJCQkJNUNDRDgxNUIxREJGRTk5OTAwNjA2NkI4IC8q
IERlYnVnLmggKi8sCisJCQkJNUNDRDgxNUMxREJGRTk5OTAwNjA2NkI4IC8qIEhhbmRsZVJhbmdl
QWxsb2NhdG9yLmNwcCAqLywKKwkJCQk1Q0NEODE1RDFEQkZFOTk5MDA2MDY2QjggLyogSGFuZGxl
UmFuZ2VBbGxvY2F0b3IuaCAqLywKKwkJCQk1Q0NEODE1RTFEQkZFOTk5MDA2MDY2QjggLyogSW1h
Z2UuY3BwICovLAorCQkJCTVDQ0Q4MTVGMURCRkU5OTkwMDYwNjZCOCAvKiBJbWFnZS5oICovLAor
CQkJCTVDQ0Q4MTYwMURCRkU5OTkwMDYwNjZCOCAvKiBJbmRleFJhbmdlQ2FjaGUuY3BwICovLAor
CQkJCTVDQ0Q4MTYxMURCRkU5OTkwMDYwNjZCOCAvKiBJbmRleFJhbmdlQ2FjaGUuaCAqLywKKwkJ
CQk1Q0NEODE2MjFEQkZFOTk5MDA2MDY2QjggLyogUGF0aC5jcHAgKi8sCisJCQkJNUNDRDgxNjMx
REJGRTk5OTAwNjA2NkI4IC8qIFBhdGguaCAqLywKKwkJCQk1Q0NEODE2NDFEQkZFOTk5MDA2MDY2
QjggLyogcXVlcnl1dGlscy5jcHAgKi8sCisJCQkJNUNDRDgxNjUxREJGRTk5OTAwNjA2NkI4IC8q
IHF1ZXJ5dXRpbHMuaCAqLywKKwkJCQk1Q0NEODE2NjFEQkZFOTk5MDA2MDY2QjggLyogc2lnbmFs
X3V0aWxzLmNwcCAqLywKKwkJCQk1Q0NEODE2NzFEQkZFOTk5MDA2MDY2QjggLyogc2lnbmFsX3V0
aWxzLmggKi8sCisJCQkJNUNDRDgxNjgxREJGRTk5OTAwNjA2NkI4IC8qIFN0cmVhbS5jcHAgKi8s
CisJCQkJNUNDRDgxNjkxREJGRTk5OTAwNjA2NkI4IC8qIFN0cmVhbS5oICovLAorCQkJCTVDQ0Q4
MTZBMURCRkU5OTkwMDYwNjZCOCAvKiB2YWxpZGF0aW9uRVMzMS5jcHAgKi8sCisJCQkJNUNDRDgx
NkIxREJGRTk5OTAwNjA2NkI4IC8qIHZhbGlkYXRpb25FUzMxLmggKi8sCisJCQkJNUNDRDgxNkMx
REJGRTk5OTAwNjA2NkI4IC8qIFZlcnNpb24uaCAqLywKKwkJCQk1Q0NEODE2RDFEQkZFOTk5MDA2
MDY2QjggLyogVmVyc2lvbi5pbmwgKi8sCisJCQkJNUNDRDgxNkUxREJGRTk5OTAwNjA2NkI4IC8q
IFZlcnRleEF0dHJpYnV0ZS5pbmwgKi8sCisJCQkJNUNDRDgxNkYxREJGRTk5OTAwNjA2NkI4IC8q
IFdvcmthcm91bmRzLmggKi8sCiAJCQkJNUMxREJDNDgxQjA0MzhEMjAwMjM1NTUyIC8qIGFuZ2xl
dHlwZXMuY3BwICovLAogCQkJCTVDMURCQzQ5MUIwNDM4RDIwMDIzNTU1MiAvKiBhbmdsZXR5cGVz
LmggKi8sCiAJCQkJNUMxREJDNEExQjA0MzhEMjAwMjM1NTUyIC8qIEF0dHJpYnV0ZU1hcC5jcHAg
Ki8sCkBAIC04MTAsOCArOTA3LDYgQEAKIAkJCQk1QzFEQkM1NjFCMDQzOEQyMDAyMzU1NTIgLyog
Q29uc3RhbnRzLmggKi8sCiAJCQkJNUMxREJDNTcxQjA0MzhEMjAwMjM1NTUyIC8qIENvbnRleHQu
Y3BwICovLAogCQkJCTVDMURCQzU4MUIwNDM4RDIwMDIzNTU1MiAvKiBDb250ZXh0LmggKi8sCi0J
CQkJNUMxREJDNTkxQjA0MzhEMjAwMjM1NTUyIC8qIERhdGEuY3BwICovLAotCQkJCTVDMURCQzVB
MUIwNDM4RDIwMDIzNTU1MiAvKiBEYXRhLmggKi8sCiAJCQkJNUMxREJDNUIxQjA0MzhEMjAwMjM1
NTUyIC8qIERldmljZS5jcHAgKi8sCiAJCQkJNUMxREJDNUMxQjA0MzhEMjAwMjM1NTUyIC8qIERl
dmljZS5oICovLAogCQkJCTVDMURCQzVEMUIwNDM4RDIwMDIzNTU1MiAvKiBEaXNwbGF5LmNwcCAq
LywKQEAgLTgyMiw3ICs5MTcsNiBAQAogCQkJCTVDMURCQzYyMUIwNDM4RDIwMDIzNTU1MiAvKiBm
ZWF0dXJlcy5oICovLAogCQkJCTVDMURCQzY0MUIwNDM4RDIwMDIzNTU1MiAvKiBGZW5jZS5jcHAg
Ki8sCiAJCQkJNUMxREJDNjUxQjA0MzhEMjAwMjM1NTUyIC8qIEZlbmNlLmggKi8sCi0JCQkJNUMx
REJDNjYxQjA0MzhEMjAwMjM1NTUyIC8qIEZsb2F0MTZUb0Zsb2F0MzIuY3BwICovLAogCQkJCTVD
MURCQzY4MUIwNDM4RDIwMDIzNTU1MiAvKiBmb3JtYXR1dGlscy5jcHAgKi8sCiAJCQkJNUMxREJD
NjkxQjA0MzhEMjAwMjM1NTUyIC8qIGZvcm1hdHV0aWxzLmggKi8sCiAJCQkJNUMxREJDNkExQjA0
MzhEMjAwMjM1NTUyIC8qIEZyYW1lYnVmZmVyLmNwcCAqLywKQEAgLTg3OSw2ICs5NzMsMTMgQEAK
IAkJNUNDN0Q0NTkxOTEwMjYwODAwMEI4QzFGIC8qIGNvbW1vbiAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNUNDRDgxODYxREJGRUExMDAwNjA2NkI4IC8q
IEJpdFNldEl0ZXJhdG9yLmggKi8sCisJCQkJNUNDRDgxODcxREJGRUExMDAwNjA2NkI4IC8qIENv
bG9yLmggKi8sCisJCQkJNUNDRDgxODgxREJGRUExMDAwNjA2NkI4IC8qIENvbG9yLmlubCAqLywK
KwkJCQk1Q0NEODE4OTFEQkZFQTEwMDA2MDY2QjggLyogRmxvYXQxNlRvRmxvYXQzMi5jcHAgKi8s
CisJCQkJNUNDRDgxOEExREJGRUExMDAwNjA2NkI4IC8qIG1hdHJpeF91dGlscy5oICovLAorCQkJ
CTVDQ0Q4MThCMURCRkVBMTAwMDYwNjZCOCAvKiBzdHJpbmdfdXRpbHMuY3BwICovLAorCQkJCTVD
Q0Q4MThDMURCRkVBMTAwMDYwNjZCOCAvKiBzdHJpbmdfdXRpbHMuaCAqLywKIAkJCQk1QzFEQkJF
NzFCMDQzNkVDMDAyMzU1NTIgLyogYW5nbGV1dGlscy5jcHAgKi8sCiAJCQkJNUMxREJCRTgxQjA0
MzZFQzAwMjM1NTUyIC8qIE1lbW9yeUJ1ZmZlci5jcHAgKi8sCiAJCQkJNUMxREJCRTkxQjA0MzZF
QzAwMjM1NTUyIC8qIE1lbW9yeUJ1ZmZlci5oICovLApAQCAtMTAwNSw3ICsxMTA2LDYgQEAKIAkJ
CQlBMjY0RjhBMTE2OTc0REVEMDA2RkFBNUEgLyogTWFjcm9FeHBhbmRlci5jcHAgKi8sCiAJCQkJ
QTI2NEY4QTIxNjk3NERFRDAwNkZBQTVBIC8qIE1hY3JvRXhwYW5kZXIuaCAqLywKIAkJCQlBMjY0
RjhBMzE2OTc0REVEMDA2RkFBNUEgLyogbnVtZXJpY19sZXguaCAqLywKLQkJCQlBMjY0RjhBNDE2
OTc0REVEMDA2RkFBNUEgLyogcHBfdXRpbHMuaCAqLywKIAkJCQlBMjY0RjhBNTE2OTc0REVEMDA2
RkFBNUEgLyogUHJlcHJvY2Vzc29yLmNwcCAqLywKIAkJCQlBMjY0RjhBNjE2OTc0REVEMDA2RkFB
NUEgLyogUHJlcHJvY2Vzc29yLmggKi8sCiAJCQkJQTI2NEY4QTcxNjk3NERFRDAwNkZBQTVBIC8q
IFNvdXJjZUxvY2F0aW9uLmggKi8sCkBAIC0xMDM4LDEwICsxMTM4LDEyIEBACiAJCQkJNUMzMTVE
MDcxQ0M1QjZEQTAwNzc2Njk3IC8qIFJlbW92ZUR5bmFtaWNJbmRleGluZy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzEwMTJFM0MxOEI5N0I5QjAwMzkwNjJGIC8qIEluaXRpYWxpemVQYXJzZUNvbnRl
eHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUEwOEMzQ0REMTZENkNCNjEwMDNGMEI4MyAvKiBBcnJh
eUJvdW5kc0NsYW1wZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTVDQ0Q4MTczMURCRkU5OTkwMDYw
NjZCOCAvKiBEZWJ1Zy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNDN0Q0NkYxOTEwMjYyMTAwMEI4
QzFGIC8qIGRlYnVnLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkRERDFCMDQzOEQzMDAyMzU1
NTIgLyogQ29tcGlsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMDEyRTNFMThCOTdCOUIwMDM5
MDYyRiAvKiBJbml0aWFsaXplVmFyaWFibGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkYy
QTFCMDQzOEQzMDAyMzU1NTIgLyogU2hhZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1Q0NEODE3
QjFEQkZFOTk5MDA2MDY2QjggLyogUGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEwMTJFMTQx
OEI5N0I5QjAwMzkwNjJGIC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQkzMTAxMkU1NTE4Qjk3QjlCMDAzOTA2MkYgLyogUGFyc2VDb250ZXh0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1QzFEQkRFRjFCMDQzOEQzMDAyMzU1NTIgLyogRmVuY2UuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTA1NCwxNiArMTE1NiwxOSBAQAogCQkJCTMxMDEyRTZCMThCOTdCOUIwMDM5
MDYyRiAvKiBUcmFuc2xhdG9yRVNTTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJFMDAxQjA0
MzhEMzAwMjM1NTUyIC8qIFByb2dyYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCQzJCMUIw
NDM3NUYwMDIzNTU1MiAvKiBDYWxsREFHLmggaW4gSGVhZGVycyAqLywKKwkJCQk1Q0NEODE4NTFE
QkZFOTk5MDA2MDY2QjggLyogV29ya2Fyb3VuZHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMDEy
RTE2MThCOTdCOUIwMDM5MDYyRiAvKiBDb21tb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTMxMDEy
RTIwMThCOTdCOUIwMDM5MDYyRiAvKiBEZXBlbmRlbmN5R3JhcGhPdXRwdXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTMxMDEyRTdDMThCOTdCOUIwMDM5MDYyRiAvKiBWYXJpYWJsZUluZm8uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVDMURCRERCMUIwNDM4RDMwMDIzNTU1MiAvKiBDYXBzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1QzMxNUQwOTFDQzVCNkRBMDA3NzY2OTcgLyogUmVtb3ZlUG93LmggaW4g
SGVhZGVycyAqLywKIAkJCQk1QzFEQkUwMjFCMDQzOEQzMDAyMzU1NTIgLyogUXVlcnkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTMxMDEyRTYxMThCOTdCOUIwMDM5MDYyRiAvKiBTZWFyY2hTeW1ib2wu
aCBpbiBIZWFkZXJzICovLAorCQkJCTVDQ0Q4MUI2MURCRkVBNUMwMDYwNjZCOCAvKiBRdWFsaWZp
ZXJUeXBlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUNDRDgxQjQxREJGRUE1QzAwNjA2NkI4IC8q
IEludGVybU5vZGVQYXR0ZXJuTWF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJGMzEx
QjA0MzhEMzAwMjM1NTUyIC8qIFRleHR1cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMDEyRTQ3
MThCOTdCOUIwMDM5MDYyRiAvKiBOb2RlU2VhcmNoLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY0
RjhBRDE2OTc0REVEMDA2RkFBNUEgLyogRGlhZ25vc3RpY3NCYXNlLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1Q0NEODFBRDFEQkZFQTVDMDA2MDY2QjggLyogQWRkRGVmYXVsdFJldHVyblN0YXRlbWVu
dHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCRTA0MUIwNDM4RDMwMDIzNTU1MiAvKiBxdWVy
eWNvbnZlcnNpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTAxMkU0QzE4Qjk3QjlCMDAzOTA2
MkYgLyogT3V0cHV0RVNTTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJGMjYxQjA0MzhEMzAw
MjM1NTUyIC8qIFJlc291cmNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDc2LDE0ICsx
MTgxLDE2IEBACiAJCQkJMzEwMTJFNTAxOEI5N0I5QjAwMzkwNjJGIC8qIE91dHB1dEdMU0xCYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0M3RDQ3MTE5MTAyNjIxMDAwQjhDMUYgLyogZXZlbnRf
dHJhY2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkRFNzFCMDQzOEQzMDAyMzU1NTIgLyog
RGV2aWNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1Q0NEODFCODFEQkZFQTVDMDA2MDY2QjggLyog
UmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCRTA2MUIw
NDM4RDMwMDIzNTU1MiAvKiBSZWZDb3VudE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMz
MTVEMDUxQ0M1QjZEQTAwNzc2Njk3IC8qIFJlY29yZENvbnN0YW50UHJlY2lzaW9uLmggaW4gSGVh
ZGVycyAqLywKLQkJCQkzMTAxMkU1RDE4Qjk3QjlCMDAzOTA2MkYgLyogUmVuYW1lRnVuY3Rpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCREZBMUIwNDM4RDMwMDIzNTU1MiAvKiBoaXN0b2dy
YW1fbWFjcm9zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkRENzFCMDQzOEQzMDAyMzU1NTIg
LyogQmluYXJ5U3RyZWFtLmggaW4gSGVhZGVycyAqLywKKwkJCQk1Q0NEODFBQjFEQkZFQTVDMDA2
MDY2QjggLyogQWRkQW5kVHJ1ZVRvTG9vcENvbmRpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MzEwMTJFM0ExOEI5N0I5QjAwMzkwNjJGIC8qIEluaXRpYWxpemVHbG9iYWxzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1QzFEQkMyOTFCMDQzNzVGMDAyMzU1NTIgLyogQnVpbHRJbkZ1bmN0aW9uRW11
bGF0b3JHTFNMLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkJFNjFCMDQwNzVCMDAyMzU1NTIg
LyogU2hhZGVyVmFycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUNDRDgxQzAxREJGRUE1QzAwNjA2
NkI4IC8qIFVzZUludGVyZmFjZUJsb2NrRmllbGRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzMx
NUQwQjFDQzVCNkRBMDA3NzY2OTcgLyogUmV3cml0ZURvV2hpbGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTVDMURCQzI1MUIwNDM3NUYwMDIzNTU1MiAvKiBibG9ja2xheW91dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNUMxREJDMjcxQjA0Mzc1RjAwMjM1NTUyIC8qIGJsb2NrbGF5b3V0SExTTC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xMDkxLDE0ICsxMTk4LDE5IEBACiAJCQkJNUM5RkZGNEYxOTEwMkEw
MDAwMjVCOEZBIC8qIEZsYWdTdGQxNDBTdHJ1Y3RzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFE
QkRGOTFCMDQzOEQzMDAyMzU1NTIgLyogSGFuZGxlQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1QzFEQkREOTFCMDQzOEQzMDAyMzU1NTIgLyogQnVmZmVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1Q0NEODFCQzFEQkZFQTVDMDA2MDY2QjggLyogU2ltcGxpZnlMb29wQ29uZGl0aW9ucy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMzEwMTJFMjcxOEI5N0I5QjAwMzkwNjJGIC8qIERpYWdub3N0
aWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkMzNjFCMDQzNzVGMDAyMzU1NTIgLyogUHJ1
bmVFbXB0eURlY2xhcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUNDRDgxOEUxREJGRUEx
MDAwNjA2NkI4IC8qIENvbG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzMxNUQwMTFDQzVCNkRB
MDA3NzY2OTcgLyogRGVmZXJHbG9iYWxJbml0aWFsaXplcnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDMURCREY2MUIwNDM4RDMwMDIzNTU1MiAvKiBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTVDQ0Q4MTkyMURCRkVBMTAwMDYwNjZCOCAvKiBzdHJpbmdfdXRpbHMu
aCBpbiBIZWFkZXJzICovLAorCQkJCTVDQ0Q4MUM0MURCRkVBRDkwMDYwNjZCOCAvKiBFbXVsYXRl
R0xGcmFnQ29sb3JCcm9hZGNhc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQzdENDZCMTkxMDI2
MjAwMDBCOEMxRiAvKiBhbmdsZXV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTAxMkUzMjE4
Qjk3QjlCMDAzOTA2MkYgLyogZ2xzbGFuZ190YWIuaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRG
OEIxMTY5NzRERUQwMDZGQUE1QSAvKiBEaXJlY3RpdmVQYXJzZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTVDMURCRjM0MUIwNDM4RDMwMDIzNTU1MiAvKiBUcmFuc2Zvcm1GZWVkYmFjay5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNUNDRDgxNzUxREJGRTk5OTAwNjA2NkI4IC8qIEhhbmRsZVJhbmdlQWxs
b2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTAxMkU1ODE4Qjk3QjlCMDAzOTA2MkYgLyog
UHJhZ21hLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkRFMDFCMDQzOEQzMDAyMzU1NTIgLyog
Q29uZmlnLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTAxMkU2NTE4Qjk3QjlCMDAzOTA2MkYgLyog
U3ltYm9sVGFibGUuaCBpbiBIZWFkZXJzICovLApAQCAtMTExMCwxOCArMTIyMiwxOSBAQAogCQkJ
CTMxMDEyRTM1MThCOTdCOUIwMDM5MDYyRiAvKiBJbmZvU2luay5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUMxREJGM0ExQjA0MzhEMzAwMjM1NTUyIC8qIHZhbGlkYXRpb25FUy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNUMxREJGNDAxQjA0MzhEMzAwMjM1NTUyIC8qIFZlcnRleEFycmF5LmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1Q0NEODE4MzFEQkZFOTk5MDA2MDY2QjggLyogdmFsaWRhdGlvbkVTMzEu
aCBpbiBIZWFkZXJzICovLAorCQkJCTVDQ0Q4MTc3MURCRkU5OTkwMDYwNjZCOCAvKiBJbWFnZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJERUIxQjA0MzhEMzAwMjM1NTUyIC8qIEVycm9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkMyQzFCMDQzNzVGMDAyMzU1NTIgLyogQ29tcGlsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCREQ0MUIwNDM4RDMwMDIzNTU1MiAvKiBhbmdsZXR5
cGVzLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTAxMkUxQzE4Qjk3QjlCMDAzOTA2MkYgLyogRGVw
ZW5kZW5jeUdyYXBoLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTAxMkU3MDE4Qjk3QjlCMDAzOTA2
MkYgLyogVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCQzNBMUIwNDM3NUYwMDIzNTU1
MiAvKiBSZW1vdmVTd2l0Y2hGYWxsVGhyb3VnaC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzEwMTJF
NjcxOEI5N0I5QjAwMzkwNjJGIC8qIFJlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmcuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVDQzdENDdCMTkxMDI2MjEwMDBCOEMxRiAvKiB2ZXJzaW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1QzFEQkYyODFCMDQzOEQzMDAyMzU1NTIgLyogU2FtcGxlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNUMzMTVEMTExQ0M1QjZEQTAwNzc2Njk3IC8qIFZhbGlkYXRlR2xv
YmFsSW5pdGlhbGl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCRjM4MUIwNDM4RDMwMDIz
NTU1MiAvKiB2YWxpZGF0aW9uRUdMLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkYzQzFCMDQz
OEQzMDAyMzU1NTIgLyogdmFsaWRhdGlvbkVTMi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUNDRDgx
OTAxREJGRUExMDAwNjA2NkI4IC8qIG1hdHJpeF91dGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MzEwMTJFNzgxOEI5N0I5QjAwMzkwNjJGIC8qIHV0aWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
MURCREVDMUIwNDM4RDMwMDIzNTU1MiAvKiBmZWF0dXJlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTI2NEY4QjUxNjk3NERFRDAwNkZBQTVBIC8qIElucHV0LmggaW4gSGVhZGVycyAqLywKQEAgLTEx
MzUsOSArMTI0OCwxMCBAQAogCQkJCTMxMDEyRTM5MThCOTdCOUIwMDM5MDYyRiAvKiBJbml0aWFs
aXplRGxsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkJGMjFCMDQzNkVDMDAyMzU1NTIgLyog
TWVtb3J5QnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY0RjhCNzE2OTc0REVEMDA2RkFB
NUEgLyogTGV4ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTVDQ0Q4MTcxMURCRkU5OTkwMDYwNjZC
OCAvKiBDb250ZXh0U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMzE1RDBEMUNDNUI2REEw
MDc3NjY5NyAvKiBTZXBhcmF0ZUV4cHJlc3Npb25zUmV0dXJuaW5nQXJyYXlzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1Q0NEODFBRjFEQkZFQTVDMDA2MDY2QjggLyogQnJlYWtWYXJpYWJsZUFsaWFz
aW5nSW5Jbm5lckxvb3BzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY0RjhCOTE2OTc0REVEMDA2
RkFBNUEgLyogTWFjcm8uaCBpbiBIZWFkZXJzICovLAotCQkJCTMxMDEyRTVBMThCOTdCOUIwMDM5
MDYyRiAvKiBRdWFsaWZpZXJBbGl2ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEwMTJFNTcxOEI5
N0I5QjAwMzkwNjJGIC8qIFBvb2xBbGxvYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJDMzEx
QjA0Mzc1RjAwMjM1NTUyIC8qIEludGVybU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMDEy
RTM3MThCOTdCOUIwMDM5MDYyRiAvKiBJbml0aWFsaXplLmggaW4gSGVhZGVycyAqLywKQEAgLTEx
NDYsMTcgKzEyNjAsMTkgQEAKIAkJCQkzMTAxMkUxQTE4Qjk3QjlCMDAzOTA2MkYgLyogQ29uc3Rh
bnRVbmlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJERTMxQjA0MzhEMzAwMjM1NTUyIC8q
IENvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCRjM2MUIwNDM4RDMwMDIzNTU1MiAv
KiBVbmlmb3JtLmggaW4gSGVhZGVycyAqLywKKwkJCQk1Q0NEODE3RDFEQkZFOTk5MDA2MDY2Qjgg
LyogcXVlcnl1dGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJERkMxQjA0MzhEMzAwMjM1
NTUyIC8qIEltYWdlSW5kZXguaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRGOEJCMTY5NzRERUQw
MDZGQUE1QSAvKiBNYWNyb0V4cGFuZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1Q0NEODE4MTFE
QkZFOTk5MDA2MDY2QjggLyogU3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkRFMTFC
MDQzOEQzMDAyMzU1NTIgLyogQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTAxMkUy
RDE4Qjk3QjlCMDAzOTA2MkYgLyogZ2xzbGFuZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJG
MkYxQjA0MzhEMzAwMjM1NTUyIC8qIFN1cmZhY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTVDQ0Q4
MTdGMURCRkU5OTkwMDYwNjZCOCAvKiBzaWduYWxfdXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDMURCRjJDMUIwNDM4RDMwMDIzNTU1MiAvKiBTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NUNDRDgxQkExREJGRUE1QzAwNjA2NkI4IC8qIFJld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JJbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCQzM4MUIwNDM3NUYwMDIzNTU1MiAvKiBSZWdlbmVy
YXRlU3RydWN0TmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRGOEJDMTY5NzRERUQwMDZG
QUE1QSAvKiBudW1lcmljX2xleC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJDM0MxQjA0Mzc1
RjAwMjM1NTUyIC8qIFNjYWxhcml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJncy5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMzEwMTJFNjkxOEI5N0I5QjAwMzkwNjJGIC8qIFJlc3RyaWN0VmVydGV4U2hh
ZGVyVGltaW5nLmggaW4gSGVhZGVycyAqLywKLQkJCQlBMjY0RjhCRDE2OTc0REVEMDA2RkFBNUEg
LyogcHBfdXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMDEyRTJBMThCOTdCOUIwMDM5MDYy
RiAvKiBFeHRlbnNpb25CZWhhdmlvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJDMjMxQjA0
Mzc1RjAwMjM1NTUyIC8qIEFTVE1ldGFkYXRhSExTTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMx
REJDMkUxQjA0Mzc1RjAwMjM1NTUyIC8qIEVtdWxhdGVQcmVjaXNpb24uaCBpbiBIZWFkZXJzICov
LApAQCAtMTE2NywxOCArMTI4MywyMSBAQAogCQkJCUEyNjRGOEMwMTY5NzRERUQwMDZGQUE1QSAv
KiBTb3VyY2VMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEwMTJFNEUxOEI5N0I5QjAw
MzkwNjJGIC8qIE91dHB1dEdMU0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCREYyMUIwNDM4
RDMwMDIzNTU1MiAvKiBmb3JtYXR1dGlscy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzEwMTJFMUUx
OEI5N0I5QjAwMzkwNjJGIC8qIERlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDMURCREU5MUIwNDM4RDMwMDIzNTU1MiAvKiBEaXNwbGF5LmggaW4gSGVhZGVycyAq
LywKIAkJCQkzMTAxMkU3QTE4Qjk3QjlCMDAzOTA2MkYgLyogVmFsaWRhdGVMaW1pdGF0aW9ucy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJDMzQxQjA0Mzc1RjAwMjM1NTUyIC8qIE9wZXJhdG9y
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1Q0NEODFCRTFEQkZFQTVDMDA2MDY2QjggLyogU3BsaXRT
ZXF1ZW5jZU9wZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1Q0NEODE3OTFEQkZFOTk5MDA2
MDY2QjggLyogSW5kZXhSYW5nZUNhY2hlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1Q0NEODE4RDFE
QkZFQTEwMDA2MDY2QjggLyogQml0U2V0SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
MURCQzQwMUIwNDM3NUYwMDIzNTU1MiAvKiBTZXBhcmF0ZURlY2xhcmF0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNUMzMTVDRkYxQ0M1QjZEQTAwNzc2Njk3IC8qIENhY2hlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1QzFEQkRENjFCMDQzOEQzMDAyMzU1NTIgLyogQXR0cmlidXRlTWFwLmggaW4g
SGVhZGVycyAqLywKKwkJCQk1Q0NEODE4NDFEQkZFOTk5MDA2MDY2QjggLyogVmVyc2lvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzEwMTJFMzMxOEI5N0I5QjAwMzkwNjJGIC8qIEhhc2hOYW1lcy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNUNDRDgxQjIxREJGRUE1QzAwNjA2NkI4IC8qIEV4cGFuZElu
dGVnZXJQb3dFeHByZXNzaW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NEY4QzIxNjk3NERF
RDAwNkZBQTVBIC8qIFRva2VuLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTAxMkUyOTE4Qjk3QjlC
MDAzOTA2MkYgLyogRGlyZWN0aXZlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEwMTJF
MTIxOEI5N0I5QjAwMzkwNjJGIC8qIEJhc2VUeXBlcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNUMx
REJERTUxQjA0MzhEMzAwMjM1NTUyIC8qIERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURC
RTA4MUIwNDM4RDMwMDIzNTU1MiAvKiBSZW5kZXJidWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUEyNjRGOEM0MTY5NzRERUQwMDZGQUE1QSAvKiBUb2tlbml6ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKQEAgLTEyNDgsMTcgKzEzNjcsMjAgQEAKIAkJCQk1QzFEQkRGNTFCMDQzOEQzMDAyMzU1
NTIgLyogRnJhbWVidWZmZXJBdHRhY2htZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMURC
QzQ0MUIwNDM3NUYwMDIzNTU1MiAvKiBUeXBlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3MjMw
OUE1NjE4M0MyN0RFMDAzNzBCOTMgLyogVG9rZW5pemVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTVDQ0Q4MUIxMURCRkVBNUMwMDYwNjZCOCAvKiBFeHBhbmRJbnRlZ2VyUG93RXhwcmVzc2lvbnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEwMTJFNkMxOEI5N0I5QjAwMzkwNjJGIC8qIFRyYW5z
bGF0b3JHTFNMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMzE1RDBFMUNDNUI2REEwMDc3NjY5
NyAvKiBVbmZvbGRTaG9ydENpcmN1aXRUb0lmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMURC
RjQxMUIwNDM4RDMwMDIzNTU1MiAvKiBWZXJ0ZXhBdHRyaWJ1dGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTI2NEY4QUMxNjk3NERFRDAwNkZBQTVBIC8qIERpYWdub3N0aWNzQmFzZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1QzMxNUQxMDFDQzVCNkRBMDA3NzY2OTcgLyogVmFsaWRhdGVHbG9i
YWxJbml0aWFsaXplci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1QzFEQkRFNDFCMDQzOEQzMDAy
MzU1NTIgLyogRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFEQkYyOTFCMDQzOEQzMDAy
MzU1NTIgLyogU2hhZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxMDEyRTE1MThCOTdCOUIw
MDM5MDYyRiAvKiBDb2RlR2VuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMURCREY4MUIwNDM4
RDMwMDIzNTU1MiAvKiBIYW5kbGVBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEw
MTJFM0YxOEI5N0I5QjAwMzkwNjJGIC8qIEludGVybWVkaWF0ZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk1Q0NEODFCNzFEQkZFQTVDMDA2MDY2QjggLyogUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNDN0Q0NzIxOTEwMjYyMTAwMEI4QzFGIC8qIG1hdGh1
dGlsLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDQ0Q4MTc2MURCRkU5OTkwMDYwNjZCOCAvKiBJ
bWFnZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1Q0NEODFBQTFEQkZFQTVDMDA2MDY2QjggLyog
QWRkQW5kVHJ1ZVRvTG9vcENvbmRpdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFEQkUw
NzFCMDQzOEQzMDAyMzU1NTIgLyogUmVuZGVyYnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTMxMDEyRTNCMThCOTdCOUIwMDM5MDYyRiAvKiBJbml0aWFsaXplUGFyc2VDb250ZXh0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTVDMzE1RDAyMUNDNUI2REEwMDc3NjY5NyAvKiBFeHRlbnNpb25H
TFNMLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTI2OCw3ICsxMzkwLDYgQEAKIAkJCQk1QzFEQkYy
NzFCMDQzOEQzMDAyMzU1NTIgLyogU2FtcGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFE
QkRGQjFCMDQzOEQzMDAyMzU1NTIgLyogSW1hZ2VJbmRleC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1QzFEQkREQTFCMDQzOEQzMDAyMzU1NTIgLyogQ2Fwcy5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQkzMTAxMkUyMTE4Qjk3QjlCMDAzOTA2MkYgLyogRGVwZW5kZW5jeUdyYXBoVHJhdmVyc2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzEwMTJFNUUxOEI5N0I5QjAwMzkwNjJGIC8qIFJld3JpdGVF
bHNlQmxvY2tzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMURCQzJBMUIwNDM3NUYwMDIzNTU1
MiAvKiBDYWxsREFHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMURCQzJEMUIwNDM3NUYwMDIz
NTU1MiAvKiBFbXVsYXRlUHJlY2lzaW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTI3OCwxMyAr
MTM5OSwxNiBAQAogCQkJCTMxMDEyRTREMThCOTdCOUIwMDM5MDYyRiAvKiBPdXRwdXRHTFNMLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTMxMDEyRTMwMThCOTdCOUIwMDM5MDYyRiAvKiBnbHNsYW5n
X2xleC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzMxNUQwMDFDQzVCNkRBMDA3NzY2OTcgLyog
RGVmZXJHbG9iYWxJbml0aWFsaXplcnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUNDRDgxNzAx
REJGRTk5OTAwNjA2NkI4IC8qIENvbnRleHRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
QzFEQkRFNjFCMDQzOEQzMDAyMzU1NTIgLyogRGV2aWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTVDMURCRERGMUIwNDM4RDMwMDIzNTU1MiAvKiBDb25maWcuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNUMxREJERUExQjA0MzhEMzAwMjM1NTUyIC8qIEVycm9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTVDMURCRjMwMUIwNDM4RDMwMDIzNTU1MiAvKiBUZXh0dXJlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTMxMDEyRTQxMThCOTdCOUIwMDM5MDYyRiAvKiBpbnRlcm1PdXQuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNUNDRDgxOEYxREJGRUExMDAwNjA2NkI4IC8qIEZsb2F0MTZUb0Zsb2F0MzIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxREJDMzcxQjA0Mzc1RjAwMjM1NTUyIC8qIFJlZ2Vu
ZXJhdGVTdHJ1Y3ROYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTAxMkU2RTE4Qjk3QjlC
MDAzOTA2MkYgLyogVHJhbnNsYXRvckhMU0wuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUNDRDgx
N0ExREJGRTk5OTAwNjA2NkI4IC8qIFBhdGguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTI2NEY4
QjAxNjk3NERFRDAwNkZBQTVBIC8qIERpcmVjdGl2ZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1QzFEQkMyNDFCMDQzNzVGMDAyMzU1NTIgLyogYmxvY2tsYXlvdXQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUMxREJDMzkxQjA0Mzc1RjAwMjM1NTUyIC8qIFJlbW92ZVN3aXRjaEZhbGxU
aHJvdWdoLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTMwNSwyMyArMTQyOSwyNiBAQAogCQkJCTMx
MDEyRTYyMThCOTdCOUIwMDM5MDYyRiAvKiBTaGFkZXJMYW5nLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTVDMURCRjJFMUIwNDM4RDMwMDIzNTU1MiAvKiBTdXJmYWNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTVDMURCRjNCMUIwNDM4RDMwMDIzNTU1MiAvKiB2YWxpZGF0aW9uRVMyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTVDQ0Q4MTgwMURCRkU5OTkwMDYwNjZCOCAvKiBTdHJlYW0uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMzEwMTJFMzgxOEI5N0I5QjAwMzkwNjJGIC8qIEluaXRpYWxpemVE
bGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxREJGM0YxQjA0MzhEMzAwMjM1NTUyIC8qIFZl
cnRleEFycmF5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTVDMURCREYwMUIwNDM4RDMwMDIzNTU1
MiAvKiBGbG9hdDE2VG9GbG9hdDMyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMURCRjNEMUIw
NDM4RDMwMDIzNTU1MiAvKiB2YWxpZGF0aW9uRVMzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVD
MURCREU4MUIwNDM4RDMwMDIzNTU1MiAvKiBEaXNwbGF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUEyNjRGOEI4MTY5NzRERUQwMDZGQUE1QSAvKiBNYWNyby5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBMjY0RjhCQTE2OTc0REVEMDA2RkFBNUEgLyogTWFjcm9FeHBhbmRlci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk1Q0NEODE3NDFEQkZFOTk5MDA2MDY2QjggLyogSGFuZGxlUmFuZ2VBbGxvY2F0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUNDRDgxQjUxREJGRUE1QzAwNjA2NkI4IC8qIFF1
YWxpZmllclR5cGVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDQ0Q4MUJGMURCRkVBNUMwMDYw
NjZCOCAvKiBVc2VJbnRlcmZhY2VCbG9ja0ZpZWxkcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkz
MTAxMkU3MzE4Qjk3QjlCMDAzOTA2MkYgLyogVW5mb2xkU2hvcnRDaXJjdWl0QVNULmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTVDMURCRTAzMUIwNDM4RDMwMDIzNTU1MiAvKiBxdWVyeWNvbnZlcnNp
b25zLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTMxMDEyRTY4MThCOTdCOUIwMDM5MDYyRiAvKiBS
ZXN0cmljdFZlcnRleFNoYWRlclRpbWluZy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1Q0NEODE3
ODFEQkZFOTk5MDA2MDY2QjggLyogSW5kZXhSYW5nZUNhY2hlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTMxMDEyRTEzMThCOTdCOUIwMDM5MDYyRiAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk1Q0NEODE5MTFEQkZFQTEwMDA2MDY2QjggLyogc3RyaW5n
X3V0aWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMURCQzQxMUIwNDM3NUYwMDIzNTU1MiAv
KiBTaGFkZXJWYXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMURCRjMzMUIwNDM4RDMwMDIz
NTU1MiAvKiBUcmFuc2Zvcm1GZWVkYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTAxMkUz
NDE4Qjk3QjlCMDAzOTA2MkYgLyogSW5mb1NpbmsuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMx
REJDMjAxQjA0Mzc1RjAwMjM1NTUyIC8qIEFycmF5UmV0dXJuVmFsdWVUb091dFBhcmFtZXRlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTAxMkU1NjE4Qjk3QjlCMDAzOTA2MkYgLyogUG9vbEFs
bG9jLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTMxMDEyRTY2MThCOTdCOUIwMDM5MDYyRiAvKiBS
ZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMURC
QzM1MUIwNDM3NUYwMDIzNTU1MiAvKiBQcnVuZUVtcHR5RGVjbGFyYXRpb25zLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDMURCREYxMUIwNDM4RDMwMDIzNTU1MiAvKiBmb3JtYXR1dGlscy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkzMTAxMkU3OTE4Qjk3QjlCMDAzOTA2MkYgLyogVmFsaWRhdGVM
aW1pdGF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEzMjgsNiArMTQ1NSw3IEBACiAJCQkJ
MzEwMTJFNzcxOEI5N0I5QjAwMzkwNjJGIC8qIHV0aWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUMxREJERTIxQjA0MzhEMzAwMjM1NTUyIC8qIENvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMzEwMTJFNTExOEI5N0I5QjAwMzkwNjJGIC8qIE91dHB1dEhMU0wuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNUNDRDgxQUMxREJGRUE1QzAwNjA2NkI4IC8qIEFkZERlZmF1bHRSZXR1cm5TdGF0
ZW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMzE1RDBDMUNDNUI2REEwMDc3NjY5NyAv
KiBTZXBhcmF0ZUV4cHJlc3Npb25zUmV0dXJuaW5nQXJyYXlzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTMxMDEyRTM2MThCOTdCOUIwMDM5MDYyRiAvKiBJbml0aWFsaXplLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTVDMURCRTAxMUIwNDM4RDMwMDIzNTU1MiAvKiBRdWVyeS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTEzMzUsMTUgKzE0NjMsMTcgQEAKIAkJCQk1QzFEQkRGRjFCMDQzOEQzMDAyMzU1
NTIgLyogUHJvZ3JhbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzMxNUQwNDFDQzVCNkRBMDA3
NzY2OTcgLyogUmVjb3JkQ29uc3RhbnRQcmVjaXNpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MzEwMTJFN0IxOEI5N0I5QjAwMzkwNjJGIC8qIFZhcmlhYmxlSW5mby5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk1Q0NEODE3MjFEQkZFOTk5MDA2MDY2QjggLyogRGVidWcuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNUMxREJGMkIxQjA0MzhEMzAwMjM1NTUyIC8qIFN0YXRlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTVDMzE1RDA2MUNDNUI2REEwMDc3NjY5NyAvKiBSZW1vdmVEeW5hbWljSW5kZXhp
bmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxREJCRjYxQjA0MzZFQzAwMjM1NTUyIC8qIHRs
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Q0M3RDQ1MjE5MTAyNEU0MDAwQjhDMUYgLyogTG9v
cEluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxREJDM0YxQjA0Mzc1RjAwMjM1NTUyIC8q
IFNlcGFyYXRlRGVjbGFyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTMxMDEyRTFEMThC
OTdCOUIwMDM5MDYyRiAvKiBEZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTVDQ0Q4MUJCMURCRkVBNUMwMDYwNjZCOCAvKiBTaW1wbGlmeUxvb3BDb25kaXRpb25z
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDQ0Q4MTdDMURCRkU5OTkwMDYwNjZCOCAvKiBxdWVy
eXV0aWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxMDEyRTdEMThCOTdCOUIwMDM5MDYyRiAv
KiBWYXJpYWJsZVBhY2tlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1Q0NEODFCOTFEQkZFQTVD
MDA2MDY2QjggLyogUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckludC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1QzFEQkRGMzFCMDQzOEQzMDAyMzU1NTIgLyogRnJhbWVidWZmZXIuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJMzEwMTJFMUYxOEI5N0I5QjAwMzkwNjJGIC8qIERlcGVuZGVuY3lHcmFw
aE91dHB1dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzMxNUQxMjFDQzVCNkRBMDA3NzY2OTcg
LyogVmFsaWRhdGVNYXhQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMURCREQ4
MUIwNDM4RDMwMDIzNTU1MiAvKiBCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxREJE
RDMxQjA0MzhEMzAwMjM1NTUyIC8qIGFuZ2xldHlwZXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0x
MzUyLDIxICsxNDgyLDI3IEBACiAJCQkJQTI2NEY4QkUxNjk3NERFRDAwNkZBQTVBIC8qIFByZXBy
b2Nlc3Nvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzMxNUNGRTFDQzVCNkRBMDA3NzY2OTcg
LyogQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxREJERUUxQjA0MzhEMzAwMjM1NTUy
IC8qIEZlbmNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDQ0Q4MUJEMURCRkVBNUMwMDYwNjZC
OCAvKiBTcGxpdFNlcXVlbmNlT3BlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNDN0Q0
NTcxOTEwMjRFNDAwMEI4QzFGIC8qIFZhbGlkYXRlT3V0cHV0cy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1QzFEQkJGMDFCMDQzNkVDMDAyMzU1NTIgLyogYW5nbGV1dGlscy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkzMTAxMkUyQjE4Qjk3QjlCMDAzOTA2MkYgLyogRm9yTG9vcFVucm9sbC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk1Q0NEODFDMzFEQkZFQUQ5MDA2MDY2QjggLyogRW11bGF0ZUdM
RnJhZ0NvbG9yQnJvYWRjYXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDQ0Q4MUFFMURCRkVB
NUMwMDYwNjZCOCAvKiBCcmVha1ZhcmlhYmxlQWxpYXNpbmdJbklubmVyTG9vcHMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUMxREJDM0QxQjA0Mzc1RjAwMjM1NTUyIC8qIFNlcGFyYXRlQXJyYXlJ
bml0aWFsaXphdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzlGRkY0RTE5MTAyQTAwMDAy
NUI4RkEgLyogRmxhZ1N0ZDE0MFN0cnVjdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEwMTJF
MTcxOEI5N0I5QjAwMzkwNjJGIC8qIENvbXBpbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVD
QzdENDZFMTkxMDI2MjEwMDBCOEMxRiAvKiBkZWJ1Zy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
Q0NEODFCMzFEQkZFQTVDMDA2MDY2QjggLyogSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTVDMURCQzI4MUIwNDM3NUYwMDIzNTU1MiAvKiBCdWlsdEluRnVu
Y3Rpb25FbXVsYXRvckdMU0wuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUNDRDgxQjAxREJGRUE1
QzAwNjA2NkI4IC8qIENvbnN0YW50VW5pb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxREJE
RDUxQjA0MzhEMzAwMjM1NTUyIC8qIEF0dHJpYnV0ZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkzMTAxMkU2QTE4Qjk3QjlCMDAzOTA2MkYgLyogVHJhbnNsYXRvckVTU0wuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMzEwMTJFNEYxOEI5N0I5QjAwMzkwNjJGIC8qIE91dHB1dEdMU0xCYXNlLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCTMxMDEyRTFCMThCOTdCOUIwMDM5MDYyRiAvKiBEZXBlbmRl
bmN5R3JhcGguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxREJDM0IxQjA0Mzc1RjAwMjM1NTUy
IC8qIFNjYWxhcml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJncy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1QzFEQkREQzFCMDQzOEQzMDAyMzU1NTIgLyogQ29tcGlsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNUMxREJERkUxQjA0MzhEMzAwMjM1NTUyIC8qIFBsYXRmb3JtLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTVDQ0Q4MTdFMURCRkU5OTkwMDYwNjZCOCAvKiBzaWduYWxfdXRpbHMuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNUNDRDgxODIxREJGRTk5OTAwNjA2NkI4IC8qIHZhbGlkYXRp
b25FUzMxLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjRGOEMxMTY5NzRERUQwMDZGQUE1QSAv
KiBUb2tlbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FVVEhP
UlMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQVVUSE9SUwkocmV2aXNp
b24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQVVUSE9SUwkod29ya2luZyBj
b3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgVGhpcyBpcyB0aGUgb2ZmaWNpYWwgbGlzdCBvZiBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzCivvu78jIFRoaXMgaXMgdGhlIG9mZmljaWFsIGxpc3Qgb2Yg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycwogIyBmb3IgY29weXJpZ2h0IHB1cnBvc2VzLgogIyBU
aGlzIGZpbGUgaXMgZGlzdGluY3QgZnJvbSB0aGUgQ09OVFJJQlVUT1JTIGZpbGVzLgogIyBTZWUg
dGhlIGxhdHRlciBmb3IgYW4gZXhwbGFuYXRpb24uCkBAIC00NCwzICs0NCw1IEBACiBNYWtzIE5h
dW1vdgogSmlueW91bmcgSHVyCiBTZWJhc3RpYW4gQmVyZ3N0ZWluCitKYW1lcyBSb3NzLUdvd2Fu
CitOaWNrb2xheSBBcnRhbW9ub3YKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0JVSUxE
LmduCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0JVSUxELmduCShyZXZp
c2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9CVUlMRC5nbgkod29ya2lu
ZyBjb3B5KQpAQCAtMyw5ICszLDE5IEBACiAjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAK
ICMgaW1wb3J0IHRoZSB1c2VfeDExIHZhcmlhYmxlCitpbXBvcnQoIi8vYnVpbGQvY29uZmlnL2Rj
aGVja19hbHdheXNfb24uZ25pIikKK2ltcG9ydCgiLy9idWlsZC9jb25maWcvbGludXgvcGtnX2Nv
bmZpZy5nbmkiKQogaW1wb3J0KCIvL2J1aWxkL2NvbmZpZy91aS5nbmkiKQoraW1wb3J0KCIvL3Rl
c3RpbmcvbGliZnV6emVyL2Z1enplcl90ZXN0LmduaSIpCiBpbXBvcnQoIi8vdGhpcmRfcGFydHkv
YW5nbGUvYnVpbGQvYW5nbGVfY29tbW9uLmduaSIpCitpbXBvcnQoIi8vdWkvb3pvbmUvb3pvbmUu
Z25pIikKIAoraWYgKG96b25lX3BsYXRmb3JtX2dibSkgeworICBwa2dfY29uZmlnKCJsaWJkcm0i
KSB7CisgICAgcGFja2FnZXMgPSBbICJsaWJkcm0iIF0KKyAgfQorfQorCiBhbmdsZV9naXRfaXNf
cHJlc2VudCA9IGV4ZWNfc2NyaXB0KCJzcmMvY29tbWl0X2lkLnB5IiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJjaGVjayIsCkBAIC0zOSw2ICs0OSwxNyBAQAogICBdCiB9CiAKK2NvbmZpZygiZXh0cmFf
d2FybmluZ3MiKSB7CisgICMgRW5hYmxlIG1vcmUgZGVmYXVsdCB3YXJuaW5ncyBvbiBXaW5kb3dz
LgorICBpZiAoaXNfd2luKSB7CisgICAgY2ZsYWdzID0gWworICAgICAgIi93ZTQyNDQiLCAgIyBD
b252ZXJzaW9uOiBwb3NzaWJsZSBsb3NzIG9mIGRhdGEuCisgICAgICAiL3dlNDQ1NiIsICAjIFZh
cmlhYmxlIHNoYWRvd2luZy4KKyAgICAgICIvd2U0NDU4IiwgICMgZGVjbGFyYXRpb24gaGlkZXMg
Y2xhc3MgbWVtYmVyLgorICAgIF0KKyAgfQorfQorCiBpZiAoaXNfd2luKSB7CiAgIGNvcHkoImNv
cHlfY29tcGlsZXJfZGxsIikgewogICAgIHNvdXJjZXMgPSBbCkBAIC01MCw2ICs3MSw4IEBACiAg
IH0KIH0KIAorYW5nbGVfdW5kZWZpbmVfY29uZmlncyA9IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBp
bGVyOmRlZmF1bHRfaW5jbHVkZV9kaXJzIiBdCisKIGNvbXBvbmVudCgidHJhbnNsYXRvciIpIHsK
ICAgc291cmNlcyA9IFsKICAgICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2hhZGVyTGFuZy5j
cHAiLApAQCAtNTgsMTEgKzgxLDggQEAKIAogICBkZWZpbmVzID0gWyAiQU5HTEVfVFJBTlNMQVRP
Ul9JTVBMRU1FTlRBVElPTiIgXQogCi0gIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29t
cGlsZXI6Y2hyb21pdW1fY29kZSIgXQotICBjb25maWdzICs9IFsKLSAgICAiOmludGVybmFsX2Nv
bmZpZyIsCi0gICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAot
ICBdCisgIGNvbmZpZ3MgLT0gYW5nbGVfdW5kZWZpbmVfY29uZmlncworICBjb25maWdzICs9IFsg
IjppbnRlcm5hbF9jb25maWciIF0KIAogICBwdWJsaWNfZGVwcyA9IFsKICAgICAiOnRyYW5zbGF0
b3JfbGliIiwKQEAgLTkwLDEwICsxMTAsMTEgQEAKIHN0YXRpY19saWJyYXJ5KCJwcmVwcm9jZXNz
b3IiKSB7CiAgIHNvdXJjZXMgPSByZWJhc2VfcGF0aChjb21waWxlcl9neXBpLmFuZ2xlX3ByZXBy
b2Nlc3Nvcl9zb3VyY2VzLCAiLiIsICJzcmMiKQogCi0gIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9j
b25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQotICBjb25maWdzICs9IFsKLSAgICAiOmlu
dGVybmFsX2NvbmZpZyIsCi0gICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVt
X2NvZGUiLAorICBjb25maWdzIC09IGFuZ2xlX3VuZGVmaW5lX2NvbmZpZ3MKKyAgY29uZmlncyAr
PSBbICI6aW50ZXJuYWxfY29uZmlnIiBdCisKKyAgcHVibGljX2RlcHMgPSBbCisgICAgIjphbmds
ZV9jb21tb24iLAogICBdCiB9CiAKQEAgLTEwMSw2ICsxMjIsMTAgQEAKICAgZGVmaW5lcyA9IFsg
IkFOR0xFX1RSQU5TTEFUT1JfU1RBVElDIiBdCiB9CiAKK2NvbmZpZygidHJhbnNsYXRvcl9kaXNh
YmxlX3Bvb2xfYWxsb2MiKSB7CisgIGRlZmluZXMgPSBbICJBTkdMRV9UUkFOU0xBVE9SX0RJU0FC
TEVfUE9PTF9BTExPQyIgXQorfQorCiBjb25maWcoImRlYnVnX2Fubm90YXRpb25zX2NvbmZpZyIp
IHsKICAgaWYgKGlzX2RlYnVnKSB7CiAgICAgZGVmaW5lcyA9IFsgIkFOR0xFX0VOQUJMRV9ERUJV
R19BTk5PVEFUSU9OUyIgXQpAQCAtMTA3LDQ3ICsxMzIsODYgQEAKICAgfQogfQogCitjb25maWco
ImFuZ2xlX3JlbGVhc2VfYXNzZXJ0c19jb25maWciKSB7CisgIGlmIChkY2hlY2tfYWx3YXlzX29u
KSB7CisgICAgZGVmaW5lcyA9IFsgIkFOR0xFX0VOQUJMRV9SRUxFQVNFX0FTU0VSVFMiIF0KKyAg
fQorfQorCitjb25maWcoImFuZ2xlX2NvbW1vbl9jb25maWciKSB7CisgIGluY2x1ZGVfZGlycyA9
IFsgInNyYy9jb21tb24vdGhpcmRfcGFydHkvbnVtZXJpY3MiIF0KK30KKwogc3RhdGljX2xpYnJh
cnkoImFuZ2xlX2NvbW1vbiIpIHsKICAgc291cmNlcyA9IHJlYmFzZV9wYXRoKGdsZXNfZ3lwaS5s
aWJhbmdsZV9jb21tb25fc291cmNlcywgIi4iLCAic3JjIikKIAotICBjb25maWdzIC09IFsgIi8v
YnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyAtPSBhbmds
ZV91bmRlZmluZV9jb25maWdzCiAgIGNvbmZpZ3MgKz0gWworICAgICI6YW5nbGVfY29tbW9uX2Nv
bmZpZyIsCisgICAgIjpkZWJ1Z19hbm5vdGF0aW9uc19jb25maWciLAorICAgICI6ZXh0cmFfd2Fy
bmluZ3MiLAogICAgICI6aW50ZXJuYWxfY29uZmlnIiwKLSAgICAiOmRlYnVnX2Fubm90YXRpb25z
X2NvbmZpZyIsCi0gICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUi
LAogICBdCiAKLSAgcHVibGljX2RlcHMgPSBbICI6Y29tbWl0X2lkIiBdCisgIHB1YmxpY19kZXBz
ID0gWworICAgICI6Y29tbWl0X2lkIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsKKyAgICAi
OmFuZ2xlX3JlbGVhc2VfYXNzZXJ0c19jb25maWciLAorICAgICI6YW5nbGVfY29tbW9uX2NvbmZp
ZyIsCisgIF0KIH0KIAorY29uZmlnKCJhbmdsZV9pbWFnZV91dGlsX2NvbmZpZyIpIHsKKyAgaW5j
bHVkZV9kaXJzID0gWworICAgICJpbmNsdWRlIiwKKyAgICAic3JjIiwKKyAgXQorfQorCitzdGF0
aWNfbGlicmFyeSgiYW5nbGVfaW1hZ2VfdXRpbCIpIHsKKyAgc291cmNlcyA9IHJlYmFzZV9wYXRo
KGdsZXNfZ3lwaS5saWJhbmdsZV9pbWFnZV91dGlsX3NvdXJjZXMsICIuIiwgInNyYyIpCisKKyAg
Y29uZmlncyAtPSBhbmdsZV91bmRlZmluZV9jb25maWdzCisgIGNvbmZpZ3MgKz0gWyAiOmludGVy
bmFsX2NvbmZpZyIgXQorCisgIHB1YmxpY19jb25maWdzID0gWyAiOmFuZ2xlX2ltYWdlX3V0aWxf
Y29uZmlnIiBdCisKKyAgcHVibGljX2RlcHMgPSBbCisgICAgIjphbmdsZV9jb21tb24iLAorICBd
Cit9CisKIHN0YXRpY19saWJyYXJ5KCJ0cmFuc2xhdG9yX2xpYiIpIHsKICAgc291cmNlcyA9IHJl
YmFzZV9wYXRoKGNvbXBpbGVyX2d5cGkuYW5nbGVfdHJhbnNsYXRvcl9saWJfc291cmNlcywgIi4i
LCAic3JjIikKICAgZGVmaW5lcyA9IFtdCiAKLSAgaWYgKGFuZ2xlX2VuYWJsZV9lc3NsKSB7Cisg
IGlmIChhbmdsZV9lbmFibGVfZXNzbCB8fCB1c2VfbGliZnV6emVyKSB7CiAgICAgc291cmNlcyAr
PQogICAgICAgICByZWJhc2VfcGF0aChjb21waWxlcl9neXBpLmFuZ2xlX3RyYW5zbGF0b3JfbGli
X2Vzc2xfc291cmNlcywgIi4iLCAic3JjIikKICAgICBkZWZpbmVzICs9IFsgIkFOR0xFX0VOQUJM
RV9FU1NMIiBdCiAgIH0KIAotICBpZiAoYW5nbGVfZW5hYmxlX2dsc2wpIHsKKyAgaWYgKGFuZ2xl
X2VuYWJsZV9nbHNsIHx8IHVzZV9saWJmdXp6ZXIpIHsKICAgICBzb3VyY2VzICs9CiAgICAgICAg
IHJlYmFzZV9wYXRoKGNvbXBpbGVyX2d5cGkuYW5nbGVfdHJhbnNsYXRvcl9saWJfZ2xzbF9zb3Vy
Y2VzLCAiLiIsICJzcmMiKQogICAgIGRlZmluZXMgKz0gWyAiQU5HTEVfRU5BQkxFX0dMU0wiIF0K
ICAgfQogCi0gIGlmIChhbmdsZV9lbmFibGVfaGxzbCkgeworICBpZiAoYW5nbGVfZW5hYmxlX2hs
c2wgfHwgdXNlX2xpYmZ1enplcikgewogICAgIHNvdXJjZXMgKz0KICAgICAgICAgcmViYXNlX3Bh
dGgoY29tcGlsZXJfZ3lwaS5hbmdsZV90cmFuc2xhdG9yX2xpYl9obHNsX3NvdXJjZXMsICIuIiwg
InNyYyIpCiAgICAgZGVmaW5lcyArPSBbICJBTkdMRV9FTkFCTEVfSExTTCIgXQogICB9Ci0gIGNv
bmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBj
b25maWdzIC09IGFuZ2xlX3VuZGVmaW5lX2NvbmZpZ3MKICAgY29uZmlncyArPSBbCiAgICAgIjpp
bnRlcm5hbF9jb25maWciLAogICAgICI6dHJhbnNsYXRvcl9zdGF0aWNfY29uZmlnIiwKLSAgICAi
Ly9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCiAgIF0KICAgcHVibGlj
X2NvbmZpZ3MgPSBbICI6ZXh0ZXJuYWxfY29uZmlnIiBdCisgIGlmICh1c2VfbGliZnV6emVyKSB7
CisgICAgYWxsX2RlcGVuZGVudF9jb25maWdzID0gWyAiOnRyYW5zbGF0b3JfZGlzYWJsZV9wb29s
X2FsbG9jIiBdCisgIH0KIAogICBkZXBzID0gWwogICAgICI6aW5jbHVkZXMiLApAQCAtMTU3LDYg
KzIyMSwxMiBAQAogICBwdWJsaWNfZGVwcyA9IFsKICAgICAiOmFuZ2xlX2NvbW1vbiIsCiAgIF0K
KworICBpZiAoaXNfd2luKSB7CisgICAgIyBOZWNlc3NhcnkgdG8gc3VwcHJlc3Mgc29tZSBzeXN0
ZW0gaGVhZGVyIHh0cmVlIHdhcm5pZ25zIGluIFJlbGVhc2UuCisgICAgIyBGb3Igc29tZSByZWFz
b24gdGhpcyB3YXJuaW5nIGRvZXNuJ3QgZ2V0IHRyaWdnZXJlZCBpbiBDaHJvbWl1bQorICAgIGNm
bGFncyA9IFsgIi93ZDQ3MTgiIF0KKyAgfQogfQogCiBzdGF0aWNfbGlicmFyeSgidHJhbnNsYXRv
cl9zdGF0aWMiKSB7CkBAIC0xNjksMTEgKzIzOSw4IEBACiAgICAgZGVmaW5lcyA9IFsgIkFOR0xF
X0VOQUJMRV9ITFNMIiBdCiAgIH0KIAotICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2Nv
bXBpbGVyOmNocm9taXVtX2NvZGUiIF0KLSAgY29uZmlncyArPSBbCi0gICAgIjppbnRlcm5hbF9j
b25maWciLAotICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwK
LSAgXQorICBjb25maWdzIC09IGFuZ2xlX3VuZGVmaW5lX2NvbmZpZ3MKKyAgY29uZmlncyArPSBb
ICI6aW50ZXJuYWxfY29uZmlnIiBdCiAgIHB1YmxpY19jb25maWdzID0gWyAiOnRyYW5zbGF0b3Jf
c3RhdGljX2NvbmZpZyIgXQogCiAgIHB1YmxpY19kZXBzID0gWwpAQCAtMTgxLDYgKzI0OCwyMSBA
QAogICBdCiB9CiAKK3NvdXJjZV9zZXQoInRyYW5zbGF0b3JfZnV6emVyIikgeworICBzb3VyY2Vz
ID0gWworICAgICJzcmMvY29tcGlsZXIvZnV6ei90cmFuc2xhdG9yX2Z1enplci5jcHAiLAorICBd
CisKKyAgaW5jbHVkZV9kaXJzID0gWworICAgICJpbmNsdWRlIiwKKyAgICAic3JjIiwKKyAgXQor
CisgIGRlcHMgPSBbCisgICAgIjp0cmFuc2xhdG9yX3N0YXRpYyIsCisgIF0KK30KKwogY29uZmln
KCJjb21taXRfaWRfY29uZmlnIikgewogICBpbmNsdWRlX2RpcnMgPSBbICIkcm9vdF9nZW5fZGly
L2FuZ2xlIiBdCiB9CkBAIC0yMjQsMTAgKzMwNiwxNiBAQAogICB9CiAgIGlmIChhbmdsZV9lbmFi
bGVfZ2wpIHsKICAgICBkZWZpbmVzICs9IFsgIkFOR0xFX0VOQUJMRV9PUEVOR0wiIF0KKyAgICBp
ZiAodXNlX3gxMSkgeworICAgICAgZGVmaW5lcyArPSBbICJBTkdMRV9VU0VfWDExIiBdCisgICAg
fQogICB9Ci0gIGlmICh1c2VfeDExKSB7Ci0gICAgZGVmaW5lcyArPSBbICJBTkdMRV9VU0VfWDEx
IiBdCisgIGlmIChhbmdsZV9lbmFibGVfdnVsa2FuKSB7CisgICAgZGVmaW5lcyArPSBbICJBTkdM
RV9FTkFCTEVfVlVMS0FOIiBdCiAgIH0KKyAgaWYgKGFuZ2xlX2VuYWJsZV9udWxsKSB7CisgICAg
ZGVmaW5lcyArPSBbICJBTkdMRV9FTkFCTEVfTlVMTCIgXQorICB9CiAgIGRlZmluZXMgKz0gWwog
ICAgICJHTF9HTEVYVF9QUk9UT1RZUEVTIiwKICAgICAiRUdMX0VHTEVYVF9QUk9UT1RZUEVTIiwK
QEAgLTI1NSw5ICszNDMsMTEgQEAKICAgaW5jbHVkZV9kaXJzID0gW10KICAgbGlicyA9IFtdCiAg
IGRlZmluZXMgPSBbICJMSUJBTkdMRV9JTVBMRU1FTlRBVElPTiIgXQotCisgIHB1YmxpY19kZXBz
ID0gWworICAgICI6YW5nbGVfY29tbW9uIiwKKyAgXQogICBkZXBzID0gWwotICAgICI6YW5nbGVf
Y29tbW9uIiwKKyAgICAiOmFuZ2xlX2ltYWdlX3V0aWwiLAogICAgICI6Y29tbWl0X2lkIiwKICAg
ICAiOmluY2x1ZGVzIiwKICAgICAiOnRyYW5zbGF0b3Jfc3RhdGljIiwKQEAgLTI5MCw5ICszODAs
NyBAQAogICAgIH0KICAgICBpZiAodXNlX3gxMSkgewogICAgICAgc291cmNlcyArPSByZWJhc2Vf
cGF0aChnbGVzX2d5cGkubGliYW5nbGVfZ2xfZ2x4X3NvdXJjZXMsICIuIiwgInNyYyIpCi0gICAg
ICBkZXBzICs9IFsKLSAgICAgICAgInNyYy90aGlyZF9wYXJ0eS9saWJYTlZDdHJsOmxpYlhOVkN0
cmwiCi0gICAgICBdCisgICAgICBkZXBzICs9IFsgInNyYy90aGlyZF9wYXJ0eS9saWJYTlZDdHJs
OmxpYlhOVkN0cmwiIF0KICAgICAgIGxpYnMgKz0gWwogICAgICAgICAiWDExIiwKICAgICAgICAg
IlhpIiwKQEAgLTI5OSwyNiArMzg3LDc1IEBACiAgICAgICAgICJYZXh0IiwKICAgICAgIF0KICAg
ICB9CisgICAgaWYgKGlzX21hYykgeworICAgICAgc291cmNlcyArPSByZWJhc2VfcGF0aChnbGVz
X2d5cGkubGliYW5nbGVfZ2xfY2dsX3NvdXJjZXMsICIuIiwgInNyYyIpCisgICAgICBsaWJzICs9
IFsKKyAgICAgICAgIkNvY29hLmZyYW1ld29yayIsCisgICAgICAgICJJT1N1cmZhY2UuZnJhbWV3
b3JrIiwKKyAgICAgICAgIk9wZW5HTC5mcmFtZXdvcmsiLAorICAgICAgICAiUXVhcnR6Q29yZS5m
cmFtZXdvcmsiLAorICAgICAgXQorICAgIH0KKyAgICBpZiAoaXNfYW5kcm9pZCkgeworICAgICAg
c291cmNlcyArPSByZWJhc2VfcGF0aChnbGVzX2d5cGkubGliYW5nbGVfZ2xfZWdsX3NvdXJjZXMs
ICIuIiwgInNyYyIpCisgICAgICBzb3VyY2VzICs9IHJlYmFzZV9wYXRoKGdsZXNfZ3lwaS5saWJh
bmdsZV9nbF9lZ2xfZGxfc291cmNlcywgIi4iLCAic3JjIikKKyAgICAgIHNvdXJjZXMgKz0KKyAg
ICAgICAgICByZWJhc2VfcGF0aChnbGVzX2d5cGkubGliYW5nbGVfZ2xfZWdsX2FuZHJvaWRfc291
cmNlcywgIi4iLCAic3JjIikKKyAgICAgIGxpYnMgKz0gWworICAgICAgICAiYW5kcm9pZCIsCisg
ICAgICAgICJsb2ciLAorICAgICAgXQorICAgIH0KKyAgICBpZiAob3pvbmVfcGxhdGZvcm1fZ2Jt
KSB7CisgICAgICBjb25maWdzICs9IFsgIjpsaWJkcm0iIF0KKyAgICAgIGRlZmluZXMgKz0gWyAi
QU5HTEVfVVNFX09aT05FIiBdCisgICAgICBkZXBzICs9IFsgIi8vdGhpcmRfcGFydHkvbWluaWdi
bSIgXQorICAgICAgc291cmNlcyArPSByZWJhc2VfcGF0aChnbGVzX2d5cGkubGliYW5nbGVfZ2xf
ZWdsX3NvdXJjZXMsICIuIiwgInNyYyIpCisgICAgICBzb3VyY2VzICs9IHJlYmFzZV9wYXRoKGds
ZXNfZ3lwaS5saWJhbmdsZV9nbF9lZ2xfZGxfc291cmNlcywgIi4iLCAic3JjIikKKyAgICAgIHNv
dXJjZXMgKz0gcmViYXNlX3BhdGgoZ2xlc19neXBpLmxpYmFuZ2xlX2dsX296b25lX3NvdXJjZXMs
ICIuIiwgInNyYyIpCisgICAgfQogICB9CiAKKyAgaWYgKGFuZ2xlX2VuYWJsZV92dWxrYW4pIHsK
KyAgICBzb3VyY2VzICs9IHJlYmFzZV9wYXRoKGdsZXNfZ3lwaS5saWJhbmdsZV92dWxrYW5fc291
cmNlcywgIi4iLCAic3JjIikKKyAgfQorCisgIGlmIChhbmdsZV9lbmFibGVfbnVsbCkgeworICAg
IHNvdXJjZXMgKz0gcmViYXNlX3BhdGgoZ2xlc19neXBpLmxpYmFuZ2xlX251bGxfc291cmNlcywg
Ii4iLCAic3JjIikKKyAgfQorCiAgIGlmIChpc19kZWJ1ZykgewogICAgIGRlZmluZXMgKz0gWyAi
QU5HTEVfR0VORVJBVEVfU0hBREVSX0RFQlVHX0lORk8iIF0KICAgfQogCi0gIGNvbmZpZ3MgLT0g
WyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzIC09
IGFuZ2xlX3VuZGVmaW5lX2NvbmZpZ3MKKwogICBjb25maWdzICs9IFsKICAgICAiOmNvbW1pdF9p
ZF9jb25maWciLAogICAgICI6ZGVidWdfYW5ub3RhdGlvbnNfY29uZmlnIiwKKyAgICAiOmV4dHJh
X3dhcm5pbmdzIiwKICAgICAiOmxpYkFOR0xFX2NvbmZpZyIsCiAgICAgIjppbnRlcm5hbF9jb25m
aWciLAotICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKICAg
XQogCiAgIGlmIChpc193aW4pIHsKLSAgICBkZXBzICs9IFsgIjpjb3B5X2NvbXBpbGVyX2RsbCIg
XQorICAgIGRhdGFfZGVwcyA9IFsKKyAgICAgICI6Y29weV9jb21waWxlcl9kbGwiLAorICAgIF0K
ICAgfQogfQogCitjb25maWcoInNoYXJlZF9saWJyYXJ5X3B1YmxpY19jb25maWciKSB7CisgIGlm
IChpc19tYWMgJiYgIWlzX2NvbXBvbmVudF9idWlsZCkgeworICAgICMgRXhlY3V0YWJsZSB0YXJn
ZXRzIHRoYXQgZGVwZW5kIG9uIHRoZSBzaGFyZWQgbGlicmFyaWVzIGJlbG93IG5lZWQgdG8gaGF2
ZQorICAgICMgdGhlIHJwYXRoIHNldHVwIGluIG5vbi1jb21wb25lbnQgYnVpbGQgY29uZmlndXJh
dGlvbnMuCisgICAgbGRmbGFncyA9IFsKKyAgICAgICItcnBhdGgiLAorICAgICAgIkBleGVjdXRh
YmxlX3BhdGgvIiwKKyAgICBdCisgIH0KK30KKwogc2hhcmVkX2xpYnJhcnkoImxpYkdMRVN2MiIp
IHsKICAgc291cmNlcyA9IHJlYmFzZV9wYXRoKGdsZXNfZ3lwaS5saWJnbGVzdjJfc291cmNlcywg
Ii4iLCAic3JjIikKIApAQCAtMzI3LDEzICs0NjQsMjAgQEAKICAgICAgICAgWyAiL0RFRjoiICsg
cmViYXNlX3BhdGgoInNyYy9saWJHTEVTdjIvbGliR0xFU3YyLmRlZiIsIHJvb3RfYnVpbGRfZGly
KSBdCiAgIH0KIAotICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9t
aXVtX2NvZGUiIF0KKyAgaWYgKGlzX21hYyAmJiAhaXNfY29tcG9uZW50X2J1aWxkKSB7CisgICAg
bGRmbGFncyA9IFsKKyAgICAgICItaW5zdGFsbF9uYW1lIiwKKyAgICAgICJAcnBhdGgvJHt0YXJn
ZXRfbmFtZX0uZHlsaWIiLAorICAgIF0KKyAgICBwdWJsaWNfY29uZmlncyA9IFsgIjpzaGFyZWRf
bGlicmFyeV9wdWJsaWNfY29uZmlnIiBdCisgIH0KKworICBjb25maWdzIC09IGFuZ2xlX3VuZGVm
aW5lX2NvbmZpZ3MKICAgY29uZmlncyArPSBbCiAgICAgIjppbnRlcm5hbF9jb25maWciLAogICAg
ICI6Y29tbWl0X2lkX2NvbmZpZyIsCiAgICAgIjpkZWJ1Z19hbm5vdGF0aW9uc19jb25maWciLAog
ICAgICI6bGliQU5HTEVfY29uZmlnIiwKLSAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9f
Y2hyb21pdW1fY29kZSIsCiAgIF0KIAogICBkZWZpbmVzID0gWyAiTElCR0xFU1YyX0lNUExFTUVO
VEFUSU9OIiBdCkBAIC0zNTEsMTMgKzQ5NSwyMSBAQAogICAgIGxkZmxhZ3MgPSBbICIvREVGOiIg
KyByZWJhc2VfcGF0aCgic3JjL2xpYkVHTC9saWJFR0wuZGVmIiwgcm9vdF9idWlsZF9kaXIpIF0K
ICAgfQogCi0gIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1f
Y29kZSIgXQorICBpZiAoaXNfbWFjICYmICFpc19jb21wb25lbnRfYnVpbGQpIHsKKyAgICBsZGZs
YWdzID0gWworICAgICAgIi1pbnN0YWxsX25hbWUiLAorICAgICAgIkBycGF0aC8ke3RhcmdldF9u
YW1lfS5keWxpYiIsCisgICAgXQorICAgIHB1YmxpY19jb25maWdzID0gWyAiOnNoYXJlZF9saWJy
YXJ5X3B1YmxpY19jb25maWciIF0KKyAgfQorCisgIGNvbmZpZ3MgLT0gYW5nbGVfdW5kZWZpbmVf
Y29uZmlncwogICBjb25maWdzICs9IFsKLSAgICAiOmludGVybmFsX2NvbmZpZyIsCiAgICAgIjpj
b21taXRfaWRfY29uZmlnIiwKICAgICAiOmRlYnVnX2Fubm90YXRpb25zX2NvbmZpZyIsCisgICAg
IjpleHRyYV93YXJuaW5ncyIsCisgICAgIjppbnRlcm5hbF9jb25maWciLAogICAgICI6bGliQU5H
TEVfY29uZmlnIiwKLSAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29k
ZSIsCiAgIF0KIAogICBkZWZpbmVzID0gWyAiTElCRUdMX0lNUExFTUVOVEFUSU9OIiBdCkBAIC0z
NzUsMTIgKzUyNywxMiBAQAogCiBjb25maWcoImFuZ2xlX3V0aWxfY29uZmlnIikgewogICBpbmNs
dWRlX2RpcnMgPSBbICJ1dGlsIiBdCi0gIGlmIChpc19saW51eCkgeworICBpZiAoaXNfbGludXgg
JiYgdXNlX3gxMSkgewogICAgIGxpYnMgPSBbICJYMTEiIF0KICAgfQogfQogCi1zdGF0aWNfbGli
cmFyeSgiYW5nbGVfdXRpbCIpIHsKK3NoYXJlZF9saWJyYXJ5KCJhbmdsZV91dGlsIikgewogICBz
b3VyY2VzID0gcmViYXNlX3BhdGgodXRpbF9neXBpLnV0aWxfc291cmNlcywgIi4iLCAidXRpbCIp
CiAKICAgaWYgKGlzX3dpbikgewpAQCAtMzg5LDExICs1NDEsMTggQEAKIAogICBpZiAoaXNfbGlu
dXgpIHsKICAgICBzb3VyY2VzICs9IHJlYmFzZV9wYXRoKHV0aWxfZ3lwaS51dGlsX2xpbnV4X3Nv
dXJjZXMsICIuIiwgInV0aWwiKQotICAgIGxpYnMgPSBbICJydCIgXQorICAgIGxpYnMgPSBbCisg
ICAgICAicnQiLAorICAgICAgImRsIiwKKyAgICBdCiAgIH0KIAogICBpZiAoaXNfbWFjKSB7CiAg
ICAgc291cmNlcyArPSByZWJhc2VfcGF0aCh1dGlsX2d5cGkudXRpbF9vc3hfc291cmNlcywgIi4i
LCAidXRpbCIpCisgICAgbGlicyA9IFsKKyAgICAgICJBcHBLaXQuZnJhbWV3b3JrIiwKKyAgICAg
ICJRdWFydHpDb3JlLmZyYW1ld29yayIsCisgICAgXQogICB9CiAKICAgaWYgKHVzZV94MTEpIHsK
QEAgLTQwMCwxNyArNTU5LDQzIEBACiAgICAgc291cmNlcyArPSByZWJhc2VfcGF0aCh1dGlsX2d5
cGkudXRpbF94MTFfc291cmNlcywgIi4iLCAidXRpbCIpCiAgIH0KIAorICBpZiAoaXNfYW5kcm9p
ZCkgeworICAgICMgVG8gcHJldmVudCBsaW51eCBzb3VyY2VzIGZpbHRlcmluZyBvbiBhbmRyb2lk
CisgICAgc2V0X3NvdXJjZXNfYXNzaWdubWVudF9maWx0ZXIoW10pCisgICAgc291cmNlcyArPSBy
ZWJhc2VfcGF0aCh1dGlsX2d5cGkudXRpbF9saW51eF9zb3VyY2VzLCAiLiIsICJ1dGlsIikKKyAg
ICBzb3VyY2VzICs9IHJlYmFzZV9wYXRoKHV0aWxfZ3lwaS51dGlsX2FuZHJvaWRfc291cmNlcywg
Ii4iLCAidXRpbCIpCisgICAgbGlicyA9IFsKKyAgICAgICJhbmRyb2lkIiwKKyAgICAgICJsb2ci
LAorICAgIF0KKyAgfQorCisgIGlmICh1c2Vfb3pvbmUpIHsKKyAgICBzb3VyY2VzICs9IHJlYmFz
ZV9wYXRoKHV0aWxfZ3lwaS51dGlsX296b25lX3NvdXJjZXMsICIuIiwgInV0aWwiKQorICB9CisK
ICAgZGVmaW5lcyA9IFsKICAgICAiR0xfR0xFWFRfUFJPVE9UWVBFUyIsCiAgICAgIkVHTF9FR0xF
WFRfUFJPVE9UWVBFUyIsCisgICAgIkxJQkFOR0xFX1VUSUxfSU1QTEVNRU5UQVRJT04iLAogICBd
CiAKLSAgY29uZmlncyArPSBbICI6ZGVidWdfYW5ub3RhdGlvbnNfY29uZmlnIiBdCisgIGNvbmZp
Z3MgKz0gWworICAgICI6ZGVidWdfYW5ub3RhdGlvbnNfY29uZmlnIiwKKyAgICAiOmV4dHJhX3dh
cm5pbmdzIiwKKyAgXQogCiAgIHB1YmxpY19jb25maWdzID0gWwogICAgICI6YW5nbGVfdXRpbF9j
b25maWciLAogICAgICI6aW50ZXJuYWxfY29uZmlnIiwKICAgXQorICBpZiAoaXNfbWFjICYmICFp
c19jb21wb25lbnRfYnVpbGQpIHsKKyAgICBsZGZsYWdzID0gWworICAgICAgIi1pbnN0YWxsX25h
bWUiLAorICAgICAgIkBycGF0aC9saWIke3RhcmdldF9uYW1lfS5keWxpYiIsCisgICAgXQorICAg
IHB1YmxpY19jb25maWdzICs9IFsgIjpzaGFyZWRfbGlicmFyeV9wdWJsaWNfY29uZmlnIiBdCisg
IH0KIAogICBkZXBzID0gWwogICAgICI6YW5nbGVfY29tbW9uIiwKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYg
QEAKIGluY2x1ZGVfZGlyZWN0b3JpZXMoCiAgICAgc3JjCisgICAgc3JjL2NvbW1vbi90aGlyZF9w
YXJ0eS9udW1lcmljcwogICAgIGluY2x1ZGUKICAgICBpbmNsdWRlL0tIUgogKQpAQCAtMjcsNiAr
MjgsNyBAQAogc2V0X3Byb3BlcnR5KFRBUkdFVCBsaWJFR0wgUFJPUEVSVFkgQ09NUElMRV9ERUZJ
TklUSU9OUwogICAgIEFOR0xFX1dFQktJVF9XSU4KICAgICBFR0xBUEk9CisgICAgX19TVERDX0NP
TlNUQU5UX01BQ1JPUwogKQogCiBhZGRfbGlicmFyeShsaWJHTEVTdjIgU0hBUkVECkBAIC0zNiw2
ICszOCw3IEBACiAgICAgc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18yXzBfZXh0LmNw
cAogICAgIHNyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfM18wLmNwcAogICAgIHNyYy9s
aWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfM18wX2V4dC5jcHAKKyAgICBzcmMvbGliR0xFU3Yy
L2VudHJ5X3BvaW50c19nbGVzXzNfMS5jcHAKICAgICBzcmMvbGliR0xFU3YyL2dsb2JhbF9zdGF0
ZS5jcHAKICAgICBzcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5jcHAKICAgICBzcmMvbGliR0xFU3Yy
L2xpYkdMRVN2Mi5kZWYKQEAgLTQ2LDkgKzQ5LDUwIEBACiAgICAgQU5HTEVfV0VCS0lUX1dJTgog
ICAgIEdMX0FQSUNBTEw9CiAgICAgTElCR0xFU1YyX0lNUExFTUVOVEFUSU9OCisgICAgX19TVERD
X0NPTlNUQU5UX01BQ1JPUworICAgIF9fU1REQ19MSU1JVF9NQUNST1MKICkKIAogYWRkX2xpYnJh
cnkobGliQU5HTEUgU1RBVElDCisgICAgc3JjL2NvbW1vbi9GbG9hdDE2VG9GbG9hdDMyLmNwcAor
ICAgIHNyYy9jb21tb24vc3RyaW5nX3V0aWxzLmNwcAorICAgIHNyYy9jb21waWxlci90cmFuc2xh
dG9yL0FkZEFuZFRydWVUb0xvb3BDb25kaXRpb24uY3BwCisgICAgc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvQWRkRGVmYXVsdFJldHVyblN0YXRlbWVudHMuY3BwCisgICAgc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvQnJlYWtWYXJpYWJsZUFsaWFzaW5nSW5Jbm5lckxvb3BzLmNwcAorICAgIHNyYy9j
b21waWxlci90cmFuc2xhdG9yL0VtdWxhdGVHTEZyYWdDb2xvckJyb2FkY2FzdC5jcHAKKyAgICBz
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9FeHBhbmRJbnRlZ2VyUG93RXhwcmVzc2lvbnMuY3BwCisg
ICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQuY3BwCisg
ICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckludC5j
cHAKKyAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TaW1wbGlmeUxvb3BDb25kaXRpb25zLmNw
cAorICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1NwbGl0U2VxdWVuY2VPcGVyYXRvci5jcHAK
KyAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UZXh0dXJlRnVuY3Rpb25ITFNMLmNwcAorICAg
IHNyYy9jb21waWxlci90cmFuc2xhdG9yL1VzZUludGVyZmFjZUJsb2NrRmllbGRzLmNwcAorICAg
IHNyYy9pbWFnZV91dGlsL2NvcHlpbWFnZS5jcHAKKyAgICBzcmMvaW1hZ2VfdXRpbC9pbWFnZWZv
cm1hdHMuY3BwCisgICAgc3JjL2ltYWdlX3V0aWwvbG9hZGltYWdlX2V0Yy5jcHAKKyAgICBzcmMv
aW1hZ2VfdXRpbC9sb2FkaW1hZ2UuY3BwCisgICAgc3JjL2xpYkFOR0xFL2Zvcm1hdF9tYXBfYXV0
b2dlbi5jcHAKKyAgICBzcmMvbGliQU5HTEUvZm9ybWF0X21hcF9hdXRvZ2VuLmNwcAorICAgIHNy
Yy9saWJBTkdMRS9mb3JtYXR1dGlscy5jcHAKKyAgICBzcmMvbGliQU5HTEUvSGFuZGxlUmFuZ2VB
bGxvY2F0b3IuY3BwCisgICAgc3JjL2xpYkFOR0xFL1BhdGguY3BwCisgICAgc3JjL2xpYkFOR0xF
L3F1ZXJ5dXRpbHMuY3BwCisgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0NvbnRleHRJbXBsLmNw
cAorICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQ29udGV4dDExLmNwcAorICAg
IHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9mb3JtYXRfbWFwX2F1dG9nZW4u
Y3BwCisgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdHJlYW1Qcm9kdWNlck5W
MTIuY3BwCisgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1h
dF90YWJsZS5jcHAKKyAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1RleHR1cmVT
dG9yYWdlMTEuY3BwCisgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9UcmFuc2Zv
cm1GZWVkYmFjazExLmNwcAorICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lu
MzIvTmF0aXZlV2luZG93MTFXaW4zMi5jcHAKKyAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDkvQ29udGV4dDkuY3BwCisgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L05h
dGl2ZVdpbmRvdzkuY3BwCisgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9OYXRpdmVXaW5k
b3dEM0QuY3BwCisgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdF9hdXRvZ2VuLmNwcAor
ICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9Gb3JtYXQuY3BwCisgICAgc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2xvYWRfZnVuY3Rpb25zX3RhYmxlX2F1dG9nZW4uY3BwCisgICAgc3JjL2xpYkFOR0xF
L3NpZ25hbF91dGlscy5jcHAKKyAgICBzcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMzEuY3BwCiAg
ICAgc3JjL2NvbW1vbi9hbmdsZXV0aWxzLmNwcAogICAgIHNyYy9jb21tb24vZGVidWcuY3BwCiAg
ICAgc3JjL2NvbW1vbi9ldmVudF90cmFjZXIuY3BwCkBAIC02Nyw1MiArMTExLDUyIEBACiAgICAg
c3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3IuY3BwCiAgICAgc3JjL2NvbXBp
bGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5jcHAKICAgICBzcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29y
L1Rva2VuaXplci5jcHAKLSAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9CdWlsdEluRnVuY3Rp
b25FbXVsYXRvckdMU0wuY3BwCi0gICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRXh0ZW5zaW9u
R0xTTC5jcHAKLSAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRFU1NMLmNwcAotICAg
IHNyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dEdMU0wuY3BwCi0gICAgc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvT3V0cHV0R0xTTEJhc2UuY3BwCi0gICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvUmVjb3JkQ29uc3RhbnRQcmVjaXNpb24uY3BwCi0gICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvU2VhcmNoU3ltYm9sLmNwcAotICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0
b3JFU1NMLmNwcAotICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JHTFNMLmNw
cAotICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1ZlcnNpb25HTFNMLmNwcAorICAgIHNyYy9j
b21waWxlci90cmFuc2xhdG9yL0FycmF5UmV0dXJuVmFsdWVUb091dFBhcmFtZXRlci5jcHAKICAg
ICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9BU1RNZXRhZGF0YUhMU0wuY3BwCisgICAgc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvYmxvY2tsYXlvdXQuY3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvYmxvY2tsYXlvdXRITFNMLmNwcAorICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL0J1
aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcAorICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL0J1
aWx0SW5GdW5jdGlvbkVtdWxhdG9yR0xTTC5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvckhMU0wuY3BwCi0gICAgc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvT3V0cHV0SExTTC5jcHAKLSAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TZWFyY2hT
eW1ib2wuY3BwCi0gICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU3RydWN0dXJlSExTTC5jcHAK
LSAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9ySExTTC5jcHAKLSAgICBzcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9Vbmlmb3JtSExTTC5jcHAKLSAgICBzcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9VdGlsc0hMU0wuY3BwCi0gICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQXJyYXlS
ZXR1cm5WYWx1ZVRvT3V0UGFyYW1ldGVyLmNwcAotICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9y
L2Jsb2NrbGF5b3V0LmNwcAotICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL0J1aWx0SW5GdW5j
dGlvbkVtdWxhdG9yLmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL0NhY2hlLmNwcAog
ICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL0NhbGxEQUcuY3BwCiAgICAgc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvQ29kZUdlbi5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db21w
aWxlci5jcHAKKyAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db25zdGFudFVuaW9uLmNwcAog
ICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL0RlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzLmNwcAor
ICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaC5jcHAK
KyAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhCdWls
ZGVyLmNwcAorICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lH
cmFwaE91dHB1dC5jcHAKKyAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9kZXBncmFwaC9EZXBl
bmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9EaWFn
bm9zdGljcy5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9EaXJlY3RpdmVIYW5kbGVy
LmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL0VtdWxhdGVQcmVjaXNpb24uY3BwCisg
ICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRXh0ZW5zaW9uR0xTTC5jcHAKICAgICBzcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9GbGFnU3RkMTQwU3RydWN0cy5jcHAKICAgICBzcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9Gb3JMb29wVW5yb2xsLmNwcAorICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9y
L2dsc2xhbmdfbGV4LmNwcAorICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL2dsc2xhbmdfdGFi
LmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL0luZm9TaW5rLmNwcAogICAgIHNyYy9j
b21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemUuY3BwCi0gICAgc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvSW5pdGlhbGl6ZVZhcmlhYmxlcy5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9Jbml0aWFsaXplRGxsLmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxp
emVQYXJzZUNvbnRleHQuY3BwCisgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6
ZVZhcmlhYmxlcy5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1lZGlhdGUu
Y3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5jcHAKKyAgICBzcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXIuY3BwCiAgICAgc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvaW50ZXJtT3V0LmNwcAogICAgIHNyYy9jb21waWxlci90cmFu
c2xhdG9yL0ludGVybVRyYXZlcnNlLmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL0xv
b3BJbmZvLmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL09wZXJhdG9yLmNwcAorICAg
IHNyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dEVTU0wuY3BwCisgICAgc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvT3V0cHV0R0xTTC5jcHAKKyAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9P
dXRwdXRHTFNMQmFzZS5jcHAKKyAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRITFNM
LmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1BhcnNlQ29udGV4dC5jcHAKICAgICBz
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9Qb29sQWxsb2MuY3BwCiAgICAgc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvUHJ1bmVFbXB0eURlY2xhcmF0aW9ucy5jcHAKKyAgICBzcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9RdWFsaWZpZXJUeXBlcy5jcHAKKyAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9S
ZWNvcmRDb25zdGFudFByZWNpc2lvbi5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9S
ZWdlbmVyYXRlU3RydWN0TmFtZXMuY3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVt
b3ZlRHluYW1pY0luZGV4aW5nLmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1JlbW92
ZVBvdy5jcHAKQEAgLTEyMSwxNiArMTY1LDI2IEBACiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvUmV3cml0ZUVsc2VCbG9ja3MuY3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2Nh
bGFyaXplVmVjQW5kTWF0Q29uc3RydWN0b3JBcmdzLmNwcAogICAgIHNyYy9jb21waWxlci90cmFu
c2xhdG9yL1NlYXJjaFN5bWJvbC5jcHAKKyAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TZWFy
Y2hTeW1ib2wuY3BwCisgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VhcmNoU3ltYm9sLmNw
cAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1NlcGFyYXRlQXJyYXlJbml0aWFsaXphdGlv
bi5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TZXBhcmF0ZURlY2xhcmF0aW9ucy5j
cHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TZXBhcmF0ZUV4cHJlc3Npb25zUmV0dXJu
aW5nQXJyYXlzLmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1NoYWRlckxhbmcuY3Bw
CiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2hhZGVyVmFycy5jcHAKKyAgICBzcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9TdHJ1Y3R1cmVITFNMLmNwcAogICAgIHNyYy9jb21waWxlci90cmFu
c2xhdG9yL1N5bWJvbFRhYmxlLmNwcAorICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL3RpbWlu
Zy9SZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nLmNwcAorICAgIHNyYy9jb21waWxlci90cmFu
c2xhdG9yL3RpbWluZy9SZXN0cmljdFZlcnRleFNoYWRlclRpbWluZy5jcHAKKyAgICBzcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yRVNTTC5jcHAKKyAgICBzcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9UcmFuc2xhdG9yR0xTTC5jcHAKKyAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9U
cmFuc2xhdG9ySExTTC5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UeXBlcy5jcHAK
ICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9VbmZvbGRTaG9ydENpcmN1aXRBU1QuY3BwCiAg
ICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVW5mb2xkU2hvcnRDaXJjdWl0VG9JZi5jcHAKKyAg
ICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Vbmlmb3JtSExTTC5jcHAKICAgICBzcmMvY29tcGls
ZXIvdHJhbnNsYXRvci91dGlsLmNwcAorICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1V0aWxz
SExTTC5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZUdsb2JhbEluaXRp
YWxpemVyLmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlTGltaXRhdGlv
bnMuY3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVNYXhQYXJhbWV0ZXJz
LmNwcApAQCAtMTM4LDE1ICsxOTIsOCBAQAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1Zh
bGlkYXRlU3dpdGNoLmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhcmlhYmxlSW5m
by5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYXJpYWJsZVBhY2tlci5jcHAKLSAg
ICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nX2xleC5jcHAKLSAgICBzcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9nbHNsYW5nX3RhYi5jcHAKLSAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGguY3BwCi0gICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5jcHAKLSAgICBzcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhPdXRwdXQuY3BwCi0gICAgc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoVHJhdmVyc2UuY3BwCi0g
ICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdGltaW5nL1Jlc3RyaWN0RnJhZ21lbnRTaGFkZXJU
aW1pbmcuY3BwCi0gICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdGltaW5nL1Jlc3RyaWN0VmVy
dGV4U2hhZGVyVGltaW5nLmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1ZlcnNpb25H
TFNMLmNwcAorICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1ZlcnNpb25HTFNMLmNwcAogICAg
IHNyYy9saWJBTkdMRS9hbmdsZXR5cGVzLmNwcAogICAgIHNyYy9saWJBTkdMRS9BdHRyaWJ1dGVN
YXAuY3BwCiAgICAgc3JjL2xpYkFOR0xFL0J1ZmZlci5jcHAKQEAgLTE1NCw2ICsyMDEsNyBAQAog
ICAgIHNyYy9saWJBTkdMRS9Db21waWxlci5jcHAKICAgICBzcmMvbGliQU5HTEUvQ29uZmlnLmNw
cAogICAgIHNyYy9saWJBTkdMRS9Db250ZXh0LmNwcAorICAgIHNyYy9saWJBTkdMRS9Db250ZXh0
U3RhdGUuY3BwCiAgICAgc3JjL2xpYkFOR0xFL0RhdGEuY3BwCiAgICAgc3JjL2xpYkFOR0xFL0Rl
YnVnLmNwcAogICAgIHNyYy9saWJBTkdMRS9EZXZpY2UuY3BwCkBAIC0xNjUsMjQgKzIxMywyMiBA
QAogICAgIHNyYy9saWJBTkdMRS9GcmFtZWJ1ZmZlci5jcHAKICAgICBzcmMvbGliQU5HTEUvRnJh
bWVidWZmZXJBdHRhY2htZW50LmNwcAogICAgIHNyYy9saWJBTkdMRS9IYW5kbGVBbGxvY2F0b3Iu
Y3BwCi0gICAgc3JjL2xpYkFOR0xFL0luZGV4UmFuZ2VDYWNoZS5jcHAKICAgICBzcmMvbGliQU5H
TEUvSW1hZ2UuY3BwCiAgICAgc3JjL2xpYkFOR0xFL0ltYWdlSW5kZXguY3BwCisgICAgc3JjL2xp
YkFOR0xFL0luZGV4UmFuZ2VDYWNoZS5jcHAKICAgICBzcmMvbGliQU5HTEUvUGxhdGZvcm0uY3Bw
CiAgICAgc3JjL2xpYkFOR0xFL1Byb2dyYW0uY3BwCiAgICAgc3JjL2xpYkFOR0xFL1F1ZXJ5LmNw
cAogICAgIHNyYy9saWJBTkdMRS9xdWVyeWNvbnZlcnNpb25zLmNwcAogICAgIHNyYy9saWJBTkdM
RS9SZW5kZXJidWZmZXIuY3BwCi0gICAgc3JjL2xpYkFOR0xFL1N0cmVhbS5jcHAKICAgICBzcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL0J1ZmZlckQzRC5jcHAKICAgICBzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL0NvbXBpbGVyRDNELmNwcAotICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
RUdMSW1hZ2VEM0QuY3BwCiAgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9jb3B5aW1hZ2Uu
Y3BwCi0gICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9sb2FkaW1hZ2VfZXRjLmNwcAogICAg
IHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQmxpdDExLmNwcAogICAgIHNyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQnVmZmVyMTEuY3BwCiAgICAgc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9DbGVhcjExLmNwcAogICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvRGVidWdBbm5vdGF0b3IxMS5jcHAKKyAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL2R4Z2lfc3VwcG9ydF90YWJsZS5jcHAKICAgICBzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL0ZlbmNlMTEuY3BwCiAgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9mb3JtYXR1dGlsczExLmNwcAogICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvRnJhbWVidWZmZXIxMS5jcHAKQEAgLTE4OSwyMyArMjM1LDIyIEBACiAgICAgc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9JbWFnZTExLmNwcAogICAgIHNyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvSW5kZXhCdWZmZXIxMS5jcHAKICAgICBzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL0lucHV0TGF5b3V0Q2FjaGUuY3BwCisgICAgc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9sb2FkX2Z1bmN0aW9uc190YWJsZV9hdXRvZ2VuLmNwcAogICAgIHNyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUGl4ZWxUcmFuc2ZlcjExLmNwcAogICAgIHNyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUXVlcnkxMS5jcHAKKyAgICBzcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFfdXRpbHMuY3BwCiAgICAgc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmNwcAotICAgIHNyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvcmVuZGVyZXIxMV91dGlscy5jcHAKICAgICBzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL1JlbmRlclN0YXRlQ2FjaGUuY3BwCiAgICAgc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJUYXJnZXQxMS5jcHAKKyAgICBzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL1NoYWRlckV4ZWN1dGFibGUxMS5jcHAKICAgICBzcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL1N0YXRlTWFuYWdlcjExLmNwcAogICAgIHNyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvU3RyZWFtMTEuY3BwCi0gICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9TaGFkZXJFeGVjdXRhYmxlMTEuY3BwCiAgICAgc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9Td2FwQ2hhaW4xMS5jcHAKKyAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlX2F1dG9nZW4uY3BwCiAgICAgc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9UZXh0dXJlU3RvcmFnZTExLmNwcAogICAgIHNyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVHJpbTExLmNwcAogICAgIHNyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvVmVydGV4QXJyYXkxMS5jcHAKICAgICBzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL1ZlcnRleEJ1ZmZlcjExLmNwcAotICAgIHNyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvZHhnaV9zdXBwb3J0X3RhYmxlLmNwcAotICAgIHNyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvbG9hZF9mdW5jdGlvbnNfdGFibGVfYXV0b2dlbi5jcHAKLSAgICBzcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlX2F1dG9nZW4u
Y3BwCiAgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW4zMi9OYXRpdmVXaW5k
b3cuY3BwCiAgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0JsaXQ5LmNwcAogICAg
IHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9CdWZmZXI5LmNwcApAQCAtMjE2LDggKzI2
MSw4IEBACiAgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0ltYWdlOS5jcHAKICAg
ICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvSW5kZXhCdWZmZXI5LmNwcAogICAgIHNy
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9RdWVyeTkuY3BwCisgICAgc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2Q5L3JlbmRlcmVyOV91dGlscy5jcHAKICAgICBzcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDkvUmVuZGVyZXI5LmNwcAotICAgIHNyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkOS9yZW5kZXJlcjlfdXRpbHMuY3BwCiAgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2Q5L1JlbmRlclRhcmdldDkuY3BwCiAgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2Q5L1NoYWRlckV4ZWN1dGFibGU5LmNwcAogICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkOS9TdGF0ZU1hbmFnZXI5LmNwcApAQCAtMjI4LDYgKzI3Myw3IEBACiAgICAgc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9EZXZpY2VEM0QuY3BwCiAgICAgc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9EaXNwbGF5RDNELmNwcAogICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRHlu
YW1pY0hMU0wuY3BwCisgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9FR0xJbWFnZUQzRC5j
cHAKICAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Zvcm1hdHV0aWxzRDNELmNwcAogICAg
IHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRnJhbWVidWZmZXJEM0QuY3BwCiAgICAgc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9ITFNMQ29tcGlsZXIuY3BwCkBAIC0yMzQsNiArMjgwLDcgQEAK
ICAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0ltYWdlRDNELmNwcAogICAgIHNyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvSW5kZXhCdWZmZXIuY3BwCiAgICAgc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9JbmRleERhdGFNYW5hZ2VyLmNwcAorICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvbG9hZGltYWdlX2V0Yy5jcHAKICAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2xvYWRp
bWFnZS5jcHAKICAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2xvYWRpbWFnZVNTRTIuY3Bw
CiAgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9Qcm9ncmFtRDNELmNwcApAQCAtMjUwLDEy
ICsyOTcsMTUgQEAKICAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1ZlcnRleERhdGFNYW5h
Z2VyLmNwcAogICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9EZXZpY2VJbXBsLmNwcAogICAgIHNy
Yy9saWJBTkdMRS9yZW5kZXJlci9EaXNwbGF5SW1wbC5jcHAKKyAgICBzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvcmVuZGVyZXJfdXRpbHMuY3BwCiAgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1JlbmRl
cmVyLmNwcAogICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9TdXJmYWNlSW1wbC5jcHAKKyAgICBz
cmMvbGliQU5HTEUvcmVuZGVyZXIvVGV4dHVyZUltcGwuY3BwCiAgICAgc3JjL2xpYkFOR0xFL1Jl
c291cmNlTWFuYWdlci5jcHAKICAgICBzcmMvbGliQU5HTEUvU2FtcGxlci5jcHAKICAgICBzcmMv
bGliQU5HTEUvU2hhZGVyLmNwcAogICAgIHNyYy9saWJBTkdMRS9TdGF0ZS5jcHAKKyAgICBzcmMv
bGliQU5HTEUvU3RyZWFtLmNwcAogICAgIHNyYy9saWJBTkdMRS9TdXJmYWNlLmNwcAogICAgIHNy
Yy9saWJBTkdMRS9UZXh0dXJlLmNwcAogICAgIHNyYy9saWJBTkdMRS9UcmFuc2Zvcm1GZWVkYmFj
ay5jcHAKQEAgLTI4Miw2ICszMzIsNyBAQAogICAgIEFOR0xFX1dFQktJVF9XSU4KICAgICBMSUJB
TkdMRV9JTVBMRU1FTlRBVElPTgogICAgIE5PTUlOTUFYCisgICAgX19TVERDX0NPTlNUQU5UX01B
Q1JPUwogICAgIF9fU1REQ19MSU1JVF9NQUNST1MKICkKIApJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ09OVFJJQlVUT1JTCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL0NPTlRSSUJVVE9SUwkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvQ09OVFJJQlVUT1JTCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCwxMCBAQAogIEFu
ZHkgQ2hlbgogIEpvc2ggVHJpcGxldHQKICBTdWRhcnNhbmEgTmFnaW5lbmkKKyBKaWFqaWEgUWlu
CisgSmlhd2VpIFNoYW8KKyBKaWUgQ2hlbgorIFFpYW5rdW4gTWlhbwogCiBLbGFyw6RsdmRhbGVu
cyBEYXRha29uc3VsdCBBQgogIE1pbGlhbiBXb2xmZgpAQCAtNzAsNiArNzQsNyBAQAogCiBNb3pp
bGxhIENvcnAuCiAgRWhzYW4gQWtoZ2FyaQorIEVkd2luIEZsb3JlcwogIEplZmYgR2lsYmVydAog
IE1pa2UgSG9tbWV5CiAgQmVub2l0IEphY29iCkBAIC04Niw2ICs5MSw3IEBACiBUaWJvciBkZW4g
T3VkZW4KIFLDqWdpcyBGw6luw6lvbgogU2ViYXN0aWFuIEJlcmdzdGVpbgorSmFtZXMgUm9zcy1H
b3dhbgogCiBNaWNyb3NvZnQgQ29ycG9yYXRpb24KICBDb29wZXIgUGFydGluCkBAIC0xMDIsMTAg
KzEwOCwxMyBAQAogIEFydW4gUGF0b2xlCiAgUWluZ3FpbmcgRGVuZwogIEtpbW1vIEtpbm51bmVu
CisgU2FtaSBWw6Rpc8OkbmVuCisgTWFydGluIFJhZGV2CiAKIE9wZXJhIFNvZnR3YXJlIEFTQQog
IERhbmllbCBCcmF0ZWxsCiAgVG9tYXN6IE1vbml1c3prbworIERhdmlkIExhbmRlbGwKIAogQWR2
YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgogIFJ1c3MgTGluZApJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL0NoYW5nZUxvZwkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMTAtMjcg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBV
cGRhdGUgQU5HTEUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NDEwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVwZGF0ZWQgdG8gZjAxNzMxNTMwZTdmNzU0ZTVlYmFmMzJkMDBmM2UyM2I2MjM3NjQyNAor
ICAgICAgICBEaWZmZXJlbmNlcyBiZXR3ZWVuIHVwc3RyZWFtIEFOR0xFIGFuZCBXZWJLaXQncyBj
b3B5IG9mIEFOR0xFIGFyZSBpbiBjaGFuZ2VzLmRpZmYKKwogMjAxNi0xMC0yNCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSB1bnVz
ZWQgQU5HTEUudmN4cHJvaiBhZnRlciBzd2l0Y2hpbmcgdG8gQ01ha2Ugb24gV2luZG93cwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQ29uZmlndXJhdGlvbnMvQU5HTEUueGNjb25maWcK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQ29uZmlndXJhdGlvbnMvQU5H
TEUueGNjb25maWcJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L0NvbmZpZ3VyYXRpb25zL0FOR0xFLnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC01LDYgKzUs
NiBAQAogQ0xBTkdfV0FSTl9JTlRfQ09OVkVSU0lPTiA9IFlFUzsKIENPTUJJTkVfSElEUElfSU1B
R0VTID0gTk87CiBFTkFCTEVfU1RSSUNUX09CSkNfTVNHU0VORCA9IFlFUzsKLUhFQURFUl9TRUFS
Q0hfUEFUSFMgPSBpbmNsdWRlIHNyYzsKK0hFQURFUl9TRUFSQ0hfUEFUSFMgPSBpbmNsdWRlIHNy
YyBzcmMvY29tbW9uL3RoaXJkX3BhcnR5L251bWVyaWNzOwogSU5TVEFMTF9QQVRIID0gL3Vzci9s
b2NhbC9saWI7CiBQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCA9IC91c3IvbG9jYWwvaW5jbHVk
ZS9BTkdMRTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0RFUFMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvREVQUwkocmV2aXNpb24gMjA4MDIxKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvREVQUwkod29ya2luZyBjb3B5KQpAQCAtMTYsMTAgKzE2LDEw
IEBACiAKICAgIyBDaGVycnkgaXMgYSBkRVFQIG1hbmFnZW1lbnQgR1VJIHdyaXR0ZW4gaW4gR28u
IFdlIHVzZSBpdCBmb3Igdmlld2luZyB0ZXN0IHJlc3VsdHMuCiAgICJ0aGlyZF9wYXJ0eS9jaGVy
cnkiOgotICAgICAgImh0dHBzOi8vYW5kcm9pZC5nb29nbGVzb3VyY2UuY29tL3BsYXRmb3JtL2V4
dGVybmFsL2NoZXJyeUBhZjZjMDlmZTA1MTE1ZjBjY2E2MWFlMjNlZTg3MWJkYTI3Y2YxZmY1IiwK
KyAgICAgICJodHRwczovL2FuZHJvaWQuZ29vZ2xlc291cmNlLmNvbS9wbGF0Zm9ybS9leHRlcm5h
bC9jaGVycnlAZDJlMjZiNGQ4NjRlYzJhNjc1N2U3ZjExNzRlNDY0OTQ5Y2E1YmY3MyIsCiAKICAg
InRoaXJkX3BhcnR5L2RlcXAvc3JjIjoKLSAgICAgICJodHRwczovL2FuZHJvaWQuZ29vZ2xlc291
cmNlLmNvbS9wbGF0Zm9ybS9leHRlcm5hbC9kZXFwQGNjMGRlZDZjNzcyNjdiYmIxNGQyMWFhYzM1
OGZjNWQ5NjkwYzA3ZjgiLAorICAgICAgImh0dHBzOi8vYW5kcm9pZC5nb29nbGVzb3VyY2UuY29t
L3BsYXRmb3JtL2V4dGVybmFsL2RlcXBAZjRmM2Q4MDc5ZTdhMzdkNzY3NWFiOTM1ODNlNjQzOGQw
YmNhMGU1OCIsCiAKICAgInRoaXJkX3BhcnR5L2xpYnBuZyI6CiAgICAgICAiaHR0cHM6Ly9hbmRy
b2lkLmdvb2dsZXNvdXJjZS5jb20vcGxhdGZvcm0vZXh0ZXJuYWwvbGlicG5nQDA5NGUxODFlNzlh
M2Q2YzIzZmQwMDU2NzkwMjUwNThiN2RmMWFkNmMiLApAQCAtMjgsNyArMjgsNyBAQAogICAgICAg
VmFyKCdjaHJvbWl1bV9naXQnKSArICIvY2hyb21pdW0vc3JjL3RoaXJkX3BhcnR5L3psaWJAYWZk
OGM0NTkzYzAxMGMwNDU5MDJmNmMwNTAxNzE4ZjE4MjMwNjRhMyIsCiAKICAgImJ1aWxkdG9vbHMi
OgotICAgICAgVmFyKCdjaHJvbWl1bV9naXQnKSArICcvY2hyb21pdW0vYnVpbGR0b29scy5naXRA
MTI1ZDE1NzYwN2RlNGQ3Yzk1YmY4YjAyZGQ1ODBhYWUxNzk2MmYxOScsCisgICAgICBWYXIoJ2No
cm9taXVtX2dpdCcpICsgJy9jaHJvbWl1bS9idWlsZHRvb2xzLmdpdEAwNmU4MGEwZTE3MzE5ODY4
ZDRhOWIxM2Y5YmI2YTI0OGRjOGQ4YjIwJywKIH0KIAogaG9va3MgPSBbCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9SRUFETUUubWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvUkVBRE1FLm1kCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9SRUFETUUubWQJKHdvcmtpbmcgY29weSkKQEAgLTEsNDQgKzEsNzUgQEAKLSNBTkdM
RQotVGhlIGdvYWwgb2YgQU5HTEUgaXMgdG8gYWxsb3cgdXNlcnMgb2YgbXVsdGlwbGUgb3BlcmF0
aW5nIHN5c3RlbXMgdG8gc2VhbWxlc3NseSBydW4gV2ViR0wgYW5kIG90aGVyIE9wZW5HTCBFUyBj
b250ZW50IGJ5IHRyYW5zbGF0aW5nIE9wZW5HTCBFUyBBUEkgY2FsbHMgdG8gb25lIG9mIHRoZSBo
YXJkd2FyZS1zdXBwb3J0ZWQgQVBJcyBhdmFpbGFibGUgZm9yIHRoYXQgcGxhdGZvcm0uIEFOR0xF
IGN1cnJlbnRseSBwcm92aWRlcyB0cmFuc2xhdGlvbiBmcm9tIE9wZW5HTCBFUyAyLjAgdG8gZGVz
a3RvcCBPcGVuR0wsIERpcmVjdDNEIDksIGFuZCBEaXJlY3QzRCAxMS4gU3VwcG9ydCBmb3IgdHJh
bnNsYXRpb24gZnJvbSBPcGVuR0wgRVMgMy4wIHRvIGFsbCBvZiB0aGVzZSBBUElzIGlzIG5lYXJp
bmcgY29tcGxldGlvbiwgYW5kIGZ1dHVyZSBwbGFucyBpbmNsdWRlIGVuYWJsaW5nIHZhbGlkYXRl
ZCBFUy10by1FUyBzdXBwb3J0LgorIyBBTkdMRSAtIEFsbW9zdCBOYXRpdmUgR3JhcGhpY3MgTGF5
ZXIgRW5naW5lCiAKLXwgICAgICAgICAgICAgICAgfCAgRGlyZWN0M0QgOSAgIHwgICAgRGlyZWN0
M0QgMTEgICAgICB8ICAgIERlc2t0b3AgR0wgICAgICB8ICAgIEdMIEVTICB8Ci18LS0tLS0tLS0t
LS0tLS0tLXw6LS0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS0tLS0tLS06fDotLS0tLS0tLS0t
LS0tLS0tLS06fDotLS0tLS0tLS06fAotfCBPcGVuR0wgRVMgMi4wICB8ICAgIGNvbXBsZXRlICAg
fCAgICAgIGNvbXBsZXRlICAgICAgIHwgICAgIGNvbXBsZXRlICAgICAgIHwgICBwbGFubmVkIHwK
LXwgT3BlbkdMIEVTIDMuMCAgfCAgICAgICAgICAgICAgIHwgIG5lYXJpbmcgY29tcGxldGlvbiB8
IG5lYXJpbmcgY29tcGxldGlvbiB8ICAgcGxhbm5lZCB8Ci1bTGV2ZWwgb2YgT3BlbkdMIEVTIHN1
cHBvcnQgdmlhIGJhY2tpbmcgcmVuZGVyZXJzXQorVGhlIGdvYWwgb2YgQU5HTEUgaXMgdG8gYWxs
b3cgdXNlcnMgb2YgbXVsdGlwbGUgb3BlcmF0aW5nIHN5c3RlbXMgdG8gc2VhbWxlc3NseSBydW4g
V2ViR0wgYW5kIG90aGVyCitPcGVuR0wgRVMgY29udGVudCBieSB0cmFuc2xhdGluZyBPcGVuR0wg
RVMgQVBJIGNhbGxzIHRvIG9uZSBvZiB0aGUgaGFyZHdhcmUtc3VwcG9ydGVkIEFQSXMgYXZhaWxh
YmxlCitmb3IgdGhhdCBwbGF0Zm9ybS4gQU5HTEUgY3VycmVudGx5IHByb3ZpZGVzIHRyYW5zbGF0
aW9uIGZyb20gT3BlbkdMIEVTIDIuMCBhbmQgMy4wIHRvIGRlc2t0b3AKK09wZW5HTCwgT3BlbkdM
IEVTLCBEaXJlY3QzRCA5LCBhbmQgRGlyZWN0M0QgMTEuIFN1cHBvcnQgZm9yIHRyYW5zbGF0aW9u
IGZyb20gT3BlbkdMIEVTIHRvIFZ1bGthbiBpcwordW5kZXJ3YXksIGFuZCBmdXR1cmUgcGxhbnMg
aW5jbHVkZSBjb21wdXRlIHNoYWRlciBzdXBwb3J0IChFUyAzLjEpIGFuZCBNYWNPUyBzdXBwb3J0
LgogCisjIyMgTGV2ZWwgb2YgT3BlbkdMIEVTIHN1cHBvcnQgdmlhIGJhY2tpbmcgcmVuZGVyZXJz
CiAKLXwgICAgICAgICAgICAgfCAgICBEaXJlY3QzRCA5ICB8ICAgRGlyZWN0M0QgMTEgIHwgICBE
ZXNrdG9wIEdMICB8Ci18LS0tLS0tLS0tLS0tOnw6LS0tLS0tLS0tLS0tLS06fDotLS0tLS0tLS0t
LS0tLTp8Oi0tLS0tLS0tLS0tLS06fAotfCBXaW5kb3dzICAgICB8ICAgICAgICAqICAgICAgIHwg
ICAgICAgICogICAgICAgfCAgICAgICAqICAgICAgIHwKLXwgTGludXggICAgICAgfCAgICAgICAg
ICAgICAgICB8ICAgICAgICAgICAgICAgIHwgICAgICAgKiAgICAgICB8Ci18IE1hYyBPUyBYICAg
IHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8ICAgaW4gcHJvZ3Jlc3MgfAotW1Bs
YXRmb3JtIHN1cHBvcnQgdmlhIGJhY2tpbmcgcmVuZGVyZXJzXQorfCAgICAgICAgICAgICAgICB8
ICBEaXJlY3QzRCA5ICAgfCAgRGlyZWN0M0QgMTEgICAgIHwgICBEZXNrdG9wIEdMICAgfCAgICBH
TCBFUyAgICAgIHwgICAgVnVsa2FuICAgICB8Cit8LS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0t
LS0tLTp8Oi0tLS0tLS0tLS0tLS0tLS06fDotLS0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS06
fDotLS0tLS0tLS0tLS0tOnwKK3wgT3BlbkdMIEVTIDIuMCAgfCAgICBjb21wbGV0ZSAgIHwgICAg
Y29tcGxldGUgICAgICB8ICAgIGNvbXBsZXRlICAgIHwgICBjb21wbGV0ZSAgICB8ICBpbiBwcm9n
cmVzcyAgfAorfCBPcGVuR0wgRVMgMy4wICB8ICAgICAgICAgICAgICAgfCAgICBjb21wbGV0ZSAg
ICAgIHwgICAgY29tcGxldGUgICAgfCAgaW4gcHJvZ3Jlc3MgIHwgIG5vdCBzdGFydGVkICB8Cit8
IE9wZW5HTCBFUyAzLjEgIHwgICAgICAgICAgICAgICB8ICAgbm90IHN0YXJ0ZWQgICAgfCAgIGlu
IHByb2dyZXNzICB8ICBpbiBwcm9ncmVzcyAgfCAgbm90IHN0YXJ0ZWQgIHwKIAotQU5HTEUgdjEu
MC43NzIgd2FzIGNlcnRpZmllZCBjb21wbGlhbnQgYnkgcGFzc2luZyB0aGUgRVMgMi4wLjMgY29u
Zm9ybWFuY2UgdGVzdHMgaW4gT2N0b2JlciAyMDExLiBBTkdMRSBhbHNvIHByb3ZpZGVzIGFuIGlt
cGxlbWVudGF0aW9uIG9mIHRoZSBFR0wgMS40IHNwZWNpZmljYXRpb24uCisjIyMgUGxhdGZvcm0g
c3VwcG9ydCB2aWEgYmFja2luZyByZW5kZXJlcnMKIAotQU5HTEUgaXMgdXNlZCBhcyB0aGUgZGVm
YXVsdCBXZWJHTCBiYWNrZW5kIGZvciBib3RoIEdvb2dsZSBDaHJvbWUgYW5kIE1vemlsbGEgRmly
ZWZveCBvbiBXaW5kb3dzIHBsYXRmb3Jtcy4gQ2hyb21lIHVzZXMgQU5HTEUgZm9yIGFsbCBncmFw
aGljcyByZW5kZXJpbmcgb24gV2luZG93cywgaW5jbHVkaW5nIHRoZSBhY2NlbGVyYXRlZCBDYW52
YXMyRCBpbXBsZW1lbnRhdGlvbiBhbmQgdGhlIE5hdGl2ZSBDbGllbnQgc2FuZGJveCBlbnZpcm9u
bWVudC4KK3wgICAgICAgICAgICAgfCAgICBEaXJlY3QzRCA5ICB8ICAgRGlyZWN0M0QgMTEgIHwg
ICBEZXNrdG9wIEdMICB8ICAgIEdMIEVTICAgIHwgICBWdWxrYW4gICAgfAorfC0tLS0tLS0tLS0t
LTp8Oi0tLS0tLS0tLS0tLS0tOnw6LS0tLS0tLS0tLS0tLS06fDotLS0tLS0tLS0tLS0tOnw6LS0t
LS0tLS0tLS06fDotLS0tLS0tLS0tLTp8Cit8IFdpbmRvd3MgICAgIHwgICAgY29tcGxldGUgICAg
fCAgICBjb21wbGV0ZSAgICB8ICAgY29tcGxldGUgICAgfCAgIGNvbXBsZXRlICB8IGluIHByb2dy
ZXNzIHwKK3wgTGludXggICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwg
ICBjb21wbGV0ZSAgICB8ICAgICAgICAgICAgIHwgICBwbGFubmVkICAgfAorfCBNYWMgT1MgWCAg
ICB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCAgIGluIHByb2dyZXNzIHwgICAg
ICAgICAgICAgfCAgICAgICAgICAgICB8Cit8IENocm9tZSBPUyAgIHwgICAgICAgICAgICAgICAg
fCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgIGNvbXBsZXRlICB8ICAgcGxhbm5l
ZCAgIHwKK3wgQW5kcm9pZCAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwg
ICAgICAgICAgICAgICB8ICAgY29tcGxldGUgIHwgICBwbGFubmVkICAgfAogCi1Qb3J0aW9ucyBv
ZiB0aGUgQU5HTEUgc2hhZGVyIGNvbXBpbGVyIGFyZSB1c2VkIGFzIGEgc2hhZGVyIHZhbGlkYXRv
ciBhbmQgdHJhbnNsYXRvciBieSBXZWJHTCBpbXBsZW1lbnRhdGlvbnMgYWNyb3NzIG11bHRpcGxl
IHBsYXRmb3Jtcy4gSXQgaXMgdXNlZCBvbiBNYWMgT1MgWCwgTGludXgsIGFuZCBpbiBtb2JpbGUg
dmFyaWFudHMgb2YgdGhlIGJyb3dzZXJzLiBIYXZpbmcgb25lIHNoYWRlciB2YWxpZGF0b3IgaGVs
cHMgdG8gZW5zdXJlIHRoYXQgYSBjb25zaXN0ZW50IHNldCBvZiBHTFNMIEVTIHNoYWRlcnMgYXJl
IGFjY2VwdGVkIGFjcm9zcyBicm93c2VycyBhbmQgcGxhdGZvcm1zLiBUaGUgc2hhZGVyIHRyYW5z
bGF0b3IgY2FuIGJlIHVzZWQgdG8gdHJhbnNsYXRlIHNoYWRlcnMgdG8gb3RoZXIgc2hhZGluZyBs
YW5ndWFnZXMsIGFuZCB0byBvcHRpb25hbGx5IGFwcGx5IHNoYWRlciBtb2RpZmljYXRpb25zIHRv
IHdvcmsgYXJvdW5kIGJ1Z3Mgb3IgcXVpcmtzIGluIHRoZSBuYXRpdmUgZ3JhcGhpY3MgZHJpdmVy
cy4gVGhlIHRyYW5zbGF0b3IgdGFyZ2V0cyBEZXNrdG9wIEdMU0wsIERpcmVjdDNEIEhMU0wsIGFu
ZCBldmVuIEVTU0wgZm9yIG5hdGl2ZSBHTEVTMiBwbGF0Zm9ybXMuCitBTkdMRSB2MS4wLjc3MiB3
YXMgY2VydGlmaWVkIGNvbXBsaWFudCBieSBwYXNzaW5nIHRoZSBFUyAyLjAuMyBjb25mb3JtYW5j
ZSB0ZXN0cyBpbiBPY3RvYmVyIDIwMTEuCitBTkdMRSBhbHNvIHByb3ZpZGVzIGFuIGltcGxlbWVu
dGF0aW9uIG9mIHRoZSBFR0wgMS40IHNwZWNpZmljYXRpb24uCiAKLSMjQnJvd3NpbmcKLUJyb3dz
ZSBBTkdMRSdzIHNvdXJjZSBpbiB0aGUgW3JlcG9zaXRvcnldKGh0dHBzOi8vY2hyb21pdW0uZ29v
Z2xlc291cmNlLmNvbS9hbmdsZS9hbmdsZSkKK0FOR0xFIGlzIHVzZWQgYXMgdGhlIGRlZmF1bHQg
V2ViR0wgYmFja2VuZCBmb3IgYm90aCBHb29nbGUgQ2hyb21lIGFuZCBNb3ppbGxhIEZpcmVmb3gg
b24gV2luZG93cworcGxhdGZvcm1zLiBDaHJvbWUgdXNlcyBBTkdMRSBmb3IgYWxsIGdyYXBoaWNz
IHJlbmRlcmluZyBvbiBXaW5kb3dzLCBpbmNsdWRpbmcgdGhlIGFjY2VsZXJhdGVkCitDYW52YXMy
RCBpbXBsZW1lbnRhdGlvbiBhbmQgdGhlIE5hdGl2ZSBDbGllbnQgc2FuZGJveCBlbnZpcm9ubWVu
dC4KIAotIyNCdWlsZGluZworUG9ydGlvbnMgb2YgdGhlIEFOR0xFIHNoYWRlciBjb21waWxlciBh
cmUgdXNlZCBhcyBhIHNoYWRlciB2YWxpZGF0b3IgYW5kIHRyYW5zbGF0b3IgYnkgV2ViR0wKK2lt
cGxlbWVudGF0aW9ucyBhY3Jvc3MgbXVsdGlwbGUgcGxhdGZvcm1zLiBJdCBpcyB1c2VkIG9uIE1h
YyBPUyBYLCBMaW51eCwgYW5kIGluIG1vYmlsZSB2YXJpYW50cyBvZgordGhlIGJyb3dzZXJzLiBI
YXZpbmcgb25lIHNoYWRlciB2YWxpZGF0b3IgaGVscHMgdG8gZW5zdXJlIHRoYXQgYSBjb25zaXN0
ZW50IHNldCBvZiBHTFNMIEVTIHNoYWRlcnMKK2FyZSBhY2NlcHRlZCBhY3Jvc3MgYnJvd3NlcnMg
YW5kIHBsYXRmb3Jtcy4gVGhlIHNoYWRlciB0cmFuc2xhdG9yIGNhbiBiZSB1c2VkIHRvIHRyYW5z
bGF0ZSBzaGFkZXJzCit0byBvdGhlciBzaGFkaW5nIGxhbmd1YWdlcywgYW5kIHRvIG9wdGlvbmFs
bHkgYXBwbHkgc2hhZGVyIG1vZGlmaWNhdGlvbnMgdG8gd29yayBhcm91bmQgYnVncyBvcgorcXVp
cmtzIGluIHRoZSBuYXRpdmUgZ3JhcGhpY3MgZHJpdmVycy4gVGhlIHRyYW5zbGF0b3IgdGFyZ2V0
cyBEZXNrdG9wIEdMU0wsIERpcmVjdDNEIEhMU0wsIGFuZCBldmVuCitFU1NMIGZvciBuYXRpdmUg
R0xFUzIgcGxhdGZvcm1zLgorCisjIyBTb3VyY2VzCisKK0FOR0xFIHJlcG9zaXRvcnkgaXMgaG9z
dGVkIGJ5IENocm9taXVtIHByb2plY3QgYW5kIGNhbiBiZQorW2Jyb3dzZWQgb25saW5lXShodHRw
czovL2Nocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vYW5nbGUvYW5nbGUpIG9yIGNsb25lZCB3aXRo
CisKKyAgICBnaXQgY2xvbmUgaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2FuZ2xl
L2FuZ2xlCisKKworIyMgQnVpbGRpbmcKKwogVmlldyB0aGUgW0RldiBzZXR1cCBpbnN0cnVjdGlv
bnNdKGRvYy9EZXZTZXR1cC5tZCkuIEZvciBnZW5lcmF0aW5nIGEgV2luZG93cyBTdG9yZSB2ZXJz
aW9uIG9mIEFOR0xFIHZpZXcgdGhlIFtXaW5kb3dzIFN0b3JlIGluc3RydWN0aW9uc10oZG9jL0J1
aWxkaW5nQW5nbGVGb3JXaW5kb3dzU3RvcmUubWQpCiAKLSMjQ29udHJpYnV0aW5nCisjIyBDb250
cmlidXRpbmcKKwogKiBKb2luIG91ciBbR29vZ2xlIGdyb3VwXShodHRwczovL2dyb3Vwcy5nb29n
bGUuY29tL2dyb3VwL2FuZ2xlcHJvamVjdCkgdG8ga2VlcCB1cCB0byBkYXRlLgogKiBKb2luIHVz
IG9uIElSQyBpbiB0aGUgI0FOR0xFcHJvamVjdCBjaGFubmVsIG9uIEZyZWVOb2RlLgotKiBSZWFk
IGFib3V0IEFOR0xFIGRldmVsb3BtZW50IGluIG91ciBbZG9jdW1lbnRhdGlvbl0oZG9jKS4KKyog
RmlsZSBidWdzIGluIHRoZSBbaXNzdWUgdHJhY2tlcl0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9w
L2FuZ2xlcHJvamVjdC9pc3N1ZXMvbGlzdCkgKHByZWZlcmFibHkgd2l0aCBhbiBpc29sYXRlZCB0
ZXN0LWNhc2UpLgorKiBbQ2hvb3NlIGFuIEFOR0xFIGJyYW5jaF0oZG9jL0Nob29zaW5nQU5HTEVC
cmFuY2gubWQpIHRvIHRyYWNrIGluIHlvdXIgb3duIHByb2plY3QuCisKKworKiBSZWFkIEFOR0xF
IGRldmVsb3BtZW50IFtkb2N1bWVudGF0aW9uXShkb2MpLgorKiBMb29rIGF0IFtwZW5kaW5nXSho
dHRwczovL2Nocm9taXVtLXJldmlldy5nb29nbGVzb3VyY2UuY29tLyMvcS9wcm9qZWN0OmFuZ2xl
L2FuZ2xlK3N0YXR1czpvcGVuKQorICBhbmQgW21lcmdlZF0oaHR0cHM6Ly9jaHJvbWl1bS1yZXZp
ZXcuZ29vZ2xlc291cmNlLmNvbS8jL3EvcHJvamVjdDphbmdsZS9hbmdsZStzdGF0dXM6bWVyZ2Vk
KSBjaGFuZ2VzLgogKiBCZWNvbWUgYSBbY29kZSBjb250cmlidXRvcl0oZG9jL0NvbnRyaWJ1dGlu
Z0NvZGUubWQpLgotKiBSZWZlciB0byBBTkdMRSdzIFtjb2Rpbmcgc3RhbmRhcmRdKGRvYy9Db2Rp
bmdTdGFuZGFyZC5tZCkuCisqIFVzZSBBTkdMRSdzIFtjb2Rpbmcgc3RhbmRhcmRdKGRvYy9Db2Rp
bmdTdGFuZGFyZC5tZCkuCiAqIExlYXJuIGhvdyB0byBbYnVpbGQgQU5HTEUgZm9yIENocm9taXVt
IGRldmVsb3BtZW50XShkb2MvQnVpbGRpbmdBbmdsZUZvckNocm9taXVtRGV2ZWxvcG1lbnQubWQp
LgotKiBbQ2hvb3NlIGFuIEFOR0xFIGJyYW5jaF0oZG9jL0Nob29zaW5nQU5HTEVCcmFuY2gubWQp
IHRvIHRyYWNrIGluIHlvdXIgb3duIHByb2plY3QuCi0qIEZpbGUgYnVncyBpbiB0aGUgW2lzc3Vl
IHRyYWNrZXJdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9hbmdsZXByb2plY3QvaXNzdWVzL2xp
c3QpIChwcmVmZXJhYmx5IHdpdGggYW4gaXNvbGF0ZWQgdGVzdC1jYXNlKS4KKyogR2V0IGhlbHAg
b24gW2RlYnVnZ2luZyBBTkdMRV0oZG9jL0RlYnVnZ2luZ1RpcHMubWQpLgorCisKICogUmVhZCBh
Ym91dCBXZWJHTCBvbiB0aGUgW0tocm9ub3MgV2ViR0wgV2lraV0oaHR0cDovL2tocm9ub3Mub3Jn
L3dlYmdsL3dpa2kvTWFpbl9QYWdlKS4KICogTGVhcm4gYWJvdXQgaW1wbGVtZW50YXRpb24gZGV0
YWlscyBpbiB0aGUgW09wZW5HTCBJbnNpZ2h0cyBjaGFwdGVyIG9uIEFOR0xFXShodHRwOi8vd3d3
LnNlYXMudXBlbm4uZWR1L35wY296emkvT3BlbkdMSW5zaWdodHMvT3BlbkdMSW5zaWdodHMtQU5H
TEUucGRmKSBhbmQgdGhpcyBbQU5HTEUgcHJlc2VudGF0aW9uXShodHRwczovL2RyaXZlLmdvb2ds
ZS5jb20vZmlsZS9kLzBCdzI5b1llQzA5UWJiSG94TkU1RVVGaDBSR3Mvdmlldz91c3A9c2hhcmlu
ZykuCiAqIExlYXJuIGFib3V0IHRoZSBwYXN0LCBwcmVzZW50LCBhbmQgZnV0dXJlIG9mIHRoZSBB
TkdMRSBpbXBsZW1lbnRhdGlvbiBpbiBbdGhpcyByZWNlbnQgcHJlc2VudGF0aW9uXShodHRwczov
L2RvY3MuZ29vZ2xlLmNvbS9wcmVzZW50YXRpb24vZC8xQ3VjSXNkR1ZEbWRUV1JVYmc2OEl4TEU1
alh3Q2IyeTFFOVlWaFFvMHRoZy9wdWI/c3RhcnQ9ZmFsc2UmbG9vcD1mYWxzZSkuCi0qIE5vdGVz
IG9uIFtkZWJ1Z2dpbmcgQU5HTEVdKGRvYy9EZWJ1Z2dpbmdUaXBzLm1kKS4KICogSWYgeW91IHVz
ZSBBTkdMRSBpbiB5b3VyIG93biBwcm9qZWN0LCB3ZSdkIGxvdmUgdG8gaGVhciBhYm91dCBpdCEK
IApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvYW5nbGUuaXNvbGF0ZQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9hbmdsZS5pc29sYXRlCShyZXZpc2lvbiAyMDgw
MjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9hbmdsZS5pc29sYXRlCShub25leGlzdGVu
dCkKQEAgLTEsMTkgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0jIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCi0KLSMgVGhpcyBpc29sYXRlIGV4cHJlc3NlcyB0aGUgQ2hyb21p
dW0gcHJvamVjdCdzIGRlZmF1bHQgcnVudGltZQotIyBkZXBlbmRlbmNpZXMuCi17Ci0gICdjb25k
aXRpb25zJzogWwotICAgIFsnT1M9PSJ3aW4iJywgewotICAgICAgJ3ZhcmlhYmxlcyc6IHsKLSAg
ICAgICAgJ2ZpbGVzJzogWwotICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9kM2Rjb21waWxlcl80
Ny5kbGwnLAotICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9saWJFR0wuZGxsJywKLSAgICAgICAg
ICAnPChQUk9EVUNUX0RJUikvbGliR0xFU3YyLmRsbCcsCi0gICAgICAgIF0sCi0gICAgICB9LAot
ICAgIH1dLAotICBdLAotfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvY2hhbmdlcy5k
aWZmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2NoYW5nZXMuZGlmZgko
cmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvY2hhbmdlcy5kaWZm
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsMTIxIEBACitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9F
R0wvZWdsLmggYi9pbmNsdWRlL0VHTC9lZ2wuaAoraW5kZXggOWY5ZTAyMS4uOGFkYTA1MSAxMDA2
NDQKKy0tLSBhL2luY2x1ZGUvRUdML2VnbC5oCisrKysgYi9pbmNsdWRlL0VHTC9lZ2wuaAorQEAg
LTM4LDYgKzM4LDEyIEBAIGV4dGVybiAiQyIgeworIAorICNpbmNsdWRlIDxFR0wvZWdscGxhdGZv
cm0uaD4KKyAKKysjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoQU5HTEVfV0VCS0lU
X1dJTikKKysjZGVmaW5lIEVHTF9TT0ZUX0xJTktJTkcgMQorKyNlbHNlCisrI2RlZmluZSBFR0xf
U09GVF9MSU5LSU5HIDAKKysjZW5kaWYKKysKKyAvKiBHZW5lcmF0ZWQgb24gZGF0ZSAyMDE1MDYy
MyAqLworIAorIC8qIEdlbmVyYXRlZCBDIGhlYWRlciBmb3I6CitAQCAtMTE4LDYgKzEyNCw3IEBA
IHR5cGVkZWYgdm9pZCAoKl9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUp
KHZvaWQpOworICNkZWZpbmUgRUdMX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgICAgIDB4MzA1
NAorICNkZWZpbmUgRUdMX1dJRFRIICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzA1NworICNk
ZWZpbmUgRUdMX1dJTkRPV19CSVQgICAgICAgICAgICAgICAgICAgIDB4MDAwNAorKyNpZiAhRUdM
X1NPRlRfTElOS0lORworIEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbENob29zZUNv
bmZpZyAoRUdMRGlzcGxheSBkcHksIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QsIEVHTENvbmZp
ZyAqY29uZmlncywgRUdMaW50IGNvbmZpZ19zaXplLCBFR0xpbnQgKm51bV9jb25maWcpOworIEVH
TEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbENvcHlCdWZmZXJzIChFR0xEaXNwbGF5IGRw
eSwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xOYXRpdmVQaXhtYXBUeXBlIHRhcmdldCk7CisgRUdM
QVBJIEVHTENvbnRleHQgRUdMQVBJRU5UUlkgZWdsQ3JlYXRlQ29udGV4dCAoRUdMRGlzcGxheSBk
cHksIEVHTENvbmZpZyBjb25maWcsIEVHTENvbnRleHQgc2hhcmVfY29udGV4dCwgY29uc3QgRUdM
aW50ICphdHRyaWJfbGlzdCk7CitAQCAtMTQyLDYgKzE0OSw3IEBAIEVHTEFQSSBFR0xCb29sZWFu
IEVHTEFQSUVOVFJZIGVnbFN3YXBCdWZmZXJzIChFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBz
dXJmYWNlCisgRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsVGVybWluYXRlIChFR0xE
aXNwbGF5IGRweSk7CisgRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsV2FpdEdMICh2
b2lkKTsKKyBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xXYWl0TmF0aXZlIChFR0xp
bnQgZW5naW5lKTsKKysjZW5kaWYKKyAjZW5kaWYgLyogRUdMX1ZFUlNJT05fMV8wICovCisgCisg
I2lmbmRlZiBFR0xfVkVSU0lPTl8xXzEKK0BAIC0xNjAsMTAgKzE2OCwxMiBAQCBFR0xBUEkgRUdM
Qm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xXYWl0TmF0aXZlIChFR0xpbnQgZW5naW5lKTsKKyAjZGVm
aW5lIEVHTF9URVhUVVJFX1JHQiAgICAgICAgICAgICAgICAgICAweDMwNUQKKyAjZGVmaW5lIEVH
TF9URVhUVVJFX1JHQkEgICAgICAgICAgICAgICAgICAweDMwNUUKKyAjZGVmaW5lIEVHTF9URVhU
VVJFX1RBUkdFVCAgICAgICAgICAgICAgICAweDMwODEKKysjaWYgIUVHTF9TT0ZUX0xJTktJTkcK
KyBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xCaW5kVGV4SW1hZ2UgKEVHTERpc3Bs
YXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTGludCBidWZmZXIpOworIEVHTEFQSSBFR0xC
b29sZWFuIEVHTEFQSUVOVFJZIGVnbFJlbGVhc2VUZXhJbWFnZSAoRUdMRGlzcGxheSBkcHksIEVH
TFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IGJ1ZmZlcik7CisgRUdMQVBJIEVHTEJvb2xlYW4gRUdM
QVBJRU5UUlkgZWdsU3VyZmFjZUF0dHJpYiAoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3Vy
ZmFjZSwgRUdMaW50IGF0dHJpYnV0ZSwgRUdMaW50IHZhbHVlKTsKKyBFR0xBUEkgRUdMQm9vbGVh
biBFR0xBUElFTlRSWSBlZ2xTd2FwSW50ZXJ2YWwgKEVHTERpc3BsYXkgZHB5LCBFR0xpbnQgaW50
ZXJ2YWwpOworKyNlbmRpZgorICNlbmRpZiAvKiBFR0xfVkVSU0lPTl8xXzEgKi8KKyAKKyAjaWZu
ZGVmIEVHTF9WRVJTSU9OXzFfMgorQEAgLTE5OSwxMSArMjA5LDEzIEBAIHR5cGVkZWYgdm9pZCAq
RUdMQ2xpZW50QnVmZmVyOworICNkZWZpbmUgRUdMX1NXQVBfQkVIQVZJT1IgICAgICAgICAgICAg
ICAgIDB4MzA5MworICNkZWZpbmUgRUdMX1VOS05PV04gICAgICAgICAgICAgICAgICAgICAgICgo
RUdMaW50KS0xKQorICNkZWZpbmUgRUdMX1ZFUlRJQ0FMX1JFU09MVVRJT04gICAgICAgICAgIDB4
MzA5MQorKyNpZiAhRUdMX1NPRlRfTElOS0lORworIEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVO
VFJZIGVnbEJpbmRBUEkgKEVHTGVudW0gYXBpKTsKKyBFR0xBUEkgRUdMZW51bSBFR0xBUElFTlRS
WSBlZ2xRdWVyeUFQSSAodm9pZCk7CisgRUdMQVBJIEVHTFN1cmZhY2UgRUdMQVBJRU5UUlkgZWds
Q3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIgKEVHTERpc3BsYXkgZHB5LCBFR0xlbnVtIGJ1
ZnR5cGUsIEVHTENsaWVudEJ1ZmZlciBidWZmZXIsIEVHTENvbmZpZyBjb25maWcsIGNvbnN0IEVH
TGludCAqYXR0cmliX2xpc3QpOworIEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFJl
bGVhc2VUaHJlYWQgKHZvaWQpOworIEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFdh
aXRDbGllbnQgKHZvaWQpOworKyNlbmRpZgorICNlbmRpZiAvKiBFR0xfVkVSU0lPTl8xXzIgKi8K
KyAKKyAjaWZuZGVmIEVHTF9WRVJTSU9OXzFfMworQEAgLTIzMiw3ICsyNDQsOSBAQCBFR0xBUEkg
RUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xXYWl0Q2xpZW50ICh2b2lkKTsKKyAjZGVmaW5lIEVH
TF9PUEVOR0xfQVBJICAgICAgICAgICAgICAgICAgICAweDMwQTIKKyAjZGVmaW5lIEVHTF9PUEVO
R0xfQklUICAgICAgICAgICAgICAgICAgICAweDAwMDgKKyAjZGVmaW5lIEVHTF9TV0FQX0JFSEFW
SU9SX1BSRVNFUlZFRF9CSVQgICAweDA0MDAKKysjaWYgIUVHTF9TT0ZUX0xJTktJTkcKKyBFR0xB
UEkgRUdMQ29udGV4dCBFR0xBUElFTlRSWSBlZ2xHZXRDdXJyZW50Q29udGV4dCAodm9pZCk7Cisr
I2VuZGlmCisgI2VuZGlmIC8qIEVHTF9WRVJTSU9OXzFfNCAqLworIAorICNpZm5kZWYgRUdMX1ZF
UlNJT05fMV81CitAQCAtMjg0LDYgKzI5OCw3IEBAIHR5cGVkZWYgdm9pZCAqRUdMSW1hZ2U7Cisg
I2RlZmluZSBFR0xfR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aIDB4MzBCOAorICNkZWZp
bmUgRUdMX0lNQUdFX1BSRVNFUlZFRCAgICAgICAgICAgICAgIDB4MzBEMgorICNkZWZpbmUgRUdM
X05PX0lNQUdFICAgICAgICAgICAgICAgICAgICAgICgoRUdMSW1hZ2UpMCkKKysjaWYgIUVHTF9T
T0ZUX0xJTktJTkcKKyBFR0xBUEkgRUdMU3luYyBFR0xBUElFTlRSWSBlZ2xDcmVhdGVTeW5jIChF
R0xEaXNwbGF5IGRweSwgRUdMZW51bSB0eXBlLCBjb25zdCBFR0xBdHRyaWIgKmF0dHJpYl9saXN0
KTsKKyBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xEZXN0cm95U3luYyAoRUdMRGlz
cGxheSBkcHksIEVHTFN5bmMgc3luYyk7CisgRUdMQVBJIEVHTGludCBFR0xBUElFTlRSWSBlZ2xD
bGllbnRXYWl0U3luYyAoRUdMRGlzcGxheSBkcHksIEVHTFN5bmMgc3luYywgRUdMaW50IGZsYWdz
LCBFR0xUaW1lIHRpbWVvdXQpOworQEAgLTI5NCw4ICszMDksMTMgQEAgRUdMQVBJIEVHTERpc3Bs
YXkgRUdMQVBJRU5UUlkgZWdsR2V0UGxhdGZvcm1EaXNwbGF5IChFR0xlbnVtIHBsYXRmb3JtLCB2
b2lkICpuYXQKKyBFR0xBUEkgRUdMU3VyZmFjZSBFR0xBUElFTlRSWSBlZ2xDcmVhdGVQbGF0Zm9y
bVdpbmRvd1N1cmZhY2UgKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgY29uZmlnLCB2b2lkICpu
YXRpdmVfd2luZG93LCBjb25zdCBFR0xBdHRyaWIgKmF0dHJpYl9saXN0KTsKKyBFR0xBUEkgRUdM
U3VyZmFjZSBFR0xBUElFTlRSWSBlZ2xDcmVhdGVQbGF0Zm9ybVBpeG1hcFN1cmZhY2UgKEVHTERp
c3BsYXkgZHB5LCBFR0xDb25maWcgY29uZmlnLCB2b2lkICpuYXRpdmVfcGl4bWFwLCBjb25zdCBF
R0xBdHRyaWIgKmF0dHJpYl9saXN0KTsKKyBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBl
Z2xXYWl0U3luYyAoRUdMRGlzcGxheSBkcHksIEVHTFN5bmMgc3luYywgRUdMaW50IGZsYWdzKTsK
KysjZW5kaWYKKyAjZW5kaWYgLyogRUdMX1ZFUlNJT05fMV81ICovCisgCisrI2lmIEVHTF9TT0ZU
X0xJTktJTkcKKysjaW5jbHVkZSA8RUdML2VnbHNvZnRsaW5raW5nLmg+CisrI2VuZGlmCisrCisg
I2lmZGVmIF9fY3BsdXNwbHVzCisgfQorICNlbmRpZgorZGlmZiAtLWdpdCBhL2luY2x1ZGUvR0xF
UzIvZ2wyLmggYi9pbmNsdWRlL0dMRVMyL2dsMi5oCitpbmRleCAwMjdlMWY3Li40ZDcxMGMyIDEw
MDY0NAorLS0tIGEvaW5jbHVkZS9HTEVTMi9nbDIuaAorKysrIGIvaW5jbHVkZS9HTEVTMi9nbDIu
aAorQEAgLTUyMCw2ICs1MjAsMTEgQEAgdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xW
RVJURVhBVFRSSUI0RlBST0MpIChHTHVpbnQgaW5kZXgsIEdMZmxvYXQgeCwgR0wKKyB0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFZFUlRFWEFUVFJJQjRGVlBST0MpIChHTHVpbnQgaW5k
ZXgsIGNvbnN0IEdMZmxvYXQgKnYpOworIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
VkVSVEVYQVRUUklCUE9JTlRFUlBST0MpIChHTHVpbnQgaW5kZXgsIEdMaW50IHNpemUsIEdMZW51
bSB0eXBlLCBHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IHZvaWQg
KnBvaW50ZXIpOworIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVklFV1BPUlRQUk9D
KSAoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworKwor
KyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChBTkdMRV9XRUJLSVRfV0lOKQorKyNp
bmNsdWRlIDxHTEVTMi9nbDJzb2Z0bGlua2luZy5oPgorKyNlbHNlCisrCisgI2lmZGVmIEdMX0dM
RVhUX1BST1RPVFlQRVMKKyBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xBY3RpdmVUZXh0
dXJlIChHTGVudW0gdGV4dHVyZSk7CisgR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQXR0
YWNoU2hhZGVyIChHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IHNoYWRlcik7CitAQCAtNjY0LDYgKzY2
OSw3IEBAIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFZlcnRleEF0dHJpYjRmdiAoR0x1
aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KTsKKyBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyIChHTHVpbnQgaW5kZXgsIEdMaW50IHNpemUsIEdMZW51
bSB0eXBlLCBHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IHZvaWQg
KnBvaW50ZXIpOworIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFZpZXdwb3J0IChHTGlu
dCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CisgI2VuZGlmCisr
I2VuZGlmCisgI2VuZGlmIC8qIEdMX0VTX1ZFUlNJT05fMl8wICovCisgCisgI2lmZGVmIF9fY3Bs
dXNwbHVzCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaCBiL2luY2x1
ZGUvR0xTTEFORy9TaGFkZXJMYW5nLmgKLWluZGV4IDc4ZjhlZjYuLmI3ZmRmNTUgMTAwNjQ0Citp
bmRleCA5NjVmN2FiLi5mN2IwZWY3IDEwMDY0NAogLS0tIGEvaW5jbHVkZS9HTFNMQU5HL1NoYWRl
ckxhbmcuaAogKysrIGIvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaAogQEAgLTI1LDcgKzI1
LDcgQEAKQEAgLTksMTcgKzEyNSw3MCBAQAogLSNpbmNsdWRlICJLSFIva2hycGxhdGZvcm0uaCIK
ICsjaW5jbHVkZSAia2hycGxhdGZvcm0uaCIKICAKKyAjaW5jbHVkZSA8YXJyYXk+CiAgI2luY2x1
ZGUgPG1hcD4KLSAjaW5jbHVkZSA8c3RyaW5nPgotQEAgLTM0Myw3ICszNDMsNyBAQCBDT01QSUxF
Ul9FWFBPUlQgY29uc3Qgc3RkOjpzdHJpbmcgJlNoR2V0QnVpbHRJblJlc291cmNlc1N0cmluZyhj
b25zdCBTaEhhbmRsZSBoYQotIC8vIHR5cGU6IFNwZWNpZmllcyB0aGUgdHlwZSBvZiBzaGFkZXIg
LSBHTF9GUkFHTUVOVF9TSEFERVIgb3IgR0xfVkVSVEVYX1NIQURFUi4KLSAvLyBzcGVjOiBTcGVj
aWZpZXMgdGhlIGxhbmd1YWdlIHNwZWMgdGhlIGNvbXBpbGVyIG11c3QgY29uZm9ybSB0byAtCi0g
Ly8gICAgICAgU0hfR0xFUzJfU1BFQyBvciBTSF9XRUJHTF9TUEVDLgotLS8vIG91dHB1dDogU3Bl
Y2lmaWVzIHRoZSBvdXRwdXQgY29kZSB0eXBlIC0gZm9yIGV4YW1wbGUgU0hfRVNTTF9PVVRQVVQs
IFNIX0dMU0xfT1VUUFVULAotKy8vIG91dHB1dDogU3BlY2lmaWVzIHRoZSBvdXRwdXQgY29kZSB0
eXBlIC0gZm9yIGV4YW1wbGUgU0hfRVNTTF9PVVRQVVQsIFNIX0dMU0xfQ09NUEFUSUJJTElUWV9P
VVRQVVQsCi0gLy8gICAgICAgICBTSF9ITFNMXzNfMF9PVVRQVVQgb3IgU0hfSExTTF80XzFfT1VU
UFVULiBOb3RlOiBFYWNoIG91dHB1dCB0eXBlIG1heSBvbmx5Ci0gLy8gICAgICAgICBiZSBzdXBw
b3J0ZWQgaW4gc29tZSBjb25maWd1cmF0aW9ucy4KLSAvLyByZXNvdXJjZXM6IFNwZWNpZmllcyB0
aGUgYnVpbHQtaW4gcmVzb3VyY2VzLgorZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vYW5nbGV1dGls
cy5jcHAgYi9zcmMvY29tbW9uL2FuZ2xldXRpbHMuY3BwCitpbmRleCA3MDk5YzIxLi40NjQxOTI4
IDEwMDY0NAorLS0tIGEvc3JjL2NvbW1vbi9hbmdsZXV0aWxzLmNwcAorKysrIGIvc3JjL2NvbW1v
bi9hbmdsZXV0aWxzLmNwcAorQEAgLTM2LDcgKzM2LDEwIEBAIHNpemVfdCBGb3JtYXRTdHJpbmdJ
bnRvVmVjdG9yKGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCB2YXJhcmcsIHN0ZDo6dmVjdG9yPGNo
YXI+CisgCisgc3RkOjpzdHJpbmcgRm9ybWF0U3RyaW5nKGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlz
dCB2YXJhcmcpCisgeworKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAorKyNwcmFnbWEgR0ND
IGRpYWdub3N0aWMgaWdub3JlZCAiLVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMiCisgICAgIHN0YXRp
YyBzdGQ6OnZlY3RvcjxjaGFyPiBidWZmZXIoNTEyKTsKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGlj
IHBvcAorIAorICAgICBzaXplX3QgbGVuID0gRm9ybWF0U3RyaW5nSW50b1ZlY3RvcihmbXQsIHZh
cmFyZywgYnVmZmVyKTsKKyAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCZidWZmZXJbMF0sIGxlbik7
CitkaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9hbmdsZXV0aWxzLmggYi9zcmMvY29tbW9uL2FuZ2xl
dXRpbHMuaAoraW5kZXggZjVlZjdiZC4uNGNiNTU2YyAxMDA2NDQKKy0tLSBhL3NyYy9jb21tb24v
YW5nbGV1dGlscy5oCisrKysgYi9zcmMvY29tbW9uL2FuZ2xldXRpbHMuaAorQEAgLTExNiw3ICsx
MTYsMTAgQEAgaW5saW5lIGJvb2wgSXNNYXNrRmxhZ1NldChUIG1hc2ssIFQgZmxhZykKKyAKKyBp
bmxpbmUgY29uc3QgY2hhciogTWFrZVN0YXRpY1N0cmluZyhjb25zdCBzdGQ6OnN0cmluZyAmc3Ry
KQorIHsKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKysjcHJhZ21hIEdDQyBkaWFnbm9z
dGljIGlnbm9yZWQgIi1XZXhpdC10aW1lLWRlc3RydWN0b3JzIgorICAgICBzdGF0aWMgc3RkOjpz
ZXQ8c3RkOjpzdHJpbmc+IHN0cmluZ3M7CisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKKyAg
ICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+OjppdGVyYXRvciBpdCA9IHN0cmluZ3MuZmluZChzdHIp
OworICAgICBpZiAoaXQgIT0gc3RyaW5ncy5lbmQoKSkKKyAgICAgeworZGlmZiAtLWdpdCBhL3Ny
Yy9jb21tb24vZGVidWcuY3BwIGIvc3JjL2NvbW1vbi9kZWJ1Zy5jcHAKK2luZGV4IDc0NmRhNWUu
LjQ3ZTE1NjUgMTAwNjQ0CistLS0gYS9zcmMvY29tbW9uL2RlYnVnLmNwcAorKysrIGIvc3JjL2Nv
bW1vbi9kZWJ1Zy5jcHAKK0BAIC02OSw3ICs2OSwxMCBAQCB2b2lkIG91dHB1dChib29sIHRyYWNl
SW5EZWJ1Z09ubHksIE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBEZWJ1Z1RyYWNlT3V0cHV0VHlw
ZQorIHsKKyAgICAgaWYgKERlYnVnQW5ub3RhdGlvbnNBY3RpdmUoKSkKKyAgICAgeworKyNwcmFn
bWEgR0NDIGRpYWdub3N0aWMgcHVzaAorKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAi
LVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMiCisgICAgICAgICBzdGF0aWMgc3RkOjp2ZWN0b3I8Y2hh
cj4gYnVmZmVyKDUxMik7CisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKKyAgICAgICAgIHNp
emVfdCBsZW4gPSBGb3JtYXRTdHJpbmdJbnRvVmVjdG9yKGZvcm1hdCwgdmFyYXJnLCBidWZmZXIp
OworICAgICAgICAgc3RkOjp3c3RyaW5nIGZvcm1hdHRlZFdpZGVNZXNzYWdlKGJ1ZmZlci5iZWdp
bigpLCBidWZmZXIuYmVnaW4oKSArIGxlbik7CisgCitkaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9t
YXRodXRpbC5jcHAgYi9zcmMvY29tbW9uL21hdGh1dGlsLmNwcAoraW5kZXggYWNiY2JkZi4uYmE2
ZGE1MiAxMDA2NDQKKy0tLSBhL3NyYy9jb21tb24vbWF0aHV0aWwuY3BwCisrKysgYi9zcmMvY29t
bW9uL21hdGh1dGlsLmNwcAorQEAgLTMxLDkgKzMxLDEyIEBAIHN0YXRpYyBjb25zdCBpbnQgZ19z
aGFyZWRleHBfbWFudGlzc2FiaXRzID0gOTsKKyAvLyBFbWF4IGlzIHRoZSBtYXhpbXVtIGFsbG93
ZWQgYmlhc2VkIGV4cG9uZW50IHZhbHVlICgzMSkKKyBzdGF0aWMgY29uc3QgaW50IGdfc2hhcmVk
ZXhwX21heGV4cG9uZW50ID0gMzE7CisgCisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisr
I3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2dsb2JhbC1jb25zdHJ1Y3RvcnMiCisg
c3RhdGljIGNvbnN0IGZsb2F0IGdfc2hhcmVkZXhwX21heCA9ICgocG93KDIuMGYsIGdfc2hhcmVk
ZXhwX21hbnRpc3NhYml0cykgLSAxKSAvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcG93KDIuMGYsIGdfc2hhcmVkZXhwX21hbnRpc3NhYml0cykpICoKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG93KDIuMGYsIGdfc2hhcmVkZXhwX21heGV4
cG9uZW50IC0gZ19zaGFyZWRleHBfYmlhcyk7CisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AK
KyAKKyB1bnNpZ25lZCBpbnQgY29udmVydFJHQkZsb2F0c1RvOTk5RTUoZmxvYXQgcmVkLCBmbG9h
dCBncmVlbiwgZmxvYXQgYmx1ZSkKKyB7CiBkaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi92ZXJzaW9u
LmggYi9zcmMvY29tbW9uL3ZlcnNpb24uaAogaW5kZXggZTdmZmE3Yy4uYjY1M2FlMyAxMDA2NDQK
IC0tLSBhL3NyYy9jb21tb24vdmVyc2lvbi5oCkBAIC0zNCw3ICsyMDMsNyBAQAogICNkZWZpbmUg
QU5HTEVfTUFKT1JfVkVSU0lPTiAyCiAgI2RlZmluZSBBTkdMRV9NSU5PUl9WRVJTSU9OIDEKIGRp
ZmYgLS1naXQgYS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25QYXJzZXIuY3Bw
IGIvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLmNwcAotaW5kZXgg
MTkzYjE1MC4uYjM4YjdhZSAxMDA2NDQKK2luZGV4IGY3MzdhMmUuLmE4ZGYyMzUgMTAwNjQ0CiAt
LS0gYS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25QYXJzZXIuY3BwCiArKysg
Yi9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25QYXJzZXIuY3BwCiBAQCAtMSw1
ICsxLDcgQEAKQEAgLTQ2LDY0ICsyMTUsMTQxIEBACiAgCiAgICAgQ29weXJpZ2h0IChDKSAxOTg0
LCAxOTg5LTE5OTAsIDIwMDAtMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIGRp
ZmYgLS1naXQgYS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5jcHAgYi9zcmMv
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5jcHAKLWluZGV4IGViNjE1NmYuLjFjYWVl
NDcgMTAwNjQ0CitpbmRleCA0MGU5MTBlLi5mZWUyMGM2IDEwMDY0NAogLS0tIGEvc3JjL2NvbXBp
bGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6ZXIuY3BwCiArKysgYi9zcmMvY29tcGlsZXIvcHJlcHJv
Y2Vzc29yL1Rva2VuaXplci5jcHAKLUBAIC03MTIsNyArNzEyLDcgQEAgc3RhdGljIHZvaWQgeXlf
ZmxleF9zdHJuY3B5IChjaGFyICoseXljb25zdCBjaGFyICosaW50ICx5eXNjYW5fdCB5eXNjYW5u
ZXIpOworQEAgLTk2OSw3ICs5NjksNyBAQCBzdGF0aWMgdm9pZCB5eV9mbGV4X3N0cm5jcHkgKGNo
YXIgKix5eWNvbnN0IGNoYXIgKixpbnQgLHl5c2Nhbl90IHl5c2Nhbm5lcik7CiAgc3RhdGljIGlu
dCB5eV9mbGV4X3N0cmxlbiAoeXljb25zdCBjaGFyICogLHl5c2Nhbl90IHl5c2Nhbm5lcik7CiAg
I2VuZGlmCiAgCiAtI2lmbmRlZiBZWV9OT19JTlBVVAotKyNpZiAwIC8vI2lmbmRlZiBZWV9OT19J
TlBVVAorKyNpZiAwCiAgCiAgI2lmZGVmIF9fY3BsdXNwbHVzCiAgc3RhdGljIGludCB5eWlucHV0
ICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKLUBAIC0xNTI2LDcgKzE1MjYsNyBAQCBzdGF0aWMgaW50
IHl5X2dldF9uZXh0X2J1ZmZlciAoeXlzY2FuX3QgeXlzY2FubmVyKQotICAgICAgICByZXR1cm4g
eXlfaXNfamFtID8gMCA6IHl5X2N1cnJlbnRfc3RhdGU7Ci0gfQorQEAgLTE4NTgsNyArMTg1OCw3
IEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCB5eXNjYW5uZXIpCiAg
CisgI2VuZGlmCisgCiAtI2lmbmRlZiBZWV9OT19JTlBVVAotKyNpZiAwIC8vI2lmbmRlZiBZWV9O
T19JTlBVVAorKyNpZiAwCiAgI2lmZGVmIF9fY3BsdXNwbHVzCiAgICAgIHN0YXRpYyBpbnQgeXlp
bnB1dCAoeXlzY2FuX3QgeXlzY2FubmVyKQogICNlbHNlCi1kaWZmIC0tZ2l0IGEvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvQ29kZUdlbi5jcHAgYi9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db2Rl
R2VuLmNwcAotaW5kZXggZjA5OWJjYy4uZmU3YzRmMSAxMDA2NDQKLS0tLSBhL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL0NvZGVHZW4uY3BwCi0rKysgYi9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9D
b2RlR2VuLmNwcAotQEAgLTQsNiArNCw4IEBACi0gLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KLSAvLworQEAgLTE4ODMsNyArMTg4Myw3IEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVm
ZmVyICh5eXNjYW5fdCB5eXNjYW5uZXIpCiAgCi0rI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0
b3IvQ29tcGlsZXIuaCIKLSsKLSAjaWZkZWYgQU5HTEVfRU5BQkxFX0VTU0wKLSAjaW5jbHVkZSAi
Y29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yRVNTTC5oIgotICNlbmRpZgotZGlmZiAtLWdp
dCBhL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NoYWRlckxhbmcuY3BwIGIvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvU2hhZGVyTGFuZy5jcHAKLWluZGV4IDQyMTU5N2IuLmE1OGU5MTcgMTAwNjQ0
Ci0tLS0gYS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TaGFkZXJMYW5nLmNwcAotKysrIGIvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvU2hhZGVyTGFuZy5jcHAKLUBAIC0zNzQsNCArMzc0LDQgQEAg
Y29uc3Qgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHVuc2lnbmVkIGludD4gKlNoR2V0VW5pZm9ybVJl
Z2lzdGVyTWFwKGNvbnN0IFNoSGFuZGwKLSAgICAgc3RhdGljIHN0ZDo6bWFwPHN0ZDo6c3RyaW5n
LCB1bnNpZ25lZCBpbnQ+IG1hcDsKLSAgICAgcmV0dXJuICZtYXA7Ci0gI2VuZGlmICAvLyBBTkdM
RV9FTkFCTEVfSExTTAorIAkJZWxzZQorIAkJCXsgLyogbmVlZCBtb3JlIGlucHV0ICovCistCQkJ
aW50IG9mZnNldCA9IHl5Zy0+eXlfY19idWZfcCAtIHl5Zy0+eXl0ZXh0X3B0cjsKKysJCQlhdXRv
IG9mZnNldCA9IHl5Zy0+eXlfY19idWZfcCAtIHl5Zy0+eXl0ZXh0X3B0cjsKKyAJCQkrK3l5Zy0+
eXlfY19idWZfcDsKKyAKKyAJCQlzd2l0Y2ggKCB5eV9nZXRfbmV4dF9idWZmZXIoIHl5c2Nhbm5l
ciApICkKK0BAIC0yMDE0LDcgKzIwMTQsNyBAQCBzdGF0aWMgdm9pZCBwcF9sb2FkX2J1ZmZlcl9z
dGF0ZSAgKHl5c2Nhbl90IHl5c2Nhbm5lcikKKyAJaWYgKCAhIGIgKQorIAkJWVlfRkFUQUxfRVJS
T1IoICJvdXQgb2YgZHluYW1pYyBtZW1vcnkgaW4gcHBfY3JlYXRlX2J1ZmZlcigpIiApOworIAor
LQliLT55eV9idWZfc2l6ZSA9ICh5eV9zaXplX3Qpc2l6ZTsKKysJYi0+eXlfYnVmX3NpemUgPSBz
aXplOworIAorIAkvKiB5eV9jaF9idWYgaGFzIHRvIGJlIDIgY2hhcmFjdGVycyBsb25nZXIgdGhh
biB0aGUgc2l6ZSBnaXZlbiBiZWNhdXNlCisgCSAqIHdlIG5lZWQgdG8gcHV0IGluIDIgZW5kLW9m
LWJ1ZmZlciBjaGFyYWN0ZXJzLgorZGlmZiAtLWdpdCBhL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L09wZXJhdG9yLmNwcCBiL3NyYy9jb21waWxlci90cmFuc2xhdG9yL09wZXJhdG9yLmNwcAoraW5k
ZXggNTc4NzhiOS4uMGI2OTNlMiAxMDA2NDQKKy0tLSBhL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L09wZXJhdG9yLmNwcAorKysrIGIvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3BlcmF0b3IuY3Bw
CitAQCAtMjI0LDQgKzIyNCw0IEBAIGJvb2wgSXNBc3NpZ25tZW50KFRPcGVyYXRvciBvcCkKKyAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9CiAtfQog
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCiArfQotZGlmZiAtLWdpdCBhL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL1RyYW5zbGF0b3JITFNMLmNwcCBiL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L1RyYW5zbGF0b3JITFNMLmNwcAotaW5kZXggMTExYTM4Yi4uMjk0MDI2MCAxMDA2NDQKLS0tLSBh
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JITFNMLmNwcAotKysrIGIvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckhMU0wuY3BwCi1AQCAtNzUsNCArNzUsNCBAQCB1
bnNpZ25lZCBpbnQgVHJhbnNsYXRvckhMU0w6OmdldEludGVyZmFjZUJsb2NrUmVnaXN0ZXIoY29u
c3Qgc3RkOjpzdHJpbmcgJmludGVyZgotIGNvbnN0IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCB1bnNp
Z25lZCBpbnQ+ICpUcmFuc2xhdG9ySExTTDo6Z2V0VW5pZm9ybVJlZ2lzdGVyTWFwKCkgY29uc3QK
LSB7Ci0gICAgIHJldHVybiAmbVVuaWZvcm1SZWdpc3Rlck1hcDsKLS19CitkaWZmIC0tZ2l0IGEv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0SExTTC5oIGIvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvT3V0cHV0SExTTC5oCitpbmRleCBkYjc4ODU5Li5mMjk2ZGQ5IDEwMDY0NAorLS0tIGEv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0SExTTC5oCisrKysgYi9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9PdXRwdXRITFNMLmgKK0BAIC01NiwyMSArNTYsMjEgQEAgY2xhc3MgT3V0cHV0
SExTTCA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCisgICAgIHZvaWQgaGVhZGVyKFRJbmZvU2lu
a0Jhc2UgJm91dCwgY29uc3QgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IgKmJ1aWx0SW5GdW5jdGlv
bkVtdWxhdG9yKTsKKyAKKyAgICAgLy8gVmlzaXQgQVNUIG5vZGVzIGFuZCBvdXRwdXQgdGhlaXIg
Y29kZSB0byB0aGUgYm9keSBzdHJlYW0KKy0gICAgdm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3lt
Ym9sKik7CistICAgIHZvaWQgdmlzaXRSYXcoVEludGVybVJhdyopOworLSAgICB2b2lkIHZpc2l0
Q29uc3RhbnRVbmlvbihUSW50ZXJtQ29uc3RhbnRVbmlvbiopOworKyAgICB2b2lkIHZpc2l0U3lt
Ym9sKFRJbnRlcm1TeW1ib2wqKSBvdmVycmlkZTsKKysgICAgdm9pZCB2aXNpdFJhdyhUSW50ZXJt
UmF3Kikgb3ZlcnJpZGU7CisrICAgIHZvaWQgdmlzaXRDb25zdGFudFVuaW9uKFRJbnRlcm1Db25z
dGFudFVuaW9uKikgb3ZlcnJpZGU7CisgICAgIGJvb2wgdmlzaXRTd2l6emxlKFZpc2l0IHZpc2l0
LCBUSW50ZXJtU3dpenpsZSAqbm9kZSkgb3ZlcnJpZGU7CistICAgIGJvb2wgdmlzaXRCaW5hcnko
VmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkqKTsKKy0gICAgYm9vbCB2aXNpdFVuYXJ5KFZpc2l0
IHZpc2l0LCBUSW50ZXJtVW5hcnkqKTsKKy0gICAgYm9vbCB2aXNpdFRlcm5hcnkoVmlzaXQgdmlz
aXQsIFRJbnRlcm1UZXJuYXJ5ICopOworLSAgICBib29sIHZpc2l0SWZFbHNlKFZpc2l0IHZpc2l0
LCBUSW50ZXJtSWZFbHNlICopOworLSAgICBib29sIHZpc2l0U3dpdGNoKFZpc2l0IHZpc2l0LCBU
SW50ZXJtU3dpdGNoICopOworLSAgICBib29sIHZpc2l0Q2FzZShWaXNpdCB2aXNpdCwgVEludGVy
bUNhc2UgKik7CisrICAgIGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5h
cnkqKSBvdmVycmlkZTsKKysgICAgYm9vbCB2aXNpdFVuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJt
VW5hcnkqKSBvdmVycmlkZTsKKysgICAgYm9vbCB2aXNpdFRlcm5hcnkoVmlzaXQgdmlzaXQsIFRJ
bnRlcm1UZXJuYXJ5ICopIG92ZXJyaWRlOworKyAgICBib29sIHZpc2l0SWZFbHNlKFZpc2l0IHZp
c2l0LCBUSW50ZXJtSWZFbHNlICopIG92ZXJyaWRlOworKyAgICBib29sIHZpc2l0U3dpdGNoKFZp
c2l0IHZpc2l0LCBUSW50ZXJtU3dpdGNoICopIG92ZXJyaWRlOworKyAgICBib29sIHZpc2l0Q2Fz
ZShWaXNpdCB2aXNpdCwgVEludGVybUNhc2UgKikgb3ZlcnJpZGU7CisgICAgIGJvb2wgdmlzaXRG
dW5jdGlvbkRlZmluaXRpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24g
Km5vZGUpIG92ZXJyaWRlOworLSAgICBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBU
SW50ZXJtQWdncmVnYXRlKik7CistICAgIGJvb2wgdmlzaXRCbG9jayhWaXNpdCB2aXNpdCwgVElu
dGVybUJsb2NrICpub2RlKTsKKy0gICAgYm9vbCB2aXNpdExvb3AoVmlzaXQgdmlzaXQsIFRJbnRl
cm1Mb29wKik7CistICAgIGJvb2wgdmlzaXRCcmFuY2goVmlzaXQgdmlzaXQsIFRJbnRlcm1CcmFu
Y2gqKTsKKysgICAgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3Jl
Z2F0ZSopIG92ZXJyaWRlOworKyAgICBib29sIHZpc2l0QmxvY2soVmlzaXQgdmlzaXQsIFRJbnRl
cm1CbG9jayAqbm9kZSkgb3ZlcnJpZGU7CisrICAgIGJvb2wgdmlzaXRMb29wKFZpc2l0IHZpc2l0
LCBUSW50ZXJtTG9vcCopIG92ZXJyaWRlOworKyAgICBib29sIHZpc2l0QnJhbmNoKFZpc2l0IHZp
c2l0LCBUSW50ZXJtQnJhbmNoKikgb3ZlcnJpZGU7CisgCisgICAgIGJvb2wgaXNTaW5nbGVTdGF0
ZW1lbnQoVEludGVybU5vZGUgKm5vZGUpOworICAgICBib29sIGhhbmRsZUV4Y2Vzc2l2ZUxvb3Ao
VEluZm9TaW5rQmFzZSAmb3V0LCBUSW50ZXJtTG9vcCAqbm9kZSk7CitkaWZmIC0tZ2l0IGEvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQuY3BwIGIvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQuY3BwCitpbmRleCA0ODdj
OTA5Li42ZDBjODY2IDEwMDY0NAorLS0tIGEvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0
ZVRleGVsRmV0Y2hPZmZzZXQuY3BwCisrKysgYi9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdy
aXRlVGV4ZWxGZXRjaE9mZnNldC5jcHAKK0BAIC0xNjcsNCArMTY3LDQgQEAgdm9pZCBSZXdyaXRl
VGV4ZWxGZXRjaE9mZnNldChUSW50ZXJtTm9kZSAqcm9vdCwKKyAgICAgVHJhdmVyc2VyOjpBcHBs
eShyb290LCBzeW1ib2xUYWJsZSwgc2hhZGVyVmVyc2lvbik7CisgfQorIAorLX0gIC8vIG5hbWVz
cGFjZSBzaAogXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi0rfQorK30gIC8vIG5hbWVzcGFj
ZSBzaAorZGlmZiAtLWdpdCBhL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVUZXhlbEZl
dGNoT2Zmc2V0LmggYi9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlVGV4ZWxGZXRjaE9m
ZnNldC5oCitpbmRleCA0MjE4ZjBiLi5jNmRiNjY0IDEwMDY0NAorLS0tIGEvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQuaAorKysrIGIvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQuaAorQEAgLTI3LDQgKzI3LDQgQEAg
dm9pZCBSZXdyaXRlVGV4ZWxGZXRjaE9mZnNldChUSW50ZXJtTm9kZSAqcm9vdCwKKyAKKyB9ICAv
LyBuYW1lc3BhY2Ugc2gKKyAKKy0jZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfUkVXUklU
RV9URVhFTEZFVENIT0ZGU0VUX0hfCitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKysjZW5k
aWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfUkVXUklURV9URVhFTEZFVENIT0ZGU0VUX0hfCitk
aWZmIC0tZ2l0IGEvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVVuYXJ5TWludXNPcGVy
YXRvckludC5jcHAgYi9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlVW5hcnlNaW51c09w
ZXJhdG9ySW50LmNwcAoraW5kZXggZWY3MDhjYi4uZDIwNTgwNSAxMDA2NDQKKy0tLSBhL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JJbnQuY3BwCisrKysg
Yi9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlVW5hcnlNaW51c09wZXJhdG9ySW50LmNw
cAorQEAgLTEwOSw0ICsxMDksNCBAQCB2b2lkIFJld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JJbnQo
VEludGVybU5vZGUgKnJvb3QpCisgICAgIFRyYXZlcnNlcjo6QXBwbHkocm9vdCk7CisgfQorIAor
LX0gIC8vIG5hbWVzcGFjZSBzaAorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisrfSAgLy8g
bmFtZXNwYWNlIHNoCitkaWZmIC0tZ2l0IGEvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0
ZVVuYXJ5TWludXNPcGVyYXRvckludC5oIGIvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0
ZVVuYXJ5TWludXNPcGVyYXRvckludC5oCitpbmRleCA1MGYwYzQ0Li44MDJlZDU3IDEwMDY0NAor
LS0tIGEvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvcklu
dC5oCisrKysgYi9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlVW5hcnlNaW51c09wZXJh
dG9ySW50LmgKK0BAIC0xNyw0ICsxNyw0IEBAIHZvaWQgUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRv
ckludChUSW50ZXJtTm9kZSAqcm9vdCk7CisgCisgfSAgLy8gbmFtZXNwYWNlIHNoCisgCistI2Vu
ZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1JFV1JJVEVVTkFSWU1JTlVTT1BFUkFUT1JJTlRf
SF8KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorKyNlbmRpZiAgLy8gQ09NUElMRVJfVFJB
TlNMQVRPUl9SRVdSSVRFVU5BUllNSU5VU09QRVJBVE9SSU5UX0hfCiBkaWZmIC0tZ2l0IGEvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckhMU0wuaCBiL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1RyYW5zbGF0b3JITFNMLmgKLWluZGV4IDQwY2ZkNzAuLjRlODQ2MTIgMTAwNjQ0Citp
bmRleCAyMTNkODYwLi5kMmFkZDE0IDEwMDY0NAogLS0tIGEvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvVHJhbnNsYXRvckhMU0wuaAogKysrIGIvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNs
YXRvckhMU0wuaAogQEAgLTEzLDcgKzEzLDkgQEAgY2xhc3MgVHJhbnNsYXRvckhMU0wgOiBwdWJs
aWMgVENvbXBpbGVyCkBAIC0xMTIsMjUgKzM1OCwxMiBAQAogICAgICBUcmFuc2xhdG9ySExTTChz
aDo6R0xlbnVtIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjLCBTaFNoYWRlck91dHB1dCBvdXRwdXQp
OwogKyNpZmRlZiBBTkdMRV9FTkFCTEVfSExTTAogICAgICBUcmFuc2xhdG9ySExTTCAqZ2V0QXNU
cmFuc2xhdG9ySExTTCgpIG92ZXJyaWRlIHsgcmV0dXJuIHRoaXM7IH0KLSsjZW5kaWYKKysjZW5k
aWYgLy8gQU5HTEVfRU5BQkxFX0hMU0wKICAKICAgICAgYm9vbCBoYXNJbnRlcmZhY2VCbG9jayhj
b25zdCBzdGQ6OnN0cmluZyAmaW50ZXJmYWNlQmxvY2tOYW1lKSBjb25zdDsKICAgICAgdW5zaWdu
ZWQgaW50IGdldEludGVyZmFjZUJsb2NrUmVnaXN0ZXIoY29uc3Qgc3RkOjpzdHJpbmcgJmludGVy
ZmFjZUJsb2NrTmFtZSkgY29uc3Q7Ci1kaWZmIC0tZ2l0IGEvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvZ2xzbGFuZ19sZXguY3BwIGIvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZ19sZXgu
Y3BwCi1pbmRleCBmZjZjMmQ2Li4xYWY4NzZiIDEwMDY0NAotLS0tIGEvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvZ2xzbGFuZ19sZXguY3BwCi0rKysgYi9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9n
bHNsYW5nX2xleC5jcHAKLUBAIC0yMDkwLDcgKzIwOTAsNyBAQCBjYXNlIFlZX1NUQVRFX0VPRihG
SUVMRFMpOgotICAgICAgICBZWV9CUkVBSwotIGNhc2UgMjM5OgotIFlZX1JVTEVfU0VUVVAKLS17
IGFzc2VydChmYWxzZSk7IHJldHVybiAwOyB9Ci0reyByZXR1cm4gMDsgfQotICAgICAgICBZWV9C
UkVBSwotIGNhc2UgMjQwOgotIFlZX1JVTEVfU0VUVVAKIGRpZmYgLS1naXQgYS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9nbHNsYW5nX3RhYi5jcHAgYi9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9n
bHNsYW5nX3RhYi5jcHAKLWluZGV4IDhiNGZiZDIuLmE3OTlkMjkgMTAwNjQ0CitpbmRleCBkOWI4
YWRhLi4zZTUwZmJjIDEwMDY0NAogLS0tIGEvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFu
Z190YWIuY3BwCiArKysgYi9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nX3RhYi5jcHAK
IEBAIC0xLDUgKzEsNyBAQApAQCAtMTQyLDcgKzM3NSw3IEBACiAgCiAgICAgQ29weXJpZ2h0IChD
KSAxOTg0LCAxOTg5LTE5OTAsIDIwMDAtMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4KIGRpZmYgLS1naXQgYS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nX3RhYi5oIGIv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZ190YWIuaAotaW5kZXggNzMzMTU5NC4uZWI3
ZWYzOSAxMDA2NDQKK2luZGV4IGQwZTY5MWQuLjc0YTU2ZGEgMTAwNjQ0CiAtLS0gYS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nX3RhYi5oCiArKysgYi9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9nbHNsYW5nX3RhYi5oCiBAQCAtMSw1ICsxLDcgQEAKQEAgLTE1MywyMyArMzg2LDE3NSBA
QAogIC8qIEJpc29uIGludGVyZmFjZSBmb3IgWWFjYy1saWtlIHBhcnNlcnMgaW4gQwogIAogICAg
IENvcHlyaWdodCAoQykgMTk4NCwgMTk4OS0xOTkwLCAyMDAwLTIwMTUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuCitkaWZmIC0tZ2l0IGEvc3JjL2xpYkFOR0xFL0NhcHMuY3BwIGIvc3Jj
L2xpYkFOR0xFL0NhcHMuY3BwCitpbmRleCA0N2UxY2YwLi4wZjRkNjlkIDEwMDY0NAorLS0tIGEv
c3JjL2xpYkFOR0xFL0NhcHMuY3BwCisrKysgYi9zcmMvbGliQU5HTEUvQ2Fwcy5jcHAKK0BAIC03
Nyw3ICs3NywxMCBAQCB2b2lkIFRleHR1cmVDYXBzTWFwOjpjbGVhcigpCisgCisgY29uc3QgVGV4
dHVyZUNhcHMgJlRleHR1cmVDYXBzTWFwOjpnZXQoR0xlbnVtIGludGVybmFsRm9ybWF0KSBjb25z
dAorIHsKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKysjcHJhZ21hIEdDQyBkaWFnbm9z
dGljIGlnbm9yZWQgIi1XZXhpdC10aW1lLWRlc3RydWN0b3JzIgorICAgICBzdGF0aWMgVGV4dHVy
ZUNhcHMgZGVmYXVsdFVuc3VwcG9ydGVkVGV4dHVyZTsKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGlj
IHBvcAorICAgICBJbnRlcm5hbEZvcm1hdFRvQ2Fwc01hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9
IG1DYXBzTWFwLmZpbmQoaW50ZXJuYWxGb3JtYXQpOworICAgICByZXR1cm4gKGl0ZXIgIT0gbUNh
cHNNYXAuZW5kKCkpID8gaXRlci0+c2Vjb25kIDogZGVmYXVsdFVuc3VwcG9ydGVkVGV4dHVyZTsK
KyB9CitAQCAtNTk0LDcgKzU5NywxMCBAQCBjb25zdCBFeHRlbnNpb25JbmZvTWFwICZHZXRFeHRl
bnNpb25JbmZvTWFwKCkKKyAgICAgICAgIHJldHVybiBtYXA7CisgICAgIH07CisgCisrI3ByYWdt
YSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICIt
V2V4aXQtdGltZS1kZXN0cnVjdG9ycyIKKyAgICAgc3RhdGljIGNvbnN0IEV4dGVuc2lvbkluZm9N
YXAgZXh0ZW5zaW9uSW5mbyA9IGJ1aWxkRXh0ZW5zaW9uSW5mb01hcCgpOworKyNwcmFnbWEgR0ND
IGRpYWdub3N0aWMgcG9wCisgICAgIHJldHVybiBleHRlbnNpb25JbmZvOworIH0KKyAKK2RpZmYg
LS1naXQgYS9zcmMvbGliQU5HTEUvRGV2aWNlLmNwcCBiL3NyYy9saWJBTkdMRS9EZXZpY2UuY3Bw
CitpbmRleCBlYjMwYjIwLi5hOTRkNTAwIDEwMDY0NAorLS0tIGEvc3JjL2xpYkFOR0xFL0Rldmlj
ZS5jcHAKKysrKyBiL3NyYy9saWJBTkdMRS9EZXZpY2UuY3BwCitAQCAtMzgsNyArMzgsMTAgQEAg
c3RhdGljIHN0ZDo6c3RyaW5nIEdlbmVyYXRlRXh0ZW5zaW9uc1N0cmluZyhjb25zdCBUICZleHRl
bnNpb25zKQorIHR5cGVkZWYgc3RkOjpzZXQ8ZWdsOjpEZXZpY2UgKj4gRGV2aWNlU2V0OworIHN0
YXRpYyBEZXZpY2VTZXQgKkdldERldmljZVNldCgpCisgeworKyNwcmFnbWEgR0NDIGRpYWdub3N0
aWMgcHVzaAorKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdleGl0LXRpbWUtZGVz
dHJ1Y3RvcnMiCisgICAgIHN0YXRpYyBEZXZpY2VTZXQgZGV2aWNlczsKKysjcHJhZ21hIEdDQyBk
aWFnbm9zdGljIHBvcAorICAgICByZXR1cm4gJmRldmljZXM7CisgfQorIAogZGlmZiAtLWdpdCBh
L3NyYy9saWJBTkdMRS9EaXNwbGF5LmNwcCBiL3NyYy9saWJBTkdMRS9EaXNwbGF5LmNwcAotaW5k
ZXggYzk0ZGZmMi4uNGRlNTc5YiAxMDA2NDQKK2luZGV4IDkyZDdkZGEuLjU3MTExMTcgMTAwNjQ0
CiAtLS0gYS9zcmMvbGliQU5HTEUvRGlzcGxheS5jcHAKICsrKyBiL3NyYy9saWJBTkdMRS9EaXNw
bGF5LmNwcAotQEAgLTEzOSw2ICsxMzksNyBAQCByeDo6RGlzcGxheUltcGwgKkNyZWF0ZURpc3Bs
YXlGcm9tQXR0cmlicyhjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYk1hcCkKLSAgICAgc3dpdGNo
IChkaXNwbGF5VHlwZSkKK0BAIC05MCwyMSArOTAsMzAgQEAgdHlwZWRlZiBzdGQ6Om1hcDxFR0xO
YXRpdmVXaW5kb3dUeXBlLCBTdXJmYWNlKj4gV2luZG93U3VyZmFjZU1hcDsKKyAvLyBhc3NvY2lh
dGVkIHdpdGggaXQuCisgc3RhdGljIFdpbmRvd1N1cmZhY2VNYXAgKkdldFdpbmRvd1N1cmZhY2Vz
KCkKKyB7CisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisrI3ByYWdtYSBHQ0MgZGlhZ25v
c3RpYyBpZ25vcmVkICItV2V4aXQtdGltZS1kZXN0cnVjdG9ycyIKKyAgICAgc3RhdGljIFdpbmRv
d1N1cmZhY2VNYXAgd2luZG93U3VyZmFjZXM7CisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AK
KyAgICAgcmV0dXJuICZ3aW5kb3dTdXJmYWNlczsKKyB9CisgCisgdHlwZWRlZiBzdGQ6Om1hcDxF
R0xOYXRpdmVEaXNwbGF5VHlwZSwgRGlzcGxheSAqPiBBTkdMRVBsYXRmb3JtRGlzcGxheU1hcDsK
KyBzdGF0aWMgQU5HTEVQbGF0Zm9ybURpc3BsYXlNYXAgKkdldEFOR0xFUGxhdGZvcm1EaXNwbGF5
TWFwKCkKKyB7CisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisrI3ByYWdtYSBHQ0MgZGlh
Z25vc3RpYyBpZ25vcmVkICItV2V4aXQtdGltZS1kZXN0cnVjdG9ycyIKKyAgICAgc3RhdGljIEFO
R0xFUGxhdGZvcm1EaXNwbGF5TWFwIGRpc3BsYXlzOworKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMg
cG9wCisgICAgIHJldHVybiAmZGlzcGxheXM7CisgfQorIAorIHR5cGVkZWYgc3RkOjptYXA8RGV2
aWNlICosIERpc3BsYXkgKj4gRGV2aWNlUGxhdGZvcm1EaXNwbGF5TWFwOworIHN0YXRpYyBEZXZp
Y2VQbGF0Zm9ybURpc3BsYXlNYXAgKkdldERldmljZVBsYXRmb3JtRGlzcGxheU1hcCgpCisgewor
KyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAorKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdu
b3JlZCAiLVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMiCisgICAgIHN0YXRpYyBEZXZpY2VQbGF0Zm9y
bURpc3BsYXlNYXAgZGlzcGxheXM7CisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKKyAgICAg
cmV0dXJuICZkaXNwbGF5czsKKyB9CisgCitAQCAtOTIxLDcgKzkzMCwxMCBAQCBjb25zdCBDbGll
bnRFeHRlbnNpb25zICZEaXNwbGF5OjpnZXRDbGllbnRFeHRlbnNpb25zKCkKKyAKKyBjb25zdCBz
dGQ6OnN0cmluZyAmRGlzcGxheTo6Z2V0Q2xpZW50RXh0ZW5zaW9uU3RyaW5nKCkKKyB7CisrI3By
YWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVk
ICItV2V4aXQtdGltZS1kZXN0cnVjdG9ycyIKKyAgICAgc3RhdGljIGNvbnN0IHN0ZDo6c3RyaW5n
IGNsaWVudEV4dGVuc2lvbnNTdHJpbmcgPSBHZW5lcmF0ZUV4dGVuc2lvbnNTdHJpbmcoZ2V0Q2xp
ZW50RXh0ZW5zaW9ucygpKTsKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAorICAgICByZXR1
cm4gY2xpZW50RXh0ZW5zaW9uc1N0cmluZzsKKyB9CisgCitkaWZmIC0tZ2l0IGEvc3JjL2xpYkFO
R0xFL0hhbmRsZVJhbmdlQWxsb2NhdG9yLmNwcCBiL3NyYy9saWJBTkdMRS9IYW5kbGVSYW5nZUFs
bG9jYXRvci5jcHAKK2luZGV4IGYyMTlmOTUuLjM4MzFhY2EgMTAwNjQ0CistLS0gYS9zcmMvbGli
QU5HTEUvSGFuZGxlUmFuZ2VBbGxvY2F0b3IuY3BwCisrKysgYi9zcmMvbGliQU5HTEUvSGFuZGxl
UmFuZ2VBbGxvY2F0b3IuY3BwCitAQCAtMjIzLDQgKzIyMyw0IEBAIGJvb2wgSGFuZGxlUmFuZ2VB
bGxvY2F0b3I6OmlzVXNlZChHTHVpbnQgaGFuZGxlKSBjb25zdAorICAgICByZXR1cm4gY3VycmVu
dC0+c2Vjb25kID49IGhhbmRsZTsKKyB9CisgCistfSAgLy8gbmFtZXNwYWNlIGdsCitcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKKyt9ICAvLyBuYW1lc3BhY2UgZ2wKK2RpZmYgLS1naXQgYS9z
cmMvbGliQU5HTEUvSGFuZGxlUmFuZ2VBbGxvY2F0b3IuaCBiL3NyYy9saWJBTkdMRS9IYW5kbGVS
YW5nZUFsbG9jYXRvci5oCitpbmRleCAyMGY5YTExLi4xMDIzYTg0IDEwMDY0NAorLS0tIGEvc3Jj
L2xpYkFOR0xFL0hhbmRsZVJhbmdlQWxsb2NhdG9yLmgKKysrKyBiL3NyYy9saWJBTkdMRS9IYW5k
bGVSYW5nZUFsbG9jYXRvci5oCitAQCAtNTYsNCArNTYsNCBAQCBjbGFzcyBIYW5kbGVSYW5nZUFs
bG9jYXRvciBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQorIAorIH0gIC8vIG5hbWVzcGFjZSBn
bAorIAorLSNlbmRpZiAgLy8gTElCQU5HTEVfSEFORExFUkFOR0VBTExPQ0FUT1JfSF8KK1wgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQorKyNlbmRpZiAgLy8gTElCQU5HTEVfSEFORExFUkFOR0VB
TExPQ0FUT1JfSF8KK2RpZmYgLS1naXQgYS9zcmMvbGliQU5HTEUvUGF0aC5oIGIvc3JjL2xpYkFO
R0xFL1BhdGguaAoraW5kZXggYjEwM2M4NC4uODVmNDljMSAxMDA2NDQKKy0tLSBhL3NyYy9saWJB
TkdMRS9QYXRoLmgKKysrKyBiL3NyYy9saWJBTkdMRS9QYXRoLmgKK0BAIC02OCw0ICs2OCw0IEBA
IGNsYXNzIFBhdGggZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKKyAKKyB9ICAvLyBuYW1lc3Bh
Y2UgZ2wKKyAKKy0jZW5kaWYgIC8vIExJQkFOR0xFX1BBVEhfSF8KK1wgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQorKyNlbmRpZiAgLy8gTElCQU5HTEVfUEFUSF9IXworZGlmZiAtLWdpdCBhL3Ny
Yy9saWJBTkdMRS9mb3JtYXR1dGlscy5jcHAgYi9zcmMvbGliQU5HTEUvZm9ybWF0dXRpbHMuY3Bw
CitpbmRleCBmZjI4NWRkLi41NWE1ZmM4IDEwMDY0NAorLS0tIGEvc3JjL2xpYkFOR0xFL2Zvcm1h
dHV0aWxzLmNwcAorKysrIGIvc3JjL2xpYkFOR0xFL2Zvcm1hdHV0aWxzLmNwcAorQEAgLTYxNSw3
ICs2MTUsMTAgQEAgc3RhdGljIEludGVybmFsRm9ybWF0SW5mb01hcCBCdWlsZEludGVybmFsRm9y
bWF0SW5mb01hcCgpCisgCisgc3RhdGljIGNvbnN0IEludGVybmFsRm9ybWF0SW5mb01hcCAmR2V0
SW50ZXJuYWxGb3JtYXRNYXAoKQorIHsKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKysj
cHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZXhpdC10aW1lLWRlc3RydWN0b3JzIgor
ICAgICBzdGF0aWMgY29uc3QgSW50ZXJuYWxGb3JtYXRJbmZvTWFwIGZvcm1hdE1hcCA9IEJ1aWxk
SW50ZXJuYWxGb3JtYXRJbmZvTWFwKCk7CisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKKyAg
ICAgcmV0dXJuIGZvcm1hdE1hcDsKKyB9CisgCitAQCAtODU5LDcgKzg2MiwxMCBAQCBHTGVudW0g
R2V0U2l6ZWRJbnRlcm5hbEZvcm1hdChHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdMZW51bSB0eXBl
KQorIAorIGNvbnN0IEZvcm1hdFNldCAmR2V0QWxsU2l6ZWRJbnRlcm5hbEZvcm1hdHMoKQorIHsK
KysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGln
bm9yZWQgIi1XZXhpdC10aW1lLWRlc3RydWN0b3JzIgorICAgICBzdGF0aWMgRm9ybWF0U2V0IGZv
cm1hdFNldCA9IEJ1aWxkQWxsU2l6ZWRJbnRlcm5hbEZvcm1hdFNldCgpOworKyNwcmFnbWEgR0ND
IGRpYWdub3N0aWMgcG9wCisgICAgIHJldHVybiBmb3JtYXRTZXQ7CisgfQorIAorZGlmZiAtLWdp
dCBhL3NyYy9saWJBTkdMRS9yZW5kZXJlci9QYXRoSW1wbC5oIGIvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL1BhdGhJbXBsLmgKK2luZGV4IDM2MDdmNjkuLmNiMDNlZDYgMTAwNjQ0CistLS0gYS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvUGF0aEltcGwuaAorKysrIGIvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L1BhdGhJbXBsLmgKK0BAIC0zMyw0ICszMyw0IEBAIGNsYXNzIFBhdGhJbXBsIDogYW5nbGU6Ok5v
bkNvcHlhYmxlCisgCisgfSAgLy8gbmFtZXNwYWNlIHJ4CisgCistI2VuZGlmICAvLyBMSUJBTkdM
RV9SRU5ERVJFUl9QQVRISU1QTF9IXworXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisrI2Vu
ZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9QQVRISU1QTF9IXworZGlmZiAtLWdpdCBhL3NyYy9s
aWJBTkdMRS92YWxpZGF0aW9uRVMzLmNwcCBiL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMzLmNw
cAoraW5kZXggMmY5MzY1MS4uNDlhYTYwNCAxMDA2NDQKKy0tLSBhL3NyYy9saWJBTkdMRS92YWxp
ZGF0aW9uRVMzLmNwcAorKysrIGIvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMuY3BwCitAQCAt
NTI0LDcgKzUyNCwxMCBAQCBzdGF0aWMgYm9vbCBJc1ZhbGlkRVMzQ29weVRleEltYWdlQ29tYmlu
YXRpb24oY29uc3QgRm9ybWF0ICZ0ZXh0dXJlRm9ybWF0LAorICAgICBjb25zdCBhdXRvICZ0ZXh0
dXJlRm9ybWF0SW5mbyAgICAgPSAqdGV4dHVyZUZvcm1hdC5pbmZvOworICAgICBjb25zdCBhdXRv
ICZmcmFtZWJ1ZmZlckZvcm1hdEluZm8gPSAqZnJhbWVidWZmZXJGb3JtYXQuaW5mbzsKKyAKKysj
cHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9y
ZWQgIi1XZXhpdC10aW1lLWRlc3RydWN0b3JzIgorICAgICBzdGF0aWMgY29uc3QgQ29weUNvbnZl
cnNpb25TZXQgY29udmVyc2lvblNldCA9IEJ1aWxkVmFsaWRFUzNDb3B5VGV4SW1hZ2VDb21iaW5h
dGlvbnMoKTsKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAorICAgICBpZiAoY29udmVyc2lv
blNldC5maW5kKENvcHlDb252ZXJzaW9uKHRleHR1cmVGb3JtYXRJbmZvLmZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlckZvcm1hdElu
Zm8uZm9ybWF0KSkgIT0gY29udmVyc2lvblNldC5lbmQoKSkKICAgICAgewotICAgICAgIGNhc2Ug
RUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfREVGQVVMVF9BTkdMRToKLSsjaWYgZGVmaW5lZChBTkdM
RV9FTkFCTEVfT1BFTkdMKQotICNpZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9EM0Q5KSB8fCBkZWZp
bmVkKEFOR0xFX0VOQUJMRV9EM0QxMSkKLSAgICAgICAgIC8vIERlZmF1bHQgdG8gRDNEIGRpc3Bs
YXlzCi0gICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5RDNEKCk7Ci1AQCAtMTUwLDYgKzE1
MSw3IEBAIHJ4OjpEaXNwbGF5SW1wbCAqQ3JlYXRlRGlzcGxheUZyb21BdHRyaWJzKGNvbnN0IEF0
dHJpYnV0ZU1hcCAmYXR0cmliTWFwKQotICAgICAgICAgLy8gTm8gZGlzcGxheSBhdmFpbGFibGUK
LSAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gI2VuZGlmCi0rI2VuZGlmCi0gICAgICAgICBicmVh
azsKLSAKLSAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDlfQU5HTEU6Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9jb2RlcmV2aWV3LnNldHRpbmdzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2NvZGVyZXZpZXcuc2V0dGluZ3MJKHJldmlz
aW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2NvZGVyZXZpZXcuc2V0dGlu
Z3MJKHdvcmtpbmcgY29weSkKQEAgLTIsMyArMiw0IEBACiBDT0RFX1JFVklFV19TRVJWRVI6IGh0
dHBzOi8vY2hyb21pdW0tcmV2aWV3Lmdvb2dsZXNvdXJjZS5jb20KIEdFUlJJVF9IT1NUOiBUcnVl
CiBUUllTRVJWRVJfR0VSUklUX1VSTDogaHR0cHM6Ly9jaHJvbWl1bS1yZXZpZXcuZ29vZ2xlc291
cmNlLmNvbQorR0VSUklUX1NRVUFTSF9VUExPQURTOiBGYWxzZQpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9BTkdMRV9kZXB0aF90ZXh0dXJlLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0FOR0xFX2RlcHRoX3RleHR1
cmUudHh0CShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRl
bnNpb25zL0FOR0xFX2RlcHRoX3RleHR1cmUudHh0CShub25leGlzdGVudCkKQEAgLTEsNDAyICsw
LDAgQEAKLU5hbWUKLQotICAgIEFOR0xFX2RlcHRoX3RleHR1cmUKLQotTmFtZSBTdHJpbmdzCi0K
LSAgICBHTF9BTkdMRV9kZXB0aF90ZXh0dXJlCi0KLUNvbnRyaWJ1dG9ycwotCi0gICAgTmljb2xh
cyBDYXBlbnMsIFRyYW5zR2FtaW5nCi0gICAgRGFuaWVsIEtvY2gsIFRyYW5zR2FtaW5nCi0gICAg
U2hhbm5vbiBXb29kcywgVHJhbnNHYW1pbmcKLSAgICBLZW5uZXRoIFJ1c3NlbGwsIEdvb2dsZQot
ICAgIFZhbmdlbGlzIEtva2tldmlzLCBHb29nbGUKLSAgICBHcmVnZyBUYXZhcmVzLCBHb29nbGUK
LSAgICBDb250cmlidXRvcnMgdG8gT0VTX2RlcHRoX3RleHR1cmUKLSAgICBDb250cmlidXRvcnMg
dG8gT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsCi0KLUNvbnRhY3QKLQotICAgIFNoYW5ub24gV29v
ZHMsIFRyYW5zR2FtaW5nIChzaGFubm9uICdkb3QnIHdvb2RzICdhdCcgdHJhbnNnYW1pbmcuY29t
KQotCi1TdGF0dXMKLQotICAgIEltcGxlbWVudGVkIGluIEFOR0xFLgotCi1WZXJzaW9uCi0KLSAg
ICBMYXN0IE1vZGlmaWVkIERhdGU6IEZlYnJ1YXJ5IDI1LCAyMDEzCi0gICAgUmV2aXNpb246ICM0
Ci0KLU51bWJlcgotCi0gICAgVEJECi0KLURlcGVuZGVuY2llcwotCi0gICAgT3BlbkdMIEVTIDIu
MCBpcyByZXF1aXJlZC4KLSAgICBUaGlzIGV4dGVuc2lvbiBpcyB3cml0dGVuIGFnYWluc3QgdGhl
IE9wZW5HTCBFUyAyLjAuMjUgc3BlY2lmaWNhdGlvbgotCi0gICAgT0VTX3BhY2tlZF9kZXB0aF9z
dGVuY2lsIGFmZmVjdHMgdGhlIGRlZmluaXRpb24gb2YgdGhpcyBleHRlbnNpb24uCi0KLSAgICBF
WFRfdGV4dHVyZV9zdG9yYWdlIGFmZmVjdHMgdGhlIGRlZmluaXRpb24gb2YgdGhpcyBleHRlbnNp
b24uCi0KLU92ZXJ2aWV3Ci0KLSAgICBUaGlzIGV4dGVuc2lvbiBkZWZpbmVzIHN1cHBvcnQgZm9y
IDJEIGRlcHRoIGFuZCBkZXB0aC1zdGVuY2lsCi0gICAgdGV4dHVyZXMgaW4gYW4gT3BlbkdMIEVT
IGltcGxlbWVudGF0aW9uLgotCi0gICAgVGhpcyBleHRlbnNpb24gaW5jb3Jwb3JhdGVzIHRoZSBk
ZXB0aCB0ZXh0dXJpbmcgZnVuY3Rpb25hbGl0eSBvZiAKLSAgICBPRVNfZGVwdGhfdGV4dHVyZSBh
bmQgT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsLCBidXQgZG9lcyBub3QgCi0gICAgcHJvdmlkZSB0
aGUgYWJpbGl0eSB0byBsb2FkIGV4aXN0aW5nIGRhdGEgdmlhIFRleEltYWdlMkQgb3IKLSAgICBU
ZXhTdWJJbWFnZTJELiBUaGlzIGV4dGVuc2lvbiBhbHNvIGFsbG93cyBpbXBsZW1lbnRhdGlvbiAK
LSAgICB2YXJpYWJpbGl0eSBpbiB3aGljaCBjb21wb25lbnRzIGZyb20gYSBzYW1wbGVkIGRlcHRo
IHRleHR1cmUKLSAgICBjb250YWluIHRoZSBkZXB0aCBkYXRhLiBEZXB0aCB0ZXh0dXJlcyBjcmVh
dGVkIHdpdGggdGhpcwotICAgIGV4dGVuc2lvbiBvbmx5IHN1cHBvcnQgMSBsZXZlbC4KLQotTmV3
IFByb2NlZHVyZXMgYW5kIEZ1bmN0aW9ucwotCi0gICAgTm9uZQotCi1OZXcgVG9rZW5zCi0KLSAg
ICBBY2NlcHRlZCBieSB0aGUgPGZvcm1hdD4gcGFyYW1ldGVyIG9mIFRleEltYWdlMkQgYW5kIFRl
eFN1YkltYWdlMkQgYW5kCi0gICAgPGludGVybmFsZm9ybWF0PiBwYXJhbWV0ZXIgb2YgVGV4SW1h
Z2UyRDoKLSAgICAKLSAgICAgICAgREVQVEhfQ09NUE9ORU5UICAgICAgICAgICAgIDB4MTkwMgot
ICAgICAgICBERVBUSF9TVEVOQ0lMX09FUyAgICAgICAgICAgMHg4NEY5Ci0gICAgICAgIAotICAg
IEFjY2VwdGVkIGJ5IHRoZSA8dHlwZT4gcGFyYW1ldGVyIG9mIFRleEltYWdlMkQsIFRleFN1Yklt
YWdlMkQ6IAotCi0gICAgICAgIFVOU0lHTkVEX1NIT1JUICAgICAgICAgICAgICAweDE0MDMKLSAg
ICAgICAgVU5TSUdORURfSU5UICAgICAgICAgICAgICAgIDB4MTQwNQotICAgICAgICBVTlNJR05F
RF9JTlRfMjRfOF9PRVMgICAgICAgMHg4NEZBCi0KLSAgICBBY2NlcHRlZCBieSB0aGUgPGludGVy
bmFsZm9ybWF0PiBwYXJhbWV0ZXIgb2YgVGV4U3RvcmFnZTJERVhUOgotCi0gICAgICAgIERFUFRI
X0NPTVBPTkVOVDE2ICAgICAgICAgICAweDgxQTUKLSAgICAgICAgREVQVEhfQ09NUE9ORU5UMzJf
T0VTICAgICAgIDB4ODFBNwotICAgICAgICBERVBUSDI0X1NURU5DSUw4X09FUyAgICAgICAgMHg4
OEYwCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDIgb2YgdGhlIE9wZW5HTCBFUyAyLjAgU3BlY2lm
aWNhdGlvbiAoT3BlbkdMIE9wZXJhdGlvbikKLQotICAgIFVwZGF0ZSBTZWN0aW9uIDIuMTAuNSAi
U2hhZGVyIEV4ZWN1dGlvbiIgaW4gdGhlIHN1YnNlY3Rpb24gdGl0bGVkIAotICAgICJUZXh0dXJl
IEFjY2VzcyIgYWRkIGEgbmV3IHBhcmFncmFwaCBiZWZvcmUgdGhlIGxhc3QgcGFyYWdyYXBoIGFk
ZAotICAgIHRoaXMgbGluZToKLQotICAgICJUaGUgc3RlbmNpbCBpbmRleCB0ZXh0dXJlIGludGVy
bmFsIGNvbXBvbmVudCBpcyBpZ25vcmVkIGlmIHRoZSBiYXNlCi0gICAgaW50ZXJuYWwgZm9ybWF0
IGlzIERFUFRIX1NURU5DSUxfT0VTLgotCi0gICAgSWYgYSB2ZXJ0ZXggc2hhZGVyIHVzZXMuLi4i
Ci0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDMgb2YgdGhlIE9wZW5HTCBFUyAyLjAgc3BlY2lmaWNh
dGlvbiAoUmFzdGVyaXphdGlvbikKLQotICAgIEFkZCB0aGUgZm9sbG93aW5nIHJvd3MgdG8gVGFi
bGUgMy4yIChwYWdlIDYyKToKLQotICAgICAgdHlwZSBQYXJhbWV0ZXIgICAgICAgICAgIEdMIERh
dGEgVHlwZSAgICBTcGVjaWFsCi0gICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAuLi4gICAg
ICAgICAgICAgIC4uLgotICAgICAgVU5TSUdORURfU0hPUlQgICAgICAgICAgIHVzaG9ydCAgICAg
ICAgICAgTm8KLSAgICAgIFVOU0lHTkVEX0lOVCAgICAgICAgICAgICB1aW50ICAgICAgICAgICAg
IE5vCi0gICAgICBVTlNJR05FRF9JTlRfMjRfOF9PRVMgICAgdWludCAgICAgICAgICAgICBZZXMK
LQotICAgIEFkZCB0aGUgZm9sbG93aW5nIHJvd3MgdG8gVGFibGUgMy4zIChwYWdlIDYyKToKLQot
ICAgICAgRm9ybWF0IE5hbWUgICAgICAgRWxlbWVudCBNZWFuaW5nIGFuZCBPcmRlciAgICAgIFRh
cmdldCBCdWZmZXIKLSAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgLi4uICAgICAgICAgICAgICAgLi4u
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLgotICAgICAgREVQVEhfQ09NUE9ORU5UICAg
RGVwdGggICAgICAgICAgICAgICAgICAgICAgICAgIERlcHRoCi0gICAgICBERVBUSF9TVEVOQ0lM
X09FUyBEZXB0aCBhbmQgU3RlbmNpbCBJbmRleCAgICAgICAgRGVwdGggYW5kIFN0ZW5jaWwKLSAg
ICAgIC4uLiAgICAgICAgICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4K
LQotICAgIEFkZCBhIHJvdyB0byBUYWJsZSAzLjUgIlBhY2tlZCBwaXhlbCBmb3JtYXRzIiAocGFn
ZSA2NCk6Ci0KLSAgICAgIHR5cGUgUGFyYW1ldGVyICAgICAgICAgICAgICAgR0wgVHlwZSAgQ29t
cG9uZW50cyAgUGl4ZWwgRm9ybWF0cwotICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAuLi4gICAgICAg
ICAgICAgICAgICAgICAgICAgIC4uLiAgICAgIC4uLiAgICAgICAgIC4uLgotICAgICAgVU5TSUdO
RURfSU5UXzI0XzhfT0VTICAgICAgICB1aW50ICAgICAyICAgICAgICAgICBERVBUSF9TVEVOQ0lM
X09FUwotCi0gICAgQWRkIGEgbmV3IHRhYmxlIGFmdGVyIFRhYmxlIDMuNiAocGFnZSA2NCk6Ci0K
LSAgICBVTlNJR05FRF9JTlRfMjRfOF9PRVMKLQotICAgICAgIDMxIDMwIDI5IDI4IDI3IDI2IC4u
LiAxMiAxMSAxMCA5IDggNyA2IDUgNCAzIDIgMSAwCi0gICAgICArLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rCi0gICAgICB8ICAgICAgICAgICAxc3Qg
Q29tcG9uZW50ICAgICAgICAgIHwgMm5kIENvbXBvbmVudCB8Ci0gICAgICArLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rCi0KLSAgICAgIFRhYmxlIDMu
Ni5COiBVTlNJR05FRF9JTlQgZm9ybWF0cwotCi0gICAgQWRkIGEgcm93IHRvIFRhYmxlIDMuNyAi
UGFja2VkIHBpeGVsIGZpZWxkIGFzc2lnbm1lbnRzIiAocGFnZSA2NSk6Ci0KLSAgICAgIEZvcm1h
dCAgICAgICAgICAgIHwgIDFzdCAgICAgMm5kICAgICAzcmQgICAgIDR0aAotICAgICAgLS0tLS0t
LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgIC4uLiAg
ICAgICAgICAgICAgIHwgIC4uLiAgICAgLi4uICAgICAuLi4gICAgIC4uLgotICAgICAgREVQVEhf
U1RFTkNJTF9PRVMgfCAgZGVwdGggICBzdGVuY2lsIE4vQSAgICAgTi9BCi0KLSAgICBBZGQgdGhl
IGZvbGxvd2luZyBwYXJhZ3JhcGggdG8gdGhlIGVuZCBvZiB0aGUgc2VjdGlvbiAiQ29udmVyc2lv
biB0bwotICAgIGZsb2F0aW5nLXBvaW50IiAocGFnZSA2NSk6Ci0KLSAgICAiRm9yIGdyb3VwcyBv
ZiBjb21wb25lbnRzIHRoYXQgY29udGFpbiBib3RoIHN0YW5kYXJkIGNvbXBvbmVudHMgYW5kIGlu
ZGV4Ci0gICAgZWxlbWVudHMsIHN1Y2ggYXMgREVQVEhfU1RFTkNJTF9PRVMsIHRoZSBpbmRleCBl
bGVtZW50cyBhcmUgbm90IGNvbnZlcnRlZC4iCi0KLSAgICBJbiBzZWN0aW9uIDMuNy4xICJUZXh0
dXJlIEltYWdlIFNwZWNpZmljYXRpb24iLCB1cGRhdGUgcGFnZSA2NyB0bwotICAgIHNheToKLQot
ICAgICJUaGUgc2VsZWN0ZWQgZ3JvdXBzIGFyZSBwcm9jZXNzZWQgYXMgZGVzY3JpYmVkIGluIHNl
Y3Rpb24gMy42LjIsIHN0b3BwaW5nCi0gICAganVzdCBiZWZvcmUgZmluYWwgY29udmVyc2lvbi4g
IEVhY2ggUiwgRywgQiwgQSwgb3IgZGVwdGggdmFsdWUgc28gZ2VuZXJhdGVkCi0gICAgaXMgY2xh
bXBlZCB0byBbMCwgMV0sIHdoaWxlIHRoZSBzdGVuY2lsIGluZGV4IHZhbHVlcyBhcmUgbWFza2Vk
IGJ5IDJebi0xLAotICAgIHdoZXJlIG4gaXMgdGhlIG51bWJlciBvZiBzdGVuY2lsIGJpdHMgaW4g
dGhlIGludGVybmFsIGZvcm1hdCByZXNvbHV0aW9uCi0gICAgKHNlZSBiZWxvdykuCi0KLSAgICBD
b21wb25lbnRzIGFyZSB0aGVuIHNlbGVjdGVkIGZyb20gdGhlIHJlc3VsdGluZyBSLCBHLCBCLCBB
LCBkZXB0aCwgb3IKLSAgICBzdGVuY2lsIGluZGV4IHZhbHVlcyB0byBvYnRhaW4gYSB0ZXh0dXJl
IHdpdGggdGhlIGJhc2UgaW50ZXJuYWwgZm9ybWF0Ci0gICAgc3BlY2lmaWVkIGJ5IDxpbnRlcm5h
bGZvcm1hdD4uICBUYWJsZSAzLjggc3VtbWFyaXplcyB0aGUgbWFwcGluZyBvZiBSLCBHLAotICAg
IEIsIEEsIGRlcHRoLCBvciBzdGVuY2lsIHZhbHVlcyB0byB0ZXh0dXJlIGNvbXBvbmVudHMsIGFz
IGEgZnVuY3Rpb24gb2YgdGhlCi0gICAgYmFzZSBpbnRlcm5hbCBmb3JtYXQgb2YgdGhlIHRleHR1
cmUgaW1hZ2UuICA8aW50ZXJuYWxmb3JtYXQ+IG1heSBiZQotICAgIHNwZWNpZmllZCBhcyBvbmUg
b2YgdGhlIGludGVybmFsIGZvcm1hdCBzeW1ib2xpYyBjb25zdGFudHMgbGlzdGVkIGluCi0gICAg
dGFibGUgMy44LiBTcGVjaWZ5aW5nIGEgdmFsdWUgZm9yIDxpbnRlcm5hbGZvcm1hdD4gdGhhdCBp
cyBub3Qgb25lIG9mIHRoZQotICAgIGFib3ZlIHZhbHVlcyBnZW5lcmF0ZXMgdGhlIGVycm9yIElO
VkFMSURfVkFMVUUuIElmIDxpbnRlcm5hbGZvcm1hdD4gZG9lcwotICAgIG5vdCBtYXRjaCA8Zm9y
bWF0PiwgdGhlIGVycm9yIElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZC4KLQotICAgIFRl
eHR1cmVzIHdpdGggYSBiYXNlIGludGVybmFsIGZvcm1hdCBvZiBERVBUSF9DT01QT05FTlQgb3Ig
Ci0gICAgREVQVEhfU1RFTkNJTF9PRVMgYXJlIHN1cHBvcnRlZCBieSB0ZXh0dXJlIGltYWdlIHNw
ZWNpZmljYXRpb24gY29tbWFuZHMKLSAgICBvbmx5IGlmIDx0YXJnZXQ+IGlzIFRFWFRVUkVfMkQu
ICBVc2luZyB0aGVzZSBmb3JtYXRzIGluIGNvbmp1bmN0aW9uIHdpdGgKLSAgICBhbnkgb3RoZXIg
PHRhcmdldD4gd2lsbCByZXN1bHQgaW4gYW4gSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IuCi0KLSAg
ICBUZXh0dXJlcyB3aXRoIGEgYmFzZSBpbnRlcm5hbCBmb3JtYXQgb2YgREVQVEhfQ09NUE9ORU5U
IG9yCi0gICAgREVQVEhfU1RFTkNJTF9PRVMgb25seSBzdXBwb3J0IG9uZSBsZXZlbCBvZiBpbWFn
ZSBkYXRhLiAgU3BlY2lmeWluZyBhCi0gICAgbm9uLXplcm8gdmFsdWUgZm9yIDxsZXZlbD4gd2ls
bCByZXN1bHQgaW4gYW4gSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IuCi0KLSAgICBUZXh0dXJlcyB3
aXRoIGEgYmFzZSBpbnRlcm5hbCBmb3JtYXQgb2YgREVQVEhfQ09NUE9ORU5UIG9yIERFUFRIX1NU
RU5DSUxfT0VTCi0gICAgcmVxdWlyZSBlaXRoZXIgZGVwdGggY29tcG9uZW50IGRhdGEgb3IgZGVw
dGgvc3RlbmNpbCBjb21wb25lbnQgZGF0YS4KLSAgICBUZXh0dXJlcyB3aXRoIG90aGVyIGJhc2Ug
aW50ZXJuYWwgZm9ybWF0cyByZXF1aXJlIFJHQkEgY29tcG9uZW50IGRhdGEuICBUaGUKLSAgICBl
cnJvciBJTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgdGhlIGJhc2UgaW50ZXJuYWwg
Zm9ybWF0IGlzCi0gICAgREVQVEhfQ09NUE9ORU5UIG9yIERFUFRIX1NURU5DSUxfT0VTIGFuZCA8
Zm9ybWF0PiBpcyBub3QgREVQVEhfQ09NUE9ORU5UIG9yCi0gICAgREVQVEhfU1RFTkNJTF9PRVMs
IG9yIGlmIHRoZSBiYXNlIGludGVybmFsIGZvcm1hdCBpcyBub3QgREVQVEhfQ09NUE9ORU5UIG9y
Ci0gICAgREVQVEhfU1RFTkNJTF9PRVMgYW5kIDxmb3JtYXQ+IGlzIERFUFRIX0NPTVBPTkVOVCBv
ciBERVBUSF9TVEVOQ0lMX09FUy4KLQotICAgIFRleHR1cmVzIHdpdGggYSBiYXNlIGludGVybmFs
IGZvcm1hdCBvZiBERVBUSF9DT01QT05FTlQgb3IKLSAgICBERVBUSF9TVEVOQ0lMX09FUyBkbyBu
b3Qgc3VwcG9ydCBsb2FkaW5nIGltYWdlIGRhdGEgdmlhIHRoZSBUZXhJbWFnZQotICAgIGNvbW1h
bmRzLiBUaGV5IGNhbiBvbmx5IGhhdmUgdGhlaXIgY29udGVudHMgc3BlY2lmaWVkIGJ5IHJlbmRl
cmluZwotICAgIHRvIHRoZW0uIFRoZSBJTlZBTElEX09QRVJBVElPTiBlcnJvciBpcyBnZW5lcmF0
ZWQgYnkgdGhlIFRleEltYWdlMkQKLSAgICBjb21tYW5kIGlmIDxkYXRhPiBpcyBub3QgTlVMTCBm
b3Igc3VjaCB0ZXh0dXJlcy4iCi0KLSAgICBBZGQgYSByb3cgdG8gdGFibGUgMy44IChwYWdlIDY4
KSwgYW5kIHVwZGF0ZSB0aGUgdGl0bGUgb2YgdGhlCi0gICAgc2Vjb25kIGNvbHVtbjoKLQotICAg
ICAgQmFzZSBJbnRlcm5hbCBGb3JtYXQgIFJHQkEsIERlcHRoIGFuZCBTdGVuY2lsIFZhbHVlcyAg
SW50ZXJuYWwgQ29tcG9uZW50cwotICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgLi4uICAg
ICAgICAgICAgICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uCi0gICAg
ICBERVBUSF9DT01QT05FTlQgICAgICAgRGVwdGggICAgICAgICAgICAgICAgICAgICAgICAgICBE
Ci0gICAgICBERVBUSF9TVEVOQ0lMX09FUyAgICAgRGVwdGgsU3RlbmNpbCAgICAgICAgICAgICAg
ICAgICBELFMKLSAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAuLi4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC4uLgotCi0gICAgVXBkYXRlIHRoZSBjYXB0aW9uIGZvciB0YWJsZSAzLjgg
KHBhZ2UgNjgpCi0KLSAgICAiVGFibGUgMy44OiBDb252ZXJzaW9uIGZyb20gUkdCQSwgZGVwdGgs
IGFuZCBzdGVuY2lsIHBpeGVsIGNvbXBvbmVudHMgdG8KLSAgICBpbnRlcm5hbCB0ZXh0dXJlIGNv
bXBvbmVudHMuICBUZXh0dXJlIGNvbXBvbmVudHMgUiwgRywgQiwgQSwgYW5kIEwgYXJlIAotICAg
IGNvbnZlcnRlZCBiYWNrIHRvIFJHQkEgY29sb3JzIGR1cmluZyBmaWx0ZXJpbmcgYXMgc2hvd24g
aW4gdGFibGUgMy4xMi4KLSAgICBUZXh0dXJlIGNvbXBvbmVudHMgRCBhcmUgY29udmVydGVkIHRv
IFJHQkEgY29sb3JzIGFzIGRlc2NyaWJlZCBpbiAKLSAgICBzZWN0aW9uIDMuNy44LTEvMi4iCi0K
LSAgICBBZGQgdGhlIGZvbGxvd2luZyB0byBzZWN0aW9uIDMuNy4yICJBbHRlcm5hdGUgVGV4dHVy
ZSBJbWFnZSBTcGVjaWZpY2F0aW9uCi0gICAgQ29tbWFuZHMiOgotCi0gICAgIkNvcHlUZXhJbWFn
ZTJEIGFuZCBDb3B5VGV4U3ViSW1hZ2UyRCBnZW5lcmF0ZSB0aGUgSU5WQUxJRF9PUEVSQVRJT04g
Ci0gICAgZXJyb3IgaWYgdGhlIGJhc2UgaW50ZXJuYWwgZm9ybWF0IG9mIHRoZSBkZXN0aW5hdGlv
biB0ZXh0dXJlIGlzIAotICAgIERFUFRIX0NPTVBPTkVOVCBvciBERVBUSF9TVEVOQ0lMX09FUy4K
LQotICAgIFRleFN1YkltYWdlMkQgZ2VuZXJhdGVzIHRoZSBJTlZBTElEX09QRVJBVElPTiBlcnJv
ciBpZiB0aGUgYmFzZSBpbnRlcm5hbAotICAgIGZvcm1hdCBvZiB0aGUgdGV4dHVyZSBpcyBERVBU
SF9DT01QT05FTlQgb3IgREVQVEhfU1RFTkNJTF9PRVMuIgotCi0gICAgQWRkIGEgbmV3IHNlY3Rp
b24gYmV0d2VlbiBzZWN0aW9ucyAzLjcuOCBhbmQgMy43Ljk6Ci0KLSAgICAiMy43LjgtMS8yIERl
cHRoL1N0ZW5jaWwgVGV4dHVyZXMKLQotICAgIElmIHRoZSBjdXJyZW50bHkgYm91bmQgdGV4dHVy
ZSdzIGJhc2UgaW50ZXJuYWwgZm9ybWF0IGlzIERFUFRIX0NPTVBPTkVOVCBvcgotICAgIERFUFRI
X1NURU5DSUxfT0VTLCB0aGVuIHRoZSBvdXRwdXQgb2YgdGhlIHRleHR1cmUgdW5pdCBpcyBhcyBk
ZXNjcmliZWQKLSAgICBiZWxvdy4gT3RoZXJ3aXNlLCB0aGUgdGV4dHVyZSB1bml0IG9wZXJhdGVz
IGluIHRoZSBub3JtYWwgbWFubmVyLgotCi0gICAgTGV0IDxEX3Q+IGJlIHRoZSBkZXB0aCB0ZXh0
dXJlIHZhbHVlLCBwcm92aWRlZCBieSB0aGUgc2hhZGVyJ3MgdGV4dHVyZSBsb29rdXAKLSAgICBm
dW5jdGlvbi4gVGhlbiB0aGUgZWZmZWN0aXZlIHRleHR1cmUgdmFsdWUgaXMgY29tcHV0ZWQgYXMg
Zm9sbG93czoKLSAgICAgICAgICAgIDxUYXU+ID0gPERfdD4KLQotICAgIElmIHRoZSB0ZXh0dXJl
IGltYWdlIGhhcyBhIGJhc2UgaW50ZXJuYWwgZm9ybWF0IG9mIERFUFRIX1NURU5DSUxfT0VTLCB0
aGVuCi0gICAgdGhlIHN0ZW5jaWwgaW5kZXggdGV4dHVyZSBjb21wb25lbnQgaXMgaWdub3JlZC4g
IFRoZSB0ZXh0dXJlIHZhbHVlIDxUYXU+IGRvZXMKLSAgICBub3QgaW5jbHVkZSBhIHN0ZW5jaWwg
aW5kZXggY29tcG9uZW50LCBidXQgaW5jbHVkZXMgb25seSB0aGUgZGVwdGgKLSAgICBjb21wb25l
bnQuCi0KLSAgICBUaGUgcmVzdWx0aW5nIDxUYXU+IGlzIGFzc2lnbmVkIHRvIDxSX3Q+LiBJbiBz
b21lIGltcGxlbWVudGF0aW9ucywgPFRhdT4gaXMKLSAgICBhbHNvIGFzc2lnbmVkIHRvIDxHX3Q+
LCA8Ql90Piwgb3IgPEFfdD4uIFRodXMgaW4gdGFibGUgMy4xMiwgdGV4dHVyZXMgd2l0aAotICAg
IGRlcHRoIGNvbXBvbmVudCBkYXRhIGJlaGF2ZSBhcyBpZiB0aGVpciBiYXNlIGludGVybmFsIGZv
cm1hdCBpcyBSR0JBLCB3aXRoCi0gICAgdmFsdWVzIGluIDxHX3Q+LCA8Ql90PiwgYW5kIDxBX3Q+
IGJlaW5nIGltcGxlbWVudGF0aW9uIGRlcGVuZGVudC4iCi0KLSAgICBBZGQgdGhlIGZvbGxvd2lu
ZyB0byBzZWN0aW9uIDMuNy4xMSAiTWlwbWFwIEdlbmVyYXRpb24iOgotCi0gICAgIklmIHRoZSBs
ZXZlbCB6ZXJvIGFycmF5IGNvbnRhaW5zIGRlcHRoIG9yIGRlcHRoLXN0ZW5jaWwgZGF0YSwgdGhl
Ci0gICAgIGVycm9yIElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZC4iCi0KLSAgICBJbnNl
cnQgYSBuZXcgcGFyYWdyYXBoIGFmdGVyIHRoZSBmaXJzdCBwYXJhZ3JhcGggb2YgdGhlICJUZXh0
dXJlIEFjY2VzcyIKLSAgICBzdWJzZWN0aW9uIG9mIHNlY3Rpb24gMy44LjIgb24gcGFnZSA4Nywg
d2hpY2ggc2F5czoKLQotICAgICJUZXh0dXJlIGxvb2t1cHMgaW52b2x2aW5nIHRleHR1cmVzIHdp
dGggZGVwdGggY29tcG9uZW50IGRhdGEgZ2VuZXJhdGUKLSAgICBhIHRleHR1cmUgc291cmNlIGNv
bG9yIGJ5IHVzaW5nIGRlcHRoIGRhdGEgZGlyZWN0bHksIGFzIGRlc2NyaWJlZCBpbgotICAgIHNl
Y3Rpb24gMy43LjgtMS8yLiAgVGhlIHN0ZW5jaWwgdGV4dHVyZSBpbnRlcm5hbCBjb21wb25lbnQg
aXMgaWdub3JlZAotICAgIGlmIHRoZSBiYXNlIGludGVybmFsIGZvcm1hdCBpcyBERVBUSF9TVEVO
Q0lMX09FUy4iCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDQgb2YgdGhlIE9wZW5HTCBFUyAyLjAg
c3BlY2lmaWNhdGlvbiAoUGVyLUZyYWdtZW50Ci1PcGVyYXRpb25zIGFuZCB0aGUgRnJhbWVidWZm
ZXIpCi0KLSAgICBJbiBzZWN0aW9uIDQuNC41ICJGcmFtZWJ1ZmZlciBDb21wbGV0ZW5lc3MiLCBy
ZXBsYWNlIHRoZSB0aGUgM3JkCi0gICAgcGFyYWdyYXBoIHdpdGggdGhlIGZvbGxvd2luZyB0ZXh0
OgotCi0gICAgICIqIEFuIGludGVybmFsIGZvcm1hdCBpcyBjb2xvci1yZW5kZXJhYmxlIGlmIGl0
IGlzIG9uZSBvZiB0aGUgZm9ybWF0cwotICAgICAgICBmcm9tIHRhYmxlIDQuNSBub3RlZCBhcyBj
b2xvci1yZW5kZXJhYmxlIG9yIGlmIGl0IGlzIHVuc2l6ZWQgZm9ybWF0Ci0gICAgICAgIFJHQkEg
b3IgUkdCLiBObyBvdGhlciBmb3JtYXRzLCBpbmNsdWRpbmcgY29tcHJlc3NlZCBpbnRlcm5hbCBm
b3JtYXRzLAotICAgICAgICBhcmUgY29sb3ItcmVuZGVyYWJsZS4KLQotICAgICAgKiBBbiBpbnRl
cm5hbCBmb3JtYXQgaXMgZGVwdGgtcmVuZGVyYWJsZSBpZiBpdCBpcyBvbmUgb2YgdGhlIHNpemVk
Ci0gICAgICAgIGludGVybmFsIGZvcm1hdHMgZnJvbSB0YWJsZSA0LjUgbm90ZWQgYXMgZGVwdGgt
cmVuZGVyYWJsZSwgaWYgaXQKLSAgICAgICAgaXMgdGhlIHVuc2l6ZWQgZm9ybWF0IERFUFRIX0NP
TVBPTkVOVCBvciBpZiBpdCBpcyB0aGUgaW50ZXJuYWwgCi0gICAgICAgIGZvcm1hdCB2YWx1ZSBv
ZiBERVBUSDI0X1NURU5DSUw4X09FUy4gTm8gb3RoZXIgZm9ybWF0cyBhcmUgCi0gICAgICAgIGRl
cHRoLXJlbmRlcmFibGUuCi0KLSAgICAgICogQW4gaW50ZXJuYWwgZm9ybWF0IGlzIHN0ZW5jaWwt
cmVuZGVyYWJsZSBpZiBpdCBpcyBvbmUgb2YgdGhlIHNpemVkIAotICAgICAgICBpbnRlcm5hbCBm
b3JtYXRzIGZyb20gdGFibGUgNC41IG5vdGVkIGFzIHN0ZW5jaWwtcmVuZGVyYWJsZSBvciBpZiBp
dAotICAgICAgICBpcyBERVBUSDI0X1NURU5DSUw4X09FUy4gTm8gb3RoZXIgZm9ybWF0cyBhcmUg
c3RlbmNpbC1yZW5kZXJhYmxlLiIKLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgNSBvZiB0aGUgT3Bl
bkdMIEVTIDIuMCBTcGVjaWZpY2F0aW9uIChTcGVjaWFsCi1GdW5jdGlvbnMpCi0KLSAgICBOb25l
LgotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciA2IG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmlj
YXRpb24gKFN0YXRlIGFuZCBTdGF0ZQotUmVxdWVzdHMpCi0KLSAgICBOb25lLgotCi1JbnRlcmFj
dGlvbnMgd2l0aCBPRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwKLQotICAgIElmIE9FU19wYWNrZWRf
ZGVwdGhfc3RlbmNpbCBpcyBub3Qgc3VwcG9ydGVkLCBtZW50aW9ucyBvZgotICAgIERFUFRIX1NU
RU5DSUxfT0VTIGFuZCBVTlNJR05FRF9JTlRfMjRfOF9PRVMgYXMgYSBmb3JtYXQvdHlwZSBjb21i
aW5hdGlvbnMKLSAgICBmb3IgVGV4SW1hZ2UyRCBhbmQgVGV4U3ViSW1hZ2UyRCBhcmUgb21pdHRl
ZC4gTWVudGlvbnMgb2YKLSAgICB0aGUgaW50ZXJuYWwgZm9ybWF0IERFUFRIMjRfU1RFTkNJTDhf
T0VTIGFyZSBhbHNvIG9taXR0ZWQuCi0KLUludGVyYWN0aW9ucyB3aXRoIEVYVF90ZXh0dXJlX3N0
b3JhZ2UKLQotICAgIElmIEVYVF90ZXh0dXJlX3N0b3JhZ2UgaXMgc3VwcG9ydGVkIHRoZSBmb2xs
b3dpbmcgaW50ZXJuYWxmb3JtYXQKLSAgICB0byBmb3JtYXQvdHlwZSBtYXBwaW5ncyBhcmUgdXNl
ZDoKLQotICAgICAgICA8aW50ZXJuYWxmb3JtYXQ+ICAgICAgIDxmb3JtYXQ+ICAgICAgICAgICA8
dHlwZT4KLSAgICAgICAgLS0tLS0tLS0tLS0tLS0tLSAgICAgICAtLS0tLS0tLSAgICAgICAgICAg
LS0tLS0tCi0gICAgICAgIERFUFRIX0NPTVBPTkVOVDE2ICAgICAgREVQVEhfQ09NUE9ORU5UICAg
IFVOU0lHTkVEX1NIT1JUCi0gICAgICAgIERFUFRIX0NPTVBPTkVOVDMyX09FUyAgREVQVEhfQ09N
UE9ORU5UICAgIFVOU0lHTkVEX0lOVAotICAgICAgICBERVBUSDI0X1NURU5DSUw4X09FUyAgIERF
UFRIX1NURU5DSUxfT0VTICBVTlNJR05FRF9JTlQKLQotICAgIFRleHR1cmVzIHdpdGggdGhlIGFi
b3ZlIDxpbnRlcm5hbGZvcm1hdHM+IG9ubHkgc3VwcG9ydCBvbmUgbGV2ZWwgb2YKLSAgICBpbWFn
ZSBkYXRhLiBTcGVjaWZ5aW5nIGEgdmFsdWUgb3RoZXIgdGhhbiBvbmUgZm9yIHRoZSA8bGV2ZWxz
PiBwYXJhbWV0ZXIKLSAgICB0byBUZXhTdG9yYWdlMkRFWFQgd2lsbCByZXN1bHQgaW4gYW4gSU5W
QUxJRF9PUEVSQVRJT04gZXJyb3IuCi0KLSAgICBJZiBFWFRfdGV4dHVyZV9zdG9yYWdlIGlzIG5v
dCBzdXBwb3J0ZWQsIGlnbm9yZSBhbnkgcmVmZXJlbmNlcwotICAgIHRvIFRleFN0b3JhZ2UyREVY
VC4gCi0KLUVycm9ycwotCi0gICAgVGhlIGVycm9yIElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVy
YXRlZCBieSBUZXhJbWFnZTJEIGlmIDxmb3JtYXQ+IGFuZCAKLSAgICA8aW50ZXJuYWxmb3JtYXQ+
IGFyZSBERVBUSF9DT01QT05FTlQgYW5kIDx0eXBlPiBpcyBub3QgVU5TSUdORURfU0hPUlQsCi0g
ICAgb3IgVU5TSUdORURfSU5ULgotCi0gICAgVGhlIGVycm9yIElOVkFMSURfT1BFUkFUSU9OIGlz
IGdlbmVyYXRlZCBieSBUZXhTdWJJbWFnZTJEIGlmIDxmb3JtYXQ+IGlzIAotICAgIERFUFRIX0NP
TVBPTkVOVCBhbmQgPHR5cGU+IGlzIG5vdCBVTlNJR05FRF9TSE9SVCwgb3IgVU5TSUdORURfSU5U
LgotCi0gICAgVGhlIGVycm9yIElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBieSBUZXhJ
bWFnZTJEIGlmIDxmb3JtYXQ+IGFuZAotICAgIDxpbnRlcm5hbGZvcm1hdD4gYXJlIG5vdCBERVBU
SF9DT01QT05FTlQgYW5kIDx0eXBlPiBpcyBVTlNJR05FRF9TSE9SVCwKLSAgICBvciBVTlNJR05F
RF9JTlQuCi0KLSAgICBUaGUgZXJyb3IgSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGJ5
IFRleFN1YkltYWdlMkQgaWYgPGZvcm1hdD4gaXMKLSAgICBub3QgREVQVEhfQ09NUE9ORU5UIGFu
ZCA8dHlwZT4gaXMgVU5TSUdORURfU0hPUlQsIG9yIFVOU0lHTkVEX0lOVC4KLQotICAgIFRoZSBl
cnJvciBJTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgYnkgVGV4SW1hZ2UyRCBpZiA8Zm9y
bWF0PiBhbmQKLSAgICA8aW50ZXJuYWxmb3JtYXQ+IGFyZSBERVBUSF9TVEVOQ0lMX09FUyBhbmQg
PHR5cGU+IGlzIG5vdAotICAgIFVOU0lHTkVEX0lOVF8yNF84X09FUy4gCi0KLSAgICBUaGUgZXJy
b3IgSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGJ5IFRleFN1YkltYWdlMkQgaWYgPGZv
cm1hdD4KLSAgICBpcyBERVBUSF9TVEVOQ0lMX09FUyBhbmQgPHR5cGU+IGlzIG5vdCBVTlNJR05F
RF9JTlRfMjRfOF9PRVMuIAotCi0gICAgVGhlIGVycm9yIElOVkFMSURfT1BFUkFUSU9OIGlzIGdl
bmVyYXRlZCBieSBUZXhJbWFnZTJEIGlmIDxmb3JtYXQ+IGFuZAotICAgIDxpbnRlcm5hbGZvcm1h
dD4gaXMgbm90IERFUFRIX1NURU5DSUxfT0VTIGFuZCA8dHlwZT4gaXMgCi0gICAgVU5TSUdORURf
SU5UXzI0XzhfT0VTLgotCi0gICAgVGhlIGVycm9yIElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVy
YXRlZCBieSBUZXhTdWJJbWFnZTJEIGlmIDxmb3JtYXQ+Ci0gICAgaXMgbm90IERFUFRIX1NURU5D
SUxfT0VTIGFuZCA8dHlwZT4gaXMgVU5TSUdORURfSU5UXzI0XzhfT0VTLgotCi0gICAgVGhlIGVy
cm9yIElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpbiB0aGUgZm9sbG93aW5nIHNpdHVh
dGlvbnM6Ci0gICAgLSBUZXhJbWFnZTJEIGlzIGNhbGxlZCB3aXRoIDxmb3JtYXQ+IGFuZCA8aW50
ZXJuYWxmb3JtYXQ+IG9mCi0gICAgICBERVBUSF9DT01QT05FTlQgb3IgREVQVEhfU1RFTkNJTF9P
RVMgYW5kCi0gICAgICAgLSA8dGFyZ2V0PiBpcyBub3QgVEVYVFVSRV8yRCwKLSAgICAgICAtIDxk
YXRhPiBpcyBub3QgTlVMTCwgb3IKLSAgICAgICAtIDxsZXZlbD4gaXMgbm90IHplcm8uCi0gICAg
LSBUZXhTdWJJbWFnZTJEIGlzIGNhbGxlZCB3aXRoIDxmb3JtYXQ+IG9mIERFUFRIX0NPTVBPTkVO
VCBvciAKLSAgICAgIERFUFRIX1NURU5DSUxfT0VTLgotICAgIC0gVGV4U3RvcmFnZTJERVhUIGlz
IGNhbGxlZCB3aXRoIDxpbnRlcm5hbGZvcm1hdD4gb2YgREVQVEhfQ09NUE9ORU5UMTYsCi0gICAg
ICBERVBUSF9DT01QT05FTlQzMl9PRVMsIG9yIERFUFRIMjRfU1RFTkNJTDhfT0VTLCBhbmQgCi0g
ICAgICAgLSA8dGFyZ2V0PiBpcyBub3QgVEVYVFVSRV8yRCwgb3IKLSAgICAgICAtIDxsZXZlbHM+
IGlzIG5vdCBvbmUuCi0gICAgLSBDb3B5VGV4SW1hZ2UyRCBpcyBjYWxsZWQgd2l0aCBhbiA8aW50
ZXJuYWxmb3JtYXQ+IHRoYXQgaGFzIGEgYmFzZQotICAgICAgaW50ZXJuYWwgZm9ybWF0IG9mIERF
UFRIX0NPTVBPTkVOVCBvciBERVBUSF9TVEVOQ0lMX09FUy4KLSAgICAtIENvcHlUZXhTdWJJbWFn
ZTJEIGlzIGNhbGxlZCB3aXRoIGEgdGFyZ2V0IHRleHR1cmUgdGhhdCBoYXMgYSBiYXNlCi0gICAg
ICBpbnRlcm5hbCBmb3JtYXQgb2YgREVQVEhfQ09NUE9ORU5UIG9yIERFUFRIX1NURU5DSUxfT0VT
LgotICAgIC0gR2VuZXJhdGVNaXBtYXAgaXMgY2FsbGVkIG9uIGEgdGV4dHVyZSB0aGF0IGhhcyBh
IGJhc2UgaW50ZXJuYWwgZm9ybWF0Ci0gICAgICBvZiBERVBUSF9DT01QT05FTlQgb3IgREVQVEhf
U1RFTkNJTF9PRVMuCi0gICAgCi1OZXcgU3RhdGUKLQotICAgIE5vbmUuCi0KLUlzc3VlcwotCi0g
ICAgMSkgV2hhdCBhcmUgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhpcyBleHRlbnNpb24gYW5k
IE9FU19kZXB0aF90ZXh0dXJlCi0gICAgICAgYW5kIE9FU19wYWNrZWRfZGVwdGhfc3RlbmNpbD8K
LSAgICAKLSAgICAgICBSRVNPTFZFRDogVGhpcyBleHRlbnNpb246Ci0gICAgICAgICAtIGRvZXMg
bm90IHN1cHBvcnQgbG9hZGluZyBwcmUtYmFrZWQgZGVwdGggc3RlbmNpbCBkYXRhIHZpYSAKLSAg
ICAgICAgICAgVGV4SW1hZ2UyRCBvciBUZXhTdWJJbWFnZTJELgotICAgICAgICAgLSBhbGxvd3Mg
dmFyaWFiaWxpdHkgaW4gdGhlIHktLCB6LSwgYW5kIHctY29tcG9uZW50cyBvZiB0aGUgc2FtcGxl
Ci0gICAgICAgICAgIHJlc3VsdHMgZnJvbSBkZXB0aCB0ZXh0dXJlcy4KLSAgICAgICAgIC0gb25s
eSBzdXBwb3J0cyBvbmUgbGV2ZWwgdGV4dHVyZXMuCi0gICAgICAgICAtIGV4cGxpY2l0bHkgbGlz
dHMgdGhlIGVycm9ycyBmb3IgdW5zdXBwb3J0ZWQgZnVuY3Rpb25hbGl0eS4KLSAgICAgICAgICAg
U2luY2UgdGhlc2Ugd2VyZSBub3QgY2xlYXJseSBzcGVjaWZpZWQgaW4gdGhlIE9FU19kZXB0aF90
ZXh0dXJlCi0gICAgICAgICAgIGV4dGVuc2lvbiB0aGVyZSBtYXkgYmUgZGlmZmVyZW5jZXMgaW4g
ZXJyb3IgdmFsdWVzIGJldHdlZW4gCi0gICAgICAgICAgIGltcGxlbWVudGF0aW9ucyBvZiBPRVNf
ZGVwdGhfdGV4dHVyZSBhbmQgQU5HTEVfZGVwdGhfdGV4dHVyZS4KLSAgICAgICBUaGlzIHNwZWNp
ZmljYXRpb24gd2FzIGFsc28gcmViYXNlZCB0byBhcHBseSBhZ2FpbnN0IHRoZSBPcGVuR0wgRVMg
Mi4wCi0gICAgICAgc3BlY2lmaWNhdGlvbiBpbnN0ZWFkIG9mIHRoZSBPcGVuR0wgc3BlY2lmaWNh
dGlvbiwgbWFraW5nIGl0IG1vcmUgCi0gICAgICAgb2J2aW91cyB3aGF0IGFsbCB0aGUgZnVuY3Rp
b25hbGl0eSBjaGFuZ2VzIGFyZS4KLQotICAgIDIpIFdoeSBkb2VzIFRleFN1YkltYWdlMkQgYWNj
ZXB0IHRoZSBuZXcgZm9ybWF0L3R5cGUgY29tYmluYXRpb25zIGV2ZW4KLSAgICAgICB0aG91Z2gg
aXQgZG9lcyBub3QgYWN0dWFsbHkgc3VwcG9ydCBsb2FkaW5nIGRhdGE/Ci0KLSAgICAgICBSRVNP
TFZFRDogVGhpcyB3YXMgZG9uZSB0byBiZSBtb3JlIGNvbnNpc3RlbnQgd2l0aCB0aGUgT0VTX2Rl
cHRoX3RleHR1cmUKLSAgICAgICBleHRlbnNpb24gYW5kIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGFk
ZCBzdXBwb3J0IGZvciBsb2FkaW5nIHRleHR1cmUKLSAgICAgICBkYXRhIGlmIGl0IGlzIHBvc3Np
YmxlIHRvIHN1cHBvcnQgaW4gdGhlIGZ1dHVyZS4KLQotICAgIDMpIFdoeSBhcmUgb25seSAxLWxl
dmVsIGRlcHRoIHRleHR1cmVzIHN1cHBvcnRlZD8gCi0KLSAgICAgICBSRVNPTFZFRDogVGhlIG9u
bHkgdXNlIGZvciBtdWx0aXBsZSBsZXZlbHMgb2YgZGVwdGggdGV4dHVyZXMgd291bGQKLSAgICAg
ICBiZSBmb3IgZml0bGVyZWQgdGV4dHVyaW5nLiBIb3dldmVyIHNpbmNlIGl0IGlzIG5vdCBwb3Nz
aWJsZSB0bwotICAgICAgIHJlbmRlciB0byBub24temVyby1sZXZlbCB0ZXh0dXJlIGxldmVscyBp
biBPcGVuR0wgRVMgMi4wLCBhbmQgc2luY2UKLSAgICAgICB0aGlzIGV4dGVuc2lvbiBmb3JiaWRz
IGxvYWRpbmcgZXhpc3RpbmcgZGF0YSBhbmQgR2VuZXJhdGVNaXBtYXAgb24gCi0gICAgICAgZGVw
dGggdGV4dHVyZXMsIGl0IGlzIGltcG9zc2libGUgdG8gaW5pdGlhbGl6ZSBvciBzcGVjaWZ5IGNv
bnRlbnRzCi0gICAgICAgZm9yIG5vbi16ZXJvIGxldmVscyBvZiBkZXB0aCB0ZXh0dXJlcy4KLQot
UmV2aXNpb24gSGlzdG9yeQotIAotICAgIDAyLzI1LzIwMTMgIHN3b29kcyAgcmV2aXNlIHRvIGFs
bG93IHRleHR1cmUgbG9va3VwIHRvIGd1YXJhbnRlZSBkZXB0aCB2YWx1ZXMKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG9ubHkgaW4gcmVkIGNoYW5uZWwgb2Ygc2FtcGxlIHJlc3VsdC4KLSAgICAw
Ni8wNC8yMDEyICBkZ2tvY2ggIGZpeCBlcnJvcnMsIGRpc2FsbG93IG11bHRpLWxldmVsIGRlcHRo
IHRleHR1cmVzLgotICAgIDA1LzMwLzIwMTIgIGRna29jaCAgbWlub3IgdXBkYXRlcyBhbmQgYWRk
IGlzc3Vlcy4KLSAgICAwNS8yMy8yMDEyICBkZ2tvY2ggIGludGlhbCByZXZpc2lvbiBiYXNlZCBv
biBPRVNfZGVwdGhfdGV4dHVyZSBhbmQgCi0gICAgICAgICAgICAgICAgICAgICAgICBPRVNfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwgYW5kIHJlYmFzZWQgYWdhaW5zdCB0aGUgRVMgMi4wIHNwZWMKLQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9BTkdMRV9mcmFtZWJ1ZmZl
cl9ibGl0LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNp
b25zL0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQudHh0CShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQudHh0
CShub25leGlzdGVudCkKQEAgLTEsNDM3ICswLDAgQEAKLU5hbWUKLQotICAgIEFOR0xFX2ZyYW1l
YnVmZmVyX2JsaXQKLQotTmFtZSBTdHJpbmdzCi0KLSAgICBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9i
bGl0Ci0KLUNvbnRyaWJ1dG9ycwotCi0gICAgQ29udHJpYnV0b3JzIHRvIEVYVF9mcmFtZWJ1ZmZl
cl9ibGl0Ci0gICAgRGFuaWVsIEtvY2gsIFRyYW5zR2FtaW5nIEluYy4KLSAgICBTaGFubm9uIFdv
b2RzLCBUcmFuc0dhbWluZyBJbmMuCi0gICAgS2VubmV0aCBSdXNzZWxsLCBHb29nbGUgSW5jLgot
ICAgIFZhbmdlbGlzIEtva2tldmlzLCBHb29nbGUgSW5jLgotCi1Db250YWN0Ci0KLSAgICBEYW5p
ZWwgS29jaCwgVHJhbnNHYW1pbmcgSW5jLiAoZGFuaWVsICdhdCcgdHJhbnNnYW1pbmcgJ2RvdCcg
Y29tKQotCi1TdGF0dXMKLQotICAgIEltcGxlbWVudGVkIGluIEFOR0xFIEVTMgotCi1WZXJzaW9u
Ci0KLSAgICBMYXN0IE1vZGlmaWVkIERhdGU6IFNlcHQgMjIsIDIwMTIKLSAgICBBdXRob3IgUmV2
aXNpb246IDQKLQotTnVtYmVyCi0KLSAgICBPcGVuR0wgRVMgRXh0ZW5zaW9uICM4MwotCi1EZXBl
bmRlbmNpZXMKLQotICAgIE9wZW5HTCBFUyAyLjAgaXMgcmVxdWlyZWQuCi0KLSAgICBUaGUgZXh0
ZW5zaW9uIGlzIHdyaXR0ZW4gYWdhaW5zdCB0aGUgT3BlbkdMIEVTIDIuMCBzcGVjaWZpY2F0aW9u
LgotCi0gICAgT0VTX3RleHR1cmVfM0QgYWZmZWN0cyB0aGUgZGVmaW5pdGlvbiBvZiB0aGlzIGV4
dGVuc2lvbi4KLQotT3ZlcnZpZXcKLQotICAgIFRoaXMgZXh0ZW5zaW9uIG1vZGlmaWVzIGZyYW1l
YnVmZmVyIG9iamVjdHMgYnkgc3BsaXR0aW5nIHRoZQotICAgIGZyYW1lYnVmZmVyIG9iamVjdCBi
aW5kaW5nIHBvaW50IGludG8gc2VwYXJhdGUgRFJBVyBhbmQgUkVBRAotICAgIGJpbmRpbmdzLiAg
VGhpcyBhbGxvd3MgY29weWluZyBkaXJlY3RseSBmcm9tIG9uZSBmcmFtZWJ1ZmZlciB0bwotICAg
IGFub3RoZXIuICBJbiBhZGRpdGlvbiwgYSBuZXcgaGlnaCBwZXJmb3JtYW5jZSBibGl0IGZ1bmN0
aW9uIGlzCi0gICAgYWRkZWQgdG8gZmFjaWxpdGF0ZSB0aGVzZSBibGl0cyBhbmQgcGVyZm9ybSBz
b21lIGRhdGEgY29udmVyc2lvbgotICAgIHdoZXJlIGFsbG93ZWQuCi0KLUlQIFN0YXR1cwotCi0g
ICAgTm8ga25vd24gSVAgY2xhaW1zLgotCi1OZXcgUHJvY2VkdXJlcyBhbmQgRnVuY3Rpb25zCi0K
LSAgICB2b2lkIEJsaXRGcmFtZWJ1ZmZlckFOR0xFKGludCBzcmNYMCwgaW50IHNyY1kwLCBpbnQg
c3JjWDEsIGludCBzcmNZMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkc3RY
MCwgaW50IGRzdFkwLCBpbnQgZHN0WDEsIGludCBkc3RZMSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJpdGZpZWxkIG1hc2ssIGVudW0gZmlsdGVyKTsKLQotTmV3IFRva2VucwotCi0g
ICAgQWNjZXB0ZWQgYnkgdGhlIDx0YXJnZXQ+IHBhcmFtZXRlciBvZiBCaW5kRnJhbWVidWZmZXIs
Ci0gICAgQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cywgRnJhbWVidWZmZXJUZXh0dXJlMkQsIEZyYW1l
YnVmZmVyVGV4dHVyZTNET0VTLAotICAgIEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyLCBhbmQKLSAg
ICBHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdjoKLQotICAgIC8vIChyZXVzaW5n
IHRoZSB0b2tlbnMgZnJvbSBFWFRfZnJhbWVidWZmZXJfYmxpdCkKLSAgICBSRUFEX0ZSQU1FQlVG
RkVSX0FOR0xFICAgICAgICAgICAgICAgIDB4OENBOAotICAgIERSQVdfRlJBTUVCVUZGRVJfQU5H
TEUgICAgICAgICAgICAgICAgMHg4Q0E5Ci0KLSAgICBBY2NlcHRlZCBieSB0aGUgPHBuYW1lPiBw
YXJhbWV0ZXJzIG9mIEdldEludGVnZXJ2IGFuZCBHZXRGbG9hdHY6Ci0KLSAgICAvLyAocmV1c2lu
ZyB0aGUgdG9rZW5zIGZyb20gRVhUX2ZyYW1lYnVmZmVyX2JsaXQpCi0gICAgRFJBV19GUkFNRUJV
RkZFUl9CSU5ESU5HX0FOR0xFICAgICAgICAweDhDQTYgLy8gYWxpYXMgRlJBTUVCVUZGRVJfQklO
RElORwotICAgIFJFQURfRlJBTUVCVUZGRVJfQklORElOR19BTkdMRSAgICAgICAgMHg4Q0FBCi0K
LQotQWRkaXRpb25zIHRvIENoYXB0ZXIgMyBvZiB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZpY2F0
aW9uIChSYXN0ZXJpemF0aW9uKQotCi0gICAgQ2hhbmdlIHRoZSBsYXN0IHBhcmFncmFwaCBvZiBz
ZWN0aW9uIDMuNy4yIChBbHRlcm5hdGUgVGV4dHVyZSBJbWFnZQotICAgIFNwZWNpZmljYXRpb24g
Q29tbWFuZHMpIHRvOgotCi0gICAgIkNhbGxpbmcgQ29weVRleFN1YkltYWdlM0RPRVMsIENvcHlU
ZXhJbWFnZTJEIG9yIENvcHlUZXhTdWJJbWFnZTJEIHdpbGwKLSAgICByZXN1bHQgaW4gYW4gSU5W
QUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gZXJyb3IgaWYgdGhlIG9iamVjdCBib3VuZAotICAg
IHRvIFJFQURfRlJBTUVCVUZGRVJfQklORElOR19BTkdMRSBpcyBub3QgImZyYW1lYnVmZmVyIGNv
bXBsZXRlIgotICAgIChzZWN0aW9uIDQuNC40LjIpLiIKLQotQWRkaXRpb25zIHRvIENoYXB0ZXIg
NCBvZiB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZpY2F0aW9uIChQZXItRnJhZ21lbnQKLU9wZXJh
dGlvbnMgYW5kIHRoZSBGcmFtZWJ1ZmZlcikKLQotICAgIENoYW5nZSB0aGUgZmlyc3Qgd29yZCBv
ZiBDaGFwdGVyIDQgZnJvbSAiVGhlIiB0byAiQSIuCi0KLSAgICBBcHBlbmQgdG8gdGhlIGludHJv
ZHVjdGlvbiBvZiBDaGFwdGVyIDQ6Ci0KLSAgICAiQ29uY2VwdHVhbGx5LCB0aGUgR0wgaGFzIHR3
byBhY3RpdmUgZnJhbWVidWZmZXJzOyB0aGUgZHJhdwotICAgIGZyYW1lYnVmZmVyIGlzIHRoZSBk
ZXN0aW5hdGlvbiBmb3IgcmVuZGVyaW5nIG9wZXJhdGlvbnMsIGFuZCB0aGUKLSAgICByZWFkIGZy
YW1lYnVmZmVyIGlzIHRoZSBzb3VyY2UgZm9yIHJlYWRiYWNrIG9wZXJhdGlvbnMuICBUaGUgc2Ft
ZQotICAgIGZyYW1lYnVmZmVyIG1heSBiZSB1c2VkIGZvciBib3RoIGRyYXdpbmcgYW5kIHJlYWRp
bmcuICBTZWN0aW9uCi0gICAgNC40LjEgZGVzY3JpYmVzIHRoZSBtZWNoYW5pc20gZm9yIGNvbnRy
b2xsaW5nIGZyYW1lYnVmZmVyIHVzYWdlLiIKLQotICAgIE1vZGlmeSB0aGUgZmlyc3Qgc2VudGVu
Y2Ugb2YgdGhlIGxhc3QgcGFyYWdyYXBoIG9mIHNlY3Rpb24gNC4xLjEgYXMgZm9sbG93czoKLQot
ICAgICJXaGlsZSBhbiBhcHBsaWNhdGlvbi1jcmVhdGVkIGZyYW1lYnVmZmVyIG9iamVjdCBpcyBi
b3VuZCB0bwotICAgIERSQVdfRlJBTUVCVUZGRVJfQU5HTEUsIHRoZSBwaXhlbCBvd25lcnNoaXAg
dGVzdCBhbHdheXMgcGFzc2VzLiIKLQotICAgIEFkZCB0byA0LjMuMSAoUmVhZGluZyBQaXhlbHMp
LCByaWdodCBiZWZvcmUgdGhlIHN1YnNlY3Rpb24gdGl0bGVkCi0gICAgIk9idGFpbmluZyBQaXhl
bHMgZnJvbSB0aGUgRnJhbWVidWZmZXIiOgotCi0gICAgIkNhbGxpbmcgUmVhZFBpeGVscyBnZW5l
cmF0ZXMgSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gaWYKLSAgICB0aGUgb2JqZWN0IGJv
dW5kIHRvIFJFQURfRlJBTUVCVUZGRVJfQklORElOR19BTkdMRSBpcyBub3QgImZyYW1lYnVmZmVy
Ci0gICAgY29tcGxldGUiIChzZWN0aW9uIDQuNC40LjIpLiBHZXRJbnRlZ2VydiBnZW5lcmF0ZXMg
YW4gSU5WQUxJRF9PUEVSQVRJT04KLSAgICBlcnJvciBpZiB0aGUgb2JqZWN0IGJvdW5kIHRvIFJF
QURfRlJBTUVCVUZGRVJfQklORElOR19BTkdMRSBpcyBub3QKLSAgICBmcmFtZWJ1ZmZlciBjb21w
bGV0ZSwgb3IgaWYgdGhlIEdMIGlzIHVzaW5nIGEgZnJhbWVidWZmZXIgb2JqZWN0IAotICAgIChp
LmUuIFJFQURfRlJBTUVCVUZGRVJfQklORElOR19BTkdMRSBpcyBub24temVybykgYW5kIHRoZXJl
IGlzIG5vIGNvbG9yCi0gICAgYXR0YWNobWVudC4iCi0KLSAgICBJbnNlcnQgYSBuZXcgc2VjdGlv
biA0LjMuMiB0aXRsZWQgIkNvcHlpbmcgUGl4ZWxzIiBhbmQgcmVudW1iZXIgdGhlCi0gICAgc3Vi
c2VxdWVudCBzZWN0aW9ucy4gIEFkZCB0aGUgZm9sbG93aW5nIHRleHQ6Ci0KLSAgICAiQmxpdEZy
YW1lYnVmZmVyQU5HTEUgdHJhbnNmZXJzIGEgcmVjdGFuZ2xlIG9mIHBpeGVsIHZhbHVlcyBmcm9t
IG9uZQotICAgIHJlZ2lvbiBvZiB0aGUgcmVhZCBmcmFtZWJ1ZmZlciB0byBhbm90aGVyIGluIHRo
ZSBkcmF3IGZyYW1lYnVmZmVyLgotCi0gICAgQmxpdEZyYW1lYnVmZmVyQU5HTEUoaW50IHNyY1gw
LCBpbnQgc3JjWTAsIGludCBzcmNYMSwgaW50IHNyY1kxLAotICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBkc3RYMCwgaW50IGRzdFkwLCBpbnQgZHN0WDEsIGludCBkc3RZMSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICBiaXRmaWVsZCBtYXNrLCBlbnVtIGZpbHRlcik7Ci0KLSAgICA8bWFz
az4gaXMgdGhlIGJpdHdpc2UgT1Igb2YgYSBudW1iZXIgb2YgdmFsdWVzIGluZGljYXRpbmcgd2hp
Y2gKLSAgICBidWZmZXJzIGFyZSB0byBiZSBjb3BpZWQuIFRoZSB2YWx1ZXMgYXJlIENPTE9SX0JV
RkZFUl9CSVQsCi0gICAgREVQVEhfQlVGRkVSX0JJVCwgYW5kIFNURU5DSUxfQlVGRkVSX0JJVCwg
d2hpY2ggYXJlIGRlc2NyaWJlZCBpbgotICAgIHNlY3Rpb24gNC4yLjMuICBUaGUgcGl4ZWxzIGNv
cnJlc3BvbmRpbmcgdG8gdGhlc2UgYnVmZmVycyBhcmUKLSAgICBjb3BpZWQgZnJvbSB0aGUgc291
cmNlIHJlY3RhbmdsZSwgYm91bmQgYnkgdGhlIGxvY2F0aW9ucyAoc3JjWDAsCi0gICAgc3JjWTAp
IGFuZCAoc3JjWDEsIHNyY1kxKSwgdG8gdGhlIGRlc3RpbmF0aW9uIHJlY3RhbmdsZSwgYm91bmQg
YnkKLSAgICB0aGUgbG9jYXRpb25zIChkc3RYMCwgZHN0WTApIGFuZCAoZHN0WDEsIGRzdFkxKS4g
IFRoZSBsb3dlciBib3VuZHMKLSAgICBvZiB0aGUgcmVjdGFuZ2xlIGFyZSBpbmNsdXNpdmUsIHdo
aWxlIHRoZSB1cHBlciBib3VuZHMgYXJlCi0gICAgZXhjbHVzaXZlLgotCi0gICAgVGhlIGFjdHVh
bCByZWdpb24gdGFrZW4gZnJvbSB0aGUgcmVhZCBmcmFtZWJ1ZmZlciBpcyBsaW1pdGVkIHRvIHRo
ZQotICAgIGludGVyc2VjdGlvbiBvZiB0aGUgc291cmNlIGJ1ZmZlcnMgYmVpbmcgdHJhbnNmZXJy
ZWQsIHdoaWNoIG1heSBpbmNsdWRlCi0gICAgdGhlIGNvbG9yIGJ1ZmZlciwgdGhlIGRlcHRoIGJ1
ZmZlciwgYW5kL29yIHRoZSBzdGVuY2lsIGJ1ZmZlciBkZXBlbmRpbmcgb24KLSAgICA8bWFzaz4u
IFRoZSBhY3R1YWwgcmVnaW9uIHdyaXR0ZW4gdG8gdGhlIGRyYXcgZnJhbWVidWZmZXIgaXMgbGlt
aXRlZCB0byB0aGUKLSAgICBpbnRlcnNlY3Rpb24gb2YgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlcnMg
YmVpbmcgd3JpdHRlbiwgd2hpY2ggbWF5IGluY2x1ZGUKLSAgICB0aGUgY29sb3IgYnVmZmVyLCB0
aGUgZGVwdGggYnVmZmVyLCBhbmQvb3IgdGhlIHN0ZW5jaWwgYnVmZmVyCi0gICAgZGVwZW5kaW5n
IG9uIDxtYXNrPi4gV2hldGhlciBvciBub3QgdGhlIHNvdXJjZSBvciBkZXN0aW5hdGlvbiByZWdp
b25zIGFyZQotICAgIGFsdGVyZWQgZHVlIHRvIHRoZXNlIGxpbWl0cywgdGhlIG9mZnNldCBhcHBs
aWVkIHRvIHBpeGVscyBiZWluZyB0cmFuc2ZlcnJlZAotICAgIGlzIHBlcmZvcm1lZCBhcyB0aG91
Z2ggbm8gc3VjaCBsaW1pdHMgd2VyZSBwcmVzZW50LgotCi0gICAgU3RyZXRjaGluZyBhbmQgc2Nh
bGluZyBkdXJpbmcgYSBjb3B5IGFyZSBub3Qgc3VwcG9ydGVkLiBJZiB0aGUgc291cmNlCi0gICAg
YW5kIGRlc3RpbmF0aW9uIHJlY3RhbmdsZSBkaW1lbnNpb25zIGRvIG5vdCBtYXRjaCwgbm8gY29w
eSBpcwotICAgIHBlcmZvcm1lZCBhbmQgYW4gSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IgaXMgZ2Vu
ZXJhdGVkLgotICAgIEJlY2F1c2Ugc3RyZXRjaGluZyBpcyBub3Qgc3VwcG9ydGVkLCA8ZmlsdGVy
PiBtdXN0IGJlIE5FQVJFU1QgYW5kCi0gICAgbm8gZmlsdGVyaW5nIGlzIGFwcGxpZWQuIAotCi0g
ICAgRmxpcHBpbmcgZHVyaW5nIGEgY29weSBpcyBub3Qgc3VwcG9ydGVkLiBJZiBlaXRoZXIgdGhl
IHNvdXJjZSBvciAKLSAgICBkZXN0aW5hdGlvbiByZWN0YW5nbGUgc3BlY2lmaWVzIGEgbmVnYXRp
dmUgZGltZW5zaW9uLCB0aGUgZXJyb3IgCi0gICAgSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJh
dGVkLiBJZiBib3RoIHRoZSBzb3VyY2UgYW5kIAotICAgIGRlc3RpbmF0aW9uIHJlY3RhbmdsZXMg
c3BlY2lmeSBhIG5lZ2F0aXZlIGRpbWVuc2lvbiBmb3IgdGhlIHNhbWUgCi0gICAgZGlyZWN0aW9u
LCBubyByZXZlcnNhbCBpcyByZXF1aXJlZCBhbmQgdGhlIG9wZXJhdGlvbiBpcyBzdXBwb3J0ZWQu
Ci0KLSAgICBJZiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBidWZmZXJzIGFyZSBpZGVudGlj
YWwsIGFuZCB0aGUKLSAgICBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHJlY3RhbmdsZXMgb3Zlcmxh
cCwgdGhlIHJlc3VsdCBvZiB0aGUgYmxpdAotICAgIG9wZXJhdGlvbiBpcyB1bmRlZmluZWQuCi0K
LSAgICBUaGUgcGl4ZWwgY29weSBieXBhc3NlcyB0aGUgZnJhZ21lbnQgcGlwZWxpbmUuICBUaGUg
b25seSBmcmFnbWVudAotICAgIG9wZXJhdGlvbnMgd2hpY2ggYWZmZWN0IHRoZSBibGl0IGFyZSB0
aGUgcGl4ZWwgb3duZXJzaGlwIHRlc3QgYW5kCi0gICAgdGhlIHNjaXNzb3IgdGVzdC4KLQotICAg
IElmIGEgYnVmZmVyIGlzIHNwZWNpZmllZCBpbiA8bWFzaz4gYW5kIGRvZXMgbm90IGV4aXN0IGlu
IGJvdGggdGhlCi0gICAgcmVhZCBhbmQgZHJhdyBmcmFtZWJ1ZmZlcnMsIHRoZSBjb3JyZXNwb25k
aW5nIGJpdCBpcyBzaWxlbnRseQotICAgIGlnbm9yZWQuCi0KLSAgICBDYWxsaW5nIEJsaXRGcmFt
ZWJ1ZmZlckFOR0xFIHdpbGwgcmVzdWx0IGluIGFuCi0gICAgSU5WQUxJRF9GUkFNRUJVRkZFUl9P
UEVSQVRJT04gZXJyb3IgaWYgdGhlIG9iamVjdHMgYm91bmQgdG8KLSAgICBEUkFXX0ZSQU1FQlVG
RkVSX0JJTkRJTkdfQU5HTEUgYW5kIFJFQURfRlJBTUVCVUZGRVJfQklORElOR19BTkdMRSBhcmUK
LSAgICBub3QgImZyYW1lYnVmZmVyIGNvbXBsZXRlIiAoc2VjdGlvbiA0LjQuNC4yKS4iCi0KLSAg
ICBDYWxsaW5nIEJsaXRGcmFtZWJ1ZmZlckFOR0xFIHdpbGwgcmVzdWx0IGluIGFuIElOVkFMSURf
T1BFUkFUSU9OCi0gICAgZXJyb3IgaWYgPG1hc2s+IGluY2x1ZGVzIENPTE9SX0JVRkZFUl9CSVQg
YW5kIHRoZSBzb3VyY2UgYW5kIAotICAgIGRlc3RpbmF0aW9uIGNvbG9yIGZvcm1hdHMgdG8gbm90
IG1hdGNoLgotCi0gICAgQ2FsbGluZyBCbGl0RnJhbWVidWZmZXJBTkdMRSB3aWxsIHJlc3VsdCBp
biBhbiBJTlZBTElEX09QRVJBVElPTgotICAgIGVycm9yIGlmIDxtYXNrPiBpbmNsdWRlcyBERVBU
SF9CVUZGRVJfQklUIG9yIFNURU5DSUxfQlVGRkVSX0JJVAotICAgIGFuZCB0aGUgc291cmNlIGFu
ZCBkZXN0aW5hdGlvbiBkZXB0aCBhbmQgc3RlbmNpbCBidWZmZXIgZm9ybWF0cyBkbwotICAgIG5v
dCBtYXRjaC4KLQotICAgIElmIDxtYXNrPiBpbmNsdWRlcyBERVBUSF9CVUZGRVJfQklUIG9yIFNU
RU5DSUxfQlVGRkVSX0JJVCwgb25seSAKLSAgICBjb21wbGV0ZSBidWZmZXJzIGNhbiBiZSBjb3Bp
ZWQuICBJZiB0aGUgc291cmNlIHJlY3RhbmdsZSBkb2VzIG5vdCAKLSAgICBzcGVjaWZ5IHRoZSBj
b21wbGV0ZSBzb3VyY2UgYnVmZmVyIG9yIHRoZSBkZXN0aW5hdGlvbiByZWN0YW5nbGUgCi0gICAg
KGFmdGVyIGZhY3RvcmluZyB0aGUgc2Npc3NvciByZWdpb24sIGlmIGFwcGxpY2FibGUpIGRvZXMg
bm90IHNwZWNpZnkgCi0gICAgdGhlIGNvbXBsZXRlIGRlc3RpbmF0aW9uIGJ1ZmZlciwgYW4gSU5W
QUxJRF9PUEVSQVRJT04KLSAgICBlcnJvciBpcyBnZW5lcmF0ZWQuCi0KLSAgICBNb2RpZnkgdGhl
IGJlZ2lubmluZyBvZiBzZWN0aW9uIDQuNC4xIGFzIGZvbGxvd3M6Ci0KLSAgICAiVGhlIGRlZmF1
bHQgZnJhbWVidWZmZXIgZm9yIHJlbmRlcmluZyBhbmQgcmVhZGJhY2sgb3BlcmF0aW9ucyBpcwot
ICAgIHByb3ZpZGVkIGJ5IHRoZSB3aW5kb3dpbmcgc3lzdGVtLiAgSW4gYWRkaXRpb24sIG5hbWVk
IGZyYW1lYnVmZmVyCi0gICAgb2JqZWN0cyBjYW4gYmUgY3JlYXRlZCBhbmQgb3BlcmF0ZWQgdXBv
bi4gIFRoZSBuYW1lc3BhY2UgZm9yCi0gICAgZnJhbWVidWZmZXIgb2JqZWN0cyBpcyB0aGUgdW5z
aWduZWQgaW50ZWdlcnMsIHdpdGggemVybyByZXNlcnZlZAotICAgIGJ5IHRoZSBHTCBmb3IgdGhl
IGRlZmF1bHQgZnJhbWVidWZmZXIuCi0KLSAgICBBIGZyYW1lYnVmZmVyIG9iamVjdCBpcyBjcmVh
dGVkIGJ5IGJpbmRpbmcgYW4gdW51c2VkIG5hbWUgdG8KLSAgICBEUkFXX0ZSQU1FQlVGRkVSX0FO
R0xFIG9yIFJFQURfRlJBTUVCVUZGRVJfQU5HTEUuICBUaGUgYmluZGluZyBpcwotICAgIGVmZmVj
dGVkIGJ5IGNhbGxpbmcKLQotICAgICAgICB2b2lkIEJpbmRGcmFtZWJ1ZmZlcihlbnVtIHRhcmdl
dCwgdWludCBmcmFtZWJ1ZmZlcik7Ci0KLSAgICB3aXRoIDx0YXJnZXQ+IHNldCB0byB0aGUgZGVz
aXJlZCBmcmFtZWJ1ZmZlciB0YXJnZXQgYW5kCi0gICAgPGZyYW1lYnVmZmVyPiBzZXQgdG8gdGhl
IHVudXNlZCBuYW1lLiAgVGhlIHJlc3VsdGluZyBmcmFtZWJ1ZmZlcgotICAgIG9iamVjdCBpcyBh
IG5ldyBzdGF0ZSB2ZWN0b3IsIGNvbXByaXNpbmcgb25lIHNldCBvZiB0aGUgc3RhdGUgdmFsdWVz
Ci0gICAgbGlzdGVkIGluIHRhYmxlIDYuMjMgZm9yIGVhY2ggYXR0YWNobWVudCBwb2ludCBvZiB0
aGUKLSAgICBmcmFtZWJ1ZmZlciwgc2V0IHRvIHRoZSBzYW1lIGluaXRpYWwgdmFsdWVzLiAgVGhl
cmUgaXMgb25lCi0gICAgY29sb3IgYXR0YWNobWVudCBwb2ludCwgcGx1cyBvbmUgZWFjaAotICAg
IGZvciB0aGUgZGVwdGggYW5kIHN0ZW5jaWwgYXR0YWNobWVudCBwb2ludHMuCi0KLSAgICBCaW5k
RnJhbWVidWZmZXIgbWF5IGFsc28gYmUgdXNlZCB0byBiaW5kIGFuIGV4aXN0aW5nCi0gICAgZnJh
bWVidWZmZXIgb2JqZWN0IHRvIERSQVdfRlJBTUVCVUZGRVJfQU5HTEUgb3IKLSAgICBSRUFEX0ZS
QU1FQlVGRkVSX0FOR0xFLiAgSWYgdGhlIGJpbmQgaXMgc3VjY2Vzc2Z1bCBubyBjaGFuZ2UgaXMg
bWFkZQotICAgIHRvIHRoZSBzdGF0ZSBvZiB0aGUgYm91bmQgZnJhbWVidWZmZXIgb2JqZWN0LCBh
bmQgYW55IHByZXZpb3VzCi0gICAgYmluZGluZyB0byA8dGFyZ2V0PiBpcyBicm9rZW4uCi0KLSAg
ICBJZiBhIGZyYW1lYnVmZmVyIG9iamVjdCBpcyBib3VuZCB0byBEUkFXX0ZSQU1FQlVGRkVSX0FO
R0xFIG9yCi0gICAgUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSwgaXQgYmVjb21lcyB0aGUgdGFyZ2V0
IGZvciByZW5kZXJpbmcgb3IKLSAgICByZWFkYmFjayBvcGVyYXRpb25zLCByZXNwZWN0aXZlbHks
IHVudGlsIGl0IGlzIGRlbGV0ZWQgb3IgYW5vdGhlcgotICAgIGZyYW1lYnVmZmVyIGlzIGJvdW5k
IHRvIHRoZSBjb3JyZXNwb25kaW5nIGJpbmQgcG9pbnQuICBDYWxsaW5nCi0gICAgQmluZEZyYW1l
YnVmZmVyIHdpdGggPHRhcmdldD4gc2V0IHRvIEZSQU1FQlVGRkVSIGJpbmRzIHRoZQotICAgIGZy
YW1lYnVmZmVyIHRvIGJvdGggRFJBV19GUkFNRUJVRkZFUl9BTkdMRSBhbmQgUkVBRF9GUkFNRUJV
RkZFUl9BTkdMRS4KLQotICAgIFdoaWxlIGEgZnJhbWVidWZmZXIgb2JqZWN0IGlzIGJvdW5kLCBH
TCBvcGVyYXRpb25zIG9uIHRoZSB0YXJnZXQKLSAgICB0byB3aGljaCBpdCBpcyBib3VuZCBhZmZl
Y3QgdGhlIGltYWdlcyBhdHRhY2hlZCB0byB0aGUgYm91bmQKLSAgICBmcmFtZWJ1ZmZlciBvYmpl
Y3QsIGFuZCBxdWVyaWVzIG9mIHRoZSB0YXJnZXQgdG8gd2hpY2ggaXQgaXMgYm91bmQKLSAgICBy
ZXR1cm4gc3RhdGUgZnJvbSB0aGUgYm91bmQgb2JqZWN0LiAgUXVlcmllcyBvZiB0aGUgdmFsdWVz
Ci0gICAgc3BlY2lmaWVkIGluIHRhYmxlIDYuMjAgKEltcGxlbWVudGF0aW9uIERlcGVuZGVudCBQ
aXhlbCBEZXB0aHMpCi0gICAgYW5kIHRhYmxlIDYueXkgKEZyYW1lYnVmZmVyIERlcGVuZGVudCBW
YWx1ZXMpIGFyZQotICAgIGRlcml2ZWQgZnJvbSB0aGUgZnJhbWVidWZmZXIgb2JqZWN0IGJvdW5k
IHRvIERSQVdfRlJBTUVCVUZGRVJfQU5HTEUuCi0KLSAgICBUaGUgaW5pdGlhbCBzdGF0ZSBvZiBE
UkFXX0ZSQU1FQlVGRkVSX0FOR0xFIGFuZCBSRUFEX0ZSQU1FQlVGRkVSX0FOR0xFCi0gICAgcmVm
ZXJzIHRvIHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyIHByb3ZpZGVkIGJ5IHRoZSB3aW5kb3dpbmcK
LSAgICBzeXN0ZW0uICBJbiBvcmRlciB0aGF0IGFjY2VzcyB0byB0aGUgZGVmYXVsdCBmcmFtZWJ1
ZmZlciBpcyBub3QKLSAgICBsb3N0LCBpdCBpcyB0cmVhdGVkIGFzIGEgZnJhbWVidWZmZXIgb2Jq
ZWN0IHdpdGggdGhlIG5hbWUgb2YgMC4KLSAgICBUaGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciBpcyB0
aGVyZWZvcmUgcmVuZGVyZWQgdG8gYW5kIHJlYWQgZnJvbQotICAgIHdoaWxlIDAgaXMgYm91bmQg
dG8gdGhlIGNvcnJlc3BvbmRpbmcgdGFyZ2V0cy4gIE9uIHNvbWUKLSAgICBpbXBsZW1lbnRhdGlv
bnMsIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyIGNhbgotICAgIGNo
YW5nZSBvdmVyIHRpbWUgKGUuZy4sIGluIHJlc3BvbnNlIHRvIHdpbmRvd2luZyBzeXN0ZW0gZXZl
bnRzCi0gICAgc3VjaCBhcyBhdHRhY2hpbmcgdGhlIGNvbnRleHQgdG8gYSBuZXcgd2luZG93aW5n
IHN5c3RlbSBkcmF3YWJsZS4pIgotCi0gICAgQ2hhbmdlIHRoZSBkZXNjcmlwdGlvbiBvZiBEZWxl
dGVGcmFtZWJ1ZmZlcnMgYXMgZm9sbG93czoKLQotICAgICI8ZnJhbWVidWZmZXJzPiBjb250YWlu
cyA8bj4gbmFtZXMgb2YgZnJhbWVidWZmZXIgb2JqZWN0cyB0byBiZQotICAgIGRlbGV0ZWQuICBB
ZnRlciBhIGZyYW1lYnVmZmVyIG9iamVjdCBpcyBkZWxldGVkLCBpdCBoYXMgbm8KLSAgICBhdHRh
Y2htZW50cywgYW5kIGl0cyBuYW1lIGlzIGFnYWluIHVudXNlZC4gIElmIGEgZnJhbWVidWZmZXIg
dGhhdAotICAgIGlzIGN1cnJlbnRseSBib3VuZCB0byBvbmUgb3IgbW9yZSBvZiB0aGUgdGFyZ2V0
cwotICAgIERSQVdfRlJBTUVCVUZGRVJfQU5HTEUgb3IgUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSBp
cyBkZWxldGVkLCBpdCBpcyBhcwotICAgIHRob3VnaCBCaW5kRnJhbWVidWZmZXIgaGFkIGJlZW4g
ZXhlY3V0ZWQgd2l0aCB0aGUgY29ycmVzcG9uZGluZwotICAgIDx0YXJnZXQ+IGFuZCA8ZnJhbWVi
dWZmZXI+IHplcm8uICBVbnVzZWQgbmFtZXMgaW4gPGZyYW1lYnVmZmVycz4KLSAgICBhcmUgc2ls
ZW50bHkgaWdub3JlZCwgYXMgaXMgdGhlIHZhbHVlIHplcm8uIgotCi0KLSAgICBJbiBzZWN0aW9u
IDQuNC4zIChSZW5kZXJidWZmZXIgT2JqZWN0cyksIG1vZGlmeSB0aGUgZmlyc3QgdHdvIHNlbnRl
bmNlcwotICAgIG9mIHRoZSBkZXNjcmlwdGlvbiBvZiBGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciBh
cyBmb2xsb3dzOgotCi0gICAgIjx0YXJnZXQ+IG11c3QgYmUgRFJBV19GUkFNRUJVRkZFUl9BTkdM
RSwgUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSwgb3IKLSAgICBGUkFNRUJVRkZFUi4gIElmIDx0YXJn
ZXQ+IGlzIEZSQU1FQlVGRkVSLCBpdCBiZWhhdmVzIGFzCi0gICAgdGhvdWdoIERSQVdfRlJBTUVC
VUZGRVJfQU5HTEUgd2FzIHNwZWNpZmllZC4gIFRoZSBJTlZBTElEX09QRVJBVElPTiAKLSAgICBl
cnJvciBpcyBnZW5lcmF0ZWQgaWYgdGhlIHZhbHVlIG9mIHRoZSBjb3JyZXNwb25kaW5nIGJpbmRp
bmcgaXMgemVyby4iCi0KLSAgICBJbiBzZWN0aW9uIDQuNC4zIChSZW5kZXJidWZmZXIgT2JqZWN0
cyksIG1vZGlmeSB0aGUgZmlyc3QgdHdvIHNlbnRlbmNlcwotICAgIG9mIHRoZSBkZXNjcmlwdGlv
biBvZiBGcmFtZWJ1ZmZlclRleHR1cmUyRCBhcyBmb2xsb3dzOgotCi0gICAgIjx0YXJnZXQ+IG11
c3QgYmUgRFJBV19GUkFNRUJVRkZFUl9BTkdMRSwKLSAgICBSRUFEX0ZSQU1FQlVGRkVSX0FOR0xF
LCBvciBGUkFNRUJVRkZFUi4gIElmIDx0YXJnZXQ+IGlzCi0gICAgRlJBTUVCVUZGRVIsIGl0IGJl
aGF2ZXMgYXMgdGhvdWdoIERSQVdfRlJBTUVCVUZGRVJfQU5HTEUgd2FzCi0gICAgc3BlY2lmaWVk
LiAgVGhlIElOVkFMSURfT1BFUkFUSU9OIGVycm9yIGlzIGdlbmVyYXRlZCBpZiB0aGUgdmFsdWUg
b2YgdGhlCi0gICAgY29ycmVzcG9uZGluZyBiaW5kaW5nIGlzIHplcm8uIgotCi0gICAgSW4gc2Vj
dGlvbiA0LjQuNSAoRnJhbWVidWZmZXIgQ29tcGxldGVuZXNzKSwgbW9kaWZ5IHRoZSBmaXJzdCBz
ZW50ZW5jZSAKLSAgICBvZiB0aGUgZGVzY3JpcHRpb24gb2YgQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyBhcyBmb2xsb3dzOgotCi0gICAgIklmIDx0YXJnZXQ+IGlzIG5vdCBEUkFXX0ZSQU1FQlVGRkVS
X0FOR0xFLCBSRUFEX0ZSQU1FQlVGRkVSX0FOR0xFIG9yCi0gICAgRlJBTUVCVUZGRVIsIHRoZSBl
cnJvciBJTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkLiAgSWYgPHRhcmdldD4gaXMKLSAgICBGUkFN
RUJVRkZFUiwgaXQgYmVoYXZlcyBhcyB0aG91Z2ggRFJBV19GUkFNRUJVRkZFUl9BTkdMRSB3YXMK
LSAgICBzcGVjaWZpZWQuIgotCi0gICAgTW9kaWZ5IHRoZSBmaXJzdCBzZW50ZW5jZSBvZiB0aGUg
c3Vic2VjdGlvbiB0aXRsZWQgIkVmZmVjdHMgb2YgRnJhbWVidWZmZXIKLSAgICBDb21wbGV0ZW5l
c3Mgb24gRnJhbWVidWZmZXIgT3BlcmF0aW9ucyIgdG8gYmU6Ci0KLSAgICAiQXR0ZW1wdGluZyB0
byByZW5kZXIgdG8gb3IgcmVhZCBmcm9tIGEgZnJhbWVidWZmZXIgd2hpY2ggaXMgbm90Ci0gICAg
ZnJhbWVidWZmZXIgY29tcGxldGUgd2lsbCBnZW5lcmF0ZSBhbgotICAgIElOVkFMSURfRlJBTUVC
VUZGRVJfT1BFUkFUSU9OIGVycm9yLiIKLSAgICAKLQotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciA2
IG9mIHRoZSBPcGVuR0wgMS41IFNwZWNpZmljYXRpb24gKFN0YXRlIGFuZCBTdGF0ZQotUmVxdWVz
dHMpCi0KLSAgICBJbiBzZWN0aW9uIDYuMS4zLCBtb2RpZnkgdGhlIGZpcnN0IHNlbnRlbmNlIG9m
IHRoZSBkZXNjcmlwdGlvbiBvZgotICAgIEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cml2IGFzIGZvbGxvd3M6Ci0KLSAgICAiPHRhcmdldD4gbXVzdCBiZSBEUkFXX0ZSQU1FQlVGRkVS
X0FOR0xFLCBSRUFEX0ZSQU1FQlVGRkVSX0FOR0xFIG9yCi0gICAgRlJBTUVCVUZGRVIuICBJZiA8
dGFyZ2V0PiBpcyBGUkFNRUJVRkZFUiwgaXQgYmVoYXZlcyBhcwotICAgIHRob3VnaCBEUkFXX0ZS
QU1FQlVGRkVSX0FOR0xFIHdhcyBzcGVjaWZpZWQuIgotCi0gICAgTW9kaWZ5IHRoZSB0aXRsZSBv
ZiBUYWJsZSA2LjIzIChGcmFtZWJ1ZmZlciBTdGF0ZSkgdG8gYmUgIkZyYW1lYnVmZmVyIAotICAg
IChzdGF0ZSBwZXIgYXR0YWNobWVudCBwb2ludCkiLiAKLQotCi1EZXBlbmRlbmNpZXMgb24gT0VT
X3RleHR1cmVfM0QKLQotICAgIE9uIGFuIE9wZW5HTCBFUyBpbXBsZW1lbnRhdGlvbiwgaW4gdGhl
IGFic2Vuc2Ugb2YgT0VTX3RleHR1cmVfM0QsCi0gICAgb21pdCByZWZlcmVuY2VzIHRvIEZyYW1l
YnVmZmVyVGV4dHVyZTNET0VTIGFuZCBDb3B5VGV4U3ViSW1hZ2UzRE9FUy4KLQotRXJyb3JzCi0K
LSAgICBUaGUgZXJyb3IgSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gaXMgZ2VuZXJhdGVk
IGlmCi0gICAgQmxpdEZyYW1lYnVmZmVyQU5HTEUgaXMgY2FsbGVkIHdoaWxlIHRoZQotICAgIGRy
YXcgZnJhbWVidWZmZXIgaXMgbm90IGZyYW1lYnVmZmVyIGNvbXBsZXRlLgotCi0gICAgVGhlIGVy
cm9yIElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZgotICAgIEJs
aXRGcmFtZWJ1ZmZlckFOR0xFLCBSZWFkUGl4ZWxzLCBDb3B5VGV4e1N1Yn1JbWFnZSosIGlzIGNh
bGxlZCB3aGlsZSB0aGUKLSAgICByZWFkIGZyYW1lYnVmZmVyIGlzIG5vdCBmcmFtZWJ1ZmZlciBj
b21wbGV0ZS4KLQotICAgIFRoZSBlcnJvciBJTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQg
aWYgR2V0SW50ZWdlcnYgaXMgY2FsbGVkCi0gICAgd2hpbGUgdGhlIHJlYWQgZnJhbWVidWZmZXIg
aXMgbm90IGZyYW1lYnVmZmVyIGNvbXBsZXRlLCBvciBpZiB0aGVyZQotICAgIGlzIG5vIGNvbG9y
IGF0dGFjaG1lbnQgcHJlc2VudCBvbiB0aGUgcmVhZCBmcmFtZWJ1ZmZlciBvYmplY3QuCi0KLSAg
ICBUaGUgZXJyb3IgSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgYnkgQmxpdEZyYW1lYnVmZmVy
QU5HTEUgaWYKLSAgICA8bWFzaz4gaGFzIGFueSBiaXRzIHNldCBvdGhlciB0aGFuIHRob3NlIG5h
bWVkIGJ5Ci0gICAgQ09MT1JfQlVGRkVSX0JJVCwgREVQVEhfQlVGRkVSX0JJVCBvciBTVEVOQ0lM
X0JVRkZFUl9CSVQuCi0KLSAgICBUaGUgZXJyb3IgSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJh
dGVkIGlmIEJsaXRGcmFtZWJ1ZmZlckFOR0xFIGlzCi0gICAgY2FsbGVkIGFuZCA8bWFzaz4gaW5j
bHVkZXMgREVQVEhfQlVGRkVSX0JJVCBvciBTVEVOQ0lMX0JVRkZFUl9CSVQKLSAgICBhbmQgdGhl
IHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZGVwdGggb3Igc3RlbmNpbCBidWZmZXIgZm9ybWF0cyBk
bwotICAgIG5vdCBtYXRjaC4KLQotICAgIFRoZSBlcnJvciBJTlZBTElEX09QRVJBVElPTiBpcyBn
ZW5lcmF0ZWQgaWYgQmxpdEZyYW1lYnVmZmVyQU5HTEUgaXMgCi0gICAgY2FsbGVkIGFuZCBhbnkg
b2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSB0cnVlOgotICAgICAtIHRoZSBzb3VyY2Ug
YW5kIGRlc3RpbmF0aW9uIHJlY3RhbmdsZSBkaW1lbnNpb25zIGRvIG5vdCBtYXRjaAotICAgICAg
IChpZSBzY2FsaW5nIG9yIGZsaXBwaW5nIGlzIHJlcXVpcmVkKS4KLSAgICAgLSA8bWFzaz4gaW5j
bHVkZXMgQ09MT1JfQlVGRkVSX0JJVCBhbmQgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gCi0g
ICAgICAgYnVmZmVyIGZvcm1hdHMgZG8gbm90IG1hdGNoLgotICAgICAtIDxtYXNrPiBpbmNsdWRl
cyBERVBUSF9CVUZGRVJfQklUIG9yIFNURU5DSUxfQlVGRkVSX0JJVCBhbmQgdGhlCi0gICAgICAg
c291cmNlIG9yIGRlc3RpbmF0aW9uIHJlY3RhbmdsZXMgZG8gbm90IHNwZWNpZnkgdGhlIGVudGly
ZSBzb3VyY2UKLSAgICAgICBvciBkZXN0aW5hdGlvbiBidWZmZXIgKGFmdGVyIGFwcGx5aW5nIGFu
eSBzY2lzc29yIHJlZ2lvbikuCi0KLSAgICBUaGUgZXJyb3IgSU5WQUxJRF9FTlVNIGlzIGdlbmVy
YXRlZCBieSBCbGl0RnJhbWVidWZmZXJBTkdMRSBpZgotICAgIDxmaWx0ZXI+IGlzIG5vdCBORUFS
RVNULgotCi0gICAgVGhlIGVycm9yIElOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgQmluZEZy
YW1lYnVmZmVyLAotICAgIENoZWNrRnJhbWVidWZmZXJTdGF0dXMsIEZyYW1lYnVmZmVyVGV4dHVy
ZXsyRHwzRE9FU30sCi0gICAgRnJhbWVidWZmZXJSZW5kZXJidWZmZXIsIG9yCi0gICAgR2V0RnJh
bWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYgaXMgY2FsbGVkIGFuZCA8dGFyZ2V0PiBpcwot
ICAgIG5vdCBEUkFXX0ZSQU1FQlVGRkVSX0FOR0xFLCBSRUFEX0ZSQU1FQlVGRkVSX0FOR0xFIG9y
IEZSQU1FQlVGRkVSLgotCi1OZXcgU3RhdGUKLQotICAgIChBZGQgYSBuZXcgdGFibGUgNi54eCwg
IkZyYW1lYnVmZmVyIChzdGF0ZSBwZXIgZnJhbWVidWZmZXIgdGFyZ2V0IGJpbmRpbmcgcG9pbnQp
IikKLQotICAgIEdldCBWYWx1ZSAgICAgICAgICAgICAgICAgICAgIFR5cGUgICBHZXQgQ29tbWFu
ZCAgIEluaXRpYWwgVmFsdWUgICAgRGVzY3JpcHRpb24gICAgICAgICAgICAgICBTZWN0aW9uCi0g
ICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAtLS0tICAgLS0tLS0tLS0tLS0gICAt
LS0tLS0tLS0tLS0tLSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0gICAgICAgLS0tLS0tLS0tLS0tCi0g
ICAgRFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HX0FOR0xFICAgWisgICAgR2V0SW50ZWdlcnYgICAw
ICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyIG9iamVjdCBib3VuZCAgNC40LjEKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdG8gRFJBV19GUkFNRUJVRkZFUl9BTkdMRQotICAgIFJFQURfRlJBTUVCVUZGRVJf
QklORElOR19BTkdMRSAgIForICAgIEdldEludGVnZXJ2ICAgMCAgICAgICAgICAgICAgICBmcmFt
ZWJ1ZmZlciBvYmplY3QgICAgICAgIDQuNC4xCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIFJFQURfRlJB
TUVCVUZGRVJfQU5HTEUKLQotICAgIFJlbW92ZSByZWZlcmVuY2UgdG8gRlJBTUVCVUZGRVJfQklO
RElORyBmcm9tIFRhYmxlIDYuMjMuCi0KLSAgICAoQWRkIGEgbmV3IHRhYmxlIDYueXksICJGcmFt
ZWJ1ZmZlciBEZXBlbmRlbnQgVmFsdWVzIikgCi0KLSAgICBHZXQgVmFsdWUgICAgICAgICAgICAg
ICAgICAgICBUeXBlICAgR2V0IENvbW1hbmQgICBJbml0aWFsIFZhbHVlICAgIERlc2NyaXB0aW9u
ICAgICAgICAgICAgICAgU2VjdGlvbgotICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
IC0tLS0gICAtLS0tLS0tLS0tLSAgIC0tLS0tLS0tLS0tLS0tICAgLS0tLS0tLS0tLS0tLS0tLS0t
LSAgICAgICAtLS0tLS0tLS0tLS0KLSAgICBTQU1QTEVfQlVGRkVSUyAgICAgICAgICAgICAgICAg
WisgICAgR2V0SW50ZWdlcnYgICAwICAgICAgICAgICAgICAgIE51bWJlciBvZiBtdWx0aXNhbXBs
ZSAgICAgMy4yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJzCi0gICAgU0FNUExFUyAgICAgICAgICAg
ICAgICAgICAgICAgIForICAgIEdldEludGVnZXJ2ICAgMCAgICAgICAgICAgICAgICBDb3ZlcmFn
ZSBtYXNrIHNpemUgICAgICAgIDMuMgotCi0gICAgUmVtb3ZlIHRoZSByZWZlcmVuY2VzIHRvIFNB
TVBMRV9CVUZGRVJTIGFuZCBTQU1QTEVTIGZyb20gVGFibGUgNi4xNy4KLQotCi1Jc3N1ZXMKLQot
ICAgIDEpIFdoYXQgc2hvdWxkIHdlIGNhbGwgdGhpcyBleHRlbnNpb24/Ci0gIAotICAgICAgIFJl
c29sdmVkOiBBTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0LiAgCi0KLSAgICAgICBUaGlzIGV4dGVuc2lv
biBpcyBhIHJlc3VsdCBvZiBhIGNvbGxhYm9yYXRpb24gYmV0d2VlbiBHb29nbGUgYW5kIAotICAg
ICAgIFRyYW5zR2FtaW5nIGZvciB0aGUgb3Blbi1zb3VyY2UgQU5HTEUgcHJvamVjdC4gVHlwaWNh
bGx5IG9uZSB3b3VsZAotICAgICAgIGxhYmVsIGEgbXVsdGktdmVuZG9yIGV4dGVuc2lvbiBhcyBF
WFQsIGJ1dCBFWFRfZnJhbWVidWZmZXJfYmxpdCAKLSAgICAgICBpcyBhbHJlYWR5IHRoZSBuYW1l
IGZvciB0aGlzIG9uIERlc2t0b3AgR0wuICBBZGRpdGlvbmFsbHkgdGhpcwotICAgICAgIGlzbid0
IHRydWVseSBhIG11bHRpLXZlbmRvciBleHRlbnNpb24gYmVjYXVzZSB0aGVyZSBpcyBvbmx5IG9u
ZQotICAgICAgIGltcGxlbWVudGF0aW9uIG9mIHRoaXMuICBXZSdsbCBmb2xsb3cgdGhlIGV4YW1w
bGUgb2YgdGhlIG9wZW4tc291cmNlCi0gICAgICAgTUVTQSBwcm9qZWN0IHdoaWNoIHVzZXMgdGhl
IHByb2plY3QgbmFtZSBmb3IgdGhlIHZlbmRvciBzdWZmaXguCi0KLSAgICAyKSBXaHkgaXMgdGhp
cyBkb25lIGFzIGEgc2VwYXJhdGUgZXh0ZW5zaW9uIGluc3RlYWQgb2YganVzdCBzdXBwb3J0aW5n
Ci0gICAgICAgRVhUX2ZyYW1lYnVmZmVyX2JsaXQ/Ci0KLSAgICAgICBUbyBkYXRlLCBFWFRfZnJh
bWVidWZmZXJfYmxpdCBoYXMgbm90IGhhZCBpbnRlcmFjdGlvbnMgd2l0aCBPcGVuR0wgRVMKLSAg
ICAgICBzcGVjaWZpZWQgYW5kLCBhcyBmYXIgYXMgd2Uga25vdywgaXQgaGFzIG5vdCBwcmV2aW91
c2x5IGJlZW4gZXhwb3NlZCBvbiAKLSAgICAgICBhbiBFUyAxLjEgb3IgRVMgMi4wIGltcGxlbWVu
dGF0aW9uLiBCZWNhdXNlIHRoZXJlIGFyZSBlbm91Z2ggCi0gICAgICAgZGlmZmVyZW5jZXMgYmV0
d2VlbiBEZXNrdG9wIEdMIGFuZCBPcGVuR0wgRVMsIGFuZCBzaW5jZSBPcGVuR0wgRVMgMi4wIAot
ICAgICAgIGhhcyBhbHJlYWR5IHN1YnN1bWVkIHRoZSBFWFRfZnJhbWVidWZmZXJfb2JqZWN0IGZ1
bmN0aW9uYWxpdHkgKHdpdGggCi0gICAgICAgc29tZSBjaGFuZ2VzKSBpdCB3YXMgZGVlbWVkIGEg
d29ydGh3aGlsZSBleGVyY2lzZSB0byBmdWxseSBzcGVjaWZ5IHRoZQotICAgICAgIGludGVyYWN0
aW9ucy4gIEFkZGl0aW9uYWxseSwgc29tZSBvZiB0aGUgY2hvaWNlcyBpbiBleGFjdGx5IHdoaWNo
IAotICAgICAgIGZ1bmN0aW9uYWxpdHkgaXMgc3VwcG9ydGVkIGJ5IEJsaXRGcmFtZWJ1ZmZlckFO
R0xFIGlzIGRpY3RhdGVkIGJ5Ci0gICAgICAgd2hhdCBpcyByZWFzb25hYmxlIHRvIHN1cHBvcnQg
b24gYSBpbXBsZW1lbnRhdGlvbiB3aGljaCBpcyAKLSAgICAgICBsYXllcmVkIG9uIERpcmVjdDNE
OS4gIEl0IGlzIG5vdCBleHBlY3RlZCB0aGF0IG90aGVyIGltcGxlbWVudGF0aW9ucyAKLSAgICAg
ICB3aWxsIG5lY2Vzc2FyeSBoYXZlIHRoZSBzYW1lIHNldCBvZiByZXN0cmljdGlvbnMgb3IgcmVx
dWlyZW1lbnRzLiAKLQotICAgIDMpIEhvdyBkb2VzIHRoaXMgZXh0ZW5zaW9uIGRpZmZlciBmcm9t
IEVYVF9mcmFtZWJ1ZmZlcl9ibGl0PwotCi0gICAgICAgVGhpcyBleHRlbnNpb24gaXMgZGVzaWdu
ZWQgdG8gYmUgYSBwdXJlIHN1YnNldCBvZiB0aGUgCi0gICAgICAgRVhUX2ZyYW1lYnVmZmVyX2Js
aXQgZnVuY3Rpb25hbGl0eSBhcyBhcHBsaWNhYmxlIHRvIE9wZW5HTCBFUyAyLjAuCi0KLSAgICAg
ICBGdW5jdGlvbmFsaXR5IHRoYXQgaXMgdW5jaGFuZ2VkOgotICAgICAgICAtIHRoZSBzcGxpdCBE
UkFXIGFuZCBSRUFEIGZyYW1lYnVmZmVyIGF0dGFjaG1lbnQgcG9pbnRzIGFuZCByZWxhdGVkIHNl
bWF0aWNzLgotICAgICAgICAtIHRoZSB0b2tlbiB2YWx1ZXMgZm9yIHRoZSBEUkFXL1JFQURfRlJB
TUVCVUZGRVIgYW5kIERSQVcvUkVBRF9GUkFNQlVGRkVSX0JJTkRJTkcKLSAgICAgICAgLSB0aGUg
c2lnbmF0dXJlIG9mIHRoZSBCbGl0RnJhbWVidWZmZXIgZW50cnktcG9pbnQuCi0gICAgICAgCi0g
ICAgICAgQWRkaXRpb25hbCByZXN0cmljdGlvbnMgaW1wb3NlZCBieSBCbGl0RnJhbWVidWZmZXJB
TkdMRToKLSAgICAgICAgLSBubyBjb2xvciBjb252ZXJzaW9ucyBhcmUgc3VwcG9ydGVkCi0gICAg
ICAgIC0gbm8gc2NhbGluZywgc3RyZXRjaGluZyBvciBmbGlwcGluZyBhcmUgc3VwcG9ydGVkCi0g
ICAgICAgIC0gbm8gZmlsdGVyaW5nIGlzIHN1cHBvcnRlZCAoYSBjb25zZXF1ZW5jZSBvZiBubyBz
dHJldGNoaW5nKQotICAgICAgICAtIG9ubHkgd2hvbGUgZGVwdGggYW5kL29yIHN0ZW5jaWwgYnVm
ZmVycyBjYW4gYmUgY29waWVkCi0KLVJldmlzaW9uIEhpc3RvcnkKLQotICAgIFJldmlzaW9uIDEs
IDIwMTAvMDcvMDYKLSAgICAgIC0gY29waWVkIGZyb20gcmV2aXNpb24gMTUgb2YgRVhUX2ZyYW1l
YnVmZmVyX29iamVjdAotICAgICAgLSByZW1vdmVkIGxhbmd1YWdlIHRoYXQgd2FzIGNsZWFybHkg
bm90IHJlbGV2YW50IHRvIEVTMgotICAgICAgLSByZWJhc2VkIGNoYW5nZXMgYWdhaW5zdCB0aGUg
T3BlbkdMIEVTIDIuMCBzcGVjaWZpY2F0aW9uCi0gICAgICAtIGFkZGVkIEFOR0xFLXNwZWNpZmlj
IHJlc3RyaWN0aW9ucwotICAgIFJldmlzaW9uIDIsIDIwMTAvMDcvMTUKLSAgICAgIC0gY2xhcmlm
aWNhdGlvbnMgb2YgaW1wbGljaXQgY2xhbXBpbmcgdG8gYnVmZmVyIHNpemVzIChmcm9tIEFSQl9m
Ym8pCi0gICAgICAtIGNsYXJpZnkgdGhhdCBEL1MgcmVzdHJpY3RzIGFwcGx5IGFmdGVyIHRoZSBz
Y2lzc29yIGlzIGFwcGxpZWQKLSAgICAgIC0gaW1wcm92ZSBzb21lIGVycm9yIGxhbmd1YWdlCi0g
ICAgUmV2aXNpb24gMywgMjAxMC8wOC8wNgotICAgICAgLSBhZGQgYWRkaXRpb25hbCBjb250cmli
dXRvcnMsIHVwZGF0ZSBpbXBsZW1lbnRhdGlvbiBzdGF0dXMKLSAgICBSZXZpc2lvbiA0LCAyMDEy
LzA5LzIyCi0gICAgICAtIGRvY3VtZW50IGVycm9ycyBmb3IgR2V0SW50ZWdlcnYuCi0KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvQU5HTEVfZnJhbWVidWZmZXJfbXVs
dGlzYW1wbGUudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVu
c2lvbnMvQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUudHh0CShyZXZpc2lvbiAyMDgwMjEp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0FOR0xFX2ZyYW1lYnVmZmVy
X211bHRpc2FtcGxlLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDM2MyArMCwwIEBACi1OYW1lCi0K
LSAgICBBTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQotCi1OYW1lIFN0cmluZ3MKLQotICAg
IEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlCi0KLUNvbnRyaWJ1dG9ycwotCi0gICAg
Q29udHJpYnV0b3JzIHRvIEVYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQotICAgIERhbmllbCBL
b2NoLCBUcmFuc0dhbWluZyBJbmMuCi0gICAgU2hhbm5vbiBXb29kcywgVHJhbnNHYW1pbmcgSW5j
LgotICAgIEtlbm5ldGggUnVzc2VsbCwgR29vZ2xlIEluYy4KLSAgICBWYW5nZWxpcyBLb2trZXZp
cywgR29vZ2xlIEluYy4KLQotQ29udGFjdHMKLQotICAgIERhbmllbCBLb2NoLCBUcmFuc0dhbWlu
ZyBJbmMuIChkYW5pZWwgJ2F0JyB0cmFuc2dhbWluZyAnZG90JyBjb20pCi0KLVN0YXR1cwotCi0g
ICAgSW1wbGVtZW50ZWQgaW4gQU5HTEUgRVMyCi0KLVZlcnNpb24KLQotICAgIExhc3QgTW9kaWZp
ZWQgRGF0ZTogQXVnIDYsIDIwMTAgCi0gICAgQXV0aG9yIFJldmlzaW9uOiAjMwotCi1OdW1iZXIK
LQotICAgIE9wZW5HTCBFUyBFeHRlbnNpb24gIzg0Ci0KLURlcGVuZGVuY2llcwotCi0gICAgUmVx
dWlyZXMgT3BlbkdMIEVTIDIuMC4KLQotICAgIFJlcXVpcmVzIEdMX0FOR0xFX2ZyYW1lYnVmZmVy
X2JsaXQgKG9yIGVxdWl2YWxlbnQgZnVuY3Rpb25hbGl0eSkuCi0KLSAgICBUaGUgZXh0ZW5zaW9u
IGlzIHdyaXR0ZW4gYWdhaW5zdCB0aGUgT3BlbkdMIEVTIDIuMCBzcGVjaWZpY2F0aW9uLiAKLQot
ICAgIE9FU190ZXh0dXJlXzNEIGFmZmVjdHMgdGhlIGRlZmluaXRpb24gb2YgdGhpcyBleHRlbnNp
b24uCi0KLU92ZXJ2aWV3Ci0KLSAgICBUaGlzIGV4dGVuc2lvbiBleHRlbmRzIHRoZSBmcmFtZWJ1
ZmZlciBvYmplY3QgZnJhbWV3b3JrIHRvCi0gICAgZW5hYmxlIG11bHRpc2FtcGxlIHJlbmRlcmlu
Zy4KLQotICAgIFRoZSBuZXcgb3BlcmF0aW9uIFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZUFOR0xFKCkgYWxsb2NhdGVzCi0gICAgc3RvcmFnZSBmb3IgYSByZW5kZXJidWZmZXIgb2JqZWN0
IHRoYXQgY2FuIGJlIHVzZWQgYXMgYSBtdWx0aXNhbXBsZQotICAgIGJ1ZmZlci4gIEEgbXVsdGlz
YW1wbGUgcmVuZGVyIGJ1ZmZlciBpbWFnZSBkaWZmZXJzIGZyb20gYQotICAgIHNpbmdsZS1zYW1w
bGUgcmVuZGVyIGJ1ZmZlciBpbWFnZSBpbiB0aGF0IGEgbXVsdGlzYW1wbGUgaW1hZ2UgaGFzIGEK
LSAgICBudW1iZXIgb2YgU0FNUExFUyB0aGF0IGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLiAgTm8gbWV0
aG9kIGlzIHByb3ZpZGVkCi0gICAgZm9yIGNyZWF0aW5nIG11bHRpc2FtcGxlIHRleHR1cmUgaW1h
Z2VzLgotCi0gICAgQWxsIG9mIHRoZSBmcmFtZWJ1ZmZlci1hdHRhY2hhYmxlIGltYWdlcyBhdHRh
Y2hlZCB0byBhIGZyYW1lYnVmZmVyCi0gICAgb2JqZWN0IG11c3QgaGF2ZSB0aGUgc2FtZSBudW1i
ZXIgb2YgU0FNUExFUyBvciBlbHNlIHRoZSBmcmFtZWJ1ZmZlcgotICAgIG9iamVjdCBpcyBub3Qg
ImZyYW1lYnVmZmVyIGNvbXBsZXRlIi4gIElmIGEgZnJhbWVidWZmZXIgb2JqZWN0IHdpdGgKLSAg
ICBtdWx0aXNhbXBsZSBhdHRhY2htZW50cyBpcyAiZnJhbWVidWZmZXIgY29tcGxldGUiLCB0aGVu
IHRoZQotICAgIGZyYW1lYnVmZmVyIG9iamVjdCBiZWhhdmVzIGFzIGlmIFNBTVBMRV9CVUZGRVJT
IGlzIG9uZS4KLQotICAgIFRoZSByZXNvbHZlIG9wZXJhdGlvbiBpcyBhZmZlY3RlZCBieSBjYWxs
aW5nIAotICAgIEJsaXRGcmFtZWJ1ZmZlckFOR0xFIChwcm92aWRlZCBieSB0aGUgQU5HTEVfZnJh
bWVidWZmZXJfYmxpdAotICAgIGV4dGVuc2lvbikgd2hlcmUgdGhlIHNvdXJjZSBpcyBhIG11bHRp
c2FtcGxlIGFwcGxpY2F0aW9uLWNyZWF0ZWQKLSAgICBmcmFtZWJ1ZmZlciBvYmplY3QgYW5kIHRo
ZSBkZXN0aW5hdGlvbiBpcyBhIHNpbmdsZS1zYW1wbGUKLSAgICBmcmFtZWJ1ZmZlciBvYmplY3Qg
KGVpdGhlciBhcHBsaWNhdGlvbi1jcmVhdGVkIG9yIHdpbmRvdy1zeXN0ZW0KLSAgICBwcm92aWRl
ZCkuCi0KLU5ldyBQcm9jZWR1cmVzIGFuZCBGdW5jdGlvbnMKLQotICAgIHZvaWQgUmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoCi0gICAgICAgICAgICBlbnVtIHRhcmdldCwgc2l6
ZWkgc2FtcGxlcywKLSAgICAgICAgICAgIGVudW0gaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAg
ICBzaXplaSB3aWR0aCwgc2l6ZWkgaGVpZ2h0KTsKLQotTmV3IFR5cGVzCi0KLSAgICBOb25lLgot
Ci1OZXcgVG9rZW5zCi0KLSAgICBBY2NlcHRlZCBieSB0aGUgPHBuYW1lPiBwYXJhbWV0ZXIgb2Yg
R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXY6Ci0KLSAgICAgICAgUkVOREVSQlVGRkVSX1NBTVBM
RVNfQU5HTEUgICAgICAgICAgICAgICAgICAweDhDQUIKLQotICAgIFJldHVybmVkIGJ5IENoZWNr
RnJhbWVidWZmZXJTdGF0dXM6Ci0KLSAgICAgICAgRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NVUxU
SVNBTVBMRV9BTkdMRSAgICAweDhENTYKLQotICAgIEFjY2VwdGVkIGJ5IHRoZSA8cG5hbWU+IHBh
cmFtZXRlciBvZiBHZXRCb29sZWFudiwgR2V0SW50ZWdlcnYsCi0gICAgYW5kIEdldEZsb2F0djoK
LQotICAgICAgICBNQVhfU0FNUExFU19BTkdMRSAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
OEQ1NwotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciAyIG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNp
ZmljYXRpb24gKE9wZW5HTCBPcGVyYXRpb24pCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDMgb2Yg
dGhlIE9wZW5HTCBFUyAyLjAgU3BlY2lmaWNhdGlvbiAoUmFzdGVyaXphdGlvbikKLQotICAgIEFk
ZCB0byB0aGUgbGFzdCBwYXJhZ3JhcGggb2YgMy43LjIgKEFsdGVybmF0ZSBUZXh0dXJlIEltYWdl
IFNwZWNpZmljYXRpb24pCi0gICAgKGFzIG1vZGlmaWVkIGJ5IEFOR0xFX2ZyYW1lYnVmZmVyX2Js
aXQpIHRoZSBmb2xsb3dpbmc6Ci0KLSAgICAiQ2FsbGluZyBDb3B5VGV4U3ViSW1hZ2UzRE9FUywg
Q29weVRleEltYWdlMkQgb3IgQ29weVRleFN1YkltYWdlMkQgd2lsbAotICAgIHJlc3VsdCBpbiBJ
TlZBTElEX09QRVJBVElPTiBiZWluZyBnZW5lcmF0ZWQgaWYgdGhlIG9iamVjdCBib3VuZCB0bwot
ICAgIFJFQURfRlJBTUVCVUZGRVJfQklORElOR19BTkdMRSBpcyAiZnJhbWVidWZmZXIgY29tcGxl
dGUiIGFuZCB0aGUgdmFsdWUKLSAgICBvZiBTQU1QTEVfQlVGRkVSUyBpcyBncmVhdGVyIHRoYW4g
emVyby4iCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDQgb2YgdGhlIE9wZW5HTCBFUyAyLjAgU3Bl
Y2lmaWNhdGlvbiAoUGVyLUZyYWdtZW50Ci1PcGVyYXRpb25zIGFuZCB0aGUgRnJhbWVidWZmZXIp
Ci0KLSAgICBBZGQgdG8gNC4zLjEgKFJlYWRpbmcgUGl4ZWxzKSwgcmlnaHQgYmVmb3JlIHRoZSBz
dWJzZWN0aW9uIHRpdGxlZAotICAgICJPYnRhaW5pbmcgUGl4ZWxzIGZyb20gdGhlIEZyYW1lYnVm
ZmVyIjoKLQotICAgICJSZWFkUGl4ZWxzIGdlbmVyYXRlcyBJTlZBTElEX09QRVJBVElPTiBpZiBS
RUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkdfQU5HTEUKLSAgICAoc2VjdGlvbiA0LjQpIGlzIG5vbi16
ZXJvLCB0aGUgcmVhZCBmcmFtZWJ1ZmZlciBpcyBmcmFtZWJ1ZmZlcgotICAgIGNvbXBsZXRlLCBh
bmQgdGhlIHZhbHVlIG9mIFNBTVBMRV9CVUZGRVJTIGZvciB0aGUgcmVhZCBmcmFtZWJ1ZmZlcgot
ICAgIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLiIKLQotICAgIEluIDQuMy4yIChDb3B5aW5nIFBpeGVs
cyksIGFkZCB0byB0aGUgc2VjdGlvbiBkZXNjcmliaW5nIEJsaXRGcmFtZWJ1ZmZlcgotICAgIHRo
YXQgd2FzIGFkZGVkIGJ5IEFOR0xFX2ZyYW1lYnVmZmVyX2JsaXQuCi0KLSAgICAiSWYgU0FNUExF
X0JVRkZFUlMgZm9yIHRoZSByZWFkIGZyYW1lYnVmZmVyIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvIGFu
ZAotICAgIFNBTVBMRV9CVUZGRVJTIGZvciB0aGUgZHJhdyBmcmFtZWJ1ZmZlciBpcyB6ZXJvLCB0
aGUgc2FtcGxlcwotICAgIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBwaXhlbCBsb2NhdGlvbiBpbiB0
aGUgc291cmNlIGFyZSBjb252ZXJ0ZWQgdG8KLSAgICBhIHNpbmdsZSBzYW1wbGUgYmVmb3JlIGJl
aW5nIHdyaXR0ZW4gdG8gdGhlIGRlc3RpbmF0aW9uLgotCi0gICAgSWYgU0FNUExFX0JVRkZFUlMg
Zm9yIHRoZSBkcmF3IGZyYW1lYnVmZmVyIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLCAKLSAgICBubyBj
b3B5IGlzIHBlcmZvcm1lZCBhbmQgYW4gSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IgaXMgZ2VuZXJh
dGVkLgotCi0gICAgSWYgU0FNUExFX0JVRkZFUlMgZm9yIHRoZSByZWFkIGZyYW1lYnVmZmVyIGlz
IGdyZWF0ZXIgdGhhbiB6ZXJvIGFuZAotICAgIDxtYXNrPiBpbmNsdWRlcyBERVBUSF9CVUZGRVJf
QklUIG9yIFNURU5DSUxfQlVGRkVSX0JJVCwgbm8gY29weSBpcyAKLSAgICBwZXJmb3JtZWQgYW5k
IGFuIElOVkFMSURfT1BFUkFUSU9OIGVycm9yIGlzIGdlbmVyYXRlZC4KLQotICAgIElmIFNBTVBM
RV9CVUZGRVJTIGZvciB0aGUgcmVhZCBmcmFtZWJ1ZmZlciBpcyBncmVhdGVyIHRoYW4gemVybyBh
bmQgCi0gICAgdGhlIGZvcm1hdCBvZiB0aGUgcmVhZCBhbmQgZHJhdyBmcmFtZWJ1ZmZlcnMgYXJl
IG5vdCBpZGVudGljYWwsIG5vCi0gICAgY29weSBpcyBwZXJmb3JtZWQgYW5kIGFuIElOVkFMSURf
T1BFUkFUSU9OIGVycm9yIGlzIGdlbmVyYXRlZC4KLQotICAgIElmIFNBTVBMRV9CVUZGRVJTIGZv
ciB0aGUgcmVhZCBmcmFtZWJ1ZmZlciBpcyBncmVhdGVyIHRoYW4gemVybywgdGhlCi0gICAgZGlt
ZW5zaW9ucyBvZiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiByZWN0YW5nbGVzIHByb3ZpZGVk
IHRvIAotICAgIEJsaXRGcmFtZWJ1ZmZlckFOR0xFIG11c3QgYmUgaWRlbnRpY2FsIGFuZCBtdXN0
IHNwZWNpZnkgdGhlIGNvbXBsZXRlIAotICAgIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gYnVmZmVy
cywgb3RoZXJ3aXNlIG5vIGNvcHkgaXMgcGVyZm9ybWVkIGFuZCAKLSAgICBhbiBJTlZBTElEX09Q
RVJBVElPTiBlcnJvciBpcyBnZW5lcmF0ZWQuIgotCi0gICAgTW9kaWZpY2F0aW9uIHRvIDQuNC4z
IChSZW5kZXJidWZmZXIgT2JqZWN0cykKLQotICAgIEFkZCwganVzdCBhYm92ZSB0aGUgZGVmaW5p
dGlvbiBvZiBSZW5kZXJidWZmZXJTdG9yYWdlOgotCi0gICAgIlRoZSBjb21tYW5kCi0KLSAgICAg
ICAgdm9pZCBSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSgKLSAgICAgICAgICAg
IGVudW0gdGFyZ2V0LCBzaXplaSBzYW1wbGVzLAotICAgICAgICAgICAgZW51bSBpbnRlcm5hbGZv
cm1hdCwKLSAgICAgICAgICAgIHNpemVpIHdpZHRoLCBzaXplaSBoZWlnaHQpOwotCi0gICAgZXN0
YWJsaXNoZXMgdGhlIGRhdGEgc3RvcmFnZSwgZm9ybWF0LCBkaW1lbnNpb25zLCBhbmQgbnVtYmVy
IG9mCi0gICAgc2FtcGxlcyBvZiBhIHJlbmRlcmJ1ZmZlciBvYmplY3QncyBpbWFnZS4gIDx0YXJn
ZXQ+IG11c3QgYmUKLSAgICBSRU5ERVJCVUZGRVIuICA8aW50ZXJuYWxmb3JtYXQ+IG11c3QgYmUg
b25lIG9mIHRoZSBjb2xvci1yZW5kZXJhYmxlLAotICAgIGRlcHRoLXJlbmRlcmFibGUsIG9yIHN0
ZW5jaWwtcmVuZGVyYWJsZSBmb3JtYXRzIGRlc2NyaWJlZCBpbiB0YWJsZSA0LjUuCi0gICAgPHdp
ZHRoPiBhbmQgPGhlaWdodD4gYXJlIHRoZSBkaW1lbnNpb25zIGluIHBpeGVscyBvZiB0aGUgcmVu
ZGVyYnVmZmVyLiAgSWYKLSAgICBlaXRoZXIgPHdpZHRoPiBvciA8aGVpZ2h0PiBpcyBncmVhdGVy
IHRoYW4gdGhlIHZhbHVlIG9mIAotICAgIE1BWF9SRU5ERVJCVUZGRVJfU0laRSwgb3IgaWYgPHNh
bXBsZXM+IGlzIGdyZWF0ZXIgdGhhbiBNQVhfU0FNUExFU19BTkdMRSwgCi0gICAgdGhlbiB0aGUg
ZXJyb3IgSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQuIElmIE9wZW5HTCBFUyBpcyB1bmFibGUg
dG8gCi0gICAgY3JlYXRlIGEgZGF0YSBzdG9yZSBvZiB0aGUgcmVxdWVzdGVkIHNpemUsIHRoZSBl
cnJvciBPVVRfT0ZfTUVNT1JZIAotICAgIGlzIGdlbmVyYXRlZC4KLQotICAgIFVwb24gc3VjY2Vz
cywgUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUgZGVsZXRlcyBhbnkgZXhpc3Rp
bmcKLSAgICBkYXRhIHN0b3JlIGZvciB0aGUgcmVuZGVyYnVmZmVyIGltYWdlIGFuZCB0aGUgY29u
dGVudHMgb2YgdGhlIGRhdGEKLSAgICBzdG9yZSBhZnRlciBjYWxsaW5nIFJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZUFOR0xFIGFyZSB1bmRlZmluZWQuCi0gICAgUkVOREVSQlVGRkVSX1dJ
RFRIIGlzIHNldCB0byA8d2lkdGg+LCBSRU5ERVJCVUZGRVJfSEVJR0hUIGlzCi0gICAgc2V0IHRv
IDxoZWlnaHQ+LCBhbmQgUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVCBpcyBzZXQgdG8KLSAg
ICA8aW50ZXJuYWxmb3JtYXQ+LgotCi0gICAgSWYgPHNhbXBsZXM+IGlzIHplcm8sIHRoZW4gUkVO
REVSQlVGRkVSX1NBTVBMRVNfQU5HTEUgaXMgc2V0IHRvIHplcm8uCi0gICAgT3RoZXJ3aXNlIDxz
YW1wbGVzPiByZXByZXNlbnRzIGEgcmVxdWVzdCBmb3IgYSBkZXNpcmVkIG1pbmltdW0KLSAgICBu
dW1iZXIgb2Ygc2FtcGxlcy4gU2luY2UgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBtYXkgc3Vw
cG9ydAotICAgIGRpZmZlcmVudCBzYW1wbGUgY291bnRzIGZvciBtdWx0aXNhbXBsZWQgcmVuZGVy
aW5nLCB0aGUgYWN0dWFsCi0gICAgbnVtYmVyIG9mIHNhbXBsZXMgYWxsb2NhdGVkIGZvciB0aGUg
cmVuZGVyYnVmZmVyIGltYWdlIGlzCi0gICAgaW1wbGVtZW50YXRpb24gZGVwZW5kZW50LiAgSG93
ZXZlciwgdGhlIHJlc3VsdGluZyB2YWx1ZSBmb3IKLSAgICBSRU5ERVJCVUZGRVJfU0FNUExFU19B
TkdMRSBpcyBndWFyYW50ZWVkIHRvIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbAotICAgIHRvIDxz
YW1wbGVzPiBhbmQgbm8gbW9yZSB0aGFuIHRoZSBuZXh0IGxhcmdlciBzYW1wbGUgY291bnQgc3Vw
cG9ydGVkCi0gICAgYnkgdGhlIGltcGxlbWVudGF0aW9uLgotCi0gICAgQW4gT3BlbkdMIEVTIGlt
cGxlbWVudGF0aW9uIG1heSB2YXJ5IGl0cyBhbGxvY2F0aW9uIG9mIGludGVybmFsIGNvbXBvbmVu
dAotICAgIHJlc29sdXRpb24gYmFzZWQgb24gYW55IFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZUFOR0xFIHBhcmFtZXRlciAoZXhjZXB0Ci0gICAgdGFyZ2V0KSwgYnV0IHRoZSBhbGxvY2F0
aW9uIGFuZCBjaG9zZW4gaW50ZXJuYWwgZm9ybWF0IG11c3Qgbm90IGJlIGEKLSAgICBmdW5jdGlv
biBvZiBhbnkgb3RoZXIgc3RhdGUgYW5kIGNhbm5vdCBiZSBjaGFuZ2VkIG9uY2UgdGhleSBhcmUK
LSAgICBlc3RhYmxpc2hlZC4gVGhlIGFjdHVhbCByZXNvbHV0aW9uIGluIGJpdHMgb2YgZWFjaCBj
b21wb25lbnQgb2YgdGhlIAotICAgIGFsbG9jYXRlZCBpbWFnZSBjYW4gYmUgcXVlcmllZCB3aXRo
IEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2LiIKLQotICAgIE1vZGlmeSB0aGUgZGVmaW5pdG9u
IG9mIFJlbmRlcmJ1ZmZlclN0b3JhZ2UgYXMgZm9sbG93czoKLQotICAgICJUaGUgY29tbWFuZAot
Ci0gICAgICAgIHZvaWQgUmVuZGVyYnVmZmVyU3RvcmFnZShlbnVtIHRhcmdldCwgZW51bSBpbnRl
cm5hbGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVpIHdp
ZHRoLCBzaXplaSBoZWlnaHQpOwotCi0gICAgIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyBSZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSB3aXRoCi0gICAgIDxzYW1wbGVzPiBlcXVh
bCB0byB6ZXJvLiIKLQotICAgIEluIHNlY3Rpb24gNC40LjUgKEZyYW1lYnVmZmVyIENvbXBsZXRl
bmVzcykgaW4gdGhlIHN1YnNlY3Rpb24KLSAgICB0aXRsZWQgIkZyYW1lYnVmZmVyIENvbXBsZXRl
bmVzcyIgYWRkIGFuIGVudHJ5IHRvIHRoZSBidWxsZXQgbGlzdDoKLQotICAgICogVGhlIHZhbHVl
IG9mIFJFTkRFUkJVRkZFUl9TQU1QTEVTX0FOR0xFIGlzIHRoZSBzYW1lIGZvciBhbGwgYXR0YWNo
ZWQKLSAgICAgIGltYWdlcy4KLSAgICAgIHsgRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NVUxUSVNB
TVBMRV9BTkdMRSB9Ci0KLSAgICBBbHNvIGFkZCBhIHBhcmFncmFwaCB0byB0aGUgZW5kIG9mIHRo
ZSBzZWN0aW9uIGFmdGVyIHRoZSBkZWZpbml0aW9uCi0gICAgb2YgQ2hlY2tGcmFtZWJ1ZmZlclN0
YXR1czoKLQotICAgICJUaGUgdmFsdWVzIG9mIFNBTVBMRV9CVUZGRVJTIGFuZCBTQU1QTEVTIGFy
ZSBkZXJpdmVkIGZyb20gdGhlCi0gICAgYXR0YWNobWVudHMgb2YgdGhlIGN1cnJlbnRseSBib3Vu
ZCBmcmFtZWJ1ZmZlciBvYmplY3QuICBJZiB0aGUKLSAgICBjdXJyZW50IERSQVdfRlJBTUVCVUZG
RVJfQklORElOR19BTkdMRSBpcyBub3QgImZyYW1lYnVmZmVyIGNvbXBsZXRlIiwKLSAgICB0aGVu
IGJvdGggU0FNUExFX0JVRkZFUlMgYW5kIFNBTVBMRVMgYXJlIHVuZGVmaW5lZC4gIE90aGVyd2lz
ZSwKLSAgICBTQU1QTEVTIGlzIGVxdWFsIHRvIHRoZSB2YWx1ZSBvZiBSRU5ERVJCVUZGRVJfU0FN
UExFU19BTkdMRSBmb3IgdGhlCi0gICAgYXR0YWNoZWQgaW1hZ2VzICh3aGljaCBhbGwgbXVzdCBo
YXZlIHRoZSBzYW1lIHZhbHVlIGZvcgotICAgIFJFTkRFUkJVRkZFUl9TQU1QTEVTX0FOR0xFKS4g
IEZ1cnRoZXIsIFNBTVBMRV9CVUZGRVJTIGlzIG9uZSBpZgotICAgIFNBTVBMRVMgaXMgbm9uLXpl
cm8uICBPdGhlcndpc2UsIFNBTVBMRV9CVUZGRVJTIGlzIHplcm8uCi0KLUFkZGl0aW9ucyB0byBD
aGFwdGVyIDUgb2YgdGhlIE9wZW5HTCBFUyAyLjAgU3BlY2lmaWNhdGlvbiAoU3BlY2lhbCBGdW5j
dGlvbnMpCi0KLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgNiBvZiB0aGUgT3BlbkdMIEVTIDIuMCBT
cGVjaWZpY2F0aW9uIChTdGF0ZSBhbmQgU3RhdGUKLVJlcXVlc3RzKQotCi0gICAgSW4gc2VjdGlv
biA2LjEuMyAoRW51bWVyYWdlZCBRdWVyaWVzKSwgbW9kaWZ5IHRoZSB0aGlyZCBwYXJhZ3JhcGgg
Ci0gICAgb2YgdGhlIGRlc2NyaXB0aW9uIG9mIEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2IGFz
IGZvbGxvd3M6Ci0KLSAgICAiVXBvbiBzdWNjZXNzZnVsIHJldHVybiBmcm9tIEdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcml2LCBpZgotICAgIDxwbmFtZT4gaXMgUkVOREVSQlVGRkVSX1dJRFRILCBS
RU5ERVJCVUZGRVJfSEVJR0hULAotICAgIFJFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVQsIG9y
IFJFTkRFUkJVRkZFUl9TQU1QTEVTX0FOR0xFLCB0aGVuIDxwYXJhbXM+IAotICAgIHdpbGwgY29u
dGFpbiB0aGUgd2lkdGggaW4gcGl4ZWxzLCBoZWlnaHQgaW4gcGl4ZWxzLCBpbnRlcm5hbCBmb3Jt
YXQsIG9yIAotICAgIG51bWJlciBvZiBzYW1wbGVzLCByZXNwZWN0aXZlbHksIG9mIHRoZSBpbWFn
ZSBvZiB0aGUgcmVuZGVyYnVmZmVyIAotICAgIGN1cnJlbnRseSBib3VuZCB0byA8dGFyZ2V0Pi4i
Ci0KLQotRGVwZW5kZW5jaWVzIG9uIEFOR0xFX2ZyYW1lYnVmZmVyX2JsaXQgICAgCi0KLSAgICBB
TkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IGlzIHJlcXVpcmVkLiAgVGVjaG5pY2FsbHksIEFOR0xFX2Zy
YW1lYnVmZmVyX2JsaXQKLSAgICB3b3VsZCBub3QgYmUgcmVxdWlyZWQgdG8gc3VwcG9ydCBtdWx0
aXNhbXBsZWQgcmVuZGVyaW5nLCBleGNlcHQgZm9yCi0gICAgdGhlIGZhY3QgdGhhdCBpdCBwcm92
aWRlcyB0aGUgb25seSBtZXRob2Qgb2YgZG9pbmcgYSBtdWx0aXNhbXBsZQotICAgIHJlc292bGUg
ZnJvbSBhIG11bHRpc2FtcGxlIHJlbmRlcmJ1ZmZlci4KLQotRGVwZW5kZW5jaWVzIG9uIE9FU190
ZXh0dXJlXzNECi0KLSAgICBPbiBhbiBPcGVuR0wgRVMgaW1wbGVtZW50YXRpb24sIGluIHRoZSBh
YnNlbnNlIG9mIE9FU190ZXh0dXJlXzNELAotICAgIG9taXQgcmVmZXJlbmNlcyB0byBDb3B5VGV4
U3ViSW1hZ2UzRE9FUy4KLQotRXJyb3JzCi0KLSAgICBUaGUgZXJyb3IgSU5WQUxJRF9PUEVSQVRJ
T04gaXMgZ2VuZXJhdGVkIGlmIFJlYWRQaXhlbHMgb3IgCi0gICAgQ29weVRleHtTdWJ9SW1hZ2Uq
IGlzIGNhbGxlZCB3aGlsZSBSRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkdfQU5HTEUKLSAgICBpcyBu
b24temVybywgdGhlIHJlYWQgZnJhbWVidWZmZXIgaXMgZnJhbWVidWZmZXIgY29tcGxldGUsIGFu
ZCB0aGUKLSAgICB2YWx1ZSBvZiBTQU1QTEVfQlVGRkVSUyBmb3IgdGhlIHJlYWQgZnJhbWVidWZm
ZXIgaXMgZ3JlYXRlciB0aGFuCi0gICAgemVyby4KLQotICAgIElmIGJvdGggdGhlIGRyYXcgYW5k
IHJlYWQgZnJhbWVidWZmZXJzIGFyZSBmcmFtZWJ1ZmZlciBjb21wbGV0ZSBhbmQKLSAgICB0aGUg
ZHJhdyBmcmFtZWJ1ZmZlciBoYXMgYSB2YWx1ZSBvZiBTQU1QTEVfQlVGRkVSUyB0aGF0IGlzIGdy
ZWF0ZXIgCi0gICAgdGhhbiB6ZXJvLCB0aGVuIHRoZSBlcnJvciBJTlZBTElEX09QRVJBVElPTiBp
cyBnZW5lcmF0ZWQgaWYgCi0gICAgQmxpdEZyYW1lYnVmZmVyQU5HTEUgaXMgY2FsbGVkLgotCi0g
ICAgSWYgYm90aCB0aGUgZHJhdyBhbmQgcmVhZCBmcmFtZWJ1ZmZlcnMgYXJlIGZyYW1lYnVmZmVy
IGNvbXBsZXRlIGFuZAotICAgIHRoZSByZWFkIGZyYW1lYnVmZmVyIGhhcyBhIHZhbHVlIG9mIFNB
TVBMRV9CVUZGRVJTIHRoYXQgaXMgZ3JlYXRlcgotICAgIHRoYW4gemVybywgdGhlIGVycm9yIElO
VkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiAKLSAgICBCbGl0RnJhbWVidWZmZXJBTkdM
RSBpcyBjYWxsZWQgYW5kIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAgICBhcmUg
dHJ1ZToKLSAgICAgLSA8bWFzaz4gaW5jbHVkZXMgREVQVEhfQlVGRkVSX0JJVCBvciBTVEVOQ0lM
X0JVRkZFUl9CSVQuCi0gICAgIC0gdGhlIHNvdXJjZSBvciBkZXN0aW5hdGlvbiByZWN0YW5nbGVz
IGRvIG5vdCBzcGVjaWZ5IHRoZSBlbnRpcmUKLSAgICAgICBzb3VyY2Ugb3IgZGVzdGluYXRpb24g
YnVmZmVyLgotCi0gICAgSWYgYm90aCB0aGUgZHJhdyBhbmQgcmVhZCBmcmFtZWJ1ZmZlcnMgYXJl
IGZyYW1lYnVmZmVyIGNvbXBsZXRlIGFuZAotICAgIGVpdGhlciBoYXMgYSB2YWx1ZSBvZiBTQU1Q
TEVfQlVGRkVSUyB0aGF0IGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLCB0aGVuCi0gICAgdGhlIGVycm9y
IElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBCbGl0RnJhbWVidWZmZXJBTkdMRSBp
cwotICAgIGNhbGxlZCBhbmQgdGhlIGZvcm1hdHMgb2YgdGhlIGRyYXcgYW5kIHJlYWQgZnJhbWVi
dWZmZXJzIGFyZSBub3QKLSAgICBpZGVudGljYWwuCi0KLSAgICBJZiBlaXRoZXIgdGhlIGRyYXcg
b3IgcmVhZCBmcmFtZWJ1ZmZlciBpcyBmcmFtZWJ1ZmZlciBjb21wbGV0ZSBhbmQKLSAgICBoYXMg
YSB2YWx1ZSBvZiBTQU1QTEVfQlVGRkVSUyB0aGF0IGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLCB0aGVu
IHRoZQotICAgIGVycm9yIElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBCbGl0RnJh
bWVidWZmZXJBTkdMRSBpcyBjYWxsZWQKLSAgICBhbmQgdGhlIHNwZWNpZmllZCBzb3VyY2UgYW5k
IGRlc3RpbmF0aW9uIGRpbWVuc2lvbnMgYXJlIG5vdAotICAgIGlkZW50aWNhbC4KLQotICAgIElm
IFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFIGlzIGNhbGxlZCB3aXRoIDx0YXJn
ZXQ+IG5vdAotICAgIGVxdWFsIHRvIFJFTkRFUkJVRkZFUiwgdGhlIGVycm9yIElOVkFMSURfRU5V
TSBpcyBnZW5lcmF0ZWQuCi0KLSAgICBJZiBSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVB
TkdMRSBpcyBjYWxsZWQgd2l0aCBhbiAKLSAgICA8aW50ZXJuYWxmb3JtYXQ+IHRoYXQgaXMgbm90
IGxpc3RlZCBhcyBvbmUgb2YgdGhlIGNvbG9yLSwgZGVwdGgtIAotICAgIG9yIHN0ZW5jaWwtcmVu
ZGVyYWJsZSBmb3JtYXRzIGluIFRhYmxlIDQuNSwgdGhlbiB0aGUgZXJyb3IKLSAgICBJTlZBTElE
X0VOVU0gaXMgZ2VuZXJhdGVkLgotCi0gICAgSWYgUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlQU5HTEUgaXMgY2FsbGVkIHdpdGggPHdpZHRoPiBvciAKLSAgICA8aGVpZ2h0PiBncmVhdGVy
IHRoYW4gTUFYX1JFTkRFUkJVRkZFUl9TSVpFLCB0aGVuIHRoZSBlcnJvciAKLSAgICBJTlZBTElE
X1ZBTFVFIGlzIGdlbmVyYXRlZC4KLQotICAgIElmIFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZUFOR0xFIGlzIGNhbGxlZCB3aXRoIGEgdmFsdWUgb2YKLSAgICA8c2FtcGxlcz4gdGhhdCBp
cyBncmVhdGVyIHRoYW4gTUFYX1NBTVBMRVNfQU5HTEUgb3IgbGVzcyB0aGFuIHplcm8sCi0gICAg
dGhlbiB0aGUgZXJyb3IgSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQuCi0KLSAgICBUaGUgZXJy
b3IgT1VUX09GX01FTU9SWSBpcyBnZW5lcmF0ZWQgd2hlbgotICAgIFJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZUFOR0xFIGNhbm5vdCBjcmVhdGUgc3RvcmFnZSBvZiB0aGUKLSAgICBzcGVj
aWZpZWQgc2l6ZS4KLQotTmV3IFN0YXRlCi0KLSAgICBBZGQgdG8gdGFibGUgNi4yMiAoUmVuZGVy
YnVmZmVyIFN0YXRlKQotCi0gICAgR2V0IFZhbHVlICAgICAgICAgICAgICAgICAgICAgICAgICBU
eXBlICAgIEdldCBDb21tYW5kICAgICAgICAgICAgICAgICBJbml0aWFsIFZhbHVlICBEZXNjcmlw
dGlvbiAgICAgICAgICAgICBTZWN0aW9uCi0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSAgICAtLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0t
ICAtLS0tLS0tLS0tLS0tLS0tLS0tLSAgICAtLS0tLS0tCi0gICAgUkVOREVSQlVGRkVSX1NBTVBM
RVNfQU5HTEUgICAgICAgICBaKyAgICAgIEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2ICAwICAg
ICAgICAgICAgICBudW1iZXIgb2Ygc2FtcGxlcyAgICAgICA0LjQuMwotCi0KLSAgICBBZGQgdG8g
dGFibGUgNi55eSAoRnJhbWVidWZmZXIgRGVwZW5kZW50IFZhdWVzKSAoYWRkZWQgYnkgCi0gICAg
QU5HTEVfZnJhbWVidWZmZXJfYmxpdCksIHRoZSBmb2xsb3dpbmcgbmV3IGZyYW1lYnVmZmVyIGRl
cGVuZGVudCBzdGF0ZS4KLQotICAgIEdldCBWYWx1ZSAgICAgICAgICBUeXBlICBHZXQgQ29tbWFu
ZCAgICAgTWluaW11bSBWYWx1ZSAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICBTZWN0aW9uCi0g
ICAgLS0tLS0tLS0tLS0tLS0tLS0gIC0tLS0gIC0tLS0tLS0tLS0tICAgICAtLS0tLS0tLS0tLS0t
ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0gICAgIC0tLS0tLS0KLSAgICBNQVhfU0FNUExFU19BTkdM
RSAgWisgICAgR2V0SW50ZWdlcnYgICAgIDEgICAgICAgICAgICAgICAgTWF4aW11bSBudW1iZXIg
b2YgICAgICAgNC40LjMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2FtcGxlcyBzdXBwb3J0ZWQKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG11bHRpc2Ft
cGxpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAotCi0KLUlzc3VlcwotICAgIAotICAgIElzc3VlcyBmcm9tIEVYVF9mcmFtZWJ1
ZmZlcl9tdWx0aXNhbXBsZSBoYXZlIGJlZW4gcmVtb3ZlZC4KLSAKLSAgICAxKSBXaGF0IHNob3Vs
ZCB3ZSBjYWxsIHRoaXMgZXh0ZW5zaW9uPwotCi0gICAgICAgUmVzb2x2ZWQ6IEFOR0xFX2ZyYW1l
YnVmZmVyX2JsaXQuICAKLQotICAgICAgIFRoaXMgZXh0ZW5zaW9uIGlzIGEgcmVzdWx0IG9mIGEg
Y29sbGFib3JhdGlvbiBiZXR3ZWVuIEdvb2dsZSBhbmQgCi0gICAgICAgVHJhbnNHYW1pbmcgZm9y
IHRoZSBvcGVuLXNvdXJjZSBBTkdMRSBwcm9qZWN0LiBUeXBpY2FsbHkgb25lIHdvdWxkCi0gICAg
ICAgbGFiZWwgYSBtdWx0aS12ZW5kb3IgZXh0ZW5zaW9uIGFzIEVYVCwgYnV0IEVYVF9mcmFtZWJ1
ZmZlcl9tdWxpdHNhbXBsZSAKLSAgICAgICBpcyBhbHJlYWR5IHRoZSBuYW1lIGZvciB0aGlzIG9u
IERlc2t0b3AgR0wuICBBZGRpdGlvbmFsbHkgdGhpcwotICAgICAgIGlzbid0IHRydWVseSBhIG11
bHRpLXZlbmRvciBleHRlbnNpb24gYmVjYXVzZSB0aGVyZSBpcyBvbmx5IG9uZQotICAgICAgIGlt
cGxlbWVudGF0aW9uIG9mIHRoaXMuICBXZSdsbCBmb2xsb3cgdGhlIGV4YW1wbGUgb2YgdGhlIG9w
ZW4tc291cmNlCi0gICAgICAgTUVTQSBwcm9qZWN0IHdoaWNoIHVzZXMgdGhlIHByb2plY3QgbmFt
ZSBmb3IgdGhlIHZlbmRvciBzdWZmaXguCi0gCi0gICAgMikgSG93IGRvZXMgdGhpcyBleHRlbnNp
b24gZGlmZmVyIGZyb20gRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlPwotCi0gICAgICAgVGhp
cyBpcyBkZXNpZ25lZCB0byBiZSBhIHByb3BlciBzdWJzZXQgb2YgRVhUX2ZyYW1lYnVmZmVyX211
bHRpc2FtcGxlCi0gICAgICAgZnVuY3Rpb25hbGl0eSBhcyBhcHBsaWNhYmxlIHRvIE9wZW5HTCBF
UyAyLjAuCi0KLSAgICAgICBGdW5jdGlvbmFsaXR5IHRoYXQgaXMgdW5jaGFuZ2VkOiAKLSAgICAg
ICAgLSBjcmVhdGlvbiBvZiBtdWx0aXNhbXBsZSByZW5kZXJidWZmZXJzLgotICAgICAgICAtIHdo
b2xlIGJ1ZmZlciBtdWx0aS1zYW1wbGUtPnNpbmdsZS1zYW1wbGUgcmVzb2x2ZS4KLSAgICAgICAg
LSBubyBmb3JtYXQgY29udmVyc2lvbnMsIHN0cmV0Y2hpbmcgb3IgZmxpcHBpbmcgc3VwcG9ydGVk
IG9uIG11bHRpc2FtcGxlIGJsaXRzLgotCi0gICAgICAgQWRkaXRpb25hbCByZXN0cmljdGlvbnMg
b24gQmxpdEZyYW1lYnVmZmVyQU5HTEU6Ci0gICAgICAgIC0gbXVsdGlzYW1wbGUgcmVzb2x2ZSBp
cyBvbmx5IHN1cHBvcnRlZCBvbiBjb2xvciBidWZmZXJzLgotICAgICAgICAtIG5vIGJsaXRzIHRv
IG11bHRpc2FtcGxlIGRlc3RpbmF0aW9ucyAobm8gc2luZ2xlLT5tdWx0aSBvciBtdWx0aS1tdWx0
aSkuCi0gICAgICAgIC0gb25seSBlbnRpcmUgYnVmZmVycyBjYW4gYmUgcmVzb2x2ZWQuCi0gICAg
ICAgICAKLVJldmlzaW9uIEhpc3RvcnkKLQotICAgIFJldmlzaW9uIDEsIDIwMTAvMDcvMDgKLSAg
ICAgIC0gY29waWVkIGZyb20gcmV2aXNpb24gNyBvZiBFWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1w
bGUKLSAgICAgIC0gcmVtb3ZlZCBsYW5ndWFnZSB0aGF0IHdhcyBub3QgcmVsZXZhbnQgdG8gRVMy
IAotICAgICAgLSByZWJhc2UgY2hhbmdlcyBhZ2FpbnN0IHRoZSBPcGVuIEdMIEVTIDIuMCBzcGVj
aWZpY2F0aW9uCi0gICAgICAtIGFkZGVkIEFOR0xFLXNwZWNpZmljIHJlc3RyaWN0aW9ucwotICAg
IFJldmlzaW9uIDIsIDIwMTAvMDcvMTkKLSAgICAgIC0gZml4IG1pc3NpbmcgZXJyb3IgY29kZQot
ICAgIFJldmlzaW9uIDMsIDIwMTAvMDgvMDYKLSAgICAgIC0gYWRkIGFkZGl0aW9uYWwgY29udHJp
YnV0b3JzLCB1cGRhdGUgaW1wbGVtZW50YXRpb24gc3RhdHVzCi0gICAgICAtIGRpc2FsbG93IG5l
Z2F0aXZlIHNhbXBsZXMgCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25z
L0FOR0xFX2luc3RhbmNlZF9hcnJheXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL2V4dGVuc2lvbnMvQU5HTEVfaW5zdGFuY2VkX2FycmF5cy50eHQJKHJldmlzaW9u
IDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvQU5HTEVfaW5z
dGFuY2VkX2FycmF5cy50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNTkgKzAsMCBAQAotTmFtZQot
Ci0gICAgQU5HTEVfaW5zdGFuY2VkX2FycmF5cwotCi1OYW1lIFN0cmluZ3MKLQotICAgIEdMX0FO
R0xFX2luc3RhbmNlZF9hcnJheXMKLQotQ29udHJpYnV0b3JzCi0KLSAgICBDb250cmlidXRvcnMg
dG8gQVJCX2luc3RhbmNlZF9hcnJheXMKLSAgICBOaWNvbGFzIENhcGVucywgVHJhbnNHYW1pbmcg
SW5jLgotICAgIEphbWVzIEhlbGZlcnR5LCBUcmFuc0dhbWluZyBJbmMuCi0gICAgS2VubmV0aCBS
dXNzZWxsLCBHb29nbGUgSW5jLgotICAgIFZhbmdlbGlzIEtva2tldmlzLCBHb29nbGUgSW5jLgot
Ci1Db250YWN0Ci0KLSAgICBEYW5pZWwgS29jaCwgVHJhbnNHYW1pbmcgSW5jLiAoZGFuaWVsICdh
dCcgdHJhbnNnYW1pbmcuY29tKQotCi1TdGF0dXMKLQotICAgIEltcGxlbWVudGVkIGluIEFOR0xF
IHI5NzYuCi0KLVZlcnNpb24KLQotICAgIExhc3QgTW9kaWZpZWQgRGF0ZTogRmVicnVhcnkgOCwg
MjAxMgotICAgIEF1dGhvciBSZXZpc2lvbjogMwotCi1OdW1iZXIKLQotICAgIE9wZW5HTCBFUyBF
eHRlbnNpb24gIzEwOQotCi1EZXBlbmRlbmNpZXMKLQotICAgIE9wZW5HTCBFUyAyLjAgaXMgcmVx
dWlyZWQuCi0KLSAgICBUaGlzIGV4dGVuc2lvbiBpcyB3cml0dGVuIGFnYWluc3QgdGhlIE9wZW5H
TCBFUyAyLjAgU3BlY2lmaWNhdGlvbi4KLQotT3ZlcnZpZXcKLQotICAgIEEgY29tbW9uIHVzZSBj
YXNlIGluIEdMIGZvciBzb21lIGFwcGxpY2F0aW9ucyBpcyB0byBiZSBhYmxlIHRvCi0gICAgZHJh
dyB0aGUgc2FtZSBvYmplY3QsIG9yIGdyb3VwcyBvZiBzaW1pbGFyIG9iamVjdHMgdGhhdCBzaGFy
ZQotICAgIHZlcnRleCBkYXRhLCBwcmltaXRpdmUgY291bnQgYW5kIHR5cGUsIG11bHRpcGxlIHRp
bWVzLiAgVGhpcyAKLSAgICBleHRlbnNpb24gcHJvdmlkZXMgYSBtZWFucyBvZiBhY2NlbGVyYXRp
bmcgc3VjaCB1c2UgY2FzZXMgd2hpbGUgCi0gICAgcmVzdHJpY3RpbmcgdGhlIG51bWJlciBvZiBB
UEkgY2FsbHMsIGFuZCBrZWVwaW5nIHRoZSBhbW91bnQgb2YgCi0gICAgZHVwbGljYXRlIGRhdGEg
dG8gYSBtaW5pbXVtLgotICAgIAotICAgIFRoaXMgZXh0ZW5zaW9uIGludHJvZHVjZXMgYW4gYXJy
YXkgImRpdmlzb3IiIGZvciBnZW5lcmljCi0gICAgdmVydGV4IGFycmF5IGF0dHJpYnV0ZXMsIHdo
aWNoIHdoZW4gbm9uLXplcm8gc3BlY2lmaWVzIHRoYXQgdGhlCi0gICAgYXR0cmlidXRlIGlzICJp
bnN0YW5jZWQuIiAgQW4gaW5zdGFuY2VkIGF0dHJpYnV0ZSBkb2VzIG5vdAotICAgIGFkdmFuY2Ug
cGVyLXZlcnRleCBhcyB1c3VhbCwgYnV0IHJhdGhlciBhZnRlciBldmVyeSA8ZGl2aXNvcj4KLSAg
ICBjb25jZXB0dWFsIGRyYXcgY2FsbHMuCi0gICAgCi0gICAgKEF0dHJpYnV0ZXMgd2hpY2ggYXJl
bid0IGluc3RhbmNlZCBhcmUgcmVwZWF0ZWQgaW4gdGhlaXIgZW50aXJldHkKLSAgICBmb3IgZXZl
cnkgY29uY2VwdHVhbCBkcmF3IGNhbGwuKQotICAgIAotICAgIEJ5IHNwZWNpZnlpbmcgdHJhbnNm
b3JtIGRhdGEgaW4gYW4gaW5zdGFuY2VkIGF0dHJpYnV0ZSBvciBzZXJpZXMKLSAgICBvZiBpbnN0
YW5jZWQgYXR0cmlidXRlcywgdmVydGV4IHNoYWRlcnMgY2FuLCBpbiBjb25jZXJ0IHdpdGggdGhl
IAotICAgIGluc3RhbmNpbmcgZHJhdyBjYWxscywgZHJhdyBtdWx0aXBsZSBpbnN0YW5jZXMgb2Yg
YW4gb2JqZWN0IHdpdGggCi0gICAgb25lIGRyYXcgY2FsbC4KLQotSVAgU3RhdHVzCi0KLSAgICBO
byBrbm93biBJUCBjbGFpbXMuCi0KLU5ldyBUb2tlbnMKLQotICAgIEFjY2VwdGVkIGJ5IHRoZSA8
cG5hbWU+IHBhcmFtZXRlcnMgb2YgR2V0VmVydGV4QXR0cmliZnYgYW5kIAotICAgIEdldFZlcnRl
eEF0dHJpYml2OgotCi0gICAgICAgIFZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNPUl9BTkdMRSAg
ICAgICAgICAgICAgIDB4ODhGRQotCi1OZXcgUHJvY2VkdXJlcyBhbmQgRnVuY3Rpb25zCi0KLSAg
ICB2b2lkIERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShlbnVtIG1vZGUsIGludCBmaXJzdCwgc2l6
ZWkgY291bnQsCi0gICAgICAgICAgICBzaXplaSBwcmltY291bnQpOwotCi0gICAgdm9pZCBEcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRShlbnVtIG1vZGUsIHNpemVpIGNvdW50LCBlbnVtIHR5cGUs
Ci0gICAgICAgICAgICBjb25zdCB2b2lkICppbmRpY2VzLCBzaXplaSBwcmltY291bnQpOwotCi0g
ICAgdm9pZCBWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUodWludCBpbmRleCwgdWludCBkaXZpc29y
KTsKLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgMiBvZiB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZp
Y2F0aW9uCi0oT3BlbkdMIEVTIE9wZXJhdGlvbikKLQotICAgIE1vZGlmeSBzZWN0aW9uIDIuOCAo
VmVydGV4IEFycmF5cyksIHAuIDIxCi0KLSAgICBBZnRlciBkZXNjcmlwdGlvbiBvZiBFbmFibGVW
ZXJ0ZXhBdHRyaWJBcnJheSAvIERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheQotICAgIGFkZCB0aGUg
Zm9sbG93aW5nOgotCi0gICAgIlRoZSBjb21tYW5kCi0KLSAgICAgICAgdm9pZCBWZXJ0ZXhBdHRy
aWJEaXZpc29yQU5HTEUodWludCBpbmRleCwgdWludCBkaXZpc29yKTsKLQotICAgIG1vZGlmaWVz
IHRoZSByYXRlIGF0IHdoaWNoIGdlbmVyaWMgdmVydGV4IGF0dHJpYnV0ZXMgYWR2YW5jZSB3aGVu
Ci0gICAgcmVuZGVyaW5nIG11bHRpcGxlIGluc3RhbmNlcyBvZiBwcmltaXRpdmVzIGluIGEgc2lu
Z2xlIGRyYXcgY2FsbAotICAgIChzZWUgRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFIGFuZCBEcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRSBiZWxvdykuCi0gICAgSWYgPGRpdmlzb3I+IGlzIHplcm8s
IHRoZSBhdHRyaWJ1dGUgYXQgc2xvdCA8aW5kZXg+IGFkdmFuY2VzIG9uY2UKLSAgICBwZXIgdmVy
dGV4LiAgSWYgPGRpdmlzb3I+IGlzIG5vbi16ZXJvLCB0aGUgYXR0cmlidXRlIGFkdmFuY2VzIG9u
Y2UKLSAgICBwZXIgPGRpdmlzb3I+IGluc3RhbmNlcyBvZiB0aGUgcHJpbWl0aXZlcyBiZWluZyBy
ZW5kZXJlZC4KLSAgICBBbiBhdHRyaWJ1dGUgaXMgcmVmZXJyZWQgdG8gYXMgImluc3RhbmNlZCIg
aWYgaXRzIDxkaXZpc29yPiB2YWx1ZSBpcwotICAgIG5vbi16ZXJvLiIKLQotICAgIFJlcGxhY2Ug
dGhlIHRleHQgZGVzY3JpYmluZyBEcmF3QXJyYXlzIGFuZCBEcmF3RWxlbWVudHMgaW4gdGhlCi0g
ICAgIlRyYW5zZmVycmluZyBBcnJheSBFbGVtZW50cyIgc3Vic2VjdGlvbiBvZiAyLjgsIGZyb20g
dGhlIHNlY29uZCBwYXJhZ3JhcGgKLSAgICB0aHJvdWdoIHRoZSBlbmQgb2YgdGhlIHNlY3Rpb24g
d2l0aCB0aGUgZm9sbG93aW5nOgotCi0gICAgIlRoZSBjb21tYW5kCi0KLSAgICAgICAgdm9pZCBE
cmF3QXJyYXlzT25lSW5zdGFuY2UoIGVudW0gbW9kZSwgaW50IGZpcnN0LCBzaXplaSBjb3VudCwg
aW50IGluc3RhbmNlICk7Ci0KLSAgICBkb2VzIG5vdCBleGlzdCBpbiB0aGUgR0wsIGJ1dCBpcyB1
c2VkIHRvIGRlc2NyaWJlIGZ1bmN0aW9uYWxpdHkgaW4KLSAgICB0aGUgcmVzdCBvZiB0aGlzIHNl
Y3Rpb24uICBUaGlzIGZ1bmN0aW9uIGNvbnN0cnVjdHMgYSBzZXF1ZW5jZSBvZgotICAgIGdlb21l
dHJpYyBwcmltaXRpdmVzIGJ5IHRyYW5zZmVycmluZyBlbGVtZW50cyA8Zmlyc3Q+IHRocm91Z2gg
PGZpcnN0PiArCi0gICAgPGNvdW50PiAtIDEgb2YgZWFjaCBlbmFibGVkIG5vbi1pbnN0YW5jZWQg
YXJyYXkgdG8gdGhlIEdMLiA8bW9kZT4KLSAgICBzcGVjaWZpZXMgd2hhdCBraW5kIG9mIHByaW1p
dGl2ZXMgYXJlIGNvbnN0cnVjdGVkLCBhcyBkZWZpbmVkIGluIHNlY3Rpb24KLSAgICAyLjYuMS4K
LQotICAgIElmIGFuIGVuYWJsZWQgdmVydGV4IGF0dHJpYnV0ZSBhcnJheSBpcyBpbnN0YW5jZWQg
KGl0IGhhcyBhIG5vbi16ZXJvCi0gICAgYXR0cmlidXRlIDxkaXZpc29yPiBhcyBzcGVjaWZpZWQg
YnkgVmVydGV4QXR0cmliRGl2aXNvckFOR0xFKSwgdGhlIGVsZW1lbnQKLSAgICB0aGF0IGlzIHRy
YW5zZmVycmVkIHRvIHRoZSBHTCBpcyBnaXZlbiBieToKLQotICAgICAgICBmbG9vciggPGluc3Rh
bmNlPiAvIDxkaXZpc29yPiApLgotCi0gICAgSWYgYW4gYXJyYXkgY29ycmVzcG9uZGluZyB0byBh
IGdlbmVyaWMgYXR0cmlidXRlIHJlcXVpcmVkIGJ5IGEgdmVydGV4IHNoYWRlcgotICAgIGlzIG5v
dCBlbmFibGVkLCB0aGVuIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgaXMgdGFrZW4gZnJvbSB0
aGUgY3VycmVudAotICAgIGdlbmVyaWMgYXR0cmlidXRlIHN0YXRlIChzZWUgc2VjdGlvbiAyLjcp
LgotCi0gICAgSWYgYW4gYXJyYXkgY29ycmVzcG9uZGluZyB0byBhIGdlbmVyaWMgYXR0cmlidXRl
IHJlcXVpcmVkIGJ5IGEgdmVydGV4IHNoYWRlcgotICAgIGlzIGVuYWJsZWQsIHRoZSBjb3JyZXNw
b25kaW5nIGN1cnJlbnQgZ2VuZXJpYyBhdHRyaWJ1dGUgdmFsdWUgaXMgdW5hZmZlY3RlZCAKLSAg
ICBieSB0aGUgZXhlY3V0aW9uIG9mIERyYXdBcnJheXNPbmVJbnN0YW5jZS4KLQotICAgIFNwZWNp
ZnlpbmcgPGZpcnN0PiA8IDAgcmVzdWx0cyBpbiB1bmRlZmluZWQgYmVoYXZpb3IuIEdlbmVyYXRp
bmcgdGhlIGVycm9yIAotICAgIElOVkFMSURfVkFMVUUgaXMgcmVjb21tZW5kZWQgaW4gdGhpcyBj
YXNlLgotCi0gICAgVGhlIGNvbW1hbmQKLQotICAgICAgICB2b2lkIERyYXdBcnJheXMoIGVudW0g
bW9kZSwgaW50IGZpcnN0LCBzaXplaSBjb3VudCApOwotCi0gICAgaXMgZXF1aXZhbGVudCB0byB0
aGUgY29tbWFuZCBzZXF1ZW5jZQotICAgIAotICAgICAgICBEcmF3QXJyYXlzT25lSW5zdGFuY2Uo
bW9kZSwgZmlyc3QsIGNvdW50LCAwKTsKLQotICAgIFRoZSBjb21tYW5kCi0KLSAgICAgICAgdm9p
ZCBEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoZW51bSBtb2RlLCBpbnQgZmlyc3QsIHNpemVpIGNv
dW50LAotICAgICAgICAgICAgICAgIHNpemVpIHByaW1jb3VudCk7Ci0KLSAgICBiZWhhdmVzIGlk
ZW50aWNhbGx5IHRvIERyYXdBcnJheXMgZXhjZXB0IHRoYXQgPHByaW1jb3VudD4KLSAgICBpbnN0
YW5jZXMgb2YgdGhlIHJhbmdlIG9mIGVsZW1lbnRzIGFyZSBleGVjdXRlZCwgYW5kIHRoZQotICAg
IDxpbnN0YW5jZT4gYWR2YW5jZXMgZm9yIGVhY2ggaXRlcmF0aW9uLiBJbnN0YW5jZWQgYXR0cmli
dXRlcyB0aGF0Ci0gICAgaGF2ZSA8ZGl2aXNvcj4gTiwgKHdoZXJlIE4gPiAwLCBhcyBzcGVjaWZp
ZWQgYnkKLSAgICBWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpIGFkdmFuY2Ugb25jZSBldmVyeSBO
IGluc3RhbmNlcy4KLSAgICAKLSAgICBJdCBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzOiAKLQotICAg
ICAgICBpZiAobW9kZSwgY291bnQsIG9yIHByaW1jb3VudCBpcyBpbnZhbGlkKQotICAgICAgICAg
ICAgZ2VuZXJhdGUgYXBwcm9wcmlhdGUgZXJyb3IKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBmb3IgKGkgPSAwOyBpIDwgcHJpbWNvdW50OyBpKyspIHsKLSAgICAgICAgICAgICAgICBEcmF3
QXJyYXlzT25lSW5zdGFuY2UobW9kZSwgZmlyc3QsIGNvdW50LCBpKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotCi0gICAgVGhlIGNvbW1hbmQKLQotICAgICAgIHZvaWQgRHJhd0VsZW1lbnRz
T25lSW5zdGFuY2UoIGVudW0gbW9kZSwgc2l6ZWkgY291bnQsIGVudW0gdHlwZSwKLSAgICAgICAg
ICAgIHZvaWQgKmluZGljZXMsIGludCBpbnN0YW5jZSApOwotCi0gICAgZG9lcyBub3QgZXhpc3Qg
aW4gdGhlIEdMLCBidXQgaXMgdXNlZCB0byBkZXNjcmliZSBmdW5jdGlvbmFsaXR5IGluCi0gICAg
dGhlIHJlc3Qgb2YgdGhpcyBzZWN0aW9uLiAgVGhpcyBjb21tYW5kIGNvbnN0cnVjdHMgYSBzZXF1
ZW5jZSBvZgotICAgIGdlb21ldHJpYyBwcmltaXRpdmVzIGJ5IHN1Y2Nlc3NpdmVseSB0cmFuc2Zl
cnJpbmcgdGhlIDxjb3VudD4gZWxlbWVudHMKLSAgICB3aG9zZSBpbmRpY2VzIGFyZSBzdG9yZWQg
aW4gdGhlIGN1cnJlbnRseSBib3VuZCBlbGVtZW50IGFycmF5IGJ1ZmZlcgotICAgIChzZWUgc2Vj
dGlvbiAyLjkuMikgYXQgdGhlIG9mZnNldCBkZWZpbmVkIGJ5IDxpbmRpY2VzPiB0byB0aGUgR0wu
Ci0gICAgVGhlIDxpPi10aCBlbGVtZW50IHRyYW5zZmVycmVkIGJ5IERyYXdFbGVtZW50c09uZUlu
c3RhbmNlIHdpbGwgYmUgdGFrZW4KLSAgICBmcm9tIGVsZW1lbnQgPGluZGljZXM+W2ldIG9mIGVh
Y2ggZW5hYmxlZCBub24taW5zdGFuY2VkIGFycmF5LgotICAgIDx0eXBlPiBtdXN0IGJlIG9uZSBv
ZiBVTlNJR05FRF9CWVRFLCBVTlNJR05FRF9TSE9SVCwgb3IgVU5TSUdORURfSU5ULCAKLSAgICBp
bmRpY2F0aW5nIHRoYXQgdGhlIGluZGV4IHZhbHVlcyBhcmUgb2YgR0wgdHlwZSB1Ynl0ZSwgdXNo
b3J0LCBvciB1aW50Ci0gICAgcmVzcGVjdGl2ZWx5LiA8bW9kZT4gc3BlY2lmaWVzIHdoYXQga2lu
ZCBvZiBwcmltaXRpdmVzIGFyZSBjb25zdHJ1Y3RlZCwKLSAgICBhcyBkZWZpbmVkIGluIHNlY3Rp
b24gMi42LjEuCi0KLSAgICBJZiBhbiBlbmFibGVkIHZlcnRleCBhdHRyaWJ1dGUgYXJyYXkgaXMg
aW5zdGFuY2VkIChpdCBoYXMgYSBub24temVybwotICAgIGF0dHJpYnV0ZSA8ZGl2aXNvcj4gYXMg
c3BlY2lmaWVkIGJ5IFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSksIHRoZSBlbGVtZW50Ci0gICAg
dGhhdCBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgR0wgaXMgZ2l2ZW4gYnk6Ci0KLSAgICAgICAgZmxv
b3IoIDxpbnN0YW5jZT4gLyA8ZGl2aXNvcj4gKTsKLQotICAgIElmIGFuIGFycmF5IGNvcnJlc3Bv
bmRpbmcgdG8gYSBnZW5lcmljIGF0dHJpYnV0ZSByZXF1aXJlZCBieSBhIHZlcnRleAotICAgIHNo
YWRlciBpcyBub3QgZW5hYmxlZCwgdGhlbiB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGlzIHRh
a2VuIGZyb20gdGhlIAotICAgIGN1cnJlbnQgZ2VuZXJpYyBhdHRyaWJ1dGUgc3RhdGUgKHNlZSBz
ZWN0aW9uIDIuNykuIE90aGVyd2lzZSwgaWYgYW4gYXJyYXkKLSAgICBpcyBlbmFibGVkLCB0aGUg
Y29ycmVzcG9uZGluZyBjdXJyZW50IGdlbmVyaWMgYXR0cmlidXRlIHZhbHVlIGlzIAotICAgIHVu
YWZmZWN0ZWQgYnkgdGhlIGV4ZWN1dGlvbiBvZiBEcmF3RWxlbWVudHNPbmVJbnN0YW5jZS4KLQot
ICAgIFRoZSBjb21tYW5kCi0KLSAgICAgICAgdm9pZCBEcmF3RWxlbWVudHMoIGVudW0gbW9kZSwg
c2l6ZWkgY291bnQsIGVudW0gdHlwZSwKLSAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpY2Vz
KTsKLQotICAgIGJlaGF2ZXMgaWRlbnRpY2FsbHkgdG8gRHJhd0VsZW1lbnRzT25lSW5zdGFuY2Ug
d2l0aCB0aGUgPGluc3RhbmNlPiAKLSAgICBwYXJhbWV0ZXIgc2V0IHRvIHplcm87IHRoZSBlZmZl
Y3Qgb2YgY2FsbGluZwotCi0gICAgICAgIERyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwgdHlwZSwg
aW5kaWNlcyk7Ci0KLSAgICBpcyBlcXVpdmFsZW50IHRvIHRoZSBjb21tYW5kIHNlcXVlbmNlOgot
Ci0gICAgICAgaWYgKG1vZGUsIGNvdW50IG9yIHR5cGUgaXMgaW52YWxpZCApCi0gICAgICAgICAg
ICBnZW5lcmF0ZSBhcHByb3ByaWF0ZSBlcnJvcgotICAgICAgICBlbHNlCi0gICAgICAgICAgICBE
cmF3RWxlbWVudHNPbmVJbnN0YW5jZShtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgMCk7Ci0K
LSAgICBUaGUgY29tbWFuZAotCi0gICAgICAgIHZvaWQgRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5H
TEUoZW51bSBtb2RlLCBzaXplaSBjb3VudCwgZW51bSB0eXBlLAotICAgICAgICAgICAgICAgIGNv
bnN0IHZvaWQgKmluZGljZXMsIHNpemVpIHByaW1jb3VudCk7Ci0KLSAgICBiZWhhdmVzIGlkZW50
aWNhbGx5IHRvIERyYXdFbGVtZW50cyBleGNlcHQgdGhhdCA8cHJpbWNvdW50PgotICAgIGluc3Rh
bmNlcyBvZiB0aGUgc2V0IG9mIGVsZW1lbnRzIGFyZSBleGVjdXRlZCBhbmQgdGhlIGluc3RhbmNl
Ci0gICAgYWR2YW5jZXMgYmV0d2VlbiBlYWNoIHNldC4gSW5zdGFuY2VkIGF0dHJpYnV0ZXMgYXJl
IGFkdmFuY2VkIGFzIHRoZXkgZG8KLSAgICBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiBEcmF3QXJy
YXlzSW5zdGFuY2VkQU5HTEUuIEl0IGhhcyB0aGUgc2FtZSBlZmZlY3QgYXM6Ci0KLSAgICAgICAg
aWYgKG1vZGUsIGNvdW50LCBwcmltY291bnQsIG9yIHR5cGUgaXMgaW52YWxpZCApCi0gICAgICAg
ICAgICBnZW5lcmF0ZSBhcHByb3ByaWF0ZSBlcnJvcgotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcHJpbWNvdW50OyBpKyspIHsKLSAgICAgICAgICAgICAg
ICBEcmF3RWxlbWVudHNPbmVJbnN0YW5jZShtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgaSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgIElmIHRoZSBudW1iZXIgb2Ygc3VwcG9y
dGVkIGdlbmVyaWMgdmVydGV4IGF0dHJpYnV0ZXMgKHRoZSB2YWx1ZSBvZiAKLSAgICBNQVhfVkVS
VEVYX0FUVFJJQlMpIGlzIDxuPiwgdGhlbiB0aGUgY2xpZW50IHN0YXRlIHJlcXVpcmVkIHRvIGlt
cGxlbWVudAotICAgIHZlcnRleCBhcnJheXMgY29uc2lzdHMgb2YgPG4+IGJvb2xlYW4gdmFsdWVz
LCA8bj4gbWVtb3J5IHBvaW50ZXJzLCA8bj4KLSAgICBpbnRlZ2VyIHN0cmlkZSB2YWx1ZXMsIDxu
PiBzeW1ib2xpYyBjb25zdGFudHMgcmVwcmVzZW50aW5nIGFycmF5IHR5cGVzLAotICAgIDxuPiBp
bnRlZ2VycyByZXByZXNlbnRpbmcgdmFsdWVzIHBlciBlbGVtZW50LCA8bj4gYm9vbGVhbiB2YWx1
ZXMgCi0gICAgaW5kaWNhdGluZyBub3JtYWxpemF0aW9uLCBhbmQgPG4+IGludGVnZXJzIHJlcHJl
c2VudGluZyB2ZXJ0ZXggYXR0cmlidXRlCi0gICAgZGl2aXNvcnMuIAotCi0gICAgSW4gdGhlIGlu
aXRpYWwgc3RhdGUsIHRoZSBib29sZWFuIHZhbHVlcyBhcmUgZWFjaCBmYWxzZSwgdGhlIG1lbW9y
eQotICAgIHBvaW50ZXJzIGFyZSBlYWNoIE5VTEwsIHRoZSBzdHJpZGVzIGFyZSBlYWNoIHplcm8s
IHRoZSBhcnJheSB0eXBlcyBhcmUgCi0gICAgZWFjaCBGTE9BVCwgdGhlIGludGVnZXJzIHJlcHJl
c2VudGluZyB2YWx1ZXMgcGVyIGVsZW1lbnQgYXJlIGVhY2ggZm91ciwKLSAgICBhbmQgdGhlIGRp
dmlzb3JzIGFyZSBlYWNoIHplcm8uIgotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciAzIG9mIHRoZSBP
cGVuR0wgRVMgMi4wIFNwZWNpZmljYXRpb24gKFJhc3Rlcml6YXRpb24pCi0KLSAgICBOb25lCi0K
LUFkZGl0aW9ucyB0byBDaGFwdGVyIDQgb2YgdGhlIE9wZW5HTCBFUyAyLjAgU3BlY2lmaWNhdGlv
biAoUGVyLUZyYWdtZW50Ci1PcGVyYXRpb25zIGFuZCB0aGUgRnJhbWVidWZmZXIpCi0KLSAgICBO
b25lCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDUgb2YgdGhlIE9wZW5HTCBFUyAyLjAgU3BlY2lm
aWNhdGlvbiAoU3BlY2lhbCBGdW5jdGlvbnMpCi0KLSAgICBOb25lCi0KLUFkZGl0aW9ucyB0byBD
aGFwdGVyIDYgb2YgdGhlIE9wZW5HTCBFUyAyLjAgU3BlY2lmaWNhdGlvbiAoU3RhdGUgYW5kIFN0
YXRlCi1SZXF1ZXN0cykKLQotICAgIEluIHNlY3Rpb24gNi4xLjgsIGFkZCBWRVJURVhfQVRUUklC
X0FSUkFZX0RJVklTT1JfQU5HTEUgdG8gdGhlIGxpc3Qgb2YgCi0gICAgcG5hbWVzIGFjY2VwdGVk
IGJ5IEdldFZlcnRleEF0dHJpYmZ2IGFuZCBHZXRWZXJ0ZXhBdHRyaWJpdi4KLQotQWRkaXRpb25z
IHRvIHRoZSBBR0wvRUdML0dMWC9XR0wgU3BlY2lmaWNhdGlvbnMKLQotICAgIE5vbmUKLQotRGVw
ZW5kZW5jaWVzIG9uIE9FU19lbGVtZW50X2luZGV4X3VpbnQKLQotICAgIElmIE9FU19lbGVtZW50
X2luZGV4X3VpbnQgaXMgbm90IHN1cHBvcnRlZCwgcmVtb3ZlZCBhbGwgcmVmZXJlbmNlcwotICAg
IHRvIFVOU0lHTkVEX0lOVCBpbmRpY2VzIGFuZCB0aGUgYXNzb2NpYXRlZCBHTCBkYXRhIHR5cGUg
dWludCBpbiAKLSAgICB0aGUgZGVzY3JpcHRpb24gb2YgRHJhd0VsZW1lbnRzT25lSW5zdGFuY2Uu
Ci0KLUVycm9ycwotCi0gICAgSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgYnkgVmVydGV4QXR0
cmliRGl2aXNvckFOR0xFIGlmIDxpbmRleD4KLSAgICBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwg
dG8gTUFYX1ZFUlRFWF9BVFRSSUJTLgotCi0gICAgSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBi
eSBEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSBpZiA8dHlwZT4gaXMKLSAgICBub3Qgb25lIG9m
IFVOU0lHTkVEX0JZVEUsIFVOU0lHTkVEX1NIT1JUIG9yIFVOU0lHTkVEX0lOVC4KLQotICAgIElO
VkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGJ5IERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSBpZiA8
Zmlyc3Q+LAotICAgIDxjb3VudD4sIG9yIDxwcmltY291bnQ+IGlzIGxlc3MgdGhhbiB6ZXJvLgot
Ci0gICAgSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBieSBEcmF3QXJyYXlzSW5zdGFuY2VkQU5H
TEUgb3IgCi0gICAgRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUgaWYgPG1vZGU+IGlzIG5vdCBv
bmUgb2YgdGhlIG1vZGVzIGRlc2NyaWJlZCBpbgotICAgIHNlY3Rpb24gMi42LjEuCi0KLSAgICBJ
TlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBieSBEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSBp
ZiA8Y291bnQ+IG9yCi0gICAgPHByaW1jb3VudD4gaXMgbGVzcyB0aGFuIHplcm8uCi0KLSAgICBJ
TlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgYnkgRHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
IG9yIAotICAgIERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFIGlmIHRoZXJlIGlzIG5vdCBhdCBs
ZWFzdCBvbmUgZW5hYmxlZAotICAgIHZlcnRleCBhdHRyaWJ1dGUgYXJyYXkgdGhhdCBoYXMgYSA8
ZGl2aXNvcj4gb2YgemVybyBhbmQgaXMgYm91bmQgdG8gYW4KLSAgICBhY3RpdmUgZ2VuZXJpYyBh
dHRyaWJ1dGUgdmFsdWUgaW4gdGhlIHByb2dyYW0gdXNlZCBmb3IgdGhlIGRyYXcgY29tbWFuZC4K
LQotTmV3IFN0YXRlCi0KLSAgICBDaGFuZ2VzIHRvIHRhYmxlIDYuNywgcC4gMjY4IChWZXJ0ZXgg
QXJyYXkgRGF0YSkKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbAotICAgIEdldCBWYWx1ZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgVHlwZSAgIEdldCBDb21tYW5kICAgICAgVmFsdWUgICAgRGVzY3JpcHRpb24g
ICAgICAgU2VjLiAgCi0gICAgLS0tLS0tLS0tICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0t
LSAgLS0tLS0tLS0tLS0gICAgICAtLS0tLS0tICAtLS0tLS0tLS0tLSAgICAgICAtLS0tCi0gICAg
VkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJU09SX0FOR0xFICA4KnhaKyAgR2V0VmVydGV4QXR0cmli
ICAwICAgICAgICBJbnN0YW5jZSBEaXZpc29yICAyLjgKLQotSXNzdWVzCi0KLSAgICAxKSBTaG91
bGQgdmVydGV4IGF0dHJpYnV0ZSB6ZXJvIGJlIGluc3RhbmNlLWFibGU/Ci0KLSAgICAgICBSZXNv
bHZlZDogWWVzLiAKLSAgICAgICBEaXNjdXNzaW9uOiBJbiBEaXJlY3QzRCA5IHN0cmVhbSAwIG11
c3QgYmUgc3BlY2lmaWVkIGFzIGluZGV4ZWQgZGF0YQotICAgICAgIGFuZCBpdCBjYW5ub3QgYmUg
aW5zdGFuY2VkLiBJbiBBTkdMRSB3ZSBjYW4gd29yayBhcm91bmQgdGhpcyBieQotICAgICAgIHJl
bWFwcGluZyBhbnkgb3RoZXIgc3RyZWFtIHRoYXQgZG9lcyBoYXZlIGluZGV4ZWQgZGF0YSAoaWUg
YSB6ZXJvCi0gICAgICAgYXR0cmlidXRlIGRpdmlzb3IpIHRvIHN0cmVhbSAwIGluIEQzRDkuIFRo
aXMgd29ya3MgYmVjYXVzZSB0aGUgSExTTAotICAgICAgIHZlcnRleCBzaGFkZXIgbWF0Y2hlcyBh
dHRyaWJ1dGVzIGFnYWluc3QgdGhlIHN0cmVhbSBieSB1c2luZyB0aGUgCi0gICAgICAgc2hhZGVy
IHNlbWFudGljIGluZGV4LgotCi0gICAgMikgQ2FuIGFsbCB2ZXJ0ZXggYXR0cmlidXRlcyBiZSBp
bnN0YW5jZWQgc2ltdWx0YW5lb3VzbHk/Ci0KLSAgICAgICBSZXNvbHZlZDogTm8KLSAgICAgICBE
aXNjdXNzaW9uOiBJbiByYXJlIGNhc2VzIGl0IGlzIHBvc3NpYmxlIGZvciBubyBhdHRyaWJ1dGUg
dG8gaGF2ZSBhIAotICAgICAgIGRpdmlzb3Igb2YgMCwgbWVhbmluZyB0aGF0IGFsbCBhdHRyaWJ1
dGVzIGFyZSBpbnN0YW5jZWQgYW5kIG5vbmUgb2YKLSAgICAgICB0aGVtIGFyZSByZWd1bGFybHkg
aW5kZXhlZC4gVGhpcyBpbiB0dXJuIG1lYW5zIGVhY2ggaW5zdGFuY2UgY2FuIG9ubHkKLSAgICAg
ICBoYXZlIGEgc2luZ2xlIHBvc2l0aW9uIGVsZW1lbnQsIGFuZCBzbyBpdCBvbmx5IGFjdHVhbGx5
IHJlbmRlcnMKLSAgICAgICBzb21ldGhpbmcgd2hlbiByZW5kZXJpbmcgcG9pbnQgcHJpbWl0aXZl
cy4gVGhpcyBpcyBub3QgYSB2ZXJ5IAotICAgICAgIG1lYW5pbmdmdWwgd2F5IG9mIHVzaW5nIGlu
c3RhbmNpbmcgKHdoaWNoIGlzIGxpa2VseSB3aHkgRDNEIHJlc3RyaWN0cwotICAgICAgIHN0cmVh
bSAwIHRvIGJlIGluZGV4ZWQgcmVndWxhcmx5IGZvciBwb3NpdGlvbiBkYXRhIGluIHRoZSBmaXJz
dCBwbGFjZSkuCi0gICAgICAgV2UgY291bGQgaW1wbGVtZW50IGl0IGJ5IGRyYXdpbmcgdGhlc2Ug
cG9pbnRzIG9uZSBhdCBhIHRpbWUgKGVzc2VudGlhbGx5Ci0gICAgICAgZW11bGF0aW5nIGluc3Rh
bmNpbmcpLCBidXQgaXQgd291bGQgbm90IGJlIHZlcnkgZWZmaWNpZW50IGFuZCB0aGVyZQotICAg
ICAgIHNlZW1zIHRvIGJlIGxpdHRsZS10by1ubyB2YWx1ZSBpbiBkb2luZyBzby4KLQotICAgICAg
IElmIGFsbCBvZiB0aGUgZW5hYmxlZCB2ZXJ0ZXggYXR0cmlidXRlIGFycmF5cyB0aGF0IGFyZSBi
b3VuZCB0byBhY3RpdmUKLSAgICAgICBnZW5lcmljIGF0dHJpYnV0ZXMgaW4gdGhlIHByb2dyYW0g
aGF2ZSBhIG5vbi16ZXJvIGRpdmlzb3IsIHRoZSBkcmF3Ci0gICAgICAgY2FsbCBzaG91bGQgcmV0
dXJuIElOVkFMSURfT1BFUkFUSU9OLgotCi0gICAgMykgRGlyZWN0M0QgOSBvbmx5IHN1cHBvcnRz
IGluc3RhbmNpbmcgZm9yIERyYXdJbmRleGVkUHJpbWl0aXZlIHdoaWNoCi0gICAgICAgY29ycmVz
cG9uZHMgdG8gRHJhd0VsZW1lbnRzSW5zdGFuY2VkLiAgU2hvdWxkIHdlIHN1cHBvcnQgCi0gICAg
ICAgRHJhd0FycmF5c0luc3RhbmNlZD8KLQotICAgICAgIFJlc29sdmVkOiBZZXMKLSAgICAgICBE
aXNjdXNzaW9uOiBUaGlzIGNhbiBiZSBzdXBwb3J0ZWQgZWFzaWx5IGVub3VnaCBieSBzaW1wbHkg
bWFudWZhY3R1cmluZwotICAgICAgIGEgbGluZWFyIGluZGV4IGJ1ZmZlciBvZiBzdWZmaWNpZW50
IHNpemUgYW5kIHVzaW5nIHRoYXQgdG8gZG8gaW5kZXhlZAotICAgICAgIEQzRDkgZHJhd2luZy4K
LQotICAgIDQpIEhvdyBtdWNoIGRhdGEgaXMgbmVlZGVkIGluIGEgYnVmZmVyIGZvciBhbiBpbnN0
YW5jZWQgYXR0cmlidXRlPwotCi0gICAgICAgUmVzb2x2ZWQ6IFdoZXJlIHN0cmlkZSBpcyB0aGUg
dmFsdWUgcGFzc2VkIHRvIFZlcnRleEF0dHJpYlBvaW50ZXI6Ci0KLSAgICAgICBpZiBzdHJpZGUg
PiAwCi0gICAgICAgICBzaXplID0gc3RyaWRlICogY2VpbChwcmltY291bnQgLyBkaXZpc29yKTsK
LSAgICAgICBlbHNlCi0gICAgICAgICBzaXplID0gZWxlbWVudHNpemUgKiBjZWlsKHByaW1jb3Vu
dCAvIGRpdmlzb3IpOwotCi1SZXZpc2lvbiBIaXN0b3J5Ci0KLSAgICAjMyBGZWJydWFyeSA4LCAy
MDEyIGRna29jaAotICAgICAgIC0gY2xhcmlmeSBJc3N1ZSAzIGFuZCB0aGUgZXJyb3IgY29uZGl0
aW9uIGZvciBubyBpbmRleGVkIGF0dHJpYnV0ZXMKLSAgICAjMiBKYW51YXJ5IDI0LCAyMDEyIGRn
a29jaAotICAgICAgIC0gZml4IHR5cG9zLCBhZGQgY2xhcmlmaWNhdGlvbnMsIGFuZCBtb3JlIGVy
cm9ycwotICAgICMxIEphbnVhcnkgMTcsIDIwMTIgZGdrb2NoCi0gICAgICAgLSBpbml0aWFsIEdM
RVMyIHZlcnNpb24gZnJvbSBBUkJfaW5zdGFuY2VkX2FycmF5cwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9BTkdMRV9wYWNrX3JldmVyc2Vfcm93X29yZGVyLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0FOR0xFX3Bh
Y2tfcmV2ZXJzZV9yb3dfb3JkZXIudHh0CShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0FOR0xFX3BhY2tfcmV2ZXJzZV9yb3dfb3JkZXIudHh0
CShub25leGlzdGVudCkKQEAgLTEsMTY4ICswLDAgQEAKLU5hbWUKLQotICAgIEFOR0xFX3BhY2tf
cmV2ZXJzZV9yb3dfb3JkZXIKLQotTmFtZSBTdHJpbmdzCi0KLSAgICBHTF9BTkdMRV9wYWNrX3Jl
dmVyc2Vfcm93X29yZGVyCi0KLUNvbnRhY3QKLQotICAgIERhbmllbCBLb2NoLCBUcmFuc0dhbWlu
ZyAoZGFuaWVsICdhdCcgdHJhbnNnYW1pbmcuY29tKQotCi1Db250cmlidXRvcnMKLQotICAgIEJy
aWFuIFNhbG9tb24KLSAgICBEYW5pZWwgS29jaAotCi1TdGF0dXMKLQotICAgIEltcGxlbWVudGVk
IGluIEFOR0xFIEVTMgotCi1WZXJzaW9uCi0KLSAgICBMYXN0IE1vZGlmaWVkIERhdGU6IEZlYnJ1
YXJ5IDIyLCAyMDExCi0gICAgQXV0aG9yIFJldmlzaW9uOiAyMgotCi1OdW1iZXIKLQotICAgIE9w
ZW5HTCBFUyBFeHRlbnNpb24gIzExMAotCi1EZXBlbmRlbmNpZXMKLQotICAgIE9wZW5HTCAxLjUg
b3IgT3BlbkdMIEVTIDEuMCBhcmUgcmVxdWlyZWQuCi0KLSAgICBTb21lIG9mIHRoZSBmdW5jdGlv
bmFsaXR5IG9mIHRoaXMgZXh0ZW5zaW9uIGlzIG5vdCBzdXBwb3J0ZWQKLSAgICB3aGVuIGltcGxl
bWVudGVkIGFnYWluc3QgT3BlbkdMIEVTLgotCi0gICAgRVhUX3RleHR1cmVfcmcgaW50ZXJhY3Rz
IHdpdGggdGhpcyBleHRlbnNpb24uCi0KLSAgICBUaGUgZXh0ZW5zaW9uIGlzIHdyaXR0ZW4gYWdh
aW5zdCB0aGUgT3BlbkdMIDMuMiBTcGVjaWZpY2F0aW9uCi0gICAgKENvcmUgUHJvZmlsZSkuCi0K
LU92ZXJ2aWV3Ci0KLSAgICBUaGlzIGV4dGVuc2lvbiBpbnRyb2R1Y2VzIGEgbWVjaGFuaXNtIHRv
IGFsbG93IHJldmVyc2luZyB0aGUgb3JkZXIKLSAgICBpbiB3aGljaCBpbWFnZSByb3dzIGFyZSB3
cml0dGVuIGludG8gYSBwYWNrIGRlc3RpbmF0aW9uLiBUaGlzCi0gICAgZWZmZWN0aXZlbHkgYWxs
b3dzIGFuIGFwcGxpY2F0aW9uIHRvIGZsaXAgdGhlIHJlc3VsdHMgb2YgYSBSZWFkUGl4ZWxzCi0g
ICAgaW4gdGhlIHkgZGlyZWN0aW9uIG9wZXJhdGlvbiB3aXRob3V0IGhhdmluZyB0byByZW5kZXIg
dXBzaWRlIGRvd24uCi0KLSAgICBUaGUgY29vcmRpbmF0ZSBzeXN0ZW0gb2YgT3BlbkdMIGlzIHZl
cnRpY2FsbHkgcmV2ZXJzZWQgaW4gY29tcGFyaXNvbiB0byBhCi0gICAgbnVtYmVyIG9mIG90aGVy
IGdyYXBoaWNzIHN5c3RlbXMgc3VjaCBhcyBuYXRpdmUgd2luZG93aW5nIEFQSXMuIEFwcGxpY2F0
aW9ucwotICAgIHRoYXQgcGVyZm9ybSBSZWFkUGl4ZWxzIG1heSBoYXZlIHRvIGVpdGhlciByZW5k
ZXIgdG8gYW4gaW50ZXJtZWRpYXRlIGNvbG9yCi0gICAgYnVmZmVyIGJlZm9yZSBjYWxsaW5nIFJl
YWRQaXhlbHMgb3IgcGVyZm9ybSBhIGZsaXAgaW4gc29mdHdhcmUgYWZ0ZXIKLSAgICBSZWFkUGl4
ZWxzLiBJbiBzb21lIHN5c3RlbXMgdGhlIEdMIGNhbiBwZXJmb3JtIHRoZSByb3cgcmV2ZXJzYWwg
ZHVyaW5nCi0gICAgUmVhZFBpeGVscyB3aXRob3V0IGluY3VycmluZyBhZGRpdGlvbmFsIGNvc3Qu
Ci0KLUlQIFN0YXR1cwotCi0gICAgTm8ga25vd24gSVAgY2xhaW1zLgotCi1OZXcgUHJvY2VkdXJl
cyBhbmQgRnVuY3Rpb25zCi0KLSAgICBOb25lCi0KLU5ldyBUeXBlcwotCi0gICAgTm9uZQotCi1O
ZXcgVG9rZW5zCi0KLSAgICBBY2NlcHRlZCBieSB0aGUgPHBuYW1lPiBwYXJhbWV0ZXIgb2YgUGl4
ZWxTdG9yZXtpZn0sIEdldEludGVnZXJ2KCksCi0gICAgR2V0Qm9vbGVhbnYoKSwgYW5kIEdldEZs
b2F0digpOgotCi0gICAgICAgIFBBQ0tfUkVWRVJTRV9ST1dfT1JERVJfQU5HTEUgICAgMHg5M0E0
Ci0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDMgb2YgdGhlIE9wZW5HTCAzLjIgU3BlY2lmaWNhdGlv
biAoUmFzdGVyaXphdGlvbikKLQotICAgIEluIFNlY3Rpb24gNC4zLjEgKFJlYWRpbmcgUGl4ZWxz
KSBhZGQgYSByb3cgdG8gdGFibGUgNC43OgotCi0gICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKwotICAg
ICAgICB8IFBhcmFtZXRlciBOYW1lICAgICAgICAgICAgICAgfCBUeXBlICAgIHwgSW5pdGlhbCBW
YWx1ZSB8IFZhbGlkIFJhbmdlIHwKLSAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rCi0gICAgICAgIHwg
UEFDS19SRVZFUlNFX1JPV19PUkRFUl9BTkdMRSB8IGJvb2xlYW4gfCBGQUxTRSAgICAgICAgIHwg
VFJVRS9GQUxTRSAgfAotICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t
LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSsKLQotICAgIEluIFNlY3Rpb24g
NC4zLjEgKFJlYWRpbmcgUGl4ZWxzKSBtb2RpZnkgdGhlIHNlY29uZCBwYXJhZ3JhcGggb2Ygc3Vi
c2VjdGlvbiAKLSAgICAiUGxhY2VtZW50IGluIFBpeGVsIFBhY2sgQnVmZmVyIG9yIENsaWVudCBN
ZW1vcnkiIHRvIHJlYWQ6Ci0KLSAgICAgICAgV2hlbiBQQUNLX1JFVkVSU0VfUk9XX09SREVSX0FO
R0xFIGlzIEZBTFNFIGdyb3VwcyBvZiBlbGVtZW50cyBhcmUgcGxhY2VkCi0gICAgICAgIGluIG1l
bW9yeSBqdXN0IGFzIHRoZXkgYXJlIHRha2VuIGZyb20gbWVtb3J5IHdoZW4gdHJhbnNmZXJyaW5n
IHBpeGVsCi0gICAgICAgIHJlY3RhbmdsZXMgdG8gdGhlIEdMLiBUaGF0IGlzLCB0aGUgaXRoIGdy
b3VwIG9mIHRoZSBqdGggcm93Ci0gICAgICAgIChjb3JyZXNwb25kaW5nIHRvIHRoZSBpdGggcGl4
ZWwgaW4gdGhlIGp0aCByb3cpIGlzIHBsYWNlZCBpbiBtZW1vcnkganVzdAotICAgICAgICB3aGVy
ZSB0aGUgaXRoIGdyb3VwIG9mIHRoZSBqdGggcm93IHdvdWxkIGJlIHRha2VuIGZyb20gd2hlbiB0
cmFuc2ZlcnJpbmcKLSAgICAgICAgcGl4ZWxzLiBTZWUgVW5wYWNraW5nIHVuZGVyIHNlY3Rpb24g
My43LjIuIFRoZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhhdAotICAgICAgICB0aGUgc3RvcmFnZSBt
b2RlIHBhcmFtZXRlcnMgd2hvc2UgbmFtZXMgYmVnaW4gd2l0aCBQQUNLXyBhcmUgdXNlZAotICAg
ICAgICBpbnN0ZWFkIG9mIHRob3NlIHdob3NlIG5hbWVzIGJlZ2luIHdpdGggVU5QQUNLXy4gSWYg
dGhlIGZvcm1hdCBpcyBSRUQsCi0gICAgICAgIEdSRUVOLCBCTFVFLCBvciBBTFBIQSwgb25seSB0
aGUgY29ycmVzcG9uZGluZyBzaW5nbGUgZWxlbWVudCBpcyB3cml0dGVuLgotICAgICAgICBMaWtl
d2lzZSBpZiB0aGUgZm9ybWF0IGlzIFJHLCBSR0IsIG9yIEJHUiwgb25seSB0aGUgY29ycmVzcG9u
ZGluZyB0d28gb3IKLSAgICAgICAgdGhyZWUgZWxlbWVudHMgYXJlIHdyaXR0ZW4uIE90aGVyd2lz
ZSBhbGwgdGhlIGVsZW1lbnRzIG9mIGVhY2ggZ3JvdXAgYXJlCi0gICAgICAgIHdyaXR0ZW4uIFdo
ZW4gUEFDS19SRVZFUlNFX1JPV19PUkRFUl9BTkdMRSBpcyBUUlVFIHRoZSBvcmRlciBvZiB0aGUg
cm93cwotICAgICAgICBvZiBlbGVtZW50cyBpcyByZXZlcnNlZCBiZWZvcmUgdGhlIGRhdGEgaXMg
cGFja2VkLiBUaGF0IGlzLCB0aGUgZWxlbWVudAotICAgICAgICBjb3JyZXNwb25kaW5nIHRvIHBp
eGVsICh4LCB5ICsgaGVpZ2h0IC0gMSkgYmVjb21lcyB0aGUgZmlyc3QgZWxlbWVudAotICAgICAg
ICBwYWNrZWQsIGZvbGxvd2VkIGJ5ICh4ICsgMSwgeSArIGhlaWdodCAtIDEpLCBldGMuIE90aGVy
d2lzZSwgcGl4ZWwgZGF0YQotICAgICAgICBpcyBwYWNrZWQgaW4gdGhlIHNhbWUgbWFubmVyIGFz
IHdoZW4gUEFDS19SRVZFUlNFX1JPV19PUkRFUl9BTkdMRSBpcwotICAgICAgICBGQUxTRS4KLQot
QWRkaXRpb25zIHRvIENoYXB0ZXIgNiBvZiB0aGUgT3BlbkdMIDMuMiBTcGVjaWZpY2F0aW9uIChT
dGF0ZSBhbmQgU3RhdGUgUmVxdWVzdHMpCi0KLSAgICBJbiBTZWN0aW9uIDYuMS40IGFkZCB0aGUg
Zm9sbG93aW5nIHNlbnRlbmNlIHRvIHRoZSBmaWZ0aCBwYXJhZ3JhcGgKLSAgICAoYmVnaW5uaW5n
IHdpdGggIkZvciB0aHJlZS1kaW1lbnNpb25hbCBhbmQgdHdvLWRpbWVuc2lvbmFsIGFycmF5Ci0g
ICAgdGV4dHVyZXMuLi4iKToKLSAgICAgICAgV2hlbiBQQUNLX1JFVkVSU0VfUk9XX09SREVSX0FO
R0xFIGlzIFRSVUUgdGhlIG9yZGVyIG9mIHJvd3Mgd2l0aGluCi0gICAgICAgIGVhY2ggaW1hZ2Ug
YXJlIHJldmVyc2VkIHdpdGhvdXQgcmVvcmRlcmluZyB0aGUgaW1hZ2VzIHRoZW1zZWx2ZXMuCi0K
LURlcGVuZGVuY2llcyBvbiBPcGVuR0wgRVMKLQotICAgIElmIGltcGxlbWVudGVkIGZvciBPcGVu
R0wgRVMsIHRoaXMgZXh0ZW5zaW9uIGJlaGF2ZXMgYXMgc3BlY2lmaWVkLCBleGNlcHQ6Ci0KLSAg
ICAtRGVsZXRlIGFsbCByZWZlcmVuY2VzIHRvIGZvcm1hdHMgUkVELCBHUkVFTiwgQkxVRSwgUkcs
IGFuZCBCR1IuCi0KLSAgICAtVGhlIGxhbmd1YWdlIGFib3V0IGltYWdlIG9yZGVyIGluIFNlY3Rp
b24gNi4xLjQgZG9lcyBub3QgYXBwbHkgYXMgT3BlbkdMIEVTCi0gICAgIGRvZXMgbm90IGhhdmUg
R2V0VGV4SW1hZ2UuCi0KLURlcGVuZGVuY2llcyBvbiBFWFRfdGV4dHVyZV9yZwotCi0gICAgSWYg
RVhUX3RleHR1cmVfcmcgaXMgcHJlc2VudCByZWluc2VydCBsYW5ndWFnZSBhYm91dCBmb3JtYXRz
IFJFRCBhbmQgUkcKLSAgICBpbnRvIHRoZSBPcGVuR0wgRVMgMi4wIHNwZWNpZmljYXRpb24uCi0K
LUVycm9ycwotCi0gICAgTm9uZQotCi1OZXcgU3RhdGUKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbAotICAgIEdldCBWYWx1
ZSAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgR2V0IENvbW1hbmQgICAgICBWYWx1ZSAgICBE
ZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgU2VjLgotICAgIC0tLS0tLS0tLSAgICAgICAg
ICAgICAgICAgICAgICAgLS0tLSAgLS0tLS0tLS0tLS0gICAgICAtLS0tLS0tICAtLS0tLS0tLS0t
LSAgICAgICAgICAgICAgICAgICAgLS0tLQotICAgIFBBQ0tfUkVWRVJTRV9ST1dfT1JERVJfQU5H
TEUgICAgQiAgICAgR2V0SW50ZWdlcnYgICAgICBGQUxTRSAgICBQaXhlbCBwYWNrIHJvdyBvcmRl
ciByZXZlcnNhbCAgNC4zLjEKLQotTmV3IEltcGxlbWVudGF0aW9uIERlcGVuZGVudCBTdGF0ZQot
Ci0gICAgTm9uZQotCi1Jc3N1ZXMKLQotICAgIE5vbmUKLQotU2FtcGxlIENvZGUKLQotICAgIC8q
IEFsbG9jYXRlIHNwYWNlIHRvIGhvbGQgdGhlIHBpeGVsIGRhdGEgKi8KLSAgICBjb25zdCBHTHZv
aWQqIHBpeGVscyA9IG1hbGxvYyh3aWR0aCAqIGhlaWdodCAqIDQpOwotCi0gICAgLyogQmluZCB0
aGUgZnJhbWVidWZmZXIgb2JqZWN0IHRvIGJlIHJlYWQgKi8KLSAgICBnbEJpbmRGcmFtZWJ1ZmZl
cihHTF9SRUFEX0ZSQU1FQlVGRkVSLCBmcmFtZWJ1ZmZlcik7Ci0KLSAgICAvKiBFbmFibGUgcm93
IG9yZGVyIHJldmVyc2FsICovCi0gICAgZ2xQaXhlbFN0b3JlKEdMX1BBQ0tfUkVWRVJTRV9ST1df
T1JERVJfQU5HTEUsIFRSVUUpOwotCi0gICAgLyogVGhlIHBpeGVsIGRhdGEgc3RvcmVkIGluIHBp
eGVscyB3aWxsIGJlIGluIHRvcC1kb3duIG9yZGVyLCByZWFkeSBmb3IKLSAgICAgKiB1c2Ugd2l0
aCBhIHdpbmRvd2luZyBzeXN0ZW0gQVBJIHRoYXQgZXhwZWN0cyB0aGlzIG9yZGVyLgotICAgICAq
LwotICAgIGdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBHTF9SR0JBLCBHTF9VTlNJ
R05FRF9CWVRFLCBwaXhlbHMpOwotCi1SZXZpc2lvbiBIaXN0b3J5Ci0KLSAgICBSZXZpc2lvbiAx
LCAyMDExLzExLzIyIChCcmlhbiBTYWxvbW9uKQotICAgICAgLSBGaXJzdCB2ZXJzaW9uCi0gICAg
UmV2aXNpb24gMiwgMjAxMi8wMi8yMiAoZGdrb2NoKQotICAgICAgLSBwcmVwYXJlIGZvciBwdWJs
aXNoaW5nCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0FOR0xFX3Bs
YXRmb3JtX2FuZ2xlLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9l
eHRlbnNpb25zL0FOR0xFX3BsYXRmb3JtX2FuZ2xlLnR4dAkocmV2aXNpb24gMjA4MDIxKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9BTkdMRV9wbGF0Zm9ybV9hbmdsZS50
eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMjcgKzAsMCBAQAotTmFtZQotCi0gICAgQU5HTEVfcGxh
dGZvcm1fYW5nbGUKLQotTmFtZSBTdHJpbmdzCi0KLSAgICBFR0xfQU5HTEVfcGxhdGZvcm1fYW5n
bGUKLQotQ29udHJpYnV0b3JzCi0KLSAgICBTY290dCBHcmFoYW0sIEdvb2dsZQotICAgIFNoYW5u
b24gV29vZHMsIEdvb2dsZQotICAgIEdlb2ZmIExhbmcsIEdvb2dsZQotCi1Db250YWN0cwotCi0g
ICAgU2NvdHQgR3JhaGFtLCBHb29nbGUgKHNjb3R0bWcgJ2F0JyBnb29nbGUgJ2RvdCcgY29tKQot
Ci1TdGF0dXMKLQotICAgIERyYWZ0Ci0KLVZlcnNpb24KLQotICAgIFZlcnNpb24gMywgMjAxNC0x
MC0yMAotCi1OdW1iZXIKLQotICAgIEVHTCBFeHRlbnNpb24gWFhYCi0KLUV4dGVuc2lvbiBUeXBl
Ci0KLSAgICBFR0wgY2xpZW50IGV4dGVuc2lvbgotCi1EZXBlbmRlbmNpZXMKLQotICAgIFJlcXVp
cmVzIEVHTF9FWFRfY2xpZW50X2V4dGVuc2lvbnMgdG8gcXVlcnkgaXRzIGV4aXN0ZW5jZSB3aXRo
b3V0Ci0gICAgYSBkaXNwbGF5LgotCi0gICAgUmVxdWlyZXMgRUdMX0VYVF9wbGF0Zm9ybV9iYXNl
LgotCi0gICAgVGhpcyBleHRlbnNpb24gaXMgd3JpdHRlbiBhZ2FpbnN0IHRoZSB3b3JkaW5nIG9m
IHZlcnNpb24gOSBvZiB0aGUKLSAgICBFR0xfRVhUX3BsYXRmb3JtX2Jhc2Ugc3BlY2lmaWNhdGlv
bi4KLQotICAgIEFOR0xFX3BsYXRmb3JtX2FuZ2xlX2QzZCBhZmZlY3RzIHRoZSBkZWZpbml0aW9u
IG9mIHRoaXMgZXh0ZW5zaW9uLgotICAgIEFOR0xFX3BsYXRmb3JtX2FuZ2xlX29wZW5nbCBhZmZl
Y3RzIHRoZSBkZWZpbml0aW9uIG9mIHRoaXMgZXh0ZW5zaW9uLgotCi1PdmVydmlldwotCi0gICAg
VGhpcyBleHRlbnNpb24gZGVmaW5lcyBob3cgdG8gY3JlYXRlIEVHTCByZXNvdXJjZXMgZnJvbSBu
YXRpdmUgcmVzb3VyY2VzCi0gICAgdXNpbmcgdGhlIGZ1bmN0aW9ucyBkZWZpbmVkIGJ5IEVHTF9F
WFRfcGxhdGZvcm1fYmFzZS4KLQotTmV3IFR5cGVzCi0KLSAgICBOb25lCi0KLU5ldyBQcm9jZWR1
cmVzIGFuZCBGdW5jdGlvbnMKLQotICAgIE5vbmUKLQotTmV3IFRva2VucwotCi0gICAgQWNjZXB0
ZWQgYXMgdGhlIDxwbGF0Zm9ybT4gYXJndW1lbnQgb2YgZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhU
OgotCi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9BTkdMRSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4MzIwMgotCi0gICAgQWNjZXB0ZWQgYXMgYW4gYXR0cmlidXRlIG5hbWUgaW4gdGhl
IDxhdHRyaWJfbGlzdD4gYXJndW1lbnQgb2YKLSAgICBlZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQ6
Ci0KLSAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfQU5HTEUgICAgICAgICAgICAgICAg
ICAgICAgMHgzMjAzCi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9NQVhfVkVSU0lPTl9NQUpP
Ul9BTkdMRSAgICAgICAgIDB4MzIwNAotICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfTUFYX1ZF
UlNJT05fTUlOT1JfQU5HTEUgICAgICAgICAweDMyMDUKLQotICAgIEFjY2VwdGVkIGFzIHZhbHVl
cyBmb3IgdGhlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0FOR0xFIGF0dHJpYnV0ZToKLQotICAg
ICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9ERUZBVUxUX0FOR0xFICAgICAgICAgICAgICAw
eDMyMDYKLQotQWRkaXRpb25zIHRvIHRoZSBFR0wgU3BlY2lmaWNhdGlvbgotCi0gICAgTm9uZS4K
LQotTmV3IEJlaGF2aW9yCi0KLSAgICBUbyBkZXRlcm1pbmUgaWYgdGhlIEVHTCBpbXBsZW1lbnRh
dGlvbiBzdXBwb3J0cyB0aGlzIGV4dGVuc2lvbiwgY2xpZW50cwotICAgIHNob3VsZCBxdWVyeSB0
aGUgRUdMX0VYVEVOU0lPTlMgc3RyaW5nIG9mIEVHTF9OT19ESVNQTEFZLgotCi0gICAgVG8gb2J0
YWluIGFuIEVHTERpc3BsYXkgYmFja2VkIGJ5IGEgQU5HTEUgZGlzcGxheSwgY2FsbAotICAgIGVn
bEdldFBsYXRmb3JtRGlzcGxheUVYVCB3aXRoIDxwbGF0Zm9ybT4gc2V0IHRvIEVHTF9QTEFURk9S
TV9BTkdMRV9BTkdMRS4KLQotICAgIFRoZSA8bmF0aXZlX2Rpc3BsYXk+IHBhcmFtZXRlciBpcyBv
ZiB0eXBlIEVHTE5hdGl2ZURpc3BsYXlUeXBlLiBJZgotICAgIDxuYXRpdmVfZGlzcGxheT4gaXMg
RUdMX0RFRkFVTFRfRElTUExBWSBhIGRlZmF1bHQgZGlzcGxheSBpcyByZXR1cm5lZC4KLSAgICBN
dWx0aXBsZSBjYWxscyB3aXRoIHRoZSBzYW1lIDxuYXRpdmVfZGlzcGxheT4gd2lsbCByZXR1cm4g
dGhlIHNhbWUKLSAgICBFR0xEaXNwbGF5IGhhbmRsZS4gSWYgPHBsYXRmb3JtPiBpcyBzZXQgdG8g
RUdMX1BMQVRGT1JNX0FOR0xFX0FOR0xFIGFuZAotICAgIHRoZSByZXR1cm5lZCBkaXNwbGF5IGlz
IGluIGFuIHVuaW5pdGlhbGl6ZWQgc3RhdGUsIGl0cyBhdHRyaWJ1dGVzIGFyZQotICAgIG92ZXJ3
cml0dGVuIGJ5IHRob3NlIHByb3ZpZGVkIGluIHRoZSA8YXR0cmliX2xpc3Q+LCBpZiBhbnkuCi0K
LSAgICBJZiBubyA8YXR0cmliX2xpc3Q+IGlzIHNwZWNpZmllZCwgdGhlIHZhbHVlIG9mCi0gICAg
RUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfQU5HTEUgaXMgaW1wbGljaXRseSBzZXQgdG8KLSAgICBF
R0xfUExBVEZPUk1fQU5HTEVfVFlQRV9ERUZBVUxUX0FOR0xFLgotCi0gICAgSWYgbm8gPGF0dHJp
Yl9saXN0PiBpcyBzcGVjaWZpZWQsIHRoZSB2YWx1ZXMgb2YKLSAgICBFR0xfUExBVEZPUk1fQU5H
TEVfTUFYX1ZFUlNJT05fTUFKT1JfQU5HTEUgYW5kCi0gICAgRUdMX1BMQVRGT1JNX0FOR0xFX01B
WF9WRVJTSU9OX01JTk9SX0FOR0xFIGFyZSBpbXBsaWNpdGx5IHNldCB0bwotICAgIEVHTF9ET05U
X0NBUkUuCi0KLSAgICBJZiBFR0xfUExBVEZPUk1fQU5HTEVfTUFYX1ZFUlNJT05fTUFKT1JfQU5H
TEUgaXMgc2V0IHRvIEVHTF9ET05UX0NBUkUgYW5kCi0gICAgRUdMX1BMQVRGT1JNX0FOR0xFX01B
WF9WRVJTSU9OX01JTk9SX0FOR0xFIGlzIG5vdCBzZXQgdG8gRUdMX0RPTlRfQ0FSRSwKLSAgICBh
biBFR0xfQkFEX0FUVFJJQlVURSBlcnJvciBpcyBnZW5lcmF0ZWQgYW5kIEVHTF9OT19ESVNQTEFZ
IGlzIHJldHVybmVkLgotCi0gICAgSWYgbm8gZGlzcGxheSBtYXRjaGluZyB0aGUgcmVxdWVzdGVk
IDxuYXRpdmVfZGlzcGxheT4gb3Igb2YgdGhlIHR5cGUKLSAgICByZXF1ZXN0ZWQgYnkgdGhlIHZh
bHVlIG9mIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0FOR0xFIGlzIGF2YWlsYWJsZSwKLSAgICBF
R0xfTk9fRElTUExBWSBpcyByZXR1cm5lZC4gTm8gZXJyb3IgY29uZGl0aW9uIGlzIHJhaXNlZCBp
biB0aGlzIGNhc2UuCi0KLUlzc3VlcwotCi0gICAgTm9uZQotCi1SZXZpc2lvbiBIaXN0b3J5Ci0K
LSAgICBWZXJzaW9uIDEsIDIwMTQtMDItMDQgKFNjb3R0IEdyYWhhbSkKLSAgICAgIC0gSW5pdGlh
bCBkcmFmdAotICAgIFZlcnNpb24gMiwgMjAxNC0wNi0wNSAoR2VvZmYgTGFuZykKLSAgICAgIC0g
UmVuYW1lIGV4dGVuc2lvbiBmcm9tIEFOR0xFX3BsYXRmb3JtX2FuZ2xlX2QzZCB0byBBTkdMRV9w
bGF0Zm9ybV9hbmdsZS4KLSAgICAgIC0gQWRkIHN1Yi1leHRlbnNpb25zIGZvciBzcGVjaWZpYyBw
bGF0Zm9ybXMuCi0gICAgVmVyc2lvbiAzLCAyMDE0LTEwLTIwIChHZW9mZiBMYW5nKQotICAgICAg
LSBBZGQgYXR0cmlidXRlcyB0byByZXF1ZXN0IHNwZWNpZmljIGZlYXR1cmUgbGV2ZWwgYW5kIGNv
bnRleHQgdmVyc2lvbnMuCi0gICAgICAtIE1vdmVkIGRlc2NyaXB0aW9ucyBvZiBwbGF0Zm9ybXMg
dG8gY2hpbGQgZXh0ZW5zaW9uIHNwZWNzLgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
ZXh0ZW5zaW9ucy9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9kM2QudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvQU5HTEVfcGxhdGZvcm1fYW5nbGVfZDNk
LnR4dAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5z
aW9ucy9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9kM2QudHh0CShub25leGlzdGVudCkKQEAgLTEsMTQw
ICswLDAgQEAKLU5hbWUKLQotICAgIEFOR0xFX3BsYXRmb3JtX2FuZ2xlX2QzZAotCi1OYW1lIFN0
cmluZ3MKLQotICAgIEVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9kM2QKLQotQ29udHJpYnV0b3Jz
Ci0KLSAgICBTaGFubm9uIFdvb2RzLCBHb29nbGUKLSAgICBHZW9mZiBMYW5nLCBHb29nbGUKLQot
Q29udGFjdHMKLQotICAgIEdlb2ZmIExhbmcsIEdvb2dsZSAoZ2VvZmZsYW5nICdhdCcgY2hyb21p
dW0gJ2RvdCcgb3JnKQotCi1TdGF0dXMKLQotICAgIERyYWZ0Ci0KLVZlcnNpb24KLQotICAgIFZl
cnNpb24gMywgMjAxNC0xMS0yNgotCi1OdW1iZXIKLQotICAgIEVHTCBFeHRlbnNpb24gWFhYCi0K
LUV4dGVuc2lvbiBUeXBlCi0KLSAgICBFR0wgY2xpZW50IGV4dGVuc2lvbgotCi1EZXBlbmRlbmNp
ZXMKLQotICAgIFJlcXVpcmVzIEFOR0xFX3BsYXRmb3JtX2FuZ2xlLgotCi1PdmVydmlldwotCi0g
ICAgVGhpcyBleHRlbnNpb24gZW5hYmxlcyBzZWxlY3Rpb24gb2YgRDNEIGRpc3BsYXkgdHlwZXMu
Ci0KLU5ldyBUeXBlcwotCi0gICAgTm9uZQotCi1OZXcgUHJvY2VkdXJlcyBhbmQgRnVuY3Rpb25z
Ci0KLSAgICBOb25lCi0KLU5ldyBUb2tlbnMKLQotICAgIEFjY2VwdGVkIGFzIHZhbHVlcyBmb3Ig
dGhlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0FOR0xFIGF0dHJpYnV0ZToKLQotICAgICAgICBF
R0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0Q5X0FOR0xFICAgICAgICAgICAgICAgICAweDMyMDcK
LSAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUgICAgICAgICAgICAg
ICAgMHgzMjA4Ci0KLSAgICBBY2NlcHRlZCBhcyBhbiBhdHRyaWJ1dGUgbmFtZSBpbiB0aGUgPGF0
dHJpYl9saXN0PiBhcmd1bWVudCBvZgotICAgIGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVDoKLQot
ICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfQU5HTEUgICAgICAgICAgICAg
ICAweDMyMDkKLSAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0VOQUJMRV9BVVRPTUFUSUNfVFJJ
TV9BTkdMRSAgICAgMHgzMjBGCi0KLSAgICBBY2NlcHRlZCBhcyB2YWx1ZXMgZm9yIHRoZSBFR0xf
UExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfQU5HTEUgYXR0cmlidXRlOgotCi0gICAgICAgIEVH
TF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9IQVJEV0FSRV9BTkdMRSAgICAgIDB4MzIwQQot
ICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfV0FSUF9BTkdMRSAgICAgICAg
ICAweDMyMEIKLSAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX1JFRkVSRU5D
RV9BTkdMRSAgICAgMHgzMjBDCi0KLUFkZGl0aW9ucyB0byB0aGUgRUdMIFNwZWNpZmljYXRpb24K
LQotICAgIE5vbmUuCi0KLU5ldyBCZWhhdmlvcgotCi0gICAgVG8gcmVxdWVzdCBhIGRpc3BsYXkg
dGhhdCBpcyBiYWNrZWQgYnkgRGlyZWN0M0QgcmVzb3VyY2VzLCB0aGUgdmFsdWUgb2YKLSAgICBF
R0xfUExBVEZPUk1fQU5HTEVfVFlQRV9BTkdMRSBzaG91bGQgYmU6Ci0gICAgICAtIEVHTF9QTEFU
Rk9STV9BTkdMRV9UWVBFX0QzRDlfQU5HTEUgZm9yIGEgRDNEOSBkaXNwbGF5LAotICAgICAgLSBF
R0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSBmb3IgYSBEM0QxMSBkaXNwbGF5Lgot
Ci0gICAgVG8gcmVxdWVzdCBhIHNwZWNpZmljIG1heGltdW0gZmVhdHVyZSBsZXZlbCB0byBiZSB1
c2VkIGJ5IHRoZSBEM0QxMQotICAgIGRpc3BsYXksIEVHTF9QTEFURk9STV9BTkdMRV9NQVhfVkVS
U0lPTl9NQUpPUl9BTkdMRSBhbmQKLSAgICBFR0xfUExBVEZPUk1fQU5HTEVfTUFYX1ZFUlNJT05f
TUlOT1JfQU5HTEUgY2FuIGJlIHVzZWQuICBPbmx5IGZlYXR1cmUKLSAgICBsZXZlbHMgdGhhdCBh
cmUgY2FwYWJsZSBvZiBzdXBwb3J0aW5nIGFsbCBhdmFpbGFibGUgY2xpZW50IEFQSXMgd2lsbCBi
ZQotICAgIHVzZWQgdW5sZXNzIGV4cGxpY2l0bHkgcmVxdWVzdGVkLgotICAgIEVHTF9QTEFURk9S
TV9BTkdMRV9NQVhfVkVSU0lPTl9NQUpPUl9BTkdMRSBhbmQKLSAgICBFR0xfUExBVEZPUk1fQU5H
TEVfTUFYX1ZFUlNJT05fTUlOT1JfQU5HTEUgaGF2ZSBubyBlZmZlY3Qgd2hlbiByZXF1ZXN0aW5n
Ci0gICAgYSBEM0Q5IGRpc3BsYXkuCi0KLSAgICBJZiBubyA8YXR0cmliX2xpc3Q+IGlzIHNwZWNp
ZmllZCB0byBlZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQsIHRoZSB2YWx1ZSBvZgotICAgIEVHTF9Q
TEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9BTkdMRSBpcyBpbXBsaWNpdGx5IHNldCB0bwotICAg
IEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9IQVJEV0FSRV9BTkdMRS4gT3RoZXJ3aXNl
LCB0aGUgdmFsdWUgb2YKLSAgICBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfQU5HTEUg
c2hvdWxkIGJlOgotICAgICAgLSBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfSEFSRFdB
UkVfQU5HTEUgdG8gcmVxdWVzdCBhIGhhcmR3YXJlCi0gICAgICAgIGFjY2VsZXJhdGVkIGRldmlj
ZS4KLSAgICAgIC0gRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX1dBUlBfQU5HTEUgdG8g
cmVxdWVzdCBhbgotICAgICAgICBvcHRpbWl6ZWQgc29mdHdhcmUgcmFzdGVyaXplci4KLSAgICAg
IC0gRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX1JFRkVSRU5DRV9BTkdMRSB0byByZXF1
ZXN0IGEKLSAgICAgICAgcmVmZXJlbmNlIHJhc3Rlcml6ZXIuCi0KLSAgICBJZiBFR0xfUExBVEZP
Uk1fQU5HTEVfVFlQRV9BTkdMRSBpcyBzZXQgdG8KLSAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQ
RV9EM0QxMV9BTkdMRSwgdGhlIGRpc3BsYXkgY2FuIGF1dG9tYXRpY2FsbHkgcmVzcG9uZAotICAg
IHRvIHRyaW0gZXZlbnRzIGZyb20gdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBJZiB0aGUgYXR0cmli
dXRlCi0gICAgRUdMX1BMQVRGT1JNX0FOR0xFX0VOQUJMRV9BVVRPTUFUSUNfVFJJTV9BTkdMRSBp
cyB1bnNwZWNpZmllZCwgaXQgaXMKLSAgICBpbXBsaWNpdGx5IHNldCB0byBFR0xfRkFMU0UuICBP
dGhlcndpc2UsIHRoZSB2YWx1ZSBvZgotICAgIEVHTF9QTEFURk9STV9BTkdMRV9FTkFCTEVfQVVU
T01BVElDX1RSSU1fQU5HTEUgc2hvdWxkIGJlIEVHTF9UUlVFIG9yCi0gICAgRUdMX0ZBTFNFLgot
Ci0gICAgSWYgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0FOR0xFIGlzIHNldCB0bwot
ICAgIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9XQVJQX0FOR0xFIGFuZCBFR0xfUExB
VEZPUk1fQU5HTEVfVFlQRV9BTkdMRQotICAgIGlzIG5vdCBzZXQgdG8gRUdMX1BMQVRGT1JNX0FO
R0xFX1RZUEVfRDNEMTFfQU5HTEUsIGFuIEVHTF9CQURfQVRUUklCVVRFCi0gICAgZXJyb3IgaXMg
Z2VuZXJhdGVkIGFuZCBFR0xfTk9fRElTUExBWSBpcyByZXR1cm5lZC4KLQotICAgIElmIEVHTF9Q
TEFURk9STV9BTkdMRV9FTkFCTEVfQVVUT01BVElDX1RSSU1fQU5HTEUgaXMgc3BlY2lmaWVkIHdo
ZW4KLSAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9BTkdMRSBpcyBub3QgRUdMX1BMQVRGT1JN
X0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUKLSAgICBvciBhIHZhbHVlIG90aGVyIHRoYW4gRUdMX1RS
VUUgb3IgRUdMX0ZBTFNFIGlzIHVzZWQsIGFuIEVHTF9CQURfQVRUUklCVVRFCi0gICAgZXJyb3Ig
aXMgZ2VuZXJhdGVkIGFuZCBFR0xfTk9fRElTUExBWSBpcyByZXR1cm5lZC4KLQotSXNzdWVzCi0K
LSAgICAxKSBTb21lIG11bHRpdGhyZWFkZWQgYXBwbGljYXRpb25zIGNhbiBjcmFzaCBpZiB0aGUg
ZGlzcGxheSBhdXRvbWF0aWNhbGx5Ci0gICAgICAgcmVzcG9uZHMgdG8gdHJpbSBldmVudHMgd2hp
bGUgdGhlIGFwcGxpY2F0aW9uIGlzIHJlbmRlcmluZyBmcm9tIGFub3RoZXIKLSAgICAgICB0aHJl
YWQuCi0KLSAgICAgICBSRVNPTFZFRDogQWRkZWQgYW4gRUdMX1BMQVRGT1JNX0FOR0xFX0VOQUJM
RV9BVVRPTUFUSUNfVFJJTV9BTkdMRQotICAgICAgIGVudW0gdG8gc3BlY2lmeSBpZiB0aGUgZGlz
cGxheSBzaG91bGQgcmVzcG9uZCB0byB0cmltIGV2ZW50cy4KLSAgICAgICBBcHBsaWNhdGlvbnMg
dGhhdCBkbyBtdWx0aXRocmVhZGVkIHJlbmRlcmluZyBzaG91bGQgZGlzYWJsZSBhdXRvbWF0aWMK
LSAgICAgICB0cmltIGFuZCBoYW5kbGUgdGhlIHRyaW0gZXZlbnRzIG9uIHRoZWlyIG93bi4KLQot
UmV2aXNpb24gSGlzdG9yeQotCi0gICAgVmVyc2lvbiAxLCAyMDE0LTA2LTA1IChHZW9mZiBMYW5n
KQotICAgICAgLSBJbml0aWFsIGRyYWZ0Ci0gICAgVmVyc2lvbiAyLCAyMDE0LTEwLTI3IChHZW9m
ZiBMYW5nKQotICAgICAgLSBTZXBhcmF0ZSBXQVJQIGRldmljZXMgaW50byBhIG5ldyBhdHRyaWJ1
dGUgaW5zdGVhZCBvZiBhIHBsYXRmb3JtIHR5cGUuCi0gICAgICAtIE1vdmVkIGRlc2NyaXB0aW9u
cyBvZiBwbGF0Zm9ybXMgYW5kIG1ham9yL21pbm9yIHZlcnNpb25zIGZyb20KLSAgICAgICAgRUdM
X0FOR0xFX3BsYXRmb3JtX2FuZ2xlIHNwZWMgdG8gRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlX2Qz
ZC4KLSAgICBWZXJzaW9uIDMsIDIwMTQtMTEtMjYgKEdlb2ZmIExhbmcpCi0gICAgICAtIFJlbW92
ZSB0aGUgVVNFX1dBUlAgYm9vbCBhbmQgcmVwbGFjZSBpdCB3aXRoIGEgREVWSUNFX1RZUEUgZW51
bS4KLSAgICBWZXJzaW9uIDQsIDIwMTUtMDMtMTEgKEdlb2ZmIExhbmcpCi0gICAgICAtIEFkZCB0
aGUgRU5BQkxFX0FVVE9NQVRJQ19UUklNIGVudW0uCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9leHRlbnNpb25zL0FOR0xFX3BsYXRmb3JtX2FuZ2xlX29wZW5nbC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9BTkdMRV9wbGF0Zm9ybV9h
bmdsZV9vcGVuZ2wudHh0CShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9leHRlbnNpb25zL0FOR0xFX3BsYXRmb3JtX2FuZ2xlX29wZW5nbC50eHQJKG5vbmV4aXN0
ZW50KQpAQCAtMSw4NCArMCwwIEBACi1OYW1lCi0KLSAgICBBTkdMRV9wbGF0Zm9ybV9hbmdsZV9v
cGVuZ2wKLQotTmFtZSBTdHJpbmdzCi0KLSAgICBFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfb3Bl
bmdsCi0KLUNvbnRyaWJ1dG9ycwotCi0gICAgU2hhbm5vbiBXb29kcywgR29vZ2xlCi0gICAgR2Vv
ZmYgTGFuZywgR29vZ2xlCi0KLUNvbnRhY3RzCi0KLSAgICBHZW9mZiBMYW5nLCBHb29nbGUgKGdl
b2ZmbGFuZyAnYXQnIGNocm9taXVtICdkb3QnIG9yZykKLQotU3RhdHVzCi0KLSAgICBEcmFmdAot
Ci1WZXJzaW9uCi0KLSAgICBWZXJzaW9uIDMsIDIwMTQtMTEtMjYKLQotTnVtYmVyCi0KLSAgICBF
R0wgRXh0ZW5zaW9uIFhYWAotCi1FeHRlbnNpb24gVHlwZQotCi0gICAgRUdMIGNsaWVudCBleHRl
bnNpb24KLQotRGVwZW5kZW5jaWVzCi0KLSAgICBSZXF1aXJlcyBBTkdMRV9wbGF0Zm9ybV9hbmds
ZS4KLQotT3ZlcnZpZXcKLQotICAgIFRoaXMgZXh0ZW5zaW9uIGVuYWJsZXMgc2VsZWN0aW9uIG9m
IE9wZW5HTCBkaXNwbGF5IHR5cGVzLgotCi1OZXcgVHlwZXMKLQotICAgIE5vbmUKLQotTmV3IFBy
b2NlZHVyZXMgYW5kIEZ1bmN0aW9ucwotCi0gICAgTm9uZQotCi1OZXcgVG9rZW5zCi0KLSAgICBB
Y2NlcHRlZCBhcyB2YWx1ZXMgZm9yIHRoZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9BTkdMRSBh
dHRyaWJ1dGU6Ci0KLSAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xF
ICAgICAgICAgICAgICAgMHgzMjBECi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09Q
RU5HTEVTX0FOR0xFICAgICAgICAgICAgIDB4MzIwRQotCi1BZGRpdGlvbnMgdG8gdGhlIEVHTCBT
cGVjaWZpY2F0aW9uCi0KLSAgICBOb25lLgotCi1OZXcgQmVoYXZpb3IKLQotICAgIFRvIHJlcXVl
c3QgYSBkaXNwbGF5IHRoYXQgdHJhbnNsYXRlcyB0byBPcGVuR0wgb3IgT3BlbkdMIEVTLCB0aGUg
dmFsdWUgb2YKLSAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9BTkdMRSBzaG91bGQgYmU6Ci0g
ICAgICAtIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSBmb3IgYW4gT3BlbkdM
IGRpc3BsYXksCi0gICAgICAtIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTEVTX0FOR0xF
IGZvciBhIG5hdGl2ZSBPcGVuR0wgRVMgZGlzcGxheS4KLQotICAgIFRvIHJlcXVlc3QgYSBzcGVj
aWZpYyBtYXhpbXVtIGNvbnRleHQgdmVyc2lvbiB0byB1c2UgZm9yIHRoZSB1bmRlcmx5aW5nCi0g
ICAgQVBJLCBFR0xfUExBVEZPUk1fQU5HTEVfTUFYX1ZFUlNJT05fTUFKT1JfQU5HTEUgYW5kCi0g
ICAgRUdMX1BMQVRGT1JNX0FOR0xFX01BWF9WRVJTSU9OX01JTk9SX0FOR0xFIGNhbiBiZSB1c2Vk
LgotCi1Jc3N1ZXMKLQotICAgIE5vbmUKLQotUmV2aXNpb24gSGlzdG9yeQotCi0gICAgVmVyc2lv
biAxLCAyMDE0LTA2LTA1IChHZW9mZiBMYW5nKQotICAgICAgLSBJbml0aWFsIGRyYWZ0Ci0gICAg
VmVyc2lvbiAyLCAyMDE0LTEwLTI3IChHZW9mZiBMYW5nKQotICAgICAgLSBNb3ZlZCBkZXNjcmlw
dGlvbnMgb2YgcGxhdGZvcm1zIGFuZCBtYWpvci9taW5vciB2ZXJzaW9ucyBmcm9tCi0gICAgICAg
IEVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZSBzcGVjIHRvIEVHTF9BTkdMRV9wbGF0Zm9ybV9hbmds
ZV9vcGVuZ2wuCi0gICAgVmVyc2lvbiAzLCAyMDE0LTExLTI2IChHZW9mZiBMYW5nKQotICAgICAg
LSBVcGRhdGVkIGVudW0gdmFsdWVzLgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0
ZW5zaW9ucy9BTkdMRV9wcm9ncmFtX2JpbmFyeS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9BTkdMRV9wcm9ncmFtX2JpbmFyeS50eHQJKHJldmlz
aW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvQU5HTEVf
cHJvZ3JhbV9iaW5hcnkudHh0CShub25leGlzdGVudCkKQEAgLTEsOTQgKzAsMCBAQAotTmFtZQot
Ci0gICAgQU5HTEVfcHJvZ3JhbV9iaW5hcnkKLQotTmFtZSBTdHJpbmdzCi0KLSAgICBHTF9BTkdM
RV9wcm9ncmFtX2JpbmFyeQotCi1Db250cmlidXRvcnMKLQotICAgIEFsYXN0YWlyIFBhdHJpY2ss
IEdvb2dsZSBJbmMuCi0gICAgRGFuaWVsIEtvY2gsIFRyYW5zR2FtaW5nIEluYy4KLQotQ29udGFj
dAotCi0gICAgQWxhc3RhaXIgUGF0cmljaywgR29vZ2xlIEluYy4gKGFwYXRyaWNrICdhdCcgZ29v
Z2xlICdkb3QnIGNvbSkKLQotU3RhdHVzCi0KLSAgICBVbmRlciBkZXZlbG9wbWVudC4KLQotVmVy
c2lvbgotCi0gICAgTGFzdCBNb2RpZmVkIERhdGU6IEp1bmUgNiwgMjAxMgotICAgIFJldmlzaW9u
OiAjMQotCi1OdW1iZXIKLQotICAgIFRCRAotCi1EZXBlbmRlbmNpZXMKLQotICAgIE9wZW5HTCBF
UyAyLjAgaXMgcmVxdWlyZWQuCi0gICAgT0VTX2dldF9wcm9ncmFtX2JpbmFyeSBpcyByZXF1aXJl
ZC4KLSAgICBUaGlzIGV4dGVuc2lvbiBpcyB3cml0dGVuIGFnYWluc3QgdGhlIE9wZW5HTCBFUyAy
LjAuMjUgc3BlY2lmaWNhdGlvbi4KLQotT3ZlcnZpZXcKLQotICAgIFRoaXMgZXh0ZW5zaW9uIG1h
a2VzIGF2YWlsYWJsZSBhIHByb2dyYW0gYmluYXJ5IGZvcm1hdCwKLSAgICBQUk9HUkFNX0JJTkFS
WV9BTkdMRS4gSXQgZW5hYmxlcyByZXRyaWV2aW5nIGFuZCBsb2FkaW5nIG9mIHByZS1saW5rZWQK
LSAgICBBTkdMRSBwcm9ncmFtIG9iamVjdHMuCi0KLU5ldyBQcm9jZWR1cmVzIGFuZCBGdW5jdGlv
bnMKLQotICAgIE5vbmUKLQotTmV3IFRva2VucwotCi0gICAgQWNjZXB0ZWQgYnkgdGhlIDxiaW5h
cnlGb3JtYXQ+IHBhcmFtZXRlciBvZiBQcm9ncmFtQmluYXJ5T0VTOgotCi0gICAgICAgIFBST0dS
QU1fQklOQVJZX0FOR0xFICAgICAgICAweDkzQTYKLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgMiBv
ZiB0aGUgT3BlbkdMLUVTIDIuMCBTcGVjaWZpY2F0aW9uIChPcGVuR0wgT3BlcmF0aW9uKQotCi0g
ICAgQWRkIHRoZSBmb2xsb3dpbmcgcGFyYWdyYXBoIHRvIHRoZSBlbmQgb2Ygc2VjdGlvbiAyLjE1
LjQsIFByb2dyYW0gQmluYXJpZXM6Ci0gICAgCi0gICAgIlBST0dSQU1fQklOQVJZX0FOR0xFLCBy
ZXR1cm5lZCBpbiB0aGUgbGlzdCBvZiBQUk9HUkFNX0JJTkFSWV9GT1JNQVRTX09FUywKLSAgICBp
cyBhIGZvcm1hdCB0aGF0IG1heSBiZSBsb2FkZWQgaW50byBhIHByb2dyYW0gb2JqZWN0IHZpYSBQ
cm9ncmFtQmluYXJ5T0VTLiIgCi0gICAgCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciAzIG9mIHRoZSBP
cGVuR0wgRVMgMi4wIHNwZWNpZmljYXRpb24gKFJhc3Rlcml6YXRvaW4pCi0KLSAgICBOb25lLgot
Ci1BZGRpdGlvbnMgdG8gQ2hhcHRlciA0IG9mIHRoZSBPcGVuR0wgRVMgMi4wIHNwZWNpZmljYXRp
b24gKFBlci1GcmFnbWVudAotT3BlcmF0aW9ucyBhbmQgdGhlIEZyYW1lYnVmZmVyKQotCi0gICAg
Tm9uZS4KLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgNSBvZiB0aGUgT3BlbkdMIEVTIDIuMCBTcGVj
aWZpY2F0aW9uIChTcGVjaWFsCi1GdW5jdGlvbnMpCi0KLSAgICBOb25lLgotCi1BZGRpdGlvbnMg
dG8gQ2hhcHRlciA2IG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmljYXRpb24gKFN0YXRlIGFu
ZCBTdGF0ZQotUmVxdWVzdHMpCi0KLSAgICBOb25lLgotCi1FcnJvcnMKLQotICAgIE5vbmUKLQot
TmV3IFN0YXRlCi0KLSAgICBOb25lLgotCi1Jc3N1ZXMKLQotICAgIE5vbmUKLQotUmV2aXNpb24g
SGlzdG9yeQotIAotICAgIDA2LzA2LzIwMTIgIGFwYXRyaWNrICBpbnRpYWwgcmV2aXNpb24KLQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9BTkdMRV9yb2J1c3RfcmVz
b3VyY2VfaW5pdGlhbGl6YXRpb24udHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL2V4dGVuc2lvbnMvQU5HTEVfcm9idXN0X3Jlc291cmNlX2luaXRpYWxpemF0aW9uLnR4
dAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9u
cy9BTkdMRV9yb2J1c3RfcmVzb3VyY2VfaW5pdGlhbGl6YXRpb24udHh0CShub25leGlzdGVudCkK
QEAgLTEsMTQyICswLDAgQEAKLU5hbWUKLQotICAgIEFOR0xFX3JvYnVzdF9yZXNvdXJjZV9pbml0
aWFsaXphdGlvbi50eHQKLQotTmFtZSBTdHJpbmdzCi0KLSAgICBBTkdMRV9yb2J1c3RfcmVzb3Vy
Y2VfaW50aWFsaXphdGlvbgotCi1Db250cmlidXRvcnMKLQotICAgIEdlb2ZmIExhbmcsIEdvb2ds
ZQotICAgIEtlbiBSdXNzZWxsLCBHb29nbGUKLQotQ29udGFjdHMKLQotICAgIFNoYW5ub24gV29v
ZHMsIEdvb2dsZSAoc2hhbm5vbndvb2RzICdhdCcgZ29vZ2xlLmNvbSkKLQotU3RhdHVzCi0KLSAg
ICBEcmFmdAotCi1WZXJzaW9uCi0KLSAgICBWZXJzaW9uIDEsIEphbnVhcnkgNywgMjAxNQotCi1O
dW1iZXIKLQotICAgIE9wZW5HTCBFUyBFeHRlbnNpb24gVEJECi0KLURlcGVuZGVuY2llcwotCi0g
ICAgT3BlbkdMIEVTIDIuMCBpcyByZXF1aXJlZC4KLQotICAgIFRoaXMgZXh0ZW5zaW9uIGlzIHdy
aXR0ZW4gYWdhaW5zdCB0aGUgd29yZGluZyBvZiB0aGUgT3BlbkdMIEVTCi0gICAgMy4xIHNwZWNp
ZmljYXRpb24uCi0KLSAgICBFR0xfRVhUX2NyZWF0ZV9jb250ZXh0X3JvYnVzdF9pbml0aWFsaXph
dGlvbiBpcyB1c2VkIHRvIHJlcXVlc3QgYQotICAgIGNvbnRleHQgc3VwcG9ydGluZyB0aGlzIGV4
dGVuc2lvbiB0byBwZXJmb3JtIHJlc291cmNlIGluaXRpYWxpemF0aW9uLgotCi1PdmVydmlldwot
Ci0gICAgVGhpcyBleHRlbnNpb24gc3BlY2lmaWVzIHRoZSBiZWhhdmlvciBmb3IgaW5pdGlhbGl6
YXRpb24gb2YKLSAgICByZXNvdXJjZXMgc3VjaCBhcyB0ZXh0dXJlcyBhbmQgYnVmZmVycyB0byBk
ZWZhdWx0IHZhbHVlcy4gVGhpcwotICAgIGluaXRpYWxpemF0aW9uIGVuc3VyZXMgdGhhdCBhY2Nl
c3Mgd2lsbCBub3QgYmUgcHJvdmlkZWQgYnkgdGhlCi0gICAgR0wgdG8gcHJldmlvdXNseSBhbGxv
Y2F0ZWQgZGF0YSBub3Qgb3duZWQgYnkgdGhlIGFwcGxpY2F0aW9uLgotCi1OZXcgVHlwZXMKLQot
ICAgIE5vbmUKLQotTmV3IFByb2NlZHVyZXMgYW5kIEZ1bmN0aW9ucwotCi0gICAgTm9uZQotCi1O
ZXcgVG9rZW5zCi0KLSAgICBBY2NlcHRlZCBieSB0aGUgPHZhbHVlPiBwYXJhbWV0ZXIgb2YgR2V0
Qm9vbGVhbnYsIEdldEludGVnZXJ2LAotICAgIEdldEZsb2F0diwgR2V0RG91YmxldiwgYW5kIEdl
dEludGVnZXI1NHY6Ci0KLSAgICAgICAgQ09OVEVYVF9ST0JVU1RfUkVTT1VSQ0VfSU5JVElBTEla
QVRJT05fQU5HTEUgICAgMHg5M0E3Ci0KLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgNiBvZiB0aGUg
T3BlbkdMIEVTIDMuMSBTcGVjaWZpY2F0aW9uIChCdWZmZXIKLU9iamVjdHMpCi0KLSAgICBSZXBs
YWNlIHRoZSBsYXN0IHNlbnRlbmNlIG9mIHRoZSBmaXJzdCBwYXJhZ3JhcGggb2Ygc2VjdGlvbiA2
LjIKLSAgICAiQnVmZmVyRGF0YSI6Ci0KLSAgICBJZiA8ZGF0YT4gaXMgTlVMTCwgYW5kIHJvYnVz
dCByZXNvdXJjZSBpbml0aWFsaXphdGlvbiBpcyBlbmFibGVkLAotICAgIHRoZSBjb250ZW50cyBv
ZiB0aGUgYnVmZmVyIG9iamVjdCdzIGRhdGEgc3RvcmUgYXJlIHNldCB0byB6ZXJvLgotICAgIE90
aGVyd2lzZSwgdGhlIGNvbnRlbnRzIG9mIHRoZSBidWZmZXIgb2JqZWN0J3MgZGF0YSBzdG9yZSBh
cmUKLSAgICB1bmRlZmluZWQuCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDggb2YgdGhlIE9wZW5H
TCBFUyAzLjEgU3BlY2lmaWNhdGlvbiAoVGV4dHVyZXMgYW5kCi1TYW1wbGVycykKLQotICAgIFJl
cGxhY2UgdGhlIGZpcnN0IHR3byBzZW50YW5jZXMgb2YgdGhlIGZpbmFsIHBhcmFncmFwaCBpbiBz
ZWN0aW9uCi0gICAgOC41LjMgIlRleHR1cmUgSW1hZ2UgU3RydWN0dXJlIjoKLQotICAgIElmIHRo
ZSA8ZGF0YT4gYXJndW1lbnQgb2YgVGV4SW1hZ2UyRCBvciBUZXhJbWFnZTNEIGlzIE5VTEwsIGFu
ZCB0aGUKLSAgICBwaXhlbCB1bnBhY2sgYnVmZmVyIG9iamVjdCBpcyB6ZXJvLCBhIHR3by0gb3Ig
dGhyZWUtZGltZW5zaW9uYWwKLSAgICB0ZXhlbCBhcnJheSBpcyBjcmVhdGVkIHdpdGggdGhlIHNw
ZWNpZmllZCA8dGFyZ2V0PiwgPGxldmVsPiwKLSAgICA8aW50ZXJuYWxmb3JtYXQ+LCA8Ym9yZGVy
PiwgPHdpZHRoPiwgPGhlaWdodD4sIGFuZCA8ZGVwdGg+LiBJZgotICAgIHJvYnVzdCByZXNvdXJj
ZSBpbml0aWFsaXphdGlvbiBpcyBlbmFibGVkLCB0aGUgY29udGVudHMgb2YgdGhlIGltYWdlCi0g
ICAgYXJlIGluaXRpYWxpemVkIGFzIHRob3VnaCBhIHplcm8gdmFsdWUgd2VyZSBwcm92aWRlZCBm
b3IgZWFjaAotICAgIGNvbXBvbmVudCBvZiBlYWNoIHBpeGVsLCBhbmQgcHJvY2Vzc2VkIGFuZCB0
cmFuc2ZlcnJlZCB0byB0aGUgR0wKLSAgICBhcyBkZXNjcmliZWQgYWJvdmUuIFRoZSBjb21wb25l
bnRzIGNvbXByaXNpbmcgdGhpcyB6ZXJvLWZpbGxlZCBkYXRhCi0gICAgYXJlIGRldGVybWluZWQg
YnkgPGludGVybmFsZm9ybWF0Pi4gSWYgcm9idXN0IHJlc291cmNlCi0gICAgaW5pdGlhbGl6YXRp
b24gaXMgbm90IGVuYWJsZWQsIHRoZSBpbWFnZSBjb250ZW50cyBhcmUgdW5kZWZpbmVkLCBhbmQK
LSAgICBubyBwaXhlbCBwcm9jZXNzaW5nIGlzIHBlcmZvcm1lZC4gSW4gZWl0aGVyIGNhc2UsIG5v
IHBpeGVsIHZhbHVlcwotICAgIGFyZSBhY2Nlc3NlZCBpbiBjbGllbnQgbWVtb3J5LgotCi0gICAg
UmVwbGFjZSB0aGUgZmlyc3Qgc2VudGVuY2Ugb2YgdGhlIGZpZnRoIHBhcmFncmFwaCBpbiBzZWN0
aW9uIDguOAotICAgICJNdWx0aXNhbXBsZSBUZXh0dXJlcyI6Ci0KLSAgICBVcG9uIHN1Y2Nlc3Ms
IFRleFN0b3JhZ2UyRE11bHRpc2FtcGxlIGRlbGV0ZXMgYW55IGV4aXN0aW5nIGltYWdlCi0gICAg
Zm9yIHRhcmdldC4gSWYgcm9idXN0IHJlc291cmNlIGluaXRpYWxpemF0aW9uIGlzIGVuYWJsZWQs
IHRoZQotICAgIGNvbnRlbnRzIG9mIGVhY2ggdGV4ZWwgYXJlIGluaXRpYWxpemVkIGFzIHRob3Vn
aCBhIHplcm8gdmFsdWUgd2VyZQotICAgIHdyaXR0ZW4gdG8gZWFjaCBjaGFubmVsIG9mIGVhY2gg
c2FtcGxlOyBvdGhlcndpc2UgdGhlIGNvbnRlbnRzIG9mCi0gICAgdGV4ZWxzIGFyZSB1bmRlZmlu
ZWQuCi0KLSAgICBBZGQgdG8gdGhlIGZpbmFsIHBhcmFncmFwaCBvZiBzZWN0aW9uIDguMTcgIklt
bXV0YWJsZS1Gb3JtYXQgVGV4dHVyZQotICAgIEltYWdlcyI6Ci0KLSAgICBJZiByb2J1c3QgcmVz
b3VyY2UgaW5pdGlhbGl6YXRpb24gaXMgZW5hYmxlZCwgdGhlIGNvbnRlbnRzIG9mIGVhY2gKLSAg
ICB0ZXhlbCBpcyBpbml0aWFsaXplZCBhcyB0aG91Z2ggYSB6ZXJvIHZhbHVlIHdlcmUgcHJvdmlk
ZWQgZm9yIGVhY2gKLSAgICBjb21wb25lbnQgb2YgZWFjaCBwaXhlbCwgYW5kIHByb2Nlc3NlZCBh
bmQgdHJhbnNmZXJyZWQgdG8gdGhlIEdMCi0gICAgYXMgZm9yIGEgY2FsbCB0byB0aGUgYXBwcm9w
cmlhdGUgVGV4U3ViSW1hZ2UqIGNhbGwgZm9yIDx0YXJnZXQ+LgotICAgIE90aGVyd2lzZSwgdGhl
IGNvbnRlbnRzIG9mIHRleGVscyBhcmUgdW5kZWZpbmVkLgotCi1BZGRpdGlvbnMgdG8gQ2hhcHRl
ciA5IG9mIHRoZSBPcGVuR0wgRVMgMy4xIFNwZWNpZmljYXRpb24gKEZyYW1lYnVmZmVycwotYW5k
IEZyYW1lYnVmZmVyIE9iamVjdHMpCi0KLSAgICBSZXBsYWNlIHRoZSBzZW50ZW5jZSBpbiBzZWN0
aW9uIDkuMi40ICJSZW5kZXJidWZmZXIgT2JqZWN0cyIKLSAgICBiZWdpbm5pbmcgIlVwb24gc3Vj
Y2VzcywgUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlIjoKLQotICAgIFVwb24gc3VjY2Vz
cywgUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlIGRlbGV0ZXMgYW55IGV4aXN0aW5nCi0g
ICAgZGF0YSBzdG9yZSBmb3IgdGhlIHJlbmRlcmJ1ZmZlciBpbWFnZS4gSWYgcm9idXN0IHJlc291
cmNlCi0gICAgaW5pdGlhbGl6YXRpb24gaXMgZW5hYmxlZCwgdGhlIGNvbnRlbnRzIG9mIGVhY2gg
cGl4ZWwgaW4gdGhlIGRhdGEKLSAgICBzdG9yZSBhcmUgaW5pdGlhbGl6ZWQgYXMgdGhvdWdoIGEg
emVybyB2YWx1ZSB3YXMgd3JpdHRlbiB0byBlYWNoCi0gICAgY2hhbm5lbCBvZiBlYWNoIHNhbXBs
ZTsgb3RoZXJ3aXNlLCB0aGUgY29udGVudHMgb2YgdGhlIGRhdGEgc3RvcmUKLSAgICBhcmUgdW5k
ZWZpbmVkLgotCi1JbnRlcmFjdGlvbnMgd2l0aCBFR0xfQU5HTEVfY3JlYXRlX2NvbnRleHRfcm9i
dXN0X3Jlc291cmNlCi0KLSAgICBJZiB0aGUgRUdMIHdpbmRvdy1zeXN0ZW0gYmluZGluZyBBUEkg
aXMgdXNlZCB0byBjcmVhdGUgYSBjb250ZXh0LAotICAgIHRoZSBFR0xfQU5HTEVfY3JlYXRlX2Nv
bnRleHRfcm9idXN0X2luaXRpYWxpemF0aW9uIGV4dGVuc2lvbiBpcwotICAgIHN1cHBvcnRlZCwg
YW5kIHRoZSBhdHRyaWJ1dGUKLSAgICBFR0xfQ09OVEVYVF9PUEVOR0xfUk9CVVNUX0lOSVRJQUxJ
WkFUSU9OX0FOR0xFIGlzIHNldCB0bwotICAgIEVHTF9UUlVFIHdoZW4gZWdsQ3JlYXRlQ29udGV4
dCBpcyBjYWxsZWQsIHRoZSByZXN1bHRpbmcgY29udGV4dAotICAgIHdpbGwgcGVyZm9ybSByb2J1
c3QgcmVzb3VyY2UgaW5pdGlhbGl6YXRpb24gYXMgZGVzY3JpYmVkIGFib3ZlIGluCi0gICAgc2Vj
dGlvbiA8c2VjdGlvbj4sIGFuZCB0aGUKLSAgICBDT05URVhUX1JPQlVTVF9SRVNPVVJDRV9JTklU
SUFMSVpBVElPTl9BTkdMRQotICAgIHF1ZXJ5IHdpbGwgcmV0dXJuIEdMX1RSVUUgYXMgZGVzY3Jp
YmVkIGFib3ZlIGluIHNlY3Rpb24gMi42LjEuMS4KLQotSXNzdWVzCi0KLSAgICBOb25lCi0KLVJl
dmlzaW9uIEhpc3RvcnkKLQotICAgIFZlcnNpb24gMSwgMjAxNS8wMS8wNyAtIGZpcnN0IGRyYWZ0
LgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9BTkdMRV90ZXh0dXJl
X2NvbXByZXNzaW9uX2R4dC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvZXh0ZW5zaW9ucy9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dC50eHQJKHJldmlzaW9u
IDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvQU5HTEVfdGV4
dHVyZV9jb21wcmVzc2lvbl9keHQudHh0CShub25leGlzdGVudCkKQEAgLTEsMTYzICswLDAgQEAK
LU5hbWUKLQotICAgIEFOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0Ci0KLU5hbWUgU3RyaW5n
cwotCi0gICAgR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxCi0gICAgR0xfQU5HTEVf
dGV4dHVyZV9jb21wcmVzc2lvbl9keHQzCi0gICAgR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lv
bl9keHQ1Ci0KLUNvbnRyaWJ1dG9ycwotCi0gICAgR3JlZ2cgVGF2YXJlcywgR29vZ2xlIEluYy4K
LSAgICBEYW5pZWwgS29jaCwgVHJhbnNHYW1pbmcgSW5jLgotICAgIEFsIFBhdHJpY2ssIEdvb2ds
ZSBJbmMuCi0KLUNvbnRhY3RzCi0KLSAgICBHcmVnZyBUYXZhcmVzLCBHb29nbGUgSW5jLiAoZ21h
biAnYXQnIGdvb2dsZSAnZG90JyBjb20pCi0KLVN0YXR1cwotCi0gICAgSW1wbGVtZW50ZWQgaW4g
QU5HTEUgRVMyCi0KLVZlcnNpb24KLQotICAgIExhc3QgTW9kaWZpZWQgRGF0ZTogU2VwdCAyMiwg
MjAxMgotICAgIEF1dGhvciBSZXZpc2lvbjogMgotCi1OdW1iZXIKLQotICAgIE9wZW5HTCBFUyBF
eHRlbnNpb24gIzExMQotCi1EZXBlbmRlbmNpZXMKLQotICAgIFJlcXVpcmVzIE9wZW5HTCBFUyAx
LjAuCi0KLSAgICBUaGUgZXh0ZW5zaW9uIGlzIHdyaXR0ZW4gYWdhaW5zdCB0aGUgT3BlbkdMIEVT
IDIuMCBzcGVjaWZpY2F0aW9uLgotCi1PdmVydmlldwotCi0gICAgVGhlc2UgZXh0ZW5zaW9ucyBh
cmUgZXhhY3RseSB0aGUgc2FtZSBhcyBFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxCi0gICAg
ZXhjZXB0IHRoZXkgYWRkaXRpb25hbGx5IGV4cG9zZSB0aGUgQ09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUM19BTkdMRSBhbmQKLSAgICBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFIGZvcm1h
dHMgYW5kIGhhdmUgYSBzaXplIHJlc3RyaWN0aW9ucwotICAgIHN1Y2ggdGhhdCB0aGUgc2l6ZSBt
dXN0IGJlIGEgbXVsdGlwbGUgb2YgZm91ciAoZXhjZXB0IGZvciBtaXAgbGV2ZWxzCi0gICAgd2hl
cmUgdGhlIGRpbWVuc2lvbnMgYXJlIGVpdGhlciAyIG9yIDEpLgotCi0gICAgU2VlIEVYVF90ZXh0
dXJlX2NvbXByZXNzaW9uX2R4dDEgZm9yIHRoZSBmdWxsIGxpc3Qgb2YgY2hhbmdlcy4gQWxzbwot
ICAgIHNlZSBFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjIGZvciBhIGRlc2NyaXB0aW9uIG9m
IHRoZSBmb3JtYXRzLgotCi1JUCBTdGF0dXMKLQotICAgIEEgbGljZW5zZSB0byB0aGUgUzNUQyBJ
bnRlbGxlY3R1YWwgUHJvcGVydHkgbWF5IGJlIG5lY2Vzc2FyeSBmb3IgCi0gICAgaW1wbGVtZW50
YXRpb24gb2YgdGhpcyBleHRlbnNpb24uICBZb3Ugc2hvdWxkIGNvbnN1bHQgd2l0aCB5b3VyIAot
ICAgIEF0dG9ybmV5IHRvIGRldGVybWluZSB0aGUgbmVlZCBmb3IgYSBsaWNlbnNlLgotCi1OZXcg
UHJvY2VkdXJlcyBhbmQgRnVuY3Rpb25zCi0KLSAgICBOb25lLgotCi1OZXcgVHlwZXMKLQotICAg
IE5vbmUuCi0KLU5ldyBUb2tlbnMKLQotICAgIEFjY2VwdGVkIGJ5IHRoZSA8aW50ZXJuYWxmb3Jt
YXQ+IHBhcmFtZXRlciBvZiBDb21wcmVzc2VkVGV4SW1hZ2UyRAotICAgIGFuZCB0aGUgPGZvcm1h
dD4gcGFyYW1ldGVyIG9mIENvbXByZXNzZWRUZXhTdWJJbWFnZTJEOgotCi0gICAgQ09NUFJFU1NF
RF9SR0JfUzNUQ19EWFQxX0FOR0xFICAgICAgICAgICAgICAgICAgICAweDgzRjAKLSAgICBDT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQxX0FOR0xFICAgICAgICAgICAgICAgICAgIDB4ODNGMQotICAg
IENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEUgICAgICAgICAgICAgICAgICAgMHg4M0Yy
Ci0gICAgQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRSAgICAgICAgICAgICAgICAgICAw
eDgzRjMKLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgMyBvZiB0aGUgT3BlbkdMIEVTIDIuMCBTcGVj
aWZpY2F0aW9uIChSYXN0ZXJpemF0aW9uKQotCi0gICAgQWRkIHRoZSBmb2xsb3dpbmcgdG8gU2Vj
dGlvbiAzLjcuMyAoQ29tcHJlc3NlZCBUZXh0dXJlIEltYWdlcykKLSAgICAoYXQgdGhlIGVuZCBv
ZiB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIENvbXByZXNzZWRUZXhJbWFnZTJEIGNvbW1hbmQpOgot
Ci0gICAgQ29tcHJlc3NlZCBJbnRlcm5hbCBGb3JtYXQgICAgICAgIEJhc2UgSW50ZXJuYWwgRm9y
bWF0Ci0gICAgPT09PT09PT09PT09PT09PT09PT09PT09PT0gICAgICAgID09PT09PT09PT09PT09
PT09PT09Ci0gICAgQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0FOR0xFICAgIFJHQgotICAgIENP
TVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfQU5HTEUgICBSR0JBCi0gICAgQ09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUM19BTkdMRSAgIFJHQkEKLSAgICBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FO
R0xFICAgUkdCQQotCi0gICAgVGFibGUgMy54OiBTcGVjaWZpYyBDb21wcmVzc2VkIEludGVybmFs
IEZvcm1hdHMKLQotICAgIElmIDxpbnRlcm5hbGZvcm1hdD4gaXMgb25lIG9mIHRoZSBTM1RDIGZv
cm1hdHMgbGlzdGVkIGluIFRhYmxlIDMueCwKLSAgICB0aGUgY29tcHJlc3NlZCB0ZXh0dXJlIGlz
IHN0b3JlZCBpbiB0aGUgYXBwcm9wcmlhdGUgUzNUQyBjb21wcmVzc2VkCi0gICAgdGV4dHVyZSBm
b3JtYXQgKHNlZSBBcHBlbmRpeCkuIFRoZSBHTCBhbmQgdGhlIFMzVEMgdGV4dHVyZSBjb21wcmVz
c2lvbgotICAgIGFsZ29yaXRobSBzdXBwb3J0IG9ubHkgMkQgaW1hZ2VzIHdpdGhvdXQgYm9yZGVy
cy4KLQotICAgIENvbXByZXNzZWRUZXhJbWFnZTJEIHdpbGwgcHJvZHVjZSB0aGUgSU5WQUxJRF9P
UEVSQVRJT04gZXJyb3Igd2hlbgotICAgIDxpbnRlcm5hbGZvcm1hdD4gaXMgb25lIG9mIHRoZSB2
YWx1ZXMgZnJvbSBUYWJsZSAzLnggdW5kZXIgdGhlIGZvbGxvd2luZwotICAgIGNvbmRpdGlvbnM6
IAotCi0gICAgICAqIDxib3JkZXI+IGlzIG5vbi16ZXJvLgotICAgICAgKiA8d2lkdGg+IGlzIG5v
dCBvbmUsIHR3bywgb3IgYSBtdWx0aXBsZSBvZiBmb3VyLgotICAgICAgKiA8aGVpZ2h0PiBpcyBu
b3Qgb25lLCB0d28sIG9yIGEgbXVsdGlwbGUgb2YgZm91ci4KLQotICAgIEFkZCB0aGUgZm9sbG93
aW5nIHRvIFNlY3Rpb24gMy43LjMgKENvbXByZXNzZWQgVGV4dHVyZSBJbWFnZXMpCi0gICAgKGF0
IHRoZSBlbmQgb2YgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBDb21wcmVzc2VkVGV4U3ViSW1hZ2Uy
RCBjb21tYW5kKToKLQotICAgIElmIHRoZSBpbnRlcm5hbCBmb3JtYXQgb2YgdGhlIHRleHR1cmUg
aW1hZ2UgYmVpbmcgbW9kaWZpZWQgaXMgbGlzdGVkCi0gICAgaW4gVGFibGUgMy54LCB0aGUgdGV4
dHVyZSBpcyBzdG9yZWQgaW4gdGhlIGFwcHJvcHJpYXRlIFMzVEMgY29tcHJlc3NlZAotICAgIHRl
eHR1cmUgZm9ybWF0IChzZWUgQXBwZW5kaXgpLiBTaW5jZSBEWFQvUzNUQyBpbWFnZXMgYXJlIGVh
c2lseSBlZGl0ZWQKLSAgICBhbG9uZyA0eDQgdGV4ZWwgYm91bmRhcmllcywgdGhlIGxpbWl0YXRp
b25zIG9mIENvbXByZXNzZWRUZXhTdWJJbWFnZTJECi0gICAgYXJlIHJlbGF4ZWQuIENvbXByZXNz
ZWRUZXhTdWJJbWFnZTJEIHdpbGwgcmVzdWx0IGluIGFuIElOVkFMSURfT1BFUkFUSU9OCi0gICAg
ZXJyb3Igb25seSBpZiBvbmUgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIG9jY3VyczoKLQot
ICAgICAgKiA8d2lkdGg+IGlzIG5vdCBhIG11bHRpcGxlIG9mIGZvdXIgb3IgZXF1YWwgdG8gVEVY
VFVSRV9XSURUSC4KLSAgICAgICogPGhlaWdodD4gaXMgbm90IGEgbXVsdGlwbHMgb2YgZm91ciBv
ciBlcXVhbCB0byBURVhUVVJFX0hFSUdIVC4KLSAgICAgICogPHhvZmZzZXQ+IG9yIDx5b2Zmc2V0
PiBpcyBub3QgYSBtdWx0aXBsZSBvZiBmb3VyLgotICAgICAgKiA8Zm9ybWF0PiBkb2VzIG5vdCBt
YXRjaCB0aGUgaW50ZXJuYWwgZm9ybWF0IG9mIHRoZSB0ZXh0dXJlIGltYWdlCi0gICAgICAgIGJl
aW5nIG1vZGlmaWVkLgotCi0gICAgVGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnMgYXQgdGhlIGVu
ZCBvZiBzZWN0aW9uIDMuNy4zIGRvIG5vdCBhcHBseQotICAgIHRvIFMzVEMgRFhUIHRleHR1cmUg
Zm9ybWF0cywgc2luY2Ugc3ViaW1hZ2UgbW9kaWZpY2F0aW9uIGlzIHN0cmFpZ2h0Zm9yd2FyZAot
ICAgIGFzIGxvbmcgYXMgdGhlIHN1YmltYWdlIGlzIHByb3Blcmx5IGFsaWduZWQuCi0KLUVycm9y
cwotCi0gICAgSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGJ5IENvbXByZXNzZWRUZXhJ
bWFnZTJEIGlmIDxpbnRlcm5hbGZvcm1hdD4KLSAgICBpcyBvbmUgb2YgdGhlIGNvbXByZXNzZWQg
aW50ZXJuYWwgZm9ybWF0cyBmcm9tIFRhYmxlIDMueCBhbmQgYW55IG9mIHRoZSAKLSAgICBmb2xs
b3dpbmcgYXBwbHk6Ci0gICAgICAtIDxib3JkZXI+IGlzIG5vdCBlcXVhbCB0byB6ZXJvLgotICAg
ICAgLSA8d2lkdGg+IGlzIG5vdCBvbmUsIHR3bywgb3IgYSBtdWx0aXBsZSBvZiBmb3VyLiAKLSAg
ICAgIC0gPGhlaWdodD4gaXMgbm90IG9uZSwgdHdvLCBvciBhIG11bHRpcGxlIG9mIGZvdXIuIAot
Ci0gICAgSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGJ5IFRleEltYWdlMkQgYW5kIENv
cHlUZXhJbWFnZTJEIGlmCi0gICAgPGludGVybmFsZm9ybWF0PiBpcyBvbmUgb2YgdGhlIGNvbXBy
ZXNzZWQgaW50ZXJuYWwgZm9ybWF0cyBmcm9tCi0gICAgVGFibGUgMy54LgotCi0gICAgSU5WQUxJ
RF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGJ5IFRleFN1YkltYWdlMkQgYW5kIENvcHlUZXhTdWJJ
bWFnZTJECi0gICAgaWYgdGhlIGludGVybmFsIGZvcm1hdCBvZiB0aGUgdGV4dHVyZSBjdXJyZW50
bHkgYm91bmQgdG8gPHRhcmdldD4gaXMKLSAgICBvbmUgb2YgdGhlIGNvbXByZXNzZWQgaW50ZXJu
YWwgZm9ybWF0cyBmcm9tIFRhYmxlIDMueC4KLQotICAgIElOVkFMSURfT1BFUkFUSU9OIGlzIGdl
bmVyYXRlZCBieSBDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCBpZiA8Zm9ybWF0PgotICAgIGlzIG9u
ZSBvZiB0aGUgY29tcHJlc3NlZCBpbnRlcmFsIGZvcm1hdHMgZnJvbSBUYWJsZSAzLnggYW5kIGFu
eSBvZiB0aGUKLSAgICBmb2xsb3dpbmcgYXBwbHk6Ci0gICAgICAtIDx3aWR0aD4gaXMgbm90IGEg
bXVsdGlwbGUgb2YgZm91ciBvciBlcXVhbCB0byBURVhUVVJFX1dJRFRIOwotICAgICAgLSA8aGVp
Z2h0PiBpcyBub3QgYSBtdWx0aXBsZSBvZiBmb3VyIG9yIGVxdWFsIHRvIFRFWFRVUkVfSEVJR0hU
OwotICAgICAgLSA8eG9mZnNldD4gb3IgPHlvZmZzZXQ+IGlzIG5vdCBhIG11bHRpcGxlIG9mIGZv
dXI7Ci0gICAgICAtIDxmb3JtYXQ+IGRvZXMgbm90IG1hdGNoIHRoZSBpbnRlcm5hbCBmb3JtYXQg
b2YgdGhlIHRleHR1cmUgaW1hZ2UKLSAgICAgIGJlaW5nIG1vZGlmaWVkLgotCi1OZXcgU3RhdGUK
LQotICAgIE5vbmUuCi0KLUFwcGVuZGl4OiAKLQotICAgIFRoZSBmb3JtYXQgZm9yIHRoZSBTM1RD
IENvbXByZXNzZWQgVGV4dHVyZSBJbWFnZXMgRm9ybWF0cyBpcyBkb2N1bWVudGVkCi0gICAgaW4g
dGhlIGFwcGVuZGl4IG9mIEVYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMuCi0KLVJldmlzaW9u
IEhpc3RvcnkKLQotICAgIFJldmlzaW9uIDEsIDIwMTAvMDgvMDYgLSBnbWFuCi0gICAgICAtIElu
aXRpYWwgcmV2aXNpb24KLSAgICBSZXZpc2lvbiAyLCAyMDEyLzA5LzIyIC0gZGdrb2NoCi0gICAg
ICAtIEFkZGVkIERYVDEgZm9ybWF0cyBhbmQgZG9jdW1lbnRlZCBtdWx0aXBsZSBvZiA0IHJlc3Ry
aWN0aW9uLgotCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0FOR0xF
X3RleHR1cmVfdXNhZ2UudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L2V4dGVuc2lvbnMvQU5HTEVfdGV4dHVyZV91c2FnZS50eHQJKHJldmlzaW9uIDIwODAyMSkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvQU5HTEVfdGV4dHVyZV91c2FnZS50
eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMDIgKzAsMCBAQAotTmFtZQotCi0gICAgQU5HTEVfdGV4
dHVyZV91c2FnZQotCi1OYW1lIFN0cmluZ3MKLQotICAgIEdMX0FOR0xFX3RleHR1cmVfdXNhZ2UK
LQotQ29udHJpYnV0b3JzCi0KLSAgICBOaWNvbGFzIENhcGVucywgVHJhbnNHYW1pbmcKLSAgICBE
YW5pZWwgS29jaCwgVHJhbnNHYW1pbmcKLQotQ29udGFjdAotCi0gICAgRGFuaWVsIEtvY2gsIFRy
YW5zR2FtaW5nIChkYW5pZWwgJ2F0JyB0cmFuc2dhbWluZy5jb20pCi0KLVN0YXR1cwotCi0gICAg
Q29tcGxldGUKLQotVmVyc2lvbgotCi0gICAgTGFzdCBNb2RpZmllZCBEYXRlOiAgTm92ZW1iZXIg
MTAsIDIwMTEKLSAgICBWZXJzaW9uOiAgICAgICAgICAgICAyCi0KLU51bWJlcgotCi0gICAgT3Bl
bkdMIEVTIEV4dGVuc2lvbiAjMTEyIAotCi1EZXBlbmRlbmNpZXMKLQotICAgIFRoaXMgZXh0ZW5z
aW9uIGlzIHdyaXR0ZW4gYWdhaW5zdCB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZpY2F0aW9uLgot
Ci1PdmVydmlldwotCi0gICAgSW4gc29tZSBpbXBsZW1lbnRhdGlvbnMgaXQgaXMgYWR2YW50YWdl
b3VzIHRvIGtub3cgdGhlIGV4cGVjdGVkCi0gICAgdXNhZ2Ugb2YgYSB0ZXh0dXJlIGJlZm9yZSB0
aGUgYmFja2luZyBzdG9yYWdlIGZvciBpdCBpcyBhbGxvY2F0ZWQuICAKLSAgICBUaGlzIGNhbiBo
ZWxwIHRvIGluZm9ybSB0aGUgaW1wbGVtZW50YXRpb24ncyBjaG9pY2Ugb2YgZm9ybWF0Ci0gICAg
YW5kIHR5cGUgb2YgbWVtb3J5IHVzZWQgZm9yIHRoZSBhbGxvY2F0aW9uLiBJZiB0aGUgdXNhZ2Ug
aXMgbm90Ci0gICAga25vd24gaW4gYWR2YW5jZSwgdGhlIGltcGxlbWVudGF0aW9uIGVzc2VudGlh
bGx5IGhhcyB0byBtYWtlIGEgCi0gICAgZ3Vlc3MgYXMgdG8gaG93IGl0IHdpbGwgYmUgdXNlZC4g
IElmIGl0IGlzIGxhdGVyIHByb3ZlbiB3cm9uZywKLSAgICBpdCBtYXkgbmVlZCB0byBwZXJmb3Jt
IGNvc3RseSByZS1hbGxvY2F0aW9ucyBhbmQvb3IgcmVmb3JtYXR0aW5nIAotICAgIG9mIHRoZSB0
ZXh0dXJlIGRhdGEsIHJlc3VsdGluZyBpbiByZWR1Y2VkIHBlcmZvcm1hbmNlLgotCi0gICAgVGhp
cyBleHRlbnNpb24gYWRkcyBhIHRleHR1cmUgdXNhZ2UgZmxhZyB0aGF0IGlzIHNwZWNpZmllZCB2
aWEKLSAgICB0aGUgVEVYVFVSRV9VU0FHRV9BTkdMRSBUZXhQYXJhbWV0ZXIuICBUaGlzIGNhbiBi
ZSB1c2VkIHRvIAotICAgIGluZGljYXRlIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGtub3dzIHRoYXQg
dGhpcyB0ZXh0dXJlIHdpbGwgYmUgCi0gICAgdXNlZCBmb3IgcmVuZGVyaW5nLgotCi1JUCBTdGF0
dXMKLQotICAgIE5vIGtub3duIElQIGNsYWltcy4KLQotTmV3IFByb2NlZHVyZXMgYW5kIEZ1bmN0
aW9ucwotCi0gICAgTm9uZQotCi1OZXcgVG9rZW5zCi0KLSAgICBBY2NlcHRlZCBhcyBhIHZhbHVl
IGZvciA8cG5hbWU+IGZvciB0aGUgVGV4UGFyYW1ldGVye2lmfSBhbmQgCi0gICAgVGV4UGFyYW1l
dGVye2lmfXYgY29tbWFuZHMgYW5kIGZvciB0aGUgPHZhbHVlPiBwYXJhbWV0ZXIgb2YKLSAgICBH
ZXRUZXhQYXJhbWV0ZXJ7aWZ9djogCi0KLSAgICAgICAgVEVYVFVSRV9VU0FHRV9BTkdMRSAgICAg
ICAgICAgICAgICAgICAgIDB4OTNBMgotCi0gICAgQWNjZXB0ZWQgYXMgYSB2YWx1ZSB0byA8cGFy
YW0+IGZvciB0aGUgVGV4UGFyYW1ldGVye2lmfSBhbmQgCi0gICAgdG8gPHBhcmFtcz4gZm9yIHRo
ZSBUZXhQYXJhbWV0ZXJ7aWZ9diBjb21tYW5kcyB3aXRoIGEgPHBuYW1lPiBvZiAKLSAgICBURVhU
VVJFX1VTQUdFX0FOR0xFOyByZXR1cm5lZCBhcyBwb3NzaWJsZSB2YWx1ZXMgZm9yIDxkYXRhPiB3
aGVuIAotICAgIEdldFRleFBhcmFtZXRlcntpZn12IGlzIHF1ZXJpZWQgd2l0aCBhIDx2YWx1ZT4g
b2YgVEVYVFVSRV9VU0FHRV9BTkdMRToKLQotICAgICAgICBOT05FICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHgwMDAwCi0gICAgICAgIEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRf
QU5HTEUgICAgICAgICAgICAweDkzQTMKLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgMiBvZiB0aGUg
T3BlbkdMIEVTIDIuMCBTcGVjaWZpY2F0aW9uIChPcGVuR0wgRVMgT3BlcmF0aW9uKQotCi0gICAg
Tm9uZQotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciAzIG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNp
ZmljYXRpb24gKFJhc3Rlcml6YXRpb24pCi0KLSAgICBBZGQgYSBuZXcgcm93IHRvIFRhYmxlIDMu
MTAgKFRleHR1cmUgcGFyYW1ldGVycyBhbmQgdGhlaXIgdmFsdWVzKToKLQotICAgIE5hbWUgICAg
ICAgICAgICAgICAgfCBUeXBlIHwgTGVnYWwgVmFsdWVzIAotICAgIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIFRFWFRVUkVf
VVNBR0VfQU5HTEUgfCBlbnVtIHwgTk9ORSwgRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9BTkdMRQot
Ci0gICAgQWRkIGEgbmV3IHNlY3Rpb24gMy43LnggKFRleHR1cmUgVXNhZ2UpIGJlZm9yZSBzZWN0
aW9uIDMuNy4xMiBhbmQgCi0gICAgcmVudW1iZXIgdGhlIHN1YnNlcXVlbnQgc2VjdGlvbnM6IAot
Ci0gICAgIjMuNy54IFRleHR1cmUgVXNhZ2UKLQotICAgIFRleHR1cmUgdXNhZ2UgY2FuIGJlIHNw
ZWNpZmllZCB2aWEgdGhlIFRFWFRVUkVfVVNBR0VfQU5HTEUgdmFsdWUKLSAgICBmb3IgdGhlIDxw
bmFtZT4gYXJndW1lbnQgdG8gVGV4UGFyYW1ldGVye2lmfVt2XS4gSW4gb3JkZXIgdG8gdGFrZSBl
ZmZlY3QsCi0gICAgdGhlIHRleHR1cmUgdXNhZ2UgbXVzdCBiZSBzcGVjaWZpZWQgYmVmb3JlIHRo
ZSB0ZXh0dXJlIGNvbnRlbnRzIGFyZQotICAgIGRlZmluZWQgZWl0aGVyIHZpYSBUZXhJbWFnZTJE
IG9yIFRleFN0b3JhZ2UyREVYVC4KLQotICAgIFRoZSB1c2FnZSB2YWx1ZXMgY2FuIGltcGFjdCB0
aGUgbGF5b3V0IGFuZCB0eXBlIG9mIG1lbW9yeSB1c2VkIGZvciB0aGUgCi0gICAgdGV4dHVyZSBk
YXRhLiBTcGVjaWZ5aW5nIGluY29ycmVjdCB1c2FnZSB2YWx1ZXMgbWF5IHJlc3VsdCBpbiByZWR1
Y2VkCi0gICAgZnVuY3Rpb25hbGl0eSBhbmQvb3Igc2lnbmlmaWNhbnRseSBkZWdyYWRlZCBwZXJm
b3JtYW5jZS4KLQotICAgIFBvc3NpYmxlIHZhbHVlcyBmb3IgPHBhcmFtcz4gd2hlbiA8cG5hbWU+
IGlzIFRFWFRVUkVfVVNBR0VfQU5HTEUgYXJlOgotCi0gICAgTk9ORSAtIHRoZSBkZWZhdWx0LiBO
byBwYXJ0aWN1bGFyIHVzYWdlIGhhcyBiZWVuIHNwZWNpZmllZCBhbmQgaXQgaXMKLSAgICAgICAg
dXAgdG8gdGhlIGltcGxlbWVudGF0aW9uIHRvIGRldGVybWluZSB0aGUgdXNhZ2Ugb2YgdGhlIHRl
eHR1cmUuCi0gICAgICAgIExlYXZpbmcgdGhlIHVzYWdlIHVuc3BlY2lmaWVkIG1lYW5zIHRoYXQg
dGhlIGltcGxlbWVudGF0aW9uIG1heSAKLSAgICAgICAgaGF2ZSB0byByZWFsbG9jYXRlIHRoZSB0
ZXh0dXJlIGRhdGEgYXMgdGhlIHRleHR1cmUgaXMgdXNlZCBpbiAKLSAgICAgICAgdmFyaW91cyB3
YXlzLgotCi0gICAgRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9BTkdMRSAtIHRoaXMgdGV4dHVyZSB3
aWxsIGJlIGF0dGFjaGVkIHRvIGEgCi0gICAgICAgIGZyYW1lYnVmZmVyIG9iamVjdCBhbmQgdXNl
ZCBhcyBhIGRlc2luYXRpb24gZm9yIHJlbmRlcmluZyBvciBibGl0cy4iCi0KLSAgICBNb2RpZnkg
c2VjdGlvbiAzLjcuMTIgKFRleHR1cmUgU3RhdGUpIGFuZCBwbGFjZSB0aGUgbGFzdCAzIHNlbnRl
bmNlcwotICAgIHdpdGggdGhlIGZvbGxvd2luZzoKLQotICAgICJOZXh0LCB0aGVyZSBhcmUgdGhl
IHRocmVlIHNldHMgb2YgdGV4dHVyZSBwcm9wZXJ0aWVzOyBlYWNoIGNvbnNpc3RzIG9mCi0gICAg
dGhlIHNlbGVjdGVkIG1pbmlmaWNhdGlvbiBhbmQgbWFnbmlmaWNhdGlvbiBmaWx0ZXJzLCB0aGUg
d3JhcCBtb2RlcyBmb3IKLSAgICA8cz4gYW5kIDx0PiwgYW5kIHRoZSB1c2FnZSBmbGFncy4gSW4g
dGhlIGluaXRpYWwgc3RhdGUsIHRoZSB2YWx1ZSBhc3NpZ25lZAotICAgIHRvIFRFWFRVUkVfTUlO
X0ZJTFRFUiBpcyBORUFSRVNUX01JUE1BUF9MSU5FQVIsIGFuZCB0aGUgdmFsdWUgZm9yIAotICAg
IFRFWFRVUkVfTUFHX0ZJTFRFUiBpcyBMSU5FQVIuIDxzPiBhbmQgPHQ+IHdyYXAgbW9kZXMgYXJl
IGJvdGggc2V0IHRvCi0gICAgUkVQRUFULiBUaGUgaW5pdGlhbCB2YWx1ZSBmb3IgVEVYVFVSRV9V
U0FHRV9BTkdMRSBpcyBOT05FLiIKLQotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciA0IG9mIHRoZSBP
cGVuR0wgRVMgMi4wIFNwZWNpZmljYXRpb24gKFBlci1GcmFnbWVudAotT3BlcmF0aW9ucyBhbmQg
dGhlIEZyYW1lYnVmZmVyKQotCi0gICAgTm9uZQotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciA1IG9m
IHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmljYXRpb24gKFNwZWNpYWwKLUZ1bmN0aW9ucyk6Ci0K
LSAgICBOb25lCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDYgb2YgdGhlIE9wZW5HTCBFUyAyLjAg
U3BlY2lmaWNhdGlvbiAoU3RhdGUgYW5kCi1TdGF0ZSBSZXF1ZXN0cykKLQotICAgIE5vbmUKLQot
RGVwZW5kZW5jaWVzIG9uIEVYVF90ZXh0dXJlX3N0b3JhZ2UKLQotICAgIElmIEVYVF90ZXh0dXJl
X3N0b3JhZ2UgaXMgbm90IHN1cHBvcnRlZCwgb21pdCBhbnkgcmVmZXJlbmNlcyB0byAKLSAgICBU
ZXhTdG9yYWdlMkRFWFQuCi0KLUVycm9ycwotCi0gICAgSWYgVGV4UGFyYW1ldGVye2lmfSBvciBU
ZXhQYXJhbXRlcntpZn12IGlzIGNhbGxlZCB3aXRoIGEgPHBuYW1lPgotICAgIG9mIFRFWFRVUkVf
VVNBR0VfQU5HTEUgYW5kIHRoZSB2YWx1ZSBvZiA8cGFyYW0+IG9yIDxwYXJhbXM+IGlzIG5vdAot
ICAgIE5PTkUgb3IgRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9BTkdMRSB0aGUgZXJyb3IgSU5WQUxJ
RF9WQUxVRSBpcwotICAgIGdlbmVyYXRlZC4KLQotVXNhZ2UgRXhhbXBsZQotCi0gICAgLyogY3Jl
YXRlIGFuZCBiaW5kIHRleHR1cmUgKi8KLSAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXh0dXJlKTsK
LSAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOwotICAgIGdsQmluZFRleHR1cmUoR0xf
VEVYVFVSRV8yRCwgdGV4dHVyZSk7Ci0KLSAgICAvKiBzcGVjaWZ5IHRleHR1cmUgcGFyYW1ldGVy
cyAqLwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF8qLCAuLi4pOyAgLyog
YXMgYmVmb3JlICovCi0gICAgCi0gICAgLyogc3BlY2lmeSB0aGF0IHdlJ2xsIGJlIHJlbmRlcmlu
ZyB0byB0aGUgdGV4dHVyZSAqLwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX1VTQUdFX0FOR0xFLCBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0FOR0xFKTsK
LQotICAgIGdsVGV4U3RvcmFnZTJERVhUKEdMX1RFWFRVUkVfMkQsIGxldmVscywgLi4uKTsgLy8g
QWxsb2NhdGlvbgotICAgIGZvcihpbnQgbGV2ZWwgPSAwOyBsZXZlbCA8IGxldmVsczsgKytsZXZl
bCkKLSAgICAgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIGxldmVsLCAuLi4pOyAv
LyBJbml0aWFsaXNhdGlvbgotCi1Jc3N1ZXMKLQotICAgIDEuIFNob3VsZCB0aGVyZSBiZSBhIGR5
bmFtaWMgdXNhZ2UgdmFsdWU/Ci0gICAKLSAgICAgICBESVNDVVNTSU9OOiBXZSBjb3VsZCBhY2Nl
cHQgYSBkeW5hbWljIGZsYWcgdG8gaW5kaWNhdGUgdGhhdCBhIHRleHR1cmUgd2lsbAotICAgICAg
IGJlIHVwZGF0ZWQgZnJlcXVlbnRseS4gV2UgY291bGQgbWFwIHRoaXMgdG8gRDNEOSBkeW5hbWlj
IHRleHR1cmVzLiBUaGlzIHdvdWxkCi0gICAgICAgYWxsb3cgdXMgdG8gYXZvaWQgY3JlYXRpbmcg
dGVtcG9yYXJ5IHN1cmZhY2VzIHdoZW4gdXBkYXRpbmcgdGhlIHRleHR1cmUuCi0gICAgICAgSG93
ZXZlciByZW5kZXJhYmxlIHRleHR1cmVzIGNhbm5vdCBiZSBkeW5hbWljIGluIEQzRDksIHdoaWNo
IGVsaW1pbmF0ZXMgdGhlIAotICAgICAgIHByaW1hcnkgdXNlIGNhc2UgZm9yIHRoaXMuICBGdXJ0
aGVybW9yZSwgdGhlIG1lbW9yeSB1c2FnZSBvZiBkeW5hbWljIHRleHR1cmVzCi0gICAgICAgdHlw
aWNhbGx5IGluY3JlYXNlcyB0aHJlZWZvbGQgd2hlbiB5b3UgbG9jayBpdC4KLQotICAgIDIuIFNo
b3VsZCB0aGUgdGV4dHVyZSB1c2FnZSBiZSBhbiBlbnVtIG9yIGEgYml0ZmllbGQ/Ci0KLSAgICAg
ICBVTlJFU09MVkVELiAgVXNpbmcgYSBiaXRmaWVsZCB3b3VsZCBhbGxvdyBjb21iaW5hdGlvbiBv
ZiB2YWx1ZXMgdG8gYmUgc3BlY2lmaWVkLgotICAgICAgIE9uIHRoZSBvdGhlciBoYW5kLCBpZiBj
b21iaW5hdGlvbnMgYXJlIHJlYWxseSByZXF1aXJlZCwgYWRkaXRpb25hbCA8cG5hbWVzPgotICAg
ICAgIGNvdWxkIGJlIGFkZGVkIGFzIG5lY2Vzc2FyeS4gIFF1ZXJ5aW5nIGEgYml0ZmllbGQgdmlh
IHRoZSBHZXRUZXhQYXJhbWV0ZXIgY29tbWFuZAotICAgICAgIGZlZWxzIGEgYml0IG9kZC4KLQot
ICAgIDMuIFdoYXQgc2hvdWxkIGhhcHBlbiBpZiBURVhUVVJFX1VTQUdFX0FOR0xFIGlzIHNldC9j
aGFuZ2VkIGFmdGVyIHRoZSB0ZXh0dXJlCi0gICAgICAgY29udGVudHMgaGF2ZSBiZWVuIHNwZWNp
ZmllZD8KLQotICAgICAgIFJFU09MVkVEOiBJdCB3aWxsIGhhdmUgbm8gZWZmZWN0LiBIb3dldmVy
LCBpZiB0aGUgdGV4dHVyZSBpcyByZWRlZmluZWQgKGZvciAKLSAgICAgICBleGFtcGxlIGJ5IFRl
eEltYWdlMkQpIHRoZSBuZXcgYWxsb2NhdGlvbiB3aWxsIHVzZSB0aGUgdXBkYXRlZCB1c2FnZS4K
LSAgICAgICBHZXRUZXhQYXJhbWV0ZXIgaXMgdXNlZCB0byBxdWVyeSB0aGUgdmFsdWUgb2YgdGhl
IFRFWFRVUkVfVVNBR0VfQU5HTEUKLSAgICAgICBzdGF0ZSB0aGF0IHdhcyBsYXN0IHNldCBieSBU
ZXhQYXJhbWV0ZXIgZm9yIHRoZSBjdXJyZW50bHkgYm91bmQgdGV4dHVyZSwgb3IKLSAgICAgICB0
aGUgZGVmYXVsdCB2YWx1ZSBpZiBpdCBoYXMgbmV2ZXIgYmVlbiBzZXQuIFRoZXJlIGlzIG5vIHdh
eSB0byBkZXRlcm1pbmUgdGhlIAotICAgICAgIHVzYWdlIHRoYXQgd2FzIGluIGVmZmVjdCBhdCB0
aGUgdGltZSB0aGUgdGV4dHVyZSB3YXMgZGVmaW5lZC4KLQotUmV2aXNpb24gSGlzdG9yeQotCi0g
ICAgUmV2LiAgICBEYXRlICAgICAgQXV0aG9yICAgICBDaGFuZ2VzCi0gICAgLS0tLSAgLS0tLS0t
LS0tLS0gLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0gICAgICAxICAgMTAgTm92IDIwMTEgZGdrb2NoICAgICBJbml0aWFsIHJldmlzaW9uCi0gICAg
ICAyICAgMTAgTm92IDIwMTEgZGdrb2NoICAgICBBZGQgb3ZlcnZpZXcKLSAgIAotCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0FOR0xFX3RpbWVyX3F1ZXJ5LnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0FOR0xFX3Rp
bWVyX3F1ZXJ5LnR4dAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvZXh0ZW5zaW9ucy9BTkdMRV90aW1lcl9xdWVyeS50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSw1
OTEgKzAsMCBAQAotTmFtZQotCi0gICAgQU5HTEVfdGltZXJfcXVlcnkKLQotTmFtZSBTdHJpbmdz
Ci0KLSAgICBHTF9BTkdMRV90aW1lcl9xdWVyeQotCi1Db250cmlidXRvcnMKLQotICAgIENvbnRy
aWJ1dG9ycyB0byBBUkJfb2NjbHVzaW9uX3F1ZXJ5Ci0gICAgQ29udHJpYnV0b3JzIHRvIEVYVF90
aW1lcl9xdWVyeQotICAgIENvbnRyaWJ1dG9ycyB0byBBUkJfdGltZXJfcXVlcnkKLSAgICBCZW4g
VmFuaWssIEdvb2dsZSBJbmMuCi0gICAgRGFuaWVsIEtvY2gsIFRyYW5zR2FtaW5nIEluYy4KLQot
Q29udGFjdAotCi0gICAgQmVuIFZhbmlrLCBHb29nbGUgSW5jLiAoYmVudmFuaWsgJ2F0JyBnb29n
bGUgJ2RvdCcgY29tKQotCi1TdGF0dXMKLQotICAgIERyYWZ0Ci0KLVZlcnNpb24KLQotICAgIExh
c3QgTW9kaWZpZWQgRGF0ZTogQXByIDI4LCAyMDExCi0gICAgQXV0aG9yIFJldmlzaW9uOiAxCi0K
LU51bWJlcgotCi0gICAgT3BlbkdMIEVTIEV4dGVuc2lvbiAjPz8KLQotRGVwZW5kZW5jaWVzCi0K
LSAgICBPcGVuR0wgRVMgMi4wIGlzIHJlcXVpcmVkLgotCi0gICAgVGhlIGV4dGVuc2lvbiBpcyB3
cml0dGVuIGFnYWluc3QgdGhlIE9wZW5HTCBFUyAyLjAgc3BlY2lmaWNhdGlvbi4KLQotT3ZlcnZp
ZXcKLQotICAgIEFwcGxpY2F0aW9ucyBjYW4gYmVuZWZpdCBmcm9tIGFjY3VyYXRlIHRpbWluZyBp
bmZvcm1hdGlvbiBpbiBhIG51bWJlciBvZgotICAgIGRpZmZlcmVudCB3YXlzLiAgRHVyaW5nIGFw
cGxpY2F0aW9uIGRldmVsb3BtZW50LCB0aW1pbmcgaW5mb3JtYXRpb24gY2FuCi0gICAgaGVscCBp
ZGVudGlmeSBhcHBsaWNhdGlvbiBvciBkcml2ZXIgYm90dGxlbmVja3MuICBBdCBydW4gdGltZSwK
LSAgICBhcHBsaWNhdGlvbnMgY2FuIHVzZSB0aW1pbmcgaW5mb3JtYXRpb24gdG8gZHluYW1pY2Fs
bHkgYWRqdXN0IHRoZSBhbW91bnQKLSAgICBvZiBkZXRhaWwgaW4gYSBzY2VuZSB0byBhY2hpZXZl
IGNvbnN0YW50IGZyYW1lIHJhdGVzLiAgT3BlbkdMCi0gICAgaW1wbGVtZW50YXRpb25zIGhhdmUg
aGlzdG9yaWNhbGx5IHByb3ZpZGVkIGxpdHRsZSB0byBubyB1c2VmdWwgdGltaW5nCi0gICAgaW5m
b3JtYXRpb24uICBBcHBsaWNhdGlvbnMgY2FuIGdldCBzb21lIGlkZWEgb2YgdGltaW5nIGJ5IHJl
YWRpbmcgdGltZXJzCi0gICAgb24gdGhlIENQVSwgYnV0IHRoZXNlIHRpbWVycyBhcmUgbm90IHN5
bmNocm9uaXplZCB3aXRoIHRoZSBncmFwaGljcwotICAgIHJlbmRlcmluZyBwaXBlbGluZS4gIFJl
YWRpbmcgYSBDUFUgdGltZXIgZG9lcyBub3QgZ3VhcmFudGVlIHRoZSBjb21wbGV0aW9uCi0gICAg
b2YgYSBwb3RlbnRpYWxseSBsYXJnZSBhbW91bnQgb2YgZ3JhcGhpY3Mgd29yayBhY2N1bXVsYXRl
ZCBiZWZvcmUgdGhlCi0gICAgdGltZXIgaXMgcmVhZCwgYW5kIHdpbGwgdGh1cyBwcm9kdWNlIHdp
bGRseSBpbmFjY3VyYXRlIHJlc3VsdHMuCi0gICAgZ2xGaW5pc2goKSBjYW4gYmUgdXNlZCB0byBk
ZXRlcm1pbmUgd2hlbiBwcmV2aW91cyByZW5kZXJpbmcgY29tbWFuZHMgaGF2ZQotICAgIGJlZW4g
Y29tcGxldGVkLCBidXQgd2lsbCBpZGxlIHRoZSBncmFwaGljcyBwaXBlbGluZSBhbmQgYWR2ZXJz
ZWx5IGFmZmVjdAotICAgIGFwcGxpY2F0aW9uIHBlcmZvcm1hbmNlLgotCi0gICAgVGhpcyBleHRl
bnNpb24gcHJvdmlkZXMgYSBxdWVyeSBtZWNoYW5pc20gdGhhdCBjYW4gYmUgdXNlZCB0byBkZXRl
cm1pbmUKLSAgICB0aGUgYW1vdW50IG9mIHRpbWUgaXQgdGFrZXMgdG8gZnVsbHkgY29tcGxldGUg
YSBzZXQgb2YgR0wgY29tbWFuZHMsIGFuZAotICAgIHdpdGhvdXQgc3RhbGxpbmcgdGhlIHJlbmRl
cmluZyBwaXBlbGluZS4gIEl0IHVzZXMgdGhlIHF1ZXJ5IG9iamVjdAotICAgIG1lY2hhbmlzbXMg
Zmlyc3QgaW50cm9kdWNlZCBpbiB0aGUgb2NjbHVzaW9uIHF1ZXJ5IGV4dGVuc2lvbiwgd2hpY2gg
YWxsb3cKLSAgICB0aW1lIGludGVydmFscyB0byBiZSBwb2xsZWQgYXN5bmNocm9ub3VzbHkgYnkg
dGhlIGFwcGxpY2F0aW9uLgotCi1JUCBTdGF0dXMKLQotICAgIE5vIGtub3duIElQIGNsYWltcy4K
LQotTmV3IFByb2NlZHVyZXMgYW5kIEZ1bmN0aW9ucwotCi0gICAgdm9pZCBHZW5RdWVyaWVzQU5H
TEUoc2l6ZWkgbiwgdWludCAqaWRzKTsKLSAgICB2b2lkIERlbGV0ZVF1ZXJpZXNBTkdMRShzaXpl
aSBuLCBjb25zdCB1aW50ICppZHMpOwotICAgIGJvb2xlYW4gSXNRdWVyeUFOR0xFKHVpbnQgaWQp
OwotICAgIHZvaWQgQmVnaW5RdWVyeUFOR0xFKGVudW0gdGFyZ2V0LCB1aW50IGlkKTsKLSAgICB2
b2lkIEVuZFF1ZXJ5QU5HTEUoZW51bSB0YXJnZXQpOwotICAgIHZvaWQgUXVlcnlDb3VudGVyQU5H
TEUodWludCBpZCwgZW51bSB0YXJnZXQpOwotICAgIHZvaWQgR2V0UXVlcnlpdkFOR0xFKGVudW0g
dGFyZ2V0LCBlbnVtIHBuYW1lLCBpbnQgKnBhcmFtcyk7Ci0gICAgdm9pZCBHZXRRdWVyeU9iamVj
dGl2QU5HTEUodWludCBpZCwgZW51bSBwbmFtZSwgaW50ICpwYXJhbXMpOwotICAgIHZvaWQgR2V0
UXVlcnlPYmplY3R1aXZBTkdMRSh1aW50IGlkLCBlbnVtIHBuYW1lLCB1aW50ICpwYXJhbXMpOwot
ICAgIHZvaWQgR2V0UXVlcnlPYmplY3RpNjR2QU5HTEUodWludCBpZCwgZW51bSBwbmFtZSwgaW50
NjQgKnBhcmFtcyk7Ci0gICAgdm9pZCBHZXRRdWVyeU9iamVjdHVpNjR2QU5HTEUodWludCBpZCwg
ZW51bSBwbmFtZSwgdWludDY0ICpwYXJhbXMpOwotCi1OZXcgVG9rZW5zCi0KLSAgICBBY2NlcHRl
ZCBieSB0aGUgPHBuYW1lPiBwYXJhbWV0ZXIgb2YgR2V0UXVlcnlpdkFOR0xFOgotCi0gICAgICAg
IFFVRVJZX0NPVU5URVJfQklUU19BTkdMRSAgICAgICAgICAgICAgICAgICAgICAgMHg4ODY0Ci0g
ICAgICAgIENVUlJFTlRfUVVFUllfQU5HTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4
ODY1Ci0KLSAgICBBY2NlcHRlZCBieSB0aGUgPHBuYW1lPiBwYXJhbWV0ZXIgb2YgR2V0UXVlcnlP
YmplY3RpdkFOR0xFLAotICAgIEdldFF1ZXJ5T2JqZWN0dWl2QU5HTEUsIEdldFF1ZXJ5T2JqZWN0
aTY0dkFOR0xFLCBhbmQKLSAgICBHZXRRdWVyeU9iamVjdHVpNjR2QU5HTEU6Ci0KLSAgICAgICAg
UVVFUllfUkVTVUxUX0FOR0xFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4NjYKLSAg
ICAgICAgUVVFUllfUkVTVUxUX0FWQUlMQUJMRV9BTkdMRSAgICAgICAgICAgICAgICAgICAweDg4
NjcKLSAgICAgICAgCi0gICAgQWNjZXB0ZWQgYnkgdGhlIDx0YXJnZXQ+IHBhcmFtZXRlciBvZiBC
ZWdpblF1ZXJ5QU5HTEUsIEVuZFF1ZXJ5QU5HTEUsIGFuZAotICAgIEdldFF1ZXJ5aXZBTkdMRToK
LQotICAgICAgICBUSU1FX0VMQVBTRURfQU5HTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4ODhCRgotCi0gICAgQWNjZXB0ZWQgYnkgdGhlIDx0YXJnZXQ+IHBhcmFtZXRlciBvZiBHZXRR
dWVyeWl2QU5HTEUgYW5kCi0gICAgUXVlcnlDb3VudGVyQU5HTEU6Ci0KLSAgICAgICAgVElNRVNU
QU1QX0FOR0xFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhFMjgKLQotQWRkaXRp
b25zIHRvIENoYXB0ZXIgMiBvZiB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZpY2F0aW9uIChPcGVu
R0wgRVMgT3BlcmF0aW9uKQotCi0gICAgKE1vZGlmeSB0YWJsZSAyLjEsIENvcnJlc3BvbmRlbmNl
IG9mIGNvbW1hbmQgc3VmZml4IGxldHRlcnMgdG8gR0wgYXJndW1lbnQpCi0gICAgQWRkIHR3byBu
ZXcgdHlwZXM6Ci0gICAgCi0gICAgTGV0dGVyIENvcnJlc3BvbmRpbmcgR0wgVHlwZQotICAgIC0t
LS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICBpNjQgICAgaW50NjRBTkdMRQotICAgIHVp
NjQgICB1aW50NjRBTkdMRQotCi0gICAgKE1vZGlmeSB0YWJsZSAyLjIsIEdMIGRhdGEgdHlwZXMp
IEFkZCB0d28gbmV3IHR5cGVzOgotICAgIAotICAgIEdMIFR5cGUgICAgICAgTWluaW11bSBCaXQg
V2lkdGggICBEZXNjcmlwdGlvbgotICAgIC0tLS0tLS0gICAgICAgLS0tLS0tLS0tLS0tLS0tLS0g
ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIGludDY0QU5HTEUgICAgNjQgICAg
ICAgICAgICAgICAgICBTaWduZWQgMidzIGNvbXBsZW1lbnQgaW50ZWdlcgotICAgIHVpbnQ2NEFO
R0xFICAgNjQgICAgICAgICAgICAgICAgICBVbnNpZ25lZCBiaW5hcnkgaW50ZWdlcgotCi1BZGRp
dGlvbnMgdG8gQ2hhcHRlciA1IG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmljYXRpb24gKFNw
ZWNpYWwgRnVuY3Rpb25zKQotCi0gICAgQWRkIGEgbmV3IHNlY3Rpb24gNS4zICJUaW1lciBRdWVy
aWVzIjoKLQotICAgICI1LjMgIFRpbWVyIFF1ZXJpZXMKLQotICAgIFRpbWVyIHF1ZXJpZXMgdXNl
IHF1ZXJ5IG9iamVjdHMgdG8gdHJhY2sgdGhlIGFtb3VudCBvZiB0aW1lIG5lZWRlZCB0bwotICAg
IGZ1bGx5IGNvbXBsZXRlIGEgc2V0IG9mIEdMIGNvbW1hbmRzLCBvciB0byBkZXRlcm1pbmUgdGhl
IGN1cnJlbnQgdGltZQotICAgIG9mIHRoZSBHTC4KLSAgICAKLSAgICBUaW1lciBxdWVyaWVzIGFy
ZSBhc3NvY2lhdGVkIHdpdGggcXVlcnkgb2JqZWN0cy4gIFRoZSBjb21tYW5kCi0KLSAgICAgIHZv
aWQgR2VuUXVlcmllc0FOR0xFKHNpemVpIG4sIHVpbnQgKmlkcyk7Ci0KLSAgICByZXR1cm5zIDxu
PiBwcmV2aW91c2x5IHVudXNlZCBxdWVyeSBvYmplY3QgbmFtZXMgaW4gPGlkcz4uICBUaGVzZQot
ICAgIG5hbWVzIGFyZSBtYXJrZWQgYXMgdXNlZCwgYnV0IG5vIG9iamVjdCBpcyBhc3NvY2lhdGVk
IHdpdGggdGhlbSB1bnRpbAotICAgIHRoZSBmaXJzdCB0aW1lIHRoZXkgYXJlIHVzZWQgYnkgQmVn
aW5RdWVyeUFOR0xFLiAgUXVlcnkgb2JqZWN0cyBjb250YWluCi0gICAgb25lIHBpZWNlIG9mIHN0
YXRlLCBhbiBpbnRlZ2VyIHJlc3VsdCB2YWx1ZS4gIFRoaXMgcmVzdWx0IHZhbHVlIGlzCi0gICAg
aW5pdGlhbGl6ZWQgdG8gemVybyB3aGVuIHRoZSBvYmplY3QgaXMgY3JlYXRlZC4gIEFueSBwb3Np
dGl2ZSBpbnRlZ2VyCi0gICAgZXhjZXB0IGZvciB6ZXJvICh3aGljaCBpcyByZXNlcnZlZCBmb3Ig
dGhlIEdMKSBpcyBhIHZhbGlkIHF1ZXJ5Ci0gICAgb2JqZWN0IG5hbWUuCi0KLSAgICBRdWVyeSBv
YmplY3RzIGFyZSBkZWxldGVkIGJ5IGNhbGxpbmcKLQotICAgICAgdm9pZCBEZWxldGVRdWVyaWVz
QU5HTEUoc2l6ZWkgbiwgY29uc3QgdWludCAqaWRzKTsKLQotICAgIDxpZHM+IGNvbnRhaW5zIDxu
PiBuYW1lcyBvZiBxdWVyeSBvYmplY3RzIHRvIGJlIGRlbGV0ZWQuICBBZnRlciBhCi0gICAgcXVl
cnkgb2JqZWN0IGlzIGRlbGV0ZWQsIGl0cyBuYW1lIGlzIGFnYWluIHVudXNlZC4gIFVudXNlZCBu
YW1lcyBpbgotICAgIDxpZHM+IGFyZSBzaWxlbnRseSBpZ25vcmVkLgotICAgIElmIGFuIGFjdGl2
ZSBxdWVyeSBvYmplY3QgaXMgZGVsZXRlZCBpdHMgbmFtZSBpbW1lZGlhdGVseSBiZWNvbWVzIHVu
dXNlZCwKLSAgICBidXQgdGhlIHVuZGVybHlpbmcgb2JqZWN0IGlzIG5vdCBkZWxldGVkIHVudGls
IGl0IGlzIG5vIGxvbmdlciBhY3RpdmUuCi0KLSAgICBBIHRpbWVyIHF1ZXJ5IGNhbiBiZSBzdGFy
dGVkIGFuZCBmaW5pc2hlZCBieSBjYWxsaW5nCi0KLSAgICAgIHZvaWQgQmVnaW5RdWVyeUFOR0xF
KGVudW0gdGFyZ2V0LCB1aW50IGlkKTsKLSAgICAgIHZvaWQgRW5kUXVlcnlBTkdMRShlbnVtIHRh
cmdldCk7Ci0KLSAgICB3aGVyZSA8dGFyZ2V0PiBpcyBUSU1FX0VMQVBTRURfQU5HTEUuICBJZiBC
ZWdpblF1ZXJ5QU5HTEUgaXMgY2FsbGVkCi0gICAgd2l0aCBhbiB1bnVzZWQgPGlkPiwgdGhhdCBu
YW1lIGlzIG1hcmtlZCBhcyB1c2VkIGFuZCBhc3NvY2lhdGVkIHdpdGgKLSAgICBhIG5ldyBxdWVy
eSBvYmplY3QuCi0gICAgCi0gICAgSWYgQmVnaW5RdWVyeUFOR0xFIGlzIGNhbGxlZCB3aXRoIGFu
IDxpZD4gb2YgemVybywgaWYgdGhlIGFjdGl2ZSBxdWVyeQotICAgIG9iamVjdCBuYW1lIGZvciA8
dGFyZ2V0PiBpcyBub24temVybywgaWYgPGlkPiBpcyB0aGUgbmFtZSBvZiBhbiBleGlzdGluZwot
ICAgIHF1ZXJ5IG9iamVjdCB3aG9zZSB0eXBlIGRvZXMgbm90IG1hdGNoIDx0YXJnZXQ+LCBvciBp
ZiA8aWQ+IGlzIHRoZSBhY3RpdmUKLSAgICBxdWVyeSBvYmplY3QgbmFtZSBmb3IgYW55IHF1ZXJ5
IHR5cGUsIHRoZSBlcnJvciBJTlZBTElEX09QRVJBVElPTiBpcwotICAgIGdlbmVyYXRlZC4gIElm
IEVuZFF1ZXJ5QU5HTEUgaXMgY2FsbGVkIHdoaWxlIG5vIHF1ZXJ5IHdpdGggdGhlIHNhbWUgdGFy
Z2V0Ci0gICAgaXMgaW4gcHJvZ3Jlc3MsIGFuIElOVkFMSURfT1BFUkFUSU9OIGVycm9yIGlzIGdl
bmVyYXRlZC4KLQotICAgIFdoZW4gQmVnaW5RdWVyeUFOR0xFIGFuZCBFbmRRdWVyeUFOR0xFIGFy
ZSBjYWxsZWQgd2l0aCBhIDx0YXJnZXQ+IG9mCi0gICAgVElNRV9FTEFQU0VEX0FOR0xFLCB0aGUg
R0wgcHJlcGFyZXMgdG8gc3RhcnQgYW5kIHN0b3AgdGhlIHRpbWVyIHVzZWQgZm9yCi0gICAgdGlt
ZXIgcXVlcmllcy4gIFRoZSB0aW1lciBpcyBzdGFydGVkIG9yIHN0b3BwZWQgd2hlbiB0aGUgZWZm
ZWN0cyBmcm9tIGFsbAotICAgIHByZXZpb3VzIGNvbW1hbmRzIG9uIHRoZSBHTCBjbGllbnQgYW5k
IHNlcnZlciBzdGF0ZSBhbmQgdGhlIGZyYW1lYnVmZmVyCi0gICAgaGF2ZSBiZWVuIGZ1bGx5IHJl
YWxpemVkLiAgVGhlIEJlZ2luUXVlcnlBTkdMRSBhbmQgRW5kUXVlcnlBTkdMRSBjb21tYW5kcwot
ICAgIG1heSByZXR1cm4gYmVmb3JlIHRoZSB0aW1lciBpcyBhY3R1YWxseSBzdGFydGVkIG9yIHN0
b3BwZWQuICBXaGVuIHRoZSB0aW1lcgotICAgIHF1ZXJ5IHRpbWVyIGlzIGZpbmFsbHkgc3RvcHBl
ZCwgdGhlIGVsYXBzZWQgdGltZSAoaW4gbmFub3NlY29uZHMpIGlzCi0gICAgd3JpdHRlbiB0byB0
aGUgY29ycmVzcG9uZGluZyBxdWVyeSBvYmplY3QgYXMgdGhlIHF1ZXJ5IHJlc3VsdCB2YWx1ZSwg
YW5kCi0gICAgdGhlIHF1ZXJ5IHJlc3VsdCBmb3IgdGhhdCBvYmplY3QgaXMgbWFya2VkIGFzIGF2
YWlsYWJsZS4KLQotICAgIElmIHRoZSBlbGFwc2VkIHRpbWUgb3ZlcmZsb3dzIHRoZSBudW1iZXIg
b2YgYml0cywgPG4+LCBhdmFpbGFibGUgdG8gaG9sZAotICAgIGVsYXBzZWQgdGltZSwgaXRzIHZh
bHVlIGJlY29tZXMgdW5kZWZpbmVkLiAgSXQgaXMgcmVjb21tZW5kZWQsIGJ1dCBub3QKLSAgICBy
ZXF1aXJlZCwgdGhhdCBpbXBsZW1lbnRhdGlvbnMgaGFuZGxlIHRoaXMgb3ZlcmZsb3cgY2FzZSBi
eSBzYXR1cmF0aW5nIGF0Ci0gICAgMl5uIC0gMS4KLQotICAgIFRoZSBuZWNlc3Nhcnkgc3RhdGUg
aXMgYSBzaW5nbGUgYml0IGluZGljYXRpbmcgd2hldGhlciBhbiB0aW1lcgotICAgIHF1ZXJ5IGlz
IGFjdGl2ZSwgdGhlIGlkZW50aWZpZXIgb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUgdGltZXIKLSAg
ICBxdWVyeSwgYW5kIGEgY291bnRlciBrZWVwaW5nIHRyYWNrIG9mIHRoZSB0aW1lIHRoYXQgaGFz
IHBhc3NlZC4KLQotICAgIFdoZW4gdGhlIGNvbW1hbmQKLQotICAgICAgICAgdm9pZCBRdWVyeUNv
dW50ZXJBTkdMRSh1aW50IGlkLCBlbnVtIHRhcmdldCk7Ci0KLSAgICBpcyBjYWxsZWQgd2l0aCA8
dGFyZ2V0PiBUSU1FU1RBTVBfQU5HTEUsIHRoZSBHTCByZWNvcmRzIHRoZSBjdXJyZW50IHRpbWUK
LSAgICBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIHF1ZXJ5IG9iamVjdC4gVGhlIHRpbWUgaXMgcmVj
b3JkZWQgYWZ0ZXIgYWxsCi0gICAgcHJldmlvdXMgY29tbWFuZHMgb24gdGhlIEdMIGNsaWVudCBh
bmQgc2VydmVyIHN0YXRlIGFuZCB0aGUgZnJhbWVidWZmZXIKLSAgICBoYXZlIGJlZW4gZnVsbHkg
cmVhbGl6ZWQuIFdoZW4gdGhlIHRpbWUgaXMgcmVjb3JkZWQsIHRoZSBxdWVyeSByZXN1bHQgZm9y
Ci0gICAgdGhhdCBvYmplY3QgaXMgbWFya2VkIGF2YWlsYWJsZS4gUXVlcnlDb3VudGVyQU5HTEUg
dGltZXIgcXVlcmllcyBjYW4gYmUKLSAgICB1c2VkIHdpdGhpbiBhIEJlZ2luUXVlcnlBTkdMRSAv
IEVuZFF1ZXJ5QU5HTEUgYmxvY2sgd2hlcmUgdGhlIDx0YXJnZXQ+IGlzCi0gICAgVElNRV9FTEFQ
U0VEX0FOR0xFIGFuZCBpdCBkb2VzIG5vdCBhZmZlY3QgdGhlIHJlc3VsdCBvZiB0aGF0IHF1ZXJ5
IG9iamVjdC4KLSAgICBUaGUgZXJyb3IgSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlm
IHRoZSA8aWQ+IGlzIGFscmVhZHkgaW4gdXNlCi0gICAgd2l0aGluIGEgQmVnaW5RdWVyeUFOR0xF
L0VuZFF1ZXJ5QU5HTEUgYmxvY2suIgotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciA2IG9mIHRoZSBP
cGVuR0wgRVMgMi4wIFNwZWNpZmljYXRpb24gKFN0YXRlIGFuZCBTdGF0ZQotUmVxdWVzdHMpCi0K
LSAgICBBZGQgYSBuZXcgc2VjdGlvbiA2LjEuOSAiVGltZXIgUXVlcmllcyI6Ci0KLSAgICAiVGhl
IGNvbW1hbmQKLQotICAgICAgYm9vbGVhbiBJc1F1ZXJ5QU5HTEUodWludCBpZCk7Ci0KLSAgICBy
ZXR1cm5zIFRSVUUgaWYgPGlkPiBpcyB0aGUgbmFtZSBvZiBhIHF1ZXJ5IG9iamVjdC4gIElmIDxp
ZD4gaXMgemVybywKLSAgICBvciBpZiA8aWQ+IGlzIGEgbm9uLXplcm8gdmFsdWUgdGhhdCBpcyBu
b3QgdGhlIG5hbWUgb2YgYSBxdWVyeQotICAgIG9iamVjdCwgSXNRdWVyeUFOR0xFIHJldHVybnMg
RkFMU0UuCi0KLSAgICBJbmZvcm1hdGlvbiBhYm91dCBhIHF1ZXJ5IHRhcmdldCBjYW4gYmUgcXVl
cmllZCB3aXRoIHRoZSBjb21tYW5kCi0KLSAgICAgIHZvaWQgR2V0UXVlcnlpdkFOR0xFKGVudW0g
dGFyZ2V0LCBlbnVtIHBuYW1lLCBpbnQgKnBhcmFtcyk7Ci0KLSAgICA8dGFyZ2V0PiBpZGVudGlm
aWVzIHRoZSBxdWVyeSB0YXJnZXQgYW5kIGNhbiBiZSBUSU1FX0VMQVBTRURfQU5HTEUgb3IKLSAg
ICBUSU1FU1RBTVBfQU5HTEUgZm9yIHRpbWVyIHF1ZXJpZXMuCi0KLSAgICBJZiA8cG5hbWU+IGlz
IENVUlJFTlRfUVVFUllfQU5HTEUsIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgYWN0aXZlIHF1
ZXJ5Ci0gICAgZm9yIDx0YXJnZXQ+LCBvciB6ZXJvIGlmIG5vIHF1ZXJ5IGlzIGFjdGl2ZSwgd2ls
bCBiZSBwbGFjZWQgaW4gPHBhcmFtcz4uCi0KLSAgICBJZiA8cG5hbWU+IGlzIFFVRVJZX0NPVU5U
RVJfQklUU19BTkdMRSwgdGhlIGltcGxlbWVudGF0aW9uLWRlcGVuZGVudCBudW1iZXIKLSAgICBv
ZiBiaXRzIHVzZWQgdG8gaG9sZCB0aGUgcXVlcnkgcmVzdWx0IGZvciA8dGFyZ2V0PiB3aWxsIGJl
IHBsYWNlZCBpbgotICAgIDxwYXJhbXM+LiAgVGhlIG51bWJlciBvZiBxdWVyeSBjb3VudGVyIGJp
dHMgbWF5IGJlIHplcm8sIGluIHdoaWNoIGNhc2UKLSAgICB0aGUgY291bnRlciBjb250YWlucyBu
byB1c2VmdWwgaW5mb3JtYXRpb24uCi0KLSAgICBGb3IgdGltZXIgcXVlcmllcyAoVElNRV9FTEFQ
U0VEX0FOR0xFIGFuZCBUSU1FU1RBTVBfQU5HTEUpLCBpZiB0aGUgbnVtYmVyCi0gICAgb2YgYml0
cyBpcyBub24temVybywgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGJpdHMgYWxsb3dlZCBpcyAzMCB3
aGljaAotICAgIHdpbGwgYWxsb3cgYXQgbGVhc3QgMSBzZWNvbmQgb2YgdGltaW5nLgotCi0gICAg
VGhlIHN0YXRlIG9mIGEgcXVlcnkgb2JqZWN0IGNhbiBiZSBxdWVyaWVkIHdpdGggdGhlIGNvbW1h
bmRzCi0KLSAgICAgIHZvaWQgR2V0UXVlcnlPYmplY3RpdkFOR0xFKHVpbnQgaWQsIGVudW0gcG5h
bWUsIGludCAqcGFyYW1zKTsKLSAgICAgIHZvaWQgR2V0UXVlcnlPYmplY3R1aXZBTkdMRSh1aW50
IGlkLCBlbnVtIHBuYW1lLCB1aW50ICpwYXJhbXMpOwotICAgICAgdm9pZCBHZXRRdWVyeU9iamVj
dGk2NHZBTkdMRSh1aW50IGlkLCBlbnVtIHBuYW1lLCBpbnQ2NCAqcGFyYW1zKTsKLSAgICAgIHZv
aWQgR2V0UXVlcnlPYmplY3R1aTY0dkFOR0xFKHVpbnQgaWQsIGVudW0gcG5hbWUsIHVpbnQ2NCAq
cGFyYW1zKTsKLQotICAgIElmIDxpZD4gaXMgbm90IHRoZSBuYW1lIG9mIGEgcXVlcnkgb2JqZWN0
LCBvciBpZiB0aGUgcXVlcnkgb2JqZWN0Ci0gICAgbmFtZWQgYnkgPGlkPiBpcyBjdXJyZW50bHkg
YWN0aXZlLCB0aGVuIGFuIElOVkFMSURfT1BFUkFUSU9OIGVycm9yIGlzCi0gICAgZ2VuZXJhdGVk
LgotCi0gICAgSWYgPHBuYW1lPiBpcyBRVUVSWV9SRVNVTFRfQU5HTEUsIHRoZW4gdGhlIHF1ZXJ5
IG9iamVjdCdzIHJlc3VsdAotICAgIHZhbHVlIGlzIHJldHVybmVkIGFzIGEgc2luZ2xlIGludGVn
ZXIgaW4gPHBhcmFtcz4uIElmIHRoZSB2YWx1ZSBpcyBzbwotICAgIGxhcmdlIGluIG1hZ25pdHVk
ZSB0aGF0IGl0IGNhbm5vdCBiZSByZXByZXNlbnRlZCB3aXRoIHRoZSByZXF1ZXN0ZWQgdHlwZSwK
LSAgICB0aGVuIHRoZSBuZWFyZXN0IHZhbHVlIHJlcHJlc2VudGFibGUgdXNpbmcgdGhlIHJlcXVl
c3RlZCB0eXBlIGlzCi0gICAgcmV0dXJuZWQuIElmIHRoZSBudW1iZXIgb2YgcXVlcnkgY291bnRl
ciBiaXRzIGZvciB0YXJnZXQgaXMgemVybywgdGhlbgotICAgIHRoZSByZXN1bHQgaXMgcmV0dXJu
ZWQgYXMgYSBzaW5nbGUgaW50ZWdlciB3aXRoIHRoZSB2YWx1ZSB6ZXJvLgotICAgIAotICAgIFRo
ZXJlIG1heSBiZSBhbiBpbmRldGVybWluYXRlIGRlbGF5IGJlZm9yZSB0aGUgYWJvdmUgcXVlcnkg
cmV0dXJucy4gSWYKLSAgICA8cG5hbWU+IGlzIFFVRVJZX1JFU1VMVF9BVkFJTEFCTEVfQU5HTEUs
IEZBTFNFIGlzIHJldHVybmVkIGlmIHN1Y2ggYSBkZWxheQotICAgIHdvdWxkIGJlIHJlcXVpcmVk
OyBvdGhlcndpc2UgVFJVRSBpcyByZXR1cm5lZC4gSXQgbXVzdCBhbHdheXMgYmUgdHJ1ZQotICAg
IHRoYXQgaWYgYW55IHF1ZXJ5IG9iamVjdCByZXR1cm5zIGEgcmVzdWx0IGF2YWlsYWJsZSBvZiBU
UlVFLCBhbGwgcXVlcmllcwotICAgIG9mIHRoZSBzYW1lIHR5cGUgaXNzdWVkIHByaW9yIHRvIHRo
YXQgcXVlcnkgbXVzdCBhbHNvIHJldHVybiBUUlVFLgotCi0gICAgUXVlcnlpbmcgdGhlIHN0YXRl
IGZvciBhIGdpdmVuIHRpbWVyIHF1ZXJ5IGZvcmNlcyB0aGF0IHRpbWVyIHF1ZXJ5IHRvCi0gICAg
Y29tcGxldGUgd2l0aGluIGEgZmluaXRlIGFtb3VudCBvZiB0aW1lLgotCi0gICAgSWYgbXVsdGlw
bGUgcXVlcmllcyBhcmUgaXNzdWVkIG9uIHRoZSBzYW1lIHRhcmdldCBhbmQgaWQgcHJpb3IgdG8g
Ci0gICAgY2FsbGluZyBHZXRRdWVyeU9iamVjdFt1XWlbNjRddkFOR0xFLCB0aGUgcmVzdWx0IHJl
dHVybmVkIHdpbGwgYWx3YXlzIGJlCi0gICAgZnJvbSB0aGUgbGFzdCBxdWVyeSBpc3N1ZWQuICBU
aGUgcmVzdWx0cyBmcm9tIGFueSBxdWVyaWVzIGJlZm9yZSB0aGUKLSAgICBsYXN0IG9uZSB3aWxs
IGJlIGxvc3QgaWYgdGhlIHJlc3VsdHMgYXJlIG5vdCByZXRyaWV2ZWQgYmVmb3JlIHN0YXJ0aW5n
Ci0gICAgYSBuZXcgcXVlcnkgb24gdGhlIHNhbWUgPHRhcmdldD4gYW5kIDxpZD4uIgotCi1FcnJv
cnMKLQotICAgIFRoZSBlcnJvciBJTlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZCBpZiBHZW5RdWVy
aWVzQU5HTEUgaXMgY2FsbGVkIHdoZXJlCi0gICAgPG4+IGlzIG5lZ2F0aXZlLgotCi0gICAgVGhl
IGVycm9yIElOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIERlbGV0ZVF1ZXJpZXNBTkdMRSBp
cyBjYWxsZWQKLSAgICB3aGVyZSA8bj4gaXMgbmVnYXRpdmUuCi0KLSAgICBUaGUgZXJyb3IgSU5W
QUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIEJlZ2luUXVlcnlBTkdMRSBpcyBjYWxsZWQK
LSAgICB3aGVuIGEgcXVlcnkgb2YgdGhlIGdpdmVuIDx0YXJnZXQ+IGlzIGFscmVhZHkgYWN0aXZl
LgotCi0gICAgVGhlIGVycm9yIElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBFbmRR
dWVyeUFOR0xFIGlzIGNhbGxlZAotICAgIHdoZW4gYSBxdWVyeSBvZiB0aGUgZ2l2ZW4gPHRhcmdl
dD4gaXMgbm90IGFjdGl2ZS4KLQotICAgIFRoZSBlcnJvciBJTlZBTElEX09QRVJBVElPTiBpcyBn
ZW5lcmF0ZWQgaWYgQmVnaW5RdWVyeUFOR0xFIGlzIGNhbGxlZAotICAgIHdoZXJlIDxpZD4gaXMg
emVyby4KLQotICAgIFRoZSBlcnJvciBJTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYg
QmVnaW5RdWVyeUFOR0xFIGlzIGNhbGxlZAotICAgIHdoZXJlIDxpZD4gaXMgdGhlIG5hbWUgb2Yg
YSBxdWVyeSBjdXJyZW50bHkgaW4gcHJvZ3Jlc3MuCi0gICAgCi0gICAgVGhlIGVycm9yIElOVkFM
SURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBCZWdpblF1ZXJ5QU5HTEUgaXMgY2FsbGVkCi0g
ICAgd2hlcmUgPGlkPiBpcyB0aGUgbmFtZSBvZiBhbiBleGlzdGluZyBxdWVyeSBvYmplY3Qgd2hv
c2UgdHlwZSBkb2VzIG5vdAotICAgIG1hdGNoIDx0YXJnZXQ+LgotCi0gICAgVGhlIGVycm9yIElO
VkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQgaWYgQmVnaW5RdWVyeUFOR0xFIG9yIEVuZFF1ZXJ5QU5H
TEUKLSAgICBpcyBjYWxsZWQgd2hlcmUgPHRhcmdldD4gaXMgbm90IFRJTUVfRUxBUFNFRF9BTkdM
RS4KLQotICAgIFRoZSBlcnJvciBJTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIEdldFF1ZXJ5
aXZBTkdMRSBpcyBjYWxsZWQgd2hlcmUKLSAgICA8dGFyZ2V0PiBpcyBub3QgVElNRV9FTEFQU0VE
X0FOR0xFIG9yIFRJTUVTVEFNUF9BTkdMRS4KLQotICAgIFRoZSBlcnJvciBJTlZBTElEX0VOVU0g
aXMgZ2VuZXJhdGVkIGlmIEdldFF1ZXJ5aXZBTkdMRSBpcyBjYWxsZWQgd2hlcmUKLSAgICA8cG5h
bWU+IGlzIG5vdCBRVUVSWV9DT1VOVEVSX0JJVFNfQU5HTEUgb3IgQ1VSUkVOVF9RVUVSWV9BTkdM
RS4KLQotICAgIFRoZSBlcnJvciBJTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGlmIFF1ZXJ5Q291
bnRlckFOR0xFIGlzIGNhbGxlZCB3aGVyZQotICAgIDx0YXJnZXQ+IGlzIG5vdCBUSU1FU1RBTVBf
QU5HTEUuCi0KLSAgICBUaGUgZXJyb3IgSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlm
IFF1ZXJ5Q291bnRlckFOR0xFIGlzIGNhbGxlZAotICAgIG9uIGEgcXVlcnkgb2JqZWN0IHRoYXQg
aXMgYWxyZWFkeSBpbiB1c2UgaW5zaWRlIGEKLSAgICBCZWdpblF1ZXJ5QU5HTEUvRW5kUXVlcnlB
TkdMRS4KLQotICAgIFRoZSBlcnJvciBJTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYg
R2V0UXVlcnlPYmplY3RpdkFOR0xFLAotICAgIEdldFF1ZXJ5T2JqZWN0dWl2QU5HTEUsIEdldFF1
ZXJ5T2JqZWN0aTY0dkFOR0xFLCBvcgotICAgIEdldFF1ZXJ5T2JqZWN0dWk2NHZBTkdMRSBpcyBj
YWxsZWQgd2hlcmUgPGlkPiBpcyBub3QgdGhlIG5hbWUgb2YgYSBxdWVyeQotICAgIG9iamVjdC4K
LQotICAgIFRoZSBlcnJvciBJTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgaWYgR2V0UXVl
cnlPYmplY3RpdkFOR0xFLAotICAgIEdldFF1ZXJ5T2JqZWN0dWl2QU5HTEUsIEdldFF1ZXJ5T2Jq
ZWN0aTY0dkFOR0xFLCBvcgotICAgIEdldFF1ZXJ5T2JqZWN0dWk2NHZBTkdMRSBpcyBjYWxsZWQg
d2hlcmUgPGlkPiBpcyB0aGUgbmFtZSBvZiBhIGN1cnJlbnRseQotICAgIGFjdGl2ZSBxdWVyeSBv
YmplY3QuCi0KLSAgICBUaGUgZXJyb3IgSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZCBpZiBHZXRR
dWVyeU9iamVjdGl2QU5HTEUsCi0gICAgR2V0UXVlcnlPYmplY3R1aXZBTkdMRSwgR2V0UXVlcnlP
YmplY3RpNjR2QU5HTEUsIG9yCi0gICAgR2V0UXVlcnlPYmplY3R1aTY0dkFOR0xFIGlzIGNhbGxl
ZCB3aGVyZSA8cG5hbWU+IGlzIG5vdAotICAgIFFVRVJZX1JFU1VMVF9BTkdMRSBvciBRVUVSWV9S
RVNVTFRfQVZBSUxBQkxFX0FOR0xFLgotCi1OZXcgU3RhdGUKLQotICAgIChBZGQgYSBuZXcgdGFi
bGUgNi54eCwgIlF1ZXJ5IE9wZXJhdGlvbnMiKQotICAgIAotICAgIEdldCBWYWx1ZSAgICAgICAg
ICAgICAgICAgICAgICBUeXBlICAgIEdldCBDb21tYW5kICAgICAgICAgICAgICBJbml0aWFsIFZh
bHVlICAgRGVzY3JpcHRpb24gICAgICAgICAgICAgIFNlYwotICAgIC0tLS0tLS0tLSAgICAgICAg
ICAgICAgICAgICAgICAtLS0tICAgIC0tLS0tLS0tLS0tICAgICAgICAgICAgICAtLS0tLS0tLS0t
LS0tICAgLS0tLS0tLS0tLS0gICAgICAgICAgICAgIC0tLS0tLQotICAgIC0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBCICAgICAgIC0gICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSAg
ICAgICAgICAgcXVlcnkgYWN0aXZlICAgICAgICAgICAgIDUuMwotICAgIENVUlJFTlRfUVVFUllf
QU5HTEUgICAgICAgICAgICBaKyAgICAgIEdldFF1ZXJ5aXZBTkdMRSAgICAgICAgICAwICAgICAg
ICAgICAgICAgYWN0aXZlIHF1ZXJ5IElEICAgICAgICAgIDUuMwotICAgIFFVRVJZX1JFU1VMVF9B
TkdMRSAgICAgICAgICAgICBaKyAgICAgIEdldFF1ZXJ5T2JqZWN0dWl2QU5HTEUsICAwICAgICAg
ICAgICAgICAgc2FtcGxlcy1wYXNzZWQgY291bnQgICAgIDUuMwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdldFF1ZXJ5T2JqZWN0dWk2NHZBTkdMRQotICAgIFFV
RVJZX1JFU1VMVF9BVkFJTEFCTEVfQU5HTEUgICBCICAgICAgIEdldFF1ZXJ5T2JqZWN0aXZBTkdM
RSAgICBGQUxTRSAgICAgICAgICAgcXVlcnkgcmVzdWx0IGF2YWlsYWJsZSAgIDUuMwotCi1OZXcg
SW1wbGVtZW50YXRpb24gRGVwZW5kZW50IFN0YXRlCi0KLSAgICAoQWRkIHRoZSBmb2xsb3dpbmcg
ZW50cnkgdG8gdGFibGUgNi4xOCk6Ci0KLSAgICBHZXQgVmFsdWUgICAgICAgICAgICAgICAgICAg
ICAgVHlwZSAgICBHZXQgQ29tbWFuZCAgICAgIE1pbmltdW0gVmFsdWUgICAgICBEZXNjcmlwdGlv
biAgICAgICAgICAgU2VjCi0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgIC0tLS0g
ICAgLS0tLS0tLS0tLS0gICAgICAtLS0tLS0tLS0tLS0tICAgICAgLS0tLS0tLS0tLS0tLS0tLSAg
ICAgIC0tLS0tLQotICAgIFFVRVJZX0NPVU5URVJfQklUU19BTkdMRSAgICAgICBaKyAgICAgIEdl
dFF1ZXJ5aXZBTkdMRSAgc2VlIDYuMS45ICAgICAgICAgIE51bWJlciBvZiBiaXRzIGluICAgICA2
LjEuOQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5IGNvdW50ZXIKLQotRXhhbXBsZXMKLQot
ICAgICgxKSBIZXJlIGlzIHNvbWUgcm91Z2ggc2FtcGxlIGNvZGUgdGhhdCBkZW1vbnN0cmF0ZXMg
dGhlIGludGVuZGVkIHVzYWdlCi0gICAgICAgIG9mIHRoaXMgZXh0ZW5zaW9uLgotCi0gICAgICAg
IEdMaW50IHF1ZXJpZXNbTl07Ci0gICAgICAgIEdMaW50IGF2YWlsYWJsZSA9IDA7Ci0gICAgICAg
IC8vIHRpbWVyIHF1ZXJpZXMgY2FuIGNvbnRhaW4gbW9yZSB0aGFuIDMyIGJpdHMgb2YgZGF0YSwg
c28gYWx3YXlzCi0gICAgICAgIC8vIHF1ZXJ5IHRoZW0gdXNpbmcgdGhlIDY0IGJpdCB0eXBlcyB0
byBhdm9pZCBvdmVyZmxvdwotICAgICAgICBHTHVpbnQ2NEFOR0xFIHRpbWVFbGFwc2VkID0gMDsK
LQotICAgICAgICAvLyBDcmVhdGUgYSBxdWVyeSBvYmplY3QuCi0gICAgICAgIGdsR2VuUXVlcmll
c0FOR0xFKE4sIHF1ZXJpZXMpOwotCi0gICAgICAgIC8vIFN0YXJ0IHF1ZXJ5IDEKLSAgICAgICAg
Z2xCZWdpblF1ZXJ5QU5HTEUoR0xfVElNRV9FTEFQU0VEX0FOR0xFLCBxdWVyaWVzWzBdKTsKLQot
ICAgICAgICAvLyBEcmF3IG9iamVjdCAxCi0gICAgICAgIC4uLi4KLQotICAgICAgICAvLyBFbmQg
cXVlcnkgMQotICAgICAgICBnbEVuZFF1ZXJ5QU5HTEUoR0xfVElNRV9FTEFQU0VEX0FOR0xFKTsK
LQotICAgICAgICAuLi4KLQotICAgICAgICAvLyBTdGFydCBxdWVyeSBOCi0gICAgICAgIGdsQmVn
aW5RdWVyeUFOR0xFKEdMX1RJTUVfRUxBUFNFRF9BTkdMRSwgcXVlcmllc1tOLTFdKTsKLQotICAg
ICAgICAvLyBEcmF3IG9iamVjdCBOCi0gICAgICAgIC4uLi4KLQotICAgICAgICAvLyBFbmQgcXVl
cnkgTgotICAgICAgICBnbEVuZFF1ZXJ5QU5HTEUoR0xfVElNRV9FTEFQU0VEX0FOR0xFKTsKLQot
ICAgICAgICAvLyBXYWl0IGZvciBhbGwgcmVzdWx0cyB0byBiZWNvbWUgYXZhaWxhYmxlCi0gICAg
ICAgIHdoaWxlICghYXZhaWxhYmxlKSB7Ci0gICAgICAgICAgICBnbEdldFF1ZXJ5T2JqZWN0aXZB
TkdMRShxdWVyaWVzW04tMV0sIEdMX1FVRVJZX1JFU1VMVF9BVkFJTEFCTEVfQU5HTEUsICZhdmFp
bGFibGUpOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IE47IGkrKykgewot
ICAgICAgICAgICAgLy8gU2VlIGhvdyBtdWNoIHRpbWUgdGhlIHJlbmRlcmluZyBvZiBvYmplY3Qg
aSB0b29rIGluIG5hbm9zZWNvbmRzLgotICAgICAgICAgICAgZ2xHZXRRdWVyeU9iamVjdHVpNjR2
QU5HTEUocXVlcmllc1tpXSwgR0xfUVVFUllfUkVTVUxUX0FOR0xFLCAmdGltZUVsYXBzZWQpOwot
Ci0gICAgICAgICAgICAvLyBEbyBzb21ldGhpbmcgdXNlZnVsIHdpdGggdGhlIHRpbWUuICBOb3Rl
IHRoYXQgY2FyZSBzaG91bGQgYmUKLSAgICAgICAgICAgIC8vIHRha2VuIHRvIHVzZSBhbGwgc2ln
bmlmaWNhbnQgYml0cyBvZiB0aGUgcmVzdWx0LCBub3QganVzdCB0aGUKLSAgICAgICAgICAgIC8v
IGxlYXN0IHNpZ25pZmljYW50IDMyIGJpdHMuCi0gICAgICAgICAgICBBZGp1c3RPYmplY3RMT0RC
YXNlZE9uRHJhd1RpbWUoaSwgdGltZUVsYXBzZWQpOwotICAgICAgICB9Ci0KLSAgICAgICAgVGhp
cyBleGFtcGxlIGlzIHN1Yi1vcHRpbWFsIGluIHRoYXQgaXQgc3RhbGxzIGF0IHRoZSBlbmQgb2Yg
ZXZlcnkKLSAgICAgICAgZnJhbWUgdG8gd2FpdCBmb3IgcXVlcnkgcmVzdWx0cy4gIElkZWFsbHks
IHRoZSBjb2xsZWN0aW9uIG9mIHJlc3VsdHMKLSAgICAgICAgd291bGQgYmUgZGVsYXllZCBvbmUg
ZnJhbWUgdG8gbWluaW1pemUgdGhlIGFtb3VudCBvZiB0aW1lIHNwZW50Ci0gICAgICAgIHdhaXRp
bmcgZm9yIHRoZSBHUFUgdG8gZmluaXNoIHJlbmRlcmluZy4KLSAgICAgICAgCi0gICAgKDIpIFRo
aXMgZXhhbXBsZSBpcyBiYXNpY2FsbHkgdGhlIHNhbWUgYXMgdGhlIGV4YW1wbGUgYWJvdmUgYnV0
IHVzZXMKLSAgICAgICAgUXVlcnlDb3VudGVyIGluc3RlYWQuCi0gICAgCi0gICAgICAgIEdMaW50
IHF1ZXJpZXNbTisxXTsKLSAgICAgICAgR0xpbnQgYXZhaWxhYmxlID0gMDsKLSAgICAgICAgLy8g
dGltZXIgcXVlcmllcyBjYW4gY29udGFpbiBtb3JlIHRoYW4gMzIgYml0cyBvZiBkYXRhLCBzbyBh
bHdheXMKLSAgICAgICAgLy8gcXVlcnkgdGhlbSB1c2luZyB0aGUgNjQgYml0IHR5cGVzIHRvIGF2
b2lkIG92ZXJmbG93Ci0gICAgICAgIEdMdWludDY0QU5HTEUgdGltZVN0YXJ0LCB0aW1lRW5kLCB0
aW1lRWxhcHNlZCA9IDA7Ci0KLSAgICAgICAgLy8gQ3JlYXRlIGEgcXVlcnkgb2JqZWN0LgotICAg
ICAgICBnbEdlblF1ZXJpZXNBTkdMRShOKzEsIHF1ZXJpZXMpOwotCi0gICAgICAgIC8vIFF1ZXJ5
IGN1cnJlbnQgdGltZXN0YW1wIDEKLSAgICAgICAgZ2xRdWVyeUNvdW50ZXJBTkdMRShxdWVyaWVz
WzBdLCBHTF9USU1FU1RBTVBfQU5HTEUpOwotCi0gICAgICAgIC8vIERyYXcgb2JqZWN0IDEKLSAg
ICAgICAgLi4uLgotCi0gICAgICAgIC8vIFF1ZXJ5IGN1cnJlbnQgdGltZXN0YW1wIE4KLSAgICAg
ICAgZ2xRdWVyeUNvdW50ZXJBTkdMRShxdWVyaWVzW04tMV0sIEdMX1RJTUVTVEFNUF9BTkdMRSk7
Ci0KLSAgICAgICAgLy8gRHJhdyBvYmplY3QgTgotICAgICAgICAuLi4uCi0KLSAgICAgICAgLy8g
UXVlcnkgY3VycmVudCB0aW1lc3RhbXAgTisxCi0gICAgICAgIGdsUXVlcnlDb3VudGVyQU5HTEUo
cXVlcmllc1tOXSwgR0xfVElNRVNUQU1QX0FOR0xFKTsKLQotICAgICAgICAvLyBXYWl0IGZvciBh
bGwgcmVzdWx0cyB0byBiZWNvbWUgYXZhaWxhYmxlCi0gICAgICAgIHdoaWxlICghYXZhaWxhYmxl
KSB7Ci0gICAgICAgICAgICBnbEdldFF1ZXJ5T2JqZWN0aXZBTkdMRShxdWVyaWVzW05dLCBHTF9R
VUVSWV9SRVNVTFRfQVZBSUxBQkxFX0FOR0xFLCAmYXZhaWxhYmxlKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGZvciAoaSA9IDA7IGkgPCBOOyBpKyspIHsKLSAgICAgICAgICAgIC8vIFNlZSBob3cg
bXVjaCB0aW1lIHRoZSByZW5kZXJpbmcgb2Ygb2JqZWN0IGkgdG9vayBpbiBuYW5vc2Vjb25kcy4K
LSAgICAgICAgICAgIGdsR2V0UXVlcnlPYmplY3R1aTY0dkFOR0xFKHF1ZXJpZXNbaV0sIEdMX1FV
RVJZX1JFU1VMVF9BTkdMRSwgJnRpbWVTdGFydCk7Ci0gICAgICAgICAgICBnbEdldFF1ZXJ5T2Jq
ZWN0dWk2NHZBTkdMRShxdWVyaWVzW2krMV0sIEdMX1FVRVJZX1JFU1VMVF9BTkdMRSwgJnRpbWVF
bmQpOwotICAgICAgICAgICAgdGltZUVsYXBzZWQgPSB0aW1lRW5kIC0gdGltZVN0YXJ0OwotCi0g
ICAgICAgICAgICAvLyBEbyBzb21ldGhpbmcgdXNlZnVsIHdpdGggdGhlIHRpbWUuICBOb3RlIHRo
YXQgY2FyZSBzaG91bGQgYmUKLSAgICAgICAgICAgIC8vIHRha2VuIHRvIHVzZSBhbGwgc2lnbmlm
aWNhbnQgYml0cyBvZiB0aGUgcmVzdWx0LCBub3QganVzdCB0aGUKLSAgICAgICAgICAgIC8vIGxl
YXN0IHNpZ25pZmljYW50IDMyIGJpdHMuCi0gICAgICAgICAgICBBZGp1c3RPYmplY3RMT0RCYXNl
ZE9uRHJhd1RpbWUoaSwgdGltZUVsYXBzZWQpOwotICAgICAgICB9Ci0KLUlzc3VlcyBmcm9tIEVY
VF90aW1lcl9xdWVyeQotCi0gICAgKDEpIFdoYXQgdGltZSBpbnRlcnZhbCBpcyBiZWluZyBtZWFz
dXJlZD8KLQotICAgIFJFU09MVkVEOiAgVGhlIHRpbWVyIHN0YXJ0cyB3aGVuIGFsbCBjb21tYW5k
cyBwcmlvciB0byBCZWdpblF1ZXJ5KCkgaGF2ZQotICAgIGJlZW4gZnVsbHkgZXhlY3V0ZWQuICBB
dCB0aGF0IHBvaW50LCBldmVyeXRoaW5nIHRoYXQgc2hvdWxkIGJlIGRyYXduIGJ5Ci0gICAgdGhv
c2UgY29tbWFuZHMgaGFzIGJlZW4gd3JpdHRlbiB0byB0aGUgZnJhbWVidWZmZXIuICBUaGUgdGlt
ZXIgc3RvcHMKLSAgICB3aGVuIGFsbCBjb21tYW5kcyBwcmlvciB0byBFbmRRdWVyeSgpIGhhdmUg
YmVlbiBmdWxseSBleGVjdXRlZC4KLQotICAgICgyKSBXaGF0IHVuaXQgb2YgdGltZSB3aWxsIHRp
bWUgaW50ZXJ2YWxzIGJlIHJldHVybmVkIGluPwotCi0gICAgUkVTT0xWRUQ6ICBOYW5vc2Vjb25k
cyAoMTBeLTkgc2Vjb25kcykuICBUaGlzIHVuaXQgb2YgbWVhc3VyZW1lbnQgYWxsb3dzCi0gICAg
Zm9yIHJlYXNvbmFibHkgYWNjdXJhdGUgdGltaW5nIG9mIGV2ZW4gc21hbGwgYmxvY2tzIG9mIHJl
bmRlcmluZwotICAgIGNvbW1hbmRzLiAgVGhlIGdyYW51bGFyaXR5IG9mIHRoZSB0aW1lciBpcyBp
bXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQuICBBCi0gICAgMzItYml0IHF1ZXJ5IGNvdW50ZXIgY2Fu
IGV4cHJlc3MgaW50ZXJ2YWxzIG9mIHVwIHRvIGFwcHJveGltYXRlbHkgNAotICAgIHNlY29uZHMu
Ci0KLSAgICAoMykgV2hhdCBzaG91bGQgYmUgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGNvdW50ZXIg
Yml0cyBmb3IgdGltZXIgcXVlcmllcz8KLQotICAgIFJFU09MVkVEOiAgMzAgYml0cywgd2hpY2gg
d2lsbCBhbGxvdyB0aW1pbmcgc2VjdGlvbnMgdGhhdCB0YWtlIHVwIHRvIDEKLSAgICBzZWNvbmQg
dG8gcmVuZGVyLgotCi0gICAgKDQpIEhvdyBhcmUgY291bnRlciByZXN1bHRzIG9mIG1vcmUgdGhh
biAzMiBiaXRzIHJldHVybmVkPwotCi0gICAgUkVTT0xWRUQ6ICBWaWEgdHdvIG5ldyBkYXRhdHlw
ZXMsIGludDY0QU5HTEUgYW5kIHVpbnQ2NEFOR0xFLCBhbmQgdGhlaXIKLSAgICBjb3JyZXNwb25k
aW5nIEdldFF1ZXJ5T2JqZWN0IGVudHJ5IHBvaW50cy4gIFRoZXNlIHR5cGVzIGhvbGQgaW50ZWdl
cgotICAgIHZhbHVlcyBhbmQgaGF2ZSBhIG1pbmltdW0gYml0IHdpZHRoIG9mIDY0LgotCi0gICAg
KDUpIFNob3VsZCB0aGUgZXh0ZW5zaW9uIG1lYXN1cmUgdG90YWwgdGltZSBlbGFwc2VkIGJldHdl
ZW4gdGhlIGZ1bGwKLSAgICAgICAgY29tcGxldGlvbiBvZiB0aGUgQmVnaW5RdWVyeSBhbmQgRW5k
UXVlcnkgY29tbWFuZHMsIG9yIGp1c3QgdGltZQotICAgICAgICBzcGVudCBpbiB0aGUgZ3JhcGhp
Y3MgbGlicmFyeT8KLQotICAgIFJFU09MVkVEOiAgVGhpcyBleHRlbnNpb24gd2lsbCBtZWFzdXJl
IHRoZSB0b3RhbCB0aW1lIGVsYXBzZWQgYmV0d2VlbgotICAgIHRoZSBmdWxsIGNvbXBsZXRpb24g
b2YgdGhlc2UgY29tbWFuZHMuICBGdXR1cmUgZXh0ZW5zaW9ucyBtYXkgaW1wbGVtZW50Ci0gICAg
YSBxdWVyeSB0byBkZXRlcm1pbmUgdGltZSBlbGFwc2VkIGF0IGRpZmZlcmVudCBzdGFnZXMgb2Yg
dGhlIGdyYXBoaWNzCi0gICAgcGlwZWxpbmUuCi0KLSAgICAoNikgSWYgbXVsdGlwbGUgcXVlcnkg
dHlwZXMgYXJlIHN1cHBvcnRlZCwgY2FuIG11bHRpcGxlIHF1ZXJ5IHR5cGVzIGJlCi0gICAgICAg
IGFjdGl2ZSBzaW11bHRhbmVvdXNseT8KLQotICAgIFJFU09MVkVEOiAgWWVzOyBhbiBhcHBsaWNh
dGlvbiBtYXkgcGVyZm9ybSBhIHRpbWVyIHF1ZXJ5IGFuZCBhbm90aGVyCi0gICAgdHlwZSBvZiBx
dWVyeSBzaW11bHRhbmVvdXNseS4gIEFuIGFwcGxpY2F0aW9uIGNhbiBub3QgcGVyZm9ybSBtdWx0
aXBsZQotICAgIHRpbWVyIHF1ZXJpZXMgb3IgbXVsdGlwbGUgcXVlcmllcyBvZiBvdGhlciB0eXBl
cyBzaW11bHRhbmVvdXNseS4gIEFuCi0gICAgYXBwbGljYXRpb24gYWxzbyBjYW4gbm90IHVzZSB0
aGUgc2FtZSBxdWVyeSBvYmplY3QgZm9yIGFub3RoZXIgcXVlcnkKLSAgICBhbmQgYSB0aW1lciBx
dWVyeSBzaW11bHRhbmVvdXNseS4KLQotICAgICg3KSBEbyBxdWVyeSBvYmplY3RzIGhhdmUgYSBx
dWVyeSB0eXBlIHBlcm1hbmVudGx5IGFzc29jaWF0ZWQgd2l0aCB0aGVtPwotCi0gICAgUkVTT0xW
RUQ6ICBOby4gIEEgc2luZ2xlIHF1ZXJ5IG9iamVjdCBjYW4gYmUgdXNlZCB0byBwZXJmb3JtIGRp
ZmZlcmVudAotICAgIHR5cGVzIG9mIHF1ZXJpZXMsIGJ1dCBub3QgYXQgdGhlIHNhbWUgdGltZS4K
LQotICAgIEhhdmluZyBhIGZpeGVkIHR5cGUgZm9yIGVhY2ggcXVlcnkgb2JqZWN0IHNpbXBsaWZp
ZXMgc29tZSBhc3BlY3RzIG9mIHRoZQotICAgIGltcGxlbWVudGF0aW9uIC0tIG5vdCBoYXZpbmcg
dG8gZGVhbCB3aXRoIHF1ZXJpZXMgd2l0aCBkaWZmZXJlbnQgcmVzdWx0Ci0gICAgc2l6ZXMsIGZv
ciBleGFtcGxlLiAgSXQgd291bGQgYWxzbyBtZWFuIHRoYXQgQmVnaW5RdWVyeSgpIHdpdGggYSBx
dWVyeQotICAgIG9iamVjdCBvZiB0aGUgIndyb25nIiB0eXBlIHdvdWxkIHJlc3VsdCBpbiBhbiBJ
TlZBTElEX09QRVJBVElPTiBlcnJvci4KLQotICAgIFVQREFURTogVGhpcyByZXNvbHV0aW9uIHdh
cyByZWxldmFudCBmb3IgRVhUX3RpbWVyX3F1ZXJ5IGFuZCBPcGVuR0wgMi4wLgotICAgIFNpbmNl
IEVYVF90cmFuc2Zvcm1fZmVlZGJhY2sgaGFzIHNpbmNlIGJlZW4gaW5jb3Jwb3JhdGVkIGludG8g
dGhlIGNvcmUsCi0gICAgdGhlIHJlc29sdXRpb24gaXMgdGhhdCBCZWdpblF1ZXJ5IHdpbGwgZ2Vu
ZXJhdGUgZXJyb3IgSU5WQUxJRF9PUEVSQVRJT04KLSAgICBpZiA8aWQ+IHJlcHJlc2VudHMgYSBx
dWVyeSBvYmplY3Qgb2YgYSBkaWZmZXJlbnQgdHlwZS4KLQotICAgICg4KSBIb3cgcHJlZGljdGFi
bGUvcmVwZWF0YWJsZSBhcmUgdGhlIHJlc3VsdHMgcmV0dXJuZWQgYnkgdGhlIHRpbWVyCi0gICAg
ICAgIHF1ZXJ5PwotCi0gICAgUkVTT0xWRUQ6ICBJbiBnZW5lcmFsLCB0aGUgYW1vdW50IG9mIHRp
bWUgbmVlZGVkIHRvIHJlbmRlciB0aGUgc2FtZQotICAgIHByaW1pdGl2ZXMgc2hvdWxkIGJlIGZh
aXJseSBjb25zdGFudC4gIEJ1dCB0aGVyZSBtYXkgYmUgbWFueSBvdGhlcgotICAgIHN5c3RlbSBp
c3N1ZXMgKGUuZy4sIGNvbnRleHQgc3dpdGNoaW5nIG9uIHRoZSBDUFUgYW5kIEdQVSwgdmlydHVh
bAotICAgIG1lbW9yeSBwYWdlIGZhdWx0cywgbWVtb3J5IGNhY2hlIGJlaGF2aW9yIG9uIHRoZSBD
UFUgYW5kIEdQVSkgdGhhdCBjYW4KLSAgICBjYXVzZSB0aW1lcyB0byB2YXJ5IHdpbGRseS4KLQot
ICAgIE5vdGUgdGhhdCBtb2Rlcm4gR1BVcyBhcmUgZ2VuZXJhbGx5IGhpZ2hseSBwaXBlbGluZWQs
IGFuZCBtYXkgYmUKLSAgICBwcm9jZXNzaW5nIGRpZmZlcmVudCBwcmltaXRpdmVzIGluIGRpZmZl
cmVudCBwaXBlbGluZSBzdGFnZXMKLSAgICBzaW11bHRhbmVvdXNseS4gIEluIHRoaXMgZXh0ZW5z
aW9uLCB0aGUgdGltZXJzIHN0YXJ0IGFuZCBzdG9wIHdoZW4gdGhlCi0gICAgQmVnaW5RdWVyeS9F
bmRRdWVyeSBjb21tYW5kcyByZWFjaCB0aGUgYm90dG9tIG9mIHRoZSByZW5kZXJpbmcgcGlwZWxp
bmUuCi0gICAgV2hhdCB0aGF0IG1lYW5zIGlzIHRoYXQgYnkgdGhlIHRpbWUgdGhlIHRpbWVyIHN0
YXJ0cywgdGhlIEdMIGRyaXZlciBvbgotICAgIHRoZSBDUFUgbWF5IGhhdmUgc3RhcnRlZCB3b3Jr
IG9uIEdMIGNvbW1hbmRzIGlzc3VlZCBhZnRlciBCZWdpblF1ZXJ5LAotICAgIGFuZCB0aGUgaGln
aGVyIHBpcGVsaW5lIHN0YWdlcyAoZS5nLiwgdmVydGV4IHRyYW5zZm9ybWF0aW9uKSBtYXkgaGF2
ZQotICAgIHN0YXJ0ZWQgYXMgd2VsbC4KLQotICAgKDkpIFdoYXQgc2hvdWxkIHRoZSBuZXcgNjQg
Yml0IGludGVnZXIgdHlwZSBiZSBjYWxsZWQ/Ci0KLSAgICBSRVNPTFZFRDogVGhlIG5ldyB0eXBl
cyB3aWxsIGJlIGNhbGxlZCBHTGludDY0QU5HTEUvR0x1aW50NjRBTkdMRS4gIFRoZSBuZXcKLSAg
ICBjb21tYW5kIHN1ZmZpeGVzIHdpbGwgYmUgaTY0IGFuZCB1aTY0LiAgVGhlc2UgbmFtZXMgY2xl
YXJseSBjb252ZXkgdGhlCi0gICAgbWluaW11bSBzaXplIG9mIHRoZSB0eXBlcy4gIFRoZXNlIHR5
cGVzIGFyZSBzaW1pbGFyIHRvIHRoZSBDOTkgc3RhbmRhcmQKLSAgICB0eXBlIGludF9sZWFzdDY0
X3QsIGJ1dCB3ZSB1c2UgbmFtZXMgc2ltaWxhciB0byB0aGUgQzk5IG9wdGlvbmFsIHR5cGUKLSAg
ICBpbnQ2NF90IGZvciBzaW1wbGljaXR5LgotCi1Jc3N1ZXMgZnJvbSBBUkJfdGltZXJfcXVlcnkK
LQotICAgKDEwKSBXaGF0IGFib3V0IHRpbGUtYmFzZWQgaW1wbGVtZW50YXRpb25zPyBUaGUgZWZm
ZWN0cyBvZiBhIGNvbW1hbmQgYXJlCi0gICAgICAgIG5vdCBjb21wbGV0ZSB1bnRpbCB0aGUgZnJh
bWUgaXMgY29tcGxldGVseSByZW5kZXJlZC4gVGltaW5nIHJlY29yZGVkCi0gICAgICAgIGJlZm9y
ZSB0aGUgZnJhbWUgaXMgY29tcGxldGUgbWF5IG5vdCBiZSB3aGF0IGRldmVsb3BlcnMgZXhwZWN0
LiBBbHNvCi0gICAgICAgIHRoZSBhbW91bnQgb2YgdGltZSBuZWVkZWQgdG8gcmVuZGVyIHRoZSBz
YW1lIHByaW1pdGl2ZXMgaXMgbm90Ci0gICAgICAgIGNvbnNpc3RlbnQsIHdoaWNoIGNvbmZsaWN0
cyB3aXRoIGlzc3VlICg4KSBhYm92ZS4gVGhlIHRpbWUgZGVwZW5kcyBvbgotICAgICAgICBob3cg
ZWFybHkgb3IgbGF0ZSBpbiB0aGUgc2NlbmUgaXQgaXMgcGxhY2VkLgotCi0gICAgUkVTT0xWRUQ6
IFRoZSBjdXJyZW50IGxhbmd1YWdlIHN1cHBvcnRzIHRpbGUtYmFzZWQgcmVuZGVyaW5nIG9rYXkg
YXMgaXQKLSAgICBpcyB3cml0dGVuLiBEZXZlbG9wZXJzIGFyZSB3YXJuZWQgdGhhdCB1c2luZyB0
aW1lcnMgb24gdGlsZS1iYXNlZAotICAgIGltcGxlbWVudGF0aW9uIG1heSBub3QgcHJvZHVjZSBy
ZXN1bHRzIHRoZXkgZXhwZWN0IHNpbmNlIHJlbmRlcmluZyBpcyBub3QKLSAgICBkb25lIGluIGEg
bGluZWFyIG9yZGVyLiBUaW1pbmcgcmVzdWx0cyBhcmUgY2FsY3VsYXRlZCB3aGVuIHRoZSBmcmFt
ZSBpcwotICAgIGNvbXBsZXRlZCBhbmQgbWF5IGRlcGVuZCBvbiBob3cgZWFybHkgb3IgbGF0ZSBp
biB0aGUgc2NlbmUgaXQgaXMgcGxhY2VkLgotICAgIAotICAgKDExKSBDYW4gdGhlIEdMIGltcGxl
bWVudGF0aW9uIHVzZSBkaWZmZXJlbnQgY2xvY2tzIHRvIGltcGxlbWVudCB0aGUKLSAgICAgICAg
VElNRV9FTEFQU0VEIGFuZCBUSU1FU1RBTVAgcXVlcmllcz8KLQotICAgUkVTT0xWRUQ6IFllcywg
dGhlIGltcGxlbWVuYXRpb24gY2FuIHVzZSBkaWZmZXJlbnQgaW50ZXJuYWwgY2xvY2tzIHRvCi0g
ICBpbXBsZW1lbnQgVElNRV9FTEFQU0VEIGFuZCBUSU1FU1RBTVAuIElmIGRpZmZlcmVudCBjbG9j
a3MgYXJlCi0gICB1c2VkIGl0IGlzIHBvc3NpYmxlIHRoZXJlIGlzIGEgc2xpZ2h0IGRpc2NyZXBh
bmN5IHdoZW4gY29tcGFyaW5nIHF1ZXJpZXMKLSAgIG1hZGUgZnJvbSBUSU1FX0VMQVBTRUQgYW5k
IFRJTUVTVEFNUDsgdGhleSBtYXkgaGF2ZSBzbGlnaHQKLSAgIGRpZmZlcmVuY2VzIHdoZW4gYm90
aCBhcmUgdXNlZCB0byBtZWFzdXJlIHRoZSBzYW1lIHNlcXVlbmNlLiBIb3dldmVyLCB0aGlzCi0g
ICBpcyB1bmxpa2VseSB0byBhZmZlY3QgcmVhbCBhcHBsaWNhdGlvbnMgc2luY2UgY29tcGFyaW5n
IHRoZSB0d28gcXVlcmllcyBpcwotICAgbm90IGV4cGVjdGVkIHRvIGJlIHVzZWZ1bC4KLQotSXNz
dWVzCi0KLSAgICAoMTIpIFdoYXQgc2hvdWxkIHdlIGNhbGwgdGhpcyBleHRlbnNpb24/Ci0KLSAg
ICBSRVNPTFZFRDogQU5HTEVfdGltZXJfcXVlcnkKLQotICAgICgxMykgV2h5IGlzIHRoaXMgZG9u
ZSBhcyBhIHNlcGFyYXRlIGV4dGVuc2lvbiBpbnN0ZWFkIG9mIGp1c3Qgc3VwcG9ydGluZwotICAg
ICAgICAgQVJCX3RpbWVyX3F1ZXJ5PwotCi0gICAgQVJCX3RpbWVyX3F1ZXJ5IGlzIHdyaXR0ZW4g
YWdhaW5zdCBPcGVuR0wgMy4yLCB3aGljaCBpbmNsdWRlcyBhIGxvdCBvZgotICAgIHRoZSByZXF1
aXJlZCBzdXBwb3J0IGZvciBkZWFsaW5nIHdpdGggcXVlcnkgb2JqZWN0cy4gTm9uZSBvZiB0aGVz
ZQotICAgIGZ1bmN0aW9ucyBvciB0b2tlbnMgZXhpc3QgaW4gT3BlbkdMIEVTLCBhbmQgYXMgc3Vj
aCBoYXZlIHRvIGJlIGFkZGVkIGluCi0gICAgdGhpcyBzcGVjaWZpY2F0aW9uLgotCi0gICAgKDE0
KSBIb3cgZG9lcyB0aGlzIGV4dGVuc2lvbiBkaWZmZXIgZnJvbSBBUkJfdGltZXJfcXVlcnk/Ci0K
LSAgICBUaGlzIGV4dGVuc2lvbiBjb250YWlucyBtb3N0IEFSQl90aW1lcl9xdWVyeSBiZWhhdmlv
ciB1bmNoYW5nZWQgYXMgd2VsbAotICAgIGFzIGEgc3Vic2V0IG9mIHRoZSBxdWVyeSBzdXBwb3J0
IHJlcXVpcmVkIHRvIHVzZSBpdCBmcm9tIHRoZSBjb3JlCi0gICAgT3BlbkdMIDMuMiBzcGVjLiBJ
dCBvbWl0cyB0aGUgZ2xHZXRJbnRlZ2VyKFRJTUVTVEFNUCkgZnVuY3Rpb25hbGl0eSB1c2VkIHRv
Ci0gICAgcXVlcnkgdGhlIGN1cnJlbnQgdGltZSBvbiB0aGUgR1BVLCBidXQgdGhlIGJlaGF2aW9y
IGZvciBhbGwgcmVtYWluaW5nCi0gICAgZnVuY3Rpb25hbGl0eSB0YWtlbiBmcm9tIEFSQl90aW1l
cl9xdWVyeSBpcyB0aGUgc2FtZS4KLSAgICAKLSAgICAoMTUpIEFyZSBxdWVyeSBvYmplY3RzIHNo
YXJlYWJsZSBiZXR3ZWVuIG11bHRpcGxlIGNvbnRleHRzPwotCi0gICAgUkVTT0xWRUQ6IE5vLiAg
UXVlcnkgb2JqZWN0cyBhcmUgbGlnaHR3ZWlnaHQgYW5kIHdlIG5vcm1hbGx5IHNoYXJlIAotICAg
IGxhcmdlIGRhdGEgYWNyb3NzIGNvbnRleHRzLiAgQWxzbywgYmVpbmcgYWJsZSB0byBzaGFyZSBx
dWVyeSBvYmplY3RzCi0gICAgYWNyb3NzIGNvbnRleHRzIGlzIG5vdCBwYXJ0aWN1bGFybHkgdXNl
ZnVsLiAgSW4gb3JkZXIgdG8gZG8gdGhlIGFzeW5jIAotICAgIHF1ZXJ5IGFjcm9zcyBjb250ZXh0
cywgYSBxdWVyeSBvbiBvbmUgY29udGV4dCB3b3VsZCBoYXZlIHRvIGJlIGZpbmlzaGVkIAotICAg
IGJlZm9yZSB0aGUgb3RoZXIgY29udGV4dCBjb3VsZCBxdWVyeSBpdC4gCi0KLVJldmlzaW9uIEhp
c3RvcnkKLQotICAgIFJldmlzaW9uIDEsIDIwMTEvMDQvMjgKLSAgICAgIC0gY29waWVkIGZyb20g
cmV2aXNpb24gOSBvZiBBUkJfdGltZXJfcXVlcnkgYW5kIHJldmlzaW9uIDcgb2YKLSAgICAgICAg
QVJCX29jY2x1c2lvbl9xdWVyeQotICAgICAgLSByZW1vdmVkIGxhbmd1YWdlIHRoYXQgd2FzIGNs
ZWFybHkgbm90IHJlbGV2YW50IHRvIEVTMgotICAgICAgLSByZWJhc2VkIGNoYW5nZXMgYWdhaW5z
dCB0aGUgT3BlbkdMIEVTIDIuMCBzcGVjaWZpY2F0aW9uCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9leHRlbnNpb25zL0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZS50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9BTkdMRV90cmFu
c2xhdGVkX3NoYWRlcl9zb3VyY2UudHh0CShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZS50
eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMTggKzAsMCBAQAotTmFtZQotCi0gICAgQU5HTEVfdHJh
bnNsYXRlZF9zaGFkZXJfc291cmNlCi0KLU5hbWUgU3RyaW5ncwotCi0gICAgR0xfQU5HTEVfdHJh
bnNsYXRlZF9zaGFkZXJfc291cmNlCi0KLUNvbnRyaWJ1dG9ycwotCi0gICAgRGFuaWVsIEtvY2gs
IFRyYW5zR2FtaW5nIEluYy4KLSAgICBHcmVnZyBUYXZhcmVzLCBHb29nbGUgSW5jLgotICAgIEtl
bm5ldGggUnVzc2VsbCwgR29vZ2xlIEluYy4KLSAgICBaaGVueWFvIE1vLCBHb29nbGUgSW5jLgot
Ci1Db250YWN0Ci0KLSAgICBaaGVueWFvIE1vLCBHb29nbGUgSW5jLiAoem1vICdhdCcgZ29vZ2xl
ICdkb3QnIGNvbSkKLQotU3RhdHVzCi0KLSAgICBJbXBsZW1lbnRlZCBpbiBBTkdMRSBFUzIKLQot
VmVyc2lvbgotCi0gICAgTGFzdCBNb2RpZmllZCBEYXRlOiBPY3RvYmVyIDUsIDIwMTEKLSAgICBB
dXRob3IgUmV2aXNpb246IDIKLQotTnVtYmVyCi0KLSAgICBPcGVuR0wgRVMgRXh0ZW5zaW9uICMx
MTMKLQotRGVwZW5kZW5jaWVzCi0KLSAgICBPcGVuR0wgRVMgMi4wIGlzIHJlcXVpcmVkLgotCi0g
ICAgVGhlIGV4dGVuc2lvbiBpcyB3cml0dGVuIGFnYWluc3QgdGhlIE9wZW5HTCBFUyAyLjAgc3Bl
Y2lmaWNhdGlvbi4KLQotT3ZlcnZpZXcKLQotICAgIFdlYkdMIHVzZXMgdGhlIEdMU0wgRVMgMi4w
IHNwZWMgb24gYWxsIHBsYXRmb3JtcywgYW5kIHRyYW5zbGF0ZXMgdGhlc2UKLSAgICBzaGFkZXJz
IHRvIHRoZSBob3N0IHBsYXRmb3JtJ3MgbmF0aXZlIGxhbmd1YWdlIChITFNMLCBHTFNMLCBhbmQg
ZXZlbiBHTFNMCi0gICAgRVMpLiBGb3IgZGVidWdnaW5nIHB1cnBvc2VzLCBpdCBpcyB1c2VmdWwg
dG8gYmUgYWJsZSB0byBleGFtaW5lIHRoZSBzaGFkZXIKLSAgICBhZnRlciB0cmFuc2xhdGlvbi4K
LQotICAgIFRoaXMgZXh0ZW5zaW9uIGFkZGVzIGEgbmV3IGZ1bmN0aW9uIHRvIHF1ZXJ5IHRoZSB0
cmFuc2xhdGVkIHNoYWRlciBzb3VyY2UsCi0gICAgYW5kIGFkZHMgYSBuZXcgZW51bSBmb3IgR2V0
U2hhZGVyaXYncyA8cG5hbWU+IHBhcmFtZXRlciB0byBxdWVyeSB0aGUKLSAgICB0cmFuc2xhdGVk
IHNoYWRlciBzb3VyY2UgbGVuZ3RoLiAKLQotSVAgU3RhdHVzCi0KLSAgICBObyBrbm93biBJUCBj
bGFpbXMuCi0KLU5ldyBUeXBlcwotCi0gICAgTm9uZQotCi1OZXcgUHJvY2VkdXJlcyBhbmQgRnVu
Y3Rpb25zCi0KLSAgICB2b2lkIEdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSh1aW50IHNo
YWRlciwgc2l6ZWkgYnVmc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplaSogbGVuZ3RoLCBjaGFyKiBzb3VyY2UpOwotCi1OZXcgVG9rZW5zCi0KLSAgICBB
Y2NlcHRlZCBieSB0aGUgPHBuYW1lPiBwYXJhbWV0ZXIgb2YgR2V0U2hhZGVyaXY6Ci0KLSAgICBU
UkFOU0xBVEVEX1NIQURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFICAgICAgICAgICAgICAweDkzQTAK
LQotQWRkaXRpb25zIHRvIENoYXB0ZXIgNiBvZiB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZpY2F0
aW9uIChTdGF0ZSBhbmQgU3RhdGUKLVJlcXVlc3RzKQotCi0gICAgQXBwZW5kIGluIHRoZSBlbmQg
b2YgdGhlIGZvdXJ0aCBwYXJhZ3JhcGggb2Ygc2VjdGlvbiA2LjEuOCAoU2hhZGVyIGFuZAotICAg
IFByb2dyYW0gUXVlcmllcyk6Ci0KLSAgICAiIElmIDxwbmFtZT4gaXMgVFJBTlNMQVRFRF9TSEFE
RVJfTEVOR1RIX0FOR0xFLCB0aGUgbGVuZ3RoIG9mIHRoZSB0cmFuc2xhdGVkCi0gICAgc291cmNl
IHN0cmluZywgaW5jbHVkaW5nIGEgbnVsbCB0ZXJtaW5hdG9yLCBpcyByZXR1cm5lZC4gSWYgbm8g
c291cmNlIGhhcwotICAgIGJlZW4gZGVmaW5lZCwgQ29tcGlsZVNoYWRlciBoYXMgbm90IGJlZW4g
Y2FsbGVkLCBvciB0aGUgdHJhbnNsYXRpb24gaGFzCi0gICAgZmFpbGVkIGZvciA8c2hhZGVyPiwg
emVybyBpcyByZXR1cm5lZC4iCi0KLSAgICBBcHBlbmQgYWZ0ZXIgdGhlIGxhc3QgcGFyYWdyYXBo
IG9mIHNlY3Rpb24gNi4xLjggKFNoYWRlciBhbmQgUHJvZ3JhbQotICAgIFF1ZXJpZXMpOgotCi0g
ICAgIlRoZSBjb21tYW5kCi0KLSAgICAgIHZvaWQgR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFO
R0xFKCB1aW50IHNoYWRlciwgc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgIHNpemVpICpsZW5ndGgs
IGNoYXIgKnNvdXJjZSApOwotCi0gICAgcmV0dXJucyBpbiA8c291cmNlPiB0aGUgc3RyaW5nIG1h
a2luZyB1cCB0aGUgdHJhbnNsYXRlZCBzb3VyY2UgY29kZSBmb3IKLSAgICB0aGUgc2hhZGVyIG9i
amVjdCA8c2hhZGVyPi4gVGhlIHN0cmluZyA8c291cmNlPiB3aWxsIGJlIG51bGwgdGVybWluYXRl
ZC4KLSAgICBUaGUgYWN0dWFsIG51bWJlciBvZiBjaGFyYWN0ZXJzIHdyaXR0ZW4gaW50byA8c291
cmNlPiwgZXhjbHVkaW5nIHRoZSBudWxsCi0gICAgdGVybWluYXRvciwgaXMgcmV0dXJuZWQgaW4g
PGxlbmd0aD4uIElmIDxsZW5ndGg+IGlzIE5VTEwsIG5vIGxlbmd0aCBpcwotICAgIHJldHVybmVk
LiBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0IG1heSBiZSB3cml0dGVuIGlu
dG8gCi0gICAgPHNvdXJjZT4sIGluY2x1ZGluZyB0aGUgbnVsbCB0ZXJtaW5hdG9yLCBpcyBzcGVj
ae+sgWVkIGJ5IDxidWZTaXplPi4gVGhlCi0gICAgc3RyaW5nIDxzb3VyY2U+IGlzIHRoZSB0cmFu
c2xhdGVkIHN0cmluZyBvZiBhIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZ3MKLSAgICBwYXNz
ZWQgdG8gdGhlIEdMIHVzaW5nIFNoYWRlclNvdXJjZS4gVGhlIGxlbmd0aCBvZiB0aGlzIHRyYW5z
bGF0ZWQgc3RyaW5nCi0gICAgaXMgZ2l2ZW4gYnkgVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xF
TkdUSF9BTkdMRSwgd2hpY2ggY2FuIGJlIHF1ZXJpZWQKLSAgICB3aXRoIEdldFNoYWRlcml2Lgot
Ci0gICAgSWYgbm8gc291cmNlIGhhcyBiZWVuIGRlZmluZWQsIENvbXBpbGVTaGFkZXIgaGFzIG5v
dCBiZWVuIGNhbGxlZCwgb3IgdGhlCi0gICAgdHJhbnNsYXRpb24gaGFzIGZhaWxlZCBmb3IgPHNo
YWRlcj4sIHplcm8gaXMgcmV0dXJuZWQgZm9yIDxsZW5ndGg+LCBhbmQKLSAgICBhbiBlbXB0eSBz
dHJpbmcgaXMgcmV0dXJuZWQgZm9yIDxzb3VyY2U+LgotCi0gICAgSWYgdGhlIHZhbHVlIG9mIFNI
QURFUl9DT01QSUxFUiBpcyBub3QgVFJVRSwgdGhlbiB0aGUgZXJyb3IgSU5WQUxJRF8tCi0gICAg
T1BFUkFUSU9OIGlzIGdlbmVyYXRlZC4iCi0KLUlzc3VlcwotCi0gICAgMSkgV2hhdCBlbnVtIHZh
bHVlIHNob3VsZCBiZSB1c2VkIGZvciBUUkFOU0xBVEVEX1NIQURFUl9TT1VSQ0VfTEVOR1RIX0FO
R0xFPwotCi0gICAgICBSRVNPTFZFRDogVGhlIGZpcnN0IGRyYWZ0IHVzZWQgYSB0ZW1wb3Jhcnkg
ZW51bSB2YWx1ZS4gVGhpcyBiZWVuIHJlcGxhY2VkCi0gICAgICB3aXRoIGEgZW51bSBhbGxvY2F0
ZWQgZnJvbSB0aGUgQU5HTEUgcmFuZ2Ugb2YgR0wgZW51bXMuIAotCi1SZXZpc2lvbiBIaXN0b3J5
Ci0KLSAgICBSZXZpc2lvbiAxLCAyMDExLzA5LzI5LCB6bW8KLSAgICAgIC0gZmlyc3QgZHJhZnQK
LSAgICBSZXZpc2lvbiAyLCAyMDExLzEwLzA1LCBkZ2tvY2gKLSAgICAgIC0gYXNzaWduZWQgZW51
bQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FR0xfQU5HTEVfZDNk
X3NoYXJlX2hhbmRsZV9jbGllbnRfYnVmZmVyLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VHTF9BTkdMRV9kM2Rfc2hhcmVfaGFuZGxlX2NsaWVu
dF9idWZmZXIudHh0CShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9leHRlbnNpb25zL0VHTF9BTkdMRV9kM2Rfc2hhcmVfaGFuZGxlX2NsaWVudF9idWZmZXIudHh0
CShub25leGlzdGVudCkKQEAgLTEsOTggKzAsMCBAQAotTmFtZQotCi0gICAgQU5HTEVfZDNkX3No
YXJlX2hhbmRsZV9jbGllbnRfYnVmZmVyCi0KLU5hbWUgU3RyaW5ncwotCi0gICAgRUdMX0FOR0xF
X2QzZF9zaGFyZV9oYW5kbGVfY2xpZW50X2J1ZmZlcgotCi1Db250cmlidXRvcnMKLQotICAgIEpv
aG4gQmF1bWFuCi0gICAgQWxhc3RhaXIgUGF0cmljawotICAgIERhbmllbCBLb2NoCi0KLUNvbnRh
Y3RzCi0KLSAgICBKb2huIEJhdW1hbiwgR29vZ2xlIEluYy4gKGpiYXVtYW4gJ2F0JyBjaHJvbWl1
bS5vcmcpCi0KLVN0YXR1cwotCi0gICAgQ29tcGxldGUKLSAgICBJbXBsZW1lbnRlZCAoQU5HTEUg
cjY1MCkKLQotVmVyc2lvbgotCi0gICAgVmVyc2lvbiAzLCBNYXkgMTIsIDIwMTEKLQotTnVtYmVy
Ci0KLSAgICBFR0wgRXh0ZW5zaW9uICM/PwotCi1EZXBlbmRlbmNpZXMKLQotICAgIFJlcXVpcmVz
IHRoZSBFR0xfQU5HTEVfc3VyZmFjZV9kM2RfdGV4dHVyZV8yZF9zaGFyZV9oYW5kbGUgZXh0ZW5z
aW9uLgotCi0gICAgVGhpcyBleHRlbnNpb24gaXMgd3JpdHRlbiBhZ2FpbnN0IHRoZSB3b3JkaW5n
IG9mIHRoZSBFR0wgMS40Ci0gICAgU3BlY2lmaWNhdGlvbi4KLQotT3ZlcnZpZXcKLQotICAgIFRo
aXMgZXh0ZW5zaW9uIGFsbG93cyBjcmVhdGluZyBFR0wgc3VyZmFjZXMgZnJvbSBoYW5kbGVzIHRv
IHRleHR1cmVzCi0gICAgc2hhcmVkIGZyb20gdGhlIERpcmVjdDNEIEFQSSBvciBmcm9tCi0gICAg
RUdMX0FOR0xFX3N1cmZhY2VfdGV4dHVyZV8yZF9zaGFyZV9oYW5kbGUuCi0KLU5ldyBUeXBlcwot
Ci0gICAgTm9uZQotCi1OZXcgUHJvY2VkdXJlcyBhbmQgRnVuY3Rpb25zCi0KLSAgICBOb25lCi0K
LU5ldyBUb2tlbnMKLQotICAgIEFjY2VwdGVkIGluIHRoZSA8YnVmdHlwZT4gcGFyYW1ldGVyIG9m
IGVnbENyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyOgotCi0gICAgICAgIEVHTF9EM0RfVEVY
VFVSRV8yRF9TSEFSRV9IQU5ETEVfQU5HTEUgICAgICAgICAgICAweDMyMDAKLQotQWRkaXRpb25z
IHRvIENoYXB0ZXIgMyBvZiB0aGUgRUdMIDEuNCBTcGVjaWZpY2F0aW9uIChFR0wgRnVuY3Rpb25z
IGFuZCBFcnJvcnMpCi0KLSAgICBSZXBsYWNlIHRoZSBsYXN0IHNlbnRlbmNlIG9mIHBhcmFncmFw
aCAxIG9mIFNlY3Rpb24gMy41LjMgd2l0aCB0aGUKLSAgICBmb2xsb3dpbmcgdGV4dC4KLSAgICAi
Q3VycmVudGx5LCB0aGUgb25seSBjbGllbnQgQVBJIHJlc291cmNlcyB3aGljaCBtYXkgYmUgYm91
bmQgaW4gdGhpcwotICAgIGZhc2hpb24gYXJlIE9wZW5WRyBWR0ltYWdlIG9iamVjdHMgYW5kIERp
cmVjdDNEIHNoYXJlIGhhbmRsZXMuIgotCi0gICAgUmVwbGFjZSB0aGUgbGFzdCBzZW50ZW5jZSBv
ZiBwYXJhZ3JhcGggMiAoIlRvIGJpbmQgYSBjbGllbnQgQVBJLi4uIikgb2YKLSAgICBTZWN0aW9u
IDMuNS4zIHdpdGggdGhlIGZvbGxvd2luZyB0ZXh0LgotICAgICJXaGVuIDxidWZ0eXBlPiBpcyBF
R0xfT1BFTlZHX0lNQUdFLCB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgcGJ1ZmZlcgotICAg
IGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIDxidWZmZXI+LiBXaGVu
IDxidWZ0eXBlPiBpcwotICAgIEVHTF9EM0RfVEVYVFVSRV8yRF9TSEFSRV9IQU5ETEVfQU5HTEUs
IHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBzcGVjaWZpZWQKLSAgICB1c2luZyBFR0xfV0lEVEgg
YW5kIEVHTF9IRUlHSFQsIG9yIGVsc2UgdGhleSBkZWZhdWx0IHRvIHplcm8uIFRoZSB3aWR0aAot
ICAgIGFuZCBoZWlnaHQgbXVzdCBtYXRjaCB0aGUgZGltZW5zaW9ucyBvZiB0aGUgdGV4dHVyZSB3
aGljaCB0aGUgc2hhcmUgaGFuZGxlIAotICAgIHdhcyBjcmVhdGVkIGZyb20gb3IgZWxzZSBhbiBF
R0xfQkFEX0FMTE9DIGVycm9yIGlzIGdlbmVyYXRlZC4iCi0KLSAgICBSZXBsYWNlIHRoZSB0aGly
ZCBwYXJhZ3JhcGggb2YgU2VjdGlvbiAzLjUuMyB3aXRoIHRoZSBmb2xsb3dpbmcgdGV4dC4KLSAg
ICAiPGJ1ZnR5cGU+IHNwZWNpZmllcyB0aGUgdHlwZSBvZiBidWZmZXIgdG8gYmUgYm91bmQuIFRo
ZSBvbmx5IGFsbG93ZWQgdmFsdWVzCi0gICAgb2YgPGJ1ZnR5cGU+IGFyZSBFR0xfT1BFTlZHX0lN
QUdFIGFuZAotICAgIEVHTF9EM0RfVEVYVFVSRV8yRF9TSEFSRV9IQU5ETEVfQU5HTEUiLgotCi0g
ICAgQXBwZW5kIHRoZSBmb2xsb3dpbmcgdGV4dCB0byB0aGUgZm91cnRoIHBhcmFncmFwaCBvZiBT
ZWN0aW9uIDMuNS4zLgotICAgICJXaGVuIDxidWZ0eXBlPiBpcyBFR0xfRDNEX1RFWFRVUkVfMkRf
U0hBUkVfSEFORExFX0FOR0xFLCA8YnVmZmVyPiBtdXN0IGJlCi0gICAgYSB2YWxpZCBEM0Qgc2hh
cmUgaGFuZGxlLCBjYXN0IGludG8gdGhlIHR5cGUgRUdMQ2xpZW50QnVmZmVyLiBUaGUgaGFuZGxl
Ci0gICAgbWF5IGJlIG9idGFpbmVkIGZyb20gdGhlIERpcmVjdDNEOUV4IENyZWF0ZVRleHR1cmUg
ZnVuY3Rpb24sIGZyb20gRFhHSSdzCi0gICAgR2V0U2hhcmVkSGFuZGxlIG1ldGhvZCBvbiBhbiBJ
RDNEMTBUZXh0dXJlMkQsIG9yIGZyb20gdGhlCi0gICAgRUdMX0FOR0xFX3N1cmZhY2VfZDNkX3Rl
eHR1cmVfMmRfc2hhcmVfaGFuZGxlIGV4dGVuc2lvbi4iCi0KLUlzc3VlcwotCi1SZXZpc2lvbiBI
aXN0b3J5Ci0KLSAgICBWZXJzaW9uIDMsIDIwMTEvMDUvMTIKLSAgICAgIC0gcHVibGlzaAotCi0g
ICAgVmVyc2lvbiAyLCAyMDExLzA1LzAzCi0gICAgICAtIHNwZWNpZnkgRUdMX0QzRF9URVhUVVJF
XzJEX1NIQVJFX0hBTkRMRQotICAgICAgLSBzcGVjaWZ5IGVycm9yIGlmIGRpbWVuc2lvbnMgZG9u
J3QgbWF0Y2gKLQotICAgIFZlcnNpb24gMSwgMjAxMS8wNC8xMiAtIGZpcnN0IGRyYWZ0LgpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FR0xfQU5HTEVfZGV2aWNlX2Qz
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9F
R0xfQU5HTEVfZGV2aWNlX2QzZC50eHQJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRUdMX0FOR0xFX2RldmljZV9kM2QudHh0CShub25leGlz
dGVudCkKQEAgLTEsOTMgKzAsMCBAQAotTmFtZQotCi0gICAgQU5HTEVfZGV2aWNlX2QzZAotCi1O
YW1lIFN0cmluZ3MKLQotICAgIEVHTF9BTkdMRV9kZXZpY2VfZDNkCi0KLUNvbnRyaWJ1dG9ycwot
Ci0gICAgSmFtaWUgTWFkaWxsICAoam1hZGlsbCAnYXQnIGdvb2dsZS5jb20pCi0KLUNvbnRhY3QK
LQotICAgIEphbWllIE1hZGlsbCAgKGptYWRpbGwgJ2F0JyBnb29nbGUuY29tKQotCi1TdGF0dXMK
LQotICAgIERyYWZ0Ci0KLVZlcnNpb24KLQotICAgIFZlcnNpb24gMSwgTWFyIDI1LCAyMDE1Ci0K
LU51bWJlcgotCi0gICAgRUdMIEV4dGVuc2lvbiAjWFhYCi0KLUV4dGVuc2lvbiBUeXBlCi0KLSAg
ICBFR0wgZGV2aWNlIGV4dGVuc2lvbgotCi1EZXBlbmRlbmNpZXMKLQotICAgIFRoaXMgZXh0ZW5z
aW9uIGlzIHdyaXR0ZW4gYWdhaW5zdCB0aGUgbGFuZ3VhZ2Ugb2YgRUdMIDEuNSBhcwotICAgIG1v
ZGlmaWVkIGJ5IEVHTF9FWFRfZGV2aWNlX3F1ZXJ5LgotCi0gICAgRUdMX0VYVF9kZXZpY2VfcXVl
cnkgaXMgcmVxdWlyZWQuCi0KLU92ZXJ2aWV3Ci0KLSAgICBBTkdMRSBoYXMgdGhlIGFiaWxpdHkg
dG8gcnVuIEdQVSBjb21tYW5kcyBvbiBhIG5hdGl2ZSBEM0QgZGV2aWNlLgotICAgIFRoaXMgZXh0
ZW5zaW9uIGRlZmluZXMgYSBtYXBwaW5nIGZyb20gYW4gRUdMIGRldmljZSB0byBhIEQzRAotICAg
IGRldmljZSwgYWZ0ZXIgaXQncyBxdWVyaWVkIGZyb20gYW4gRUdMIGRpc3BsYXkuCi0KLUlQIFN0
YXR1cwotCi0gICAgTm8ga25vd24gY2xhaW1zLgotCi1OZXcgVHlwZXMKLQotICAgIE5vbmUuCi0K
LU5ldyBQcm9jZWR1cmVzIGFuZCBGdW5jdGlvbnMKLQotICAgIE5vbmUuCi0KLU5ldyBUb2tlbnMK
LQotICAgIEFjY2VwdGVkIGFzIGEgcXVlcmllZCA8YXR0cmlidXRlPiBpbiBlZ2xRdWVyeURldmlj
ZUF0dHJpYkVYVDoKLQotICAgICAgICBFR0xfRDNEOV9ERVZJQ0VfQU5HTEUgICAgICAgICAgICAg
IDB4MzNBMAotICAgICAgICBFR0xfRDNEMTFfREVWSUNFX0FOR0xFICAgICAgICAgICAgIDB4MzNB
MQotCi1BZGQgYSBuZXcgc2VjdGlvbiAyLjEuMyAoRDNEIERldmljZXMpIGFmdGVyIDIuMS4yIChE
ZXZpY2VzKQotCi0gICAgU29tZXdoYXQgYW5hbG9nb3VzIHRvIGFuIEVHTCBkZXZpY2UsIGEgRDNE
IGRldmljZSBlc3RhYmxpc2hlcyBhCi0gICAgbmFtZXNwYWNlIGZvciBEM0Qgb3BlcmF0aW9ucy4g
SW4gdGhlIEQzRCBBUElzLCBzdWNoIGRldmljZXMgYXJlCi0gICAgcmVwcmVzZW50ZWQgYnkgcG9p
bnRlcnMuIEZvciBtb3JlIGRldGFpbHMsIHNlZSB0aGUgRDNECi0gICAgZG9jdW1lbnRhdGlvbi4K
LQotQ2hhbmdlcyB0byBzZWN0aW9uIDMuMiAoRGV2aWNlcykKLQotICAgIFJlcGxhY2UgdGhlIHBh
cmFncmFwaCBpbW1lZGlhdGVseSBmb2xsb3dpbmcgdGhlIHByb3RvdHlwZSBmb3IKLSAgICBlZ2xR
dWVyeURldmljZUF0dHJpYkVYVDoKLQotICAgIDxhdHRyaWJ1dGU+IG1heSBiZSBlaXRoZXIgRUdM
X0QzRDlfREVWSUNFX0FOR0xFIG9yIEVHTF9EM0QxMV9ERVZJQ0VfQU5HTEUuCi0gICAgT24gc3Vj
Y2VzcywgRUdMX1RSVUUgaXMgcmV0dXJuZWQsIGFuZCBhIHZhbGlkIEQzRDkgb3IgRDNEMTEgZGV2
aWNlIHBvaW50ZXIKLSAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSBFR0wgZGV2aWNlIGlzIHJldHVy
bmVkIGluIDx2YWx1ZT4uIFRoaXMgaGFuZGxlCi0gICAgaXMgY29tcGF0aWJsZSB3aXRoIEQzRCBB
UEkgZnVuY3Rpb25zLiBJZiB0aGUgRUdMIGRldmljZSBpcyBub3QgY3VycmVudGx5Ci0gICAgYXNz
b2NpYXRlZCB3aXRoIGEgRDNEOSBkZXZpY2UgYW5kIDxhdHRyaWJ1dGU+IGlzIEVHTF9EM0Q5X0RF
VklDRV9BTkdMRSwKLSAgICBvciBpZiB0aGUgRUdMIGRldmljZSBpcyBub3QgY3VycmVudGx5IGFz
c29jaWF0ZWQgd2l0aCBhIEQzRDExIGRldmljZSBhbmQKLSAgICA8YXR0cmlidXRlPiBpcyBFR0xf
RDNEMTFfREVWSUNFX0FOR0xFLCBFR0xfQkFEX0FUVFJJQlVURSBpcyByZXR1cm5lZCwKLSAgICBh
bmQgPHZhbHVlPiBpcyBsZWZ0IHVuY2hhbmdlZC4KLQotSXNzdWVzCi0KLSAgICBOb25lCi0KLVJl
dmlzaW9uIEhpc3RvcnkKLQotICAgIFZlcnNpb24gMSwgTWFyIDI1LCAyMDE1IChKYW1pZSBNYWRp
bGwpCi0gICAgICAgIC0gSW5pdGlhbCBEcmFmdApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvZXh0ZW5zaW9ucy9FR0xfQU5HTEVfZGlyZWN0M2RfZGlzcGxheS50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FR0xfQU5HTEVfZGlyZWN0M2Rf
ZGlzcGxheS50eHQJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L2V4dGVuc2lvbnMvRUdMX0FOR0xFX2RpcmVjdDNkX2Rpc3BsYXkudHh0CShub25leGlzdGVudCkK
QEAgLTEsNjggKzAsMCBAQAotTmFtZQotCi0gICAgQU5HTEVfZGlyZWN0M2RfZGlzcGxheQotCi1O
YW1lIFN0cmluZ3MKLQotICAgIEVHTF9BTkdMRV9kaXJlY3QzZF9kaXNwbGF5Ci0KLUNvbnRyaWJ1
dG9ycwotCi0gICAgTmljb2xhcyBDYXBlbnMKLSAgICBTaGFubm9uIFdvb2RzCi0KLUNvbnRhY3Rz
Ci0KLSAgICBTaGFubm9uIFdvb2RzLCBHb29nbGUgSW5jLiAoc2hhbm5vbndvb2RzICdhdCcgY2hy
b21pdW0ub3JnKQotCi1TdGF0dXMKLQotICAgIEluIHByb2dyZXNzCi0KLVZlcnNpb24KLQotICAg
IFZlcnNpb24gMSwgTWF5IDE1LCAyMDEzCi0KLU51bWJlcgotCi0gICAgRUdMIEV4dGVuc2lvbiAj
Pz8KLQotRGVwZW5kZW5jaWVzCi0KLSAgICBUaGlzIGV4dGVuc2lvbiBpcyB3cml0dGVuIGFnYWlu
c3QgdGhlIHdvcmRpbmcgb2YgdGhlIEVHTCAxLjQKLSAgICBTcGVjaWZpY2F0aW9uLiAKLQotT3Zl
cnZpZXcKLQotICAgIFRoaXMgZXh0ZW5zaW9uIGFsbG93cyBmb3Igc3BlY2lmeWluZyB0aGUgYmVo
YXZpb3Igb2YgdGhlIHJlbmRlcmVyIGJhY2tpbmcgdGhlIGRpc3BsYXkuCi0KLU5ldyBUeXBlcwot
Ci0gICAgTm9uZQotCi1OZXcgUHJvY2VkdXJlcyBhbmQgRnVuY3Rpb25zCi0KLSAgICBOb25lCi0K
LU5ldyBUb2tlbnMKLQotICAgIEVHTF9EM0QxMV9FTFNFX0QzRDlfRElTUExBWV9BTkdMRSAgICAg
ICAgIChFR0xOYXRpdmVEaXNwbGF5VHlwZSktMgotICAgIEVHTF9EM0QxMV9PTkxZX0RJU1BMQVlf
QU5HTEUgICAgICAgICAgICAgIChFR0xOYXRpdmVEaXNwbGF5VHlwZSktMwotCi1BZGRpdGlvbnMg
dG8gQ2hhcHRlciAzIG9mIHRoZSBFR0wgMS40IFNwZWNpZmljYXRpb24gKEVHTCBGdW5jdGlvbnMg
YW5kIEVycm9ycykKLQotICAgIEFkZCBiZWZvcmUgdGhlIGxhc3Qgc2VudGVuY2Ugb2YgdGhlIGZp
cnN0IHBhcmFncmFwaCBvZiBzZWN0aW9uIDMuMiwKLSAgICAiSW5pdGlhbGl6YXRpb24iOgotCi0g
ICAgIklmIDxkaXNwbGF5X2lkPiBpcyBFR0xfRDNEMTFfRUxTRV9EM0Q5X0RJU1BMQVlfQU5HTEUs
IHRoZSBkaXNwbGF5IHJldHVybmVkCi0gICAgd2lsbCBiZSBiYWNrZWQgYnkgYSBEaXJlY3QzRCAx
MSByZW5kZXJlciBpZiBvbmUgaXMgYXZhaWxhYmxlLCBvciBieSBhCi0gICAgRGlyZWN0M0QgOSBy
ZW5kZXJlciBvdGhlcndpc2UuIElmIDxkaXNwbGF5X2lkPiBpcyBFR0xfRDNEMTFfT05MWV9ESVNQ
TEFZX0FOR0xFLAotICAgIHRoZSBkaXNwbGF5IHJldHVybmVkIHdpbGwgYmUgYmFja2VkIGJ5IGEg
RGlyZWN0M0QgMTEgcmVuZGVyZXIgaWYgb25lIGlzCi0gICAgYXZhaWxhYmxlLCBvciB3aWxsIHJl
dHVybiBOVUxMIG90aGVyd2lzZS4iCi0KLUlzc3VlcwotCi1SZXZpc2lvbiBIaXN0b3J5Ci0KLSAg
ICBWZXJzaW9uIDEsIDIwMTMvMDUvMTUgLSBGaXJzdCBkcmFmdC4KLQpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FR0xfQU5HTEVfcXVlcnlfc3VyZmFjZV9wb2ludGVy
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VH
TF9BTkdMRV9xdWVyeV9zdXJmYWNlX3BvaW50ZXIudHh0CShyZXZpc2lvbiAyMDgwMjEpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VHTF9BTkdMRV9xdWVyeV9zdXJmYWNl
X3BvaW50ZXIudHh0CShub25leGlzdGVudCkKQEAgLTEsODggKzAsMCBAQAotTmFtZQotCi0gICAg
QU5HTEVfcXVlcnlfc3VyZmFjZV9wb2ludGVyCi0KLU5hbWUgU3RyaW5ncwotCi0gICAgRUdMX0FO
R0xFX3F1ZXJ5X3N1cmZhY2VfcG9pbnRlcgotCi1Db250cmlidXRvcnMKLQotICAgIFZsYWRpbWly
IFZ1a2ljZXZpYwotICAgIERhbmllbCBLb2NoCi0KLUNvbnRhY3RzCi0KLSAgICBWbGFkaW1pciBW
dWtpY2V2aWMgKHZsYWRpbWlyICdhdCcgcG9ib3guY29tKQotCi1TdGF0dXMKLQotICAgIENvbXBs
ZXRlCi0gICAgSW1wbGVtZW50ZWQgKEFOR0xFIHI1NTgpCi0KLVZlcnNpb24KLQotICAgIFZlcnNp
b24gMywgRmVicnVhcnkgMTEsIDIwMTEKLQotTnVtYmVyCi0KLSAgICBFR0wgRXh0ZW5zaW9uICMy
OAotCi1EZXBlbmRlbmNpZXMKLQotICAgIFRoaXMgZXh0ZW5zaW9uIGlzIHdyaXR0ZW4gYWdhaW5z
dCB0aGUgd29yZGluZyBvZiB0aGUgRUdMIDEuNAotICAgIFNwZWNpZmljYXRpb24uIAotCi1PdmVy
dmlldwotCi0gICAgVGhpcyBleHRlbnNpb24gYWxsb3dzIHF1ZXJ5aW5nIHBvaW50ZXItc2l6ZWQg
c3VyZmFjZSBhdHRyaWJ1dGVzLAotICAgIHRodXMgYXZvaWRpbmcgcHJvYmxlbXMgd2l0aCBjb2Vy
Y2luZyA2NC1iaXQgcG9pbnRlcnMgaW50byBhIDMyLWJpdAotICAgIGludGVnZXIuCi0KLU5ldyBU
eXBlcwotCi0gICAgTm9uZQotCi1OZXcgUHJvY2VkdXJlcyBhbmQgRnVuY3Rpb25zCi0KLSAgICBF
R0xCb29sZWFuIGVnbFF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRSgKLSAgICAgICAgICAgICAgICAg
ICAgICAgIEVHTERpc3BsYXkgZHB5LAotICAgICAgICAgICAgICAgICAgICAgICAgRUdMU3VyZmFj
ZSBzdXJmYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGF0dHJpYnV0ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKip2YWx1ZSk7Ci0KLU5ldyBUb2tlbnMKLQotICAg
IE5vbmUKLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgMyBvZiB0aGUgRUdMIDEuNCBTcGVjaWZpY2F0
aW9uIChFR0wgRnVuY3Rpb25zIGFuZCBFcnJvcnMpCi0KLSAgICBBZGQgdG8gdGhlIGVuZCBvZiB0
aGUgcGFyYWdyYXBoIHN0YXJ0aW5nIHdpdGggIlRvIHF1ZXJ5IGFuCi0gICAgYXR0cmlidXRlIGFz
c29jaWF0ZWQgd2l0aCBhbiBFR0xTdXJmYWNlIiBpbiBzZWN0aW9uIDMuNS42LAotICAgICJTdXJm
YWNlIEF0dHJpYnV0ZXMiOgotCi0gICAgIklmIHRoZSBhdHRyaWJ1dGUgdHlwZSBpbiB0YWJsZSAz
LjUgaXMgJ3BvaW50ZXInLCB0aGVuCi0gICAgZWdsUXVlcnlTdXJmYWNlIHJldHVybnMgRUdMX0ZB
TFNFIGFuZCBhbiBFR0xfQkFEX1BBUkFNRVRFUiBlcnJvcgotICAgIGlzIGdlbmVyYXRlZC4gIFRv
IHF1ZXJ5IHBvaW50ZXIgYXR0cmlidXRlcywgY2FsbDoKLQotICAgICAgICAgRUdMQm9vbGVhbiBl
Z2xRdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVHTERpc3BsYXkgZHB5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xTdXJmYWNl
IHN1cmZhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBhdHRyaWJ1dGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKip2YWx1ZSk7Ci0KLSAgICAgZWds
UXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFIGJlaGF2ZXMgaWRlbnRpY2FsbHkgdG8gZWdsUXVlcnlT
dXJmYWNlLAotICAgICBleGNlcHQgdGhhdCBvbmx5IGF0dHJpYnV0ZXMgb2YgdHlwZSAncG9pbnRl
cicgY2FuIGJlIHF1ZXJpZWQuCi0gICAgIElmIGFuIGF0dHJpYnV0ZSBxdWVyaWVkIHZpYSBlZ2xR
dWVyeVN1cmZhY2VQb2ludGVyQU5HTEUgaXMgbm90Ci0gICAgIG9mIHR5cGUgJ3BvaW50ZXInLCB0
aGVuIGVnbFF1ZXJ5U3VyZmFjZVBvaW50ZXIgcmV0dXJucyBFR0xfRkFMU0UKLSAgICAgYW5kIGFu
IEVHTF9CQURfUEFSQU1FVEVSIGVycm9yIGlzIGdlbmVyYXRlZC4iCi0KLUlzc3VlcwotCi1SZXZp
c2lvbiBIaXN0b3J5Ci0KLSAgICBWZXJzaW9uIDMsIDIwMTEvMDIvMTEgLSBwdWJsaXNoCi0KLSAg
ICBWZXJzaW9uIDIsIDIwMTAvMTIvMjEgLSBmaXggdHlwb3MuCi0KLSAgICBWZXJzaW9uIDEsIDIw
MTAvMTIvMDcgLSBmaXJzdCBkcmFmdC4KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4
dGVuc2lvbnMvRUdMX0FOR0xFX3JvYnVzdF9yZXNvdXJjZV9pbml0aWFsaXphdGlvbi50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FR0xfQU5HTEVf
cm9idXN0X3Jlc291cmNlX2luaXRpYWxpemF0aW9uLnR4dAkocmV2aXNpb24gMjA4MDIxKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FR0xfQU5HTEVfcm9idXN0X3Jlc291
cmNlX2luaXRpYWxpemF0aW9uLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDgwICswLDAgQEAKLU5h
bWUKLQotICAgIEVHTF9BTkdMRV9yb2J1c3RfcmVzb3VyY2VfaW5pdGlhbGl6YXRpb24udHh0Ci0K
LU5hbWUgU3RyaW5ncwotCi0gICAgRUdMX0FOR0xFX3JvYnVzdF9yZXNvdXJjZV9pbnRpYWxpemF0
aW9uCi0KLUNvbnRyaWJ1dG9ycwotCi0gICAgR2VvZmYgTGFuZywgR29vZ2xlCi0gICAgS2VuIFJ1
c3NlbGwsIEdvb2dsZQotCi1Db250YWN0cwotCi0gICAgU2hhbm5vbiBXb29kcywgR29vZ2xlIChz
aGFubm9ud29vZHMgJ2F0JyBnb29nbGUuY29tKQotCi1TdGF0dXMKLQotICAgIERyYWZ0Ci0KLVZl
cnNpb24KLQotICAgIFZlcnNpb24gMSwgSmFudWFyeSA3LCAyMDE1Ci0KLU51bWJlcgotCi0gICAg
RUdMIEV4dGVuc2lvbiBUQkQKLQotRGVwZW5kZW5jaWVzCi0KLSAgICBUaGlzIGV4dGVuc2lvbiBp
cyB3cml0dGVuIGFnYWluc3QgdGhlIHdvcmRpbmcgb2YgdGhlIEVHTCAxLjUKLSAgICBzcGVjaWZp
Y2F0aW9uLgotCi0gICAgQW4gT3BlbkdMIEVTIGltcGxlbWVudGF0aW9uIHN1cHBvcnRpbmcgQU5H
TEVfcm9idXN0X3Jlc291cmNlX2luaXRpYWxpemF0aW9uCi0gICAgb3IgYW4gaW1wbGVtZW50YXRp
b24gc3VwcG9ydGluZyBlcXVpdmFsZW50IGZ1bmN0aW9uYWxpdHkgaXMgcmVxdWlyZWQuCi0KLU92
ZXJ2aWV3Ci0KLSAgICBUaGlzIGV4dGVuc2lvbiBhbGxvd3MgY3JlYXRpbmcgYW4gT3BlbkdMIEVT
IGNvbnRleHQgc3VwcG9ydGluZwotICAgIHJvYnVzdCByZXNvdXJjZSBpbml0aWFsaXphdGlvbi4K
LQotTmV3IFR5cGVzCi0KLSAgICBOb25lCi0KLU5ldyBQcm9jZWR1cmVzIGFuZCBGdW5jdGlvbnMK
LQotICAgIE5vbmUKLQotTmV3IFRva2VucwotCi0gICAgQWNjZXB0ZWQgYXMgYW4gYXR0cmlidXRl
IG5hbWUgaW4gdGhlIDwqYXR0cmliX2xpc3Q+IGFyZ3VtZW50IHRvCi0gICAgZWdsQ3JlYXRlQ29u
dGV4dDoKLQotICAgICAgICBFR0xfQ09OVEVYVF9PUEVOR0xfUk9CVVNUX1JFU09VUkNFX0lOSVRJ
QUxJWkFUSU9OX0FOR0xFICAgIDB4MzIwRgotCi1BZGRpdGlvbnMgdG8gdGhlIEVHTCAxLjUgU3Bl
Y2lmaWNhdGlvbgotCi0gICAgQWRkIGEgbmV3IHNlY3Rpb24gZW50aXRsZWQgIk9wZW5HTCBFUyBS
b2J1c3QgUmVzb3VyY2UgSW5pdGlhbGl6YXRpb24iCi0gICAgdG8gc2VjdGlvbiAzLjcuMToKLQot
ICAgICJJZiB0aGUgYXR0cmlidXRlIEVHTF9DT05URVhUX09QRU5HTF9ST0JVU1RfUkVTT1VSQ0Vf
SU5JVElBTElaQVRJT05fQU5HTEUKLSAgICBpcyBzZXQgdG8gRUdMX1RSVUUsIGEgY29udGV4dCBz
dXBwb3J0aW5nIDxyb2J1c3QgcmVzb3VyY2UgaW5pdGlhbGl6YXRpb24+Ci0gICAgd2lsbCBiZSBj
cmVhdGVkLiBPcGVuR0wgRVMgY29udGV4dHMgbXVzdCBzdXBwb3J0IHRoZQotICAgIEFOR0xFX3Jv
YnVzdF9yZXNvdXJjZV9pbml0aWFsaXphdGlvbiBleHRlbnNpb24sIG9yIGVxdWl2YWxlbnQgY29y
ZSBBUEkKLSAgICBmdW5jdGlvbmFsaXR5LgotICAgIFRoaXMgYXR0cmlidXRlIGlzIHN1cHBvcnRl
ZCBvbmx5IGZvciBPcGVuR0wgRVMgY29udGV4dHMuIElmIHRoZQotICAgIGltcGxlbWVudGF0aW9u
IGRvZXMgbm90IHN1cHBvcnQgcm9idXN0IHJlc291cmNlIGluaXRpYWxpemF0aW9uLAotICAgIGNv
bnRleHQgY3JlYXRpb24gd2lsbCBmYWlsLgotICAgIFRoZSBkZWZhdWx0IHZhbHVlIG9mIEVHTF9D
T05URVhUX09QRU5HTF9ST0JVU1RfUkVTT1VSQ0VfSU5JVElBTElaQVRJT05fQU5HTEUKLSAgICBp
cyBFR0xfRkFMU0UuIgotCi1Jc3N1ZXMKLQotICAgIE5vbmUKLQotUmV2aXNpb24gSGlzdG9yeQot
Ci0gICAgVmVyc2lvbiAxLCAyMDE1LzAxLzA3IC0gZmlyc3QgZHJhZnQuCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VHTF9BTkdMRV9zb2Z0d2FyZV9kaXNwbGF5LnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VHTF9B
TkdMRV9zb2Z0d2FyZV9kaXNwbGF5LnR4dAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FR0xfQU5HTEVfc29mdHdhcmVfZGlzcGxheS50eHQJ
KG5vbmV4aXN0ZW50KQpAQCAtMSw2NSArMCwwIEBACi1OYW1lCi0KLSAgICBBTkdMRV9zb2Z0d2Fy
ZV9kaXNwbGF5Ci0KLU5hbWUgU3RyaW5ncwotCi0gICAgRUdMX0FOR0xFX3NvZnR3YXJlX2Rpc3Bs
YXkKLQotQ29udHJpYnV0b3JzCi0KLSAgICBKb2huIEJhdW1hbgotICAgIERhbmllbCBLb2NoCi0K
LUNvbnRhY3RzCi0KLSAgICBKb2huIEJhdW1hbiwgR29vZ2xlIEluYy4gKGpiYXVtYW4gJ2F0JyBj
aHJvbWl1bS5vcmcpCi0KLVN0YXR1cwotCi0gICAgSW4gcHJvZ3Jlc3MKLQotVmVyc2lvbgotCi0g
ICAgVmVyc2lvbiAyLCBPY3RvYmVyIDE5LCAyMDExCi0KLU51bWJlcgotCi0gICAgRUdMIEV4dGVu
c2lvbiAjPz8KLQotRGVwZW5kZW5jaWVzCi0KLSAgICBUaGlzIGV4dGVuc2lvbiBpcyB3cml0dGVu
IGFnYWluc3QgdGhlIHdvcmRpbmcgb2YgdGhlIEVHTCAxLjQKLSAgICBTcGVjaWZpY2F0aW9uLiAK
LQotT3ZlcnZpZXcKLQotICAgIFRoaXMgZXh0ZW5zaW9uIGFsbG93cyBmb3IgcmVjZWl2aW5nIGEg
ZGV2aWNlIHRoYXQgdXNlcyBzb2Z0d2FyZSByZW5kZXJpbmcuCi0KLU5ldyBUeXBlcwotCi0gICAg
Tm9uZQotCi1OZXcgUHJvY2VkdXJlcyBhbmQgRnVuY3Rpb25zCi0KLSAgICBOb25lCi0KLU5ldyBU
b2tlbnMKLQotICAgIEVHTF9TT0ZUV0FSRV9ESVNQTEFZX0FOR0xFICAgICAgICAgKEVHTE5hdGl2
ZURpc3BsYXlUeXBlKS0xCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDMgb2YgdGhlIEVHTCAxLjQg
U3BlY2lmaWNhdGlvbiAoRUdMIEZ1bmN0aW9ucyBhbmQgRXJyb3JzKQotCi0gICAgQWRkIGJlZm9y
ZSB0aGUgbGFzdCBzZW50ZW5jZSBvZiB0aGUgZmlyc3QgcGFyYWdyYXBoIG9mIHNlY3Rpb24gMy4y
LAotICAgICJJbml0aWFsaXphdGlvbiI6Ci0KLSAgICAiSWYgPGRpc3BsYXlfaWQ+IGlzIEVHTF9T
T0ZUV0FSRV9ESVNQTEFZX0FOR0xFLCBhIGRpc3BsYXkgdGhhdCB3aWxsIHJlbmRlcgotICAgIGV2
ZXJ5dGhpbmcgaW4gc29mdHdhcmUgd2lsbCBiZSByZXR1cm5lZC4iCi0KLUlzc3VlcwotCi1SZXZp
c2lvbiBIaXN0b3J5Ci0KLSAgICBWZXJzaW9uIDEsIDIwMTEvMDcvMTIgLSBmaXJzdCBkcmFmdC4K
LSAgICBWZXJzaW9uIDIsIDIwMTEvMTAvMTggLSBhZGQgdG9rZW4gZGVmaW5pdGlvbgotCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VHTF9BTkdMRV9zdXJmYWNlX2Qz
ZF90ZXh0dXJlXzJkX3NoYXJlX2hhbmRsZS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FR0xfQU5HTEVfc3VyZmFjZV9kM2RfdGV4dHVyZV8yZF9z
aGFyZV9oYW5kbGUudHh0CShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9leHRlbnNpb25zL0VHTF9BTkdMRV9zdXJmYWNlX2QzZF90ZXh0dXJlXzJkX3NoYXJlX2hh
bmRsZS50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSw5NSArMCwwIEBACi1OYW1lCi0KLSAgICBBTkdM
RV9zdXJmYWNlX2QzZF90ZXh0dXJlXzJkX3NoYXJlX2hhbmRsZQotCi1OYW1lIFN0cmluZ3MKLQot
ICAgIEVHTF9BTkdMRV9zdXJmYWNlX2QzZF90ZXh0dXJlXzJkX3NoYXJlX2hhbmRsZQotCi1Db250
cmlidXRvcnMKLQotICAgIFZsYWRpbWlyIFZ1a2ljZXZpYwotICAgIERhbmllbCBLb2NoCi0KLUNv
bnRhY3RzCi0KLSAgICBWbGFkaW1pciBWdWtpY2V2aWMgKHZsYWRpbWlyICdhdCcgcG9ib3guY29t
KQotCi1TdGF0dXMKLQotICAgIENvbXBsZXRlCi0gICAgSW1wbGVtZW50ZWQgKEFOR0xFIHI1NTgp
Ci0KLVZlcnNpb24KLQotICAgIFZlcnNpb24gMiwgRGVjZW1iZXIgMjEsIDIwMTAKLQotTnVtYmVy
Ci0KLSAgICBFR0wgRXh0ZW5zaW9uICMyOQotCi1EZXBlbmRlbmNpZXMKLQotICAgIFJlcXVpcmVz
IHRoZSBFR0xfQU5HTEVfcXVlcnlfc3VyZmFjZV9wb2ludGVyIGV4dGVuc2lvbi4KLQotICAgIFRo
aXMgZXh0ZW5zaW9uIGlzIHdyaXR0ZW4gYWdhaW5zdCB0aGUgd29yZGluZyBvZiB0aGUgRUdMIDEu
NAotICAgIFNwZWNpZmljYXRpb24uCi0KLU92ZXJ2aWV3Ci0KLSAgICBTb21lIEVHTCBpbXBsZW1l
bnRhdGlvbnMgZ2VuZXJhdGUgRUdMU3VyZmFjZSBoYW5kbGVzIHRoYXQgYXJlCi0gICAgYmFja2Vk
IGJ5IERpcmVjdDNEIDJEIHRleHR1cmVzLiAgRm9yIHN1Y2ggc3VyZmFjZXMsIGEgRDNEIHNoYXJl
Ci0gICAgaGFuZGxlIGNhbiBiZSBnZW5lcmF0ZWQsIGFsbG93aW5nIGFjY2VzcyB0byB0aGUgc2Ft
ZSBzdXJmYWNlCi0gICAgZnJvbSB0aGUgRGlyZWN0M0QgQVBJLgotCi1OZXcgVHlwZXMKLQotICAg
IE5vbmUKLQotTmV3IFByb2NlZHVyZXMgYW5kIEZ1bmN0aW9ucwotCi0gICAgTm9uZQotCi1OZXcg
VG9rZW5zCi0KLSAgICBBY2NlcHRlZCBpbiB0aGUgPGF0dHJpYnV0ZT4gcGFyYW1ldGVyIG9mIGVn
bFF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRToKLQotICAgICAgICBFR0xfRDNEX1RFWFRVUkVfMkRf
U0hBUkVfSEFORExFX0FOR0xFICAgICAgICAgICAgMHgzMjAwCi0KLUFkZGl0aW9ucyB0byBDaGFw
dGVyIDMgb2YgdGhlIEVHTCAxLjQgU3BlY2lmaWNhdGlvbiAoRUdMIEZ1bmN0aW9ucyBhbmQgRXJy
b3JzKQotCi0gICAgQWRkIHRvIHRhYmxlIDMuNSwgIlF1ZXJ5YWJsZSBzdXJmYWNlIGF0dHJpYnV0
ZXMgYW5kIHR5cGVzIjoKLQotICAgICAgICBBdHRyaWJ1dGUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUeXBlICAgICAgRGVzY3JpcHRpb24KLSAgICAgICAgLS0tLS0tLS0tICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLS0tLSAgICAgIC0tLS0tLS0tLS0tCi0gICAgICAgIEVHTF9E
M0RfVEVYVFVSRV8yRF9TSEFSRV9IQU5ETEVfQU5HTEUgIHBvaW50ZXIgICBEaXJlY3QzRCBzaGFy
ZSBoYW5kbGUKLQotICAgIEFkZCBiZWZvcmUgdGhlIGxhc3QgcGFyYWdyYXBoIGluIHNlY3Rpb24g
My41LCAiU3VyZmFjZSBhdHRyaWJ1dGVzIjoKLQotICAgIlF1ZXJ5aW5nIEVHTF9EM0RfVEVYVFVS
RV8yRF9TSEFSRV9IQU5ETEVfQU5HTEUgcmV0dXJucyBhIERpcmVjdDNECi0gICAgc2hhcmUgaGFu
ZGxlLCBvciBOVUxMIGlmIGEgc2hhcmUgaGFuZGxlIGZvciB0aGUgc3VyZmFjZSBpcyBub3QKLSAg
ICBhdmFpbGFibGUuICBUaGUgc2hhcmUgaGFuZGxlIG11c3QgYmUgcXVlcmllZCB1c2luZwotICAg
IGVnbFF1ZXJ5U3VyZmFjZUF0dHJpYlBvaW50ZXJBTkdMRS4gIEJlZm9yZSB1c2luZyBhIERpcmVj
dDNEIHN1cmZhY2UKLSAgICBjcmVhdGVkIHdpdGggdGhpcyBzaGFyZSBoYW5kbGUsIGVuc3VyZSB0
aGF0IGFsbCByZW5kZXJpbmcKLSAgICB0byB0aGUgRUdMU3VyZmFjZSB3aXRoIEVHTCBjbGllbnQg
QVBJcyBoYXMgY29tcGxldGVkLgotCi0gICAgVGhlIERpcmVjdDNEIHNoYXJlIGhhbmRsZSBtYXkg
YmUgcGFzc2VkIGFzIHRoZSBwU2hhcmVkSGFuZGxlCi0gICAgcGFyYW1ldGVyIG9mIHRoZSBEaXJl
Y3QzRDlFeCBDcmVhdGVUZXh0dXJlIGZ1bmN0aW9uLCBvciB2aWEgdGhlCi0gICAgRGlyZWN0M0Qx
MCBPcGVuU2hhcmVkUmVzb3VyY2UgZnVuY3Rpb24uICBJZiB1c2VkIHdpdGggRGlyZWN0M0QgOSwK
LSAgICB0aGUgbGV2ZWwgYXJndW1lbnQgdG8gQ3JlYXRlVGV4dHVyZSBtdXN0IGJlIDEsIGFuZCB0
aGUgZGltZW5zaW9ucwotICAgIG11c3QgbWF0Y2ggdGhlIGRpbWVuc2lvbnMgb2YgdGhlIEVHTCBz
dXJmYWNlLiAgSWYgdXNlZCB3aXRoCi0gICAgRGlyZWN0M0QgMTAsIE9wZW5TaGFyZWRSZXNvdXJj
ZSBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlCi0gICAgSUQzRDEwVGV4dHVyZTJEIHV1aWQgdG8g
b2J0YWluIGFuIElEM0QxMFRleHR1cmUyRCBvYmplY3QuCi0KLUlzc3VlcwotCi1SZXZpc2lvbiBI
aXN0b3J5Ci0KLSAgICBWZXJzaW9uIDMsIDIwMTEvMDIvMTEgLSBwdWJsaXNoCi0KLSAgICBWZXJz
aW9uIDIsIDIwMTAvMTIvMjEKLSAgICAgIC0gcmVuYW1lZCB0b2tlbiB0byBFR0xfRDNEX1RFWFRV
UkVfMkRfU0hBUkVfSEFORExFX0FOR0xFIChhZGRpbmcgIjJEIikKLSAgICAgIC0gcmVuYW1lZCBl
eHRlbnNpb24gdG8gQU5HTEVfc3VyZmFjZV9kM2RfdGV4dHVyZV8yZF9zaGFyZV9oYW5kbGUKLSAg
ICAgIC0gYWRkZWQgbGFuZ3VhZ2UgYWJvdXQgc3VwcG9ydGVkIHVzYWdlIG9mIHRoZSBzaGFyZWQg
aGFuZGxlIGZyb20gRDNECi0KLSAgICBWZXJzaW9uIDEsIDIwMTAvMTIvMDcgLSBmaXJzdCBkcmFm
dC4KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRUdMX0FOR0xFX3dp
bmRvd19maXhlZF9zaXplLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9leHRlbnNpb25zL0VHTF9BTkdMRV93aW5kb3dfZml4ZWRfc2l6ZS50eHQJKHJldmlzaW9uIDIw
ODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRUdMX0FOR0xFX3dp
bmRvd19maXhlZF9zaXplLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDEzNiArMCwwIEBACi1OYW1l
Ci0KLSAgICBBTkdMRV93aW5kb3dfZml4ZWRfc2l6ZQotCi1OYW1lIFN0cmluZ3MKLQotICAgIEVH
TF9BTkdMRV93aW5kb3dfZml4ZWRfc2l6ZQotCi1Db250cmlidXRvcnMKLQotICAgIEpvaG4gQmF1
bWFuCi0gICAgU2hhbm5vbiBXb29kcwotCi1Db250YWN0cwotCi0gICAgSm9obiBCYXVtYW4sIEdv
b2dsZSBJbmMuIChqYmF1bWFuICdhdCcgZ29vZ2xlLmNvbSkKLQotU3RhdHVzCi0KLSAgICBDb21w
bGV0ZQotCi1WZXJzaW9uCi0KLSAgICBWZXJzaW9uIDQsIEZlYnJ1YXJ5IDI0LCAyMDE0Ci0KLU51
bWJlcgotCi0gICAgRUdMIEV4dGVuc2lvbiAjPz8KLQotRGVwZW5kZW5jaWVzCi0KLSAgICBUaGlz
IGV4dGVuc2lvbiBpcyB3cml0dGVuIGFnYWluc3QgdGhlIHdvcmRpbmcgb2YgdGhlIEVHTCAxLjQK
LSAgICBTcGVjaWZpY2F0aW9uLgotCi1PdmVydmlldwotCi0gICAgVGhpcyBleHRlbnNpb24gYWxs
b3dzIGNyZWF0aW5nIGEgd2luZG93IHN1cmZhY2Ugd2l0aCBhIGZpeGVkIHNpemUgdGhhdCBpcwot
ICAgIHNwZWNpZmllZCB3aGVuIGl0IGlzIGNyZWF0ZWQuCi0KLU5ldyBUeXBlcwotCi0gICAgTm9u
ZQotCi1OZXcgUHJvY2VkdXJlcyBhbmQgRnVuY3Rpb25zCi0KLSAgICBOb25lCi0KLU5ldyBUb2tl
bnMKLQotICAgIEFjY2VwdGVkIGJ5IHRoZSA8YXR0cmlidXRlPiBwYXJhbWV0ZXIgb2YgZWdsUXVl
cnlTdXJmYWNlIGFuZCBieSB0aGUKLSAgICA8YXR0cmliX2xpc3Q+IHBhcmFtZXRlciBvZiBlZ2xD
cmVhdGVXaW5kb3dTdXJmYWNlOgotCi0gICAgRUdMX0ZJWEVEX1NJWkVfQU5HTEUgICAgICAgIDB4
MzIwMQotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciAzIG9mIHRoZSBFR0wgMS40IFNwZWNpZmljYXRp
b246Ci0KLSAgICBNb2RpZnkgdGhlIHRoaXJkIHBhcmFncmFwaCBvZiBTZWN0aW9uIDMuNS4xIChD
cmVhdGluZyBPbi1TY3JlZW4gUmVuZGVyaW5nIFN1cmZhY2VzKQotCi0gICAgIjxhdHRyaWJfbGlz
dD4gc3BlY2lmaWVzIGEgbGlzdCBvZiBhdHRyaWJ1dGVzIGZvciB0aGUgd2luZG93LiBUaGUgbGlz
dCBoYXMKLSAgICB0aGUgc2FtZSBzdHJ1Y3R1cmUgYXMgZGVzY3JpYmVkIGZvciBlZ2xDaG9vc2VD
b25maWcuICBBdHRyaWJ1dGVzIHRoYXQgY2FuCi0gICAgYmUgc3BlY2lmaWVkIGluIDxhdHRyaWJf
bGlzdD4gaW5jbHVkZSBFR0xfUkVOREVSX0JVRkZFUiwKLSAgICBFR0xfVkdfQ09MT1JTUEFDRSwg
RUdMX1ZHX0FMUEhBX0ZPUk1BVCwgRUdMX0ZJWEVEX1NJWkVfQU5HTEUsIEVHTF9XSURUSCwKLSAg
ICBhbmQgRUdMX0hFSUdIVC4iCi0KLSAgICBBZGQgYmVmb3JlIHRoZSBsYXN0IHBhcmFncmFwaCBv
ZiBTZWN0aW9uIDMuNS4xCi0KLSAgICAiRUdMX0ZJWEVEX1NJWkVfQU5HTEUgc3BlY2lmaWVzIHdo
ZXRoZXIgdGhlIHN1cmZhY2UgbXVzdCBiZSByZXNpemVkIGJ5IHRoZQotICAgIGltcGxlbWVudGF0
aW9uIHdoZW4gdGhlIG5hdGl2ZSB3aW5kb3cgaXMgcmVzaXplZC4gIFRoZSBkZWZhdWx0IHZhbHVl
IGlzCi0gICAgRUdMX0ZBTFNFLiAgSXRzIHZhbHVlIGNhbiBiZSBFR0xfVFJVRSwgaW4gd2hpY2gg
Y2FzZSB0aGUgc2l6ZSBtdXN0IGJlCi0gICAgc3BlY2lmaWVkIHdoZW4gdGhlIHdpbmRvdyBpcyBj
cmVhdGVkLCBvciBFR0xfRkFMU0UsIGluIHdoaWNoIGNhc2UgdGhlIHNpemUKLSAgICBpcyB0YWtl
biBmcm9tIHRoZSBuYXRpdmUgd2luZG93LiBJdHMgZGVmYXVsdCB2YWx1ZSBpcyBFR0xfRkFMU0Uu
Ci0KLSAgICBJZiB0aGUgdmFsdWUgb2YgRUdMX0ZJWEVEX1NJWkVfQU5HTEUgaXMgRUdMX1RSVUUs
IHRoZSB3aW5kb3cgc3VyZmFjZSdzCi0gICAgc2l6ZSBpbiBwaXhlbHMgaXMgc3BlY2lmaWVkIGJ5
IHRoZSBFR0xfV0lEVEggYW5kIEVHTF9IRUlHSFQgYXR0cmlidXRlcywKLSAgICBhbmQgd2lsbCBu
b3QgY2hhbmdlIHRocm91Z2hvdXQgdGhlIGxpZmV0aW1lIG9mIHRoZSBzdXJmYWNlLiBJZiBpdHMg
dmFsdWUKLSAgICBpcyBFR0xfRkFMU0UsIHRoZW4gdGhlIHZhbHVlcyBvZiBFR0xfV0lEVEggYW5k
IEVHTF9IRUlHSFQgYXJlIGlnbm9yZWQgYW5kCi0gICAgdGhlIHdpbmRvdyBzdXJmYWNlIG11c3Qg
YmUgcmVzaXplZCBieSB0aGUgaW1wbGVtZW50YXRpb24gc3Vic2VxdWVudCB0byB0aGUKLSAgICBu
YXRpdmUgd2luZG93IGJlaW5nIHJlc2l6ZWQsIGFuZCBwcmlvciB0byBjb3B5aW5nIGl0cyBjb250
ZW50cyB0byB0aGUKLSAgICBuYXRpdmUgd2luZG93IChlLmcuIGluIGVnbFN3YXBCdWZmZXJzLCBh
cyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjkuMS4xKS4KLSAgICBUaGUgZGVmYXVsdCB2YWx1ZXMg
Zm9yIEVHTF9XSURUSCBhbmQgRUdMX0hFSUdIVCBhcmUgemVyby4gSWYgdGhlIHZhbHVlCi0gICAg
c3BlY2lmaWVkIGZvciBlaXRoZXIgb2YgRUdMX1dJRFRIIG9yIEVHTF9IRUlHSFQgaXMgbGVzcyB0
aGFuIHplcm8gdGhlbiBhbgotICAgIEVHTF9CQURfUEFSQU1FVEVSIGVycm9yIGlzIGdlbmVyYXRl
ZC4iCi0KLSAgICBBZGQgdGhlIGZvbGxvd2luZyBlbnRyeSB0byBUYWJsZSAzLjUKLSAgICAoUXVl
cnlhYmxlIHN1cmZhY2UgYXR0cmlidXRlcyBhbmQgdHlwZXMpCi0KLSAgICBBdHRyaWJ1dGUgICAg
ICAgICAgICBUeXBlICAgIERlc2NyaXB0aW9uCi0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0t
LS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICBF
R0xfRklYRURfU0laRV9BTkdMRSBib29sZWFuIFN1cmZhY2Ugd2lsbCBub3QgYmUgcmVzaXplZCB3
aXRoIGEgbmF0aXZlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cKLQot
ICAgIFJlcGxhY2UgdGhlIGxhc3QgcGFyYWdyYXBoIG9uIHBhZ2UgMzcgaW4gU2VjdGlvbiAzLjUu
NiAoU3VyZmFjZSBBdHRyaWJ1dGVzKQotCi0gICAgIlF1ZXJ5aW5nIEVHTF9XSURUSCBhbmQgRUdM
X0hFSUdIVCByZXR1cm5zIHJlc3BlY3RpdmVseSB0aGUgd2lkdGggYW5kCi0gICAgaGVpZ2h0LCBp
biBwaXhlbHMsIG9mIHRoZSBzdXJmYWNlLiBGb3IgYSBwaXhtYXAgc3VyZmFjZSBvciB3aW5kb3cg
c3VyZmFjZQotICAgIHdpdGggRUdMX0ZJWEVEX1NJWkVfQU5HTEUgc2V0IHRvIEVHTF9GQUxTRSwg
dGhlc2UgdmFsdWVzIGFyZSBpbml0aWFsbHkKLSAgICBlcXVhbCB0byB0aGUgd2lkdGggYW5kIGhl
aWdodCBvZiB0aGUgbmF0aXZlIHdpbmRvdyBvciBwaXhtYXAgd2l0aCByZXNwZWN0Ci0gICAgdG8g
d2hpY2ggdGhlIHN1cmZhY2Ugd2FzIGNyZWF0ZWQuIElmIHRoZSBuYXRpdmUgd2luZG93IGlzIHJl
c2l6ZWQgYW5kIHRoZQotICAgIGNvcnJlc3BvbmRpbmcgd2luZG93IHN1cmZhY2UgaXMgbm90IGZp
eGVkIHNpemUsIHRoZSBjb3JyZXNwb25kaW5nIHdpbmRvdwotICAgIHN1cmZhY2Ugd2lsbCBldmVu
dHVhbGx5IGJlIHJlc2l6ZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uIHRvIG1hdGNoIChhcwotICAg
IGRpc2N1c3NlZCBpbiBzZWN0aW9uIDMuOS4xKS4gSWYgdGhlcmUgaXMgYSBkaXNjcmVwYW5jeSBi
ZWNhdXNlIEVHTCBoYXMgbm90Ci0gICAgeWV0IHJlc2l6ZWQgdGhlIHdpbmRvdyBzdXJmYWNlLCB0
aGUgc2l6ZSByZXR1cm5lZCBieSBlZ2xRdWVyeVN1cmZhY2Ugd2lsbAotICAgIGFsd2F5cyBiZSB0
aGF0IG9mIHRoZSBFR0wgc3VyZmFjZSwgbm90IHRoZSBjb3JyZXNwb25kaW5nIG5hdGl2ZSB3aW5k
b3cuIgotCi0gICAgQWRkIHRoZSBmb2xsb3dpbmcgcGFyYWdyYXBoIHRvIFNlY3Rpb24gMy41LjYg
KFN1cmZhY2UgQXR0cmlidXRlcykKLQotICAgICJRdWVyeWluZyBFR0xfRklYRURfU0laRV9BTkdM
RSByZXR1cm5zIEVHTF9GQUxTRSBpZiB0aGUgc3VyZmFjZSB3aWxsIGJlCi0gICAgcmVzaXplZCB0
byBtYXRjaCBhIG5hdGl2ZSB3aW5kb3csIGFuZCBFR0xfVFJVRSBpZiB0aGUgc3VyZmFjZSBjYW5u
b3QgYmUKLSAgICByZXNpemVkLiIKLQotICAgIEFsdGVyIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZp
cnN0IHBhcmFncmFwaCBvZiBTZWN0aW9uIDMuOS4xLjEgKE5hdGl2ZQotICAgIFdpbmRvdyBSZXNp
emluZykKLQotICAgICJJZiA8c3VyZmFjZT4gZG9lcyBub3QgaGF2ZSBFR0xfRklYRURfU0laRV9B
TkdMRSBzZXQgYW5kIHRoZSBuYXRpdmUgd2luZG93Ci0gICAgY29ycmVzcG9uZGluZyB0byA8c3Vy
ZmFjZT4gaGFzIGJlZW4gcmVzaXplZCBwcmlvciB0byB0aGUgc3dhcCwgPHN1cmZhY2U+Ci0gICAg
bXVzdCBiZSByZXNpemVkIHRvIG1hdGNoLiIKLQotSXNzdWVzCi0KLSAgICAxLiBTaG91bGQgdGhl
cmUgYmUgYSB3YXkgdG8gcmVzaXplIGEgd2luZG93IHN1cmZhY2UgdGhhdCBoYWQgaXRzIHNpemUK
LSAgICBzcGVjaWZpZWQgaW5pdGlhbGx5LgotCi0gICAgUkVTT0xWRUQ6IE5vLiBTdXJmYWNlcyB0
aGF0IGhhdmUgdGhlaXIgc2l6ZXMgc3BlY2lmaWVkIGluaXRpYWxseSBtdXN0IGhhdmUKLSAgICBF
R0xfRklYRURfU0laRV9BTkdMRSBzZXQgYW5kIGNhbiBuZXZlciBiZSByZXNpemVkLgotCi1SZXZp
c2lvbiBIaXN0b3J5Ci0KLSAgICBWZXJzaW9uIDQsIDIwMTQvMDIvMjQgLSBmb3JtYXR0aW5nIGNo
YW5nZXMuCi0KLSAgICBWZXJzaW9uIDMsIDIwMTQvMDIvMTIgLSBpZ25vcmUgRUdMX1dJRFRIIGFu
ZCBFR0xfSEVJR0hUIGlmCi0gICAgRUdMX0ZJWEVEX1NJWkVfQU5HTEUgaXMgRUdMX0ZBTFNFCi0K
LSAgICBWZXJzaW9uIDIsIDIwMTQvMDIvMDcgLSByZW5hbWUgdG8gRUdMX0FOR0xFX3dpbmRvd19m
aXhlZF9zaXplLCBhbmQgYWRkIGFuCi0gICAgRUdMX0ZJWEVEX1NJWkVfQU5HTEUgdG9rZW4uCi0K
LSAgICBWZXJzaW9uIDEsIDIwMTQvMDIvMDUgLSBmaXJzdCBkcmFmdC4KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRUdMX0VYVF9jcmVhdGVfY29udGV4dF9yb2J1c3Ru
ZXNzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25z
L0VHTF9FWFRfY3JlYXRlX2NvbnRleHRfcm9idXN0bmVzcy50eHQJKHJldmlzaW9uIDIwODAyMSkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRUdMX0VYVF9jcmVhdGVfY29u
dGV4dF9yb2J1c3RuZXNzLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDE2OSArMCwwIEBACi1OYW1l
Ci0KLSAgICBFWFRfY3JlYXRlX2NvbnRleHRfcm9idXN0bmVzcwotCi1OYW1lIFN0cmluZ3MKLQot
ICAgIEVHTF9FWFRfY3JlYXRlX2NvbnRleHRfcm9idXN0bmVzcwotCi1Db250cmlidXRvcnMKLQot
ICAgIERhbmllbCBLb2NoLCBUcmFuc0dhbWluZwotICAgIENvbnRyaWJ1dG9ycyB0byBFR0xfS0hS
X2NyZWF0ZV9jb250ZXh0Ci0KLUNvbnRhY3QKLQotICAgIEdyZWcgUm90aCAoZ3JvdGggJ2F0JyBu
dmlkaWEuY29tKQotCi1TdGF0dXMKLQotICAgIENvbXBsZXRlLgotCi1WZXJzaW9uCi0KLSAgICBW
ZXJzaW9uIDMsIDIwMTEvMTAvMzEKLQotTnVtYmVyCi0KLSAgICBFR0wgRXh0ZW5zaW9uICMzNwot
Ci1EZXBlbmRlbmNpZXMKLQotICAgIFJlcXVpcmVzIEVHTCAxLjQKLQotICAgIFdyaXR0ZW4gYWdh
aW5zdCB0aGUgRUdMIDEuNCBzcGVjaWZpY2F0aW9uLgotCi0gICAgQW4gT3BlbkdMIGltcGxlbWVu
dGF0aW9uIHN1cHBvcnRpbmcgR0xfQVJCX3JvYnVzdG5lc3MsIGFuIE9wZW5HTCBFUwotICAgIGlt
cGxlbWVudGF0aW9uIHN1cHBvcnRpbmcgR0xfRVhUX3JvYnVzdG5lc3MsIG9yIGFuIGltcGxlbWVu
dGF0aW9uCi0gICAgc3VwcG9ydGluZyBlcXVpdmFsZW50IGZ1bmN0aW9uYWxpdHkgaXMgcmVxdWly
ZWQuCi0KLU92ZXJ2aWV3Ci0KLSAgICBUaGlzIGV4dGVuc2lvbiBhbGxvd3MgY3JlYXRpbmcgYW4g
T3BlbkdMIG9yIE9wZW5HTCBFUyBjb250ZXh0Ci0gICAgc3VwcG9ydGluZyByb2J1c3QgYnVmZmVy
IGFjY2VzcyBiZWhhdmlvciBhbmQgYSBzcGVjaWZpZWQgZ3JhcGhpY3MKLSAgICByZXNldCBub3Rp
ZmljYXRpb24gYmVoYXZpb3IuCi0KLU5ldyBQcm9jZWR1cmVzIGFuZCBGdW5jdGlvbnMKLQotICAg
IE5vbmUKLQotTmV3IFRva2VucwotCi0gICAgQWNjZXB0ZWQgYXMgYW4gYXR0cmlidXRlIG5hbWUg
aW4gdGhlIDwqYXR0cmliX2xpc3Q+IGFyZ3VtZW50IHRvCi0gICAgZWdsQ3JlYXRlQ29udGV4dDoK
LQotICAgICAgICBFR0xfQ09OVEVYVF9PUEVOR0xfUk9CVVNUX0FDQ0VTU19FWFQgICAgMHgzMEJG
Ci0gICAgICAgIEVHTF9DT05URVhUX09QRU5HTF9SRVNFVF9OT1RJRklDQVRJT05fU1RSQVRFR1lf
RVhUICAweDMxMzgKLQotICAgIEFjY2VwdGVkIGFzIGFuIGF0dHJpYnV0ZSB2YWx1ZSBmb3IgRUdM
X0NPTlRFWFRfUkVTRVRfTk9USUZJQ0FUSU9OXy0KLSAgICBTVFJBVEVHWV9FWFQgaW4gdGhlIDwq
YXR0cmliX2xpc3Q+IGFyZ3VtZW50IHRvIGVnbENyZWF0ZUNvbnRleHQ6Ci0KLSAgICAgICAgRUdM
X05PX1JFU0VUX05PVElGSUNBVElPTl9FWFQgICAgICAgICAgIDB4MzFCRQotICAgICAgICBFR0xf
TE9TRV9DT05URVhUX09OX1JFU0VUX0VYVCAgICAgICAgICAgMHgzMUJGCi0KLUFkZGl0aW9ucyB0
byB0aGUgRUdMIDEuNCBTcGVjaWZpY2F0aW9uCi0KLSAgICBSZXBsYWNlIHNlY3Rpb24gMy43LjEg
IkNyZWF0aW5nIFJlbmRlcmluZyBDb250ZXh0cyIgZnJvbSB0aGUKLSAgICBmaWZ0aCBwYXJhZ3Jh
cGggdGhyb3VnaCB0aGUgc2V2ZW50aCBwYXJhZ3JhcGg6Ci0KLSAgICA8YXR0cmliX2xpc3Q+IHNw
ZWNpZmllcyBhIGxpc3Qgb2YgYXR0cmlidXRlcyBmb3IgdGhlIGNvbnRleHQuIFRoZQotICAgIGxp
c3QgaGFzIHRoZSBzYW1lIHN0cnVjdHVyZSBhcyBkZXNjcmliZWQgZm9yIGVnbENob29zZUNvbmZp
Zy4gSWYgYW4KLSAgICBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCBpbiA8YXR0cmliX2xpc3Q+
LCB0aGVuIHRoZSBkZWZhdWx0IHZhbHVlCi0gICAgc3BlY2lmaWVkIGJlbG93IGlzIHVzZWQgaW5z
dGVhZC4gPGF0dHJpYl9saXN0PiBtYXkgYmUgTlVMTCBvciBlbXB0eQotICAgIChmaXJzdCBhdHRy
aWJ1dGUgaXMgRUdMX05PTkUpLCBpbiB3aGljaCBjYXNlIGF0dHJpYnV0ZXMgYXNzdW1lIHRoZWly
Ci0gICAgZGVmYXVsdCB2YWx1ZXMgYXMgZGVzY3JpYmVkIGJlbG93LiBNb3N0IGF0dHJpYnV0ZXMg
YXJlIG9ubHkgbWVhbmluZ2Z1bAotICAgIGZvciBzcGVjaWZpYyBjbGllbnQgQVBJcywgYW5kIHdp
bGwgZ2VuZXJhdGUgYW4gRUdMX0JBRF9BVFRSSUJVVEUKLSAgICBlcnJvciB3aGVuIHNwZWNpZmll
ZCB0byBjcmVhdGUgZm9yIGFub3RoZXIgY2xpZW50IEFQSSBjb250ZXh0LgotCi0gICAgQ29udGV4
dCBWZXJzaW9ucwotICAgIC0tLS0tLS0tLS0tLS0tLS0KLQotICAgIEVHTF9DT05URVhUX0NMSUVO
VF9WRVJTSU9OIGRldGVybWluZXMgd2hpY2ggdmVyc2lvbiBvZiBhbiBPcGVuR0wgRVMKLSAgICBj
b250ZXh0IHRvIGNyZWF0ZS4gVGhpcyBhdHRyaWJ1dGUgbWF5IG9ubHkgYmUgc3BlY2lmaWVkIHdo
ZW4gY3JlYXRpbmcKLSAgICBhbiBPcGVuR0wgRVMgY29udGV4dCAoZS5nLiB3aGVuIHRoZSBjdXJy
ZW50IHJlbmRlcmluZyBBUEkgaXMKLSAgICBFR0xfT1BFTkdMX0VTX0FQSSkuIEFuIGF0dHJpYnV0
ZSB2YWx1ZSBvZiAxIHNwZWNpZmllcyBjcmVhdGlvbiBvZiBhbgotICAgIE9wZW5HTCBFUyAxLngg
Y29udGV4dC4gIEFuIGF0dHJpYnV0ZSB2YWx1ZSBvZiAyIHNwZWNpZmllcyBjcmVhdGlvbiBvZiBh
bgotICAgIE9wZW4gR0wgRVMgMi54IGNvbnRleHQuIFRoZSBkZWZhdWx0IHZhbHVlIGZvciBFR0xf
Q09OVEVYVF9DTElFTlRfVkVSU0lPTgotICAgIGlzIDEuCi0KLSAgICBDb250ZXh0IFJvYnVzdCBB
Y2Nlc3MKLSAgICAtLS0tLS0tLS0tLS0tCi0KLSAgICBFR0xfQ09OVEVYVF9PUEVOR0xfUk9CVVNU
X0FDQ0VTU19FWFQgaW5kaWNhdGVzIHdoZXRoZXIgPHJvYnVzdCBidWZmZXIKLSAgICBhY2Nlc3M+
IHNob3VsZCBiZSBlbmFibGVkIGZvciB0aGUgT3BlbkdMIEVTIGNvbnRleHQuIFJvYnVzdCBidWZm
ZXIKLSAgICBhY2Nlc3MgaXMgZGVmaW5lZCBpbiB0aGUgR0xfRVhUX3JvYnVzdG5lc3MgZXh0ZW5z
aW9uIHNwZWNpZmljYXRpb24sCi0gICAgYW5kIHRoZSByZXN1bHRpbmcgY29udGV4dCBtdXN0IHN1
cHBvcnQgR0xfRVhUX3JvYnVzdG5lc3MgYW5kIHJvYnVzdAotICAgIGJ1ZmZlciBhY2Nlc3MgYXMg
ZGVzY3JpYmVkIHRoZXJlaW4uIFRoZSBkZWZhdWx0IHZhbHVlIG9mCi0gICAgRUdMX0NPTlRFWFRf
T1BFTkdMX1JPQlVTVF9BQ0NFU1NfRVhUIGlzIEVHTF9GQUxTRS4KLQotICAgIENvbnRleHQgUmVz
ZXQgTm90aWZpY2F0aW9uCi0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIFRo
ZSBhdHRyaWJ1dGUgbmFtZSBFR0xfQ09OVEVYVF9PUEVOR0xfUkVTRVRfTk9USUZJQ0FUSU9OX1NU
UkFURUdZXy0KLSAgICBFWFQgc3BlY2lmaWVzIHRoZSA8cmVzZXQgbm90aWZpY2F0aW9uIGJlaGF2
aW9yPiBvZiB0aGUgcmVuZGVyaW5nCi0gICAgY29udGV4dC4gVGhpcyBhdHRyaWJ1dGUgaXMgb25s
eSBtZWFuaW5nZnVsIGZvciBPcGVuR0wgRVMgY29udGV4dHMsCi0gICAgYW5kIHNwZWNpZnlpbmcg
aXQgZm9yIG90aGVyIHR5cGVzIG9mIGNvbnRleHRzIHdpbGwgZ2VuZXJhdGUgYW4KLSAgICBFR0xf
QkFEX0FUVFJJQlVURSBlcnJvci4KLQotICAgIFJlc2V0IG5vdGlmaWNhdGlvbiBiZWhhdmlvciBp
cyBkZWZpbmVkIGluIHRoZSBHTF9FWFRfcm9idXN0bmVzcwotICAgIGV4dGVuc2lvbiBmb3IgT3Bl
bkdMIEVTLCBhbmQgdGhlIHJlc3VsdGluZyBjb250ZXh0IG11c3Qgc3VwcG9ydAotICAgIEdMX0VY
VF9yb2J1c3RuZXNzIGFuZCB0aGUgc3BlY2lmaWVkIHJlc2V0IHN0cmF0ZWd5LiBUaGUgYXR0cmli
dXRlCi0gICAgdmFsdWUgbWF5IGJlIGVpdGhlciBFR0xfTk9fUkVTRVRfTk9USUZJQ0FUSU9OX0VY
VCBvciBFR0xfTE9TRV8tCi0gICAgQ09OVEVYVF9PTl9SRVNFVF9FWFQsIHdoaWNoIHJlc3BlY3Rp
dmVseSByZXN1bHQgaW4gZGlzYWJsaW5nCi0gICAgZGVsaXZlcnkgb2YgcmVzZXQgbm90aWZpY2F0
aW9ucyBvciB0aGUgbG9zcyBvZiBhbGwgY29udGV4dCBzdGF0ZQotICAgIHVwb24gcmVzZXQgbm90
aWZpY2F0aW9uIGFzIGRlc2NyaWJlZCBieSB0aGUgR0xfRVhUX3JvYnVzdG5lc3MuIFRoZQotICAg
IGRlZmF1bHQgdmFsdWUgZm9yIEVHTF9DT05URVhUX09QRU5HTF9SRVNFVF9OT1RJRklDQVRJT05f
U1RSQVRFR1lfRVhUCi0gICAgaXMgRUdMX05PX1JFU0VUX05PVElGSUNBVElPTl9FWFQuCi0gICAg
Ci0gICAgQWRkIHRvIHRoZSBlZ2xDcmVhdGVDb250ZXh0IGNvbnRleHQgY3JlYXRpb24gZXJyb3Jz
OgotCi0gICAgKiBJZiA8Y29uZmlnPiBkb2VzIG5vdCBzdXBwb3J0IGEgY2xpZW50IEFQSSBjb250
ZXh0IGNvbXBhdGlibGUKLSAgICAgIHdpdGggdGhlIHJlcXVlc3RlZCBjb250ZXh0IGZsYWdzIGFu
ZCBjb250ZXh0IHJlc2V0IG5vdGlmaWNhdGlvbgotICAgICAgYmVoYXZpb3IgKGZvciBjbGllbnQg
QVBJIHR5cGVzIHdoZXJlIHRoZXNlIGF0dHJpYnV0ZXMgYXJlCi0gICAgICBzdXBwb3J0ZWQpLCB0
aGVuIGFuIEVHTF9CQURfQ09ORklHIGVycm9yIGlzIGdlbmVyYXRlZC4KLQotICAgICogSWYgdGhl
IHJlc2V0IG5vdGlmaWNhdGlvbiBiZWhhdmlvciBvZiA8c2hhcmVfY29udGV4dD4gYW5kIHRoZQot
ICAgICAgbmV3bHkgY3JlYXRlZCBjb250ZXh0IGFyZSBkaWZmZXJlbnQgdGhlbiBhbiBFR0xfQkFE
X01BVENIIGVycm9yIGlzCi0gICAgICBnZW5lcmF0ZWQuCi0KLQotRXJyb3JzCi0KLSAgICBFR0xf
QkFEX0NPTkZJRyBpcyBnZW5lcmF0ZWQgaWYgRUdMX0NPTlRFWFRfT1BFTkdMX1JPQlVTVF9BQ0NF
U1NfLQotICAgIEVYVCBpcyBzZXQgdG8gRUdMX1RSVUUgYW5kIG5vIEdMIGNvbnRleHQgc3VwcG9y
dGluZyB0aGUgR0xfRVhUXy0KLSAgICByb2J1c3RuZXNzIGV4dGVuc2lvbiBhbmQgcm9idXN0IGFj
Y2VzcyBhcyBkZXNjcmliZWQgdGhlcmVpbiBjYW4gYmUKLSAgICBjcmVhdGVkLgotCi0gICAgRUdM
X0JBRF9DT05GSUcgaXMgZ2VuZXJhdGVkIGlmIG5vIEdMIGNvbnRleHQgc3VwcG9ydGluZyB0aGUK
LSAgICBHTF9FWFRfcm9idXN0bmVzcyBleHRlbnNpb24gYW5kIHRoZSBzcGVjaWZpZWQgcmVzZXQg
bm90aWZpY2F0aW9uCi0gICAgYmVoYXZpb3IgKHRoZSB2YWx1ZSBvZiBhdHRyaWJ1dGUgRUdMX0NP
TlRFWFRfUkVTRVRfTk9USUZJQ0FUSU9OXy0KLSAgICBTVFJBVEVHWV9FWFQpIGNhbiBiZSBjcmVh
dGVkLgotCi0gICAgQkFEX01BVENIIGlzIGdlbmVyYXRlZCBpZiB0aGUgcmVzZXQgbm90aWZpY2F0
aW9uIGJlaGF2aW9yIG9mCi0gICAgPHNoYXJlX2NvbnRleHQ+IGRvZXMgbm90IG1hdGNoIHRoZSBy
ZXNldCBub3RpZmljYXRpb24gYmVoYXZpb3Igb2YKLSAgICB0aGUgY29udGV4dCBiZWluZyBjcmVh
dGVkLgotCi1OZXcgU3RhdGUKLQotICAgIE5vbmUKLQotQ29uZm9ybWFuY2UgVGVzdHMKLQotICAg
IFRCRAotCi1TYW1wbGUgQ29kZQotCi0gICAgVEJECi0KLUlzc3VlcwotCi0gICAgTm9uZQotCi1S
ZXZpc2lvbiBIaXN0b3J5Ci0KLSAgICBSZXYuICAgIERhdGUgICAgICAgQXV0aG9yICAgICBDaGFu
Z2VzCi0gICAgLS0tLSAgLS0tLS0tLS0tLS0tIC0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgMyAgIDMxIE9jdCAgMjAxMSBncm90aCAgICAg
IFJldmVydGVkIHRvIGF0dHJpYnV0ZSBmb3Igcm9idXN0IGFjY2Vzcy4gTm93IGl0J3MgYQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhbmlvbiB0byByYXRoZXIgdGhhbiBz
dWJzZXQgb2YgS0hSX2NyZWF0ZV9jb250ZXh0Ci0gICAgICAyICAgMTEgT2N0ICAyMDExIGdyb3Ro
ICAgICAgTWVyZ2VkIEFOR0xFIGFuZCBOViBleHRlbnNpb25zLgotICAgICAgMSAgIDE1IEp1bHkg
MjAxMSBncm90aCAgICAgIEluaXRpYWwgdmVyc2lvbgpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvZXh0ZW5zaW9ucy9FR0xfRVhUX2RldmljZV9xdWVyeS50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FR0xfRVhUX2RldmljZV9xdWVyeS50
eHQJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lv
bnMvRUdMX0VYVF9kZXZpY2VfcXVlcnkudHh0CShub25leGlzdGVudCkKQEAgLTEsMTg4ICswLDAg
QEAKLU5hbWUKLQotICAgIEVYVF9kZXZpY2VfcXVlcnkKLQotTmFtZSBTdHJpbmdzCi0KLSAgICBF
R0xfRVhUX2RldmljZV9xdWVyeQotCi1Db250cmlidXRvcnMKLQotICAgIEphbWVzIEpvbmVzLCBO
VklESUEgIChqYWpvbmVzICdhdCcgbnZpZGlhLmNvbSkKLSAgICBKYW1pZSBNYWRpbGwsIEdvb2ds
ZSAgKGptYWRpbGwgJ2F0JyBnb29nbGUuY29tKQotCi1Db250YWN0cwotCi0gICAgSmFtaWUgTWFk
aWxsLCBHb29nbGUgIChqbWFkaWxsICdhdCcgZ29vZ2xlLmNvbSkKLQotU3RhdHVzCi0KLSAgICBE
cmFmdAotCi1WZXJzaW9uCi0KLSAgICBWZXJzaW9uIDEgLSBNYXIgMjVyZCwgMjAxNQotCi1OdW1i
ZXIKLQotICAgIEVHTCBFeHRlbnNpb24gI1hYWAotCi1FeHRlbnNpb24gVHlwZQotCi0gICAgRUdM
IGNsaWVudCBleHRlbnNpb24KLQotRGVwZW5kZW5jaWVzCi0KLSAgICBXcml0dGVuIGFnYWluc3Qg
dGhlIHdvcmRpbmcgb2YgRUdMIDEuNS4KLQotICAgIFJlcXVpcmVzIEVHTCAxLjUgb3IgYW4gZWFy
bGllciB2ZXJpc29uIG9mIEVHTCB3aXRoIHRoZQotICAgIEVHTF9FWFRfY2xpZW50X2V4dGVuc2lv
bnMgZXh0ZW5zaW9uLgotCi1PdmVydmlldwotCi0gICAgSW5jcmVhc2luZ2x5LCBFR0wgYW5kIGl0
cyBjbGllbnQgQVBJcyBhcmUgYmVpbmcgdXNlZCBpbiBwbGFjZSBvZgotICAgICJuYXRpdmUiIHJl
bmRlcmluZyBBUElzIHRvIGltcGxlbWVudCB0aGUgYmFzaWMgZ3JhcGhpY3MKLSAgICBmdW5jdGlv
bmFsaXR5IG9mIG5hdGl2ZSB3aW5kb3dpbmcgc3lzdGVtcy4gIFRoaXMgY3JlYXRlcyBkZW1hbmQK
LSAgICBmb3IgYSBtZXRob2QgdG8gYWNjZXNzIG5hdGl2ZSBHUFUgb3IgZGV2aWNlIG9iamVjdHMg
ZGlyZWN0bHkKLSAgICByYXRoZXIgdGhhbiBjYWxsaW5nIEVHTCBvciBHTCBlbnRyeSBwb2ludHMu
Ci0KLSAgICBUaGlzIGV4dGVuc2lvbiBkZWZpbmVzIHRoZSBtZXRob2QgZm9yIGFuIGFwcGxpY2F0
aW9uIHRvIHF1ZXJ5Ci0gICAgbmF0aXZlIGRldmljZSBvYmplY3RzIGZyb20gYW4gRUdMIERpc3Bs
YXkuCi0KLU5ldyBUeXBlcwotCi0gICAgVGhpcyBpcyB0aGUgdHlwZSBvZiBhIGhhbmRsZSB0aGF0
IHJlcHJlc2VudHMgYW4gRUdMRGV2aWNlRVhUCi0gICAgb2JqZWN0LgotCi0gICAgICAgIHR5cGVk
ZWYgdm9pZCogRUdMRGV2aWNlRVhUOwotCi0gICAgSWYgRUdMIDEuNSBpcyBub3Qgc3VwcG9ydGVk
LCB0aGUgZm9sbG93aW5nIHR5cGUgaXMgYWRkZWQsIGFzCi0gICAgZGVmaW5lZCBpbiB0aGUgRUdM
IDEuNSBzcGVjaWZpY2F0aW9uOgotCi0gICAgICAgIHR5cGVkZWYgaW50cHRyX3QgRUdMQXR0cmli
OwotCi1OZXcgRnVuY3Rpb25zCi0KLSAgICBFR0xCb29sZWFuIGVnbFF1ZXJ5RGV2aWNlQXR0cmli
RVhUKEVHTERldmljZUVYVCBkZXZpY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFR0xpbnQgYXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRUdMQXR0cmliICp2YWx1ZSk7Ci0KLSAgICBjb25zdCBjaGFyICplZ2xRdWVyeURl
dmljZVN0cmluZ0VYVChFR0xEZXZpY2VFWFQgZGV2aWNlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVHTGludCBuYW1lKTsKLQotICAgIEVHTEJvb2xlYW4gZWdsUXVl
cnlEaXNwbGF5QXR0cmliRVhUKEVHTERpc3BsYXkgZHB5LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVHTGludCBhdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRUdMQXR0cmliICp2YWx1ZSk7Ci0KLU5ldyBUb2tlbnMKLQot
ICAgIEZ1bmN0aW9ucyB3aXRoIGEgcmV0dXJuIHR5cGUgb2YgRUdMRGV2aWNlRVhUIHdpbGwgcmV0
dXJuIHRoaXMKLSAgICB2YWx1ZSBvbiBmYWlsdXJlOgotCi0gICAgICAgIEVHTF9OT19ERVZJQ0Vf
RVhUICAgICAgICAgICAgICAgICAgICAgICgoRUdMRGV2aWNlRVhUKTApCi0KLSAgICBUaGlzIGVy
cm9yIHZhbHVlIHdpbGwgYmUgZ2VuZXJhdGVkIGJ5IGZ1bmN0aW9ucyB0aGF0IHRha2UgYW4KLSAg
ICBFR0xEZXZpY2VFWFQgb2JqZWN0IGFzIGEgcGFyYW1ldGVyOgotCi0gICAgICAgIEVHTF9CQURf
REVWSUNFX0VYVCAgICAgICAgICAgICAgICAgICAgIDB4MzIyQgotCi0gICAgQWNjZXB0ZWQgYnkg
dGhlIDxhdHRyaWJ1dGU+IHBhcmFtZXRlciBvZgotICAgIGVnbFF1ZXJ5RGlzcGxheUF0dHJpYkVY
VDoKLQotICAgICAgICBFR0xfREVWSUNFX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAweDMy
MkMKLQotQWRkIGEgbmV3IHNlY3Rpb24gIjIuMS4yIERldmljZXMiIGFmdGVyICIyLjEuMSBTY2Fs
YXIgVHlwZXMiCi0KLSAgICBBbGwgRUdMIG9wZXJhdGlvbnMgb2NjdXIgb24gYW4gRUdMRGV2aWNl
RVhULiAgSG93ZXZlciwgZGV2aWNlcwotICAgIHRoZW1zZWx2ZXMgZXhwb3NlIG5vIGZ1bmN0aW9u
YWxpdHkuICBUaGV5IGFyZSBzaW1wbGUgYWJzdHJhY3QKLSAgICBvYmplY3RzIHRoYXQgZXhpc3Qg
b25seSBmb3IgdGhlIHNha2Ugb2YgZW51bWVyYXRpb24gYW5kCi0gICAgZGVmaW5pbmcgYSBuYW1l
c3BhY2UuCi0KLU1vZGlmeSB0aGUgbGFzdCBzZW50ZW5jZSBvZiBzZWN0aW9uICIyLjEuMyIgRGlz
cGxheXMiIHRvIHJlYWQ6Ci0KLSAgICBCZXNpZGVzIGRldmljZXMsIG9iamVjdHMgYXJlIGFsd2F5
cyBzcGVjaWZpZWQgYnkgdGhlIGNvbWJpbmF0aW9uCi0gICAgb2YgYW4gRUdMRGlzcGxheSBwYXJh
bWV0ZXIgd2l0aCBhIHBhcmFtZXRlciByZXByZXNlbnRpbmcgdGhlCi0gICAgaGFuZGxlIG9mIHRo
ZSBvYmplY3QuCi0KLUFkZCBhIG5ldyBleHRlbnNpb24gdHlwZSB0byB0aGUgbGlzdCBpbiBzZWN0
aW9uICIyLjggRXh0ZW5zaW9ucyIKLQotICAgIERldmljZSBFeHRlbnNpb25zCi0gICAgICAgIEEg
KmRldmljZSBleHRlbnNpb24qIGFkZHMgZnVuY3Rpb25hbGl0eSB0byBhbiBpbmRpdmlkdWFsCi0g
ICAgICAgIEVHTERldmljZUVYVC4gIERpZmZlcmVudCBpbnN0YW5jZXMgb2YgRUdMRGV2aWNlRVhU
IG1heSBzdXBwb3J0Ci0gICAgICAgIGRpZmZlcmVudCBzZXRzIG9mIGRldmljZSBleHRlbnNpb25z
Ci0KLUFkZCBhIG5ldyBlcnJvciB0byBzZWN0aW9uICIzLjEgRXJyb3JzIgotCi0gICAgRUdMX0JB
RF9ERVZJQ0VfRVhUCi0gICAgICAgIEFuIEVHTERldmljZUVYVCBhcmd1bWVudCBkb2VzIG5vdCBy
ZWZlciB0byBhIHZhbGlkCi0gICAgICAgIEVHTERldmljZUVYVC4gIEFueSBjb21tYW5kIHRha2lu
ZyBhbiBFR0xEZXZpY2VFWFQgcGFyYW1ldGVyCi0gICAgICAgIG1heSBnZW5lcmF0ZSB0aGlzIGVy
cm9yLgotCi1BZGQgYSBzZWN0aW9uICIzLjIgRGV2aWNlcyIgYWZ0ZXIgIjMuMSBFcnJvcnMiCi0K
LSAgICBUbyBxdWVyeSB0aGUgcHJvcGVydGllcyBvZiBhIGRldmljZSwgdXNlOgotCi0gICAgICAg
IEVHTEJvb2xlYW4gZWdsUXVlcnlEZXZpY2VBdHRyaWJFWFQoRUdMRGV2aWNlRVhUIGRldmljZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgYXR0cmli
dXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTEF0dHJp
YiAqdmFsdWUpOwotCi0gICAgT24gc3VjY2VzcywgRUdMX1RSVUUgaXMgcmV0dXJuZWQgYW5kIHRo
ZSByZXF1ZXN0ZWQgYXR0cmlidXRlIHZhbHVlCi0gICAgaXMgcmV0dXJuZWQgaW4gPHZhbHVlPi4g
IEN1cnJlbnRseSB0aGVyZSBhcmUgbm8gdmFsaWQgdmFsdWVzIG9mCi0gICAgPGF0dHJpYnV0ZT4g
ZGVmaW5lZC4KLQotICAgIE9uIGZhaWx1cmUsIEVHTF9GQUxTRSBpcyByZXR1cm5lZC4gIEFuIEVH
TF9CQURfQVRUUklCVVRFIGVycm9yIGlzCi0gICAgZ2VuZXJhdGVkIGlmIDxhdHRyaWJ1dGU+IGlz
IG5vdCBhIHZhbGlkIGF0dHJpYnV0ZS4gIEFuCi0gICAgRUdMX0JBRF9ERVZJQ0VfRVhUIGVycm9y
IGlzIGdlbmVyYXRlZCBpZiA8ZGV2aWNlPiBpcyBub3QgYSB2YWxpZAotICAgIEVHTERldmljZUVY
VC4KLQotICAgICAgICBjb25zdCBjaGFyICplZ2xRdWVyeURldmljZVN0cmluZ0VYVChFR0xEZXZp
Y2VFWFQgZGV2aWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBFR0xpbnQgbmFtZSk7Ci0KLSAgICByZXR1cm5zIGEgcG9pbnRlciB0byBhIHN0YXRpYywgemVy
by10ZXJtaW5hdGVkIHN0cmluZyBkZXNjcmliaW5nCi0gICAgc29tZSBhc3BlY3Qgb2YgdGhlIHNw
ZWNpZmllZCBFR0xEZXZpY2VFWFQuICA8bmFtZT4gbXVzdCBiZQotICAgIEVHTF9FWFRFTlNJT05T
LgotCi0gICAgVGhlIEVHTF9FWFRFTlNJT05TIHN0cmluZyBkZXNjcmliZXMgd2hpY2ggZGV2aWNl
IGV4dGVuc2lvbnMgYXJlCi0gICAgc3VwcG9ydGVkIGJ5IDxkZXZpY2U+LiAgVGhlIHN0cmluZyBp
cyBvZiB0aGUgc2FtZSBmb3JtYXQgc3BlY2lmaWVkCi0gICAgZm9yIGRpc3BsYXkgYW5kIGNsaWVu
dCBleHRlbnNpb24gc3RyaW5ncyBpbiBzZWN0aW9uIDMuNC4gTm90ZSB0aGF0Ci0gICAgZGV2aWNl
IGV4dGVuc2lvbnMgYXJlIHByb3BlcnRpZXMgb2YgdGhlIGRldmljZSwgYW5kIGFyZSBkaXN0aW5j
dAotICAgIGZyb20gb3RoZXIgZXh0ZW5zaW9uIHN0cmluZ3MuCi0KLSAgICBPbiBmYWlsdXJlLCBO
VUxMIGlzIHJldHVybmVkLiAgQW4gRUdMX0JBRF9ERVZJQ0VfRVhUIGVycm9yIGlzCi0gICAgZ2Vu
ZXJhdGVkIGlmIDxkZXZpY2U+IGlzIG5vdCBhIHZhbGlkIEVHTERldmljZUVYVC4gIEFuCi0gICAg
RUdMX0JBRF9QQVJBTUVURVIgZXJyb3IgaXMgZ2VuZXJhdGVkIGlmIDxuYW1lPiBpcyBub3Qgb25l
IG9mIHRoZQotICAgIHZhbHVlcyBkZXNjcmliZWQgYWJvdmUuCi0KLUFkZCBhIHNlY3Rpb24gIjMu
NCBEaXNwbGF5IEF0dHJpYnV0ZXMiIGFmdGVyICIzLjMgRUdMIFZlcnNpb25pbmciCi0KLSAgICBU
byBxdWVyeSBhdHRyaWJ1dGVzIG9mIGFuIGluaXRpYWxpemVkIGRpc3BsYXksIHVzZToKLQotICAg
ICAgICBFR0xCb29sZWFuIGVnbFF1ZXJ5RGlzcGxheUF0dHJpYkVYVChFR0xEaXNwbGF5IGRweSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IG5hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTEF0dHJpYiAq
dmFsdWUpOwotCi0gICAgT24gc3VjY2VzcywgRUdMX1RSVUUgaXMgcmV0dXJuZWQuICBJZiA8bmFt
ZT4gaXMgRUdMX0RFVklDRV9FWFQsCi0gICAgdGhlIEVHTERldmljZUVYVCBhc3NvY2lhdGVkIHdp
dGggPGRweT4gaXMgcmV0dXJuZWQgaW4gPHZhbHVlPi4KLSAgICBBbGwgZGlzcGxheXMgaGF2ZSBh
biBhc3NvY2lhdGVkIEVHTERldmljZUVYVCwgcmVnYXJkbGVzcyBvZiBob3cKLSAgICB0aGV5IHdl
cmUgY3JlYXRlZC4gIEEgc3VjY2Vzc2Z1bCBxdWVyeSBvZiBFR0xfREVWSUNFX0VYVCB3aWxsCi0g
ICAgbmV2ZXIgcmV0dXJuIEVHTF9OT19ERVZJQ0VfRVhULgotCi0gICAgT24gZmFpbHVyZSwgRUdM
X0ZBTFNFIGlzIHJldHVybmVkLiAgQW4gRUdMX05PVF9JTklUSUFMSVpFRCBlcnJvcgotICAgIGlz
IGdlbmVyYXRlZCBpZiBFR0wgaXMgbm90IGluaXRpYWxpemVkIGZvciA8ZHB5Pi4gIEFuCi0gICAg
RUdMX0JBRF9BVFRSSUJVVEUgZXJyb3IgaXMgZ2VuZXJhdGVkIGlmIDxuYW1lPiBpcyBub3QgYSB2
YWxpZAotICAgIHZhbHVlLgotCi0gICAgQmVjYXVzZSB0aGUgRUdMRGV2aWNlRVhUIGlzIGEgcHJv
cGVydHkgb2YgPGRweT4sIGFueSB1c2Ugb2YgYW4KLSAgICBhc3NvY2lhdGVkIEVHTERldmljZUVY
VCBhZnRlciA8ZHB5PiBoYXMgYmVlbiB0ZXJtaW5hdGVkIGdpdmVzCi0gICAgdW5kZWZpbmVkIHJl
c3VsdHMuIFF1ZXJ5aW5nIGFuIEVHTF9ERVZJQ0VfRVhUIGZyb20gPGRweT4gYWZ0ZXIgYQotICAg
IGNhbGwgdG8gZWdsVGVybWluYXRlKCkgKGFuZCBzdWJzZXF1ZW50IHJlLWluaXRpYWxpemF0aW9u
KSBtYXkKLSAgICByZXR1cm4gYSBkaWZmZXJlbnQgdmFsdWUuCi0KLUlzc3VlcwotCi0gICAgTm9u
ZS4KLQotUmV2aXNpb24gSGlzdG9yeToKLQotICAgICMxICAoTWFyIDI1cmQsIDIwMTUpIEphbWll
IE1hZGlsbAotICAgICAgICAtIEluaXRpYWwgRHJhZnQgYmFzZWQgb24gRUdMX0VYVF9kZXZpY2Vf
YmFzZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FWFRfYmxlbmRf
bWlubWF4LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNp
b25zL0VYVF9ibGVuZF9taW5tYXgudHh0CShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VYVF9ibGVuZF9taW5tYXgudHh0CShub25leGlzdGVu
dCkKQEAgLTEsMTY0ICswLDAgQEAKLU5hbWUKLQotICAgIEVYVF9ibGVuZF9taW5tYXgKLQotTmFt
ZSBTdHJpbmdzCi0KLSAgICBHTF9FWFRfYmxlbmRfbWlubWF4Ci0KLVZlcnNpb24KLQotICAgIExh
c3QgTW9kaWZpZWQgRGF0ZTogU2VwdGVtYmVyIDE3LCAyMDA5Ci0gICAgVmVyc2lvbjogICAgICAg
ICAgICAxLjUKLQotTnVtYmVyCi0KLSAgICBPcGVuR0wgRXh0ZW5zaW9uICMzNwotICAgIE9wZW5H
TCBFUyBFeHRlbnNpb24gIzY1Ci0KLURlcGVuZGVuY2llcwotCi0gICAgVGhlcmUgaXMgYW4gaW50
ZXJhY3Rpb24gd2l0aCBPcGVuR0wgRVMuCi0KLU92ZXJ2aWV3Ci0KLSAgICBCbGVuZGluZyBjYXBh
YmlsaXR5IGlzIGV4dGVuZGVkIGJ5IHJlc3BlY2lmeWluZyB0aGUgZW50aXJlIGJsZW5kCi0gICAg
ZXF1YXRpb24uICBXaGlsZSB0aGlzIGRvY3VtZW50IGRlZmluZXMgb25seSB0d28gbmV3IGVxdWF0
aW9ucywgdGhlCi0gICAgQmxlbmRFcXVhdGlvbkVYVCBwcm9jZWR1cmUgdGhhdCBpdCBkZWZpbmVz
IHdpbGwgYmUgdXNlZCBieSBzdWJzZXF1ZW50Ci0gICAgZXh0ZW5zaW9ucyB0byBkZWZpbmUgYWRk
aXRpb25hbCBibGVuZGluZyBlcXVhdGlvbnMuCi0KLSAgICBUaGUgdHdvIG5ldyBlcXVhdGlvbnMg
ZGVmaW5lZCBieSB0aGlzIGV4dGVuc2lvbiBwcm9kdWNlIHRoZSBtaW5pbXVtCi0gICAgKG9yIG1h
eGltdW0pIGNvbG9yIGNvbXBvbmVudHMgb2YgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gY29s
b3JzLgotICAgIFRha2luZyB0aGUgbWF4aW11bSBpcyB1c2VmdWwgZm9yIGFwcGxpY2F0aW9ucyBz
dWNoIGFzIG1heGltdW0gcHJvamVjdGlvbgotICAgIGluIG1lZGljYWwgaW1hZ2luZy4KLQotSXNz
dWVzCi0KLSAgICAqICAgSSd2ZSBwcmVmaXhlZCB0aGUgQUREIHRva2VuIHdpdGggRlVOQywgdG8g
aW5kaWNhdGUgdGhhdCB0aGUgYmxlbmQKLSAgICAgICAgZXF1YXRpb24gaW5jbHVkZXMgdGhlIHBh
cmFtZXRlcnMgc3BlY2lmaWVkIGJ5IEJsZW5kRnVuYy4gIChUaGUgbWluCi0gICAgICAgIGFuZCBt
YXggZXF1YXRpb25zIGRvbid0LikgIElzIHRoaXMgbmVjZXNzYXJ5PyAgSXMgaXQgdG9vIHVnbHk/
Ci0gICAgICAgIElzIHRoZXJlIGEgYmV0dGVyIHdheSB0byBhY2NvbXBsaXNoIHRoZSBzYW1lIHRo
aW5nPwotICAgIAotTmV3IFByb2NlZHVyZXMgYW5kIEZ1bmN0aW9ucwotCi0gICAgdm9pZCBCbGVu
ZEVxdWF0aW9uRVhUKGVudW0gbW9kZSk7Ci0KLU5ldyBUb2tlbnMKLQotICAgIEFjY2VwdGVkIGJ5
IHRoZSA8bW9kZT4gcGFyYW1ldGVyIG9mIEJsZW5kRXF1YXRpb25FWFQ6Ci0KLSAgICAgICAgRlVO
Q19BRERfRVhUICAgICAgICAgICAgICAgICAgICAgMHg4MDA2Ci0gICAgICAgIE1JTl9FWFQgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4ODAwNwotICAgICAgICBNQVhfRVhUICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDgwMDgKLQotICAgIEFjY2VwdGVkIGJ5IHRoZSA8cG5hbWU+IHBhcmFt
ZXRlciBvZiBHZXRCb29sZWFudiwgR2V0SW50ZWdlcnYsCi0gICAgR2V0RmxvYXR2LCBhbmQgR2V0
RG91YmxldjoKLQotICAgICAgICBCTEVORF9FUVVBVElPTl9FWFQgICAgICAgICAgICAgICAweDgw
MDkKLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgMiBvZiB0aGUgR0wgU3BlY2lmaWNhdGlvbiAoT3Bl
bkdMIE9wZXJhdGlvbikKLQotICAgIE5vbmUKLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgMyBvZiB0
aGUgR0wgU3BlY2lmaWNhdGlvbiAoUmFzdGVyaXphdGlvbikKLQotICAgIE5vbmUKLQotQWRkaXRp
b25zIHRvIENoYXB0ZXIgNCBvZiB0aGUgR0wgU3BlY2lmaWNhdGlvbiAoUGVyLUZyYWdtZW50IE9w
ZXJhdGlvbnMKLWFuZCB0aGUgRnJhbWVidWZmZXIpCi0KLSAgICBUaGUgR0wgU3BlY2lmaWNhdGlv
biBkZWZpbmVzIGEgc2luZ2xlIGJsZW5kaW5nIGVxdWF0aW9uLiAgVGhpcwotICAgIGV4dGVuc2lv
biBpbnRyb2R1Y2VzIGEgYmxlbmQgZXF1YXRpb24gbW9kZSB0aGF0IGlzIHNwZWNpZmllZCBieSBj
YWxsaW5nCi0gICAgQmxlbmRFcXVhdGlvbkVYVCB3aXRoIG9uZSBvZiB0aHJlZSBlbnVtZXJhdGVk
IHZhbHVlcy4gIFRoZSBkZWZhdWx0Ci0gICAgdmFsdWUgRlVOQ19BRERfRVhUIHNwZWNpZmllcyB0
aGF0IHRoZSBibGVuZGluZyBlcXVhdGlvbiBkZWZpbmVkIGluCi0gICAgdGhlIEdMIFNwZWNpZmlj
YXRpb24gYmUgdXNlZC4gIFRoaXMgZXF1YXRpb24gaXMKLQotICAgICAgICBDJyA9IChDcyAqIFMp
ICsgKENkICogRCkKLQotICAgICAgICAgICAgIC8gIDEuMCAgICAgQycgPiAxLjAKLSAgICAgICAg
QyA9ICgKLSAgICAgICAgICAgICBcICAgQycgICAgIEMnIDw9IDEuMAotCi0gICAgd2hlcmUgQ3Mg
YW5kIENkIGFyZSB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBjb2xvcnMsIGFuZCBTIGFuZCBE
IGFyZQotICAgIGFzIHNwZWNpZmllZCBieSBCbGVuZEZ1bmMuCi0KLSAgICBJZiBCbGVuZEVxdWF0
aW9uRVhUIGlzIGNhbGxlZCB3aXRoIDxtb2RlPiBzZXQgdG8gTUlOX0VYVCwgdGhlCi0gICAgYmxl
bmRpbmcgZXF1YXRpb24gYmVjb21lcwotCi0gICAgICAgIEMgPSBtaW4gKENzLCBDZCkKLQotICAg
IEZpbmFsbHksIGlmIEJsZW5kRXF1YXRpb25FWFQgaXMgY2FsbGVkIHdpdGggPG1vZGU+IHNldCB0
byBNQVhfRVhULCB0aGUKLSAgICBibGVuZGluZyBlcXVhdGlvbiBiZWNvbWVzCi0KLSAgICAgICAg
QyA9IG1heCAoQ3MsIENkKQotCi0gICAgSW4gYWxsIGNhc2VzIHRoZSBibGVuZGluZyBlcXVhdGlv
biBpcyBldmFsdWF0ZWQgc2VwYXJhdGVseSBmb3IgZWFjaAotICAgIGNvbG9yIGNvbXBvbmVudC4K
LQotQWRkaXRpb25zIHRvIENoYXB0ZXIgNSBvZiB0aGUgR0wgU3BlY2lmaWNhdGlvbiAoU3BlY2lh
bCBGdW5jdGlvbnMpCi0KLSAgICBOb25lCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDYgb2YgdGhl
IEdMIFNwZWNpZmljYXRpb24gKFN0YXRlIGFuZCBTdGF0ZSBSZXF1ZXN0cykKLQotICAgIE5vbmUK
LQotQWRkaXRpb25zIHRvIHRoZSBHTFggU3BlY2lmaWNhdGlvbgotCi0gICAgTm9uZQotCi1HTFgg
UHJvdG9jb2wKLQotICAgIEEgbmV3IEdMIHJlbmRlcmluZyBjb21tYW5kIGlzIGFkZGVkLiBUaGUg
Zm9sbG93aW5nIGNvbW1hbmQgaXMgc2VudCB0byB0aGUgCi0gICAgc2VydmVyIGFzIHBhcnQgb2Yg
YSBnbFhSZW5kZXIgcmVxdWVzdDoKLQotICAgICAgICBCbGVuZEVxdWF0aW9uRVhUCi0gICAgICAg
ICAgICAyICAgICAgICAgICA4ICAgICAgICAgICAgICAgcmVuZGVyaW5nIGNvbW1hbmQgbGVuZ3Ro
Ci0gICAgICAgICAgICAyICAgICAgICAgICA0MDk3ICAgICAgICAgICAgcmVuZGVyaW5nIGNvbW1h
bmQgb3Bjb2RlCi0gICAgICAgICAgICA0ICAgICAgICAgICBFTlVNICAgICAgICAgICAgbW9kZQot
Ci1EZXBlbmRlbmNpZXMgb24gT3BlbkdMIEVTCi0KLSAgICBJZiB0aGUgR0wgaXMgT3BlbkdMIEVT
LCBvbmx5IHRoZSBuZXcgTUlOX0VYVCBhbmQgTUFYX0VYVCBibGVuZCBlcXVhdGlvbnMKLSAgICBh
cmUgaW50cm9kdWNlZCBieSB0aGlzIGV4dGVuc2lvbi4gIEJsZW5kRXF1YXRpb25PRVMsIEZVTkNf
QUREX09FUywgYW5kCi0gICAgQkxFTkRfRVFVQVRJT05fT0VTIGFyZSBpbnRyb2R1Y2VkIGJ5IHRo
ZSBPRVNfYmxlbmRfc3VidHJhY3QgZXh0ZW5zaW9uLAotICAgIHdoaWNoIGlzIHJlcXVpcmVkIGZv
ciB0aGlzIGV4dGVuc2lvbiB0byBvcGVyYXRlLiAgQWx0ZXJuYXRpdmVseSwKLSAgICBPcGVuR0wg
RVMgMi4wIGlzIHJlcXVpcmVkLCB3aGljaCBpbnRyb2R1Y2VzIEJsZW5kRXF1YXRpb24sIEZVTkNf
QURELCBhbmQKLSAgICBCTEVORF9FUVVBVElPTiB3aXRob3V0IHRoZSBzdWZmaXhlcy4KLQotICAg
IE1JTl9FWFQgYW5kIE1BWF9FWFQgc2hvdWxkIGJlIGFkZGVkIHRvIFRhYmxlIDQuYmxlbmRlcSBk
ZXNjcmliZWQgaW4gdGhlCi0gICAgT0VTX2JsZW5kX3N1YnRyYWN0IGV4dGVuc2lvbiBzcGVjaWZp
Y2F0aW9uLCBhbmQgVGFibGUgNC4xIG9mIHRoZSBPcGVuR0wKLSAgICBFUyAyLjAgc3BlY2lmaWNh
dGlvbi4KLQotICAgIE1lbnRpb25zIG9mIEdldERvdWJsZXYsIEJlZ2luL0VuZCwgYW5kIEdMWCBp
biB0aGlzIGV4dGVuc2lvbiBzcGVjaWZpY2F0aW9uCi0gICAgY2FuIGJlIGlnbm9yZWQgZm9yIE9w
ZW5HTCBFUy4gIEFsc28sIEJsZW5kRXF1YXRpb25FWFQgYW5kIEZVTkNfQUREX0VYVAotICAgIGlu
c3RlYWQgaGF2ZSB0aGUgT0VTIHN1ZmZpeCBjb3VydGVzeSBvZiBPRVNfYmxlbmRfc3VidHJhY3Qs
IG9yIG5vIHN1ZmZpeAotICAgIGNvdXJ0ZXN5IG9mIGNvcmUgT3BlbkdMIEVTIDIuMC4KLQotRXJy
b3JzCi0KLSAgICBJTlZBTElEX0VOVU0gaXMgZ2VuZXJhdGVkIGJ5IEJsZW5kRXF1YXRpb25FWFQg
aWYgaXRzIHNpbmdsZSBwYXJhbWV0ZXIKLSAgICBpcyBub3QgRlVOQ19BRERfRVhULCBNSU5fRVhU
LCBvciBNQVhfRVhULgotCi0gICAgSU5WQUxJRF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkIGlmIEJs
ZW5kRXF1YXRpb25FWFQgaXMgZXhlY3V0ZWQgYmV0d2VlbgotICAgIHRoZSBleGVjdXRpb24gb2Yg
QmVnaW4gYW5kIHRoZSBjb3JyZXNwb25kaW5nIGV4ZWN1dGlvbiB0byBFbmQuCi0KLU5ldyBTdGF0
ZQotCi0gICAgR2V0IFZhbHVlICAgICAgICAgICBHZXQgQ29tbWFuZCAgICAgVHlwZSAgICBJbml0
aWFsIFZhbHVlICAgQXR0cmlidXRlCi0gICAgLS0tLS0tLS0tICAgICAgICAgICAtLS0tLS0tLS0t
LSAgICAgLS0tLSAgICAtLS0tLS0tLS0tLS0tICAgLS0tLS0tLS0tCi0gICAgQkxFTkRfRVFVQVRJ
T05fRVhUICBHZXRJbnRlZ2VydiAgICAgWjMgICAgICBGVU5DX0FERF9FWFQgICAgY29sb3ItYnVm
ZmVyCi0KLU5ldyBJbXBsZW1lbnRhdGlvbiBEZXBlbmRlbnQgU3RhdGUKLQotICAgIE5vbmUKLQot
UmV2aXNpb24gSGlzdG9yeQotCi0gICAgVmVyc2lvbiAxLjUsIFNlcHRlbWJlciAxNywgMjAwOSAo
Sm9uIExlZWNoKSAtCi0gICAgICAgIE1lcmdlIGludG8gT3BlbkdMIFJlZ2lzdHJ5IHZlcnNpb24g
b2YgdGhlIGV4dGVuc2lvbiBhbmQgYXNzaWduCi0gICAgICAgIE9wZW5HTCBFUyBleHRlbnNpb24g
bnVtYmVyLgotICAgIFZlcnNpb24gMS40LCBNYXkgMTksIDIwMDkgKEJlbmogTGlwY2hhaykgLQot
ICAgICAgICBBZGFwdGVkIGZvciBPcGVuR0wgRVMuCi0gICAgVmVyc2lvbiAxLjMsIE1heSAzMSwg
MTk5NSAtCi0gICAgICAgIExhc3QgU0dJIHJldmlzaW9uLgpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvZXh0ZW5zaW9ucy9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0LnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VYVF9jb2xvcl9idWZmZXJf
ZmxvYXQudHh0CShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9l
eHRlbnNpb25zL0VYVF9jb2xvcl9idWZmZXJfZmxvYXQudHh0CShub25leGlzdGVudCkKQEAgLTEs
MjMwICswLDAgQEAKLU5hbWUKLQotICAgIEVYVF9jb2xvcl9idWZmZXJfZmxvYXQKLQotTmFtZSBT
dHJpbmdzCi0KLSAgICBHTF9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0Ci0KLUNvbnRyaWJ1dG9ycwot
Ci0gICAgT3BlbkdMIEVTIFdvcmtpbmcgR3JvdXAgbWVtYmVycwotCi1Db250YWN0Ci0KLSAgICBN
YXJrIENhbGxvdywgSEkgQ29ycC4gKGNhbGxvdy5tYXJrICdhdCcgYXJ0c3BhcmsuY28uanApCi0K
LU5vdGljZQotCi0gICAgwqkyMDEyIFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KLQotU3RhdHVzCi0K
LSAgICBDb21wbGV0ZQotCi1JUCBTdGF0dXMKLQotICAgIEdyYXBoaWNzIFByb3BlcnRpZXMgSG9s
ZGluZ3MgKEdQSCwgZm9ybWVybHkgU0dJKSBvd25zIFVTIFBhdGVudAotICAgICM2LDY1MCwzMjcs
IGlzc3VlZCBOb3ZlbWJlciAxOCwgMjAwMy4gR1BIIGJlbGlldmVzIHRoaXMgcGF0ZW50Ci0gICAg
Y29udGFpbnMgbmVjZXNzYXJ5IElQIGZvciBncmFwaGljcyBzeXN0ZW1zIGltcGxlbWVudGluZyBm
bG9hdGluZwotICAgIHBvaW50IChGUCkgcmFzdGVyaXphdGlvbiBhbmQgRlAgZnJhbWVidWZmZXIg
Y2FwYWJpbGl0aWVzLgotCi0gICAgR1BIIHdpbGwgbm90IGdyYW50IEtocm9ub3Mgcm95YWx0eS1m
cmVlIHVzZSBvZiB0aGlzIElQIGZvciB1c2UKLSAgICBpbiBPcGVuR0wgRVMsIGJ1dCB3aWxsIGRp
c2N1c3MgbGljZW5zaW5nIG9uIFJBTkQgdGVybXMsIG9uIGFuCi0gICAgaW5kaXZpZHVhbCBiYXNp
cyB3aXRoIGNvbXBhbmllcyB3aXNoaW5nIHRvIHVzZSB0aGlzIElQIGluIHRoZQotICAgIGNvbnRl
eHQgb2YgY29uZm9ybWFudCBPcGVuR0wgRVMgaW1wbGVtZW50YXRpb25zLiBHUEggZG9lcyBub3QK
LSAgICBwbGFuIHRvIG1ha2UgYW55IHNwZWNpYWwgZXhlbXB0aW9uIGZvciBvcGVuIHNvdXJjZQot
ICAgIGltcGxlbWVudGF0aW9ucy4KLQotICAgIFNlZQotICAgIGh0dHBzOi8vd3d3Lmtocm9ub3Mu
b3JnL2ZpbGVzL2lwLWRpc2Nsb3N1cmVzL29wZW5nbC9TR0klMjBJUCUyMERpc2Nsb3N1cmUlMjBN
YXIwNV9jbGVhbi5wZGYKLSAgICBmb3IgdGhlIGZ1bGwgZGlzY2xvc3VyZS4KLQotVmVyc2lvbgot
Ci0gICAgRGF0ZTogSmFudWFyeSAxMXRoLCAyMDEzCi0gICAgUmV2aXNpb246IDUKLQotTnVtYmVy
Ci0KLSAgICBPcGVuR0wgRVMgRXh0ZW5zaW9uICMxMzcKLQotRGVwZW5kZW5jaWVzCi0KLSAgICBS
ZXF1aXJlcyBPcGVuR0wgRVMgMy4wLgotCi0gICAgV3JpdHRlbiBiYXNlZCBvbiB0aGUgd29yZGlu
ZyBvZiB0aGUgT3BlbkdMIEVTIDMuMC4xIFNwZWNpZmljYXRpb24KLSAgICAoSmFudWFyeSAxMHRo
LCAyMDEzKS4KLQotT3ZlcnZpZXcKLQotICAgIFRoaXMgZXh0ZW5zaW9uIGFsbG93cyBhIHZhcmll
dHkgb2YgZmxvYXRpbmcgcG9pbnQgZm9ybWF0cyB0byBiZQotICAgIHJlbmRlcmVkIHRvIHZpYSBm
cmFtZWJ1ZmZlciBvYmplY3RzLgotCi1OZXcgUHJvY2VkdXJlcyBhbmQgRnVuY3Rpb25zCi0KLSAg
ICBOb25lCi0KLU5ldyBUb2tlbnMKLQotICAgIE5vbmUKLQotQWRkaXRpb25zIHRvIENoYXB0ZXIg
MyBvZiB0aGUgT3BlbkdMIEVTIDMuMCBTcGVjaWZpY2F0aW9uCi0oUmFzdGVyaXphdGlvbikKLQot
ICAgIDMuOC4zIFRleHR1cmUgSW1hZ2UgU3BlY2lmaWNhdGlvbiwgdW5udW1iZXJlZCBzdWJzZWN0
aW9uICJSZXF1aXJlZAotICAgIFRleHR1cmUgRm9ybWF0cyIsIHAuIDEyNgotCi0gICAgQ2hhbmdl
IHRoZSBmaXJzdCB0d28gYnVsbGV0IGl0ZW1zIHRvIHRoZSBmb2xsb3dpbmc6Ci0KLSAgICAtIFRl
eHR1cmUgYW5kIHJlbmRlcmJ1ZmZlciBjb2xvciBmb3JtYXRzIChzZWUgc2VjdGlvbiA0LjQuMiku
Ci0gICAgICAtIFJHQkEzMkYsIFJHQkEzMkksIFJHQkEzMlVJLCBSR0JBMTZGLCBSR0JBMTZJLCBS
R0JBMTZVSSwKLSAgICAgICAgUkdCQTgsIFJHQkE4SSwgUkdCQThVSSwgU1JHQjhfQUxQSEE4LCBS
R0IxMF9BMiwgUkdCMTBfLQotICAgICAgICBBMlVJLCBSR0JBNCwgYW5kIFJHQjVfQTEuCi0gICAg
ICAtIFJHQjggYW5kIFJHQjU2NS4KLSAgICAgIC0gUjExRiBHMTFGIEIxMEYuCi0gICAgICAtIFJH
MzJGLCBSRzMySSwgUkczMlVJLCBSRzE2RiwgUkcxNkksIFJHMTZVSSwgUkc4LCBSRzhJLCBhbmQK
LSAgICAgICAgUkc4VUkuCi0gICAgICAtIFIzMkYsIFIzMkksIFIzMlVJLCBSMTZGLCBSMTZJLCBS
MTZVSSwgUjgsIFI4SSwgYW5kIFI4VUkuCi0KLSAgICAtIFRleHR1cmUtb25seSBjb2xvciBmb3Jt
YXRzOgotICAgICAgLSBSR0JBOF9TTk9STS4KLSAgICAgIC0gUkdCMzJGLCBSR0IzMkksIGFuZCBS
R0IzMlVJLgotICAgICAgLSBSR0IxNkYsIFJHQjE2SSwgYW5kIFJHQjE2VUkuCi0gICAgICAtIFJH
QjhfU05PUk0sIFJHQjhJLCBSR0I4VUksIGFuZCBTUkdCOC4KLSAgICAgIC0gUkdCOV9FNS4KLSAg
ICAgIC0gUkc4X1NOT1JNLgotICAgICAgLSBSOF9TTk9STS4KLQotICAgIFRhYmxlIDMuMTIsIHAu
IDEyOCAmIDEyOQotCi0gICAgQ29udmVydCB0aGUgZGFzaCB1bmRlciAnQ29sb3ItcmVuZGVyYWJs
ZScgdG8gYSAnY2hlY2snIGZvciB0aGUKLSAgICBmb2xsb3dpbmcgaW50ZXJuYWwgZm9ybWF0czog
UjE2RiwgUkcxNkYsIFJHQkExNkYsIFIzMkYsIFJHMzJGLAotICAgIFJHQkEzMkYgYW5kIFIxMUZf
RzExRl9CMTBGLgotICAgIAotQWRkaXRpb25zIHRvIENoYXB0ZXIgNCBvZiB0aGUgT3BlbkdMIEVT
IDMuMCBTcGVjaWZpY2F0aW9uIChQZXItRnJhZ21lbnQKLU9wZXJhdGlvbnMgYW5kIHRoZSBGcmFt
ZWJ1ZmZlcikKLQotICAgIChjaGFuZ2VkIGxpbmVzIG1hcmtlZCB3aXRoICo7IGFkZGVkIGxpbmVz
IG1hcmtlZCB3aXRoICspCi0KLSAgICBDaGFwdGVyIDQgSW50cm9kdWN0aW9uLCBwLiAxNjcKLQot
ICAgIFBhcmFncmFwaCA1LCBzZW50ZW5jZSAzLCBwIDE2OCwgaW5zZXJ0ICJmbG9hdGluZyBwb2lu
dCIgYXMgc2hvd246Ci0gICAgICAgICJSLCBHLCBCLCBhbmQgQSBjb21wb25lbnRzIG1heSBiZSBy
ZXByZXNlbnRlZCBhcyB1bnNpZ25lZAotICogICAgICBub3JtYWxpemVkIGZpeGVkLXBvaW50LCBm
bG9hdGluZyBwb2ludCBvciBzaWduZWQgb3IgdW5zaWduZWQKLSAgICAgICAgaW50ZWdlciB2YWx1
ZXM7IC4uLiIgICAgXl5eXl5eXl5eXl5eXl4KLQotICAgIDQuMS43IEJsZW5kaW5nLCBwLiAxNzQK
LQotICAgIE1vZGlmeSBwYXJhZ3JhcGhzIDMgJiA0OgotICAgIAotICogICAgICAiSWYgdGhlIGNv
bG9yIGJ1ZmZlciBpcyBmaXhlZC1wb2ludCwgdGhlIGNvbXBvbmVudHMgb2YgdGhlCi0gICAgc291
cmNlIGFuZCBkZXN0aW5hdGlvbiB2YWx1ZXMgYW5kIGJsZW5kIGZhY3RvcnMgYXJlIGNsYW1wZWQK
LSAqICB0byBbMDsgMV0gcHJpb3IgdG8gZXZhbHVhdGluZyB0aGUgYmxlbmQgZXF1YXRpb24uIElm
IHRoZSBjb2xvcgotICsgIGJ1ZmZlciBpcyBmbG9hdGluZy1wb2ludCwgbm8gY2xhbXBpbmcgb2Nj
dXJzLiBUaGUgcmVzdWx0aW5nIGZvdXIKLSArICB2YWx1ZXMgYXJlIHNlbnQgdG8gdGhlIG5leHQg
b3BlcmF0aW9uLgotICAgIAotICAgICAgICBCbGVuZGluZyBhcHBsaWVzIG9ubHkgaWYgdGhlIGNv
bG9yIGJ1ZmZlciBoYXMgYSBmaXhlZC1wb2ludCBvcgotICogIG9yIGZsb2F0aW5nLXBvaW50IGZv
cm1hdC4gSWYgdGhlIGNvbG9yIGJ1ZmZlciBoYXMgYW4gaW50ZWdlcgotICogIGZvcm1hdCwgcHJv
Y2VlZCB0byB0aGUgbmV4dCBvcGVyYXRpb24uICBGdXJ0aGVybW9yZSwgYW4KLSArICBJTlZBTElE
X09QRVJBVElPTiBlcnJvciBpcyBnZW5lcmF0ZWQgYnkgRHJhd0FycmF5cyBhbmQgdGhlIG90aGVy
Ci0gKyAgZHJhd2luZyBjb21tYW5kcyBkZWZpbmVkIGluIHNlY3Rpb24gMi44LjMgaWYgYmxlbmRp
bmcgaXMgZW5hYmxlZAotICsgIChzZWUgYmVsb3cpIGFuZCBhbnkgZHJhdyBidWZmZXIgaGFzIGEg
MzItYml0IGZsb2F0aW5nLXBvaW50Ci0gKyAgZm9ybWF0LiIKLQotICAgIDQuMi4zIENsZWFyaW5n
IHRoZSBCdWZmZXJzLCBwLiAxODMKLQotICAgIE1vZGlmeSBzZWNvbmQgcGFyYWdyYXBoLCBpbnNl
cnRpbmcgImZsb2F0aW5nIHBvaW50IjoKLQotICAgICIgICB2b2lkIENsZWFyQ29sb3IoZmxvYXQg
ciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSk7Ci0KLSAqICBzZXRzIHRoZSBjbGVhciB2YWx1
ZSBmb3IgZml4ZWQtIGFuZCBmbG9hdGluZy1wb2ludCBjb2xvciBidWZmZXJzLgotICAgIC4uLiIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eCi0KLSAgICA0LjMu
MSBSZWFkaW5nIFBpeGVscywgcC4gMTg2Ci0KLSAgICBJbiBwYXJhZ3JhcGggNCwgYmVnaW5uaW5n
ICJPbmx5IHR3byBjb21iaW5hdGlvbnMgb2YgZm9ybWF0Ci0gICAgYW5kIHR5cGUgYXJlIGFjY2Vw
dGVkIC4uLiIsIGFmdGVyIHRoZSBzZW50ZW5jZSBlbmRpbmcgIi4uLiB0eXBlCi0gICAgVU5TSUdO
RURfQllURSBpcyBhY2NlcHRlZC4iIGluc2VydCB0aGUgZm9sbG93aW5nIHNlbnRlbmNlOgotICAg
ICAgICAiRm9yIGZsb2F0aW5nLXBvaW50IHJlbmRlcmluZyBzdXJmYWNlcywgdGhlIGNvbWJpbmF0
aW9uCi0gICAgICAgIGZvcm1hdCBSR0JBIGFuZCB0eXBlIEZMT0FUIGlzIGFjY2VwdGVkLiIKLQot
ICAgIDQuMy4xIHVubnVtYmVyZWQgc3Vic2VjdGlvbiAiT2J0YWluaW5nIFBpeGVscyBmcm9tIHRo
ZSBGcmFtZWJ1ZmZlciIsCi0gICAgcC4gMTg4Ci0KLSAgICBNb2RpZnkgcGVudWx0aW1hdGUgcGFy
YWdyYXBoLCBwMTg5LCAiSWYgZm9ybWF0IGlzIGFuIGludGVnZXIgLi4uIgotCi0gICAgIklmIGZv
cm1hdCBpcyBhbiBpbnRlZ2VyIGZvcm1hdCBhbmQgdGhlIGNvbG9yIGJ1ZmZlciBpcyBub3QgYW4K
LSAgICBpbnRlZ2VyIGZvcm1hdDsgaWYgdGhlIGNvbG9yIGJ1ZmZlciBpcyBhbiBpbnRlZ2VyIGZv
cm1hdCBhbmQKLSAqICBmb3JtYXQgaXMgbm90IGFuIGludGVnZXIgZm9ybWF0OyBpZiBmb3JtYXQg
aXMgYW4gaW50ZWdlciBmb3JtYXQKLSAqICBhbmQgdHlwZSBpcyBGTE9BVCwgSEFMRl9GTE9BVCwg
b3IgVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFVjsKLSArICBvciBpZiB0aGUgY29sb3IgYnVm
ZmVyIGlzIGEgZmxvYXRpbmctcG9pbnQgZm9ybWF0IGFuZCB0eXBlIGlzCi0gKyAgbm90IEZMT0FU
LCBIQUxGIEZMT0FULCBvciBVTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWLCB0aGUgZXJyb3IK
LSAgICBJTlZBTElEX09QRVJBVElPTiBvY2N1cnMuIgotCi0gICAgNC4zLjEgdW5udW1iZXJlZCBz
dWJzZWN0aW9uICJDb252ZXJzaW9uIG9mIFJHQkEgdmFsdWVzIiwgcC4xOTAKLQotICAgIFNvbGUg
cGFyYWdyYXBoLCBzZW50ZW5jZSAzLCBpbnNlcnQgIm9yIGZsb2F0aW5nIHBvaW50IiBhcyBzaG93
bjoKLSAqICAgICAgIkZvciBhbiBpbnRlZ2VyIG9yIGZsb2F0aW5nIHBvaW50IGNvbG9yIGJ1ZmZl
ciwgdGhlIGVsZW1lbnRzCi0gICAgICAgIGFyZSB1bm1vZGlmaWVkLiJeXl5eXl5eXl5eXl5eXl5e
XgotCi0gICAgNC4zLjIgQ29weWluZyBQaXhlbHMsIHAxOTIKLQotICAgIE1vZGlmeSBmaXJzdCBl
cnJvciBjb25kaXRpb24sIGF0IGJvdHRvbSBvZiBwMTkzLCAiVGhlIHJlYWQgYnVmZmVyCi0gICAg
Y29udGFpbnMgLi4uIiB0byBlbmNvbXBhc3MgZmxvYXRpbmctcG9pbnQgYnVmZmVycy4KLQotICog
ICItIFRoZSByZWFkIGJ1ZmZlciBjb250YWlucyBmaXhlZC1wb2ludCBvciBmbG9hdGluZy1wb2lu
dCB2YWx1ZXMKLSAqICAgICBhbmQgYW55IGRyYXcgYnVmZmVyIGNvbnRhaW5zIG5laXRoZXIgZml4
ZWQtcG9pbnQgbm9yCi0gKiAgICAgZmxvYXRpbmctcG9pbnQgdmFsdWVzLiIKLQotICAgIDQuNC4y
IEF0dGFjaGluZyBJbWFnZXMgdG8gRnJhbWVidWZmZXIgT2JqZWN0cywgcC4gMTk3LCB1bm51bWJl
cmVkCi0gICAgc3Vic2VjdGlvbiAiUmVxdWlyZWQgUmVuZGVyYnVmZmVyIEZvcm1hdHMiLCBwLiAy
MDAKLQotICAgIEluIHRoZSBsYXN0IHBhcmFncmFwaCBiZWdpbm5pbmcgIkltcGxlbWVudGF0aW9u
cyBtdXN0IHN1cHBvcnQKLSAgICBjcmVhdGlvbiAuLi4iLCBtb2RpZnkgdGhlIGZpbmFsIHBocmFz
ZSB0bwotCi0gKiAgICJ3aXRoIHRoZSBleGNlcHRpb24gb2Ygc2lnbmVkIGFuZCB1bnNpZ25lZCBp
bnRlZ2VyLCBSR0JBMTZGLAotICsgICBSMzJGLCBSRzMyRiBhbmQgUkdCQTMyRiBmb3JtYXRzLgot
Ci1BZGRpdGlvbnMgdG8gQ2hhcHRlciA1IG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmljYXRp
b24gKFNwZWNpYWwgRnVuY3Rpb25zKQotCi0gICAgTm9uZQotCi1BZGRpdGlvbnMgdG8gQ2hhcHRl
ciA2IG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmljYXRpb24gKFN0YXRlIGFuZCBTdGF0ZQot
UmVxdWVzdHMpCi0KLSAgICA2LjEuMTUgSW50ZXJuYWwgRm9ybWF0IFF1ZXJpZXMsIHAuIDIzNwot
Ci0gICAgUC4gMjM4LCBwYXJhZ3JhcGggOCBhZnRlciAiU2luY2UgbXVsdGlzYW1wbGluZyBpcyBu
b3Qgc3VwcG9ydGVkCi0gICAgZm9yIHNpZ25lZCBhbmQgdW5zaWduZWQgaW50ZWdlciBpbnRlcm5h
bCBmb3JtYXRzLCB0aGUgdmFsdWUgb2YKLSAgICBOVU1fU0FNUExFX0NPVU5UUyB3aWxsIGJlIHpl
cm8gZm9yIHN1Y2ggZm9ybWF0cy4iLCBpbnNlcnQgbmV3Ci0gICAgb25lLXNlbnRlbmNlIHBhcmFn
cmFwaDoKLQotICAgICAgICAiSWYgPGludGVybmFsZm9ybWF0PiBpcyBSR0JBMTZGLCBSMzJGLCBS
RzMyRiwgb3IgUkdCQTMyRiwgdGhlCi0gICAgICAgIHZhbHVlIG9mIE5VTV9TQU1QTEVfQ09VTlRT
IG1heSBiZSB6ZXJvLCBvciBlbHNlIHRoZSBtYXhpbXVtCi0gICAgICAgIHZhbHVlIGluIFNBTVBM
RVMgbWF5IGJlIGxlc3MgdGhhbiB0aGUgdmFsdWUgb2YgTUFYX1NBTVBMRVMuIgotCi1OZXcgSW1w
bGVtZW50YXRpb24gRGVwZW5kZW50IFN0YXRlCi0KLSAgICBOb25lCi0KLUlzc3VlcwotCi1SZXZp
c2lvbiBIaXN0b3J5Ci0KLSAgICBSZXYuICBEYXRlICAgICBBdXRob3IgICAgIENoYW5nZXMKLSAg
ICAtLS0tICAtLS0tLS0tLSAtLS0tLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0gICAgICAxICAgMTAvMTYvMTIgbWFya2MgICAgICBJbml0aWFsIHZlcnNp
b24KLSAgICAgIDIgICAxMC8xOC8xMiBtYXJrYyAgICAgIFJlZmVyZW5jZWQgcHJlbGltaW5hcnkg
dmVyc2lvbiBvZiBPcGVuR0wKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVTIDMuMC4x
IHNwZWNpZmljYXRpb24gYW5kIHVwZGF0ZWQgcGFnZQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVtYmVycy4KLSAgICAgIDMgICAxMS8yMS8xMiBtYXJrYyAgICAgIENvcnJlY3RlZCBJ
UCBzdGF0dXMuCi0gICAgICA0ICAgMDEvMDkvMTMgbWFya2MgICAgICBDaGFuZ2VkIGRhdGUgb2Yg
cmVmZXJlbmNlZCBPcGVuR0wgRVMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMC4x
IHNwZWNpZmljYXRpb24uIE1hZGUgbWlub3IgbGFuZ3VhZ2UKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpbXBsaWZpY2F0aW9uLgotICAgICAgNSAgIDAxLzExLzEzIG1hcmtjICAgICAg
Q2hhbmdlZCBkYXRlIHRvIHJlbGVhc2UgdmVyc2lvbiBvZgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgT3BlbkdMIEVTIDMuMC4xIHNwZWNpZmljYXRpb24uCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDbGFyaWZpZWQgY2hhbmdlIHRvICJSZXF1aXJlZAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVuZGVyYnVmZmVyIGZvcm1hdHMiIHNlY3Rpb24uCi0KLSMgdmlt
OmFpOnRzPTQ6c3RzPTQ6c3c9NDpleHBhbmR0YWI6dGV4dHdpZHRoPTcwCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VYVF9kcmF3X2J1ZmZlcnMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRVhUX2RyYXdfYnVmZmVy
cy50eHQJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVu
c2lvbnMvRVhUX2RyYXdfYnVmZmVycy50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSw1NDIgKzAsMCBA
QAotTmFtZQotCi0gICAgRVhUX2RyYXdfYnVmZmVycwotCi1OYW1lIFN0cmluZ3MKLQotICAgIEdM
X0VYVF9kcmF3X2J1ZmZlcnMKLQotQ29udHJpYnV0b3JzCi0KLSAgICBDb250cmlidXRvcnMgdG8g
R0xfTlZfZHJhd19idWZmZXJzCi0gICAgQ29udHJpYnV0b3JzIHRvIEdMX05WX2Zib19jb2xvcl9h
dHRhY2htZW50cwotICAgIENvbnRyaWJ1dG9ycyB0byB0aGUgT3BlbkdMIEVTIDIuMCBzcGVjaWZp
Y2F0aW9uCi0gICAgQ29udHJpYnV0b3JzIHRvIHRoZSBPcGVuR0xTTCBFUyAxLjAuMTcgc3BlY2lm
aWNhdGlvbgotICAgIENvbnRyaWJ1dG9ycyB0byB0aGUgT3BlbkdMIEVTIDMuMCBzcGVjaWZpY2F0
aW9uCi0gICAgTmljb2xhcyBDYXBlbnMsIFRyYW5zR2FtaW5nIEluYy4KLSAgICBEYW5pZWwgS29j
aCwgVHJhbnNHYW1pbmcgSW5jLgotICAgIEFsYXN0YWlyIFBhdHJpY2ssIEdvb2dsZSBJbmMuCi0g
ICAgS2VubmV0aCBSdXNzZWxsLCBHb29nbGUgSW5jLgotICAgIEdyZWcgUm90aCwgTlZJRElBIENv
cnBvcmF0aW9uCi0gICAgQmVuIEJvd21hbiwgSW1hZ2luYXRpb24gVGVjaG5vbG9naWVzCi0gICAg
TWVtYmVycyBvZiB0aGUgV2ViR0wgYW5kIE9wZW5HTCBFUyB3b3JraW5nIGdyb3VwcwotCi1Db250
YWN0Ci0KLSAgICBEYW5pZWwgS29jaCAoZGFuaWVsICdhdCcgdHJhbnNnYW1pbmcuY29tKQotCi1T
dGF0dXMKLQotICAgIERyYWZ0IENvbXBsZXRlIAotCi1WZXJzaW9uCi0KLSAgICBMYXN0IE1vZGlm
aWVkIERhdGU6IEphbnVhcnkgMzAsIDIwMTMKLSAgICBSZXZpc2lvbjogIzcKLQotTnVtYmVyCi0K
LSAgICBUQkQKLQotRGVwZW5kZW5jaWVzCi0KLSAgICBPcGVuR0wgRVMgMi4wIGlzIHJlcXVpcmVk
LgotCi0gICAgVGhlIGV4dGVuc2lvbiBpcyB3cml0dGVuIGFnYWluc3QgdGhlIE9wZW5HTCBFUyAy
LjAgc3BlY2lmaWNhdGlvbi4KLQotICAgIEFOR0xFX2ZyYW1lYnVmZmVyX2JsaXQgYWZmZWN0cyB0
aGUgZGVmaW5pdGlvbiBvZiB0aGlzIGV4dGVuc2lvbi4KLSAgICBBUFBMRV9mcmFtZWJ1ZmZlcl9t
dWx0aXNhbXBsZSBhZmZlY3RzIHRoZSBkZWZpbml0aW4gb2YgdGhpcyBleHRlbnNpb24uCi0KLU92
ZXJ2aWV3Ci0KLSAgICBUaGlzIGV4dGVuc2lvbiBpbmNyZWFzZXMgdGhlIG51bWJlciBvZiBhdmFp
bGFibGUgZnJhbWVidWZmZXIgb2JqZWN0Ci0gICAgY29sb3IgYXR0YWNobWVudCBwb2ludHMsIGV4
dGVuZHMgT3BlbkdMIEVTIDIuMCB0byBhbGxvdyBtdWx0aXBsZSBvdXRwdXQKLSAgICBjb2xvcnMs
IGFuZCBwcm92aWRlcyBhIG1lY2hhbmlzbSBmb3IgZGlyZWN0aW5nIHRob3NlIG91dHB1dHMgdG8K
LSAgICBtdWx0aXBsZSBjb2xvciBidWZmZXJzLgotCi0gICAgVGhpcyBleHRlbnNpb24gaXMgc2lt
aWxhciB0byB0aGUgY29tYmluYXRpb24gb2YgdGhlIEdMX05WX2RyYXdfYnVmZmVycwotICAgIGFu
ZCBHTF9OVl9mYm9fY29sb3JfYXR0YWNobWVudHMgZXh0ZW5zaW9ucywgYnV0IGltcG9zZXMgY2Vy
dGFpbgotICAgIHJlc3RyaWN0aW9ucyBpbmZvcm1lZCBieSB0aGUgT3BlbkdMIEVTIDMuMCBBUEku
Ci0KLU5ldyBQcm9jZWR1cmVzIGFuZCBGdW5jdGlvbnMKLQotICAgICAgdm9pZCBEcmF3QnVmZmVy
c0VYVChzaXplaSBuLCBjb25zdCBlbnVtICpidWZzKTsKLQotTmV3IFRva2VucwotCi0gICAgQWNj
ZXB0ZWQgYnkgdGhlIDxwbmFtZT4gcGFyYW1ldGVyIG9mIEdldEludGVnZXJ2OgotCi0gICAgICAg
IE1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQgICAgICAgICAgICAgMHg4Q0RGCi0KLSAgICBBY2Nl
cHRlZCBieSB0aGUgPHBuYW1lPiBwYXJhbWV0ZXJzIG9mIEdldEludGVnZXJ2IGFuZCBHZXRGbG9h
dHY6Ci0KLSAgICAgICAgTUFYX0RSQVdfQlVGRkVSU19FWFQgICAgICAgICAgICAgICAgICAweDg4
MjQKLSAgICAgICAgRFJBV19CVUZGRVIwX0VYVCAgICAgICAgICAgICAgICAgICAgICAweDg4MjUK
LSAgICAgICAgRFJBV19CVUZGRVIxX0VYVCAgICAgICAgICAgICAgICAgICAgICAweDg4MjYKLSAg
ICAgICAgRFJBV19CVUZGRVIyX0VYVCAgICAgICAgICAgICAgICAgICAgICAweDg4MjcKLSAgICAg
ICAgRFJBV19CVUZGRVIzX0VYVCAgICAgICAgICAgICAgICAgICAgICAweDg4MjgKLSAgICAgICAg
RFJBV19CVUZGRVI0X0VYVCAgICAgICAgICAgICAgICAgICAgICAweDg4MjkKLSAgICAgICAgRFJB
V19CVUZGRVI1X0VYVCAgICAgICAgICAgICAgICAgICAgICAweDg4MkEKLSAgICAgICAgRFJBV19C
VUZGRVI2X0VYVCAgICAgICAgICAgICAgICAgICAgICAweDg4MkIKLSAgICAgICAgRFJBV19CVUZG
RVI3X0VYVCAgICAgICAgICAgICAgICAgICAgICAweDg4MkMKLSAgICAgICAgRFJBV19CVUZGRVI4
X0VYVCAgICAgICAgICAgICAgICAgICAgICAweDg4MkQKLSAgICAgICAgRFJBV19CVUZGRVI5X0VY
VCAgICAgICAgICAgICAgICAgICAgICAweDg4MkUKLSAgICAgICAgRFJBV19CVUZGRVIxMF9FWFQg
ICAgICAgICAgICAgICAgICAgICAweDg4MkYKLSAgICAgICAgRFJBV19CVUZGRVIxMV9FWFQgICAg
ICAgICAgICAgICAgICAgICAweDg4MzAKLSAgICAgICAgRFJBV19CVUZGRVIxMl9FWFQgICAgICAg
ICAgICAgICAgICAgICAweDg4MzEKLSAgICAgICAgRFJBV19CVUZGRVIxM19FWFQgICAgICAgICAg
ICAgICAgICAgICAweDg4MzIKLSAgICAgICAgRFJBV19CVUZGRVIxNF9FWFQgICAgICAgICAgICAg
ICAgICAgICAweDg4MzMKLSAgICAgICAgRFJBV19CVUZGRVIxNV9FWFQgICAgICAgICAgICAgICAg
ICAgICAweDg4MzQKLQotICAgIEFjY2VwdGVkIGJ5IHRoZSA8YXR0YWNobWVudD4gcGFyYW1ldGVy
IG9mIEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyLAotICAgIEZyYW1lYnVmZmVyVGV4dHVyZTJEIGFu
ZCBHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdiwgYW5kIGJ5Ci0gICAgdGhlIDxi
dWZzPiBwYXJhbWV0ZXIgb2YgRHJhd0J1ZmZlcnNFWFQ6Ci0KLSAgICAgICAgQ09MT1JfQVRUQUNI
TUVOVDBfRVhUICAgICAgICAgICAgICAgICAgICAgIDB4OENFMAotICAgICAgICBDT0xPUl9BVFRB
Q0hNRU5UMV9FWFQgICAgICAgICAgICAgICAgICAgICAgMHg4Q0UxCi0gICAgICAgIENPTE9SX0FU
VEFDSE1FTlQyX0VYVCAgICAgICAgICAgICAgICAgICAgICAweDhDRTIKLSAgICAgICAgQ09MT1Jf
QVRUQUNITUVOVDNfRVhUICAgICAgICAgICAgICAgICAgICAgIDB4OENFMwotICAgICAgICBDT0xP
Ul9BVFRBQ0hNRU5UNF9FWFQgICAgICAgICAgICAgICAgICAgICAgMHg4Q0U0Ci0gICAgICAgIENP
TE9SX0FUVEFDSE1FTlQ1X0VYVCAgICAgICAgICAgICAgICAgICAgICAweDhDRTUKLSAgICAgICAg
Q09MT1JfQVRUQUNITUVOVDZfRVhUICAgICAgICAgICAgICAgICAgICAgIDB4OENFNgotICAgICAg
ICBDT0xPUl9BVFRBQ0hNRU5UN19FWFQgICAgICAgICAgICAgICAgICAgICAgMHg4Q0U3Ci0gICAg
ICAgIENPTE9SX0FUVEFDSE1FTlQ4X0VYVCAgICAgICAgICAgICAgICAgICAgICAweDhDRTgKLSAg
ICAgICAgQ09MT1JfQVRUQUNITUVOVDlfRVhUICAgICAgICAgICAgICAgICAgICAgIDB4OENFOQot
ICAgICAgICBDT0xPUl9BVFRBQ0hNRU5UMTBfRVhUICAgICAgICAgICAgICAgICAgICAgMHg4Q0VB
Ci0gICAgICAgIENPTE9SX0FUVEFDSE1FTlQxMV9FWFQgICAgICAgICAgICAgICAgICAgICAweDhD
RUIKLSAgICAgICAgQ09MT1JfQVRUQUNITUVOVDEyX0VYVCAgICAgICAgICAgICAgICAgICAgIDB4
OENFQwotICAgICAgICBDT0xPUl9BVFRBQ0hNRU5UMTNfRVhUICAgICAgICAgICAgICAgICAgICAg
MHg4Q0VECi0gICAgICAgIENPTE9SX0FUVEFDSE1FTlQxNF9FWFQgICAgICAgICAgICAgICAgICAg
ICAweDhDRUUKLSAgICAgICAgQ09MT1JfQVRUQUNITUVOVDE1X0VYVCAgICAgICAgICAgICAgICAg
ICAgIDB4OENFRgotCi0gICAgVGhlIENPTE9SX0FUVEFDSE1FTlQwX0VYVCBjb25zdGFudCBpcyBl
cXVhbCB0byB0aGUKLSAgICBDT0xPUl9BVFRBQ0hNRU5UMCBjb25zdGFudC4KLQotICAgIEVhY2gg
Q09MT1JfQVRUQUNITUVOVDxpPl9FWFQgYWRoZXJlcyB0byBDT0xPUl9BVFRBQ0hNRU5UPGk+X0VY
VAotICAgID0gQ09MT1JfQVRUQUNITUVOVDBfRVhUICsgPGk+LgotCi1DaGFuZ2VzIHRvIENoYXB0
ZXIgMyBvZiB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZpY2F0aW9uIChSYXN0ZXJpemF0aW9uKQot
Ci0gICAgU2VjdGlvbiAzLjIsIChNdWx0aXNhbXBsaW5nKS4gUmVwbGFjZSB0aGUgc2Vjb25kIHBh
cmFncmFwaDoKLQotICAgIEFuIGFkZGl0aW9uYWwgYnVmZmVyLCBjYWxsZWQgdGhlIG11bHRpc2Ft
cGxlIGJ1ZmZlciwgaXMgYWRkZWQgdG8gdGhlCi0gICAgd2luZG93IHN5c3RlbS1wcm92aWRlZCBm
cmFtZWJ1ZmZlci4gUGl4ZWwgc2FtcGxlIHZhbHVlcywgaW5jbHVkaW5nCi0gICAgY29sb3IsIGRl
cHRoLCBhbmQgc3RlbmNpbCB2YWx1ZXMsIGFyZSBzdG9yZWQgaW4gdGhpcyBidWZmZXIuIFNhbXBs
ZXMKLSAgICBjb250YWluIHNlcGFyYXRlIGNvbG9yIHZhbHVlcyBmb3IgZWFjaCBmcmFnbWVudCBj
b2xvci4gV2hlbiB0aGUKLSAgICB3aW5kb3cgc3lzdGVtLXByb3ZpZGVkIGZyYW1lYnVmZmVyIGlu
Y2x1ZGVzIGEgbXVsdGlzYW1wbGUgYnVmZmVyLCBpdAotICAgIGRvZXMgbm90IGluY2x1ZGUgZGVw
dGggb3Igc3RlbmNpbCBidWZmZXJzLCBldmVuIGlmIHRoZSBtdWx0aXNhbXBsZQotICAgIGJ1ZmZl
ciBkb2VzIG5vdCBzdG9yZSBkZXB0aCBvciBzdGVuY2lsIHZhbHVlcy4gQ29sb3IgYnVmZmVycyBk
bwotICAgIGNvZXhpc3Qgd2l0aCB0aGUgbXVsdGlzYW1wbGUgYnVmZmVyLCBob3dldmVyLgotCi0g
ICAgU2VjdGlvbiAzLjguMiwgKFNoYWRlciBFeGVjdXRpb24pIFJlcGxhY2Ugc3Vic2VjdGlvbiAi
U2hhZGVyCi0gICAgT3V0cHV0cyI6Ci0KLSAgICBUaGUgT3BlbkdMIEVTIFNoYWRpbmcgTGFuZ3Vh
Z2Ugc3BlY2lmaWNhdGlvbiBkZXNjcmliZXMgdGhlIHZhbHVlcwotICAgIHRoYXQgbWF5IGJlIG91
dHB1dCBieSBhIGZyYWdtZW50IHNoYWRlci4gVGhlc2UgYXJlIGdsX0ZyYWdDb2xvciBhbmQKLSAg
ICBnbF9GcmFnRGF0YVtuXS4gIFRoZSBmaW5hbCBmcmFnbWVudCBjb2xvciB2YWx1ZXMgb3IgdGhl
IGZpbmFsCi0gICAgZnJhZ21lbnQgZGF0YSB2YWx1ZXMgd3JpdHRlbiBieSBhIGZyYWdtZW50IHNo
YWRlciBhcmUgY2xhbXBlZCB0byB0aGUKLSAgICByYW5nZSBbMCwgMV0gYW5kIHRoZW4gY29udmVy
dGVkIHRvIGZpeGVkLXBvaW50IGFzIGRlc2NyaWJlZCBpbgotICAgIHNlY3Rpb24gMi4xLjIgZm9y
IGZyYW1lYnVmZmVyIGNvbG9yIGNvbXBvbmVudHMuCi0KLSAgICBXcml0aW5nIHRvIGdsX0ZyYWdD
b2xvciBzcGVjaWZpZXMgdGhlIGZyYWdtZW50IGNvbG9yIChjb2xvciBudW1iZXIKLSAgICB6ZXJv
KSB0aGF0IHdpbGwgYmUgdXNlZCBieSBzdWJzZXF1ZW50IHN0YWdlcyBvZiB0aGUgcGlwZWxpbmUu
Ci0gICAgV3JpdGluZyB0byBnbF9GcmFnRGF0YVtuXSBzcGVjaWZpZXMgdGhlIHZhbHVlIG9mIGZy
YWdtZW50IGNvbG9yCi0gICAgbnVtYmVyIG4uIEFueSBjb2xvcnMsIG9yIGNvbG9yIGNvbXBvbmVu
dHMsIGFzc29jaWF0ZWQgd2l0aCBhCi0gICAgZnJhZ21lbnQgdGhhdCBhcmUgbm90IHdyaXR0ZW4g
YnkgdGhlIGZyYWdtZW50IHNoYWRlciBhcmUgdW5kZWZpbmVkLgotICAgIEEgZnJhZ21lbnQgc2hh
ZGVyIG1heSBub3Qgc3RhdGljYWxseSBhc3NpZ24gdmFsdWVzIHRvIGJvdGgKLSAgICBnbF9GcmFn
Q29sb3IgYW5kIGdsX0ZyYWdEYXRhLiBJbiB0aGlzIGNhc2UsIGEgY29tcGlsZSBvciBsaW5rIGVy
cm9yCi0gICAgd2lsbCByZXN1bHQuIEEgc2hhZGVyIHN0YXRpY2FsbHkgYXNzaWducyBhIHZhbHVl
IHRvIGEgdmFyaWFibGUgaWYsCi0gICAgYWZ0ZXIgcHJlcHJvY2Vzc2luZywgaXQgY29udGFpbnMg
YSBzdGF0ZW1lbnQgdGhhdCB3b3VsZCB3cml0ZSB0byB0aGUKLSAgICB2YXJpYWJsZSwgd2hldGhl
ciBvciBub3QgcnVuLXRpbWUgZmxvdyBvZiBjb250cm9sIHdpbGwgY2F1c2UgdGhhdAotICAgIHN0
YXRlbWVudCB0byBiZSBleGVjdXRlZC4KLQotQ2hhbmdlcyB0byBDaGFwdGVyIDQgb2YgdGhlIE9w
ZW5HTCBFUyAyLjAgU3BlY2lmaWNhdGlvbiAoUGVyLUZyYWdtZW50Ci1PcGVyYXRpb25zIGFuZCB0
aGUgRnJhbWUgQnVmZmVyKQotCi0gICAgTW9kaWZ5IHRoZSBvdmVydmlldyBvZiBDaGFwdGVyIDQg
YW5kIHJlcGxhY2UgdGhlIHNlbnRlbmNlcwotICAgIG9mIHRoZSBmaWZ0aCBwYXJhZ3JhcGggd2hp
Y2ggcmVhZDogCi0KLSAgICAiVGhlIG5hbWUgb2YgdGhlIGNvbG9yIGJ1ZmZlciBvZiBhbiBhcHBs
aWNhdGlvbi1jcmVhdGVkIGZyYW1lYnVmZmVyCi0gICAgb2JqZWN0IGlzIENPTE9SX0FUVEFDSE1F
TlQwLiBUaGUgbmFtZXMgb2YgdGhlIGRlcHRoIGFuZCBzdGVuY2lsIGJ1ZmZlcnMKLSAgICBhcmUg
REVQVEhfQVRUQUNITUVOVCBhbmQgU1RFTkNJTF9BVFRBQ0hNRU5ULiIgCi0KLSAgICBXaXRoIHRo
ZSBmb2xsb3dpbmc6Ci0KLSAgICAiQSBmcmFtZWJ1ZmZlciBvYmplY3QgaGFzIGFuIGFycmF5IG9m
IGNvbG9yIGJ1ZmZlciBhdHRhY2htZW50IHBvaW50cywKLSAgICBudW1iZXJlZCB6ZXJvIHRocm91
Z2ggPG4+LCBhIGRlcHRoIGJ1ZmZlciBhdHRhY2htZW50IHBvaW50LCBhbmQgYQotICAgIHN0ZW5j
aWwgYnVmZmVyIGF0dGFjaG1lbnQgcG9pbnQuIiAKLQotICAgIEluc2VydCBUYWJsZSA0LjMgdG8g
U2VjdGlvbiA0LjIuMSAoYW5kIHJlbnVtYmVyIHN1YnNlcXVlbnQgdGFibGVzKToKLQotICAgIFN5
bWJvbGljIENvbnN0YW50ICAgICAgICAgICAgICAgICAgICAgICBNZWFuaW5nCi0gICAgLS0tLS0t
LS0tLS0tLS0tLS0gICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
ICAgIE5PTkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBObyBidWZmZXIKLQot
ICAgIENPTE9SX0FUVEFDSE1FTlQ8aT5fRVhUIChzZWUgY2FwdGlvbikgICBPdXRwdXQgZnJhZ21l
bnQgY29sb3IgdG8gaW1hZ2UgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGF0dGFjaGVkIGF0IGNvbG9yIGF0dGFjaG1lbnQKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnQgaQotCi0gICAgVGFibGUgNC4zOiBBcmd1bWVu
dHMgdG8gRHJhd0J1ZmZlcnNFWFQgd2hlbiB0aGUgY29udGV4dCBpcyBib3VuZCB0byBhCi0gICAg
ZnJhbWVidWZmZXIgb2JqZWN0LCBhbmQgdGhlIGJ1ZmZlcnMgdGhleSBpbmRpY2F0ZS4gPGk+IGlu
Ci0gICAgQ09MT1JfQVRUQUNITUVOVDxpPl9FWFQgbWF5IHJhbmdlIGZyb20gemVybyB0byB0aGUg
dmFsdWUgb2YKLSAgICBNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUIG1pbnVzIG9uZS4KLQotICAg
IFJlcGxhY2UgU2VjdGlvbiA0LjIuMSwgIlNlbGVjdGluZyBhIEJ1ZmZlciBmb3IgV3JpdGluZyIg
d2l0aCB0aGUgZm9sbG93aW5nOgotCi0gICAgIkJ5IGRlZmF1bHQsIGNvbG9yIHZhbHVlcyBhcmUg
d3JpdHRlbiBpbnRvIHRoZSBmcm9udCBidWZmZXIgZm9yCi0gICAgc2luZ2xlIGJ1ZmZlcmVkIHN1
cmZhY2VzIG9yIGludG8gdGhlIGJhY2sgYnVmZmVyIGZvciBiYWNrIGJ1ZmZlcmVkCi0gICAgc3Vy
ZmFjZXMgYXMgZGV0ZXJtaW5lZCB3aGVuIG1ha2luZyB0aGUgY29udGV4dCBjdXJyZW50LiBUbyBj
b250cm9sCi0gICAgdGhlIGNvbG9yIGJ1ZmZlciBpbnRvIHdoaWNoIGVhY2ggb2YgdGhlIGZyYWdt
ZW50IGNvbG9yIHZhbHVlcyBpcwotICAgIHdyaXR0ZW4sIERyYXdCdWZmZXJzRVhUIGlzIHVzZWQu
Ci0KLSAgICBUaGUgY29tbWFuZAotCi0gICAgICB2b2lkIERyYXdCdWZmZXJzRVhUKHNpemVpIG4s
IGNvbnN0IGVudW0gKmJ1ZnMpOwotCi0gICAgZGVmaW5lcyB0aGUgZHJhdyBidWZmZXJzIHRvIHdo
aWNoIGFsbCBmcmFnbWVudCBjb2xvcnMgYXJlIHdyaXR0ZW4uCi0gICAgPG4+IHNwZWNpZmllcyB0
aGUgbnVtYmVyIG9mIGJ1ZmZlcnMgaW4gPGJ1ZnM+LiA8YnVmcz4gaXMgYSBwb2ludGVyCi0gICAg
dG8gYW4gYXJyYXkgb2Ygc3ltYm9saWMgY29uc3RhbnRzIHNwZWNpZnlpbmcgdGhlIGJ1ZmZlciB0
byB3aGljaAotICAgIGVhY2ggZnJhZ21lbnQgY29sb3IgaXMgd3JpdHRlbi4KLQotICAgIEVhY2gg
YnVmZmVyIGxpc3RlZCBpbiA8YnVmcz4gbXVzdCBiZSBCQUNLLCBOT05FLCBvciBvbmUgb2YgdGhl
Ci0gICAgdmFsdWVzIGZyb20gdGFibGUgNC4zLiBGdXJ0aGVyLCBhY2NlcHRhYmxlIHZhbHVlcyBm
b3IgdGhlIGNvbnN0YW50cwotICAgIGluIDxidWZzPiBkZXBlbmQgb24gd2hldGhlciB0aGUgR0wg
aXMgdXNpbmcgdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIKLSAgICAoaS5lLiwgRFJBV19GUkFNRUJV
RkZFUl9CSU5ESU5HIGlzIHplcm8pLCBvciBhIGZyYW1lYnVmZmVyIG9iamVjdAotICAgIChpLmUu
LCBEUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkcgaXMgbm9uLXplcm8pLiBGb3IgbW9yZSBpbmZvcm1h
dGlvbgotICAgIGFib3V0IGZyYW1lYnVmZmVyIG9iamVjdHMsIHNlZSBzZWN0aW9uIDQuNC4KLQot
ICAgIElmIHRoZSBHTCBpcyBib3VuZCB0byB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciwgdGhlbiA8
bj4gbXVzdCBiZSAxCi0gICAgYW5kIHRoZSBjb25zdGFudCBtdXN0IGJlIEJBQ0sgb3IgTk9ORS4g
V2hlbiBkcmF3IGJ1ZmZlciB6ZXJvIGlzCi0gICAgQkFDSywgY29sb3IgdmFsdWVzIGFyZSB3cml0
dGVuIGludG8gdGhlIHNvbGUgYnVmZmVyIGZvciBzaW5nbGUtCi0gICAgYnVmZmVyZWQgY29udGV4
dHMsIG9yIGludG8gdGhlIGJhY2sgYnVmZmVyIGZvciBkb3VibGUtYnVmZmVyZWQKLSAgICBjb250
ZXh0cy4gSWYgRHJhd0J1ZmZlcnNFWFQgaXMgc3VwcGxpZWQgd2l0aCBhIGNvbnN0YW50IG90aGVy
IHRoYW4KLSAgICBCQUNLIGFuZCBOT05FLCB0aGUgZXJyb3IgSU5WQUxJRF9PUEVSQVRJT04gaXMg
Z2VuZXJhdGVkLgotCi0gICAgSWYgdGhlIEdMIGlzIGJvdW5kIHRvIGEgZHJhdyBmcmFtZWJ1ZmZl
ciBvYmplY3QsIHRoZW4gZWFjaCBvZiB0aGUKLSAgICBjb25zdGFudHMgbXVzdCBiZSBvbmUgb2Yg
dGhlIHZhbHVlcyBsaXN0ZWQgaW4gdGFibGUgNC4zLgotCi0gICAgSW4gYm90aCBjYXNlcywgdGhl
IGRyYXcgYnVmZmVycyBiZWluZyBkZWZpbmVkIGNvcnJlc3BvbmQgaW4gb3JkZXIgdG8KLSAgICB0
aGUgcmVzcGVjdGl2ZSBmcmFnbWVudCBjb2xvcnMuIFRoZSBkcmF3IGJ1ZmZlciBmb3IgZnJhZ21l
bnQKLSAgICBjb2xvcnMgYmV5b25kIDxuPiBpcyBzZXQgdG8gTk9ORS4KLQotICAgIFRoZSBtYXhp
bXVtIG51bWJlciBvZiBkcmF3IGJ1ZmZlcnMgaXMgaW1wbGVtZW50YXRpb24tZGVwZW5kZW50LiBU
aGUKLSAgICBudW1iZXIgb2YgZHJhdyBidWZmZXJzIHN1cHBvcnRlZCBjYW4gYmUgcXVlcmllZCBi
eSBjYWxsaW5nCi0gICAgR2V0SW50ZWdlcnYgd2l0aCB0aGUgc3ltYm9saWMgY29uc3RhbnQgTUFY
X0RSQVdfQlVGRkVSU19FWFQuIEFuCi0gICAgSU5WQUxJRF9WQUxVRSBlcnJvciBpcyBnZW5lcmF0
ZWQgaWYgPG4+IGlzIGdyZWF0ZXIgdGhhbgotICAgIE1BWF9EUkFXX0JVRkZFUlNfRVhULgotCi0g
ICAgSWYgdGhlIEdMIGlzIGJvdW5kIHRvIGEgZHJhdyBmcmFtZWJ1ZmZlciBvYmplY3QsIHRoZSA8
aT50aCBidWZmZXIgbGlzdGVkCi0gICAgaW4gPGJ1ZnM+IG11c3QgYmUgQ09MT1JfQVRUQUNITUVO
VDxpPl9FWFQgb3IgTk9ORS4gU3BlY2lmeWluZyBhCi0gICAgYnVmZmVyIG91dCBvZiBvcmRlciwg
QkFDSywgb3IgQ09MT1JfQVRUQUNITUVOVDxtPl9FWFQgd2hlcmUgPG0+IGlzCi0gICAgZ3JlYXRl
ciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB2YWx1ZSBvZiBNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhU
LAotICAgIHdpbGwgZ2VuZXJhdGUgdGhlIGVycm9yIElOVkFMSURfT1BFUkFUSU9OLgotCi0gICAg
SWYgYSBmcmFnbWVudCBzaGFkZXIgd3JpdGVzIHRvICJnbF9GcmFnQ29sb3IiLCBEcmF3QnVmZmVy
c0VYVCAKLSAgICBzcGVjaWZpZXMgdGhlIHNldCBvZiBkcmF3IGJ1ZmZlcnMgaW50byB3aGljaCB0
aGUgY29sb3IgCi0gICAgd3JpdHRlbiB0byAiZ2xfRnJhZ0NvbG9yIiBpcyB3cml0dGVuLiBJZiBh
IGZyYWdtZW50IHNoYWRlciB3cml0ZXMgdG8KLSAgICAiZ2xfRnJhZ0RhdGEiLCBEcmF3QnVmZmVy
c0VYVCBzcGVjaWZpZXMgYSBzZXQgb2YgZHJhdyBidWZmZXJzCi0gICAgaW50byB3aGljaCBlYWNo
IG9mIHRoZSBtdWx0aXBsZSBvdXRwdXQgY29sb3JzIGRlZmluZWQgYnkgdGhlc2UKLSAgICB2YXJp
YWJsZXMgYXJlIHNlcGFyYXRlbHkgd3JpdHRlbi4gSWYgYSBmcmFnbWVudCBzaGFkZXIgd3JpdGVz
IHRvCi0gICAgbmVpdGhlciAiZ2xfRnJhZ0NvbG9yIiBub3IgImdsX0ZyYWdEYXRhIiB0aGUgdmFs
dWVzIG9mIHRoZQotICAgIGZyYWdtZW50IGNvbG9ycyBmb2xsb3dpbmcgc2hhZGVyIGV4ZWN1dGlv
biBhcmUgdW5kZWZpbmVkLCBhbmQgbWF5Ci0gICAgZGlmZmVyIGZvciBlYWNoIGZyYWdtZW50IGNv
bG9yLgotCi0gICAgSW5kaWNhdGluZyBhIGJ1ZmZlciBvciBidWZmZXJzIHVzaW5nIERyYXdCdWZm
ZXJzRVhUIGNhdXNlcwotICAgIHN1YnNlcXVlbnQgcGl4ZWwgY29sb3IgdmFsdWUgd3JpdGVzIHRv
IGFmZmVjdCB0aGUgaW5kaWNhdGVkCi0gICAgYnVmZmVycy4gSWYgdGhlIEdMIGlzIGJvdW5kIHRv
IGEgZHJhdyBmcmFtZWJ1ZmZlciBvYmplY3QgYW5kIGEgZHJhdwotICAgIGJ1ZmZlciBzZWxlY3Rz
IGFuIGF0dGFjaG1lbnQgdGhhdCBoYXMgbm8gaW1hZ2UgYXR0YWNoZWQsIHRoZW4gdGhhdAotICAg
IGZyYWdtZW50IGNvbG9yIGlzIG5vdCB3cml0dGVuLgotCi0gICAgU3BlY2lmeWluZyBOT05FIGFz
IHRoZSBkcmF3IGJ1ZmZlciBmb3IgYSBmcmFnbWVudCBjb2xvciB3aWxsIGluaGliaXQKLSAgICB0
aGF0IGZyYWdtZW50IGNvbG9yIGZyb20gYmVpbmcgd3JpdHRlbi4KLQotICAgIFRoZSBzdGF0ZSBy
ZXF1aXJlZCB0byBoYW5kbGUgY29sb3IgYnVmZmVyIHNlbGVjdGlvbiBmb3IgZWFjaAotICAgIGZy
YW1lYnVmZmVyIGlzIGFuIGludGVnZXIgZm9yIGVhY2ggc3VwcG9ydGVkIGZyYWdtZW50IGNvbG9y
LiBGb3IgdGhlCi0gICAgZGVmYXVsdCBmcmFtZWJ1ZmZlciwgaW4gdGhlIGluaXRpYWwgc3RhdGUg
dGhlIGRyYXcgYnVmZmVyIGZvcgotICAgIGZyYWdtZW50IGNvbG9yIHplcm8gaXMgQkFDSyBpZiB0
aGVyZSBpcyBhIGRlZmF1bHQgZnJhbWVidWZmZXIKLSAgICBhc3NvY2lhdGVkIHdpdGggdGhlIGNv
bnRleHQsIG90aGVyd2lzZSBOT05FLiBGb3IgZnJhbWVidWZmZXIKLSAgICBvYmplY3RzLCBpbiB0
aGUgaW5pdGlhbCBzdGF0ZSB0aGUgZHJhdyBidWZmZXIgZm9yIGZyYWdtZW50IGNvbG9yCi0gICAg
emVybyBpcyBDT0xPUl9BVFRBQ0hNRU5UMF9FWFQuCi0KLSAgICBGb3IgYm90aCB0aGUgZGVmYXVs
dCBmcmFtZWJ1ZmZlciBhbmQgZnJhbWVidWZmZXIgb2JqZWN0cywgdGhlCi0gICAgaW5pdGlhbCBz
dGF0ZSBvZiBkcmF3IGJ1ZmZlcnMgZm9yIGZyYWdtZW50IGNvbG9ycyBvdGhlciB0aGFuIHplcm8g
aXMKLSAgICBOT05FLgotCi0gICAgVGhlIHZhbHVlIG9mIHRoZSBkcmF3IGJ1ZmZlciBzZWxlY3Rl
ZCBmb3IgZnJhZ21lbnQgY29sb3IgPGk+IGNhbiBiZQotICAgIHF1ZXJpZWQgYnkgY2FsbGluZyBH
ZXRJbnRlZ2VydiB3aXRoIHRoZSBzeW1ib2xpYyBjb25zdGFudAotICAgIERSQVdfQlVGRkVSPGk+
X0VYVC4iCi0KLSAgICBNb2RpZnkgU2VjdGlvbiA0LjIuMyAoQ2xlYXJpbmcgdGhlIEJ1ZmZlcnMp
IGFuZCByZXBsYWNlIHRoZSBmaXJzdAotICAgIHR3byBwYXJhZ3JhcGhzIHdpdGggdGhlIGZvbGxv
d2luZzoKLQotICAgICJUaGUgR0wgcHJvdmlkZXMgYSBtZWFucyBmb3Igc2V0dGluZyBwb3J0aW9u
cyBvZiBldmVyeSBwaXhlbCBpbiBhCi0gICAgcGFydGljdWxhciBidWZmZXIgdG8gdGhlIHNhbWUg
dmFsdWUuICBUaGUgYXJndW1lbnQgdG8KLSAgICAKLSAgICAgICAgdm9pZCBDbGVhcihiaXRmaWVs
ZCBidWYpOwotCi0gICAgaXMgdGhlIGJpdHdpc2UgT1Igb2YgYSBudW1iZXIgb2YgdmFsdWVzIGlu
ZGljYXRpbmcgd2hpY2ggYnVmZmVycyBhcmUKLSAgICB0byBiZSBjbGVhcmVkLiBUaGUgdmFsdWVz
IGFyZSBDT0xPUl9CVUZGRVJfQklULCBERVBUSF9CVUZGRVJfQklULCBhbmQKLSAgICBTVEVOQ0lM
X0JVRkZFUl9CSVQsIGluZGljYXRpbmcgdGhlIGJ1ZmZlcnMgY3VycmVudGx5IGVuYWJsZWQgZm9y
IGNvbG9yCi0gICAgd3JpdGluZywgdGhlIGRlcHRoIGJ1ZmZlciwgYW5kIHRoZSBzdGVuY2lsIGJ1
ZmZlciAoc2VlIGJlbG93KSwgCi0gICAgcmVzcGVjdGl2ZWx5LiBUaGUgdmFsdWUgdG8gd2hpY2gg
ZWFjaCBidWZmZXIgaXMgY2xlYXJlZCBkZXBlbmRzIG9uCi0gICAgdGhlIHNldHRpbmcgb2YgdGhl
IGNsZWFyIHZhbHVlIGZvciB0aGF0IGJ1ZmZlci4gIElmIHRoZSBtYXNrIGlzIG5vdCBhCi0gICAg
Yml0d2lzZSBPUiBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlcywgdGhlbiB0aGUgZXJyb3IgSU5WQUxJ
RF9WQUxVRSBpcwotICAgIGdlbmVyYXRlZC4KLQotICAgICAgICB2b2lkIENsZWFyQ29sb3IoY2xh
bXBmIHIsIGNsYW1wZiwgZywgY2xhbXBmIGIsIGNsYW1wZiBhKTsKLSAgIAotICAgIHNldHMgdGhl
IGNsZWFyIHZhbHVlIGZvciBmaXhlZC1wb2ludCBjb2xvciBidWZmZXJzLiAgRWFjaCBvZiB0aGUK
LSAgICBzcGVjaWZpZWQgY29tcG9uZW50cyBpcyBjbGFtcGVkIHRvIFswLCAxXSBhbmQgY29udmVy
dGVkIHRvIGZpeGVkLXBvaW50Ci0gICAgYXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gMi4xLjIgZm9y
IGZyYW1lYnVmZmVyIGNvbG9yIGNvbXBvbmVudHMuIgotCi0gICAgUmVwbGFjZSB0aGUgc2Vjb25k
IHBhcmFncmFwaCBvZiBTZWN0aW9uIDQuNC4xIChCaW5kaW5nIGFuZCBNYW5hZ2luZwotICAgIEZy
YW1lYnVmZmVyIE9iamVjdHMpIHdpdGggdGhlIGZvbGxvd2luZzoKLQotICAgICJUaGUgbmFtZXNw
YWNlIGZvciBmcmFtZWJ1ZmZlciBvYmplY3RzIGlzIHRoZSB1bnNpZ25lZCBpbnRlZ2Vycywgd2l0
aAotICAgIHplcm8gcmVzZXJ2ZWQgYnkgT3BlbkdMIEVTIHRvIHJlZmVyIHRvIHRoZSBkZWZhdWx0
IGZyYW1lYnVmZmVyLiBBCi0gICAgZnJhbWVidWZmZXIgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgYmlu
ZGluZyBhbiB1bnVzZWQgbmFtZSB0byB0aGUKLSAgICB0YXJnZXQgRlJBTUVCVUZGRVIsIERSQVdf
RlJBTUVCVUZGRVIsIG9yIFJFQURfRlJBTUVCVUZGRVIuIFRoZSBiaW5kaW5nCi0gICAgaXMgZWZm
ZWN0ZWQgYnkgY2FsbGluZwotCi0gICAgICAgIHZvaWQgQmluZEZyYW1lYnVmZmVyKGVudW0gdGFy
Z2V0LCB1aW50IGZyYW1lYnVmZmVyKTsKLQotICAgIHdpdGggPHRhcmdldD4gc2V0IHRoZSBkZXNp
cmVkIGZyYW1lYnVmZmVyIHRhcmdldCBhbmQgPGZyYW1lYnVmZmVyPiBzZXQgCi0gICAgdG8gdGhl
IHVudXNlZCBuYW1lLiBUaGUgcmVzdWx0aW5nIGZyYW1lYnVmZmVyIG9iamVjdCBpcyBhIG5ldyBz
dGF0ZSAKLSAgICB2ZWN0b3IuIFRoZXJlIGlzIGEgbnVtYmVyIG9mIGNvbG9yIGF0dGFjaG1lbnQg
cG9pbnRzLCBwbHVzIG9uZSBlYWNoCi0gICAgZm9yIHRoZSBkZXB0aCBhbmQgc3RlbmNpbCBhdHRh
Y2htZW50IHBvaW50cy4gVGhlIG51bWJlciBvZiBjb2xvciBhdHRhY2htZW50Ci0gICAgcG9pbnRz
IGlzIGVxdWFsIHRvIHRoZSB2YWx1ZSBvZiBNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhULiIKLQot
ICAgIFJlcGxhY2UgdGhlIHRoaXJkIGl0ZW0gaW4gdGhlIGJ1bGxldGVkIGxpc3QgaW4gU2VjdGlv
biA0LjQuMSAoQmluZGluZwotICAgIGFuZCBNYW5hZ2luZyBGcmFtZWJ1ZmZlciBPYmplY3RzKSB3
aXRoIHRoZSBmb2xsb3dpbmc6Ci0KLSAgICAiICogVGhlIG9ubHkgY29sb3IgYnVmZmVyIGJpdHBs
YW5lcyBhcmUgdGhlIG9uZXMgZGVmaW5lZCBieSB0aGUKLSAgICBmcmFtZWJ1ZmZlciBhdHRhY2ht
ZW50cyBwb2ludHMgbmFtZWQgQ09MT1JfQVRUQUNITUVOVDBfRVhUIHRocm91Z2gKLSAgICBDT0xP
Ul9BVFRBQ0hNRU5UPG4+X0VYVC4iCi0KLSAgICBNb2RpZnkgU2VjdGlvbiA0LjQuMyAoUmVuZGVy
YnVmZmVyIE9iamVjdHMpIGluIHRoZSAKLSAgICAiQXR0YWNoaW5nIFJlbmRlcmJ1ZmZlciBJbWFn
ZXMgdG8gYSBGcmFtZWJ1ZmZlciIgc3Vic2VjdGlvbiBhcyBmb2xsb3dzOgotCi0gICAgSW5zZXJ0
IHRoZSBmb2xsb3dpbmcgdGFibGU6Ci0KLSAgICBOYW1lIG9mIGF0dGFjaG1lbnQKLSAgICAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICBDT0xPUl9BVFRBQ0hNRU5U
PGk+X0VYVCAoc2VlIGNhcHRpb24pCi0gICAgREVQVEhfQVRUQUNITUVOVAotICAgIFNURU5DSUxf
QVRUQUNITUVOVAotCi0gICAgVGFibGUgNC54OiBGcmFtZWJ1ZmZlciBhdHRhY2htZW50IHBvaW50
cy4gPGk+IGluIENPTE9SX0FUVEFDSE1FTlQ8aT5fRVhUCi0gICAgbWF5IHJhbmdlIGZyb20gemVy
byB0byB0aGUgdmFsdWUgb2YgTUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCBtaW51cyAxLgotCi0g
ICAgTW9kaWZ5IHRoZSB0aGlyZCBzZW50ZW5jZSBvZiB0aGUgcGFyYWdyYXBoIGZvbGxvd2luZyB0
aGUgZGVmaW5pdGlvbiBvZgotICAgIEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyIHRvIGJlIGFzIGZv
bGxvd3M6Ci0KLSAgICAiPGF0dGFjaG1lbnQ+IHNob3VsZCBiZSBzZXQgdG8gb25lIG9mIHRoZSBh
dHRhY2htZW50IHBvaW50cyBvZiB0aGUgCi0gICAgZnJhbWVidWZmZXIgbGlzdGVkIGluIFRhYmxl
IDQueC4iIAotCi0gICAgTW9kaWZ5IFNlY3Rpb24gNC40LjMgKFJlbmRlcmJ1ZmZlciBPYmplY3Rz
KSBpbiB0aGUgIkF0dGFjaGluZyBUZXh0dXJlCi0gICAgSW1hZ2VzIHRvIGEgRnJhbWVidWZmZXIi
IHN1YnNlY3Rpb24gYXMgZm9sbG93czoKLQotICAgIE1vZGlmeSB0aGUgbGFzdCBzZW50ZW5jZSBv
ZiB0aGUgcGFyYWdyYXBoIGZvbGxvd2luZyB0aGUgZGVmaW5pdGlvbiBvZgotICAgIEZyYW1lYnVm
ZmVyVGV4dHVyZTJEIHRvIGJlIGFzIGZvbGxvd3M6Ci0KLSAgICAiPGF0dGFjaG1lbnQ+IG11c3Qg
YmUgb25lIG9mIHRoZSBhdHRhY2htZW50IHBvaW50cyBvZiB0aGUgZnJhbWVidWZmZXIKLSAgICBs
aXN0ZWQgaW4gVGFibGUgNC54LiIKLQotICAgIE1vZGlmeSBTZWN0aW9uIDQuNC41IChGcmFtZWJ1
ZmZlciBDb21wbGV0ZW5lc3MpIGFuZCByZXBsYWNlIHRoZSAzcmQKLSAgICBpdGVtIGluIHRoZSBi
dWxsZXRlZCBsaXN0IGluIHRoZSAiRnJhbWVidWZmZXIgQXR0YWNobWVudCBDb21wbGV0ZW5lc3Mi
Ci0gICAgc3Vic2VjdGlvbiB3aXRoIHRoZSBmb2xsb3dpbmc6Ci0KLSAgICAiICogSWYgPGF0dGFj
aG1lbnQ+IGlzIENPTE9SX0FUVEFDSE1FTlQ8aT5fRVhULCB0aGVuIDxpbWFnZT4gbXVzdAotICAg
IGhhdmUgYSBjb2xvci1yZW5kZXJhYmxlIGludGVybmFsIGZvcm1hdC4iCi0KLUNoYW5nZXMgdG8g
Q2hhcHRlciA2IG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmljYXRpb24gKFN0YXRlIGFuZAot
U3RhdGUgUmVxdWVzdHMpCi0KLSAgICBJbiBzZWN0aW9uIDYuMS4zIChFbnVtZXJhdGVkIFF1ZXJp
ZXMpIG1vZGlmeSB0aGUgdGhpcmQgc2VudGVuY2UgaW4KLSAgICB0aGUgZGVmaW5pdGlvbiBvZiBH
ZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdiB0byBiZSBhcyBmb2xsb3dzOgotCi0g
ICAgIjxhdHRhY2htZW50PiBtdXN0IGJlIG9uZSBvZiB0aGUgYXR0YWNobWVudCBwb2ludHMgb2Yg
dGhlIGZyYW1lYnVmZmVyCi0gICAgbGlzdGVkIGluIFRhYmxlIDQueC4iCi0KLUNoYW5nZXMgdG8g
Q2hhcHRlciAzIG9mIHRoZSBPcGVuR0wgRVMgU2hhZGluZyBMYW5ndWFnZSAxLjAuMTcgU3BlY2lm
aWNhdGlvbiAoQmFzaWNzKQotCi0gICAgQWRkIGEgbmV3IHNlY3Rpb246Ci0KLSAgICAzLjQuMSBH
TF9FWFRfZHJhd19idWZmZXJzIEV4dGVuc2lvbgotCi0gICAgVG8gdXNlIHRoZSBHTF9FWFRfZHJh
d19idWZmZXJzIGV4dGVuc2lvbiBpbiBhIHNoYWRlciBpdAotICAgIG11c3QgYmUgZW5hYmxlZCB1
c2luZyB0aGUgI2V4dGVuc2lvbiBkaXJlY3RpdmUuCi0KLSAgICBUaGUgc2hhZGluZyBsYW5ndWFn
ZSBwcmVwcm9jZXNzb3IgI2RlZmluZQotICAgIEdMX0VYVF9kcmF3X2J1ZmZlcnMgd2lsbCBiZSBk
ZWZpbmVkIHRvIDEsIGlmIHRoZQotICAgIEdMX0VYVF9kcmF3X2J1ZmZlcnMgZXh0ZW5zaW9uIGlz
IHN1cHBvcnRlZC4KLQotRGVwZW5kZW5jaWVzIG9uIEFOR0xFX2ZyYW1lYnVmZmVyX2JsaXQgYW5k
IEFQUExFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlOgotCi0gICAgSWYgbmVpdGhlciBBTkdMRV9m
cmFtZWJ1ZmZlcl9ibGl0IG5vciBBUFBMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSBhcmUKLSAg
ICBzdXBwb3J0ZWQsIHRoZW4gYWxsIHJlZmVyZW5jZXMgdG8gImRyYXcgZnJhbWVidWZmZXJzIiBz
aG91bGQgYmUgcmVwbGFjZWQKLSAgICB3aXRoIHJlZmVyZW5jZXMgdG8gImZyYW1lYnVmZmVycyIu
IFJlZmVyZW5jZXMgdG8gRFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HCi0gICAgc2hvdWxkIGJlIHJl
cGxhY2VkIHdpdGggcmVmZXJlbmNlcyB0byBGUkFNRUJVRkZFUl9CSU5ESU5HLiBSZWZlcmVuY2Vz
IHRvCi0gICAgRFJBV19GUkFNRUJVRkZFUiBhbmQgUkVBRF9GUkFNRUJVRkZFUiBzaG91bGQgYmUg
cmVtb3ZlZC4KLQotICAgIElmIEFOR0xFX2ZyYW1lYnVmZmVyX2JsaXQgaXMgc3VwcG9ydGVkLCBE
UkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkcsIERSQVdfRlJBTUVCVUZGRVIKLSAgICBhbmQgUkVBRF9G
UkFNRUJVRkZFUiBhbGwgcmVmZXIgdG8gY29ycmVzcG9uZGluZyBfQU5HTEUgc3VmZml4ZWQgbmFt
ZXMKLSAgICAodGhleSBoYXZlIHRoZSBzYW1lIHRva2VuIHZhbHVlcykuCi0KLSAgICBJZiBBUFBM
RV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSBpcyBzdXBwb3J0ZWQsIERSQVdfRlJBTUVCVUZGRVJf
QklORElORywKLSAgICBEUkFXX0ZSQU1FQlVGRkVSIGFuZCBSRUFEX0ZSQU1FQlVGRkVSIGFsbCBy
ZWZlciB0byB0aGUgY29ycmVzcG9uZGluZyBfQVBQTEUKLSAgICBzdWZmaXhlZCBuYW1lcyAodGhl
eSBoYXZlIHRoZSBzYW1lIHRva2VuIHZhbHVlcykuCi0KLUVycm9ycwotCi0gICAgVGhlIElOVkFM
SURfT1BFUkFUSU9OIGVycm9yIGlzIGdlbmVyYXRlZCBpZiBEcmF3QnVmZmVyc0VYVCBpcyBjYWxs
ZWQKLSAgICB3aGVuIHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyIGlzIGJvdW5kIGFuZCBhbnkgb2Yg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gICAgaG9sZDogCi0gICAgIC0gPG4+IGlzIGdyZWF0
ZXIgdGhhbiAxIGFuZCBsZXNzIHRoYW4gTUFYX0RSQVdfQlVGRkVSU19FWFQsCi0gICAgIC0gPGJ1
ZnM+IGNvbnRhaW5zIGEgdmFsdWUgb3RoZXIgdGhhbiBCQUNLIG9yIE5PTkUuCi0KLSAgICBUaGUg
SU5WQUxJRF9PUEVSQVRJT04gZXJyb3IgaXMgZ2VuZXJhdGVkIGlmIERyYXdCdWZmZXJzRVhUIGlz
IGNhbGxlZAotICAgIHdoZW4gYm91bmQgdG8gYSBkcmF3IGZyYW1lYnVmZmVyIG9iamVjdCBhbmQg
YW55IG9mIHRoZSBmb2xsb3dpbmcKLSAgICBjb25kaXRpb25zIGhvbGQ6Ci0gICAgIC0gdGhlIDxp
PnRoIHZhbHVlIGluIDxidWZzPiBpcyBub3QgQ09MT1JfQVRUQUNITUVOVDxpPl9FWFQgb3IgTk9O
RS4KLQotICAgIFRoZSBJTlZBTElEX1ZBTFVFIGVycm9yIGlzIGdlbmVyYXRlZCBpZiBEcmF3QnVm
ZmVyc0VYVCBpcyBjYWxsZWQKLSAgICB3aXRoIGEgdmFsdWUgb2YgPG4+IHdoaWNoIGlzIGdyZWF0
ZXIgdGhhbiBNQVhfRFJBV19CVUZGRVJTX0VYVC4KLQotICAgIFRoZSBJTlZBTElEX0VOVU0gZXJy
b3IgaXMgZ2VuZXJhdGVkIGJ5IEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyIGlmCi0gICAgdGhlIDxh
dHRhY2htZW50PiBwYXJhbWV0ZXIgaXMgbm90IG9uZSBvZiB0aGUgdmFsdWVzIGxpc3RlZCBpbiBU
YWJsZSA0LnguCi0KLSAgICBUaGUgSU5WQUxJRF9FTlVNIGVycm9yIGlzIGdlbmVyYXRlZCBieSBG
cmFtZWJ1ZmZlclRleHR1cmUyRCBpZgotICAgIHRoZSA8YXR0YWNobWVudD4gcGFyYW1ldGVyIGlz
IG5vdCBvbmUgb2YgdGhlIHZhbHVlcyBsaXN0ZWQgaW4gVGFibGUgNC54LgotCi0gICAgVGhlIElO
VkFMSURfRU5VTSBlcnJvciBpcyBnZW5lcmF0ZWQgYnkgR2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyaXYKLSAgICBpZiB0aGUgPGF0dGFjaG1lbnQ+IHBhcmFtZXRlciBpcyBub3Qgb25l
IG9mIHRoZSB2YWx1ZXMgbGlzdGVkIGluIFRhYmxlIDQueC4KLQotTmV3IFN0YXRlCi0KLSAgICBB
ZGQgVGFibGUgNi5YIEZyYW1lYnVmZmVyIChTdGF0ZSBwZXIgZnJhbWVidWZmZXIgb2JqZWN0KToK
LQotICAgIFN0YXRlICAgICAgICAgICAgICAgVHlwZSBHZXQgQ29tbWFuZCAgSW5pdGlhbCBWYWx1
ZSBEZXNjcmlwdGlvbiAKLSAgICAtLS0tLS0tLS0tLS0tLS0tLS0gIC0tLS0gLS0tLS0tLS0tLS0t
IC0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0KLSAgICBEUkFXX0JVRkZFUjxpPl9FWFQgIFoxMCog
R2V0SW50ZWdlcnYgIHNlZSA0LjIuMSAgICAgRHJhdyBidWZmZXIgc2VsZWN0ZWQgCi0JCQkJCQkJ
ICBmb3IgZnJhZ21lbnQgY29sb3IgaQotCi0gICAgQWRkIHRvIFRhYmxlIDYuMTggKEltcGxlbWVu
dGF0aW9uIERlcGVuZGVudCBWYWx1ZXMpCi0KLSAgICBHZXQgdmFsdWUgICAgICAgICAgICAgICAg
IFR5cGUgR2V0IENtbmQgICAgTWluaW11bSBWYWx1ZSBEZXNjcmlwdGlvbiAgICAgICAgICAgICBT
ZWMuCi0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgICAtLS0tIC0tLS0tLS0tLS0tIC0tLS0t
LS0tLS0tLS0gLS0tLS0tLS0tLS0gICAgICAgICAgICAgLS0tLS0KLSAgICBNQVhfRFJBV19CVUZG
RVJTX0VYVCAgICAgIForICAgR2V0SW50ZWdlcnYgMSAgICAgICAgICAgICBNYXhpbXVtIG51bWJl
ciBvZiAgICAgICA0LjIuMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZSBkcmF3IGJ1ZmZlcnMKLSAgICBNQVhfQ09MT1Jf
QVRUQUNITUVOVFNfRVhUIForICAgR2V0SW50ZWdlcnYgMSAgICAgICAgICAgICBOdW1iZXIgb2Yg
ZnJhbWVidWZmZXIgICA0LjQuMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yIGF0dGFjaG1lbnQgcG9pbnRzCi1Jc3N1ZXMK
LQotICAgIFNlZSBBUkJfZHJhd19idWZmZXJzIGZvciByZWxldmFudCBpc3N1ZXMuCi0KLSAgMSkg
V2hhdCBhcmUgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhpcyBleHRlbnNpb24gYW5kIE5WX2Ry
YXdfYnVmZmVycwotICAgICsgTlZfZmJvX2NvbG9yX2F0dGFjaG1lbnRzPwotCi0gICAgUkVTT0xW
RUQuIFRoaXMgZXh0ZW5zaW9uOgotICAgICAtIGFkZHMgaW50ZXJhY3Rpb25zIHdpdGggYmxpdF9m
cmFtZWJ1ZmZlciBhbmQgdGhlIHNlcGFyYXRlIAotICAgICAgIGRyYXcvcmVhZCBiaW5kaW5nIHBv
aW50cwotICAgICAtIFRoZSBkcmF3IGJ1ZmZlciBhbmQgY29sb3IgYXR0YWNobWVudCBsaW1pdHMg
YXJlIGdsb2JhbCBpbnN0ZWFkCi0gICAgICAgb2YgcGVyLWZibyAoc2VlIElzc3VlIDIpCi0gICAg
IC0gY2FuIGJlIHVzZWQgdG8gd2l0aCBkZWZhdWx0IGZyYW1lYnVmZmVyIHRvIHNldCBOT05FL0JB
Q0sgKHNlZSBJc3N1ZSA0KQotICAgICAtIHJldGFpbnMgdGhlIG9yZGVyaW5nIHJlc3RyaWN0aW9u
cyBvbiBjb2xvciBhdHRhY2htZW50cyB0aGF0IGFyZSAKLSAgICAgICBpbXBvc2VkIGJ5IEVTIDMu
MC4KLQotICAgMikgU2hvdWxkIHRoZSBNQVhfRFJBV19CVUZGRVJTX0VYVCBhbmQgTUFYX0NPTE9S
X0FUVEFDSE1FTlRTX0VYVCBsaW1pdHMKLSAgICBiZSBwZXItZnJhbWVidWZmZXIgdmFsdWVzIG9y
IGltcGxlbWVudGF0aW9uIGRlcGVuZGVudCBjb25zdGFudHM/Ci0KLSAgICBESVNDVVNTSU9OOiBJ
biBBUkJfZHJhd19idWZmZXJzIHRoaXMgd2FzIHBlci1jb250ZXh0IChzZWUgSXNzdWUgMikuCi0g
ICAgRVhUX2ZyYW1lYnVmZmVyX29iamVjdCAoYW5kIHN1YnNlcXVlbnRseSBBUkJfZnJhbWVidWZm
ZXJfb2JqZWN0LCBhbmQgR0wgMy4wCi0gICAgdGhyb3VnaCBHTCA0LjIpIG1hZGUgdGhlc2UgcXVl
cmllcyBmcmFtZWJ1ZmZlci1kZXBlbmRlbnQuIAotICAgIEhvd2V2ZXIgaW4gR0wgNC4zIGFuZCBH
TEVTIDMuMCwgdGhlc2UgbGltaXRzIHdlcmUgY2hhbmdlZCBmcm9tIAotICAgIGZyYW1lYnVmZmVy
LWRlcGVuZGVudCBzdGF0ZSB0byBpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQgc3RhdGUgYWZ0ZXIK
LSAgICBtdWNoIGRpc2N1c3Npb24gKEJ1ZyA3OTkwKS4KLQotICAgIE5WX2RyYXdfYnVmZmVycyBo
YXMgTUFYX0RSQVdfQlVGRkVSUyBsaXN0ZWQgYXMgcGVyLWZyYW1lYnVmZmVyIHN0YXRlLAotICAg
IGJ1dCBOVl9mYm9fY29sb3JfYXR0YWNobWVudHMgaGFzIE1BWF9DT0xPUl9BVFRBQ0hNRU5UUyBh
cyBhbiAKLSAgICBpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQgY29uc3RhbnQuCi0KLSAgICBUaGlz
IGlzIHJlbGV2YW50IGJlY2F1c2Ugc29tZSBpbXBsZW1lbnRhdGlvbnMgYXJlIG5vdCBhYmxlIHRv
IHN1cHBvcnQgCi0gICAgbXVsdGlzYW1wbGluZyBpbiBjb25qdWN0aW9uIHdpdGggbXVsdGlwbGUg
Y29sb3IgYXR0YWNobWVudHMuICBJZiB0aGUKLSAgICBxdWVyeSBpcyBwZXItZnJhbWVidWZmZXIs
IHRoZXkgY2FuIHJlcG9ydCBhIG1heGltdW0gb2Ygb25lIGF0dGFjaG1lbnQKLSAgICB3aGVuIHRo
ZXJlIGFyZSBtdWx0aXNhbXBsZWQgYXR0YWNobWVudHMsIGJ1dCBhIGhpZ2hlciBsaW1pdCB3aGVu
IG9ubHkKLSAgICBzaW5nbGUtc2FtcGxlZCBhdHRhY2htZW50cyBhcmUgcHJlc2VudC4KLQotICAg
IFJFU09MVkVELiBNYWtlIHRoaXMgZ2xvYmFsIGNvbnRleHQgc3RhdGUgYXMgdGhpcyBpcyBtb3N0
IGNvbnNpc3RlbnQgCi0gICAgd2l0aCBHTEVTIDMuMCBhbmQgdXBkYXRlZCBHTCBkcml2ZXJzLiBJ
biBhbiBpbXBsZW1lbnRhdGlvbiBjYW5ub3QKLSAgICBzdXBwb3J0IG11bHRpc2FtcGxpbmcgaW4g
Y29uanVuY3Rpb24gd2l0aCBtdWx0aXBsZSBjb2xvciBhdHRhY2htZW50cywKLSAgICBwZXJoYXBz
IHN1Y2ggYW4gaW1wbGVtZW50YXRpb24gY291bGQgcmVwb3J0IEZCTyBpbmNvbXBsZXRlIGluIHRo
aXMgCi0gICAgc2l0dWF0aW9uLCBidXQgdGhpcyBpcyBsZXNzIHRoYW4gZGVzaXJhYmxlLgotCi0g
ICAzKSBTaG91bGQgd2Ugc3VwcG9ydCBicm9hZGNhc3QgZnJvbSBnbF9GcmFnQ29sb3IgdG8gYWxs
IGdsX0ZyYWdEYXRhW3hdCi0gICAgb3Igc2hvdWxkIGl0IGJlIHN5bm9ueW1vdXMgd2l0aCBnbF9G
cmFnRGF0YVswXT8KLQotICAgIERJU0NVU1NJT046IFdpdGggTlZfZHJhd19idWZmZXJzLCB3cml0
aW5nIHRvIGdsX0ZyYWdDb2xvciB3cml0ZXMgdG8gYWxsCi0gICAgdGhlIGVuYWJsZWQgZHJhdyBi
dWZmZXJzIChpZSBicm9hZGNhc3QpLiBJbiBPcGVuR0wgRVMgMy4wIHdoZW4gdXNpbmcgCi0gICAg
RVNTTCAxLjAsIGdsX0ZyYWdDb2xvciBpcyBlcXVpdmFsZW50IHRvIHdyaXRpbmcgYSBzaW5nbGUg
b3V0cHV0IHRvIAotICAgIGdsX0ZyYWdEYXRhWzBdIGFuZCBtdWx0aXBsZSBvdXRwdXRzIGFyZSBu
b3QgcG9zc2libGUuIFdoZW4gdXNpbmcgRVNTTCAzLjAsCi0gICAgb25seSB1c2VyLWRlZmluZWQg
b3V0IHZhcmlhYmxlcyBtYXkgYmUgdXNlZC4KLQotICAgIElmIGJyb2FkY2FzdCBpcyBzdXBwb3J0
ZWQsIHNvbWUgaW1wbGVtZW50YXRpb25zIG1heSBoYXZlIHRvIHJlcGxhY2UKLSAgICB3cml0ZXMg
dG8gZ2xfRnJhZ0NvbG9yIHdpdGggcmVwbGljYXRlZCB3cml0ZXMgdG8gYWxsIHBvc3NpYmxlIGds
X0ZyYWdEYXRhCi0gICAgbG9jYXRpb25zIHdoZW4gdGhpcyBleHRlbnNpb24gaXMgZW5hYmxlZC4K
LQotICAgIFJFU09MVkVEOiBXcml0ZXMgdG8gZ2xfRnJhZ0NvbG9yIGFyZSBicm9hZGNhc3QgdG8g
YWxsIGVuYWJsZWQgY29sb3IKLSAgICBidWZmZXJzLiBFUyAzLjAgdXNpbmcgRVNTTCAxLjAgZG9l
c24ndCBzdXBwb3J0IGJyb2FkY2FzdCBiZWNhdXNlCi0gICAgRVNTTCAxLjAgd2FzIG5vdCBleHRl
bmRlZCB0byBoYXZlIG11bHRpcGxlIGNvbG9yIG91dHB1dHMgKGJ1dCB0aGF0IGlzCi0gICAgd2hh
dCB0aGlzIGV4dGVuc2lvbiBhZGRzKS4gRVNTTCAzLjAgZG9lc24ndCBzdXBwb3J0IHRoZSBicm9h
ZGNhc3QgYmVjYXVzZQotICAgIGl0IGRvZXNuJ3QgaGF2ZSB0aGUgZ2xfRnJhZ0NvbG9yIHZhcmlh
YmxlIGF0IGFsbCwgYW5kIG9ubHkgaGFzIHVzZXItCi0gICAgZGVmaW5lZCBvdXQgdmFyaWFibGVz
LiBUaGlzIGV4dGVuc2lvbiBleHRlbmRzIEVTU0wgMS4wIHRvIGhhdmUgbXVsdGlwbGUKLSAgICBj
b2xvciBvdXRwdXRzLiBCcm9hZGNhc3RpbmcgZnJvbSBnbF9GcmFnQ29sb3IgdG8gYWxsIGVuYWJs
ZWQgY29sb3IgCi0gICAgYnVmZmVycyBpcyB0aGUgbW9zdCBjb25zaXN0ZW50IHdpdGggZXhpc3Rp
bmcgZHJhdyBidWZmZXIgZXh0ZW5zaW9ucyB0bwotICAgIGRhdGUgKGJvdGggTlZfZHJhd19idWZm
ZXJzIGFuZCBkZXNrdG9wIEdMKS4KLSAgICAKLSAgIDQpIFNob3VsZCB3ZSBhbGxvdyBEcmF3QnVm
ZmVyc0VYVCB0byBiZSBjYWxsZWQgd2hlbiB0aGUgZGVmYXVsdCBGQk8gaXMKLSAgICBib3VuZD8K
LQotICAgIERJU0NVU1NJT046IE5WX2RyYXdfYnVmZmVycyBzcGVjaWZpZXMgdGhhdCBEcmF3QnVm
ZmVyc05WIGVycm9ycyB3aXRoIAotICAgIElOVkFMSURfT1BFUkFUSU9OIHdoZW4gdGhlIGRlZmF1
bHQgRkJPIGlzIGJvdW5kLiBPcGVuR0wgRVMgMy4wIGFsbG93cwotICAgIERyYXdCdWZmZXJzIHRv
IHRvZ2dsZSBiZXR3ZWVuIEJBQ0sgYW5kIE5PTkUgb24gdGhlIGRlZmF1bHQgRkJPLgotCi0gICAg
QW4gaW1wbGVtZW50YXRpb24gdGhhdCBkb2VzIG5vdCBuYXRpdmVseSBzdXBwb3J0IGRpc2FibGlu
ZyB0aGUgZHJhd2J1ZmZlcgotICAgIG9uIHRoZSBkZWZhdWx0IEZCTyBjb3VsZCBlbXVsYXRlIHRo
aXMgYnkgZGlzYWJsaW5nIGNvbG9yIHdyaXRlcy4KLQotICAgIFJFU09MVkVEOiBBbGxvdyBEcmF3
QnVmZmVyc0VYVCB0byBiZSBjYWxsZWQgZm9yIHRoZSBkZWZhdWx0IEZCTy4gVGhpcwotICAgIGlz
IG1vcmUgZm9yd2FyZCBsb29raW5nIGFuZCBpcyBjb21wYXRpYmxlIHdpdGggRVMgMy4wLgotCi0g
ICA1KSBXaGF0IGFyZSB0aGUgcmVxdWlyZW1lbnRzIG9uIHRoZSBjb2xvciBhdHRhY2htZW50IHNp
emVzIGFuZCBmb3JtYXRzPwotICAgIAotICAgIFJFU09MVkVEOiBFUyAyLjAgcmVxdWlyZXMgdGhh
dCBhbGwgY29sb3IgYnVmZmVycyBhdHRhY2hlZCB0byBhcHBsaWNhdGlvbi0KLSAgICBjcmVhdGVk
IGZyYW1lYnVmZmVyIG9iamVjdHMgbXVzdCBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiBiaXRwbGFu
ZXMKLSAgICAoQ2hhcHRlciA0IG92ZXJ2aWV3IHA5MSkuIEVTIDIuMCBhbHNvIHJlcXVpcmVzIHRo
YXQgYWxsIGF0dGFjaGVkIGltYWdlcwotICAgIGhhdmUgdGhlIHNhbWUgd2lkdGggYW5kIGhlaWdo
dCAoU2VjdGlvbiA0LjQuNSBGcmFtZWJ1ZmZlciBDb21wbGV0ZW5lc3MpLgotICAgIFRoaXMgZXh0
ZW5zaW9uIGRvZXMgbm90IGxpZnQgdGhvc2UgcmVxdWlyZW1lbnRzLCBhbmQgZmFpbGluZyB0byBt
ZWV0Ci0gICAgdGhlbSB3aWxsIHJlc3VsdCBpbiBhbiBpbmNvbXBsZXRlIEZCTy4KLQotICAgNikg
RG9lcyB0aGlzIGhhdmUgYW55IGludGVyYWN0aW9ucyB3aXRoIGdsQ2xlYXI/Ci0KLSAgICBSRVNP
TFZFRDogWWVzLiBXaGVuIG11bHRpcGxlIGNvbG9yIGJ1ZmZlcnMgYXJlIGVuYWJsZWQgZm9yIHdy
aXRpbmcsCi0gICAgZ2xDbGVhciBjbGVhcnMgYWxsIG9mIHRoZSBjb2xvciBidWZmZXJzLiAgQWRk
ZWQgbGFuZ3VhZ2UgY2xhcmlmeWluZwotICAgIHRoYXQgZ2xDbGVhciBhbmQgZ2xDbGVhckNvbG9y
IG1heSBhZmZlY3QgbXVsdGlwbGUgY29sb3IgYnVmZmVycy4KLQotUmV2aXNpb24gSGlzdG9yeQot
Ci0gICAgMDEvMzAvMjAxMyAgZGdrb2NoICBhZGQgaXNzdWUgNiBhbmQgY2xlYXIgaW50ZXJhY3Rp
b25zCi0gICAgICAgICAgICAgICAgICAgICAgICByZW5hbWVkIHRvIEVYVF9kcmF3X2J1ZmZlcnMg
YmFzZWQgb24gZmVlZGJhY2sKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgcmVzb2x1
dGlvbiBvZiBpc3N1ZSAzLgotICAgIDAxLzIzLzIwMTMgIGRna29jaCAgYWRkIHJlc29sdXRpb25z
IHRvIGlzc3VlcyAyLTQuCi0gICAgICAgICAgICAgICAgICAgICAgICBhZGQgaXNzdWUgNS4KLSAg
ICAgICAgICAgICAgICAgICAgICAgIEFkZCBUYWJsZSA0LnggYW5kIHVwZGF0ZSB2YXJpb3VzIGV4
cGxpY2l0Ci0gICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VzIHRvIENPTE9SX0FUVEFD
SE1FTlQwLgotICAgICAgICAgICAgICAgICAgICAgICAgQWRkIGVycm9ycy4KLSAgICAxMS8xMy8y
MDEyICBkZ2tvY2ggIGFkZCByZXZpc2lvbiBoaXN0b3J5Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBhZGQgdGV4dCBmcm9tIHVwZGF0ZWQgRVMgMy4wIHNwZWMKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGFkZCBpc3N1ZXMgZm9yIGRpc2N1c3Npb24KLSAgICAxMC8xNi8yMDEyICBrYnIgICAgIHVw
ZGF0ZSBuYW1lIHN0cmluZwotICAgIDEwLzE2LzIwMTIgIGticiAgICAgcmVtb3ZlIHJlc3RyaXRp
b24gcmVxdWlyaW5nIGRyYXcgYnVmZmVyIDAgdG8gYmUgbm9uLU5VTEwKLSAgICAxMC8xMi8yMDEy
ICBrYnIgICAgIHJlbW92ZSByZWZlcmVuY2VzIHRvIEdldERvdWJsZXYgYW5kIFJlYWRCdWZmZXIK
LSAgICAxMC8xMS8yMDEyICBrYnIgICAgIGluaXRpYWwgZHJhZnQgZXh0ZW5zaW9uCi0KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRVhUX3JvYnVzdG5lc3MudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRVhUX3JvYnVz
dG5lc3MudHh0CShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9l
eHRlbnNpb25zL0VYVF9yb2J1c3RuZXNzLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDM2NSArMCww
IEBACi1OYW1lCi0KLSAgICBFWFRfcm9idXN0bmVzcwotCi1OYW1lIFN0cmluZ3MKLQotICAgIEdM
X0VYVF9yb2J1c3RuZXNzCi0KLUNvbnRyaWJ1dG9ycwotCi0gICAgRGFuaWVsIEtvY2gsIFRyYW5z
R2FtaW5nCi0gICAgTmljb2xhcyBDYXBlbnMsIFRyYW5zR2FtaW5nCi0gICAgQ29udHJpYnV0b3Jz
IHRvIEFSQl9yb2J1c3RuZXNzCi0KLUNvbnRhY3QKLQotICAgIEdyZWcgUm90aCwgTlZJRElBIChn
cm90aCAnYXQnIG52aWRpYS5jb20pCi0KLVN0YXR1cwotCi0gICAgQ29tcGxldGUuCi0KLVZlcnNp
b24KLQotICAgIFZlcnNpb24gMywgMjAxMS8xMC8zMQotCi1OdW1iZXIKLQotICAgIE9wZW5HTCBF
UyBFeHRlbnNpb24gIzEwNwotCi1EZXBlbmRlbmNpZXMKLQotICAgIFRoaXMgZXh0ZW5zaW9uIGlz
IHdyaXR0ZW4gYWdhaW5zdCB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZpY2F0aW9uCi0gICAgYnV0
IGNhbiBhcHBseSB0byBPcGVuR0wgRVMgMS4xIGFuZCB1cC4KLQotICAgIEVHTF9FWFRfY3JlYXRl
X2NvbnRleHRfcm9idXN0bmVzcyBpcyB1c2VkIHRvIGRldGVybWluZSBpZiBhIGNvbnRleHQKLSAg
ICBpbXBsZW1lbnRpbmcgdGhpcyBleHRlbnNpb24gc3VwcG9ydHMgcm9idXN0IGJ1ZmZlciBhY2Nl
c3MsIGFuZCBpZiBpdAotICAgIHN1cHBvcnRzIHJlc2V0IG5vdGlmaWNhdGlvbi4gCi0KLU92ZXJ2
aWV3Ci0KLSAgICBTZXZlcmFsIHJlY2VudCB0cmVuZHMgaW4gaG93IE9wZW5HTCBpbnRlZ3JhdGVz
IGludG8gbW9kZXJuIGNvbXB1dGVyCi0gICAgc3lzdGVtcyBoYXZlIGNyZWF0ZWQgbmV3IHJlcXVp
cmVtZW50cyBmb3Igcm9idXN0bmVzcyBhbmQgc2VjdXJpdHkKLSAgICBmb3IgT3BlbkdMIHJlbmRl
cmluZyBjb250ZXh0cy4KLSAgICAKLSAgICBBZGRpdGlvbmFsbHkgR1BVIGFyY2hpdGVjdHVyZXMg
bm93IHN1cHBvcnQgaGFyZHdhcmUgZmF1bHQgZGV0ZWN0aW9uOwotICAgIGZvciBleGFtcGxlLCB2
aWRlbyBtZW1vcnkgc3VwcG9ydGluZyBFQ0MgKGVycm9yIGNvcnJlY3RpbmcgY29kZXMpCi0gICAg
YW5kIGVycm9yIGRldGVjdGlvbi4gIE9wZW5HTCBjb250ZXh0cyBzaG91bGQgYmUgY2FwYWJsZSBv
ZiByZWNvdmVyaW5nCi0gICAgZnJvbSBoYXJkd2FyZSBmYXVsdHMgc3VjaCBhcyB1bmNvcnJlY3Rh
YmxlIG1lbW9yeSBlcnJvcnMuICBBbG9uZyB3aXRoCi0gICAgcmVjb3ZlcnkgZnJvbSBzdWNoIGhh
cmR3YXJlIGZhdWx0cywgdGhlIHJlY292ZXJ5IG1lY2hhbmlzbSBjYW4KLSAgICBhbHNvIGFsbG93
IHJlY292ZXJ5IGZyb20gdmlkZW8gbWVtb3J5IGFjY2VzcyBleGNlcHRpb25zIGFuZCBzeXN0ZW0K
LSAgICBzb2Z0d2FyZSBmYWlsdXJlcy4gIFN5c3RlbSBzb2Z0d2FyZSBmYWlsdXJlcyBjYW4gYmUg
ZHVlIHRvIGRldmljZQotICAgIGNoYW5nZXMgb3IgZHJpdmVyIGZhaWx1cmVzLgotCi0gICAgT3Bl
bkdMIHF1ZXJpZXMgdGhhdCB0aGF0IHJldHVybiAod3JpdGUpIHNvbWUgbnVtYmVyIG9mIGJ5dGVz
IHRvIGEKLSAgICBidWZmZXIgaW5kaWNhdGVkIGJ5IGEgcG9pbnRlciBwYXJhbWV0ZXIgaW50cm9k
dWNlIHJpc2sgb2YgYnVmZmVyCi0gICAgb3ZlcmZsb3dzIHRoYXQgbWlnaHQgYmUgZXhwbG9pdGFi
bGUgYnkgbWFsd2FyZS4gVG8gYWRkcmVzcyB0aGlzLAotICAgIHF1ZXJpZXMgd2l0aCByZXR1cm4g
dmFsdWUgc2l6ZXMgdGhhdCBhcmUgbm90IGV4cHJlc3NlZCBkaXJlY3RseSBieQotICAgIHRoZSBw
YXJhbWV0ZXJzIHRvIHRoZSBxdWVyeSBpdHNlbGYgYXJlIGdpdmVuIGFkZGl0aW9uYWwgQVBJCi0g
ICAgZnVuY3Rpb25zIHdpdGggYW4gYWRkaXRpb25hbCBwYXJhbWV0ZXIgdGhhdCBzcGVjaWZpZXMg
dGhlIG51bWJlciBvZgotICAgIGJ5dGVzIGluIHRoZSBidWZmZXIgYW5kIG5ldmVyIHdyaXRpbmcg
Ynl0ZXMgYmV5b25kIHRoYXQgbGltaXQuIFRoaXMKLSAgICBpcyBwYXJ0aWN1bGFybHkgdXNlZnVs
IGZvciBtdWx0aS10aHJlYWRlZCB1c2FnZSBvZiBPcGVuR0wgY29udGV4dHMKLSAgICBpbiBhICJz
aGFyZSBncm91cCIgd2hlcmUgb25lIGNvbnRleHQgY2FuIGNoYW5nZSBvYmplY3RzIGluIHdheXMg
dGhhdAotICAgIGNhbiBjYXVzZSBidWZmZXIgb3ZlcmZsb3dzIGZvciBhbm90aGVyIGNvbnRleHQn
cyBPcGVuR0wgcXVlcmllcy4KLQotICAgIFRoZSBvcmlnaW5hbCBBUkJfdmVydGV4X2J1ZmZlcl9v
YmplY3QgZXh0ZW5zaW9uIGluY2x1ZGVzIGFuIGlzc3VlCi0gICAgdGhhdCBleHBsaWNpdGx5IHN0
YXRlcyBwcm9ncmFtIHRlcm1pbmF0aW9uIGlzIGFsbG93ZWQgd2hlbgotICAgIG91dC1vZi1ib3Vu
ZHMgdmVydGV4IGJ1ZmZlciBvYmplY3QgZmV0Y2hlcyBvY2N1ci4gTW9kZXJuIGdyYXBoaWNzCi0g
ICAgaGFyZHdhcmUgaXMgY2FwYWJsZSB3ZWxsLWRlZmluZWQgYmVoYXZpb3IgaW4gdGhlIGNhc2Ug
b2Ygb3V0LW9mLQotICAgIGJvdW5kcyB2ZXJ0ZXggYnVmZmVyIG9iamVjdCBmZXRjaGVzLiBPbGRl
ciBoYXJkd2FyZSBtYXkgcmVxdWlyZQotICAgIGV4dHJhIGNoZWNrcyB0byBlbmZvcmNlIHdlbGwt
ZGVmaW5lZCAoYW5kIHRlcm1pbmF0aW9uIGZyZWUpCi0gICAgYmVoYXZpb3IsIGJ1dCB0aGlzIGV4
cGVuc2UgaXMgd2FycmFudGVkIHdoZW4gcHJvY2Vzc2luZyBwb3RlbnRpYWxseQotICAgIHVudHJ1
c3RlZCBjb250ZW50LgotCi0gICAgVGhlIGludGVudCBvZiB0aGlzIGV4dGVuc2lvbiBpcyB0byBh
ZGRyZXNzIHNvbWUgc3BlY2lmaWMgcm9idXN0bmVzcwotICAgIGdvYWxzOgotCi0gICAgKiAgIEZv
ciBhbGwgZXhpc3RpbmcgT3BlbkdMIHF1ZXJpZXMsIHByb3ZpZGUgYWRkaXRpb25hbCAic2FmZSIg
QVBJcyAKLSAgICAgICAgdGhhdCBsaW1pdCBkYXRhIHdyaXR0ZW4gdG8gdXNlciBwb2ludGVycyB0
byBhIGJ1ZmZlciBzaXplIGluIAotICAgICAgICBieXRlcyB0aGF0IGlzIGFuIGV4cGxpY2l0IGFk
ZGl0aW9uYWwgcGFyYW1ldGVyIG9mIHRoZSBxdWVyeS4KLQotICAgICogICBQcm92aWRlIGEgbWVj
aGFuaXNtIGZvciBhbiBPcGVuR0wgYXBwbGljYXRpb24gdG8gbGVhcm4gYWJvdXQKLSAgICAgICAg
Z3JhcGhpY3MgcmVzZXRzIHRoYXQgYWZmZWN0IHRoZSBjb250ZXh0LiAgV2hlbiBhIGdyYXBoaWNz
IHJlc2V0Ci0gICAgICAgIG9jY3VycywgdGhlIE9wZW5HTCBjb250ZXh0IGJlY29tZXMgdW51c2Fi
bGUgYW5kIHRoZSBhcHBsaWNhdGlvbgotICAgICAgICBtdXN0IGNyZWF0ZSBhIG5ldyBjb250ZXh0
IHRvIGNvbnRpbnVlIG9wZXJhdGlvbi4gRGV0ZWN0aW5nIGEKLSAgICAgICAgZ3JhcGhpY3MgcmVz
ZXQgaGFwcGVucyB0aHJvdWdoIGFuIGluZXhwZW5zaXZlIHF1ZXJ5LgotCi0gICAgKiAgIFByb3Zp
ZGUgYW4gZW5hYmxlIHRvIGd1YXJhbnRlZSB0aGF0IG91dC1vZi1ib3VuZHMgYnVmZmVyIG9iamVj
dAotICAgICAgICBhY2Nlc3NlcyBieSB0aGUgR1BVIHdpbGwgaGF2ZSBkZXRlcm1pbmlzdGljIGJl
aGF2aW9yIGFuZCBwcmVjbHVkZQotICAgICAgICBhcHBsaWNhdGlvbiBpbnN0YWJpbGl0eSBvciB0
ZXJtaW5hdGlvbiBkdWUgdG8gYW4gaW5jb3JyZWN0IGJ1ZmZlcgotICAgICAgICBhY2Nlc3MuICBT
dWNoIGFjY2Vzc2VzIGluY2x1ZGUgdmVydGV4IGJ1ZmZlciBmZXRjaGVzIG9mCi0gICAgICAgIGF0
dHJpYnV0ZXMgYW5kIGluZGljZXMsIGFuZCBpbmRleGVkIHJlYWRzIG9mIHVuaWZvcm1zIG9yCi0g
ICAgICAgIHBhcmFtZXRlcnMgZnJvbSBidWZmZXJzLgotCi1OZXcgUHJvY2VkdXJlcyBhbmQgRnVu
Y3Rpb25zCi0KLSAgICAgICAgZW51bSBHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhUKCk7Ci0KLSAg
ICAgICAgdm9pZCBSZWFkblBpeGVsc0VYVChpbnQgeCwgaW50IHksIHNpemVpIHdpZHRoLCBzaXpl
aSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBmb3JtYXQsIGVudW0g
dHlwZSwgc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpk
YXRhKTsKLQotICAgICAgICB2b2lkIEdldG5Vbmlmb3JtZnZFWFQodWludCBwcm9ncmFtLCBpbnQg
bG9jYXRpb24sIHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
bG9hdCAqcGFyYW1zKTsKLSAgICAgICAgdm9pZCBHZXRuVW5pZm9ybWl2RVhUKHVpbnQgcHJvZ3Jh
bSwgaW50IGxvY2F0aW9uLCBzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50ICpwYXJhbXMpOwotCi1OZXcgVG9rZW5zCi0KLSAgICBSZXR1cm5lZCBieSBHZXRH
cmFwaGljc1Jlc2V0U3RhdHVzRVhUOgotCi0gICAgICAgIE5PX0VSUk9SICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMAotICAgICAgICBHVUlMVFlfQ09OVEVYVF9S
RVNFVF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAweDgyNTMKLSAgICAgICAgSU5OT0NFTlRf
Q09OVEVYVF9SRVNFVF9FWFQgICAgICAgICAgICAgICAgICAgICAgMHg4MjU0Ci0gICAgICAgIFVO
S05PV05fQ09OVEVYVF9SRVNFVF9FWFQgICAgICAgICAgICAgICAgICAgICAgIDB4ODI1NQotCi0g
ICAgQWNjZXB0ZWQgYnkgdGhlIDx2YWx1ZT4gcGFyYW1ldGVyIG9mIEdldEJvb2xlYW52LCBHZXRJ
bnRlZ2VydiwKLSAgICBhbmQgR2V0RmxvYXR2OgotCi0gICAgICAgIENPTlRFWFRfUk9CVVNUX0FD
Q0VTU19FWFQgICAgICAgICAgICAgICAgICAgICAgIDB4OTBGMwotICAgICAgICBSRVNFVF9OT1RJ
RklDQVRJT05fU1RSQVRFR1lfRVhUICAgICAgICAgICAgICAgICAweDgyNTYKLQotICAgIFJldHVy
bmVkIGJ5IEdldEludGVnZXJ2IGFuZCByZWxhdGVkIHNpbXBsZSBxdWVyaWVzIHdoZW4gPHZhbHVl
PiBpcwotICAgIFJFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWV9FWFQgOgotCi0gICAgICAgIExP
U0VfQ09OVEVYVF9PTl9SRVNFVF9FWFQgICAgICAgICAgICAgICAgICAgICAgIDB4ODI1MgotICAg
ICAgICBOT19SRVNFVF9OT1RJRklDQVRJT05fRVhUICAgICAgICAgICAgICAgICAgICAgICAweDgy
NjEKLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgMiBvZiB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZp
Y2F0aW9uIChPcGVuR0wgRVMgT3BlcmF0aW9uKQotCi1BZGQgYSBuZXcgc3Vic2VjdGlvbiBhZnRl
ciAyLjUgIkdMIEVycm9ycyIgYW5kIHJlbnVtYmVyIHN1YnNlcXVlbnQKLXNlY3Rpb25zIGFjY29y
ZGluZ2x5LgotCi0gICAgMi42ICJHcmFwaGljcyBSZXNldCBSZWNvdmVyeSIKLQotICAgIENlcnRh
aW4gZXZlbnRzIGNhbiByZXN1bHQgaW4gYSByZXNldCBvZiB0aGUgR0wgY29udGV4dC4gU3VjaCBh
IHJlc2V0Ci0gICAgY2F1c2VzIGFsbCBjb250ZXh0IHN0YXRlIHRvIGJlIGxvc3QuIFJlY292ZXJ5
IGZyb20gc3VjaCBldmVudHMKLSAgICByZXF1aXJlcyByZWNyZWF0aW9uIG9mIGFsbCBvYmplY3Rz
IGluIHRoZSBhZmZlY3RlZCBjb250ZXh0LiBUaGUKLSAgICBjdXJyZW50IHN0YXR1cyBvZiB0aGUg
Z3JhcGhpY3MgcmVzZXQgc3RhdGUgaXMgcmV0dXJuZWQgYnkKLQotICAgICAgICBlbnVtIEdldEdy
YXBoaWNzUmVzZXRTdGF0dXNFWFQoKTsKLQotICAgIFRoZSBzeW1ib2xpYyBjb25zdGFudCByZXR1
cm5lZCBpbmRpY2F0ZXMgaWYgdGhlIEdMIGNvbnRleHQgaGFzIGJlZW4KLSAgICBpbiBhIHJlc2V0
IHN0YXRlIGF0IGFueSBwb2ludCBzaW5jZSB0aGUgbGFzdCBjYWxsIHRvCi0gICAgR2V0R3JhcGhp
Y3NSZXNldFN0YXR1c0VYVC4gTk9fRVJST1IgaW5kaWNhdGVzIHRoYXQgdGhlIEdMIGNvbnRleHQK
LSAgICBoYXMgbm90IGJlZW4gaW4gYSByZXNldCBzdGF0ZSBzaW5jZSB0aGUgbGFzdCBjYWxsLgot
ICAgIEdVSUxUWV9DT05URVhUX1JFU0VUX0VYVCBpbmRpY2F0ZXMgdGhhdCBhIHJlc2V0IGhhcyBi
ZWVuIGRldGVjdGVkCi0gICAgdGhhdCBpcyBhdHRyaWJ1dGFibGUgdG8gdGhlIGN1cnJlbnQgR0wg
Y29udGV4dC4KLSAgICBJTk5PQ0VOVF9DT05URVhUX1JFU0VUX0VYVCBpbmRpY2F0ZXMgYSByZXNl
dCBoYXMgYmVlbiBkZXRlY3RlZCB0aGF0Ci0gICAgaXMgbm90IGF0dHJpYnV0YWJsZSB0byB0aGUg
Y3VycmVudCBHTCBjb250ZXh0LgotICAgIFVOS05PV05fQ09OVEVYVF9SRVNFVF9FWFQgaW5kaWNh
dGVzIGEgZGV0ZWN0ZWQgZ3JhcGhpY3MgcmVzZXQgd2hvc2UKLSAgICBjYXVzZSBpcyB1bmtub3du
LgotCi0gICAgSWYgYSByZXNldCBzdGF0dXMgb3RoZXIgdGhhbiBOT19FUlJPUiBpcyByZXR1cm5l
ZCBhbmQgc3Vic2VxdWVudAotICAgIGNhbGxzIHJldHVybiBOT19FUlJPUiwgdGhlIGNvbnRleHQg
cmVzZXQgd2FzIGVuY291bnRlcmVkIGFuZAotICAgIGNvbXBsZXRlZC4gSWYgYSByZXNldCBzdGF0
dXMgaXMgcmVwZWF0ZWRseSByZXR1cm5lZCwgdGhlIGNvbnRleHQgbWF5Ci0gICAgYmUgaW4gdGhl
IHByb2Nlc3Mgb2YgcmVzZXR0aW5nLgotCi0gICAgUmVzZXQgbm90aWZpY2F0aW9uIGJlaGF2aW9y
IGlzIGRldGVybWluZWQgYXQgY29udGV4dCBjcmVhdGlvbiB0aW1lLAotICAgIGFuZCBtYXkgYmUg
cXVlcmllZCBieSBjYWxsaW5nIEdldEludGVnZXJ2IHdpdGggdGhlIHN5bWJvbGljIGNvbnN0YW50
Ci0gICAgUkVTRVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZX0VYVC4KLQotICAgIElmIHRoZSByZXNl
dCBub3RpZmljYXRpb24gYmVoYXZpb3IgaXMgTk9fUkVTRVRfTk9USUZJQ0FUSU9OX0VYVCwKLSAg
ICB0aGVuIHRoZSBpbXBsZW1lbnRhdGlvbiB3aWxsIG5ldmVyIGRlbGl2ZXIgbm90aWZpY2F0aW9u
IG9mIHJlc2V0Ci0gICAgZXZlbnRzLCBhbmQgR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCB3aWxs
IGFsd2F5cyByZXR1cm4KLSAgICBOT19FUlJPUltmbjFdLgotICAgICAgIFtmbjE6IEluIHRoaXMg
Y2FzZSBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IGltcGxlbWVudGF0aW9ucyBzaG91bGQKLSAgICAg
ICAgbm90IGFsbG93IGxvc3Mgb2YgY29udGV4dCBzdGF0ZSBubyBtYXR0ZXIgd2hhdCBldmVudHMg
b2NjdXIuCi0gICAgICAgIEhvd2V2ZXIsIHRoaXMgaXMgb25seSBhIHJlY29tbWVuZGF0aW9uLCBh
bmQgY2Fubm90IGJlIHJlbGllZAotICAgICAgICB1cG9uIGJ5IGFwcGxpY2F0aW9ucy5dCi0KLSAg
ICBJZiB0aGUgYmVoYXZpb3IgaXMgTE9TRV9DT05URVhUX09OX1JFU0VUX0VYVCwgYSBncmFwaGlj
cyByZXNldCB3aWxsCi0gICAgcmVzdWx0IGluIHRoZSBsb3NzIG9mIGFsbCBjb250ZXh0IHN0YXRl
LCByZXF1aXJpbmcgdGhlIHJlY3JlYXRpb24gb2YKLSAgICBhbGwgYXNzb2NpYXRlZCBvYmplY3Rz
LiBJbiB0aGlzIGNhc2UgR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCBtYXkKLSAgICByZXR1cm4g
YW55IG9mIHRoZSB2YWx1ZXMgZGVzY3JpYmVkIGFib3ZlLgotCi0gICAgSWYgYSBncmFwaGljcyBy
ZXNldCBub3RpZmljYXRpb24gb2NjdXJzIGluIGEgY29udGV4dCwgYSBub3RpZmljYXRpb24KLSAg
ICBtdXN0IGFsc28gb2NjdXIgaW4gYWxsIG90aGVyIGNvbnRleHRzIHdoaWNoIHNoYXJlIG9iamVj
dHMgd2l0aCB0aGF0Ci0gICAgY29udGV4dFtmbjJdLgotICAgICAgIFtmbjI6IFRoZSB2YWx1ZXMg
cmV0dXJuZWQgYnkgR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCBpbiB0aGUKLSAgICAgICAgZGlm
ZmVyZW50IGNvbnRleHRzIG1heSBkaWZmZXIuXQotCi0gICAgQWRkIHRvIFNlY3Rpb24gMi44ICJW
ZXJ0ZXggQXJyYXlzIiBiZWZvcmUgc3Vic2VjdGlvbiAiVHJhbnNmZXJyaW5nCi0gICAgQXJyYXkg
RWxlbWVudHMiCi0KLSAgICBSb2J1c3QgYnVmZmVyIGFjY2VzcyBpcyBlbmFibGVkIGJ5IGNyZWF0
aW5nIGEgY29udGV4dCB3aXRoIHJvYnVzdAotICAgIGFjY2VzcyBlbmFibGVkIHRocm91Z2ggdGhl
IHdpbmRvdyBzeXN0ZW0gYmluZGluZyBBUElzLiBXaGVuIGVuYWJsZWQsCi0gICAgaW5kaWNlcyB3
aXRoaW4gdGhlIHZlcnRleCBhcnJheSB0aGF0IGxpZSBvdXRzaWRlIHRoZSBhcnJheXMgZGVmaW5l
ZAotICAgIGZvciBlbmFibGVkIGF0dHJpYnV0ZXMgcmVzdWx0IGluIHVuZGVmaW5lZCB2YWx1ZXMg
Zm9yIHRoZQotICAgIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlcywgYnV0IGNhbm5vdCByZXN1bHQg
aW4gYXBwbGljYXRpb24gZmFpbHVyZS4KLSAgICBSb2J1c3QgYnVmZmVyIGFjY2VzcyBiZWhhdmlv
ciBtYXkgYmUgcXVlcmllZCBieSBjYWxsaW5nIEdldEludGVnZXJ2Ci0gICAgd2l0aCB0aGUgc3lt
Ym9saWMgY29uc3RhbnQgQ09OVEVYVF9ST0JVU1RfQUNDRVNTX0VYVC4KLQotQWRkaXRpb25zIHRv
IENoYXB0ZXIgNCBvZiB0aGUgT3BlbkdMIEVTIDIuMCBTcGVjaWZpY2F0aW9uIChQZXItRnJhZ21l
bnQKLU9wZXJhdGlvbnMgYW5kIHRoZSBGcmFtZSBCdWZmZXIpCi0KLSAgICBNb2RpZnkgc2VjdGlv
biA0LjMuMSAiUmVhZGluZyBQaXhlbHMiCi0KLSAgICBQaXhlbHMgYXJlIHJlYWQgdXNpbmcKLQot
ICAgICAgICB2b2lkIFJlYWRQaXhlbHMoaW50IHgsIGludCB5LCBzaXplaSB3aWR0aCwgc2l6ZWkg
aGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBmb3JtYXQsIGVudW0gdHlwZSwg
dm9pZCAqZGF0YSk7Ci0gICAgICAgIHZvaWQgUmVhZG5QaXhlbHNFWFQoaW50IHgsIGludCB5LCBz
aXplaSB3aWR0aCwgc2l6ZWkgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51
bSBmb3JtYXQsIGVudW0gdHlwZSwgc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZvaWQgKmRhdGEpOwotCi0gICAgQWRkIHRvIHRoZSBkZXNjcmlwdGlvbiBvZiBSZWFk
UGl4ZWxzOgotCi0gICAgUmVhZG5QaXhlbHNFWFQgYmVoYXZlcyBpZGVudGljYWxseSB0byBSZWFk
UGl4ZWxzIGV4Y2VwdCB0aGF0IGl0IGRvZXMKLSAgICBub3Qgd3JpdGUgbW9yZSB0aGFuIDxidWZT
aXplPiBieXRlcyBpbnRvIDxkYXRhPi4gSWYgdGhlIGJ1ZmZlciBzaXplCi0gICAgcmVxdWlyZWQg
dG8gZmlsbCBhbGwgdGhlIHJlcXVlc3RlZCBkYXRhIGlzIGdyZWF0ZXIgdGhhbiA8YnVmU2l6ZT4g
YW4KLSAgICBJTlZBTElEX09QRVJBVElPTiBlcnJvciBpcyBnZW5lcmF0ZWQgYW5kIDxkYXRhPiBp
cyBub3QgYWx0ZXJlZC4KLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgNSBvZiB0aGUgT3BlbkdMIEVT
IDIuMCBTcGVjaWZpY2F0aW9uIChTcGVjaWFsCi1GdW5jdGlvbnMpOgotCi0gICAgTm9uZQotCi1B
ZGRpdGlvbnMgdG8gQ2hhcHRlciA2IG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmljYXRpb24g
KFN0YXRlIGFuZAotU3RhdGUgUmVxdWVzdHMpCi0KLSAgICBNb2RpZnkgU2VjdGlvbiA2LjEuOCAi
U2hhZGVyIGFuZCBQcm9ncmFtIFF1ZXJpZXMiCi0KLSAgICBUaGUgY29tbWFuZHMKLQotICAgICAg
ICB2b2lkIEdldFVuaWZvcm1mdih1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgZmxvYXQgKnBh
cmFtcyk7Ci0gICAgICAgIHZvaWQgR2V0blVuaWZvcm1mdkVYVCh1aW50IHByb2dyYW0sIGludCBs
b2NhdGlvbiwgc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
b2F0ICpwYXJhbXMpOwotICAgICAgICB2b2lkIEdldFVuaWZvcm1pdih1aW50IHByb2dyYW0sIGlu
dCBsb2NhdGlvbiwgaW50ICpwYXJhbXMpOwotICAgICAgICB2b2lkIEdldG5Vbmlmb3JtaXZFWFQo
dWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgKnBhcmFtcyk7Ci0KLSAgICByZXR1cm4gdGhlIHZhbHVlIG9y
IHZhbHVlcyBvZiB0aGUgdW5pZm9ybSBhdCBsb2NhdGlvbiA8bG9jYXRpb24+Ci0gICAgZm9yIHBy
b2dyYW0gb2JqZWN0IDxwcm9ncmFtPiBpbiB0aGUgYXJyYXkgPHBhcmFtcz4uIENhbGxpbmcKLSAg
ICBHZXRuVW5pZm9ybWZ2RVhUIG9yIEdldG5Vbmlmb3JtaXZFWFQgZW5zdXJlcyB0aGF0IG5vIG1v
cmUgdGhhbgotICAgIDxidWZTaXplPiBieXRlcyBhcmUgd3JpdHRlbiBpbnRvIDxwYXJhbXM+LiBJ
ZiB0aGUgYnVmZmVyIHNpemUKLSAgICByZXF1aXJlZCB0byBmaWxsIGFsbCB0aGUgcmVxdWVzdGVk
IGRhdGEgaXMgZ3JlYXRlciB0aGFuIDxidWZTaXplPiBhbgotICAgIElOVkFMSURfT1BFUkFUSU9O
IGVycm9yIGlzIGdlbmVyYXRlZCBhbmQgPHBhcmFtcz4gaXMgbm90IGFsdGVyZWQuCi0gICAgLi4u
Ci0KLUFkZGl0aW9ucyB0byBUaGUgT3BlbkdMIEVTIFNoYWRpbmcgTGFuZ3VhZ2UgU3BlY2lmaWNh
dGlvbiwgVmVyc2lvbiAxLgotCi0gICAgQXBwZW5kIHRvIHRoZSB0aGlyZCBwYXJhZ3JhcGggb2Yg
c2VjdGlvbiA0LjEuOSAiQXJyYXlzIgotCi0gICAgSWYgcm9idXN0IGJ1ZmZlciBhY2Nlc3MgaXMg
ZW5hYmxlZCB2aWEgdGhlIE9wZW5HTCBFUyBBUEksIHN1Y2gKLSAgICBpbmRleGluZyBtdXN0IG5v
dCByZXN1bHQgaW4gYWJub3JtYWwgcHJvZ3JhbSB0ZXJtaW5hdGlvbi4gVGhlCi0gICAgcmVzdWx0
cyBhcmUgc3RpbGwgdW5kZWZpbmVkLCBidXQgaW1wbGVtZW50YXRpb25zIGFyZSBlbmNvdXJhZ2Vk
IHRvCi0gICAgcHJvZHVjZSB6ZXJvIHZhbHVlcyBmb3Igc3VjaCBhY2Nlc3Nlcy4KLQotSW50ZXJh
Y3Rpb25zIHdpdGggRUdMX0VYVF9jcmVhdGVfY29udGV4dF9yb2J1c3RuZXNzCi0KLSAgICBJZiB0
aGUgRUdMIHdpbmRvdy1zeXN0ZW0gYmluZGluZyBBUEkgaXMgdXNlZCB0byBjcmVhdGUgYSBjb250
ZXh0LAotICAgIHRoZSBFR0xfRVhUX2NyZWF0ZV9jb250ZXh0X3JvYnVzdG5lc3MgZXh0ZW5zaW9u
IGlzIHN1cHBvcnRlZCwgYW5kCi0gICAgdGhlIGF0dHJpYnV0ZSBFR0xfQ09OVEVYVF9PUEVOR0xf
Uk9CVVNUX0FDQ0VTU19FWFQgaXMgc2V0IHRvCi0gICAgRUdMX1RSVUUgd2hlbiBlZ2xDcmVhdGVD
b250ZXh0IGlzIGNhbGxlZCwgdGhlIHJlc3VsdGluZyBjb250ZXh0IHdpbGwKLSAgICBwZXJmb3Jt
IHJvYnVzdCBidWZmZXIgYWNjZXNzIGFzIGRlc2NyaWJlZCBhYm92ZSBpbiBzZWN0aW9uIDIuOCwg
YW5kCi0gICAgdGhlIENPTlRFWFRfUk9CVVNUX0FDQ0VTU19FWFQgcXVlcnkgd2lsbCByZXR1cm4g
R0xfVFJVRSBhcyBkZXNjcmliZWQKLSAgICBhYm92ZSBpbiBzZWN0aW9uIDYuMS41LgotCi0gICAg
SWYgdGhlIEVHTCB3aW5kb3ctc3lzdGVtIGJpbmRpbmcgQVBJIGlzIHVzZWQgdG8gY3JlYXRlIGEg
Y29udGV4dCBhbmQKLSAgICB0aGUgRUdMX0VYVF9jcmVhdGVfY29udGV4dF9yb2J1c3RuZXNzIGV4
dGVuc2lvbiBpcyBzdXBwb3J0ZWQsIHRoZW4KLSAgICB0aGUgdmFsdWUgb2YgYXR0cmlidXRlIEVH
TF9DT05URVhUX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWV9FWFQKLSAgICBkZXRlcm1pbmVz
IHRoZSByZXNldCBub3RpZmljYXRpb24gYmVoYXZpb3IgYW5kIHRoZSB2YWx1ZSBvZgotICAgIFJF
U0VUX05PVElGSUNBVElPTl9TVFJBVEVHWV9FWFQsIGFzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDIu
Ni4KLQotRXJyb3JzCi0KLSAgICBSZWFkblBpeGVsc0VYVCwgR2V0blVuaWZvcm1mdkVYVCwgYW5k
IEdldG5Vbmlmb3JtaXZFWFQgc2hhcmUgYWxsIHRoZQotICAgIGVycm9ycyBvZiB0aGVpciB1bnNp
emVkIGJ1ZmZlciBxdWVyeSBjb3VudGVycGFydHMgd2l0aCB0aGUgYWRkaXRpb24KLSAgICB0aGF0
IElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiB0aGUgYnVmZmVyIHNpemUgcmVxdWly
ZWQgdG8KLSAgICBmaWxsIGFsbCB0aGUgcmVxdWVzdGVkIGRhdGEgaXMgZ3JlYXRlciB0aGFuIDxi
dWZTaXplPi4KLQotTmV3IEltcGxlbWVudGF0aW9uIERlcGVuZGVudCBTdGF0ZQotCi0gICAgR2V0
IFZhbHVlICAgICAgICAgICAgICAgICAgICAgICBUeXBlICBHZXQgQ29tbWFuZCAgICAgTWluaW11
bSBWYWx1ZSAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgIFNlYy4gIEF0dHJpYnV0ZQot
ICAgIC0tLS0tLS0tLSAgICAgICAgICAgICAgICAgICAgICAgLS0tLSAgLS0tLS0tLS0tLS0gICAg
IC0tLS0tLS0tLS0tLS0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAtLS0tLSAtLS0t
LS0tLS0KLSAgICBDT05URVhUX1JPQlVTVF9BQ0NFU1NfRVhUICAgICAgIEIgICAgIEdldEludGVn
ZXJ2ICAgICAtICAgICAgICAgICAgICAgIFJvYnVzdCBhY2Nlc3MgZW5hYmxlZCAgICAgICAgNi4x
LjUgLQotICAgIFJFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWV9FWFQgWl8yICAgR2V0SW50ZWdl
cnYgICAgIFNlZSBzZWMuIDIuNiAgICAgUmVzZXQgbm90aWZpY2F0aW9uIGJlaGF2aW9yICAyLjYg
ICAtCi0KLUlzc3VlcwotCi0KLSAgICAxLiAgV2hhdCBzaG91bGQgdGhpcyBleHRlbnNpb24gYmUg
Y2FsbGVkPwotCi0gICAgICAgIFJFU09MVkVEOiBFWFRfcm9idXN0bmVzcwotCi0gICAgICAgIFNp
bmNlIHRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgYSB2ZXJzaW9uIG9mIEFSQl9yb2J1c3RuZXNzIGZv
cgotICAgICAgICBPcGVuR0wgRVMsIGl0IHNob3VsZCBiZSBuYW1lZCBhY2NvcmRpbmdseS4KLQot
ICAgIDIuICBIb3cgZG9lcyB0aGlzIGV4dGVuc2lvbiBkaWZmZXIgZnJvbSBEZXNrdG9wIEdMJ3Mg
QVJCX3JvYnVzdG5lc3M/Ci0KLSAgICAgICAgUkVTT0xWRUQ6IEJlY2F1c2UgRUdMX0VYVF9jcmVh
dGVfY29udGV4dF9yb2J1c3RuZXNzIHVzZXMgYQotCXNlcGFyYXRlIGF0dHJpYnV0ZSB0byBlbmFi
bGUgcm9idXN0IGJ1ZmZlciBhY2Nlc3MsIGEKLQljb3JyZXNwb25kaW5nIHF1ZXJ5IGlzIGFkZGVk
IGhlcmUuCi0KLSAgICAzLiAgU2hvdWxkIHdlIHByb3ZpZGUgYSBjb250ZXh0IGNyZWF0aW9uIG1l
Y2hhbmlzbSB0byBlbmFibGUgdGhpcyBleHRlbnNpb24/Ci0KLSAgICAgICAgUkVTT0xWRUQuIFll
cy4KLQotICAgICAgICBDdXJyZW50bHksIEVHTF9FWFRfY3JlYXRlX2NvbnRleHRfcm9idXN0bmVz
cyBwcm92aWRlcyB0aGlzCi0gICAgICAgIG1lY2hhbmlzbSB2aWEgdHdvIHVuaXF1ZSBhdHRyaWJ1
dGVzLiBUaGVzZSBhdHRyaWJ1dGVzIGRpZmZlcgotCWZyb20gdGhvc2Ugc3BlY2lmaWVkIGJ5IEtI
Ul9jcmVhdGVfY29udGV4dCB0byBhbGxvdyBmb3IKLQlkaWZmZXJlbmNlcyBpbiB3aGF0IGZ1bmN0
aW9uYWxpdHkgdGhvc2UgYXR0cmlidXRlcyBkZWZpbmUuCi0gICAgICAgIAotICAgIDQuIFdoYXQg
Y2FuIGNhdXNlIGEgZ3JhcGhpY3MgcmVzZXQ/Ci0KLSAgICAgICBFaXRoZXIgdXNlciBvciBpbXBs
ZW1lbnRvciBlcnJvcnMgbWF5IHJlc3VsdCBpbiBhIGdyYXBoaWNzIHJlc2V0LgotICAgICAgIElm
IHRoZSBhcHBsaWNhdGlvbiBhdHRlbXB0cyB0byBwZXJmb3JtIGEgcmVuZGVyaW5nIHRoYXQgdGFr
ZXMgdG9vIGxvbmcKLSAgICAgICB3aGV0aGVyIGR1ZSB0byBhbiBpbmZpbml0ZSBsb29wIGluIGEg
c2hhZGVyIG9yIGV2ZW4ganVzdCBhIHJlbmRlcmluZwotICAgICAgIG9wZXJhdGlvbiB0aGF0IHRh
a2VzIHRvbyBsb25nIG9uIHRoZSBnaXZlbiBoYXJkd2FyZS4gSW1wbGVtZW50YXRpb24KLSAgICAg
ICBlcnJvcnMgbWF5IHByb2R1Y2UgYmFkbHkgZm9ybWVkIGhhcmR3YXJlIGNvbW1hbmRzLiBNZW1v
cnkgYWNjZXNzIGVycm9ycwotICAgICAgIG1heSByZXN1bHQgZnJvbSB1c2VyIG9yIGltcGxlbWVu
dG9yIG1pc3Rha2VzLiBPbiBzb21lIHN5c3RlbXMsIHBvd2VyCi0gICAgICAgbWFuYWdlbWVudCBl
dmVudHMgc3VjaCBhcyBzeXN0ZW0gc2xlZXAsIHNjcmVlbiBzYXZlciBhY3RpdmF0aW9uLCBvcgot
ICAgICAgIHByZS1lbXB0aW9uIG1heSBhbHNvIGNvbnRleHQgcmVzZXRzIHRvIG9jY3VyLiBBbnkg
b2YgdGhlc2UgZXZlbnRzIG1heQotICAgICAgIHJlc3VsdCBpbiBhIGdyYXBoaWNzIHJlc2V0IGV2
ZW50IHRoYXQgd2lsbCBiZSBkZXRlY3RhYmxlIGJ5IHRoZQotICAgICAgIG1lY2hhbmlzbSBkZXNj
cmliZWQgaW4gdGhpcyBleHRlbnNpb24uCi0KLSAgICA1LiBIb3cgc2hvdWxkIHRoZSBhcHBsaWNh
dGlvbiByZWFjdCB0byBhIHJlc2V0IGNvbnRleHQgZXZlbnQ/Ci0KLSAgICAgICBSRVNPTFZFRDog
Rm9yIHRoaXMgZXh0ZW5zaW9uLCB0aGUgYXBwbGljYXRpb24gaXMgZXhwZWN0ZWQgdG8gcXVlcnkK
LSAgICAgICB0aGUgcmVzZXQgc3RhdHVzIHVudGlsIE5PX0VSUk9SIGlzIHJldHVybmVkLiBJZiBh
IHJlc2V0IGlzIGVuY291bnRlcmVkLAotICAgICAgIGF0IGxlYXN0IG9uZSAqUkVTRVQqIHN0YXR1
cyB3aWxsIGJlIHJldHVybmVkLiBPbmNlIE5PX0VSUk9SIGlzIGFnYWluCi0gICAgICAgZW5jb3Vu
dGVyZWQsIHRoZSBhcHBsaWNhdGlvbiBjYW4gc2FmZWx5IGRlc3Ryb3kgdGhlIG9sZCBjb250ZXh0
IGFuZAotICAgICAgIGNyZWF0ZSBhIG5ldyBvbmUuCi0KLSAgICAgICBBZnRlciBhIHJlc2V0IGV2
ZW50LCBhcHBzIHNob3VsZCBub3QgdXNlIGEgY29udGV4dCBmb3IgYW55IHB1cnBvc2UKLSAgICAg
ICBvdGhlciB0aGFuIGRldGVybWluaW5nIGl0cyByZXNldCBzdGF0dXMsIGFuZCB0aGVuIGRlc3Ry
b3lpbmcgaXQuIElmIGEKLSAgICAgICBjb250ZXh0IHJlY2VpdmVzIGEgcmVzZXQgZXZlbnQsIGFs
bCBvdGhlciBjb250ZXh0cyBpbiBpdHMgc2hhcmUgZ3JvdXAKLSAgICAgICB3aWxsIGFsc28gcmVj
ZWl2ZSByZXNldCBldmVudHMsIGFuZCBzaG91bGQgYmUgZGVzdHJveWVkIGFuZAotICAgICAgIHJl
Y3JlYXRlZC4KLQotICAgICAgIEFwcHMgc2hvdWxkIGJlIGNhdXRpb3VzIGluIGludGVycHJldGlu
ZyB0aGUgR1VJTFRZIGFuZCBJTk5PQ0VOVCByZXNldAotICAgICAgIHN0YXR1c2VzLiBUaGVzZSBh
cmUgZ3VpZGVsaW5lcyB0byB0aGUgaW1tZWRpYXRlIGNhdXNlIG9mIGEgcmVzZXQsIGJ1dAotICAg
ICAgIG5vdCBndWFyYW50ZWVzIG9mIHRoZSB1bHRpbWF0ZSBjYXVzZS4KLQotICAgIDYuIElmIGEg
Z3JhcGhpY3MgcmVzZXQgb2NjdXJzIGluIGEgc2hhcmVkIGNvbnRleHQsIHdoYXQgaGFwcGVucyBp
bgotICAgICAgIHNoYXJlZCBjb250ZXh0cz8KLQotICAgICAgIFJFU09MVkVEOiBBIHJlc2V0IGlu
IG9uZSBjb250ZXh0IHdpbGwgcmVzdWx0IGluIGEgcmVzZXQgaW4gYWxsIG90aGVyCi0gICAgICAg
Y29udGV4dHMgaW4gaXRzIHNoYXJlIGdyb3VwLiAKLQotICAgIDcuIEhvdyBjYW4gYW4gYXBwbGlj
YXRpb24gcXVlcnkgZm9yIHJvYnVzdCBidWZmZXIgYWNjZXNzIHN1cHBvcnQsCi0gICAgICAgc2lu
Y2UgdGhpcyBpcyBub3cgZGV0ZXJtaW5lZCBhdCBjb250ZXh0IGNyZWF0aW9uIHRpbWU/Ci0KLSAg
ICAgICBSRVNPTFZFRC4gVGhlIGFwcGxpY2F0aW9uIGNhbiBxdWVyeSB0aGUgdmFsdWUgb2YgUk9C
VVNUX0FDQ0VTU19FWFQKLSAgICAgICB1c2luZyBHZXRJbnRlZ2Vydi4gSWYgdHJ1ZSwgdGhpcyBm
dW5jdGlvbmFsaXR5IGlzIGVuYWJsZWQuCi0KLSAgICA4LiBIb3cgaXMgdGhlIHJlc2V0IG5vdGlm
aWNhdGlvbiBiZWhhdmlvciBjb250cm9sbGVkPwotCi0gICAgICAgUkVTT0xWRUQ6IFJlc2V0IG5v
dGlmaWNhdGlvbiBiZWhhdmlvciBpcyBkZXRlcm1pbmVkIGF0IGNvbnRleHQKLSAgICAgICBjcmVh
dGlvbiB0aW1lIHVzaW5nIEVHTC9HTFgvV0dML2V0Yy4gbWVjaGFuaXNtcy4gSW4gb3JkZXIgdGhh
dCBzaGFyZWQKLSAgICAgICBvYmplY3RzIGJlIGhhbmRsZWQgcHJlZGljdGFibHksIGEgY29udGV4
dCBjYW5ub3Qgc2hhcmUgd2l0aAotICAgICAgIGFub3RoZXIgY29udGV4dCB1bmxlc3MgYm90aCBo
YXZlIHRoZSBzYW1lIHJlc2V0IG5vdGlmaWNhdGlvbgotICAgICAgIGJlaGF2aW9yLgotCi0KLVJl
dmlzaW9uIEhpc3RvcnkKLQotICAgIFJldi4gICAgRGF0ZSAgICAgICBBdXRob3IgICAgIENoYW5n
ZXMKLSAgICAtLS0tICAtLS0tLS0tLS0tLS0gLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAzICAgMzEgT2N0ICAyMDExIGdyb3RoICAgICAg
UmV2ZXJ0ZWQgdG8gYXR0cmlidXRlIGZvciByb2J1c3QgYWNjZXNzLiBOb3cgaXQncyBhCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGFuaW9uIHRvIHJhdGhlciB0aGFuIHN1
YnNldCBvZiBLSFJfY3JlYXRlX2NvbnRleHQKLSAgICAgIDIgICAxMSBPY3QgIDIwMTEgZ3JvdGgg
ICAgICBNZXJnZWQgQU5HTEUgYW5kIE5WIGV4dGVuc2lvbnMuCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ29udmVydCB0byB1c2luZyBmbGFnIHRvIGluZGljYXRlIHJvYnVzdCBh
Y2Nlc3MuCi0gICAgICAxICAgMTUgSnVseSAyMDExIGdyb3RoICAgICAgSW5pdGlhbCB2ZXJzaW9u
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VYVF9zaGFkZXJfZnJh
bWVidWZmZXJfZmV0Y2gudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L2V4dGVuc2lvbnMvRVhUX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaC50eHQJKHJldmlzaW9uIDIw
ODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRVhUX3NoYWRlcl9m
cmFtZWJ1ZmZlcl9mZXRjaC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwyNjMgKzAsMCBAQAotTmFt
ZQotCi0gICAgRVhUX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaAotCi1OYW1lIFN0cmluZ3MKLQot
ICAgIEdMX0VYVF9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2gKLQotQ29udGFjdAotCi0gICAgQmVu
aiBMaXBjaGFrLCBBcHBsZSAobGlwY2hhayAnYXQnIGFwcGxlLmNvbSkKLQotU3RhdHVzCi0KLSAg
ICBDb21wbGV0ZQotCi1WZXJzaW9uCi0KLSAgICBMYXN0IE1vZGlmaWVkIERhdGU6IE1heSAyOCwg
MjAxMwotICAgIEF1dGhvciBSZXZpc2lvbjogNAotCi1OdW1iZXIKLQotICAgIE9wZW5HTCBFUyBF
eHRlbnNpb24gIzEyMgotCi1EZXBlbmRlbmNpZXMKLQotICAgIE9wZW5HTCBFUyAyLjAgaXMgcmVx
dWlyZWQuCi0gICAgCi0gICAgVGhpcyBzcGVjaWZpY2F0aW9uIGlzIHdyaXR0ZW4gYWdhaW5zdCB0
aGUgT3BlbkdMIEVTIDIuMC4yNCBzcGVjaWZpY2F0aW9uLgotICAgIFRoaXMgZXh0ZW5zaW9uIGlz
IHdyaXR0ZW4gYWdhaW5zdCB0aGUgT3BlbkdMIEVTIFNoYWRpbmcgTGFuZ3VhZ2UgMS4wLjE3Ci0g
ICAgc3BlY2lmaWNhdGlvbi4KLSAgICAKLSAgICBPcGVuR0wgRVMgMy4wIGFmZmVjdHMgdGhlIGRl
ZmluaXRpb24gb2YgdGhpcyBleHRlbnNpb24uCi0KLU92ZXJ2aWV3Ci0KLSAgICBDb252ZW50aW9u
YWwgT3BlbkdMIGJsZW5kaW5nIHByb3ZpZGVzIGEgY29uZmlndXJhYmxlIHNlcmllcyBvZiBvcGVy
YXRpb25zCi0gICAgdGhhdCBjYW4gYmUgdXNlZCB0byBjb21iaW5lIHRoZSBvdXRwdXQgdmFsdWVz
IGZyb20gYSBmcmFnbWVudCBzaGFkZXIgd2l0aAotICAgIHRoZSB2YWx1ZXMgYWxyZWFkeSBpbiB0
aGUgZnJhbWVidWZmZXIuIFdoaWxlIHRoZXNlIG9wZXJhdGlvbnMgYXJlCi0gICAgc3VpdGFibGUg
Zm9yIGJhc2ljIGltYWdlIGNvbXBvc2l0aW5nLCBvdGhlciBjb21wb3NpdGluZyBvcGVyYXRpb25z
IG9yCi0gICAgb3BlcmF0aW9ucyB0aGF0IHRyZWF0IGZyYWdtZW50IG91dHB1dCBhcyBzb21ldGhp
bmcgb3RoZXIgdGhhbiBhIGNvbG9yCi0gICAgKG5vcm1hbHMsIGZvciBpbnN0YW5jZSkgbWF5IG5v
dCBiZSBleHByZXNzaWJsZSB3aXRob3V0IG11bHRpcGxlIHBhc3NlcyBvcgotICAgIHJlbmRlci10
by10ZXh0dXJlIG9wZXJhdGlvbnMuCi0KLSAgICBUaGlzIGV4dGVuc2lvbiBwcm92aWRlcyBhIG1l
Y2hhbmlzbSB3aGVyZWJ5IGEgZnJhZ21lbnQgc2hhZGVyIG1heSByZWFkCi0gICAgZXhpc3Rpbmcg
ZnJhbWVidWZmZXIgZGF0YSBhcyBpbnB1dC4gVGhpcyBjYW4gYmUgdXNlZCB0byBpbXBsZW1lbnQK
LSAgICBjb21wb3NpdGluZyBvcGVyYXRpb25zIHRoYXQgd291bGQgaGF2ZSBiZWVuIGluY29udmVu
aWVudCBvciBpbXBvc3NpYmxlIHdpdGgKLSAgICBmaXhlZC1mdW5jdGlvbiBibGVuZGluZy4gSXQg
Y2FuIGFsc28gYmUgdXNlZCB0byBhcHBseSBhIGZ1bmN0aW9uIHRvIHRoZQotICAgIGZyYW1lYnVm
ZmVyIGNvbG9yLCBieSB3cml0aW5nIGEgc2hhZGVyIHdoaWNoIHVzZXMgdGhlIGV4aXN0aW5nIGZy
YW1lYnVmZmVyCi0gICAgY29sb3IgYXMgaXRzIG9ubHkgaW5wdXQuCi0KLUlzc3VlcwotCi0gICAg
MS4gSG93IGlzIGZyYW1lYnVmZmVyIGRhdGEgdHJlYXRlZCBkdXJpbmcgbXVsdGlzYW1wbGUgcmVu
ZGVyaW5nPwotICAgIAotICAgIFJFU09MVkVEOiBSZWFkaW5nIHRoZSB2YWx1ZSBvZiBnbF9MYXN0
RnJhZ0RhdGEgcHJvZHVjZXMgYSBkaWZmZXJlbnQKLSAgICByZXN1bHQgZm9yIGVhY2ggc2FtcGxl
LiBUaGlzIGltcGxpZXMgdGhhdCBhbGwgb3IgcGFydCBvZiB0aGUgc2hhZGVyIGJlIHJ1bgotICAg
IG9uY2UgZm9yIGVhY2ggc2FtcGxlLiBJbnB1dCB2YWx1ZXMgdG8gdGhlIHNoYWRlciBmcm9tIGV4
aXN0aW5nIHZhcmlhYmxlcwotICAgIGluIEdMU0wgRVMgcmVtYWluIGlkZW50aWNhbCBhY3Jvc3Mg
c2FtcGxlcy4KLSAgICAKLSAgICAyLiBIb3cgZG9lcyB0aGUgdXNlIG9mIGdsX0xhc3RGcmFnRGF0
YSBpbnRlcmFjdCB3aXRoIGZyYWdtZW50IGRpc2NhcmQ/Ci0gICAgCi0gICAgUkVTT0xWRUQ6IEhh
cmR3YXJlIG1heSBub3QgbmVjZXNzYXJpbHkgc3VwcG9ydCBkaXNjYXJkaW5nIG9uIHNhbXBsZQot
ICAgIGdyYW51bGFyaXR5LiBUaGVyZWZvcmUsIHRocmVlIG9wdGlvbnMgd2VyZSBjb25zaWRlcmVk
IGZvciB0aGlzCi0gICAgZnVuY3Rpb25hbGl0eToKLSAgICAKLSAgICAgICAgQSkgQWxsb3cgZGlz
Y2FyZCBiYXNlZCBvbiB2YXJpYWJsZXMgY2FsY3VsYXRlZCB1c2luZyB0aGUgZnJhbWVidWZmZXIK
LSAgICAgICAgICAgY29sb3Igd2hlbiBtdWx0aXNhbXBsZSByYXN0ZXJpemF0aW9uIGlzIGRpc2Fi
bGVkLCBidXQgZGlzYWxsb3cKLSAgICAgICAgICAgZGlzY2FyZCBpbiB0aGlzIG1hbm5lciB3aGVu
IG11bHRpc2FtcGxlIHJhc3Rlcml6YXRpb24gaXMgZW5hYmxlZC4KLSAgICAgICAgCi0gICAgICAg
IEIpIFJlc3RyaWN0IHVzYWdlIG9mIHRoZSBmcmFtZWJ1ZmZlciBjb2xvciB1bnRpbCBpdCBpcyBr
bm93biB3aGV0aGVyCi0gICAgICAgICAgIG9yIG5vdCB0aGUgcGl4ZWwgd2lsbCBiZSBkaXNjYXJk
ZWQuCi0gICAgICAgICAgICAKLSAgICAgICAgQykgQWxsb3cgdW5kZWZpbmVkIHJlc3VsdHMgZm9y
IGZyYWdtZW50IHNoYWRlcnMgdGhhdCBkaXNjYXJkIG9uIGEKLSAgICAgICAgICAgcGVyLXNhbXBs
ZSBiYXNpcyBvbiBoYXJkd2FyZSB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCBpdC4KLSAgICAKLSAgICBU
aGlzIGV4dGVuc2lvbiBoYXMgY2hvc2VuIG9wdGlvbiBDLiBSZXN0cmljdGluZyBvcnRob2dvbmFs
aXR5IG9mIGZyYWdtZW50Ci0gICAgc2hhZGVycyBiZXR3ZWVuIHNpbmdsZS1zYW1wbGUgYW5kIG11
bHRpc2FtcGxlIHJlbmRlcmluZyBpcyB1bmRlc2lyYWJsZSwgYXMKLSAgICBpcyByZXN0cmljdGlu
ZyB1c2FnZSBvZiB0aGUgZnJhbWVidWZmZXIgY29sb3IsIHdoaWNoIGNhbiBnZW5lcmFsbHkgb25s
eSBiZQotICAgIGRvbmUgd2l0aCBkZXRhaWxlZCBmbG93LWNvbnRyb2wgYW5hbHlzaXMuCi0gICAg
Ci0gICAgMy4gV2hhdCBpcyB0aGUgcHJlY2lzaW9uIG9mIGdsX0xhc3RGcmFnRGF0YSBpbiBwcmFj
dGljZT8KLSAgICAKLSAgICBSRVNPTFZFRDogVGhyZWUgb3B0aW9ucyB3ZXJlIGNvbnNpZGVyZWQg
Zm9yIHRoaXMgZnVuY3Rpb25hbGl0eToKLSAgICAKLSAgICAgICAgQSkgZ2xfTGFzdEZyYWdEYXRh
IGlzIGFsd2F5cyBtZWRpdW1wLgotICAgICAgICAKLSAgICAgICAgQikgZ2xfTGFzdEZyYWdEYXRh
IHRha2VzIHRoZSBwcmVjaXNpb24gbW9zdCBjbG9zZWx5IG1hdGNoaW5nIHRoZQotICAgICAgICAg
ICBhY3R1YWwgc3RvcmFnZSBmb3JtYXQgb2YgdGhlIGZyYW1lYnVmZmVyLgotICAgICAgICAKLSAg
ICAgICAgQykgQWxsb3cgcmVkZWNsYXJhdGlvbiBvZiBnbF9MYXN0RnJhZ0RhdGEgaW4gb3JkZXIg
dG8gY2hhbmdlIGl0cwotICAgICAgICAgICBwcmVjaXNpb24uCi0gICAgCi0gICAgVGhpcyBleHRl
bnNpb24gaGFzIGNob3NlbiBvcHRpb24gQy4gQSBmaXhlZCBwcmVjaXNpb24gcGVyIG9wdGlvbiBB
Ci0gICAgaW5jcmVhc2VzIHRoZSBsaWtlbGlob29kIG9mIHJlZHVuZGFudCBjb252ZXJzaW9uIG9w
ZXJhdGlvbnMgaW4gdGhlIHNoYWRlciwKLSAgICBhbmQgb3B0aW9uIEIgZG9lcyBub3QgcHJvdmlk
ZSBmb3IgY2xlYXIgYmVoYXZpb3Igd2l0aCByZWdhcmQgdG8gdGhlCi0gICAgcHJlY2lzaW9uIG9m
IGludGVybWVkaWF0ZSByZXN1bHRzIGZyb20gY2FsY3VsYXRpb25zIHVzaW5nIHRoZQotICAgIGZy
YW1lYnVmZmVyIGNvbG9yLgotCi0gICAgNC4gSG93IGRvZXMgdGhpcyBleHRlbnNpb24gaXRlcmFj
dCB3aXRoIGNvbnZlbnRpb25hbCBibGVuZGluZz8KLSAgICAKLSAgICBSRVNPTFZFRDogVGhlcmUg
aXMgbm8gaW50ZXJhY3Rpb24uICBUaGUgdHdvIHJlbWFpbiBvcnRob2dvbmFsLiAgVGhlIHJlc3QK
LSAgICBvZiB0aGUgcGlwZWxpbmUgY29udGludWVzIGFzIHVzdWFsIGFmdGVyIHRoZSBmcmFnbWVu
dCBzaGFkZXIgc3RhZ2UuCi0gICAgCi0KLSAgICA1LiBIb3cgZG9lcyB0aGlzIGV4dGVuc2lvbiB3
b3JrIGluIEVTIDMuMD8KLQotICAgIFJFU09MVkVEOiBEaWZmZXJlbnRseSB0aGFuIGluIEVTIDIu
MC4KLQotICAgIFRoZSBidWlsdC1pbiBmcmFnbWVudCBvdXRwdXRzIG9mIEVTIDIuMCBhcmUgcmVw
bGFjZWQgaW4gI3ZlcnNpb24gMzAwIGVzCi0gICAgc2hhZGVycyBieSB1c2VyLWRlY2xhcmVkIG91
dHB1dHMsIHRvIGFjY29tb2RhdGUgaW50ZWdlciBhbmQgTVJUIAotICAgIGZyYW1lYnVmZmVycy4g
IFRocmVlIG9wdGlvbnMgd2VyZSBjb25zaWRlcmVkOgotCi0gICAgICAgIEEpIEFkZCBidWlsdC1p
bnMgc2ltaWxhciB0byBnbF9MYXN0RnJhZ0RhdGEuCi0gICAgICAgIAotICAgICAgICBCKSBBZGQg
YSBsYXlvdXQgdG8gbWFyayB1c2VyLWRlY2xhcmVkIGZyYWdtZW50IG91dHB1dHMgYXMgaGF2aW5n
Ci0gICAgICAgIGRlZmluZWQgY29udGVudCBvbiBlbnRyeSB0byBmcmFnbWVudCBzaGFkZXIuCi0g
ICAgICAgICAgICAKLSAgICAgICAgQykgQWxsb3cgbWFya2luZyB1c2VyLWRlY2xhcmVkIGZyYWdt
ZW50IG91dHB1dHMgYXMgImlub3V0Ii4KLQotICAgIFRoaXMgZXh0ZW5zaW9uIGhhcyBjaG9zZW4g
b3B0aW9uIEMuICBBZGRpbmcgYnVpbHQtaW5zIHBlciBvcHRpb24gQSBpcwotICAgIHVud2llbGR5
IGZvciBNUlQgZnJhbWVidWZmZXJzIHdpdGggbWl4ZWQgYXR0YWNobWVudCB0eXBlcyBhbmQgcHJl
Y2lzaW9ucy4gIAotICAgIE9wdGlvbnMgQiBhbmQgQyBhcmUgc2VtYW50aWNhbGx5IGlkZW50aWNh
bCwgYnV0IEMgcmVxdWlyZXMgZmV3ZXIgCi0gICAgbW9kaWZpY2F0aW9ucyB0byB0aGUgc3BlY2lm
aWNhdGlvbiBhbmQgdG8gdXNlciBzaGFkZXJzLiAgTm90ZSB0aGF0IHRoZSAKLSAgICBpbm91dCBx
dWFsaWZpZXIgaXMgbm90IGFsbG93ZWQgZm9yIHJlLWRlY2xhcmluZyBleGlzdGluZyBmcmFnbWVu
dCBvdXRwdXRzIAotICAgIHN1Y2ggYXMgZ2xfRnJhZ0RlcHRoLgotCi1OZXcgUHJvY2VkdXJlcyBh
bmQgRnVuY3Rpb25zCi0KLSAgICBOb25lCi0gICAgCi1OZXcgVG9rZW5zCi0KLSAgICBBY2NlcHRl
ZCBieSB0aGUgPHBuYW1lPiBwYXJhbWV0ZXIgb2YgR2V0Qm9vbGVhbnYsIEdldEludGVnZXJ2LCBH
ZXRGbG9hdHYsCi0gICAgYW5kIEdldERvdWJsZXY6Ci0gICAgCi0gICAgICAgIEZSQUdNRU5UX1NI
QURFUl9ESVNDQVJEU19TQU1QTEVTX0VYVCAgICAgICAgICAgIDB4OEE1MgotCi1OZXcgQnVpbHRp
biBWYXJpYWJsZXMKLQotICAgIG1lZGl1bXAgdmVjNCBnbF9MYXN0RnJhZ0RhdGFbZ2xfTWF4RHJh
d0J1ZmZlcnNdCi0gICAgCi1DaGFuZ2VzIHRvIHRoZSBPcGVuR0wgRVMgMi4wLjI0IFNwZWNpZmlj
YXRpb24sIENoYXB0ZXIgMwotCi0gICAgUmVtb3ZlIHRoZSBsYXN0IHNlbnRlbmNlIG9mIFBhcmFn
cmFwaCAyIG9mIFNlY3Rpb24gMy44LjEsIHBhZ2UgODQgKCJUaGVzZQotICAgIGJ1aWx0LWluIHZh
cnlpbmcgdmFyaWFibGVzIGluY2x1ZGUgWy4uLl0iIGFuZCBhZGQ6Ci0gICAgCi0gICAgVGhlc2Ug
YnVpbHQtaW4gdmFyeWluZyB2YXJpYWJsZXMgaW5jbHVkZSB0aGUgZnJhZ21lbnQncyBwb3NpdGlv
biwgZXllIHoKLSAgICBjb29yZGluYXRlLCBhbmQgZnJvbnQtZmFjaW5nIGZsYWcsIGFzIHdlbGwg
YXMgdGhlIGxhc3QgZGF0YSBvciBjb2xvciB2YWx1ZQotICAgIHdyaXR0ZW4gdG8gdGhlIGZyYW1l
YnVmZmVyLiBXaGVuIHRoZSB2YWx1ZSBvZiBTQU1QTEVfQlVGRkVSUyBpcyAxIGFuZCB0aGUgCi0g
ICAgY3VycmVudCBmcmFtZWJ1ZmZlciBjb2xvciBpcyBhY2Nlc3NlZCBpbiB0aGUgZnJhZ21lbnQg
c2hhZGVyLCB0aGUgZnJhZ21lbnQKLSAgICBzaGFkZXIgd2lsbCBiZSBpbnZva2VkIHNlcGFyYXRl
bHkgZm9yIGVhY2ggY292ZXJlZCBzYW1wbGUgYW5kIGEgc2VwYXJhdGUgCi0gICAgdmFsdWUgZm9y
IHRoZSBwcmV2aW91cyBmcmFtZWJ1ZmZlciBjb2xvciB3aWxsIGJlIHByb3ZpZGVkIGZvciBlYWNo
IHNhbXBsZS4iCi0gICAgCi0gICAgQWRkIGEgbmV3IHN1YnNlY3Rpb24gdG8gc2VjdGlvbiAzLjgu
MiwgcGFnZSA4NyAoIlNoYWRlciBFeGVjdXRpb24iKToKLSAgICAKLSAgICAiRGlzY2FyZAotICAg
IAotICAgIEZyYWdtZW50IHNoYWRlcnMgbWF5IGNvbmRpdGlvbmFsbHkgYWJhbmRvbiBvcGVyYXRp
b25zIHVzaW5nIHRoZSBkaXNjYXJkCi0gICAga2V5d29yZC4gSG93ZXZlciwgdGhlIGFiaWxpdHkg
b2YgaGFyZHdhcmUgdG8gc3VwcG9ydCBhYmFuZG9uaW5nIG9wZXJhdGlvbnMKLSAgICBvbiBhIHNp
bmdsZSBzYW1wbGUgd2hlbiB0aGUgc2hhZGVyIGlzIGludm9rZWQgb25jZSBmb3IgZWFjaCBjb3Zl
cmVkIHNhbXBsZQotICAgIGlzIGltcGxlbWVudGF0aW9uLWRlcGVuZGVudC4gVGhpcyBjYXBhYmls
aXR5IGNhbiBiZSBkZXRlcm1pbmVkIGJ5IGNhbGxpbmcKLSAgICBHZXRCb29sZWFudiB3aXRoIHRo
ZSBzeW1ib2xpYyBjb25zdGFudCAKLSAgICBGUkFHTUVOVF9TSEFERVJfRElTQ0FSRFNfU0FNUExF
U19FWFQuIElmIEZBTFNFIGlzIHJldHVybmVkLCByZXN1bHRzIGZyb20KLSAgICBzaGFkZXJzIHdo
aWNoIGRpc2NhcmQgYmFzZWQgb24gcGVyLXNhbXBsZSBsb2dpYyBhcmUgdW5kZWZpbmVkLiIKLQot
Q2hhbmdlcyB0byB0aGUgT3BlbkdMIEVTIDIuMC4yNCBTcGVjaWZpY2F0aW9uLCBDaGFwdGVyIDQK
LQotICAgIFJlcGxhY2UgZmlyc3QgZWxlbWVudCBvZiBGaWd1cmUgNC4xLCBwYWdlIDkwICgiRnJh
Z21lbnQgKyBBc3NvY2lhdGVkIERhdGEiKToKLSAgICAKLSAgICAiRnJhZ21lbnQgKG9yIHNhbXBs
ZSkgKyBBc3NvY2lhdGVkIERhdGEiCi0KLU5ldyBJbXBsZW1lbnRhdGlvbiBEZXBlbmRlbnQgU3Rh
dGUKLQotICAgIEFkZCB0byB0YWJsZSA2LjE5IChJbXBsZW1lbnRhdGlvbiBEZXBlbmRlbnQgVmFs
dWVzIChjb250LikpOgotCi0gICAgR2V0IFZhbHVlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUeXBlICBHZXQgQ29tbWFuZCAgTWluaW11bSBWYWx1ZSAgRGVzY3JpcHRpb24gICAgICAgIFNl
Y3Rpb24KLSAgICAtLS0tLS0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0gIC0t
LS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tLSAgICAgLS0tLS0tLQotICAg
IEZSQUdNRU5UX1NIQURFUl9ESVNDQVJEU19TQU1QTEVTX0VYVCAgQiAgICAgR2V0Qm9vbGVhbnYg
IC0gICAgICAgICAgICAgIFNhbXBsZXMgbWF5IGJlICAgICAzLjguMgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRpc2NhcmRlZCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpdmlkdWFsbHkgCi0KLUNoYW5n
ZXMgdG8gdGhlIE9wZW5HTCBFUyBTaGFkaW5nIExhbmd1YWdlIDEuMC4xNyBTcGVjaWZpY2F0aW9u
LCBDaGFwdGVyIDMKLQotICAgIFJlbW92ZSBQYXJhZ3JhcGggMiBvZiBzZWN0aW9uIDMuOCwgcGFn
ZSAxNywgSWRlbnRpZmllcnMgKCJJZGVudGlmaWVycwotICAgIHN0YXJ0aW5nIHdpdGggImdsXyIg
YXJlIHJlc2VydmVkIFsuLi5dIikgYW5kIGFkZDoKLQotICAgICJJZGVudGlmaWVycyBzdGFydGlu
ZyB3aXRoICJnbF8iIGFyZSByZXNlcnZlZCBmb3IgdXNlIGJ5IE9wZW5HTCBFUywgYW5kCi0gICAg
bWF5IG5vdCBiZSBkZWNsYXJlZCBpbiBhIHNoYWRlciBhcyBlaXRoZXIgYSB2YXJpYWJsZSBvciBh
IGZ1bmN0aW9uLgotICAgIEhvd2V2ZXIsIGFzIG5vdGVkIGluIHRoZSBzcGVjaWZpY2F0aW9uLCBj
ZXJ0YWluIHByZWRlY2xhcmVkICJnbF8iIG5hbWVzCi0gICAgYXJlIGFsbG93ZWQgdG8gYmUgcmVk
ZWNsYXJlZCBpbiBhIHNoYWRlciBmb3IgdGhlIHNwZWNpZmljIHB1cnBvc2Ugb2YKLSAgICBjaGFu
Z2luZyB0aGVpciBwcmVjaXNpb24gcXVhbGlmaWVyLiIKLSAgICAKLUNoYW5nZXMgdG8gdGhlIE9w
ZW5HTCBFUyBTaGFkaW5nIExhbmd1YWdlIDEuMC4xNyBTcGVjaWZpY2F0aW9uLCBDaGFwdGVyIDcK
LQotICAgIEFkZCBhZnRlciB0aGUgbGFzdCBzZW50ZW5jZSBvZiBQYXJhZ3JhcGggMiBvZiBTZWN0
aW9uIDcuMiwgcGFnZSA2MCwKLSAgICBGcmFnbWVudCBTaGFkZXIgU3BlY2lhbCBWYXJpYWJsZXMg
KCJUaGVzZSB2YXJpYWJsZXMgbWF5IGJlIHdyaXR0ZW4gdG8KLSAgICBtb3JlIFsuLi5dIik6Ci0g
ICAgCi0gICAgIi4uLiBUbyBhY2Nlc3MgdGhlIGV4aXN0aW5nIGZyYW1lYnVmZmVyIHZhbHVlcyAo
ZS5nLiwgdG8gaW1wbGVtZW50IGEKLSAgICBjb21wbGV4IGJsZW5kIG9wZXJhdGlvbiBpbnNpZGUg
dGhlIHNoYWRlciksIGZyYWdtZW50IHNoYWRlcnMgc2hvdWxkIHVzZQotICAgIHRoZSByZWFkLW9u
bHkgaW5wdXQgYXJyYXkgZ2xfTGFzdEZyYWdEYXRhLiAgZ2xfTGFzdEZyYWdEYXRhIHJldHVybnMg
dGhlCi0gICAgdmFsdWUgd3JpdHRlbiBieSB0aGUgbW9zdCByZWNlbnQgZnJhZ21lbnQgYXQgdGhl
IHNhbWUgcG9zaXRpb24uCi0gICAgCi0gICAgQWNjZXNzIHRvIGdsX0xhc3RGcmFnRGF0YSBpcyBv
cHRpb25hbCwgYW5kIG11c3QgYmUgZW5hYmxlZCBieSAKLSAgICAKLSAgICAjZXh0ZW5zaW9uIEdM
X0VYVF9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2ggOiA8YmVoYXZpb3I+Ci0gICAgCi0gICAgV2hl
cmUgPGJlaGF2aW9yPiBpcyBhcyBzcGVjaWZpZWQgaW4gc2VjdGlvbiAzLjMuCi0gICAgCi0gICAg
QnkgZGVmYXVsdCwgZ2xfTGFzdEZyYWdEYXRhIGlzIGRlY2xhcmVkIHdpdGggdGhlIG1lZGl1bXAg
cHJlY2lzaW9uCi0gICAgcXVhbGlmaWVyLiBUaGlzIGNhbiBiZSBjaGFuZ2VkIGJ5IHJlZGVjbGFy
aW5nIHRoZSBjb3JyZXNwb25kaW5nIHZhcmlhYmxlcwotICAgIHdpdGggdGhlIGRlc2lyZWQgcHJl
Y2lzaW9uIHF1YWxpZmllci4KLSAgICAKLSAgICBSZWRlY2xhcmF0aW9ucyBhcmUgZG9uZSBhcyBm
b2xsb3dzCi0gICAgCi0gICAgLy8gUmVkZWNsYXJhdGlvbiB0aGF0IGNoYW5nZXMgbm90aGluZyBp
cyBhbGxvd2VkCi0gICAgbWVkaXVtcCB2ZWM0IGdsX0xhc3RGcmFnRGF0YVtnbF9NYXhEcmF3QnVm
ZmVyc107IAotICAgIAotICAgIC8vIEFsbCB0aGUgZm9sbG93aW5nIGFyZSBhbGxvd2VkIHJlZGVj
bGFyYXRpb24gdGhhdCBjaGFuZ2UgYmVoYXZpb3IKLSAgICBsb3dwIHZlYzQgZ2xfTGFzdEZyYWdE
YXRhW2dsX01heERyYXdCdWZmZXJzXTsKLSAgICBoaWdocCB2ZWM0IGdsX0xhc3RGcmFnRGF0YVtn
bF9NYXhEcmF3QnVmZmVyc107Ci0gICAgCi0gICAgUmVkZWNsYXJhdGlvbnMgbXVzdCBub3Qgb3Ro
ZXJ3aXNlIGFsdGVyIHRoZSBkZWNsYXJlZCB0eXBlIG9yIGFycmF5IHNpemUgb2YKLSAgICBnbF9M
YXN0RnJhZ0RhdGEuIgotICAgIAotQ2hhbmdlcyB0byB0aGUgT3BlbkdMIEVTIFNoYWRpbmcgTGFu
Z3VhZ2UgMy4wMC4zIFNwZWNpZmljYXRpb24sIENoYXB0ZXIgNAotCi0gICAgTW9kaWZ5IFBhcmFn
cmFwaCAyIG9mIHNlY3Rpb24gNC4zLjY6Ci0gICAgIkV4Y2VwdCBpbiB0aGUgZnJhZ21lbnQgc3Rh
Z2UsIHRoZXJlIGlzIG5vdCBhbiBpbm91dCBzdG9yYWdlIHF1YWxpZmllciBhdAotICAgIGdsb2Jh
bCBzY29wZSBmb3IgZGVjbGFyaW5nIGEgc2luZ2xlIHZhcmlhYmxlIG5hbWUgYXMgYm90aCBpbnB1
dCBhbmQgb3V0cHV0Ci0gICAgWy4uLl0iCi0KLSAgICBNb2RpZnkgUGFyYWdyYXBoIDUgb2Ygc2Vj
dGlvbiA0LjMuNjoKLSAgICAiRnJhZ21lbnQgb3V0cHV0cyBvdXRwdXQgcGVyLWZyYWdtZW50IGRh
dGEgYW5kIGFyZSBkZWNsYXJlZCB1c2luZyB0aGUgb3V0Ci0gICAgb3IgaW5vdXQgc3RvcmFnZSBx
dWFsaWZpZXIuIEl0IGlzIGFuIGVycm9yIHRvIHVzZSBjZW50cm9pZCBvdXQgb3IgY2VudHJvaWQK
LSAgICBpbm91dCBpbiBhIGZyYWdtZW50IHNoYWRlciBbLi4uXSIgYW5kIGFwcGVuZCBuZXcgcGFy
YWdyYXBoOgotCi0gICAgIlVwb24gZW50cnkgdG8gdGhlIGZyYWdtZW50IHNoYWRlciwgZnJhZ21l
bnQgb3V0cHV0cyBkZWNsYXJlZCBhcyBpbm91dCB3aWxsCi0gICAgY29udGFpbiB0aGUgdmFsdWUg
d3JpdHRlbiBieSB0aGUgbW9zdCByZWNlbnQgZnJhZ21lbnQgYXQgdGhlIHNhbWUgcG9zaXRpb24u
Ci0gICAgVGhpcyBiZWhhdmlvciwgYW5kIHRoZSBhYmlsaXR5IHRvIHVzZSB0aGUgaW5vdXQgcXVh
bGlmaWVyIGF0IGdsb2JhbCBzY29wZSAKLSAgICBpbiBhIGZyYWdtZW50IHNoYWRlciwgaXMgb3B0
aW9uYWwgYW5kIG11c3QgYmUgZW5hYmxlZCBieQotCi0gICAgI2V4dGVuc2lvbiBHTF9FWFRfc2hh
ZGVyX2ZyYW1lYnVmZmVyX2ZldGNoIDogPGJlaGF2aW9yPgotICAgIAotICAgIFdoZXJlIDxiZWhh
dmlvcj4gaXMgYXMgc3BlY2lmaWVkIGluIHNlY3Rpb24gMy40LiIKLQotSW50ZXJhY3Rpb25zIHdp
dGggT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzCi0KLSAgICBSZXN1bHRzIGZyb20gc2hhZGVycyB3
aGljaCB1c2UgdGhlIGJ1aWx0LWluIGRlcml2YXRpdmUgZnVuY3Rpb25zIGRGZHgsCi0gICAgZEZk
eSwgYW5kIGZ3aWR0aCBvbiB2YXJpYWJsZXMgY2FsY3VsYXRlZCB1c2luZyB0aGUgY3VycmVudCBm
cmFtZWJ1ZmZlciAKLSAgICBjb2xvciBhcmUgdW5kZWZpbmVkLgotCi1SZXZpc2lvbiBIaXN0b3J5
Ci0KLSAgICBWZXJzaW9uIDQsIDIwMTMvMDUvMjggLSBBZGRlZCBFUzMgaW50ZXJhY3Rpb24gYXMg
cmVxdWVzdGVkIGluIEJ1ZyAxMDIzNgotICAgIFZlcnNpb24gMywgMjAxMi8wOS8yNCAtIFJlbW92
ZSBvYnNvbGV0ZSBpc3N1ZSAzIGFib3V0IGRlcml2YXRpdmVzCi0gICAgVmVyc2lvbiAyLCAyMDEy
LzA2LzIxIC0gRml4IE1VTFRJU0FNUExFIGVuYWJsZWQgLT4gU0FNUExFX0JVRkZFUlMgPSAxLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2FzdCBmcm9tIEFQUExFIHRvIG11bHRpdmVu
ZG9yIEVYVCwgY2xhcmlmeSB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfTGFz
dEZyYWdEYXRhIHJlZmxlY3RzIHZhbHVlIHdyaXR0ZW4gYnkgcHJldmlvdXMKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwaXhlbCBhdCBzYW1lIGNvb3JkaW5hdGVzLgotICAgIFZlcnNpb24g
MSwgMjAxMi8wNi8wMSAtIENvbnZlcnNpb24gZnJvbSBBUkJfc3luYyB0byBBUFBMRV9zeW5jIGZv
ciBFUy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9leHRlbnNpb25zL0VYVF90ZXh0dXJlX3JnLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VYVF90ZXh0dXJlX3JnLnR4dAkocmV2aXNp
b24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FWFRfdGV4
dHVyZV9yZy50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwxOTUgKzAsMCBAQAotTmFtZQotCi0gICAg
RVhUX3RleHR1cmVfcmcKLQotTmFtZSBTdHJpbmdzCi0gICAgCi0gICAgR0xfRVhUX3RleHR1cmVf
cmcKLQotQ29udHJpYnV0b3JzCi0KLSAgICBDb250cmlidXRvcnMgdG8gQVJCX3RleHR1cmVfcmcs
IG9uIHdoaWNoIHRoaXMgZXh0ZW5zaW9uIGlzIGJhc2VkCi0gICAgS3lsZSBIYXVnaGV5Ci0gICAg
UmljaGFyZCBTY2hyZXllcgotCi1Db250YWN0Ci0KLSAgICBCZW5qIExpcGNoYWssIEFwcGxlIChs
aXBjaGFrICdhdCcgYXBwbGUuY29tKQotCi1TdGF0dXMgCi0gICAgCi0gICAgQ29tcGxldGUKLQot
VmVyc2lvbgotICAgIAotICAgIERhdGU6IEp1bHkgMjIsIDIwMTEKLSAgICBSZXZpc2lvbjogMwot
Ci1OdW1iZXIKLQotICAgIE9wZW5HTCBFUyBFeHRlbnNpb24gIzEwMwotCi1EZXBlbmRlbmNpZXMK
LQotICAgIFJlcXVpcmVzIE9wZW5HTCBFUyAyLjAuCi0KLSAgICBXcml0dGVuIGJhc2VkIG9uIHRo
ZSB3b3JkaW5nIG9mIHRoZSBPcGVuR0wgRVMgMi4wLjI1IEZ1bGwgU3BlY2lmaWNhdGlvbgotICAg
IChOb3ZlbWJlciAyLCAyMDEwKS4KLQotICAgIE9FU190ZXh0dXJlX2Zsb2F0IGFmZmVjdHMgdGhl
IGRlZmluaXRpb24gb2YgdGhpcyBleHRlbnNpb24uCi0KLSAgICBPRVNfdGV4dHVyZV9oYWxmX2Zs
b2F0IGFmZmVjdHMgdGhlIGRlZmluaXRpb24gb2YgdGhpcyBleHRlbnNpb24uCi0KLSAgICBBUFBM
RV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSBhZmZlY3RzIHRoZSBkZWZpbml0aW9uIG9mIHRoaXMg
ZXh0ZW5zaW9uLgotCi1PdmVydmlldwotCi0gICAgSGlzdG9yaWNhbGx5IG9uZS0gYW5kIHR3by1j
b21wb25lbnQgdGV4dHVyZXMgaGF2ZSBiZWVuIHNwZWNpZmllZCBpbiBPcGVuR0wKLSAgICBFUyB1
c2luZyB0aGUgbHVtaW5hbmNlIG9yIGx1bWluYW5jZS1hbHBoYSAoTC9MQSkgZm9ybWF0cy4gV2l0
aCB0aGUgYWR2ZW50Ci0gICAgb2YgcHJvZ3JhbW1hYmxlIHNoYWRlcnMgYW5kIHJlbmRlci10by10
ZXh0dXJlIGNhcGFiaWxpdGllcyB0aGVzZSBsZWdhY3kKLSAgICBmb3JtYXRzIGNhcnJ5IHNvbWUg
aGlzdG9yaWNhbCBhcnRpZmFjdHMgd2hpY2ggYXJlIG5vIGxvbmdlciB1c2VmdWwuCi0KLSAgICBG
b3IgZXhhbXBsZSwgd2hlbiBzYW1wbGluZyBmcm9tIHN1Y2ggdGV4dHVyZXMsIHRoZSBsdW1pbmFu
Y2UgdmFsdWVzIGFyZQotICAgIHJlcGxpY2F0ZWQgYWNyb3NzIHRoZSBjb2xvciBjb21wb25lbnRz
LiBUaGlzIGlzIG5vIGxvbmdlciBuZWNlc3Nhcnkgd2l0aAotICAgIHByb2dyYW1tYWJsZSBzaGFk
ZXJzLgotICAgIAotICAgIEl0IGlzIGFsc28gZGVzaXJhYmxlIHRvIGJlIGFibGUgdG8gcmVuZGVy
IHRvIG9uZS0gYW5kIHR3by1jb21wb25lbnQgZm9ybWF0Ci0gICAgdGV4dHVyZXMgdXNpbmcgY2Fw
YWJpbGl0aWVzIHN1Y2ggYXMgZnJhbWVidWZmZXIgb2JqZWN0cyAoRkJPKSwgYnV0Ci0gICAgcmVu
ZGVyaW5nIHRvIEwvTEEgZm9ybWF0cyBpcyB1bmRlci1zcGVjaWZpZWQgKHNwZWNpZmljYWxseSBo
b3cgdG8gbWFwCi0gICAgUi9HL0IvQSB2YWx1ZXMgdG8gTC9BIHRleHR1cmUgY2hhbm5lbHMpLgot
Ci0gICAgVGhpcyBleHRlbnNpb24gYWRkcyBuZXcgYmFzZSBpbnRlcm5hbCBmb3JtYXRzIGZvciBv
bmUtY29tcG9uZW50IFJFRCBhbmQKLSAgICB0d28tY29tcG9uZW50IFJHIChyZWQgZ3JlZW4pIHRl
eHR1cmVzIGFzIHdlbGwgYXMgc2l6ZWQgUkVEIGFuZCBSRyBpbnRlcm5hbAotICAgIGZvcm1hdHMg
Zm9yIHJlbmRlcmJ1ZmZlcnMuIFRoZSBSRUQgYW5kIFJHIHRleHR1cmUgZm9ybWF0cyBjYW4gYmUg
dXNlZCBmb3IKLSAgICBib3RoIHRleHR1cmluZyBhbmQgcmVuZGVyaW5nIGludG8gd2l0aCBmcmFt
ZWJ1ZmZlciBvYmplY3RzLgotCi1OZXcgUHJvY2VkdXJlcyBhbmQgRnVuY3Rpb25zCi0gICAgCi0g
ICAgTm9uZQotCi1OZXcgVG9rZW5zCi0KLSAgICBBY2NlcHRlZCBieSB0aGUgPGludGVybmFsZm9y
bWF0PiBwYXJhbWV0ZXIgb2YgVGV4SW1hZ2UyRCBhbmQgQ29weVRleEltYWdlMkQsCi0gICAgYW5k
IHRoZSA8Zm9ybWF0PiBwYXJhbWV0ZXIgb2YgVGV4SW1hZ2UyRCwgVGV4U3ViSW1hZ2UyRCwgYW5k
IFJlYWRQaXhlbHM6Ci0KLSAgICAgICAgUkVEX0VYVCAgICAgICAgICAgICAgICAgMHgxOTAzCi0g
ICAgICAgIFJHX0VYVCAgICAgICAgICAgICAgICAgIDB4ODIyNwotCi0gICAgQWNjZXB0ZWQgYnkg
dGhlIDxpbnRlcm5hbGZvcm1hdD4gcGFyYW1ldGVyIG9mIFJlbmRlcmJ1ZmZlclN0b3JhZ2UgYW5k
Ci0gICAgUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQVBQTEU6Ci0KLSAgICAgICAgUjhf
RVhUICAgICAgICAgICAgICAgICAgMHg4MjI5Ci0gICAgICAgIFJHOF9FWFQgICAgICAgICAgICAg
ICAgIDB4ODIyQgotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciAyIG9mIHRoZSBPcGVuR0wgRVMgMi4w
IFNwZWNpZmljYXRpb24gKE9wZW5HTCBFUyBPcGVyYXRpb24pCi0KLSAgICBOb25lCi0KLUFkZGl0
aW9ucyB0byBDaGFwdGVyIDMgb2YgdGhlIE9wZW5HTCBFUyAyLjAgU3BlY2lmaWNhdGlvbiAoUmFz
dGVyaXphdGlvbikKLQotICAgIChBZGQgdGhlIGZvbGxvd2luZyB0byBUYWJsZSAzLjM6ICJUZXhJ
bWFnZTJEIGFuZCBSZWFkUGl4ZWxzIGZvcm1hdHMiKQotCi0gICAgRm9ybWF0IE5hbWUgICAgIEVs
ZW1lbnQgTWVhbmluZyBhbmQgT3JkZXIgICAgICBUYXJnZXQgQnVmZmVyCi0gICAgLS0tLS0tLS0t
LS0gICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgICAtLS0tLS0tLS0tLS0tCi0gICAg
UkVEX0VYVCAgICAgICAgIFIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvcgotICAg
IFJHX0VYVCAgICAgICAgICBSLCBHICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3IKLQot
ICAgIChBZGQgdGhlIGZvbGxvd2luZyB0byBUYWJsZSAzLjQ6ICJWYWxpZCBwaXhlbCBmb3JtYXQg
YW5kIHR5cGUgY29tYmluYXRpb25zIikKLSAgICAoYXMgbW9kaWZpZWQgYnkgT0VTX3RleHR1cmVf
ZmxvYXQgYW5kIE9FU190ZXh0dXJlX2hhbGZfZmxvYXQpCi0KLSAgICBGb3JtYXQgICAgICAgICAg
VHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ5dGVzIHBlciBQaXhlbAotICAgIC0tLS0t
LS0tLS0tICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgICAgLS0tLS0tLS0tLS0tLS0t
Ci0gICAgUkVEX0VYVCAgICAgICAgIEZMT0FUICAgICAgICAgICAgICAgICAgICAgICAgICA0Ci0g
ICAgUkVEX0VYVCAgICAgICAgIEhBTEZfRkxPQVRfT0VTICAgICAgICAgICAgICAgICAyCi0gICAg
UkVEX0VYVCAgICAgICAgIFVOU0lHTkVEX0JZVEUgICAgICAgICAgICAgICAgICAxCi0gICAgUkdf
RVhUICAgICAgICAgIEZMT0FUICAgICAgICAgICAgICAgICAgICAgICAgICA4Ci0gICAgUkdfRVhU
ICAgICAgICAgIEhBTEZfRkxPQVRfT0VTICAgICAgICAgICAgICAgICA0Ci0gICAgUkdfRVhUICAg
ICAgICAgIFVOU0lHTkVEX0JZVEUgICAgICAgICAgICAgICAgICAyCi0KLSAgICAoQWRkIHRoZSBm
b2xsb3dpbmcgdG8gVGFibGUgMy44OiAiQ29udmVyc2lvbiBmcm9tIFJHQkEgYW5kIGRlcHRoIHBp
eGVsCi0gICAgY29tcG9uZW50cyB0byBpbnRlcm5hbCB0ZXh0dXJlIikKLQotICAgIEJhc2UgSW50
ZXJuYWwgRm9ybWF0ICAgICBSR0JBICAgICAgIEludGVybmFsIENvbXBvbmVudHMKLSAgICAtLS0t
LS0tLS0tLS0tLS0tLS0tLSAgICAgLS0tLS0tICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAg
UkVEX0VYVCAgICAgICAgICAgICAgICAgIFIgICAgICAgICAgUgotICAgIFJHX0VYVCAgICAgICAg
ICAgICAgICAgICBSLEcgICAgICAgIFIsRwotCi0gICAgKE1vZGlmeSBUYWJsZSAzLjk6ICJDb3B5
VGV4SW1hZ2UgaW50ZXJuYWwgZm9ybWF0L2NvbG9yIGJ1ZmZlciBjb21iaW5hdGlvbnMiKQotCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZSBGb3JtYXQKLSAgICBDb2xvciBCdWZm
ZXIgICAgICBBICBMICBMQSAgUiAgUkcgIFJHQiAgUkdCQQotICAgIC0tLS0tLS0tLS0tLSAgICAg
IC0gIC0gIC0tICAtICAtLSAgLS0tICAtLS0tCi0gICAgQSAgICAgICAgICAgICAgICAgWAotICAg
IFIgICAgICAgICAgICAgICAgICAgIFggICAgICBYCi0gICAgUkcgICAgICAgICAgICAgICAgICAg
WCAgICAgIFggIFgKLSAgICBSR0IgICAgICAgICAgICAgICAgICBYICAgICAgWCAgWCAgIFgKLSAg
ICBSR0JBICAgICAgICAgICAgICBYICBYICBYICAgWCAgWCAgIFggICAgWAotCi0gICAgKEFkZCB0
aGUgZm9sbG93aW5nIHRvIFRhYmxlIDMuMTI6ICJDb3JyZXNwb25kZW5jZSBvZiBmaWx0ZXJlZCB0
ZXh0dXJlCi0gICAgY29tcG9uZW50cyB0byB0ZXh0dXJlIHNvdXJjZSBjb2xvciBjb21wb25lbnRz
IikKLQotICAgIFRleHR1cmUgQmFzZSAgICAgICAgVGV4dHVyZSBzb3VyY2UgY29sb3IKLSAgICBJ
bnRlcm5hbCBGb3JtYXQgICAgIENfcyAgICAgICAgICAgICBBX3MKLSAgICAtLS0tLS0tLS0tLS0t
LS0gICAgIC0tLS0tLS0tLS0tLS0gICAtLS0tLS0KLSAgICBSRURfRVhUICAgICAgICAgICAgIChS
X3QsIDAsIDApICAgICAxCi0gICAgUkdfRVhUICAgICAgICAgICAgICAoUl90LCBHX3QsIDApICAg
MQotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciA0IG9mIHRoZSBPcGVuR0wgRVMgMi4wIFNwZWNpZmlj
YXRpb24gKFBlci1GcmFnbWVudAotT3BlcmF0aW9ucyBhbmQgdGhlIEZyYW1lYnVmZmVyKQotCi0g
ICAgSW4gc2VjdGlvbiA0LjMuMSAiUmVhZGluZyBQaXhlbHMiLCBzdWJzZWN0aW9uICJPYnRhaW5p
bmcgUGl4ZWxzIGZyb20gdGhlCi0gICAgRnJhbWVidWZmZXIiLCBtb2RpZnkgdGhlIGxhc3Qgc2Vu
dGVuY2UgdG8gcmVhZDoKLQotICAgICJJZiB0aGUgZnJhbWVidWZmZXIgZG9lcyBub3Qgc3VwcG9y
dCBHLCBCLCBvciBBIHZhbHVlcyB0aGVuIHRoZSBHLCBCLCBhbmQgQQotICAgIHZhbHVlcyB0aGF0
IGFyZSBvYnRhaW5lZCBhcmUgMC4wLCAwLjAsIGFuZCAxLjAgcmVzcGVjdGl2ZWx5LiIKLQotICAg
IEluIHNlY3Rpb24gNC40LjUgIkZyYW1lYnVmZmVyIENvbXBsZXRlbmVzcyIsIG1vZGlmeSB0aGUg
bGFzdCBzZW50ZW5jZSBvZgotICAgIHRoZSBzZWNvbmQgcGFyYWdyYXBoIHRvIHJlYWQ6Ci0KLSAg
ICAiQ29sb3ItcmVuZGVyYWJsZSBmb3JtYXRzIGNvbnRhaW4gcmVkLCBhbmQgcG9zc2libHkgZ3Jl
ZW4sIGJsdWUsIGFuZCBhbHBoYQotICAgIGNvbXBvbmVudHM7IGRlcHRoLXJlbmRlcmFibGUgZm9y
bWF0cyBjb250YWluIGRlcHRoIGNvbXBvbmVudHM7IGFuZAotICAgIHN0ZW5jaWwtcmVuZGVyYWJs
ZSBmb3JtYXRzIGNvbnRhaW4gc3RlbmNpbCBjb21wb25lbnRzLiIKLQotICAgIChBZGQgdGhlIGZv
bGxvd2luZyB0byBUYWJsZSA0LjU6ICJSZW5kZXJidWZmZXIgaW1hZ2UgZm9ybWF0cywgc2hvd2lu
ZyB0aGVpcgotICAgIHJlbmRlcmFibGUgdHlwZSAoY29sb3ItLCBkZXB0aC0sIG9yIHN0ZW5jaWwt
cmVuZGVyYWJsZSkgYW5kIHRoZSBudW1iZXIgb2YKLSAgICBiaXRzIGVhY2ggZm9ybWF0IGNvbnRh
aW5zIGZvciBjb2xvciAoUiwgRywgQiwgQSksIGRlcHRoIChEKSwgYW5kIHN0ZW5jaWwKLSAgICAo
UykgY29tcG9uZW50cyIpCi0KLSAgICBTaXplZCBJbnRlcm5hbCAgUmVuZGVyYWJsZSBUeXBlICAg
UiBiaXRzIEcgYml0cyBCIGJpdHMgQSBiaXRzIEQgYml0cyBTIGJpdHMKLSAgICBGb3JtYXQKLSAg
ICAtLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLSAgLS0tLS0tIC0tLS0tLSAtLS0tLS0g
LS0tLS0tIC0tLS0tLSAtLS0tLS0KLSAgICBSOF9FWFQgICAgICAgIGNvbG9yLXJlbmRlcmFibGUg
IDgKLSAgICBSRzhfRVhUICAgICAgIGNvbG9yLXJlbmRlcmFibGUgIDggICAgICA4Ci0KLUFkZGl0
aW9ucyB0byBDaGFwdGVyIDUgb2YgdGhlIE9wZW5HTCBFUyAyLjAgU3BlY2lmaWNhdGlvbiAoU3Bl
Y2lhbCBGdW5jdGlvbnMpCi0KLSAgICBOb25lCi0KLUFkZGl0aW9ucyB0byBDaGFwdGVyIDYgb2Yg
dGhlIE9wZW5HTCBFUyAyLjAgU3BlY2lmaWNhdGlvbiAoU3RhdGUgYW5kIFN0YXRlCi1SZXF1ZXN0
cykKLQotICAgIE5vbmUKLQotRGVwZW5kZW5jaWVzIG9uIE9FU190ZXh0dXJlX2Zsb2F0Ci0KLSAg
ICBJZiBPRVNfdGV4dHVyZV9mbG9hdCBpcyBub3Qgc3VwcG9ydGVkLCB0aGVuIG9taXQgdGhlIHJv
d3Mgb2YKLSAgICBUYWJsZSAzLjQgdGhhdCBoYXZlIFR5cGUgRkxPQVQuCi0KLURlcGVuZGVuY2ll
cyBvbiBPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Ci0KLSAgICBJZiBPRVNfdGV4dHVyZV9oYWxmX2Zs
b2F0IGlzIG5vdCBzdXBwb3J0ZWQsIHRoZW4gb21pdCB0aGUgcm93cyBvZiAKLSAgICBUYWJsZSAz
LjQgdGhhdCBoYXZlIFR5cGUgSEFMRl9GTE9BVF9PRVMuCi0KLURlcGVuZGVuY2llcyBvbiBBUFBM
RV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQotCi0gICAgSWYgQVBQTEVfZnJhbWVidWZmZXJfbXVs
dGlzYW1wbGUgaXMgbm90IHN1cHBvcnRlZCwgdGhlbiBhbGwgcmVmZXJlbmNlcyB0bwotICAgIFJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFQUExFIHNob3VsZCBiZSBpZ25vcmVkLgotCi1S
ZXZpc2lvbiBIaXN0b3J5Ci0gICAgCi0gICAgIzEgRmVicnVhcnkgMjIsIDIwMTEsIGtoYXVnaGV5
Ci0gICAgICAgIC0gaW5pdGlhbCB2ZXJzaW9uIGFkYXB0ZWQgZnJvbSBBUkJfdGV4dHVyZV9yZy4K
LSAgICAjMiBKdW5lIDE2LCAyMDExLCBiZW5qCi0gICAgICAgIC0gYWRkIGludGVyYWN0aW9uIHdp
dGggQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUKLSAgICAjMyBKdWx5IDIyLCAyMDExLCBi
ZW5qCi0gICAgICAgIC0gcmVuYW1lIGZyb20gQVBQTEUgdG8gRVhUCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VYVF90ZXh0dXJlX3N0b3JhZ2UudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRVhUX3RleHR1cmVfc3Rv
cmFnZS50eHQJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4
dGVuc2lvbnMvRVhUX3RleHR1cmVfc3RvcmFnZS50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMDkw
ICswLDAgQEAKLU5hbWUKLQotICAgIEVYVF90ZXh0dXJlX3N0b3JhZ2UKLQotTmFtZSBTdHJpbmdz
Ci0KLSAgICBHTF9FWFRfdGV4dHVyZV9zdG9yYWdlCi0KLUNvbnRhY3QKLQotICAgIEJydWNlIE1l
cnJ5IChibWVycnkgJ2F0JyBnbWFpbC5jb20pCi0gICAgSWFuIFJvbWFuaWNrLCBJbnRlbCAoaWFu
LmQucm9tYW5pY2sgJ2F0JyBpbnRlbC5jb20pCi0KLUNvbnRyaWJ1dG9ycwotCi0gICAgSmVyZW15
IFNhbmRtZWwsIEFwcGxlCi0gICAgQnJ1Y2UgTWVycnksIEFSTQotICAgIFRvbSBPbHNvbiwgQVJN
Ci0gICAgQmVuamkgQm93bWFuLCBJbWFnaW5hdGlvbiBUZWNobm9sb2dpZXMKLSAgICBJYW4gUm9t
YW5pY2ssIEludGVsCi0gICAgSmVmZiBCb2x6LCBOVklESUEKLSAgICBQYXQgQnJvd24sIE5WSURJ
QQotICAgIE1hdXJpY2UgUmliYmxlLCBRdWFsY29tbQotICAgIExpbmdqdW4gQ2hlbiwgUXVhbGNv
bW0KLSAgICBEYW5pZWwgS29jaCwgVHJhbnNnYW1pbmcgSW5jCi0KLVN0YXR1cwotCi0gICAgQ29t
cGxldGUuIAotCi1WZXJzaW9uCi0KLSAgICBMYXN0IE1vZGlmaWVkIERhdGU6IE5vdmVtYmVyIDEx
LCAyMDExCi0gICAgQXV0aG9yIFJldmlzaW9uOiAyNAotCi1OdW1iZXIKLQotICAgIE9wZW5HTCBF
UyBFeHRlbnNpb24gIzEwOAotCi1EZXBlbmRlbmNpZXMKLQotICAgIE9wZW5HTCBFUyAxLjAsIE9w
ZW5HTCBFUyAyLjAgb3IgT3BlbkdMIDEuMiBpcyByZXF1aXJlZC4KLQotICAgIE9FU190ZXh0dXJl
X25wb3QsIE9FU190ZXh0dXJlX2N1YmVfbWFwLCBPRVNfdGV4dHVyZV8zRCwKLSAgICBPRVNfZGVw
dGhfdGV4dHVyZSwgT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsLAotICAgIE9FU19jb21wcmVzc2Vk
X3BhbGV0dGVkX3RleHR1cmUsIE9FU190ZXh0dXJlX2Zsb2F0LCBPRVNfdGV4dHVyZV9oYWxmX2Zs
b2F0Ci0gICAgRVhUX3RleHR1cmVfdHlwZV8yXzEwXzEwXzEwX1JFViwgRVhUX3RleHR1cmVfZm9y
bWF0X0JHUkE4ODg4LAotICAgIEVYVF90ZXh0dXJlM0QsIE9FU190ZXh0dXJlX25wb3QsIEFQUExF
X3RleHR1cmVfMkRfbGltaXRlZF9ucG90LAotICAgIEFSQl90ZXh0dXJlX2N1YmVfbWFwLCBBUkJf
dGV4dHVyZV9jdWJlX21hcF9hcnJheSwKLSAgICBBUkJfdGV4dHVyZV9yZWN0YW5nbGUsIFNHSVNf
Z2VuZXJhdGVfbWlwbWFwLAotICAgIEVYVF9kaXJlY3Rfc3RhdGVfYWNjZXNzLCBPRVNfRUdMX2lt
YWdlLCBXR0xfQVJCX3JlbmRlcl90ZXh0dXJlLAotICAgIEdMWF9FWFRfdGV4dHVyZV9mcm9tX3Bp
eG1hcCwgYW5kIGNvcmUgc3BlY2lmaWNhdGlvbnMgdGhhdAotICAgIGluY29ycG9yYXRlIHRoZXNl
IGV4dGVuc2lvbnMgYWZmZWN0IHRoZSBkZWZpbml0aW9uIG9mIHRoaXMKLSAgICBleHRlbnNpb24u
Ci0KLSAgICBUaGlzIGV4dGVuc2lvbiBpcyB3cml0dGVuIGFnYWluc3QgdGhlIE9wZW5HTCAzLjIg
Q29yZSBQcm9maWxlCi0gICAgc3BlY2lmaWNhdGlvbi4KLQotT3ZlcnZpZXcKLQotICAgIFRoZSB0
ZXh0dXJlIGltYWdlIHNwZWNpZmljYXRpb24gY29tbWFuZHMgaW4gT3BlbkdMIGFsbG93IGVhY2gg
bGV2ZWwKLSAgICB0byBiZSBzZXBhcmF0ZWx5IHNwZWNpZmllZCB3aXRoIGRpZmZlcmVudCBzaXpl
cywgZm9ybWF0cywgdHlwZXMgYW5kCi0gICAgc28gb24sIGFuZCBvbmx5IGltcG9zZXMgY29uc2lz
dGVuY3kgY2hlY2tzIGF0IGRyYXcgdGltZS4gVGhpcyBhZGRzCi0gICAgb3ZlcmhlYWQgZm9yIGlt
cGxlbWVudGF0aW9ucy4KLQotICAgIFRoaXMgZXh0ZW5zaW9uIHByb3ZpZGVzIGEgbWVjaGFuaXNt
IGZvciBzcGVjaWZ5aW5nIHRoZSBlbnRpcmUKLSAgICBzdHJ1Y3R1cmUgb2YgYSB0ZXh0dXJlIGlu
IGEgc2luZ2xlIGNhbGwsIGFsbG93aW5nIGNlcnRhaW4KLSAgICBjb25zaXN0ZW5jeSBjaGVja3Mg
YW5kIG1lbW9yeSBhbGxvY2F0aW9ucyB0byBiZSBkb25lIHVwIGZyb250LiBPbmNlCi0gICAgc3Bl
Y2lmaWVkLCB0aGUgZm9ybWF0IGFuZCBkaW1lbnNpb25zIG9mIHRoZSBpbWFnZSBhcnJheSBiZWNv
bWUKLSAgICBpbW11dGFibGUsIHRvIHNpbXBsaWZ5IGNvbXBsZXRlbmVzcyBjaGVja3MgaW4gdGhl
IGltcGxlbWVudGF0aW9uLgotCi0gICAgV2hlbiB1c2luZyB0aGlzIGV4dGVuc2lvbiwgaXQgaXMg
bm8gbG9uZ2VyIHBvc3NpYmxlIHRvIHN1cHBseSB0ZXh0dXJlCi0gICAgZGF0YSB1c2luZyBUZXhJ
bWFnZSouIEluc3RlYWQsIGRhdGEgY2FuIGJlIHVwbG9hZGVkIHVzaW5nIFRleFN1YkltYWdlKiwK
LSAgICBvciBwcm9kdWNlZCBieSBvdGhlciBtZWFucyAoc3VjaCBhcyByZW5kZXItdG8tdGV4dHVy
ZSwgbWlwbWFwIGdlbmVyYXRpb24sCi0gICAgb3IgcmVuZGVyaW5nIHRvIGEgc2libGluZyBFR0xJ
bWFnZSkuCi0KLSAgICBUaGlzIGV4dGVuc2lvbiBoYXMgY29tcGxpY2F0ZWQgaW50ZXJhY3Rpb25z
IHdpdGggb3RoZXIgZXh0ZW5zaW9ucy4KLSAgICBUaGUgZ29hbCBvZiBtb3N0IG9mIHRoZXNlIGlu
dGVyYWN0aW9ucyBpcyB0byBlbnN1cmUgdGhhdCBhIHRleHR1cmUKLSAgICBpcyBhbHdheXMgbWlw
bWFwIGNvbXBsZXRlIChhbmQgY3ViZSBjb21wbGV0ZSBmb3IgY3ViZW1hcCB0ZXh0dXJlcykuCi0K
LUlQIFN0YXR1cwotCi0gICAgTm8ga25vd24gSVAgY2xhaW1zCi0KLU5ldyBQcm9jZWR1cmVzIGFu
ZCBGdW5jdGlvbnMKLQotICAgIHZvaWQgVGV4U3RvcmFnZTFERVhUKGVudW0gdGFyZ2V0LCBzaXpl
aSBsZXZlbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBpbnRlcm5hbGZvcm1hdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICBzaXplaSB3aWR0aCk7Ci0KLSAgICB2b2lkIFRleFN0
b3JhZ2UyREVYVChlbnVtIHRhcmdldCwgc2l6ZWkgbGV2ZWxzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIGVudW0gaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZWkgd2lkdGgsIHNpemVpIGhlaWdodCk7Ci0KLSAgICB2b2lkIFRleFN0b3JhZ2UzREVYVChlbnVt
IHRhcmdldCwgc2l6ZWkgbGV2ZWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gaW50
ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZWkgd2lkdGgsIHNpemVp
IGhlaWdodCwgc2l6ZWkgZGVwdGgpOwotCi0gICAgdm9pZCBUZXh0dXJlU3RvcmFnZTFERVhUKHVp
bnQgdGV4dHVyZSwgZW51bSB0YXJnZXQsIHNpemVpIGxldmVscywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICBlbnVtIGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVpIHdpZHRoKTsKLQotICAgIHZvaWQgVGV4dHVyZVN0b3JhZ2UyREVYVCh1aW50IHRleHR1cmUs
IGVudW0gdGFyZ2V0LCBzaXplaSBsZXZlbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgZW51
bSBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzaXplaSB3aWR0aCwg
c2l6ZWkgaGVpZ2h0KTsKLQotICAgIHZvaWQgVGV4dHVyZVN0b3JhZ2UzREVYVCh1aW50IHRleHR1
cmUsIGVudW0gdGFyZ2V0LCBzaXplaSBsZXZlbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ZW51bSBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzaXplaSB3aWR0
aCwgc2l6ZWkgaGVpZ2h0LCBzaXplaSBkZXB0aCk7Ci0KLU5ldyBUeXBlcwotCi0gICAgTm9uZQot
Ci1OZXcgVG9rZW5zCi0KLSAgICBBY2NlcHRlZCBieSB0aGUgPHZhbHVlPiBwYXJhbWV0ZXIgb2Yg
R2V0VGV4UGFyYW1ldGVye2lmfXY6Ci0KLSAgICAgICAgVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFU
X0VYVCAgIDB4OTEyRgotCi0gICAgQWNjZXB0ZWQgYnkgdGhlIDxpbnRlcm5hbGZvcm1hdD4gcGFy
YW1ldGVyIG9mIFRleFN0b3JhZ2UqIHdoZW4KLSAgICBpbXBsZW1lbnRlZCBvbiBPcGVuR0wgRVM6
Ci0KLSAgICAgICAgQUxQSEE4X0VYVCAgICAgICAgICAgICAgICAgICAgIDB4ODAzQyAgLyogcmV1
c2UgdG9rZW5zIGZyb20gRVhUX3RleHR1cmUgKi8KLSAgICAgICAgTFVNSU5BTkNFOF9FWFQgICAg
ICAgICAgICAgICAgIDB4ODA0MAotICAgICAgICBMVU1JTkFOQ0U4X0FMUEhBOF9FWFQgICAgICAg
ICAgMHg4MDQ1Ci0KLSAgICAgIChpZiBPRVNfdGV4dHVyZV9mbG9hdCBpcyBzdXBwb3J0ZWQpCi0g
ICAgICAgIFJHQkEzMkZfRVhUICAgICAgICAgICAgICAgICAgICAweDg4MTQgIC8qIHJldXNlIHRv
a2VucyBmcm9tIEFSQl90ZXh0dXJlX2Zsb2F0ICovCi0gICAgICAgIFJHQjMyRl9FWFQgICAgICAg
ICAgICAgICAgICAgICAweDg4MTUKLSAgICAgICAgQUxQSEEzMkZfRVhUICAgICAgICAgICAgICAg
ICAgIDB4ODgxNgotICAgICAgICBMVU1JTkFOQ0UzMkZfRVhUICAgICAgICAgICAgICAgMHg4ODE4
Ci0gICAgICAgIExVTUlOQU5DRV9BTFBIQTMyRl9FWFQgICAgICAgICAweDg4MTkKLQotICAgICAg
KGlmIE9FU190ZXh0dXJlX2hhbGZfZmxvYXQgaXMgc3VwcG9ydGVkKQotICAgICAgICBSR0JBMTZG
X0VYVCAgICAgICAgICAgICAgICAgICAgMHg4ODFBICAvKiByZXVzZSB0b2tlbnMgZnJvbSBBUkJf
dGV4dHVyZV9mbG9hdCAqLwotICAgICAgICBSR0IxNkZfRVhUICAgICAgICAgICAgICAgICAgICAg
MHg4ODFCCi0gICAgICAgIEFMUEhBMTZGX0VYVCAgICAgICAgICAgICAgICAgICAweDg4MUMKLSAg
ICAgICAgTFVNSU5BTkNFMTZGX0VYVCAgICAgICAgICAgICAgIDB4ODgxRQotICAgICAgICBMVU1J
TkFOQ0VfQUxQSEExNkZfRVhUICAgICAgICAgMHg4ODFGCi0KLSAgICAgIChpZiBFWFRfdGV4dHVy
ZV90eXBlXzJfMTBfMTBfMTBfUkVWIGlzIHN1cHBvcnRlZCkKLSAgICAgICAgUkdCMTBfQTJfRVhU
ICAgICAgICAgICAgICAgICAgIDB4ODA1OSAgLyogcmV1c2UgdG9rZW5zIGZyb20gRVhUX3RleHR1
cmUgKi8KLSAgICAgICAgUkdCMTBfRVhUICAgICAgICAgICAgICAgICAgICAgIDB4ODA1MgotCi0g
ICAgICAoaWYgRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4IGlzIHN1cHBvcnRlZCkKLSAgICAg
ICAgQkdSQThfRVhUICAgICAgICAgICAgICAgICAgICAgIDB4OTNBMQotCi0KLUFkZGl0aW9ucyB0
byBDaGFwdGVyIDIgb2YgdGhlIE9wZW5HTCAzLjIgQ29yZSBQcm9maWxlIFNwZWNpZmljYXRpb24K
LShPcGVuR0wgT3BlcmF0aW9uKQotCi0gICAgTm9uZQotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciAz
IG9mIHRoZSBPcGVuR0wgMy4yIENvcmUgUHJvZmlsZSBTcGVjaWZpY2F0aW9uCi0oUmFzdGVyaXph
dGlvbikKLQotICAgIEFmdGVyIHNlY3Rpb24gMy44LjEgKFRleHR1cmUgSW1hZ2UgU3BlY2lmaWNh
dGlvbikgYWRkIGEgbmV3Ci0gICAgc3Vic2VjdGlvbiBjYWxsZWQgIkltbXV0YWJsZS1mb3JtYXQg
dGV4dHVyZSBpbWFnZXMiOgotCi0gICAgIkFuIGFsdGVyYXRpdmUgc2V0IG9mIGNvbW1hbmRzIGlz
IHByb3ZpZGVkIGZvciBzcGVjaWZ5aW5nIHRoZQotICAgIHByb3BlcnRpZXMgb2YgYWxsIGxldmVs
cyBvZiBhIHRleHR1cmUgYXQgb25jZS4gT25jZSBhIHRleHR1cmUgaXMKLSAgICBzcGVjaWZpZWQg
d2l0aCBzdWNoIGEgY29tbWFuZCwgdGhlIGZvcm1hdCBhbmQgZGltZW5zaW9ucyBvZiBhbGwKLSAg
ICBsZXZlbHMgYmVjb21lcyBpbW11dGFibGUsIHVubGVzcyBpdCBpcyBhIHByb3h5IHRleHR1cmUg
KHNpbmNlCi0gICAgb3RoZXJ3aXNlIGl0IHdvdWxkIG5vIGxvbmdlciBiZSBwb3NzaWJsZSB0byB1
c2UgdGhlIHByb3h5KS4gVGhlCi0gICAgY29udGVudHMgb2YgdGhlIGltYWdlcyBhbmQgdGhlIHBh
cmFtZXRlcnMgY2FuIHN0aWxsIGJlIG1vZGlmaWVkLgotICAgIFN1Y2ggYSB0ZXh0dXJlIGlzIHJl
ZmVycmVkIHRvIGFzIGFuICJpbW11dGFibGUtZm9ybWF0IiB0ZXh0dXJlLiBUaGUKLSAgICBpbW11
dGFiaWxpdHkgc3RhdHVzIG9mIGEgdGV4dHVyZSBjYW4gYmUgZGV0ZXJtaW5lZCBieSBjYWxsaW5n
Ci0gICAgR2V0VGV4UGFyYW1ldGVyIHdpdGggPHBuYW1lPiBURVhUVVJFX0lNTVVUQUJMRV9GT1JN
QVRfRVhULgotCi0gICAgRWFjaCBvZiB0aGUgY29tbWFuZHMgYmVsb3cgaXMgZGVzY3JpYmVkIGJ5
IHBzZXVkby1jb2RlIHdoaWNoCi0gICAgaW5kaWNhdGVzIHRoZSBlZmZlY3Qgb24gdGhlIGRpbWVu
c2lvbnMgYW5kIGZvcm1hdCBvZiB0aGUgdGV4dHVyZS4KLSAgICBGb3IgYWxsIG9mIHRoZSBjb21t
YW5kcywgdGhlIGZvbGxvd2luZyBhcHBseSBpbiBhZGRpdGlvbiB0byB0aGUKLSAgICBwc2V1ZG8t
Y29kZToKLQotICAgIC0gSWYgdGhlIGRlZmF1bHQgdGV4dHVyZSBvYmplY3QgaXMgYm91bmQgdG8g
PHRhcmdldD4sIGFuCi0gICAgICBJTlZBTElEX09QRVJBVElPTiBlcnJvciBpcyBnZW5lcmF0ZWQu
Ci0gICAgLSBJZiBleGVjdXRpbmcgdGhlIHBzZXVkby1jb2RlIHdvdWxkIGxlYWQgdG8gYW4gZXJy
b3IsIHRoZSBlcnJvciBpcwotICAgICAgZ2VuZXJhdGVkIGFuZCB0aGUgY29tbWFuZCB3aWxsIGhh
dmUgbm8gZWZmZWN0LgotICAgIC0gQW55IGV4aXN0aW5nIGxldmVscyB0aGF0IGFyZSBub3QgcmVw
bGFjZWQgYXJlIHJlc2V0IHRvIHRoZWlyCi0gICAgICBpbml0aWFsIHN0YXRlLgotICAgIC0gSWYg
PHdpZHRoPiwgPGhlaWdodD4sIDxkZXB0aD4gb3IgPGxldmVscz4gaXMgbGVzcyB0aGFuIDEsIHRo
ZQotICAgICAgZXJyb3IgSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQuCi0gICAgLSBTaW5jZSBu
byBwaXhlbCBkYXRhIGFyZSBwcm92aWRlZCwgdGhlIDxmb3JtYXQ+IGFuZCA8dHlwZT4gdmFsdWVz
Ci0gICAgICB1c2VkIGluIHRoZSBwc2V1ZG8tY29kZSBhcmUgaXJyZWxldmFudDsgdGhleSBjYW4g
YmUgY29uc2lkZXJlZCB0bwotICAgICAgYmUgYW55IHZhbHVlcyB0aGF0IGFyZSBsZWdhbCB0byB1
c2Ugd2l0aCA8aW50ZXJuYWxmb3JtYXQ+LgotICAgIC0gSWYgdGhlIGNvbW1hbmQgaXMgc3VjY2Vz
c2Z1bCwgVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUX0VYVCBiZWNvbWVzCi0gICAgICBUUlVFLgot
ICAgIC0gSWYgPGludGVybmFsZm9ybWF0PiBpcyBhIHNwZWNpZmljIGNvbXByZXNzZWQgdGV4dHVy
ZSBmb3JtYXQsIHRoZW4KLSAgICAgIHJlZmVyZW5jZXMgdG8gVGV4SW1hZ2UqIHNob3VsZCBiZSBy
ZXBsYWNlZCBieSBDb21wcmVzc2VkVGV4SW1hZ2UqLAotICAgICAgd2l0aCA8Zm9ybWF0PiwgPHR5
cGU+IGFuZCA8ZGF0YT4gcmVwbGFjZWQgYnkgYW55IHZhbGlkIDxpbWFnZVNpemU+IGFuZAotICAg
ICAgPGRhdGE+LiBJZiB0aGVyZSBpcyBubyA8aW1hZ2VTaXplPiBmb3Igd2hpY2ggdGhpcyBjb21t
YW5kIHdvdWxkIGhhdmUKLSAgICAgIGJlZW4gdmFsaWQsIGFuIElOVkFMSURfT1BFUkFUSU9OIGVy
cm9yIGlzIGdlbmVyYXRlZCBbZm46IFRoaXMKLSAgICAgIGNvbmRpdGlvbiBpcyBub3QgcmVxdWly
ZWQgZm9yIE9wZW5HTCwgYnV0IGlzIG5lY2Vzc2FyeSBmb3IgT3BlbkdMCi0gICAgICBFUyB3aGlj
aCBkb2VzIG5vdCBzdXBwb3J0IG9uLXRoZS1mbHkgY29tcHJlc3Npb24uXQotICAgIC0gSWYgPGlu
dGVybmFsZm9ybWF0PiBpcyBvbmUgb2YgdGhlIGludGVybmFsIGZvcm1hdHMgbGlzdGVkIGluIHRh
YmxlCi0gICAgICAzLjExLCBhbiBJTlZBTElEX0VOVU0gZXJyb3IgaXMgZ2VuZXJhdGVkLiBbZm46
IFRoZSBjb3JyZXNwb25kaW5nIHRhYmxlCi0gICAgICBpbiBPcGVuR0wgRVMgMi4wIGlzIHRhYmxl
IDMuOC5dCi0KLSAgICBUaGUgY29tbWFuZAotCi0gICAgICAgIHZvaWQgVGV4U3RvcmFnZTFERVhU
KGVudW0gdGFyZ2V0LCBzaXplaSBsZXZlbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVudW0gaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVp
IHdpZHRoKTsKLQotICAgIHNwZWNpZmllcyBhbGwgdGhlIGxldmVscyBvZiBhIG9uZS1kaW1lbnNp
b25hbCB0ZXh0dXJlIChvciBwcm94eSkgYXQKLSAgICB0aGUgc2FtZSB0aW1lLiBJdCBpcyBkZXNj
cmliZWQgYnkgdGhlIHBzZXVkby1jb2RlIGJlbG93OgotCi0gICAgICAgIGZvciAoaSA9IDA7IGkg
PCBsZXZlbHM7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgVGV4SW1hZ2UxRCh0YXJnZXQs
IGksIGludGVybmFsZm9ybWF0LCB3aWR0aCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgZm9y
bWF0LCB0eXBlLCBOVUxMKTsKLSAgICAgICAgICAgIHdpZHRoID0gbWF4KDEsIGZsb29yKHdpZHRo
IC8gMikpOwotICAgICAgICB9Ci0KLSAgICBJZiA8dGFyZ2V0PiBpcyBub3QgVEVYVFVSRV8xRCBv
ciBQUk9YWV9URVhUVVJFXzFEIHRoZW4gSU5WQUxJRF9FTlVNCi0gICAgaXMgZ2VuZXJhdGVkLiBJ
ZiA8bGV2ZWxzPiBpcyBncmVhdGVyIHRoYW4gZmxvb3IobG9nXzIod2lkdGgpKSArIDEKLSAgICB0
aGVuIElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZC4KLQotICAgIFRoZSBjb21tYW5kCi0K
LSAgICAgICAgdm9pZCBUZXhTdG9yYWdlMkRFWFQoZW51bSB0YXJnZXQsIHNpemVpIGxldmVscywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBpbnRlcm5hbGZvcm1hdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZWkgd2lkdGgsIHNpemVpIGhlaWdodCk7Ci0KLSAg
ICBzcGVjaWZpZXMgYWxsIHRoZSBsZXZlbHMgb2YgYSB0d28tZGltZW5zaW9uYWwsIGN1YmUtbWFw
LAotICAgIG9uZS1kaW1lbnNpb24gYXJyYXkgb3IgcmVjdGFuZ2xlIHRleHR1cmUgKG9yIHByb3h5
KSBhdCB0aGUgc2FtZQotICAgIHRpbWUuIFRoZSBwc2V1ZG8tY29kZSBkZXBlbmRzIG9uIHRoZSA8
dGFyZ2V0PjoKLQotICAgIFtQUk9YWV9dVEVYVFVSRV8yRCwgW1BST1hZX11URVhUVVJFX1JFQ1RB
TkdMRSBvcgotICAgIFBST1hZX1RFWFRVUkVfQ1VCRV9NQVA6Ci0KLSAgICAgICAgZm9yIChpID0g
MDsgaSA8IGxldmVsczsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBUZXhJbWFnZTJEKHRh
cmdldCwgaSwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsCi0gICAgICAgICAgICAg
ICAgICAgICAgIGZvcm1hdCwgdHlwZSwgTlVMTCk7Ci0gICAgICAgICAgICB3aWR0aCA9IG1heCgx
LCBmbG9vcih3aWR0aCAvIDIpKTsKLSAgICAgICAgICAgIGhlaWdodCA9IG1heCgxLCBmbG9vciho
ZWlnaHQgLyAyKSk7Ci0gICAgICAgIH0KLQotICAgIFRFWFRVUkVfQ1VCRV9NQVA6Ci0KLSAgICAg
ICAgZm9yIChpID0gMDsgaSA8IGxldmVsczsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBm
b3IgZmFjZSBpbiAoK1gsIC1YLCArWSwgLVksICtaLCAtWikKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBUZXhJbWFnZTJEKGZhY2UsIGksIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBOVUxMKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHdpZHRoID0gbWF4KDEsIGZsb29yKHdpZHRoIC8g
MikpOwotICAgICAgICAgICAgaGVpZ2h0ID0gbWF4KDEsIGZsb29yKGhlaWdodCAvIDIpKTsKLSAg
ICAgICAgfQotCi0gICAgW1BST1hZX11URVhUVVJFXzFEX0FSUkFZOgotCi0gICAgICAgIGZvciAo
aSA9IDA7IGkgPCBsZXZlbHM7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgVGV4SW1hZ2Uy
RCh0YXJnZXQsIGksIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLAotICAgICAgICAg
ICAgICAgICAgICAgICBmb3JtYXQsIHR5cGUsIE5VTEwpOwotICAgICAgICAgICAgd2lkdGggPSBt
YXgoMSwgZmxvb3Iod2lkdGggLyAyKSk7Ci0gICAgICAgIH0KLQotICAgIElmIDx0YXJnZXQ+IGlz
IG5vdCBvbmUgb2YgdGhvc2UgbGlzdGVkIGFib3ZlLCB0aGUgZXJyb3IgSU5WQUxJRF9FTlVNCi0g
ICAgaXMgZ2VuZXJhdGVkLgotCi0gICAgVGhlIGVycm9yIElOVkFMSURfT1BFUkFUSU9OIGlzIGdl
bmVyYXRlZCBpZiBhbnkgb2YgdGhlIGZvbGxvd2luZwotICAgIGNvbmRpdGlvbnMgaG9sZDoKLSAg
ICAtIDx0YXJnZXQ+IGlzIFtQUk9YWV9dVEVYVFVSRV8xRF9BUlJBWSBhbmQgPGxldmVscz4gaXMg
Z3JlYXRlciB0aGFuCi0gICAgICBmbG9vcihsb2dfMih3aWR0aCkpICsgMQotICAgIC0gPHRhcmdl
dD4gaXMgbm90IFtQUk9YWV9dVEVYVFVSRV8xRF9BUlJBWSBhbmQgPGxldmVscz4gaXMgZ3JlYXRl
cgotICAgIHRoYW4gZmxvb3IobG9nXzIobWF4KHdpZHRoLCBoZWlnaHQpKSkgKyAxCi0KLSAgICBU
aGUgY29tbWFuZAotCi0gICAgICAgIHZvaWQgVGV4U3RvcmFnZTNERVhUKGVudW0gdGFyZ2V0LCBz
aXplaSBsZXZlbHMsIGVudW0gaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVpIHdpZHRoLCBzaXplaSBoZWlnaHQsIHNpemVpIGRlcHRoKTsKLQotICAgIHNw
ZWNpZmllcyBhbGwgdGhlIGxldmVscyBvZiBhIHRocmVlLWRpbWVuc2lvbmFsLCB0d28tZGltZW5z
aW9uYWwKLSAgICBhcnJheSB0ZXh0dXJlLCBvciBjdWJlLW1hcCBhcnJheSB0ZXh0dXJlIChvciBw
cm94eSkuIFRoZSBwc2V1ZG8tY29kZQotICAgIGRlcGVuZHMgb24gPHRhcmdldD46Ci0KLSAgICBb
UFJPWFlfXVRFWFRVUkVfM0Q6Ci0KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGxldmVsczsgaSsr
KQotICAgICAgICB7Ci0gICAgICAgICAgICBUZXhJbWFnZTNEKHRhcmdldCwgaSwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCAwLAotICAgICAgICAgICAgICAgICAgICAgICBm
b3JtYXQsIHR5cGUsIE5VTEwpOwotICAgICAgICAgICAgd2lkdGggPSBtYXgoMSwgZmxvb3Iod2lk
dGggLyAyKSk7Ci0gICAgICAgICAgICBoZWlnaHQgPSBtYXgoMSwgZmxvb3IoaGVpZ2h0IC8gMikp
OwotICAgICAgICAgICAgZGVwdGggPSBtYXgoMSwgZmxvb3IoZGVwdGggLyAyKSk7Ci0gICAgICAg
IH0KLQotICAgIFtQUk9YWV9dVEVYVFVSRV8yRF9BUlJBWSwgW1BST1hZX11URVhUVVJFX0NVQkVf
TUFQX0FSUkFZX0FSQjoKLQotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGV2ZWxzOyBpKyspCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIFRleEltYWdlM0QodGFyZ2V0LCBpLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgIGZvcm1h
dCwgdHlwZSwgTlVMTCk7Ci0gICAgICAgICAgICB3aWR0aCA9IG1heCgxLCBmbG9vcih3aWR0aCAv
IDIpKTsKLSAgICAgICAgICAgIGhlaWdodCA9IG1heCgxLCBmbG9vcihoZWlnaHQgLyAyKSk7Ci0g
ICAgICAgIH0KLQotICAgIElmIDx0YXJnZXQ+IGlzIG5vdCBvbmUgb2YgdGhvc2UgbGlzdGVkIGFi
b3ZlLCB0aGUgZXJyb3IgSU5WQUxJRF9FTlVNCi0gICAgaXMgZ2VuZXJhdGVkLgotCi0gICAgVGhl
IGVycm9yIElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBpZiBhbnkgb2YgdGhlIGZvbGxv
d2luZwotICAgIGNvbmRpdGlvbnMgaG9sZDoKLSAgICAtIDx0YXJnZXQ+IGlzIFtQUk9YWV9dVEVY
VFVSRV8zRCBhbmQgPGxldmVscz4gaXMgZ3JlYXRlciB0aGFuCi0gICAgICBmbG9vcihsb2dfMiht
YXgod2lkdGgsIGhlaWdodCwgZGVwdGgpKSkgKyAxCi0gICAgLSA8dGFyZ2V0PiBpcyBbUFJPWFlf
XVRFWFRVUkVfMkRfQVJSQVkgb3IKLSAgICAgIFtQUk9YWV9dVEVYVFVSRV9DVUJFX01BUF9BUlJB
WV9FWFQgYW5kIDxsZXZlbHM+IGlzIGdyZWF0ZXIgdGhhbgotICAgICAgZmxvb3IobG9nXzIobWF4
KHdpZHRoLCBoZWlnaHQpKSkgKyAxCi0KLSAgICBBZnRlciBhIHN1Y2Nlc3NmdWwgY2FsbCB0byBh
bnkgVGV4U3RvcmFnZSogY29tbWFuZCB3aXRoIGEgbm9uLXByb3h5Ci0gICAgdGFyZ2V0LCB0aGUg
dmFsdWUgb2YgVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUX0VYVCBmb3IgdGhpcyB0ZXh0dXJlCi0g
ICAgb2JqZWN0IGlzIHNldCB0byBUUlVFLCBhbmQgbm8gZnVydGhlciBjaGFuZ2VzIHRvIHRoZSBk
aW1lbnNpb25zIG9yCi0gICAgZm9ybWF0IG9mIHRoZSB0ZXh0dXJlIG9iamVjdCBtYXkgYmUgbWFk
ZS4gT3RoZXIgY29tbWFuZHMgbWF5IG9ubHkKLSAgICBhbHRlciB0aGUgdGV4ZWwgdmFsdWVzIGFu
ZCB0ZXh0dXJlIHBhcmFtZXRlcnMuIFVzaW5nIGFueSBvZiB0aGUKLSAgICBmb2xsb3dpbmcgY29t
bWFuZHMgd2l0aCB0aGUgc2FtZSB0ZXh0dXJlIHdpbGwgcmVzdWx0IGluIHRoZSBlcnJvcgotICAg
IElOVkFMSURfT1BFUkFUSU9OIGJlaW5nIGdlbmVyYXRlZCwgZXZlbiBpZiBpdCBkb2VzIG5vdCBh
ZmZlY3QgdGhlCi0gICAgZGltZW5zaW9ucyBvciBmb3JtYXQ6Ci0KLSAgICAgICAgLSBUZXhJbWFn
ZSoKLSAgICAgICAgLSBDb21wcmVzc2VkVGV4SW1hZ2UqCi0gICAgICAgIC0gQ29weVRleEltYWdl
KgotICAgICAgICAtIFRleFN0b3JhZ2UqCi0KLSAgICBUaGUgVGV4dHVyZVN0b3JhZ2UqIGNvbW1h
bmRzIG9wZXJhdGUgaWRlbnRpY2FsbHkgdG8gdGhlCi0gICAgY29ycmVzcG9uZGluZyBjb21tYW5k
IHdoZXJlICJUZXh0dXJlIiBpcyBzdWJzdGl0dXRlZCBmb3IgIlRleCIKLSAgICBleGNlcHQsIHJh
dGhlciB0aGFuIHVwZGF0aW5nIHRoZSBjdXJyZW50IGJvdW5kIHRleHR1cmUgZm9yIHRoZQotICAg
IHRleHR1cmUgdW5pdCBpbmRpY2F0ZWQgYnkgdGhlIGN1cnJlbnQgYWN0aXZlIHRleHR1cmUgc3Rh
dGUgYW5kIHRoZQotICAgIHRhcmdldCBwYXJhbWV0ZXIsIHRoZXNlICJUZXh0dXJlIiBjb21tYW5k
cyB1cGRhdGUgdGhlIHRleHR1cmUgb2JqZWN0Ci0gICAgbmFtZWQgYnkgdGhlIGluaXRpYWwgdGV4
dHVyZSBwYXJhbWV0ZXIuIFRoZSBlcnJvciBJTlZBTElEX1ZBTFVFCi0gICAgaXMgZ2VuZXJhdGVk
IGlmIDx0ZXh0dXJlPiBpcyB6ZXJvLgotICAgICIKLQotICAgIEluIHNlY3Rpb24gMy44LjYgKFRl
eHR1cmUgUGFyYW1ldGVycyksIGFmdGVyIHRoZSBzZW50ZW5jZQotCi0gICAgIkluIHRoZSByZW1h
aW5kZXIgb2Ygc2VjdGlvbiAzLjgsIGRlbm90ZSBieSBsb2RfbWluLCBsb2RfbWF4LAotICAgIGxl
dmVsX2Jhc2UsIGFuZCBsZXZlbF9tYXggdGhlIHZhbHVlcyBvZiB0aGUgdGV4dHVyZSBwYXJhbWV0
ZXJzCi0gICAgVEVYVFVSRV9NSU5fTE9ELCBURVhUVVJFX01BWF9MT0QsIFRFWFRVUkVfQkFTRV9M
RVZFTCwgYW5kCi0gICAgVEVYVFVSRV9NQVhfTEVWRUwgcmVzcGVjdGl2ZWx5LiIKLQotICAgIGFk
ZAotCi0gICAgIkhvd2V2ZXIsIGlmIFRFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVF9FWFQgaXMKLSAg
ICBUUlVFLCB0aGVuIGxldmVsX2Jhc2UgaXMgY2xhbXBlZCB0byB0aGUgcmFuZ2UgWzAsIDxsZXZl
bHM+IC0gMV0gYW5kCi0gICAgbGV2ZWxfbWF4IGlzIHRoZW4gY2xhbXBlZCB0byB0aGUgcmFuZ2Ug
W2xldmVsX2Jhc2UsIDxsZXZlbHM+IC0gMV0sCi0gICAgd2hlcmUgPGxldmVscz4gaXMgdGhlIHBh
cmFtZXRlciBwYXNzZWQgdGhlIGNhbGwgdG8gVGV4U3RvcmFnZSogZm9yCi0gICAgdGhlIHRleHR1
cmUgb2JqZWN0LgotCi0gICAgSW4gc2VjdGlvbiAzLjguOSAoUmVuZGVyaW5nIGZlZWRiYWNrIGxv
b3BzKSByZXBsYWNlIGFsbCByZWZlcmVuY2VzCi0gICAgdG8gVEVYVFVSRV9CQVNFX0xFVkVMIGJ5
IGxldmVsX2Jhc2UuCi0KLSAgICBJbiBzZWN0aW9uIDMuOC45IChNaXBtYXBwaW5nKSwgcmVwbGFj
ZSB0aGUgcGFyYWdyYXBoIHN0YXJ0aW5nICJFYWNoCi0gICAgYXJyYXkgaW4gYSBtaXBtYXAgaXMg
ZGVmaW5lZC4uLiIgYnkKLQotICAgICJFYWNoIGFycmF5IGluIGEgbWlwbWFwIGlzIGRlZmluZWQg
dXNpbmcgVGV4SW1hZ2UzRCwgVGV4SW1hZ2UyRCwKLSAgICBDb3B5VGV4SW1hZ2UyRCwgVGV4SW1h
Z2UxRCwgQ29weVRleEltYWdlMUQsIG9yIGJ5IGZ1bmN0aW9ucyB0aGF0IGFyZQotICAgIGRlZmlu
ZWQgaW4gdGVybXMgb2YgdGhlc2UgZnVuY3Rpb25zLiBMZXZlbC1vZi1kZXRhaWwgbnVtYmVycyBw
cm9jZWVkCi0gICAgZnJvbSBsZXZlbF9iYXNlIGZvciB0aGUgb3JpZ2luYWwgdGV4ZWwgYXJyYXkg
dGhyb3VnaCB0aGUgbWF4aW11bQotICAgIGxldmVsIHAsIHdpdGggZWFjaCB1bml0IGluY3JlYXNl
IGluZGljYXRpbmcgYW4gYXJyYXkgb2YgaGFsZiB0aGUKLSAgICBkaW1lbnNpb25zIG9mIHRoZSBw
cmV2aW91cyBvbmUgKHJvdW5kZWQgZG93biB0byB0aGUgbmV4dCBpbnRlZ2VyIGlmCi0gICAgZnJh
Y3Rpb25hbCkgYXMgYWxyZWFkeSBkZXNjcmliZWQuIEZvciBpbW11dGFibGUtZm9ybWF0IHRleHR1
cmVzLAotICAgIHAgaXMgb25lIGxlc3MgdGhhbiB0aGUgPGxldmVscz4gcGFyYW1ldGVyIHBhc3Nl
ZCB0byBUZXhTdG9yYWdlKjsKLSAgICBvdGhlcndpc2UgcCA9IGZsb29yKGxvZ18yKG1heHNpemUp
KSArIGxldmVsX2Jhc2UuICBBbGwgYXJyYXlzIGZyb20KLSAgICBsZXZlbF9iYXNlIHRocm91Z2gg
cSA9IG1pbihwLCBsZXZlbF9tYXgpIG11c3QgYmUgZGVmaW5lZCwgYXMKLSAgICBkaXNjdXNzZWQg
aW4gc2VjdGlvbiAzLjguMTIuIgotCi0gICAgSW4gc2VjdGlvbiAzLjguMTIgKFRleHR1cmUgQ29t
cGxldGVuZXNzKSwgbW9kaWZ5IHRoZSBsYXN0IHNlbnRlbmNlCi0gICAgdG8gYXZvaWQgcmVmZXJp
bmcgdG8gbGV2ZWxfYmFzZSBhbmQgbGV2ZWxfbWF4OgotCi0gICAgIkFuIGltcGxlbWVudGF0aW9u
IG1heSBhbGxvdyBhIHRleHR1cmUgaW1hZ2UgYXJyYXkgb2YgbGV2ZWwgMSBvcgotICAgIGdyZWF0
ZXIgdG8gYmUgY3JlYXRlZCBvbmx5IGlmIGEgbWlwbWFwIGNvbXBsZXRlIHNldCBvZiBpbWFnZSBh
cnJheXMKLSAgICBjb25zaXN0ZW50IHdpdGggdGhlIHJlcXVlc3RlZCBhcnJheSBjYW4gYmUgc3Vw
cG9ydGVkIHdoZXJlIHRoZQotICAgIHZhbHVlcyBvZiBURVhUVVJFX0JBU0VfTEVWRUwgYW5kIFRF
WFRVUkVfTUFYX0xFVkVMIGFyZSAwIGFuZCAxMDAwCi0gICAgcmVzcGVjdGl2ZWx5LiIKLQotICAg
IE1vZGlmeSBzZWN0aW9uIDMuOC4xMyAoVGV4dHVyZSBTdGF0ZSBhbmQgUHJveHkgU3RhdGUpIHRv
IGFkZCB0aGUgbmV3Ci0gICAgc3RhdGU6Ci0KLSAgICAiRWFjaCBzZXQgY29uc2lzdHMgb2YgLi4u
LCBhbmQgYSBib29sZWFuIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoZQotICAgIGZvcm1hdCBh
bmQgZGltZW5zaW9ucyBvZiB0aGUgdGV4dHVyZSBhcmUgaW1tdXRhYmxlLiIKLQotICAgIEFkZAot
ICAgICJUaGUgaW5pdGlhbCB2YWx1ZSBvZiBURVhUVVJFX0lNTVVUQUJMRV9GT1JNQVRfRVhUIGlz
IEZBTFNFLiIKLQotQWRkaXRpb25zIHRvIENoYXB0ZXIgNCBvZiB0aGUgT3BlbkdMIDMuMiBDb3Jl
IFByb2ZpbGUgU3BlY2lmaWNhdGlvbgotKFBlci1GcmFnbWVudCBPcGVyYXRpb25zIGFuZCB0aGUg
RnJhbWUgQnVmZmVyKQotCi0gICAgTm9uZQotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciA1IG9mIHRo
ZSBPcGVuR0wgMy4yIENvbXBhdGliaWxpdHkgUHJvZmlsZSBTcGVjaWZpY2F0aW9uCi0oU3BlY2lh
bCBGdW5jdGlvbnMpCi0KLSAgICBJbiBzZWN0aW9uIDUuNC4xIChDb21tYW5kcyBOb3QgVXNhYmxl
IGluIERpc3BsYXkgTGlzdHMpLCBhZGQKLSAgICBUZXhTdG9yYWdlKiB0byB0aGUgbGlzdCBvZiBj
b21tYW5kcyB0aGF0IGNhbm5vdCBiZSB1c2VkLgotCi1BZGRpdGlvbnMgdG8gQ2hhcHRlciA2IG9m
IHRoZSBPcGVuR0wgMy4yIENvcmUgUHJvZmlsZSBTcGVjaWZpY2F0aW9uCi0oU3RhdGUgYW5kIFN0
YXRlIFJlcXVlc3RzKQotCi0gICAgUmVwbGFjZSB0aGUgZm9sbG93aW5nIHN0YXRlbWVudCBpbiA2
LjEuMyAoRW51bWVyYXRlZCBRdWVyaWVzKToKLQotICAgICI8dmFsdWU+IG11c3QgYmUgb25lIG9m
IHRoZSBzeW1ib2xpYyB2YWx1ZXMgaW4gdGFibGUgMy4xMC4iCi0KLSAgICB3aXRoCi0KLSAgICAi
PHZhbHVlPiBtdXN0IGJlIFRFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVF9FWFQgb3Igb25lIG9mIHRo
ZSBzeW1ib2xpYwotICAgIHZhbHVlcyBpbiB0YWJsZSAzLjIyLiIKLQotQWRkaXRpb25zIHRvIHRo
ZSBBR0wvRUdML0dMWC9XR0wgU3BlY2lmaWNhdGlvbnMKLQotICAgIE5vbmUKLQotQWRkaXRpb25z
IHRvIE9FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlCi0KLSAgICBBZGQgdGhlIGZvbGxv
d2luZyB0byB0aGUgYWRkaXRpb25zIHRvIENoYXB0ZXIgMzoKLQotICAgICJTaW5jZSBFVEMxIGlt
YWdlcyBhcmUgZWFzaWx5IGVkaXRlZCBhbG9uZyA0eDQgdGV4ZWwgYm91bmRhcmllcywgdGhlCi0g
ICAgbGltaXRhdGlvbnMgb24gQ29tcHJlc3NlZFRleFN1YkltYWdlMkQgYXJlIHJlbGF4ZWQuCi0g
ICAgQ29tcHJlc3NlZFRleFN1YkltYWdlMkQgd2lsbCByZXN1bHQgaW4gYW4gSU5WQUxJRF9PUEVS
QVRJT04gZXJyb3IKLSAgICBvbmx5IGlmIG9uZSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
b2NjdXJzOgotCi0gICAgICAgICogPHdpZHRoPiBpcyBub3QgYSBtdWx0aXBsZSBvZiBmb3VyLCBh
bmQgPHdpZHRoPiBwbHVzIDx4b2Zmc2V0PiBpcyBub3QKLSAgICAgICAgICBlcXVhbCB0byB0aGUg
dGV4dHVyZSB3aWR0aDsKLQotICAgICAgICAqIDxoZWlnaHQ+IGlzIG5vdCBhIG11bHRpcGxlIG9m
IGZvdXIsIGFuZCA8aGVpZ2h0PiBwbHVzIDx5b2Zmc2V0PiBpcwotICAgICAgICAgIG5vdCBlcXVh
bCB0byB0aGUgdGV4dHVyZSBoZWlnaHQ7IG9yCi0KLSAgICAgICAgKiA8eG9mZnNldD4gb3IgPHlv
ZmZzZXQ+IGlzIG5vdCBhIG11bHRpcGxlIG9mIGZvdXIuCi0KLSAgICBSZW1vdmUgQ29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQgZnJvbSB0aGlzIGVycm9yOgotCi0gICAgIklOVkFMSURfT1BFUkFUSU9O
IGlzIGdlbmVyYXRlZCBieSBDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCwKLSAgICBUZXhTdWJJbWFn
ZTJELCBvciBDb3B5VGV4U3ViSW1hZ2UyRCBpZiB0aGUgdGV4dHVyZSBpbWFnZSA8bGV2ZWw+Ci0g
ICAgYm91bmQgdG8gPHRhcmdldD4gaGFzIGludGVybmFsIGZvcm1hdCBFVEMxX1JHQjhfT0VTLiIK
LQotICAgIEFkZCB0aGUgZm9sbG93aW5nIGVycm9yOgotCi0gICAgIklOVkFMSURfT1BFUkFUSU9O
IGlzIGdlbmVyYXRlZCBieSBDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRAotICAgIGlmIHRoZSByZWdp
b24gdG8gYmUgbW9kaWZpZWQgaXMgbm90IGFsaWduZWQgdG8gYmxvY2sgYm91bmRhcmllcwotICAg
IChyZWZlciB0byB0aGUgZXh0ZW5zaW9uIHRleHQgZm9yIGRldGFpbHMpLiIKLQotQWRkaXRpb25z
IHRvIEFNRF9jb21wcmVzc2VkX0FUQ190ZXh0dXJlIGFuZCBBTURfY29tcHJlc3NlZF8zRENfdGV4
dHVyZToKLQotICAgIEFwcGx5IHRoZSBzYW1lIGNoYW5nZXMgYXMgZm9yIE9FU19jb21wcmVzc2Vk
X0VUQzFfUkdCOF90ZXh0dXJlCi0gICAgYWJvdmUsIHN1YnN0aXR1dGluZyB0aGUgYXBwcm9wcmlh
dGUgaW50ZXJuYWwgZm9ybWF0IHRva2VucyBmcm9tCi0gICAgdGhlc2UgZXh0ZW5zaW9ucy4KLQot
RGVwZW5kZW5jaWVzIG9uIEVYVF9kaXJlY3Rfc3RhdGVfYWNjZXNzCi0KLSAgICBJZiBFWFRfZGly
ZWN0X3N0YXRlX2FjY2VzcyBpcyBub3QgcHJlc2VudCwgcmVmZXJlbmNlcyB0bwotICAgIFRleHR1
cmVTdG9yYWdlKiBzaG91bGQgYmUgaWdub3JlZC4KLQotRGVwZW5kZW5jaWVzIG9uIE9wZW5HTCBF
UwotCi0gICAgT24gT3BlbkdMIEVTIHdpdGhvdXQgZXh0ZW5zaW9ucyBpbnRyb2R1Y2luZyBURVhU
VVJFX01BWF9MRVZFTCwKLSAgICBtaXBtYXBwZWQgdGV4dHVyZXMgc3BlY2lmaWVkIHdpdGggVGV4
U3RvcmFnZSBhcmUgcmVxdWlyZWQgdG8gaGF2ZSBhCi0gICAgZnVsbCBzZXQgb2YgbWlwbWFwcy4g
SWYgVEVYVFVSRV9NQVhfTEVWRUwgaXMgbm90IHN1cHBvcnRlZCwgdGhpcwotICAgIGV4dGVuc2lv
biBpcyBtb2RpZmllZCBhcyBmb2xsb3dzOgotCi0gICAgLSBXaGVyZSBhbiB1cHBlciBib3VuZCBp
cyBwbGFjZWQgb24gPGxldmVscz4gaW4gdGhpcyBleHRlbnNpb24gKGkuZS4KLSAgICAgIHRoZSBt
YXhpbXVtIG51bWJlciBvZiBtaXBtYXAgbGV2ZWxzIGZvciBhIHRleHR1cmUgb2YgdGhlIGdpdmVu
Ci0gICAgICB0YXJnZXQgYW5kIGRpbWVuc2lvbnMpLCBhbiBJTlZBTElEX09QRVJBVElPTiBlcnJv
ciBpcyBnZW5lcmF0ZWQgaWYKLSAgICAgIDxsZXZlbHM+IGlzIG5laXRoZXIgMSBub3IgdGhpcyB1
cHBlciBib3VuZC4KLSAgICAtIHEgKHRoZSBlZmZlY3RpdmUgbWF4aW11bSBudW1iZXIgb2YgbGV2
ZWxzKSBpcyByZWRlZmluZWQgdG8gY2xhbXAKLSAgICAgIHRvIHRoZSBudW1iZXIgb2YgbGV2ZWxz
IHByZXNlbnQgaW4gaW1tdXRhYmxlLWZvcm1hdCB0ZXh0dXJlcy4KLQotICAgIE9wZW5HTCBFUyBk
b2VzIG5vdCBhY2NlcHQgc2l6ZWQgaW50ZXJuYWwgZm9ybWF0cyAoZS5nLiwgUkdCQTgpIGFuZAot
ICAgIGluc3RlYWQgZGVyaXZlcyBhbiBpbnRlcm5hbCBmb3JtYXQgZnJvbSB0aGUgPGZvcm1hdD4g
YW5kIDx0eXBlPgotICAgIHBhcmFtZXRlcnMgb2YgVGV4SW1hZ2UyRC4gU2luY2UgVGV4U3RvcmFn
ZSogZG9lcyBub3Qgc3BlY2lmeSB0ZXhlbAotICAgIGRhdGEsIHRoZSBBUEkgZG9lc24ndCBpbmNs
dWRlIDxmb3JtYXQ+IGFuZCA8dHlwZT4gcGFyYW1ldGVycy4KLSAgICBPbiBhbiBPcGVuR0wgRVMg
aW1wbGVtZW50YXRpb24sIHRoZSB2YWx1ZXMgaW4gdGhlIDxpbnRlcm5hbGZvcm1hdD4KLSAgICBj
b2x1bW4gaW4gdGhlIHRhYmxlcyBiZWxvdyBhcmUgYWNjZXB0ZWQgYXMgPGludGVybmFsZm9ybWF0
PgotICAgIHBhcmFtZXRlcnMsIGFuZCBiYXNlIGludGVybmFsIGZvcm1hdHMgYXJlIG5vdCBhY2Nl
cHRlZC4gVGhlCi0gICAgVGV4SW1hZ2UqIGNhbGxzIGluIHRoZSBUZXhTdG9yYWdlKiBwc2V1ZG9j
b2RlIGFyZSBtb2RpZmllZCBzbyB0aGF0Ci0gICAgdGhlIDxpbnRlcm5hbGZvcm1hdD4sIDxmb3Jt
YXQ+IGFuZCA8dHlwZT4gcGFyYW1ldGVycyBhcmUKLSAgICB0YWtlbiBmcm9tIHRoZSA8Zm9ybWF0
PiwgPGZvcm1hdD4gYW5kIDx0eXBlPiBjb2x1bW5zIChyZXNwZWN0aXZlbHkpCi0gICAgaW4gdGhl
IHRhYmxlcyBiZWxvdywgYWNjb3JkaW5nIHRvIHRoZSA8aW50ZXJuYWxmb3JtYXQ+Ci0gICAgc3Bl
Y2lmaWVkIGluIHRoZSBUZXhTdG9yYWdlKiBjb21tYW5kLgotCi0gICAgICAgIDxpbnRlcm5hbGZv
cm1hdD4gICAgICAgPGZvcm1hdD4gICAgICAgICAgIDx0eXBlPgotICAgICAgICAtLS0tLS0tLS0t
LS0tLS0tICAgICAgIC0tLS0tLS0tICAgICAgICAgICAtLS0tLS0KLSAgICAgICAgUkdCNTY1ICAg
ICAgICAgICAgICAgICBSR0IgICAgICAgICAgICAgICAgVU5TSUdORURfU0hPUlRfNV82XzUKLSAg
ICAgICAgUkdCQTQgICAgICAgICAgICAgICAgICBSR0JBICAgICAgICAgICAgICAgVU5TSUdORURf
U0hPUlRfNF80XzRfNAotICAgICAgICBSR0I1X0ExICAgICAgICAgICAgICAgIFJHQkEgICAgICAg
ICAgICAgICBVTlNJR05FRF9TSE9SVF81XzVfNV8xCi0gICAgICAgIFJHQjhfT0VTICAgICAgICAg
ICAgICAgUkdCICAgICAgICAgICAgICAgIFVOU0lHTkVEX0JZVEUKLSAgICAgICAgUkdCQThfT0VT
ICAgICAgICAgICAgICBSR0JBICAgICAgICAgICAgICAgVU5TSUdORURfQllURQotICAgICAgICBM
VU1JTkFOQ0U4X0FMUEhBOF9FWFQgIExVTUlOQU5DRV9BTFBIQSAgICBVTlNJR05FRF9CWVRFCi0g
ICAgICAgIExVTUlOQU5DRThfRVhUICAgICAgICAgTFVNSU5BTkNFICAgICAgICAgIFVOU0lHTkVE
X0JZVEUKLSAgICAgICAgQUxQSEE4X0VYVCAgICAgICAgICAgICBBTFBIQSAgICAgICAgICAgICAg
VU5TSUdORURfQllURQotCi0gICAgSWYgT0VTX2RlcHRoX3RleHR1cmUgaXMgc3VwcG9ydGVkOgot
Ci0gICAgICAgIDxpbnRlcm5hbGZvcm1hdD4gICAgICAgPGZvcm1hdD4gICAgICAgICAgIDx0eXBl
PgotICAgICAgICAtLS0tLS0tLS0tLS0tLS0tICAgICAgIC0tLS0tLS0tICAgICAgICAgICAtLS0t
LS0KLSAgICAgICAgREVQVEhfQ09NUE9ORU5UMTZfT0VTICBERVBUSF9DT01QT05FTlQgICAgVU5T
SUdORURfU0hPUlQKLSAgICAgICAgREVQVEhfQ09NUE9ORU5UMzJfT0VTICBERVBUSF9DT01QT05F
TlQgICAgVU5TSUdORURfSU5UCi0KLSAgICBJZiBPRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwgaXMg
c3VwcG9ydGVkOgotCi0gICAgICAgIDxpbnRlcm5hbGZvcm1hdD4gICAgICAgPGZvcm1hdD4gICAg
ICAgICAgIDx0eXBlPgotICAgICAgICAtLS0tLS0tLS0tLS0tLS0tICAgICAgIC0tLS0tLS0tICAg
ICAgICAgICAtLS0tLS0KLSAgICAgICAgREVQVEgyNF9TVEVOQ0lMOF9PRVMgICBERVBUSF9TVEVO
Q0lMX09FUyAgVU5TSUdORURfSU5UCi0KLSAgICBJZiBPRVNfdGV4dHVyZV9mbG9hdCBpcyBzdXBw
b3J0ZWQ6Ci0KLSAgICAgICAgPGludGVybmFsZm9ybWF0PiAgICAgICA8Zm9ybWF0PiAgICAgICAg
ICAgPHR5cGU+Ci0gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0gICAgICAgLS0tLS0tLS0gICAgICAg
ICAgIC0tLS0tLQotICAgICAgICBSR0JBMzJGX0VYVCAgICAgICAgICAgIFJHQkEgICAgICAgICAg
ICAgICBGTE9BVAotICAgICAgICBSR0IzMkZfRVhUICAgICAgICAgICAgIFJHQiAgICAgICAgICAg
ICAgICBGTE9BVAotICAgICAgICBMVU1JTkFOQ0VfQUxQSEEzMkZfRVhUIExVTUlOQU5DRV9BTFBI
QSAgICBGTE9BVAotICAgICAgICBMVU1JTkFOQ0UzMkZfRVhUICAgICAgIExVTUlOQU5DRSAgICAg
ICAgICBGTE9BVCAKLSAgICAgICAgQUxQSEEzMkZfRVhUICAgICAgICAgICBBTFBIQSAgICAgICAg
ICAgICAgRkxPQVQKLQotICAgIElmIE9FU190ZXh0dXJlX2hhbGZfZmxvYXQgaXMgc3VwcG9ydGVk
OgotCi0gICAgICAgIDxpbnRlcm5hbGZvcm1hdD4gICAgICAgPGZvcm1hdD4gICAgICAgICAgIDx0
eXBlPgotICAgICAgICAtLS0tLS0tLS0tLS0tLS0tICAgICAgIC0tLS0tLS0tICAgICAgICAgICAt
LS0tLS0KLSAgICAgICAgUkdCQTE2Rl9FWFQgICAgICAgICAgICBSR0JBICAgICAgICAgICAgICAg
SEFMRl9GTE9BVF9PRVMKLSAgICAgICAgUkdCMTZGX0VYVCAgICAgICAgICAgICBSR0IgICAgICAg
ICAgICAgICAgSEFMRl9GTE9BVF9PRVMKLSAgICAgICAgTFVNSU5BTkNFX0FMUEhBMTZGX0VYVCBM
VU1JTkFOQ0VfQUxQSEEgICAgSEFMRl9GTE9BVF9PRVMKLSAgICAgICAgTFVNSU5BTkNFMTZGX0VY
VCAgICAgICBMVU1JTkFOQ0UgICAgICAgICAgSEFMRl9GTE9BVF9PRVMgCi0gICAgICAgIEFMUEhB
MTZGX0VYVCAgICAgICAgICAgQUxQSEEgICAgICAgICAgICAgIEhBTEZfRkxPQVRfT0VTCi0KLSAg
ICBJZiBFWFRfdGV4dHVyZV90eXBlXzJfMTBfMTBfMTBfUkVWIGlzIHN1cHBvcnRlZDoKLQotICAg
ICAgICA8aW50ZXJuYWxmb3JtYXQ+ICAgIDxmb3JtYXQ+ICAgPHR5cGU+Ci0gICAgICAgIC0tLS0t
LS0tLS0tLS0tLS0gICAgLS0tLS0tLS0gICAtLS0tLS0KLSAgICAgICAgUkdCMTBfQTJfRVhUICAg
ICAgICBSR0JBICAgICAgIFVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVl9FWFQKLSAgICAgICAg
UkdCMTBfRVhUICAgICAgICAgICBSR0IgICAgICAgIFVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JF
Vl9FWFQKLQotICAgIElmIEVYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCBpcyBzdXBwb3J0ZWQ6
Ci0KLSAgICAgICAgPGludGVybmFsZm9ybWF0PiAgICA8Zm9ybWF0PiAgIDx0eXBlPgotICAgICAg
ICAtLS0tLS0tLS0tLS0tLS0tICAgIC0tLS0tLS0tICAgLS0tLS0tCi0gICAgICAgIEJHUkE4X0VY
VCAgICAgICAgICAgQkdSQV9FWFQgICBVTlNJR05FRF9CWVRFCi0KLQotRGVwZW5kZW5jaWVzIG9u
IHRleHR1cmUgdGFyZ2V0cwotCi0gICAgSWYgYSBwYXJ0aWN1bGFyIHRleHR1cmUgdGFyZ2V0IGlz
IG5vdCBzdXBwb3J0ZWQgYnkgdGhlCi0gICAgaW1wbGVtZW50YXRpb24sIHBhc3NpbmcgaXQgYXMg
YSA8dGFyZ2V0PiB0byBUZXhTdG9yYWdlKiB3aWxsCi0gICAgZ2VuZXJhdGUgYW4gSU5WQUxJRF9F
TlVNIGVycm9yLiBJZiBhcyBhIHJlc3VsdCwgYW55IG9mIHRoZSBjb21tYW5kcwotICAgIGRlZmlu
ZWQgaW4gdGhpcyBleHRlbnNpb24gd291bGQgbm8gbG9uZ2VyIGhhdmUgYW55IHZhbGlkIDx0YXJn
ZXQ+LAotICAgIGFsbCByZWZlcmVuY2VzIHRvIHRoZSBjb21tYW5kIHNob3VsZCBiZSBpZ25vcmVk
LgotCi0gICAgSW4gcGFydGljdWxhciwgbm90ZSB0aGF0IE9wZW5HTCBFUyAxLngvMi4wIGRvIG5v
dCBoYXZlIHByb3h5IHRleHR1cmVzLAotICAgIDFEIHRleHR1cmVzLCBvciAzRCB0ZXh0dXJlcywg
YW5kIHRodXMgb25seSB0aGUgVGV4U3RvcmFnZTJERVhUCi0gICAgZW50cnkgcG9pbnQgaXMgcmVx
dWlyZWQuIElmIE9FU190ZXh0dXJlXzNEIGlzIHN1cHBvcnRlZCwgdGhlCi0gICAgVGV4U3RvcmFn
ZTNERVhUIGVudHJ5IHBvaW50IGlzIGFsc28gcmVxdWlyZWQuCi0KLURlcGVuZGVuY2llcyBvbiBP
RVNfdGV4dHVyZV9ucG90Ci0KLSAgICBJZiBPcGVuR0wgRVMgMi4wIG9yIEFQUExFX3RleHR1cmVf
MkRfbGltaXRlZF9ucG90IGlzIHByZXNlbnQgYnV0Ci0gICAgT0VTX3RleHR1cmVfbnBvdCBpcyBu
b3QgcHJlc2VudCwgdGhlbiBJTlZBTElEX09QRVJBVElPTiBpcwotICAgIGdlbmVyYXRlZCBieSBU
ZXhTdG9yYWdlKiBhbmQgVGV4U3RvcmFnZTNERVhUIGlmIDxsZXZlbHM+IGlzCi0gICAgbm90IG9u
ZSBhbmQgPHdpZHRoPiwgPGhlaWdodD4gb3IgPGRlcHRoPiBpcyBub3QgYSBwb3dlciBvZgotICAg
IHR3by4KLQotRGVwZW5kZW5jaWVzIG9uIFdHTF9BUkJfcmVuZGVyX3RleHR1cmUsIEdMWF9FWFRf
dGV4dHVyZV9mcm9tX3BpeG1hcCwgRUdMCi0xLjQgYW5kIEdMX09FU19FR0xfaW1hZ2UKLQotICAg
IFRoZSBjb21tYW5kcyBlZ2xCaW5kVGV4SW1hZ2UsIHdnbEJpbmRUZXhJbWFnZUFSQiwgZ2xYQmlu
ZFRleEltYWdlRVhUIG9yCi0gICAgRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMgYXJlIG5vdCBw
ZXJtaXR0ZWQgb24gYW4gaW1tdXRhYmxlLWZvcm1hdAotICAgIHRleHR1cmUuCi0gICAgVGhleSB3
aWxsIGdlbmVyYXRlIHRoZSBmb2xsb3dpbmcgZXJyb3JzOgotICAgICAgLSBFR0xJbWFnZVRhcmdl
dFRleHR1cmUyRE9FUzogSU5WQUxJRF9PUEVSQVRJT04KLSAgICAgIC0gZWdsQmluZFRleEltYWdl
OiBFR0xfQkFEX01BVENICi0gICAgICAtIHdnbEJpbmRUZXhJbWFnZTogRVJST1JfSU5WQUxJRF9P
UEVSQVRJT04KLSAgICAgIC0gZ2xYQmluZFRleEltYWdlRVhUOiBCYWRNYXRjaAotCi1EZXBlbmRl
bmNpZXMgb24gT0VTX2NvbXByZXNzZWRfcGFsZXR0ZWRfdGV4dHVyZQotCi0gICAgVGhlIGNvbXBy
ZXNzZWQgdGV4dHVyZSBmb3JtYXRzIGV4cG9zZWQgYnkKLSAgICBPRVNfY29tcHJlc3NlZF9wYWxl
dHRlZF90ZXh0dXJlIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IFRleFN0b3JhZ2UqLgotICAgIFBhc3Np
bmcgb25lIG9mIHRoZXNlIHRva2VucyB0byBUZXhTdG9yYWdlKiB3aWxsIGdlbmVyYXRlIGFuCi0g
ICAgSU5WQUxJRF9FTlVNIGVycm9yLgotCi1FcnJvcnMKLQotICAgIE5vdGUgdGhhdCBkZXBlbmRl
bmNpZXMgYWJvdmUgbW9kaWZ5IHRoZSBlcnJvcnMuCi0KLSAgICBJZiBUZXhTdG9yYWdlKiBpcyBj
YWxsZWQgd2l0aCBhIDx3aWR0aD4sIDxoZWlnaHQ+LCA8ZGVwdGg+IG9yCi0gICAgPGxldmVscz4g
cGFyYW1ldGVyIHRoYXQgaXMgbGVzcyB0aGFuIG9uZSwgdGhlbiB0aGUgZXJyb3IKLSAgICBJTlZB
TElEX1ZBTFVFIGlzIGdlbmVyYXRlZC4KLQotICAgIElmIHRoZSA8dGFyZ2V0PiBwYXJhbWV0ZXIg
dG8gVGV4U3RvcmFnZTFERVhUIGlzIG5vdAotICAgIFtQUk9YWV9dVEVYVFVSRV8xRCwgdGhlbiB0
aGUgZXJyb3IgSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZC4KLQotICAgIElmIHRoZSA8dGFyZ2V0
PiBwYXJhbWV0ZXIgdG8gVGV4U3RvcmFnZTJERVhUIGlzIG5vdAotICAgIFtQUk9YWV9dVEVYVFVS
RV8yRCwgW1BST1hZX11URVhUVVJFX0NVQkVfTUFQLAotICAgIFtQUk9YWV9dVEVYVFVSRV9SRUNU
QU5HTEUgb3IgW1BST1hZX11URVhUVVJFXzFEX0FSUkFZLCB0aGVuIHRoZQotICAgIGVycm9yIElO
VkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQuCi0KLSAgICBJZiB0aGUgPHRhcmdldD4gcGFyYW1ldGVy
IHRvIFRleFN0b3JhZ2UzREVYVCBpcyBub3QKLSAgICBbUFJPWFlfXVRFWFRVUkVfM0QsIFtQUk9Y
WV9dVEVYVFVSRV8yRF9BUlJBWSBvcgotICAgIFtQUk9YWV9dVEVYVFVSRV9DVUJFX01BUF9BUlJB
WSB0aGVuIHRoZSBlcnJvciBJTlZBTElEX0VOVU0gaXMKLSAgICBnZW5lcmF0ZWQuCi0KLSAgICBJ
ZiB0aGUgPGxldmVscz4gcGFyYW1ldGVyIHRvIFRleFN0b3JhZ2UqIGlzIGdyZWF0ZXIgdGhhbiB0
aGUKLSAgICA8dGFyZ2V0Pi1zcGVjaWZpYyB2YWx1ZSBsaXN0ZWQgYmVsb3cgdGhlbiB0aGUgZXJy
b3IKLSAgICBJTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQ6Ci0gICAgICAgIFtQUk9YWV9d
VEVYVFVSRV97MUQsMURfQVJSQVl9OgotICAgICAgICAgICAgZmxvb3IobG9nXzIod2lkdGgpKSAr
IDEKLSAgICAgICAgW1BST1hZX11URVhUVVJFX3syRCwyRF9BUlJBWSxDVUJFX01BUCxDVUJFX01B
UF9BUlJBWX06Ci0gICAgICAgICAgICBmbG9vcihsb2dfMihtYXgod2lkdGgsIGhlaWdodCkpKSAr
IDEKLSAgICAgICAgW1BST1hZX11URVhUVVJFXzNEOgotICAgICAgICAgICAgZmxvb3IobG9nXzIo
bWF4KHdpZHRoLCBoZWlnaHQsIGRlcHRoKSkpICsgMQotICAgICAgICBbUFJPWFlfXVRFWFRVUkVf
UkVDVEFOR0xFOgotICAgICAgICAgICAgMQotCi0gICAgSWYgdGhlIGRlZmF1bHQgdGV4dHVyZSBv
YmplY3QgaXMgYm91bmQgdG8gdGhlIDx0YXJnZXQ+IHBhc3NlZCB0bwotICAgIFRleFN0b3JhZ2Uq
LCB0aGVuIHRoZSBlcnJvciBJTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQuCi0KLSAgICBJ
ZiB0aGUgPHRhcmdldD4gcGFyYW1ldGVyIHRvIFRleHR1cmVTdG9yYWdlKiBkb2VzIG5vdCBtYXRj
aCB0aGUKLSAgICBkaW1lbnNpb25hbGl0eSBvZiA8dGV4dHVyZT4sIHRoZW4gdGhlIGVycm9yIElO
VkFMSURfT1BFUkFUSU9OIGlzCi0gICAgZ2VuZXJhdGVkLgotCi0gICAgSWYgdGhlIDx0ZXh0dXJl
PiBwYXJhbWV0ZXIgdG8gVGV4dHVyZVN0b3JhZ2UqIGlzIHplcm8sIHRoZW4gdGhlCi0gICAgSU5W
QUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQuCi0KLSAgICBJZiBhbnkgcHNldWRvLWNvZGUgbGlzdGVk
IGluIHRoaXMgZXh0ZW5zaW9uIHdvdWxkIGdlbmVyYXRlIGFuIGVycm9yLAotICAgIHRoZW4gdGhh
dCBlcnJvciBpcyBnZW5lcmF0ZWQuCi0KLSAgICBDYWxsaW5nIGFueSBvZiB0aGUgZm9sbG93aW5n
IGZ1bmN0aW9ucyBvbiBhIHRleHR1cmUgZm9yIHdoaWNoCi0gICAgVEVYVFVSRV9JTU1VVEFCTEVf
Rk9STUFUX0VYVCBpcyBUUlVFIHdpbGwgZ2VuZXJhdGUgYW4KLSAgICBJTlZBTElEX09QRVJBVElP
TiBlcnJvcjoKLSAgICAgICAgLSBUZXhJbWFnZSoKLSAgICAgICAgLSBDb21wcmVzc2VkVGV4SW1h
Z2UqCi0gICAgICAgIC0gQ29weVRleEltYWdlKgotCi1OZXcgU3RhdGUKLQotICAgIEFkZGl0aW9u
cyB0byBUYWJsZSA2LjggVGV4dHVyZXMgKHN0YXRlIHBlciB0ZXh0dXJlIG9iamVjdCkKLQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSW5pdGlhbAotICAgICAgICBHZXQgVmFsdWUgICAgICAgICAgICAgICAgICAgICAgVHlwZSAg
IEdldCBDb21tYW5kICAgICAgVmFsdWUgICAgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgU2Vj
LgotICAgICAgICAtLS0tLS0tLS0gICAgICAgICAgICAgICAgICAgICAgLS0tLSAgIC0tLS0tLS0t
LS0tICAgICAgLS0tLS0tLSAgLS0tLS0tLS0tLS0gICAgICAgICAgICAgICAgLS0tLQotICAgICAg
ICBURVhUVVJFX0lNTVVUQUJMRV9GT1JNQVRfRVhUICAgQiAgICAgIEdldFRleFBhcmFtZXRlciAg
RkFMU0UgICAgU2l6ZSBhbmQgZm9ybWF0IGltbXV0YWJsZSAgMi42Ci0KLU5ldyBJbXBsZW1lbnRh
dGlvbiBEZXBlbmRlbnQgU3RhdGUKLQotICAgIE5vbmUKLQotSXNzdWVzCi0KLSAgICAxLiBXaGF0
IHNob3VsZCB0aGlzIGV4dGVuc2lvbiBiZSBjYWxsZWQ/Ci0KLSAgICBSRVNPTFZFRDogRVhUX3Rl
eHR1cmVfc3RvcmFnZSBpcyBjaG9zZW4gZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlCi0gICAgZ2xS
ZW5kZXJidWZmZXJTdG9yYWdlIGVudHJ5IHBvaW50LgotCi0gICAgMi4gU2hvdWxkIFRleFN0b3Jh
Z2UqIGFjY2VwdCBhIGJvcmRlciBwYXJhbWV0ZXI/Ci0KLSAgICBSRVNPTFZFRDogbm8uCi0KLSAg
ICBESVNDVVNTSU9OOiBDdXJyZW50bHkgaXQgZG9lcyBub3QsIHNpbmNlIGJvcmRlcnMgYXJlIGEg
ZGVwcmVjYXRlZAotICAgIGZlYXR1cmUgd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBieSBhbGwgaGFy
ZHdhcmUuIFVzZXJzIG9mIHRoZQotICAgIGNvbXBhdGliaWxpdHkgcHJvZmlsZSBjYW4gY29udGlu
dWUgdG8gdXNlIHRoZSBleGlzdGluZyB0ZXh0dXJlCi0gICAgc3BlY2lmaWNhdGlvbiBmdW5jdGlv
bnMsIGJ1dCB0aGVyZSBpcyBhbiBhcmd1bWVudCB0aGF0IHVzZXJzIG9mCi0gICAgY29tcGF0aWJp
bGl0eSBwcm9maWxlIG1heSBhbHNvIHdhbnQgdG8gdXNlIHRoaXMgZXh0ZW5zaW9uLgotCi0gICAg
My4gV2hhdCBpcyB0aGUgY29ycmVjdCBlcnJvciB3aGVuIDxsZXZlbHM+IHNwZWNpZmllcyBhIHBh
cnRpYWwKLSAgICBtaXBtYXAgcHlyYW1pZCBmb3IgT3BlbkdMIEVTPwotCi0gICAgUkVTT0xWRUQ6
IElOVkFMSURfT1BFUkFUSU9OLCBzaW5jZSBpdCBpcyBhbiBpbnRlcmFjdGlvbiBiZXR3ZWVuCi0g
ICAgcGFyYW1ldGVycyByYXRoZXIgdGhhbiBhIHNpbmdsZSB2YWx1ZSBiZWluZyBpbnZhbGlkLiBJ
dCBhbHNvIG1ha2VzCi0gICAgc2Vuc2UgdG8gcmVsYXggdGhpcyBjb25kaXRpb24gZm9yIGRlc2t0
b3AgR0wgd2hlcmUgaXQgbWFrZXMgc2Vuc2UgdG8KLSAgICB1c2UgYSB0cnVuY2F0ZWQgcHlyYW1p
ZCB3aXRoIFRFWFRVUkVfTUFYX0xFVkVMLgotCi0gICAgNC4gU2hvdWxkIHVzZSBvZiB0aGVzZSBl
bnRyeS1wb2ludHMgbWFrZSB0aGUgbWV0YWRhdGEgKGZvcm1hdCBhbmQKLSAgICBkaW1lbnNpb25z
KSBpbW11dGFibGU/Ci0KLSAgICBSRVNPTFZFRDogWWVzLgotCi0gICAgRElTQ1VTU0lPTjogVGhl
IGJlbmVmaXRzIG9mIGtub3dpbmcgbWV0YWRhdGEgY2FuJ3QgY2hhbmdlIHdpbGwKLSAgICBwcm9i
YWJseSBvdXR3ZWlnaCB0aGUgZXh0cmEgY29zdCBvZiBjaGVja2luZyB0aGUKLSAgICBURVhUVVJF
X0lNTVVUQUJMRV9GT1JNQVRfRVhUIGZsYWcgb24gZWFjaCB0ZXh0dXJlIHNwZWNpZmljYXRpb24K
LSAgICBjYWxsLgotCi0gICAgNS4gU2hvdWxkIGl0IGJlIGxlZ2FsIHRvIGNvbXBsZXRlbHkgcmVw
bGFjZSB0aGUgdGV4dHVyZSB1c2luZyBhIG5ldyBjYWxsCi0gICAgdG8gVGV4U3RvcmFnZSo/Ci0K
LSAgICBSRVNPTFZFRC4gSXQgd2lsbCBub3QgYmUgYWxsb3dlZC4KLQotICAgIERJU0NVU1NJT046
IFRoaXMgaXMgdXNlZnVsIHRvIGludmFsaWRhdGUgYWxsIGxldmVscyBvZiBhIHRleHR1cmUuCi0g
ICAgQWxsb3dpbmcgdGhlIG1ldGFkYXRhIHRvIGJlIGNoYW5nZWQgaGVyZSBzZWVtcyBlYXNpZXIg
dGhhbiB0cnlpbmcgdG8KLSAgICBkZWZpbmUgYSBwb3J0YWJsZSBkZWZpbml0aW9uIG9mIHdoYXQg
aXQgbWVhbnMgdG8gY2hhbmdlIHRoZSBtZXRhZGF0YQotICAgIChlLmcuIHdoYXQgaWYgeW91IHVz
ZWQgYW4gdW5zaXplZCBpbnRlcm5hbCBmb3JtYXQgdGhlIGZpcnN0IHRpbWUgYW5kCi0gICAgdGhl
IGNvcnJlc3BvbmRpbmcgc2l6ZWQgaW50ZXJuYWwgZm9ybWF0IHRoZSBzZWNvbmQgdGltZSwgb3Ig
dmljZQotICAgIHZlcnNhKT8KLQotICAgIEhvd2V2ZXIsIHdoaWxlIHRoaXMgaXMgbGFyZ2VseSBz
aW1pbGFyIHRvIGRlbGV0aW5nIHRoZSBvbGQgdGV4dHVyZQotICAgIG9iamVjdCBhbmQgcmVwbGFj
aW5nIGl0IHdpdGggYSBuZXcgb25lLCBpdCBkb2VzIGxvc2Ugc29tZSBvZiB0aGUKLSAgICBhZHZh
bnRhZ2VzIG9mIGltbXV0YWJpbGl0eS4gU3BlY2lmaWNhbGx5LCBiZWNhdXNlIGRvaW5nIHNvIGRv
ZXMgbm90Ci0gICAgcmVzZXQgYmluZGluZ3MsIGl0IGRvZXNuJ3QgYWxsb3cgYSBtaWdyYXRpb24g
cGF0aCB0byBhbiBBUEkgdGhhdAotICAgIHZhbGlkYXRlcyB0aGUgdGV4dHVyZSBmb3JtYXQgYXQg
YmluZCB0aW1lLgotCi0gICAgNi4gU2hvdWxkIGl0IGJlIGxlZ2FsIHRvIHVzZSBUZXhJbWFnZSog
YWZ0ZXIgVGV4U3RvcmFnZSogaWYgaXQgZG9lc24ndAotICAgIGFmZmVjdCB0aGUgbWV0YWRhdGE/
Ci0KLSAgICBSRVNPTFZFRDogTm8uCi0KLSAgICBESVNDVVNTSU9OOiBBIHBvdGVudGlhbCB1c2Ug
Y2FzZSBpcyB0byBhbGxvdyBhIHNpbmdsZSBsZXZlbCBvZiBhCi0gICAgdGV4dHVyZSB0byBiZSBp
bnZhbGlkYXRlZCB1c2luZyBhIE5VTEwgcG9pbnRlci4gSG93ZXZlciwgYXMgbm90ZWQKLSAgICBh
Ym92ZSBpdCBpcyBub24tdHJpdmlhbCB0byBkZXRlcm1pbmUgd2hhdCBjb25zdGl0dXRlcyBhIGNo
YW5nZS4KLQotICAgIDcuIEhvdyBkb2VzIHRoaXMgZXh0ZW5zaW9uIGludGVyYWN0IHdpdGggQVBQ
TEVfdGV4dHVyZV8yRF9saW1pdGVkX25wb3Q/Ci0KLSAgICBSRVNPTFZFRC4gQVBQTEVfdGV4dHVy
ZV8yRF9saW1pdGVkX25wb3QgaXMgZXF1aXZhbGVudCB0byB0aGUgTlBPVAotICAgIHN1cHBvcnQg
aW4gT3BlbkdMIEVTIDIuMC4KLQotICAgIDguIFNob3VsZCB0aGlzIGV4dGVuc2lvbiBiZSB3cml0
dGVuIHRvIHdvcmsgd2l0aCBkZXNrdG9wIE9wZW5HTD8KLQotICAgIFJFU09MVkVEOiBZZXMuCi0K
LSAgICBESVNDVVNTSU9OOiBUaGVyZSBoYXMgYmVlbiBiZWVuIGludGVyZXN0IGFuZCBpdCB3aWxs
IGZ1dHVyZS1wcm9vZiBpdAotICAgIGFnYWluc3QgZnVydGhlciBhZGRpdGlvbnMgdG8gT3BlbkdM
IEVTLgotCi0gICAgOS4gV2hpY2ggdGV4dHVyZSB0YXJnZXRzIHNob3VsZCBiZSBzdXBwb3J0ZWQ/
Ci0KLSAgICBSRVNPTFZFRC4gQWxsIHRhcmdldHMgZXhjZXB0IG11bHRpc2FtcGxlIGFuZCBidWZm
ZXIgdGV4dHVyZXMgYXJlCi0gICAgc3VwcG9ydGVkLgotCi0gICAgSW5pdGlhbGx5IGFsbCB0YXJn
ZXRzIGV4Y2VwdCBURVhUVVJFX0JVRkZFUiB3ZXJlIHN1cHBvcnRlZC4gSXQgd2FzCi0gICAgbm90
ZWQgdGhhdCB0aGUgZW50cnlwb2ludHMgZm9yIG11bHRpc2FtcGxlIHRhcmdldHMgYWRkZWQgbm8g
dXNlZnVsCi0gICAgZnVuY3Rpb25hbGl0eSwgc2luY2UgbXVsdGlzYW1wbGUgdGV4dHVyZXMgaGF2
ZSBubyBjb21wbGV0ZW5lc3MKLSAgICBjaGVja3MgYmV5b25kIGJlaW5nIG5vbi1lbXB0eS4KLQot
ICAgIFJlY3RhbmdsZSB0ZXh0dXJlcyBoYXZlIGNvbXBsZXRlbmVzcyBjaGVja3MgdG8gcHJldmVu
dCBmaWx0ZXJpbmcgb2YKLSAgICBpbnRlZ2VyIHRleHR1cmVzLiBIb3dldmVyLCBzaW5jZSB3ZSBk
ZWNpZGVkIHRvIG9ubHkgZm9yY2UgbWlwbWFwCi0gICAgY29tcGxldGVuZXNzLCB0aGlzIGJlY29t
ZXMgbGVzcyB1c2VmdWwuCi0KLSAgICAxMC4gU2hvdWxkIHRoaXMgZXh0ZW5zaW9uIHN1cHBvcnQg
cHJveHkgdGV4dHVyZXM/Ci0KLSAgICBSRVNPTFZFRDogWWVzLgotCi0gICAgRElTQ1VTU0lPTjog
SXQgc2hvdWxkIGJlIG9ydGhvZ29uYWwuCi0KLSAgICAxMS4gQXJlIHRoZSA8Zm9ybWF0PiBhbmQg
PHR5cGU+IHBhcmFtZXRlcnMgbmVjZXNzYXJ5PwotCi0gICAgUkVTT0xWRUQuIE5vLCB0aGV5IHdp
bGwgYmUgcmVtb3ZlZC4KLQotICAgIERJU0NVU1NJT046IEZvciBPcGVuR0wgRVMgdGhlIHR5cGUg
cGFyYW1ldGVyIHdhcyBuZWNlc3NhcnkgdG8KLSAgICBkZXRlcm1pbmUgdGhlIHByZWNpc2lvbiBv
ZiB0aGUgdGV4dHVyZSwgYnV0IHRoaXMgY2FuIGJlIHNvbHZlZCBieQotICAgIGhhdmluZyB0aGVz
ZSBmdW5jdGlvbnMgYWNjZXB0IHNpemVkIGludGVybmFsIGZvcm1hdHMgKHdoaWNoIGFyZQotICAg
IGFscmVhZHkgYWNjZXB0ZWQgYnkgcmVuZGVyYnVmZmVycykuCi0KLSAgICAxMi4gU2hvdWxkIGl0
IGJlIGxlZ2FsIHRvIG1ha2UgdGhlIGRlZmF1bHQgdGV4dHVyZSAoaWQgMCkKLSAgICBpbW11dGFi
bGUtZm9ybWF0PwotCi0gICAgUkVTT0xWRUQ6IE5vLgotCi0gICAgRElTQ1VTU0lPTjogVGhpcyB3
b3VsZCBtYWtlIGl0IGltcG9zc2libGUgdG8gcmVzdG9yZSB0aGUgY29udGV4dCB0bwotICAgIGl0
J3MgZGVmYXVsdCBzdGF0ZSwgd2hpY2ggaXMgZGVlbWVkIHVuZGVzaXJhYmxlLiBUaGVyZSBpcyBu
byBnb29kCi0gICAgcmVhc29uIG5vdCB0byB1c2UgbmFtZWQgdGV4dHVyZSBvYmplY3RzLgotCi0g
ICAgMTMuIFNob3VsZCB3ZSB0cnkgdG8gZ3VhcmFudGVlIHRoYXQgdGV4dHVyZXMgbWFkZSB0aHJv
dWdoIHRoaXMgcGF0aAotICAgIHdpbGwgYWx3YXlzIGJlIGNvbXBsZXRlPwotCi0gICAgUkVTT0xW
RUQ6IEl0IHNob3VsZCBiZSBndWFyYW50ZWVkIHRoYXQgdGhlIHRleHR1cmUgd2lsbCBiZSBtaXBt
YXAKLSAgICBjb21wbGV0ZS4KLQotICAgIERJU0NVU1NJT046IEZ1dHVyZSBzZXBhcmF0aW9uIGJl
dHdlZW4gaW1hZ2VzIGFuZCBzYW1wbGVycyB3aWxsIHN0aWxsCi0gICAgYWxsb3cgdXNlcnMgdG8g
Y3JlYXRlIGNvbWJpbmF0aW9ucyB0aGF0IGFyZSBpbnZhbGlkLCBidXQKLSAgICBjb25zdHJhaW5p
bmcgdGhlIHNpbXBsZSBjYXNlcyB3aWxsIG1ha2UgdGhlc2UgQVBJcyBlYXNpZXIgdG8gdXNlIGZv
cgotICAgIGJlZ2lubmVycy4KLQotICAgIDE0LiBTaG91bGQgdGhlc2UgZnVuY3Rpb25zIHVzZSBh
IEVYVF9kaXJlY3Rfc3RhdGVfYWNjZXNzIGFwcHJvYWNoIHRvCi0gICAgc3BlY2lmeWluZyB0aGUg
dGV4dHVyZSBvYmplY3RzPwotCi0gICAgVU5SRVNPTFZFRC4KLQotICAgIERJU0NVU1NJT046IGFz
IGEgc3RhbmRhbG9uZSBleHRlbnNpb24sIG5vIERTQS1saWtlIGZ1bmN0aW9ucyB3aWxsIGJlCi0g
ICAgYWRkZWQuIEhvd2V2ZXIsIGludGVyYWN0aW9ucyB3aXRoIEVYVF9kaXJlY3Rfc3RhdGVfYWNj
ZXNzIGFuZAotICAgIEFSQl9kaXJlY3Rfc3RhdGVfYWNjZXNzIG5lZWQgdG8gYmUgcmVzb2x2ZWQu
Ci0KLSAgICAxNS4gU2hvdWxkIHRoZXNlIGZ1bmN0aW9ucyBhY2NlcHQgZ2VuZXJpYyBjb21wcmVz
c2VkIGZvcm1hdHM/Ci0KLSAgICBSRVNPTFZFRDogWWVzLiBOb3RlIHRoYXQgdGhlIHNwZWMgbGFu
Z3VhZ2Ugd2lsbCBuZWVkIHRvIGJlIG1vZGlmaWVkCi0gICAgdG8gYWxsb3cgdGhpcyBmb3IgRVMs
IHNpbmNlIHRoZSBwc2V1ZG9jb2RlIGlzIHdyaXR0ZW4gaW4gdGVybXMgb2YKLSAgICBUZXhJbWFn
ZTJELCB3aGljaCBkb2VzIG5vdCBhbGxvdyBjb21wcmVzc2VkIHRleHR1cmUgZm9ybWF0cyBpbiBF
Uy4KLSAgICBTZWUgYWxzbyBpc3N1ZXMgMjMgYW5kIDI3LgotCi0gICAgMTYuIEhvdyBzaG91bGQg
Y29tcGxldGVuZXNzIGJlIGZvcmNlZCB3aGVuIFRFWFRVUkVfTUFYX0xFVkVMIGlzIG5vdAotICAg
IHByZXNlbnQ/Ci0KLSAgICBSRVNPTFZFRC4gVGhlIG1heGltdW0gbGV2ZWwgcSB3aWxsIGJlIHJl
ZGVmaW5lZCB0byBjbGFtcCB0byB0aGUKLSAgICBoaWdoZXN0IGxldmVsIGF2YWlsYWJsZS4KLQot
ICAgIERJU0NVU1NJT046IEEgc2luZ2xlLWxldmVsIHRleHR1cmUgY2FuIGJlIG1hZGUgY29tcGxl
dGUgZWl0aGVyIGJ5Ci0gICAgbWFraW5nIGl0IG1pcG1hcCBjb21wbGV0ZSAoYnkgc2V0dGluZyBU
RVhUVVJFX01BWF9MRVZFTCB0byAwKSBvciBieQotICAgIHR1cm5pbmcgb2ZmIG1pcG1hcHBpbmcg
KGJ5IGNob29zZSBhbiBhcHByb3ByaWF0ZSBtaW5pZmljYXRpb24KLSAgICBmaWx0ZXIpLgotCi0g
ICAgU29tZSBvcHRpb25zOgotCi0gICAgQTogU3BlY2lmeSB0aGF0IFRleFN0b3JhZ2UqIGNoYW5n
ZXMgdGhlIGRlZmF1bHQgbWluaWZpY2F0aW9uIGZpbHRlcgotICAgIGZvciBPcGVuR0wgRVMuIFRo
aXMgbWFrZXMgaXQgYXdrd2FyZCB0byBhZGQgVEVYVFVSRV9NQVhfTEVWRUwKLSAgICBzdXBwb3J0
IHRvIE9wZW5HTCBFUyBsYXRlciwgc2luY2Ugc3dpdGNoaW5nIHRvIG1hdGNoIEdMIHdvdWxkIGJy
ZWFrCi0gICAgY29tcGF0aWJpbGl0eS4gVGhlIHR3byBtZWNoYW5pc21zIGFsc28gZG8gbm90IGdp
dmUgaWRlbnRpY2FsCi0gICAgcmVzdWx0cywgc2luY2UgdGhlIG1hZ25pZmljYXRpb24gdGhyZXNo
b2xkIGRlcGVuZHMgb24gdGhlCi0gICAgbWluaWZpY2F0aW9uIGZpbHRlci4KLQotICAgIEI6IFNw
ZWNpZnkgdGhhdCB0aGUgdGV4dHVyZSBiZWhhdmVzIGFzIHRob3VnaCBURVhUVVJFX01BWF9MRVZF
TCB3ZXJlCi0gICAgemVyby4gVG8gc3BlY2lmeSB0aGlzIHByb3Blcmx5IHByb2JhYmx5IHJlcXVp
cmVzIGZhaXJseSBpbnRydXNpdmUKLSAgICBjaGFuZ2VzIHRvIHRoZSBPcGVuR0wgRVMgZnVsbCBz
cGVjaWZpY2F0aW9uIHRvIGFkZCBiYWNrIGFsbCB0aGUKLSAgICBsYW5ndWFnZSByZWxhdGluZyB0
byB0aGUgbWF4IGxldmVsLiBJdCBhbHNvIGRvZXMgbm90IHNvbHZlIHRoZQotICAgIHNpbWlsYXIg
cHJvYmxlbSBvZiB3aGF0IHRvIGRvIHdpdGggTlBPVCB0ZXh0dXJlczsgYW5kIGl0IG1heSBoYXZl
Ci0gICAgaGFyZHdhcmUgaW1wYWN0cyBkdWUgdG8gdGhlIGNoYW5nZSBpbiB0aGUgbWluL21hZyBj
cm9zc292ZXIuCi0KLSAgICBDOiBTcGVjaWZ5IHRoYXQgVGV4U3RvcmFnZSogY2hhbmdlcyB0aGUg
ZGVmYXVsdCBtaW5pZmljYXRpb24gZmlsdGVyCi0gICAgZm9yIGFsbCBpbXBsZW1lbnRhdGlvbnMg
d2hlbiBhIHNpbmdsZS1sZXZlbCB0ZXh0dXJlIGlzIHNwZWNpZmllZC4KLSAgICBUaGlzIG1heSBi
ZSBzbGlnaHRseSBjb3VudGVyLWludHVpdGl2ZSB0byBkZXNrdG9wIEdMIHVzZXJzLCBidXQgd2ls
bAotICAgIGdpdmUgY29uc2lzdGVudCBiZWhhdmlvdXIgYWNyb3NzIHZhcmlhbnRzIG9mIEdMIGFu
ZCBhdm9pZHMgY2hhbmdpbmcKLSAgICB0aGUgZnVuY3Rpb25hbCBiZWhhdmlvdXIgb2YgdGhpcyBl
eHRlbnNpb24gYmFzZWQgb24gdGhlIHByZXNlbmNlIG9yCi0gICAgYWJzZW5jZSBvZiBzb21lIG90
aGVyIGZlYXR1cmUuCi0KLSAgICBDdXJyZW50bHkgQiBpcyBzcGVjaWZpZWQuIFRoaXMgaGFzIHBv
dGVudGlhbCBoYXJkd2FyZSBpbXBsaWNhdGlvbnMKLSAgICBmb3IgT3BlbkdMIEVTIGJlY2F1c2Ug
b2YgdGhlIGVmZmVjdCBvZiB0aGUgbWluaWZpY2F0aW9uIGZpbHRlciBvbgotICAgIHRoZSBtaW4v
bWFnIGNyb3Nzb3Zlci4gSG93ZXZlciwgQyBoYXMgcG90ZW50aWFsIGhhcmR3YXJlIGltcGxpY2F0
aW9ucwotICAgIGZvciBPcGVuR0wgZHVlIHRvIHRoZSBzZXBhcmF0aW9uIG9mIHRleHR1cmUgYW5k
IHNhbXBsZXIgc3RhdGUuCi0KLSAgICAxNy4gSG93IHNob3VsZCBjb21wbGV0ZW5lc3MgYmUgZm9y
Y2VkIHdoZW4gb25seSBFUzItc3R5bGUgTlBPVCBpcwotICAgIGF2YWlsYWJsZT8KLQotICAgIFJF
U09MVkVELiBJdCBpcyBub3Qgd29ydGggdHJ5aW5nIHRvIGRvIHRoaXMsIGluIGxpZ2h0IG9mIGlz
c3VlIDEzLgotCi0gICAgUHJldmlvdXMgcmV2aXNpb25zIG9mIHRoaXMgZXh0ZW5zaW9uIG92ZXJy
b2RlIHRoZSBtaW5pZmljYXRpb24KLSAgICBmaWx0ZXIgYW5kIHdyYXAgbW9kZXMsIGJ1dCB0aGF0
IGlzIG5vIGxvbmdlciB0aGUgY2FzZS4gU2luY2UKLSAgICBPRVNfdGV4dHVyZV9ucG90IHJlbW92
ZXMgdGhlIGNhdmVhdHMgb24gTlBPVCB0ZXh0dXJlcyBhbnl3YXksIGl0Ci0gICAgbWlnaHQgbm90
IGJlIHdvcnRoIHRyeWluZyB0byAiZml4IiB0aGlzLgotCi0gICAgMTguIEZvciBPcGVuR0wgRVMs
IGhvdyBkbyB0aGUgbmV3IHNpemVkIGludGVybmFsIGZvcm1hdHMgaW50ZXJhY3QKLSAgICB3aXRo
IE9FU19yZXF1aXJlZF9pbnRlcm5hbF9mb3JtYXQ/Ci0KLSAgICBSRVNPTFZFRC4KLQotICAgIElm
IE9FU19yZXF1aXJlZF9pbnRlcm5hbF9mb3JtYXQgaXMgbm90IHByZXNlbnQsIHRoZW4gdGhlCi0g
ICAgPGludGVybmFsZm9ybWF0PiBwYXJhbWV0ZXIgaXMgaW50ZW5kZWQgbWVyZWx5IHRvIGluZGlj
YXRlIHdoYXQgdGhlCi0gICAgY29ycmVzcG9uZGluZyA8Zm9ybWF0PiBhbmQgPHR5cGU+IHdvdWxk
IGhhdmUgYmVlbiwgaGFkIFRleEltYWdlKgotICAgIGJlZW4gdXNlZCBpbnN0ZWFkLiBJZiBPRVNf
cmVxdWlyZWRfaW50ZXJuYWxfZm9ybWF0IGlzIHByZXNlbnQsIHRoZW4KLSAgICBpdCBpcyBpbnRl
bmRlZCB0aGF0IHRoZSA8aW50ZXJuYWxmb3JtYXQ+IHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgaWYK
LSAgICBpdCBoYWQgYmVlbiBwYXNzZWQgZGlyZWN0bHkgdG8gVGV4SW1hZ2UqLgotCi0gICAgMTku
IFNob3VsZCB0aGVyZSBiZSBzb21lIGhpbnRpbmcgbWVjaGFuaXNtIHRvIGluZGljYXRlIHdoZXRo
ZXIgZGF0YQotICAgIGlzIGNvbWluZyBpbW1lZGlhdGVseSBvciBsYXRlcj8KLQotICAgIFJFU09M
VkVELiBObyBwYXJhbWV0ZXIgaXMgbmVlZGVkLiBBbiBleHRlbnNpb24gY2FuIGJlIGFkZGVkIHRv
IHByb3ZpZGUKLSAgICBhIFRleFBhcmFtZXRlciB2YWx1ZSB3aGljaCBpcyBsYXRjaGVkIGF0IFRl
eFN0b3JhZ2UgdGltZS4KLQotICAgIERJU0NVU1NJT046IFNvbWUgbWVtYmVycyBmZWx0IHRoYXQg
dGhpcyB3b3VsZCBiZSB1c2VmdWwgc28gdGhhdCB0aGV5Ci0gICAgY291bGQgZGVmZXIgYWxsb2Nh
dGlvbiB3aGVuIHN1aXRhYmxlLCBwYXJ0aWN1bGFybHkgaWYgaGlnaGVyLQotICAgIHJlc29sdXRp
b24gaW1hZ2VzIHdpbGwgYmUgc3RyZWFtZWQgaW4gbGF0ZXI7IG9yIHRvIGNob29zZSBhIG1lbW9y
eQotICAgIHR5cGUgb3IgbGF5b3V0IGFwcHJvcHJpYXRlIHRvIHRoZSB1c2FnZS4gSG93ZXZlciwg
aW1wbGVtZW50YXRpb24KLSAgICBleHBlcmllbmNlIHdpdGggQnVmZmVyRGF0YSBpcyB0aGF0IGRl
dmVsb3BlcnMgZnJlcXVlbnRseSBwcm92aWRlCi0gICAgd3JvbmcgdmFsdWVzIGFuZCBpbXBsZW1l
bnRhdGlvbnMgaGF2ZSB0byBndWVzcyBhbnl3YXkuCi0KLSAgICBPbmUgb3B0aW9uIHN1Z2dlc3Rl
ZCB3YXMgdGhlIDx1c2FnZT4gcGFyYW1ldGVyIGN1cnJlbnRseSBwYXNzZWQgdG8KLSAgICBCdWZm
ZXJEYXRhLiBBbm90aGVyIG9wdGlvbiB3YXMgdG8gc2V0IGl0IHdpdGggVGV4UGFyYW1ldGVyLgot
Ci0gICAgMjAuIEhvdyBzaG91bGQgdGhpcyBleHRlbnNpb24gaW50ZXJhY3Qgd2l0aAotICAgIEVH
TEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTLCBlZ2xCaW5kVGV4SW1hZ2UsIGdsWEJpbmRUZXhJbWFn
ZSBhbmQKLSAgICB3Z2xCaW5kVGV4SW1hZ2U/Ci0KLSAgICBSRVNPTFZFRC4gVGhlc2UgZnVuY3Rp
b25zIHdpbGwgbm90IGJlIHBlcm1pdHRlZCBhZnRlciBnbFRleFN0b3JhZ2UqLgotCi0gICAgU2V2
ZXJhbCBvcHRpb25zIGFyZSBwb3NzaWJsZToKLQotICAgIEEpIERpc2FsbG93IHRoZXNlIGZ1bmN0
aW9ucy4KLSAgICBCKSBBbGxvdyB0aGVtLCBidXQgaGF2ZSB0aGVtIHJlc2V0IHRoZSBURVhUVVJF
X0lNTVVUQUJMRV9GT1JNQVRfRVhUCi0gICAgICAgZmxhZy4KLSAgICBDKSBBbGxvdyB0aGVtIHVu
Y29uZGl0aW9uYWxseS4KLQotICAgIEMgd291bGQgdmlvbGF0ZSB0aGUgZGVzaWduIHByaW5jaXBs
ZSB0aGF0IHRoZSBkaW1lbnNpb25zIGFuZCBmb3JtYXQKLSAgICBvZiB0aGUgbWlwbWFwIGFycmF5
IGFyZSBpbW11dGFibGUuIEIgZG9lcyBub3Qgc28gbXVjaCBtb2RpZnkgdGhlCi0gICAgZGltZW5z
aW9uIGFuZCBmb3JtYXRzIGFzIHJlcGxhY2UgdGhlbSB3aXRoIGFuIGVudGlyZWx5IGRpZmZlcmVu
dAotICAgIHNldC4KLQotICAgIDIxLiBTaG91bGQgdGhlcmUgYmUgYSBzaW5nbGUgZnVuY3Rpb24g
Zm9yIHNwZWNpZnlpbmcgMUQsIDJEIGFuZCAzRAotICAgIHRhcmdldHM/Ci0KLSAgICBSRVNPTFZF
RC4gTm8sIHdlIHdpbGwgc3RpY2sgd2l0aCBleGlzdGluZyBwcmVjZWRlbnQuCi0KLSAgICAyMi4g
SXMgaXQgcG9zc2libGUgdG8gdXNlIEdlbmVyYXRlTWlwbWFwIHdpdGggYW4gaW5jb21wbGV0ZSBt
aXBtYXAKLSAgICBweXJhbWlkPwotCi0gICAgUkVTT0xWRUQuIFllcywgYmVjYXVzZSB0aGUgZWZm
ZWN0aXZlIG1heCBsZXZlbCBpcyBsaW1pdGVkIHRvIHRoZQotICAgIGxldmVscyB0aGF0IHdlcmUg
c3BlY2lmaWVkLCBhbmQgc28gR2VuZXJhdGVNaXBtYXAgZG9lcyBub3QgZ2VuZXJhdGUKLSAgICBh
bnkgbmV3IGxldmVscy4KLQotICAgIEhvd2V2ZXIsIHRvIG1ha2UgYXV0b21hdGljIG1pcG1hcCBn
ZW5lcmF0aW9uIHdvcmssIGl0IGlzIG5lY2Vzc2FyeQotICAgIHRvIHJlZGVmaW5lIHAgcmF0aGVy
IHRoYW4gcSwgc2luY2UgYXV0b21hdGljIG1pcG1hcCBnZW5lcmF0aW9uCi0gICAgaWdub3JlcyB0
aGUgbWF4IGxldmVsLgotCi0gICAgMjMuIEhvdyBzaG91bGQgdGhpcyBleHRlbnNpb24gaW50ZXJh
Y3Qgd2l0aAotICAgIE9FU19jb21wcmVzc2VkX3BhbGV0dGVkX3RleHR1cmU/Ci0KLSAgICBSRVNP
TFZFRC4gUGFsZXR0ZWQgdGV4dHVyZXMgd2lsbCBub3QgYmUgcGVybWl0dGVkLCBhbmQgd2lsbAot
ICAgIGdlbmVyYXRlIElOVkFMSURfRU5VTS4KLQotICAgIERJU0NVU1NJT046IE9FU19jb21wcmVz
c2VkX3BhbGV0dGVkX3RleHR1cmUgc3VwcGxpZXMgYWxsIHRoZSBtaXBtYXBzCi0gICAgaW4gYSBz
aW5nbGUgZnVuY3Rpb24gY2FsbCwgd2l0aCB0aGUgcGFsZXR0ZSBzcGVjaWZpZWQgb25jZS4gVGhh
dCdzCi0gICAgaW5jb21wYXRpYmxlIHdpdGggdGhlIHVwbG9hZCBtb2RlbCBpbiB0aGlzIGV4dGVu
c2lvbi4KLQotICAgIDI0LiBIb3cgY2FuIEVUQzEgdGV4dHVyZXMgYmUgdXNlZCB3aXRoIHRoaXMg
ZXh0ZW5zaW9uPwotCi0gICAgUkVTT0xWRUQuIEFkZCBsYW5ndWFnZSBpbiB0aGlzIGV4dGVuc2lv
biB0byBhbGxvdyBzdWJyZWdpb24gdXBsb2FkcwotICAgIGZvciBFVEMxLgotCi0gICAgRElTQ1VT
U0lPTjogR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUgZG9lc24ndCBhbGxvdwot
ICAgIENvbXByZXNzZWRUZXhTdWJJbWFnZSosIHNvIGl0IHdvdWxkIGJlIGltcG9zc2libGUgdG8g
dXNlIHRoaXMKLSAgICBleHRlbnNpb24gd2l0aCBFVEMxLiBUaGlzIGlzIHNlZW4gYXMgYW4gb3Zl
cnNpZ2h0IGluIHRoZSBFVEMxCi0gICAgZXh0ZW5zaW9uLiBXaGlsZSBpdCBjYW5ub3QgYmUgZml4
ZWQgaW4gdGhhdCBleHRlbnNpb24gKHNpbmNlIGl0IGlzCi0gICAgYWxyZWFkeSBzaGlwcGluZyks
IHRoaXMgZXh0ZW5zaW9uIGNhbiBhZGQgdGhhdCBjYXBhYmlsaXR5LgotCi0gICAgMjUuIFNob3Vs
ZCBhbnkgb3RoZXIgY29tcHJlc3NlZCBmb3JtYXRzIGJlIHNpbWlsYXJseSBtb2RpZmllZD8KLQot
ICAgIFJFU09MVkVELiBZZXMsIEFNRF9jb21wcmVzc2VkX0FUQ190ZXh0dXJlIGFuZAotICAgIEFN
RF9jb21wcmVzc2VkXzNEQ190ZXh0dXJlIGNhbiBiZSBtb2RpZmllZCBzaW1pbGFybHkgdG8gRVRD
MQotICAgIChNYXVyaWNlIFJpYmJsZSBpbmRpY2F0ZWQgdGhhdCBib3RoIGZvcm1hdHMgdXNlIDR4
NCBibG9ja3MpLiBEZXNrdG9wCi0gICAgT3BlbkdMIHJlcXVpcmVzIHRoYXQgd2hvbGUtaW1hZ2Ug
cmVwbGFjZW1lbnQgaXMgc3VwcG9ydGVkIGZvciBhbnkKLSAgICBjb21wcmVzc2VkIHRleHR1cmUg
Zm9ybWF0LCBhbmQgdGhlIE9wZW5HTCBFUyBleHRlbnNpb25zCi0gICAgRVhUX3RleHR1cmVfY29t
cHJlc3Npb25fZHh0MSBhbmQgSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMKLSAgICBhbHJl
YWR5IGFsbG93IHdob2xlLWltYWdlIHJlcGxhY2VtZW50LCBzbyBpdCBpcyBub3QgbmVjZXNzYXJ5
IHRvCi0gICAgbW9kaWZ5IHRoZW0gdG8gYmUgdXNlZCB3aXRoIHRoaXMgZXh0ZW5zaW9uLgotCi0g
ICAgMjYuIFNob3VsZCB0aGVzZSBjb21tYW5kcyBiZSBwZXJtaXR0ZWQgaW4gZGlzcGxheSBsaXN0
cz8KLQotICAgIFJFU09MVkVELiBOby4KLQotICAgIERJU0NVU1NJT046IERpc3BsYXkgbGlzdHMg
YXJlIG1vc3QgdXNlZnVsIGZvciByZXBlYXRpbmcgY29tbWFuZHMsCi0gICAgYW5kIFRleFN0b3Jh
Z2UqIGNvbW1hbmRzIGNhbm5vdCBiZSByZXBlYXRlZCBiZWNhdXNlIHRoZSBmaXJzdCBjYWxsCi0g
ICAgbWFrZXMgdGhlIGZvcm1hdCBpbW11dGFibGUuCi0KLSAgICAyNy4gU2hvdWxkIHRoZXNlIGNv
bW1hbmRzIGFjY2VwdCB1bnNpemVkIGludGVybmFsIGZvcm1hdHM/Ci0KLSAgICBSRVNPTFZFRDog
Tm8sIGZvciBib3RoIE9wZW5HTCBhbmQgT3BlbkdMIEVTLgotCi0gICAgRElTQ1VTU0lPTjogbm9y
bWFsbHkgdGhlIDx0eXBlPiBwYXJhbWV0ZXIgdG8gVGV4SW1hZ2UqIGNhbiBzZXJ2ZSBhcwotICAg
IGEgaGludCB0byBzZWxlY3QgYSBzaXplZCBmb3JtYXQgKGFuZCBpbiBPcGVuR0wgRVMsIHRoaXMg
aXMgdGhlIG9ubHkKLSAgICBtZWNoYW5pc20gYXZhaWxhYmxlKTsgc2luY2UgVGV4U3RvcmFnZSog
ZG9lcyBub3QgaGF2ZSBhIDx0eXBlPgotICAgIHBhcmFtZXRlciwgdGhlIGltcGxlbWVudGF0aW9u
IGhhcyBubyBpbmZvcm1hdGlvbiBvbiB3aGljaCB0byBiYXNlIGEKLSAgICBkZWNpc2lvbi4KLQot
UmV2aXNpb24gSGlzdG9yeQotCi0gICAgUmV2aXNpb24gMjQsIDIwMTEvMTEvMTEgKGRna29jaCkK
LSAgICAgIC0gTWFyayBjb21wbGV0ZS4gQ2xhcmlmeSBFUyBjbGFyaWZpY2F0aW9ucy4KLQotICAg
IFJldmlzaW9uIDIzLCAyMDExLzExLzEwIChkZ2tvY2gpCi0gICAgICAtIEFkZCBHTEVTIGNsYXJp
ZmNhdGlvbnMgYW5kIGludGVyYWN0aW9ucyB3aXRoIG1vcmUgR0xFUyBleHRlbnNpb25zCi0KLSAg
ICBSZXZpc2lvbiAyMiwgMjAxMS8xMS8xMCAoYm1lcnJ5KQotICAgICAgLSBVcGRhdGUgbXkgY29u
dGFjdCBkZXRhaWxzCi0KLSAgICBSZXZpc2lvbiAyMSwgMjAxMS8wNy8yNSAoYm1lcnJ5KQotICAg
ICAgLSBSZW1vdmUgZGFuZ2xpbmcgcmVmZXJlbmNlcyB0byBNdWx0aVRleFN0b3JhZ2UgaW4gRXJy
b3JzIHNlY3Rpb24KLQotICAgIFJldmlzaW9uIDIwLCAyMDExLzA3LzIxIChibWVycnkpCi0gICAg
ICAtIFJlbW92ZSBkYW5nbGluZyByZWZlcmVuY2UgdG8gPHNhbXBsZXM+IGluIEVycm9ycyBzZWN0
aW9uCi0KLSAgICBSZXZpc2lvbiAxOSwgMjAxMS8wNS8wMiAoSm9uIExlZWNoKQotICAgICAgLSBB
c3NpZ24gZW51bSB2YWx1ZQotCi0gICAgUmV2aXNpb24gMTgsIDIwMTEvMDEvMjQgKGJtZXJyeSkK
LSAgICAgIC0gRGlzYWxsb3cgdW5zaXplZCBpbnRlcm5hbCBmb3JtYXRzIChvdmVyc2lnaHQgaW4g
cmV2aXNpb24gMTcpLgotCi0gICAgUmV2aXNpb24gMTcsIDIwMTEvMDEvMjQgKGJtZXJyeSkKLSAg
ICAgIC0gQWRkZWQgYW5kIHJlc29sdmVkIGlzc3VlIDI2LgotICAgICAgLSBTcGxpdCBpc3N1ZSAy
NyBvdXQgZnJvbSBpc3N1ZSAxNS4KLSAgICAgIC0gRGlzYWxsb3cgVGV4U3RvcmFnZSogaW4gZGlz
cGxheSBsaXN0cy4KLSAgICAgIC0gVXNlIHRoZSB0ZXJtICJpbW11dGFibGUtZm9ybWF0IiBjb25z
aXN0ZW50bHkgKGJ1ZyA3MjgxKS4KLQotICAgIFJldmlzaW9uIDE2LCAyMDEwLzExLzIzIChibWVy
cnkpCi0gICAgICAtIERpc2FsbG93ZWQgVGV4U3RvcmFnZSBvbiBhbiBpbW11dGFibGUtZm9ybWF0
IHRleHR1cmUKLSAgICAgICAgKHJlc29sdmVzIGlzc3VlIDUpLgotICAgICAgLSBEZWxldGVkIE11
bHRpVGV4U3RvcmFnZSogY29tbWFuZHMgKG90aGVyIERTQSBmdW5jdGlvbnMgc3RpbGwKLSAgICAg
ICAgdW5yZXNvbHZlZCkuCi0gICAgICAtIFNvbWUgbWlub3Igd29yZGluZyBjaGFuZ2VzIHN1Z2dl
c3RlZCBieSBQYXQgQnJvd24gKGJ1ZyA3MDAyKS4KLQotICAgIFJldmlzaW9uIDE1LCAyMDEwLzEx
LzA5IChibWVycnkpCi0gICAgICAtIFJlb3BlbmVkIGlzc3VlIDUuCi0gICAgICAtIFJlb3BlbmVk
IGlzc3VlIDE0LCBwZW5kaW5nIHN0YWJpbGlzYXRpb24gb2YKLSAgICAgICAgQVJCX2RpcmVjdF9z
dGF0ZV9hY2Nlc3MuCi0gICAgICAtIE1hcmtlZCBpc3N1ZSA5IHJlc29sdmVkLCBwZW5kaW5nIGFu
eSBvYmplY3Rpb25zLgotICAgICAgLSBGaXggcmVmZXJlbmNlcyB0byBubyBvYmplY3QgYmVpbmcg
Ym91bmQgKHdhcyBtZWFudCB0byByZWZlciB0bwotICAgICAgICB0aGUgZGVmYXVsdCBvYmplY3Qp
LgotICAgICAgLSBBZGRpbmcgbWlzc2luZyBwc2V1ZG9jb2RlIGZvciBURVhUVVJFXzFEX0FSUkFZ
LgotICAgICAgLSBDb3JyZWN0ZWQgVEVYVFVSRV8yRF9BUlJBWSAtPiBURVhUVVJFXzFEX0FSUkFZ
IGluIGVycm9yIGNoZWNrcy4KLSAgICAgIC0gQ2hhbmdlZCAibGV2ZWxzLi4uIGFyZSByZW1vdmVk
IiB0byAibGV2ZWxzLi4uIGFyZSByZXNldCB0byB0aGVpcgotICAgICAgICBpbml0IHN0YXRlIiwg
c2luY2UgZGVza3RvcCBHTCBoYXMgcGVyLWxldmVsIHN0YXRlIGFwYXJ0IGZyb20gdGhlCi0gICAg
ICAgIHRleGVscy4KLSAgICAgIC0gTWlzY2VsbGFuZW91cyB3b3JkaW5nIGZpeGVzLgotCi0gICAg
UmV2aXNpb24gMTQsIDIwMTAvMDkvMjUgKGJtZXJyeSkKLSAgICAgIC0gQWRkIGlzc3VlcyAyNC0y
NSBhbmQgYWx0ZXJhdGlvbnMgdG8KLSAgICAgICAgT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3Rl
eHR1cmUsIEFNRF9jb21wcmVzc2VkX0FUQ190ZXh0dXJlIGFuZAotICAgICAgICBBTURfY29tcHJl
c3NlZF8zRENfdGV4dHVyZS4KLQotICAgIFJldmlzaW9uIDEzLCAyMDEwLzA5LzE5IChibWVycnkp
Ci0gICAgICAtIFR3byB0eXBvIGZpeGVzIGZyb20gRGFuaWVsIEtvY2gKLQotICAgIFJldmlzaW9u
IDEyLCAyMDEwLzA5LzE4IChibWVycnkpCi0gICAgICAtIENoYW5nZWQgcmVzb2x1dGlvbiB0byBp
c3N1ZSAyMAotICAgICAgLSBBZGRlZCBhbmQgcmVzb2x2ZWQgaXNzdWUgMjMKLSAgICAgIC0gQWRk
ZWQgZXhwbGFuYXRpb24gb2YgaG93IHRvIHVwbG9hZCBkYXRhIChpbiBvdmVydmlldykKLSAgICAg
IC0gQWRkZWQgc3BlYyBsYW5ndWFnZSB0byBpbXBsZW1lbnQgcmVzb2x1dGlvbiB0byBpc3N1ZSAx
NQotCi0gICAgUmV2aXNpb24gMTEsIDIwMTAvMDcvMjEgKGJtZXJyeSkKLSAgICAgIC0gUmVzb2x2
ZWQgaXNzdWUgMTYKLSAgICAgIC0gUmVvcGVuIGlzc3VlIDIwCi0gICAgICAtIEZpeCBzb21lIHR5
cG9zCi0KLSAgICBSZXZpc2lvbiAxMCwgMjAxMC8wNy8xNSAoYm1lcnJ5KQotICAgICAgLSBVcGRh
dGUgc29tZSBpc3N1ZXMgdG8gbWF0Y2ggY29yZSB0ZXh0Ci0gICAgICAtIFJlc29sdmVkIGlzc3Vl
IDE3Ci0KLSAgICBSZXZpc2lvbiA5LCAyMDEwLzA1LzI0IChibWVycnkpCi0gICAgICAtIE1hcmtl
ZCBpc3N1ZSAyIGFzIHJlc29sdmVkCi0gICAgICAtIFJlc29sdmVkIGlzc3VlIDE5IChhcyBubyBj
aGFuZ2UpCi0gICAgICAtIFJlc29sdmVkIGlzc3VlIDIwCi0gICAgICAtIEFkZCBpc3N1ZXMgMjEt
MjIKLSAgICAgIC0gQWRkIGluIHNwZWMgbGFuZ3VhZ2UgdG8gZm9yYmlkIHVzZSBvbiBkZWZhdWx0
IHRleHR1cmVzCi0gICAgICAtIFJlZGVmaW5lIGxldmVsX2Jhc2UsIGxldmVsX21heCB0byBiZSBj
bGFtcGVkIGZvcm1zIG9mCi0gICAgICAgIFRFWFRVUkVfQkFTRV9MRVZFTC9URVhUVVJFX01BWF9M
RVZFTCB3aGVuIHVzaW5nIGltbXV0YWJsZQotICAgICAgICB0ZXh0dXJlcwotICAgICAgLSBSZWRl
ZmluZSBwIHRvIGFsc28gYmUgY2xhbXBlZCB0byB0aGUgcHJvdmlkZWQgbGV2ZWxzIGZvcgotICAg
ICAgICBpbW11dGFibGUgdGV4dHVyZXMsIHRvIHN1cHBvcnQgYXV0b21hdGljIG1pcG1hcCBnZW5l
cmF0aW9uCi0gICAgICAtIFJlbW92ZWQgbXVsdGlzYW1wbGUgZnVuY3Rpb25zCi0gICAgICAtIFJl
bW92ZWQgbGFuZ3VhZ2Ugc3RhdGluZyB0aGF0IHRleHR1cmUgcGFyYW1ldGVycyB3ZXJlIHJlc2V0
IHRvCi0gICAgICAgIGRlZmF1bHRzCi0KLSAgICBSZXZpc2lvbiA4LCAyMDEwLzA1LzE4IChibWVy
cnkpCi0gICAgICAtIEFkZGVkIGlzc3VlIGFib3V0IEVHTGltYWdlCi0gICAgICAtIE1hcmtlZCBp
c3N1ZSAxNCBhcyByZXNvbHZlZAotCi0gICAgUmV2aXNpb24gNywgMjAxMC8wNS8wNCAoYm1lcnJ5
KQotICAgICAgLSBSZW1vdmVkIHNvbWUgbGluZ2VyaW5nIDxmb3JtYXQ+LCA8dHlwZT4gcGFyYW1l
dGVycyB0byB0aGUgbmV3Ci0gICAgICAgIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBoYXZlIGJlZW4g
cmVtb3ZlZCBpbiByZXZpc2lvbiA0Ci0gICAgICAtIFRyaXZpYWwgdHlwbyBmaXhlcwotCi0gICAg
UmV2aXNpb24gNiwgMjAxMC8wMi8xOCAoYm1lcnJ5KQotICAgICAgLSBSZXNvbHZlZCBpc3N1ZXMg
NSwgNiBhbmQgMTgKLSAgICAgIC0gQWRkZWQgTXVsdGlUZXhTdG9yYWdlKiBmdW5jdGlvbnMgZm9y
IERTQSBpbnRlcmFjdGlvbgotICAgICAgLSBBZGRlZCBlcnJvciBmb3IgdGV4dHVyZS10YXJnZXQg
bWlzbWF0Y2ggaW4gRFNBCi0gICAgICAtIEFsbG93ZWQgVGV4U3RvcmFnZSogdG8gYmUgY2FsbGVk
IGFnYWluCi0KLSAgICBSZXZpc2lvbiA1LCAyMDEwLzAxLzI1IChibWVycnkpCi0gICAgICAtIEFk
ZGVkIHRvIGNvbnRyaWJ1dG9ycyBsaXN0Ci0gICAgICAtIFJlcXVpcmUgT3BlbkdMIDEuMiwgdG8g
c2ltcGxpZnkgaW50ZXJhY3Rpb25zIHdpdGgKLSAgICAgICAgVEVYVFVSRV9CQVNFX0xFVkVML1RF
WFRVUkVfTUFYX0xFVkVMIGFuZCBDTEFNUF9UT19FREdFCi0gICAgICAtIENoYW5nZSBkZWZhdWx0
IHdyYXAgbW9kZXMgdG8gYWx3YXlzIGJlIENMQU1QX1RPX0VER0UKLSAgICAgIC0gQ2hhbmdlIGRl
ZmF1bHQgZmlsdGVycyB0byBhbHdheXMgYmUgTkVBUkVTVAotICAgICAgLSBNb3ZlZCBsYW5ndWFn
ZSBhYm91dCBnZW5lcmF0aW5nIG5ldyBsZXZlbHMgaW50byBhbiBpbnRlcmFjdGlvbiwKLSAgICAg
ICAgc2luY2UgaXQgY2FuIG9ubHkgaGFwcGVuIG9uIE9wZW5HTCBFUwotICAgICAgLSBBZGRlZCBp
bnRlcmFjdGlvbiB3aXRoIEVYVF9kaXJlY3Rfc3RhdGVfYWNjZXNzCi0gICAgICAtIEFkZGVkIGV4
dHJhIDxpbnRlcm5hbGZvcm1hdHM+IGZvciBHTCBFUyB3aGVuIE9FU19kZXB0aF90ZXh0dXJlLAot
ICAgICAgICBPRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwgYW5kIEVYVF90ZXh0dXJlX3R5cGVfMl8x
MF8xMF8xMF9SRVYgYXJlCi0gICAgICAgIHByZXNlbnQuCi0gICAgICAtIE1pbm9yIG5vbi1mdW5j
dGlvbmFsIHdvcmRpbmcgZml4ZXMgYW5kIHR5cG9zCi0gICAgICAtIFJlc29sdmVkIGlzc3VlIDE2
Ci0gICAgICAtIEFkZGVkIGlzc3VlcyAxNy0xOQotCi0gICAgUmV2aXNpb24gNCwgMjAxMC8wMS8x
MyAoYm1lcnJ5KQotICAgICAgLSBDaGFuZ2VkIHN1ZmZpeCBmcm9tIEFSTSB0byBFWFQKLSAgICAg
IC0gQWRkZWQgbGlzdCBvZiBjb250cmlidXRvcnMKLSAgICAgIC0gQWRkZWQgbGFuZ3VhZ2UgdG8g
Zm9yY2UgdGhlIHRleHR1cmUgdG8gYWx3YXlzIGJlIGNvbXBsZXRlCi0gICAgICAtIFJlbW92ZWQg
PGZvcm1hdD4gYW5kIDx0eXBlPiBhcmd1bWVudHMKLSAgICAgIC0gQWRkZWQgaXNzdWVzIDE0LTE2
Ci0gICAgICAtIFJlb3BlbmVkIGlzc3VlIDIKLSAgICAgIC0gUmVmb3JtYXR0ZWQgaXNzdWVzIHRv
IHNlcGFyYXRlIHJlc29sdXRpb24gYW5kIGRpc2N1c3Npb24KLSAgICAgIC0gUmVzb2x2ZWQgaXNz
dWVzIDEsIDkgYW5kIDExLTEzCi0gICAgICAtIEZpeGVkIHRoZSBtYXggbnVtYmVyIG9mIGxldmVs
cyBpbiBhIGN1YmUgbWFwIGFycmF5Ci0KLSAgICBSZXZpc2lvbiAzLCAyMDA5LzEyLzE3IChibWVy
cnkpCi0gICAgICAtIEFkZGVkIG1pc3NpbmcgdmVuZG9yIHN1ZmZpeCB0byBURVhUVVJFX0lNTVVU
QUJMRV9GT1JNQVRfQVJNCi0gICAgICAtIFJld3JpdHRlbiB0byBhZ2FpbnN0IGRlc2t0b3AgT3Bl
bkdMCi0gICAgICAtIEFkZGVkIHByb3RvdHlwZXMgZm9yIDFEIGFuZCBtdWx0aXNhbXBsZSBzdG9y
YWdlIGZ1bmN0aW9ucwotICAgICAgLSBBZGRlZCBpc3N1ZXMgOC0xMwotCi0gICAgUmV2aXNpb24g
MiwgMjAwOS8wOC8yMCAoYm1lcnJ5KQotICAgICAgLSBSZXNvbHZlZCBpc3N1ZSAyIChubyBib3Jk
ZXIgcGFyYW1ldGVyKQotICAgICAgLSBSZXNvbHZlZCBpc3N1ZSA0IChtZXRhZGF0YSBiZWNvbWVz
IGltbXV0YWJsZSkKLSAgICAgIC0gQWRkZWQgaW50ZXJhY3Rpb24gd2l0aCBPRVNfdGV4dHVyZV9j
dWJlX21hcAotICAgICAgLSBBZGRlZCBlcnJvciBpZiB3aWR0aCAhPSBoZWlnaHQgaW4gYSBjdWJl
IG1hcAotICAgICAgLSBBZGRlZCBpc3N1ZXMgNS03Ci0KLSAgICBSZXZpc2lvbiAxLCAyMDA5LzA1
LzA2IChibWVycnkpCi0gICAgICAtIEZpcnN0IGRyYWZ0CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9nZW5lcmF0ZV93aW5ydF9wcm9qZWN0cy5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9nZW5lcmF0ZV93aW5ydF9wcm9qZWN0cy5weQkocmV2aXNpb24gMjA4
MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZ2VuZXJhdGVfd2lucnRfcHJvamVjdHMu
cHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw0MSArMCwwIEBACi0jIENvcHlyaWdodCAoYykgMjAxMy0y
MDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKLSMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLQotIyBUaGlzIHNjcmlw
dCBnZW5lcmF0ZXMgdmlzdWFsIHN0dWRpbyBwcm9qZWN0cyB0aGF0IGNhbiBiZSB1c2VkIG9uIFdp
blJUCi0KLWltcG9ydCBvcwotaW1wb3J0IHN5cwotCi1zY3JpcHRfZGlyID0gb3MucGF0aC5qb2lu
KG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICdidWlsZCcpCi1hbmdsZV9kaXIgPSBvcy5wYXRo
Lm5vcm1wYXRoKG9zLnBhdGguam9pbihzY3JpcHRfZGlyLCBvcy5wYXJkaXIpKQotZ3lwX2RpciA9
IG9zLnBhdGguam9pbihhbmdsZV9kaXIsICd0aGlyZF9wYXJ0eScsICdneXAnKQotCi1neXBfZ2Vu
ZXJhdG9ycyA9ICJtc3ZzIgotbXN2c192ZXJzaW9uID0gIjIwMTNlIgotCi1kZWYgZ2VuZXJhdGVQ
cm9qZWN0cyhnZW5lcmF0aW9uX2RpciwgYnVpbGRfd2lucGhvbmUpOgotICAgIGd5cF9jbWQgPSBv
cy5wYXRoLmpvaW4oZ3lwX2RpciwgJ2d5cCcpCi0gICAgZ3lwX2NtZCArPSAnIC0taWdub3JlLWVu
dmlyb25tZW50JwotICAgIGd5cF9jbWQgKz0gJyAtLWRlcHRoPS4nCi0gICAgZ3lwX2NtZCArPSAn
IC0taW5jbHVkZT0nICsgb3MucGF0aC5qb2luKHNjcmlwdF9kaXIsICdjb21tb24uZ3lwaScpCi0g
ICAgZ3lwX2NtZCArPSAnIC0tZ2VuZXJhdG9yLW91dHB1dD0nICsgZ2VuZXJhdGlvbl9kaXIKLSAg
ICBneXBfY21kICs9ICcgLS1mb3JtYXQ9JyArIGd5cF9nZW5lcmF0b3JzCi0gICAgZ3lwX2NtZCAr
PSAnIC1HIG1zdnNfdmVyc2lvbj0nICsgbXN2c192ZXJzaW9uCi0gICAgZ3lwX2NtZCArPSAnIC1E
IGFuZ2xlX3VzZV9jb21taXRfaWQ9MCcKLSAgICBneXBfY21kICs9ICcgLUQgYW5nbGVfYnVpbGRf
d2lucnQ9MScKLSAgICBneXBfY21kICs9ICcgLUQgYW5nbGVfYnVpbGRfd2lucGhvbmU9JyArICgn
MScgaWYgYnVpbGRfd2lucGhvbmUgZWxzZSAnMCcpCi0gICAgZ3lwX2NtZCArPSAnIC1EIGFuZ2xl
X2VuYWJsZV9kM2Q5PTAnCi0gICAgZ3lwX2NtZCArPSAnIC1EIGFuZ2xlX2VuYWJsZV9nbD0wJwot
ICAgIGd5cF9jbWQgKz0gJyAtRCBhbmdsZV9zdGFuZGFsb25lPTEnCi0gICAgZ3lwX2NtZCArPSAn
ICcgKyBvcy5wYXRoLmpvaW4oc2NyaXB0X2RpciwgJ2FuZ2xlLmd5cCcpCi0KLSAgICBwcmludCAn
R2VuZXJhdGluZyBwcm9qZWN0cyB0byAnICsgZ2VuZXJhdGlvbl9kaXIgKyAnIGZyb20gZ3lwIGZp
bGVzLi4uJwotICAgIHByaW50IGd5cF9jbWQKLSAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICBv
cy5zeXN0ZW0oZ3lwX2NtZCkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICAjIEdl
bmVyYXRlIFdpbmRvd3MgOC4xIHByb2plY3RzCi0gICAgZ2VuZXJhdGVQcm9qZWN0cygid2lucnQv
OC4xL3dpbmRvd3MiLCBGYWxzZSk7Ci0gICAgZ2VuZXJhdGVQcm9qZWN0cygid2lucnQvOC4xL3dp
bmRvd3NwaG9uZSIsIFRydWUpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvRUdML2VnbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvRUdML2VnbC5oCShyZXZpc2lvbiAyMDgwMjEp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0VHTC9lZ2wuaAkod29ya2luZyBj
b3B5KQpAQCAtNiw3ICs2LDcgQEAKICNlbmRpZgogCiAvKgotKiogQ29weXJpZ2h0IChjKSAyMDEz
LTIwMTQgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorKiogQ29weXJpZ2h0IChjKSAyMDEzLTIwMTUg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgogKioKICoqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50
ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCiAqKiBjb3B5IG9m
IHRoaXMgc29mdHdhcmUgYW5kL29yIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl
CkBAIC0zMyw3ICszMyw3IEBACiAqKiB1c2VkIHRvIG1ha2UgdGhlIGhlYWRlciwgYW5kIHRoZSBo
ZWFkZXIgY2FuIGJlIGZvdW5kIGF0CiAqKiAgIGh0dHA6Ly93d3cub3BlbmdsLm9yZy9yZWdpc3Ry
eS8KICoqCi0qKiBLaHJvbm9zICRSZXZpc2lvbjogMjkzMTggJCBvbiAkRGF0ZTogMjAxNS0wMS0w
MiAwMzoxNjoxMCAtMDgwMCAoRnJpLCAwMiBKYW4gMjAxNSkgJAorKiogS2hyb25vcyAkUmV2aXNp
b246IDMxNTY2ICQgb24gJERhdGU6IDIwMTUtMDYtMjMgMDg6NDg6NDggLTA3MDAgKFR1ZSwgMjMg
SnVuIDIwMTUpICQKICovCiAKICNpbmNsdWRlIDxFR0wvZWdscGxhdGZvcm0uaD4KQEAgLTQ0LDcg
KzQ0LDcgQEAKICNkZWZpbmUgRUdMX1NPRlRfTElOS0lORyAwCiAjZW5kaWYKIAotLyogR2VuZXJh
dGVkIG9uIGRhdGUgMjAxNTAxMDIgKi8KKy8qIEdlbmVyYXRlZCBvbiBkYXRlIDIwMTUwNjIzICov
CiAKIC8qIEdlbmVyYXRlZCBDIGhlYWRlciBmb3I6CiAgKiBBUEk6IGVnbApJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9FR0wvZWdsZXh0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9FR0wvZWdsZXh0LmgJKHJldmlzaW9uIDIwODAy
MSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvRUdML2VnbGV4dC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MjYsNiArNTI2LDExIEBACiAjZGVmaW5lIEVHTF9QTEFURk9STV9BTkdM
RV9UWVBFX09QRU5HTEVTX0FOR0xFIDB4MzIwRQogI2VuZGlmIC8qIEVHTF9BTkdMRV9wbGF0Zm9y
bV9hbmdsZV9vcGVuZ2wgKi8KIAorI2lmbmRlZiBFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfbnVs
bAorI2RlZmluZSBFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfbnVsbCAxCisjZGVmaW5lIEVHTF9Q
TEFURk9STV9BTkdMRV9UWVBFX05VTExfQU5HTEUgMHgzM0FFCisjZW5kaWYgLyogRUdMX0FOR0xF
X3BsYXRmb3JtX2FuZ2xlX251bGwgKi8KKwogI2lmbmRlZiBFR0xfQU5HTEVfd2luZG93X2ZpeGVk
X3NpemUKICNkZWZpbmUgRUdMX0FOR0xFX3dpbmRvd19maXhlZF9zaXplIDEKICNkZWZpbmUgRUdM
X0ZJWEVEX1NJWkVfQU5HTEUgICAgICAgICAgICAgIDB4MzIwMQpAQCAtNTYxLDEyICs1NjYsMjIg
QEAKICNkZWZpbmUgRUdMX0QzRF9URVhUVVJFX1NVQlJFU09VUkNFX0lEX0FOR0xFIDB4M0FBQgog
dHlwZWRlZiBFR0xCb29sZWFuKEVHTEFQSUVOVFJZUCBQRk5FR0xDUkVBVEVTVFJFQU1QUk9EVUNF
UkQzRFRFWFRVUkVOVjEyQU5HTEVQUk9DKShFR0xEaXNwbGF5IGRweSwgRUdMU3RyZWFtS0hSIHN0
cmVhbSwgY29uc3QgRUdMQXR0cmliICphdHRyaWJfbGlzdCk7CiB0eXBlZGVmIEVHTEJvb2xlYW4o
RUdMQVBJRU5UUllQIFBGTkVHTFNUUkVBTVBPU1REM0RURVhUVVJFTlYxMkFOR0xFUFJPQykoRUdM
RGlzcGxheSBkcHksIEVHTFN0cmVhbUtIUiBzdHJlYW0sIHZvaWQgKnRleHR1cmUsIGNvbnN0IEVH
TEF0dHJpYiAqYXR0cmliX2xpc3QpOwotI2lmZGVmIEVHTF9FWFRfUFJPVE9UWVBFUworI2lmZGVm
IEVHTF9FR0xFWFRfUFJPVE9UWVBFUwogRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWds
Q3JlYXRlU3RyZWFtUHJvZHVjZXJEM0RUZXh0dXJlTlYxMkFOR0xFKEVHTERpc3BsYXkgZHB5LCBF
R0xTdHJlYW1LSFIgc3RyZWFtLCBjb25zdCBFR0xBdHRyaWIgKmF0dHJpYl9saXN0KTsKIEVHTEFQ
SSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFN0cmVhbVBvc3REM0RUZXh0dXJlTlYxMkFOR0xF
KEVHTERpc3BsYXkgZHB5LCBFR0xTdHJlYW1LSFIgc3RyZWFtLCB2b2lkICp0ZXh0dXJlLCBjb25z
dCBFR0xBdHRyaWIgKmF0dHJpYl9saXN0KTsKICNlbmRpZgogI2VuZGlmIC8qIEVHTF9BTkdMRV9z
dHJlYW1fcHJvZHVjZXJfZDNkX3RleHR1cmVfbnYxMiAqLwogCisjaWZuZGVmIEVHTF9BTkdMRV9j
cmVhdGVfY29udGV4dF93ZWJnbF9jb21wYXRpYmlsaXR5CisjZGVmaW5lIEVHTF9BTkdMRV9jcmVh
dGVfY29udGV4dF93ZWJnbF9jb21wYXRpYmlsaXR5IDEKKyNkZWZpbmUgRUdMX0NPTlRFWFRfV0VC
R0xfQ09NUEFUSUJJTElUWV9BTkdMRSAweDNBQUMKKyNlbmRpZiAvKiBFR0xfQU5HTEVfY3JlYXRl
X2NvbnRleHRfd2ViZ2xfY29tcGF0aWJpbGl0eSAqLworCisjaWZuZGVmIEVHTF9DSFJPTUlVTV9j
cmVhdGVfY29udGV4dF9iaW5kX2dlbmVyYXRlc19yZXNvdXJjZQorI2RlZmluZSBFR0xfQ0hST01J
VU1fY3JlYXRlX2NvbnRleHRfYmluZF9nZW5lcmF0ZXNfcmVzb3VyY2UgMQorI2RlZmluZSBFR0xf
Q09OVEVYVF9CSU5EX0dFTkVSQVRFU19SRVNPVVJDRV9DSFJPTUlVTSAweDNBQUQKKyNlbmRpZiAv
KiBFR0xfQ0hST01JVU1fY3JlYXRlX2NvbnRleHRfYmluZF9nZW5lcmF0ZXNfcmVzb3VyY2UgKi8K
KwogI2lmbmRlZiBFR0xfQVJNX3BpeG1hcF9tdWx0aXNhbXBsZV9kaXNjYXJkCiAjZGVmaW5lIEVH
TF9BUk1fcGl4bWFwX211bHRpc2FtcGxlX2Rpc2NhcmQgMQogI2RlZmluZSBFR0xfRElTQ0FSRF9T
QU1QTEVTX0FSTSAgICAgICAgICAgMHgzMjg2CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9pbmNsdWRlL0dMRVMyL2dsMmV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL2luY2x1ZGUvR0xFUzIvZ2wyZXh0LmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xFUzIvZ2wyZXh0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTgyMSw2ICs4MjEsMjcxIEBACiAjZW5kaWYKICNlbmRpZiAvKiBHTF9BTkdMRV9mcmFtZWJ1
ZmZlcl9ibGl0ICovCiAKKyNpZm5kZWYgR0xfQU5HTEVfd2ViZ2xfY29tcGF0aWJpbGl0eQorI2Rl
ZmluZSBHTF9BTkdMRV93ZWJnbF9jb21wYXRpYmlsaXR5IDEKK3R5cGVkZWYgR0xib29sZWFuKEdM
X0FQSUVOVFJZUCBQRk5HTEVOQUJMRUVYVEVOU0lPTkFOR0xFUFJPQykgKGNvbnN0IEdMY2hhciAq
bmFtZSk7CisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCBHTGJvb2xlYW4g
R0xfQVBJRU5UUlkgZ2xFbmFibGVFeHRlbnNpb25BTkdMRSAoY29uc3QgR0xjaGFyICpuYW1lKTsK
KyNlbmRpZgorI2VuZGlmIC8qIEdMX0FOR0xFX3dlYmdsX2NvbXBhdGliaWxpdHkgKi8KKworI2lm
bmRlZiBHTF9DSFJPTUlVTV9mcmFtZWJ1ZmZlcl9taXhlZF9zYW1wbGVzCisjZGVmaW5lIEdMX0NI
Uk9NSVVNX2ZyYW1idWZmZXJfbWl4ZWRfc2FtcGxlcyAxCisjZGVmaW5lIEdMX0NPVkVSQUdFX01P
RFVMQVRJT05fQ0hST01JVU0gMHg5MzMyCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TENPVkVSQUdFTU9EVUxBVElPTkNIUk9NSVVNUFJPQykgKEdMZW51bSBjb21wb25lbnRzKTsKKyNp
ZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xD
b3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTShHTGVudW0gY29tcG9uZW50cyk7CisjZW5kaWYKKyNl
bmRpZiAvKiBHTF9DSFJPTUlVTV9mcmFtZWJ1ZmZlcl9taXhlZF9zYW1wbGVzICovCisKKyNpZm5k
ZWYgR0xfQ0hST01JVU1fYmluZF9nZW5lcmF0ZXNfcmVzb3VyY2UKKyNkZWZpbmUgR0xfQ0hST01J
VU1fYmluZF9nZW5lcmF0ZXNfcmVzb3VyY2UgMQorI2RlZmluZSBHTF9CSU5EX0dFTkVSQVRFU19S
RVNPVVJDRV9DSFJPTUlVTSAweDkyNDQKKyNlbmRpZiAvKiBHTF9DSFJPTUlVTV9iaW5kX2dlbmVy
YXRlc19yZXNvdXJjZSAqLworCisvLyBuZWVkZWQgYnkgTlZfcGF0aF9yZW5kZXJpbmcgKGFuZCB0
aHVzIENIUk9NSVVNX3BhdGhfcmVuZGVyaW5nKQorLy8gYnV0IENIUk9NSVVNX3BhdGhfcmVuZGVy
aW5nIG9ubHkgbmVlZHMgTWF0cml4TG9hZGZFWFQsIE1hdHJpeExvYWRJZGVudGl0eUVYVAorI2lm
bmRlZiBHTF9FWFRfZGlyZWN0X3N0YXRlX2FjY2VzcworI2RlZmluZSBHTF9FWFRfZGlyZWN0X3N0
YXRlX2FjY2VzcyAxCit0eXBlZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBGTkdMTUFUUklYTE9BREZF
WFRQUk9DKShHTGVudW0gbWF0cml4TW9kZSwgY29uc3QgR0xmbG9hdCAqbSk7Cit0eXBlZGVmIHZv
aWQoR0xfQVBJRU5UUllQIFBGTkdMTUFUUklYTE9BRElERU5USVRZRVhUUFJPQykoR0xlbnVtIG1h
dHJpeE1vZGUpOworI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbE1hdHJpeExvYWRmRVhUKEdMZW51bSBtYXRyaXhNb2RlLCBjb25zdCBHTGZs
b2F0ICptKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbE1hdHJpeExvYWRJZGVudGl0
eUVYVChHTGVudW0gbWF0cml4TW9kZSk7CisjZW5kaWYKKyNlbmRpZiAvKiBHTF9FWFRfZGlyZWN0
X3N0YXRlX2FjY2VzcyAqLworCisjaWZuZGVmIEdMX0NIUk9NSVVNX3BhdGhfcmVuZGVyaW5nCisj
ZGVmaW5lIEdMX0NIUk9NSVVNX3BhdGhfcmVuZGVyaW5nIDEKKyNkZWZpbmUgR0xfUEFUSF9NT0RF
TFZJRVdfQ0hST01JVU0gMHgxNzAwCisjZGVmaW5lIEdMX1BBVEhfUFJPSkVDVElPTl9DSFJPTUlV
TSAweDE3MDEKKyNkZWZpbmUgR0xfQ0xPU0VfUEFUSF9DSFJPTUlVTSAweDAwCisjZGVmaW5lIEdM
X01PVkVfVE9fQ0hST01JVU0gMHgwMgorI2RlZmluZSBHTF9MSU5FX1RPX0NIUk9NSVVNIDB4MDQK
KyNkZWZpbmUgR0xfUVVBRFJBVElDX0NVUlZFX1RPX0NIUk9NSVVNIDB4MEEKKyNkZWZpbmUgR0xf
Q1VCSUNfQ1VSVkVfVE9fQ0hST01JVU0gMHgwQworI2RlZmluZSBHTF9DT05JQ19DVVJWRV9UT19D
SFJPTUlVTSAweDFBCisjZGVmaW5lIEdMX1BBVEhfTU9ERUxWSUVXX01BVFJJWF9DSFJPTUlVTSAw
eDBCQTYKKyNkZWZpbmUgR0xfUEFUSF9QUk9KRUNUSU9OX01BVFJJWF9DSFJPTUlVTSAweDBCQTcK
KyNkZWZpbmUgR0xfUEFUSF9TVFJPS0VfV0lEVEhfQ0hST01JVU0gMHg5MDc1CisjZGVmaW5lIEdM
X1BBVEhfRU5EX0NBUFNfQ0hST01JVU0gMHg5MDc2CisjZGVmaW5lIEdMX1BBVEhfSk9JTl9TVFlM
RV9DSFJPTUlVTSAweDkwNzkKKyNkZWZpbmUgR0xfUEFUSF9NSVRFUl9MSU1JVF9DSFJPTUlVTSAw
eDkwN2EKKyNkZWZpbmUgR0xfUEFUSF9TVFJPS0VfQk9VTkRfQ0hST01JVU0gMHg5MDg2CisjZGVm
aW5lIEdMX0ZMQVRfQ0hST01JVU0gMHgxRDAwCisjZGVmaW5lIEdMX1NRVUFSRV9DSFJPTUlVTSAw
eDkwYTMKKyNkZWZpbmUgR0xfUk9VTkRfQ0hST01JVU0gMHg5MGE0CisjZGVmaW5lIEdMX0JFVkVM
X0NIUk9NSVVNIDB4OTBBNgorI2RlZmluZSBHTF9NSVRFUl9SRVZFUlRfQ0hST01JVU0gMHg5MEE3
CisjZGVmaW5lIEdMX0NPVU5UX1VQX0NIUk9NSVVNIDB4OTA4OAorI2RlZmluZSBHTF9DT1VOVF9E
T1dOX0NIUk9NSVVNIDB4OTA4OQorI2RlZmluZSBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTSAweDkw
OEIKKyNkZWZpbmUgR0xfQk9VTkRJTkdfQk9YX0NIUk9NSVVNIDB4OTA4RAorI2RlZmluZSBHTF9C
T1VORElOR19CT1hfT0ZfQk9VTkRJTkdfQk9YRVNfQ0hST01JVU0gMHg5MDlDCisjZGVmaW5lIEdM
X0VZRV9MSU5FQVJfQ0hST01JVU0gMHgyNDAwCisjZGVmaW5lIEdMX09CSkVDVF9MSU5FQVJfQ0hS
T01JVU0gMHgyNDAxCisjZGVmaW5lIEdMX0NPTlNUQU5UX0NIUk9NSVVNIDB4ODU3NgorI2RlZmlu
ZSBHTF9UUkFOU0xBVEVfWF9DSFJPTUlVTSAweDkwOEUKKyNkZWZpbmUgR0xfVFJBTlNMQVRFX1lf
Q0hST01JVU0gMHg5MDhGCisjZGVmaW5lIEdMX1RSQU5TTEFURV8yRF9DSFJPTUlVTSAweDkwOTAK
KyNkZWZpbmUgR0xfVFJBTlNMQVRFXzNEX0NIUk9NSVVNIDB4OTA5MQorI2RlZmluZSBHTF9BRkZJ
TkVfMkRfQ0hST01JVU0gMHg5MDkyCisjZGVmaW5lIEdMX0FGRklORV8zRF9DSFJPTUlVTSAweDkw
OTQKKyNkZWZpbmUgR0xfVFJBTlNQT1NFX0FGRklORV8yRF9DSFJPTUlVTSAweDkwOTYKKyNkZWZp
bmUgR0xfVFJBTlNQT1NFX0FGRklORV8zRF9DSFJPTUlVTSAweDkwOTgKK3R5cGVkZWYgdm9pZChH
TF9BUElFTlRSWVAgUEZOR0xNQVRSSVhMT0FERkNIUk9NSVVNUFJPQykoR0xlbnVtIG1hdHJpeE1v
ZGUsIGNvbnN0IEdMZmxvYXQgKm0pOwordHlwZWRlZiB2b2lkKEdMX0FQSUVOVFJZUCBQRk5HTE1B
VFJJWExPQURJREVOVElUWUNIUk9NSVVNUFJPQykoR0xlbnVtIG1hdHJpeE1vZGUpOwordHlwZWRl
ZiBHTHVpbnQoR0xfQVBJRU5UUllQIFBGTkdMR0VOUEFUSFNDSFJPTUlVTVBST0MpKEdMc2l6ZWkg
cmFuZ2UpOwordHlwZWRlZiB2b2lkKEdMX0FQSUVOVFJZUCBQRk5HTERFTEVURVBBVEhTQ0hST01J
VU1QUk9DKShHTHVpbnQgcGF0aCwgR0xzaXplaSByYW5nZSk7Cit0eXBlZGVmIEdMYm9vbGVhbihH
TF9BUElFTlRSWVAgUEZOR0xJU1BBVEhDSFJPTUlVTVBST0MpKEdMdWludCBwYXRoKTsKK3R5cGVk
ZWYgdm9pZChHTF9BUElFTlRSWVAgUEZOR0xQQVRIQ09NTUFORFNDSFJPTUlVTVBST0MpKEdMdWlu
dCBwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBudW1Db21tYW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgKmNvbW1hbmRzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBudW1Db29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gY29vcmRUeXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqY29vcmRz
KTsKK3R5cGVkZWYgdm9pZChHTF9BUElFTlRSWVAgUEZOR0xQQVRIUEFSQU1FVEVSSUNIUk9NSVVN
UFJPQykoR0x1aW50IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xpbnQgdmFsdWUpOwordHlwZWRlZiB2
b2lkKEdMX0FQSUVOVFJZUCBQRk5HTFBBVEhQQVJBTUVURVJGQ0hST01JVU1QUk9DKShHTHVpbnQg
cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHZhbHVlKTsKK3R5cGVkZWYgdm9pZChH
TF9BUElFTlRSWVAgUEZOR0xHRVRQQVRIUEFSQU1FVEVSSVZDSFJPTUlVTVBST0MpKEdMdWludCBw
YXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnZhbHVlKTsKK3R5cGVkZWYg
dm9pZChHTF9BUElFTlRSWVAgUEZOR0xHRVRQQVRIUEFSQU1FVEVSRlZDSFJPTUlVTVBST0MpKEdM
dWludCBwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqdmFsdWUpOwor
dHlwZWRlZiB2b2lkKEdMX0FQSUVOVFJZUCBQRk5HTFBBVEhTVEVOQ0lMRlVOQ0NIUk9NSVVNUFJP
QykoR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spOwordHlwZWRlZiB2b2lkKEdM
X0FQSUVOVFJZUCBQRk5HTFNURU5DSUxGSUxMUEFUSENIUk9NSVVNUFJPQykoR0x1aW50IHBhdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZmlsbE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzayk7Cit0eXBlZGVmIHZvaWQoR0xf
QVBJRU5UUllQIFBGTkdMU1RFTkNJTFNUUk9LRVBBVEhDSFJPTUlVTVBST0MpKEdMdWludCBwYXRo
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCByZWZlcmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrKTsKK3R5cGVkZWYgdm9p
ZChHTF9BUElFTlRSWVAgUEZOR0xDT1ZFUkZJTExQQVRIQ0hST01JVU1QUk9DKShHTHVpbnQgcGF0
aCwgR0xlbnVtIGNvdmVyTW9kZSk7Cit0eXBlZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBGTkdMQ09W
RVJTVFJPS0VQQVRIQ0hST01JVU1QUk9DKShHTHVpbnQgcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSk7
Cit0eXBlZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBGTkdMU1RFTkNJTFRIRU5DT1ZFUkZJTExQQVRI
Q0hST01JVU1QUk9DKShHTHVpbnQgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSk7
Cit0eXBlZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBGTkdMU1RFTkNJTFRIRU5DT1ZFUlNUUk9LRVBB
VEhDSFJPTUlVTVBST0MpKEdMdWludCBwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVu
Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292
ZXJNb2RlKTsKK3R5cGVkZWYgdm9pZChHTF9BUElFTlRSWVAgUEZOR0xDT1ZFUkZJTExQQVRISU5T
VEFOQ0VEQ0hST01JVU1QUk9DKShHTHNpemVpIG51bVBhdGhzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
YXRoTmFtZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IHBhdGhCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFs
dWVzKTsKK3R5cGVkZWYgdm9pZChHTF9BUElFTlRSWVAgUEZOR0xDT1ZFUlNUUk9LRVBBVEhJTlNU
QU5DRURDSFJPTUlVTVBST0MpKAorICAgIEdMc2l6ZWkgbnVtUGF0aHMsCisgICAgR0xlbnVtIHBh
dGhOYW1lVHlwZSwKKyAgICBjb25zdCB2b2lkICpwYXRocywKKyAgICBHTHVpbnQgcGF0aEJhc2Us
CisgICAgR0xlbnVtIGNvdmVyTW9kZSwKKyAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICBj
b25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwordHlwZWRlZiB2b2lkKEdMX0FQSUVOVFJZ
UCBQRk5HTFNURU5DSUxGSUxMUEFUSElOU1RBTkNFRENIUk9NSVVNUFJPQykoCisgICAgR0xzaXpl
aSBudW1QYXRocywKKyAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAgIGNvbnN0IHZvaWQgKnBh
dGhzLAorICAgIEdMdWludCBwYXRoQmFzZSwKKyAgICBHTGVudW0gZmlsbE1vZGUsCisgICAgR0x1
aW50IG1hc2ssCisgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgY29uc3QgR0xmbG9hdCAq
dHJhbnNmb3JtVmFsdWVzKTsKK3R5cGVkZWYgdm9pZChHTF9BUElFTlRSWVAgUEZOR0xTVEVOQ0lM
U1RST0tFUEFUSElOU1RBTkNFRENIUk9NSVVNUFJPQykoCisgICAgR0xzaXplaSBudW1QYXRocywK
KyAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAgIGNvbnN0IHZvaWQgKnBhdGhzLAorICAgIEdM
dWludCBwYXRoQmFzZSwKKyAgICBHTGludCByZWZlcmVuY2UsCisgICAgR0x1aW50IG1hc2ssCisg
ICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFs
dWVzKTsKK3R5cGVkZWYgdm9pZChHTF9BUElFTlRSWVAgUEZOR0xTVEVOQ0lMVEhFTkNPVkVSRklM
TFBBVEhJTlNUQU5DRURDSFJPTUlVTVBST0MpKAorICAgIEdMc2l6ZWkgbnVtUGF0aHMsCisgICAg
R0xlbnVtIHBhdGhOYW1lVHlwZSwKKyAgICBjb25zdCB2b2lkICpwYXRocywKKyAgICBHTHVpbnQg
cGF0aEJhc2UsCisgICAgR0xlbnVtIGZpbGxNb2RlLAorICAgIEdMdWludCBtYXNrLAorICAgIEdM
ZW51bSBjb3Zlck1vZGUsCisgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgY29uc3QgR0xm
bG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKK3R5cGVkZWYgdm9pZChHTF9BUElFTlRSWVAgUEZOR0xT
VEVOQ0lMVEhFTkNPVkVSU1RST0tFUEFUSElOU1RBTkNFRENIUk9NSVVNUFJPQykoCisgICAgR0xz
aXplaSBudW1QYXRocywKKyAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAgIGNvbnN0IHZvaWQg
KnBhdGhzLAorICAgIEdMdWludCBwYXRoQmFzZSwKKyAgICBHTGludCByZWZlcmVuY2UsCisgICAg
R0x1aW50IG1hc2ssCisgICAgR0xlbnVtIGNvdmVyTW9kZSwKKyAgICBHTGVudW0gdHJhbnNmb3Jt
VHlwZSwKKyAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOworCit0eXBlZGVmIHZv
aWQoR0xfQVBJRU5UUlkgUEZOR0xCSU5ERlJBR01FTlRJTlBVVExPQ0FUSU9OQ0hST01JVU1QUk9D
KShHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xjaGFyICpuYW1lKTsKK3R5cGVkZWYgdm9pZChHTF9BUElFTlRSWVAgUEZOR0xQ
Uk9HUkFNUEFUSEZSQUdNRU5USU5QVVRHRU5DSFJPTUlVTVBST0MpKEdMdWludCBwcm9ncmFtLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZ2Vu
TW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGNvbXBvbmVudHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICpjb2VmZnMpOworI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbE1hdHJpeExvYWRmQ0hST01JVU0oR0xlbnVtIG1hdHJp
eE1vZGUsIGNvbnN0IEdMZmxvYXQgKm0pOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGds
TWF0cml4TG9hZElkZW50aXR5Q0hST01JVU0oR0xlbnVtIG1hdHJpeE1vZGUpOworR0xfQVBJQ0FM
TCBHTHVpbnQgR0xfQVBJRU5UUlkgZ2xHZW5QYXRoc0NIUk9NSVVNKEdMc2l6ZWkgcmFuZ2UpOwor
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRGVsZXRlUGF0aHNDSFJPTUlVTShHTHVpbnQg
cGF0aCwgR0xzaXplaSByYW5nZSk7CitHTF9BUElDQUxMIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBn
bElzUGF0aENIUk9NSVVNKEdMdWludCBwYXRoKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbFBhdGhDb21tYW5kc0NIUk9NSVVNKEdMdWludCBwYXRoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1Db21tYW5kcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
dWJ5dGUgKmNvbW1hbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBudW1Db29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY29vcmRUeXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqY29vcmRz
KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFBhdGhQYXJhbWV0ZXJpQ0hST01JVU0o
R0x1aW50IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xpbnQgdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsUGF0aFBhcmFtZXRlcmZDSFJPTUlVTShHTHVpbnQgcGF0aCwgR0xlbnVt
IHBuYW1lLCBHTGZsb2F0IHZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdl
dFBhdGhQYXJhbWV0ZXJpdkNIUk9NSVVNKEdMdWludCBwYXRoLCBHTGVudW0gcG5hbWUsIEdMaW50
ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRQYXRoUGFyYW1ldGVy
ZnZDSFJPTUlVTShHTHVpbnQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICp2YWx1ZSk7CitH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQYXRoU3RlbmNpbEZ1bmNDSFJPTUlVTShHTGVu
dW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzayk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xTdGVuY2lsRmlsbFBhdGhDSFJPTUlVTShHTHVpbnQgcGF0aCwgR0xlbnVtIGZpbGxN
b2RlLCBHTHVpbnQgbWFzayk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xTdGVuY2ls
U3Ryb2tlUGF0aENIUk9NSVVNKEdMdWludCBwYXRoLCBHTGludCByZWZlcmVuY2UsIEdMdWludCBt
YXNrKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENvdmVyRmlsbFBhdGhDSFJPTUlV
TShHTHVpbnQgcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xDb3ZlclN0cm9rZVBhdGhDSFJPTUlVTShHTHVpbnQgcGF0aCwgR0xlbnVtIGNvdmVy
TW9kZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsVGhlbkNvdmVyRmls
bFBhdGhDSFJPTUlVTShHTHVpbnQgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSk7CitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aENIUk9NSVVNKEdMdWludCBw
YXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gY292ZXJNb2RlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENv
dmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTShHTHNpemVpIG51bVBhdGhzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwYXRoTmFtZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhC
YXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbENvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKEdMc2l6ZWkgbnVtUGF0
aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1
ZXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU3RlbmNpbEZpbGxQYXRoSW5zdGFu
Y2VkQ0hST01JVU0oR0xzaXplaSBudW1QYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB2b2lkICpwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBmaWxsTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5z
Zm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOworR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlV
TShHTHNpemVpIG51bVBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICpwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCByZWZlcmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJh
bnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWQorZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0
YW5jZWRDSFJPTUlVTShHTHNpemVpIG51bVBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNr
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292
ZXJNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKKworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZCitnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01J
VU0oR0xzaXplaSBudW1QYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ss
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNv
dmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOworCitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0oR0x1
aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFy
ICpuYW1lKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1QYXRoRnJhZ21l
bnRJbnB1dEdlbkNIUk9NSVVNKEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZ2VuTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGNvbXBvbmVudHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpjb2VmZnMpOworCisjZW5kaWYKKyNlbmRpZiAvKiBH
TF9DSFJPTUlVTV9wYXRoX3JlbmRlcmluZyAqLworCiAjaWZuZGVmIEdMX0FOR0xFX2ZyYW1lYnVm
ZmVyX211bHRpc2FtcGxlCiAjZGVmaW5lIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxl
IDEKICNkZWZpbmUgR0xfUkVOREVSQlVGRkVSX1NBTVBMRVNfQU5HTEUgICAgIDB4OENBQgpAQCAt
MTAwOSw2ICsxMjc0LDYxIEBACiAjZGVmaW5lIEdMX0FSTV9zaGFkZXJfZnJhbWVidWZmZXJfZmV0
Y2hfZGVwdGhfc3RlbmNpbCAxCiAjZW5kaWYgLyogR0xfQVJNX3NoYWRlcl9mcmFtZWJ1ZmZlcl9m
ZXRjaF9kZXB0aF9zdGVuY2lsICovCiAKKyNpZm5kZWYgR0xfQ0hST01JVU1fY29weV90ZXh0dXJl
CisjZGVmaW5lIEdMX0NIUk9NSVVNX2NvcHlfdGV4dHVyZSAxCit0eXBlZGVmIHZvaWQoR0xfQVBJ
RU5UUllQIFBGTkdMQ09QWVRFWFRVUkVDSFJPTUlVTVBST0MpKEdMdWludCBzb3VyY2VJZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IGRlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0VHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIHVucGFja0ZsaXBZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIHVucGFja1VubXVsdGlwbHlBbHBoYSk7Cit0eXBlZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBG
TkdMQ09QWVNVQlRFWFRVUkVDSFJPTUlVTVBST0MpKEdMdWludCBzb3VyY2VJZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IGRlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeW9mZnNldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiB1bnBhY2tGbGlwWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFja1ByZW11bHRpcGx5QWxwaGEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMYm9vbGVhbiB1bnBhY2tVbm11bHRpcGx5QWxwaGEpOworI2lmZGVmIEdMX0dMRVhUX1BST1RP
VFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENvcHlUZXh0dXJlQ0hST01JVU0o
R0x1aW50IHNvdXJjZUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgZGVzdElkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RUeXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
dW5wYWNrRmxpcFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMYm9vbGVhbiB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNrVW5tdWx0
aXBseUFscGhhKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENvcHlTdWJUZXh0dXJl
Q0hST01JVU0oR0x1aW50IHNvdXJjZUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZGVzdElkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zm
c2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFja0Zs
aXBZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFja1VubXVsdGlw
bHlBbHBoYSk7CisjZW5kaWYKKyNlbmRpZiAvKiBHTF9DSFJPTUlVTV9jb3B5X3RleHR1cmUgKi8K
KworI2lmbmRlZiBHTF9DSFJPTUlVTV9jb21wcmVzc2VkX2NvcHlfdGV4dHVyZQorI2RlZmluZSBH
TF9DSFJPTUlVTV9jb21wcmVzc2VkX2NvcHlfdGV4dHVyZSAxCit0eXBlZGVmIHZvaWQoR0xfQVBJ
RU5UUllQIFBGTkdMQ09NUFJFU1NFRENPUFlURVhUVVJFQ0hST01JVU1QUk9DKShHTHVpbnQgc291
cmNlSWQsIEdMdWludCBkZXN0SWQpOworI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENvbXByZXNzZWRDb3B5VGV4dHVyZUNIUk9NSVVNKEdM
dWludCBzb3VyY2VJZCwgR0x1aW50IGRlc3RJZCk7CisjZW5kaWYKKyNlbmRpZiAvKiBHTF9DSFJP
TUlVTV9jb21wcmVzc2VkX2NvcHlfdGV4dHVyZSAqLworCisjaWZuZGVmIEdMX0NIUk9NSVVNX3N5
bmNfcXVlcnkKKyNkZWZpbmUgR0xfQ0hST01JVU1fc3luY19xdWVyeSAxCisjZGVmaW5lIEdMX0NP
TU1BTkRTX0NPTVBMRVRFRF9DSFJPTUlVTSAgICAweDg0RjcKKyNlbmRpZiAgLyogR0xfQ0hST01J
VU1fc3luY19xdWVyeSAqLworCiAjaWZuZGVmIEdMX0RNUF9wcm9ncmFtX2JpbmFyeQogI2RlZmlu
ZSBHTF9ETVBfcHJvZ3JhbV9iaW5hcnkgMQogI2RlZmluZSBHTF9TTUFQSFMzMF9QUk9HUkFNX0JJ
TkFSWV9ETVAgICAgMHg5MjUxCkBAIC0yOTM1LDYgKzMyNTUsMTMyIEBACiAjZGVmaW5lIEdMX0NP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0xPU1NZX0RFQ09ERV9FVEMyX0VBQ19BTkdMRSAgICAgICAg
ICAgMHg5NjlBCiAjZW5kaWYgLyogR0xfQU5HTEVfbG9zc3lfZXRjX2RlY29kZSAqLwogCisjaWZu
ZGVmIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5CisjZGVmaW5lIEdMX0FOR0xFX3JvYnVz
dF9jbGllbnRfbWVtb3J5IDEKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUQk9P
TEVBTlZST0JVU1RBTkdMRSkgKEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVp
ICpsZW5ndGgsIEdMYm9vbGVhbiAqZGF0YSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQ
Rk5HTEdFVEJVRkZFUlBBUkFNRVRFUklWUk9CVVNUQU5HTEUpIChHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqcGFyYW1z
KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VURkxPQVRWUk9CVVNUQU5HTEUp
IChHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGZsb2F0
ICpkYXRhKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VURlJBTUVCVUZGRVJB
VFRBQ0hNRU5UUEFSQU1FVEVSSVZST0JVU1RBTkdMRSkgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBh
dHRhY2htZW50LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3Ro
LCBHTGludCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUSU5U
RUdFUlZST0JVU1RBTkdMRSkgKEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVp
ICpsZW5ndGgsIEdMaW50ICpkYXRhKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
R0VUUFJPR1JBTUlWUk9CVVNUQU5HTEUpIChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHBuYW1lLCBH
THNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnBhcmFtcyk7Cit0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFJFTkRFUkJVRkZFUlBBUkFNRVRFUklWUk9CVVNU
QU5HTEUpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xz
aXplaSAqbGVuZ3RoLCBHTGludCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMR0VUU0hBREVSSVZST0JVU1RBTkdMRSkgKEdMdWludCBzaGFkZXIsIEdMZW51bSBwbmFt
ZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpwYXJhbXMpOwordHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRURVhQQVJBTUVURVJGVlJPQlVTVEFOR0xF
KSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkg
Kmxlbmd0aCwgR0xmbG9hdCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMR0VUVEVYUEFSQU1FVEVSSVZST0JVU1RBTkdMRSkgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBw
bmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpwYXJhbXMpOwor
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRVTklGT1JNRlZST0JVU1RBTkdMRSkg
KEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCBHTHNpemVp
ICpsZW5ndGgsIEdMZmxvYXQgKnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQ
Rk5HTEdFVFVOSUZPUk1JVlJPQlVTVEFOR0xFKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnBhcmFtcyk7Cit0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFZFUlRFWEFUVFJJQkZWUk9CVVNUQU5H
TEUpIChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVp
ICpsZW5ndGgsIEdMZmxvYXQgKnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQ
Rk5HTEdFVFZFUlRFWEFUVFJJQklWUk9CVVNUQU5HTEUpIChHTHVpbnQgaW5kZXgsIEdMZW51bSBw
bmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpwYXJhbXMpOwor
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRWRVJURVhBVFRSSUJQT0lOVEVSVlJP
QlVTVEFOR0xFKSAoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwg
R0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcG9pbnRlcik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTFJFQURQSVhFTFNST0JVU1RBTkdMRSkgKEdMaW50IHgsIEdMaW50IHksIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xz
aXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIHZvaWQgKnBpeGVscyk7Cit0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTFRFWElNQUdFMkRST0JVU1RBTkdMRSkgKEdMZW51bSB0YXJn
ZXQsIEdMaW50IGxldmVsLCBHTGludCBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQsIEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdM
c2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMVEVYUEFSQU1FVEVSRlZST0JVU1RBTkdMRSkgKEdMZW51bSB0YXJnZXQsIEdM
ZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOwordHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xURVhQQVJBTUVURVJJVlJPQlVTVEFOR0xFKSAo
R0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdMaW50
ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xURVhTVUJJTUFHRTJE
Uk9CVVNUQU5HTEUpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwg
R0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3Jt
YXQsIEdMZW51bSB0eXBlLCBHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscyk7Cit0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFRFWElNQUdFM0RST0JVU1RBTkdMRSkgKEdM
ZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMaW50IGJvcmRlciwgR0xlbnVt
IGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxz
KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVYU1VCSU1BR0UzRFJPQlVTVEFO
R0xFKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlv
ZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNp
emVpIGRlcHRoLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xzaXplaSBidWZTaXplLCBj
b25zdCB2b2lkICpwaXhlbHMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRR
VUVSWUlWUk9CVVNUQU5HTEUpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkg
YnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMR0VUUVVFUllPQkpFQ1RVSVZST0JVU1RBTkdMRSkgKEdMdWludCBp
ZCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0x1aW50
ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRCVUZGRVJQT0lO
VEVSVlJPQlVTVEFOR0xFKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1
ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTEdFVElOVEVHRVJJX1ZST0JVU1RBTkdMRSkgKEdMZW51bSB0YXJnZXQs
IEdMdWludCBpbmRleCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpk
YXRhKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdFVElOVEVSTkFMRk9STUFUSVZS
T0JVU1RBTkdMRSkgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xlbnVt
IHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnBhcmFtcyk7
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFZFUlRFWEFUVFJJQklJVlJPQlVT
VEFOR0xFKSAoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xz
aXplaSAqbGVuZ3RoLCBHTGludCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMR0VUVkVSVEVYQVRUUklCSVVJVlJPQlVTVEFOR0xFKSAoR0x1aW50IGluZGV4LCBHTGVu
dW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTHVpbnQgKnBhcmFt
cyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFVOSUZPUk1VSVZST0JVU1RB
TkdMRSkgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCBH
THNpemVpICpsZW5ndGgsIEdMdWludCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMR0VUQUNUSVZFVU5JRk9STUJMT0NLSVZST0JVU1RBTkdMRSkgKEdMdWludCBwcm9n
cmFtLCBHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZT
aXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xHRVRJTlRFR0VSNjRWUk9CVVNUQU5HTEUpIChHTGVudW0gcG5hbWUsIEdM
c2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludDY0ICpkYXRhKTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUSU5URUdFUjY0SV9WUk9CVVNUQU5HTEUpIChHTGVu
dW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3Ro
LCBHTGludDY0ICpkYXRhKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUQlVG
RkVSUEFSQU1FVEVSSTY0VlJPQlVTVEFOR0xFKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1l
LCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQ2NCAqcGFyYW1zKTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMU0FNUExFUlBBUkFNRVRFUklWUk9CVVNUQU5H
TEUpIChHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IEdMaW50ICpwYXJhbSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNBTVBMRVJQ
QVJBTUVURVJGVlJPQlVTVEFOR0xFKSAoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xz
aXplaSBidWZTaXplLCBjb25zdCBHTGZsb2F0ICpwYXJhbSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTEdFVFNBTVBMRVJQQVJBTUVURVJJVlJPQlVTVEFOR0xFKSAoR0x1aW50IHNh
bXBsZXIsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdM
aW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRTQU1QTEVS
UEFSQU1FVEVSRlZST0JVU1RBTkdMRSkgKEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdM
c2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGZsb2F0ICpwYXJhbXMpOwordHlwZWRl
ZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRGUkFNRUJVRkZFUlBBUkFNRVRFUklWUk9CVVNU
QU5HTEUpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xz
aXplaSAqbGVuZ3RoLCBHTGludCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMR0VUUFJPR1JBTUlOVEVSRkFDRUlWUk9CVVNUQU5HTEUpIChHTHVpbnQgcHJvZ3JhbSwg
R0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBH
THNpemVpICpsZW5ndGgsIEdMaW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xHRVRCT09MRUFOSV9WUk9CVVNUQU5HTEUpIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQg
aW5kZXgsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGJvb2xlYW4gKmRhdGEp
OwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRNVUxUSVNBTVBMRUZWUk9CVVNU
QU5HTEUpIChHTGVudW0gcG5hbWUsIEdMdWludCBpbmRleCwgR0xzaXplaSBidWZTaXplLCBHTHNp
emVpICpsZW5ndGgsIEdMZmxvYXQgKnZhbCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQ
Rk5HTEdFVFRFWExFVkVMUEFSQU1FVEVSSVZST0JVU1RBTkdMRSkgKEdMZW51bSB0YXJnZXQsIEdM
aW50IGxldmVsLCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3Ro
LCBHTGludCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUVEVY
TEVWRUxQQVJBTUVURVJGVlJPQlVTVEFOR0xFKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWws
IEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMZmxvYXQg
KnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBPSU5URVJWUk9C
VVNUQU5HTEVST0JVU1RBTkdMRSkgKEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNp
emVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xSRUFETlBJWEVMU1JPQlVTVEFOR0xFKSAoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHNpemVp
IGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqZGF0YSk7Cit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTEdFVE5VTklGT1JNRlZST0JVU1RBTkdMRSkgKEdMdWludCBwcm9ncmFt
LCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMZmxv
YXQgKnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVE5VTklGT1JN
SVZST0JVU1RBTkdMRSkgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBi
dWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xHRVROVU5JRk9STVVJVlJPQlVTVEFOR0xFKSAoR0x1aW50IHByb2dy
YW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0x1
aW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xURVhQQVJBTUVU
RVJJSVZST0JVU1RBTkdMRSkgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBi
dWZTaXplLCBjb25zdCBHTGludCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMVEVYUEFSQU1FVEVSSVVJVlJPQlVTVEFOR0xFKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVt
IHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdMdWludCAqcGFyYW1zKTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUVEVYUEFSQU1FVEVSSUlWUk9CVVNUQU5HTEUpIChH
TGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVu
Z3RoLCBHTGludCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VU
VEVYUEFSQU1FVEVSSVVJVlJPQlVTVEFOR0xFKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1l
LCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0x1aW50ICpwYXJhbXMpOwordHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xTQU1QTEVSUEFSQU1FVEVSSUlWUk9CVVNUQU5H
TEUpIChHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IEdMaW50ICpwYXJhbSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNBTVBMRVJQ
QVJBTUVURVJJVUlWUk9CVVNUQU5HTEUpIChHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdMdWludCAqcGFyYW0pOwordHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xHRVRTQU1QTEVSUEFSQU1FVEVSSUlWUk9CVVNUQU5HTEUpIChHTHVpbnQg
c2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwg
R0xpbnQgKnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFNBTVBM
RVJQQVJBTUVURVJJVUlWUk9CVVNUQU5HTEUpIChHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1l
LCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0x1aW50ICpwYXJhbXMpOwordHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRRVUVSWU9CSkVDVElWUk9CVVNUQU5HTEUp
KEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0
aCwgR0xpbnQgKnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFFV
RVJZT0JKRUNUSTY0VlJPQlVTVEFOR0xFKShHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0xzaXpl
aSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50NjQgKnBhcmFtcyk7Cit0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFFVRVJZT0JKRUNUVUk2NFZST0JVU1RBTkdMRSkoR0x1
aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBH
THVpbnQ2NCAqcGFyYW1zKTsKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRCb29sZWFudlJvYnVzdEFOR0xFIChHTGVudW0gcG5hbWUs
IEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGJvb2xlYW4gKmRhdGEpOworR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkg
Kmxlbmd0aCwgR0xpbnQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xH
ZXRGbG9hdHZSb2J1c3RBTkdMRSAoR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6
ZWkgKmxlbmd0aCwgR0xmbG9hdCAqZGF0YSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFIChHTGVudW0g
dGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUs
IEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xHZXRJbnRlZ2VydlJvYnVzdEFOR0xFIChHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVm
U2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqZGF0YSk7CitHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xHZXRQcm9ncmFtaXZSb2J1c3RBTkdMRSAoR0x1aW50IHByb2dyYW0sIEdMZW51
bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpwYXJhbXMp
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNp
emUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xHZXRTaGFkZXJpdlJvYnVzdEFOR0xFIChHTHVpbnQgc2hhZGVyLCBHTGVudW0g
cG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqcGFyYW1zKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVp
ICpsZW5ndGgsIEdMZmxvYXQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xHZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5h
bWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqcGFyYW1zKTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFVuaWZvcm1mdlJvYnVzdEFOR0xFIChHTHVp
bnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVu
Z3RoLCBHTGZsb2F0ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0
VW5pZm9ybWl2Um9idXN0QU5HTEUgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xz
aXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpwYXJhbXMpOworR0xfQVBJQ0FM
TCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRSAoR0x1aW50
IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBH
TGZsb2F0ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0VmVydGV4
QXR0cmliaXZSb2J1c3RBTkdMRSAoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkg
YnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUgKEdMdWlu
dCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwg
dm9pZCAqKnBvaW50ZXIpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUmVhZFBpeGVs
c1JvYnVzdEFOR0xFIChHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXpl
aSAqbGVuZ3RoLCB2b2lkICpwaXhlbHMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGds
VGV4SW1hZ2UyRFJvYnVzdEFOR0xFIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQg
aW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3Jk
ZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZv
aWQgKnBpeGVscyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xUZXhQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6
ZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwg
R0xzaXplaSBidWZTaXplLCBjb25zdCBHTGludCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRSAoR0xlbnVtIHRhcmdldCwgR0xp
bnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xzaXplaSBidWZTaXpl
LCBjb25zdCB2b2lkICpwaXhlbHMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4
SW1hZ2UzRFJvYnVzdEFOR0xFIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgaW50
ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRo
LCBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHNpemVpIGJ1ZlNp
emUsIGNvbnN0IHZvaWQgKnBpeGVscyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xU
ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGlu
dCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUs
IEdMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbEdldFF1ZXJ5aXZSb2J1c3RBTkdMRSAoR0xlbnVtIHRhcmdldCwgR0xlbnVt
IHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnBhcmFtcyk7
CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFO
R0xFIChHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICps
ZW5ndGgsIEdMdWludCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdl
dEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwg
R0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpOworR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFIChHTGVudW0g
dGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBH
TGludCAqZGF0YSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRJbnRlcm5hbGZv
cm1hdGl2Um9idXN0QU5HTEUgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnBh
cmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRWZXJ0ZXhBdHRyaWJJaXZS
b2J1c3RBTkdMRSAoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwg
R0xzaXplaSAqbGVuZ3RoLCBHTGludCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbEdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRSAoR0x1aW50IGluZGV4LCBHTGVu
dW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTHVpbnQgKnBhcmFt
cyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRVbmlmb3JtdWl2Um9idXN0QU5H
TEUgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCBHTHNp
emVpICpsZW5ndGgsIEdMdWludCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbEdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUgKEdMdWludCBwcm9ncmFtLCBH
THVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBH
THNpemVpICpsZW5ndGgsIEdMaW50ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVO
VFJZIGdsR2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFIChHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVm
U2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludDY0ICpkYXRhKTsKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbEdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFIChHTGVudW0gdGFyZ2V0LCBH
THVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludDY0ICpk
YXRhKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldEJ1ZmZlclBhcmFtZXRlcmk2
NHZSb2J1c3RBTkdMRSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNp
emUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQ2NCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFIChHTHVpbnQgc2FtcGxl
ciwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdMaW50ICpwYXJhbSk7CitH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdM
RSAoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBjb25zdCBH
TGZsb2F0ICpwYXJhbSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRTYW1wbGVy
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSAoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xz
aXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpwYXJhbXMpOworR0xfQVBJQ0FM
TCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUgKEdM
dWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVu
Z3RoLCBHTGZsb2F0ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0
RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFIChHTGVudW0gdGFyZ2V0LCBHTGVudW0g
cG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqcGFyYW1zKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVz
dEFOR0xFIChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdMZW51bSBw
bmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpwYXJhbXMpOwor
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFIChH
TGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVu
Z3RoLCBHTGJvb2xlYW4gKmRhdGEpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0
TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFIChHTGVudW0gcG5hbWUsIEdMdWludCBpbmRleCwgR0xz
aXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMZmxvYXQgKnZhbCk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUgKEdM
ZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwg
R0xzaXplaSAqbGVuZ3RoLCBHTGludCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbEdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSAoR0xlbnVtIHRhcmdldCwg
R0xpbnQgbGV2ZWwsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5n
dGgsIEdMZmxvYXQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRQ
b2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUgKEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZT
aXplLCBHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsUmVhZG5QaXhlbHNSb2J1c3RBTkdMRSAoR0xpbnQgeCwgR0xpbnQgeSwgR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBH
THNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqZGF0YSk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUgKEdMdWludCBwcm9n
cmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdM
ZmxvYXQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRuVW5pZm9y
bWl2Um9idXN0QU5HTEUgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBi
dWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsR2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRSAoR0x1aW50IHByb2dyYW0s
IEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0x1aW50
ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4UGFyYW1ldGVySWl2
Um9idXN0QU5HTEUgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHTGludCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFRl
eFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdMdWludCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbEdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFIChHTGVudW0gdGFyZ2V0
LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAq
cGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFRleFBhcmFtZXRlckl1
aXZSb2J1c3RBTkdMRSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNp
emUsIEdMc2l6ZWkgKmxlbmd0aCwgR0x1aW50ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsU2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFIChHTHVpbnQgc2FtcGxl
ciwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdMaW50ICpwYXJhbSk7CitH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFO
R0xFIChHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IEdMdWludCAqcGFyYW0pOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0U2FtcGxl
clBhcmFtZXRlcklpdlJvYnVzdEFOR0xFIChHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBH
THNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnBhcmFtcyk7CitHTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xF
IChHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkg
Kmxlbmd0aCwgR0x1aW50ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGds
R2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTHNp
emVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnBhcmFtcyk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHTHVpbnQg
aWQsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50
NjQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRRdWVyeU9iamVj
dHVpNjR2Um9idXN0QU5HTEUoR0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6
ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTHVpbnQ2NCAqcGFyYW1zKTsKKyNlbmRpZgorI2VuZGlmIC8q
IEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5ICovCisKICNpZmRlZiBfX2NwbHVzcGx1cwog
fQogI2VuZGlmCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMRVMzL2ds
M2V4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xF
UzMvZ2wzZXh0LmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L2luY2x1ZGUvR0xFUzMvZ2wzZXh0LmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwyNCArMCwwIEBACi0j
aWZuZGVmIF9fZ2wzZXh0X2hfCi0jZGVmaW5lIF9fZ2wzZXh0X2hfCi0KLS8qICRSZXZpc2lvbjog
MTc4MDkgJCBvbiAkRGF0ZTo6IDIwMTItMDUtMTQgMDg6MDM6MzYgLTA3MDAgIyQgKi8KLQotLyoK
LSAqIFRoaXMgZG9jdW1lbnQgaXMgbGljZW5zZWQgdW5kZXIgdGhlIFNHSSBGcmVlIFNvZnR3YXJl
IEIgTGljZW5zZSBWZXJzaW9uCi0gKiAyLjAuIEZvciBkZXRhaWxzLCBzZWUgaHR0cDovL29zcy5z
Z2kuY29tL3Byb2plY3RzL0ZyZWVCLyAuCi0gKi8KLQotLyogT3BlbkdMIEVTIDMgRXh0ZW5zaW9u
cwotICoKLSAqIEFmdGVyIGFuIE9FUyBleHRlbnNpb24ncyBpbnRlcmFjdGlvbnMgd2l0aCBPcGVu
R2wgRVMgMy4wIGhhdmUgYmVlbiBkb2N1bWVudGVkLAotICogaXRzIHRva2VucyBhbmQgZnVuY3Rp
b24gZGVmaW5pdGlvbnMgc2hvdWxkIGJlIGFkZGVkIHRvIHRoaXMgZmlsZSBpbiBhIG1hbm5lcgot
ICogdGhhdCBkb2VzIG5vdCBjb25mbGljdCB3aXRoIGdsMmV4dC5oIG9yIGdsMy5oLgotICoKLSAq
IFRva2VucyBhbmQgZnVuY3Rpb24gZGVmaW5pdGlvbnMgZm9yIGV4dGVuc2lvbnMgdGhhdCBoYXZl
IGJlY29tZSBzdGFuZGFyZAotICogZmVhdHVyZXMgaW4gT3BlbkdMIEVTIDMuMCB3aWxsIG5vdCBi
ZSBhZGRlZCB0byB0aGlzIGZpbGUuCi0gKgotICogQXBwbGljYXRpb25zIHVzaW5nIE9wZW5HTC1F
Uy0yLW9ubHkgZXh0ZW5zaW9ucyBzaG91bGQgaW5jbHVkZSBnbDJleHQuaAotICovCi0KLSNlbmRp
ZiAvKiBfX2dsM2V4dF9oXyAqLwotCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNs
dWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL2luY2x1ZGUvR0xTTEFORy9TaGFkZXJMYW5nLmgJKHJldmlzaW9uIDIwODAyMSkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xTTEFORy9TaGFkZXJMYW5nLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgImtocnBsYXRmb3JtLmgi
CiAKKyNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDxtYXA+CiAjaW5jbHVkZSA8c3RyaW5nPgog
I2luY2x1ZGUgPHZlY3Rvcj4KQEAgLTQ4LDM2ICs0OSwxOCBAQAogCiAvLyBWZXJzaW9uIG51bWJl
ciBmb3Igc2hhZGVyIHRyYW5zbGF0aW9uIEFQSS4KIC8vIEl0IGlzIGluY3JlbWVudGVkIGV2ZXJ5
IHRpbWUgdGhlIEFQSSBjaGFuZ2VzLgotI2RlZmluZSBBTkdMRV9TSF9WRVJTSU9OIDE0NQorI2Rl
ZmluZSBBTkdMRV9TSF9WRVJTSU9OIDE2MwogCiB0eXBlZGVmIGVudW0gewotICBTSF9HTEVTMl9T
UEVDID0gMHg4QjQwLAotICBTSF9XRUJHTF9TUEVDID0gMHg4QjQxLAorICAgIFNIX0dMRVMyX1NQ
RUMsCisgICAgU0hfV0VCR0xfU1BFQywKIAotICBTSF9HTEVTM19TUEVDID0gMHg4Qjg2LAotICBT
SF9XRUJHTDJfU1BFQyA9IDB4OEI4NywKKyAgICBTSF9HTEVTM19TUEVDLAorICAgIFNIX1dFQkdM
Ml9TUEVDLAogCi0gIC8vIFRoZSBDU1MgU2hhZGVycyBzcGVjIGlzIGEgc3Vic2V0IG9mIHRoZSBX
ZWJHTCBzcGVjLgotICAvLwotICAvLyBJbiBib3RoIENTUyB2ZXJ0ZXggYW5kIGZyYWdtZW50IHNo
YWRlcnMsIEFOR0xFOgotICAvLyAoMSkgUmVzZXJ2ZXMgdGhlICJjc3NfIiBwcmVmaXguCi0gIC8v
ICgyKSBSZW5hbWVzIHRoZSBtYWluIGZ1bmN0aW9uIHRvIGNzc19tYWluLgotICAvLyAoMykgRGlz
YWJsZXMgdGhlIGdsX01heERyYXdCdWZmZXJzIGJ1aWx0LWluLgotICAvLwotICAvLyBJbiBDU1Mg
ZnJhZ21lbnQgc2hhZGVycywgQU5HTEU6Ci0gIC8vICgxKSBEaXNhYmxlcyB0aGUgZ2xfRnJhZ0Nv
bG9yIGJ1aWx0LWluLgotICAvLyAoMikgRGlzYWJsZXMgdGhlIGdsX0ZyYWdEYXRhIGJ1aWx0LWlu
LgotICAvLyAoMykgRW5hYmxlcyB0aGUgY3NzX01peENvbG9yIGJ1aWx0LWluLgotICAvLyAoNCkg
RW5hYmxlcyB0aGUgY3NzX0NvbG9yTWF0cml4IGJ1aWx0LWluLgotICAvLwotICAvLyBBZnRlciBw
YXNzaW5nIGEgQ1NTIHNoYWRlciB0aHJvdWdoIEFOR0xFLCB0aGUgYnJvd3NlciBpcyBleHBlY3Rl
ZCB0byBhcHBlbmQKLSAgLy8gYSBuZXcgbWFpbiBmdW5jdGlvbiB0byBpdC4KLSAgLy8gVGhpcyBu
ZXcgbWFpbiBmdW5jdGlvbiB3aWxsIGNhbGwgdGhlIGNzc19tYWluIGZ1bmN0aW9uLgotICAvLyBJ
dCBtYXkgYWxzbyBwZXJmb3JtIGFkZGl0aW9uYWwgb3BlcmF0aW9ucyBsaWtlIHZhcnlpbmcgYXNz
aWdubWVudCwgdGV4dHVyZQotICAvLyBhY2Nlc3MsIGFuZCBnbF9GcmFnQ29sb3IgYXNzaWdubWVu
dCBpbiBvcmRlciB0byBpbXBsZW1lbnQgdGhlIENTUyBTaGFkZXJzCi0gIC8vIGJsZW5kIG1vZGVz
LgotICAvLwotICBTSF9DU1NfU0hBREVSU19TUEVDID0gMHg4QjQyCisgICAgU0hfR0xFUzNfMV9T
UEVDLAorICAgIFNIX1dFQkdMM19TUEVDLAorCiB9IFNoU2hhZGVyU3BlYzsKIAogdHlwZWRlZiBl
bnVtCkBAIC0xMTIsMTA0ICs5NSwxMjcgQEAKIH0gU2hTaGFkZXJPdXRwdXQ7CiAKIC8vIENvbXBp
bGUgb3B0aW9ucy4KLXR5cGVkZWYgZW51bSB7Ci0gIFNIX1ZBTElEQVRFICAgICAgICAgICAgICAg
ID0gMCwKLSAgU0hfVkFMSURBVEVfTE9PUF9JTkRFWElORyAgPSAweDAwMDEsCi0gIFNIX0lOVEVS
TUVESUFURV9UUkVFICAgICAgID0gMHgwMDAyLAotICBTSF9PQkpFQ1RfQ09ERSAgICAgICAgICAg
ICA9IDB4MDAwNCwKLSAgU0hfVkFSSUFCTEVTICAgICAgICAgICAgICAgPSAweDAwMDgsCi0gIFNI
X0xJTkVfRElSRUNUSVZFUyAgICAgICAgID0gMHgwMDEwLAotICBTSF9TT1VSQ0VfUEFUSCAgICAg
ICAgICAgICA9IDB4MDAyMCwKLSAgU0hfVU5ST0xMX0ZPUl9MT09QX1dJVEhfSU5URUdFUl9JTkRF
WCA9IDB4MDA0MCwKLSAgLy8gSWYgYSBzYW1wbGVyIGFycmF5IGluZGV4IGhhcHBlbnMgdG8gYmUg
YSBsb29wIGluZGV4LAotICAvLyAgIDEpIGlmIGl0cyB0eXBlIGlzIGludGVnZXIsIHVucm9sbCB0
aGUgbG9vcC4KLSAgLy8gICAyKSBpZiBpdHMgdHlwZSBpcyBmbG9hdCwgZmFpbCB0aGUgc2hhZGVy
IGNvbXBpbGUuCi0gIC8vIFRoaXMgaXMgdG8gd29yayBhcm91bmQgYSBtYWMgZHJpdmVyIGJ1Zy4K
LSAgU0hfVU5ST0xMX0ZPUl9MT09QX1dJVEhfU0FNUExFUl9BUlJBWV9JTkRFWCA9IDB4MDA4MCwK
IAotICAvLyBUaGlzIGlzIG5lZWRlZCBvbmx5IGFzIGEgd29ya2Fyb3VuZCBmb3IgY2VydGFpbiBP
cGVuR0wgZHJpdmVyIGJ1Z3MuCi0gIFNIX0VNVUxBVEVfQlVJTFRfSU5fRlVOQ1RJT05TID0gMHgw
MTAwLAordHlwZWRlZiB1aW50NjRfdCBTaENvbXBpbGVPcHRpb25zOwogCi0gIC8vIFRoaXMgaXMg
YW4gZXhwZXJpbWVudGFsIGZsYWcgdG8gZW5mb3JjZSByZXN0cmljdGlvbnMgdGhhdCBhaW0gdG8g
cHJldmVudAotICAvLyB0aW1pbmcgYXR0YWNrcy4KLSAgLy8gSXQgZ2VuZXJhdGVzIGNvbXBpbGF0
aW9uIGVycm9ycyBmb3Igc2hhZGVycyB0aGF0IGNvdWxkIGV4cG9zZSBzZW5zaXRpdmUKLSAgLy8g
dGV4dHVyZSBpbmZvcm1hdGlvbiB2aWEgdGhlIHRpbWluZyBjaGFubmVsLgotICAvLyBUbyB1c2Ug
dGhpcyBmbGFnLCB5b3UgbXVzdCBjb21waWxlIHRoZSBzaGFkZXIgdW5kZXIgdGhlIFdlYkdMIHNw
ZWMKLSAgLy8gKHVzaW5nIHRoZSBTSF9XRUJHTF9TUEVDIGZsYWcpLgotICBTSF9USU1JTkdfUkVT
VFJJQ1RJT05TID0gMHgwMjAwLAorY29uc3QgU2hDb21waWxlT3B0aW9ucyBTSF9WQUxJREFURSAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gMDsKK2NvbnN0IFNoQ29tcGlsZU9wdGlvbnMgU0hf
VkFMSURBVEVfTE9PUF9JTkRFWElORyAgICAgICAgICAgICA9IFVJTlQ2NF9DKDEpIDw8IDA7Citj
b25zdCBTaENvbXBpbGVPcHRpb25zIFNIX0lOVEVSTUVESUFURV9UUkVFICAgICAgICAgICAgICAg
ICAgPSBVSU5UNjRfQygxKSA8PCAxOworY29uc3QgU2hDb21waWxlT3B0aW9ucyBTSF9PQkpFQ1Rf
Q09ERSAgICAgICAgICAgICAgICAgICAgICAgID0gVUlOVDY0X0MoMSkgPDwgMjsKK2NvbnN0IFNo
Q29tcGlsZU9wdGlvbnMgU0hfVkFSSUFCTEVTICAgICAgICAgICAgICAgICAgICAgICAgICA9IFVJ
TlQ2NF9DKDEpIDw8IDM7Citjb25zdCBTaENvbXBpbGVPcHRpb25zIFNIX0xJTkVfRElSRUNUSVZF
UyAgICAgICAgICAgICAgICAgICAgPSBVSU5UNjRfQygxKSA8PCA0OworY29uc3QgU2hDb21waWxl
T3B0aW9ucyBTSF9TT1VSQ0VfUEFUSCAgICAgICAgICAgICAgICAgICAgICAgID0gVUlOVDY0X0Mo
MSkgPDwgNTsKK2NvbnN0IFNoQ29tcGlsZU9wdGlvbnMgU0hfVU5ST0xMX0ZPUl9MT09QX1dJVEhf
SU5URUdFUl9JTkRFWCA9IFVJTlQ2NF9DKDEpIDw8IDY7CisvLyBJZiBhIHNhbXBsZXIgYXJyYXkg
aW5kZXggaGFwcGVucyB0byBiZSBhIGxvb3AgaW5kZXgsCisvLyAgIDEpIGlmIGl0cyB0eXBlIGlz
IGludGVnZXIsIHVucm9sbCB0aGUgbG9vcC4KKy8vICAgMikgaWYgaXRzIHR5cGUgaXMgZmxvYXQs
IGZhaWwgdGhlIHNoYWRlciBjb21waWxlLgorLy8gVGhpcyBpcyB0byB3b3JrIGFyb3VuZCBhIG1h
YyBkcml2ZXIgYnVnLgorY29uc3QgU2hDb21waWxlT3B0aW9ucyBTSF9VTlJPTExfRk9SX0xPT1Bf
V0lUSF9TQU1QTEVSX0FSUkFZX0lOREVYID0gVUlOVDY0X0MoMSkgPDwgNzsKIAotICAvLyBUaGlz
IGZsYWcgcHJpbnRzIHRoZSBkZXBlbmRlbmN5IGdyYXBoIHRoYXQgaXMgdXNlZCB0byBlbmZvcmNl
IHRpbWluZwotICAvLyByZXN0cmljdGlvbnMgb24gZnJhZ21lbnQgc2hhZGVycy4KLSAgLy8gVGhp
cyBmbGFnIG9ubHkgaGFzIGFuIGVmZmVjdCBpZiBhbGwgb2YgdGhlIGZvbGxvd2luZyBhcmUgdHJ1
ZToKLSAgLy8gLSBUaGUgc2hhZGVyIHNwZWMgaXMgU0hfV0VCR0xfU1BFQy4KLSAgLy8gLSBUaGUg
Y29tcGlsZSBvcHRpb25zIGNvbnRhaW4gdGhlIFNIX1RJTUlOR19SRVNUUklDVElPTlMgZmxhZy4K
LSAgLy8gLSBUaGUgc2hhZGVyIHR5cGUgaXMgR0xfRlJBR01FTlRfU0hBREVSLgotICBTSF9ERVBF
TkRFTkNZX0dSQVBIID0gMHgwNDAwLAorLy8gVGhpcyBmbGFnIHdvcmtzIGFyb3VuZCBidWcgaW4g
SW50ZWwgTWFjIGRyaXZlcnMgcmVsYXRlZCB0byBhYnMoaSkgd2hlcmUKKy8vIGkgaXMgYW4gaW50
ZWdlci4KK2NvbnN0IFNoQ29tcGlsZU9wdGlvbnMgU0hfRU1VTEFURV9BQlNfSU5UX0ZVTkNUSU9O
ID0gVUlOVDY0X0MoMSkgPDwgODsKIAotICAvLyBFbmZvcmNlIHRoZSBHTFNMIDEuMDE3IEFwcGVu
ZGl4IEEgc2VjdGlvbiA3IHBhY2tpbmcgcmVzdHJpY3Rpb25zLgotICAvLyBUaGlzIGZsYWcgb25s
eSBlbmZvcmNlcyAoYW5kIGNhbiBvbmx5IGVuZm9yY2UpIHRoZSBwYWNraW5nCi0gIC8vIHJlc3Ry
aWN0aW9ucyBmb3IgdW5pZm9ybSB2YXJpYWJsZXMgaW4gYm90aCB2ZXJ0ZXggYW5kIGZyYWdtZW50
Ci0gIC8vIHNoYWRlcnMuIFNoQ2hlY2tWYXJpYWJsZXNXaXRoaW5QYWNraW5nTGltaXRzKCkgbGV0
cyBlbWJlZGRlcnMKLSAgLy8gZW5mb3JjZSB0aGUgcGFja2luZyByZXN0cmljdGlvbnMgZm9yIHZh
cnlpbmcgdmFyaWFibGVzIGR1cmluZwotICAvLyBwcm9ncmFtIGxpbmsgdGltZS4KLSAgU0hfRU5G
T1JDRV9QQUNLSU5HX1JFU1RSSUNUSU9OUyA9IDB4MDgwMCwKKy8vIEVuZm9yY2UgdGhlIEdMU0wg
MS4wMTcgQXBwZW5kaXggQSBzZWN0aW9uIDcgcGFja2luZyByZXN0cmljdGlvbnMuCisvLyBUaGlz
IGZsYWcgb25seSBlbmZvcmNlcyAoYW5kIGNhbiBvbmx5IGVuZm9yY2UpIHRoZSBwYWNraW5nCisv
LyByZXN0cmljdGlvbnMgZm9yIHVuaWZvcm0gdmFyaWFibGVzIGluIGJvdGggdmVydGV4IGFuZCBm
cmFnbWVudAorLy8gc2hhZGVycy4gU2hDaGVja1ZhcmlhYmxlc1dpdGhpblBhY2tpbmdMaW1pdHMo
KSBsZXRzIGVtYmVkZGVycworLy8gZW5mb3JjZSB0aGUgcGFja2luZyByZXN0cmljdGlvbnMgZm9y
IHZhcnlpbmcgdmFyaWFibGVzIGR1cmluZworLy8gcHJvZ3JhbSBsaW5rIHRpbWUuCitjb25zdCBT
aENvbXBpbGVPcHRpb25zIFNIX0VORk9SQ0VfUEFDS0lOR19SRVNUUklDVElPTlMgPSBVSU5UNjRf
QygxKSA8PCA5OwogCi0gIC8vIFRoaXMgZmxhZyBlbnN1cmVzIGFsbCBpbmRpcmVjdCAoZXhwcmVz
c2lvbi1iYXNlZCkgYXJyYXkgaW5kZXhpbmcKLSAgLy8gaXMgY2xhbXBlZCB0byB0aGUgYm91bmRz
IG9mIHRoZSBhcnJheS4gVGhpcyBlbnN1cmVzLCBmb3IgZXhhbXBsZSwKLSAgLy8gdGhhdCB5b3Ug
Y2Fubm90IHJlYWQgb2ZmIHRoZSBlbmQgb2YgYSB1bmlmb3JtLCB3aGV0aGVyIGFuIGFycmF5Ci0g
IC8vIHZlYzIzNCwgb3IgbWF0MjM0IHR5cGUuIFRoZSBTaEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0
ZWd5IGVudW0sCi0gIC8vIHNwZWNpZmllZCBpbiB0aGUgU2hCdWlsdEluUmVzb3VyY2VzIHdoZW4g
Y29uc3RydWN0aW5nIHRoZQotICAvLyBjb21waWxlciwgc2VsZWN0cyB0aGUgc3RyYXRlZ3kgZm9y
IHRoZSBjbGFtcGluZyBpbXBsZW1lbnRhdGlvbi4KLSAgU0hfQ0xBTVBfSU5ESVJFQ1RfQVJSQVlf
Qk9VTkRTID0gMHgxMDAwLAorLy8gVGhpcyBmbGFnIGVuc3VyZXMgYWxsIGluZGlyZWN0IChleHBy
ZXNzaW9uLWJhc2VkKSBhcnJheSBpbmRleGluZworLy8gaXMgY2xhbXBlZCB0byB0aGUgYm91bmRz
IG9mIHRoZSBhcnJheS4gVGhpcyBlbnN1cmVzLCBmb3IgZXhhbXBsZSwKKy8vIHRoYXQgeW91IGNh
bm5vdCByZWFkIG9mZiB0aGUgZW5kIG9mIGEgdW5pZm9ybSwgd2hldGhlciBhbiBhcnJheQorLy8g
dmVjMjM0LCBvciBtYXQyMzQgdHlwZS4gVGhlIFNoQXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3kg
ZW51bSwKKy8vIHNwZWNpZmllZCBpbiB0aGUgU2hCdWlsdEluUmVzb3VyY2VzIHdoZW4gY29uc3Ry
dWN0aW5nIHRoZQorLy8gY29tcGlsZXIsIHNlbGVjdHMgdGhlIHN0cmF0ZWd5IGZvciB0aGUgY2xh
bXBpbmcgaW1wbGVtZW50YXRpb24uCitjb25zdCBTaENvbXBpbGVPcHRpb25zIFNIX0NMQU1QX0lO
RElSRUNUX0FSUkFZX0JPVU5EUyA9IFVJTlQ2NF9DKDEpIDw8IDEwOwogCi0gIC8vIFRoaXMgZmxh
ZyBsaW1pdHMgdGhlIGNvbXBsZXhpdHkgb2YgYW4gZXhwcmVzc2lvbi4KLSAgU0hfTElNSVRfRVhQ
UkVTU0lPTl9DT01QTEVYSVRZID0gMHgyMDAwLAorLy8gVGhpcyBmbGFnIGxpbWl0cyB0aGUgY29t
cGxleGl0eSBvZiBhbiBleHByZXNzaW9uLgorY29uc3QgU2hDb21waWxlT3B0aW9ucyBTSF9MSU1J
VF9FWFBSRVNTSU9OX0NPTVBMRVhJVFkgPSBVSU5UNjRfQygxKSA8PCAxMTsKIAotICAvLyBUaGlz
IGZsYWcgbGltaXRzIHRoZSBkZXB0aCBvZiB0aGUgY2FsbCBzdGFjay4KLSAgU0hfTElNSVRfQ0FM
TF9TVEFDS19ERVBUSCA9IDB4NDAwMCwKKy8vIFRoaXMgZmxhZyBsaW1pdHMgdGhlIGRlcHRoIG9m
IHRoZSBjYWxsIHN0YWNrLgorY29uc3QgU2hDb21waWxlT3B0aW9ucyBTSF9MSU1JVF9DQUxMX1NU
QUNLX0RFUFRIID0gVUlOVDY0X0MoMSkgPDwgMTI7CiAKLSAgLy8gVGhpcyBmbGFnIGluaXRpYWxp
emVzIGdsX1Bvc2l0aW9uIHRvIHZlYzQoMCwwLDAsMCkgYXQgdGhlCi0gIC8vIGJlZ2lubmluZyBv
ZiB0aGUgdmVydGV4IHNoYWRlcidzIG1haW4oKSwgYW5kIGhhcyBubyBlZmZlY3QgaW4gdGhlCi0g
IC8vIGZyYWdtZW50IHNoYWRlci4gSXQgaXMgaW50ZW5kZWQgYXMgYSB3b3JrYXJvdW5kIGZvciBk
cml2ZXJzIHdoaWNoCi0gIC8vIGluY29ycmVjdGx5IGZhaWwgdG8gbGluayBwcm9ncmFtcyBpZiBn
bF9Qb3NpdGlvbiBpcyBub3Qgd3JpdHRlbi4KLSAgU0hfSU5JVF9HTF9QT1NJVElPTiA9IDB4ODAw
MCwKKy8vIFRoaXMgZmxhZyBpbml0aWFsaXplcyBnbF9Qb3NpdGlvbiB0byB2ZWM0KDAsMCwwLDAp
IGF0IHRoZQorLy8gYmVnaW5uaW5nIG9mIHRoZSB2ZXJ0ZXggc2hhZGVyJ3MgbWFpbigpLCBhbmQg
aGFzIG5vIGVmZmVjdCBpbiB0aGUKKy8vIGZyYWdtZW50IHNoYWRlci4gSXQgaXMgaW50ZW5kZWQg
YXMgYSB3b3JrYXJvdW5kIGZvciBkcml2ZXJzIHdoaWNoCisvLyBpbmNvcnJlY3RseSBmYWlsIHRv
IGxpbmsgcHJvZ3JhbXMgaWYgZ2xfUG9zaXRpb24gaXMgbm90IHdyaXR0ZW4uCitjb25zdCBTaENv
bXBpbGVPcHRpb25zIFNIX0lOSVRfR0xfUE9TSVRJT04gPSBVSU5UNjRfQygxKSA8PCAxMzsKIAot
ICAvLyBUaGlzIGZsYWcgcmVwbGFjZXMKLSAgLy8gICAiYSAmJiBiIiB3aXRoICJhID8gYiA6IGZh
bHNlIiwKLSAgLy8gICAiYSB8fCBiIiB3aXRoICJhID8gdHJ1ZSA6IGIiLgotICAvLyBUaGlzIGlz
IHRvIHdvcmsgYXJvdW5kIGEgTWFjT1NYIGRyaXZlciBidWcgdGhhdCB8YnwgaXMgZXhlY3V0ZWQK
LSAgLy8gaW5kZXBlbmRlbnQgb2YgfGF8J3MgdmFsdWUuCi0gIFNIX1VORk9MRF9TSE9SVF9DSVJD
VUlUID0gMHgxMDAwMCwKKy8vIFRoaXMgZmxhZyByZXBsYWNlcworLy8gICAiYSAmJiBiIiB3aXRo
ICJhID8gYiA6IGZhbHNlIiwKKy8vICAgImEgfHwgYiIgd2l0aCAiYSA/IHRydWUgOiBiIi4KKy8v
IFRoaXMgaXMgdG8gd29yayBhcm91bmQgYSBNYWNPU1ggZHJpdmVyIGJ1ZyB0aGF0IHxifCBpcyBl
eGVjdXRlZAorLy8gaW5kZXBlbmRlbnQgb2YgfGF8J3MgdmFsdWUuCitjb25zdCBTaENvbXBpbGVP
cHRpb25zIFNIX1VORk9MRF9TSE9SVF9DSVJDVUlUID0gVUlOVDY0X0MoMSkgPDwgMTQ7CiAKLSAg
Ly8gVGhpcyBmbGFnIGluaXRpYWxpemVzIHZhcnlpbmdzIHdpdGhvdXQgc3RhdGljIHVzZSBpbiB2
ZXJ0ZXggc2hhZGVyCi0gIC8vIGF0IHRoZSBiZWdpbm5pbmcgb2YgbWFpbigpLCBhbmQgaGFzIG5v
IGVmZmVjdHMgaW4gdGhlIGZyYWdtZW50IHNoYWRlci4KLSAgLy8gSXQgaXMgaW50ZW5kZWQgYXMg
YSB3b3JrYXJvdW5kIGZvciBkcml2ZXJzIHdoaWNoIGluY29ycmVjdGx5IG9wdGltaXplCi0gIC8v
IG91dCBzdWNoIHZhcnlpbmdzIGFuZCBjYXVzZSBhIGxpbmsgZmFpbHVyZS4KLSAgU0hfSU5JVF9W
QVJZSU5HU19XSVRIT1VUX1NUQVRJQ19VU0UgPSAweDIwMDAwLAorLy8gVGhpcyBmbGFnIGluaXRp
YWxpemVzIG91dHB1dCB2YXJpYWJsZXMgdG8gMCBhdCB0aGUgYmVnaW5uaW5nIG9mIG1haW4oKS4K
Ky8vIEl0IGlzIHRvIGF2b2lkIHVuZGVmaW5lZCBiZWhhdmlvcnMuCitjb25zdCBTaENvbXBpbGVP
cHRpb25zIFNIX0lOSVRfT1VUUFVUX1ZBUklBQkxFUyA9IFVJTlQ2NF9DKDEpIDw8IDE1OwogCi0g
IC8vIFRoaXMgZmxhZyBzY2FsYXJpemVzIHZlYy9pdmVjL2J2ZWMvbWF0IGNvbnN0cnVjdG9yIGFy
Z3MuCi0gIC8vIEl0IGlzIGludGVuZGVkIGFzIGEgd29ya2Fyb3VuZCBmb3IgTGludXgvTWFjIGRy
aXZlciBidWdzLgotICBTSF9TQ0FMQVJJWkVfVkVDX0FORF9NQVRfQ09OU1RSVUNUT1JfQVJHUyA9
IDB4NDAwMDAsCisvLyBUaGlzIGZsYWcgc2NhbGFyaXplcyB2ZWMvaXZlYy9idmVjL21hdCBjb25z
dHJ1Y3RvciBhcmdzLgorLy8gSXQgaXMgaW50ZW5kZWQgYXMgYSB3b3JrYXJvdW5kIGZvciBMaW51
eC9NYWMgZHJpdmVyIGJ1Z3MuCitjb25zdCBTaENvbXBpbGVPcHRpb25zIFNIX1NDQUxBUklaRV9W
RUNfQU5EX01BVF9DT05TVFJVQ1RPUl9BUkdTID0gVUlOVDY0X0MoMSkgPDwgMTY7CiAKLSAgLy8g
VGhpcyBmbGFnIG92ZXJ3cml0ZXMgYSBzdHJ1Y3QgbmFtZSB3aXRoIGEgdW5pcXVlIHByZWZpeC4K
LSAgLy8gSXQgaXMgaW50ZW5kZWQgYXMgYSB3b3JrYXJvdW5kIGZvciBkcml2ZXJzIHRoYXQgZG8g
bm90IGhhbmRsZQotICAvLyBzdHJ1Y3Qgc2NvcGVzIGNvcnJlY3RseSwgaW5jbHVkaW5nIGFsbCBN
YWMgZHJpdmVycyBhbmQgTGludXggQU1ELgotICBTSF9SRUdFTkVSQVRFX1NUUlVDVF9OQU1FUyA9
IDB4ODAwMDAsCisvLyBUaGlzIGZsYWcgb3ZlcndyaXRlcyBhIHN0cnVjdCBuYW1lIHdpdGggYSB1
bmlxdWUgcHJlZml4LgorLy8gSXQgaXMgaW50ZW5kZWQgYXMgYSB3b3JrYXJvdW5kIGZvciBkcml2
ZXJzIHRoYXQgZG8gbm90IGhhbmRsZQorLy8gc3RydWN0IHNjb3BlcyBjb3JyZWN0bHksIGluY2x1
ZGluZyBhbGwgTWFjIGRyaXZlcnMgYW5kIExpbnV4IEFNRC4KK2NvbnN0IFNoQ29tcGlsZU9wdGlv
bnMgU0hfUkVHRU5FUkFURV9TVFJVQ1RfTkFNRVMgPSBVSU5UNjRfQygxKSA8PCAxNzsKIAotICAv
LyBUaGlzIGZsYWcgbWFrZXMgdGhlIGNvbXBpbGVyIG5vdCBwcnVuZSB1bnVzZWQgZnVuY3Rpb24g
ZWFybHkgaW4gdGhlCi0gIC8vIGNvbXBpbGF0aW9uIHByb2Nlc3MuIFBydW5pbmcgY291cGxlZCB3
aXRoIFNIX0xJTUlUX0NBTExfU1RBQ0tfREVQVEgKLSAgLy8gaGVscHMgYXZvaWQgYmFkIHNoYWRl
cnMgY2F1c2luZyBzdGFjayBvdmVyZmxvd3MuCi0gIFNIX0RPTlRfUFJVTkVfVU5VU0VEX0ZVTkNU
SU9OUyA9IDB4MTAwMDAwLAorLy8gVGhpcyBmbGFnIG1ha2VzIHRoZSBjb21waWxlciBub3QgcHJ1
bmUgdW51c2VkIGZ1bmN0aW9uIGVhcmx5IGluIHRoZQorLy8gY29tcGlsYXRpb24gcHJvY2Vzcy4g
UHJ1bmluZyBjb3VwbGVkIHdpdGggU0hfTElNSVRfQ0FMTF9TVEFDS19ERVBUSAorLy8gaGVscHMg
YXZvaWQgYmFkIHNoYWRlcnMgY2F1c2luZyBzdGFjayBvdmVyZmxvd3MuCitjb25zdCBTaENvbXBp
bGVPcHRpb25zIFNIX0RPTlRfUFJVTkVfVU5VU0VEX0ZVTkNUSU9OUyA9IFVJTlQ2NF9DKDEpIDw8
IDE4OwogCi0gIC8vIFRoaXMgZmxhZyB3b3JrcyBhcm91bmQgYSBidWcgaW4gTlZJRElBIDMzMSBz
ZXJpZXMgZHJpdmVycyByZWxhdGVkCi0gIC8vIHRvIHBvdyh4LCB5KSB3aGVyZSB5IGlzIGEgY29u
c3RhbnQgdmVjdG9yLgotICBTSF9SRU1PVkVfUE9XX1dJVEhfQ09OU1RBTlRfRVhQT05FTlQgPSAw
eDIwMDAwMCwKKy8vIFRoaXMgZmxhZyB3b3JrcyBhcm91bmQgYSBidWcgaW4gTlZJRElBIDMzMSBz
ZXJpZXMgZHJpdmVycyByZWxhdGVkCisvLyB0byBwb3coeCwgeSkgd2hlcmUgeSBpcyBhIGNvbnN0
YW50IHZlY3Rvci4KK2NvbnN0IFNoQ29tcGlsZU9wdGlvbnMgU0hfUkVNT1ZFX1BPV19XSVRIX0NP
TlNUQU5UX0VYUE9ORU5UID0gVUlOVDY0X0MoMSkgPDwgMTk7CiAKLSAgLy8gVGhpcyBmbGFnIHdv
cmtzIGFyb3VuZCBidWdzIGluIE1hYyBkcml2ZXJzIHJlbGF0ZWQgdG8gZG8td2hpbGUgYnkKLSAg
Ly8gdHJhbnNmb3JtaW5nIHRoZW0gaW50byBhbiBvdGhlciBjb25zdHJ1Y3QuCi0gIFNIX1JFV1JJ
VEVfRE9fV0hJTEVfTE9PUFMgPSAweDQwMDAwMCwKLX0gU2hDb21waWxlT3B0aW9uczsKKy8vIFRo
aXMgZmxhZyB3b3JrcyBhcm91bmQgYnVncyBpbiBNYWMgZHJpdmVycyByZWxhdGVkIHRvIGRvLXdo
aWxlIGJ5CisvLyB0cmFuc2Zvcm1pbmcgdGhlbSBpbnRvIGFuIG90aGVyIGNvbnN0cnVjdC4KK2Nv
bnN0IFNoQ29tcGlsZU9wdGlvbnMgU0hfUkVXUklURV9ET19XSElMRV9MT09QUyA9IFVJTlQ2NF9D
KDEpIDw8IDIwOwogCisvLyBUaGlzIGZsYWcgd29ya3MgYXJvdW5kIGEgYnVnIGluIHRoZSBITFNM
IGNvbXBpbGVyIG9wdGltaXplciB0aGF0IGZvbGRzIGNlcnRhaW4KKy8vIGNvbnN0YW50IHBvdyBl
eHByZXNzaW9ucyBpbmNvcnJlY3RseS4gT25seSBhcHBsaWVzIHRvIHRoZSBITFNMIGJhY2stZW5k
LiBJdCB3b3JrcworLy8gYnkgZXhwYW5kaW5nIHRoZSBpbnRlZ2VyIHBvdyBleHByZXNzaW9ucyBp
bnRvIGEgc2VyaWVzIG9mIG11bHRpcGxpZXMuCitjb25zdCBTaENvbXBpbGVPcHRpb25zIFNIX0VY
UEFORF9TRUxFQ1RfSExTTF9JTlRFR0VSX1BPV19FWFBSRVNTSU9OUyA9IFVJTlQ2NF9DKDEpIDw8
IDIxOworCisvLyBGbGF0dGVuICIjcHJhZ21hIFNUREdMIGludmFyaWFudChhbGwpIiBpbnRvIHRo
ZSBkZWNsYXJhdGlvbnMgb2YKKy8vIHZhcnlpbmcgdmFyaWFibGVzIGFuZCBidWlsdC1pbiBHTFNM
IHZhcmlhYmxlcy4gVGhpcyBjb21waWxlcgorLy8gb3B0aW9uIGlzIGVuYWJsZWQgYXV0b21hdGlj
YWxseSB3aGVuIG5lZWRlZC4KK2NvbnN0IFNoQ29tcGlsZU9wdGlvbnMgU0hfRkxBVFRFTl9QUkFH
TUFfU1RER0xfSU5WQVJJQU5UX0FMTCA9IFVJTlQ2NF9DKDEpIDw8IDIyOworCisvLyBTb21lIGRy
aXZlcnMgZG8gbm90IHRha2UgaW50byBhY2NvdW50IHRoZSBiYXNlIGxldmVsIG9mIHRoZSB0ZXh0
dXJlIGluIHRoZSByZXN1bHRzIG9mIHRoZQorLy8gSExTTCBHZXREaW1lbnNpb25zIGJ1aWx0aW4u
ICBUaGlzIGZsYWcgaW5zdHJ1Y3RzIHRoZSBjb21waWxlciB0byBtYW51YWxseSBhZGQgdGhlIGJh
c2UgbGV2ZWwKKy8vIG9mZnNldHRpbmcuCitjb25zdCBTaENvbXBpbGVPcHRpb25zIFNIX0hMU0xf
R0VUX0RJTUVOU0lPTlNfSUdOT1JFU19CQVNFX0xFVkVMID0gVUlOVDY0X0MoMSkgPDwgMjM7CisK
Ky8vIFRoaXMgZmxhZyB3b3JrcyBhcm91bmQgYW4gaXNzdWUgaW4gdHJhbnNsYXRpbmcgR0xTTCBm
dW5jdGlvbiB0ZXhlbEZldGNoT2Zmc2V0IG9uCisvLyBJTlRFTCBkcml2ZXJzLiBJdCB3b3JrcyBi
eSB0cmFuc2xhdGluZyB0ZXhlbEZldGNoT2Zmc2V0IGludG8gdGV4ZWxGZXRjaC4KK2NvbnN0IFNo
Q29tcGlsZU9wdGlvbnMgU0hfUkVXUklURV9URVhFTEZFVENIT0ZGU0VUX1RPX1RFWEVMRkVUQ0gg
PSBVSU5UNjRfQygxKSA8PCAyNDsKKworLy8gVGhpcyBmbGFnIHdvcmtzIGFyb3VuZCBjb25kaXRp
b24gYnVnIG9mIGZvciBhbmQgd2hpbGUgbG9vcHMgaW4gSW50ZWwgTWFjIE9TWCBkcml2ZXJzLgor
Ly8gQ29uZGl0aW9uIGNhbGN1bGF0aW9uIGlzIG5vdCBjb3JyZWN0LiBSZXdyaXRlIGl0IGZyb20g
IkNPTkRJVElPTiIgdG8gIkNPTkRJVElPTiAmJiB0cnVlIi4KK2NvbnN0IFNoQ29tcGlsZU9wdGlv
bnMgU0hfQUREX0FORF9UUlVFX1RPX0xPT1BfQ09ORElUSU9OID0gVUlOVDY0X0MoMSkgPDwgMjU7
CisKKy8vIFRoaXMgZmxhZyB3b3JrcyBhcm91bmQgYSBidWcgaW4gZXZhbHVhdGluZyB1bmFyeSBt
aW51cyBvcGVyYXRvciBvbiBpbnRlZ2VyIG9uIHNvbWUgSU5URUwKKy8vIGRyaXZlcnMuIEl0IHdv
cmtzIGJ5IHRyYW5zbGF0aW5nIC0oaW50KSBpbnRvIH4oaW50KSArIDEuCitjb25zdCBTaENvbXBp
bGVPcHRpb25zIFNIX1JFV1JJVEVfSU5URUdFUl9VTkFSWV9NSU5VU19PUEVSQVRPUiA9IFVJTlQ2
NF9DKDEpIDw8IDI2OworCisvLyBUaGlzIGZsYWcgd29ya3MgYXJvdW5kIGEgYnVnIGluIGV2YWx1
YXRpbmcgaXNuYW4oKSBvbiBzb21lIElOVEVMIEQzRCBhbmQgTWFjIE9TWCBkcml2ZXJzLgorLy8g
SXQgd29ya3MgYnkgdXNpbmcgYW4gZXhwcmVzc2lvbiB0byBlbXVsYXRlIHRoaXMgZnVuY3Rpb24u
Citjb25zdCBTaENvbXBpbGVPcHRpb25zIFNIX0VNVUxBVEVfSVNOQU5fRkxPQVRfRlVOQ1RJT04g
PSBVSU5UNjRfQygxKSA8PCAyNzsKKworLy8gVGhpcyBmbGFnIHdpbGwgdXNlIGFsbCB1bmlmb3Jt
cyBvZiB1bnVzZWQgc3RkMTQwIGFuZCBzaGFyZWQgdW5pZm9ybSBibG9ja3MgYXQgdGhlCisvLyBi
ZWdpbm5pbmcgb2YgdGhlIHZlcnRleC9mcmFnbWVudCBzaGFkZXIncyBtYWluKCkuIEl0IGlzIGlu
dGVuZGVkIGFzIGEgd29ya2Fyb3VuZCBmb3IgTWFjCisvLyBkcml2ZXJzIHdpdGggc2hhZGVyIHZl
cnNpb24gNC4xMC4gSW4gdGhvc2UgZHJpdmVycywgdGhleSB3aWxsIHRyZWF0IHVudXNlZAorLy8g
c3RkMTQwIGFuZCBzaGFyZWQgdW5pZm9ybSBibG9ja3MnIG1lbWJlcnMgYXMgaW5hY3RpdmUuIEhv
d2V2ZXIsIFdlYkdMMi4wIGJhc2VkIG9uCisvLyBPcGVuR0wgRVMzLjAuNCByZXF1aXJlcyBhbGwg
bWVtYmVycyBvZiBhIG5hbWVkIHVuaWZvcm0gYmxvY2sgZGVjbGFyZWQgd2l0aCBhIHNoYXJlZCBv
ciBzdGQxNDAKKy8vIGxheW91dCBxdWFsaWZpZXIgdG8gYmUgY29uc2lkZXJlZCBhY3RpdmUuIFRo
ZSB1bmlmb3JtIGJsb2NrIGl0c2VsZiBpcyBhbHNvIGNvbnNpZGVyZWQgYWN0aXZlLgorY29uc3Qg
U2hDb21waWxlT3B0aW9ucyBTSF9VU0VfVU5VU0VEX1NUQU5EQVJEX1NIQVJFRF9CTE9DS1MgPSBV
SU5UNjRfQygxKSA8PCAyODsKKwogLy8gRGVmaW5lcyBhbHRlcm5hdGUgc3RyYXRlZ2llcyBmb3Ig
aW1wbGVtZW50aW5nIGFycmF5IGluZGV4IGNsYW1waW5nLgogdHlwZWRlZiBlbnVtIHsKICAgLy8g
VXNlIHRoZSBjbGFtcCBpbnRyaW5zaWMgZm9yIGFycmF5IGluZGV4IGNsYW1waW5nLgpAQCAtMjU1
LDYgKzI2MSw4IEBACiAgICAgLy8gU2V0IHRvIDEgdG8gZW5hYmxlIHRoZSBleHRlbnNpb24sIGVs
c2UgMC4KICAgICBpbnQgT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzOwogICAgIGludCBPRVNfRUdM
X2ltYWdlX2V4dGVybmFsOworICAgIGludCBPRVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vzc2wzOwor
ICAgIGludCBOVl9FR0xfc3RyZWFtX2NvbnN1bWVyX2V4dGVybmFsOwogICAgIGludCBBUkJfdGV4
dHVyZV9yZWN0YW5nbGU7CiAgICAgaW50IEVYVF9ibGVuZF9mdW5jX2V4dGVuZGVkOwogICAgIGlu
dCBFWFRfZHJhd19idWZmZXJzOwpAQCAtMzA4LDYgKzMxNiw2OCBAQAogICAgIC8vIFRoZSBtYXhp
bXVtIG51bWJlciBvZiBwYXJhbWV0ZXJzIGEgZnVuY3Rpb24gY2FuIGhhdmUgd2hlbiBTSF9MSU1J
VF9FWFBSRVNTSU9OX0NPTVBMRVhJVFkgaXMKICAgICAvLyB0dXJuZWQgb24uCiAgICAgaW50IE1h
eEZ1bmN0aW9uUGFyYW1ldGVyczsKKworICAgIC8vIEdMRVMgMy4xIGNvbnN0YW50cworCisgICAg
Ly8gbWF4aW11bSBudW1iZXIgb2YgYXZhaWxhYmxlIGltYWdlIHVuaXRzCisgICAgaW50IE1heElt
YWdlVW5pdHM7CisKKyAgICAvLyBtYXhpbXVtIG51bWJlciBvZiBpbWFnZSB1bmlmb3JtcyBpbiBh
IHZlcnRleCBzaGFkZXIKKyAgICBpbnQgTWF4VmVydGV4SW1hZ2VVbmlmb3JtczsKKworICAgIC8v
IG1heGltdW0gbnVtYmVyIG9mIGltYWdlIHVuaWZvcm1zIGluIGEgZnJhZ21lbnQgc2hhZGVyCisg
ICAgaW50IE1heEZyYWdtZW50SW1hZ2VVbmlmb3JtczsKKworICAgIC8vIG1heGltdW0gbnVtYmVy
IG9mIGltYWdlIHVuaWZvcm1zIGluIGEgY29tcHV0ZSBzaGFkZXIKKyAgICBpbnQgTWF4Q29tcHV0
ZUltYWdlVW5pZm9ybXM7CisKKyAgICAvLyBtYXhpbXVtIHRvdGFsIG51bWJlciBvZiBpbWFnZSB1
bmlmb3JtcyBpbiBhIHByb2dyYW0KKyAgICBpbnQgTWF4Q29tYmluZWRJbWFnZVVuaWZvcm1zOwor
CisgICAgLy8gbWF4aW11bSBudW1iZXIgb2Ygc3Nib3MgYW5kIGltYWdlcyBpbiBhIHNoYWRlcgor
ICAgIGludCBNYXhDb21iaW5lZFNoYWRlck91dHB1dFJlc291cmNlczsKKworICAgIC8vIG1heGlt
dW0gbnVtYmVyIG9mIGdyb3VwcyBpbiBlYWNoIGRpbWVuc2lvbgorICAgIHN0ZDo6YXJyYXk8aW50
LCAzPiBNYXhDb21wdXRlV29ya0dyb3VwQ291bnQ7CisgICAgLy8gbWF4aW11bSBudW1iZXIgb2Yg
dGhyZWFkcyBwZXIgd29yayBncm91cCBpbiBlYWNoIGRpbWVuc2lvbgorICAgIHN0ZDo6YXJyYXk8
aW50LCAzPiBNYXhDb21wdXRlV29ya0dyb3VwU2l6ZTsKKworICAgIC8vIG1heGltdW0gbnVtYmVy
IG9mIHRvdGFsIHVuaWZvcm0gY29tcG9uZW50cworICAgIGludCBNYXhDb21wdXRlVW5pZm9ybUNv
bXBvbmVudHM7CisKKyAgICAvLyBtYXhpbXVtIG51bWJlciBvZiB0ZXh0dXJlIGltYWdlIHVuaXRz
IGluIGEgY29tcHV0ZSBzaGFkZXIKKyAgICBpbnQgTWF4Q29tcHV0ZVRleHR1cmVJbWFnZVVuaXRz
OworCisgICAgLy8gbWF4aW11bSBudW1iZXIgb2YgYXRvbWljIGNvdW50ZXJzIGluIGEgY29tcHV0
ZSBzaGFkZXIKKyAgICBpbnQgTWF4Q29tcHV0ZUF0b21pY0NvdW50ZXJzOworCisgICAgLy8gbWF4
aW11bSBudW1iZXIgb2YgYXRvbWljIGNvdW50ZXIgYnVmZmVycyBpbiBhIGNvbXB1dGUgc2hhZGVy
CisgICAgaW50IE1heENvbXB1dGVBdG9taWNDb3VudGVyQnVmZmVyczsKKworICAgIC8vIG1heGlt
dW0gbnVtYmVyIG9mIGF0b21pYyBjb3VudGVycyBpbiBhIHZlcnRleCBzaGFkZXIKKyAgICBpbnQg
TWF4VmVydGV4QXRvbWljQ291bnRlcnM7CisKKyAgICAvLyBtYXhpbXVtIG51bWJlciBvZiBhdG9t
aWMgY291bnRlcnMgaW4gYSBmcmFnbWVudCBzaGFkZXIKKyAgICBpbnQgTWF4RnJhZ21lbnRBdG9t
aWNDb3VudGVyczsKKworICAgIC8vIG1heGltdW0gbnVtYmVyIG9mIGF0b21pYyBjb3VudGVycyBp
biBhIHByb2dyYW0KKyAgICBpbnQgTWF4Q29tYmluZWRBdG9taWNDb3VudGVyczsKKworICAgIC8v
IG1heGltdW0gYmluZGluZyBmb3IgYW4gYXRvbWljIGNvdW50ZXIKKyAgICBpbnQgTWF4QXRvbWlj
Q291bnRlckJpbmRpbmdzOworCisgICAgLy8gbWF4aW11bSBudW1iZXIgb2YgYXRvbWljIGNvdW50
ZXIgYnVmZmVycyBpbiBhIHZlcnRleCBzaGFkZXIKKyAgICBpbnQgTWF4VmVydGV4QXRvbWljQ291
bnRlckJ1ZmZlcnM7CisKKyAgICAvLyBtYXhpbXVtIG51bWJlciBvZiBhdG9taWMgY291bnRlciBi
dWZmZXJzIGluIGEgZnJhZ21lbnQgc2hhZGVyCisgICAgaW50IE1heEZyYWdtZW50QXRvbWljQ291
bnRlckJ1ZmZlcnM7CisKKyAgICAvLyBtYXhpbXVtIG51bWJlciBvZiBhdG9taWMgY291bnRlciBi
dWZmZXJzIGluIGEgcHJvZ3JhbQorICAgIGludCBNYXhDb21iaW5lZEF0b21pY0NvdW50ZXJCdWZm
ZXJzOworCisgICAgLy8gbWF4aW11bSBudW1iZXIgb2YgYnVmZmVyIG9iamVjdCBzdG9yYWdlIGlu
IG1hY2hpbmUgdW5pdHMKKyAgICBpbnQgTWF4QXRvbWljQ291bnRlckJ1ZmZlclNpemU7CisKIH0g
U2hCdWlsdEluUmVzb3VyY2VzOwogCiAvLwpAQCAtMzQzLDcgKzQxMyw3IEBACiAvLyB0eXBlOiBT
cGVjaWZpZXMgdGhlIHR5cGUgb2Ygc2hhZGVyIC0gR0xfRlJBR01FTlRfU0hBREVSIG9yIEdMX1ZF
UlRFWF9TSEFERVIuCiAvLyBzcGVjOiBTcGVjaWZpZXMgdGhlIGxhbmd1YWdlIHNwZWMgdGhlIGNv
bXBpbGVyIG11c3QgY29uZm9ybSB0byAtCiAvLyAgICAgICBTSF9HTEVTMl9TUEVDIG9yIFNIX1dF
QkdMX1NQRUMuCi0vLyBvdXRwdXQ6IFNwZWNpZmllcyB0aGUgb3V0cHV0IGNvZGUgdHlwZSAtIGZv
ciBleGFtcGxlIFNIX0VTU0xfT1VUUFVULCBTSF9HTFNMX0NPTVBBVElCSUxJVFlfT1VUUFVULAor
Ly8gb3V0cHV0OiBTcGVjaWZpZXMgdGhlIG91dHB1dCBjb2RlIHR5cGUgLSBmb3IgZXhhbXBsZSBT
SF9FU1NMX09VVFBVVCwgU0hfR0xTTF9PVVRQVVQsCiAvLyAgICAgICAgIFNIX0hMU0xfM18wX09V
VFBVVCBvciBTSF9ITFNMXzRfMV9PVVRQVVQuIE5vdGU6IEVhY2ggb3V0cHV0IHR5cGUgbWF5IG9u
bHkKIC8vICAgICAgICAgYmUgc3VwcG9ydGVkIGluIHNvbWUgY29uZmlndXJhdGlvbnMuCiAvLyBy
ZXNvdXJjZXM6IFNwZWNpZmllcyB0aGUgYnVpbHQtaW4gcmVzb3VyY2VzLgpAQCAtMzc4LDExICs0
NDgsMTAgQEAKIC8vIFNIX1ZBUklBQkxFUzogRXh0cmFjdHMgYXR0cmlidXRlcywgdW5pZm9ybXMs
IGFuZCB2YXJ5aW5ncy4KIC8vICAgICAgICAgICAgICAgQ2FuIGJlIHF1ZXJpZWQgYnkgY2FsbGlu
ZyBTaEdldFZhcmlhYmxlSW5mbygpLgogLy8KLUNPTVBJTEVSX0VYUE9SVCBib29sIFNoQ29tcGls
ZSgKLSAgICBjb25zdCBTaEhhbmRsZSBoYW5kbGUsCi0gICAgY29uc3QgY2hhciAqIGNvbnN0IHNo
YWRlclN0cmluZ3NbXSwKLSAgICBzaXplX3QgbnVtU3RyaW5ncywKLSAgICBpbnQgY29tcGlsZU9w
dGlvbnMpOworQ09NUElMRVJfRVhQT1JUIGJvb2wgU2hDb21waWxlKGNvbnN0IFNoSGFuZGxlIGhh
bmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb25zdCBz
aGFkZXJTdHJpbmdzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51
bVN0cmluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hDb21waWxlT3B0aW9u
cyBjb21waWxlT3B0aW9ucyk7CiAKIC8vIENsZWFycyB0aGUgcmVzdWx0cyBmcm9tIHRoZSBwcmV2
aW91cyBjb21waWxhdGlvbi4KIENPTVBJTEVSX0VYUE9SVCB2b2lkIFNoQ2xlYXJSZXN1bHRzKGNv
bnN0IFNoSGFuZGxlIGhhbmRsZSk7CkBAIC00MjMsNiArNDkyLDcgQEAKIENPTVBJTEVSX0VYUE9S
VCBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6QXR0cmlidXRlPiAqU2hHZXRBdHRyaWJ1dGVzKGNvbnN0
IFNoSGFuZGxlIGhhbmRsZSk7CiBDT01QSUxFUl9FWFBPUlQgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6
Ok91dHB1dFZhcmlhYmxlPiAqU2hHZXRPdXRwdXRWYXJpYWJsZXMoY29uc3QgU2hIYW5kbGUgaGFu
ZGxlKTsKIENPTVBJTEVSX0VYUE9SVCBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6SW50ZXJmYWNlQmxv
Y2s+ICpTaEdldEludGVyZmFjZUJsb2Nrcyhjb25zdCBTaEhhbmRsZSBoYW5kbGUpOworQ09NUElM
RVJfRVhQT1JUIHNoOjpXb3JrR3JvdXBTaXplIFNoR2V0Q29tcHV0ZVNoYWRlckxvY2FsR3JvdXBT
aXplKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSk7CiAKIHR5cGVkZWYgc3RydWN0CiB7CkBAIC00MzYs
MTIgKzUwNiwxMCBAQAogLy8gZmxhZyBhYm92ZS4KIC8vIFBhcmFtZXRlcnM6CiAvLyBtYXhWZWN0
b3JzOiB0aGUgYXZhaWxhYmxlIHJvd3Mgb2YgcmVnaXN0ZXJzLgotLy8gdmFySW5mb0FycmF5OiBh
biBhcnJheSBvZiB2YXJpYWJsZSBpbmZvICh0eXBlcyBhbmQgc2l6ZXMpLgotLy8gdmFySW5mb0Fy
cmF5U2l6ZTogdGhlIHNpemUgb2YgdGhlIHZhcmlhYmxlIGFycmF5LgorLy8gdmFyaWFibGVzOiBh
biBhcnJheSBvZiB2YXJpYWJsZXMuCiBDT01QSUxFUl9FWFBPUlQgYm9vbCBTaENoZWNrVmFyaWFi
bGVzV2l0aGluUGFja2luZ0xpbWl0cygKICAgICBpbnQgbWF4VmVjdG9ycywKLSAgICBTaFZhcmlh
YmxlSW5mbyAqdmFySW5mb0FycmF5LAotICAgIHNpemVfdCB2YXJJbmZvQXJyYXlTaXplKTsKKyAg
ICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6U2hhZGVyVmFyaWFibGU+ICZ2YXJpYWJsZXMpOwogCiAv
LyBHaXZlcyB0aGUgY29tcGlsZXItYXNzaWduZWQgcmVnaXN0ZXIgZm9yIGFuIGludGVyZmFjZSBi
bG9jay4KIC8vIFRoZSBtZXRob2Qgd3JpdGVzIHRoZSB2YWx1ZSB0byB0aGUgb3V0cHV0IHZhcmlh
YmxlICJpbmRleE91dCIuCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dM
U0xBTkcvU2hhZGVyVmFycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L2luY2x1ZGUvR0xTTEFORy9TaGFkZXJWYXJzLmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xTTEFORy9TaGFkZXJWYXJzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEwLDkgKzEwLDkgQEAKICNpZm5kZWYgR0xTTEFOR19TSEFERVJWQVJTX0hfCiAj
ZGVmaW5lIEdMU0xBTkdfU0hBREVSVkFSU19IXwogCisjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2lu
Y2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPgog
CiAvLyBBc3N1bWUgU2hhZGVyTGFuZy5oIGlzIGluY2x1ZGVkIGJlZm9yZSBTaGFkZXJWYXJzLmgs
IGZvciBzaDo6R0xlbnVtCiAvLyBOb3RlOiBtYWtlIHN1cmUgdG8gaW5jcmVtZW50IEFOR0xFX1NI
X1ZFUlNJT04gd2hlbiBjaGFuZ2luZyBTaGFkZXJWYXJzLmgKQEAgLTIwMyw2ICsyMDMsOSBAQAog
ICAgIC8vIEZpZWxkcyBmcm9tIGJsb2NrcyB3aXRoIG5vbi1lbXB0eSBpbnN0YW5jZSBuYW1lcyBh
cmUgcHJlZml4ZWQgd2l0aCB0aGUgYmxvY2sgbmFtZS4KICAgICBzdGQ6OnN0cmluZyBmaWVsZFBy
ZWZpeCgpIGNvbnN0OwogCisgICAgLy8gRGVjaWRlIHdoZXRoZXIgdHdvIGludGVyZmFjZSBibG9j
a3MgYXJlIHRoZSBzYW1lIGF0IHNoYWRlciBsaW5rIHRpbWUuCisgICAgYm9vbCBpc1NhbWVJbnRl
cmZhY2VCbG9ja0F0TGlua1RpbWUoY29uc3QgSW50ZXJmYWNlQmxvY2sgJm90aGVyKSBjb25zdDsK
KwogICAgIHN0ZDo6c3RyaW5nIG5hbWU7CiAgICAgc3RkOjpzdHJpbmcgbWFwcGVkTmFtZTsKICAg
ICBzdGQ6OnN0cmluZyBpbnN0YW5jZU5hbWU7CkBAIC0yMTMsNiArMjE2LDMyIEBACiAgICAgc3Rk
Ojp2ZWN0b3I8SW50ZXJmYWNlQmxvY2tGaWVsZD4gZmllbGRzOwogfTsKIAorc3RydWN0IENPTVBJ
TEVSX0VYUE9SVCBXb3JrR3JvdXBTaXplCit7CisgICAgdm9pZCBmaWxsKGludCBmaWxsVmFsdWUp
OworICAgIHZvaWQgc2V0TG9jYWxTaXplKGludCBsb2NhbFNpemVYLCBpbnQgbG9jYWxTaXplWSwg
aW50IGxvY2FsU2l6ZVopOworCisgICAgaW50ICZvcGVyYXRvcltdKHNpemVfdCBpbmRleCk7Cisg
ICAgaW50IG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25zdDsKKyAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0OworCisgICAgLy8gQ2hlY2tzIHdoZXRoZXIgdHdvIHdvcmsgZ3JvdXAgc2l6ZSBkZWNs
YXJhdGlvbnMgbWF0Y2guCisgICAgLy8gVHdvIHdvcmsgZ3JvdXAgc2l6ZSBkZWNsYXJhdGlvbnMg
YXJlIHRoZSBzYW1lIGlmIHRoZSBleHBsaWNpdGx5IHNwZWNpZmllZCBlbGVtZW50cyBhcmUgdGhl
CisgICAgLy8gc2FtZSBvciBpZiBvbmUgb2YgdGhlbSBpcyBzcGVjaWZpZWQgYXMgb25lIGFuZCB0
aGUgb3RoZXIgb25lIGlzIG5vdCBzcGVjaWZpZWQKKyAgICBib29sIGlzV29ya0dyb3VwU2l6ZU1h
dGNoaW5nKGNvbnN0IFdvcmtHcm91cFNpemUgJnJpZ2h0KSBjb25zdDsKKworICAgIC8vIENoZWNr
cyB3aGV0aGVyIGFueSBvZiB0aGUgdmFsdWVzIGFyZSBzZXQuCisgICAgYm9vbCBpc0FueVZhbHVl
U2V0KCkgY29uc3Q7CisKKyAgICAvLyBDaGVja3Mgd2hldGhlciBhbGwgb2YgdGhlIHZhbHVlcyBh
cmUgc2V0LgorICAgIGJvb2wgaXNEZWNsYXJlZCgpIGNvbnN0OworCisgICAgLy8gQ2hlY2tzIHdo
ZXRoZXIgZWl0aGVyIGFsbCBvZiB0aGUgdmFsdWVzIGFyZSBzZXQsIG9yIG5vbmUgb2YgdGhlbSBh
cmUuCisgICAgYm9vbCBpc0xvY2FsU2l6ZVZhbGlkKCkgY29uc3Q7CisKKyAgICBpbnQgbG9jYWxT
aXplUXVhbGlmaWVyc1szXTsKK307CisKIH0gIC8vIG5hbWVzcGFjZSBzaAogCiAjZW5kaWYgLy8g
R0xTTEFOR19TSEFERVJWQVJTX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNs
dWRlL2V4cG9ydC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1
ZGUvZXhwb3J0LmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L2luY2x1ZGUvZXhwb3J0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwLDEzICsxMCwxNSBAQAogI2Rl
ZmluZSBMSUJHTEVTVjJfRVhQT1JUX0hfCiAKICNpZiBkZWZpbmVkKF9XSU4zMikKLSMgICBpZiBk
ZWZpbmVkKExJQkdMRVNWMl9JTVBMRU1FTlRBVElPTikgfHwgZGVmaW5lZChMSUJBTkdMRV9JTVBM
RU1FTlRBVElPTikKKyNpZiBkZWZpbmVkKExJQkdMRVNWMl9JTVBMRU1FTlRBVElPTikgfHwgZGVm
aW5lZChMSUJBTkdMRV9JTVBMRU1FTlRBVElPTikgfHwgXAorICAgIGRlZmluZWQoTElCQU5HTEVf
VVRJTF9JTVBMRU1FTlRBVElPTikKICMgICAgICAgZGVmaW5lIEFOR0xFX0VYUE9SVCBfX2RlY2xz
cGVjKGRsbGV4cG9ydCkKICMgICBlbHNlCiAjICAgICAgIGRlZmluZSBBTkdMRV9FWFBPUlQgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpCiAjICAgZW5kaWYKICNlbGlmIGRlZmluZWQoX19HTlVDX18pCi0j
ICAgaWYgZGVmaW5lZChMSUJHTEVTVjJfSU1QTEVNRU5UQVRJT04pIHx8IGRlZmluZWQoTElCQU5H
TEVfSU1QTEVNRU5UQVRJT04pCisjaWYgZGVmaW5lZChMSUJHTEVTVjJfSU1QTEVNRU5UQVRJT04p
IHx8IGRlZmluZWQoTElCQU5HTEVfSU1QTEVNRU5UQVRJT04pIHx8IFwKKyAgICBkZWZpbmVkKExJ
QkFOR0xFX1VUSUxfSU1QTEVNRU5UQVRJT04pCiAjICAgICAgIGRlZmluZSBBTkdMRV9FWFBPUlQg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiAjICAgZWxzZQogIyAgICAg
ICBkZWZpbmUgQU5HTEVfRVhQT1JUCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
YW5nbGUuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmds
ZS5neXAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9h
bmdsZS5neXAJKHdvcmtpbmcgY29weSkKQEAgLTYsNyArNiw2IEBACiAgICAgJ3ZhcmlhYmxlcyc6
CiAgICAgewogICAgICAgICAnYW5nbGVfY29kZSc6IDEsCi0gICAgICAgICdhbmdsZV9wb3N0X2J1
aWxkX3NjcmlwdCUnOiAwLAogICAgICAgICAnYW5nbGVfZ2VuX3BhdGgnOiAnPChTSEFSRURfSU5U
RVJNRURJQVRFX0RJUikvYW5nbGUnLAogICAgICAgICAnYW5nbGVfaWRfc2NyaXB0X2Jhc2UnOiAn
Y29tbWl0X2lkLnB5JywKICAgICAgICAgJ2FuZ2xlX2lkX3NjcmlwdCc6ICc8KGFuZ2xlX2dlbl9w
YXRoKS88KGFuZ2xlX2lkX3NjcmlwdF9iYXNlKScsCkBAIC0xNiwxMSArMTUsMTMgQEAKICAgICAg
ICAgJ2FuZ2xlX2VuYWJsZV9kM2Q5JSc6IDAsCiAgICAgICAgICdhbmdsZV9lbmFibGVfZDNkMTEl
JzogMCwKICAgICAgICAgJ2FuZ2xlX2VuYWJsZV9nbCUnOiAwLAorICAgICAgICAnYW5nbGVfZW5h
YmxlX3Z1bGthbiUnOiAwLAogICAgICAgICAnYW5nbGVfZW5hYmxlX2Vzc2wlJzogMSwgIyBFbmFi
bGUgdGhpcyBmb3IgYWxsIGNvbmZpZ3MgYnkgZGVmYXVsdAogICAgICAgICAnYW5nbGVfZW5hYmxl
X2dsc2wlJzogMSwgIyBFbmFibGUgdGhpcyBmb3IgYWxsIGNvbmZpZ3MgYnkgZGVmYXVsdAogICAg
ICAgICAnYW5nbGVfZW5hYmxlX2hsc2wlJzogMCwKICAgICAgICAgJ2FuZ2xlX2xpbmtfZ2x4JSc6
IDAsCiAgICAgICAgICdhbmdsZV9nbF9saWJyYXJ5X3R5cGUlJzogJ3NoYXJlZF9saWJyYXJ5JywK
KyAgICAgICAgJ2RjaGVja19hbHdheXNfb24lJzogMCwKICAgICAgICAgJ2NvbmRpdGlvbnMnOgog
ICAgICAgICBbCiAgICAgICAgICAgICBbJ09TPT0id2luIicsCkBAIC0yOSw2ICszMCw3IEBACiAg
ICAgICAgICAgICAgICAgJ2FuZ2xlX2VuYWJsZV9kM2Q5JSc6IDEsCiAgICAgICAgICAgICAgICAg
J2FuZ2xlX2VuYWJsZV9kM2QxMSUnOiAxLAogICAgICAgICAgICAgICAgICdhbmdsZV9lbmFibGVf
aGxzbCUnOiAxLAorICAgICAgICAgICAgICAgICdhbmdsZV9lbmFibGVfdnVsa2FuJSc6IDEsCiAg
ICAgICAgICAgICB9XSwKICAgICAgICAgICAgIFsnT1M9PSJsaW51eCIgYW5kIHVzZV94MTE9PTEg
YW5kIGNocm9tZW9zPT0wJywKICAgICAgICAgICAgIHsKQEAgLTQzLDYgKzQ1LDcgQEAKICAgICAg
ICAgICAgICAgICAnYW5nbGVfZW5hYmxlX2dsJSc6IDEsCiAgICAgICAgICAgICB9XSwKICAgICAg
ICAgXSwKKyAgICAgICAgJ2FuZ2xlX2VuYWJsZV9udWxsJSc6IDEsICMgQXZhaWxhYmxlIG9uIGFs
bCBwbGF0Zm9ybXMKICAgICB9LAogICAgICdpbmNsdWRlcyc6CiAgICAgWwpAQCAtNjUsNiArNjgs
NyBAQAogICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICcuJywKICAgICAgICAgICAgICAg
ICAnLi4vaW5jbHVkZScsCisgICAgICAgICAgICAgICAgJ2NvbW1vbi90aGlyZF9wYXJ0eS9udW1l
cmljcycsCiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6CiAgICAg
ICAgICAgICBbCkBAIC03NCwxMSArNzgsMjUgQEAKICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICAnaW5jbHVkZV9kaXJzJzoKICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAg
ICAgICc8KGFuZ2xlX3BhdGgpL2luY2x1ZGUnLAogICAgICAgICAgICAgICAgICAgICAnPChhbmds
ZV9wYXRoKS9zcmMnLAotICAgICAgICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9pbmNsdWRl
JywKKyAgICAgICAgICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2NvbW1vbi90aGlyZF9w
YXJ0eS9udW1lcmljcycsCiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAnY29u
ZGl0aW9ucyc6CiAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICBbJ2RjaGVj
a19hbHdheXNfb249PTEnLAorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAnY29uZmlndXJhdGlvbnMnOgorICAgICAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdSZWxlYXNlX0Jhc2UnOgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMn
OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnQU5HTEVfRU5BQkxFX1JFTEVBU0VfQVNTRVJUUycsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIH1dLAog
ICAgICAgICAgICAgICAgICAgICBbJ09TPT0id2luIicsCiAgICAgICAgICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICdjb25maWd1cmF0aW9ucyc6CkBAIC05Niw2ICsxMTQs
MTkgQEAKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAnY29uZGl0aW9ucyc6CiAgICAgICAg
ICAgICBbCisgICAgICAgICAgICAgICAgWydkY2hlY2tfYWx3YXlzX29uPT0xJywKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICdjb25maWd1cmF0aW9ucyc6CisgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICdSZWxlYXNlX0Jhc2UnOgor
ICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdk
ZWZpbmVzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdBTkdMRV9FTkFCTEVfUkVMRUFTRV9BU1NFUlRTJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgICBb
J09TPT0id2luIicsCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAnY29u
ZmlndXJhdGlvbnMnOgpAQCAtMTEzLDYgKzE0NCwzMyBAQAogICAgICAgICB9LAogCiAgICAgICAg
IHsKKyAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV9pbWFnZV91dGlsJywKKyAgICAg
ICAgICAgICd0eXBlJzogJ3N0YXRpY19saWJyYXJ5JywKKyAgICAgICAgICAgICdpbmNsdWRlcyc6
IFsgJy4uL2J1aWxkL2NvbW1vbl9kZWZpbmVzLmd5cGknLCBdLAorICAgICAgICAgICAgJ3NvdXJj
ZXMnOgorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICc8QChsaWJhbmdsZV9pbWFnZV91
dGlsX3NvdXJjZXMpJywKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAnaW5jbHVkZV9kaXJz
JzoKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAnLicsCisgICAgICAgICAgICAgICAg
Jy4uL2luY2x1ZGUnLAorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICdkZXBlbmRlbmNpZXMn
OgorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICdhbmdsZV9jb21tb24nLAorICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgICdkaXJlY3RfZGVwZW5kZW50X3NldHRpbmdzJzoKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzoKKyAgICAgICAgICAgICAg
ICBbCisgICAgICAgICAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL2luY2x1ZGUnLAorICAgICAg
ICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMnLAorICAgICAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICB9LAorICAgICAgICB9LAorCisgICAgICAgIHsKICAgICAgICAgICAgICd0YXJn
ZXRfbmFtZSc6ICdjb3B5X3NjcmlwdHMnLAogICAgICAgICAgICAgJ3R5cGUnOiAnbm9uZScsCiAg
ICAgICAgICAgICAnaW5jbHVkZXMnOiBbICcuLi9idWlsZC9jb21tb25fZGVmaW5lcy5neXBpJywg
XSwKQEAgLTI0OCwyOCArMzA2LDUgQEAKICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAg
XSwgIyB0YXJnZXRzCiAgICAgICAgIH1dLAotICAgICAgICBbJ2FuZ2xlX3Bvc3RfYnVpbGRfc2Ny
aXB0IT0wIGFuZCBPUz09IndpbiInLAotICAgICAgICB7Ci0gICAgICAgICAgICAndGFyZ2V0cyc6
Ci0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAn
dGFyZ2V0X25hbWUnOiAncG9zdF9idWlsZCcsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJzog
J25vbmUnLAotICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZXMnOiBbICcuLi9idWlsZC9jb21t
b25fZGVmaW5lcy5neXBpJywgXSwKLSAgICAgICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6
IFsgJ2xpYkdMRVN2MicsICdsaWJFR0wnIF0sCi0gICAgICAgICAgICAgICAgICAgICdhY3Rpb25z
JzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb25fbmFtZSc6ICdBTkdMRSBQb3N0LUJ1aWxk
IFNjcmlwdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21lc3NhZ2UnOiAnUnVubmlu
ZyA8KGFuZ2xlX3Bvc3RfYnVpbGRfc2NyaXB0KS4uLicsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ21zdnNfY3lnd2luX3NoZWxsJzogMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnaW5wdXRzJzogWyAnPChhbmdsZV9wb3N0X2J1aWxkX3NjcmlwdCknLCAnPCFAKFsicHl0aG9u
IiwgIjwoYW5nbGVfcG9zdF9idWlsZF9zY3JpcHQpIiwgImlucHV0cyIsICI8KGFuZ2xlX3BhdGgp
IiwgIjwoQ09ORklHVVJBVElPTl9OQU1FKSIsICIkKFBsYXRmb3JtTmFtZSkiLCAiPChQUk9EVUNU
X0RJUikiXSknIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ291dHB1dHMnOiBbICc8
IUAocHl0aG9uIDwoYW5nbGVfcG9zdF9idWlsZF9zY3JpcHQpIG91dHB1dHMgIjwoYW5nbGVfcGF0
aCkiICI8KENPTkZJR1VSQVRJT05fTkFNRSkiICIkKFBsYXRmb3JtTmFtZSkiICI8KFBST0RVQ1Rf
RElSKSIpJyBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb24nOiBbJ3B5dGhv
bicsICc8KGFuZ2xlX3Bvc3RfYnVpbGRfc2NyaXB0KScsICdydW4nLCAnPChhbmdsZV9wYXRoKScs
ICc8KENPTkZJR1VSQVRJT05fTkFNRSknLCAnJChQbGF0Zm9ybU5hbWUpJywgJzwoUFJPRFVDVF9E
SVIpJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBd
LCAjYWN0aW9ucwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLCAjIHRhcmdldHMK
LSAgICAgICAgfV0sCiAgICAgXSAjIGNvbmRpdGlvbnMKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21taXRfaWQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbW1pdF9pZC5weQkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbW1pdF9pZC5weQkod29ya2luZyBjb3B5KQpAQCAtMiwxMiAr
MiwxNiBAQAogaW1wb3J0IHN5cwogaW1wb3J0IG9zCiAKLSMgVXNhZ2U6IGNvbW1pdF9pZC5weSBj
aGVjayA8YW5nbGVfZGlyPiAoY2hlY2tzIGlmIGdpdCBpcyBwcmVzZW50KQotIyBVc2FnZTogY29t
bWl0X2lkLnB5IGdlbiA8YW5nbGVfZGlyPiA8ZmlsZV90b193cml0ZT4gKGdlbmVyYXRlcyBjb21t
aXQgaWQpCit1c2FnZSA9ICIiIlwKK1VzYWdlOiBjb21taXRfaWQucHkgY2hlY2sgPGFuZ2xlX2Rp
cj4gICAgICAgICAgICAgICAgLSBjaGVjayBpZiBnaXQgaXMgcHJlc2VudAorICAgICAgIGNvbW1p
dF9pZC5weSBnZW4gPGFuZ2xlX2Rpcj4gPGZpbGVfdG9fd3JpdGU+ICAtIGdlbmVyYXRlIGNvbW1p
dC5oIiIiCiAKIGRlZiBncmFiX291dHB1dChjb21tYW5kLCBjd2QpOgogICAgIHJldHVybiBzcC5Q
b3Blbihjb21tYW5kLCBzdGRvdXQ9c3AuUElQRSwgc2hlbGw9VHJ1ZSwgY3dkPWN3ZCkuY29tbXVu
aWNhdGUoKVswXS5zdHJpcCgpCiAKK2lmIGxlbihzeXMuYXJndikgPCAzOgorICAgIHN5cy5leGl0
KHVzYWdlKQorCiBvcGVyYXRpb24gPSBzeXMuYXJndlsxXQogY3dkID0gc3lzLmFyZ3ZbMl0KIApJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9Db2xvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vQ29sb3IuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL0NvbG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIENvbG9yLmgg
OiBEZWZpbmVzIHRoZSBDb2xvciB0eXBlIHVzZWQgdGhyb3VnaG91dCB0aGUgQU5HTEUgbGlicmFy
aWVzCisKKyNpZm5kZWYgQ09NTU9OX0NPTE9SX0hfCisjZGVmaW5lIENPTU1PTl9DT0xPUl9IXwor
CituYW1lc3BhY2UgYW5nbGUKK3sKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQ29s
b3IKK3sKKyAgICBUIHJlZDsKKyAgICBUIGdyZWVuOworICAgIFQgYmx1ZTsKKyAgICBUIGFscGhh
OworCisgICAgQ29sb3IoKTsKKyAgICBDb2xvcihUIHIsIFQgZywgVCBiLCBUIGEpOworfTsKKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citib29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3I8VD4gJmEs
IGNvbnN0IENvbG9yPFQ+ICZiKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citib29sIG9wZXJh
dG9yIT0oY29uc3QgQ29sb3I8VD4gJmEsIGNvbnN0IENvbG9yPFQ+ICZiKTsKKwordHlwZWRlZiBD
b2xvcjxmbG9hdD4gQ29sb3JGOwordHlwZWRlZiBDb2xvcjxpbnQ+IENvbG9ySTsKK3R5cGVkZWYg
Q29sb3I8dW5zaWduZWQgaW50PiBDb2xvclVJOworCit9ICAvLyBuYW1lc3BhY2UgYW5nbGUKKwor
Ly8gVE9ETzogTW92ZSB0aGlzIGZ1bGx5IGludG8gdGhlIGFuZ2xlIG5hbWVzcGFjZQorbmFtZXNw
YWNlIGdsCit7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordXNpbmcgQ29sb3IgICA9IGFuZ2xl
OjpDb2xvcjxUPjsKK3VzaW5nIENvbG9yRiAgPSBhbmdsZTo6Q29sb3JGOwordXNpbmcgQ29sb3JJ
ICA9IGFuZ2xlOjpDb2xvckk7Cit1c2luZyBDb2xvclVJID0gYW5nbGU6OkNvbG9yVUk7CisKK30g
IC8vIG5hbWVzcGFjZSBnbAorCisjaW5jbHVkZSAiQ29sb3IuaW5sIgorCisjZW5kaWYgIC8vIENP
TU1PTl9DT0xPUl9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9D
b2xvci5pbmwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1v
bi9Db2xvci5pbmwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbW1vbi9Db2xvci5pbmwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNyBAQAorLy8KKy8v
IENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisKKy8vIENvbG9yLmlubCA6IElubGluZSBkZWZpbml0aW9ucyBvZiBzb21lIGZ1bmN0
aW9ucyBmcm9tIENvbG9yLmgKKworbmFtZXNwYWNlIGFuZ2xlCit7CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgorQ29sb3I8VD46OkNvbG9yKCkgOiBDb2xvcigwLCAwLCAwLCAwKQoreworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK0NvbG9yPFQ+OjpDb2xvcihUIHIsIFQgZywgVCBiLCBUIGEp
IDogcmVkKHIpLCBncmVlbihnKSwgYmx1ZShiKSwgYWxwaGEoYSkKK3sKK30KKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Citib29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3I8VD4gJmEsIGNvbnN0IENv
bG9yPFQ+ICZiKQoreworICAgIHJldHVybiBhLnJlZCA9PSBiLnJlZCAmJgorICAgICAgICAgICBh
LmdyZWVuID09IGIuZ3JlZW4gJiYKKyAgICAgICAgICAgYS5ibHVlID09IGIuYmx1ZSAmJgorICAg
ICAgICAgICBhLmFscGhhID09IGIuYWxwaGE7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IENvbG9yPFQ+ICZhLCBjb25zdCBDb2xvcjxUPiAmYikKK3sK
KyAgICByZXR1cm4gIShhID09IGIpOworfQorCit9ICAvLyBuYW1lc3BhY2UgYW5nbGUKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vT3B0aW9uYWwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL09wdGlvbmFsLmgJKHJldmlz
aW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vT3B0aW9u
YWwuaAkod29ya2luZyBjb3B5KQpAQCAtMTgsMTAgKzE4LDcgQEAKICAgICAgICAgICBtVmFsdWUo
VCgpKQogICAgIHt9CiAKLSAgICBleHBsaWNpdCBPcHRpb25hbChjb25zdCBUICZ2YWx1ZUluKQot
ICAgICAgICA6IG1WYWxpZCh0cnVlKSwKLSAgICAgICAgICBtVmFsdWUodmFsdWVJbikKLSAgICB7
fQorICAgIE9wdGlvbmFsKGNvbnN0IFQgJnZhbHVlSW4pIDogbVZhbGlkKHRydWUpLCBtVmFsdWUo
dmFsdWVJbikge30KIAogICAgIE9wdGlvbmFsKGNvbnN0IE9wdGlvbmFsICZvdGhlcikKICAgICAg
ICAgOiBtVmFsaWQob3RoZXIubVZhbGlkKSwKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21tb24vYW5nbGV1dGlscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbW1vbi9hbmdsZXV0aWxzLmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9hbmdsZXV0aWxzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsNyArMzYsMTAgQEAKIAogc3RkOjpzdHJpbmcgRm9ybWF0U3RyaW5nKGNv
bnN0IGNoYXIgKmZtdCwgdmFfbGlzdCB2YXJhcmcpCiB7Ci0gICAgc3RhdGljIGF1dG8mIGJ1ZmZl
ciA9ICpuZXcgc3RkOjp2ZWN0b3I8Y2hhcj4oNTEyKTsKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMg
cHVzaAorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2V4aXQtdGltZS1kZXN0cnVj
dG9ycyIKKyAgICBzdGF0aWMgc3RkOjp2ZWN0b3I8Y2hhcj4gYnVmZmVyKDUxMik7CisjcHJhZ21h
IEdDQyBkaWFnbm9zdGljIHBvcAogCiAgICAgc2l6ZV90IGxlbiA9IEZvcm1hdFN0cmluZ0ludG9W
ZWN0b3IoZm10LCB2YXJhcmcsIGJ1ZmZlcik7CiAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCZidWZm
ZXJbMF0sIGxlbik7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2Fu
Z2xldXRpbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
bW9uL2FuZ2xldXRpbHMuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbW1vbi9hbmdsZXV0aWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEwICsz
NCwxMCBAQAogfTsKIAogZXh0ZXJuIGNvbnN0IHVpbnRwdHJfdCBEaXJ0eVBvaW50ZXI7Ci19Cit9
ICAvLyBuYW1lc3BhY2UgYW5nbGUKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgot
aW5saW5lIHNpemVfdCBBcnJheVNpemUoVCgmKVtOXSkKK2NvbnN0ZXhwciBpbmxpbmUgc2l6ZV90
IEFycmF5U2l6ZShUICgmKVtOXSkKIHsKICAgICByZXR1cm4gTjsKIH0KQEAgLTYyLDcgKzYyLDcg
QEAKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIFNhZmVEZWxldGUoVComIHJlc291
cmNlKQordm9pZCBTYWZlRGVsZXRlKFQgKiZyZXNvdXJjZSkKIHsKICAgICBkZWxldGUgcmVzb3Vy
Y2U7CiAgICAgcmVzb3VyY2UgPSBOVUxMOwpAQCAtMTE2LDcgKzExNiwxMCBAQAogCiBpbmxpbmUg
Y29uc3QgY2hhciogTWFrZVN0YXRpY1N0cmluZyhjb25zdCBzdGQ6OnN0cmluZyAmc3RyKQogewot
ICAgIHN0YXRpYyBhdXRvJiBzdHJpbmdzID0gKm5ldyBzdGQ6OnNldDxzdGQ6OnN0cmluZz47Cisj
cHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3Jl
ZCAiLVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMiCisgICAgc3RhdGljIHN0ZDo6c2V0PHN0ZDo6c3Ry
aW5nPiBzdHJpbmdzOworI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKICAgICBzdGQ6OnNldDxz
dGQ6OnN0cmluZz46Oml0ZXJhdG9yIGl0ID0gc3RyaW5ncy5maW5kKHN0cik7CiAgICAgaWYgKGl0
ICE9IHN0cmluZ3MuZW5kKCkpCiAgICAgewpAQCAtMTU2LDExICsxNTksMjAgQEAKIHN0ZDo6c3Ry
aW5nIEZvcm1hdFN0cmluZyhjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgdmFyYXJnKTsKIHN0ZDo6
c3RyaW5nIEZvcm1hdFN0cmluZyhjb25zdCBjaGFyICpmbXQsIC4uLik7CiAKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorc3RkOjpzdHJpbmcgVG9TdHJpbmcoY29uc3QgVCAmdmFsdWUpCit7CisgICAg
c3RkOjpvc3RyaW5nc3RyZWFtIG87CisgICAgbyA8PCB2YWx1ZTsKKyAgICByZXR1cm4gby5zdHIo
KTsKK30KKwogLy8gc25wcmludGYgaXMgbm90IGRlZmluZWQgd2l0aCBNU1ZDIHByaW9yIHRvIHRv
IG1zdmMxNAogI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSIDwgMTkwMAogI2RlZmlu
ZSBzbnByaW50ZiBfc25wcmludGYKICNlbmRpZgogCisjZGVmaW5lIEdMX0JHUjU2NV9BTkdMRVgg
MHg2QUJCCiAjZGVmaW5lIEdMX0JHUkE0X0FOR0xFWCAweDZBQkMKICNkZWZpbmUgR0xfQkdSNV9B
MV9BTkdMRVggMHg2QUJECiAjZGVmaW5lIEdMX0lOVF82NF9BTkdMRVggMHg2QUJFCkBAIC0xNjks
NCArMTgxLDEwIEBACiAvLyBIaWRkZW4gZW51bSBmb3IgdGhlIE5VTEwgRDNEIGRldmljZSB0eXBl
LgogI2RlZmluZSBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfTlVMTF9BTkdMRSAweDZB
QzAKIAorI2RlZmluZSBBTkdMRV9UUllfQ0hFQ0tFRF9NQVRIKHJlc3VsdCkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghcmVzdWx0LklzVmFsaWQoKSkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiSW50ZWdlciBvdmVyZmxv
dy4iKTsgXAorICAgIH0KKwogI2VuZGlmIC8vIENPTU1PTl9BTkdMRVVUSUxTX0hfCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmNwcAkocmV2aXNpb24g
MjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9kZWJ1Zy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTcsMTkgKzcsNTQgQEAKIC8vIGRlYnVnLmNwcDogRGVidWdnaW5n
IHV0aWxpdGllcy4KIAogI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgotI2luY2x1ZGUgImNvbW1v
bi9wbGF0Zm9ybS5oIgotI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCiAKICNpbmNsdWRl
IDxzdGRhcmcuaD4KKworI2luY2x1ZGUgPGNzdGRpbz4KKyNpbmNsdWRlIDxmc3RyZWFtPgorI2lu
Y2x1ZGUgPGlvc3RyZWFtPgogI2luY2x1ZGUgPHZlY3Rvcj4KLSNpbmNsdWRlIDxmc3RyZWFtPgot
I2luY2x1ZGUgPGNzdGRpbz4KIAorI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisjaW5j
bHVkZSAiY29tbW9uL3BsYXRmb3JtLmgiCisjaW5jbHVkZSAiY29tbW9uL09wdGlvbmFsLmgiCisK
IG5hbWVzcGFjZSBnbAogewogCiBuYW1lc3BhY2UKIHsKKworY2xhc3MgRm9ybWF0dGVkU3RyaW5n
IGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCit7CisgIHB1YmxpYzoKKyAgICBGb3JtYXR0ZWRT
dHJpbmcoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IHZhcmFyZykgOiBtRm9ybWF0KGZvcm1h
dCkKKyAgICB7CisgICAgICAgIHZhX2NvcHkobVZhckFyZywgdmFyYXJnKTsKKyAgICB9CisKKyAg
ICBjb25zdCBjaGFyICpjX3N0cigpIHsgcmV0dXJuIHN0cigpLmNfc3RyKCk7IH0KKworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZzdHIoKQorICAgIHsKKyAgICAgICAgaWYgKCFtTWVzc2FnZS52YWxp
ZCgpKQorICAgICAgICB7CisgICAgICAgICAgICBtTWVzc2FnZSA9IEZvcm1hdFN0cmluZyhtRm9y
bWF0LCBtVmFyQXJnKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbU1lc3NhZ2UudmFsdWUo
KTsKKyAgICB9CisKKyAgICBzaXplX3QgbGVuZ3RoKCkKKyAgICB7CisgICAgICAgIGNfc3RyKCk7
CisgICAgICAgIHJldHVybiBtTWVzc2FnZS52YWx1ZSgpLmxlbmd0aCgpOworICAgIH0KKworICBw
cml2YXRlOgorICAgIGNvbnN0IGNoYXIgKm1Gb3JtYXQ7CisgICAgdmFfbGlzdCBtVmFyQXJnOwor
ICAgIE9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBtTWVzc2FnZTsKK307CiBlbnVtIERlYnVnVHJhY2VP
dXRwdXRUeXBlCiB7CiAgICBEZWJ1Z1RyYWNlT3V0cHV0VHlwZU5vbmUsCkBAIC0zNCw3ICs2OSwx
MCBAQAogewogICAgIGlmIChEZWJ1Z0Fubm90YXRpb25zQWN0aXZlKCkpCiAgICAgewotICAgICAg
ICBzdGF0aWMgYXV0byYgYnVmZmVyID0gKm5ldyBzdGQ6OnZlY3RvcjxjaGFyPig1MTIpOworI3By
YWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQg
Ii1XZXhpdC10aW1lLWRlc3RydWN0b3JzIgorICAgICAgICBzdGF0aWMgc3RkOjp2ZWN0b3I8Y2hh
cj4gYnVmZmVyKDUxMik7CisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAogICAgICAgICBzaXpl
X3QgbGVuID0gRm9ybWF0U3RyaW5nSW50b1ZlY3Rvcihmb3JtYXQsIHZhcmFyZywgYnVmZmVyKTsK
ICAgICAgICAgc3RkOjp3c3RyaW5nIGZvcm1hdHRlZFdpZGVNZXNzYWdlKGJ1ZmZlci5iZWdpbigp
LCBidWZmZXIuYmVnaW4oKSArIGxlbik7CiAKQEAgLTUyLDE5ICs5MCwxNSBAQAogICAgICAgICB9
CiAgICAgfQogCi0gICAgc3RkOjpzdHJpbmcgZm9ybWF0dGVkTWVzc2FnZTsKLSAgICBVTlVTRURf
VkFSSUFCTEUoZm9ybWF0dGVkTWVzc2FnZSk7CisgICAgRm9ybWF0dGVkU3RyaW5nIGZvcm1hdHRl
ZE1lc3NhZ2UoZm9ybWF0LCB2YXJhcmcpOwogCi0jaWYgIWRlZmluZWQoTkRFQlVHKSAmJiBkZWZp
bmVkKF9NU0NfVkVSKQogICAgIGlmIChtZXNzYWdlVHlwZSA9PSBNRVNTQUdFX0VSUikKICAgICB7
Ci0gICAgICAgIGlmIChmb3JtYXR0ZWRNZXNzYWdlLmVtcHR5KCkpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGZvcm1hdHRlZE1lc3NhZ2UgPSBGb3JtYXRTdHJpbmcoZm9ybWF0LCB2YXJhcmcpOwot
ICAgICAgICB9CisgICAgICAgIHN0ZDo6Y2VyciA8PCBmb3JtYXR0ZWRNZXNzYWdlLmNfc3RyKCk7
CisjaWYgIWRlZmluZWQoTkRFQlVHKSAmJiBkZWZpbmVkKF9NU0NfVkVSKQogICAgICAgICBPdXRw
dXREZWJ1Z1N0cmluZ0EoZm9ybWF0dGVkTWVzc2FnZS5jX3N0cigpKTsKKyNlbmRpZiAgLy8gIWRl
ZmluZWQoTkRFQlVHKSAmJiBkZWZpbmVkKF9NU0NfVkVSKQogICAgIH0KLSNlbmRpZgogCiAjaWYg
ZGVmaW5lZChBTkdMRV9FTkFCTEVfREVCVUdfVFJBQ0UpCiAjaWYgZGVmaW5lZChOREVCVUcpCkBA
IC03MiwxMiArMTA2LDcgQEAKICAgICB7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0jZW5kaWYg
Ly8gTkRFQlVHCi0gICAgaWYgKGZvcm1hdHRlZE1lc3NhZ2UuZW1wdHkoKSkKLSAgICB7Ci0gICAg
ICAgIGZvcm1hdHRlZE1lc3NhZ2UgPSBGb3JtYXRTdHJpbmcoZm9ybWF0LCB2YXJhcmcpOwotICAg
IH0KLQorI2VuZGlmICAvLyBOREVCVUcKICAgICBzdGF0aWMgc3RkOjpvZnN0cmVhbSBmaWxlKFRS
QUNFX09VVFBVVF9GSUxFLCBzdGQ6Om9mc3RyZWFtOjphcHApOwogICAgIGlmIChmaWxlKQogICAg
IHsKQEAgLTg3LDkgKzExNiw5IEBACiAKICNpZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9ERUJVR19U
UkFDRV9UT19ERUJVR0dFUikKICAgICBPdXRwdXREZWJ1Z1N0cmluZ0EoZm9ybWF0dGVkTWVzc2Fn
ZS5jX3N0cigpKTsKLSNlbmRpZiAvLyBBTkdMRV9FTkFCTEVfREVCVUdfVFJBQ0VfVE9fREVCVUdH
RVIKKyNlbmRpZiAgLy8gQU5HTEVfRU5BQkxFX0RFQlVHX1RSQUNFX1RPX0RFQlVHR0VSCiAKLSNl
bmRpZiAvLyBBTkdMRV9FTkFCTEVfREVCVUdfVFJBQ0UKKyNlbmRpZiAgLy8gQU5HTEVfRU5BQkxF
X0RFQlVHX1RSQUNFCiB9CiAKIH0gLy8gbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbW1vbi9kZWJ1Zy5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3
LDcgKzU3LDcgQEAKIHZvaWQgVW5pbml0aWFsaXplRGVidWdBbm5vdGF0aW9ucygpOwogYm9vbCBE
ZWJ1Z0Fubm90YXRpb25zQWN0aXZlKCk7CiAKLX0KK30gIC8vIG5hbWVzcGFjZSBnbAogCiAjaWYg
ZGVmaW5lZChBTkdMRV9FTkFCTEVfREVCVUdfVFJBQ0UpIHx8IGRlZmluZWQoQU5HTEVfRU5BQkxF
X0RFQlVHX0FOTk9UQVRJT05TKQogI2RlZmluZSBBTkdMRV9UUkFDRV9FTkFCTEVECkBAIC02NCw2
ICs2NCw5IEBACiAjZW5kaWYKIAogI2RlZmluZSBBTkdMRV9FTVBUWV9TVEFURU1FTlQgZm9yICg7
OykgYnJlYWsKKyNpZiAhZGVmaW5lZChOREVCVUcpIHx8IGRlZmluZWQoQU5HTEVfRU5BQkxFX1JF
TEVBU0VfQVNTRVJUUykKKyNkZWZpbmUgQU5HTEVfRU5BQkxFX0FTU0VSVFMKKyNlbmRpZgogCiAv
LyBBIG1hY3JvIHRvIG91dHB1dCBhIHRyYWNlIG9mIGEgZnVuY3Rpb24gY2FsbCBhbmQgaXRzIGFy
Z3VtZW50cyB0byB0aGUgZGVidWdnaW5nIGxvZwogI2lmIGRlZmluZWQoQU5HTEVfVFJBQ0VfRU5B
QkxFRCkKQEAgLTgwLDcgKzgzLDcgQEAKICNlbmRpZgogCiAvLyBBIG1hY3JvIHRvIG91dHB1dCBh
IGZ1bmN0aW9uIGNhbGwgYW5kIGl0cyBhcmd1bWVudHMgdG8gdGhlIGRlYnVnZ2luZyBsb2csIGlu
IGNhc2Ugb2YgZXJyb3IuCi0jaWYgZGVmaW5lZChBTkdMRV9UUkFDRV9FTkFCTEVEKQorI2lmIGRl
ZmluZWQoQU5HTEVfVFJBQ0VfRU5BQkxFRCkgfHwgZGVmaW5lZChBTkdMRV9FTkFCTEVfQVNTRVJU
UykKICNkZWZpbmUgRVJSKG1lc3NhZ2UsIC4uLikgZ2w6OnRyYWNlKGZhbHNlLCBnbDo6TUVTU0FH
RV9FUlIsICJlcnI6ICVzKCVkKTogIiBtZXNzYWdlICJcbiIsIF9fRlVOQ1RJT05fXywgX19MSU5F
X18sICMjX19WQV9BUkdTX18pCiAjZWxzZQogI2RlZmluZSBFUlIobWVzc2FnZSwgLi4uKSAodm9p
ZCgwKSkKQEAgLTEwMSwxMyArMTA0LDI1IEBACiAjdW5kZWYgQU5HTEVfVFJBQ0VfRU5BQkxFRAog
I2VuZGlmCiAKKyNpZiBkZWZpbmVkKENPTVBJTEVSX0dDQykgfHwgZGVmaW5lZChfX2NsYW5nX18p
CisjZGVmaW5lIEFOR0xFX0NSQVNIKCkgX19idWlsdGluX3RyYXAoKQorI2Vsc2UKKyNkZWZpbmUg
QU5HTEVfQ1JBU0goKSAoKHZvaWQpKCoodm9sYXRpbGUgY2hhciAqKTAgPSAwKSkKKyNlbmRpZgor
CisjaWYgIWRlZmluZWQoTkRFQlVHKQorI2RlZmluZSBBTkdMRV9BU1NFUlRfSU1QTChleHByZXNz
aW9uKSBhc3NlcnQoZXhwcmVzc2lvbikKKyNlbHNlCisvLyBUT0RPKGptYWRpbGwpOiBEZXRlY3Qg
aWYgZGVidWdnZXIgaXMgYXR0YWNoZWQgYW5kIGJyZWFrLgorI2RlZmluZSBBTkdMRV9BU1NFUlRf
SU1QTChleHByZXNzaW9uKSBBTkdMRV9DUkFTSCgpCisjZW5kaWYgIC8vICFkZWZpbmVkKE5ERUJV
RykKKwogLy8gQSBtYWNybyBhc3NlcnRpbmcgYSBjb25kaXRpb24gYW5kIG91dHB1dHRpbmcgZmFp
bHVyZXMgdG8gdGhlIGRlYnVnIGxvZwotI2lmICFkZWZpbmVkKE5ERUJVRykKLSNkZWZpbmUgQVNT
RVJUKGV4cHJlc3Npb24pIHsgXAotICAgIGlmKCEoZXhwcmVzc2lvbikpIFwKLSAgICAgICAgRVJS
KCJcdCEgQXNzZXJ0IGZhaWxlZCBpbiAlcyglZCk6ICVzXG4iLCBfX0ZVTkNUSU9OX18sIF9fTElO
RV9fLCAjZXhwcmVzc2lvbik7IFwKLSAgICAgICAgYXNzZXJ0KGV4cHJlc3Npb24pOyBcCi0gICAg
fSBBTkdMRV9FTVBUWV9TVEFURU1FTlQKKyNpZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9BU1NFUlRT
KQorI2RlZmluZSBBU1NFUlQoZXhwcmVzc2lvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKGV4cHJl
c3Npb24gPyBzdGF0aWNfY2FzdDx2b2lkPigwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICA6IChFUlIo
Ilx0ISBBc3NlcnQgZmFpbGVkIGluICVzKCVkKTogJXNcbiIsIF9fRlVOQ1RJT05fXywgX19MSU5F
X18sICNleHByZXNzaW9uKSwgXAorICAgICAgICAgICAgICAgICAgIEFOR0xFX0FTU0VSVF9JTVBM
KGV4cHJlc3Npb24pKSkKICNkZWZpbmUgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRSh2YXJpYWJs
ZSkKICNlbHNlCiAjZGVmaW5lIEFTU0VSVChleHByZXNzaW9uKSAodm9pZCgwKSkKQEAgLTEyMiwy
OSArMTM3LDIwIEBACiAjZGVmaW5lIE5PQVNTRVJUX1VOSU1QTEVNRU5URUQgMQogI2VuZGlmCiAK
LS8vIERlZmluZSBOT0FTU0VSVF9VTklNUExFTUVOVEVEIHRvIG5vbiB6ZXJvIHRvIHNraXAgdGhl
IGFzc2VydCBmYWlsIGluIHRoZSB1bmltcGxlbWVudGVkIGNoZWNrcwogLy8gVGhpcyB3aWxsIGFs
bG93IHVzIHRvIHRlc3Qgd2l0aCBzb21lIGF1dG9tYXRlZCB0ZXN0IHN1aXRlcyAoZWcgZEVRUCkg
d2l0aG91dCBjcmFzaGluZwogI2lmbmRlZiBOT0FTU0VSVF9VTklNUExFTUVOVEVECiAjZGVmaW5l
IE5PQVNTRVJUX1VOSU1QTEVNRU5URUQgMAogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChOREVCVUcp
Ci0jZGVmaW5lIFVOSU1QTEVNRU5URUQoKSB7IFwKLSAgICBGSVhNRSgiXHQhIFVuaW1wbGVtZW50
ZWQ6ICVzKCVkKVxuIiwgX19GVU5DVElPTl9fLCBfX0xJTkVfXyk7IFwKLSAgICBhc3NlcnQoTk9B
U1NFUlRfVU5JTVBMRU1FTlRFRCk7IFwKLSAgICB9IEFOR0xFX0VNUFRZX1NUQVRFTUVOVAotI2Vs
c2UKLSAgICAjZGVmaW5lIFVOSU1QTEVNRU5URUQoKSBGSVhNRSgiXHQhIFVuaW1wbGVtZW50ZWQ6
ICVzKCVkKVxuIiwgX19GVU5DVElPTl9fLCBfX0xJTkVfXykKLSNlbmRpZgorI2RlZmluZSBVTklN
UExFTUVOVEVEKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIEZJWE1FKCJcdCEgVW5pbXBsZW1lbnRlZDogJXMo
JWQpXG4iLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fKTsgXAorICAgICAgICBBU1NFUlQoTk9BU1NF
UlRfVU5JTVBMRU1FTlRFRCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgQU5HTEVfRU1QVFlfU1RBVEVNRU5UCiAKIC8vIEEgbWFjcm8gZm9yIGNv
ZGUgd2hpY2ggaXMgbm90IGV4cGVjdGVkIHRvIGJlIHJlYWNoZWQgdW5kZXIgdmFsaWQgYXNzdW1w
dGlvbnMKLSNpZiAhZGVmaW5lZChOREVCVUcpCi0jZGVmaW5lIFVOUkVBQ0hBQkxFKCkgeyBcCi0g
ICAgRVJSKCJcdCEgVW5yZWFjaGFibGUgcmVhY2hlZDogJXMoJWQpXG4iLCBfX0ZVTkNUSU9OX18s
IF9fTElORV9fKTsgXAotICAgIGFzc2VydChmYWxzZSk7IFwKLSAgICB9IEFOR0xFX0VNUFRZX1NU
QVRFTUVOVAotI2Vsc2UKLSAgICAjZGVmaW5lIFVOUkVBQ0hBQkxFKCkgRVJSKCJcdCEgVW5yZWFj
aGFibGUgcmVhY2hlZDogJXMoJWQpXG4iLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fKQotI2VuZGlm
CisjZGVmaW5lIFVOUkVBQ0hBQkxFKCkgXAorICAgIChFUlIoIlx0ISBVbnJlYWNoYWJsZSByZWFj
aGVkOiAlcyglZClcbiIsIF9fRlVOQ1RJT05fXywgX19MSU5FX18pLCBBU1NFUlQoZmFsc2UpKQog
CiAjZW5kaWYgICAvLyBDT01NT05fREVCVUdfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21tb24vbWF0aHV0aWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21tb24vbWF0aHV0aWwuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL21hdGh1dGlsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzEsMTkgKzMxLDE4IEBACiAvLyBFbWF4IGlzIHRoZSBtYXhpbXVtIGFsbG93ZWQg
Ymlhc2VkIGV4cG9uZW50IHZhbHVlICgzMSkKIHN0YXRpYyBjb25zdCBpbnQgZ19zaGFyZWRleHBf
bWF4ZXhwb25lbnQgPSAzMTsKIAotc3RhdGljIGZsb2F0IGdfc2hhcmVkZXhwX21heCgpCi17Ci0g
ICAgc3RhdGljIGZsb2F0IHNoYXJlZGV4cF9tYXggPSAoKHBvd2YoMi4wZiwgZ19zaGFyZWRleHBf
bWFudGlzc2FiaXRzKSAtIDEpIC8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cG93ZigyLjBmLCBnX3NoYXJlZGV4cF9tYW50aXNzYWJpdHMpKSAqCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwb3dmKDIuMGYsIGdfc2hhcmVkZXhwX21heGV4cG9uZW50IC0gZ19z
aGFyZWRleHBfYmlhcyk7Ci0gICAgcmV0dXJuIHNoYXJlZGV4cF9tYXg7Ci19CisjcHJhZ21hIEdD
QyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdnbG9i
YWwtY29uc3RydWN0b3JzIgorc3RhdGljIGNvbnN0IGZsb2F0IGdfc2hhcmVkZXhwX21heCA9ICgo
cG93KDIuMGYsIGdfc2hhcmVkZXhwX21hbnRpc3NhYml0cykgLSAxKSAvCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwb3coMi4wZiwgZ19zaGFyZWRleHBfbWFudGlzc2Fi
aXRzKSkgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvdygyLjBmLCBn
X3NoYXJlZGV4cF9tYXhleHBvbmVudCAtIGdfc2hhcmVkZXhwX2JpYXMpOworI3ByYWdtYSBHQ0Mg
ZGlhZ25vc3RpYyBwb3AKIAogdW5zaWduZWQgaW50IGNvbnZlcnRSR0JGbG9hdHNUbzk5OUU1KGZs
b2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUpCiB7Ci0gICAgY29uc3QgZmxvYXQgcmVk
X2MgPSBzdGQ6Om1heDxmbG9hdD4oMCwgc3RkOjptaW4oZ19zaGFyZWRleHBfbWF4KCksIHJlZCkp
OwotICAgIGNvbnN0IGZsb2F0IGdyZWVuX2MgPSBzdGQ6Om1heDxmbG9hdD4oMCwgc3RkOjptaW4o
Z19zaGFyZWRleHBfbWF4KCksIGdyZWVuKSk7Ci0gICAgY29uc3QgZmxvYXQgYmx1ZV9jID0gc3Rk
OjptYXg8ZmxvYXQ+KDAsIHN0ZDo6bWluKGdfc2hhcmVkZXhwX21heCgpLCBibHVlKSk7CisgICAg
Y29uc3QgZmxvYXQgcmVkX2MgPSBzdGQ6Om1heDxmbG9hdD4oMCwgc3RkOjptaW4oZ19zaGFyZWRl
eHBfbWF4LCByZWQpKTsKKyAgICBjb25zdCBmbG9hdCBncmVlbl9jID0gc3RkOjptYXg8ZmxvYXQ+
KDAsIHN0ZDo6bWluKGdfc2hhcmVkZXhwX21heCwgZ3JlZW4pKTsKKyAgICBjb25zdCBmbG9hdCBi
bHVlX2MgPSBzdGQ6Om1heDxmbG9hdD4oMCwgc3RkOjptaW4oZ19zaGFyZWRleHBfbWF4LCBibHVl
KSk7CiAKICAgICBjb25zdCBmbG9hdCBtYXhfYyA9IHN0ZDo6bWF4PGZsb2F0PihzdGQ6Om1heDxm
bG9hdD4ocmVkX2MsIGdyZWVuX2MpLCBibHVlX2MpOwogICAgIGNvbnN0IGZsb2F0IGV4cF9wID0g
c3RkOjptYXg8ZmxvYXQ+KC1nX3NoYXJlZGV4cF9iaWFzIC0gMSwgZmxvb3IobG9nKG1heF9jKSkp
ICsgMSArIGdfc2hhcmVkZXhwX2JpYXM7CkBAIC02OCw0ICs2Nyw0IEBACiAgICAgKmJsdWUgPSBp
bnB1dERhdGEtPkIgKiBwb3coMi4wZiwgKGludClpbnB1dERhdGEtPkUgLSBnX3NoYXJlZGV4cF9i
aWFzIC0gZ19zaGFyZWRleHBfbWFudGlzc2FiaXRzKTsKIH0KIAotfQorfSAgLy8gbmFtZXNwYWNl
IGdsCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL21hdGh1dGlsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9tYXRodXRp
bC5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
bW9uL21hdGh1dGlsLmgJKHdvcmtpbmcgY29weSkKQEAgLTksOSArOSw2IEBACiAjaWZuZGVmIENP
TU1PTl9NQVRIVVRJTF9IXwogI2RlZmluZSBDT01NT05fTUFUSFVUSUxfSF8KIAotI2luY2x1ZGUg
ImNvbW1vbi9kZWJ1Zy5oIgotI2luY2x1ZGUgImNvbW1vbi9wbGF0Zm9ybS5oIgotCiAjaW5jbHVk
ZSA8bGltaXRzPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxtYXRoLmg+CkBAIC0x
OSw2ICsxNiwxNyBAQAogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgog
CisjaW5jbHVkZSA8YmFzZS9udW1lcmljcy9zYWZlX21hdGguaD4KKworI2luY2x1ZGUgImNvbW1v
bi9kZWJ1Zy5oIgorI2luY2x1ZGUgImNvbW1vbi9wbGF0Zm9ybS5oIgorCituYW1lc3BhY2UgYW5n
bGUKK3sKK3VzaW5nIGJhc2U6OkNoZWNrZWROdW1lcmljOwordXNpbmcgYmFzZTo6SXNWYWx1ZUlu
UmFuZ2VGb3JOdW1lcmljVHlwZTsKK30KKwogbmFtZXNwYWNlIGdsCiB7CiAKQEAgLTM2LDYgKzQ0
LDE1IEBACiAgICAgZmxvYXQgdzsKIH07CiAKK3N0cnVjdCBWZWN0b3IyCit7CisgICAgVmVjdG9y
MigpIHt9CisgICAgVmVjdG9yMihmbG9hdCB4LCBmbG9hdCB5KSA6IHgoeCksIHkoeSkge30KKwor
ICAgIGZsb2F0IHg7CisgICAgZmxvYXQgeTsKK307CisKIGlubGluZSBib29sIGlzUG93MihpbnQg
eCkKIHsKICAgICByZXR1cm4gKHggJiAoeCAtIDEpKSA9PSAwICYmICh4ICE9IDApOwpAQCAtMTI3
LDcgKzE0NCw3IEBACiAKIGlubGluZSBib29sIHN1cHBvcnRzU1NFMigpCiB7Ci0jaWYgZGVmaW5l
ZChBTkdMRV9QTEFURk9STV9XSU5ET1dTKSAmJiAhZGVmaW5lZChfTV9BUk0pCisjaWYgZGVmaW5l
ZChBTkdMRV9VU0VfU1NFKQogICAgIHN0YXRpYyBib29sIGNoZWNrZWQgPSBmYWxzZTsKICAgICBz
dGF0aWMgYm9vbCBzdXBwb3J0cyA9IGZhbHNlOwogCkBAIC0xMzYsMjEgKzE1MywyMiBAQAogICAg
ICAgICByZXR1cm4gc3VwcG9ydHM7CiAgICAgfQogCi0gICAgaW50IGluZm9bNF07Ci0gICAgX19j
cHVpZChpbmZvLCAwKTsKLQotICAgIGlmIChpbmZvWzBdID49IDEpCisjaWYgZGVmaW5lZChBTkdM
RV9QTEFURk9STV9XSU5ET1dTKSAmJiAhZGVmaW5lZChfTV9BUk0pCiAgICAgewotICAgICAgICBf
X2NwdWlkKGluZm8sIDEpOworICAgICAgICBpbnQgaW5mb1s0XTsKKyAgICAgICAgX19jcHVpZChp
bmZvLCAwKTsKIAotICAgICAgICBzdXBwb3J0cyA9IChpbmZvWzNdID4+IDI2KSAmIDE7CisgICAg
ICAgIGlmIChpbmZvWzBdID49IDEpCisgICAgICAgIHsKKyAgICAgICAgICAgIF9fY3B1aWQoaW5m
bywgMSk7CisKKyAgICAgICAgICAgIHN1cHBvcnRzID0gKGluZm9bM10gPj4gMjYpICYgMTsKKyAg
ICAgICAgfQogICAgIH0KLQorI2VuZGlmICAvLyBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX1dJTkRP
V1MpICYmICFkZWZpbmVkKF9NX0FSTSkKICAgICBjaGVja2VkID0gdHJ1ZTsKLQogICAgIHJldHVy
biBzdXBwb3J0czsKLSNlbHNlCi0gICAgVU5JTVBMRU1FTlRFRCgpOworI2Vsc2UgIC8vIGRlZmlu
ZWQoQU5HTEVfVVNFX1NTRSkKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIH0KQEAgLTQ2Nyw3
ICs0ODUsNDQgQEAKICAgICByZXR1cm4gKGlucHV0ICYgbWFzaykgPDwgaW5wdXRCaXRTdGFydDsK
IH0KIAoraW5saW5lIHVuc2lnbmVkIGludCBDb3VudExlYWRpbmdaZXJvcyh1aW50MzJfdCB4KQor
eworICAgIC8vIFVzZSBiaW5hcnkgc2VhcmNoIHRvIGZpbmQgdGhlIGFtb3VudCBvZiBsZWFkaW5n
IHplcm9zLgorICAgIHVuc2lnbmVkIGludCB6ZXJvcyA9IDMydTsKKyAgICB1aW50MzJfdCB5Owog
CisgICAgeSA9IHggPj4gMTZ1OworICAgIGlmICh5ICE9IDApCisgICAgeworICAgICAgICB6ZXJv
cyA9IHplcm9zIC0gMTZ1OworICAgICAgICB4ICAgICA9IHk7CisgICAgfQorICAgIHkgPSB4ID4+
IDh1OworICAgIGlmICh5ICE9IDApCisgICAgeworICAgICAgICB6ZXJvcyA9IHplcm9zIC0gOHU7
CisgICAgICAgIHggICAgID0geTsKKyAgICB9CisgICAgeSA9IHggPj4gNHU7CisgICAgaWYgKHkg
IT0gMCkKKyAgICB7CisgICAgICAgIHplcm9zID0gemVyb3MgLSA0dTsKKyAgICAgICAgeCAgICAg
PSB5OworICAgIH0KKyAgICB5ID0geCA+PiAydTsKKyAgICBpZiAoeSAhPSAwKQorICAgIHsKKyAg
ICAgICAgemVyb3MgPSB6ZXJvcyAtIDJ1OworICAgICAgICB4ICAgICA9IHk7CisgICAgfQorICAg
IHkgPSB4ID4+IDF1OworICAgIGlmICh5ICE9IDApCisgICAgeworICAgICAgICByZXR1cm4gemVy
b3MgLSAydTsKKyAgICB9CisgICAgcmV0dXJuIHplcm9zIC0geDsKK30KKwogaW5saW5lIHVuc2ln
bmVkIGNoYXIgYXZlcmFnZSh1bnNpZ25lZCBjaGFyIGEsIHVuc2lnbmVkIGNoYXIgYikKIHsKICAg
ICByZXR1cm4gKChhIF4gYikgPj4gMSkgKyAoYSAmIGIpOwpAQCAtNjc2LDQxICs3MzEsOTggQEAK
ICAgICByZXR1cm4gKChiaXRDYXN0PHVpbnQzMl90PihmKSAmIDB4N2Y4MDAwMDB1KSA9PSAweDdm
ODAwMDAwdSkgJiYgIShiaXRDYXN0PHVpbnQzMl90PihmKSAmIDB4N2ZmZmZmdSk7CiB9CiAKK25h
bWVzcGFjZSBwcml2Cit7Cit0ZW1wbGF0ZSA8dW5zaWduZWQgaW50IE4sIHVuc2lnbmVkIGludCBS
Pgorc3RydWN0IGlTcXVhcmVSb290Cit7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBp
bnQgc29sdmUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIChSICogUiA+IE4pCisgICAgICAgICAg
ICAgICAgICAgPyAwCisgICAgICAgICAgICAgICAgICAgOiAoKFIgKiBSID09IE4pID8gUiA6IHN0
YXRpY19jYXN0PHVuc2lnbmVkIGludD4oaVNxdWFyZVJvb3Q8TiwgUiArIDE+Ojp2YWx1ZSkpOwor
ICAgIH0KKyAgICBlbnVtIFJlc3VsdAorICAgIHsKKyAgICAgICAgdmFsdWUgPSBpU3F1YXJlUm9v
dDo6c29sdmUoKQorICAgIH07Cit9OworCit0ZW1wbGF0ZSA8dW5zaWduZWQgaW50IE4+CitzdHJ1
Y3QgaVNxdWFyZVJvb3Q8TiwgTj4KK3sKKyAgICBlbnVtIHJlc3VsdAorICAgIHsKKyAgICAgICAg
dmFsdWUgPSBOCisgICAgfTsKK307CisKK30gIC8vIG5hbWVzcGFjZSBwcml2CisKK3RlbXBsYXRl
IDx1bnNpZ25lZCBpbnQgTj4KK2NvbnN0ZXhwciB1bnNpZ25lZCBpbnQgaVNxdWFyZVJvb3QoKQor
eworICAgIHJldHVybiBwcml2OjppU3F1YXJlUm9vdDxOLCAxPjo6dmFsdWU7CiB9CiAKLW5hbWVz
cGFjZSByeAorLy8gU3VtLCBkaWZmZXJlbmNlIGFuZCBtdWx0aXBsaWNhdGlvbiBvcGVyYXRpb25z
IGZvciBzaWduZWQgaW50cyB0aGF0IHdyYXAgb24gMzItYml0IG92ZXJmbG93LgorLy8KKy8vIFVu
c2lnbmVkIHR5cGVzIGFyZSBkZWZpbmVkIHRvIGRvIGFyaXRobWV0aWMgbW9kdWxvIDJebiBpbiBD
KysuIEZvciBzaWduZWQgdHlwZXMsIG92ZXJmbG93CisvLyBiZWhhdmlvciBpcyB1bmRlZmluZWQu
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIFQgV3JhcHBpbmdTdW0oVCBsaHMsIFQg
cmhzKQogeworICAgIHVpbnQzMl90IGxoc1Vuc2lnbmVkID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGxocyk7CisgICAgdWludDMyX3QgcmhzVW5zaWduZWQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
cmhzKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4obGhzVW5zaWduZWQgKyByaHNVbnNpZ25l
ZCk7Cit9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotVCByb3VuZFVwKGNvbnN0IFQgdmFsdWUs
IGNvbnN0IFQgYWxpZ25tZW50KQoraW5saW5lIFQgV3JhcHBpbmdEaWZmKFQgbGhzLCBUIHJocykK
IHsKLSAgICByZXR1cm4gdmFsdWUgKyBhbGlnbm1lbnQgLSAxIC0gKHZhbHVlIC0gMSkgJSBhbGln
bm1lbnQ7CisgICAgdWludDMyX3QgbGhzVW5zaWduZWQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
bGhzKTsKKyAgICB1aW50MzJfdCByaHNVbnNpZ25lZCA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pihy
aHMpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPihsaHNVbnNpZ25lZCAtIHJoc1Vuc2lnbmVk
KTsKIH0KIAotaW5saW5lIHVuc2lnbmVkIGludCBVbnNpZ25lZENlaWxEaXZpZGUodW5zaWduZWQg
aW50IHZhbHVlLCB1bnNpZ25lZCBpbnQgZGl2aXNvcikKK2lubGluZSBpbnQzMl90IFdyYXBwaW5n
TXVsKGludDMyX3QgbGhzLCBpbnQzMl90IHJocykKIHsKLSAgICB1bnNpZ25lZCBpbnQgZGl2aWRl
ZCA9IHZhbHVlIC8gZGl2aXNvcjsKLSAgICByZXR1cm4gKGRpdmlkZWQgKyAoKHZhbHVlICUgZGl2
aXNvciA9PSAwKSA/IDAgOiAxKSk7CisgICAgaW50NjRfdCBsaHNXaWRlID0gc3RhdGljX2Nhc3Q8
aW50NjRfdD4obGhzKTsKKyAgICBpbnQ2NF90IHJoc1dpZGUgPSBzdGF0aWNfY2FzdDxpbnQ2NF90
PihyaHMpOworICAgIC8vIFRoZSBtdWx0aXBsaWNhdGlvbiBpcyBndWFyYW50ZWVkIG5vdCB0byBv
dmVyZmxvdy4KKyAgICBpbnQ2NF90IHJlc3VsdFdpZGUgPSBsaHNXaWRlICogcmhzV2lkZTsKKyAg
ICAvLyBJbXBsZW1lbnQgdGhlIGRlc2lyZWQgd3JhcHBpbmcgYmVoYXZpb3IgYnkgbWFza2luZyBv
dXQgdGhlIGhpZ2gtb3JkZXIgMzIgYml0cy4KKyAgICByZXN1bHRXaWRlID0gcmVzdWx0V2lkZSAm
IDB4ZmZmZmZmZmZsbDsKKyAgICAvLyBDYXN0aW5nIHRvIGEgbmFycm93ZXIgc2lnbmVkIHR5cGUg
aXMgZmluZSBzaW5jZSB0aGUgY2FzdGVkIHZhbHVlIGlzIHJlcHJlc2VudGFibGUgaW4gdGhlCisg
ICAgLy8gbmFycm93ZXIgdHlwZS4KKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4ocmVz
dWx0V2lkZSk7CiB9CiAKLXRlbXBsYXRlIDxjbGFzcyBUPgotaW5saW5lIGJvb2wgSXNVbnNpZ25l
ZEFkZGl0aW9uU2FmZShUIGxocywgVCByaHMpCit9ICAvLyBuYW1lc3BhY2UgZ2wKKworbmFtZXNw
YWNlIHJ4CiB7Ci0gICAgc3RhdGljX2Fzc2VydCghc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNf
c2lnbmVkLCAiVCBtdXN0IGJlIHVuc2lnbmVkLiIpOwotICAgIHJldHVybiAocmhzIDw9IHN0ZDo6
bnVtZXJpY19saW1pdHM8VD46Om1heCgpIC0gbGhzKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CitUIHJvdW5kVXAoY29uc3QgVCB2YWx1ZSwgY29uc3QgVCBhbGlnbm1lbnQpCit7CisgICAgYXV0
byB0ZW1wID0gdmFsdWUgKyBhbGlnbm1lbnQgLSBzdGF0aWNfY2FzdDxUPigxKTsKKyAgICByZXR1
cm4gdGVtcCAtIHRlbXAgJSBhbGlnbm1lbnQ7CiB9CiAKLXRlbXBsYXRlIDxjbGFzcyBUPgotaW5s
aW5lIGJvb2wgSXNVbnNpZ25lZE11bHRpcGxpY2F0aW9uU2FmZShUIGxocywgVCByaHMpCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK2FuZ2xlOjpDaGVja2VkTnVtZXJpYzxUPiBDaGVja2VkUm91bmRV
cChjb25zdCBUIHZhbHVlLCBjb25zdCBUIGFsaWdubWVudCkKIHsKLSAgICBzdGF0aWNfYXNzZXJ0
KCFzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zaWduZWQsICJUIG11c3QgYmUgdW5zaWduZWQu
Iik7Ci0gICAgcmV0dXJuIChsaHMgPT0gVCgwKSB8fCByaHMgPT0gVCgwKSB8fCAocmhzIDw9IHN0
ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCgpIC8gbGhzKSk7CisgICAgYW5nbGU6OkNoZWNrZWRO
dW1lcmljPFQ+IGNoZWNrZWRWYWx1ZSh2YWx1ZSk7CisgICAgYW5nbGU6OkNoZWNrZWROdW1lcmlj
PFQ+IGNoZWNrZWRBbGlnbm1lbnQoYWxpZ25tZW50KTsKKyAgICByZXR1cm4gcm91bmRVcChjaGVj
a2VkVmFsdWUsIGNoZWNrZWRBbGlnbm1lbnQpOwogfQogCi10ZW1wbGF0ZSA8Y2xhc3MgU21hbGxJ
bnRULCBjbGFzcyBCaWdJbnRUPgotaW5saW5lIGJvb2wgSXNJbnRlZ2VyQ2FzdFNhZmUoQmlnSW50
VCBiaWdWYWx1ZSkKK2lubGluZSB1bnNpZ25lZCBpbnQgVW5zaWduZWRDZWlsRGl2aWRlKHVuc2ln
bmVkIGludCB2YWx1ZSwgdW5zaWduZWQgaW50IGRpdmlzb3IpCiB7Ci0gICAgcmV0dXJuIChzdGF0
aWNfY2FzdDxCaWdJbnRUPihzdGF0aWNfY2FzdDxTbWFsbEludFQ+KGJpZ1ZhbHVlKSkgPT0gYmln
VmFsdWUpOworICAgIHVuc2lnbmVkIGludCBkaXZpZGVkID0gdmFsdWUgLyBkaXZpc29yOworICAg
IHJldHVybiAoZGl2aWRlZCArICgodmFsdWUgJSBkaXZpc29yID09IDApID8gMCA6IDEpKTsKIH0K
IAogI2lmIGRlZmluZWQoX01TQ19WRVIpCkBAIC03MzAsOCArODQyLDggQEAKICAgICByZXR1cm4g
KHggPj4gcikgfCAoeCA8PCAoMTYgLSByKSk7CiB9CiAKLSNkZWZpbmUgQU5HTEVfUk9UTCh4LHkp
IFJvdEwoeCx5KQotI2RlZmluZSBBTkdMRV9ST1RSMTYoeCx5KSBSb3RSMTYoeCx5KQorI2RlZmlu
ZSBBTkdMRV9ST1RMKHgsIHkpIDo6cng6OlJvdEwoeCwgeSkKKyNkZWZpbmUgQU5HTEVfUk9UUjE2
KHgsIHkpIDo6cng6OlJvdFIxNih4LCB5KQogCiAjZW5kaWYgLy8gbmFtZXNwYWNlIHJ4CiAKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vbWF0aHV0aWxfdW5pdHRlc3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vbWF0
aHV0aWxfdW5pdHRlc3QuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tbW9uL21hdGh1dGlsX3VuaXR0ZXN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTY4LDUgKzE2OCw0MyBAQAogICAgIEVYUEVDVF9GQUxTRShpc0luZihiaXRDYXN0PGZsb2F0
PigxdSA8PCAzMSB8IDB4ZmV1IDw8IDIzIHwgMHg3ZmZmZmZ1KSkpOwogfQogCitURVNUKE1hdGhV
dGlsVGVzdCwgQ291bnRMZWFkaW5nWmVyb3MpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCAzMnU7ICsraSkKKyAgICB7CisgICAgICAgIHVpbnQzMl90IGlMZWFkaW5nWmVyb3Mg
PSAxdSA8PCAoMzF1IC0gaSk7CisgICAgICAgIEVYUEVDVF9FUShpLCBDb3VudExlYWRpbmdaZXJv
cyhpTGVhZGluZ1plcm9zKSk7CisgICAgfQorICAgIEVYUEVDVF9FUSgzMnUsIENvdW50TGVhZGlu
Z1plcm9zKDApKTsKIH0KIAorLy8gU29tZSBiYXNpYyB0ZXN0cy4gVGVzdHMgdGhhdCByb3VuZGlu
ZyB1cCB6ZXJvIHByb2R1Y2VzIHplcm8uCitURVNUKE1hdGhVdGlsVGVzdCwgQmFzaWNSb3VuZFVw
KQoreworICAgIEVYUEVDVF9FUSgwdSwgcng6OnJvdW5kVXAoMHUsIDR1KSk7CisgICAgRVhQRUNU
X0VRKDR1LCByeDo6cm91bmRVcCgxdSwgNHUpKTsKKyAgICBFWFBFQ1RfRVEoNHUsIHJ4Ojpyb3Vu
ZFVwKDR1LCA0dSkpOworfQorCisvLyBUZXN0IHRoYXQgcm91bmRpbmcgdXAgemVybyBwcm9kdWNl
cyB6ZXJvIGZvciBjaGVja2VkIGludHMuCitURVNUKE1hdGhVdGlsVGVzdCwgQ2hlY2tlZFJvdW5k
VXBaZXJvKQoreworICAgIGF1dG8gY2hlY2tlZFZhbHVlID0gcng6OkNoZWNrZWRSb3VuZFVwKDB1
LCA0dSk7CisgICAgQVNTRVJUX1RSVUUoY2hlY2tlZFZhbHVlLklzVmFsaWQoKSk7CisgICAgQVNT
RVJUX0VRKDB1LCBjaGVja2VkVmFsdWUuVmFsdWVPckRpZSgpKTsKK30KKworLy8gVGVzdCBvdXQt
b2YtYm91bmRzIHdpdGggQ2hlY2tlZFJvdW5kVXAKK1RFU1QoTWF0aFV0aWxUZXN0LCBDaGVja2Vk
Um91bmRVcEludmFsaWQpCit7CisgICAgLy8gVGhlIGFuc3dlciB0byB0aGlzIHF1ZXJ5IGlzIG91
dCBvZiBib3VuZHMuCisgICAgYXV0byBsaW1pdCAgICAgICAgPSBzdGQ6Om51bWVyaWNfbGltaXRz
PHVuc2lnbmVkIGludD46Om1heCgpOworICAgIGF1dG8gY2hlY2tlZFZhbHVlID0gcng6OkNoZWNr
ZWRSb3VuZFVwKGxpbWl0LCBsaW1pdCAtIDEpOworICAgIEFTU0VSVF9GQUxTRShjaGVja2VkVmFs
dWUuSXNWYWxpZCgpKTsKKworICAgIC8vIE91ciBpbXBsZW1lbnRhdGlvbiBjYW4ndCBoYW5kbGUg
dGhpcyBxdWVyeSwgZGVzcGl0ZSB0aGUgcGFyYW1ldGVycyBiZWluZyBpbiByYW5nZS4KKyAgICBh
dXRvIGNoZWNrZWRMaW1pdCA9IHJ4OjpDaGVja2VkUm91bmRVcChsaW1pdCAtIDEsIGxpbWl0KTsK
KyAgICBBU1NFUlRfRkFMU0UoY2hlY2tlZExpbWl0LklzVmFsaWQoKSk7Cit9CisKK30gIC8vIGFu
b255bW91cyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21t
b24vbWF0cml4X3V0aWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbW1vbi9tYXRyaXhfdXRpbHMuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9tYXRyaXhfdXRpbHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImNvbW1vbi9k
ZWJ1Zy5oIgorI2luY2x1ZGUgImNvbW1vbi9tYXRodXRpbC5oIgogCiBuYW1lc3BhY2UgYW5nbGUK
IHsKQEAgLTMzNyw2ICszMzgsNDIgQEAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAK
KyAgICB2b2lkIHNldFRvSWRlbnRpdHkoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJvd3MoKSA9
PSBjb2x1bW5zKCkpOworCisgICAgICAgIGNvbnN0IGF1dG8gb25lICA9IFQoMSk7CisgICAgICAg
IGNvbnN0IGF1dG8gemVybyA9IFQoMCk7CisKKyAgICAgICAgZm9yIChhdXRvICZlIDogbUVsZW1l
bnRzKQorICAgICAgICAgICAgZSA9IHplcm87CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCByb3dzKCk7ICsraSkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgYXV0
byBwb3MgPSBpICogY29sdW1ucygpICsgKGkgJSBjb2x1bW5zKCkpOworICAgICAgICAgICAgbUVs
ZW1lbnRzW3Bvc10gPSBvbmU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dW5z
aWduZWQgaW50IFNpemU+CisgICAgc3RhdGljIHZvaWQgc2V0VG9JZGVudGl0eShUKCZtYXRyaXgp
W1NpemVdKQorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChnbDo6aVNxdWFyZVJvb3Q8U2l6
ZT4oKSAhPSAwLCAiTWF0cml4IGlzIG5vdCBzcXVhcmUuIik7CisKKyAgICAgICAgY29uc3QgYXV0
byBjb2xzID0gZ2w6OmlTcXVhcmVSb290PFNpemU+KCk7CisgICAgICAgIGNvbnN0IGF1dG8gb25l
ICA9IFQoMSk7CisgICAgICAgIGNvbnN0IGF1dG8gemVybyA9IFQoMCk7CisKKyAgICAgICAgZm9y
IChhdXRvICZlIDogbWF0cml4KQorICAgICAgICAgICAgZSA9IHplcm87CisKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjb2xzOyArK2kpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGNvbnN0IGF1dG8gcG9zID0gaSAqIGNvbHMgKyAoaSAlIGNvbHMpOworICAgICAgICAgICAg
bWF0cml4W3Bvc10gICAgPSBvbmU7CisgICAgICAgIH0KKyAgICB9CisKICAgcHJpdmF0ZToKICAg
ICBzdGQ6OnZlY3RvcjxUPiBtRWxlbWVudHM7CiAgICAgdW5zaWduZWQgaW50IG1Sb3dzOwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9wbGF0Zm9ybS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vcGxhdGZvcm0uaAkocmV2
aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9wbGF0
Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw4ICs3NywxNiBAQAogIyAgIHVuZGVmIGZhcgog
I2VuZGlmCiAKLSNpZiAhZGVmaW5lZChfTV9BUk0pICYmICFkZWZpbmVkKEFOR0xFX1BMQVRGT1JN
X0FORFJPSUQpCi0jICAgZGVmaW5lIEFOR0xFX1VTRV9TU0UKKyNpZiBkZWZpbmVkKF9NU0NfVkVS
KSAmJiAhZGVmaW5lZChfTV9BUk0pCisjaW5jbHVkZSA8aW50cmluLmg+CisjZGVmaW5lIEFOR0xF
X1VTRV9TU0UKKyNlbGlmIGRlZmluZWQoX19HTlVDX18pICYmIChkZWZpbmVkKF9feDg2XzY0X18p
IHx8IGRlZmluZWQoX19pMzg2X18pKQorI2luY2x1ZGUgPHg4NmludHJpbi5oPgorI2RlZmluZSBB
TkdMRV9VU0VfU1NFCiAjZW5kaWYKIAorLy8gVGhlIE1lbW9yeUJhcnJpZXIgZnVuY3Rpb24gbmFt
ZSBjb2xsaWRlcyB3aXRoIGEgbWFjcm8gdW5kZXIgV2luZG93cworLy8gV2Ugd2lsbCB1bmRlZiB0
aGUgbWFjcm8gc28gdGhhdCB0aGUgZnVuY3Rpb24gbmFtZSBkb2VzIG5vdCBnZXQgcmVwbGFjZWQK
KyN1bmRlZiBNZW1vcnlCYXJyaWVyCisKICNlbmRpZiAvLyBDT01NT05fUExBVEZPUk1fSF8KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vc3RyaW5nX3V0aWxzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3N0cmluZ191
dGlscy5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21tb24vc3RyaW5nX3V0aWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOSw5ICs5LDE0IEBA
CiAKICNpbmNsdWRlICJzdHJpbmdfdXRpbHMuaCIKIAorI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNp
bmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxmc3RyZWFt
PgogI2luY2x1ZGUgPHNzdHJlYW0+CiAKKyNpbmNsdWRlICJjb21tb24vcGxhdGZvcm0uaCIKKwog
bmFtZXNwYWNlIGFuZ2xlCiB7CiAKQEAgLTEzMyw0ICsxMzgsNDUgQEAKICAgICByZXR1cm4gIWlu
RmlsZS5mYWlsKCk7CiB9CiAKK09wdGlvbmFsPHN0ZDo6dmVjdG9yPHdjaGFyX3Q+PiBXaWRlblN0
cmluZyhzaXplX3QgbGVuZ3RoLCBjb25zdCBjaGFyICpjU3RyaW5nKQoreworICAgIHN0ZDo6dmVj
dG9yPHdjaGFyX3Q+IHdjc3RyaW5nKGxlbmd0aCArIDEpOworI2lmICFkZWZpbmVkKEFOR0xFX1BM
QVRGT1JNX1dJTkRPV1MpCisgICAgc2l6ZV90IHdyaXR0ZW4gPSBtYnN0b3djcyh3Y3N0cmluZy5k
YXRhKCksIGNTdHJpbmcsIGxlbmd0aCArIDEpOworICAgIGlmICh3cml0dGVuID09IDApCisgICAg
eworICAgICAgICByZXR1cm4gT3B0aW9uYWw8c3RkOjp2ZWN0b3I8d2NoYXJfdD4+OjpJbnZhbGlk
KCk7CisgICAgfQorI2Vsc2UKKyAgICBzaXplX3QgY29udmVydGVkQ2hhcnMgPSAwOworICAgIGVy
cm5vX3QgZXJyID0gbWJzdG93Y3NfcygmY29udmVydGVkQ2hhcnMsIHdjc3RyaW5nLmRhdGEoKSwg
bGVuZ3RoICsgMSwgY1N0cmluZywgX1RSVU5DQVRFKTsKKyAgICBpZiAoZXJyICE9IDApCisgICAg
eworICAgICAgICByZXR1cm4gT3B0aW9uYWw8c3RkOjp2ZWN0b3I8d2NoYXJfdD4+OjpJbnZhbGlk
KCk7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIE9wdGlvbmFsPHN0ZDo6dmVjdG9yPHdjaGFy
X3Q+Pih3Y3N0cmluZyk7CiB9CisKK2Jvb2wgQmVnaW5zV2l0aChjb25zdCBzdGQ6OnN0cmluZyAm
c3RyLCBjb25zdCBjaGFyICpwcmVmaXgpCit7CisgICAgcmV0dXJuIHN0cm5jbXAoc3RyLmNfc3Ry
KCksIHByZWZpeCwgc3RybGVuKHByZWZpeCkpID09IDA7Cit9CisKK2Jvb2wgQmVnaW5zV2l0aChj
b25zdCBjaGFyICpzdHIsIGNvbnN0IGNoYXIgKnByZWZpeCkKK3sKKyAgICByZXR1cm4gc3RybmNt
cChzdHIsIHByZWZpeCwgc3RybGVuKHByZWZpeCkpID09IDA7Cit9CisKK2Jvb2wgRW5kc1dpdGgo
Y29uc3Qgc3RkOjpzdHJpbmcgJnN0ciwgY29uc3QgY2hhciAqc3VmZml4KQoreworICAgIGNvbnN0
IGF1dG8gbGVuID0gc3RybGVuKHN1ZmZpeCk7CisgICAgaWYgKGxlbiA+IHN0ci5zaXplKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IGNoYXIgKmVuZCA9IHN0ci5jX3N0cigp
ICsgc3RyLnNpemUoKSAtIGxlbjsKKworICAgIHJldHVybiBtZW1jbXAoZW5kLCBzdWZmaXgsIGxl
bikgPT0gMDsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tbW9uL3N0cmluZ191dGlscy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vc3RyaW5nX3V0aWxzLmgJKHJldmlzaW9uIDIw
ODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vc3RyaW5nX3V0aWxz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzLDYgKzEzLDggQEAKICNpbmNsdWRlIDxzdHJpbmc+CiAj
aW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiY29tbW9uL09wdGlvbmFsLmgiCisKIG5hbWVz
cGFjZSBhbmdsZQogewogCkBAIC00NCw2ICs0NiwyMiBAQAogCiBib29sIFJlYWRGaWxlVG9TdHJp
bmcoY29uc3Qgc3RkOjpzdHJpbmcgJnBhdGgsIHN0ZDo6c3RyaW5nICpzdHJpbmdPdXQpOwogCitP
cHRpb25hbDxzdGQ6OnZlY3Rvcjx3Y2hhcl90Pj4gV2lkZW5TdHJpbmcoc2l6ZV90IGxlbmd0aCwg
Y29uc3QgY2hhciAqY1N0cmluZyk7CisKKy8vIENoZWNrIGlmIHRoZSBzdHJpbmcgc3RyIGJlZ2lu
cyB3aXRoIHRoZSBnaXZlbiBwcmVmaXguCisvLyBQcmVmaXggbWF5IG5vdCBiZSBOVUxMIGFuZCBu
ZWVkcyB0byBiZSBOVUxMIHRlcm1pbmF0ZWQuCisvLyBUaGUgY29tcGFyaXNvbiBpcyBjYXNlIHNl
bnNpdGl2ZS4KK2Jvb2wgQmVnaW5zV2l0aChjb25zdCBzdGQ6OnN0cmluZyAmc3RyLCBjb25zdCBj
aGFyICpwcmVmaXgpOworCisvLyBDaGVjayBpZiB0aGUgc3RyaW5nIHN0ciBiZWdpbnMgd2l0aCB0
aGUgZ2l2ZW4gcHJlZml4LgorLy8gc3RyIGFuZCBwcmVmaXggbWF5IG5vdCBiZSBOVUxMIGFuZCBu
ZWVkIHRvIGJlIE5VTEwgdGVybWluYXRlZC4KKy8vIFRoZSBjb21wYXJpc29uIGlzIGNhc2Ugc2Vu
c2l0aXZlLgorYm9vbCBCZWdpbnNXaXRoKGNvbnN0IGNoYXIgKnN0ciwgY29uc3QgY2hhciAqcHJl
Zml4KTsKKworLy8gQ2hlY2sgaWYgdGhlIHN0cmluZyBzdHIgZW5kcyB3aXRoIHRoZSBnaXZlbiBz
dWZmaXguCisvLyBTdWZmaXggbWF5IG5vdCBiZSBOVUwgYW5kIG5lZWRzIHRvIGJlIE5VTEwgdGVy
bWluYXRlZC4KKy8vIFRoZSBjb21wYXJpc29uIGlzIGNhc2Ugc2Vuc2l0aXZlLgorYm9vbCBFbmRz
V2l0aChjb25zdCBzdGQ6OnN0cmluZyYgc3RyLCBjb25zdCBjaGFyKiBzdWZmaXgpOwogfQogCiAj
ZW5kaWYgLy8gTElCQU5HTEVfU1RSSU5HX1VUSUxTX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tbW9uL3N0cmluZ191dGlsc191bml0dGVzdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9zdHJpbmdfdXRpbHNfdW5pdHRl
c3QuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tbW9uL3N0cmluZ191dGlsc191bml0dGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw0
ICsxMzgsMjYgQEAKIAogLy8gTm90ZTogUmVhZEZpbGVUb1N0cmluZyBpcyBoYXJkZXIgdG8gdGVz
dAogCisKK1RFU1QoU3RyaW5nVXRpbHNUZXN0LCBCZWdpbnNFbmRzV2l0aCkKK3sKKyAgICBBU1NF
UlRfRkFMU0UoQmVnaW5zV2l0aCgiZm9vIiwgImJhciIpKTsKKyAgICBBU1NFUlRfRkFMU0UoQmVn
aW5zV2l0aCgiIiwgImZvbyIpKTsKKyAgICBBU1NFUlRfRkFMU0UoQmVnaW5zV2l0aCgiZm9vIiwg
ImZvb2JhciIpKTsKKworICAgIEFTU0VSVF9UUlVFKEJlZ2luc1dpdGgoImZvb2JhciIsICJmb28i
KSk7CisgICAgQVNTRVJUX1RSVUUoQmVnaW5zV2l0aCgiZm9vYmFyIiwgIiIpKTsKKyAgICBBU1NF
UlRfVFJVRShCZWdpbnNXaXRoKCJmb28iLCAiZm9vIikpOworICAgIEFTU0VSVF9UUlVFKEJlZ2lu
c1dpdGgoIiIsICIiKSk7CisKKyAgICBBU1NFUlRfRkFMU0UoRW5kc1dpdGgoImZvbyIsICJiYXIi
KSk7CisgICAgQVNTRVJUX0ZBTFNFKEVuZHNXaXRoKCIiLCAiYmFyIikpOworICAgIEFTU0VSVF9G
QUxTRShFbmRzV2l0aCgiZm9vIiwgImZvb2JhciIpKTsKKworICAgIEFTU0VSVF9UUlVFKEVuZHNX
aXRoKCJmb29iYXIiLCAiYmFyIikpOworICAgIEFTU0VSVF9UUlVFKEVuZHNXaXRoKCJmb29iYXIi
LCAiIikpOworICAgIEFTU0VSVF9UUlVFKEVuZHNXaXRoKCJiYXIiLCAiYmFyIikpOworICAgIEFT
U0VSVF9UUlVFKEVuZHNXaXRoKCIiLCAiIikpOwogfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi90aGlyZF9w
YXJ0eS9udW1lcmljcy9SRUFETUUuYW5nbGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcy9SRUFETUUuYW5nbGUJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi90aGlyZF9w
YXJ0eS9udW1lcmljcy9SRUFETUUuYW5nbGUJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNiBA
QAorTmFtZTogQ2hyb21pdW06IGJhc2UvbnVtZXJpY3MKK1Nob3J0IE5hbWU6IGJhc2U6Om51bWVy
aWNzCitWZXJzaW9uOgorVVJMOiBodHRwczovL2Nocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hy
b21pdW0vc3JjLmdpdC8rL2xrY3IvYmFzZS9udW1lcmljcy8KK1NPVVJDRSBDT0RFOiBDb3B5IHRo
ZSBDaHJvbWl1bSBmb2xkZXIgbWFudWFsbHkgaW50byB0aGlzIGZvbGRlciBhbmQgcnVuIGdpdCBj
bCBmb3JtYXQuCitEYXRlOiAzMC8wNS8yMDE2CitSZXZpc2lvbjogMjhiNWJiYjIyN2QzMzFjMDFl
NmZmOWIyZjg3Mjk3MzIxMzVhYWRjNyAoQ2hyb21pdW0pCitTZWN1cml0eSBDcml0aWNhbDogbm8K
K0xpY2Vuc2U6IENocm9taXVtCitMaWNlbnNlIEZpbGU6IExJQ0VOU0UgaW4gQ2hyb21pdW0vc3Jj
CisKK0Rlc2NyaXB0aW9uOgorYmFzZTo6bnVtZXJpY3MgaXMgYSBsaWJyYXJ5IGZvciBkb2luZyBz
b21lIHNpbXBsZSBzYWZlIG1hdGggYW5kIGNvbnZlcnNpb25zLiBUbyB1cGRhdGUgdGhlIGNoZWNr
b3V0LCBzaW1wbHkKK292ZXJ3cml0ZSB0aGUgYmFzZS9udW1lcmljcyBmb2xkZXIgd2l0aCBDaHJv
bWl1bSdzIGxhdGVzdC4gVGhlIG9ubHkgbW9kaWZpY2F0aW9ucyBhcmUgdG8gdGhlIGJhc2UvbG9n
Z2luZy5oCitmaWxlIHdoaWNoIGRlZmluZXMgQ0hFQ0sgdG8gYmUgQVNTRVJUIHRvIGJlIGNvbXBh
dGlibGUgd2l0aCBBTkdMRS4KKwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcy9iYXNlL2xvZ2dpbmcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3RoaXJkX3BhcnR5L251bWVyaWNzL2Jh
c2UvbG9nZ2luZy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21tb24vdGhpcmRfcGFydHkvbnVtZXJpY3MvYmFzZS9sb2dnaW5nLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwyMiBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIGxvZ2dpbmcuaDogQ29tcGF0aWJsaXR5
IGhhY2tzIGZvciBpbXBvcnRpbmcgQ2hyb21pdW0ncyBiYXNlL251bWVyaWNzLgorCisjaWZuZGVm
IEJBU0VfTE9HR0lOR19IXworI2RlZmluZSBCQVNFX0xPR0dJTkdfSF8KKworI2luY2x1ZGUgImNv
bW1vbi9kZWJ1Zy5oIgorCisjaWZuZGVmIENIRUNLCisjZGVmaW5lIENIRUNLKFgpIEFTU0VSVChY
KQorI2VuZGlmCisKKy8vIFVuZm9ydHVuYXRlbHkgQU5HTEUgcmVsaWVzIG9uIEFTU0VSVCBiZWlu
ZyBhbiBlbXB0eSBzdGF0ZW1lbnQsIHdoaWNoIHRoZXNlIGxpYnMgZG9uJ3QgcmVzcGVjdC4KKyNp
Zm5kZWYgTk9UUkVBQ0hFRAorI2RlZmluZSBOT1RSRUFDSEVEKCkgVU5SRUFDSEFCTEUoKQorI2Vu
ZGlmCisKKyNlbmRpZiAgLy8gQkFTRV9MT0dHSU5HX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tbW9uL3RoaXJkX3BhcnR5L251bWVyaWNzL2Jhc2UvbnVtZXJpY3MvT1dO
RVJTCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vdGhp
cmRfcGFydHkvbnVtZXJpY3MvYmFzZS9udW1lcmljcy9PV05FUlMJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcy9i
YXNlL251bWVyaWNzL09XTkVSUwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMgQEAKK2pzY2h1
aEBjaHJvbWl1bS5vcmcKK3RzZXBlekBjaHJvbWl1bS5vcmcKKwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcy9iYXNlL251bWVyaWNz
L3NhZmVfY29udmVyc2lvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tbW9uL3RoaXJkX3BhcnR5L251bWVyaWNzL2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252
ZXJzaW9ucy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21tb24vdGhpcmRfcGFydHkvbnVtZXJpY3MvYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25z
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNzQgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRo
ZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworI2lmbmRlZiBCQVNFX05VTUVSSUNT
X1NBRkVfQ09OVkVSU0lPTlNfSF8KKyNkZWZpbmUgQkFTRV9OVU1FUklDU19TQUZFX0NPTlZFUlNJ
T05TX0hfCisKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKworI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNs
dWRlIDx0eXBlX3RyYWl0cz4KKworI2luY2x1ZGUgImJhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUg
ImJhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9uc19pbXBsLmgiCisKK25hbWVzcGFjZSBiYXNl
Cit7CisKKy8vIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0cnVlIGlmIHRoZSBz
dXBwbGllZCB2YWx1ZSBpcyBpbiByYW5nZQorLy8gZm9yIHRoZSBkZXN0aW5hdGlvbiB0eXBlLgor
dGVtcGxhdGUgPHR5cGVuYW1lIERzdCwgdHlwZW5hbWUgU3JjPgorY29uc3RleHByIGJvb2wgSXNW
YWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlwZShTcmMgdmFsdWUpCit7CisgICAgcmV0dXJuIGludGVy
bmFsOjpEc3RSYW5nZVJlbGF0aW9uVG9TcmNSYW5nZTxEc3Q+KHZhbHVlKSA9PSBpbnRlcm5hbDo6
UkFOR0VfVkFMSUQ7Cit9CisKKy8vIENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBkZXRlcm1pbmlu
ZyBpZiBhIG51bWVyaWMgdmFsdWUgaXMgbmVnYXRpdmUgd2l0aG91dAorLy8gdGhyb3dpbmcgY29t
cGlsZXIgd2FybmluZ3Mgb246IHVuc2lnbmVkKHZhbHVlKSA8IDAuCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK2NvbnN0ZXhwciB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Om51bWVyaWNfbGlt
aXRzPFQ+Ojppc19zaWduZWQsIGJvb2w+Ojp0eXBlIElzVmFsdWVOZWdhdGl2ZSgKKyAgICBUIHZh
bHVlKQoreworICAgIHN0YXRpY19hc3NlcnQoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc3Bl
Y2lhbGl6ZWQsICJBcmd1bWVudCBtdXN0IGJlIG51bWVyaWMuIik7CisgICAgcmV0dXJuIHZhbHVl
IDwgMDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citjb25zdGV4cHIgdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8IXN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX3NpZ25lZCwgYm9vbD46OnR5
cGUgSXNWYWx1ZU5lZ2F0aXZlKFQpCit7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6Om51bWVyaWNf
bGltaXRzPFQ+Ojppc19zcGVjaWFsaXplZCwgIkFyZ3VtZW50IG11c3QgYmUgbnVtZXJpYy4iKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8vIGNoZWNrZWRfY2FzdDw+IGlzIGFuYWxvZ291cyB0
byBzdGF0aWNfY2FzdDw+IGZvciBudW1lcmljIHR5cGVzLAorLy8gZXhjZXB0IHRoYXQgaXQgQ0hF
Q0tzIHRoYXQgdGhlIHNwZWNpZmllZCBudW1lcmljIGNvbnZlcnNpb24gd2lsbCBub3QKKy8vIG92
ZXJmbG93IG9yIHVuZGVyZmxvdy4gTmFOIHNvdXJjZSB3aWxsIGFsd2F5cyB0cmlnZ2VyIGEgQ0hF
Q0suCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRHN0LCB0eXBlbmFtZSBTcmM+CitpbmxpbmUgRHN0IGNo
ZWNrZWRfY2FzdChTcmMgdmFsdWUpCit7CisgICAgQ0hFQ0soSXNWYWx1ZUluUmFuZ2VGb3JOdW1l
cmljVHlwZTxEc3Q+KHZhbHVlKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERzdD4odmFsdWUp
OworfQorCisvLyBIYW5kbGVOYU4gd2lsbCBjYXVzZSB0aGlzIGNsYXNzIHRvIENIRUNLKGZhbHNl
KS4KK3N0cnVjdCBTYXR1cmF0ZWRDYXN0TmFOQmVoYXZpb3JDaGVjaworeworICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgorICAgIHN0YXRpYyBUIEhhbmRsZU5hTigpCisgICAgeworICAgICAgICBD
SEVDSyhmYWxzZSk7CisgICAgICAgIHJldHVybiBUKCk7CisgICAgfQorfTsKKworLy8gSGFuZGxl
TmFOIHdpbGwgcmV0dXJuIDAgaW4gdGhpcyBjYXNlLgorc3RydWN0IFNhdHVyYXRlZENhc3ROYU5C
ZWhhdmlvclJldHVyblplcm8KK3sKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICBzdGF0
aWMgY29uc3RleHByIFQgSGFuZGxlTmFOKCkKKyAgICB7CisgICAgICAgIHJldHVybiBUKCk7Cisg
ICAgfQorfTsKKworbmFtZXNwYWNlIGludGVybmFsCit7CisvLyBUaGlzIHdyYXBwZXIgaXMgdXNl
ZCBmb3IgQysrMTEgY29uc3RleHByIHN1cHBvcnQgYnkgYXZvaWRpbmcgdGhlIGRlY2xhcmF0aW9u
CisvLyBvZiBsb2NhbCB2YXJpYWJsZXMgaW4gdGhlIHNhdHVyYXRlZF9jYXN0IHRlbXBsYXRlIGZ1
bmN0aW9uLgordGVtcGxhdGUgPHR5cGVuYW1lIERzdCwgY2xhc3MgTmFOSGFuZGxlciwgdHlwZW5h
bWUgU3JjPgorY29uc3RleHByIERzdCBzYXR1cmF0ZWRfY2FzdF9pbXBsKGNvbnN0IFNyYyB2YWx1
ZSwgY29uc3QgUmFuZ2VDb25zdHJhaW50IGNvbnN0cmFpbnQpCit7CisgICAgcmV0dXJuIGNvbnN0
cmFpbnQgPT0gUkFOR0VfVkFMSUQKKyAgICAgICAgICAgICAgID8gc3RhdGljX2Nhc3Q8RHN0Pih2
YWx1ZSkKKyAgICAgICAgICAgICAgIDogKGNvbnN0cmFpbnQgPT0gUkFOR0VfVU5ERVJGTE9XCisg
ICAgICAgICAgICAgICAgICAgICAgPyBzdGQ6Om51bWVyaWNfbGltaXRzPERzdD46Om1pbigpCisg
ICAgICAgICAgICAgICAgICAgICAgOiAoY29uc3RyYWludCA9PSBSQU5HRV9PVkVSRkxPVworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA/IHN0ZDo6bnVtZXJpY19saW1pdHM8RHN0Pjo6bWF4
KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoY29uc3RyYWludCA9PSBSQU5HRV9J
TlZBTElECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IE5hTkhhbmRsZXI6
OnRlbXBsYXRlIEhhbmRsZU5hTjxEc3Q+KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDogKE5PVFJFQUNIRUQoKSwgc3RhdGljX2Nhc3Q8RHN0Pih2YWx1ZSkpKSkpOworfQor
fSAgLy8gbmFtZXNwYWNlIGludGVybmFsCisKKy8vIHNhdHVyYXRlZF9jYXN0PD4gaXMgYW5hbG9n
b3VzIHRvIHN0YXRpY19jYXN0PD4gZm9yIG51bWVyaWMgdHlwZXMsIGV4Y2VwdAorLy8gdGhhdCB0
aGUgc3BlY2lmaWVkIG51bWVyaWMgY29udmVyc2lvbiB3aWxsIHNhdHVyYXRlIHJhdGhlciB0aGFu
IG92ZXJmbG93IG9yCisvLyB1bmRlcmZsb3cuIE5hTiBhc3NpZ25tZW50IHRvIGFuIGludGVncmFs
IHdpbGwgZGVmZXIgdGhlIGJlaGF2aW9yIHRvIGEKKy8vIHNwZWNpZmllZCBjbGFzcy4gQnkgZGVm
YXVsdCwgaXQgd2lsbCByZXR1cm4gMC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBEc3QsIGNsYXNzIE5h
TkhhbmRsZXIgPSBTYXR1cmF0ZWRDYXN0TmFOQmVoYXZpb3JSZXR1cm5aZXJvLCB0eXBlbmFtZSBT
cmM+Citjb25zdGV4cHIgRHN0IHNhdHVyYXRlZF9jYXN0KFNyYyB2YWx1ZSkKK3sKKyAgICByZXR1
cm4gc3RkOjpudW1lcmljX2xpbWl0czxEc3Q+Ojppc19pZWM1NTkKKyAgICAgICAgICAgICAgID8g
c3RhdGljX2Nhc3Q8RHN0Pih2YWx1ZSkgIC8vIEZsb2F0aW5nIHBvaW50IG9wdGltaXphdGlvbi4K
KyAgICAgICAgICAgICAgIDogaW50ZXJuYWw6OnNhdHVyYXRlZF9jYXN0X2ltcGw8RHN0LCBOYU5I
YW5kbGVyPigKKyAgICAgICAgICAgICAgICAgICAgIHZhbHVlLCBpbnRlcm5hbDo6RHN0UmFuZ2VS
ZWxhdGlvblRvU3JjUmFuZ2U8RHN0Pih2YWx1ZSkpOworfQorCisvLyBzdHJpY3RfY2FzdDw+IGlz
IGFuYWxvZ291cyB0byBzdGF0aWNfY2FzdDw+IGZvciBudW1lcmljIHR5cGVzLCBleGNlcHQgdGhh
dAorLy8gaXQgd2lsbCBjYXVzZSBhIGNvbXBpbGUgZmFpbHVyZSBpZiB0aGUgZGVzdGluYXRpb24g
dHlwZSBpcyBub3QgbGFyZ2UgZW5vdWdoCisvLyB0byBjb250YWluIGFueSB2YWx1ZSBpbiB0aGUg
c291cmNlIHR5cGUuIEl0IHBlcmZvcm1zIG5vIHJ1bnRpbWUgY2hlY2tpbmcuCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgRHN0LCB0eXBlbmFtZSBTcmM+Citjb25zdGV4cHIgRHN0IHN0cmljdF9jYXN0KFNy
YyB2YWx1ZSkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6bnVtZXJpY19saW1pdHM8U3JjPjo6
aXNfc3BlY2lhbGl6ZWQsICJBcmd1bWVudCBtdXN0IGJlIG51bWVyaWMuIik7CisgICAgc3RhdGlj
X2Fzc2VydChzdGQ6Om51bWVyaWNfbGltaXRzPERzdD46OmlzX3NwZWNpYWxpemVkLCAiUmVzdWx0
IG11c3QgYmUgbnVtZXJpYy4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChpbnRlcm5hbDo6U3RhdGlj
RHN0UmFuZ2VSZWxhdGlvblRvU3JjUmFuZ2U8RHN0LCBTcmM+Ojp2YWx1ZSA9PQorICAgICAgICAg
ICAgICAgICAgIGludGVybmFsOjpOVU1FUklDX1JBTkdFX0NPTlRBSU5FRCksCisgICAgICAgICAg
ICAgICAgICAiVGhlIG51bWVyaWMgY29udmVyc2lvbiBpcyBvdXQgb2YgcmFuZ2UgZm9yIHRoaXMg
dHlwZS4gWW91ICIKKyAgICAgICAgICAgICAgICAgICJzaG91bGQgcHJvYmFibHkgdXNlIG9uZSBv
ZiB0aGUgZm9sbG93aW5nIGNvbnZlcnNpb24gIgorICAgICAgICAgICAgICAgICAgIm1lY2hhbmlz
bXMgb24gdGhlIHZhbHVlIHlvdSB3YW50IHRvIHBhc3M6XG4iCisgICAgICAgICAgICAgICAgICAi
LSBiYXNlOjpjaGVja2VkX2Nhc3RcbiIKKyAgICAgICAgICAgICAgICAgICItIGJhc2U6OnNhdHVy
YXRlZF9jYXN0XG4iCisgICAgICAgICAgICAgICAgICAiLSBiYXNlOjpDaGVja2VkTnVtZXJpYyIp
OworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERzdD4odmFsdWUpOworfQorCisvLyBTdHJpY3RO
dW1lcmljIGltcGxlbWVudHMgY29tcGlsZSB0aW1lIHJhbmdlIGNoZWNraW5nIGJldHdlZW4gbnVt
ZXJpYyB0eXBlcyBieQorLy8gd3JhcHBpbmcgYXNzaWdubWVudCBvcGVyYXRpb25zIGluIGEgc3Ry
aWN0X2Nhc3QuIFRoaXMgY2xhc3MgaXMgaW50ZW5kZWQgdG8gYmUKKy8vIHVzZWQgZm9yIGZ1bmN0
aW9uIGFyZ3VtZW50cyBhbmQgcmV0dXJuIHR5cGVzLCB0byBlbnN1cmUgdGhlIGRlc3RpbmF0aW9u
IHR5cGUKKy8vIGNhbiBhbHdheXMgY29udGFpbiB0aGUgc291cmNlIHR5cGUuIFRoaXMgaXMgZXNz
ZW50aWFsbHkgdGhlIHNhbWUgYXMgZW5mb3JjaW5nCisvLyAtV2NvbnZlcnNpb24gaW4gZ2NjIGFu
ZCBDNDMwMiB3YXJuaW5ncyBvbiBNU1ZDLCBidXQgaXQgY2FuIGJlIGFwcGxpZWQKKy8vIGluY3Jl
bWVudGFsbHkgYXQgQVBJIGJvdW5kYXJpZXMsIG1ha2luZyBpdCBlYXNpZXIgdG8gY29udmVydCBj
b2RlIHNvIHRoYXQgaXQKKy8vIGNvbXBpbGVzIGNsZWFubHkgd2l0aCB0cnVuY2F0aW9uIHdhcm5p
bmdzIGVuYWJsZWQuCisvLyBUaGlzIHRlbXBsYXRlIHNob3VsZCBpbnRyb2R1Y2Ugbm8gcnVudGlt
ZSBvdmVyaGVhZCwgYnV0IGl0IGFsc28gcHJvdmlkZXMgbm8KKy8vIHJ1bnRpbWUgY2hlY2tpbmcg
b2YgYW55IG9mIHRoZSBhc3NvY2lhdGVkIG1hdGhlbWF0aWNhbCBvcGVyYXRpb25zLiBVc2UKKy8v
IENoZWNrZWROdW1lcmljIGZvciBydW50aW1lIHJhbmdlIGNoZWNrcyBvZiB0aGUgYWN0dWFsIHZh
bHVlIGJlaW5nIGFzc2lnbmVkLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBTdHJpY3RO
dW1lcmljCit7CisgIHB1YmxpYzoKKyAgICB0eXBlZGVmIFQgdHlwZTsKKworICAgIGNvbnN0ZXhw
ciBTdHJpY3ROdW1lcmljKCkgOiB2YWx1ZV8oMCkge30KKworICAgIC8vIENvcHkgY29uc3RydWN0
b3IuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFNyYz4KKyAgICBjb25zdGV4cHIgU3RyaWN0TnVt
ZXJpYyhjb25zdCBTdHJpY3ROdW1lcmljPFNyYz4gJnJocykgOiB2YWx1ZV8oc3RyaWN0X2Nhc3Q8
VD4ocmhzLnZhbHVlXykpCisgICAgeworICAgIH0KKworICAgIC8vIFRoaXMgaXMgbm90IGFuIGV4
cGxpY2l0IGNvbnN0cnVjdG9yIGJlY2F1c2Ugd2UgaW1wbGljaXRseSB1cGdyYWRlIHJlZ3VsYXIK
KyAgICAvLyBudW1lcmljcyB0byBTdHJpY3ROdW1lcmljcyB0byBtYWtlIHRoZW0gZWFzaWVyIHRv
IHVzZS4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU3JjPgorICAgIGNvbnN0ZXhwciBTdHJpY3RO
dW1lcmljKFNyYyB2YWx1ZSkgOiB2YWx1ZV8oc3RyaWN0X2Nhc3Q8VD4odmFsdWUpKQorICAgIHsK
KyAgICB9CisKKyAgICAvLyBUaGUgbnVtZXJpYyBjYXN0IG9wZXJhdG9yIGJhc2ljYWxseSBoYW5k
bGVzIGFsbCB0aGUgbWFnaWMuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIERzdD4KKyAgICBjb25z
dGV4cHIgb3BlcmF0b3IgRHN0KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBzdHJpY3Rf
Y2FzdDxEc3Q+KHZhbHVlXyk7CisgICAgfQorCisgIHByaXZhdGU6CisgICAgY29uc3QgVCB2YWx1
ZV87Cit9OworCisvLyBFeHBsaWNpdGx5IG1ha2UgYSBzaG9ydGVyIHNpemVfdCB0eXBlZGVmIGZv
ciBjb252ZW5pZW5jZS4KK3R5cGVkZWYgU3RyaWN0TnVtZXJpYzxzaXplX3Q+IFNpemVUOworCit9
ICAvLyBuYW1lc3BhY2UgYmFzZQorCisjZW5kaWYgIC8vIEJBU0VfTlVNRVJJQ1NfU0FGRV9DT05W
RVJTSU9OU19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi90aGly
ZF9wYXJ0eS9udW1lcmljcy9iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnNfaW1wbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vdGhpcmRfcGFy
dHkvbnVtZXJpY3MvYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zX2ltcGwuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3RoaXJkX3BhcnR5
L251bWVyaWNzL2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9uc19pbXBsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwyNjkgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKworI2lmbmRlZiBCQVNFX05VTUVSSUNTX1NBRkVfQ09OVkVS
U0lPTlNfSU1QTF9IXworI2RlZmluZSBCQVNFX05VTUVSSUNTX1NBRkVfQ09OVkVSU0lPTlNfSU1Q
TF9IXworCisjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNpbmNs
dWRlIDxjbGltaXRzPgorI2luY2x1ZGUgPGxpbWl0cz4KKworbmFtZXNwYWNlIGJhc2UKK3sKK25h
bWVzcGFjZSBpbnRlcm5hbAoreworCisvLyBUaGUgc3RkIGxpYnJhcnkgZG9lc24ndCBwcm92aWRl
IGEgYmluYXJ5IG1heF9leHBvbmVudCBmb3IgaW50ZWdlcnMsIGhvd2V2ZXIKKy8vIHdlIGNhbiBj
b21wdXRlIG9uZSBieSBhZGRpbmcgb25lIHRvIHRoZSBudW1iZXIgb2Ygbm9uLXNpZ24gYml0cy4g
VGhpcyBhbGxvd3MKKy8vIGZvciBhY2N1cmF0ZSByYW5nZSBjb21wYXJpc29ucyBiZXR3ZWVuIGZs
b2F0aW5nIHBvaW50IGFuZCBpbnRlZ2VyIHR5cGVzLgordGVtcGxhdGUgPHR5cGVuYW1lIE51bWVy
aWNUeXBlPgorc3RydWN0IE1heEV4cG9uZW50Cit7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2FyaXRobWV0aWM8TnVtZXJpY1R5cGU+Ojp2YWx1ZSwgIkFyZ3VtZW50IG11c3QgYmUgbnVtZXJp
Yy4iKTsKKyAgICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0KKyAgICAgICAgc3RkOjpudW1lcmlj
X2xpbWl0czxOdW1lcmljVHlwZT46OmlzX2llYzU1OQorICAgICAgICAgICAgPyBzdGQ6Om51bWVy
aWNfbGltaXRzPE51bWVyaWNUeXBlPjo6bWF4X2V4cG9uZW50CisgICAgICAgICAgICA6IChzaXpl
b2YoTnVtZXJpY1R5cGUpICogQ0hBUl9CSVQgKyAxIC0gc3RkOjpudW1lcmljX2xpbWl0czxOdW1l
cmljVHlwZT46OmlzX3NpZ25lZCk7Cit9OworCitlbnVtIEludGVnZXJSZXByZXNlbnRhdGlvbgor
eworICAgIElOVEVHRVJfUkVQUkVTRU5UQVRJT05fVU5TSUdORUQsCisgICAgSU5URUdFUl9SRVBS
RVNFTlRBVElPTl9TSUdORUQKK307CisKKy8vIEEgcmFuZ2UgZm9yIGEgZ2l2ZW4gbnVubWVyaWMg
U3JjIHR5cGUgaXMgY29udGFpbmVkIGZvciBhIGdpdmVuIG51bWVyaWMgRHN0CisvLyB0eXBlIGlm
IGJvdGggbnVtZXJpY19saW1pdHM8U3JjPjo6bWF4KCkgPD0gbnVtZXJpY19saW1pdHM8RHN0Pjo6
bWF4KCkgYW5kCisvLyBudW1lcmljX2xpbWl0czxTcmM+OjptaW4oKSA+PSBudW1lcmljX2xpbWl0
czxEc3Q+OjptaW4oKSBhcmUgdHJ1ZS4KKy8vIFdlIGltcGxlbWVudCB0aGlzIGFzIHRlbXBsYXRl
IHNwZWNpYWxpemF0aW9ucyByYXRoZXIgdGhhbiBzaW1wbGUgc3RhdGljCisvLyBjb21wYXJpc29u
cyB0byBlbnN1cmUgdHlwZSBjb3JyZWN0bmVzcyBpbiBvdXIgY29tcGFyaXNvbnMuCitlbnVtIE51
bWVyaWNSYW5nZVJlcHJlc2VudGF0aW9uCit7CisgICAgTlVNRVJJQ19SQU5HRV9OT1RfQ09OVEFJ
TkVELAorICAgIE5VTUVSSUNfUkFOR0VfQ09OVEFJTkVECit9OworCisvLyBIZWxwZXIgdGVtcGxh
dGVzIHRvIHN0YXRpY2FsbHkgZGV0ZXJtaW5lIGlmIG91ciBkZXN0aW5hdGlvbiB0eXBlIGNhbiBj
b250YWluCisvLyBtYXhpbXVtIGFuZCBtaW5pbXVtIHZhbHVlcyByZXByZXNlbnRlZCBieSB0aGUg
c291cmNlIHR5cGUuCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBEc3QsCisgICAgICAgICAgdHlwZW5h
bWUgU3JjLAorICAgICAgICAgIEludGVnZXJSZXByZXNlbnRhdGlvbiBEc3RTaWduID0gc3RkOjpu
dW1lcmljX2xpbWl0czxEc3Q+Ojppc19zaWduZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA/IElOVEVHRVJfUkVQUkVTRU5UQVRJT05fU0lHTkVECisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBJTlRFR0VSX1JFUFJF
U0VOVEFUSU9OX1VOU0lHTkVELAorICAgICAgICAgIEludGVnZXJSZXByZXNlbnRhdGlvbiBTcmNT
aWduID0gc3RkOjpudW1lcmljX2xpbWl0czxTcmM+Ojppc19zaWduZWQKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IElOVEVHRVJfUkVQUkVTRU5UQVRJT05f
U0lHTkVECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBJ
TlRFR0VSX1JFUFJFU0VOVEFUSU9OX1VOU0lHTkVEPgorc3RydWN0IFN0YXRpY0RzdFJhbmdlUmVs
YXRpb25Ub1NyY1JhbmdlOworCisvLyBTYW1lIHNpZ246IERzdCBpcyBndWFyYW50ZWVkIHRvIGNv
bnRhaW4gU3JjIG9ubHkgaWYgaXRzIHJhbmdlIGlzIGVxdWFsIG9yCisvLyBsYXJnZXIuCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgRHN0LCB0eXBlbmFtZSBTcmMsIEludGVnZXJSZXByZXNlbnRhdGlvbiBT
aWduPgorc3RydWN0IFN0YXRpY0RzdFJhbmdlUmVsYXRpb25Ub1NyY1JhbmdlPERzdCwgU3JjLCBT
aWduLCBTaWduPgoreworICAgIHN0YXRpYyBjb25zdCBOdW1lcmljUmFuZ2VSZXByZXNlbnRhdGlv
biB2YWx1ZSA9CisgICAgICAgIE1heEV4cG9uZW50PERzdD46OnZhbHVlID49IE1heEV4cG9uZW50
PFNyYz46OnZhbHVlID8gTlVNRVJJQ19SQU5HRV9DT05UQUlORUQKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBOVU1FUklDX1JBTkdF
X05PVF9DT05UQUlORUQ7Cit9OworCisvLyBVbnNpZ25lZCB0byBzaWduZWQ6IERzdCBpcyBndWFy
YW50ZWVkIHRvIGNvbnRhaW4gc291cmNlIG9ubHkgaWYgaXRzIHJhbmdlIGlzCisvLyBsYXJnZXIu
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRHN0LCB0eXBlbmFtZSBTcmM+CitzdHJ1Y3QgU3RhdGljRHN0
UmFuZ2VSZWxhdGlvblRvU3JjUmFuZ2U8RHN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJTlRFR0VSX1JFUFJFU0VOVEFUSU9OX1NJR05FRCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJTlRFR0VSX1JFUFJFU0VOVEFUSU9OX1VOU0lHTkVEPgoreworICAg
IHN0YXRpYyBjb25zdCBOdW1lcmljUmFuZ2VSZXByZXNlbnRhdGlvbiB2YWx1ZSA9CisgICAgICAg
IE1heEV4cG9uZW50PERzdD46OnZhbHVlID4gTWF4RXhwb25lbnQ8U3JjPjo6dmFsdWUgPyBOVU1F
UklDX1JBTkdFX0NPTlRBSU5FRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogTlVNRVJJQ19SQU5HRV9OT1RfQ09OVEFJTkVEOworfTsK
KworLy8gU2lnbmVkIHRvIHVuc2lnbmVkOiBEc3QgY2Fubm90IGJlIHN0YXRpY2FsbHkgZGV0ZXJt
aW5lZCB0byBjb250YWluIFNyYy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBEc3QsIHR5cGVuYW1lIFNy
Yz4KK3N0cnVjdCBTdGF0aWNEc3RSYW5nZVJlbGF0aW9uVG9TcmNSYW5nZTxEc3QsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3JjLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIElOVEVHRVJfUkVQUkVTRU5UQVRJT05fVU5TSUdORUQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5URUdFUl9SRVBSRVNFTlRB
VElPTl9TSUdORUQ+Cit7CisgICAgc3RhdGljIGNvbnN0IE51bWVyaWNSYW5nZVJlcHJlc2VudGF0
aW9uIHZhbHVlID0gTlVNRVJJQ19SQU5HRV9OT1RfQ09OVEFJTkVEOworfTsKKworZW51bSBSYW5n
ZUNvbnN0cmFpbnQgOiB1bnNpZ25lZCBjaGFyCit7CisgICAgUkFOR0VfVkFMSUQgICAgID0gMHgw
LCAgLy8gVmFsdWUgY2FuIGJlIHJlcHJlc2VudGVkIGJ5IHRoZSBkZXN0aW5hdGlvbiB0eXBlLgor
ICAgIFJBTkdFX1VOREVSRkxPVyA9IDB4MSwgIC8vIFZhbHVlIHdvdWxkIG92ZXJmbG93LgorICAg
IFJBTkdFX09WRVJGTE9XICA9IDB4MiwgIC8vIFZhbHVlIHdvdWxkIHVuZGVyZmxvdy4KKyAgICBS
QU5HRV9JTlZBTElEICAgPSBSQU5HRV9VTkRFUkZMT1cgfCBSQU5HRV9PVkVSRkxPVyAgLy8gSW52
YWxpZCAoaS5lLiBOYU4pLgorfTsKKworLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBjb2VyY2luZyBh
biBpbnQgYmFjayB0byBhIFJhbmdlQ29udHJhaW50LgorY29uc3RleHByIFJhbmdlQ29uc3RyYWlu
dCBHZXRSYW5nZUNvbnN0cmFpbnQoaW50IGludGVnZXJfcmFuZ2VfY29uc3RyYWludCkKK3sKKyAg
ICAvLyBUT0RPKGpzY2h1aCk6IE9uY2Ugd2UgZ2V0IGZ1bGwgQysrMTQgc3VwcG9ydCB3ZSB3YW50
IHRoaXMKKyAgICAvLyBhc3NlcnQoaW50ZWdlcl9yYW5nZV9jb25zdHJhaW50ID49IFJBTkdFX1ZB
TElEICYmCisgICAgLy8gICAgICAgIGludGVnZXJfcmFuZ2VfY29uc3RyYWludCA8PSBSQU5HRV9J
TlZBTElEKQorICAgIHJldHVybiBzdGF0aWNfY2FzdDxSYW5nZUNvbnN0cmFpbnQ+KGludGVnZXJf
cmFuZ2VfY29uc3RyYWludCk7Cit9CisKKy8vIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBhIFJhbmdl
Q29uc3RyYWludCBmcm9tIGFuIHVwcGVyIGFuZCBsb3dlciBib3VuZAorLy8gY2hlY2sgYnkgdGFr
aW5nIGFkdmFudGFnZSBvZiB0aGUgZmFjdCB0aGF0IG9ubHkgTmFOIGNhbiBiZSBvdXQgb2YgcmFu
Z2UgaW4KKy8vIGJvdGggZGlyZWN0aW9ucyBhdCBvbmNlLgorY29uc3RleHByIGlubGluZSBSYW5n
ZUNvbnN0cmFpbnQgR2V0UmFuZ2VDb25zdHJhaW50KGJvb2wgaXNfaW5fdXBwZXJfYm91bmQsIGJv
b2wgaXNfaW5fbG93ZXJfYm91bmQpCit7CisgICAgcmV0dXJuIEdldFJhbmdlQ29uc3RyYWludCgo
aXNfaW5fdXBwZXJfYm91bmQgPyAwIDogUkFOR0VfT1ZFUkZMT1cpIHwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChpc19pbl9sb3dlcl9ib3VuZCA/IDAgOiBSQU5HRV9VTkRFUkZMT1cp
KTsKK30KKworLy8gVGhlIGZvbGxvd2luZyBoZWxwZXIgdGVtcGxhdGUgYWRkcmVzc2VzIGEgY29y
bmVyIGNhc2UgaW4gcmFuZ2UgY2hlY2tzIGZvcgorLy8gY29udmVyc2lvbiBmcm9tIGEgZmxvYXRp
bmctcG9pbnQgdHlwZSB0byBhbiBpbnRlZ3JhbCB0eXBlIG9mIHNtYWxsZXIgcmFuZ2UKKy8vIGJ1
dCBsYXJnZXIgcHJlY2lzaW9uIChlLmcuIGZsb2F0IC0+IHVuc2lnbmVkKS4gVGhlIHByb2JsZW0g
aXMgYXMgZm9sbG93czoKKy8vICAgMS4gSW50ZWdyYWwgbWF4aW11bSBpcyBhbHdheXMgb25lIGxl
c3MgdGhhbiBhIHBvd2VyIG9mIHR3bywgc28gaXQgbXVzdCBiZQorLy8gICAgICB0cnVuY2F0ZWQg
dG8gZml0IHRoZSBtYW50aXNzYSBvZiB0aGUgZmxvYXRpbmcgcG9pbnQuIFRoZSBkaXJlY3Rpb24g
b2YKKy8vICAgICAgcm91bmRpbmcgaXMgaW1wbGVtZW50YXRpb24gZGVmaW5lZCwgYnV0IGJ5IGRl
ZmF1bHQgaXQncyBhbHdheXMgSUVFRQorLy8gICAgICBmbG9hdHMsIHdoaWNoIHJvdW5kIHRvIG5l
YXJlc3QgYW5kIHRodXMgcmVzdWx0IGluIGEgdmFsdWUgb2YgbGFyZ2VyCisvLyAgICAgIG1hZ25p
dHVkZSB0aGFuIHRoZSBpbnRlZ3JhbCB2YWx1ZS4KKy8vICAgICAgRXhhbXBsZTogZmxvYXQgZiA9
IFVJTlRfTUFYOyAvLyBmIGlzIDQyOTQ5NjcyOTZmIGJ1dCBVSU5UX01BWAorLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIDQyOTQ5NjcyOTV1LgorLy8gICAyLiBJZiB0
aGUgZmxvYXRpbmcgcG9pbnQgdmFsdWUgaXMgZXF1YWwgdG8gdGhlIHByb21vdGVkIGludGVncmFs
IG1heGltdW0KKy8vICAgICAgdmFsdWUsIGEgcmFuZ2UgY2hlY2sgd2lsbCBlcnJvbmVvdXNseSBw
YXNzLgorLy8gICAgICBFeGFtcGxlOiAoNDI5NDk2NzI5NmYgPD0gNDI5NDk2NzI5NXUpIC8vIFRo
aXMgaXMgdHJ1ZSBkdWUgdG8gYSBwcmVjaXNpb24KKy8vICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBsb3NzIGluIHJvdW5kaW5nIHVwIHRvIGZsb2F0LgorLy8g
ICAzLiBXaGVuIHRoZSBmbG9hdGluZyBwb2ludCB2YWx1ZSBpcyB0aGVuIGNvbnZlcnRlZCB0byBh
biBpbnRlZ3JhbCwgdGhlCisvLyAgICAgIHJlc3VsdGluZyB2YWx1ZSBpcyBvdXQgb2YgcmFuZ2Ug
Zm9yIHRoZSB0YXJnZXQgaW50ZWdyYWwgdHlwZSBhbmQKKy8vICAgICAgdGh1cyBpcyBpbXBsZW1l
bnRhdGlvbiBkZWZpbmVkLgorLy8gICAgICBFeGFtcGxlOiB1bnNpZ25lZCB1ID0gKGZsb2F0KUlO
VF9NQVg7IC8vIHUgd2lsbCB0eXBpY2FsbHkgb3ZlcmZsb3cgdG8gMC4KKy8vIFRvIGZpeCB0aGlz
IGJ1ZyB3ZSBtYW51YWxseSB0cnVuY2F0ZSB0aGUgbWF4aW11bSB2YWx1ZSB3aGVuIHRoZSBkZXN0
aW5hdGlvbgorLy8gdHlwZSBpcyBhbiBpbnRlZ3JhbCBvZiBsYXJnZXIgcHJlY2lzaW9uIHRoYW4g
dGhlIHNvdXJjZSBmbG9hdGluZy1wb2ludCB0eXBlLAorLy8gc3VjaCB0aGF0IHRoZSByZXN1bHRp
bmcgbWF4aW11bSBpcyByZXByZXNlbnRlZCBleGFjdGx5IGFzIGEgZmxvYXRpbmcgcG9pbnQuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgRHN0LCB0eXBlbmFtZSBTcmM+CitzdHJ1Y3QgTmFycm93aW5nUmFu
Z2UKK3sKKyAgICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6bnVtZXJpY19saW1pdHM8U3JjPiBTcmNM
aW1pdHM7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Om51bWVyaWNfbGltaXRzPERzdD4gRHN0
TGltaXRzOworICAgIC8vIFRoZSBmb2xsb3dpbmcgbG9naWMgYXZvaWRzIHdhcm5pbmdzIHdoZXJl
IHRoZSBtYXggZnVuY3Rpb24gaXMKKyAgICAvLyBpbnN0YW50aWF0ZWQgd2l0aCBpbnZhbGlkIHZh
bHVlcyBmb3IgYSBiaXQgc2hpZnQgKGV2ZW4gdGhvdWdoCisgICAgLy8gc3VjaCBhIGZ1bmN0aW9u
IGNhbiBuZXZlciBiZSBjYWxsZWQpLgorICAgIHN0YXRpYyBjb25zdCBpbnQgc2hpZnQgPSAoTWF4
RXhwb25lbnQ8U3JjPjo6dmFsdWUgPiBNYXhFeHBvbmVudDxEc3Q+Ojp2YWx1ZSAmJgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU3JjTGltaXRzOjpkaWdpdHMgPCBEc3RMaW1pdHM6OmRp
Z2l0cyAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3JjTGltaXRzOjppc19pZWM1
NTkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERzdExpbWl0czo6aXNfaW50ZWdl
cikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKERzdExpbWl0czo6ZGlnaXRz
IC0gU3JjTGltaXRzOjpkaWdpdHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
IDA7CisKKyAgICBzdGF0aWMgY29uc3RleHByIERzdCBtYXgoKQorICAgIHsKKyAgICAgICAgLy8g
V2UgdXNlIFVJTlRNQVhfQyBiZWxvdyB0byBhdm9pZCBjb21waWxlciB3YXJuaW5ncyBhYm91dCBz
aGlmdGluZyBmbG9hdGluZworICAgICAgICAvLyBwb2ludHMuIFNpbmNlIGl0J3MgYSBjb21waWxl
IHRpbWUgY2FsY3VsYXRpb24sIGl0IHNob3VsZG4ndCBoYXZlIGFueQorICAgICAgICAvLyBwZXJm
b3JtYW5jZSBpbXBhY3QuCisgICAgICAgIHJldHVybiBEc3RMaW1pdHM6Om1heCgpIC0gc3RhdGlj
X2Nhc3Q8RHN0PigoVUlOVE1BWF9DKDEpIDw8IHNoaWZ0KSAtIDEpOworICAgIH0KKworICAgIHN0
YXRpYyBjb25zdGV4cHIgRHN0IG1pbigpCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjpudW1l
cmljX2xpbWl0czxEc3Q+Ojppc19pZWM1NTkgPyAtRHN0TGltaXRzOjptYXgoKSA6IERzdExpbWl0
czo6bWluKCk7CisgICAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIERzdCwKKyAgICAgICAg
ICB0eXBlbmFtZSBTcmMsCisgICAgICAgICAgSW50ZWdlclJlcHJlc2VudGF0aW9uIERzdFNpZ24g
PSBzdGQ6Om51bWVyaWNfbGltaXRzPERzdD46OmlzX3NpZ25lZAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gSU5URUdFUl9SRVBSRVNFTlRBVElPTl9TSUdO
RUQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IElOVEVH
RVJfUkVQUkVTRU5UQVRJT05fVU5TSUdORUQsCisgICAgICAgICAgSW50ZWdlclJlcHJlc2VudGF0
aW9uIFNyY1NpZ24gPSBzdGQ6Om51bWVyaWNfbGltaXRzPFNyYz46OmlzX3NpZ25lZAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gSU5URUdFUl9SRVBSRVNF
TlRBVElPTl9TSUdORUQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6IElOVEVHRVJfUkVQUkVTRU5UQVRJT05fVU5TSUdORUQsCisgICAgICAgICAgTnVtZXJp
Y1JhbmdlUmVwcmVzZW50YXRpb24gRHN0UmFuZ2UgPSBTdGF0aWNEc3RSYW5nZVJlbGF0aW9uVG9T
cmNSYW5nZTxEc3QsIFNyYz46OnZhbHVlPgorc3RydWN0IERzdFJhbmdlUmVsYXRpb25Ub1NyY1Jh
bmdlSW1wbDsKKworLy8gVGhlIGZvbGxvd2luZyB0ZW1wbGF0ZXMgYXJlIGZvciByYW5nZXMgdGhh
dCBtdXN0IGJlIHZlcmlmaWVkIGF0IHJ1bnRpbWUuIFdlCisvLyBzcGxpdCBpdCBpbnRvIGNoZWNr
cyBiYXNlZCBvbiBzaWduZWRuZXNzIHRvIGF2b2lkIGNvbmZ1c2luZyBjYXN0cyBhbmQKKy8vIGNv
bXBpbGVyIHdhcm5pbmdzIG9uIHNpZ25lZCBhbiB1bnNpZ25lZCBjb21wYXJpc29ucy4KKworLy8g
RHN0IHJhbmdlIGlzIHN0YXRpY2FsbHkgZGV0ZXJtaW5lZCB0byBjb250YWluIFNyYzogTm90aGlu
ZyB0byBjaGVjay4KK3RlbXBsYXRlIDx0eXBlbmFtZSBEc3QsIHR5cGVuYW1lIFNyYywgSW50ZWdl
clJlcHJlc2VudGF0aW9uIERzdFNpZ24sIEludGVnZXJSZXByZXNlbnRhdGlvbiBTcmNTaWduPgor
c3RydWN0IERzdFJhbmdlUmVsYXRpb25Ub1NyY1JhbmdlSW1wbDxEc3QsIFNyYywgRHN0U2lnbiwg
U3JjU2lnbiwgTlVNRVJJQ19SQU5HRV9DT05UQUlORUQ+Cit7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBSYW5nZUNvbnN0cmFpbnQgQ2hlY2soU3JjIHZhbHVlKSB7IHJldHVybiBSQU5HRV9WQUxJRDsg
fQorfTsKKworLy8gU2lnbmVkIHRvIHNpZ25lZCBuYXJyb3dpbmc6IEJvdGggdGhlIHVwcGVyIGFu
ZCBsb3dlciBib3VuZGFyaWVzIG1heSBiZQorLy8gZXhjZWVkZWQuCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgRHN0LCB0eXBlbmFtZSBTcmM+CitzdHJ1Y3QgRHN0UmFuZ2VSZWxhdGlvblRvU3JjUmFuZ2VJ
bXBsPERzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3JjLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlRFR0VSX1JFUFJFU0VOVEFUSU9O
X1NJR05FRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5URUdFUl9S
RVBSRVNFTlRBVElPTl9TSUdORUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5VTUVSSUNfUkFOR0VfTk9UX0NPTlRBSU5FRD4KK3sKKyAgICBzdGF0aWMgY29uc3RleHBy
IFJhbmdlQ29uc3RyYWludCBDaGVjayhTcmMgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4g
R2V0UmFuZ2VDb25zdHJhaW50KCh2YWx1ZSA8PSBOYXJyb3dpbmdSYW5nZTxEc3QsIFNyYz46Om1h
eCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgPj0gTmFycm93
aW5nUmFuZ2U8RHN0LCBTcmM+OjptaW4oKSkpOworICAgIH0KK307CisKKy8vIFVuc2lnbmVkIHRv
IHVuc2lnbmVkIG5hcnJvd2luZzogT25seSB0aGUgdXBwZXIgYm91bmRhcnkgY2FuIGJlIGV4Y2Vl
ZGVkLgordGVtcGxhdGUgPHR5cGVuYW1lIERzdCwgdHlwZW5hbWUgU3JjPgorc3RydWN0IERzdFJh
bmdlUmVsYXRpb25Ub1NyY1JhbmdlSW1wbDxEc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SU5URUdFUl9SRVBSRVNFTlRBVElPTl9VTlNJR05FRCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSU5URUdFUl9SRVBSRVNFTlRBVElPTl9VTlNJR05FRCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVNRVJJQ19SQU5HRV9OT1RfQ09OVEFJTkVE
PgoreworICAgIHN0YXRpYyBjb25zdGV4cHIgUmFuZ2VDb25zdHJhaW50IENoZWNrKFNyYyB2YWx1
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBHZXRSYW5nZUNvbnN0cmFpbnQodmFsdWUgPD0gTmFy
cm93aW5nUmFuZ2U8RHN0LCBTcmM+OjptYXgoKSwgdHJ1ZSk7CisgICAgfQorfTsKKworLy8gVW5z
aWduZWQgdG8gc2lnbmVkOiBUaGUgdXBwZXIgYm91bmRhcnkgbWF5IGJlIGV4Y2VlZGVkLgordGVt
cGxhdGUgPHR5cGVuYW1lIERzdCwgdHlwZW5hbWUgU3JjPgorc3RydWN0IERzdFJhbmdlUmVsYXRp
b25Ub1NyY1JhbmdlSW1wbDxEc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5URUdFUl9S
RVBSRVNFTlRBVElPTl9TSUdORUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIElOVEVHRVJfUkVQUkVTRU5UQVRJT05fVU5TSUdORUQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5VTUVSSUNfUkFOR0VfTk9UX0NPTlRBSU5FRD4KK3sKKyAgICBz
dGF0aWMgY29uc3RleHByIFJhbmdlQ29uc3RyYWludCBDaGVjayhTcmMgdmFsdWUpCisgICAgewor
ICAgICAgICByZXR1cm4gc2l6ZW9mKERzdCkgPiBzaXplb2YoU3JjKQorICAgICAgICAgICAgICAg
ICAgID8gUkFOR0VfVkFMSUQKKyAgICAgICAgICAgICAgICAgICA6IEdldFJhbmdlQ29uc3RyYWlu
dCh2YWx1ZSA8PSBzdGF0aWNfY2FzdDxTcmM+KE5hcnJvd2luZ1JhbmdlPERzdCwgU3JjPjo6bWF4
KCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpOworICAg
IH0KK307CisKKy8vIFNpZ25lZCB0byB1bnNpZ25lZDogVGhlIHVwcGVyIGJvdW5kYXJ5IG1heSBi
ZSBleGNlZWRlZCBmb3IgYSBuYXJyb3dlciBEc3QsCisvLyBhbmQgYW55IG5lZ2F0aXZlIHZhbHVl
IGV4Y2VlZHMgdGhlIGxvd2VyIGJvdW5kYXJ5LgordGVtcGxhdGUgPHR5cGVuYW1lIERzdCwgdHlw
ZW5hbWUgU3JjPgorc3RydWN0IERzdFJhbmdlUmVsYXRpb25Ub1NyY1JhbmdlSW1wbDxEc3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNyYywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSU5URUdFUl9SRVBSRVNFTlRBVElPTl9VTlNJR05FRCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5URUdFUl9SRVBSRVNFTlRB
VElPTl9TSUdORUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTUVS
SUNfUkFOR0VfTk9UX0NPTlRBSU5FRD4KK3sKKyAgICBzdGF0aWMgY29uc3RleHByIFJhbmdlQ29u
c3RyYWludCBDaGVjayhTcmMgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gKE1heEV4cG9u
ZW50PERzdD46OnZhbHVlID49IE1heEV4cG9uZW50PFNyYz46OnZhbHVlKQorICAgICAgICAgICAg
ICAgICAgID8gR2V0UmFuZ2VDb25zdHJhaW50KHRydWUsIHZhbHVlID49IHN0YXRpY19jYXN0PFNy
Yz4oMCkpCisgICAgICAgICAgICAgICAgICAgOiBHZXRSYW5nZUNvbnN0cmFpbnQodmFsdWUgPD0g
c3RhdGljX2Nhc3Q8U3JjPihOYXJyb3dpbmdSYW5nZTxEc3QsIFNyYz46Om1heCgpKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA+PSBzdGF0aWNfY2FzdDxT
cmM+KDApKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRHN0LCB0eXBlbmFtZSBT
cmM+Citjb25zdGV4cHIgUmFuZ2VDb25zdHJhaW50IERzdFJhbmdlUmVsYXRpb25Ub1NyY1Jhbmdl
KFNyYyB2YWx1ZSkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6bnVtZXJpY19saW1pdHM8U3Jj
Pjo6aXNfc3BlY2lhbGl6ZWQsICJBcmd1bWVudCBtdXN0IGJlIG51bWVyaWMuIik7CisgICAgc3Rh
dGljX2Fzc2VydChzdGQ6Om51bWVyaWNfbGltaXRzPERzdD46OmlzX3NwZWNpYWxpemVkLCAiUmVz
dWx0IG11c3QgYmUgbnVtZXJpYy4iKTsKKyAgICByZXR1cm4gRHN0UmFuZ2VSZWxhdGlvblRvU3Jj
UmFuZ2VJbXBsPERzdCwgU3JjPjo6Q2hlY2sodmFsdWUpOworfQorCit9ICAvLyBuYW1lc3BhY2Ug
aW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBiYXNlCisKKyNlbmRpZiAgLy8gQkFTRV9OVU1FUklD
U19TQUZFX0NPTlZFUlNJT05TX0lNUExfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21tb24vdGhpcmRfcGFydHkvbnVtZXJpY3MvYmFzZS9udW1lcmljcy9zYWZlX21hdGgu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3RoaXJk
X3BhcnR5L251bWVyaWNzL2Jhc2UvbnVtZXJpY3Mvc2FmZV9tYXRoLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi90aGlyZF9wYXJ0eS9udW1lcmlj
cy9iYXNlL251bWVyaWNzL3NhZmVfbWF0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzI0
IEBACisvLyBDb3B5cmlnaHQgMjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisKKyNpZm5kZWYgQkFTRV9OVU1FUklDU19TQUZFX01BVEhfSF8KKyNkZWZpbmUgQkFTRV9OVU1F
UklDU19TQUZFX01BVEhfSF8KKworI2luY2x1ZGUgPHN0ZGRlZi5oPgorCisjaW5jbHVkZSA8bGlt
aXRzPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorCisjaW5jbHVkZSAiYmFzZS9sb2dnaW5nLmgi
CisjaW5jbHVkZSAiYmFzZS9udW1lcmljcy9zYWZlX21hdGhfaW1wbC5oIgorCituYW1lc3BhY2Ug
YmFzZQoreworCituYW1lc3BhY2UgaW50ZXJuYWwKK3sKKworLy8gQ2hlY2tlZE51bWVyaWMgaW1w
bGVtZW50cyBhbGwgdGhlIGxvZ2ljIGFuZCBvcGVyYXRvcnMgZm9yIGRldGVjdGluZyBpbnRlZ2Vy
CisvLyBib3VuZGFyeSBjb25kaXRpb25zIHN1Y2ggYXMgb3ZlcmZsb3csIHVuZGVyZmxvdywgYW5k
IGludmFsaWQgY29udmVyc2lvbnMuCisvLyBUaGUgQ2hlY2tlZE51bWVyaWMgdHlwZSBpbXBsaWNp
dGx5IGNvbnZlcnRzIGZyb20gZmxvYXRpbmcgcG9pbnQgYW5kIGludGVnZXIKKy8vIGRhdGEgdHlw
ZXMsIGFuZCBjb250YWlucyBvdmVybG9hZHMgZm9yIGJhc2ljIGFyaXRobWV0aWMgb3BlcmF0aW9u
cyAoaS5lLjogKywKKy8vIC0sICosIC8sICUpLgorLy8KKy8vIFRoZSBmb2xsb3dpbmcgbWV0aG9k
cyBjb252ZXJ0IGZyb20gQ2hlY2tlZE51bWVyaWMgdG8gc3RhbmRhcmQgbnVtZXJpYyB2YWx1ZXM6
CisvLyBJc1ZhbGlkKCkgLSBSZXR1cm5zIHRydWUgaWYgdGhlIHVuZGVybHlpbmcgbnVtZXJpYyB2
YWx1ZSBpcyB2YWxpZCAoaS5lLiBoYXMKKy8vICAgICAgICAgICAgIGhhcyBub3Qgd3JhcHBlZCBh
bmQgaXMgbm90IHRoZSByZXN1bHQgb2YgYW4gaW52YWxpZCBjb252ZXJzaW9uKS4KKy8vIFZhbHVl
T3JEaWUoKSAtIFJldHVybnMgdGhlIHVuZGVybHlpbmcgdmFsdWUuIElmIHRoZSBzdGF0ZSBpcyBu
b3QgdmFsaWQgdGhpcworLy8gICAgICAgICAgICAgICAgY2FsbCB3aWxsIGNyYXNoIG9uIGEgQ0hF
Q0suCisvLyBWYWx1ZU9yRGVmYXVsdCgpIC0gUmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSwgb3Ig
dGhlIHN1cHBsaWVkIGRlZmF1bHQgaWYgdGhlCisvLyAgICAgICAgICAgICAgICAgICAgc3RhdGUg
aXMgbm90IHZhbGlkLgorLy8gVmFsdWVGbG9hdGluZygpIC0gUmV0dXJucyB0aGUgdW5kZXJseWlu
ZyBmbG9hdGluZyBwb2ludCB2YWx1ZSAodmFsaWQgb25seQorLy8gICAgICAgICAgICAgICAgICAg
b25seSBmb3IgZmxvYXRpbmcgcG9pbnQgQ2hlY2tlZE51bWVyaWMgdHlwZXMpLgorLy8KKy8vIEJp
dHdpc2Ugb3BlcmF0aW9ucyBhcmUgZXhwbGljaXRseSBub3Qgc3VwcG9ydGVkLCBiZWNhdXNlIGNv
cnJlY3QKKy8vIGhhbmRsaW5nIG9mIHNvbWUgY2FzZXMgKGUuZy4gc2lnbiBtYW5pcHVsYXRpb24p
IGlzIGFtYmlndW91cy4gQ29tcGFyaXNvbgorLy8gb3BlcmF0aW9ucyBhcmUgZXhwbGljaXRseSBu
b3Qgc3VwcG9ydGVkIGJlY2F1c2UgdGhleSBjb3VsZCByZXN1bHQgaW4gYSBjcmFzaAorLy8gb24g
YSBDSEVDSyBjb25kaXRpb24uIFlvdSBzaG91bGQgdXNlIHBhdHRlcm5zIGxpa2UgdGhlIGZvbGxv
d2luZyBmb3IgdGhlc2UKKy8vIG9wZXJhdGlvbnM6CisvLyBCaXR3aXNlIG9wZXJhdGlvbjoKKy8v
ICAgICBDaGVja2VkTnVtZXJpYzxpbnQ+IGNoZWNrZWRfaW50ID0gdW50cnVzdGVkX2lucHV0X3Zh
bHVlOworLy8gICAgIGludCB4ID0gY2hlY2tlZF9pbnQuVmFsdWVPckRlZmF1bHQoMCkgfCBrRmxh
Z1ZhbHVlczsKKy8vIENvbXBhcmlzb246CisvLyAgIENoZWNrZWROdW1lcmljPHNpemVfdD4gY2hl
Y2tlZF9zaXplID0gdW50cnVzdGVkX2lucHV0X3ZhbHVlOworLy8gICBjaGVja2VkX3NpemUgKz0g
SEVBREVSIExFTkdUSDsKKy8vICAgaWYgKGNoZWNrZWRfc2l6ZS5Jc1ZhbGlkKCkgJiYgY2hlY2tl
ZF9zaXplLlZhbHVlT3JEaWUoKSA8IGJ1ZmZlcl9zaXplKQorLy8gICAgIERvIHN0dWZmLi4uCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIENoZWNrZWROdW1lcmljCit7CisgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlLCAiQ2hlY2tlZE51bWVyaWM8VD46
IFQgbXVzdCBiZSBhIG51bWVyaWMgdHlwZS4iKTsKKworICBwdWJsaWM6CisgICAgdHlwZWRlZiBU
IHR5cGU7CisKKyAgICBDaGVja2VkTnVtZXJpYygpIHt9CisKKyAgICAvLyBDb3B5IGNvbnN0cnVj
dG9yLgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTcmM+CisgICAgQ2hlY2tlZE51bWVyaWMoY29u
c3QgQ2hlY2tlZE51bWVyaWM8U3JjPiAmcmhzKSA6IHN0YXRlXyhyaHMuVmFsdWVVbnNhZmUoKSwg
cmhzLnZhbGlkaXR5KCkpCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBT
cmM+CisgICAgQ2hlY2tlZE51bWVyaWMoU3JjIHZhbHVlLCBSYW5nZUNvbnN0cmFpbnQgdmFsaWRp
dHkpIDogc3RhdGVfKHZhbHVlLCB2YWxpZGl0eSkKKyAgICB7CisgICAgfQorCisgICAgLy8gVGhp
cyBpcyBub3QgYW4gZXhwbGljaXQgY29uc3RydWN0b3IgYmVjYXVzZSB3ZSBpbXBsaWNpdGx5IHVw
Z3JhZGUgcmVndWxhcgorICAgIC8vIG51bWVyaWNzIHRvIENoZWNrZWROdW1lcmljcyB0byBtYWtl
IHRoZW0gZWFzaWVyIHRvIHVzZS4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU3JjPgorICAgIENo
ZWNrZWROdW1lcmljKFNyYyB2YWx1ZSkgIC8vIE5PTElOVChydW50aW1lL2V4cGxpY2l0KQorICAg
ICAgICA6IHN0YXRlXyh2YWx1ZSkKKyAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjpu
dW1lcmljX2xpbWl0czxTcmM+Ojppc19zcGVjaWFsaXplZCwgIkFyZ3VtZW50IG11c3QgYmUgbnVt
ZXJpYy4iKTsKKyAgICB9CisKKyAgICAvLyBUaGlzIGlzIG5vdCBhbiBleHBsaWNpdCBjb25zdHJ1
Y3RvciBiZWNhdXNlIHdlIHdhbnQgYSBzZWFtbGVzcyBjb252ZXJzaW9uCisgICAgLy8gZnJvbSBT
dHJpY3ROdW1lcmljIHR5cGVzLgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTcmM+CisgICAgQ2hl
Y2tlZE51bWVyaWMoU3RyaWN0TnVtZXJpYzxTcmM+IHZhbHVlKSAgLy8gTk9MSU5UKHJ1bnRpbWUv
ZXhwbGljaXQpCisgICAgICAgIDogc3RhdGVfKHN0YXRpY19jYXN0PFNyYz4odmFsdWUpKQorICAg
IHsKKyAgICB9CisKKyAgICAvLyBJc1ZhbGlkKCkgaXMgdGhlIHB1YmxpYyBBUEkgdG8gdGVzdCBp
ZiBhIENoZWNrZWROdW1lcmljIGlzIGN1cnJlbnRseSB2YWxpZC4KKyAgICBib29sIElzVmFsaWQo
KSBjb25zdCB7IHJldHVybiB2YWxpZGl0eSgpID09IFJBTkdFX1ZBTElEOyB9CisKKyAgICAvLyBW
YWx1ZU9yRGllKCkgVGhlIHByaW1hcnkgYWNjZXNzb3IgZm9yIHRoZSB1bmRlcmx5aW5nIHZhbHVl
LiBJZiB0aGUgY3VycmVudAorICAgIC8vIHN0YXRlIGlzIG5vdCB2YWxpZCBpdCB3aWxsIENIRUNL
IGFuZCBjcmFzaC4KKyAgICBUIFZhbHVlT3JEaWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQ0hF
Q0soSXNWYWxpZCgpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRlXy52YWx1ZSgpOworICAgIH0KKwor
ICAgIC8vIFZhbHVlT3JEZWZhdWx0KFQgZGVmYXVsdF92YWx1ZSkgQSBjb252ZW5pZW5jZSBtZXRo
b2QgdGhhdCByZXR1cm5zIHRoZQorICAgIC8vIGN1cnJlbnQgdmFsdWUgaWYgdGhlIHN0YXRlIGlz
IHZhbGlkLCBhbmQgdGhlIHN1cHBsaWVkIGRlZmF1bHRfdmFsdWUgZm9yCisgICAgLy8gYW55IG90
aGVyIHN0YXRlLgorICAgIFQgVmFsdWVPckRlZmF1bHQoVCBkZWZhdWx0X3ZhbHVlKSBjb25zdCB7
IHJldHVybiBJc1ZhbGlkKCkgPyBzdGF0ZV8udmFsdWUoKSA6IGRlZmF1bHRfdmFsdWU7IH0KKwor
ICAgIC8vIFZhbHVlRmxvYXRpbmcoKSAtIFNpbmNlIGZsb2F0aW5nIHBvaW50IHZhbHVlcyBpbmNs
dWRlIHRoZWlyIHZhbGlkaXR5IHN0YXRlLAorICAgIC8vIHdlIHByb3ZpZGUgYW4gZWFzeSBtZXRo
b2QgZm9yIGV4dHJhY3RpbmcgdGhlbSBkaXJlY3RseSwgd2l0aG91dCBhIHJpc2sgb2YKKyAgICAv
LyBjcmFzaGluZyBvbiBhIENIRUNLLgorICAgIFQgVmFsdWVGbG9hdGluZygpIGNvbnN0CisgICAg
eworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX2llYzU1
OSwgIkFyZ3VtZW50IG11c3QgYmUgZmxvYXQuIik7CisgICAgICAgIHJldHVybiBDaGVja2VkTnVt
ZXJpYzxUPjo6Y2FzdCgqdGhpcykuVmFsdWVVbnNhZmUoKTsKKyAgICB9CisKKyAgICAvLyB2YWxp
ZGl0eSgpIC0gRE8gTk9UIFVTRSBUSElTIElOIEVYVEVSTkFMIENPREUgLSBJdCBpcyBwdWJsaWMg
cmlnaHQgbm93IGZvcgorICAgIC8vIHRlc3RzIGFuZCB0byBhdm9pZCBhIGJpZyBtYXRyaXggb2Yg
ZnJpZW5kIG9wZXJhdG9yIG92ZXJsb2Fkcy4gQnV0IHRoZQorICAgIC8vIHZhbHVlcyBpdCByZXR1
cm5zIGFyZSBsaWtlbHkgdG8gY2hhbmdlIGluIHRoZSBmdXR1cmUuCisgICAgLy8gUmV0dXJuczog
Y3VycmVudCB2YWxpZGl0eSBzdGF0ZSAoaS5lLiB2YWxpZCwgb3ZlcmZsb3csIHVuZGVyZmxvdywg
bmFuKS4KKyAgICAvLyBUT0RPKGpzY2h1aCk6IGNyYnVnLmNvbS8zMzI2MTEgRmlndXJlIG91dCBh
bmQgaW1wbGVtZW50IHNlbWFudGljcyBmb3IKKyAgICAvLyBzYXR1cmF0aW9uL3dyYXBwaW5nIHNv
IHdlIGNhbiBleHBvc2UgdGhpcyBzdGF0ZSBjb25zaXN0ZW50bHkgYW5kIGltcGxlbWVudAorICAg
IC8vIHNhdHVyYXRlZCBhcml0aG1ldGljLgorICAgIFJhbmdlQ29uc3RyYWludCB2YWxpZGl0eSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRlXy52YWxpZGl0eSgpOyB9CisKKyAgICAvLyBWYWx1ZVVuc2Fm
ZSgpIC0gRE8gTk9UIFVTRSBUSElTIElOIEVYVEVSTkFMIENPREUgLSBJdCBpcyBwdWJsaWMgcmln
aHQgbm93CisgICAgLy8gZm9yIHRlc3RzIGFuZCB0byBhdm9pZCBhIGJpZyBtYXRyaXggb2YgZnJp
ZW5kIG9wZXJhdG9yIG92ZXJsb2Fkcy4gQnV0IHRoZQorICAgIC8vIHZhbHVlcyBpdCByZXR1cm5z
IGFyZSBsaWtlbHkgdG8gY2hhbmdlIGluIHRoZSBmdXR1cmUuCisgICAgLy8gUmV0dXJuczogdGhl
IHJhdyBudW1lcmljIHZhbHVlLCByZWdhcmRsZXNzIG9mIHRoZSBjdXJyZW50IHN0YXRlLgorICAg
IC8vIFRPRE8oanNjaHVoKTogY3JidWcuY29tLzMzMjYxMSBGaWd1cmUgb3V0IGFuZCBpbXBsZW1l
bnQgc2VtYW50aWNzIGZvcgorICAgIC8vIHNhdHVyYXRpb24vd3JhcHBpbmcgc28gd2UgY2FuIGV4
cG9zZSB0aGlzIHN0YXRlIGNvbnNpc3RlbnRseSBhbmQgaW1wbGVtZW50CisgICAgLy8gc2F0dXJh
dGVkIGFyaXRobWV0aWMuCisgICAgVCBWYWx1ZVVuc2FmZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRl
Xy52YWx1ZSgpOyB9CisKKyAgICAvLyBQcm90b3R5cGVzIGZvciB0aGUgc3VwcG9ydGVkIGFyaXRo
bWV0aWMgb3BlcmF0b3Igb3ZlcmxvYWRzLgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTcmM+Cisg
ICAgQ2hlY2tlZE51bWVyaWMgJm9wZXJhdG9yKz0oU3JjIHJocyk7CisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFNyYz4KKyAgICBDaGVja2VkTnVtZXJpYyAmb3BlcmF0b3ItPShTcmMgcmhzKTsKKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU3JjPgorICAgIENoZWNrZWROdW1lcmljICZvcGVyYXRvcio9
KFNyYyByaHMpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTcmM+CisgICAgQ2hlY2tlZE51bWVy
aWMgJm9wZXJhdG9yLz0oU3JjIHJocyk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFNyYz4KKyAg
ICBDaGVja2VkTnVtZXJpYyAmb3BlcmF0b3IlPShTcmMgcmhzKTsKKworICAgIENoZWNrZWROdW1l
cmljIG9wZXJhdG9yLSgpIGNvbnN0CisgICAgeworICAgICAgICBSYW5nZUNvbnN0cmFpbnQgdmFs
aWRpdHk7CisgICAgICAgIFQgdmFsdWUgPSBDaGVja2VkTmVnKHN0YXRlXy52YWx1ZSgpLCAmdmFs
aWRpdHkpOworICAgICAgICAvLyBOZWdhdGlvbiBpcyBhbHdheXMgdmFsaWQgZm9yIGZsb2F0aW5n
IHBvaW50LgorICAgICAgICBpZiAoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfaWVjNTU5KQor
ICAgICAgICAgICAgcmV0dXJuIENoZWNrZWROdW1lcmljPFQ+KHZhbHVlKTsKKworICAgICAgICB2
YWxpZGl0eSA9IEdldFJhbmdlQ29uc3RyYWludChzdGF0ZV8udmFsaWRpdHkoKSB8IHZhbGlkaXR5
KTsKKyAgICAgICAgcmV0dXJuIENoZWNrZWROdW1lcmljPFQ+KHZhbHVlLCB2YWxpZGl0eSk7Cisg
ICAgfQorCisgICAgQ2hlY2tlZE51bWVyaWMgQWJzKCkgY29uc3QKKyAgICB7CisgICAgICAgIFJh
bmdlQ29uc3RyYWludCB2YWxpZGl0eTsKKyAgICAgICAgVCB2YWx1ZSA9IENoZWNrZWRBYnMoc3Rh
dGVfLnZhbHVlKCksICZ2YWxpZGl0eSk7CisgICAgICAgIC8vIEFic29sdXRlIHZhbHVlIGlzIGFs
d2F5cyB2YWxpZCBmb3IgZmxvYXRpbmcgcG9pbnQuCisgICAgICAgIGlmIChzdGQ6Om51bWVyaWNf
bGltaXRzPFQ+Ojppc19pZWM1NTkpCisgICAgICAgICAgICByZXR1cm4gQ2hlY2tlZE51bWVyaWM8
VD4odmFsdWUpOworCisgICAgICAgIHZhbGlkaXR5ID0gR2V0UmFuZ2VDb25zdHJhaW50KHN0YXRl
Xy52YWxpZGl0eSgpIHwgdmFsaWRpdHkpOworICAgICAgICByZXR1cm4gQ2hlY2tlZE51bWVyaWM8
VD4odmFsdWUsIHZhbGlkaXR5KTsKKyAgICB9CisKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGF2
YWlsYWJsZSBvbmx5IGZvciBpbnRlZ3JhbCB0eXBlcy4gSXQgcmV0dXJucyBhbiB1bnNpZ25lZAor
ICAgIC8vIGludGVnZXIgb2YgdGhlIHNhbWUgd2lkdGggYXMgdGhlIHNvdXJjZSB0eXBlLCBjb250
YWluaW5nIHRoZSBhYnNvbHV0ZSB2YWx1ZQorICAgIC8vIG9mIHRoZSBzb3VyY2UsIGFuZCBwcm9w
ZXJseSBoYW5kbGluZyBzaWduZWQgbWluLgorICAgIENoZWNrZWROdW1lcmljPHR5cGVuYW1lIFVu
c2lnbmVkT3JGbG9hdEZvclNpemU8VD46OnR5cGU+IFVuc2lnbmVkQWJzKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBDaGVja2VkTnVtZXJpYzx0eXBlbmFtZSBVbnNpZ25lZE9yRmxvYXRG
b3JTaXplPFQ+Ojp0eXBlPigKKyAgICAgICAgICAgIENoZWNrZWRVbnNpZ25lZEFicyhzdGF0ZV8u
dmFsdWUoKSksIHN0YXRlXy52YWxpZGl0eSgpKTsKKyAgICB9CisKKyAgICBDaGVja2VkTnVtZXJp
YyAmb3BlcmF0b3IrKygpCisgICAgeworICAgICAgICAqdGhpcyArPSAxOworICAgICAgICByZXR1
cm4gKnRoaXM7CisgICAgfQorCisgICAgQ2hlY2tlZE51bWVyaWMgb3BlcmF0b3IrKyhpbnQpCisg
ICAgeworICAgICAgICBDaGVja2VkTnVtZXJpYyB2YWx1ZSA9ICp0aGlzOworICAgICAgICAqdGhp
cyArPSAxOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorCisgICAgQ2hlY2tlZE51bWVy
aWMgJm9wZXJhdG9yLS0oKQorICAgIHsKKyAgICAgICAgKnRoaXMgLT0gMTsKKyAgICAgICAgcmV0
dXJuICp0aGlzOworICAgIH0KKworICAgIENoZWNrZWROdW1lcmljIG9wZXJhdG9yLS0oaW50KQor
ICAgIHsKKyAgICAgICAgQ2hlY2tlZE51bWVyaWMgdmFsdWUgPSAqdGhpczsKKyAgICAgICAgKnRo
aXMgLT0gMTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKworICAgIC8vIFRoZXNlIHN0
YXRpYyBtZXRob2RzIGJlaGF2ZSBsaWtlIGEgY29udmVuaWVuY2UgY2FzdCBvcGVyYXRvciB0YXJn
ZXRpbmcKKyAgICAvLyB0aGUgZGVzaXJlZCBDaGVja2VkTnVtZXJpYyB0eXBlLiBBcyBhbiBvcHRp
bWl6YXRpb24sIGEgcmVmZXJlbmNlIGlzCisgICAgLy8gcmV0dXJuZWQgd2hlbiBTcmMgaXMgdGhl
IHNhbWUgdHlwZSBhcyBULgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTcmM+CisgICAgc3RhdGlj
IENoZWNrZWROdW1lcmljPFQ+IGNhc3QoCisgICAgICAgIFNyYyB1LAorICAgICAgICB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Om51bWVyaWNfbGltaXRzPFNyYz46OmlzX3NwZWNpYWxpemVk
LCBpbnQ+Ojp0eXBlID0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiB1OworICAgIH0KKworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBTcmM+CisgICAgc3RhdGljIENoZWNrZWROdW1lcmljPFQ+IGNh
c3QoCisgICAgICAgIGNvbnN0IENoZWNrZWROdW1lcmljPFNyYz4gJnUsCisgICAgICAgIHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX3NhbWU8U3JjLCBUPjo6dmFsdWUsIGludD46OnR5
cGUgPSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHU7CisgICAgfQorCisgICAgc3RhdGljIGNv
bnN0IENoZWNrZWROdW1lcmljPFQ+ICZjYXN0KGNvbnN0IENoZWNrZWROdW1lcmljPFQ+ICZ1KSB7
IHJldHVybiB1OyB9CisKKyAgcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTnVtZXJp
Y1R5cGU+CisgICAgc3RydWN0IFVuZGVybHlpbmdUeXBlCisgICAgeworICAgICAgICB1c2luZyB0
eXBlID0gTnVtZXJpY1R5cGU7CisgICAgfTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBOdW1l
cmljVHlwZT4KKyAgICBzdHJ1Y3QgVW5kZXJseWluZ1R5cGU8Q2hlY2tlZE51bWVyaWM8TnVtZXJp
Y1R5cGU+PgorICAgIHsKKyAgICAgICAgdXNpbmcgdHlwZSA9IE51bWVyaWNUeXBlOworICAgIH07
CisKKyAgICBDaGVja2VkTnVtZXJpY1N0YXRlPFQ+IHN0YXRlXzsKK307CisKKy8vIFRoaXMgaXMg
dGhlIGJvaWxlcnBsYXRlIGZvciB0aGUgc3RhbmRhcmQgYXJpdGhtZXRpYyBvcGVyYXRvciBvdmVy
bG9hZHMuIEEKKy8vIG1hY3JvIGlzbid0IHRoZSBwcmV0dGllc3Qgc29sdXRpb24sIGJ1dCBpdCBi
ZWF0cyByZXdyaXRpbmcgdGhlc2UgZml2ZSB0aW1lcy4KKy8vIFNvbWUgZGV0YWlscyB3b3J0aCBu
b3RpbmcgYXJlOgorLy8gICogV2UgYXBwbHkgdGhlIHN0YW5kYXJkIGFyaXRobWV0aWMgcHJvbW90
aW9ucy4KKy8vICAqIFdlIHNraXAgcmFuZ2UgY2hlY2tzIGZvciBmbG9hdGluZyBwb2ludHMuCisv
LyAgKiBXZSBza2lwIHJhbmdlIGNoZWNrcyBmb3IgZGVzdGluYXRpb24gaW50ZWdlcnMgd2l0aCBz
dWZmaWNpZW50IHJhbmdlLgorLy8gVE9ETyhqc2NodWgpOiBleHRyYWN0IHRoZXNlIG91dCBpbnRv
IHRlbXBsYXRlcy4KKyNkZWZpbmUgQkFTRV9OVU1FUklDX0FSSVRITUVUSUNfT1BFUkFUT1JTKE5B
TUUsIE9QLCBDT01QT1VORF9PUCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAvKiBCaW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRvciBmb3IgQ2hlY2tlZE51bWVyaWNzIG9m
IHRoZSBzYW1lIHR5cGUuICovICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDaGVja2VkTnVtZXJpYzx0eXBl
bmFtZSBBcml0aG1ldGljUHJvbW90aW9uPFQ+Ojp0eXBlPiBvcGVyYXRvciBPUCggICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY29uc3QgQ2hlY2tlZE51bWVyaWM8VD4gJmxo
cywgY29uc3QgQ2hlY2tlZE51bWVyaWM8VD4gJnJocykgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBcml0aG1ldGljUHJvbW90aW9uPFQ+Ojp0eXBlIFByb21v
dGlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgLyogRmxv
YXRpbmcgcG9pbnQgYWx3YXlzIHRha2VzIHRoZSBmYXN0IHBhdGggKi8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHN0ZDo6bnVtZXJpY19s
aW1pdHM8VD46OmlzX2llYzU1OSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJldHVybiBDaGVja2VkTnVtZXJpYzxUPihs
aHMuVmFsdWVVbnNhZmUoKSBPUCByaHMuVmFsdWVVbnNhZmUoKSk7ICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgaWYgKElzSW50ZWdlckFyaXRobWV0aWNTYWZlPFByb21vdGlvbiwgVCwg
VD46OnZhbHVlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgICAgIHJldHVybiBDaGVja2VkTnVtZXJpYzxQcm9tb3Rpb24+KGxocy5WYWx1ZVVuc2FmZSgp
IE9QIHJocy5WYWx1ZVVuc2FmZSgpLCAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldFJhbmdlQ29uc3RyYWludChyaHMudmFsaWRp
dHkoKSB8IGxocy52YWxpZGl0eSgpKSk7IFwKKyAgICAgICAgUmFuZ2VDb25zdHJhaW50IHZhbGlk
aXR5ID0gUkFOR0VfVkFMSUQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgVCByZXN1bHQgPSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFQ+KENoZWNrZWQjI05BTUUoc3RhdGljX2Nhc3Q8
UHJvbW90aW9uPihsaHMuVmFsdWVVbnNhZmUoKSksICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8UHJvbW90aW9uPihy
aHMuVmFsdWVVbnNhZmUoKSksICZ2YWxpZGl0eSkpOyAgIFwKKyAgICAgICAgcmV0dXJuIENoZWNr
ZWROdW1lcmljPFByb21vdGlvbj4oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJlc3VsdCwgR2V0UmFuZ2VDb25z
dHJhaW50KHZhbGlkaXR5IHwgbGhzLnZhbGlkaXR5KCkgfCByaHMudmFsaWRpdHkoKSkpOyAgICAg
ICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAvKiBBc3NpZ25tZW50IGFyaXRobWV0aWMgb3BlcmF0b3IgaW1wbGVtZW50YXRpb24gZnJv
bSBDaGVja2VkTnVtZXJpYy4gKi8gICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
U3JjPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBDaGVja2VkTnVtZXJpYzxUPiAmQ2hlY2tlZE51bWVy
aWM8VD46Om9wZXJhdG9yIENPTVBPVU5EX09QKFNyYyByaHMpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgKnRoaXMgPSBDaGVja2VkTnVtZXJpYzxUPjo6Y2FzdCgqdGhpcykgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIE9Q
IENoZWNrZWROdW1lcmljPHR5cGVuYW1lIFVuZGVybHlpbmdUeXBlPFNyYz46OnR5cGU+OjpjYXN0
KHJocyk7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuICp0aGlzOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAvKiBCaW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRvciBmb3IgQ2hlY2tlZE51bWVy
aWMgb2YgZGlmZmVyZW50IHR5cGUuICovICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU3JjPiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDaGVja2VkTnVtZXJp
Yzx0eXBlbmFtZSBBcml0aG1ldGljUHJvbW90aW9uPFQsIFNyYz46OnR5cGU+IG9wZXJhdG9yIE9Q
KCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY29uc3QgQ2hlY2tlZE51bWVyaWM8
U3JjPiAmbGhzLCBjb25zdCBDaGVja2VkTnVtZXJpYzxUPiAmcmhzKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBcml0aG1ldGljUHJvbW90aW9uPFQsIFNyYz46
OnR5cGUgUHJvbW90aW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
aWYgKElzSW50ZWdlckFyaXRobWV0aWNTYWZlPFByb21vdGlvbiwgVCwgU3JjPjo6dmFsdWUpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJldHVybiBD
aGVja2VkTnVtZXJpYzxQcm9tb3Rpb24+KGxocy5WYWx1ZVVuc2FmZSgpIE9QIHJocy5WYWx1ZVVu
c2FmZSgpLCAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdldFJhbmdlQ29uc3RyYWludChyaHMudmFsaWRpdHkoKSB8IGxocy52YWxp
ZGl0eSgpKSk7IFwKKyAgICAgICAgcmV0dXJuIENoZWNrZWROdW1lcmljPFByb21vdGlvbj46OmNh
c3QobGhzKSBPUCBDaGVja2VkTnVtZXJpYzxQcm9tb3Rpb24+OjpjYXN0KHJocyk7ICAgICAgIFwK
KyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAvKiBCaW5h
cnkgYXJpdGhtZXRpYyBvcGVyYXRvciBmb3IgbGVmdCBDaGVja2VkTnVtZXJpYyBhbmQgcmlnaHQg
bnVtZXJpYy4gKi8gICAgICAgICAgICAgICAgICAgIFwKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgU3JjLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8c3RkOjppc19hcml0aG1ldGljPFNyYz46OnZhbHVlPjo6dHlwZSAqID0gbnVsbHB0cj4gICAg
ICAgICAgIFwKKyAgICBDaGVja2VkTnVtZXJpYzx0eXBlbmFtZSBBcml0aG1ldGljUHJvbW90aW9u
PFQsIFNyYz46OnR5cGU+IG9wZXJhdG9yIE9QKCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgY29uc3QgQ2hlY2tlZE51bWVyaWM8VD4gJmxocywgU3JjIHJocykgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBB
cml0aG1ldGljUHJvbW90aW9uPFQsIFNyYz46OnR5cGUgUHJvbW90aW9uOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKElzSW50ZWdlckFyaXRobWV0aWNTYWZlPFBy
b21vdGlvbiwgVCwgU3JjPjo6dmFsdWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgICAgIHJldHVybiBDaGVja2VkTnVtZXJpYzxQcm9tb3Rpb24+KGxocy5W
YWx1ZVVuc2FmZSgpIE9QIHJocywgbGhzLnZhbGlkaXR5KCkpOyAgICAgICAgICAgIFwKKyAgICAg
ICAgcmV0dXJuIENoZWNrZWROdW1lcmljPFByb21vdGlvbj46OmNhc3QobGhzKSBPUCBDaGVja2Vk
TnVtZXJpYzxQcm9tb3Rpb24+OjpjYXN0KHJocyk7ICAgICAgIFwKKyAgICB9ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAvKiBCaW5hcnkgYXJpdGhtZXRpYyBvcGVy
YXRvciBmb3IgbGVmdCBudW1lcmljIGFuZCByaWdodCBDaGVja2VkTnVtZXJpYy4gKi8gICAgICAg
ICAgICAgICAgICAgIFwKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU3JjLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19hcml0aG1l
dGljPFNyYz46OnZhbHVlPjo6dHlwZSAqID0gbnVsbHB0cj4gICAgICAgICAgIFwKKyAgICBDaGVj
a2VkTnVtZXJpYzx0eXBlbmFtZSBBcml0aG1ldGljUHJvbW90aW9uPFQsIFNyYz46OnR5cGU+IG9w
ZXJhdG9yIE9QKCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgU3JjIGxocywgY29u
c3QgQ2hlY2tlZE51bWVyaWM8VD4gJnJocykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBcml0aG1ldGljUHJvbW90aW9u
PFQsIFNyYz46OnR5cGUgUHJvbW90aW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgaWYgKElzSW50ZWdlckFyaXRobWV0aWNTYWZlPFByb21vdGlvbiwgVCwgU3JjPjo6
dmFsdWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAg
IHJldHVybiBDaGVja2VkTnVtZXJpYzxQcm9tb3Rpb24+KGxocyBPUCByaHMuVmFsdWVVbnNhZmUo
KSwgcmhzLnZhbGlkaXR5KCkpOyAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIENoZWNrZWRO
dW1lcmljPFByb21vdGlvbj46OmNhc3QobGhzKSBPUCBDaGVja2VkTnVtZXJpYzxQcm9tb3Rpb24+
OjpjYXN0KHJocyk7ICAgICAgIFwKKyAgICB9CisKK0JBU0VfTlVNRVJJQ19BUklUSE1FVElDX09Q
RVJBVE9SUyhBZGQsICssICs9KQorQkFTRV9OVU1FUklDX0FSSVRITUVUSUNfT1BFUkFUT1JTKFN1
YiwgLSwgLT0pCitCQVNFX05VTUVSSUNfQVJJVEhNRVRJQ19PUEVSQVRPUlMoTXVsLCAqLCAqPSkK
K0JBU0VfTlVNRVJJQ19BUklUSE1FVElDX09QRVJBVE9SUyhEaXYsIC8sIC89KQorQkFTRV9OVU1F
UklDX0FSSVRITUVUSUNfT1BFUkFUT1JTKE1vZCwgJSwgJT0pCisKKyN1bmRlZiBCQVNFX05VTUVS
SUNfQVJJVEhNRVRJQ19PUEVSQVRPUlMKKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCisKK3Vz
aW5nIGludGVybmFsOjpDaGVja2VkTnVtZXJpYzsKKworfSAgLy8gbmFtZXNwYWNlIGJhc2UKKwor
I2VuZGlmICAvLyBCQVNFX05VTUVSSUNTX1NBRkVfTUFUSF9IXwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcy9iYXNlL251bWVyaWNz
L3NhZmVfbWF0aF9pbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcy9iYXNlL251bWVyaWNzL3NhZmVfbWF0aF9p
bXBsLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1v
bi90aGlyZF9wYXJ0eS9udW1lcmljcy9iYXNlL251bWVyaWNzL3NhZmVfbWF0aF9pbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw1NzAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJv
bWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworI2lmbmRlZiBCQVNFX05VTUVSSUNTX1NBRkVf
TUFUSF9JTVBMX0hfCisjZGVmaW5lIEJBU0VfTlVNRVJJQ1NfU0FGRV9NQVRIX0lNUExfSF8KKwor
I2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorCisjaW5jbHVkZSA8Y2xp
bWl0cz4KKyNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxjc3RkbGliPgorI2luY2x1ZGUgPGxp
bWl0cz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworI2luY2x1ZGUgImJhc2UvbnVtZXJpY3Mv
c2FmZV9jb252ZXJzaW9ucy5oIgorCituYW1lc3BhY2UgYmFzZQoreworbmFtZXNwYWNlIGludGVy
bmFsCit7CisKKy8vIEV2ZXJ5dGhpbmcgZnJvbSBoZXJlIHVwIHRvIHRoZSBmbG9hdGluZyBwb2lu
dCBvcGVyYXRpb25zIGlzIHBvcnRhYmxlIEMrKywKKy8vIGJ1dCBpdCBtYXkgbm90IGJlIGZhc3Qu
IFRoaXMgY29kZSBjb3VsZCBiZSBzcGxpdCBiYXNlZCBvbgorLy8gcGxhdGZvcm0vYXJjaGl0ZWN0
dXJlIGFuZCByZXBsYWNlZCB3aXRoIHBvdGVudGlhbGx5IGZhc3RlciBpbXBsZW1lbnRhdGlvbnMu
CisKKy8vIEludGVnZXIgcHJvbW90aW9uIHRlbXBsYXRlcyB1c2VkIGJ5IHRoZSBwb3J0YWJsZSBj
aGVja2VkIGludGVnZXIgYXJpdGhtZXRpYy4KK3RlbXBsYXRlIDxzaXplX3QgU2l6ZSwgYm9vbCBJ
c1NpZ25lZD4KK3N0cnVjdCBJbnRlZ2VyRm9yU2l6ZUFuZFNpZ247Cit0ZW1wbGF0ZSA8Pgorc3Ry
dWN0IEludGVnZXJGb3JTaXplQW5kU2lnbjwxLCB0cnVlPgoreworICAgIHR5cGVkZWYgaW50OF90
IHR5cGU7Cit9OwordGVtcGxhdGUgPD4KK3N0cnVjdCBJbnRlZ2VyRm9yU2l6ZUFuZFNpZ248MSwg
ZmFsc2U+Cit7CisgICAgdHlwZWRlZiB1aW50OF90IHR5cGU7Cit9OwordGVtcGxhdGUgPD4KK3N0
cnVjdCBJbnRlZ2VyRm9yU2l6ZUFuZFNpZ248MiwgdHJ1ZT4KK3sKKyAgICB0eXBlZGVmIGludDE2
X3QgdHlwZTsKK307Cit0ZW1wbGF0ZSA8Pgorc3RydWN0IEludGVnZXJGb3JTaXplQW5kU2lnbjwy
LCBmYWxzZT4KK3sKKyAgICB0eXBlZGVmIHVpbnQxNl90IHR5cGU7Cit9OwordGVtcGxhdGUgPD4K
K3N0cnVjdCBJbnRlZ2VyRm9yU2l6ZUFuZFNpZ248NCwgdHJ1ZT4KK3sKKyAgICB0eXBlZGVmIGlu
dDMyX3QgdHlwZTsKK307Cit0ZW1wbGF0ZSA8Pgorc3RydWN0IEludGVnZXJGb3JTaXplQW5kU2ln
bjw0LCBmYWxzZT4KK3sKKyAgICB0eXBlZGVmIHVpbnQzMl90IHR5cGU7Cit9OwordGVtcGxhdGUg
PD4KK3N0cnVjdCBJbnRlZ2VyRm9yU2l6ZUFuZFNpZ248OCwgdHJ1ZT4KK3sKKyAgICB0eXBlZGVm
IGludDY0X3QgdHlwZTsKK307Cit0ZW1wbGF0ZSA8Pgorc3RydWN0IEludGVnZXJGb3JTaXplQW5k
U2lnbjw4LCBmYWxzZT4KK3sKKyAgICB0eXBlZGVmIHVpbnQ2NF90IHR5cGU7Cit9OworCisvLyBX
QVJOSU5HOiBXZSBoYXZlIG5vIEludGVnZXJGb3JTaXplQW5kU2lnbjwxNiwgKj4uIElmIHdlIGV2
ZXIgYWRkIG9uZSB0bworLy8gc3VwcG9ydCAxMjgtYml0IG1hdGgsIHRoZW4gdGhlIEFyaXRobWV0
aWNQcm9tb3Rpb24gdGVtcGxhdGUgYmVsb3cgd2lsbCBuZWVkCisvLyB0byBiZSB1cGRhdGVkIChv
ciBtb3JlIGxpa2VseSByZXBsYWNlZCB3aXRoIGEgZGVjbHR5cGUgZXhwcmVzc2lvbikuCisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBJbnRlZ2VyPgorc3RydWN0IFVuc2lnbmVkSW50ZWdlckZvclNpemUK
K3sKKyAgICB0eXBlZGVmCisgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6bnVt
ZXJpY19saW1pdHM8SW50ZWdlcj46OmlzX2ludGVnZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGVuYW1lIEludGVnZXJGb3JTaXplQW5kU2lnbjxzaXplb2YoSW50ZWdlciks
IGZhbHNlPjo6dHlwZT46OnR5cGUKKyAgICAgICAgICAgIHR5cGU7Cit9OworCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgSW50ZWdlcj4KK3N0cnVjdCBTaWduZWRJbnRlZ2VyRm9yU2l6ZQoreworICAgIHR5
cGVkZWYKKyAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpudW1lcmljX2xpbWl0
czxJbnRlZ2VyPjo6aXNfaW50ZWdlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHlwZW5hbWUgSW50ZWdlckZvclNpemVBbmRTaWduPHNpemVvZihJbnRlZ2VyKSwgdHJ1ZT46OnR5
cGU+Ojp0eXBlCisgICAgICAgICAgICB0eXBlOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIElu
dGVnZXI+CitzdHJ1Y3QgVHdpY2VXaWRlckludGVnZXIKK3sKKyAgICB0eXBlZGVmIHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPEludGVnZXI+Ojpp
c19pbnRlZ2VyLAorICAgICAgICB0eXBlbmFtZSBJbnRlZ2VyRm9yU2l6ZUFuZFNpZ248c2l6ZW9m
KEludGVnZXIpICogMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6bnVtZXJpY19saW1pdHM8SW50ZWdlcj46OmlzX3NpZ25lZD46OnR5cGU+Ojp0eXBlIHR5cGU7
Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW50ZWdlcj4KK3N0cnVjdCBQb3NpdGlvbk9mU2ln
bkJpdAoreworICAgIHN0YXRpYyBjb25zdCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Om51
bWVyaWNfbGltaXRzPEludGVnZXI+Ojppc19pbnRlZ2VyLCBzaXplX3Q+Ojp0eXBlCisgICAgICAg
IHZhbHVlID0gQ0hBUl9CSVQgKiBzaXplb2YoSW50ZWdlcikgLSAxOworfTsKKworLy8gVGhpcyBp
cyB1c2VkIGZvciBVbnNpZ25lZEFicywgd2hlcmUgd2UgbmVlZCB0byBzdXBwb3J0IGZsb2F0aW5n
LXBvaW50CisvLyB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9ucyBldmVuIHRob3VnaCB3ZSBkb24ndCBh
Y3R1YWxseSBzdXBwb3J0IHRoZSBvcGVyYXRpb25zLgorLy8gSG93ZXZlciwgdGhlcmUgaXMgbm8g
Y29ycmVzcG9uZGluZyBpbXBsZW1lbnRhdGlvbiBvZiBlLmcuIENoZWNrZWRVbnNpZ25lZEFicywK
Ky8vIHNvIHRoZSBmbG9hdCB2ZXJzaW9ucyB3aWxsIG5vdCBjb21waWxlLgordGVtcGxhdGUgPHR5
cGVuYW1lIE51bWVyaWMsCisgICAgICAgICAgYm9vbCBJc0ludGVnZXIgPSBzdGQ6Om51bWVyaWNf
bGltaXRzPE51bWVyaWM+Ojppc19pbnRlZ2VyLAorICAgICAgICAgIGJvb2wgSXNGbG9hdCAgID0g
c3RkOjpudW1lcmljX2xpbWl0czxOdW1lcmljPjo6aXNfaWVjNTU5Pgorc3RydWN0IFVuc2lnbmVk
T3JGbG9hdEZvclNpemU7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBOdW1lcmljPgorc3RydWN0IFVu
c2lnbmVkT3JGbG9hdEZvclNpemU8TnVtZXJpYywgdHJ1ZSwgZmFsc2U+Cit7CisgICAgdHlwZWRl
ZiB0eXBlbmFtZSBVbnNpZ25lZEludGVnZXJGb3JTaXplPE51bWVyaWM+Ojp0eXBlIHR5cGU7Cit9
OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTnVtZXJpYz4KK3N0cnVjdCBVbnNpZ25lZE9yRmxvYXRG
b3JTaXplPE51bWVyaWMsIGZhbHNlLCB0cnVlPgoreworICAgIHR5cGVkZWYgTnVtZXJpYyB0eXBl
OworfTsKKworLy8gSGVscGVyIHRlbXBsYXRlcyBmb3IgaW50ZWdlciBtYW5pcHVsYXRpb25zLgor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NvbnN0ZXhwciBib29sIEhhc1NpZ25CaXQoVCB4KQor
eworICAgIC8vIENhc3QgdG8gdW5zaWduZWQgc2luY2UgcmlnaHQgc2hpZnQgb24gc2lnbmVkIGlz
IHVuZGVmaW5lZC4KKyAgICByZXR1cm4gISEoc3RhdGljX2Nhc3Q8dHlwZW5hbWUgVW5zaWduZWRJ
bnRlZ2VyRm9yU2l6ZTxUPjo6dHlwZT4oeCkgPj4KKyAgICAgICAgICAgICAgUG9zaXRpb25PZlNp
Z25CaXQ8VD46OnZhbHVlKTsKK30KKworLy8gVGhpcyB3cmFwcGVyIHVuZG9lcyB0aGUgc3RhbmRh
cmQgaW50ZWdlciBwcm9tb3Rpb25zLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citjb25zdGV4cHIg
VCBCaW5hcnlDb21wbGVtZW50KFQgeCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4ofngp
OworfQorCisvLyBIZXJlIGFyZSB0aGUgYWN0dWFsIHBvcnRhYmxlIGNoZWNrZWQgaW50ZWdlciBt
YXRoIGltcGxlbWVudGF0aW9ucy4KKy8vIFRPRE8oanNjaHVoKTogQnJlYWsgdGhpcyBjb2RlIG91
dCBmcm9tIHRoZSBlbmFibGVfaWYgcGF0dGVybiBhbmQgZmluZCBhIGNsZWFuCisvLyB3YXkgdG8g
Y29hbGVzY2UgdGhpbmdzIGludG8gdGhlIENoZWNrZWROdW1lcmljU3RhdGUgc3BlY2lhbGl6YXRp
b25zIGJlbG93LgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3R5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX2ludGVnZXIsIFQ+Ojp0eXBlCitDaGVja2Vk
QWRkKFQgeCwgVCB5LCBSYW5nZUNvbnN0cmFpbnQgKnZhbGlkaXR5KQoreworICAgIC8vIFNpbmNl
IHRoZSB2YWx1ZSBvZiB4K3kgaXMgdW5kZWZpbmVkIGlmIHdlIGhhdmUgYSBzaWduZWQgdHlwZSwg
d2UgY29tcHV0ZQorICAgIC8vIGl0IHVzaW5nIHRoZSB1bnNpZ25lZCB0eXBlIG9mIHRoZSBzYW1l
IHNpemUuCisgICAgdHlwZWRlZiB0eXBlbmFtZSBVbnNpZ25lZEludGVnZXJGb3JTaXplPFQ+Ojp0
eXBlIFVuc2lnbmVkRHN0OworICAgIFVuc2lnbmVkRHN0IHV4ICAgICAgPSBzdGF0aWNfY2FzdDxV
bnNpZ25lZERzdD4oeCk7CisgICAgVW5zaWduZWREc3QgdXkgICAgICA9IHN0YXRpY19jYXN0PFVu
c2lnbmVkRHN0Pih5KTsKKyAgICBVbnNpZ25lZERzdCB1cmVzdWx0ID0gc3RhdGljX2Nhc3Q8VW5z
aWduZWREc3Q+KHV4ICsgdXkpOworICAgIC8vIEFkZGl0aW9uIGlzIHZhbGlkIGlmIHRoZSBzaWdu
IG9mICh4ICsgeSkgaXMgZXF1YWwgdG8gZWl0aGVyIHRoYXQgb2YgeCBvcgorICAgIC8vIHRoYXQg
b2YgeS4KKyAgICBpZiAoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc2lnbmVkKQorICAgIHsK
KyAgICAgICAgaWYgKEhhc1NpZ25CaXQoQmluYXJ5Q29tcGxlbWVudChzdGF0aWNfY2FzdDxVbnNp
Z25lZERzdD4oKHVyZXN1bHQgXiB1eCkgJiAodXJlc3VsdCBeIHV5KSkpKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgKnZhbGlkaXR5ID0gUkFOR0VfVkFMSUQ7CisgICAgICAgIH0KKyAgICAgICAg
ZWxzZQorICAgICAgICB7ICAvLyBEaXJlY3Rpb24gb2Ygd3JhcCBpcyBpbnZlcnNlIG9mIHJlc3Vs
dCBzaWduLgorICAgICAgICAgICAgKnZhbGlkaXR5ID0gSGFzU2lnbkJpdCh1cmVzdWx0KSA/IFJB
TkdFX09WRVJGTE9XIDogUkFOR0VfVU5ERVJGTE9XOworICAgICAgICB9CisgICAgfQorICAgIGVs
c2UKKyAgICB7ICAvLyBVbnNpZ25lZCBpcyBlaXRoZXIgdmFsaWQgb3Igb3ZlcmZsb3cuCisgICAg
ICAgICp2YWxpZGl0eSA9IEJpbmFyeUNvbXBsZW1lbnQoeCkgPj0geSA/IFJBTkdFX1ZBTElEIDog
UkFOR0VfT1ZFUkZMT1c7CisgICAgfQorICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPih1cmVzdWx0
KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxz
dGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19pbnRlZ2VyLCBUPjo6dHlwZQorQ2hlY2tlZFN1YihU
IHgsIFQgeSwgUmFuZ2VDb25zdHJhaW50ICp2YWxpZGl0eSkKK3sKKyAgICAvLyBTaW5jZSB0aGUg
dmFsdWUgb2YgeCt5IGlzIHVuZGVmaW5lZCBpZiB3ZSBoYXZlIGEgc2lnbmVkIHR5cGUsIHdlIGNv
bXB1dGUKKyAgICAvLyBpdCB1c2luZyB0aGUgdW5zaWduZWQgdHlwZSBvZiB0aGUgc2FtZSBzaXpl
LgorICAgIHR5cGVkZWYgdHlwZW5hbWUgVW5zaWduZWRJbnRlZ2VyRm9yU2l6ZTxUPjo6dHlwZSBV
bnNpZ25lZERzdDsKKyAgICBVbnNpZ25lZERzdCB1eCAgICAgID0gc3RhdGljX2Nhc3Q8VW5zaWdu
ZWREc3Q+KHgpOworICAgIFVuc2lnbmVkRHN0IHV5ICAgICAgPSBzdGF0aWNfY2FzdDxVbnNpZ25l
ZERzdD4oeSk7CisgICAgVW5zaWduZWREc3QgdXJlc3VsdCA9IHN0YXRpY19jYXN0PFVuc2lnbmVk
RHN0Pih1eCAtIHV5KTsKKyAgICAvLyBTdWJ0cmFjdGlvbiBpcyB2YWxpZCBpZiBlaXRoZXIgeCBh
bmQgeSBoYXZlIHNhbWUgc2lnbiwgb3IgKHgteSkgYW5kIHggaGF2ZQorICAgIC8vIHRoZSBzYW1l
IHNpZ24uCisgICAgaWYgKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX3NpZ25lZCkKKyAgICB7
CisgICAgICAgIGlmIChIYXNTaWduQml0KEJpbmFyeUNvbXBsZW1lbnQoc3RhdGljX2Nhc3Q8VW5z
aWduZWREc3Q+KCh1cmVzdWx0IF4gdXgpICYgKHV4IF4gdXkpKSkpKQorICAgICAgICB7CisgICAg
ICAgICAgICAqdmFsaWRpdHkgPSBSQU5HRV9WQUxJRDsKKyAgICAgICAgfQorICAgICAgICBlbHNl
CisgICAgICAgIHsgIC8vIERpcmVjdGlvbiBvZiB3cmFwIGlzIGludmVyc2Ugb2YgcmVzdWx0IHNp
Z24uCisgICAgICAgICAgICAqdmFsaWRpdHkgPSBIYXNTaWduQml0KHVyZXN1bHQpID8gUkFOR0Vf
T1ZFUkZMT1cgOiBSQU5HRV9VTkRFUkZMT1c7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQor
ICAgIHsgIC8vIFVuc2lnbmVkIGlzIGVpdGhlciB2YWxpZCBvciB1bmRlcmZsb3cuCisgICAgICAg
ICp2YWxpZGl0eSA9IHggPj0geSA/IFJBTkdFX1ZBTElEIDogUkFOR0VfVU5ERVJGTE9XOworICAg
IH0KKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4odXJlc3VsdCk7Cit9CisKKy8vIEludGVnZXIg
bXVsdGlwbGljYXRpb24gaXMgYSBiaXQgY29tcGxpY2F0ZWQuIEluIHRoZSBmYXN0IGNhc2Ugd2Ug
anVzdAorLy8gd2UganVzdCBwcm9tb3RlIHRvIGEgdHdpY2Ugd2lkZXIgdHlwZSwgYW5kIHJhbmdl
IGNoZWNrIHRoZSByZXN1bHQuIEluIHRoZQorLy8gc2xvdyBjYXNlIHdlIG5lZWQgdG8gbWFudWFs
bHkgY2hlY2sgdGhhdCB0aGUgcmVzdWx0IHdvbid0IGJlIHRydW5jYXRlZCBieQorLy8gY2hlY2tp
bmcgd2l0aCBkaXZpc2lvbiBhZ2FpbnN0IHRoZSBhcHByb3ByaWF0ZSBib3VuZC4KK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpudW1lcmljX2xpbWl0
czxUPjo6aXNfaW50ZWdlciAmJiBzaXplb2YoVCkgKiAyIDw9IHNpemVvZih1aW50bWF4X3QpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgVD46OnR5cGUKK0NoZWNrZWRNdWwoVCB4LCBUIHksIFJh
bmdlQ29uc3RyYWludCAqdmFsaWRpdHkpCit7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBUd2ljZVdp
ZGVySW50ZWdlcjxUPjo6dHlwZSBJbnRlcm1lZGlhdGVUeXBlOworICAgIEludGVybWVkaWF0ZVR5
cGUgdG1wID0gc3RhdGljX2Nhc3Q8SW50ZXJtZWRpYXRlVHlwZT4oeCkgKiBzdGF0aWNfY2FzdDxJ
bnRlcm1lZGlhdGVUeXBlPih5KTsKKyAgICAqdmFsaWRpdHkgICAgICAgICAgICA9IERzdFJhbmdl
UmVsYXRpb25Ub1NyY1JhbmdlPFQ+KHRtcCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KHRt
cCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
c3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfaW50ZWdlciAmJiBzdGQ6Om51bWVyaWNfbGltaXRz
PFQ+Ojppc19zaWduZWQgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2l6ZW9mKFQp
ICogMiA+IHNpemVvZih1aW50bWF4X3QpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFQ+Ojp0
eXBlCitDaGVja2VkTXVsKFQgeCwgVCB5LCBSYW5nZUNvbnN0cmFpbnQgKnZhbGlkaXR5KQorewor
ICAgIC8vIElmIGVpdGhlciBzaWRlIGlzIHplcm8gdGhlbiB0aGUgcmVzdWx0IHdpbGwgYmUgemVy
by4KKyAgICBpZiAoIXggfHwgIXkpCisgICAgeworICAgICAgICAqdmFsaWRpdHkgPSBSQU5HRV9W
QUxJRDsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KDApOworICAgIH0KKyAgICBlbHNl
IGlmICh4ID4gMCkKKyAgICB7CisgICAgICAgIGlmICh5ID4gMCkKKyAgICAgICAgICAgICp2YWxp
ZGl0eSA9IHggPD0gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4KCkgLyB5ID8gUkFOR0VfVkFM
SUQgOiBSQU5HRV9PVkVSRkxPVzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKnZhbGlkaXR5
ID0geSA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptaW4oKSAvIHggPyBSQU5HRV9WQUxJRCA6
IFJBTkdFX1VOREVSRkxPVzsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgaWYgKHkg
PiAwKQorICAgICAgICAgICAgKnZhbGlkaXR5ID0geCA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+
OjptaW4oKSAvIHkgPyBSQU5HRV9WQUxJRCA6IFJBTkdFX1VOREVSRkxPVzsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgKnZhbGlkaXR5ID0geSA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojpt
YXgoKSAvIHggPyBSQU5HRV9WQUxJRCA6IFJBTkdFX09WRVJGTE9XOworICAgIH0KKworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxUPih4ICogeSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
dHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfaW50ZWdl
ciAmJiAhc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc2lnbmVkICYmCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKHNpemVvZihUKSAqIDIgPiBzaXplb2YodWludG1heF90KSksCisgICAg
ICAgICAgICAgICAgICAgICAgICBUPjo6dHlwZQorQ2hlY2tlZE11bChUIHgsIFQgeSwgUmFuZ2VD
b25zdHJhaW50ICp2YWxpZGl0eSkKK3sKKyAgICAqdmFsaWRpdHkgPSAoeSA9PSAwIHx8IHggPD0g
c3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4KCkgLyB5KSA/IFJBTkdFX1ZBTElEIDogUkFOR0Vf
T1ZFUkZMT1c7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KHggKiB5KTsKK30KKworLy8gRGl2
aXNpb24ganVzdCByZXF1aXJlcyBhIGNoZWNrIGZvciBhbiBpbnZhbGlkIG5lZ2F0aW9uIG9uIHNp
Z25lZCBtaW4vLTEuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK1QgQ2hlY2tlZERpdihUIHgsCisg
ICAgICAgICAgICAgVCB5LAorICAgICAgICAgICAgIFJhbmdlQ29uc3RyYWludCAqdmFsaWRpdHks
CisgICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpudW1lcmljX2xpbWl0
czxUPjo6aXNfaW50ZWdlciwgaW50Pjo6dHlwZSA9IDApCit7CisgICAgaWYgKHN0ZDo6bnVtZXJp
Y19saW1pdHM8VD46OmlzX3NpZ25lZCAmJiB4ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1p
bigpICYmCisgICAgICAgIHkgPT0gc3RhdGljX2Nhc3Q8VD4oLTEpKQorICAgIHsKKyAgICAgICAg
KnZhbGlkaXR5ID0gUkFOR0VfT1ZFUkZMT1c7CisgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNf
bGltaXRzPFQ+OjptaW4oKTsKKyAgICB9CisKKyAgICAqdmFsaWRpdHkgPSBSQU5HRV9WQUxJRDsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oeCAvIHkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK3R5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Omlz
X2ludGVnZXIgJiYgc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc2lnbmVkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgVD46OnR5cGUKK0NoZWNrZWRNb2QoVCB4LCBUIHksIFJhbmdlQ29uc3Ry
YWludCAqdmFsaWRpdHkpCit7CisgICAgKnZhbGlkaXR5ID0geSA+IDAgPyBSQU5HRV9WQUxJRCA6
IFJBTkdFX0lOVkFMSUQ7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KHggJSB5KTsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Om51bWVy
aWNfbGltaXRzPFQ+Ojppc19pbnRlZ2VyICYmICFzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19z
aWduZWQsCisgICAgICAgICAgICAgICAgICAgICAgICBUPjo6dHlwZQorQ2hlY2tlZE1vZChUIHgs
IFQgeSwgUmFuZ2VDb25zdHJhaW50ICp2YWxpZGl0eSkKK3sKKyAgICAqdmFsaWRpdHkgPSBSQU5H
RV9WQUxJRDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oeCAlIHkpOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK3R5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6bnVtZXJpY19saW1p
dHM8VD46OmlzX2ludGVnZXIgJiYgc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc2lnbmVkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgVD46OnR5cGUKK0NoZWNrZWROZWcoVCB2YWx1ZSwgUmFu
Z2VDb25zdHJhaW50ICp2YWxpZGl0eSkKK3sKKyAgICAqdmFsaWRpdHkgPSB2YWx1ZSAhPSBzdGQ6
Om51bWVyaWNfbGltaXRzPFQ+OjptaW4oKSA/IFJBTkdFX1ZBTElEIDogUkFOR0VfT1ZFUkZMT1c7
CisgICAgLy8gVGhlIG5lZ2F0aW9uIG9mIHNpZ25lZCBtaW4gaXMgbWluLCBzbyBjYXRjaCB0aGF0
IG9uZS4KKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oLXZhbHVlKTsKK30KKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Om51bWVyaWNfbGltaXRz
PFQ+Ojppc19pbnRlZ2VyICYmICFzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zaWduZWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICBUPjo6dHlwZQorQ2hlY2tlZE5lZyhUIHZhbHVlLCBSYW5n
ZUNvbnN0cmFpbnQgKnZhbGlkaXR5KQoreworICAgIC8vIFRoZSBvbmx5IGxlZ2FsIHVuc2lnbmVk
IG5lZ2F0aW9uIGlzIHplcm8uCisgICAgKnZhbGlkaXR5ID0gdmFsdWUgPyBSQU5HRV9VTkRFUkZM
T1cgOiBSQU5HRV9WQUxJRDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oLXN0YXRpY19jYXN0
PHR5cGVuYW1lIFNpZ25lZEludGVnZXJGb3JTaXplPFQ+Ojp0eXBlPih2YWx1ZSkpOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3R5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6bnVtZXJp
Y19saW1pdHM8VD46OmlzX2ludGVnZXIgJiYgc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc2ln
bmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgVD46OnR5cGUKK0NoZWNrZWRBYnMoVCB2YWx1
ZSwgUmFuZ2VDb25zdHJhaW50ICp2YWxpZGl0eSkKK3sKKyAgICAqdmFsaWRpdHkgPSB2YWx1ZSAh
PSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptaW4oKSA/IFJBTkdFX1ZBTElEIDogUkFOR0VfT1ZF
UkZMT1c7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KHN0ZDo6YWJzKHZhbHVlKSk7Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpudW1l
cmljX2xpbWl0czxUPjo6aXNfaW50ZWdlciAmJiAhc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNf
c2lnbmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgVD46OnR5cGUKK0NoZWNrZWRBYnMoVCB2
YWx1ZSwgUmFuZ2VDb25zdHJhaW50ICp2YWxpZGl0eSkKK3sKKyAgICAvLyBUIGlzIHVuc2lnbmVk
LCBzbyB8dmFsdWV8IG11c3QgYWxyZWFkeSBiZSBwb3NpdGl2ZS4KKyAgICAqdmFsaWRpdHkgPSBS
QU5HRV9WQUxJRDsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
PgordHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfaW50
ZWdlciAmJiBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zaWduZWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICB0eXBlbmFtZSBVbnNpZ25lZEludGVnZXJGb3JTaXplPFQ+Ojp0eXBlPjo6dHlw
ZQorQ2hlY2tlZFVuc2lnbmVkQWJzKFQgdmFsdWUpCit7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBV
bnNpZ25lZEludGVnZXJGb3JTaXplPFQ+Ojp0eXBlIFVuc2lnbmVkVDsKKyAgICByZXR1cm4gdmFs
dWUgPT0gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWluKCkKKyAgICAgICAgICAgICAgID8gc3Rh
dGljX2Nhc3Q8VW5zaWduZWRUPihzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSkgKyAxCisg
ICAgICAgICAgICAgICA6IHN0YXRpY19jYXN0PFVuc2lnbmVkVD4oc3RkOjphYnModmFsdWUpKTsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6
Om51bWVyaWNfbGltaXRzPFQ+Ojppc19pbnRlZ2VyICYmICFzdGQ6Om51bWVyaWNfbGltaXRzPFQ+
Ojppc19zaWduZWQsCisgICAgICAgICAgICAgICAgICAgICAgICBUPjo6dHlwZQorQ2hlY2tlZFVu
c2lnbmVkQWJzKFQgdmFsdWUpCit7CisgICAgLy8gVCBpcyB1bnNpZ25lZCwgc28gfHZhbHVlfCBt
dXN0IGFscmVhZHkgYmUgcG9zaXRpdmUuCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KHZhbHVl
KTsKK30KKworLy8gVGhlc2UgYXJlIHRoZSBmbG9hdGluZyBwb2ludCBzdHVicyB0aGF0IHRoZSBj
b21waWxlciBuZWVkcyB0byBzZWUuIE9ubHkgdGhlCisvLyBuZWdhdGlvbiBvcGVyYXRpb24gaXMg
ZXZlciBjYWxsZWQuCisjZGVmaW5lIEJBU0VfRkxPQVRfQVJJVEhNRVRJQ19TVFVCUyhOQU1FKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpu
dW1lcmljX2xpbWl0czxUPjo6aXNfaWVjNTU5LCBUPjo6dHlwZSBDaGVja2VkIyNOQU1FKCBcCisg
ICAgICAgIFQsIFQsIFJhbmdlQ29uc3RyYWludCAqKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIE5PVFJFQUNIRUQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxUPigwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgfQorCitCQVNFX0ZMT0FUX0FSSVRITUVUSUNfU1RVQlMoQWRk
KQorQkFTRV9GTE9BVF9BUklUSE1FVElDX1NUVUJTKFN1YikKK0JBU0VfRkxPQVRfQVJJVEhNRVRJ
Q19TVFVCUyhNdWwpCitCQVNFX0ZMT0FUX0FSSVRITUVUSUNfU1RVQlMoRGl2KQorQkFTRV9GTE9B
VF9BUklUSE1FVElDX1NUVUJTKE1vZCkKKworI3VuZGVmIEJBU0VfRkxPQVRfQVJJVEhNRVRJQ19T
VFVCUworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3R5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0
ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX2llYzU1OSwgVD46OnR5cGUgQ2hlY2tlZE5lZyhUIHZh
bHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhbmdlQ29uc3RyYWludCAqKQoreworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxUPigtdmFsdWUpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K3R5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX2llYzU1
OSwgVD46OnR5cGUgQ2hlY2tlZEFicyhUIHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJh
bmdlQ29uc3RyYWludCAqKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPihzdGQ6OmFicyh2
YWx1ZSkpOworfQorCisvLyBGbG9hdHMgY2FycnkgYXJvdW5kIHRoZWlyIHZhbGlkaXR5IHN0YXRl
IHdpdGggdGhlbSwgYnV0IGludGVnZXJzIGRvIG5vdC4gU28sCisvLyB3ZSB3cmFwIHRoZSB1bmRl
cmx5aW5nIHZhbHVlIGluIGEgc3BlY2lhbGl6YXRpb24gaW4gb3JkZXIgdG8gaGlkZSB0aGF0IGRl
dGFpbAorLy8gYW5kIGV4cG9zZSBhbiBpbnRlcmZhY2UgdmlhIGFjY2Vzc29ycy4KK2VudW0gTnVt
ZXJpY1JlcHJlc2VudGF0aW9uCit7CisgICAgTlVNRVJJQ19JTlRFR0VSLAorICAgIE5VTUVSSUNf
RkxPQVRJTkcsCisgICAgTlVNRVJJQ19VTktOT1dOCit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
TnVtZXJpY1R5cGU+CitzdHJ1Y3QgR2V0TnVtZXJpY1JlcHJlc2VudGF0aW9uCit7CisgICAgc3Rh
dGljIGNvbnN0IE51bWVyaWNSZXByZXNlbnRhdGlvbiB2YWx1ZSA9CisgICAgICAgIHN0ZDo6bnVt
ZXJpY19saW1pdHM8TnVtZXJpY1R5cGU+Ojppc19pbnRlZ2VyCisgICAgICAgICAgICA/IE5VTUVS
SUNfSU5URUdFUgorICAgICAgICAgICAgOiAoc3RkOjpudW1lcmljX2xpbWl0czxOdW1lcmljVHlw
ZT46OmlzX2llYzU1OSA/IE5VTUVSSUNfRkxPQVRJTkcgOiBOVU1FUklDX1VOS05PV04pOworfTsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIE51bWVyaWNSZXByZXNlbnRhdGlvbiB0eXBlID0gR2V0
TnVtZXJpY1JlcHJlc2VudGF0aW9uPFQ+Ojp2YWx1ZT4KK2NsYXNzIENoZWNrZWROdW1lcmljU3Rh
dGUKK3sKK307CisKKy8vIEludGVncmFscyByZXF1aXJlIHF1aXRlIGEgYml0IG9mIGFkZGl0aW9u
YWwgaG91c2VrZWVwaW5nIHRvIG1hbmFnZSBzdGF0ZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
Y2xhc3MgQ2hlY2tlZE51bWVyaWNTdGF0ZTxULCBOVU1FUklDX0lOVEVHRVI+Cit7CisgIHByaXZh
dGU6CisgICAgVCB2YWx1ZV87CisgICAgUmFuZ2VDb25zdHJhaW50IHZhbGlkaXR5XyA6IENIQVJf
QklUOyAgLy8gQWN0dWFsbHkgcmVxdWlyZXMgb25seSB0d28gYml0cy4KKworICBwdWJsaWM6Cisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFNyYywgTnVtZXJpY1JlcHJlc2VudGF0aW9uIHR5cGU+Cisg
ICAgZnJpZW5kIGNsYXNzIENoZWNrZWROdW1lcmljU3RhdGU7CisKKyAgICBDaGVja2VkTnVtZXJp
Y1N0YXRlKCkgOiB2YWx1ZV8oMCksIHZhbGlkaXR5XyhSQU5HRV9WQUxJRCkge30KKworICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBTcmM+CisgICAgQ2hlY2tlZE51bWVyaWNTdGF0ZShTcmMgdmFsdWUs
IFJhbmdlQ29uc3RyYWludCB2YWxpZGl0eSkKKyAgICAgICAgOiB2YWx1ZV8oc3RhdGljX2Nhc3Q8
VD4odmFsdWUpKSwKKyAgICAgICAgICB2YWxpZGl0eV8oR2V0UmFuZ2VDb25zdHJhaW50KHZhbGlk
aXR5IHwgRHN0UmFuZ2VSZWxhdGlvblRvU3JjUmFuZ2U8VD4odmFsdWUpKSkKKyAgICB7CisgICAg
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjpudW1lcmljX2xpbWl0czxTcmM+Ojppc19zcGVjaWFsaXpl
ZCwgIkFyZ3VtZW50IG11c3QgYmUgbnVtZXJpYy4iKTsKKyAgICB9CisKKyAgICAvLyBDb3B5IGNv
bnN0cnVjdG9yLgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTcmM+CisgICAgQ2hlY2tlZE51bWVy
aWNTdGF0ZShjb25zdCBDaGVja2VkTnVtZXJpY1N0YXRlPFNyYz4gJnJocykKKyAgICAgICAgOiB2
YWx1ZV8oc3RhdGljX2Nhc3Q8VD4ocmhzLnZhbHVlKCkpKSwKKyAgICAgICAgICB2YWxpZGl0eV8o
R2V0UmFuZ2VDb25zdHJhaW50KHJocy52YWxpZGl0eSgpIHwgRHN0UmFuZ2VSZWxhdGlvblRvU3Jj
UmFuZ2U8VD4ocmhzLnZhbHVlKCkpKSkKKyAgICB7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFNyYz4KKyAgICBleHBsaWNpdCBDaGVja2VkTnVtZXJpY1N0YXRlKAorICAgICAgICBT
cmMgdmFsdWUsCisgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6bnVtZXJpY19s
aW1pdHM8U3JjPjo6aXNfc3BlY2lhbGl6ZWQsIGludD46OnR5cGUgPSAwKQorICAgICAgICA6IHZh
bHVlXyhzdGF0aWNfY2FzdDxUPih2YWx1ZSkpLCB2YWxpZGl0eV8oRHN0UmFuZ2VSZWxhdGlvblRv
U3JjUmFuZ2U8VD4odmFsdWUpKQorICAgIHsKKyAgICB9CisKKyAgICBSYW5nZUNvbnN0cmFpbnQg
dmFsaWRpdHkoKSBjb25zdCB7IHJldHVybiB2YWxpZGl0eV87IH0KKyAgICBUIHZhbHVlKCkgY29u
c3QgeyByZXR1cm4gdmFsdWVfOyB9Cit9OworCisvLyBGbG9hdGluZyBwb2ludHMgbWFpbnRhaW4g
dGhlaXIgb3duIHZhbGlkaXR5LCBidXQgbmVlZCB0cmFuc2xhdGlvbiB3cmFwcGVycy4KK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQ2hlY2tlZE51bWVyaWNTdGF0ZTxULCBOVU1FUklDX0ZM
T0FUSU5HPgoreworICBwcml2YXRlOgorICAgIFQgdmFsdWVfOworCisgIHB1YmxpYzoKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgU3JjLCBOdW1lcmljUmVwcmVzZW50YXRpb24gdHlwZT4KKyAgICBm
cmllbmQgY2xhc3MgQ2hlY2tlZE51bWVyaWNTdGF0ZTsKKworICAgIENoZWNrZWROdW1lcmljU3Rh
dGUoKSA6IHZhbHVlXygwLjApIHt9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU3JjPgorICAg
IENoZWNrZWROdW1lcmljU3RhdGUoCisgICAgICAgIFNyYyB2YWx1ZSwKKyAgICAgICAgUmFuZ2VD
b25zdHJhaW50IHZhbGlkaXR5LAorICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6
Om51bWVyaWNfbGltaXRzPFNyYz46OmlzX2ludGVnZXIsIGludD46OnR5cGUgPSAwKQorICAgIHsK
KyAgICAgICAgc3dpdGNoIChEc3RSYW5nZVJlbGF0aW9uVG9TcmNSYW5nZTxUPih2YWx1ZSkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgUkFOR0VfVkFMSUQ6CisgICAgICAgICAgICAgICAg
dmFsdWVfID0gc3RhdGljX2Nhc3Q8VD4odmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgICBjYXNlIFJBTkdFX1VOREVSRkxPVzoKKyAgICAgICAgICAgICAgICB2YWx1
ZV8gPSAtc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aW5maW5pdHkoKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBSQU5HRV9PVkVSRkxPVzoKKyAgICAgICAgICAg
ICAgICB2YWx1ZV8gPSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjppbmZpbml0eSgpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIFJBTkdFX0lOVkFMSUQ6CisgICAg
ICAgICAgICAgICAgdmFsdWVfID0gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6cXVpZXRfTmFOKCk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgTk9UUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFNyYz4KKyAgICBleHBsaWNpdCBDaGVja2VkTnVtZXJpY1N0YXRlKAorICAgICAg
ICBTcmMgdmFsdWUsCisgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6bnVtZXJp
Y19saW1pdHM8U3JjPjo6aXNfc3BlY2lhbGl6ZWQsIGludD46OnR5cGUgPSAwKQorICAgICAgICA6
IHZhbHVlXyhzdGF0aWNfY2FzdDxUPih2YWx1ZSkpCisgICAgeworICAgIH0KKworICAgIC8vIENv
cHkgY29uc3RydWN0b3IuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFNyYz4KKyAgICBDaGVja2Vk
TnVtZXJpY1N0YXRlKGNvbnN0IENoZWNrZWROdW1lcmljU3RhdGU8U3JjPiAmcmhzKSA6IHZhbHVl
XyhzdGF0aWNfY2FzdDxUPihyaHMudmFsdWUoKSkpCisgICAgeworICAgIH0KKworICAgIFJhbmdl
Q29uc3RyYWludCB2YWxpZGl0eSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gR2V0UmFu
Z2VDb25zdHJhaW50KHZhbHVlXyA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV8gPj0gLXN0ZDo6bnVtZXJpY19s
aW1pdHM8VD46Om1heCgpKTsKKyAgICB9CisgICAgVCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHZh
bHVlXzsgfQorfTsKKworLy8gRm9yIGludGVnZXJzIGxlc3MgdGhhbiAxMjgtYml0IGFuZCBmbG9h
dHMgMzItYml0IG9yIGxhcmdlciwgd2UgaGF2ZSB0aGUgdHlwZQorLy8gd2l0aCB0aGUgbGFyZ2Vy
IG1heGltdW0gZXhwb25lbnQgdGFrZSBwcmVjZWRlbmNlLgorZW51bSBBcml0aG1ldGljUHJvbW90
aW9uQ2F0ZWdvcnkKK3sKKyAgICBMRUZUX1BST01PVElPTiwKKyAgICBSSUdIVF9QUk9NT1RJT04K
K307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBMaHMsCisgICAgICAgICAgdHlwZW5hbWUgUmhzID0g
TGhzLAorICAgICAgICAgIEFyaXRobWV0aWNQcm9tb3Rpb25DYXRlZ29yeSBQcm9tb3Rpb24gPQor
ICAgICAgICAgICAgICAoTWF4RXhwb25lbnQ8TGhzPjo6dmFsdWUgPiBNYXhFeHBvbmVudDxSaHM+
Ojp2YWx1ZSkgPyBMRUZUX1BST01PVElPTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBSSUdIVF9QUk9NT1RJT04+Citz
dHJ1Y3QgQXJpdGhtZXRpY1Byb21vdGlvbjsKKwordGVtcGxhdGUgPHR5cGVuYW1lIExocywgdHlw
ZW5hbWUgUmhzPgorc3RydWN0IEFyaXRobWV0aWNQcm9tb3Rpb248TGhzLCBSaHMsIExFRlRfUFJP
TU9USU9OPgoreworICAgIHR5cGVkZWYgTGhzIHR5cGU7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGhzLCB0eXBlbmFtZSBSaHM+CitzdHJ1Y3QgQXJpdGhtZXRpY1Byb21vdGlvbjxMaHMsIFJo
cywgUklHSFRfUFJPTU9USU9OPgoreworICAgIHR5cGVkZWYgUmhzIHR5cGU7Cit9OworCisvLyBX
ZSBjYW4gc3RhdGljYWxseSBjaGVjayBpZiBvcGVyYXRpb25zIG9uIHRoZSBwcm92aWRlZCB0eXBl
cyBjYW4gd3JhcCwgc28gd2UKKy8vIGNhbiBza2lwIHRoZSBjaGVja2VkIG9wZXJhdGlvbnMgaWYg
dGhleSdyZSBub3QgbmVlZGVkLiBTbywgZm9yIGFuIGludGVnZXIgd2UKKy8vIGNhcmUgaWYgdGhl
IGRlc3RpbmF0aW9uIHR5cGUgcHJlc2VydmVzIHRoZSBzaWduIGFuZCBpcyB0d2ljZSB0aGUgd2lk
dGggb2YKKy8vIHRoZSBzb3VyY2UuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTGhz
LCB0eXBlbmFtZSBSaHM+CitzdHJ1Y3QgSXNJbnRlZ2VyQXJpdGhtZXRpY1NhZmUKK3sKKyAgICBz
dGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9CisgICAgICAgICFzdGQ6Om51bWVyaWNfbGltaXRzPFQ+
Ojppc19pZWM1NTkgJiYKKyAgICAgICAgU3RhdGljRHN0UmFuZ2VSZWxhdGlvblRvU3JjUmFuZ2U8
VCwgTGhzPjo6dmFsdWUgPT0gTlVNRVJJQ19SQU5HRV9DT05UQUlORUQgJiYKKyAgICAgICAgc2l6
ZW9mKFQpID49ICgyICogc2l6ZW9mKExocykpICYmCisgICAgICAgIFN0YXRpY0RzdFJhbmdlUmVs
YXRpb25Ub1NyY1JhbmdlPFQsIFJocz46OnZhbHVlICE9IE5VTUVSSUNfUkFOR0VfQ09OVEFJTkVE
ICYmCisgICAgICAgIHNpemVvZihUKSA+PSAoMiAqIHNpemVvZihSaHMpKTsKK307CisKK30gIC8v
IG5hbWVzcGFjZSBpbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGJhc2UKKworI2VuZGlmICAvLyBC
QVNFX05VTUVSSUNTX1NBRkVfTUFUSF9JTVBMX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tbW9uL3RoaXJkX3BhcnR5L251bWVyaWNzL2Jhc2UvbnVtZXJpY3Mvc2FmZV9u
dW1lcmljc191bml0dGVzdC5jYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tbW9uL3RoaXJkX3BhcnR5L251bWVyaWNzL2Jhc2UvbnVtZXJpY3Mvc2FmZV9udW1l
cmljc191bml0dGVzdC5jYwkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tbW9uL3RoaXJkX3BhcnR5L251bWVyaWNzL2Jhc2UvbnVtZXJpY3Mvc2FmZV9udW1l
cmljc191bml0dGVzdC5jYwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc3MSBAQAorLy8gQ29w
eXJpZ2h0IDIwMTMgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisjaW5jbHVk
ZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNpbmNsdWRlIDxsaW1pdHM+Cisj
aW5jbHVkZSA8dHlwZV90cmFpdHM+CisKKyNpbmNsdWRlICJiYXNlL2NvbXBpbGVyX3NwZWNpZmlj
LmgiCisjaW5jbHVkZSAiYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCisjaW5jbHVk
ZSAiYmFzZS9udW1lcmljcy9zYWZlX21hdGguaCIKKyNpbmNsdWRlICJidWlsZC9idWlsZF9jb25m
aWcuaCIKKyNpbmNsdWRlICJ0ZXN0aW5nL2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCIKKwor
I2lmIGRlZmluZWQoQ09NUElMRVJfTVNWQykgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKQor
I2luY2x1ZGUgPG1taW50cmluLmg+CisjZW5kaWYKKwordXNpbmcgc3RkOjpudW1lcmljX2xpbWl0
czsKK3VzaW5nIGJhc2U6OkNoZWNrZWROdW1lcmljOwordXNpbmcgYmFzZTo6Y2hlY2tlZF9jYXN0
OwordXNpbmcgYmFzZTo6SXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlwZTsKK3VzaW5nIGJhc2U6
OklzVmFsdWVOZWdhdGl2ZTsKK3VzaW5nIGJhc2U6OlNpemVUOwordXNpbmcgYmFzZTo6U3RyaWN0
TnVtZXJpYzsKK3VzaW5nIGJhc2U6OnNhdHVyYXRlZF9jYXN0OwordXNpbmcgYmFzZTo6c3RyaWN0
X2Nhc3Q7Cit1c2luZyBiYXNlOjppbnRlcm5hbDo6TWF4RXhwb25lbnQ7Cit1c2luZyBiYXNlOjpp
bnRlcm5hbDo6UkFOR0VfVkFMSUQ7Cit1c2luZyBiYXNlOjppbnRlcm5hbDo6UkFOR0VfSU5WQUxJ
RDsKK3VzaW5nIGJhc2U6OmludGVybmFsOjpSQU5HRV9PVkVSRkxPVzsKK3VzaW5nIGJhc2U6Omlu
dGVybmFsOjpSQU5HRV9VTkRFUkZMT1c7Cit1c2luZyBiYXNlOjppbnRlcm5hbDo6U2lnbmVkSW50
ZWdlckZvclNpemU7CisKKy8vIFRoZXNlIHRlc3RzIGRlbGliZXJhdGVseSBjYXVzZSBhcml0aG1l
dGljIG92ZXJmbG93cy4gSWYgdGhlIGNvbXBpbGVyIGlzCisvLyBhZ2dyZXNzaXZlIGVub3VnaCwg
aXQgY2FuIGNvbnN0IGZvbGQgdGhlc2Ugb3ZlcmZsb3dzLiBEaXNhYmxlIHdhcm5pbmdzIGFib3V0
CisvLyBvdmVyZmxvd3MgZm9yIGNvbnN0IGV4cHJlc3Npb25zLgorI2lmIGRlZmluZWQoT1NfV0lO
KQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0NzU2KQorI2VuZGlmCisKKy8vIFRoaXMgaXMg
YSBoZWxwZXIgZnVuY3Rpb24gZm9yIGZpbmRpbmcgdGhlIG1heGltdW0gdmFsdWUgaW4gU3JjIHRo
YXQgY2FuIGJlCisvLyB3aG9seSByZXByZXNlbnRlZCBhcyB0aGUgZGVzdGluYXRpb24gZmxvYXRp
bmctcG9pbnQgdHlwZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBEc3QsIHR5cGVuYW1lIFNyYz4KK0Rz
dCBHZXRNYXhDb252ZXJ0aWJsZVRvRmxvYXQoKQoreworICAgIHR5cGVkZWYgbnVtZXJpY19saW1p
dHM8RHN0PiBEc3RMaW1pdHM7CisgICAgdHlwZWRlZiBudW1lcmljX2xpbWl0czxTcmM+IFNyY0xp
bWl0czsKKyAgICBzdGF0aWNfYXNzZXJ0KFNyY0xpbWl0czo6aXNfc3BlY2lhbGl6ZWQsICJTb3Vy
Y2UgbXVzdCBiZSBudW1lcmljLiIpOworICAgIHN0YXRpY19hc3NlcnQoRHN0TGltaXRzOjppc19z
cGVjaWFsaXplZCwgIkRlc3RpbmF0aW9uIG11c3QgYmUgbnVtZXJpYy4iKTsKKyAgICBDSEVDSyhE
c3RMaW1pdHM6OmlzX2llYzU1OSk7CisKKyAgICBpZiAoU3JjTGltaXRzOjpkaWdpdHMgPD0gRHN0
TGltaXRzOjpkaWdpdHMgJiYKKyAgICAgICAgTWF4RXhwb25lbnQ8U3JjPjo6dmFsdWUgPD0gTWF4
RXhwb25lbnQ8RHN0Pjo6dmFsdWUpCisgICAgICAgIHJldHVybiBTcmNMaW1pdHM6Om1heCgpOwor
ICAgIFNyYyBtYXggPSBTcmNMaW1pdHM6Om1heCgpIC8gMiArIChTcmNMaW1pdHM6OmlzX2ludGVn
ZXIgPyAxIDogMCk7CisgICAgd2hpbGUgKG1heCAhPSBzdGF0aWNfY2FzdDxTcmM+KHN0YXRpY19j
YXN0PERzdD4obWF4KSkpCisgICAgeworICAgICAgICBtYXggLz0gMjsKKyAgICB9CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PERzdD4obWF4KTsKK30KKworLy8gSGVscGVyIG1hY3JvcyB0byB3cmFw
IGRpc3BsYXlpbmcgdGhlIGNvbnZlcnNpb24gdHlwZXMgYW5kIGxpbmUgbnVtYmVycy4KKyNkZWZp
bmUgVEVTVF9FWFBFQ1RFRF9WQUxJRElUWShleHBlY3RlZCwgYWN0dWFsKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVYUEVDVF9FUShleHBlY3RlZCwg
Q2hlY2tlZE51bWVyaWM8RHN0PihhY3R1YWwpLklzVmFsaWQoKSkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIDw8ICJSZXN1bHQgdGVzdDogVmFsdWUgIiA8PCArKGFjdHVh
bCkuVmFsdWVVbnNhZmUoKSA8PCAiIGFzICIgPDwgZHN0IDw8ICIgb24gbGluZSAiIFwKKyAgICAg
ICAgPDwgbGluZTsKKworI2RlZmluZSBURVNUX0VYUEVDVEVEX1NVQ0NFU1MoYWN0dWFsKSBURVNU
X0VYUEVDVEVEX1ZBTElESVRZKHRydWUsIGFjdHVhbCkKKyNkZWZpbmUgVEVTVF9FWFBFQ1RFRF9G
QUlMVVJFKGFjdHVhbCkgVEVTVF9FWFBFQ1RFRF9WQUxJRElUWShmYWxzZSwgYWN0dWFsKQorCisj
ZGVmaW5lIFRFU1RfRVhQRUNURURfVkFMVUUoZXhwZWN0ZWQsIGFjdHVhbCkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVYUEVDVF9FUShzdGF0
aWNfY2FzdDxEc3Q+KGV4cGVjdGVkKSwgQ2hlY2tlZE51bWVyaWM8RHN0PihhY3R1YWwpLlZhbHVl
VW5zYWZlKCkpICAgICAgICAgIFwKKyAgICAgICAgPDwgIlJlc3VsdCB0ZXN0OiBWYWx1ZSAiIDw8
ICsoKGFjdHVhbCkuVmFsdWVVbnNhZmUoKSkgPDwgIiBhcyAiIDw8IGRzdCA8PCAiIG9uIGxpbmUg
IiBcCisgICAgICAgIDw8IGxpbmU7CisKKy8vIFNpZ25lZCBpbnRlZ2VyIGFyaXRobWV0aWMuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgRHN0Pgorc3RhdGljIHZvaWQgVGVzdFNwZWNpYWxpemVkQXJpdGht
ZXRpYygKKyAgICBjb25zdCBjaGFyICpkc3QsCisgICAgaW50IGxpbmUsCisgICAgdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8bnVtZXJpY19saW1pdHM8RHN0Pjo6aXNfaW50ZWdlciAmJiBudW1lcmlj
X2xpbWl0czxEc3Q+Ojppc19zaWduZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
Pjo6dHlwZSA9IDApCit7CisgICAgdHlwZWRlZiBudW1lcmljX2xpbWl0czxEc3Q+IERzdExpbWl0
czsKKyAgICBURVNUX0VYUEVDVEVEX0ZBSUxVUkUoLUNoZWNrZWROdW1lcmljPERzdD4oRHN0TGlt
aXRzOjptaW4oKSkpOworICAgIFRFU1RfRVhQRUNURURfRkFJTFVSRShDaGVja2VkTnVtZXJpYzxE
c3Q+KERzdExpbWl0czo6bWluKCkpLkFicygpKTsKKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDEs
IENoZWNrZWROdW1lcmljPERzdD4oLTEpLkFicygpKTsKKworICAgIFRFU1RfRVhQRUNURURfU1VD
Q0VTUyhDaGVja2VkTnVtZXJpYzxEc3Q+KERzdExpbWl0czo6bWF4KCkpICsgLTEpOworICAgIFRF
U1RfRVhQRUNURURfRkFJTFVSRShDaGVja2VkTnVtZXJpYzxEc3Q+KERzdExpbWl0czo6bWluKCkp
ICsgLTEpOworICAgIFRFU1RfRVhQRUNURURfRkFJTFVSRShDaGVja2VkTnVtZXJpYzxEc3Q+KC1E
c3RMaW1pdHM6Om1heCgpKSArIC1Ec3RMaW1pdHM6Om1heCgpKTsKKworICAgIFRFU1RfRVhQRUNU
RURfRkFJTFVSRShDaGVja2VkTnVtZXJpYzxEc3Q+KERzdExpbWl0czo6bWluKCkpIC0gMSk7Cisg
ICAgVEVTVF9FWFBFQ1RFRF9TVUNDRVNTKENoZWNrZWROdW1lcmljPERzdD4oRHN0TGltaXRzOjpt
aW4oKSkgLSAtMSk7CisgICAgVEVTVF9FWFBFQ1RFRF9GQUlMVVJFKENoZWNrZWROdW1lcmljPERz
dD4oRHN0TGltaXRzOjptYXgoKSkgLSAtRHN0TGltaXRzOjptYXgoKSk7CisgICAgVEVTVF9FWFBF
Q1RFRF9GQUlMVVJFKENoZWNrZWROdW1lcmljPERzdD4oLURzdExpbWl0czo6bWF4KCkpIC0gRHN0
TGltaXRzOjptYXgoKSk7CisKKyAgICBURVNUX0VYUEVDVEVEX0ZBSUxVUkUoQ2hlY2tlZE51bWVy
aWM8RHN0PihEc3RMaW1pdHM6Om1pbigpKSAqIDIpOworCisgICAgVEVTVF9FWFBFQ1RFRF9GQUlM
VVJFKENoZWNrZWROdW1lcmljPERzdD4oRHN0TGltaXRzOjptaW4oKSkgLyAtMSk7CisgICAgVEVT
VF9FWFBFQ1RFRF9WQUxVRSgwLCBDaGVja2VkTnVtZXJpYzxEc3Q+KC0xKSAvIDIpOworCisgICAg
Ly8gTW9kdWx1cyBpcyBsZWdhbCBvbmx5IGZvciBpbnRlZ2Vycy4KKyAgICBURVNUX0VYUEVDVEVE
X1ZBTFVFKDAsIENoZWNrZWROdW1lcmljPERzdD4oKSAlIDEpOworICAgIFRFU1RfRVhQRUNURURf
VkFMVUUoMCwgQ2hlY2tlZE51bWVyaWM8RHN0PigxKSAlIDEpOworICAgIFRFU1RfRVhQRUNURURf
VkFMVUUoLTEsIENoZWNrZWROdW1lcmljPERzdD4oLTEpICUgMik7CisgICAgVEVTVF9FWFBFQ1RF
RF9GQUlMVVJFKENoZWNrZWROdW1lcmljPERzdD4oLTEpICUgLTIpOworICAgIFRFU1RfRVhQRUNU
RURfVkFMVUUoMCwgQ2hlY2tlZE51bWVyaWM8RHN0PihEc3RMaW1pdHM6Om1pbigpKSAlIDIpOwor
ICAgIFRFU1RfRVhQRUNURURfVkFMVUUoMSwgQ2hlY2tlZE51bWVyaWM8RHN0PihEc3RMaW1pdHM6
Om1heCgpKSAlIDIpOworICAgIC8vIFRlc3QgYWxsIHRoZSBkaWZmZXJlbnQgbW9kdWx1cyBjb21i
aW5hdGlvbnMuCisgICAgVEVTVF9FWFBFQ1RFRF9WQUxVRSgwLCBDaGVja2VkTnVtZXJpYzxEc3Q+
KDEpICUgQ2hlY2tlZE51bWVyaWM8RHN0PigxKSk7CisgICAgVEVTVF9FWFBFQ1RFRF9WQUxVRSgw
LCAxICUgQ2hlY2tlZE51bWVyaWM8RHN0PigxKSk7CisgICAgVEVTVF9FWFBFQ1RFRF9WQUxVRSgw
LCBDaGVja2VkTnVtZXJpYzxEc3Q+KDEpICUgMSk7CisgICAgQ2hlY2tlZE51bWVyaWM8RHN0PiBj
aGVja2VkX2RzdCA9IDE7CisgICAgVEVTVF9FWFBFQ1RFRF9WQUxVRSgwLCBjaGVja2VkX2RzdCAl
PSAxKTsKK30KKworLy8gVW5zaWduZWQgaW50ZWdlciBhcml0aG1ldGljLgordGVtcGxhdGUgPHR5
cGVuYW1lIERzdD4KK3N0YXRpYyB2b2lkIFRlc3RTcGVjaWFsaXplZEFyaXRobWV0aWMoCisgICAg
Y29uc3QgY2hhciAqZHN0LAorICAgIGludCBsaW5lLAorICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPG51bWVyaWNfbGltaXRzPERzdD46OmlzX2ludGVnZXIgJiYgIW51bWVyaWNfbGltaXRzPERz
dD46OmlzX3NpZ25lZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ+Ojp0eXBlID0g
MCkKK3sKKyAgICB0eXBlZGVmIG51bWVyaWNfbGltaXRzPERzdD4gRHN0TGltaXRzOworICAgIFRF
U1RfRVhQRUNURURfU1VDQ0VTUygtQ2hlY2tlZE51bWVyaWM8RHN0PihEc3RMaW1pdHM6Om1pbigp
KSk7CisgICAgVEVTVF9FWFBFQ1RFRF9TVUNDRVNTKENoZWNrZWROdW1lcmljPERzdD4oRHN0TGlt
aXRzOjptaW4oKSkuQWJzKCkpOworICAgIFRFU1RfRVhQRUNURURfRkFJTFVSRShDaGVja2VkTnVt
ZXJpYzxEc3Q+KERzdExpbWl0czo6bWluKCkpICsgLTEpOworICAgIFRFU1RfRVhQRUNURURfRkFJ
TFVSRShDaGVja2VkTnVtZXJpYzxEc3Q+KERzdExpbWl0czo6bWluKCkpIC0gMSk7CisgICAgVEVT
VF9FWFBFQ1RFRF9WQUxVRSgwLCBDaGVja2VkTnVtZXJpYzxEc3Q+KERzdExpbWl0czo6bWluKCkp
ICogMik7CisgICAgVEVTVF9FWFBFQ1RFRF9WQUxVRSgwLCBDaGVja2VkTnVtZXJpYzxEc3Q+KDEp
IC8gMik7CisgICAgVEVTVF9FWFBFQ1RFRF9TVUNDRVNTKENoZWNrZWROdW1lcmljPERzdD4oRHN0
TGltaXRzOjptaW4oKSkuVW5zaWduZWRBYnMoKSk7CisgICAgVEVTVF9FWFBFQ1RFRF9TVUNDRVNT
KENoZWNrZWROdW1lcmljPHR5cGVuYW1lIFNpZ25lZEludGVnZXJGb3JTaXplPERzdD46OnR5cGU+
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czx0eXBl
bmFtZSBTaWduZWRJbnRlZ2VyRm9yU2l6ZTxEc3Q+Ojp0eXBlPjo6bWluKCkpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAuVW5zaWduZWRBYnMoKSk7CisKKyAgICAvLyBNb2R1bHVzIGlz
IGxlZ2FsIG9ubHkgZm9yIGludGVnZXJzLgorICAgIFRFU1RfRVhQRUNURURfVkFMVUUoMCwgQ2hl
Y2tlZE51bWVyaWM8RHN0PigpICUgMSk7CisgICAgVEVTVF9FWFBFQ1RFRF9WQUxVRSgwLCBDaGVj
a2VkTnVtZXJpYzxEc3Q+KDEpICUgMSk7CisgICAgVEVTVF9FWFBFQ1RFRF9WQUxVRSgxLCBDaGVj
a2VkTnVtZXJpYzxEc3Q+KDEpICUgMik7CisgICAgVEVTVF9FWFBFQ1RFRF9WQUxVRSgwLCBDaGVj
a2VkTnVtZXJpYzxEc3Q+KERzdExpbWl0czo6bWluKCkpICUgMik7CisgICAgVEVTVF9FWFBFQ1RF
RF9WQUxVRSgxLCBDaGVja2VkTnVtZXJpYzxEc3Q+KERzdExpbWl0czo6bWF4KCkpICUgMik7Cisg
ICAgLy8gVGVzdCBhbGwgdGhlIGRpZmZlcmVudCBtb2R1bHVzIGNvbWJpbmF0aW9ucy4KKyAgICBU
RVNUX0VYUEVDVEVEX1ZBTFVFKDAsIENoZWNrZWROdW1lcmljPERzdD4oMSkgJSBDaGVja2VkTnVt
ZXJpYzxEc3Q+KDEpKTsKKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDAsIDEgJSBDaGVja2VkTnVt
ZXJpYzxEc3Q+KDEpKTsKKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDAsIENoZWNrZWROdW1lcmlj
PERzdD4oMSkgJSAxKTsKKyAgICBDaGVja2VkTnVtZXJpYzxEc3Q+IGNoZWNrZWRfZHN0ID0gMTsK
KyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDAsIGNoZWNrZWRfZHN0ICU9IDEpOworfQorCisvLyBG
bG9hdGluZyBwb2ludCBhcml0aG1ldGljLgordGVtcGxhdGUgPHR5cGVuYW1lIERzdD4KK3ZvaWQg
VGVzdFNwZWNpYWxpemVkQXJpdGhtZXRpYygKKyAgICBjb25zdCBjaGFyICpkc3QsCisgICAgaW50
IGxpbmUsCisgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8bnVtZXJpY19saW1pdHM8RHN0Pjo6
aXNfaWVjNTU5LCBpbnQ+Ojp0eXBlID0gMCkKK3sKKyAgICB0eXBlZGVmIG51bWVyaWNfbGltaXRz
PERzdD4gRHN0TGltaXRzOworICAgIFRFU1RfRVhQRUNURURfU1VDQ0VTUygtQ2hlY2tlZE51bWVy
aWM8RHN0PihEc3RMaW1pdHM6Om1pbigpKSk7CisKKyAgICBURVNUX0VYUEVDVEVEX1NVQ0NFU1Mo
Q2hlY2tlZE51bWVyaWM8RHN0PihEc3RMaW1pdHM6Om1pbigpKS5BYnMoKSk7CisgICAgVEVTVF9F
WFBFQ1RFRF9WQUxVRSgxLCBDaGVja2VkTnVtZXJpYzxEc3Q+KC0xKS5BYnMoKSk7CisKKyAgICBU
RVNUX0VYUEVDVEVEX1NVQ0NFU1MoQ2hlY2tlZE51bWVyaWM8RHN0PihEc3RMaW1pdHM6Om1pbigp
KSArIC0xKTsKKyAgICBURVNUX0VYUEVDVEVEX1NVQ0NFU1MoQ2hlY2tlZE51bWVyaWM8RHN0PihE
c3RMaW1pdHM6Om1heCgpKSArIDEpOworICAgIFRFU1RfRVhQRUNURURfRkFJTFVSRShDaGVja2Vk
TnVtZXJpYzxEc3Q+KC1Ec3RMaW1pdHM6Om1heCgpKSArIC1Ec3RMaW1pdHM6Om1heCgpKTsKKwor
ICAgIFRFU1RfRVhQRUNURURfRkFJTFVSRShDaGVja2VkTnVtZXJpYzxEc3Q+KERzdExpbWl0czo6
bWF4KCkpIC0gLURzdExpbWl0czo6bWF4KCkpOworICAgIFRFU1RfRVhQRUNURURfRkFJTFVSRShD
aGVja2VkTnVtZXJpYzxEc3Q+KC1Ec3RMaW1pdHM6Om1heCgpKSAtIERzdExpbWl0czo6bWF4KCkp
OworCisgICAgVEVTVF9FWFBFQ1RFRF9TVUNDRVNTKENoZWNrZWROdW1lcmljPERzdD4oRHN0TGlt
aXRzOjptaW4oKSkgKiAyKTsKKworICAgIFRFU1RfRVhQRUNURURfVkFMVUUoLTAuNSwgQ2hlY2tl
ZE51bWVyaWM8RHN0PigtMS4wKSAvIDIpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxEc3Q+
KDEuMCksIENoZWNrZWROdW1lcmljPERzdD4oMS4wKS5WYWx1ZUZsb2F0aW5nKCkpOworfQorCisv
LyBHZW5lcmljIGFyaXRobWV0aWMgdGVzdHMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRHN0Pgorc3Rh
dGljIHZvaWQgVGVzdEFyaXRobWV0aWMoY29uc3QgY2hhciAqZHN0LCBpbnQgbGluZSkKK3sKKyAg
ICB0eXBlZGVmIG51bWVyaWNfbGltaXRzPERzdD4gRHN0TGltaXRzOworCisgICAgRVhQRUNUX0VR
KHRydWUsIENoZWNrZWROdW1lcmljPERzdD4oKS5Jc1ZhbGlkKCkpOworICAgIEVYUEVDVF9FUSgK
KyAgICAgICAgZmFsc2UsCisgICAgICAgIENoZWNrZWROdW1lcmljPERzdD4oQ2hlY2tlZE51bWVy
aWM8RHN0PihEc3RMaW1pdHM6Om1heCgpKSAqIERzdExpbWl0czo6bWF4KCkpLklzVmFsaWQoKSk7
CisgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PERzdD4oMCksIENoZWNrZWROdW1lcmljPERzdD4o
KS5WYWx1ZU9yRGllKCkpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxEc3Q+KDApLCBDaGVj
a2VkTnVtZXJpYzxEc3Q+KCkuVmFsdWVPckRlZmF1bHQoMSkpOworICAgIEVYUEVDVF9FUShzdGF0
aWNfY2FzdDxEc3Q+KDEpLAorICAgICAgICAgICAgICBDaGVja2VkTnVtZXJpYzxEc3Q+KENoZWNr
ZWROdW1lcmljPERzdD4oRHN0TGltaXRzOjptYXgoKSkgKiBEc3RMaW1pdHM6Om1heCgpKQorICAg
ICAgICAgICAgICAgICAgLlZhbHVlT3JEZWZhdWx0KDEpKTsKKworICAgIC8vIFRlc3QgdGhlIG9w
ZXJhdG9yIGNvbWJpbmF0aW9ucy4KKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDIsIENoZWNrZWRO
dW1lcmljPERzdD4oMSkgKyBDaGVja2VkTnVtZXJpYzxEc3Q+KDEpKTsKKyAgICBURVNUX0VYUEVD
VEVEX1ZBTFVFKDAsIENoZWNrZWROdW1lcmljPERzdD4oMSkgLSBDaGVja2VkTnVtZXJpYzxEc3Q+
KDEpKTsKKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDEsIENoZWNrZWROdW1lcmljPERzdD4oMSkg
KiBDaGVja2VkTnVtZXJpYzxEc3Q+KDEpKTsKKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDEsIENo
ZWNrZWROdW1lcmljPERzdD4oMSkgLyBDaGVja2VkTnVtZXJpYzxEc3Q+KDEpKTsKKyAgICBURVNU
X0VYUEVDVEVEX1ZBTFVFKDIsIDEgKyBDaGVja2VkTnVtZXJpYzxEc3Q+KDEpKTsKKyAgICBURVNU
X0VYUEVDVEVEX1ZBTFVFKDAsIDEgLSBDaGVja2VkTnVtZXJpYzxEc3Q+KDEpKTsKKyAgICBURVNU
X0VYUEVDVEVEX1ZBTFVFKDEsIDEgKiBDaGVja2VkTnVtZXJpYzxEc3Q+KDEpKTsKKyAgICBURVNU
X0VYUEVDVEVEX1ZBTFVFKDEsIDEgLyBDaGVja2VkTnVtZXJpYzxEc3Q+KDEpKTsKKyAgICBURVNU
X0VYUEVDVEVEX1ZBTFVFKDIsIENoZWNrZWROdW1lcmljPERzdD4oMSkgKyAxKTsKKyAgICBURVNU
X0VYUEVDVEVEX1ZBTFVFKDAsIENoZWNrZWROdW1lcmljPERzdD4oMSkgLSAxKTsKKyAgICBURVNU
X0VYUEVDVEVEX1ZBTFVFKDEsIENoZWNrZWROdW1lcmljPERzdD4oMSkgKiAxKTsKKyAgICBURVNU
X0VYUEVDVEVEX1ZBTFVFKDEsIENoZWNrZWROdW1lcmljPERzdD4oMSkgLyAxKTsKKyAgICBDaGVj
a2VkTnVtZXJpYzxEc3Q+IGNoZWNrZWRfZHN0ID0gMTsKKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVF
KDIsIGNoZWNrZWRfZHN0ICs9IDEpOworICAgIGNoZWNrZWRfZHN0ID0gMTsKKyAgICBURVNUX0VY
UEVDVEVEX1ZBTFVFKDAsIGNoZWNrZWRfZHN0IC09IDEpOworICAgIGNoZWNrZWRfZHN0ID0gMTsK
KyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDEsIGNoZWNrZWRfZHN0ICo9IDEpOworICAgIGNoZWNr
ZWRfZHN0ID0gMTsKKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDEsIGNoZWNrZWRfZHN0IC89IDEp
OworCisgICAgLy8gR2VuZXJpYyBuZWdhdGlvbi4KKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDAs
IC1DaGVja2VkTnVtZXJpYzxEc3Q+KCkpOworICAgIFRFU1RfRVhQRUNURURfVkFMVUUoLTEsIC1D
aGVja2VkTnVtZXJpYzxEc3Q+KDEpKTsKKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDEsIC1DaGVj
a2VkTnVtZXJpYzxEc3Q+KC0xKSk7CisgICAgVEVTVF9FWFBFQ1RFRF9WQUxVRShzdGF0aWNfY2Fz
dDxEc3Q+KERzdExpbWl0czo6bWF4KCkgKiAtMSksCisgICAgICAgICAgICAgICAgICAgICAgICAt
Q2hlY2tlZE51bWVyaWM8RHN0PihEc3RMaW1pdHM6Om1heCgpKSk7CisKKyAgICAvLyBHZW5lcmlj
IGFic29sdXRlIHZhbHVlLgorICAgIFRFU1RfRVhQRUNURURfVkFMVUUoMCwgQ2hlY2tlZE51bWVy
aWM8RHN0PigpLkFicygpKTsKKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDEsIENoZWNrZWROdW1l
cmljPERzdD4oMSkuQWJzKCkpOworICAgIFRFU1RfRVhQRUNURURfVkFMVUUoRHN0TGltaXRzOjpt
YXgoKSwgQ2hlY2tlZE51bWVyaWM8RHN0PihEc3RMaW1pdHM6Om1heCgpKS5BYnMoKSk7CisKKyAg
ICAvLyBHZW5lcmljIGFkZGl0aW9uLgorICAgIFRFU1RfRVhQRUNURURfVkFMVUUoMSwgKENoZWNr
ZWROdW1lcmljPERzdD4oKSArIDEpKTsKKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDIsIChDaGVj
a2VkTnVtZXJpYzxEc3Q+KDEpICsgMSkpOworICAgIFRFU1RfRVhQRUNURURfVkFMVUUoMCwgKENo
ZWNrZWROdW1lcmljPERzdD4oLTEpICsgMSkpOworICAgIFRFU1RfRVhQRUNURURfU1VDQ0VTUyhD
aGVja2VkTnVtZXJpYzxEc3Q+KERzdExpbWl0czo6bWluKCkpICsgMSk7CisgICAgVEVTVF9FWFBF
Q1RFRF9GQUlMVVJFKENoZWNrZWROdW1lcmljPERzdD4oRHN0TGltaXRzOjptYXgoKSkgKyBEc3RM
aW1pdHM6Om1heCgpKTsKKworICAgIC8vIEdlbmVyaWMgc3VidHJhY3Rpb24uCisgICAgVEVTVF9F
WFBFQ1RFRF9WQUxVRSgtMSwgKENoZWNrZWROdW1lcmljPERzdD4oKSAtIDEpKTsKKyAgICBURVNU
X0VYUEVDVEVEX1ZBTFVFKDAsIChDaGVja2VkTnVtZXJpYzxEc3Q+KDEpIC0gMSkpOworICAgIFRF
U1RfRVhQRUNURURfVkFMVUUoLTIsIChDaGVja2VkTnVtZXJpYzxEc3Q+KC0xKSAtIDEpKTsKKyAg
ICBURVNUX0VYUEVDVEVEX1NVQ0NFU1MoQ2hlY2tlZE51bWVyaWM8RHN0PihEc3RMaW1pdHM6Om1h
eCgpKSAtIDEpOworCisgICAgLy8gR2VuZXJpYyBtdWx0aXBsaWNhdGlvbi4KKyAgICBURVNUX0VY
UEVDVEVEX1ZBTFVFKDAsIChDaGVja2VkTnVtZXJpYzxEc3Q+KCkgKiAxKSk7CisgICAgVEVTVF9F
WFBFQ1RFRF9WQUxVRSgxLCAoQ2hlY2tlZE51bWVyaWM8RHN0PigxKSAqIDEpKTsKKyAgICBURVNU
X0VYUEVDVEVEX1ZBTFVFKC0yLCAoQ2hlY2tlZE51bWVyaWM8RHN0PigtMSkgKiAyKSk7CisgICAg
VEVTVF9FWFBFQ1RFRF9WQUxVRSgwLCAoQ2hlY2tlZE51bWVyaWM8RHN0PigwKSAqIDApKTsKKyAg
ICBURVNUX0VYUEVDVEVEX1ZBTFVFKDAsIChDaGVja2VkTnVtZXJpYzxEc3Q+KC0xKSAqIDApKTsK
KyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDAsIChDaGVja2VkTnVtZXJpYzxEc3Q+KDApICogLTEp
KTsKKyAgICBURVNUX0VYUEVDVEVEX0ZBSUxVUkUoQ2hlY2tlZE51bWVyaWM8RHN0PihEc3RMaW1p
dHM6Om1heCgpKSAqIERzdExpbWl0czo6bWF4KCkpOworCisgICAgLy8gR2VuZXJpYyBkaXZpc2lv
bi4KKyAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDAsIENoZWNrZWROdW1lcmljPERzdD4oKSAvIDEp
OworICAgIFRFU1RfRVhQRUNURURfVkFMVUUoMSwgQ2hlY2tlZE51bWVyaWM8RHN0PigxKSAvIDEp
OworICAgIFRFU1RfRVhQRUNURURfVkFMVUUoRHN0TGltaXRzOjptaW4oKSAvIDIsIENoZWNrZWRO
dW1lcmljPERzdD4oRHN0TGltaXRzOjptaW4oKSkgLyAyKTsKKyAgICBURVNUX0VYUEVDVEVEX1ZB
TFVFKERzdExpbWl0czo6bWF4KCkgLyAyLCBDaGVja2VkTnVtZXJpYzxEc3Q+KERzdExpbWl0czo6
bWF4KCkpIC8gMik7CisKKyAgICBUZXN0U3BlY2lhbGl6ZWRBcml0aG1ldGljPERzdD4oZHN0LCBs
aW5lKTsKK30KKworLy8gSGVscGVyIG1hY3JvIHRvIHdyYXAgZGlzcGxheWluZyB0aGUgY29udmVy
c2lvbiB0eXBlcyBhbmQgbGluZSBudW1iZXJzLgorI2RlZmluZSBURVNUX0FSSVRITUVUSUMoRHN0
KSBUZXN0QXJpdGhtZXRpYzxEc3Q+KCNEc3QsIF9fTElORV9fKQorCitURVNUKFNhZmVOdW1lcmlj
cywgU2lnbmVkSW50ZWdlck1hdGgpCit7CisgICAgVEVTVF9BUklUSE1FVElDKGludDhfdCk7Cisg
ICAgVEVTVF9BUklUSE1FVElDKGludCk7CisgICAgVEVTVF9BUklUSE1FVElDKGludHB0cl90KTsK
KyAgICBURVNUX0FSSVRITUVUSUMoaW50bWF4X3QpOworfQorCitURVNUKFNhZmVOdW1lcmljcywg
VW5zaWduZWRJbnRlZ2VyTWF0aCkKK3sKKyAgICBURVNUX0FSSVRITUVUSUModWludDhfdCk7Cisg
ICAgVEVTVF9BUklUSE1FVElDKHVuc2lnbmVkIGludCk7CisgICAgVEVTVF9BUklUSE1FVElDKHVp
bnRwdHJfdCk7CisgICAgVEVTVF9BUklUSE1FVElDKHVpbnRtYXhfdCk7Cit9CisKK1RFU1QoU2Fm
ZU51bWVyaWNzLCBGbG9hdGluZ1BvaW50TWF0aCkKK3sKKyAgICBURVNUX0FSSVRITUVUSUMoZmxv
YXQpOworICAgIFRFU1RfQVJJVEhNRVRJQyhkb3VibGUpOworfQorCisvLyBFbnVtZXJhdGVzIHRo
ZSBmaXZlIGRpZmZlcmVudCBjb252ZXJzaW9ucyB0eXBlcyB3ZSBuZWVkIHRvIHRlc3QuCitlbnVt
IE51bWVyaWNDb252ZXJzaW9uVHlwZQoreworICAgIFNJR05fUFJFU0VSVklOR19WQUxVRV9QUkVT
RVJWSU5HLAorICAgIFNJR05fUFJFU0VSVklOR19OQVJST1csCisgICAgU0lHTl9UT19VTlNJR05f
V0lERU5fT1JfRVFVQUwsCisgICAgU0lHTl9UT19VTlNJR05fTkFSUk9XLAorICAgIFVOU0lHTl9U
T19TSUdOX05BUlJPV19PUl9FUVVBTCwKK307CisKKy8vIFRlbXBsYXRlIGNvdmVyaW5nIHRoZSBk
aWZmZXJlbnQgY29udmVyc2lvbiB0ZXN0cy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBEc3QsIHR5cGVu
YW1lIFNyYywgTnVtZXJpY0NvbnZlcnNpb25UeXBlIGNvbnZlcnNpb24+CitzdHJ1Y3QgVGVzdE51
bWVyaWNDb252ZXJzaW9uCit7Cit9OworCisvLyBFWFBFQ1RfRVEgd3JhcHBlcnMgcHJvdmlkaW5n
IHNwZWNpZmljIGRldGFpbCBvbiB0ZXN0IGZhaWx1cmVzLgorI2RlZmluZSBURVNUX0VYUEVDVEVE
X1JBTkdFKGV4cGVjdGVkLCBhY3R1YWwpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIEVYUEVDVF9FUShleHBlY3RlZCwgYmFzZTo6aW50ZXJuYWw6
OkRzdFJhbmdlUmVsYXRpb25Ub1NyY1JhbmdlPERzdD4oYWN0dWFsKSkgICAgICAgICAgICAgXAor
ICAgICAgICA8PCAiQ29udmVyc2lvbiB0ZXN0OiAiIDw8IHNyYyA8PCAiIHZhbHVlICIgPDwgYWN0
dWFsIDw8ICIgdG8gIiA8PCBkc3QgPDwgIiBvbiBsaW5lICIgXAorICAgICAgICA8PCBsaW5lOwor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRHN0LCB0eXBlbmFtZSBTcmM+CitzdHJ1Y3QgVGVzdE51bWVy
aWNDb252ZXJzaW9uPERzdCwgU3JjLCBTSUdOX1BSRVNFUlZJTkdfVkFMVUVfUFJFU0VSVklORz4K
K3sKKyAgICBzdGF0aWMgdm9pZCBUZXN0KGNvbnN0IGNoYXIgKmRzdCwgY29uc3QgY2hhciAqc3Jj
LCBpbnQgbGluZSkKKyAgICB7CisgICAgICAgIHR5cGVkZWYgbnVtZXJpY19saW1pdHM8U3JjPiBT
cmNMaW1pdHM7CisgICAgICAgIHR5cGVkZWYgbnVtZXJpY19saW1pdHM8RHN0PiBEc3RMaW1pdHM7
CisgICAgICAgIC8vIEludGVncmFsIHRvIGZsb2F0aW5nLgorICAgICAgICBzdGF0aWNfYXNzZXJ0
KAorICAgICAgICAgICAgKERzdExpbWl0czo6aXNfaWVjNTU5ICYmIFNyY0xpbWl0czo6aXNfaW50
ZWdlcikgfHwKKyAgICAgICAgICAgICAgICAvLyBOb3QgZmxvYXRpbmcgdG8gaW50ZWdyYWwgYW5k
Li4uCisgICAgICAgICAgICAgICAgKCEoRHN0TGltaXRzOjppc19pbnRlZ2VyICYmIFNyY0xpbWl0
czo6aXNfaWVjNTU5KSAmJgorICAgICAgICAgICAgICAgICAvLyBTYW1lIHNpZ24sIHNhbWUgbnVt
ZXJpYywgc291cmNlIGlzIG5hcnJvd2VyIG9yIHNhbWUuCisgICAgICAgICAgICAgICAgICgoU3Jj
TGltaXRzOjppc19zaWduZWQgPT0gRHN0TGltaXRzOjppc19zaWduZWQgJiYgc2l6ZW9mKERzdCkg
Pj0gc2l6ZW9mKFNyYykpIHx8CisgICAgICAgICAgICAgICAgICAvLyBPciBzaWduZWQgZGVzdGlu
YXRpb24gYW5kIHNvdXJjZSBpcyBzbWFsbGVyCisgICAgICAgICAgICAgICAgICAoRHN0TGltaXRz
Ojppc19zaWduZWQgJiYgc2l6ZW9mKERzdCkgPiBzaXplb2YoU3JjKSkpKSwKKyAgICAgICAgICAg
ICJDb21wYXJpc29uIG11c3QgYmUgc2lnbiBwcmVzZXJ2aW5nIGFuZCB2YWx1ZSBwcmVzZXJ2aW5n
Iik7CisKKyAgICAgICAgY29uc3QgQ2hlY2tlZE51bWVyaWM8RHN0PiBjaGVja2VkX2RzdCA9IFNy
Y0xpbWl0czo6bWF4KCk7CisgICAgICAgIFRFU1RfRVhQRUNURURfU1VDQ0VTUyhjaGVja2VkX2Rz
dCk7CisgICAgICAgIGlmIChNYXhFeHBvbmVudDxEc3Q+Ojp2YWx1ZSA+IE1heEV4cG9uZW50PFNy
Yz46OnZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoTWF4RXhwb25lbnQ8RHN0Pjo6
dmFsdWUgPj0gTWF4RXhwb25lbnQ8U3JjPjo6dmFsdWUgKiAyIC0gMSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAvLyBBdCBsZWFzdCB0d2ljZSBsYXJnZXIgdHlwZS4KKyAgICAgICAg
ICAgICAgICBURVNUX0VYUEVDVEVEX1NVQ0NFU1MoU3JjTGltaXRzOjptYXgoKSAqIGNoZWNrZWRf
ZHN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsgIC8v
IExhcmdlciwgYnV0IG5vdCBhdCBsZWFzdCB0d2ljZSBhcyBsYXJnZS4KKyAgICAgICAgICAgICAg
ICBURVNUX0VYUEVDVEVEX0ZBSUxVUkUoU3JjTGltaXRzOjptYXgoKSAqIGNoZWNrZWRfZHN0KTsK
KyAgICAgICAgICAgICAgICBURVNUX0VYUEVDVEVEX1NVQ0NFU1MoY2hlY2tlZF9kc3QgKyAxKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsgIC8vIFNh
bWUgd2lkdGggdHlwZS4KKyAgICAgICAgICAgIFRFU1RfRVhQRUNURURfRkFJTFVSRShjaGVja2Vk
X2RzdCArIDEpOworICAgICAgICB9CisKKyAgICAgICAgVEVTVF9FWFBFQ1RFRF9SQU5HRShSQU5H
RV9WQUxJRCwgU3JjTGltaXRzOjptYXgoKSk7CisgICAgICAgIFRFU1RfRVhQRUNURURfUkFOR0Uo
UkFOR0VfVkFMSUQsIHN0YXRpY19jYXN0PFNyYz4oMSkpOworICAgICAgICBpZiAoU3JjTGltaXRz
Ojppc19pZWM1NTkpCisgICAgICAgIHsKKyAgICAgICAgICAgIFRFU1RfRVhQRUNURURfUkFOR0Uo
UkFOR0VfVkFMSUQsIFNyY0xpbWl0czo6bWF4KCkgKiBzdGF0aWNfY2FzdDxTcmM+KC0xKSk7Cisg
ICAgICAgICAgICBURVNUX0VYUEVDVEVEX1JBTkdFKFJBTkdFX09WRVJGTE9XLCBTcmNMaW1pdHM6
OmluZmluaXR5KCkpOworICAgICAgICAgICAgVEVTVF9FWFBFQ1RFRF9SQU5HRShSQU5HRV9VTkRF
UkZMT1csIFNyY0xpbWl0czo6aW5maW5pdHkoKSAqIC0xKTsKKyAgICAgICAgICAgIFRFU1RfRVhQ
RUNURURfUkFOR0UoUkFOR0VfSU5WQUxJRCwgU3JjTGltaXRzOjpxdWlldF9OYU4oKSk7CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZSBpZiAobnVtZXJpY19saW1pdHM8U3JjPjo6aXNfc2lnbmVkKQor
ICAgICAgICB7CisgICAgICAgICAgICBURVNUX0VYUEVDVEVEX1JBTkdFKFJBTkdFX1ZBTElELCBz
dGF0aWNfY2FzdDxTcmM+KC0xKSk7CisgICAgICAgICAgICBURVNUX0VYUEVDVEVEX1JBTkdFKFJB
TkdFX1ZBTElELCBTcmNMaW1pdHM6Om1pbigpKTsKKyAgICAgICAgfQorICAgIH0KK307CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBEc3QsIHR5cGVuYW1lIFNyYz4KK3N0cnVjdCBUZXN0TnVtZXJpY0Nv
bnZlcnNpb248RHN0LCBTcmMsIFNJR05fUFJFU0VSVklOR19OQVJST1c+Cit7CisgICAgc3RhdGlj
IHZvaWQgVGVzdChjb25zdCBjaGFyICpkc3QsIGNvbnN0IGNoYXIgKnNyYywgaW50IGxpbmUpCisg
ICAgeworICAgICAgICB0eXBlZGVmIG51bWVyaWNfbGltaXRzPFNyYz4gU3JjTGltaXRzOworICAg
ICAgICB0eXBlZGVmIG51bWVyaWNfbGltaXRzPERzdD4gRHN0TGltaXRzOworICAgICAgICBzdGF0
aWNfYXNzZXJ0KFNyY0xpbWl0czo6aXNfc2lnbmVkID09IERzdExpbWl0czo6aXNfc2lnbmVkLAor
ICAgICAgICAgICAgICAgICAgICAgICJEZXN0aW5hdGlvbiBhbmQgc291cmNlIHNpZ24gbXVzdCBi
ZSB0aGUgc2FtZSIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihEc3QpIDwgc2l6ZW9m
KFNyYykgfHwgKERzdExpbWl0czo6aXNfaW50ZWdlciAmJiBTcmNMaW1pdHM6OmlzX2llYzU1OSks
CisgICAgICAgICAgICAgICAgICAgICAgIkRlc3RpbmF0aW9uIG11c3QgYmUgbmFycm93ZXIgdGhh
biBzb3VyY2UiKTsKKworICAgICAgICBjb25zdCBDaGVja2VkTnVtZXJpYzxEc3Q+IGNoZWNrZWRf
ZHN0OworICAgICAgICBURVNUX0VYUEVDVEVEX0ZBSUxVUkUoY2hlY2tlZF9kc3QgKyBTcmNMaW1p
dHM6Om1heCgpKTsKKyAgICAgICAgVEVTVF9FWFBFQ1RFRF9WQUxVRSgxLCBjaGVja2VkX2RzdCAr
IHN0YXRpY19jYXN0PFNyYz4oMSkpOworICAgICAgICBURVNUX0VYUEVDVEVEX0ZBSUxVUkUoY2hl
Y2tlZF9kc3QgLSBTcmNMaW1pdHM6Om1heCgpKTsKKworICAgICAgICBURVNUX0VYUEVDVEVEX1JB
TkdFKFJBTkdFX09WRVJGTE9XLCBTcmNMaW1pdHM6Om1heCgpKTsKKyAgICAgICAgVEVTVF9FWFBF
Q1RFRF9SQU5HRShSQU5HRV9WQUxJRCwgc3RhdGljX2Nhc3Q8U3JjPigxKSk7CisgICAgICAgIGlm
IChTcmNMaW1pdHM6OmlzX2llYzU1OSkKKyAgICAgICAgeworICAgICAgICAgICAgVEVTVF9FWFBF
Q1RFRF9SQU5HRShSQU5HRV9VTkRFUkZMT1csIFNyY0xpbWl0czo6bWF4KCkgKiAtMSk7CisgICAg
ICAgICAgICBURVNUX0VYUEVDVEVEX1JBTkdFKFJBTkdFX1ZBTElELCBzdGF0aWNfY2FzdDxTcmM+
KC0xKSk7CisgICAgICAgICAgICBURVNUX0VYUEVDVEVEX1JBTkdFKFJBTkdFX09WRVJGTE9XLCBT
cmNMaW1pdHM6OmluZmluaXR5KCkpOworICAgICAgICAgICAgVEVTVF9FWFBFQ1RFRF9SQU5HRShS
QU5HRV9VTkRFUkZMT1csIFNyY0xpbWl0czo6aW5maW5pdHkoKSAqIC0xKTsKKyAgICAgICAgICAg
IFRFU1RfRVhQRUNURURfUkFOR0UoUkFOR0VfSU5WQUxJRCwgU3JjTGltaXRzOjpxdWlldF9OYU4o
KSk7CisgICAgICAgICAgICBpZiAoRHN0TGltaXRzOjppc19pbnRlZ2VyKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGlmIChTcmNMaW1pdHM6OmRpZ2l0cyA8IERzdExpbWl0czo6ZGln
aXRzKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgVEVTVF9FWFBFQ1RF
RF9SQU5HRShSQU5HRV9PVkVSRkxPVywgc3RhdGljX2Nhc3Q8U3JjPihEc3RMaW1pdHM6Om1heCgp
KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIFRFU1RfRVhQRUNURURfUkFOR0UoUkFOR0VfVkFM
SUQsIHN0YXRpY19jYXN0PFNyYz4oRHN0TGltaXRzOjptYXgoKSkpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBURVNUX0VYUEVDVEVEX1JBTkdFKFJBTkdFX1ZBTElELAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8U3JjPihHZXRNYXhD
b252ZXJ0aWJsZVRvRmxvYXQ8U3JjLCBEc3Q+KCkpKTsKKyAgICAgICAgICAgICAgICBURVNUX0VY
UEVDVEVEX1JBTkdFKFJBTkdFX1ZBTElELCBzdGF0aWNfY2FzdDxTcmM+KERzdExpbWl0czo6bWlu
KCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChTcmNMaW1p
dHM6OmlzX3NpZ25lZCkKKyAgICAgICAgeworICAgICAgICAgICAgVEVTVF9FWFBFQ1RFRF9WQUxV
RSgtMSwgY2hlY2tlZF9kc3QgLSBzdGF0aWNfY2FzdDxTcmM+KDEpKTsKKyAgICAgICAgICAgIFRF
U1RfRVhQRUNURURfUkFOR0UoUkFOR0VfVU5ERVJGTE9XLCBTcmNMaW1pdHM6Om1pbigpKTsKKyAg
ICAgICAgICAgIFRFU1RfRVhQRUNURURfUkFOR0UoUkFOR0VfVkFMSUQsIHN0YXRpY19jYXN0PFNy
Yz4oLTEpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAg
IFRFU1RfRVhQRUNURURfRkFJTFVSRShjaGVja2VkX2RzdCAtIHN0YXRpY19jYXN0PFNyYz4oMSkp
OworICAgICAgICAgICAgVEVTVF9FWFBFQ1RFRF9SQU5HRShSQU5HRV9WQUxJRCwgU3JjTGltaXRz
OjptaW4oKSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRHN0
LCB0eXBlbmFtZSBTcmM+CitzdHJ1Y3QgVGVzdE51bWVyaWNDb252ZXJzaW9uPERzdCwgU3JjLCBT
SUdOX1RPX1VOU0lHTl9XSURFTl9PUl9FUVVBTD4KK3sKKyAgICBzdGF0aWMgdm9pZCBUZXN0KGNv
bnN0IGNoYXIgKmRzdCwgY29uc3QgY2hhciAqc3JjLCBpbnQgbGluZSkKKyAgICB7CisgICAgICAg
IHR5cGVkZWYgbnVtZXJpY19saW1pdHM8U3JjPiBTcmNMaW1pdHM7CisgICAgICAgIHR5cGVkZWYg
bnVtZXJpY19saW1pdHM8RHN0PiBEc3RMaW1pdHM7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6
ZW9mKERzdCkgPj0gc2l6ZW9mKFNyYyksCisgICAgICAgICAgICAgICAgICAgICAgIkRlc3RpbmF0
aW9uIG11c3QgYmUgZXF1YWwgb3Igd2lkZXIgdGhhbiBzb3VyY2UuIik7CisgICAgICAgIHN0YXRp
Y19hc3NlcnQoU3JjTGltaXRzOjppc19zaWduZWQsICJTb3VyY2UgbXVzdCBiZSBzaWduZWQiKTsK
KyAgICAgICAgc3RhdGljX2Fzc2VydCghRHN0TGltaXRzOjppc19zaWduZWQsICJEZXN0aW5hdGlv
biBtdXN0IGJlIHVuc2lnbmVkIik7CisKKyAgICAgICAgY29uc3QgQ2hlY2tlZE51bWVyaWM8RHN0
PiBjaGVja2VkX2RzdDsKKyAgICAgICAgVEVTVF9FWFBFQ1RFRF9WQUxVRShTcmNMaW1pdHM6Om1h
eCgpLCBjaGVja2VkX2RzdCArIFNyY0xpbWl0czo6bWF4KCkpOworICAgICAgICBURVNUX0VYUEVD
VEVEX0ZBSUxVUkUoY2hlY2tlZF9kc3QgKyBzdGF0aWNfY2FzdDxTcmM+KC0xKSk7CisgICAgICAg
IFRFU1RfRVhQRUNURURfRkFJTFVSRShjaGVja2VkX2RzdCArIC1TcmNMaW1pdHM6Om1heCgpKTsK
KworICAgICAgICBURVNUX0VYUEVDVEVEX1JBTkdFKFJBTkdFX1VOREVSRkxPVywgU3JjTGltaXRz
OjptaW4oKSk7CisgICAgICAgIFRFU1RfRVhQRUNURURfUkFOR0UoUkFOR0VfVkFMSUQsIFNyY0xp
bWl0czo6bWF4KCkpOworICAgICAgICBURVNUX0VYUEVDVEVEX1JBTkdFKFJBTkdFX1ZBTElELCBz
dGF0aWNfY2FzdDxTcmM+KDEpKTsKKyAgICAgICAgVEVTVF9FWFBFQ1RFRF9SQU5HRShSQU5HRV9V
TkRFUkZMT1csIHN0YXRpY19jYXN0PFNyYz4oLTEpKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgRHN0LCB0eXBlbmFtZSBTcmM+CitzdHJ1Y3QgVGVzdE51bWVyaWNDb252ZXJzaW9u
PERzdCwgU3JjLCBTSUdOX1RPX1VOU0lHTl9OQVJST1c+Cit7CisgICAgc3RhdGljIHZvaWQgVGVz
dChjb25zdCBjaGFyICpkc3QsIGNvbnN0IGNoYXIgKnNyYywgaW50IGxpbmUpCisgICAgeworICAg
ICAgICB0eXBlZGVmIG51bWVyaWNfbGltaXRzPFNyYz4gU3JjTGltaXRzOworICAgICAgICB0eXBl
ZGVmIG51bWVyaWNfbGltaXRzPERzdD4gRHN0TGltaXRzOworICAgICAgICBzdGF0aWNfYXNzZXJ0
KAorICAgICAgICAgICAgKERzdExpbWl0czo6aXNfaW50ZWdlciAmJiBTcmNMaW1pdHM6OmlzX2ll
YzU1OSkgfHwgKHNpemVvZihEc3QpIDwgc2l6ZW9mKFNyYykpLAorICAgICAgICAgICAgIkRlc3Rp
bmF0aW9uIG11c3QgYmUgbmFycm93ZXIgdGhhbiBzb3VyY2UuIik7CisgICAgICAgIHN0YXRpY19h
c3NlcnQoU3JjTGltaXRzOjppc19zaWduZWQsICJTb3VyY2UgbXVzdCBiZSBzaWduZWQuIik7Cisg
ICAgICAgIHN0YXRpY19hc3NlcnQoIURzdExpbWl0czo6aXNfc2lnbmVkLCAiRGVzdGluYXRpb24g
bXVzdCBiZSB1bnNpZ25lZC4iKTsKKworICAgICAgICBjb25zdCBDaGVja2VkTnVtZXJpYzxEc3Q+
IGNoZWNrZWRfZHN0OworICAgICAgICBURVNUX0VYUEVDVEVEX1ZBTFVFKDEsIGNoZWNrZWRfZHN0
ICsgc3RhdGljX2Nhc3Q8U3JjPigxKSk7CisgICAgICAgIFRFU1RfRVhQRUNURURfRkFJTFVSRShj
aGVja2VkX2RzdCArIFNyY0xpbWl0czo6bWF4KCkpOworICAgICAgICBURVNUX0VYUEVDVEVEX0ZB
SUxVUkUoY2hlY2tlZF9kc3QgKyBzdGF0aWNfY2FzdDxTcmM+KC0xKSk7CisgICAgICAgIFRFU1Rf
RVhQRUNURURfRkFJTFVSRShjaGVja2VkX2RzdCArIC1TcmNMaW1pdHM6Om1heCgpKTsKKworICAg
ICAgICBURVNUX0VYUEVDVEVEX1JBTkdFKFJBTkdFX09WRVJGTE9XLCBTcmNMaW1pdHM6Om1heCgp
KTsKKyAgICAgICAgVEVTVF9FWFBFQ1RFRF9SQU5HRShSQU5HRV9WQUxJRCwgc3RhdGljX2Nhc3Q8
U3JjPigxKSk7CisgICAgICAgIFRFU1RfRVhQRUNURURfUkFOR0UoUkFOR0VfVU5ERVJGTE9XLCBz
dGF0aWNfY2FzdDxTcmM+KC0xKSk7CisgICAgICAgIGlmIChTcmNMaW1pdHM6OmlzX2llYzU1OSkK
KyAgICAgICAgeworICAgICAgICAgICAgVEVTVF9FWFBFQ1RFRF9SQU5HRShSQU5HRV9VTkRFUkZM
T1csIFNyY0xpbWl0czo6bWF4KCkgKiAtMSk7CisgICAgICAgICAgICBURVNUX0VYUEVDVEVEX1JB
TkdFKFJBTkdFX09WRVJGTE9XLCBTcmNMaW1pdHM6OmluZmluaXR5KCkpOworICAgICAgICAgICAg
VEVTVF9FWFBFQ1RFRF9SQU5HRShSQU5HRV9VTkRFUkZMT1csIFNyY0xpbWl0czo6aW5maW5pdHko
KSAqIC0xKTsKKyAgICAgICAgICAgIFRFU1RfRVhQRUNURURfUkFOR0UoUkFOR0VfSU5WQUxJRCwg
U3JjTGltaXRzOjpxdWlldF9OYU4oKSk7CisgICAgICAgICAgICBpZiAoRHN0TGltaXRzOjppc19p
bnRlZ2VyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChTcmNMaW1pdHM6OmRp
Z2l0cyA8IERzdExpbWl0czo6ZGlnaXRzKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgVEVTVF9FWFBFQ1RFRF9SQU5HRShSQU5HRV9PVkVSRkxPVywgc3RhdGljX2Nhc3Q8
U3JjPihEc3RMaW1pdHM6Om1heCgpKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFRFU1RfRVhQ
RUNURURfUkFOR0UoUkFOR0VfVkFMSUQsIHN0YXRpY19jYXN0PFNyYz4oRHN0TGltaXRzOjptYXgo
KSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBURVNUX0VYUEVDVEVEX1JB
TkdFKFJBTkdFX1ZBTElELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8U3JjPihHZXRNYXhDb252ZXJ0aWJsZVRvRmxvYXQ8U3JjLCBEc3Q+KCkpKTsKKyAg
ICAgICAgICAgICAgICBURVNUX0VYUEVDVEVEX1JBTkdFKFJBTkdFX1ZBTElELCBzdGF0aWNfY2Fz
dDxTcmM+KERzdExpbWl0czo6bWluKCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIFRFU1RfRVhQRUNURURfUkFOR0UoUkFO
R0VfVU5ERVJGTE9XLCBTcmNMaW1pdHM6Om1pbigpKTsKKyAgICAgICAgfQorICAgIH0KK307CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBEc3QsIHR5cGVuYW1lIFNyYz4KK3N0cnVjdCBUZXN0TnVtZXJp
Y0NvbnZlcnNpb248RHN0LCBTcmMsIFVOU0lHTl9UT19TSUdOX05BUlJPV19PUl9FUVVBTD4KK3sK
KyAgICBzdGF0aWMgdm9pZCBUZXN0KGNvbnN0IGNoYXIgKmRzdCwgY29uc3QgY2hhciAqc3JjLCBp
bnQgbGluZSkKKyAgICB7CisgICAgICAgIHR5cGVkZWYgbnVtZXJpY19saW1pdHM8U3JjPiBTcmNM
aW1pdHM7CisgICAgICAgIHR5cGVkZWYgbnVtZXJpY19saW1pdHM8RHN0PiBEc3RMaW1pdHM7Cisg
ICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKERzdCkgPD0gc2l6ZW9mKFNyYyksCisgICAgICAg
ICAgICAgICAgICAgICAgIkRlc3RpbmF0aW9uIG11c3QgYmUgbmFycm93ZXIgb3IgZXF1YWwgdG8g
c291cmNlLiIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KCFTcmNMaW1pdHM6OmlzX3NpZ25lZCwg
IlNvdXJjZSBtdXN0IGJlIHVuc2lnbmVkLiIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KERzdExp
bWl0czo6aXNfc2lnbmVkLCAiRGVzdGluYXRpb24gbXVzdCBiZSBzaWduZWQuIik7CisKKyAgICAg
ICAgY29uc3QgQ2hlY2tlZE51bWVyaWM8RHN0PiBjaGVja2VkX2RzdDsKKyAgICAgICAgVEVTVF9F
WFBFQ1RFRF9WQUxVRSgxLCBjaGVja2VkX2RzdCArIHN0YXRpY19jYXN0PFNyYz4oMSkpOworICAg
ICAgICBURVNUX0VYUEVDVEVEX0ZBSUxVUkUoY2hlY2tlZF9kc3QgKyBTcmNMaW1pdHM6Om1heCgp
KTsKKyAgICAgICAgVEVTVF9FWFBFQ1RFRF9WQUxVRShTcmNMaW1pdHM6Om1pbigpLCBjaGVja2Vk
X2RzdCArIFNyY0xpbWl0czo6bWluKCkpOworCisgICAgICAgIFRFU1RfRVhQRUNURURfUkFOR0Uo
UkFOR0VfVkFMSUQsIFNyY0xpbWl0czo6bWluKCkpOworICAgICAgICBURVNUX0VYUEVDVEVEX1JB
TkdFKFJBTkdFX09WRVJGTE9XLCBTcmNMaW1pdHM6Om1heCgpKTsKKyAgICAgICAgVEVTVF9FWFBF
Q1RFRF9SQU5HRShSQU5HRV9WQUxJRCwgc3RhdGljX2Nhc3Q8U3JjPigxKSk7CisgICAgfQorfTsK
KworLy8gSGVscGVyIG1hY3JvIHRvIHdyYXAgZGlzcGxheWluZyB0aGUgY29udmVyc2lvbiB0eXBl
cyBhbmQgbGluZSBudW1iZXJzCisjZGVmaW5lIFRFU1RfTlVNRVJJQ19DT05WRVJTSU9OKGQsIHMs
IHQpIFRlc3ROdW1lcmljQ29udmVyc2lvbjxkLCBzLCB0Pjo6VGVzdCgjZCwgI3MsIF9fTElORV9f
KQorCitURVNUKFNhZmVOdW1lcmljcywgSW50TWluT3BlcmF0aW9ucykKK3sKKyAgICBURVNUX05V
TUVSSUNfQ09OVkVSU0lPTihpbnQ4X3QsIGludDhfdCwgU0lHTl9QUkVTRVJWSU5HX1ZBTFVFX1BS
RVNFUlZJTkcpOworICAgIFRFU1RfTlVNRVJJQ19DT05WRVJTSU9OKHVpbnQ4X3QsIHVpbnQ4X3Qs
IFNJR05fUFJFU0VSVklOR19WQUxVRV9QUkVTRVJWSU5HKTsKKworICAgIFRFU1RfTlVNRVJJQ19D
T05WRVJTSU9OKGludDhfdCwgaW50LCBTSUdOX1BSRVNFUlZJTkdfTkFSUk9XKTsKKyAgICBURVNU
X05VTUVSSUNfQ09OVkVSU0lPTih1aW50OF90LCB1bnNpZ25lZCBpbnQsIFNJR05fUFJFU0VSVklO
R19OQVJST1cpOworICAgIFRFU1RfTlVNRVJJQ19DT05WRVJTSU9OKGludDhfdCwgZmxvYXQsIFNJ
R05fUFJFU0VSVklOR19OQVJST1cpOworCisgICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJT04odWlu
dDhfdCwgaW50OF90LCBTSUdOX1RPX1VOU0lHTl9XSURFTl9PUl9FUVVBTCk7CisKKyAgICBURVNU
X05VTUVSSUNfQ09OVkVSU0lPTih1aW50OF90LCBpbnQsIFNJR05fVE9fVU5TSUdOX05BUlJPVyk7
CisgICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJT04odWludDhfdCwgaW50bWF4X3QsIFNJR05fVE9f
VU5TSUdOX05BUlJPVyk7CisgICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJT04odWludDhfdCwgZmxv
YXQsIFNJR05fVE9fVU5TSUdOX05BUlJPVyk7CisKKyAgICBURVNUX05VTUVSSUNfQ09OVkVSU0lP
TihpbnQ4X3QsIHVuc2lnbmVkIGludCwgVU5TSUdOX1RPX1NJR05fTkFSUk9XX09SX0VRVUFMKTsK
KyAgICBURVNUX05VTUVSSUNfQ09OVkVSU0lPTihpbnQ4X3QsIHVpbnRtYXhfdCwgVU5TSUdOX1RP
X1NJR05fTkFSUk9XX09SX0VRVUFMKTsKK30KKworVEVTVChTYWZlTnVtZXJpY3MsIEludE9wZXJh
dGlvbnMpCit7CisgICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJT04oaW50LCBpbnQsIFNJR05fUFJF
U0VSVklOR19WQUxVRV9QUkVTRVJWSU5HKTsKKyAgICBURVNUX05VTUVSSUNfQ09OVkVSU0lPTih1
bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCwgU0lHTl9QUkVTRVJWSU5HX1ZBTFVFX1BSRVNFUlZJ
TkcpOworICAgIFRFU1RfTlVNRVJJQ19DT05WRVJTSU9OKGludCwgaW50OF90LCBTSUdOX1BSRVNF
UlZJTkdfVkFMVUVfUFJFU0VSVklORyk7CisgICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJT04odW5z
aWduZWQgaW50LCB1aW50OF90LCBTSUdOX1BSRVNFUlZJTkdfVkFMVUVfUFJFU0VSVklORyk7Cisg
ICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJT04oaW50LCB1aW50OF90LCBTSUdOX1BSRVNFUlZJTkdf
VkFMVUVfUFJFU0VSVklORyk7CisKKyAgICBURVNUX05VTUVSSUNfQ09OVkVSU0lPTihpbnQsIGlu
dG1heF90LCBTSUdOX1BSRVNFUlZJTkdfTkFSUk9XKTsKKyAgICBURVNUX05VTUVSSUNfQ09OVkVS
U0lPTih1bnNpZ25lZCBpbnQsIHVpbnRtYXhfdCwgU0lHTl9QUkVTRVJWSU5HX05BUlJPVyk7Cisg
ICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJT04oaW50LCBmbG9hdCwgU0lHTl9QUkVTRVJWSU5HX05B
UlJPVyk7CisgICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJT04oaW50LCBkb3VibGUsIFNJR05fUFJF
U0VSVklOR19OQVJST1cpOworCisgICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJT04odW5zaWduZWQg
aW50LCBpbnQsIFNJR05fVE9fVU5TSUdOX1dJREVOX09SX0VRVUFMKTsKKyAgICBURVNUX05VTUVS
SUNfQ09OVkVSU0lPTih1bnNpZ25lZCBpbnQsIGludDhfdCwgU0lHTl9UT19VTlNJR05fV0lERU5f
T1JfRVFVQUwpOworCisgICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJT04odW5zaWduZWQgaW50LCBp
bnRtYXhfdCwgU0lHTl9UT19VTlNJR05fTkFSUk9XKTsKKyAgICBURVNUX05VTUVSSUNfQ09OVkVS
U0lPTih1bnNpZ25lZCBpbnQsIGZsb2F0LCBTSUdOX1RPX1VOU0lHTl9OQVJST1cpOworICAgIFRF
U1RfTlVNRVJJQ19DT05WRVJTSU9OKHVuc2lnbmVkIGludCwgZG91YmxlLCBTSUdOX1RPX1VOU0lH
Tl9OQVJST1cpOworCisgICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJT04oaW50LCB1bnNpZ25lZCBp
bnQsIFVOU0lHTl9UT19TSUdOX05BUlJPV19PUl9FUVVBTCk7CisgICAgVEVTVF9OVU1FUklDX0NP
TlZFUlNJT04oaW50LCB1aW50bWF4X3QsIFVOU0lHTl9UT19TSUdOX05BUlJPV19PUl9FUVVBTCk7
Cit9CisKK1RFU1QoU2FmZU51bWVyaWNzLCBJbnRNYXhPcGVyYXRpb25zKQoreworICAgIFRFU1Rf
TlVNRVJJQ19DT05WRVJTSU9OKGludG1heF90LCBpbnRtYXhfdCwgU0lHTl9QUkVTRVJWSU5HX1ZB
TFVFX1BSRVNFUlZJTkcpOworICAgIFRFU1RfTlVNRVJJQ19DT05WRVJTSU9OKHVpbnRtYXhfdCwg
dWludG1heF90LCBTSUdOX1BSRVNFUlZJTkdfVkFMVUVfUFJFU0VSVklORyk7CisgICAgVEVTVF9O
VU1FUklDX0NPTlZFUlNJT04oaW50bWF4X3QsIGludCwgU0lHTl9QUkVTRVJWSU5HX1ZBTFVFX1BS
RVNFUlZJTkcpOworICAgIFRFU1RfTlVNRVJJQ19DT05WRVJTSU9OKHVpbnRtYXhfdCwgdW5zaWdu
ZWQgaW50LCBTSUdOX1BSRVNFUlZJTkdfVkFMVUVfUFJFU0VSVklORyk7CisgICAgVEVTVF9OVU1F
UklDX0NPTlZFUlNJT04oaW50bWF4X3QsIHVuc2lnbmVkIGludCwgU0lHTl9QUkVTRVJWSU5HX1ZB
TFVFX1BSRVNFUlZJTkcpOworICAgIFRFU1RfTlVNRVJJQ19DT05WRVJTSU9OKGludG1heF90LCB1
aW50OF90LCBTSUdOX1BSRVNFUlZJTkdfVkFMVUVfUFJFU0VSVklORyk7CisKKyAgICBURVNUX05V
TUVSSUNfQ09OVkVSU0lPTihpbnRtYXhfdCwgZmxvYXQsIFNJR05fUFJFU0VSVklOR19OQVJST1cp
OworICAgIFRFU1RfTlVNRVJJQ19DT05WRVJTSU9OKGludG1heF90LCBkb3VibGUsIFNJR05fUFJF
U0VSVklOR19OQVJST1cpOworCisgICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJT04odWludG1heF90
LCBpbnQsIFNJR05fVE9fVU5TSUdOX1dJREVOX09SX0VRVUFMKTsKKyAgICBURVNUX05VTUVSSUNf
Q09OVkVSU0lPTih1aW50bWF4X3QsIGludDhfdCwgU0lHTl9UT19VTlNJR05fV0lERU5fT1JfRVFV
QUwpOworCisgICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJT04odWludG1heF90LCBmbG9hdCwgU0lH
Tl9UT19VTlNJR05fTkFSUk9XKTsKKyAgICBURVNUX05VTUVSSUNfQ09OVkVSU0lPTih1aW50bWF4
X3QsIGRvdWJsZSwgU0lHTl9UT19VTlNJR05fTkFSUk9XKTsKKworICAgIFRFU1RfTlVNRVJJQ19D
T05WRVJTSU9OKGludG1heF90LCB1aW50bWF4X3QsIFVOU0lHTl9UT19TSUdOX05BUlJPV19PUl9F
UVVBTCk7Cit9CisKK1RFU1QoU2FmZU51bWVyaWNzLCBGbG9hdE9wZXJhdGlvbnMpCit7CisgICAg
VEVTVF9OVU1FUklDX0NPTlZFUlNJT04oZmxvYXQsIGludG1heF90LCBTSUdOX1BSRVNFUlZJTkdf
VkFMVUVfUFJFU0VSVklORyk7CisgICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJT04oZmxvYXQsIHVp
bnRtYXhfdCwgU0lHTl9QUkVTRVJWSU5HX1ZBTFVFX1BSRVNFUlZJTkcpOworICAgIFRFU1RfTlVN
RVJJQ19DT05WRVJTSU9OKGZsb2F0LCBpbnQsIFNJR05fUFJFU0VSVklOR19WQUxVRV9QUkVTRVJW
SU5HKTsKKyAgICBURVNUX05VTUVSSUNfQ09OVkVSU0lPTihmbG9hdCwgdW5zaWduZWQgaW50LCBT
SUdOX1BSRVNFUlZJTkdfVkFMVUVfUFJFU0VSVklORyk7CisKKyAgICBURVNUX05VTUVSSUNfQ09O
VkVSU0lPTihmbG9hdCwgZG91YmxlLCBTSUdOX1BSRVNFUlZJTkdfTkFSUk9XKTsKK30KKworVEVT
VChTYWZlTnVtZXJpY3MsIERvdWJsZU9wZXJhdGlvbnMpCit7CisgICAgVEVTVF9OVU1FUklDX0NP
TlZFUlNJT04oZG91YmxlLCBpbnRtYXhfdCwgU0lHTl9QUkVTRVJWSU5HX1ZBTFVFX1BSRVNFUlZJ
TkcpOworICAgIFRFU1RfTlVNRVJJQ19DT05WRVJTSU9OKGRvdWJsZSwgdWludG1heF90LCBTSUdO
X1BSRVNFUlZJTkdfVkFMVUVfUFJFU0VSVklORyk7CisgICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJ
T04oZG91YmxlLCBpbnQsIFNJR05fUFJFU0VSVklOR19WQUxVRV9QUkVTRVJWSU5HKTsKKyAgICBU
RVNUX05VTUVSSUNfQ09OVkVSU0lPTihkb3VibGUsIHVuc2lnbmVkIGludCwgU0lHTl9QUkVTRVJW
SU5HX1ZBTFVFX1BSRVNFUlZJTkcpOworfQorCitURVNUKFNhZmVOdW1lcmljcywgU2l6ZVRPcGVy
YXRpb25zKQoreworICAgIFRFU1RfTlVNRVJJQ19DT05WRVJTSU9OKHNpemVfdCwgaW50LCBTSUdO
X1RPX1VOU0lHTl9XSURFTl9PUl9FUVVBTCk7CisgICAgVEVTVF9OVU1FUklDX0NPTlZFUlNJT04o
aW50LCBzaXplX3QsIFVOU0lHTl9UT19TSUdOX05BUlJPV19PUl9FUVVBTCk7Cit9CisKK1RFU1Qo
U2FmZU51bWVyaWNzLCBDYXN0VGVzdHMpCit7CisvLyBNU1ZDIGNhdGNoZXMgYW5kIHdhcm5zIHRo
YXQgd2UncmUgZm9yY2luZyBzYXR1cmF0aW9uIGluIHRoZXNlIHRlc3RzLgorLy8gU2luY2UgdGhh
dCdzIGludGVudGlvbmFsLCB3ZSBuZWVkIHRvIHNodXQgdGhpcyB3YXJuaW5nIG9mZi4KKyNpZiBk
ZWZpbmVkKENPTVBJTEVSX01TVkMpCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQ3NTYpCisj
ZW5kaWYKKworICAgIGludCBzbWFsbF9wb3NpdGl2ZSAgICAgID0gMTsKKyAgICBpbnQgc21hbGxf
bmVnYXRpdmUgICAgICA9IC0xOworICAgIGRvdWJsZSBkb3VibGVfc21hbGwgICAgID0gMS4wOwor
ICAgIGRvdWJsZSBkb3VibGVfbGFyZ2UgICAgID0gbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4
KCk7CisgICAgZG91YmxlIGRvdWJsZV9pbmZpbml0eSAgPSBudW1lcmljX2xpbWl0czxmbG9hdD46
OmluZmluaXR5KCk7CisgICAgZG91YmxlIGRvdWJsZV9sYXJnZV9pbnQgPSBudW1lcmljX2xpbWl0
czxpbnQ+OjptYXgoKTsKKyAgICBkb3VibGUgZG91YmxlX3NtYWxsX2ludCA9IG51bWVyaWNfbGlt
aXRzPGludD46Om1pbigpOworCisgICAgLy8gSnVzdCB0ZXN0IHRoYXQgdGhlIGNhc3RzIGNvbXBp
bGUsIHNpbmNlIHRoZSBvdGhlciB0ZXN0cyBjb3ZlciBsb2dpYy4KKyAgICBFWFBFQ1RfRVEoMCwg
Y2hlY2tlZF9jYXN0PGludD4oc3RhdGljX2Nhc3Q8c2l6ZV90PigwKSkpOworICAgIEVYUEVDVF9F
USgwLCBzdHJpY3RfY2FzdDxpbnQ+KHN0YXRpY19jYXN0PGNoYXI+KDApKSk7CisgICAgRVhQRUNU
X0VRKDAsIHN0cmljdF9jYXN0PGludD4oc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMCkpKTsK
KyAgICBFWFBFQ1RfRVEoMFUsIHN0cmljdF9jYXN0PHVuc2lnbmVkPihzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyPigwKSkpOworICAgIEVYUEVDVF9FUSgxVUxMLCBzdGF0aWNfY2FzdDx1aW50NjRf
dD4oU3RyaWN0TnVtZXJpYzxzaXplX3Q+KDFVKSkpOworICAgIEVYUEVDVF9FUSgxVUxMLCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4oU2l6ZVQoMVUpKSk7CisgICAgRVhQRUNUX0VRKDFVLCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KFN0cmljdE51bWVyaWM8dW5zaWduZWQ+KDFVKSkpOworCisgICAgRVhQRUNU
X1RSVUUoQ2hlY2tlZE51bWVyaWM8dWludDY0X3Q+KFN0cmljdE51bWVyaWM8dW5zaWduZWQ+KDFV
KSkuSXNWYWxpZCgpKTsKKyAgICBFWFBFQ1RfVFJVRShDaGVja2VkTnVtZXJpYzxpbnQ+KFN0cmlj
dE51bWVyaWM8dW5zaWduZWQ+KDFVKSkuSXNWYWxpZCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoQ2hl
Y2tlZE51bWVyaWM8dW5zaWduZWQ+KFN0cmljdE51bWVyaWM8aW50PigtMSkpLklzVmFsaWQoKSk7
CisKKyAgICBFWFBFQ1RfVFJVRShJc1ZhbHVlTmVnYXRpdmUoLTEpKTsKKyAgICBFWFBFQ1RfVFJV
RShJc1ZhbHVlTmVnYXRpdmUobnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCkpKTsKKyAgICBFWFBF
Q1RfRkFMU0UoSXNWYWx1ZU5lZ2F0aXZlKG51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWluKCkp
KTsKKyAgICBFWFBFQ1RfVFJVRShJc1ZhbHVlTmVnYXRpdmUoLW51bWVyaWNfbGltaXRzPGRvdWJs
ZT46Om1heCgpKSk7CisgICAgRVhQRUNUX0ZBTFNFKElzVmFsdWVOZWdhdGl2ZSgwKSk7CisgICAg
RVhQRUNUX0ZBTFNFKElzVmFsdWVOZWdhdGl2ZSgxKSk7CisgICAgRVhQRUNUX0ZBTFNFKElzVmFs
dWVOZWdhdGl2ZSgwdSkpOworICAgIEVYUEVDVF9GQUxTRShJc1ZhbHVlTmVnYXRpdmUoMXUpKTsK
KyAgICBFWFBFQ1RfRkFMU0UoSXNWYWx1ZU5lZ2F0aXZlKG51bWVyaWNfbGltaXRzPGludD46Om1h
eCgpKSk7CisgICAgRVhQRUNUX0ZBTFNFKElzVmFsdWVOZWdhdGl2ZShudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpKSk7CisgICAgRVhQRUNUX0ZBTFNFKElzVmFsdWVOZWdhdGl2ZShudW1l
cmljX2xpbWl0czxkb3VibGU+OjptYXgoKSkpOworCisgICAgLy8gVGhlc2UgY2FzdHMgYW5kIGNv
ZXJjaW9ucyB3aWxsIGZhaWwgdG8gY29tcGlsZToKKyAgICAvLyBFWFBFQ1RfRVEoMCwgc3RyaWN0
X2Nhc3Q8aW50PihzdGF0aWNfY2FzdDxzaXplX3Q+KDApKSk7CisgICAgLy8gRVhQRUNUX0VRKDAs
IHN0cmljdF9jYXN0PHNpemVfdD4oc3RhdGljX2Nhc3Q8aW50PigwKSkpOworICAgIC8vIEVYUEVD
VF9FUSgxVUxMLCBTdHJpY3ROdW1lcmljPHNpemVfdD4oMSkpOworICAgIC8vIEVYUEVDVF9FUSgx
LCBTdHJpY3ROdW1lcmljPHNpemVfdD4oMVUpKTsKKworICAgIC8vIFRlc3QgdmFyaW91cyBzYXR1
cmF0aW9uIGNvcm5lciBjYXNlcy4KKyAgICBFWFBFQ1RfRVEoc2F0dXJhdGVkX2Nhc3Q8aW50Pihz
bWFsbF9uZWdhdGl2ZSksIHN0YXRpY19jYXN0PGludD4oc21hbGxfbmVnYXRpdmUpKTsKKyAgICBF
WFBFQ1RfRVEoc2F0dXJhdGVkX2Nhc3Q8aW50PihzbWFsbF9wb3NpdGl2ZSksIHN0YXRpY19jYXN0
PGludD4oc21hbGxfcG9zaXRpdmUpKTsKKyAgICBFWFBFQ1RfRVEoc2F0dXJhdGVkX2Nhc3Q8dW5z
aWduZWQ+KHNtYWxsX25lZ2F0aXZlKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApKTsKKyAgICBF
WFBFQ1RfRVEoc2F0dXJhdGVkX2Nhc3Q8aW50Pihkb3VibGVfc21hbGwpLCBzdGF0aWNfY2FzdDxp
bnQ+KGRvdWJsZV9zbWFsbCkpOworICAgIEVYUEVDVF9FUShzYXR1cmF0ZWRfY2FzdDxpbnQ+KGRv
dWJsZV9sYXJnZSksIG51bWVyaWNfbGltaXRzPGludD46Om1heCgpKTsKKyAgICBFWFBFQ1RfRVEo
c2F0dXJhdGVkX2Nhc3Q8ZmxvYXQ+KGRvdWJsZV9sYXJnZSksIGRvdWJsZV9pbmZpbml0eSk7Cisg
ICAgRVhQRUNUX0VRKHNhdHVyYXRlZF9jYXN0PGZsb2F0PigtZG91YmxlX2xhcmdlKSwgLWRvdWJs
ZV9pbmZpbml0eSk7CisgICAgRVhQRUNUX0VRKG51bWVyaWNfbGltaXRzPGludD46Om1pbigpLCBz
YXR1cmF0ZWRfY2FzdDxpbnQ+KGRvdWJsZV9zbWFsbF9pbnQpKTsKKyAgICBFWFBFQ1RfRVEobnVt
ZXJpY19saW1pdHM8aW50Pjo6bWF4KCksIHNhdHVyYXRlZF9jYXN0PGludD4oZG91YmxlX2xhcmdl
X2ludCkpOworCisgICAgZmxvYXQgbm90X2FfbnVtYmVyID0KKyAgICAgICAgc3RkOjpudW1lcmlj
X2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgLSBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6
aW5maW5pdHkoKTsKKyAgICBFWFBFQ1RfVFJVRShzdGQ6OmlzbmFuKG5vdF9hX251bWJlcikpOwor
ICAgIEVYUEVDVF9FUSgwLCBzYXR1cmF0ZWRfY2FzdDxpbnQ+KG5vdF9hX251bWJlcikpOworfQor
CisjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKworVEVTVChTYWZlTnVtZXJpY3MsIFNhdHVyYXRl
ZENhc3RDaGVja3MpCit7CisgICAgZmxvYXQgbm90X2FfbnVtYmVyID0KKyAgICAgICAgc3RkOjpu
dW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkgLSBzdGQ6Om51bWVyaWNfbGltaXRzPGZs
b2F0Pjo6aW5maW5pdHkoKTsKKyAgICBFWFBFQ1RfVFJVRShzdGQ6OmlzbmFuKG5vdF9hX251bWJl
cikpOworICAgIEVYUEVDVF9ERUFUSCgoc2F0dXJhdGVkX2Nhc3Q8aW50LCBiYXNlOjpTYXR1cmF0
ZWRDYXN0TmFOQmVoYXZpb3JDaGVjaz4obm90X2FfbnVtYmVyKSksICIiKTsKK30KKworI2VuZGlm
ICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAorCitURVNUKFNhZmVOdW1lcmljcywgSXNWYWx1ZUlu
UmFuZ2VGb3JOdW1lcmljVHlwZSkKK3sKKyAgICBFWFBFQ1RfVFJVRShJc1ZhbHVlSW5SYW5nZUZv
ck51bWVyaWNUeXBlPHVpbnQzMl90PigwKSk7CisgICAgRVhQRUNUX1RSVUUoSXNWYWx1ZUluUmFu
Z2VGb3JOdW1lcmljVHlwZTx1aW50MzJfdD4oMSkpOworICAgIEVYUEVDVF9UUlVFKElzVmFsdWVJ
blJhbmdlRm9yTnVtZXJpY1R5cGU8dWludDMyX3Q+KDIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoSXNW
YWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlwZTx1aW50MzJfdD4oLTEpKTsKKyAgICBFWFBFQ1RfVFJV
RShJc1ZhbHVlSW5SYW5nZUZvck51bWVyaWNUeXBlPHVpbnQzMl90PigweGZmZmZmZmZmdSkpOwor
ICAgIEVYUEVDVF9UUlVFKElzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8dWludDMyX3Q+KFVJ
TlQ2NF9DKDB4ZmZmZmZmZmYpKSk7CisgICAgRVhQRUNUX0ZBTFNFKElzVmFsdWVJblJhbmdlRm9y
TnVtZXJpY1R5cGU8dWludDMyX3Q+KFVJTlQ2NF9DKDB4MTAwMDAwMDAwKSkpOworICAgIEVYUEVD
VF9GQUxTRShJc1ZhbHVlSW5SYW5nZUZvck51bWVyaWNUeXBlPHVpbnQzMl90PihVSU5UNjRfQygw
eDEwMDAwMDAwMSkpKTsKKyAgICBFWFBFQ1RfRkFMU0UoSXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmlj
VHlwZTx1aW50MzJfdD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoSXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlwZTx1aW50MzJfdD4oc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkpKTsKKworICAgIEVYUEVDVF9UUlVFKElz
VmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8aW50MzJfdD4oMCkpOworICAgIEVYUEVDVF9UUlVF
KElzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8aW50MzJfdD4oMSkpOworICAgIEVYUEVDVF9U
UlVFKElzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8aW50MzJfdD4oMikpOworICAgIEVYUEVD
VF9UUlVFKElzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8aW50MzJfdD4oLTEpKTsKKyAgICBF
WFBFQ1RfVFJVRShJc1ZhbHVlSW5SYW5nZUZvck51bWVyaWNUeXBlPGludDMyX3Q+KDB4N2ZmZmZm
ZmYpKTsKKyAgICBFWFBFQ1RfVFJVRShJc1ZhbHVlSW5SYW5nZUZvck51bWVyaWNUeXBlPGludDMy
X3Q+KDB4N2ZmZmZmZmZ1KSk7CisgICAgRVhQRUNUX0ZBTFNFKElzVmFsdWVJblJhbmdlRm9yTnVt
ZXJpY1R5cGU8aW50MzJfdD4oMHg4MDAwMDAwMHUpKTsKKyAgICBFWFBFQ1RfRkFMU0UoSXNWYWx1
ZUluUmFuZ2VGb3JOdW1lcmljVHlwZTxpbnQzMl90PigweGZmZmZmZmZmdSkpOworICAgIEVYUEVD
VF9GQUxTRShJc1ZhbHVlSW5SYW5nZUZvck51bWVyaWNUeXBlPGludDMyX3Q+KElOVDY0X0MoMHg4
MDAwMDAwMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0UoSXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlw
ZTxpbnQzMl90PihJTlQ2NF9DKDB4ZmZmZmZmZmYpKSk7CisgICAgRVhQRUNUX0ZBTFNFKElzVmFs
dWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8aW50MzJfdD4oSU5UNjRfQygweDEwMDAwMDAwMCkpKTsK
KyAgICBFWFBFQ1RfVFJVRShJc1ZhbHVlSW5SYW5nZUZvck51bWVyaWNUeXBlPGludDMyX3Q+KHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKSk7CisgICAgRVhQRUNUX1RSVUUoSXNW
YWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlwZTxpbnQzMl90PigKKyAgICAgICAgc3RhdGljX2Nhc3Q8
aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKElzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8aW50MzJfdD4oCisgICAgICAg
IHN0YXRpY19jYXN0PGludDY0X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigp
KSAtIDEpKTsKKyAgICBFWFBFQ1RfRkFMU0UoSXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlwZTxp
bnQzMl90PihzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkpOworCisgICAgRVhQ
RUNUX1RSVUUoSXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlwZTx1aW50NjRfdD4oMCkpOworICAg
IEVYUEVDVF9UUlVFKElzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8dWludDY0X3Q+KDEpKTsK
KyAgICBFWFBFQ1RfVFJVRShJc1ZhbHVlSW5SYW5nZUZvck51bWVyaWNUeXBlPHVpbnQ2NF90Pigy
KSk7CisgICAgRVhQRUNUX0ZBTFNFKElzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8dWludDY0
X3Q+KC0xKSk7CisgICAgRVhQRUNUX1RSVUUoSXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlwZTx1
aW50NjRfdD4oMHhmZmZmZmZmZnUpKTsKKyAgICBFWFBFQ1RfVFJVRShJc1ZhbHVlSW5SYW5nZUZv
ck51bWVyaWNUeXBlPHVpbnQ2NF90PihVSU5UNjRfQygweGZmZmZmZmZmKSkpOworICAgIEVYUEVD
VF9UUlVFKElzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8dWludDY0X3Q+KFVJTlQ2NF9DKDB4
MTAwMDAwMDAwKSkpOworICAgIEVYUEVDVF9UUlVFKElzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5
cGU8dWludDY0X3Q+KFVJTlQ2NF9DKDB4MTAwMDAwMDAxKSkpOworICAgIEVYUEVDVF9GQUxTRShJ
c1ZhbHVlSW5SYW5nZUZvck51bWVyaWNUeXBlPHVpbnQ2NF90PihzdGQ6Om51bWVyaWNfbGltaXRz
PGludDMyX3Q+OjptaW4oKSkpOworICAgIEVYUEVDVF9GQUxTRShJc1ZhbHVlSW5SYW5nZUZvck51
bWVyaWNUeXBlPHVpbnQ2NF90PihJTlQ2NF9DKC0xKSkpOworICAgIEVYUEVDVF9GQUxTRShJc1Zh
bHVlSW5SYW5nZUZvck51bWVyaWNUeXBlPHVpbnQ2NF90PihzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dDY0X3Q+OjptaW4oKSkpOworCisgICAgRVhQRUNUX1RSVUUoSXNWYWx1ZUluUmFuZ2VGb3JOdW1l
cmljVHlwZTxpbnQ2NF90PigwKSk7CisgICAgRVhQRUNUX1RSVUUoSXNWYWx1ZUluUmFuZ2VGb3JO
dW1lcmljVHlwZTxpbnQ2NF90PigxKSk7CisgICAgRVhQRUNUX1RSVUUoSXNWYWx1ZUluUmFuZ2VG
b3JOdW1lcmljVHlwZTxpbnQ2NF90PigyKSk7CisgICAgRVhQRUNUX1RSVUUoSXNWYWx1ZUluUmFu
Z2VGb3JOdW1lcmljVHlwZTxpbnQ2NF90PigtMSkpOworICAgIEVYUEVDVF9UUlVFKElzVmFsdWVJ
blJhbmdlRm9yTnVtZXJpY1R5cGU8aW50NjRfdD4oMHg3ZmZmZmZmZikpOworICAgIEVYUEVDVF9U
UlVFKElzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8aW50NjRfdD4oMHg3ZmZmZmZmZnUpKTsK
KyAgICBFWFBFQ1RfVFJVRShJc1ZhbHVlSW5SYW5nZUZvck51bWVyaWNUeXBlPGludDY0X3Q+KDB4
ODAwMDAwMDB1KSk7CisgICAgRVhQRUNUX1RSVUUoSXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlw
ZTxpbnQ2NF90PigweGZmZmZmZmZmdSkpOworICAgIEVYUEVDVF9UUlVFKElzVmFsdWVJblJhbmdl
Rm9yTnVtZXJpY1R5cGU8aW50NjRfdD4oSU5UNjRfQygweDgwMDAwMDAwKSkpOworICAgIEVYUEVD
VF9UUlVFKElzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8aW50NjRfdD4oSU5UNjRfQygweGZm
ZmZmZmZmKSkpOworICAgIEVYUEVDVF9UUlVFKElzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8
aW50NjRfdD4oSU5UNjRfQygweDEwMDAwMDAwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShJc1ZhbHVl
SW5SYW5nZUZvck51bWVyaWNUeXBlPGludDY0X3Q+KElOVDY0X0MoMHg3ZmZmZmZmZmZmZmZmZmZm
KSkpOworICAgIEVYUEVDVF9UUlVFKElzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8aW50NjRf
dD4oVUlOVDY0X0MoMHg3ZmZmZmZmZmZmZmZmZmZmKSkpOworICAgIEVYUEVDVF9GQUxTRShJc1Zh
bHVlSW5SYW5nZUZvck51bWVyaWNUeXBlPGludDY0X3Q+KFVJTlQ2NF9DKDB4ODAwMDAwMDAwMDAw
MDAwMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0UoSXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlwZTxp
bnQ2NF90PihVSU5UNjRfQygweGZmZmZmZmZmZmZmZmZmZmYpKSk7CisgICAgRVhQRUNUX1RSVUUo
SXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlwZTxpbnQ2NF90PihzdGQ6Om51bWVyaWNfbGltaXRz
PGludDMyX3Q+OjptaW4oKSkpOworICAgIEVYUEVDVF9UUlVFKElzVmFsdWVJblJhbmdlRm9yTnVt
ZXJpY1R5cGU8aW50NjRfdD4oCisgICAgICAgIHN0YXRpY19jYXN0PGludDY0X3Q+KHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKSkpOworICAgIEVYUEVDVF9UUlVFKElzVmFsdWVJ
blJhbmdlRm9yTnVtZXJpY1R5cGU8aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90
Pjo6bWluKCkpKTsKK30KKworVEVTVChTYWZlTnVtZXJpY3MsIENvbXBvdW5kTnVtZXJpY09wZXJh
dGlvbnMpCit7CisgICAgQ2hlY2tlZE51bWVyaWM8aW50PiBhID0gMTsKKyAgICBDaGVja2VkTnVt
ZXJpYzxpbnQ+IGIgPSAyOworICAgIENoZWNrZWROdW1lcmljPGludD4gYyA9IDM7CisgICAgQ2hl
Y2tlZE51bWVyaWM8aW50PiBkID0gNDsKKyAgICBhICs9IGI7CisgICAgRVhQRUNUX0VRKDMsIGEu
VmFsdWVPckRpZSgpKTsKKyAgICBhIC09IGM7CisgICAgRVhQRUNUX0VRKDAsIGEuVmFsdWVPckRp
ZSgpKTsKKyAgICBkIC89IGI7CisgICAgRVhQRUNUX0VRKDIsIGQuVmFsdWVPckRpZSgpKTsKKyAg
ICBkICo9IGQ7CisgICAgRVhQRUNUX0VRKDQsIGQuVmFsdWVPckRpZSgpKTsKKworICAgIENoZWNr
ZWROdW1lcmljPGludD4gdG9vX2xhcmdlID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgo
KTsKKyAgICBFWFBFQ1RfVFJVRSh0b29fbGFyZ2UuSXNWYWxpZCgpKTsKKyAgICB0b29fbGFyZ2Ug
Kz0gZDsKKyAgICBFWFBFQ1RfRkFMU0UodG9vX2xhcmdlLklzVmFsaWQoKSk7CisgICAgdG9vX2xh
cmdlIC09IGQ7CisgICAgRVhQRUNUX0ZBTFNFKHRvb19sYXJnZS5Jc1ZhbGlkKCkpOworICAgIHRv
b19sYXJnZSAvPSBkOworICAgIEVYUEVDVF9GQUxTRSh0b29fbGFyZ2UuSXNWYWxpZCgpKTsKK30K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vdXRpbGl0aWVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3V0aWxpdGll
cy5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21tb24vdXRpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDYgKzEyNyw3IEBACiAg
ICAgICBjYXNlIEdMX1NBTVBMRVJfM0Q6CiAgICAgICBjYXNlIEdMX1NBTVBMRVJfQ1VCRToKICAg
ICAgIGNhc2UgR0xfU0FNUExFUl8yRF9BUlJBWToKKyAgICAgIGNhc2UgR0xfU0FNUExFUl9FWFRF
Uk5BTF9PRVM6CiAgICAgICBjYXNlIEdMX0lOVF9TQU1QTEVSXzJEOgogICAgICAgY2FzZSBHTF9J
TlRfU0FNUExFUl8zRDoKICAgICAgIGNhc2UgR0xfSU5UX1NBTVBMRVJfQ1VCRToKQEAgLTMzNCw2
ICszMzUsNyBAQAogICAgICAgY2FzZSBHTF9TQU1QTEVSXzNEOgogICAgICAgY2FzZSBHTF9TQU1Q
TEVSX0NVQkU6CiAgICAgICBjYXNlIEdMX1NBTVBMRVJfMkRfQVJSQVk6CisgICAgICBjYXNlIEdM
X1NBTVBMRVJfRVhURVJOQUxfT0VTOgogICAgICAgY2FzZSBHTF9JTlRfU0FNUExFUl8yRDoKICAg
ICAgIGNhc2UgR0xfSU5UX1NBTVBMRVJfM0Q6CiAgICAgICBjYXNlIEdMX0lOVF9TQU1QTEVSX0NV
QkU6CkBAIC0zNjEsNiArMzYzLDkgQEAKICAgICAgIGNhc2UgR0xfU0FNUExFUl8yRF9TSEFET1c6
CiAgICAgICAgIHJldHVybiBHTF9URVhUVVJFXzJEOwogCisgICAgICBjYXNlIEdMX1NBTVBMRVJf
RVhURVJOQUxfT0VTOgorICAgICAgICAgIHJldHVybiBHTF9URVhUVVJFX0VYVEVSTkFMX09FUzsK
KwogICAgICAgY2FzZSBHTF9TQU1QTEVSX0NVQkU6CiAgICAgICBjYXNlIEdMX0lOVF9TQU1QTEVS
X0NVQkU6CiAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSX0NVQkU6CkBAIC02Mzks
NiArNjQ0LDI5IEBACiAgICAgcmV0dXJuIG5hbWUuc3Vic3RyKDAsIG9wZW4pOwogfQogCit0ZW1w
bGF0ZSA8PgorR0x1aW50IENvbnZlcnRUb0dMdWludChHTGZsb2F0IHBhcmFtKQoreworICAgIHJl
dHVybiB1aXJvdW5kPEdMdWludD4ocGFyYW0pOworfQorCit0ZW1wbGF0ZSA8PgorR0xpbnQgQ29u
dmVydFRvR0xpbnQoR0xmbG9hdCBwYXJhbSkKK3sKKyAgICByZXR1cm4gaXJvdW5kPEdMaW50Pihw
YXJhbSk7Cit9CisKK3RlbXBsYXRlIDw+CitHTGludCBDb252ZXJ0RnJvbUdMZmxvYXQoR0xmbG9h
dCBwYXJhbSkKK3sKKyAgICByZXR1cm4gaXJvdW5kPEdMaW50PihwYXJhbSk7Cit9Cit0ZW1wbGF0
ZSA8PgorR0x1aW50IENvbnZlcnRGcm9tR0xmbG9hdChHTGZsb2F0IHBhcmFtKQoreworICAgIHJl
dHVybiB1aXJvdW5kPEdMdWludD4ocGFyYW0pOworfQorCiB1bnNpZ25lZCBpbnQgUGFyc2VBbmRT
dHJpcEFycmF5SW5kZXgoc3RkOjpzdHJpbmcgKm5hbWUpCiB7CiAgICAgdW5zaWduZWQgaW50IHN1
YnNjcmlwdCA9IEdMX0lOVkFMSURfSU5ERVg7CkBAIC03MTAsNyArNzM4LDcgQEAKIHsKICAgICBy
ZXR1cm4gdGFyZ2V0ID09IEVHTF9HTF9SRU5ERVJCVUZGRVJfS0hSOwogfQotfQorfSAgLy8gbmFt
ZXNwYWNlIGVnbAogCiBuYW1lc3BhY2UgZWdsX2dsCiB7CkBAIC03NDgsNyArNzc2LDcgQEAKIHsK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0x1aW50PihyZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4oYnVmZmVyKSk7CiB9Ci19Cit9ICAvLyBuYW1lc3BhY2UgZWdsX2dsCiAKICNpZiAhZGVmaW5l
ZChBTkdMRV9FTkFCTEVfV0lORE9XU19TVE9SRSkKIHN0ZDo6c3RyaW5nIGdldFRlbXBQYXRoKCkK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vdXRpbGl0aWVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi91dGlsaXRpZXMu
aAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1v
bi91dGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsNzYgQEAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBvdXRUPiBvdXRUIGlyb3VuZChHTGZsb2F0IHZhbHVlKSB7IHJldHVybiBzdGF0
aWNfY2FzdDxvdXRUPih2YWx1ZSA+IDAuMGYgPyBmbG9vcih2YWx1ZSArIDAuNWYpIDogY2VpbCh2
YWx1ZSAtIDAuNWYpKTsgfQogdGVtcGxhdGUgPHR5cGVuYW1lIG91dFQ+IG91dFQgdWlyb3VuZChH
TGZsb2F0IHZhbHVlKSB7IHJldHVybiBzdGF0aWNfY2FzdDxvdXRUPih2YWx1ZSArIDAuNWYpOyB9
CiAKKy8vIEhlbHBlciBmb3IgY29udmVydGluZyBhcmJpdHJhcnkgR0wgdHlwZXMgdG8gb3RoZXIg
R0wgdHlwZXMgdXNlZCBpbiBxdWVyaWVzIGFuZCBzdGF0ZSBzZXR0aW5nCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgUGFyYW1UeXBlPgorR0x1aW50IENvbnZlcnRUb0dMdWludChQYXJhbVR5cGUgcGFyYW0p
Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMdWludD4ocGFyYW0pOworfQordGVtcGxhdGUg
PD4KK0dMdWludCBDb252ZXJ0VG9HTHVpbnQoR0xmbG9hdCBwYXJhbSk7CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBQYXJhbVR5cGU+CitHTGludCBDb252ZXJ0VG9HTGludChQYXJhbVR5cGUgcGFyYW0p
Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMaW50PihwYXJhbSk7Cit9Cit0ZW1wbGF0ZSA8
PgorR0xpbnQgQ29udmVydFRvR0xpbnQoR0xmbG9hdCBwYXJhbSk7CisKKy8vIFNhbWUgY29udmVy
c2lvbiBhcyB1aW50Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgUGFyYW1UeXBlPgorR0xlbnVtIENvbnZl
cnRUb0dMZW51bShQYXJhbVR5cGUgcGFyYW0pCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdM
ZW51bT4oQ29udmVydFRvR0x1aW50KHBhcmFtKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQ
YXJhbVR5cGU+CitHTGZsb2F0IENvbnZlcnRUb0dMZmxvYXQoUGFyYW1UeXBlIHBhcmFtKQorewor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTGZsb2F0PihwYXJhbSk7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBQYXJhbVR5cGU+CitQYXJhbVR5cGUgQ29udmVydEZyb21HTGZsb2F0KEdMZmxvYXQg
cGFyYW0pCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFBhcmFtVHlwZT4ocGFyYW0pOworfQor
dGVtcGxhdGUgPD4KK0dMaW50IENvbnZlcnRGcm9tR0xmbG9hdChHTGZsb2F0IHBhcmFtKTsKK3Rl
bXBsYXRlIDw+CitHTHVpbnQgQ29udmVydEZyb21HTGZsb2F0KEdMZmxvYXQgcGFyYW0pOworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgUGFyYW1UeXBlPgorUGFyYW1UeXBlIENvbnZlcnRGcm9tR0xlbnVt
KEdMZW51bSBwYXJhbSkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UGFyYW1UeXBlPihwYXJh
bSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQYXJhbVR5cGU+CitQYXJhbVR5cGUgQ29udmVy
dEZyb21HTHVpbnQoR0x1aW50IHBhcmFtKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxQYXJh
bVR5cGU+KHBhcmFtKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFBhcmFtVHlwZT4KK1BhcmFt
VHlwZSBDb252ZXJ0RnJvbUdMaW50KEdMaW50IHBhcmFtKQoreworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxQYXJhbVR5cGU+KHBhcmFtKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFBhcmFtVHlw
ZT4KK1BhcmFtVHlwZSBDb252ZXJ0RnJvbUdMYm9vbGVhbihHTGJvb2xlYW4gcGFyYW0pCit7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFBhcmFtVHlwZT4ocGFyYW0gPyBHTF9UUlVFIDogR0xfRkFM
U0UpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUGFyYW1UeXBlPgorUGFyYW1UeXBlIENvbnZl
cnRGcm9tR0xpbnQ2NChHTGludDY0IHBhcmFtKQoreworICAgIHJldHVybiBjbGFtcENhc3Q8UGFy
YW1UeXBlPihwYXJhbSk7Cit9CisKIHVuc2lnbmVkIGludCBQYXJzZUFuZFN0cmlwQXJyYXlJbmRl
eChzdGQ6OnN0cmluZyAqbmFtZSk7CiAKIH0gIC8vIG5hbWVzcGFjZSBnbApJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2Z1enovdHJhbnNsYXRvcl9mdXp6ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9mdXp6
L3RyYW5zbGF0b3JfZnV6emVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvZnV6ei90cmFuc2xhdG9yX2Z1enplci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxNjIgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyB0cmFuc2xhdG9yX2Z1
enplci5jcHA6IEEgbGliZnV6emVyIGZ1enplciBmb3IgdGhlIHNoYWRlciB0cmFuc2xhdG9yLgor
CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8dW5v
cmRlcmVkX21hcD4KKyNpbmNsdWRlIDxpb3N0cmVhbT4KKworI2luY2x1ZGUgImNvbXBpbGVyL3Ry
YW5zbGF0b3IvQ29tcGlsZXIuaCIKKyNpbmNsdWRlICJhbmdsZV9nbC5oIgorCitzdHJ1Y3QgVHJh
bnNsYXRvckNhY2hlS2V5Cit7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRyYW5zbGF0b3JD
YWNoZUtleSAmb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gdHlwZSA9PSBvdGhl
ci50eXBlICYmIHNwZWMgPT0gb3RoZXIuc3BlYyAmJiBvdXRwdXQgPT0gb3RoZXIub3V0cHV0Owor
ICAgIH0KKworICAgIHVpbnQzMl90IHR5cGUgICA9IDA7CisgICAgdWludDMyX3Qgc3BlYyAgID0g
MDsKKyAgICB1aW50MzJfdCBvdXRwdXQgPSAwOworfTsKKworbmFtZXNwYWNlIHN0ZAoreworCit0
ZW1wbGF0ZSA8Pgorc3RydWN0IGhhc2g8VHJhbnNsYXRvckNhY2hlS2V5PgoreworICAgIHN0ZDo6
c2l6ZV90IG9wZXJhdG9yKCkoY29uc3QgVHJhbnNsYXRvckNhY2hlS2V5ICZrKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIChoYXNoPHVpbnQzMl90PigpKGsudHlwZSkgPDwgMSkgXiAoaGFz
aDx1aW50MzJfdD4oKShrLnNwZWMpID4+IDEpIF4KKyAgICAgICAgICAgICAgIGhhc2g8dWludDMy
X3Q+KCkoay5vdXRwdXQpOworICAgIH0KK307Cit9ICAvLyBuYW1lc3BhY2Ugc3RkCisKK3N0YXRp
YyBzdGQ6OnVub3JkZXJlZF9tYXA8VHJhbnNsYXRvckNhY2hlS2V5LCBUQ29tcGlsZXIgKj4gdHJh
bnNsYXRvcnM7CisKK2V4dGVybiAiQyIgaW50IExMVk1GdXp6ZXJUZXN0T25lSW5wdXQoY29uc3Qg
dWludDhfdCAqZGF0YSwgc2l6ZV90IHNpemUpCit7CisgICAgLy8gUmVzZXJ2ZSBzb21lIHNpemUg
Zm9yIGZ1dHVyZSBjb21waWxlIG9wdGlvbnMKKyAgICBjb25zdCBzaXplX3Qga0hlYWRlclNpemUg
PSAxMjg7CisKKyAgICBpZiAoc2l6ZSA8PSBrSGVhZGVyU2l6ZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KKworICAgIC8vIE1ha2Ugc3VyZSB0aGUgcmVzdCBvZiBkYXRhIHdpbGwg
YmUgYSB2YWxpZCBDIHN0cmluZyBzbyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gY29weSBpdC4KKyAg
ICBpZiAoZGF0YVtzaXplIC0gMV0gIT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKworICAgIHVpbnQzMl90IHR5cGUgICAgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
MzJfdCAqPihkYXRhKTsKKyAgICB1aW50MzJfdCBzcGVjICAgID0gKnJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDMyX3QgKj4oZGF0YSArIDQpOworICAgIHVpbnQzMl90IG91dHB1dCAgPSAqcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCAqPihkYXRhICsgOCk7CisgICAgdWludDY0X3Qg
b3B0aW9ucyA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ2NF90ICo+KGRhdGEgKyAxMik7
CisKKyAgICBpZiAodHlwZSAhPSBHTF9GUkFHTUVOVF9TSEFERVIgJiYgdHlwZSAhPSBHTF9WRVJU
RVhfU0hBREVSKQorICAgIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKHNw
ZWMgIT0gU0hfR0xFUzJfU1BFQyAmJiB0eXBlICE9IFNIX1dFQkdMX1NQRUMgJiYgc3BlYyAhPSBT
SF9HTEVTM19TUEVDICYmCisgICAgICAgIHNwZWMgIT0gU0hfV0VCR0wyX1NQRUMpCisgICAgewor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gdmFs
aWRPdXRwdXRzOworICAgIHZhbGlkT3V0cHV0cy5wdXNoX2JhY2soU0hfRVNTTF9PVVRQVVQpOwor
ICAgIHZhbGlkT3V0cHV0cy5wdXNoX2JhY2soU0hfR0xTTF9DT01QQVRJQklMSVRZX09VVFBVVCk7
CisgICAgdmFsaWRPdXRwdXRzLnB1c2hfYmFjayhTSF9HTFNMXzEzMF9PVVRQVVQpOworICAgIHZh
bGlkT3V0cHV0cy5wdXNoX2JhY2soU0hfR0xTTF8xNDBfT1VUUFVUKTsKKyAgICB2YWxpZE91dHB1
dHMucHVzaF9iYWNrKFNIX0dMU0xfMTUwX0NPUkVfT1VUUFVUKTsKKyAgICB2YWxpZE91dHB1dHMu
cHVzaF9iYWNrKFNIX0dMU0xfMzMwX0NPUkVfT1VUUFVUKTsKKyAgICB2YWxpZE91dHB1dHMucHVz
aF9iYWNrKFNIX0dMU0xfNDAwX0NPUkVfT1VUUFVUKTsKKyAgICB2YWxpZE91dHB1dHMucHVzaF9i
YWNrKFNIX0dMU0xfNDEwX0NPUkVfT1VUUFVUKTsKKyAgICB2YWxpZE91dHB1dHMucHVzaF9iYWNr
KFNIX0dMU0xfNDIwX0NPUkVfT1VUUFVUKTsKKyAgICB2YWxpZE91dHB1dHMucHVzaF9iYWNrKFNI
X0dMU0xfNDMwX0NPUkVfT1VUUFVUKTsKKyAgICB2YWxpZE91dHB1dHMucHVzaF9iYWNrKFNIX0dM
U0xfNDQwX0NPUkVfT1VUUFVUKTsKKyAgICB2YWxpZE91dHB1dHMucHVzaF9iYWNrKFNIX0dMU0xf
NDUwX0NPUkVfT1VUUFVUKTsKKyAgICB2YWxpZE91dHB1dHMucHVzaF9iYWNrKFNIX0hMU0xfT1VU
UFVUKTsKKyAgICB2YWxpZE91dHB1dHMucHVzaF9iYWNrKFNIX0hMU0w5X09VVFBVVCk7CisgICAg
dmFsaWRPdXRwdXRzLnB1c2hfYmFjayhTSF9ITFNMMTFfT1VUUFVUKTsKKyAgICB2YWxpZE91dHB1
dHMucHVzaF9iYWNrKFNIX0hMU0xfM18wX09VVFBVVCk7CisgICAgdmFsaWRPdXRwdXRzLnB1c2hf
YmFjayhTSF9ITFNMXzRfMV9PVVRQVVQpOworICAgIHZhbGlkT3V0cHV0cy5wdXNoX2JhY2soU0hf
SExTTF80XzBfRkw5XzNfT1VUUFVUKTsKKyAgICBib29sIGZvdW5kID0gZmFsc2U7CisgICAgZm9y
IChhdXRvIHZhbGlkIDogdmFsaWRPdXRwdXRzKQorICAgIHsKKyAgICAgICAgZm91bmQgPSBmb3Vu
ZCB8fCAodmFsaWQgPT0gb3V0cHV0KTsKKyAgICB9CisgICAgaWYgKCFmb3VuZCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHNpemUgLT0ga0hlYWRlclNpemU7CisgICAg
ZGF0YSArPSBrSGVhZGVyU2l6ZTsKKworICAgIGlmICghU2hJbml0aWFsaXplKCkpCisgICAgewor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBUcmFuc2xhdG9yQ2FjaGVLZXkga2V5Owor
ICAgIGtleS50eXBlICAgPSB0eXBlOworICAgIGtleS5zcGVjICAgPSBzcGVjOworICAgIGtleS5v
dXRwdXQgPSBvdXRwdXQ7CisKKyAgICBpZiAodHJhbnNsYXRvcnMuZmluZChrZXkpID09IHRyYW5z
bGF0b3JzLmVuZCgpKQorICAgIHsKKyAgICAgICAgVENvbXBpbGVyICp0cmFuc2xhdG9yID0gQ29u
c3RydWN0Q29tcGlsZXIodHlwZSwgc3RhdGljX2Nhc3Q8U2hTaGFkZXJTcGVjPihzcGVjKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8U2hTaGFkZXJPdXRwdXQ+KG91dHB1dCkpOworCisgICAgICAgIGlmICghdHJhbnNsYXRvcikK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBT
aEJ1aWx0SW5SZXNvdXJjZXMgcmVzb3VyY2VzOworICAgICAgICBTaEluaXRCdWlsdEluUmVzb3Vy
Y2VzKCZyZXNvdXJjZXMpOworCisgICAgICAgIC8vIEVuYWJsZSBhbGwgdGhlIGV4dGVuc2lvbnMg
dG8gaGF2ZSBtb3JlIGNvdmVyYWdlCisgICAgICAgIHJlc291cmNlcy5PRVNfc3RhbmRhcmRfZGVy
aXZhdGl2ZXMgICAgICAgID0gMTsKKyAgICAgICAgcmVzb3VyY2VzLk9FU19FR0xfaW1hZ2VfZXh0
ZXJuYWwgICAgICAgICAgPSAxOworICAgICAgICByZXNvdXJjZXMuT0VTX0VHTF9pbWFnZV9leHRl
cm5hbF9lc3NsMyAgICA9IDE7CisgICAgICAgIHJlc291cmNlcy5OVl9FR0xfc3RyZWFtX2NvbnN1
bWVyX2V4dGVybmFsID0gMTsKKyAgICAgICAgcmVzb3VyY2VzLkFSQl90ZXh0dXJlX3JlY3Rhbmds
ZSAgICAgICAgICAgPSAxOworICAgICAgICByZXNvdXJjZXMuRVhUX2JsZW5kX2Z1bmNfZXh0ZW5k
ZWQgICAgICAgICA9IDE7CisgICAgICAgIHJlc291cmNlcy5FWFRfZHJhd19idWZmZXJzICAgICAg
ICAgICAgICAgID0gMTsKKyAgICAgICAgcmVzb3VyY2VzLkVYVF9mcmFnX2RlcHRoICAgICAgICAg
ICAgICAgICAgPSAxOworICAgICAgICByZXNvdXJjZXMuRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCAg
ICAgICAgICA9IDE7CisgICAgICAgIHJlc291cmNlcy5XRUJHTF9kZWJ1Z19zaGFkZXJfcHJlY2lz
aW9uICAgID0gMTsKKyAgICAgICAgcmVzb3VyY2VzLkVYVF9zaGFkZXJfZnJhbWVidWZmZXJfZmV0
Y2ggICAgPSAxOworICAgICAgICByZXNvdXJjZXMuTlZfc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNo
ICAgICA9IDE7CisgICAgICAgIHJlc291cmNlcy5BUk1fc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNo
ICAgID0gMTsKKworICAgICAgICBpZiAoIXRyYW5zbGF0b3ItPkluaXQocmVzb3VyY2VzKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgRGVsZXRlQ29tcGlsZXIodHJhbnNsYXRvcik7CisgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIHRyYW5zbGF0b3JzW2tleV0gPSB0
cmFuc2xhdG9yOworICAgIH0KKworICAgIFRDb21waWxlciAqdHJhbnNsYXRvciA9IHRyYW5zbGF0
b3JzW2tleV07CisKKyAgICBjb25zdCBjaGFyICpzaGFkZXJTdHJpbmdzW10gPSB7cmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyICo+KGRhdGEpfTsKKyAgICB0cmFuc2xhdG9yLT5jb21waWxlKHNo
YWRlclN0cmluZ3MsIDEsIG9wdGlvbnMpOworCisgICAgcmV0dXJuIDA7Cit9CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yLzY0Yml0LXRva2Vu
aXplci1zYWZldHkucGF0Y2gKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci82NGJpdC10b2tlbml6ZXItc2FmZXR5LnBhdGNoCShy
ZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
cHJlcHJvY2Vzc29yLzY0Yml0LXRva2VuaXplci1zYWZldHkucGF0Y2gJKHdvcmtpbmcgY29weSkK
QEAgLTEsMzEgKzEsNzkgQEAKK2RpZmYgLS1naXQgYS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29y
L1Rva2VuaXplci5jcHAgYi9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5jcHAK
K2luZGV4IDBkN2FkNTguLjVlZjBlNWUgMTAwNjQ0CiAtLS0gYS9zcmMvY29tcGlsZXIvcHJlcHJv
Y2Vzc29yL1Rva2VuaXplci5jcHAKICsrKyBiL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9r
ZW5pemVyLmNwcAotQEAgLTU2LDYgKzU2LDcgQEAgdHlwZWRlZiBpbnQxNl90IGZsZXhfaW50MTZf
dDsKLSB0eXBlZGVmIHVpbnQxNl90IGZsZXhfdWludDE2X3Q7Ci0gdHlwZWRlZiBpbnQzMl90IGZs
ZXhfaW50MzJfdDsKLSB0eXBlZGVmIHVpbnQzMl90IGZsZXhfdWludDMyX3Q7Ci0rdHlwZWRlZiB1
aW50NjRfdCBmbGV4X3VpbnQ2NF90OwotICNlbHNlCi0gdHlwZWRlZiBzaWduZWQgY2hhciBmbGV4
X2ludDhfdDsKLSB0eXBlZGVmIHNob3J0IGludCBmbGV4X2ludDE2X3Q7Ci1AQCAtMTc5LDYgKzE4
MCwxMSBAQCB0eXBlZGVmIHZvaWQqIHl5c2Nhbl90OwotIHR5cGVkZWYgc3RydWN0IHl5X2J1ZmZl
cl9zdGF0ZSAqWVlfQlVGRkVSX1NUQVRFOwotICNlbmRpZgotCi0rI2lmbmRlZiBZWV9UWVBFREVG
X1lZX1NJWkVfVAotKyNkZWZpbmUgWVlfVFlQRURFRl9ZWV9TSVpFX1QKLSt0eXBlZGVmIHNpemVf
dCB5eV9zaXplX3Q7Ci0rI2VuZGlmCi0rCi0gI2RlZmluZSBFT0JfQUNUX0NPTlRJTlVFX1NDQU4g
MAotICNkZWZpbmUgRU9CX0FDVF9FTkRfT0ZfRklMRSAxCi0gI2RlZmluZSBFT0JfQUNUX0xBU1Rf
TUFUQ0ggMgotQEAgLTM1Myw3ICszNTQsNyBAQCBzdGF0aWMgdm9pZCB5eV9mYXRhbF9lcnJvciAo
eXljb25zdCBjaGFyIG1zZ1tdICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKK0BAIC0xNzAzLDcgKzE3
MDMsNyBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAoeXlzY2FuX3QgeXlzY2FubmVy
KQorIAllbHNlCisgCQl7CisgCQkJaW50IG51bV90b19yZWFkID0KKy0JCQlZWV9DVVJSRU5UX0JV
RkZFUl9MVkFMVUUtPnl5X2J1Zl9zaXplIC0gbnVtYmVyX3RvX21vdmUgLSAxOworKwkJCXN0YXRp
Y19jYXN0PGludD4oWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9idWZfc2l6ZSAtIG51bWJl
cl90b19tb3ZlIC0gMSk7CisgCisgCQl3aGlsZSAoIG51bV90b19yZWFkIDw9IDAgKQorIAkJCXsg
LyogTm90IGVub3VnaCByb29tIGluIHRoZSBidWZmZXIgLSBncm93IGl0LiAqLworQEAgLTE3Mzcs
OCArMTczNyw4IEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCB5eXNj
YW5uZXIpCisgCisgCQkJeXlnLT55eV9jX2J1Zl9wID0gJmItPnl5X2NoX2J1Zlt5eV9jX2J1Zl9w
X29mZnNldF07CisgCistCQkJbnVtX3RvX3JlYWQgPSBZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUt
Pnl5X2J1Zl9zaXplIC0KKy0JCQkJCQludW1iZXJfdG9fbW92ZSAtIDE7CisrCQkJbnVtX3RvX3Jl
YWQgPSBzdGF0aWNfY2FzdDxpbnQ+KFlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfYnVmX3Np
emUgLQorKwkJCQkJCW51bWJlcl90b19tb3ZlIC0gMSk7CisgCisgCQkJfQorIAorQEAgLTE3NDYs
OCArMTc0NiwxMCBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAoeXlzY2FuX3QgeXlz
Y2FubmVyKQorIAkJCW51bV90b19yZWFkID0gWVlfUkVBRF9CVUZfU0laRTsKKyAKKyAJCS8qIFJl
YWQgaW4gbW9yZSBkYXRhLiAqLworKwkJeXlfc2l6ZV90IHJldCA9IDA7CisgCQlZWV9JTlBVVCgg
KCZZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2NoX2J1ZltudW1iZXJfdG9fbW92ZV0pLAor
LQkJCXl5Zy0+eXlfbl9jaGFycywgbnVtX3RvX3JlYWQgKTsKKysJCQlyZXQsIG51bV90b19yZWFk
ICk7CisrCQl5eWctPnl5X25fY2hhcnMgPSBzdGF0aWNfY2FzdDxpbnQ+KHJldCk7CisgCisgCQlZ
WV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X25fY2hhcnMgPSB5eWctPnl5X25fY2hhcnM7Cisg
CQl9CitAQCAtMTc3MywxMyArMTc3NSwxMyBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZl
ciAoeXlzY2FuX3QgeXlzY2FubmVyKQorIAorIAlpZiAoKGludCkgKHl5Zy0+eXlfbl9jaGFycyAr
IG51bWJlcl90b19tb3ZlKSA+IFlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfYnVmX3NpemUp
IHsKKyAJCS8qIEV4dGVuZCB0aGUgYXJyYXkgYnkgNTAlLCBwbHVzIHRoZSBudW1iZXIgd2UgcmVh
bGx5IG5lZWQuICovCistCQlpbnQgbmV3X3NpemUgPSB5eWctPnl5X25fY2hhcnMgKyBudW1iZXJf
dG9fbW92ZSArICh5eWctPnl5X25fY2hhcnMgPj4gMSk7CisrCQl5eV9zaXplX3QgbmV3X3NpemUg
PSB5eWctPnl5X25fY2hhcnMgKyBudW1iZXJfdG9fbW92ZSArICh5eWctPnl5X25fY2hhcnMgPj4g
MSk7CisgCQlZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2NoX2J1ZiA9IChjaGFyICopIHBw
cmVhbGxvYygodm9pZCAqKSBZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2NoX2J1ZixuZXdf
c2l6ZSAseXlzY2FubmVyICk7CisgCQlpZiAoICEgWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55
eV9jaF9idWYgKQorIAkJCVlZX0ZBVEFMX0VSUk9SKCAib3V0IG9mIGR5bmFtaWMgbWVtb3J5IGlu
IHl5X2dldF9uZXh0X2J1ZmZlcigpIiApOworIAl9CisgCistCXl5Zy0+eXlfbl9jaGFycyArPSBu
dW1iZXJfdG9fbW92ZTsKKysJeXlnLT55eV9uX2NoYXJzICs9IHN0YXRpY19jYXN0PGludD4obnVt
YmVyX3RvX21vdmUpOworIAlZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2NoX2J1Zlt5eWct
Pnl5X25fY2hhcnNdID0gWVlfRU5EX09GX0JVRkZFUl9DSEFSOworIAlZWV9DVVJSRU5UX0JVRkZF
Ul9MVkFMVUUtPnl5X2NoX2J1Zlt5eWctPnl5X25fY2hhcnMgKyAxXSA9IFlZX0VORF9PRl9CVUZG
RVJfQ0hBUjsKKyAKK0BAIC0yMTcxLDcgKzIxNzMsNyBAQCB2b2lkIHBwcG9wX2J1ZmZlcl9zdGF0
ZSAoeXlzY2FuX3QgeXlzY2FubmVyKQogICAqLwotICNkZWZpbmUgWVlfRE9fQkVGT1JFX0FDVElP
TiBcCi0gCXl5Zy0+eXl0ZXh0X3B0ciA9IHl5X2JwOyBcCi0tCXl5bGVuZyA9IChzaXplX3QpICh5
eV9jcCAtIHl5X2JwKTsgXAotKwl5eWxlbmcgPSAoeXlfc2l6ZV90KSAoeXlfY3AgLSB5eV9icCk7
IFwKLSAJeXlnLT55eV9ob2xkX2NoYXIgPSAqeXlfY3A7IFwKLSAJKnl5X2NwID0gJ1wwJzsgXAot
IAl5eWctPnl5X2NfYnVmX3AgPSB5eV9jcDsKKyBzdGF0aWMgdm9pZCBwcGVuc3VyZV9idWZmZXJf
c3RhY2sgKHl5c2Nhbl90IHl5c2Nhbm5lcikKKyB7CistCWludCBudW1fdG9fYWxsb2M7CisrCXl5
X3NpemVfdCBudW1fdG9fYWxsb2M7CisgICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChzdHJ1
Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKKyAKKyAJaWYgKCF5eWctPnl5X2J1ZmZlcl9zdGFjaykg
eworQEAgLTIyMzgsNyArMjI0MCw3IEBAIFlZX0JVRkZFUl9TVEFURSBwcF9zY2FuX2J1ZmZlciAg
KGNoYXIgKiBiYXNlLCB5eV9zaXplX3QgIHNpemUgLCB5eXNjYW5fdCB5eXNjYW5uCisgCWlmICgg
ISBiICkKKyAJCVlZX0ZBVEFMX0VSUk9SKCAib3V0IG9mIGR5bmFtaWMgbWVtb3J5IGluIHBwX3Nj
YW5fYnVmZmVyKCkiICk7CisgCistCWItPnl5X2J1Zl9zaXplID0gc2l6ZSAtIDI7CS8qICItIDIi
IHRvIHRha2UgY2FyZSBvZiBFT0IncyAqLworKwliLT55eV9idWZfc2l6ZSA9IHN0YXRpY19jYXN0
PGludD4oc2l6ZSAtIDIpOwkvKiAiLSAyIiB0byB0YWtlIGNhcmUgb2YgRU9CJ3MgKi8KKyAJYi0+
eXlfYnVmX3BvcyA9IGItPnl5X2NoX2J1ZiA9IGJhc2U7CisgCWItPnl5X2lzX291cl9idWZmZXIg
PSAwOworIAliLT55eV9pbnB1dF9maWxlID0gTlVMTDsKK0BAIC0yMjkzLDcgKzIyOTUsNyBAQCBZ
WV9CVUZGRVJfU1RBVEUgcHBfc2Nhbl9ieXRlcyAgKHl5Y29uc3QgY2hhciAqIHl5Ynl0ZXMsIGlu
dCAgX3l5Ynl0ZXNfbGVuICwgeXlzYworIAlpZiAoICEgYnVmICkKKyAJCVlZX0ZBVEFMX0VSUk9S
KCAib3V0IG9mIGR5bmFtaWMgbWVtb3J5IGluIHBwX3NjYW5fYnl0ZXMoKSIgKTsKKyAKKy0JZm9y
ICggaSA9IDA7IGkgPCBfeXlieXRlc19sZW47ICsraSApCisrCWZvciAoIGkgPSAwOyBpIDwgc3Rh
dGljX2Nhc3Q8eXlfc2l6ZV90PihfeXlieXRlc19sZW4pOyArK2kgKQorIAkJYnVmW2ldID0geXli
eXRlc1tpXTsKKyAKKyAJYnVmW195eWJ5dGVzX2xlbl0gPSBidWZbX3l5Ynl0ZXNfbGVuKzFdID0g
WVlfRU5EX09GX0JVRkZFUl9DSEFSOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9EaWFnbm9zdGljc0Jhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRGlhZ25v
c3RpY3NCYXNlLmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9EaWFnbm9zdGljc0Jhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00LDkgKzQsOSBAQAogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8v
CiAKLSNpbmNsdWRlICJEaWFnbm9zdGljc0Jhc2UuaCIKKyNpbmNsdWRlICJjb21waWxlci9wcmVw
cm9jZXNzb3IvRGlhZ25vc3RpY3NCYXNlLmgiCiAKLSNpbmNsdWRlIDxjYXNzZXJ0PgorI2luY2x1
ZGUgImNvbW1vbi9kZWJ1Zy5oIgogCiBuYW1lc3BhY2UgcHAKIHsKQEAgLTMxLDcgKzMxLDcgQEAK
ICAgICBpZiAoKGlkID4gUFBfV0FSTklOR19CRUdJTikgJiYgKGlkIDwgUFBfV0FSTklOR19FTkQp
KQogICAgICAgICByZXR1cm4gUFBfV0FSTklORzsKIAotICAgIGFzc2VydChmYWxzZSk7CisgICAg
VU5SRUFDSEFCTEUoKTsKICAgICByZXR1cm4gUFBfRVJST1I7CiB9CiAKQEAgLTc0LDYgKzc0LDgg
QEAKICAgICAgICAgcmV0dXJuICJwcmVkZWZpbmVkIG1hY3JvIHVuZGVmaW5lZCI7CiAgICAgICBj
YXNlIFBQX01BQ1JPX1VOVEVSTUlOQVRFRF9JTlZPQ0FUSU9OOgogICAgICAgICByZXR1cm4gInVu
dGVybWluYXRlZCBtYWNybyBpbnZvY2F0aW9uIjsKKyAgICAgIGNhc2UgUFBfTUFDUk9fVU5ERUZJ
TkVEX1dISUxFX0lOVk9LRUQ6CisgICAgICAgICAgcmV0dXJuICJtYWNybyB1bmRlZmluZWQgd2hp
bGUgYmVpbmcgaW52b2tlZCI7CiAgICAgICBjYXNlIFBQX01BQ1JPX1RPT19GRVdfQVJHUzoKICAg
ICAgICAgcmV0dXJuICJOb3QgZW5vdWdoIGFyZ3VtZW50cyBmb3IgbWFjcm8iOwogICAgICAgY2Fz
ZSBQUF9NQUNST19UT09fTUFOWV9BUkdTOgpAQCAtMTE1LDYgKzExNyw4IEBACiAgICAgICAgIHJl
dHVybiAiaW52YWxpZCBsaW5lIGRpcmVjdGl2ZSI7CiAgICAgICBjYXNlIFBQX05PTl9QUF9UT0tF
Tl9CRUZPUkVfRVhURU5TSU9OX0VTU0wzOgogICAgICAgICByZXR1cm4gImV4dGVuc2lvbiBkaXJl
Y3RpdmUgbXVzdCBvY2N1ciBiZWZvcmUgYW55IG5vbi1wcmVwcm9jZXNzb3IgdG9rZW5zIGluIEVT
U0wzIjsKKyAgICAgIGNhc2UgUFBfVU5ERUZJTkVEX1NISUZUOgorICAgICAgICAgIHJldHVybiAi
c2hpZnQgZXhwb25lbnQgaXMgbmVnYXRpdmUgb3IgdW5kZWZpbmVkIjsKICAgICAgIC8vIEVycm9y
cyBlbmQuCiAgICAgICAvLyBXYXJuaW5ncyBiZWdpbi4KICAgICAgIGNhc2UgUFBfRU9GX0lOX0RJ
UkVDVElWRToKQEAgLTEyOSw4ICsxMzMsOCBAQAogICAgICAgICByZXR1cm4gIm1hY3JvIG5hbWUg
d2l0aCBhIGRvdWJsZSB1bmRlcnNjb3JlIGlzIHJlc2VydmVkIC0gdW5pbnRlbnRlZCBiZWhhdmlv
ciBpcyBwb3NzaWJsZSI7CiAgICAgICAvLyBXYXJuaW5ncyBlbmQuCiAgICAgICBkZWZhdWx0Ogot
ICAgICAgICBhc3NlcnQoZmFsc2UpOwotICAgICAgICByZXR1cm4gIiI7CisgICAgICAgICAgVU5S
RUFDSEFCTEUoKTsKKyAgICAgICAgICByZXR1cm4gIiI7CiAgICAgfQogfQogCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpYWdub3N0aWNz
QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9wcmVwcm9jZXNzb3IvRGlhZ25vc3RpY3NCYXNlLmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRGlhZ25vc3Rp
Y3NCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICAgICAgICAgUFBfTUFD
Uk9fUFJFREVGSU5FRF9SRURFRklORUQsCiAgICAgICAgIFBQX01BQ1JPX1BSRURFRklORURfVU5E
RUZJTkVELAogICAgICAgICBQUF9NQUNST19VTlRFUk1JTkFURURfSU5WT0NBVElPTiwKKyAgICAg
ICAgUFBfTUFDUk9fVU5ERUZJTkVEX1dISUxFX0lOVk9LRUQsCiAgICAgICAgIFBQX01BQ1JPX1RP
T19GRVdfQVJHUywKICAgICAgICAgUFBfTUFDUk9fVE9PX01BTllfQVJHUywKICAgICAgICAgUFBf
TUFDUk9fRFVQTElDQVRFX1BBUkFNRVRFUl9OQU1FUywKQEAgLTY1LDYgKzY2LDcgQEAKICAgICAg
ICAgUFBfSU5WQUxJRF9GSUxFX05VTUJFUiwKICAgICAgICAgUFBfSU5WQUxJRF9MSU5FX0RJUkVD
VElWRSwKICAgICAgICAgUFBfTk9OX1BQX1RPS0VOX0JFRk9SRV9FWFRFTlNJT05fRVNTTDMsCisg
ICAgICAgIFBQX1VOREVGSU5FRF9TSElGVCwKICAgICAgICAgUFBfRVJST1JfRU5ELAogCiAgICAg
ICAgIFBQX1dBUk5JTkdfQkVHSU4sCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpcmVjdGl2ZUhhbmRsZXJCYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0Rp
cmVjdGl2ZUhhbmRsZXJCYXNlLmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9EaXJlY3RpdmVIYW5kbGVyQmFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBACiAvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgogLy8KIAotI2luY2x1ZGUgIkRpcmVjdGl2ZUhhbmRsZXJCYXNlLmgiCisjaW5j
bHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpcmVjdGl2ZUhhbmRsZXJCYXNlLmgiCiAKIG5h
bWVzcGFjZSBwcAogewpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3ByZXByb2Nlc3Nvci9EaXJlY3RpdmVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRGlyZWN0aXZlUGFyc2Vy
LmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3ByZXByb2Nlc3Nvci9EaXJlY3RpdmVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00LDE5ICs0LDE5IEBACiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KIAotI2lu
Y2x1ZGUgIkRpcmVjdGl2ZVBhcnNlci5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nv
ci9EaXJlY3RpdmVQYXJzZXIuaCIKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxj
YXNzZXJ0PgogI2luY2x1ZGUgPGNzdGRsaWI+CiAjaW5jbHVkZSA8c3N0cmVhbT4KIAotI2luY2x1
ZGUgIkRpYWdub3N0aWNzQmFzZS5oIgotI2luY2x1ZGUgIkRpcmVjdGl2ZUhhbmRsZXJCYXNlLmgi
Ci0jaW5jbHVkZSAiRXhwcmVzc2lvblBhcnNlci5oIgotI2luY2x1ZGUgIk1hY3JvRXhwYW5kZXIu
aCIKLSNpbmNsdWRlICJUb2tlbi5oIgotI2luY2x1ZGUgIlRva2VuaXplci5oIgorI2luY2x1ZGUg
ImNvbW1vbi9kZWJ1Zy5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9EaWFnbm9z
dGljc0Jhc2UuaCIKKyNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvRGlyZWN0aXZlSGFu
ZGxlckJhc2UuaCIKKyNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lvblBh
cnNlci5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9NYWNyb0V4cGFuZGVyLmgi
CisjaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmgiCisjaW5jbHVkZSAiY29t
cGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5oIgogCiBuYW1lc3BhY2UgewogZW51bSBEaXJl
Y3RpdmVUeXBlCkBAIC0xMTgsOCArMTE4LDggQEAKIAogYm9vbCBpc01hY3JvTmFtZVJlc2VydmVk
KGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKQogewotICAgIC8vIE5hbWVzIHByZWZpeGVkIHdpdGgg
IkdMXyIgYXJlIHJlc2VydmVkLgotICAgIHJldHVybiAobmFtZS5zdWJzdHIoMCwgMykgPT0gIkdM
XyIpOworICAgIC8vIE5hbWVzIHByZWZpeGVkIHdpdGggIkdMXyIgYW5kIHRoZSBuYW1lICJkZWZp
bmVkIiBhcmUgcmVzZXJ2ZWQuCisgICAgcmV0dXJuIG5hbWUgPT0gImRlZmluZWQiIHx8IChuYW1l
LnN1YnN0cigwLCAzKSA9PSAiR0xfIik7CiB9CiAKIGJvb2wgaGFzRG91YmxlVW5kZXJzY29yZXMo
Y29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpCkBAIC0xMzksNiArMTM5LDY2IEBACiBuYW1lc3BhY2Ug
cHAKIHsKIAorY2xhc3MgRGVmaW5lZFBhcnNlciA6IHB1YmxpYyBMZXhlcgoreworICBwdWJsaWM6
CisgICAgRGVmaW5lZFBhcnNlcihMZXhlciAqbGV4ZXIsIGNvbnN0IE1hY3JvU2V0ICptYWNyb1Nl
dCwgRGlhZ25vc3RpY3MgKmRpYWdub3N0aWNzKQorICAgICAgICA6IG1MZXhlcihsZXhlciksIG1N
YWNyb1NldChtYWNyb1NldCksIG1EaWFnbm9zdGljcyhkaWFnbm9zdGljcykKKyAgICB7CisgICAg
fQorCisgIHByb3RlY3RlZDoKKyAgICB2b2lkIGxleChUb2tlbiAqdG9rZW4pIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBjb25zdCBjaGFyIGtEZWZpbmVkW10gPSAiZGVmaW5lZCI7CisKKyAgICAg
ICAgbUxleGVyLT5sZXgodG9rZW4pOworICAgICAgICBpZiAodG9rZW4tPnR5cGUgIT0gVG9rZW46
OklERU5USUZJRVIpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICh0b2tlbi0+dGV4
dCAhPSBrRGVmaW5lZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBib29sIHBhcmVu
ID0gZmFsc2U7CisgICAgICAgIG1MZXhlci0+bGV4KHRva2VuKTsKKyAgICAgICAgaWYgKHRva2Vu
LT50eXBlID09ICcoJykKKyAgICAgICAgeworICAgICAgICAgICAgcGFyZW4gPSB0cnVlOworICAg
ICAgICAgICAgbUxleGVyLT5sZXgodG9rZW4pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRv
a2VuLT50eXBlICE9IFRva2VuOjpJREVOVElGSUVSKQorICAgICAgICB7CisgICAgICAgICAgICBt
RGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBfVU5FWFBFQ1RFRF9UT0tFTiwgdG9r
ZW4tPmxvY2F0aW9uLCB0b2tlbi0+dGV4dCk7CisgICAgICAgICAgICBza2lwVW50aWxFT0QobUxl
eGVyLCB0b2tlbik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgTWFj
cm9TZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtTWFjcm9TZXQtPmZpbmQodG9rZW4tPnRleHQp
OworICAgICAgICBzdGQ6OnN0cmluZyBleHByZXNzaW9uICAgICAgICA9IGl0ZXIgIT0gbU1hY3Jv
U2V0LT5lbmQoKSA/ICIxIiA6ICIwIjsKKworICAgICAgICBpZiAocGFyZW4pCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1MZXhlci0+bGV4KHRva2VuKTsKKyAgICAgICAgICAgIGlmICh0b2tlbi0+
dHlwZSAhPSAnKScpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbURpYWdub3N0aWNz
LT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX1VORVhQRUNURURfVE9LRU4sIHRva2VuLT5sb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi0+dGV4dCk7Cisg
ICAgICAgICAgICAgICAgc2tpcFVudGlsRU9EKG1MZXhlciwgdG9rZW4pOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFdlIGhh
dmUgYSB2YWxpZCBkZWZpbmVkIG9wZXJhdG9yLgorICAgICAgICAvLyBDb252ZXJ0IHRoZSBjdXJy
ZW50IHRva2VuIGludG8gYSBDT05TVF9JTlQgdG9rZW4uCisgICAgICAgIHRva2VuLT50eXBlID0g
VG9rZW46OkNPTlNUX0lOVDsKKyAgICAgICAgdG9rZW4tPnRleHQgPSBleHByZXNzaW9uOworICAg
IH0KKworICBwcml2YXRlOgorICAgIExleGVyICptTGV4ZXI7CisgICAgY29uc3QgTWFjcm9TZXQg
Km1NYWNyb1NldDsKKyAgICBEaWFnbm9zdGljcyAqbURpYWdub3N0aWNzOworfTsKKwogRGlyZWN0
aXZlUGFyc2VyOjpEaXJlY3RpdmVQYXJzZXIoVG9rZW5pemVyICp0b2tlbml6ZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBNYWNyb1NldCAqbWFjcm9TZXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEaWFnbm9zdGljcyAqZGlhZ25vc3RpY3MsCkBAIC0xODgs
NyArMjQ4LDcgQEAKIAogdm9pZCBEaXJlY3RpdmVQYXJzZXI6OnBhcnNlRGlyZWN0aXZlKFRva2Vu
ICp0b2tlbikKIHsKLSAgICBhc3NlcnQodG9rZW4tPnR5cGUgPT0gVG9rZW46OlBQX0hBU0gpOwor
ICAgIEFTU0VSVCh0b2tlbi0+dHlwZSA9PSBUb2tlbjo6UFBfSEFTSCk7CiAKICAgICBtVG9rZW5p
emVyLT5sZXgodG9rZW4pOwogICAgIGlmIChpc0VPRCh0b2tlbikpCkBAIC0yNTQsOCArMzE0LDgg
QEAKICAgICAgICAgcGFyc2VMaW5lKHRva2VuKTsKICAgICAgICAgYnJlYWs7CiAgICAgICBkZWZh
dWx0OgotICAgICAgICBhc3NlcnQoZmFsc2UpOwotICAgICAgICBicmVhazsKKyAgICAgICAgICBV
TlJFQUNIQUJMRSgpOworICAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIHNraXBVbnRpbEVP
RChtVG9rZW5pemVyLCB0b2tlbik7CkBAIC0yNjgsNyArMzI4LDcgQEAKIAogdm9pZCBEaXJlY3Rp
dmVQYXJzZXI6OnBhcnNlRGVmaW5lKFRva2VuICp0b2tlbikKIHsKLSAgICBhc3NlcnQoZ2V0RGly
ZWN0aXZlKHRva2VuKSA9PSBESVJFQ1RJVkVfREVGSU5FKTsKKyAgICBBU1NFUlQoZ2V0RGlyZWN0
aXZlKHRva2VuKSA9PSBESVJFQ1RJVkVfREVGSU5FKTsKIAogICAgIG1Ub2tlbml6ZXItPmxleCh0
b2tlbik7CiAgICAgaWYgKHRva2VuLT50eXBlICE9IFRva2VuOjpJREVOVElGSUVSKQpAQCAtMzY4
LDcgKzQyOCw3IEBACiAKIHZvaWQgRGlyZWN0aXZlUGFyc2VyOjpwYXJzZVVuZGVmKFRva2VuICp0
b2tlbikKIHsKLSAgICBhc3NlcnQoZ2V0RGlyZWN0aXZlKHRva2VuKSA9PSBESVJFQ1RJVkVfVU5E
RUYpOworICAgIEFTU0VSVChnZXREaXJlY3RpdmUodG9rZW4pID09IERJUkVDVElWRV9VTkRFRik7
CiAKICAgICBtVG9rZW5pemVyLT5sZXgodG9rZW4pOwogICAgIGlmICh0b2tlbi0+dHlwZSAhPSBU
b2tlbjo6SURFTlRJRklFUikKQEAgLTM4NSw3ICs0NDUsMTQgQEAKICAgICAgICAgewogICAgICAg
ICAgICAgbURpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX01BQ1JPX1BSRURFRklO
RURfVU5ERUZJTkVELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4tPmxv
Y2F0aW9uLCB0b2tlbi0+dGV4dCk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAg
ICAgICAgZWxzZSBpZiAoaXRlci0+c2Vjb25kLmV4cGFuc2lvbkNvdW50ID4gMCkKKyAgICAgICAg
eworICAgICAgICAgICAgbURpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX01BQ1JP
X1VOREVGSU5FRF9XSElMRV9JTlZPS0VELCB0b2tlbi0+bG9jYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0b2tlbi0+dGV4dCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CiAgICAgICAgICAgICBtTWFjcm9TZXQt
PmVyYXNlKGl0ZXIpOwpAQCAtNDAzLDI1ICs0NzAsMjUgQEAKIAogdm9pZCBEaXJlY3RpdmVQYXJz
ZXI6OnBhcnNlSWYoVG9rZW4gKnRva2VuKQogewotICAgIGFzc2VydChnZXREaXJlY3RpdmUodG9r
ZW4pID09IERJUkVDVElWRV9JRik7CisgICAgQVNTRVJUKGdldERpcmVjdGl2ZSh0b2tlbikgPT0g
RElSRUNUSVZFX0lGKTsKICAgICBwYXJzZUNvbmRpdGlvbmFsSWYodG9rZW4pOwogfQogCiB2b2lk
IERpcmVjdGl2ZVBhcnNlcjo6cGFyc2VJZmRlZihUb2tlbiAqdG9rZW4pCiB7Ci0gICAgYXNzZXJ0
KGdldERpcmVjdGl2ZSh0b2tlbikgPT0gRElSRUNUSVZFX0lGREVGKTsKKyAgICBBU1NFUlQoZ2V0
RGlyZWN0aXZlKHRva2VuKSA9PSBESVJFQ1RJVkVfSUZERUYpOwogICAgIHBhcnNlQ29uZGl0aW9u
YWxJZih0b2tlbik7CiB9CiAKIHZvaWQgRGlyZWN0aXZlUGFyc2VyOjpwYXJzZUlmbmRlZihUb2tl
biAqdG9rZW4pCiB7Ci0gICAgYXNzZXJ0KGdldERpcmVjdGl2ZSh0b2tlbikgPT0gRElSRUNUSVZF
X0lGTkRFRik7CisgICAgQVNTRVJUKGdldERpcmVjdGl2ZSh0b2tlbikgPT0gRElSRUNUSVZFX0lG
TkRFRik7CiAgICAgcGFyc2VDb25kaXRpb25hbElmKHRva2VuKTsKIH0KIAogdm9pZCBEaXJlY3Rp
dmVQYXJzZXI6OnBhcnNlRWxzZShUb2tlbiAqdG9rZW4pCiB7Ci0gICAgYXNzZXJ0KGdldERpcmVj
dGl2ZSh0b2tlbikgPT0gRElSRUNUSVZFX0VMU0UpOworICAgIEFTU0VSVChnZXREaXJlY3RpdmUo
dG9rZW4pID09IERJUkVDVElWRV9FTFNFKTsKIAogICAgIGlmIChtQ29uZGl0aW9uYWxTdGFjay5l
bXB0eSgpKQogICAgIHsKQEAgLTQ2Miw3ICs1MjksNyBAQAogCiB2b2lkIERpcmVjdGl2ZVBhcnNl
cjo6cGFyc2VFbGlmKFRva2VuICp0b2tlbikKIHsKLSAgICBhc3NlcnQoZ2V0RGlyZWN0aXZlKHRv
a2VuKSA9PSBESVJFQ1RJVkVfRUxJRik7CisgICAgQVNTRVJUKGdldERpcmVjdGl2ZSh0b2tlbikg
PT0gRElSRUNUSVZFX0VMSUYpOwogCiAgICAgaWYgKG1Db25kaXRpb25hbFN0YWNrLmVtcHR5KCkp
CiAgICAgewpAQCAtNTAyLDcgKzU2OSw3IEBACiAKIHZvaWQgRGlyZWN0aXZlUGFyc2VyOjpwYXJz
ZUVuZGlmKFRva2VuICp0b2tlbikKIHsKLSAgICBhc3NlcnQoZ2V0RGlyZWN0aXZlKHRva2VuKSA9
PSBESVJFQ1RJVkVfRU5ESUYpOworICAgIEFTU0VSVChnZXREaXJlY3RpdmUodG9rZW4pID09IERJ
UkVDVElWRV9FTkRJRik7CiAKICAgICBpZiAobUNvbmRpdGlvbmFsU3RhY2suZW1wdHkoKSkKICAg
ICB7CkBAIC01MjYsNyArNTkzLDcgQEAKIAogdm9pZCBEaXJlY3RpdmVQYXJzZXI6OnBhcnNlRXJy
b3IoVG9rZW4gKnRva2VuKQogewotICAgIGFzc2VydChnZXREaXJlY3RpdmUodG9rZW4pID09IERJ
UkVDVElWRV9FUlJPUik7CisgICAgQVNTRVJUKGdldERpcmVjdGl2ZSh0b2tlbikgPT0gRElSRUNU
SVZFX0VSUk9SKTsKIAogICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBzdHJlYW07CiAgICAgbVRva2Vu
aXplci0+bGV4KHRva2VuKTsKQEAgLTU0MSw3ICs2MDgsNyBAQAogLy8gUGFyc2VzIHByYWdtYSBv
ZiBmb3JtOiAjcHJhZ21hIG5hbWVbKHZhbHVlKV0uCiB2b2lkIERpcmVjdGl2ZVBhcnNlcjo6cGFy
c2VQcmFnbWEoVG9rZW4gKnRva2VuKQogewotICAgIGFzc2VydChnZXREaXJlY3RpdmUodG9rZW4p
ID09IERJUkVDVElWRV9QUkFHTUEpOworICAgIEFTU0VSVChnZXREaXJlY3RpdmUodG9rZW4pID09
IERJUkVDVElWRV9QUkFHTUEpOwogCiAgICAgZW51bSBTdGF0ZQogICAgIHsKQEAgLTYwMiw3ICs2
NjksNyBAQAogCiB2b2lkIERpcmVjdGl2ZVBhcnNlcjo6cGFyc2VFeHRlbnNpb24oVG9rZW4gKnRv
a2VuKQogewotICAgIGFzc2VydChnZXREaXJlY3RpdmUodG9rZW4pID09IERJUkVDVElWRV9FWFRF
TlNJT04pOworICAgIEFTU0VSVChnZXREaXJlY3RpdmUodG9rZW4pID09IERJUkVDVElWRV9FWFRF
TlNJT04pOwogCiAgICAgZW51bSBTdGF0ZQogICAgIHsKQEAgLTY4Myw3ICs3NTAsNyBAQAogCiB2
b2lkIERpcmVjdGl2ZVBhcnNlcjo6cGFyc2VWZXJzaW9uKFRva2VuICp0b2tlbikKIHsKLSAgICBh
c3NlcnQoZ2V0RGlyZWN0aXZlKHRva2VuKSA9PSBESVJFQ1RJVkVfVkVSU0lPTik7CisgICAgQVNT
RVJUKGdldERpcmVjdGl2ZSh0b2tlbikgPT0gRElSRUNUSVZFX1ZFUlNJT04pOwogCiAgICAgaWYg
KG1QYXN0Rmlyc3RTdGF0ZW1lbnQpCiAgICAgewpAQCAtNzcwLDEzICs4MzcsMTMgQEAKIAogdm9p
ZCBEaXJlY3RpdmVQYXJzZXI6OnBhcnNlTGluZShUb2tlbiAqdG9rZW4pCiB7Ci0gICAgYXNzZXJ0
KGdldERpcmVjdGl2ZSh0b2tlbikgPT0gRElSRUNUSVZFX0xJTkUpOworICAgIEFTU0VSVChnZXRE
aXJlY3RpdmUodG9rZW4pID09IERJUkVDVElWRV9MSU5FKTsKIAogICAgIGJvb2wgdmFsaWQgPSB0
cnVlOwogICAgIGJvb2wgcGFyc2VkRmlsZU51bWJlciA9IGZhbHNlOwogICAgIGludCBsaW5lID0g
MCwgZmlsZSA9IDA7CiAKLSAgICBNYWNyb0V4cGFuZGVyIG1hY3JvRXhwYW5kZXIobVRva2VuaXpl
ciwgbU1hY3JvU2V0LCBtRGlhZ25vc3RpY3MsIGZhbHNlKTsKKyAgICBNYWNyb0V4cGFuZGVyIG1h
Y3JvRXhwYW5kZXIobVRva2VuaXplciwgbU1hY3JvU2V0LCBtRGlhZ25vc3RpY3MpOwogCiAgICAg
Ly8gTGV4IHRoZSBmaXJzdCB0b2tlbiBhZnRlciAiI2xpbmUiIHNvIHdlIGNhbiBjaGVjayBpdCBm
b3IgRU9ELgogICAgIG1hY3JvRXhwYW5kZXIubGV4KHRva2VuKTsKQEAgLTg3MSw4ICs5MzgsOCBA
QAogICAgICAgICAgICAgZXhwcmVzc2lvbiA9IHBhcnNlRXhwcmVzc2lvbklmZGVmKHRva2VuKSA9
PSAwID8gMSA6IDA7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgYXNzZXJ0KGZhbHNlKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBibG9jay5za2lwR3JvdXAgPSBleHByZXNzaW9uID09IDA7CiAgICAgICAgIGJsb2NrLmZvdW5k
VmFsaWRHcm91cCA9IGV4cHJlc3Npb24gIT0gMDsKQEAgLTg4MiwxMCArOTQ5LDEwIEBACiAKIGlu
dCBEaXJlY3RpdmVQYXJzZXI6OnBhcnNlRXhwcmVzc2lvbklmKFRva2VuICp0b2tlbikKIHsKLSAg
ICBhc3NlcnQoKGdldERpcmVjdGl2ZSh0b2tlbikgPT0gRElSRUNUSVZFX0lGKSB8fAotICAgICAg
ICAgICAoZ2V0RGlyZWN0aXZlKHRva2VuKSA9PSBESVJFQ1RJVkVfRUxJRikpOworICAgIEFTU0VS
VCgoZ2V0RGlyZWN0aXZlKHRva2VuKSA9PSBESVJFQ1RJVkVfSUYpIHx8IChnZXREaXJlY3RpdmUo
dG9rZW4pID09IERJUkVDVElWRV9FTElGKSk7CiAKLSAgICBNYWNyb0V4cGFuZGVyIG1hY3JvRXhw
YW5kZXIobVRva2VuaXplciwgbU1hY3JvU2V0LCBtRGlhZ25vc3RpY3MsIHRydWUpOworICAgIERl
ZmluZWRQYXJzZXIgZGVmaW5lZFBhcnNlcihtVG9rZW5pemVyLCBtTWFjcm9TZXQsIG1EaWFnbm9z
dGljcyk7CisgICAgTWFjcm9FeHBhbmRlciBtYWNyb0V4cGFuZGVyKCZkZWZpbmVkUGFyc2VyLCBt
TWFjcm9TZXQsIG1EaWFnbm9zdGljcyk7CiAgICAgRXhwcmVzc2lvblBhcnNlciBleHByZXNzaW9u
UGFyc2VyKCZtYWNyb0V4cGFuZGVyLCBtRGlhZ25vc3RpY3MpOwogCiAgICAgaW50IGV4cHJlc3Np
b24gPSAwOwpAQCAtOTA5LDggKzk3Niw3IEBACiAKIGludCBEaXJlY3RpdmVQYXJzZXI6OnBhcnNl
RXhwcmVzc2lvbklmZGVmKFRva2VuICp0b2tlbikKIHsKLSAgICBhc3NlcnQoKGdldERpcmVjdGl2
ZSh0b2tlbikgPT0gRElSRUNUSVZFX0lGREVGKSB8fAotICAgICAgICAgICAoZ2V0RGlyZWN0aXZl
KHRva2VuKSA9PSBESVJFQ1RJVkVfSUZOREVGKSk7CisgICAgQVNTRVJUKChnZXREaXJlY3RpdmUo
dG9rZW4pID09IERJUkVDVElWRV9JRkRFRikgfHwgKGdldERpcmVjdGl2ZSh0b2tlbikgPT0gRElS
RUNUSVZFX0lGTkRFRikpOwogCiAgICAgbVRva2VuaXplci0+bGV4KHRva2VuKTsKICAgICBpZiAo
dG9rZW4tPnR5cGUgIT0gVG9rZW46OklERU5USUZJRVIpCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpcmVjdGl2ZVBhcnNlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNz
b3IvRGlyZWN0aXZlUGFyc2VyLmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRGlyZWN0aXZlUGFyc2VyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTcsMTAgKzcsOSBAQAogI2lmbmRlZiBDT01QSUxFUl9QUkVQUk9DRVNT
T1JfRElSRUNUSVZFUEFSU0VSX0hfCiAjZGVmaW5lIENPTVBJTEVSX1BSRVBST0NFU1NPUl9ESVJF
Q1RJVkVQQVJTRVJfSF8KIAotI2luY2x1ZGUgIkxleGVyLmgiCi0jaW5jbHVkZSAiTWFjcm8uaCIK
LSNpbmNsdWRlICJwcF91dGlscy5oIgotI2luY2x1ZGUgIlNvdXJjZUxvY2F0aW9uLmgiCisjaW5j
bHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL0xleGVyLmgiCisjaW5jbHVkZSAiY29tcGlsZXIv
cHJlcHJvY2Vzc29yL01hY3JvLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Nv
dXJjZUxvY2F0aW9uLmgiCiAKIG5hbWVzcGFjZSBwcAogewpAQCAtMzAsNyArMjksNiBAQAogICAg
IHZvaWQgbGV4KFRva2VuICp0b2tlbikgb3ZlcnJpZGU7CiAKICAgcHJpdmF0ZToKLSAgICBQUF9E
SVNBTExPV19DT1BZX0FORF9BU1NJR04oRGlyZWN0aXZlUGFyc2VyKTsKIAogICAgIHZvaWQgcGFy
c2VEaXJlY3RpdmUoVG9rZW4gKnRva2VuKTsKICAgICB2b2lkIHBhcnNlRGVmaW5lKFRva2VuICp0
b2tlbik7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJv
Y2Vzc29yL0V4cHJlc3Npb25QYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lvblBhcnNlci5jcHAJ
KHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lvblBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
MSwxNyArMTAxLDE1IEBACiAKICNpbmNsdWRlIDxjYXNzZXJ0PgogI2luY2x1ZGUgPHNzdHJlYW0+
CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAKICNpbmNsdWRlICJEaWFnbm9zdGljc0Jhc2UuaCIKICNp
bmNsdWRlICJMZXhlci5oIgogI2luY2x1ZGUgIlRva2VuLmgiCisjaW5jbHVkZSAiY29tbW9uL21h
dGh1dGlsLmgiCiAKLSNpZiBkZWZpbmVkKF9NU0NfVkVSKQotdHlwZWRlZiBfX2ludDY0IFlZU1RZ
UEU7Ci0jZWxzZQotI2luY2x1ZGUgPHN0ZGludC5oPgotdHlwZWRlZiBpbnRtYXhfdCBZWVNUWVBF
OwotI2VuZGlmICAvLyBfTVNDX1ZFUgordHlwZWRlZiBpbnQzMl90IFlZU1RZUEU7Cit0eXBlZGVm
IHVpbnQzMl90IFVOU0lHTkVEX1RZUEU7CiAKICNkZWZpbmUgWVlFTkFCTEVfTkxTIDAKICNkZWZp
bmUgWVlMVFlQRV9JU19UUklWSUFMIDEKQEAgLTUwMiw5ICs1MDAsOSBAQAogICAvKiBZWVJMSU5F
W1lZTl0gLS0gU291cmNlIGxpbmUgd2hlcmUgcnVsZSBudW1iZXIgWVlOIHdhcyBkZWZpbmVkLiAg
Ki8KIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDE2IHl5cmxpbmVbXSA9CiB7Ci0gICAgICAgMCwg
ICAxMTAsICAgMTEwLCAgIDExNywgICAxMTgsICAgMTI5LCAgIDEyOSwgICAxNTAsICAgMTUwLCAg
IDE3MSwKLSAgICAgMTc0LCAgIDE3NywgICAxODAsICAgMTgzLCAgIDE4NiwgICAxODksICAgMTky
LCAgIDE5NSwgICAxOTgsICAgMjAxLAotICAgICAyMDQsICAgMjA3LCAgIDIxMCwgICAyMzAsICAg
MjUwLCAgIDI1MywgICAyNTYsICAgMjU5LCAgIDI2MiwgICAyNjUKKyAgICAgICAwLCAgIDEwOCwg
ICAxMDgsICAgMTE1LCAgIDExNiwgICAxMjcsICAgMTI3LCAgIDE0OCwgICAxNDgsICAgMTY5LAor
ICAgICAxNzIsICAgMTc1LCAgIDE3OCwgICAxODEsICAgMTg0LCAgIDE4NywgICAxOTAsICAgMTkz
LCAgIDE5NiwgICAyMjEsCisgICAgIDI0NiwgICAyNDksICAgMjUyLCAgIDI3MiwgICAyOTksICAg
MzAyLCAgIDMwNSwgICAzMDgsICAgMzIwLCAgIDMyMwogfTsKICNlbmRpZgogCkBAIC0xNDk3LDcg
KzE0OTUsMjkgQEAKICAgY2FzZSAxODoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsKSA9ICh5eXZz
cFstMl0pID4+ICh5eXZzcFswXSk7CisgICAgICAgIGlmICgoeXl2c3BbMF0pIDwgMCB8fCAoeXl2
c3BbMF0pID4gMzEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghY29udGV4dC0+aXNJZ25v
cmluZ0Vycm9ycygpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN0ZDo6b3N0cmlu
Z3N0cmVhbSBzdHJlYW07CisgICAgICAgICAgICAgICAgc3RyZWFtIDw8ICh5eXZzcFstMl0pIDw8
ICIgPj4gIiA8PCAoeXl2c3BbMF0pOworICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHRleHQg
PSBzdHJlYW0uc3RyKCk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZGlhZ25vc3RpY3MtPnJl
cG9ydChwcDo6RGlhZ25vc3RpY3M6OlBQX1VOREVGSU5FRF9TSElGVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnRva2VuLT5sb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQuY19zdHIo
KSk7CisgICAgICAgICAgICAgICAgKihjb250ZXh0LT52YWxpZCkgPSBmYWxzZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICh5eXZhbCkgPSBzdGF0aWNfY2FzdDxZWVNUWVBFPigwKTsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlIGlmICgoeXl2c3BbLTJdKSA8IDApCisgICAgICAgIHsKKyAg
ICAgICAgICAgIC8vIExvZ2ljYWwgc2hpZnQgcmlnaHQuCisgICAgICAgICAgICAoeXl2YWwpID0g
c3RhdGljX2Nhc3Q8WVlTVFlQRT4oc3RhdGljX2Nhc3Q8VU5TSUdORURfVFlQRT4oKHl5dnNwWy0y
XSkpID4+ICh5eXZzcFswXSkpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgewor
ICAgICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFstMl0pID4+ICh5eXZzcFswXSk7CisgICAgICAg
IH0KICAgICB9CiAKICAgICBicmVhazsKQEAgLTE1MDUsNyArMTUyNSwyOSBAQAogICBjYXNlIDE5
OgogCiAgICAgewotICAgICAgICAoeXl2YWwpID0gKHl5dnNwWy0yXSkgPDwgKHl5dnNwWzBdKTsK
KyAgICAgICAgaWYgKCh5eXZzcFswXSkgPCAwIHx8ICh5eXZzcFswXSkgPiAzMSkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5pc0lnbm9yaW5nRXJyb3JzKCkpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgc3RkOjpvc3RyaW5nc3RyZWFtIHN0cmVhbTsKKyAgICAg
ICAgICAgICAgICBzdHJlYW0gPDwgKHl5dnNwWy0yXSkgPDwgIiA8PCAiIDw8ICh5eXZzcFswXSk7
CisgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgdGV4dCA9IHN0cmVhbS5zdHIoKTsKKyAgICAg
ICAgICAgICAgICBjb250ZXh0LT5kaWFnbm9zdGljcy0+cmVwb3J0KHBwOjpEaWFnbm9zdGljczo6
UFBfVU5ERUZJTkVEX1NISUZULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+dG9rZW4tPmxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICAq
KGNvbnRleHQtPnZhbGlkKSA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKHl5
dmFsKSA9IHN0YXRpY19jYXN0PFlZU1RZUEU+KDApOworICAgICAgICB9CisgICAgICAgIGVsc2Ug
aWYgKCh5eXZzcFstMl0pIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gTG9naWNhbCBz
aGlmdCBsZWZ0LgorICAgICAgICAgICAgKHl5dmFsKSA9IHN0YXRpY19jYXN0PFlZU1RZUEU+KHN0
YXRpY19jYXN0PFVOU0lHTkVEX1RZUEU+KCh5eXZzcFstMl0pKSA8PCAoeXl2c3BbMF0pKTsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgICh5eXZhbCkgPSAo
eXl2c3BbLTJdKSA8PCAoeXl2c3BbMF0pOworICAgICAgICB9CiAgICAgfQogCiAgICAgYnJlYWs7
CkBAIC0xNTEzLDcgKzE1NTUsNyBAQAogICBjYXNlIDIwOgogCiAgICAgewotICAgICAgICAoeXl2
YWwpID0gKHl5dnNwWy0yXSkgLSAoeXl2c3BbMF0pOworICAgICAgICAoeXl2YWwpID0gZ2w6Oldy
YXBwaW5nRGlmZjxZWVNUWVBFPigoeXl2c3BbLTJdKSwgKHl5dnNwWzBdKSk7CiAgICAgfQogCiAg
ICAgYnJlYWs7CkBAIC0xNTIxLDcgKzE1NjMsNyBAQAogICBjYXNlIDIxOgogCiAgICAgewotICAg
ICAgICAoeXl2YWwpID0gKHl5dnNwWy0yXSkgKyAoeXl2c3BbMF0pOworICAgICAgICAoeXl2YWwp
ID0gZ2w6OldyYXBwaW5nU3VtPFlZU1RZUEU+KCh5eXZzcFstMl0pLCAoeXl2c3BbMF0pKTsKICAg
ICB9CiAKICAgICBicmVhazsKQEAgLTE1NjgsNiArMTYxMCwxMyBAQAogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgKHl5dmFsKSA9IHN0YXRpY19jYXN0PFlZU1RZUEU+KDApOwogICAgICAgICB9
CisgICAgICAgIGVsc2UgaWYgKCh5eXZzcFstMl0pID09IHN0ZDo6bnVtZXJpY19saW1pdHM8WVlT
VFlQRT46Om1pbigpICYmICh5eXZzcFswXSkgPT0gLTEpCisgICAgICAgIHsKKyAgICAgICAgICAg
IC8vIENoZWNrIGZvciB0aGUgc3BlY2lhbCBjYXNlIHdoZXJlIHRoZSBtaW5pbXVtIHJlcHJlc2Vu
dGFibGUgbnVtYmVyIGlzCisgICAgICAgICAgICAvLyBkaXZpZGVkIGJ5IC0xLiBJZiBsZWZ0IGFs
b25lIHRoaXMgbGVhZHMgdG8gaW50ZWdlciBvdmVyZmxvdyBpbiBDKyssIHdoaWNoCisgICAgICAg
ICAgICAvLyBoYXMgdW5kZWZpbmVkIHJlc3VsdHMuCisgICAgICAgICAgICAoeXl2YWwpID0gc3Rk
OjpudW1lcmljX2xpbWl0czxZWVNUWVBFPjo6bWF4KCk7CisgICAgICAgIH0KICAgICAgICAgZWxz
ZQogICAgICAgICB7CiAgICAgICAgICAgICAoeXl2YWwpID0gKHl5dnNwWy0yXSkgLyAoeXl2c3Bb
MF0pOwpAQCAtMTU3OSw3ICsxNjI4LDcgQEAKICAgY2FzZSAyNDoKIAogICAgIHsKLSAgICAgICAg
KHl5dmFsKSA9ICh5eXZzcFstMl0pICogKHl5dnNwWzBdKTsKKyAgICAgICAgKHl5dmFsKSA9IGds
OjpXcmFwcGluZ011bCgoeXl2c3BbLTJdKSwgKHl5dnNwWzBdKSk7CiAgICAgfQogCiAgICAgYnJl
YWs7CkBAIC0xNjAzLDcgKzE2NTIsMTYgQEAKICAgY2FzZSAyNzoKIAogICAgIHsKLSAgICAgICAg
KHl5dmFsKSA9IC0gKHl5dnNwWzBdKTsKKyAgICAgICAgLy8gQ2hlY2sgZm9yIG5lZ2F0aW9uIG9m
IG1pbmltdW0gcmVwcmVzZW50YWJsZSBpbnRlZ2VyIHRvIHByZXZlbnQgdW5kZWZpbmVkIHNpZ25l
ZCBpbnQKKyAgICAgICAgLy8gb3ZlcmZsb3cuCisgICAgICAgIGlmICgoeXl2c3BbMF0pID09IHN0
ZDo6bnVtZXJpY19saW1pdHM8WVlTVFlQRT46Om1pbigpKQorICAgICAgICB7CisgICAgICAgICAg
ICAoeXl2YWwpID0gc3RkOjpudW1lcmljX2xpbWl0czxZWVNUWVBFPjo6bWluKCk7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICAoeXl2YWwpID0gLSh5eXZz
cFswXSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lvblBhcnNlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVw
cm9jZXNzb3IvRXhwcmVzc2lvblBhcnNlci5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25QYXJz
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNyw4ICs3LDggQEAKICNpZm5kZWYgQ09NUElMRVJfUFJF
UFJPQ0VTU09SX0VYUFJFU1NJT05QQVJTRVJfSF8KICNkZWZpbmUgQ09NUElMRVJfUFJFUFJPQ0VT
U09SX0VYUFJFU1NJT05QQVJTRVJfSF8KIAotI2luY2x1ZGUgIkRpYWdub3N0aWNzQmFzZS5oIgot
I2luY2x1ZGUgInBwX3V0aWxzLmgiCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKyNp
bmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvRGlhZ25vc3RpY3NCYXNlLmgiCiAKIG5hbWVz
cGFjZSBwcAogewpAQCAtMTYsNyArMTYsNyBAQAogY2xhc3MgTGV4ZXI7CiBzdHJ1Y3QgVG9rZW47
CiAKLWNsYXNzIEV4cHJlc3Npb25QYXJzZXIKK2NsYXNzIEV4cHJlc3Npb25QYXJzZXIgOiBhbmds
ZTo6Tm9uQ29weWFibGUKIHsKICAgcHVibGljOgogICAgIHN0cnVjdCBFcnJvclNldHRpbmdzCkBA
IC0zNCw4ICszNCw2IEBACiAgICAgICAgICAgICAgICBib29sICp2YWxpZCk7CiAKICAgcHJpdmF0
ZToKLSAgICBQUF9ESVNBTExPV19DT1BZX0FORF9BU1NJR04oRXhwcmVzc2lvblBhcnNlcik7Ci0K
ICAgICBMZXhlciAqbUxleGVyOwogICAgIERpYWdub3N0aWNzICptRGlhZ25vc3RpY3M7CiB9OwpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9F
eHByZXNzaW9uUGFyc2VyLnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLnkJKHJldmlzaW9uIDIw
ODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNz
b3IvRXhwcmVzc2lvblBhcnNlci55CSh3b3JraW5nIGNvcHkpCkBAIC00MSwxNyArNDEsMTUgQEAK
IAogI2luY2x1ZGUgPGNhc3NlcnQ+CiAjaW5jbHVkZSA8c3N0cmVhbT4KKyNpbmNsdWRlIDxzdGRp
bnQuaD4KIAogI2luY2x1ZGUgIkRpYWdub3N0aWNzQmFzZS5oIgogI2luY2x1ZGUgIkxleGVyLmgi
CiAjaW5jbHVkZSAiVG9rZW4uaCIKKyNpbmNsdWRlICJjb21tb24vbWF0aHV0aWwuaCIKIAotI2lm
IGRlZmluZWQoX01TQ19WRVIpCi10eXBlZGVmIF9faW50NjQgWVlTVFlQRTsKLSNlbHNlCi0jaW5j
bHVkZSA8c3RkaW50Lmg+Ci10eXBlZGVmIGludG1heF90IFlZU1RZUEU7Ci0jZW5kaWYgIC8vIF9N
U0NfVkVSCit0eXBlZGVmIGludDMyX3QgWVlTVFlQRTsKK3R5cGVkZWYgdWludDMyX3QgVU5TSUdO
RURfVFlQRTsKIAogI2RlZmluZSBZWUVOQUJMRV9OTFMgMAogI2RlZmluZSBZWUxUWVBFX0lTX1RS
SVZJQUwgMQpAQCAtMTk2LDE2ICsxOTQsNjAgQEAKICAgICAgICAgJCQgPSAkMSA8ICQzOwogICAg
IH0KICAgICB8IGV4cHJlc3Npb24gVE9LX09QX1JJR0hUIGV4cHJlc3Npb24gewotICAgICAgICAk
JCA9ICQxID4+ICQzOworICAgICAgICBpZiAoJDMgPCAwIHx8ICQzID4gMzEpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICghY29udGV4dC0+aXNJZ25vcmluZ0Vycm9ycygpKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBzdHJlYW07CisgICAgICAg
ICAgICAgICAgc3RyZWFtIDw8ICQxIDw8ICIgPj4gIiA8PCAkMzsKKyAgICAgICAgICAgICAgICBz
dGQ6OnN0cmluZyB0ZXh0ID0gc3RyZWFtLnN0cigpOworICAgICAgICAgICAgICAgIGNvbnRleHQt
PmRpYWdub3N0aWNzLT5yZXBvcnQocHA6OkRpYWdub3N0aWNzOjpQUF9VTkRFRklORURfU0hJRlQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT50
b2tlbi0+bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0ZXh0LmNfc3RyKCkpOworICAgICAgICAgICAgICAgICooY29udGV4dC0+dmFsaWQpID0g
ZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAkJCA9IHN0YXRpY19jYXN0PFlZU1RZ
UEU+KDApOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCQxIDwgMCkKKyAgICAgICAgewor
ICAgICAgICAgICAgLy8gTG9naWNhbCBzaGlmdCByaWdodC4KKyAgICAgICAgICAgICQkID0gc3Rh
dGljX2Nhc3Q8WVlTVFlQRT4oc3RhdGljX2Nhc3Q8VU5TSUdORURfVFlQRT4oJDEpID4+ICQzKTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgICQkID0gJDEg
Pj4gJDM7CisgICAgICAgIH0KICAgICB9CiAgICAgfCBleHByZXNzaW9uIFRPS19PUF9MRUZUIGV4
cHJlc3Npb24gewotICAgICAgICAkJCA9ICQxIDw8ICQzOworICAgICAgICBpZiAoJDMgPCAwIHx8
ICQzID4gMzEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghY29udGV4dC0+aXNJZ25vcmlu
Z0Vycm9ycygpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN0ZDo6b3N0cmluZ3N0
cmVhbSBzdHJlYW07CisgICAgICAgICAgICAgICAgc3RyZWFtIDw8ICQxIDw8ICIgPDwgIiA8PCAk
MzsKKyAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyB0ZXh0ID0gc3RyZWFtLnN0cigpOworICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmRpYWdub3N0aWNzLT5yZXBvcnQocHA6OkRpYWdub3N0aWNz
OjpQUF9VTkRFRklORURfU0hJRlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT50b2tlbi0+bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LmNfc3RyKCkpOworICAgICAgICAgICAgICAg
ICooY29udGV4dC0+dmFsaWQpID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAk
JCA9IHN0YXRpY19jYXN0PFlZU1RZUEU+KDApOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYg
KCQxIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gTG9naWNhbCBzaGlmdCBsZWZ0Lgor
ICAgICAgICAgICAgJCQgPSBzdGF0aWNfY2FzdDxZWVNUWVBFPihzdGF0aWNfY2FzdDxVTlNJR05F
RF9UWVBFPigkMSkgPDwgJDMpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgewor
ICAgICAgICAgICAgJCQgPSAkMSA8PCAkMzsKKyAgICAgICAgfQogICAgIH0KICAgICB8IGV4cHJl
c3Npb24gJy0nIGV4cHJlc3Npb24gewotICAgICAgICAkJCA9ICQxIC0gJDM7CisgICAgICAgICQk
ID0gZ2w6OldyYXBwaW5nRGlmZjxZWVNUWVBFPigkMSwgJDMpOwogICAgIH0KICAgICB8IGV4cHJl
c3Npb24gJysnIGV4cHJlc3Npb24gewotICAgICAgICAkJCA9ICQxICsgJDM7CisgICAgICAgICQk
ID0gZ2w6OldyYXBwaW5nU3VtPFlZU1RZUEU+KCQxLCAkMyk7CiAgICAgfQogICAgIHwgZXhwcmVz
c2lvbiAnJScgZXhwcmVzc2lvbiB7CiAgICAgICAgIGlmICgkMyA9PSAwKQpAQCAtMjQyLDYgKzI4
NCwxMyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgJCQgPSBzdGF0aWNfY2FzdDxZWVNU
WVBFPigwKTsKICAgICAgICAgfQorICAgICAgICBlbHNlIGlmICgkMSA9PSBzdGQ6Om51bWVyaWNf
bGltaXRzPFlZU1RZUEU+OjptaW4oKSAmJiAkMyA9PSAtMSkKKyAgICAgICAgeworICAgICAgICAg
ICAgLy8gQ2hlY2sgZm9yIHRoZSBzcGVjaWFsIGNhc2Ugd2hlcmUgdGhlIG1pbmltdW0gcmVwcmVz
ZW50YWJsZSBudW1iZXIgaXMKKyAgICAgICAgICAgIC8vIGRpdmlkZWQgYnkgLTEuIElmIGxlZnQg
YWxvbmUgdGhpcyBsZWFkcyB0byBpbnRlZ2VyIG92ZXJmbG93IGluIEMrKywgd2hpY2gKKyAgICAg
ICAgICAgIC8vIGhhcyB1bmRlZmluZWQgcmVzdWx0cy4KKyAgICAgICAgICAgICQkID0gc3RkOjpu
dW1lcmljX2xpbWl0czxZWVNUWVBFPjo6bWF4KCk7CisgICAgICAgIH0KICAgICAgICAgZWxzZQog
ICAgICAgICB7CiAgICAgICAgICAgICAkJCA9ICQxIC8gJDM7CkBAIC0yNDgsNyArMjk3LDcgQEAK
ICAgICAgICAgfQogICAgIH0KICAgICB8IGV4cHJlc3Npb24gJyonIGV4cHJlc3Npb24gewotICAg
ICAgICAkJCA9ICQxICogJDM7CisgICAgICAgICQkID0gZ2w6OldyYXBwaW5nTXVsKCQxLCAkMyk7
CiAgICAgfQogICAgIHwgJyEnIGV4cHJlc3Npb24gJXByZWMgVE9LX1VOQVJZIHsKICAgICAgICAg
JCQgPSAhICQyOwpAQCAtMjU3LDcgKzMwNiwxNiBAQAogICAgICAgICAkJCA9IH4gJDI7CiAgICAg
fQogICAgIHwgJy0nIGV4cHJlc3Npb24gJXByZWMgVE9LX1VOQVJZIHsKLSAgICAgICAgJCQgPSAt
ICQyOworICAgICAgICAvLyBDaGVjayBmb3IgbmVnYXRpb24gb2YgbWluaW11bSByZXByZXNlbnRh
YmxlIGludGVnZXIgdG8gcHJldmVudCB1bmRlZmluZWQgc2lnbmVkIGludAorICAgICAgICAvLyBv
dmVyZmxvdy4KKyAgICAgICAgaWYgKCQyID09IHN0ZDo6bnVtZXJpY19saW1pdHM8WVlTVFlQRT46
Om1pbigpKQorICAgICAgICB7CisgICAgICAgICAgICAkJCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
WVlTVFlQRT46Om1pbigpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAg
ICAgICAgICAgJCQgPSAtJDI7CisgICAgICAgIH0KICAgICB9CiAgICAgfCAnKycgZXhwcmVzc2lv
biAlcHJlYyBUT0tfVU5BUlkgewogICAgICAgICAkJCA9ICsgJDI7CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0lucHV0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29y
L0lucHV0LmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9JbnB1dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQs
MTIgKzQsMTMgQEAKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwogCi0jaW5jbHVk
ZSAiSW5wdXQuaCIKKyNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvSW5wdXQuaCIKIAog
I2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxjYXNzZXJ0PgogI2luY2x1ZGUgPGNzdHJp
bmc+CiAKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKwogbmFtZXNwYWNlIHBwCiB7CiAKQEAg
LTMyLDcgKzMzLDcgQEAKIGNvbnN0IGNoYXIgKklucHV0Ojpza2lwQ2hhcigpCiB7CiAgICAgLy8g
VGhpcyBmdW5jdGlvbiBzaG91bGQgb25seSBiZSBjYWxsZWQgd2hlbiB0aGVyZSBpcyBhIGNoYXJh
Y3RlciB0byBza2lwLgotICAgIGFzc2VydChtUmVhZExvYy5jSW5kZXggPCBtTGVuZ3RoW21SZWFk
TG9jLnNJbmRleF0pOworICAgIEFTU0VSVChtUmVhZExvYy5jSW5kZXggPCBtTGVuZ3RoW21SZWFk
TG9jLnNJbmRleF0pOwogICAgICsrbVJlYWRMb2MuY0luZGV4OwogICAgIGlmIChtUmVhZExvYy5j
SW5kZXggPT0gbUxlbmd0aFttUmVhZExvYy5zSW5kZXhdKQogICAgIHsKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvSW5wdXQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29y
L0lucHV0LmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9wcmVwcm9jZXNzb3IvSW5wdXQuaAkod29ya2luZyBjb3B5KQpAQCAtNyw3ICs3
LDcgQEAKICNpZm5kZWYgQ09NUElMRVJfUFJFUFJPQ0VTU09SX0lOUFVUX0hfCiAjZGVmaW5lIENP
TVBJTEVSX1BSRVBST0NFU1NPUl9JTlBVVF9IXwogCi0jaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5j
bHVkZSA8Y3N0ZGRlZj4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKIG5hbWVzcGFjZSBwcApJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9MZXhlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci9MZXhlci5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvTGV4ZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00LDcgKzQsNyBAQAogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCiAK
LSNpbmNsdWRlICJMZXhlci5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9MZXhl
ci5oIgogCiBuYW1lc3BhY2UgcHAKIHsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9wcmVwcm9jZXNzb3IvTGV4ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0xleGVyLmgJKHJldmlzaW9u
IDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9j
ZXNzb3IvTGV4ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNywxMiArNywxNCBAQAogI2lmbmRlZiBD
T01QSUxFUl9QUkVQUk9DRVNTT1JfTEVYRVJfSF8KICNkZWZpbmUgQ09NUElMRVJfUFJFUFJPQ0VT
U09SX0xFWEVSX0hfCiAKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorCiBuYW1lc3Bh
Y2UgcHAKIHsKIAogc3RydWN0IFRva2VuOwogCi1jbGFzcyBMZXhlcgorY2xhc3MgTGV4ZXIgOiBh
bmdsZTo6Tm9uQ29weWFibGUKIHsKICAgcHVibGljOgogICAgIHZpcnR1YWwgfkxleGVyKCk7Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL01h
Y3JvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvcHJlcHJvY2Vzc29yL01hY3JvLmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9NYWNyby5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQsMTIgKzQsMTEgQEAKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CiAvLwogCi0jaW5jbHVkZSAiTWFjcm8uaCIKKyNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNz
b3IvTWFjcm8uaCIKIAotI2luY2x1ZGUgPHNzdHJlYW0+CisjaW5jbHVkZSAiY29tbW9uL2FuZ2xl
dXRpbHMuaCIKKyNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uaCIKIAotI2lu
Y2x1ZGUgIlRva2VuLmgiCi0KIG5hbWVzcGFjZSBwcAogewogCkBAIC0yMywxMiArMjIsOSBAQAog
CiB2b2lkIFByZWRlZmluZU1hY3JvKE1hY3JvU2V0ICptYWNyb1NldCwgY29uc3QgY2hhciAqbmFt
ZSwgaW50IHZhbHVlKQogewotICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBzdHJlYW07Ci0gICAgc3Ry
ZWFtIDw8IHZhbHVlOwotCiAgICAgVG9rZW4gdG9rZW47CiAgICAgdG9rZW4udHlwZSA9IFRva2Vu
OjpDT05TVF9JTlQ7Ci0gICAgdG9rZW4udGV4dCA9IHN0cmVhbS5zdHIoKTsKKyAgICB0b2tlbi50
ZXh0ID0gVG9TdHJpbmcodmFsdWUpOwogCiAgICAgTWFjcm8gbWFjcm87CiAgICAgbWFjcm8ucHJl
ZGVmaW5lZCA9IHRydWU7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvcHJlcHJvY2Vzc29yL01hY3JvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9NYWNyby5oCShyZXZpc2lvbiAyMDgwMjEp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL01h
Y3JvLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE2ICsyNiwxMiBAQAogICAgIHR5cGVkZWYgc3Rk
Ojp2ZWN0b3I8c3RkOjpzdHJpbmc+IFBhcmFtZXRlcnM7CiAgICAgdHlwZWRlZiBzdGQ6OnZlY3Rv
cjxUb2tlbj4gUmVwbGFjZW1lbnRzOwogCi0gICAgTWFjcm8oKQotICAgICAgICA6IHByZWRlZmlu
ZWQoZmFsc2UpLAotICAgICAgICAgIGRpc2FibGVkKGZhbHNlKSwKLSAgICAgICAgICB0eXBlKGtU
eXBlT2JqKQotICAgIHsKLSAgICB9CisgICAgTWFjcm8oKSA6IHByZWRlZmluZWQoZmFsc2UpLCBk
aXNhYmxlZChmYWxzZSksIGV4cGFuc2lvbkNvdW50KDApLCB0eXBlKGtUeXBlT2JqKSB7fQogICAg
IGJvb2wgZXF1YWxzKGNvbnN0IE1hY3JvICZvdGhlcikgY29uc3Q7CiAKICAgICBib29sIHByZWRl
ZmluZWQ7CiAgICAgbXV0YWJsZSBib29sIGRpc2FibGVkOworICAgIG11dGFibGUgaW50IGV4cGFu
c2lvbkNvdW50OwogCiAgICAgVHlwZSB0eXBlOwogICAgIHN0ZDo6c3RyaW5nIG5hbWU7CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3Jv
RXhwYW5kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9wcmVwcm9jZXNzb3IvTWFjcm9FeHBhbmRlci5jcHAJKHJldmlzaW9uIDIwODAyMSkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvTWFj
cm9FeHBhbmRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQsMTcgKzQsMjIgQEAKIC8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwogCi0jaW5jbHVkZSAiTWFjcm9FeHBhbmRlci5oIgor
I2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9NYWNyb0V4cGFuZGVyLmgiCiAKICNpbmNs
dWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8c3N0cmVhbT4KIAotI2luY2x1ZGUgIkRpYWdub3N0
aWNzQmFzZS5oIgotI2luY2x1ZGUgIlRva2VuLmgiCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgi
CisjaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpYWdub3N0aWNzQmFzZS5oIgorI2lu
Y2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5oIgogCiBuYW1lc3BhY2UgcHAKIHsK
IAorbmFtZXNwYWNlCit7CisKK2NvbnN0IHNpemVfdCBrTWF4Q29udGV4dFRva2VucyA9IDEwMDAw
OworCiBjbGFzcyBUb2tlbkxleGVyIDogcHVibGljIExleGVyCiB7CiAgcHVibGljOgpAQCAtNDAs
MjUgKzQ1LDIyIEBACiAgICAgfQogCiAgcHJpdmF0ZToKLSAgICBQUF9ESVNBTExPV19DT1BZX0FO
RF9BU1NJR04oVG9rZW5MZXhlcik7Ci0KICAgICBUb2tlblZlY3RvciBtVG9rZW5zOwogICAgIFRv
a2VuVmVjdG9yOjpjb25zdF9pdGVyYXRvciBtSXRlcjsKIH07CiAKLU1hY3JvRXhwYW5kZXI6Ok1h
Y3JvRXhwYW5kZXIoTGV4ZXIgKmxleGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
YWNyb1NldCAqbWFjcm9TZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpYWdub3N0
aWNzICpkaWFnbm9zdGljcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwYXJz
ZURlZmluZWQpCi0gICAgOiBtTGV4ZXIobGV4ZXIpLCBtTWFjcm9TZXQobWFjcm9TZXQpLCBtRGlh
Z25vc3RpY3MoZGlhZ25vc3RpY3MpLCBtUGFyc2VEZWZpbmVkKHBhcnNlRGVmaW5lZCkKK30gIC8v
IGFub255bW91cyBuYW1lc3BhY2UKKworTWFjcm9FeHBhbmRlcjo6TWFjcm9FeHBhbmRlcihMZXhl
ciAqbGV4ZXIsIE1hY3JvU2V0ICptYWNyb1NldCwgRGlhZ25vc3RpY3MgKmRpYWdub3N0aWNzKQor
ICAgIDogbUxleGVyKGxleGVyKSwgbU1hY3JvU2V0KG1hY3JvU2V0KSwgbURpYWdub3N0aWNzKGRp
YWdub3N0aWNzKSwgbVRvdGFsVG9rZW5zSW5Db250ZXh0cygwKQogewogfQogCiBNYWNyb0V4cGFu
ZGVyOjp+TWFjcm9FeHBhbmRlcigpCiB7Ci0gICAgZm9yIChzdGQ6OnNpemVfdCBpID0gMDsgaSA8
IG1Db250ZXh0U3RhY2suc2l6ZSgpOyArK2kpCisgICAgZm9yIChNYWNyb0NvbnRleHQgKmNvbnRl
eHQgOiBtQ29udGV4dFN0YWNrKQogICAgIHsKLSAgICAgICAgZGVsZXRlIG1Db250ZXh0U3RhY2tb
aV07CisgICAgICAgIGRlbGV0ZSBjb250ZXh0OwogICAgIH0KIH0KIApAQCAtNjYsNTQgKzY4LDEx
IEBACiB7CiAgICAgd2hpbGUgKHRydWUpCiAgICAgewotICAgICAgICBjb25zdCBjaGFyIGtEZWZp
bmVkW10gPSAiZGVmaW5lZCI7Ci0KICAgICAgICAgZ2V0VG9rZW4odG9rZW4pOwogCiAgICAgICAg
IGlmICh0b2tlbi0+dHlwZSAhPSBUb2tlbjo6SURFTlRJRklFUikKICAgICAgICAgICAgIGJyZWFr
OwogCi0gICAgICAgIC8vIERlZmluZWQgb3BlcmF0b3IgaXMgcGFyc2VkIGhlcmUgc2luY2UgaXQg
bWF5IGJlIGdlbmVyYXRlZCBieSBtYWNybyBleHBhbnNpb24uCi0gICAgICAgIC8vIERlZmluZWQg
b3BlcmF0b3IgcHJvZHVjZWQgYnkgbWFjcm8gZXhwYW5zaW9uIGhhcyB1bmRlZmluZWQgYmVoYXZp
b3IgYWNjb3JkaW5nIHRvIEMrKwotICAgICAgICAvLyBzcGVjLCB3aGljaCB0aGUgR0xTTCBzcGVj
IHJlZmVyZW5jZXMgKHNlZSBDKysxNCBkcmFmdCBzcGVjIHNlY3Rpb24gMTYuMS40KSwgYnV0IHRo
aXMKLSAgICAgICAgLy8gYmVoYXZpb3IgaXMgbmVlZGVkIGZvciBwYXNzaW5nIGRFUVAgdGVzdHMs
IHdoaWNoIGVuZm9yY2Ugc3RyaWN0ZXIgY29tcGF0aWJpbGl0eSBiZXR3ZWVuCi0gICAgICAgIC8v
IGltcGxlbWVudGF0aW9ucy4KLSAgICAgICAgaWYgKG1QYXJzZURlZmluZWQgJiYgdG9rZW4tPnRl
eHQgPT0ga0RlZmluZWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGJvb2wgcGFyZW4gPSBmYWxz
ZTsKLSAgICAgICAgICAgIGdldFRva2VuKHRva2VuKTsKLSAgICAgICAgICAgIGlmICh0b2tlbi0+
dHlwZSA9PSAnKCcpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcGFyZW4gPSB0cnVl
OwotICAgICAgICAgICAgICAgIGdldFRva2VuKHRva2VuKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGlmICh0b2tlbi0+dHlwZSAhPSBUb2tlbjo6SURFTlRJRklFUikKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBf
VU5FWFBFQ1RFRF9UT0tFTiwgdG9rZW4tPmxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRva2VuLT50ZXh0KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGF1dG8gaXRlciAgICAgICAgICAgICAgPSBtTWFjcm9T
ZXQtPmZpbmQodG9rZW4tPnRleHQpOwotICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXhwcmVzc2lv
biA9IGl0ZXIgIT0gbU1hY3JvU2V0LT5lbmQoKSA/ICIxIiA6ICIwIjsKLQotICAgICAgICAgICAg
aWYgKHBhcmVuKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdldFRva2VuKHRva2Vu
KTsKLSAgICAgICAgICAgICAgICBpZiAodG9rZW4tPnR5cGUgIT0gJyknKQotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgbURpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3Rp
Y3M6OlBQX1VORVhQRUNURURfVE9LRU4sIHRva2VuLT5sb2NhdGlvbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4tPnRleHQpOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIC8vIFdlIGhhdmUgYSB2YWxpZCBkZWZpbmVkIG9wZXJhdG9yLgotICAgICAgICAgICAgLy8g
Q29udmVydCB0aGUgY3VycmVudCB0b2tlbiBpbnRvIGEgQ09OU1RfSU5UIHRva2VuLgotICAgICAg
ICAgICAgdG9rZW4tPnR5cGUgPSBUb2tlbjo6Q09OU1RfSU5UOwotICAgICAgICAgICAgdG9rZW4t
PnRleHQgPSBleHByZXNzaW9uOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQogICAg
ICAgICBpZiAodG9rZW4tPmV4cGFuc2lvbkRpc2FibGVkKCkpCiAgICAgICAgICAgICBicmVhazsK
IApAQCAtMTYwLDYgKzExOSw3IEBACiAgICAgfQogICAgIGVsc2UKICAgICB7CisgICAgICAgIEFT
U0VSVChtVG90YWxUb2tlbnNJbkNvbnRleHRzID09IDApOwogICAgICAgICBtTGV4ZXItPmxleCh0
b2tlbik7CiAgICAgfQogfQpAQCAtMTcwLDExICsxMzAsMTEgQEAKICAgICB7CiAgICAgICAgIE1h
Y3JvQ29udGV4dCAqY29udGV4dCA9IG1Db250ZXh0U3RhY2suYmFjaygpOwogICAgICAgICBjb250
ZXh0LT51bmdldCgpOwotICAgICAgICBhc3NlcnQoY29udGV4dC0+cmVwbGFjZW1lbnRzW2NvbnRl
eHQtPmluZGV4XSA9PSB0b2tlbik7CisgICAgICAgIEFTU0VSVChjb250ZXh0LT5yZXBsYWNlbWVu
dHNbY29udGV4dC0+aW5kZXhdID09IHRva2VuKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAg
ICAgICAgYXNzZXJ0KCFtUmVzZXJ2ZVRva2VuLmdldCgpKTsKKyAgICAgICAgQVNTRVJUKCFtUmVz
ZXJ2ZVRva2VuLmdldCgpKTsKICAgICAgICAgbVJlc2VydmVUb2tlbi5yZXNldChuZXcgVG9rZW4o
dG9rZW4pKTsKICAgICB9CiB9CkBAIC0xOTIsMTEgKzE1MiwxMyBAQAogCiBib29sIE1hY3JvRXhw
YW5kZXI6OnB1c2hNYWNybyhjb25zdCBNYWNybyAmbWFjcm8sIGNvbnN0IFRva2VuICZpZGVudGlm
aWVyKQogewotICAgIGFzc2VydCghbWFjcm8uZGlzYWJsZWQpOwotICAgIGFzc2VydCghaWRlbnRp
Zmllci5leHBhbnNpb25EaXNhYmxlZCgpKTsKLSAgICBhc3NlcnQoaWRlbnRpZmllci50eXBlID09
IFRva2VuOjpJREVOVElGSUVSKTsKLSAgICBhc3NlcnQoaWRlbnRpZmllci50ZXh0ID09IG1hY3Jv
Lm5hbWUpOworICAgIEFTU0VSVCghbWFjcm8uZGlzYWJsZWQpOworICAgIEFTU0VSVCghaWRlbnRp
Zmllci5leHBhbnNpb25EaXNhYmxlZCgpKTsKKyAgICBBU1NFUlQoaWRlbnRpZmllci50eXBlID09
IFRva2VuOjpJREVOVElGSUVSKTsKKyAgICBBU1NFUlQoaWRlbnRpZmllci50ZXh0ID09IG1hY3Jv
Lm5hbWUpOwogCisgICAgbWFjcm8uZXhwYW5zaW9uQ291bnQrKzsKKwogICAgIHN0ZDo6dmVjdG9y
PFRva2VuPiByZXBsYWNlbWVudHM7CiAgICAgaWYgKCFleHBhbmRNYWNybyhtYWNybywgaWRlbnRp
ZmllciwgJnJlcGxhY2VtZW50cykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIwOCwxOSAr
MTcwLDIzIEBACiAgICAgY29udGV4dC0+bWFjcm8gPSAmbWFjcm87CiAgICAgY29udGV4dC0+cmVw
bGFjZW1lbnRzLnN3YXAocmVwbGFjZW1lbnRzKTsKICAgICBtQ29udGV4dFN0YWNrLnB1c2hfYmFj
ayhjb250ZXh0KTsKKyAgICBtVG90YWxUb2tlbnNJbkNvbnRleHRzICs9IGNvbnRleHQtPnJlcGxh
Y2VtZW50cy5zaXplKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgTWFjcm9FeHBhbmRl
cjo6cG9wTWFjcm8oKQogewotICAgIGFzc2VydCghbUNvbnRleHRTdGFjay5lbXB0eSgpKTsKKyAg
ICBBU1NFUlQoIW1Db250ZXh0U3RhY2suZW1wdHkoKSk7CiAKICAgICBNYWNyb0NvbnRleHQgKmNv
bnRleHQgPSBtQ29udGV4dFN0YWNrLmJhY2soKTsKICAgICBtQ29udGV4dFN0YWNrLnBvcF9iYWNr
KCk7CiAKLSAgICBhc3NlcnQoY29udGV4dC0+ZW1wdHkoKSk7Ci0gICAgYXNzZXJ0KGNvbnRleHQt
Pm1hY3JvLT5kaXNhYmxlZCk7CisgICAgQVNTRVJUKGNvbnRleHQtPmVtcHR5KCkpOworICAgIEFT
U0VSVChjb250ZXh0LT5tYWNyby0+ZGlzYWJsZWQpOworICAgIEFTU0VSVChjb250ZXh0LT5tYWNy
by0+ZXhwYW5zaW9uQ291bnQgPiAwKTsKICAgICBjb250ZXh0LT5tYWNyby0+ZGlzYWJsZWQgPSBm
YWxzZTsKKyAgICBjb250ZXh0LT5tYWNyby0+ZXhwYW5zaW9uQ291bnQtLTsKKyAgICBtVG90YWxU
b2tlbnNJbkNvbnRleHRzIC09IGNvbnRleHQtPnJlcGxhY2VtZW50cy5zaXplKCk7CiAgICAgZGVs
ZXRlIGNvbnRleHQ7CiB9CiAKQEAgLTI0NSwyNSArMjExLDIxIEBACiAgICAgICAgICAgICBjb25z
dCBjaGFyIGtMaW5lW10gPSAiX19MSU5FX18iOwogICAgICAgICAgICAgY29uc3QgY2hhciBrRmls
ZVtdID0gIl9fRklMRV9fIjsKIAotICAgICAgICAgICAgYXNzZXJ0KHJlcGxhY2VtZW50cy0+c2l6
ZSgpID09IDEpOworICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50cy0+c2l6ZSgpID09IDEp
OwogICAgICAgICAgICAgVG9rZW4mIHJlcGwgPSByZXBsYWNlbWVudHMtPmZyb250KCk7CiAgICAg
ICAgICAgICBpZiAobWFjcm8ubmFtZSA9PSBrTGluZSkKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gc3RyZWFtOwotICAgICAgICAgICAgICAgIHN0cmVh
bSA8PCBpZGVudGlmaWVyLmxvY2F0aW9uLmxpbmU7Ci0gICAgICAgICAgICAgICAgcmVwbC50ZXh0
ID0gc3RyZWFtLnN0cigpOworICAgICAgICAgICAgICAgIHJlcGwudGV4dCA9IFRvU3RyaW5nKGlk
ZW50aWZpZXIubG9jYXRpb24ubGluZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNl
IGlmIChtYWNyby5uYW1lID09IGtGaWxlKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IHN0ZDo6b3N0cmluZ3N0cmVhbSBzdHJlYW07Ci0gICAgICAgICAgICAgICAgc3RyZWFtIDw8IGlk
ZW50aWZpZXIubG9jYXRpb24uZmlsZTsKLSAgICAgICAgICAgICAgICByZXBsLnRleHQgPSBzdHJl
YW0uc3RyKCk7CisgICAgICAgICAgICAgICAgcmVwbC50ZXh0ID0gVG9TdHJpbmcoaWRlbnRpZmll
ci5sb2NhdGlvbi5maWxlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICBl
bHNlCiAgICAgewotICAgICAgICBhc3NlcnQobWFjcm8udHlwZSA9PSBNYWNybzo6a1R5cGVGdW5j
KTsKKyAgICAgICAgQVNTRVJUKG1hY3JvLnR5cGUgPT0gTWFjcm86OmtUeXBlRnVuYyk7CiAgICAg
ICAgIHN0ZDo6dmVjdG9yPE1hY3JvQXJnPiBhcmdzOwogICAgICAgICBhcmdzLnJlc2VydmUobWFj
cm8ucGFyYW1ldGVycy5zaXplKCkpOwogICAgICAgICBpZiAoIWNvbGxlY3RNYWNyb0FyZ3MobWFj
cm8sIGlkZW50aWZpZXIsICZhcmdzLCAmcmVwbGFjZW1lbnRMb2NhdGlvbikpCkBAIC0yOTQsMTAg
KzI1NiwxMiBAQAogewogICAgIFRva2VuIHRva2VuOwogICAgIGdldFRva2VuKCZ0b2tlbik7Ci0g
ICAgYXNzZXJ0KHRva2VuLnR5cGUgPT0gJygnKTsKKyAgICBBU1NFUlQodG9rZW4udHlwZSA9PSAn
KCcpOwogCiAgICAgYXJncy0+cHVzaF9iYWNrKE1hY3JvQXJnKCkpOwotICAgIGZvciAoaW50IG9w
ZW5QYXJlbnMgPSAxOyBvcGVuUGFyZW5zICE9IDA7ICkKKworICAgIGludCBvcGVuUGFyZW5zID0g
MTsKKyAgICB3aGlsZSAob3BlblBhcmVucyAhPSAwKQogICAgIHsKICAgICAgICAgZ2V0VG9rZW4o
JnRva2VuKTsKIApAQCAtMzYzLDExICszMjcsMTEgQEAKICAgICAvLyBQcmUtZXhwYW5kIGVhY2gg
YXJndW1lbnQgYmVmb3JlIHN1YnN0aXR1dGlvbi4KICAgICAvLyBUaGlzIHN0ZXAgZXhwYW5kcyBl
YWNoIGFyZ3VtZW50IGluZGl2aWR1YWxseSBiZWZvcmUgdGhleSBhcmUKICAgICAvLyBpbnNlcnRl
ZCBpbnRvIHRoZSBtYWNybyBib2R5LgotICAgIGZvciAoc3RkOjpzaXplX3QgaSA9IDA7IGkgPCBh
cmdzLT5zaXplKCk7ICsraSkKKyAgICBzaXplX3QgbnVtVG9rZW5zID0gMDsKKyAgICBmb3IgKGF1
dG8gJmFyZyA6ICphcmdzKQogICAgIHsKLSAgICAgICAgTWFjcm9BcmcgJmFyZyA9IGFyZ3MtPmF0
KGkpOwogICAgICAgICBUb2tlbkxleGVyIGxleGVyKCZhcmcpOwotICAgICAgICBNYWNyb0V4cGFu
ZGVyIGV4cGFuZGVyKCZsZXhlciwgbU1hY3JvU2V0LCBtRGlhZ25vc3RpY3MsIG1QYXJzZURlZmlu
ZWQpOworICAgICAgICBNYWNyb0V4cGFuZGVyIGV4cGFuZGVyKCZsZXhlciwgbU1hY3JvU2V0LCBt
RGlhZ25vc3RpY3MpOwogCiAgICAgICAgIGFyZy5jbGVhcigpOwogICAgICAgICBleHBhbmRlci5s
ZXgoJnRva2VuKTsKQEAgLTM3NSw2ICszMzksMTIgQEAKICAgICAgICAgewogICAgICAgICAgICAg
YXJnLnB1c2hfYmFjayh0b2tlbik7CiAgICAgICAgICAgICBleHBhbmRlci5sZXgoJnRva2VuKTsK
KyAgICAgICAgICAgIG51bVRva2VucysrOworICAgICAgICAgICAgaWYgKG51bVRva2VucyArIG1U
b3RhbFRva2Vuc0luQ29udGV4dHMgPiBrTWF4Q29udGV4dFRva2VucykKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBfT1VU
X09GX01FTU9SWSwgdG9rZW4ubG9jYXRpb24sIHRva2VuLnRleHQpOworICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTM4Niw2ICszNTYsMTQgQEAKIHsKICAgICBmb3IgKHN0ZDo6c2l6ZV90IGkg
PSAwOyBpIDwgbWFjcm8ucmVwbGFjZW1lbnRzLnNpemUoKTsgKytpKQogICAgIHsKKyAgICAgICAg
aWYgKCFyZXBsYWNlbWVudHMtPmVtcHR5KCkgJiYKKyAgICAgICAgICAgIHJlcGxhY2VtZW50cy0+
c2l6ZSgpICsgbVRvdGFsVG9rZW5zSW5Db250ZXh0cyA+IGtNYXhDb250ZXh0VG9rZW5zKQorICAg
ICAgICB7CisgICAgICAgICAgICBjb25zdCBUb2tlbiAmdG9rZW4gPSByZXBsYWNlbWVudHMtPmJh
Y2soKTsKKyAgICAgICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9P
VVRfT0ZfTUVNT1JZLCB0b2tlbi5sb2NhdGlvbiwgdG9rZW4udGV4dCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBjb25zdCBUb2tlbiAmcmVwbCA9IG1hY3JvLnJl
cGxhY2VtZW50c1tpXTsKICAgICAgICAgaWYgKHJlcGwudHlwZSAhPSBUb2tlbjo6SURFTlRJRklF
UikKICAgICAgICAgewpAQCAtNDE4LDUgKzM5NiwyNSBAQAogICAgIH0KIH0KIAorTWFjcm9FeHBh
bmRlcjo6TWFjcm9Db250ZXh0OjpNYWNyb0NvbnRleHQoKSA6IG1hY3JvKDApLCBpbmRleCgwKQor
eworfQorCitib29sIE1hY3JvRXhwYW5kZXI6Ok1hY3JvQ29udGV4dDo6ZW1wdHkoKSBjb25zdAor
eworICAgIHJldHVybiBpbmRleCA9PSByZXBsYWNlbWVudHMuc2l6ZSgpOworfQorCitjb25zdCBU
b2tlbiAmTWFjcm9FeHBhbmRlcjo6TWFjcm9Db250ZXh0OjpnZXQoKQoreworICAgIHJldHVybiBy
ZXBsYWNlbWVudHNbaW5kZXgrK107Cit9CisKK3ZvaWQgTWFjcm9FeHBhbmRlcjo6TWFjcm9Db250
ZXh0Ojp1bmdldCgpCit7CisgICAgQVNTRVJUKGluZGV4ID4gMCk7CisgICAgLS1pbmRleDsKK30K
KwogfSAgLy8gbmFtZXNwYWNlIHBwCiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9wcmVwcm9jZXNzb3IvTWFjcm9FeHBhbmRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvTWFjcm9FeHBh
bmRlci5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3JvRXhwYW5kZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NywxMyArNywxMSBAQAogI2lmbmRlZiBDT01QSUxFUl9QUkVQUk9DRVNTT1JfTUFDUk9FWFBBTkRF
Ul9IXwogI2RlZmluZSBDT01QSUxFUl9QUkVQUk9DRVNTT1JfTUFDUk9FWFBBTkRFUl9IXwogCi0j
aW5jbHVkZSA8Y2Fzc2VydD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dmVjdG9yPgog
Ci0jaW5jbHVkZSAiTGV4ZXIuaCIKLSNpbmNsdWRlICJNYWNyby5oIgotI2luY2x1ZGUgInBwX3V0
aWxzLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL0xleGVyLmgiCisjaW5jbHVk
ZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3JvLmgiCiAKIG5hbWVzcGFjZSBwcAogewpAQCAt
MjQsMTQgKzIyLDEyIEBACiBjbGFzcyBNYWNyb0V4cGFuZGVyIDogcHVibGljIExleGVyCiB7CiAg
IHB1YmxpYzoKLSAgICBNYWNyb0V4cGFuZGVyKExleGVyICpsZXhlciwgTWFjcm9TZXQgKm1hY3Jv
U2V0LCBEaWFnbm9zdGljcyAqZGlhZ25vc3RpY3MsIGJvb2wgcGFyc2VEZWZpbmVkKTsKKyAgICBN
YWNyb0V4cGFuZGVyKExleGVyICpsZXhlciwgTWFjcm9TZXQgKm1hY3JvU2V0LCBEaWFnbm9zdGlj
cyAqZGlhZ25vc3RpY3MpOwogICAgIH5NYWNyb0V4cGFuZGVyKCkgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIGxleChUb2tlbiAqdG9rZW4pIG92ZXJyaWRlOwogCiAgIHByaXZhdGU6Ci0gICAgUFBfRElT
QUxMT1dfQ09QWV9BTkRfQVNTSUdOKE1hY3JvRXhwYW5kZXIpOwotCiAgICAgdm9pZCBnZXRUb2tl
bihUb2tlbiAqdG9rZW4pOwogICAgIHZvaWQgdW5nZXRUb2tlbihjb25zdCBUb2tlbiAmdG9rZW4p
OwogICAgIGJvb2wgaXNOZXh0VG9rZW5MZWZ0UGFyZW4oKTsKQEAgLTU0LDM3ICs1MCwyMyBAQAog
CiAgICAgc3RydWN0IE1hY3JvQ29udGV4dAogICAgIHsKKyAgICAgICAgTWFjcm9Db250ZXh0KCk7
CisgICAgICAgIGJvb2wgZW1wdHkoKSBjb25zdDsKKyAgICAgICAgY29uc3QgVG9rZW4gJmdldCgp
OworICAgICAgICB2b2lkIHVuZ2V0KCk7CisKICAgICAgICAgY29uc3QgTWFjcm8gKm1hY3JvOwog
ICAgICAgICBzdGQ6OnNpemVfdCBpbmRleDsKICAgICAgICAgc3RkOjp2ZWN0b3I8VG9rZW4+IHJl
cGxhY2VtZW50czsKLQotICAgICAgICBNYWNyb0NvbnRleHQoKQotICAgICAgICAgICAgOiBtYWNy
bygwKSwKLSAgICAgICAgICAgICAgaW5kZXgoMCkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAg
ICAgIGJvb2wgZW1wdHkoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaW5k
ZXggPT0gcmVwbGFjZW1lbnRzLnNpemUoKTsKLSAgICAgICAgfQotICAgICAgICBjb25zdCBUb2tl
biAmZ2V0KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VtZW50c1tpbmRl
eCsrXTsKLSAgICAgICAgfQotICAgICAgICB2b2lkIHVuZ2V0KCkKLSAgICAgICAgewotICAgICAg
ICAgICAgYXNzZXJ0KGluZGV4ID4gMCk7Ci0gICAgICAgICAgICAtLWluZGV4OwotICAgICAgICB9
CiAgICAgfTsKIAogICAgIExleGVyICptTGV4ZXI7CiAgICAgTWFjcm9TZXQgKm1NYWNyb1NldDsK
ICAgICBEaWFnbm9zdGljcyAqbURpYWdub3N0aWNzOwotICAgIGJvb2wgbVBhcnNlRGVmaW5lZDsK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxUb2tlbj4gbVJlc2VydmVUb2tlbjsKICAgICBzdGQ6OnZl
Y3RvcjxNYWNyb0NvbnRleHQgKj4gbUNvbnRleHRTdGFjazsKKyAgICBzaXplX3QgbVRvdGFsVG9r
ZW5zSW5Db250ZXh0czsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSBwcApJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVw
cm9jZXNzb3IvUHJlcHJvY2Vzc29yLmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00LDE3ICs0LDE2IEBACiAvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgogLy8KIAotI2luY2x1ZGUgIlByZXByb2Nlc3Nvci5oIgorI2luY2x1ZGUgImNvbXBp
bGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3IuaCIKIAotI2luY2x1ZGUgPGNhc3NlcnQ+Cisj
aW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29y
L0RpYWdub3N0aWNzQmFzZS5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9EaXJl
Y3RpdmVQYXJzZXIuaCIKKyNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvTWFjcm8uaCIK
KyNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvTWFjcm9FeHBhbmRlci5oIgorI2luY2x1
ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3By
ZXByb2Nlc3Nvci9Ub2tlbml6ZXIuaCIKIAotI2luY2x1ZGUgIkRpYWdub3N0aWNzQmFzZS5oIgot
I2luY2x1ZGUgIkRpcmVjdGl2ZVBhcnNlci5oIgotI2luY2x1ZGUgIk1hY3JvLmgiCi0jaW5jbHVk
ZSAiTWFjcm9FeHBhbmRlci5oIgotI2luY2x1ZGUgIlRva2VuLmgiCi0jaW5jbHVkZSAiVG9rZW5p
emVyLmgiCi0KIG5hbWVzcGFjZSBwcAogewogCkBAIC0zMCw3ICsyOSw3IEBACiAgICAgICAgIDog
ZGlhZ25vc3RpY3MoZGlhZyksCiAgICAgICAgICAgdG9rZW5pemVyKGRpYWcpLAogICAgICAgICAg
IGRpcmVjdGl2ZVBhcnNlcigmdG9rZW5pemVyLCAmbWFjcm9TZXQsIGRpYWcsIGRpcmVjdGl2ZUhh
bmRsZXIpLAotICAgICAgICAgIG1hY3JvRXhwYW5kZXIoJmRpcmVjdGl2ZVBhcnNlciwgJm1hY3Jv
U2V0LCBkaWFnLCBmYWxzZSkKKyAgICAgICAgICBtYWNyb0V4cGFuZGVyKCZkaXJlY3RpdmVQYXJz
ZXIsICZtYWNyb1NldCwgZGlhZykKICAgICB7CiAgICAgfQogfTsKQEAgLTc4LDggKzc3LDggQEAK
ICAgICAgICAgICAvLyBDb252ZXJ0IHByZXByb2Nlc3NpbmcgdG9rZW5zIHRvIGNvbXBpbGVyIHRv
a2VucyBvciByZXBvcnQKICAgICAgICAgICAvLyBkaWFnbm9zdGljcy4KICAgICAgICAgICBjYXNl
IFRva2VuOjpQUF9IQVNIOgotICAgICAgICAgICAgYXNzZXJ0KGZhbHNlKTsKLSAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICBjYXNlIFRva2VuOjpQUF9OVU1CRVI6CiAgICAgICAgICAgICBtSW1wbC0+
ZGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBfSU5WQUxJRF9OVU1CRVIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi0+bG9jYXRpb24sIHRva2Vu
LT50ZXh0KTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVw
cm9jZXNzb3IvUHJlcHJvY2Vzc29yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3IuaAkocmV2aXNpb24g
MjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nl
c3Nvci9QcmVwcm9jZXNzb3IuaAkod29ya2luZyBjb3B5KQpAQCAtNyw5ICs3LDkgQEAKICNpZm5k
ZWYgQ09NUElMRVJfUFJFUFJPQ0VTU09SX1BSRVBST0NFU1NPUl9IXwogI2RlZmluZSBDT01QSUxF
Ul9QUkVQUk9DRVNTT1JfUFJFUFJPQ0VTU09SX0hfCiAKLSNpbmNsdWRlIDxzdGRkZWYuaD4KKyNp
bmNsdWRlIDxjc3RkZGVmPgogCi0jaW5jbHVkZSAicHBfdXRpbHMuaCIKKyNpbmNsdWRlICJjb21t
b24vYW5nbGV1dGlscy5oIgogCiBuYW1lc3BhY2UgcHAKIHsKQEAgLTE5LDcgKzE5LDcgQEAKIHN0
cnVjdCBQcmVwcm9jZXNzb3JJbXBsOwogc3RydWN0IFRva2VuOwogCi1jbGFzcyBQcmVwcm9jZXNz
b3IKK2NsYXNzIFByZXByb2Nlc3NvciA6IGFuZ2xlOjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6
CiAgICAgUHJlcHJvY2Vzc29yKERpYWdub3N0aWNzICpkaWFnbm9zdGljcywgRGlyZWN0aXZlSGFu
ZGxlciAqZGlyZWN0aXZlSGFuZGxlcik7CkBAIC00NCw4ICs0NCw2IEBACiAgICAgdm9pZCBzZXRN
YXhUb2tlblNpemUoc2l6ZV90IG1heFRva2VuU2l6ZSk7CiAKICAgcHJpdmF0ZToKLSAgICBQUF9E
SVNBTExPV19DT1BZX0FORF9BU1NJR04oUHJlcHJvY2Vzc29yKTsKLQogICAgIFByZXByb2Nlc3Nv
ckltcGwgKm1JbXBsOwogfTsKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5jcHAJKHJldmlzaW9u
IDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9j
ZXNzb3IvVG9rZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00LDEyICs0LDExIEBACiAvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KIAotI2luY2x1ZGUgIlRva2VuLmgiCisjaW5jbHVk
ZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmgiCiAKLSNpbmNsdWRlIDxjYXNzZXJ0Pgor
I2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nv
ci9udW1lcmljX2xleC5oIgogCi0jaW5jbHVkZSAibnVtZXJpY19sZXguaCIKLQogbmFtZXNwYWNl
IHBwCiB7CiAKQEAgLTU1LDE5ICs1NCwxOSBAQAogCiBib29sIFRva2VuOjppVmFsdWUoaW50ICp2
YWx1ZSkgY29uc3QKIHsKLSAgICBhc3NlcnQodHlwZSA9PSBDT05TVF9JTlQpOworICAgIEFTU0VS
VCh0eXBlID09IENPTlNUX0lOVCk7CiAgICAgcmV0dXJuIG51bWVyaWNfbGV4X2ludCh0ZXh0LCB2
YWx1ZSk7CiB9CiAKIGJvb2wgVG9rZW46OnVWYWx1ZSh1bnNpZ25lZCBpbnQgKnZhbHVlKSBjb25z
dAogewotICAgIGFzc2VydCh0eXBlID09IENPTlNUX0lOVCk7CisgICAgQVNTRVJUKHR5cGUgPT0g
Q09OU1RfSU5UKTsKICAgICByZXR1cm4gbnVtZXJpY19sZXhfaW50KHRleHQsIHZhbHVlKTsKIH0K
IAogYm9vbCBUb2tlbjo6ZlZhbHVlKGZsb2F0ICp2YWx1ZSkgY29uc3QKIHsKLSAgICBhc3NlcnQo
dHlwZSA9PSBDT05TVF9GTE9BVCk7CisgICAgQVNTRVJUKHR5cGUgPT0gQ09OU1RfRkxPQVQpOwog
ICAgIHJldHVybiBudW1lcmljX2xleF9mbG9hdCh0ZXh0LCB2YWx1ZSk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJv
Y2Vzc29yL1Rva2VuLmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uaAkod29ya2luZyBjb3B5KQpAQCAt
MTAsNyArMTAsNyBAQAogI2luY2x1ZGUgPG9zdHJlYW0+CiAjaW5jbHVkZSA8c3RyaW5nPgogCi0j
aW5jbHVkZSAiU291cmNlTG9jYXRpb24uaCIKKyNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNz
b3IvU291cmNlTG9jYXRpb24uaCIKIAogbmFtZXNwYWNlIHBwCiB7CkBAIC0xMTMsNyArMTEzLDcg
QEAKICAgICByZXR1cm4gIWxocy5lcXVhbHMocmhzKTsKIH0KIAotZXh0ZXJuIHN0ZDo6b3N0cmVh
bSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJm91dCwgY29uc3QgVG9rZW4gJnRva2VuKTsKK3N0
ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJm91dCwgY29uc3QgVG9rZW4gJnRv
a2VuKTsKIAogfSAgLy8gbmFtZXBzYWNlIHBwCiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2Vu
aXplci5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OSwyMCArOSw5NiBAQAogCiAKIAotI2xpbmUgMTMgIi4vVG9rZW5pemVyLmNwcCIKLQogI2RlZmlu
ZSAgWVlfSU5UX0FMSUdORUQgc2hvcnQgaW50CiAKIC8qIEEgbGV4aWNhbCBzY2FubmVyIGdlbmVy
YXRlZCBieSBmbGV4ICovCiAKKworCisKKworCisKKworCisKKwogI2RlZmluZSBGTEVYX1NDQU5O
RVIKICNkZWZpbmUgWVlfRkxFWF9NQUpPUl9WRVJTSU9OIDIKLSNkZWZpbmUgWVlfRkxFWF9NSU5P
Ul9WRVJTSU9OIDUKLSNkZWZpbmUgWVlfRkxFWF9TVUJNSU5PUl9WRVJTSU9OIDM5CisjZGVmaW5l
IFlZX0ZMRVhfTUlOT1JfVkVSU0lPTiA2CisjZGVmaW5lIFlZX0ZMRVhfU1VCTUlOT1JfVkVSU0lP
TiAxCiAjaWYgWVlfRkxFWF9TVUJNSU5PUl9WRVJTSU9OID4gMAogI2RlZmluZSBGTEVYX0JFVEEK
ICNlbmRpZgogCisKKworCisKKworCisKKworCisKKworCisKKyAgICAKKyAgICAKKyAgICAKKyAg
ICAKKyAgICAKKyAgICAKKyAgICAKKyAgICAKKyAgICAKKyAgICAKKyAgICAKKyAgICAKKyAgICAK
KyAgICAKKyAgICAKKyAgICAKKyAgICAKKyAgICAKKyAgICAKKyAgICAKKyAgICAKKyAgICAKKyAg
ICAKKyAgICAKKyAgICAKKyAgICAKKyAgICAKKyAgICAKKyAgICAKKyAgICAKKyAgICAgICAgCisg
ICAgICAgIAorICAgIAorICAgIAorCisKKyAgICAKKyAgICAKKworCisKKyAgICAKKyAgICAKKwor
CisKKyAgICAKKyAgICAKKyAgICAKKworCisKKworCisKIC8qIEZpcnN0LCB3ZSBkZWFsIHdpdGgg
IHBsYXRmb3JtLXNwZWNpZmljIG9yIGNvbXBpbGVyLXNwZWNpZmljIGlzc3Vlcy4gKi8KIAogLyog
YmVnaW4gc3RhbmRhcmQgQyBoZWFkZXJzLiAqLwpAQCAtNTYsNyArMTMyLDYgQEAKIHR5cGVkZWYg
dWludDE2X3QgZmxleF91aW50MTZfdDsKIHR5cGVkZWYgaW50MzJfdCBmbGV4X2ludDMyX3Q7CiB0
eXBlZGVmIHVpbnQzMl90IGZsZXhfdWludDMyX3Q7Ci10eXBlZGVmIHVpbnQ2NF90IGZsZXhfdWlu
dDY0X3Q7CiAjZWxzZQogdHlwZWRlZiBzaWduZWQgY2hhciBmbGV4X2ludDhfdDsKIHR5cGVkZWYg
c2hvcnQgaW50IGZsZXhfaW50MTZfdDsKQEAgLTk4LDMwICsxNzMsMjcgQEAKIAogI2VuZGlmIC8q
ICEgRkxFWElOVF9IICovCiAKLSNpZmRlZiBfX2NwbHVzcGx1cwogCi0vKiBUaGUgImNvbnN0IiBz
dG9yYWdlLWNsYXNzLW1vZGlmaWVyIGlzIHZhbGlkLiAqLwotI2RlZmluZSBZWV9VU0VfQ09OU1QK
IAotI2Vsc2UJLyogISBfX2NwbHVzcGx1cyAqLworLyogVE9ETzogdGhpcyBpcyBhbHdheXMgZGVm
aW5lZCwgc28gaW5saW5lIGl0ICovCisjZGVmaW5lIHl5Y29uc3QgY29uc3QKIAotLyogQzk5IHJl
cXVpcmVzIF9fU1REQ19fIHRvIGJlIGRlZmluZWQgYXMgMS4gKi8KLSNpZiBkZWZpbmVkIChfX1NU
RENfXykKKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA+PSAzCisjZGVmaW5lIHl5
bm9yZXR1cm4gX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSkKKyNlbHNlCisjZGVmaW5lIHl5
bm9yZXR1cm4KKyNlbmRpZgogCi0jZGVmaW5lIFlZX1VTRV9DT05TVAogCi0jZW5kaWYJLyogZGVm
aW5lZCAoX19TVERDX18pICovCi0jZW5kaWYJLyogISBfX2NwbHVzcGx1cyAqLworICAgIAogCi0j
aWZkZWYgWVlfVVNFX0NPTlNUCi0jZGVmaW5lIHl5Y29uc3QgY29uc3QKLSNlbHNlCi0jZGVmaW5l
IHl5Y29uc3QKLSNlbmRpZgogCisKIC8qIFJldHVybmVkIHVwb24gZW5kLW9mLWZpbGUuICovCiAj
ZGVmaW5lIFlZX05VTEwgMAogCisKKwogLyogUHJvbW90ZXMgYSBwb3NzaWJseSBuZWdhdGl2ZSwg
cG9zc2libHkgc2lnbmVkIGNoYXIgdG8gYW4gdW5zaWduZWQKICAqIGludGVnZXIgZm9yIHVzZSBh
cyBhbiBhcnJheSBpbmRleC4gIElmIHRoZSBzaWduZWQgY2hhciBpcyBuZWdhdGl2ZSwKICAqIHdl
IHdhbnQgdG8gaW5zdGVhZCB0cmVhdCBpdCBhcyBhbiA4LWJpdCB1bnNpZ25lZCBjaGFyLCBoZW5j
ZSB0aGUKQEAgLTEyOSw2ICsyMDEsMTAgQEAKICAqLwogI2RlZmluZSBZWV9TQ19UT19VSShjKSAo
KHVuc2lnbmVkIGludCkgKHVuc2lnbmVkIGNoYXIpIGMpCiAKKworCisKKwogLyogQW4gb3BhcXVl
IHBvaW50ZXIuICovCiAjaWZuZGVmIFlZX1RZUEVERUZfWVlfU0NBTk5FUl9UCiAjZGVmaW5lIFlZ
X1RZUEVERUZfWVlfU0NBTk5FUl9UCkBAIC0xMzUsNiArMjExLDI0IEBACiB0eXBlZGVmIHZvaWQq
IHl5c2Nhbl90OwogI2VuZGlmCiAKKworCisKKworCisKKworCisgICAgCisgICAgCisKKworCisK
KworCisKKwogLyogRm9yIGNvbnZlbmllbmNlLCB0aGVzZSB2YXJzIChwbHVzIHRoZSBiaXNvbiB2
YXJzIGZhciBiZWxvdykKICAgIGFyZSBtYWNyb3MgaW4gdGhlIHJlZW50cmFudCBzY2FubmVyLiAq
LwogI2RlZmluZSB5eWluIHl5Zy0+eXlpbl9yCkBAIC0xNDYsNiArMjQwLDIxIEBACiAjZGVmaW5l
IHl5Y29sdW1uIChZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2JzX2NvbHVtbikKICNkZWZp
bmUgeXlfZmxleF9kZWJ1ZyB5eWctPnl5X2ZsZXhfZGVidWdfcgogCisKKworCisKKworCisKKwor
ICAgIAorICAgIAorICAgIAorICAgIAorCisKKwogLyogRW50ZXIgYSBzdGFydCBjb25kaXRpb24u
ICBUaGlzIG1hY3JvIHJlYWxseSBvdWdodCB0byB0YWtlIGEgcGFyYW1ldGVyLAogICogYnV0IHdl
IGRvIGl0IHRoZSBkaXNndXN0aW5nIGNydWZ0eSB3YXkgZm9yY2VkIG9uIHVzIGJ5IHRoZSAoKS1s
ZXNzCiAgKiBkZWZpbml0aW9uIG9mIEJFR0lOLgpAQCAtMTUyLDYgKzI2MSw4IEBACiAgKi8KICNk
ZWZpbmUgQkVHSU4geXlnLT55eV9zdGFydCA9IDEgKyAyICoKIAorCisKIC8qIFRyYW5zbGF0ZSB0
aGUgY3VycmVudCBzdGFydCBzdGF0ZSBpbnRvIGEgdmFsdWUgdGhhdCBjYW4gYmUgbGF0ZXIgaGFu
ZGVkCiAgKiB0byBCRUdJTiB0byByZXR1cm4gdG8gdGhlIHN0YXRlLiAgVGhlIFlZU1RBVEUgYWxp
YXMgaXMgZm9yIGxleAogICogY29tcGF0aWJpbGl0eS4KQEAgLTE1OSwyMyArMjcwLDQxIEBACiAj
ZGVmaW5lIFlZX1NUQVJUICgoeXlnLT55eV9zdGFydCAtIDEpIC8gMikKICNkZWZpbmUgWVlTVEFU
RSBZWV9TVEFSVAogCisKKwogLyogQWN0aW9uIG51bWJlciBmb3IgRU9GIHJ1bGUgb2YgYSBnaXZl
biBzdGFydCBzdGF0ZS4gKi8KICNkZWZpbmUgWVlfU1RBVEVfRU9GKHN0YXRlKSAoWVlfRU5EX09G
X0JVRkZFUiArIHN0YXRlICsgMSkKIAorCisKIC8qIFNwZWNpYWwgYWN0aW9uIG1lYW5pbmcgInN0
YXJ0IHByb2Nlc3NpbmcgYSBuZXcgZmlsZSIuICovCiAjZGVmaW5lIFlZX05FV19GSUxFIHBwcmVz
dGFydCh5eWluICx5eXNjYW5uZXIgKQogCisKKwogI2RlZmluZSBZWV9FTkRfT0ZfQlVGRkVSX0NI
QVIgMAogCisKIC8qIFNpemUgb2YgZGVmYXVsdCBpbnB1dCBidWZmZXIuICovCiAjaWZuZGVmIFlZ
X0JVRl9TSVpFCisjaWZkZWYgX19pYTY0X18KKy8qIE9uIElBLTY0LCB0aGUgYnVmZmVyIHNpemUg
aXMgMTZrLCBub3QgOGsuCisgKiBNb3Jlb3ZlciwgWVlfQlVGX1NJWkUgaXMgMipZWV9SRUFEX0JV
Rl9TSVpFIGluIHRoZSBnZW5lcmFsIGNhc2UuCisgKiBEaXR0byBmb3IgdGhlIF9faWE2NF9fIGNh
c2UgYWNjb3JkaW5nbHkuCisgKi8KKyNkZWZpbmUgWVlfQlVGX1NJWkUgMzI3NjgKKyNlbHNlCiAj
ZGVmaW5lIFlZX0JVRl9TSVpFIDE2Mzg0CisjZW5kaWYgLyogX19pYTY0X18gKi8KICNlbmRpZgog
CisKIC8qIFRoZSBzdGF0ZSBidWYgbXVzdCBiZSBsYXJnZSBlbm91Z2ggdG8gaG9sZCBvbmUgc3Rh
dGUgcGVyIGNoYXJhY3RlciBpbiB0aGUgbWFpbiBidWZmZXIuCiAgKi8KICNkZWZpbmUgWVlfU1RB
VEVfQlVGX1NJWkUgICAoKFlZX0JVRl9TSVpFICsgMikgKiBzaXplb2YoeXlfc3RhdGVfdHlwZSkp
CiAKKworCiAjaWZuZGVmIFlZX1RZUEVERUZfWVlfQlVGRkVSX1NUQVRFCiAjZGVmaW5lIFlZX1RZ
UEVERUZfWVlfQlVGRkVSX1NUQVRFCiB0eXBlZGVmIHN0cnVjdCB5eV9idWZmZXJfc3RhdGUgKllZ
X0JVRkZFUl9TVEFURTsKQEAgLTE4NiwxOCArMzE1LDIyIEBACiB0eXBlZGVmIHNpemVfdCB5eV9z
aXplX3Q7CiAjZW5kaWYKIAotI2lmbmRlZiBZWV9UWVBFREVGX1lZX1NJWkVfVAotI2RlZmluZSBZ
WV9UWVBFREVGX1lZX1NJWkVfVAotdHlwZWRlZiBzaXplX3QgeXlfc2l6ZV90OwotI2VuZGlmCiAK
KworCiAjZGVmaW5lIEVPQl9BQ1RfQ09OVElOVUVfU0NBTiAwCiAjZGVmaW5lIEVPQl9BQ1RfRU5E
X09GX0ZJTEUgMQogI2RlZmluZSBFT0JfQUNUX0xBU1RfTUFUQ0ggMgogCisKKworICAgIAogICAg
ICNkZWZpbmUgWVlfTEVTU19MSU5FTk8obikKICAgICAjZGVmaW5lIFlZX0xJTkVOT19SRVdJTkRf
VE8ocHRyKQogICAgIAorCisKKwogLyogUmV0dXJuIGFsbCBidXQgdGhlIGZpcnN0ICJuIiBtYXRj
aGVkIGNoYXJhY3RlcnMgYmFjayB0byB0aGUgaW5wdXQgc3RyZWFtLiAqLwogI2RlZmluZSB5eWxl
c3MobikgXAogCWRvIFwKQEAgLTIxMiw4ICszNDUsMTEgQEAKIAkJfSBcCiAJd2hpbGUgKCAwICkK
IAorCisKICNkZWZpbmUgdW5wdXQoYykgeXl1bnB1dCggYywgeXlnLT55eXRleHRfcHRyICwgeXlz
Y2FubmVyICkKIAorCiAjaWZuZGVmIFlZX1NUUlVDVF9ZWV9CVUZGRVJfU1RBVEUKICNkZWZpbmUg
WVlfU1RSVUNUX1lZX0JVRkZFUl9TVEFURQogc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZQpAQCAtMjIw
LDYgKzM1Niw4IEBACiAJewogCUZJTEUgKnl5X2lucHV0X2ZpbGU7CiAKKworCiAJY2hhciAqeXlf
Y2hfYnVmOwkJLyogaW5wdXQgYnVmZmVyICovCiAJY2hhciAqeXlfYnVmX3BvczsJCS8qIGN1cnJl
bnQgcG9zaXRpb24gaW4gaW5wdXQgYnVmZmVyICovCiAKQEAgLTIyNiwxMiArMzY0LDEyIEBACiAJ
LyogU2l6ZSBvZiBpbnB1dCBidWZmZXIgaW4gYnl0ZXMsIG5vdCBpbmNsdWRpbmcgcm9vbSBmb3Ig
RU9CCiAJICogY2hhcmFjdGVycy4KIAkgKi8KLQl5eV9zaXplX3QgeXlfYnVmX3NpemU7CisJaW50
IHl5X2J1Zl9zaXplOwogCiAJLyogTnVtYmVyIG9mIGNoYXJhY3RlcnMgcmVhZCBpbnRvIHl5X2No
X2J1Ziwgbm90IGluY2x1ZGluZyBFT0IKIAkgKiBjaGFyYWN0ZXJzLgogCSAqLwotCXl5X3NpemVf
dCB5eV9uX2NoYXJzOworCWludCB5eV9uX2NoYXJzOwogCiAJLyogV2hldGhlciB3ZSAib3duIiB0
aGUgYnVmZmVyIC0gaS5lLiwgd2Uga25vdyB3ZSBjcmVhdGVkIGl0LAogCSAqIGFuZCBjYW4gcmVh
bGxvYygpIGl0IHRvIGdyb3cgaXQsIGFuZCBzaG91bGQgZnJlZSgpIGl0IHRvCkBAIC0yNTUsNiAr
MzkzLDcgQEAKICAgICBpbnQgeXlfYnNfbGluZW5vOyAvKio8IFRoZSBsaW5lIGNvdW50LiAqLwog
ICAgIGludCB5eV9ic19jb2x1bW47IC8qKjwgVGhlIGNvbHVtbiBjb3VudC4gKi8KICAgICAKKwog
CS8qIFdoZXRoZXIgdG8gdHJ5IHRvIGZpbGwgdGhlIGlucHV0IGJ1ZmZlciB3aGVuIHdlIHJlYWNo
IHRoZQogCSAqIGVuZCBvZiBpdC4KIAkgKi8KQEAgLTI3OSw2ICs0MTgsMTAgQEAKIAl9OwogI2Vu
ZGlmIC8qICFZWV9TVFJVQ1RfWVlfQlVGRkVSX1NUQVRFICovCiAKKworCisKKwogLyogV2UgcHJv
dmlkZSBtYWNyb3MgZm9yIGFjY2Vzc2luZyBidWZmZXIgc3RhdGVzIGluIGNhc2UgaW4gdGhlCiAg
KiBmdXR1cmUgd2Ugd2FudCB0byBwdXQgdGhlIGJ1ZmZlciBzdGF0ZXMgaW4gYSBtb3JlIGdlbmVy
YWwKICAqICJzY2FubmVyIHN0YXRlIi4KQEAgLTI4OSwxMSArNDMyLDE4IEBACiAgICAgICAgICAg
ICAgICAgICAgICAgICAgID8geXlnLT55eV9idWZmZXJfc3RhY2tbeXlnLT55eV9idWZmZXJfc3Rh
Y2tfdG9wXSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDogTlVMTCkKIAorCisKIC8qIFNh
bWUgYXMgcHJldmlvdXMgbWFjcm8sIGJ1dCB1c2VmdWwgd2hlbiB3ZSBrbm93IHRoYXQgdGhlIGJ1
ZmZlciBzdGFjayBpcyBub3QKICAqIE5VTEwgb3Igd2hlbiB3ZSBuZWVkIGFuIGx2YWx1ZS4gRm9y
IGludGVybmFsIHVzZSBvbmx5LgogICovCiAjZGVmaW5lIFlZX0NVUlJFTlRfQlVGRkVSX0xWQUxV
RSB5eWctPnl5X2J1ZmZlcl9zdGFja1t5eWctPnl5X2J1ZmZlcl9zdGFja190b3BdCiAKKworCisK
KworCiB2b2lkIHBwcmVzdGFydCAoRklMRSAqaW5wdXRfZmlsZSAseXlzY2FuX3QgeXlzY2FubmVy
ICk7CiB2b2lkIHBwX3N3aXRjaF90b19idWZmZXIgKFlZX0JVRkZFUl9TVEFURSBuZXdfYnVmZmVy
ICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKIFlZX0JVRkZFUl9TVEFURSBwcF9jcmVhdGVfYnVmZmVy
IChGSUxFICpmaWxlLGludCBzaXplICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKQEAgLTMwMiwyMiAr
NDUyLDMwIEBACiB2b2lkIHBwcHVzaF9idWZmZXJfc3RhdGUgKFlZX0JVRkZFUl9TVEFURSBuZXdf
YnVmZmVyICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKIHZvaWQgcHBwb3BfYnVmZmVyX3N0YXRlICh5
eXNjYW5fdCB5eXNjYW5uZXIgKTsKIAorCiBzdGF0aWMgdm9pZCBwcGVuc3VyZV9idWZmZXJfc3Rh
Y2sgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwogc3RhdGljIHZvaWQgcHBfbG9hZF9idWZmZXJfc3Rh
dGUgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwogc3RhdGljIHZvaWQgcHBfaW5pdF9idWZmZXIgKFlZ
X0JVRkZFUl9TVEFURSBiLEZJTEUgKmZpbGUgLHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCisKKwog
I2RlZmluZSBZWV9GTFVTSF9CVUZGRVIgcHBfZmx1c2hfYnVmZmVyKFlZX0NVUlJFTlRfQlVGRkVS
ICx5eXNjYW5uZXIpCiAKKwogWVlfQlVGRkVSX1NUQVRFIHBwX3NjYW5fYnVmZmVyIChjaGFyICpi
YXNlLHl5X3NpemVfdCBzaXplICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKIFlZX0JVRkZFUl9TVEFU
RSBwcF9zY2FuX3N0cmluZyAoeXljb25zdCBjaGFyICp5eV9zdHIgLHl5c2Nhbl90IHl5c2Nhbm5l
ciApOwotWVlfQlVGRkVSX1NUQVRFIHBwX3NjYW5fYnl0ZXMgKHl5Y29uc3QgY2hhciAqYnl0ZXMs
eXlfc2l6ZV90IGxlbiAseXlzY2FuX3QgeXlzY2FubmVyICk7CitZWV9CVUZGRVJfU1RBVEUgcHBf
c2Nhbl9ieXRlcyAoeXljb25zdCBjaGFyICpieXRlcyxpbnQgbGVuICx5eXNjYW5fdCB5eXNjYW5u
ZXIgKTsKIAorCiB2b2lkICpwcGFsbG9jICh5eV9zaXplX3QgLHl5c2Nhbl90IHl5c2Nhbm5lciAp
Owogdm9pZCAqcHByZWFsbG9jICh2b2lkICoseXlfc2l6ZV90ICx5eXNjYW5fdCB5eXNjYW5uZXIg
KTsKIHZvaWQgcHBmcmVlICh2b2lkICogLHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCisKICNkZWZp
bmUgeXlfbmV3X2J1ZmZlciBwcF9jcmVhdGVfYnVmZmVyCiAKKworCiAjZGVmaW5lIHl5X3NldF9p
bnRlcmFjdGl2ZShpc19pbnRlcmFjdGl2ZSkgXAogCXsgXAogCWlmICggISBZWV9DVVJSRU5UX0JV
RkZFUiApeyBcCkBAIC0zMjgsNiArNDg2LDggQEAKIAlZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUt
Pnl5X2lzX2ludGVyYWN0aXZlID0gaXNfaW50ZXJhY3RpdmU7IFwKIAl9CiAKKworCiAjZGVmaW5l
IHl5X3NldF9ib2woYXRfYm9sKSBcCiAJeyBcCiAJaWYgKCAhIFlZX0NVUlJFTlRfQlVGRkVSICl7
XApAQCAtMzM4LDM0ICs0OTgsNTAgQEAKIAlZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2F0
X2JvbCA9IGF0X2JvbDsgXAogCX0KIAorCisKICNkZWZpbmUgWVlfQVRfQk9MKCkgKFlZX0NVUlJF
TlRfQlVGRkVSX0xWQUxVRS0+eXlfYXRfYm9sKQogCisKIC8qIEJlZ2luIHVzZXIgc2VjdDMgKi8K
IAotI2RlZmluZSBwcHdyYXAoeXlzY2FubmVyKSAxCisjZGVmaW5lIHBwd3JhcCh5eXNjYW5uZXIp
ICgvKkNPTlNUQ09ORCovMSkKICNkZWZpbmUgWVlfU0tJUF9ZWVdSQVAKIAogdHlwZWRlZiB1bnNp
Z25lZCBjaGFyIFlZX0NIQVI7CiAKKworCisKIHR5cGVkZWYgaW50IHl5X3N0YXRlX3R5cGU7CiAK
ICNkZWZpbmUgeXl0ZXh0X3B0ciB5eXRleHRfcgogCisKKworCisKKwogc3RhdGljIHl5X3N0YXRl
X3R5cGUgeXlfZ2V0X3ByZXZpb3VzX3N0YXRlICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKIHN0YXRp
YyB5eV9zdGF0ZV90eXBlIHl5X3RyeV9OVUxfdHJhbnMgKHl5X3N0YXRlX3R5cGUgY3VycmVudF9z
dGF0ZSAgLHl5c2Nhbl90IHl5c2Nhbm5lcik7CiBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZl
ciAoeXlzY2FuX3QgeXlzY2FubmVyICk7Ci1zdGF0aWMgdm9pZCB5eV9mYXRhbF9lcnJvciAoeXlj
b25zdCBjaGFyIG1zZ1tdICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKK3N0YXRpYyB2b2lkIHl5bm9y
ZXR1cm4geXlfZmF0YWxfZXJyb3IgKHl5Y29uc3QgY2hhciogbXNnICx5eXNjYW5fdCB5eXNjYW5u
ZXIgKTsKIAorCisKKwogLyogRG9uZSBhZnRlciB0aGUgY3VycmVudCBwYXR0ZXJuIGhhcyBiZWVu
IG1hdGNoZWQgYW5kIGJlZm9yZSB0aGUKICAqIGNvcnJlc3BvbmRpbmcgYWN0aW9uIC0gc2V0cyB1
cCB5eXRleHQuCiAgKi8KICNkZWZpbmUgWVlfRE9fQkVGT1JFX0FDVElPTiBcCiAJeXlnLT55eXRl
eHRfcHRyID0geXlfYnA7IFwKLQl5eWxlbmcgPSAoeXlfc2l6ZV90KSAoeXlfY3AgLSB5eV9icCk7
IFwKKwl5eWxlbmcgPSAoaW50KSAoeXlfY3AgLSB5eV9icCk7IFwKIAl5eWctPnl5X2hvbGRfY2hh
ciA9ICp5eV9jcDsgXAogCSp5eV9jcCA9ICdcMCc7IFwKIAl5eWctPnl5X2NfYnVmX3AgPSB5eV9j
cDsKIAorCisKICNkZWZpbmUgWVlfTlVNX1JVTEVTIDM4CiAjZGVmaW5lIFlZX0VORF9PRl9CVUZG
RVIgMzkKIC8qIFRoaXMgc3RydWN0IGlzIG5vdCB1c2VkIGluIHRoaXMgc2Nhbm5lciwKQEAgLTM5
MCw3ICs1NjYsNyBAQAogCiAgICAgfSA7CiAKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MzJfdCB5
eV9lY1syNTZdID0KK3N0YXRpYyB5eWNvbnN0IFlZX0NIQVIgeXlfZWNbMjU2XSA9CiAgICAgeyAg
IDAsCiAgICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEs
ICAgIDIsICAgIDMsCiAgICAgICAgIDIsICAgIDIsICAgIDQsICAgIDEsICAgIDEsICAgIDEsICAg
IDEsICAgIDEsICAgIDEsICAgIDEsCkBAIC00MjIsNyArNTk4LDcgQEAKICAgICAgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMQogICAgIH0gOwogCi1zdGF0aWMgeXljb25zdCBmbGV4X2ludDMy
X3QgeXlfbWV0YVszMF0gPQorc3RhdGljIHl5Y29uc3QgWVlfQ0hBUiB5eV9tZXRhWzMwXSA9CiAg
ICAgeyAgIDAsCiAgICAgICAgIDEsICAgIDEsICAgIDIsICAgIDIsICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsICAgIDMsCiAgICAgICAgIDEsICAgIDEsICAgIDQsICAgIDEsICAgIDUsICAg
IDUsICAgIDUsICAgIDEsICAgIDEsICAgIDEsCkBAIC00MjksNyArNjA1LDcgQEAKICAgICAgICAg
NSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgMSwgICAgMSwgICAgMQogICAgIH0g
OwogCi1zdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfYmFzZVsxMDNdID0KK3N0YXRpYyB5
eWNvbnN0IGZsZXhfdWludDE2X3QgeXlfYmFzZVsxMDNdID0KICAgICB7ICAgMCwKICAgICAgICAg
MCwgICAgMCwgICAyNywgICAyOSwgIDEzNywgIDE5NCwgIDEzMywgIDE5NCwgIDExNywgIDEwMCwK
ICAgICAgIDE5NCwgICA5OCwgICAyNiwgIDE5NCwgICA5NCwgICAyNCwgICAyOCwgICAzMywgICAz
MiwgICAzOSwKQEAgLTQ2MSw3ICs2MzcsNyBAQAogICAgICAgIDk3LCAgIDk3CiAgICAgfSA7CiAK
LXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9ueHRbMjI0XSA9CitzdGF0aWMgeXljb25z
dCBmbGV4X3VpbnQxNl90IHl5X254dFsyMjRdID0KICAgICB7ICAgMCwKICAgICAgICAgNiwgICAg
NywgICAgOCwgICAgOSwgICAxMCwgICAxMSwgICAxMiwgICAxMywgICAxNCwgICAxNSwKICAgICAg
ICAxNiwgICAxNywgICAxOCwgICAxOSwgICAyMCwgICAyMSwgICAyMSwgICAyMiwgICAyMywgICAy
NCwKQEAgLTU0NCwxMCArNzIwLDEwIEBACiAjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDAwNSkK
ICNlbmRpZgogCi0jaW5jbHVkZSAiVG9rZW5pemVyLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvcHJl
cHJvY2Vzc29yL1Rva2VuaXplci5oIgogCi0jaW5jbHVkZSAiRGlhZ25vc3RpY3NCYXNlLmgiCi0j
aW5jbHVkZSAiVG9rZW4uaCIKKyNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvRGlhZ25v
c3RpY3NCYXNlLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmgiCiAK
ICNpZiBkZWZpbmVkKF9fR05VQ19fKQogLy8gVHJpZ2dlcmVkIGJ5IHRoZSBhdXRvLWdlbmVyYXRl
ZCB5eV9mYXRhbF9lcnJvciBmdW5jdGlvbi4KQEAgLTU5NiwxMSArNzcyLDIzIEBACiAjZGVmaW5l
IFlZX0lOUFVUKGJ1ZiwgcmVzdWx0LCBtYXhTaXplKSBcCiAgICAgcmVzdWx0ID0geXlleHRyYS0+
aW5wdXQucmVhZChidWYsIG1heFNpemUsICZ5eWxpbmVubyk7CiAKKworCisKKwogI2RlZmluZSBJ
TklUSUFMIDAKICNkZWZpbmUgQ09NTUVOVCAxCiAKKworCisKKworCiAjZGVmaW5lIFlZX0VYVFJB
X1RZUEUgcHA6OlRva2VuaXplcjo6Q29udGV4dCoKIAorCisKKwogLyogSG9sZHMgdGhlIGVudGly
ZSBzdGF0ZSBvZiB0aGUgcmVlbnRyYW50IHNjYW5uZXIuICovCiBzdHJ1Y3QgeXlndXRzX3QKICAg
ICB7CkBAIC02MTQsOCArODAyLDggQEAKICAgICBzaXplX3QgeXlfYnVmZmVyX3N0YWNrX21heDsg
LyoqPCBjYXBhY2l0eSBvZiBzdGFjay4gKi8KICAgICBZWV9CVUZGRVJfU1RBVEUgKiB5eV9idWZm
ZXJfc3RhY2s7IC8qKjwgU3RhY2sgYXMgYW4gYXJyYXkuICovCiAgICAgY2hhciB5eV9ob2xkX2No
YXI7Ci0gICAgeXlfc2l6ZV90IHl5X25fY2hhcnM7Ci0gICAgeXlfc2l6ZV90IHl5bGVuZ19yOwor
ICAgIGludCB5eV9uX2NoYXJzOworICAgIGludCB5eWxlbmdfcjsKICAgICBjaGFyICp5eV9jX2J1
Zl9wOwogICAgIGludCB5eV9pbml0OwogICAgIGludCB5eV9zdGFydDsKQEAgLTYyOSw2OSArODE3
LDEzMiBAQAogICAgIGludCB5eWxpbmVub19yOwogICAgIGludCB5eV9mbGV4X2RlYnVnX3I7CiAK
KworCisKICAgICBjaGFyICp5eXRleHRfcjsKICAgICBpbnQgeXlfbW9yZV9mbGFnOwogICAgIGlu
dCB5eV9tb3JlX2xlbjsKIAorCisKICAgICBZWVNUWVBFICogeXlsdmFsX3I7CiAKKworCiAgICAg
WVlMVFlQRSAqIHl5bGxvY19yOwogCisKICAgICB9OyAvKiBlbmQgc3RydWN0IHl5Z3V0c190ICov
CiAKKworCisKIHN0YXRpYyBpbnQgeXlfaW5pdF9nbG9iYWxzICh5eXNjYW5fdCB5eXNjYW5uZXIg
KTsKIAorCisKKworICAgIAogICAgIC8qIFRoaXMgbXVzdCBnbyBoZXJlIGJlY2F1c2UgWVlTVFlQ
RSBhbmQgWVlMVFlQRSBhcmUgaW5jbHVkZWQKICAgICAgKiBmcm9tIGJpc29uIG91dHB1dCBpbiBz
ZWN0aW9uIDEuKi8KICAgICAjICAgIGRlZmluZSB5eWx2YWwgeXlnLT55eWx2YWxfcgogICAgIAor
CisgICAgCiAgICAgIyAgICBkZWZpbmUgeXlsbG9jIHl5Zy0+eXlsbG9jX3IKICAgICAKKworCiBp
bnQgcHBsZXhfaW5pdCAoeXlzY2FuX3QqIHNjYW5uZXIpOwogCiBpbnQgcHBsZXhfaW5pdF9leHRy
YSAoWVlfRVhUUkFfVFlQRSB1c2VyX2RlZmluZWQseXlzY2FuX3QqIHNjYW5uZXIpOwogCisKKwog
LyogQWNjZXNzb3IgbWV0aG9kcyB0byBnbG9iYWxzLgogICAgVGhlc2UgYXJlIG1hZGUgdmlzaWJs
ZSB0byBub24tcmVlbnRyYW50IHNjYW5uZXJzIGZvciBjb252ZW5pZW5jZS4gKi8KIAorCiBpbnQg
cHBsZXhfZGVzdHJveSAoeXlzY2FuX3QgeXlzY2FubmVyICk7CiAKKworCiBpbnQgcHBnZXRfZGVi
dWcgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCisKKwogdm9pZCBwcHNldF9kZWJ1ZyAoaW50IGRl
YnVnX2ZsYWcgLHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCisKKwogWVlfRVhUUkFfVFlQRSBwcGdl
dF9leHRyYSAoeXlzY2FuX3QgeXlzY2FubmVyICk7CiAKKworCiB2b2lkIHBwc2V0X2V4dHJhIChZ
WV9FWFRSQV9UWVBFIHVzZXJfZGVmaW5lZCAseXlzY2FuX3QgeXlzY2FubmVyICk7CiAKKworCiBG
SUxFICpwcGdldF9pbiAoeXlzY2FuX3QgeXlzY2FubmVyICk7CiAKLXZvaWQgcHBzZXRfaW4gIChG
SUxFICogaW5fc3RyICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKIAorCit2b2lkIHBwc2V0X2luICAo
RklMRSAqIF9pbl9zdHIgLHl5c2Nhbl90IHl5c2Nhbm5lciApOworCisKKwogRklMRSAqcHBnZXRf
b3V0ICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKIAotdm9pZCBwcHNldF9vdXQgIChGSUxFICogb3V0
X3N0ciAseXlzY2FuX3QgeXlzY2FubmVyICk7CiAKLXl5X3NpemVfdCBwcGdldF9sZW5nICh5eXNj
YW5fdCB5eXNjYW5uZXIgKTsKIAordm9pZCBwcHNldF9vdXQgIChGSUxFICogX291dF9zdHIgLHl5
c2Nhbl90IHl5c2Nhbm5lciApOworCisKKworCQkJaW50IHBwZ2V0X2xlbmcgKHl5c2Nhbl90IHl5
c2Nhbm5lciApOworCisKKwogY2hhciAqcHBnZXRfdGV4dCAoeXlzY2FuX3QgeXlzY2FubmVyICk7
CiAKKworCiBpbnQgcHBnZXRfbGluZW5vICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKIAotdm9pZCBw
cHNldF9saW5lbm8gKGludCBsaW5lX251bWJlciAseXlzY2FuX3QgeXlzY2FubmVyICk7CiAKKwor
dm9pZCBwcHNldF9saW5lbm8gKGludCBfbGluZV9udW1iZXIgLHl5c2Nhbl90IHl5c2Nhbm5lciAp
OworCisKKworCiBpbnQgcHBnZXRfY29sdW1uICAoeXlzY2FuX3QgeXlzY2FubmVyICk7CiAKLXZv
aWQgcHBzZXRfY29sdW1uIChpbnQgY29sdW1uX25vICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKIAor
CisKKwordm9pZCBwcHNldF9jb2x1bW4gKGludCBfY29sdW1uX25vICx5eXNjYW5fdCB5eXNjYW5u
ZXIgKTsKKworCisKKwogWVlTVFlQRSAqIHBwZ2V0X2x2YWwgKHl5c2Nhbl90IHl5c2Nhbm5lciAp
OwogCisKIHZvaWQgcHBzZXRfbHZhbCAoWVlTVFlQRSAqIHl5bHZhbF9wYXJhbSAseXlzY2FuX3Qg
eXlzY2FubmVyICk7CiAKKworICAgIAogICAgICAgIFlZTFRZUEUgKnBwZ2V0X2xsb2MgKHl5c2Nh
bl90IHl5c2Nhbm5lciApOwogICAgIAorCisgICAgCiAgICAgICAgIHZvaWQgcHBzZXRfbGxvYyAo
WVlMVFlQRSAqIHl5bGxvY19wYXJhbSAseXlzY2FuX3QgeXlzY2FubmVyICk7CiAgICAgCisKKwog
LyogTWFjcm9zIGFmdGVyIHRoaXMgcG9pbnQgY2FuIGFsbCBiZSBvdmVycmlkZGVuIGJ5IHVzZXIg
ZGVmaW5pdGlvbnMgaW4KICAqIHNlY3Rpb24gMS4KICAqLwpAQCAtNzA0LDYgKzk1NSwxMiBAQAog
I2VuZGlmCiAjZW5kaWYKIAorCisjaWZuZGVmIFlZX05PX1VOUFVUCisgICAgCisjZW5kaWYKKwor
CiAjaWZuZGVmIHl5dGV4dF9wdHIKIHN0YXRpYyB2b2lkIHl5X2ZsZXhfc3RybmNweSAoY2hhciAq
LHl5Y29uc3QgY2hhciAqLGludCAseXlzY2FuX3QgeXlzY2FubmVyKTsKICNlbmRpZgpAQCAtNzEy
LDcgKzk2OSw3IEBACiBzdGF0aWMgaW50IHl5X2ZsZXhfc3RybGVuICh5eWNvbnN0IGNoYXIgKiAs
eXlzY2FuX3QgeXlzY2FubmVyKTsKICNlbmRpZgogCi0jaWYgMCAvLyNpZm5kZWYgWVlfTk9fSU5Q
VVQKKyNpZiAwCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogc3RhdGljIGludCB5eWlucHV0ICh5eXNj
YW5fdCB5eXNjYW5uZXIgKTsKQEAgLTcyMiwxOSArOTc5LDM0IEBACiAKICNlbmRpZgogCisKKwor
CisKKworCisKIC8qIEFtb3VudCBvZiBzdHVmZiB0byBzbHVycCB1cCB3aXRoIGVhY2ggcmVhZC4g
Ki8KICNpZm5kZWYgWVlfUkVBRF9CVUZfU0laRQorI2lmZGVmIF9faWE2NF9fCisvKiBPbiBJQS02
NCwgdGhlIGJ1ZmZlciBzaXplIGlzIDE2aywgbm90IDhrICovCisjZGVmaW5lIFlZX1JFQURfQlVG
X1NJWkUgMTYzODQKKyNlbHNlCiAjZGVmaW5lIFlZX1JFQURfQlVGX1NJWkUgODE5MgorI2VuZGlm
IC8qIF9faWE2NF9fICovCiAjZW5kaWYKIAorCiAvKiBDb3B5IHdoYXRldmVyIHRoZSBsYXN0IHJ1
bGUgbWF0Y2hlZCB0byB0aGUgc3RhbmRhcmQgb3V0cHV0LiAqLwogI2lmbmRlZiBFQ0hPCiAvKiBU
aGlzIHVzZWQgdG8gYmUgYW4gZnB1dHMoKSwgYnV0IHNpbmNlIHRoZSBzdHJpbmcgbWlnaHQgY29u
dGFpbiBOVUwncywKICAqIHdlIG5vdyB1c2UgZndyaXRlKCkuCiAgKi8KLSNkZWZpbmUgRUNITyBk
byB7IGlmIChmd3JpdGUoIHl5dGV4dCwgeXlsZW5nLCAxLCB5eW91dCApKSB7fSB9IHdoaWxlICgw
KQorI2RlZmluZSBFQ0hPIGRvIHsgaWYgKGZ3cml0ZSggeXl0ZXh0LCAoc2l6ZV90KSB5eWxlbmcs
IDEsIHl5b3V0ICkpIHt9IH0gd2hpbGUgKDApCiAjZW5kaWYKIAorCisKIC8qIEdldHMgaW5wdXQg
YW5kIHN0dWZmcyBpdCBpbnRvICJidWYiLiAgbnVtYmVyIG9mIGNoYXJhY3RlcnMgcmVhZCwgb3Ig
WVlfTlVMTCwKICAqIGlzIHJldHVybmVkIGluICJyZXN1bHQiLgogICovCkBAIC03NTYsNyArMTAy
OCw3IEBACiAJZWxzZSBcCiAJCXsgXAogCQllcnJubz0wOyBcCi0JCXdoaWxlICggKHJlc3VsdCA9
IGZyZWFkKGJ1ZiwgMSwgbWF4X3NpemUsIHl5aW4pKT09MCAmJiBmZXJyb3IoeXlpbikpIFwKKwkJ
d2hpbGUgKCAocmVzdWx0ID0gKGludCkgZnJlYWQoYnVmLCAxLCBtYXhfc2l6ZSwgeXlpbikpPT0w
ICYmIGZlcnJvcih5eWluKSkgXAogCQkJeyBcCiAJCQlpZiggZXJybm8gIT0gRUlOVFIpIFwKIAkJ
CQl7IFwKQEAgLTc3MSw2ICsxMDQzLDggQEAKIAogI2VuZGlmCiAKKworCiAvKiBObyBzZW1pLWNv
bG9uIGFmdGVyIHJldHVybjsgY29ycmVjdCB1c2FnZSBpcyB0byB3cml0ZSAieXl0ZXJtaW5hdGUo
KTsiIC0KICAqIHdlIGRvbid0IHdhbnQgYW4gZXh0cmEgJzsnIGFmdGVyIHRoZSAicmV0dXJuIiBi
ZWNhdXNlIHRoYXQgd2lsbCBjYXVzZQogICogc29tZSBjb21waWxlcnMgdG8gY29tcGxhaW4gYWJv
dXQgdW5yZWFjaGFibGUgc3RhdGVtZW50cy4KQEAgLTc3OSwxOCArMTA1MywyNiBAQAogI2RlZmlu
ZSB5eXRlcm1pbmF0ZSgpIHJldHVybiBZWV9OVUxMCiAjZW5kaWYKIAorCiAvKiBOdW1iZXIgb2Yg
ZW50cmllcyBieSB3aGljaCBzdGFydC1jb25kaXRpb24gc3RhY2sgZ3Jvd3MuICovCiAjaWZuZGVm
IFlZX1NUQVJUX1NUQUNLX0lOQ1IKICNkZWZpbmUgWVlfU1RBUlRfU1RBQ0tfSU5DUiAyNQogI2Vu
ZGlmCiAKKwogLyogUmVwb3J0IGEgZmF0YWwgZXJyb3IuICovCiAjaWZuZGVmIFlZX0ZBVEFMX0VS
Uk9SCiAjZGVmaW5lIFlZX0ZBVEFMX0VSUk9SKG1zZykgeXlfZmF0YWxfZXJyb3IoIG1zZyAsIHl5
c2Nhbm5lcikKICNlbmRpZgogCisKKworCisKIC8qIGVuZCB0YWJsZXMgc2VyaWFsaXphdGlvbiBz
dHJ1Y3R1cmVzIGFuZCBwcm90b3R5cGVzICovCiAKKworCiAvKiBEZWZhdWx0IGRlY2xhcmF0aW9u
IG9mIGdlbmVyYXRlZCBzY2FubmVyIC0gYSBkZWZpbmUgc28gdGhlIHVzZXIgY2FuCiAgKiBlYXNp
bHkgYWRkIHBhcmFtZXRlcnMuCiAgKi8KQEAgLTc5Nyw2ICsxMDc5LDIyIEBACiAjaWZuZGVmIFlZ
X0RFQ0wKICNkZWZpbmUgWVlfREVDTF9JU19PVVJTIDEKIAorCisKKworCisKKyAgICAgICAgCisg
ICAgCisgICAgCisKKworCisgICAgCisgICAgCisgICAgCisKKwogZXh0ZXJuIGludCBwcGxleCBc
CiAgICAgICAgICAgICAgICAoWVlTVFlQRSAqIHl5bHZhbF9wYXJhbSxZWUxUWVBFICogeXlsbG9j
X3BhcmFtICx5eXNjYW5fdCB5eXNjYW5uZXIpOwogCkBAIC04MDQsNiArMTEwMiw3IEBACiAgICAg
ICAgICAgICAgICAoWVlTVFlQRSAqIHl5bHZhbF9wYXJhbSwgWVlMVFlQRSAqIHl5bGxvY19wYXJh
bSAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKICNlbmRpZiAvKiAhWVlfREVDTCAqLwogCisKIC8qIENv
ZGUgZXhlY3V0ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIHJ1bGUsIGFmdGVyIHl5dGV4dCBh
bmQgeXlsZW5nCiAgKiBoYXZlIGJlZW4gc2V0IHVwLgogICovCkBAIC04MTEsMjcgKzExMTAsMzkg
QEAKICNkZWZpbmUgWVlfVVNFUl9BQ1RJT04KICNlbmRpZgogCisKKwogLyogQ29kZSBleGVjdXRl
ZCBhdCB0aGUgZW5kIG9mIGVhY2ggcnVsZS4gKi8KICNpZm5kZWYgWVlfQlJFQUsKLSNkZWZpbmUg
WVlfQlJFQUsgYnJlYWs7CisjZGVmaW5lIFlZX0JSRUFLIC8qTElOVEVEKi9icmVhazsKICNlbmRp
ZgogCisKKwogI2RlZmluZSBZWV9SVUxFX1NFVFVQIFwKIAlZWV9VU0VSX0FDVElPTgogCisKKwog
LyoqIFRoZSBtYWluIHNjYW5uZXIgZnVuY3Rpb24gd2hpY2ggZG9lcyBhbGwgdGhlIHdvcmsuCiAg
Ki8KIFlZX0RFQ0wKIHsKLQlyZWdpc3RlciB5eV9zdGF0ZV90eXBlIHl5X2N1cnJlbnRfc3RhdGU7
Ci0JcmVnaXN0ZXIgY2hhciAqeXlfY3AsICp5eV9icDsKLQlyZWdpc3RlciBpbnQgeXlfYWN0Owor
CXl5X3N0YXRlX3R5cGUgeXlfY3VycmVudF9zdGF0ZTsKKwljaGFyICp5eV9jcCwgKnl5X2JwOwor
CWludCB5eV9hY3Q7CiAgICAgc3RydWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNf
dCopeXlzY2FubmVyOwogCisKKworCiAgICAgeXlsdmFsID0geXlsdmFsX3BhcmFtOwogCisKKwog
ICAgIHl5bGxvYyA9IHl5bGxvY19wYXJhbTsKIAorCiAJaWYgKCAheXlnLT55eV9pbml0ICkKIAkJ
ewogCQl5eWctPnl5X2luaXQgPSAxOwpAQCAtODQwLDYgKzExNTEsOCBAQAogCQlZWV9VU0VSX0lO
SVQ7CiAjZW5kaWYKIAorCisKIAkJaWYgKCAhIHl5Zy0+eXlfc3RhcnQgKQogCQkJeXlnLT55eV9z
dGFydCA9IDE7CS8qIGZpcnN0IHN0YXJ0IHN0YXRlICovCiAKQEAgLTg2MCw5ICsxMTczLDEwIEBA
CiAKIAl7CiAKKwogICAgIC8qIExpbmUgY29tbWVudCAqLwogCi0Jd2hpbGUgKCAxICkJCS8qIGxv
b3BzIHVudGlsIGVuZC1vZi1maWxlIGlzIHJlYWNoZWQgKi8KKwl3aGlsZSAoIC8qQ09OU1RDT05E
Ki8xICkJCS8qIGxvb3BzIHVudGlsIGVuZC1vZi1maWxlIGlzIHJlYWNoZWQgKi8KIAkJewogCQl5
eV9jcCA9IHl5Zy0+eXlfY19idWZfcDsKIApAQCAtODc4LDcgKzExOTIsNyBAQAogeXlfbWF0Y2g6
CiAJCWRvCiAJCQl7Ci0JCQlyZWdpc3RlciBZWV9DSEFSIHl5X2MgPSB5eV9lY1tZWV9TQ19UT19V
SSgqeXlfY3ApXSA7CisJCQlZWV9DSEFSIHl5X2MgPSB5eV9lY1tZWV9TQ19UT19VSSgqeXlfY3Ap
XSA7CiAJCQlpZiAoIHl5X2FjY2VwdFt5eV9jdXJyZW50X3N0YXRlXSApCiAJCQkJewogCQkJCXl5
Zy0+eXlfbGFzdF9hY2NlcHRpbmdfc3RhdGUgPSB5eV9jdXJyZW50X3N0YXRlOwpAQCAtODkwLDcg
KzEyMDQsNyBAQAogCQkJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA5OCApCiAJCQkJCXl5X2Mg
PSB5eV9tZXRhWyh1bnNpZ25lZCBpbnQpIHl5X2NdOwogCQkJCX0KLQkJCXl5X2N1cnJlbnRfc3Rh
dGUgPSB5eV9ueHRbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArICh1bnNpZ25lZCBpbnQpIHl5
X2NdOworCQkJeXlfY3VycmVudF9zdGF0ZSA9IHl5X254dFt5eV9iYXNlW3l5X2N1cnJlbnRfc3Rh
dGVdICsgKGZsZXhfaW50MTZfdCkgeXlfY107CiAJCQkrK3l5X2NwOwogCQkJfQogCQl3aGlsZSAo
IHl5X2N1cnJlbnRfc3RhdGUgIT0gOTcgKTsKQEAgLTkwMiw4ICsxMjE2LDExIEBACiAKIAkJWVlf
RE9fQkVGT1JFX0FDVElPTjsKIAorCisKIGRvX2FjdGlvbjoJLyogVGhpcyBsYWJlbCBpcyB1c2Vk
IG9ubHkgdG8gYWNjZXNzIEVPRiBhY3Rpb25zLiAqLwogCisKIAkJc3dpdGNoICggeXlfYWN0ICkK
IAl7IC8qIGJlZ2lubmluZyBvZiBhY3Rpb24gc3dpdGNoICovCiAJCQljYXNlIDA6IC8qIG11c3Qg
YmFjayB1cCAqLwpAQCAtMTMyNiw2ICsxNjQzLDExIEBACiAJfSAvKiBlbmQgb2YgdXNlcidzIGRl
Y2xhcmF0aW9ucyAqLwogfSAvKiBlbmQgb2YgcHBsZXggKi8KIAorCisKKworCisKIC8qIHl5X2dl
dF9uZXh0X2J1ZmZlciAtIHRyeSB0byByZWFkIGluIGEgbmV3IGJ1ZmZlcgogICoKICAqIFJldHVy
bnMgYSBjb2RlIHJlcHJlc2VudGluZyBhbiBhY3Rpb246CkBAIC0xMzM2LDkgKzE2NTgsOSBAQAog
c3RhdGljIGludCB5eV9nZXRfbmV4dF9idWZmZXIgKHl5c2Nhbl90IHl5c2Nhbm5lcikKIHsKICAg
ICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7Ci0J
cmVnaXN0ZXIgY2hhciAqZGVzdCA9IFlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfY2hfYnVm
OwotCXJlZ2lzdGVyIGNoYXIgKnNvdXJjZSA9IHl5Zy0+eXl0ZXh0X3B0cjsKLQlyZWdpc3RlciBp
bnQgbnVtYmVyX3RvX21vdmUsIGk7CisJY2hhciAqZGVzdCA9IFlZX0NVUlJFTlRfQlVGRkVSX0xW
QUxVRS0+eXlfY2hfYnVmOworCWNoYXIgKnNvdXJjZSA9IHl5Zy0+eXl0ZXh0X3B0cjsKKwl5eV9z
aXplX3QgbnVtYmVyX3RvX21vdmUsIGk7CiAJaW50IHJldF92YWw7CiAKIAlpZiAoIHl5Zy0+eXlf
Y19idWZfcCA+ICZZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2NoX2J1Zlt5eWctPnl5X25f
Y2hhcnMgKyAxXSApCkBAIC0xMzY3LDcgKzE2ODksNyBAQAogCS8qIFRyeSB0byByZWFkIG1vcmUg
ZGF0YS4gKi8KIAogCS8qIEZpcnN0IG1vdmUgbGFzdCBjaGFycyB0byBzdGFydCBvZiBidWZmZXIu
ICovCi0JbnVtYmVyX3RvX21vdmUgPSAoaW50KSAoeXlnLT55eV9jX2J1Zl9wIC0geXlnLT55eXRl
eHRfcHRyKSAtIDE7CisJbnVtYmVyX3RvX21vdmUgPSAoeXlfc2l6ZV90KSAoeXlnLT55eV9jX2J1
Zl9wIC0geXlnLT55eXRleHRfcHRyKSAtIDE7CiAKIAlmb3IgKCBpID0gMDsgaSA8IG51bWJlcl90
b19tb3ZlOyArK2kgKQogCQkqKGRlc3QrKykgPSAqKHNvdXJjZSsrKTsKQEAgLTEzODAsOCArMTcw
Miw4IEBACiAKIAllbHNlCiAJCXsKLQkJCXl5X3NpemVfdCBudW1fdG9fcmVhZCA9Ci0JCQlZWV9D
VVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2J1Zl9zaXplIC0gbnVtYmVyX3RvX21vdmUgLSAxOwor
CQkJaW50IG51bV90b19yZWFkID0KKwkJCXN0YXRpY19jYXN0PGludD4oWVlfQ1VSUkVOVF9CVUZG
RVJfTFZBTFVFLT55eV9idWZfc2l6ZSAtIG51bWJlcl90b19tb3ZlIC0gMSk7CiAKIAkJd2hpbGUg
KCBudW1fdG9fcmVhZCA8PSAwICkKIAkJCXsgLyogTm90IGVub3VnaCByb29tIGluIHRoZSBidWZm
ZXIgLSBncm93IGl0LiAqLwpAQCAtMTM5NCw3ICsxNzE2LDcgQEAKIAogCQkJaWYgKCBiLT55eV9p
c19vdXJfYnVmZmVyICkKIAkJCQl7Ci0JCQkJeXlfc2l6ZV90IG5ld19zaXplID0gYi0+eXlfYnVm
X3NpemUgKiAyOworCQkJCWludCBuZXdfc2l6ZSA9IGItPnl5X2J1Zl9zaXplICogMjsKIAogCQkJ
CWlmICggbmV3X3NpemUgPD0gMCApCiAJCQkJCWItPnl5X2J1Zl9zaXplICs9IGItPnl5X2J1Zl9z
aXplIC8gODsKQEAgLTE0MDcsNyArMTcyOSw3IEBACiAJCQkJfQogCQkJZWxzZQogCQkJCS8qIENh
bid0IGdyb3cgaXQsIHdlIGRvbid0IG93biBpdC4gKi8KLQkJCQliLT55eV9jaF9idWYgPSAwOwor
CQkJCWItPnl5X2NoX2J1ZiA9IE5VTEw7CiAKIAkJCWlmICggISBiLT55eV9jaF9idWYgKQogCQkJ
CVlZX0ZBVEFMX0VSUk9SKApAQCAtMTQxNSw4ICsxNzM3LDggQEAKIAogCQkJeXlnLT55eV9jX2J1
Zl9wID0gJmItPnl5X2NoX2J1Zlt5eV9jX2J1Zl9wX29mZnNldF07CiAKLQkJCW51bV90b19yZWFk
ID0gWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9idWZfc2l6ZSAtCi0JCQkJCQludW1iZXJf
dG9fbW92ZSAtIDE7CisJCQludW1fdG9fcmVhZCA9IHN0YXRpY19jYXN0PGludD4oWVlfQ1VSUkVO
VF9CVUZGRVJfTFZBTFVFLT55eV9idWZfc2l6ZSAtCisJCQkJCQludW1iZXJfdG9fbW92ZSAtIDEp
OwogCiAJCQl9CiAKQEAgLTE0MjQsOCArMTc0NiwxMCBAQAogCQkJbnVtX3RvX3JlYWQgPSBZWV9S
RUFEX0JVRl9TSVpFOwogCiAJCS8qIFJlYWQgaW4gbW9yZSBkYXRhLiAqLworCQl5eV9zaXplX3Qg
cmV0ID0gMDsKIAkJWVlfSU5QVVQoICgmWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9jaF9i
dWZbbnVtYmVyX3RvX21vdmVdKSwKLQkJCXl5Zy0+eXlfbl9jaGFycywgbnVtX3RvX3JlYWQgKTsK
KwkJCXJldCwgbnVtX3RvX3JlYWQgKTsKKwkJeXlnLT55eV9uX2NoYXJzID0gc3RhdGljX2Nhc3Q8
aW50PihyZXQpOwogCiAJCVlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfbl9jaGFycyA9IHl5
Zy0+eXlfbl9jaGFyczsKIAkJfQpAQCAtMTQ0OSw3ICsxNzczLDcgQEAKIAllbHNlCiAJCXJldF92
YWwgPSBFT0JfQUNUX0NPTlRJTlVFX1NDQU47CiAKLQlpZiAoKHl5X3NpemVfdCkgKHl5Zy0+eXlf
bl9jaGFycyArIG51bWJlcl90b19tb3ZlKSA+IFlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlf
YnVmX3NpemUpIHsKKwlpZiAoKGludCkgKHl5Zy0+eXlfbl9jaGFycyArIG51bWJlcl90b19tb3Zl
KSA+IFlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfYnVmX3NpemUpIHsKIAkJLyogRXh0ZW5k
IHRoZSBhcnJheSBieSA1MCUsIHBsdXMgdGhlIG51bWJlciB3ZSByZWFsbHkgbmVlZC4gKi8KIAkJ
eXlfc2l6ZV90IG5ld19zaXplID0geXlnLT55eV9uX2NoYXJzICsgbnVtYmVyX3RvX21vdmUgKyAo
eXlnLT55eV9uX2NoYXJzID4+IDEpOwogCQlZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2No
X2J1ZiA9IChjaGFyICopIHBwcmVhbGxvYygodm9pZCAqKSBZWV9DVVJSRU5UX0JVRkZFUl9MVkFM
VUUtPnl5X2NoX2J1ZixuZXdfc2l6ZSAseXlzY2FubmVyICk7CkBAIC0xNDU3LDcgKzE3ODEsNyBA
QAogCQkJWVlfRkFUQUxfRVJST1IoICJvdXQgb2YgZHluYW1pYyBtZW1vcnkgaW4geXlfZ2V0X25l
eHRfYnVmZmVyKCkiICk7CiAJfQogCi0JeXlnLT55eV9uX2NoYXJzICs9IG51bWJlcl90b19tb3Zl
OworCXl5Zy0+eXlfbl9jaGFycyArPSBzdGF0aWNfY2FzdDxpbnQ+KG51bWJlcl90b19tb3ZlKTsK
IAlZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2NoX2J1Zlt5eWctPnl5X25fY2hhcnNdID0g
WVlfRU5EX09GX0JVRkZFUl9DSEFSOwogCVlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfY2hf
YnVmW3l5Zy0+eXlfbl9jaGFycyArIDFdID0gWVlfRU5EX09GX0JVRkZFUl9DSEFSOwogCkBAIC0x
NDY2LDEyICsxNzkwLDE0IEBACiAJcmV0dXJuIHJldF92YWw7CiB9CiAKKwogLyogeXlfZ2V0X3By
ZXZpb3VzX3N0YXRlIC0gZ2V0IHRoZSBzdGF0ZSBqdXN0IGJlZm9yZSB0aGUgRU9CIGNoYXIgd2Fz
IHJlYWNoZWQgKi8KIAorCiAgICAgc3RhdGljIHl5X3N0YXRlX3R5cGUgeXlfZ2V0X3ByZXZpb3Vz
X3N0YXRlICh5eXNjYW5fdCB5eXNjYW5uZXIpCiB7Ci0JcmVnaXN0ZXIgeXlfc3RhdGVfdHlwZSB5
eV9jdXJyZW50X3N0YXRlOwotCXJlZ2lzdGVyIGNoYXIgKnl5X2NwOworCXl5X3N0YXRlX3R5cGUg
eXlfY3VycmVudF9zdGF0ZTsKKwljaGFyICp5eV9jcDsKICAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5
eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7CiAKIAl5eV9jdXJyZW50X3N0YXRlID0g
eXlnLT55eV9zdGFydDsKQEAgLTE0NzgsNyArMTgwNCw3IEBACiAKIAlmb3IgKCB5eV9jcCA9IHl5
Zy0+eXl0ZXh0X3B0ciArIFlZX01PUkVfQURKOyB5eV9jcCA8IHl5Zy0+eXlfY19idWZfcDsgKyt5
eV9jcCApCiAJCXsKLQkJcmVnaXN0ZXIgWVlfQ0hBUiB5eV9jID0gKCp5eV9jcCA/IHl5X2VjW1lZ
X1NDX1RPX1VJKCp5eV9jcCldIDogMSk7CisJCVlZX0NIQVIgeXlfYyA9ICgqeXlfY3AgPyB5eV9l
Y1tZWV9TQ19UT19VSSgqeXlfY3ApXSA6IDEpOwogCQlpZiAoIHl5X2FjY2VwdFt5eV9jdXJyZW50
X3N0YXRlXSApCiAJCQl7CiAJCQl5eWctPnl5X2xhc3RfYWNjZXB0aW5nX3N0YXRlID0geXlfY3Vy
cmVudF9zdGF0ZTsKQEAgLTE0OTAsMTIgKzE4MTYsMTMgQEAKIAkJCWlmICggeXlfY3VycmVudF9z
dGF0ZSA+PSA5OCApCiAJCQkJeXlfYyA9IHl5X21ldGFbKHVuc2lnbmVkIGludCkgeXlfY107CiAJ
CQl9Ci0JCXl5X2N1cnJlbnRfc3RhdGUgPSB5eV9ueHRbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRl
XSArICh1bnNpZ25lZCBpbnQpIHl5X2NdOworCQl5eV9jdXJyZW50X3N0YXRlID0geXlfbnh0W3l5
X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyAoZmxleF9pbnQxNl90KSB5eV9jXTsKIAkJfQogCiAJ
cmV0dXJuIHl5X2N1cnJlbnRfc3RhdGU7CiB9CiAKKwogLyogeXlfdHJ5X05VTF90cmFucyAtIHRy
eSB0byBtYWtlIGEgdHJhbnNpdGlvbiBvbiB0aGUgTlVMIGNoYXJhY3RlcgogICoKICAqIHN5bm9w
c2lzCkBAIC0xNTAzLDExICsxODMwLDExIEBACiAgKi8KICAgICBzdGF0aWMgeXlfc3RhdGVfdHlw
ZSB5eV90cnlfTlVMX3RyYW5zICAoeXlfc3RhdGVfdHlwZSB5eV9jdXJyZW50X3N0YXRlICwgeXlz
Y2FuX3QgeXlzY2FubmVyKQogewotCXJlZ2lzdGVyIGludCB5eV9pc19qYW07CisJaW50IHl5X2lz
X2phbTsKICAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNj
YW5uZXI7IC8qIFRoaXMgdmFyIG1heSBiZSB1bnVzZWQgZGVwZW5kaW5nIHVwb24gb3B0aW9ucy4g
Ki8KLQlyZWdpc3RlciBjaGFyICp5eV9jcCA9IHl5Zy0+eXlfY19idWZfcDsKKwljaGFyICp5eV9j
cCA9IHl5Zy0+eXlfY19idWZfcDsKIAotCXJlZ2lzdGVyIFlZX0NIQVIgeXlfYyA9IDE7CisJWVlf
Q0hBUiB5eV9jID0gMTsKIAlpZiAoIHl5X2FjY2VwdFt5eV9jdXJyZW50X3N0YXRlXSApCiAJCXsK
IAkJeXlnLT55eV9sYXN0X2FjY2VwdGluZ19zdGF0ZSA9IHl5X2N1cnJlbnRfc3RhdGU7CkBAIC0x
NTE5LDcgKzE4NDYsNyBAQAogCQlpZiAoIHl5X2N1cnJlbnRfc3RhdGUgPj0gOTggKQogCQkJeXlf
YyA9IHl5X21ldGFbKHVuc2lnbmVkIGludCkgeXlfY107CiAJCX0KLQl5eV9jdXJyZW50X3N0YXRl
ID0geXlfbnh0W3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyAodW5zaWduZWQgaW50KSB5eV9j
XTsKKwl5eV9jdXJyZW50X3N0YXRlID0geXlfbnh0W3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0g
KyAoZmxleF9pbnQxNl90KSB5eV9jXTsKIAl5eV9pc19qYW0gPSAoeXlfY3VycmVudF9zdGF0ZSA9
PSA5Nyk7CiAKIAkodm9pZCl5eWc7CkBAIC0xNTI2LDcgKzE4NTMsMTIgQEAKIAlyZXR1cm4geXlf
aXNfamFtID8gMCA6IHl5X2N1cnJlbnRfc3RhdGU7CiB9CiAKLSNpZiAwIC8vI2lmbmRlZiBZWV9O
T19JTlBVVAorCisjaWZuZGVmIFlZX05PX1VOUFVUCisKKyNlbmRpZgorCisjaWYgMAogI2lmZGVm
IF9fY3BsdXNwbHVzCiAgICAgc3RhdGljIGludCB5eWlucHV0ICh5eXNjYW5fdCB5eXNjYW5uZXIp
CiAjZWxzZQpAQCAtMTU1MSw3ICsxODgzLDcgQEAKIAogCQllbHNlCiAJCQl7IC8qIG5lZWQgbW9y
ZSBpbnB1dCAqLwotCQkJeXlfc2l6ZV90IG9mZnNldCA9IHl5Zy0+eXlfY19idWZfcCAtIHl5Zy0+
eXl0ZXh0X3B0cjsKKwkJCWF1dG8gb2Zmc2V0ID0geXlnLT55eV9jX2J1Zl9wIC0geXlnLT55eXRl
eHRfcHRyOwogCQkJKyt5eWctPnl5X2NfYnVmX3A7CiAKIAkJCXN3aXRjaCAoIHl5X2dldF9uZXh0
X2J1ZmZlciggeXlzY2FubmVyICkgKQpAQCAtMTU3NSw3ICsxOTA3LDcgQEAKIAkJCQljYXNlIEVP
Ql9BQ1RfRU5EX09GX0ZJTEU6CiAJCQkJCXsKIAkJCQkJaWYgKCBwcHdyYXAoeXlzY2FubmVyICkg
KQotCQkJCQkJcmV0dXJuIEVPRjsKKwkJCQkJCXJldHVybiAwOwogCiAJCQkJCWlmICggISB5eWct
Pnl5X2RpZF9idWZmZXJfc3dpdGNoX29uX2VvZiApCiAJCQkJCQlZWV9ORVdfRklMRTsKQEAgLTE1
OTcsNiArMTkyOSw3IEBACiAJKnl5Zy0+eXlfY19idWZfcCA9ICdcMCc7CS8qIHByZXNlcnZlIHl5
dGV4dCAqLwogCXl5Zy0+eXlfaG9sZF9jaGFyID0gKisreXlnLT55eV9jX2J1Zl9wOwogCisKIAly
ZXR1cm4gYzsKIH0KICNlbmRpZgkvKiBpZm5kZWYgWVlfTk9fSU5QVVQgKi8KQEAgLTE2MjAsNiAr
MTk1Myw3IEBACiAJcHBfbG9hZF9idWZmZXJfc3RhdGUoeXlzY2FubmVyICk7CiB9CiAKKwogLyoq
IFN3aXRjaCB0byBhIGRpZmZlcmVudCBpbnB1dCBidWZmZXIuCiAgKiBAcGFyYW0gbmV3X2J1ZmZl
ciBUaGUgbmV3IGlucHV0IGJ1ZmZlci4KICAqIEBwYXJhbSB5eXNjYW5uZXIgVGhlIHNjYW5uZXIg
b2JqZWN0LgpAQCAtMTY1Niw2ICsxOTkwLDcgQEAKIAl5eWctPnl5X2RpZF9idWZmZXJfc3dpdGNo
X29uX2VvZiA9IDE7CiB9CiAKKwogc3RhdGljIHZvaWQgcHBfbG9hZF9idWZmZXJfc3RhdGUgICh5
eXNjYW5fdCB5eXNjYW5uZXIpCiB7CiAgICAgc3RydWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVj
dCB5eWd1dHNfdCopeXlzY2FubmVyOwpAQCAtMTY5NSw2ICsyMDMwLDcgQEAKIAlyZXR1cm4gYjsK
IH0KIAorCiAvKiogRGVzdHJveSB0aGUgYnVmZmVyLgogICogQHBhcmFtIGIgYSBidWZmZXIgY3Jl
YXRlZCB3aXRoIHBwX2NyZWF0ZV9idWZmZXIoKQogICogQHBhcmFtIHl5c2Nhbm5lciBUaGUgc2Nh
bm5lciBvYmplY3QuCkBAIC0xNzE1LDYgKzIwNTEsNyBAQAogCXBwZnJlZSgodm9pZCAqKSBiICx5
eXNjYW5uZXIgKTsKIH0KIAorCiAvKiBJbml0aWFsaXplcyBvciByZWluaXRpYWxpemVzIGEgYnVm
ZmVyLgogICogVGhpcyBmdW5jdGlvbiBpcyBzb21ldGltZXMgY2FsbGVkIG1vcmUgdGhhbiBvbmNl
IG9uIHRoZSBzYW1lIGJ1ZmZlciwKICAqIHN1Y2ggYXMgZHVyaW5nIGEgcHByZXN0YXJ0KCkgb3Ig
YXQgRU9GLgpAQCAtMTczOSw4ICsyMDc2LDExIEBACiAgICAgICAgIGItPnl5X2JzX2NvbHVtbiA9
IDA7CiAgICAgfQogCisKKyAgICAKICAgICAgICAgYi0+eXlfaXNfaW50ZXJhY3RpdmUgPSAwOwog
ICAgIAorCiAJZXJybm8gPSBvZXJybm87CiB9CiAKQEAgLTE4MDUsNiArMjE0NSw3IEBACiAJeXln
LT55eV9kaWRfYnVmZmVyX3N3aXRjaF9vbl9lb2YgPSAxOwogfQogCisKIC8qKiBSZW1vdmVzIGFu
ZCBkZWxldGVzIHRoZSB0b3Agb2YgdGhlIHN0YWNrLCBpZiBwcmVzZW50LgogICogIFRoZSBuZXh0
IGVsZW1lbnQgYmVjb21lcyB0aGUgbmV3IHRvcC4KICAqICBAcGFyYW0geXlzY2FubmVyIFRoZSBz
Y2FubmVyIG9iamVjdC4KQEAgLTE4MjYsNiArMjE2Nyw3IEBACiAJfQogfQogCisKIC8qIEFsbG9j
YXRlcyB0aGUgc3RhY2sgaWYgaXQgZG9lcyBub3QgZXhpc3QuCiAgKiAgR3VhcmFudGVlcyBzcGFj
ZSBmb3IgYXQgbGVhc3Qgb25lIHB1c2guCiAgKi8KQEAgLTE4NDAsNyArMjE4Miw3IEBACiAJCSAq
IHNjYW5uZXIgd2lsbCBldmVuIG5lZWQgYSBzdGFjay4gV2UgdXNlIDIgaW5zdGVhZCBvZiAxIHRv
IGF2b2lkIGFuCiAJCSAqIGltbWVkaWF0ZSByZWFsbG9jIG9uIHRoZSBuZXh0IGNhbGwuCiAgICAg
ICAgICAqLwotCQludW1fdG9fYWxsb2MgPSAxOworICAgICAgbnVtX3RvX2FsbG9jID0gMTsgLyog
QWZ0ZXIgYWxsIHRoYXQgdGFsaywgdGhpcyB3YXMgc2V0IHRvIDEgYW55d2F5cy4uLiAqLwogCQl5
eWctPnl5X2J1ZmZlcl9zdGFjayA9IChzdHJ1Y3QgeXlfYnVmZmVyX3N0YXRlKiopcHBhbGxvYwog
CQkJCQkJCQkobnVtX3RvX2FsbG9jICogc2l6ZW9mKHN0cnVjdCB5eV9idWZmZXJfc3RhdGUqKQog
CQkJCQkJCQksIHl5c2Nhbm5lcik7CkBAIC0xODQ3LDYgKzIxODksNyBAQAogCQlpZiAoICEgeXln
LT55eV9idWZmZXJfc3RhY2sgKQogCQkJWVlfRkFUQUxfRVJST1IoICJvdXQgb2YgZHluYW1pYyBt
ZW1vcnkgaW4gcHBlbnN1cmVfYnVmZmVyX3N0YWNrKCkiICk7CiAJCQkJCQkJCSAgCisJCQogCQlt
ZW1zZXQoeXlnLT55eV9idWZmZXJfc3RhY2ssIDAsIG51bV90b19hbGxvYyAqIHNpemVvZihzdHJ1
Y3QgeXlfYnVmZmVyX3N0YXRlKikpOwogCQkJCQogCQl5eWctPnl5X2J1ZmZlcl9zdGFja19tYXgg
PSBudW1fdG9fYWxsb2M7CkBAIC0xODU3LDcgKzIyMDAsNyBAQAogCWlmICh5eWctPnl5X2J1ZmZl
cl9zdGFja190b3AgPj0gKHl5Zy0+eXlfYnVmZmVyX3N0YWNrX21heCkgLSAxKXsKIAogCQkvKiBJ
bmNyZWFzZSB0aGUgYnVmZmVyIHRvIHByZXBhcmUgZm9yIGEgcG9zc2libGUgcHVzaC4gKi8KLQkJ
aW50IGdyb3dfc2l6ZSA9IDggLyogYXJiaXRyYXJ5IGdyb3cgc2l6ZSAqLzsKKwkJeXlfc2l6ZV90
IGdyb3dfc2l6ZSA9IDggLyogYXJiaXRyYXJ5IGdyb3cgc2l6ZSAqLzsKIAogCQludW1fdG9fYWxs
b2MgPSB5eWctPnl5X2J1ZmZlcl9zdGFja19tYXggKyBncm93X3NpemU7CiAJCXl5Zy0+eXlfYnVm
ZmVyX3N0YWNrID0gKHN0cnVjdCB5eV9idWZmZXJfc3RhdGUqKilwcHJlYWxsb2MKQEAgLTE4NzMs
NiArMjIxNiwxMCBAQAogCX0KIH0KIAorCisKKworCiAvKiogU2V0dXAgdGhlIGlucHV0IGJ1ZmZl
ciBzdGF0ZSB0byBzY2FuIGRpcmVjdGx5IGZyb20gYSB1c2VyLXNwZWNpZmllZCBjaGFyYWN0ZXIg
YnVmZmVyLgogICogQHBhcmFtIGJhc2UgdGhlIGNoYXJhY3RlciBidWZmZXIKICAqIEBwYXJhbSBz
aXplIHRoZSBzaXplIGluIGJ5dGVzIG9mIHRoZSBjaGFyYWN0ZXIgYnVmZmVyCkBAIC0xODg3LDE2
ICsyMjM0LDE2IEBACiAJICAgICBiYXNlW3NpemUtMl0gIT0gWVlfRU5EX09GX0JVRkZFUl9DSEFS
IHx8CiAJICAgICBiYXNlW3NpemUtMV0gIT0gWVlfRU5EX09GX0JVRkZFUl9DSEFSICkKIAkJLyog
VGhleSBmb3Jnb3QgdG8gbGVhdmUgcm9vbSBmb3IgdGhlIEVPQidzLiAqLwotCQlyZXR1cm4gMDsK
KwkJcmV0dXJuIE5VTEw7CiAKIAliID0gKFlZX0JVRkZFUl9TVEFURSkgcHBhbGxvYyhzaXplb2Yo
IHN0cnVjdCB5eV9idWZmZXJfc3RhdGUgKSAseXlzY2FubmVyICk7CiAJaWYgKCAhIGIgKQogCQlZ
WV9GQVRBTF9FUlJPUiggIm91dCBvZiBkeW5hbWljIG1lbW9yeSBpbiBwcF9zY2FuX2J1ZmZlcigp
IiApOwogCi0JYi0+eXlfYnVmX3NpemUgPSBzaXplIC0gMjsJLyogIi0gMiIgdG8gdGFrZSBjYXJl
IG9mIEVPQidzICovCisJYi0+eXlfYnVmX3NpemUgPSBzdGF0aWNfY2FzdDxpbnQ+KHNpemUgLSAy
KTsJLyogIi0gMiIgdG8gdGFrZSBjYXJlIG9mIEVPQidzICovCiAJYi0+eXlfYnVmX3BvcyA9IGIt
Pnl5X2NoX2J1ZiA9IGJhc2U7CiAJYi0+eXlfaXNfb3VyX2J1ZmZlciA9IDA7Ci0JYi0+eXlfaW5w
dXRfZmlsZSA9IDA7CisJYi0+eXlfaW5wdXRfZmlsZSA9IE5VTEw7CiAJYi0+eXlfbl9jaGFycyA9
IGItPnl5X2J1Zl9zaXplOwogCWItPnl5X2lzX2ludGVyYWN0aXZlID0gMDsKIAliLT55eV9hdF9i
b2wgPSAxOwpAQCAtMTkwOCw2ICsyMjU1LDkgQEAKIAlyZXR1cm4gYjsKIH0KIAorCisKKwogLyoq
IFNldHVwIHRoZSBpbnB1dCBidWZmZXIgc3RhdGUgdG8gc2NhbiBhIHN0cmluZy4gVGhlIG5leHQg
Y2FsbCB0byBwcGxleCgpIHdpbGwKICAqIHNjYW4gZnJvbSBhIEBlIGNvcHkgb2YgQGEgc3RyLgog
ICogQHBhcmFtIHl5c3RyIGEgTlVMLXRlcm1pbmF0ZWQgc3RyaW5nIHRvIHNjYW4KQEAgLTE5MTks
OSArMjI2OSwxMiBAQAogWVlfQlVGRkVSX1NUQVRFIHBwX3NjYW5fc3RyaW5nICh5eWNvbnN0IGNo
YXIgKiB5eXN0ciAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKIHsKICAgICAKLQlyZXR1cm4gcHBfc2Nh
bl9ieXRlcyh5eXN0cixzdHJsZW4oeXlzdHIpICx5eXNjYW5uZXIpOworCXJldHVybiBwcF9zY2Fu
X2J5dGVzKHl5c3RyLChpbnQpIHN0cmxlbih5eXN0cikgLHl5c2Nhbm5lcik7CiB9CiAKKworCisK
IC8qKiBTZXR1cCB0aGUgaW5wdXQgYnVmZmVyIHN0YXRlIHRvIHNjYW4gdGhlIGdpdmVuIGJ5dGVz
LiBUaGUgbmV4dCBjYWxsIHRvIHBwbGV4KCkgd2lsbAogICogc2NhbiBmcm9tIGEgQGUgY29weSBv
ZiBAYSBieXRlcy4KICAqIEBwYXJhbSB5eWJ5dGVzIHRoZSBieXRlIGJ1ZmZlciB0byBzY2FuCkBA
IC0xOTI5LDcgKzIyODIsNyBAQAogICogQHBhcmFtIHl5c2Nhbm5lciBUaGUgc2Nhbm5lciBvYmpl
Y3QuCiAgKiBAcmV0dXJuIHRoZSBuZXdseSBhbGxvY2F0ZWQgYnVmZmVyIHN0YXRlIG9iamVjdC4K
ICAqLwotWVlfQlVGRkVSX1NUQVRFIHBwX3NjYW5fYnl0ZXMgICh5eWNvbnN0IGNoYXIgKiB5eWJ5
dGVzLCB5eV9zaXplX3QgIF95eWJ5dGVzX2xlbiAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKK1lZX0JV
RkZFUl9TVEFURSBwcF9zY2FuX2J5dGVzICAoeXljb25zdCBjaGFyICogeXlieXRlcywgaW50ICBf
eXlieXRlc19sZW4gLCB5eXNjYW5fdCB5eXNjYW5uZXIpCiB7CiAJWVlfQlVGRkVSX1NUQVRFIGI7
CiAJY2hhciAqYnVmOwpAQCAtMTkzNywxMiArMjI5MCwxMiBAQAogCXl5X3NpemVfdCBpOwogICAg
IAogCS8qIEdldCBtZW1vcnkgZm9yIGZ1bGwgYnVmZmVyLCBpbmNsdWRpbmcgc3BhY2UgZm9yIHRy
YWlsaW5nIEVPQidzLiAqLwotCW4gPSBfeXlieXRlc19sZW4gKyAyOworCW4gPSAoeXlfc2l6ZV90
KSBfeXlieXRlc19sZW4gKyAyOwogCWJ1ZiA9IChjaGFyICopIHBwYWxsb2MobiAseXlzY2FubmVy
ICk7CiAJaWYgKCAhIGJ1ZiApCiAJCVlZX0ZBVEFMX0VSUk9SKCAib3V0IG9mIGR5bmFtaWMgbWVt
b3J5IGluIHBwX3NjYW5fYnl0ZXMoKSIgKTsKIAotCWZvciAoIGkgPSAwOyBpIDwgX3l5Ynl0ZXNf
bGVuOyArK2kgKQorCWZvciAoIGkgPSAwOyBpIDwgc3RhdGljX2Nhc3Q8eXlfc2l6ZV90PihfeXli
eXRlc19sZW4pOyArK2kgKQogCQlidWZbaV0gPSB5eWJ5dGVzW2ldOwogCiAJYnVmW195eWJ5dGVz
X2xlbl0gPSBidWZbX3l5Ynl0ZXNfbGVuKzFdID0gWVlfRU5EX09GX0JVRkZFUl9DSEFSOwpAQCAt
MTk1OSwxMyArMjMxMiwyNSBAQAogCXJldHVybiBiOwogfQogCisKKworCisKKworCisKKworCisK
ICNpZm5kZWYgWVlfRVhJVF9GQUlMVVJFCiAjZGVmaW5lIFlZX0VYSVRfRkFJTFVSRSAyCiAjZW5k
aWYKIAotc3RhdGljIHZvaWQgeXlfZmF0YWxfZXJyb3IgKHl5Y29uc3QgY2hhciogbXNnICwgeXlz
Y2FuX3QgeXlzY2FubmVyKQorc3RhdGljIHZvaWQgeXlub3JldHVybiB5eV9mYXRhbF9lcnJvciAo
eXljb25zdCBjaGFyKiBtc2cgLCB5eXNjYW5fdCB5eXNjYW5uZXIpCiB7Ci0gICAgCSh2b2lkKSBm
cHJpbnRmKCBzdGRlcnIsICIlc1xuIiwgbXNnICk7CisJc3RydWN0IHl5Z3V0c190ICogeXlnID0g
KHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOworCSh2b2lkKXl5ZzsKKwkodm9pZCkgZnByaW50
Ziggc3RkZXJyLCAiJXNcbiIsIG1zZyApOwogCWV4aXQoIFlZX0VYSVRfRkFJTFVSRSApOwogfQog
CkBAIC0xOTg2LDggKzIzNTEsMTEgQEAKIAkJfSBcCiAJd2hpbGUgKCAwICkKIAorCisKIC8qIEFj
Y2Vzc29yICBtZXRob2RzIChnZXQvc2V0IGZ1bmN0aW9ucykgdG8gc3RydWN0IG1lbWJlcnMuICov
CiAKKwogLyoqIEdldCB0aGUgdXNlci1kZWZpbmVkIGRhdGEgZm9yIHRoaXMgc2Nhbm5lci4KICAq
IEBwYXJhbSB5eXNjYW5uZXIgVGhlIHNjYW5uZXIgb2JqZWN0LgogICovCkBAIC0xOTk3LDYgKzIz
NjUsOCBAQAogICAgIHJldHVybiB5eWV4dHJhOwogfQogCisKKwogLyoqIEdldCB0aGUgY3VycmVu
dCBsaW5lIG51bWJlci4KICAqIEBwYXJhbSB5eXNjYW5uZXIgVGhlIHNjYW5uZXIgb2JqZWN0Lgog
ICovCkBAIC0yMDA0LDYgKzIzNzQsNyBAQAogewogICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9
IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKICAgICAKKyAgICAKICAgICAgICAgaWYgKCEg
WVlfQ1VSUkVOVF9CVUZGRVIpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAKQEAgLTIwMTAs
NiArMjM4MSw5IEBACiAgICAgcmV0dXJuIHl5bGluZW5vOwogfQogCisKKworCiAvKiogR2V0IHRo
ZSBjdXJyZW50IGNvbHVtbiBudW1iZXIuCiAgKiBAcGFyYW0geXlzY2FubmVyIFRoZSBzY2FubmVy
IG9iamVjdC4KICAqLwpAQCAtMjAxNyw2ICsyMzkxLDcgQEAKIHsKICAgICBzdHJ1Y3QgeXlndXRz
X3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7CiAgICAgCisgICAgCiAgICAg
ICAgIGlmICghIFlZX0NVUlJFTlRfQlVGRkVSKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAg
CkBAIC0yMDIzLDYgKzIzOTgsOSBAQAogICAgIHJldHVybiB5eWNvbHVtbjsKIH0KIAorCisKKwog
LyoqIEdldCB0aGUgaW5wdXQgc3RyZWFtLgogICogQHBhcmFtIHl5c2Nhbm5lciBUaGUgc2Nhbm5l
ciBvYmplY3QuCiAgKi8KQEAgLTIwMzIsNiArMjQxMCw4IEBACiAgICAgcmV0dXJuIHl5aW47CiB9
CiAKKworCiAvKiogR2V0IHRoZSBvdXRwdXQgc3RyZWFtLgogICogQHBhcmFtIHl5c2Nhbm5lciBU
aGUgc2Nhbm5lciBvYmplY3QuCiAgKi8KQEAgLTIwNDEsMTUgKzI0MjEsMTggQEAKICAgICByZXR1
cm4geXlvdXQ7CiB9CiAKKworCiAvKiogR2V0IHRoZSBsZW5ndGggb2YgdGhlIGN1cnJlbnQgdG9r
ZW4uCiAgKiBAcGFyYW0geXlzY2FubmVyIFRoZSBzY2FubmVyIG9iamVjdC4KICAqLwoteXlfc2l6
ZV90IHBwZ2V0X2xlbmcgICh5eXNjYW5fdCB5eXNjYW5uZXIpCitpbnQgcHBnZXRfbGVuZyAgKHl5
c2Nhbl90IHl5c2Nhbm5lcikKIHsKICAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0
IHl5Z3V0c190Kil5eXNjYW5uZXI7CiAgICAgcmV0dXJuIHl5bGVuZzsKIH0KIAorCiAvKiogR2V0
IHRoZSBjdXJyZW50IHRva2VuLgogICogQHBhcmFtIHl5c2Nhbm5lciBUaGUgc2Nhbm5lciBvYmpl
Y3QuCiAgKi8KQEAgLTIwNjAsNiArMjQ0Myw4IEBACiAgICAgcmV0dXJuIHl5dGV4dDsKIH0KIAor
CisKIC8qKiBTZXQgdGhlIHVzZXItZGVmaW5lZCBkYXRhLiBUaGlzIGRhdGEgaXMgbmV2ZXIgdG91
Y2hlZCBieSB0aGUgc2Nhbm5lci4KICAqIEBwYXJhbSB1c2VyX2RlZmluZWQgVGhlIGRhdGEgdG8g
YmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgc2Nhbm5lci4KICAqIEBwYXJhbSB5eXNjYW5uZXIgVGhl
IHNjYW5uZXIgb2JqZWN0LgpAQCAtMjA3MCw1NCArMjQ1NSw3MCBAQAogICAgIHl5ZXh0cmEgPSB1
c2VyX2RlZmluZWQgOwogfQogCisKKwogLyoqIFNldCB0aGUgY3VycmVudCBsaW5lIG51bWJlci4K
LSAqIEBwYXJhbSBsaW5lX251bWJlcgorICogQHBhcmFtIF9saW5lX251bWJlciBsaW5lIG51bWJl
cgogICogQHBhcmFtIHl5c2Nhbm5lciBUaGUgc2Nhbm5lciBvYmplY3QuCiAgKi8KLXZvaWQgcHBz
ZXRfbGluZW5vIChpbnQgIGxpbmVfbnVtYmVyICwgeXlzY2FuX3QgeXlzY2FubmVyKQordm9pZCBw
cHNldF9saW5lbm8gKGludCAgX2xpbmVfbnVtYmVyICwgeXlzY2FuX3QgeXlzY2FubmVyKQogewog
ICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsK
IAorICAgIAogICAgICAgICAvKiBsaW5lbm8gaXMgb25seSB2YWxpZCBpZiBhbiBpbnB1dCBidWZm
ZXIgZXhpc3RzLiAqLwogICAgICAgICBpZiAoISBZWV9DVVJSRU5UX0JVRkZFUiApCiAgICAgICAg
ICAgIFlZX0ZBVEFMX0VSUk9SKCAicHBzZXRfbGluZW5vIGNhbGxlZCB3aXRoIG5vIGJ1ZmZlciIg
KTsKICAgICAKLSAgICB5eWxpbmVubyA9IGxpbmVfbnVtYmVyOworICAgIHl5bGluZW5vID0gX2xp
bmVfbnVtYmVyOwogfQogCisKKworCiAvKiogU2V0IHRoZSBjdXJyZW50IGNvbHVtbi4KLSAqIEBw
YXJhbSBsaW5lX251bWJlcgorICogQHBhcmFtIF9jb2x1bW5fbm8gY29sdW1uIG51bWJlcgogICog
QHBhcmFtIHl5c2Nhbm5lciBUaGUgc2Nhbm5lciBvYmplY3QuCiAgKi8KLXZvaWQgcHBzZXRfY29s
dW1uIChpbnQgIGNvbHVtbl9ubyAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKK3ZvaWQgcHBzZXRfY29s
dW1uIChpbnQgIF9jb2x1bW5fbm8gLCB5eXNjYW5fdCB5eXNjYW5uZXIpCiB7CiAgICAgc3RydWN0
IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOwogCisgICAgCiAg
ICAgICAgIC8qIGNvbHVtbiBpcyBvbmx5IHZhbGlkIGlmIGFuIGlucHV0IGJ1ZmZlciBleGlzdHMu
ICovCiAgICAgICAgIGlmICghIFlZX0NVUlJFTlRfQlVGRkVSICkKICAgICAgICAgICAgWVlfRkFU
QUxfRVJST1IoICJwcHNldF9jb2x1bW4gY2FsbGVkIHdpdGggbm8gYnVmZmVyIiApOwogICAgIAot
ICAgIHl5Y29sdW1uID0gY29sdW1uX25vOworICAgIHl5Y29sdW1uID0gX2NvbHVtbl9ubzsKIH0K
IAorCisKKworCiAvKiogU2V0IHRoZSBpbnB1dCBzdHJlYW0uIFRoaXMgZG9lcyBub3QgZGlzY2Fy
ZCB0aGUgY3VycmVudAogICogaW5wdXQgYnVmZmVyLgotICogQHBhcmFtIGluX3N0ciBBIHJlYWRh
YmxlIHN0cmVhbS4KKyAqIEBwYXJhbSBfaW5fc3RyIEEgcmVhZGFibGUgc3RyZWFtLgogICogQHBh
cmFtIHl5c2Nhbm5lciBUaGUgc2Nhbm5lciBvYmplY3QuCiAgKiBAc2VlIHBwX3N3aXRjaF90b19i
dWZmZXIKICAqLwotdm9pZCBwcHNldF9pbiAoRklMRSAqICBpbl9zdHIgLCB5eXNjYW5fdCB5eXNj
YW5uZXIpCit2b2lkIHBwc2V0X2luIChGSUxFICogIF9pbl9zdHIgLCB5eXNjYW5fdCB5eXNjYW5u
ZXIpCiB7CiAgICAgc3RydWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlz
Y2FubmVyOwotICAgIHl5aW4gPSBpbl9zdHIgOworICAgIHl5aW4gPSBfaW5fc3RyIDsKIH0KIAot
dm9pZCBwcHNldF9vdXQgKEZJTEUgKiAgb3V0X3N0ciAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKKwor
Cit2b2lkIHBwc2V0X291dCAoRklMRSAqICBfb3V0X3N0ciAsIHl5c2Nhbl90IHl5c2Nhbm5lcikK
IHsKICAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5u
ZXI7Ci0gICAgeXlvdXQgPSBvdXRfc3RyIDsKKyAgICB5eW91dCA9IF9vdXRfc3RyIDsKIH0KIAor
CisKKwogaW50IHBwZ2V0X2RlYnVnICAoeXlzY2FuX3QgeXlzY2FubmVyKQogewogICAgIHN0cnVj
dCB5eWd1dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKQEAgLTIxMjQs
MTQgKzI1MjUsMTggQEAKICAgICByZXR1cm4geXlfZmxleF9kZWJ1ZzsKIH0KIAotdm9pZCBwcHNl
dF9kZWJ1ZyAoaW50ICBiZGVidWcgLCB5eXNjYW5fdCB5eXNjYW5uZXIpCisKKwordm9pZCBwcHNl
dF9kZWJ1ZyAoaW50ICBfYmRlYnVnICwgeXlzY2FuX3QgeXlzY2FubmVyKQogewogICAgIHN0cnVj
dCB5eWd1dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKLSAgICB5eV9m
bGV4X2RlYnVnID0gYmRlYnVnIDsKKyAgICB5eV9mbGV4X2RlYnVnID0gX2JkZWJ1ZyA7CiB9CiAK
KwogLyogQWNjZXNzb3IgbWV0aG9kcyBmb3IgeXlsdmFsIGFuZCB5eWxsb2MgKi8KIAorCiBZWVNU
WVBFICogcHBnZXRfbHZhbCAgKHl5c2Nhbl90IHl5c2Nhbm5lcikKIHsKICAgICBzdHJ1Y3QgeXln
dXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7CkBAIC0yMTM4LDYgKzI1
NDMsOCBAQAogICAgIHJldHVybiB5eWx2YWw7CiB9CiAKKworCiB2b2lkIHBwc2V0X2x2YWwgKFlZ
U1RZUEUgKiAgeXlsdmFsX3BhcmFtICwgeXlzY2FuX3QgeXlzY2FubmVyKQogewogICAgIHN0cnVj
dCB5eWd1dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKQEAgLTIxNDQs
NiArMjU1MSw5IEBACiAgICAgeXlsdmFsID0geXlsdmFsX3BhcmFtOwogfQogCisKKworICAgIAog
WVlMVFlQRSAqcHBnZXRfbGxvYyAgKHl5c2Nhbl90IHl5c2Nhbm5lcikKIHsKICAgICBzdHJ1Y3Qg
eXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7CkBAIC0yMTUwLDYg
KzI1NjAsOCBAQAogICAgIHJldHVybiB5eWxsb2M7CiB9CiAgICAgCisKKyAgICAKIHZvaWQgcHBz
ZXRfbGxvYyAoWVlMVFlQRSAqICB5eWxsb2NfcGFyYW0gLCB5eXNjYW5fdCB5eXNjYW5uZXIpCiB7
CiAgICAgc3RydWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVy
OwpAQCAtMjE1Niw2ICsyNTY4LDEwIEBACiAgICAgeXlsbG9jID0geXlsbG9jX3BhcmFtOwogfQog
ICAgIAorCisKKworCiAvKiBVc2VyLXZpc2libGUgQVBJICovCiAKIC8qIHBwbGV4X2luaXQgaXMg
c3BlY2lhbCBiZWNhdXNlIGl0IGNyZWF0ZXMgdGhlIHNjYW5uZXIgaXRzZWxmLCBzbyBpdCBpcwpA
QCAtMjE4NCw2ICsyNjAwLDcgQEAKICAgICByZXR1cm4geXlfaW5pdF9nbG9iYWxzICggKnB0cl95
eV9nbG9iYWxzICk7CiB9CiAKKwogLyogcHBsZXhfaW5pdF9leHRyYSBoYXMgdGhlIHNhbWUgZnVu
Y3Rpb25hbGl0eSBhcyBwcGxleF9pbml0LCBidXQgZm9sbG93cyB0aGUKICAqIGNvbnZlbnRpb24g
b2YgdGFraW5nIHRoZSBzY2FubmVyIGFzIHRoZSBsYXN0IGFyZ3VtZW50LiBOb3RlIGhvd2V2ZXIs
IHRoYXQKICAqIHRoaXMgaXMgYSAqcG9pbnRlciogdG8gYSBzY2FubmVyLCBhcyBpdCB3aWxsIGJl
IGFsbG9jYXRlZCBieSB0aGlzIGNhbGwgKGFuZApAQCAtMjIyMCw2ICsyNjM3LDcgQEAKICAgICBy
ZXR1cm4geXlfaW5pdF9nbG9iYWxzICggKnB0cl95eV9nbG9iYWxzICk7CiB9CiAKKwogc3RhdGlj
IGludCB5eV9pbml0X2dsb2JhbHMgKHl5c2Nhbl90IHl5c2Nhbm5lcikKIHsKICAgICBzdHJ1Y3Qg
eXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7CkBAIC0yMjI3LDI0
ICsyNjQ1LDMxIEBACiAgICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBwcGxleF9k
ZXN0cm95KCksIHNvIGRvbid0IGFsbG9jYXRlIGhlcmUuCiAgICAgICovCiAKLSAgICB5eWctPnl5
X2J1ZmZlcl9zdGFjayA9IDA7CisKKyAgICB5eWctPnl5X2J1ZmZlcl9zdGFjayA9IE5VTEw7CiAg
ICAgeXlnLT55eV9idWZmZXJfc3RhY2tfdG9wID0gMDsKICAgICB5eWctPnl5X2J1ZmZlcl9zdGFj
a19tYXggPSAwOwotICAgIHl5Zy0+eXlfY19idWZfcCA9IChjaGFyICopIDA7CisgICAgeXlnLT55
eV9jX2J1Zl9wID0gTlVMTDsKICAgICB5eWctPnl5X2luaXQgPSAwOwogICAgIHl5Zy0+eXlfc3Rh
cnQgPSAwOwogCisKICAgICB5eWctPnl5X3N0YXJ0X3N0YWNrX3B0ciA9IDA7CiAgICAgeXlnLT55
eV9zdGFydF9zdGFja19kZXB0aCA9IDA7CiAgICAgeXlnLT55eV9zdGFydF9zdGFjayA9ICBOVUxM
OwogCisKKworCisKKwogLyogRGVmaW5lZCBpbiBtYWluLmMgKi8KICNpZmRlZiBZWV9TVERJTklU
CiAgICAgeXlpbiA9IHN0ZGluOwogICAgIHl5b3V0ID0gc3Rkb3V0OwogI2Vsc2UKLSAgICB5eWlu
ID0gKEZJTEUgKikgMDsKLSAgICB5eW91dCA9IChGSUxFICopIDA7CisgICAgeXlpbiA9IE5VTEw7
CisgICAgeXlvdXQgPSBOVUxMOwogI2VuZGlmCiAKICAgICAvKiBGb3IgZnV0dXJlIHJlZmVyZW5j
ZTogU2V0IGVycm5vIG9uIGVycm9yLCBzaW5jZSB3ZSBhcmUgY2FsbGVkIGJ5CkBAIC0yMjUzLDYg
KzI2NzgsNyBAQAogICAgIHJldHVybiAwOwogfQogCisKIC8qIHBwbGV4X2Rlc3Ryb3kgaXMgZm9y
IGJvdGggcmVlbnRyYW50IGFuZCBub24tcmVlbnRyYW50IHNjYW5uZXJzLiAqLwogaW50IHBwbGV4
X2Rlc3Ryb3kgICh5eXNjYW5fdCB5eXNjYW5uZXIpCiB7CkBAIC0yMjY5LDEwICsyNjk1LDE0IEBA
CiAJcHBmcmVlKHl5Zy0+eXlfYnVmZmVyX3N0YWNrICx5eXNjYW5uZXIpOwogCXl5Zy0+eXlfYnVm
ZmVyX3N0YWNrID0gTlVMTDsKIAorCiAgICAgLyogRGVzdHJveSB0aGUgc3RhcnQgY29uZGl0aW9u
IHN0YWNrLiAqLwogICAgICAgICBwcGZyZWUoeXlnLT55eV9zdGFydF9zdGFjayAseXlzY2FubmVy
ICk7CiAgICAgICAgIHl5Zy0+eXlfc3RhcnRfc3RhY2sgPSBOVUxMOwogCisKKworCiAgICAgLyog
UmVzZXQgdGhlIGdsb2JhbHMuIFRoaXMgaXMgaW1wb3J0YW50IGluIGEgbm9uLXJlZW50cmFudCBz
Y2FubmVyIHNvIHRoZSBuZXh0IHRpbWUKICAgICAgKiBwcGxleCgpIGlzIGNhbGxlZCwgaW5pdGlh
bGl6YXRpb24gd2lsbCBvY2N1ci4gKi8KICAgICB5eV9pbml0X2dsb2JhbHMoIHl5c2Nhbm5lcik7
CkBAIC0yMjgzLDIzICsyNzEzLDMyIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKworCiAvKgogICog
SW50ZXJuYWwgdXRpbGl0eSByb3V0aW5lcy4KICAqLwogCisKKwogI2lmbmRlZiB5eXRleHRfcHRy
CiBzdGF0aWMgdm9pZCB5eV9mbGV4X3N0cm5jcHkgKGNoYXIqIHMxLCB5eWNvbnN0IGNoYXIgKiBz
MiwgaW50IG4gLCB5eXNjYW5fdCB5eXNjYW5uZXIpCiB7Ci0JcmVnaXN0ZXIgaW50IGk7CisJc3Ry
dWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOworCSh2b2lk
KXl5ZzsKKworCWludCBpOwogCWZvciAoIGkgPSAwOyBpIDwgbjsgKytpICkKIAkJczFbaV0gPSBz
MltpXTsKIH0KICNlbmRpZgogCisKKwogI2lmZGVmIFlZX05FRURfU1RSTEVOCiBzdGF0aWMgaW50
IHl5X2ZsZXhfc3RybGVuICh5eWNvbnN0IGNoYXIgKiBzICwgeXlzY2FuX3QgeXlzY2FubmVyKQog
ewotCXJlZ2lzdGVyIGludCBuOworCWludCBuOwogCWZvciAoIG4gPSAwOyBzW25dOyArK24gKQog
CQk7CiAKQEAgLTIzMDcsMTMgKzI3NDYsMjIgQEAKIH0KICNlbmRpZgogCisKKwogdm9pZCAqcHBh
bGxvYyAoeXlfc2l6ZV90ICBzaXplICwgeXlzY2FuX3QgeXlzY2FubmVyKQogewotCXJldHVybiAo
dm9pZCAqKSBtYWxsb2MoIHNpemUgKTsKKwlzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0
IHl5Z3V0c190Kil5eXNjYW5uZXI7CisJKHZvaWQpeXlnOworCXJldHVybiBtYWxsb2Moc2l6ZSk7
CiB9CiAKKworCiB2b2lkICpwcHJlYWxsb2MgICh2b2lkICogcHRyLCB5eV9zaXplX3QgIHNpemUg
LCB5eXNjYW5fdCB5eXNjYW5uZXIpCiB7CisJc3RydWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVj
dCB5eWd1dHNfdCopeXlzY2FubmVyOworCSh2b2lkKXl5ZzsKKwogCS8qIFRoZSBjYXN0IHRvIChj
aGFyICopIGluIHRoZSBmb2xsb3dpbmcgYWNjb21tb2RhdGVzIGJvdGgKIAkgKiBpbXBsZW1lbnRh
dGlvbnMgdGhhdCB1c2UgY2hhciogZ2VuZXJpYyBwb2ludGVycywgYW5kIHRob3NlCiAJICogdGhh
dCB1c2Ugdm9pZCogZ2VuZXJpYyBwb2ludGVycy4gIEl0IHdvcmtzIHdpdGggdGhlIGxhdHRlcgpA
QCAtMjMyMSwyMSArMjc2OSwzMiBAQAogCSAqIGFueSBwb2ludGVyIHR5cGUgdG8gdm9pZCosIGFu
ZCBkZWFsIHdpdGggYXJndW1lbnQgY29udmVyc2lvbnMKIAkgKiBhcyB0aG91Z2ggZG9pbmcgYW4g
YXNzaWdubWVudC4KIAkgKi8KLQlyZXR1cm4gKHZvaWQgKikgcmVhbGxvYyggKGNoYXIgKikgcHRy
LCBzaXplICk7CisJcmV0dXJuIHJlYWxsb2MocHRyLCBzaXplKTsKIH0KIAorCisKIHZvaWQgcHBm
cmVlICh2b2lkICogcHRyICwgeXlzY2FuX3QgeXlzY2FubmVyKQogeworCXN0cnVjdCB5eWd1dHNf
dCAqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKKwkodm9pZCl5eWc7CiAJZnJl
ZSggKGNoYXIgKikgcHRyICk7CS8qIHNlZSBwcHJlYWxsb2MoKSBmb3IgKGNoYXIgKikgY2FzdCAq
LwogfQogCisKICNkZWZpbmUgWVlUQUJMRVNfTkFNRSAieXl0YWJsZXMiCiAKKworCisKKworCisK
KworCiBuYW1lc3BhY2UgcHAgewogCi1Ub2tlbml6ZXI6OlRva2VuaXplcihEaWFnbm9zdGljcyAq
ZGlhZ25vc3RpY3MpCi0gICAgOiBtSGFuZGxlKDApLAotICAgICAgbU1heFRva2VuU2l6ZSgyNTYp
CitUb2tlbml6ZXI6OlRva2VuaXplcihEaWFnbm9zdGljcyAqZGlhZ25vc3RpY3MpIDogbUhhbmRs
ZShudWxscHRyKSwgbU1heFRva2VuU2l6ZSgyNTYpCiB7CiAgICAgbUNvbnRleHQuZGlhZ25vc3Rp
Y3MgPSBkaWFnbm9zdGljczsKIH0KQEAgLTIzOTIsNyArMjg1MSw3IEBACiAKIGJvb2wgVG9rZW5p
emVyOjppbml0U2Nhbm5lcigpCiB7Ci0gICAgaWYgKChtSGFuZGxlID09IE5VTEwpICYmIHBwbGV4
X2luaXRfZXh0cmEoJm1Db250ZXh0LCZtSGFuZGxlKSkKKyAgICBpZiAoKG1IYW5kbGUgPT0gbnVs
bHB0cikgJiYgcHBsZXhfaW5pdF9leHRyYSgmbUNvbnRleHQsICZtSGFuZGxlKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgcHByZXN0YXJ0KDAsbUhhbmRsZSk7CkBAIC0yNDAxLDEyICsy
ODYwLDEzIEBACiAKIHZvaWQgVG9rZW5pemVyOjpkZXN0cm95U2Nhbm5lcigpCiB7Ci0gICAgaWYg
KG1IYW5kbGUgPT0gTlVMTCkKKyAgICBpZiAobUhhbmRsZSA9PSBudWxscHRyKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBwcGxleF9kZXN0cm95KG1IYW5kbGUpOwotICAgIG1IYW5kbGUgPSBOVUxM
OworICAgIG1IYW5kbGUgPSBudWxscHRyOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgcHAKIAorCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rv
a2VuaXplci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTcsOSArNyw5IEBACiAjaWZuZGVmIENPTVBJTEVSX1BSRVBST0NF
U1NPUl9UT0tFTklaRVJfSF8KICNkZWZpbmUgQ09NUElMRVJfUFJFUFJPQ0VTU09SX1RPS0VOSVpF
Ul9IXwogCi0jaW5jbHVkZSAiSW5wdXQuaCIKLSNpbmNsdWRlICJMZXhlci5oIgotI2luY2x1ZGUg
InBwX3V0aWxzLmgiCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJj
b21waWxlci9wcmVwcm9jZXNzb3IvSW5wdXQuaCIKKyNpbmNsdWRlICJjb21waWxlci9wcmVwcm9j
ZXNzb3IvTGV4ZXIuaCIKIAogbmFtZXNwYWNlIHBwCiB7CkBAIC00NSw3ICs0NSw2IEBACiAgICAg
dm9pZCBsZXgoVG9rZW4gKnRva2VuKSBvdmVycmlkZTsKIAogICBwcml2YXRlOgotICAgIFBQX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTihUb2tlbml6ZXIpOwogICAgIGJvb2wgaW5pdFNjYW5uZXIo
KTsKICAgICB2b2lkIGRlc3Ryb3lTY2FubmVyKCk7CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tl
bml6ZXIubAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6ZXIubAkod29ya2luZyBjb3B5KQpAQCAtMjcs
MTAgKzI3LDEwIEBACiAjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDAwNSkKICNlbmRpZgogCi0j
aW5jbHVkZSAiVG9rZW5pemVyLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rv
a2VuaXplci5oIgogCi0jaW5jbHVkZSAiRGlhZ25vc3RpY3NCYXNlLmgiCi0jaW5jbHVkZSAiVG9r
ZW4uaCIKKyNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvRGlhZ25vc3RpY3NCYXNlLmgi
CisjaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmgiCiAKICNpZiBkZWZpbmVk
KF9fR05VQ19fKQogLy8gVHJpZ2dlcmVkIGJ5IHRoZSBhdXRvLWdlbmVyYXRlZCB5eV9mYXRhbF9l
cnJvciBmdW5jdGlvbi4KQEAgLTI4MCw5ICsyODAsNyBAQAogCiBuYW1lc3BhY2UgcHAgewogCi1U
b2tlbml6ZXI6OlRva2VuaXplcihEaWFnbm9zdGljcyAqZGlhZ25vc3RpY3MpCi0gICAgOiBtSGFu
ZGxlKDApLAotICAgICAgbU1heFRva2VuU2l6ZSgyNTYpCitUb2tlbml6ZXI6OlRva2VuaXplcihE
aWFnbm9zdGljcyAqZGlhZ25vc3RpY3MpIDogbUhhbmRsZShudWxscHRyKSwgbU1heFRva2VuU2l6
ZSgyNTYpCiB7CiAgICAgbUNvbnRleHQuZGlhZ25vc3RpY3MgPSBkaWFnbm9zdGljczsKIH0KQEAg
LTMzOSw3ICszMzcsNyBAQAogCiBib29sIFRva2VuaXplcjo6aW5pdFNjYW5uZXIoKQogewotICAg
IGlmICgobUhhbmRsZSA9PSBOVUxMKSAmJiB5eWxleF9pbml0X2V4dHJhKCZtQ29udGV4dCwgJm1I
YW5kbGUpKQorICAgIGlmICgobUhhbmRsZSA9PSBudWxscHRyKSAmJiB5eWxleF9pbml0X2V4dHJh
KCZtQ29udGV4dCwgJm1IYW5kbGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICB5eXJl
c3RhcnQoMCwgbUhhbmRsZSk7CkBAIC0zNDgsMTEgKzM0NiwxMSBAQAogCiB2b2lkIFRva2VuaXpl
cjo6ZGVzdHJveVNjYW5uZXIoKQogewotICAgIGlmIChtSGFuZGxlID09IE5VTEwpCisgICAgaWYg
KG1IYW5kbGUgPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuOwogCiAgICAgeXlsZXhfZGVzdHJv
eShtSGFuZGxlKTsKLSAgICBtSGFuZGxlID0gTlVMTDsKKyAgICBtSGFuZGxlID0gbnVsbHB0cjsK
IH0KIAogfSAgLy8gbmFtZXNwYWNlIHBwCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL3BwX3V0aWxzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9wcF91dGlscy5oCShy
ZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
cHJlcHJvY2Vzc29yL3BwX3V0aWxzLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwxOCArMCwwIEBACi0v
LwotLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgotLy8KLQotLy8gcHBfdXRpbHMuaDogQ29tbW9uIHByZXByb2Nlc3NvciB1dGlsaXRp
ZXMKLQotI2lmbmRlZiBDT01QSUxFUl9QUkVQUk9DRVNTT1JfUFBVVElMU19IXwotI2RlZmluZSBD
T01QSUxFUl9QUkVQUk9DRVNTT1JfUFBVVElMU19IXwotCi0vLyBBIG1hY3JvIHRvIGRpc2FsbG93
IHRoZSBjb3B5IGNvbnN0cnVjdG9yIGFuZCBvcGVyYXRvcj0gZnVuY3Rpb25zCi0vLyBUaGlzIG11
c3QgYmUgdXNlZCBpbiB0aGUgcHJpdmF0ZTogZGVjbGFyYXRpb25zIGZvciBhIGNsYXNzLgotI2Rl
ZmluZSBQUF9ESVNBTExPV19DT1BZX0FORF9BU1NJR04oVHlwZU5hbWUpIFwKLSAgVHlwZU5hbWUo
Y29uc3QgVHlwZU5hbWUgJik7ICAgICAgICAgICAgICAgXAotICB2b2lkIG9wZXJhdG9yPShjb25z
dCBUeXBlTmFtZSAmKQotCi0jZW5kaWYgLy8gQ09NUElMRVJfUFJFUFJPQ0VTU09SX1BQVVRJTFNf
SF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L0FTVE1ldGFkYXRhSExTTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQVNUTWV0YWRhdGFITFNMLmNwcAkocmV2aXNpb24g
MjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvQVNUTWV0YWRhdGFITFNMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAog
ICAgICAgICBBU1NFUlQoaW5kZXggPCBtZXRhZGF0YUxpc3QtPnNpemUoKSk7CiAgICAgfQogCi0g
ICAgdm9pZCB0cmF2ZXJzZShUSW50ZXJtQWdncmVnYXRlICpub2RlKQorICAgIHZvaWQgdHJhdmVy
c2UoVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAqbm9kZSkKICAgICB7CiAgICAgICAgIG5vZGUt
PnRyYXZlcnNlKHRoaXMpOwogICAgICAgICBBU1NFUlQobVBhcmVudHMuZW1wdHkoKSk7CkBAIC03
Miw5ICs3Miw5IEBACiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGJvb2wgdmlz
aXRTZWxlY3Rpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1TZWxlY3Rpb24gKnNlbGVjdGlvbikgb3Zl
cnJpZGUKKyAgICBib29sIHZpc2l0SWZFbHNlKFZpc2l0IHZpc2l0LCBUSW50ZXJtSWZFbHNlICpp
ZkVsc2UpIG92ZXJyaWRlCiAgICAgewotICAgICAgICB2aXNpdENvbnRyb2xGbG93KHZpc2l0LCBz
ZWxlY3Rpb24pOworICAgICAgICB2aXNpdENvbnRyb2xGbG93KHZpc2l0LCBpZkVsc2UpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTEwMyw3ICsxMDMsNyBAQAogICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgIGlmIChub2RlLT5pc1VzZXJEZWZpbmVkKCkpCiAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzaXplX3QgY2FsbGVlSW5kZXggPSBtRGFn
LmZpbmRJbmRleChub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNhbGxlZUluZGV4
ID0gbURhZy5maW5kSW5kZXgobm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCkpOwogICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoY2FsbGVlSW5kZXggIT0gQ2FsbERBRzo6SW52YWxpZEluZGV4
ICYmIGNhbGxlZUluZGV4IDwgbUluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgVU5VU0VEX0FT
U0VSVElPTl9WQVJJQUJMRShtSW5kZXgpOwogCkBAIC0xMTMsNyArMTEzLDggQEAKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgVFN0cmluZyBuYW1lID0gVEZ1bmN0aW9uOjp1bm1hbmdsZU5hbWUobm9k
ZS0+Z2V0TmFtZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgVFN0cmluZyBuYW1lID0KKyAgICAg
ICAgICAgICAgICAgICAgICAgIFRGdW5jdGlvbjo6dW5tYW5nbGVOYW1lKG5vZGUtPmdldEZ1bmN0
aW9uU3ltYm9sSW5mbygpLT5nZXROYW1lKCkpOwogCiAgICAgICAgICAgICAgICAgICAgIGlmIChu
YW1lID09ICJ0ZXh0dXJlMkQiIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID09ICJ0
ZXh0dXJlMkRQcm9qIiB8fApAQCAtMTU3LDcgKzE1OCw3IEBACiAgICAgewogICAgIH0KIAotICAg
IHZvaWQgdHJhdmVyc2UoVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkKKyAgICB2b2lkIHRyYXZlcnNl
KFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKm5vZGUpCiAgICAgewogICAgICAgICBub2RlLT50
cmF2ZXJzZSh0aGlzKTsKICAgICAgICAgQVNTRVJUKG1Mb29wc0FuZFN3aXRjaGVzLmVtcHR5KCkp
OwpAQCAtMTk2LDcgKzE5Nyw3IEBACiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAg
IGJvb2wgdmlzaXRTZWxlY3Rpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1TZWxlY3Rpb24gKm5vZGUp
IG92ZXJyaWRlCisgICAgYm9vbCB2aXNpdElmRWxzZShWaXNpdCB2aXNpdCwgVEludGVybUlmRWxz
ZSAqbm9kZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkK
ICAgICAgICAgewpAQCAtMjc1LDcgKzI3Niw3IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIGlm
IChub2RlLT5pc1VzZXJEZWZpbmVkKCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
c2l6ZV90IGNhbGxlZUluZGV4ID0gbURhZy5maW5kSW5kZXgobm9kZSk7CisgICAgICAgICAgICAg
ICAgc2l6ZV90IGNhbGxlZUluZGV4ID0gbURhZy5maW5kSW5kZXgobm9kZS0+Z2V0RnVuY3Rpb25T
eW1ib2xJbmZvKCkpOwogICAgICAgICAgICAgICAgIEFTU0VSVChjYWxsZWVJbmRleCAhPSBDYWxs
REFHOjpJbnZhbGlkSW5kZXggJiYgY2FsbGVlSW5kZXggPCBtSW5kZXgpOwogICAgICAgICAgICAg
ICAgIFVOVVNFRF9BU1NFUlRJT05fVkFSSUFCTEUobUluZGV4KTsKIApAQCAtMzEwLDcgKzMxMSw3
IEBACiAgICAgY29uc3QgQ2FsbERBRyAmbURhZzsKIAogICAgIHN0ZDo6dmVjdG9yPFRJbnRlcm1O
b2RlKj4gbUxvb3BzQW5kU3dpdGNoZXM7Ci0gICAgc3RkOjp2ZWN0b3I8VEludGVybVNlbGVjdGlv
bio+IG1JZnM7CisgICAgc3RkOjp2ZWN0b3I8VEludGVybUlmRWxzZSAqPiBtSWZzOwogfTsKIAog
Ly8gVGFncyBhbGwgdGhlIGZ1bmN0aW9ucyBjYWxsZWQgaW4gYSBkaXNjb250aW51b3VzIGxvb3AK
QEAgLTMyNyw3ICszMjgsNyBAQAogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIHRyYXZlcnNlKFRJ
bnRlcm1BZ2dyZWdhdGUgKm5vZGUpCisgICAgdm9pZCB0cmF2ZXJzZShUSW50ZXJtRnVuY3Rpb25E
ZWZpbml0aW9uICpub2RlKQogICAgIHsKICAgICAgICAgbm9kZS0+dHJhdmVyc2UodGhpcyk7CiAg
ICAgICAgIEFTU0VSVChtTmVzdGVkRGlzY29udCA9PSAobU1ldGFkYXRhLT5tQ2FsbGVkSW5EaXNj
b250aW51b3VzTG9vcCA/IDEgOiAwKSk7CkBAIC0zNTYsNyArMzU3LDcgQEAKICAgICAgICAgICBj
YXNlIEVPcEZ1bmN0aW9uQ2FsbDoKICAgICAgICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCAm
JiBub2RlLT5pc1VzZXJEZWZpbmVkKCkgJiYgbU5lc3RlZERpc2NvbnQgPiAwKQogICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIHNpemVfdCBjYWxsZWVJbmRleCA9IG1EYWcuZmluZEluZGV4
KG5vZGUpOworICAgICAgICAgICAgICAgIHNpemVfdCBjYWxsZWVJbmRleCA9IG1EYWcuZmluZElu
ZGV4KG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpKTsKICAgICAgICAgICAgICAgICBBU1NF
UlQoY2FsbGVlSW5kZXggIT0gQ2FsbERBRzo6SW52YWxpZEluZGV4ICYmIGNhbGxlZUluZGV4IDwg
bUluZGV4KTsKICAgICAgICAgICAgICAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKG1JbmRl
eCk7CiAKQEAgLTM4NSw3ICszODYsNyBAQAogICAgIHJldHVybiBtQ29udHJvbEZsb3dzQ29udGFp
bmluZ0dyYWRpZW50LmNvdW50KG5vZGUpID4gMDsKIH0KIAotYm9vbCBBU1RNZXRhZGF0YUhMU0w6
Omhhc0dyYWRpZW50TG9vcChUSW50ZXJtU2VsZWN0aW9uICpub2RlKQorYm9vbCBBU1RNZXRhZGF0
YUhMU0w6Omhhc0dyYWRpZW50TG9vcChUSW50ZXJtSWZFbHNlICpub2RlKQogewogICAgIHJldHVy
biBtSWZzQ29udGFpbmluZ0dyYWRpZW50TG9vcC5jb3VudChub2RlKSA+IDA7CiB9CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9BU1RNZXRhZGF0
YUhMU0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9BU1RNZXRhZGF0YUhMU0wuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQVNUTWV0YWRhdGFI
TFNMLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0LDcgKzE0LDcgQEAKIAogY2xhc3MgQ2FsbERBRzsK
IGNsYXNzIFRJbnRlcm1Ob2RlOwotY2xhc3MgVEludGVybVNlbGVjdGlvbjsKK2NsYXNzIFRJbnRl
cm1JZkVsc2U7CiBjbGFzcyBUSW50ZXJtTG9vcDsKIAogc3RydWN0IEFTVE1ldGFkYXRhSExTTApA
QCAtMzAsNyArMzAsNyBAQAogICAgIC8vIEhlcmUgInNvbWV0aGluZyB1c2VzIGEgZ3JhZGllbnQi
IG1lYW5zIGhlcmUgdGhhdCBpdCBlaXRoZXIgY29udGFpbnMgYQogICAgIC8vIGdyYWRpZW50IG9w
ZXJhdGlvbiwgb3IgYSBjYWxsIHRvIGEgZnVuY3Rpb24gdGhhdCB1c2VzIGEgZ3JhZGllbnQuCiAg
ICAgYm9vbCBoYXNHcmFkaWVudEluQ2FsbEdyYXBoKFRJbnRlcm1Mb29wICpub2RlKTsKLSAgICBi
b29sIGhhc0dyYWRpZW50TG9vcChUSW50ZXJtU2VsZWN0aW9uICpub2RlKTsKKyAgICBib29sIGhh
c0dyYWRpZW50TG9vcChUSW50ZXJtSWZFbHNlICpub2RlKTsKIAogICAgIC8vIERvZXMgdGhlIGZ1
bmN0aW9uIHVzZSBhIGdyYWRpZW50LgogICAgIGJvb2wgbVVzZXNHcmFkaWVudDsKQEAgLTQ0LDcg
KzQ0LDcgQEAKICAgICBib29sIG1DYWxsZWRJbkRpc2NvbnRpbnVvdXNMb29wOwogICAgIGJvb2wg
bUhhc0dyYWRpZW50TG9vcEluQ2FsbEdyYXBoOwogICAgIHN0ZDo6c2V0PFRJbnRlcm1Mb29wKj4g
bURpc2NvbnRpbnVvdXNMb29wczsKLSAgICBzdGQ6OnNldDxUSW50ZXJtU2VsZWN0aW9uICo+IG1J
ZnNDb250YWluaW5nR3JhZGllbnRMb29wOworICAgIHN0ZDo6c2V0PFRJbnRlcm1JZkVsc2UgKj4g
bUlmc0NvbnRhaW5pbmdHcmFkaWVudExvb3A7CiAKICAgICAvLyBXaWxsIHdlIG5lZWQgdG8gZ2Vu
ZXJhdGUgYSBMb2QwIHZlcnNpb24gb2YgdGhlIGZ1bmN0aW9uLgogICAgIGJvb2wgbU5lZWRzTG9k
MDsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L0FkZEFuZFRydWVUb0xvb3BDb25kaXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0FkZEFuZFRydWVUb0xvb3BDb25k
aXRpb24uY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL0FkZEFuZFRydWVUb0xvb3BDb25kaXRpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNTkgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci9BZGRBbmRUcnVlVG9Mb29wQ29uZGl0aW9uLmgiCisKKyNpbmNsdWRlICJj
b21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuaCIKKworbmFtZXNwYWNlIHNoCit7CisKK25h
bWVzcGFjZQoreworCisvLyBBbiBBU1QgdHJhdmVyc2VyIHRoYXQgcmV3cml0ZXMgZm9yIGFuZCB3
aGlsZSBsb29wcyBieSByZXBsYWNpbmcgImNvbmRpdGlvbiIgd2l0aAorLy8gImNvbmRpdGlvbiAm
JiB0cnVlIiB0byB3b3JrIGFyb3VuZCBjb25kaXRpb24gYnVnIG9uIEludGVsIE1hYy4KK2NsYXNz
IEFkZEFuZFRydWVUb0xvb3BDb25kaXRpb25UcmF2ZXJzZXIgOiBwdWJsaWMgVEludGVybVRyYXZl
cnNlcgoreworICBwdWJsaWM6CisgICAgQWRkQW5kVHJ1ZVRvTG9vcENvbmRpdGlvblRyYXZlcnNl
cigpIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2UpIHt9CisKKyAgICBib29s
IHZpc2l0TG9vcChWaXNpdCwgVEludGVybUxvb3AgKmxvb3ApIG92ZXJyaWRlCisgICAgeworICAg
ICAgICAvLyBkby13aGlsZSBsb29wIGRvZXNuJ3QgaGF2ZSB0aGlzIGJ1Zy4KKyAgICAgICAgaWYg
KGxvb3AtPmdldFR5cGUoKSAhPSBFTG9vcEZvciAmJiBsb29wLT5nZXRUeXBlKCkgIT0gRUxvb3BX
aGlsZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBGb3IgbG9vcCBtYXkgbm90IGhhdmUgYSBjb25kaXRpb24uCisgICAgICAgIGlm
IChsb29wLT5nZXRDb25kaXRpb24oKSA9PSBudWxscHRyKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENvbnN0YW50IHRydWUuCisg
ICAgICAgIFRDb25zdGFudFVuaW9uICp0cnVlQ29uc3RhbnQgPSBuZXcgVENvbnN0YW50VW5pb24o
KTsKKyAgICAgICAgdHJ1ZUNvbnN0YW50LT5zZXRCQ29uc3QodHJ1ZSk7CisgICAgICAgIFRJbnRl
cm1UeXBlZCAqdHJ1ZVZhbHVlID0gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9uKHRydWVDb25zdGFu
dCwgVFR5cGUoRWJ0Qm9vbCkpOworCisgICAgICAgIC8vIENPTkRJVElPTiAmJiB0cnVlLgorICAg
ICAgICBUSW50ZXJtQmluYXJ5ICphbmRPcCA9IG5ldyBUSW50ZXJtQmluYXJ5KEVPcExvZ2ljYWxB
bmQsIGxvb3AtPmdldENvbmRpdGlvbigpLCB0cnVlVmFsdWUpOworICAgICAgICBsb29wLT5zZXRD
b25kaXRpb24oYW5kT3ApOworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK307CisKK30g
IC8vIGFub255bW91cyBuYW1lc3BhY2UKKwordm9pZCBBZGRBbmRUcnVlVG9Mb29wQ29uZGl0aW9u
KFRJbnRlcm1Ob2RlICpyb290KQoreworICAgIEFkZEFuZFRydWVUb0xvb3BDb25kaXRpb25UcmF2
ZXJzZXIgdHJhdmVyc2VyOworICAgIHJvb3QtPnRyYXZlcnNlKCZ0cmF2ZXJzZXIpOworfQorCit9
ICAvLyBuYW1lc3BhY2Ugc2gKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL0FkZEFuZFRydWVUb0xvb3BDb25kaXRpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9BZGRBbmRU
cnVlVG9Mb29wQ29uZGl0aW9uLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQWRkQW5kVHJ1ZVRvTG9vcENvbmRpdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjAgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIw
MTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBSZXdy
aXRlIGNvbmRpdGlvbiBpbiBmb3IgYW5kIHdoaWxlIGxvb3BzIHRvIHdvcmsgYXJvdW5kIGRyaXZl
ciBidWcgb24gSW50ZWwgTWFjLgorCisjaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFUT1JfQUREQU5E
VFJVRVRPTE9PUENPTkRJVElPTl9IXworI2RlZmluZSBDT01QSUxFUl9UUkFOU0xBVE9SX0FEREFO
RFRSVUVUT0xPT1BDT05ESVRJT05fSF8KKworY2xhc3MgVEludGVybU5vZGU7CituYW1lc3BhY2Ug
c2gKK3sKKwordm9pZCBBZGRBbmRUcnVlVG9Mb29wQ29uZGl0aW9uKFRJbnRlcm1Ob2RlICpyb290
KTsKKworfSAgLy8gbmFtZXNwYWNlIHNoCisKKyNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRP
Ul9BRERBTkRUUlVFVE9MT09QQ09ORElUSU9OX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9BZGREZWZhdWx0UmV0dXJuU3RhdGVtZW50cy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvQWRkRGVmYXVsdFJldHVyblN0YXRlbWVudHMuY3BwCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0FkZERlZmF1
bHRSZXR1cm5TdGF0ZW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc2IEBACisv
LworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKy8vIEFkZERlZmF1bHRSZXR1cm5TdGF0ZW1lbnRzLmNwcDogQWRkIGRlZmF1
bHQgcmV0dXJuIHN0YXRlbWVudHMgdG8gZnVuY3Rpb25zIHRoYXQgZG8gbm90IGVuZCBpbiBhCisv
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybi4KKy8vCisKKyNpbmNsdWRl
ICJjb21waWxlci90cmFuc2xhdG9yL0FkZERlZmF1bHRSZXR1cm5TdGF0ZW1lbnRzLmgiCisKKyNp
bmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuaCIKKyNpbmNsdWRlICJjb21w
aWxlci90cmFuc2xhdG9yL3V0aWwuaCIKKworbmFtZXNwYWNlIHNoCit7CisKK25hbWVzcGFjZQor
eworCitjbGFzcyBBZGREZWZhdWx0UmV0dXJuU3RhdGVtZW50c1RyYXZlcnNlciA6IHByaXZhdGUg
VEludGVybVRyYXZlcnNlcgoreworICBwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgQXBwbHkoVElu
dGVybU5vZGUgKnJvb3QpCisgICAgeworICAgICAgICBBZGREZWZhdWx0UmV0dXJuU3RhdGVtZW50
c1RyYXZlcnNlciBzZXBhcmF0ZUluaXQ7CisgICAgICAgIHJvb3QtPnRyYXZlcnNlKCZzZXBhcmF0
ZUluaXQpOworICAgICAgICBzZXBhcmF0ZUluaXQudXBkYXRlVHJlZSgpOworICAgIH0KKworICBw
cml2YXRlOgorICAgIEFkZERlZmF1bHRSZXR1cm5TdGF0ZW1lbnRzVHJhdmVyc2VyKCkgOiBUSW50
ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSkge30KKworICAgIHN0YXRpYyBib29sIElz
RnVuY3Rpb25XaXRob3V0UmV0dXJuU3RhdGVtZW50KFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24g
Km5vZGUsIFRUeXBlICpyZXR1cm5UeXBlKQorICAgIHsKKyAgICAgICAgKnJldHVyblR5cGUgPSBu
b2RlLT5nZXRUeXBlKCk7CisgICAgICAgIGlmIChub2RlLT5nZXRUeXBlKCkuZ2V0QmFzaWNUeXBl
KCkgPT0gRWJ0Vm9pZCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisKKyAgICAgICAgVEludGVybUJsb2NrICpib2R5Tm9kZSAgICA9IG5vZGUtPmdldEJv
ZHkoKTsKKyAgICAgICAgVEludGVybUJyYW5jaCAqcmV0dXJuTm9kZSA9IGJvZHlOb2RlLT5nZXRT
ZXF1ZW5jZSgpLT5iYWNrKCktPmdldEFzQnJhbmNoTm9kZSgpOworICAgICAgICBpZiAocmV0dXJu
Tm9kZSAhPSBudWxscHRyICYmIHJldHVybk5vZGUtPmdldEZsb3dPcCgpID09IEVPcFJldHVybikK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgYm9vbCB2aXNpdEZ1bmN0aW9uRGVmaW5pdGlv
bihWaXNpdCwgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAqbm9kZSkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIFRUeXBlIHJldHVyblR5cGU7CisgICAgICAgIGlmIChJc0Z1bmN0aW9uV2l0aG91
dFJldHVyblN0YXRlbWVudChub2RlLCAmcmV0dXJuVHlwZSkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIFRJbnRlcm1CcmFuY2ggKmJyYW5jaCA9CisgICAgICAgICAgICAgICAgbmV3IFRJbnRlcm1C
cmFuY2goRU9wUmV0dXJuLCBUSW50ZXJtVHlwZWQ6OkNyZWF0ZVplcm8ocmV0dXJuVHlwZSkpOwor
CisgICAgICAgICAgICBUSW50ZXJtQmxvY2sgKmJvZHlOb2RlID0gbm9kZS0+Z2V0Qm9keSgpOwor
ICAgICAgICAgICAgYm9keU5vZGUtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhicmFuY2gpOwor
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9Cit9OworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCit2b2lkIEFkZERl
ZmF1bHRSZXR1cm5TdGF0ZW1lbnRzKFRJbnRlcm1Ob2RlICpub2RlKQoreworICAgIEFkZERlZmF1
bHRSZXR1cm5TdGF0ZW1lbnRzVHJhdmVyc2VyOjpBcHBseShub2RlKTsKK30KKworfSAgLy8gbmFt
ZXNwYWNlIHNoCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9BZGREZWZhdWx0UmV0dXJuU3RhdGVtZW50cy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0FkZERlZmF1bHRSZXR1
cm5TdGF0ZW1lbnRzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQWRkRGVmYXVsdFJldHVyblN0YXRlbWVudHMuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDIyIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEFkZERlZmF1bHRS
ZXR1cm5TdGF0ZW1lbnRzLmg6IEFkZCBkZWZhdWx0IHJldHVybiBzdGF0ZW1lbnRzIHRvIGZ1bmN0
aW9ucyB0aGF0IGRvIG5vdCBlbmQgaW4gYQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuLgorLy8KKworI2lmbmRlZiBDT01QSUxFUl9UUkFOU0xBVE9SX0FERERFRkFVTFRS
RVRVUk5TVEFURU1FTlRTX0hfCisjZGVmaW5lIENPTVBJTEVSX1RSQU5TTEFUT1JfQUREREVGQVVM
VFJFVFVSTlNUQVRFTUVOVFNfSF8KKworY2xhc3MgVEludGVybU5vZGU7CisKK25hbWVzcGFjZSBz
aAoreworCit2b2lkIEFkZERlZmF1bHRSZXR1cm5TdGF0ZW1lbnRzKFRJbnRlcm1Ob2RlICpub2Rl
KTsKKworfSAgLy8gbmFtZXNwYWNlIHNoCisKKyNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRP
Ul9BRERERUZBVUxUUkVUVVJOU1RBVEVNRU5UU19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQXJyYXlSZXR1cm5WYWx1ZVRvT3V0UGFyYW1l
dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9BcnJheVJldHVyblZhbHVlVG9PdXRQYXJhbWV0ZXIuY3BwCShyZXZpc2lv
biAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9BcnJheVJldHVyblZhbHVlVG9PdXRQYXJhbWV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw4ICs0MSw3IEBACiAgICAgVEludGVybUFnZ3JlZ2F0ZSAqcmVwbGFjZW1lbnRDYWxsID0g
bmV3IFRJbnRlcm1BZ2dyZWdhdGUoRU9wRnVuY3Rpb25DYWxsKTsKICAgICByZXBsYWNlbWVudENh
bGwtPnNldFR5cGUoVFR5cGUoRWJ0Vm9pZCkpOwogICAgIHJlcGxhY2VtZW50Q2FsbC0+c2V0VXNl
ckRlZmluZWQoKTsKLSAgICByZXBsYWNlbWVudENhbGwtPnNldE5hbWVPYmoob3JpZ2luYWxDYWxs
LT5nZXROYW1lT2JqKCkpOwotICAgIHJlcGxhY2VtZW50Q2FsbC0+c2V0RnVuY3Rpb25JZChvcmln
aW5hbENhbGwtPmdldEZ1bmN0aW9uSWQoKSk7CisgICAgKnJlcGxhY2VtZW50Q2FsbC0+Z2V0RnVu
Y3Rpb25TeW1ib2xJbmZvKCkgPSAqb3JpZ2luYWxDYWxsLT5nZXRGdW5jdGlvblN5bWJvbEluZm8o
KTsKICAgICByZXBsYWNlbWVudENhbGwtPnNldExpbmUob3JpZ2luYWxDYWxsLT5nZXRMaW5lKCkp
OwogICAgIFRJbnRlcm1TZXF1ZW5jZSAqcmVwbGFjZW1lbnRQYXJhbWV0ZXJzID0gcmVwbGFjZW1l
bnRDYWxsLT5nZXRTZXF1ZW5jZSgpOwogICAgIFRJbnRlcm1TZXF1ZW5jZSAqb3JpZ2luYWxQYXJh
bWV0ZXJzID0gb3JpZ2luYWxDYWxsLT5nZXRTZXF1ZW5jZSgpOwpAQCAtNjEsNiArNjAsNyBAQAog
ICBwcml2YXRlOgogICAgIEFycmF5UmV0dXJuVmFsdWVUb091dFBhcmFtZXRlclRyYXZlcnNlcigp
OwogCisgICAgYm9vbCB2aXNpdEZ1bmN0aW9uRGVmaW5pdGlvbihWaXNpdCB2aXNpdCwgVEludGVy
bUZ1bmN0aW9uRGVmaW5pdGlvbiAqbm9kZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCB2aXNpdEFnZ3Jl
Z2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkgb3ZlcnJpZGU7CiAgICAg
Ym9vbCB2aXNpdEJyYW5jaChWaXNpdCB2aXNpdCwgVEludGVybUJyYW5jaCAqbm9kZSkgb3ZlcnJp
ZGU7CiAgICAgYm9vbCB2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9k
ZSkgb3ZlcnJpZGU7CkBAIC04MiwzNCArODIsNDcgQEAKIHsKIH0KIAotYm9vbCBBcnJheVJldHVy
blZhbHVlVG9PdXRQYXJhbWV0ZXJUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0
LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKQorYm9vbCBBcnJheVJldHVyblZhbHVlVG9PdXRQYXJh
bWV0ZXJUcmF2ZXJzZXI6OnZpc2l0RnVuY3Rpb25EZWZpbml0aW9uKAorICAgIFZpc2l0IHZpc2l0
LAorICAgIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKm5vZGUpCiB7Ci0gICAgaWYgKHZpc2l0
ID09IFByZVZpc2l0KQorICAgIGlmIChub2RlLT5pc0FycmF5KCkgJiYgdmlzaXQgPT0gUHJlVmlz
aXQpCiAgICAgewotICAgICAgICBpZiAobm9kZS0+aXNBcnJheSgpKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAobm9kZS0+Z2V0T3AoKSA9PSBFT3BGdW5jdGlvbikKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAvLyBSZXBsYWNlIHRoZSBwYXJhbWV0ZXJzIGNoaWxkIG5vZGUgb2Yg
dGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gd2l0aCBhbm90aGVyIG5vZGUKLSAgICAgICAgICAgICAg
ICAvLyB0aGF0IGhhcyB0aGUgb3V0IHBhcmFtZXRlciBhZGRlZC4KLSAgICAgICAgICAgICAgICAv
LyBBbHNvIHNldCB0aGUgZnVuY3Rpb24gdG8gcmV0dXJuIHZvaWQuCisgICAgICAgIC8vIFJlcGxh
Y2UgdGhlIHBhcmFtZXRlcnMgY2hpbGQgbm9kZSBvZiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiB3
aXRoIGFub3RoZXIgbm9kZQorICAgICAgICAvLyB0aGF0IGhhcyB0aGUgb3V0IHBhcmFtZXRlciBh
ZGRlZC4KKyAgICAgICAgLy8gQWxzbyBzZXQgdGhlIGZ1bmN0aW9uIHRvIHJldHVybiB2b2lkLgog
Ci0gICAgICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqcGFyYW1zID0gbm9kZS0+Z2V0U2Vx
dWVuY2UoKS0+ZnJvbnQoKS0+Z2V0QXNBZ2dyZWdhdGUoKTsKLSAgICAgICAgICAgICAgICBBU1NF
UlQocGFyYW1zICE9IG51bGxwdHIgJiYgcGFyYW1zLT5nZXRPcCgpID09IEVPcFBhcmFtZXRlcnMp
OworICAgICAgICBUSW50ZXJtQWdncmVnYXRlICpwYXJhbXMgPSBub2RlLT5nZXRGdW5jdGlvblBh
cmFtZXRlcnMoKTsKKyAgICAgICAgQVNTRVJUKHBhcmFtcyAhPSBudWxscHRyICYmIHBhcmFtcy0+
Z2V0T3AoKSA9PSBFT3BQYXJhbWV0ZXJzKTsKIAotICAgICAgICAgICAgICAgIFRJbnRlcm1BZ2dy
ZWdhdGUgKnJlcGxhY2VtZW50UGFyYW1zID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGU7Ci0gICAgICAg
ICAgICAgICAgcmVwbGFjZW1lbnRQYXJhbXMtPnNldE9wKEVPcFBhcmFtZXRlcnMpOwotICAgICAg
ICAgICAgICAgIENvcHlBZ2dyZWdhdGVDaGlsZHJlbihwYXJhbXMsIHJlcGxhY2VtZW50UGFyYW1z
KTsKLSAgICAgICAgICAgICAgICByZXBsYWNlbWVudFBhcmFtcy0+Z2V0U2VxdWVuY2UoKS0+cHVz
aF9iYWNrKENyZWF0ZVJldHVyblZhbHVlT3V0U3ltYm9sKG5vZGUtPmdldFR5cGUoKSkpOwotICAg
ICAgICAgICAgICAgIHJlcGxhY2VtZW50UGFyYW1zLT5zZXRMaW5lKHBhcmFtcy0+Z2V0TGluZSgp
KTsKKyAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqcmVwbGFjZW1lbnRQYXJhbXMgPSBuZXcgVElu
dGVybUFnZ3JlZ2F0ZTsKKyAgICAgICAgcmVwbGFjZW1lbnRQYXJhbXMtPnNldE9wKEVPcFBhcmFt
ZXRlcnMpOworICAgICAgICBDb3B5QWdncmVnYXRlQ2hpbGRyZW4ocGFyYW1zLCByZXBsYWNlbWVu
dFBhcmFtcyk7CisgICAgICAgIHJlcGxhY2VtZW50UGFyYW1zLT5nZXRTZXF1ZW5jZSgpLT5wdXNo
X2JhY2soQ3JlYXRlUmV0dXJuVmFsdWVPdXRTeW1ib2wobm9kZS0+Z2V0VHlwZSgpKSk7CisgICAg
ICAgIHJlcGxhY2VtZW50UGFyYW1zLT5zZXRMaW5lKHBhcmFtcy0+Z2V0TGluZSgpKTsKIAotICAg
ICAgICAgICAgICAgIG1SZXBsYWNlbWVudHMucHVzaF9iYWNrKE5vZGVVcGRhdGVFbnRyeShub2Rl
LCBwYXJhbXMsIHJlcGxhY2VtZW50UGFyYW1zLCBmYWxzZSkpOworICAgICAgICBxdWV1ZVJlcGxh
Y2VtZW50V2l0aFBhcmVudChub2RlLCBwYXJhbXMsIHJlcGxhY2VtZW50UGFyYW1zLCBPcmlnaW5h
bE5vZGU6OklTX0RST1BQRUQpOwogCi0gICAgICAgICAgICAgICAgbm9kZS0+c2V0VHlwZShUVHlw
ZShFYnRWb2lkKSk7CisgICAgICAgIG5vZGUtPnNldFR5cGUoVFR5cGUoRWJ0Vm9pZCkpOwogCi0g
ICAgICAgICAgICAgICAgbUluRnVuY3Rpb25XaXRoQXJyYXlSZXR1cm5WYWx1ZSA9IHRydWU7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChub2RlLT5nZXRPcCgpID09IEVPcFBy
b3RvdHlwZSkKKyAgICAgICAgbUluRnVuY3Rpb25XaXRoQXJyYXlSZXR1cm5WYWx1ZSA9IHRydWU7
CisgICAgfQorICAgIGlmICh2aXNpdCA9PSBQb3N0VmlzaXQpCisgICAgeworICAgICAgICAvLyBU
aGlzIGlzbid0IGNvbmRpdGlvbmFsIG9uIG5vZGUtPmlzQXJyYXkoKSBzaW5jZSB0aGUgdHlwZSBo
YXMgYWxyZWFkeSBiZWVuIGNoYW5nZWQgb24KKyAgICAgICAgLy8gUHJlVmlzaXQuCisgICAgICAg
IG1JbkZ1bmN0aW9uV2l0aEFycmF5UmV0dXJuVmFsdWUgPSBmYWxzZTsKKyAgICB9CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgQXJyYXlSZXR1cm5WYWx1ZVRvT3V0UGFyYW1ldGVyVHJhdmVy
c2VyOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkK
K3sKKyAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCisgICAgeworICAgICAgICBpZiAobm9kZS0+
aXNBcnJheSgpKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobm9kZS0+Z2V0T3AoKSA9PSBF
T3BQcm90b3R5cGUpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgLy8gUmVwbGFjZSB0
aGUgd2hvbGUgcHJvdG90eXBlIG5vZGUgd2l0aCBhbm90aGVyIG5vZGUgdGhhdCBoYXMgdGhlIG91
dCBwYXJhbWV0ZXIgYWRkZWQuCiAgICAgICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqcmVw
bGFjZW1lbnQgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZTsKQEAgLTExNywxMiArMTMwLDExIEBACiAg
ICAgICAgICAgICAgICAgQ29weUFnZ3JlZ2F0ZUNoaWxkcmVuKG5vZGUsIHJlcGxhY2VtZW50KTsK
ICAgICAgICAgICAgICAgICByZXBsYWNlbWVudC0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKENy
ZWF0ZVJldHVyblZhbHVlT3V0U3ltYm9sKG5vZGUtPmdldFR5cGUoKSkpOwogICAgICAgICAgICAg
ICAgIHJlcGxhY2VtZW50LT5zZXRVc2VyRGVmaW5lZCgpOwotICAgICAgICAgICAgICAgIHJlcGxh
Y2VtZW50LT5zZXROYW1lT2JqKG5vZGUtPmdldE5hbWVPYmooKSk7Ci0gICAgICAgICAgICAgICAg
cmVwbGFjZW1lbnQtPnNldEZ1bmN0aW9uSWQobm9kZS0+Z2V0RnVuY3Rpb25JZCgpKTsKKyAgICAg
ICAgICAgICAgICAqcmVwbGFjZW1lbnQtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpID0gKm5vZGUt
PmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpOwogICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50LT5z
ZXRMaW5lKG5vZGUtPmdldExpbmUoKSk7CiAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnQtPnNl
dFR5cGUoVFR5cGUoRWJ0Vm9pZCkpOwogCi0gICAgICAgICAgICAgICAgbVJlcGxhY2VtZW50cy5w
dXNoX2JhY2soTm9kZVVwZGF0ZUVudHJ5KGdldFBhcmVudE5vZGUoKSwgbm9kZSwgcmVwbGFjZW1l
bnQsIGZhbHNlKSk7CisgICAgICAgICAgICAgICAgcXVldWVSZXBsYWNlbWVudChub2RlLCByZXBs
YWNlbWVudCwgT3JpZ2luYWxOb2RlOjpJU19EUk9QUEVEKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGVsc2UgaWYgKG5vZGUtPmdldE9wKCkgPT0gRU9wRnVuY3Rpb25DYWxsKQogICAgICAg
ICAgICAgewpAQCAtMTM1LDggKzE0Nyw4IEBACiAgICAgICAgICAgICAgICAgLy8gQ2FzZXMgMiB0
byA0IGFyZSBhbHJlYWR5IGNvbnZlcnRlZCB0byBzaW1wbGVyIGNhc2VzIGJ5IFNlcGFyYXRlRXhw
cmVzc2lvbnNSZXR1cm5pbmdBcnJheXMsIHNvIHdlCiAgICAgICAgICAgICAgICAgLy8gb25seSBu
ZWVkIHRvIHdvcnJ5IGFib3V0IHRoZSBjYXNlIHdoZXJlIGEgZnVuY3Rpb24gY2FsbCByZXR1cm5p
bmcgYW4gYXJyYXkgZm9ybXMgYW4gZXhwcmVzc2lvbiBieQogICAgICAgICAgICAgICAgIC8vIGl0
c2VsZi4KLSAgICAgICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICpwYXJlbnRBZ2cgPSBnZXRQ
YXJlbnROb2RlKCktPmdldEFzQWdncmVnYXRlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHBhcmVu
dEFnZyAhPSBudWxscHRyICYmIHBhcmVudEFnZy0+Z2V0T3AoKSA9PSBFT3BTZXF1ZW5jZSkKKyAg
ICAgICAgICAgICAgICBUSW50ZXJtQmxvY2sgKnBhcmVudEJsb2NrID0gZ2V0UGFyZW50Tm9kZSgp
LT5nZXRBc0Jsb2NrKCk7CisgICAgICAgICAgICAgICAgaWYgKHBhcmVudEJsb2NrKQogICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgbmV4dFRlbXBvcmFyeUluZGV4KCk7CiAg
ICAgICAgICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSByZXBsYWNlbWVudHM7CkBAIC0xNDMs
MTkgKzE1NSwxMyBAQAogICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudHMucHVzaF9iYWNr
KGNyZWF0ZVRlbXBEZWNsYXJhdGlvbihub2RlLT5nZXRUeXBlKCkpKTsKICAgICAgICAgICAgICAg
ICAgICAgVEludGVybVN5bWJvbCAqcmV0dXJuU3ltYm9sID0gY3JlYXRlVGVtcFN5bWJvbChub2Rl
LT5nZXRUeXBlKCkpOwogICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudHMucHVzaF9iYWNr
KENyZWF0ZVJlcGxhY2VtZW50Q2FsbChub2RlLCByZXR1cm5TeW1ib2wpKTsKLSAgICAgICAgICAg
ICAgICAgICAgbU11bHRpUmVwbGFjZW1lbnRzLnB1c2hfYmFjayhOb2RlUmVwbGFjZVdpdGhNdWx0
aXBsZUVudHJ5KHBhcmVudEFnZywgbm9kZSwgcmVwbGFjZW1lbnRzKSk7CisgICAgICAgICAgICAg
ICAgICAgIG1NdWx0aVJlcGxhY2VtZW50cy5wdXNoX2JhY2soCisgICAgICAgICAgICAgICAgICAg
ICAgICBOb2RlUmVwbGFjZVdpdGhNdWx0aXBsZUVudHJ5KHBhcmVudEJsb2NrLCBub2RlLCByZXBs
YWNlbWVudHMpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIGVsc2UgaWYgKHZpc2l0
ID09IFBvc3RWaXNpdCkKLSAgICB7Ci0gICAgICAgIGlmIChub2RlLT5nZXRPcCgpID09IEVPcEZ1
bmN0aW9uKQotICAgICAgICB7Ci0gICAgICAgICAgICBtSW5GdW5jdGlvbldpdGhBcnJheVJldHVy
blZhbHVlID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTE2NiwxMiArMTcyLDExIEBACiAgICAgICAgIC8vIEluc3RlYWQgb2YgcmV0dXJuaW5nIGEg
dmFsdWUsIGFzc2lnbiB0byB0aGUgb3V0IHBhcmFtZXRlciBhbmQgdGhlbiByZXR1cm4uCiAgICAg
ICAgIFRJbnRlcm1TZXF1ZW5jZSByZXBsYWNlbWVudHM7CiAKLSAgICAgICAgVEludGVybUJpbmFy
eSAqcmVwbGFjZW1lbnRBc3NpZ25tZW50ID0gbmV3IFRJbnRlcm1CaW5hcnkoRU9wQXNzaWduKTsK
ICAgICAgICAgVEludGVybVR5cGVkICpleHByZXNzaW9uID0gbm9kZS0+Z2V0RXhwcmVzc2lvbigp
OwogICAgICAgICBBU1NFUlQoZXhwcmVzc2lvbiAhPSBudWxscHRyKTsKLSAgICAgICAgcmVwbGFj
ZW1lbnRBc3NpZ25tZW50LT5zZXRMZWZ0KENyZWF0ZVJldHVyblZhbHVlU3ltYm9sKGV4cHJlc3Np
b24tPmdldFR5cGUoKSkpOwotICAgICAgICByZXBsYWNlbWVudEFzc2lnbm1lbnQtPnNldFJpZ2h0
KG5vZGUtPmdldEV4cHJlc3Npb24oKSk7Ci0gICAgICAgIHJlcGxhY2VtZW50QXNzaWdubWVudC0+
c2V0VHlwZShleHByZXNzaW9uLT5nZXRUeXBlKCkpOworICAgICAgICBUSW50ZXJtU3ltYm9sICpy
ZXR1cm5WYWx1ZVN5bWJvbCA9IENyZWF0ZVJldHVyblZhbHVlU3ltYm9sKGV4cHJlc3Npb24tPmdl
dFR5cGUoKSk7CisgICAgICAgIFRJbnRlcm1CaW5hcnkgKnJlcGxhY2VtZW50QXNzaWdubWVudCA9
CisgICAgICAgICAgICBuZXcgVEludGVybUJpbmFyeShFT3BBc3NpZ24sIHJldHVyblZhbHVlU3lt
Ym9sLCBleHByZXNzaW9uKTsKICAgICAgICAgcmVwbGFjZW1lbnRBc3NpZ25tZW50LT5zZXRMaW5l
KGV4cHJlc3Npb24tPmdldExpbmUoKSk7CiAgICAgICAgIHJlcGxhY2VtZW50cy5wdXNoX2JhY2so
cmVwbGFjZW1lbnRBc3NpZ25tZW50KTsKIApAQCAtMTc5LDcgKzE4NCw4IEBACiAgICAgICAgIHJl
cGxhY2VtZW50QnJhbmNoLT5zZXRMaW5lKG5vZGUtPmdldExpbmUoKSk7CiAgICAgICAgIHJlcGxh
Y2VtZW50cy5wdXNoX2JhY2socmVwbGFjZW1lbnRCcmFuY2gpOwogCi0gICAgICAgIG1NdWx0aVJl
cGxhY2VtZW50cy5wdXNoX2JhY2soTm9kZVJlcGxhY2VXaXRoTXVsdGlwbGVFbnRyeShnZXRQYXJl
bnROb2RlKCktPmdldEFzQWdncmVnYXRlKCksIG5vZGUsIHJlcGxhY2VtZW50cykpOworICAgICAg
ICBtTXVsdGlSZXBsYWNlbWVudHMucHVzaF9iYWNrKAorICAgICAgICAgICAgTm9kZVJlcGxhY2VX
aXRoTXVsdGlwbGVFbnRyeShnZXRQYXJlbnROb2RlKCktPmdldEFzQmxvY2soKSwgbm9kZSwgcmVw
bGFjZW1lbnRzKSk7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTE5Miw3ICsxOTgs
NyBAQAogICAgICAgICBpZiAocmlnaHRBZ2cgIT0gbnVsbHB0ciAmJiByaWdodEFnZy0+Z2V0T3Ao
KSA9PSBFT3BGdW5jdGlvbkNhbGwgJiYgcmlnaHRBZ2ctPmlzVXNlckRlZmluZWQoKSkKICAgICAg
ICAgewogICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqcmVwbGFjZW1lbnRDYWxsID0gQ3Jl
YXRlUmVwbGFjZW1lbnRDYWxsKHJpZ2h0QWdnLCBub2RlLT5nZXRMZWZ0KCkpOwotICAgICAgICAg
ICAgbVJlcGxhY2VtZW50cy5wdXNoX2JhY2soTm9kZVVwZGF0ZUVudHJ5KGdldFBhcmVudE5vZGUo
KSwgbm9kZSwgcmVwbGFjZW1lbnRDYWxsLCBmYWxzZSkpOworICAgICAgICAgICAgcXVldWVSZXBs
YWNlbWVudChub2RlLCByZXBsYWNlbWVudENhbGwsIE9yaWdpbmFsTm9kZTo6SVNfRFJPUFBFRCk7
CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQmFzZVR5cGVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQmFz
ZVR5cGVzLmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL0Jhc2VUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03LDcg
KzcsMTEgQEAKICNpZm5kZWYgQ09NUElMRVJfVFJBTlNMQVRPUl9CQVNFVFlQRVNfSF8KICNkZWZp
bmUgQ09NUElMRVJfVFJBTlNMQVRPUl9CQVNFVFlQRVNfSF8KIAorI2luY2x1ZGUgPGFsZ29yaXRo
bT4KKyNpbmNsdWRlIDxhcnJheT4KKwogI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorI2luY2x1
ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgogCiAvLwogLy8gUHJlY2lzaW9uIHF1YWxpZmllcnMK
QEAgLTI4LDEwICszMiwxMCBAQAogewogICAgIHN3aXRjaChwKQogICAgIHsKLSAgICBjYXNlIEVi
cEhpZ2g6CQlyZXR1cm4gImhpZ2hwIjsJCWJyZWFrOwotICAgIGNhc2UgRWJwTWVkaXVtOgkJcmV0
dXJuICJtZWRpdW1wIjsJYnJlYWs7Ci0gICAgY2FzZSBFYnBMb3c6CQlyZXR1cm4gImxvd3AiOwkJ
YnJlYWs7Ci0gICAgZGVmYXVsdDoJCQlyZXR1cm4gIm1lZGl1bXAiOyAgIGJyZWFrOyAgIC8vIFNh
ZmVzdCBmYWxsYmFjaworICAgICAgICBjYXNlIEVicEhpZ2g6ICAgcmV0dXJuICJoaWdocCI7Cisg
ICAgICAgIGNhc2UgRWJwTWVkaXVtOiByZXR1cm4gIm1lZGl1bXAiOworICAgICAgICBjYXNlIEVi
cExvdzogICAgcmV0dXJuICJsb3dwIjsKKyAgICAgICAgZGVmYXVsdDogICAgICAgIHJldHVybiAi
bWVkaXVtcCI7ICAvLyBTYWZlc3QgZmFsbGJhY2sKICAgICB9CiB9CiAKQEAgLTMzNywxOSArMzQx
LDM0IEBACiAgICAgRXZxTGFzdEZyYWdEYXRhLAogCiAgICAgLy8gR0xTTCBFUyAzLjAgdmVydGV4
IG91dHB1dCBhbmQgZnJhZ21lbnQgaW5wdXQKLSAgICBFdnFTbW9vdGgsICAvLyBJbmNvbXBsZXRl
IHF1YWxpZmllciwgc21vb3RoIGlzIHRoZSBkZWZhdWx0Ci0gICAgRXZxRmxhdCwgICAgLy8gSW5j
b21wbGV0ZSBxdWFsaWZpZXIKLSAgICBFdnFTbW9vdGhPdXQgPSBFdnFTbW9vdGgsCi0gICAgRXZx
RmxhdE91dCAgID0gRXZxRmxhdCwKKyAgICBFdnFTbW9vdGgsICAgIC8vIEluY29tcGxldGUgcXVh
bGlmaWVyLCBzbW9vdGggaXMgdGhlIGRlZmF1bHQKKyAgICBFdnFGbGF0LCAgICAgIC8vIEluY29t
cGxldGUgcXVhbGlmaWVyCisgICAgRXZxQ2VudHJvaWQsICAvLyBJbmNvbXBsZXRlIHF1YWxpZmll
cgorICAgIEV2cVNtb290aE91dCwKKyAgICBFdnFGbGF0T3V0LAogICAgIEV2cUNlbnRyb2lkT3V0
LCAgLy8gSW1wbGllcyBzbW9vdGgKICAgICBFdnFTbW9vdGhJbiwKICAgICBFdnFGbGF0SW4sCiAg
ICAgRXZxQ2VudHJvaWRJbiwgIC8vIEltcGxpZXMgc21vb3RoCiAKKyAgICAvLyBHTFNMIEVTIDMu
MSBjb21wdXRlIHNoYWRlciBzcGVjaWFsIHZhcmlhYmxlcworICAgIEV2cUNvbXB1dGVJbiwKKyAg
ICBFdnFOdW1Xb3JrR3JvdXBzLAorICAgIEV2cVdvcmtHcm91cFNpemUsCisgICAgRXZxV29ya0dy
b3VwSUQsCisgICAgRXZxTG9jYWxJbnZvY2F0aW9uSUQsCisgICAgRXZxR2xvYmFsSW52b2NhdGlv
bklELAorICAgIEV2cUxvY2FsSW52b2NhdGlvbkluZGV4LAorCiAgICAgLy8gZW5kIG9mIGxpc3QK
ICAgICBFdnFMYXN0CiB9OwogCitpbmxpbmUgYm9vbCBJc1F1YWxpZmllclVuc3BlY2lmaWVkKFRR
dWFsaWZpZXIgcXVhbGlmaWVyKQoreworICAgIHJldHVybiAocXVhbGlmaWVyID09IEV2cVRlbXBv
cmFyeSB8fCBxdWFsaWZpZXIgPT0gRXZxR2xvYmFsKTsKK30KKwogZW51bSBUTGF5b3V0TWF0cml4
UGFja2luZwogewogICAgIEVtcFVuc3BlY2lmaWVkLApAQCAtMzY4LDI2ICszODcsNjUgQEAKIHN0
cnVjdCBUTGF5b3V0UXVhbGlmaWVyCiB7CiAgICAgaW50IGxvY2F0aW9uOworICAgIHVuc2lnbmVk
IGludCBsb2NhdGlvbnNTcGVjaWZpZWQ7CiAgICAgVExheW91dE1hdHJpeFBhY2tpbmcgbWF0cml4
UGFja2luZzsKICAgICBUTGF5b3V0QmxvY2tTdG9yYWdlIGJsb2NrU3RvcmFnZTsKIAorICAgIC8v
IENvbXB1dGUgc2hhZGVyIGxheW91dCBxdWFsaWZpZXJzLgorICAgIHNoOjpXb3JrR3JvdXBTaXpl
IGxvY2FsU2l6ZTsKKwogICAgIHN0YXRpYyBUTGF5b3V0UXVhbGlmaWVyIGNyZWF0ZSgpCiAgICAg
ewogICAgICAgICBUTGF5b3V0UXVhbGlmaWVyIGxheW91dFF1YWxpZmllcjsKIAogICAgICAgICBs
YXlvdXRRdWFsaWZpZXIubG9jYXRpb24gPSAtMTsKKyAgICAgICAgbGF5b3V0UXVhbGlmaWVyLmxv
Y2F0aW9uc1NwZWNpZmllZCA9IDA7CiAgICAgICAgIGxheW91dFF1YWxpZmllci5tYXRyaXhQYWNr
aW5nID0gRW1wVW5zcGVjaWZpZWQ7CiAgICAgICAgIGxheW91dFF1YWxpZmllci5ibG9ja1N0b3Jh
Z2UgPSBFYnNVbnNwZWNpZmllZDsKIAorICAgICAgICBsYXlvdXRRdWFsaWZpZXIubG9jYWxTaXpl
LmZpbGwoLTEpOworCiAgICAgICAgIHJldHVybiBsYXlvdXRRdWFsaWZpZXI7CiAgICAgfQogCiAg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBsb2NhdGlvbiA9
PSAtMSAmJiBtYXRyaXhQYWNraW5nID09IEVtcFVuc3BlY2lmaWVkICYmIGJsb2NrU3RvcmFnZSA9
PSBFYnNVbnNwZWNpZmllZDsKKyAgICAgICAgcmV0dXJuIGxvY2F0aW9uID09IC0xICYmIG1hdHJp
eFBhY2tpbmcgPT0gRW1wVW5zcGVjaWZpZWQgJiYKKyAgICAgICAgICAgICAgIGJsb2NrU3RvcmFn
ZSA9PSBFYnNVbnNwZWNpZmllZCAmJiAhbG9jYWxTaXplLmlzQW55VmFsdWVTZXQoKTsKICAgICB9
CisKKyAgICBib29sIGlzQ29tYmluYXRpb25WYWxpZCgpIGNvbnN0CisgICAgeworICAgICAgICBi
b29sIHdvcmtTaXplU3BlY2lmaWVkID0gbG9jYWxTaXplLmlzQW55VmFsdWVTZXQoKTsKKyAgICAg
ICAgYm9vbCBvdGhlckxheW91dFF1YWxpZmllcnNTcGVjaWZpZWQgPQorICAgICAgICAgICAgKGxv
Y2F0aW9uICE9IC0xIHx8IG1hdHJpeFBhY2tpbmcgIT0gRW1wVW5zcGVjaWZpZWQgfHwgYmxvY2tT
dG9yYWdlICE9IEVic1Vuc3BlY2lmaWVkKTsKKworICAgICAgICAvLyB3ZSBjYW4gaGF2ZSBlaXRo
ZXIgdGhlIHdvcmsgZ3JvdXAgc2l6ZSBzcGVjaWZpZWQsIG9yIHRoZSBvdGhlciBsYXlvdXQgcXVh
bGlmaWVycworICAgICAgICByZXR1cm4gISh3b3JrU2l6ZVNwZWNpZmllZCAmJiBvdGhlckxheW91
dFF1YWxpZmllcnNTcGVjaWZpZWQpOworICAgIH0KKworICAgIGJvb2wgaXNMb2NhbFNpemVFcXVh
bChjb25zdCBzaDo6V29ya0dyb3VwU2l6ZSAmbG9jYWxTaXplSW4pIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gbG9jYWxTaXplLmlzV29ya0dyb3VwU2l6ZU1hdGNoaW5nKGxvY2FsU2l6ZUlu
KTsKKyAgICB9CiB9OwogCitpbmxpbmUgY29uc3QgY2hhciAqZ2V0V29ya0dyb3VwU2l6ZVN0cmlu
ZyhzaXplX3QgZGltZW5zaW9uKQoreworICAgIHN3aXRjaCAoZGltZW5zaW9uKQorICAgIHsKKyAg
ICAgICAgY2FzZSAwdToKKyAgICAgICAgICAgIHJldHVybiAibG9jYWxfc2l6ZV94IjsKKyAgICAg
ICAgY2FzZSAxdToKKyAgICAgICAgICAgIHJldHVybiAibG9jYWxfc2l6ZV95IjsKKyAgICAgICAg
Y2FzZSAydToKKyAgICAgICAgICAgIHJldHVybiAibG9jYWxfc2l6ZV96IjsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gImRp
bWVuc2lvbiBvdXQgb2YgYm91bmRzIjsKKyAgICB9Cit9CisKIC8vCiAvLyBUaGlzIGlzIGp1c3Qg
Zm9yIGRlYnVnIHByaW50IG91dCwgY2FycmllZCBhbG9uZyB3aXRoIHRoZSBkZWZpbml0aW9ucyBh
Ym92ZS4KIC8vCkBAIC00MjcsMTEgKzQ4NSwyMSBAQAogICAgIGNhc2UgRXZxTGFzdEZyYWdDb2xv
cjogICAgICAgICAgcmV0dXJuICJMYXN0RnJhZ0NvbG9yIjsKICAgICBjYXNlIEV2cUxhc3RGcmFn
RGF0YTogICAgICAgICAgIHJldHVybiAiTGFzdEZyYWdEYXRhIjsKICAgICBjYXNlIEV2cVNtb290
aE91dDogICAgICAgICAgICAgIHJldHVybiAic21vb3RoIG91dCI7Ci0gICAgY2FzZSBFdnFDZW50
cm9pZE91dDogICAgICAgICAgICByZXR1cm4gImNlbnRyb2lkIG91dCI7CisgICAgY2FzZSBFdnFD
ZW50cm9pZE91dDogICAgICAgICAgICByZXR1cm4gInNtb290aCBjZW50cm9pZCBvdXQiOwogICAg
IGNhc2UgRXZxRmxhdE91dDogICAgICAgICAgICAgICAgcmV0dXJuICJmbGF0IG91dCI7CiAgICAg
Y2FzZSBFdnFTbW9vdGhJbjogICAgICAgICAgICAgICByZXR1cm4gInNtb290aCBpbiI7CiAgICAg
Y2FzZSBFdnFGbGF0SW46ICAgICAgICAgICAgICAgICByZXR1cm4gImZsYXQgaW4iOwotICAgIGNh
c2UgRXZxQ2VudHJvaWRJbjogICAgICAgICAgICAgcmV0dXJuICJjZW50cm9pZCBpbiI7CisgICAg
Y2FzZSBFdnFDZW50cm9pZEluOiAgICAgICAgICAgICByZXR1cm4gInNtb290aCBjZW50cm9pZCBp
biI7CisgICAgY2FzZSBFdnFDZW50cm9pZDogICAgICAgICAgICAgICByZXR1cm4gImNlbnRyb2lk
IjsKKyAgICBjYXNlIEV2cUZsYXQ6ICAgICAgICAgICAgICAgICAgIHJldHVybiAiZmxhdCI7Cisg
ICAgY2FzZSBFdnFTbW9vdGg6ICAgICAgICAgICAgICAgICByZXR1cm4gInNtb290aCI7CisgICAg
Y2FzZSBFdnFDb21wdXRlSW46ICAgICAgICAgICAgICByZXR1cm4gImluIjsKKyAgICBjYXNlIEV2
cU51bVdvcmtHcm91cHM6ICAgICAgICAgIHJldHVybiAiTnVtV29ya0dyb3VwcyI7CisgICAgY2Fz
ZSBFdnFXb3JrR3JvdXBTaXplOiAgICAgICAgICByZXR1cm4gIldvcmtHcm91cFNpemUiOworICAg
IGNhc2UgRXZxV29ya0dyb3VwSUQ6ICAgICAgICAgICAgcmV0dXJuICJXb3JrR3JvdXBJRCI7Cisg
ICAgY2FzZSBFdnFMb2NhbEludm9jYXRpb25JRDogICAgICByZXR1cm4gIkxvY2FsSW52b2NhdGlv
bklEIjsKKyAgICBjYXNlIEV2cUdsb2JhbEludm9jYXRpb25JRDogICAgIHJldHVybiAiR2xvYmFs
SW52b2NhdGlvbklEIjsKKyAgICBjYXNlIEV2cUxvY2FsSW52b2NhdGlvbkluZGV4OiAgIHJldHVy
biAiTG9jYWxJbnZvY2F0aW9uSW5kZXgiOwogICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAg
ICAgICAgcmV0dXJuICJ1bmtub3duIHF1YWxpZmllciI7CiAgICAgfQogICAgIC8vIGNsYW5nLWZv
cm1hdCBvbgpAQCAtNDYwLDE4ICs1MjgsNCBAQAogICAgIH0KIH0KIAotaW5saW5lIGNvbnN0IGNo
YXIqIGdldEludGVycG9sYXRpb25TdHJpbmcoVFF1YWxpZmllciBxKQotewotICAgIHN3aXRjaChx
KQotICAgIHsKLSAgICBjYXNlIEV2cVNtb290aE91dDogICAgICByZXR1cm4gInNtb290aCI7ICAg
YnJlYWs7Ci0gICAgY2FzZSBFdnFDZW50cm9pZE91dDogICAgcmV0dXJuICJjZW50cm9pZCI7IGJy
ZWFrOwotICAgIGNhc2UgRXZxRmxhdE91dDogICAgICAgIHJldHVybiAiZmxhdCI7ICAgICBicmVh
azsKLSAgICBjYXNlIEV2cVNtb290aEluOiAgICAgICByZXR1cm4gInNtb290aCI7ICAgYnJlYWs7
Ci0gICAgY2FzZSBFdnFDZW50cm9pZEluOiAgICAgcmV0dXJuICJjZW50cm9pZCI7IGJyZWFrOwot
ICAgIGNhc2UgRXZxRmxhdEluOiAgICAgICAgIHJldHVybiAiZmxhdCI7ICAgICBicmVhazsKLSAg
ICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyByZXR1cm4gInVua25vd24gaW50ZXJwb2xhdGlvbiI7
Ci0gICAgfQotfQotCiAjZW5kaWYgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9CQVNFVFlQRVNfSF8K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0Jy
ZWFrVmFyaWFibGVBbGlhc2luZ0luSW5uZXJMb29wcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQnJlYWtWYXJpYWJsZUFs
aWFzaW5nSW5Jbm5lckxvb3BzLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9CcmVha1ZhcmlhYmxlQWxpYXNpbmdJbklu
bmVyTG9vcHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA2IEBACisvLworLy8gQ29w
eXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKworLy8gQnJlYWtWYXJpYWJsZUFsaWFzaW5nSW5Jbm5lckxvb3BzLmg6IFRvIG9wdGltaXpl
IHNpbXBsZSBhc3NpZ25tZW50cywgdGhlIEhMU0wgY29tcGlsZXIgZnJvbnRlbmQKKy8vICAgICAg
bWF5IHJlY29yZCBhIHZhcmlhYmxlIGFzIGFsaWFzaW5nIGFub3RoZXIuIFNvbWV0aW1lcyB0aGUg
YWxpYXMgaW5mb3JtYXRpb24gZ2V0cyBnYXJibGVkCisvLyAgICAgIHNvIHdlIHdvcmsgYXJvdW5k
IHRoaXMgaXNzdWUgYnkgYnJlYWtpbmcgdGhlIGFsaWFzaW5nIGNoYWluIGluIGlubmVyIGxvb3Bz
LgorCisjaW5jbHVkZSAiQnJlYWtWYXJpYWJsZUFsaWFzaW5nSW5Jbm5lckxvb3BzLmgiCisKKyNp
bmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuaCIKKworLy8gQSBITFNMIGNv
bXBpbGVyIGRldmVsb3BlciBnYXZlIHVzIG1vcmUgZGV0YWlscyBvbiB0aGUgcm9vdCBjYXVzZSBh
bmQgdGhlIHdvcmthcm91bmQgbmVlZGVkOgorLy8gICAgIFRoZSByb290IHByb2JsZW0gaXMgdGhh
dCBpZiB0aGUgSExTTCBjb21waWxlciBpcyBhcHBseWluZyBhbGlhc2luZyBpbmZvcm1hdGlvbiBl
dmVuIG9uCisvLyAgICAgaW5jb21wbGV0ZSBzaW11bGF0aW9ucyAoaW4gdGhpcyBjYXNlLCBhIHNp
bmdsZSBwYXNzKS4gVGhlIGJ1ZyBpcyB0cmlnZ2VyZWQgYnkgYW4gYXNzaWdubWVudAorLy8gICAg
IHRoYXQgY29tZXMgZnJvbSBhIHNlcmllcyBvZiBhc3NpZ25tZW50cywgcG9zc2libHkgd2l0aCBz
d2l6emxlZCBvciB0ZXJuYXJ5IG9wZXJhdG9ycyB3aXRoCisvLyAgICAga25vd24gY29uZGl0aW9u
YWxzLCB3aGVyZSB0aGUgc291cmNlIGlzIGJlZm9yZSB0aGUgbG9vcC4KKy8vICAgICBTbywgYSB3
b3JrYXJvdW5kIGlzIHRvIGFkZCBhICswIHRlcm0gdG8gdmFyaWFibGVzIHRoZSBmaXJzdCB0aW1l
IHRoZXkgYXJlIGFzc2lnbmVkIHRvIGluCisvLyAgICAgYW4gaW5uZXIgbG9vcCAoaWYgdGhleSBh
cmUgZGVjbGFyZWQgaW4gYW4gb3V0c2lkZSBzY29wZSwgb3RoZXJ3aXNlIHRoZXJlIGlzIG5vIG5l
ZWQpLgorLy8gICAgIFRoaXMgd2lsbCBicmVhayB0aGUgYWxpYXNpbmcgY2hhaW4uCisKKy8vIEZv
ciBzaW1wbGljaXR5IGhlcmUgd2UgYWRkIGEgKzAgdG8gYW55IGFzc2lnbm1lbnQgdGhhdCBpcyBp
biBhdCBsZWFzdCB0d28gbmVzdGVkIGxvb3BzLiBCZWNhdXNlCisvLyB0aGUgYnVnIG9ubHkgc2hv
d3MgdXAgd2l0aCBzd2l6emxlcywgYW5kIHRlcm5hcnkgYXNzaWdubWVudCwgd2hvbGUgYXJyYXkg
b3Igd2hvbGUgc3RydWN0dXJlCisvLyBhc3NpZ25tZW50IGRvbid0IG5lZWQgYSB3b3JrYXJvdW5k
LgorCituYW1lc3BhY2UKK3sKKworY2xhc3MgQWxpYXNpbmdCcmVha2VyIDogcHVibGljIFRJbnRl
cm1UcmF2ZXJzZXIKK3sKKyAgcHVibGljOgorICAgIEFsaWFzaW5nQnJlYWtlcigpIDogVEludGVy
bVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgdHJ1ZSkge30KKworICBwcm90ZWN0ZWQ6CisgICAgYm9v
bCB2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqYmluYXJ5KQorICAgIHsK
KyAgICAgICAgaWYgKHZpc2l0ICE9IFByZVZpc2l0KQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBpZiAobUxvb3BMZXZlbCA8IDIgfHwg
IWJpbmFyeS0+aXNBc3NpZ25tZW50KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisKKyAgICAgICAgVEludGVybVR5cGVkICpCID0gYmluYXJ5LT5nZXRS
aWdodCgpOworICAgICAgICBUVHlwZSB0eXBlICAgICAgPSBCLT5nZXRUeXBlKCk7CisKKyAgICAg
ICAgaWYgKCF0eXBlLmlzU2NhbGFyKCkgJiYgIXR5cGUuaXNWZWN0b3IoKSAmJiAhdHlwZS5pc01h
dHJpeCgpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmICh0eXBlLmlzQXJyYXkoKSB8fCBJc1NhbXBsZXIodHlwZS5nZXRCYXNpY1R5
cGUoKSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisK
KyAgICAgICAgLy8gV2UgaGF2ZSBhIHNjYWxhciAvIHZlY3RvciAvIG1hdHJpeCBhc3NpZ25tZW50
IHdpdGggbG9vcCBkZXB0aCAyLgorICAgICAgICAvLyBUcmFuc2Zvcm0gaXQgZnJvbQorICAgICAg
ICAvLyAgICBBID0gQgorICAgICAgICAvLyB0bworICAgICAgICAvLyAgICBBID0gKEIgKyB0eXBl
b2Y8Qj4oMCkpOworCisgICAgICAgIFRJbnRlcm1CaW5hcnkgKmJQbHVzWmVybyA9IG5ldyBUSW50
ZXJtQmluYXJ5KEVPcEFkZCwgQiwgVEludGVybVR5cGVkOjpDcmVhdGVaZXJvKHR5cGUpKTsKKyAg
ICAgICAgYlBsdXNaZXJvLT5zZXRMaW5lKEItPmdldExpbmUoKSk7CisKKyAgICAgICAgYmluYXJ5
LT5yZXBsYWNlQ2hpbGROb2RlKEIsIGJQbHVzWmVybyk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgYm9vbCB2aXNpdExvb3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29wICps
b29wKQorICAgIHsKKyAgICAgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0KQorICAgICAgICB7Cisg
ICAgICAgICAgICBtTG9vcExldmVsKys7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAg
ICB7CisgICAgICAgICAgICBBU1NFUlQobUxvb3BMZXZlbCA+IDApOworICAgICAgICAgICAgbUxv
b3BMZXZlbC0tOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
IHByaXZhdGU6CisgICAgaW50IG1Mb29wTGV2ZWwgPSAwOworfTsKKworfSAgLy8gYW5vbnltb3Vz
IG5hbWVzcGFjZQorCituYW1lc3BhY2Ugc2gKK3sKKwordm9pZCBCcmVha1ZhcmlhYmxlQWxpYXNp
bmdJbklubmVyTG9vcHMoVEludGVybU5vZGUgKnJvb3QpCit7CisgICAgQWxpYXNpbmdCcmVha2Vy
IGJyZWFrZXI7CisgICAgcm9vdC0+dHJhdmVyc2UoJmJyZWFrZXIpOworfQorCit9ICAvLyBuYW1l
c3BhY2Ugc2gKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL0JyZWFrVmFyaWFibGVBbGlhc2luZ0luSW5uZXJMb29wcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0JyZWFrVmFy
aWFibGVBbGlhc2luZ0luSW5uZXJMb29wcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0JyZWFrVmFyaWFibGVBbGlhc2lu
Z0luSW5uZXJMb29wcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjMgQEAKKy8vCisvLyBD
b3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisvLworCisvLyBCcmVha1ZhcmlhYmxlQWxpYXNpbmdJbklubmVyTG9vcHMuaDogVG8gb3B0aW1p
emUgc2ltcGxlIGFzc2lnbm1lbnRzLCB0aGUgSExTTCBjb21waWxlciBmcm9udGVuZAorLy8gICAg
ICBtYXkgcmVjb3JkIGEgdmFyaWFibGUgYXMgYWxpYXNpbmcgYW5vdGhlci4gU29tZXRpbWVzIHRo
ZSBhbGlhcyBpbmZvcm1hdGlvbiBnZXRzIGdhcmJsZWQKKy8vICAgICAgc28gd2Ugd29yayBhcm91
bmQgdGhpcyBpc3N1ZSBieSBicmVha2luZyB0aGUgYWxpYXNpbmcgY2hhaW4gaW4gaW5uZXIgbG9v
cHMuCisKKyNpZm5kZWYgQ09NUElMRVJfVFJBTlNMQVRPUl9CUkVBS1ZBUklBQkxFQUxJQVNJTkdJ
TklOTkVSTE9PUFNfSF8KKyNkZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9CUkVBS1ZBUklBQkxF
QUxJQVNJTkdJTklOTkVSTE9PUFNfSF8KKworY2xhc3MgVEludGVybU5vZGU7CisKK25hbWVzcGFj
ZSBzaAoreworCit2b2lkIEJyZWFrVmFyaWFibGVBbGlhc2luZ0luSW5uZXJMb29wcyhUSW50ZXJt
Tm9kZSAqcm9vdCk7CisKK30gIC8vIG5hbWVzcGFjZSBzaAorCisjZW5kaWYgIC8vIENPTVBJTEVS
X1RSQU5TTEFUT1JfQlJFQUtWQVJJQUJMRUFMSUFTSU5HSU5JTk5FUkxPT1BTX0hfCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9CdWlsdEluRnVu
Y3Rpb25FbXVsYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwCShyZXZp
c2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcs
NiArNyw3IEBACiAjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFu
c2xhdG9yL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJh
bnNsYXRvci9TeW1ib2xUYWJsZS5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvQ2Fj
aGUuaCIKIAogY2xhc3MgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OkJ1aWx0SW5GdW5jdGlvbkVt
dWxhdGlvbk1hcmtlciA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiB7CkBAIC0xOTQsOCArMTk1
LDggQEAKIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpGdW5jdGlvbklkOjpGdW5jdGlvbklkKFRP
cGVyYXRvciBvcCwgY29uc3QgVFR5cGUgKnBhcmFtKQogICAgIDogbU9wKG9wKSwKICAgICAgIG1Q
YXJhbTEocGFyYW0pLAotICAgICAgbVBhcmFtMihuZXcgVFR5cGUoRWJ0Vm9pZCkpLAotICAgICAg
bVBhcmFtMyhuZXcgVFR5cGUoRWJ0Vm9pZCkpCisgICAgICBtUGFyYW0yKFRDYWNoZTo6Z2V0VHlw
ZShFYnRWb2lkKSksCisgICAgICBtUGFyYW0zKFRDYWNoZTo6Z2V0VHlwZShFYnRWb2lkKSkKIHsK
IH0KIApAQCAtMjAzLDcgKzIwNCw3IEBACiAgICAgOiBtT3Aob3ApLAogICAgICAgbVBhcmFtMShw
YXJhbTEpLAogICAgICAgbVBhcmFtMihwYXJhbTIpLAotICAgICAgbVBhcmFtMyhuZXcgVFR5cGUo
RWJ0Vm9pZCkpCisgICAgICBtUGFyYW0zKFRDYWNoZTo6Z2V0VHlwZShFYnRWb2lkKSkKIHsKIH0K
IApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JHTFNMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9CdWlsdEluRnVuY3Rpb25FbXVs
YXRvckdMU0wuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvckdMU0wuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMSwzMSArMTEsNjUgQEAKICNpbmNsdWRlICJjb21waWxlci90
cmFuc2xhdG9yL1N5bWJvbFRhYmxlLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9W
ZXJzaW9uR0xTTC5oIgogCi12b2lkIEluaXRCdWlsdEluRnVuY3Rpb25FbXVsYXRvckZvckdMU0xX
b3JrYXJvdW5kcyhCdWlsdEluRnVuY3Rpb25FbXVsYXRvciAqZW11LCBzaDo6R0xlbnVtIHNoYWRl
clR5cGUpCit2b2lkIEluaXRCdWlsdEluQWJzRnVuY3Rpb25FbXVsYXRvckZvckdMU0xXb3JrYXJv
dW5kcyhCdWlsdEluRnVuY3Rpb25FbXVsYXRvciAqZW11LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2g6OkdMZW51bSBzaGFkZXJUeXBlKQog
ewotICAgIC8vIHdlIHVzZSBtYWNyb3MgaGVyZSBpbnN0ZWFkIG9mIGZ1bmN0aW9uIGRlZmluaXRp
b25zIHRvIHdvcmsgYXJvdW5kIG1vcmUgR0xTTAotICAgIC8vIGNvbXBpbGVyIGJ1Z3MsIGluIHBh
cnRpY3VsYXIgb24gTlZJRElBIGhhcmR3YXJlIG9uIE1hYyBPU1guIE1hY3JvcyBhcmUKLSAgICAv
LyBwcm9ibGVtYXRpYyBiZWNhdXNlIGlmIHRoZSBhcmd1bWVudCBoYXMgc2lkZS1lZmZlY3RzIHRo
ZXkgd2lsbCBiZSByZXBlYXRlZGx5Ci0gICAgLy8gZXZhbHVhdGVkLiBUaGlzIGlzIHVubGlrZWx5
IHRvIHNob3cgdXAgaW4gcmVhbCBzaGFkZXJzLCBidXQgaXMgc29tZXRoaW5nIHRvCi0gICAgLy8g
Y29uc2lkZXIuCisgICAgaWYgKHNoYWRlclR5cGUgPT0gR0xfVkVSVEVYX1NIQURFUikKKyAgICB7
CisgICAgICAgIGNvbnN0IFRUeXBlICppbnQxID0gVENhY2hlOjpnZXRUeXBlKEVidEludCk7Cisg
ICAgICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BBYnMsIGludDEsICJpbnQgd2ViZ2xf
YWJzX2VtdShpbnQgeCkgeyByZXR1cm4geCAqIHNpZ24oeCk7IH0iKTsKKyAgICB9Cit9CiAKK3Zv
aWQgSW5pdEJ1aWx0SW5Jc25hbkZ1bmN0aW9uRW11bGF0b3JGb3JHTFNMV29ya2Fyb3VuZHMoQnVp
bHRJbkZ1bmN0aW9uRW11bGF0b3IgKmVtdSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRhcmdldEdMU0xWZXJzaW9uKQoreworICAg
IC8vIGlzbmFuKCkgaXMgc3VwcG9ydGVkIHNpbmNlIEdMU0wgMS4zLgorICAgIGlmICh0YXJnZXRH
TFNMVmVyc2lvbiA8IEdMU0xfVkVSU0lPTl8xMzApCisgICAgICAgIHJldHVybjsKKwogICAgIGNv
bnN0IFRUeXBlICpmbG9hdDEgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0RmxvYXQpOwogICAgIGNvbnN0
IFRUeXBlICpmbG9hdDIgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0RmxvYXQsIDIpOwogICAgIGNvbnN0
IFRUeXBlICpmbG9hdDMgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0RmxvYXQsIDMpOwogICAgIGNvbnN0
IFRUeXBlICpmbG9hdDQgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0RmxvYXQsIDQpOwogCi0gICAgaWYg
KHNoYWRlclR5cGUgPT0gR0xfRlJBR01FTlRfU0hBREVSKQotICAgIHsKLSAgICAgICAgZW11LT5h
ZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcENvcywgZmxvYXQxLCAid2ViZ2xfZW11X3ByZWNpc2lvbiBm
bG9hdCB3ZWJnbF9jb3NfZW11KHdlYmdsX2VtdV9wcmVjaXNpb24gZmxvYXQgYSkgeyByZXR1cm4g
Y29zKGEpOyB9Iik7Ci0gICAgICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BDb3MsIGZs
b2F0MiwgIndlYmdsX2VtdV9wcmVjaXNpb24gdmVjMiB3ZWJnbF9jb3NfZW11KHdlYmdsX2VtdV9w
cmVjaXNpb24gdmVjMiBhKSB7IHJldHVybiBjb3MoYSk7IH0iKTsKLSAgICAgICAgZW11LT5hZGRF
bXVsYXRlZEZ1bmN0aW9uKEVPcENvcywgZmxvYXQzLCAid2ViZ2xfZW11X3ByZWNpc2lvbiB2ZWMz
IHdlYmdsX2Nvc19lbXUod2ViZ2xfZW11X3ByZWNpc2lvbiB2ZWMzIGEpIHsgcmV0dXJuIGNvcyhh
KTsgfSIpOwotICAgICAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wQ29zLCBmbG9hdDQs
ICJ3ZWJnbF9lbXVfcHJlY2lzaW9uIHZlYzQgd2ViZ2xfY29zX2VtdSh3ZWJnbF9lbXVfcHJlY2lz
aW9uIHZlYzQgYSkgeyByZXR1cm4gY29zKGEpOyB9Iik7Ci0gICAgfQotICAgIGVtdS0+YWRkRW11
bGF0ZWRGdW5jdGlvbihFT3BEaXN0YW5jZSwgZmxvYXQxLCBmbG9hdDEsICIjZGVmaW5lIHdlYmds
X2Rpc3RhbmNlX2VtdSh4LCB5KSAoKHgpID49ICh5KSA/ICh4KSAtICh5KSA6ICh5KSAtICh4KSki
KTsKLSAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wRG90LCBmbG9hdDEsIGZsb2F0MSwg
IiNkZWZpbmUgd2ViZ2xfZG90X2VtdSh4LCB5KSAoKHgpICogKHkpKSIpOwotICAgIGVtdS0+YWRk
RW11bGF0ZWRGdW5jdGlvbihFT3BMZW5ndGgsIGZsb2F0MSwgIiNkZWZpbmUgd2ViZ2xfbGVuZ3Ro
X2VtdSh4KSAoKHgpID49IDAuMCA/ICh4KSA6IC0oeCkpIik7Ci0gICAgZW11LT5hZGRFbXVsYXRl
ZEZ1bmN0aW9uKEVPcE5vcm1hbGl6ZSwgZmxvYXQxLCAiI2RlZmluZSB3ZWJnbF9ub3JtYWxpemVf
ZW11KHgpICgoeCkgPT0gMC4wID8gMC4wIDogKCh4KSA+IDAuMCA/IDEuMCA6IC0xLjApKSIpOwot
ICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BSZWZsZWN0LCBmbG9hdDEsIGZsb2F0MSwg
IiNkZWZpbmUgd2ViZ2xfcmVmbGVjdF9lbXUoSSwgTikgKChJKSAtIDIuMCAqIChOKSAqIChJKSAq
IChOKSkiKTsKKyAgICAvLyAhKHggPiAwLjAgfHwgeCA8IDAuMCB8fCB4ID09IDAuMCkgd2lsbCBi
ZSBvcHRpbWl6ZWQgYW5kIGFsd2F5cyBlcXVhbCB0byBmYWxzZS4KKyAgICBlbXUtPmFkZEVtdWxh
dGVkRnVuY3Rpb24oCisgICAgICAgIEVPcElzTmFuLCBmbG9hdDEsCisgICAgICAgICJib29sIHdl
YmdsX2lzbmFuX2VtdShmbG9hdCB4KSB7IHJldHVybiAoeCA+IDAuMCB8fCB4IDwgMC4wKSA/IGZh
bHNlIDogeCAhPSAwLjA7IH0iKTsKKyAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oCisgICAg
ICAgIEVPcElzTmFuLCBmbG9hdDIsCisgICAgICAgICJidmVjMiB3ZWJnbF9pc25hbl9lbXUodmVj
MiB4KVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGJ2ZWMyIGlzbmFuO1xuIgorICAg
ICAgICAiICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjsgaSsrKVxuIgorICAgICAgICAiICAgIHtc
biIKKyAgICAgICAgIiAgICAgICAgaXNuYW5baV0gPSAoeFtpXSA+IDAuMCB8fCB4W2ldIDwgMC4w
KSA/IGZhbHNlIDogeFtpXSAhPSAwLjA7XG4iCisgICAgICAgICIgICAgfVxuIgorICAgICAgICAi
ICAgIHJldHVybiBpc25hbjtcbiIKKyAgICAgICAgIn1cbiIpOworICAgIGVtdS0+YWRkRW11bGF0
ZWRGdW5jdGlvbigKKyAgICAgICAgRU9wSXNOYW4sIGZsb2F0MywKKyAgICAgICAgImJ2ZWMzIHdl
YmdsX2lzbmFuX2VtdSh2ZWMzIHgpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgYnZl
YzMgaXNuYW47XG4iCisgICAgICAgICIgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyBpKyspXG4i
CisgICAgICAgICIgICAge1xuIgorICAgICAgICAiICAgICAgICBpc25hbltpXSA9ICh4W2ldID4g
MC4wIHx8IHhbaV0gPCAwLjApID8gZmFsc2UgOiB4W2ldICE9IDAuMDtcbiIKKyAgICAgICAgIiAg
ICB9XG4iCisgICAgICAgICIgICAgcmV0dXJuIGlzbmFuO1xuIgorICAgICAgICAifVxuIik7Cisg
ICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKAorICAgICAgICBFT3BJc05hbiwgZmxvYXQ0LAor
ICAgICAgICAiYnZlYzQgd2ViZ2xfaXNuYW5fZW11KHZlYzQgeClcbiIKKyAgICAgICAgIntcbiIK
KyAgICAgICAgIiAgICBidmVjNCBpc25hbjtcbiIKKyAgICAgICAgIiAgICBmb3IgKGludCBpID0g
MDsgaSA8IDQ7IGkrKylcbiIKKyAgICAgICAgIiAgICB7XG4iCisgICAgICAgICIgICAgICAgIGlz
bmFuW2ldID0gKHhbaV0gPiAwLjAgfHwgeFtpXSA8IDAuMCkgPyBmYWxzZSA6IHhbaV0gIT0gMC4w
O1xuIgorICAgICAgICAiICAgIH1cbiIKKyAgICAgICAgIiAgICByZXR1cm4gaXNuYW47XG4iCisg
ICAgICAgICJ9XG4iKTsKIH0KIAogLy8gRW11bGF0ZSBidWlsdC1pbiBmdW5jdGlvbnMgbWlzc2lu
ZyBmcm9tIEdMU0wgMS4zMCBhbmQgaGlnaGVyCkBAIC00Miw2ICs3NiwzMSBAQAogdm9pZCBJbml0
QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JGb3JHTFNMTWlzc2luZ0Z1bmN0aW9ucyhCdWlsdEluRnVu
Y3Rpb25FbXVsYXRvciAqZW11LCBzaDo6R0xlbnVtIHNoYWRlclR5cGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0YXJnZXRHTFNM
VmVyc2lvbikKIHsKKyAgICAvLyBFbXVsYXRlIHBhY2tVbm9ybTJ4MTYgYW5kIHVucGFja1Vub3Jt
MngxNiAoR0xTTCA0LjEwKQorICAgIGlmICh0YXJnZXRHTFNMVmVyc2lvbiA8IEdMU0xfVkVSU0lP
Tl80MTApCisgICAgeworICAgICAgICBjb25zdCBUVHlwZSAqZmxvYXQyID0gVENhY2hlOjpnZXRU
eXBlKEVidEZsb2F0LCAyKTsKKyAgICAgICAgY29uc3QgVFR5cGUgKnVpbnQxICA9IFRDYWNoZTo6
Z2V0VHlwZShFYnRVSW50KTsKKworICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgICAgICAg
IGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BQYWNrVW5vcm0yeDE2LCBmbG9hdDIsCisgICAg
ICAgICAgICAidWludCB3ZWJnbF9wYWNrVW5vcm0yeDE2X2VtdSh2ZWMyIHYpXG4iCisgICAgICAg
ICAgICAie1xuIgorICAgICAgICAgICAgIiAgICBpbnQgeCA9IGludChyb3VuZChjbGFtcCh2Lngs
IDAuMCwgMS4wKSAqIDY1NTM1LjApKTtcbiIKKyAgICAgICAgICAgICIgICAgaW50IHkgPSBpbnQo
cm91bmQoY2xhbXAodi55LCAwLjAsIDEuMCkgKiA2NTUzNS4wKSk7XG4iCisgICAgICAgICAgICAi
ICAgIHJldHVybiB1aW50KCh5IDw8IDE2KSB8ICh4ICYgMHhGRkZGKSk7XG4iCisgICAgICAgICAg
ICAifVxuIik7CisKKyAgICAgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcFVucGFja1Vu
b3JtMngxNiwgdWludDEsCisgICAgICAgICAgICAidmVjMiB3ZWJnbF91bnBhY2tVbm9ybTJ4MTZf
ZW11KHVpbnQgdSlcbiIKKyAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAiICAgIGZsb2F0
IHggPSBmbG9hdCh1ICYgMHhGRkZGdSkgLyA2NTUzNS4wO1xuIgorICAgICAgICAgICAgIiAgICBm
bG9hdCB5ID0gZmxvYXQodSA+PiAxNikgLyA2NTUzNS4wO1xuIgorICAgICAgICAgICAgIiAgICBy
ZXR1cm4gdmVjMih4LCB5KTtcbiIKKyAgICAgICAgICAgICJ9XG4iKTsKKyAgICAgICAgLy8gY2xh
bmctZm9ybWF0IG9uCisgICAgfQorCiAgICAgLy8gRW11bGF0ZSBwYWNrU25vcm0yeDE2LCBwYWNr
SGFsZjJ4MTYsIHVucGFja1Nub3JtMngxNiwgYW5kIHVucGFja0hhbGYyeDE2IChHTFNMIDQuMjAp
CiAgICAgLy8gYnkgdXNpbmcgZmxvYXRCaXRzVG9JbnQsIGZsb2F0Qml0c1RvVWludCwgaW50Qml0
c1RvRmxvYXQsIGFuZCB1aW50Qml0c1RvRmxvYXQgKEdMU0wgMy4zMCkuCiAgICAgaWYgKHRhcmdl
dEdMU0xWZXJzaW9uID49IEdMU0xfVkVSU0lPTl8zMzAgJiYgdGFyZ2V0R0xTTFZlcnNpb24gPCBH
TFNMX1ZFUlNJT05fNDIwKQpAQCAtMTU1LDcgKzIxNCw5IEBACiAgICAgICAgICAgICAiICAgICAg
ICAgICAgZmxvYXQgc2NhbGU7XG4iCiAgICAgICAgICAgICAiICAgICAgICAgICAgaWYoZXhwb25l
bnQgPCAwKVxuIgogICAgICAgICAgICAgIiAgICAgICAgICAgIHtcbiIKLSAgICAgICAgICAgICIg
ICAgICAgICAgICAgICAgc2NhbGUgPSAxLjAgLyAoMSA8PCAtZXhwb25lbnQpO1xuIgorICAgICAg
ICAgICAgIiAgICAgICAgICAgICAgICAvLyBUaGUgbmVnYXRpdmUgdW5hcnkgb3BlcmF0b3IgaXMg
YnVnZ3kgb24gT1NYLlxuIgorICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAvLyBXb3JrIGFy
b3VuZCB0aGlzIGJ5IHVzaW5nIGFicyBpbnN0ZWFkLlxuIgorICAgICAgICAgICAgIiAgICAgICAg
ICAgICAgICBzY2FsZSA9IDEuMCAvICgxIDw8IGFicyhleHBvbmVudCkpO1xuIgogICAgICAgICAg
ICAgIiAgICAgICAgICAgIH1cbiIKICAgICAgICAgICAgICIgICAgICAgICAgICBlbHNlXG4iCiAg
ICAgICAgICAgICAiICAgICAgICAgICAge1xuIgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JHTFNMLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JHTFNMLmgJKHJldmlzaW9uIDIwODAyMSkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0J1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yR0xTTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMiwxMSArMTIsMTggQEAK
IGNsYXNzIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOwogCiAvLwotLy8gVGhpcyBpcyBvbmx5IGEg
d29ya2Fyb3VuZCBmb3IgT3BlbkdMIGRyaXZlciBidWdzLCBhbmQgaXNuJ3QgbmVlZGVkIGluIGdl
bmVyYWwuCisvLyBUaGlzIHdvcmtzIGFyb3VuZCBidWcgaW4gSW50ZWwgTWFjIGRyaXZlcnMuCiAv
Lwotdm9pZCBJbml0QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JGb3JHTFNMV29ya2Fyb3VuZHMoQnVp
bHRJbkZ1bmN0aW9uRW11bGF0b3IgKmVtdSwgc2g6OkdMZW51bSBzaGFkZXJUeXBlKTsKK3ZvaWQg
SW5pdEJ1aWx0SW5BYnNGdW5jdGlvbkVtdWxhdG9yRm9yR0xTTFdvcmthcm91bmRzKEJ1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yICplbXUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaDo6R0xlbnVtIHNoYWRlclR5cGUpOwogCiAvLworLy8gVGhp
cyB3b3JrcyBhcm91bmQgaXNuYW4oKSBidWcgaW4gSW50ZWwgTWFjIGRyaXZlcnMKKy8vCit2b2lk
IEluaXRCdWlsdEluSXNuYW5GdW5jdGlvbkVtdWxhdG9yRm9yR0xTTFdvcmthcm91bmRzKEJ1aWx0
SW5GdW5jdGlvbkVtdWxhdG9yICplbXUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0YXJnZXRHTFNMVmVyc2lvbik7CisKKy8vCiAv
LyBUaGlzIGZ1bmN0aW9uIGlzIGVtdWxhdGluZyBidWlsdC1pbiBmdW5jdGlvbnMgbWlzc2luZyBm
cm9tIEdMU0wgMS4zMCBhbmQgaGlnaGVyLgogLy8KIHZvaWQgSW5pdEJ1aWx0SW5GdW5jdGlvbkVt
dWxhdG9yRm9yR0xTTE1pc3NpbmdGdW5jdGlvbnMoQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IgKmVt
dSwgc2g6OkdMZW51bSBzaGFkZXJUeXBlLApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JITFNMLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvckhMU0wuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9CdWlsdElu
RnVuY3Rpb25FbXVsYXRvckhMU0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04LDcgKzgsNjAgQEAK
ICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmgi
CiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvckhM
U0wuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1N5bWJvbFRhYmxlLmgiCisjaW5j
bHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9WZXJzaW9uR0xTTC5oIgogCit2b2lkIEluaXRCdWls
dEluSXNuYW5GdW5jdGlvbkVtdWxhdG9yRm9ySExTTFdvcmthcm91bmRzKEJ1aWx0SW5GdW5jdGlv
bkVtdWxhdG9yICplbXUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCB0YXJnZXRHTFNMVmVyc2lvbikKK3sKKyAgICBpZiAodGFyZ2V0
R0xTTFZlcnNpb24gPCBHTFNMX1ZFUlNJT05fMTMwKQorICAgICAgICByZXR1cm47CisKKyAgICBU
VHlwZSAqZmxvYXQxID0gbmV3IFRUeXBlKEVidEZsb2F0KTsKKyAgICBUVHlwZSAqZmxvYXQyID0g
bmV3IFRUeXBlKEVidEZsb2F0LCAyKTsKKyAgICBUVHlwZSAqZmxvYXQzID0gbmV3IFRUeXBlKEVi
dEZsb2F0LCAzKTsKKyAgICBUVHlwZSAqZmxvYXQ0ID0gbmV3IFRUeXBlKEVidEZsb2F0LCA0KTsK
KworICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BJc05hbiwgZmxvYXQxLAorICAgICAg
ICAiYm9vbCB3ZWJnbF9pc25hbl9lbXUoZmxvYXQgeClcbiIKKyAgICAgICAgIntcbiIKKyAgICAg
ICAgIiAgICByZXR1cm4gKHggPiAwLjAgfHwgeCA8IDAuMCkgPyBmYWxzZSA6IHggIT0gMC4wO1xu
IgorICAgICAgICAifVxuIgorICAgICAgICAiXG4iKTsKKworICAgIGVtdS0+YWRkRW11bGF0ZWRG
dW5jdGlvbihFT3BJc05hbiwgZmxvYXQyLAorICAgICAgICAiYm9vbDIgd2ViZ2xfaXNuYW5fZW11
KGZsb2F0MiB4KVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGJvb2wyIGlzbmFuO1xu
IgorICAgICAgICAiICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjsgaSsrKVxuIgorICAgICAgICAi
ICAgIHtcbiIKKyAgICAgICAgIiAgICAgICAgaXNuYW5baV0gPSAoeFtpXSA+IDAuMCB8fCB4W2ld
IDwgMC4wKSA/IGZhbHNlIDogeFtpXSAhPSAwLjA7XG4iCisgICAgICAgICIgICAgfVxuIgorICAg
ICAgICAiICAgIHJldHVybiBpc25hbjtcbiIKKyAgICAgICAgIn1cbiIpOworCisgICAgZW11LT5h
ZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcElzTmFuLCBmbG9hdDMsCisgICAgICAgICJib29sMyB3ZWJn
bF9pc25hbl9lbXUoZmxvYXQzIHgpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgYm9v
bDMgaXNuYW47XG4iCisgICAgICAgICIgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyBpKyspXG4i
CisgICAgICAgICIgICAge1xuIgorICAgICAgICAiICAgICAgICBpc25hbltpXSA9ICh4W2ldID4g
MC4wIHx8IHhbaV0gPCAwLjApID8gZmFsc2UgOiB4W2ldICE9IDAuMDtcbiIKKyAgICAgICAgIiAg
ICB9XG4iCisgICAgICAgICIgICAgcmV0dXJuIGlzbmFuO1xuIgorICAgICAgICAifVxuIik7CisK
KyAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wSXNOYW4sIGZsb2F0NCwKKyAgICAgICAg
ImJvb2w0IHdlYmdsX2lzbmFuX2VtdShmbG9hdDQgeClcbiIKKyAgICAgICAgIntcbiIKKyAgICAg
ICAgIiAgICBib29sNCBpc25hbjtcbiIKKyAgICAgICAgIiAgICBmb3IgKGludCBpID0gMDsgaSA8
IDQ7IGkrKylcbiIKKyAgICAgICAgIiAgICB7XG4iCisgICAgICAgICIgICAgICAgIGlzbmFuW2ld
ID0gKHhbaV0gPiAwLjAgfHwgeFtpXSA8IDAuMCkgPyBmYWxzZSA6IHhbaV0gIT0gMC4wO1xuIgor
ICAgICAgICAiICAgIH1cbiIKKyAgICAgICAgIiAgICByZXR1cm4gaXNuYW47XG4iCisgICAgICAg
ICJ9XG4iKTsKK30KKwogdm9pZCBJbml0QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JGb3JITFNMKEJ1
aWx0SW5GdW5jdGlvbkVtdWxhdG9yICplbXUpCiB7CiAgICAgVFR5cGUgKmZsb2F0MSA9IG5ldyBU
VHlwZShFYnRGbG9hdCk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvckhMU0wuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9CdWlsdElu
RnVuY3Rpb25FbXVsYXRvckhMU0wuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0
b3JITFNMLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzLDQgKzEzLDEwIEBACiAKIHZvaWQgSW5pdEJ1
aWx0SW5GdW5jdGlvbkVtdWxhdG9yRm9ySExTTChCdWlsdEluRnVuY3Rpb25FbXVsYXRvciAqZW11
KTsKIAorLy8KKy8vIFRoaXMgd29ya3MgYXJvdW5kIGlzbmFuKCkgYnVnIG9uIHNvbWUgSW50ZWwg
ZHJpdmVycy4KKy8vCit2b2lkIEluaXRCdWlsdEluSXNuYW5GdW5jdGlvbkVtdWxhdG9yRm9ySExT
TFdvcmthcm91bmRzKEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yICplbXUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0YXJnZXRHTFNM
VmVyc2lvbik7CisKICNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9CVUlMVElORlVOQ1RJ
T05FTVVMQVRPUkhMU0xfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL0NhbGxEQUcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0NhbGxEQUcuY3BwCShyZXZpc2lvbiAy
MDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9DYWxsREFHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogICAgICAgICAg
ICAgICAgIHNraXBwZWQrKzsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorCiAgICAgICAgIEFT
U0VSVChtRnVuY3Rpb25zLnNpemUoKSA9PSBtQ3VycmVudEluZGV4ICsgc2tpcHBlZCk7CiAgICAg
ICAgIHJldHVybiBJTklUREFHX1NVQ0NFU1M7CiAgICAgfQpAQCAtNzUsNyArNzYsOCBAQAogICAg
ICAgICAgICAgICAgIHJlY29yZC5jYWxsZWVzLnB1c2hfYmFjayhzdGF0aWNfY2FzdDxpbnQ+KGNh
bGxlZS0+aW5kZXgpKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgKCppZFRvSW5kZXgp
W2RhdGEubm9kZS0+Z2V0RnVuY3Rpb25JZCgpXSA9IHN0YXRpY19jYXN0PGludD4oZGF0YS5pbmRl
eCk7CisgICAgICAgICAgICAoKmlkVG9JbmRleClbZGF0YS5ub2RlLT5nZXRGdW5jdGlvblN5bWJv
bEluZm8oKS0+Z2V0SWQoKV0gPQorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oZGF0
YS5pbmRleCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTkyLDcgKzk0LDcgQEAKICAgICAgICAg
fQogCiAgICAgICAgIHN0ZDo6c2V0PENyZWF0b3JGdW5jdGlvbkRhdGEqPiBjYWxsZWVzOwotICAg
ICAgICBUSW50ZXJtQWdncmVnYXRlICpub2RlOworICAgICAgICBUSW50ZXJtRnVuY3Rpb25EZWZp
bml0aW9uICpub2RlOwogICAgICAgICBUU3RyaW5nIG5hbWU7CiAgICAgICAgIHNpemVfdCBpbmRl
eDsKICAgICAgICAgYm9vbCBpbmRleEFzc2lnbmVkOwpAQCAtOTksNiArMTAxLDMyIEBACiAgICAg
ICAgIGJvb2wgdmlzaXRpbmc7CiAgICAgfTsKIAorICAgIGJvb2wgdmlzaXRGdW5jdGlvbkRlZmlu
aXRpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKm5vZGUpIG92ZXJy
aWRlCisgICAgeworICAgICAgICAvLyBDcmVhdGUgdGhlIHJlY29yZCBpZiBuZWVkIGJlIGFuZCBy
ZW1lbWJlciB0aGUgbm9kZS4KKyAgICAgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0KQorICAgICAg
ICB7CisgICAgICAgICAgICBhdXRvIGl0ID0gbUZ1bmN0aW9ucy5maW5kKG5vZGUtPmdldEZ1bmN0
aW9uU3ltYm9sSW5mbygpLT5nZXROYW1lKCkpOworCisgICAgICAgICAgICBpZiAoaXQgPT0gbUZ1
bmN0aW9ucy5lbmQoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtQ3VycmVudEZ1
bmN0aW9uID0gJm1GdW5jdGlvbnNbbm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5h
bWUoKV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgbUN1cnJlbnRGdW5jdGlvbiA9ICZpdC0+c2Vjb25kOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBtQ3VycmVudEZ1bmN0aW9uLT5ub2RlID0gbm9kZTsKKyAgICAg
ICAgICAgIG1DdXJyZW50RnVuY3Rpb24tPm5hbWUgPSBub2RlLT5nZXRGdW5jdGlvblN5bWJvbElu
Zm8oKS0+Z2V0TmFtZSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHZpc2l0ID09IFBv
c3RWaXNpdCkKKyAgICAgICAgeworICAgICAgICAgICAgbUN1cnJlbnRGdW5jdGlvbiA9IG51bGxw
dHI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgLy8gQWdn
cmVnYXRlcyB0aGUgQVNUIG5vZGUgZm9yIGVhY2ggZnVuY3Rpb24gYXMgd2VsbCBhcyB0aGUgbmFt
ZSBvZiB0aGUgZnVuY3Rpb25zIGNhbGxlZCBieSBpdAogICAgIGJvb2wgdmlzaXRBZ2dyZWdhdGUo
VmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpIG92ZXJyaWRlCiAgICAgewpAQCAt
MTA4LDM2ICsxMzYsMTAgQEAKICAgICAgICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkKICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAvLyBGdW5jdGlvbiBkZWNsYXJhdGlvbiwgY3Jl
YXRlIGFuIGVtcHR5IHJlY29yZC4KLSAgICAgICAgICAgICAgICBhdXRvJiByZWNvcmQgPSBtRnVu
Y3Rpb25zW25vZGUtPmdldE5hbWUoKV07Ci0gICAgICAgICAgICAgICAgcmVjb3JkLm5hbWUgPSBu
b2RlLT5nZXROYW1lKCk7CisgICAgICAgICAgICAgICAgYXV0byAmcmVjb3JkID0gbUZ1bmN0aW9u
c1tub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0TmFtZSgpXTsKKyAgICAgICAgICAg
ICAgICByZWNvcmQubmFtZSAgPSBub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0TmFt
ZSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBF
T3BGdW5jdGlvbjoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBGdW5jdGlvbiBk
ZWZpbml0aW9uLCBjcmVhdGUgdGhlIHJlY29yZCBpZiBuZWVkIGJlIGFuZCByZW1lbWJlciB0aGUg
bm9kZS4KLSAgICAgICAgICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCi0gICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGl0ID0gbUZ1bmN0aW9ucy5maW5kKG5v
ZGUtPmdldE5hbWUoKSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGl0ID09IG1GdW5jdGlv
bnMuZW5kKCkpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IG1DdXJyZW50RnVuY3Rpb24gPSAmbUZ1bmN0aW9uc1tub2RlLT5nZXROYW1lKCldOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgbUN1cnJlbnRGdW5jdGlvbiA9ICZpdC0+
c2Vjb25kOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgbUN1
cnJlbnRGdW5jdGlvbi0+bm9kZSA9IG5vZGU7Ci0gICAgICAgICAgICAgICAgICAgIG1DdXJyZW50
RnVuY3Rpb24tPm5hbWUgPSBub2RlLT5nZXROYW1lKCk7Ci0KLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgZWxzZSBpZiAodmlzaXQgPT0gUG9zdFZpc2l0KQotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgbUN1cnJlbnRGdW5jdGlvbiA9IG51bGxwdHI7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQog
ICAgICAgICAgIGNhc2UgRU9wRnVuY3Rpb25DYWxsOgogICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgIC8vIEZ1bmN0aW9uIGNhbGwsIGFkZCB0aGUgY2FsbGVlcwpAQCAtMTQ2LDcgKzE0OCw3
IEBACiAgICAgICAgICAgICAgICAgICAgIC8vIERvIG5vdCBoYW5kbGUgY2FsbHMgdG8gYnVpbHRp
biBmdW5jdGlvbnMKICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmlzVXNlckRlZmluZWQo
KSkKICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBp
dCA9IG1GdW5jdGlvbnMuZmluZChub2RlLT5nZXROYW1lKCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgYXV0byBpdCA9IG1GdW5jdGlvbnMuZmluZChub2RlLT5nZXRGdW5jdGlvblN5bWJvbElu
Zm8oKS0+Z2V0TmFtZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChpdCAhPSBt
RnVuY3Rpb25zLmVuZCgpKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgbWlnaHQg
YmUgaW4gYSB0b3AtbGV2ZWwgZnVuY3Rpb24gY2FsbCB0byBzZXQgYSBnbG9iYWwgdmFyaWFibGUK
QEAgLTE2NSw1MiArMTY3LDEwMiBAQAogICAgIH0KIAogICAgIC8vIFJlY3Vyc2l2ZWx5IGFzc2ln
bnMgaW5kaWNlcyB0byBhIHN1YiBEQUcKLSAgICBJbml0UmVzdWx0IGFzc2lnbkluZGljZXNJbnRl
cm5hbChDcmVhdG9yRnVuY3Rpb25EYXRhICpmdW5jdGlvbikKKyAgICBJbml0UmVzdWx0IGFzc2ln
bkluZGljZXNJbnRlcm5hbChDcmVhdG9yRnVuY3Rpb25EYXRhICpyb290KQogICAgIHsKLSAgICAg
ICAgQVNTRVJUKGZ1bmN0aW9uKTsKKyAgICAgICAgLy8gSXRlcmF0aXZlIGltcGxlbWVudGF0aW9u
IG9mIHRoZSBpbmRleCBhc3NpZ25tZW50IGFsZ29yaXRobS4gQSByZWN1cnNpdmUgdmVyc2lvbgor
ICAgICAgICAvLyB3b3VsZCBiZSBwcmV0dGllciBidXQgc2luY2UgdGhlIENhbGxEQUcgY3JlYXRp
b24gcnVucyBiZWZvcmUgdGhlIGxpbWl0aW5nIG9mIHRoZQorICAgICAgICAvLyBjYWxsIGRlcHRo
LCB3ZSBtaWdodCBnZXQgc3RhY2sgb3ZlcmZsb3dzIChjb21wdXRhdGlvbiBvZiB0aGUgY2FsbCBk
ZXB0aCB1c2VzIHRoZQorICAgICAgICAvLyBDYWxsREFHKS4KIAotICAgICAgICBpZiAoIWZ1bmN0
aW9uLT5ub2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICAqbUNyZWF0aW9uSW5mbyA8PCAiVW5k
ZWZpbmVkIGZ1bmN0aW9uICciIDw8IGZ1bmN0aW9uLT5uYW1lCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICA8PCAiKScgdXNlZCBpbiB0aGUgZm9sbG93aW5nIGNhbGwgY2hhaW46IjsKLSAgICAg
ICAgICAgIHJldHVybiBJTklUREFHX1VOREVGSU5FRDsKLSAgICAgICAgfQorICAgICAgICBBU1NF
UlQocm9vdCk7CiAKLSAgICAgICAgaWYgKGZ1bmN0aW9uLT5pbmRleEFzc2lnbmVkKQorICAgICAg
ICBpZiAocm9vdC0+aW5kZXhBc3NpZ25lZCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJu
IElOSVREQUdfU1VDQ0VTUzsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChmdW5jdGlvbi0+dmlz
aXRpbmcpCisgICAgICAgIC8vIElmIHdlIGRpZG4ndCBoYXZlIHRvIGRldGVjdCByZWN1cnNpb24s
IGZ1bmN0aW9uc1RvUHJvY2VzcyBjb3VsZCBiZSBhIHNpbXBsZSBxdWV1ZQorICAgICAgICAvLyBp
biB3aGljaCB3ZSBhZGQgdGhlIGZ1bmN0aW9uIGJlaW5nIHByb2Nlc3NlZCdzIGNhbGxlZXMuIEhv
d2V2ZXIgaW4gb3JkZXIgdG8gZGV0ZWN0CisgICAgICAgIC8vIHJlY3Vyc2lvbiB3ZSBuZWVkIHRv
IGtub3cgd2hpY2ggZnVuY3Rpb25zIHdlIGFyZSBjdXJyZW50bHkgdmlzaXRpbmcuIEZvciB0aGF0
IHJlYXNvbgorICAgICAgICAvLyBmdW5jdGlvbnNUb1Byb2Nlc3Mgd2lsbCBsb29rIGxpa2UgYSBj
b25jYXRlbmF0aW9uIG9mIHNlZ21lbnRzIG9mIHRoZSBmb3JtCisgICAgICAgIC8vIFtGIHZpc2l0
aW5nID0gdHJ1ZSwgc3Vic2V0IG9mIEYgY2FsbGVlcyB3aXRoIHZpc2l0aW5nID0gZmFsc2VdIGFu
ZCB0aGUgZm9sbG93aW5nCisgICAgICAgIC8vIHNlZ21lbnQgKGlmIGFueSkgd2lsbCBiZSBzdGFy
dCB3aXRoIGEgY2FsbGVlIG9mIEYuCisgICAgICAgIC8vIFRoaXMgd2F5IHdlIGNhbiByZW1lbWJl
ciB3aGVuIHdlIHN0YXJ0ZWQgdmlzaXRpbmcgYSBmdW5jdGlvbiwgdG8gcHV0IHZpc2l0aW5nIGJh
Y2sKKyAgICAgICAgLy8gdG8gZmFsc2UuCisgICAgICAgIFRWZWN0b3I8Q3JlYXRvckZ1bmN0aW9u
RGF0YSAqPiBmdW5jdGlvbnNUb1Byb2Nlc3M7CisgICAgICAgIGZ1bmN0aW9uc1RvUHJvY2Vzcy5w
dXNoX2JhY2socm9vdCk7CisKKyAgICAgICAgSW5pdFJlc3VsdCByZXN1bHQgPSBJTklUREFHX1NV
Q0NFU1M7CisKKyAgICAgICAgd2hpbGUgKCFmdW5jdGlvbnNUb1Byb2Nlc3MuZW1wdHkoKSkKICAg
ICAgICAgewotICAgICAgICAgICAgaWYgKG1DcmVhdGlvbkluZm8pCisgICAgICAgICAgICBDcmVh
dG9yRnVuY3Rpb25EYXRhICpmdW5jdGlvbiA9IGZ1bmN0aW9uc1RvUHJvY2Vzcy5iYWNrKCk7CisK
KyAgICAgICAgICAgIGlmIChmdW5jdGlvbi0+dmlzaXRpbmcpCiAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgKm1DcmVhdGlvbkluZm8gPDwgIlJlY3Vyc2l2ZSBmdW5jdGlvbiBjYWxsIGlu
IHRoZSBmb2xsb3dpbmcgY2FsbCBjaGFpbjoiIDw8IGZ1bmN0aW9uLT5uYW1lOworICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uLT52aXNpdGluZyAgICAgID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
ZnVuY3Rpb24tPmluZGV4ICAgICAgICAgPSBtQ3VycmVudEluZGV4Kys7CisgICAgICAgICAgICAg
ICAgZnVuY3Rpb24tPmluZGV4QXNzaWduZWQgPSB0cnVlOworCisgICAgICAgICAgICAgICAgZnVu
Y3Rpb25zVG9Qcm9jZXNzLnBvcF9iYWNrKCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gSU5JVERBR19SRUNVUlNJT047CisKKyAg
ICAgICAgICAgIGlmICghZnVuY3Rpb24tPm5vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgKm1DcmVhdGlvbkluZm8gPDwgIlVuZGVmaW5lZCBmdW5jdGlvbiAnIiA8PCBmdW5jdGlv
bi0+bmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIpJyB1c2VkIGluIHRo
ZSBmb2xsb3dpbmcgY2FsbCBjaGFpbjoiOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IElOSVRE
QUdfVU5ERUZJTkVEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBpZiAoZnVuY3Rpb24tPmluZGV4QXNzaWduZWQpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgZnVuY3Rpb25zVG9Qcm9jZXNzLnBvcF9iYWNrKCk7CisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uLT52
aXNpdGluZyA9IHRydWU7CisKKyAgICAgICAgICAgIGZvciAoYXV0byBjYWxsZWUgOiBmdW5jdGlv
bi0+Y2FsbGVlcykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbnNUb1By
b2Nlc3MucHVzaF9iYWNrKGNhbGxlZSk7CisKKyAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0
aGUgY2FsbGVlIGlzIGFscmVhZHkgYmVpbmcgdmlzaXRlZCBhZnRlciBwdXNoaW5nIGl0IHNvIHRo
YXQgaXQgYXBwZWFycworICAgICAgICAgICAgICAgIC8vIGluIHRoZSBjaGFpbiBwcmludGVkIGlu
IHRoZSBpbmZvIGxvZy4KKyAgICAgICAgICAgICAgICBpZiAoY2FsbGVlLT52aXNpdGluZykKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICptQ3JlYXRpb25JbmZvIDw8ICJS
ZWN1cnNpdmUgZnVuY3Rpb24gY2FsbCBpbiB0aGUgZm9sbG93aW5nIGNhbGwgY2hhaW46IjsKKyAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gSU5JVERBR19SRUNVUlNJT047CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKHJlc3VsdCAhPSBJTklUREFHX1NVQ0NFU1MpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAg
ZnVuY3Rpb24tPnZpc2l0aW5nID0gdHJ1ZTsKIAotICAgICAgICBmb3IgKGF1dG8gJmNhbGxlZSA6
IGZ1bmN0aW9uLT5jYWxsZWVzKQorICAgICAgICAvLyBUaGUgY2FsbCBjaGFpbiBpcyBtYWRlIG9m
IHRoZSBmdW5jdGlvbiB3ZSB3ZXJlIHZpc2l0aW5nIHdoZW4gdGhlIGVycm9yIHdhcyBkZXRlY3Rl
ZC4KKyAgICAgICAgaWYgKHJlc3VsdCAhPSBJTklUREFHX1NVQ0NFU1MpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIEluaXRSZXN1bHQgcmVzdWx0ID0gYXNzaWduSW5kaWNlc0ludGVybmFsKGNhbGxl
ZSk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0ICE9IElOSVREQUdfU1VDQ0VTUykKKyAgICAgICAg
ICAgIGJvb2wgZmlyc3QgPSB0cnVlOworICAgICAgICAgICAgZm9yIChhdXRvIGZ1bmN0aW9uIDog
ZnVuY3Rpb25zVG9Qcm9jZXNzKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIFdl
IGtub3cgdGhhdCB0aGVyZSBpcyBhbiBpc3N1ZSB3aXRoIHRoZSBjYWxsIGNoYWluIGluIHRoZSBB
U1QsCi0gICAgICAgICAgICAgICAgLy8gcHJpbnQgdGhlIGxpbmsgb2YgdGhlIGNoYWluIHdlIHdl
cmUgcHJvY2Vzc2luZy4KLSAgICAgICAgICAgICAgICBpZiAobUNyZWF0aW9uSW5mbykKKyAgICAg
ICAgICAgICAgICBpZiAoZnVuY3Rpb24tPnZpc2l0aW5nKQogICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgKm1DcmVhdGlvbkluZm8gPDwgIiA8LSAiIDw8IGZ1bmN0aW9uLT5u
YW1lIDw8ICIpIjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFmaXJzdCkKKyAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgKm1DcmVhdGlvbkluZm8gPDwgIiAt
PiAiOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICptQ3JlYXRp
b25JbmZvIDw8IGZ1bmN0aW9uLT5uYW1lIDw8ICIpIjsKKyAgICAgICAgICAgICAgICAgICAgZmly
c3QgPSBmYWxzZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGZ1bmN0aW9uLT5pbmRl
eCA9IG1DdXJyZW50SW5kZXgrKzsKLSAgICAgICAgZnVuY3Rpb24tPmluZGV4QXNzaWduZWQgPSB0
cnVlOwotCi0gICAgICAgIGZ1bmN0aW9uLT52aXNpdGluZyA9IGZhbHNlOwotICAgICAgICByZXR1
cm4gSU5JVERBR19TVUNDRVNTOworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAg
IFRJbmZvU2lua0Jhc2UgKm1DcmVhdGlvbkluZm87CkBAIC0yMzIsMTQgKzI4NCwxMCBAQAogCiBj
b25zdCBzaXplX3QgQ2FsbERBRzo6SW52YWxpZEluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czxz
aXplX3Q+OjptYXgoKTsKIAotc2l6ZV90IENhbGxEQUc6OmZpbmRJbmRleChjb25zdCBUSW50ZXJt
QWdncmVnYXRlICpmdW5jdGlvbikgY29uc3QKK3NpemVfdCBDYWxsREFHOjpmaW5kSW5kZXgoY29u
c3QgVEZ1bmN0aW9uU3ltYm9sSW5mbyAqZnVuY3Rpb25JbmZvKSBjb25zdAogewotICAgIFRPcGVy
YXRvciBvcCA9IGZ1bmN0aW9uLT5nZXRPcCgpOwotICAgIEFTU0VSVChvcCA9PSBFT3BQcm90b3R5
cGUgfHwgb3AgPT0gRU9wRnVuY3Rpb24gfHwgb3AgPT0gRU9wRnVuY3Rpb25DYWxsKTsKLSAgICBV
TlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKG9wKTsKKyAgICBhdXRvIGl0ID0gbUZ1bmN0aW9uSWRU
b0luZGV4LmZpbmQoZnVuY3Rpb25JbmZvLT5nZXRJZCgpKTsKIAotICAgIGF1dG8gaXQgPSBtRnVu
Y3Rpb25JZFRvSW5kZXguZmluZChmdW5jdGlvbi0+Z2V0RnVuY3Rpb25JZCgpKTsKLQogICAgIGlm
IChpdCA9PSBtRnVuY3Rpb25JZFRvSW5kZXguZW5kKCkpCiAgICAgewogICAgICAgICByZXR1cm4g
SW52YWxpZEluZGV4OwpAQCAtMjU4LDcgKzMwNiw3IEBACiAKIGNvbnN0IENhbGxEQUc6OlJlY29y
ZCAmQ2FsbERBRzo6Z2V0UmVjb3JkKGNvbnN0IFRJbnRlcm1BZ2dyZWdhdGUgKmZ1bmN0aW9uKSBj
b25zdAogewotICAgIHNpemVfdCBpbmRleCA9IGZpbmRJbmRleChmdW5jdGlvbik7CisgICAgc2l6
ZV90IGluZGV4ID0gZmluZEluZGV4KGZ1bmN0aW9uLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKSk7
CiAgICAgQVNTRVJUKGluZGV4ICE9IEludmFsaWRJbmRleCAmJiBpbmRleCA8IG1SZWNvcmRzLnNp
emUoKSk7CiAgICAgcmV0dXJuIG1SZWNvcmRzW2luZGV4XTsKIH0KQEAgLTI3Niw2ICszMjQsOCBA
QAogCiBDYWxsREFHOjpJbml0UmVzdWx0IENhbGxEQUc6OmluaXQoVEludGVybU5vZGUgKnJvb3Qs
IFRJbmZvU2lua0Jhc2UgKmluZm8pCiB7CisgICAgQVNTRVJUKGluZm8pOworCiAgICAgQ2FsbERB
R0NyZWF0b3IgY3JlYXRvcihpbmZvKTsKIAogICAgIC8vIENyZWF0ZXMgdGhlIG1hcHBpbmcgb2Yg
ZnVuY3Rpb25zIHRvIGNhbGxlZXMKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL0NhbGxEQUcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9DYWxsREFHLmgJKHJldmlzaW9uIDIw
ODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L0NhbGxEQUcuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQAogICAgIHN0cnVjdCBS
ZWNvcmQKICAgICB7CiAgICAgICAgIHN0ZDo6c3RyaW5nIG5hbWU7Ci0gICAgICAgIFRJbnRlcm1B
Z2dyZWdhdGUgKm5vZGU7CisgICAgICAgIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKm5vZGU7
CiAgICAgICAgIHN0ZDo6dmVjdG9yPGludD4gY2FsbGVlczsKICAgICB9OwogCkBAIC01Nyw3ICs1
Nyw3IEBACiAgICAgSW5pdFJlc3VsdCBpbml0KFRJbnRlcm1Ob2RlICpyb290LCBUSW5mb1NpbmtC
YXNlICppbmZvKTsKIAogICAgIC8vIFJldHVybnMgSW52YWxpZEluZGV4IGlmIHRoZSBmdW5jdGlv
biB3YXNuJ3QgZm91bmQKLSAgICBzaXplX3QgZmluZEluZGV4KGNvbnN0IFRJbnRlcm1BZ2dyZWdh
dGUgKmZ1bmN0aW9uKSBjb25zdDsKKyAgICBzaXplX3QgZmluZEluZGV4KGNvbnN0IFRGdW5jdGlv
blN5bWJvbEluZm8gKmZ1bmN0aW9uSW5mbykgY29uc3Q7CiAKICAgICBjb25zdCBSZWNvcmQgJmdl
dFJlY29yZEZyb21JbmRleChzaXplX3QgaW5kZXgpIGNvbnN0OwogICAgIGNvbnN0IFJlY29yZCAm
Z2V0UmVjb3JkKGNvbnN0IFRJbnRlcm1BZ2dyZWdhdGUgKmZ1bmN0aW9uKSBjb25zdDsKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0NvZGVHZW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL0NvZGVHZW4uY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db2RlR2VuLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNCw4ICs0LDYgQEAKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwog
Ci0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9Db21waWxlci5oIgotCiAjaWZkZWYgQU5H
TEVfRU5BQkxFX0VTU0wKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JF
U1NMLmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL0NvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db21waWxlci5jcHAJKHJldmlzaW9uIDIw
ODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L0NvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNCwxMCArNCwxOCBAQAogLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCiAKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9y
L0NvbXBpbGVyLmgiCisKKyNpbmNsdWRlIDxzc3RyZWFtPgorCisjaW5jbHVkZSAiYW5nbGVfZ2wu
aCIKKyNpbmNsdWRlICJjb21tb24vdXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJh
bnNsYXRvci9BZGRBbmRUcnVlVG9Mb29wQ29uZGl0aW9uLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIv
dHJhbnNsYXRvci9DYWNoZS5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvQ29tcGls
ZXIuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0NhbGxEQUcuaCIKICNpbmNsdWRl
ICJjb21waWxlci90cmFuc2xhdG9yL0RlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzLmgiCisjaW5jbHVk
ZSAiY29tcGlsZXIvdHJhbnNsYXRvci9FbXVsYXRlR0xGcmFnQ29sb3JCcm9hZGNhc3QuaCIKKyNp
bmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0VtdWxhdGVQcmVjaXNpb24uaCIKICNpbmNsdWRl
ICJjb21waWxlci90cmFuc2xhdG9yL0Zvckxvb3BVbnJvbGwuaCIKICNpbmNsdWRlICJjb21waWxl
ci90cmFuc2xhdG9yL0luaXRpYWxpemUuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9y
L0luaXRpYWxpemVQYXJzZUNvbnRleHQuaCIKQEAgLTE2LDI3ICsyNCw1NyBAQAogI2luY2x1ZGUg
ImNvbXBpbGVyL3RyYW5zbGF0b3IvUHJ1bmVFbXB0eURlY2xhcmF0aW9ucy5oIgogI2luY2x1ZGUg
ImNvbXBpbGVyL3RyYW5zbGF0b3IvUmVnZW5lcmF0ZVN0cnVjdE5hbWVzLmgiCiAjaW5jbHVkZSAi
Y29tcGlsZXIvdHJhbnNsYXRvci9SZW1vdmVQb3cuaCIKLSNpbmNsdWRlICJjb21waWxlci90cmFu
c2xhdG9yL1JlbmFtZUZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9S
ZXdyaXRlRG9XaGlsZS5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvU2NhbGFyaXpl
VmVjQW5kTWF0Q29uc3RydWN0b3JBcmdzLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRv
ci9VbmZvbGRTaG9ydENpcmN1aXRBU1QuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9y
L1VzZUludGVyZmFjZUJsb2NrRmllbGRzLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRv
ci9WYWxpZGF0ZUxpbWl0YXRpb25zLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9W
YWxpZGF0ZU1heFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1Zh
bGlkYXRlT3V0cHV0cy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVmFyaWFibGVQ
YWNrZXIuaCIKLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVu
Y3lHcmFwaC5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5k
ZW5jeUdyYXBoT3V0cHV0LmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci90aW1pbmcv
UmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZy5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5z
bGF0b3IvdGltaW5nL1Jlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nLmgiCiAjaW5jbHVkZSAidGhp
cmRfcGFydHkvY29tcGlsZXIvQXJyYXlCb3VuZHNDbGFtcGVyLmgiCi0jaW5jbHVkZSAiYW5nbGVf
Z2wuaCIKLSNpbmNsdWRlICJjb21tb24vdXRpbGl0aWVzLmgiCiAKK25hbWVzcGFjZQoreworCisj
aWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfRlVaWkVSX0NPUlBVU19PVVRQVVQpCit2b2lkIER1bXBG
dXp6ZXJDYXNlKGNoYXIgY29uc3QgKmNvbnN0ICpzaGFkZXJTdHJpbmdzLAorICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgbnVtU3RyaW5ncywKKyAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3BlYywKKyAgICAgICAgICAgICAg
ICAgICAgdWludDMyX3Qgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBvcHRp
b25zKQoreworICAgIHN0YXRpYyBpbnQgZmlsZUluZGV4ID0gMDsKKworICAgIHN0ZDo6b3N0cmlu
Z3N0cmVhbSBvOworICAgIG8gPDwgImNvcnB1cy8iIDw8IGZpbGVJbmRleCsrIDw8ICIuc2FtcGxl
IjsKKyAgICBzdGQ6OnN0cmluZyBzID0gby5zdHIoKTsKKworICAgIC8vIE11c3QgbWF0Y2ggdGhl
IGlucHV0IGZvcm1hdCBvZiB0aGUgZnV6emVyCisgICAgRklMRSAqZiA9IGZvcGVuKHMuY19zdHIo
KSwgInciKTsKKyAgICBmd3JpdGUoJnR5cGUsIHNpemVvZih0eXBlKSwgMSwgZik7CisgICAgZndy
aXRlKCZzcGVjLCBzaXplb2Yoc3BlYyksIDEsIGYpOworICAgIGZ3cml0ZSgmb3V0cHV0LCBzaXpl
b2Yob3V0cHV0KSwgMSwgZik7CisgICAgZndyaXRlKCZvcHRpb25zLCBzaXplb2Yob3B0aW9ucyks
IDEsIGYpOworCisgICAgY2hhciB6ZXJvWzEyOCAtIDIwXSA9IHswfTsKKyAgICBmd3JpdGUoJnpl
cm8sIDEyOCAtIDIwLCAxLCBmKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtU3Ry
aW5nczsgaSsrKQorICAgIHsKKyAgICAgICAgZndyaXRlKHNoYWRlclN0cmluZ3NbaV0sIHNpemVv
ZihjaGFyKSwgc3RybGVuKHNoYWRlclN0cmluZ3NbaV0pLCBmKTsKKyAgICB9CisgICAgZndyaXRl
KCZ6ZXJvLCAxLCAxLCBmKTsKKworICAgIGZjbG9zZShmKTsKK30KKyNlbmRpZiAgLy8gZGVmaW5l
ZChBTkdMRV9FTkFCTEVfRlVaWkVSX0NPUlBVU19PVVRQVVQpCit9ICAvLyBhbm9ueW1vdXMgbmFt
ZXNwYWNlCisKIGJvb2wgSXNXZWJHTEJhc2VkU3BlYyhTaFNoYWRlclNwZWMgc3BlYykKIHsKLSAg
ICByZXR1cm4gKHNwZWMgPT0gU0hfV0VCR0xfU1BFQyB8fAotICAgICAgICAgICAgc3BlYyA9PSBT
SF9DU1NfU0hBREVSU19TUEVDIHx8Ci0gICAgICAgICAgICBzcGVjID09IFNIX1dFQkdMMl9TUEVD
KTsKKyAgICByZXR1cm4gKHNwZWMgPT0gU0hfV0VCR0xfU1BFQyB8fCBzcGVjID09IFNIX1dFQkdM
Ml9TUEVDIHx8IHNwZWMgPT0gU0hfV0VCR0wzX1NQRUMpOwogfQogCiBib29sIElzR0xTTDEzME9y
TmV3ZXIoU2hTaGFkZXJPdXRwdXQgb3V0cHV0KQpAQCAtNjAsNyArOTgsNiBAQAogICAgIHN3aXRj
aCAoc3BlYykKICAgICB7CiAgICAgICBjYXNlIFNIX1dFQkdMX1NQRUM6Ci0gICAgICBjYXNlIFNI
X0NTU19TSEFERVJTX1NQRUM6CiAgICAgICAgIHJldHVybiAyNTY7CiAgICAgICBkZWZhdWx0Ogog
ICAgICAgICByZXR1cm4gMTAyNDsKQEAgLTExMSwxMSArMTQ4LDEzIEBACiAgICAgewogICAgICAg
Y2FzZSBTSF9HTEVTMl9TUEVDOgogICAgICAgY2FzZSBTSF9XRUJHTF9TUEVDOgotICAgICAgY2Fz
ZSBTSF9DU1NfU0hBREVSU19TUEVDOgogICAgICAgICByZXR1cm4gMTAwOwogICAgICAgY2FzZSBT
SF9HTEVTM19TUEVDOgogICAgICAgY2FzZSBTSF9XRUJHTDJfU1BFQzoKICAgICAgICAgcmV0dXJu
IDMwMDsKKyAgICAgIGNhc2UgU0hfR0xFUzNfMV9TUEVDOgorICAgICAgY2FzZSBTSF9XRUJHTDNf
U1BFQzoKKyAgICAgICAgICByZXR1cm4gMzEwOwogICAgICAgZGVmYXVsdDoKICAgICAgICAgVU5S
RUFDSEFCTEUoKTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMzcsNyArMTc2LDggQEAKIH0KIAog
VENvbXBpbGVyOjpUQ29tcGlsZXIoc2g6OkdMZW51bSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywg
U2hTaGFkZXJPdXRwdXQgb3V0cHV0KQotICAgIDogc2hhZGVyVHlwZSh0eXBlKSwKKyAgICA6IHZh
cmlhYmxlc0NvbGxlY3RlZChmYWxzZSksCisgICAgICBzaGFkZXJUeXBlKHR5cGUpLAogICAgICAg
c2hhZGVyU3BlYyhzcGVjKSwKICAgICAgIG91dHB1dFR5cGUob3V0cHV0KSwKICAgICAgIG1heFVu
aWZvcm1WZWN0b3JzKDApLApAQCAtMTQ4LDggKzE4OCwxMCBAQAogICAgICAgY2xhbXBpbmdTdHJh
dGVneShTSF9DTEFNUF9XSVRIX0NMQU1QX0lOVFJJTlNJQyksCiAgICAgICBidWlsdEluRnVuY3Rp
b25FbXVsYXRvcigpLAogICAgICAgbVNvdXJjZVBhdGgoTlVMTCksCisgICAgICBtQ29tcHV0ZVNo
YWRlckxvY2FsU2l6ZURlY2xhcmVkKGZhbHNlKSwKICAgICAgIG1UZW1wb3JhcnlJbmRleCgwKQog
eworICAgIG1Db21wdXRlU2hhZGVyTG9jYWxTaXplLmZpbGwoMSk7CiB9CiAKIFRDb21waWxlcjo6
flRDb21waWxlcigpCkBAIC0xNTYsNyArMTk4LDcgQEAKIHsKIH0KIAotYm9vbCBUQ29tcGlsZXI6
OnNob3VsZFJ1bkxvb3BBbmRJbmRleGluZ1ZhbGlkYXRpb24oaW50IGNvbXBpbGVPcHRpb25zKSBj
b25zdAorYm9vbCBUQ29tcGlsZXI6OnNob3VsZFJ1bkxvb3BBbmRJbmRleGluZ1ZhbGlkYXRpb24o
U2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucykgY29uc3QKIHsKICAgICAvLyBJZiBjb21w
aWxpbmcgYW4gRVNTTCAxLjAwIHNoYWRlciBmb3IgV2ViR0wsIG9yIGlmIGl0cyBiZWVuIHJlcXVl
c3RlZCB0aHJvdWdoIHRoZSBBUEksCiAgICAgLy8gdmFsaWRhdGUgbG9vcCBhbmQgaW5kZXhpbmcg
YXMgd2VsbCAodG8gdmVyaWZ5IHRoYXQgdGhlIHNoYWRlciBvbmx5IHVzZXMgbWluaW1hbCBmdW5j
dGlvbmFsaXR5CkBAIC0xOTEsMTUgKzIzMywxNiBAQAogICAgIHJldHVybiB0cnVlOwogfQogCi1U
SW50ZXJtTm9kZSAqVENvbXBpbGVyOjpjb21waWxlVHJlZUZvclRlc3RpbmcoY29uc3QgY2hhciog
Y29uc3Qgc2hhZGVyU3RyaW5nc1tdLAotICAgIHNpemVfdCBudW1TdHJpbmdzLCBpbnQgY29tcGls
ZU9wdGlvbnMpCitUSW50ZXJtQmxvY2sgKlRDb21waWxlcjo6Y29tcGlsZVRyZWVGb3JUZXN0aW5n
KGNvbnN0IGNoYXIgKmNvbnN0IHNoYWRlclN0cmluZ3NbXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bVN0cmluZ3MsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoQ29tcGlsZU9wdGlvbnMgY29t
cGlsZU9wdGlvbnMpCiB7CiAgICAgcmV0dXJuIGNvbXBpbGVUcmVlSW1wbChzaGFkZXJTdHJpbmdz
LCBudW1TdHJpbmdzLCBjb21waWxlT3B0aW9ucyk7CiB9CiAKLVRJbnRlcm1Ob2RlICpUQ29tcGls
ZXI6OmNvbXBpbGVUcmVlSW1wbChjb25zdCBjaGFyICpjb25zdCBzaGFkZXJTdHJpbmdzW10sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bVN0cmluZ3Ms
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IGNvbXBp
bGVPcHRpb25zKQorVEludGVybUJsb2NrICpUQ29tcGlsZXI6OmNvbXBpbGVUcmVlSW1wbChjb25z
dCBjaGFyICpjb25zdCBzaGFkZXJTdHJpbmdzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBudW1TdHJpbmdzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25z
KQogewogICAgIGNsZWFyUmVzdWx0cygpOwogCkBAIC0yMTcsOCArMjYwLDcgQEAKICAgICAgICAg
KytmaXJzdFNvdXJjZTsKICAgICB9CiAKLSAgICBUSW50ZXJtZWRpYXRlIGludGVybWVkaWF0ZShp
bmZvU2luayk7Ci0gICAgVFBhcnNlQ29udGV4dCBwYXJzZUNvbnRleHQoc3ltYm9sVGFibGUsIGV4
dGVuc2lvbkJlaGF2aW9yLCBpbnRlcm1lZGlhdGUsIHNoYWRlclR5cGUsIHNoYWRlclNwZWMsCisg
ICAgVFBhcnNlQ29udGV4dCBwYXJzZUNvbnRleHQoc3ltYm9sVGFibGUsIGV4dGVuc2lvbkJlaGF2
aW9yLCBzaGFkZXJUeXBlLCBzaGFkZXJTcGVjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbXBpbGVPcHRpb25zLCB0cnVlLCBpbmZvU2luaywgZ2V0UmVzb3VyY2VzKCkpOwogCiAg
ICAgcGFyc2VDb250ZXh0LnNldEZyYWdtZW50UHJlY2lzaW9uSGlnaE9uRVNTTDEoZnJhZ21lbnRQ
cmVjaXNpb25IaWdoKTsKQEAgLTI0MSwxOCArMjgzLDE3IEBACiAgICAgICAgIHN1Y2Nlc3MgPSBm
YWxzZTsKICAgICB9CiAKLSAgICBUSW50ZXJtTm9kZSAqcm9vdCA9IG51bGxwdHI7CisgICAgVElu
dGVybUJsb2NrICpyb290ID0gbnVsbHB0cjsKIAogICAgIGlmIChzdWNjZXNzKQogICAgIHsKICAg
ICAgICAgbVByYWdtYSA9IHBhcnNlQ29udGV4dC5wcmFnbWEoKTsKLSAgICAgICAgaWYgKG1QcmFn
bWEuc3RkZ2wuaW52YXJpYW50QWxsKQotICAgICAgICB7Ci0gICAgICAgICAgICBzeW1ib2xUYWJs
ZS5zZXRHbG9iYWxJbnZhcmlhbnQoKTsKLSAgICAgICAgfQorICAgICAgICBzeW1ib2xUYWJsZS5z
ZXRHbG9iYWxJbnZhcmlhbnQobVByYWdtYS5zdGRnbC5pbnZhcmlhbnRBbGwpOwogCisgICAgICAg
IG1Db21wdXRlU2hhZGVyTG9jYWxTaXplRGVjbGFyZWQgPSBwYXJzZUNvbnRleHQuaXNDb21wdXRl
U2hhZGVyTG9jYWxTaXplRGVjbGFyZWQoKTsKKyAgICAgICAgbUNvbXB1dGVTaGFkZXJMb2NhbFNp
emUgICAgICAgICA9IHBhcnNlQ29udGV4dC5nZXRDb21wdXRlU2hhZGVyTG9jYWxTaXplKCk7CisK
ICAgICAgICAgcm9vdCA9IHBhcnNlQ29udGV4dC5nZXRUcmVlUm9vdCgpOwotICAgICAgICByb290
ID0gaW50ZXJtZWRpYXRlLnBvc3RQcm9jZXNzKHJvb3QpOwogCiAgICAgICAgIC8vIEhpZ2hwIG1p
Z2h0IGhhdmUgYmVlbiBhdXRvLWVuYWJsZWQgYmFzZWQgb24gc2hhZGVyIHZlcnNpb24KICAgICAg
ICAgZnJhZ21lbnRQcmVjaXNpb25IaWdoID0gcGFyc2VDb250ZXh0LmdldEZyYWdtZW50UHJlY2lz
aW9uSGlnaCgpOwpAQCAtMjg5LDEyICszMzAsMTggQEAKICAgICAgICAgaWYgKHN1Y2Nlc3MgJiYg
c2hvdWxkUnVuTG9vcEFuZEluZGV4aW5nVmFsaWRhdGlvbihjb21waWxlT3B0aW9ucykpCiAgICAg
ICAgICAgICBzdWNjZXNzID0gdmFsaWRhdGVMaW1pdGF0aW9ucyhyb290KTsKIAotICAgICAgICBp
ZiAoc3VjY2VzcyAmJiAoY29tcGlsZU9wdGlvbnMgJiBTSF9USU1JTkdfUkVTVFJJQ1RJT05TKSkK
LSAgICAgICAgICAgIHN1Y2Nlc3MgPSBlbmZvcmNlVGltaW5nUmVzdHJpY3Rpb25zKHJvb3QsIChj
b21waWxlT3B0aW9ucyAmIFNIX0RFUEVOREVOQ1lfR1JBUEgpICE9IDApOworICAgICAgICAvLyBG
YWlsIGNvbXBpbGF0aW9uIGlmIHByZWNpc2lvbiBlbXVsYXRpb24gbm90IHN1cHBvcnRlZC4KKyAg
ICAgICAgaWYgKHN1Y2Nlc3MgJiYgZ2V0UmVzb3VyY2VzKCkuV0VCR0xfZGVidWdfc2hhZGVyX3By
ZWNpc2lvbiAmJgorICAgICAgICAgICAgZ2V0UHJhZ21hKCkuZGVidWdTaGFkZXJQcmVjaXNpb24p
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghRW11bGF0ZVByZWNpc2lvbjo6U3VwcG9ydGVk
SW5MYW5ndWFnZShvdXRwdXRUeXBlKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBp
bmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4RXJyb3IpOworICAgICAgICAgICAgICAgIGluZm9T
aW5rLmluZm8gPDwgIlByZWNpc2lvbiBlbXVsYXRpb24gbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBv
dXRwdXQgdHlwZS4iOworICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQogCi0gICAgICAgIGlmIChzdWNjZXNzICYmIHNoYWRlclNwZWMgPT0g
U0hfQ1NTX1NIQURFUlNfU1BFQykKLSAgICAgICAgICAgIHJld3JpdGVDU1NTaGFkZXIocm9vdCk7
Ci0KICAgICAgICAgLy8gVW5yb2xsIGZvci1sb29wIG1hcmt1cCBuZWVkcyB0byBoYXBwZW4gYWZ0
ZXIgdmFsaWRhdGVMaW1pdGF0aW9ucyBwYXNzLgogICAgICAgICBpZiAoc3VjY2VzcyAmJiAoY29t
cGlsZU9wdGlvbnMgJiBTSF9VTlJPTExfRk9SX0xPT1BfV0lUSF9JTlRFR0VSX0lOREVYKSkKICAg
ICAgICAgewpAQCAtMzE4LDcgKzM2NSwxMCBAQAogICAgICAgICAvLyBCdWlsdC1pbiBmdW5jdGlv
biBlbXVsYXRpb24gbmVlZHMgdG8gaGFwcGVuIGFmdGVyIHZhbGlkYXRlTGltaXRhdGlvbnMgcGFz
cy4KICAgICAgICAgaWYgKHN1Y2Nlc3MpCiAgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRPRE8o
am1hZGlsbCk6IFJlbW92ZSBnbG9iYWwgcG9vbCBhbGxvY2F0b3IuCisgICAgICAgICAgICBHZXRH
bG9iYWxQb29sQWxsb2NhdG9yKCktPmxvY2soKTsKICAgICAgICAgICAgIGluaXRCdWlsdEluRnVu
Y3Rpb25FbXVsYXRvcigmYnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IsIGNvbXBpbGVPcHRpb25zKTsK
KyAgICAgICAgICAgIEdldEdsb2JhbFBvb2xBbGxvY2F0b3IoKS0+dW5sb2NrKCk7CiAgICAgICAg
ICAgICBidWlsdEluRnVuY3Rpb25FbXVsYXRvci5NYXJrQnVpbHRJbkZ1bmN0aW9uc0ZvckVtdWxh
dGlvbihyb290KTsKICAgICAgICAgfQogCkBAIC0zMzYsNiArMzg2LDkgQEAKICAgICAgICAgaWYg
KHN1Y2Nlc3MgJiYgKGNvbXBpbGVPcHRpb25zICYgU0hfUkVXUklURV9ET19XSElMRV9MT09QUykp
CiAgICAgICAgICAgICBSZXdyaXRlRG9XaGlsZShyb290LCBnZXRUZW1wb3JhcnlJbmRleCgpKTsK
IAorICAgICAgICBpZiAoc3VjY2VzcyAmJiAoY29tcGlsZU9wdGlvbnMgJiBTSF9BRERfQU5EX1RS
VUVfVE9fTE9PUF9DT05ESVRJT04pKQorICAgICAgICAgICAgc2g6OkFkZEFuZFRydWVUb0xvb3BD
b25kaXRpb24ocm9vdCk7CisKICAgICAgICAgaWYgKHN1Y2Nlc3MgJiYgKGNvbXBpbGVPcHRpb25z
ICYgU0hfVU5GT0xEX1NIT1JUX0NJUkNVSVQpKQogICAgICAgICB7CiAgICAgICAgICAgICBVbmZv
bGRTaG9ydENpcmN1aXRBU1QgdW5mb2xkU2hvcnRDaXJjdWl0OwpAQCAtMzUxLDYgKzQwNCwxMCBA
QAogICAgICAgICBpZiAoc3VjY2VzcyAmJiBzaG91bGRDb2xsZWN0VmFyaWFibGVzKGNvbXBpbGVP
cHRpb25zKSkKICAgICAgICAgewogICAgICAgICAgICAgY29sbGVjdFZhcmlhYmxlcyhyb290KTsK
KyAgICAgICAgICAgIGlmIChjb21waWxlT3B0aW9ucyAmIFNIX1VTRV9VTlVTRURfU1RBTkRBUkRf
U0hBUkVEX0JMT0NLUykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB1c2VBbGxNZW1i
ZXJzSW5VbnVzZWRTdGFuZGFyZEFuZFNoYXJlZEJsb2Nrcyhyb290KTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmIChjb21waWxlT3B0aW9ucyAmIFNIX0VORk9SQ0VfUEFDS0lOR19SRVNU
UklDVElPTlMpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IGVuZm9y
Y2VQYWNraW5nUmVzdHJpY3Rpb25zKCk7CkBAIC0zNjAsOSArNDE3LDEwIEBACiAgICAgICAgICAg
ICAgICAgICAgIGluZm9TaW5rLmluZm8gPDwgInRvbyBtYW55IHVuaWZvcm1zIjsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoc3VjY2VzcyAmJiBzaGFk
ZXJUeXBlID09IEdMX1ZFUlRFWF9TSEFERVIgJiYKLSAgICAgICAgICAgICAgICAoY29tcGlsZU9w
dGlvbnMgJiBTSF9JTklUX1ZBUllJTkdTX1dJVEhPVVRfU1RBVElDX1VTRSkpCi0gICAgICAgICAg
ICAgICAgaW5pdGlhbGl6ZVZhcnlpbmdzV2l0aG91dFN0YXRpY1VzZShyb290KTsKKyAgICAgICAg
ICAgIGlmIChzdWNjZXNzICYmIChjb21waWxlT3B0aW9ucyAmIFNIX0lOSVRfT1VUUFVUX1ZBUklB
QkxFUykpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZU91dHB1dFZh
cmlhYmxlcyhyb290KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmIChz
dWNjZXNzICYmIChjb21waWxlT3B0aW9ucyAmIFNIX1NDQUxBUklaRV9WRUNfQU5EX01BVF9DT05T
VFJVQ1RPUl9BUkdTKSkKQEAgLTM3OCw2ICs0MzYsMTMgQEAKICAgICAgICAgICAgIHJvb3QtPnRy
YXZlcnNlKCZnZW4pOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKHN1Y2Nlc3MgJiYgc2hhZGVy
VHlwZSA9PSBHTF9GUkFHTUVOVF9TSEFERVIgJiYgc2hhZGVyVmVyc2lvbiA9PSAxMDAgJiYKKyAg
ICAgICAgICAgIGNvbXBpbGVSZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycyAmJiBjb21waWxlUmVz
b3VyY2VzLk1heERyYXdCdWZmZXJzID4gMSAmJgorICAgICAgICAgICAgSXNFeHRlbnNpb25FbmFi
bGVkKGV4dGVuc2lvbkJlaGF2aW9yLCAiR0xfRVhUX2RyYXdfYnVmZmVycyIpKQorICAgICAgICB7
CisgICAgICAgICAgICBFbXVsYXRlR0xGcmFnQ29sb3JCcm9hZGNhc3Qocm9vdCwgY29tcGlsZVJl
c291cmNlcy5NYXhEcmF3QnVmZmVycywgJm91dHB1dFZhcmlhYmxlcyk7CisgICAgICAgIH0KKwog
ICAgICAgICBpZiAoc3VjY2VzcykKICAgICAgICAgewogICAgICAgICAgICAgRGVmZXJHbG9iYWxJ
bml0aWFsaXplcnMocm9vdCk7CkBAIC0zOTEsMTQgKzQ1NiwzOSBAQAogICAgIHJldHVybiBOVUxM
OwogfQogCi1ib29sIFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25zdCBzaGFkZXJT
dHJpbmdzW10sCi0gICAgc2l6ZV90IG51bVN0cmluZ3MsIGludCBjb21waWxlT3B0aW9ucykKK2Jv
b2wgVENvbXBpbGVyOjpjb21waWxlKGNvbnN0IGNoYXIgKmNvbnN0IHNoYWRlclN0cmluZ3NbXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBudW1TdHJpbmdzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9uc0luKQogeworI2lmIGRl
ZmluZWQoQU5HTEVfRU5BQkxFX0ZVWlpFUl9DT1JQVVNfT1VUUFVUKQorICAgIER1bXBGdXp6ZXJD
YXNlKHNoYWRlclN0cmluZ3MsIG51bVN0cmluZ3MsIHNoYWRlclR5cGUsIHNoYWRlclNwZWMsIG91
dHB1dFR5cGUsIGNvbXBpbGVPcHRpb25zSW4pOworI2VuZGlmICAvLyBkZWZpbmVkKEFOR0xFX0VO
QUJMRV9GVVpaRVJfQ09SUFVTX09VVFBVVCkKKwogICAgIGlmIChudW1TdHJpbmdzID09IDApCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCisgICAgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9u
cyA9IGNvbXBpbGVPcHRpb25zSW47CisKKyAgICAvLyBBcHBseSBrZXkgd29ya2Fyb3VuZHMuCisg
ICAgaWYgKHNob3VsZEZsYXR0ZW5QcmFnbWFTdGRnbEludmFyaWFudEFsbCgpKQorICAgIHsKKyAg
ICAgICAgLy8gVGhpcyBzaG91bGQgYmUgaGFybWxlc3MgdG8gZG8gaW4gYWxsIGNhc2VzLCBidXQg
Zm9yIHRoZSBtb21lbnQsIGRvIGl0IG9ubHkgY29uZGl0aW9uYWxseS4KKyAgICAgICAgY29tcGls
ZU9wdGlvbnMgfD0gU0hfRkxBVFRFTl9QUkFHTUFfU1RER0xfSU5WQVJJQU5UX0FMTDsKKyAgICB9
CisKKyAgICBTaENvbXBpbGVPcHRpb25zIHVucm9sbEZsYWdzID0KKyAgICAgICAgU0hfVU5ST0xM
X0ZPUl9MT09QX1dJVEhfSU5URUdFUl9JTkRFWCB8IFNIX1VOUk9MTF9GT1JfTE9PUF9XSVRIX1NB
TVBMRVJfQVJSQVlfSU5ERVg7CisgICAgaWYgKChjb21waWxlT3B0aW9ucyAmIFNIX0FERF9BTkRf
VFJVRV9UT19MT09QX0NPTkRJVElPTikgIT0gMCAmJgorICAgICAgICAoY29tcGlsZU9wdGlvbnMg
JiB1bnJvbGxGbGFncykgIT0gMCkKKyAgICB7CisgICAgICAgIGluZm9TaW5rLmluZm8ucHJlZml4
KEVQcmVmaXhFcnJvcik7CisgICAgICAgIGluZm9TaW5rLmluZm8KKyAgICAgICAgICAgIDw8ICJV
bnN1cHBvcnRlZCBjb21waWxlIGZsYWcgY29tYmluYXRpb246IHVucm9sbCAmIEFERF9UUlVFX1RP
X0xPT1BfQ09ORElUSU9OIjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIFRT
Y29wZWRQb29sQWxsb2NhdG9yIHNjb3BlZEFsbG9jKCZhbGxvY2F0b3IpOwotICAgIFRJbnRlcm1O
b2RlICpyb290ID0gY29tcGlsZVRyZWVJbXBsKHNoYWRlclN0cmluZ3MsIG51bVN0cmluZ3MsIGNv
bXBpbGVPcHRpb25zKTsKKyAgICBUSW50ZXJtQmxvY2sgKnJvb3QgPSBjb21waWxlVHJlZUltcGwo
c2hhZGVyU3RyaW5ncywgbnVtU3RyaW5ncywgY29tcGlsZU9wdGlvbnMpOwogCiAgICAgaWYgKHJv
b3QpCiAgICAgewpAQCAtNDI0LDE3ICs1MTQsMTYgQEAKICAgICBzeW1ib2xUYWJsZS5wdXNoKCk7
ICAgLy8gQ09NTU9OX0JVSUxUSU5TCiAgICAgc3ltYm9sVGFibGUucHVzaCgpOyAgIC8vIEVTU0wx
X0JVSUxUSU5TCiAgICAgc3ltYm9sVGFibGUucHVzaCgpOyAgIC8vIEVTU0wzX0JVSUxUSU5TCisg
ICAgc3ltYm9sVGFibGUucHVzaCgpOyAgIC8vIEVTU0wzXzFfQlVJTFRJTlMKIAogICAgIFRQdWJs
aWNUeXBlIGludGVnZXI7Ci0gICAgaW50ZWdlci50eXBlID0gRWJ0SW50OwotICAgIGludGVnZXIu
cHJpbWFyeVNpemUgPSAxOwotICAgIGludGVnZXIuc2Vjb25kYXJ5U2l6ZSA9IDE7CisgICAgaW50
ZWdlci5zZXRCYXNpY1R5cGUoRWJ0SW50KTsKKyAgICBpbnRlZ2VyLmluaXRpYWxpemVTaXplRm9y
U2NhbGFyVHlwZXMoKTsKICAgICBpbnRlZ2VyLmFycmF5ID0gZmFsc2U7CiAKICAgICBUUHVibGlj
VHlwZSBmbG9hdGluZ1BvaW50OwotICAgIGZsb2F0aW5nUG9pbnQudHlwZSA9IEVidEZsb2F0Owot
ICAgIGZsb2F0aW5nUG9pbnQucHJpbWFyeVNpemUgPSAxOwotICAgIGZsb2F0aW5nUG9pbnQuc2Vj
b25kYXJ5U2l6ZSA9IDE7CisgICAgZmxvYXRpbmdQb2ludC5zZXRCYXNpY1R5cGUoRWJ0RmxvYXQp
OworICAgIGZsb2F0aW5nUG9pbnQuaW5pdGlhbGl6ZVNpemVGb3JTY2FsYXJUeXBlcygpOwogICAg
IGZsb2F0aW5nUG9pbnQuYXJyYXkgPSBmYWxzZTsKIAogICAgIHN3aXRjaChzaGFkZXJUeXBlKQpA
QCAtNDQ2LDYgKzUzNSwxMCBAQAogICAgICAgICBzeW1ib2xUYWJsZS5zZXREZWZhdWx0UHJlY2lz
aW9uKGludGVnZXIsIEVicEhpZ2gpOwogICAgICAgICBzeW1ib2xUYWJsZS5zZXREZWZhdWx0UHJl
Y2lzaW9uKGZsb2F0aW5nUG9pbnQsIEVicEhpZ2gpOwogICAgICAgICBicmVhazsKKyAgICAgIGNh
c2UgR0xfQ09NUFVURV9TSEFERVI6CisgICAgICAgICAgc3ltYm9sVGFibGUuc2V0RGVmYXVsdFBy
ZWNpc2lvbihpbnRlZ2VyLCBFYnBIaWdoKTsKKyAgICAgICAgICBzeW1ib2xUYWJsZS5zZXREZWZh
dWx0UHJlY2lzaW9uKGZsb2F0aW5nUG9pbnQsIEVicEhpZ2gpOworICAgICAgICAgIGJyZWFrOwog
ICAgICAgZGVmYXVsdDoKICAgICAgICAgYXNzZXJ0KGZhbHNlICYmICJMYW5ndWFnZSBub3Qgc3Vw
cG9ydGVkIik7CiAgICAgfQpAQCAtNDcwLDEwICs1NjMsOSBAQAogewogICAgIEFTU0VSVChzYW1w
bGVyVHlwZSA+IEVidEd1YXJkU2FtcGxlckJlZ2luICYmIHNhbXBsZXJUeXBlIDwgRWJ0R3VhcmRT
YW1wbGVyRW5kKTsKICAgICBUUHVibGljVHlwZSBzYW1wbGVyOwotICAgIHNhbXBsZXIucHJpbWFy
eVNpemUgICA9IDE7Ci0gICAgc2FtcGxlci5zZWNvbmRhcnlTaXplID0gMTsKKyAgICBzYW1wbGVy
LmluaXRpYWxpemVTaXplRm9yU2NhbGFyVHlwZXMoKTsKKyAgICBzYW1wbGVyLnNldEJhc2ljVHlw
ZShzYW1wbGVyVHlwZSk7CiAgICAgc2FtcGxlci5hcnJheSAgICAgICAgID0gZmFsc2U7Ci0gICAg
c2FtcGxlci50eXBlICAgICAgICAgID0gc2FtcGxlclR5cGU7CiAgICAgc3ltYm9sVGFibGUuc2V0
RGVmYXVsdFByZWNpc2lvbihzYW1wbGVyLCBFYnBMb3cpOwogfQogCkBAIC00ODAsNiArNTcyLDgg
QEAKIHZvaWQgVENvbXBpbGVyOjpzZXRSZXNvdXJjZVN0cmluZygpCiB7CiAgICAgc3RkOjpvc3Ry
aW5nc3RyZWFtIHN0cnN0cmVhbTsKKworICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKICAgICBzdHJz
dHJlYW0gPDwgIjpNYXhWZXJ0ZXhBdHRyaWJzOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhWZXJ0
ZXhBdHRyaWJzCiAgICAgICAgICAgICAgIDw8ICI6TWF4VmVydGV4VW5pZm9ybVZlY3RvcnM6IiA8
PCBjb21waWxlUmVzb3VyY2VzLk1heFZlcnRleFVuaWZvcm1WZWN0b3JzCiAgICAgICAgICAgICAg
IDw8ICI6TWF4VmFyeWluZ1ZlY3RvcnM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heFZhcnlpbmdW
ZWN0b3JzCkBAIC00OTAsNiArNTg0LDggQEAKICAgICAgICAgICAgICAgPDwgIjpNYXhEcmF3QnVm
ZmVyczoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMKICAgICAgICAgICAgICAg
PDwgIjpPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk9FU19z
dGFuZGFyZF9kZXJpdmF0aXZlcwogICAgICAgICAgICAgICA8PCAiOk9FU19FR0xfaW1hZ2VfZXh0
ZXJuYWw6IiA8PCBjb21waWxlUmVzb3VyY2VzLk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwKKyAgICAg
ICAgICAgICAgPDwgIjpPRVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vzc2wzOiIgPDwgY29tcGlsZVJl
c291cmNlcy5PRVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vzc2wzCisgICAgICAgICAgICAgIDw8ICI6
TlZfRUdMX3N0cmVhbV9jb25zdW1lcl9leHRlcm5hbDoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTlZf
RUdMX3N0cmVhbV9jb25zdW1lcl9leHRlcm5hbAogICAgICAgICAgICAgICA8PCAiOkFSQl90ZXh0
dXJlX3JlY3RhbmdsZToiIDw8IGNvbXBpbGVSZXNvdXJjZXMuQVJCX3RleHR1cmVfcmVjdGFuZ2xl
CiAgICAgICAgICAgICAgIDw8ICI6RVhUX2RyYXdfYnVmZmVyczoiIDw8IGNvbXBpbGVSZXNvdXJj
ZXMuRVhUX2RyYXdfYnVmZmVycwogICAgICAgICAgICAgICA8PCAiOkZyYWdtZW50UHJlY2lzaW9u
SGlnaDoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuRnJhZ21lbnRQcmVjaXNpb25IaWdoCkBAIC01MDgs
NyArNjA0LDMyIEBACiAgICAgICAgICAgICAgIDw8ICI6TWF4UHJvZ3JhbVRleGVsT2Zmc2V0OiIg
PDwgY29tcGlsZVJlc291cmNlcy5NYXhQcm9ncmFtVGV4ZWxPZmZzZXQKICAgICAgICAgICAgICAg
PDwgIjpNYXhEdWFsU291cmNlRHJhd0J1ZmZlcnM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heER1
YWxTb3VyY2VEcmF3QnVmZmVycwogICAgICAgICAgICAgICA8PCAiOk5WX2RyYXdfYnVmZmVyczoi
IDw8IGNvbXBpbGVSZXNvdXJjZXMuTlZfZHJhd19idWZmZXJzCi0gICAgICAgICAgICAgIDw8ICI6
V0VCR0xfZGVidWdfc2hhZGVyX3ByZWNpc2lvbjoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuV0VCR0xf
ZGVidWdfc2hhZGVyX3ByZWNpc2lvbjsKKyAgICAgICAgICAgICAgPDwgIjpXRUJHTF9kZWJ1Z19z
aGFkZXJfcHJlY2lzaW9uOiIgPDwgY29tcGlsZVJlc291cmNlcy5XRUJHTF9kZWJ1Z19zaGFkZXJf
cHJlY2lzaW9uCisgICAgICAgICAgICAgIDw8ICI6TWF4SW1hZ2VVbml0czoiIDw8IGNvbXBpbGVS
ZXNvdXJjZXMuTWF4SW1hZ2VVbml0cworICAgICAgICAgICAgICA8PCAiOk1heFZlcnRleEltYWdl
VW5pZm9ybXM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heFZlcnRleEltYWdlVW5pZm9ybXMKKyAg
ICAgICAgICAgICAgPDwgIjpNYXhGcmFnbWVudEltYWdlVW5pZm9ybXM6IiA8PCBjb21waWxlUmVz
b3VyY2VzLk1heEZyYWdtZW50SW1hZ2VVbmlmb3JtcworICAgICAgICAgICAgICA8PCAiOk1heENv
bXB1dGVJbWFnZVVuaWZvcm1zOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhDb21wdXRlSW1hZ2VV
bmlmb3JtcworICAgICAgICAgICAgICA8PCAiOk1heENvbWJpbmVkSW1hZ2VVbmlmb3JtczoiIDw8
IGNvbXBpbGVSZXNvdXJjZXMuTWF4Q29tYmluZWRJbWFnZVVuaWZvcm1zCisgICAgICAgICAgICAg
IDw8ICI6TWF4Q29tYmluZWRTaGFkZXJPdXRwdXRSZXNvdXJjZXM6IiA8PCBjb21waWxlUmVzb3Vy
Y2VzLk1heENvbWJpbmVkU2hhZGVyT3V0cHV0UmVzb3VyY2VzCisgICAgICAgICAgICAgIDw8ICI6
TWF4Q29tcHV0ZVdvcmtHcm91cENvdW50WDoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4Q29tcHV0
ZVdvcmtHcm91cENvdW50WzBdCisgICAgICAgICAgICAgIDw8ICI6TWF4Q29tcHV0ZVdvcmtHcm91
cENvdW50WToiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4Q29tcHV0ZVdvcmtHcm91cENvdW50WzFd
CisgICAgICAgICAgICAgIDw8ICI6TWF4Q29tcHV0ZVdvcmtHcm91cENvdW50WjoiIDw8IGNvbXBp
bGVSZXNvdXJjZXMuTWF4Q29tcHV0ZVdvcmtHcm91cENvdW50WzJdCisgICAgICAgICAgICAgIDw8
ICI6TWF4Q29tcHV0ZVdvcmtHcm91cFNpemVYOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhDb21w
dXRlV29ya0dyb3VwU2l6ZVswXQorICAgICAgICAgICAgICA8PCAiOk1heENvbXB1dGVXb3JrR3Jv
dXBTaXplWToiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4Q29tcHV0ZVdvcmtHcm91cFNpemVbMV0K
KyAgICAgICAgICAgICAgPDwgIjpNYXhDb21wdXRlV29ya0dyb3VwU2l6ZVo6IiA8PCBjb21waWxl
UmVzb3VyY2VzLk1heENvbXB1dGVXb3JrR3JvdXBTaXplWzJdCisgICAgICAgICAgICAgIDw8ICI6
TWF4Q29tcHV0ZVVuaWZvcm1Db21wb25lbnRzOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhDb21w
dXRlVW5pZm9ybUNvbXBvbmVudHMKKyAgICAgICAgICAgICAgPDwgIjpNYXhDb21wdXRlVGV4dHVy
ZUltYWdlVW5pdHM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heENvbXB1dGVUZXh0dXJlSW1hZ2VV
bml0cworICAgICAgICAgICAgICA8PCAiOk1heENvbXB1dGVBdG9taWNDb3VudGVyczoiIDw8IGNv
bXBpbGVSZXNvdXJjZXMuTWF4Q29tcHV0ZUF0b21pY0NvdW50ZXJzCisgICAgICAgICAgICAgIDw8
ICI6TWF4Q29tcHV0ZUF0b21pY0NvdW50ZXJCdWZmZXJzOiIgPDwgY29tcGlsZVJlc291cmNlcy5N
YXhDb21wdXRlQXRvbWljQ291bnRlckJ1ZmZlcnMKKyAgICAgICAgICAgICAgPDwgIjpNYXhWZXJ0
ZXhBdG9taWNDb3VudGVyczoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4VmVydGV4QXRvbWljQ291
bnRlcnMKKyAgICAgICAgICAgICAgPDwgIjpNYXhGcmFnbWVudEF0b21pY0NvdW50ZXJzOiIgPDwg
Y29tcGlsZVJlc291cmNlcy5NYXhGcmFnbWVudEF0b21pY0NvdW50ZXJzCisgICAgICAgICAgICAg
IDw8ICI6TWF4Q29tYmluZWRBdG9taWNDb3VudGVyczoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4
Q29tYmluZWRBdG9taWNDb3VudGVycworICAgICAgICAgICAgICA8PCAiOk1heEF0b21pY0NvdW50
ZXJCaW5kaW5nczoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4QXRvbWljQ291bnRlckJpbmRpbmdz
CisgICAgICAgICAgICAgIDw8ICI6TWF4VmVydGV4QXRvbWljQ291bnRlckJ1ZmZlcnM6IiA8PCBj
b21waWxlUmVzb3VyY2VzLk1heFZlcnRleEF0b21pY0NvdW50ZXJCdWZmZXJzCisgICAgICAgICAg
ICAgIDw8ICI6TWF4RnJhZ21lbnRBdG9taWNDb3VudGVyQnVmZmVyczoiIDw8IGNvbXBpbGVSZXNv
dXJjZXMuTWF4RnJhZ21lbnRBdG9taWNDb3VudGVyQnVmZmVycworICAgICAgICAgICAgICA8PCAi
Ok1heENvbWJpbmVkQXRvbWljQ291bnRlckJ1ZmZlcnM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1h
eENvbWJpbmVkQXRvbWljQ291bnRlckJ1ZmZlcnMKKyAgICAgICAgICAgICAgPDwgIjpNYXhBdG9t
aWNDb3VudGVyQnVmZmVyU2l6ZToiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4QXRvbWljQ291bnRl
ckJ1ZmZlclNpemU7CisgICAgLy8gY2xhbmctZm9ybWF0IG9uCiAKICAgICBidWlsdEluUmVzb3Vy
Y2VzU3RyaW5nID0gc3Ryc3RyZWFtLnN0cigpOwogfQpAQCAtNTI2LDYgKzY0Nyw3IEBACiAgICAg
ZXhwYW5kZWRVbmlmb3Jtcy5jbGVhcigpOwogICAgIHZhcnlpbmdzLmNsZWFyKCk7CiAgICAgaW50
ZXJmYWNlQmxvY2tzLmNsZWFyKCk7CisgICAgdmFyaWFibGVzQ29sbGVjdGVkID0gZmFsc2U7CiAK
ICAgICBidWlsdEluRnVuY3Rpb25FbXVsYXRvci5DbGVhbnVwKCk7CiAKQEAgLTY1MiwyMiArNzc0
LDMxIEBACiAgICAgYm9vbCBvcGVyYXRvciAoKShUSW50ZXJtTm9kZSAqbm9kZSkKICAgICB7CiAg
ICAgICAgIGNvbnN0IFRJbnRlcm1BZ2dyZWdhdGUgKmFzQWdncmVnYXRlID0gbm9kZS0+Z2V0QXNB
Z2dyZWdhdGUoKTsKKyAgICAgICAgY29uc3QgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAqYXNG
dW5jdGlvbiA9IG5vZGUtPmdldEFzRnVuY3Rpb25EZWZpbml0aW9uKCk7CiAKLSAgICAgICAgaWYg
KGFzQWdncmVnYXRlID09IG51bGxwdHIpCisgICAgICAgIGNvbnN0IFRGdW5jdGlvblN5bWJvbElu
Zm8gKmZ1bmN0aW9uSW5mbyA9IG51bGxwdHI7CisKKyAgICAgICAgaWYgKGFzRnVuY3Rpb24pCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGZ1bmN0aW9u
SW5mbyA9IGFzRnVuY3Rpb24tPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpOwogICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKCEoYXNBZ2dyZWdhdGUtPmdldE9wKCkgPT0gRU9wRnVuY3Rpb24gfHwgYXNB
Z2dyZWdhdGUtPmdldE9wKCkgPT0gRU9wUHJvdG90eXBlKSkKKyAgICAgICAgZWxzZSBpZiAoYXNB
Z2dyZWdhdGUpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChhc0FnZ3JlZ2F0ZS0+Z2V0T3Ao
KSA9PSBFT3BQcm90b3R5cGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZnVuY3Rp
b25JbmZvID0gYXNBZ2dyZWdhdGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChmdW5jdGlvbkluZm8gPT0gbnVsbHB0cikKKyAg
ICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAg
c2l6ZV90IGNhbGxEYWdJbmRleCA9IG1DYWxsRGFnLT5maW5kSW5kZXgoYXNBZ2dyZWdhdGUpOwor
ICAgICAgICBzaXplX3QgY2FsbERhZ0luZGV4ID0gbUNhbGxEYWctPmZpbmRJbmRleChmdW5jdGlv
bkluZm8pOwogICAgICAgICBpZiAoY2FsbERhZ0luZGV4ID09IENhbGxEQUc6OkludmFsaWRJbmRl
eCkKICAgICAgICAgewogICAgICAgICAgICAgLy8gVGhpcyBoYXBwZW5zIG9ubHkgZm9yIHVuaW1w
bGVtZW50ZWQgcHJvdG90eXBlcyB3aGljaCBhcmUgdGh1cyB1bnVzZWQKLSAgICAgICAgICAgIEFT
U0VSVChhc0FnZ3JlZ2F0ZS0+Z2V0T3AoKSA9PSBFT3BQcm90b3R5cGUpOworICAgICAgICAgICAg
QVNTRVJUKGFzQWdncmVnYXRlICYmIGFzQWdncmVnYXRlLT5nZXRPcCgpID09IEVPcFByb3RvdHlw
ZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCkBAIC02ODAsMTMgKzgx
MSwxMCBAQAogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEZ1bmN0aW9uTWV0YWRhdGE+ICptTWV0YWRh
dGFzOwogfTsKIAotYm9vbCBUQ29tcGlsZXI6OnBydW5lVW51c2VkRnVuY3Rpb25zKFRJbnRlcm1O
b2RlICpyb290KQorYm9vbCBUQ29tcGlsZXI6OnBydW5lVW51c2VkRnVuY3Rpb25zKFRJbnRlcm1C
bG9jayAqcm9vdCkKIHsKLSAgICBUSW50ZXJtQWdncmVnYXRlICpyb290Tm9kZSA9IHJvb3QtPmdl
dEFzQWdncmVnYXRlKCk7Ci0gICAgQVNTRVJUKHJvb3ROb2RlICE9IG51bGxwdHIpOwotCiAgICAg
VW51c2VkUHJlZGljYXRlIGlzVW51c2VkKCZtQ2FsbERhZywgJmZ1bmN0aW9uTWV0YWRhdGEpOwot
ICAgIFRJbnRlcm1TZXF1ZW5jZSAqc2VxdWVuY2UgPSByb290Tm9kZS0+Z2V0U2VxdWVuY2UoKTsK
KyAgICBUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlID0gcm9vdC0+Z2V0U2VxdWVuY2UoKTsKIAog
ICAgIGlmICghc2VxdWVuY2UtPmVtcHR5KCkpCiAgICAgewpAQCAtNzAzLDEyICs4MzEsNiBAQAog
ICAgIHJldHVybiAodmFsaWRhdGVPdXRwdXRzLnZhbGlkYXRlQW5kQ291bnRFcnJvcnMoaW5mb1Np
bmsuaW5mbykgPT0gMCk7CiB9CiAKLXZvaWQgVENvbXBpbGVyOjpyZXdyaXRlQ1NTU2hhZGVyKFRJ
bnRlcm1Ob2RlKiByb290KQotewotICAgIFJlbmFtZUZ1bmN0aW9uIHJlbmFtZXIoIm1haW4oIiwg
ImNzc19tYWluKCIpOwotICAgIHJvb3QtPnRyYXZlcnNlKCZyZW5hbWVyKTsKLX0KLQogYm9vbCBU
Q29tcGlsZXI6OnZhbGlkYXRlTGltaXRhdGlvbnMoVEludGVybU5vZGUqIHJvb3QpCiB7CiAgICAg
VmFsaWRhdGVMaW1pdGF0aW9ucyB2YWxpZGF0ZShzaGFkZXJUeXBlLCAmaW5mb1NpbmsuaW5mbyk7
CkBAIC03MTYsMzYgKzgzOCw2IEBACiAgICAgcmV0dXJuIHZhbGlkYXRlLm51bUVycm9ycygpID09
IDA7CiB9CiAKLWJvb2wgVENvbXBpbGVyOjplbmZvcmNlVGltaW5nUmVzdHJpY3Rpb25zKFRJbnRl
cm1Ob2RlKiByb290LCBib29sIG91dHB1dEdyYXBoKQotewotICAgIGlmIChzaGFkZXJTcGVjICE9
IFNIX1dFQkdMX1NQRUMpCi0gICAgewotICAgICAgICBpbmZvU2luay5pbmZvIDw8ICJUaW1pbmcg
cmVzdHJpY3Rpb25zIG11c3QgYmUgZW5mb3JjZWQgdW5kZXIgdGhlIFdlYkdMIHNwZWMuIjsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChzaGFkZXJUeXBlID09IEdMX0ZS
QUdNRU5UX1NIQURFUikKLSAgICB7Ci0gICAgICAgIFREZXBlbmRlbmN5R3JhcGggZ3JhcGgocm9v
dCk7Ci0KLSAgICAgICAgLy8gT3V0cHV0IGFueSBlcnJvcnMgZmlyc3QuCi0gICAgICAgIGJvb2wg
c3VjY2VzcyA9IGVuZm9yY2VGcmFnbWVudFNoYWRlclRpbWluZ1Jlc3RyaWN0aW9ucyhncmFwaCk7
Ci0KLSAgICAgICAgLy8gVGhlbiwgb3V0cHV0IHRoZSBkZXBlbmRlbmN5IGdyYXBoLgotICAgICAg
ICBpZiAob3V0cHV0R3JhcGgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFREZXBlbmRlbmN5R3Jh
cGhPdXRwdXQgb3V0cHV0KGluZm9TaW5rLmluZm8pOwotICAgICAgICAgICAgb3V0cHV0Lm91dHB1
dEFsbFNwYW5uaW5nVHJlZXMoZ3JhcGgpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHN1
Y2Nlc3M7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVybiBlbmZvcmNlVmVy
dGV4U2hhZGVyVGltaW5nUmVzdHJpY3Rpb25zKHJvb3QpOwotICAgIH0KLX0KLQogYm9vbCBUQ29t
cGlsZXI6OmxpbWl0RXhwcmVzc2lvbkNvbXBsZXhpdHkoVEludGVybU5vZGUqIHJvb3QpCiB7CiAg
ICAgVE1heERlcHRoVHJhdmVyc2VyIHRyYXZlcnNlcihtYXhFeHByZXNzaW9uQ29tcGxleGl0eSsx
KTsKQEAgLTc2NiwzMyArODU4LDE4IEBACiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVENv
bXBpbGVyOjplbmZvcmNlRnJhZ21lbnRTaGFkZXJUaW1pbmdSZXN0cmljdGlvbnMoY29uc3QgVERl
cGVuZGVuY3lHcmFwaCYgZ3JhcGgpCi17Ci0gICAgUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWlu
ZyByZXN0cmljdG9yKGluZm9TaW5rLmluZm8pOwotICAgIHJlc3RyaWN0b3IuZW5mb3JjZVJlc3Ry
aWN0aW9ucyhncmFwaCk7Ci0gICAgcmV0dXJuIHJlc3RyaWN0b3IubnVtRXJyb3JzKCkgPT0gMDsK
LX0KLQotYm9vbCBUQ29tcGlsZXI6OmVuZm9yY2VWZXJ0ZXhTaGFkZXJUaW1pbmdSZXN0cmljdGlv
bnMoVEludGVybU5vZGUqIHJvb3QpCi17Ci0gICAgUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcg
cmVzdHJpY3RvcihpbmZvU2luay5pbmZvKTsKLSAgICByZXN0cmljdG9yLmVuZm9yY2VSZXN0cmlj
dGlvbnMocm9vdCk7Ci0gICAgcmV0dXJuIHJlc3RyaWN0b3IubnVtRXJyb3JzKCkgPT0gMDsKLX0K
LQogdm9pZCBUQ29tcGlsZXI6OmNvbGxlY3RWYXJpYWJsZXMoVEludGVybU5vZGUqIHJvb3QpCiB7
Ci0gICAgc2g6OkNvbGxlY3RWYXJpYWJsZXMgY29sbGVjdCgmYXR0cmlidXRlcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRwdXRWYXJpYWJsZXMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmdW5pZm9ybXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmdmFyeWluZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW50
ZXJmYWNlQmxvY2tzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaEZ1bmN0
aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUpOwotICAg
IHJvb3QtPnRyYXZlcnNlKCZjb2xsZWN0KTsKKyAgICBpZiAoIXZhcmlhYmxlc0NvbGxlY3RlZCkK
KyAgICB7CisgICAgICAgIHNoOjpDb2xsZWN0VmFyaWFibGVzIGNvbGxlY3QoJmF0dHJpYnV0ZXMs
ICZvdXRwdXRWYXJpYWJsZXMsICZ1bmlmb3JtcywgJnZhcnlpbmdzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZpbnRlcmZhY2VCbG9ja3MsIGhhc2hGdW5jdGlvbiwgc3lt
Ym9sVGFibGUsIGV4dGVuc2lvbkJlaGF2aW9yKTsKKyAgICAgICAgcm9vdC0+dHJhdmVyc2UoJmNv
bGxlY3QpOwogCi0gICAgLy8gVGhpcyBpcyBmb3IgZW5mb3JjZVBhY2tpbmdSZXN0cmljdGlvbigp
LgotICAgIHNoOjpFeHBhbmRVbmlmb3Jtcyh1bmlmb3JtcywgJmV4cGFuZGVkVW5pZm9ybXMpOwor
ICAgICAgICAvLyBUaGlzIGlzIGZvciBlbmZvcmNlUGFja2luZ1Jlc3RyaWN0aW9uKCkuCisgICAg
ICAgIHNoOjpFeHBhbmRVbmlmb3Jtcyh1bmlmb3JtcywgJmV4cGFuZGVkVW5pZm9ybXMpOworICAg
ICAgICB2YXJpYWJsZXNDb2xsZWN0ZWQgPSB0cnVlOworICAgIH0KIH0KIAogYm9vbCBUQ29tcGls
ZXI6OmVuZm9yY2VQYWNraW5nUmVzdHJpY3Rpb25zKCkKQEAgLTgwMywzNyArODgwLDQ4IEBACiAK
IHZvaWQgVENvbXBpbGVyOjppbml0aWFsaXplR0xQb3NpdGlvbihUSW50ZXJtTm9kZSogcm9vdCkK
IHsKLSAgICBJbml0aWFsaXplVmFyaWFibGVzOjpJbml0VmFyaWFibGVJbmZvTGlzdCB2YXJpYWJs
ZXM7Ci0gICAgSW5pdGlhbGl6ZVZhcmlhYmxlczo6SW5pdFZhcmlhYmxlSW5mbyB2YXIoCi0gICAg
ICAgICJnbF9Qb3NpdGlvbiIsIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cVBvc2l0
aW9uLCA0KSk7Ci0gICAgdmFyaWFibGVzLnB1c2hfYmFjayh2YXIpOwotICAgIEluaXRpYWxpemVW
YXJpYWJsZXMgaW5pdGlhbGl6ZXIodmFyaWFibGVzKTsKLSAgICByb290LT50cmF2ZXJzZSgmaW5p
dGlhbGl6ZXIpOworICAgIEluaXRWYXJpYWJsZUxpc3QgbGlzdDsKKyAgICBzaDo6U2hhZGVyVmFy
aWFibGUgdmFyKEdMX0ZMT0FUX1ZFQzQsIDApOworICAgIHZhci5uYW1lID0gImdsX1Bvc2l0aW9u
IjsKKyAgICBsaXN0LnB1c2hfYmFjayh2YXIpOworICAgIEluaXRpYWxpemVWYXJpYWJsZXMocm9v
dCwgbGlzdCk7CiB9CiAKLXZvaWQgVENvbXBpbGVyOjppbml0aWFsaXplVmFyeWluZ3NXaXRob3V0
U3RhdGljVXNlKFRJbnRlcm1Ob2RlKiByb290KQordm9pZCBUQ29tcGlsZXI6OnVzZUFsbE1lbWJl
cnNJblVudXNlZFN0YW5kYXJkQW5kU2hhcmVkQmxvY2tzKFRJbnRlcm1Ob2RlICpyb290KQogewot
ICAgIEluaXRpYWxpemVWYXJpYWJsZXM6OkluaXRWYXJpYWJsZUluZm9MaXN0IHZhcmlhYmxlczsK
LSAgICBmb3IgKHNpemVfdCBpaSA9IDA7IGlpIDwgdmFyeWluZ3Muc2l6ZSgpOyArK2lpKQorICAg
IHNoOjpJbnRlcmZhY2VCbG9ja0xpc3QgbGlzdDsKKworICAgIGZvciAoYXV0byBibG9jayA6IGlu
dGVyZmFjZUJsb2NrcykKICAgICB7Ci0gICAgICAgIGNvbnN0IHNoOjpWYXJ5aW5nJiB2YXJ5aW5n
ID0gdmFyeWluZ3NbaWldOwotICAgICAgICBpZiAodmFyeWluZy5zdGF0aWNVc2UpCi0gICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgdW5zaWduZWQgY2hhciBwcmltYXJ5U2l6ZSA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXI+KGdsOjpWYXJpYWJsZUNvbHVtbkNvdW50KHZhcnlpbmcudHlw
ZSkpOwotICAgICAgICB1bnNpZ25lZCBjaGFyIHNlY29uZGFyeVNpemUgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyPihnbDo6VmFyaWFibGVSb3dDb3VudCh2YXJ5aW5nLnR5cGUpKTsKLSAgICAg
ICAgVFR5cGUgdHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFWYXJ5aW5nT3V0LCBwcmlt
YXJ5U2l6ZSwgc2Vjb25kYXJ5U2l6ZSwgdmFyeWluZy5pc0FycmF5KCkpOwotICAgICAgICBUU3Ry
aW5nIG5hbWUgPSB2YXJ5aW5nLm5hbWUuY19zdHIoKTsKLSAgICAgICAgaWYgKHZhcnlpbmcuaXNB
cnJheSgpKQorICAgICAgICBpZiAoIWJsb2NrLnN0YXRpY1VzZSAmJgorICAgICAgICAgICAgKGJs
b2NrLmxheW91dCA9PSBzaDo6QkxPQ0tMQVlPVVRfU1RBTkRBUkQgfHwgYmxvY2subGF5b3V0ID09
IHNoOjpCTE9DS0xBWU9VVF9TSEFSRUQpKQogICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlLnNl
dEFycmF5U2l6ZSh2YXJ5aW5nLmFycmF5U2l6ZSk7Ci0gICAgICAgICAgICBuYW1lID0gbmFtZS5z
dWJzdHIoMCwgbmFtZS5maW5kX2ZpcnN0X29mKCdbJykpOworICAgICAgICAgICAgbGlzdC5wdXNo
X2JhY2soYmxvY2spOwogICAgICAgICB9CisgICAgfQogCi0gICAgICAgIEluaXRpYWxpemVWYXJp
YWJsZXM6OkluaXRWYXJpYWJsZUluZm8gdmFyKG5hbWUsIHR5cGUpOwotICAgICAgICB2YXJpYWJs
ZXMucHVzaF9iYWNrKHZhcik7CisgICAgc2g6OlVzZUludGVyZmFjZUJsb2NrRmllbGRzKHJvb3Qs
IGxpc3QpOworfQorCit2b2lkIFRDb21waWxlcjo6aW5pdGlhbGl6ZU91dHB1dFZhcmlhYmxlcyhU
SW50ZXJtTm9kZSAqcm9vdCkKK3sKKyAgICBJbml0VmFyaWFibGVMaXN0IGxpc3Q7CisgICAgaWYg
KHNoYWRlclR5cGUgPT0gR0xfVkVSVEVYX1NIQURFUikKKyAgICB7CisgICAgICAgIGZvciAoYXV0
byB2YXIgOiB2YXJ5aW5ncykKKyAgICAgICAgeworICAgICAgICAgICAgbGlzdC5wdXNoX2JhY2so
dmFyKTsKKyAgICAgICAgfQogICAgIH0KLSAgICBJbml0aWFsaXplVmFyaWFibGVzIGluaXRpYWxp
emVyKHZhcmlhYmxlcyk7Ci0gICAgcm9vdC0+dHJhdmVyc2UoJmluaXRpYWxpemVyKTsKKyAgICBl
bHNlCisgICAgeworICAgICAgICBBU1NFUlQoc2hhZGVyVHlwZSA9PSBHTF9GUkFHTUVOVF9TSEFE
RVIpOworICAgICAgICBmb3IgKGF1dG8gdmFyIDogb3V0cHV0VmFyaWFibGVzKQorICAgICAgICB7
CisgICAgICAgICAgICBsaXN0LnB1c2hfYmFjayh2YXIpOworICAgICAgICB9CisgICAgfQorICAg
IEluaXRpYWxpemVWYXJpYWJsZXMocm9vdCwgbGlzdCk7CiB9CiAKIGNvbnN0IFRFeHRlbnNpb25C
ZWhhdmlvciYgVENvbXBpbGVyOjpnZXRFeHRlbnNpb25CZWhhdmlvcigpIGNvbnN0CkBAIC04NjYs
OSArOTU0LDI2IEBACiAgICAgcmV0dXJuIGJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOwogfQogCi12
b2lkIFRDb21waWxlcjo6d3JpdGVQcmFnbWEoKQordm9pZCBUQ29tcGlsZXI6OndyaXRlUHJhZ21h
KFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpCiB7Ci0gICAgVEluZm9TaW5rQmFzZSAm
c2luayA9IGluZm9TaW5rLm9iajsKLSAgICBpZiAobVByYWdtYS5zdGRnbC5pbnZhcmlhbnRBbGwp
Ci0gICAgICAgIHNpbmsgPDwgIiNwcmFnbWEgU1RER0wgaW52YXJpYW50KGFsbClcbiI7CisgICAg
aWYgKCEoY29tcGlsZU9wdGlvbnMgJiBTSF9GTEFUVEVOX1BSQUdNQV9TVERHTF9JTlZBUklBTlRf
QUxMKSkKKyAgICB7CisgICAgICAgIFRJbmZvU2lua0Jhc2UgJnNpbmsgPSBpbmZvU2luay5vYmo7
CisgICAgICAgIGlmIChtUHJhZ21hLnN0ZGdsLmludmFyaWFudEFsbCkKKyAgICAgICAgICAgIHNp
bmsgPDwgIiNwcmFnbWEgU1RER0wgaW52YXJpYW50KGFsbClcbiI7CisgICAgfQogfQorCitib29s
IFRDb21waWxlcjo6aXNWYXJ5aW5nRGVmaW5lZChjb25zdCBjaGFyICp2YXJ5aW5nTmFtZSkKK3sK
KyAgICBBU1NFUlQodmFyaWFibGVzQ29sbGVjdGVkKTsKKyAgICBmb3IgKHNpemVfdCBpaSA9IDA7
IGlpIDwgdmFyeWluZ3Muc2l6ZSgpOyArK2lpKQorICAgIHsKKyAgICAgICAgaWYgKHZhcnlpbmdz
W2lpXS5uYW1lID09IHZhcnlpbmdOYW1lKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0NvbXBpbGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvQ29tcGlsZXIuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29tcGlsZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjUsMTQgKzI1LDEyIEBACiAjaW5jbHVkZSAidGhpcmRfcGFydHkvY29tcGlsZXIvQXJyYXlC
b3VuZHNDbGFtcGVyLmgiCiAKIGNsYXNzIFRDb21waWxlcjsKLWNsYXNzIFREZXBlbmRlbmN5R3Jh
cGg7CiAjaWZkZWYgQU5HTEVfRU5BQkxFX0hMU0wKIGNsYXNzIFRyYW5zbGF0b3JITFNMOwogI2Vu
ZGlmIC8vIEFOR0xFX0VOQUJMRV9ITFNMCiAKIC8vCi0vLyBIZWxwZXIgZnVuY3Rpb24gdG8gaWRl
bnRpZnkgc3BlY3MgdGhhdCBhcmUgYmFzZWQgb24gdGhlIFdlYkdMIHNwZWMsCi0vLyBsaWtlIHRo
ZSBDU1MgU2hhZGVycyBzcGVjLgorLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGlkZW50aWZ5IHNwZWNz
IHRoYXQgYXJlIGJhc2VkIG9uIHRoZSBXZWJHTCBzcGVjLgogLy8KIGJvb2wgSXNXZWJHTEJhc2Vk
U3BlYyhTaFNoYWRlclNwZWMgc3BlYyk7CiAKQEAgLTc0LDE3ICs3MiwyMiBAQAogCiAgICAgLy8g
Y29tcGlsZVRyZWVGb3JUZXN0aW5nIHNob3VsZCBiZSB1c2VkIG9ubHkgd2hlbiB0ZXN0cyByZXF1
aXJlIGFjY2VzcyB0bwogICAgIC8vIHRoZSBBU1QuIFVzZXJzIG9mIHRoaXMgZnVuY3Rpb24gbmVl
ZCB0byBtYW51YWxseSBtYW5hZ2UgdGhlIGdsb2JhbCBwb29sCi0gICAgLy8gYWxsb2NhdG9yLiBS
ZXR1cm5zIE5VTEwgd2hlbmV2ZXIgdGhlcmUgYXJlIGNvbXBpbGF0aW9uIGVycm9ycy4KLSAgICBU
SW50ZXJtTm9kZSAqY29tcGlsZVRyZWVGb3JUZXN0aW5nKGNvbnN0IGNoYXIqIGNvbnN0IHNoYWRl
clN0cmluZ3NbXSwKLSAgICAgICAgc2l6ZV90IG51bVN0cmluZ3MsIGludCBjb21waWxlT3B0aW9u
cyk7CisgICAgLy8gYWxsb2NhdG9yLiBSZXR1cm5zIG51bGxwdHIgd2hlbmV2ZXIgdGhlcmUgYXJl
IGNvbXBpbGF0aW9uIGVycm9ycy4KKyAgICBUSW50ZXJtQmxvY2sgKmNvbXBpbGVUcmVlRm9yVGVz
dGluZyhjb25zdCBjaGFyICpjb25zdCBzaGFkZXJTdHJpbmdzW10sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bVN0cmluZ3MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9u
cyk7CiAKLSAgICBib29sIGNvbXBpbGUoY29uc3QgY2hhciogY29uc3Qgc2hhZGVyU3RyaW5nc1td
LAotICAgICAgICBzaXplX3QgbnVtU3RyaW5ncywgaW50IGNvbXBpbGVPcHRpb25zKTsKKyAgICBi
b29sIGNvbXBpbGUoY29uc3QgY2hhciAqY29uc3Qgc2hhZGVyU3RyaW5nc1tdLAorICAgICAgICAg
ICAgICAgICBzaXplX3QgbnVtU3RyaW5ncywKKyAgICAgICAgICAgICAgICAgU2hDb21waWxlT3B0
aW9ucyBjb21waWxlT3B0aW9ucyk7CiAKICAgICAvLyBHZXQgcmVzdWx0cyBvZiB0aGUgbGFzdCBj
b21waWxhdGlvbi4KICAgICBpbnQgZ2V0U2hhZGVyVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIHNo
YWRlclZlcnNpb247IH0KICAgICBUSW5mb1NpbmsmIGdldEluZm9TaW5rKCkgeyByZXR1cm4gaW5m
b1Npbms7IH0KIAorICAgIGJvb2wgaXNDb21wdXRlU2hhZGVyTG9jYWxTaXplRGVjbGFyZWQoKSBj
b25zdCB7IHJldHVybiBtQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZURlY2xhcmVkOyB9CisgICAgY29u
c3Qgc2g6OldvcmtHcm91cFNpemUgJmdldENvbXB1dGVTaGFkZXJMb2NhbFNpemUoKSB7IHJldHVy
biBtQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZTsgfQorCiAgICAgLy8gQ2xlYXJzIHRoZSByZXN1bHRz
IGZyb20gdGhlIHByZXZpb3VzIGNvbXBpbGF0aW9uLgogICAgIHZvaWQgY2xlYXJSZXN1bHRzKCk7
CiAKQEAgLTEwMSw3ICsxMDQsNyBAQAogICAgIFNoU2hhZGVyT3V0cHV0IGdldE91dHB1dFR5cGUo
KSBjb25zdCB7IHJldHVybiBvdXRwdXRUeXBlOyB9CiAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmdl
dEJ1aWx0SW5SZXNvdXJjZXNTdHJpbmcoKSBjb25zdCB7IHJldHVybiBidWlsdEluUmVzb3VyY2Vz
U3RyaW5nOyB9CiAKLSAgICBib29sIHNob3VsZFJ1bkxvb3BBbmRJbmRleGluZ1ZhbGlkYXRpb24o
aW50IGNvbXBpbGVPcHRpb25zKSBjb25zdDsKKyAgICBib29sIHNob3VsZFJ1bkxvb3BBbmRJbmRl
eGluZ1ZhbGlkYXRpb24oU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucykgY29uc3Q7CiAK
ICAgICAvLyBHZXQgdGhlIHJlc291cmNlcyBzZXQgYnkgSW5pdEJ1aWx0SW5TeW1ib2xUYWJsZQog
ICAgIGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgZ2V0UmVzb3VyY2VzKCkgY29uc3Q7CkBAIC0x
MTYsOCArMTE5LDYgQEAKICAgICBib29sIGNoZWNrQ2FsbERlcHRoKCk7CiAgICAgLy8gUmV0dXJu
cyB0cnVlIGlmIGEgcHJvZ3JhbSBoYXMgbm8gY29uZmxpY3Rpbmcgb3IgbWlzc2luZyBmcmFnbWVu
dCBvdXRwdXRzCiAgICAgYm9vbCB2YWxpZGF0ZU91dHB1dHMoVEludGVybU5vZGUqIHJvb3QpOwot
ICAgIC8vIFJld3JpdGVzIGEgc2hhZGVyJ3MgaW50ZXJtZWRpYXRlIHRyZWUgYWNjb3JkaW5nIHRv
IHRoZSBDU1MgU2hhZGVycyBzcGVjLgotICAgIHZvaWQgcmV3cml0ZUNTU1NoYWRlcihUSW50ZXJt
Tm9kZSogcm9vdCk7CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBzaGFkZXIgZG9l
cyBub3QgZXhjZWVkIHRoZSBtaW5pbXVtCiAgICAgLy8gZnVuY3Rpb25hbGl0eSBtYW5kYXRlZCBp
biBHTFNMIDEuMCBzcGVjIEFwcGVuZGl4IEEuCiAgICAgYm9vbCB2YWxpZGF0ZUxpbWl0YXRpb25z
KFRJbnRlcm1Ob2RlKiByb290KTsKQEAgLTEyNCwyOSArMTI1LDI1IEBACiAgICAgLy8gQ29sbGVj
dCBpbmZvIGZvciBhbGwgYXR0cmlicywgdW5pZm9ybXMsIHZhcnlpbmdzLgogICAgIHZvaWQgY29s
bGVjdFZhcmlhYmxlcyhUSW50ZXJtTm9kZSogcm9vdCk7CiAgICAgLy8gQWRkIGVtdWxhdGVkIGZ1
bmN0aW9ucyB0byB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gZW11bGF0b3IuCi0gICAgdmlydHVhbCB2
b2lkIGluaXRCdWlsdEluRnVuY3Rpb25FbXVsYXRvcihCdWlsdEluRnVuY3Rpb25FbXVsYXRvciAq
ZW11LCBpbnQgY29tcGlsZU9wdGlvbnMpIHt9OworICAgIHZpcnR1YWwgdm9pZCBpbml0QnVpbHRJ
bkZ1bmN0aW9uRW11bGF0b3IoQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IgKmVtdSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoQ29tcGlsZU9wdGlvbnMgY29t
cGlsZU9wdGlvbnMpe307CiAgICAgLy8gVHJhbnNsYXRlIHRvIG9iamVjdCBjb2RlLgotICAgIHZp
cnR1YWwgdm9pZCB0cmFuc2xhdGUoVEludGVybU5vZGUgKnJvb3QsIGludCBjb21waWxlT3B0aW9u
cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0cmFuc2xhdGUoVEludGVybU5vZGUgKnJvb3QsIFNo
Q29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpID0gMDsKICAgICAvLyBSZXR1cm5zIHRydWUg
aWYsIGFmdGVyIGFwcGx5aW5nIHRoZSBwYWNraW5nIHJ1bGVzIGluIHRoZSBHTFNMIDEuMDE3IHNw
ZWMKICAgICAvLyBBcHBlbmRpeCBBLCBzZWN0aW9uIDcsIHRoZSBzaGFkZXIgZG9lcyBub3QgdXNl
IHRvbyBtYW55IHVuaWZvcm1zLgogICAgIGJvb2wgZW5mb3JjZVBhY2tpbmdSZXN0cmljdGlvbnMo
KTsKLSAgICAvLyBJbnNlcnQgc3RhdGVtZW50cyB0byBpbml0aWFsaXplIHZhcnlpbmdzIHdpdGhv
dXQgc3RhdGljIHVzZSBpbiB0aGUgYmVnaW5uaW5nCi0gICAgLy8gb2YgbWFpbigpLiBJdCBpcyB0
byB3b3JrIGFyb3VuZCBhIE1hYyBkcml2ZXIgd2hlcmUgc3VjaCB2YXJ5aW5ncyBpbiBhIHZlcnRl
eAotICAgIC8vIHNoYWRlciBtYXkgYmUgb3B0aW1pemVkIG91dCBpbmNvcnJlY3RseSBhdCBjb21w
aWxlIHRpbWUsIGNhdXNpbmcgYSBsaW5rIGZhaWx1cmUuCi0gICAgLy8gVGhpcyBmdW5jdGlvbiBz
aG91bGQgb25seSBiZSBhcHBsaWVkIHRvIHZlcnRleCBzaGFkZXJzLgotICAgIHZvaWQgaW5pdGlh
bGl6ZVZhcnlpbmdzV2l0aG91dFN0YXRpY1VzZShUSW50ZXJtTm9kZSogcm9vdCk7CisgICAgLy8g
SW5zZXJ0IHN0YXRlbWVudHMgdG8gcmVmZXJlbmNlIGFsbCBtZW1iZXJzIGluIHVudXNlZCB1bmlm
b3JtIGJsb2NrcyB3aXRoIHN0YW5kYXJkIGFuZCBzaGFyZWQKKyAgICAvLyBsYXlvdXQuIFRoaXMg
aXMgdG8gd29yayBhcm91bmQgYSBNYWMgZHJpdmVyIHRoYXQgdHJlYXRzIHVudXNlZCBzdGFuZGFy
ZC9zaGFyZWQKKyAgICAvLyB1bmlmb3JtIGJsb2NrcyBhcyBpbmFjdGl2ZS4KKyAgICB2b2lkIHVz
ZUFsbE1lbWJlcnNJblVudXNlZFN0YW5kYXJkQW5kU2hhcmVkQmxvY2tzKFRJbnRlcm1Ob2RlICpy
b290KTsKKyAgICAvLyBJbnNlcnQgc3RhdGVtZW50cyB0byBpbml0aWFsaXplIG91dHB1dCB2YXJp
YWJsZXMgaW4gdGhlIGJlZ2lubmluZyBvZiBtYWluKCkuCisgICAgLy8gVGhpcyBpcyB0byBhdm9p
ZCB1bmRlZmluZWQgYmVoYXZpb3JzLgorICAgIHZvaWQgaW5pdGlhbGl6ZU91dHB1dFZhcmlhYmxl
cyhUSW50ZXJtTm9kZSAqcm9vdCk7CiAgICAgLy8gSW5zZXJ0IGdsX1Bvc2l0aW9uID0gdmVjNCgw
LDAsMCwwKSB0byB0aGUgYmVnaW5uaW5nIG9mIG1haW4oKS4KICAgICAvLyBJdCBpcyB0byB3b3Jr
IGFyb3VuZCBhIExpbnV4IGRyaXZlciBidWcgd2hlcmUgbWlzc2luZyB0aGlzIGNhdXNlcyBjb21w
aWxlIGZhaWx1cmUKICAgICAvLyB3aGlsZSBzcGVjIHNheXMgaXQgaXMgYWxsb3dlZC4KICAgICAv
LyBUaGlzIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIGFwcGxpZWQgdG8gdmVydGV4IHNoYWRlcnMu
CiAgICAgdm9pZCBpbml0aWFsaXplR0xQb3NpdGlvbihUSW50ZXJtTm9kZSogcm9vdCk7Ci0gICAg
Ly8gUmV0dXJucyB0cnVlIGlmIHRoZSBzaGFkZXIgcGFzc2VzIHRoZSByZXN0cmljdGlvbnMgdGhh
dCBhaW0gdG8gcHJldmVudCB0aW1pbmcgYXR0YWNrcy4KLSAgICBib29sIGVuZm9yY2VUaW1pbmdS
ZXN0cmljdGlvbnMoVEludGVybU5vZGUqIHJvb3QsIGJvb2wgb3V0cHV0R3JhcGgpOwotICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiB0aGUgc2hhZGVyIGRvZXMgbm90IHVzZSBzYW1wbGVycy4KLSAgICBi
b29sIGVuZm9yY2VWZXJ0ZXhTaGFkZXJUaW1pbmdSZXN0cmljdGlvbnMoVEludGVybU5vZGUqIHJv
b3QpOwotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgc2hhZGVyIGRvZXMgbm90IHVzZSBzYW1w
bGVyIGRlcGVuZGVudCB2YWx1ZXMgdG8gYWZmZWN0IGNvbnRyb2wKLSAgICAvLyBmbG93IG9yIGlu
IG9wZXJhdGlvbnMgd2hvc2UgdGltZSBjYW4gZGVwZW5kIG9uIHRoZSBpbnB1dCB2YWx1ZXMuCi0g
ICAgYm9vbCBlbmZvcmNlRnJhZ21lbnRTaGFkZXJUaW1pbmdSZXN0cmljdGlvbnMoY29uc3QgVERl
cGVuZGVuY3lHcmFwaCYgZ3JhcGgpOwogICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZSBtYXhpbXVt
IGV4cHJlc3Npb24gY29tcGxleGl0eSBpcyBiZWxvdyB0aGUgbGltaXQuCiAgICAgYm9vbCBsaW1p
dEV4cHJlc3Npb25Db21wbGV4aXR5KFRJbnRlcm1Ob2RlKiByb290KTsKICAgICAvLyBHZXQgYnVp
bHQtaW4gZXh0ZW5zaW9ucyB3aXRoIGRlZmF1bHQgYmVoYXZpb3IuCkBAIC0xNTMsMTMgKzE1MCwy
MiBAQAogICAgIGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciYgZ2V0RXh0ZW5zaW9uQmVoYXZpb3Io
KSBjb25zdDsKICAgICBjb25zdCBjaGFyICpnZXRTb3VyY2VQYXRoKCkgY29uc3Q7CiAgICAgY29u
c3QgVFByYWdtYSYgZ2V0UHJhZ21hKCkgY29uc3QgeyByZXR1cm4gbVByYWdtYTsgfQotICAgIHZv
aWQgd3JpdGVQcmFnbWEoKTsKKyAgICB2b2lkIHdyaXRlUHJhZ21hKFNoQ29tcGlsZU9wdGlvbnMg
Y29tcGlsZU9wdGlvbnMpOwogICAgIHVuc2lnbmVkIGludCAqZ2V0VGVtcG9yYXJ5SW5kZXgoKSB7
IHJldHVybiAmbVRlbXBvcmFyeUluZGV4OyB9CisgICAgLy8gUmVsaWVzIG9uIGNvbGxlY3RWYXJp
YWJsZXMgaGF2aW5nIGJlZW4gY2FsbGVkLgorICAgIGJvb2wgaXNWYXJ5aW5nRGVmaW5lZChjb25z
dCBjaGFyICp2YXJ5aW5nTmFtZSk7CiAKICAgICBjb25zdCBBcnJheUJvdW5kc0NsYW1wZXImIGdl
dEFycmF5Qm91bmRzQ2xhbXBlcigpIGNvbnN0OwogICAgIFNoQXJyYXlJbmRleENsYW1waW5nU3Ry
YXRlZ3kgZ2V0QXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3koKSBjb25zdDsKICAgICBjb25zdCBC
dWlsdEluRnVuY3Rpb25FbXVsYXRvciYgZ2V0QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IoKSBjb25z
dDsKIAorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDb2xsZWN0VmFyaWFibGVzKFNoQ29tcGlsZU9w
dGlvbnMgY29tcGlsZU9wdGlvbnMpCisgICAgeworICAgICAgICByZXR1cm4gKGNvbXBpbGVPcHRp
b25zICYgU0hfVkFSSUFCTEVTKSAhPSAwOworICAgIH0KKworICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRGbGF0dGVuUHJhZ21hU3RkZ2xJbnZhcmlhbnRBbGwoKSA9IDA7CisKICAgICBzdGQ6OnZlY3Rv
cjxzaDo6QXR0cmlidXRlPiBhdHRyaWJ1dGVzOwogICAgIHN0ZDo6dmVjdG9yPHNoOjpPdXRwdXRW
YXJpYWJsZT4gb3V0cHV0VmFyaWFibGVzOwogICAgIHN0ZDo6dmVjdG9yPHNoOjpVbmlmb3JtPiB1
bmlmb3JtczsKQEAgLTE2NiwxMiArMTcyLDggQEAKICAgICBzdGQ6OnZlY3RvcjxzaDo6U2hhZGVy
VmFyaWFibGU+IGV4cGFuZGVkVW5pZm9ybXM7CiAgICAgc3RkOjp2ZWN0b3I8c2g6OlZhcnlpbmc+
IHZhcnlpbmdzOwogICAgIHN0ZDo6dmVjdG9yPHNoOjpJbnRlcmZhY2VCbG9jaz4gaW50ZXJmYWNl
QmxvY2tzOworICAgIGJvb2wgdmFyaWFibGVzQ29sbGVjdGVkOwogCi0gICAgdmlydHVhbCBib29s
IHNob3VsZENvbGxlY3RWYXJpYWJsZXMoaW50IGNvbXBpbGVPcHRpb25zKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIChjb21waWxlT3B0aW9ucyAmIFNIX1ZBUklBQkxFUykgIT0gMDsKLSAgICB9Ci0K
ICAgcHJpdmF0ZToKICAgICAvLyBDcmVhdGVzIHRoZSBmdW5jdGlvbiBjYWxsIERBRyBmb3IgZnVy
dGhlciBhbmFseXNpcywgcmV0dXJuaW5nIGZhbHNlIGlmIHRoZXJlIGlzIGEgcmVjdXJzaW9uCiAg
ICAgYm9vbCBpbml0Q2FsbERhZyhUSW50ZXJtTm9kZSAqcm9vdCk7CkBAIC0xODMsMTEgKzE4NSwx
MSBAQAogCiAgICAgLy8gUmVtb3ZlcyB1bnVzZWQgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGFuZCBw
cm90b3R5cGVzIGZyb20gdGhlIEFTVAogICAgIGNsYXNzIFVudXNlZFByZWRpY2F0ZTsKLSAgICBi
b29sIHBydW5lVW51c2VkRnVuY3Rpb25zKFRJbnRlcm1Ob2RlICpyb290KTsKKyAgICBib29sIHBy
dW5lVW51c2VkRnVuY3Rpb25zKFRJbnRlcm1CbG9jayAqcm9vdCk7CiAKLSAgICBUSW50ZXJtTm9k
ZSAqY29tcGlsZVRyZWVJbXBsKGNvbnN0IGNoYXIgKmNvbnN0IHNoYWRlclN0cmluZ3NbXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBudW1TdHJpbmdzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IGNvbXBpbGVPcHRpb25zKTsKKyAg
ICBUSW50ZXJtQmxvY2sgKmNvbXBpbGVUcmVlSW1wbChjb25zdCBjaGFyICpjb25zdCBzaGFkZXJT
dHJpbmdzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bVN0
cmluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hDb21waWxl
T3B0aW9ucyBjb21waWxlT3B0aW9ucyk7CiAKICAgICBzaDo6R0xlbnVtIHNoYWRlclR5cGU7CiAg
ICAgU2hTaGFkZXJTcGVjIHNoYWRlclNwZWM7CkBAIC0yMjksNiArMjMxLDEwIEBACiAgICAgVElu
Zm9TaW5rIGluZm9TaW5rOyAgLy8gT3V0cHV0IHNpbmsuCiAgICAgY29uc3QgY2hhciAqbVNvdXJj
ZVBhdGg7IC8vIFBhdGggb2Ygc291cmNlIGZpbGUgb3IgTlVMTAogCisgICAgLy8gY29tcHV0ZSBz
aGFkZXIgbG9jYWwgZ3JvdXAgc2l6ZQorICAgIGJvb2wgbUNvbXB1dGVTaGFkZXJMb2NhbFNpemVE
ZWNsYXJlZDsKKyAgICBzaDo6V29ya0dyb3VwU2l6ZSBtQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZTsK
KwogICAgIC8vIG5hbWUgaGFzaGluZy4KICAgICBTaEhhc2hGdW5jdGlvbjY0IGhhc2hGdW5jdGlv
bjsKICAgICBOYW1lTWFwIG5hbWVNYXA7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db25zdGFudFVuaW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db25zdGFudFVu
aW9uLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9Db25zdGFudFVuaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDYyMiBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIENvbnN0YW50VW5pb246IENvbnN0YW50IGZvbGRpbmcg
aGVscGVyIGNsYXNzLgorCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9Db25zdGFudFVu
aW9uLmgiCisKKyNpbmNsdWRlICJiYXNlL251bWVyaWNzL3NhZmVfbWF0aC5oIgorI2luY2x1ZGUg
ImNvbW1vbi9tYXRodXRpbC5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvRGlhZ25v
c3RpY3MuaCIKKworbmFtZXNwYWNlCit7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorVCBDaGVj
a2VkU3VtKGJhc2U6OkNoZWNrZWROdW1lcmljPFQ+IGxocywKKyAgICAgICAgICAgICBiYXNlOjpD
aGVja2VkTnVtZXJpYzxUPiByaHMsCisgICAgICAgICAgICAgVERpYWdub3N0aWNzICpkaWFnLAor
ICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpCit7CisgICAgQVNTRVJUKGxocy5J
c1ZhbGlkKCkgJiYgcmhzLklzVmFsaWQoKSk7CisgICAgYXV0byByZXN1bHQgPSBsaHMgKyByaHM7
CisgICAgaWYgKCFyZXN1bHQuSXNWYWxpZCgpKQorICAgIHsKKyAgICAgICAgZGlhZy0+ZXJyb3Io
bGluZSwgIkFkZGl0aW9uIG91dCBvZiByYW5nZSIsICIqIiwgIiIpOworICAgICAgICByZXR1cm4g
MDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdC5WYWx1ZU9yRGVmYXVsdCgwKTsKK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CitUIENoZWNrZWREaWZmKGJhc2U6OkNoZWNrZWROdW1lcmljPFQ+
IGxocywKKyAgICAgICAgICAgICAgYmFzZTo6Q2hlY2tlZE51bWVyaWM8VD4gcmhzLAorICAgICAg
ICAgICAgICBURGlhZ25vc3RpY3MgKmRpYWcsCisgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VM
b2MgJmxpbmUpCit7CisgICAgQVNTRVJUKGxocy5Jc1ZhbGlkKCkgJiYgcmhzLklzVmFsaWQoKSk7
CisgICAgYXV0byByZXN1bHQgPSBsaHMgLSByaHM7CisgICAgaWYgKCFyZXN1bHQuSXNWYWxpZCgp
KQorICAgIHsKKyAgICAgICAgZGlhZy0+ZXJyb3IobGluZSwgIkRpZmZlcmVuY2Ugb3V0IG9mIHJh
bmdlIiwgIioiLCAiIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcmVz
dWx0LlZhbHVlT3JEZWZhdWx0KDApOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK1QgQ2hl
Y2tlZE11bChiYXNlOjpDaGVja2VkTnVtZXJpYzxUPiBsaHMsCisgICAgICAgICAgICAgYmFzZTo6
Q2hlY2tlZE51bWVyaWM8VD4gcmhzLAorICAgICAgICAgICAgIFREaWFnbm9zdGljcyAqZGlhZywK
KyAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsaW5lKQoreworICAgIEFTU0VSVChsaHMu
SXNWYWxpZCgpICYmIHJocy5Jc1ZhbGlkKCkpOworICAgIGF1dG8gcmVzdWx0ID0gbGhzICogcmhz
OworICAgIGlmICghcmVzdWx0LklzVmFsaWQoKSkKKyAgICB7CisgICAgICAgIGRpYWctPmVycm9y
KGxpbmUsICJNdWx0aXBsaWNhdGlvbiBvdXQgb2YgcmFuZ2UiLCAiKiIsICIiKTsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiByZXN1bHQuVmFsdWVPckRlZmF1bHQoMCk7Cit9
CisKK30gIC8vIGFub255bW91cyBuYW1lc3BhY2UKKworVENvbnN0YW50VW5pb246OlRDb25zdGFu
dFVuaW9uKCkKK3sKKyAgICBpQ29uc3QgPSAwOworICAgIHR5cGUgICA9IEVidFZvaWQ7Cit9CisK
K2Jvb2wgVENvbnN0YW50VW5pb246OmNhc3QoVEJhc2ljVHlwZSBuZXdUeXBlLCBjb25zdCBUQ29u
c3RhbnRVbmlvbiAmY29uc3RhbnQpCit7CisgICAgc3dpdGNoIChuZXdUeXBlKQorICAgIHsKKyAg
ICAgICAgY2FzZSBFYnRGbG9hdDoKKyAgICAgICAgICAgIHN3aXRjaCAoY29uc3RhbnQudHlwZSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEVidEludDoKKyAgICAgICAgICAg
ICAgICAgICAgc2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0Pihjb25zdGFudC5nZXRJQ29uc3Qo
KSkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEVi
dFVJbnQ6CisgICAgICAgICAgICAgICAgICAgIHNldEZDb25zdChzdGF0aWNfY2FzdDxmbG9hdD4o
Y29uc3RhbnQuZ2V0VUNvbnN0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSBFYnRCb29sOgorICAgICAgICAgICAgICAgICAgICBzZXRGQ29uc3Qo
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbnN0YW50LmdldEJDb25zdCgpKSk7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CisgICAgICAgICAg
ICAgICAgICAgIHNldEZDb25zdChzdGF0aWNfY2FzdDxmbG9hdD4oY29uc3RhbnQuZ2V0RkNvbnN0
KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAgICAgICAgc3dpdGNo
IChjb25zdGFudC50eXBlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRWJ0
SW50OgorICAgICAgICAgICAgICAgICAgICBzZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50Pihjb25z
dGFudC5nZXRJQ29uc3QoKSkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIEVidFVJbnQ6CisgICAgICAgICAgICAgICAgICAgIHNldElDb25zdChzdGF0
aWNfY2FzdDxpbnQ+KGNvbnN0YW50LmdldFVDb25zdCgpKSk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKKyAgICAgICAgICAgICAgICAg
ICAgc2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4oY29uc3RhbnQuZ2V0QkNvbnN0KCkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoK
KyAgICAgICAgICAgICAgICAgICAgc2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4oY29uc3RhbnQu
Z2V0RkNvbnN0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRWJ0VUludDoKKyAgICAgICAg
ICAgIHN3aXRjaCAoY29uc3RhbnQudHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBjYXNlIEVidEludDoKKyAgICAgICAgICAgICAgICAgICAgc2V0VUNvbnN0KHN0YXRpY19jYXN0
PHVuc2lnbmVkIGludD4oY29uc3RhbnQuZ2V0SUNvbnN0KCkpKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBFYnRVSW50OgorICAgICAgICAgICAgICAg
ICAgICBzZXRVQ29uc3Qoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihjb25zdGFudC5nZXRVQ29u
c3QoKSkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNl
IEVidEJvb2w6CisgICAgICAgICAgICAgICAgICAgIHNldFVDb25zdChzdGF0aWNfY2FzdDx1bnNp
Z25lZCBpbnQ+KGNvbnN0YW50LmdldEJDb25zdCgpKSk7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CisgICAgICAgICAgICAgICAgICAg
IHNldFVDb25zdChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGNvbnN0YW50LmdldEZDb25zdCgp
KSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVidEJvb2w6CisgICAgICAgICAgICBzd2l0Y2gg
KGNvbnN0YW50LnR5cGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBFYnRJ
bnQ6CisgICAgICAgICAgICAgICAgICAgIHNldEJDb25zdChjb25zdGFudC5nZXRJQ29uc3QoKSAh
PSAwKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBF
YnRVSW50OgorICAgICAgICAgICAgICAgICAgICBzZXRCQ29uc3QoY29uc3RhbnQuZ2V0VUNvbnN0
KCkgIT0gMCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgRWJ0Qm9vbDoKKyAgICAgICAgICAgICAgICAgICAgc2V0QkNvbnN0KGNvbnN0YW50LmdldEJD
b25zdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSBFYnRGbG9hdDoKKyAgICAgICAgICAgICAgICAgICAgc2V0QkNvbnN0KGNvbnN0YW50LmdldEZD
b25zdCgpICE9IDAuMGYpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFYnRTdHJ1Y3Q6ICAvLyBT
dHJ1Y3QgZmllbGRzIGRvbid0IGdldCBjYXN0CisgICAgICAgICAgICBzd2l0Y2ggKGNvbnN0YW50
LnR5cGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CisgICAg
ICAgICAgICAgICAgICAgIHNldElDb25zdChjb25zdGFudC5nZXRJQ29uc3QoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRWJ0VUludDoKKyAgICAg
ICAgICAgICAgICAgICAgc2V0VUNvbnN0KGNvbnN0YW50LmdldFVDb25zdCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBFYnRCb29sOgorICAgICAg
ICAgICAgICAgICAgICBzZXRCQ29uc3QoY29uc3RhbnQuZ2V0QkNvbnN0KCkpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OgorICAgICAg
ICAgICAgICAgICAgICBzZXRGQ29uc3QoY29uc3RhbnQuZ2V0RkNvbnN0KCkpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBUQ29uc3RhbnRVbmlvbjo6b3BlcmF0b3I9PShjb25z
dCBpbnQgaSkgY29uc3QKK3sKKyAgICByZXR1cm4gaSA9PSBpQ29uc3Q7Cit9CisKK2Jvb2wgVENv
bnN0YW50VW5pb246Om9wZXJhdG9yPT0oY29uc3QgdW5zaWduZWQgaW50IHUpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHUgPT0gdUNvbnN0OworfQorCitib29sIFRDb25zdGFudFVuaW9uOjpvcGVyYXRv
cj09KGNvbnN0IGZsb2F0IGYpIGNvbnN0Cit7CisgICAgcmV0dXJuIGYgPT0gZkNvbnN0OworfQor
Citib29sIFRDb25zdGFudFVuaW9uOjpvcGVyYXRvcj09KGNvbnN0IGJvb2wgYikgY29uc3QKK3sK
KyAgICByZXR1cm4gYiA9PSBiQ29uc3Q7Cit9CisKK2Jvb2wgVENvbnN0YW50VW5pb246Om9wZXJh
dG9yPT0oY29uc3QgVENvbnN0YW50VW5pb24gJmNvbnN0YW50KSBjb25zdAoreworICAgIGlmIChj
b25zdGFudC50eXBlICE9IHR5cGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN3aXRj
aCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAgICAgICAgcmV0dXJu
IGNvbnN0YW50LmlDb25zdCA9PSBpQ29uc3Q7CisgICAgICAgIGNhc2UgRWJ0VUludDoKKyAgICAg
ICAgICAgIHJldHVybiBjb25zdGFudC51Q29uc3QgPT0gdUNvbnN0OworICAgICAgICBjYXNlIEVi
dEZsb2F0OgorICAgICAgICAgICAgcmV0dXJuIGNvbnN0YW50LmZDb25zdCA9PSBmQ29uc3Q7Cisg
ICAgICAgIGNhc2UgRWJ0Qm9vbDoKKyAgICAgICAgICAgIHJldHVybiBjb25zdGFudC5iQ29uc3Qg
PT0gYkNvbnN0OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KK30KKworYm9vbCBUQ29uc3RhbnRVbmlvbjo6b3BlcmF0b3IhPShjb25zdCBpbnQgaSkg
Y29uc3QKK3sKKyAgICByZXR1cm4gIW9wZXJhdG9yPT0oaSk7Cit9CisKK2Jvb2wgVENvbnN0YW50
VW5pb246Om9wZXJhdG9yIT0oY29uc3QgdW5zaWduZWQgaW50IHUpIGNvbnN0Cit7CisgICAgcmV0
dXJuICFvcGVyYXRvcj09KHUpOworfQorCitib29sIFRDb25zdGFudFVuaW9uOjpvcGVyYXRvciE9
KGNvbnN0IGZsb2F0IGYpIGNvbnN0Cit7CisgICAgcmV0dXJuICFvcGVyYXRvcj09KGYpOworfQor
Citib29sIFRDb25zdGFudFVuaW9uOjpvcGVyYXRvciE9KGNvbnN0IGJvb2wgYikgY29uc3QKK3sK
KyAgICByZXR1cm4gIW9wZXJhdG9yPT0oYik7Cit9CisKK2Jvb2wgVENvbnN0YW50VW5pb246Om9w
ZXJhdG9yIT0oY29uc3QgVENvbnN0YW50VW5pb24gJmNvbnN0YW50KSBjb25zdAoreworICAgIHJl
dHVybiAhb3BlcmF0b3I9PShjb25zdGFudCk7Cit9CisKK2Jvb2wgVENvbnN0YW50VW5pb246Om9w
ZXJhdG9yPihjb25zdCBUQ29uc3RhbnRVbmlvbiAmY29uc3RhbnQpIGNvbnN0Cit7CisgICAgQVNT
RVJUKHR5cGUgPT0gY29uc3RhbnQudHlwZSk7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAg
ICAgICAgY2FzZSBFYnRJbnQ6CisgICAgICAgICAgICByZXR1cm4gaUNvbnN0ID4gY29uc3RhbnQu
aUNvbnN0OworICAgICAgICBjYXNlIEVidFVJbnQ6CisgICAgICAgICAgICByZXR1cm4gdUNvbnN0
ID4gY29uc3RhbnQudUNvbnN0OworICAgICAgICBjYXNlIEVidEZsb2F0OgorICAgICAgICAgICAg
cmV0dXJuIGZDb25zdCA+IGNvbnN0YW50LmZDb25zdDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsgIC8vIEludmFsaWQgb3BlcmF0aW9uLCBoYW5kbGVkIGF0IHNl
bWFudGljIGFuYWx5c2lzCisgICAgfQorfQorCitib29sIFRDb25zdGFudFVuaW9uOjpvcGVyYXRv
cjwoY29uc3QgVENvbnN0YW50VW5pb24gJmNvbnN0YW50KSBjb25zdAoreworICAgIEFTU0VSVCh0
eXBlID09IGNvbnN0YW50LnR5cGUpOworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAg
IGNhc2UgRWJ0SW50OgorICAgICAgICAgICAgcmV0dXJuIGlDb25zdCA8IGNvbnN0YW50LmlDb25z
dDsKKyAgICAgICAgY2FzZSBFYnRVSW50OgorICAgICAgICAgICAgcmV0dXJuIHVDb25zdCA8IGNv
bnN0YW50LnVDb25zdDsKKyAgICAgICAgY2FzZSBFYnRGbG9hdDoKKyAgICAgICAgICAgIHJldHVy
biBmQ29uc3QgPCBjb25zdGFudC5mQ29uc3Q7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7ICAvLyBJbnZhbGlkIG9wZXJhdGlvbiwgaGFuZGxlZCBhdCBzZW1hbnRp
YyBhbmFseXNpcworICAgIH0KK30KKworLy8gc3RhdGljCitUQ29uc3RhbnRVbmlvbiBUQ29uc3Rh
bnRVbmlvbjo6YWRkKGNvbnN0IFRDb25zdGFudFVuaW9uICZsaHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRDb25zdGFudFVuaW9uICZyaHMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFREaWFnbm9zdGljcyAqZGlhZywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbGluZSkKK3sKKyAgICBU
Q29uc3RhbnRVbmlvbiByZXR1cm5WYWx1ZTsKKyAgICBBU1NFUlQobGhzLnR5cGUgPT0gcmhzLnR5
cGUpOworICAgIHN3aXRjaCAobGhzLnR5cGUpCisgICAgeworICAgICAgICBjYXNlIEVidEludDoK
KyAgICAgICAgICAgIHJldHVyblZhbHVlLnNldElDb25zdChnbDo6V3JhcHBpbmdTdW08aW50Pihs
aHMuaUNvbnN0LCByaHMuaUNvbnN0KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBFYnRVSW50OgorICAgICAgICAgICAgcmV0dXJuVmFsdWUuc2V0VUNvbnN0KGdsOjpXcmFwcGlu
Z1N1bTx1bnNpZ25lZCBpbnQ+KGxocy51Q29uc3QsIHJocy51Q29uc3QpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEVidEZsb2F0OgorICAgICAgICAgICAgcmV0dXJuVmFsdWUu
c2V0RkNvbnN0KENoZWNrZWRTdW08ZmxvYXQ+KGxocy5mQ29uc3QsIHJocy5mQ29uc3QsIGRpYWcs
IGxpbmUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisK
Ky8vIHN0YXRpYworVENvbnN0YW50VW5pb24gVENvbnN0YW50VW5pb246OnN1Yihjb25zdCBUQ29u
c3RhbnRVbmlvbiAmbGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUQ29uc3RhbnRVbmlvbiAmcmhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBURGlhZ25vc3RpY3MgKmRpYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpCit7CisgICAgVENvbnN0YW50VW5pb24gcmV0dXJuVmFs
dWU7CisgICAgQVNTRVJUKGxocy50eXBlID09IHJocy50eXBlKTsKKyAgICBzd2l0Y2ggKGxocy50
eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBFYnRJbnQ6CisgICAgICAgICAgICByZXR1cm5WYWx1
ZS5zZXRJQ29uc3QoZ2w6OldyYXBwaW5nRGlmZjxpbnQ+KGxocy5pQ29uc3QsIHJocy5pQ29uc3Qp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVidFVJbnQ6CisgICAgICAgICAg
ICByZXR1cm5WYWx1ZS5zZXRVQ29uc3QoZ2w6OldyYXBwaW5nRGlmZjx1bnNpZ25lZCBpbnQ+KGxo
cy51Q29uc3QsIHJocy51Q29uc3QpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEVidEZsb2F0OgorICAgICAgICAgICAgcmV0dXJuVmFsdWUuc2V0RkNvbnN0KENoZWNrZWREaWZm
PGZsb2F0PihsaHMuZkNvbnN0LCByaHMuZkNvbnN0LCBkaWFnLCBsaW5lKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgfQorCisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCisvLyBzdGF0aWMKK1RDb25zdGFu
dFVuaW9uIFRDb25zdGFudFVuaW9uOjptdWwoY29uc3QgVENvbnN0YW50VW5pb24gJmxocywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVENvbnN0YW50VW5pb24gJnJo
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVERpYWdub3N0aWNzICpkaWFn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZs
aW5lKQoreworICAgIFRDb25zdGFudFVuaW9uIHJldHVyblZhbHVlOworICAgIEFTU0VSVChsaHMu
dHlwZSA9PSByaHMudHlwZSk7CisgICAgc3dpdGNoIChsaHMudHlwZSkKKyAgICB7CisgICAgICAg
IGNhc2UgRWJ0SW50OgorICAgICAgICAgICAgcmV0dXJuVmFsdWUuc2V0SUNvbnN0KGdsOjpXcmFw
cGluZ011bChsaHMuaUNvbnN0LCByaHMuaUNvbnN0KSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBFYnRVSW50OgorICAgICAgICAgICAgLy8gVW5zaWduZWQgaW50ZWdlciBtYXRo
IGluIEMrKyBpcyBkZWZpbmVkIHRvIGJlIGRvbmUgaW4gbW9kdWxvIDJebiwgc28gd2UgcmVseSBv
biB0aGF0CisgICAgICAgICAgICAvLyB0byBpbXBsZW1lbnQgd3JhcHBpbmcgbXVsdGlwbGljYXRp
b24uCisgICAgICAgICAgICByZXR1cm5WYWx1ZS5zZXRVQ29uc3QobGhzLnVDb25zdCAqIHJocy51
Q29uc3QpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CisgICAg
ICAgICAgICByZXR1cm5WYWx1ZS5zZXRGQ29uc3QoQ2hlY2tlZE11bDxmbG9hdD4obGhzLmZDb25z
dCwgcmhzLmZDb25zdCwgZGlhZywgbGluZSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgIH0KKworICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKK30KKworVENvbnN0YW50VW5pb24gVENvbnN0YW50VW5pb246Om9wZXJh
dG9yJShjb25zdCBUQ29uc3RhbnRVbmlvbiAmY29uc3RhbnQpIGNvbnN0Cit7CisgICAgVENvbnN0
YW50VW5pb24gcmV0dXJuVmFsdWU7CisgICAgQVNTRVJUKHR5cGUgPT0gY29uc3RhbnQudHlwZSk7
CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBFYnRJbnQ6CisgICAgICAg
ICAgICByZXR1cm5WYWx1ZS5zZXRJQ29uc3QoaUNvbnN0ICUgY29uc3RhbnQuaUNvbnN0KTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVidFVJbnQ6CisgICAgICAgICAgICByZXR1
cm5WYWx1ZS5zZXRVQ29uc3QodUNvbnN0ICUgY29uc3RhbnQudUNvbnN0KTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKKy8vIHN0YXRpYworVENvbnN0YW50
VW5pb24gVENvbnN0YW50VW5pb246OnJzaGlmdChjb25zdCBUQ29uc3RhbnRVbmlvbiAmbGhzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUQ29uc3RhbnRVbmlv
biAmcmhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURGlhZ25vc3Rp
Y3MgKmRpYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRT
b3VyY2VMb2MgJmxpbmUpCit7CisgICAgVENvbnN0YW50VW5pb24gcmV0dXJuVmFsdWU7CisgICAg
QVNTRVJUKGxocy50eXBlID09IEVidEludCB8fCBsaHMudHlwZSA9PSBFYnRVSW50KTsKKyAgICBB
U1NFUlQocmhzLnR5cGUgPT0gRWJ0SW50IHx8IHJocy50eXBlID09IEVidFVJbnQpOworICAgIGlm
ICgocmhzLnR5cGUgPT0gRWJ0SW50ICYmIChyaHMuaUNvbnN0IDwgMCB8fCByaHMuaUNvbnN0ID4g
MzEpKSB8fAorICAgICAgICAocmhzLnR5cGUgPT0gRWJ0VUludCAmJiByaHMudUNvbnN0ID4gMzF1
KSkKKyAgICB7CisgICAgICAgIGRpYWctPmVycm9yKGxpbmUsICJVbmRlZmluZWQgc2hpZnQgKG9w
ZXJhbmQgb3V0IG9mIHJhbmdlKSIsICI+PiIsICIiKTsKKyAgICAgICAgc3dpdGNoIChsaHMudHlw
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CisgICAgICAgICAgICAgICAg
cmV0dXJuVmFsdWUuc2V0SUNvbnN0KDApOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBFYnRVSW50OgorICAgICAgICAgICAgICAgIHJldHVyblZhbHVlLnNldFVDb25z
dCgwdSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJl
dHVyblZhbHVlOworICAgIH0KKworICAgIHN3aXRjaCAobGhzLnR5cGUpCisgICAgeworICAgICAg
ICBjYXNlIEVidEludDoKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgaW50IHNoaWZ0
T2Zmc2V0ID0gMDsKKyAgICAgICAgICAgIHN3aXRjaCAocmhzLnR5cGUpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CisgICAgICAgICAgICAgICAgICAgIHNoaWZ0
T2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihyaHMuaUNvbnN0KTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBFYnRVSW50OgorICAgICAg
ICAgICAgICAgICAgICBzaGlmdE9mZnNldCA9IHJocy51Q29uc3Q7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc2hpZnRPZmZz
ZXQgPiAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIEVTU0wgMy4wMC42IHNl
Y3Rpb24gNS45OiAiSWYgRTEgaXMgYSBzaWduZWQgaW50ZWdlciwgdGhlIHJpZ2h0LXNoaWZ0IHdp
bGwgZXh0ZW5kCisgICAgICAgICAgICAgICAgLy8gdGhlIHNpZ24gYml0LiIgSW4gQysrIHNoaWZ0
aW5nIG5lZ2F0aXZlIGludGVnZXJzIGlzIHVuZGVmaW5lZCwgc28gd2UgaW1wbGVtZW50CisgICAg
ICAgICAgICAgICAgLy8gZXh0ZW5kaW5nIHRoZSBzaWduIGJpdCBtYW51YWxseS4KKyAgICAgICAg
ICAgICAgICBib29sIGV4dGVuZFNpZ25CaXQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpbnQg
bGhzU2FmZSAgICAgICAgPSBsaHMuaUNvbnN0OworICAgICAgICAgICAgICAgIGlmIChsaHNTYWZl
IDwgMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGV4dGVuZFNpZ25C
aXQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAvLyBDbGVhciB0aGUgc2lnbiBiaXQgc28g
dGhhdCBiaXRzaGlmdCByaWdodCBpcyBkZWZpbmVkIGluIEMrKy4KKyAgICAgICAgICAgICAgICAg
ICAgbGhzU2FmZSAmPSAweDdmZmZmZmZmOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQobGhz
U2FmZSA+IDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm5WYWx1
ZS5zZXRJQ29uc3QobGhzU2FmZSA+PiBzaGlmdE9mZnNldCk7CisKKyAgICAgICAgICAgICAgICAv
LyBNYW51YWxseSBmaWxsIGluIHRoZSBleHRlbmRlZCBzaWduIGJpdCBpZiBuZWNlc3NhcnkuCisg
ICAgICAgICAgICAgICAgaWYgKGV4dGVuZFNpZ25CaXQpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBpbnQgZXh0ZW5kZWRTaWduQml0ID0gc3RhdGljX2Nhc3Q8aW50Pigw
eGZmZmZmZmZmdSA8PCAoMzEgLSBzaGlmdE9mZnNldCkpOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm5WYWx1ZS5zZXRJQ29uc3QocmV0dXJuVmFsdWUuZ2V0SUNvbnN0KCkgfCBleHRlbmRlZFNp
Z25CaXQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZS5zZXRJQ29uc3Qo
cmhzLmlDb25zdCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIEVidFVJbnQ6CisgICAgICAgICAgICBzd2l0Y2ggKHJocy50eXBlKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm5WYWx1ZS5zZXRVQ29uc3QobGhzLnVDb25zdCA+PiByaHMuaUNvbnN0KTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBFYnRVSW50
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZS5zZXRVQ29uc3QobGhzLnVDb25zdCA+
PiByaHMudUNvbnN0KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOworICAgIH0KKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKKy8v
IHN0YXRpYworVENvbnN0YW50VW5pb24gVENvbnN0YW50VW5pb246OmxzaGlmdChjb25zdCBUQ29u
c3RhbnRVbmlvbiAmbGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUQ29uc3RhbnRVbmlvbiAmcmhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBURGlhZ25vc3RpY3MgKmRpYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpCit7CisgICAgVENvbnN0YW50VW5pb24g
cmV0dXJuVmFsdWU7CisgICAgQVNTRVJUKGxocy50eXBlID09IEVidEludCB8fCBsaHMudHlwZSA9
PSBFYnRVSW50KTsKKyAgICBBU1NFUlQocmhzLnR5cGUgPT0gRWJ0SW50IHx8IHJocy50eXBlID09
IEVidFVJbnQpOworICAgIGlmICgocmhzLnR5cGUgPT0gRWJ0SW50ICYmIChyaHMuaUNvbnN0IDwg
MCB8fCByaHMuaUNvbnN0ID4gMzEpKSB8fAorICAgICAgICAocmhzLnR5cGUgPT0gRWJ0VUludCAm
JiByaHMudUNvbnN0ID4gMzF1KSkKKyAgICB7CisgICAgICAgIGRpYWctPmVycm9yKGxpbmUsICJV
bmRlZmluZWQgc2hpZnQgKG9wZXJhbmQgb3V0IG9mIHJhbmdlKSIsICI8PCIsICIiKTsKKyAgICAg
ICAgc3dpdGNoIChsaHMudHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSBFYnRJbnQ6
CisgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUuc2V0SUNvbnN0KDApOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFYnRVSW50OgorICAgICAgICAgICAgICAgIHJl
dHVyblZhbHVlLnNldFVDb25zdCgwdSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIH0KKworICAgIHN3aXRjaCAobGhzLnR5
cGUpCisgICAgeworICAgICAgICBjYXNlIEVidEludDoKKyAgICAgICAgICAgIHN3aXRjaCAocmhz
LnR5cGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gQ2FzdCB0byB1bnNpZ25l
ZCBpbnRlZ2VyIGJlZm9yZSBzaGlmdGluZywgc2luY2UgRVNTTCAzLjAwLjYgc2VjdGlvbiA1Ljkg
c2F5cyB0aGF0CisgICAgICAgICAgICAgICAgLy8gbGhzIGlzICJpbnRlcnByZXRlZCBhcyBhIGJp
dCBwYXR0ZXJuIi4gVGhpcyBhbHNvIGF2b2lkcyB0aGUgcG9zc2liaWxpdHkgb2Ygc2lnbmVkCisg
ICAgICAgICAgICAgICAgLy8gaW50ZWdlciBvdmVyZmxvdyBvciB1bmRlZmluZWQgc2hpZnQgb2Yg
YSBuZWdhdGl2ZSBpbnRlZ2VyLgorICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm5WYWx1ZS5zZXRJQ29uc3QoCisgICAgICAgICAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxpbnQ+KHN0YXRpY19jYXN0PHVpbnQzMl90PihsaHMuaUNvbnN0KSA8
PCByaHMuaUNvbnN0KSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgRWJ0VUludDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUuc2V0SUNv
bnN0KAorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihzdGF0aWNfY2Fz
dDx1aW50MzJfdD4obGhzLmlDb25zdCkgPDwgcmhzLnVDb25zdCkpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBFYnRVSW50OgorICAgICAgICAgICAgc3dpdGNoIChyaHMudHlwZSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEVidEludDoKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuVmFsdWUuc2V0VUNvbnN0KGxocy51Q29uc3QgPDwgcmhzLmlDb25zdCk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRWJ0VUludDoKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUuc2V0VUNvbnN0KGxocy51Q29uc3QgPDwgcmhz
LnVDb25zdCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5S
RUFDSEFCTEUoKTsKKyAgICB9CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitUQ29uc3Rh
bnRVbmlvbiBUQ29uc3RhbnRVbmlvbjo6b3BlcmF0b3ImKGNvbnN0IFRDb25zdGFudFVuaW9uICZj
b25zdGFudCkgY29uc3QKK3sKKyAgICBUQ29uc3RhbnRVbmlvbiByZXR1cm5WYWx1ZTsKKyAgICBB
U1NFUlQoY29uc3RhbnQudHlwZSA9PSBFYnRJbnQgfHwgY29uc3RhbnQudHlwZSA9PSBFYnRVSW50
KTsKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEVidEludDoKKyAgICAg
ICAgICAgIHJldHVyblZhbHVlLnNldElDb25zdChpQ29uc3QgJiBjb25zdGFudC5pQ29uc3QpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRWJ0VUludDoKKyAgICAgICAgICAgIHJl
dHVyblZhbHVlLnNldFVDb25zdCh1Q29uc3QgJiBjb25zdGFudC51Q29uc3QpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgIH0KKworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworVENvbnN0YW50VW5pb24gVENv
bnN0YW50VW5pb246Om9wZXJhdG9yfChjb25zdCBUQ29uc3RhbnRVbmlvbiAmY29uc3RhbnQpIGNv
bnN0Cit7CisgICAgVENvbnN0YW50VW5pb24gcmV0dXJuVmFsdWU7CisgICAgQVNTRVJUKHR5cGUg
PT0gY29uc3RhbnQudHlwZSk7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2Fz
ZSBFYnRJbnQ6CisgICAgICAgICAgICByZXR1cm5WYWx1ZS5zZXRJQ29uc3QoaUNvbnN0IHwgY29u
c3RhbnQuaUNvbnN0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVidFVJbnQ6
CisgICAgICAgICAgICByZXR1cm5WYWx1ZS5zZXRVQ29uc3QodUNvbnN0IHwgY29uc3RhbnQudUNv
bnN0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
VU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK1RD
b25zdGFudFVuaW9uIFRDb25zdGFudFVuaW9uOjpvcGVyYXRvcl4oY29uc3QgVENvbnN0YW50VW5p
b24gJmNvbnN0YW50KSBjb25zdAoreworICAgIFRDb25zdGFudFVuaW9uIHJldHVyblZhbHVlOwor
ICAgIEFTU0VSVCh0eXBlID09IGNvbnN0YW50LnR5cGUpOworICAgIHN3aXRjaCAodHlwZSkKKyAg
ICB7CisgICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAgICAgICAgcmV0dXJuVmFsdWUuc2V0SUNv
bnN0KGlDb25zdCBeIGNvbnN0YW50LmlDb25zdCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBFYnRVSW50OgorICAgICAgICAgICAgcmV0dXJuVmFsdWUuc2V0VUNvbnN0KHVDb25z
dCBeIGNvbnN0YW50LnVDb25zdCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0dXJuIHJldHVy
blZhbHVlOworfQorCitUQ29uc3RhbnRVbmlvbiBUQ29uc3RhbnRVbmlvbjo6b3BlcmF0b3ImJihj
b25zdCBUQ29uc3RhbnRVbmlvbiAmY29uc3RhbnQpIGNvbnN0Cit7CisgICAgVENvbnN0YW50VW5p
b24gcmV0dXJuVmFsdWU7CisgICAgQVNTRVJUKHR5cGUgPT0gY29uc3RhbnQudHlwZSk7CisgICAg
c3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBFYnRCb29sOgorICAgICAgICAgICAg
cmV0dXJuVmFsdWUuc2V0QkNvbnN0KGJDb25zdCAmJiBjb25zdGFudC5iQ29uc3QpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OworICAgIH0KKworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworVENvbnN0YW50VW5pb24g
VENvbnN0YW50VW5pb246Om9wZXJhdG9yfHwoY29uc3QgVENvbnN0YW50VW5pb24gJmNvbnN0YW50
KSBjb25zdAoreworICAgIFRDb25zdGFudFVuaW9uIHJldHVyblZhbHVlOworICAgIEFTU0VSVCh0
eXBlID09IGNvbnN0YW50LnR5cGUpOworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAg
IGNhc2UgRWJ0Qm9vbDoKKyAgICAgICAgICAgIHJldHVyblZhbHVlLnNldEJDb25zdChiQ29uc3Qg
fHwgY29uc3RhbnQuYkNvbnN0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0dXJu
VmFsdWU7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9Db25zdGFudFVuaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29uc3RhbnRVbmlvbi5oCShyZXZpc2lvbiAy
MDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9Db25zdGFudFVuaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTksNzggKzksMTkgQEAKIAogI2lu
Y2x1ZGUgPGFzc2VydC5oPgogCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9Db21tb24u
aCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0Jhc2VUeXBlcy5oIgogCi1jbGFzcyBU
Q29uc3RhbnRVbmlvbiB7Ci1wdWJsaWM6CitjbGFzcyBURGlhZ25vc3RpY3M7CisKK2NsYXNzIFRD
b25zdGFudFVuaW9uCit7CisgIHB1YmxpYzoKICAgICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRF
KCk7Ci0gICAgVENvbnN0YW50VW5pb24oKQotICAgIHsKLSAgICAgICAgaUNvbnN0ID0gMDsKLSAg
ICAgICAgdHlwZSA9IEVidFZvaWQ7Ci0gICAgfQorICAgIFRDb25zdGFudFVuaW9uKCk7CiAKLSAg
ICBib29sIGNhc3QoVEJhc2ljVHlwZSBuZXdUeXBlLCBjb25zdCBUQ29uc3RhbnRVbmlvbiAmY29u
c3RhbnQpCi0gICAgewotICAgICAgICBzd2l0Y2ggKG5ld1R5cGUpCi0gICAgICAgIHsKLSAgICAg
ICAgICBjYXNlIEVidEZsb2F0OgotICAgICAgICAgICAgc3dpdGNoIChjb25zdGFudC50eXBlKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICBjYXNlIEVidEludDogICBzZXRGQ29uc3Qoc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGNvbnN0YW50LmdldElDb25zdCgpKSk7IGJyZWFrOwotICAgICAgICAg
ICAgICBjYXNlIEVidFVJbnQ6ICBzZXRGQ29uc3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbnN0YW50
LmdldFVDb25zdCgpKSk7IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6ICBzZXRG
Q29uc3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbnN0YW50LmdldEJDb25zdCgpKSk7IGJyZWFrOwot
ICAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OiBzZXRGQ29uc3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+
KGNvbnN0YW50LmdldEZDb25zdCgpKSk7IGJyZWFrOwotICAgICAgICAgICAgICBkZWZhdWx0OiAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICBjYXNlIEVidEludDoKLSAgICAgICAgICAgIHN3aXRjaCAoY29uc3RhbnQudHlwZSkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6ICAgc2V0SUNvbnN0KHN0
YXRpY19jYXN0PGludD4oY29uc3RhbnQuZ2V0SUNvbnN0KCkpKTsgYnJlYWs7Ci0gICAgICAgICAg
ICAgIGNhc2UgRWJ0VUludDogIHNldElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KGNvbnN0YW50Lmdl
dFVDb25zdCgpKSk7IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6ICBzZXRJQ29u
c3Qoc3RhdGljX2Nhc3Q8aW50Pihjb25zdGFudC5nZXRCQ29uc3QoKSkpOyBicmVhazsKLSAgICAg
ICAgICAgICAgY2FzZSBFYnRGbG9hdDogc2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4oY29uc3Rh
bnQuZ2V0RkNvbnN0KCkpKTsgYnJlYWs7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6ICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
IGNhc2UgRWJ0VUludDoKLSAgICAgICAgICAgIHN3aXRjaCAoY29uc3RhbnQudHlwZSkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6ICAgc2V0VUNvbnN0KHN0YXRpY19j
YXN0PHVuc2lnbmVkIGludD4oY29uc3RhbnQuZ2V0SUNvbnN0KCkpKTsgYnJlYWs7Ci0gICAgICAg
ICAgICAgIGNhc2UgRWJ0VUludDogIHNldFVDb25zdChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+
KGNvbnN0YW50LmdldFVDb25zdCgpKSk7IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidEJv
b2w6ICBzZXRVQ29uc3Qoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihjb25zdGFudC5nZXRCQ29u
c3QoKSkpOyBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDogc2V0VUNvbnN0KHN0
YXRpY19jYXN0PHVuc2lnbmVkIGludD4oY29uc3RhbnQuZ2V0RkNvbnN0KCkpKTsgYnJlYWs7Ci0g
ICAgICAgICAgICAgIGRlZmF1bHQ6ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKLSAgICAgICAgICAg
IHN3aXRjaCAoY29uc3RhbnQudHlwZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2Fz
ZSBFYnRJbnQ6ICAgc2V0QkNvbnN0KGNvbnN0YW50LmdldElDb25zdCgpICE9IDApOyAgICBicmVh
azsKLSAgICAgICAgICAgICAgY2FzZSBFYnRVSW50OiAgc2V0QkNvbnN0KGNvbnN0YW50LmdldFVD
b25zdCgpICE9IDApOyAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRCb29sOiAgc2V0
QkNvbnN0KGNvbnN0YW50LmdldEJDb25zdCgpKTsgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgY2FzZSBFYnRGbG9hdDogc2V0QkNvbnN0KGNvbnN0YW50LmdldEZDb25zdCgpICE9IDAuMGYp
OyBicmVhazsKLSAgICAgICAgICAgICAgZGVmYXVsdDogICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBFYnRTdHJ1Y3Q6
ICAgIC8vIFN0cnVjdCBmaWVsZHMgZG9uJ3QgZ2V0IGNhc3QKLSAgICAgICAgICAgIHN3aXRjaCAo
Y29uc3RhbnQudHlwZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6
ICAgc2V0SUNvbnN0KGNvbnN0YW50LmdldElDb25zdCgpKTsgYnJlYWs7Ci0gICAgICAgICAgICAg
IGNhc2UgRWJ0VUludDogIHNldFVDb25zdChjb25zdGFudC5nZXRVQ29uc3QoKSk7IGJyZWFrOwot
ICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6ICBzZXRCQ29uc3QoY29uc3RhbnQuZ2V0QkNvbnN0
KCkpOyBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDogc2V0RkNvbnN0KGNvbnN0
YW50LmdldEZDb25zdCgpKTsgYnJlYWs7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6ICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KKyAgICBib29s
IGNhc3QoVEJhc2ljVHlwZSBuZXdUeXBlLCBjb25zdCBUQ29uc3RhbnRVbmlvbiAmY29uc3RhbnQp
OwogCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQogICAgIHZvaWQgc2V0SUNvbnN0KGlu
dCBpKSB7aUNvbnN0ID0gaTsgdHlwZSA9IEVidEludDsgfQogICAgIHZvaWQgc2V0VUNvbnN0KHVu
c2lnbmVkIGludCB1KSB7IHVDb25zdCA9IHU7IHR5cGUgPSBFYnRVSW50OyB9CiAgICAgdm9pZCBz
ZXRGQ29uc3QoZmxvYXQgZikge2ZDb25zdCA9IGY7IHR5cGUgPSBFYnRGbG9hdDsgfQpAQCAtOTEs
MjU3ICszMiw1NCBAQAogICAgIGZsb2F0IGdldEZDb25zdCgpIGNvbnN0IHsgcmV0dXJuIGZDb25z
dDsgfQogICAgIGJvb2wgZ2V0QkNvbnN0KCkgY29uc3QgeyByZXR1cm4gYkNvbnN0OyB9CiAKLSAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgaW50IGkpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gaSA9PSBpQ29uc3Q7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBpbnQgaSkg
Y29uc3Q7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHVuc2lnbmVkIGludCB1KSBjb25zdDsK
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgZmxvYXQgZikgY29uc3Q7CisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IGJvb2wgYikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRD
b25zdGFudFVuaW9uICZjb25zdGFudCkgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IGludCBpKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgdW5zaWduZWQgaW50IHUp
IGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBmbG9hdCBmKSBjb25zdDsKKyAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgYm9vbCBiKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgVENvbnN0YW50VW5pb24gJmNvbnN0YW50KSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9y
Pihjb25zdCBUQ29uc3RhbnRVbmlvbiAmY29uc3RhbnQpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0
b3I8KGNvbnN0IFRDb25zdGFudFVuaW9uICZjb25zdGFudCkgY29uc3Q7CisgICAgc3RhdGljIFRD
b25zdGFudFVuaW9uIGFkZChjb25zdCBUQ29uc3RhbnRVbmlvbiAmbGhzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVENvbnN0YW50VW5pb24gJnJocywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFREaWFnbm9zdGljcyAqZGlhZywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpOworICAgIHN0YXRpYyBUQ29uc3Rh
bnRVbmlvbiBzdWIoY29uc3QgVENvbnN0YW50VW5pb24gJmxocywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRDb25zdGFudFVuaW9uICZyaHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBURGlhZ25vc3RpY3MgKmRpYWcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUU291cmNlTG9jICZsaW5lKTsKKyAgICBzdGF0aWMgVENvbnN0YW50VW5p
b24gbXVsKGNvbnN0IFRDb25zdGFudFVuaW9uICZsaHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUQ29uc3RhbnRVbmlvbiAmcmhzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVERpYWdub3N0aWNzICpkaWFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVFNvdXJjZUxvYyAmbGluZSk7CisgICAgVENvbnN0YW50VW5pb24gb3BlcmF0b3Il
KGNvbnN0IFRDb25zdGFudFVuaW9uICZjb25zdGFudCkgY29uc3Q7CisgICAgc3RhdGljIFRDb25z
dGFudFVuaW9uIHJzaGlmdChjb25zdCBUQ29uc3RhbnRVbmlvbiAmbGhzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVENvbnN0YW50VW5pb24gJnJocywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFREaWFnbm9zdGljcyAqZGlhZywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpOworICAgIHN0YXRp
YyBUQ29uc3RhbnRVbmlvbiBsc2hpZnQoY29uc3QgVENvbnN0YW50VW5pb24gJmxocywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRDb25zdGFudFVuaW9uICZyaHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURGlhZ25vc3RpY3MgKmRpYWcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsaW5lKTsKKyAg
ICBUQ29uc3RhbnRVbmlvbiBvcGVyYXRvciYoY29uc3QgVENvbnN0YW50VW5pb24gJmNvbnN0YW50
KSBjb25zdDsKKyAgICBUQ29uc3RhbnRVbmlvbiBvcGVyYXRvcnwoY29uc3QgVENvbnN0YW50VW5p
b24gJmNvbnN0YW50KSBjb25zdDsKKyAgICBUQ29uc3RhbnRVbmlvbiBvcGVyYXRvcl4oY29uc3Qg
VENvbnN0YW50VW5pb24gJmNvbnN0YW50KSBjb25zdDsKKyAgICBUQ29uc3RhbnRVbmlvbiBvcGVy
YXRvciYmKGNvbnN0IFRDb25zdGFudFVuaW9uICZjb25zdGFudCkgY29uc3Q7CisgICAgVENvbnN0
YW50VW5pb24gb3BlcmF0b3J8fChjb25zdCBUQ29uc3RhbnRVbmlvbiAmY29uc3RhbnQpIGNvbnN0
OwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHVuc2lnbmVkIGludCB1KSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIHUgPT0gdUNvbnN0OwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBmbG9hdCBmKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGYgPT0gZkNv
bnN0OwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBib29sIGIpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gYiA9PSBiQ29uc3Q7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFRDb25zdGFudFVuaW9uJiBjb25zdGFudCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIGlmIChjb25zdGFudC50eXBlICE9IHR5cGUpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgRWJ0SW50OgotICAgICAg
ICAgICAgcmV0dXJuIGNvbnN0YW50LmlDb25zdCA9PSBpQ29uc3Q7Ci0gICAgICAgIGNhc2UgRWJ0
VUludDoKLSAgICAgICAgICAgIHJldHVybiBjb25zdGFudC51Q29uc3QgPT0gdUNvbnN0OwotICAg
ICAgICBjYXNlIEVidEZsb2F0OgotICAgICAgICAgICAgcmV0dXJuIGNvbnN0YW50LmZDb25zdCA9
PSBmQ29uc3Q7Ci0gICAgICAgIGNhc2UgRWJ0Qm9vbDoKLSAgICAgICAgICAgIHJldHVybiBjb25z
dGFudC5iQ29uc3QgPT0gYkNvbnN0OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IGludCBpKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICFvcGVyYXRvcj09KGkpOwotICAg
IH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCB1bnNpZ25lZCBpbnQgdSkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiAhb3BlcmF0b3I9PSh1KTsKLSAgICB9Ci0KLSAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgZmxvYXQgZikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhb3Bl
cmF0b3I9PShmKTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgYm9vbCBiKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICFvcGVyYXRvcj09KGIpOwotICAgIH0KLQotICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBUQ29uc3RhbnRVbmlvbiYgY29uc3RhbnQpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gIW9wZXJhdG9yPT0oY29uc3RhbnQpOwotICAgIH0KLQotICAg
IGJvb2wgb3BlcmF0b3I+KGNvbnN0IFRDb25zdGFudFVuaW9uJiBjb25zdGFudCkgY29uc3QKLSAg
ICB7IAotICAgICAgICBhc3NlcnQodHlwZSA9PSBjb25zdGFudC50eXBlKTsKLSAgICAgICAgc3dp
dGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgRWJ0SW50OgotICAgICAgICAgICAgcmV0dXJuIGlD
b25zdCA+IGNvbnN0YW50LmlDb25zdDsKLSAgICAgICAgY2FzZSBFYnRVSW50OgotICAgICAgICAg
ICAgcmV0dXJuIHVDb25zdCA+IGNvbnN0YW50LnVDb25zdDsKLSAgICAgICAgY2FzZSBFYnRGbG9h
dDoKLSAgICAgICAgICAgIHJldHVybiBmQ29uc3QgPiBjb25zdGFudC5mQ29uc3Q7Ci0gICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAgLy8gSW52YWxpZCBvcGVyYXRp
b24sIGhhbmRsZWQgYXQgc2VtYW50aWMgYW5hbHlzaXMKLSAgICAgICAgfQotICAgIH0KLQotICAg
IGJvb2wgb3BlcmF0b3I8KGNvbnN0IFRDb25zdGFudFVuaW9uJiBjb25zdGFudCkgY29uc3QKLSAg
ICB7IAotICAgICAgICBhc3NlcnQodHlwZSA9PSBjb25zdGFudC50eXBlKTsKLSAgICAgICAgc3dp
dGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgRWJ0SW50OgotICAgICAgICAgICAgcmV0dXJuIGlD
b25zdCA8IGNvbnN0YW50LmlDb25zdDsKLSAgICAgICAgY2FzZSBFYnRVSW50OgotICAgICAgICAg
ICAgcmV0dXJuIHVDb25zdCA8IGNvbnN0YW50LnVDb25zdDsKLSAgICAgICAgY2FzZSBFYnRGbG9h
dDoKLSAgICAgICAgICAgIHJldHVybiBmQ29uc3QgPCBjb25zdGFudC5mQ29uc3Q7Ci0gICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAgLy8gSW52YWxpZCBvcGVyYXRp
b24sIGhhbmRsZWQgYXQgc2VtYW50aWMgYW5hbHlzaXMKLSAgICAgICAgfQotICAgIH0KLQotICAg
IFRDb25zdGFudFVuaW9uIG9wZXJhdG9yKyhjb25zdCBUQ29uc3RhbnRVbmlvbiYgY29uc3RhbnQp
IGNvbnN0Ci0gICAgeyAKLSAgICAgICAgVENvbnN0YW50VW5pb24gcmV0dXJuVmFsdWU7Ci0gICAg
ICAgIGFzc2VydCh0eXBlID09IGNvbnN0YW50LnR5cGUpOwotICAgICAgICBzd2l0Y2ggKHR5cGUp
IHsKLSAgICAgICAgY2FzZSBFYnRJbnQ6IHJldHVyblZhbHVlLnNldElDb25zdChpQ29uc3QgKyBj
b25zdGFudC5pQ29uc3QpOyBicmVhazsKLSAgICAgICAgY2FzZSBFYnRVSW50OiByZXR1cm5WYWx1
ZS5zZXRVQ29uc3QodUNvbnN0ICsgY29uc3RhbnQudUNvbnN0KTsgYnJlYWs7Ci0gICAgICAgIGNh
c2UgRWJ0RmxvYXQ6IHJldHVyblZhbHVlLnNldEZDb25zdChmQ29uc3QgKyBjb25zdGFudC5mQ29u
c3QpOyBicmVhazsKLSAgICAgICAgZGVmYXVsdDogYXNzZXJ0KGZhbHNlICYmICJEZWZhdWx0IG1p
c3NpbmciKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKLSAgICB9
Ci0KLSAgICBUQ29uc3RhbnRVbmlvbiBvcGVyYXRvci0oY29uc3QgVENvbnN0YW50VW5pb24mIGNv
bnN0YW50KSBjb25zdAotICAgIHsgCi0gICAgICAgIFRDb25zdGFudFVuaW9uIHJldHVyblZhbHVl
OwotICAgICAgICBhc3NlcnQodHlwZSA9PSBjb25zdGFudC50eXBlKTsKLSAgICAgICAgc3dpdGNo
ICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgRWJ0SW50OiByZXR1cm5WYWx1ZS5zZXRJQ29uc3QoaUNv
bnN0IC0gY29uc3RhbnQuaUNvbnN0KTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRWJ0VUludDogcmV0
dXJuVmFsdWUuc2V0VUNvbnN0KHVDb25zdCAtIGNvbnN0YW50LnVDb25zdCk7IGJyZWFrOwotICAg
ICAgICBjYXNlIEVidEZsb2F0OiByZXR1cm5WYWx1ZS5zZXRGQ29uc3QoZkNvbnN0IC0gY29uc3Rh
bnQuZkNvbnN0KTsgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6IGFzc2VydChmYWxzZSAmJiAiRGVm
YXVsdCBtaXNzaW5nIik7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7
Ci0gICAgfQotCi0gICAgVENvbnN0YW50VW5pb24gb3BlcmF0b3IqKGNvbnN0IFRDb25zdGFudFVu
aW9uJiBjb25zdGFudCkgY29uc3QKLSAgICB7IAotICAgICAgICBUQ29uc3RhbnRVbmlvbiByZXR1
cm5WYWx1ZTsKLSAgICAgICAgYXNzZXJ0KHR5cGUgPT0gY29uc3RhbnQudHlwZSk7Ci0gICAgICAg
IHN3aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIEVidEludDogcmV0dXJuVmFsdWUuc2V0SUNv
bnN0KGlDb25zdCAqIGNvbnN0YW50LmlDb25zdCk7IGJyZWFrOwotICAgICAgICBjYXNlIEVidFVJ
bnQ6IHJldHVyblZhbHVlLnNldFVDb25zdCh1Q29uc3QgKiBjb25zdGFudC51Q29uc3QpOyBicmVh
azsKLSAgICAgICAgY2FzZSBFYnRGbG9hdDogcmV0dXJuVmFsdWUuc2V0RkNvbnN0KGZDb25zdCAq
IGNvbnN0YW50LmZDb25zdCk7IGJyZWFrOyAKLSAgICAgICAgZGVmYXVsdDogYXNzZXJ0KGZhbHNl
ICYmICJEZWZhdWx0IG1pc3NpbmciKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKLSAgICB9Ci0KLSAgICBUQ29uc3RhbnRVbmlvbiBvcGVyYXRvciUoY29uc3QgVENv
bnN0YW50VW5pb24mIGNvbnN0YW50KSBjb25zdAotICAgIHsgCi0gICAgICAgIFRDb25zdGFudFVu
aW9uIHJldHVyblZhbHVlOwotICAgICAgICBhc3NlcnQodHlwZSA9PSBjb25zdGFudC50eXBlKTsK
LSAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgRWJ0SW50OiByZXR1cm5WYWx1
ZS5zZXRJQ29uc3QoaUNvbnN0ICUgY29uc3RhbnQuaUNvbnN0KTsgYnJlYWs7Ci0gICAgICAgIGNh
c2UgRWJ0VUludDogcmV0dXJuVmFsdWUuc2V0VUNvbnN0KHVDb25zdCAlIGNvbnN0YW50LnVDb25z
dCk7IGJyZWFrOwotICAgICAgICBkZWZhdWx0OiAgICAgYXNzZXJ0KGZhbHNlICYmICJEZWZhdWx0
IG1pc3NpbmciKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKLSAg
ICB9Ci0KLSAgICBUQ29uc3RhbnRVbmlvbiBvcGVyYXRvcj4+KGNvbnN0IFRDb25zdGFudFVuaW9u
JiBjb25zdGFudCkgY29uc3QKLSAgICB7IAotICAgICAgICBUQ29uc3RhbnRVbmlvbiByZXR1cm5W
YWx1ZTsKLSAgICAgICAgYXNzZXJ0KHR5cGUgPT0gY29uc3RhbnQudHlwZSk7Ci0gICAgICAgIHN3
aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIEVidEludDogcmV0dXJuVmFsdWUuc2V0SUNvbnN0
KGlDb25zdCA+PiBjb25zdGFudC5pQ29uc3QpOyBicmVhazsKLSAgICAgICAgY2FzZSBFYnRVSW50
OiByZXR1cm5WYWx1ZS5zZXRVQ29uc3QodUNvbnN0ID4+IGNvbnN0YW50LnVDb25zdCk7IGJyZWFr
OwotICAgICAgICBkZWZhdWx0OiAgICAgYXNzZXJ0KGZhbHNlICYmICJEZWZhdWx0IG1pc3Npbmci
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKLSAgICB9Ci0KLSAg
ICBUQ29uc3RhbnRVbmlvbiBvcGVyYXRvcjw8KGNvbnN0IFRDb25zdGFudFVuaW9uJiBjb25zdGFu
dCkgY29uc3QKLSAgICB7IAotICAgICAgICBUQ29uc3RhbnRVbmlvbiByZXR1cm5WYWx1ZTsKLSAg
ICAgICAgLy8gVGhlIHNpZ25lZG5lc3Mgb2YgdGhlIHNlY29uZCBwYXJhbWV0ZXIgbWlnaHQgYmUg
ZGlmZmVyZW50LCBidXQgd2UKLSAgICAgICAgLy8gZG9uJ3QgY2FyZSwgc2luY2UgdGhlIHJlc3Vs
dCBpcyB1bmRlZmluZWQgaWYgdGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMKLSAgICAgICAgLy8gbmVn
YXRpdmUsIGFuZCBhbGlhc2luZyBzaG91bGQgbm90IGJlIGEgcHJvYmxlbSB3aXRoIHVuaW9ucy4K
LSAgICAgICAgYXNzZXJ0KGNvbnN0YW50LnR5cGUgPT0gRWJ0SW50IHx8IGNvbnN0YW50LnR5cGUg
PT0gRWJ0VUludCk7Ci0gICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIEVidElu
dDogcmV0dXJuVmFsdWUuc2V0SUNvbnN0KGlDb25zdCA8PCBjb25zdGFudC5pQ29uc3QpOyBicmVh
azsKLSAgICAgICAgY2FzZSBFYnRVSW50OiByZXR1cm5WYWx1ZS5zZXRVQ29uc3QodUNvbnN0IDw8
IGNvbnN0YW50LnVDb25zdCk7IGJyZWFrOwotICAgICAgICBkZWZhdWx0OiAgICAgYXNzZXJ0KGZh
bHNlICYmICJEZWZhdWx0IG1pc3NpbmciKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKLSAgICB9Ci0KLSAgICBUQ29uc3RhbnRVbmlvbiBvcGVyYXRvciYoY29uc3Qg
VENvbnN0YW50VW5pb24mIGNvbnN0YW50KSBjb25zdAotICAgIHsgCi0gICAgICAgIFRDb25zdGFu
dFVuaW9uIHJldHVyblZhbHVlOwotICAgICAgICBhc3NlcnQoY29uc3RhbnQudHlwZSA9PSBFYnRJ
bnQgfHwgY29uc3RhbnQudHlwZSA9PSBFYnRVSW50KTsKLSAgICAgICAgc3dpdGNoICh0eXBlKSB7
Ci0gICAgICAgIGNhc2UgRWJ0SW50OiAgcmV0dXJuVmFsdWUuc2V0SUNvbnN0KGlDb25zdCAmIGNv
bnN0YW50LmlDb25zdCk7IGJyZWFrOwotICAgICAgICBjYXNlIEVidFVJbnQ6ICByZXR1cm5WYWx1
ZS5zZXRVQ29uc3QodUNvbnN0ICYgY29uc3RhbnQudUNvbnN0KTsgYnJlYWs7Ci0gICAgICAgIGRl
ZmF1bHQ6ICAgICBhc3NlcnQoZmFsc2UgJiYgIkRlZmF1bHQgbWlzc2luZyIpOwotICAgICAgICB9
Ci0KLSAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOwotICAgIH0KLQotICAgIFRDb25zdGFudFVu
aW9uIG9wZXJhdG9yfChjb25zdCBUQ29uc3RhbnRVbmlvbiYgY29uc3RhbnQpIGNvbnN0Ci0gICAg
eyAKLSAgICAgICAgVENvbnN0YW50VW5pb24gcmV0dXJuVmFsdWU7Ci0gICAgICAgIGFzc2VydCh0
eXBlID09IGNvbnN0YW50LnR5cGUpOwotICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAg
Y2FzZSBFYnRJbnQ6ICByZXR1cm5WYWx1ZS5zZXRJQ29uc3QoaUNvbnN0IHwgY29uc3RhbnQuaUNv
bnN0KTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRWJ0VUludDogIHJldHVyblZhbHVlLnNldFVDb25z
dCh1Q29uc3QgfCBjb25zdGFudC51Q29uc3QpOyBicmVhazsKLSAgICAgICAgZGVmYXVsdDogICAg
IGFzc2VydChmYWxzZSAmJiAiRGVmYXVsdCBtaXNzaW5nIik7Ci0gICAgICAgIH0KLQotICAgICAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7Ci0gICAgfQotCi0gICAgVENvbnN0YW50VW5pb24gb3BlcmF0
b3JeKGNvbnN0IFRDb25zdGFudFVuaW9uJiBjb25zdGFudCkgY29uc3QKLSAgICB7IAotICAgICAg
ICBUQ29uc3RhbnRVbmlvbiByZXR1cm5WYWx1ZTsKLSAgICAgICAgYXNzZXJ0KHR5cGUgPT0gY29u
c3RhbnQudHlwZSk7Ci0gICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIEVidElu
dDogIHJldHVyblZhbHVlLnNldElDb25zdChpQ29uc3QgXiBjb25zdGFudC5pQ29uc3QpOyBicmVh
azsKLSAgICAgICAgY2FzZSBFYnRVSW50OiAgcmV0dXJuVmFsdWUuc2V0VUNvbnN0KHVDb25zdCBe
IGNvbnN0YW50LnVDb25zdCk7IGJyZWFrOwotICAgICAgICBkZWZhdWx0OiAgICAgYXNzZXJ0KGZh
bHNlICYmICJEZWZhdWx0IG1pc3NpbmciKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKLSAgICB9Ci0KLSAgICBUQ29uc3RhbnRVbmlvbiBvcGVyYXRvciYmKGNvbnN0
IFRDb25zdGFudFVuaW9uJiBjb25zdGFudCkgY29uc3QKLSAgICB7IAotICAgICAgICBUQ29uc3Rh
bnRVbmlvbiByZXR1cm5WYWx1ZTsKLSAgICAgICAgYXNzZXJ0KHR5cGUgPT0gY29uc3RhbnQudHlw
ZSk7Ci0gICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIEVidEJvb2w6IHJldHVy
blZhbHVlLnNldEJDb25zdChiQ29uc3QgJiYgY29uc3RhbnQuYkNvbnN0KTsgYnJlYWs7Ci0gICAg
ICAgIGRlZmF1bHQ6ICAgICBhc3NlcnQoZmFsc2UgJiYgIkRlZmF1bHQgbWlzc2luZyIpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOwotICAgIH0KLQotICAgIFRDb25z
dGFudFVuaW9uIG9wZXJhdG9yfHwoY29uc3QgVENvbnN0YW50VW5pb24mIGNvbnN0YW50KSBjb25z
dAotICAgIHsgCi0gICAgICAgIFRDb25zdGFudFVuaW9uIHJldHVyblZhbHVlOwotICAgICAgICBh
c3NlcnQodHlwZSA9PSBjb25zdGFudC50eXBlKTsKLSAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0g
ICAgICAgIGNhc2UgRWJ0Qm9vbDogcmV0dXJuVmFsdWUuc2V0QkNvbnN0KGJDb25zdCB8fCBjb25z
dGFudC5iQ29uc3QpOyBicmVhazsKLSAgICAgICAgZGVmYXVsdDogICAgIGFzc2VydChmYWxzZSAm
JiAiRGVmYXVsdCBtaXNzaW5nIik7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gcmV0dXJu
VmFsdWU7Ci0gICAgfQotCiAgICAgVEJhc2ljVHlwZSBnZXRUeXBlKCkgY29uc3QgeyByZXR1cm4g
dHlwZTsgfQotcHJpdmF0ZToKKyAgcHJpdmF0ZToKKyAgICB1bmlvbiB7CisgICAgICAgIGludCBp
Q29uc3Q7ICAgICAgICAgICAvLyB1c2VkIGZvciBpdmVjLCBzY2FsYXIgaW50cworICAgICAgICB1
bnNpZ25lZCBpbnQgdUNvbnN0OyAgLy8gdXNlZCBmb3IgdXZlYywgc2NhbGFyIHVpbnRzCisgICAg
ICAgIGJvb2wgYkNvbnN0OyAgICAgICAgICAvLyB1c2VkIGZvciBidmVjLCBzY2FsYXIgYm9vbHMK
KyAgICAgICAgZmxvYXQgZkNvbnN0OyAgICAgICAgIC8vIHVzZWQgZm9yIHZlYywgbWF0LCBzY2Fs
YXIgZmxvYXRzCisgICAgfTsKIAotICAgIHVuaW9uICB7Ci0gICAgICAgIGludCBpQ29uc3Q7ICAv
LyB1c2VkIGZvciBpdmVjLCBzY2FsYXIgaW50cwotICAgICAgICB1bnNpZ25lZCBpbnQgdUNvbnN0
OyAvLyB1c2VkIGZvciB1dmVjLCBzY2FsYXIgdWludHMKLSAgICAgICAgYm9vbCBiQ29uc3Q7IC8v
IHVzZWQgZm9yIGJ2ZWMsIHNjYWxhciBib29scwotICAgICAgICBmbG9hdCBmQ29uc3Q7ICAgLy8g
dXNlZCBmb3IgdmVjLCBtYXQsIHNjYWxhciBmbG9hdHMKLSAgICB9IDsKLQogICAgIFRCYXNpY1R5
cGUgdHlwZTsKIH07CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL0RlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9EZWZlckdsb2Jh
bEluaXRpYWxpemVycy5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0RlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTgsNDUgKzE4LDQ5IEBACiBuYW1lc3BhY2UKIHsKIAotdm9p
ZCBTZXRJbnRlcm5hbEZ1bmN0aW9uTmFtZShUSW50ZXJtQWdncmVnYXRlICpmdW5jdGlvbk5vZGUs
IGNvbnN0IGNoYXIgKm5hbWUpCit2b2lkIFNldEludGVybmFsRnVuY3Rpb25OYW1lKFRGdW5jdGlv
blN5bWJvbEluZm8gKmZ1bmN0aW9uSW5mbywgY29uc3QgY2hhciAqbmFtZSkKIHsKICAgICBUU3Ry
aW5nIG5hbWVTdHIobmFtZSk7CiAgICAgbmFtZVN0ciA9IFRGdW5jdGlvbjo6bWFuZ2xlTmFtZShu
YW1lU3RyKTsKICAgICBUTmFtZSBuYW1lT2JqKG5hbWVTdHIpOwogICAgIG5hbWVPYmouc2V0SW50
ZXJuYWwodHJ1ZSk7Ci0gICAgZnVuY3Rpb25Ob2RlLT5zZXROYW1lT2JqKG5hbWVPYmopOworICAg
IGZ1bmN0aW9uSW5mby0+c2V0TmFtZU9iaihuYW1lT2JqKTsKIH0KIAotVEludGVybUFnZ3JlZ2F0
ZSAqQ3JlYXRlRnVuY3Rpb25Qcm90b3R5cGVOb2RlKGNvbnN0IGNoYXIgKm5hbWUpCitUSW50ZXJt
QWdncmVnYXRlICpDcmVhdGVGdW5jdGlvblByb3RvdHlwZU5vZGUoY29uc3QgY2hhciAqbmFtZSwg
Y29uc3QgaW50IGZ1bmN0aW9uSWQpCiB7CiAgICAgVEludGVybUFnZ3JlZ2F0ZSAqZnVuY3Rpb25O
b2RlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoRU9wUHJvdG90eXBlKTsKIAotICAgIFNldEludGVy
bmFsRnVuY3Rpb25OYW1lKGZ1bmN0aW9uTm9kZSwgbmFtZSk7CisgICAgU2V0SW50ZXJuYWxGdW5j
dGlvbk5hbWUoZnVuY3Rpb25Ob2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKSwgbmFtZSk7CiAg
ICAgVFR5cGUgcmV0dXJuVHlwZShFYnRWb2lkKTsKICAgICBmdW5jdGlvbk5vZGUtPnNldFR5cGUo
cmV0dXJuVHlwZSk7CisgICAgZnVuY3Rpb25Ob2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+
c2V0SWQoZnVuY3Rpb25JZCk7CiAgICAgcmV0dXJuIGZ1bmN0aW9uTm9kZTsKIH0KIAotVEludGVy
bUFnZ3JlZ2F0ZSAqQ3JlYXRlRnVuY3Rpb25EZWZpbml0aW9uTm9kZShjb25zdCBjaGFyICpuYW1l
LCBUSW50ZXJtQWdncmVnYXRlICpmdW5jdGlvbkJvZHkpCitUSW50ZXJtRnVuY3Rpb25EZWZpbml0
aW9uICpDcmVhdGVGdW5jdGlvbkRlZmluaXRpb25Ob2RlKGNvbnN0IGNoYXIgKm5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRl
cm1CbG9jayAqZnVuY3Rpb25Cb2R5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgZnVuY3Rpb25JZCkKIHsKLSAgICBUSW50
ZXJtQWdncmVnYXRlICpmdW5jdGlvbk5vZGUgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZShFT3BGdW5j
dGlvbik7CisgICAgVFR5cGUgcmV0dXJuVHlwZShFYnRWb2lkKTsKICAgICBUSW50ZXJtQWdncmVn
YXRlICpwYXJhbXNOb2RlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoRU9wUGFyYW1ldGVycyk7Ci0g
ICAgZnVuY3Rpb25Ob2RlLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2socGFyYW1zTm9kZSk7Ci0g
ICAgZnVuY3Rpb25Ob2RlLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2soZnVuY3Rpb25Cb2R5KTsK
KyAgICBUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICpmdW5jdGlvbk5vZGUgPQorICAgICAgICBu
ZXcgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbihyZXR1cm5UeXBlLCBwYXJhbXNOb2RlLCBmdW5j
dGlvbkJvZHkpOwogCi0gICAgU2V0SW50ZXJuYWxGdW5jdGlvbk5hbWUoZnVuY3Rpb25Ob2RlLCBu
YW1lKTsKLSAgICBUVHlwZSByZXR1cm5UeXBlKEVidFZvaWQpOwotICAgIGZ1bmN0aW9uTm9kZS0+
c2V0VHlwZShyZXR1cm5UeXBlKTsKKyAgICBTZXRJbnRlcm5hbEZ1bmN0aW9uTmFtZShmdW5jdGlv
bk5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLCBuYW1lKTsKKyAgICBmdW5jdGlvbk5vZGUt
PmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5zZXRJZChmdW5jdGlvbklkKTsKICAgICByZXR1cm4g
ZnVuY3Rpb25Ob2RlOwogfQogCi1USW50ZXJtQWdncmVnYXRlICpDcmVhdGVGdW5jdGlvbkNhbGxO
b2RlKGNvbnN0IGNoYXIgKm5hbWUpCitUSW50ZXJtQWdncmVnYXRlICpDcmVhdGVGdW5jdGlvbkNh
bGxOb2RlKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGludCBmdW5jdGlvbklkKQogewogICAgIFRJ
bnRlcm1BZ2dyZWdhdGUgKmZ1bmN0aW9uTm9kZSA9IG5ldyBUSW50ZXJtQWdncmVnYXRlKEVPcEZ1
bmN0aW9uQ2FsbCk7CiAKLSAgICBTZXRJbnRlcm5hbEZ1bmN0aW9uTmFtZShmdW5jdGlvbk5vZGUs
IG5hbWUpOworICAgIGZ1bmN0aW9uTm9kZS0+c2V0VXNlckRlZmluZWQoKTsKKyAgICBTZXRJbnRl
cm5hbEZ1bmN0aW9uTmFtZShmdW5jdGlvbk5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLCBu
YW1lKTsKICAgICBUVHlwZSByZXR1cm5UeXBlKEVidFZvaWQpOwogICAgIGZ1bmN0aW9uTm9kZS0+
c2V0VHlwZShyZXR1cm5UeXBlKTsKKyAgICBmdW5jdGlvbk5vZGUtPmdldEZ1bmN0aW9uU3ltYm9s
SW5mbygpLT5zZXRJZChmdW5jdGlvbklkKTsKICAgICByZXR1cm4gZnVuY3Rpb25Ob2RlOwogfQog
CkBAIC02Nyw3ICs3MSw3IEBACiAKICAgICBib29sIHZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBU
SW50ZXJtQmluYXJ5ICpub2RlKSBvdmVycmlkZTsKIAotICAgIHZvaWQgaW5zZXJ0SW5pdEZ1bmN0
aW9uKFRJbnRlcm1Ob2RlICpyb290KTsKKyAgICB2b2lkIGluc2VydEluaXRGdW5jdGlvbihUSW50
ZXJtQmxvY2sgKnJvb3QpOwogCiAgIHByaXZhdGU6CiAgICAgVEludGVybVNlcXVlbmNlIG1EZWZl
cnJlZEluaXRpYWxpemVyczsKQEAgLTg2LDggKzkwLDkgQEAKICAgICAgICAgQVNTRVJUKHN5bWJv
bE5vZGUpOwogICAgICAgICBUSW50ZXJtVHlwZWQgKmV4cHJlc3Npb24gPSBub2RlLT5nZXRSaWdo
dCgpOwogCi0gICAgICAgIGlmIChzeW1ib2xOb2RlLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFHbG9i
YWwgJiYKLSAgICAgICAgICAgIChleHByZXNzaW9uLT5nZXRRdWFsaWZpZXIoKSAhPSBFdnFDb25z
dCB8fCBleHByZXNzaW9uLT5nZXRBc0NvbnN0YW50VW5pb24oKSA9PSBudWxscHRyKSkKKyAgICAg
ICAgaWYgKG1Jbkdsb2JhbFNjb3BlICYmIChleHByZXNzaW9uLT5nZXRRdWFsaWZpZXIoKSAhPSBF
dnFDb25zdCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChleHByZXNzaW9uLT5n
ZXRBc0NvbnN0YW50VW5pb24oKSA9PSBudWxscHRyICYmCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICFleHByZXNzaW9uLT5pc0NvbnN0cnVjdG9yV2l0aE9ubHlDb25zdGFudFVuaW9u
UGFyYW1ldGVycygpKSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIEZvciB2YXJpYWJsZXMg
d2hpY2ggYXJlIG5vdCBjb25zdGFudCwgZGVmZXIgdGhlaXIgcmVhbCBpbml0aWFsaXphdGlvbiB1
bnRpbAogICAgICAgICAgICAgLy8gYWZ0ZXIgd2UgaW5pdGlhbGl6ZSB1bmlmb3Jtcy4KQEAgLTk0
LDU5ICs5OSw3NyBAQAogICAgICAgICAgICAgLy8gRGVmZXJyYWwgaXMgZG9uZSBhbHNvIGluIGFu
eSBjYXNlcyB3aGVyZSB0aGUgdmFyaWFibGUgaGFzIG5vdCBiZWVuIGNvbnN0YW50IGZvbGRlZCwK
ICAgICAgICAgICAgIC8vIHNpbmNlIG90aGVyd2lzZSB0aGVyZSdzIGEgY2hhbmNlIHRoYXQgSExT
TCBvdXRwdXQgd2lsbCBnZW5lcmF0ZSBleHRyYSBzdGF0ZW1lbnRzCiAgICAgICAgICAgICAvLyBm
cm9tIHRoZSBpbml0aWFsaXplciBleHByZXNzaW9uLgotICAgICAgICAgICAgVEludGVybUJpbmFy
eSAqZGVmZXJyZWRJbml0ID0gbmV3IFRJbnRlcm1CaW5hcnkoRU9wQXNzaWduKTsKLSAgICAgICAg
ICAgIGRlZmVycmVkSW5pdC0+c2V0TGVmdChub2RlLT5nZXRMZWZ0KCktPmRlZXBDb3B5KCkpOwot
ICAgICAgICAgICAgZGVmZXJyZWRJbml0LT5zZXRSaWdodChub2RlLT5nZXRSaWdodCgpKTsKLSAg
ICAgICAgICAgIGRlZmVycmVkSW5pdC0+c2V0VHlwZShub2RlLT5nZXRUeXBlKCkpOworICAgICAg
ICAgICAgVEludGVybUJpbmFyeSAqZGVmZXJyZWRJbml0ID0KKyAgICAgICAgICAgICAgICBuZXcg
VEludGVybUJpbmFyeShFT3BBc3NpZ24sIHN5bWJvbE5vZGUtPmRlZXBDb3B5KCksIG5vZGUtPmdl
dFJpZ2h0KCkpOwogICAgICAgICAgICAgbURlZmVycmVkSW5pdGlhbGl6ZXJzLnB1c2hfYmFjayhk
ZWZlcnJlZEluaXQpOwogCisgICAgICAgICAgICAvLyBDaGFuZ2UgY29uc3QgZ2xvYmFsIHRvIGEg
cmVndWxhciBnbG9iYWwgaWYgaXRzIGluaXRpYWxpemF0aW9uIGlzIGRlZmVycmVkLgorICAgICAg
ICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGlmIEFOR0xFIGhhcyBub3QgYmVlbiBhYmxlIHRvIGZv
bGQgdGhlIGNvbnN0YW50IGV4cHJlc3Npb24gdXNlZAorICAgICAgICAgICAgLy8gYXMgYW4gaW5p
dGlhbGl6ZXIuCisgICAgICAgICAgICBBU1NFUlQoc3ltYm9sTm9kZS0+Z2V0UXVhbGlmaWVyKCkg
PT0gRXZxQ29uc3QgfHwKKyAgICAgICAgICAgICAgICAgICBzeW1ib2xOb2RlLT5nZXRRdWFsaWZp
ZXIoKSA9PSBFdnFHbG9iYWwpOworICAgICAgICAgICAgaWYgKHN5bWJvbE5vZGUtPmdldFF1YWxp
ZmllcigpID09IEV2cUNvbnN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIEFs
bCBvZiB0aGUgc2libGluZ3MgaW4gdGhlIHNhbWUgZGVjbGFyYXRpb24gbmVlZCB0byBoYXZlIGNv
bnNpc3RlbnQgcXVhbGlmaWVycy4KKyAgICAgICAgICAgICAgICBhdXRvICpzaWJsaW5ncyA9IGdl
dFBhcmVudE5vZGUoKS0+Z2V0QXNBZ2dyZWdhdGUoKS0+Z2V0U2VxdWVuY2UoKTsKKyAgICAgICAg
ICAgICAgICBmb3IgKFRJbnRlcm1Ob2RlICpzaWJsaW5nTm9kZSA6ICpzaWJsaW5ncykKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1CaW5hcnkgKnNpYmxpbmdC
aW5hcnkgPSBzaWJsaW5nTm9kZS0+Z2V0QXNCaW5hcnlOb2RlKCk7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChzaWJsaW5nQmluYXJ5KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoc2libGluZ0JpbmFyeS0+Z2V0T3AoKSA9PSBFT3BJbml0aWFs
aXplKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpYmxpbmdCaW5hcnktPmdldExlZnQoKS0+
Z2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVyKEV2cUdsb2JhbCk7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgc2libGluZ05vZGUtPmdldEFzVHlwZWQoKS0+
Z2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVyKEV2cUdsb2JhbCk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIC8vIFRoaXMgbm9kZSBpcyBvbmUgb2YgdGhlIHNpYmxpbmdz
LgorICAgICAgICAgICAgICAgIEFTU0VSVChzeW1ib2xOb2RlLT5nZXRRdWFsaWZpZXIoKSA9PSBF
dnFHbG9iYWwpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBpbml0
aWFsaXplciBmcm9tIHRoZSBnbG9iYWwgc2NvcGUgYW5kIGp1c3QgZGVjbGFyZSB0aGUgZ2xvYmFs
IGluc3RlYWQuCi0gICAgICAgICAgICBtUmVwbGFjZW1lbnRzLnB1c2hfYmFjayhOb2RlVXBkYXRl
RW50cnkoZ2V0UGFyZW50Tm9kZSgpLCBub2RlLCBub2RlLT5nZXRMZWZ0KCksIGZhbHNlKSk7Cisg
ICAgICAgICAgICBxdWV1ZVJlcGxhY2VtZW50KG5vZGUsIHN5bWJvbE5vZGUsIE9yaWdpbmFsTm9k
ZTo6SVNfRFJPUFBFRCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIERlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzVHJhdmVyc2VyOjppbnNlcnRJbml0RnVuY3Rp
b24oVEludGVybU5vZGUgKnJvb3QpCit2b2lkIERlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzVHJhdmVy
c2VyOjppbnNlcnRJbml0RnVuY3Rpb24oVEludGVybUJsb2NrICpyb290KQogewogICAgIGlmICht
RGVmZXJyZWRJbml0aWFsaXplcnMuZW1wdHkoKSkKICAgICB7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSAqcm9vdEFnZyA9IHJvb3QtPmdldEFzQWdncmVnYXRl
KCk7Ci0gICAgQVNTRVJUKHJvb3RBZ2cgIT0gbnVsbHB0ciAmJiByb290QWdnLT5nZXRPcCgpID09
IEVPcFNlcXVlbmNlKTsKKyAgICBjb25zdCBpbnQgaW5pdEZ1bmN0aW9uSWQgID0gVFN5bWJvbFRh
YmxlOjpuZXh0VW5pcXVlSWQoKTsKIAogICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uTmFtZSA9ICJp
bml0aWFsaXplRGVmZXJyZWRHbG9iYWxzIjsKIAogICAgIC8vIEFkZCBmdW5jdGlvbiBwcm90b3R5
cGUgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgc2hhZGVyCi0gICAgVEludGVybUFnZ3JlZ2F0ZSAq
ZnVuY3Rpb25Qcm90b3R5cGVOb2RlID0gQ3JlYXRlRnVuY3Rpb25Qcm90b3R5cGVOb2RlKGZ1bmN0
aW9uTmFtZSk7Ci0gICAgcm9vdEFnZy0+Z2V0U2VxdWVuY2UoKS0+aW5zZXJ0KHJvb3RBZ2ctPmdl
dFNlcXVlbmNlKCktPmJlZ2luKCksIGZ1bmN0aW9uUHJvdG90eXBlTm9kZSk7CisgICAgVEludGVy
bUFnZ3JlZ2F0ZSAqZnVuY3Rpb25Qcm90b3R5cGVOb2RlID0KKyAgICAgICAgQ3JlYXRlRnVuY3Rp
b25Qcm90b3R5cGVOb2RlKGZ1bmN0aW9uTmFtZSwgaW5pdEZ1bmN0aW9uSWQpOworICAgIHJvb3Qt
PmdldFNlcXVlbmNlKCktPmluc2VydChyb290LT5nZXRTZXF1ZW5jZSgpLT5iZWdpbigpLCBmdW5j
dGlvblByb3RvdHlwZU5vZGUpOwogCiAgICAgLy8gQWRkIGZ1bmN0aW9uIGRlZmluaXRpb24gdG8g
dGhlIGVuZCBvZiB0aGUgc2hhZGVyCi0gICAgVEludGVybUFnZ3JlZ2F0ZSAqZnVuY3Rpb25Cb2R5
Tm9kZSA9IG5ldyBUSW50ZXJtQWdncmVnYXRlKEVPcFNlcXVlbmNlKTsKKyAgICBUSW50ZXJtQmxv
Y2sgKmZ1bmN0aW9uQm9keU5vZGUgPSBuZXcgVEludGVybUJsb2NrKCk7CiAgICAgVEludGVybVNl
cXVlbmNlICpmdW5jdGlvbkJvZHkgPSBmdW5jdGlvbkJvZHlOb2RlLT5nZXRTZXF1ZW5jZSgpOwog
ICAgIGZvciAoY29uc3QgYXV0byAmZGVmZXJyZWRJbml0IDogbURlZmVycmVkSW5pdGlhbGl6ZXJz
KQogICAgIHsKICAgICAgICAgZnVuY3Rpb25Cb2R5LT5wdXNoX2JhY2soZGVmZXJyZWRJbml0KTsK
ICAgICB9Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSAqZnVuY3Rpb25EZWZpbml0aW9uID0KLSAgICAg
ICAgQ3JlYXRlRnVuY3Rpb25EZWZpbml0aW9uTm9kZShmdW5jdGlvbk5hbWUsIGZ1bmN0aW9uQm9k
eU5vZGUpOwotICAgIHJvb3RBZ2ctPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhmdW5jdGlvbkRl
ZmluaXRpb24pOworICAgIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKmZ1bmN0aW9uRGVmaW5p
dGlvbiA9CisgICAgICAgIENyZWF0ZUZ1bmN0aW9uRGVmaW5pdGlvbk5vZGUoZnVuY3Rpb25OYW1l
LCBmdW5jdGlvbkJvZHlOb2RlLCBpbml0RnVuY3Rpb25JZCk7CisgICAgcm9vdC0+Z2V0U2VxdWVu
Y2UoKS0+cHVzaF9iYWNrKGZ1bmN0aW9uRGVmaW5pdGlvbik7CiAKICAgICAvLyBJbnNlcnQgY2Fs
bCBpbnRvIG1haW4gZnVuY3Rpb24KLSAgICBmb3IgKFRJbnRlcm1Ob2RlICpub2RlIDogKnJvb3RB
Z2ctPmdldFNlcXVlbmNlKCkpCisgICAgZm9yIChUSW50ZXJtTm9kZSAqbm9kZSA6ICpyb290LT5n
ZXRTZXF1ZW5jZSgpKQogICAgIHsKLSAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZUFnZyA9
IG5vZGUtPmdldEFzQWdncmVnYXRlKCk7Ci0gICAgICAgIGlmIChub2RlQWdnICE9IG51bGxwdHIg
JiYgbm9kZUFnZy0+Z2V0T3AoKSA9PSBFT3BGdW5jdGlvbiAmJgotICAgICAgICAgICAgVEZ1bmN0
aW9uOjp1bm1hbmdsZU5hbWUobm9kZUFnZy0+Z2V0TmFtZSgpKSA9PSAibWFpbiIpCisgICAgICAg
IFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKm5vZGVGdW5jdGlvbiA9IG5vZGUtPmdldEFzRnVu
Y3Rpb25EZWZpbml0aW9uKCk7CisgICAgICAgIGlmIChub2RlRnVuY3Rpb24gIT0gbnVsbHB0ciAm
JiBub2RlRnVuY3Rpb24tPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5pc01haW4oKSkKICAgICAg
ICAgewotICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqZnVuY3Rpb25DYWxsTm9kZSA9IENy
ZWF0ZUZ1bmN0aW9uQ2FsbE5vZGUoZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgICAgIFRJbnRlcm1B
Z2dyZWdhdGUgKmZ1bmN0aW9uQ2FsbE5vZGUgPQorICAgICAgICAgICAgICAgIENyZWF0ZUZ1bmN0
aW9uQ2FsbE5vZGUoZnVuY3Rpb25OYW1lLCBpbml0RnVuY3Rpb25JZCk7CiAKLSAgICAgICAgICAg
IFRJbnRlcm1Ob2RlICptYWluQm9keSAgICAgICAgID0gbm9kZUFnZy0+Z2V0U2VxdWVuY2UoKS0+
YmFjaygpOwotICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqbWFpbkJvZHlBZ2cgPSBtYWlu
Qm9keS0+Z2V0QXNBZ2dyZWdhdGUoKTsKLSAgICAgICAgICAgIEFTU0VSVChtYWluQm9keUFnZyAh
PSBudWxscHRyICYmIG1haW5Cb2R5QWdnLT5nZXRPcCgpID09IEVPcFNlcXVlbmNlKTsKLSAgICAg
ICAgICAgIG1haW5Cb2R5QWdnLT5nZXRTZXF1ZW5jZSgpLT5pbnNlcnQobWFpbkJvZHlBZ2ctPmdl
dFNlcXVlbmNlKCktPmJlZ2luKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uQ2FsbE5vZGUpOworICAgICAgICAgICAgVEludGVybUJsb2Nr
ICptYWluQm9keSA9IG5vZGVGdW5jdGlvbi0+Z2V0Qm9keSgpOworICAgICAgICAgICAgQVNTRVJU
KG1haW5Cb2R5ICE9IG51bGxwdHIpOworICAgICAgICAgICAgbWFpbkJvZHktPmdldFNlcXVlbmNl
KCktPmluc2VydChtYWluQm9keS0+Z2V0U2VxdWVuY2UoKS0+YmVnaW4oKSwgZnVuY3Rpb25DYWxs
Tm9kZSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xNTMsNyArMTc2LDcgQEAKIAogfSAgLy8g
bmFtZXNwYWNlCiAKLXZvaWQgRGVmZXJHbG9iYWxJbml0aWFsaXplcnMoVEludGVybU5vZGUgKnJv
b3QpCit2b2lkIERlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzKFRJbnRlcm1CbG9jayAqcm9vdCkKIHsK
ICAgICBEZWZlckdsb2JhbEluaXRpYWxpemVyc1RyYXZlcnNlciB0cmF2ZXJzZXI7CiAgICAgcm9v
dC0+dHJhdmVyc2UoJnRyYXZlcnNlcik7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9EZWZlckdsb2JhbEluaXRpYWxpemVycy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0Rl
ZmVyR2xvYmFsSW5pdGlhbGl6ZXJzLmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0RlZmVyR2xvYmFsSW5pdGlhbGl6
ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzLDggKzEzLDggQEAKICNpZm5kZWYgQ09NUElMRVJf
VFJBTlNMQVRPUl9ERUZFUkdMT0JBTElOSVRJQUxJWkVSU19IXwogI2RlZmluZSBDT01QSUxFUl9U
UkFOU0xBVE9SX0RFRkVSR0xPQkFMSU5JVElBTElaRVJTX0hfCiAKLWNsYXNzIFRJbnRlcm1Ob2Rl
OworY2xhc3MgVEludGVybUJsb2NrOwogCi12b2lkIERlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzKFRJ
bnRlcm1Ob2RlICpyb290KTsKK3ZvaWQgRGVmZXJHbG9iYWxJbml0aWFsaXplcnMoVEludGVybUJs
b2NrICpyb290KTsKIAogI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX0RFRkVSR0xPQkFM
SU5JVElBTElaRVJTX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9EaWFnbm9zdGljcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRGlhZ25vc3RpY3MuY3BwCShyZXZp
c2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9EaWFnbm9zdGljcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcsOCArNyw5IEBACiAj
aW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9EaWFnbm9zdGljcy5oIgogCiAjaW5jbHVkZSAi
Y29tbW9uL2RlYnVnLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL1NvdXJjZUxv
Y2F0aW9uLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9Db21tb24uaCIKICNpbmNs
dWRlICJjb21waWxlci90cmFuc2xhdG9yL0luZm9TaW5rLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIv
cHJlcHJvY2Vzc29yL1NvdXJjZUxvY2F0aW9uLmgiCiAKIFREaWFnbm9zdGljczo6VERpYWdub3N0
aWNzKFRJbmZvU2luayYgaW5mb1NpbmspIDoKICAgICBtSW5mb1NpbmsoaW5mb1NpbmspLApAQCAt
NTAsNiArNTEsMjggQEAKICAgICBzaW5rIDw8ICInIiA8PCB0b2tlbiA8PCAgIicgOiAiIDw8IHJl
YXNvbiA8PCAiICIgPDwgZXh0cmEgPDwgIlxuIjsKIH0KIAordm9pZCBURGlhZ25vc3RpY3M6OmVy
cm9yKGNvbnN0IFRTb3VyY2VMb2MgJmxvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyICpyZWFzb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9r
ZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXh0cmFJbmZvKQorewor
ICAgIHBwOjpTb3VyY2VMb2NhdGlvbiBzcmNMb2M7CisgICAgc3JjTG9jLmZpbGUgPSBsb2MuZmly
c3RfZmlsZTsKKyAgICBzcmNMb2MubGluZSA9IGxvYy5maXJzdF9saW5lOworICAgIHdyaXRlSW5m
byhwcDo6RGlhZ25vc3RpY3M6OlBQX0VSUk9SLCBzcmNMb2MsIHJlYXNvbiwgdG9rZW4sIGV4dHJh
SW5mbyk7Cit9CisKK3ZvaWQgVERpYWdub3N0aWNzOjp3YXJuaW5nKGNvbnN0IFRTb3VyY2VMb2Mg
JmxvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRva2VuLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXh0cmFJbmZvKQoreworICAgIHBwOjpTb3VyY2VM
b2NhdGlvbiBzcmNMb2M7CisgICAgc3JjTG9jLmZpbGUgPSBsb2MuZmlyc3RfZmlsZTsKKyAgICBz
cmNMb2MubGluZSA9IGxvYy5maXJzdF9saW5lOworICAgIHdyaXRlSW5mbyhwcDo6RGlhZ25vc3Rp
Y3M6OlBQX1dBUk5JTkcsIHNyY0xvYywgcmVhc29uLCB0b2tlbiwgZXh0cmFJbmZvKTsKK30KKwog
dm9pZCBURGlhZ25vc3RpY3M6OnByaW50KElEIGlkLAogICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHBwOjpTb3VyY2VMb2NhdGlvbiYgbG9jLAogICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXh0KQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRGlhZ25vc3RpY3MuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9EaWFnbm9zdGljcy5o
CShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9EaWFnbm9zdGljcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw2ICsxMSw3
IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpYWdub3N0aWNzQmFzZS5oIgog
CiBjbGFzcyBUSW5mb1Npbms7CitzdHJ1Y3QgVFNvdXJjZUxvYzsKIAogY2xhc3MgVERpYWdub3N0
aWNzIDogcHVibGljIHBwOjpEaWFnbm9zdGljcywgYW5nbGU6Ok5vbkNvcHlhYmxlCiB7CkBAIC0y
OSw2ICszMCwxMiBAQAogICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0b2tl
biwKICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZXh0cmEpOwogCisgICAg
dm9pZCBlcnJvcihjb25zdCBUU291cmNlTG9jICZsb2MsIGNvbnN0IGNoYXIgKnJlYXNvbiwgY29u
c3QgY2hhciAqdG9rZW4sIGNvbnN0IGNoYXIgKmV4dHJhSW5mbyk7CisgICAgdm9pZCB3YXJuaW5n
KGNvbnN0IFRTb3VyY2VMb2MgJmxvYywKKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVh
c29uLAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b2tlbiwKKyAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciAqZXh0cmFJbmZvKTsKKwogICBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBwcmlu
dChJRCBpZCwgY29uc3QgcHA6OlNvdXJjZUxvY2F0aW9uICZsb2MsIGNvbnN0IHN0ZDo6c3RyaW5n
ICZ0ZXh0KSBvdmVycmlkZTsKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvRGlyZWN0aXZlSGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRGlyZWN0aXZlSGFu
ZGxlci5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL0RpcmVjdGl2ZUhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xODIsOCArMTgyLDcgQEAKIHZvaWQgVERpcmVjdGl2ZUhhbmRsZXI6OmhhbmRsZVZlcnNp
b24oY29uc3QgcHA6OlNvdXJjZUxvY2F0aW9uJiBsb2MsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCB2ZXJzaW9uKQogewotICAgIGlmICh2ZXJzaW9uID09IDEwMCB8
fAotICAgICAgICB2ZXJzaW9uID09IDMwMCkKKyAgICBpZiAodmVyc2lvbiA9PSAxMDAgfHwgdmVy
c2lvbiA9PSAzMDAgfHwgdmVyc2lvbiA9PSAzMTApCiAgICAgewogICAgICAgICBtU2hhZGVyVmVy
c2lvbiA9IHZlcnNpb247CiAgICAgfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9FbXVsYXRlR0xGcmFnQ29sb3JCcm9hZGNhc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0VtdWxhdGVHTEZyYWdD
b2xvckJyb2FkY2FzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzIgQEAKKy8vCisv
LyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisvLyBnbF9GcmFnQ29sb3IgbmVlZHMgdG8gYnJvYWRjYXN0IHRvIGFsbCBj
b2xvciBidWZmZXJzIGluIEVTMiBpZgorLy8gR0xfRVhUX2RyYXdfYnVmZmVycyBpcyBleHBsaWNp
dGx5IGVuYWJsZWQgaW4gYSBmcmFnbWVudCBzaGFkZXIuCisvLworLy8gV2UgZW11bGF0ZSB0aGlz
IGJ5IHJlcGxhY2luZyBhbGwgZ2xfRnJhZ0NvbG9yIHdpdGggZ2xfRnJhZ0RhdGFbMF0sIGFuZCBp
biB0aGUgZW5kCisvLyBvZiBtYWluKCkgZnVuY3Rpb24sIGFzc2lnbmluZyBnbF9GcmFnRGF0YVsx
XSwgLi4uLCBnbF9GcmFnRGF0YVttYXhEcmF3QnVmZmVycy0xXQorLy8gd2l0aCBnbF9GcmFnRGF0
YVswXS4KKy8vCisKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0VtdWxhdGVHTEZyYWdD
b2xvckJyb2FkY2FzdC5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9k
ZS5oIgorCituYW1lc3BhY2UKK3sKKworY2xhc3MgR0xGcmFnQ29sb3JCcm9hZGNhc3RUcmF2ZXJz
ZXIgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgoreworICBwdWJsaWM6CisgICAgR0xGcmFnQ29s
b3JCcm9hZGNhc3RUcmF2ZXJzZXIoaW50IG1heERyYXdCdWZmZXJzKQorICAgICAgICA6IFRJbnRl
cm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKSwKKyAgICAgICAgICBtTWFpblNlcXVlbmNl
KG51bGxwdHIpLAorICAgICAgICAgIG1HTEZyYWdDb2xvclVzZWQoZmFsc2UpLAorICAgICAgICAg
IG1NYXhEcmF3QnVmZmVycyhtYXhEcmF3QnVmZmVycykKKyAgICB7CisgICAgfQorCisgICAgdm9p
ZCBicm9hZGNhc3RHTEZyYWdDb2xvcigpOworCisgICAgYm9vbCBpc0dMRnJhZ0NvbG9yVXNlZCgp
IGNvbnN0IHsgcmV0dXJuIG1HTEZyYWdDb2xvclVzZWQ7IH0KKworICBwcm90ZWN0ZWQ6CisgICAg
dm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICpub2RlKSBvdmVycmlkZTsKKyAgICBib29s
IHZpc2l0RnVuY3Rpb25EZWZpbml0aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtRnVuY3Rpb25EZWZp
bml0aW9uICpub2RlKSBvdmVycmlkZTsKKworICAgIFRJbnRlcm1CaW5hcnkgKmNvbnN0cnVjdEdM
RnJhZ0RhdGFOb2RlKGludCBpbmRleCkgY29uc3Q7CisgICAgVEludGVybUJpbmFyeSAqY29uc3Ry
dWN0R0xGcmFnRGF0YUFzc2lnbk5vZGUoaW50IGluZGV4KSBjb25zdDsKKworICBwcml2YXRlOgor
ICAgIFRJbnRlcm1TZXF1ZW5jZSAqbU1haW5TZXF1ZW5jZTsKKyAgICBib29sIG1HTEZyYWdDb2xv
clVzZWQ7CisgICAgaW50IG1NYXhEcmF3QnVmZmVyczsKK307CisKK1RJbnRlcm1CaW5hcnkgKkdM
RnJhZ0NvbG9yQnJvYWRjYXN0VHJhdmVyc2VyOjpjb25zdHJ1Y3RHTEZyYWdEYXRhTm9kZShpbnQg
aW5kZXgpIGNvbnN0Cit7CisgICAgVFR5cGUgZ2xfRnJhZ0RhdGFUeXBlID0gVFR5cGUoRWJ0Rmxv
YXQsIEVicE1lZGl1bSwgRXZxRnJhZ0RhdGEsIDQpOworICAgIGdsX0ZyYWdEYXRhVHlwZS5zZXRB
cnJheVNpemUobU1heERyYXdCdWZmZXJzKTsKKworICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCAg
ID0gbmV3IFRJbnRlcm1TeW1ib2woMCwgImdsX0ZyYWdEYXRhIiwgZ2xfRnJhZ0RhdGFUeXBlKTsK
KyAgICBUSW50ZXJtVHlwZWQgKmluZGV4Tm9kZSA9IFRJbnRlcm1UeXBlZDo6Q3JlYXRlSW5kZXhO
b2RlKGluZGV4KTsKKworICAgIFRJbnRlcm1CaW5hcnkgKmJpbmFyeSA9IG5ldyBUSW50ZXJtQmlu
YXJ5KEVPcEluZGV4RGlyZWN0LCBzeW1ib2wsIGluZGV4Tm9kZSk7CisgICAgcmV0dXJuIGJpbmFy
eTsKK30KKworVEludGVybUJpbmFyeSAqR0xGcmFnQ29sb3JCcm9hZGNhc3RUcmF2ZXJzZXI6OmNv
bnN0cnVjdEdMRnJhZ0RhdGFBc3NpZ25Ob2RlKGludCBpbmRleCkgY29uc3QKK3sKKyAgICBUSW50
ZXJtVHlwZWQgKmZyYWdEYXRhSW5kZXggPSBjb25zdHJ1Y3RHTEZyYWdEYXRhTm9kZShpbmRleCk7
CisgICAgVEludGVybVR5cGVkICpmcmFnRGF0YVplcm8gID0gY29uc3RydWN0R0xGcmFnRGF0YU5v
ZGUoMCk7CisKKyAgICByZXR1cm4gbmV3IFRJbnRlcm1CaW5hcnkoRU9wQXNzaWduLCBmcmFnRGF0
YUluZGV4LCBmcmFnRGF0YVplcm8pOworfQorCit2b2lkIEdMRnJhZ0NvbG9yQnJvYWRjYXN0VHJh
dmVyc2VyOjp2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICpub2RlKQoreworICAgIGlmIChub2Rl
LT5nZXRTeW1ib2woKSA9PSAiZ2xfRnJhZ0NvbG9yIikKKyAgICB7CisgICAgICAgIHF1ZXVlUmVw
bGFjZW1lbnQobm9kZSwgY29uc3RydWN0R0xGcmFnRGF0YU5vZGUoMCksIE9yaWdpbmFsTm9kZTo6
SVNfRFJPUFBFRCk7CisgICAgICAgIG1HTEZyYWdDb2xvclVzZWQgPSB0cnVlOworICAgIH0KK30K
KworYm9vbCBHTEZyYWdDb2xvckJyb2FkY2FzdFRyYXZlcnNlcjo6dmlzaXRGdW5jdGlvbkRlZmlu
aXRpb24oVmlzaXQgdmlzaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICpub2RlKQor
eworICAgIEFTU0VSVCh2aXNpdCA9PSBQcmVWaXNpdCk7CisgICAgaWYgKG5vZGUtPmdldEZ1bmN0
aW9uU3ltYm9sSW5mbygpLT5pc01haW4oKSkKKyAgICB7CisgICAgICAgIFRJbnRlcm1CbG9jayAq
Ym9keSA9IG5vZGUtPmdldEJvZHkoKTsKKyAgICAgICAgQVNTRVJUKGJvZHkpOworICAgICAgICBt
TWFpblNlcXVlbmNlID0gYm9keS0+Z2V0U2VxdWVuY2UoKTsKKyAgICB9CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3ZvaWQgR0xGcmFnQ29sb3JCcm9hZGNhc3RUcmF2ZXJzZXI6OmJyb2FkY2FzdEdM
RnJhZ0NvbG9yKCkKK3sKKyAgICBBU1NFUlQobU1heERyYXdCdWZmZXJzID4gMSk7CisgICAgaWYg
KCFtR0xGcmFnQ29sb3JVc2VkKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBB
U1NFUlQobU1haW5TZXF1ZW5jZSk7CisgICAgLy8gTm93IGluc2VydCBzdGF0ZW1lbnRzCisgICAg
Ly8gICBnbF9GcmFnRGF0YVsxXSA9IGdsX0ZyYWdEYXRhWzBdOworICAgIC8vICAgLi4uCisgICAg
Ly8gICBnbF9GcmFnRGF0YVttYXhEcmF3QnVmZmVycyAtIDFdID0gZ2xfRnJhZ0RhdGFbMF07Cisg
ICAgZm9yIChpbnQgY29sb3JJbmRleCA9IDE7IGNvbG9ySW5kZXggPCBtTWF4RHJhd0J1ZmZlcnM7
ICsrY29sb3JJbmRleCkKKyAgICB7CisgICAgICAgIG1NYWluU2VxdWVuY2UtPmluc2VydChtTWFp
blNlcXVlbmNlLT5lbmQoKSwgY29uc3RydWN0R0xGcmFnRGF0YUFzc2lnbk5vZGUoY29sb3JJbmRl
eCkpOworICAgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlIGFub255bW91cworCit2b2lkIEVtdWxh
dGVHTEZyYWdDb2xvckJyb2FkY2FzdChUSW50ZXJtTm9kZSAqcm9vdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBtYXhEcmF3QnVmZmVycywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHNoOjpPdXRwdXRWYXJpYWJsZT4gKm91dHB1dFZh
cmlhYmxlcykKK3sKKyAgICBBU1NFUlQobWF4RHJhd0J1ZmZlcnMgPiAxKTsKKyAgICBHTEZyYWdD
b2xvckJyb2FkY2FzdFRyYXZlcnNlciB0cmF2ZXJzZXIobWF4RHJhd0J1ZmZlcnMpOworICAgIHJv
b3QtPnRyYXZlcnNlKCZ0cmF2ZXJzZXIpOworICAgIGlmICh0cmF2ZXJzZXIuaXNHTEZyYWdDb2xv
clVzZWQoKSkKKyAgICB7CisgICAgICAgIHRyYXZlcnNlci51cGRhdGVUcmVlKCk7CisgICAgICAg
IHRyYXZlcnNlci5icm9hZGNhc3RHTEZyYWdDb2xvcigpOworICAgICAgICBmb3IgKGF1dG8gJnZh
ciA6ICpvdXRwdXRWYXJpYWJsZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh2YXIubmFt
ZSA9PSAiZ2xfRnJhZ0NvbG9yIikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBU
T0RPKHptbyk6IEZpbmQgYSB3YXkgdG8ga2VlcCB0aGUgb3JpZ2luYWwgdmFyaWFibGUgaW5mb3Jt
YXRpb24uCisgICAgICAgICAgICAgICAgdmFyLm5hbWUgICAgICAgPSAiZ2xfRnJhZ0RhdGEiOwor
ICAgICAgICAgICAgICAgIHZhci5tYXBwZWROYW1lID0gImdsX0ZyYWdEYXRhIjsKKyAgICAgICAg
ICAgICAgICB2YXIuYXJyYXlTaXplICA9IG1heERyYXdCdWZmZXJzOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRW11
bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRW11bGF0ZUdMRnJhZ0NvbG9yQnJv
YWRjYXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOSBAQAorLy8KKy8vIENvcHlyaWdo
dCAoYykgMjAwMi0yMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKy8vIEVtdWxhdGUgZ2xfRnJhZ0NvbG9yIGJyb2FkY2FzdCBiZWhhdmlvcnMgaW4gRVMyIHdo
ZXJlCisvLyBHTF9FWFRfZHJhd19idWZmZXJzIGlzIGV4cGxpY2l0bHkgZW5hYmxlZCBpbiBhIGZy
YWdtZW50IHNoYWRlci4KKy8vCisKKyNpZm5kZWYgQ09NUElMRVJfVFJBTlNMQVRPUl9FTVVMQVRF
R0xGUkFHQ09MT1JCUk9BRENBU1RfSF8KKyNkZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9FTVVM
QVRFR0xGUkFHQ09MT1JCUk9BRENBU1RfSF8KKworI2luY2x1ZGUgPHZlY3Rvcj4KKworbmFtZXNw
YWNlIHNoCit7CitzdHJ1Y3QgT3V0cHV0VmFyaWFibGU7Cit9CisKK2NsYXNzIFRJbnRlcm1Ob2Rl
OworCisvLyBSZXBsYWNlIGFsbCBnbF9GcmFnQ29sb3Igd2l0aCBnbF9GcmFnRGF0YVswXSwgYW5k
IGluIHRoZSBlbmQgb2YgbWFpbigpIGZ1bmN0aW9uLAorLy8gYXNzaWduIGdsX0ZyYWdEYXRhWzFd
IC4uLiBnbF9GcmFnRGF0YVttYXhEcmF3QnVmZmVycyAtIDFdIHdpdGggZ2xfRnJhZ0RhdGFbMF0u
CisvLyBJZiBnbF9GcmFnQ29sb3IgaXMgaW4gb3V0cHV0VmFyaWFibGVzLCBpdCBpcyByZXBsYWNl
ZCBieSBnbF9GcmFnRGF0YS4KK3ZvaWQgRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0KFRJbnRl
cm1Ob2RlICpyb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1heERy
YXdCdWZmZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8
c2g6Ok91dHB1dFZhcmlhYmxlPiAqb3V0cHV0VmFyaWFibGVzKTsKKworI2VuZGlmICAvLyBDT01Q
SUxFUl9UUkFOU0xBVE9SX0VNVUxBVEVHTEZSQUdDT0xPUkJST0FEQ0FTVF9IXwpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRW11bGF0ZVByZWNp
c2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvRW11bGF0ZVByZWNpc2lvbi5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0VtdWxhdGVQ
cmVjaXNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02LDY3ICs2LDE3OCBAQAogCiAjaW5jbHVk
ZSAiY29tcGlsZXIvdHJhbnNsYXRvci9FbXVsYXRlUHJlY2lzaW9uLmgiCiAKKyNpbmNsdWRlIDxt
ZW1vcnk+CisKIG5hbWVzcGFjZQogewogCi1zdGF0aWMgdm9pZCB3cml0ZVZlY3RvclByZWNpc2lv
bkVtdWxhdGlvbkhlbHBlcnMoCi0gICAgVEluZm9TaW5rQmFzZSYgc2luaywgU2hTaGFkZXJPdXRw
dXQgb3V0cHV0TGFuZ3VhZ2UsIHVuc2lnbmVkIGludCBzaXplKQorY2xhc3MgUm91bmRpbmdIZWxw
ZXJXcml0ZXIgOiBhbmdsZTo6Tm9uQ29weWFibGUKIHsKLSAgICBzdGQ6OnN0cmluZ3N0cmVhbSB2
ZWNUeXBlU3RyU3RyOwotICAgIGlmIChvdXRwdXRMYW5ndWFnZSA9PSBTSF9FU1NMX09VVFBVVCkK
LSAgICAgICAgdmVjVHlwZVN0clN0ciA8PCAiaGlnaHAgIjsKLSAgICB2ZWNUeXBlU3RyU3RyIDw8
ICJ2ZWMiIDw8IHNpemU7Ci0gICAgc3RkOjpzdHJpbmcgdmVjVHlwZSA9IHZlY1R5cGVTdHJTdHIu
c3RyKCk7CisgIHB1YmxpYzoKKyAgICBzdGF0aWMgUm91bmRpbmdIZWxwZXJXcml0ZXIgKmNyZWF0
ZUhlbHBlcldyaXRlcihjb25zdCBTaFNoYWRlck91dHB1dCBvdXRwdXRMYW5ndWFnZSk7CiAKLSAg
ICBzaW5rIDw8Ci0gICAgdmVjVHlwZSA8PCAiIGFuZ2xlX2ZybShpbiAiIDw8IHZlY1R5cGUgPDwg
IiB2KSB7XG4iCi0gICAgIiAgICB2ID0gY2xhbXAodiwgLTY1NTA0LjAsIDY1NTA0LjApO1xuIgot
ICAgICIgICAgIiA8PCB2ZWNUeXBlIDw8ICIgZXhwb25lbnQgPSBmbG9vcihsb2cyKGFicyh2KSAr
IDFlLTMwKSkgLSAxMC4wO1xuIgotICAgICIgICAgYnZlYyIgPDwgc2l6ZSA8PCAiIGlzTm9uWmVy
byA9IGdyZWF0ZXJUaGFuRXF1YWwoZXhwb25lbnQsIHZlYyIgPDwgc2l6ZSA8PCAiKC0yNS4wKSk7
XG4iCi0gICAgIiAgICB2ID0gdiAqIGV4cDIoLWV4cG9uZW50KTtcbiIKLSAgICAiICAgIHYgPSBz
aWduKHYpICogZmxvb3IoYWJzKHYpKTtcbiIKLSAgICAiICAgIHJldHVybiB2ICogZXhwMihleHBv
bmVudCkgKiB2ZWMiIDw8IHNpemUgPDwgIihpc05vblplcm8pO1xuIgotICAgICJ9XG4iOworICAg
IHZvaWQgd3JpdGVDb21tb25Sb3VuZGluZ0hlbHBlcnMoVEluZm9TaW5rQmFzZSAmc2luaywgY29u
c3QgaW50IHNoYWRlclZlcnNpb24pOworICAgIHZvaWQgd3JpdGVDb21wb3VuZEFzc2lnbm1lbnRI
ZWxwZXIoVEluZm9TaW5rQmFzZSAmc2luaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIgKmxUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciAqclR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyICpvcFN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm9wTmFtZVN0cik7CiAKLSAgICBzaW5rIDw8Ci0g
ICAgdmVjVHlwZSA8PCAiIGFuZ2xlX2ZybChpbiAiIDw8IHZlY1R5cGUgPDwgIiB2KSB7XG4iCi0g
ICAgIiAgICB2ID0gY2xhbXAodiwgLTIuMCwgMi4wKTtcbiIKLSAgICAiICAgIHYgPSB2ICogMjU2
LjA7XG4iCi0gICAgIiAgICB2ID0gc2lnbih2KSAqIGZsb29yKGFicyh2KSk7XG4iCi0gICAgIiAg
ICByZXR1cm4gdiAqIDAuMDAzOTA2MjU7XG4iCi0gICAgIn1cbiI7Ci19CisgICAgdmlydHVhbCB+
Um91bmRpbmdIZWxwZXJXcml0ZXIoKSB7fQogCi1zdGF0aWMgdm9pZCB3cml0ZU1hdHJpeFByZWNp
c2lvbkVtdWxhdGlvbkhlbHBlcigKLSAgICBUSW5mb1NpbmtCYXNlJiBzaW5rLCBTaFNoYWRlck91
dHB1dCBvdXRwdXRMYW5ndWFnZSwgdW5zaWduZWQgaW50IHNpemUsIGNvbnN0IGNoYXIgKmZ1bmN0
aW9uTmFtZSkKKyAgcHJvdGVjdGVkOgorICAgIFJvdW5kaW5nSGVscGVyV3JpdGVyKGNvbnN0IFNo
U2hhZGVyT3V0cHV0IG91dHB1dExhbmd1YWdlKSA6IG1PdXRwdXRMYW5ndWFnZShvdXRwdXRMYW5n
dWFnZSkge30KKyAgICBSb3VuZGluZ0hlbHBlcldyaXRlcigpID0gZGVsZXRlOworCisgICAgY29u
c3QgU2hTaGFkZXJPdXRwdXQgbU91dHB1dExhbmd1YWdlOworCisgIHByaXZhdGU6CisgICAgdmly
dHVhbCBzdGQ6OnN0cmluZyBnZXRUeXBlU3RyaW5nKGNvbnN0IGNoYXIgKmdsc2xUeXBlKSAgICAg
PSAwOworICAgIHZpcnR1YWwgdm9pZCB3cml0ZUZsb2F0Um91bmRpbmdIZWxwZXJzKFRJbmZvU2lu
a0Jhc2UgJnNpbmspID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVWZWN0b3JSb3VuZGluZ0hl
bHBlcnMoVEluZm9TaW5rQmFzZSAmc2luaywgY29uc3QgdW5zaWduZWQgaW50IHNpemUpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVNYXRyaXhSb3VuZGluZ0hlbHBlcihUSW5mb1NpbmtCYXNl
ICZzaW5rLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHVuc2lnbmVkIGludCBjb2x1bW5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCByb3dzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uTmFtZSkgPSAwOworfTsK
KworY2xhc3MgUm91bmRpbmdIZWxwZXJXcml0ZXJHTFNMIDogcHVibGljIFJvdW5kaW5nSGVscGVy
V3JpdGVyCiB7Ci0gICAgc3RkOjpzdHJpbmdzdHJlYW0gbWF0VHlwZVN0clN0cjsKLSAgICBpZiAo
b3V0cHV0TGFuZ3VhZ2UgPT0gU0hfRVNTTF9PVVRQVVQpCi0gICAgICAgIG1hdFR5cGVTdHJTdHIg
PDwgImhpZ2hwICI7Ci0gICAgbWF0VHlwZVN0clN0ciA8PCAibWF0IiA8PCBzaXplOwotICAgIHN0
ZDo6c3RyaW5nIG1hdFR5cGUgPSBtYXRUeXBlU3RyU3RyLnN0cigpOworICBwdWJsaWM6CisgICAg
Um91bmRpbmdIZWxwZXJXcml0ZXJHTFNMKGNvbnN0IFNoU2hhZGVyT3V0cHV0IG91dHB1dExhbmd1
YWdlKQorICAgICAgICA6IFJvdW5kaW5nSGVscGVyV3JpdGVyKG91dHB1dExhbmd1YWdlKQorICAg
IHsKKyAgICB9CiAKLSAgICBzaW5rIDw8IG1hdFR5cGUgPDwgIiAiIDw8IGZ1bmN0aW9uTmFtZSA8
PCAiKGluICIgPDwgbWF0VHlwZSA8PCAiIG0pIHtcbiIKLSAgICAgICAgICAgICIgICAgIiA8PCBt
YXRUeXBlIDw8ICIgcm91bmRlZDtcbiI7CisgIHByaXZhdGU6CisgICAgc3RkOjpzdHJpbmcgZ2V0
VHlwZVN0cmluZyhjb25zdCBjaGFyICpnbHNsVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB3cml0
ZUZsb2F0Um91bmRpbmdIZWxwZXJzKFRJbmZvU2lua0Jhc2UgJnNpbmspIG92ZXJyaWRlOworICAg
IHZvaWQgd3JpdGVWZWN0b3JSb3VuZGluZ0hlbHBlcnMoVEluZm9TaW5rQmFzZSAmc2luaywgY29u
c3QgdW5zaWduZWQgaW50IHNpemUpIG92ZXJyaWRlOworICAgIHZvaWQgd3JpdGVNYXRyaXhSb3Vu
ZGluZ0hlbHBlcihUSW5mb1NpbmtCYXNlICZzaW5rLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgY29sdW1ucywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IHJvd3MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uTmFtZSkgb3ZlcnJpZGU7
Cit9OwogCi0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpCitjbGFz
cyBSb3VuZGluZ0hlbHBlcldyaXRlckVTU0wgOiBwdWJsaWMgUm91bmRpbmdIZWxwZXJXcml0ZXJH
TFNMCit7CisgIHB1YmxpYzoKKyAgICBSb3VuZGluZ0hlbHBlcldyaXRlckVTU0woY29uc3QgU2hT
aGFkZXJPdXRwdXQgb3V0cHV0TGFuZ3VhZ2UpCisgICAgICAgIDogUm91bmRpbmdIZWxwZXJXcml0
ZXJHTFNMKG91dHB1dExhbmd1YWdlKQogICAgIHsKLSAgICAgICAgc2luayA8PCAiICAgIHJvdW5k
ZWRbIiA8PCBpIDw8ICJdID0gIiA8PCBmdW5jdGlvbk5hbWUgPDwgIihtWyIgPDwgaSA8PCAiXSk7
XG4iOwogICAgIH0KIAotICAgIHNpbmsgPDwgIiAgICByZXR1cm4gcm91bmRlZDtcbiIKLSAgICAg
ICAgICAgICJ9XG4iOworICBwcml2YXRlOgorICAgIHN0ZDo6c3RyaW5nIGdldFR5cGVTdHJpbmco
Y29uc3QgY2hhciAqZ2xzbFR5cGUpIG92ZXJyaWRlOworfTsKKworY2xhc3MgUm91bmRpbmdIZWxw
ZXJXcml0ZXJITFNMIDogcHVibGljIFJvdW5kaW5nSGVscGVyV3JpdGVyCit7CisgIHB1YmxpYzoK
KyAgICBSb3VuZGluZ0hlbHBlcldyaXRlckhMU0woY29uc3QgU2hTaGFkZXJPdXRwdXQgb3V0cHV0
TGFuZ3VhZ2UpCisgICAgICAgIDogUm91bmRpbmdIZWxwZXJXcml0ZXIob3V0cHV0TGFuZ3VhZ2Up
CisgICAgeworICAgIH0KKworICBwcml2YXRlOgorICAgIHN0ZDo6c3RyaW5nIGdldFR5cGVTdHJp
bmcoY29uc3QgY2hhciAqZ2xzbFR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQgd3JpdGVGbG9hdFJv
dW5kaW5nSGVscGVycyhUSW5mb1NpbmtCYXNlICZzaW5rKSBvdmVycmlkZTsKKyAgICB2b2lkIHdy
aXRlVmVjdG9yUm91bmRpbmdIZWxwZXJzKFRJbmZvU2lua0Jhc2UgJnNpbmssIGNvbnN0IHVuc2ln
bmVkIGludCBzaXplKSBvdmVycmlkZTsKKyAgICB2b2lkIHdyaXRlTWF0cml4Um91bmRpbmdIZWxw
ZXIoVEluZm9TaW5rQmFzZSAmc2luaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgdW5zaWduZWQgaW50IGNvbHVtbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCByb3dzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyICpmdW5jdGlvbk5hbWUpIG92ZXJyaWRlOworfTsKKwor
Um91bmRpbmdIZWxwZXJXcml0ZXIgKlJvdW5kaW5nSGVscGVyV3JpdGVyOjpjcmVhdGVIZWxwZXJX
cml0ZXIoY29uc3QgU2hTaGFkZXJPdXRwdXQgb3V0cHV0TGFuZ3VhZ2UpCit7CisgICAgQVNTRVJU
KEVtdWxhdGVQcmVjaXNpb246OlN1cHBvcnRlZEluTGFuZ3VhZ2Uob3V0cHV0TGFuZ3VhZ2UpKTsK
KyAgICBzd2l0Y2ggKG91dHB1dExhbmd1YWdlKQorICAgIHsKKyAgICAgICAgY2FzZSBTSF9ITFNM
XzRfMV9PVVRQVVQ6CisgICAgICAgICAgICByZXR1cm4gbmV3IFJvdW5kaW5nSGVscGVyV3JpdGVy
SExTTChvdXRwdXRMYW5ndWFnZSk7CisgICAgICAgIGNhc2UgU0hfRVNTTF9PVVRQVVQ6CisgICAg
ICAgICAgICByZXR1cm4gbmV3IFJvdW5kaW5nSGVscGVyV3JpdGVyRVNTTChvdXRwdXRMYW5ndWFn
ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gbmV3IFJvdW5kaW5nSGVs
cGVyV3JpdGVyR0xTTChvdXRwdXRMYW5ndWFnZSk7CisgICAgfQogfQogCi1zdGF0aWMgdm9pZCB3
cml0ZUNvbW1vblByZWNpc2lvbkVtdWxhdGlvbkhlbHBlcnMoVEluZm9TaW5rQmFzZSYgc2luaywg
U2hTaGFkZXJPdXRwdXQgb3V0cHV0TGFuZ3VhZ2UpCit2b2lkIFJvdW5kaW5nSGVscGVyV3JpdGVy
Ojp3cml0ZUNvbW1vblJvdW5kaW5nSGVscGVycyhUSW5mb1NpbmtCYXNlICZzaW5rLCBjb25zdCBp
bnQgc2hhZGVyVmVyc2lvbikKIHsKICAgICAvLyBXcml0ZSB0aGUgYW5nbGVfZnJtIGZ1bmN0aW9u
cyB0aGF0IHJvdW5kIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgdG8KICAgICAvLyBoYWxmIHByZWNp
c2lvbiwgYW5kIGFuZ2xlX2ZybCBmdW5jdGlvbnMgdGhhdCByb3VuZCB0aGVtIHRvIG1pbmltdW0g
bG93cAogICAgIC8vIHByZWNpc2lvbi4KIAorICAgIHdyaXRlRmxvYXRSb3VuZGluZ0hlbHBlcnMo
c2luayk7CisgICAgd3JpdGVWZWN0b3JSb3VuZGluZ0hlbHBlcnMoc2luaywgMik7CisgICAgd3Jp
dGVWZWN0b3JSb3VuZGluZ0hlbHBlcnMoc2luaywgMyk7CisgICAgd3JpdGVWZWN0b3JSb3VuZGlu
Z0hlbHBlcnMoc2luaywgNCk7CisgICAgaWYgKHNoYWRlclZlcnNpb24gPiAxMDApCisgICAgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBjb2x1bW5zID0gMjsgY29sdW1ucyA8PSA0OyArK2Nv
bHVtbnMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IHJvd3MgPSAy
OyByb3dzIDw9IDQ7ICsrcm93cykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB3cml0
ZU1hdHJpeFJvdW5kaW5nSGVscGVyKHNpbmssIGNvbHVtbnMsIHJvd3MsICJhbmdsZV9mcm0iKTsK
KyAgICAgICAgICAgICAgICB3cml0ZU1hdHJpeFJvdW5kaW5nSGVscGVyKHNpbmssIGNvbHVtbnMs
IHJvd3MsICJhbmdsZV9mcmwiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAg
ICBlbHNlCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBzaXplID0gMjsgc2l6ZSA8
PSA0OyArK3NpemUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHdyaXRlTWF0cml4Um91bmRpbmdI
ZWxwZXIoc2luaywgc2l6ZSwgc2l6ZSwgImFuZ2xlX2ZybSIpOworICAgICAgICAgICAgd3JpdGVN
YXRyaXhSb3VuZGluZ0hlbHBlcihzaW5rLCBzaXplLCBzaXplLCAiYW5nbGVfZnJsIik7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgUm91bmRpbmdIZWxwZXJXcml0ZXI6OndyaXRlQ29tcG91
bmRBc3NpZ25tZW50SGVscGVyKFRJbmZvU2lua0Jhc2UgJnNpbmssCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpsVHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIgKnJUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqb3BTdHIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpv
cE5hbWVTdHIpCit7CisgICAgc3RkOjpzdHJpbmcgbFR5cGVTdHIgPSBnZXRUeXBlU3RyaW5nKGxU
eXBlKTsKKyAgICBzdGQ6OnN0cmluZyByVHlwZVN0ciA9IGdldFR5cGVTdHJpbmcoclR5cGUpOwor
CisgICAgLy8gTm90ZSB0aGF0IHkgc2hvdWxkIGJlIHBhc3NlZCB0aHJvdWdoIGFuZ2xlX2ZybSBh
dCB0aGUgZnVuY3Rpb24gY2FsbCBzaXRlLAorICAgIC8vIGJ1dCB4IGNhbid0IGJlIHBhc3NlZCB0
aHJvdWdoIGFuZ2xlX2ZybSB0aGVyZSBzaW5jZSBpdCBpcyBhbiBpbm91dCBwYXJhbWV0ZXIuCisg
ICAgLy8gU28gb25seSBwYXNzIHggYW5kIHRoZSByZXN1bHQgdGhyb3VnaCBhbmdsZV9mcm0gaGVy
ZS4KKyAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgICAgc2luayA8PAorICAgICAgICBsVHlwZVN0
ciA8PCAiIGFuZ2xlX2NvbXBvdW5kXyIgPDwgb3BOYW1lU3RyIDw8ICJfZnJtKGlub3V0ICIgPDwg
bFR5cGVTdHIgPDwgIiB4LCBpbiAiIDw8IHJUeXBlU3RyIDw8ICIgeSkge1xuIgorICAgICAgICAi
ICAgIHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICIgPDwgb3BTdHIgPDwgIiB5KTtcbiIKKyAg
ICAgICAgIiAgICByZXR1cm4geDtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgc2luayA8PAorICAg
ICAgICBsVHlwZVN0ciA8PCAiIGFuZ2xlX2NvbXBvdW5kXyIgPDwgb3BOYW1lU3RyIDw8ICJfZnJs
KGlub3V0ICIgPDwgbFR5cGVTdHIgPDwgIiB4LCBpbiAiIDw8IHJUeXBlU3RyIDw8ICIgeSkge1xu
IgorICAgICAgICAiICAgIHggPSBhbmdsZV9mcmwoYW5nbGVfZnJtKHgpICIgPDwgb3BTdHIgPDwg
IiB5KTtcbiIKKyAgICAgICAgIiAgICByZXR1cm4geDtcbiIKKyAgICAgICAgIn1cbiI7CisgICAg
Ly8gY2xhbmctZm9ybWF0IG9uCit9CisKK3N0ZDo6c3RyaW5nIFJvdW5kaW5nSGVscGVyV3JpdGVy
R0xTTDo6Z2V0VHlwZVN0cmluZyhjb25zdCBjaGFyICpnbHNsVHlwZSkKK3sKKyAgICByZXR1cm4g
Z2xzbFR5cGU7Cit9CisKK3N0ZDo6c3RyaW5nIFJvdW5kaW5nSGVscGVyV3JpdGVyRVNTTDo6Z2V0
VHlwZVN0cmluZyhjb25zdCBjaGFyICpnbHNsVHlwZSkKK3sKKyAgICBzdGQ6OnN0cmluZ3N0cmVh
bSB0eXBlU3RyU3RyOworICAgIHR5cGVTdHJTdHIgPDwgImhpZ2hwICIgPDwgZ2xzbFR5cGU7Cisg
ICAgcmV0dXJuIHR5cGVTdHJTdHIuc3RyKCk7Cit9CisKK3ZvaWQgUm91bmRpbmdIZWxwZXJXcml0
ZXJHTFNMOjp3cml0ZUZsb2F0Um91bmRpbmdIZWxwZXJzKFRJbmZvU2lua0Jhc2UgJnNpbmspCit7
CiAgICAgLy8gVW5vcHRpbWl6ZWQgdmVyc2lvbiBvZiBhbmdsZV9mcm0gZm9yIHNpbmdsZSBmbG9h
dHM6CiAgICAgLy8KLSAgICAvLyBpbnQgd2ViZ2xfbWF4Tm9ybWFsRXhwb25lbnQoaW4gaW50IGV4
cG9uZW50Qml0cykgeworICAgIC8vIGludCB3ZWJnbF9tYXhOb3JtYWxFeHBvbmVudChpbiBpbnQg
ZXhwb25lbnRCaXRzKQorICAgIC8vIHsKICAgICAvLyAgICAgaW50IHBvc3NpYmxlRXhwb25lbnRz
ID0gaW50KGV4cDIoZmxvYXQoZXhwb25lbnRCaXRzKSkpOwogICAgIC8vICAgICBpbnQgZXhwb25l
bnRCaWFzID0gcG9zc2libGVFeHBvbmVudHMgLyAyIC0gMTsKICAgICAvLyAgICAgaW50IGFsbEV4
cG9uZW50Qml0c09uZSA9IHBvc3NpYmxlRXhwb25lbnRzIC0gMTsKQEAgLTczLDcgKzE4NCw4IEBA
CiAgICAgLy8gICAgIHJldHVybiAoYWxsRXhwb25lbnRCaXRzT25lIC0gMSkgLSBleHBvbmVudEJp
YXM7CiAgICAgLy8gfQogICAgIC8vCi0gICAgLy8gZmxvYXQgYW5nbGVfZnJtKGluIGZsb2F0IHgp
IHsKKyAgICAvLyBmbG9hdCBhbmdsZV9mcm0oaW4gZmxvYXQgeCkKKyAgICAvLyB7CiAgICAgLy8g
ICAgIGludCBtYW50aXNzYUJpdHMgPSAxMDsKICAgICAvLyAgICAgaW50IGV4cG9uZW50Qml0cyA9
IDU7CiAgICAgLy8gICAgIGZsb2F0IHBvc3NpYmxlTWFudGlzc2FzID0gZXhwMihmbG9hdChtYW50
aXNzYUJpdHMpKTsKQEAgLTgwLDE0ICsxOTIsMTcgQEAKICAgICAvLyAgICAgZmxvYXQgbWFudGlz
c2FNYXggPSAyLjAgLSAxLjAgLyBwb3NzaWJsZU1hbnRpc3NhczsKICAgICAvLyAgICAgaW50IG1h
eE5FID0gd2ViZ2xfbWF4Tm9ybWFsRXhwb25lbnQoZXhwb25lbnRCaXRzKTsKICAgICAvLyAgICAg
ZmxvYXQgbWF4ID0gZXhwMihmbG9hdChtYXhORSkpICogbWFudGlzc2FNYXg7Ci0gICAgLy8gICAg
IGlmICh4ID4gbWF4KSB7CisgICAgLy8gICAgIGlmICh4ID4gbWF4KQorICAgIC8vICAgICB7CiAg
ICAgLy8gICAgICAgICByZXR1cm4gbWF4OwogICAgIC8vICAgICB9Ci0gICAgLy8gICAgIGlmICh4
IDwgLW1heCkgeworICAgIC8vICAgICBpZiAoeCA8IC1tYXgpCisgICAgLy8gICAgIHsKICAgICAv
LyAgICAgICAgIHJldHVybiAtbWF4OwogICAgIC8vICAgICB9CiAgICAgLy8gICAgIGZsb2F0IGV4
cG9uZW50ID0gZmxvb3IobG9nMihhYnMoeCkpKTsKLSAgICAvLyAgICAgaWYgKGFicyh4KSA9PSAw
LjAgfHwgZXhwb25lbnQgPCAtZmxvYXQobWF4TkUpKSB7CisgICAgLy8gICAgIGlmIChhYnMoeCkg
PT0gMC4wIHx8IGV4cG9uZW50IDwgLWZsb2F0KG1heE5FKSkKKyAgICAvLyAgICAgewogICAgIC8v
ICAgICAgICAgcmV0dXJuIDAuMCAqIHNpZ24oeCkKICAgICAvLyAgICAgfQogICAgIC8vICAgICB4
ID0geCAqIGV4cDIoLShleHBvbmVudCAtIGZsb2F0KG1hbnRpc3NhQml0cykpKTsKQEAgLTEwOSwx
MzAgKzIyNCwyMDQgQEAKICAgICAvLyAgICBudW1iZXJzIHdpbGwgYmUgZmx1c2hlZCB0byB6ZXJv
IGVpdGhlciB3YXkgKDJeLTE1IGlzIHRoZSBzbWFsbGVzdAogICAgIC8vICAgIG5vcm1hbCBwb3Np
dGl2ZSBudW1iZXIpLCB0aGlzIGRvZXMgbm90IGludHJvZHVjZSBhbnkgZXJyb3IuCiAKLSAgICBz
dGQ6OnN0cmluZyBmbG9hdFR5cGUgPSAiZmxvYXQiOwotICAgIGlmIChvdXRwdXRMYW5ndWFnZSA9
PSBTSF9FU1NMX09VVFBVVCkKLSAgICAgICAgZmxvYXRUeXBlID0gImhpZ2hwIGZsb2F0IjsKKyAg
ICBzdGQ6OnN0cmluZyBmbG9hdFR5cGUgPSBnZXRUeXBlU3RyaW5nKCJmbG9hdCIpOwogCisgICAg
Ly8gY2xhbmctZm9ybWF0IG9mZgogICAgIHNpbmsgPDwKLSAgICBmbG9hdFR5cGUgPDwgIiBhbmds
ZV9mcm0oaW4gIiA8PCBmbG9hdFR5cGUgPDwgIiB4KSB7XG4iCi0gICAgIiAgICB4ID0gY2xhbXAo
eCwgLTY1NTA0LjAsIDY1NTA0LjApO1xuIgotICAgICIgICAgIiA8PCBmbG9hdFR5cGUgPDwgIiBl
eHBvbmVudCA9IGZsb29yKGxvZzIoYWJzKHgpICsgMWUtMzApKSAtIDEwLjA7XG4iCi0gICAgIiAg
ICBib29sIGlzTm9uWmVybyA9IChleHBvbmVudCA+PSAtMjUuMCk7XG4iCi0gICAgIiAgICB4ID0g
eCAqIGV4cDIoLWV4cG9uZW50KTtcbiIKLSAgICAiICAgIHggPSBzaWduKHgpICogZmxvb3IoYWJz
KHgpKTtcbiIKLSAgICAiICAgIHJldHVybiB4ICogZXhwMihleHBvbmVudCkgKiBmbG9hdChpc05v
blplcm8pO1xuIgotICAgICJ9XG4iOworICAgICAgICBmbG9hdFR5cGUgPDwgIiBhbmdsZV9mcm0o
aW4gIiA8PCBmbG9hdFR5cGUgPDwgIiB4KSB7XG4iCisgICAgICAgICIgICAgeCA9IGNsYW1wKHgs
IC02NTUwNC4wLCA2NTUwNC4wKTtcbiIKKyAgICAgICAgIiAgICAiIDw8IGZsb2F0VHlwZSA8PCAi
IGV4cG9uZW50ID0gZmxvb3IobG9nMihhYnMoeCkgKyAxZS0zMCkpIC0gMTAuMDtcbiIKKyAgICAg
ICAgIiAgICBib29sIGlzTm9uWmVybyA9IChleHBvbmVudCA+PSAtMjUuMCk7XG4iCisgICAgICAg
ICIgICAgeCA9IHggKiBleHAyKC1leHBvbmVudCk7XG4iCisgICAgICAgICIgICAgeCA9IHNpZ24o
eCkgKiBmbG9vcihhYnMoeCkpO1xuIgorICAgICAgICAiICAgIHJldHVybiB4ICogZXhwMihleHBv
bmVudCkgKiBmbG9hdChpc05vblplcm8pO1xuIgorICAgICAgICAifVxuIjsKIAogICAgIHNpbmsg
PDwKLSAgICBmbG9hdFR5cGUgPDwgIiBhbmdsZV9mcmwoaW4gIiA8PCBmbG9hdFR5cGUgPDwgIiB4
KSB7XG4iCi0gICAgIiAgICB4ID0gY2xhbXAoeCwgLTIuMCwgMi4wKTtcbiIKLSAgICAiICAgIHgg
PSB4ICogMjU2LjA7XG4iCi0gICAgIiAgICB4ID0gc2lnbih4KSAqIGZsb29yKGFicyh4KSk7XG4i
Ci0gICAgIiAgICByZXR1cm4geCAqIDAuMDAzOTA2MjU7XG4iCi0gICAgIn1cbiI7CisgICAgICAg
IGZsb2F0VHlwZSA8PCAiIGFuZ2xlX2ZybChpbiAiIDw8IGZsb2F0VHlwZSA8PCAiIHgpIHtcbiIK
KyAgICAgICAgIiAgICB4ID0gY2xhbXAoeCwgLTIuMCwgMi4wKTtcbiIKKyAgICAgICAgIiAgICB4
ID0geCAqIDI1Ni4wO1xuIgorICAgICAgICAiICAgIHggPSBzaWduKHgpICogZmxvb3IoYWJzKHgp
KTtcbiIKKyAgICAgICAgIiAgICByZXR1cm4geCAqIDAuMDAzOTA2MjU7XG4iCisgICAgICAgICJ9
XG4iOworICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorfQogCi0gICAgd3JpdGVWZWN0b3JQcmVjaXNp
b25FbXVsYXRpb25IZWxwZXJzKHNpbmssIG91dHB1dExhbmd1YWdlLCAyKTsKLSAgICB3cml0ZVZl
Y3RvclByZWNpc2lvbkVtdWxhdGlvbkhlbHBlcnMoc2luaywgb3V0cHV0TGFuZ3VhZ2UsIDMpOwot
ICAgIHdyaXRlVmVjdG9yUHJlY2lzaW9uRW11bGF0aW9uSGVscGVycyhzaW5rLCBvdXRwdXRMYW5n
dWFnZSwgNCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgc2l6ZSA9IDI7IHNpemUgPD0gNDsgKytz
aXplKQordm9pZCBSb3VuZGluZ0hlbHBlcldyaXRlckdMU0w6OndyaXRlVmVjdG9yUm91bmRpbmdI
ZWxwZXJzKFRJbmZvU2lua0Jhc2UgJnNpbmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IHNpemUpCit7
CisgICAgc3RkOjpzdHJpbmdzdHJlYW0gdmVjVHlwZVN0clN0cjsKKyAgICB2ZWNUeXBlU3RyU3Ry
IDw8ICJ2ZWMiIDw8IHNpemU7CisgICAgc3RkOjpzdHJpbmcgdmVjVHlwZSA9IGdldFR5cGVTdHJp
bmcodmVjVHlwZVN0clN0ci5zdHIoKS5jX3N0cigpKTsKKworICAgIC8vIGNsYW5nLWZvcm1hdCBv
ZmYKKyAgICBzaW5rIDw8CisgICAgICAgIHZlY1R5cGUgPDwgIiBhbmdsZV9mcm0oaW4gIiA8PCB2
ZWNUeXBlIDw8ICIgdikge1xuIgorICAgICAgICAiICAgIHYgPSBjbGFtcCh2LCAtNjU1MDQuMCwg
NjU1MDQuMCk7XG4iCisgICAgICAgICIgICAgIiA8PCB2ZWNUeXBlIDw8ICIgZXhwb25lbnQgPSBm
bG9vcihsb2cyKGFicyh2KSArIDFlLTMwKSkgLSAxMC4wO1xuIgorICAgICAgICAiICAgIGJ2ZWMi
IDw8IHNpemUgPDwgIiBpc05vblplcm8gPSBncmVhdGVyVGhhbkVxdWFsKGV4cG9uZW50LCB2ZWMi
IDw8IHNpemUgPDwgIigtMjUuMCkpO1xuIgorICAgICAgICAiICAgIHYgPSB2ICogZXhwMigtZXhw
b25lbnQpO1xuIgorICAgICAgICAiICAgIHYgPSBzaWduKHYpICogZmxvb3IoYWJzKHYpKTtcbiIK
KyAgICAgICAgIiAgICByZXR1cm4gdiAqIGV4cDIoZXhwb25lbnQpICogdmVjIiA8PCBzaXplIDw8
ICIoaXNOb25aZXJvKTtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBzaW5rIDw8CisgICAgICAg
IHZlY1R5cGUgPDwgIiBhbmdsZV9mcmwoaW4gIiA8PCB2ZWNUeXBlIDw8ICIgdikge1xuIgorICAg
ICAgICAiICAgIHYgPSBjbGFtcCh2LCAtMi4wLCAyLjApO1xuIgorICAgICAgICAiICAgIHYgPSB2
ICogMjU2LjA7XG4iCisgICAgICAgICIgICAgdiA9IHNpZ24odikgKiBmbG9vcihhYnModikpO1xu
IgorICAgICAgICAiICAgIHJldHVybiB2ICogMC4wMDM5MDYyNTtcbiIKKyAgICAgICAgIn1cbiI7
CisgICAgLy8gY2xhbmctZm9ybWF0IG9uCit9CisKK3ZvaWQgUm91bmRpbmdIZWxwZXJXcml0ZXJH
TFNMOjp3cml0ZU1hdHJpeFJvdW5kaW5nSGVscGVyKFRJbmZvU2lua0Jhc2UgJnNpbmssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB1bnNpZ25lZCBpbnQgY29sdW1ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCByb3dzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciAqZnVuY3Rpb25OYW1lKQoreworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIG1hdFR5cGVTdHJT
dHI7CisgICAgbWF0VHlwZVN0clN0ciA8PCAibWF0IiA8PCBjb2x1bW5zOworICAgIGlmIChyb3dz
ICE9IGNvbHVtbnMpCiAgICAgewotICAgICAgICB3cml0ZU1hdHJpeFByZWNpc2lvbkVtdWxhdGlv
bkhlbHBlcihzaW5rLCBvdXRwdXRMYW5ndWFnZSwgc2l6ZSwgImFuZ2xlX2ZybSIpOwotICAgICAg
ICB3cml0ZU1hdHJpeFByZWNpc2lvbkVtdWxhdGlvbkhlbHBlcihzaW5rLCBvdXRwdXRMYW5ndWFn
ZSwgc2l6ZSwgImFuZ2xlX2ZybCIpOworICAgICAgICBtYXRUeXBlU3RyU3RyIDw8ICJ4IiA8PCBy
b3dzOwogICAgIH0KKyAgICBzdGQ6OnN0cmluZyBtYXRUeXBlID0gZ2V0VHlwZVN0cmluZyhtYXRU
eXBlU3RyU3RyLnN0cigpLmNfc3RyKCkpOworCisgICAgc2luayA8PCBtYXRUeXBlIDw8ICIgIiA8
PCBmdW5jdGlvbk5hbWUgPDwgIihpbiAiIDw8IG1hdFR5cGUgPDwgIiBtKSB7XG4iCisgICAgICAg
ICA8PCAiICAgICIgPDwgbWF0VHlwZSA8PCAiIHJvdW5kZWQ7XG4iOworCisgICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBjb2x1bW5zOyArK2kpCisgICAgeworICAgICAgICBzaW5rIDw8
ICIgICAgcm91bmRlZFsiIDw8IGkgPDwgIl0gPSAiIDw8IGZ1bmN0aW9uTmFtZSA8PCAiKG1bIiA8
PCBpIDw8ICJdKTtcbiI7CisgICAgfQorCisgICAgc2luayA8PCAiICAgIHJldHVybiByb3VuZGVk
O1xuIgorICAgICAgICAgICAgIn1cbiI7CiB9CiAKLXN0YXRpYyB2b2lkIHdyaXRlQ29tcG91bmRB
c3NpZ25tZW50UHJlY2lzaW9uRW11bGF0aW9uKAotICAgIFRJbmZvU2lua0Jhc2UmIHNpbmssIFNo
U2hhZGVyT3V0cHV0IG91dHB1dExhbmd1YWdlLAotICAgIGNvbnN0IGNoYXIgKmxUeXBlLCBjb25z
dCBjaGFyICpyVHlwZSwgY29uc3QgY2hhciAqb3BTdHIsIGNvbnN0IGNoYXIgKm9wTmFtZVN0cikK
K3N0YXRpYyBjb25zdCBjaGFyICpHZXRITFNMVHlwZVN0cihjb25zdCBjaGFyICpmbG9hdFR5cGVT
dHIpCiB7Ci0gICAgc3RkOjpzdHJpbmcgbFR5cGVTdHIgPSBsVHlwZTsKLSAgICBzdGQ6OnN0cmlu
ZyByVHlwZVN0ciA9IHJUeXBlOwotICAgIGlmIChvdXRwdXRMYW5ndWFnZSA9PSBTSF9FU1NMX09V
VFBVVCkKKyAgICBpZiAoc3RyY21wKGZsb2F0VHlwZVN0ciwgImZsb2F0IikgPT0gMCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGxUeXBlU3RyU3RyOwotICAgICAgICBsVHlwZVN0
clN0ciA8PCAiaGlnaHAgIiA8PCBsVHlwZTsKLSAgICAgICAgbFR5cGVTdHIgPSBsVHlwZVN0clN0
ci5zdHIoKTsKLSAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gclR5cGVTdHJTdHI7Ci0gICAgICAg
IHJUeXBlU3RyU3RyIDw8ICJoaWdocCAiIDw8IHJUeXBlOwotICAgICAgICByVHlwZVN0ciA9IHJU
eXBlU3RyU3RyLnN0cigpOworICAgICAgICByZXR1cm4gImZsb2F0IjsKICAgICB9CisgICAgaWYg
KHN0cmNtcChmbG9hdFR5cGVTdHIsICJ2ZWMyIikgPT0gMCkKKyAgICB7CisgICAgICAgIHJldHVy
biAiZmxvYXQyIjsKKyAgICB9CisgICAgaWYgKHN0cmNtcChmbG9hdFR5cGVTdHIsICJ2ZWMzIikg
PT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiAiZmxvYXQzIjsKKyAgICB9CisgICAgaWYgKHN0
cmNtcChmbG9hdFR5cGVTdHIsICJ2ZWM0IikgPT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiAi
ZmxvYXQ0IjsKKyAgICB9CisgICAgaWYgKHN0cmNtcChmbG9hdFR5cGVTdHIsICJtYXQyIikgPT0g
MCkKKyAgICB7CisgICAgICAgIHJldHVybiAiZmxvYXQyeDIiOworICAgIH0KKyAgICBpZiAoc3Ry
Y21wKGZsb2F0VHlwZVN0ciwgIm1hdDMiKSA9PSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuICJm
bG9hdDN4MyI7CisgICAgfQorICAgIGlmIChzdHJjbXAoZmxvYXRUeXBlU3RyLCAibWF0NCIpID09
IDApCisgICAgeworICAgICAgICByZXR1cm4gImZsb2F0NHg0IjsKKyAgICB9CisgICAgaWYgKHN0
cmNtcChmbG9hdFR5cGVTdHIsICJtYXQyeDMiKSA9PSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJu
ICJmbG9hdDJ4MyI7CisgICAgfQorICAgIGlmIChzdHJjbXAoZmxvYXRUeXBlU3RyLCAibWF0Mng0
IikgPT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiAiZmxvYXQyeDQiOworICAgIH0KKyAgICBp
ZiAoc3RyY21wKGZsb2F0VHlwZVN0ciwgIm1hdDN4MiIpID09IDApCisgICAgeworICAgICAgICBy
ZXR1cm4gImZsb2F0M3gyIjsKKyAgICB9CisgICAgaWYgKHN0cmNtcChmbG9hdFR5cGVTdHIsICJt
YXQzeDQiKSA9PSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuICJmbG9hdDN4NCI7CisgICAgfQor
ICAgIGlmIChzdHJjbXAoZmxvYXRUeXBlU3RyLCAibWF0NHgyIikgPT0gMCkKKyAgICB7CisgICAg
ICAgIHJldHVybiAiZmxvYXQ0eDIiOworICAgIH0KKyAgICBpZiAoc3RyY21wKGZsb2F0VHlwZVN0
ciwgIm1hdDR4MyIpID09IDApCisgICAgeworICAgICAgICByZXR1cm4gImZsb2F0NHgzIjsKKyAg
ICB9CisgICAgVU5SRUFDSEFCTEUoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KIAotICAgIC8v
IE5vdGUgdGhhdCB5IHNob3VsZCBiZSBwYXNzZWQgdGhyb3VnaCBhbmdsZV9mcm0gYXQgdGhlIGZ1
bmN0aW9uIGNhbGwgc2l0ZSwKLSAgICAvLyBidXQgeCBjYW4ndCBiZSBwYXNzZWQgdGhyb3VnaCBh
bmdsZV9mcm0gdGhlcmUgc2luY2UgaXQgaXMgYW4gaW5vdXQgcGFyYW1ldGVyLgotICAgIC8vIFNv
IG9ubHkgcGFzcyB4IGFuZCB0aGUgcmVzdWx0IHRocm91Z2ggYW5nbGVfZnJtIGhlcmUuCitzdGQ6
OnN0cmluZyBSb3VuZGluZ0hlbHBlcldyaXRlckhMU0w6OmdldFR5cGVTdHJpbmcoY29uc3QgY2hh
ciAqZ2xzbFR5cGUpCit7CisgICAgcmV0dXJuIEdldEhMU0xUeXBlU3RyKGdsc2xUeXBlKTsKK30K
Kwordm9pZCBSb3VuZGluZ0hlbHBlcldyaXRlckhMU0w6OndyaXRlRmxvYXRSb3VuZGluZ0hlbHBl
cnMoVEluZm9TaW5rQmFzZSAmc2luaykKK3sKKyAgICAvLyBJbiBITFNMIHNjYWxhcnMgYXJlIHRo
ZSBzYW1lIGFzIDEtdmVjdG9ycy4KKyAgICB3cml0ZVZlY3RvclJvdW5kaW5nSGVscGVycyhzaW5r
LCAxKTsKK30KKwordm9pZCBSb3VuZGluZ0hlbHBlcldyaXRlckhMU0w6OndyaXRlVmVjdG9yUm91
bmRpbmdIZWxwZXJzKFRJbmZvU2lua0Jhc2UgJnNpbmssCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IHNp
emUpCit7CisgICAgc3RkOjpzdHJpbmdzdHJlYW0gdmVjVHlwZVN0clN0cjsKKyAgICB2ZWNUeXBl
U3RyU3RyIDw8ICJmbG9hdCIgPDwgc2l6ZTsKKyAgICBzdGQ6OnN0cmluZyB2ZWNUeXBlID0gdmVj
VHlwZVN0clN0ci5zdHIoKTsKKworICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKICAgICBzaW5rIDw8
Ci0gICAgbFR5cGVTdHIgPDwgIiBhbmdsZV9jb21wb3VuZF8iIDw8IG9wTmFtZVN0ciA8PCAiX2Zy
bShpbm91dCAiIDw8IGxUeXBlU3RyIDw8ICIgeCwgaW4gIiA8PCByVHlwZVN0ciA8PCAiIHkpIHtc
biIKLSAgICAiICAgIHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICIgPDwgb3BTdHIgPDwgIiB5
KTtcbiIKLSAgICAiICAgIHJldHVybiB4O1xuIgotICAgICJ9XG4iOworICAgICAgICB2ZWNUeXBl
IDw8ICIgYW5nbGVfZnJtKCIgPDwgdmVjVHlwZSA8PCAiIHYpIHtcbiIKKyAgICAgICAgIiAgICB2
ID0gY2xhbXAodiwgLTY1NTA0LjAsIDY1NTA0LjApO1xuIgorICAgICAgICAiICAgICIgPDwgdmVj
VHlwZSA8PCAiIGV4cG9uZW50ID0gZmxvb3IobG9nMihhYnModikgKyAxZS0zMCkpIC0gMTAuMDtc
biIKKyAgICAgICAgIiAgICBib29sIiA8PCBzaXplIDw8ICIgaXNOb25aZXJvID0gZXhwb25lbnQg
PCAtMjUuMDtcbiIKKyAgICAgICAgIiAgICB2ID0gdiAqIGV4cDIoLWV4cG9uZW50KTtcbiIKKyAg
ICAgICAgIiAgICB2ID0gc2lnbih2KSAqIGZsb29yKGFicyh2KSk7XG4iCisgICAgICAgICIgICAg
cmV0dXJuIHYgKiBleHAyKGV4cG9uZW50KSAqIChmbG9hdCIgPDwgc2l6ZSA8PCAiKShpc05vblpl
cm8pO1xuIgorICAgICAgICAifVxuIjsKKwogICAgIHNpbmsgPDwKLSAgICBsVHlwZVN0ciA8PCAi
IGFuZ2xlX2NvbXBvdW5kXyIgPDwgb3BOYW1lU3RyIDw8ICJfZnJsKGlub3V0ICIgPDwgbFR5cGVT
dHIgPDwgIiB4LCBpbiAiIDw8IHJUeXBlU3RyIDw8ICIgeSkge1xuIgotICAgICIgICAgeCA9IGFu
Z2xlX2ZybChhbmdsZV9mcm0oeCkgIiA8PCBvcFN0ciA8PCAiIHkpO1xuIgotICAgICIgICAgcmV0
dXJuIHg7XG4iCi0gICAgIn1cbiI7CisgICAgICAgIHZlY1R5cGUgPDwgIiBhbmdsZV9mcmwoIiA8
PCB2ZWNUeXBlIDw8ICIgdikge1xuIgorICAgICAgICAiICAgIHYgPSBjbGFtcCh2LCAtMi4wLCAy
LjApO1xuIgorICAgICAgICAiICAgIHYgPSB2ICogMjU2LjA7XG4iCisgICAgICAgICIgICAgdiA9
IHNpZ24odikgKiBmbG9vcihhYnModikpO1xuIgorICAgICAgICAiICAgIHJldHVybiB2ICogMC4w
MDM5MDYyNTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgLy8gY2xhbmctZm9ybWF0IG9uCiB9CiAK
LWNvbnN0IGNoYXIgKmdldEZsb2F0VHlwZVN0cihjb25zdCBUVHlwZSYgdHlwZSkKK3ZvaWQgUm91
bmRpbmdIZWxwZXJXcml0ZXJITFNMOjp3cml0ZU1hdHJpeFJvdW5kaW5nSGVscGVyKFRJbmZvU2lu
a0Jhc2UgJnNpbmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgY29sdW1ucywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVk
IGludCByb3dzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciAqZnVuY3Rpb25OYW1lKQogewotICAgIHN3aXRjaCAodHlw
ZS5nZXROb21pbmFsU2l6ZSgpKQorICAgIHN0ZDo6c3RyaW5nc3RyZWFtIG1hdFR5cGVTdHJTdHI7
CisgICAgbWF0VHlwZVN0clN0ciA8PCAiZmxvYXQiIDw8IGNvbHVtbnMgPDwgIngiIDw8IHJvd3M7
CisgICAgc3RkOjpzdHJpbmcgbWF0VHlwZSA9IG1hdFR5cGVTdHJTdHIuc3RyKCk7CisKKyAgICBz
aW5rIDw8IG1hdFR5cGUgPDwgIiAiIDw8IGZ1bmN0aW9uTmFtZSA8PCAiKCIgPDwgbWF0VHlwZSA8
PCAiIG0pIHtcbiIKKyAgICAgICAgIDw8ICIgICAgIiA8PCBtYXRUeXBlIDw8ICIgcm91bmRlZDtc
biI7CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGNvbHVtbnM7ICsraSkKICAg
ICB7Ci0gICAgICBjYXNlIDE6Ci0gICAgICAgIHJldHVybiAiZmxvYXQiOwotICAgICAgY2FzZSAy
OgotICAgICAgICBzd2l0Y2godHlwZS5nZXRTZWNvbmRhcnlTaXplKCkpCi0gICAgICAgIHsKLSAg
ICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICByZXR1cm4gInZlYzIiOwotICAgICAgICAgIGNh
c2UgMjoKLSAgICAgICAgICAgIHJldHVybiAibWF0MiI7Ci0gICAgICAgICAgY2FzZSAzOgotICAg
ICAgICAgICAgcmV0dXJuICJtYXQyeDMiOwotICAgICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAg
IHJldHVybiAibWF0Mng0IjsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICBjYXNl
IDM6Ci0gICAgICAgIHN3aXRjaCh0eXBlLmdldFNlY29uZGFyeVNpemUoKSkKLSAgICAgICAgewot
ICAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIHJldHVybiAidmVjMyI7Ci0gICAgICAgICAg
Y2FzZSAyOgotICAgICAgICAgICAgcmV0dXJuICJtYXQzeDIiOwotICAgICAgICAgIGNhc2UgMzoK
LSAgICAgICAgICAgIHJldHVybiAibWF0MyI7Ci0gICAgICAgICAgY2FzZSA0OgotICAgICAgICAg
ICAgcmV0dXJuICJtYXQzeDQiOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBVTlJF
QUNIQUJMRSgpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgIGNh
c2UgNDoKLSAgICAgICAgc3dpdGNoKHR5cGUuZ2V0U2Vjb25kYXJ5U2l6ZSgpKQotICAgICAgICB7
Ci0gICAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgcmV0dXJuICJ2ZWM0IjsKLSAgICAgICAg
ICBjYXNlIDI6Ci0gICAgICAgICAgICByZXR1cm4gIm1hdDR4MiI7Ci0gICAgICAgICAgY2FzZSAz
OgotICAgICAgICAgICAgcmV0dXJuICJtYXQ0eDMiOwotICAgICAgICAgIGNhc2UgNDoKLSAgICAg
ICAgICAgIHJldHVybiAibWF0NCI7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Cisg
ICAgICAgIHNpbmsgPDwgIiAgICByb3VuZGVkWyIgPDwgaSA8PCAiXSA9ICIgPDwgZnVuY3Rpb25O
YW1lIDw8ICIobVsiIDw8IGkgPDwgIl0pO1xuIjsKICAgICB9CisKKyAgICBzaW5rIDw8ICIgICAg
cmV0dXJuIHJvdW5kZWQ7XG4iCisgICAgICAgICAgICAifVxuIjsKIH0KIAogYm9vbCBjYW5Sb3Vu
ZEZsb2F0KGNvbnN0IFRUeXBlICZ0eXBlKQogewotICAgIHJldHVybiB0eXBlLmdldEJhc2ljVHlw
ZSgpID09IEVidEZsb2F0ICYmICF0eXBlLmlzTm9uU3F1YXJlTWF0cml4KCkgJiYgIXR5cGUuaXNB
cnJheSgpICYmCi0gICAgICAgICh0eXBlLmdldFByZWNpc2lvbigpID09IEVicExvdyB8fCB0eXBl
LmdldFByZWNpc2lvbigpID09IEVicE1lZGl1bSk7CisgICAgcmV0dXJuIHR5cGUuZ2V0QmFzaWNU
eXBlKCkgPT0gRWJ0RmxvYXQgJiYgIXR5cGUuaXNBcnJheSgpICYmCisgICAgICAgICAgICh0eXBl
LmdldFByZWNpc2lvbigpID09IEVicExvdyB8fCB0eXBlLmdldFByZWNpc2lvbigpID09IEVicE1l
ZGl1bSk7CiB9CiAKIFRJbnRlcm1BZ2dyZWdhdGUgKmNyZWF0ZUludGVybmFsRnVuY3Rpb25DYWxs
Tm9kZShUU3RyaW5nIG5hbWUsIFRJbnRlcm1Ob2RlICpjaGlsZCkKQEAgLTI0MSw3ICs0MzAsNyBA
QAogICAgIGNhbGxOb2RlLT5zZXRPcChFT3BGdW5jdGlvbkNhbGwpOwogICAgIFROYW1lIG5hbWVP
YmooVEZ1bmN0aW9uOjptYW5nbGVOYW1lKG5hbWUpKTsKICAgICBuYW1lT2JqLnNldEludGVybmFs
KHRydWUpOwotICAgIGNhbGxOb2RlLT5zZXROYW1lT2JqKG5hbWVPYmopOworICAgIGNhbGxOb2Rl
LT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+c2V0TmFtZU9iaihuYW1lT2JqKTsKICAgICBjYWxs
Tm9kZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKGNoaWxkKTsKICAgICByZXR1cm4gY2FsbE5v
ZGU7CiB9CkBAIC0yNTMsNyArNDQyLDkgQEAKICAgICAgICAgcm91bmRGdW5jdGlvbk5hbWUgPSAi
YW5nbGVfZnJtIjsKICAgICBlbHNlCiAgICAgICAgIHJvdW5kRnVuY3Rpb25OYW1lID0gImFuZ2xl
X2ZybCI7Ci0gICAgcmV0dXJuIGNyZWF0ZUludGVybmFsRnVuY3Rpb25DYWxsTm9kZShyb3VuZEZ1
bmN0aW9uTmFtZSwgcm91bmRlZENoaWxkKTsKKyAgICBUSW50ZXJtQWdncmVnYXRlICpjYWxsTm9k
ZSA9IGNyZWF0ZUludGVybmFsRnVuY3Rpb25DYWxsTm9kZShyb3VuZEZ1bmN0aW9uTmFtZSwgcm91
bmRlZENoaWxkKTsKKyAgICBjYWxsTm9kZS0+c2V0VHlwZShyb3VuZGVkQ2hpbGQtPmdldFR5cGUo
KSk7CisgICAgcmV0dXJuIGNhbGxOb2RlOwogfQogCiBUSW50ZXJtQWdncmVnYXRlICpjcmVhdGVD
b21wb3VuZEFzc2lnbm1lbnRGdW5jdGlvbkNhbGxOb2RlKFRJbnRlcm1UeXBlZCAqbGVmdCwgVElu
dGVybVR5cGVkICpyaWdodCwgY29uc3QgY2hhciAqb3BOYW1lU3RyKQpAQCAtMjc2LDE1ICs0Njcs
MTYgQEAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFRJbnRlcm1BZ2dyZWdh
dGUgKmFnZ1BhcmVudCA9IHBhcmVudC0+Z2V0QXNBZ2dyZWdhdGUoKTsKLSAgICAvLyBJZiB0aGUg
cGFyZW50J3Mgb3AgaXMgRU9wU2VxdWVuY2UsIHRoZSByZXN1bHQgaXMgbm90IGFzc2lnbmVkIGFu
eXdoZXJlLAorICAgIFRJbnRlcm1CbG9jayAqYmxvY2tQYXJlbnQgPSBwYXJlbnQtPmdldEFzQmxv
Y2soKTsKKyAgICAvLyBJZiB0aGUgcGFyZW50IGlzIGEgYmxvY2ssIHRoZSByZXN1bHQgaXMgbm90
IGFzc2lnbmVkIGFueXdoZXJlLAogICAgIC8vIHNvIHJvdW5kaW5nIGl0IGlzIG5vdCBuZWVkZWQu
IEluIHBhcnRpY3VsYXIsIHRoaXMgY2FuIGF2b2lkIGEgbG90IG9mCiAgICAgLy8gdW5uZWNlc3Nh
cnkgcm91bmRpbmcgb2YgdW51c2VkIHJldHVybiB2YWx1ZXMgb2YgYXNzaWdubWVudC4KLSAgICBp
ZiAoYWdnUGFyZW50ICYmIGFnZ1BhcmVudC0+Z2V0T3AoKSA9PSBFT3BTZXF1ZW5jZSkKKyAgICBp
ZiAoYmxvY2tQYXJlbnQpCiAgICAgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAg
IGlmIChhZ2dQYXJlbnQgJiYgYWdnUGFyZW50LT5nZXRPcCgpID09IEVPcENvbW1hICYmIChhZ2dQ
YXJlbnQtPmdldFNlcXVlbmNlKCktPmJhY2soKSAhPSBub2RlKSkKKyAgICBUSW50ZXJtQmluYXJ5
ICpiaW5hcnlQYXJlbnQgPSBwYXJlbnQtPmdldEFzQmluYXJ5Tm9kZSgpOworICAgIGlmIChiaW5h
cnlQYXJlbnQgJiYgYmluYXJ5UGFyZW50LT5nZXRPcCgpID09IEVPcENvbW1hICYmIChiaW5hcnlQ
YXJlbnQtPmdldFJpZ2h0KCkgIT0gbm9kZSkpCiAgICAgewogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQpAQCAtMzAyLDkgKzQ5NCw4IEBACiB7CiAgICAgaWYgKGNhblJvdW5kRmxvYXQobm9k
ZS0+Z2V0VHlwZSgpKSAmJiAhbURlY2xhcmluZ1ZhcmlhYmxlcyAmJiAhaXNMVmFsdWVSZXF1aXJl
ZEhlcmUoKSkKICAgICB7Ci0gICAgICAgIFRJbnRlcm1Ob2RlICpwYXJlbnQgPSBnZXRQYXJlbnRO
b2RlKCk7CiAgICAgICAgIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCA9IGNyZWF0ZVJvdW5kaW5n
RnVuY3Rpb25DYWxsTm9kZShub2RlKTsKLSAgICAgICAgbVJlcGxhY2VtZW50cy5wdXNoX2JhY2so
Tm9kZVVwZGF0ZUVudHJ5KHBhcmVudCwgbm9kZSwgcmVwbGFjZW1lbnQsIHRydWUpKTsKKyAgICAg
ICAgcXVldWVSZXBsYWNlbWVudChub2RlLCByZXBsYWNlbWVudCwgT3JpZ2luYWxOb2RlOjpCRUNP
TUVTX0NISUxEKTsKICAgICB9CiB9CiAKQEAgLTMxOSw3ICs1MTAsNyBAQAogICAgIGlmIChvcCA9
PSBFT3BJbml0aWFsaXplICYmIHZpc2l0ID09IEluVmlzaXQpCiAgICAgICAgIG1EZWNsYXJpbmdW
YXJpYWJsZXMgPSBmYWxzZTsKIAotICAgIGlmICgob3AgPT0gRU9wSW5kZXhEaXJlY3RTdHJ1Y3Qg
fHwgb3AgPT0gRU9wVmVjdG9yU3dpenpsZSkgJiYgdmlzaXQgPT0gSW5WaXNpdCkKKyAgICBpZiAo
KG9wID09IEVPcEluZGV4RGlyZWN0U3RydWN0KSAmJiB2aXNpdCA9PSBJblZpc2l0KQogICAgICAg
ICB2aXNpdENoaWxkcmVuID0gZmFsc2U7CiAKICAgICBpZiAodmlzaXQgIT0gUHJlVmlzaXQpCkBA
IC0zNTAsNyArNTQxLDcgQEAKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCA9IGNyZWF0ZVJvdW5kaW5nRnVu
Y3Rpb25DYWxsTm9kZShub2RlKTsKLSAgICAgICAgICAgIG1SZXBsYWNlbWVudHMucHVzaF9iYWNr
KE5vZGVVcGRhdGVFbnRyeShwYXJlbnQsIG5vZGUsIHJlcGxhY2VtZW50LCB0cnVlKSk7CisgICAg
ICAgICAgICBxdWV1ZVJlcGxhY2VtZW50KG5vZGUsIHJlcGxhY2VtZW50LCBPcmlnaW5hbE5vZGU6
OkJFQ09NRVNfQ0hJTEQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgfQogCkBAIC0z
NTcsMTkgKzU0OCwyMyBAQAogICAgICAgICAgIC8vIENvbXBvdW5kIGFzc2lnbm1lbnQgY2FzZXMg
bmVlZCB0byByZXBsYWNlIHRoZSBvcGVyYXRvciB3aXRoIGEgZnVuY3Rpb24gY2FsbC4KICAgICAg
ICAgICBjYXNlIEVPcEFkZEFzc2lnbjoKICAgICAgICAgICB7Ci0gICAgICAgICAgICBtRW11bGF0
ZUNvbXBvdW5kQWRkLmluc2VydChUeXBlUGFpcihnZXRGbG9hdFR5cGVTdHIodHlwZSksIGdldEZs
b2F0VHlwZVN0cihub2RlLT5nZXRSaWdodCgpLT5nZXRUeXBlKCkpKSk7Ci0gICAgICAgICAgICBU
SW50ZXJtTm9kZSAqcGFyZW50ID0gZ2V0UGFyZW50Tm9kZSgpOwotICAgICAgICAgICAgVEludGVy
bU5vZGUgKnJlcGxhY2VtZW50ID0gY3JlYXRlQ29tcG91bmRBc3NpZ25tZW50RnVuY3Rpb25DYWxs
Tm9kZShub2RlLT5nZXRMZWZ0KCksIG5vZGUtPmdldFJpZ2h0KCksICJhZGQiKTsKLSAgICAgICAg
ICAgIG1SZXBsYWNlbWVudHMucHVzaF9iYWNrKE5vZGVVcGRhdGVFbnRyeShwYXJlbnQsIG5vZGUs
IHJlcGxhY2VtZW50LCBmYWxzZSkpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
IG1FbXVsYXRlQ29tcG91bmRBZGQuaW5zZXJ0KAorICAgICAgICAgICAgICAgICAgVHlwZVBhaXIo
dHlwZS5nZXRCdWlsdEluVHlwZU5hbWVTdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5vZGUtPmdldFJpZ2h0KCktPmdldFR5cGUoKS5nZXRCdWlsdEluVHlwZU5hbWVTdHJpbmco
KSkpOworICAgICAgICAgICAgICBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQgPSBjcmVhdGVDb21w
b3VuZEFzc2lnbm1lbnRGdW5jdGlvbkNhbGxOb2RlKAorICAgICAgICAgICAgICAgICAgbm9kZS0+
Z2V0TGVmdCgpLCBub2RlLT5nZXRSaWdodCgpLCAiYWRkIik7CisgICAgICAgICAgICAgIHF1ZXVl
UmVwbGFjZW1lbnQobm9kZSwgcmVwbGFjZW1lbnQsIE9yaWdpbmFsTm9kZTo6SVNfRFJPUFBFRCk7
CisgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgIH0KICAgICAgICAgICBjYXNlIEVPcFN1
YkFzc2lnbjoKICAgICAgICAgICB7Ci0gICAgICAgICAgICBtRW11bGF0ZUNvbXBvdW5kU3ViLmlu
c2VydChUeXBlUGFpcihnZXRGbG9hdFR5cGVTdHIodHlwZSksIGdldEZsb2F0VHlwZVN0cihub2Rl
LT5nZXRSaWdodCgpLT5nZXRUeXBlKCkpKSk7Ci0gICAgICAgICAgICBUSW50ZXJtTm9kZSAqcGFy
ZW50ID0gZ2V0UGFyZW50Tm9kZSgpOwotICAgICAgICAgICAgVEludGVybU5vZGUgKnJlcGxhY2Vt
ZW50ID0gY3JlYXRlQ29tcG91bmRBc3NpZ25tZW50RnVuY3Rpb25DYWxsTm9kZShub2RlLT5nZXRM
ZWZ0KCksIG5vZGUtPmdldFJpZ2h0KCksICJzdWIiKTsKLSAgICAgICAgICAgIG1SZXBsYWNlbWVu
dHMucHVzaF9iYWNrKE5vZGVVcGRhdGVFbnRyeShwYXJlbnQsIG5vZGUsIHJlcGxhY2VtZW50LCBm
YWxzZSkpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIG1FbXVsYXRlQ29tcG91
bmRTdWIuaW5zZXJ0KAorICAgICAgICAgICAgICAgICAgVHlwZVBhaXIodHlwZS5nZXRCdWlsdElu
VHlwZU5hbWVTdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmdldFJp
Z2h0KCktPmdldFR5cGUoKS5nZXRCdWlsdEluVHlwZU5hbWVTdHJpbmcoKSkpOworICAgICAgICAg
ICAgICBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQgPSBjcmVhdGVDb21wb3VuZEFzc2lnbm1lbnRG
dW5jdGlvbkNhbGxOb2RlKAorICAgICAgICAgICAgICAgICAgbm9kZS0+Z2V0TGVmdCgpLCBub2Rl
LT5nZXRSaWdodCgpLCAic3ViIik7CisgICAgICAgICAgICAgIHF1ZXVlUmVwbGFjZW1lbnQobm9k
ZSwgcmVwbGFjZW1lbnQsIE9yaWdpbmFsTm9kZTo6SVNfRFJPUFBFRCk7CisgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgIH0KICAgICAgICAgICBjYXNlIEVPcE11bEFzc2lnbjoKICAgICAg
ICAgICBjYXNlIEVPcFZlY3RvclRpbWVzTWF0cml4QXNzaWduOgpAQCAtMzc3LDE5ICs1NzIsMjMg
QEAKICAgICAgICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzU2NhbGFyQXNzaWduOgogICAgICAgICAg
IGNhc2UgRU9wTWF0cml4VGltZXNNYXRyaXhBc3NpZ246CiAgICAgICAgICAgewotICAgICAgICAg
ICAgbUVtdWxhdGVDb21wb3VuZE11bC5pbnNlcnQoVHlwZVBhaXIoZ2V0RmxvYXRUeXBlU3RyKHR5
cGUpLCBnZXRGbG9hdFR5cGVTdHIobm9kZS0+Z2V0UmlnaHQoKS0+Z2V0VHlwZSgpKSkpOwotICAg
ICAgICAgICAgVEludGVybU5vZGUgKnBhcmVudCA9IGdldFBhcmVudE5vZGUoKTsKLSAgICAgICAg
ICAgIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCA9IGNyZWF0ZUNvbXBvdW5kQXNzaWdubWVudEZ1
bmN0aW9uQ2FsbE5vZGUobm9kZS0+Z2V0TGVmdCgpLCBub2RlLT5nZXRSaWdodCgpLCAibXVsIik7
Ci0gICAgICAgICAgICBtUmVwbGFjZW1lbnRzLnB1c2hfYmFjayhOb2RlVXBkYXRlRW50cnkocGFy
ZW50LCBub2RlLCByZXBsYWNlbWVudCwgZmFsc2UpKTsKLSAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICBtRW11bGF0ZUNvbXBvdW5kTXVsLmluc2VydCgKKyAgICAgICAgICAgICAgICAg
IFR5cGVQYWlyKHR5cGUuZ2V0QnVpbHRJblR5cGVOYW1lU3RyaW5nKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBub2RlLT5nZXRSaWdodCgpLT5nZXRUeXBlKCkuZ2V0QnVpbHRJblR5cGVO
YW1lU3RyaW5nKCkpKTsKKyAgICAgICAgICAgICAgVEludGVybU5vZGUgKnJlcGxhY2VtZW50ID0g
Y3JlYXRlQ29tcG91bmRBc3NpZ25tZW50RnVuY3Rpb25DYWxsTm9kZSgKKyAgICAgICAgICAgICAg
ICAgIG5vZGUtPmdldExlZnQoKSwgbm9kZS0+Z2V0UmlnaHQoKSwgIm11bCIpOworICAgICAgICAg
ICAgICBxdWV1ZVJlcGxhY2VtZW50KG5vZGUsIHJlcGxhY2VtZW50LCBPcmlnaW5hbE5vZGU6OklT
X0RST1BQRUQpOworICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICB9CiAgICAgICAgICAg
Y2FzZSBFT3BEaXZBc3NpZ246CiAgICAgICAgICAgewotICAgICAgICAgICAgbUVtdWxhdGVDb21w
b3VuZERpdi5pbnNlcnQoVHlwZVBhaXIoZ2V0RmxvYXRUeXBlU3RyKHR5cGUpLCBnZXRGbG9hdFR5
cGVTdHIobm9kZS0+Z2V0UmlnaHQoKS0+Z2V0VHlwZSgpKSkpOwotICAgICAgICAgICAgVEludGVy
bU5vZGUgKnBhcmVudCA9IGdldFBhcmVudE5vZGUoKTsKLSAgICAgICAgICAgIFRJbnRlcm1Ob2Rl
ICpyZXBsYWNlbWVudCA9IGNyZWF0ZUNvbXBvdW5kQXNzaWdubWVudEZ1bmN0aW9uQ2FsbE5vZGUo
bm9kZS0+Z2V0TGVmdCgpLCBub2RlLT5nZXRSaWdodCgpLCAiZGl2Iik7Ci0gICAgICAgICAgICBt
UmVwbGFjZW1lbnRzLnB1c2hfYmFjayhOb2RlVXBkYXRlRW50cnkocGFyZW50LCBub2RlLCByZXBs
YWNlbWVudCwgZmFsc2UpKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBtRW11
bGF0ZUNvbXBvdW5kRGl2Lmluc2VydCgKKyAgICAgICAgICAgICAgICAgIFR5cGVQYWlyKHR5cGUu
Z2V0QnVpbHRJblR5cGVOYW1lU3RyaW5nKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBu
b2RlLT5nZXRSaWdodCgpLT5nZXRUeXBlKCkuZ2V0QnVpbHRJblR5cGVOYW1lU3RyaW5nKCkpKTsK
KyAgICAgICAgICAgICAgVEludGVybU5vZGUgKnJlcGxhY2VtZW50ID0gY3JlYXRlQ29tcG91bmRB
c3NpZ25tZW50RnVuY3Rpb25DYWxsTm9kZSgKKyAgICAgICAgICAgICAgICAgIG5vZGUtPmdldExl
ZnQoKSwgbm9kZS0+Z2V0UmlnaHQoKSwgImRpdiIpOworICAgICAgICAgICAgICBxdWV1ZVJlcGxh
Y2VtZW50KG5vZGUsIHJlcGxhY2VtZW50LCBPcmlnaW5hbE5vZGU6OklTX0RST1BQRUQpOworICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICB9CiAgICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIC8vIFRoZSByZXN0IG9mIHRoZSBiaW5hcnkgb3BlcmF0aW9ucyBzaG91bGQgbm90IG5l
ZWQgcHJlY2lzaW9uIGVtdWxhdGlvbi4KQEAgLTQwNCw5ICs2MDMsNyBAQAogICAgIGJvb2wgdmlz
aXRDaGlsZHJlbiA9IHRydWU7CiAgICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQogICAgIHsKLSAg
ICAgIGNhc2UgRU9wU2VxdWVuY2U6CiAgICAgICBjYXNlIEVPcENvbnN0cnVjdFN0cnVjdDoKLSAg
ICAgIGNhc2UgRU9wRnVuY3Rpb246CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BQcm90
b3R5cGU6CiAgICAgICAgIHZpc2l0Q2hpbGRyZW4gPSBmYWxzZTsKQEAgLTQ0NCw3ICs2NDEsNyBA
QAogICAgICAgICAgICAgICAgIHBhcmVudFVzZXNSZXN1bHQocGFyZW50LCBub2RlKSkKICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQgPSBjcmVh
dGVSb3VuZGluZ0Z1bmN0aW9uQ2FsbE5vZGUobm9kZSk7Ci0gICAgICAgICAgICAgICAgbVJlcGxh
Y2VtZW50cy5wdXNoX2JhY2soTm9kZVVwZGF0ZUVudHJ5KHBhcmVudCwgbm9kZSwgcmVwbGFjZW1l
bnQsIHRydWUpKTsKKyAgICAgICAgICAgICAgICBxdWV1ZVJlcGxhY2VtZW50KG5vZGUsIHJlcGxh
Y2VtZW50LCBPcmlnaW5hbE5vZGU6OkJFQ09NRVNfQ0hJTEQpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtNDU0LDcgKzY1MSw3IEBACiAgICAgICAgIGlmIChj
YW5Sb3VuZEZsb2F0KG5vZGUtPmdldFR5cGUoKSkgJiYgdmlzaXQgPT0gUHJlVmlzaXQgJiYgcGFy
ZW50VXNlc1Jlc3VsdChwYXJlbnQsIG5vZGUpKQogICAgICAgICB7CiAgICAgICAgICAgICBUSW50
ZXJtTm9kZSAqcmVwbGFjZW1lbnQgPSBjcmVhdGVSb3VuZGluZ0Z1bmN0aW9uQ2FsbE5vZGUobm9k
ZSk7Ci0gICAgICAgICAgICBtUmVwbGFjZW1lbnRzLnB1c2hfYmFjayhOb2RlVXBkYXRlRW50cnko
cGFyZW50LCBub2RlLCByZXBsYWNlbWVudCwgdHJ1ZSkpOworICAgICAgICAgICAgcXVldWVSZXBs
YWNlbWVudChub2RlLCByZXBsYWNlbWVudCwgT3JpZ2luYWxOb2RlOjpCRUNPTUVTX0NISUxEKTsK
ICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CkBAIC00NzYsOSArNjczLDggQEAKICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGlmIChjYW5Sb3VuZEZsb2F0KG5vZGUtPmdldFR5cGUoKSkg
JiYgdmlzaXQgPT0gUHJlVmlzaXQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFRJbnRlcm1Ob2Rl
ICpwYXJlbnQgPSBnZXRQYXJlbnROb2RlKCk7CiAgICAgICAgICAgICBUSW50ZXJtTm9kZSAqcmVw
bGFjZW1lbnQgPSBjcmVhdGVSb3VuZGluZ0Z1bmN0aW9uQ2FsbE5vZGUobm9kZSk7Ci0gICAgICAg
ICAgICBtUmVwbGFjZW1lbnRzLnB1c2hfYmFjayhOb2RlVXBkYXRlRW50cnkocGFyZW50LCBub2Rl
LCByZXBsYWNlbWVudCwgdHJ1ZSkpOworICAgICAgICAgICAgcXVldWVSZXBsYWNlbWVudChub2Rl
LCByZXBsYWNlbWVudCwgT3JpZ2luYWxOb2RlOjpCRUNPTUVTX0NISUxEKTsKICAgICAgICAgfQog
ICAgICAgICBicmVhazsKICAgICB9CkBAIC00ODYsMjIgKzY4MiwzNyBAQAogICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIEVtdWxhdGVQcmVjaXNpb246OndyaXRlRW11bGF0aW9uSGVscGVycyhU
SW5mb1NpbmtCYXNlJiBzaW5rLCBTaFNoYWRlck91dHB1dCBvdXRwdXRMYW5ndWFnZSkKK3ZvaWQg
RW11bGF0ZVByZWNpc2lvbjo6d3JpdGVFbXVsYXRpb25IZWxwZXJzKFRJbmZvU2lua0Jhc2UgJnNp
bmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBp
bnQgc2hhZGVyVmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFNoU2hhZGVyT3V0cHV0IG91dHB1dExhbmd1YWdlKQogewotICAgIC8vIE90
aGVyIGxhbmd1YWdlcyBub3QgeWV0IHN1cHBvcnRlZAotICAgIEFTU0VSVChvdXRwdXRMYW5ndWFn
ZSA9PSBTSF9HTFNMX0NPTVBBVElCSUxJVFlfT1VUUFVUIHx8Ci0gICAgICAgICAgIElzR0xTTDEz
ME9yTmV3ZXIob3V0cHV0TGFuZ3VhZ2UpIHx8Ci0gICAgICAgICAgIG91dHB1dExhbmd1YWdlID09
IFNIX0VTU0xfT1VUUFVUKTsKLSAgICB3cml0ZUNvbW1vblByZWNpc2lvbkVtdWxhdGlvbkhlbHBl
cnMoc2luaywgb3V0cHV0TGFuZ3VhZ2UpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSb3VuZGluZ0hl
bHBlcldyaXRlcj4gcm91bmRpbmdIZWxwZXJXcml0ZXIoCisgICAgICAgIFJvdW5kaW5nSGVscGVy
V3JpdGVyOjpjcmVhdGVIZWxwZXJXcml0ZXIob3V0cHV0TGFuZ3VhZ2UpKTsKIAorICAgIHJvdW5k
aW5nSGVscGVyV3JpdGVyLT53cml0ZUNvbW1vblJvdW5kaW5nSGVscGVycyhzaW5rLCBzaGFkZXJW
ZXJzaW9uKTsKKwogICAgIEVtdWxhdGlvblNldDo6Y29uc3RfaXRlcmF0b3IgaXQ7CiAgICAgZm9y
IChpdCA9IG1FbXVsYXRlQ29tcG91bmRBZGQuYmVnaW4oKTsgaXQgIT0gbUVtdWxhdGVDb21wb3Vu
ZEFkZC5lbmQoKTsgaXQrKykKLSAgICAgICAgd3JpdGVDb21wb3VuZEFzc2lnbm1lbnRQcmVjaXNp
b25FbXVsYXRpb24oc2luaywgb3V0cHV0TGFuZ3VhZ2UsIGl0LT5sVHlwZSwgaXQtPnJUeXBlLCAi
KyIsICJhZGQiKTsKKyAgICAgICAgcm91bmRpbmdIZWxwZXJXcml0ZXItPndyaXRlQ29tcG91bmRB
c3NpZ25tZW50SGVscGVyKHNpbmssIGl0LT5sVHlwZSwgaXQtPnJUeXBlLCAiKyIsICJhZGQiKTsK
ICAgICBmb3IgKGl0ID0gbUVtdWxhdGVDb21wb3VuZFN1Yi5iZWdpbigpOyBpdCAhPSBtRW11bGF0
ZUNvbXBvdW5kU3ViLmVuZCgpOyBpdCsrKQotICAgICAgICB3cml0ZUNvbXBvdW5kQXNzaWdubWVu
dFByZWNpc2lvbkVtdWxhdGlvbihzaW5rLCBvdXRwdXRMYW5ndWFnZSwgaXQtPmxUeXBlLCBpdC0+
clR5cGUsICItIiwgInN1YiIpOworICAgICAgICByb3VuZGluZ0hlbHBlcldyaXRlci0+d3JpdGVD
b21wb3VuZEFzc2lnbm1lbnRIZWxwZXIoc2luaywgaXQtPmxUeXBlLCBpdC0+clR5cGUsICItIiwg
InN1YiIpOwogICAgIGZvciAoaXQgPSBtRW11bGF0ZUNvbXBvdW5kRGl2LmJlZ2luKCk7IGl0ICE9
IG1FbXVsYXRlQ29tcG91bmREaXYuZW5kKCk7IGl0KyspCi0gICAgICAgIHdyaXRlQ29tcG91bmRB
c3NpZ25tZW50UHJlY2lzaW9uRW11bGF0aW9uKHNpbmssIG91dHB1dExhbmd1YWdlLCBpdC0+bFR5
cGUsIGl0LT5yVHlwZSwgIi8iLCAiZGl2Iik7CisgICAgICAgIHJvdW5kaW5nSGVscGVyV3JpdGVy
LT53cml0ZUNvbXBvdW5kQXNzaWdubWVudEhlbHBlcihzaW5rLCBpdC0+bFR5cGUsIGl0LT5yVHlw
ZSwgIi8iLCAiZGl2Iik7CiAgICAgZm9yIChpdCA9IG1FbXVsYXRlQ29tcG91bmRNdWwuYmVnaW4o
KTsgaXQgIT0gbUVtdWxhdGVDb21wb3VuZE11bC5lbmQoKTsgaXQrKykKLSAgICAgICAgd3JpdGVD
b21wb3VuZEFzc2lnbm1lbnRQcmVjaXNpb25FbXVsYXRpb24oc2luaywgb3V0cHV0TGFuZ3VhZ2Us
IGl0LT5sVHlwZSwgaXQtPnJUeXBlLCAiKiIsICJtdWwiKTsKKyAgICAgICAgcm91bmRpbmdIZWxw
ZXJXcml0ZXItPndyaXRlQ29tcG91bmRBc3NpZ25tZW50SGVscGVyKHNpbmssIGl0LT5sVHlwZSwg
aXQtPnJUeXBlLCAiKiIsICJtdWwiKTsKIH0KIAorLy8gc3RhdGljCitib29sIEVtdWxhdGVQcmVj
aXNpb246OlN1cHBvcnRlZEluTGFuZ3VhZ2UoY29uc3QgU2hTaGFkZXJPdXRwdXQgb3V0cHV0TGFu
Z3VhZ2UpCit7CisgICAgc3dpdGNoIChvdXRwdXRMYW5ndWFnZSkKKyAgICB7CisgICAgICAgIGNh
c2UgU0hfSExTTF80XzFfT1VUUFVUOgorICAgICAgICBjYXNlIFNIX0VTU0xfT1VUUFVUOgorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAvLyBP
dGhlciBsYW5ndWFnZXMgbm90IHlldCBzdXBwb3J0ZWQKKyAgICAgICAgICAgIHJldHVybiAob3V0
cHV0TGFuZ3VhZ2UgPT0gU0hfR0xTTF9DT01QQVRJQklMSVRZX09VVFBVVCB8fAorICAgICAgICAg
ICAgICAgICAgICBJc0dMU0wxMzBPck5ld2VyKG91dHB1dExhbmd1YWdlKSk7CisgICAgfQorfQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRW11
bGF0ZVByZWNpc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL0VtdWxhdGVQcmVjaXNpb24uaAkocmV2aXNpb24gMjA4MDIx
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRW11
bGF0ZVByZWNpc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCwxMiBAQAogICAgIGJv
b2wgdmlzaXRVbmFyeShWaXNpdCB2aXNpdCwgVEludGVybVVuYXJ5ICpub2RlKSBvdmVycmlkZTsK
ICAgICBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpu
b2RlKSBvdmVycmlkZTsKIAotICAgIHZvaWQgd3JpdGVFbXVsYXRpb25IZWxwZXJzKFRJbmZvU2lu
a0Jhc2UmIHNpbmssIFNoU2hhZGVyT3V0cHV0IG91dHB1dExhbmd1YWdlKTsKKyAgICB2b2lkIHdy
aXRlRW11bGF0aW9uSGVscGVycyhUSW5mb1NpbmtCYXNlICZzaW5rLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGludCBzaGFkZXJWZXJzaW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFNoU2hhZGVyT3V0cHV0IG91dHB1dExhbmd1YWdlKTsKIAor
ICAgIHN0YXRpYyBib29sIFN1cHBvcnRlZEluTGFuZ3VhZ2UoY29uc3QgU2hTaGFkZXJPdXRwdXQg
b3V0cHV0TGFuZ3VhZ2UpOworCiAgIHByaXZhdGU6CiAgICAgc3RydWN0IFR5cGVQYWlyCiAgICAg
ewpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
RXhwYW5kSW50ZWdlclBvd0V4cHJlc3Npb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9FeHBhbmRJbnRlZ2VyUG93RXhw
cmVzc2lvbnMuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL0V4cGFuZEludGVnZXJQb3dFeHByZXNzaW9ucy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxNTQgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gSW1wbGVtZW50
YXRpb24gb2YgdGhlIGludGVnZXIgcG93IGV4cHJlc3Npb25zIEhMU0wgYnVnIHdvcmthcm91bmQu
CisvLyBTZWUgaGVhZGVyIGZvciBtb3JlIGluZm8uCisKKyNpbmNsdWRlICJjb21waWxlci90cmFu
c2xhdG9yL0V4cGFuZEludGVnZXJQb3dFeHByZXNzaW9ucy5oIgorCisjaW5jbHVkZSA8Y21hdGg+
CisjaW5jbHVkZSA8Y3N0ZGxpYj4KKworI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50
ZXJtTm9kZS5oIgorCituYW1lc3BhY2Ugc2gKK3sKKworbmFtZXNwYWNlCit7CisKK2NsYXNzIFRy
YXZlcnNlciA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCit7CisgIHB1YmxpYzoKKyAgICBzdGF0
aWMgdm9pZCBBcHBseShUSW50ZXJtTm9kZSAqcm9vdCwgdW5zaWduZWQgaW50ICp0ZW1wSW5kZXgp
OworCisgIHByaXZhdGU6CisgICAgVHJhdmVyc2VyKCk7CisgICAgYm9vbCB2aXNpdEFnZ3JlZ2F0
ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBuZXh0SXRlcmF0aW9uKCk7CisKKyAgICBib29sIG1Gb3VuZCA9IGZhbHNlOworfTsKKworLy8g
c3RhdGljCit2b2lkIFRyYXZlcnNlcjo6QXBwbHkoVEludGVybU5vZGUgKnJvb3QsIHVuc2lnbmVk
IGludCAqdGVtcEluZGV4KQoreworICAgIFRyYXZlcnNlciB0cmF2ZXJzZXI7CisgICAgdHJhdmVy
c2VyLnVzZVRlbXBvcmFyeUluZGV4KHRlbXBJbmRleCk7CisgICAgZG8KKyAgICB7CisgICAgICAg
IHRyYXZlcnNlci5uZXh0SXRlcmF0aW9uKCk7CisgICAgICAgIHJvb3QtPnRyYXZlcnNlKCZ0cmF2
ZXJzZXIpOworICAgICAgICBpZiAodHJhdmVyc2VyLm1Gb3VuZCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdHJhdmVyc2VyLnVwZGF0ZVRyZWUoKTsKKyAgICAgICAgfQorICAgIH0gd2hpbGUgKHRy
YXZlcnNlci5tRm91bmQpOworfQorCitUcmF2ZXJzZXI6OlRyYXZlcnNlcigpIDogVEludGVybVRy
YXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2UpCit7Cit9CisKK3ZvaWQgVHJhdmVyc2VyOjpuZXh0
SXRlcmF0aW9uKCkKK3sKKyAgICBtRm91bmQgPSBmYWxzZTsKKyAgICBuZXh0VGVtcG9yYXJ5SW5k
ZXgoKTsKK30KKworYm9vbCBUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBU
SW50ZXJtQWdncmVnYXRlICpub2RlKQoreworICAgIGlmIChtRm91bmQpCisgICAgeworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gVGVzdCAwOiBza2lwIG5vbi1wb3cgb3Bl
cmF0b3JzLgorICAgIGlmIChub2RlLT5nZXRPcCgpICE9IEVPcFBvdykKKyAgICB7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIGNvbnN0IFRJbnRlcm1TZXF1ZW5jZSAqc2VxdWVu
Y2UgPSBub2RlLT5nZXRTZXF1ZW5jZSgpOworICAgIEFTU0VSVChzZXF1ZW5jZS0+c2l6ZSgpID09
IDJ1KTsKKyAgICBjb25zdCBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqY29uc3RhbnROb2RlID0gc2Vx
dWVuY2UtPmF0KDEpLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKKworICAgIC8vIFRlc3QgMTogY2hl
Y2sgZm9yIGEgc2luZ2xlIGNvbnN0YW50LgorICAgIGlmICghY29uc3RhbnROb2RlIHx8IGNvbnN0
YW50Tm9kZS0+Z2V0Tm9taW5hbFNpemUoKSAhPSAxKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCisgICAgY29uc3QgVENvbnN0YW50VW5pb24gKmNvbnN0YW50ID0gY29uc3Rh
bnROb2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOworCisgICAgVENvbnN0YW50VW5pb24gYXNG
bG9hdDsKKyAgICBhc0Zsb2F0LmNhc3QoRWJ0RmxvYXQsICpjb25zdGFudCk7CisKKyAgICBmbG9h
dCB2YWx1ZSA9IGFzRmxvYXQuZ2V0RkNvbnN0KCk7CisKKyAgICAvLyBUZXN0IDI6IHZhbHVlIGlz
IGluIHRoZSBwcm9ibGVtYXRpYyByYW5nZS4KKyAgICBpZiAodmFsdWUgPCAtNS4wZiB8fCB2YWx1
ZSA+IDkuMGYpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBU
ZXN0IDM6IHZhbHVlIGlzIGludGVnZXIgb3IgcHJldHR5IGNsb3NlIHRvIGFuIGludGVnZXIuCisg
ICAgZmxvYXQgYWJzdmFsID0gc3RkOjphYnModmFsdWUpOworICAgIGZsb2F0IGZyYWMgICA9IGFi
c3ZhbCAtIHN0ZDo6cm91bmQoYWJzdmFsKTsKKyAgICBpZiAoZnJhYyA+IDAuMDAwMWYpCisgICAg
eworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBUZXN0IDQ6IHNraXAgLTEs
IDAsIGFuZCAxCisgICAgaW50IGV4cG9uZW50ID0gc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSk7Cisg
ICAgaW50IG4gICAgICAgID0gc3RkOjphYnMoZXhwb25lbnQpOworICAgIGlmIChuIDwgMikKKyAg
ICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIFBvdGVudGlhbCBwcm9i
bGVtIGNhc2UgZGV0ZWN0ZWQsIGFwcGx5IHdvcmthcm91bmQuCisgICAgbmV4dFRlbXBvcmFyeUlu
ZGV4KCk7CisKKyAgICBUSW50ZXJtVHlwZWQgKmxocyA9IHNlcXVlbmNlLT5hdCgwKS0+Z2V0QXNU
eXBlZCgpOworICAgIEFTU0VSVChsaHMpOworCisgICAgVEludGVybUFnZ3JlZ2F0ZSAqaW5pdCA9
IGNyZWF0ZVRlbXBJbml0RGVjbGFyYXRpb24obGhzKTsKKyAgICBUSW50ZXJtVHlwZWQgKmN1cnJl
bnQgID0gY3JlYXRlVGVtcFN5bWJvbChsaHMtPmdldFR5cGUoKSk7CisKKyAgICBpbnNlcnRTdGF0
ZW1lbnRJblBhcmVudEJsb2NrKGluaXQpOworCisgICAgLy8gQ3JlYXRlIGEgY2hhaW4gb2Ygbi0x
IG11bHRpcGxlcy4KKyAgICBmb3IgKGludCBpID0gMTsgaSA8IG47ICsraSkKKyAgICB7CisgICAg
ICAgIFRJbnRlcm1CaW5hcnkgKm11bCA9IG5ldyBUSW50ZXJtQmluYXJ5KEVPcE11bCwgY3VycmVu
dCwgY3JlYXRlVGVtcFN5bWJvbChsaHMtPmdldFR5cGUoKSkpOworICAgICAgICBtdWwtPnNldExp
bmUobm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgY3VycmVudCA9IG11bDsKKyAgICB9CisKKyAg
ICAvLyBGb3IgbmVnYXRpdmUgcG93LCBjb21wdXRlIHRoZSByZWNpcHJvY2FsIG9mIHRoZSBwb3Np
dGl2ZSBwb3cuCisgICAgaWYgKGV4cG9uZW50IDwgMCkKKyAgICB7CisgICAgICAgIFRDb25zdGFu
dFVuaW9uICpvbmVWYWwgPSBuZXcgVENvbnN0YW50VW5pb24oKTsKKyAgICAgICAgb25lVmFsLT5z
ZXRGQ29uc3QoMS4wZik7CisgICAgICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpvbmVOb2RlID0g
bmV3IFRJbnRlcm1Db25zdGFudFVuaW9uKG9uZVZhbCwgbm9kZS0+Z2V0VHlwZSgpKTsKKyAgICAg
ICAgVEludGVybUJpbmFyeSAqZGl2ICAgICAgICAgICAgPSBuZXcgVEludGVybUJpbmFyeShFT3BE
aXYsIG9uZU5vZGUsIGN1cnJlbnQpOworICAgICAgICBjdXJyZW50ID0gZGl2OworICAgIH0KKwor
ICAgIHF1ZXVlUmVwbGFjZW1lbnQobm9kZSwgY3VycmVudCwgT3JpZ2luYWxOb2RlOjpJU19EUk9Q
UEVEKTsKKyAgICBtRm91bmQgPSB0cnVlOworICAgIHJldHVybiBmYWxzZTsKK30KKworfSAgLy8g
YW5vbnltb3VzIG5hbWVzcGFjZQorCit2b2lkIEV4cGFuZEludGVnZXJQb3dFeHByZXNzaW9ucyhU
SW50ZXJtTm9kZSAqcm9vdCwgdW5zaWduZWQgaW50ICp0ZW1wSW5kZXgpCit7CisgICAgVHJhdmVy
c2VyOjpBcHBseShyb290LCB0ZW1wSW5kZXgpOworfQorCit9ICAvLyBuYW1lc3BhY2Ugc2gKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0V4cGFu
ZEludGVnZXJQb3dFeHByZXNzaW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0V4cGFuZEludGVnZXJQb3dFeHByZXNzaW9u
cy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL0V4cGFuZEludGVnZXJQb3dFeHByZXNzaW9ucy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMjggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gVGhpcyBtdXRhdGluZyB0cmVlIHRy
YXZlcnNhbCB3b3JrcyBhcm91bmQgYSBidWcgaW4gdGhlIEhMU0wgY29tcGlsZXIgb3B0aW1pemVy
IHdpdGggInBvdyIgdGhhdAorLy8gbWFuaWZlc3RzIHVuZGVyIHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9uczoKKy8vCisvLyAtIElmIHBvdygpIGhhcyBhIGxpdGVyYWwgZXhwb25lbnQgdmFsdWUKKy8v
IC0gLi4uIGFuZCB0aGlzIHZhbHVlIGlzIGludGVnZXIgb3Igd2l0aGluIDEwZS02IG9mIGFuIGlu
dGVnZXIKKy8vIC0gLi4uIGFuZCBpdCBpcyBpbiB7LTQsIC0zLCAtMiwgMiwgMywgNCwgNSwgNiwg
NywgOH0KKy8vCisvLyBUaGUgd29ya2Fyb3VuZCBpcyB0byByZXBsYWNlIHRoZSBwb3cgd2l0aCBh
IHNlcmllcyBvZiBtdWx0aXBsaWVzLgorLy8gU2VlIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vODUxCisK
KyNpZm5kZWYgQ09NUElMRVJfVFJBTlNMQVRPUl9FWFBBTkRJTlRFR0VSUE9XRVhQUkVTU0lPTlNf
SF8KKyNkZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9FWFBBTkRJTlRFR0VSUE9XRVhQUkVTU0lP
TlNfSF8KKworY2xhc3MgVEludGVybU5vZGU7CisKK25hbWVzcGFjZSBzaAoreworCit2b2lkIEV4
cGFuZEludGVnZXJQb3dFeHByZXNzaW9ucyhUSW50ZXJtTm9kZSAqcm9vdCwgdW5zaWduZWQgaW50
ICp0ZW1wSW5kZXgpOworCit9ICAvLyBuYW1lc3BhY2Ugc2gKKworI2VuZGlmICAvLyBDT01QSUxF
Ul9UUkFOU0xBVE9SX0VYUEFORElOVEVHRVJQT1dFWFBSRVNTSU9OU19IXwpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvSW5pdGlhbGl6ZS5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMzMsNyArMjMzLDcgQEAKICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
KEVTU0wxX0JVSUxUSU5TLCBmbG9hdDQsICJ0ZXh0dXJlMkRQcm9qIiwgc2FtcGxlcjJELCBmbG9h
dDQpOwogICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDFfQlVJTFRJTlMsIGZsb2F0
NCwgInRleHR1cmVDdWJlIiwgc2FtcGxlckN1YmUsIGZsb2F0Myk7CiAKLSAgICBpZiAocmVzb3Vy
Y2VzLk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwpCisgICAgaWYgKHJlc291cmNlcy5PRVNfRUdMX2lt
YWdlX2V4dGVybmFsIHx8IHJlc291cmNlcy5OVl9FR0xfc3RyZWFtX2NvbnN1bWVyX2V4dGVybmFs
KQogICAgIHsKICAgICAgICAgY29uc3QgVFR5cGUgKnNhbXBsZXJFeHRlcm5hbE9FUyA9IFRDYWNo
ZTo6Z2V0VHlwZShFYnRTYW1wbGVyRXh0ZXJuYWxPRVMpOwogCkBAIC0zMTUsNiArMzE1LDE3IEBA
CiAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0
ZXh0dXJlTG9kIiwgZ3NhbXBsZXJDdWJlLCBmbG9hdDMsIGZsb2F0MSk7CiAgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlTG9kIiwgZ3Nh
bXBsZXIyREFycmF5LCBmbG9hdDMsIGZsb2F0MSk7CiAKKyAgICBpZiAocmVzb3VyY2VzLk9FU19F
R0xfaW1hZ2VfZXh0ZXJuYWxfZXNzbDMpCisgICAgeworICAgICAgICBjb25zdCBUVHlwZSAqc2Ft
cGxlckV4dGVybmFsT0VTID0gVENhY2hlOjpnZXRUeXBlKEVidFNhbXBsZXJFeHRlcm5hbE9FUyk7
CisKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZmxv
YXQ0LCAidGV4dHVyZSIsIHNhbXBsZXJFeHRlcm5hbE9FUywgZmxvYXQyKTsKKyAgICAgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZmxvYXQ0LCAidGV4dHVyZVBy
b2oiLCBzYW1wbGVyRXh0ZXJuYWxPRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmxvYXQzKTsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlM
VElOUywgZmxvYXQ0LCAidGV4dHVyZVByb2oiLCBzYW1wbGVyRXh0ZXJuYWxPRVMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQ0KTsKKyAgICB9CisKICAgICBpZiAodHlw
ZSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpCiAgICAgewogICAgICAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRleHR1cmUiLCBnc2FtcGxlcjJELCBm
bG9hdDIsIGZsb2F0MSk7CkBAIC0zMjQsNiArMzM1LDE4IEBACiAgICAgICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4dHVyZVByb2oiLCBnc2Ft
cGxlcjJELCBmbG9hdDMsIGZsb2F0MSk7CiAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4dHVyZVByb2oiLCBnc2FtcGxlcjJELCBmbG9h
dDQsIGZsb2F0MSk7CiAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJ
TFRJTlMsIGd2ZWM0LCAidGV4dHVyZVByb2oiLCBnc2FtcGxlcjNELCBmbG9hdDQsIGZsb2F0MSk7
CisKKyAgICAgICAgaWYgKHJlc291cmNlcy5PRVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vzc2wzKQor
ICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBUVHlwZSAqc2FtcGxlckV4dGVybmFsT0VTID0g
VENhY2hlOjpnZXRUeXBlKEVidFNhbXBsZXJFeHRlcm5hbE9FUyk7CisKKyAgICAgICAgICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGZsb2F0NCwgInRleHR1cmUi
LCBzYW1wbGVyRXh0ZXJuYWxPRVMsIGZsb2F0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxvYXQxKTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oRVNTTDNfQlVJTFRJTlMsIGZsb2F0NCwgInRleHR1cmVQcm9qIiwgc2FtcGxlckV4dGVybmFs
T0VTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDMsIGZsb2F0
MSk7CisgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5T
LCBmbG9hdDQsICJ0ZXh0dXJlUHJvaiIsIHNhbXBsZXJFeHRlcm5hbE9FUywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQ0LCBmbG9hdDEpOworICAgICAgICB9CiAg
ICAgfQogCiAgICAgY29uc3QgVFR5cGUgKnNhbXBsZXIyRFNoYWRvdyA9IFRDYWNoZTo6Z2V0VHlw
ZShFYnRTYW1wbGVyMkRTaGFkb3cpOwpAQCAtMzUxLDYgKzM3NCwxMyBAQAogICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGludDIsICJ0ZXh0dXJlU2l6ZSIsIHNh
bXBsZXJDdWJlU2hhZG93LCBpbnQxKTsKICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVT
U0wzX0JVSUxUSU5TLCBpbnQzLCAidGV4dHVyZVNpemUiLCBzYW1wbGVyMkRBcnJheVNoYWRvdywg
aW50MSk7CiAKKyAgICBpZiAocmVzb3VyY2VzLk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWxfZXNzbDMp
CisgICAgeworICAgICAgICBjb25zdCBUVHlwZSAqc2FtcGxlckV4dGVybmFsT0VTID0gVENhY2hl
OjpnZXRUeXBlKEVidFNhbXBsZXJFeHRlcm5hbE9FUyk7CisKKyAgICAgICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgaW50MiwgInRleHR1cmVTaXplIiwgc2FtcGxl
ckV4dGVybmFsT0VTLCBpbnQxKTsKKyAgICB9CisKICAgICBpZiAodHlwZSA9PSBHTF9GUkFHTUVO
VF9TSEFERVIpCiAgICAgewogICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wz
X0JVSUxUSU5TLCBFT3BERmR4LCBnZW5UeXBlLCAiZEZkeCIsIGdlblR5cGUpOwpAQCAtNDAzLDYg
KzQzMywxNCBAQAogICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMs
IGd2ZWM0LCAidGV4ZWxGZXRjaCIsIGdzYW1wbGVyM0QsIGludDMsIGludDEpOwogICAgIHN5bWJv
bFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4ZWxGZXRjaCIs
IGdzYW1wbGVyMkRBcnJheSwgaW50MywgaW50MSk7CiAKKyAgICBpZiAocmVzb3VyY2VzLk9FU19F
R0xfaW1hZ2VfZXh0ZXJuYWxfZXNzbDMpCisgICAgeworICAgICAgICBjb25zdCBUVHlwZSAqc2Ft
cGxlckV4dGVybmFsT0VTID0gVENhY2hlOjpnZXRUeXBlKEVidFNhbXBsZXJFeHRlcm5hbE9FUyk7
CisKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZmxv
YXQ0LCAidGV4ZWxGZXRjaCIsIHNhbXBsZXJFeHRlcm5hbE9FUywgaW50MiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQxKTsKKyAgICB9CisKICAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRleGVsRmV0Y2hPZmZzZXQiLCBn
c2FtcGxlcjJELCBpbnQyLCBpbnQxLCBpbnQyKTsKICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRleGVsRmV0Y2hPZmZzZXQiLCBnc2FtcGxlcjNE
LCBpbnQzLCBpbnQxLCBpbnQzKTsKICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wz
X0JVSUxUSU5TLCBndmVjNCwgInRleGVsRmV0Y2hPZmZzZXQiLCBnc2FtcGxlcjJEQXJyYXksIGlu
dDMsIGludDEsIGludDIpOwpAQCAtNDM2LDQ2ICs0NzQsMTA2IEBACiAgICAgLy8KICAgICBURmll
bGRMaXN0ICpmaWVsZHMgPSBOZXdQb29sVEZpZWxkTGlzdCgpOwogICAgIFRTb3VyY2VMb2MgemVy
b1NvdXJjZUxvYyA9IHswLCAwLCAwLCAwfTsKLSAgICBURmllbGQgKm5lYXIgPSBuZXcgVEZpZWxk
KG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwSGlnaCwgRXZxR2xvYmFsLCAxKSwgTmV3UG9vbFRTdHJp
bmcoIm5lYXIiKSwgemVyb1NvdXJjZUxvYyk7Ci0gICAgVEZpZWxkICpmYXIgPSBuZXcgVEZpZWxk
KG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwSGlnaCwgRXZxR2xvYmFsLCAxKSwgTmV3UG9vbFRTdHJp
bmcoImZhciIpLCB6ZXJvU291cmNlTG9jKTsKLSAgICBURmllbGQgKmRpZmYgPSBuZXcgVEZpZWxk
KG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwSGlnaCwgRXZxR2xvYmFsLCAxKSwgTmV3UG9vbFRTdHJp
bmcoImRpZmYiKSwgemVyb1NvdXJjZUxvYyk7CisgICAgYXV0byBoaWdocEZsb2F0MSAgICAgICAg
ID0gbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBIaWdoLCBFdnFHbG9iYWwsIDEpOworICAgIFRGaWVs
ZCAqbmVhciAgICAgICAgICAgICA9IG5ldyBURmllbGQoaGlnaHBGbG9hdDEsIE5ld1Bvb2xUU3Ry
aW5nKCJuZWFyIiksIHplcm9Tb3VyY2VMb2MpOworICAgIFRGaWVsZCAqZmFyICAgICAgICAgICAg
ICA9IG5ldyBURmllbGQoaGlnaHBGbG9hdDEsIE5ld1Bvb2xUU3RyaW5nKCJmYXIiKSwgemVyb1Nv
dXJjZUxvYyk7CisgICAgVEZpZWxkICpkaWZmICAgICAgICAgICAgID0gbmV3IFRGaWVsZChoaWdo
cEZsb2F0MSwgTmV3UG9vbFRTdHJpbmcoImRpZmYiKSwgemVyb1NvdXJjZUxvYyk7CiAgICAgZmll
bGRzLT5wdXNoX2JhY2sobmVhcik7CiAgICAgZmllbGRzLT5wdXNoX2JhY2soZmFyKTsKICAgICBm
aWVsZHMtPnB1c2hfYmFjayhkaWZmKTsKICAgICBUU3RydWN0dXJlICpkZXB0aFJhbmdlU3RydWN0
ID0gbmV3IFRTdHJ1Y3R1cmUoTmV3UG9vbFRTdHJpbmcoImdsX0RlcHRoUmFuZ2VQYXJhbWV0ZXJz
IiksIGZpZWxkcyk7Ci0gICAgVFZhcmlhYmxlICpkZXB0aFJhbmdlUGFyYW1ldGVycyA9IG5ldyBU
VmFyaWFibGUoJmRlcHRoUmFuZ2VTdHJ1Y3QtPm5hbWUoKSwgZGVwdGhSYW5nZVN0cnVjdCwgdHJ1
ZSk7CisgICAgVFZhcmlhYmxlICpkZXB0aFJhbmdlUGFyYW1ldGVycyA9CisgICAgICAgIG5ldyBU
VmFyaWFibGUoJmRlcHRoUmFuZ2VTdHJ1Y3QtPm5hbWUoKSwgVFR5cGUoZGVwdGhSYW5nZVN0cnVj
dCksIHRydWUpOwogICAgIHN5bWJvbFRhYmxlLmluc2VydChDT01NT05fQlVJTFRJTlMsIGRlcHRo
UmFuZ2VQYXJhbWV0ZXJzKTsKICAgICBUVmFyaWFibGUgKmRlcHRoUmFuZ2UgPSBuZXcgVFZhcmlh
YmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9EZXB0aFJhbmdlIiksIFRUeXBlKGRlcHRoUmFuZ2VTdHJ1
Y3QpKTsKICAgICBkZXB0aFJhbmdlLT5zZXRRdWFsaWZpZXIoRXZxVW5pZm9ybSk7CisgICAgLy8g
RW5zdXJlIHdlIGV2YWx1YXRlIHRoZSBtYW5nbGVkIG5hbWUgZm9yIGRlcHRoIHJhbmdlLCBzbyB3
ZSBhbGxvY2F0ZSB0byB0aGUgY3VycmVudCBzY29wZS4KKyAgICBkZXB0aFJhbmdlUGFyYW1ldGVy
cy0+Z2V0VHlwZSgpLmdldE1hbmdsZWROYW1lKCk7CisgICAgZGVwdGhSYW5nZS0+Z2V0VHlwZSgp
LmdldE1hbmdsZWROYW1lKCk7CiAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KENPTU1PTl9CVUlMVElO
UywgZGVwdGhSYW5nZSk7CiAKICAgICAvLwogICAgIC8vIEltcGxlbWVudGF0aW9uIGRlcGVuZGVu
dCBidWlsdC1pbiBjb25zdGFudHMuCiAgICAgLy8KLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRDb25z
dEludChDT01NT05fQlVJTFRJTlMsICJnbF9NYXhWZXJ0ZXhBdHRyaWJzIiwgcmVzb3VyY2VzLk1h
eFZlcnRleEF0dHJpYnMpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydENvbnN0SW50KENPTU1PTl9C
VUlMVElOUywgImdsX01heFZlcnRleFVuaWZvcm1WZWN0b3JzIiwgcmVzb3VyY2VzLk1heFZlcnRl
eFVuaWZvcm1WZWN0b3JzKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRDb25zdEludChDT01NT05f
QlVJTFRJTlMsICJnbF9NYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyIsIHJlc291cmNlcy5NYXhW
ZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJbnQo
Q09NTU9OX0JVSUxUSU5TLCAiZ2xfTWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyIsIHJlc291
cmNlcy5NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNl
cnRDb25zdEludChDT01NT05fQlVJTFRJTlMsICJnbF9NYXhUZXh0dXJlSW1hZ2VVbml0cyIsIHJl
c291cmNlcy5NYXhUZXh0dXJlSW1hZ2VVbml0cyk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29u
c3RJbnQoQ09NTU9OX0JVSUxUSU5TLCAiZ2xfTWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyIsIHJl
c291cmNlcy5NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNl
cnRDb25zdEludChDT01NT05fQlVJTFRJTlMsICJnbF9NYXhWZXJ0ZXhBdHRyaWJzIiwgcmVzb3Vy
Y2VzLk1heFZlcnRleEF0dHJpYnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWJw
TWVkaXVtKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRDb25zdEludChDT01NT05fQlVJTFRJTlMs
ICJnbF9NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzb3VyY2VzLk1heFZlcnRleFVuaWZvcm1WZWN0b3JzLCBFYnBNZWRpdW0pOworICAg
IHN5bWJvbFRhYmxlLmluc2VydENvbnN0SW50KENPTU1PTl9CVUlMVElOUywgImdsX01heFZlcnRl
eFRleHR1cmVJbWFnZVVuaXRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNv
dXJjZXMuTWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMsIEVicE1lZGl1bSk7CisgICAgc3ltYm9s
VGFibGUuaW5zZXJ0Q29uc3RJbnQoQ09NTU9OX0JVSUxUSU5TLCAiZ2xfTWF4Q29tYmluZWRUZXh0
dXJlSW1hZ2VVbml0cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2Vz
Lk1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMsIEVicE1lZGl1bSk7CisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0Q29uc3RJbnQoQ09NTU9OX0JVSUxUSU5TLCAiZ2xfTWF4VGV4dHVyZUltYWdlVW5p
dHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlcy5NYXhUZXh0dXJl
SW1hZ2VVbml0cywgRWJwTWVkaXVtKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRDb25zdEludChD
T01NT05fQlVJTFRJTlMsICJnbF9NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXMuTWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9y
cywgRWJwTWVkaXVtKTsKIAotICAgIHN5bWJvbFRhYmxlLmluc2VydENvbnN0SW50KEVTU0wxX0JV
SUxUSU5TLCAiZ2xfTWF4VmFyeWluZ1ZlY3RvcnMiLCByZXNvdXJjZXMuTWF4VmFyeWluZ1ZlY3Rv
cnMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydENvbnN0SW50KEVTU0wxX0JVSUxUSU5TLCAiZ2xf
TWF4VmFyeWluZ1ZlY3RvcnMiLCByZXNvdXJjZXMuTWF4VmFyeWluZ1ZlY3RvcnMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRWJwTWVkaXVtKTsKIAotICAgIGlmIChzcGVjICE9IFNI
X0NTU19TSEFERVJTX1NQRUMpCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJbnQoQ09NTU9O
X0JVSUxUSU5TLCAiZ2xfTWF4RHJhd0J1ZmZlcnMiLCByZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWJwTWVkaXVtKTsKKyAgICBpZiAocmVz
b3VyY2VzLkVYVF9ibGVuZF9mdW5jX2V4dGVuZGVkKQogICAgIHsKLSAgICAgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0Q29uc3RJbnQoQ09NTU9OX0JVSUxUSU5TLCAiZ2xfTWF4RHJhd0J1ZmZlcnMiLCBy
ZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMpOwotICAgICAgICBpZiAocmVzb3VyY2VzLkVYVF9ibGVu
ZF9mdW5jX2V4dGVuZGVkKQotICAgICAgICB7Ci0gICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNl
cnRDb25zdEludEV4dChDT01NT05fQlVJTFRJTlMsICJHTF9FWFRfYmxlbmRfZnVuY19leHRlbmRl
ZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xfTWF4RHVh
bFNvdXJjZURyYXdCdWZmZXJzRVhUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc291cmNlcy5NYXhEdWFsU291cmNlRHJhd0J1ZmZlcnMpOwotICAgICAgICB9
CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydENvbnN0SW50RXh0KENPTU1PTl9CVUlMVElOUywg
IkdMX0VYVF9ibGVuZF9mdW5jX2V4dGVuZGVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImdsX01heER1YWxTb3VyY2VEcmF3QnVmZmVyc0VYVCIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlcy5NYXhEdWFsU291cmNlRHJhd0J1
ZmZlcnMpOwogICAgIH0KIAotICAgIHN5bWJvbFRhYmxlLmluc2VydENvbnN0SW50KEVTU0wzX0JV
SUxUSU5TLCAiZ2xfTWF4VmVydGV4T3V0cHV0VmVjdG9ycyIsIHJlc291cmNlcy5NYXhWZXJ0ZXhP
dXRwdXRWZWN0b3JzKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRDb25zdEludChFU1NMM19CVUlM
VElOUywgImdsX01heEZyYWdtZW50SW5wdXRWZWN0b3JzIiwgcmVzb3VyY2VzLk1heEZyYWdtZW50
SW5wdXRWZWN0b3JzKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRDb25zdEludChFU1NMM19CVUlM
VElOUywgImdsX01pblByb2dyYW1UZXhlbE9mZnNldCIsIHJlc291cmNlcy5NaW5Qcm9ncmFtVGV4
ZWxPZmZzZXQpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydENvbnN0SW50KEVTU0wzX0JVSUxUSU5T
LCAiZ2xfTWF4UHJvZ3JhbVRleGVsT2Zmc2V0IiwgcmVzb3VyY2VzLk1heFByb2dyYW1UZXhlbE9m
ZnNldCk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJbnQoRVNTTDNfQlVJTFRJTlMsICJn
bF9NYXhWZXJ0ZXhPdXRwdXRWZWN0b3JzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXNvdXJjZXMuTWF4VmVydGV4T3V0cHV0VmVjdG9ycywgRWJwTWVkaXVtKTsKKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnRDb25zdEludChFU1NMM19CVUlMVElOUywgImdsX01heEZyYWdtZW50SW5w
dXRWZWN0b3JzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXMuTWF4
RnJhZ21lbnRJbnB1dFZlY3RvcnMsIEVicE1lZGl1bSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0
Q29uc3RJbnQoRVNTTDNfQlVJTFRJTlMsICJnbF9NaW5Qcm9ncmFtVGV4ZWxPZmZzZXQiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlcy5NaW5Qcm9ncmFtVGV4ZWxPZmZz
ZXQsIEVicE1lZGl1bSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJbnQoRVNTTDNfQlVJ
TFRJTlMsICJnbF9NYXhQcm9ncmFtVGV4ZWxPZmZzZXQiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc291cmNlcy5NYXhQcm9ncmFtVGV4ZWxPZmZzZXQsIEVicE1lZGl1bSk7CisK
KyAgICBzeW1ib2xUYWJsZS5pbnNlcnRDb25zdEludChFU1NMM18xX0JVSUxUSU5TLCAiZ2xfTWF4
SW1hZ2VVbml0cyIsIHJlc291cmNlcy5NYXhJbWFnZVVuaXRzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVicE1lZGl1bSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJbnQo
RVNTTDNfMV9CVUlMVElOUywgImdsX01heFZlcnRleEltYWdlVW5pZm9ybXMiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlcy5NYXhWZXJ0ZXhJbWFnZVVuaWZvcm1zLCBF
YnBNZWRpdW0pOworICAgIHN5bWJvbFRhYmxlLmluc2VydENvbnN0SW50KEVTU0wzXzFfQlVJTFRJ
TlMsICJnbF9NYXhGcmFnbWVudEltYWdlVW5pZm9ybXMiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc291cmNlcy5NYXhGcmFnbWVudEltYWdlVW5pZm9ybXMsIEVicE1lZGl1bSk7
CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJbnQoRVNTTDNfMV9CVUlMVElOUywgImdsX01h
eENvbXB1dGVJbWFnZVVuaWZvcm1zIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXNvdXJjZXMuTWF4Q29tcHV0ZUltYWdlVW5pZm9ybXMsIEVicE1lZGl1bSk7CisgICAgc3ltYm9s
VGFibGUuaW5zZXJ0Q29uc3RJbnQoRVNTTDNfMV9CVUlMVElOUywgImdsX01heENvbWJpbmVkSW1h
Z2VVbmlmb3JtcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzLk1h
eENvbWJpbmVkSW1hZ2VVbmlmb3JtcywgRWJwTWVkaXVtKTsKKworICAgIHN5bWJvbFRhYmxlLmlu
c2VydENvbnN0SW50KEVTU0wzXzFfQlVJTFRJTlMsICJnbF9NYXhDb21iaW5lZFNoYWRlck91dHB1
dFJlc291cmNlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzLk1h
eENvbWJpbmVkU2hhZGVyT3V0cHV0UmVzb3VyY2VzLCBFYnBNZWRpdW0pOworCisgICAgc3ltYm9s
VGFibGUuaW5zZXJ0Q29uc3RJdmVjMyhFU1NMM18xX0JVSUxUSU5TLCAiZ2xfTWF4Q29tcHV0ZVdv
cmtHcm91cENvdW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNl
cy5NYXhDb21wdXRlV29ya0dyb3VwQ291bnQsIEVicEhpZ2gpOworICAgIHN5bWJvbFRhYmxlLmlu
c2VydENvbnN0SXZlYzMoRVNTTDNfMV9CVUlMVElOUywgImdsX01heENvbXB1dGVXb3JrR3JvdXBT
aXplIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlcy5NYXhDb21w
dXRlV29ya0dyb3VwU2l6ZSwgRWJwSGlnaCk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJ
bnQoRVNTTDNfMV9CVUlMVElOUywgImdsX01heENvbXB1dGVVbmlmb3JtQ29tcG9uZW50cyIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzLk1heENvbXB1dGVVbmlmb3Jt
Q29tcG9uZW50cywgRWJwTWVkaXVtKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRDb25zdEludChF
U1NMM18xX0JVSUxUSU5TLCAiZ2xfTWF4Q29tcHV0ZVRleHR1cmVJbWFnZVVuaXRzIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXMuTWF4Q29tcHV0ZVRleHR1cmVJbWFn
ZVVuaXRzLCBFYnBNZWRpdW0pOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJbnQoRVNT
TDNfMV9CVUlMVElOUywgImdsX01heENvbXB1dGVBdG9taWNDb3VudGVycyIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzLk1heENvbXB1dGVBdG9taWNDb3VudGVycywg
RWJwTWVkaXVtKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRDb25zdEludChFU1NMM18xX0JVSUxU
SU5TLCAiZ2xfTWF4Q29tcHV0ZUF0b21pY0NvdW50ZXJCdWZmZXJzIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXNvdXJjZXMuTWF4Q29tcHV0ZUF0b21pY0NvdW50ZXJCdWZmZXJz
LCBFYnBNZWRpdW0pOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJbnQoRVNTTDNfMV9C
VUlMVElOUywgImdsX01heFZlcnRleEF0b21pY0NvdW50ZXJzIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXNvdXJjZXMuTWF4VmVydGV4QXRvbWljQ291bnRlcnMsIEVicE1lZGl1
bSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJbnQoRVNTTDNfMV9CVUlMVElOUywgImds
X01heEZyYWdtZW50QXRvbWljQ291bnRlcnMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc291cmNlcy5NYXhGcmFnbWVudEF0b21pY0NvdW50ZXJzLCBFYnBNZWRpdW0pOworICAg
IHN5bWJvbFRhYmxlLmluc2VydENvbnN0SW50KEVTU0wzXzFfQlVJTFRJTlMsICJnbF9NYXhDb21i
aW5lZEF0b21pY0NvdW50ZXJzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNv
dXJjZXMuTWF4Q29tYmluZWRBdG9taWNDb3VudGVycywgRWJwTWVkaXVtKTsKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRDb25zdEludChFU1NMM18xX0JVSUxUSU5TLCAiZ2xfTWF4QXRvbWljQ291bnRl
ckJpbmRpbmdzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXMuTWF4
QXRvbWljQ291bnRlckJpbmRpbmdzLCBFYnBNZWRpdW0pOworCisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0Q29uc3RJbnQoRVNTTDNfMV9CVUlMVElOUywgImdsX01heFZlcnRleEF0b21pY0NvdW50ZXJC
dWZmZXJzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXMuTWF4VmVy
dGV4QXRvbWljQ291bnRlckJ1ZmZlcnMsIEVicE1lZGl1bSk7CisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0Q29uc3RJbnQoRVNTTDNfMV9CVUlMVElOUywgImdsX01heEZyYWdtZW50QXRvbWljQ291bnRl
ckJ1ZmZlcnMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlcy5NYXhG
cmFnbWVudEF0b21pY0NvdW50ZXJCdWZmZXJzLCBFYnBNZWRpdW0pOworICAgIHN5bWJvbFRhYmxl
Lmluc2VydENvbnN0SW50KEVTU0wzXzFfQlVJTFRJTlMsICJnbF9NYXhDb21iaW5lZEF0b21pY0Nv
dW50ZXJCdWZmZXJzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXMu
TWF4Q29tYmluZWRBdG9taWNDb3VudGVyQnVmZmVycywgRWJwTWVkaXVtKTsKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRDb25zdEludChFU1NMM18xX0JVSUxUSU5TLCAiZ2xfTWF4QXRvbWljQ291bnRl
ckJ1ZmZlclNpemUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlcy5N
YXhBdG9taWNDb3VudGVyQnVmZmVyU2l6ZSwgRWJwTWVkaXVtKTsKIH0KIAogdm9pZCBJZGVudGlm
eUJ1aWx0SW5zKHNoOjpHTGVudW0gdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsCkBAIC00ODksODUg
KzU4Nyw3MyBAQAogICAgIHN3aXRjaCAodHlwZSkKICAgICB7CiAgICAgICBjYXNlIEdMX0ZSQUdN
RU5UX1NIQURFUjoKLSAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KENPTU1PTl9CVUlMVElOUywg
bmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfRnJhZ0Nvb3JkIiksCi0gICAgICAgICAg
ICBUVHlwZShFYnRGbG9hdCwgRWJwTWVkaXVtLCBFdnFGcmFnQ29vcmQsIDQpKSk7Ci0gICAgICAg
IHN5bWJvbFRhYmxlLmluc2VydChDT01NT05fQlVJTFRJTlMsIG5ldyBUVmFyaWFibGUoTmV3UG9v
bFRTdHJpbmcoImdsX0Zyb250RmFjaW5nIiksCi0gICAgICAgICAgICBUVHlwZShFYnRCb29sLCAg
RWJwVW5kZWZpbmVkLCBFdnFGcm9udEZhY2luZywgMSkpKTsKLSAgICAgICAgc3ltYm9sVGFibGUu
aW5zZXJ0KENPTU1PTl9CVUlMVElOUywgbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xf
UG9pbnRDb29yZCIpLAotICAgICAgICAgICAgVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZx
UG9pbnRDb29yZCwgMikpKTsKKyAgICAgIHsKKyAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQo
Q09NTU9OX0JVSUxUSU5TLCBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9GcmFnQ29v
cmQiKSwKKyAgICAgICAgICAgICAgVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxRnJhZ0Nv
b3JkLCA0KSkpOworICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChDT01NT05fQlVJTFRJTlMs
IG5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0Zyb250RmFjaW5nIiksCisgICAgICAg
ICAgICAgIFRUeXBlKEVidEJvb2wsICBFYnBVbmRlZmluZWQsIEV2cUZyb250RmFjaW5nLCAxKSkp
OworICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChDT01NT05fQlVJTFRJTlMsIG5ldyBUVmFy
aWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX1BvaW50Q29vcmQiKSwKKyAgICAgICAgICAgICAgVFR5
cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxUG9pbnRDb29yZCwgMikpKTsKIAotICAgICAgICAv
LwotICAgICAgICAvLyBJbiBDU1MgU2hhZGVycywgZ2xfRnJhZ0NvbG9yLCBnbF9GcmFnRGF0YSwg
YW5kIGdsX01heERyYXdCdWZmZXJzIGFyZSBub3QgYXZhaWxhYmxlLgotICAgICAgICAvLyBJbnN0
ZWFkLCBjc3NfTWl4Q29sb3IgYW5kIGNzc19Db2xvck1hdHJpeCBhcmUgYXZhaWxhYmxlLgotICAg
ICAgICAvLwotICAgICAgICBpZiAoc3BlYyAhPSBTSF9DU1NfU0hBREVSU19TUEVDKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoRVNTTDFfQlVJTFRJTlMsIG5ldyBU
VmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0ZyYWdDb2xvciIpLAotICAgICAgICAgICAgICAg
IFRUeXBlKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2cUZyYWdDb2xvciwgNCkpKTsKLSAgICAgICAg
ICAgIFRUeXBlIGZyYWdEYXRhKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2cUZyYWdEYXRhLCA0LCAx
LCB0cnVlKTsKLSAgICAgICAgICAgIGZyYWdEYXRhLnNldEFycmF5U2l6ZShyZXNvdXJjZXMuTWF4
RHJhd0J1ZmZlcnMpOwotICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KEVTU0wxX0JVSUxU
SU5TLCBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9GcmFnRGF0YSIpLCBmcmFnRGF0
YSkpOworICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChFU1NMMV9CVUlMVElOUywgbmV3IFRW
YXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfRnJhZ0NvbG9yIiksCisgICAgICAgICAgICAgIFRU
eXBlKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2cUZyYWdDb2xvciwgNCkpKTsKKyAgICAgICAgICBU
VHlwZSBmcmFnRGF0YShFYnRGbG9hdCwgRWJwTWVkaXVtLCBFdnFGcmFnRGF0YSwgNCwgMSwgdHJ1
ZSk7CisgICAgICAgICAgZnJhZ0RhdGEuc2V0QXJyYXlTaXplKHJlc291cmNlcy5NYXhEcmF3QnVm
ZmVycyk7CisgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KEVTU0wxX0JVSUxUSU5TLCBuZXcg
VFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9GcmFnRGF0YSIpLCBmcmFnRGF0YSkpOwogCi0g
ICAgICAgICAgICBpZiAocmVzb3VyY2VzLkVYVF9ibGVuZF9mdW5jX2V4dGVuZGVkKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydCgKLSAgICAgICAgICAg
ICAgICAgICAgRVNTTDFfQlVJTFRJTlMsICJHTF9FWFRfYmxlbmRfZnVuY19leHRlbmRlZCIsCi0g
ICAgICAgICAgICAgICAgICAgIG5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX1NlY29u
ZGFyeUZyYWdDb2xvckVYVCIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRU
eXBlKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2cVNlY29uZGFyeUZyYWdDb2xvckVYVCwgNCkpKTsK
LSAgICAgICAgICAgICAgICBUVHlwZSBzZWNvbmRhcnlGcmFnRGF0YShFYnRGbG9hdCwgRWJwTWVk
aXVtLCBFdnFTZWNvbmRhcnlGcmFnRGF0YUVYVCwgNCwgMSwgdHJ1ZSk7Ci0gICAgICAgICAgICAg
ICAgc2Vjb25kYXJ5RnJhZ0RhdGEuc2V0QXJyYXlTaXplKHJlc291cmNlcy5NYXhEdWFsU291cmNl
RHJhd0J1ZmZlcnMpOwotICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydCgKLSAgICAg
ICAgICAgICAgICAgICAgRVNTTDFfQlVJTFRJTlMsICJHTF9FWFRfYmxlbmRfZnVuY19leHRlbmRl
ZCIsCi0gICAgICAgICAgICAgICAgICAgIG5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImds
X1NlY29uZGFyeUZyYWdEYXRhRVhUIiksIHNlY29uZGFyeUZyYWdEYXRhKSk7Ci0gICAgICAgICAg
ICB9CisgICAgICAgICAgaWYgKHJlc291cmNlcy5FWFRfYmxlbmRfZnVuY19leHRlbmRlZCkKKyAg
ICAgICAgICB7CisgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydCgKKyAgICAgICAgICAg
ICAgICAgIEVTU0wxX0JVSUxUSU5TLCAiR0xfRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWQiLAorICAg
ICAgICAgICAgICAgICAgbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfU2Vjb25kYXJ5
RnJhZ0NvbG9yRVhUIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVi
dEZsb2F0LCBFYnBNZWRpdW0sIEV2cVNlY29uZGFyeUZyYWdDb2xvckVYVCwgNCkpKTsKKyAgICAg
ICAgICAgICAgVFR5cGUgc2Vjb25kYXJ5RnJhZ0RhdGEoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZx
U2Vjb25kYXJ5RnJhZ0RhdGFFWFQsIDQsIDEsIHRydWUpOworICAgICAgICAgICAgICBzZWNvbmRh
cnlGcmFnRGF0YS5zZXRBcnJheVNpemUocmVzb3VyY2VzLk1heER1YWxTb3VyY2VEcmF3QnVmZmVy
cyk7CisgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydCgKKyAgICAgICAgICAgICAgICAg
IEVTU0wxX0JVSUxUSU5TLCAiR0xfRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWQiLAorICAgICAgICAg
ICAgICAgICAgbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfU2Vjb25kYXJ5RnJhZ0Rh
dGFFWFQiKSwgc2Vjb25kYXJ5RnJhZ0RhdGEpKTsKKyAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IGlmIChyZXNvdXJjZXMuRVhUX2ZyYWdfZGVwdGgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KAotICAgICAgICAgICAgICAgICAgICBFU1NMMV9CVUlM
VElOUywgIkdMX0VYVF9mcmFnX2RlcHRoIiwKLSAgICAgICAgICAgICAgICAgICAgbmV3IFRWYXJp
YWJsZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIE5ld1Bvb2xUU3RyaW5nKCJnbF9GcmFnRGVw
dGhFWFQiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCByZXNvdXJj
ZXMuRnJhZ21lbnRQcmVjaXNpb25IaWdoID8gRWJwSGlnaCA6IEVicE1lZGl1bSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEV2cUZyYWdEZXB0aEVYVCwgMSkpKTsKLSAgICAgICAgICAg
IH0KKyAgICAgICAgICBpZiAocmVzb3VyY2VzLkVYVF9mcmFnX2RlcHRoKQorICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KAorICAgICAgICAgICAgICAgICAgRVNT
TDFfQlVJTFRJTlMsICJHTF9FWFRfZnJhZ19kZXB0aCIsCisgICAgICAgICAgICAgICAgICBuZXcg
VFZhcmlhYmxlKAorICAgICAgICAgICAgICAgICAgICAgIE5ld1Bvb2xUU3RyaW5nKCJnbF9GcmFn
RGVwdGhFWFQiKSwKKyAgICAgICAgICAgICAgICAgICAgICBUVHlwZShFYnRGbG9hdCwgcmVzb3Vy
Y2VzLkZyYWdtZW50UHJlY2lzaW9uSGlnaCA/IEVicEhpZ2ggOiBFYnBNZWRpdW0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRXZxRnJhZ0RlcHRoRVhULCAxKSkpOworICAgICAgICAgIH0K
IAotICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KEVTU0wzX0JVSUxUSU5TLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImds
X0ZyYWdEZXB0aCIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVFR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gsIEV2cUZyYWdEZXB0aCwgMSkpKTsKKyAgICAgICAg
ICBzeW1ib2xUYWJsZS5pbnNlcnQoRVNTTDNfQlVJTFRJTlMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0ZyYWdEZXB0aCIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0
LCBFYnBIaWdoLCBFdnFGcmFnRGVwdGgsIDEpKSk7CiAKLSAgICAgICAgICAgIGlmIChyZXNvdXJj
ZXMuRVhUX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCB8fCByZXNvdXJjZXMuTlZfc2hhZGVyX2Zy
YW1lYnVmZmVyX2ZldGNoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFRUeXBlIGxh
c3RGcmFnRGF0YShFYnRGbG9hdCwgRWJwTWVkaXVtLCBFdnFMYXN0RnJhZ0RhdGEsIDQsIDEsIHRy
dWUpOwotICAgICAgICAgICAgICAgIGxhc3RGcmFnRGF0YS5zZXRBcnJheVNpemUocmVzb3VyY2Vz
Lk1heERyYXdCdWZmZXJzKTsKKyAgICAgICAgICBpZiAocmVzb3VyY2VzLkVYVF9zaGFkZXJfZnJh
bWVidWZmZXJfZmV0Y2ggfHwgcmVzb3VyY2VzLk5WX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCkK
KyAgICAgICAgICB7CisgICAgICAgICAgICAgIFRUeXBlIGxhc3RGcmFnRGF0YShFYnRGbG9hdCwg
RWJwTWVkaXVtLCBFdnFMYXN0RnJhZ0RhdGEsIDQsIDEsIHRydWUpOworICAgICAgICAgICAgICBs
YXN0RnJhZ0RhdGEuc2V0QXJyYXlTaXplKHJlc291cmNlcy5NYXhEcmF3QnVmZmVycyk7CiAKLSAg
ICAgICAgICAgICAgICBpZiAocmVzb3VyY2VzLkVYVF9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2gp
Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNl
cnQoRVNTTDFfQlVJTFRJTlMsICJHTF9FWFRfc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0xh
c3RGcmFnRGF0YSIpLCBsYXN0RnJhZ0RhdGEpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgZWxzZSBpZiAocmVzb3VyY2VzLk5WX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCkK
LSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2Vy
dChFU1NMMV9CVUlMVElOUywgIkdMX05WX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9MYXN0
RnJhZ0NvbG9yIiksCi0gICAgICAgICAgICAgICAgICAgICAgICBUVHlwZShFYnRGbG9hdCwgRWJw
TWVkaXVtLCBFdnFMYXN0RnJhZ0NvbG9yLCA0KSkpOwotICAgICAgICAgICAgICAgICAgICBzeW1i
b2xUYWJsZS5pbnNlcnQoRVNTTDFfQlVJTFRJTlMsICJHTF9OVl9zaGFkZXJfZnJhbWVidWZmZXJf
ZmV0Y2giLAotICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0
cmluZygiZ2xfTGFzdEZyYWdEYXRhIiksIGxhc3RGcmFnRGF0YSkpOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKHJlc291cmNlcy5BUk1fc2hh
ZGVyX2ZyYW1lYnVmZmVyX2ZldGNoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN5
bWJvbFRhYmxlLmluc2VydChFU1NMMV9CVUlMVElOUywgIkdMX0FSTV9zaGFkZXJfZnJhbWVidWZm
ZXJfZmV0Y2giLAotICAgICAgICAgICAgICAgICAgICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3Ry
aW5nKCJnbF9MYXN0RnJhZ0NvbG9yQVJNIiksCi0gICAgICAgICAgICAgICAgICAgIFRUeXBlKEVi
dEZsb2F0LCBFYnBNZWRpdW0sIEV2cUxhc3RGcmFnQ29sb3IsIDQpKSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBzeW1ib2xU
YWJsZS5pbnNlcnQoRVNTTDFfQlVJTFRJTlMsIG5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmco
ImNzc19NaXhDb2xvciIpLAotICAgICAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCBFYnBNZWRp
dW0sIEV2cUdsb2JhbCwgNCkpKTsKLSAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChFU1NM
MV9CVUlMVElOUywgbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiY3NzX0NvbG9yTWF0cml4
IiksCi0gICAgICAgICAgICAgICAgVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxR2xvYmFs
LCA0LCA0KSkpOwotICAgICAgICB9CisgICAgICAgICAgICAgIGlmIChyZXNvdXJjZXMuRVhUX3No
YWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgc3ltYm9sVGFibGUuaW5zZXJ0KEVTU0wxX0JVSUxUSU5TLCAiR0xfRVhUX3NoYWRlcl9mcmFt
ZWJ1ZmZlcl9mZXRjaCIsCisgICAgICAgICAgICAgICAgICAgICAgbmV3IFRWYXJpYWJsZShOZXdQ
b29sVFN0cmluZygiZ2xfTGFzdEZyYWdEYXRhIiksIGxhc3RGcmFnRGF0YSkpOworICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgIGVsc2UgaWYgKHJlc291cmNlcy5OVl9zaGFkZXJfZnJhbWVi
dWZmZXJfZmV0Y2gpCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIHN5bWJvbFRh
YmxlLmluc2VydChFU1NMMV9CVUlMVElOUywgIkdMX05WX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRj
aCIsCisgICAgICAgICAgICAgICAgICAgICAgbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygi
Z2xfTGFzdEZyYWdDb2xvciIpLAorICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0
LCBFYnBNZWRpdW0sIEV2cUxhc3RGcmFnQ29sb3IsIDQpKSk7CisgICAgICAgICAgICAgICAgICBz
eW1ib2xUYWJsZS5pbnNlcnQoRVNTTDFfQlVJTFRJTlMsICJHTF9OVl9zaGFkZXJfZnJhbWVidWZm
ZXJfZmV0Y2giLAorICAgICAgICAgICAgICAgICAgICAgIG5ldyBUVmFyaWFibGUoTmV3UG9vbFRT
dHJpbmcoImdsX0xhc3RGcmFnRGF0YSIpLCBsYXN0RnJhZ0RhdGEpKTsKKyAgICAgICAgICAgICAg
fQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChyZXNvdXJjZXMuQVJNX3NoYWRlcl9m
cmFtZWJ1ZmZlcl9mZXRjaCkKKyAgICAgICAgICB7CisgICAgICAgICAgICAgIHN5bWJvbFRhYmxl
Lmluc2VydChFU1NMMV9CVUlMVElOUywgIkdMX0FSTV9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2gi
LAorICAgICAgICAgICAgICAgICAgbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfTGFz
dEZyYWdDb2xvckFSTSIpLAorICAgICAgICAgICAgICAgICAgVFR5cGUoRWJ0RmxvYXQsIEVicE1l
ZGl1bSwgRXZxTGFzdEZyYWdDb2xvciwgNCkpKTsKKyAgICAgICAgICB9CisgICAgICB9CiAKICAg
ICAgICAgYnJlYWs7CiAKQEAgLTU4MSw2ICs2NjcsMjkgQEAKICAgICAgICAgc3ltYm9sVGFibGUu
aW5zZXJ0KEVTU0wzX0JVSUxUSU5TLCBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9W
ZXJ0ZXhJRCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVFR5cGUoRWJ0SW50LCBFYnBIaWdoLCBFdnFWZXJ0ZXhJRCwgMSkpKTsKICAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0NPTVBVVEVfU0hBREVSOgorICAgICAgeworICAg
ICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChFU1NMM18xX0JVSUxUSU5TLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9OdW1Xb3Jr
R3JvdXBzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFR5
cGUoRWJ0VUludCwgRWJwVW5kZWZpbmVkLCBFdnFOdW1Xb3JrR3JvdXBzLCAzKSkpOworICAgICAg
ICAgIHN5bWJvbFRhYmxlLmluc2VydChFU1NMM18xX0JVSUxUSU5TLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9Xb3JrR3JvdXBT
aXplIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFR5cGUo
RWJ0VUludCwgRWJwVW5kZWZpbmVkLCBFdnFXb3JrR3JvdXBTaXplLCAzKSkpOworICAgICAgICAg
IHN5bWJvbFRhYmxlLmluc2VydChFU1NMM18xX0JVSUxUSU5TLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9Xb3JrR3JvdXBJRCIp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidFVJ
bnQsIEVicFVuZGVmaW5lZCwgRXZxV29ya0dyb3VwSUQsIDMpKSk7CisgICAgICAgICAgc3ltYm9s
VGFibGUuaW5zZXJ0KEVTU0wzXzFfQlVJTFRJTlMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0xvY2FsSW52b2NhdGlvbklEIiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFR5cGUoRWJ0VUlu
dCwgRWJwVW5kZWZpbmVkLCBFdnFMb2NhbEludm9jYXRpb25JRCwgMykpKTsKKyAgICAgICAgICBz
eW1ib2xUYWJsZS5pbnNlcnQoRVNTTDNfMV9CVUlMVElOUywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfR2xvYmFsSW52b2NhdGlv
bklEIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFR5cGUo
RWJ0VUludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWxJbnZvY2F0aW9uSUQsIDMpKSk7CisgICAg
ICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KAorICAgICAgICAgICAgICBFU1NMM18xX0JVSUxUSU5T
LAorICAgICAgICAgICAgICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9Mb2NhbElu
dm9jYXRpb25JbmRleCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidFVJ
bnQsIEVicFVuZGVmaW5lZCwgRXZxTG9jYWxJbnZvY2F0aW9uSW5kZXgsIDEpKSk7CisgICAgICB9
CisgICAgICBicmVhazsKIAogICAgICAgZGVmYXVsdDoKICAgICAgICAgYXNzZXJ0KGZhbHNlICYm
ICJMYW5ndWFnZSBub3Qgc3VwcG9ydGVkIik7CkBAIC01OTQsNiArNzAzLDEwIEBACiAgICAgICAg
IGV4dEJlaGF2aW9yWyJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiXSA9IEVCaFVuZGVmaW5l
ZDsKICAgICBpZiAocmVzb3VyY2VzLk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwpCiAgICAgICAgIGV4
dEJlaGF2aW9yWyJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIl0gPSBFQmhVbmRlZmluZWQ7Cisg
ICAgaWYgKHJlc291cmNlcy5PRVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vzc2wzKQorICAgICAgICBl
eHRCZWhhdmlvclsiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbF9lc3NsMyJdID0gRUJoVW5kZWZp
bmVkOworICAgIGlmIChyZXNvdXJjZXMuTlZfRUdMX3N0cmVhbV9jb25zdW1lcl9leHRlcm5hbCkK
KyAgICAgICAgZXh0QmVoYXZpb3JbIkdMX05WX0VHTF9zdHJlYW1fY29uc3VtZXJfZXh0ZXJuYWwi
XSA9IEVCaFVuZGVmaW5lZDsKICAgICBpZiAocmVzb3VyY2VzLkFSQl90ZXh0dXJlX3JlY3Rhbmds
ZSkKICAgICAgICAgZXh0QmVoYXZpb3JbIkdMX0FSQl90ZXh0dXJlX3JlY3RhbmdsZSJdID0gRUJo
VW5kZWZpbmVkOwogICAgIGlmIChyZXNvdXJjZXMuRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWQpCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0
aWFsaXplVmFyaWFibGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplVmFyaWFibGVzLmNwcAkocmV2aXNp
b24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvSW5pdGlhbGl6ZVZhcmlhYmxlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYsMTEyICs2
LDEwMCBAQAogCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplVmFyaWFi
bGVzLmgiCiAKKyNpbmNsdWRlICJhbmdsZV9nbC5oIgogI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5o
IgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgorI2luY2x1ZGUg
ImNvbXBpbGVyL3RyYW5zbGF0b3IvdXRpbC5oIgogCiBuYW1lc3BhY2UKIHsKIAotVEludGVybUNv
bnN0YW50VW5pb24gKmNvbnN0cnVjdEZsb2F0Q29uc3RVbmlvbk5vZGUoY29uc3QgVFR5cGUgJnR5
cGUpCitjbGFzcyBWYXJpYWJsZUluaXRpYWxpemVyIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIK
IHsKLSAgICBUVHlwZSBteVR5cGUgPSB0eXBlOwotICAgIHVuc2lnbmVkIGNoYXIgc2l6ZSA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KG15VHlwZS5nZXROb21pbmFsU2l6ZSgpKTsKLSAgICBp
ZiAobXlUeXBlLmlzTWF0cml4KCkpCi0gICAgICAgIHNpemUgKj0gc2l6ZTsKLSAgICBUQ29uc3Rh
bnRVbmlvbiAqdSA9IG5ldyBUQ29uc3RhbnRVbmlvbltzaXplXTsKLSAgICBmb3IgKGludCBpaSA9
IDA7IGlpIDwgc2l6ZTsgKytpaSkKLSAgICAgICAgdVtpaV0uc2V0RkNvbnN0KDAuMGYpOworICBw
dWJsaWM6CisgICAgVmFyaWFibGVJbml0aWFsaXplcihjb25zdCBJbml0VmFyaWFibGVMaXN0ICZ2
YXJzKQorICAgICAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKSwgbVZh
cmlhYmxlcyh2YXJzKSwgbUNvZGVJbnNlcnRlZChmYWxzZSkKKyAgICB7CisgICAgfQogCi0gICAg
bXlUeXBlLmNsZWFyQXJyYXluZXNzKCk7Ci0gICAgbXlUeXBlLnNldFF1YWxpZmllcihFdnFDb25z
dCk7Ci0gICAgVEludGVybUNvbnN0YW50VW5pb24gKm5vZGUgPSBuZXcgVEludGVybUNvbnN0YW50
VW5pb24odSwgbXlUeXBlKTsKLSAgICByZXR1cm4gbm9kZTsKLX0KKyAgcHJvdGVjdGVkOgorICAg
IGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQsIFRJbnRlcm1CaW5hcnkgKm5vZGUpIG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCB2aXNpdFVuYXJ5KFZpc2l0LCBUSW50ZXJtVW5hcnkg
Km5vZGUpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCB2aXNpdElmRWxzZShW
aXNpdCwgVEludGVybUlmRWxzZSAqbm9kZSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIHZpc2l0TG9vcChWaXNpdCwgVEludGVybUxvb3AgKm5vZGUpIG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgYm9vbCB2aXNpdEJyYW5jaChWaXNpdCwgVEludGVybUJyYW5jaCAq
bm9kZSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHZpc2l0QWdncmVnYXRl
KFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQogCi1USW50ZXJtQ29uc3RhbnRVbmlvbiAqY29uc3RydWN0SW5kZXhOb2RlKGludCBpbmRleCkK
LXsKLSAgICBUQ29uc3RhbnRVbmlvbiAqdSA9IG5ldyBUQ29uc3RhbnRVbmlvblsxXTsKLSAgICB1
WzBdLnNldElDb25zdChpbmRleCk7CisgICAgYm9vbCB2aXNpdEZ1bmN0aW9uRGVmaW5pdGlvbihW
aXNpdCB2aXNpdCwgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAqbm9kZSkgb3ZlcnJpZGU7CiAK
LSAgICBUVHlwZSB0eXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCwgMSk7Ci0gICAg
VEludGVybUNvbnN0YW50VW5pb24gKm5vZGUgPSBuZXcgVEludGVybUNvbnN0YW50VW5pb24odSwg
dHlwZSk7Ci0gICAgcmV0dXJuIG5vZGU7Ci19CisgIHByaXZhdGU6CisgICAgdm9pZCBpbnNlcnRJ
bml0Q29kZShUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlKTsKIAotfSAgLy8gbmFtZXNwYWNlIGFu
b255bW91cworICAgIGNvbnN0IEluaXRWYXJpYWJsZUxpc3QgJm1WYXJpYWJsZXM7CisgICAgYm9v
bCBtQ29kZUluc2VydGVkOworfTsKIAotYm9vbCBJbml0aWFsaXplVmFyaWFibGVzOjp2aXNpdEFn
Z3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkKKy8vIFZhcmlhYmxl
SW5pdGlhbGl6ZXIgaW1wbGVtZW50YXRpb24uCisKK2Jvb2wgVmFyaWFibGVJbml0aWFsaXplcjo6
dmlzaXRGdW5jdGlvbkRlZmluaXRpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1GdW5jdGlvbkRlZmlu
aXRpb24gKm5vZGUpCiB7Ci0gICAgYm9vbCB2aXNpdENoaWxkcmVuID0gIW1Db2RlSW5zZXJ0ZWQ7
Ci0gICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQorICAgIC8vIEZ1bmN0aW9uIGRlZmluaXRpb24u
CisgICAgQVNTRVJUKHZpc2l0ID09IFByZVZpc2l0KTsKKyAgICBpZiAobm9kZS0+Z2V0RnVuY3Rp
b25TeW1ib2xJbmZvKCktPmlzTWFpbigpKQogICAgIHsKLSAgICAgIGNhc2UgRU9wU2VxdWVuY2U6
Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BGdW5jdGlvbjoKLSAgICAgIHsKLSAgICAg
ICAgLy8gRnVuY3Rpb24gZGVmaW5pdGlvbi4KLSAgICAgICAgQVNTRVJUKHZpc2l0ID09IFByZVZp
c2l0KTsKLSAgICAgICAgaWYgKG5vZGUtPmdldE5hbWUoKSA9PSAibWFpbigiKQotICAgICAgICB7
Ci0gICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlID0gbm9kZS0+Z2V0U2VxdWVu
Y2UoKTsKLSAgICAgICAgICAgIEFTU0VSVCgoc2VxdWVuY2UtPnNpemUoKSA9PSAxKSB8fCAoc2Vx
dWVuY2UtPnNpemUoKSA9PSAyKSk7Ci0gICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICpib2R5
ID0gTlVMTDsKLSAgICAgICAgICAgIGlmIChzZXF1ZW5jZS0+c2l6ZSgpID09IDEpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgYm9keSA9IG5ldyBUSW50ZXJtQWdncmVnYXRlKEVPcFNl
cXVlbmNlKTsKLSAgICAgICAgICAgICAgICBzZXF1ZW5jZS0+cHVzaF9iYWNrKGJvZHkpOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGJvZHkgPSAoKnNlcXVlbmNlKVsxXS0+Z2V0QXNBZ2dyZWdhdGUoKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIEFTU0VSVChib2R5KTsKLSAgICAgICAgICAgIGluc2VydEluaXRDb2Rl
KGJvZHktPmdldFNlcXVlbmNlKCkpOwotICAgICAgICAgICAgbUNvZGVJbnNlcnRlZCA9IHRydWU7
Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBkZWZhdWx0OgotICAg
ICAgICB2aXNpdENoaWxkcmVuID0gZmFsc2U7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBUSW50
ZXJtQmxvY2sgKmJvZHkgPSBub2RlLT5nZXRCb2R5KCk7CisgICAgICAgIGluc2VydEluaXRDb2Rl
KGJvZHktPmdldFNlcXVlbmNlKCkpOworICAgICAgICBtQ29kZUluc2VydGVkID0gdHJ1ZTsKICAg
ICB9Ci0gICAgcmV0dXJuIHZpc2l0Q2hpbGRyZW47CisgICAgcmV0dXJuIGZhbHNlOwogfQogCi12
b2lkIEluaXRpYWxpemVWYXJpYWJsZXM6Omluc2VydEluaXRDb2RlKFRJbnRlcm1TZXF1ZW5jZSAq
c2VxdWVuY2UpCit2b2lkIFZhcmlhYmxlSW5pdGlhbGl6ZXI6Omluc2VydEluaXRDb2RlKFRJbnRl
cm1TZXF1ZW5jZSAqc2VxdWVuY2UpCiB7Ci0gICAgZm9yIChzaXplX3QgaWkgPSAwOyBpaSA8IG1W
YXJpYWJsZXMuc2l6ZSgpOyArK2lpKQorICAgIGZvciAoY29uc3QgYXV0byAmdmFyIDogbVZhcmlh
YmxlcykKICAgICB7Ci0gICAgICAgIGNvbnN0IEluaXRWYXJpYWJsZUluZm8gJnZhckluZm8gPSBt
VmFyaWFibGVzW2lpXTsKKyAgICAgICAgVFN0cmluZyBuYW1lID0gVFN0cmluZyh2YXIubmFtZS5j
X3N0cigpKTsKKyAgICAgICAgVFR5cGUgdHlwZSAgID0gc2g6OkdldFNoYWRlclZhcmlhYmxlVHlw
ZSh2YXIpOwogCi0gICAgICAgIGlmICh2YXJJbmZvLnR5cGUuaXNBcnJheSgpKQorICAgICAgICAv
LyBBc3NpZ24gdGhlIGFycmF5IGVsZW1lbnRzIG9uZSBieSBvbmUgdG8ga2VlcCB0aGUgQVNUIGNv
bXBhdGlibGUgd2l0aCBFU1NMIDEuMDAgd2hpY2gKKyAgICAgICAgLy8gZG9lc24ndCBoYXZlIGFy
cmF5IGFzc2lnbm1lbnQuCisgICAgICAgIGlmICh2YXIuaXNBcnJheSgpKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBmb3IgKGludCBpbmRleCA9IHZhckluZm8udHlwZS5nZXRBcnJheVNpemUoKSAt
IDE7IGluZGV4ID49IDA7IC0taW5kZXgpCisgICAgICAgICAgICBzaXplX3QgcG9zID0gbmFtZS5m
aW5kX2xhc3Rfb2YoJ1snKTsKKyAgICAgICAgICAgIGlmIChwb3MgIT0gVFN0cmluZzo6bnBvcykK
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBUSW50ZXJtQmluYXJ5ICphc3NpZ24gPSBu
ZXcgVEludGVybUJpbmFyeShFT3BBc3NpZ24pOwotICAgICAgICAgICAgICAgIHNlcXVlbmNlLT5p
bnNlcnQoc2VxdWVuY2UtPmJlZ2luKCksIGFzc2lnbik7CisgICAgICAgICAgICAgICAgbmFtZSA9
IG5hbWUuc3Vic3RyKDAsIHBvcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBUVHlwZSBl
bGVtZW50VHlwZSA9IHR5cGU7CisgICAgICAgICAgICBlbGVtZW50VHlwZS5jbGVhckFycmF5bmVz
cygpOwogCi0gICAgICAgICAgICAgICAgVEludGVybUJpbmFyeSAqaW5kZXhEaXJlY3QgPSBuZXcg
VEludGVybUJpbmFyeShFT3BJbmRleERpcmVjdCk7Ci0gICAgICAgICAgICAgICAgVEludGVybVN5
bWJvbCAqc3ltYm9sID0gbmV3IFRJbnRlcm1TeW1ib2woMCwgdmFySW5mby5uYW1lLCB2YXJJbmZv
LnR5cGUpOwotICAgICAgICAgICAgICAgIGluZGV4RGlyZWN0LT5zZXRMZWZ0KHN5bWJvbCk7Ci0g
ICAgICAgICAgICAgICAgVEludGVybUNvbnN0YW50VW5pb24gKmluZGV4Tm9kZSA9IGNvbnN0cnVj
dEluZGV4Tm9kZShpbmRleCk7Ci0gICAgICAgICAgICAgICAgaW5kZXhEaXJlY3QtPnNldFJpZ2h0
KGluZGV4Tm9kZSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHZh
ci5hcnJheVNpemU7ICsraSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBUSW50ZXJt
U3ltYm9sICphcnJheVN5bWJvbCA9IG5ldyBUSW50ZXJtU3ltYm9sKDAsIG5hbWUsIHR5cGUpOwor
ICAgICAgICAgICAgICAgIFRJbnRlcm1CaW5hcnkgKmVsZW1lbnQgICAgID0gbmV3IFRJbnRlcm1C
aW5hcnkoRU9wSW5kZXhEaXJlY3QsIGFycmF5U3ltYm9sLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQ6OkNyZWF0
ZUluZGV4Tm9kZShpKSk7CiAKLSAgICAgICAgICAgICAgICBhc3NpZ24tPnNldExlZnQoaW5kZXhE
aXJlY3QpOworICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqemVybyAgICAgICAgPSBUSW50
ZXJtVHlwZWQ6OkNyZWF0ZVplcm8oZWxlbWVudFR5cGUpOworICAgICAgICAgICAgICAgIFRJbnRl
cm1CaW5hcnkgKmFzc2lnbm1lbnQgPSBuZXcgVEludGVybUJpbmFyeShFT3BBc3NpZ24sIGVsZW1l
bnQsIHplcm8pOwogCi0gICAgICAgICAgICAgICAgVEludGVybUNvbnN0YW50VW5pb24gKnplcm9D
b25zdCA9IGNvbnN0cnVjdEZsb2F0Q29uc3RVbmlvbk5vZGUodmFySW5mby50eXBlKTsKLSAgICAg
ICAgICAgICAgICBhc3NpZ24tPnNldFJpZ2h0KHplcm9Db25zdCk7CisgICAgICAgICAgICAgICAg
c2VxdWVuY2UtPmluc2VydChzZXF1ZW5jZS0+YmVnaW4oKSwgYXNzaWdubWVudCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBU
SW50ZXJtQmluYXJ5ICphc3NpZ24gPSBuZXcgVEludGVybUJpbmFyeShFT3BBc3NpZ24pOworICAg
ICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gbmV3IFRJbnRlcm1TeW1ib2woMCwgbmFt
ZSwgdHlwZSk7CisgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnplcm8gICAgPSBUSW50ZXJtVHlw
ZWQ6OkNyZWF0ZVplcm8odHlwZSk7CisKKyAgICAgICAgICAgIFRJbnRlcm1CaW5hcnkgKmFzc2ln
biA9IG5ldyBUSW50ZXJtQmluYXJ5KEVPcEFzc2lnbiwgc3ltYm9sLCB6ZXJvKTsKICAgICAgICAg
ICAgIHNlcXVlbmNlLT5pbnNlcnQoc2VxdWVuY2UtPmJlZ2luKCksIGFzc2lnbik7Ci0gICAgICAg
ICAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2wgPSBuZXcgVEludGVybVN5bWJvbCgwLCB2YXJJbmZv
Lm5hbWUsIHZhckluZm8udHlwZSk7Ci0gICAgICAgICAgICBhc3NpZ24tPnNldExlZnQoc3ltYm9s
KTsKLSAgICAgICAgICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICp6ZXJvQ29uc3QgPSBjb25zdHJ1
Y3RGbG9hdENvbnN0VW5pb25Ob2RlKHZhckluZm8udHlwZSk7Ci0gICAgICAgICAgICBhc3NpZ24t
PnNldFJpZ2h0KHplcm9Db25zdCk7CiAgICAgICAgIH0KLQogICAgIH0KIH0KIAorfSAgLy8gbmFt
ZXNwYWNlIGFub255bW91cworCit2b2lkIEluaXRpYWxpemVWYXJpYWJsZXMoVEludGVybU5vZGUg
KnJvb3QsIGNvbnN0IEluaXRWYXJpYWJsZUxpc3QgJnZhcnMpCit7CisgICAgVmFyaWFibGVJbml0
aWFsaXplciBpbml0aWFsaXplcih2YXJzKTsKKyAgICByb290LT50cmF2ZXJzZSgmaW5pdGlhbGl6
ZXIpOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvSW5pdGlhbGl6ZVZhcmlhYmxlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemVWYXJpYWJsZXMuaAko
cmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvSW5pdGlhbGl6ZVZhcmlhYmxlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03LDQ1
ICs3LDEzIEBACiAjaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFUT1JfSU5JVElBTElaRVZBUklBQkxF
U19IXwogI2RlZmluZSBDT01QSUxFUl9UUkFOU0xBVE9SX0lOSVRJQUxJWkVWQVJJQUJMRVNfSF8K
IAotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgorI2luY2x1ZGUg
PEdMU0xBTkcvU2hhZGVyTGFuZy5oPgogCi1jbGFzcyBJbml0aWFsaXplVmFyaWFibGVzIDogcHVi
bGljIFRJbnRlcm1UcmF2ZXJzZXIKLXsKLSAgcHVibGljOgotICAgIHN0cnVjdCBJbml0VmFyaWFi
bGVJbmZvCi0gICAgewotICAgICAgICBUU3RyaW5nIG5hbWU7Ci0gICAgICAgIFRUeXBlIHR5cGU7
CitjbGFzcyBUSW50ZXJtTm9kZTsKIAotICAgICAgICBJbml0VmFyaWFibGVJbmZvKGNvbnN0IFRT
dHJpbmcgJl9uYW1lLCBjb25zdCBUVHlwZSAmX3R5cGUpCi0gICAgICAgICAgICA6IG5hbWUoX25h
bWUpLAotICAgICAgICAgICAgICB0eXBlKF90eXBlKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAg
ICB9OwotICAgIHR5cGVkZWYgVFZlY3RvcjxJbml0VmFyaWFibGVJbmZvPiBJbml0VmFyaWFibGVJ
bmZvTGlzdDsKK3R5cGVkZWYgc3RkOjp2ZWN0b3I8c2g6OlNoYWRlclZhcmlhYmxlPiBJbml0VmFy
aWFibGVMaXN0OwogCi0gICAgSW5pdGlhbGl6ZVZhcmlhYmxlcyhjb25zdCBJbml0VmFyaWFibGVJ
bmZvTGlzdCAmdmFycykKLSAgICAgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBm
YWxzZSksCi0gICAgICAgICAgbVZhcmlhYmxlcyh2YXJzKSwKLSAgICAgICAgICBtQ29kZUluc2Vy
dGVkKGZhbHNlKQotICAgIHsKLSAgICB9CisvLyBUaGlzIGZ1bmN0aW9uIGNhbm5vdCBjdXJyZW50
bHkgaW5pdGlhbGl6ZSBzdHJ1Y3R1cmVzIGNvbnRhaW5pbmcgYXJyYXlzIGZvciBhbiBFU1NMIDEu
MDAgYmFja2VuZC4KK3ZvaWQgSW5pdGlhbGl6ZVZhcmlhYmxlcyhUSW50ZXJtTm9kZSAqcm9vdCwg
Y29uc3QgSW5pdFZhcmlhYmxlTGlzdCAmdmFycyk7CiAKLSAgcHJvdGVjdGVkOgotICAgIGJvb2wg
dmlzaXRCaW5hcnkoVmlzaXQsIFRJbnRlcm1CaW5hcnkgKm5vZGUpIG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgYm9vbCB2aXNpdFVuYXJ5KFZpc2l0LCBUSW50ZXJtVW5hcnkgKm5vZGUp
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCB2aXNpdFNlbGVjdGlvbihWaXNp
dCwgVEludGVybVNlbGVjdGlvbiAqbm9kZSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICBib29sIHZpc2l0TG9vcChWaXNpdCwgVEludGVybUxvb3AgKm5vZGUpIG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCB2aXNpdEJyYW5jaChWaXNpdCwgVEludGVybUJyYW5jaCAq
bm9kZSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIGJvb2wgdmlzaXRBZ2dyZWdh
dGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpIG92ZXJyaWRlOwotCi0gIHBy
aXZhdGU6Ci0gICAgdm9pZCBpbnNlcnRJbml0Q29kZShUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNl
KTsKLQotICAgIEluaXRWYXJpYWJsZUluZm9MaXN0IG1WYXJpYWJsZXM7Ci0gICAgYm9vbCBtQ29k
ZUluc2VydGVkOwotfTsKLQogI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX0lOSVRJQUxJ
WkVWQVJJQUJMRVNfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL0ludGVybU5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuY3BwCShyZXZpc2lv
biAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9JbnRlcm1Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcsOSArMTcsMTEgQEAKIAog
I2luY2x1ZGUgImNvbW1vbi9tYXRodXRpbC5oIgogI2luY2x1ZGUgImNvbW1vbi9tYXRyaXhfdXRp
bHMuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0RpYWdub3N0aWNzLmgiCiAjaW5j
bHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9IYXNoTmFtZXMuaCIKICNpbmNsdWRlICJjb21waWxl
ci90cmFuc2xhdG9yL0ludGVybU5vZGUuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9y
L1N5bWJvbFRhYmxlLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci91dGlsLmgiCiAK
IG5hbWVzcGFjZQogewpAQCAtMzMsMzkgKzM1LDYgQEAKICAgICByZXR1cm4gbGVmdCA+IHJpZ2h0
ID8gbGVmdCA6IHJpZ2h0OwogfQogCi1ib29sIFZhbGlkYXRlTXVsdGlwbGljYXRpb24oVE9wZXJh
dG9yIG9wLCBjb25zdCBUVHlwZSAmbGVmdCwgY29uc3QgVFR5cGUgJnJpZ2h0KQotewotICAgIHN3
aXRjaCAob3ApCi0gICAgewotICAgICAgY2FzZSBFT3BNdWw6Ci0gICAgICBjYXNlIEVPcE11bEFz
c2lnbjoKLSAgICAgICAgcmV0dXJuIGxlZnQuZ2V0Tm9taW5hbFNpemUoKSA9PSByaWdodC5nZXRO
b21pbmFsU2l6ZSgpICYmCi0gICAgICAgICAgICAgICBsZWZ0LmdldFNlY29uZGFyeVNpemUoKSA9
PSByaWdodC5nZXRTZWNvbmRhcnlTaXplKCk7Ci0gICAgICBjYXNlIEVPcFZlY3RvclRpbWVzU2Nh
bGFyOgotICAgICAgY2FzZSBFT3BWZWN0b3JUaW1lc1NjYWxhckFzc2lnbjoKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICBjYXNlIEVPcFZlY3RvclRpbWVzTWF0cml4OgotICAgICAgICByZXR1
cm4gbGVmdC5nZXROb21pbmFsU2l6ZSgpID09IHJpZ2h0LmdldFJvd3MoKTsKLSAgICAgIGNhc2Ug
RU9wVmVjdG9yVGltZXNNYXRyaXhBc3NpZ246Ci0gICAgICAgIHJldHVybiBsZWZ0LmdldE5vbWlu
YWxTaXplKCkgPT0gcmlnaHQuZ2V0Um93cygpICYmCi0gICAgICAgICAgICAgICBsZWZ0LmdldE5v
bWluYWxTaXplKCkgPT0gcmlnaHQuZ2V0Q29scygpOwotICAgICAgY2FzZSBFT3BNYXRyaXhUaW1l
c1ZlY3RvcjoKLSAgICAgICAgcmV0dXJuIGxlZnQuZ2V0Q29scygpID09IHJpZ2h0LmdldE5vbWlu
YWxTaXplKCk7Ci0gICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzU2NhbGFyOgotICAgICAgY2FzZSBF
T3BNYXRyaXhUaW1lc1NjYWxhckFzc2lnbjoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBj
YXNlIEVPcE1hdHJpeFRpbWVzTWF0cml4OgotICAgICAgICByZXR1cm4gbGVmdC5nZXRDb2xzKCkg
PT0gcmlnaHQuZ2V0Um93cygpOwotICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc01hdHJpeEFzc2ln
bjoKLSAgICAgICAgcmV0dXJuIGxlZnQuZ2V0Q29scygpID09IHJpZ2h0LmdldENvbHMoKSAmJgot
ICAgICAgICAgICAgICAgbGVmdC5nZXRSb3dzKCkgPT0gcmlnaHQuZ2V0Um93cygpOwotCi0gICAg
ICBkZWZhdWx0OgotICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotfQotCiBUQ29uc3RhbnRVbmlvbiAqVmVjdG9yaXplKGNvbnN0IFRDb25zdGFudFVu
aW9uICZjb25zdGFudCwgc2l6ZV90IHNpemUpCiB7CiAgICAgVENvbnN0YW50VW5pb24gKmNvbnN0
VW5pb24gPSBuZXcgVENvbnN0YW50VW5pb25bc2l6ZV07CkBAIC03NSwxMyArNDQsMTQgQEAKICAg
ICByZXR1cm4gY29uc3RVbmlvbjsKIH0KIAotdm9pZCBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdF
cnJvcihjb25zdCBUU291cmNlTG9jICZsb2MsIFRPcGVyYXRvciBvcCwgVEJhc2ljVHlwZSBiYXNp
Y1R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbmZvU2luayAmaW5m
b1NpbmssIFRDb25zdGFudFVuaW9uICpyZXN1bHQpCit2b2lkIFVuZGVmaW5lZENvbnN0YW50Rm9s
ZGluZ0Vycm9yKGNvbnN0IFRTb3VyY2VMb2MgJmxvYywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVE9wZXJhdG9yIG9wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUQmFzaWNUeXBlIGJhc2ljVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVERpYWdub3N0aWNzICpkaWFnbm9zdGljcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVENvbnN0YW50VW5pb24gKnJlc3VsdCkKIHsKLSAgICBzdGQ6OnN0cmluZ3N0
cmVhbSBjb25zdGFudEZvbGRpbmdFcnJvclN0cmVhbTsKLSAgICBjb25zdGFudEZvbGRpbmdFcnJv
clN0cmVhbSA8PCAiJyIgPDwgR2V0T3BlcmF0b3JTdHJpbmcob3ApCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPDwgIicgb3BlcmF0aW9uIHJlc3VsdCBpcyB1bmRlZmluZWQgZm9yIHRo
ZSB2YWx1ZXMgcGFzc2VkIGluIjsKLSAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeFdh
cm5pbmcsIGxvYywgY29uc3RhbnRGb2xkaW5nRXJyb3JTdHJlYW0uc3RyKCkuY19zdHIoKSk7Cisg
ICAgZGlhZ25vc3RpY3MtPndhcm5pbmcobG9jLCAib3BlcmF0aW9uIHJlc3VsdCBpcyB1bmRlZmlu
ZWQgZm9yIHRoZSB2YWx1ZXMgcGFzc2VkIGluIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBH
ZXRPcGVyYXRvclN0cmluZyhvcCksICIiKTsKIAogICAgIHN3aXRjaCAoYmFzaWNUeXBlKQogICAg
IHsKQEAgLTEyMyw3ICs5Myw3IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotVEludGVybVR5
cGVkICpDcmVhdGVGb2xkZWROb2RlKFRDb25zdGFudFVuaW9uICpjb25zdEFycmF5LAorVEludGVy
bVR5cGVkICpDcmVhdGVGb2xkZWROb2RlKGNvbnN0IFRDb25zdGFudFVuaW9uICpjb25zdEFycmF5
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRJbnRlcm1UeXBlZCAqb3Jp
Z2luYWxOb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVh
bGlmaWVyKQogewpAQCAtMTQ1LDggKzExNSw5IEBACiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCByb3dzICogY29sczsgaSsrKQogICAgICAgICBlbGVtZW50cy5wdXNoX2JhY2socGFyYW1BcnJh
eVtpXS5nZXRGQ29uc3QoKSk7CiAgICAgLy8gVHJhbnNwb3NlIGlzIHVzZWQgc2luY2UgdGhlIE1h
dHJpeCBjb25zdHJ1Y3RvciBleHBlY3RzIGFyZ3VtZW50cyBpbiByb3ctbWFqb3Igb3JkZXIsCi0g
ICAgLy8gd2hlcmVhcyB0aGUgcGFyYW1BcnJheSBpcyBpbiBjb2x1bW4tbWFqb3Igb3JkZXIuCi0g
ICAgcmV0dXJuIGFuZ2xlOjpNYXRyaXg8ZmxvYXQ+KGVsZW1lbnRzLCByb3dzLCBjb2xzKS50cmFu
c3Bvc2UoKTsKKyAgICAvLyB3aGVyZWFzIHRoZSBwYXJhbUFycmF5IGlzIGluIGNvbHVtbi1tYWpv
ciBvcmRlci4gUm93cy9jb2xzIHBhcmFtZXRlcnMgYXJlIGFsc28gZmxpcHBlZCBiZWxvdworICAg
IC8vIHNvIHRoYXQgdGhlIGNyZWF0ZWQgbWF0cml4IHdpbGwgaGF2ZSB0aGUgZXhwZWN0ZWQgZGlt
ZW5zaW9ucyBhZnRlciB0aGUgdHJhbnNwb3NlLgorICAgIHJldHVybiBhbmdsZTo6TWF0cml4PGZs
b2F0PihlbGVtZW50cywgY29scywgcm93cykudHJhbnNwb3NlKCk7CiB9CiAKIGFuZ2xlOjpNYXRy
aXg8ZmxvYXQ+IEdldE1hdHJpeChjb25zdCBUQ29uc3RhbnRVbmlvbiAqcGFyYW1BcnJheSwgY29u
c3QgdW5zaWduZWQgaW50ICZzaXplKQpAQCAtMTk1LDEwICsxNjYsMTEgQEAKIGJvb2wgVEludGVy
bUxvb3A6OnJlcGxhY2VDaGlsZE5vZGUoCiAgICAgVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50
ZXJtTm9kZSAqcmVwbGFjZW1lbnQpCiB7CisgICAgQVNTRVJUKG9yaWdpbmFsICE9IG51bGxwdHIp
OyAgLy8gVGhpcyByaXNrcyByZXBsYWNpbmcgbXVsdGlwbGUgY2hpbGRyZW4uCiAgICAgUkVQTEFD
RV9JRl9JUyhtSW5pdCwgVEludGVybU5vZGUsIG9yaWdpbmFsLCByZXBsYWNlbWVudCk7CiAgICAg
UkVQTEFDRV9JRl9JUyhtQ29uZCwgVEludGVybVR5cGVkLCBvcmlnaW5hbCwgcmVwbGFjZW1lbnQp
OwogICAgIFJFUExBQ0VfSUZfSVMobUV4cHIsIFRJbnRlcm1UeXBlZCwgb3JpZ2luYWwsIHJlcGxh
Y2VtZW50KTsKLSAgICBSRVBMQUNFX0lGX0lTKG1Cb2R5LCBUSW50ZXJtQWdncmVnYXRlLCBvcmln
aW5hbCwgcmVwbGFjZW1lbnQpOworICAgIFJFUExBQ0VfSUZfSVMobUJvZHksIFRJbnRlcm1CbG9j
aywgb3JpZ2luYWwsIHJlcGxhY2VtZW50KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTIw
OSw2ICsxODEsMTMgQEAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgVEludGVybVN3aXp6
bGU6OnJlcGxhY2VDaGlsZE5vZGUoVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAq
cmVwbGFjZW1lbnQpCit7CisgICAgQVNTRVJUKG9yaWdpbmFsLT5nZXRBc1R5cGVkKCktPmdldFR5
cGUoKSA9PSByZXBsYWNlbWVudC0+Z2V0QXNUeXBlZCgpLT5nZXRUeXBlKCkpOworICAgIFJFUExB
Q0VfSUZfSVMobU9wZXJhbmQsIFRJbnRlcm1UeXBlZCwgb3JpZ2luYWwsIHJlcGxhY2VtZW50KTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgVEludGVybUJpbmFyeTo6cmVwbGFjZUNoaWxk
Tm9kZSgKICAgICBUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVu
dCkKIHsKQEAgLTIyMCwyOCArMTk5LDQ3IEBACiBib29sIFRJbnRlcm1VbmFyeTo6cmVwbGFjZUNo
aWxkTm9kZSgKICAgICBUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNl
bWVudCkKIHsKKyAgICBBU1NFUlQob3JpZ2luYWwtPmdldEFzVHlwZWQoKS0+Z2V0VHlwZSgpID09
IHJlcGxhY2VtZW50LT5nZXRBc1R5cGVkKCktPmdldFR5cGUoKSk7CiAgICAgUkVQTEFDRV9JRl9J
UyhtT3BlcmFuZCwgVEludGVybVR5cGVkLCBvcmlnaW5hbCwgcmVwbGFjZW1lbnQpOwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAorYm9vbCBUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uOjpyZXBsYWNl
Q2hpbGROb2RlKFRJbnRlcm1Ob2RlICpvcmlnaW5hbCwgVEludGVybU5vZGUgKnJlcGxhY2VtZW50
KQoreworICAgIFJFUExBQ0VfSUZfSVMobVBhcmFtZXRlcnMsIFRJbnRlcm1BZ2dyZWdhdGUsIG9y
aWdpbmFsLCByZXBsYWNlbWVudCk7CisgICAgUkVQTEFDRV9JRl9JUyhtQm9keSwgVEludGVybUJs
b2NrLCBvcmlnaW5hbCwgcmVwbGFjZW1lbnQpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9v
bCBUSW50ZXJtQWdncmVnYXRlOjpyZXBsYWNlQ2hpbGROb2RlKAogICAgIFRJbnRlcm1Ob2RlICpv
cmlnaW5hbCwgVEludGVybU5vZGUgKnJlcGxhY2VtZW50KQogewotICAgIGZvciAoc2l6ZV90IGlp
ID0gMDsgaWkgPCBtU2VxdWVuY2Uuc2l6ZSgpOyArK2lpKQorICAgIHJldHVybiByZXBsYWNlQ2hp
bGROb2RlSW50ZXJuYWwob3JpZ2luYWwsIHJlcGxhY2VtZW50KTsKK30KKworYm9vbCBUSW50ZXJt
QmxvY2s6OnJlcGxhY2VDaGlsZE5vZGUoVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9k
ZSAqcmVwbGFjZW1lbnQpCit7CisgICAgcmV0dXJuIHJlcGxhY2VDaGlsZE5vZGVJbnRlcm5hbChv
cmlnaW5hbCwgcmVwbGFjZW1lbnQpOworfQorCitib29sIFRJbnRlcm1BZ2dyZWdhdGVCYXNlOjpy
ZXBsYWNlQ2hpbGROb2RlSW50ZXJuYWwoVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9k
ZSAqcmVwbGFjZW1lbnQpCit7CisgICAgZm9yIChzaXplX3QgaWkgPSAwOyBpaSA8IGdldFNlcXVl
bmNlKCktPnNpemUoKTsgKytpaSkKICAgICB7Ci0gICAgICAgIFJFUExBQ0VfSUZfSVMobVNlcXVl
bmNlW2lpXSwgVEludGVybU5vZGUsIG9yaWdpbmFsLCByZXBsYWNlbWVudCk7CisgICAgICAgIFJF
UExBQ0VfSUZfSVMoKCpnZXRTZXF1ZW5jZSgpKVtpaV0sIFRJbnRlcm1Ob2RlLCBvcmlnaW5hbCwg
cmVwbGFjZW1lbnQpOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVEludGVy
bUFnZ3JlZ2F0ZTo6cmVwbGFjZUNoaWxkTm9kZVdpdGhNdWx0aXBsZShUSW50ZXJtTm9kZSAqb3Jp
Z2luYWwsIFRJbnRlcm1TZXF1ZW5jZSByZXBsYWNlbWVudHMpCitib29sIFRJbnRlcm1BZ2dyZWdh
dGVCYXNlOjpyZXBsYWNlQ2hpbGROb2RlV2l0aE11bHRpcGxlKFRJbnRlcm1Ob2RlICpvcmlnaW5h
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVEludGVybVNlcXVlbmNlICZyZXBsYWNlbWVudHMpCiB7Ci0gICAgZm9yIChhdXRv
IGl0ID0gbVNlcXVlbmNlLmJlZ2luKCk7IGl0IDwgbVNlcXVlbmNlLmVuZCgpOyArK2l0KQorICAg
IGZvciAoYXV0byBpdCA9IGdldFNlcXVlbmNlKCktPmJlZ2luKCk7IGl0IDwgZ2V0U2VxdWVuY2Uo
KS0+ZW5kKCk7ICsraXQpCiAgICAgewogICAgICAgICBpZiAoKml0ID09IG9yaWdpbmFsKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBpdCA9IG1TZXF1ZW5jZS5lcmFzZShpdCk7Ci0gICAgICAgICAg
ICBtU2VxdWVuY2UuaW5zZXJ0KGl0LCByZXBsYWNlbWVudHMuYmVnaW4oKSwgcmVwbGFjZW1lbnRz
LmVuZCgpKTsKKyAgICAgICAgICAgIGl0ID0gZ2V0U2VxdWVuY2UoKS0+ZXJhc2UoaXQpOworICAg
ICAgICAgICAgZ2V0U2VxdWVuY2UoKS0+aW5zZXJ0KGl0LCByZXBsYWNlbWVudHMuYmVnaW4oKSwg
cmVwbGFjZW1lbnRzLmVuZCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CiAgICAgfQpAQCAtMjQ4LDE0ICsyNDYsMTUgQEAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJv
b2wgVEludGVybUFnZ3JlZ2F0ZTo6aW5zZXJ0Q2hpbGROb2RlcyhUSW50ZXJtU2VxdWVuY2U6OnNp
emVfdHlwZSBwb3NpdGlvbiwgVEludGVybVNlcXVlbmNlIGluc2VydGlvbnMpCitib29sIFRJbnRl
cm1BZ2dyZWdhdGVCYXNlOjppbnNlcnRDaGlsZE5vZGVzKFRJbnRlcm1TZXF1ZW5jZTo6c2l6ZV90
eXBlIHBvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUSW50ZXJtU2VxdWVuY2UgJmluc2VydGlvbnMpCiB7Ci0gICAgaWYgKHBvc2l0aW9u
ID4gbVNlcXVlbmNlLnNpemUoKSkKKyAgICBpZiAocG9zaXRpb24gPiBnZXRTZXF1ZW5jZSgpLT5z
aXplKCkpCiAgICAgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGF1dG8gaXQg
PSBtU2VxdWVuY2UuYmVnaW4oKSArIHBvc2l0aW9uOwotICAgIG1TZXF1ZW5jZS5pbnNlcnQoaXQs
IGluc2VydGlvbnMuYmVnaW4oKSwgaW5zZXJ0aW9ucy5lbmQoKSk7CisgICAgYXV0byBpdCA9IGdl
dFNlcXVlbmNlKCktPmJlZ2luKCkgKyBwb3NpdGlvbjsKKyAgICBnZXRTZXF1ZW5jZSgpLT5pbnNl
cnQoaXQsIGluc2VydGlvbnMuYmVnaW4oKSwgaW5zZXJ0aW9ucy5lbmQoKSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTMxMywyNiArMzEyLDQxIEBACiAgICAgfQogICAgIC8vIEVTU0wgMy4w
IHNwZWMgc2VjdGlvbiA4OiB0ZXh0dXJlU2l6ZSBhbHdheXMgZ2V0cyBoaWdocCBwcmVjaXNpb24u
CiAgICAgLy8gQWxsIG90aGVyIGZ1bmN0aW9ucyB0aGF0IHRha2UgYSBzYW1wbGVyIGFyZSBhc3N1
bWVkIHRvIGJlIHRleHR1cmUgZnVuY3Rpb25zLgotICAgIGlmIChtTmFtZS5nZXRTdHJpbmcoKS5m
aW5kKCJ0ZXh0dXJlU2l6ZSIpID09IDApCisgICAgaWYgKG1GdW5jdGlvbkluZm8uZ2V0TmFtZSgp
LmZpbmQoInRleHR1cmVTaXplIikgPT0gMCkKICAgICAgICAgbVR5cGUuc2V0UHJlY2lzaW9uKEVi
cEhpZ2gpOwogICAgIGVsc2UKICAgICAgICAgbVR5cGUuc2V0UHJlY2lzaW9uKHByZWNpc2lvbik7
CiB9CiAKLWJvb2wgVEludGVybVNlbGVjdGlvbjo6cmVwbGFjZUNoaWxkTm9kZSgKLSAgICBUSW50
ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCkKK3ZvaWQgVEludGVy
bUJsb2NrOjphcHBlbmRTdGF0ZW1lbnQoVEludGVybU5vZGUgKnN0YXRlbWVudCkKIHsKKyAgICBp
ZiAoc3RhdGVtZW50ICE9IG51bGxwdHIpCisgICAgeworICAgICAgICBtU3RhdGVtZW50cy5wdXNo
X2JhY2soc3RhdGVtZW50KTsKKyAgICB9Cit9CisKK2Jvb2wgVEludGVybVRlcm5hcnk6OnJlcGxh
Y2VDaGlsZE5vZGUoVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1l
bnQpCit7CiAgICAgUkVQTEFDRV9JRl9JUyhtQ29uZGl0aW9uLCBUSW50ZXJtVHlwZWQsIG9yaWdp
bmFsLCByZXBsYWNlbWVudCk7Ci0gICAgUkVQTEFDRV9JRl9JUyhtVHJ1ZUJsb2NrLCBUSW50ZXJt
Tm9kZSwgb3JpZ2luYWwsIHJlcGxhY2VtZW50KTsKLSAgICBSRVBMQUNFX0lGX0lTKG1GYWxzZUJs
b2NrLCBUSW50ZXJtTm9kZSwgb3JpZ2luYWwsIHJlcGxhY2VtZW50KTsKKyAgICBSRVBMQUNFX0lG
X0lTKG1UcnVlRXhwcmVzc2lvbiwgVEludGVybVR5cGVkLCBvcmlnaW5hbCwgcmVwbGFjZW1lbnQp
OworICAgIFJFUExBQ0VfSUZfSVMobUZhbHNlRXhwcmVzc2lvbiwgVEludGVybVR5cGVkLCBvcmln
aW5hbCwgcmVwbGFjZW1lbnQpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBUSW50ZXJt
SWZFbHNlOjpyZXBsYWNlQ2hpbGROb2RlKFRJbnRlcm1Ob2RlICpvcmlnaW5hbCwgVEludGVybU5v
ZGUgKnJlcGxhY2VtZW50KQoreworICAgIFJFUExBQ0VfSUZfSVMobUNvbmRpdGlvbiwgVEludGVy
bVR5cGVkLCBvcmlnaW5hbCwgcmVwbGFjZW1lbnQpOworICAgIFJFUExBQ0VfSUZfSVMobVRydWVC
bG9jaywgVEludGVybUJsb2NrLCBvcmlnaW5hbCwgcmVwbGFjZW1lbnQpOworICAgIFJFUExBQ0Vf
SUZfSVMobUZhbHNlQmxvY2ssIFRJbnRlcm1CbG9jaywgb3JpZ2luYWwsIHJlcGxhY2VtZW50KTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgVEludGVybVN3aXRjaDo6cmVwbGFjZUNoaWxk
Tm9kZSgKICAgICBUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVu
dCkKIHsKICAgICBSRVBMQUNFX0lGX0lTKG1Jbml0LCBUSW50ZXJtVHlwZWQsIG9yaWdpbmFsLCBy
ZXBsYWNlbWVudCk7Ci0gICAgUkVQTEFDRV9JRl9JUyhtU3RhdGVtZW50TGlzdCwgVEludGVybUFn
Z3JlZ2F0ZSwgb3JpZ2luYWwsIHJlcGxhY2VtZW50KTsKKyAgICBSRVBMQUNFX0lGX0lTKG1TdGF0
ZW1lbnRMaXN0LCBUSW50ZXJtQmxvY2ssIG9yaWdpbmFsLCByZXBsYWNlbWVudCk7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCkBAIC0zNTEsMTggKzM2NSwxMTUgQEAKICAgICBtTGluZSA9IG5vZGUu
bUxpbmU7CiB9CiAKK2Jvb2wgVEludGVybVR5cGVkOjppc0NvbnN0cnVjdG9yV2l0aE9ubHlDb25z
dGFudFVuaW9uUGFyYW1ldGVycygpCit7CisgICAgVEludGVybUFnZ3JlZ2F0ZSAqY29uc3RydWN0
b3IgPSBnZXRBc0FnZ3JlZ2F0ZSgpOworICAgIGlmICghY29uc3RydWN0b3IgfHwgIWNvbnN0cnVj
dG9yLT5pc0NvbnN0cnVjdG9yKCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIGZvciAoVEludGVybU5vZGUgKiZub2RlIDogKmNvbnN0cnVjdG9yLT5nZXRTZXF1ZW5j
ZSgpKQorICAgIHsKKyAgICAgICAgaWYgKCFub2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8v
IHN0YXRpYworVEludGVybVR5cGVkICpUSW50ZXJtVHlwZWQ6OkNyZWF0ZUluZGV4Tm9kZShpbnQg
aW5kZXgpCit7CisgICAgVENvbnN0YW50VW5pb24gKnUgPSBuZXcgVENvbnN0YW50VW5pb25bMV07
CisgICAgdVswXS5zZXRJQ29uc3QoaW5kZXgpOworCisgICAgVFR5cGUgdHlwZShFYnRJbnQsIEVi
cFVuZGVmaW5lZCwgRXZxQ29uc3QsIDEpOworICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpub2Rl
ID0gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9uKHUsIHR5cGUpOworICAgIHJldHVybiBub2RlOwor
fQorCisvLyBzdGF0aWMKK1RJbnRlcm1UeXBlZCAqVEludGVybVR5cGVkOjpDcmVhdGVaZXJvKGNv
bnN0IFRUeXBlICZ0eXBlKQoreworICAgIFRUeXBlIGNvbnN0VHlwZSh0eXBlKTsKKyAgICBjb25z
dFR5cGUuc2V0UXVhbGlmaWVyKEV2cUNvbnN0KTsKKworICAgIGlmICghdHlwZS5pc0FycmF5KCkg
JiYgdHlwZS5nZXRCYXNpY1R5cGUoKSAhPSBFYnRTdHJ1Y3QpCisgICAgeworICAgICAgICBBU1NF
UlQodHlwZS5pc1NjYWxhcigpIHx8IHR5cGUuaXNWZWN0b3IoKSB8fCB0eXBlLmlzTWF0cml4KCkp
OworCisgICAgICAgIHNpemVfdCBzaXplICAgICAgID0gY29uc3RUeXBlLmdldE9iamVjdFNpemUo
KTsKKyAgICAgICAgVENvbnN0YW50VW5pb24gKnUgPSBuZXcgVENvbnN0YW50VW5pb25bc2l6ZV07
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKHR5cGUuZ2V0QmFzaWNUeXBlKCkpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKKyAgICAgICAgICAgICAgICAgICAgdVtpXS5z
ZXRGQ29uc3QoMC4wZik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgRWJ0SW50OgorICAgICAgICAgICAgICAgICAgICB1W2ldLnNldElDb25zdCgwKTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBFYnRVSW50
OgorICAgICAgICAgICAgICAgICAgICB1W2ldLnNldFVDb25zdCgwdSk7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKKyAgICAgICAgICAg
ICAgICAgICAgdVtpXS5zZXRCQ29uc3QoZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpub2RlID0gbmV3
IFRJbnRlcm1Db25zdGFudFVuaW9uKHUsIGNvbnN0VHlwZSk7CisgICAgICAgIHJldHVybiBub2Rl
OworICAgIH0KKworICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmNvbnN0cnVjdG9yID0gbmV3IFRJbnRl
cm1BZ2dyZWdhdGUoc2g6OlR5cGVUb0NvbnN0cnVjdG9yT3BlcmF0b3IodHlwZSkpOworICAgIGNv
bnN0cnVjdG9yLT5zZXRUeXBlKGNvbnN0VHlwZSk7CisKKyAgICBpZiAodHlwZS5pc0FycmF5KCkp
CisgICAgeworICAgICAgICBUVHlwZSBlbGVtZW50VHlwZSh0eXBlKTsKKyAgICAgICAgZWxlbWVu
dFR5cGUuY2xlYXJBcnJheW5lc3MoKTsKKworICAgICAgICBzaXplX3QgYXJyYXlTaXplID0gdHlw
ZS5nZXRBcnJheVNpemUoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheVNp
emU7ICsraSkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3RydWN0b3ItPmdldFNlcXVlbmNl
KCktPnB1c2hfYmFjayhDcmVhdGVaZXJvKGVsZW1lbnRUeXBlKSk7CisgICAgICAgIH0KKyAgICB9
CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgQVNTRVJUKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0g
RWJ0U3RydWN0KTsKKworICAgICAgICBUU3RydWN0dXJlICpzdHJ1Y3R1cmUgPSB0eXBlLmdldFN0
cnVjdCgpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8gJmZpZWxkIDogc3RydWN0dXJlLT5maWVs
ZHMoKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3RydWN0b3ItPmdldFNlcXVlbmNlKCkt
PnB1c2hfYmFjayhDcmVhdGVaZXJvKCpmaWVsZC0+dHlwZSgpKSk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKIFRJbnRlcm1Db25zdGFudFVuaW9uOjpU
SW50ZXJtQ29uc3RhbnRVbmlvbihjb25zdCBUSW50ZXJtQ29uc3RhbnRVbmlvbiAmbm9kZSkgOiBU
SW50ZXJtVHlwZWQobm9kZSkKIHsKICAgICBtVW5pb25BcnJheVBvaW50ZXIgPSBub2RlLm1Vbmlv
bkFycmF5UG9pbnRlcjsKIH0KIAordm9pZCBURnVuY3Rpb25TeW1ib2xJbmZvOjpzZXRGcm9tRnVu
Y3Rpb24oY29uc3QgVEZ1bmN0aW9uICZmdW5jdGlvbikKK3sKKyAgICBzZXROYW1lKGZ1bmN0aW9u
LmdldE1hbmdsZWROYW1lKCkpOworICAgIHNldElkKGZ1bmN0aW9uLmdldFVuaXF1ZUlkKCkpOwor
fQorCiBUSW50ZXJtQWdncmVnYXRlOjpUSW50ZXJtQWdncmVnYXRlKGNvbnN0IFRJbnRlcm1BZ2dy
ZWdhdGUgJm5vZGUpCiAgICAgOiBUSW50ZXJtT3BlcmF0b3Iobm9kZSksCi0gICAgICBtTmFtZShu
b2RlLm1OYW1lKSwKICAgICAgIG1Vc2VyRGVmaW5lZChub2RlLm1Vc2VyRGVmaW5lZCksCi0gICAg
ICBtRnVuY3Rpb25JZChub2RlLm1GdW5jdGlvbklkKSwKICAgICAgIG1Vc2VFbXVsYXRlZEZ1bmN0
aW9uKG5vZGUubVVzZUVtdWxhdGVkRnVuY3Rpb24pLAotICAgICAgbUdvdFByZWNpc2lvbkZyb21D
aGlsZHJlbihub2RlLm1Hb3RQcmVjaXNpb25Gcm9tQ2hpbGRyZW4pCisgICAgICBtR290UHJlY2lz
aW9uRnJvbUNoaWxkcmVuKG5vZGUubUdvdFByZWNpc2lvbkZyb21DaGlsZHJlbiksCisgICAgICBt
RnVuY3Rpb25JbmZvKG5vZGUubUZ1bmN0aW9uSW5mbykKIHsKICAgICBmb3IgKFRJbnRlcm1Ob2Rl
ICpjaGlsZCA6IG5vZGUubVNlcXVlbmNlKQogICAgIHsKQEAgLTM3Myw2ICs0ODQsMTMgQEAKICAg
ICB9CiB9CiAKK1RJbnRlcm1Td2l6emxlOjpUSW50ZXJtU3dpenpsZShjb25zdCBUSW50ZXJtU3dp
enpsZSAmbm9kZSkgOiBUSW50ZXJtVHlwZWQobm9kZSkKK3sKKyAgICBUSW50ZXJtVHlwZWQgKm9w
ZXJhbmRDb3B5ID0gbm9kZS5tT3BlcmFuZC0+ZGVlcENvcHkoKTsKKyAgICBBU1NFUlQob3BlcmFu
ZENvcHkgIT0gbnVsbHB0cik7CisgICAgbU9wZXJhbmQgPSBvcGVyYW5kQ29weTsKK30KKwogVElu
dGVybUJpbmFyeTo6VEludGVybUJpbmFyeShjb25zdCBUSW50ZXJtQmluYXJ5ICZub2RlKQogICAg
IDogVEludGVybU9wZXJhdG9yKG5vZGUpLCBtQWRkSW5kZXhDbGFtcChub2RlLm1BZGRJbmRleENs
YW1wKQogewpAQCAtMzkxLDUyICs1MDksMjAgQEAKICAgICBtT3BlcmFuZCA9IG9wZXJhbmRDb3B5
OwogfQogCi1USW50ZXJtU2VsZWN0aW9uOjpUSW50ZXJtU2VsZWN0aW9uKGNvbnN0IFRJbnRlcm1T
ZWxlY3Rpb24gJm5vZGUpIDogVEludGVybVR5cGVkKG5vZGUpCitUSW50ZXJtVGVybmFyeTo6VElu
dGVybVRlcm5hcnkoY29uc3QgVEludGVybVRlcm5hcnkgJm5vZGUpIDogVEludGVybVR5cGVkKG5v
ZGUpCiB7Ci0gICAgLy8gT25seSBzdXBwb3J0ZWQgZm9yIHRlcm5hcnkgbm9kZXMsIG5vdCBpZiBz
dGF0ZW1lbnRzLgotICAgIFRJbnRlcm1UeXBlZCAqdHJ1ZVR5cGVkICA9IG5vZGUubVRydWVCbG9j
ay0+Z2V0QXNUeXBlZCgpOwotICAgIFRJbnRlcm1UeXBlZCAqZmFsc2VUeXBlZCA9IG5vZGUubUZh
bHNlQmxvY2stPmdldEFzVHlwZWQoKTsKLSAgICBBU1NFUlQodHJ1ZVR5cGVkICE9IG51bGxwdHIp
OwotICAgIEFTU0VSVChmYWxzZVR5cGVkICE9IG51bGxwdHIpOwogICAgIFRJbnRlcm1UeXBlZCAq
Y29uZGl0aW9uQ29weSA9IG5vZGUubUNvbmRpdGlvbi0+ZGVlcENvcHkoKTsKLSAgICBUSW50ZXJt
VHlwZWQgKnRydWVDb3B5ICAgICAgPSB0cnVlVHlwZWQtPmRlZXBDb3B5KCk7Ci0gICAgVEludGVy
bVR5cGVkICpmYWxzZUNvcHkgPSBmYWxzZVR5cGVkLT5kZWVwQ29weSgpOworICAgIFRJbnRlcm1U
eXBlZCAqdHJ1ZUNvcHkgICAgICA9IG5vZGUubVRydWVFeHByZXNzaW9uLT5kZWVwQ29weSgpOwor
ICAgIFRJbnRlcm1UeXBlZCAqZmFsc2VDb3B5ICAgICA9IG5vZGUubUZhbHNlRXhwcmVzc2lvbi0+
ZGVlcENvcHkoKTsKICAgICBBU1NFUlQoY29uZGl0aW9uQ29weSAhPSBudWxscHRyICYmIHRydWVD
b3B5ICE9IG51bGxwdHIgJiYgZmFsc2VDb3B5ICE9IG51bGxwdHIpOwotICAgIG1Db25kaXRpb24g
ID0gY29uZGl0aW9uQ29weTsKLSAgICBtVHJ1ZUJsb2NrICA9IHRydWVDb3B5OwotICAgIG1GYWxz
ZUJsb2NrID0gZmFsc2VDb3B5OworICAgIG1Db25kaXRpb24gICAgICAgPSBjb25kaXRpb25Db3B5
OworICAgIG1UcnVlRXhwcmVzc2lvbiAgPSB0cnVlQ29weTsKKyAgICBtRmFsc2VFeHByZXNzaW9u
ID0gZmFsc2VDb3B5OwogfQogCi0vLwotLy8gU2F5IHdoZXRoZXIgb3Igbm90IGFuIG9wZXJhdGlv
biBub2RlIGNoYW5nZXMgdGhlIHZhbHVlIG9mIGEgdmFyaWFibGUuCi0vLwogYm9vbCBUSW50ZXJt
T3BlcmF0b3I6OmlzQXNzaWdubWVudCgpIGNvbnN0CiB7Ci0gICAgc3dpdGNoIChtT3ApCi0gICAg
ewotICAgICAgY2FzZSBFT3BQb3N0SW5jcmVtZW50OgotICAgICAgY2FzZSBFT3BQb3N0RGVjcmVt
ZW50OgotICAgICAgY2FzZSBFT3BQcmVJbmNyZW1lbnQ6Ci0gICAgICBjYXNlIEVPcFByZURlY3Jl
bWVudDoKLSAgICAgIGNhc2UgRU9wQXNzaWduOgotICAgICAgY2FzZSBFT3BBZGRBc3NpZ246Ci0g
ICAgICBjYXNlIEVPcFN1YkFzc2lnbjoKLSAgICAgIGNhc2UgRU9wTXVsQXNzaWduOgotICAgICAg
Y2FzZSBFT3BWZWN0b3JUaW1lc01hdHJpeEFzc2lnbjoKLSAgICAgIGNhc2UgRU9wVmVjdG9yVGlt
ZXNTY2FsYXJBc3NpZ246Ci0gICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzU2NhbGFyQXNzaWduOgot
ICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc01hdHJpeEFzc2lnbjoKLSAgICAgIGNhc2UgRU9wRGl2
QXNzaWduOgotICAgICAgY2FzZSBFT3BJTW9kQXNzaWduOgotICAgICAgY2FzZSBFT3BCaXRTaGlm
dExlZnRBc3NpZ246Ci0gICAgICBjYXNlIEVPcEJpdFNoaWZ0UmlnaHRBc3NpZ246Ci0gICAgICBj
YXNlIEVPcEJpdHdpc2VBbmRBc3NpZ246Ci0gICAgICBjYXNlIEVPcEJpdHdpc2VYb3JBc3NpZ246
Ci0gICAgICBjYXNlIEVPcEJpdHdpc2VPckFzc2lnbjoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIHJldHVybiBJ
c0Fzc2lnbm1lbnQobU9wKTsKIH0KIAogYm9vbCBUSW50ZXJtT3BlcmF0b3I6OmlzTXVsdGlwbGlj
YXRpb24oKSBjb25zdApAQCAtNDk0LDc0ICs1ODAsMjc5IEBACiAgICAgfQogfQogCitUT3BlcmF0
b3IgVEludGVybUJpbmFyeTo6R2V0TXVsT3BCYXNlZE9uT3BlcmFuZHMoY29uc3QgVFR5cGUgJmxl
ZnQsIGNvbnN0IFRUeXBlICZyaWdodCkKK3sKKyAgICBpZiAobGVmdC5pc01hdHJpeCgpKQorICAg
IHsKKyAgICAgICAgaWYgKHJpZ2h0LmlzTWF0cml4KCkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBFT3BNYXRyaXhUaW1lc01hdHJpeDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmIChyaWdodC5pc1ZlY3RvcigpKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHJldHVybiBFT3BNYXRyaXhUaW1lc1ZlY3RvcjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gRU9wTWF0cml4VGltZXNTY2FsYXI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgaWYgKHJpZ2h0LmlzTWF0cml4KCkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmIChsZWZ0LmlzVmVjdG9yKCkpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIEVPcFZlY3RvclRpbWVzTWF0cml4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biBFT3BNYXRyaXhUaW1lc1NjYWxhcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIE5laXRoZXIgb3BlcmFuZCBpcyBhIG1h
dHJpeC4KKyAgICAgICAgICAgIGlmIChsZWZ0LmlzVmVjdG9yKCkgPT0gcmlnaHQuaXNWZWN0b3Io
KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBMZWF2ZSBhcyBjb21wb25lbnQg
cHJvZHVjdC4KKyAgICAgICAgICAgICAgICByZXR1cm4gRU9wTXVsOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBF
T3BWZWN0b3JUaW1lc1NjYWxhcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30K
KworVE9wZXJhdG9yIFRJbnRlcm1CaW5hcnk6OkdldE11bEFzc2lnbk9wQmFzZWRPbk9wZXJhbmRz
KGNvbnN0IFRUeXBlICZsZWZ0LCBjb25zdCBUVHlwZSAmcmlnaHQpCit7CisgICAgaWYgKGxlZnQu
aXNNYXRyaXgoKSkKKyAgICB7CisgICAgICAgIGlmIChyaWdodC5pc01hdHJpeCgpKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gRU9wTWF0cml4VGltZXNNYXRyaXhBc3NpZ247CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICAvLyByaWdodCBzaG91
bGQgYmUgc2NhbGFyLCBidXQgdGhpcyBtYXkgbm90IGJlIHZhbGlkYXRlZCB5ZXQuCisgICAgICAg
ICAgICByZXR1cm4gRU9wTWF0cml4VGltZXNTY2FsYXJBc3NpZ247CisgICAgICAgIH0KKyAgICB9
CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgaWYgKHJpZ2h0LmlzTWF0cml4KCkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIC8vIExlZnQgc2hvdWxkIGJlIGEgdmVjdG9yLCBidXQgdGhpcyBtYXkg
bm90IGJlIHZhbGlkYXRlZCB5ZXQuCisgICAgICAgICAgICByZXR1cm4gRU9wVmVjdG9yVGltZXNN
YXRyaXhBc3NpZ247CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAg
ICAgICAvLyBOZWl0aGVyIG9wZXJhbmQgaXMgYSBtYXRyaXguCisgICAgICAgICAgICBpZiAobGVm
dC5pc1ZlY3RvcigpID09IHJpZ2h0LmlzVmVjdG9yKCkpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgLy8gTGVhdmUgYXMgY29tcG9uZW50IHByb2R1Y3QuCisgICAgICAgICAgICAgICAg
cmV0dXJuIEVPcE11bEFzc2lnbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBsZWZ0IHNob3VsZCBiZSB2ZWN0b3IgYW5k
IHJpZ2h0IHNob3VsZCBiZSBzY2FsYXIsIGJ1dCB0aGlzIG1heSBub3QgYmUgdmFsaWRhdGVkCisg
ICAgICAgICAgICAgICAgLy8geWV0LgorICAgICAgICAgICAgICAgIHJldHVybiBFT3BWZWN0b3JU
aW1lc1NjYWxhckFzc2lnbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwog
Ly8KIC8vIE1ha2Ugc3VyZSB0aGUgdHlwZSBvZiBhIHVuYXJ5IG9wZXJhdG9yIGlzIGFwcHJvcHJp
YXRlIGZvciBpdHMKIC8vIGNvbWJpbmF0aW9uIG9mIG9wZXJhdGlvbiBhbmQgb3BlcmFuZCB0eXBl
LgogLy8KLXZvaWQgVEludGVybVVuYXJ5Ojpwcm9tb3RlKGNvbnN0IFRUeXBlICpmdW5jUmV0dXJu
VHlwZSkKK3ZvaWQgVEludGVybVVuYXJ5Ojpwcm9tb3RlKCkKIHsKKyAgICBUUXVhbGlmaWVyIHJl
c3VsdFF1YWxpZmllciA9IEV2cVRlbXBvcmFyeTsKKyAgICBpZiAobU9wZXJhbmQtPmdldFF1YWxp
ZmllcigpID09IEV2cUNvbnN0KQorICAgICAgICByZXN1bHRRdWFsaWZpZXIgPSBFdnFDb25zdDsK
KworICAgIHVuc2lnbmVkIGNoYXIgb3BlcmFuZFByaW1hcnlTaXplID0KKyAgICAgICAgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcj4obU9wZXJhbmQtPmdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgp
KTsKICAgICBzd2l0Y2ggKG1PcCkKICAgICB7Ci0gICAgICBjYXNlIEVPcEZsb2F0Qml0c1RvSW50
OgotICAgICAgY2FzZSBFT3BGbG9hdEJpdHNUb1VpbnQ6Ci0gICAgICBjYXNlIEVPcEludEJpdHNU
b0Zsb2F0OgotICAgICAgY2FzZSBFT3BVaW50Qml0c1RvRmxvYXQ6Ci0gICAgICBjYXNlIEVPcFBh
Y2tTbm9ybTJ4MTY6Ci0gICAgICBjYXNlIEVPcFBhY2tVbm9ybTJ4MTY6Ci0gICAgICBjYXNlIEVP
cFBhY2tIYWxmMngxNjoKLSAgICAgIGNhc2UgRU9wVW5wYWNrU25vcm0yeDE2OgotICAgICAgY2Fz
ZSBFT3BVbnBhY2tVbm9ybTJ4MTY6Ci0gICAgICAgIG1UeXBlLnNldFByZWNpc2lvbihFYnBIaWdo
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFVucGFja0hhbGYyeDE2OgotICAgICAg
ICBtVHlwZS5zZXRQcmVjaXNpb24oRWJwTWVkaXVtKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBk
ZWZhdWx0OgotICAgICAgICBzZXRUeXBlKG1PcGVyYW5kLT5nZXRUeXBlKCkpOworICAgICAgICBj
YXNlIEVPcEZsb2F0Qml0c1RvSW50OgorICAgICAgICAgICAgc2V0VHlwZShUVHlwZShFYnRJbnQs
IEVicEhpZ2gsIHJlc3VsdFF1YWxpZmllciwgb3BlcmFuZFByaW1hcnlTaXplKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BGbG9hdEJpdHNUb1VpbnQ6CisgICAgICAgICAg
ICBzZXRUeXBlKFRUeXBlKEVidFVJbnQsIEVicEhpZ2gsIHJlc3VsdFF1YWxpZmllciwgb3BlcmFu
ZFByaW1hcnlTaXplKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BJbnRC
aXRzVG9GbG9hdDoKKyAgICAgICAgY2FzZSBFT3BVaW50Qml0c1RvRmxvYXQ6CisgICAgICAgICAg
ICBzZXRUeXBlKFRUeXBlKEVidEZsb2F0LCBFYnBIaWdoLCByZXN1bHRRdWFsaWZpZXIsIG9wZXJh
bmRQcmltYXJ5U2l6ZSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wUGFj
a1Nub3JtMngxNjoKKyAgICAgICAgY2FzZSBFT3BQYWNrVW5vcm0yeDE2OgorICAgICAgICBjYXNl
IEVPcFBhY2tIYWxmMngxNjoKKyAgICAgICAgICAgIHNldFR5cGUoVFR5cGUoRWJ0VUludCwgRWJw
SGlnaCwgcmVzdWx0UXVhbGlmaWVyKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBFT3BVbnBhY2tTbm9ybTJ4MTY6CisgICAgICAgIGNhc2UgRU9wVW5wYWNrVW5vcm0yeDE2Ogor
ICAgICAgICAgICAgc2V0VHlwZShUVHlwZShFYnRGbG9hdCwgRWJwSGlnaCwgcmVzdWx0UXVhbGlm
aWVyLCAyKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BVbnBhY2tIYWxm
MngxNjoKKyAgICAgICAgICAgIHNldFR5cGUoVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgcmVz
dWx0UXVhbGlmaWVyLCAyKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BB
bnk6CisgICAgICAgIGNhc2UgRU9wQWxsOgorICAgICAgICAgICAgc2V0VHlwZShUVHlwZShFYnRC
b29sLCBFYnBVbmRlZmluZWQsIHJlc3VsdFF1YWxpZmllcikpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgRU9wTGVuZ3RoOgorICAgICAgICBjYXNlIEVPcERldGVybWluYW50Ogor
ICAgICAgICAgICAgc2V0VHlwZShUVHlwZShFYnRGbG9hdCwgbU9wZXJhbmQtPmdldFR5cGUoKS5n
ZXRQcmVjaXNpb24oKSwgcmVzdWx0UXVhbGlmaWVyKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBFT3BUcmFuc3Bvc2U6CisgICAgICAgICAgICBzZXRUeXBlKFRUeXBlKEVidEZs
b2F0LCBtT3BlcmFuZC0+Z2V0VHlwZSgpLmdldFByZWNpc2lvbigpLCByZXN1bHRRdWFsaWZpZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KG1P
cGVyYW5kLT5nZXRUeXBlKCkuZ2V0Um93cygpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obU9wZXJhbmQtPmdldFR5cGUoKS5nZXRDb2xzKCkp
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BJc0luZjoKKyAgICAgICAg
Y2FzZSBFT3BJc05hbjoKKyAgICAgICAgICAgIHNldFR5cGUoVFR5cGUoRWJ0Qm9vbCwgRWJwVW5k
ZWZpbmVkLCByZXN1bHRRdWFsaWZpZXIsIG9wZXJhbmRQcmltYXJ5U2l6ZSkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBzZXRUeXBlKG1PcGVyYW5k
LT5nZXRUeXBlKCkpOworICAgICAgICAgICAgbVR5cGUuc2V0UXVhbGlmaWVyKHJlc3VsdFF1YWxp
Zmllcik7CisgICAgICAgICAgICBicmVhazsKICAgICB9Cit9CiAKLSAgICBpZiAoZnVuY1JldHVy
blR5cGUgIT0gbnVsbHB0cikKK1RJbnRlcm1Td2l6emxlOjpUSW50ZXJtU3dpenpsZShUSW50ZXJt
VHlwZWQgKm9wZXJhbmQsIGNvbnN0IFRWZWN0b3I8aW50PiAmc3dpenpsZU9mZnNldHMpCisgICAg
OiBUSW50ZXJtVHlwZWQoVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCkpLAorICAgICAgbU9w
ZXJhbmQob3BlcmFuZCksCisgICAgICBtU3dpenpsZU9mZnNldHMoc3dpenpsZU9mZnNldHMpCit7
CisgICAgQVNTRVJUKG1Td2l6emxlT2Zmc2V0cy5zaXplKCkgPD0gNCk7CisgICAgcHJvbW90ZSgp
OworfQorCitUSW50ZXJtVW5hcnk6OlRJbnRlcm1VbmFyeShUT3BlcmF0b3Igb3AsIFRJbnRlcm1U
eXBlZCAqb3BlcmFuZCkKKyAgICA6IFRJbnRlcm1PcGVyYXRvcihvcCksIG1PcGVyYW5kKG9wZXJh
bmQpLCBtVXNlRW11bGF0ZWRGdW5jdGlvbihmYWxzZSkKK3sKKyAgICBwcm9tb3RlKCk7Cit9CisK
K1RJbnRlcm1CaW5hcnk6OlRJbnRlcm1CaW5hcnkoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQg
KmxlZnQsIFRJbnRlcm1UeXBlZCAqcmlnaHQpCisgICAgOiBUSW50ZXJtT3BlcmF0b3Iob3ApLCBt
TGVmdChsZWZ0KSwgbVJpZ2h0KHJpZ2h0KSwgbUFkZEluZGV4Q2xhbXAoZmFsc2UpCit7CisgICAg
cHJvbW90ZSgpOworfQorCitUSW50ZXJtVGVybmFyeTo6VEludGVybVRlcm5hcnkoVEludGVybVR5
cGVkICpjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAq
dHJ1ZUV4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5
cGVkICpmYWxzZUV4cHJlc3Npb24pCisgICAgOiBUSW50ZXJtVHlwZWQodHJ1ZUV4cHJlc3Npb24t
PmdldFR5cGUoKSksCisgICAgICBtQ29uZGl0aW9uKGNvbmQpLAorICAgICAgbVRydWVFeHByZXNz
aW9uKHRydWVFeHByZXNzaW9uKSwKKyAgICAgIG1GYWxzZUV4cHJlc3Npb24oZmFsc2VFeHByZXNz
aW9uKQoreworICAgIGdldFR5cGVQb2ludGVyKCktPnNldFF1YWxpZmllcigKKyAgICAgICAgVElu
dGVybVRlcm5hcnk6OkRldGVybWluZVF1YWxpZmllcihjb25kLCB0cnVlRXhwcmVzc2lvbiwgZmFs
c2VFeHByZXNzaW9uKSk7Cit9CisKKy8vIHN0YXRpYworVFF1YWxpZmllciBUSW50ZXJtVGVybmFy
eTo6RGV0ZXJtaW5lUXVhbGlmaWVyKFRJbnRlcm1UeXBlZCAqY29uZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnRydWVFeHByZXNz
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRl
cm1UeXBlZCAqZmFsc2VFeHByZXNzaW9uKQoreworICAgIGlmIChjb25kLT5nZXRRdWFsaWZpZXIo
KSA9PSBFdnFDb25zdCAmJiB0cnVlRXhwcmVzc2lvbi0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29u
c3QgJiYKKyAgICAgICAgZmFsc2VFeHByZXNzaW9uLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25z
dCkKICAgICB7Ci0gICAgICAgIGlmIChmdW5jUmV0dXJuVHlwZS0+Z2V0QmFzaWNUeXBlKCkgPT0g
RWJ0Qm9vbCkKKyAgICAgICAgcmV0dXJuIEV2cUNvbnN0OworICAgIH0KKyAgICByZXR1cm4gRXZx
VGVtcG9yYXJ5OworfQorCit2b2lkIFRJbnRlcm1Td2l6emxlOjpwcm9tb3RlKCkKK3sKKyAgICBU
UXVhbGlmaWVyIHJlc3VsdFF1YWxpZmllciA9IEV2cVRlbXBvcmFyeTsKKyAgICBpZiAobU9wZXJh
bmQtPmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KQorICAgICAgICByZXN1bHRRdWFsaWZpZXIg
PSBFdnFDb25zdDsKKworICAgIGF1dG8gbnVtRmllbGRzID0gbVN3aXp6bGVPZmZzZXRzLnNpemUo
KTsKKyAgICBzZXRUeXBlKFRUeXBlKG1PcGVyYW5kLT5nZXRCYXNpY1R5cGUoKSwgbU9wZXJhbmQt
PmdldFByZWNpc2lvbigpLCByZXN1bHRRdWFsaWZpZXIsCisgICAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihudW1GaWVsZHMpKSk7Cit9CisKK2Jvb2wgVEludGVybVN3
aXp6bGU6Omhhc0R1cGxpY2F0ZU9mZnNldHMoKSBjb25zdAoreworICAgIGludCBvZmZzZXRDb3Vu
dFs0XSA9IHswdSwgMHUsIDB1LCAwdX07CisgICAgZm9yIChjb25zdCBhdXRvIG9mZnNldCA6IG1T
d2l6emxlT2Zmc2V0cykKKyAgICB7CisgICAgICAgIG9mZnNldENvdW50W29mZnNldF0rKzsKKyAg
ICAgICAgaWYgKG9mZnNldENvdW50W29mZnNldF0gPiAxKQogICAgICAgICB7Ci0gICAgICAgICAg
ICAvLyBCb29sIHR5cGVzIHNob3VsZCBub3QgaGF2ZSBwcmVjaXNpb24uCi0gICAgICAgICAgICBz
ZXRUeXBlKCpmdW5jUmV0dXJuVHlwZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQotICAgICAgICBlbHNlCisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBU
SW50ZXJtU3dpenpsZTo6d3JpdGVPZmZzZXRzQXNYWVpXKFRJbmZvU2lua0Jhc2UgKm91dCkgY29u
c3QKK3sKKyAgICBmb3IgKGNvbnN0IGludCBvZmZzZXQgOiBtU3dpenpsZU9mZnNldHMpCisgICAg
eworICAgICAgICBzd2l0Y2ggKG9mZnNldCkKICAgICAgICAgewotICAgICAgICAgICAgLy8gUHJl
Y2lzaW9uIG9mIHRoZSBub2RlIGhhcyBiZWVuIHNldCBiYXNlZCBvbiB0aGUgb3BlcmFuZC4KLSAg
ICAgICAgICAgIHNldFR5cGVQcmVzZXJ2ZVByZWNpc2lvbigqZnVuY1JldHVyblR5cGUpOworICAg
ICAgICBjYXNlIDA6CisgICAgICAgICAgICAqb3V0IDw8ICJ4IjsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAqb3V0IDw8ICJ5IjsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAqb3V0IDw8ICJ6IjsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAqb3V0IDw8ICJ3IjsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKICAgICAgICAgfQogICAgIH0KK30KIAotICAgIGlmIChtT3BlcmFuZC0+Z2V0UXVh
bGlmaWVyKCkgPT0gRXZxQ29uc3QpCi0gICAgICAgIG1UeXBlLnNldFF1YWxpZmllcihFdnFDb25z
dCk7Ci0gICAgZWxzZQotICAgICAgICBtVHlwZS5zZXRRdWFsaWZpZXIoRXZxVGVtcG9yYXJ5KTsK
K1RRdWFsaWZpZXIgVEludGVybUJpbmFyeTo6R2V0Q29tbWFRdWFsaWZpZXIoaW50IHNoYWRlclZl
cnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRJbnRlcm1UeXBlZCAqbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVEludGVybVR5cGVkICpyaWdodCkKK3sKKyAgICAvLyBFU1NMMy4wMCBz
ZWN0aW9uIDEyLjQzOiBUaGUgcmVzdWx0IG9mIGEgc2VxdWVuY2Ugb3BlcmF0b3IgaXMgbm90IGEg
Y29uc3RhbnQtZXhwcmVzc2lvbi4KKyAgICBpZiAoc2hhZGVyVmVyc2lvbiA+PSAzMDAgfHwgbGVm
dC0+Z2V0UXVhbGlmaWVyKCkgIT0gRXZxQ29uc3QgfHwKKyAgICAgICAgcmlnaHQtPmdldFF1YWxp
ZmllcigpICE9IEV2cUNvbnN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEV2cVRlbXBvcmFyeTsK
KyAgICB9CisgICAgcmV0dXJuIEV2cUNvbnN0OwogfQogCi0vLwotLy8gRXN0YWJsaXNoZXMgdGhl
IHR5cGUgb2YgdGhlIHJlc3VsdGFudCBvcGVyYXRpb24sIGFzIHdlbGwgYXMKLS8vIG1ha2VzIHRo
ZSBvcGVyYXRvciB0aGUgY29ycmVjdCBvbmUgZm9yIHRoZSBvcGVyYW5kcy4KLS8vCi0vLyBGb3Ig
bG90cyBvZiBvcGVyYXRpb25zIGl0IHNob3VsZCBhbHJlYWR5IGJlIGVzdGFibGlzaGVkIHRoYXQg
dGhlIG9wZXJhbmQKLS8vIGNvbWJpbmF0aW9uIGlzIHZhbGlkLCBidXQgcmV0dXJucyBmYWxzZSBp
ZiBvcGVyYXRvciBjYW4ndCB3b3JrIG9uIG9wZXJhbmRzLgotLy8KLWJvb2wgVEludGVybUJpbmFy
eTo6cHJvbW90ZShUSW5mb1NpbmsgJmluZm9TaW5rKQorLy8gRXN0YWJsaXNoZXMgdGhlIHR5cGUg
b2YgdGhlIHJlc3VsdCBvZiB0aGUgYmluYXJ5IG9wZXJhdGlvbi4KK3ZvaWQgVEludGVybUJpbmFy
eTo6cHJvbW90ZSgpCiB7Ci0gICAgQVNTRVJUKG1MZWZ0LT5pc0FycmF5KCkgPT0gbVJpZ2h0LT5p
c0FycmF5KCkpOworICAgIEFTU0VSVCghaXNNdWx0aXBsaWNhdGlvbigpIHx8CisgICAgICAgICAg
IG1PcCA9PSBHZXRNdWxPcEJhc2VkT25PcGVyYW5kcyhtTGVmdC0+Z2V0VHlwZSgpLCBtUmlnaHQt
PmdldFR5cGUoKSkpOwogCi0gICAgLy8KKyAgICAvLyBDb21tYSBpcyBoYW5kbGVkIGFzIGEgc3Bl
Y2lhbCBjYXNlLgorICAgIGlmIChtT3AgPT0gRU9wQ29tbWEpCisgICAgeworICAgICAgICBzZXRU
eXBlKG1SaWdodC0+Z2V0VHlwZSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIC8v
IEJhc2UgYXNzdW1wdGlvbjogIGp1c3QgbWFrZSB0aGUgdHlwZSB0aGUgc2FtZSBhcyB0aGUgbGVm
dAogICAgIC8vIG9wZXJhbmQuICBUaGVuIG9ubHkgZGV2aWF0aW9ucyBmcm9tIHRoaXMgbmVlZCBi
ZSBjb2RlZC4KLSAgICAvLwogICAgIHNldFR5cGUobUxlZnQtPmdldFR5cGUoKSk7CiAKLSAgICAv
LyBUaGUgcmVzdWx0IGdldHMgcHJvbW90ZWQgdG8gdGhlIGhpZ2hlc3QgcHJlY2lzaW9uLgotICAg
IFRQcmVjaXNpb24gaGlnaGVyUHJlY2lzaW9uID0gR2V0SGlnaGVyUHJlY2lzaW9uKAotICAgICAg
ICBtTGVmdC0+Z2V0UHJlY2lzaW9uKCksIG1SaWdodC0+Z2V0UHJlY2lzaW9uKCkpOwotICAgIGdl
dFR5cGVQb2ludGVyKCktPnNldFByZWNpc2lvbihoaWdoZXJQcmVjaXNpb24pOwotCiAgICAgVFF1
YWxpZmllciByZXN1bHRRdWFsaWZpZXIgPSBFdnFDb25zdDsKICAgICAvLyBCaW5hcnkgb3BlcmF0
aW9ucyByZXN1bHRzIGluIHRlbXBvcmFyeSB2YXJpYWJsZXMgdW5sZXNzIGJvdGgKICAgICAvLyBv
cGVyYW5kcyBhcmUgY29uc3QuCkBAIC01NzEsNiArODYyLDU1IEBACiAgICAgICAgIGdldFR5cGVQ
b2ludGVyKCktPnNldFF1YWxpZmllcihFdnFUZW1wb3JhcnkpOwogICAgIH0KIAorICAgIC8vIEhh
bmRsZSBpbmRleGluZyBvcHMuCisgICAgc3dpdGNoIChtT3ApCisgICAgeworICAgICAgICBjYXNl
IEVPcEluZGV4RGlyZWN0OgorICAgICAgICBjYXNlIEVPcEluZGV4SW5kaXJlY3Q6CisgICAgICAg
ICAgICBpZiAobUxlZnQtPmlzQXJyYXkoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBtVHlwZS5jbGVhckFycmF5bmVzcygpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxz
ZSBpZiAobUxlZnQtPmlzTWF0cml4KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
c2V0VHlwZShUVHlwZShtTGVmdC0+Z2V0QmFzaWNUeXBlKCksIG1MZWZ0LT5nZXRQcmVjaXNpb24o
KSwgcmVzdWx0UXVhbGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcj4obUxlZnQtPmdldFJvd3MoKSkpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGVsc2UgaWYgKG1MZWZ0LT5pc1ZlY3RvcigpKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHNldFR5cGUoVFR5cGUobUxlZnQtPmdldEJhc2ljVHlwZSgpLCBtTGVm
dC0+Z2V0UHJlY2lzaW9uKCksIHJlc3VsdFF1YWxpZmllcikpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgRU9w
SW5kZXhEaXJlY3RTdHJ1Y3Q6CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IFRGaWVsZExp
c3QgJmZpZWxkcyA9IG1MZWZ0LT5nZXRUeXBlKCkuZ2V0U3RydWN0KCktPmZpZWxkcygpOworICAg
ICAgICAgICAgY29uc3QgaW50IGkgICAgICAgICAgICAgID0gbVJpZ2h0LT5nZXRBc0NvbnN0YW50
VW5pb24oKS0+Z2V0SUNvbnN0KDApOworICAgICAgICAgICAgc2V0VHlwZSgqZmllbGRzW2ldLT50
eXBlKCkpOworICAgICAgICAgICAgZ2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVyKHJlc3Vs
dFF1YWxpZmllcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBFT3BJbmRleERpcmVjdEludGVyZmFjZUJsb2NrOgorICAgICAgICB7CisgICAgICAgICAgICBj
b25zdCBURmllbGRMaXN0ICZmaWVsZHMgPSBtTGVmdC0+Z2V0VHlwZSgpLmdldEludGVyZmFjZUJs
b2NrKCktPmZpZWxkcygpOworICAgICAgICAgICAgY29uc3QgaW50IGkgICAgICAgICAgICAgID0g
bVJpZ2h0LT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0SUNvbnN0KDApOworICAgICAgICAgICAg
c2V0VHlwZSgqZmllbGRzW2ldLT50eXBlKCkpOworICAgICAgICAgICAgZ2V0VHlwZVBvaW50ZXIo
KS0+c2V0UXVhbGlmaWVyKHJlc3VsdFF1YWxpZmllcik7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIEFTU0VSVChtTGVmdC0+aXNBcnJheSgpID09IG1SaWdodC0+aXNBcnJheSgpKTsKKworICAg
IC8vIFRoZSByZXN1bHQgZ2V0cyBwcm9tb3RlZCB0byB0aGUgaGlnaGVzdCBwcmVjaXNpb24uCisg
ICAgVFByZWNpc2lvbiBoaWdoZXJQcmVjaXNpb24gPSBHZXRIaWdoZXJQcmVjaXNpb24obUxlZnQt
PmdldFByZWNpc2lvbigpLCBtUmlnaHQtPmdldFByZWNpc2lvbigpKTsKKyAgICBnZXRUeXBlUG9p
bnRlcigpLT5zZXRQcmVjaXNpb24oaGlnaGVyUHJlY2lzaW9uKTsKKwogICAgIGNvbnN0IGludCBu
b21pbmFsU2l6ZSA9CiAgICAgICAgIHN0ZDo6bWF4KG1MZWZ0LT5nZXROb21pbmFsU2l6ZSgpLCBt
UmlnaHQtPmdldE5vbWluYWxTaXplKCkpOwogCkBAIC01OTAsOCArOTMwLDggQEAKICAgICAgICAg
ICBjYXNlIEVPcEdyZWF0ZXJUaGFuOgogICAgICAgICAgIGNhc2UgRU9wTGVzc1RoYW5FcXVhbDoK
ICAgICAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuRXF1YWw6Ci0gICAgICAgICAgICBzZXRUeXBl
KFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCkpOwotICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgIHNldFR5cGUoVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCByZXN1bHRRdWFs
aWZpZXIpKTsKKyAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAvLwogICAgICAgICAg
IC8vIEFuZCBhbmQgT3Igb3BlcmF0ZSBvbiBjb25kaXRpb25hbHMKQEAgLTYwMCwyNDUgKzk0MCwy
MTEgQEAKICAgICAgICAgICBjYXNlIEVPcExvZ2ljYWxYb3I6CiAgICAgICAgICAgY2FzZSBFT3BM
b2dpY2FsT3I6CiAgICAgICAgICAgICBBU1NFUlQobUxlZnQtPmdldEJhc2ljVHlwZSgpID09IEVi
dEJvb2wgJiYgbVJpZ2h0LT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRCb29sKTsKLSAgICAgICAgICAg
IHNldFR5cGUoVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkKSk7CisgICAgICAgICAgICBzZXRU
eXBlKFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgcmVzdWx0UXVhbGlmaWVyKSk7CiAgICAg
ICAgICAgICBicmVhazsKIAogICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIC8vIElmIHdlIHJlYWNoIGhlcmUsIGF0IGxlYXN0IG9uZSBvZiB0aGUgb3BlcmFuZHMg
aXMgdmVjdG9yIG9yIG1hdHJpeC4KICAgICAvLyBUaGUgb3RoZXIgb3BlcmFuZCBjb3VsZCBiZSBh
IHNjYWxhciwgdmVjdG9yLCBvciBtYXRyaXguCi0gICAgLy8gQ2FuIHRoZXNlIHR3byBvcGVyYW5k
cyBiZSBjb21iaW5lZD8KLSAgICAvLwogICAgIFRCYXNpY1R5cGUgYmFzaWNUeXBlID0gbUxlZnQt
PmdldEJhc2ljVHlwZSgpOworCiAgICAgc3dpdGNoIChtT3ApCiAgICAgewotICAgICAgY2FzZSBF
T3BNdWw6Ci0gICAgICAgIGlmICghbUxlZnQtPmlzTWF0cml4KCkgJiYgbVJpZ2h0LT5pc01hdHJp
eCgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobUxlZnQtPmlzVmVjdG9yKCkpCisgICAg
ICAgIGNhc2UgRU9wTXVsOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wTWF0
cml4VGltZXNTY2FsYXI6CisgICAgICAgICAgICBpZiAobVJpZ2h0LT5pc01hdHJpeCgpKQogICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIG1PcCA9IEVPcFZlY3RvclRpbWVzTWF0cml4Owog
ICAgICAgICAgICAgICAgIHNldFR5cGUoVFR5cGUoYmFzaWNUeXBlLCBoaWdoZXJQcmVjaXNpb24s
IHJlc3VsdFF1YWxpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXI+KG1SaWdodC0+Z2V0Q29scygpKSwgMSkpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1PcCA9
IEVPcE1hdHJpeFRpbWVzU2NhbGFyOwotICAgICAgICAgICAgICAgIHNldFR5cGUoVFR5cGUoYmFz
aWNUeXBlLCBoaWdoZXJQcmVjaXNpb24sIHJlc3VsdFF1YWxpZmllciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KG1SaWdodC0+Z2V0Q29s
cygpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVk
IGNoYXI+KG1SaWdodC0+Z2V0Um93cygpKSkpOwogICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UgaWYgKG1MZWZ0LT5pc01hdHJpeCgpICYmICFtUmlnaHQtPmlzTWF0cml4KCkp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtUmlnaHQtPmlzVmVjdG9yKCkpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgbU9wID0gRU9wTWF0cml4VGltZXNWZWN0b3I7Ci0gICAg
ICAgICAgICAgICAgc2V0VHlwZShUVHlwZShiYXNpY1R5cGUsIGhpZ2hlclByZWNpc2lvbiwgcmVz
dWx0UXVhbGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcj4obUxlZnQtPmdldFJvd3MoKSksIDEpKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtT3AgPSBFT3BN
YXRyaXhUaW1lc1NjYWxhcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNl
IGlmIChtTGVmdC0+aXNNYXRyaXgoKSAmJiBtUmlnaHQtPmlzTWF0cml4KCkpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIG1PcCA9IEVPcE1hdHJpeFRpbWVzTWF0cml4OworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNWZWN0b3I6CiAgICAgICAgICAgICBzZXRU
eXBlKFRUeXBlKGJhc2ljVHlwZSwgaGlnaGVyUHJlY2lzaW9uLCByZXN1bHRRdWFsaWZpZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KG1MZWZ0
LT5nZXRSb3dzKCkpLCAxKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BN
YXRyaXhUaW1lc01hdHJpeDoKKyAgICAgICAgICAgIHNldFR5cGUoVFR5cGUoYmFzaWNUeXBlLCBo
aWdoZXJQcmVjaXNpb24sIHJlc3VsdFF1YWxpZmllciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obVJpZ2h0LT5nZXRDb2xzKCkpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihtTGVmdC0+Z2V0
Um93cygpKSkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKCFtTGVmdC0+aXNNYXRyaXgo
KSAmJiAhbVJpZ2h0LT5pc01hdHJpeCgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgRU9wVmVjdG9yVGltZXNTY2FsYXI6CisgICAgICAgICAgICBzZXRUeXBlKFRUeXBlKGJhc2lj
VHlwZSwgaGlnaGVyUHJlY2lzaW9uLCByZXN1bHRRdWFsaWZpZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KG5vbWluYWxTaXplKSwgMSkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNNYXRyaXg6Cisg
ICAgICAgICAgICBzZXRUeXBlKFRUeXBlKGJhc2ljVHlwZSwgaGlnaGVyUHJlY2lzaW9uLCByZXN1
bHRRdWFsaWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXI+KG1SaWdodC0+Z2V0Q29scygpKSwgMSkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgRU9wTXVsQXNzaWduOgorICAgICAgICBjYXNlIEVPcFZlY3RvclRpbWVzU2Nh
bGFyQXNzaWduOgorICAgICAgICBjYXNlIEVPcFZlY3RvclRpbWVzTWF0cml4QXNzaWduOgorICAg
ICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzU2NhbGFyQXNzaWduOgorICAgICAgICBjYXNlIEVPcE1h
dHJpeFRpbWVzTWF0cml4QXNzaWduOgorICAgICAgICAgICAgQVNTRVJUKG1PcCA9PSBHZXRNdWxB
c3NpZ25PcEJhc2VkT25PcGVyYW5kcyhtTGVmdC0+Z2V0VHlwZSgpLCBtUmlnaHQtPmdldFR5cGUo
KSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQXNzaWduOgorICAgICAg
ICBjYXNlIEVPcEluaXRpYWxpemU6CisgICAgICAgICAgICBBU1NFUlQoKG1MZWZ0LT5nZXROb21p
bmFsU2l6ZSgpID09IG1SaWdodC0+Z2V0Tm9taW5hbFNpemUoKSkgJiYKKyAgICAgICAgICAgICAg
ICAgICAobUxlZnQtPmdldFNlY29uZGFyeVNpemUoKSA9PSBtUmlnaHQtPmdldFNlY29uZGFyeVNp
emUoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQWRkOgorICAgICAg
ICBjYXNlIEVPcFN1YjoKKyAgICAgICAgY2FzZSBFT3BEaXY6CisgICAgICAgIGNhc2UgRU9wSU1v
ZDoKKyAgICAgICAgY2FzZSBFT3BCaXRTaGlmdExlZnQ6CisgICAgICAgIGNhc2UgRU9wQml0U2hp
ZnRSaWdodDoKKyAgICAgICAgY2FzZSBFT3BCaXR3aXNlQW5kOgorICAgICAgICBjYXNlIEVPcEJp
dHdpc2VYb3I6CisgICAgICAgIGNhc2UgRU9wQml0d2lzZU9yOgorICAgICAgICBjYXNlIEVPcEFk
ZEFzc2lnbjoKKyAgICAgICAgY2FzZSBFT3BTdWJBc3NpZ246CisgICAgICAgIGNhc2UgRU9wRGl2
QXNzaWduOgorICAgICAgICBjYXNlIEVPcElNb2RBc3NpZ246CisgICAgICAgIGNhc2UgRU9wQml0
U2hpZnRMZWZ0QXNzaWduOgorICAgICAgICBjYXNlIEVPcEJpdFNoaWZ0UmlnaHRBc3NpZ246Cisg
ICAgICAgIGNhc2UgRU9wQml0d2lzZUFuZEFzc2lnbjoKKyAgICAgICAgY2FzZSBFT3BCaXR3aXNl
WG9yQXNzaWduOgorICAgICAgICBjYXNlIEVPcEJpdHdpc2VPckFzc2lnbjoKICAgICAgICAgewot
ICAgICAgICAgICAgaWYgKG1MZWZ0LT5pc1ZlY3RvcigpICYmIG1SaWdodC0+aXNWZWN0b3IoKSkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBsZWF2ZSBhcyBjb21wb25lbnQgcHJv
ZHVjdAotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAobUxlZnQtPmlzVmVjdG9y
KCkgfHwgbVJpZ2h0LT5pc1ZlY3RvcigpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IG1PcCA9IEVPcFZlY3RvclRpbWVzU2NhbGFyOwotICAgICAgICAgICAgICAgIHNldFR5cGUoVFR5
cGUoYmFzaWNUeXBlLCBoaWdoZXJQcmVjaXNpb24sIHJlc3VsdFF1YWxpZmllciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KG5vbWluYWxT
aXplKSwgMSkpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgY29uc3QgaW50IHNlY29uZGFy
eVNpemUgPQorICAgICAgICAgICAgICAgIHN0ZDo6bWF4KG1MZWZ0LT5nZXRTZWNvbmRhcnlTaXpl
KCksIG1SaWdodC0+Z2V0U2Vjb25kYXJ5U2l6ZSgpKTsKKyAgICAgICAgICAgIHNldFR5cGUoVFR5
cGUoYmFzaWNUeXBlLCBoaWdoZXJQcmVjaXNpb24sIHJlc3VsdFF1YWxpZmllciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obm9taW5hbFNpemUp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihz
ZWNvbmRhcnlTaXplKSkpOworICAgICAgICAgICAgQVNTRVJUKCFtTGVmdC0+aXNBcnJheSgpICYm
ICFtUmlnaHQtPmlzQXJyYXkoKSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAg
ICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShF
UHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJNaXNzaW5nIGVsc2VzIik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIH0KKyAgICAgICAgY2FzZSBFT3BFcXVhbDoKKyAgICAgICAgY2FzZSBFT3BOb3RFcXVh
bDoKKyAgICAgICAgY2FzZSBFT3BMZXNzVGhhbjoKKyAgICAgICAgY2FzZSBFT3BHcmVhdGVyVGhh
bjoKKyAgICAgICAgY2FzZSBFT3BMZXNzVGhhbkVxdWFsOgorICAgICAgICBjYXNlIEVPcEdyZWF0
ZXJUaGFuRXF1YWw6CisgICAgICAgICAgICBBU1NFUlQoKG1MZWZ0LT5nZXROb21pbmFsU2l6ZSgp
ID09IG1SaWdodC0+Z2V0Tm9taW5hbFNpemUoKSkgJiYKKyAgICAgICAgICAgICAgICAgICAobUxl
ZnQtPmdldFNlY29uZGFyeVNpemUoKSA9PSBtUmlnaHQtPmdldFNlY29uZGFyeVNpemUoKSkpOwor
ICAgICAgICAgICAgc2V0VHlwZShUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIHJlc3VsdFF1
YWxpZmllcikpOworICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgaWYgKCFWYWxpZGF0ZU11
bHRpcGxpY2F0aW9uKG1PcCwgbUxlZnQtPmdldFR5cGUoKSwgbVJpZ2h0LT5nZXRUeXBlKCkpKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3Q6CisgICAgICAgIGNhc2UgRU9wSW5k
ZXhJbmRpcmVjdDoKKyAgICAgICAgY2FzZSBFT3BJbmRleERpcmVjdEludGVyZmFjZUJsb2NrOgor
ICAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0U3RydWN0OgorICAgICAgICAgICAgLy8gVGhlc2Ug
b3BzIHNob3VsZCBiZSBhbHJlYWR5IGZ1bGx5IGhhbmRsZWQuCisgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQogCi0gICAgICBj
YXNlIEVPcE11bEFzc2lnbjoKLSAgICAgICAgaWYgKCFtTGVmdC0+aXNNYXRyaXgoKSAmJiBtUmln
aHQtPmlzTWF0cml4KCkpCitjb25zdCBUQ29uc3RhbnRVbmlvbiAqVEludGVybUNvbnN0YW50VW5p
b246OmZvbGRJbmRleGluZyhpbnQgaW5kZXgpCit7CisgICAgaWYgKGlzQXJyYXkoKSkKKyAgICB7
CisgICAgICAgIEFTU0VSVChpbmRleCA8IHN0YXRpY19jYXN0PGludD4oZ2V0VHlwZSgpLmdldEFy
cmF5U2l6ZSgpKSk7CisgICAgICAgIFRUeXBlIGFycmF5RWxlbWVudFR5cGUgPSBnZXRUeXBlKCk7
CisgICAgICAgIGFycmF5RWxlbWVudFR5cGUuY2xlYXJBcnJheW5lc3MoKTsKKyAgICAgICAgc2l6
ZV90IGFycmF5RWxlbWVudFNpemUgPSBhcnJheUVsZW1lbnRUeXBlLmdldE9iamVjdFNpemUoKTsK
KyAgICAgICAgcmV0dXJuICZtVW5pb25BcnJheVBvaW50ZXJbYXJyYXlFbGVtZW50U2l6ZSAqIGlu
ZGV4XTsKKyAgICB9CisgICAgZWxzZSBpZiAoaXNNYXRyaXgoKSkKKyAgICB7CisgICAgICAgIEFT
U0VSVChpbmRleCA8IGdldFR5cGUoKS5nZXRDb2xzKCkpOworICAgICAgICBpbnQgc2l6ZSA9IGdl
dFR5cGUoKS5nZXRSb3dzKCk7CisgICAgICAgIHJldHVybiAmbVVuaW9uQXJyYXlQb2ludGVyW3Np
emUgKiBpbmRleF07CisgICAgfQorICAgIGVsc2UgaWYgKGlzVmVjdG9yKCkpCisgICAgeworICAg
ICAgICBBU1NFUlQoaW5kZXggPCBnZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSk7CisgICAgICAg
IHJldHVybiAmbVVuaW9uQXJyYXlQb2ludGVyW2luZGV4XTsKKyAgICB9CisgICAgZWxzZQorICAg
IHsKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorfQorCitUSW50ZXJtVHlwZWQgKlRJbnRlcm1Td2l6emxlOjpmb2xkKCkKK3sKKyAgICBUSW50
ZXJtQ29uc3RhbnRVbmlvbiAqb3BlcmFuZENvbnN0YW50ID0gbU9wZXJhbmQtPmdldEFzQ29uc3Rh
bnRVbmlvbigpOworICAgIGlmIChvcGVyYW5kQ29uc3RhbnQgPT0gbnVsbHB0cikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIFRDb25zdGFudFVuaW9uICpjb25z
dEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21Td2l6emxlT2Zmc2V0cy5zaXplKCldOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVN3aXp6bGVPZmZzZXRzLnNpemUoKTsgKytpKQorICAg
IHsKKyAgICAgICAgY29uc3RBcnJheVtpXSA9ICpvcGVyYW5kQ29uc3RhbnQtPmZvbGRJbmRleGlu
ZyhtU3dpenpsZU9mZnNldHMuYXQoaSkpOworICAgIH0KKyAgICByZXR1cm4gQ3JlYXRlRm9sZGVk
Tm9kZShjb25zdEFycmF5LCB0aGlzLCBtVHlwZS5nZXRRdWFsaWZpZXIoKSk7Cit9CisKK1RJbnRl
cm1UeXBlZCAqVEludGVybUJpbmFyeTo6Zm9sZChURGlhZ25vc3RpY3MgKmRpYWdub3N0aWNzKQor
eworICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpsZWZ0Q29uc3RhbnQgID0gbUxlZnQtPmdldEFz
Q29uc3RhbnRVbmlvbigpOworICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpyaWdodENvbnN0YW50
ID0gbVJpZ2h0LT5nZXRBc0NvbnN0YW50VW5pb24oKTsKKyAgICBzd2l0Y2ggKG1PcCkKKyAgICB7
CisgICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3Q6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlm
IChtTGVmdC0+aXNWZWN0b3IoKSkKKyAgICAgICAgICAgIGlmIChsZWZ0Q29uc3RhbnQgPT0gbnVs
bHB0ciB8fCByaWdodENvbnN0YW50ID09IG51bGxwdHIpCiAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgbU9wID0gRU9wVmVjdG9yVGltZXNNYXRyaXhBc3NpZ247CisgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaW50IGluZGV4ID0gcmlnaHRDb25zdGFudC0+Z2V0SUNvbnN0KDApOworCisg
ICAgICAgICAgICBjb25zdCBUQ29uc3RhbnRVbmlvbiAqY29uc3RBcnJheSA9IGxlZnRDb25zdGFu
dC0+Zm9sZEluZGV4aW5nKGluZGV4KTsKKyAgICAgICAgICAgIHJldHVybiBDcmVhdGVGb2xkZWRO
b2RlKGNvbnN0QXJyYXksIHRoaXMsIG1UeXBlLmdldFF1YWxpZmllcigpKTsKICAgICAgICAgfQot
ICAgICAgICBlbHNlIGlmIChtTGVmdC0+aXNNYXRyaXgoKSAmJiAhbVJpZ2h0LT5pc01hdHJpeCgp
KQorICAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0U3RydWN0OgogICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAobVJpZ2h0LT5pc1ZlY3RvcigpKQorICAgICAgICAgICAgaWYgKGxlZnRDb25zdGFu
dCA9PSBudWxscHRyIHx8IHJpZ2h0Q29uc3RhbnQgPT0gbnVsbHB0cikKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25z
dCBURmllbGRMaXN0ICZmaWVsZHMgPSBtTGVmdC0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLT5maWVs
ZHMoKTsKKyAgICAgICAgICAgIHNpemVfdCBpbmRleCAgICAgICAgICAgICA9IHN0YXRpY19jYXN0
PHNpemVfdD4ocmlnaHRDb25zdGFudC0+Z2V0SUNvbnN0KDApKTsKKworICAgICAgICAgICAgc2l6
ZV90IHByZXZpb3VzRmllbGRzU2l6ZSA9IDA7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGluZGV4OyArK2kpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbU9wID0g
RU9wTWF0cml4VGltZXNTY2FsYXJBc3NpZ247CisgICAgICAgICAgICAgICAgcHJldmlvdXNGaWVs
ZHNTaXplICs9IGZpZWxkc1tpXS0+dHlwZSgpLT5nZXRPYmplY3RTaXplKCk7CiAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGNvbnN0IFRDb25zdGFudFVuaW9uICpjb25zdEFycmF5ID0gbGVm
dENvbnN0YW50LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOworICAgICAgICAgICAgcmV0dXJuIENy
ZWF0ZUZvbGRlZE5vZGUoY29uc3RBcnJheSArIHByZXZpb3VzRmllbGRzU2l6ZSwgdGhpcywgbVR5
cGUuZ2V0UXVhbGlmaWVyKCkpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG1MZWZ0LT5p
c01hdHJpeCgpICYmIG1SaWdodC0+aXNNYXRyaXgoKSkKKyAgICAgICAgY2FzZSBFT3BJbmRleElu
ZGlyZWN0OgorICAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0SW50ZXJmYWNlQmxvY2s6CisgICAg
ICAgICAgICAvLyBDYW4gbmV2ZXIgYmUgY29uc3RhbnQgZm9sZGVkLgorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIG1P
cCA9IEVPcE1hdHJpeFRpbWVzTWF0cml4QXNzaWduOwotICAgICAgICAgICAgc2V0VHlwZShUVHlw
ZShiYXNpY1R5cGUsIGhpZ2hlclByZWNpc2lvbiwgcmVzdWx0UXVhbGlmaWVyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihtUmlnaHQtPmdldENv
bHMoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXI+KG1MZWZ0LT5nZXRSb3dzKCkpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoIW1M
ZWZ0LT5pc01hdHJpeCgpICYmICFtUmlnaHQtPmlzTWF0cml4KCkpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmIChtTGVmdC0+aXNWZWN0b3IoKSAmJiBtUmlnaHQtPmlzVmVjdG9yKCkpCisgICAg
ICAgICAgICBpZiAobGVmdENvbnN0YW50ID09IG51bGxwdHIgfHwgcmlnaHRDb25zdGFudCA9PSBu
dWxscHRyKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIGxlYXZlIGFzIGNvbXBv
bmVudCBwcm9kdWN0CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChtTGVmdC0+aXNWZWN0b3IoKSB8fCBtUmlnaHQtPmlz
VmVjdG9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKCFtTGVmdC0+aXNW
ZWN0b3IoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
ICAgIG1PcCA9IEVPcFZlY3RvclRpbWVzU2NhbGFyQXNzaWduOwotICAgICAgICAgICAgICAgIHNl
dFR5cGUoVFR5cGUoYmFzaWNUeXBlLCBoaWdoZXJQcmVjaXNpb24sIHJlc3VsdFF1YWxpZmllciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KG1MZWZ0LT5nZXROb21pbmFsU2l6ZSgpKSwgMSkpOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNz
YWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIk1pc3NpbmcgZWxzZXMiKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgfQorICAgICAgICAgICAgVENvbnN0YW50VW5pb24gKmNvbnN0QXJyYXkgPQor
ICAgICAgICAgICAgICAgIGxlZnRDb25zdGFudC0+Zm9sZEJpbmFyeShtT3AsIHJpZ2h0Q29uc3Rh
bnQsIGRpYWdub3N0aWNzLCBtTGVmdC0+Z2V0TGluZSgpKTsKIAotICAgICAgICBpZiAoIVZhbGlk
YXRlTXVsdGlwbGljYXRpb24obU9wLCBtTGVmdC0+Z2V0VHlwZSgpLCBtUmlnaHQtPmdldFR5cGUo
KSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIC8v
IE5vZGVzIG1heSBiZSBjb25zdGFudCBmb2xkZWQgd2l0aG91dCBiZWluZyBxdWFsaWZpZWQgYXMg
Y29uc3RhbnQuCisgICAgICAgICAgICByZXR1cm4gQ3JlYXRlRm9sZGVkTm9kZShjb25zdEFycmF5
LCB0aGlzLCBtVHlwZS5nZXRRdWFsaWZpZXIoKSk7CiAgICAgICAgIH0KLSAgICAgICAgYnJlYWs7
Ci0KLSAgICAgIGNhc2UgRU9wQXNzaWduOgotICAgICAgY2FzZSBFT3BJbml0aWFsaXplOgotICAg
ICAgICAvLyBObyBtb3JlIGFkZGl0aW9uYWwgY2hlY2tzIGFyZSBuZWVkZWQuCi0gICAgICAgIEFT
U0VSVCgobUxlZnQtPmdldE5vbWluYWxTaXplKCkgPT0gbVJpZ2h0LT5nZXROb21pbmFsU2l6ZSgp
KSAmJgotICAgICAgICAgICAgKG1MZWZ0LT5nZXRTZWNvbmRhcnlTaXplKCkgPT0gbVJpZ2h0LT5n
ZXRTZWNvbmRhcnlTaXplKCkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEFkZDoK
LSAgICAgIGNhc2UgRU9wU3ViOgotICAgICAgY2FzZSBFT3BEaXY6Ci0gICAgICBjYXNlIEVPcElN
b2Q6Ci0gICAgICBjYXNlIEVPcEJpdFNoaWZ0TGVmdDoKLSAgICAgIGNhc2UgRU9wQml0U2hpZnRS
aWdodDoKLSAgICAgIGNhc2UgRU9wQml0d2lzZUFuZDoKLSAgICAgIGNhc2UgRU9wQml0d2lzZVhv
cjoKLSAgICAgIGNhc2UgRU9wQml0d2lzZU9yOgotICAgICAgY2FzZSBFT3BBZGRBc3NpZ246Ci0g
ICAgICBjYXNlIEVPcFN1YkFzc2lnbjoKLSAgICAgIGNhc2UgRU9wRGl2QXNzaWduOgotICAgICAg
Y2FzZSBFT3BJTW9kQXNzaWduOgotICAgICAgY2FzZSBFT3BCaXRTaGlmdExlZnRBc3NpZ246Ci0g
ICAgICBjYXNlIEVPcEJpdFNoaWZ0UmlnaHRBc3NpZ246Ci0gICAgICBjYXNlIEVPcEJpdHdpc2VB
bmRBc3NpZ246Ci0gICAgICBjYXNlIEVPcEJpdHdpc2VYb3JBc3NpZ246Ci0gICAgICBjYXNlIEVP
cEJpdHdpc2VPckFzc2lnbjoKLSAgICAgICAgaWYgKChtTGVmdC0+aXNNYXRyaXgoKSAmJiBtUmln
aHQtPmlzVmVjdG9yKCkpIHx8Ci0gICAgICAgICAgICAobUxlZnQtPmlzVmVjdG9yKCkgJiYgbVJp
Z2h0LT5pc01hdHJpeCgpKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gQXJlIHRoZSBzaXplcyBjb21wYXRpYmxlPwotICAgICAg
ICBpZiAobUxlZnQtPmdldE5vbWluYWxTaXplKCkgIT0gbVJpZ2h0LT5nZXROb21pbmFsU2l6ZSgp
IHx8Ci0gICAgICAgICAgICBtTGVmdC0+Z2V0U2Vjb25kYXJ5U2l6ZSgpICE9IG1SaWdodC0+Z2V0
U2Vjb25kYXJ5U2l6ZSgpKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBJZiB0aGUgbm9taW5h
bCBzaXplcyBvZiBvcGVyYW5kcyBkbyBub3QgbWF0Y2g6Ci0gICAgICAgICAgICAvLyBPbmUgb2Yg
dGhlbSBtdXN0IGJlIGEgc2NhbGFyLgotICAgICAgICAgICAgaWYgKCFtTGVmdC0+aXNTY2FsYXIo
KSAmJiAhbVJpZ2h0LT5pc1NjYWxhcigpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgICAgICAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgY29tcG91bmQgYXNzaWdubWVudCBvdGhl
ciB0aGFuIG11bHRpcGx5LWFzc2lnbiwKLSAgICAgICAgICAgIC8vIHRoZSByaWdodCBzaWRlIG5l
ZWRzIHRvIGJlIGEgc2NhbGFyLiBPdGhlcndpc2UgYSB2ZWN0b3IvbWF0cml4Ci0gICAgICAgICAg
ICAvLyB3b3VsZCBiZSBhc3NpZ25lZCB0byBhIHNjYWxhci4gQSBzY2FsYXIgY2FuJ3QgYmUgc2hp
ZnRlZCBieSBhCi0gICAgICAgICAgICAvLyB2ZWN0b3IgZWl0aGVyLgotICAgICAgICAgICAgaWYg
KCFtUmlnaHQtPmlzU2NhbGFyKCkgJiYKLSAgICAgICAgICAgICAgICAoaXNBc3NpZ25tZW50KCkg
fHwKLSAgICAgICAgICAgICAgICBtT3AgPT0gRU9wQml0U2hpZnRMZWZ0IHx8Ci0gICAgICAgICAg
ICAgICAgbU9wID09IEVPcEJpdFNoaWZ0UmlnaHQpKQotICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IGludCBzZWNv
bmRhcnlTaXplID0gc3RkOjptYXgoCi0gICAgICAgICAgICAgICAgbUxlZnQtPmdldFNlY29uZGFy
eVNpemUoKSwgbVJpZ2h0LT5nZXRTZWNvbmRhcnlTaXplKCkpOwotICAgICAgICAgICAgc2V0VHlw
ZShUVHlwZShiYXNpY1R5cGUsIGhpZ2hlclByZWNpc2lvbiwgcmVzdWx0UXVhbGlmaWVyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihub21pbmFs
U2l6ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXI+KHNlY29uZGFyeVNpemUpKSk7Ci0gICAgICAgICAgICBpZiAobUxlZnQtPmlzQXJyYXkoKSkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobUxlZnQtPmdldEFycmF5U2l6
ZSgpID09IG1SaWdodC0+Z2V0QXJyYXlTaXplKCkpOwotICAgICAgICAgICAgICAgIG1UeXBlLnNl
dEFycmF5U2l6ZShtTGVmdC0+Z2V0QXJyYXlTaXplKCkpOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIGJyZWFrOwotCi0gICAgICBjYXNlIEVPcEVxdWFsOgotICAgICAgY2FzZSBF
T3BOb3RFcXVhbDoKLSAgICAgIGNhc2UgRU9wTGVzc1RoYW46Ci0gICAgICBjYXNlIEVPcEdyZWF0
ZXJUaGFuOgotICAgICAgY2FzZSBFT3BMZXNzVGhhbkVxdWFsOgotICAgICAgY2FzZSBFT3BHcmVh
dGVyVGhhbkVxdWFsOgotICAgICAgICBBU1NFUlQoKG1MZWZ0LT5nZXROb21pbmFsU2l6ZSgpID09
IG1SaWdodC0+Z2V0Tm9taW5hbFNpemUoKSkgJiYKLSAgICAgICAgICAgIChtTGVmdC0+Z2V0U2Vj
b25kYXJ5U2l6ZSgpID09IG1SaWdodC0+Z2V0U2Vjb25kYXJ5U2l6ZSgpKSk7Ci0gICAgICAgIHNl
dFR5cGUoVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkKSk7Ci0gICAgICAgIGJyZWFrOwotCi0g
ICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIHJldHVybiB0
cnVlOwogfQogCi1USW50ZXJtVHlwZWQgKlRJbnRlcm1CaW5hcnk6OmZvbGQoVEluZm9TaW5rICZp
bmZvU2luaykKK1RJbnRlcm1UeXBlZCAqVEludGVybVVuYXJ5Ojpmb2xkKFREaWFnbm9zdGljcyAq
ZGlhZ25vc3RpY3MpCiB7Ci0gICAgVEludGVybUNvbnN0YW50VW5pb24gKmxlZnRDb25zdGFudCA9
IG1MZWZ0LT5nZXRBc0NvbnN0YW50VW5pb24oKTsKLSAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAq
cmlnaHRDb25zdGFudCA9IG1SaWdodC0+Z2V0QXNDb25zdGFudFVuaW9uKCk7Ci0gICAgaWYgKGxl
ZnRDb25zdGFudCA9PSBudWxscHRyIHx8IHJpZ2h0Q29uc3RhbnQgPT0gbnVsbHB0cikKLSAgICB7
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLSAgICBUQ29uc3RhbnRVbmlvbiAqY29u
c3RBcnJheSA9IGxlZnRDb25zdGFudC0+Zm9sZEJpbmFyeShtT3AsIHJpZ2h0Q29uc3RhbnQsIGlu
Zm9TaW5rKTsKLQotICAgIC8vIE5vZGVzIG1heSBiZSBjb25zdGFudCBmb2xkZWQgd2l0aG91dCBi
ZWluZyBxdWFsaWZpZWQgYXMgY29uc3RhbnQuCi0gICAgVFF1YWxpZmllciByZXN1bHRRdWFsaWZp
ZXIgPSBFdnFDb25zdDsKLSAgICBpZiAobUxlZnQtPmdldFF1YWxpZmllcigpICE9IEV2cUNvbnN0
IHx8IG1SaWdodC0+Z2V0UXVhbGlmaWVyKCkgIT0gRXZxQ29uc3QpCi0gICAgewotICAgICAgICBy
ZXN1bHRRdWFsaWZpZXIgPSBFdnFUZW1wb3Jhcnk7Ci0gICAgfQotICAgIHJldHVybiBDcmVhdGVG
b2xkZWROb2RlKGNvbnN0QXJyYXksIHRoaXMsIHJlc3VsdFF1YWxpZmllcik7Ci19Ci0KLVRJbnRl
cm1UeXBlZCAqVEludGVybVVuYXJ5Ojpmb2xkKFRJbmZvU2luayAmaW5mb1NpbmspCi17CiAgICAg
VEludGVybUNvbnN0YW50VW5pb24gKm9wZXJhbmRDb25zdGFudCA9IG1PcGVyYW5kLT5nZXRBc0Nv
bnN0YW50VW5pb24oKTsKICAgICBpZiAob3BlcmFuZENvbnN0YW50ID09IG51bGxwdHIpCiAgICAg
ewpAQCAtODYwLDE5ICsxMTY2LDE4IEBACiAgICAgICBjYXNlIEVPcFVucGFja1Vub3JtMngxNjoK
ICAgICAgIGNhc2UgRU9wUGFja0hhbGYyeDE2OgogICAgICAgY2FzZSBFT3BVbnBhY2tIYWxmMngx
NjoKLSAgICAgICAgY29uc3RBcnJheSA9IG9wZXJhbmRDb25zdGFudC0+Zm9sZFVuYXJ5V2l0aERp
ZmZlcmVudFJldHVyblR5cGUobU9wLCBpbmZvU2luayk7Ci0gICAgICAgIGJyZWFrOworICAgICAg
ICAgIGNvbnN0QXJyYXkgPSBvcGVyYW5kQ29uc3RhbnQtPmZvbGRVbmFyeU5vbkNvbXBvbmVudFdp
c2UobU9wKTsKKyAgICAgICAgICBicmVhazsKICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIGNvbnN0
QXJyYXkgPSBvcGVyYW5kQ29uc3RhbnQtPmZvbGRVbmFyeVdpdGhTYW1lUmV0dXJuVHlwZShtT3As
IGluZm9TaW5rKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgICAgY29uc3RBcnJheSA9IG9wZXJh
bmRDb25zdGFudC0+Zm9sZFVuYXJ5Q29tcG9uZW50V2lzZShtT3AsIGRpYWdub3N0aWNzKTsKKyAg
ICAgICAgICBicmVhazsKICAgICB9CiAKICAgICAvLyBOb2RlcyBtYXkgYmUgY29uc3RhbnQgZm9s
ZGVkIHdpdGhvdXQgYmVpbmcgcXVhbGlmaWVkIGFzIGNvbnN0YW50LgotICAgIFRRdWFsaWZpZXIg
cmVzdWx0UXVhbGlmaWVyID0gbU9wZXJhbmQtPmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0ID8g
RXZxQ29uc3QgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgcmV0dXJuIENyZWF0ZUZvbGRlZE5vZGUoY29u
c3RBcnJheSwgdGhpcywgcmVzdWx0UXVhbGlmaWVyKTsKKyAgICByZXR1cm4gQ3JlYXRlRm9sZGVk
Tm9kZShjb25zdEFycmF5LCB0aGlzLCBtVHlwZS5nZXRRdWFsaWZpZXIoKSk7CiB9CiAKLVRJbnRl
cm1UeXBlZCAqVEludGVybUFnZ3JlZ2F0ZTo6Zm9sZChUSW5mb1NpbmsgJmluZm9TaW5rKQorVElu
dGVybVR5cGVkICpUSW50ZXJtQWdncmVnYXRlOjpmb2xkKFREaWFnbm9zdGljcyAqZGlhZ25vc3Rp
Y3MpCiB7CiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgYWxsIHBhcmFtcyBhcmUgY29uc3RhbnQgYmVm
b3JlIGFjdHVhbCBjb25zdGFudCBmb2xkaW5nLgogICAgIGZvciAoYXV0byAqcGFyYW0gOiAqZ2V0
U2VxdWVuY2UoKSkKQEAgLTg4NCw5ICsxMTg5LDkgQEAKICAgICB9CiAgICAgVENvbnN0YW50VW5p
b24gKmNvbnN0QXJyYXkgPSBudWxscHRyOwogICAgIGlmIChpc0NvbnN0cnVjdG9yKCkpCi0gICAg
ICAgIGNvbnN0QXJyYXkgPSBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Rm9sZEFnZ3JlZ2F0ZUNvbnN0
cnVjdG9yKHRoaXMsIGluZm9TaW5rKTsKKyAgICAgICAgY29uc3RBcnJheSA9IFRJbnRlcm1Db25z
dGFudFVuaW9uOjpGb2xkQWdncmVnYXRlQ29uc3RydWN0b3IodGhpcyk7CiAgICAgZWxzZQotICAg
ICAgICBjb25zdEFycmF5ID0gVEludGVybUNvbnN0YW50VW5pb246OkZvbGRBZ2dyZWdhdGVCdWls
dEluKHRoaXMsIGluZm9TaW5rKTsKKyAgICAgICAgY29uc3RBcnJheSA9IFRJbnRlcm1Db25zdGFu
dFVuaW9uOjpGb2xkQWdncmVnYXRlQnVpbHRJbih0aGlzLCBkaWFnbm9zdGljcyk7CiAKICAgICAv
LyBOb2RlcyBtYXkgYmUgY29uc3RhbnQgZm9sZGVkIHdpdGhvdXQgYmVpbmcgcXVhbGlmaWVkIGFz
IGNvbnN0YW50LgogICAgIFRRdWFsaWZpZXIgcmVzdWx0UXVhbGlmaWVyID0gYXJlQ2hpbGRyZW5D
b25zdFF1YWxpZmllZCgpID8gRXZxQ29uc3QgOiBFdnFUZW1wb3Jhcnk7CkBAIC04OTksMTUgKzEy
MDQsMTUgQEAKIC8vCiAvLyBSZXR1cm5zIHRoZSBjb25zdGFudCB2YWx1ZSB0byBrZWVwIHVzaW5n
IG9yIG51bGxwdHIuCiAvLwotVENvbnN0YW50VW5pb24gKlRJbnRlcm1Db25zdGFudFVuaW9uOjpm
b2xkQmluYXJ5KFRPcGVyYXRvciBvcCwgVEludGVybUNvbnN0YW50VW5pb24gKnJpZ2h0Tm9kZSwg
VEluZm9TaW5rICZpbmZvU2luaykKK1RDb25zdGFudFVuaW9uICpUSW50ZXJtQ29uc3RhbnRVbmlv
bjo6Zm9sZEJpbmFyeShUT3BlcmF0b3Igb3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVEludGVybUNvbnN0YW50VW5pb24gKnJpZ2h0Tm9kZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURGlhZ25vc3Rp
Y3MgKmRpYWdub3N0aWNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpCiB7CiAgICAgY29uc3QgVENvbnN0YW50
VW5pb24gKmxlZnRBcnJheSAgPSBnZXRVbmlvbkFycmF5UG9pbnRlcigpOwogICAgIGNvbnN0IFRD
b25zdGFudFVuaW9uICpyaWdodEFycmF5ID0gcmlnaHROb2RlLT5nZXRVbmlvbkFycmF5UG9pbnRl
cigpOwogCi0gICAgaWYgKCFsZWZ0QXJyYXkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IGlmICghcmlnaHRBcnJheSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQVNTRVJUKGxl
ZnRBcnJheSAmJiByaWdodEFycmF5KTsKIAogICAgIHNpemVfdCBvYmplY3RTaXplID0gZ2V0VHlw
ZSgpLmdldE9iamVjdFNpemUoKTsKIApAQCAtOTMwLDEyICsxMjM1LDEyIEBACiAgICAgICBjYXNl
IEVPcEFkZDoKICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bb2JqZWN0
U2l6ZV07CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQot
ICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0gPSBsZWZ0QXJyYXlbaV0gKyByaWdodEFycmF5W2ld
OworICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0gPSBUQ29uc3RhbnRVbmlvbjo6YWRkKGxlZnRB
cnJheVtpXSwgcmlnaHRBcnJheVtpXSwgZGlhZ25vc3RpY3MsIGxpbmUpOwogICAgICAgICBicmVh
azsKICAgICAgIGNhc2UgRU9wU3ViOgogICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3Rh
bnRVbmlvbltvYmplY3RTaXplXTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmpl
Y3RTaXplOyBpKyspCi0gICAgICAgICAgICByZXN1bHRBcnJheVtpXSA9IGxlZnRBcnJheVtpXSAt
IHJpZ2h0QXJyYXlbaV07CisgICAgICAgICAgICByZXN1bHRBcnJheVtpXSA9IFRDb25zdGFudFVu
aW9uOjpzdWIobGVmdEFycmF5W2ldLCByaWdodEFycmF5W2ldLCBkaWFnbm9zdGljcywgbGluZSk7
CiAgICAgICAgIGJyZWFrOwogCiAgICAgICBjYXNlIEVPcE11bDoKQEAgLTk0MywxOSArMTI0OCwx
MyBAQAogICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1NjYWxhcjoKICAgICAgICAgcmVzdWx0QXJy
YXkgPSBuZXcgVENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CiAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQotICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0g
PSBsZWZ0QXJyYXlbaV0gKiByaWdodEFycmF5W2ldOworICAgICAgICAgICAgcmVzdWx0QXJyYXlb
aV0gPSBUQ29uc3RhbnRVbmlvbjo6bXVsKGxlZnRBcnJheVtpXSwgcmlnaHRBcnJheVtpXSwgZGlh
Z25vc3RpY3MsIGxpbmUpOwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBFT3BNYXRyaXhU
aW1lc01hdHJpeDoKICAgICAgICAgewotICAgICAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNp
Y1R5cGUoKSAhPSBFYnRGbG9hdCB8fAotICAgICAgICAgICAgICAgIHJpZ2h0Tm9kZS0+Z2V0QmFz
aWNUeXBlKCkgIT0gRWJ0RmxvYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW5m
b1NpbmsuaW5mby5tZXNzYWdlKAotICAgICAgICAgICAgICAgICAgICBFUHJlZml4SW50ZXJuYWxF
cnJvciwgZ2V0TGluZSgpLAotICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQgRm9sZGluZyBj
YW5ub3QgYmUgZG9uZSBmb3IgbWF0cml4IG11bHRpcGx5Iik7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBUT0RPKGptYWRsbCk6
IFRoaXMgY29kZSBzaG91bGQgY2hlY2sgZm9yIG92ZXJmbG93cy4KKyAgICAgICAgICAgIEFTU0VS
VChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQgJiYgcmlnaHROb2RlLT5nZXRC
YXNpY1R5cGUoKSA9PSBFYnRGbG9hdCk7CiAKICAgICAgICAgICAgIGNvbnN0IGludCBsZWZ0Q29s
cyA9IGdldENvbHMoKTsKICAgICAgICAgICAgIGNvbnN0IGludCBsZWZ0Um93cyA9IGdldFJvd3Mo
KTsKQEAgLTk5Myw4ICsxMjkyLDggQEAKICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6
CiAgICAgICAgICAgICAgICAgICAgIGlmIChyaWdodEFycmF5W2ldID09IDAuMGYpCiAgICAgICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVz
c2FnZShFUHJlZml4V2FybmluZywgZ2V0TGluZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJEaXZpZGUgYnkgemVybyBlcnJvciBkdXJpbmcgY29uc3Rh
bnQgZm9sZGluZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgZGlhZ25vc3RpY3MtPndhcm5p
bmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TGluZSgpLCAiRGl2aWRlIGJ5IHpl
cm8gZXJyb3IgZHVyaW5nIGNvbnN0YW50IGZvbGRpbmciLCAiLyIsICIiKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25zdChsZWZ0QXJyYXlbaV0uZ2V0RkNv
bnN0KCkgPCAwID8gLUZMVF9NQVggOiBGTFRfTUFYKTsKICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICBlbHNlCkBAIC0xMDA3LDIwICsxMzA2LDQ4IEBACiAgICAgICAg
ICAgICAgICAgICBjYXNlIEVidEludDoKICAgICAgICAgICAgICAgICAgICAgaWYgKHJpZ2h0QXJy
YXlbaV0gPT0gMCkKICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAg
ICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhXYXJuaW5nLCBnZXRMaW5lKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRpdmlkZSBieSB6ZXJv
IGVycm9yIGR1cmluZyBjb25zdGFudCBmb2xkaW5nIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICBkaWFnbm9zdGljcy0+d2FybmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRM
aW5lKCksICJEaXZpZGUgYnkgemVybyBlcnJvciBkdXJpbmcgY29uc3RhbnQgZm9sZGluZyIsICIv
IiwgIiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0SUNvbnN0
KElOVF9NQVgpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxo
cyAgICAgPSBsZWZ0QXJyYXlbaV0uZ2V0SUNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgZGl2aXNvciA9IHJpZ2h0QXJyYXlbaV0uZ2V0SUNvbnN0KCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAob3AgPT0gRU9wRGl2KQogICAgICAgICAgICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldElDb25zdChsZWZ0
QXJyYXlbaV0uZ2V0SUNvbnN0KCkgLyByaWdodEFycmF5W2ldLmdldElDb25zdCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3IgdGhlIHNwZWNpYWwgY2FzZSB3aGVy
ZSB0aGUgbWluaW11bSByZXByZXNlbnRhYmxlIG51bWJlciBpcworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGRpdmlkZWQgYnkgLTEuIElmIGxlZnQgYWxvbmUgdGhpcyBsZWFkcyB0byBp
bnRlZ2VyIG92ZXJmbG93IGluIEMrKy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBF
U1NMIDMuMDAuNiBzZWN0aW9uIDQuMS4zIEludGVnZXJzOgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vICJIb3dldmVyLCBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlIG1pbmltdW0gcmVwcmVz
ZW50YWJsZSB2YWx1ZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpdmlkZWQg
YnkgLTEsIGl0IGlzIGFsbG93ZWQgdG8gcmV0dXJuIGVpdGhlciB0aGUgbWluaW11bQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHJlcHJlc2VudGFibGUgdmFsdWUgb3IgdGhlIG1heGlt
dW0gcmVwcmVzZW50YWJsZSB2YWx1ZS4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGxocyA9PSAtMHg3ZmZmZmZmZiAtIDEgJiYgZGl2aXNvciA9PSAtMSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFy
cmF5W2ldLnNldElDb25zdCgweDdmZmZmZmZmKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlb
aV0uc2V0SUNvbnN0KGxocyAvIGRpdmlzb3IpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQob3AgPT0gRU9wSU1vZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0QXJyYXlbaV0uc2V0SUNvbnN0KGxlZnRBcnJheVtpXS5nZXRJQ29uc3QoKSAlIHJpZ2h0QXJy
YXlbaV0uZ2V0SUNvbnN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaHMg
PCAwIHx8IGRpdmlzb3IgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRVNTTCAzLjAwLjYgc2VjdGlvbiA1Ljk6IFJl
c3VsdHMgb2YgbW9kdWx1cyBhcmUgdW5kZWZpbmVkIHdoZW4KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gZWl0aGVyIG9uZSBvZiB0aGUgb3BlcmFuZHMgaXMgbmVnYXRpdmUuCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpYWdub3N0aWNzLT53YXJuaW5nKGdldExp
bmUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIk5lZ2F0aXZlIG1vZHVsdXMgb3BlcmF0b3Igb3BlcmFuZCAiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmNvdW50ZXJlZCBkdXJpbmcg
Y29uc3RhbnQgZm9sZGluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIlIiwgIiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHRBcnJheVtpXS5zZXRJQ29uc3QoMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5
W2ldLnNldElDb25zdChsaHMgJSBkaXZpc29yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDI4LDggKzEzNTUsOCBAQAogICAgICAgICAg
ICAgICAgICAgY2FzZSBFYnRVSW50OgogICAgICAgICAgICAgICAgICAgICBpZiAocmlnaHRBcnJh
eVtpXSA9PSAwKQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeFdhcm5pbmcsIGdldExpbmUoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGl2aWRlIGJ5IHplcm8g
ZXJyb3IgZHVyaW5nIGNvbnN0YW50IGZvbGRpbmciKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRpYWdub3N0aWNzLT53YXJuaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExp
bmUoKSwgIkRpdmlkZSBieSB6ZXJvIGVycm9yIGR1cmluZyBjb25zdGFudCBmb2xkaW5nIiwgIi8i
LCAiIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRVQ29uc3Qo
VUlOVF9NQVgpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGVs
c2UKQEAgLTEwNDcsOSArMTM3NCw4IEBACiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5p
bmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25zdGFudCBmb2xkaW5nIGNhbm5vdCBi
ZSBkb25lIGZvciBcIi9cIiIpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpAQCAtMTA1NywxMiArMTM4Myw4IEBACiAKICAgICAgIGNhc2UgRU9wTWF0cml4VGlt
ZXNWZWN0b3I6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChyaWdodE5vZGUtPmdldEJhc2lj
VHlwZSgpICE9IEVidEZsb2F0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGluZm9T
aW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQgRm9sZGluZyBjYW5ub3Qg
YmUgZG9uZSBmb3IgbWF0cml4IHRpbWVzIHZlY3RvciIpOwotICAgICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gVE9ETyhqbWFkbGwpOiBU
aGlzIGNvZGUgc2hvdWxkIGNoZWNrIGZvciBvdmVyZmxvd3MuCisgICAgICAgICAgICBBU1NFUlQo
cmlnaHROb2RlLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCk7CiAKICAgICAgICAgICAgIGNv
bnN0IGludCBtYXRyaXhDb2xzID0gZ2V0Q29scygpOwogICAgICAgICAgICAgY29uc3QgaW50IG1h
dHJpeFJvd3MgPSBnZXRSb3dzKCk7CkBAIC0xMDg0LDEyICsxNDA2LDggQEAKIAogICAgICAgY2Fz
ZSBFT3BWZWN0b3JUaW1lc01hdHJpeDoKICAgICAgICAgewotICAgICAgICAgICAgaWYgKGdldFR5
cGUoKS5nZXRCYXNpY1R5cGUoKSAhPSBFYnRGbG9hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExp
bmUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IEZv
bGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIHZlY3RvciB0aW1lcyBtYXRyaXgiKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIFRP
RE8oam1hZGxsKTogVGhpcyBjb2RlIHNob3VsZCBjaGVjayBmb3Igb3ZlcmZsb3dzLgorICAgICAg
ICAgICAgQVNTRVJUKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCk7CiAKICAg
ICAgICAgICAgIGNvbnN0IGludCBtYXRyaXhDb2xzID0gcmlnaHROb2RlLT5nZXRUeXBlKCkuZ2V0
Q29scygpOwogICAgICAgICAgICAgY29uc3QgaW50IG1hdHJpeFJvd3MgPSByaWdodE5vZGUtPmdl
dFR5cGUoKS5nZXRSb3dzKCk7CkBAIC0xMTMxLDE4ICsxNDQ5LDExIEBACiAKICAgICAgIGNhc2Ug
RU9wTG9naWNhbFhvcjoKICAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGdldFR5cGUoKS5n
ZXRCYXNpY1R5cGUoKSA9PSBFYnRCb29sKTsKICAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3
IFRDb25zdGFudFVuaW9uW29iamVjdFNpemVdOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
c3dpdGNoIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpCi0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgY2FzZSBFYnRCb29sOgotICAgICAgICAgICAgICAgICAgICByZXN1bHRB
cnJheVtpXS5zZXRCQ29uc3QobGVmdEFycmF5W2ldICE9IHJpZ2h0QXJyYXlbaV0pOwotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29u
c3QobGVmdEFycmF5W2ldICE9IHJpZ2h0QXJyYXlbaV0pOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgICAgIGJyZWFrOwpAQCAtMTE2NSwxMiArMTQ3NiwxMiBAQAogICAgICAgY2FzZSBF
T3BCaXRTaGlmdExlZnQ6CiAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9u
W29iamVjdFNpemVdOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7
IGkrKykKLSAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldID0gbGVmdEFycmF5W2ldIDw8IHJpZ2h0
QXJyYXlbaV07CisgICAgICAgICAgICByZXN1bHRBcnJheVtpXSA9IFRDb25zdGFudFVuaW9uOjps
c2hpZnQobGVmdEFycmF5W2ldLCByaWdodEFycmF5W2ldLCBkaWFnbm9zdGljcywgbGluZSk7CiAg
ICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BCaXRTaGlmdFJpZ2h0OgogICAgICAgICByZXN1
bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCi0gICAgICAgICAgICByZXN1bHRBcnJh
eVtpXSA9IGxlZnRBcnJheVtpXSA+PiByaWdodEFycmF5W2ldOworICAgICAgICAgICAgcmVzdWx0
QXJyYXlbaV0gPSBUQ29uc3RhbnRVbmlvbjo6cnNoaWZ0KGxlZnRBcnJheVtpXSwgcmlnaHRBcnJh
eVtpXSwgZGlhZ25vc3RpY3MsIGxpbmUpOwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBF
T3BMZXNzVGhhbjoKQEAgLTEyMjIsMzcgKzE1MzMsMjggQEAKICAgICAgICAgYnJlYWs7CiAKICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZSgKLSAgICAgICAgICAg
IEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksCi0gICAgICAgICAgICAiSW52YWxpZCBv
cGVyYXRvciBmb3IgY29uc3RhbnQgZm9sZGluZyIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KICAgICByZXR1cm4gcmVzdWx0QXJyYXk7CiB9CiAKLS8vCi0vLyBUaGUgZm9sZCBmdW5jdGlv
bnMgc2VlIGlmIGFuIG9wZXJhdGlvbiBvbiBhIGNvbnN0YW50IGNhbiBiZSBkb25lIGluIHBsYWNl
LAotLy8gd2l0aG91dCBnZW5lcmF0aW5nIHJ1bi10aW1lIGNvZGUuCi0vLwotLy8gUmV0dXJucyB0
aGUgY29uc3RhbnQgdmFsdWUgdG8ga2VlcCB1c2luZyBvciBudWxscHRyLgotLy8KLVRDb25zdGFu
dFVuaW9uICpUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZFVuYXJ5V2l0aERpZmZlcmVudFJldHVy
blR5cGUoVE9wZXJhdG9yIG9wLCBUSW5mb1NpbmsgJmluZm9TaW5rKQorLy8gVGhlIGZvbGQgZnVu
Y3Rpb25zIGRvIG9wZXJhdGlvbnMgb24gYSBjb25zdGFudCBhdCBHTFNMIGNvbXBpbGUgdGltZSwg
d2l0aG91dCBnZW5lcmF0aW5nIHJ1bi10aW1lCisvLyBjb2RlLiBSZXR1cm5zIHRoZSBjb25zdGFu
dCB2YWx1ZSB0byBrZWVwIHVzaW5nLiBOdWxscHRyIHNob3VsZCBub3QgYmUgcmV0dXJuZWQuCitU
Q29uc3RhbnRVbmlvbiAqVEludGVybUNvbnN0YW50VW5pb246OmZvbGRVbmFyeU5vbkNvbXBvbmVu
dFdpc2UoVE9wZXJhdG9yIG9wKQogewotICAgIC8vCi0gICAgLy8gRG8gb3BlcmF0aW9ucyB3aGVy
ZSB0aGUgcmV0dXJuIHR5cGUgaGFzIGEgZGlmZmVyZW50IG51bWJlciBvZiBjb21wb25lbnRzIGNv
bXBhcmVkIHRvIHRoZSBvcGVyYW5kIHR5cGUuCi0gICAgLy8KKyAgICAvLyBEbyBvcGVyYXRpb25z
IHdoZXJlIHRoZSByZXR1cm4gdHlwZSBtYXkgaGF2ZSBhIGRpZmZlcmVudCBudW1iZXIgb2YgY29t
cG9uZW50cyBjb21wYXJlZCB0byB0aGUKKyAgICAvLyBvcGVyYW5kIHR5cGUuCiAKICAgICBjb25z
dCBUQ29uc3RhbnRVbmlvbiAqb3BlcmFuZEFycmF5ID0gZ2V0VW5pb25BcnJheVBvaW50ZXIoKTsK
LSAgICBpZiAoIW9wZXJhbmRBcnJheSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQVNT
RVJUKG9wZXJhbmRBcnJheSk7CiAKICAgICBzaXplX3Qgb2JqZWN0U2l6ZSA9IGdldFR5cGUoKS5n
ZXRPYmplY3RTaXplKCk7CiAgICAgVENvbnN0YW50VW5pb24gKnJlc3VsdEFycmF5ID0gbnVsbHB0
cjsKICAgICBzd2l0Y2ggKG9wKQogICAgIHsKLSAgICAgIGNhc2UgRU9wQW55OgotICAgICAgICBp
ZiAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpID09IEVidEJvb2wpCi0gICAgICAgIHsKKyAgICAg
ICAgY2FzZSBFT3BBbnk6CisgICAgICAgICAgICBBU1NFUlQoZ2V0VHlwZSgpLmdldEJhc2ljVHlw
ZSgpID09IEVidEJvb2wpOwogICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50
VW5pb24oKTsKICAgICAgICAgICAgIHJlc3VsdEFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwogICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCkBAIC0xMjY0
LDE2ICsxNTY2LDkgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgp
LCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIpOwotICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KIAotICAgICAgY2FzZSBFT3BBbGw6Ci0gICAg
ICAgIGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0Qm9vbCkKLSAgICAgICAgewor
ICAgICAgICBjYXNlIEVPcEFsbDoKKyAgICAgICAgICAgIEFTU0VSVChnZXRUeXBlKCkuZ2V0QmFz
aWNUeXBlKCkgPT0gRWJ0Qm9vbCk7CiAgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29u
c3RhbnRVbmlvbigpOwogICAgICAgICAgICAgcmVzdWx0QXJyYXktPnNldEJDb25zdCh0cnVlKTsK
ICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQpAQCAt
MTI4NSw0NCArMTU4MCwyNiBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAg
ICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRM
aW5lKCksICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7Ci0gICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQogCi0gICAgICBjYXNlIEVPcExlbmd0
aDoKLSAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCkKLSAg
ICAgICAgeworICAgICAgICBjYXNlIEVPcExlbmd0aDoKKyAgICAgICAgICAgIEFTU0VSVChnZXRU
eXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQpOwogICAgICAgICAgICAgcmVzdWx0QXJy
YXkgPSBuZXcgVENvbnN0YW50VW5pb24oKTsKICAgICAgICAgICAgIHJlc3VsdEFycmF5LT5zZXRG
Q29uc3QoVmVjdG9yTGVuZ3RoKG9wZXJhbmRBcnJheSwgb2JqZWN0U2l6ZSkpOwogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwg
IlVuYXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVkIGludG8gY29uc3RhbnQiKTsKLSAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgICAgICB9CiAKLSAgICAgIGNhc2UgRU9wVHJhbnNwb3NlOgot
ICAgICAgICBpZiAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0KQorICAgICAg
ICBjYXNlIEVPcFRyYW5zcG9zZToKICAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGdldFR5
cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCk7CiAgICAgICAgICAgICByZXN1bHRBcnJh
eSA9IG5ldyBUQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAgICAgICAgICAgIGFuZ2xlOjpN
YXRyaXg8ZmxvYXQ+IHJlc3VsdCA9Ci0gICAgICAgICAgICAgICAgR2V0TWF0cml4KG9wZXJhbmRB
cnJheSwgZ2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCksIGdldFR5cGUoKS5nZXRTZWNvbmRhcnlT
aXplKCkpLnRyYW5zcG9zZSgpOworICAgICAgICAgICAgICAgIEdldE1hdHJpeChvcGVyYW5kQXJy
YXksIGdldFR5cGUoKS5nZXRSb3dzKCksIGdldFR5cGUoKS5nZXRDb2xzKCkpLnRyYW5zcG9zZSgp
OwogICAgICAgICAgICAgU2V0VW5pb25BcnJheUZyb21NYXRyaXgocmVzdWx0LCByZXN1bHRBcnJh
eSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJv
ciwgZ2V0TGluZSgpLCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIp
OwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KIAotICAgICAgY2FzZSBF
T3BEZXRlcm1pbmFudDoKLSAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBF
YnRGbG9hdCkKKyAgICAgICAgY2FzZSBFT3BEZXRlcm1pbmFudDoKICAgICAgICAgeworICAgICAg
ICAgICAgQVNTRVJUKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCk7CiAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgc2l6ZSA9IGdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpOwog
ICAgICAgICAgICAgQVNTRVJUKHNpemUgPj0gMiAmJiBzaXplIDw9IDQpOwogICAgICAgICAgICAg
cmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb24oKTsKQEAgLTEzMjksNDUgKzE2MDYsMjkg
QEAKICAgICAgICAgICAgIHJlc3VsdEFycmF5LT5zZXRGQ29uc3QoR2V0TWF0cml4KG9wZXJhbmRB
cnJheSwgc2l6ZSkuZGV0ZXJtaW5hbnQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVz
c2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiVW5hcnkgb3BlcmF0aW9uIG5v
dCBmb2xkZWQgaW50byBjb25zdGFudCIpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgICAgIH0KIAotICAgICAgY2FzZSBFT3BJbnZlcnNlOgotICAgICAgICBpZiAoZ2V0VHlwZSgp
LmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0KQorICAgICAgICBjYXNlIEVPcEludmVyc2U6CiAg
ICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0g
RWJ0RmxvYXQpOwogICAgICAgICAgICAgdW5zaWduZWQgaW50IHNpemUgPSBnZXRUeXBlKCkuZ2V0
Tm9taW5hbFNpemUoKTsKICAgICAgICAgICAgIEFTU0VSVChzaXplID49IDIgJiYgc2l6ZSA8PSA0
KTsKLSAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW29iamVjdFNp
emVdOworICAgICAgICAgICAgcmVzdWx0QXJyYXkgICAgICAgICAgICAgICAgID0gbmV3IFRDb25z
dGFudFVuaW9uW29iamVjdFNpemVdOwogICAgICAgICAgICAgYW5nbGU6Ok1hdHJpeDxmbG9hdD4g
cmVzdWx0ID0gR2V0TWF0cml4KG9wZXJhbmRBcnJheSwgc2l6ZSkuaW52ZXJzZSgpOwogICAgICAg
ICAgICAgU2V0VW5pb25BcnJheUZyb21NYXRyaXgocmVzdWx0LCByZXN1bHRBcnJheSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGlu
ZSgpLCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIpOwotICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KIAotICAgICAgY2FzZSBFT3BQYWNrU25v
cm0yeDE2OgotICAgICAgICBpZiAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0
KQotICAgICAgICB7CisgICAgICAgIGNhc2UgRU9wUGFja1Nub3JtMngxNjoKKyAgICAgICAgICAg
IEFTU0VSVChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQpOwogICAgICAgICAg
ICAgQVNTRVJUKGdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpID09IDIpOwogICAgICAgICAgICAg
cmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb24oKTsKLSAgICAgICAgICAgIHJlc3VsdEFy
cmF5LT5zZXRVQ29uc3QoZ2w6OnBhY2tTbm9ybTJ4MTYob3BlcmFuZEFycmF5WzBdLmdldEZDb25z
dCgpLCBvcGVyYW5kQXJyYXlbMV0uZ2V0RkNvbnN0KCkpKTsKKyAgICAgICAgICAgIHJlc3VsdEFy
cmF5LT5zZXRVQ29uc3QoCisgICAgICAgICAgICAgICAgZ2w6OnBhY2tTbm9ybTJ4MTYob3BlcmFu
ZEFycmF5WzBdLmdldEZDb25zdCgpLCBvcGVyYW5kQXJyYXlbMV0uZ2V0RkNvbnN0KCkpKTsKICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAg
ICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRM
aW5lKCksICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7Ci0gICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQogCi0gICAgICBjYXNlIEVPcFVucGFj
a1Nub3JtMngxNjoKLSAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRV
SW50KQorICAgICAgICBjYXNlIEVPcFVucGFja1Nub3JtMngxNjoKICAgICAgICAgeworICAgICAg
ICAgICAgQVNTRVJUKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRVSW50KTsKICAgICAg
ICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uWzJdOwogICAgICAgICAgICAg
ZmxvYXQgZjEsIGYyOwogICAgICAgICAgICAgZ2w6OnVucGFja1Nub3JtMngxNihvcGVyYW5kQXJy
YXlbMF0uZ2V0VUNvbnN0KCksICZmMSwgJmYyKTsKQEAgLTEzNzUsMjkgKzE2MzYsMTggQEAKICAg
ICAgICAgICAgIHJlc3VsdEFycmF5WzFdLnNldEZDb25zdChmMik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGluZm9T
aW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiVW5hcnkg
b3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIpOwotICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgICAgIH0KIAotICAgICAgY2FzZSBFT3BQYWNrVW5vcm0yeDE2OgotICAg
ICAgICBpZiAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0KQotICAgICAgICB7
CisgICAgICAgIGNhc2UgRU9wUGFja1Vub3JtMngxNjoKKyAgICAgICAgICAgIEFTU0VSVChnZXRU
eXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQpOwogICAgICAgICAgICAgQVNTRVJUKGdl
dFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpID09IDIpOwogICAgICAgICAgICAgcmVzdWx0QXJyYXkg
PSBuZXcgVENvbnN0YW50VW5pb24oKTsKLSAgICAgICAgICAgIHJlc3VsdEFycmF5LT5zZXRVQ29u
c3QoZ2w6OnBhY2tVbm9ybTJ4MTYob3BlcmFuZEFycmF5WzBdLmdldEZDb25zdCgpLCBvcGVyYW5k
QXJyYXlbMV0uZ2V0RkNvbnN0KCkpKTsKKyAgICAgICAgICAgIHJlc3VsdEFycmF5LT5zZXRVQ29u
c3QoCisgICAgICAgICAgICAgICAgZ2w6OnBhY2tVbm9ybTJ4MTYob3BlcmFuZEFycmF5WzBdLmdl
dEZDb25zdCgpLCBvcGVyYW5kQXJyYXlbMV0uZ2V0RkNvbnN0KCkpKTsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgaW5m
b1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJVbmFy
eSBvcGVyYXRpb24gbm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7Ci0gICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICAgICAgfQogCi0gICAgICBjYXNlIEVPcFVucGFja1Vub3JtMngxNjoK
LSAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRVSW50KQorICAgICAg
ICBjYXNlIEVPcFVucGFja1Vub3JtMngxNjoKICAgICAgICAgeworICAgICAgICAgICAgQVNTRVJU
KGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRVSW50KTsKICAgICAgICAgICAgIHJlc3Vs
dEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uWzJdOwogICAgICAgICAgICAgZmxvYXQgZjEsIGYy
OwogICAgICAgICAgICAgZ2w6OnVucGFja1Vub3JtMngxNihvcGVyYW5kQXJyYXlbMF0uZ2V0VUNv
bnN0KCksICZmMSwgJmYyKTsKQEAgLTE0MDUsMjkgKzE2NTUsMTggQEAKICAgICAgICAgICAgIHJl
c3VsdEFycmF5WzFdLnNldEZDb25zdChmMik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVz
c2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiVW5hcnkgb3BlcmF0aW9uIG5v
dCBmb2xkZWQgaW50byBjb25zdGFudCIpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgICAgIH0KIAotICAgICAgY2FzZSBFT3BQYWNrSGFsZjJ4MTY6Ci0gICAgICAgIGlmIChnZXRU
eXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQpCi0gICAgICAgIHsKKyAgICAgICAgY2Fz
ZSBFT3BQYWNrSGFsZjJ4MTY6CisgICAgICAgICAgICBBU1NFUlQoZ2V0VHlwZSgpLmdldEJhc2lj
VHlwZSgpID09IEVidEZsb2F0KTsKICAgICAgICAgICAgIEFTU0VSVChnZXRUeXBlKCkuZ2V0Tm9t
aW5hbFNpemUoKSA9PSAyKTsKICAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFu
dFVuaW9uKCk7Ci0gICAgICAgICAgICByZXN1bHRBcnJheS0+c2V0VUNvbnN0KGdsOjpwYWNrSGFs
ZjJ4MTYob3BlcmFuZEFycmF5WzBdLmdldEZDb25zdCgpLCBvcGVyYW5kQXJyYXlbMV0uZ2V0RkNv
bnN0KCkpKTsKKyAgICAgICAgICAgIHJlc3VsdEFycmF5LT5zZXRVQ29uc3QoCisgICAgICAgICAg
ICAgICAgZ2w6OnBhY2tIYWxmMngxNihvcGVyYW5kQXJyYXlbMF0uZ2V0RkNvbnN0KCksIG9wZXJh
bmRBcnJheVsxXS5nZXRGQ29uc3QoKSkpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3Nh
Z2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIlVuYXJ5IG9wZXJhdGlvbiBub3Qg
Zm9sZGVkIGludG8gY29uc3RhbnQiKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
ICAgICB9CiAKLSAgICAgIGNhc2UgRU9wVW5wYWNrSGFsZjJ4MTY6Ci0gICAgICAgIGlmIChnZXRU
eXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0VUludCkKKyAgICAgICAgY2FzZSBFT3BVbnBhY2tI
YWxmMngxNjoKICAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGdldFR5cGUoKS5nZXRCYXNp
Y1R5cGUoKSA9PSBFYnRVSW50KTsKICAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25z
dGFudFVuaW9uWzJdOwogICAgICAgICAgICAgZmxvYXQgZjEsIGYyOwogICAgICAgICAgICAgZ2w6
OnVucGFja0hhbGYyeDE2KG9wZXJhbmRBcnJheVswXS5nZXRVQ29uc3QoKSwgJmYxLCAmZjIpOwpA
QCAtMTQzNSwyOSArMTY3NCwyNCBAQAogICAgICAgICAgICAgcmVzdWx0QXJyYXlbMV0uc2V0RkNv
bnN0KGYyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgewotICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5h
bEVycm9yLCBnZXRMaW5lKCksICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRlZCBpbnRvIGNvbnN0
YW50Iik7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICBi
cmVhazsKIAotICAgICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgfQog
CiAgICAgcmV0dXJuIHJlc3VsdEFycmF5OwogfQogCi1UQ29uc3RhbnRVbmlvbiAqVEludGVybUNv
bnN0YW50VW5pb246OmZvbGRVbmFyeVdpdGhTYW1lUmV0dXJuVHlwZShUT3BlcmF0b3Igb3AsIFRJ
bmZvU2luayAmaW5mb1NpbmspCitUQ29uc3RhbnRVbmlvbiAqVEludGVybUNvbnN0YW50VW5pb246
OmZvbGRVbmFyeUNvbXBvbmVudFdpc2UoVE9wZXJhdG9yIG9wLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFREaWFnbm9zdGljcyAq
ZGlhZ25vc3RpY3MpCiB7Ci0gICAgLy8KLSAgICAvLyBEbyB1bmFyeSBvcGVyYXRpb25zIHdoZXJl
IHRoZSByZXR1cm4gdHlwZSBpcyB0aGUgc2FtZSBhcyBvcGVyYW5kIHR5cGUuCi0gICAgLy8KKyAg
ICAvLyBEbyB1bmFyeSBvcGVyYXRpb25zIHdoZXJlIGVhY2ggY29tcG9uZW50IG9mIHRoZSByZXN1
bHQgaXMgY29tcHV0ZWQgYmFzZWQgb24gdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAvLyBjb21wb25l
bnQgb2YgdGhlIG9wZXJhbmQuIEFsc28gZm9sZHMgbm9ybWFsaXplLCB0aG91Z2ggdGhlIGRpdmlz
b3IgaW4gdGhhdCBjYXNlIHRha2VzIGFsbAorICAgIC8vIGNvbXBvbmVudHMgaW50byBhY2NvdW50
LgogCiAgICAgY29uc3QgVENvbnN0YW50VW5pb24gKm9wZXJhbmRBcnJheSA9IGdldFVuaW9uQXJy
YXlQb2ludGVyKCk7Ci0gICAgaWYgKCFvcGVyYW5kQXJyYXkpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIEFTU0VSVChvcGVyYW5kQXJyYXkpOwogCiAgICAgc2l6ZV90IG9iamVjdFNpemUg
PSBnZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOwogCkBAIC0xNDY2LDI0MyArMTcwMCwyMzIgQEAK
ICAgICB7CiAgICAgICAgIHN3aXRjaChvcCkKICAgICAgICAgewotICAgICAgICAgIGNhc2UgRU9w
TmVnYXRpdmU6Ci0gICAgICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAg
ICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QoLW9wZXJhbmRBcnJheVtpXS5nZXRGQ29uc3Qo
KSk7CisgICAgICAgICAgICBjYXNlIEVPcE5lZ2F0aXZlOgorICAgICAgICAgICAgICAgIHN3aXRj
aCAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dEFycmF5W2ldLnNldEZDb25zdCgtb3BlcmFuZEFycmF5W2ldLmdldEZDb25zdCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIEVidElu
dDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kQXJyYXlbaV0gPT0gc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgbWluaW11bSByZXByZXNlbnRhYmxlIGlu
dGVnZXIgZG9lc24ndCBoYXZlIGEgcG9zaXRpdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBjb3VudGVycGFydCwgcmF0aGVyIHRoZSBuZWdhdGlvbiBvdmVyZmxvd3MgYW5kIGluIEVT
U0wgaXMgc3VwcG9zZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3cmFwIGJh
Y2sgdG8gdGhlIG1pbmltdW0gcmVwcmVzZW50YWJsZSBpbnRlZ2VyLiBNYWtlIHN1cmUgdGhhdCB3
ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvbid0IGFjdHVhbGx5IGxldCB0aGUg
bmVnYXRpb24gb3ZlcmZsb3csIHdoaWNoIGhhcyB1bmRlZmluZWQKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBiZWhhdmlvciBpbiBDKysuCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0QXJyYXlbaV0uc2V0SUNvbnN0KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWlu
KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdEFycmF5W2ldLnNldElDb25zdCgtb3BlcmFuZEFycmF5W2ldLmdldElDb25zdCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIEVidFVJbnQ6CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAob3BlcmFuZEFycmF5W2ldID09IDB4ODAwMDAwMDB1KQorICAgICAgICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ld
LnNldFVDb25zdCgweDgwMDAwMDAwdSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0VUNvbnN0KHN0YXRpY19j
YXN0PHVuc2lnbmVkIGludD4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1zdGF0
aWNfY2FzdDxpbnQ+KG9wZXJhbmRBcnJheVtpXS5nZXRVQ29uc3QoKSkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6
Ci0gICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0SUNvbnN0KC1vcGVyYW5kQXJyYXlb
aV0uZ2V0SUNvbnN0KCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBj
YXNlIEVidFVJbnQ6Ci0gICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0VUNvbnN0KHN0
YXRpY19jYXN0PHVuc2lnbmVkIGludD4oCi0gICAgICAgICAgICAgICAgICAgIC1zdGF0aWNfY2Fz
dDxpbnQ+KG9wZXJhbmRBcnJheVtpXS5nZXRVQ29uc3QoKSkpKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBpbmZvU2luay5p
bmZvLm1lc3NhZ2UoCi0gICAgICAgICAgICAgICAgICAgIEVQcmVmaXhJbnRlcm5hbEVycm9yLCBn
ZXRMaW5lKCksCi0gICAgICAgICAgICAgICAgICAgICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRl
ZCBpbnRvIGNvbnN0YW50Iik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgIGNhc2UgRU9wUG9zaXRp
dmU6Ci0gICAgICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAgICAgICBy
ZXN1bHRBcnJheVtpXS5zZXRGQ29uc3Qob3BlcmFuZEFycmF5W2ldLmdldEZDb25zdCgpKTsKKyAg
ICAgICAgICAgIGNhc2UgRU9wUG9zaXRpdmU6CisgICAgICAgICAgICAgICAgc3dpdGNoIChnZXRU
eXBlKCkuZ2V0QmFzaWNUeXBlKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBjYXNlIEVidEZsb2F0OgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlb
aV0uc2V0RkNvbnN0KG9wZXJhbmRBcnJheVtpXS5nZXRGQ29uc3QoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRJQ29uc3Qob3BlcmFuZEFycmF5
W2ldLmdldElDb25zdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIEVidFVJbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1
bHRBcnJheVtpXS5zZXRVQ29uc3Qoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PigKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KG9wZXJhbmRBcnJheVtpXS5nZXRV
Q29uc3QoKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6Ci0g
ICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0SUNvbnN0KG9wZXJhbmRBcnJheVtpXS5n
ZXRJQ29uc3QoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2Ug
RWJ0VUludDoKLSAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRVQ29uc3Qoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgaW50PigKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50
PihvcGVyYW5kQXJyYXlbaV0uZ2V0VUNvbnN0KCkpKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5t
ZXNzYWdlKAotICAgICAgICAgICAgICAgICAgICBFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGlu
ZSgpLAotICAgICAgICAgICAgICAgICAgICAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50
byBjb25zdGFudCIpOwotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBjYXNlIEVPcExvZ2ljYWxOb3Q6
Ci0gICAgICAgICAgICAvLyB0aGlzIGNvZGUgaXMgd3JpdHRlbiBmb3IgcG9zc2libGUgZnV0dXJl
IHVzZSwKLSAgICAgICAgICAgIC8vIHdpbGwgbm90IGdldCBleGVjdXRlZCBjdXJyZW50bHkKLSAg
ICAgICAgICAgIHN3aXRjaCAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6Ci0gICAgICAgICAgICAgICAgcmVzdWx0QXJy
YXlbaV0uc2V0QkNvbnN0KCFvcGVyYW5kQXJyYXlbaV0uZ2V0QkNvbnN0KCkpOworICAgICAgICAg
ICAgY2FzZSBFT3BMb2dpY2FsTm90OgorICAgICAgICAgICAgICAgIHN3aXRjaCAoZ2V0VHlwZSgp
LmdldEJhc2ljVHlwZSgpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSBFYnRCb29sOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0
QkNvbnN0KCFvcGVyYW5kQXJyYXlbaV0uZ2V0QkNvbnN0KCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2Fn
ZSgKLSAgICAgICAgICAgICAgICAgICAgRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwK
LSAgICAgICAgICAgICAgICAgICAgIlVuYXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVkIGludG8gY29u
c3RhbnQiKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgY2FzZSBFT3BCaXR3aXNlTm90OgotICAg
ICAgICAgICAgc3dpdGNoIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgotICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5
W2ldLnNldElDb25zdCh+b3BlcmFuZEFycmF5W2ldLmdldElDb25zdCgpKTsKKyAgICAgICAgICAg
IGNhc2UgRU9wQml0d2lzZU5vdDoKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKS5n
ZXRCYXNpY1R5cGUoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgRWJ0SW50OgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0SUNv
bnN0KH5vcGVyYW5kQXJyYXlbaV0uZ2V0SUNvbnN0KCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0VUludDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldFVDb25zdCh+b3BlcmFuZEFycmF5W2ldLmdl
dFVDb25zdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRVSW50Ogot
ICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldFVDb25zdCh+b3BlcmFuZEFycmF5W2ld
LmdldFVDb25zdCgpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoCi0gICAgICAgICAg
ICAgICAgICAgIEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksCi0gICAgICAgICAgICAg
ICAgICAgICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBi
cmVhazsKIAotICAgICAgICAgIGNhc2UgRU9wUmFkaWFuczoKLSAgICAgICAgICAgIGlmIChnZXRU
eXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQpCi0gICAgICAgICAgICB7CisgICAgICAg
ICAgICBjYXNlIEVPcFJhZGlhbnM6CisgICAgICAgICAgICAgICAgQVNTRVJUKGdldFR5cGUoKS5n
ZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCk7CiAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlb
aV0uc2V0RkNvbnN0KGtEZWdyZWVzVG9SYWRpYW5zTXVsdGlwbGllciAqIG9wZXJhbmRBcnJheVtp
XS5nZXRGQ29uc3QoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoCi0gICAgICAgICAgICAgICAgRVByZWZp
eEludGVybmFsRXJyb3IsIGdldExpbmUoKSwKLSAgICAgICAgICAgICAgICAiVW5hcnkgb3BlcmF0
aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICAgICAgICBjYXNlIEVPcERlZ3JlZXM6Ci0gICAgICAgICAgICBpZiAoZ2V0VHlw
ZSgpLmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0KQotICAgICAgICAgICAgeworICAgICAgICAg
ICAgY2FzZSBFT3BEZWdyZWVzOgorICAgICAgICAgICAgICAgIEFTU0VSVChnZXRUeXBlKCkuZ2V0
QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQpOwogICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ld
LnNldEZDb25zdChrUmFkaWFuc1RvRGVncmVlc011bHRpcGxpZXIgKiBvcGVyYW5kQXJyYXlbaV0u
Z2V0RkNvbnN0KCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKAotICAgICAgICAgICAgICAgIEVQcmVmaXhJ
bnRlcm5hbEVycm9yLCBnZXRMaW5lKCksCi0gICAgICAgICAgICAgICAgIlVuYXJ5IG9wZXJhdGlv
biBub3QgZm9sZGVkIGludG8gY29uc3RhbnQiKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgICAgICAgY2FzZSBFT3BTaW46Ci0gICAgICAgICAgICBpZiAoIWZvbGRGbG9hdFR5
cGVVbmFyeShvcGVyYW5kQXJyYXlbaV0sICZzaW5mLCBpbmZvU2luaywgJnJlc3VsdEFycmF5W2ld
KSkKLSAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIEVPcFNpbjoKKyAgICAgICAgICAgICAgICBmb2xkRmxvYXRUeXBlVW5h
cnkob3BlcmFuZEFycmF5W2ldLCAmc2luZiwgJnJlc3VsdEFycmF5W2ldKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKIAotICAgICAgICAgIGNhc2UgRU9wQ29zOgotICAgICAgICAgICAgaWYgKCFm
b2xkRmxvYXRUeXBlVW5hcnkob3BlcmFuZEFycmF5W2ldLCAmY29zZiwgaW5mb1NpbmssICZyZXN1
bHRBcnJheVtpXSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRU9wQ29zOgorICAgICAgICAgICAgICAgIGZvbGRG
bG9hdFR5cGVVbmFyeShvcGVyYW5kQXJyYXlbaV0sICZjb3NmLCAmcmVzdWx0QXJyYXlbaV0pOwor
ICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgY2FzZSBFT3BUYW46Ci0gICAgICAg
ICAgICBpZiAoIWZvbGRGbG9hdFR5cGVVbmFyeShvcGVyYW5kQXJyYXlbaV0sICZ0YW5mLCBpbmZv
U2luaywgJnJlc3VsdEFycmF5W2ldKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFT3BUYW46CisgICAgICAgICAg
ICAgICAgZm9sZEZsb2F0VHlwZVVuYXJ5KG9wZXJhbmRBcnJheVtpXSwgJnRhbmYsICZyZXN1bHRB
cnJheVtpXSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBjYXNlIEVPcEFz
aW46Ci0gICAgICAgICAgICAvLyBGb3IgYXNpbih4KSwgcmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlm
IHx4fCA+IDEsIHdlIGFyZSBjaG9vc2luZyB0byBzZXQgcmVzdWx0IHRvIDAuCi0gICAgICAgICAg
ICBpZiAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0ICYmIGZhYnNmKG9wZXJh
bmRBcnJheVtpXS5nZXRGQ29uc3QoKSkgPiAxLjBmKQotICAgICAgICAgICAgICAgIFVuZGVmaW5l
ZENvbnN0YW50Rm9sZGluZ0Vycm9yKGdldExpbmUoKSwgb3AsIGdldFR5cGUoKS5nZXRCYXNpY1R5
cGUoKSwgaW5mb1NpbmssICZyZXN1bHRBcnJheVtpXSk7Ci0gICAgICAgICAgICBlbHNlIGlmICgh
Zm9sZEZsb2F0VHlwZVVuYXJ5KG9wZXJhbmRBcnJheVtpXSwgJmFzaW5mLCBpbmZvU2luaywgJnJl
c3VsdEFycmF5W2ldKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFT3BBc2luOgorICAgICAgICAgICAgICAgIC8v
IEZvciBhc2luKHgpLCByZXN1bHRzIGFyZSB1bmRlZmluZWQgaWYgfHh8ID4gMSwgd2UgYXJlIGNo
b29zaW5nIHRvIHNldCByZXN1bHQgdG8KKyAgICAgICAgICAgICAgICAvLyAwLgorICAgICAgICAg
ICAgICAgIGlmIChmYWJzZihvcGVyYW5kQXJyYXlbaV0uZ2V0RkNvbnN0KCkpID4gMS4wZikKKyAg
ICAgICAgICAgICAgICAgICAgVW5kZWZpbmVkQ29uc3RhbnRGb2xkaW5nRXJyb3IoZ2V0TGluZSgp
LCBvcCwgZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkaWFnbm9zdGljcywgJnJlc3VsdEFycmF5W2ldKTsK
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZvbGRGbG9hdFR5cGVV
bmFyeShvcGVyYW5kQXJyYXlbaV0sICZhc2luZiwgJnJlc3VsdEFycmF5W2ldKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKIAotICAgICAgICAgIGNhc2UgRU9wQWNvczoKLSAgICAgICAgICAgIC8v
IEZvciBhY29zKHgpLCByZXN1bHRzIGFyZSB1bmRlZmluZWQgaWYgfHh8ID4gMSwgd2UgYXJlIGNo
b29zaW5nIHRvIHNldCByZXN1bHQgdG8gMC4KLSAgICAgICAgICAgIGlmIChnZXRUeXBlKCkuZ2V0
QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQgJiYgZmFic2Yob3BlcmFuZEFycmF5W2ldLmdldEZDb25z
dCgpKSA+IDEuMGYpCi0gICAgICAgICAgICAgICAgVW5kZWZpbmVkQ29uc3RhbnRGb2xkaW5nRXJy
b3IoZ2V0TGluZSgpLCBvcCwgZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpLCBpbmZvU2luaywgJnJl
c3VsdEFycmF5W2ldKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFmb2xkRmxvYXRUeXBlVW5hcnko
b3BlcmFuZEFycmF5W2ldLCAmYWNvc2YsIGluZm9TaW5rLCAmcmVzdWx0QXJyYXlbaV0pKQotICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIEVPcEFjb3M6CisgICAgICAgICAgICAgICAgLy8gRm9yIGFjb3MoeCksIHJlc3Vs
dHMgYXJlIHVuZGVmaW5lZCBpZiB8eHwgPiAxLCB3ZSBhcmUgY2hvb3NpbmcgdG8gc2V0IHJlc3Vs
dCB0bworICAgICAgICAgICAgICAgIC8vIDAuCisgICAgICAgICAgICAgICAgaWYgKGZhYnNmKG9w
ZXJhbmRBcnJheVtpXS5nZXRGQ29uc3QoKSkgPiAxLjBmKQorICAgICAgICAgICAgICAgICAgICBV
bmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJvcihnZXRMaW5lKCksIG9wLCBnZXRUeXBlKCkuZ2V0
QmFzaWNUeXBlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRpYWdub3N0aWNzLCAmcmVzdWx0QXJyYXlbaV0pOworICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgZm9sZEZsb2F0VHlwZVVuYXJ5KG9wZXJhbmRBcnJheVtp
XSwgJmFjb3NmLCAmcmVzdWx0QXJyYXlbaV0pOworICAgICAgICAgICAgICAgIGJyZWFrOwogCi0g
ICAgICAgICAgY2FzZSBFT3BBdGFuOgotICAgICAgICAgICAgaWYgKCFmb2xkRmxvYXRUeXBlVW5h
cnkob3BlcmFuZEFycmF5W2ldLCAmYXRhbmYsIGluZm9TaW5rLCAmcmVzdWx0QXJyYXlbaV0pKQot
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIEVPcEF0YW46CisgICAgICAgICAgICAgICAgZm9sZEZsb2F0VHlwZVVuYXJ5
KG9wZXJhbmRBcnJheVtpXSwgJmF0YW5mLCAmcmVzdWx0QXJyYXlbaV0pOworICAgICAgICAgICAg
ICAgIGJyZWFrOwogCi0gICAgICAgICAgY2FzZSBFT3BTaW5oOgotICAgICAgICAgICAgaWYgKCFm
b2xkRmxvYXRUeXBlVW5hcnkob3BlcmFuZEFycmF5W2ldLCAmc2luaGYsIGluZm9TaW5rLCAmcmVz
dWx0QXJyYXlbaV0pKQotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEVPcFNpbmg6CisgICAgICAgICAgICAgICAgZm9s
ZEZsb2F0VHlwZVVuYXJ5KG9wZXJhbmRBcnJheVtpXSwgJnNpbmhmLCAmcmVzdWx0QXJyYXlbaV0p
OworICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgY2FzZSBFT3BDb3NoOgotICAg
ICAgICAgICAgaWYgKCFmb2xkRmxvYXRUeXBlVW5hcnkob3BlcmFuZEFycmF5W2ldLCAmY29zaGYs
IGluZm9TaW5rLCAmcmVzdWx0QXJyYXlbaV0pKQotICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEVPcENvc2g6CisgICAg
ICAgICAgICAgICAgZm9sZEZsb2F0VHlwZVVuYXJ5KG9wZXJhbmRBcnJheVtpXSwgJmNvc2hmLCAm
cmVzdWx0QXJyYXlbaV0pOworICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgY2Fz
ZSBFT3BUYW5oOgotICAgICAgICAgICAgaWYgKCFmb2xkRmxvYXRUeXBlVW5hcnkob3BlcmFuZEFy
cmF5W2ldLCAmdGFuaGYsIGluZm9TaW5rLCAmcmVzdWx0QXJyYXlbaV0pKQotICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IEVPcFRhbmg6CisgICAgICAgICAgICAgICAgZm9sZEZsb2F0VHlwZVVuYXJ5KG9wZXJhbmRBcnJh
eVtpXSwgJnRhbmhmLCAmcmVzdWx0QXJyYXlbaV0pOworICAgICAgICAgICAgICAgIGJyZWFrOwog
Ci0gICAgICAgICAgY2FzZSBFT3BBc2luaDoKLSAgICAgICAgICAgIGlmICghZm9sZEZsb2F0VHlw
ZVVuYXJ5KG9wZXJhbmRBcnJheVtpXSwgJmFzaW5oZiwgaW5mb1NpbmssICZyZXN1bHRBcnJheVtp
XSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgRU9wQXNpbmg6CisgICAgICAgICAgICAgICAgZm9sZEZsb2F0VHlw
ZVVuYXJ5KG9wZXJhbmRBcnJheVtpXSwgJmFzaW5oZiwgJnJlc3VsdEFycmF5W2ldKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgIGNhc2UgRU9wQWNvc2g6Ci0gICAgICAgICAg
ICAvLyBGb3IgYWNvc2goeCksIHJlc3VsdHMgYXJlIHVuZGVmaW5lZCBpZiB4IDwgMSwgd2UgYXJl
IGNob29zaW5nIHRvIHNldCByZXN1bHQgdG8gMC4KLSAgICAgICAgICAgIGlmIChnZXRUeXBlKCku
Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQgJiYgb3BlcmFuZEFycmF5W2ldLmdldEZDb25zdCgp
IDwgMS4wZikKLSAgICAgICAgICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJvcihn
ZXRMaW5lKCksIG9wLCBnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCksIGluZm9TaW5rLCAmcmVzdWx0
QXJyYXlbaV0pOwotICAgICAgICAgICAgZWxzZSBpZiAoIWZvbGRGbG9hdFR5cGVVbmFyeShvcGVy
YW5kQXJyYXlbaV0sICZhY29zaGYsIGluZm9TaW5rLCAmcmVzdWx0QXJyYXlbaV0pKQotICAgICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIEVPcEFjb3NoOgorICAgICAgICAgICAgICAgIC8vIEZvciBhY29zaCh4KSwgcmVzdWx0
cyBhcmUgdW5kZWZpbmVkIGlmIHggPCAxLCB3ZSBhcmUgY2hvb3NpbmcgdG8gc2V0IHJlc3VsdCB0
byAwLgorICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kQXJyYXlbaV0uZ2V0RkNvbnN0KCkgPCAx
LjBmKQorICAgICAgICAgICAgICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJvcihn
ZXRMaW5lKCksIG9wLCBnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpYWdub3N0aWNzLCAmcmVzdWx0QXJy
YXlbaV0pOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZm9sZEZs
b2F0VHlwZVVuYXJ5KG9wZXJhbmRBcnJheVtpXSwgJmFjb3NoZiwgJnJlc3VsdEFycmF5W2ldKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgIGNhc2UgRU9wQXRhbmg6Ci0gICAg
ICAgICAgICAvLyBGb3IgYXRhbmgoeCksIHJlc3VsdHMgYXJlIHVuZGVmaW5lZCBpZiB8eHwgPj0g
MSwgd2UgYXJlIGNob29zaW5nIHRvIHNldCByZXN1bHQgdG8gMC4KLSAgICAgICAgICAgIGlmIChn
ZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQgJiYgZmFic2Yob3BlcmFuZEFycmF5
W2ldLmdldEZDb25zdCgpKSA+PSAxLjBmKQotICAgICAgICAgICAgICAgIFVuZGVmaW5lZENvbnN0
YW50Rm9sZGluZ0Vycm9yKGdldExpbmUoKSwgb3AsIGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSwg
aW5mb1NpbmssICZyZXN1bHRBcnJheVtpXSk7Ci0gICAgICAgICAgICBlbHNlIGlmICghZm9sZEZs
b2F0VHlwZVVuYXJ5KG9wZXJhbmRBcnJheVtpXSwgJmF0YW5oZiwgaW5mb1NpbmssICZyZXN1bHRB
cnJheVtpXSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICAgIGNhc2UgRU9wQWJzOgotICAgICAgICAgICAgc3dpdGNoIChnZXRU
eXBlKCkuZ2V0QmFzaWNUeXBlKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNhc2Ug
RWJ0RmxvYXQ6Ci0gICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KGZhYnNm
KG9wZXJhbmRBcnJheVtpXS5nZXRGQ29uc3QoKSkpOworICAgICAgICAgICAgY2FzZSBFT3BBdGFu
aDoKKyAgICAgICAgICAgICAgICAvLyBGb3IgYXRhbmgoeCksIHJlc3VsdHMgYXJlIHVuZGVmaW5l
ZCBpZiB8eHwgPj0gMSwgd2UgYXJlIGNob29zaW5nIHRvIHNldCByZXN1bHQgdG8KKyAgICAgICAg
ICAgICAgICAvLyAwLgorICAgICAgICAgICAgICAgIGlmIChmYWJzZihvcGVyYW5kQXJyYXlbaV0u
Z2V0RkNvbnN0KCkpID49IDEuMGYpCisgICAgICAgICAgICAgICAgICAgIFVuZGVmaW5lZENvbnN0
YW50Rm9sZGluZ0Vycm9yKGdldExpbmUoKSwgb3AsIGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhZ25v
c3RpY3MsICZyZXN1bHRBcnJheVtpXSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICBmb2xkRmxvYXRUeXBlVW5hcnkob3BlcmFuZEFycmF5W2ldLCAmYXRhbmhmLCAm
cmVzdWx0QXJyYXlbaV0pOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBj
YXNlIEVidEludDoKLSAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRJQ29uc3QoYWJz
KG9wZXJhbmRBcnJheVtpXS5nZXRJQ29uc3QoKSkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVz
c2FnZSgKLSAgICAgICAgICAgICAgICAgICAgRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUo
KSwKLSAgICAgICAgICAgICAgICAgICAgIlVuYXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVkIGludG8g
Y29uc3RhbnQiKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgY2FzZSBFT3BTaWduOgotICAgICAg
ICAgICAgc3dpdGNoIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CisgICAgICAgICAgICBjYXNlIEVPcEFiczoKKyAg
ICAgICAgICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkKICAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0IGZDb25zdCA9IG9wZXJhbmRBcnJh
eVtpXS5nZXRGQ29uc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgZlJlc3VsdCA9IDAu
MGY7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChmQ29uc3QgPiAwLjBmKQotICAgICAgICAgICAg
ICAgICAgICAgICAgZlJlc3VsdCA9IDEuMGY7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYg
KGZDb25zdCA8IDAuMGYpCi0gICAgICAgICAgICAgICAgICAgICAgICBmUmVzdWx0ID0gLTEuMGY7
Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25zdChmUmVzdWx0KTsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25zdChmYWJzZihvcGVyYW5kQXJyYXlbaV0uZ2V0RkNv
bnN0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIEVidEludDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ld
LnNldElDb25zdChhYnMob3BlcmFuZEFycmF5W2ldLmdldElDb25zdCgpKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgorCisgICAgICAgICAgICBjYXNlIEVPcFNp
Z246CisgICAgICAgICAgICAgICAgc3dpdGNoIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpCiAg
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpbnQgaUNvbnN0ID0gb3BlcmFu
ZEFycmF5W2ldLmdldElDb25zdCgpOwotICAgICAgICAgICAgICAgICAgICBpbnQgaVJlc3VsdCA9
IDA7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpQ29uc3QgPiAwKQotICAgICAgICAgICAgICAg
ICAgICAgICAgaVJlc3VsdCA9IDE7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlDb25z
dCA8IDApCi0gICAgICAgICAgICAgICAgICAgICAgICBpUmVzdWx0ID0gLTE7Ci0gICAgICAgICAg
ICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldElDb25zdChpUmVzdWx0KTsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSBFYnRGbG9hdDoKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAgICAgZmxvYXQgZkNvbnN0ICA9IG9wZXJhbmRBcnJheVtpXS5nZXRGQ29uc3Qo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGZSZXN1bHQgPSAwLjBmOworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGZDb25zdCA+IDAuMGYpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZlJlc3VsdCA9IDEuMGY7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlm
IChmQ29uc3QgPCAwLjBmKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZSZXN1bHQgPSAt
MS4wZjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25zdChm
UmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaUNvbnN0ICA9IG9wZXJhbmRBcnJh
eVtpXS5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBpUmVzdWx0ID0g
MDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpQ29uc3QgPiAwKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlSZXN1bHQgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZSBpZiAoaUNvbnN0IDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpUmVzdWx0ID0g
LTE7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRJQ29uc3QoaVJl
c3VsdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoCi0gICAg
ICAgICAgICAgICAgICAgIEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksCi0gICAgICAg
ICAgICAgICAgICAgICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBicmVhazsKIAotICAgICAgICAgIGNhc2UgRU9wRmxvb3I6Ci0gICAgICAgICAgICBpZiAo
IWZvbGRGbG9hdFR5cGVVbmFyeShvcGVyYW5kQXJyYXlbaV0sICZmbG9vcmYsIGluZm9TaW5rLCAm
cmVzdWx0QXJyYXlbaV0pKQotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEVPcEZsb29yOgorICAgICAgICAgICAgICAg
IGZvbGRGbG9hdFR5cGVVbmFyeShvcGVyYW5kQXJyYXlbaV0sICZmbG9vcmYsICZyZXN1bHRBcnJh
eVtpXSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBjYXNlIEVPcFRydW5j
OgotICAgICAgICAgICAgaWYgKCFmb2xkRmxvYXRUeXBlVW5hcnkob3BlcmFuZEFycmF5W2ldLCAm
dHJ1bmNmLCBpbmZvU2luaywgJnJlc3VsdEFycmF5W2ldKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFT3BUcnVu
YzoKKyAgICAgICAgICAgICAgICBmb2xkRmxvYXRUeXBlVW5hcnkob3BlcmFuZEFycmF5W2ldLCAm
dHJ1bmNmLCAmcmVzdWx0QXJyYXlbaV0pOworICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAg
ICAgICAgY2FzZSBFT3BSb3VuZDoKLSAgICAgICAgICAgIGlmICghZm9sZEZsb2F0VHlwZVVuYXJ5
KG9wZXJhbmRBcnJheVtpXSwgJnJvdW5kZiwgaW5mb1NpbmssICZyZXN1bHRBcnJheVtpXSkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgRU9wUm91bmQ6CisgICAgICAgICAgICAgICAgZm9sZEZsb2F0VHlwZVVuYXJ5
KG9wZXJhbmRBcnJheVtpXSwgJnJvdW5kZiwgJnJlc3VsdEFycmF5W2ldKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKIAotICAgICAgICAgIGNhc2UgRU9wUm91bmRFdmVuOgotICAgICAgICAgICAg
aWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCkKKyAgICAgICAgICAgIGNh
c2UgRU9wUm91bmRFdmVuOgogICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEFTU0VSVChn
ZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQpOwogICAgICAgICAgICAgICAgIGZs
b2F0IHggPSBvcGVyYW5kQXJyYXlbaV0uZ2V0RkNvbnN0KCk7CiAgICAgICAgICAgICAgICAgZmxv
YXQgcmVzdWx0OwogICAgICAgICAgICAgICAgIGZsb2F0IGZyYWN0UGFydCA9IG1vZGZmKHgsICZy
ZXN1bHQpOwpAQCAtMTcxMywxNzEgKzE5MzYsMTMzIEBACiAgICAgICAgICAgICAgICAgcmVzdWx0
QXJyYXlbaV0uc2V0RkNvbnN0KHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoCi0gICAgICAgICAg
ICAgICAgRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwKLSAgICAgICAgICAgICAgICAi
VW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIpOwotICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgICBjYXNlIEVPcENlaWw6Ci0gICAgICAgICAgICBp
ZiAoIWZvbGRGbG9hdFR5cGVVbmFyeShvcGVyYW5kQXJyYXlbaV0sICZjZWlsZiwgaW5mb1Npbmss
ICZyZXN1bHRBcnJheVtpXSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRU9wQ2VpbDoKKyAgICAgICAgICAgICAg
ICBmb2xkRmxvYXRUeXBlVW5hcnkob3BlcmFuZEFycmF5W2ldLCAmY2VpbGYsICZyZXN1bHRBcnJh
eVtpXSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBjYXNlIEVPcEZyYWN0
OgotICAgICAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCkK
KyAgICAgICAgICAgIGNhc2UgRU9wRnJhY3Q6CiAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCk7CiAgICAgICAg
ICAgICAgICAgZmxvYXQgeCA9IG9wZXJhbmRBcnJheVtpXS5nZXRGQ29uc3QoKTsKICAgICAgICAg
ICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QoeCAtIGZsb29yZih4KSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoCi0gICAgICAgICAgICAgICAgRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUo
KSwKLSAgICAgICAgICAgICAgICAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25z
dGFudCIpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgICBjYXNlIEVP
cElzTmFuOgotICAgICAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRG
bG9hdCkKLSAgICAgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgRU9wSXNOYW46CisgICAgICAg
ICAgICAgICAgQVNTRVJUKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCk7CiAg
ICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KGdsOjppc05hTihvcGVyYW5k
QXJyYXlbMF0uZ2V0RkNvbnN0KCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxF
cnJvciwgZ2V0TGluZSgpLCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFu
dCIpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgICBjYXNlIEVPcElz
SW5mOgotICAgICAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9h
dCkKLSAgICAgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgRU9wSXNJbmY6CisgICAgICAgICAg
ICAgICAgQVNTRVJUKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCk7CiAgICAg
ICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KGdsOjppc0luZihvcGVyYW5kQXJy
YXlbMF0uZ2V0RkNvbnN0KCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJv
ciwgZ2V0TGluZSgpLCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIp
OwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgICBjYXNlIEVPcEZsb2F0
Qml0c1RvSW50OgotICAgICAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBF
YnRGbG9hdCkKLSAgICAgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgRU9wRmxvYXRCaXRzVG9J
bnQ6CisgICAgICAgICAgICAgICAgQVNTRVJUKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBF
YnRGbG9hdCk7CiAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0SUNvbnN0KGdsOjpi
aXRDYXN0PGludDMyX3Q+KG9wZXJhbmRBcnJheVswXS5nZXRGQ29uc3QoKSkpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5t
ZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJVbmFyeSBvcGVyYXRpb24g
bm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgICAgICAgIGNhc2UgRU9wRmxvYXRCaXRzVG9VaW50OgotICAgICAgICAgICAgaWYgKGdl
dFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCkKLSAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgIGNhc2UgRU9wRmxvYXRCaXRzVG9VaW50OgorICAgICAgICAgICAgICAgIEFTU0VSVChn
ZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQpOwogICAgICAgICAgICAgICAgIHJl
c3VsdEFycmF5W2ldLnNldFVDb25zdChnbDo6Yml0Q2FzdDx1aW50MzJfdD4ob3BlcmFuZEFycmF5
WzBdLmdldEZDb25zdCgpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3Is
IGdldExpbmUoKSwgIlVuYXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVkIGludG8gY29uc3RhbnQiKTsK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgICAgY2FzZSBFT3BJbnRCaXRz
VG9GbG9hdDoKLSAgICAgICAgICAgIGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0
SW50KQotICAgICAgICAgICAgeworICAgICAgICAgICAgY2FzZSBFT3BJbnRCaXRzVG9GbG9hdDoK
KyAgICAgICAgICAgICAgICBBU1NFUlQoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpID09IEVidElu
dCk7CiAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KGdsOjpiaXRDYXN0
PGZsb2F0PihvcGVyYW5kQXJyYXlbMF0uZ2V0SUNvbnN0KCkpKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShF
UHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xk
ZWQgaW50byBjb25zdGFudCIpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAg
ICAgICBjYXNlIEVPcFVpbnRCaXRzVG9GbG9hdDoKLSAgICAgICAgICAgIGlmIChnZXRUeXBlKCku
Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0VUludCkKLSAgICAgICAgICAgIHsKKyAgICAgICAgICAgIGNh
c2UgRU9wVWludEJpdHNUb0Zsb2F0OgorICAgICAgICAgICAgICAgIEFTU0VSVChnZXRUeXBlKCku
Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0VUludCk7CiAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlb
aV0uc2V0RkNvbnN0KGdsOjpiaXRDYXN0PGZsb2F0PihvcGVyYW5kQXJyYXlbMF0uZ2V0VUNvbnN0
KCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAi
VW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIpOwotICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgICBjYXNlIEVPcEV4cDoKLSAgICAgICAgICAgIGlm
ICghZm9sZEZsb2F0VHlwZVVuYXJ5KG9wZXJhbmRBcnJheVtpXSwgJmV4cGYsIGluZm9TaW5rLCAm
cmVzdWx0QXJyYXlbaV0pKQotICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFT3BFeHA6CisgICAgICAgICAgICAgICAgZm9s
ZEZsb2F0VHlwZVVuYXJ5KG9wZXJhbmRBcnJheVtpXSwgJmV4cGYsICZyZXN1bHRBcnJheVtpXSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBjYXNlIEVPcExvZzoKLSAgICAg
ICAgICAgIC8vIEZvciBsb2coeCksIHJlc3VsdHMgYXJlIHVuZGVmaW5lZCBpZiB4IDw9IDAsIHdl
IGFyZSBjaG9vc2luZyB0byBzZXQgcmVzdWx0IHRvIDAuCi0gICAgICAgICAgICBpZiAoZ2V0VHlw
ZSgpLmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0ICYmIG9wZXJhbmRBcnJheVtpXS5nZXRGQ29u
c3QoKSA8PSAwLjBmKQotICAgICAgICAgICAgICAgIFVuZGVmaW5lZENvbnN0YW50Rm9sZGluZ0Vy
cm9yKGdldExpbmUoKSwgb3AsIGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSwgaW5mb1NpbmssICZy
ZXN1bHRBcnJheVtpXSk7Ci0gICAgICAgICAgICBlbHNlIGlmICghZm9sZEZsb2F0VHlwZVVuYXJ5
KG9wZXJhbmRBcnJheVtpXSwgJmxvZ2YsIGluZm9TaW5rLCAmcmVzdWx0QXJyYXlbaV0pKQotICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIEVPcExvZzoKKyAgICAgICAgICAgICAgICAvLyBGb3IgbG9nKHgpLCByZXN1bHRz
IGFyZSB1bmRlZmluZWQgaWYgeCA8PSAwLCB3ZSBhcmUgY2hvb3NpbmcgdG8gc2V0IHJlc3VsdCB0
byAwLgorICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kQXJyYXlbaV0uZ2V0RkNvbnN0KCkgPD0g
MC4wZikKKyAgICAgICAgICAgICAgICAgICAgVW5kZWZpbmVkQ29uc3RhbnRGb2xkaW5nRXJyb3Io
Z2V0TGluZSgpLCBvcCwgZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWFnbm9zdGljcywgJnJlc3VsdEFy
cmF5W2ldKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZvbGRG
bG9hdFR5cGVVbmFyeShvcGVyYW5kQXJyYXlbaV0sICZsb2dmLCAmcmVzdWx0QXJyYXlbaV0pOwor
ICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgY2FzZSBFT3BFeHAyOgotICAgICAg
ICAgICAgaWYgKCFmb2xkRmxvYXRUeXBlVW5hcnkob3BlcmFuZEFycmF5W2ldLCAmZXhwMmYsIGlu
Zm9TaW5rLCAmcmVzdWx0QXJyYXlbaV0pKQotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEVPcEV4cDI6CisgICAgICAg
ICAgICAgICAgZm9sZEZsb2F0VHlwZVVuYXJ5KG9wZXJhbmRBcnJheVtpXSwgJmV4cDJmLCAmcmVz
dWx0QXJyYXlbaV0pOworICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgY2FzZSBF
T3BMb2cyOgotICAgICAgICAgICAgLy8gRm9yIGxvZzIoeCksIHJlc3VsdHMgYXJlIHVuZGVmaW5l
ZCBpZiB4IDw9IDAsIHdlIGFyZSBjaG9vc2luZyB0byBzZXQgcmVzdWx0IHRvIDAuCi0gICAgICAg
ICAgICAvLyBBbmQgbG9nMmYgaXMgbm90IGF2YWlsYWJsZSBvbiBzb21lIHBsYXJmb3JtcyBsaWtl
IG9sZCBhbmRyb2lkLCBzbyBqdXN0IHVzaW5nIGxvZyh4KS9sb2coMikgaGVyZS4KLSAgICAgICAg
ICAgIGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQgJiYgb3BlcmFuZEFy
cmF5W2ldLmdldEZDb25zdCgpIDw9IDAuMGYpCi0gICAgICAgICAgICAgICAgVW5kZWZpbmVkQ29u
c3RhbnRGb2xkaW5nRXJyb3IoZ2V0TGluZSgpLCBvcCwgZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgp
LCBpbmZvU2luaywgJnJlc3VsdEFycmF5W2ldKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFmb2xk
RmxvYXRUeXBlVW5hcnkob3BlcmFuZEFycmF5W2ldLCAmbG9nZiwgaW5mb1NpbmssICZyZXN1bHRB
cnJheVtpXSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KHJlc3VsdEFycmF5
W2ldLmdldEZDb25zdCgpIC8gbG9nZigyLjBmKSk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgRU9wTG9nMjoKKyAgICAgICAgICAgICAgICAvLyBGb3IgbG9nMih4KSwgcmVz
dWx0cyBhcmUgdW5kZWZpbmVkIGlmIHggPD0gMCwgd2UgYXJlIGNob29zaW5nIHRvIHNldCByZXN1
bHQgdG8gMC4KKyAgICAgICAgICAgICAgICAvLyBBbmQgbG9nMmYgaXMgbm90IGF2YWlsYWJsZSBv
biBzb21lIHBsYXJmb3JtcyBsaWtlIG9sZCBhbmRyb2lkLCBzbyBqdXN0IHVzaW5nCisgICAgICAg
ICAgICAgICAgLy8gbG9nKHgpL2xvZygyKSBoZXJlLgorICAgICAgICAgICAgICAgIGlmIChvcGVy
YW5kQXJyYXlbaV0uZ2V0RkNvbnN0KCkgPD0gMC4wZikKKyAgICAgICAgICAgICAgICAgICAgVW5k
ZWZpbmVkQ29uc3RhbnRGb2xkaW5nRXJyb3IoZ2V0TGluZSgpLCBvcCwgZ2V0VHlwZSgpLmdldEJh
c2ljVHlwZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkaWFnbm9zdGljcywgJnJlc3VsdEFycmF5W2ldKTsKKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBmb2xkRmxvYXRUeXBlVW5h
cnkob3BlcmFuZEFycmF5W2ldLCAmbG9nZiwgJnJlc3VsdEFycmF5W2ldKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KHJlc3VsdEFycmF5W2ldLmdldEZDb25z
dCgpIC8gbG9nZigyLjBmKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJy
ZWFrOwogCi0gICAgICAgICAgY2FzZSBFT3BTcXJ0OgotICAgICAgICAgICAgLy8gRm9yIHNxcnQo
eCksIHJlc3VsdHMgYXJlIHVuZGVmaW5lZCBpZiB4IDwgMCwgd2UgYXJlIGNob29zaW5nIHRvIHNl
dCByZXN1bHQgdG8gMC4KLSAgICAgICAgICAgIGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkg
PT0gRWJ0RmxvYXQgJiYgb3BlcmFuZEFycmF5W2ldLmdldEZDb25zdCgpIDwgMC4wZikKLSAgICAg
ICAgICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJvcihnZXRMaW5lKCksIG9wLCBn
ZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCksIGluZm9TaW5rLCAmcmVzdWx0QXJyYXlbaV0pOwotICAg
ICAgICAgICAgZWxzZSBpZiAoIWZvbGRGbG9hdFR5cGVVbmFyeShvcGVyYW5kQXJyYXlbaV0sICZz
cXJ0ZiwgaW5mb1NpbmssICZyZXN1bHRBcnJheVtpXSkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRU9wU3FydDoK
KyAgICAgICAgICAgICAgICAvLyBGb3Igc3FydCh4KSwgcmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlm
IHggPCAwLCB3ZSBhcmUgY2hvb3NpbmcgdG8gc2V0IHJlc3VsdCB0byAwLgorICAgICAgICAgICAg
ICAgIGlmIChvcGVyYW5kQXJyYXlbaV0uZ2V0RkNvbnN0KCkgPCAwLjBmKQorICAgICAgICAgICAg
ICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJvcihnZXRMaW5lKCksIG9wLCBnZXRU
eXBlKCkuZ2V0QmFzaWNUeXBlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRpYWdub3N0aWNzLCAmcmVzdWx0QXJyYXlbaV0pOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZm9sZEZsb2F0VHlwZVVuYXJ5KG9wZXJh
bmRBcnJheVtpXSwgJnNxcnRmLCAmcmVzdWx0QXJyYXlbaV0pOworICAgICAgICAgICAgICAgIGJy
ZWFrOwogCi0gICAgICAgICAgY2FzZSBFT3BJbnZlcnNlU3FydDoKLSAgICAgICAgICAgIC8vIFRo
ZXJlIGlzIG5vIHN0ZGxpYiBidWlsdC1pbiBmdW5jdGlvbiBlcXVhdmFsZW50IGZvciBHTEVTIGJ1
aWx0LWluIGludmVyc2VzcXJ0KCksCi0gICAgICAgICAgICAvLyBzbyBnZXR0aW5nIHRoZSBzcXVh
cmUgcm9vdCBmaXJzdCB1c2luZyBidWlsdGluIGZ1bmN0aW9uIHNxcnQoKSBhbmQgdGhlbiB0YWtp
bmcgaXRzIGludmVyc2UuCi0gICAgICAgICAgICAvLyBBbHNvLCBmb3IgaW52ZXJzZXNxcnQoeCks
IHJlc3VsdHMgYXJlIHVuZGVmaW5lZCBpZiB4IDw9IDAsIHdlIGFyZSBjaG9vc2luZyB0byBzZXQg
cmVzdWx0IHRvIDAuCi0gICAgICAgICAgICBpZiAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpID09
IEVidEZsb2F0ICYmIG9wZXJhbmRBcnJheVtpXS5nZXRGQ29uc3QoKSA8PSAwLjBmKQotICAgICAg
ICAgICAgICAgIFVuZGVmaW5lZENvbnN0YW50Rm9sZGluZ0Vycm9yKGdldExpbmUoKSwgb3AsIGdl
dFR5cGUoKS5nZXRCYXNpY1R5cGUoKSwgaW5mb1NpbmssICZyZXN1bHRBcnJheVtpXSk7Ci0gICAg
ICAgICAgICBlbHNlIGlmICghZm9sZEZsb2F0VHlwZVVuYXJ5KG9wZXJhbmRBcnJheVtpXSwgJnNx
cnRmLCBpbmZvU2luaywgJnJlc3VsdEFycmF5W2ldKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtp
XS5zZXRGQ29uc3QoMS4wZiAvIHJlc3VsdEFycmF5W2ldLmdldEZDb25zdCgpKTsKLSAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFT3BJbnZlcnNlU3FydDoKKyAgICAgICAgICAg
ICAgICAvLyBUaGVyZSBpcyBubyBzdGRsaWIgYnVpbHQtaW4gZnVuY3Rpb24gZXF1YXZhbGVudCBm
b3IgR0xFUyBidWlsdC1pbiBpbnZlcnNlc3FydCgpLAorICAgICAgICAgICAgICAgIC8vIHNvIGdl
dHRpbmcgdGhlIHNxdWFyZSByb290IGZpcnN0IHVzaW5nIGJ1aWx0aW4gZnVuY3Rpb24gc3FydCgp
IGFuZCB0aGVuIHRha2luZworICAgICAgICAgICAgICAgIC8vIGl0cyBpbnZlcnNlLgorICAgICAg
ICAgICAgICAgIC8vIEFsc28sIGZvciBpbnZlcnNlc3FydCh4KSwgcmVzdWx0cyBhcmUgdW5kZWZp
bmVkIGlmIHggPD0gMCwgd2UgYXJlIGNob29zaW5nIHRvIHNldAorICAgICAgICAgICAgICAgIC8v
IHJlc3VsdCB0byAwLgorICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kQXJyYXlbaV0uZ2V0RkNv
bnN0KCkgPD0gMC4wZikKKyAgICAgICAgICAgICAgICAgICAgVW5kZWZpbmVkQ29uc3RhbnRGb2xk
aW5nRXJyb3IoZ2V0TGluZSgpLCBvcCwgZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWFnbm9zdGljcywg
JnJlc3VsdEFycmF5W2ldKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBmb2xkRmxvYXRUeXBlVW5hcnkob3BlcmFuZEFycmF5W2ld
LCAmc3FydGYsICZyZXN1bHRBcnJheVtpXSk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFy
cmF5W2ldLnNldEZDb25zdCgxLjBmIC8gcmVzdWx0QXJyYXlbaV0uZ2V0RkNvbnN0KCkpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgIGNhc2Ug
RU9wVmVjdG9yTG9naWNhbE5vdDoKLSAgICAgICAgICAgIGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNU
eXBlKCkgPT0gRWJ0Qm9vbCkKLSAgICAgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgRU9wVmVj
dG9yTG9naWNhbE5vdDoKKyAgICAgICAgICAgICAgICBBU1NFUlQoZ2V0VHlwZSgpLmdldEJhc2lj
VHlwZSgpID09IEVidEJvb2wpOwogICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJD
b25zdCghb3BlcmFuZEFycmF5W2ldLmdldEJDb25zdCgpKTsKICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZSgKLSAg
ICAgICAgICAgICAgICBFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLAotICAgICAgICAg
ICAgICAgICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7Ci0gICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICAgIGNhc2UgRU9wTm9ybWFsaXplOgot
ICAgICAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCkKKyAg
ICAgICAgICAgIGNhc2UgRU9wTm9ybWFsaXplOgogICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGZsb2F0IHggPSBvcGVyYW5kQXJyYXlbaV0uZ2V0RkNvbnN0KCk7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCk7CisgICAgICAg
ICAgICAgICAgZmxvYXQgeCAgICAgID0gb3BlcmFuZEFycmF5W2ldLmdldEZDb25zdCgpOwogICAg
ICAgICAgICAgICAgIGZsb2F0IGxlbmd0aCA9IFZlY3Rvckxlbmd0aChvcGVyYW5kQXJyYXksIG9i
amVjdFNpemUpOwogICAgICAgICAgICAgICAgIGlmIChsZW5ndGgpCiAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25zdCh4IC8gbGVuZ3RoKTsKICAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIFVuZGVmaW5lZENvbnN0YW50Rm9sZGluZ0Vycm9y
KGdldExpbmUoKSwgb3AsIGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSwgaW5mb1NpbmssCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXN1bHRBcnJh
eVtpXSk7CisgICAgICAgICAgICAgICAgICAgIFVuZGVmaW5lZENvbnN0YW50Rm9sZGluZ0Vycm9y
KGdldExpbmUoKSwgb3AsIGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhZ25vc3RpY3MsICZyZXN1bHRB
cnJheVtpXSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUo
KSwgIlVuYXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVkIGludG8gY29uc3RhbnQiKTsKLSAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgICAgY2FzZSBFT3BERmR4OgotICAgICAgICAg
IGNhc2UgRU9wREZkeToKLSAgICAgICAgICBjYXNlIEVPcEZ3aWR0aDoKLSAgICAgICAgICAgIGlm
IChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQpCi0gICAgICAgICAgICB7Cisg
ICAgICAgICAgICBjYXNlIEVPcERGZHg6CisgICAgICAgICAgICBjYXNlIEVPcERGZHk6CisgICAg
ICAgICAgICBjYXNlIEVPcEZ3aWR0aDoKKyAgICAgICAgICAgICAgICBBU1NFUlQoZ2V0VHlwZSgp
LmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0KTsKICAgICAgICAgICAgICAgICAvLyBEZXJpdmF0
aXZlcyBvZiBjb25zdGFudCBhcmd1bWVudHMgc2hvdWxkIGJlIDAuCiAgICAgICAgICAgICAgICAg
cmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KDAuMGYpOwogICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJ
bnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRlZCBpbnRv
IGNvbnN0YW50Iik7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTE4ODQsMjYgKzIwNjksMTggQEAKICAgICByZXR1cm4gcmVzdWx0QXJyYXk7CiB9CiAKLWJvb2wg
VEludGVybUNvbnN0YW50VW5pb246OmZvbGRGbG9hdFR5cGVVbmFyeShjb25zdCBUQ29uc3RhbnRV
bmlvbiAmcGFyYW1ldGVyLCBGbG9hdFR5cGVVbmFyeUZ1bmMgYnVpbHRpbkZ1bmMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEluZm9TaW5rICZpbmZvU2lu
aywgVENvbnN0YW50VW5pb24gKnJlc3VsdCkgY29uc3QKK3ZvaWQgVEludGVybUNvbnN0YW50VW5p
b246OmZvbGRGbG9hdFR5cGVVbmFyeShjb25zdCBUQ29uc3RhbnRVbmlvbiAmcGFyYW1ldGVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0VHlwZVVu
YXJ5RnVuYyBidWlsdGluRnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUQ29uc3RhbnRVbmlvbiAqcmVzdWx0KSBjb25zdAogewogICAgIEFTU0VSVChi
dWlsdGluRnVuYyk7CiAKLSAgICBpZiAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpID09IEVidEZs
b2F0KQotICAgIHsKLSAgICAgICAgcmVzdWx0LT5zZXRGQ29uc3QoYnVpbHRpbkZ1bmMocGFyYW1l
dGVyLmdldEZDb25zdCgpKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGlu
Zm9TaW5rLmluZm8ubWVzc2FnZSgKLSAgICAgICAgRVByZWZpeEludGVybmFsRXJyb3IsIGdldExp
bmUoKSwKLSAgICAgICAgIlVuYXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVkIGludG8gY29uc3RhbnQi
KTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUo
KSA9PSBFYnRGbG9hdCk7CisgICAgcmVzdWx0LT5zZXRGQ29uc3QoYnVpbHRpbkZ1bmMocGFyYW1l
dGVyLmdldEZDb25zdCgpKSk7CiB9CiAKIC8vIHN0YXRpYwotVENvbnN0YW50VW5pb24gKlRJbnRl
cm1Db25zdGFudFVuaW9uOjpGb2xkQWdncmVnYXRlQ29uc3RydWN0b3IoVEludGVybUFnZ3JlZ2F0
ZSAqYWdncmVnYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVEluZm9TaW5rICZpbmZvU2luaykKK1RDb25zdGFudFVuaW9u
ICpUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Rm9sZEFnZ3JlZ2F0ZUNvbnN0cnVjdG9yKFRJbnRlcm1B
Z2dyZWdhdGUgKmFnZ3JlZ2F0ZSkKIHsKICAgICBBU1NFUlQoYWdncmVnYXRlLT5nZXRTZXF1ZW5j
ZSgpLT5zaXplKCkgPiAwdSk7CiAgICAgc2l6ZV90IHJlc3VsdFNpemUgICAgICAgICAgID0gYWdn
cmVnYXRlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOwpAQCAtMjAwMiw3ICsyMTc5LDggQEAK
IH0KIAogLy8gc3RhdGljCi1UQ29uc3RhbnRVbmlvbiAqVEludGVybUNvbnN0YW50VW5pb246OkZv
bGRBZ2dyZWdhdGVCdWlsdEluKFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3JlZ2F0ZSwgVEluZm9TaW5r
ICZpbmZvU2luaykKK1RDb25zdGFudFVuaW9uICpUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Rm9sZEFn
Z3JlZ2F0ZUJ1aWx0SW4oVEludGVybUFnZ3JlZ2F0ZSAqYWdncmVnYXRlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURGlhZ25vc3Rp
Y3MgKmRpYWdub3N0aWNzKQogewogICAgIFRPcGVyYXRvciBvcCA9IGFnZ3JlZ2F0ZS0+Z2V0T3Ao
KTsKICAgICBUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlID0gYWdncmVnYXRlLT5nZXRTZXF1ZW5j
ZSgpOwpAQCAtMjAyOCw3ICsyMjA2LDcgQEAKICAgICAgICAgICAgIG1heE9iamVjdFNpemUgPSBv
YmplY3RTaXplc1tpXTsKICAgICB9CiAKLSAgICBpZiAoISgqc2VxdWVuY2UpWzBdLT5nZXRBc1R5
cGVkKCktPmlzTWF0cml4KCkpCisgICAgaWYgKCEoKnNlcXVlbmNlKVswXS0+Z2V0QXNUeXBlZCgp
LT5pc01hdHJpeCgpICYmIGFnZ3JlZ2F0ZS0+Z2V0T3AoKSAhPSBFT3BPdXRlclByb2R1Y3QpCiAg
ICAgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBhcmFtc0NvdW50OyBp
KyspCiAgICAgICAgICAgICBpZiAob2JqZWN0U2l6ZXNbaV0gIT0gbWF4T2JqZWN0U2l6ZSkKQEAg
LTIwNDMsNjkgKzIyMjEsNjAgQEAKICAgICAgICAgLy8KICAgICAgICAgc3dpdGNoIChvcCkKICAg
ICAgICAgewotICAgICAgICAgIGNhc2UgRU9wQXRhbjoKKyAgICAgICAgICAgIGNhc2UgRU9wQXRh
bjoKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoYmFzaWNUeXBlID09IEVidEZs
b2F0KQorICAgICAgICAgICAgICAgIEFTU0VSVChiYXNpY1R5cGUgPT0gRWJ0RmxvYXQpOworICAg
ICAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNp
emVdOworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6
ZTsgaSsrKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJy
YXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07Ci0gICAgICAgICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQotICAgICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB5ID0gdW5pb25BcnJh
eXNbMF1baV0uZ2V0RkNvbnN0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB4ID0g
dW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAv
LyBSZXN1bHRzIGFyZSB1bmRlZmluZWQgaWYgeCBhbmQgeSBhcmUgYm90aCAwLgotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHggPT0gMC4wZiAmJiB5ID09IDAuMGYpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVW5kZWZpbmVkQ29uc3RhbnRGb2xkaW5nRXJyb3IobG9jLCBvcCwgYmFz
aWNUeXBlLCBpbmZvU2luaywgJnJlc3VsdEFycmF5W2ldKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRG
Q29uc3QoYXRhbjJmKHksIHgpKTsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICBmbG9hdCB5ID0gdW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCk7CisgICAgICAg
ICAgICAgICAgICAgIGZsb2F0IHggPSB1bmlvbkFycmF5c1sxXVtpXS5nZXRGQ29uc3QoKTsKKyAg
ICAgICAgICAgICAgICAgICAgLy8gUmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmIHggYW5kIHkgYXJl
IGJvdGggMC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKHggPT0gMC4wZiAmJiB5ID09IDAuMGYp
CisgICAgICAgICAgICAgICAgICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJvcihs
b2MsIG9wLCBiYXNpY1R5cGUsIGRpYWdub3N0aWNzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3VsdEFycmF5W2ldKTsKKyAgICAgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0u
c2V0RkNvbnN0KGF0YW4yZih5LCB4KSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAg
ICAgY2FzZSBFT3BQb3c6CisgICAgICAgICAgICBjYXNlIEVPcFBvdzoKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBpZiAoYmFzaWNUeXBlID09IEVidEZsb2F0KQorICAgICAgICAgICAg
ICAgIEFTU0VSVChiYXNpY1R5cGUgPT0gRWJ0RmxvYXQpOworICAgICAgICAgICAgICAgIHJlc3Vs
dEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNpemVdOworICAgICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50
VW5pb25bbWF4T2JqZWN0U2l6ZV07Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBmbG9hdCB4ID0gdW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB5ID0gdW5pb25BcnJheXNbMV1baV0u
Z2V0RkNvbnN0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXN1bHRzIGFyZSB1bmRl
ZmluZWQgaWYgeCA8IDAuCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXN1bHRzIGFyZSB1
bmRlZmluZWQgaWYgeCA9IDAgYW5kIHkgPD0gMC4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICh4IDwgMC4wZikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmRlZmluZWRDb25zdGFu
dEZvbGRpbmdFcnJvcihsb2MsIG9wLCBiYXNpY1R5cGUsIGluZm9TaW5rLCAmcmVzdWx0QXJyYXlb
aV0pOwotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoeCA9PSAwLjBmICYmIHkgPD0g
MC4wZikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRp
bmdFcnJvcihsb2MsIG9wLCBiYXNpY1R5cGUsIGluZm9TaW5rLCAmcmVzdWx0QXJyYXlbaV0pOwot
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdEFycmF5W2ldLnNldEZDb25zdChwb3dmKHgsIHkpKTsKLSAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBmbG9hdCB4ID0gdW5pb25BcnJheXNbMF1baV0uZ2V0
RkNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IHkgPSB1bmlvbkFycmF5c1sxXVtp
XS5nZXRGQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gUmVzdWx0cyBhcmUgdW5kZWZp
bmVkIGlmIHggPCAwLgorICAgICAgICAgICAgICAgICAgICAvLyBSZXN1bHRzIGFyZSB1bmRlZmlu
ZWQgaWYgeCA9IDAgYW5kIHkgPD0gMC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKHggPCAwLjBm
KQorICAgICAgICAgICAgICAgICAgICAgICAgVW5kZWZpbmVkQ29uc3RhbnRGb2xkaW5nRXJyb3Io
bG9jLCBvcCwgYmFzaWNUeXBlLCBkaWFnbm9zdGljcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXN1bHRBcnJheVtpXSk7CisgICAgICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKHggPT0gMC4wZiAmJiB5IDw9IDAuMGYpCisgICAgICAgICAg
ICAgICAgICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJvcihsb2MsIG9wLCBiYXNp
Y1R5cGUsIGRpYWdub3N0aWNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJnJlc3VsdEFycmF5W2ldKTsKKyAgICAgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KHBv
d2YoeCwgeSkpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgIGNhc2UgRU9wTW9k
OgorICAgICAgICAgICAgY2FzZSBFT3BNb2Q6CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgaWYgKGJhc2ljVHlwZSA9PSBFYnRGbG9hdCkKKyAgICAgICAgICAgICAgICBBU1NFUlQoYmFz
aWNUeXBlID09IEVidEZsb2F0KTsKKyAgICAgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBU
Q29uc3RhbnRVbmlvblttYXhPYmplY3RTaXplXTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1heE9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVj
dFNpemVdOwotICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9i
amVjdFNpemU7IGkrKykKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICAgICAgZmxvYXQgeCA9IHVuaW9uQXJyYXlzWzBdW2ldLmdldEZDb25zdCgpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgZmxvYXQgeSA9IHVuaW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KHggLSB5ICog
Zmxvb3JmKHggLyB5KSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgZmxvYXQgeCA9IHVuaW9uQXJyYXlzWzBdW2ldLmdldEZDb25zdCgpOworICAgICAgICAgICAg
ICAgICAgICBmbG9hdCB5ID0gdW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0KCk7CisgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25zdCh4IC0geSAqIGZsb29yZih4IC8g
eSkpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgIGNhc2UgRU9wTWluOgorICAg
ICAgICAgICAgY2FzZSBFT3BNaW46CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgcmVz
dWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07CiAgICAgICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhPYmplY3RTaXplOyBpKyspCkBAIC0yMTEy
LDI0ICsyMjgxLDI3IEBACiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBz
d2l0Y2ggKGJhc2ljVHlwZSkKICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJh
eVtpXS5zZXRGQ29uc3Qoc3RkOjptaW4odW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCksIHVu
aW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgpKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldElDb25zdChzdGQ6Om1pbih1bmlvbkFycmF5c1sw
XVtpXS5nZXRJQ29uc3QoKSwgdW5pb25BcnJheXNbMV1baV0uZ2V0SUNvbnN0KCkpKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0
VUludDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldFVDb25zdChz
dGQ6Om1pbih1bmlvbkFycmF5c1swXVtpXS5nZXRVQ29uc3QoKSwgdW5pb25BcnJheXNbMV1baV0u
Z2V0VUNvbnN0KCkpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJM
RSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIEVidEZsb2F0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFy
cmF5W2ldLnNldEZDb25zdChzdGQ6Om1pbih1bmlvbkFycmF5c1swXVtpXS5nZXRGQ29uc3QoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0KCkpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50Ogor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldElDb25zdChzdGQ6
Om1pbih1bmlvbkFycmF5c1swXVtpXS5nZXRJQ29uc3QoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheXNbMV1b
aV0uZ2V0SUNvbnN0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0VUludDoKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRVQ29uc3Qoc3RkOjptaW4odW5pb25BcnJheXNbMF1b
aV0uZ2V0VUNvbnN0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldFVDb25zdCgpKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgIGNhc2UgRU9wTWF4OgorICAgICAgICAg
ICAgY2FzZSBFT3BNYXg6CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgcmVzdWx0QXJy
YXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07CiAgICAgICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhPYmplY3RTaXplOyBpKyspCkBAIC0yMTM2LDM3ICsy
MzA4LDM4IEBACiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBzd2l0Y2gg
KGJhc2ljVHlwZSkKICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5z
ZXRGQ29uc3Qoc3RkOjptYXgodW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCksIHVuaW9uQXJy
YXlzWzFdW2ldLmdldEZDb25zdCgpKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdEFycmF5W2ldLnNldElDb25zdChzdGQ6Om1heCh1bmlvbkFycmF5c1swXVtpXS5n
ZXRJQ29uc3QoKSwgdW5pb25BcnJheXNbMV1baV0uZ2V0SUNvbnN0KCkpKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0VUludDoK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldFVDb25zdChzdGQ6Om1h
eCh1bmlvbkFycmF5c1swXVtpXS5nZXRVQ29uc3QoKSwgdW5pb25BcnJheXNbMV1baV0uZ2V0VUNv
bnN0KCkpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBj
YXNlIEVidEZsb2F0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ld
LnNldEZDb25zdChzdGQ6Om1heCh1bmlvbkFycmF5c1swXVtpXS5nZXRGQ29uc3QoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldElDb25zdChzdGQ6Om1heCh1
bmlvbkFycmF5c1swXVtpXS5nZXRJQ29uc3QoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheXNbMV1baV0uZ2V0
SUNvbnN0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgRWJ0VUludDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHRBcnJheVtpXS5zZXRVQ29uc3Qoc3RkOjptYXgodW5pb25BcnJheXNbMF1baV0uZ2V0
VUNvbnN0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldFVDb25zdCgpKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBicmVhazsKIAotICAgICAgICAgIGNhc2UgRU9wU3RlcDoKKyAgICAgICAgICAgIGNh
c2UgRU9wU3RlcDoKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoYmFzaWNUeXBl
ID09IEVidEZsb2F0KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmVz
dWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07Ci0gICAgICAgICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQotICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KHVuaW9uQXJyYXlz
WzFdW2ldLmdldEZDb25zdCgpIDwgdW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCkgPyAwLjBm
IDogMS4wZik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYmFz
aWNUeXBlID09IEVidEZsb2F0KTsKKyAgICAgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBU
Q29uc3RhbnRVbmlvblttYXhPYmplY3RTaXplXTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1heE9iamVjdFNpemU7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgcmVz
dWx0QXJyYXlbaV0uc2V0RkNvbnN0KAorICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJh
eXNbMV1baV0uZ2V0RkNvbnN0KCkgPCB1bmlvbkFycmF5c1swXVtpXS5nZXRGQ29uc3QoKSA/IDAu
MGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAxLjBmKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAg
Y2FzZSBFT3BMZXNzVGhhbjoKKyAgICAgICAgICAgIGNhc2UgRU9wTGVzc1RoYW46CiAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25b
bWF4T2JqZWN0U2l6ZV07CiAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
YXhPYmplY3RTaXplOyBpKyspCkBAIC0yMTczLDI0ICsyMzQ2LDI3IEBACiAgICAgICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGJhc2ljVHlwZSkKICAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5pb25BcnJheXNbMF1b
aV0uZ2V0RkNvbnN0KCkgPCB1bmlvbkFycmF5c1sxXVtpXS5nZXRGQ29uc3QoKSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidElu
dDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlv
bkFycmF5c1swXVtpXS5nZXRJQ29uc3QoKSA8IHVuaW9uQXJyYXlzWzFdW2ldLmdldElDb25zdCgp
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgRWJ0VUludDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNl
dEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRVQ29uc3QoKSA8IHVuaW9uQXJyYXlzWzFdW2ld
LmdldFVDb25zdCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJM
RSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIEVidEZsb2F0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFy
cmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRGQ29uc3QoKSA8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlz
WzFdW2ldLmdldEZDb25zdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRJ
Q29uc3QoKSA8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldElDb25zdCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0VUludDoK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5p
b25BcnJheXNbMF1baV0uZ2V0VUNvbnN0KCkgPAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5c1sxXVtpXS5nZXRVQ29uc3QoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgIGNhc2UgRU9wTGVzc1RoYW5FcXVh
bDoKKyAgICAgICAgICAgIGNhc2UgRU9wTGVzc1RoYW5FcXVhbDoKICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblttYXhPYmplY3RT
aXplXTsKICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9iamVjdFNp
emU7IGkrKykKQEAgLTIxOTcsMjQgKzIzNzMsMjcgQEAKICAgICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgICAgIHN3aXRjaCAoYmFzaWNUeXBlKQogICAgICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRGQ29u
c3QoKSA8PSB1bmlvbkFycmF5c1sxXVtpXS5nZXRGQ29uc3QoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDoKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1sw
XVtpXS5nZXRJQ29uc3QoKSA8PSB1bmlvbkFycmF5c1sxXVtpXS5nZXRJQ29uc3QoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVi
dFVJbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3Qo
dW5pb25BcnJheXNbMF1baV0uZ2V0VUNvbnN0KCkgPD0gdW5pb25BcnJheXNbMV1baV0uZ2V0VUNv
bnN0KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgRWJ0RmxvYXQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0u
c2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdldEZDb25zdCgpIDw9CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ld
LmdldEZDb25zdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRJQ29uc3Qo
KSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bmlvbkFycmF5c1sxXVtpXS5nZXRJQ29uc3QoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidFVJbnQ6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJy
YXlzWzBdW2ldLmdldFVDb25zdCgpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldFVDb25zdCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbjoKKyAg
ICAgICAgICAgIGNhc2UgRU9wR3JlYXRlclRoYW46CiAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07CiAg
ICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhPYmplY3RTaXplOyBpKysp
CkBAIC0yMjIxLDI0ICsyNDAwLDI2IEBACiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgICAgICBzd2l0Y2ggKGJhc2ljVHlwZSkKICAgICAgICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCkgPiB1
bmlvbkFycmF5c1sxXVtpXS5nZXRGQ29uc3QoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRJ
Q29uc3QoKSA+IHVuaW9uQXJyYXlzWzFdW2ldLmdldElDb25zdCgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0VUludDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5
c1swXVtpXS5nZXRVQ29uc3QoKSA+IHVuaW9uQXJyYXlzWzFdW2ldLmdldFVDb25zdCgpKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEZsb2F0
OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1
bmlvbkFycmF5c1swXVtpXS5nZXRGQ29uc3QoKSA+CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFy
cmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRJQ29uc3QoKSA+CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlz
WzFdW2ldLmdldElDb25zdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0VUludDoKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0
VUNvbnN0KCkgPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bmlvbkFycmF5c1sxXVtpXS5nZXRVQ29uc3QoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICAgIGNhc2UgRU9wR3JlYXRlclRoYW5FcXVhbDoKKyAgICAgICAgICAg
IGNhc2UgRU9wR3JlYXRlclRoYW5FcXVhbDoKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblttYXhPYmplY3RTaXplXTsKICAgICAg
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9iamVjdFNpemU7IGkrKykKQEAg
LTIyNDUsMjQgKzI0MjYsMjcgQEAKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
ICAgIHN3aXRjaCAoYmFzaWNUeXBlKQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRGQ29uc3QoKSA+PSB1bmlv
bkFycmF5c1sxXVtpXS5nZXRGQ29uc3QoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRJQ29u
c3QoKSA+PSB1bmlvbkFycmF5c1sxXVtpXS5nZXRJQ29uc3QoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidFVJbnQ6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5pb25BcnJheXNb
MF1baV0uZ2V0VUNvbnN0KCkgPj0gdW5pb25BcnJheXNbMV1baV0uZ2V0VUNvbnN0KCkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVu
aW9uQXJyYXlzWzBdW2ldLmdldEZDb25zdCgpID49CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFy
cmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRJQ29uc3QoKSA+PQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5
c1sxXVtpXS5nZXRJQ29uc3QoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidFVJbnQ6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdl
dFVDb25zdCgpID49CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldFVDb25zdCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgY2Fz
ZSBFT3BWZWN0b3JFcXVhbDoKKyAgICAgICAgICAgIGNhc2UgRU9wVmVjdG9yRXF1YWw6CiAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5p
b25bbWF4T2JqZWN0U2l6ZV07CiAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtYXhPYmplY3RTaXplOyBpKyspCkBAIC0yMjY5LDI3ICsyNDUzLDMxIEBACiAgICAgICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGJhc2ljVHlwZSkKICAgICAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5pb25BcnJheXNb
MF1baV0uZ2V0RkNvbnN0KCkgPT0gdW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0KCkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgY2FzZSBF
YnRJbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3Qo
dW5pb25BcnJheXNbMF1baV0uZ2V0SUNvbnN0KCkgPT0gdW5pb25BcnJheXNbMV1baV0uZ2V0SUNv
bnN0KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBFYnRVSW50OgotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlb
aV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdldFVDb25zdCgpID09IHVuaW9uQXJyYXlz
WzFdW2ldLmdldFVDb25zdCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRCQ29uc3QoKSA9
PSB1bmlvbkFycmF5c1sxXVtpXS5nZXRCQ29uc3QoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAg
ICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0
RkNvbnN0KCkgPT0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0KCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVu
aW9uQXJyYXlzWzBdW2ldLmdldElDb25zdCgpID09CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldElDb25zdCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgRWJ0VUludDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRB
cnJheVtpXS5zZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0VUNvbnN0KCkgPT0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJh
eXNbMV1baV0uZ2V0VUNvbnN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRCb29sOgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5n
ZXRCQ29uc3QoKSA9PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bmlvbkFycmF5c1sxXVtpXS5nZXRCQ29uc3QoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBicmVhazsKIAotICAgICAgICAgIGNhc2UgRU9wVmVjdG9yTm90RXF1YWw6CisgICAgICAgICAg
ICBjYXNlIEVPcFZlY3Rvck5vdEVxdWFsOgogICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
IHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNpemVdOwogICAgICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQpAQCAt
MjI5NiwzMSArMjQ4NCwzNSBAQAogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg
ICAgc3dpdGNoIChiYXNpY1R5cGUpCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgICBjYXNlIEVidEZsb2F0OgotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdldEZDb25zdCgpICE9IHVuaW9u
QXJyYXlzWzFdW2ldLmdldEZDb25zdCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgotICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdldElDb25z
dCgpICE9IHVuaW9uQXJyYXlzWzFdW2ldLmdldElDb25zdCgpKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0VUludDoKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1sw
XVtpXS5nZXRVQ29uc3QoKSAhPSB1bmlvbkFycmF5c1sxXVtpXS5nZXRVQ29uc3QoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVi
dEJvb2w6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3Qo
dW5pb25BcnJheXNbMF1baV0uZ2V0QkNvbnN0KCkgIT0gdW5pb25BcnJheXNbMV1baV0uZ2V0QkNv
bnN0KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgRWJ0RmxvYXQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0u
c2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdldEZDb25zdCgpICE9CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ld
LmdldEZDb25zdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRJQ29uc3Qo
KSAhPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bmlvbkFycmF5c1sxXVtpXS5nZXRJQ29uc3QoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidFVJbnQ6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJy
YXlzWzBdW2ldLmdldFVDb25zdCgpICE9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldFVDb25zdCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgRWJ0Qm9vbDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtp
XS5zZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0QkNvbnN0KCkgIT0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheXNbMV1b
aV0uZ2V0QkNvbnN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBjYXNl
IEVPcERpc3RhbmNlOgotICAgICAgICAgICAgaWYgKGJhc2ljVHlwZSA9PSBFYnRGbG9hdCkKKyAg
ICAgICAgICAgIGNhc2UgRU9wRGlzdGFuY2U6CiAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKGJhc2ljVHlwZSA9PSBFYnRGbG9hdCk7CiAgICAgICAgICAgICAgICAgVENvbnN0
YW50VW5pb24gKmRpc3RhbmNlQXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6
ZV07Ci0gICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb24oKTsK
KyAgICAgICAgICAgICAgICByZXN1bHRBcnJheSAgICAgICAgICAgICAgICAgICA9IG5ldyBUQ29u
c3RhbnRVbmlvbigpOwogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4
T2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg
ZmxvYXQgeCA9IHVuaW9uQXJyYXlzWzBdW2ldLmdldEZDb25zdCgpOwpAQCAtMjMyOCw0NyArMjUy
MCw0MCBAQAogICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZUFycmF5W2ldLnNldEZDb25zdCh4
IC0geSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5LT5z
ZXRGQ29uc3QoVmVjdG9yTGVuZ3RoKGRpc3RhbmNlQXJyYXksIG1heE9iamVjdFNpemUpKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAg
ICAgICBjYXNlIEVPcERvdDoKLQotICAgICAgICAgICAgaWYgKGJhc2ljVHlwZSA9PSBFYnRGbG9h
dCkKLSAgICAgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgRU9wRG90OgorICAgICAgICAgICAg
ICAgIEFTU0VSVChiYXNpY1R5cGUgPT0gRWJ0RmxvYXQpOwogICAgICAgICAgICAgICAgIHJlc3Vs
dEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uKCk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0QXJy
YXktPnNldEZDb25zdChWZWN0b3JEb3RQcm9kdWN0KHVuaW9uQXJyYXlzWzBdLCB1bmlvbkFycmF5
c1sxXSwgbWF4T2JqZWN0U2l6ZSkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICByZXN1bHRBcnJheS0+c2V0RkNvbnN0KAorICAgICAgICAgICAgICAgICAgICBW
ZWN0b3JEb3RQcm9kdWN0KHVuaW9uQXJyYXlzWzBdLCB1bmlvbkFycmF5c1sxXSwgbWF4T2JqZWN0
U2l6ZSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgY2FzZSBFT3BDcm9z
czoKLSAgICAgICAgICAgIGlmIChiYXNpY1R5cGUgPT0gRWJ0RmxvYXQgJiYgbWF4T2JqZWN0U2l6
ZSA9PSAzKQorICAgICAgICAgICAgY2FzZSBFT3BDcm9zczoKICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQoYmFzaWNUeXBlID09IEVidEZsb2F0ICYmIG1heE9iamVjdFNpemUg
PT0gMyk7CiAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25b
bWF4T2JqZWN0U2l6ZV07Ci0gICAgICAgICAgICAgICAgZmxvYXQgeDAgPSB1bmlvbkFycmF5c1sw
XVswXS5nZXRGQ29uc3QoKTsKLSAgICAgICAgICAgICAgICBmbG9hdCB4MSA9IHVuaW9uQXJyYXlz
WzBdWzFdLmdldEZDb25zdCgpOwotICAgICAgICAgICAgICAgIGZsb2F0IHgyID0gdW5pb25BcnJh
eXNbMF1bMl0uZ2V0RkNvbnN0KCk7Ci0gICAgICAgICAgICAgICAgZmxvYXQgeTAgPSB1bmlvbkFy
cmF5c1sxXVswXS5nZXRGQ29uc3QoKTsKLSAgICAgICAgICAgICAgICBmbG9hdCB5MSA9IHVuaW9u
QXJyYXlzWzFdWzFdLmdldEZDb25zdCgpOwotICAgICAgICAgICAgICAgIGZsb2F0IHkyID0gdW5p
b25BcnJheXNbMV1bMl0uZ2V0RkNvbnN0KCk7CisgICAgICAgICAgICAgICAgZmxvYXQgeDAgICAg
PSB1bmlvbkFycmF5c1swXVswXS5nZXRGQ29uc3QoKTsKKyAgICAgICAgICAgICAgICBmbG9hdCB4
MSAgICA9IHVuaW9uQXJyYXlzWzBdWzFdLmdldEZDb25zdCgpOworICAgICAgICAgICAgICAgIGZs
b2F0IHgyICAgID0gdW5pb25BcnJheXNbMF1bMl0uZ2V0RkNvbnN0KCk7CisgICAgICAgICAgICAg
ICAgZmxvYXQgeTAgICAgPSB1bmlvbkFycmF5c1sxXVswXS5nZXRGQ29uc3QoKTsKKyAgICAgICAg
ICAgICAgICBmbG9hdCB5MSAgICA9IHVuaW9uQXJyYXlzWzFdWzFdLmdldEZDb25zdCgpOworICAg
ICAgICAgICAgICAgIGZsb2F0IHkyICAgID0gdW5pb25BcnJheXNbMV1bMl0uZ2V0RkNvbnN0KCk7
CiAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbMF0uc2V0RkNvbnN0KHgxICogeTIgLSB5MSAq
IHgyKTsKICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVsxXS5zZXRGQ29uc3QoeDIgKiB5MCAt
IHkyICogeDApOwogICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5WzJdLnNldEZDb25zdCh4MCAq
IHkxIC0geTAgKiB4MSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAg
ICAgIGJyZWFrOwogCi0gICAgICAgICAgY2FzZSBFT3BSZWZsZWN0OgotICAgICAgICAgICAgaWYg
KGJhc2ljVHlwZSA9PSBFYnRGbG9hdCkKKyAgICAgICAgICAgIGNhc2UgRU9wUmVmbGVjdDoKICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYmFzaWNUeXBlID09IEVidEZsb2F0
KTsKICAgICAgICAgICAgICAgICAvLyBnZW5UeXBlIHJlZmxlY3QgKGdlblR5cGUgSSwgZ2VuVHlw
ZSBOKSA6Ci0gICAgICAgICAgICAgICAgLy8gICAgIEZvciB0aGUgaW5jaWRlbnQgdmVjdG9yIEkg
YW5kIHN1cmZhY2Ugb3JpZW50YXRpb24gTiwgcmV0dXJucyB0aGUgcmVmbGVjdGlvbiBkaXJlY3Rp
b246CisgICAgICAgICAgICAgICAgLy8gICAgIEZvciB0aGUgaW5jaWRlbnQgdmVjdG9yIEkgYW5k
IHN1cmZhY2Ugb3JpZW50YXRpb24gTiwgcmV0dXJucyB0aGUgcmVmbGVjdGlvbgorICAgICAgICAg
ICAgICAgIC8vICAgICBkaXJlY3Rpb246CiAgICAgICAgICAgICAgICAgLy8gICAgIEkgLSAyICog
ZG90KE4sIEkpICogTi4KLSAgICAgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3Rh
bnRVbmlvblttYXhPYmplY3RTaXplXTsKKyAgICAgICAgICAgICAgICByZXN1bHRBcnJheSAgICAg
ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNpemVdOwogICAgICAgICAgICAgICAgIGZs
b2F0IGRvdFByb2R1Y3QgPSBWZWN0b3JEb3RQcm9kdWN0KHVuaW9uQXJyYXlzWzFdLCB1bmlvbkFy
cmF5c1swXSwgbWF4T2JqZWN0U2l6ZSk7CiAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtYXhPYmplY3RTaXplOyBpKyspCiAgICAgICAgICAgICAgICAgewpAQCAtMjM3Niw0
NSArMjU2MSw0MCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjBmICog
ZG90UHJvZHVjdCAqIHVuaW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgpOwogICAgICAgICAgICAg
ICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QocmVzdWx0KTsKICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgIGJyZWFrOwog
Ci0gICAgICAgICAgY2FzZSBFT3BNdWw6Ci0gICAgICAgICAgICBpZiAoYmFzaWNUeXBlID09IEVi
dEZsb2F0ICYmICgqc2VxdWVuY2UpWzBdLT5nZXRBc1R5cGVkKCktPmlzTWF0cml4KCkgJiYKLSAg
ICAgICAgICAgICAgICAoKnNlcXVlbmNlKVsxXS0+Z2V0QXNUeXBlZCgpLT5pc01hdHJpeCgpKQor
ICAgICAgICAgICAgY2FzZSBFT3BNdWw6CiAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
QVNTRVJUKGJhc2ljVHlwZSA9PSBFYnRGbG9hdCAmJiAoKnNlcXVlbmNlKVswXS0+Z2V0QXNUeXBl
ZCgpLT5pc01hdHJpeCgpICYmCisgICAgICAgICAgICAgICAgICAgICAgICgqc2VxdWVuY2UpWzFd
LT5nZXRBc1R5cGVkKCktPmlzTWF0cml4KCkpOwogICAgICAgICAgICAgICAgIC8vIFBlcmZvcm0g
Y29tcG9uZW50LXdpc2UgbWF0cml4IG11bHRpcGxpY2F0aW9uLgogICAgICAgICAgICAgICAgIHJl
c3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNpemVdOwotICAgICAgICAg
ICAgICAgIGludCBzaXplID0gKCpzZXF1ZW5jZSlbMF0tPmdldEFzVHlwZWQoKS0+Z2V0Tm9taW5h
bFNpemUoKTsKKyAgICAgICAgICAgICAgICBpbnQgc2l6ZSAgICA9ICgqc2VxdWVuY2UpWzBdLT5n
ZXRBc1R5cGVkKCktPmdldE5vbWluYWxTaXplKCk7CiAgICAgICAgICAgICAgICAgYW5nbGU6Ok1h
dHJpeDxmbG9hdD4gcmVzdWx0ID0KICAgICAgICAgICAgICAgICAgICAgR2V0TWF0cml4KHVuaW9u
QXJyYXlzWzBdLCBzaXplKS5jb21wTXVsdChHZXRNYXRyaXgodW5pb25BcnJheXNbMV0sIHNpemUp
KTsKICAgICAgICAgICAgICAgICBTZXRVbmlvbkFycmF5RnJvbU1hdHJpeChyZXN1bHQsIHJlc3Vs
dEFycmF5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgYnJl
YWs7CiAKLSAgICAgICAgICBjYXNlIEVPcE91dGVyUHJvZHVjdDoKLSAgICAgICAgICAgIGlmIChi
YXNpY1R5cGUgPT0gRWJ0RmxvYXQpCisgICAgICAgICAgICBjYXNlIEVPcE91dGVyUHJvZHVjdDoK
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYmFzaWNUeXBlID09IEVidEZs
b2F0KTsKICAgICAgICAgICAgICAgICBzaXplX3QgbnVtUm93cyA9ICgqc2VxdWVuY2UpWzBdLT5n
ZXRBc1R5cGVkKCktPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7CiAgICAgICAgICAgICAgICAg
c2l6ZV90IG51bUNvbHMgPSAoKnNlcXVlbmNlKVsxXS0+Z2V0QXNUeXBlZCgpLT5nZXRUeXBlKCku
Z2V0T2JqZWN0U2l6ZSgpOwotICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25z
dGFudFVuaW9uW251bVJvd3MgKiBudW1Db2xzXTsKKyAgICAgICAgICAgICAgICByZXN1bHRBcnJh
eSAgICA9IG5ldyBUQ29uc3RhbnRVbmlvbltudW1Sb3dzICogbnVtQ29sc107CiAgICAgICAgICAg
ICAgICAgYW5nbGU6Ok1hdHJpeDxmbG9hdD4gcmVzdWx0ID0KLSAgICAgICAgICAgICAgICAgICAg
R2V0TWF0cml4KHVuaW9uQXJyYXlzWzBdLCAxLCBzdGF0aWNfY2FzdDxpbnQ+KG51bUNvbHMpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgLm91dGVyUHJvZHVjdChHZXRNYXRyaXgodW5pb25BcnJh
eXNbMV0sIHN0YXRpY19jYXN0PGludD4obnVtUm93cyksIDEpKTsKKyAgICAgICAgICAgICAgICAg
ICAgR2V0TWF0cml4KHVuaW9uQXJyYXlzWzBdLCBzdGF0aWNfY2FzdDxpbnQ+KG51bVJvd3MpLCAx
KQorICAgICAgICAgICAgICAgICAgICAgICAgLm91dGVyUHJvZHVjdChHZXRNYXRyaXgodW5pb25B
cnJheXNbMV0sIDEsIHN0YXRpY19jYXN0PGludD4obnVtQ29scykpKTsKICAgICAgICAgICAgICAg
ICBTZXRVbmlvbkFycmF5RnJvbU1hdHJpeChyZXN1bHQsIHJlc3VsdEFycmF5KTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKKworICAgICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgVU5SRUFDSEFCTEUo
KTsKLSAgICAgICAgICAgIC8vIFRPRE86IEFkZCBjb25zdGFudCBmb2xkaW5nIHN1cHBvcnQgZm9y
IG90aGVyIGJ1aWx0LWluIG9wZXJhdGlvbnMgdGhhdCB0YWtlIDIgcGFyYW1ldGVycyBhbmQgbm90
IGhhbmRsZWQgYWJvdmUuCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAg
ICAgICAvLyBUT0RPOiBBZGQgY29uc3RhbnQgZm9sZGluZyBzdXBwb3J0IGZvciBvdGhlciBidWls
dC1pbiBvcGVyYXRpb25zIHRoYXQgdGFrZSAyCisgICAgICAgICAgICAgICAgLy8gcGFyYW1ldGVy
cyBhbmQgbm90IGhhbmRsZWQgYWJvdmUuCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSBpZiAocGFyYW1zQ291bnQgPT0gMykKQEAgLTI0
MjQsNyArMjYwNCw3IEBACiAgICAgICAgIC8vCiAgICAgICAgIHN3aXRjaCAob3ApCiAgICAgICAg
IHsKLSAgICAgICAgICBjYXNlIEVPcENsYW1wOgorICAgICAgICAgICAgY2FzZSBFT3BDbGFtcDoK
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3Rh
bnRVbmlvblttYXhPYmplY3RTaXplXTsKICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1heE9iamVjdFNpemU7IGkrKykKQEAgLTI0MzEsMTE3ICsyNjExLDExNiBAQAogICAg
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChiYXNpY1R5cGUpCiAg
ICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEZsb2F0
OgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKICAgICAgICAgICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB4ID0gdW5pb25B
cnJheXNbMF1baV0uZ2V0RkNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxv
YXQgeCAgID0gdW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxvYXQgbWluID0gdW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0KCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgbWF4ID0gdW5pb25BcnJheXNbMl1baV0u
Z2V0RkNvbnN0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzdWx0cyBhcmUg
dW5kZWZpbmVkIGlmIG1pbiA+IG1heC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bWluID4gbWF4KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmRlZmluZWRDb25z
dGFudEZvbGRpbmdFcnJvcihsb2MsIG9wLCBiYXNpY1R5cGUsIGluZm9TaW5rLCAmcmVzdWx0QXJy
YXlbaV0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmRlZmluZWRDb25zdGFu
dEZvbGRpbmdFcnJvcihsb2MsIG9wLCBiYXNpY1R5cGUsIGRpYWdub3N0aWNzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVz
dWx0QXJyYXlbaV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KGdsOjpjbGFt
cCh4LCBtaW4sIG1heCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgRWJ0SW50OgogICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCB4ID0gdW5pb25BcnJheXNbMF1baV0uZ2V0SUNvbnN0KCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHggICA9IHVuaW9uQXJyYXlzWzBdW2ldLmdl
dElDb25zdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtaW4gPSB1bmlvbkFy
cmF5c1sxXVtpXS5nZXRJQ29uc3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
bWF4ID0gdW5pb25BcnJheXNbMl1baV0uZ2V0SUNvbnN0KCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gUmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmIG1pbiA+IG1heC4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAobWluID4gbWF4KQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJvcihsb2MsIG9wLCBiYXNpY1R5
cGUsIGluZm9TaW5rLCAmcmVzdWx0QXJyYXlbaV0pOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJvcihsb2MsIG9wLCBiYXNpY1R5cGUs
IGRpYWdub3N0aWNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmcmVzdWx0QXJyYXlbaV0pOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJy
YXlbaV0uc2V0SUNvbnN0KGdsOjpjbGFtcCh4LCBtaW4sIG1heCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRVSW50
OgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRVSW50OgogICAgICAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB4ID0g
dW5pb25BcnJheXNbMF1baV0uZ2V0VUNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IHggICA9IHVuaW9uQXJyYXlzWzBdW2ldLmdldFVDb25zdCgpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBtaW4gPSB1bmlvbkFycmF5c1sx
XVtpXS5nZXRVQ29uc3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgbWF4ID0gdW5pb25BcnJheXNbMl1baV0uZ2V0VUNvbnN0KCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gUmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmIG1pbiA+IG1heC4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobWluID4gbWF4KQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJvcihsb2MsIG9wLCBiYXNp
Y1R5cGUsIGluZm9TaW5rLCAmcmVzdWx0QXJyYXlbaV0pOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJvcihsb2MsIG9wLCBiYXNpY1R5
cGUsIGRpYWdub3N0aWNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmcmVzdWx0QXJyYXlbaV0pOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
QXJyYXlbaV0uc2V0VUNvbnN0KGdsOjpjbGFtcCh4LCBtaW4sIG1heCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFr
OwogCi0gICAgICAgICAgY2FzZSBFT3BNaXg6CisgICAgICAgICAgICBjYXNlIEVPcE1peDoKICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoYmFzaWNUeXBlID09IEVidEZsb2F0KQor
ICAgICAgICAgICAgICAgIEFTU0VSVChiYXNpY1R5cGUgPT0gRWJ0RmxvYXQpOworICAgICAgICAg
ICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNpemVdOwor
ICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsr
KQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBu
ZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07Ci0gICAgICAgICAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAgICAgICAg
ICAgICBmbG9hdCB4ICAgICAgICAgPSB1bmlvbkFycmF5c1swXVtpXS5nZXRGQ29uc3QoKTsKKyAg
ICAgICAgICAgICAgICAgICAgZmxvYXQgeSAgICAgICAgID0gdW5pb25BcnJheXNbMV1baV0uZ2V0
RkNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgIFRCYXNpY1R5cGUgdHlwZSA9ICgqc2VxdWVu
Y2UpWzJdLT5nZXRBc1R5cGVkKCktPmdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHR5cGUgPT0gRWJ0RmxvYXQpCiAgICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHggPSB1bmlvbkFycmF5c1swXVtpXS5nZXRG
Q29uc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHkgPSB1bmlvbkFycmF5c1sx
XVtpXS5nZXRGQ29uc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFRCYXNpY1R5cGUgdHlw
ZSA9ICgqc2VxdWVuY2UpWzJdLT5nZXRBc1R5cGVkKCktPmdldFR5cGUoKS5nZXRCYXNpY1R5cGUo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09IEVidEZsb2F0KQotICAgICAg
ICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJldHVy
bnMgdGhlIGxpbmVhciBibGVuZCBvZiB4IGFuZCB5LCBpLmUuLCB4ICogKDEgLSBhKSArIHkgKiBh
LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGEgPSB1bmlvbkFycmF5c1syXVtp
XS5nZXRGQ29uc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtp
XS5zZXRGQ29uc3QoeCAqICgxLjBmIC0gYSkgKyB5ICogYSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIC8vIDNyZCBwYXJhbWV0ZXIgaXMg
RWJ0Qm9vbAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVCh0eXBlID09IEVidEJvb2wpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIFNlbGVjdHMgd2hpY2ggdmVjdG9yIGVhY2ggcmV0dXJuZWQgY29tcG9uZW50IGNvbWVz
IGZyb20uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9yIGEgY29tcG9uZW50IG9m
IGEgdGhhdCBpcyBmYWxzZSwgdGhlIGNvcnJlc3BvbmRpbmcgY29tcG9uZW50IG9mIHggaXMgcmV0
dXJuZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9yIGEgY29tcG9uZW50IG9m
IGEgdGhhdCBpcyB0cnVlLCB0aGUgY29ycmVzcG9uZGluZyBjb21wb25lbnQgb2YgeSBpcyByZXR1
cm5lZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGEgPSB1bmlvbkFycmF5c1sy
XVtpXS5nZXRCQ29uc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJh
eVtpXS5zZXRGQ29uc3QoYSA/IHkgOiB4KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIFJldHVybnMgdGhlIGxpbmVhciBibGVuZCBvZiB4IGFu
ZCB5LCBpLmUuLCB4ICogKDEgLSBhKSArIHkgKiBhLgorICAgICAgICAgICAgICAgICAgICAgICAg
ZmxvYXQgYSA9IHVuaW9uQXJyYXlzWzJdW2ldLmdldEZDb25zdCgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KHggKiAoMS4wZiAtIGEpICsgeSAqIGEp
OwogICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgIC8vIDNy
ZCBwYXJhbWV0ZXIgaXMgRWJ0Qm9vbAorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBFYnRCb29sKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFNlbGVjdHMgd2hpY2ggdmVjdG9yIGVhY2ggcmV0dXJuZWQgY29tcG9uZW50IGNv
bWVzIGZyb20uCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3IgYSBjb21wb25lbnQgb2Yg
YSB0aGF0IGlzIGZhbHNlLCB0aGUgY29ycmVzcG9uZGluZyBjb21wb25lbnQgb2YgeCBpcworICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuZWQuCisgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBGb3IgYSBjb21wb25lbnQgb2YgYSB0aGF0IGlzIHRydWUsIHRoZSBjb3JyZXNwb25kaW5n
IGNvbXBvbmVudCBvZiB5IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXR1cm5lZC4K
KyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYSA9IHVuaW9uQXJyYXlzWzJdW2ldLmdldEJD
b25zdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0
KGEgPyB5IDogeCk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgICBjYXNlIEVPcFNtb290aFN0ZXA6CisgICAgICAgICAgICBjYXNlIEVPcFNt
b290aFN0ZXA6CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKGJhc2ljVHlwZSA9
PSBFYnRGbG9hdCkKKyAgICAgICAgICAgICAgICBBU1NFUlQoYmFzaWNUeXBlID09IEVidEZsb2F0
KTsKKyAgICAgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblttYXhP
YmplY3RTaXplXTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9i
amVjdFNpemU7IGkrKykKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJl
c3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNpemVdOwotICAgICAgICAg
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9iamVjdFNpemU7IGkrKykKKyAg
ICAgICAgICAgICAgICAgICAgZmxvYXQgZWRnZTAgPSB1bmlvbkFycmF5c1swXVtpXS5nZXRGQ29u
c3QoKTsKKyAgICAgICAgICAgICAgICAgICAgZmxvYXQgZWRnZTEgPSB1bmlvbkFycmF5c1sxXVtp
XS5nZXRGQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgZmxvYXQgeCAgICAgPSB1bmlvbkFy
cmF5c1syXVtpXS5nZXRGQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gUmVzdWx0cyBh
cmUgdW5kZWZpbmVkIGlmIGVkZ2UwID49IGVkZ2UxLgorICAgICAgICAgICAgICAgICAgICBpZiAo
ZWRnZTAgPj0gZWRnZTEpCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGZsb2F0IGVkZ2UwID0gdW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBmbG9hdCBlZGdlMSA9IHVuaW9uQXJyYXlzWzFdW2ldLmdldEZD
b25zdCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgeCA9IHVuaW9uQXJyYXlzWzJd
W2ldLmdldEZDb25zdCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzdWx0cyBhcmUg
dW5kZWZpbmVkIGlmIGVkZ2UwID49IGVkZ2UxLgotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGVkZ2UwID49IGVkZ2UxKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVuZGVmaW5lZENvbnN0YW50Rm9sZGluZ0Vycm9yKGxvYywgb3AsIGJh
c2ljVHlwZSwgaW5mb1NpbmssICZyZXN1bHRBcnJheVtpXSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmV0dXJucyAwLjAgaWYgeCA8
PSBlZGdlMCBhbmQgMS4wIGlmIHggPj0gZWRnZTEgYW5kIHBlcmZvcm1zIHNtb290aAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIEhlcm1pdGUgaW50ZXJwb2xhdGlvbiBiZXR3ZWVuIDAg
YW5kIDEgd2hlbiBlZGdlMCA8IHggPCBlZGdlMS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbG9hdCB0ID0gZ2w6OmNsYW1wKCh4IC0gZWRnZTApIC8gKGVkZ2UxIC0gZWRnZTApLCAwLjBm
LCAxLjBmKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRG
Q29uc3QodCAqIHQgKiAoMy4wZiAtIDIuMGYgKiB0KSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJv
cihsb2MsIG9wLCBiYXNpY1R5cGUsIGRpYWdub3N0aWNzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3VsdEFycmF5W2ldKTsKICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJldHVybnMgMC4wIGlmIHggPD0g
ZWRnZTAgYW5kIDEuMCBpZiB4ID49IGVkZ2UxIGFuZCBwZXJmb3JtcyBzbW9vdGgKKyAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIEhlcm1pdGUgaW50ZXJwb2xhdGlvbiBiZXR3ZWVuIDAgYW5kIDEg
d2hlbiBlZGdlMCA8IHggPCBlZGdlMS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHQg
PSBnbDo6Y2xhbXAoKHggLSBlZGdlMCkgLyAoZWRnZTEgLSBlZGdlMCksIDAuMGYsIDEuMGYpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KHQgKiB0ICog
KDMuMGYgLSAyLjBmICogdCkpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGJyZWFrOwogCi0gICAgICAgICAgY2FzZSBFT3BGYWNlRm9yd2FyZDoKLSAgICAgICAgICAgIGlm
IChiYXNpY1R5cGUgPT0gRWJ0RmxvYXQpCisgICAgICAgICAgICBjYXNlIEVPcEZhY2VGb3J3YXJk
OgogICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEFTU0VSVChiYXNpY1R5cGUgPT0gRWJ0
RmxvYXQpOwogICAgICAgICAgICAgICAgIC8vIGdlblR5cGUgZmFjZWZvcndhcmQoZ2VuVHlwZSBO
LCBnZW5UeXBlIEksIGdlblR5cGUgTnJlZikgOgogICAgICAgICAgICAgICAgIC8vICAgICBJZiBk
b3QoTnJlZiwgSSkgPCAwIHJldHVybiBOLCBvdGhlcndpc2UgcmV0dXJuIC1OLgotICAgICAgICAg
ICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNpemVdOwor
ICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5ICAgICAgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4
T2JqZWN0U2l6ZV07CiAgICAgICAgICAgICAgICAgZmxvYXQgZG90UHJvZHVjdCA9IFZlY3RvckRv
dFByb2R1Y3QodW5pb25BcnJheXNbMl0sIHVuaW9uQXJyYXlzWzFdLCBtYXhPYmplY3RTaXplKTsK
ICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9iamVjdFNpemU7IGkr
KykKICAgICAgICAgICAgICAgICB7CkBAIC0yNTUwLDE2ICsyNzI5LDE1IEBACiAgICAgICAgICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNl
dEZDb25zdCgtdW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCkpOwogICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgYnJlYWs7CiAK
LSAgICAgICAgICBjYXNlIEVPcFJlZnJhY3Q6Ci0gICAgICAgICAgICBpZiAoYmFzaWNUeXBlID09
IEVidEZsb2F0KQorICAgICAgICAgICAgY2FzZSBFT3BSZWZyYWN0OgogICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIEFTU0VSVChiYXNpY1R5cGUgPT0gRWJ0RmxvYXQpOwogICAgICAgICAg
ICAgICAgIC8vIGdlblR5cGUgcmVmcmFjdChnZW5UeXBlIEksIGdlblR5cGUgTiwgZmxvYXQgZXRh
KSA6Ci0gICAgICAgICAgICAgICAgLy8gICAgIEZvciB0aGUgaW5jaWRlbnQgdmVjdG9yIEkgYW5k
IHN1cmZhY2Ugbm9ybWFsIE4sIGFuZCB0aGUgcmF0aW8gb2YgaW5kaWNlcyBvZiByZWZyYWN0aW9u
IGV0YSwKKyAgICAgICAgICAgICAgICAvLyAgICAgRm9yIHRoZSBpbmNpZGVudCB2ZWN0b3IgSSBh
bmQgc3VyZmFjZSBub3JtYWwgTiwgYW5kIHRoZSByYXRpbyBvZiBpbmRpY2VzIG9mCisgICAgICAg
ICAgICAgICAgLy8gICAgIHJlZnJhY3Rpb24gZXRhLAogICAgICAgICAgICAgICAgIC8vICAgICBy
ZXR1cm4gdGhlIHJlZnJhY3Rpb24gdmVjdG9yLiBUaGUgcmVzdWx0IGlzIGNvbXB1dGVkIGJ5CiAg
ICAgICAgICAgICAgICAgLy8gICAgICAgICBrID0gMS4wIC0gZXRhICogZXRhICogKDEuMCAtIGRv
dChOLCBJKSAqIGRvdChOLCBJKSkKICAgICAgICAgICAgICAgICAvLyAgICAgICAgIGlmIChrIDwg
MC4wKQpAQCAtMjU2NiwyNyArMjc0NCwyNyBAQAogICAgICAgICAgICAgICAgIC8vICAgICAgICAg
ICAgIHJldHVybiBnZW5UeXBlKDAuMCkKICAgICAgICAgICAgICAgICAvLyAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICByZXR1cm4gZXRhICogSSAtIChldGEgKiBk
b3QoTiwgSSkgKyBzcXJ0KGspKSAqIE4KLSAgICAgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5l
dyBUQ29uc3RhbnRVbmlvblttYXhPYmplY3RTaXplXTsKKyAgICAgICAgICAgICAgICByZXN1bHRB
cnJheSAgICAgID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNpemVdOwogICAgICAgICAg
ICAgICAgIGZsb2F0IGRvdFByb2R1Y3QgPSBWZWN0b3JEb3RQcm9kdWN0KHVuaW9uQXJyYXlzWzFd
LCB1bmlvbkFycmF5c1swXSwgbWF4T2JqZWN0U2l6ZSk7CiAgICAgICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtYXhPYmplY3RTaXplOyBpKyspCiAgICAgICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgICAgICBmbG9hdCBldGEgPSB1bmlvbkFycmF5c1syXVtpXS5nZXRGQ29u
c3QoKTsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgayA9IDEuMGYgLSBldGEgKiBldGEgKiAo
MS4wZiAtIGRvdFByb2R1Y3QgKiBkb3RQcm9kdWN0KTsKKyAgICAgICAgICAgICAgICAgICAgZmxv
YXQgayAgID0gMS4wZiAtIGV0YSAqIGV0YSAqICgxLjBmIC0gZG90UHJvZHVjdCAqIGRvdFByb2R1
Y3QpOwogICAgICAgICAgICAgICAgICAgICBpZiAoayA8IDAuMGYpCiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QoMC4wZik7CiAgICAgICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25z
dChldGEgKiB1bmlvbkFycmF5c1swXVtpXS5nZXRGQ29uc3QoKSAtCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV0YSAqIGRvdFByb2R1Y3QgKyBz
cXJ0ZihrKSkgKiB1bmlvbkFycmF5c1sxXVtpXS5nZXRGQ29uc3QoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV0YSAqIGRvdFByb2R1Y3QgKyBz
cXJ0ZihrKSkgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bmlvbkFycmF5c1sxXVtpXS5nZXRGQ29uc3QoKSk7CiAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxz
ZQorCisgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgLy8gVE9ETzogQWRkIGNvbnN0YW50IGZvbGRpbmcg
c3VwcG9ydCBmb3Igb3RoZXIgYnVpbHQtaW4gb3BlcmF0aW9ucyB0aGF0IHRha2UgMyBwYXJhbWV0
ZXJzIGFuZCBub3QgaGFuZGxlZCBhYm92ZS4KLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICAgICAgICAgIC8vIFRPRE86IEFkZCBjb25zdGFudCBmb2xkaW5nIHN1cHBvcnQgZm9y
IG90aGVyIGJ1aWx0LWluIG9wZXJhdGlvbnMgdGhhdCB0YWtlIDMKKyAgICAgICAgICAgICAgICAv
LyBwYXJhbWV0ZXJzIGFuZCBub3QgaGFuZGxlZCBhYm92ZS4KKyAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gcmVzdWx0QXJyYXk7CkBA
IC0yNjU4LDcgKzI4MzYsMjggQEAKICAgICAgICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRShy
ZXBsYWNlZCk7CiAgICAgfQogCi0gICAgbUluc2VydGlvbnMuY2xlYXIoKTsKKyAgICBjbGVhclJl
cGxhY2VtZW50UXVldWUoKTsKK30KKwordm9pZCBUSW50ZXJtVHJhdmVyc2VyOjpjbGVhclJlcGxh
Y2VtZW50UXVldWUoKQorewogICAgIG1SZXBsYWNlbWVudHMuY2xlYXIoKTsKICAgICBtTXVsdGlS
ZXBsYWNlbWVudHMuY2xlYXIoKTsKKyAgICBtSW5zZXJ0aW9ucy5jbGVhcigpOwogfQorCit2b2lk
IFRJbnRlcm1UcmF2ZXJzZXI6OnF1ZXVlUmVwbGFjZW1lbnQoVEludGVybU5vZGUgKm9yaWdpbmFs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICpy
ZXBsYWNlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmln
aW5hbE5vZGUgb3JpZ2luYWxTdGF0dXMpCit7CisgICAgcXVldWVSZXBsYWNlbWVudFdpdGhQYXJl
bnQoZ2V0UGFyZW50Tm9kZSgpLCBvcmlnaW5hbCwgcmVwbGFjZW1lbnQsIG9yaWdpbmFsU3RhdHVz
KTsKK30KKwordm9pZCBUSW50ZXJtVHJhdmVyc2VyOjpxdWV1ZVJlcGxhY2VtZW50V2l0aFBhcmVu
dChUSW50ZXJtTm9kZSAqcGFyZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUSW50ZXJtTm9kZSAqb3JpZ2luYWwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3Jp
Z2luYWxOb2RlIG9yaWdpbmFsU3RhdHVzKQoreworICAgIGJvb2wgb3JpZ2luYWxCZWNvbWVzQ2hp
bGQgPSAob3JpZ2luYWxTdGF0dXMgPT0gT3JpZ2luYWxOb2RlOjpCRUNPTUVTX0NISUxEKTsKKyAg
ICBtUmVwbGFjZW1lbnRzLnB1c2hfYmFjayhOb2RlVXBkYXRlRW50cnkocGFyZW50LCBvcmlnaW5h
bCwgcmVwbGFjZW1lbnQsIG9yaWdpbmFsQmVjb21lc0NoaWxkKSk7Cit9CkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvSW50ZXJtTm9kZS5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDEyICsyNywxOCBAQAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvT3BlcmF0
b3IuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1R5cGVzLmgiCiAKK2NsYXNzIFRE
aWFnbm9zdGljczsKKwogY2xhc3MgVEludGVybVRyYXZlcnNlcjsKIGNsYXNzIFRJbnRlcm1BZ2dy
ZWdhdGU7CitjbGFzcyBUSW50ZXJtQmxvY2s7CitjbGFzcyBUSW50ZXJtRnVuY3Rpb25EZWZpbml0
aW9uOworY2xhc3MgVEludGVybVN3aXp6bGU7CiBjbGFzcyBUSW50ZXJtQmluYXJ5OwogY2xhc3Mg
VEludGVybVVuYXJ5OwogY2xhc3MgVEludGVybUNvbnN0YW50VW5pb247Ci1jbGFzcyBUSW50ZXJt
U2VsZWN0aW9uOworY2xhc3MgVEludGVybVRlcm5hcnk7CitjbGFzcyBUSW50ZXJtSWZFbHNlOwog
Y2xhc3MgVEludGVybVN3aXRjaDsKIGNsYXNzIFRJbnRlcm1DYXNlOwogY2xhc3MgVEludGVybVR5
cGVkOwpAQCAtNDQsNiArNTAsNyBAQAogY2xhc3MgVEludGVybUJyYW5jaDsKIAogY2xhc3MgVFN5
bWJvbFRhYmxlOworY2xhc3MgVEZ1bmN0aW9uOwogCiAvLyBFbmNhcHN1bGF0ZSBhbiBpZGVudGlm
aWVyIHN0cmluZyBhbmQgdHJhY2sgd2hldGhlciBpdCBpcyBjb21pbmcgZnJvbSB0aGUgb3JpZ2lu
YWwgc2hhZGVyIGNvZGUKIC8vIChub3QgaW50ZXJuYWwpIG9yIGZyb20gQU5HTEUgKGludGVybmFs
KS4gVXN1YWxseSBpbnRlcm5hbCBuYW1lcyBzaG91bGRuJ3QgYmUgZGVjb3JhdGVkIG9yIGhhc2hl
ZC4KQEAgLTg4LDEwICs5NSwxNCBAQAogICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZShUSW50ZXJt
VHJhdmVyc2VyICopID0gMDsKICAgICB2aXJ0dWFsIFRJbnRlcm1UeXBlZCAqZ2V0QXNUeXBlZCgp
IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIFRJbnRlcm1Db25zdGFudFVuaW9uICpnZXRBc0Nv
bnN0YW50VW5pb24oKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBUSW50ZXJtRnVuY3Rpb25E
ZWZpbml0aW9uICpnZXRBc0Z1bmN0aW9uRGVmaW5pdGlvbigpIHsgcmV0dXJuIG51bGxwdHI7IH0K
ICAgICB2aXJ0dWFsIFRJbnRlcm1BZ2dyZWdhdGUgKmdldEFzQWdncmVnYXRlKCkgeyByZXR1cm4g
MDsgfQorICAgIHZpcnR1YWwgVEludGVybUJsb2NrICpnZXRBc0Jsb2NrKCkgeyByZXR1cm4gbnVs
bHB0cjsgfQorICAgIHZpcnR1YWwgVEludGVybVN3aXp6bGUgKmdldEFzU3dpenpsZU5vZGUoKSB7
IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBUSW50ZXJtQmluYXJ5ICpnZXRBc0JpbmFy
eU5vZGUoKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBUSW50ZXJtVW5hcnkgKmdldEFzVW5h
cnlOb2RlKCkgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgVEludGVybVNlbGVjdGlvbiAqZ2V0
QXNTZWxlY3Rpb25Ob2RlKCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgVEludGVybVRlcm5h
cnkgKmdldEFzVGVybmFyeU5vZGUoKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBU
SW50ZXJtSWZFbHNlICpnZXRBc0lmRWxzZU5vZGUoKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAg
dmlydHVhbCBUSW50ZXJtU3dpdGNoICpnZXRBc1N3aXRjaE5vZGUoKSB7IHJldHVybiAwOyB9CiAg
ICAgdmlydHVhbCBUSW50ZXJtQ2FzZSAqZ2V0QXNDYXNlTm9kZSgpIHsgcmV0dXJuIDA7IH0KICAg
ICB2aXJ0dWFsIFRJbnRlcm1TeW1ib2wgKmdldEFzU3ltYm9sTm9kZSgpIHsgcmV0dXJuIDA7IH0K
QEAgLTE1Myw4ICsxNjQsMTMgQEAKICAgICBjb25zdCBjaGFyICpnZXRCYXNpY1N0cmluZygpIGNv
bnN0IHsgcmV0dXJuIG1UeXBlLmdldEJhc2ljU3RyaW5nKCk7IH0KICAgICBUU3RyaW5nIGdldENv
bXBsZXRlU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbVR5cGUuZ2V0Q29tcGxldGVTdHJpbmcoKTsg
fQogCi0gICAgaW50IGdldEFycmF5U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1UeXBlLmdldEFycmF5
U2l6ZSgpOyB9CisgICAgdW5zaWduZWQgaW50IGdldEFycmF5U2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1UeXBlLmdldEFycmF5U2l6ZSgpOyB9CiAKKyAgICBib29sIGlzQ29uc3RydWN0b3JXaXRoT25s
eUNvbnN0YW50VW5pb25QYXJhbWV0ZXJzKCk7CisKKyAgICBzdGF0aWMgVEludGVybVR5cGVkICpD
cmVhdGVJbmRleE5vZGUoaW50IGluZGV4KTsKKyAgICBzdGF0aWMgVEludGVybVR5cGVkICpDcmVh
dGVaZXJvKGNvbnN0IFRUeXBlICZ0eXBlKTsKKwogICBwcm90ZWN0ZWQ6CiAgICAgVFR5cGUgbVR5
cGU7CiAKQEAgLTE3OCw3ICsxOTQsNyBAQAogICAgICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICpp
bml0LAogICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqY29uZCwKICAgICAgICAgICAgICAg
ICBUSW50ZXJtVHlwZWQgKmV4cHIsCi0gICAgICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAq
Ym9keSkKKyAgICAgICAgICAgICAgICBUSW50ZXJtQmxvY2sgKmJvZHkpCiAgICAgICAgIDogbVR5
cGUodHlwZSksIG1Jbml0KGluaXQpLCBtQ29uZChjb25kKSwgbUV4cHIoZXhwciksIG1Cb2R5KGJv
ZHkpLCBtVW5yb2xsRmxhZyhmYWxzZSkKICAgICB7CiAgICAgfQpAQCAtMTkxLDggKzIwNywxMiBA
QAogICAgIFRJbnRlcm1Ob2RlICpnZXRJbml0KCkgeyByZXR1cm4gbUluaXQ7IH0KICAgICBUSW50
ZXJtVHlwZWQgKmdldENvbmRpdGlvbigpIHsgcmV0dXJuIG1Db25kOyB9CiAgICAgVEludGVybVR5
cGVkICpnZXRFeHByZXNzaW9uKCkgeyByZXR1cm4gbUV4cHI7IH0KLSAgICBUSW50ZXJtQWdncmVn
YXRlICpnZXRCb2R5KCkgeyByZXR1cm4gbUJvZHk7IH0KKyAgICBUSW50ZXJtQmxvY2sgKmdldEJv
ZHkoKSB7IHJldHVybiBtQm9keTsgfQogCisgICAgdm9pZCBzZXRDb25kaXRpb24oVEludGVybVR5
cGVkICpjb25kaXRpb24pIHsgbUNvbmQgPSBjb25kaXRpb247IH0KKyAgICB2b2lkIHNldEV4cHJl
c3Npb24oVEludGVybVR5cGVkICpleHByZXNzaW9uKSB7IG1FeHByID0gZXhwcmVzc2lvbjsgfQor
ICAgIHZvaWQgc2V0Qm9keShUSW50ZXJtQmxvY2sgKmJvZHkpIHsgbUJvZHkgPSBib2R5OyB9CisK
ICAgICB2b2lkIHNldFVucm9sbEZsYWcoYm9vbCBmbGFnKSB7IG1VbnJvbGxGbGFnID0gZmxhZzsg
fQogICAgIGJvb2wgZ2V0VW5yb2xsRmxhZygpIGNvbnN0IHsgcmV0dXJuIG1VbnJvbGxGbGFnOyB9
CiAKQEAgLTIwMSw3ICsyMjEsNyBAQAogICAgIFRJbnRlcm1Ob2RlICptSW5pdDsgIC8vIGZvci1s
b29wIGluaXRpYWxpemF0aW9uCiAgICAgVEludGVybVR5cGVkICptQ29uZDsgLy8gbG9vcCBleGl0
IGNvbmRpdGlvbgogICAgIFRJbnRlcm1UeXBlZCAqbUV4cHI7IC8vIGZvci1sb29wIGV4cHJlc3Np
b24KLSAgICBUSW50ZXJtQWdncmVnYXRlICptQm9keTsgIC8vIGxvb3AgYm9keQorICAgIFRJbnRl
cm1CbG9jayAqbUJvZHk7ICAvLyBsb29wIGJvZHkKIAogICAgIGJvb2wgbVVucm9sbEZsYWc7IC8v
IFdoZXRoZXIgdGhlIGxvb3Agc2hvdWxkIGJlIHVucm9sbGVkIG9yIG5vdC4KIH07CkBAIC0zMDgs
NiArMzI4LDcgQEAKICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbihjb25zdCBUQ29uc3RhbnRVbmlv
biAqdW5pb25Qb2ludGVyLCBjb25zdCBUVHlwZSAmdHlwZSkKICAgICAgICAgOiBUSW50ZXJtVHlw
ZWQodHlwZSksIG1VbmlvbkFycmF5UG9pbnRlcih1bmlvblBvaW50ZXIpCiAgICAgeworICAgICAg
ICBBU1NFUlQodW5pb25Qb2ludGVyKTsKICAgICB9CiAKICAgICBUSW50ZXJtVHlwZWQgKmRlZXBD
b3B5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9uKCp0
aGlzKTsgfQpAQCAtMzM1LDYgKzM1Niw3IEBACiAKICAgICB2b2lkIHJlcGxhY2VDb25zdGFudFVu
aW9uKGNvbnN0IFRDb25zdGFudFVuaW9uICpzYWZlQ29uc3RhbnRVbmlvbikKICAgICB7CisgICAg
ICAgIEFTU0VSVChzYWZlQ29uc3RhbnRVbmlvbik7CiAgICAgICAgIC8vIFByZXZpb3VzIHVuaW9u
IHBvaW50ZXIgZnJlZWQgb24gcG9vbCBkZWFsbG9jYXRpb24uCiAgICAgICAgIG1VbmlvbkFycmF5
UG9pbnRlciA9IHNhZmVDb25zdGFudFVuaW9uOwogICAgIH0KQEAgLTM0MywxMyArMzY1LDE3IEBA
CiAgICAgdm9pZCB0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyICppdCkgb3ZlcnJpZGU7CiAgICAg
Ym9vbCByZXBsYWNlQ2hpbGROb2RlKFRJbnRlcm1Ob2RlICosIFRJbnRlcm1Ob2RlICopIG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBUQ29uc3RhbnRVbmlvbiAqZm9sZEJpbmFyeShU
T3BlcmF0b3Igb3AsIFRJbnRlcm1Db25zdGFudFVuaW9uICpyaWdodE5vZGUsIFRJbmZvU2luayAm
aW5mb1NpbmspOwotICAgIFRDb25zdGFudFVuaW9uICpmb2xkVW5hcnlXaXRoRGlmZmVyZW50UmV0
dXJuVHlwZShUT3BlcmF0b3Igb3AsIFRJbmZvU2luayAmaW5mb1NpbmspOwotICAgIFRDb25zdGFu
dFVuaW9uICpmb2xkVW5hcnlXaXRoU2FtZVJldHVyblR5cGUoVE9wZXJhdG9yIG9wLCBUSW5mb1Np
bmsgJmluZm9TaW5rKTsKKyAgICBUQ29uc3RhbnRVbmlvbiAqZm9sZEJpbmFyeShUT3BlcmF0b3Ig
b3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybUNvbnN0YW50VW5pb24g
KnJpZ2h0Tm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURGlhZ25vc3RpY3Mg
KmRpYWdub3N0aWNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3Vy
Y2VMb2MgJmxpbmUpOworICAgIGNvbnN0IFRDb25zdGFudFVuaW9uICpmb2xkSW5kZXhpbmcoaW50
IGluZGV4KTsKKyAgICBUQ29uc3RhbnRVbmlvbiAqZm9sZFVuYXJ5Tm9uQ29tcG9uZW50V2lzZShU
T3BlcmF0b3Igb3ApOworICAgIFRDb25zdGFudFVuaW9uICpmb2xkVW5hcnlDb21wb25lbnRXaXNl
KFRPcGVyYXRvciBvcCwgVERpYWdub3N0aWNzICpkaWFnbm9zdGljcyk7CiAKLSAgICBzdGF0aWMg
VENvbnN0YW50VW5pb24gKkZvbGRBZ2dyZWdhdGVDb25zdHJ1Y3RvcihUSW50ZXJtQWdncmVnYXRl
ICphZ2dyZWdhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVEluZm9TaW5rICZpbmZvU2luayk7Ci0gICAgc3RhdGljIFRDb25zdGFudFVuaW9u
ICpGb2xkQWdncmVnYXRlQnVpbHRJbihUSW50ZXJtQWdncmVnYXRlICphZ2dyZWdhdGUsIFRJbmZv
U2luayAmaW5mb1NpbmspOworICAgIHN0YXRpYyBUQ29uc3RhbnRVbmlvbiAqRm9sZEFnZ3JlZ2F0
ZUNvbnN0cnVjdG9yKFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3JlZ2F0ZSk7CisgICAgc3RhdGljIFRD
b25zdGFudFVuaW9uICpGb2xkQWdncmVnYXRlQnVpbHRJbihUSW50ZXJtQWdncmVnYXRlICphZ2dy
ZWdhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
RGlhZ25vc3RpY3MgKmRpYWdub3N0aWNzKTsKIAogICBwcm90ZWN0ZWQ6CiAgICAgLy8gU2FtZSBk
YXRhIG1heSBiZSBzaGFyZWQgYmV0d2VlbiBtdWx0aXBsZSBjb25zdGFudCB1bmlvbnMsIHNvIGl0
IGNhbid0IGJlIG1vZGlmaWVkLgpAQCAtMzU3LDcgKzM4Myw5IEBACiAKICAgcHJpdmF0ZToKICAg
ICB0eXBlZGVmIGZsb2F0KCpGbG9hdFR5cGVVbmFyeUZ1bmMpIChmbG9hdCk7Ci0gICAgYm9vbCBm
b2xkRmxvYXRUeXBlVW5hcnkoY29uc3QgVENvbnN0YW50VW5pb24gJnBhcmFtZXRlciwgRmxvYXRU
eXBlVW5hcnlGdW5jIGJ1aWx0aW5GdW5jLCBUSW5mb1NpbmsgJmluZm9TaW5rLCBUQ29uc3RhbnRV
bmlvbiAqcmVzdWx0KSBjb25zdDsKKyAgICB2b2lkIGZvbGRGbG9hdFR5cGVVbmFyeShjb25zdCBU
Q29uc3RhbnRVbmlvbiAmcGFyYW1ldGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZs
b2F0VHlwZVVuYXJ5RnVuYyBidWlsdGluRnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUQ29uc3RhbnRVbmlvbiAqcmVzdWx0KSBjb25zdDsKIAogICAgIFRJbnRlcm1Db25zdGFudFVu
aW9uKGNvbnN0IFRJbnRlcm1Db25zdGFudFVuaW9uICZub2RlKTsgIC8vIE5vdGU6IG5vdCBkZWxl
dGVkLCBqdXN0IHByaXZhdGUhCiB9OwpAQCAtMzY5LDcgKzM5Nyw2IEBACiB7CiAgIHB1YmxpYzoK
ICAgICBUT3BlcmF0b3IgZ2V0T3AoKSBjb25zdCB7IHJldHVybiBtT3A7IH0KLSAgICB2b2lkIHNl
dE9wKFRPcGVyYXRvciBvcCkgeyBtT3AgPSBvcDsgfQogCiAgICAgYm9vbCBpc0Fzc2lnbm1lbnQo
KSBjb25zdDsKICAgICBib29sIGlzTXVsdGlwbGljYXRpb24oKSBjb25zdDsKQEAgLTM5MCw2ICs0
MTcsMzggQEAKICAgICBUT3BlcmF0b3IgbU9wOwogfTsKIAorLy8gTm9kZSBmb3IgdmVjdG9yIHN3
aXp6bGVzLgorY2xhc3MgVEludGVybVN3aXp6bGUgOiBwdWJsaWMgVEludGVybVR5cGVkCit7Cisg
IHB1YmxpYzoKKyAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGRldGVybWluZXMgdGhlIHR5cGUgb2Yg
dGhlIG5vZGUgYmFzZWQgb24gdGhlIG9wZXJhbmQuCisgICAgVEludGVybVN3aXp6bGUoVEludGVy
bVR5cGVkICpvcGVyYW5kLCBjb25zdCBUVmVjdG9yPGludD4gJnN3aXp6bGVPZmZzZXRzKTsKKwor
ICAgIFRJbnRlcm1UeXBlZCAqZGVlcENvcHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBuZXcg
VEludGVybVN3aXp6bGUoKnRoaXMpOyB9CisKKyAgICBUSW50ZXJtU3dpenpsZSAqZ2V0QXNTd2l6
emxlTm9kZSgpIG92ZXJyaWRlIHsgcmV0dXJuIHRoaXM7IH07CisgICAgdm9pZCB0cmF2ZXJzZShU
SW50ZXJtVHJhdmVyc2VyICppdCkgb3ZlcnJpZGU7CisgICAgYm9vbCByZXBsYWNlQ2hpbGROb2Rl
KFRJbnRlcm1Ob2RlICpvcmlnaW5hbCwgVEludGVybU5vZGUgKnJlcGxhY2VtZW50KSBvdmVycmlk
ZTsKKworICAgIGJvb2wgaGFzU2lkZUVmZmVjdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
T3BlcmFuZC0+aGFzU2lkZUVmZmVjdHMoKTsgfQorCisgICAgVEludGVybVR5cGVkICpnZXRPcGVy
YW5kKCkgeyByZXR1cm4gbU9wZXJhbmQ7IH0KKyAgICB2b2lkIHdyaXRlT2Zmc2V0c0FzWFlaVyhU
SW5mb1NpbmtCYXNlICpvdXQpIGNvbnN0OworCisgICAgYm9vbCBoYXNEdXBsaWNhdGVPZmZzZXRz
KCkgY29uc3Q7CisKKyAgICBUSW50ZXJtVHlwZWQgKmZvbGQoKTsKKworICBwcm90ZWN0ZWQ6Cisg
ICAgVEludGVybVR5cGVkICptT3BlcmFuZDsKKyAgICBUVmVjdG9yPGludD4gbVN3aXp6bGVPZmZz
ZXRzOworCisgIHByaXZhdGU6CisgICAgdm9pZCBwcm9tb3RlKCk7CisKKyAgICBUSW50ZXJtU3dp
enpsZShjb25zdCBUSW50ZXJtU3dpenpsZSAmbm9kZSk7ICAvLyBOb3RlOiBub3QgZGVsZXRlZCwg
anVzdCBwcml2YXRlIQorfTsKKwogLy8KIC8vIE5vZGVzIGZvciBhbGwgdGhlIGJhc2ljIGJpbmFy
eSBtYXRoIG9wZXJhdG9ycy4KIC8vCkBAIC0zOTYsMTIgKzQ1NSwxNyBAQAogY2xhc3MgVEludGVy
bUJpbmFyeSA6IHB1YmxpYyBUSW50ZXJtT3BlcmF0b3IKIHsKICAgcHVibGljOgotICAgIFRJbnRl
cm1CaW5hcnkoVE9wZXJhdG9yIG9wKQotICAgICAgICA6IFRJbnRlcm1PcGVyYXRvcihvcCksCi0g
ICAgICAgICAgbUFkZEluZGV4Q2xhbXAoZmFsc2UpIHt9CisgICAgLy8gVGhpcyBjb25zdHJ1Y3Rv
ciBkZXRlcm1pbmVzIHRoZSB0eXBlIG9mIHRoZSBiaW5hcnkgbm9kZSBiYXNlZCBvbiB0aGUgb3Bl
cmFuZHMgYW5kIG9wLgorICAgIFRJbnRlcm1CaW5hcnkoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlw
ZWQgKmxlZnQsIFRJbnRlcm1UeXBlZCAqcmlnaHQpOwogCiAgICAgVEludGVybVR5cGVkICpkZWVw
Q29weSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG5ldyBUSW50ZXJtQmluYXJ5KCp0aGlzKTsg
fQogCisgICAgc3RhdGljIFRPcGVyYXRvciBHZXRNdWxPcEJhc2VkT25PcGVyYW5kcyhjb25zdCBU
VHlwZSAmbGVmdCwgY29uc3QgVFR5cGUgJnJpZ2h0KTsKKyAgICBzdGF0aWMgVE9wZXJhdG9yIEdl
dE11bEFzc2lnbk9wQmFzZWRPbk9wZXJhbmRzKGNvbnN0IFRUeXBlICZsZWZ0LCBjb25zdCBUVHlw
ZSAmcmlnaHQpOworICAgIHN0YXRpYyBUUXVhbGlmaWVyIEdldENvbW1hUXVhbGlmaWVyKGludCBz
aGFkZXJWZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRJbnRlcm1UeXBlZCAqbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUSW50ZXJtVHlwZWQgKnJpZ2h0KTsKKwogICAgIFRJbnRlcm1CaW5hcnkg
KmdldEFzQmluYXJ5Tm9kZSgpIG92ZXJyaWRlIHsgcmV0dXJuIHRoaXM7IH07CiAgICAgdm9pZCB0
cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyICppdCkgb3ZlcnJpZGU7CiAgICAgYm9vbCByZXBsYWNl
Q2hpbGROb2RlKFRJbnRlcm1Ob2RlICpvcmlnaW5hbCwgVEludGVybU5vZGUgKnJlcGxhY2VtZW50
KSBvdmVycmlkZTsKQEAgLTQxMSwxMiArNDc1LDkgQEAKICAgICAgICAgcmV0dXJuIGlzQXNzaWdu
bWVudCgpIHx8IG1MZWZ0LT5oYXNTaWRlRWZmZWN0cygpIHx8IG1SaWdodC0+aGFzU2lkZUVmZmVj
dHMoKTsKICAgICB9CiAKLSAgICB2b2lkIHNldExlZnQoVEludGVybVR5cGVkICpub2RlKSB7IG1M
ZWZ0ID0gbm9kZTsgfQotICAgIHZvaWQgc2V0UmlnaHQoVEludGVybVR5cGVkICpub2RlKSB7IG1S
aWdodCA9IG5vZGU7IH0KICAgICBUSW50ZXJtVHlwZWQgKmdldExlZnQoKSBjb25zdCB7IHJldHVy
biBtTGVmdDsgfQogICAgIFRJbnRlcm1UeXBlZCAqZ2V0UmlnaHQoKSBjb25zdCB7IHJldHVybiBt
UmlnaHQ7IH0KLSAgICBib29sIHByb21vdGUoVEluZm9TaW5rICYpOwotICAgIFRJbnRlcm1UeXBl
ZCAqZm9sZChUSW5mb1NpbmsgJmluZm9TaW5rKTsKKyAgICBUSW50ZXJtVHlwZWQgKmZvbGQoVERp
YWdub3N0aWNzICpkaWFnbm9zdGljcyk7CiAKICAgICB2b2lkIHNldEFkZEluZGV4Q2xhbXAoKSB7
IG1BZGRJbmRleENsYW1wID0gdHJ1ZTsgfQogICAgIGJvb2wgZ2V0QWRkSW5kZXhDbGFtcCgpIHsg
cmV0dXJuIG1BZGRJbmRleENsYW1wOyB9CkBAIC00MjksNiArNDkwLDggQEAKICAgICBib29sIG1B
ZGRJbmRleENsYW1wOwogCiAgIHByaXZhdGU6CisgICAgdm9pZCBwcm9tb3RlKCk7CisKICAgICBU
SW50ZXJtQmluYXJ5KGNvbnN0IFRJbnRlcm1CaW5hcnkgJm5vZGUpOyAgLy8gTm90ZTogbm90IGRl
bGV0ZWQsIGp1c3QgcHJpdmF0ZSEKIH07CiAKQEAgLTQzOCwxNCArNTAxLDcgQEAKIGNsYXNzIFRJ
bnRlcm1VbmFyeSA6IHB1YmxpYyBUSW50ZXJtT3BlcmF0b3IKIHsKICAgcHVibGljOgotICAgIFRJ
bnRlcm1VbmFyeShUT3BlcmF0b3Igb3AsIGNvbnN0IFRUeXBlICZ0eXBlKQotICAgICAgICA6IFRJ
bnRlcm1PcGVyYXRvcihvcCwgdHlwZSksCi0gICAgICAgICAgbU9wZXJhbmQoTlVMTCksCi0gICAg
ICAgICAgbVVzZUVtdWxhdGVkRnVuY3Rpb24oZmFsc2UpIHt9Ci0gICAgVEludGVybVVuYXJ5KFRP
cGVyYXRvciBvcCkKLSAgICAgICAgOiBUSW50ZXJtT3BlcmF0b3Iob3ApLAotICAgICAgICAgIG1P
cGVyYW5kKE5VTEwpLAotICAgICAgICAgIG1Vc2VFbXVsYXRlZEZ1bmN0aW9uKGZhbHNlKSB7fQor
ICAgIFRJbnRlcm1VbmFyeShUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCAqb3BlcmFuZCk7CiAK
ICAgICBUSW50ZXJtVHlwZWQgKmRlZXBDb3B5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbmV3
IFRJbnRlcm1VbmFyeSgqdGhpcyk7IH0KIApAQCAtNDU1LDEwICs1MTEsOCBAQAogCiAgICAgYm9v
bCBoYXNTaWRlRWZmZWN0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGlzQXNzaWdubWVudCgp
IHx8IG1PcGVyYW5kLT5oYXNTaWRlRWZmZWN0cygpOyB9CiAKLSAgICB2b2lkIHNldE9wZXJhbmQo
VEludGVybVR5cGVkICpvcGVyYW5kKSB7IG1PcGVyYW5kID0gb3BlcmFuZDsgfQogICAgIFRJbnRl
cm1UeXBlZCAqZ2V0T3BlcmFuZCgpIHsgcmV0dXJuIG1PcGVyYW5kOyB9Ci0gICAgdm9pZCBwcm9t
b3RlKGNvbnN0IFRUeXBlICpmdW5jUmV0dXJuVHlwZSk7Ci0gICAgVEludGVybVR5cGVkICpmb2xk
KFRJbmZvU2luayAmaW5mb1NpbmspOworICAgIFRJbnRlcm1UeXBlZCAqZm9sZChURGlhZ25vc3Rp
Y3MgKmRpYWdub3N0aWNzKTsKIAogICAgIHZvaWQgc2V0VXNlRW11bGF0ZWRGdW5jdGlvbigpIHsg
bVVzZUVtdWxhdGVkRnVuY3Rpb24gPSB0cnVlOyB9CiAgICAgYm9vbCBnZXRVc2VFbXVsYXRlZEZ1
bmN0aW9uKCkgeyByZXR1cm4gbVVzZUVtdWxhdGVkRnVuY3Rpb247IH0KQEAgLTQ3MSwxNiArNTI1
LDEwMiBAQAogICAgIGJvb2wgbVVzZUVtdWxhdGVkRnVuY3Rpb247CiAKICAgcHJpdmF0ZToKKyAg
ICB2b2lkIHByb21vdGUoKTsKKwogICAgIFRJbnRlcm1VbmFyeShjb25zdCBUSW50ZXJtVW5hcnkg
Jm5vZGUpOyAgLy8gbm90ZTogbm90IGRlbGV0ZWQsIGp1c3QgcHJpdmF0ZSEKIH07CiAKK2NsYXNz
IFRGdW5jdGlvblN5bWJvbEluZm8KK3sKKyAgcHVibGljOgorICAgIFBPT0xfQUxMT0NBVE9SX05F
V19ERUxFVEUoKTsKKyAgICBURnVuY3Rpb25TeW1ib2xJbmZvKCkgOiBtSWQoMCkge30KKworICAg
IFRGdW5jdGlvblN5bWJvbEluZm8oY29uc3QgVEZ1bmN0aW9uU3ltYm9sSW5mbyAmKSA9IGRlZmF1
bHQ7CisgICAgVEZ1bmN0aW9uU3ltYm9sSW5mbyAmb3BlcmF0b3I9KGNvbnN0IFRGdW5jdGlvblN5
bWJvbEluZm8gJikgPSBkZWZhdWx0OworCisgICAgdm9pZCBzZXRGcm9tRnVuY3Rpb24oY29uc3Qg
VEZ1bmN0aW9uICZmdW5jdGlvbik7CisKKyAgICB2b2lkIHNldE5hbWVPYmooY29uc3QgVE5hbWUg
Jm5hbWUpIHsgbU5hbWUgPSBuYW1lOyB9CisgICAgY29uc3QgVE5hbWUgJmdldE5hbWVPYmooKSBj
b25zdCB7IHJldHVybiBtTmFtZTsgfQorCisgICAgY29uc3QgVFN0cmluZyAmZ2V0TmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1OYW1lLmdldFN0cmluZygpOyB9CisgICAgdm9pZCBzZXROYW1lKGNvbnN0
IFRTdHJpbmcgJm5hbWUpIHsgbU5hbWUuc2V0U3RyaW5nKG5hbWUpOyB9CisgICAgYm9vbCBpc01h
aW4oKSBjb25zdCB7IHJldHVybiBtTmFtZS5nZXRTdHJpbmcoKSA9PSAibWFpbigiOyB9CisKKyAg
ICB2b2lkIHNldElkKGludCBmdW5jdGlvbklkKSB7IG1JZCA9IGZ1bmN0aW9uSWQ7IH0KKyAgICBp
bnQgZ2V0SWQoKSBjb25zdCB7IHJldHVybiBtSWQ7IH0KKyAgcHJpdmF0ZToKKyAgICBUTmFtZSBt
TmFtZTsKKyAgICBpbnQgbUlkOworfTsKKworLy8gTm9kZSBmb3IgZnVuY3Rpb24gZGVmaW5pdGlv
bnMuCitjbGFzcyBUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uIDogcHVibGljIFRJbnRlcm1UeXBl
ZAoreworICBwdWJsaWM6CisgICAgLy8gVE9ETyhvZXR1YWhvQG52aWRpYS5jb20pOiBTZWUgaWYg
VEZ1bmN0aW9uU3ltYm9sSW5mbyBjb3VsZCBiZSBhZGRlZCB0byBjb25zdHJ1Y3RvcgorICAgIC8v
IHBhcmFtZXRlcnMuCisgICAgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbihjb25zdCBUVHlwZSAm
dHlwZSwgVEludGVybUFnZ3JlZ2F0ZSAqcGFyYW1ldGVycywgVEludGVybUJsb2NrICpib2R5KQor
ICAgICAgICA6IFRJbnRlcm1UeXBlZCh0eXBlKSwgbVBhcmFtZXRlcnMocGFyYW1ldGVycyksIG1C
b2R5KGJvZHkpCisgICAgeworICAgICAgICBBU1NFUlQocGFyYW1ldGVycyAhPSBudWxscHRyKTsK
KyAgICAgICAgQVNTRVJUKGJvZHkgIT0gbnVsbHB0cik7CisgICAgfQorCisgICAgVEludGVybUZ1
bmN0aW9uRGVmaW5pdGlvbiAqZ2V0QXNGdW5jdGlvbkRlZmluaXRpb24oKSBvdmVycmlkZSB7IHJl
dHVybiB0aGlzOyB9CisgICAgdm9pZCB0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyICppdCkgb3Zl
cnJpZGU7CisgICAgYm9vbCByZXBsYWNlQ2hpbGROb2RlKFRJbnRlcm1Ob2RlICpvcmlnaW5hbCwg
VEludGVybU5vZGUgKnJlcGxhY2VtZW50KSBvdmVycmlkZTsKKworICAgIFRJbnRlcm1UeXBlZCAq
ZGVlcENvcHkoKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIGJvb2wgaGFzU2lkZUVmZmVjdHMo
KSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCisgICAgVEludGVybUFnZ3JlZ2F0ZSAqZ2V0RnVuY3Rpb25Q
YXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbVBhcmFtZXRlcnM7IH0KKyAgICBUSW50ZXJtQmxv
Y2sgKmdldEJvZHkoKSBjb25zdCB7IHJldHVybiBtQm9keTsgfQorCisgICAgVEZ1bmN0aW9uU3lt
Ym9sSW5mbyAqZ2V0RnVuY3Rpb25TeW1ib2xJbmZvKCkgeyByZXR1cm4gJm1GdW5jdGlvbkluZm87
IH0KKyAgICBjb25zdCBURnVuY3Rpb25TeW1ib2xJbmZvICpnZXRGdW5jdGlvblN5bWJvbEluZm8o
KSBjb25zdCB7IHJldHVybiAmbUZ1bmN0aW9uSW5mbzsgfQorCisgIHByaXZhdGU6CisgICAgVElu
dGVybUFnZ3JlZ2F0ZSAqbVBhcmFtZXRlcnM7CisgICAgVEludGVybUJsb2NrICptQm9keTsKKwor
ICAgIFRGdW5jdGlvblN5bWJvbEluZm8gbUZ1bmN0aW9uSW5mbzsKK307CisKIHR5cGVkZWYgVFZl
Y3RvcjxUSW50ZXJtTm9kZSAqPiBUSW50ZXJtU2VxdWVuY2U7CiB0eXBlZGVmIFRWZWN0b3I8aW50
PiBUUXVhbGlmaWVyTGlzdDsKIAorLy8gSW50ZXJmYWNlIGZvciBub2RlIGNsYXNzZXMgdGhhdCBo
YXZlIGFuIGFyYml0cmFyaWx5IHNpemVkIHNldCBvZiBjaGlsZHJlbi4KK2NsYXNzIFRJbnRlcm1B
Z2dyZWdhdGVCYXNlCit7CisgIHB1YmxpYzoKKyAgICB2aXJ0dWFsIH5USW50ZXJtQWdncmVnYXRl
QmFzZSgpIHt9CisKKyAgICB2aXJ0dWFsIFRJbnRlcm1TZXF1ZW5jZSAqZ2V0U2VxdWVuY2UoKSAg
ICAgICAgICAgICA9IDA7CisgICAgdmlydHVhbCBjb25zdCBUSW50ZXJtU2VxdWVuY2UgKmdldFNl
cXVlbmNlKCkgY29uc3QgPSAwOworCisgICAgYm9vbCByZXBsYWNlQ2hpbGROb2RlV2l0aE11bHRp
cGxlKFRJbnRlcm1Ob2RlICpvcmlnaW5hbCwgY29uc3QgVEludGVybVNlcXVlbmNlICZyZXBsYWNl
bWVudHMpOworICAgIGJvb2wgaW5zZXJ0Q2hpbGROb2RlcyhUSW50ZXJtU2VxdWVuY2U6OnNpemVf
dHlwZSBwb3NpdGlvbiwgY29uc3QgVEludGVybVNlcXVlbmNlICZpbnNlcnRpb25zKTsKKworICBw
cm90ZWN0ZWQ6CisgICAgVEludGVybUFnZ3JlZ2F0ZUJhc2UoKSB7fQorCisgICAgYm9vbCByZXBs
YWNlQ2hpbGROb2RlSW50ZXJuYWwoVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAq
cmVwbGFjZW1lbnQpOworfTsKKwogLy8KIC8vIE5vZGVzIHRoYXQgb3BlcmF0ZSBvbiBhbiBhcmJp
dHJhcnkgc2l6ZWQgc2V0IG9mIGNoaWxkcmVuLgogLy8KLWNsYXNzIFRJbnRlcm1BZ2dyZWdhdGUg
OiBwdWJsaWMgVEludGVybU9wZXJhdG9yCitjbGFzcyBUSW50ZXJtQWdncmVnYXRlIDogcHVibGlj
IFRJbnRlcm1PcGVyYXRvciwgcHVibGljIFRJbnRlcm1BZ2dyZWdhdGVCYXNlCiB7CiAgIHB1Ymxp
YzoKICAgICBUSW50ZXJtQWdncmVnYXRlKCkKQEAgLTQ5Miw2ICs2MzIsNyBAQAogICAgIH0KICAg
ICBUSW50ZXJtQWdncmVnYXRlKFRPcGVyYXRvciBvcCkKICAgICAgICAgOiBUSW50ZXJtT3BlcmF0
b3Iob3ApLAorICAgICAgICAgIG1Vc2VyRGVmaW5lZChmYWxzZSksCiAgICAgICAgICAgbVVzZUVt
dWxhdGVkRnVuY3Rpb24oZmFsc2UpLAogICAgICAgICAgIG1Hb3RQcmVjaXNpb25Gcm9tQ2hpbGRy
ZW4oZmFsc2UpCiAgICAgewpAQCAtNTAxLDI5ICs2NDIsMjIgQEAKICAgICAvLyBOb3RlOiBvbmx5
IHN1cHBvcnRlZCBmb3Igbm9kZXMgdGhhdCBjYW4gYmUgYSBwYXJ0IG9mIGFuIGV4cHJlc3Npb24u
CiAgICAgVEludGVybVR5cGVkICpkZWVwQ29weSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG5l
dyBUSW50ZXJtQWdncmVnYXRlKCp0aGlzKTsgfQogCisgICAgdm9pZCBzZXRPcChUT3BlcmF0b3Ig
b3ApIHsgbU9wID0gb3A7IH0KKwogICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmdldEFzQWdncmVnYXRl
KCkgb3ZlcnJpZGUgeyByZXR1cm4gdGhpczsgfQogICAgIHZvaWQgdHJhdmVyc2UoVEludGVybVRy
YXZlcnNlciAqaXQpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVwbGFjZUNoaWxkTm9kZShUSW50ZXJt
Tm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCkgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCByZXBsYWNlQ2hpbGROb2RlV2l0aE11bHRpcGxlKFRJbnRlcm1Ob2RlICpvcmlnaW5hbCwg
VEludGVybVNlcXVlbmNlIHJlcGxhY2VtZW50cyk7Ci0gICAgYm9vbCBpbnNlcnRDaGlsZE5vZGVz
KFRJbnRlcm1TZXF1ZW5jZTo6c2l6ZV90eXBlIHBvc2l0aW9uLCBUSW50ZXJtU2VxdWVuY2UgaW5z
ZXJ0aW9ucyk7CisKICAgICAvLyBDb25zZXJ2YXRpdmVseSBhc3N1bWUgZnVuY3Rpb24gY2FsbHMg
YW5kIG90aGVyIGFnZ3JlZ2F0ZSBvcGVyYXRvcnMgaGF2ZSBzaWRlLWVmZmVjdHMKICAgICBib29s
IGhhc1NpZGVFZmZlY3RzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIFRJ
bnRlcm1UeXBlZCAqZm9sZChUSW5mb1NpbmsgJmluZm9TaW5rKTsKKyAgICBUSW50ZXJtVHlwZWQg
KmZvbGQoVERpYWdub3N0aWNzICpkaWFnbm9zdGljcyk7CiAKLSAgICBUSW50ZXJtU2VxdWVuY2Ug
KmdldFNlcXVlbmNlKCkgeyByZXR1cm4gJm1TZXF1ZW5jZTsgfQorICAgIFRJbnRlcm1TZXF1ZW5j
ZSAqZ2V0U2VxdWVuY2UoKSBvdmVycmlkZSB7IHJldHVybiAmbVNlcXVlbmNlOyB9CisgICAgY29u
c3QgVEludGVybVNlcXVlbmNlICpnZXRTZXF1ZW5jZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICZtU2VxdWVuY2U7IH0KIAotICAgIHZvaWQgc2V0TmFtZU9iaihjb25zdCBUTmFtZSAmbmFtZSkg
eyBtTmFtZSA9IG5hbWU7IH0KLSAgICBjb25zdCBUTmFtZSAmZ2V0TmFtZU9iaigpIGNvbnN0IHsg
cmV0dXJuIG1OYW1lOyB9Ci0KLSAgICB2b2lkIHNldE5hbWUoY29uc3QgVFN0cmluZyAmbmFtZSkg
eyBtTmFtZS5zZXRTdHJpbmcobmFtZSk7IH0KLSAgICBjb25zdCBUU3RyaW5nICZnZXROYW1lKCkg
Y29uc3QgeyByZXR1cm4gbU5hbWUuZ2V0U3RyaW5nKCk7IH0KLQogICAgIHZvaWQgc2V0VXNlckRl
ZmluZWQoKSB7IG1Vc2VyRGVmaW5lZCA9IHRydWU7IH0KICAgICBib29sIGlzVXNlckRlZmluZWQo
KSBjb25zdCB7IHJldHVybiBtVXNlckRlZmluZWQ7IH0KIAotICAgIHZvaWQgc2V0RnVuY3Rpb25J
ZChpbnQgZnVuY3Rpb25JZCkgeyBtRnVuY3Rpb25JZCA9IGZ1bmN0aW9uSWQ7IH0KLSAgICBpbnQg
Z2V0RnVuY3Rpb25JZCgpIGNvbnN0IHsgcmV0dXJuIG1GdW5jdGlvbklkOyB9Ci0KICAgICB2b2lk
IHNldFVzZUVtdWxhdGVkRnVuY3Rpb24oKSB7IG1Vc2VFbXVsYXRlZEZ1bmN0aW9uID0gdHJ1ZTsg
fQogICAgIGJvb2wgZ2V0VXNlRW11bGF0ZWRGdW5jdGlvbigpIHsgcmV0dXJuIG1Vc2VFbXVsYXRl
ZEZ1bmN0aW9uOyB9CiAKQEAgLTUzNCwxMSArNjY4LDEyIEBACiAgICAgLy8gUmV0dXJucyB0cnVl
IGlmIGNoYW5naW5nIHBhcmFtZXRlciBwcmVjaXNpb24gbWF5IGFmZmVjdCB0aGUgcmV0dXJuIHZh
bHVlLgogICAgIGJvb2wgZ290UHJlY2lzaW9uRnJvbUNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4g
bUdvdFByZWNpc2lvbkZyb21DaGlsZHJlbjsgfQogCisgICAgVEZ1bmN0aW9uU3ltYm9sSW5mbyAq
Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCkgeyByZXR1cm4gJm1GdW5jdGlvbkluZm87IH0KKyAgICBj
b25zdCBURnVuY3Rpb25TeW1ib2xJbmZvICpnZXRGdW5jdGlvblN5bWJvbEluZm8oKSBjb25zdCB7
IHJldHVybiAmbUZ1bmN0aW9uSW5mbzsgfQorCiAgIHByb3RlY3RlZDoKICAgICBUSW50ZXJtU2Vx
dWVuY2UgbVNlcXVlbmNlOwotICAgIFROYW1lIG1OYW1lOwogICAgIGJvb2wgbVVzZXJEZWZpbmVk
OyAvLyB1c2VkIGZvciB1c2VyIGRlZmluZWQgZnVuY3Rpb24gbmFtZXMKLSAgICBpbnQgbUZ1bmN0
aW9uSWQ7CiAKICAgICAvLyBJZiBzZXQgdG8gdHJ1ZSwgcmVwbGFjZSB0aGUgYnVpbHQtaW4gZnVu
Y3Rpb24gY2FsbCB3aXRoIGFuIGVtdWxhdGVkIG9uZQogICAgIC8vIHRvIHdvcmsgYXJvdW5kIGRy
aXZlciBidWdzLgpAQCAtNTQ2LDUyICs2ODEsOTAgQEAKIAogICAgIGJvb2wgbUdvdFByZWNpc2lv
bkZyb21DaGlsZHJlbjsKIAorICAgIFRGdW5jdGlvblN5bWJvbEluZm8gbUZ1bmN0aW9uSW5mbzsK
KwogICBwcml2YXRlOgogICAgIFRJbnRlcm1BZ2dyZWdhdGUoY29uc3QgVEludGVybUFnZ3JlZ2F0
ZSAmbm9kZSk7ICAvLyBub3RlOiBub3QgZGVsZXRlZCwganVzdCBwcml2YXRlIQogfTsKIAotLy8K
LS8vIEZvciBpZiB0ZXN0cy4KLS8vCi1jbGFzcyBUSW50ZXJtU2VsZWN0aW9uIDogcHVibGljIFRJ
bnRlcm1UeXBlZAorLy8gQSBsaXN0IG9mIHN0YXRlbWVudHMuIEVpdGhlciB0aGUgcm9vdCBub2Rl
IHdoaWNoIGNvbnRhaW5zIGRlY2xhcmF0aW9ucyBhbmQgZnVuY3Rpb24gZGVmaW5pdGlvbnMsCisv
LyBvciBhIGJsb2NrIHRoYXQgY2FuIGJlIG1hcmtlZCB3aXRoIGN1cmx5IGJyYWNlcyB7fS4KK2Ns
YXNzIFRJbnRlcm1CbG9jayA6IHB1YmxpYyBUSW50ZXJtTm9kZSwgcHVibGljIFRJbnRlcm1BZ2dy
ZWdhdGVCYXNlCiB7CiAgIHB1YmxpYzoKLSAgICBUSW50ZXJtU2VsZWN0aW9uKFRJbnRlcm1UeXBl
ZCAqY29uZCwgVEludGVybU5vZGUgKnRydWVCLCBUSW50ZXJtTm9kZSAqZmFsc2VCKQotICAgICAg
ICA6IFRJbnRlcm1UeXBlZChUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpKSwKLSAgICAgICAg
ICBtQ29uZGl0aW9uKGNvbmQpLAotICAgICAgICAgIG1UcnVlQmxvY2sodHJ1ZUIpLAotICAgICAg
ICAgIG1GYWxzZUJsb2NrKGZhbHNlQikge30KLSAgICBUSW50ZXJtU2VsZWN0aW9uKFRJbnRlcm1U
eXBlZCAqY29uZCwgVEludGVybU5vZGUgKnRydWVCLCBUSW50ZXJtTm9kZSAqZmFsc2VCLAotICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgJnR5cGUpCi0gICAgICAgIDogVEludGVybVR5
cGVkKHR5cGUpLAotICAgICAgICAgIG1Db25kaXRpb24oY29uZCksCi0gICAgICAgICAgbVRydWVC
bG9jayh0cnVlQiksCi0gICAgICAgICAgbUZhbHNlQmxvY2soZmFsc2VCKSB7fQorICAgIFRJbnRl
cm1CbG9jaygpIDogVEludGVybU5vZGUoKSB7fQorICAgIH5USW50ZXJtQmxvY2soKSB7fQogCi0g
ICAgLy8gTm90ZTogb25seSBzdXBwb3J0ZWQgZm9yIHRlcm5hcnkgb3BlcmF0b3Igbm9kZXMuCi0g
ICAgVEludGVybVR5cGVkICpkZWVwQ29weSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG5ldyBU
SW50ZXJtU2VsZWN0aW9uKCp0aGlzKTsgfQotCisgICAgVEludGVybUJsb2NrICpnZXRBc0Jsb2Nr
KCkgb3ZlcnJpZGUgeyByZXR1cm4gdGhpczsgfQogICAgIHZvaWQgdHJhdmVyc2UoVEludGVybVRy
YXZlcnNlciAqaXQpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVwbGFjZUNoaWxkTm9kZShUSW50ZXJt
Tm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCkgb3ZlcnJpZGU7CiAKLSAg
ICAvLyBDb25zZXJ2YXRpdmVseSBhc3N1bWUgc2VsZWN0aW9ucyBoYXZlIHNpZGUtZWZmZWN0cwot
ICAgIGJvb2wgaGFzU2lkZUVmZmVjdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CisgICAgLy8gT25seSBpbnRlbmRlZCBmb3IgaW5pdGlhbGx5IGJ1aWxkaW5nIHRoZSBibG9jay4K
KyAgICB2b2lkIGFwcGVuZFN0YXRlbWVudChUSW50ZXJtTm9kZSAqc3RhdGVtZW50KTsKIAotICAg
IGJvb2wgdXNlc1Rlcm5hcnlPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIGdldEJhc2ljVHlwZSgp
ICE9IEVidFZvaWQ7IH0KLSAgICBUSW50ZXJtTm9kZSAqZ2V0Q29uZGl0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbUNvbmRpdGlvbjsgfQotICAgIFRJbnRlcm1Ob2RlICpnZXRUcnVlQmxvY2soKSBjb25z
dCB7IHJldHVybiBtVHJ1ZUJsb2NrOyB9Ci0gICAgVEludGVybU5vZGUgKmdldEZhbHNlQmxvY2so
KSBjb25zdCB7IHJldHVybiBtRmFsc2VCbG9jazsgfQotICAgIFRJbnRlcm1TZWxlY3Rpb24gKmdl
dEFzU2VsZWN0aW9uTm9kZSgpIG92ZXJyaWRlIHsgcmV0dXJuIHRoaXM7IH0KKyAgICBUSW50ZXJt
U2VxdWVuY2UgKmdldFNlcXVlbmNlKCkgb3ZlcnJpZGUgeyByZXR1cm4gJm1TdGF0ZW1lbnRzOyB9
CisgICAgY29uc3QgVEludGVybVNlcXVlbmNlICpnZXRTZXF1ZW5jZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICZtU3RhdGVtZW50czsgfQogCiAgIHByb3RlY3RlZDoKLSAgICBUSW50ZXJtVHlw
ZWQgKm1Db25kaXRpb247Ci0gICAgVEludGVybU5vZGUgKm1UcnVlQmxvY2s7Ci0gICAgVEludGVy
bU5vZGUgKm1GYWxzZUJsb2NrOworICAgIFRJbnRlcm1TZXF1ZW5jZSBtU3RhdGVtZW50czsKK307
CiAKKy8vIEZvciB0ZXJuYXJ5IG9wZXJhdG9ycyBsaWtlIGEgPyBiIDogYy4KK2NsYXNzIFRJbnRl
cm1UZXJuYXJ5IDogcHVibGljIFRJbnRlcm1UeXBlZAoreworICBwdWJsaWM6CisgICAgVEludGVy
bVRlcm5hcnkoVEludGVybVR5cGVkICpjb25kLCBUSW50ZXJtVHlwZWQgKnRydWVFeHByZXNzaW9u
LCBUSW50ZXJtVHlwZWQgKmZhbHNlRXhwcmVzc2lvbik7CisKKyAgICB2b2lkIHRyYXZlcnNlKFRJ
bnRlcm1UcmF2ZXJzZXIgKml0KSBvdmVycmlkZTsKKyAgICBib29sIHJlcGxhY2VDaGlsZE5vZGUo
VEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpIG92ZXJyaWRl
OworCisgICAgVEludGVybVR5cGVkICpnZXRDb25kaXRpb24oKSBjb25zdCB7IHJldHVybiBtQ29u
ZGl0aW9uOyB9CisgICAgVEludGVybVR5cGVkICpnZXRUcnVlRXhwcmVzc2lvbigpIGNvbnN0IHsg
cmV0dXJuIG1UcnVlRXhwcmVzc2lvbjsgfQorICAgIFRJbnRlcm1UeXBlZCAqZ2V0RmFsc2VFeHBy
ZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbUZhbHNlRXhwcmVzc2lvbjsgfQorICAgIFRJbnRlcm1U
ZXJuYXJ5ICpnZXRBc1Rlcm5hcnlOb2RlKCkgb3ZlcnJpZGUgeyByZXR1cm4gdGhpczsgfQorCisg
ICAgVEludGVybVR5cGVkICpkZWVwQ29weSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG5ldyBU
SW50ZXJtVGVybmFyeSgqdGhpcyk7IH0KKworICAgIGJvb2wgaGFzU2lkZUVmZmVjdHMoKSBjb25z
dCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1Db25kaXRpb24tPmhhc1NpZGVFZmZl
Y3RzKCkgfHwgbVRydWVFeHByZXNzaW9uLT5oYXNTaWRlRWZmZWN0cygpIHx8CisgICAgICAgICAg
ICAgICBtRmFsc2VFeHByZXNzaW9uLT5oYXNTaWRlRWZmZWN0cygpOworICAgIH0KKworICAgIHN0
YXRpYyBUUXVhbGlmaWVyIERldGVybWluZVF1YWxpZmllcihUSW50ZXJtVHlwZWQgKmNvbmQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqdHJ1
ZUV4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJ
bnRlcm1UeXBlZCAqZmFsc2VFeHByZXNzaW9uKTsKKwogICBwcml2YXRlOgotICAgIFRJbnRlcm1T
ZWxlY3Rpb24oY29uc3QgVEludGVybVNlbGVjdGlvbiAmbm9kZSk7ICAvLyBOb3RlOiBub3QgZGVs
ZXRlZCwganVzdCBwcml2YXRlIQorICAgIFRJbnRlcm1UZXJuYXJ5KGNvbnN0IFRJbnRlcm1UZXJu
YXJ5ICZub2RlKTsgIC8vIE5vdGU6IG5vdCBkZWxldGVkLCBqdXN0IHByaXZhdGUhCisKKyAgICBU
SW50ZXJtVHlwZWQgKm1Db25kaXRpb247CisgICAgVEludGVybVR5cGVkICptVHJ1ZUV4cHJlc3Np
b247CisgICAgVEludGVybVR5cGVkICptRmFsc2VFeHByZXNzaW9uOwogfTsKIAorY2xhc3MgVElu
dGVybUlmRWxzZSA6IHB1YmxpYyBUSW50ZXJtTm9kZQoreworICBwdWJsaWM6CisgICAgVEludGVy
bUlmRWxzZShUSW50ZXJtVHlwZWQgKmNvbmQsIFRJbnRlcm1CbG9jayAqdHJ1ZUIsIFRJbnRlcm1C
bG9jayAqZmFsc2VCKQorICAgICAgICA6IFRJbnRlcm1Ob2RlKCksIG1Db25kaXRpb24oY29uZCks
IG1UcnVlQmxvY2sodHJ1ZUIpLCBtRmFsc2VCbG9jayhmYWxzZUIpCisgICAgeworICAgIH0KKwor
ICAgIHZvaWQgdHJhdmVyc2UoVEludGVybVRyYXZlcnNlciAqaXQpIG92ZXJyaWRlOworICAgIGJv
b2wgcmVwbGFjZUNoaWxkTm9kZShUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpy
ZXBsYWNlbWVudCkgb3ZlcnJpZGU7CisKKyAgICBUSW50ZXJtVHlwZWQgKmdldENvbmRpdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1Db25kaXRpb247IH0KKyAgICBUSW50ZXJtQmxvY2sgKmdldFRydWVC
bG9jaygpIGNvbnN0IHsgcmV0dXJuIG1UcnVlQmxvY2s7IH0KKyAgICBUSW50ZXJtQmxvY2sgKmdl
dEZhbHNlQmxvY2soKSBjb25zdCB7IHJldHVybiBtRmFsc2VCbG9jazsgfQorICAgIFRJbnRlcm1J
ZkVsc2UgKmdldEFzSWZFbHNlTm9kZSgpIG92ZXJyaWRlIHsgcmV0dXJuIHRoaXM7IH0KKworICBw
cm90ZWN0ZWQ6CisgICAgVEludGVybVR5cGVkICptQ29uZGl0aW9uOworICAgIFRJbnRlcm1CbG9j
ayAqbVRydWVCbG9jazsKKyAgICBUSW50ZXJtQmxvY2sgKm1GYWxzZUJsb2NrOworfTsKKwogLy8K
IC8vIFN3aXRjaCBzdGF0ZW1lbnQuCiAvLwpAQCAtNTk4LDEwICs3NzEsOCBAQAogY2xhc3MgVElu
dGVybVN3aXRjaCA6IHB1YmxpYyBUSW50ZXJtTm9kZQogewogICBwdWJsaWM6Ci0gICAgVEludGVy
bVN3aXRjaChUSW50ZXJtVHlwZWQgKmluaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKnN0YXRlbWVudExp
c3QpCi0gICAgICAgIDogVEludGVybU5vZGUoKSwKLSAgICAgICAgICBtSW5pdChpbml0KSwKLSAg
ICAgICAgICBtU3RhdGVtZW50TGlzdChzdGF0ZW1lbnRMaXN0KQorICAgIFRJbnRlcm1Td2l0Y2go
VEludGVybVR5cGVkICppbml0LCBUSW50ZXJtQmxvY2sgKnN0YXRlbWVudExpc3QpCisgICAgICAg
IDogVEludGVybU5vZGUoKSwgbUluaXQoaW5pdCksIG1TdGF0ZW1lbnRMaXN0KHN0YXRlbWVudExp
c3QpCiAgICAgewogICAgIH0KIApAQCAtNjEyLDEyICs3ODMsMTIgQEAKICAgICBUSW50ZXJtU3dp
dGNoICpnZXRBc1N3aXRjaE5vZGUoKSBvdmVycmlkZSB7IHJldHVybiB0aGlzOyB9CiAKICAgICBU
SW50ZXJtVHlwZWQgKmdldEluaXQoKSB7IHJldHVybiBtSW5pdDsgfQotICAgIFRJbnRlcm1BZ2dy
ZWdhdGUgKmdldFN0YXRlbWVudExpc3QoKSB7IHJldHVybiBtU3RhdGVtZW50TGlzdDsgfQotICAg
IHZvaWQgc2V0U3RhdGVtZW50TGlzdChUSW50ZXJtQWdncmVnYXRlICpzdGF0ZW1lbnRMaXN0KSB7
IG1TdGF0ZW1lbnRMaXN0ID0gc3RhdGVtZW50TGlzdDsgfQorICAgIFRJbnRlcm1CbG9jayAqZ2V0
U3RhdGVtZW50TGlzdCgpIHsgcmV0dXJuIG1TdGF0ZW1lbnRMaXN0OyB9CisgICAgdm9pZCBzZXRT
dGF0ZW1lbnRMaXN0KFRJbnRlcm1CbG9jayAqc3RhdGVtZW50TGlzdCkgeyBtU3RhdGVtZW50TGlz
dCA9IHN0YXRlbWVudExpc3Q7IH0KIAogICBwcm90ZWN0ZWQ6CiAgICAgVEludGVybVR5cGVkICpt
SW5pdDsKLSAgICBUSW50ZXJtQWdncmVnYXRlICptU3RhdGVtZW50TGlzdDsKKyAgICBUSW50ZXJt
QmxvY2sgKm1TdGF0ZW1lbnRMaXN0OwogfTsKIAogLy8KQEAgLTY2NywyNiArODM4LDI1IEBACiB7
CiAgIHB1YmxpYzoKICAgICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKCk7Ci0gICAgVEludGVy
bVRyYXZlcnNlcihib29sIHByZVZpc2l0LCBib29sIGluVmlzaXQsIGJvb2wgcG9zdFZpc2l0KQot
ICAgICAgICA6IHByZVZpc2l0KHByZVZpc2l0KSwKLSAgICAgICAgICBpblZpc2l0KGluVmlzaXQp
LAotICAgICAgICAgIHBvc3RWaXNpdChwb3N0VmlzaXQpLAotICAgICAgICAgIG1EZXB0aCgwKSwK
LSAgICAgICAgICBtTWF4RGVwdGgoMCksCi0gICAgICAgICAgbVRlbXBvcmFyeUluZGV4KG51bGxw
dHIpCi0gICAgewotICAgIH0KLSAgICB2aXJ0dWFsIH5USW50ZXJtVHJhdmVyc2VyKCkge30KKyAg
ICBUSW50ZXJtVHJhdmVyc2VyKGJvb2wgcHJlVmlzaXQsIGJvb2wgaW5WaXNpdCwgYm9vbCBwb3N0
VmlzaXQpOworICAgIHZpcnR1YWwgflRJbnRlcm1UcmF2ZXJzZXIoKTsKIAogICAgIHZpcnR1YWwg
dm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICpub2RlKSB7fQogICAgIHZpcnR1YWwgdm9p
ZCB2aXNpdFJhdyhUSW50ZXJtUmF3ICpub2RlKSB7fQogICAgIHZpcnR1YWwgdm9pZCB2aXNpdENv
bnN0YW50VW5pb24oVEludGVybUNvbnN0YW50VW5pb24gKm5vZGUpIHt9CisgICAgdmlydHVhbCBi
b29sIHZpc2l0U3dpenpsZShWaXNpdCB2aXNpdCwgVEludGVybVN3aXp6bGUgKm5vZGUpIHsgcmV0
dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJ
bnRlcm1CaW5hcnkgKm5vZGUpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgdmlz
aXRVbmFyeShWaXNpdCB2aXNpdCwgVEludGVybVVuYXJ5ICpub2RlKSB7IHJldHVybiB0cnVlOyB9
Ci0gICAgdmlydHVhbCBib29sIHZpc2l0U2VsZWN0aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtU2Vs
ZWN0aW9uICpub2RlKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHZpc2l0VGVy
bmFyeShWaXNpdCB2aXNpdCwgVEludGVybVRlcm5hcnkgKm5vZGUpIHsgcmV0dXJuIHRydWU7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgdmlzaXRJZkVsc2UoVmlzaXQgdmlzaXQsIFRJbnRlcm1JZkVsc2Ug
Km5vZGUpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgdmlzaXRTd2l0Y2goVmlz
aXQgdmlzaXQsIFRJbnRlcm1Td2l0Y2ggKm5vZGUpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0
dWFsIGJvb2wgdmlzaXRDYXNlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQ2FzZSAqbm9kZSkgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCB2aXNpdEZ1bmN0aW9uRGVmaW5pdGlvbihWaXNp
dCB2aXNpdCwgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAqbm9kZSkKKyAgICB7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KICAgICB2aXJ0dWFsIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlz
aXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgdmlzaXRCbG9jayhWaXNpdCB2aXNpdCwgVEludGVybUJsb2NrICpub2RlKSB7
IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIHZpc2l0TG9vcChWaXNpdCB2aXNpdCwg
VEludGVybUxvb3AgKm5vZGUpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgdmlz
aXRCcmFuY2goVmlzaXQgdmlzaXQsIFRJbnRlcm1CcmFuY2ggKm5vZGUpIHsgcmV0dXJuIHRydWU7
IH0KIApAQCAtNjk2LDEyICs4NjYsMTYgQEAKICAgICB2aXJ0dWFsIHZvaWQgdHJhdmVyc2VTeW1i
b2woVEludGVybVN5bWJvbCAqbm9kZSk7CiAgICAgdmlydHVhbCB2b2lkIHRyYXZlcnNlUmF3KFRJ
bnRlcm1SYXcgKm5vZGUpOwogICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZUNvbnN0YW50VW5pb24o
VEludGVybUNvbnN0YW50VW5pb24gKm5vZGUpOworICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZVN3
aXp6bGUoVEludGVybVN3aXp6bGUgKm5vZGUpOwogICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZUJp
bmFyeShUSW50ZXJtQmluYXJ5ICpub2RlKTsKICAgICB2aXJ0dWFsIHZvaWQgdHJhdmVyc2VVbmFy
eShUSW50ZXJtVW5hcnkgKm5vZGUpOwotICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZVNlbGVjdGlv
bihUSW50ZXJtU2VsZWN0aW9uICpub2RlKTsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhdmVyc2VUZXJu
YXJ5KFRJbnRlcm1UZXJuYXJ5ICpub2RlKTsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhdmVyc2VJZkVs
c2UoVEludGVybUlmRWxzZSAqbm9kZSk7CiAgICAgdmlydHVhbCB2b2lkIHRyYXZlcnNlU3dpdGNo
KFRJbnRlcm1Td2l0Y2ggKm5vZGUpOwogICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZUNhc2UoVElu
dGVybUNhc2UgKm5vZGUpOworICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZUZ1bmN0aW9uRGVmaW5p
dGlvbihUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICpub2RlKTsKICAgICB2aXJ0dWFsIHZvaWQg
dHJhdmVyc2VBZ2dyZWdhdGUoVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSk7CisgICAgdmlydHVhbCB2
b2lkIHRyYXZlcnNlQmxvY2soVEludGVybUJsb2NrICpub2RlKTsKICAgICB2aXJ0dWFsIHZvaWQg
dHJhdmVyc2VMb29wKFRJbnRlcm1Mb29wICpub2RlKTsKICAgICB2aXJ0dWFsIHZvaWQgdHJhdmVy
c2VCcmFuY2goVEludGVybUJyYW5jaCAqbm9kZSk7CiAKQEAgLTc0OCw3ICs5MjIsNyBAQAogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICB2b2lkIHB1c2hQYXJlbnRCbG9jayhU
SW50ZXJtQWdncmVnYXRlICpub2RlKTsKKyAgICB2b2lkIHB1c2hQYXJlbnRCbG9jayhUSW50ZXJt
QmxvY2sgKm5vZGUpOwogICAgIHZvaWQgaW5jcmVtZW50UGFyZW50QmxvY2tQb3MoKTsKICAgICB2
b2lkIHBvcFBhcmVudEJsb2NrKCk7CiAKQEAgLTc1Nyw0NSArOTMxLDE3IEBACiAgICAgICAgIHJl
dHVybiAhbVBhcmVudEJsb2NrU3RhY2suZW1wdHkoKSAmJiBnZXRQYXJlbnROb2RlKCkgPT0gbVBh
cmVudEJsb2NrU3RhY2suYmFjaygpLm5vZGU7CiAgICAgfQogCi0gICAgY29uc3QgYm9vbCBwcmVW
aXNpdDsKLSAgICBjb25zdCBib29sIGluVmlzaXQ7Ci0gICAgY29uc3QgYm9vbCBwb3N0VmlzaXQ7
Ci0KLSAgICBpbnQgbURlcHRoOwotICAgIGludCBtTWF4RGVwdGg7Ci0KLSAgICAvLyBBbGwgdGhl
IG5vZGVzIGZyb20gcm9vdCB0byB0aGUgY3VycmVudCBub2RlJ3MgcGFyZW50IGR1cmluZyB0cmF2
ZXJzaW5nLgotICAgIFRWZWN0b3I8VEludGVybU5vZGUgKj4gbVBhdGg7Ci0KLSAgICAvLyBUbyBy
ZXBsYWNlIGEgc2luZ2xlIG5vZGUgd2l0aCBhbm90aGVyIG9uIHRoZSBwYXJlbnQgbm9kZQotICAg
IHN0cnVjdCBOb2RlVXBkYXRlRW50cnkKLSAgICB7Ci0gICAgICAgIE5vZGVVcGRhdGVFbnRyeShU
SW50ZXJtTm9kZSAqX3BhcmVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1Ob2Rl
ICpfb3JpZ2luYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtTm9kZSAqX3JlcGxh
Y2VtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBfb3JpZ2luYWxCZWNvbWVzQ2hp
bGRPZlJlcGxhY2VtZW50KQotICAgICAgICAgICAgOiBwYXJlbnQoX3BhcmVudCksCi0gICAgICAg
ICAgICAgIG9yaWdpbmFsKF9vcmlnaW5hbCksCi0gICAgICAgICAgICAgIHJlcGxhY2VtZW50KF9y
ZXBsYWNlbWVudCksCi0gICAgICAgICAgICAgIG9yaWdpbmFsQmVjb21lc0NoaWxkT2ZSZXBsYWNl
bWVudChfb3JpZ2luYWxCZWNvbWVzQ2hpbGRPZlJlcGxhY2VtZW50KSB7fQotCi0gICAgICAgIFRJ
bnRlcm1Ob2RlICpwYXJlbnQ7Ci0gICAgICAgIFRJbnRlcm1Ob2RlICpvcmlnaW5hbDsKLSAgICAg
ICAgVEludGVybU5vZGUgKnJlcGxhY2VtZW50OwotICAgICAgICBib29sIG9yaWdpbmFsQmVjb21l
c0NoaWxkT2ZSZXBsYWNlbWVudDsKLSAgICB9OwotCiAgICAgLy8gVG8gcmVwbGFjZSBhIHNpbmds
ZSBub2RlIHdpdGggbXVsdGlwbGUgbm9kZXMgb24gdGhlIHBhcmVudCBhZ2dyZWdhdGUgbm9kZQog
ICAgIHN0cnVjdCBOb2RlUmVwbGFjZVdpdGhNdWx0aXBsZUVudHJ5CiAgICAgewotICAgICAgICBO
b2RlUmVwbGFjZVdpdGhNdWx0aXBsZUVudHJ5KFRJbnRlcm1BZ2dyZWdhdGUgKl9wYXJlbnQsIFRJ
bnRlcm1Ob2RlICpfb3JpZ2luYWwsIFRJbnRlcm1TZXF1ZW5jZSBfcmVwbGFjZW1lbnRzKQotICAg
ICAgICAgICAgOiBwYXJlbnQoX3BhcmVudCksCi0gICAgICAgICAgICAgIG9yaWdpbmFsKF9vcmln
aW5hbCksCi0gICAgICAgICAgICAgIHJlcGxhY2VtZW50cyhfcmVwbGFjZW1lbnRzKQorICAgICAg
ICBOb2RlUmVwbGFjZVdpdGhNdWx0aXBsZUVudHJ5KFRJbnRlcm1BZ2dyZWdhdGVCYXNlICpfcGFy
ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICpf
b3JpZ2luYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVNl
cXVlbmNlIF9yZXBsYWNlbWVudHMpCisgICAgICAgICAgICA6IHBhcmVudChfcGFyZW50KSwgb3Jp
Z2luYWwoX29yaWdpbmFsKSwgcmVwbGFjZW1lbnRzKF9yZXBsYWNlbWVudHMpCiAgICAgICAgIHsK
ICAgICAgICAgfQogCi0gICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnBhcmVudDsKKyAgICAgICAg
VEludGVybUFnZ3JlZ2F0ZUJhc2UgKnBhcmVudDsKICAgICAgICAgVEludGVybU5vZGUgKm9yaWdp
bmFsOwogICAgICAgICBUSW50ZXJtU2VxdWVuY2UgcmVwbGFjZW1lbnRzOwogICAgIH07CkBAIC04
MDMsNyArOTQ5LDcgQEAKICAgICAvLyBUbyBpbnNlcnQgbXVsdGlwbGUgbm9kZXMgb24gdGhlIHBh
cmVudCBhZ2dyZWdhdGUgbm9kZQogICAgIHN0cnVjdCBOb2RlSW5zZXJ0TXVsdGlwbGVFbnRyeQog
ICAgIHsKLSAgICAgICAgTm9kZUluc2VydE11bHRpcGxlRW50cnkoVEludGVybUFnZ3JlZ2F0ZSAq
X3BhcmVudCwKKyAgICAgICAgTm9kZUluc2VydE11bHRpcGxlRW50cnkoVEludGVybUJsb2NrICpf
cGFyZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2U6
OnNpemVfdHlwZSBfcG9zaXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJ
bnRlcm1TZXF1ZW5jZSBfaW5zZXJ0aW9uc0JlZm9yZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVEludGVybVNlcXVlbmNlIF9pbnNlcnRpb25zQWZ0ZXIpCkBAIC04MTQsMTkgKzk2
MCwxMiBAQAogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBUSW50ZXJtQWdncmVnYXRl
ICpwYXJlbnQ7CisgICAgICAgIFRJbnRlcm1CbG9jayAqcGFyZW50OwogICAgICAgICBUSW50ZXJt
U2VxdWVuY2U6OnNpemVfdHlwZSBwb3NpdGlvbjsKICAgICAgICAgVEludGVybVNlcXVlbmNlIGlu
c2VydGlvbnNCZWZvcmU7CiAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSBpbnNlcnRpb25zQWZ0ZXI7
CiAgICAgfTsKIAotICAgIC8vIER1cmluZyB0cmF2ZXJzaW5nLCBzYXZlIGFsbCB0aGUgY2hhbmdl
cyB0aGF0IG5lZWQgdG8gaGFwcGVuIGludG8KLSAgICAvLyBtUmVwbGFjZW1lbnRzL21NdWx0aVJl
cGxhY2VtZW50cywgdGhlbiBkbyB0aGVtIGJ5IGNhbGxpbmcgdXBkYXRlVHJlZSgpLgotICAgIC8v
IE11bHRpIHJlcGxhY2VtZW50cyBhcmUgcHJvY2Vzc2VkIGFmdGVyIHNpbmdsZSByZXBsYWNlbWVu
dHMuCi0gICAgc3RkOjp2ZWN0b3I8Tm9kZVVwZGF0ZUVudHJ5PiBtUmVwbGFjZW1lbnRzOwotICAg
IHN0ZDo6dmVjdG9yPE5vZGVSZXBsYWNlV2l0aE11bHRpcGxlRW50cnk+IG1NdWx0aVJlcGxhY2Vt
ZW50czsKLSAgICBzdGQ6OnZlY3RvcjxOb2RlSW5zZXJ0TXVsdGlwbGVFbnRyeT4gbUluc2VydGlv
bnM7Ci0KICAgICAvLyBIZWxwZXIgdG8gaW5zZXJ0IHN0YXRlbWVudHMgaW4gdGhlIHBhcmVudCBi
bG9jayAoc2VxdWVuY2UpIG9mIHRoZSBub2RlIGN1cnJlbnRseSBiZWluZyB0cmF2ZXJzZWQuCiAg
ICAgLy8gVGhlIHN0YXRlbWVudHMgd2lsbCBiZSBpbnNlcnRlZCBiZWZvcmUgdGhlIG5vZGUgYmVp
bmcgdHJhdmVyc2VkIG9uY2UgdXBkYXRlVHJlZSBpcyBjYWxsZWQuCiAgICAgLy8gU2hvdWxkIG9u
bHkgYmUgY2FsbGVkIGR1cmluZyBQcmVWaXNpdCBvciBQb3N0VmlzaXQgZnJvbSBzZXF1ZW5jZSBu
b2Rlcy4KQEAgLTgzOSw2ICs5NzgsOSBAQAogICAgIHZvaWQgaW5zZXJ0U3RhdGVtZW50c0luUGFy
ZW50QmxvY2soY29uc3QgVEludGVybVNlcXVlbmNlICZpbnNlcnRpb25zQmVmb3JlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVEludGVybVNlcXVlbmNlICZp
bnNlcnRpb25zQWZ0ZXIpOwogCisgICAgLy8gSGVscGVyIHRvIGluc2VydCBhIHNpbmdsZSBzdGF0
ZW1lbnQuCisgICAgdm9pZCBpbnNlcnRTdGF0ZW1lbnRJblBhcmVudEJsb2NrKFRJbnRlcm1Ob2Rl
ICpzdGF0ZW1lbnQpOworCiAgICAgLy8gSGVscGVyIHRvIGNyZWF0ZSBhIHRlbXBvcmFyeSBzeW1i
b2wgbm9kZSB3aXRoIHRoZSBnaXZlbiBxdWFsaWZpZXIuCiAgICAgVEludGVybVN5bWJvbCAqY3Jl
YXRlVGVtcFN5bWJvbChjb25zdCBUVHlwZSAmdHlwZSwgVFF1YWxpZmllciBxdWFsaWZpZXIpOwog
ICAgIC8vIEhlbHBlciB0byBjcmVhdGUgYSB0ZW1wb3Jhcnkgc3ltYm9sIG5vZGUuCkBAIC04NTQs
MTggKzk5Niw3MyBAQAogICAgIC8vIEluY3JlbWVudCB0ZW1wb3Jhcnkgc3ltYm9sIGluZGV4Lgog
ICAgIHZvaWQgbmV4dFRlbXBvcmFyeUluZGV4KCk7CiAKKyAgICBlbnVtIGNsYXNzIE9yaWdpbmFs
Tm9kZQorICAgIHsKKyAgICAgICAgQkVDT01FU19DSElMRCwKKyAgICAgICAgSVNfRFJPUFBFRAor
ICAgIH07CisKKyAgICB2b2lkIGNsZWFyUmVwbGFjZW1lbnRRdWV1ZSgpOworICAgIHZvaWQgcXVl
dWVSZXBsYWNlbWVudChUSW50ZXJtTm9kZSAqb3JpZ2luYWwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgT3JpZ2luYWxOb2RlIG9yaWdpbmFsU3RhdHVzKTsKKyAgICB2b2lkIHF1ZXVlUmVwbGFjZW1l
bnRXaXRoUGFyZW50KFRJbnRlcm1Ob2RlICpwYXJlbnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUSW50ZXJtTm9kZSAqb3JpZ2luYWwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBPcmlnaW5hbE5vZGUgb3JpZ2luYWxTdGF0dXMpOworCisg
ICAgY29uc3QgYm9vbCBwcmVWaXNpdDsKKyAgICBjb25zdCBib29sIGluVmlzaXQ7CisgICAgY29u
c3QgYm9vbCBwb3N0VmlzaXQ7CisKKyAgICBpbnQgbURlcHRoOworICAgIGludCBtTWF4RGVwdGg7
CisKKyAgICAvLyBBbGwgdGhlIG5vZGVzIGZyb20gcm9vdCB0byB0aGUgY3VycmVudCBub2RlJ3Mg
cGFyZW50IGR1cmluZyB0cmF2ZXJzaW5nLgorICAgIFRWZWN0b3I8VEludGVybU5vZGUgKj4gbVBh
dGg7CisKKyAgICBib29sIG1Jbkdsb2JhbFNjb3BlOworCisgICAgLy8gRHVyaW5nIHRyYXZlcnNp
bmcsIHNhdmUgYWxsIHRoZSBjaGFuZ2VzIHRoYXQgbmVlZCB0byBoYXBwZW4gaW50bworICAgIC8v
IG1SZXBsYWNlbWVudHMvbU11bHRpUmVwbGFjZW1lbnRzLCB0aGVuIGRvIHRoZW0gYnkgY2FsbGlu
ZyB1cGRhdGVUcmVlKCkuCisgICAgLy8gTXVsdGkgcmVwbGFjZW1lbnRzIGFyZSBwcm9jZXNzZWQg
YWZ0ZXIgc2luZ2xlIHJlcGxhY2VtZW50cy4KKyAgICBzdGQ6OnZlY3RvcjxOb2RlUmVwbGFjZVdp
dGhNdWx0aXBsZUVudHJ5PiBtTXVsdGlSZXBsYWNlbWVudHM7CisgICAgc3RkOjp2ZWN0b3I8Tm9k
ZUluc2VydE11bHRpcGxlRW50cnk+IG1JbnNlcnRpb25zOworCiAgIHByaXZhdGU6CisgICAgLy8g
VG8gcmVwbGFjZSBhIHNpbmdsZSBub2RlIHdpdGggYW5vdGhlciBvbiB0aGUgcGFyZW50IG5vZGUK
KyAgICBzdHJ1Y3QgTm9kZVVwZGF0ZUVudHJ5CisgICAgeworICAgICAgICBOb2RlVXBkYXRlRW50
cnkoVEludGVybU5vZGUgKl9wYXJlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJt
Tm9kZSAqX29yaWdpbmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybU5vZGUgKl9y
ZXBsYWNlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgX29yaWdpbmFsQmVjb21l
c0NoaWxkT2ZSZXBsYWNlbWVudCkKKyAgICAgICAgICAgIDogcGFyZW50KF9wYXJlbnQpLAorICAg
ICAgICAgICAgICBvcmlnaW5hbChfb3JpZ2luYWwpLAorICAgICAgICAgICAgICByZXBsYWNlbWVu
dChfcmVwbGFjZW1lbnQpLAorICAgICAgICAgICAgICBvcmlnaW5hbEJlY29tZXNDaGlsZE9mUmVw
bGFjZW1lbnQoX29yaWdpbmFsQmVjb21lc0NoaWxkT2ZSZXBsYWNlbWVudCkKKyAgICAgICAgewor
ICAgICAgICB9CisKKyAgICAgICAgVEludGVybU5vZGUgKnBhcmVudDsKKyAgICAgICAgVEludGVy
bU5vZGUgKm9yaWdpbmFsOworICAgICAgICBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQ7CisgICAg
ICAgIGJvb2wgb3JpZ2luYWxCZWNvbWVzQ2hpbGRPZlJlcGxhY2VtZW50OworICAgIH07CisKICAg
ICBzdHJ1Y3QgUGFyZW50QmxvY2sKICAgICB7Ci0gICAgICAgIFBhcmVudEJsb2NrKFRJbnRlcm1B
Z2dyZWdhdGUgKm5vZGVJbiwgVEludGVybVNlcXVlbmNlOjpzaXplX3R5cGUgcG9zSW4pCi0gICAg
ICAgICAgICA6IG5vZGUobm9kZUluKSwKLSAgICAgICAgICAgICAgcG9zKHBvc0luKQorICAgICAg
ICBQYXJlbnRCbG9jayhUSW50ZXJtQmxvY2sgKm5vZGVJbiwgVEludGVybVNlcXVlbmNlOjpzaXpl
X3R5cGUgcG9zSW4pCisgICAgICAgICAgICA6IG5vZGUobm9kZUluKSwgcG9zKHBvc0luKQogICAg
ICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBUSW50ZXJtQWdncmVnYXRlICpub2RlOworICAg
ICAgICBUSW50ZXJtQmxvY2sgKm5vZGU7CiAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZTo6c2l6ZV90
eXBlIHBvczsKICAgICB9OworCisgICAgc3RkOjp2ZWN0b3I8Tm9kZVVwZGF0ZUVudHJ5PiBtUmVw
bGFjZW1lbnRzOworCiAgICAgLy8gQWxsIHRoZSBjb2RlIGJsb2NrcyBmcm9tIHRoZSByb290IHRv
IHRoZSBjdXJyZW50IG5vZGUncyBwYXJlbnQgZHVyaW5nIHRyYXZlcnNhbC4KICAgICBzdGQ6OnZl
Y3RvcjxQYXJlbnRCbG9jaz4gbVBhcmVudEJsb2NrU3RhY2s7CiAKQEAgLTg5MSw5ICsxMDg4LDEw
IEBACiAgICAgfQogICAgIHZpcnR1YWwgflRMVmFsdWVUcmFja2luZ1RyYXZlcnNlcigpIHt9CiAK
LSAgICB2b2lkIHRyYXZlcnNlQmluYXJ5KFRJbnRlcm1CaW5hcnkgKm5vZGUpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdHJhdmVyc2VVbmFyeShUSW50ZXJtVW5hcnkgKm5vZGUpIG92ZXJyaWRlOwotICAg
IHZvaWQgdHJhdmVyc2VBZ2dyZWdhdGUoVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkgb3ZlcnJpZGU7
CisgICAgdm9pZCB0cmF2ZXJzZUJpbmFyeShUSW50ZXJtQmluYXJ5ICpub2RlKSBmaW5hbDsKKyAg
ICB2b2lkIHRyYXZlcnNlVW5hcnkoVEludGVybVVuYXJ5ICpub2RlKSBmaW5hbDsKKyAgICB2b2lk
IHRyYXZlcnNlRnVuY3Rpb25EZWZpbml0aW9uKFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKm5v
ZGUpIGZpbmFsOworICAgIHZvaWQgdHJhdmVyc2VBZ2dyZWdhdGUoVEludGVybUFnZ3JlZ2F0ZSAq
bm9kZSkgZmluYWw7CiAKICAgcHJvdGVjdGVkOgogICAgIGJvb2wgaXNMVmFsdWVSZXF1aXJlZEhl
cmUoKSBjb25zdApAQCAtOTYxLDggKzExNTksMTAgQEAKIAogICAgIGJvb2wgdmlzaXRCaW5hcnko
VmlzaXQsIFRJbnRlcm1CaW5hcnkgKikgb3ZlcnJpZGUgeyByZXR1cm4gZGVwdGhDaGVjaygpOyB9
CiAgICAgYm9vbCB2aXNpdFVuYXJ5KFZpc2l0LCBUSW50ZXJtVW5hcnkgKikgb3ZlcnJpZGUgeyBy
ZXR1cm4gZGVwdGhDaGVjaygpOyB9Ci0gICAgYm9vbCB2aXNpdFNlbGVjdGlvbihWaXNpdCwgVElu
dGVybVNlbGVjdGlvbiAqKSBvdmVycmlkZSB7IHJldHVybiBkZXB0aENoZWNrKCk7IH0KKyAgICBi
b29sIHZpc2l0VGVybmFyeShWaXNpdCwgVEludGVybVRlcm5hcnkgKikgb3ZlcnJpZGUgeyByZXR1
cm4gZGVwdGhDaGVjaygpOyB9CisgICAgYm9vbCB2aXNpdElmRWxzZShWaXNpdCwgVEludGVybUlm
RWxzZSAqKSBvdmVycmlkZSB7IHJldHVybiBkZXB0aENoZWNrKCk7IH0KICAgICBib29sIHZpc2l0
QWdncmVnYXRlKFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICopIG92ZXJyaWRlIHsgcmV0dXJuIGRl
cHRoQ2hlY2soKTsgfQorICAgIGJvb2wgdmlzaXRCbG9jayhWaXNpdCwgVEludGVybUJsb2NrICop
IG92ZXJyaWRlIHsgcmV0dXJuIGRlcHRoQ2hlY2soKTsgfQogICAgIGJvb2wgdmlzaXRMb29wKFZp
c2l0LCBUSW50ZXJtTG9vcCAqKSBvdmVycmlkZSB7IHJldHVybiBkZXB0aENoZWNrKCk7IH0KICAg
ICBib29sIHZpc2l0QnJhbmNoKFZpc2l0LCBUSW50ZXJtQnJhbmNoICopIG92ZXJyaWRlIHsgcmV0
dXJuIGRlcHRoQ2hlY2soKTsgfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0lu
dGVybU5vZGVQYXR0ZXJuTWF0Y2hlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZVBhdHRlcm5NYXRj
aGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwNCBAQAorLy8KKy8vIENvcHlyaWdo
dCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisv
LyBJbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXIgaXMgYSBoZWxwZXIgY2xhc3MgZm9yIG1hdGNoaW5n
IG5vZGUgdHJlZXMgdG8gZ2l2ZW4gcGF0dGVybnMuCisvLyBJdCBjYW4gYmUgdXNlZCB3aGVuZXZl
ciB0aGUgc2FtZSBjaGVja3MgZm9yIGNlcnRhaW4gbm9kZSBzdHJ1Y3R1cmVzIGFyZSBjb21tb24g
dG8gbXVsdGlwbGUgQVNUCisvLyB0cmF2ZXJzZXJzLgorLy8KKworI2luY2x1ZGUgImNvbXBpbGVy
L3RyYW5zbGF0b3IvSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVyLmgiCisKKyNpbmNsdWRlICJjb21w
aWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuaCIKKworSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVy
OjpJbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXIoY29uc3QgdW5zaWduZWQgaW50IG1hc2spIDogbU1h
c2sobWFzaykKK3sKK30KKworLy8gc3RhdGljCitib29sIEludGVybU5vZGVQYXR0ZXJuTWF0Y2hl
cjo6SXNEeW5hbWljSW5kZXhpbmdPZlZlY3Rvck9yTWF0cml4KFRJbnRlcm1CaW5hcnkgKm5vZGUp
Cit7CisgICAgcmV0dXJuIG5vZGUtPmdldE9wKCkgPT0gRU9wSW5kZXhJbmRpcmVjdCAmJiAhbm9k
ZS0+Z2V0TGVmdCgpLT5pc0FycmF5KCkgJiYKKyAgICAgICAgICAgbm9kZS0+Z2V0TGVmdCgpLT5n
ZXRCYXNpY1R5cGUoKSAhPSBFYnRTdHJ1Y3Q7Cit9CisKK2Jvb2wgSW50ZXJtTm9kZVBhdHRlcm5N
YXRjaGVyOjptYXRjaEludGVybmFsKFRJbnRlcm1CaW5hcnkgKm5vZGUsIFRJbnRlcm1Ob2RlICpw
YXJlbnROb2RlKQoreworICAgIGlmICgobU1hc2sgJiBrRXhwcmVzc2lvblJldHVybmluZ0FycmF5
KSAhPSAwKQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUtPmlzQXJyYXkoKSAmJiBub2RlLT5nZXRP
cCgpID09IEVPcEFzc2lnbiAmJiBwYXJlbnROb2RlICE9IG51bGxwdHIgJiYKKyAgICAgICAgICAg
ICFwYXJlbnROb2RlLT5nZXRBc0Jsb2NrKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKChtTWFzayAmIGtVbmZvbGRlZFNo
b3J0Q2lyY3VpdEV4cHJlc3Npb24pICE9IDApCisgICAgeworICAgICAgICBpZiAobm9kZS0+Z2V0
UmlnaHQoKS0+aGFzU2lkZUVmZmVjdHMoKSAmJgorICAgICAgICAgICAgKG5vZGUtPmdldE9wKCkg
PT0gRU9wTG9naWNhbE9yIHx8IG5vZGUtPmdldE9wKCkgPT0gRU9wTG9naWNhbEFuZCkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBJbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXI6Om1hdGNoKFRJ
bnRlcm1CaW5hcnkgKm5vZGUsIFRJbnRlcm1Ob2RlICpwYXJlbnROb2RlKQoreworICAgIC8vIEwt
dmFsdWUgdHJhY2tpbmcgaW5mb3JtYXRpb24gaXMgbmVlZGVkIHRvIGNoZWNrIGZvciBkeW5hbWlj
IGluZGV4aW5nIGluIEwtdmFsdWUuCisgICAgLy8gVHJhdmVyc2VycyB0aGF0IGRvbid0IHRyYWNr
IGwtdmFsdWVzIGNhbiBzdGlsbCB1c2UgdGhpcyBjbGFzcyBhbmQgbWF0Y2ggYmluYXJ5IG5vZGVz
IHdpdGgKKyAgICAvLyB0aGlzIHZhcmlhdGlvbiBvZiB0aGlzIG1ldGhvZCBpZiB0aGV5IGRvbid0
IG5lZWQgdG8gY2hlY2sgZm9yIGR5bmFtaWMgaW5kZXhpbmcgaW4gbC12YWx1ZXMuCisgICAgQVNT
RVJUKChtTWFzayAmIGtEeW5hbWljSW5kZXhpbmdPZlZlY3Rvck9yTWF0cml4SW5MVmFsdWUpID09
IDApOworICAgIHJldHVybiBtYXRjaEludGVybmFsKG5vZGUsIHBhcmVudE5vZGUpOworfQorCiti
b29sIEludGVybU5vZGVQYXR0ZXJuTWF0Y2hlcjo6bWF0Y2goVEludGVybUJpbmFyeSAqbm9kZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtTm9kZSAqcGFyZW50
Tm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzTFZhbHVl
UmVxdWlyZWRIZXJlKQoreworICAgIGlmIChtYXRjaEludGVybmFsKG5vZGUsIHBhcmVudE5vZGUp
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGlmICgobU1hc2sgJiBr
RHluYW1pY0luZGV4aW5nT2ZWZWN0b3JPck1hdHJpeEluTFZhbHVlKSAhPSAwKQorICAgIHsKKyAg
ICAgICAgaWYgKGlzTFZhbHVlUmVxdWlyZWRIZXJlICYmIElzRHluYW1pY0luZGV4aW5nT2ZWZWN0
b3JPck1hdHJpeChub2RlKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEludGVybU5vZGVQ
YXR0ZXJuTWF0Y2hlcjo6bWF0Y2goVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSwgVEludGVybU5vZGUg
KnBhcmVudE5vZGUpCit7CisgICAgaWYgKChtTWFzayAmIGtFeHByZXNzaW9uUmV0dXJuaW5nQXJy
YXkpICE9IDApCisgICAgeworICAgICAgICBpZiAocGFyZW50Tm9kZSAhPSBudWxscHRyKQorICAg
ICAgICB7CisgICAgICAgICAgICBUSW50ZXJtQmluYXJ5ICpwYXJlbnRCaW5hcnkgPSBwYXJlbnRO
b2RlLT5nZXRBc0JpbmFyeU5vZGUoKTsKKyAgICAgICAgICAgIGJvb2wgcGFyZW50SXNBc3NpZ25t
ZW50ID0KKyAgICAgICAgICAgICAgICAocGFyZW50QmluYXJ5ICE9IG51bGxwdHIgJiYKKyAgICAg
ICAgICAgICAgICAgKHBhcmVudEJpbmFyeS0+Z2V0T3AoKSA9PSBFT3BBc3NpZ24gfHwgcGFyZW50
QmluYXJ5LT5nZXRPcCgpID09IEVPcEluaXRpYWxpemUpKTsKKworICAgICAgICAgICAgaWYgKG5v
ZGUtPmdldFR5cGUoKS5pc0FycmF5KCkgJiYgIXBhcmVudElzQXNzaWdubWVudCAmJgorICAgICAg
ICAgICAgICAgIChub2RlLT5pc0NvbnN0cnVjdG9yKCkgfHwgbm9kZS0+Z2V0T3AoKSA9PSBFT3BG
dW5jdGlvbkNhbGwpICYmCisgICAgICAgICAgICAgICAgIXBhcmVudE5vZGUtPmdldEFzQmxvY2so
KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgSW50
ZXJtTm9kZVBhdHRlcm5NYXRjaGVyOjptYXRjaChUSW50ZXJtVGVybmFyeSAqbm9kZSkKK3sKKyAg
ICBpZiAoKG1NYXNrICYga1VuZm9sZGVkU2hvcnRDaXJjdWl0RXhwcmVzc2lvbikgIT0gMCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbnRl
cm1Ob2RlUGF0dGVybk1hdGNoZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXIuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9JbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDUzIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEludGVybU5vZGVQYXR0ZXJuTWF0Y2hlciBpcyBh
IGhlbHBlciBjbGFzcyBmb3IgbWF0Y2hpbmcgbm9kZSB0cmVlcyB0byBnaXZlbiBwYXR0ZXJucy4K
Ky8vIEl0IGNhbiBiZSB1c2VkIHdoZW5ldmVyIHRoZSBzYW1lIGNoZWNrcyBmb3IgY2VydGFpbiBu
b2RlIHN0cnVjdHVyZXMgYXJlIGNvbW1vbiB0byBtdWx0aXBsZSBBU1QKKy8vIHRyYXZlcnNlcnMu
CisvLworCisjaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFUT1JfSU5URVJNTk9ERVBBVFRFUk5NQVRD
SEVSX0hfCisjZGVmaW5lIENPTVBJTEVSX1RSQU5TTEFUT1JfSU5URVJNTk9ERVBBVFRFUk5NQVRD
SEVSX0hfCisKK2NsYXNzIFRJbnRlcm1BZ2dyZWdhdGU7CitjbGFzcyBUSW50ZXJtQmluYXJ5Owor
Y2xhc3MgVEludGVybU5vZGU7CitjbGFzcyBUSW50ZXJtVGVybmFyeTsKKworY2xhc3MgSW50ZXJt
Tm9kZVBhdHRlcm5NYXRjaGVyCit7CisgIHB1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBJc0R5bmFt
aWNJbmRleGluZ09mVmVjdG9yT3JNYXRyaXgoVEludGVybUJpbmFyeSAqbm9kZSk7CisKKyAgICBl
bnVtIFBhdHRlcm5UeXBlCisgICAgeworICAgICAgICAvLyBNYXRjaGVzIGV4cHJlc3Npb25zIHRo
YXQgYXJlIHVuZm9sZGVkIHRvIGlmIHN0YXRlbWVudHMgYnkgVW5mb2xkU2hvcnRDaXJjdWl0VG9J
ZgorICAgICAgICBrVW5mb2xkZWRTaG9ydENpcmN1aXRFeHByZXNzaW9uID0gMHgwMDAxLAorCisg
ICAgICAgIC8vIE1hdGNoZXMgZXhwcmVzc2lvbnMgdGhhdCByZXR1cm4gYXJyYXlzIHdpdGggdGhl
IGV4Y2VwdGlvbiBvZiBzaW1wbGUgc3RhdGVtZW50cyB3aGVyZSBhCisgICAgICAgIC8vIGNvbnN0
cnVjdG9yIG9yIGZ1bmN0aW9uIGNhbGwgcmVzdWx0IGlzIGFzc2lnbmVkLgorICAgICAgICBrRXhw
cmVzc2lvblJldHVybmluZ0FycmF5ID0gMHgwMDAyLAorCisgICAgICAgIC8vIE1hdGNoZXMgZHlu
YW1pYyBpbmRleGluZyBvZiB2ZWN0b3JzIG9yIG1hdHJpY2VzIGluIGwtdmFsdWVzLgorICAgICAg
ICBrRHluYW1pY0luZGV4aW5nT2ZWZWN0b3JPck1hdHJpeEluTFZhbHVlID0gMHgwMDA0CisgICAg
fTsKKyAgICBJbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXIoY29uc3QgdW5zaWduZWQgaW50IG1hc2sp
OworCisgICAgYm9vbCBtYXRjaChUSW50ZXJtQmluYXJ5ICpub2RlLCBUSW50ZXJtTm9kZSAqcGFy
ZW50Tm9kZSk7CisKKyAgICAvLyBVc2UgdGhpcyB2ZXJzaW9uIGZvciBjaGVja2luZyBiaW5hcnkg
bm9kZSBtYXRjaGVzIGluIGNhc2UgeW91J3JlIHVzaW5nIGZsYWcKKyAgICAvLyBrRHluYW1pY0lu
ZGV4aW5nT2ZWZWN0b3JPck1hdHJpeEluTFZhbHVlLgorICAgIGJvb2wgbWF0Y2goVEludGVybUJp
bmFyeSAqbm9kZSwgVEludGVybU5vZGUgKnBhcmVudE5vZGUsIGJvb2wgaXNMVmFsdWVSZXF1aXJl
ZEhlcmUpOworCisgICAgYm9vbCBtYXRjaChUSW50ZXJtQWdncmVnYXRlICpub2RlLCBUSW50ZXJt
Tm9kZSAqcGFyZW50Tm9kZSk7CisgICAgYm9vbCBtYXRjaChUSW50ZXJtVGVybmFyeSAqbm9kZSk7
CisKKyAgcHJpdmF0ZToKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgbU1hc2s7CisKKyAgICBib29s
IG1hdGNoSW50ZXJuYWwoVEludGVybUJpbmFyeSAqbm9kZSwgVEludGVybU5vZGUgKnBhcmVudE5v
ZGUpOworfTsKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9JbnRlcm1UcmF2ZXJzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtVHJhdmVyc2Uu
Y3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9JbnRlcm1UcmF2ZXJzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDYgKzIzLDExIEBACiAgICAgaXQtPnRyYXZlcnNlQ29uc3RhbnRVbmlvbih0aGlzKTsKIH0KIAor
dm9pZCBUSW50ZXJtU3dpenpsZTo6dHJhdmVyc2UoVEludGVybVRyYXZlcnNlciAqaXQpCit7Cisg
ICAgaXQtPnRyYXZlcnNlU3dpenpsZSh0aGlzKTsKK30KKwogdm9pZCBUSW50ZXJtQmluYXJ5Ojp0
cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyICppdCkKIHsKICAgICBpdC0+dHJhdmVyc2VCaW5hcnko
dGhpcyk7CkBAIC0zMywxMSArMzgsMTYgQEAKICAgICBpdC0+dHJhdmVyc2VVbmFyeSh0aGlzKTsK
IH0KIAotdm9pZCBUSW50ZXJtU2VsZWN0aW9uOjp0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyICpp
dCkKK3ZvaWQgVEludGVybVRlcm5hcnk6OnRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIgKml0KQog
ewotICAgIGl0LT50cmF2ZXJzZVNlbGVjdGlvbih0aGlzKTsKKyAgICBpdC0+dHJhdmVyc2VUZXJu
YXJ5KHRoaXMpOwogfQogCit2b2lkIFRJbnRlcm1JZkVsc2U6OnRyYXZlcnNlKFRJbnRlcm1UcmF2
ZXJzZXIgKml0KQoreworICAgIGl0LT50cmF2ZXJzZUlmRWxzZSh0aGlzKTsKK30KKwogdm9pZCBU
SW50ZXJtU3dpdGNoOjp0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyICppdCkKIHsKICAgICBpdC0+
dHJhdmVyc2VTd2l0Y2godGhpcyk7CkBAIC00OCw2ICs1OCwxNiBAQAogICAgIGl0LT50cmF2ZXJz
ZUNhc2UodGhpcyk7CiB9CiAKK3ZvaWQgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbjo6dHJhdmVy
c2UoVEludGVybVRyYXZlcnNlciAqaXQpCit7CisgICAgaXQtPnRyYXZlcnNlRnVuY3Rpb25EZWZp
bml0aW9uKHRoaXMpOworfQorCit2b2lkIFRJbnRlcm1CbG9jazo6dHJhdmVyc2UoVEludGVybVRy
YXZlcnNlciAqaXQpCit7CisgICAgaXQtPnRyYXZlcnNlQmxvY2sodGhpcyk7Cit9CisKIHZvaWQg
VEludGVybUFnZ3JlZ2F0ZTo6dHJhdmVyc2UoVEludGVybVRyYXZlcnNlciAqaXQpCiB7CiAgICAg
aXQtPnRyYXZlcnNlQWdncmVnYXRlKHRoaXMpOwpAQCAtNjMsOCArODMsMjMgQEAKICAgICBpdC0+
dHJhdmVyc2VCcmFuY2godGhpcyk7CiB9CiAKLXZvaWQgVEludGVybVRyYXZlcnNlcjo6cHVzaFBh
cmVudEJsb2NrKFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpCitUSW50ZXJtVHJhdmVyc2VyOjpUSW50
ZXJtVHJhdmVyc2VyKGJvb2wgcHJlVmlzaXQsIGJvb2wgaW5WaXNpdCwgYm9vbCBwb3N0VmlzaXQp
CisgICAgOiBwcmVWaXNpdChwcmVWaXNpdCksCisgICAgICBpblZpc2l0KGluVmlzaXQpLAorICAg
ICAgcG9zdFZpc2l0KHBvc3RWaXNpdCksCisgICAgICBtRGVwdGgoMCksCisgICAgICBtTWF4RGVw
dGgoMCksCisgICAgICBtSW5HbG9iYWxTY29wZSh0cnVlKSwKKyAgICAgIG1UZW1wb3JhcnlJbmRl
eChudWxscHRyKQogeworfQorCitUSW50ZXJtVHJhdmVyc2VyOjp+VEludGVybVRyYXZlcnNlcigp
Cit7Cit9CisKK3ZvaWQgVEludGVybVRyYXZlcnNlcjo6cHVzaFBhcmVudEJsb2NrKFRJbnRlcm1C
bG9jayAqbm9kZSkKK3sKICAgICBtUGFyZW50QmxvY2tTdGFjay5wdXNoX2JhY2soUGFyZW50Qmxv
Y2sobm9kZSwgMCkpOwogfQogCkBAIC05NCw2ICsxMjksMTMgQEAKICAgICBtSW5zZXJ0aW9ucy5w
dXNoX2JhY2soaW5zZXJ0KTsKIH0KIAordm9pZCBUSW50ZXJtVHJhdmVyc2VyOjppbnNlcnRTdGF0
ZW1lbnRJblBhcmVudEJsb2NrKFRJbnRlcm1Ob2RlICpzdGF0ZW1lbnQpCit7CisgICAgVEludGVy
bVNlcXVlbmNlIGluc2VydGlvbnM7CisgICAgaW5zZXJ0aW9ucy5wdXNoX2JhY2soc3RhdGVtZW50
KTsKKyAgICBpbnNlcnRTdGF0ZW1lbnRzSW5QYXJlbnRCbG9jayhpbnNlcnRpb25zKTsKK30KKwog
VEludGVybVN5bWJvbCAqVEludGVybVRyYXZlcnNlcjo6Y3JlYXRlVGVtcFN5bWJvbChjb25zdCBU
VHlwZSAmdHlwZSwgVFF1YWxpZmllciBxdWFsaWZpZXIpCiB7CiAgICAgLy8gRWFjaCB0cmF2ZXJz
YWwgdXNlcyBhdCBtb3N0IG9uZSB0ZW1wb3JhcnkgdmFyaWFibGUsIHNvIHRoZSBpbmRleCBzdGF5
cyB0aGUgc2FtZSB3aXRoaW4gYSBzaW5nbGUgdHJhdmVyc2FsLgpAQCAtMTI1LDEwICsxNjcsNyBA
QAogICAgIEFTU0VSVChpbml0aWFsaXplciAhPSBudWxscHRyKTsKICAgICBUSW50ZXJtU3ltYm9s
ICp0ZW1wU3ltYm9sID0gY3JlYXRlVGVtcFN5bWJvbChpbml0aWFsaXplci0+Z2V0VHlwZSgpLCBx
dWFsaWZpZXIpOwogICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnRlbXBEZWNsYXJhdGlvbiA9IG5ldyBU
SW50ZXJtQWdncmVnYXRlKEVPcERlY2xhcmF0aW9uKTsKLSAgICBUSW50ZXJtQmluYXJ5ICp0ZW1w
SW5pdCA9IG5ldyBUSW50ZXJtQmluYXJ5KEVPcEluaXRpYWxpemUpOwotICAgIHRlbXBJbml0LT5z
ZXRMZWZ0KHRlbXBTeW1ib2wpOwotICAgIHRlbXBJbml0LT5zZXRSaWdodChpbml0aWFsaXplcik7
Ci0gICAgdGVtcEluaXQtPnNldFR5cGUodGVtcFN5bWJvbC0+Z2V0VHlwZSgpKTsKKyAgICBUSW50
ZXJtQmluYXJ5ICp0ZW1wSW5pdCAgICAgICAgICAgPSBuZXcgVEludGVybUJpbmFyeShFT3BJbml0
aWFsaXplLCB0ZW1wU3ltYm9sLCBpbml0aWFsaXplcik7CiAgICAgdGVtcERlY2xhcmF0aW9uLT5n
ZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2sodGVtcEluaXQpOwogICAgIHJldHVybiB0ZW1wRGVjbGFy
YXRpb247CiB9CkBAIC0xNDIsMTAgKzE4MSw3IEBACiB7CiAgICAgQVNTRVJUKHJpZ2h0Tm9kZSAh
PSBudWxscHRyKTsKICAgICBUSW50ZXJtU3ltYm9sICp0ZW1wU3ltYm9sID0gY3JlYXRlVGVtcFN5
bWJvbChyaWdodE5vZGUtPmdldFR5cGUoKSk7Ci0gICAgVEludGVybUJpbmFyeSAqYXNzaWdubWVu
dCA9IG5ldyBUSW50ZXJtQmluYXJ5KEVPcEFzc2lnbik7Ci0gICAgYXNzaWdubWVudC0+c2V0TGVm
dCh0ZW1wU3ltYm9sKTsKLSAgICBhc3NpZ25tZW50LT5zZXRSaWdodChyaWdodE5vZGUpOwotICAg
IGFzc2lnbm1lbnQtPnNldFR5cGUodGVtcFN5bWJvbC0+Z2V0VHlwZSgpKTsKKyAgICBUSW50ZXJt
QmluYXJ5ICphc3NpZ25tZW50ID0gbmV3IFRJbnRlcm1CaW5hcnkoRU9wQXNzaWduLCB0ZW1wU3lt
Ym9sLCByaWdodE5vZGUpOwogICAgIHJldHVybiBhc3NpZ25tZW50OwogfQogCkBAIC0xNjgsMTMg
KzIwNCwxNCBAQAogYm9vbCBUTFZhbHVlVHJhY2tpbmdUcmF2ZXJzZXI6OmlzSW5GdW5jdGlvbk1h
cChjb25zdCBUSW50ZXJtQWdncmVnYXRlICpjYWxsTm9kZSkgY29uc3QKIHsKICAgICBBU1NFUlQo
Y2FsbE5vZGUtPmdldE9wKCkgPT0gRU9wRnVuY3Rpb25DYWxsKTsKLSAgICByZXR1cm4gKG1GdW5j
dGlvbk1hcC5maW5kKGNhbGxOb2RlLT5nZXROYW1lT2JqKCkpICE9IG1GdW5jdGlvbk1hcC5lbmQo
KSk7CisgICAgcmV0dXJuIChtRnVuY3Rpb25NYXAuZmluZChjYWxsTm9kZS0+Z2V0RnVuY3Rpb25T
eW1ib2xJbmZvKCktPmdldE5hbWVPYmooKSkgIT0KKyAgICAgICAgICAgIG1GdW5jdGlvbk1hcC5l
bmQoKSk7CiB9CiAKIFRJbnRlcm1TZXF1ZW5jZSAqVExWYWx1ZVRyYWNraW5nVHJhdmVyc2VyOjpn
ZXRGdW5jdGlvblBhcmFtZXRlcnMoY29uc3QgVEludGVybUFnZ3JlZ2F0ZSAqY2FsbE5vZGUpCiB7
CiAgICAgQVNTRVJUKGlzSW5GdW5jdGlvbk1hcChjYWxsTm9kZSkpOwotICAgIHJldHVybiBtRnVu
Y3Rpb25NYXBbY2FsbE5vZGUtPmdldE5hbWVPYmooKV07CisgICAgcmV0dXJuIG1GdW5jdGlvbk1h
cFtjYWxsTm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5hbWVPYmooKV07CiB9CiAK
IHZvaWQgVExWYWx1ZVRyYWNraW5nVHJhdmVyc2VyOjpzZXRJbkZ1bmN0aW9uQ2FsbE91dFBhcmFt
ZXRlcihib29sIGluT3V0UGFyYW1ldGVyKQpAQCAtMjExLDYgKzI0OCwyNiBAQAogICAgIHZpc2l0
Q29uc3RhbnRVbmlvbihub2RlKTsKIH0KIAordm9pZCBUSW50ZXJtVHJhdmVyc2VyOjp0cmF2ZXJz
ZVN3aXp6bGUoVEludGVybVN3aXp6bGUgKm5vZGUpCit7CisgICAgYm9vbCB2aXNpdCA9IHRydWU7
CisKKyAgICBpZiAocHJlVmlzaXQpCisgICAgICAgIHZpc2l0ID0gdmlzaXRTd2l6emxlKFByZVZp
c2l0LCBub2RlKTsKKworICAgIGlmICh2aXNpdCkKKyAgICB7CisgICAgICAgIGluY3JlbWVudERl
cHRoKG5vZGUpOworCisgICAgICAgIG5vZGUtPmdldE9wZXJhbmQoKS0+dHJhdmVyc2UodGhpcyk7
CisKKyAgICAgICAgZGVjcmVtZW50RGVwdGgoKTsKKyAgICB9CisKKyAgICBpZiAodmlzaXQgJiYg
cG9zdFZpc2l0KQorICAgICAgICB2aXNpdFN3aXp6bGUoUG9zdFZpc2l0LCBub2RlKTsKK30KKwog
Ly8KIC8vIFRyYXZlcnNlIGEgYmluYXJ5IG5vZGUuCiAvLwpAQCAtMzcyLDkgKzQyOSw2OCBAQAog
ICAgICAgICB2aXNpdFVuYXJ5KFBvc3RWaXNpdCwgbm9kZSk7CiB9CiAKLS8vCisvLyBUcmF2ZXJz
ZSBhIGZ1bmN0aW9uIGRlZmluaXRpb24gbm9kZS4KK3ZvaWQgVEludGVybVRyYXZlcnNlcjo6dHJh
dmVyc2VGdW5jdGlvbkRlZmluaXRpb24oVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAqbm9kZSkK
K3sKKyAgICBib29sIHZpc2l0ID0gdHJ1ZTsKKworICAgIGlmIChwcmVWaXNpdCkKKyAgICAgICAg
dmlzaXQgPSB2aXNpdEZ1bmN0aW9uRGVmaW5pdGlvbihQcmVWaXNpdCwgbm9kZSk7CisKKyAgICBp
ZiAodmlzaXQpCisgICAgeworICAgICAgICBpbmNyZW1lbnREZXB0aChub2RlKTsKKyAgICAgICAg
bUluR2xvYmFsU2NvcGUgPSBmYWxzZTsKKworICAgICAgICBub2RlLT5nZXRGdW5jdGlvblBhcmFt
ZXRlcnMoKS0+dHJhdmVyc2UodGhpcyk7CisgICAgICAgIGlmIChpblZpc2l0KQorICAgICAgICAg
ICAgdmlzaXQgPSB2aXNpdEZ1bmN0aW9uRGVmaW5pdGlvbihJblZpc2l0LCBub2RlKTsKKyAgICAg
ICAgbm9kZS0+Z2V0Qm9keSgpLT50cmF2ZXJzZSh0aGlzKTsKKworICAgICAgICBtSW5HbG9iYWxT
Y29wZSA9IHRydWU7CisgICAgICAgIGRlY3JlbWVudERlcHRoKCk7CisgICAgfQorCisgICAgaWYg
KHZpc2l0ICYmIHBvc3RWaXNpdCkKKyAgICAgICAgdmlzaXRGdW5jdGlvbkRlZmluaXRpb24oUG9z
dFZpc2l0LCBub2RlKTsKK30KKworLy8gVHJhdmVyc2UgYSBibG9jayBub2RlLgordm9pZCBUSW50
ZXJtVHJhdmVyc2VyOjp0cmF2ZXJzZUJsb2NrKFRJbnRlcm1CbG9jayAqbm9kZSkKK3sKKyAgICBi
b29sIHZpc2l0ID0gdHJ1ZTsKKworICAgIFRJbnRlcm1TZXF1ZW5jZSAqc2VxdWVuY2UgPSBub2Rl
LT5nZXRTZXF1ZW5jZSgpOworCisgICAgaWYgKHByZVZpc2l0KQorICAgICAgICB2aXNpdCA9IHZp
c2l0QmxvY2soUHJlVmlzaXQsIG5vZGUpOworCisgICAgaWYgKHZpc2l0KQorICAgIHsKKyAgICAg
ICAgaW5jcmVtZW50RGVwdGgobm9kZSk7CisgICAgICAgIHB1c2hQYXJlbnRCbG9jayhub2RlKTsK
KworICAgICAgICBmb3IgKGF1dG8gKmNoaWxkIDogKnNlcXVlbmNlKQorICAgICAgICB7CisgICAg
ICAgICAgICBjaGlsZC0+dHJhdmVyc2UodGhpcyk7CisgICAgICAgICAgICBpZiAodmlzaXQgJiYg
aW5WaXNpdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGQgIT0gc2Vx
dWVuY2UtPmJhY2soKSkKKyAgICAgICAgICAgICAgICAgICAgdmlzaXQgPSB2aXNpdEJsb2NrKElu
VmlzaXQsIG5vZGUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpbmNyZW1lbnRQYXJl
bnRCbG9ja1BvcygpOworICAgICAgICB9CisKKyAgICAgICAgcG9wUGFyZW50QmxvY2soKTsKKyAg
ICAgICAgZGVjcmVtZW50RGVwdGgoKTsKKyAgICB9CisKKyAgICBpZiAodmlzaXQgJiYgcG9zdFZp
c2l0KQorICAgICAgICB2aXNpdEJsb2NrKFBvc3RWaXNpdCwgbm9kZSk7Cit9CisKIC8vIFRyYXZl
cnNlIGFuIGFnZ3JlZ2F0ZSBub2RlLiAgU2FtZSBjb21tZW50cyBpbiBiaW5hcnkgbm9kZSBhcHBs
eSBoZXJlLgotLy8KIHZvaWQgVEludGVybVRyYXZlcnNlcjo6dHJhdmVyc2VBZ2dyZWdhdGUoVElu
dGVybUFnZ3JlZ2F0ZSAqbm9kZSkKIHsKICAgICBib29sIHZpc2l0ID0gdHJ1ZTsKQEAgLTM4OCw5
ICs1MDQsNiBAQAogICAgIHsKICAgICAgICAgaW5jcmVtZW50RGVwdGgobm9kZSk7CiAKLSAgICAg
ICAgaWYgKG5vZGUtPmdldE9wKCkgPT0gRU9wU2VxdWVuY2UpCi0gICAgICAgICAgICBwdXNoUGFy
ZW50QmxvY2sobm9kZSk7Ci0KICAgICAgICAgZm9yIChhdXRvICpjaGlsZCA6ICpzZXF1ZW5jZSkK
ICAgICAgICAgewogICAgICAgICAgICAgY2hpbGQtPnRyYXZlcnNlKHRoaXMpOwpAQCAtMzk5LDE0
ICs1MTIsOCBAQAogICAgICAgICAgICAgICAgIGlmIChjaGlsZCAhPSBzZXF1ZW5jZS0+YmFjaygp
KQogICAgICAgICAgICAgICAgICAgICB2aXNpdCA9IHZpc2l0QWdncmVnYXRlKEluVmlzaXQsIG5v
ZGUpOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAobm9kZS0+Z2V0T3AoKSA9PSBF
T3BTZXF1ZW5jZSkKLSAgICAgICAgICAgICAgICBpbmNyZW1lbnRQYXJlbnRCbG9ja1BvcygpOwog
ICAgICAgICB9CiAKLSAgICAgICAgaWYgKG5vZGUtPmdldE9wKCkgPT0gRU9wU2VxdWVuY2UpCi0g
ICAgICAgICAgICBwb3BQYXJlbnRCbG9jaygpOwotCiAgICAgICAgIGRlY3JlbWVudERlcHRoKCk7
CiAgICAgfQogCkBAIC00MTQsMjYgKzUyMSwyNCBAQAogICAgICAgICB2aXNpdEFnZ3JlZ2F0ZShQ
b3N0VmlzaXQsIG5vZGUpOwogfQogCit2b2lkIFRMVmFsdWVUcmFja2luZ1RyYXZlcnNlcjo6dHJh
dmVyc2VGdW5jdGlvbkRlZmluaXRpb24oVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAqbm9kZSkK
K3sKKyAgICBUSW50ZXJtQWdncmVnYXRlICpwYXJhbXMgPSBub2RlLT5nZXRGdW5jdGlvblBhcmFt
ZXRlcnMoKTsKKyAgICBBU1NFUlQocGFyYW1zICE9IG51bGxwdHIpOworICAgIEFTU0VSVChwYXJh
bXMtPmdldE9wKCkgPT0gRU9wUGFyYW1ldGVycyk7CisgICAgYWRkVG9GdW5jdGlvbk1hcChub2Rl
LT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0TmFtZU9iaigpLCBwYXJhbXMtPmdldFNlcXVl
bmNlKCkpOworCisgICAgVEludGVybVRyYXZlcnNlcjo6dHJhdmVyc2VGdW5jdGlvbkRlZmluaXRp
b24obm9kZSk7Cit9CisKIHZvaWQgVExWYWx1ZVRyYWNraW5nVHJhdmVyc2VyOjp0cmF2ZXJzZUFn
Z3JlZ2F0ZShUSW50ZXJtQWdncmVnYXRlICpub2RlKQogewogICAgIGJvb2wgdmlzaXQgPSB0cnVl
OwogCiAgICAgVEludGVybVNlcXVlbmNlICpzZXF1ZW5jZSA9IG5vZGUtPmdldFNlcXVlbmNlKCk7
Ci0gICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQorICAgIGlmIChub2RlLT5nZXRPcCgpID09IEVP
cFByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIGNhc2UgRU9wRnVuY3Rpb246Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnBhcmFtcyA9IHNlcXVlbmNlLT5mcm9udCgp
LT5nZXRBc0FnZ3JlZ2F0ZSgpOwotICAgICAgICAgICAgQVNTRVJUKHBhcmFtcyAhPSBudWxscHRy
KTsKLSAgICAgICAgICAgIEFTU0VSVChwYXJhbXMtPmdldE9wKCkgPT0gRU9wUGFyYW1ldGVycyk7
Ci0gICAgICAgICAgICBhZGRUb0Z1bmN0aW9uTWFwKG5vZGUtPmdldE5hbWVPYmooKSwgcGFyYW1z
LT5nZXRTZXF1ZW5jZSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgRU9wUHJvdG90eXBlOgotICAgICAgICAgICAgYWRkVG9GdW5jdGlvbk1hcChub2RlLT5n
ZXROYW1lT2JqKCksIHNlcXVlbmNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGFkZFRvRnVuY3Rpb25NYXAobm9kZS0+
Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5hbWVPYmooKSwgc2VxdWVuY2UpOwogICAgIH0K
IAogICAgIGlmIChwcmVWaXNpdCkKQEAgLTQ3OSw5ICs1ODQsNiBAQAogICAgICAgICB9CiAgICAg
ICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vZGUtPmdldE9wKCkgPT0gRU9w
U2VxdWVuY2UpCi0gICAgICAgICAgICAgICAgcHVzaFBhcmVudEJsb2NrKG5vZGUpOwotCiAgICAg
ICAgICAgICAvLyBGaW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvbiBjb3JyZXNwb25kaW5nIHRvIHRo
aXMgb3Agc28gdGhhdCB3ZSBjYW4gZGV0ZXJtaW5lIHRoZQogICAgICAgICAgICAgLy8gaW4vb3V0
IHF1YWxpZmllcnMgb2YgaXRzIHBhcmFtZXRlcnMuCiAgICAgICAgICAgICBURnVuY3Rpb24gKmJ1
aWx0SW5GdW5jID0gbnVsbHB0cjsKQEAgLTUyMywxNiArNjI1LDEwIEBACiAgICAgICAgICAgICAg
ICAgICAgICAgICB2aXNpdCA9IHZpc2l0QWdncmVnYXRlKEluVmlzaXQsIG5vZGUpOwogICAgICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGlmIChub2RlLT5nZXRPcCgpID09IEVPcFNl
cXVlbmNlKQotICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnRQYXJlbnRCbG9ja1BvcygpOwot
CiAgICAgICAgICAgICAgICAgKytwYXJhbUluZGV4OwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBzZXRJbkZ1bmN0aW9uQ2FsbE91dFBhcmFtZXRlcihmYWxzZSk7Ci0KLSAgICAgICAgICAg
IGlmIChub2RlLT5nZXRPcCgpID09IEVPcFNlcXVlbmNlKQotICAgICAgICAgICAgICAgIHBvcFBh
cmVudEJsb2NrKCk7CiAgICAgICAgIH0KIAogICAgICAgICBkZWNyZW1lbnREZXB0aCgpOwpAQCAt
NTQzLDE5ICs2MzksNDIgQEAKIH0KIAogLy8KLS8vIFRyYXZlcnNlIGEgc2VsZWN0aW9uIG5vZGUu
ICBTYW1lIGNvbW1lbnRzIGluIGJpbmFyeSBub2RlIGFwcGx5IGhlcmUuCisvLyBUcmF2ZXJzZSBh
IHRlcm5hcnkgbm9kZS4gIFNhbWUgY29tbWVudHMgaW4gYmluYXJ5IG5vZGUgYXBwbHkgaGVyZS4K
IC8vCi12b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNlU2VsZWN0aW9uKFRJbnRlcm1TZWxl
Y3Rpb24gKm5vZGUpCit2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNlVGVybmFyeShUSW50
ZXJtVGVybmFyeSAqbm9kZSkKIHsKICAgICBib29sIHZpc2l0ID0gdHJ1ZTsKIAogICAgIGlmIChw
cmVWaXNpdCkKLSAgICAgICAgdmlzaXQgPSB2aXNpdFNlbGVjdGlvbihQcmVWaXNpdCwgbm9kZSk7
CisgICAgICAgIHZpc2l0ID0gdmlzaXRUZXJuYXJ5KFByZVZpc2l0LCBub2RlKTsKIAogICAgIGlm
ICh2aXNpdCkKICAgICB7CiAgICAgICAgIGluY3JlbWVudERlcHRoKG5vZGUpOwogICAgICAgICBu
b2RlLT5nZXRDb25kaXRpb24oKS0+dHJhdmVyc2UodGhpcyk7CisgICAgICAgIGlmIChub2RlLT5n
ZXRUcnVlRXhwcmVzc2lvbigpKQorICAgICAgICAgICAgbm9kZS0+Z2V0VHJ1ZUV4cHJlc3Npb24o
KS0+dHJhdmVyc2UodGhpcyk7CisgICAgICAgIGlmIChub2RlLT5nZXRGYWxzZUV4cHJlc3Npb24o
KSkKKyAgICAgICAgICAgIG5vZGUtPmdldEZhbHNlRXhwcmVzc2lvbigpLT50cmF2ZXJzZSh0aGlz
KTsKKyAgICAgICAgZGVjcmVtZW50RGVwdGgoKTsKKyAgICB9CisKKyAgICBpZiAodmlzaXQgJiYg
cG9zdFZpc2l0KQorICAgICAgICB2aXNpdFRlcm5hcnkoUG9zdFZpc2l0LCBub2RlKTsKK30KKwor
Ly8gVHJhdmVyc2UgYW4gaWYtZWxzZSBub2RlLiAgU2FtZSBjb21tZW50cyBpbiBiaW5hcnkgbm9k
ZSBhcHBseSBoZXJlLgordm9pZCBUSW50ZXJtVHJhdmVyc2VyOjp0cmF2ZXJzZUlmRWxzZShUSW50
ZXJtSWZFbHNlICpub2RlKQoreworICAgIGJvb2wgdmlzaXQgPSB0cnVlOworCisgICAgaWYgKHBy
ZVZpc2l0KQorICAgICAgICB2aXNpdCA9IHZpc2l0SWZFbHNlKFByZVZpc2l0LCBub2RlKTsKKwor
ICAgIGlmICh2aXNpdCkKKyAgICB7CisgICAgICAgIGluY3JlbWVudERlcHRoKG5vZGUpOworICAg
ICAgICBub2RlLT5nZXRDb25kaXRpb24oKS0+dHJhdmVyc2UodGhpcyk7CiAgICAgICAgIGlmIChu
b2RlLT5nZXRUcnVlQmxvY2soKSkKICAgICAgICAgICAgIG5vZGUtPmdldFRydWVCbG9jaygpLT50
cmF2ZXJzZSh0aGlzKTsKICAgICAgICAgaWYgKG5vZGUtPmdldEZhbHNlQmxvY2soKSkKQEAgLTU2
NCw3ICs2ODMsNyBAQAogICAgIH0KIAogICAgIGlmICh2aXNpdCAmJiBwb3N0VmlzaXQpCi0gICAg
ICAgIHZpc2l0U2VsZWN0aW9uKFBvc3RWaXNpdCwgbm9kZSk7CisgICAgICAgIHZpc2l0SWZFbHNl
KFBvc3RWaXNpdCwgbm9kZSk7CiB9CiAKIC8vCkBAIC02MDMsNyArNzIyLDExIEBACiAgICAgICAg
IHZpc2l0ID0gdmlzaXRDYXNlKFByZVZpc2l0LCBub2RlKTsKIAogICAgIGlmICh2aXNpdCAmJiBu
b2RlLT5nZXRDb25kaXRpb24oKSkKKyAgICB7CisgICAgICAgIGluY3JlbWVudERlcHRoKG5vZGUp
OwogICAgICAgICBub2RlLT5nZXRDb25kaXRpb24oKS0+dHJhdmVyc2UodGhpcyk7CisgICAgICAg
IGRlY3JlbWVudERlcHRoKCk7CisgICAgfQogCiAgICAgaWYgKHZpc2l0ICYmIHBvc3RWaXNpdCkK
ICAgICAgICAgdmlzaXRDYXNlKFBvc3RWaXNpdCwgbm9kZSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1lZGlhdGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L0ludGVybWVkaWF0ZS5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0ludGVybWVkaWF0ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDYxICszOCw2IEBACiB9CiAKIC8vCi0vLyBDb25uZWN0IHR3byBub2RlcyB3
aXRoIGEgbmV3IHBhcmVudCB0aGF0IGRvZXMgYSBiaW5hcnkgb3BlcmF0aW9uIG9uIHRoZSBub2Rl
cy4KLS8vCi0vLyBSZXR1cm5zIHRoZSBhZGRlZCBub2RlLgotLy8KLVRJbnRlcm1UeXBlZCAqVElu
dGVybWVkaWF0ZTo6YWRkQmluYXJ5TWF0aCgKLSAgICBUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBl
ZCAqbGVmdCwgVEludGVybVR5cGVkICpyaWdodCwgY29uc3QgVFNvdXJjZUxvYyAmbGluZSkKLXsK
LSAgICAvLwotICAgIC8vIE5lZWQgYSBuZXcgbm9kZSBob2xkaW5nIHRoaW5ncyB0b2dldGhlciB0
aGVuLiAgTWFrZQotICAgIC8vIG9uZSBhbmQgcHJvbW90ZSBpdCB0byB0aGUgcmlnaHQgdHlwZS4K
LSAgICAvLwotICAgIFRJbnRlcm1CaW5hcnkgKm5vZGUgPSBuZXcgVEludGVybUJpbmFyeShvcCk7
Ci0gICAgbm9kZS0+c2V0TGluZShsaW5lKTsKLQotICAgIG5vZGUtPnNldExlZnQobGVmdCk7Ci0g
ICAgbm9kZS0+c2V0UmlnaHQocmlnaHQpOwotICAgIGlmICghbm9kZS0+cHJvbW90ZShtSW5mb1Np
bmspKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIC8vIFNlZSBpZiB3ZSBjYW4gZm9sZCBj
b25zdGFudHMuCi0gICAgVEludGVybVR5cGVkICpmb2xkZWROb2RlID0gbm9kZS0+Zm9sZChtSW5m
b1NpbmspOwotICAgIGlmIChmb2xkZWROb2RlKQotICAgICAgICByZXR1cm4gZm9sZGVkTm9kZTsK
LQotICAgIHJldHVybiBub2RlOwotfQotCi0vLwotLy8gQ29ubmVjdCB0d28gbm9kZXMgdGhyb3Vn
aCBhbiBhc3NpZ25tZW50LgotLy8KLS8vIFJldHVybnMgdGhlIGFkZGVkIG5vZGUuCi0vLwotVElu
dGVybVR5cGVkICpUSW50ZXJtZWRpYXRlOjphZGRBc3NpZ24oCi0gICAgVE9wZXJhdG9yIG9wLCBU
SW50ZXJtVHlwZWQgKmxlZnQsIFRJbnRlcm1UeXBlZCAqcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2Mg
JmxpbmUpCi17Ci0gICAgaWYgKGxlZnQtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKSB8fCByaWdodC0+
Z2V0VHlwZSgpLmdldFN0cnVjdCgpKQotICAgIHsKLSAgICAgICAgaWYgKGxlZnQtPmdldFR5cGUo
KSAhPSByaWdodC0+Z2V0VHlwZSgpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gTlVM
TDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIFRJbnRlcm1CaW5hcnkgKm5vZGUgPSBuZXcgVElu
dGVybUJpbmFyeShvcCk7Ci0gICAgbm9kZS0+c2V0TGluZShsaW5lKTsKLQotICAgIG5vZGUtPnNl
dExlZnQobGVmdCk7Ci0gICAgbm9kZS0+c2V0UmlnaHQocmlnaHQpOwotICAgIGlmICghbm9kZS0+
cHJvbW90ZShtSW5mb1NpbmspKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHVybiBu
b2RlOwotfQotCi0vLwogLy8gQ29ubmVjdCB0d28gbm9kZXMgdGhyb3VnaCBhbiBpbmRleCBvcGVy
YXRvciwgd2hlcmUgdGhlIGxlZnQgbm9kZSBpcyB0aGUgYmFzZQogLy8gb2YgYW4gYXJyYXkgb3Ig
c3RydWN0LCBhbmQgdGhlIHJpZ2h0IG5vZGUgaXMgYSBkaXJlY3Qgb3IgaW5kaXJlY3Qgb2Zmc2V0
LgogLy8KQEAgLTk5LDUyICs0NCwzMCBAQAogLy8gUmV0dXJucyB0aGUgYWRkZWQgbm9kZS4KIC8v
IFRoZSBjYWxsZXIgc2hvdWxkIHNldCB0aGUgdHlwZSBvZiB0aGUgcmV0dXJuZWQgbm9kZS4KIC8v
Ci1USW50ZXJtVHlwZWQgKlRJbnRlcm1lZGlhdGU6OmFkZEluZGV4KAotICAgIFRPcGVyYXRvciBv
cCwgVEludGVybVR5cGVkICpiYXNlLCBUSW50ZXJtVHlwZWQgKmluZGV4LCBjb25zdCBUU291cmNl
TG9jICZsaW5lKQorVEludGVybVR5cGVkICpUSW50ZXJtZWRpYXRlOjphZGRJbmRleChUT3BlcmF0
b3Igb3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBl
ZCAqYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5
cGVkICppbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFNvdXJjZUxvYyAmbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VERpYWdub3N0aWNzICpkaWFnbm9zdGljcykKIHsKLSAgICBUSW50ZXJtQmluYXJ5ICpub2RlID0g
bmV3IFRJbnRlcm1CaW5hcnkob3ApOworICAgIFRJbnRlcm1CaW5hcnkgKm5vZGUgPSBuZXcgVElu
dGVybUJpbmFyeShvcCwgYmFzZSwgaW5kZXgpOwogICAgIG5vZGUtPnNldExpbmUobGluZSk7Ci0g
ICAgbm9kZS0+c2V0TGVmdChiYXNlKTsKLSAgICBub2RlLT5zZXRSaWdodChpbmRleCk7CiAKLSAg
ICAvLyBjYWxsZXIgc2hvdWxkIHNldCB0aGUgdHlwZQorICAgIFRJbnRlcm1UeXBlZCAqZm9sZGVk
ID0gbm9kZS0+Zm9sZChkaWFnbm9zdGljcyk7CisgICAgaWYgKGZvbGRlZCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBmb2xkZWQ7CisgICAgfQogCiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLS8vCi0v
LyBBZGQgb25lIG5vZGUgYXMgdGhlIHBhcmVudCBvZiBhbm90aGVyIHRoYXQgaXQgb3BlcmF0ZXMg
b24uCi0vLwotLy8gUmV0dXJucyB0aGUgYWRkZWQgbm9kZS4KLS8vCi1USW50ZXJtVHlwZWQgKlRJ
bnRlcm1lZGlhdGU6OmFkZFVuYXJ5TWF0aCgKLSAgICBUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBl
ZCAqY2hpbGQsIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0IFRUeXBlICpmdW5jUmV0dXJu
VHlwZSkKLXsKLSAgICAvLwotICAgIC8vIE1ha2UgYSBuZXcgbm9kZSBmb3IgdGhlIG9wZXJhdG9y
LgotICAgIC8vCi0gICAgVEludGVybVVuYXJ5ICpub2RlID0gbmV3IFRJbnRlcm1VbmFyeShvcCk7
Ci0gICAgbm9kZS0+c2V0TGluZShsaW5lKTsKLSAgICBub2RlLT5zZXRPcGVyYW5kKGNoaWxkKTsK
LSAgICBub2RlLT5wcm9tb3RlKGZ1bmNSZXR1cm5UeXBlKTsKLQotICAgIFRJbnRlcm1UeXBlZCAq
Zm9sZGVkTm9kZSA9IG5vZGUtPmZvbGQobUluZm9TaW5rKTsKLSAgICBpZiAoZm9sZGVkTm9kZSkK
LSAgICAgICAgcmV0dXJuIGZvbGRlZE5vZGU7Ci0KLSAgICByZXR1cm4gbm9kZTsKLX0KLQotLy8K
IC8vIFRoaXMgaXMgdGhlIHNhZmUgd2F5IHRvIGNoYW5nZSB0aGUgb3BlcmF0b3Igb24gYW4gYWdn
cmVnYXRlLCBhcyBpdAogLy8gZG9lcyBsb3RzIG9mIGVycm9yIGNoZWNraW5nIGFuZCBmaXhpbmcu
ICBFc3BlY2lhbGx5IGZvciBlc3RhYmxpc2hpbmcKLS8vIGEgZnVuY3Rpb24gY2FsbCdzIG9wZXJh
dGlvbiBvbiBpdCdzIHNldCBvZiBwYXJhbWV0ZXJzLiAgU2VxdWVuY2VzCi0vLyBvZiBpbnN0cnVj
dGlvbnMgYXJlIGFsc28gYWdncmVnYXRlcywgYnV0IHRoZXkganVzdCBkaXJlbmN0bHkgc2V0Ci0v
LyB0aGVpciBvcGVyYXRvciB0byBFT3BTZXF1ZW5jZS4KKy8vIGEgZnVuY3Rpb24gY2FsbCdzIG9w
ZXJhdGlvbiBvbiBpdCdzIHNldCBvZiBwYXJhbWV0ZXJzLgogLy8KIC8vIFJldHVybnMgYW4gYWdn
cmVnYXRlIG5vZGUsIHdoaWNoIGNvdWxkIGJlIHRoZSBvbmUgcGFzc2VkIGluIGlmCiAvLyBpdCB3
YXMgYWxyZWFkeSBhbiBhZ2dyZWdhdGUgYnV0IG5vIG9wZXJhdG9yIHdhcyBzZXQuCi0vLwogVElu
dGVybUFnZ3JlZ2F0ZSAqVEludGVybWVkaWF0ZTo6c2V0QWdncmVnYXRlT3BlcmF0b3IoCiAgICAg
VEludGVybU5vZGUgKm5vZGUsIFRPcGVyYXRvciBvcCwgY29uc3QgVFNvdXJjZUxvYyAmbGluZSkK
IHsKQEAgLTIxNSwxMSArMTM4LDEwIEBACiAvLwogLy8gUmV0dXJucyBhbiBhZ2dyZWdhdGUsIHVu
bGVzcyBOVUxMIHdhcyBwYXNzZWQgaW4gZm9yIHRoZSBleGlzdGluZyBub2RlLgogLy8KLVRJbnRl
cm1BZ2dyZWdhdGUgKlRJbnRlcm1lZGlhdGU6Om1ha2VBZ2dyZWdhdGUoCi0gICAgVEludGVybU5v
ZGUgKm5vZGUsIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpCitUSW50ZXJtQWdncmVnYXRlICpUSW50
ZXJtZWRpYXRlOjpNYWtlQWdncmVnYXRlKFRJbnRlcm1Ob2RlICpub2RlLCBjb25zdCBUU291cmNl
TG9jICZsaW5lKQogewotICAgIGlmIChub2RlID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxM
OworICAgIGlmIChub2RlID09IG51bGxwdHIpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgVEludGVybUFnZ3JlZ2F0ZSAqYWdnTm9kZSA9IG5ldyBUSW50ZXJtQWdncmVnYXRlOwogICAg
IGFnZ05vZGUtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhub2RlKTsKQEAgLTIzMCw3MCArMTUy
LDU3IEBACiB9CiAKIC8vIElmIHRoZSBpbnB1dCBub2RlIGlzIG51bGxwdHIsIHJldHVybiBudWxs
cHRyLgotLy8gSWYgdGhlIGlucHV0IG5vZGUgaXMgYSBzZXF1ZW5jZSAoYmxvY2spIG5vZGUsIHJl
dHVybiBpdC4KLS8vIElmIHRoZSBpbnB1dCBub2RlIGlzIG5vdCBhIHNlcXVlbmNlIG5vZGUsIHB1
dCBpdCBpbnNpZGUgYSBzZXF1ZW5jZSBub2RlIGFuZCByZXR1cm4gdGhhdC4KLVRJbnRlcm1BZ2dy
ZWdhdGUgKlRJbnRlcm1lZGlhdGU6OmVuc3VyZVNlcXVlbmNlKFRJbnRlcm1Ob2RlICpub2RlKQor
Ly8gSWYgdGhlIGlucHV0IG5vZGUgaXMgYSBibG9jayBub2RlLCByZXR1cm4gaXQuCisvLyBJZiB0
aGUgaW5wdXQgbm9kZSBpcyBub3QgYSBibG9jayBub2RlLCBwdXQgaXQgaW5zaWRlIGEgYmxvY2sg
bm9kZSBhbmQgcmV0dXJuIHRoYXQuCitUSW50ZXJtQmxvY2sgKlRJbnRlcm1lZGlhdGU6OkVuc3Vy
ZUJsb2NrKFRJbnRlcm1Ob2RlICpub2RlKQogewogICAgIGlmIChub2RlID09IG51bGxwdHIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ05vZGUgPSBu
b2RlLT5nZXRBc0FnZ3JlZ2F0ZSgpOwotICAgIGlmIChhZ2dOb2RlICE9IG51bGxwdHIgJiYgYWdn
Tm9kZS0+Z2V0T3AoKSA9PSBFT3BTZXF1ZW5jZSkKLSAgICAgICAgcmV0dXJuIGFnZ05vZGU7Cisg
ICAgVEludGVybUJsb2NrICpibG9ja05vZGUgPSBub2RlLT5nZXRBc0Jsb2NrKCk7CisgICAgaWYg
KGJsb2NrTm9kZSAhPSBudWxscHRyKQorICAgICAgICByZXR1cm4gYmxvY2tOb2RlOwogCi0gICAg
YWdnTm9kZSA9IG1ha2VBZ2dyZWdhdGUobm9kZSwgbm9kZS0+Z2V0TGluZSgpKTsKLSAgICBhZ2dO
b2RlLT5zZXRPcChFT3BTZXF1ZW5jZSk7Ci0gICAgcmV0dXJuIGFnZ05vZGU7CisgICAgYmxvY2tO
b2RlID0gbmV3IFRJbnRlcm1CbG9jaygpOworICAgIGJsb2NrTm9kZS0+c2V0TGluZShub2RlLT5n
ZXRMaW5lKCkpOworICAgIGJsb2NrTm9kZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKG5vZGUp
OworICAgIHJldHVybiBibG9ja05vZGU7CiB9CiAKLS8vCiAvLyBGb3IgImlmIiB0ZXN0IG5vZGVz
LiAgVGhlcmUgYXJlIHRocmVlIGNoaWxkcmVuOyBhIGNvbmRpdGlvbiwKIC8vIGEgdHJ1ZSBwYXRo
LCBhbmQgYSBmYWxzZSBwYXRoLiAgVGhlIHR3byBwYXRocyBhcmUgaW4gdGhlCiAvLyBub2RlUGFp
ci4KIC8vCi0vLyBSZXR1cm5zIHRoZSBzZWxlY3Rpb24gbm9kZSBjcmVhdGVkLgotLy8KLVRJbnRl
cm1Ob2RlICpUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3Rpb24oCi0gICAgVEludGVybVR5cGVkICpj
b25kLCBUSW50ZXJtTm9kZVBhaXIgbm9kZVBhaXIsIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpCisv
LyBSZXR1cm5zIHRoZSBub2RlIGNyZWF0ZWQuCitUSW50ZXJtTm9kZSAqVEludGVybWVkaWF0ZTo6
YWRkSWZFbHNlKFRJbnRlcm1UeXBlZCAqY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVEludGVybU5vZGVQYWlyIG5vZGVQYWlyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsaW5lKQogewotICAgIC8vCi0g
ICAgLy8gRm9yIGNvbXBpbGUgdGltZSBjb25zdGFudCBzZWxlY3Rpb25zLCBwcnVuZSB0aGUgY29k
ZSBhbmQKLSAgICAvLyB0ZXN0IG5vdy4KLSAgICAvLworICAgIC8vIEZvciBjb21waWxlIHRpbWUg
Y29uc3RhbnQgY29uZGl0aW9ucywgcHJ1bmUgdGhlIGNvZGUgbm93LgogCiAgICAgaWYgKGNvbmQt
PmdldEFzQ29uc3RhbnRVbmlvbigpKQogICAgIHsKICAgICAgICAgaWYgKGNvbmQtPmdldEFzQ29u
c3RhbnRVbmlvbigpLT5nZXRCQ29uc3QoMCkgPT0gdHJ1ZSkKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIG5vZGVQYWlyLm5vZGUxID8gc2V0QWdncmVnYXRlT3BlcmF0b3IoCi0gICAgICAg
ICAgICAgICAgbm9kZVBhaXIubm9kZTEsIEVPcFNlcXVlbmNlLCBub2RlUGFpci5ub2RlMS0+Z2V0
TGluZSgpKSA6IE5VTEw7CisgICAgICAgICAgICByZXR1cm4gRW5zdXJlQmxvY2sobm9kZVBhaXIu
bm9kZTEpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIG5vZGVQYWlyLm5vZGUyID8gc2V0QWdncmVnYXRlT3BlcmF0b3IoCi0gICAgICAgICAg
ICAgICAgbm9kZVBhaXIubm9kZTIsIEVPcFNlcXVlbmNlLCBub2RlUGFpci5ub2RlMi0+Z2V0TGlu
ZSgpKSA6IE5VTEw7CisgICAgICAgICAgICByZXR1cm4gRW5zdXJlQmxvY2sobm9kZVBhaXIubm9k
ZTIpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgVEludGVybVNlbGVjdGlvbiAqbm9kZSA9IG5l
dyBUSW50ZXJtU2VsZWN0aW9uKAotICAgICAgICBjb25kLCBlbnN1cmVTZXF1ZW5jZShub2RlUGFp
ci5ub2RlMSksIGVuc3VyZVNlcXVlbmNlKG5vZGVQYWlyLm5vZGUyKSk7CisgICAgVEludGVybUlm
RWxzZSAqbm9kZSA9CisgICAgICAgIG5ldyBUSW50ZXJtSWZFbHNlKGNvbmQsIEVuc3VyZUJsb2Nr
KG5vZGVQYWlyLm5vZGUxKSwgRW5zdXJlQmxvY2sobm9kZVBhaXIubm9kZTIpKTsKICAgICBub2Rl
LT5zZXRMaW5lKGxpbmUpOwogCiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLVRJbnRlcm1UeXBlZCAq
VEludGVybWVkaWF0ZTo6YWRkQ29tbWEoVEludGVybVR5cGVkICpsZWZ0LAorVEludGVybVR5cGVk
ICpUSW50ZXJtZWRpYXRlOjpBZGRDb21tYShUSW50ZXJtVHlwZWQgKmxlZnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqcmlnaHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaGFkZXJWZXJzaW9uKQog
ewotICAgIFRRdWFsaWZpZXIgcmVzdWx0UXVhbGlmaWVyID0gRXZxQ29uc3Q7Ci0gICAgLy8gRVNT
TDMuMDAgc2VjdGlvbiAxMi40MzogVGhlIHJlc3VsdCBvZiBhIHNlcXVlbmNlIG9wZXJhdG9yIGlz
IG5vdCBhIGNvbnN0YW50LWV4cHJlc3Npb24uCi0gICAgaWYgKHNoYWRlclZlcnNpb24gPj0gMzAw
IHx8IGxlZnQtPmdldFF1YWxpZmllcigpICE9IEV2cUNvbnN0IHx8Ci0gICAgICAgIHJpZ2h0LT5n
ZXRRdWFsaWZpZXIoKSAhPSBFdnFDb25zdCkKLSAgICB7Ci0gICAgICAgIHJlc3VsdFF1YWxpZmll
ciA9IEV2cVRlbXBvcmFyeTsKLSAgICB9Ci0KICAgICBUSW50ZXJtVHlwZWQgKmNvbW1hTm9kZSA9
IG51bGxwdHI7CiAgICAgaWYgKCFsZWZ0LT5oYXNTaWRlRWZmZWN0cygpKQogICAgIHsKQEAgLTMw
MSw1OCArMjEwLDUzIEBACiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGNvbW1hTm9k
ZSA9IGdyb3dBZ2dyZWdhdGUobGVmdCwgcmlnaHQsIGxpbmUpOwotICAgICAgICBjb21tYU5vZGUt
PmdldEFzQWdncmVnYXRlKCktPnNldE9wKEVPcENvbW1hKTsKLSAgICAgICAgY29tbWFOb2RlLT5z
ZXRUeXBlKHJpZ2h0LT5nZXRUeXBlKCkpOworICAgICAgICBjb21tYU5vZGUgPSBuZXcgVEludGVy
bUJpbmFyeShFT3BDb21tYSwgbGVmdCwgcmlnaHQpOworICAgICAgICBjb21tYU5vZGUtPnNldExp
bmUobGluZSk7CiAgICAgfQorICAgIFRRdWFsaWZpZXIgcmVzdWx0UXVhbGlmaWVyID0gVEludGVy
bUJpbmFyeTo6R2V0Q29tbWFRdWFsaWZpZXIoc2hhZGVyVmVyc2lvbiwgbGVmdCwgcmlnaHQpOwog
ICAgIGNvbW1hTm9kZS0+Z2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVyKHJlc3VsdFF1YWxp
Zmllcik7CiAgICAgcmV0dXJuIGNvbW1hTm9kZTsKIH0KIAotLy8KIC8vIEZvciAiPzoiIHRlc3Qg
bm9kZXMuICBUaGVyZSBhcmUgdGhyZWUgY2hpbGRyZW47IGEgY29uZGl0aW9uLAogLy8gYSB0cnVl
IHBhdGgsIGFuZCBhIGZhbHNlIHBhdGguICBUaGUgdHdvIHBhdGhzIGFyZSBzcGVjaWZpZWQKIC8v
IGFzIHNlcGFyYXRlIHBhcmFtZXRlcnMuCiAvLwotLy8gUmV0dXJucyB0aGUgc2VsZWN0aW9uIG5v
ZGUgY3JlYXRlZCwgb3Igb25lIG9mIHRydWVCbG9jayBhbmQgZmFsc2VCbG9jayBpZiB0aGUgZXhw
cmVzc2lvbiBjb3VsZCBiZSBmb2xkZWQuCi0vLwotVEludGVybVR5cGVkICpUSW50ZXJtZWRpYXRl
OjphZGRTZWxlY3Rpb24oVEludGVybVR5cGVkICpjb25kLCBUSW50ZXJtVHlwZWQgKnRydWVCbG9j
aywgVEludGVybVR5cGVkICpmYWxzZUJsb2NrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbGluZSkKKy8vIFJldHVybnMgdGhlIHRl
cm5hcnkgbm9kZSBjcmVhdGVkLCBvciBvbmUgb2YgdHJ1ZUV4cHJlc3Npb24gYW5kIGZhbHNlRXhw
cmVzc2lvbiBpZiB0aGUgZXhwcmVzc2lvbgorLy8gY291bGQgYmUgZm9sZGVkLgorVEludGVybVR5
cGVkICpUSW50ZXJtZWRpYXRlOjpBZGRUZXJuYXJ5U2VsZWN0aW9uKFRJbnRlcm1UeXBlZCAqY29u
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50
ZXJtVHlwZWQgKnRydWVFeHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqZmFsc2VFeHByZXNzaW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VM
b2MgJmxpbmUpCiB7Ci0gICAgVFF1YWxpZmllciByZXN1bHRRdWFsaWZpZXIgPSBFdnFUZW1wb3Jh
cnk7Ci0gICAgaWYgKGNvbmQtPmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0ICYmIHRydWVCbG9j
ay0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QgJiYKLSAgICAgICAgZmFsc2VCbG9jay0+Z2V0
UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCi0gICAgewotICAgICAgICByZXN1bHRRdWFsaWZpZXIg
PSBFdnFDb25zdDsKLSAgICB9CiAgICAgLy8gTm90ZSB0aGF0IHRoZSBub2RlIHJlc3VsdGluZyBm
cm9tIGhlcmUgY2FuIGJlIGEgY29uc3RhbnQgdW5pb24gd2l0aG91dCBiZWluZyBxdWFsaWZpZWQg
YXMKICAgICAvLyBjb25zdGFudC4KICAgICBpZiAoY29uZC0+Z2V0QXNDb25zdGFudFVuaW9uKCkp
CiAgICAgeworICAgICAgICBUUXVhbGlmaWVyIHJlc3VsdFF1YWxpZmllciA9CisgICAgICAgICAg
ICBUSW50ZXJtVGVybmFyeTo6RGV0ZXJtaW5lUXVhbGlmaWVyKGNvbmQsIHRydWVFeHByZXNzaW9u
LCBmYWxzZUV4cHJlc3Npb24pOwogICAgICAgICBpZiAoY29uZC0+Z2V0QXNDb25zdGFudFVuaW9u
KCktPmdldEJDb25zdCgwKSkKICAgICAgICAgewotICAgICAgICAgICAgdHJ1ZUJsb2NrLT5nZXRU
eXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIocmVzdWx0UXVhbGlmaWVyKTsKLSAgICAgICAgICAg
IHJldHVybiB0cnVlQmxvY2s7CisgICAgICAgICAgICB0cnVlRXhwcmVzc2lvbi0+Z2V0VHlwZVBv
aW50ZXIoKS0+c2V0UXVhbGlmaWVyKHJlc3VsdFF1YWxpZmllcik7CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZUV4cHJlc3Npb247CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0g
ICAgICAgICAgICBmYWxzZUJsb2NrLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIocmVz
dWx0UXVhbGlmaWVyKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZUJsb2NrOworICAgICAgICAg
ICAgZmFsc2VFeHByZXNzaW9uLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIocmVzdWx0
UXVhbGlmaWVyKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZUV4cHJlc3Npb247CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICAvLwotICAgIC8vIE1ha2UgYSBzZWxlY3Rpb24gbm9kZS4KLSAgICAv
LwotICAgIFRJbnRlcm1TZWxlY3Rpb24gKm5vZGUgPSBuZXcgVEludGVybVNlbGVjdGlvbihjb25k
LCB0cnVlQmxvY2ssIGZhbHNlQmxvY2ssIHRydWVCbG9jay0+Z2V0VHlwZSgpKTsKLSAgICBub2Rl
LT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIocmVzdWx0UXVhbGlmaWVyKTsKKyAgICAv
LyBNYWtlIGEgdGVybmFyeSBub2RlLgorICAgIFRJbnRlcm1UZXJuYXJ5ICpub2RlID0gbmV3IFRJ
bnRlcm1UZXJuYXJ5KGNvbmQsIHRydWVFeHByZXNzaW9uLCBmYWxzZUV4cHJlc3Npb24pOwogICAg
IG5vZGUtPnNldExpbmUobGluZSk7CiAKICAgICByZXR1cm4gbm9kZTsKIH0KIAotVEludGVybVN3
aXRjaCAqVEludGVybWVkaWF0ZTo6YWRkU3dpdGNoKAotICAgIFRJbnRlcm1UeXBlZCAqaW5pdCwg
VEludGVybUFnZ3JlZ2F0ZSAqc3RhdGVtZW50TGlzdCwgY29uc3QgVFNvdXJjZUxvYyAmbGluZSkK
K1RJbnRlcm1Td2l0Y2ggKlRJbnRlcm1lZGlhdGU6OmFkZFN3aXRjaChUSW50ZXJtVHlwZWQgKmlu
aXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybUJsb2Nr
ICpzdGF0ZW1lbnRMaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpCiB7CiAgICAgVEludGVybVN3aXRjaCAqbm9kZSA9IG5l
dyBUSW50ZXJtU3dpdGNoKGluaXQsIHN0YXRlbWVudExpc3QpOwogICAgIG5vZGUtPnNldExpbmUo
bGluZSk7CkBAIC0zODUsMjQgKzI4OSwyMiBAQAogICAgIHJldHVybiBub2RlOwogfQogCi1USW50
ZXJtVHlwZWQgKlRJbnRlcm1lZGlhdGU6OmFkZFN3aXp6bGUoCi0gICAgVFZlY3RvckZpZWxkcyAm
ZmllbGRzLCBjb25zdCBUU291cmNlTG9jICZsaW5lKQorVEludGVybVR5cGVkICpUSW50ZXJtZWRp
YXRlOjpBZGRTd2l6emxlKFRJbnRlcm1UeXBlZCAqYmFzZUV4cHJlc3Npb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFZlY3RvckZpZWxkcyAmZmllbGRz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VM
b2MgJmRvdExvY2F0aW9uKQogeworICAgIFRWZWN0b3I8aW50PiBmaWVsZHNWZWN0b3I7CisgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBmaWVsZHMubnVtOyArK2kpCisgICAgeworICAgICAgICBmaWVs
ZHNWZWN0b3IucHVzaF9iYWNrKGZpZWxkcy5vZmZzZXRzW2ldKTsKKyAgICB9CisgICAgVEludGVy
bVN3aXp6bGUgKm5vZGUgPSBuZXcgVEludGVybVN3aXp6bGUoYmFzZUV4cHJlc3Npb24sIGZpZWxk
c1ZlY3Rvcik7CisgICAgbm9kZS0+c2V0TGluZShkb3RMb2NhdGlvbik7CiAKLSAgICBUSW50ZXJt
QWdncmVnYXRlICpub2RlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoRU9wU2VxdWVuY2UpOwotCi0g
ICAgbm9kZS0+c2V0TGluZShsaW5lKTsKLSAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqY29uc3RJ
bnROb2RlOwotICAgIFRJbnRlcm1TZXF1ZW5jZSAqc2VxdWVuY2VWZWN0b3IgPSBub2RlLT5nZXRT
ZXF1ZW5jZSgpOwotICAgIFRDb25zdGFudFVuaW9uICp1bmlvbkFycmF5OwotCi0gICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBmaWVsZHMubnVtOyBpKyspCisgICAgVEludGVybVR5cGVkICpmb2xkZWQg
PSBub2RlLT5mb2xkKCk7CisgICAgaWYgKGZvbGRlZCkKICAgICB7Ci0gICAgICAgIHVuaW9uQXJy
YXkgPSBuZXcgVENvbnN0YW50VW5pb25bMV07Ci0gICAgICAgIHVuaW9uQXJyYXktPnNldElDb25z
dChmaWVsZHMub2Zmc2V0c1tpXSk7Ci0gICAgICAgIGNvbnN0SW50Tm9kZSA9IGFkZENvbnN0YW50
VW5pb24oCi0gICAgICAgICAgICB1bmlvbkFycmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5l
ZCwgRXZxQ29uc3QpLCBsaW5lKTsKLSAgICAgICAgc2VxdWVuY2VWZWN0b3ItPnB1c2hfYmFjayhj
b25zdEludE5vZGUpOworICAgICAgICByZXR1cm4gZm9sZGVkOwogICAgIH0KIAogICAgIHJldHVy
biBub2RlOwpAQCAtNDE1LDcgKzMxNyw3IEBACiAgICAgVExvb3BUeXBlIHR5cGUsIFRJbnRlcm1O
b2RlICppbml0LCBUSW50ZXJtVHlwZWQgKmNvbmQsIFRJbnRlcm1UeXBlZCAqZXhwciwKICAgICBU
SW50ZXJtTm9kZSAqYm9keSwgY29uc3QgVFNvdXJjZUxvYyAmbGluZSkKIHsKLSAgICBUSW50ZXJt
Tm9kZSAqbm9kZSA9IG5ldyBUSW50ZXJtTG9vcCh0eXBlLCBpbml0LCBjb25kLCBleHByLCBlbnN1
cmVTZXF1ZW5jZShib2R5KSk7CisgICAgVEludGVybU5vZGUgKm5vZGUgPSBuZXcgVEludGVybUxv
b3AodHlwZSwgaW5pdCwgY29uZCwgZXhwciwgRW5zdXJlQmxvY2soYm9keSkpOwogICAgIG5vZGUt
PnNldExpbmUobGluZSk7CiAKICAgICByZXR1cm4gbm9kZTsKQEAgLTQzOSwzNSArMzQxLDkgQEAK
ICAgICByZXR1cm4gbm9kZTsKIH0KIAotLy8KLS8vIFRoaXMgaXMgdG8gYmUgZXhlY3V0ZWQgb25j
ZSB0aGUgZmluYWwgcm9vdCBpcyBwdXQgb24gdG9wIGJ5IHRoZSBwYXJzaW5nCi0vLyBwcm9jZXNz
LgotLy8KLVRJbnRlcm1BZ2dyZWdhdGUgKlRJbnRlcm1lZGlhdGU6OnBvc3RQcm9jZXNzKFRJbnRl
cm1Ob2RlICpyb290KQorVEludGVybVR5cGVkICpUSW50ZXJtZWRpYXRlOjpmb2xkQWdncmVnYXRl
QnVpbHRJbihUSW50ZXJtQWdncmVnYXRlICphZ2dyZWdhdGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFREaWFnbm9zdGljcyAqZGlhZ25vc3RpY3Mp
CiB7Ci0gICAgaWYgKHJvb3QgPT0gbnVsbHB0cikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICAvLwotICAgIC8vIEZpbmlzaCBvZmYgdGhlIHRvcCBsZXZlbCBzZXF1ZW5jZSwgaWYgYW55
Ci0gICAgLy8KLSAgICBUSW50ZXJtQWdncmVnYXRlICphZ2dSb290ID0gcm9vdC0+Z2V0QXNBZ2dy
ZWdhdGUoKTsKLSAgICBpZiAoYWdnUm9vdCAhPSBudWxscHRyICYmIGFnZ1Jvb3QtPmdldE9wKCkg
PT0gRU9wTnVsbCkKLSAgICB7Ci0gICAgICAgIGFnZ1Jvb3QtPnNldE9wKEVPcFNlcXVlbmNlKTsK
LSAgICB9Ci0gICAgZWxzZSBpZiAoYWdnUm9vdCA9PSBudWxscHRyIHx8IGFnZ1Jvb3QtPmdldE9w
KCkgIT0gRU9wU2VxdWVuY2UpCi0gICAgewotICAgICAgICBhZ2dSb290ID0gbmV3IFRJbnRlcm1B
Z2dyZWdhdGUoRU9wU2VxdWVuY2UpOwotICAgICAgICBhZ2dSb290LT5zZXRMaW5lKHJvb3QtPmdl
dExpbmUoKSk7Ci0gICAgICAgIGFnZ1Jvb3QtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhyb290
KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gYWdnUm9vdDsKLX0KLQotVEludGVybVR5cGVkICpUSW50
ZXJtZWRpYXRlOjpmb2xkQWdncmVnYXRlQnVpbHRJbihUSW50ZXJtQWdncmVnYXRlICphZ2dyZWdh
dGUpCi17CiAgICAgc3dpdGNoIChhZ2dyZWdhdGUtPmdldE9wKCkpCiAgICAgewogICAgICAgICBj
YXNlIEVPcEF0YW46CkBAIC00OTMsMTYgKzM2OSwxNCBAQAogICAgICAgICBjYXNlIEVPcEZhY2VG
b3J3YXJkOgogICAgICAgICBjYXNlIEVPcFJlZmxlY3Q6CiAgICAgICAgIGNhc2UgRU9wUmVmcmFj
dDoKLSAgICAgICAgICAgIHJldHVybiBhZ2dyZWdhdGUtPmZvbGQobUluZm9TaW5rKTsKKyAgICAg
ICAgICAgIHJldHVybiBhZ2dyZWdhdGUtPmZvbGQoZGlhZ25vc3RpY3MpOwogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgLy8gVE9ETzogQWRkIHN1cHBvcnQgZm9yIGZvbGRpbmcgYXJyYXkg
Y29uc3RydWN0b3JzCiAgICAgICAgICAgICBpZiAoYWdncmVnYXRlLT5pc0NvbnN0cnVjdG9yKCkg
JiYgIWFnZ3JlZ2F0ZS0+aXNBcnJheSgpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IHJldHVybiBhZ2dyZWdhdGUtPmZvbGQobUluZm9TaW5rKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gYWdncmVnYXRlLT5mb2xkKGRpYWdub3N0aWNzKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIC8vIENvbnN0YW50IGZvbGRpbmcgbm90IHN1cHBvcnRlZCBmb3IgdGhlIGJ1aWx0LWluLgog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotCi0gICAgcmV0dXJuIG51bGxwdHI7
CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9JbnRlcm1lZGlhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1lZGlhdGUuaAkocmV2aXNpb24gMjA4MDIxKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJt
ZWRpYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2LDQyICsxNiw0MiBAQAogfTsKIAogLy8KLS8v
IFNldCBvZiBoZWxwZXIgZnVuY3Rpb25zIHRvIGhlbHAgcGFyc2UgYW5kIGJ1aWxkIHRoZSB0cmVl
LgorLy8gU2V0IG9mIGhlbHBlciBmdW5jdGlvbnMgdG8gaGVscCBidWlsZCB0aGUgdHJlZS4KIC8v
Ci1jbGFzcyBUSW5mb1Npbms7CiBjbGFzcyBUSW50ZXJtZWRpYXRlCiB7CiAgIHB1YmxpYzoKICAg
ICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKCk7Ci0gICAgVEludGVybWVkaWF0ZShUSW5mb1Np
bmsgJmkpCi0gICAgICAgIDogbUluZm9TaW5rKGkpIHsgfQorICAgIFRJbnRlcm1lZGlhdGUoKSB7
fQogCiAgICAgVEludGVybVN5bWJvbCAqYWRkU3ltYm9sKAogICAgICAgICBpbnQgaWQsIGNvbnN0
IFRTdHJpbmcgJiwgY29uc3QgVFR5cGUgJiwgY29uc3QgVFNvdXJjZUxvYyAmKTsKLSAgICBUSW50
ZXJtVHlwZWQgKmFkZEJpbmFyeU1hdGgoCi0gICAgICAgIFRPcGVyYXRvciBvcCwgVEludGVybVR5
cGVkICpsZWZ0LCBUSW50ZXJtVHlwZWQgKnJpZ2h0LCBjb25zdCBUU291cmNlTG9jICYpOwotICAg
IFRJbnRlcm1UeXBlZCAqYWRkQXNzaWduKAotICAgICAgICBUT3BlcmF0b3Igb3AsIFRJbnRlcm1U
eXBlZCAqbGVmdCwgVEludGVybVR5cGVkICpyaWdodCwgY29uc3QgVFNvdXJjZUxvYyAmKTsKLSAg
ICBUSW50ZXJtVHlwZWQgKmFkZEluZGV4KAotICAgICAgICBUT3BlcmF0b3Igb3AsIFRJbnRlcm1U
eXBlZCAqYmFzZSwgVEludGVybVR5cGVkICppbmRleCwgY29uc3QgVFNvdXJjZUxvYyAmKTsKKyAg
ICBUSW50ZXJtVHlwZWQgKmFkZEluZGV4KFRPcGVyYXRvciBvcCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRJbnRlcm1UeXBlZCAqYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRJbnRlcm1UeXBlZCAqaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
U291cmNlTG9jICZsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVERpYWdub3N0aWNz
ICpkaWFnbm9zdGljcyk7CiAgICAgVEludGVybVR5cGVkICphZGRVbmFyeU1hdGgoCiAgICAgICAg
IFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkICpjaGlsZCwgY29uc3QgVFNvdXJjZUxvYyAmbGlu
ZSwgY29uc3QgVFR5cGUgKmZ1bmNSZXR1cm5UeXBlKTsKICAgICBUSW50ZXJtQWdncmVnYXRlICpn
cm93QWdncmVnYXRlKAogICAgICAgICBUSW50ZXJtTm9kZSAqbGVmdCwgVEludGVybU5vZGUgKnJp
Z2h0LCBjb25zdCBUU291cmNlTG9jICYpOwotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKm1ha2VBZ2dy
ZWdhdGUoVEludGVybU5vZGUgKm5vZGUsIGNvbnN0IFRTb3VyY2VMb2MgJik7Ci0gICAgVEludGVy
bUFnZ3JlZ2F0ZSAqZW5zdXJlU2VxdWVuY2UoVEludGVybU5vZGUgKm5vZGUpOworICAgIHN0YXRp
YyBUSW50ZXJtQWdncmVnYXRlICpNYWtlQWdncmVnYXRlKFRJbnRlcm1Ob2RlICpub2RlLCBjb25z
dCBUU291cmNlTG9jICZsaW5lKTsKKyAgICBzdGF0aWMgVEludGVybUJsb2NrICpFbnN1cmVCbG9j
ayhUSW50ZXJtTm9kZSAqbm9kZSk7CiAgICAgVEludGVybUFnZ3JlZ2F0ZSAqc2V0QWdncmVnYXRl
T3BlcmF0b3IoVEludGVybU5vZGUgKiwgVE9wZXJhdG9yLCBjb25zdCBUU291cmNlTG9jICYpOwot
ICAgIFRJbnRlcm1Ob2RlICphZGRTZWxlY3Rpb24oVEludGVybVR5cGVkICpjb25kLCBUSW50ZXJt
Tm9kZVBhaXIgY29kZSwgY29uc3QgVFNvdXJjZUxvYyAmKTsKLSAgICBUSW50ZXJtVHlwZWQgKmFk
ZFNlbGVjdGlvbihUSW50ZXJtVHlwZWQgKmNvbmQsIFRJbnRlcm1UeXBlZCAqdHJ1ZUJsb2NrLCBU
SW50ZXJtVHlwZWQgKmZhbHNlQmxvY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVFNvdXJjZUxvYyAmbGluZSk7Ci0gICAgVEludGVybVN3aXRjaCAqYWRkU3dpdGNoKAot
ICAgICAgICBUSW50ZXJtVHlwZWQgKmluaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKnN0YXRlbWVudExp
c3QsIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpOworICAgIFRJbnRlcm1Ob2RlICphZGRJZkVsc2Uo
VEludGVybVR5cGVkICpjb25kLCBUSW50ZXJtTm9kZVBhaXIgY29kZSwgY29uc3QgVFNvdXJjZUxv
YyAmbGluZSk7CisgICAgc3RhdGljIFRJbnRlcm1UeXBlZCAqQWRkVGVybmFyeVNlbGVjdGlvbihU
SW50ZXJtVHlwZWQgKmNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUSW50ZXJtVHlwZWQgKnRydWVFeHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpmYWxzZUV4cHJlc3Npb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291
cmNlTG9jICZsaW5lKTsKKyAgICBUSW50ZXJtU3dpdGNoICphZGRTd2l0Y2goVEludGVybVR5cGVk
ICppbml0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtQmxvY2sgKnN0YXRl
bWVudExpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2Mg
JmxpbmUpOwogICAgIFRJbnRlcm1DYXNlICphZGRDYXNlKAogICAgICAgICBUSW50ZXJtVHlwZWQg
KmNvbmRpdGlvbiwgY29uc3QgVFNvdXJjZUxvYyAmbGluZSk7Ci0gICAgVEludGVybVR5cGVkICph
ZGRDb21tYShUSW50ZXJtVHlwZWQgKmxlZnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBU
SW50ZXJtVHlwZWQgKnJpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNv
dXJjZUxvYyAmbGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaGFkZXJWZXJz
aW9uKTsKKyAgICBzdGF0aWMgVEludGVybVR5cGVkICpBZGRDb21tYShUSW50ZXJtVHlwZWQgKmxl
ZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpyaWdo
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZs
aW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaGFkZXJWZXJzaW9u
KTsKICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqYWRkQ29uc3RhbnRVbmlvbihjb25zdCBUQ29u
c3RhbnRVbmlvbiAqY29uc3RhbnRVbmlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUVHlwZSAmdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsaW5lKTsKQEAgLTU5LDE3ICs1
OSwxNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICosIGNvbnN0IFRT
b3VyY2VMb2MgJik7CiAgICAgVEludGVybUJyYW5jaCAqYWRkQnJhbmNoKFRPcGVyYXRvciwgY29u
c3QgVFNvdXJjZUxvYyAmKTsKICAgICBUSW50ZXJtQnJhbmNoICphZGRCcmFuY2goVE9wZXJhdG9y
LCBUSW50ZXJtVHlwZWQgKiwgY29uc3QgVFNvdXJjZUxvYyAmKTsKLSAgICBUSW50ZXJtVHlwZWQg
KmFkZFN3aXp6bGUoVFZlY3RvckZpZWxkcyAmLCBjb25zdCBUU291cmNlTG9jICYpOwotICAgIFRJ
bnRlcm1BZ2dyZWdhdGUgKnBvc3RQcm9jZXNzKFRJbnRlcm1Ob2RlICpyb290KTsKKyAgICBzdGF0
aWMgVEludGVybVR5cGVkICpBZGRTd2l6emxlKFRJbnRlcm1UeXBlZCAqYmFzZUV4cHJlc3Npb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVmVjdG9yRmllbGRz
ICZmaWVsZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291
cmNlTG9jICZkb3RMb2NhdGlvbik7CiAKICAgICBzdGF0aWMgdm9pZCBvdXRwdXRUcmVlKFRJbnRl
cm1Ob2RlICosIFRJbmZvU2lua0Jhc2UgJik7CiAKLSAgICBUSW50ZXJtVHlwZWQgKmZvbGRBZ2dy
ZWdhdGVCdWlsdEluKFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3JlZ2F0ZSk7CisgICAgVEludGVybVR5
cGVkICpmb2xkQWdncmVnYXRlQnVpbHRJbihUSW50ZXJtQWdncmVnYXRlICphZ2dyZWdhdGUsIFRE
aWFnbm9zdGljcyAqZGlhZ25vc3RpY3MpOwogCiAgIHByaXZhdGU6CiAgICAgdm9pZCBvcGVyYXRv
cj0oVEludGVybWVkaWF0ZSAmKTsgLy8gcHJldmVudCBhc3NpZ25tZW50cwotCi0gICAgVEluZm9T
aW5rICYgbUluZm9TaW5rOwogfTsKIAogI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX0lO
VEVSTUVESUFURV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvT3BlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL09wZXJhdG9yLmNwcAkocmV2aXNpb24gMjA4
MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
T3BlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw4ICs2Miw2IEBACiAgICAgICBjYXNl
IEVPcEluZGV4RGlyZWN0U3RydWN0OgogICAgICAgY2FzZSBFT3BJbmRleERpcmVjdEludGVyZmFj
ZUJsb2NrOiByZXR1cm4gIi4iOwogCi0gICAgICBjYXNlIEVPcFZlY3RvclN3aXp6bGU6IHJldHVy
biAiLiI7Ci0KICAgICAgIGNhc2UgRU9wUmFkaWFuczogcmV0dXJuICJyYWRpYW5zIjsKICAgICAg
IGNhc2UgRU9wRGVncmVlczogcmV0dXJuICJkZWdyZWVzIjsKICAgICAgIGNhc2UgRU9wU2luOiBy
ZXR1cm4gInNpbiI7CkBAIC0xOTksMyArMTk3LDMxIEBACiAgICAgcmV0dXJuICIiOwogfQogCiti
b29sIElzQXNzaWdubWVudChUT3BlcmF0b3Igb3ApCit7CisgICAgc3dpdGNoIChvcCkKKyAgICB7
CisgICAgICAgIGNhc2UgRU9wUG9zdEluY3JlbWVudDoKKyAgICAgICAgY2FzZSBFT3BQb3N0RGVj
cmVtZW50OgorICAgICAgICBjYXNlIEVPcFByZUluY3JlbWVudDoKKyAgICAgICAgY2FzZSBFT3BQ
cmVEZWNyZW1lbnQ6CisgICAgICAgIGNhc2UgRU9wQXNzaWduOgorICAgICAgICBjYXNlIEVPcEFk
ZEFzc2lnbjoKKyAgICAgICAgY2FzZSBFT3BTdWJBc3NpZ246CisgICAgICAgIGNhc2UgRU9wTXVs
QXNzaWduOgorICAgICAgICBjYXNlIEVPcFZlY3RvclRpbWVzTWF0cml4QXNzaWduOgorICAgICAg
ICBjYXNlIEVPcFZlY3RvclRpbWVzU2NhbGFyQXNzaWduOgorICAgICAgICBjYXNlIEVPcE1hdHJp
eFRpbWVzU2NhbGFyQXNzaWduOgorICAgICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzTWF0cml4QXNz
aWduOgorICAgICAgICBjYXNlIEVPcERpdkFzc2lnbjoKKyAgICAgICAgY2FzZSBFT3BJTW9kQXNz
aWduOgorICAgICAgICBjYXNlIEVPcEJpdFNoaWZ0TGVmdEFzc2lnbjoKKyAgICAgICAgY2FzZSBF
T3BCaXRTaGlmdFJpZ2h0QXNzaWduOgorICAgICAgICBjYXNlIEVPcEJpdHdpc2VBbmRBc3NpZ246
CisgICAgICAgIGNhc2UgRU9wQml0d2lzZVhvckFzc2lnbjoKKyAgICAgICAgY2FzZSBFT3BCaXR3
aXNlT3JBc3NpZ246CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PcGVyYXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL09wZXJh
dG9yLmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL09wZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzLDkgKzEz
LDcgQEAKIGVudW0gVE9wZXJhdG9yCiB7CiAgICAgRU9wTnVsbCwgICAgICAgICAgICAvLyBpZiBp
biBhIG5vZGUsIHNob3VsZCBvbmx5IG1lYW4gYSBub2RlIGlzIHN0aWxsIGJlaW5nIGJ1aWx0Ci0g
ICAgRU9wU2VxdWVuY2UsICAgICAgICAvLyBkZW5vdGVzIGEgbGlzdCBvZiBzdGF0ZW1lbnRzLCBv
ciBwYXJhbWV0ZXJzLCBldGMuCiAgICAgRU9wRnVuY3Rpb25DYWxsLAotICAgIEVPcEZ1bmN0aW9u
LCAgICAgICAgLy8gRm9yIGZ1bmN0aW9uIGRlZmluaXRpb24KICAgICBFT3BQYXJhbWV0ZXJzLCAg
ICAgIC8vIGFuIGFnZ3JlZ2F0ZSBsaXN0aW5nIHRoZSBwYXJhbWV0ZXJzIHRvIGEgZnVuY3Rpb24K
IAogICAgIEVPcERlY2xhcmF0aW9uLApAQCAtNzcsOCArNzUsNiBAQAogICAgIEVPcEluZGV4RGly
ZWN0U3RydWN0LAogICAgIEVPcEluZGV4RGlyZWN0SW50ZXJmYWNlQmxvY2ssCiAKLSAgICBFT3BW
ZWN0b3JTd2l6emxlLAotCiAgICAgLy8KICAgICAvLyBCdWlsdC1pbiBmdW5jdGlvbnMgcG90ZW50
aWFsbHkgbWFwcGVkIHRvIG9wZXJhdG9ycwogICAgIC8vCkBAIC0yMjgsNCArMjI0LDcgQEAKIC8v
IFJldHVybnMgdGhlIHN0cmluZyBjb3JyZXNwb25kaW5nIHRvIHRoZSBvcGVyYXRvciBpbiBHTFNM
CiBjb25zdCBjaGFyKiBHZXRPcGVyYXRvclN0cmluZyhUT3BlcmF0b3Igb3ApOwogCisvLyBTYXkg
d2hldGhlciBvciBub3QgYSBiaW5hcnkgb3IgdW5hcnkgb3BlcmF0aW9uIGNoYW5nZXMgdGhlIHZh
bHVlIG9mIGEgdmFyaWFibGUuCitib29sIElzQXNzaWdubWVudChUT3BlcmF0b3Igb3ApOworCiAj
ZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfT1BFUkFUT1JfSF8KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dEdMU0xCYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9PdXRwdXRHTFNMQmFzZS5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dEdMU0xCYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjIsMTcgKzIyLDE4IEBACiAKIGJvb2wgaXNTaW5nbGVTdGF0
ZW1lbnQoVEludGVybU5vZGUgKm5vZGUpCiB7Ci0gICAgaWYgKGNvbnN0IFRJbnRlcm1BZ2dyZWdh
dGUgKmFnZ3JlZ2F0ZSA9IG5vZGUtPmdldEFzQWdncmVnYXRlKCkpCisgICAgaWYgKG5vZGUtPmdl
dEFzRnVuY3Rpb25EZWZpbml0aW9uKCkpCiAgICAgewotICAgICAgICByZXR1cm4gKGFnZ3JlZ2F0
ZS0+Z2V0T3AoKSAhPSBFT3BGdW5jdGlvbikgJiYKLSAgICAgICAgICAgICAgIChhZ2dyZWdhdGUt
PmdldE9wKCkgIT0gRU9wU2VxdWVuY2UpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQot
ICAgIGVsc2UgaWYgKGNvbnN0IFRJbnRlcm1TZWxlY3Rpb24gKnNlbGVjdGlvbiA9IG5vZGUtPmdl
dEFzU2VsZWN0aW9uTm9kZSgpKQorICAgIGVsc2UgaWYgKG5vZGUtPmdldEFzQmxvY2soKSkKICAg
ICB7Ci0gICAgICAgIC8vIFRlcm5hcnkgb3BlcmF0b3JzIGFyZSB1c3VhbGx5IHBhcnQgb2YgYW4g
YXNzaWdubWVudCBvcGVyYXRvci4KLSAgICAgICAgLy8gVGhpcyBoYW5kbGVzIHRob3NlIHJhcmUg
Y2FzZXMgaW4gd2hpY2ggdGhleSBhcmUgYWxsIGJ5IHRoZW1zZWx2ZXMuCi0gICAgICAgIHJldHVy
biBzZWxlY3Rpb24tPnVzZXNUZXJuYXJ5T3BlcmF0b3IoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KKyAgICBlbHNlIGlmIChub2RlLT5nZXRBc0lmRWxzZU5vZGUoKSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgZWxzZSBpZiAobm9kZS0+Z2V0QXNMb29w
Tm9kZSgpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjQzLDcgKzI0NCw3IEBA
CiAgICAgcmV0dXJuIHBDb25zdFVuaW9uOwogfQogCi12b2lkIFRPdXRwdXRHTFNMQmFzZTo6d3Jp
dGVDb25zdHJ1Y3RvclRyaXBsZXQoVmlzaXQgdmlzaXQsIGNvbnN0IFRUeXBlICZ0eXBlLCBjb25z
dCBjaGFyICpjb25zdHJ1Y3RvckJhc2VUeXBlKQordm9pZCBUT3V0cHV0R0xTTEJhc2U6OndyaXRl
Q29uc3RydWN0b3JUcmlwbGV0KFZpc2l0IHZpc2l0LCBjb25zdCBUVHlwZSAmdHlwZSkKIHsKICAg
ICBUSW5mb1NpbmtCYXNlICZvdXQgPSBvYmpTaW5rKCk7CiAgICAgaWYgKHZpc2l0ID09IFByZVZp
c2l0KQpAQCAtMjUwLDEzICsyNTEsMTMgQEAKICAgICB7CiAgICAgICAgIGlmICh0eXBlLmlzQXJy
YXkoKSkKICAgICAgICAgewotICAgICAgICAgICAgb3V0IDw8IGNvbnN0cnVjdG9yQmFzZVR5cGU7
CisgICAgICAgICAgICBvdXQgPDwgZ2V0VHlwZU5hbWUodHlwZSk7CiAgICAgICAgICAgICBvdXQg
PDwgYXJyYXlCcmFja2V0cyh0eXBlKTsKICAgICAgICAgICAgIG91dCA8PCAiKCI7CiAgICAgICAg
IH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBvdXQgPDwgY29uc3RydWN0
b3JCYXNlVHlwZSA8PCAiKCI7CisgICAgICAgICAgICBvdXQgPDwgZ2V0VHlwZU5hbWUodHlwZSkg
PDwgIigiOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UKQEAgLTI4Miw2ICsyODMsMTcgQEAK
ICAgICB3cml0ZUNvbnN0YW50VW5pb24obm9kZS0+Z2V0VHlwZSgpLCBub2RlLT5nZXRVbmlvbkFy
cmF5UG9pbnRlcigpKTsKIH0KIAorYm9vbCBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0U3dpenpsZShW
aXNpdCB2aXNpdCwgVEludGVybVN3aXp6bGUgKm5vZGUpCit7CisgICAgVEluZm9TaW5rQmFzZSAm
b3V0ID0gb2JqU2luaygpOworICAgIGlmICh2aXNpdCA9PSBQb3N0VmlzaXQpCisgICAgeworICAg
ICAgICBvdXQgPDwgIi4iOworICAgICAgICBub2RlLT53cml0ZU9mZnNldHNBc1hZWlcoJm91dCk7
CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiBib29sIFRPdXRwdXRHTFNMQmFzZTo6dmlz
aXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkgKm5vZGUpCiB7CiAgICAgYm9vbCB2
aXNpdENoaWxkcmVuID0gdHJ1ZTsKQEAgLTI4OCwyMzUgKzMwMCwyMDUgQEAKICAgICBUSW5mb1Np
bmtCYXNlICZvdXQgPSBvYmpTaW5rKCk7CiAgICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQogICAg
IHsKLSAgICAgIGNhc2UgRU9wSW5pdGlhbGl6ZToKLSAgICAgICAgaWYgKHZpc2l0ID09IEluVmlz
aXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAiID0gIjsKLSAgICAgICAgICAgIC8v
IFJIUyBvZiBpbml0aWFsaXplIGlzIG5vdCBiZWluZyBkZWNsYXJlZC4KLSAgICAgICAgICAgIG1E
ZWNsYXJpbmdWYXJpYWJsZXMgPSBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAg
ICAgIGNhc2UgRU9wQXNzaWduOgotICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgIiA9
ICIsICIpIik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BBZGRBc3NpZ246Ci0gICAg
ICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiICs9ICIsICIpIik7Ci0gICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBFT3BTdWJBc3NpZ246Ci0gICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwg
IigiLCAiIC09ICIsICIpIik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BEaXZBc3Np
Z246Ci0gICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiIC89ICIsICIpIik7Ci0gICAg
ICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BJTW9kQXNzaWduOgotICAgICAgICB3cml0ZVRyaXBs
ZXQodmlzaXQsICIoIiwgIiAlPSAiLCAiKSIpOwotICAgICAgICBicmVhazsKLSAgICAgIC8vIE5v
dGljZSB0aGUgZmFsbC10aHJvdWdoLgotICAgICAgY2FzZSBFT3BNdWxBc3NpZ246Ci0gICAgICBj
YXNlIEVPcFZlY3RvclRpbWVzTWF0cml4QXNzaWduOgotICAgICAgY2FzZSBFT3BWZWN0b3JUaW1l
c1NjYWxhckFzc2lnbjoKLSAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNTY2FsYXJBc3NpZ246Ci0g
ICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzTWF0cml4QXNzaWduOgotICAgICAgICB3cml0ZVRyaXBs
ZXQodmlzaXQsICIoIiwgIiAqPSAiLCAiKSIpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ug
RU9wQml0U2hpZnRMZWZ0QXNzaWduOgotICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwg
IiA8PD0gIiwgIikiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEJpdFNoaWZ0Umln
aHRBc3NpZ246Ci0gICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiID4+PSAiLCAiKSIp
OwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQml0d2lzZUFuZEFzc2lnbjoKLSAgICAg
ICAgd3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIsICIgJj0gIiwgIikiKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgICBjYXNlIEVPcEJpdHdpc2VYb3JBc3NpZ246Ci0gICAgICAgIHdyaXRlVHJpcGxldCh2
aXNpdCwgIigiLCAiIF49ICIsICIpIik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BC
aXR3aXNlT3JBc3NpZ246Ci0gICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiIHw9ICIs
ICIpIik7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgICBjYXNlIEVPcEluZGV4RGlyZWN0OgotICAg
ICAgICB3cml0ZVRyaXBsZXQodmlzaXQsIE5VTEwsICJbIiwgIl0iKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgICBjYXNlIEVPcEluZGV4SW5kaXJlY3Q6Ci0gICAgICAgIGlmIChub2RlLT5nZXRBZGRJ
bmRleENsYW1wKCkpCi0gICAgICAgIHsKKyAgICAgICAgY2FzZSBFT3BDb21tYToKKyAgICAgICAg
ICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiLCAiLCAiKSIpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgRU9wSW5pdGlhbGl6ZToKICAgICAgICAgICAgIGlmICh2aXNpdCA9
PSBJblZpc2l0KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChtQ2xhbXBpbmdT
dHJhdGVneSA9PSBTSF9DTEFNUF9XSVRIX0NMQU1QX0lOVFJJTlNJQykKLSAgICAgICAgICAgICAg
ICAgICAgb3V0IDw8ICJbaW50KGNsYW1wKGZsb2F0KCI7Ci0gICAgICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIlt3ZWJnbF9pbnRfY2xhbXAoIjsKKyAgICAgICAg
ICAgICAgICBvdXQgPDwgIiA9ICI7CisgICAgICAgICAgICAgICAgLy8gUkhTIG9mIGluaXRpYWxp
emUgaXMgbm90IGJlaW5nIGRlY2xhcmVkLgorICAgICAgICAgICAgICAgIG1EZWNsYXJpbmdWYXJp
YWJsZXMgPSBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKHZpc2l0
ID09IFBvc3RWaXNpdCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEFzc2ln
bjoKKyAgICAgICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiID0gIiwgIikiKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEFkZEFzc2lnbjoKKyAgICAgICAgICAg
IHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiICs9ICIsICIpIik7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBFT3BTdWJBc3NpZ246CisgICAgICAgICAgICB3cml0ZVRyaXBsZXQo
dmlzaXQsICIoIiwgIiAtPSAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgRU9wRGl2QXNzaWduOgorICAgICAgICAgICAgd3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIsICIg
Lz0gIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcElNb2RBc3Np
Z246CisgICAgICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgIiAlPSAiLCAiKSIpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIE5vdGljZSB0aGUgZmFsbC10aHJvdWdoLgor
ICAgICAgICBjYXNlIEVPcE11bEFzc2lnbjoKKyAgICAgICAgY2FzZSBFT3BWZWN0b3JUaW1lc01h
dHJpeEFzc2lnbjoKKyAgICAgICAgY2FzZSBFT3BWZWN0b3JUaW1lc1NjYWxhckFzc2lnbjoKKyAg
ICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1NjYWxhckFzc2lnbjoKKyAgICAgICAgY2FzZSBFT3BN
YXRyaXhUaW1lc01hdHJpeEFzc2lnbjoKKyAgICAgICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwg
IigiLCAiICo9ICIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BC
aXRTaGlmdExlZnRBc3NpZ246CisgICAgICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwg
IiA8PD0gIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEJpdFNo
aWZ0UmlnaHRBc3NpZ246CisgICAgICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgIiA+
Pj0gIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEJpdHdpc2VB
bmRBc3NpZ246CisgICAgICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgIiAmPSAiLCAi
KSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQml0d2lzZVhvckFzc2ln
bjoKKyAgICAgICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiIF49ICIsICIpIik7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BCaXR3aXNlT3JBc3NpZ246CisgICAg
ICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgIiB8PSAiLCAiKSIpOworICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBFT3BJbmRleERpcmVjdDoKKyAgICAgICAgICAgIHdy
aXRlVHJpcGxldCh2aXNpdCwgTlVMTCwgIlsiLCAiXSIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgRU9wSW5kZXhJbmRpcmVjdDoKKyAgICAgICAgICAgIGlmIChub2RlLT5nZXRB
ZGRJbmRleENsYW1wKCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IG1heFNp
emU7Ci0gICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpsZWZ0ID0gbm9kZS0+Z2V0TGVmdCgp
OwotICAgICAgICAgICAgICAgIFRUeXBlIGxlZnRUeXBlID0gbGVmdC0+Z2V0VHlwZSgpOwotCi0g
ICAgICAgICAgICAgICAgaWYgKGxlZnQtPmlzQXJyYXkoKSkKKyAgICAgICAgICAgICAgICBpZiAo
dmlzaXQgPT0gSW5WaXNpdCkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IC8vIFRoZSBzaGFkZXIgd2lsbCBmYWlsIHZhbGlkYXRpb24gaWYgdGhlIGFycmF5IGxlbmd0aCBp
cyBub3QgPiAwLgotICAgICAgICAgICAgICAgICAgICBtYXhTaXplID0gbGVmdFR5cGUuZ2V0QXJy
YXlTaXplKCkgLSAxOworICAgICAgICAgICAgICAgICAgICBpZiAobUNsYW1waW5nU3RyYXRlZ3kg
PT0gU0hfQ0xBTVBfV0lUSF9DTEFNUF9JTlRSSU5TSUMpCisgICAgICAgICAgICAgICAgICAgICAg
ICBvdXQgPDwgIltpbnQoY2xhbXAoZmxvYXQoIjsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICJbd2ViZ2xfaW50X2NsYW1wKCI7CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBlbHNl
IGlmICh2aXNpdCA9PSBQb3N0VmlzaXQpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICBtYXhTaXplID0gbGVmdFR5cGUuZ2V0Tm9taW5hbFNpemUoKSAtIDE7CisgICAgICAg
ICAgICAgICAgICAgIGludCBtYXhTaXplOworICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlw
ZWQgKmxlZnQgPSBub2RlLT5nZXRMZWZ0KCk7CisgICAgICAgICAgICAgICAgICAgIFRUeXBlIGxl
ZnRUeXBlICAgICA9IGxlZnQtPmdldFR5cGUoKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAo
bGVmdC0+aXNBcnJheSgpKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBUaGUgc2hhZGVyIHdpbGwgZmFpbCB2YWxpZGF0aW9uIGlmIHRoZSBhcnJheSBs
ZW5ndGggaXMgbm90ID4gMC4KKyAgICAgICAgICAgICAgICAgICAgICAgIG1heFNpemUgPSBzdGF0
aWNfY2FzdDxpbnQ+KGxlZnRUeXBlLmdldEFycmF5U2l6ZSgpKSAtIDE7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICBtYXhTaXplID0gbGVmdFR5cGUuZ2V0Tm9taW5hbFNp
emUoKSAtIDE7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBp
ZiAobUNsYW1waW5nU3RyYXRlZ3kgPT0gU0hfQ0xBTVBfV0lUSF9DTEFNUF9JTlRSSU5TSUMpCisg
ICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiksIDAuMCwgZmxvYXQoIiA8PCBtYXhTaXpl
IDw8ICIpKSldIjsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICAgICAgb3V0IDw8ICIsIDAsICIgPDwgbWF4U2l6ZSA8PCAiKV0iOwogICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsIE5VTEwsICJbIiwgIl0iKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0U3Ry
dWN0OgorICAgICAgICAgICAgaWYgKHZpc2l0ID09IEluVmlzaXQpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgLy8gSGVyZSB3ZSBhcmUgd3JpdGluZyBvdXQgImZvby5iYXIiLCB3aGVy
ZSAiZm9vIiBpcyBzdHJ1Y3QKKyAgICAgICAgICAgICAgICAvLyBhbmQgImJhciIgaXMgZmllbGQu
IEluIEFTVCwgaXQgaXMgcmVwcmVzZW50ZWQgYXMgYSBiaW5hcnkKKyAgICAgICAgICAgICAgICAv
LyBub2RlLCB3aGVyZSBsZWZ0IGNoaWxkIHJlcHJlc2VudHMgImZvbyIgYW5kIHJpZ2h0IGNoaWxk
ICJiYXIiLgorICAgICAgICAgICAgICAgIC8vIFRoZSBub2RlIGl0c2VsZiByZXByZXNlbnRzICIu
Ii4gVGhlIHN0cnVjdCBmaWVsZCAiYmFyIiBpcworICAgICAgICAgICAgICAgIC8vIGFjdHVhbGx5
IHN0b3JlZCBhcyBhbiBpbmRleCBpbnRvIFRTdHJ1Y3R1cmU6OmZpZWxkcy4KKyAgICAgICAgICAg
ICAgICBvdXQgPDwgIi4iOworICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJ1Y3R1cmUgKnN0cnVj
dHVyZSAgICAgICA9IG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpOworICAg
ICAgICAgICAgICAgIGNvbnN0IFRJbnRlcm1Db25zdGFudFVuaW9uICppbmRleCA9IG5vZGUtPmdl
dFJpZ2h0KCktPmdldEFzQ29uc3RhbnRVbmlvbigpOworICAgICAgICAgICAgICAgIGNvbnN0IFRG
aWVsZCAqZmllbGQgICAgICAgICAgICAgICA9IHN0cnVjdHVyZS0+ZmllbGRzKClbaW5kZXgtPmdl
dElDb25zdCgwKV07CiAKLSAgICAgICAgICAgICAgICBpZiAobUNsYW1waW5nU3RyYXRlZ3kgPT0g
U0hfQ0xBTVBfV0lUSF9DTEFNUF9JTlRSSU5TSUMpCi0gICAgICAgICAgICAgICAgICAgIG91dCA8
PCAiKSwgMC4wLCBmbG9hdCgiIDw8IG1heFNpemUgPDwgIikpKV0iOwotICAgICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIsIDAsICIgPDwgbWF4U2l6ZSA8PCAi
KV0iOworICAgICAgICAgICAgICAgIFRTdHJpbmcgZmllbGROYW1lID0gZmllbGQtPm5hbWUoKTsK
KyAgICAgICAgICAgICAgICBpZiAoIW1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbihzdHJ1Y3R1cmUt
Pm5hbWUoKSwgbVNoYWRlclZlcnNpb24pKQorICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWUg
PSBoYXNoTmFtZShmaWVsZE5hbWUpOworCisgICAgICAgICAgICAgICAgb3V0IDw8IGZpZWxkTmFt
ZTsKKyAgICAgICAgICAgICAgICB2aXNpdENoaWxkcmVuID0gZmFsc2U7CiAgICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICB3cml0ZVRy
aXBsZXQodmlzaXQsIE5VTEwsICJbIiwgIl0iKTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsK
LSAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3RTdHJ1Y3Q6Ci0gICAgICAgIGlmICh2aXNpdCA9PSBJ
blZpc2l0KQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBIZXJlIHdlIGFyZSB3cml0aW5nIG91
dCAiZm9vLmJhciIsIHdoZXJlICJmb28iIGlzIHN0cnVjdAotICAgICAgICAgICAgLy8gYW5kICJi
YXIiIGlzIGZpZWxkLiBJbiBBU1QsIGl0IGlzIHJlcHJlc2VudGVkIGFzIGEgYmluYXJ5Ci0gICAg
ICAgICAgICAvLyBub2RlLCB3aGVyZSBsZWZ0IGNoaWxkIHJlcHJlc2VudHMgImZvbyIgYW5kIHJp
Z2h0IGNoaWxkICJiYXIiLgotICAgICAgICAgICAgLy8gVGhlIG5vZGUgaXRzZWxmIHJlcHJlc2Vu
dHMgIi4iLiBUaGUgc3RydWN0IGZpZWxkICJiYXIiIGlzCi0gICAgICAgICAgICAvLyBhY3R1YWxs
eSBzdG9yZWQgYXMgYW4gaW5kZXggaW50byBUU3RydWN0dXJlOjpmaWVsZHMuCi0gICAgICAgICAg
ICBvdXQgPDwgIi4iOwotICAgICAgICAgICAgY29uc3QgVFN0cnVjdHVyZSAqc3RydWN0dXJlID0g
bm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7Ci0gICAgICAgICAgICBjb25z
dCBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqaW5kZXggPSBub2RlLT5nZXRSaWdodCgpLT5nZXRBc0Nv
bnN0YW50VW5pb24oKTsKLSAgICAgICAgICAgIGNvbnN0IFRGaWVsZCAqZmllbGQgPSBzdHJ1Y3R1
cmUtPmZpZWxkcygpW2luZGV4LT5nZXRJQ29uc3QoMCldOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3RJbnRlcmZhY2VCbG9jazoKKyAgICAgICAgICAgIGlm
ICh2aXNpdCA9PSBJblZpc2l0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8
PCAiLiI7CisgICAgICAgICAgICAgICAgY29uc3QgVEludGVyZmFjZUJsb2NrICppbnRlcmZhY2VC
bG9jayA9CisgICAgICAgICAgICAgICAgICAgIG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpLmdl
dEludGVyZmFjZUJsb2NrKCk7CisgICAgICAgICAgICAgICAgY29uc3QgVEludGVybUNvbnN0YW50
VW5pb24gKmluZGV4ID0gbm9kZS0+Z2V0UmlnaHQoKS0+Z2V0QXNDb25zdGFudFVuaW9uKCk7Cisg
ICAgICAgICAgICAgICAgY29uc3QgVEZpZWxkICpmaWVsZCAgICAgICAgICAgICAgID0gaW50ZXJm
YWNlQmxvY2stPmZpZWxkcygpW2luZGV4LT5nZXRJQ29uc3QoMCldOwogCi0gICAgICAgICAgICBU
U3RyaW5nIGZpZWxkTmFtZSA9IGZpZWxkLT5uYW1lKCk7Ci0gICAgICAgICAgICBpZiAoIW1TeW1i
b2xUYWJsZS5maW5kQnVpbHRJbihzdHJ1Y3R1cmUtPm5hbWUoKSwgbVNoYWRlclZlcnNpb24pKQor
ICAgICAgICAgICAgICAgIFRTdHJpbmcgZmllbGROYW1lID0gZmllbGQtPm5hbWUoKTsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQoIW1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbihpbnRlcmZhY2VCbG9j
ay0+bmFtZSgpLCBtU2hhZGVyVmVyc2lvbikpOwogICAgICAgICAgICAgICAgIGZpZWxkTmFtZSA9
IGhhc2hOYW1lKGZpZWxkTmFtZSk7CiAKLSAgICAgICAgICAgIG91dCA8PCBmaWVsZE5hbWU7Ci0g
ICAgICAgICAgICB2aXNpdENoaWxkcmVuID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEVPcEluZGV4RGlyZWN0SW50ZXJmYWNlQmxvY2s6Ci0gICAgICAgICAg
aWYgKHZpc2l0ID09IEluVmlzaXQpCi0gICAgICAgICAgewotICAgICAgICAgICAgICBvdXQgPDwg
Ii4iOwotICAgICAgICAgICAgICBjb25zdCBUSW50ZXJmYWNlQmxvY2sgKmludGVyZmFjZUJsb2Nr
ID0gbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkuZ2V0SW50ZXJmYWNlQmxvY2soKTsKLSAgICAg
ICAgICAgICAgY29uc3QgVEludGVybUNvbnN0YW50VW5pb24gKmluZGV4ID0gbm9kZS0+Z2V0Umln
aHQoKS0+Z2V0QXNDb25zdGFudFVuaW9uKCk7Ci0gICAgICAgICAgICAgIGNvbnN0IFRGaWVsZCAq
ZmllbGQgPSBpbnRlcmZhY2VCbG9jay0+ZmllbGRzKClbaW5kZXgtPmdldElDb25zdCgwKV07Ci0K
LSAgICAgICAgICAgICAgVFN0cmluZyBmaWVsZE5hbWUgPSBmaWVsZC0+bmFtZSgpOwotICAgICAg
ICAgICAgICBBU1NFUlQoIW1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbihpbnRlcmZhY2VCbG9jay0+
bmFtZSgpLCBtU2hhZGVyVmVyc2lvbikpOwotICAgICAgICAgICAgICBmaWVsZE5hbWUgPSBoYXNo
TmFtZShmaWVsZE5hbWUpOwotCi0gICAgICAgICAgICAgIG91dCA8PCBmaWVsZE5hbWU7Ci0gICAg
ICAgICAgICAgIHZpc2l0Q2hpbGRyZW4gPSBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAgICAg
YnJlYWs7Ci0gICAgICBjYXNlIEVPcFZlY3RvclN3aXp6bGU6Ci0gICAgICAgIGlmICh2aXNpdCA9
PSBJblZpc2l0KQotICAgICAgICB7Ci0gICAgICAgICAgICBvdXQgPDwgIi4iOwotICAgICAgICAg
ICAgVEludGVybUFnZ3JlZ2F0ZSAqcmlnaHRDaGlsZCA9IG5vZGUtPmdldFJpZ2h0KCktPmdldEFz
QWdncmVnYXRlKCk7Ci0gICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlID0gcmln
aHRDaGlsZC0+Z2V0U2VxdWVuY2UoKTsKLSAgICAgICAgICAgIGZvciAoVEludGVybVNlcXVlbmNl
OjppdGVyYXRvciBzaXQgPSBzZXF1ZW5jZS0+YmVnaW4oKTsgc2l0ICE9IHNlcXVlbmNlLT5lbmQo
KTsgKytzaXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgVEludGVybUNvbnN0YW50
VW5pb24gKmVsZW1lbnQgPSAoKnNpdCktPmdldEFzQ29uc3RhbnRVbmlvbigpOwotICAgICAgICAg
ICAgICAgIEFTU0VSVChlbGVtZW50LT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRJbnQpOwotICAgICAg
ICAgICAgICAgIEFTU0VSVChlbGVtZW50LT5nZXROb21pbmFsU2l6ZSgpID09IDEpOwotICAgICAg
ICAgICAgICAgIGNvbnN0IFRDb25zdGFudFVuaW9uJiBkYXRhID0gZWxlbWVudC0+Z2V0VW5pb25B
cnJheVBvaW50ZXIoKVswXTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoZGF0YS5nZXRUeXBlKCkg
PT0gRWJ0SW50KTsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKGRhdGEuZ2V0SUNvbnN0KCkpCi0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgY2FzZSAwOgotICAgICAgICAgICAg
ICAgICAgICBvdXQgPDwgIngiOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICJ5IjsKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICBjYXNlIDI6Ci0gICAgICAg
ICAgICAgICAgICAgIG91dCA8PCAieiI7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgICAgICAgICBvdXQgPDwgInciOwot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIG91dCA8PCBmaWVsZE5hbWU7CisgICAgICAgICAgICAgICAgdmlzaXRDaGls
ZHJlbiA9IGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdmlzaXRDaGlsZHJlbiA9
IGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOworICAgICAgICAgICAgYnJlYWs7CiAK
LSAgICAgIGNhc2UgRU9wQWRkOgotICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgIiAr
ICIsICIpIik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BTdWI6Ci0gICAgICAgIHdy
aXRlVHJpcGxldCh2aXNpdCwgIigiLCAiIC0gIiwgIikiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEVPcE11bDoKLSAgICAgICAgd3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIsICIgKiAiLCAi
KSIpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wRGl2OgotICAgICAgICB3cml0ZVRy
aXBsZXQodmlzaXQsICIoIiwgIiAvICIsICIpIik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBFT3BJTW9kOgotICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgIiAlICIsICIpIik7
Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BCaXRTaGlmdExlZnQ6Ci0gICAgICAgIHdy
aXRlVHJpcGxldCh2aXNpdCwgIigiLCAiIDw8ICIsICIpIik7Ci0gICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSBFT3BCaXRTaGlmdFJpZ2h0OgotICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICIo
IiwgIiA+PiAiLCAiKSIpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQml0d2lzZUFu
ZDoKLSAgICAgICAgd3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIsICIgJiAiLCAiKSIpOwotICAgICAg
ICBicmVhazsKLSAgICAgIGNhc2UgRU9wQml0d2lzZVhvcjoKLSAgICAgICAgd3JpdGVUcmlwbGV0
KHZpc2l0LCAiKCIsICIgXiAiLCAiKSIpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9w
Qml0d2lzZU9yOgotICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgIiB8ICIsICIpIik7
Ci0gICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEFkZDoKKyAgICAgICAgICAgIHdyaXRl
VHJpcGxldCh2aXNpdCwgIigiLCAiICsgIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEVPcFN1YjoKKyAgICAgICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAi
IC0gIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcE11bDoKKyAg
ICAgICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiICogIiwgIikiKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcERpdjoKKyAgICAgICAgICAgIHdyaXRlVHJpcGxl
dCh2aXNpdCwgIigiLCAiIC8gIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEVPcElNb2Q6CisgICAgICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgIiAlICIs
ICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BCaXRTaGlmdExlZnQ6
CisgICAgICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgIiA8PCAiLCAiKSIpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQml0U2hpZnRSaWdodDoKKyAgICAgICAg
ICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiID4+ICIsICIpIik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBFT3BCaXR3aXNlQW5kOgorICAgICAgICAgICAgd3JpdGVUcmlw
bGV0KHZpc2l0LCAiKCIsICIgJiAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRU9wQml0d2lzZVhvcjoKKyAgICAgICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigi
LCAiIF4gIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEJpdHdp
c2VPcjoKKyAgICAgICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiIHwgIiwgIikiKTsK
KyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICBjYXNlIEVPcEVxdWFsOgotICAgICAgICB3cml0
ZVRyaXBsZXQodmlzaXQsICIoIiwgIiA9PSAiLCAiKSIpOwotICAgICAgICBicmVhazsKLSAgICAg
IGNhc2UgRU9wTm90RXF1YWw6Ci0gICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiICE9
ICIsICIpIik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BMZXNzVGhhbjoKLSAgICAg
ICAgd3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIsICIgPCAiLCAiKSIpOwotICAgICAgICBicmVhazsK
LSAgICAgIGNhc2UgRU9wR3JlYXRlclRoYW46Ci0gICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwg
IigiLCAiID4gIiwgIikiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcExlc3NUaGFu
RXF1YWw6Ci0gICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiIDw9ICIsICIpIik7Ci0g
ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbkVxdWFsOgotICAgICAgICB3
cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgIiA+PSAiLCAiKSIpOwotICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBFT3BFcXVhbDoKKyAgICAgICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigi
LCAiID09ICIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BOb3RF
cXVhbDoKKyAgICAgICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiICE9ICIsICIpIik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BMZXNzVGhhbjoKKyAgICAgICAg
ICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiIDwgIiwgIikiKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuOgorICAgICAgICAgICAgd3JpdGVUcmlw
bGV0KHZpc2l0LCAiKCIsICIgPiAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRU9wTGVzc1RoYW5FcXVhbDoKKyAgICAgICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwg
IigiLCAiIDw9ICIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BH
cmVhdGVyVGhhbkVxdWFsOgorICAgICAgICAgICAgd3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIsICIg
Pj0gIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAvLyBOb3RpY2UgdGhlIGZh
bGwtdGhyb3VnaC4KLSAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNTY2FsYXI6Ci0gICAgICBjYXNl
IEVPcFZlY3RvclRpbWVzTWF0cml4OgotICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1ZlY3RvcjoK
LSAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNTY2FsYXI6Ci0gICAgICBjYXNlIEVPcE1hdHJpeFRp
bWVzTWF0cml4OgotICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgIiAqICIsICIpIik7
Ci0gICAgICAgIGJyZWFrOworICAgICAgICAvLyBOb3RpY2UgdGhlIGZhbGwtdGhyb3VnaC4KKyAg
ICAgICAgY2FzZSBFT3BWZWN0b3JUaW1lc1NjYWxhcjoKKyAgICAgICAgY2FzZSBFT3BWZWN0b3JU
aW1lc01hdHJpeDoKKyAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1ZlY3RvcjoKKyAgICAgICAg
Y2FzZSBFT3BNYXRyaXhUaW1lc1NjYWxhcjoKKyAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc01h
dHJpeDoKKyAgICAgICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiICogIiwgIikiKTsK
KyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICBjYXNlIEVPcExvZ2ljYWxPcjoKLSAgICAgICAg
d3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIsICIgfHwgIiwgIikiKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgICBjYXNlIEVPcExvZ2ljYWxYb3I6Ci0gICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigi
LCAiIF5eICIsICIpIik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BMb2dpY2FsQW5k
OgotICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgIiAmJiAiLCAiKSIpOwotICAgICAg
ICBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAg
IGNhc2UgRU9wTG9naWNhbE9yOgorICAgICAgICAgICAgd3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIs
ICIgfHwgIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcExvZ2lj
YWxYb3I6CisgICAgICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgIiBeXiAiLCAiKSIp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wTG9naWNhbEFuZDoKKyAgICAg
ICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiICYmICIsICIpIik7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIHZpc2l0Q2hpbGRyZW47CkBAIC03MTEsNDAgKzY5Myw0MCBAQAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRTZWxlY3Rp
b24oVmlzaXQgdmlzaXQsIFRJbnRlcm1TZWxlY3Rpb24gKm5vZGUpCitib29sIFRPdXRwdXRHTFNM
QmFzZTo6dmlzaXRUZXJuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtVGVybmFyeSAqbm9kZSkKIHsK
ICAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBvYmpTaW5rKCk7CisgICAgLy8gTm90aWNlIHR3byBi
cmFja2V0cyBhdCB0aGUgYmVnaW5uaW5nIGFuZCBlbmQuIFRoZSBvdXRlciBvbmVzCisgICAgLy8g
ZW5jYXBzdWxhdGUgdGhlIHdob2xlIHRlcm5hcnkgZXhwcmVzc2lvbi4gVGhpcyBwcmVzZXJ2ZXMg
dGhlCisgICAgLy8gb3JkZXIgb2YgcHJlY2VkZW5jZSB3aGVuIHRlcm5hcnkgZXhwcmVzc2lvbnMg
YXJlIHVzZWQgaW4gYQorICAgIC8vIGNvbXBvdW5kIGV4cHJlc3Npb24sIGkuZS4sIGMgPSAyICog
KGEgPCBiID8gMSA6IDIpLgorICAgIG91dCA8PCAiKCgiOworICAgIG5vZGUtPmdldENvbmRpdGlv
bigpLT50cmF2ZXJzZSh0aGlzKTsKKyAgICBvdXQgPDwgIikgPyAoIjsKKyAgICBub2RlLT5nZXRU
cnVlRXhwcmVzc2lvbigpLT50cmF2ZXJzZSh0aGlzKTsKKyAgICBvdXQgPDwgIikgOiAoIjsKKyAg
ICBub2RlLT5nZXRGYWxzZUV4cHJlc3Npb24oKS0+dHJhdmVyc2UodGhpcyk7CisgICAgb3V0IDw8
ICIpKSI7CisgICAgcmV0dXJuIGZhbHNlOworfQogCi0gICAgaWYgKG5vZGUtPnVzZXNUZXJuYXJ5
T3BlcmF0b3IoKSkKLSAgICB7Ci0gICAgICAgIC8vIE5vdGljZSB0d28gYnJhY2tldHMgYXQgdGhl
IGJlZ2lubmluZyBhbmQgZW5kLiBUaGUgb3V0ZXIgb25lcwotICAgICAgICAvLyBlbmNhcHN1bGF0
ZSB0aGUgd2hvbGUgdGVybmFyeSBleHByZXNzaW9uLiBUaGlzIHByZXNlcnZlcyB0aGUKLSAgICAg
ICAgLy8gb3JkZXIgb2YgcHJlY2VkZW5jZSB3aGVuIHRlcm5hcnkgZXhwcmVzc2lvbnMgYXJlIHVz
ZWQgaW4gYQotICAgICAgICAvLyBjb21wb3VuZCBleHByZXNzaW9uLCBpLmUuLCBjID0gMiAqIChh
IDwgYiA/IDEgOiAyKS4KLSAgICAgICAgb3V0IDw8ICIoKCI7Ci0gICAgICAgIG5vZGUtPmdldENv
bmRpdGlvbigpLT50cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAgb3V0IDw8ICIpID8gKCI7Ci0gICAg
ICAgIG5vZGUtPmdldFRydWVCbG9jaygpLT50cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAgb3V0IDw8
ICIpIDogKCI7Ci0gICAgICAgIG5vZGUtPmdldEZhbHNlQmxvY2soKS0+dHJhdmVyc2UodGhpcyk7
Ci0gICAgICAgIG91dCA8PCAiKSkiOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBv
dXQgPDwgImlmICgiOwotICAgICAgICBub2RlLT5nZXRDb25kaXRpb24oKS0+dHJhdmVyc2UodGhp
cyk7Ci0gICAgICAgIG91dCA8PCAiKVxuIjsKK2Jvb2wgVE91dHB1dEdMU0xCYXNlOjp2aXNpdElm
RWxzZShWaXNpdCB2aXNpdCwgVEludGVybUlmRWxzZSAqbm9kZSkKK3sKKyAgICBUSW5mb1NpbmtC
YXNlICZvdXQgPSBvYmpTaW5rKCk7CiAKLSAgICAgICAgaW5jcmVtZW50RGVwdGgobm9kZSk7Ci0g
ICAgICAgIHZpc2l0Q29kZUJsb2NrKG5vZGUtPmdldFRydWVCbG9jaygpKTsKKyAgICBvdXQgPDwg
ImlmICgiOworICAgIG5vZGUtPmdldENvbmRpdGlvbigpLT50cmF2ZXJzZSh0aGlzKTsKKyAgICBv
dXQgPDwgIilcbiI7CiAKLSAgICAgICAgaWYgKG5vZGUtPmdldEZhbHNlQmxvY2soKSkKLSAgICAg
ICAgewotICAgICAgICAgICAgb3V0IDw8ICJlbHNlXG4iOwotICAgICAgICAgICAgdmlzaXRDb2Rl
QmxvY2sobm9kZS0+Z2V0RmFsc2VCbG9jaygpKTsKLSAgICAgICAgfQotICAgICAgICBkZWNyZW1l
bnREZXB0aCgpOworICAgIGluY3JlbWVudERlcHRoKG5vZGUpOworICAgIHZpc2l0Q29kZUJsb2Nr
KG5vZGUtPmdldFRydWVCbG9jaygpKTsKKworICAgIGlmIChub2RlLT5nZXRGYWxzZUJsb2NrKCkp
CisgICAgeworICAgICAgICBvdXQgPDwgImVsc2VcbiI7CisgICAgICAgIHZpc2l0Q29kZUJsb2Nr
KG5vZGUtPmdldEZhbHNlQmxvY2soKSk7CiAgICAgfQorICAgIGRlY3JlbWVudERlcHRoKCk7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC03NzgsNiArNzYwLDY1IEBACiAgICAgfQogfQogCiti
b29sIFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRCbG9jayhWaXNpdCB2aXNpdCwgVEludGVybUJsb2Nr
ICpub2RlKQoreworICAgIFRJbmZvU2lua0Jhc2UgJm91dCA9IG9ialNpbmsoKTsKKyAgICAvLyBT
Y29wZSB0aGUgYmxvY2tzIGV4Y2VwdCB3aGVuIGF0IHRoZSBnbG9iYWwgc2NvcGUuCisgICAgaWYg
KG1EZXB0aCA+IDApCisgICAgeworICAgICAgICBvdXQgPDwgIntcbiI7CisgICAgfQorCisgICAg
aW5jcmVtZW50RGVwdGgobm9kZSk7CisgICAgZm9yIChUSW50ZXJtU2VxdWVuY2U6OmNvbnN0X2l0
ZXJhdG9yIGl0ZXIgPSBub2RlLT5nZXRTZXF1ZW5jZSgpLT5iZWdpbigpOworICAgICAgICAgaXRl
ciAhPSBub2RlLT5nZXRTZXF1ZW5jZSgpLT5lbmQoKTsgKytpdGVyKQorICAgIHsKKyAgICAgICAg
VEludGVybU5vZGUgKmN1ck5vZGUgPSAqaXRlcjsKKyAgICAgICAgQVNTRVJUKGN1ck5vZGUgIT0g
bnVsbHB0cik7CisgICAgICAgIGN1ck5vZGUtPnRyYXZlcnNlKHRoaXMpOworCisgICAgICAgIGlm
IChpc1NpbmdsZVN0YXRlbWVudChjdXJOb2RlKSkKKyAgICAgICAgICAgIG91dCA8PCAiO1xuIjsK
KyAgICB9CisgICAgZGVjcmVtZW50RGVwdGgoKTsKKworICAgIC8vIFNjb3BlIHRoZSBibG9ja3Mg
ZXhjZXB0IHdoZW4gYXQgdGhlIGdsb2JhbCBzY29wZS4KKyAgICBpZiAobURlcHRoID4gMCkKKyAg
ICB7CisgICAgICAgIG91dCA8PCAifVxuIjsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRGdW5jdGlvbkRlZmluaXRpb24oVmlzaXQgdmlz
aXQsIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKm5vZGUpCit7CisgICAgVEluZm9TaW5rQmFz
ZSAmb3V0ID0gb2JqU2luaygpOworCisgICAgQVNTRVJUKHZpc2l0ID09IFByZVZpc2l0KTsKKyAg
ICB7CisgICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlID0gbm9kZS0+Z2V0VHlwZSgpOworICAgICAg
ICB3cml0ZVZhcmlhYmxlVHlwZSh0eXBlKTsKKyAgICAgICAgaWYgKHR5cGUuaXNBcnJheSgpKQor
ICAgICAgICAgICAgb3V0IDw8IGFycmF5QnJhY2tldHModHlwZSk7CisgICAgfQorCisgICAgb3V0
IDw8ICIgIiA8PCBoYXNoRnVuY3Rpb25OYW1lSWZOZWVkZWQobm9kZS0+Z2V0RnVuY3Rpb25TeW1i
b2xJbmZvKCktPmdldE5hbWVPYmooKSk7CisKKyAgICBpbmNyZW1lbnREZXB0aChub2RlKTsKKwor
ICAgIC8vIFRyYXZlcnNlIGZ1bmN0aW9uIHBhcmFtZXRlcnMuCisgICAgVEludGVybUFnZ3JlZ2F0
ZSAqcGFyYW1zID0gbm9kZS0+Z2V0RnVuY3Rpb25QYXJhbWV0ZXJzKCktPmdldEFzQWdncmVnYXRl
KCk7CisgICAgQVNTRVJUKHBhcmFtcy0+Z2V0T3AoKSA9PSBFT3BQYXJhbWV0ZXJzKTsKKyAgICBw
YXJhbXMtPnRyYXZlcnNlKHRoaXMpOworCisgICAgLy8gVHJhdmVyc2UgZnVuY3Rpb24gYm9keS4K
KyAgICB2aXNpdENvZGVCbG9jayhub2RlLT5nZXRCb2R5KCkpOworICAgIGRlY3JlbWVudERlcHRo
KCk7CisKKyAgICAvLyBGdWxseSBwcm9jZXNzZWQ7IG5vIG5lZWQgdG8gdmlzaXQgY2hpbGRyZW4u
CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRBZ2dy
ZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpCiB7CiAgICAgYm9vbCB2
aXNpdENoaWxkcmVuID0gdHJ1ZTsKQEAgLTc4NSwzMyArODI2LDYgQEAKICAgICBib29sIHVzZUVt
dWxhdGVkRnVuY3Rpb24gPSAodmlzaXQgPT0gUHJlVmlzaXQgJiYgbm9kZS0+Z2V0VXNlRW11bGF0
ZWRGdW5jdGlvbigpKTsKICAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpCiAgICAgewotICAgICAg
Y2FzZSBFT3BTZXF1ZW5jZToKLSAgICAgICAgLy8gU2NvcGUgdGhlIHNlcXVlbmNlcyBleGNlcHQg
d2hlbiBhdCB0aGUgZ2xvYmFsIHNjb3BlLgotICAgICAgICBpZiAobURlcHRoID4gMCkKLSAgICAg
ICAgewotICAgICAgICAgICAgb3V0IDw8ICJ7XG4iOwotICAgICAgICB9Ci0KLSAgICAgICAgaW5j
cmVtZW50RGVwdGgobm9kZSk7Ci0gICAgICAgIGZvciAoVEludGVybVNlcXVlbmNlOjpjb25zdF9p
dGVyYXRvciBpdGVyID0gbm9kZS0+Z2V0U2VxdWVuY2UoKS0+YmVnaW4oKTsKLSAgICAgICAgICAg
ICBpdGVyICE9IG5vZGUtPmdldFNlcXVlbmNlKCktPmVuZCgpOyArK2l0ZXIpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIFRJbnRlcm1Ob2RlICpjdXJOb2RlID0gKml0ZXI7Ci0gICAgICAgICAgICBB
U1NFUlQoY3VyTm9kZSAhPSBOVUxMKTsKLSAgICAgICAgICAgIGN1ck5vZGUtPnRyYXZlcnNlKHRo
aXMpOwotCi0gICAgICAgICAgICBpZiAoaXNTaW5nbGVTdGF0ZW1lbnQoY3VyTm9kZSkpCi0gICAg
ICAgICAgICAgICAgb3V0IDw8ICI7XG4iOwotICAgICAgICB9Ci0gICAgICAgIGRlY3JlbWVudERl
cHRoKCk7Ci0KLSAgICAgICAgLy8gU2NvcGUgdGhlIHNlcXVlbmNlcyBleGNlcHQgd2hlbiBhdCB0
aGUgZ2xvYmFsIHNjb3BlLgotICAgICAgICBpZiAobURlcHRoID4gMCkKLSAgICAgICAgewotICAg
ICAgICAgICAgb3V0IDw8ICJ9XG4iOwotICAgICAgICB9Ci0gICAgICAgIHZpc2l0Q2hpbGRyZW4g
PSBmYWxzZTsKLSAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcFByb3RvdHlwZToKICAgICAg
ICAgLy8gRnVuY3Rpb24gZGVjbGFyYXRpb24uCiAgICAgICAgIEFTU0VSVCh2aXNpdCA9PSBQcmVW
aXNpdCk7CkBAIC04MjIsNyArODM2LDcgQEAKICAgICAgICAgICAgICAgICBvdXQgPDwgYXJyYXlC
cmFja2V0cyh0eXBlKTsKICAgICAgICAgfQogCi0gICAgICAgIG91dCA8PCAiICIgPDwgaGFzaEZ1
bmN0aW9uTmFtZUlmTmVlZGVkKG5vZGUtPmdldE5hbWVPYmooKSk7CisgICAgICAgIG91dCA8PCAi
ICIgPDwgaGFzaEZ1bmN0aW9uTmFtZUlmTmVlZGVkKG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5m
bygpLT5nZXROYW1lT2JqKCkpOwogCiAgICAgICAgIG91dCA8PCAiKCI7CiAgICAgICAgIHdyaXRl
RnVuY3Rpb25QYXJhbWV0ZXJzKCoobm9kZS0+Z2V0U2VxdWVuY2UoKSkpOwpAQCAtODMwLDQ2ICs4
NDQsMTAgQEAKIAogICAgICAgICB2aXNpdENoaWxkcmVuID0gZmFsc2U7CiAgICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBFT3BGdW5jdGlvbjogewotICAgICAgICAvLyBGdW5jdGlvbiBkZWZpbml0
aW9uLgotICAgICAgICBBU1NFUlQodmlzaXQgPT0gUHJlVmlzaXQpOwotICAgICAgICB7Ci0gICAg
ICAgICAgICBjb25zdCBUVHlwZSAmdHlwZSA9IG5vZGUtPmdldFR5cGUoKTsKLSAgICAgICAgICAg
IHdyaXRlVmFyaWFibGVUeXBlKHR5cGUpOwotICAgICAgICAgICAgaWYgKHR5cGUuaXNBcnJheSgp
KQotICAgICAgICAgICAgICAgIG91dCA8PCBhcnJheUJyYWNrZXRzKHR5cGUpOwotICAgICAgICB9
Ci0KLSAgICAgICAgb3V0IDw8ICIgIiA8PCBoYXNoRnVuY3Rpb25OYW1lSWZOZWVkZWQobm9kZS0+
Z2V0TmFtZU9iaigpKTsKLQotICAgICAgICBpbmNyZW1lbnREZXB0aChub2RlKTsKLSAgICAgICAg
Ly8gRnVuY3Rpb24gZGVmaW5pdGlvbiBub2RlIGNvbnRhaW5zIG9uZSBvciB0d28gY2hpbGRyZW4g
bm9kZXMKLSAgICAgICAgLy8gcmVwcmVzZW50aW5nIGZ1bmN0aW9uIHBhcmFtZXRlcnMgYW5kIGZ1
bmN0aW9uIGJvZHkuIFRoZSBsYXR0ZXIKLSAgICAgICAgLy8gaXMgbm90IHByZXNlbnQgaW4gY2Fz
ZSBvZiBlbXB0eSBmdW5jdGlvbiBib2RpZXMuCi0gICAgICAgIGNvbnN0IFRJbnRlcm1TZXF1ZW5j
ZSAmc2VxdWVuY2UgPSAqKG5vZGUtPmdldFNlcXVlbmNlKCkpOwotICAgICAgICBBU1NFUlQoKHNl
cXVlbmNlLnNpemUoKSA9PSAxKSB8fCAoc2VxdWVuY2Uuc2l6ZSgpID09IDIpKTsKLSAgICAgICAg
VEludGVybVNlcXVlbmNlOjpjb25zdF9pdGVyYXRvciBzZXFJdGVyID0gc2VxdWVuY2UuYmVnaW4o
KTsKLQotICAgICAgICAvLyBUcmF2ZXJzZSBmdW5jdGlvbiBwYXJhbWV0ZXJzLgotICAgICAgICBU
SW50ZXJtQWdncmVnYXRlICpwYXJhbXMgPSAoKnNlcUl0ZXIpLT5nZXRBc0FnZ3JlZ2F0ZSgpOwot
ICAgICAgICBBU1NFUlQocGFyYW1zICE9IE5VTEwpOwotICAgICAgICBBU1NFUlQocGFyYW1zLT5n
ZXRPcCgpID09IEVPcFBhcmFtZXRlcnMpOwotICAgICAgICBwYXJhbXMtPnRyYXZlcnNlKHRoaXMp
OwotCi0gICAgICAgIC8vIFRyYXZlcnNlIGZ1bmN0aW9uIGJvZHkuCi0gICAgICAgIFRJbnRlcm1B
Z2dyZWdhdGUgKmJvZHkgPSArK3NlcUl0ZXIgIT0gc2VxdWVuY2UuZW5kKCkgPwotICAgICAgICAg
ICAgKCpzZXFJdGVyKS0+Z2V0QXNBZ2dyZWdhdGUoKSA6IE5VTEw7Ci0gICAgICAgIHZpc2l0Q29k
ZUJsb2NrKGJvZHkpOwotICAgICAgICBkZWNyZW1lbnREZXB0aCgpOwotCi0gICAgICAgIC8vIEZ1
bGx5IHByb2Nlc3NlZDsgbm8gbmVlZCB0byB2aXNpdCBjaGlsZHJlbi4KLSAgICAgICAgdmlzaXRD
aGlsZHJlbiA9IGZhbHNlOwotICAgICAgICBicmVhazsKLSAgICAgIH0KICAgICAgIGNhc2UgRU9w
RnVuY3Rpb25DYWxsOgogICAgICAgICAvLyBGdW5jdGlvbiBjYWxsLgogICAgICAgICBpZiAodmlz
aXQgPT0gUHJlVmlzaXQpCi0gICAgICAgICAgICBvdXQgPDwgaGFzaEZ1bmN0aW9uTmFtZUlmTmVl
ZGVkKG5vZGUtPmdldE5hbWVPYmooKSkgPDwgIigiOworICAgICAgICAgICAgb3V0IDw8IGhhc2hG
dW5jdGlvbk5hbWVJZk5lZWRlZChub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0TmFt
ZU9iaigpKSA8PCAiKCI7CiAgICAgICAgIGVsc2UgaWYgKHZpc2l0ID09IEluVmlzaXQpCiAgICAg
ICAgICAgICBvdXQgPDwgIiwgIjsKICAgICAgICAgZWxzZQpAQCAtOTE3LDg4ICs4OTUsMzMgQEAK
ICAgICAgICAgdmlzaXRDaGlsZHJlbiA9IGZhbHNlOwogICAgICAgICBicmVhazsKICAgICAgIGNh
c2UgRU9wQ29uc3RydWN0RmxvYXQ6Ci0gICAgICAgIHdyaXRlQ29uc3RydWN0b3JUcmlwbGV0KHZp
c2l0LCBub2RlLT5nZXRUeXBlKCksICJmbG9hdCIpOwotICAgICAgICBicmVhazsKICAgICAgIGNh
c2UgRU9wQ29uc3RydWN0VmVjMjoKLSAgICAgICAgd3JpdGVDb25zdHJ1Y3RvclRyaXBsZXQodmlz
aXQsIG5vZGUtPmdldFR5cGUoKSwgInZlYzIiKTsKLSAgICAgICAgYnJlYWs7CiAgICAgICBjYXNl
IEVPcENvbnN0cnVjdFZlYzM6Ci0gICAgICAgIHdyaXRlQ29uc3RydWN0b3JUcmlwbGV0KHZpc2l0
LCBub2RlLT5nZXRUeXBlKCksICJ2ZWMzIik7Ci0gICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBF
T3BDb25zdHJ1Y3RWZWM0OgotICAgICAgICB3cml0ZUNvbnN0cnVjdG9yVHJpcGxldCh2aXNpdCwg
bm9kZS0+Z2V0VHlwZSgpLCAidmVjNCIpOwotICAgICAgICBicmVhazsKICAgICAgIGNhc2UgRU9w
Q29uc3RydWN0Qm9vbDoKLSAgICAgICAgd3JpdGVDb25zdHJ1Y3RvclRyaXBsZXQodmlzaXQsIG5v
ZGUtPmdldFR5cGUoKSwgImJvb2wiKTsKLSAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcENv
bnN0cnVjdEJWZWMyOgotICAgICAgICB3cml0ZUNvbnN0cnVjdG9yVHJpcGxldCh2aXNpdCwgbm9k
ZS0+Z2V0VHlwZSgpLCAiYnZlYzIiKTsKLSAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcENv
bnN0cnVjdEJWZWMzOgotICAgICAgICB3cml0ZUNvbnN0cnVjdG9yVHJpcGxldCh2aXNpdCwgbm9k
ZS0+Z2V0VHlwZSgpLCAiYnZlYzMiKTsKLSAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcENv
bnN0cnVjdEJWZWM0OgotICAgICAgICB3cml0ZUNvbnN0cnVjdG9yVHJpcGxldCh2aXNpdCwgbm9k
ZS0+Z2V0VHlwZSgpLCAiYnZlYzQiKTsKLSAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcENv
bnN0cnVjdEludDoKLSAgICAgICAgd3JpdGVDb25zdHJ1Y3RvclRyaXBsZXQodmlzaXQsIG5vZGUt
PmdldFR5cGUoKSwgImludCIpOwotICAgICAgICBicmVhazsKICAgICAgIGNhc2UgRU9wQ29uc3Ry
dWN0SVZlYzI6Ci0gICAgICAgIHdyaXRlQ29uc3RydWN0b3JUcmlwbGV0KHZpc2l0LCBub2RlLT5n
ZXRUeXBlKCksICJpdmVjMiIpOwotICAgICAgICBicmVhazsKICAgICAgIGNhc2UgRU9wQ29uc3Ry
dWN0SVZlYzM6Ci0gICAgICAgIHdyaXRlQ29uc3RydWN0b3JUcmlwbGV0KHZpc2l0LCBub2RlLT5n
ZXRUeXBlKCksICJpdmVjMyIpOwotICAgICAgICBicmVhazsKICAgICAgIGNhc2UgRU9wQ29uc3Ry
dWN0SVZlYzQ6Ci0gICAgICAgIHdyaXRlQ29uc3RydWN0b3JUcmlwbGV0KHZpc2l0LCBub2RlLT5n
ZXRUeXBlKCksICJpdmVjNCIpOwotICAgICAgICBicmVhazsKICAgICAgIGNhc2UgRU9wQ29uc3Ry
dWN0VUludDoKLSAgICAgICAgd3JpdGVDb25zdHJ1Y3RvclRyaXBsZXQodmlzaXQsIG5vZGUtPmdl
dFR5cGUoKSwgInVpbnQiKTsKLSAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcENvbnN0cnVj
dFVWZWMyOgotICAgICAgICB3cml0ZUNvbnN0cnVjdG9yVHJpcGxldCh2aXNpdCwgbm9kZS0+Z2V0
VHlwZSgpLCAidXZlYzIiKTsKLSAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcENvbnN0cnVj
dFVWZWMzOgotICAgICAgICB3cml0ZUNvbnN0cnVjdG9yVHJpcGxldCh2aXNpdCwgbm9kZS0+Z2V0
VHlwZSgpLCAidXZlYzMiKTsKLSAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcENvbnN0cnVj
dFVWZWM0OgotICAgICAgICB3cml0ZUNvbnN0cnVjdG9yVHJpcGxldCh2aXNpdCwgbm9kZS0+Z2V0
VHlwZSgpLCAidXZlYzQiKTsKLSAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcENvbnN0cnVj
dE1hdDI6Ci0gICAgICAgIHdyaXRlQ29uc3RydWN0b3JUcmlwbGV0KHZpc2l0LCBub2RlLT5nZXRU
eXBlKCksICJtYXQyIik7Ci0gICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RN
YXQyeDM6Ci0gICAgICAgIHdyaXRlQ29uc3RydWN0b3JUcmlwbGV0KHZpc2l0LCBub2RlLT5nZXRU
eXBlKCksICJtYXQyeDMiKTsKLSAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcENvbnN0cnVj
dE1hdDJ4NDoKLSAgICAgICAgd3JpdGVDb25zdHJ1Y3RvclRyaXBsZXQodmlzaXQsIG5vZGUtPmdl
dFR5cGUoKSwgIm1hdDJ4NCIpOwotICAgICAgICBicmVhazsKICAgICAgIGNhc2UgRU9wQ29uc3Ry
dWN0TWF0M3gyOgotICAgICAgICB3cml0ZUNvbnN0cnVjdG9yVHJpcGxldCh2aXNpdCwgbm9kZS0+
Z2V0VHlwZSgpLCAibWF0M3gyIik7Ci0gICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BDb25z
dHJ1Y3RNYXQzOgotICAgICAgICB3cml0ZUNvbnN0cnVjdG9yVHJpcGxldCh2aXNpdCwgbm9kZS0+
Z2V0VHlwZSgpLCAibWF0MyIpOwotICAgICAgICBicmVhazsKICAgICAgIGNhc2UgRU9wQ29uc3Ry
dWN0TWF0M3g0OgotICAgICAgICB3cml0ZUNvbnN0cnVjdG9yVHJpcGxldCh2aXNpdCwgbm9kZS0+
Z2V0VHlwZSgpLCAibWF0M3g0Iik7Ci0gICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BDb25z
dHJ1Y3RNYXQ0eDI6Ci0gICAgICAgIHdyaXRlQ29uc3RydWN0b3JUcmlwbGV0KHZpc2l0LCBub2Rl
LT5nZXRUeXBlKCksICJtYXQ0eDIiKTsKLSAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcENv
bnN0cnVjdE1hdDR4MzoKLSAgICAgICAgd3JpdGVDb25zdHJ1Y3RvclRyaXBsZXQodmlzaXQsIG5v
ZGUtPmdldFR5cGUoKSwgIm1hdDR4MyIpOwotICAgICAgICBicmVhazsKICAgICAgIGNhc2UgRU9w
Q29uc3RydWN0TWF0NDoKLSAgICAgICAgd3JpdGVDb25zdHJ1Y3RvclRyaXBsZXQodmlzaXQsIG5v
ZGUtPmdldFR5cGUoKSwgIm1hdDQiKTsKLSAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcENv
bnN0cnVjdFN0cnVjdDoKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgVFR5cGUgJnR5cGUg
PSBub2RlLT5nZXRUeXBlKCk7Ci0gICAgICAgICAgICBBU1NFUlQodHlwZS5nZXRCYXNpY1R5cGUo
KSA9PSBFYnRTdHJ1Y3QpOwotICAgICAgICAgICAgVFN0cmluZyBjb25zdHJ1Y3Rvck5hbWUgPSBo
YXNoTmFtZSh0eXBlLmdldFN0cnVjdCgpLT5uYW1lKCkpOwotICAgICAgICAgICAgd3JpdGVDb25z
dHJ1Y3RvclRyaXBsZXQodmlzaXQsIG5vZGUtPmdldFR5cGUoKSwgY29uc3RydWN0b3JOYW1lLmNf
c3RyKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICAgICAgICB3cml0ZUNv
bnN0cnVjdG9yVHJpcGxldCh2aXNpdCwgbm9kZS0+Z2V0VHlwZSgpKTsKKyAgICAgICAgICBicmVh
azsKIAogICAgICAgY2FzZSBFT3BPdXRlclByb2R1Y3Q6CiAgICAgICAgIHdyaXRlQnVpbHRJbkZ1
bmN0aW9uVHJpcGxldCh2aXNpdCwgIm91dGVyUHJvZHVjdCgiLCB1c2VFbXVsYXRlZEZ1bmN0aW9u
KTsKQEAgLTEwMjIsOSArOTQ1LDYgQEAKICAgICAgIGNhc2UgRU9wVmVjdG9yTm90RXF1YWw6CiAg
ICAgICAgIHdyaXRlQnVpbHRJbkZ1bmN0aW9uVHJpcGxldCh2aXNpdCwgIm5vdEVxdWFsKCIsIHVz
ZUVtdWxhdGVkRnVuY3Rpb24pOwogICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQ29tbWE6
Ci0gICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiLCAiLCAiKSIpOwotICAgICAgICBi
cmVhazsKIAogICAgICAgY2FzZSBFT3BNb2Q6CiAgICAgICAgIHdyaXRlQnVpbHRJbkZ1bmN0aW9u
VHJpcGxldCh2aXNpdCwgIm1vZCgiLCB1c2VFbXVsYXRlZEZ1bmN0aW9uKTsKQEAgLTExODksNyAr
MTEwOSw3IEBACiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgVE91dHB1dEdMU0xCYXNlOjp2
aXNpdENvZGVCbG9jayhUSW50ZXJtTm9kZSAqbm9kZSkKK3ZvaWQgVE91dHB1dEdMU0xCYXNlOjp2
aXNpdENvZGVCbG9jayhUSW50ZXJtQmxvY2sgKm5vZGUpCiB7CiAgICAgVEluZm9TaW5rQmFzZSAm
b3V0ID0gb2JqU2luaygpOwogICAgIGlmIChub2RlICE9IE5VTEwpCkBAIC0xMjA4LDQ1ICsxMTI4
LDEwIEBACiAKIFRTdHJpbmcgVE91dHB1dEdMU0xCYXNlOjpnZXRUeXBlTmFtZShjb25zdCBUVHlw
ZSAmdHlwZSkKIHsKLSAgICBUSW5mb1NpbmtCYXNlIG91dDsKLSAgICBpZiAodHlwZS5pc01hdHJp
eCgpKQotICAgIHsKLSAgICAgICAgb3V0IDw8ICJtYXQiOwotICAgICAgICBvdXQgPDwgdHlwZS5n
ZXROb21pbmFsU2l6ZSgpOwotICAgICAgICBpZiAodHlwZS5nZXRTZWNvbmRhcnlTaXplKCkgIT0g
dHlwZS5nZXROb21pbmFsU2l6ZSgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBvdXQgPDwgIngi
IDw8IHR5cGUuZ2V0U2Vjb25kYXJ5U2l6ZSgpOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2Ug
aWYgKHR5cGUuaXNWZWN0b3IoKSkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAodHlwZS5nZXRCYXNp
Y1R5cGUoKSkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAg
ICBvdXQgPDwgInZlYyI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEVidElu
dDoKLSAgICAgICAgICAgIG91dCA8PCAiaXZlYyI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICBjYXNlIEVidEJvb2w6Ci0gICAgICAgICAgICBvdXQgPDwgImJ2ZWMiOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBFYnRVSW50OgotICAgICAgICAgICAgb3V0IDw8ICJ1
dmVjIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOwotICAgICAgICB9Ci0gICAgICAgIG91dCA8PCB0eXBlLmdldE5vbWlu
YWxTaXplKCk7Ci0gICAgfQorICAgIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVj
dCkKKyAgICAgICAgcmV0dXJuIGhhc2hOYW1lKHR5cGUuZ2V0U3RydWN0KCktPm5hbWUoKSk7CiAg
ICAgZWxzZQotICAgIHsKLSAgICAgICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3Ry
dWN0KQotICAgICAgICAgICAgb3V0IDw8IGhhc2hOYW1lKHR5cGUuZ2V0U3RydWN0KCktPm5hbWUo
KSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG91dCA8PCB0eXBlLmdldEJhc2ljU3RyaW5n
KCk7Ci0gICAgfQotICAgIHJldHVybiBUU3RyaW5nKG91dC5jX3N0cigpKTsKKyAgICAgICAgcmV0
dXJuIHR5cGUuZ2V0QnVpbHRJblR5cGVOYW1lU3RyaW5nKCk7CiB9CiAKIFRTdHJpbmcgVE91dHB1
dEdMU0xCYXNlOjpoYXNoTmFtZShjb25zdCBUU3RyaW5nICZuYW1lKQpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0R0xTTEJhc2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9PdXRwdXRHTFNMQmFzZS5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRHTFNMQmFzZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNywyMSArMzcsMjUgQEAKICAgICB2aXJ0dWFsIGJvb2wgd3JpdGVWYXJp
YWJsZVByZWNpc2lvbihUUHJlY2lzaW9uIHByZWNpc2lvbikgPSAwOwogICAgIHZvaWQgd3JpdGVG
dW5jdGlvblBhcmFtZXRlcnMoY29uc3QgVEludGVybVNlcXVlbmNlICZhcmdzKTsKICAgICBjb25z
dCBUQ29uc3RhbnRVbmlvbiAqd3JpdGVDb25zdGFudFVuaW9uKGNvbnN0IFRUeXBlICZ0eXBlLCBj
b25zdCBUQ29uc3RhbnRVbmlvbiAqcENvbnN0VW5pb24pOwotICAgIHZvaWQgd3JpdGVDb25zdHJ1
Y3RvclRyaXBsZXQoVmlzaXQgdmlzaXQsIGNvbnN0IFRUeXBlICZ0eXBlLCBjb25zdCBjaGFyICpj
b25zdHJ1Y3RvckJhc2VUeXBlKTsKKyAgICB2b2lkIHdyaXRlQ29uc3RydWN0b3JUcmlwbGV0KFZp
c2l0IHZpc2l0LCBjb25zdCBUVHlwZSAmdHlwZSk7CiAgICAgVFN0cmluZyBnZXRUeXBlTmFtZShj
b25zdCBUVHlwZSAmdHlwZSk7CiAKICAgICB2b2lkIHZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wg
Km5vZGUpIG92ZXJyaWRlOwogICAgIHZvaWQgdmlzaXRDb25zdGFudFVuaW9uKFRJbnRlcm1Db25z
dGFudFVuaW9uICpub2RlKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0U3dpenpsZShWaXNpdCB2
aXNpdCwgVEludGVybVN3aXp6bGUgKm5vZGUpIG92ZXJyaWRlOwogICAgIGJvb2wgdmlzaXRCaW5h
cnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkgKm5vZGUpIG92ZXJyaWRlOwogICAgIGJvb2wg
dmlzaXRVbmFyeShWaXNpdCB2aXNpdCwgVEludGVybVVuYXJ5ICpub2RlKSBvdmVycmlkZTsKLSAg
ICBib29sIHZpc2l0U2VsZWN0aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtU2VsZWN0aW9uICpub2Rl
KSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0VGVybmFyeShWaXNpdCB2aXNpdCwgVEludGVybVRl
cm5hcnkgKm5vZGUpIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRJZkVsc2UoVmlzaXQgdmlzaXQs
IFRJbnRlcm1JZkVsc2UgKm5vZGUpIG92ZXJyaWRlOwogICAgIGJvb2wgdmlzaXRTd2l0Y2goVmlz
aXQgdmlzaXQsIFRJbnRlcm1Td2l0Y2ggKm5vZGUpIG92ZXJyaWRlOwogICAgIGJvb2wgdmlzaXRD
YXNlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQ2FzZSAqbm9kZSkgb3ZlcnJpZGU7CisgICAgYm9vbCB2
aXNpdEZ1bmN0aW9uRGVmaW5pdGlvbihWaXNpdCB2aXNpdCwgVEludGVybUZ1bmN0aW9uRGVmaW5p
dGlvbiAqbm9kZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNp
dCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdEJsb2Nr
KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmxvY2sgKm5vZGUpIG92ZXJyaWRlOwogICAgIGJvb2wgdmlz
aXRMb29wKFZpc2l0IHZpc2l0LCBUSW50ZXJtTG9vcCAqbm9kZSkgb3ZlcnJpZGU7CiAgICAgYm9v
bCB2aXNpdEJyYW5jaChWaXNpdCB2aXNpdCwgVEludGVybUJyYW5jaCAqbm9kZSkgb3ZlcnJpZGU7
CiAKLSAgICB2b2lkIHZpc2l0Q29kZUJsb2NrKFRJbnRlcm1Ob2RlICpub2RlKTsKKyAgICB2b2lk
IHZpc2l0Q29kZUJsb2NrKFRJbnRlcm1CbG9jayAqbm9kZSk7CiAKICAgICAvLyBSZXR1cm4gdGhl
IG9yaWdpbmFsIG5hbWUgaWYgaGFzaCBmdW5jdGlvbiBwb2ludGVyIGlzIE5VTEw7CiAgICAgLy8g
b3RoZXJ3aXNlIHJldHVybiB0aGUgaGFzaGVkIG5hbWUuCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRITFNMLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRw
dXRITFNMLmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0SExTTC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1JlbW92ZVN3aXRj
aEZhbGxUaHJvdWdoLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9TZWFyY2hTeW1i
b2wuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1N0cnVjdHVyZUhMU0wuaCIKKyNp
bmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1RleHR1cmVGdW5jdGlvbkhMU0wuaCIKICNpbmNs
dWRlICJjb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JITFNMLmgiCiAjaW5jbHVkZSAiY29t
cGlsZXIvdHJhbnNsYXRvci9Vbmlmb3JtSExTTC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5z
bGF0b3IvVXRpbHNITFNMLmgiCkBAIC0zMCwxMSArMzEsNiBAQAogbmFtZXNwYWNlCiB7CiAKLWJv
b2wgSXNTZXF1ZW5jZShUSW50ZXJtTm9kZSAqbm9kZSkKLXsKLSAgICByZXR1cm4gbm9kZS0+Z2V0
QXNBZ2dyZWdhdGUoKSAhPSBudWxscHRyICYmIG5vZGUtPmdldEFzQWdncmVnYXRlKCktPmdldE9w
KCkgPT0gRU9wU2VxdWVuY2U7Ci19Ci0KIHZvaWQgV3JpdGVTaW5nbGVDb25zdGFudChUSW5mb1Np
bmtCYXNlICZvdXQsIGNvbnN0IFRDb25zdGFudFVuaW9uICpjb25zdCBjb25zdFVuaW9uKQogewog
ICAgIEFTU0VSVChjb25zdFVuaW9uICE9IG51bGxwdHIpOwpAQCAtNzQsMTA2ICs3MCwxOSBAQAog
ICAgIHJldHVybiBjb25zdFVuaW9uSXRlcmF0ZWQ7CiB9CiAKLXZvaWQgT3V0cHV0SW50VGV4Q29v
cmRXcmFwKFRJbmZvU2lua0Jhc2UgJm91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIgKndyYXBNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciAqc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJnRleENv
b3JkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmdGV4Q29vcmRP
ZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0ZXhDb29yZE91
dE5hbWUpCi17Ci0gICAgLy8gR0xFUyAzLjAuNCB0YWJsZSAzLjIyIHNwZWNpZmllcyBob3cgdGhl
IHdyYXAgbW9kZXMgd29yay4gV2UgZG9uJ3QgdXNlIHRoZSBmb3JtdWxhcyB2ZXJiYXRpbQotICAg
IC8vIGJ1dCByYXRoZXIgdXNlIGVxdWl2YWxlbnQgZm9ybXVsYXMgdGhhdCBtYXAgYmV0dGVyIHRv
IEhMU0wuCi0gICAgb3V0IDw8ICJpbnQgIiA8PCB0ZXhDb29yZE91dE5hbWUgPDwgIjtcbiI7Ci0g
ICAgb3V0IDw8ICJmbG9hdCAiIDw8IHRleENvb3JkT3V0TmFtZSA8PCAiT2Zmc2V0ID0gIiA8PCB0
ZXhDb29yZCA8PCAiICsgZmxvYXQoIiA8PCB0ZXhDb29yZE9mZnNldAotICAgICAgICA8PCAiKSAv
ICIgPDwgc2l6ZSA8PCAiO1xuIjsKLQotICAgIC8vIENMQU1QX1RPX0VER0UKLSAgICBvdXQgPDwg
ImlmICgiIDw8IHdyYXBNb2RlIDw8ICIgPT0gMSlcbiI7Ci0gICAgb3V0IDw8ICJ7XG4iOwotICAg
IG91dCA8PCAiICAgICIgPDwgdGV4Q29vcmRPdXROYW1lIDw8ICIgPSBjbGFtcChpbnQoZmxvb3Io
IiA8PCBzaXplIDw8ICIgKiAiIDw8IHRleENvb3JkT3V0TmFtZQotICAgICAgICA8PCAiT2Zmc2V0
KSksIDAsIGludCgiIDw8IHNpemUgPDwgIikgLSAxKTtcbiI7Ci0gICAgb3V0IDw8ICJ9XG4iOwot
Ci0gICAgLy8gTUlSUk9SRURfUkVQRUFUCi0gICAgb3V0IDw8ICJlbHNlIGlmICgiIDw8IHdyYXBN
b2RlIDw8ICIgPT0gMylcbiI7Ci0gICAgb3V0IDw8ICJ7XG4iOwotICAgIG91dCA8PCAiICAgIGZs
b2F0IGNvb3JkV3JhcHBlZCA9IDEuMCAtIGFicyhmcmFjKGFicygiIDw8IHRleENvb3JkT3V0TmFt
ZQotICAgICAgICA8PCAiT2Zmc2V0KSAqIDAuNSkgKiAyLjAgLSAxLjApO1xuIjsKLSAgICBvdXQg
PDwgIiAgICAiIDw8IHRleENvb3JkT3V0TmFtZSA8PCAiID0gaW50KGZsb29yKCIgPDwgc2l6ZSA8
PCAiICogY29vcmRXcmFwcGVkKSk7XG4iOwotICAgIG91dCA8PCAifVxuIjsKLQotICAgIC8vIFJF
UEVBVAotICAgIG91dCA8PCAiZWxzZVxuIjsKLSAgICBvdXQgPDwgIntcbiI7Ci0gICAgb3V0IDw8
ICIgICAgIiA8PCB0ZXhDb29yZE91dE5hbWUgPDwgIiA9IGludChmbG9vcigiIDw8IHNpemUgPDwg
IiAqIGZyYWMoIiA8PCB0ZXhDb29yZE91dE5hbWUKLSAgICAgICAgPDwgIk9mZnNldCkpKTtcbiI7
Ci0gICAgb3V0IDw8ICJ9XG4iOwotfQotCiB9IC8vIG5hbWVzcGFjZQogCiBuYW1lc3BhY2Ugc2gK
IHsKIAotVFN0cmluZyBPdXRwdXRITFNMOjpUZXh0dXJlRnVuY3Rpb246Om5hbWUoKSBjb25zdAot
ewotICAgIFRTdHJpbmcgbmFtZSA9ICJnbF90ZXh0dXJlIjsKLQotICAgIC8vIFdlIG5lZWQgdG8g
aW5jbHVkZSBmdWxsIHRoZSBzYW1wbGVyIHR5cGUgaW4gdGhlIGZ1bmN0aW9uIG5hbWUgdG8gbWFr
ZSB0aGUgc2lnbmF0dXJlIHVuaXF1ZQotICAgIC8vIG9uIEQzRDExLCB3aGVyZSBzYW1wbGVycyBh
cmUgcGFzc2VkIHRvIHRleHR1cmUgZnVuY3Rpb25zIGFzIGluZGljZXMuCi0gICAgbmFtZSArPSBU
ZXh0dXJlVHlwZVN1ZmZpeCh0aGlzLT5zYW1wbGVyKTsKLQotICAgIGlmIChwcm9qKQotICAgIHsK
LSAgICAgICAgbmFtZSArPSAiUHJvaiI7Ci0gICAgfQotCi0gICAgaWYgKG9mZnNldCkKLSAgICB7
Ci0gICAgICAgIG5hbWUgKz0gIk9mZnNldCI7Ci0gICAgfQotCi0gICAgc3dpdGNoKG1ldGhvZCkK
LSAgICB7Ci0gICAgICBjYXNlIElNUExJQ0lUOiAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSBCSUFTOiAgICAgICAgICAgICAgICAgICAgICBicmVhazsgICAvLyBFeHRyYSBwYXJh
bWV0ZXIgbWFrZXMgdGhlIHNpZ25hdHVyZSB1bmlxdWUKLSAgICAgIGNhc2UgTE9EOiAgICAgIG5h
bWUgKz0gIkxvZCI7ICAgYnJlYWs7Ci0gICAgICBjYXNlIExPRDA6ICAgICBuYW1lICs9ICJMb2Qw
IjsgIGJyZWFrOwotICAgICAgY2FzZSBMT0QwQklBUzogbmFtZSArPSAiTG9kMCI7ICBicmVhazsg
ICAvLyBFeHRyYSBwYXJhbWV0ZXIgbWFrZXMgdGhlIHNpZ25hdHVyZSB1bmlxdWUKLSAgICAgIGNh
c2UgU0laRTogICAgIG5hbWUgKz0gIlNpemUiOyAgYnJlYWs7Ci0gICAgICBjYXNlIEZFVENIOiAg
ICBuYW1lICs9ICJGZXRjaCI7IGJyZWFrOwotICAgICAgY2FzZSBHUkFEOiAgICAgbmFtZSArPSAi
R3JhZCI7ICBicmVhazsKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIG5hbWUgKyAiKCI7Ci19Ci0KLWJvb2wgT3V0cHV0SExTTDo6VGV4dHVyZUZ1bmN0
aW9uOjpvcGVyYXRvcjwoY29uc3QgVGV4dHVyZUZ1bmN0aW9uICZyaHMpIGNvbnN0Ci17Ci0gICAg
aWYgKHNhbXBsZXIgPCByaHMuc2FtcGxlcikgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHNhbXBsZXIg
PiByaHMuc2FtcGxlcikgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGNvb3JkcyA8IHJocy5jb29y
ZHMpICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGNvb3JkcyA+IHJocy5jb29yZHMpICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgaWYgKCFwcm9qICYmIHJocy5wcm9qKSAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgaWYgKHByb2ogJiYgIXJocy5wcm9qKSAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFv
ZmZzZXQgJiYgcmhzLm9mZnNldCkgcmV0dXJuIHRydWU7Ci0gICAgaWYgKG9mZnNldCAmJiAhcmhz
Lm9mZnNldCkgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKG1ldGhvZCA8IHJocy5tZXRob2QpICAg
cmV0dXJuIHRydWU7Ci0gICAgaWYgKG1ldGhvZCA+IHJocy5tZXRob2QpICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1PdXRwdXRITFNMOjpPdXRwdXRITFNMKHNoOjpH
TGVudW0gc2hhZGVyVHlwZSwgaW50IHNoYWRlclZlcnNpb24sCi0gICAgY29uc3QgVEV4dGVuc2lv
bkJlaGF2aW9yICZleHRlbnNpb25CZWhhdmlvciwKLSAgICBjb25zdCBjaGFyICpzb3VyY2VQYXRo
LCBTaFNoYWRlck91dHB1dCBvdXRwdXRUeXBlLAotICAgIGludCBudW1SZW5kZXJUYXJnZXRzLCBj
b25zdCBzdGQ6OnZlY3RvcjxVbmlmb3JtPiAmdW5pZm9ybXMsCi0gICAgaW50IGNvbXBpbGVPcHRp
b25zKQorT3V0cHV0SExTTDo6T3V0cHV0SExTTChzaDo6R0xlbnVtIHNoYWRlclR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgIGludCBzaGFkZXJWZXJzaW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3IgJmV4dGVuc2lvbkJlaGF2aW9yLAorICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzb3VyY2VQYXRoLAorICAgICAgICAgICAgICAg
ICAgICAgICBTaFNoYWRlck91dHB1dCBvdXRwdXRUeXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgbnVtUmVuZGVyVGFyZ2V0cywKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8VW5pZm9ybT4gJnVuaWZvcm1zLAorICAgICAgICAgICAgICAgICAgICAgICBTaENv
bXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25zKQogICAgIDogVEludGVybVRyYXZlcnNlcih0cnVl
LCB0cnVlLCB0cnVlKSwKICAgICAgIG1TaGFkZXJUeXBlKHNoYWRlclR5cGUpLAogICAgICAgbVNo
YWRlclZlcnNpb24oc2hhZGVyVmVyc2lvbiksCkBAIC0yMTEsNiArMTIwLDcgQEAKIAogICAgIG1T
dHJ1Y3R1cmVITFNMID0gbmV3IFN0cnVjdHVyZUhMU0w7CiAgICAgbVVuaWZvcm1ITFNMID0gbmV3
IFVuaWZvcm1ITFNMKG1TdHJ1Y3R1cmVITFNMLCBvdXRwdXRUeXBlLCB1bmlmb3Jtcyk7CisgICAg
bVRleHR1cmVGdW5jdGlvbkhMU0wgPSBuZXcgVGV4dHVyZUZ1bmN0aW9uSExTTDsKIAogICAgIGlm
IChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMXzNfMF9PVVRQVVQpCiAgICAgewpAQCAtMjI4LDYgKzEz
OCw3IEBACiB7CiAgICAgU2FmZURlbGV0ZShtU3RydWN0dXJlSExTTCk7CiAgICAgU2FmZURlbGV0
ZShtVW5pZm9ybUhMU0wpOworICAgIFNhZmVEZWxldGUobVRleHR1cmVGdW5jdGlvbkhMU0wpOwog
ICAgIGZvciAoYXV0byAmZXFGdW5jdGlvbiA6IG1TdHJ1Y3RFcXVhbGl0eUZ1bmN0aW9ucykKICAg
ICB7CiAgICAgICAgIFNhZmVEZWxldGUoZXFGdW5jdGlvbik7CkBAIC0yNDUsNiArMTU2LDEyIEBA
CiAKICAgICBCdWlsdEluRnVuY3Rpb25FbXVsYXRvciBidWlsdEluRnVuY3Rpb25FbXVsYXRvcjsK
ICAgICBJbml0QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JGb3JITFNMKCZidWlsdEluRnVuY3Rpb25F
bXVsYXRvcik7CisgICAgaWYgKChtQ29tcGlsZU9wdGlvbnMgJiBTSF9FTVVMQVRFX0lTTkFOX0ZM
T0FUX0ZVTkNUSU9OKSAhPSAwKQorICAgIHsKKyAgICAgICAgSW5pdEJ1aWx0SW5Jc25hbkZ1bmN0
aW9uRW11bGF0b3JGb3JITFNMV29ya2Fyb3VuZHMoJmJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtU2hhZGVyVmVyc2lvbik7CisgICAgfQorCiAgICAgYnVpbHRJbkZ1bmN0aW9uRW11bGF0b3Iu
TWFya0J1aWx0SW5GdW5jdGlvbnNGb3JFbXVsYXRpb24odHJlZVJvb3QpOwogCiAgICAgLy8gTm93
IHRoYXQgd2UgYXJlIGRvbmUgY2hhbmdpbmcgdGhlIEFTVCwgZG8gdGhlIGFuYWx5c2VzIG5lZWQg
Zm9yIEhMU0wgZ2VuZXJhdGlvbgpAQCAtMzExLDcgKzIyOCw3IEBACiBpbnQgT3V0cHV0SExTTDo6
dmVjdG9yU2l6ZShjb25zdCBUVHlwZSAmdHlwZSkgY29uc3QKIHsKICAgICBpbnQgZWxlbWVudFNp
emUgPSB0eXBlLmlzTWF0cml4KCkgPyB0eXBlLmdldENvbHMoKSA6IDE7Ci0gICAgaW50IGFycmF5
U2l6ZSA9IHR5cGUuaXNBcnJheSgpID8gdHlwZS5nZXRBcnJheVNpemUoKSA6IDE7CisgICAgdW5z
aWduZWQgaW50IGFycmF5U2l6ZSA9IHR5cGUuaXNBcnJheSgpID8gdHlwZS5nZXRBcnJheVNpemUo
KSA6IDF1OwogCiAgICAgcmV0dXJuIGVsZW1lbnRTaXplICogYXJyYXlTaXplOwogfQpAQCAtNjky
LDgxMCArNjA5LDEwIEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBmb3IgKFRleHR1cmVGdW5j
dGlvblNldDo6Y29uc3RfaXRlcmF0b3IgdGV4dHVyZUZ1bmN0aW9uID0gbVVzZXNUZXh0dXJlLmJl
Z2luKCk7IHRleHR1cmVGdW5jdGlvbiAhPSBtVXNlc1RleHR1cmUuZW5kKCk7IHRleHR1cmVGdW5j
dGlvbisrKQotICAgIHsKLSAgICAgICAgLy8gUmV0dXJuIHR5cGUKLSAgICAgICAgaWYgKHRleHR1
cmVGdW5jdGlvbi0+bWV0aG9kID09IFRleHR1cmVGdW5jdGlvbjo6U0laRSkKLSAgICAgICAgewot
ICAgICAgICAgICAgc3dpdGNoKHRleHR1cmVGdW5jdGlvbi0+c2FtcGxlcikKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkQ6ICAgICAgICAgICAgb3V0IDw8ICJp
bnQyICI7IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXIzRDogICAgICAgICAg
ICBvdXQgPDwgImludDMgIjsgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlckN1
YmU6ICAgICAgICAgIG91dCA8PCAiaW50MiAiOyBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBF
YnRTYW1wbGVyMkRBcnJheTogICAgICAgb3V0IDw8ICJpbnQzICI7IGJyZWFrOwotICAgICAgICAg
ICAgICBjYXNlIEVidElTYW1wbGVyMkQ6ICAgICAgICAgICBvdXQgPDwgImludDIgIjsgYnJlYWs7
Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIzRDogICAgICAgICAgIG91dCA8PCAiaW50
MyAiOyBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRJU2FtcGxlckN1YmU6ICAgICAgICAg
b3V0IDw8ICJpbnQyICI7IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidElTYW1wbGVyMkRB
cnJheTogICAgICBvdXQgPDwgImludDMgIjsgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0
VVNhbXBsZXIyRDogICAgICAgICAgIG91dCA8PCAiaW50MiAiOyBicmVhazsKLSAgICAgICAgICAg
ICAgY2FzZSBFYnRVU2FtcGxlcjNEOiAgICAgICAgICAgb3V0IDw8ICJpbnQzICI7IGJyZWFrOwot
ICAgICAgICAgICAgICBjYXNlIEVidFVTYW1wbGVyQ3ViZTogICAgICAgICBvdXQgPDwgImludDIg
IjsgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXIyREFycmF5OiAgICAgIG91
dCA8PCAiaW50MyAiOyBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkRTaGFk
b3c6ICAgICAgb3V0IDw8ICJpbnQyICI7IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidFNh
bXBsZXJDdWJlU2hhZG93OiAgICBvdXQgPDwgImludDIgIjsgYnJlYWs7Ci0gICAgICAgICAgICAg
IGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXlTaGFkb3c6IG91dCA8PCAiaW50MyAiOyBicmVhazsKLSAg
ICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgICAgICBlbHNlICAgLy8gU2FtcGxpbmcgZnVuY3Rpb24KLSAgICAgICAgewotICAg
ICAgICAgICAgc3dpdGNoKHRleHR1cmVGdW5jdGlvbi0+c2FtcGxlcikKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkQ6ICAgICAgICAgICAgb3V0IDw8ICJmbG9h
dDQgIjsgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjNEOiAgICAgICAgICAg
IG91dCA8PCAiZmxvYXQ0ICI7IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXJD
dWJlOiAgICAgICAgICBvdXQgPDwgImZsb2F0NCAiOyBicmVhazsKLSAgICAgICAgICAgICAgY2Fz
ZSBFYnRTYW1wbGVyMkRBcnJheTogICAgICAgb3V0IDw8ICJmbG9hdDQgIjsgYnJlYWs7Ci0gICAg
ICAgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIyRDogICAgICAgICAgIG91dCA8PCAiaW50NCAiOyAg
IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidElTYW1wbGVyM0Q6ICAgICAgICAgICBvdXQg
PDwgImludDQgIjsgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRJU2FtcGxlckN1YmU6
ICAgICAgICAgb3V0IDw8ICJpbnQ0ICI7ICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0
SVNhbXBsZXIyREFycmF5OiAgICAgIG91dCA8PCAiaW50NCAiOyAgIGJyZWFrOwotICAgICAgICAg
ICAgICBjYXNlIEVidFVTYW1wbGVyMkQ6ICAgICAgICAgICBvdXQgPDwgInVpbnQ0ICI7ICBicmVh
azsKLSAgICAgICAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjNEOiAgICAgICAgICAgb3V0IDw8ICJ1
aW50NCAiOyAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXJDdWJlOiAgICAg
ICAgIG91dCA8PCAidWludDQgIjsgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidFVTYW1w
bGVyMkRBcnJheTogICAgICBvdXQgPDwgInVpbnQ0ICI7ICBicmVhazsKLSAgICAgICAgICAgICAg
Y2FzZSBFYnRTYW1wbGVyMkRTaGFkb3c6ICAgICAgb3V0IDw8ICJmbG9hdCAiOyAgYnJlYWs7Ci0g
ICAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlckN1YmVTaGFkb3c6ICAgIG91dCA8PCAiZmxvYXQg
IjsgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXIyREFycmF5U2hhZG93OiBv
dXQgPDwgImZsb2F0ICI7ICBicmVhazsKLSAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFC
TEUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgIGJvb2wgZ2V0RGltZW5zaW9uc0ln
bm9yZXNCYXNlTGV2ZWwgPQorICAgICAgICAobUNvbXBpbGVPcHRpb25zICYgU0hfSExTTF9HRVRf
RElNRU5TSU9OU19JR05PUkVTX0JBU0VfTEVWRUwpICE9IDA7CisgICAgbVRleHR1cmVGdW5jdGlv
bkhMU0wtPnRleHR1cmVGdW5jdGlvbkhlYWRlcihvdXQsIG1PdXRwdXRUeXBlLCBnZXREaW1lbnNp
b25zSWdub3Jlc0Jhc2VMZXZlbCk7CiAKLSAgICAgICAgLy8gRnVuY3Rpb24gbmFtZQotICAgICAg
ICBvdXQgPDwgdGV4dHVyZUZ1bmN0aW9uLT5uYW1lKCk7Ci0KLSAgICAgICAgLy8gQXJndW1lbnQg
bGlzdAotICAgICAgICBpbnQgaGxzbENvb3JkcyA9IDQ7Ci0KLSAgICAgICAgaWYgKG1PdXRwdXRU
eXBlID09IFNIX0hMU0xfM18wX09VVFBVVCkKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNo
KHRleHR1cmVGdW5jdGlvbi0+c2FtcGxlcikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
Y2FzZSBFYnRTYW1wbGVyMkQ6ICAgb3V0IDw8ICJzYW1wbGVyMkQgcyI7ICAgaGxzbENvb3JkcyA9
IDI7IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXJDdWJlOiBvdXQgPDwgInNh
bXBsZXJDVUJFIHMiOyBobHNsQ29vcmRzID0gMzsgYnJlYWs7Ci0gICAgICAgICAgICAgIGRlZmF1
bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHN3aXRjaCh0
ZXh0dXJlRnVuY3Rpb24tPm1ldGhvZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2Fz
ZSBUZXh0dXJlRnVuY3Rpb246OklNUExJQ0lUOiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uOjpCSUFTOiAgICAgaGxzbENvb3JkcyA9IDQ7
IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbjo6TE9EOiAgICAgIGhs
c2xDb29yZHMgPSA0OyBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb246
OkxPRDA6ICAgICBobHNsQ29vcmRzID0gNDsgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgVGV4
dHVyZUZ1bmN0aW9uOjpMT0QwQklBUzogaGxzbENvb3JkcyA9IDQ7IGJyZWFrOwotICAgICAgICAg
ICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgaGxzbENvb3JkcyA9IEhMU0xUZXh0
dXJlQ29vcmRzQ291bnQodGV4dHVyZUZ1bmN0aW9uLT5zYW1wbGVyKTsKLSAgICAgICAgICAgIGlm
IChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMXzRfMF9GTDlfM19PVVRQVVQpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgb3V0IDw8IFRleHR1cmVTdHJpbmcodGV4dHVyZUZ1bmN0aW9uLT5z
YW1wbGVyKSA8PCAiIHgsICIKLSAgICAgICAgICAgICAgICAgICAgPDwgU2FtcGxlclN0cmluZyh0
ZXh0dXJlRnVuY3Rpb24tPnNhbXBsZXIpIDw8ICIgcyI7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG1PdXRwdXRU
eXBlID09IFNIX0hMU0xfNF8xX09VVFBVVCk7Ci0gICAgICAgICAgICAgICAgb3V0IDw8ICJjb25z
dCB1aW50IHNhbXBsZXJJbmRleCI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAodGV4dHVyZUZ1bmN0aW9uLT5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9uOjpGRVRDSCkg
ICAvLyBJbnRlZ2VyIGNvb3JkaW5hdGVzCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCh0
ZXh0dXJlRnVuY3Rpb24tPmNvb3JkcykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2Fz
ZSAyOiBvdXQgPDwgIiwgaW50MiB0IjsgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgMzogb3V0
IDw8ICIsIGludDMgdCI7IGJyZWFrOwotICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJM
RSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgICAvLyBGbG9hdGlu
Zy1wb2ludCBjb29yZGluYXRlcyAoZXhjZXB0IHRleHR1cmVTaXplKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBzd2l0Y2godGV4dHVyZUZ1bmN0aW9uLT5jb29yZHMpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgIGNhc2UgMTogb3V0IDw8ICIsIGludCBsb2QiOyAgYnJlYWs7ICAgLy8gdGV4
dHVyZVNpemUoKQotICAgICAgICAgICAgICBjYXNlIDI6IG91dCA8PCAiLCBmbG9hdDIgdCI7IGJy
ZWFrOwotICAgICAgICAgICAgICBjYXNlIDM6IG91dCA8PCAiLCBmbG9hdDMgdCI7IGJyZWFrOwot
ICAgICAgICAgICAgICBjYXNlIDQ6IG91dCA8PCAiLCBmbG9hdDQgdCI7IGJyZWFrOwotICAgICAg
ICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKHRleHR1cmVGdW5jdGlvbi0+bWV0aG9kID09IFRleHR1cmVGdW5jdGlv
bjo6R1JBRCkKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoKHRleHR1cmVGdW5jdGlvbi0+
c2FtcGxlcikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkQ6
Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIyRDoKLSAgICAgICAgICAgICAgY2FzZSBF
YnRVU2FtcGxlcjJEOgotICAgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXIyREFycmF5OgotICAg
ICAgICAgICAgICBjYXNlIEVidElTYW1wbGVyMkRBcnJheToKLSAgICAgICAgICAgICAgY2FzZSBF
YnRVU2FtcGxlcjJEQXJyYXk6Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEU2hhZG93
OgotICAgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXIyREFycmF5U2hhZG93OgotICAgICAgICAg
ICAgICAgIG91dCA8PCAiLCBmbG9hdDIgZGR4LCBmbG9hdDIgZGR5IjsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyM0Q6Ci0gICAgICAgICAgICAg
IGNhc2UgRWJ0SVNhbXBsZXIzRDoKLSAgICAgICAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjNEOgot
ICAgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXJDdWJlOgotICAgICAgICAgICAgICBjYXNlIEVi
dElTYW1wbGVyQ3ViZToKLSAgICAgICAgICAgICAgY2FzZSBFYnRVU2FtcGxlckN1YmU6Ci0gICAg
ICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlckN1YmVTaGFkb3c6Ci0gICAgICAgICAgICAgICAgb3V0
IDw8ICIsIGZsb2F0MyBkZHgsIGZsb2F0MyBkZHkiOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0KLSAgICAgICAgc3dpdGNoKHRleHR1cmVGdW5jdGlvbi0+bWV0aG9kKQotICAgICAg
ICB7Ci0gICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb246OklNUExJQ0lUOiAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uOjpCSUFT
OiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgICAvLyBDb21lcyBhZnRlciB0aGUg
b2Zmc2V0IHBhcmFtZXRlcgotICAgICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uOjpMT0Q6ICAg
ICAgb3V0IDw8ICIsIGZsb2F0IGxvZCI7ICBicmVhazsKLSAgICAgICAgICBjYXNlIFRleHR1cmVG
dW5jdGlvbjo6TE9EMDogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgY2FzZSBUZXh0dXJlRnVuY3Rpb246OkxPRDBCSUFTOiAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOyAgIC8vIENvbWVzIGFmdGVyIHRoZSBvZmZzZXQgcGFyYW1ldGVyCi0gICAgICAgICAg
Y2FzZSBUZXh0dXJlRnVuY3Rpb246OlNJWkU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uOjpGRVRDSDogICAgb3V0IDw8ICIs
IGludCBtaXAiOyAgICBicmVhazsKLSAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbjo6R1JB
RDogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDog
VU5SRUFDSEFCTEUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh0ZXh0dXJlRnVuY3Rpb24t
Pm9mZnNldCkKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoKHRleHR1cmVGdW5jdGlvbi0+
c2FtcGxlcikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkQ6
ICAgICAgICAgICAgb3V0IDw8ICIsIGludDIgb2Zmc2V0IjsgYnJlYWs7Ci0gICAgICAgICAgICAg
IGNhc2UgRWJ0U2FtcGxlcjNEOiAgICAgICAgICAgIG91dCA8PCAiLCBpbnQzIG9mZnNldCI7IGJy
ZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXIyREFycmF5OiAgICAgICBvdXQgPDwg
IiwgaW50MiBvZmZzZXQiOyBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjJE
OiAgICAgICAgICAgb3V0IDw8ICIsIGludDIgb2Zmc2V0IjsgYnJlYWs7Ci0gICAgICAgICAgICAg
IGNhc2UgRWJ0SVNhbXBsZXIzRDogICAgICAgICAgIG91dCA8PCAiLCBpbnQzIG9mZnNldCI7IGJy
ZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidElTYW1wbGVyMkRBcnJheTogICAgICBvdXQgPDwg
IiwgaW50MiBvZmZzZXQiOyBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjJE
OiAgICAgICAgICAgb3V0IDw8ICIsIGludDIgb2Zmc2V0IjsgYnJlYWs7Ci0gICAgICAgICAgICAg
IGNhc2UgRWJ0VVNhbXBsZXIzRDogICAgICAgICAgIG91dCA8PCAiLCBpbnQzIG9mZnNldCI7IGJy
ZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidFVTYW1wbGVyMkRBcnJheTogICAgICBvdXQgPDwg
IiwgaW50MiBvZmZzZXQiOyBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkRT
aGFkb3c6ICAgICAgb3V0IDw8ICIsIGludDIgb2Zmc2V0IjsgYnJlYWs7Ci0gICAgICAgICAgICAg
IGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXlTaGFkb3c6IG91dCA8PCAiLCBpbnQyIG9mZnNldCI7IGJy
ZWFrOwotICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHRleHR1cmVGdW5jdGlvbi0+bWV0aG9kID09IFRl
eHR1cmVGdW5jdGlvbjo6QklBUyB8fAotICAgICAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLT5tZXRo
b2QgPT0gVGV4dHVyZUZ1bmN0aW9uOjpMT0QwQklBUykKLSAgICAgICAgewotICAgICAgICAgICAg
b3V0IDw8ICIsIGZsb2F0IGJpYXMiOwotICAgICAgICB9Ci0KLSAgICAgICAgb3V0IDw8ICIpXG4i
Ci0gICAgICAgICAgICAgICAie1xuIjsKLQotICAgICAgICAvLyBJbiBzb21lIGNhc2VzIHdlIHVz
ZSBhIHZhcmlhYmxlIHRvIHN0b3JlIHRoZSB0ZXh0dXJlL3NhbXBsZXIgb2JqZWN0cywgYnV0IHRv
IHdvcmsgYXJvdW5kCi0gICAgICAgIC8vIGEgRDNEMTEgY29tcGlsZXIgYnVnIHJlbGF0ZWQgdG8g
ZGlzY2FyZCBpbnNpZGUgYSBsb29wIHRoYXQgaXMgY29uZGl0aW9uYWwgb24gdGV4dHVyZQotICAg
ICAgICAvLyBzYW1wbGluZyB3ZSBuZWVkIHRvIGNhbGwgdGhlIGZ1bmN0aW9uIGRpcmVjdGx5IG9u
IGEgcmVmZXJlbmNlIHRvIHRoZSBhcnJheS4gVGhlIGJ1ZyB3YXMKLSAgICAgICAgLy8gZm91bmQg
dXNpbmcgZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMuZGlzY2FyZCpsb29wX3RleHR1cmUq
IHRlc3RzLgotICAgICAgICBUU3RyaW5nIHRleHR1cmVSZWZlcmVuY2UoIngiKTsKLSAgICAgICAg
VFN0cmluZyBzYW1wbGVyUmVmZXJlbmNlKCJzIik7Ci0gICAgICAgIGlmIChtT3V0cHV0VHlwZSA9
PSBTSF9ITFNMXzRfMV9PVVRQVVQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFRTdHJpbmcgc3Vm
Zml4ID0gVGV4dHVyZUdyb3VwU3VmZml4KHRleHR1cmVGdW5jdGlvbi0+c2FtcGxlcik7Ci0gICAg
ICAgICAgICBpZiAoVGV4dHVyZUdyb3VwKHRleHR1cmVGdW5jdGlvbi0+c2FtcGxlcikgPT0gSExT
TF9URVhUVVJFXzJEKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHRleHR1cmVSZWZl
cmVuY2UgPSBUU3RyaW5nKCJ0ZXh0dXJlcyIpICsgc3VmZml4ICsgIltzYW1wbGVySW5kZXhdIjsK
LSAgICAgICAgICAgICAgICBzYW1wbGVyUmVmZXJlbmNlID0gVFN0cmluZygic2FtcGxlcnMiKSAr
IHN1ZmZpeCArICJbc2FtcGxlckluZGV4XSI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgY29uc3QgdWlu
dCB0ZXh0dXJlSW5kZXggPSBzYW1wbGVySW5kZXggLSB0ZXh0dXJlSW5kZXhPZmZzZXQiIDw8IHN1
ZmZpeAotICAgICAgICAgICAgICAgICAgICA8PCAiO1xuIjsKLSAgICAgICAgICAgICAgICB0ZXh0
dXJlUmVmZXJlbmNlID0gVFN0cmluZygidGV4dHVyZXMiKSArIHN1ZmZpeCArICJbdGV4dHVyZUlu
ZGV4XSI7Ci0gICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgY29uc3QgdWludCBzYW1wbGVyQXJy
YXlJbmRleCA9IHNhbXBsZXJJbmRleCAtIHNhbXBsZXJJbmRleE9mZnNldCIKLSAgICAgICAgICAg
ICAgICAgICAgPDwgc3VmZml4IDw8ICI7XG4iOwotICAgICAgICAgICAgICAgIHNhbXBsZXJSZWZl
cmVuY2UgPSBUU3RyaW5nKCJzYW1wbGVycyIpICsgc3VmZml4ICsgIltzYW1wbGVyQXJyYXlJbmRl
eF0iOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHRleHR1cmVGdW5j
dGlvbi0+bWV0aG9kID09IFRleHR1cmVGdW5jdGlvbjo6U0laRSkKLSAgICAgICAgewotICAgICAg
ICAgICAgb3V0IDw8ICJpbnQgYmFzZUxldmVsID0gc2FtcGxlck1ldGFkYXRhW3NhbXBsZXJJbmRl
eF0uYmFzZUxldmVsO1xuIjsKLSAgICAgICAgICAgIGlmIChJc1NhbXBsZXIyRCh0ZXh0dXJlRnVu
Y3Rpb24tPnNhbXBsZXIpIHx8IElzU2FtcGxlckN1YmUodGV4dHVyZUZ1bmN0aW9uLT5zYW1wbGVy
KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoSXNTYW1wbGVyQXJyYXkodGV4
dHVyZUZ1bmN0aW9uLT5zYW1wbGVyKSB8fAotICAgICAgICAgICAgICAgICAgICAoSXNJbnRlZ2Vy
U2FtcGxlcih0ZXh0dXJlRnVuY3Rpb24tPnNhbXBsZXIpICYmCi0gICAgICAgICAgICAgICAgICAg
ICBJc1NhbXBsZXJDdWJlKHRleHR1cmVGdW5jdGlvbi0+c2FtcGxlcikpKQotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgdWludCB3aWR0aDsgdWludCBo
ZWlnaHQ7IHVpbnQgbGF5ZXJzOyB1aW50IG51bWJlck9mTGV2ZWxzO1xuIgotICAgICAgICAgICAg
ICAgICAgICAgICAgPDwgIiAgICAiIDw8IHRleHR1cmVSZWZlcmVuY2UgPDwgIi5HZXREaW1lbnNp
b25zKGJhc2VMZXZlbCArIGxvZCwgd2lkdGgsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoZWlnaHQsIGxheWVycywgbnVtYmVyT2ZM
ZXZlbHMpO1xuIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgdWludCB3aWR0
aDsgdWludCBoZWlnaHQ7IHVpbnQgbnVtYmVyT2ZMZXZlbHM7XG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgICA8PCAiICAgICIgPDwgdGV4dHVyZVJlZmVyZW5jZQotICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgIi5HZXREaW1lbnNpb25zKGJhc2VMZXZlbCArIGxvZCwgd2lkdGgsIGhlaWdodCwg
bnVtYmVyT2ZMZXZlbHMpO1xuIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBlbHNlIGlmIChJc1NhbXBsZXIzRCh0ZXh0dXJlRnVuY3Rpb24tPnNhbXBsZXIp
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIHVpbnQgd2lkdGg7
IHVpbnQgaGVpZ2h0OyB1aW50IGRlcHRoOyB1aW50IG51bWJlck9mTGV2ZWxzO1xuIgotICAgICAg
ICAgICAgICAgICAgICA8PCAiICAgICIgPDwgdGV4dHVyZVJlZmVyZW5jZQotICAgICAgICAgICAg
ICAgICAgICA8PCAiLkdldERpbWVuc2lvbnMoYmFzZUxldmVsICsgbG9kLCB3aWR0aCwgaGVpZ2h0
LCBkZXB0aCwgbnVtYmVyT2ZMZXZlbHMpO1xuIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGVsc2UgVU5SRUFDSEFCTEUoKTsKLQotICAgICAgICAgICAgc3dpdGNoKHRleHR1cmVGdW5jdGlv
bi0+c2FtcGxlcikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVy
MkQ6ICAgICAgICAgICAgb3V0IDw8ICIgICAgcmV0dXJuIGludDIod2lkdGgsIGhlaWdodCk7Ijsg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyM0Q6ICAgICAgICAg
ICAgb3V0IDw8ICIgICAgcmV0dXJuIGludDMod2lkdGgsIGhlaWdodCwgZGVwdGgpOyI7ICBicmVh
azsKLSAgICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZTogICAgICAgICAgb3V0IDw8ICIg
ICAgcmV0dXJuIGludDIod2lkdGgsIGhlaWdodCk7IjsgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgY2FzZSBFYnRTYW1wbGVyMkRBcnJheTogICAgICAgb3V0IDw8ICIgICAgcmV0dXJuIGlu
dDMod2lkdGgsIGhlaWdodCwgbGF5ZXJzKTsiOyBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBF
YnRJU2FtcGxlcjJEOiAgICAgICAgICAgb3V0IDw8ICIgICAgcmV0dXJuIGludDIod2lkdGgsIGhl
aWdodCk7IjsgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjNE
OiAgICAgICAgICAgb3V0IDw8ICIgICAgcmV0dXJuIGludDMod2lkdGgsIGhlaWdodCwgZGVwdGgp
OyI7ICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRJU2FtcGxlckN1YmU6ICAgICAgICAg
b3V0IDw8ICIgICAgcmV0dXJuIGludDIod2lkdGgsIGhlaWdodCk7IjsgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEQXJyYXk6ICAgICAgb3V0IDw8ICIgICAg
cmV0dXJuIGludDMod2lkdGgsIGhlaWdodCwgbGF5ZXJzKTsiOyBicmVhazsKLSAgICAgICAgICAg
ICAgY2FzZSBFYnRVU2FtcGxlcjJEOiAgICAgICAgICAgb3V0IDw8ICIgICAgcmV0dXJuIGludDIo
d2lkdGgsIGhlaWdodCk7IjsgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRV
U2FtcGxlcjNEOiAgICAgICAgICAgb3V0IDw8ICIgICAgcmV0dXJuIGludDMod2lkdGgsIGhlaWdo
dCwgZGVwdGgpOyI7ICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRVU2FtcGxlckN1YmU6
ICAgICAgICAgb3V0IDw8ICIgICAgcmV0dXJuIGludDIod2lkdGgsIGhlaWdodCk7IjsgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjJEQXJyYXk6ICAgICAgb3V0
IDw8ICIgICAgcmV0dXJuIGludDMod2lkdGgsIGhlaWdodCwgbGF5ZXJzKTsiOyBicmVhazsKLSAg
ICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkRTaGFkb3c6ICAgICAgb3V0IDw8ICIgICAgcmV0
dXJuIGludDIod2lkdGgsIGhlaWdodCk7IjsgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
Y2FzZSBFYnRTYW1wbGVyQ3ViZVNoYWRvdzogICAgb3V0IDw8ICIgICAgcmV0dXJuIGludDIod2lk
dGgsIGhlaWdodCk7IjsgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRTYW1w
bGVyMkRBcnJheVNoYWRvdzogb3V0IDw8ICIgICAgcmV0dXJuIGludDMod2lkdGgsIGhlaWdodCwg
bGF5ZXJzKTsiOyBicmVhazsKLSAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIFRTdHJpbmcgdGV4Q29vcmRYKCJ0LngiKTsKLSAgICAgICAgICAgIFRTdHJpbmcgdGV4
Q29vcmRZKCJ0LnkiKTsKLSAgICAgICAgICAgIFRTdHJpbmcgdGV4Q29vcmRaKCJ0LnoiKTsKLSAg
ICAgICAgICAgIFRTdHJpbmcgcHJvaiA9ICIiOwotCi0gICAgICAgICAgICBpZiAodGV4dHVyZUZ1
bmN0aW9uLT5wcm9qKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN3aXRjaCAodGV4
dHVyZUZ1bmN0aW9uLT5jb29yZHMpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICBjYXNlIDM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcm9qID0gIiAvIHQueiI7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA0
OgotICAgICAgICAgICAgICAgICAgICAgICAgcHJvaiA9ICIgLyB0LnciOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBpZiAocHJvaiAhPSAiIikKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgIHRleENvb3JkWCA9ICIoIiArIHRleENvb3JkWCArIHByb2ogKyAiKSI7Ci0gICAg
ICAgICAgICAgICAgICAgIHRleENvb3JkWSA9ICIoIiArIHRleENvb3JkWSArIHByb2ogKyAiKSI7
Ci0gICAgICAgICAgICAgICAgICAgIHRleENvb3JkWiA9ICIoIiArIHRleENvb3JkWiArIHByb2og
KyAiKSI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBp
ZiAoSXNJbnRlZ2VyU2FtcGxlcih0ZXh0dXJlRnVuY3Rpb24tPnNhbXBsZXIpICYmIElzU2FtcGxl
ckN1YmUodGV4dHVyZUZ1bmN0aW9uLT5zYW1wbGVyKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBvdXQgPDwgIiAgICBmbG9hdCB3aWR0aDsgZmxvYXQgaGVpZ2h0OyBmbG9hdCBsYXll
cnM7IGZsb2F0IGxldmVscztcbiI7Ci0KLSAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICB1aW50
IG1pcCA9IDA7XG4iOwotCi0gICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgIiA8PCB0ZXh0dXJl
UmVmZXJlbmNlCi0gICAgICAgICAgICAgICAgICAgIDw8ICIuR2V0RGltZW5zaW9ucyhtaXAsIHdp
ZHRoLCBoZWlnaHQsIGxheWVycywgbGV2ZWxzKTtcbiI7Ci0KLSAgICAgICAgICAgICAgICBvdXQg
PDwgIiAgICBib29sIHhNYWpvciA9IGFicyh0LngpID4gYWJzKHQueSkgJiYgYWJzKHQueCkgPiBh
YnModC56KTtcbiI7Ci0gICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgYm9vbCB5TWFqb3IgPSBh
YnModC55KSA+IGFicyh0LnopICYmIGFicyh0LnkpID4gYWJzKHQueCk7XG4iOwotICAgICAgICAg
ICAgICAgIG91dCA8PCAiICAgIGJvb2wgek1ham9yID0gYWJzKHQueikgPiBhYnModC54KSAmJiBh
YnModC56KSA+IGFicyh0LnkpO1xuIjsKLSAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICBib29s
IG5lZ2F0aXZlID0gKHhNYWpvciAmJiB0LnggPCAwLjBmKSB8fCAoeU1ham9yICYmIHQueSA8IDAu
MGYpIHx8ICh6TWFqb3IgJiYgdC56IDwgMC4wZik7XG4iOwotCi0gICAgICAgICAgICAgICAgLy8g
RkFDRV9QT1NJVElWRV9YID0gMDAwYgotICAgICAgICAgICAgICAgIC8vIEZBQ0VfTkVHQVRJVkVf
WCA9IDAwMWIKLSAgICAgICAgICAgICAgICAvLyBGQUNFX1BPU0lUSVZFX1kgPSAwMTBiCi0gICAg
ICAgICAgICAgICAgLy8gRkFDRV9ORUdBVElWRV9ZID0gMDExYgotICAgICAgICAgICAgICAgIC8v
IEZBQ0VfUE9TSVRJVkVfWiA9IDEwMGIKLSAgICAgICAgICAgICAgICAvLyBGQUNFX05FR0FUSVZF
X1ogPSAxMDFiCi0gICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgaW50IGZhY2UgPSAoaW50KW5l
Z2F0aXZlICsgKGludCl5TWFqb3IgKiAyICsgKGludCl6TWFqb3IgKiA0O1xuIjsKLQotICAgICAg
ICAgICAgICAgIG91dCA8PCAiICAgIGZsb2F0IHUgPSB4TWFqb3IgPyAtdC56IDogKHlNYWpvciAm
JiB0LnkgPCAwLjBmID8gLXQueCA6IHQueCk7XG4iOwotICAgICAgICAgICAgICAgIG91dCA8PCAi
ICAgIGZsb2F0IHYgPSB5TWFqb3IgPyB0LnogOiAobmVnYXRpdmUgPyB0LnkgOiAtdC55KTtcbiI7
Ci0gICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgZmxvYXQgbSA9IHhNYWpvciA/IHQueCA6ICh5
TWFqb3IgPyB0LnkgOiB0LnopO1xuIjsKLQotICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIHQu
eCA9ICh1ICogMC41ZiAvIG0pICsgMC41ZjtcbiI7Ci0gICAgICAgICAgICAgICAgb3V0IDw8ICIg
ICAgdC55ID0gKHYgKiAwLjVmIC8gbSkgKyAwLjVmO1xuIjsKLQotICAgICAgICAgICAgICAgIC8v
IE1pcCBsZXZlbCBjb21wdXRhdGlvbi4KLSAgICAgICAgICAgICAgICBpZiAodGV4dHVyZUZ1bmN0
aW9uLT5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9uOjpJTVBMSUNJVCB8fAotICAgICAgICAgICAg
ICAgICAgICB0ZXh0dXJlRnVuY3Rpb24tPm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb246OkxPRCB8
fAotICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlRnVuY3Rpb24tPm1ldGhvZCA9PSBUZXh0dXJl
RnVuY3Rpb246OkdSQUQpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBp
ZiAodGV4dHVyZUZ1bmN0aW9uLT5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9uOjpJTVBMSUNJVCkK
LSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIg
ICAgZmxvYXQyIHRTaXplZCA9IGZsb2F0Mih0LnggKiB3aWR0aCwgdC55ICogaGVpZ2h0KTtcbiIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0MiBkeCA9IGRkeCh0U2l6
ZWQpO1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQyIGR5ID0g
ZGR5KHRTaXplZCk7XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9h
dCBsb2QgPSAwLjVmICogbG9nMihtYXgoZG90KGR4LCBkeCksIGRvdChkeSwgZHkpKSk7XG4iOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRleHR1
cmVGdW5jdGlvbi0+bWV0aG9kID09IFRleHR1cmVGdW5jdGlvbjo6R1JBRCkKLSAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRVNTTCAzLjAwLjYgc3BlYyBz
ZWN0aW9uIDguODogIkZvciB0aGUgY3ViZSB2ZXJzaW9uLCB0aGUgcGFydGlhbAotICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gZGVyaXZhdGl2ZXMgb2YgUCBhcmUgYXNzdW1lZCB0byBiZSBpbiB0
aGUgY29vcmRpbmF0ZSBzeXN0ZW0gdXNlZCBiZWZvcmUKLSAgICAgICAgICAgICAgICAgICAgICAg
IC8vIHRleHR1cmUgY29vcmRpbmF0ZXMgYXJlIHByb2plY3RlZCBvbnRvIHRoZSBhcHByb3ByaWF0
ZSBjdWJlIGZhY2UuIgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGR4WzBdIGFuZCBkZHlb
MF0gYXJlIHRoZSBkZXJpdmF0aXZlcyBvZiB0LnggcGFzc2VkIGludG8gdGhlIGZ1bmN0aW9uCi0g
ICAgICAgICAgICAgICAgICAgICAgICAvLyBkZHhbMV0gYW5kIGRkeVsxXSBhcmUgdGhlIGRlcml2
YXRpdmVzIG9mIHQueSBwYXNzZWQgaW50byB0aGUgZnVuY3Rpb24KLSAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGRkeFsyXSBhbmQgZGR5WzJdIGFyZSB0aGUgZGVyaXZhdGl2ZXMgb2YgdC56IHBh
c3NlZCBpbnRvIHRoZSBmdW5jdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGV0ZXJt
aW5lIHRoZSBkZXJpdmF0aXZlcyBvZiB1LCB2IGFuZCBtCi0gICAgICAgICAgICAgICAgICAgICAg
ICBvdXQgPDwgIiAgICBmbG9hdCBkdWR4ID0geE1ham9yID8gZGR4WzJdIDogKHlNYWpvciAmJiB0
LnkgPCAwLjBmID8gLWRkeFswXSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjog
ZGR4WzBdKTtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0IGR1
ZHkgPSB4TWFqb3IgPyBkZHlbMl0gOiAoeU1ham9yICYmIHQueSA8IDAuMGYgPyAtZGR5WzBdICIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOiBkZHlbMF0pO1xuIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQgZHZkeCA9IHlNYWpvciA/IGRkeFsyXSA6
IChuZWdhdGl2ZSA/IGRkeFsxXSA6IC1kZHhbMV0pO1xuIgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIgICAgZmxvYXQgZHZkeSA9IHlNYWpvciA/IGRkeVsyXSA6IChuZWdhdGl2ZSA/
IGRkeVsxXSA6IC1kZHlbMV0pO1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIg
ICAgZmxvYXQgZG1keCA9IHhNYWpvciA/IGRkeFswXSA6ICh5TWFqb3IgPyBkZHhbMV0gOiBkZHhb
Ml0pO1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQgZG1keSA9
IHhNYWpvciA/IGRkeVswXSA6ICh5TWFqb3IgPyBkZHlbMV0gOiBkZHlbMl0pO1xuIjsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIE5vdyBkZXRlcm1pbmUgdGhlIGRlcml2YXRpdmVzIG9mIHRo
ZSBmYWNlIGNvb3JkaW5hdGVzLCB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGRlcml2YXRpdmVzIGNhbGN1bGF0ZWQgYWJvdmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAv
LyBkIC8gZHggKHUoeCkgKiAwLjUgLyBtKHgpICsgMC41KQotICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gPSAwLjUgKiAobSh4KSAqIHUnKHgpIC0gdSh4KSAqIG0nKHgpKSAvIG0oeCleMgotICAg
ICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgZmxvYXQgZGZhY2V4ZHggPSAwLjVmICog
KG0gKiBkdWR4IC0gdSAqIGRtZHgpIC8gKG0gKiBtKTtcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiICAgIGZsb2F0IGRmYWNleWR4ID0gMC41ZiAqIChtICogZHZkeCAtIHYgKiBk
bWR4KSAvIChtICogbSk7XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBm
bG9hdCBkZmFjZXhkeSA9IDAuNWYgKiAobSAqIGR1ZHkgLSB1ICogZG1keSkgLyAobSAqIG0pO1xu
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQgZGZhY2V5ZHkgPSAw
LjVmICogKG0gKiBkdmR5IC0gdiAqIGRtZHkpIC8gKG0gKiBtKTtcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiICAgIGZsb2F0MiBzaXplVmVjID0gZmxvYXQyKHdpZHRoLCBoZWln
aHQpO1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQyIGZhY2Vk
ZHggPSBmbG9hdDIoZGZhY2V4ZHgsIGRmYWNleWR4KSAqIHNpemVWZWM7XG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdDIgZmFjZWRkeSA9IGZsb2F0MihkZmFjZXhk
eSwgZGZhY2V5ZHkpICogc2l6ZVZlYztcbiI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBP
cHRpbWl6YXRpb246IGluc3RlYWQgb2Y6IGxvZzIobWF4KGxlbmd0aChmYWNlZGR4KSwgbGVuZ3Ro
KGZhY2VkZHkpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIGNvbXB1dGU6IGxvZzIo
bWF4KGxlbmd0aChmYWNlZGR4KV4yLCBsZW5ndGgoZmFjZWRkeSleMikpIC8gMgotICAgICAgICAg
ICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgZmxvYXQgbGVuZ3RoZmFjZWRkeDIgPSBkb3QoZmFj
ZWRkeCwgZmFjZWRkeCk7XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBm
bG9hdCBsZW5ndGhmYWNlZGR5MiA9IGRvdChmYWNlZGR5LCBmYWNlZGR5KTtcbiIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0IGxvZCA9IGxvZzIobWF4KGxlbmd0aGZh
Y2VkZHgyLCBsZW5ndGhmYWNlZGR5MikpICogIgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIwLjVmO1xuIjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICBvdXQgPDwgIiAgICBtaXAgPSB1aW50KG1pbihtYXgocm91bmQobG9kKSwgMCksIGxldmVscyAt
IDEpKTtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgICAgIiA8PCB0ZXh0dXJlUmVm
ZXJlbmNlCi0gICAgICAgICAgICAgICAgICAgICAgICA8PCAiLkdldERpbWVuc2lvbnMobWlwLCB3
aWR0aCwgaGVpZ2h0LCBsYXllcnMsIGxldmVscyk7XG4iOwotICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgZnJvbSBub3JtYWxpemVkIGZsb2F0aW5nLXBvaW50
IHRvIGludGVnZXIKLSAgICAgICAgICAgICAgICB0ZXhDb29yZFggPSAiaW50KGZsb29yKHdpZHRo
ICogZnJhYygiICsgdGV4Q29vcmRYICsgIikpKSI7Ci0gICAgICAgICAgICAgICAgdGV4Q29vcmRZ
ID0gImludChmbG9vcihoZWlnaHQgKiBmcmFjKCIgKyB0ZXhDb29yZFkgKyAiKSkpIjsKLSAgICAg
ICAgICAgICAgICB0ZXhDb29yZFogPSAiZmFjZSI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBlbHNlIGlmIChJc0ludGVnZXJTYW1wbGVyKHRleHR1cmVGdW5jdGlvbi0+c2FtcGxlcikgJiYK
LSAgICAgICAgICAgICAgICAgICAgIHRleHR1cmVGdW5jdGlvbi0+bWV0aG9kICE9IFRleHR1cmVG
dW5jdGlvbjo6RkVUQ0gpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKElzU2Ft
cGxlcjJEKHRleHR1cmVGdW5jdGlvbi0+c2FtcGxlcikpCi0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICBpZiAoSXNTYW1wbGVyQXJyYXkodGV4dHVyZUZ1bmN0aW9uLT5zYW1w
bGVyKSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgb3V0
IDw8ICIgICAgZmxvYXQgd2lkdGg7IGZsb2F0IGhlaWdodDsgZmxvYXQgbGF5ZXJzOyBmbG9hdCBs
ZXZlbHM7XG4iOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGV4dHVyZUZ1bmN0aW9u
LT5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9uOjpMT0QwKQotICAgICAgICAgICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIHVpbnQgbWlwID0g
MDtcbiI7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlIGlmICh0ZXh0dXJlRnVuY3Rpb24tPm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb246OkxP
RDBCSUFTKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG91dCA8PCAiICAgIHVpbnQgbWlwID0gYmlhcztcbiI7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgICAgICB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICAiIDw8
IHRleHR1cmVSZWZlcmVuY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIi5H
ZXREaW1lbnNpb25zKDAsIHdpZHRoLCBoZWlnaHQsIGxheWVycywgbGV2ZWxzKTtcbiI7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRleHR1cmVGdW5jdGlvbi0+bWV0aG9kID09IFRl
eHR1cmVGdW5jdGlvbjo6SU1QTElDSVQgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGV4dHVyZUZ1bmN0aW9uLT5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9uOjpCSUFTKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0IDw8ICIgICAgZmxvYXQyIHRTaXplZCA9IGZsb2F0Mih0LnggKiB3aWR0aCwgdC55ICog
aGVpZ2h0KTtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAg
ZmxvYXQgZHggPSBsZW5ndGgoZGR4KHRTaXplZCkpO1xuIgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdCBkeSA9IGxlbmd0aChkZHkodFNpemVkKSk7XG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0IGxvZCA9
IGxvZzIobWF4KGR4LCBkeSkpO1xuIjsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAodGV4dHVyZUZ1bmN0aW9uLT5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9uOjpCSUFTKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvdXQgPDwgIiAgICBsb2QgKz0gYmlhcztcbiI7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGV4dHVyZUZ1bmN0aW9uLT5tZXRob2Qg
PT0gVGV4dHVyZUZ1bmN0aW9uOjpHUkFEKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgZmxvYXQyIHNpemVW
ZWMgPSBmbG9hdDIod2lkdGgsIGhlaWdodCk7XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiICAgIGZsb2F0MiBzaXplRGR4ID0gZGR4ICogc2l6ZVZlYztcbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQyIHNpemVEZHkg
PSBkZHkgKiBzaXplVmVjO1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIiAgICBmbG9hdCBsb2QgPSBsb2cyKG1heChkb3Qoc2l6ZURkeCwgc2l6ZURkeCksICIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkb3Qoc2l6ZURkeSwgc2l6ZURk
eSkpKSAqIDAuNWY7XG4iOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIHVpbnQgbWlwID0gdWludChtaW4obWF4
KHJvdW5kKGxvZCksIDApLCBsZXZlbHMgLSAxKSk7XG4iOwotICAgICAgICAgICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICAiIDw8IHRleHR1cmVS
ZWZlcmVuY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiLkdldERpbWVuc2lvbnMo
bWlwLCB3aWR0aCwgaGVpZ2h0LCBsYXllcnMsIGxldmVscyk7XG4iOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgZmxvYXQgd2lkdGg7IGZsb2F0IGhl
aWdodDsgZmxvYXQgbGV2ZWxzO1xuIjsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRl
eHR1cmVGdW5jdGlvbi0+bWV0aG9kID09IFRleHR1cmVGdW5jdGlvbjo6TE9EMCkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiAg
ICB1aW50IG1pcCA9IDA7XG4iOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAodGV4dHVyZUZ1bmN0aW9uLT5tZXRob2QgPT0gVGV4dHVy
ZUZ1bmN0aW9uOjpMT0QwQklBUykKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICB1aW50IG1pcCA9IGJpYXM7XG4iOwotICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8
PCAiICAgICIgPDwgdGV4dHVyZVJlZmVyZW5jZQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8PCAiLkdldERpbWVuc2lvbnMoMCwgd2lkdGgsIGhlaWdodCwgbGV2ZWxzKTtcbiI7Ci0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGV4dHVyZUZ1bmN0aW9uLT5tZXRob2Qg
PT0gVGV4dHVyZUZ1bmN0aW9uOjpJTVBMSUNJVCB8fAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXh0dXJlRnVuY3Rpb24tPm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb246OkJJQVMp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvdXQgPDwgIiAgICBmbG9hdDIgdFNpemVkID0gZmxvYXQyKHQueCAqIHdpZHRoLCB0
LnkgKiBoZWlnaHQpO1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IiAgICBmbG9hdCBkeCA9IGxlbmd0aChkZHgodFNpemVkKSk7XG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0IGR5ID0gbGVuZ3RoKGRkeSh0U2l6ZWQp
KTtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQg
bG9kID0gbG9nMihtYXgoZHgsIGR5KSk7XG4iOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICh0ZXh0dXJlRnVuY3Rpb24tPm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb246OkJJ
QVMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIGxvZCArPSBiaWFzO1xuIjsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0ZXh0dXJlRnVuY3Rpb24tPm1l
dGhvZCA9PSBUZXh0dXJlRnVuY3Rpb246OkdSQUQpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICBmbG9hdDIg
c2l6ZVZlYyA9IGZsb2F0Mih3aWR0aCwgaGVpZ2h0KTtcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQyIHNpemVEZHggPSBkZHggKiBzaXplVmVjO1xu
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdDIgc2l6
ZURkeSA9IGRkeSAqIHNpemVWZWM7XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiICAgIGZsb2F0IGxvZCA9IGxvZzIobWF4KGRvdChzaXplRGR4LCBzaXplRGR4KSwg
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvdChzaXplRGR5LCBz
aXplRGR5KSkpICogMC41ZjtcbiI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgdWludCBtaXAgPSB1aW50KG1p
bihtYXgocm91bmQobG9kKSwgMCksIGxldmVscyAtIDEpKTtcbiI7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiICAgICIgPDwgdGV4
dHVyZVJlZmVyZW5jZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIuR2V0RGltZW5z
aW9ucyhtaXAsIHdpZHRoLCBoZWlnaHQsIGxldmVscyk7XG4iOwotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKElzU2FtcGxl
cjNEKHRleHR1cmVGdW5jdGlvbi0+c2FtcGxlcikpCi0gICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICBvdXQgPDwgIiAgICBmbG9hdCB3aWR0aDsgZmxvYXQgaGVpZ2h0OyBmbG9h
dCBkZXB0aDsgZmxvYXQgbGV2ZWxzO1xuIjsKLQotICAgICAgICAgICAgICAgICAgICBpZiAodGV4
dHVyZUZ1bmN0aW9uLT5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9uOjpMT0QwKQotICAgICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICB1aW50IG1p
cCA9IDA7XG4iOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVs
c2UgaWYgKHRleHR1cmVGdW5jdGlvbi0+bWV0aG9kID09IFRleHR1cmVGdW5jdGlvbjo6TE9EMEJJ
QVMpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8
PCAiICAgIHVpbnQgbWlwID0gYmlhcztcbiI7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBvdXQgPDwgIiAgICAiIDw8IHRleHR1cmVSZWZlcmVuY2UKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8PCAiLkdldERpbWVuc2lvbnMoMCwgd2lkdGgsIGhlaWdodCwgZGVw
dGgsIGxldmVscyk7XG4iOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGV4dHVyZUZ1
bmN0aW9uLT5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9uOjpJTVBMSUNJVCB8fAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRleHR1cmVGdW5jdGlvbi0+bWV0aG9kID09IFRleHR1cmVGdW5j
dGlvbjo6QklBUykKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvdXQgPDwgIiAgICBmbG9hdDMgdFNpemVkID0gZmxvYXQzKHQueCAqIHdpZHRo
LCB0LnkgKiBoZWlnaHQsIHQueiAqICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImRlcHRoKTtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBm
bG9hdCBkeCA9IGxlbmd0aChkZHgodFNpemVkKSk7XG4iCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIgICAgZmxvYXQgZHkgPSBsZW5ndGgoZGR5KHRTaXplZCkpO1xuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0IGxvZCA9IGxvZzIobWF4
KGR4LCBkeSkpO1xuIjsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXh0dXJl
RnVuY3Rpb24tPm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb246OkJJQVMpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwg
IiAgICBsb2QgKz0gYmlhcztcbiI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
dGV4dHVyZUZ1bmN0aW9uLT5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9uOjpHUkFEKQotICAgICAg
ICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAi
ICAgIGZsb2F0MyBzaXplVmVjID0gZmxvYXQzKHdpZHRoLCBoZWlnaHQsIGRlcHRoKTtcbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdDMgc2l6ZURkeCA9IGRk
eCAqIHNpemVWZWM7XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAg
ZmxvYXQzIHNpemVEZHkgPSBkZHkgKiBzaXplVmVjO1xuIgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiICAgIGZsb2F0IGxvZCA9IGxvZzIobWF4KGRvdChzaXplRGR4LCBzaXpl
RGR4KSwgZG90KHNpemVEZHksICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InNpemVEZHkpKSkgKiAwLjVmO1xuIjsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgdWludCBtaXAgPSB1aW50KG1pbihtYXgo
cm91bmQobG9kKSwgMCksIGxldmVscyAtIDEpKTtcbiI7Ci0gICAgICAgICAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICAiIDw8IHRleHR1cmVSZWZlcmVuY2UK
LSAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIuR2V0RGltZW5zaW9ucyhtaXAsIHdpZHRoLCBo
ZWlnaHQsIGRlcHRoLCBsZXZlbHMpO1xuIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwotCi0gICAgICAgICAgICAgICAgLy8gQ29udmVydCBm
cm9tIG5vcm1hbGl6ZWQgZmxvYXRpbmctcG9pbnQgdG8gaW50ZWdlcgotICAgICAgICAgICAgICAg
IG91dCA8PCAiaW50IHdyYXBTID0gc2FtcGxlck1ldGFkYXRhW3NhbXBsZXJJbmRleF0ud3JhcE1v
ZGVzICYgMHgzO1xuIjsKLSAgICAgICAgICAgICAgICBpZiAodGV4dHVyZUZ1bmN0aW9uLT5vZmZz
ZXQpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBPdXRwdXRJbnRUZXhD
b29yZFdyYXAob3V0LCAid3JhcFMiLCAid2lkdGgiLCB0ZXhDb29yZFgsICJvZmZzZXQueCIsICJ0
aXgiKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgT3V0cHV0SW50VGV4Q29vcmRXcmFwKG91dCwg
IndyYXBTIiwgIndpZHRoIiwgdGV4Q29vcmRYLCAiMCIsICJ0aXgiKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgdGV4Q29vcmRYID0gInRpeCI7Ci0gICAgICAgICAgICAgICAg
b3V0IDw8ICJpbnQgd3JhcFQgPSAoc2FtcGxlck1ldGFkYXRhW3NhbXBsZXJJbmRleF0ud3JhcE1v
ZGVzID4+IDIpICYgMHgzO1xuIjsKLSAgICAgICAgICAgICAgICBpZiAodGV4dHVyZUZ1bmN0aW9u
LT5vZmZzZXQpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBPdXRwdXRJ
bnRUZXhDb29yZFdyYXAob3V0LCAid3JhcFQiLCAiaGVpZ2h0IiwgdGV4Q29vcmRZLCAib2Zmc2V0
LnkiLCAidGl5Iik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIE91dHB1dEludFRleENvb3JkV3Jh
cChvdXQsICJ3cmFwVCIsICJoZWlnaHQiLCB0ZXhDb29yZFksICIwIiwgInRpeSIpOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB0ZXhDb29yZFkgPSAidGl5IjsKLQotICAgICAg
ICAgICAgICAgIGlmIChJc1NhbXBsZXJBcnJheSh0ZXh0dXJlRnVuY3Rpb24tPnNhbXBsZXIpKQot
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdGV4Q29vcmRaID0gImludCht
YXgoMCwgbWluKGxheWVycyAtIDEsIGZsb29yKDAuNSArIHQueikpKSkiOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmICghSXNTYW1wbGVyQ3ViZSh0ZXh0dXJlRnVu
Y3Rpb24tPnNhbXBsZXIpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgIUlzU2FtcGxlcjJE
KHRleHR1cmVGdW5jdGlvbi0+c2FtcGxlcikpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICBvdXQgPDwgImludCB3cmFwUiA9IChzYW1wbGVyTWV0YWRhdGFbc2FtcGxlcklu
ZGV4XS53cmFwTW9kZXMgPj4gNCkgJiAweDM7XG4iOwotICAgICAgICAgICAgICAgICAgICBpZiAo
dGV4dHVyZUZ1bmN0aW9uLT5vZmZzZXQpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIE91dHB1dEludFRleENvb3JkV3JhcChvdXQsICJ3cmFwUiIsICJkZXB0
aCIsIHRleENvb3JkWiwgIm9mZnNldC56IiwgInRpeiIpOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAgICAgT3V0cHV0SW50VGV4Q29vcmRXcmFwKG91dCwgIndyYXBSIiwgImRl
cHRoIiwgdGV4Q29vcmRaLCAiMCIsICJ0aXoiKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICB0ZXhDb29yZFogPSAidGl6IjsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG91dCA8PCAiICAgIHJldHVybiAiOwotCi0gICAg
ICAgICAgICAvLyBITFNMIGludHJpbnNpYwotICAgICAgICAgICAgaWYgKG1PdXRwdXRUeXBlID09
IFNIX0hMU0xfM18wX09VVFBVVCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzd2l0
Y2godGV4dHVyZUZ1bmN0aW9uLT5zYW1wbGVyKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEOiAgIG91dCA8PCAidGV4MkQiOyAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZTogb3V0IDw8ICJ0ZXhDVUJFIjsg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgICAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHN3aXRjaCh0ZXh0dXJlRnVuY3Rpb24tPm1l
dGhvZCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgVGV4dHVy
ZUZ1bmN0aW9uOjpJTVBMSUNJVDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiKCIg
PDwgc2FtcGxlclJlZmVyZW5jZSA8PCAiLCAiOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uOjpCSUFTOgotICAg
ICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICJiaWFzKCIgPDwgc2FtcGxlclJlZmVyZW5jZSA8
PCAiLCAiOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uOjpMT0Q6Ci0gICAgICAgICAgICAgICAgICAgICAgICBv
dXQgPDwgImxvZCgiIDw8IHNhbXBsZXJSZWZlcmVuY2UgPDwgIiwgIjsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlv
bjo6TE9EMDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAibG9kKCIgPDwgc2FtcGxl
clJlZmVyZW5jZSA8PCAiLCAiOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uOjpMT0QwQklBUzoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG91dCA8PCAibG9kKCIgPDwgc2FtcGxlclJlZmVyZW5jZSA8PCAiLCAi
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICBkZWZh
dWx0OiBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGVsc2UgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0xfNF8xX09VVFBVVCB8fCBt
T3V0cHV0VHlwZSA9PSBTSF9ITFNMXzRfMF9GTDlfM19PVVRQVVQpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgaWYgKHRleHR1cmVGdW5jdGlvbi0+bWV0aG9kID09IFRleHR1cmVGdW5j
dGlvbjo6R1JBRCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChJ
c0ludGVnZXJTYW1wbGVyKHRleHR1cmVGdW5jdGlvbi0+c2FtcGxlcikpCi0gICAgICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiIiA8PCB0ZXh0dXJlUmVm
ZXJlbmNlIDw8ICIuTG9hZCgiOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKElzU2hhZG93U2FtcGxlcih0ZXh0dXJlRnVuY3Rpb24tPnNhbXBsZXIp
KQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwg
IiIgPDwgdGV4dHVyZVJlZmVyZW5jZSA8PCAiLlNhbXBsZUNtcExldmVsWmVybygiIDw8IHNhbXBs
ZXJSZWZlcmVuY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiLCAiOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIiIDw8IHRleHR1cmVSZWZl
cmVuY2UgPDwgIi5TYW1wbGVHcmFkKCIgPDwgc2FtcGxlclJlZmVyZW5jZSA8PCAiLCAiOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVs
c2UgaWYgKElzSW50ZWdlclNhbXBsZXIodGV4dHVyZUZ1bmN0aW9uLT5zYW1wbGVyKSB8fAotICAg
ICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmVGdW5jdGlvbi0+bWV0aG9kID09IFRleHR1cmVG
dW5jdGlvbjo6RkVUQ0gpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBv
dXQgPDwgIiIgPDwgdGV4dHVyZVJlZmVyZW5jZSA8PCAiLkxvYWQoIjsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoSXNTaGFkb3dTYW1wbGVyKHRleHR1cmVGdW5j
dGlvbi0+c2FtcGxlcikpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBz
d2l0Y2godGV4dHVyZUZ1bmN0aW9uLT5tZXRob2QpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uOjpJTVBMSUNJVDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiIgPDwgdGV4dHVyZVJlZmVyZW5jZSA8
PCAiLlNhbXBsZUNtcCgiIDw8IHNhbXBsZXJSZWZlcmVuY2UKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPDwgIiwgIjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uOjpCSUFTOgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiIiA8PCB0ZXh0dXJlUmVmZXJlbmNlIDw8
ICIuU2FtcGxlQ21wKCIgPDwgc2FtcGxlclJlZmVyZW5jZQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCAiLCAiOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb246OkxPRDoKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiIgPDwgdGV4dHVyZVJlZmVyZW5jZSA8PCAi
LlNhbXBsZUNtcCgiIDw8IHNhbXBsZXJSZWZlcmVuY2UKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPDwgIiwgIjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uOjpMT0QwOgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiIiA8PCB0ZXh0dXJlUmVmZXJlbmNlIDw8ICIu
U2FtcGxlQ21wTGV2ZWxaZXJvKCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg
c2FtcGxlclJlZmVyZW5jZSA8PCAiLCAiOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb246OkxPRDBC
SUFTOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiIiA8PCB0ZXh0dXJlUmVm
ZXJlbmNlIDw8ICIuU2FtcGxlQ21wTGV2ZWxaZXJvKCIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPDwgc2FtcGxlclJlZmVyZW5jZSA8PCAiLCAiOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hB
QkxFKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3dp
dGNoKHRleHR1cmVGdW5jdGlvbi0+bWV0aG9kKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbjo6SU1QTElDSVQ6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIiIDw8IHRleHR1cmVSZWZlcmVuY2UgPDwg
Ii5TYW1wbGUoIiA8PCBzYW1wbGVyUmVmZXJlbmNlIDw8ICIsICI7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFRleHR1cmVG
dW5jdGlvbjo6QklBUzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiIgPDwg
dGV4dHVyZVJlZmVyZW5jZSA8PCAiLlNhbXBsZUJpYXMoIiA8PCBzYW1wbGVyUmVmZXJlbmNlCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIsICI7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFRleHR1cmVG
dW5jdGlvbjo6TE9EOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiIiA8PCB0
ZXh0dXJlUmVmZXJlbmNlIDw8ICIuU2FtcGxlTGV2ZWwoIiA8PCBzYW1wbGVyUmVmZXJlbmNlCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIsICI7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFRleHR1cmVG
dW5jdGlvbjo6TE9EMDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiIgPDwg
dGV4dHVyZVJlZmVyZW5jZSA8PCAiLlNhbXBsZUxldmVsKCIgPDwgc2FtcGxlclJlZmVyZW5jZQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiLCAiOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBUZXh0dXJl
RnVuY3Rpb246OkxPRDBCSUFTOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAi
IiA8PCB0ZXh0dXJlUmVmZXJlbmNlIDw8ICIuU2FtcGxlTGV2ZWwoIiA8PCBzYW1wbGVyUmVmZXJl
bmNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIsICI7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDog
VU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKLQotICAgICAg
ICAgICAgaWYgKElzSW50ZWdlclNhbXBsZXIodGV4dHVyZUZ1bmN0aW9uLT5zYW1wbGVyKSB8fAot
ICAgICAgICAgICAgICAgIHRleHR1cmVGdW5jdGlvbi0+bWV0aG9kID09IFRleHR1cmVGdW5jdGlv
bjo6RkVUQ0gpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3dpdGNoKGhsc2xDb29y
ZHMpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgY2FzZSAyOiBvdXQgPDwg
ImludDMoIjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICBjYXNlIDM6IG91dCA8PCAiaW50NCgi
OyBicmVhazsKLSAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIHN3aXRjaChobHNsQ29vcmRzKQotICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgIGNhc2UgMjogb3V0IDw8ICJmbG9hdDIoIjsgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICBjYXNlIDM6IG91dCA8PCAiZmxvYXQzKCI7IGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgY2FzZSA0OiBvdXQgPDwgImZsb2F0NCgiOyBicmVhazsKLSAgICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBvdXQgPDwgdGV4Q29vcmRYIDw8ICIsICIgPDwgdGV4Q29v
cmRZOwotCi0gICAgICAgICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTF8zXzBfT1VUUFVU
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChobHNsQ29vcmRzID49IDMpCi0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAodGV4dHVyZUZ1bmN0aW9u
LT5jb29yZHMgPCAzKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBvdXQgPDwgIiwgMCI7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBvdXQgPDwgIiwgdC56IiA8PCBwcm9qOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKGhsc2xDb29yZHMgPT0gNCkKLSAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCh0ZXh0dXJlRnVuY3Rpb24t
Pm1ldGhvZCkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgVGV4dHVyZUZ1bmN0aW9uOjpCSUFTOiAgICAgb3V0IDw8ICIsIGJpYXMiOyBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbjo6TE9EOiAgICAgIG91dCA8
PCAiLCBsb2QiOyAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgY2FzZSBUZXh0dXJlRnVu
Y3Rpb246OkxPRDA6ICAgICBvdXQgPDwgIiwgMCI7ICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uOjpMT0QwQklBUzogb3V0IDw8ICIsIGJpYXMiOyBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg
b3V0IDw8ICIpKTtcbiI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChtT3V0
cHV0VHlwZSA9PSBTSF9ITFNMXzRfMV9PVVRQVVQgfHwgbU91dHB1dFR5cGUgPT0gU0hfSExTTF80
XzBfRkw5XzNfT1VUUFVUKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChobHNs
Q29vcmRzID49IDMpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoIUlzSW50ZWdlclNhbXBsZXIodGV4dHVyZUZ1bmN0aW9uLT5zYW1wbGVyKSB8fAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIUlzU2FtcGxlckN1YmUodGV4dHVyZUZ1bmN0aW9uLT5zYW1w
bGVyKSB8fCB0ZXhDb29yZFogPT0gImZhY2UiKTsKLSAgICAgICAgICAgICAgICAgICAgb3V0IDw8
ICIsICIgPDwgdGV4Q29vcmRaOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
IGlmICh0ZXh0dXJlRnVuY3Rpb24tPm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb246OkdSQUQpCi0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAoSXNJbnRlZ2VyU2FtcGxl
cih0ZXh0dXJlRnVuY3Rpb24tPnNhbXBsZXIpKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiwgbWlwKSI7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoSXNTaGFkb3dTYW1wbGVyKHRleHR1cmVG
dW5jdGlvbi0+c2FtcGxlcikpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIENvbXBhcmUgdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0
ZXh0dXJlRnVuY3Rpb24tPnByb2opCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIEVTU0wgMy4wMC40IHNlYyA4Ljgg
cDk1IG9uIHRleHR1cmVQcm9qOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBy
ZXN1bHRpbmcgdGhpcmQgY29tcG9uZW50IG9mIFAnIGluIHRoZSBzaGFkb3cgZm9ybXMgaXMgdXNl
ZCBhcyBEcmVmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIpLCB0LnoiIDw8
IHByb2o7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3dpdGNoKHRleHR1cmVGdW5jdGlvbi0+Y29vcmRzKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzogb3V0IDw8
ICIpLCB0LnoiOyBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDog
b3V0IDw8ICIpLCB0LnciOyBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICAgICAgb3V0IDw8ICIpLCBkZHgsIGRkeSI7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoSXNJbnRlZ2VyU2FtcGxlcih0
ZXh0dXJlRnVuY3Rpb24tPnNhbXBsZXIpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgdGV4
dHVyZUZ1bmN0aW9uLT5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9uOjpGRVRDSCkKLSAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIG91dCA8PCAiLCBtaXApIjsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoSXNTaGFkb3dTYW1wbGVyKHRleHR1
cmVGdW5jdGlvbi0+c2FtcGxlcikpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICAvLyBDb21wYXJlIHZhbHVlCi0gICAgICAgICAgICAgICAgICAgIGlmICh0ZXh0dXJlRnVu
Y3Rpb24tPnByb2opCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIEFjY29yZGluZyB0byBFU1NMIDMuMDAuNCBzZWMgOC44IHA5NSBvbiB0ZXh0dXJlUHJv
ajoKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSByZXN1bHRpbmcgdGhpcmQgY29tcG9u
ZW50IG9mIFAnIGluIHRoZSBzaGFkb3cgZm9ybXMgaXMgdXNlZCBhcyBEcmVmCi0gICAgICAgICAg
ICAgICAgICAgICAgICBvdXQgPDwgIiksIHQueiIgPDwgcHJvajsKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCh0ZXh0dXJlRnVuY3Rpb24tPmNvb3JkcykKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAz
OiBvdXQgPDwgIiksIHQueiI7IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNl
IDQ6IG91dCA8PCAiKSwgdC53IjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHRleHR1cmVGdW5j
dGlvbi0+bWV0aG9kKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBUZXh0dXJlRnVuY3Rpb246OklNUExJQ0lUOiBvdXQgPDwgIikiOyAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbjo6QklBUzogICAg
IG91dCA8PCAiKSwgYmlhcyI7IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVGV4
dHVyZUZ1bmN0aW9uOjpMT0Q6ICAgICAgb3V0IDw8ICIpLCBsb2QiOyAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb246OkxPRDA6ICAgICBvdXQgPDwgIiks
IDAiOyAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlv
bjo6TE9EMEJJQVM6IG91dCA8PCAiKSwgYmlhcyI7IGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAodGV4dHVyZUZ1bmN0aW9uLT5vZmZz
ZXQgJiYgKCFJc0ludGVnZXJTYW1wbGVyKHRleHR1cmVGdW5jdGlvbi0+c2FtcGxlcikgfHwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmVGdW5j
dGlvbi0+bWV0aG9kID09IFRleHR1cmVGdW5jdGlvbjo6RkVUQ0gpKQotICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIsIG9mZnNldCI7Ci0gICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgb3V0IDw8ICIpOyI7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBvdXQgPDwg
IlxuIgotICAgICAgICAgICAgICAgIn1cbiIKLSAgICAgICAgICAgICAgICJcbiI7Ci0gICAgfQot
CiAgICAgaWYgKG1Vc2VzRnJhZ0Nvb3JkKQogICAgIHsKICAgICAgICAgb3V0IDw8ICIjZGVmaW5l
IEdMX1VTRVNfRlJBR19DT09SRFxuIjsKQEAgLTE3MjYsNiArODQzLDE3IEBACiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCitib29sIE91dHB1dEhMU0w6OnZpc2l0U3dpenpsZShWaXNpdCB2aXNpdCwg
VEludGVybVN3aXp6bGUgKm5vZGUpCit7CisgICAgVEluZm9TaW5rQmFzZSAmb3V0ID0gZ2V0SW5m
b1NpbmsoKTsKKyAgICBpZiAodmlzaXQgPT0gUG9zdFZpc2l0KQorICAgIHsKKyAgICAgICAgb3V0
IDw8ICIuIjsKKyAgICAgICAgbm9kZS0+d3JpdGVPZmZzZXRzQXNYWVpXKCZvdXQpOworICAgIH0K
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBPdXRwdXRITFNMOjp2aXNpdEJpbmFyeShWaXNp
dCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkKIHsKICAgICBUSW5mb1NpbmtCYXNlICZvdXQg
PSBnZXRJbmZvU2luaygpOwpAQCAtMTczOSwxMzYgKzg2NywxNDAgQEAKIAogICAgIHN3aXRjaCAo
bm9kZS0+Z2V0T3AoKSkKICAgICB7Ci0gICAgICBjYXNlIEVPcEFzc2lnbjoKLSAgICAgICAgaWYg
KG5vZGUtPmdldExlZnQoKS0+aXNBcnJheSgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBUSW50
ZXJtQWdncmVnYXRlICpyaWdodEFnZyA9IG5vZGUtPmdldFJpZ2h0KCktPmdldEFzQWdncmVnYXRl
KCk7Ci0gICAgICAgICAgICBpZiAocmlnaHRBZ2cgIT0gbnVsbHB0ciAmJiByaWdodEFnZy0+aXND
b25zdHJ1Y3RvcigpKQorICAgICAgICBjYXNlIEVPcENvbW1hOgorICAgICAgICAgICAgb3V0cHV0
VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIsICIsICIpIik7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBFT3BBc3NpZ246CisgICAgICAgICAgICBpZiAobm9kZS0+Z2V0TGVmdCgp
LT5pc0FycmF5KCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29uc3QgVFN0cmlu
ZyAmZnVuY3Rpb25OYW1lID0gYWRkQXJyYXlDb25zdHJ1Y3RJbnRvRnVuY3Rpb24obm9kZS0+Z2V0
VHlwZSgpKTsKLSAgICAgICAgICAgICAgICBvdXQgPDwgZnVuY3Rpb25OYW1lIDw8ICIoIjsKLSAg
ICAgICAgICAgICAgICBub2RlLT5nZXRMZWZ0KCktPnRyYXZlcnNlKHRoaXMpOwotICAgICAgICAg
ICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAqc2VxID0gcmlnaHRBZ2ctPmdldFNlcXVlbmNlKCk7Ci0g
ICAgICAgICAgICAgICAgZm9yIChhdXRvICZhcnJheUVsZW1lbnQgOiAqc2VxKQorICAgICAgICAg
ICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnJpZ2h0QWdnID0gbm9kZS0+Z2V0UmlnaHQoKS0+Z2V0
QXNBZ2dyZWdhdGUoKTsKKyAgICAgICAgICAgICAgICBpZiAocmlnaHRBZ2cgIT0gbnVsbHB0ciAm
JiByaWdodEFnZy0+aXNDb25zdHJ1Y3RvcigpKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgb3V0IDw8ICIsICI7Ci0gICAgICAgICAgICAgICAgICAgIGFycmF5RWxlbWVu
dC0+dHJhdmVyc2UodGhpcyk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJmZ1
bmN0aW9uTmFtZSA9IGFkZEFycmF5Q29uc3RydWN0SW50b0Z1bmN0aW9uKG5vZGUtPmdldFR5cGUo
KSk7CisgICAgICAgICAgICAgICAgICAgIG91dCA8PCBmdW5jdGlvbk5hbWUgPDwgIigiOworICAg
ICAgICAgICAgICAgICAgICBub2RlLT5nZXRMZWZ0KCktPnRyYXZlcnNlKHRoaXMpOworICAgICAg
ICAgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgKnNlcSA9IHJpZ2h0QWdnLT5nZXRTZXF1ZW5j
ZSgpOworICAgICAgICAgICAgICAgICAgICBmb3IgKGF1dG8gJmFycmF5RWxlbWVudCA6ICpzZXEp
CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAi
LCAiOworICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlFbGVtZW50LT50cmF2ZXJzZSh0aGlz
KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiki
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIG91dCA8PCAiKSI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgICAgIC8vIEFycmF5UmV0dXJuVmFsdWVUb091dFBhcmFtZXRlciBzaG91
bGQgaGF2ZSBlbGltaW5hdGVkIGV4cHJlc3Npb25zIHdoZXJlIGEKKyAgICAgICAgICAgICAgICAv
LyBmdW5jdGlvbiBjYWxsIGlzIGFzc2lnbmVkLgorICAgICAgICAgICAgICAgIEFTU0VSVChyaWdo
dEFnZyA9PSBudWxscHRyIHx8IHJpZ2h0QWdnLT5nZXRPcCgpICE9IEVPcEZ1bmN0aW9uQ2FsbCk7
CisKKyAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZmdW5jdGlvbk5hbWUgPSBhZGRBcnJh
eUFzc2lnbm1lbnRGdW5jdGlvbihub2RlLT5nZXRUeXBlKCkpOworICAgICAgICAgICAgICAgIG91
dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgKGZ1bmN0aW9uTmFtZSArICIoIikuY19zdHIoKSwgIiwg
IiwgIikiKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEFycmF5UmV0dXJuVmFsdWVU
b091dFBhcmFtZXRlciBzaG91bGQgaGF2ZSBlbGltaW5hdGVkIGV4cHJlc3Npb25zIHdoZXJlIGEg
ZnVuY3Rpb24gY2FsbCBpcyBhc3NpZ25lZC4KLSAgICAgICAgICAgIEFTU0VSVChyaWdodEFnZyA9
PSBudWxscHRyIHx8IHJpZ2h0QWdnLT5nZXRPcCgpICE9IEVPcEZ1bmN0aW9uQ2FsbCk7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0cHV0VHJpcGxl
dChvdXQsIHZpc2l0LCAiKCIsICIgPSAiLCAiKSIpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wSW5pdGlhbGl6ZToKKyAgICAgICAgICAgIGlmICh2
aXNpdCA9PSBQcmVWaXNpdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBUSW50ZXJt
U3ltYm9sICpzeW1ib2xOb2RlID0gbm9kZS0+Z2V0TGVmdCgpLT5nZXRBc1N5bWJvbE5vZGUoKTsK
KyAgICAgICAgICAgICAgICBBU1NFUlQoc3ltYm9sTm9kZSk7CisgICAgICAgICAgICAgICAgVElu
dGVybVR5cGVkICpleHByZXNzaW9uID0gbm9kZS0+Z2V0UmlnaHQoKTsKIAotICAgICAgICAgICAg
Y29uc3QgVFN0cmluZyAmZnVuY3Rpb25OYW1lID0gYWRkQXJyYXlBc3NpZ25tZW50RnVuY3Rpb24o
bm9kZS0+Z2V0VHlwZSgpKTsKLSAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwg
KGZ1bmN0aW9uTmFtZSArICIoIikuY19zdHIoKSwgIiwgIiwgIikiKTsKLSAgICAgICAgfQotICAg
ICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNp
dCwgIigiLCAiID0gIiwgIikiKTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICAgIGNh
c2UgRU9wSW5pdGlhbGl6ZToKLSAgICAgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0KQotICAgICAg
ICB7Ci0gICAgICAgICAgICAvLyBHTFNMIGFsbG93cyB0byB3cml0ZSB0aGluZ3MgbGlrZSAiZmxv
YXQgeCA9IHg7IiB3aGVyZSBhIG5ldyB2YXJpYWJsZSB4IGlzIGRlZmluZWQKLSAgICAgICAgICAg
IC8vIGFuZCB0aGUgdmFsdWUgb2YgYW4gZXhpc3RpbmcgdmFyaWFibGUgeCBpcyBhc3NpZ25lZC4g
SExTTCB1c2VzIEMgc2VtYW50aWNzICh0aGUKLSAgICAgICAgICAgIC8vIG5ldyB2YXJpYWJsZSBp
cyBjcmVhdGVkIGJlZm9yZSB0aGUgYXNzaWdubWVudCBpcyBldmFsdWF0ZWQpLCBzbyB3ZSBuZWVk
IHRvIGNvbnZlcnQKLSAgICAgICAgICAgIC8vIHRoaXMgdG8gImZsb2F0IHQgPSB4LCB4ID0gdDsi
LgorICAgICAgICAgICAgICAgIC8vIEdsb2JhbCBpbml0aWFsaXplcnMgbXVzdCBiZSBjb25zdGFu
dCBhdCB0aGlzIHBvaW50LgorICAgICAgICAgICAgICAgIEFTU0VSVChzeW1ib2xOb2RlLT5nZXRR
dWFsaWZpZXIoKSAhPSBFdnFHbG9iYWwgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgY2FuV3Jp
dGVBc0hMU0xMaXRlcmFsKGV4cHJlc3Npb24pKTsKIAotICAgICAgICAgICAgVEludGVybVN5bWJv
bCAqc3ltYm9sTm9kZSA9IG5vZGUtPmdldExlZnQoKS0+Z2V0QXNTeW1ib2xOb2RlKCk7Ci0gICAg
ICAgICAgICBBU1NFUlQoc3ltYm9sTm9kZSk7Ci0gICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmV4
cHJlc3Npb24gPSBub2RlLT5nZXRSaWdodCgpOwotCi0gICAgICAgICAgICAvLyBHbG9iYWwgaW5p
dGlhbGl6ZXJzIG11c3QgYmUgY29uc3RhbnQgYXQgdGhpcyBwb2ludC4KLSAgICAgICAgICAgIEFT
U0VSVChzeW1ib2xOb2RlLT5nZXRRdWFsaWZpZXIoKSAhPSBFdnFHbG9iYWwgfHwKLSAgICAgICAg
ICAgICAgICAgICAoZXhwcmVzc2lvbi0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QgJiYKLSAg
ICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbi0+Z2V0QXNDb25zdGFudFVuaW9uKCkgIT0gbnVs
bHB0cikpOwotICAgICAgICAgICAgaWYgKHdyaXRlU2FtZVN5bWJvbEluaXRpYWxpemVyKG91dCwg
c3ltYm9sTm9kZSwgZXhwcmVzc2lvbikpCisgICAgICAgICAgICAgICAgLy8gR0xTTCBhbGxvd3Mg
dG8gd3JpdGUgdGhpbmdzIGxpa2UgImZsb2F0IHggPSB4OyIgd2hlcmUgYSBuZXcgdmFyaWFibGUg
eCBpcyBkZWZpbmVkCisgICAgICAgICAgICAgICAgLy8gYW5kIHRoZSB2YWx1ZSBvZiBhbiBleGlz
dGluZyB2YXJpYWJsZSB4IGlzIGFzc2lnbmVkLiBITFNMIHVzZXMgQyBzZW1hbnRpY3MgKHRoZQor
ICAgICAgICAgICAgICAgIC8vIG5ldyB2YXJpYWJsZSBpcyBjcmVhdGVkIGJlZm9yZSB0aGUgYXNz
aWdubWVudCBpcyBldmFsdWF0ZWQpLCBzbyB3ZSBuZWVkIHRvCisgICAgICAgICAgICAgICAgLy8g
Y29udmVydAorICAgICAgICAgICAgICAgIC8vIHRoaXMgdG8gImZsb2F0IHQgPSB4LCB4ID0gdDsi
LgorICAgICAgICAgICAgICAgIGlmICh3cml0ZVNhbWVTeW1ib2xJbml0aWFsaXplcihvdXQsIHN5
bWJvbE5vZGUsIGV4cHJlc3Npb24pKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgLy8gU2tpcCBpbml0aWFsaXppbmcgdGhlIHJlc3Qgb2YgdGhlIGV4cHJlc3Npb24KKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBlbHNlIGlmICh3cml0ZUNvbnN0YW50SW5pdGlhbGl6YXRpb24ob3V0LCBzeW1i
b2xOb2RlLCBleHByZXNzaW9uKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBlbHNlIGlmICh2aXNpdCA9PSBJblZpc2l0KQogICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIC8vIFNraXAgaW5pdGlhbGl6aW5nIHRoZSByZXN0IG9mIHRoZSBleHByZXNzaW9u
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIG91dCA8PCAi
ID0gIjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKHdyaXRlQ29uc3RhbnRJ
bml0aWFsaXphdGlvbihvdXQsIHN5bWJvbE5vZGUsIGV4cHJlc3Npb24pKQorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRU9wQWRkQXNzaWduOgorICAgICAgICAgICAgb3V0cHV0VHJp
cGxldChvdXQsIHZpc2l0LCAiKCIsICIgKz0gIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEVPcFN1YkFzc2lnbjoKKyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0
LCB2aXNpdCwgIigiLCAiIC09ICIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBFT3BNdWxBc3NpZ246CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQs
ICIoIiwgIiAqPSAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9w
VmVjdG9yVGltZXNTY2FsYXJBc3NpZ246CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwg
dmlzaXQsICIoIiwgIiAqPSAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgRU9wTWF0cml4VGltZXNTY2FsYXJBc3NpZ246CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0
KG91dCwgdmlzaXQsICIoIiwgIiAqPSAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgRU9wVmVjdG9yVGltZXNNYXRyaXhBc3NpZ246CisgICAgICAgICAgICBpZiAodmlz
aXQgPT0gUHJlVmlzaXQpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgICAgIG91dCA8PCAiKCI7CiAgICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICAgICAgZWxzZSBpZiAodmlzaXQgPT0gSW5WaXNpdCkKKyAgICAgICAgICAgIGVsc2Ug
aWYgKHZpc2l0ID09IEluVmlzaXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0
IDw8ICIgPSBtdWwoIjsKKyAgICAgICAgICAgICAgICBub2RlLT5nZXRMZWZ0KCktPnRyYXZlcnNl
KHRoaXMpOworICAgICAgICAgICAgICAgIG91dCA8PCAiLCB0cmFuc3Bvc2UoIjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBv
dXQgPDwgIikpKSI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBFT3BNYXRyaXhUaW1lc01hdHJpeEFzc2lnbjoKKyAgICAgICAgICAgIGlmICh2aXNpdCA9
PSBQcmVWaXNpdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIigiOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAodmlzaXQgPT0gSW5WaXNpdCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIiA9IHRyYW5zcG9zZShtdWwodHJh
bnNwb3NlKCI7CisgICAgICAgICAgICAgICAgbm9kZS0+Z2V0TGVmdCgpLT50cmF2ZXJzZSh0aGlz
KTsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIiksIHRyYW5zcG9zZSgiOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8
PCAiKSkpKSI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBFT3BEaXZBc3NpZ246CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIo
IiwgIiAvPSAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wSU1v
ZEFzc2lnbjoKKyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiICU9
ICIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BCaXRTaGlmdExl
ZnRBc3NpZ246CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiA8
PD0gIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEJpdFNoaWZ0
UmlnaHRBc3NpZ246CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwg
IiA+Pj0gIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEJpdHdp
c2VBbmRBc3NpZ246CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwg
IiAmPSAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQml0d2lz
ZVhvckFzc2lnbjoKKyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAi
IF49ICIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BCaXR3aXNl
T3JBc3NpZ246CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiB8
PSAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wSW5kZXhEaXJl
Y3Q6CiAgICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAiID0gIjsKLSAgICAgICAgfQotICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQWRkQXNzaWduOgotICAgICAgICAgIG91dHB1dFRy
aXBsZXQob3V0LCB2aXNpdCwgIigiLCAiICs9ICIsICIpIik7Ci0gICAgICAgICAgYnJlYWs7Ci0g
ICAgICBjYXNlIEVPcFN1YkFzc2lnbjoKLSAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlz
aXQsICIoIiwgIiAtPSAiLCAiKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BN
dWxBc3NpZ246Ci0gICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIgKj0g
IiwgIikiKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNTY2Fs
YXJBc3NpZ246Ci0gICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIgKj0g
IiwgIikiKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNTY2Fs
YXJBc3NpZ246Ci0gICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIgKj0g
IiwgIikiKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNNYXRy
aXhBc3NpZ246Ci0gICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkKLSAgICAgICAgewotICAg
ICAgICAgICAgb3V0IDw8ICIoIjsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmICh2aXNpdCA9
PSBJblZpc2l0KQotICAgICAgICB7Ci0gICAgICAgICAgICBvdXQgPDwgIiA9IG11bCgiOwotICAg
ICAgICAgICAgbm9kZS0+Z2V0TGVmdCgpLT50cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAgICAgIG91
dCA8PCAiLCB0cmFuc3Bvc2UoIjsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsK
LSAgICAgICAgICAgIG91dCA8PCAiKSkpIjsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAg
ICAgIGNhc2UgRU9wTWF0cml4VGltZXNNYXRyaXhBc3NpZ246Ci0gICAgICAgIGlmICh2aXNpdCA9
PSBQcmVWaXNpdCkKLSAgICAgICAgewotICAgICAgICAgICAgb3V0IDw8ICIoIjsKLSAgICAgICAg
fQotICAgICAgICBlbHNlIGlmICh2aXNpdCA9PSBJblZpc2l0KQotICAgICAgICB7Ci0gICAgICAg
ICAgICBvdXQgPDwgIiA9IHRyYW5zcG9zZShtdWwodHJhbnNwb3NlKCI7Ci0gICAgICAgICAgICBu
b2RlLT5nZXRMZWZ0KCktPnRyYXZlcnNlKHRoaXMpOwotICAgICAgICAgICAgb3V0IDw8ICIpLCB0
cmFuc3Bvc2UoIjsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIG91dCA8PCAiKSkpKSI7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNl
IEVPcERpdkFzc2lnbjoKLSAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwg
IiAvPSAiLCAiKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BJTW9kQXNzaWdu
OgotICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiICU9ICIsICIpIik7
Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEJpdFNoaWZ0TGVmdEFzc2lnbjoKLSAg
ICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiA8PD0gIiwgIikiKTsKLSAg
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQml0U2hpZnRSaWdodEFzc2lnbjoKLSAgICAg
ICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiA+Pj0gIiwgIikiKTsKLSAgICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQml0d2lzZUFuZEFzc2lnbjoKLSAgICAgICAgICBv
dXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiAmPSAiLCAiKSIpOwotICAgICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBFT3BCaXR3aXNlWG9yQXNzaWduOgotICAgICAgICAgIG91dHB1dFRy
aXBsZXQob3V0LCB2aXNpdCwgIigiLCAiIF49ICIsICIpIik7Ci0gICAgICAgICAgYnJlYWs7Ci0g
ICAgICBjYXNlIEVPcEJpdHdpc2VPckFzc2lnbjoKLSAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91
dCwgdmlzaXQsICIoIiwgIiB8PSAiLCAiKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBFT3BJbmRleERpcmVjdDoKLSAgICAgICAgewogICAgICAgICAgICAgY29uc3QgVFR5cGUmIGxl
ZnRUeXBlID0gbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCk7CiAgICAgICAgICAgICBpZiAobGVm
dFR5cGUuaXNJbnRlcmZhY2VCbG9jaygpKQogICAgICAgICAgICAgewpAQCAtMTk0Niw0MiArMTA3
OCw2IEBACiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEVPcFZlY3RvclN3aXp6bGU6Ci0gICAgICAgIGlmICh2aXNpdCA9PSBJ
blZpc2l0KQotICAgICAgICB7Ci0gICAgICAgICAgICBvdXQgPDwgIi4iOwotCi0gICAgICAgICAg
ICBUSW50ZXJtQWdncmVnYXRlICpzd2l6emxlID0gbm9kZS0+Z2V0UmlnaHQoKS0+Z2V0QXNBZ2dy
ZWdhdGUoKTsKLQotICAgICAgICAgICAgaWYgKHN3aXp6bGUpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgVEludGVybVNlcXVlbmNlICpzZXF1ZW5jZSA9IHN3aXp6bGUtPmdldFNlcXVl
bmNlKCk7Ci0KLSAgICAgICAgICAgICAgICBmb3IgKFRJbnRlcm1TZXF1ZW5jZTo6aXRlcmF0b3Ig
c2l0ID0gc2VxdWVuY2UtPmJlZ2luKCk7IHNpdCAhPSBzZXF1ZW5jZS0+ZW5kKCk7IHNpdCsrKQot
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgVEludGVybUNvbnN0YW50VW5p
b24gKmVsZW1lbnQgPSAoKnNpdCktPmdldEFzQ29uc3RhbnRVbmlvbigpOwotCi0gICAgICAgICAg
ICAgICAgICAgIGlmIChlbGVtZW50KQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgaSA9IGVsZW1lbnQtPmdldElDb25zdCgwKTsKLQotICAgICAgICAg
ICAgICAgICAgICAgICAgc3dpdGNoIChpKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiBvdXQgPDwgIngiOyBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgMTogb3V0IDw8ICJ5IjsgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlIDI6IG91dCA8PCAieiI7IGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSAzOiBvdXQgPDwgInciOyBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgVU5S
RUFDSEFCTEUoKTsKLQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgIC8vIEZ1bGx5IHByb2Nl
c3NlZAotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BBZGQ6CiAgICAg
ICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIgKyAiLCAiKSIpOwogICAgICAg
ICAgIGJyZWFrOwpAQCAtMjE4NSw5ICsxMjgxLDEyIEBACiAgICAgICAgICAgb3V0cHV0VHJpcGxl
dChvdXQsIHZpc2l0LCAiZnJhYygiLCAiIiwgIikiKTsKICAgICAgICAgICBicmVhazsKICAgICAg
IGNhc2UgRU9wSXNOYW46Ci0gICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiaXNu
YW4oIiwgIiIsICIpIik7Ci0gICAgICAgIG1SZXF1aXJlc0lFRUVTdHJpY3RDb21waWxpbmcgPSB0
cnVlOwotICAgICAgICBicmVhazsKKyAgICAgICAgICBpZiAobm9kZS0+Z2V0VXNlRW11bGF0ZWRG
dW5jdGlvbigpKQorICAgICAgICAgICAgICB3cml0ZUVtdWxhdGVkRnVuY3Rpb25UcmlwbGV0KG91
dCwgdmlzaXQsICJpc25hbigiKTsKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIG91dHB1
dFRyaXBsZXQob3V0LCB2aXNpdCwgImlzbmFuKCIsICIiLCAiKSIpOworICAgICAgICAgIG1SZXF1
aXJlc0lFRUVTdHJpY3RDb21waWxpbmcgPSB0cnVlOworICAgICAgICAgIGJyZWFrOwogICAgICAg
Y2FzZSBFT3BJc0luZjoKICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJpc2lu
ZigiLCAiIiwgIikiKTsKICAgICAgICAgICBicmVhazsKQEAgLTIzMjAsMjM2ICsxNDE5LDIzNiBA
QAogICAgIH0KIH0KIAotYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNp
dCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkKK2Jvb2wgT3V0cHV0SExTTDo6dmlzaXRCbG9jayhW
aXNpdCB2aXNpdCwgVEludGVybUJsb2NrICpub2RlKQogewogICAgIFRJbmZvU2lua0Jhc2UgJm91
dCA9IGdldEluZm9TaW5rKCk7CiAKLSAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpCisgICAgaWYg
KG1JbnNpZGVGdW5jdGlvbikKICAgICB7Ci0gICAgICBjYXNlIEVPcFNlcXVlbmNlOgorICAgICAg
ICBvdXRwdXRMaW5lRGlyZWN0aXZlKG91dCwgbm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwor
ICAgICAgICBvdXQgPDwgIntcbiI7CisgICAgfQorCisgICAgZm9yIChUSW50ZXJtU2VxdWVuY2U6
Oml0ZXJhdG9yIHNpdCA9IG5vZGUtPmdldFNlcXVlbmNlKCktPmJlZ2luKCk7CisgICAgICAgICBz
aXQgIT0gbm9kZS0+Z2V0U2VxdWVuY2UoKS0+ZW5kKCk7IHNpdCsrKQorICAgIHsKKyAgICAgICAg
b3V0cHV0TGluZURpcmVjdGl2ZShvdXQsICgqc2l0KS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwor
CisgICAgICAgICgqc2l0KS0+dHJhdmVyc2UodGhpcyk7CisKKyAgICAgICAgLy8gRG9uJ3Qgb3V0
cHV0IDsgYWZ0ZXIgY2FzZSBsYWJlbHMsIHRoZXkncmUgdGVybWluYXRlZCBieSA6CisgICAgICAg
IC8vIFRoaXMgaXMgbmVlZGVkIGVzcGVjaWFsbHkgc2luY2Ugb3V0cHV0dGluZyBhIDsgYWZ0ZXIg
YSBjYXNlIHN0YXRlbWVudCB3b3VsZCB0dXJuIGVtcHR5CisgICAgICAgIC8vIGNhc2Ugc3RhdGVt
ZW50cyBpbnRvIG5vbi1lbXB0eSBjYXNlIHN0YXRlbWVudHMsIGRpc2FsbG93aW5nIGZhbGwtdGhy
b3VnaCBmcm9tIHRoZW0uCisgICAgICAgIC8vIEFsc28gbm8gbmVlZCB0byBvdXRwdXQgOyBhZnRl
ciBpZiBzdGF0ZW1lbnRzIG9yIHNlcXVlbmNlcy4gVGhpcyBpcyBkb25lIGp1c3QgZm9yCisgICAg
ICAgIC8vIGNvZGUgY2xhcml0eS4KKyAgICAgICAgaWYgKCgqc2l0KS0+Z2V0QXNDYXNlTm9kZSgp
ID09IG51bGxwdHIgJiYgKCpzaXQpLT5nZXRBc0lmRWxzZU5vZGUoKSA9PSBudWxscHRyICYmCisg
ICAgICAgICAgICAoKnNpdCktPmdldEFzQmxvY2soKSA9PSBudWxscHRyKQorICAgICAgICAgICAg
b3V0IDw8ICI7XG4iOworICAgIH0KKworICAgIGlmIChtSW5zaWRlRnVuY3Rpb24pCisgICAgewor
ICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG91dCwgbm9kZS0+Z2V0TGluZSgpLmxhc3RfbGlu
ZSk7CisgICAgICAgIG91dCA8PCAifVxuIjsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgT3V0cHV0SExTTDo6dmlzaXRGdW5jdGlvbkRlZmluaXRpb24oVmlzaXQgdmlzaXQs
IFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKm5vZGUpCit7CisgICAgVEluZm9TaW5rQmFzZSAm
b3V0ID0gZ2V0SW5mb1NpbmsoKTsKKworICAgIEFTU0VSVChtQ3VycmVudEZ1bmN0aW9uTWV0YWRh
dGEgPT0gbnVsbHB0cik7CisKKyAgICBzaXplX3QgaW5kZXggPSBtQ2FsbERhZy5maW5kSW5kZXgo
bm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCkpOworICAgIEFTU0VSVChpbmRleCAhPSBDYWxs
REFHOjpJbnZhbGlkSW5kZXgpOworICAgIG1DdXJyZW50RnVuY3Rpb25NZXRhZGF0YSA9ICZtQVNU
TWV0YWRhdGFMaXN0W2luZGV4XTsKKworICAgIG91dCA8PCBUeXBlU3RyaW5nKG5vZGUtPmdldFR5
cGUoKSkgPDwgIiAiOworCisgICAgVEludGVybVNlcXVlbmNlICpwYXJhbWV0ZXJzID0gbm9kZS0+
Z2V0RnVuY3Rpb25QYXJhbWV0ZXJzKCktPmdldFNlcXVlbmNlKCk7CisKKyAgICBpZiAobm9kZS0+
Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmlzTWFpbigpKQorICAgIHsKKyAgICAgICAgb3V0IDw8
ICJnbF9tYWluKCI7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG91dCA8PCBEZWNv
cmF0ZUZ1bmN0aW9uSWZOZWVkZWQobm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5h
bWVPYmooKSkKKyAgICAgICAgICAgIDw8IERpc2FtYmlndWF0ZUZ1bmN0aW9uTmFtZShwYXJhbWV0
ZXJzKSA8PCAobU91dHB1dExvZDBGdW5jdGlvbiA/ICJMb2QwKCIgOiAiKCIpOworICAgIH0KKwor
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGFyYW1ldGVycy0+c2l6ZSgpOyBpKysp
CisgICAgeworICAgICAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2wgPSAoKnBhcmFtZXRlcnMpW2ld
LT5nZXRBc1N5bWJvbE5vZGUoKTsKKworICAgICAgICBpZiAoc3ltYm9sKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAobUluc2lkZUZ1bmN0aW9uKQorICAgICAgICAgICAgZW5zdXJlU3RydWN0
RGVmaW5lZChzeW1ib2wtPmdldFR5cGUoKSk7CisKKyAgICAgICAgICAgIG91dCA8PCBhcmd1bWVu
dFN0cmluZyhzeW1ib2wpOworCisgICAgICAgICAgICBpZiAoaSA8IHBhcmFtZXRlcnMtPnNpemUo
KSAtIDEpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2
ZShvdXQsIG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5lKTsKLSAgICAgICAgICAgICAgICBvdXQg
PDwgIntcbiI7CisgICAgICAgICAgICAgICAgb3V0IDw8ICIsICI7CiAgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9
CiAKLSAgICAgICAgICAgIGZvciAoVEludGVybVNlcXVlbmNlOjppdGVyYXRvciBzaXQgPSBub2Rl
LT5nZXRTZXF1ZW5jZSgpLT5iZWdpbigpOyBzaXQgIT0gbm9kZS0+Z2V0U2VxdWVuY2UoKS0+ZW5k
KCk7IHNpdCsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJl
Y3RpdmUob3V0LCAoKnNpdCktPmdldExpbmUoKS5maXJzdF9saW5lKTsKKyAgICBvdXQgPDwgIilc
biI7CiAKLSAgICAgICAgICAgICAgICAoKnNpdCktPnRyYXZlcnNlKHRoaXMpOworICAgIG1JbnNp
ZGVGdW5jdGlvbiA9IHRydWU7CisgICAgLy8gVGhlIGZ1bmN0aW9uIGJvZHkgbm9kZSB3aWxsIG91
dHB1dCBicmFjZXMuCisgICAgbm9kZS0+Z2V0Qm9keSgpLT50cmF2ZXJzZSh0aGlzKTsKKyAgICBt
SW5zaWRlRnVuY3Rpb24gPSBmYWxzZTsKIAotICAgICAgICAgICAgICAgIC8vIERvbid0IG91dHB1
dCA7IGFmdGVyIGNhc2UgbGFiZWxzLCB0aGV5J3JlIHRlcm1pbmF0ZWQgYnkgOgotICAgICAgICAg
ICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIGVzcGVjaWFsbHkgc2luY2Ugb3V0cHV0dGluZyBhIDsg
YWZ0ZXIgYSBjYXNlIHN0YXRlbWVudCB3b3VsZCB0dXJuIGVtcHR5Ci0gICAgICAgICAgICAgICAg
Ly8gY2FzZSBzdGF0ZW1lbnRzIGludG8gbm9uLWVtcHR5IGNhc2Ugc3RhdGVtZW50cywgZGlzYWxs
b3dpbmcgZmFsbC10aHJvdWdoIGZyb20gdGhlbS4KLSAgICAgICAgICAgICAgICAvLyBBbHNvIG5v
IG5lZWQgdG8gb3V0cHV0IDsgYWZ0ZXIgc2VsZWN0aW9uIChpZikgc3RhdGVtZW50cyBvciBzZXF1
ZW5jZXMuIFRoaXMgaXMgZG9uZSBqdXN0Ci0gICAgICAgICAgICAgICAgLy8gZm9yIGNvZGUgY2xh
cml0eS4KLSAgICAgICAgICAgICAgICBUSW50ZXJtU2VsZWN0aW9uICphc1NlbGVjdGlvbiA9ICgq
c2l0KS0+Z2V0QXNTZWxlY3Rpb25Ob2RlKCk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGFzU2Vs
ZWN0aW9uID09IG51bGxwdHIgfHwgIWFzU2VsZWN0aW9uLT51c2VzVGVybmFyeU9wZXJhdG9yKCkp
OwotICAgICAgICAgICAgICAgIGlmICgoKnNpdCktPmdldEFzQ2FzZU5vZGUoKSA9PSBudWxscHRy
ICYmIGFzU2VsZWN0aW9uID09IG51bGxwdHIgJiYgIUlzU2VxdWVuY2UoKnNpdCkpCi0gICAgICAg
ICAgICAgICAgICAgIG91dCA8PCAiO1xuIjsKLSAgICAgICAgICAgIH0KKyAgICBtQ3VycmVudEZ1
bmN0aW9uTWV0YWRhdGEgPSBudWxscHRyOwogCi0gICAgICAgICAgICBpZiAobUluc2lkZUZ1bmN0
aW9uKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUo
b3V0LCBub2RlLT5nZXRMaW5lKCkubGFzdF9saW5lKTsKLSAgICAgICAgICAgICAgICBvdXQgPDwg
In1cbiI7Ci0gICAgICAgICAgICB9CisgICAgYm9vbCBuZWVkc0xvZDAgPSBtQVNUTWV0YWRhdGFM
aXN0W2luZGV4XS5tTmVlZHNMb2QwOworICAgIGlmIChuZWVkc0xvZDAgJiYgIW1PdXRwdXRMb2Qw
RnVuY3Rpb24gJiYgbVNoYWRlclR5cGUgPT0gR0xfRlJBR01FTlRfU0hBREVSKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKCFub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+aXNNYWluKCkpOwor
ICAgICAgICBtT3V0cHV0TG9kMEZ1bmN0aW9uID0gdHJ1ZTsKKyAgICAgICAgbm9kZS0+dHJhdmVy
c2UodGhpcyk7CisgICAgICAgIG1PdXRwdXRMb2QwRnVuY3Rpb24gPSBmYWxzZTsKKyAgICB9CiAK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgY2FzZSBFT3BEZWNs
YXJhdGlvbjoKLSAgICAgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0KQotICAgICAgICB7Ci0gICAg
ICAgICAgICBUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlID0gbm9kZS0+Z2V0U2VxdWVuY2UoKTsK
LSAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqdmFyaWFibGUgPSAoKnNlcXVlbmNlKVswXS0+Z2V0
QXNUeXBlZCgpOwotICAgICAgICAgICAgQVNTRVJUKHNlcXVlbmNlLT5zaXplKCkgPT0gMSk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQogCi0gICAgICAgICAgICBpZiAodmFyaWFibGUgJiYKLSAgICAg
ICAgICAgICAgICAodmFyaWFibGUtPmdldFF1YWxpZmllcigpID09IEV2cVRlbXBvcmFyeSB8fAot
ICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxR2xvYmFsIHx8
IHZhcmlhYmxlLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkpCitib29sIE91dHB1dEhMU0w6
OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKQorewor
ICAgIFRJbmZvU2lua0Jhc2UgJm91dCA9IGdldEluZm9TaW5rKCk7CisKKyAgICBzd2l0Y2ggKG5v
ZGUtPmdldE9wKCkpCisgICAgeworICAgICAgICBjYXNlIEVPcERlY2xhcmF0aW9uOgorICAgICAg
ICAgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0KQogICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGVuc3VyZVN0cnVjdERlZmluZWQodmFyaWFibGUtPmdldFR5cGUoKSk7CisgICAgICAgICAg
ICAgICAgVEludGVybVNlcXVlbmNlICpzZXF1ZW5jZSA9IG5vZGUtPmdldFNlcXVlbmNlKCk7Cisg
ICAgICAgICAgICAgICAgVEludGVybVR5cGVkICp2YXJpYWJsZSAgICA9ICgqc2VxdWVuY2UpWzBd
LT5nZXRBc1R5cGVkKCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHNlcXVlbmNlLT5zaXplKCkg
PT0gMSk7CiAKLSAgICAgICAgICAgICAgICBpZiAoIXZhcmlhYmxlLT5nZXRBc1N5bWJvbE5vZGUo
KSB8fCB2YXJpYWJsZS0+Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJvbCgpICE9ICIiKSAgIC8v
IFZhcmlhYmxlIGRlY2xhcmF0aW9uCisgICAgICAgICAgICAgICAgaWYgKHZhcmlhYmxlICYmCisg
ICAgICAgICAgICAgICAgICAgICh2YXJpYWJsZS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxVGVtcG9y
YXJ5IHx8CisgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0UXVhbGlmaWVyKCkgPT0g
RXZxR2xvYmFsIHx8IHZhcmlhYmxlLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkpCiAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAoIW1JbnNpZGVGdW5jdGlvbikK
KyAgICAgICAgICAgICAgICAgICAgZW5zdXJlU3RydWN0RGVmaW5lZCh2YXJpYWJsZS0+Z2V0VHlw
ZSgpKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoIXZhcmlhYmxlLT5nZXRBc1N5bWJvbE5v
ZGUoKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldEFzU3ltYm9sTm9k
ZSgpLT5nZXRTeW1ib2woKSAhPSAiIikgIC8vIFZhcmlhYmxlIGRlY2xhcmF0aW9uCiAgICAgICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAic3RhdGljICI7
Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbUlu
c2lkZUZ1bmN0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG91dCA8PCAic3RhdGljICI7CisgICAgICAgICAgICAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgICAgICAgICAgb3V0IDw8IFR5cGVTdHJpbmcodmFyaWFibGUtPmdldFR5
cGUoKSkgKyAiICI7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgVHlwZVN0cmluZyh2
YXJpYWJsZS0+Z2V0VHlwZSgpKSArICIgIjsKIAotICAgICAgICAgICAgICAgICAgICBUSW50ZXJt
U3ltYm9sICpzeW1ib2wgPSB2YXJpYWJsZS0+Z2V0QXNTeW1ib2xOb2RlKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2wgPSB2YXJpYWJsZS0+Z2V0QXNTeW1i
b2xOb2RlKCk7CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChzeW1ib2wpCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sLT50cmF2ZXJzZSh0aGlzKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvdXQgPDwgQXJyYXlTdHJpbmcoc3ltYm9sLT5nZXRUeXBlKCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiID0gIiArIGluaXRpYWxpemVy
KHN5bWJvbC0+Z2V0VHlwZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+dHJhdmVyc2UodGhpcyk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgZWxzZSBpZiAodmFyaWFibGUtPmdldEFzU3ltYm9sTm9kZSgpICYmCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRBc1N5bWJvbE5vZGUoKS0+Z2V0U3ltYm9sKCkg
PT0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiKSAgLy8gVHlwZSAoc3RydWN0
KSBkZWNsYXJhdGlvbgogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBzeW1ib2wtPnRyYXZlcnNlKHRoaXMpOwotICAgICAgICAgICAgICAgICAgICAgICAgb3V0
IDw8IEFycmF5U3RyaW5nKHN5bWJvbC0+Z2V0VHlwZSgpKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG91dCA8PCAiID0gIiArIGluaXRpYWxpemVyKHN5bWJvbC0+Z2V0VHlwZSgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIEFscmVhZHkgYWRkZWQgdG8gY29uc3RydWN0b3IgbWFwCiAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+dHJhdmVyc2Uo
dGhpcyk7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYg
KHZhcmlhYmxlLT5nZXRBc1N5bWJvbE5vZGUoKSAmJiB2YXJpYWJsZS0+Z2V0QXNTeW1ib2xOb2Rl
KCktPmdldFN5bWJvbCgpID09ICIiKSAgIC8vIFR5cGUgKHN0cnVjdCkgZGVjbGFyYXRpb24KKyAg
ICAgICAgICAgICAgICBlbHNlIGlmICh2YXJpYWJsZSAmJiBJc1ZhcnlpbmdPdXQodmFyaWFibGUt
PmdldFF1YWxpZmllcigpKSkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IC8vIEFscmVhZHkgYWRkZWQgdG8gY29uc3RydWN0b3IgbWFwCi0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGVsc2UgaWYgKHZhcmlhYmxlICYmIElzVmFyeWluZ091dCh2YXJpYWJsZS0+Z2V0UXVh
bGlmaWVyKCkpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZvciAoVEludGVybVNl
cXVlbmNlOjppdGVyYXRvciBzaXQgPSBzZXF1ZW5jZS0+YmVnaW4oKTsgc2l0ICE9IHNlcXVlbmNl
LT5lbmQoKTsgc2l0KyspCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBU
SW50ZXJtU3ltYm9sICpzeW1ib2wgPSAoKnNpdCktPmdldEFzU3ltYm9sTm9kZSgpOworICAgICAg
ICAgICAgICAgICAgICBmb3IgKFRJbnRlcm1TZXF1ZW5jZTo6aXRlcmF0b3Igc2l0ID0gc2VxdWVu
Y2UtPmJlZ2luKCk7IHNpdCAhPSBzZXF1ZW5jZS0+ZW5kKCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l0KyspCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9ICgqc2l0KS0+Z2V0QXNTeW1ib2xOb2RlKCk7CiAK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbCkKLSAgICAgICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gVmVydGV4IChvdXRwdXQpIHZhcnlpbmdzIHdoaWNo
IGFyZSBkZWNsYXJlZCBidXQgbm90IHdyaXR0ZW4gdG8gc2hvdWxkIHN0aWxsIGJlIGRlY2xhcmVk
IHRvIGFsbG93IHN1Y2Nlc3NmdWwgbGlua2luZwotICAgICAgICAgICAgICAgICAgICAgICAgbVJl
ZmVyZW5jZWRWYXJ5aW5nc1tzeW1ib2wtPmdldFN5bWJvbCgpXSA9IHN5bWJvbDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChzeW1ib2wpCisgICAgICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVmVydGV4IChvdXRwdXQpIHZhcnlpbmdzIHdo
aWNoIGFyZSBkZWNsYXJlZCBidXQgbm90IHdyaXR0ZW4gdG8gc2hvdWxkCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gc3RpbGwgYmUgZGVjbGFyZWQgdG8gYWxsb3cgc3VjY2Vzc2Z1bCBs
aW5raW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVJlZmVyZW5jZWRWYXJ5aW5nc1tz
eW1ib2wtPmdldFN5bWJvbCgpXSA9IHN5bWJvbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKnNpdCktPnRyYXZlcnNlKHRoaXMpOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICAgICAgKCpzaXQpLT50cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHZpc2l0ID09IEluVmlzaXQpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIG91dCA8PCAiLCAiOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwot
ICAgICAgY2FzZSBFT3BJbnZhcmlhbnREZWNsYXJhdGlvbjoKLSAgICAgICAgLy8gRG8gbm90IGRv
IGFueSB0cmFuc2xhdGlvbgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBjYXNlIEVPcFBy
b3RvdHlwZToKLSAgICAgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0KQotICAgICAgICB7Ci0gICAg
ICAgICAgICBzaXplX3QgaW5kZXggPSBtQ2FsbERhZy5maW5kSW5kZXgobm9kZSk7Ci0gICAgICAg
ICAgICAvLyBTa2lwIHRoZSBwcm90b3R5cGUgaWYgaXQgaXMgbm90IGltcGxlbWVudGVkIChhbmQg
dGh1cyBub3QgdXNlZCkKLSAgICAgICAgICAgIGlmIChpbmRleCA9PSBDYWxsREFHOjpJbnZhbGlk
SW5kZXgpCi0gICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgKmFyZ3VtZW50cyA9IG5v
ZGUtPmdldFNlcXVlbmNlKCk7Ci0KLSAgICAgICAgICAgIFRTdHJpbmcgbmFtZSA9IERlY29yYXRl
RnVuY3Rpb25JZk5lZWRlZChub2RlLT5nZXROYW1lT2JqKCkpOwotICAgICAgICAgICAgb3V0IDw8
IFR5cGVTdHJpbmcobm9kZS0+Z2V0VHlwZSgpKSA8PCAiICIgPDwgbmFtZSA8PCBEaXNhbWJpZ3Vh
dGVGdW5jdGlvbk5hbWUoYXJndW1lbnRzKQotICAgICAgICAgICAgICAgIDw8IChtT3V0cHV0TG9k
MEZ1bmN0aW9uID8gIkxvZDAoIiA6ICIoIik7Ci0KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aW50IGkgPSAwOyBpIDwgYXJndW1lbnRzLT5zaXplKCk7IGkrKykKKyAgICAgICAgICAgIGVsc2Ug
aWYgKHZpc2l0ID09IEluVmlzaXQpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgVElu
dGVybVN5bWJvbCAqc3ltYm9sID0gKCphcmd1bWVudHMpW2ldLT5nZXRBc1N5bWJvbE5vZGUoKTsK
LQotICAgICAgICAgICAgICAgIGlmIChzeW1ib2wpCisgICAgICAgICAgICAgICAgb3V0IDw8ICIs
ICI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BJ
bnZhcmlhbnREZWNsYXJhdGlvbjoKKyAgICAgICAgICAgIC8vIERvIG5vdCBkbyBhbnkgdHJhbnNs
YXRpb24KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY2FzZSBFT3BQcm90b3R5
cGU6CisgICAgICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgc2l6ZV90IGluZGV4ID0gbUNhbGxEYWcuZmluZEluZGV4KG5vZGUtPmdl
dEZ1bmN0aW9uU3ltYm9sSW5mbygpKTsKKyAgICAgICAgICAgICAgICAvLyBTa2lwIHRoZSBwcm90
b3R5cGUgaWYgaXQgaXMgbm90IGltcGxlbWVudGVkIChhbmQgdGh1cyBub3QgdXNlZCkKKyAgICAg
ICAgICAgICAgICBpZiAoaW5kZXggPT0gQ2FsbERBRzo6SW52YWxpZEluZGV4KQogICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgb3V0IDw8IGFyZ3VtZW50U3RyaW5nKHN5bWJv
bCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGkgPCBhcmd1bWVudHMtPnNpemUoKSAtIDEp
Ci0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAi
LCAiOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJM
RSgpOwotICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBvdXQgPDwgIik7XG4iOworICAgICAg
ICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAqYXJndW1lbnRzID0gbm9kZS0+Z2V0U2VxdWVuY2Uo
KTsKIAotICAgICAgICAgICAgLy8gQWxzbyBwcm90b3R5cGUgdGhlIExvZDAgdmFyaWFudCBpZiBu
ZWVkZWQKLSAgICAgICAgICAgIGJvb2wgbmVlZHNMb2QwID0gbUFTVE1ldGFkYXRhTGlzdFtpbmRl
eF0ubU5lZWRzTG9kMDsKLSAgICAgICAgICAgIGlmIChuZWVkc0xvZDAgJiYgIW1PdXRwdXRMb2Qw
RnVuY3Rpb24gJiYgbVNoYWRlclR5cGUgPT0gR0xfRlJBR01FTlRfU0hBREVSKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIG1PdXRwdXRMb2QwRnVuY3Rpb24gPSB0cnVlOwotICAgICAg
ICAgICAgICAgIG5vZGUtPnRyYXZlcnNlKHRoaXMpOwotICAgICAgICAgICAgICAgIG1PdXRwdXRM
b2QwRnVuY3Rpb24gPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BDb21tYToK
LSAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiwgIiwgIikiKTsKLSAg
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wRnVuY3Rpb246Ci0gICAgICAgIHsKLSAgICAg
ICAgICAgIEFTU0VSVChtQ3VycmVudEZ1bmN0aW9uTWV0YWRhdGEgPT0gbnVsbHB0cik7Ci0gICAg
ICAgICAgICBUU3RyaW5nIG5hbWUgPSBURnVuY3Rpb246OnVubWFuZ2xlTmFtZShub2RlLT5nZXRO
YW1lT2JqKCkuZ2V0U3RyaW5nKCkpOwotCi0gICAgICAgICAgICBzaXplX3QgaW5kZXggPSBtQ2Fs
bERhZy5maW5kSW5kZXgobm9kZSk7Ci0gICAgICAgICAgICBBU1NFUlQoaW5kZXggIT0gQ2FsbERB
Rzo6SW52YWxpZEluZGV4KTsKLSAgICAgICAgICAgIG1DdXJyZW50RnVuY3Rpb25NZXRhZGF0YSA9
ICZtQVNUTWV0YWRhdGFMaXN0W2luZGV4XTsKLQotICAgICAgICAgICAgb3V0IDw8IFR5cGVTdHJp
bmcobm9kZS0+Z2V0VHlwZSgpKSA8PCAiICI7Ci0KLSAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5j
ZSAqc2VxdWVuY2UgID0gbm9kZS0+Z2V0U2VxdWVuY2UoKTsKLSAgICAgICAgICAgIFRJbnRlcm1T
ZXF1ZW5jZSAqYXJndW1lbnRzID0gKCpzZXF1ZW5jZSlbMF0tPmdldEFzQWdncmVnYXRlKCktPmdl
dFNlcXVlbmNlKCk7Ci0KLSAgICAgICAgICAgIGlmIChuYW1lID09ICJtYWluIikKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBvdXQgPDwgImdsX21haW4oIjsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXQgPDwg
RGVjb3JhdGVGdW5jdGlvbklmTmVlZGVkKG5vZGUtPmdldE5hbWVPYmooKSkKKyAgICAgICAgICAg
ICAgICBUU3RyaW5nIG5hbWUgPQorICAgICAgICAgICAgICAgICAgICBEZWNvcmF0ZUZ1bmN0aW9u
SWZOZWVkZWQobm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5hbWVPYmooKSk7Cisg
ICAgICAgICAgICAgICAgb3V0IDw8IFR5cGVTdHJpbmcobm9kZS0+Z2V0VHlwZSgpKSA8PCAiICIg
PDwgbmFtZQogICAgICAgICAgICAgICAgICAgICA8PCBEaXNhbWJpZ3VhdGVGdW5jdGlvbk5hbWUo
YXJndW1lbnRzKSA8PCAobU91dHB1dExvZDBGdW5jdGlvbiA/ICJMb2QwKCIgOiAiKCIpOwotICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGFy
Z3VtZW50cy0+c2l6ZSgpOyBpKyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgVElu
dGVybVN5bWJvbCAqc3ltYm9sID0gKCphcmd1bWVudHMpW2ldLT5nZXRBc1N5bWJvbE5vZGUoKTsK
LQotICAgICAgICAgICAgICAgIGlmIChzeW1ib2wpCisgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBhcmd1bWVudHMtPnNpemUoKTsgaSsrKQogICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgZW5zdXJlU3RydWN0RGVmaW5lZChzeW1ib2wtPmdl
dFR5cGUoKSk7CisgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9ICgq
YXJndW1lbnRzKVtpXS0+Z2V0QXNTeW1ib2xOb2RlKCk7CiAKLSAgICAgICAgICAgICAgICAgICAg
b3V0IDw8IGFyZ3VtZW50U3RyaW5nKHN5bWJvbCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChz
eW1ib2wpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG91
dCA8PCBhcmd1bWVudFN0cmluZyhzeW1ib2wpOwogCi0gICAgICAgICAgICAgICAgICAgIGlmIChp
IDwgYXJndW1lbnRzLT5zaXplKCkgLSAxKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBvdXQgPDwgIiwgIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChpIDwgYXJndW1lbnRzLT5zaXplKCkgLSAxKQorICAgICAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiLCAiOworICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgb3V0IDw8ICIpXG4iOworICAgICAgICAgICAgICAgIG91dCA8PCAiKTtc
biI7CiAKLSAgICAgICAgICAgIGlmIChzZXF1ZW5jZS0+c2l6ZSgpID4gMSkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBtSW5zaWRlRnVuY3Rpb24gPSB0cnVlOwotICAgICAgICAgICAg
ICAgIFRJbnRlcm1Ob2RlICpib2R5ID0gKCpzZXF1ZW5jZSlbMV07Ci0gICAgICAgICAgICAgICAg
Ly8gVGhlIGZ1bmN0aW9uIGJvZHkgbm9kZSB3aWxsIG91dHB1dCBicmFjZXMuCi0gICAgICAgICAg
ICAgICAgQVNTRVJUKElzU2VxdWVuY2UoYm9keSkpOwotICAgICAgICAgICAgICAgIGJvZHktPnRy
YXZlcnNlKHRoaXMpOwotICAgICAgICAgICAgICAgIG1JbnNpZGVGdW5jdGlvbiA9IGZhbHNlOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIG91dCA8PCAie31cbiI7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy8g
QWxzbyBwcm90b3R5cGUgdGhlIExvZDAgdmFyaWFudCBpZiBuZWVkZWQKKyAgICAgICAgICAgICAg
ICBib29sIG5lZWRzTG9kMCA9IG1BU1RNZXRhZGF0YUxpc3RbaW5kZXhdLm1OZWVkc0xvZDA7Cisg
ICAgICAgICAgICAgICAgaWYgKG5lZWRzTG9kMCAmJiAhbU91dHB1dExvZDBGdW5jdGlvbiAmJiBt
U2hhZGVyVHlwZSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBtT3V0cHV0TG9kMEZ1bmN0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+dHJhdmVyc2UodGhpcyk7CisgICAgICAgICAgICAgICAgICAgIG1PdXRw
dXRMb2QwRnVuY3Rpb24gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IG1DdXJyZW50RnVuY3Rpb25NZXRhZGF0YSA9IG51bGxwdHI7Ci0KLSAgICAgICAgICAgIGJvb2wg
bmVlZHNMb2QwID0gbUFTVE1ldGFkYXRhTGlzdFtpbmRleF0ubU5lZWRzTG9kMDsKLSAgICAgICAg
ICAgIGlmIChuZWVkc0xvZDAgJiYgIW1PdXRwdXRMb2QwRnVuY3Rpb24gJiYgbVNoYWRlclR5cGUg
PT0gR0xfRlJBR01FTlRfU0hBREVSKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEFT
U0VSVChuYW1lICE9ICJtYWluIik7Ci0gICAgICAgICAgICAgICAgbU91dHB1dExvZDBGdW5jdGlv
biA9IHRydWU7Ci0gICAgICAgICAgICAgICAgbm9kZS0+dHJhdmVyc2UodGhpcyk7Ci0gICAgICAg
ICAgICAgICAgbU91dHB1dExvZDBGdW5jdGlvbiA9IGZhbHNlOworICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BGdW5jdGlvbkNhbGw6Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BGdW5jdGlvbkNhbGw6CiAgICAgICAg
IHsKICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAqYXJndW1lbnRzID0gbm9kZS0+Z2V0U2Vx
dWVuY2UoKTsKIApAQCAtMjU2MCwxMzMgKzE2NTksMjggQEAKICAgICAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgc2l6ZV90IGluZGV4ID0gbUNhbGxEYWcuZmluZEluZGV4KG5vZGUpOwor
ICAgICAgICAgICAgICAgIHNpemVfdCBpbmRleCA9IG1DYWxsRGFnLmZpbmRJbmRleChub2RlLT5n
ZXRGdW5jdGlvblN5bWJvbEluZm8oKSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGluZGV4ICE9
IENhbGxEQUc6OkludmFsaWRJbmRleCk7CiAgICAgICAgICAgICAgICAgbG9kMCAmPSBtQVNUTWV0
YWRhdGFMaXN0W2luZGV4XS5tTmVlZHNMb2QwOwogCi0gICAgICAgICAgICAgICAgb3V0IDw8IERl
Y29yYXRlRnVuY3Rpb25JZk5lZWRlZChub2RlLT5nZXROYW1lT2JqKCkpOworICAgICAgICAgICAg
ICAgIG91dCA8PCBEZWNvcmF0ZUZ1bmN0aW9uSWZOZWVkZWQobm9kZS0+Z2V0RnVuY3Rpb25TeW1i
b2xJbmZvKCktPmdldE5hbWVPYmooKSk7CiAgICAgICAgICAgICAgICAgb3V0IDw8IERpc2FtYmln
dWF0ZUZ1bmN0aW9uTmFtZShub2RlLT5nZXRTZXF1ZW5jZSgpKTsKICAgICAgICAgICAgICAgICBv
dXQgPDwgKGxvZDAgPyAiTG9kMCgiIDogIigiKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGVsc2UgaWYgKG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5nZXROYW1lT2JqKCkuaXNJ
bnRlcm5hbCgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgcGF0aCBp
cyB1c2VkIGZvciBpbnRlcm5hbCBmdW5jdGlvbnMgdGhhdCBkb24ndCBoYXZlIHRoZWlyIGRlZmlu
aXRpb25zIGluIHRoZQorICAgICAgICAgICAgICAgIC8vIEFTVCwgc3VjaCBhcyBwcmVjaXNpb24g
ZW11bGF0aW9uIGZ1bmN0aW9ucy4KKyAgICAgICAgICAgICAgICBvdXQgPDwgRGVjb3JhdGVGdW5j
dGlvbklmTmVlZGVkKG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5nZXROYW1lT2JqKCkp
IDw8ICIoIjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBUU3RyaW5nIG5hbWUgICAgICAgICAgID0gVEZ1bmN0aW9uOjp1bm1h
bmdsZU5hbWUobm9kZS0+Z2V0TmFtZU9iaigpLmdldFN0cmluZygpKTsKKyAgICAgICAgICAgICAg
ICBUU3RyaW5nIG5hbWUgPSBURnVuY3Rpb246OnVubWFuZ2xlTmFtZShub2RlLT5nZXRGdW5jdGlv
blN5bWJvbEluZm8oKS0+Z2V0TmFtZSgpKTsKICAgICAgICAgICAgICAgICBUQmFzaWNUeXBlIHNh
bXBsZXJUeXBlID0gKCphcmd1bWVudHMpWzBdLT5nZXRBc1R5cGVkKCktPmdldFR5cGUoKS5nZXRC
YXNpY1R5cGUoKTsKLQotICAgICAgICAgICAgICAgIFRleHR1cmVGdW5jdGlvbiB0ZXh0dXJlRnVu
Y3Rpb247Ci0gICAgICAgICAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLnNhbXBsZXIgPSBzYW1wbGVy
VHlwZTsKLSAgICAgICAgICAgICAgICB0ZXh0dXJlRnVuY3Rpb24uY29vcmRzID0gKCphcmd1bWVu
dHMpWzFdLT5nZXRBc1R5cGVkKCktPmdldE5vbWluYWxTaXplKCk7Ci0gICAgICAgICAgICAgICAg
dGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9IFRleHR1cmVGdW5jdGlvbjo6SU1QTElDSVQ7Ci0gICAg
ICAgICAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLnByb2ogPSBmYWxzZTsKLSAgICAgICAgICAgICAg
ICB0ZXh0dXJlRnVuY3Rpb24ub2Zmc2V0ID0gZmFsc2U7Ci0KLSAgICAgICAgICAgICAgICBpZiAo
bmFtZSA9PSAidGV4dHVyZTJEIiB8fCBuYW1lID09ICJ0ZXh0dXJlQ3ViZSIgfHwgbmFtZSA9PSAi
dGV4dHVyZSIpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB0ZXh0dXJl
RnVuY3Rpb24ubWV0aG9kID0gVGV4dHVyZUZ1bmN0aW9uOjpJTVBMSUNJVDsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAobmFtZSA9PSAidGV4dHVyZTJEUHJvaiIg
fHwgbmFtZSA9PSAidGV4dHVyZVByb2oiKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9IFRleHR1cmVGdW5jdGlvbjo6SU1QTElD
SVQ7Ci0gICAgICAgICAgICAgICAgICAgIHRleHR1cmVGdW5jdGlvbi5wcm9qID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAobmFtZSA9PSAidGV4dHVy
ZTJETG9kIiB8fCBuYW1lID09ICJ0ZXh0dXJlQ3ViZUxvZCIgfHwgbmFtZSA9PSAidGV4dHVyZUxv
ZCIgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID09ICJ0ZXh0dXJlMkRMb2RFWFQi
IHx8IG5hbWUgPT0gInRleHR1cmVDdWJlTG9kRVhUIikKLSAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgIHRleHR1cmVGdW5jdGlvbi5tZXRob2QgPSBUZXh0dXJlRnVuY3Rpb246
OkxPRDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAobmFtZSA9
PSAidGV4dHVyZTJEUHJvakxvZCIgfHwgbmFtZSA9PSAidGV4dHVyZVByb2pMb2QiIHx8IG5hbWUg
PT0gInRleHR1cmUyRFByb2pMb2RFWFQiKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9IFRleHR1cmVGdW5jdGlvbjo6TE9EOwot
ICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlRnVuY3Rpb24ucHJvaiA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT0gInRleHR1cmVTaXpl
IikKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHRleHR1cmVGdW5jdGlv
bi5tZXRob2QgPSBUZXh0dXJlRnVuY3Rpb246OlNJWkU7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT0gInRleHR1cmVPZmZzZXQiKQotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9IFRl
eHR1cmVGdW5jdGlvbjo6SU1QTElDSVQ7Ci0gICAgICAgICAgICAgICAgICAgIHRleHR1cmVGdW5j
dGlvbi5vZmZzZXQgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBl
bHNlIGlmIChuYW1lID09ICJ0ZXh0dXJlUHJvak9mZnNldCIpCi0gICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlRnVuY3Rpb24ubWV0aG9kID0gVGV4dHVyZUZ1bmN0
aW9uOjpJTVBMSUNJVDsKLSAgICAgICAgICAgICAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLm9mZnNl
dCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIHRleHR1cmVGdW5jdGlvbi5wcm9qID0gdHJ1
ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAobmFtZSA9PSAi
dGV4dHVyZUxvZE9mZnNldCIpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICB0ZXh0dXJlRnVuY3Rpb24ubWV0aG9kID0gVGV4dHVyZUZ1bmN0aW9uOjpMT0Q7Ci0gICAgICAg
ICAgICAgICAgICAgIHRleHR1cmVGdW5jdGlvbi5vZmZzZXQgPSB0cnVlOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChuYW1lID09ICJ0ZXh0dXJlUHJvakxvZE9m
ZnNldCIpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlRnVu
Y3Rpb24ubWV0aG9kID0gVGV4dHVyZUZ1bmN0aW9uOjpMT0Q7Ci0gICAgICAgICAgICAgICAgICAg
IHRleHR1cmVGdW5jdGlvbi5wcm9qID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgdGV4dHVy
ZUZ1bmN0aW9uLm9mZnNldCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKG5hbWUgPT0gInRleGVsRmV0Y2giKQotICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9IFRleHR1cmVGdW5jdGlv
bjo6RkVUQ0g7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5h
bWUgPT0gInRleGVsRmV0Y2hPZmZzZXQiKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9IFRleHR1cmVGdW5jdGlvbjo6RkVUQ0g7
Ci0gICAgICAgICAgICAgICAgICAgIHRleHR1cmVGdW5jdGlvbi5vZmZzZXQgPSB0cnVlOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChuYW1lID09ICJ0ZXh0dXJl
R3JhZCIgfHwgbmFtZSA9PSAidGV4dHVyZTJER3JhZEVYVCIpCi0gICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlRnVuY3Rpb24ubWV0aG9kID0gVGV4dHVyZUZ1bmN0
aW9uOjpHUkFEOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChu
YW1lID09ICJ0ZXh0dXJlR3JhZE9mZnNldCIpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICB0ZXh0dXJlRnVuY3Rpb24ubWV0aG9kID0gVGV4dHVyZUZ1bmN0aW9uOjpHUkFE
OwotICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlRnVuY3Rpb24ub2Zmc2V0ID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAobmFtZSA9PSAidGV4dHVy
ZVByb2pHcmFkIiB8fCBuYW1lID09ICJ0ZXh0dXJlMkRQcm9qR3JhZEVYVCIgfHwgbmFtZSA9PSAi
dGV4dHVyZUN1YmVHcmFkRVhUIikKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgIHRleHR1cmVGdW5jdGlvbi5tZXRob2QgPSBUZXh0dXJlRnVuY3Rpb246OkdSQUQ7Ci0gICAg
ICAgICAgICAgICAgICAgIHRleHR1cmVGdW5jdGlvbi5wcm9qID0gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAobmFtZSA9PSAidGV4dHVyZVByb2pHcmFk
T2Zmc2V0IikKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHRleHR1cmVG
dW5jdGlvbi5tZXRob2QgPSBUZXh0dXJlRnVuY3Rpb246OkdSQUQ7Ci0gICAgICAgICAgICAgICAg
ICAgIHRleHR1cmVGdW5jdGlvbi5wcm9qID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgdGV4
dHVyZUZ1bmN0aW9uLm9mZnNldCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKLQotICAgICAgICAgICAgICAgIGlmICh0ZXh0dXJl
RnVuY3Rpb24ubWV0aG9kID09IFRleHR1cmVGdW5jdGlvbjo6SU1QTElDSVQpICAgLy8gQ291bGQg
cmVxdWlyZSBsb2QgMCBvciBoYXZlIGEgYmlhcyBhcmd1bWVudAotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG1hbmRhdG9yeUFyZ3VtZW50Q291bnQg
PSAyOyAgIC8vIEFsbCBmdW5jdGlvbnMgaGF2ZSBzYW1wbGVyIGFuZCBjb29yZGluYXRlIGFyZ3Vt
ZW50cwotCi0gICAgICAgICAgICAgICAgICAgIGlmICh0ZXh0dXJlRnVuY3Rpb24ub2Zmc2V0KQot
ICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYW5kYXRvcnlB
cmd1bWVudENvdW50Kys7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
ICAgICBib29sIGJpYXMgPSAoYXJndW1lbnRzLT5zaXplKCkgPiBtYW5kYXRvcnlBcmd1bWVudENv
dW50KTsgICAvLyBCaWFzIGFyZ3VtZW50IGlzIG9wdGlvbmFsCi0KLSAgICAgICAgICAgICAgICAg
ICAgaWYgKGxvZDAgfHwgbVNoYWRlclR5cGUgPT0gR0xfVkVSVEVYX1NIQURFUikKLSAgICAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJpYXMpCi0gICAgICAg
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZUZ1
bmN0aW9uLm1ldGhvZCA9IFRleHR1cmVGdW5jdGlvbjo6TE9EMEJJQVM7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZUZ1bmN0aW9u
Lm1ldGhvZCA9IFRleHR1cmVGdW5jdGlvbjo6TE9EMDsKLSAgICAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChi
aWFzKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0
dXJlRnVuY3Rpb24ubWV0aG9kID0gVGV4dHVyZUZ1bmN0aW9uOjpCSUFTOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgbVVzZXNUZXh0
dXJlLmluc2VydCh0ZXh0dXJlRnVuY3Rpb24pOwotCi0gICAgICAgICAgICAgICAgb3V0IDw8IHRl
eHR1cmVGdW5jdGlvbi5uYW1lKCk7CisgICAgICAgICAgICAgICAgaW50IGNvb3JkcyAgICAgICAg
ICAgICAgICAgID0gKCphcmd1bWVudHMpWzFdLT5nZXRBc1R5cGVkKCktPmdldE5vbWluYWxTaXpl
KCk7CisgICAgICAgICAgICAgICAgVFN0cmluZyB0ZXh0dXJlRnVuY3Rpb25OYW1lID0gbVRleHR1
cmVGdW5jdGlvbkhMU0wtPnVzZVRleHR1cmVGdW5jdGlvbigKKyAgICAgICAgICAgICAgICAgICAg
bmFtZSwgc2FtcGxlclR5cGUsIGNvb3JkcywgYXJndW1lbnRzLT5zaXplKCksIGxvZDAsIG1TaGFk
ZXJUeXBlKTsKKyAgICAgICAgICAgICAgICBvdXQgPDwgdGV4dHVyZUZ1bmN0aW9uTmFtZSA8PCAi
KCI7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZvciAoVEludGVybVNlcXVlbmNlOjpp
dGVyYXRvciBhcmcgPSBhcmd1bWVudHMtPmJlZ2luKCk7IGFyZyAhPSBhcmd1bWVudHMtPmVuZCgp
OyBhcmcrKykKQEAgLTI3MDcsNyArMTcwMSw3IEBACiAgICAgICAgICAgICAgICAgICAgIFRWZWN0
b3I8VEludGVybVN5bWJvbCAqPiBzYW1wbGVyU3ltYm9sczsKICAgICAgICAgICAgICAgICAgICAg
VFN0cmluZyBzdHJ1Y3ROYW1lID0gc2FtcGxlck5hbWVQcmVmaXhGcm9tU3RydWN0KHR5cGVkQXJn
KTsKICAgICAgICAgICAgICAgICAgICAgYXJnVHlwZS5jcmVhdGVTYW1wbGVyU3ltYm9scygiYW5n
bGVfIiArIHN0cnVjdE5hbWUsICIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFyZ1R5cGUuaXNBcnJheSgpID8gYXJnVHlwZS5nZXRBcnJheVNpemUo
KSA6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXJnVHlwZS5pc0FycmF5KCkgPyBhcmdUeXBlLmdldEFycmF5U2l6ZSgpIDogMHUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNhbXBsZXJTeW1ib2xz
LCBudWxscHRyKTsKICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBUSW50ZXJtU3ltYm9s
ICpzYW1wbGVyIDogc2FtcGxlclN5bWJvbHMpCiAgICAgICAgICAgICAgICAgICAgIHsKQEAgLTI3
MzUsNyArMTcyOSw2IEBACiAKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQot
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBFT3BQYXJhbWV0ZXJzOgogICAgICAgICAgICAg
b3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIsICIsICIpXG57XG4iKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMjgxNCw3ICsxODA3LDcgQEAKICAgICAgICAgY2FzZSBFT3BDb25zdHJ1
Y3RNYXQ0OgogICAgICAgICAgICAgb3V0cHV0Q29uc3RydWN0b3Iob3V0LCB2aXNpdCwgbm9kZS0+
Z2V0VHlwZSgpLCAibWF0NCIsIG5vZGUtPmdldFNlcXVlbmNlKCkpOwogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdFN0cnVjdDoKKyAgICAgICAgY2FzZSBFT3BDb25z
dHJ1Y3RTdHJ1Y3Q6CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChub2RlLT5nZXRUeXBlKCku
aXNBcnJheSgpKQogICAgICAgICAgICAgewpAQCAtMjg0MywzMSArMTgzNiwzMSBAQAogICAgICAg
ICBjYXNlIEVPcFZlY3Rvck5vdEVxdWFsOgogICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQs
IHZpc2l0LCAiKCIsICIgIT0gIiwgIikiKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBFT3BNb2Q6Ci0gICAgICAgIEFTU0VSVChub2RlLT5nZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkp
OwotICAgICAgICB3cml0ZUVtdWxhdGVkRnVuY3Rpb25UcmlwbGV0KG91dCwgdmlzaXQsICJtb2Qo
Iik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BNb2RmOgotICAgICAgICAgIG91dHB1
dFRyaXBsZXQob3V0LCB2aXNpdCwgIm1vZGYoIiwgIiwgIiwgIikiKTsKLSAgICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgRU9wUG93OgotICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNp
dCwgInBvdygiLCAiLCAiLCAiKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BB
dGFuOgotICAgICAgICBBU1NFUlQobm9kZS0+Z2V0U2VxdWVuY2UoKS0+c2l6ZSgpID09IDIpOyAg
IC8vIGF0YW4oeCkgaXMgYSB1bmFyeSBvcGVyYXRvcgotICAgICAgICBBU1NFUlQobm9kZS0+Z2V0
VXNlRW11bGF0ZWRGdW5jdGlvbigpKTsKLSAgICAgICAgd3JpdGVFbXVsYXRlZEZ1bmN0aW9uVHJp
cGxldChvdXQsIHZpc2l0LCAiYXRhbigiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVP
cE1pbjoKLSAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJtaW4oIiwgIiwgIiwg
IikiKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wTWF4OgotICAgICAgICAgIG91
dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIm1heCgiLCAiLCAiLCAiKSIpOwotICAgICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBFT3BDbGFtcDoKLSAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwg
dmlzaXQsICJjbGFtcCgiLCAiLCAiLCAiKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBFT3BNaXg6CisgICAgICAgIGNhc2UgRU9wTW9kOgorICAgICAgICAgICAgQVNTRVJUKG5vZGUt
PmdldFVzZUVtdWxhdGVkRnVuY3Rpb24oKSk7CisgICAgICAgICAgICB3cml0ZUVtdWxhdGVkRnVu
Y3Rpb25UcmlwbGV0KG91dCwgdmlzaXQsICJtb2QoIik7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBFT3BNb2RmOgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0
LCAibW9kZigiLCAiLCAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
RU9wUG93OgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAicG93KCIsICIs
ICIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BBdGFuOgorICAg
ICAgICAgICAgQVNTRVJUKG5vZGUtPmdldFNlcXVlbmNlKCktPnNpemUoKSA9PSAyKTsgIC8vIGF0
YW4oeCkgaXMgYSB1bmFyeSBvcGVyYXRvcgorICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmdldFVz
ZUVtdWxhdGVkRnVuY3Rpb24oKSk7CisgICAgICAgICAgICB3cml0ZUVtdWxhdGVkRnVuY3Rpb25U
cmlwbGV0KG91dCwgdmlzaXQsICJhdGFuKCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRU9wTWluOgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAibWlu
KCIsICIsICIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BNYXg6
CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJtYXgoIiwgIiwgIiwgIiki
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcENsYW1wOgorICAgICAgICAg
ICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiY2xhbXAoIiwgIiwgIiwgIikiKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcE1peDoKICAgICAgICAgewogICAgICAgICAg
ICAgVEludGVybVR5cGVkICpsYXN0UGFyYW1Ob2RlID0gKCoobm9kZS0+Z2V0U2VxdWVuY2UoKSkp
WzJdLT5nZXRBc1R5cGVkKCk7CiAgICAgICAgICAgICBpZiAobGFzdFBhcmFtTm9kZS0+Z2V0VHlw
ZSgpLmdldEJhc2ljVHlwZSgpID09IEVidEJvb2wpCkBAIC0yODgxLDggKzE4NzQsOCBAQAogICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgImxl
cnAoIiwgIiwgIiwgIikiKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9Ci0gICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEVPcFN0ZXA6CiAgICAgICAgICAg
ICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJzdGVwKCIsICIsICIsICIpIik7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTI4OTgsMzAgKzE4OTEsMzEgQEAKICAgICAgICAgY2FzZSBFT3BDcm9z
czoKICAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgImNyb3NzKCIsICIsICIs
ICIpIik7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wRmFjZUZvcndhcmQ6Ci0g
ICAgICAgIEFTU0VSVChub2RlLT5nZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkpOwotICAgICAgICB3
cml0ZUVtdWxhdGVkRnVuY3Rpb25UcmlwbGV0KG91dCwgdmlzaXQsICJmYWNlZm9yd2FyZCgiKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFJlZmxlY3Q6Ci0gICAgICAgICAgb3V0cHV0
VHJpcGxldChvdXQsIHZpc2l0LCAicmVmbGVjdCgiLCAiLCAiLCAiKSIpOwotICAgICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBFT3BSZWZyYWN0OgotICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0
LCB2aXNpdCwgInJlZnJhY3QoIiwgIiwgIiwgIikiKTsKLSAgICAgICAgICBicmVhazsKLSAgICAg
IGNhc2UgRU9wT3V0ZXJQcm9kdWN0OgotICAgICAgICBBU1NFUlQobm9kZS0+Z2V0VXNlRW11bGF0
ZWRGdW5jdGlvbigpKTsKLSAgICAgICAgd3JpdGVFbXVsYXRlZEZ1bmN0aW9uVHJpcGxldChvdXQs
IHZpc2l0LCAib3V0ZXJQcm9kdWN0KCIpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9w
TXVsOgotICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiICogIiwgIiki
KTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAg
ICAgIGNhc2UgRU9wRmFjZUZvcndhcmQ6CisgICAgICAgICAgICBBU1NFUlQobm9kZS0+Z2V0VXNl
RW11bGF0ZWRGdW5jdGlvbigpKTsKKyAgICAgICAgICAgIHdyaXRlRW11bGF0ZWRGdW5jdGlvblRy
aXBsZXQob3V0LCB2aXNpdCwgImZhY2Vmb3J3YXJkKCIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgRU9wUmVmbGVjdDoKKyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2
aXNpdCwgInJlZmxlY3QoIiwgIiwgIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEVPcFJlZnJhY3Q6CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQs
ICJyZWZyYWN0KCIsICIsICIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBFT3BPdXRlclByb2R1Y3Q6CisgICAgICAgICAgICBBU1NFUlQobm9kZS0+Z2V0VXNlRW11bGF0
ZWRGdW5jdGlvbigpKTsKKyAgICAgICAgICAgIHdyaXRlRW11bGF0ZWRGdW5jdGlvblRyaXBsZXQo
b3V0LCB2aXNpdCwgIm91dGVyUHJvZHVjdCgiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEVPcE11bDoKKyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigi
LCAiICogIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBPdXRwdXRITFNMOjp3cml0ZVNlbGVjdGlvbihUSW5mb1NpbmtCYXNlICZvdXQsIFRJbnRl
cm1TZWxlY3Rpb24gKm5vZGUpCit2b2lkIE91dHB1dEhMU0w6OndyaXRlSWZFbHNlKFRJbmZvU2lu
a0Jhc2UgJm91dCwgVEludGVybUlmRWxzZSAqbm9kZSkKIHsKICAgICBvdXQgPDwgImlmICgiOwog
CkBAIC0yOTM2LDggKzE5MzAsNiBAQAogICAgIGlmIChub2RlLT5nZXRUcnVlQmxvY2soKSkKICAg
ICB7CiAgICAgICAgIC8vIFRoZSB0cnVlQmxvY2sgY2hpbGQgbm9kZSB3aWxsIG91dHB1dCBicmFj
ZXMuCi0gICAgICAgIEFTU0VSVChJc1NlcXVlbmNlKG5vZGUtPmdldFRydWVCbG9jaygpKSk7Ci0K
ICAgICAgICAgbm9kZS0+Z2V0VHJ1ZUJsb2NrKCktPnRyYXZlcnNlKHRoaXMpOwogCiAgICAgICAg
IC8vIERldGVjdCB0cnVlIGRpc2NhcmQKQEAgLTI5NTgsOSArMTk1MCw3IEBACiAKICAgICAgICAg
b3V0cHV0TGluZURpcmVjdGl2ZShvdXQsIG5vZGUtPmdldEZhbHNlQmxvY2soKS0+Z2V0TGluZSgp
LmZpcnN0X2xpbmUpOwogCi0gICAgICAgIC8vIEVpdGhlciB0aGlzIGlzICJlbHNlIGlmIiBvciB0
aGUgZmFsc2VCbG9jayBjaGlsZCBub2RlIHdpbGwgb3V0cHV0IGJyYWNlcy4KLSAgICAgICAgQVNT
RVJUKElzU2VxdWVuY2Uobm9kZS0+Z2V0RmFsc2VCbG9jaygpKSB8fCBub2RlLT5nZXRGYWxzZUJs
b2NrKCktPmdldEFzU2VsZWN0aW9uTm9kZSgpICE9IG51bGxwdHIpOwotCisgICAgICAgIC8vIFRo
ZSBmYWxzZUJsb2NrIGNoaWxkIG5vZGUgd2lsbCBvdXRwdXQgYnJhY2VzLgogICAgICAgICBub2Rl
LT5nZXRGYWxzZUJsb2NrKCktPnRyYXZlcnNlKHRoaXMpOwogCiAgICAgICAgIG91dHB1dExpbmVE
aXJlY3RpdmUob3V0LCBub2RlLT5nZXRGYWxzZUJsb2NrKCktPmdldExpbmUoKS5maXJzdF9saW5l
KTsKQEAgLTI5NzYsMTEgKzE5NjYsMTggQEAKICAgICB9CiB9CiAKLWJvb2wgT3V0cHV0SExTTDo6
dmlzaXRTZWxlY3Rpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1TZWxlY3Rpb24gKm5vZGUpCitib29s
IE91dHB1dEhMU0w6OnZpc2l0VGVybmFyeShWaXNpdCwgVEludGVybVRlcm5hcnkgKikKIHsKKyAg
ICAvLyBUZXJuYXJ5IG9wcyBzaG91bGQgaGF2ZSBiZWVuIGFscmVhZHkgY29udmVydGVkIHRvIHNv
bWV0aGluZyBlbHNlIGluIHRoZSBBU1QuIEhMU0wgdGVybmFyeQorICAgIC8vIG9wZXJhdG9yIGRv
ZXNuJ3Qgc2hvcnQtY2lyY3VpdCwgc28gaXQncyBub3QgdGhlIHNhbWUgYXMgdGhlIEdMU0wgdGVy
bmFyeSBvcGVyYXRvci4KKyAgICBVTlJFQUNIQUJMRSgpOworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBPdXRwdXRITFNMOjp2aXNpdElmRWxzZShWaXNpdCB2aXNpdCwgVEludGVybUlmRWxz
ZSAqbm9kZSkKK3sKICAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBnZXRJbmZvU2luaygpOwogCi0g
ICAgQVNTRVJUKCFub2RlLT51c2VzVGVybmFyeU9wZXJhdG9yKCkpOwogICAgIEFTU0VSVChtSW5z
aWRlRnVuY3Rpb24pOwogCiAgICAgLy8gRDNEIGVycm9ycyB3aGVuIHRoZXJlIGlzIGEgZ3JhZGll
bnQgb3BlcmF0aW9uIGluIGEgbG9vcCBpbiBhbiB1bmZsYXR0ZW5lZCBpZi4KQEAgLTI5ODksNyAr
MTk4Niw3IEBACiAgICAgICAgIG91dCA8PCAiRkxBVFRFTiAiOwogICAgIH0KIAotICAgIHdyaXRl
U2VsZWN0aW9uKG91dCwgbm9kZSk7CisgICAgd3JpdGVJZkVsc2Uob3V0LCBub2RlKTsKIAogICAg
IHJldHVybiBmYWxzZTsKIH0KQEAgLTMwOTMsNyArMjA5MCw2IEBACiAgICAgaWYgKG5vZGUtPmdl
dEJvZHkoKSkKICAgICB7CiAgICAgICAgIC8vIFRoZSBsb29wIGJvZHkgbm9kZSB3aWxsIG91dHB1
dCBicmFjZXMuCi0gICAgICAgIEFTU0VSVChJc1NlcXVlbmNlKG5vZGUtPmdldEJvZHkoKSkpOwog
ICAgICAgICBub2RlLT5nZXRCb2R5KCktPnRyYXZlcnNlKHRoaXMpOwogICAgIH0KICAgICBlbHNl
CkBAIC0zMTgzLDE2ICsyMTc5LDE2IEBACiAKIGJvb2wgT3V0cHV0SExTTDo6aXNTaW5nbGVTdGF0
ZW1lbnQoVEludGVybU5vZGUgKm5vZGUpCiB7CisgICAgaWYgKG5vZGUtPmdldEFzQmxvY2soKSkK
KyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICBUSW50ZXJtQWdncmVn
YXRlICphZ2dyZWdhdGUgPSBub2RlLT5nZXRBc0FnZ3JlZ2F0ZSgpOwotCiAgICAgaWYgKGFnZ3Jl
Z2F0ZSkKICAgICB7Ci0gICAgICAgIGlmIChhZ2dyZWdhdGUtPmdldE9wKCkgPT0gRU9wU2VxdWVu
Y2UpCisgICAgICAgIGlmIChhZ2dyZWdhdGUtPmdldE9wKCkgPT0gRU9wRGVjbGFyYXRpb24pCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBl
bHNlIGlmIChhZ2dyZWdhdGUtPmdldE9wKCkgPT0gRU9wRGVjbGFyYXRpb24pCi0gICAgICAgIHsK
ICAgICAgICAgICAgIC8vIERlY2xhcmluZyBtdWx0aXBsZSBjb21tYS1zZXBhcmF0ZWQgdmFyaWFi
bGVzIG11c3QgYmUgY29uc2lkZXJlZCBtdWx0aXBsZSBzdGF0ZW1lbnRzCiAgICAgICAgICAgICAv
LyBiZWNhdXNlIGVhY2ggaW5kaXZpZHVhbCBkZWNsYXJhdGlvbiBoYXMgc2lkZSBlZmZlY3RzIHdo
aWNoIGFyZSB2aXNpYmxlIGluIHRoZSBuZXh0LgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMzQ5OCw3ICsyNDk0LDcgQEAKICAgICB7CiAgICAgICAgIEFTU0VSVChxdWFsaWZpZXIgIT0g
RXZxT3V0ICYmIHF1YWxpZmllciAhPSBFdnFJbk91dCk7CiAgICAgICAgIFRWZWN0b3I8VEludGVy
bVN5bWJvbCAqPiBzYW1wbGVyU3ltYm9sczsKLSAgICAgICAgdHlwZS5jcmVhdGVTYW1wbGVyU3lt
Ym9scygiYW5nbGUiICsgbmFtZVN0ciwgIiIsIDAsICZzYW1wbGVyU3ltYm9scywgbnVsbHB0cik7
CisgICAgICAgIHR5cGUuY3JlYXRlU2FtcGxlclN5bWJvbHMoImFuZ2xlIiArIG5hbWVTdHIsICIi
LCAwdSwgJnNhbXBsZXJTeW1ib2xzLCBudWxscHRyKTsKICAgICAgICAgZm9yIChjb25zdCBUSW50
ZXJtU3ltYm9sICpzYW1wbGVyIDogc2FtcGxlclN5bWJvbHMpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMXzRfMV9PVVRQVVQpCkBAIC0zNjU0LDIyICsy
NjUwLDggQEAKIHsKICAgICAvLyBXZSBzdXBwb3J0IHdyaXRpbmcgY29uc3RhbnQgdW5pb25zIGFu
ZCBjb25zdHJ1Y3RvcnMgdGhhdCBvbmx5IHRha2UgY29uc3RhbnQgdW5pb25zIGFzCiAgICAgLy8g
cGFyYW1ldGVycyBhcyBITFNMIGxpdGVyYWxzLgotICAgIGlmIChleHByZXNzaW9uLT5nZXRBc0Nv
bnN0YW50VW5pb24oKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBp
ZiAoZXhwcmVzc2lvbi0+Z2V0UXVhbGlmaWVyKCkgIT0gRXZxQ29uc3QgfHwgIWV4cHJlc3Npb24t
PmdldEFzQWdncmVnYXRlKCkgfHwKLSAgICAgICAgIWV4cHJlc3Npb24tPmdldEFzQWdncmVnYXRl
KCktPmlzQ29uc3RydWN0b3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSAqY29uc3RydWN0b3IgPSBleHByZXNzaW9uLT5nZXRBc0Fn
Z3JlZ2F0ZSgpOwotICAgIGZvciAoVEludGVybU5vZGUgKiZub2RlIDogKmNvbnN0cnVjdG9yLT5n
ZXRTZXF1ZW5jZSgpKQotICAgIHsKLSAgICAgICAgaWYgKCFub2RlLT5nZXRBc0NvbnN0YW50VW5p
b24oKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7
CisgICAgcmV0dXJuIGV4cHJlc3Npb24tPmdldEFzQ29uc3RhbnRVbmlvbigpIHx8CisgICAgICAg
ICAgIGV4cHJlc3Npb24tPmlzQ29uc3RydWN0b3JXaXRoT25seUNvbnN0YW50VW5pb25QYXJhbWV0
ZXJzKCk7CiB9CiAKIGJvb2wgT3V0cHV0SExTTDo6d3JpdGVDb25zdGFudEluaXRpYWxpemF0aW9u
KFRJbmZvU2lua0Jhc2UgJm91dCwKQEAgLTM4ODAsNyArMjg2Miw3IEBACiAKICAgICBmbk91dCA8
PCAidm9pZCAiIDw8IGZ1bmN0aW9uLmZ1bmN0aW9uTmFtZSA8PCAiKG91dCAiCiAgICAgICAgICAg
PDwgdHlwZU5hbWUgPDwgIiBhWyIgPDwgdHlwZS5nZXRBcnJheVNpemUoKSA8PCAiXSI7Ci0gICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCB0eXBlLmdldEFycmF5U2l6ZSgpOyArK2kpCisgICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDB1OyBpIDwgdHlwZS5nZXRBcnJheVNpemUoKTsgKytpKQogICAgIHsK
ICAgICAgICAgZm5PdXQgPDwgIiwgIiA8PCB0eXBlTmFtZSA8PCAiIGIiIDw8IGk7CiAgICAgfQpA
QCAtMzg4Nyw3ICsyODY5LDcgQEAKICAgICBmbk91dCA8PCAiKVxuIgogICAgICAgICAgICAgICJ7
XG4iOwogCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0eXBlLmdldEFycmF5U2l6ZSgpOyArK2kp
CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDB1OyBpIDwgdHlwZS5nZXRBcnJheVNpemUoKTsg
KytpKQogICAgIHsKICAgICAgICAgZm5PdXQgPDwgIiAgICBhWyIgPDwgaSA8PCAiXSA9IGIiIDw8
IGkgPDwgIjtcbiI7CiAgICAgfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0SExTTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dEhMU0wuaAkocmV2aXNp
b24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvT3V0cHV0SExTTC5oCSh3b3JraW5nIGNvcHkpCkBAIC04LDcgKzgsNiBAQAogI2RlZmlu
ZSBDT01QSUxFUl9UUkFOU0xBVE9SX09VVFBVVEhMU0xfSF8KIAogI2luY2x1ZGUgPGxpc3Q+Ci0j
aW5jbHVkZSA8c2V0PgogI2luY2x1ZGUgPG1hcD4KICNpbmNsdWRlIDxzdGFjaz4KIApAQCAtMjEs
OCArMjAsOSBAQAogCiBuYW1lc3BhY2Ugc2gKIHsKK2NsYXNzIFN0cnVjdHVyZUhMU0w7CitjbGFz
cyBUZXh0dXJlRnVuY3Rpb25ITFNMOwogY2xhc3MgVW5mb2xkU2hvcnRDaXJjdWl0OwotY2xhc3Mg
U3RydWN0dXJlSExTTDsKIGNsYXNzIFVuaWZvcm1ITFNMOwogCiB0eXBlZGVmIHN0ZDo6bWFwPFRT
dHJpbmcsIFRJbnRlcm1TeW1ib2wqPiBSZWZlcmVuY2VkU3ltYm9sczsKQEAgLTMwLDExICszMCwx
NCBAQAogY2xhc3MgT3V0cHV0SExTTCA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiB7CiAgIHB1
YmxpYzoKLSAgICBPdXRwdXRITFNMKHNoOjpHTGVudW0gc2hhZGVyVHlwZSwgaW50IHNoYWRlclZl
cnNpb24sCi0gICAgICAgIGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciAmZXh0ZW5zaW9uQmVoYXZp
b3IsCi0gICAgICAgIGNvbnN0IGNoYXIgKnNvdXJjZVBhdGgsIFNoU2hhZGVyT3V0cHV0IG91dHB1
dFR5cGUsCi0gICAgICAgIGludCBudW1SZW5kZXJUYXJnZXRzLCBjb25zdCBzdGQ6OnZlY3RvcjxV
bmlmb3JtPiAmdW5pZm9ybXMsCi0gICAgICAgIGludCBjb21waWxlT3B0aW9ucyk7CisgICAgT3V0
cHV0SExTTChzaDo6R0xlbnVtIHNoYWRlclR5cGUsCisgICAgICAgICAgICAgICBpbnQgc2hhZGVy
VmVyc2lvbiwKKyAgICAgICAgICAgICAgIGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciAmZXh0ZW5z
aW9uQmVoYXZpb3IsCisgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzb3VyY2VQYXRoLAorICAg
ICAgICAgICAgICAgU2hTaGFkZXJPdXRwdXQgb3V0cHV0VHlwZSwKKyAgICAgICAgICAgICAgIGlu
dCBudW1SZW5kZXJUYXJnZXRzLAorICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8VW5p
Zm9ybT4gJnVuaWZvcm1zLAorICAgICAgICAgICAgICAgU2hDb21waWxlT3B0aW9ucyBjb21waWxl
T3B0aW9ucyk7CiAKICAgICB+T3V0cHV0SExTTCgpOwogCkBAIC01MywxNyArNTYsMjEgQEAKICAg
ICB2b2lkIGhlYWRlcihUSW5mb1NpbmtCYXNlICZvdXQsIGNvbnN0IEJ1aWx0SW5GdW5jdGlvbkVt
dWxhdG9yICpidWlsdEluRnVuY3Rpb25FbXVsYXRvcik7CiAKICAgICAvLyBWaXNpdCBBU1Qgbm9k
ZXMgYW5kIG91dHB1dCB0aGVpciBjb2RlIHRvIHRoZSBib2R5IHN0cmVhbQotICAgIHZvaWQgdmlz
aXRTeW1ib2woVEludGVybVN5bWJvbCopOwotICAgIHZvaWQgdmlzaXRSYXcoVEludGVybVJhdyop
OwotICAgIHZvaWQgdmlzaXRDb25zdGFudFVuaW9uKFRJbnRlcm1Db25zdGFudFVuaW9uKik7Ci0g
ICAgYm9vbCB2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSopOwotICAgIGJv
b2wgdmlzaXRVbmFyeShWaXNpdCB2aXNpdCwgVEludGVybVVuYXJ5Kik7Ci0gICAgYm9vbCB2aXNp
dFNlbGVjdGlvbihWaXNpdCB2aXNpdCwgVEludGVybVNlbGVjdGlvbiopOwotICAgIGJvb2wgdmlz
aXRTd2l0Y2goVmlzaXQgdmlzaXQsIFRJbnRlcm1Td2l0Y2ggKik7Ci0gICAgYm9vbCB2aXNpdENh
c2UoVmlzaXQgdmlzaXQsIFRJbnRlcm1DYXNlICopOwotICAgIGJvb2wgdmlzaXRBZ2dyZWdhdGUo
VmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUqKTsKLSAgICBib29sIHZpc2l0TG9vcChWaXNp
dCB2aXNpdCwgVEludGVybUxvb3AqKTsKLSAgICBib29sIHZpc2l0QnJhbmNoKFZpc2l0IHZpc2l0
LCBUSW50ZXJtQnJhbmNoKik7CisgICAgdm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sKikg
b3ZlcnJpZGU7CisgICAgdm9pZCB2aXNpdFJhdyhUSW50ZXJtUmF3Kikgb3ZlcnJpZGU7CisgICAg
dm9pZCB2aXNpdENvbnN0YW50VW5pb24oVEludGVybUNvbnN0YW50VW5pb24qKSBvdmVycmlkZTsK
KyAgICBib29sIHZpc2l0U3dpenpsZShWaXNpdCB2aXNpdCwgVEludGVybVN3aXp6bGUgKm5vZGUp
IG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5h
cnkqKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0VW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1V
bmFyeSopIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRUZXJuYXJ5KFZpc2l0IHZpc2l0LCBUSW50
ZXJtVGVybmFyeSAqKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0SWZFbHNlKFZpc2l0IHZpc2l0
LCBUSW50ZXJtSWZFbHNlICopIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRTd2l0Y2goVmlzaXQg
dmlzaXQsIFRJbnRlcm1Td2l0Y2ggKikgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdENhc2UoVmlz
aXQgdmlzaXQsIFRJbnRlcm1DYXNlICopIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRGdW5jdGlv
bkRlZmluaXRpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKm5vZGUp
IG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1B
Z2dyZWdhdGUqKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0QmxvY2soVmlzaXQgdmlzaXQsIFRJ
bnRlcm1CbG9jayAqbm9kZSkgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdExvb3AoVmlzaXQgdmlz
aXQsIFRJbnRlcm1Mb29wKikgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdEJyYW5jaChWaXNpdCB2
aXNpdCwgVEludGVybUJyYW5jaCopIG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc1NpbmdsZVN0YXRl
bWVudChUSW50ZXJtTm9kZSAqbm9kZSk7CiAgICAgYm9vbCBoYW5kbGVFeGNlc3NpdmVMb29wKFRJ
bmZvU2lua0Jhc2UgJm91dCwgVEludGVybUxvb3AgKm5vZGUpOwpAQCAtMTAxLDcgKzEwOCw3IEBA
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpleHBy
ZXNzaW9uKTsKIAogICAgIHZvaWQgd3JpdGVEZWZlcnJlZEdsb2JhbEluaXRpYWxpemVycyhUSW5m
b1NpbmtCYXNlICZvdXQpOwotICAgIHZvaWQgd3JpdGVTZWxlY3Rpb24oVEluZm9TaW5rQmFzZSAm
b3V0LCBUSW50ZXJtU2VsZWN0aW9uICpub2RlKTsKKyAgICB2b2lkIHdyaXRlSWZFbHNlKFRJbmZv
U2lua0Jhc2UgJm91dCwgVEludGVybUlmRWxzZSAqbm9kZSk7CiAKICAgICAvLyBSZXR1cm5zIHRo
ZSBmdW5jdGlvbiBuYW1lCiAgICAgVFN0cmluZyBhZGRTdHJ1Y3RFcXVhbGl0eUZ1bmN0aW9uKGNv
bnN0IFRTdHJ1Y3R1cmUgJnN0cnVjdHVyZSk7CkBAIC0xMTcsNyArMTI0LDcgQEAKICAgICBjb25z
dCBURXh0ZW5zaW9uQmVoYXZpb3IgJm1FeHRlbnNpb25CZWhhdmlvcjsKICAgICBjb25zdCBjaGFy
ICptU291cmNlUGF0aDsKICAgICBjb25zdCBTaFNoYWRlck91dHB1dCBtT3V0cHV0VHlwZTsKLSAg
ICBpbnQgbUNvbXBpbGVPcHRpb25zOworICAgIFNoQ29tcGlsZU9wdGlvbnMgbUNvbXBpbGVPcHRp
b25zOwogCiAgICAgYm9vbCBtSW5zaWRlRnVuY3Rpb247CiAKQEAgLTEzOSwzNiArMTQ2LDkgQEAK
IAogICAgIFN0cnVjdHVyZUhMU0wgKm1TdHJ1Y3R1cmVITFNMOwogICAgIFVuaWZvcm1ITFNMICpt
VW5pZm9ybUhMU0w7CisgICAgVGV4dHVyZUZ1bmN0aW9uSExTTCAqbVRleHR1cmVGdW5jdGlvbkhM
U0w7CiAKLSAgICBzdHJ1Y3QgVGV4dHVyZUZ1bmN0aW9uCi0gICAgewotICAgICAgICBlbnVtIE1l
dGhvZAotICAgICAgICB7Ci0gICAgICAgICAgICBJTVBMSUNJVCwgICAvLyBNaXBtYXAgTE9EIGRl
dGVybWluZWQgaW1wbGljaXRseSAoc3RhbmRhcmQgbG9va3VwKQotICAgICAgICAgICAgQklBUywK
LSAgICAgICAgICAgIExPRCwKLSAgICAgICAgICAgIExPRDAsCi0gICAgICAgICAgICBMT0QwQklB
UywKLSAgICAgICAgICAgIFNJWkUsICAgLy8gdGV4dHVyZVNpemUoKQotICAgICAgICAgICAgRkVU
Q0gsCi0gICAgICAgICAgICBHUkFECi0gICAgICAgIH07Ci0KLSAgICAgICAgVEJhc2ljVHlwZSBz
YW1wbGVyOwotICAgICAgICBpbnQgY29vcmRzOwotICAgICAgICBib29sIHByb2o7Ci0gICAgICAg
IGJvb2wgb2Zmc2V0OwotICAgICAgICBNZXRob2QgbWV0aG9kOwotCi0gICAgICAgIFRTdHJpbmcg
bmFtZSgpIGNvbnN0OwotCi0gICAgICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFRleHR1cmVGdW5j
dGlvbiAmcmhzKSBjb25zdDsKLSAgICB9OwotCi0gICAgdHlwZWRlZiBzdGQ6OnNldDxUZXh0dXJl
RnVuY3Rpb24+IFRleHR1cmVGdW5jdGlvblNldDsKLQogICAgIC8vIFBhcmFtZXRlcnMgZGV0ZXJt
aW5pbmcgd2hhdCBnb2VzIGluIHRoZSBoZWFkZXIgb3V0cHV0Ci0gICAgVGV4dHVyZUZ1bmN0aW9u
U2V0IG1Vc2VzVGV4dHVyZTsKICAgICBib29sIG1Vc2VzRnJhZ0NvbG9yOwogICAgIGJvb2wgbVVz
ZXNGcmFnRGF0YTsKICAgICBib29sIG1Vc2VzRGVwdGhSYW5nZTsKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1BhcnNlQ29udGV4dC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvUGFyc2VDb250ZXh0LmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUGFyc2VDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTMyLDEyICsxMzIsNiBAQAogLy8KIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCi0vLwot
Ly8gVHJhY2sgd2hldGhlciBlcnJvcnMgaGF2ZSBvY2N1cnJlZC4KLS8vCi12b2lkIFRQYXJzZUNv
bnRleHQ6OnJlY292ZXIoKQotewotfQogCiAvLwogLy8gVXNlZCBieSBmbGV4L2Jpc29uIHRvIG91
dHB1dCBhbGwgc3ludGF4IGFuZCBwYXJzaW5nIGVycm9ycy4KQEAgLTE0NywxMCArMTQxLDcgQEAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9rZW4sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmV4dHJhSW5mbykKIHsKLSAgICBwcDo6U291cmNl
TG9jYXRpb24gc3JjTG9jOwotICAgIHNyY0xvYy5maWxlID0gbG9jLmZpcnN0X2ZpbGU7Ci0gICAg
c3JjTG9jLmxpbmUgPSBsb2MuZmlyc3RfbGluZTsKLSAgICBtRGlhZ25vc3RpY3Mud3JpdGVJbmZv
KHBwOjpEaWFnbm9zdGljczo6UFBfRVJST1IsIHNyY0xvYywgcmVhc29uLCB0b2tlbiwgZXh0cmFJ
bmZvKTsKKyAgICBtRGlhZ25vc3RpY3MuZXJyb3IobG9jLCByZWFzb24sIHRva2VuLCBleHRyYUlu
Zm8pOwogfQogCiB2b2lkIFRQYXJzZUNvbnRleHQ6Ondhcm5pbmcoY29uc3QgVFNvdXJjZUxvYyAm
bG9jLApAQCAtMTU4LDEwICsxNDksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIgKnRva2VuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg
KmV4dHJhSW5mbykKIHsKLSAgICBwcDo6U291cmNlTG9jYXRpb24gc3JjTG9jOwotICAgIHNyY0xv
Yy5maWxlID0gbG9jLmZpcnN0X2ZpbGU7Ci0gICAgc3JjTG9jLmxpbmUgPSBsb2MuZmlyc3RfbGlu
ZTsKLSAgICBtRGlhZ25vc3RpY3Mud3JpdGVJbmZvKHBwOjpEaWFnbm9zdGljczo6UFBfV0FSTklO
Rywgc3JjTG9jLCByZWFzb24sIHRva2VuLCBleHRyYUluZm8pOworICAgIG1EaWFnbm9zdGljcy53
YXJuaW5nKGxvYywgcmVhc29uLCB0b2tlbiwgZXh0cmFJbmZvKTsKIH0KIAogdm9pZCBUUGFyc2VD
b250ZXh0OjpvdXRPZlJhbmdlRXJyb3IoYm9vbCBpc0Vycm9yLApAQCAtMTczLDcgKzE2MSw2IEBA
CiAgICAgaWYgKGlzRXJyb3IpCiAgICAgewogICAgICAgICBlcnJvcihsb2MsIHJlYXNvbiwgdG9r
ZW4sIGV4dHJhSW5mbyk7Ci0gICAgICAgIHJlY292ZXIoKTsKICAgICB9CiAgICAgZWxzZQogICAg
IHsKQEAgLTIyMCwxMiArMjA3LDE4IEBACiAgICAgZXJyb3IobGluZSwgIiB3cm9uZyBvcGVyYW5k
IHR5cGVzICIsIG9wLCBleHRyYUluZm8uY19zdHIoKSk7CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4
dDo6cHJlY2lzaW9uRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jICZsaW5lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQcmVjaXNpb24gcHJlY2lzaW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRCYXNpY1R5cGUgdHlwZSkKK3Zv
aWQgVFBhcnNlQ29udGV4dDo6Y2hlY2tQcmVjaXNpb25TcGVjaWZpZWQoY29uc3QgVFNvdXJjZUxv
YyAmbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBy
ZWNpc2lvbiBwcmVjaXNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRCYXNpY1R5cGUgdHlwZSkKIHsKICAgICBpZiAoIW1DaGVja3NQcmVjaXNpb25FcnJv
cnMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHBy
ZWNpc2lvbiAhPSBFYnBVbmRlZmluZWQgJiYgIVN1cHBvcnRzUHJlY2lzaW9uKHR5cGUpKQorICAg
IHsKKyAgICAgICAgZXJyb3IobGluZSwgImlsbGVnYWwgdHlwZSBmb3IgcHJlY2lzaW9uIHF1YWxp
ZmllciIsIGdldEJhc2ljU3RyaW5nKHR5cGUpKTsKKyAgICB9CisKICAgICBpZiAocHJlY2lzaW9u
ID09IEVicFVuZGVmaW5lZCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAodHlwZSkKQEAgLTIzMiwz
OCArMjI1LDQzIEBACiAgICAgICAgIHsKICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CiAgICAg
ICAgICAgICAgICAgZXJyb3IobGluZSwgIk5vIHByZWNpc2lvbiBzcGVjaWZpZWQgZm9yIChmbG9h
dCkiLCAiIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CiAgICAgICAgICAgICBjYXNlIEVidFVJ
bnQ6CiAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsgIC8vIHRoZXJlJ3MgYWx3YXlzIGEg
cHJlZGVjbGFyZWQgcXVhbGlmaWVyCiAgICAgICAgICAgICAgICAgZXJyb3IobGluZSwgIk5vIHBy
ZWNpc2lvbiBzcGVjaWZpZWQgKGludCkiLCAiIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgICAgICBpZiAoSXNTYW1wbGVyKHR5cGUpKQogICAgICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAgICAgZXJyb3IobGluZSwgIk5vIHByZWNpc2lvbiBzcGVjaWZpZWQgKHNhbXBs
ZXIpIiwgIiIpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLS8vCiAvLyBCb3RoIHRlc3QgYW5kIGlmIG5lY2Vzc2FyeSwg
c3BpdCBvdXQgYW4gZXJyb3IsIHRvIHNlZSBpZiB0aGUgbm9kZSBpcyByZWFsbHkKIC8vIGFuIGwt
dmFsdWUgdGhhdCBjYW4gYmUgb3BlcmF0ZWQgb24gdGhpcyB3YXkuCi0vLwotLy8gUmV0dXJucyB0
cnVlIGlmIHRoZSB3YXMgYW4gZXJyb3IuCi0vLwotYm9vbCBUUGFyc2VDb250ZXh0OjpsVmFsdWVF
cnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0IGNoYXIgKm9wLCBUSW50ZXJt
VHlwZWQgKm5vZGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmNoZWNrQ2FuQmVMVmFsdWUoY29uc3Qg
VFNvdXJjZUxvYyAmbGluZSwgY29uc3QgY2hhciAqb3AsIFRJbnRlcm1UeXBlZCAqbm9kZSkKIHsK
ICAgICBUSW50ZXJtU3ltYm9sICpzeW1Ob2RlICAgID0gbm9kZS0+Z2V0QXNTeW1ib2xOb2RlKCk7
CiAgICAgVEludGVybUJpbmFyeSAqYmluYXJ5Tm9kZSA9IG5vZGUtPmdldEFzQmluYXJ5Tm9kZSgp
OworICAgIFRJbnRlcm1Td2l6emxlICpzd2l6emxlTm9kZSA9IG5vZGUtPmdldEFzU3dpenpsZU5v
ZGUoKTsKIAorICAgIGlmIChzd2l6emxlTm9kZSkKKyAgICB7CisgICAgICAgIGJvb2wgb2sgPSBj
aGVja0NhbkJlTFZhbHVlKGxpbmUsIG9wLCBzd2l6emxlTm9kZS0+Z2V0T3BlcmFuZCgpKTsKKyAg
ICAgICAgaWYgKG9rICYmIHN3aXp6bGVOb2RlLT5oYXNEdXBsaWNhdGVPZmZzZXRzKCkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGVycm9yKGxpbmUsICIgbC12YWx1ZSBvZiBzd2l6emxlIGNhbm5v
dCBoYXZlIGR1cGxpY2F0ZSBjb21wb25lbnRzIiwgb3ApOworICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBvazsKKyAgICB9CisKICAgICBpZiAoYmlu
YXJ5Tm9kZSkKICAgICB7Ci0gICAgICAgIGJvb2wgZXJyb3JSZXR1cm47Ci0KICAgICAgICAgc3dp
dGNoIChiaW5hcnlOb2RlLT5nZXRPcCgpKQogICAgICAgICB7CiAgICAgICAgICAgICBjYXNlIEVP
cEluZGV4RGlyZWN0OgpAQCAtMjcwLDM3ICsyNjgsMTIgQEAKICAgICAgICAgICAgIGNhc2UgRU9w
SW5kZXhJbmRpcmVjdDoKICAgICAgICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3RTdHJ1Y3Q6CiAg
ICAgICAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0SW50ZXJmYWNlQmxvY2s6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGxWYWx1ZUVycm9yQ2hlY2sobGluZSwgb3AsIGJpbmFyeU5vZGUtPmdldExl
ZnQoKSk7Ci0gICAgICAgICAgICBjYXNlIEVPcFZlY3RvclN3aXp6bGU6Ci0gICAgICAgICAgICAg
ICAgZXJyb3JSZXR1cm4gPSBsVmFsdWVFcnJvckNoZWNrKGxpbmUsIG9wLCBiaW5hcnlOb2RlLT5n
ZXRMZWZ0KCkpOwotICAgICAgICAgICAgICAgIGlmICghZXJyb3JSZXR1cm4pCi0gICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0WzRdID0gezAsIDAsIDAsIDB9
OwotCi0gICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqcmlnaHROb2RlICAgID0gYmlu
YXJ5Tm9kZS0+Z2V0UmlnaHQoKTsKLSAgICAgICAgICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0
ZSAqYWdnck5vZGUgPSByaWdodE5vZGUtPmdldEFzQWdncmVnYXRlKCk7Ci0KLSAgICAgICAgICAg
ICAgICAgICAgZm9yIChUSW50ZXJtU2VxdWVuY2U6Oml0ZXJhdG9yIHAgPSBhZ2dyTm9kZS0+Z2V0
U2VxdWVuY2UoKS0+YmVnaW4oKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICBwICE9IGFnZ3JO
b2RlLT5nZXRTZXF1ZW5jZSgpLT5lbmQoKTsgcCsrKQotICAgICAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSAoKnApLT5nZXRBc1R5cGVkKCktPmdl
dEFzQ29uc3RhbnRVbmlvbigpLT5nZXRJQ29uc3QoMCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBvZmZzZXRbdmFsdWVdKys7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0W3Zh
bHVlXSA+IDEpCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXJyb3IobGluZSwgIiBsLXZhbHVlIG9mIHN3aXp6bGUgY2Fubm90IGhhdmUgZHVw
bGljYXRlIGNvbXBvbmVudHMiLCBvcCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvclJl
dHVybjsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tDYW5CZUxWYWx1ZShsaW5lLCBvcCwg
YmluYXJ5Tm9kZS0+Z2V0TGVmdCgpKTsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZXJyb3IobGluZSwgIiBsLXZhbHVlIHJl
cXVpcmVkIiwgb3ApOwotCi0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCiAgICAgY29uc3QgY2hhciAqc3ltYm9sID0gMDsKQEAgLTM0MCw2ICszMTMs
MjcgQEAKICAgICAgICAgY2FzZSBFdnFQb2ludENvb3JkOgogICAgICAgICAgICAgbWVzc2FnZSA9
ICJjYW4ndCBtb2RpZnkgZ2xfUG9pbnRDb29yZCI7CiAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBFdnFOdW1Xb3JrR3JvdXBzOgorICAgICAgICAgICAgbWVzc2FnZSA9ICJjYW4ndCBt
b2RpZnkgZ2xfTnVtV29ya0dyb3VwcyI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBFdnFXb3JrR3JvdXBTaXplOgorICAgICAgICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkg
Z2xfV29ya0dyb3VwU2l6ZSI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFdnFX
b3JrR3JvdXBJRDoKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGdsX1dvcmtH
cm91cElEIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEV2cUxvY2FsSW52b2Nh
dGlvbklEOgorICAgICAgICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgZ2xfTG9jYWxJbnZv
Y2F0aW9uSUQiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRXZxR2xvYmFsSW52
b2NhdGlvbklEOgorICAgICAgICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgZ2xfR2xvYmFs
SW52b2NhdGlvbklEIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEV2cUxvY2Fs
SW52b2NhdGlvbkluZGV4OgorICAgICAgICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgZ2xf
TG9jYWxJbnZvY2F0aW9uSW5kZXgiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
RXZxQ29tcHV0ZUluOgorICAgICAgICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgd29yayBn
cm91cCBzaXplIHZhcmlhYmxlIjsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIC8vIFR5cGUgdGhhdCBjYW4ndCBiZSB3cml0
dGVuIHRvPwpAQCAtMzU4LDcgKzM1Miw3IEBACiAgICAgewogICAgICAgICBlcnJvcihsaW5lLCAi
IGwtdmFsdWUgcmVxdWlyZWQiLCBvcCk7CiAKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICAvLwpAQCAtMzY1LDcgKzM1OSw3IEBACiAgICAg
Ly8gRXZlcnl0aGluZyBlbHNlIGlzIG9rYXksIG5vIGVycm9yLgogICAgIC8vCiAgICAgaWYgKG1l
c3NhZ2UgPT0gMCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIC8vCiAgICAgLy8gSWYgd2UgZ2V0IGhlcmUsIHdlIGhhdmUgYW4gZXJyb3IgYW5kIGEg
bWVzc2FnZS4KQEAgLTM4NSw2NyArMzc5LDQ3IEBACiAgICAgICAgIGVycm9yKGxpbmUsICIgbC12
YWx1ZSByZXF1aXJlZCIsIG9wLCBleHRyYUluZm8uY19zdHIoKSk7CiAgICAgfQogCi0gICAgcmV0
dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCi0vLwogLy8gQm90aCB0ZXN0LCBhbmQg
aWYgbmVjZXNzYXJ5IHNwaXQgb3V0IGFuIGVycm9yLCB0byBzZWUgaWYgdGhlIG5vZGUgaXMgcmVh
bGx5CiAvLyBhIGNvbnN0YW50LgotLy8KLS8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgd2FzIGFuIGVy
cm9yLgotLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6Y29uc3RFcnJvckNoZWNrKFRJbnRlcm1UeXBl
ZCAqbm9kZSkKK3ZvaWQgVFBhcnNlQ29udGV4dDo6Y2hlY2tJc0NvbnN0KFRJbnRlcm1UeXBlZCAq
bm9kZSkKIHsKLSAgICBpZiAobm9kZS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGVycm9yKG5vZGUtPmdldExpbmUoKSwgImNvbnN0YW50
IGV4cHJlc3Npb24gcmVxdWlyZWQiLCAiIik7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAo
bm9kZS0+Z2V0UXVhbGlmaWVyKCkgIT0gRXZxQ29uc3QpCisgICAgeworICAgICAgICBlcnJvcihu
b2RlLT5nZXRMaW5lKCksICJjb25zdGFudCBleHByZXNzaW9uIHJlcXVpcmVkIiwgIiIpOworICAg
IH0KIH0KIAotLy8KIC8vIEJvdGggdGVzdCwgYW5kIGlmIG5lY2Vzc2FyeSBzcGl0IG91dCBhbiBl
cnJvciwgdG8gc2VlIGlmIHRoZSBub2RlIGlzIHJlYWxseQogLy8gYW4gaW50ZWdlci4KLS8vCi0v
LyBSZXR1cm5zIHRydWUgaWYgdGhlIHdhcyBhbiBlcnJvci4KLS8vCi1ib29sIFRQYXJzZUNvbnRl
eHQ6OmludGVnZXJFcnJvckNoZWNrKFRJbnRlcm1UeXBlZCAqbm9kZSwgY29uc3QgY2hhciAqdG9r
ZW4pCit2b2lkIFRQYXJzZUNvbnRleHQ6OmNoZWNrSXNTY2FsYXJJbnRlZ2VyKFRJbnRlcm1UeXBl
ZCAqbm9kZSwgY29uc3QgY2hhciAqdG9rZW4pCiB7Ci0gICAgaWYgKG5vZGUtPmlzU2NhbGFySW50
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGVycm9yKG5vZGUtPmdldExpbmUoKSwg
ImludGVnZXIgZXhwcmVzc2lvbiByZXF1aXJlZCIsIHRva2VuKTsKLQotICAgIHJldHVybiB0cnVl
OworICAgIGlmICghbm9kZS0+aXNTY2FsYXJJbnQoKSkKKyAgICB7CisgICAgICAgIGVycm9yKG5v
ZGUtPmdldExpbmUoKSwgImludGVnZXIgZXhwcmVzc2lvbiByZXF1aXJlZCIsIHRva2VuKTsKKyAg
ICB9CiB9CiAKLS8vCiAvLyBCb3RoIHRlc3QsIGFuZCBpZiBuZWNlc3Nhcnkgc3BpdCBvdXQgYW4g
ZXJyb3IsIHRvIHNlZSBpZiB3ZSBhcmUgY3VycmVudGx5CiAvLyBnbG9iYWxseSBzY29wZWQuCi0v
LwotLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB3YXMgYW4gZXJyb3IuCi0vLwotYm9vbCBUUGFyc2VD
b250ZXh0OjpnbG9iYWxFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGJvb2wgZ2xv
YmFsLCBjb25zdCBjaGFyICp0b2tlbikKK2Jvb2wgVFBhcnNlQ29udGV4dDo6Y2hlY2tJc0F0R2xv
YmFsTGV2ZWwoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3QgY2hhciAqdG9rZW4pCiB7Ci0g
ICAgaWYgKGdsb2JhbCkKKyAgICBpZiAoIXN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSkKKyAg
ICB7CisgICAgICAgIGVycm9yKGxpbmUsICJvbmx5IGFsbG93ZWQgYXQgZ2xvYmFsIHNjb3BlIiwg
dG9rZW4pOwogICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBlcnJvcihsaW5lLCAib25seSBh
bGxvd2VkIGF0IGdsb2JhbCBzY29wZSIsIHRva2VuKTsKLQorICAgIH0KICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotLy8KIC8vIEZvciBub3csIGtlZXAgaXQgc2ltcGxlOiAgaWYgaXQgc3RhcnRzICJn
bF8iLCBpdCdzIHJlc2VydmVkLCBpbmRlcGVuZGVudAogLy8gb2Ygc2NvcGUuICBFeGNlcHQsIGlm
IHRoZSBzeW1ib2wgdGFibGUgaXMgYXQgdGhlIGJ1aWx0LWluIHB1c2gtbGV2ZWwsCiAvLyB3aGlj
aCBpcyB3aGVuIHdlIGFyZSBwYXJzaW5nIGJ1aWx0LWlucy4KIC8vIEFsc28gY2hlY2tzIGZvciAi
d2ViZ2xfIiBhbmQgIl93ZWJnbF8iIHJlc2VydmVkIGlkZW50aWZpZXJzIGlmIHBhcnNpbmcgYQog
Ly8gd2ViZ2wgc2hhZGVyLgotLy8KLS8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSB3YXMgYW4gZXJy
b3IuCi0vLwotYm9vbCBUUGFyc2VDb250ZXh0OjpyZXNlcnZlZEVycm9yQ2hlY2soY29uc3QgVFNv
dXJjZUxvYyAmbGluZSwgY29uc3QgVFN0cmluZyAmaWRlbnRpZmllcikKK2Jvb2wgVFBhcnNlQ29u
dGV4dDo6Y2hlY2tJc05vdFJlc2VydmVkKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0IFRT
dHJpbmcgJmlkZW50aWZpZXIpCiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIgKnJlc2VydmVkRXJy
TXNnID0gInJlc2VydmVkIGJ1aWx0LWluIG5hbWUiOwogICAgIGlmICghc3ltYm9sVGFibGUuYXRC
dWlsdEluTGV2ZWwoKSkKQEAgLTQ1Myw3ICs0MjcsNyBAQAogICAgICAgICBpZiAoaWRlbnRpZmll
ci5jb21wYXJlKDAsIDMsICJnbF8iKSA9PSAwKQogICAgICAgICB7CiAgICAgICAgICAgICBlcnJv
cihsaW5lLCByZXNlcnZlZEVyck1zZywgImdsXyIpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKElzV2Vi
R0xCYXNlZFNwZWMobVNoYWRlclNwZWMpKQogICAgICAgICB7CkBAIC00NjAsMTggKzQzNCwxMyBA
QAogICAgICAgICAgICAgaWYgKGlkZW50aWZpZXIuY29tcGFyZSgwLCA2LCAid2ViZ2xfIikgPT0g
MCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBlcnJvcihsaW5lLCByZXNlcnZlZEVy
ck1zZywgIndlYmdsXyIpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChpZGVu
dGlmaWVyLmNvbXBhcmUoMCwgNywgIl93ZWJnbF8iKSA9PSAwKQogICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgIGVycm9yKGxpbmUsIHJlc2VydmVkRXJyTXNnLCAiX3dlYmdsXyIpOwotICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChtU2hhZGVyU3BlYyA9PSBTSF9DU1NfU0hB
REVSU19TUEVDICYmIGlkZW50aWZpZXIuY29tcGFyZSgwLCA0LCAiY3NzXyIpID09IDApCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZXJyb3IobGluZSwgcmVzZXJ2ZWRFcnJNc2csICJj
c3NfIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKGlkZW50aWZpZXIuZmluZCgiX18iKSAhPSBUU3RyaW5nOjpucG9z
KQogICAgICAgICB7CkBAIC00NzksMjggKzQ0OCwyMiBAQAogICAgICAgICAgICAgICAgICAgImlk
ZW50aWZpZXJzIGNvbnRhaW5pbmcgdHdvIGNvbnNlY3V0aXZlIHVuZGVyc2NvcmVzIChfXykgYXJl
IHJlc2VydmVkIGFzICIKICAgICAgICAgICAgICAgICAgICJwb3NzaWJsZSBmdXR1cmUga2V5d29y
ZHMiLAogICAgICAgICAgICAgICAgICAgaWRlbnRpZmllci5jX3N0cigpKTsKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAg
fQogCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOwogfQogCi0vLwogLy8gTWFr
ZSBzdXJlIHRoZXJlIGlzIGVub3VnaCBkYXRhIHByb3ZpZGVkIHRvIHRoZSBjb25zdHJ1Y3RvciB0
byBidWlsZAogLy8gc29tZXRoaW5nIG9mIHRoZSB0eXBlIG9mIHRoZSBjb25zdHJ1Y3Rvci4gIEFs
c28gcmV0dXJucyB0aGUgdHlwZSBvZgogLy8gdGhlIGNvbnN0cnVjdG9yLgotLy8KLS8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgaW4gY29uc3RydWN0aW9uLgotLy8KLWJvb2wg
VFBhcnNlQ29udGV4dDo6Y29uc3RydWN0b3JFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MgJmxp
bmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtTm9k
ZSAqYXJndW1lbnRzTm9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRGdW5jdGlvbiAmZnVuY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUT3BlcmF0b3Igb3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUVHlwZSAqdHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6Y2hlY2tDb25zdHJ1
Y3RvckFyZ3VtZW50cyhjb25zdCBUU291cmNlTG9jICZsaW5lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICphcmd1bWVudHNOb2RlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRGdW5j
dGlvbiAmZnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVE9wZXJhdG9yIG9wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlKQogewotICAgICp0eXBlID0gZnVuY3Rpb24uZ2V0
UmV0dXJuVHlwZSgpOwotCiAgICAgYm9vbCBjb25zdHJ1Y3RpbmdNYXRyaXggPSBmYWxzZTsKICAg
ICBzd2l0Y2ggKG9wKQogICAgIHsKQEAgLTUyNiw3ICs0ODksNiBAQAogICAgIC8vCiAKICAgICBz
aXplX3Qgc2l6ZSAgICAgICAgID0gMDsKLSAgICBib29sIGNvbnN0VHlwZSAgICAgID0gdHJ1ZTsK
ICAgICBib29sIGZ1bGwgICAgICAgICAgID0gZmFsc2U7CiAgICAgYm9vbCBvdmVyRnVsbCAgICAg
ICA9IGZhbHNlOwogICAgIGJvb2wgbWF0cml4SW5NYXRyaXggPSBmYWxzZTsKQEAgLTU0MCwyNyAr
NTAyLDIwIEBACiAgICAgICAgICAgICBtYXRyaXhJbk1hdHJpeCA9IHRydWU7CiAgICAgICAgIGlm
IChmdWxsKQogICAgICAgICAgICAgb3ZlckZ1bGwgPSB0cnVlOwotICAgICAgICBpZiAob3AgIT0g
RU9wQ29uc3RydWN0U3RydWN0ICYmICF0eXBlLT5pc0FycmF5KCkgJiYgc2l6ZSA+PSB0eXBlLT5n
ZXRPYmplY3RTaXplKCkpCisgICAgICAgIGlmIChvcCAhPSBFT3BDb25zdHJ1Y3RTdHJ1Y3QgJiYg
IXR5cGUuaXNBcnJheSgpICYmIHNpemUgPj0gdHlwZS5nZXRPYmplY3RTaXplKCkpCiAgICAgICAg
ICAgICBmdWxsID0gdHJ1ZTsKLSAgICAgICAgaWYgKHBhcmFtLnR5cGUtPmdldFF1YWxpZmllcigp
ICE9IEV2cUNvbnN0KQotICAgICAgICAgICAgY29uc3RUeXBlID0gZmFsc2U7CiAgICAgICAgIGlm
IChwYXJhbS50eXBlLT5pc0FycmF5KCkpCiAgICAgICAgICAgICBhcnJheUFyZyA9IHRydWU7CiAg
ICAgfQogCi0gICAgaWYgKGNvbnN0VHlwZSkKLSAgICAgICAgdHlwZS0+c2V0UXVhbGlmaWVyKEV2
cUNvbnN0KTsKLQotICAgIGlmICh0eXBlLT5pc0FycmF5KCkpCisgICAgaWYgKHR5cGUuaXNBcnJh
eSgpKQogICAgIHsKLSAgICAgICAgaWYgKHR5cGUtPmlzVW5zaXplZEFycmF5KCkpCisgICAgICAg
IC8vIFRoZSBzaXplIG9mIGFuIHVuc2l6ZWQgY29uc3RydWN0b3Igc2hvdWxkIGFscmVhZHkgaGF2
ZSBiZWVuIGRldGVybWluZWQuCisgICAgICAgIEFTU0VSVCghdHlwZS5pc1Vuc2l6ZWRBcnJheSgp
KTsKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4odHlwZS5nZXRBcnJheVNpemUoKSkg
IT0gZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgpKQogICAgICAgICB7Ci0gICAgICAgICAgICB0eXBl
LT5zZXRBcnJheVNpemUoc3RhdGljX2Nhc3Q8aW50PihmdW5jdGlvbi5nZXRQYXJhbUNvdW50KCkp
KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KHR5cGUt
PmdldEFycmF5U2l6ZSgpKSAhPSBmdW5jdGlvbi5nZXRQYXJhbUNvdW50KCkpCi0gICAgICAgIHsK
ICAgICAgICAgICAgIGVycm9yKGxpbmUsICJhcnJheSBjb25zdHJ1Y3RvciBuZWVkcyBvbmUgYXJn
dW1lbnQgcGVyIGFycmF5IGVsZW1lbnQiLCAiY29uc3RydWN0b3IiKTsKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQog
CkBAIC01NjcsMTYgKzUyMiwxNiBAQAogICAgIGlmIChhcnJheUFyZyAmJiBvcCAhPSBFT3BDb25z
dHJ1Y3RTdHJ1Y3QpCiAgICAgewogICAgICAgICBlcnJvcihsaW5lLCAiY29uc3RydWN0aW5nIGZy
b20gYSBub24tZGVyZWZlcmVuY2VkIGFycmF5IiwgImNvbnN0cnVjdG9yIik7Ci0gICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKG1hdHJp
eEluTWF0cml4ICYmICF0eXBlLT5pc0FycmF5KCkpCisgICAgaWYgKG1hdHJpeEluTWF0cml4ICYm
ICF0eXBlLmlzQXJyYXkoKSkKICAgICB7CiAgICAgICAgIGlmIChmdW5jdGlvbi5nZXRQYXJhbUNv
dW50KCkgIT0gMSkKICAgICAgICAgewogICAgICAgICAgICAgZXJyb3IobGluZSwgImNvbnN0cnVj
dGluZyBtYXRyaXggZnJvbSBtYXRyaXggY2FuIG9ubHkgdGFrZSBvbmUgYXJndW1lbnQiLAogICAg
ICAgICAgICAgICAgICAgImNvbnN0cnVjdG9yIik7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNTgzLDI1
ICs1MzgsMjUgQEAKICAgICBpZiAob3ZlckZ1bGwpCiAgICAgewogICAgICAgICBlcnJvcihsaW5l
LCAidG9vIG1hbnkgYXJndW1lbnRzIiwgImNvbnN0cnVjdG9yIik7Ci0gICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKG9wID09IEVPcENv
bnN0cnVjdFN0cnVjdCAmJiAhdHlwZS0+aXNBcnJheSgpICYmCi0gICAgICAgIHR5cGUtPmdldFN0
cnVjdCgpLT5maWVsZHMoKS5zaXplKCkgIT0gZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgpKQorICAg
IGlmIChvcCA9PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QgJiYgIXR5cGUuaXNBcnJheSgpICYmCisgICAg
ICAgIHR5cGUuZ2V0U3RydWN0KCktPmZpZWxkcygpLnNpemUoKSAhPSBmdW5jdGlvbi5nZXRQYXJh
bUNvdW50KCkpCiAgICAgewogICAgICAgICBlcnJvcihsaW5lLAogICAgICAgICAgICAgICAiTnVt
YmVyIG9mIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMgZG9lcyBub3QgbWF0Y2ggdGhlIG51bWJlciBv
ZiBzdHJ1Y3R1cmUgZmllbGRzIiwKICAgICAgICAgICAgICAgImNvbnN0cnVjdG9yIik7Ci0gICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYg
KCF0eXBlLT5pc01hdHJpeCgpIHx8ICFtYXRyaXhJbk1hdHJpeCkKKyAgICBpZiAoIXR5cGUuaXNN
YXRyaXgoKSB8fCAhbWF0cml4SW5NYXRyaXgpCiAgICAgewotICAgICAgICBpZiAoKG9wICE9IEVP
cENvbnN0cnVjdFN0cnVjdCAmJiBzaXplICE9IDEgJiYgc2l6ZSA8IHR5cGUtPmdldE9iamVjdFNp
emUoKSkgfHwKLSAgICAgICAgICAgIChvcCA9PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QgJiYgc2l6ZSA8
IHR5cGUtPmdldE9iamVjdFNpemUoKSkpCisgICAgICAgIGlmICgob3AgIT0gRU9wQ29uc3RydWN0
U3RydWN0ICYmIHNpemUgIT0gMSAmJiBzaXplIDwgdHlwZS5nZXRPYmplY3RTaXplKCkpIHx8Cisg
ICAgICAgICAgICAob3AgPT0gRU9wQ29uc3RydWN0U3RydWN0ICYmIHNpemUgPCB0eXBlLmdldE9i
amVjdFNpemUoKSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVycm9yKGxpbmUsICJub3QgZW5v
dWdoIGRhdGEgcHJvdmlkZWQgZm9yIGNvbnN0cnVjdGlvbiIsICJjb25zdHJ1Y3RvciIpOwotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KICAgICB9CiAKQEAgLTYwOCw3ICs1NjMsNyBAQAogICAgIGlmIChhcmd1bWVudHNOb2RlID09
IG51bGxwdHIpCiAgICAgewogICAgICAgICBlcnJvcihsaW5lLCAiY29uc3RydWN0b3IgZG9lcyBu
b3QgaGF2ZSBhbnkgYXJndW1lbnRzIiwgImNvbnN0cnVjdG9yIik7Ci0gICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgVEludGVybUFnZ3JlZ2F0
ZSAqYXJndW1lbnRzQWdnID0gYXJndW1lbnRzTm9kZS0+Z2V0QXNBZ2dyZWdhdGUoKTsKQEAgLTYx
OSwxNiArNTc0LDQ4IEBACiAgICAgICAgIGlmIChvcCAhPSBFT3BDb25zdHJ1Y3RTdHJ1Y3QgJiYg
SXNTYW1wbGVyKGFyZ1R5cGVkLT5nZXRCYXNpY1R5cGUoKSkpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGVycm9yKGxpbmUsICJjYW5ub3QgY29udmVydCBhIHNhbXBsZXIiLCAiY29uc3RydWN0b3Ii
KTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAgICAgICAgIGlmIChhcmdUeXBlZC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0Vm9p
ZCkKICAgICAgICAgewogICAgICAgICAgICAgZXJyb3IobGluZSwgImNhbm5vdCBjb252ZXJ0IGEg
dm9pZCIsICJjb25zdHJ1Y3RvciIpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKHR5cGUuaXNBcnJheSgpKQorICAgIHsKKyAgICAgICAgLy8gR0xTTCBFUyAzLjAw
IHNlY3Rpb24gNS40LjQ6IEVhY2ggYXJndW1lbnQgbXVzdCBiZSB0aGUgc2FtZSB0eXBlIGFzIHRo
ZSBlbGVtZW50IHR5cGUgb2YKKyAgICAgICAgLy8gdGhlIGFycmF5LgorICAgICAgICBmb3IgKFRJ
bnRlcm1Ob2RlIComYXJnTm9kZSA6ICphcmd1bWVudHNBZ2ctPmdldFNlcXVlbmNlKCkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGNvbnN0IFRUeXBlICZhcmdUeXBlID0gYXJnTm9kZS0+Z2V0QXNU
eXBlZCgpLT5nZXRUeXBlKCk7CisgICAgICAgICAgICAvLyBJdCBoYXMgYWxyZWFkeSBiZWVuIGNo
ZWNrZWQgdGhhdCB0aGUgYXJndW1lbnQgaXMgbm90IGFuIGFycmF5LgorICAgICAgICAgICAgQVNT
RVJUKCFhcmdUeXBlLmlzQXJyYXkoKSk7CisgICAgICAgICAgICBpZiAoIWFyZ1R5cGUuc2FtZUVs
ZW1lbnRUeXBlKHR5cGUpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVycm9yKGxp
bmUsICJBcnJheSBjb25zdHJ1Y3RvciBhcmd1bWVudCBoYXMgYW4gaW5jb3JyZWN0IHR5cGUiLCAi
RXJyb3IiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAob3AgPT0gRU9wQ29uc3RydWN0U3RydWN0KQor
ICAgIHsKKyAgICAgICAgY29uc3QgVEZpZWxkTGlzdCAmZmllbGRzID0gdHlwZS5nZXRTdHJ1Y3Qo
KS0+ZmllbGRzKCk7CisgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAqYXJncyAgICA9IGFyZ3VtZW50
c0FnZy0+Z2V0U2VxdWVuY2UoKTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZp
ZWxkcy5zaXplKCk7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGkgPj0gYXJncy0+
c2l6ZSgpIHx8ICgqYXJncylbaV0tPmdldEFzVHlwZWQoKS0+Z2V0VHlwZSgpICE9ICpmaWVsZHNb
aV0tPnR5cGUoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBlcnJvcihsaW5lLCAi
U3RydWN0dXJlIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyBkbyBub3QgbWF0Y2ggc3RydWN0dXJlIGZp
ZWxkcyIsCisgICAgICAgICAgICAgICAgICAgICAgIkVycm9yIik7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIC8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIHRvIHNlZSBpZiBhIHZvaWQg
dmFyaWFibGUgaGFzIGJlZW4gZGVjbGFyZWQgYW5kIHJhaXNlIGFuIGVycm9yIG1lc3NhZ2UgZm9y
CkBAIC02MzYsNyArNjIzLDcgQEAKIC8vCiAvLyByZXR1cm5zIHRydWUgaW4gY2FzZSBvZiBhbiBl
cnJvcgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6dm9pZEVycm9yQ2hlY2soY29uc3QgVFNvdXJj
ZUxvYyAmbGluZSwKK2Jvb2wgVFBhcnNlQ29udGV4dDo6Y2hlY2tJc05vblZvaWQoY29uc3QgVFNv
dXJjZUxvYyAmbGluZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFN0cmluZyAmaWRlbnRpZmllciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVEJhc2ljVHlwZSAmdHlwZSkKIHsKQEAgLTY0Myw0NiArNjMwLDM0IEBACiAgICAgaWYg
KHR5cGUgPT0gRWJ0Vm9pZCkKICAgICB7CiAgICAgICAgIGVycm9yKGxpbmUsICJpbGxlZ2FsIHVz
ZSBvZiB0eXBlICd2b2lkJyIsIGlkZW50aWZpZXIuY19zdHIoKSk7Ci0gICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiB0cnVlOwogfQogCiAvLyBUaGlzIGZ1bmN0aW9uIGNoZWNrcyB0byBzZWUgaWYg
dGhlIG5vZGUgKGZvciB0aGUgZXhwcmVzc2lvbikgY29udGFpbnMgYSBzY2FsYXIgYm9vbGVhbiBl
eHByZXNzaW9uCi0vLyBvciBub3QKLS8vCi0vLyByZXR1cm5zIHRydWUgaW4gY2FzZSBvZiBhbiBl
cnJvcgotLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6Ym9vbEVycm9yQ2hlY2soY29uc3QgVFNvdXJj
ZUxvYyAmbGluZSwgY29uc3QgVEludGVybVR5cGVkICp0eXBlKQorLy8gb3Igbm90Lgordm9pZCBU
UGFyc2VDb250ZXh0OjpjaGVja0lzU2NhbGFyQm9vbChjb25zdCBUU291cmNlTG9jICZsaW5lLCBj
b25zdCBUSW50ZXJtVHlwZWQgKnR5cGUpCiB7CiAgICAgaWYgKHR5cGUtPmdldEJhc2ljVHlwZSgp
ICE9IEVidEJvb2wgfHwgdHlwZS0+aXNBcnJheSgpIHx8IHR5cGUtPmlzTWF0cml4KCkgfHwgdHlw
ZS0+aXNWZWN0b3IoKSkKICAgICB7CiAgICAgICAgIGVycm9yKGxpbmUsICJib29sZWFuIGV4cHJl
c3Npb24gZXhwZWN0ZWQiLCAiIik7Ci0gICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLQotICAg
IHJldHVybiBmYWxzZTsKIH0KIAogLy8gVGhpcyBmdW5jdGlvbiBjaGVja3MgdG8gc2VlIGlmIHRo
ZSBub2RlIChmb3IgdGhlIGV4cHJlc3Npb24pIGNvbnRhaW5zIGEgc2NhbGFyIGJvb2xlYW4gZXhw
cmVzc2lvbgotLy8gb3Igbm90Ci0vLwotLy8gcmV0dXJucyB0cnVlIGluIGNhc2Ugb2YgYW4gZXJy
b3IKLS8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VM
b2MgJmxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlICZwVHlwZSkKKy8vIG9yIG5vdC4KK3ZvaWQgVFBh
cnNlQ29udGV4dDo6Y2hlY2tJc1NjYWxhckJvb2woY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgY29u
c3QgVFB1YmxpY1R5cGUgJnBUeXBlKQogewotICAgIGlmIChwVHlwZS50eXBlICE9IEVidEJvb2wg
fHwgcFR5cGUuaXNBZ2dyZWdhdGUoKSkKKyAgICBpZiAocFR5cGUuZ2V0QmFzaWNUeXBlKCkgIT0g
RWJ0Qm9vbCB8fCBwVHlwZS5pc0FnZ3JlZ2F0ZSgpKQogICAgIHsKICAgICAgICAgZXJyb3IobGlu
ZSwgImJvb2xlYW4gZXhwcmVzc2lvbiBleHBlY3RlZCIsICIiKTsKLSAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRQYXJzZUNvbnRleHQ6
OnNhbXBsZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRQdWJsaWNUeXBlICZwVHlwZSwKK2Jvb2wg
VFBhcnNlQ29udGV4dDo6Y2hlY2tJc05vdFNhbXBsZXIoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGVTcGVjaWZp
ZXJOb25BcnJheSAmcFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIgKnJlYXNvbikKIHsKICAgICBpZiAocFR5cGUudHlwZSA9PSBFYnRTdHJ1Y3Qp
CkBAIC02OTAsNDYgKzY2NSw0OSBAQAogICAgICAgICBpZiAoY29udGFpbnNTYW1wbGVyKCpwVHlw
ZS51c2VyRGVmKSkKICAgICAgICAgewogICAgICAgICAgICAgZXJyb3IobGluZSwgcmVhc29uLCBn
ZXRCYXNpY1N0cmluZyhwVHlwZS50eXBlKSwgIihzdHJ1Y3R1cmUgY29udGFpbnMgYSBzYW1wbGVy
KSIpOwotCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogICAgIGVsc2UgaWYgKElzU2FtcGxlcihwVHlwZS50eXBlKSkKICAgICB7CiAg
ICAgICAgIGVycm9yKGxpbmUsIHJlYXNvbiwgZ2V0QmFzaWNTdHJpbmcocFR5cGUudHlwZSkpOwot
Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFRQYXJzZUNvbnRl
eHQ6OmxvY2F0aW9uRGVjbGFyYXRvckxpc3RDaGVjayhjb25zdCBUU291cmNlTG9jICZsaW5lLCBj
b25zdCBUUHVibGljVHlwZSAmcFR5cGUpCit2b2lkIFRQYXJzZUNvbnRleHQ6OmNoZWNrRGVjbGFy
YXRvckxvY2F0aW9uSXNOb3RTcGVjaWZpZWQoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUUHVibGljVHlwZSAmcFR5cGUpCiB7CiAgICAgaWYgKHBUeXBlLmxheW91dFF1YWxpZmllci5s
b2NhdGlvbiAhPSAtMSkKICAgICB7CiAgICAgICAgIGVycm9yKGxpbmUsICJsb2NhdGlvbiBtdXN0
IG9ubHkgYmUgc3BlY2lmaWVkIGZvciBhIHNpbmdsZSBpbnB1dCBvciBvdXRwdXQgdmFyaWFibGUi
LAogICAgICAgICAgICAgICAibG9jYXRpb24iKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQorfQogCi0gICAgcmV0dXJuIGZhbHNlOwordm9pZCBUUGFyc2VDb250ZXh0OjpjaGVja0xvY2F0
aW9uSXNOb3RTcGVjaWZpZWQoY29uc3QgVFNvdXJjZUxvYyAmbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUTGF5b3V0UXVhbGlm
aWVyICZsYXlvdXRRdWFsaWZpZXIpCit7CisgICAgaWYgKGxheW91dFF1YWxpZmllci5sb2NhdGlv
biAhPSAtMSkKKyAgICB7CisgICAgICAgIGVycm9yKGxvY2F0aW9uLCAiaW52YWxpZCBsYXlvdXQg
cXVhbGlmaWVyOiIsICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJvbmx5IHZhbGlkIG9uIHBy
b2dyYW0gaW5wdXRzIGFuZCBvdXRwdXRzIik7CisgICAgfQogfQogCi1ib29sIFRQYXJzZUNvbnRl
eHQ6OnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRRdWFsaWZpZXIg
cXVhbGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUVHlwZSAmdHlwZSkKK3ZvaWQgVFBhcnNlQ29udGV4dDo6Y2hlY2tPdXRQYXJhbWV0
ZXJJc05vdFNhbXBsZXIoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRU
eXBlICZ0eXBlKQogewogICAgIGlmICgocXVhbGlmaWVyID09IEV2cU91dCB8fCBxdWFsaWZpZXIg
PT0gRXZxSW5PdXQpICYmIHR5cGUuZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0ICYmCiAgICAg
ICAgIElzU2FtcGxlcih0eXBlLmdldEJhc2ljVHlwZSgpKSkKICAgICB7CiAgICAgICAgIGVycm9y
KGxpbmUsICJzYW1wbGVycyBjYW5ub3QgYmUgb3V0cHV0IHBhcmFtZXRlcnMiLCB0eXBlLmdldEJh
c2ljU3RyaW5nKCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0KLSAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKIGJvb2wgVFBhcnNlQ29udGV4dDo6Y29udGFpbnNTYW1wbGVyKGNvbnN0IFRU
eXBlICZ0eXBlKQpAQCAtNzUwLDEyICs3MjgsOCBAQAogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
Ly8KIC8vIERvIHNpemUgY2hlY2tpbmcgZm9yIGFuIGFycmF5IHR5cGUncyBzaXplLgotLy8KLS8v
IFJldHVybnMgdHJ1ZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCi0vLwotYm9vbCBUUGFyc2VDb250
ZXh0OjphcnJheVNpemVFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIFRJbnRlcm1U
eXBlZCAqZXhwciwgaW50ICZzaXplKQordW5zaWduZWQgaW50IFRQYXJzZUNvbnRleHQ6OmNoZWNr
SXNWYWxpZEFycmF5U2l6ZShjb25zdCBUU291cmNlTG9jICZsaW5lLCBUSW50ZXJtVHlwZWQgKmV4
cHIpCiB7CiAgICAgVEludGVybUNvbnN0YW50VW5pb24gKmNvbnN0YW50ID0gZXhwci0+Z2V0QXND
b25zdGFudFVuaW9uKCk7CiAKQEAgLTc2NSwzNiArNzM5LDMyIEBACiAgICAgaWYgKGV4cHItPmdl
dFF1YWxpZmllcigpICE9IEV2cUNvbnN0IHx8IGNvbnN0YW50ID09IG51bGxwdHIgfHwgIWNvbnN0
YW50LT5pc1NjYWxhckludCgpKQogICAgIHsKICAgICAgICAgZXJyb3IobGluZSwgImFycmF5IHNp
emUgbXVzdCBiZSBhIGNvbnN0YW50IGludGVnZXIgZXhwcmVzc2lvbiIsICIiKTsKLSAgICAgICAg
c2l6ZSA9IDE7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gMXU7CiAgICAg
fQogCi0gICAgdW5zaWduZWQgaW50IHVuc2lnbmVkU2l6ZSA9IDA7CisgICAgdW5zaWduZWQgaW50
IHNpemUgPSAwdTsKIAogICAgIGlmIChjb25zdGFudC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0VUlu
dCkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkU2l6ZSA9IGNvbnN0YW50LT5nZXRVQ29uc3QoMCk7
Ci0gICAgICAgIHNpemUgICAgICAgICA9IHN0YXRpY19jYXN0PGludD4odW5zaWduZWRTaXplKTsK
KyAgICAgICAgc2l6ZSA9IGNvbnN0YW50LT5nZXRVQ29uc3QoMCk7CiAgICAgfQogICAgIGVsc2UK
ICAgICB7Ci0gICAgICAgIHNpemUgPSBjb25zdGFudC0+Z2V0SUNvbnN0KDApOworICAgICAgICBp
bnQgc2lnbmVkU2l6ZSA9IGNvbnN0YW50LT5nZXRJQ29uc3QoMCk7CiAKLSAgICAgICAgaWYgKHNp
emUgPCAwKQorICAgICAgICBpZiAoc2lnbmVkU2l6ZSA8IDApCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGVycm9yKGxpbmUsICJhcnJheSBzaXplIG11c3QgYmUgbm9uLW5lZ2F0aXZlIiwgIiIpOwot
ICAgICAgICAgICAgc2l6ZSA9IDE7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgIHJldHVybiAxdTsKICAgICAgICAgfQogCi0gICAgICAgIHVuc2lnbmVkU2l6ZSA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGludD4oc2l6ZSk7CisgICAgICAgIHNpemUgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBpbnQ+KHNpZ25lZFNpemUpOwogICAgIH0KIAotICAgIGlmIChzaXplID09IDApCisg
ICAgaWYgKHNpemUgPT0gMHUpCiAgICAgewogICAgICAgICBlcnJvcihsaW5lLCAiYXJyYXkgc2l6
ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvIiwgIiIpOwotICAgICAgICBzaXplID0gMTsKLSAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiAxdTsKICAgICB9CiAKICAgICAvLyBU
aGUgc2l6ZSBvZiBhcnJheXMgaXMgcmVzdHJpY3RlZCBoZXJlIHRvIHByZXZlbnQgaXNzdWVzIGZ1
cnRoZXIgZG93biB0aGUKQEAgLTgwMiw3MCArNzcyLDcyIEBACiAgICAgLy8gNDA5NiByZWdpc3Rl
cnMgc28gdGhpcyBzaG91bGQgYmUgcmVhc29uYWJsZSBldmVuIGZvciBhZ2dyZXNzaXZlbHkgb3B0
aW1pemFibGUgY29kZS4KICAgICBjb25zdCB1bnNpZ25lZCBpbnQgc2l6ZUxpbWl0ID0gNjU1MzY7
CiAKLSAgICBpZiAodW5zaWduZWRTaXplID4gc2l6ZUxpbWl0KQorICAgIGlmIChzaXplID4gc2l6
ZUxpbWl0KQogICAgIHsKICAgICAgICAgZXJyb3IobGluZSwgImFycmF5IHNpemUgdG9vIGxhcmdl
IiwgIiIpOwotICAgICAgICBzaXplID0gMTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IHJldHVybiAxdTsKICAgICB9CiAKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHNpemU7
CiB9CiAKLS8vCiAvLyBTZWUgaWYgdGhpcyBxdWFsaWZpZXIgY2FuIGJlIGFuIGFycmF5LgotLy8K
LS8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBhbiBlcnJvci4KLS8vCi1ib29sIFRQYXJzZUNv
bnRleHQ6OmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jICZsaW5lLCBj
b25zdCBUUHVibGljVHlwZSAmdHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6Y2hlY2tJc1ZhbGlk
UXVhbGlmaWVyRm9yQXJyYXkoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFB1YmxpY1R5cGUgJmVs
ZW1lbnRRdWFsaWZpZXIpCiB7Ci0gICAgaWYgKCh0eXBlLnF1YWxpZmllciA9PSBFdnFBdHRyaWJ1
dGUpIHx8ICh0eXBlLnF1YWxpZmllciA9PSBFdnFWZXJ0ZXhJbikgfHwKLSAgICAgICAgKHR5cGUu
cXVhbGlmaWVyID09IEV2cUNvbnN0ICYmIG1TaGFkZXJWZXJzaW9uIDwgMzAwKSkKKyAgICBpZiAo
KGVsZW1lbnRRdWFsaWZpZXIucXVhbGlmaWVyID09IEV2cUF0dHJpYnV0ZSkgfHwKKyAgICAgICAg
KGVsZW1lbnRRdWFsaWZpZXIucXVhbGlmaWVyID09IEV2cVZlcnRleEluKSB8fAorICAgICAgICAo
ZWxlbWVudFF1YWxpZmllci5xdWFsaWZpZXIgPT0gRXZxQ29uc3QgJiYgbVNoYWRlclZlcnNpb24g
PCAzMDApKQogICAgIHsKICAgICAgICAgZXJyb3IobGluZSwgImNhbm5vdCBkZWNsYXJlIGFycmF5
cyBvZiB0aGlzIHF1YWxpZmllciIsCi0gICAgICAgICAgICAgIFRUeXBlKHR5cGUpLmdldENvbXBs
ZXRlU3RyaW5nKCkuY19zdHIoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
ICBUVHlwZShlbGVtZW50UXVhbGlmaWVyKS5nZXRRdWFsaWZpZXJTdHJpbmcoKSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLS8vCi0vLyBTZWUgaWYgdGhpcyB0eXBlIGNhbiBiZSBhbiBhcnJheS4KLS8vCi0v
LyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgaXMgYW4gZXJyb3IuCi0vLwotYm9vbCBUUGFyc2VDb250
ZXh0OjphcnJheVR5cGVFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0IFRQ
dWJsaWNUeXBlICZ0eXBlKQorLy8gU2VlIGlmIHRoaXMgZWxlbWVudCB0eXBlIGNhbiBiZSBmb3Jt
ZWQgaW50byBhbiBhcnJheS4KK2Jvb2wgVFBhcnNlQ29udGV4dDo6Y2hlY2tJc1ZhbGlkVHlwZUZv
ckFycmF5KGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlICZlbGVtZW50
VHlwZSkKIHsKICAgICAvLwogICAgIC8vIENhbiB0aGUgdHlwZSBiZSBhbiBhcnJheT8KICAgICAv
LwotICAgIGlmICh0eXBlLmFycmF5KQorICAgIGlmIChlbGVtZW50VHlwZS5hcnJheSkKICAgICB7
Ci0gICAgICAgIGVycm9yKGxpbmUsICJjYW5ub3QgZGVjbGFyZSBhcnJheXMgb2YgYXJyYXlzIiwg
VFR5cGUodHlwZSkuZ2V0Q29tcGxldGVTdHJpbmcoKS5jX3N0cigpKTsKLSAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIGVycm9yKGxpbmUsICJjYW5ub3QgZGVjbGFyZSBhcnJheXMgb2YgYXJy
YXlzIiwKKyAgICAgICAgICAgICAgVFR5cGUoZWxlbWVudFR5cGUpLmdldENvbXBsZXRlU3RyaW5n
KCkuY19zdHIoKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gSW4gRVNT
TDEuMDAgc2hhZGVycywgc3RydWN0cyBjYW5ub3QgYmUgdmFyeWluZyAoc2VjdGlvbiA0LjMuNSku
IFRoaXMgaXMgY2hlY2tlZCBlbHNld2hlcmUuCiAgICAgLy8gSW4gRVNTTDMuMDAgc2hhZGVycywg
c3RydWN0IGlucHV0cy9vdXRwdXRzIGFyZSBhbGxvd2VkIGJ1dCBub3QgYXJyYXlzIG9mIHN0cnVj
dHMgKHNlY3Rpb24KICAgICAvLyA0LjMuNCkuCi0gICAgaWYgKG1TaGFkZXJWZXJzaW9uID49IDMw
MCAmJiB0eXBlLnR5cGUgPT0gRWJ0U3RydWN0ICYmIHNoOjpJc1ZhcnlpbmcodHlwZS5xdWFsaWZp
ZXIpKQorICAgIGlmIChtU2hhZGVyVmVyc2lvbiA+PSAzMDAgJiYgZWxlbWVudFR5cGUuZ2V0QmFz
aWNUeXBlKCkgPT0gRWJ0U3RydWN0ICYmCisgICAgICAgIHNoOjpJc1ZhcnlpbmcoZWxlbWVudFR5
cGUucXVhbGlmaWVyKSkKICAgICB7CiAgICAgICAgIGVycm9yKGxpbmUsICJjYW5ub3QgZGVjbGFy
ZSBhcnJheXMgb2Ygc3RydWN0cyBvZiB0aGlzIHF1YWxpZmllciIsCi0gICAgICAgICAgICAgIFRU
eXBlKHR5cGUpLmdldENvbXBsZXRlU3RyaW5nKCkuY19zdHIoKSk7Ci0gICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgICBUVHlwZShlbGVtZW50VHlwZSkuZ2V0Q29tcGxldGVTdHJpbmco
KS5jX3N0cigpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIHJldHVybiB0
cnVlOworfQorCisvLyBDaGVjayBpZiB0aGlzIHF1YWxpZmllZCBlbGVtZW50IHR5cGUgY2FuIGJl
IGZvcm1lZCBpbnRvIGFuIGFycmF5LgorYm9vbCBUUGFyc2VDb250ZXh0OjpjaGVja0lzVmFsaWRU
eXBlQW5kUXVhbGlmaWVyRm9yQXJyYXkoY29uc3QgVFNvdXJjZUxvYyAmaW5kZXhMb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFRQdWJsaWNUeXBlICZlbGVtZW50VHlwZSkKK3sKKyAgICBpZiAoY2hlY2tJc1ZhbGlk
VHlwZUZvckFycmF5KGluZGV4TG9jYXRpb24sIGVsZW1lbnRUeXBlKSkKKyAgICB7CisgICAgICAg
IHJldHVybiBjaGVja0lzVmFsaWRRdWFsaWZpZXJGb3JBcnJheShpbmRleExvY2F0aW9uLCBlbGVt
ZW50VHlwZSk7CisgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotLy8KIC8vIEVuZm9yY2Ug
bm9uLWluaXRpYWxpemVyIHR5cGUvcXVhbGlmaWVyIHJ1bGVzLgotLy8KLS8vIFJldHVybnMgdHJ1
ZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCi0vLwotYm9vbCBUUGFyc2VDb250ZXh0Ojpub25Jbml0
RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jICZsaW5lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUUHVibGljVHlwZSAqdHlwZSkKK3ZvaWQgVFBhcnNl
Q29udGV4dDo6Y2hlY2tDYW5CZURlY2xhcmVkV2l0aG91dEluaXRpYWxpemVyKGNvbnN0IFRTb3Vy
Y2VMb2MgJmxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFB1YmxpY1R5cGUgKnR5
cGUpCiB7CiAgICAgQVNTRVJUKHR5cGUgIT0gbnVsbHB0cik7CiAgICAgaWYgKHR5cGUtPnF1YWxp
ZmllciA9PSBFdnFDb25zdCkKQEAgLTg4NiwxNSArODU4LDEyIEBACiAgICAgICAgIHsKICAgICAg
ICAgICAgIGVycm9yKGxpbmUsICJ2YXJpYWJsZXMgd2l0aCBxdWFsaWZpZXIgJ2NvbnN0JyBtdXN0
IGJlIGluaXRpYWxpemVkIiwgaWRlbnRpZmllci5jX3N0cigpKTsKICAgICAgICAgfQotCi0gICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh0eXBlLT5p
c1Vuc2l6ZWRBcnJheSgpKQogICAgIHsKICAgICAgICAgZXJyb3IobGluZSwgImltcGxpY2l0bHkg
c2l6ZWQgYXJyYXlzIG5lZWQgdG8gYmUgaW5pdGlhbGl6ZWQiLCBpZGVudGlmaWVyLmNfc3RyKCkp
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwogfQogCiAv
LyBEbyBzb21lIHNpbXBsZSBjaGVja3MgdGhhdCBhcmUgc2hhcmVkIGJldHdlZW4gYWxsIHZhcmlh
YmxlIGRlY2xhcmF0aW9ucywKQEAgLTkwOSw3ICs4NzgsNyBAQAogewogICAgIEFTU0VSVCgoKnZh
cmlhYmxlKSA9PSBudWxscHRyKTsKIAotICAgIGJvb2wgbmVlZHNSZXNlcnZlZEVycm9yQ2hlY2sg
PSB0cnVlOworICAgIGJvb2wgbmVlZHNSZXNlcnZlZENoZWNrID0gdHJ1ZTsKIAogICAgIC8vIGds
X0xhc3RGcmFnRGF0YSBtYXkgYmUgcmVkZWNsYXJlZCB3aXRoIGEgbmV3IHByZWNpc2lvbiBxdWFs
aWZpZXIKICAgICBpZiAodHlwZS5pc0FycmF5KCkgJiYgaWRlbnRpZmllci5jb21wYXJlKDAsIDE1
LCAiZ2xfTGFzdEZyYWdEYXRhIikgPT0gMCkKQEAgLTkxNiwxMSArODg1LDExIEBACiAgICAgewog
ICAgICAgICBjb25zdCBUVmFyaWFibGUgKm1heERyYXdCdWZmZXJzID0gc3RhdGljX2Nhc3Q8Y29u
c3QgVFZhcmlhYmxlICo+KAogICAgICAgICAgICAgc3ltYm9sVGFibGUuZmluZEJ1aWx0SW4oImds
X01heERyYXdCdWZmZXJzIiwgbVNoYWRlclZlcnNpb24pKTsKLSAgICAgICAgaWYgKHR5cGUuZ2V0
QXJyYXlTaXplKCkgPT0gbWF4RHJhd0J1ZmZlcnMtPmdldENvbnN0UG9pbnRlcigpLT5nZXRJQ29u
c3QoKSkKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4odHlwZS5nZXRBcnJheVNpemUoKSkg
PT0gbWF4RHJhd0J1ZmZlcnMtPmdldENvbnN0UG9pbnRlcigpLT5nZXRJQ29uc3QoKSkKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKFRTeW1ib2wgKmJ1aWx0SW5TeW1ib2wgPSBzeW1ib2xUYWJs
ZS5maW5kQnVpbHRJbihpZGVudGlmaWVyLCBtU2hhZGVyVmVyc2lvbikpCiAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgbmVlZHNSZXNlcnZlZEVycm9yQ2hlY2sgPSBleHRlbnNpb25FcnJv
ckNoZWNrKGxpbmUsIGJ1aWx0SW5TeW1ib2wtPmdldEV4dGVuc2lvbigpKTsKKyAgICAgICAgICAg
ICAgICBuZWVkc1Jlc2VydmVkQ2hlY2sgPSAhY2hlY2tDYW5Vc2VFeHRlbnNpb24obGluZSwgYnVp
bHRJblN5bWJvbC0+Z2V0RXh0ZW5zaW9uKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIGVsc2UKQEAgLTkzMSw3ICs5MDAsNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAg
aWYgKG5lZWRzUmVzZXJ2ZWRFcnJvckNoZWNrICYmIHJlc2VydmVkRXJyb3JDaGVjayhsaW5lLCBp
ZGVudGlmaWVyKSkKKyAgICBpZiAobmVlZHNSZXNlcnZlZENoZWNrICYmICFjaGVja0lzTm90UmVz
ZXJ2ZWQobGluZSwgaWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICgq
dmFyaWFibGUpID0gbmV3IFRWYXJpYWJsZSgmaWRlbnRpZmllciwgdHlwZSk7CkBAIC05NDIsMzgg
KzkxMSwzMyBAQAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKHZvaWRF
cnJvckNoZWNrKGxpbmUsIGlkZW50aWZpZXIsIHR5cGUuZ2V0QmFzaWNUeXBlKCkpKQorICAgIGlm
ICghY2hlY2tJc05vblZvaWQobGluZSwgaWRlbnRpZmllciwgdHlwZS5nZXRCYXNpY1R5cGUoKSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFRQ
YXJzZUNvbnRleHQ6OnBhcmFtRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jICZsaW5lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUXVhbGlmaWVyIHBhcmFtUXVhbGlm
aWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFR5cGUgKnR5cGUpCit2
b2lkIFRQYXJzZUNvbnRleHQ6OmNoZWNrSXNQYXJhbWV0ZXJRdWFsaWZpZXJWYWxpZCgKKyAgICBj
b25zdCBUU291cmNlTG9jICZsaW5lLAorICAgIGNvbnN0IFRUeXBlUXVhbGlmaWVyQnVpbGRlciAm
dHlwZVF1YWxpZmllckJ1aWxkZXIsCisgICAgVFR5cGUgKnR5cGUpCiB7Ci0gICAgaWYgKHF1YWxp
ZmllciAhPSBFdnFDb25zdCAmJiBxdWFsaWZpZXIgIT0gRXZxVGVtcG9yYXJ5KQorICAgIFRUeXBl
UXVhbGlmaWVyIHR5cGVRdWFsaWZpZXIgPSB0eXBlUXVhbGlmaWVyQnVpbGRlci5nZXRQYXJhbWV0
ZXJUeXBlUXVhbGlmaWVyKCZtRGlhZ25vc3RpY3MpOworCisgICAgaWYgKHR5cGVRdWFsaWZpZXIu
cXVhbGlmaWVyID09IEV2cU91dCB8fCB0eXBlUXVhbGlmaWVyLnF1YWxpZmllciA9PSBFdnFJbk91
dCkKICAgICB7Ci0gICAgICAgIGVycm9yKGxpbmUsICJxdWFsaWZpZXIgbm90IGFsbG93ZWQgb24g
ZnVuY3Rpb24gcGFyYW1ldGVyIiwgZ2V0UXVhbGlmaWVyU3RyaW5nKHF1YWxpZmllcikpOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2hlY2tPdXRQYXJhbWV0ZXJJc05vdFNhbXBsZXIo
bGluZSwgdHlwZVF1YWxpZmllci5xdWFsaWZpZXIsICp0eXBlKTsKICAgICB9Ci0gICAgaWYgKHF1
YWxpZmllciA9PSBFdnFDb25zdCAmJiBwYXJhbVF1YWxpZmllciAhPSBFdnFJbikKKworICAgIHR5
cGUtPnNldFF1YWxpZmllcih0eXBlUXVhbGlmaWVyLnF1YWxpZmllcik7CisKKyAgICBpZiAodHlw
ZVF1YWxpZmllci5wcmVjaXNpb24gIT0gRWJwVW5kZWZpbmVkKQogICAgIHsKLSAgICAgICAgZXJy
b3IobGluZSwgInF1YWxpZmllciBub3QgYWxsb3dlZCB3aXRoICIsIGdldFF1YWxpZmllclN0cmlu
ZyhxdWFsaWZpZXIpLAotICAgICAgICAgICAgICBnZXRRdWFsaWZpZXJTdHJpbmcocGFyYW1RdWFs
aWZpZXIpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHR5cGUtPnNldFByZWNpc2lv
bih0eXBlUXVhbGlmaWVyLnByZWNpc2lvbik7CiAgICAgfQotCi0gICAgaWYgKHF1YWxpZmllciA9
PSBFdnFDb25zdCkKLSAgICAgICAgdHlwZS0+c2V0UXVhbGlmaWVyKEV2cUNvbnN0UmVhZE9ubHkp
OwotICAgIGVsc2UKLSAgICAgICAgdHlwZS0+c2V0UXVhbGlmaWVyKHBhcmFtUXVhbGlmaWVyKTsK
LQotICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0OjpleHRlbnNpb25F
cnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0IFRTdHJpbmcgJmV4dGVuc2lv
bikKK2Jvb2wgVFBhcnNlQ29udGV4dDo6Y2hlY2tDYW5Vc2VFeHRlbnNpb24oY29uc3QgVFNvdXJj
ZUxvYyAmbGluZSwgY29uc3QgVFN0cmluZyAmZXh0ZW5zaW9uKQogewogICAgIGNvbnN0IFRFeHRl
bnNpb25CZWhhdmlvciAmZXh0QmVoYXZpb3IgICA9IGV4dGVuc2lvbkJlaGF2aW9yKCk7CiAgICAg
VEV4dGVuc2lvbkJlaGF2aW9yOjpjb25zdF9pdGVyYXRvciBpdGVyID0gZXh0QmVoYXZpb3IuZmlu
ZChleHRlbnNpb24uY19zdHIoKSk7CkBAIC05ODAsMjcgKzk0NCwyNiBAQAogICAgIGlmIChpdGVy
ID09IGV4dEJlaGF2aW9yLmVuZCgpKQogICAgIHsKICAgICAgICAgZXJyb3IobGluZSwgImV4dGVu
c2lvbiIsIGV4dGVuc2lvbi5jX3N0cigpLCAiaXMgbm90IHN1cHBvcnRlZCIpOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBJbiBHTFNM
IEVTLCBhbiBleHRlbnNpb24ncyBkZWZhdWx0IGJlaGF2aW9yIGlzICJkaXNhYmxlIi4KICAgICBp
ZiAoaXRlci0+c2Vjb25kID09IEVCaERpc2FibGUgfHwgaXRlci0+c2Vjb25kID09IEVCaFVuZGVm
aW5lZCkKICAgICB7CiAgICAgICAgIGVycm9yKGxpbmUsICJleHRlbnNpb24iLCBleHRlbnNpb24u
Y19zdHIoKSwgImlzIGRpc2FibGVkIik7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlmIChpdGVyLT5zZWNvbmQgPT0gRUJoV2FybikKICAg
ICB7CiAgICAgICAgIHdhcm5pbmcobGluZSwgImV4dGVuc2lvbiIsIGV4dGVuc2lvbi5jX3N0cigp
LCAiaXMgYmVpbmcgdXNlZCIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogLy8gVGhlc2UgY2hlY2tzIGFyZSBjb21tb24gZm9yIGFsbCBkZWNsYXJhdGlvbnMgc3RhcnRp
bmcgYSBkZWNsYXJhdG9yIGxpc3QsIGFuZCBkZWNsYXJhdG9ycyB0aGF0CiAvLyBmb2xsb3cgYW4g
ZW1wdHkgZGVjbGFyYXRpb24uCi0vLwotYm9vbCBUUGFyc2VDb250ZXh0OjpzaW5nbGVEZWNsYXJh
dGlvbkVycm9yQ2hlY2soY29uc3QgVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUsCit2b2lkIFRQYXJz
ZUNvbnRleHQ6OnNpbmdsZURlY2xhcmF0aW9uRXJyb3JDaGVjayhjb25zdCBUUHVibGljVHlwZSAm
cHVibGljVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlkZW50aWZpZXJMb2NhdGlvbikKIHsKICAgICBzd2l0Y2gg
KHB1YmxpY1R5cGUucXVhbGlmaWVyKQpAQCAtMTAxMCwxMSArOTczLDEyIEBACiAgICAgICAgIGNh
c2UgRXZxQXR0cmlidXRlOgogICAgICAgICBjYXNlIEV2cVZlcnRleEluOgogICAgICAgICBjYXNl
IEV2cUZyYWdtZW50T3V0OgotICAgICAgICAgICAgaWYgKHB1YmxpY1R5cGUudHlwZSA9PSBFYnRT
dHJ1Y3QpCisgICAgICAgIGNhc2UgRXZxQ29tcHV0ZUluOgorICAgICAgICAgICAgaWYgKHB1Ymxp
Y1R5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KQogICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgIGVycm9yKGlkZW50aWZpZXJMb2NhdGlvbiwgImNhbm5vdCBiZSB1c2VkIHdpdGgg
YSBzdHJ1Y3R1cmUiLAogICAgICAgICAgICAgICAgICAgICAgIGdldFF1YWxpZmllclN0cmluZyhw
dWJsaWNUeXBlLnF1YWxpZmllcikpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICBkZWZhdWx0OgpA
QCAtMTAyMiw5ICs5ODYsMTAgQEAKICAgICB9CiAKICAgICBpZiAocHVibGljVHlwZS5xdWFsaWZp
ZXIgIT0gRXZxVW5pZm9ybSAmJgotICAgICAgICBzYW1wbGVyRXJyb3JDaGVjayhpZGVudGlmaWVy
TG9jYXRpb24sIHB1YmxpY1R5cGUsICJzYW1wbGVycyBtdXN0IGJlIHVuaWZvcm0iKSkKKyAgICAg
ICAgIWNoZWNrSXNOb3RTYW1wbGVyKGlkZW50aWZpZXJMb2NhdGlvbiwgcHVibGljVHlwZS50eXBl
U3BlY2lmaWVyTm9uQXJyYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAic2FtcGxlcnMg
bXVzdCBiZSB1bmlmb3JtIikpCiAgICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIC8vIGNoZWNrIGZvciBsYXlvdXQgcXVhbGlmaWVyIGlzc3Vl
cwpAQCAtMTAzNSw3ICsxMDAwLDcgQEAKICAgICAgICAgZXJyb3IoaWRlbnRpZmllckxvY2F0aW9u
LCAibGF5b3V0IHF1YWxpZmllciIsCiAgICAgICAgICAgICAgIGdldE1hdHJpeFBhY2tpbmdTdHJp
bmcobGF5b3V0UXVhbGlmaWVyLm1hdHJpeFBhY2tpbmcpLAogICAgICAgICAgICAgICAib25seSB2
YWxpZCBmb3IgaW50ZXJmYWNlIGJsb2NrcyIpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChsYXlvdXRRdWFsaWZpZXIuYmxvY2tTdG9yYWdl
ICE9IEVic1Vuc3BlY2lmaWVkKQpAQCAtMTA0MywzMyArMTAwOCw0NSBAQAogICAgICAgICBlcnJv
cihpZGVudGlmaWVyTG9jYXRpb24sICJsYXlvdXQgcXVhbGlmaWVyIiwKICAgICAgICAgICAgICAg
Z2V0QmxvY2tTdG9yYWdlU3RyaW5nKGxheW91dFF1YWxpZmllci5ibG9ja1N0b3JhZ2UpLAogICAg
ICAgICAgICAgICAib25seSB2YWxpZCBmb3IgaW50ZXJmYWNlIGJsb2NrcyIpOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChwdWJsaWNUeXBl
LnF1YWxpZmllciAhPSBFdnFWZXJ0ZXhJbiAmJiBwdWJsaWNUeXBlLnF1YWxpZmllciAhPSBFdnFG
cmFnbWVudE91dCAmJgotICAgICAgICBsYXlvdXRMb2NhdGlvbkVycm9yQ2hlY2soaWRlbnRpZmll
ckxvY2F0aW9uLCBwdWJsaWNUeXBlLmxheW91dFF1YWxpZmllcikpCisgICAgaWYgKHB1YmxpY1R5
cGUucXVhbGlmaWVyICE9IEV2cVZlcnRleEluICYmIHB1YmxpY1R5cGUucXVhbGlmaWVyICE9IEV2
cUZyYWdtZW50T3V0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGNoZWNr
TG9jYXRpb25Jc05vdFNwZWNpZmllZChpZGVudGlmaWVyTG9jYXRpb24sIHB1YmxpY1R5cGUubGF5
b3V0UXVhbGlmaWVyKTsKICAgICB9Cit9CiAKLSAgICByZXR1cm4gZmFsc2U7Cit2b2lkIFRQYXJz
ZUNvbnRleHQ6OmNoZWNrTGF5b3V0UXVhbGlmaWVyU3VwcG9ydGVkKGNvbnN0IFRTb3VyY2VMb2Mg
JmxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUU3RyaW5nICZsYXlvdXRRdWFsaWZpZXJOYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmVyc2lvblJlcXVpcmVkKQor
eworCisgICAgaWYgKG1TaGFkZXJWZXJzaW9uIDwgdmVyc2lvblJlcXVpcmVkKQorICAgIHsKKyAg
ICAgICAgZXJyb3IobG9jYXRpb24sICJpbnZhbGlkIGxheW91dCBxdWFsaWZpZXI6IiwgbGF5b3V0
UXVhbGlmaWVyTmFtZS5jX3N0cigpLCAibm90IHN1cHBvcnRlZCIpOworICAgIH0KIH0KIAotYm9v
bCBUUGFyc2VDb250ZXh0OjpsYXlvdXRMb2NhdGlvbkVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxv
YyAmbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUTGF5b3V0UXVhbGlmaWVyICZsYXlvdXRRdWFsaWZpZXIpCitib29sIFRQYXJzZUNv
bnRleHQ6OmNoZWNrV29ya0dyb3VwU2l6ZUlzTm90U3BlY2lmaWVkKGNvbnN0IFRTb3VyY2VMb2Mg
JmxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUTGF5b3V0UXVhbGlmaWVyICZsYXlvdXRRdWFsaWZpZXIpCiB7Ci0gICAg
aWYgKGxheW91dFF1YWxpZmllci5sb2NhdGlvbiAhPSAtMSkKKyAgICBjb25zdCBzaDo6V29ya0dy
b3VwU2l6ZSAmbG9jYWxTaXplID0gbGF5b3V0UXVhbGlmaWVyLmxvY2FsU2l6ZTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMHU7IGkgPCBsb2NhbFNpemUuc2l6ZSgpOyArK2kpCiAgICAgewotICAgICAg
ICBlcnJvcihsb2NhdGlvbiwgImludmFsaWQgbGF5b3V0IHF1YWxpZmllcjoiLCAibG9jYXRpb24i
LAotICAgICAgICAgICAgICAib25seSB2YWxpZCBvbiBwcm9ncmFtIGlucHV0cyBhbmQgb3V0cHV0
cyIpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKGxvY2FsU2l6ZVtpXSAhPSAt
MSkKKyAgICAgICAgeworICAgICAgICAgICAgZXJyb3IobG9jYXRpb24sICJpbnZhbGlkIGxheW91
dCBxdWFsaWZpZXI6IiwgZ2V0V29ya0dyb3VwU2l6ZVN0cmluZyhpKSwKKyAgICAgICAgICAgICAg
ICAgICJvbmx5IHZhbGlkIHdoZW4gdXNlZCB3aXRoICdpbicgaW4gYSBjb21wdXRlIHNoYWRlciBn
bG9iYWwgbGF5b3V0IGRlY2xhcmF0aW9uIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6ZnVuY3Rpb25DYWxsTFZhbHVlRXJyb3JDaGVjayhjb25z
dCBURnVuY3Rpb24gKmZuQ2FuZGlkYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3JlZ2F0ZSkKK3ZvaWQgVFBh
cnNlQ29udGV4dDo6ZnVuY3Rpb25DYWxsTFZhbHVlRXJyb3JDaGVjayhjb25zdCBURnVuY3Rpb24g
KmZuQ2FuZGlkYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmZuQ2FsbCkKIHsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGZuQ2FuZGlkYXRlLT5nZXRQYXJhbUNvdW50KCk7ICsraSkKICAgICB7CkBAIC0xMDc2
LDI3ICsxMDUzLDM5IEBACiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGZuQ2FuZGlkYXRlLT5n
ZXRQYXJhbShpKS50eXBlLT5nZXRRdWFsaWZpZXIoKTsKICAgICAgICAgaWYgKHF1YWwgPT0gRXZx
T3V0IHx8IHF1YWwgPT0gRXZxSW5PdXQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFRJbnRlcm1U
eXBlZCAqbm9kZSA9ICgqKGFnZ3JlZ2F0ZS0+Z2V0U2VxdWVuY2UoKSkpW2ldLT5nZXRBc1R5cGVk
KCk7Ci0gICAgICAgICAgICBpZiAobFZhbHVlRXJyb3JDaGVjayhub2RlLT5nZXRMaW5lKCksICJh
c3NpZ24iLCBub2RlKSkKKyAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqYXJndW1lbnQgPSAoKihm
bkNhbGwtPmdldFNlcXVlbmNlKCkpKVtpXS0+Z2V0QXNUeXBlZCgpOworICAgICAgICAgICAgaWYg
KCFjaGVja0NhbkJlTFZhbHVlKGFyZ3VtZW50LT5nZXRMaW5lKCksICJhc3NpZ24iLCBhcmd1bWVu
dCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZXJyb3Iobm9kZS0+Z2V0TGluZSgp
LAorICAgICAgICAgICAgICAgIGVycm9yKGFyZ3VtZW50LT5nZXRMaW5lKCksCiAgICAgICAgICAg
ICAgICAgICAgICAgIkNvbnN0YW50IHZhbHVlIGNhbm5vdCBiZSBwYXNzZWQgZm9yICdvdXQnIG9y
ICdpbm91dCcgcGFyYW1ldGVycy4iLCAiRXJyb3IiKTsKLSAgICAgICAgICAgICAgICByZWNvdmVy
KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBmYWxzZTsKIH0K
IAotdm9pZCBUUGFyc2VDb250ZXh0OjplczNJbnZhcmlhbnRFcnJvckNoZWNrKGNvbnN0IFRRdWFs
aWZpZXIgcXVhbGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRTb3VyY2VMb2MgJmludmFyaWFudExvY2F0aW9uKQordm9pZCBUUGFyc2VDb250
ZXh0OjpjaGVja0ludmFyaWFudFZhcmlhYmxlUXVhbGlmaWVyKGJvb2wgaW52YXJpYW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRR
dWFsaWZpZXIgcXVhbGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmludmFyaWFudExvY2F0aW9uKQogewot
ICAgIGlmICghc2g6OklzVmFyeWluZ091dChxdWFsaWZpZXIpICYmIHF1YWxpZmllciAhPSBFdnFG
cmFnbWVudE91dCkKKyAgICBpZiAoIWludmFyaWFudCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKG1TaGFkZXJWZXJzaW9uIDwgMzAwKQogICAgIHsKLSAgICAgICAgZXJyb3IoaW52YXJpYW50
TG9jYXRpb24sICJPbmx5IG91dCB2YXJpYWJsZXMgY2FuIGJlIGludmFyaWFudC4iLCAiaW52YXJp
YW50Iik7Ci0gICAgICAgIHJlY292ZXIoKTsKKyAgICAgICAgLy8gaW5wdXQgdmFyaWFibGVzIGlu
IHRoZSBmcmFnbWVudCBzaGFkZXIgY2FuIGJlIGFsc28gcXVhbGlmaWVkIGFzIGludmFyaWFudAor
ICAgICAgICBpZiAoIXNoOjpDYW5CZUludmFyaWFudEVTU0wxKHF1YWxpZmllcikpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGVycm9yKGludmFyaWFudExvY2F0aW9uLCAiQ2Fubm90IGJlIHF1YWxp
ZmllZCBhcyBpbnZhcmlhbnQuIiwgImludmFyaWFudCIpOworICAgICAgICB9CiAgICAgfQorICAg
IGVsc2UKKyAgICB7CisgICAgICAgIGlmICghc2g6OkNhbkJlSW52YXJpYW50RVNTTDNPckdyZWF0
ZXIocXVhbGlmaWVyKSkKKyAgICAgICAgeworICAgICAgICAgICAgZXJyb3IoaW52YXJpYW50TG9j
YXRpb24sICJDYW5ub3QgYmUgcXVhbGlmaWVkIGFzIGludmFyaWFudC4iLCAiaW52YXJpYW50Iik7
CisgICAgICAgIH0KKyAgICB9CiB9CiAKIGJvb2wgVFBhcnNlQ29udGV4dDo6c3VwcG9ydHNFeHRl
bnNpb24oY29uc3QgY2hhciAqZXh0ZW5zaW9uKQpAQCAtMTEzMiw2ICsxMTIxLDIzIEBACiAgICAg
bURpcmVjdGl2ZUhhbmRsZXIuaGFuZGxlUHJhZ21hKHNyY0xvYywgbmFtZSwgdmFsdWUsIHN0ZGds
KTsKIH0KIAorc2g6OldvcmtHcm91cFNpemUgVFBhcnNlQ29udGV4dDo6Z2V0Q29tcHV0ZVNoYWRl
ckxvY2FsU2l6ZSgpIGNvbnN0Cit7CisgICAgc2g6OldvcmtHcm91cFNpemUgcmVzdWx0OworICAg
IGZvciAoc2l6ZV90IGkgPSAwdTsgaSA8IHJlc3VsdC5zaXplKCk7ICsraSkKKyAgICB7CisgICAg
ICAgIGlmIChtQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZURlY2xhcmVkICYmIG1Db21wdXRlU2hhZGVy
TG9jYWxTaXplW2ldID09IC0xKQorICAgICAgICB7CisgICAgICAgICAgICByZXN1bHRbaV0gPSAx
OworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcmVzdWx0
W2ldID0gbUNvbXB1dGVTaGFkZXJMb2NhbFNpemVbaV07CisgICAgICAgIH0KKyAgICB9CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKwogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLwogLy8gTm9u
LUVycm9ycy4KQEAgLTExNDcsMTIgKzExNTMsMTAgQEAKICAgICBpZiAoIXN5bWJvbCkKICAgICB7
CiAgICAgICAgIGVycm9yKGxvY2F0aW9uLCAidW5kZWNsYXJlZCBpZGVudGlmaWVyIiwgbmFtZS0+
Y19zdHIoKSk7Ci0gICAgICAgIHJlY292ZXIoKTsKICAgICB9CiAgICAgZWxzZSBpZiAoIXN5bWJv
bC0+aXNWYXJpYWJsZSgpKQogICAgIHsKICAgICAgICAgZXJyb3IobG9jYXRpb24sICJ2YXJpYWJs
ZSBleHBlY3RlZCIsIG5hbWUtPmNfc3RyKCkpOwotICAgICAgICByZWNvdmVyKCk7CiAgICAgfQog
ICAgIGVsc2UKICAgICB7CkBAIC0xMTU5LDEwICsxMTYzLDkgQEAKICAgICAgICAgdmFyaWFibGUg
PSBzdGF0aWNfY2FzdDxjb25zdCBUVmFyaWFibGUgKj4oc3ltYm9sKTsKIAogICAgICAgICBpZiAo
c3ltYm9sVGFibGUuZmluZEJ1aWx0SW4odmFyaWFibGUtPmdldE5hbWUoKSwgbVNoYWRlclZlcnNp
b24pICYmCi0gICAgICAgICAgICAhdmFyaWFibGUtPmdldEV4dGVuc2lvbigpLmVtcHR5KCkgJiYK
LSAgICAgICAgICAgIGV4dGVuc2lvbkVycm9yQ2hlY2sobG9jYXRpb24sIHZhcmlhYmxlLT5nZXRF
eHRlbnNpb24oKSkpCisgICAgICAgICAgICAhdmFyaWFibGUtPmdldEV4dGVuc2lvbigpLmVtcHR5
KCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJlY292ZXIoKTsKKyAgICAgICAgICAgIGNoZWNr
Q2FuVXNlRXh0ZW5zaW9uKGxvY2F0aW9uLCB2YXJpYWJsZS0+Z2V0RXh0ZW5zaW9uKCkpOwogICAg
ICAgICB9CiAKICAgICAgICAgLy8gUmVqZWN0IHNoYWRlcnMgdXNpbmcgYm90aCBnbF9GcmFnRGF0
YSBhbmQgZ2xfRnJhZ0NvbG9yCkBAIC0xMTk0LDggKzExOTcsMTYgQEAKICAgICAgICAgICAgICAg
ICAgICAgIiBhbmQgKGdsX0ZyYWdDb2xvciwgZ2xfU2Vjb25kYXJ5RnJhZ0NvbG9yRVhUKSI7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwgZXJyb3JNZXNzYWdlLCBu
YW1lLT5jX3N0cigpKTsKLSAgICAgICAgICAgIHJlY292ZXIoKTsKICAgICAgICAgfQorCisgICAg
ICAgIC8vIEdMU0wgRVMgMy4xIFJldmlzaW9uIDQsIDcuMS4zIENvbXB1dGUgU2hhZGVyIFNwZWNp
YWwgVmFyaWFibGVzCisgICAgICAgIGlmIChnZXRTaGFkZXJUeXBlKCkgPT0gR0xfQ09NUFVURV9T
SEFERVIgJiYgIW1Db21wdXRlU2hhZGVyTG9jYWxTaXplRGVjbGFyZWQgJiYKKyAgICAgICAgICAg
IHF1YWxpZmllciA9PSBFdnFXb3JrR3JvdXBTaXplKQorICAgICAgICB7CisgICAgICAgICAgICBl
cnJvcihsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICJJdCBpcyBhbiBlcnJvciB0byB1c2Ug
Z2xfV29ya0dyb3VwU2l6ZSBiZWZvcmUgZGVjbGFyaW5nIHRoZSBsb2NhbCBncm91cCBzaXplIiwK
KyAgICAgICAgICAgICAgICAgICJnbF9Xb3JrR3JvdXBTaXplIik7CisgICAgICAgIH0KICAgICB9
CiAKICAgICBpZiAoIXZhcmlhYmxlKQpAQCAtMTM3Niw2NiArMTM4Nyw4MiBAQAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotVFB1YmxpY1R5cGUgVFBhcnNlQ29udGV4dDo6YWRkRnVsbHlTcGVjaWZp
ZWRUeXBlKFRRdWFsaWZpZXIgcXVhbGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW52YXJpYW50LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRMYXlvdXRRdWFsaWZpZXIgbGF5b3V0UXVh
bGlmaWVyLAorVFB1YmxpY1R5cGUgVFBhcnNlQ29udGV4dDo6YWRkRnVsbHlTcGVjaWZpZWRUeXBl
KGNvbnN0IFRUeXBlUXVhbGlmaWVyQnVpbGRlciAmdHlwZVF1YWxpZmllckJ1aWxkZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFB1Ymxp
Y1R5cGUgJnR5cGVTcGVjaWZpZXIpCiB7CisgICAgVFR5cGVRdWFsaWZpZXIgdHlwZVF1YWxpZmll
ciA9IHR5cGVRdWFsaWZpZXJCdWlsZGVyLmdldFZhcmlhYmxlVHlwZVF1YWxpZmllcigmbURpYWdu
b3N0aWNzKTsKKwogICAgIFRQdWJsaWNUeXBlIHJldHVyblR5cGUgICAgID0gdHlwZVNwZWNpZmll
cjsKLSAgICByZXR1cm5UeXBlLnF1YWxpZmllciAgICAgICA9IHF1YWxpZmllcjsKLSAgICByZXR1
cm5UeXBlLmludmFyaWFudCAgICAgICA9IGludmFyaWFudDsKLSAgICByZXR1cm5UeXBlLmxheW91
dFF1YWxpZmllciA9IGxheW91dFF1YWxpZmllcjsKKyAgICByZXR1cm5UeXBlLnF1YWxpZmllciAg
ICAgICA9IHR5cGVRdWFsaWZpZXIucXVhbGlmaWVyOworICAgIHJldHVyblR5cGUuaW52YXJpYW50
ICAgICAgID0gdHlwZVF1YWxpZmllci5pbnZhcmlhbnQ7CisgICAgcmV0dXJuVHlwZS5sYXlvdXRR
dWFsaWZpZXIgPSB0eXBlUXVhbGlmaWVyLmxheW91dFF1YWxpZmllcjsKKyAgICByZXR1cm5UeXBl
LnByZWNpc2lvbiAgICAgICA9IHR5cGVTcGVjaWZpZXIucHJlY2lzaW9uOwogCisgICAgaWYgKHR5
cGVRdWFsaWZpZXIucHJlY2lzaW9uICE9IEVicFVuZGVmaW5lZCkKKyAgICB7CisgICAgICAgIHJl
dHVyblR5cGUucHJlY2lzaW9uID0gdHlwZVF1YWxpZmllci5wcmVjaXNpb247CisgICAgfQorCisg
ICAgY2hlY2tQcmVjaXNpb25TcGVjaWZpZWQodHlwZVNwZWNpZmllci5nZXRMaW5lKCksIHJldHVy
blR5cGUucHJlY2lzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVTcGVjaWZp
ZXIuZ2V0QmFzaWNUeXBlKCkpOworCisgICAgY2hlY2tJbnZhcmlhbnRWYXJpYWJsZVF1YWxpZmll
cihyZXR1cm5UeXBlLmludmFyaWFudCwgcmV0dXJuVHlwZS5xdWFsaWZpZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlU3BlY2lmaWVyLmdldExpbmUoKSk7CisKKyAg
ICBjaGVja1dvcmtHcm91cFNpemVJc05vdFNwZWNpZmllZCh0eXBlU3BlY2lmaWVyLmdldExpbmUo
KSwgcmV0dXJuVHlwZS5sYXlvdXRRdWFsaWZpZXIpOworCiAgICAgaWYgKG1TaGFkZXJWZXJzaW9u
IDwgMzAwKQogICAgIHsKICAgICAgICAgaWYgKHR5cGVTcGVjaWZpZXIuYXJyYXkpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGVycm9yKHR5cGVTcGVjaWZpZXIubGluZSwgIm5vdCBzdXBwb3J0ZWQi
LCAiZmlyc3QtY2xhc3MgYXJyYXkiKTsKLSAgICAgICAgICAgIHJlY292ZXIoKTsKKyAgICAgICAg
ICAgIGVycm9yKHR5cGVTcGVjaWZpZXIuZ2V0TGluZSgpLCAibm90IHN1cHBvcnRlZCIsICJmaXJz
dC1jbGFzcyBhcnJheSIpOwogICAgICAgICAgICAgcmV0dXJuVHlwZS5jbGVhckFycmF5bmVzcygp
OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHF1YWxpZmllciA9PSBFdnFBdHRyaWJ1dGUgJiYK
LSAgICAgICAgICAgICh0eXBlU3BlY2lmaWVyLnR5cGUgPT0gRWJ0Qm9vbCB8fCB0eXBlU3BlY2lm
aWVyLnR5cGUgPT0gRWJ0SW50KSkKKyAgICAgICAgaWYgKHJldHVyblR5cGUucXVhbGlmaWVyID09
IEV2cUF0dHJpYnV0ZSAmJgorICAgICAgICAgICAgKHR5cGVTcGVjaWZpZXIuZ2V0QmFzaWNUeXBl
KCkgPT0gRWJ0Qm9vbCB8fCB0eXBlU3BlY2lmaWVyLmdldEJhc2ljVHlwZSgpID09IEVidEludCkp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGVycm9yKHR5cGVTcGVjaWZpZXIubGluZSwgImNhbm5v
dCBiZSBib29sIG9yIGludCIsIGdldFF1YWxpZmllclN0cmluZyhxdWFsaWZpZXIpKTsKLSAgICAg
ICAgICAgIHJlY292ZXIoKTsKKyAgICAgICAgICAgIGVycm9yKHR5cGVTcGVjaWZpZXIuZ2V0TGlu
ZSgpLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50IiwKKyAgICAgICAgICAgICAgICAgIGdldFF1YWxp
ZmllclN0cmluZyhyZXR1cm5UeXBlLnF1YWxpZmllcikpOwogICAgICAgICB9CiAKLSAgICAgICAg
aWYgKChxdWFsaWZpZXIgPT0gRXZxVmFyeWluZ0luIHx8IHF1YWxpZmllciA9PSBFdnFWYXJ5aW5n
T3V0KSAmJgotICAgICAgICAgICAgKHR5cGVTcGVjaWZpZXIudHlwZSA9PSBFYnRCb29sIHx8IHR5
cGVTcGVjaWZpZXIudHlwZSA9PSBFYnRJbnQpKQorICAgICAgICBpZiAoKHJldHVyblR5cGUucXVh
bGlmaWVyID09IEV2cVZhcnlpbmdJbiB8fCByZXR1cm5UeXBlLnF1YWxpZmllciA9PSBFdnFWYXJ5
aW5nT3V0KSAmJgorICAgICAgICAgICAgKHR5cGVTcGVjaWZpZXIuZ2V0QmFzaWNUeXBlKCkgPT0g
RWJ0Qm9vbCB8fCB0eXBlU3BlY2lmaWVyLmdldEJhc2ljVHlwZSgpID09IEVidEludCkpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGVycm9yKHR5cGVTcGVjaWZpZXIubGluZSwgImNhbm5vdCBiZSBi
b29sIG9yIGludCIsIGdldFF1YWxpZmllclN0cmluZyhxdWFsaWZpZXIpKTsKLSAgICAgICAgICAg
IHJlY292ZXIoKTsKKyAgICAgICAgICAgIGVycm9yKHR5cGVTcGVjaWZpZXIuZ2V0TGluZSgpLCAi
Y2Fubm90IGJlIGJvb2wgb3IgaW50IiwKKyAgICAgICAgICAgICAgICAgIGdldFF1YWxpZmllclN0
cmluZyhyZXR1cm5UeXBlLnF1YWxpZmllcikpOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UK
ICAgICB7Ci0gICAgICAgIGlmICghbGF5b3V0UXVhbGlmaWVyLmlzRW1wdHkoKSkKKyAgICAgICAg
aWYgKCFyZXR1cm5UeXBlLmxheW91dFF1YWxpZmllci5pc0VtcHR5KCkpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGlmIChnbG9iYWxFcnJvckNoZWNrKHR5cGVTcGVjaWZpZXIubGluZSwgc3ltYm9s
VGFibGUuYXRHbG9iYWxMZXZlbCgpLCAibGF5b3V0IikpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgcmVjb3ZlcigpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgY2hlY2tJc0F0
R2xvYmFsTGV2ZWwodHlwZVNwZWNpZmllci5nZXRMaW5lKCksICJsYXlvdXQiKTsKICAgICAgICAg
fQotICAgICAgICBpZiAoc2g6OklzVmFyeWluZyhxdWFsaWZpZXIpIHx8IHF1YWxpZmllciA9PSBF
dnFWZXJ0ZXhJbiB8fCBxdWFsaWZpZXIgPT0gRXZxRnJhZ21lbnRPdXQpCisgICAgICAgIGlmIChz
aDo6SXNWYXJ5aW5nKHJldHVyblR5cGUucXVhbGlmaWVyKSB8fCByZXR1cm5UeXBlLnF1YWxpZmll
ciA9PSBFdnFWZXJ0ZXhJbiB8fAorICAgICAgICAgICAgcmV0dXJuVHlwZS5xdWFsaWZpZXIgPT0g
RXZxRnJhZ21lbnRPdXQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGVzM0lucHV0T3V0cHV0VHlw
ZUNoZWNrKHF1YWxpZmllciwgdHlwZVNwZWNpZmllciwgdHlwZVNwZWNpZmllci5saW5lKTsKKyAg
ICAgICAgICAgIGNoZWNrSW5wdXRPdXRwdXRUeXBlSXNWYWxpZEVTMyhyZXR1cm5UeXBlLnF1YWxp
ZmllciwgdHlwZVNwZWNpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0eXBlU3BlY2lmaWVyLmdldExpbmUoKSk7CiAgICAgICAgIH0KKyAgICAgICAgaWYg
KHJldHVyblR5cGUucXVhbGlmaWVyID09IEV2cUNvbXB1dGVJbikKKyAgICAgICAgeworICAgICAg
ICAgICAgZXJyb3IodHlwZVNwZWNpZmllci5nZXRMaW5lKCksICInaW4nIGNhbiBiZSBvbmx5IHVz
ZWQgdG8gc3BlY2lmeSB0aGUgbG9jYWwgZ3JvdXAgc2l6ZSIsCisgICAgICAgICAgICAgICAgICAi
aW4iKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiByZXR1cm5UeXBlOwogfQogCi12
b2lkIFRQYXJzZUNvbnRleHQ6OmVzM0lucHV0T3V0cHV0VHlwZUNoZWNrKGNvbnN0IFRRdWFsaWZp
ZXIgcXVhbGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUUHVibGljVHlwZSAmdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmcXVhbGlmaWVyTG9jYXRpb24pCit2b2lk
IFRQYXJzZUNvbnRleHQ6OmNoZWNrSW5wdXRPdXRwdXRUeXBlSXNWYWxpZEVTMyhjb25zdCBUUXVh
bGlmaWVyIHF1YWxpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRQdWJsaWNUeXBlICZ0eXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmcXVhbGlm
aWVyTG9jYXRpb24pCiB7CiAgICAgLy8gQW4gaW5wdXQvb3V0cHV0IHZhcmlhYmxlIGNhbiBuZXZl
ciBiZSBib29sIG9yIGEgc2FtcGxlci4gU2FtcGxlcnMgYXJlIGNoZWNrZWQgZWxzZXdoZXJlLgot
ICAgIGlmICh0eXBlLnR5cGUgPT0gRWJ0Qm9vbCkKKyAgICBpZiAodHlwZS5nZXRCYXNpY1R5cGUo
KSA9PSBFYnRCb29sKQogICAgIHsKICAgICAgICAgZXJyb3IocXVhbGlmaWVyTG9jYXRpb24sICJj
YW5ub3QgYmUgYm9vbCIsIGdldFF1YWxpZmllclN0cmluZyhxdWFsaWZpZXIpKTsKLSAgICAgICAg
cmVjb3ZlcigpOwogICAgIH0KIAogICAgIC8vIFNwZWNpZmljIHJlc3RyaWN0aW9ucyBhcHBseSBm
b3IgdmVydGV4IHNoYWRlciBpbnB1dHMgYW5kIGZyYWdtZW50IHNoYWRlciBvdXRwdXRzLgpAQCAt
MTQ0NiwxNiArMTQ3MywxNCBAQAogICAgICAgICAgICAgaWYgKHR5cGUuYXJyYXkpCiAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgZXJyb3IocXVhbGlmaWVyTG9jYXRpb24sICJjYW5ub3Qg
YmUgYXJyYXkiLCBnZXRRdWFsaWZpZXJTdHJpbmcocXVhbGlmaWVyKSk7Ci0gICAgICAgICAgICAg
ICAgcmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gVmVydGV4IGlucHV0
cyB3aXRoIGEgc3RydWN0IHR5cGUgYXJlIGRpc2FsbG93ZWQgaW4gc2luZ2xlRGVjbGFyYXRpb25F
cnJvckNoZWNrCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgRXZxRnJhZ21lbnRP
dXQ6CiAgICAgICAgICAgICAvLyBFU1NMIDMuMDAgc2VjdGlvbiA0LjMuNgotICAgICAgICAgICAg
aWYgKHR5cGUuaXNNYXRyaXgoKSkKKyAgICAgICAgICAgIGlmICh0eXBlLnR5cGVTcGVjaWZpZXJO
b25BcnJheS5pc01hdHJpeCgpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGVycm9y
KHF1YWxpZmllckxvY2F0aW9uLCAiY2Fubm90IGJlIG1hdHJpeCIsIGdldFF1YWxpZmllclN0cmlu
ZyhxdWFsaWZpZXIpKTsKLSAgICAgICAgICAgICAgICByZWNvdmVyKCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAvLyBGcmFnbWVudCBvdXRwdXRzIHdpdGggYSBzdHJ1Y3QgdHlwZSBhcmUg
ZGlzYWxsb3dlZCBpbiBzaW5nbGVEZWNsYXJhdGlvbkVycm9yQ2hlY2sKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTE0NjYsMTYgKzE0OTEsMTUgQEAKICAgICAvLyBWZXJ0ZXggc2hhZGVyIG91dHB1
dHMgLyBmcmFnbWVudCBzaGFkZXIgaW5wdXRzIGhhdmUgYSBkaWZmZXJlbnQsIHNsaWdodGx5IG1v
cmUgbGVuaWVudCBzZXQgb2YKICAgICAvLyByZXN0cmljdGlvbnMuCiAgICAgYm9vbCB0eXBlQ29u
dGFpbnNJbnRlZ2VycyA9Ci0gICAgICAgICh0eXBlLnR5cGUgPT0gRWJ0SW50IHx8IHR5cGUudHlw
ZSA9PSBFYnRVSW50IHx8IHR5cGUuaXNTdHJ1Y3R1cmVDb250YWluaW5nVHlwZShFYnRJbnQpIHx8
Ci0gICAgICAgICB0eXBlLmlzU3RydWN0dXJlQ29udGFpbmluZ1R5cGUoRWJ0VUludCkpOworICAg
ICAgICAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRJbnQgfHwgdHlwZS5nZXRCYXNpY1R5cGUo
KSA9PSBFYnRVSW50IHx8CisgICAgICAgICB0eXBlLmlzU3RydWN0dXJlQ29udGFpbmluZ1R5cGUo
RWJ0SW50KSB8fCB0eXBlLmlzU3RydWN0dXJlQ29udGFpbmluZ1R5cGUoRWJ0VUludCkpOwogICAg
IGlmICh0eXBlQ29udGFpbnNJbnRlZ2VycyAmJiBxdWFsaWZpZXIgIT0gRXZxRmxhdEluICYmIHF1
YWxpZmllciAhPSBFdnFGbGF0T3V0KQogICAgIHsKICAgICAgICAgZXJyb3IocXVhbGlmaWVyTG9j
YXRpb24sICJtdXN0IHVzZSAnZmxhdCcgaW50ZXJwb2xhdGlvbiBoZXJlIiwKICAgICAgICAgICAg
ICAgZ2V0UXVhbGlmaWVyU3RyaW5nKHF1YWxpZmllcikpOwotICAgICAgICByZWNvdmVyKCk7CiAg
ICAgfQogCi0gICAgaWYgKHR5cGUudHlwZSA9PSBFYnRTdHJ1Y3QpCisgICAgaWYgKHR5cGUuZ2V0
QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KQogICAgIHsKICAgICAgICAgLy8gRVNTTCAzLjAwIHNl
Y3Rpb25zIDQuMy40IGFuZCA0LjMuNi4KICAgICAgICAgLy8gVGhlc2UgcmVzdHJpY3Rpb25zIGFy
ZSBvbmx5IGltcGxpZWQgYnkgdGhlIEVTU0wgMy4wMCBzcGVjLCBidXQKQEAgLTE0ODQsMjUgKzE1
MDgsMjEgQEAKICAgICAgICAgewogICAgICAgICAgICAgZXJyb3IocXVhbGlmaWVyTG9jYXRpb24s
ICJjYW5ub3QgYmUgYW4gYXJyYXkgb2Ygc3RydWN0dXJlcyIsCiAgICAgICAgICAgICAgICAgICBn
ZXRRdWFsaWZpZXJTdHJpbmcocXVhbGlmaWVyKSk7Ci0gICAgICAgICAgICByZWNvdmVyKCk7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKHR5cGUuaXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCkp
CiAgICAgICAgIHsKICAgICAgICAgICAgIGVycm9yKHF1YWxpZmllckxvY2F0aW9uLCAiY2Fubm90
IGJlIGEgc3RydWN0dXJlIGNvbnRhaW5pbmcgYW4gYXJyYXkiLAogICAgICAgICAgICAgICAgICAg
Z2V0UXVhbGlmaWVyU3RyaW5nKHF1YWxpZmllcikpOwotICAgICAgICAgICAgcmVjb3ZlcigpOwog
ICAgICAgICB9CiAgICAgICAgIGlmICh0eXBlLmlzU3RydWN0dXJlQ29udGFpbmluZ1R5cGUoRWJ0
U3RydWN0KSkKICAgICAgICAgewogICAgICAgICAgICAgZXJyb3IocXVhbGlmaWVyTG9jYXRpb24s
ICJjYW5ub3QgYmUgYSBzdHJ1Y3R1cmUgY29udGFpbmluZyBhIHN0cnVjdHVyZSIsCiAgICAgICAg
ICAgICAgICAgICBnZXRRdWFsaWZpZXJTdHJpbmcocXVhbGlmaWVyKSk7Ci0gICAgICAgICAgICBy
ZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHR5cGUuaXNTdHJ1Y3R1cmVDb250YWlu
aW5nVHlwZShFYnRCb29sKSkKICAgICAgICAgewogICAgICAgICAgICAgZXJyb3IocXVhbGlmaWVy
TG9jYXRpb24sICJjYW5ub3QgYmUgYSBzdHJ1Y3R1cmUgY29udGFpbmluZyBhIGJvb2wiLAogICAg
ICAgICAgICAgICAgICAgZ2V0UXVhbGlmaWVyU3RyaW5nKHF1YWxpZmllcikpOwotICAgICAgICAg
ICAgcmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTUxMSw5ICsxNTMxLDM2IEBA
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFRTb3VyY2VMb2MgJmlkZW50aWZpZXJPclR5cGVMb2NhdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmlu
ZyAmaWRlbnRpZmllcikKIHsKLSAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2wgPQotICAgICAgICBp
bnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsIGlkZW50aWZpZXIsIFRUeXBlKHB1YmxpY1R5cGUpLCBp
ZGVudGlmaWVyT3JUeXBlTG9jYXRpb24pOworICAgIFRUeXBlIHR5cGUocHVibGljVHlwZSk7Cisg
ICAgaWYgKChtQ29tcGlsZU9wdGlvbnMgJiBTSF9GTEFUVEVOX1BSQUdNQV9TVERHTF9JTlZBUklB
TlRfQUxMKSAmJgorICAgICAgICBtRGlyZWN0aXZlSGFuZGxlci5wcmFnbWEoKS5zdGRnbC5pbnZh
cmlhbnRBbGwpCisgICAgeworICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciA9IHR5cGUuZ2V0
UXVhbGlmaWVyKCk7CiAKKyAgICAgICAgLy8gVGhlIGRpcmVjdGl2ZSBoYW5kbGVyIGhhcyBhbHJl
YWR5IHRha2VuIGNhcmUgb2YgcmVqZWN0aW5nIGludmFsaWQgdXNlcyBvZiB0aGlzIHByYWdtYQor
ICAgICAgICAvLyAoZm9yIGV4YW1wbGUsIGluIEVTU0wgMy4wMCBmcmFnbWVudCBzaGFkZXJzKSwg
c28gYXQgdGhpcyBwb2ludCwgZmxhdHRlbiBpdCBpbnRvIGFsbAorICAgICAgICAvLyBhZmZlY3Rl
ZCB2YXJpYWJsZSBkZWNsYXJhdGlvbnM6CisgICAgICAgIC8vCisgICAgICAgIC8vIDEuIEJ1aWx0
LWluIHNwZWNpYWwgdmFyaWFibGVzIHdoaWNoIGFyZSBpbnB1dHMgdG8gdGhlIGZyYWdtZW50IHNo
YWRlci4gKFRoZXNlIGFyZSBoYW5kbGVkCisgICAgICAgIC8vIGVsc2V3aGVyZSwgaW4gVHJhbnNs
YXRvckdMU0wuKQorICAgICAgICAvLworICAgICAgICAvLyAyLiBPdXRwdXRzIGZyb20gdmVydGV4
IHNoYWRlcnMgaW4gRVNTTCAxLjAwIGFuZCAzLjAwIChFdnFWYXJ5aW5nT3V0IGFuZCBFdnFWZXJ0
ZXhPdXQpLiBJdAorICAgICAgICAvLyBpcyBhY3R1YWxseSBsZXNzIGxpa2VseSB0aGF0IHRoZXJl
IHdpbGwgYmUgYnVncyBpbiB0aGUgaGFuZGxpbmcgb2YgRVNTTCAzLjAwIHNoYWRlcnMsIGJ1dAor
ICAgICAgICAvLyB0aGUgd2F5IHRoaXMgaXMgY3VycmVudGx5IGltcGxlbWVudGVkIHdlIGhhdmUg
dG8gZW5hYmxlIHRoaXMgY29tcGlsZXIgb3B0aW9uIGJlZm9yZQorICAgICAgICAvLyBwYXJzaW5n
IHRoZSBzaGFkZXIgYW5kIGRldGVybWluaW5nIHRoZSBzaGFkaW5nIGxhbmd1YWdlIHZlcnNpb24g
aXQgdXNlcy4gSWYgdGhpcyB3ZXJlCisgICAgICAgIC8vIGltcGxlbWVudGVkIGFzIGEgcG9zdC1w
YXNzLCB0aGUgd29ya2Fyb3VuZCBjb3VsZCBiZSBtb3JlIHRhcmdldGVkLgorICAgICAgICAvLwor
ICAgICAgICAvLyAzLiBJbnB1dHMgaW4gRVNTTCAxLjAwIGZyYWdtZW50IHNoYWRlcnMgKEV2cVZh
cnlpbmdJbikuIFRoaXMgaXMgc29tZXdoYXQgaW4gdmlvbGF0aW9uIG9mCisgICAgICAgIC8vIHRo
ZSBzcGVjaWZpY2F0aW9uLCBidXQgdGhlcmUgYXJlIGRlc2t0b3AgT3BlbkdMIGRyaXZlcnMgdGhh
dCBleHBlY3QgdGhhdCB0aGlzIGlzIHRoZQorICAgICAgICAvLyBiZWhhdmlvciBvZiB0aGUgI3By
YWdtYSB3aGVuIHNwZWNpZmllZCBpbiBFU1NMIDEuMDAgZnJhZ21lbnQgc2hhZGVycy4KKyAgICAg
ICAgaWYgKHF1YWxpZmllciA9PSBFdnFWYXJ5aW5nT3V0IHx8IHF1YWxpZmllciA9PSBFdnFWZXJ0
ZXhPdXQgfHwgcXVhbGlmaWVyID09IEV2cVZhcnlpbmdJbikKKyAgICAgICAgeworICAgICAgICAg
ICAgdHlwZS5zZXRJbnZhcmlhbnQodHJ1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBUSW50
ZXJtU3ltYm9sICpzeW1ib2wgPSBpbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsIGlkZW50aWZpZXIs
IHR5cGUsIGlkZW50aWZpZXJPclR5cGVMb2NhdGlvbik7CisKICAgICBib29sIGVtcHR5RGVjbGFy
YXRpb24gPSAoaWRlbnRpZmllciA9PSAiIik7CiAKICAgICBtRGVmZXJyZWRTaW5nbGVEZWNsYXJh
dGlvbkVycm9yQ2hlY2sgPSBlbXB0eURlY2xhcmF0aW9uOwpAQCAtMTUzMCwyMSArMTU3NywxOCBA
QAogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBpZiAoc2luZ2xlRGVjbGFyYXRpb25F
cnJvckNoZWNrKHB1YmxpY1R5cGUsIGlkZW50aWZpZXJPclR5cGVMb2NhdGlvbikpCi0gICAgICAg
ICAgICByZWNvdmVyKCk7CisgICAgICAgIHNpbmdsZURlY2xhcmF0aW9uRXJyb3JDaGVjayhwdWJs
aWNUeXBlLCBpZGVudGlmaWVyT3JUeXBlTG9jYXRpb24pOwogCi0gICAgICAgIGlmIChub25Jbml0
RXJyb3JDaGVjayhpZGVudGlmaWVyT3JUeXBlTG9jYXRpb24sIGlkZW50aWZpZXIsICZwdWJsaWNU
eXBlKSkKLSAgICAgICAgICAgIHJlY292ZXIoKTsKKyAgICAgICAgY2hlY2tDYW5CZURlY2xhcmVk
V2l0aG91dEluaXRpYWxpemVyKGlkZW50aWZpZXJPclR5cGVMb2NhdGlvbiwgaWRlbnRpZmllciwg
JnB1YmxpY1R5cGUpOwogCiAgICAgICAgIFRWYXJpYWJsZSAqdmFyaWFibGUgPSBudWxscHRyOwot
ICAgICAgICBpZiAoIWRlY2xhcmVWYXJpYWJsZShpZGVudGlmaWVyT3JUeXBlTG9jYXRpb24sIGlk
ZW50aWZpZXIsIFRUeXBlKHB1YmxpY1R5cGUpLCAmdmFyaWFibGUpKQotICAgICAgICAgICAgcmVj
b3ZlcigpOworICAgICAgICBkZWNsYXJlVmFyaWFibGUoaWRlbnRpZmllck9yVHlwZUxvY2F0aW9u
LCBpZGVudGlmaWVyLCB0eXBlLCAmdmFyaWFibGUpOwogCiAgICAgICAgIGlmICh2YXJpYWJsZSAm
JiBzeW1ib2wpCiAgICAgICAgICAgICBzeW1ib2wtPnNldElkKHZhcmlhYmxlLT5nZXRVbmlxdWVJ
ZCgpKTsKICAgICB9CiAKLSAgICByZXR1cm4gaW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3lt
Ym9sLCBpZGVudGlmaWVyT3JUeXBlTG9jYXRpb24pOworICAgIHJldHVybiBUSW50ZXJtZWRpYXRl
OjpNYWtlQWdncmVnYXRlKHN5bWJvbCwgaWRlbnRpZmllck9yVHlwZUxvY2F0aW9uKTsKIH0KIAog
VEludGVybUFnZ3JlZ2F0ZSAqVFBhcnNlQ29udGV4dDo6cGFyc2VTaW5nbGVBcnJheURlY2xhcmF0
aW9uKFRQdWJsaWNUeXBlICZwdWJsaWNUeXBlLApAQCAtMTU1NSwzOCArMTU5OSwyNyBAQAogewog
ICAgIG1EZWZlcnJlZFNpbmdsZURlY2xhcmF0aW9uRXJyb3JDaGVjayA9IGZhbHNlOwogCi0gICAg
aWYgKHNpbmdsZURlY2xhcmF0aW9uRXJyb3JDaGVjayhwdWJsaWNUeXBlLCBpZGVudGlmaWVyTG9j
YXRpb24pKQotICAgICAgICByZWNvdmVyKCk7CisgICAgc2luZ2xlRGVjbGFyYXRpb25FcnJvckNo
ZWNrKHB1YmxpY1R5cGUsIGlkZW50aWZpZXJMb2NhdGlvbik7CiAKLSAgICBpZiAobm9uSW5pdEVy
cm9yQ2hlY2soaWRlbnRpZmllckxvY2F0aW9uLCBpZGVudGlmaWVyLCAmcHVibGljVHlwZSkpCi0g
ICAgICAgIHJlY292ZXIoKTsKKyAgICBjaGVja0NhbkJlRGVjbGFyZWRXaXRob3V0SW5pdGlhbGl6
ZXIoaWRlbnRpZmllckxvY2F0aW9uLCBpZGVudGlmaWVyLCAmcHVibGljVHlwZSk7CiAKLSAgICBp
ZiAoYXJyYXlUeXBlRXJyb3JDaGVjayhpbmRleExvY2F0aW9uLCBwdWJsaWNUeXBlKSB8fAotICAg
ICAgICBhcnJheVF1YWxpZmllckVycm9yQ2hlY2soaW5kZXhMb2NhdGlvbiwgcHVibGljVHlwZSkp
Ci0gICAgewotICAgICAgICByZWNvdmVyKCk7Ci0gICAgfQorICAgIGNoZWNrSXNWYWxpZFR5cGVB
bmRRdWFsaWZpZXJGb3JBcnJheShpbmRleExvY2F0aW9uLCBwdWJsaWNUeXBlKTsKIAogICAgIFRU
eXBlIGFycmF5VHlwZShwdWJsaWNUeXBlKTsKIAotICAgIGludCBzaXplOwotICAgIGlmIChhcnJh
eVNpemVFcnJvckNoZWNrKGlkZW50aWZpZXJMb2NhdGlvbiwgaW5kZXhFeHByZXNzaW9uLCBzaXpl
KSkKLSAgICB7Ci0gICAgICAgIHJlY292ZXIoKTsKLSAgICB9CisgICAgdW5zaWduZWQgaW50IHNp
emUgPSBjaGVja0lzVmFsaWRBcnJheVNpemUoaWRlbnRpZmllckxvY2F0aW9uLCBpbmRleEV4cHJl
c3Npb24pOwogICAgIC8vIE1ha2UgdGhlIHR5cGUgYW4gYXJyYXkgZXZlbiBpZiBzaXplIGNoZWNr
IGZhaWxlZC4KICAgICAvLyBUaGlzIGVuc3VyZXMgdXNlbGVzcyBlcnJvciBtZXNzYWdlcyByZWdh
cmRpbmcgdGhlIHZhcmlhYmxlJ3Mgbm9uLWFycmF5bmVzcyB3b24ndCBmb2xsb3cuCiAgICAgYXJy
YXlUeXBlLnNldEFycmF5U2l6ZShzaXplKTsKIAogICAgIFRWYXJpYWJsZSAqdmFyaWFibGUgPSBu
dWxscHRyOwotICAgIGlmICghZGVjbGFyZVZhcmlhYmxlKGlkZW50aWZpZXJMb2NhdGlvbiwgaWRl
bnRpZmllciwgYXJyYXlUeXBlLCAmdmFyaWFibGUpKQotICAgICAgICByZWNvdmVyKCk7CisgICAg
ZGVjbGFyZVZhcmlhYmxlKGlkZW50aWZpZXJMb2NhdGlvbiwgaWRlbnRpZmllciwgYXJyYXlUeXBl
LCAmdmFyaWFibGUpOwogCiAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gaW50ZXJtZWRpYXRl
LmFkZFN5bWJvbCgwLCBpZGVudGlmaWVyLCBhcnJheVR5cGUsIGlkZW50aWZpZXJMb2NhdGlvbik7
CiAgICAgaWYgKHZhcmlhYmxlICYmIHN5bWJvbCkKICAgICAgICAgc3ltYm9sLT5zZXRJZCh2YXJp
YWJsZS0+Z2V0VW5pcXVlSWQoKSk7CiAKLSAgICByZXR1cm4gaW50ZXJtZWRpYXRlLm1ha2VBZ2dy
ZWdhdGUoc3ltYm9sLCBpZGVudGlmaWVyTG9jYXRpb24pOworICAgIHJldHVybiBUSW50ZXJtZWRp
YXRlOjpNYWtlQWdncmVnYXRlKHN5bWJvbCwgaWRlbnRpZmllckxvY2F0aW9uKTsKIH0KIAogVElu
dGVybUFnZ3JlZ2F0ZSAqVFBhcnNlQ29udGV4dDo6cGFyc2VTaW5nbGVJbml0RGVjbGFyYXRpb24o
Y29uc3QgVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUsCkBAIC0xNTk3LDggKzE2MzAsNyBAQAogewog
ICAgIG1EZWZlcnJlZFNpbmdsZURlY2xhcmF0aW9uRXJyb3JDaGVjayA9IGZhbHNlOwogCi0gICAg
aWYgKHNpbmdsZURlY2xhcmF0aW9uRXJyb3JDaGVjayhwdWJsaWNUeXBlLCBpZGVudGlmaWVyTG9j
YXRpb24pKQotICAgICAgICByZWNvdmVyKCk7CisgICAgc2luZ2xlRGVjbGFyYXRpb25FcnJvckNo
ZWNrKHB1YmxpY1R5cGUsIGlkZW50aWZpZXJMb2NhdGlvbik7CiAKICAgICBUSW50ZXJtTm9kZSAq
aW50ZXJtTm9kZSA9IG51bGxwdHI7CiAgICAgaWYgKCFleGVjdXRlSW5pdGlhbGl6ZXIoaWRlbnRp
ZmllckxvY2F0aW9uLCBpZGVudGlmaWVyLCBwdWJsaWNUeXBlLCBpbml0aWFsaXplciwgJmludGVy
bU5vZGUpKQpAQCAtMTYwNiwxMSArMTYzOCwxMCBAQAogICAgICAgICAvLwogICAgICAgICAvLyBC
dWlsZCBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb24KICAgICAgICAgLy8KLSAgICAgICAgcmV0
dXJuIGludGVybU5vZGUgPyBpbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShpbnRlcm1Ob2RlLCBp
bml0TG9jYXRpb24pIDogbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGludGVybU5vZGUgPyBUSW50
ZXJtZWRpYXRlOjpNYWtlQWdncmVnYXRlKGludGVybU5vZGUsIGluaXRMb2NhdGlvbikgOiBudWxs
cHRyOwogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICByZWNvdmVyKCk7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIH0KQEAgLTE2MjYsMjQgKzE2NTcsMTggQEAKIHsKICAg
ICBtRGVmZXJyZWRTaW5nbGVEZWNsYXJhdGlvbkVycm9yQ2hlY2sgPSBmYWxzZTsKIAotICAgIGlm
IChzaW5nbGVEZWNsYXJhdGlvbkVycm9yQ2hlY2socHVibGljVHlwZSwgaWRlbnRpZmllckxvY2F0
aW9uKSkKLSAgICAgICAgcmVjb3ZlcigpOworICAgIHNpbmdsZURlY2xhcmF0aW9uRXJyb3JDaGVj
ayhwdWJsaWNUeXBlLCBpZGVudGlmaWVyTG9jYXRpb24pOwogCi0gICAgaWYgKGFycmF5VHlwZUVy
cm9yQ2hlY2soaW5kZXhMb2NhdGlvbiwgcHVibGljVHlwZSkgfHwKLSAgICAgICAgYXJyYXlRdWFs
aWZpZXJFcnJvckNoZWNrKGluZGV4TG9jYXRpb24sIHB1YmxpY1R5cGUpKQotICAgIHsKLSAgICAg
ICAgcmVjb3ZlcigpOwotICAgIH0KKyAgICBjaGVja0lzVmFsaWRUeXBlQW5kUXVhbGlmaWVyRm9y
QXJyYXkoaW5kZXhMb2NhdGlvbiwgcHVibGljVHlwZSk7CiAKICAgICBUUHVibGljVHlwZSBhcnJh
eVR5cGUocHVibGljVHlwZSk7CiAKLSAgICBpbnQgc2l6ZSA9IDA7CisgICAgdW5zaWduZWQgaW50
IHNpemUgPSAwdTsKICAgICAvLyBJZiBpbmRleEV4cHJlc3Npb24gaXMgbnVsbHB0ciwgdGhlbiB0
aGUgYXJyYXkgd2lsbCBldmVudHVhbGx5IGdldCBpdHMgc2l6ZSBpbXBsaWNpdGx5IGZyb20KICAg
ICAvLyB0aGUgaW5pdGlhbGl6ZXIuCi0gICAgaWYgKGluZGV4RXhwcmVzc2lvbiAhPSBudWxscHRy
ICYmCi0gICAgICAgIGFycmF5U2l6ZUVycm9yQ2hlY2soaWRlbnRpZmllckxvY2F0aW9uLCBpbmRl
eEV4cHJlc3Npb24sIHNpemUpKQorICAgIGlmIChpbmRleEV4cHJlc3Npb24gIT0gbnVsbHB0cikK
ICAgICB7Ci0gICAgICAgIHJlY292ZXIoKTsKKyAgICAgICAgc2l6ZSA9IGNoZWNrSXNWYWxpZEFy
cmF5U2l6ZShpZGVudGlmaWVyTG9jYXRpb24sIGluZGV4RXhwcmVzc2lvbik7CiAgICAgfQogICAg
IC8vIE1ha2UgdGhlIHR5cGUgYW4gYXJyYXkgZXZlbiBpZiBzaXplIGNoZWNrIGZhaWxlZC4KICAg
ICAvLyBUaGlzIGVuc3VyZXMgdXNlbGVzcyBlcnJvciBtZXNzYWdlcyByZWdhcmRpbmcgdGhlIHZh
cmlhYmxlJ3Mgbm9uLWFycmF5bmVzcyB3b24ndCBmb2xsb3cuCkBAIC0xNjUzLDUzICsxNjc4LDY2
IEBACiAgICAgVEludGVybU5vZGUgKmluaXROb2RlID0gbnVsbHB0cjsKICAgICBpZiAoIWV4ZWN1
dGVJbml0aWFsaXplcihpZGVudGlmaWVyTG9jYXRpb24sIGlkZW50aWZpZXIsIGFycmF5VHlwZSwg
aW5pdGlhbGl6ZXIsICZpbml0Tm9kZSkpCiAgICAgewotICAgICAgICByZXR1cm4gaW5pdE5vZGUg
PyBpbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShpbml0Tm9kZSwgaW5pdExvY2F0aW9uKSA6IG51
bGxwdHI7CisgICAgICAgIHJldHVybiBpbml0Tm9kZSA/IFRJbnRlcm1lZGlhdGU6Ok1ha2VBZ2dy
ZWdhdGUoaW5pdE5vZGUsIGluaXRMb2NhdGlvbikgOiBudWxscHRyOwogICAgIH0KICAgICBlbHNl
CiAgICAgewotICAgICAgICByZWNvdmVyKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIH0KIAotVEludGVybUFnZ3JlZ2F0ZSAqVFBhcnNlQ29udGV4dDo6cGFyc2VJbnZhcmlhbnRE
ZWNsYXJhdGlvbihjb25zdCBUU291cmNlTG9jICZpbnZhcmlhbnRMb2MsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3Vy
Y2VMb2MgJmlkZW50aWZpZXJMb2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgKmlkZW50aWZpZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRTeW1ib2wgKnN5bWJvbCkKK1RJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OnBh
cnNlSW52YXJpYW50RGVjbGFyYXRpb24oCisgICAgY29uc3QgVFR5cGVRdWFsaWZpZXJCdWlsZGVy
ICZ0eXBlUXVhbGlmaWVyQnVpbGRlciwKKyAgICBjb25zdCBUU291cmNlTG9jICZpZGVudGlmaWVy
TG9jLAorICAgIGNvbnN0IFRTdHJpbmcgKmlkZW50aWZpZXIsCisgICAgY29uc3QgVFN5bWJvbCAq
c3ltYm9sKQogewotICAgIC8vIGludmFyaWFudCBkZWNsYXJhdGlvbgotICAgIGlmIChnbG9iYWxF
cnJvckNoZWNrKGludmFyaWFudExvYywgc3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiaW52
YXJpYW50IHZhcnlpbmciKSkKKyAgICBUVHlwZVF1YWxpZmllciB0eXBlUXVhbGlmaWVyID0gdHlw
ZVF1YWxpZmllckJ1aWxkZXIuZ2V0VmFyaWFibGVUeXBlUXVhbGlmaWVyKCZtRGlhZ25vc3RpY3Mp
OworCisgICAgaWYgKCF0eXBlUXVhbGlmaWVyLmludmFyaWFudCkKICAgICB7Ci0gICAgICAgIHJl
Y292ZXIoKTsKKyAgICAgICAgZXJyb3IoaWRlbnRpZmllckxvYywgIkV4cGVjdGVkIGludmFyaWFu
dCIsIGlkZW50aWZpZXItPmNfc3RyKCkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
Ci0KKyAgICBpZiAoIWNoZWNrSXNBdEdsb2JhbExldmVsKGlkZW50aWZpZXJMb2MsICJpbnZhcmlh
bnQgdmFyeWluZyIpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogICAg
IGlmICghc3ltYm9sKQogICAgIHsKICAgICAgICAgZXJyb3IoaWRlbnRpZmllckxvYywgInVuZGVj
bGFyZWQgaWRlbnRpZmllciBkZWNsYXJlZCBhcyBpbnZhcmlhbnQiLCBpZGVudGlmaWVyLT5jX3N0
cigpKTsKLSAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
Ci0gICAgZWxzZQorICAgIGlmICghSXNRdWFsaWZpZXJVbnNwZWNpZmllZCh0eXBlUXVhbGlmaWVy
LnF1YWxpZmllcikpCiAgICAgewotICAgICAgICBjb25zdCBUU3RyaW5nIGtHbEZyb250RmFjaW5n
KCJnbF9Gcm9udEZhY2luZyIpOwotICAgICAgICBpZiAoKmlkZW50aWZpZXIgPT0ga0dsRnJvbnRG
YWNpbmcpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVycm9yKGlkZW50aWZpZXJMb2MsICJpZGVu
dGlmaWVyIHNob3VsZCBub3QgYmUgZGVjbGFyZWQgYXMgaW52YXJpYW50IiwKLSAgICAgICAgICAg
ICAgICAgIGlkZW50aWZpZXItPmNfc3RyKCkpOwotICAgICAgICAgICAgcmVjb3ZlcigpOwotICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgc3ltYm9sVGFibGUu
YWRkSW52YXJpYW50VmFyeWluZyhzdGQ6OnN0cmluZyhpZGVudGlmaWVyLT5jX3N0cigpKSk7Ci0g
ICAgICAgIGNvbnN0IFRWYXJpYWJsZSAqdmFyaWFibGUgPSBnZXROYW1lZFZhcmlhYmxlKGlkZW50
aWZpZXJMb2MsIGlkZW50aWZpZXIsIHN5bWJvbCk7Ci0gICAgICAgIEFTU0VSVCh2YXJpYWJsZSk7
Ci0gICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlID0gdmFyaWFibGUtPmdldFR5cGUoKTsKLSAgICAg
ICAgVEludGVybVN5bWJvbCAqaW50ZXJtU3ltYm9sID0KLSAgICAgICAgICAgIGludGVybWVkaWF0
ZS5hZGRTeW1ib2wodmFyaWFibGUtPmdldFVuaXF1ZUlkKCksICppZGVudGlmaWVyLCB0eXBlLCBp
ZGVudGlmaWVyTG9jKTsKKyAgICAgICAgZXJyb3IoaWRlbnRpZmllckxvYywgImludmFyaWFudCBk
ZWNsYXJhdGlvbiBzcGVjaWZpZXMgcXVhbGlmaWVyIiwKKyAgICAgICAgICAgICAgZ2V0UXVhbGlm
aWVyU3RyaW5nKHR5cGVRdWFsaWZpZXIucXVhbGlmaWVyKSk7CisgICAgfQorICAgIGlmICh0eXBl
UXVhbGlmaWVyLnByZWNpc2lvbiAhPSBFYnBVbmRlZmluZWQpCisgICAgeworICAgICAgICBlcnJv
cihpZGVudGlmaWVyTG9jLCAiaW52YXJpYW50IGRlY2xhcmF0aW9uIHNwZWNpZmllcyBwcmVjaXNp
b24iLAorICAgICAgICAgICAgICBnZXRQcmVjaXNpb25TdHJpbmcodHlwZVF1YWxpZmllci5wcmVj
aXNpb24pKTsKKyAgICB9CisgICAgaWYgKCF0eXBlUXVhbGlmaWVyLmxheW91dFF1YWxpZmllci5p
c0VtcHR5KCkpCisgICAgeworICAgICAgICBlcnJvcihpZGVudGlmaWVyTG9jLCAiaW52YXJpYW50
IGRlY2xhcmF0aW9uIHNwZWNpZmllcyBsYXlvdXQiLCAiJ2xheW91dCciKTsKKyAgICB9CiAKLSAg
ICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqYWdncmVnYXRlID0gaW50ZXJtZWRpYXRlLm1ha2VBZ2dy
ZWdhdGUoaW50ZXJtU3ltYm9sLCBpZGVudGlmaWVyTG9jKTsKLSAgICAgICAgYWdncmVnYXRlLT5z
ZXRPcChFT3BJbnZhcmlhbnREZWNsYXJhdGlvbik7Ci0gICAgICAgIHJldHVybiBhZ2dyZWdhdGU7
Ci0gICAgfQorICAgIGNvbnN0IFRWYXJpYWJsZSAqdmFyaWFibGUgPSBnZXROYW1lZFZhcmlhYmxl
KGlkZW50aWZpZXJMb2MsIGlkZW50aWZpZXIsIHN5bWJvbCk7CisgICAgQVNTRVJUKHZhcmlhYmxl
KTsKKyAgICBjb25zdCBUVHlwZSAmdHlwZSA9IHZhcmlhYmxlLT5nZXRUeXBlKCk7CisKKyAgICBj
aGVja0ludmFyaWFudFZhcmlhYmxlUXVhbGlmaWVyKHR5cGVRdWFsaWZpZXIuaW52YXJpYW50LCB0
eXBlLmdldFF1YWxpZmllcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHlwZVF1YWxpZmllci5saW5lKTsKKworICAgIHN5bWJvbFRhYmxlLmFkZEludmFyaWFudFZhcnlp
bmcoc3RkOjpzdHJpbmcoaWRlbnRpZmllci0+Y19zdHIoKSkpOworCisgICAgVEludGVybVN5bWJv
bCAqaW50ZXJtU3ltYm9sID0KKyAgICAgICAgaW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJs
ZS0+Z2V0VW5pcXVlSWQoKSwgKmlkZW50aWZpZXIsIHR5cGUsIGlkZW50aWZpZXJMb2MpOworCisg
ICAgVEludGVybUFnZ3JlZ2F0ZSAqYWdncmVnYXRlID0gVEludGVybWVkaWF0ZTo6TWFrZUFnZ3Jl
Z2F0ZShpbnRlcm1TeW1ib2wsIGlkZW50aWZpZXJMb2MpOworICAgIGFnZ3JlZ2F0ZS0+c2V0T3Ao
RU9wSW52YXJpYW50RGVjbGFyYXRpb24pOworICAgIHJldHVybiBhZ2dyZWdhdGU7CiB9CiAKIFRJ
bnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OnBhcnNlRGVjbGFyYXRvcihUUHVibGljVHlw
ZSAmcHVibGljVHlwZSwKQEAgLTE3MTEsMjAgKzE3NDksMTYgQEAKICAgICAvLyBub3QgcGVyZm9y
bWVkLgogICAgIGlmIChtRGVmZXJyZWRTaW5nbGVEZWNsYXJhdGlvbkVycm9yQ2hlY2spCiAgICAg
ewotICAgICAgICBpZiAoc2luZ2xlRGVjbGFyYXRpb25FcnJvckNoZWNrKHB1YmxpY1R5cGUsIGlk
ZW50aWZpZXJMb2NhdGlvbikpCi0gICAgICAgICAgICByZWNvdmVyKCk7CisgICAgICAgIHNpbmds
ZURlY2xhcmF0aW9uRXJyb3JDaGVjayhwdWJsaWNUeXBlLCBpZGVudGlmaWVyTG9jYXRpb24pOwog
ICAgICAgICBtRGVmZXJyZWRTaW5nbGVEZWNsYXJhdGlvbkVycm9yQ2hlY2sgPSBmYWxzZTsKICAg
ICB9CiAKLSAgICBpZiAobG9jYXRpb25EZWNsYXJhdG9yTGlzdENoZWNrKGlkZW50aWZpZXJMb2Nh
dGlvbiwgcHVibGljVHlwZSkpCi0gICAgICAgIHJlY292ZXIoKTsKKyAgICBjaGVja0RlY2xhcmF0
b3JMb2NhdGlvbklzTm90U3BlY2lmaWVkKGlkZW50aWZpZXJMb2NhdGlvbiwgcHVibGljVHlwZSk7
CiAKLSAgICBpZiAobm9uSW5pdEVycm9yQ2hlY2soaWRlbnRpZmllckxvY2F0aW9uLCBpZGVudGlm
aWVyLCAmcHVibGljVHlwZSkpCi0gICAgICAgIHJlY292ZXIoKTsKKyAgICBjaGVja0NhbkJlRGVj
bGFyZWRXaXRob3V0SW5pdGlhbGl6ZXIoaWRlbnRpZmllckxvY2F0aW9uLCBpZGVudGlmaWVyLCAm
cHVibGljVHlwZSk7CiAKICAgICBUVmFyaWFibGUgKnZhcmlhYmxlID0gbnVsbHB0cjsKLSAgICBp
ZiAoIWRlY2xhcmVWYXJpYWJsZShpZGVudGlmaWVyTG9jYXRpb24sIGlkZW50aWZpZXIsIFRUeXBl
KHB1YmxpY1R5cGUpLCAmdmFyaWFibGUpKQotICAgICAgICByZWNvdmVyKCk7CisgICAgZGVjbGFy
ZVZhcmlhYmxlKGlkZW50aWZpZXJMb2NhdGlvbiwgaWRlbnRpZmllciwgVFR5cGUocHVibGljVHlw
ZSksICZ2YXJpYWJsZSk7CiAKICAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2wgPQogICAgICAgICBp
bnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsIGlkZW50aWZpZXIsIFRUeXBlKHB1YmxpY1R5cGUpLCBp
ZGVudGlmaWVyTG9jYXRpb24pOwpAQCAtMTc0NSwzNSArMTc3OSwyMiBAQAogICAgIC8vIG5vdCBw
ZXJmb3JtZWQuCiAgICAgaWYgKG1EZWZlcnJlZFNpbmdsZURlY2xhcmF0aW9uRXJyb3JDaGVjaykK
ICAgICB7Ci0gICAgICAgIGlmIChzaW5nbGVEZWNsYXJhdGlvbkVycm9yQ2hlY2socHVibGljVHlw
ZSwgaWRlbnRpZmllckxvY2F0aW9uKSkKLSAgICAgICAgICAgIHJlY292ZXIoKTsKKyAgICAgICAg
c2luZ2xlRGVjbGFyYXRpb25FcnJvckNoZWNrKHB1YmxpY1R5cGUsIGlkZW50aWZpZXJMb2NhdGlv
bik7CiAgICAgICAgIG1EZWZlcnJlZFNpbmdsZURlY2xhcmF0aW9uRXJyb3JDaGVjayA9IGZhbHNl
OwogICAgIH0KIAotICAgIGlmIChsb2NhdGlvbkRlY2xhcmF0b3JMaXN0Q2hlY2soaWRlbnRpZmll
ckxvY2F0aW9uLCBwdWJsaWNUeXBlKSkKLSAgICAgICAgcmVjb3ZlcigpOworICAgIGNoZWNrRGVj
bGFyYXRvckxvY2F0aW9uSXNOb3RTcGVjaWZpZWQoaWRlbnRpZmllckxvY2F0aW9uLCBwdWJsaWNU
eXBlKTsKIAotICAgIGlmIChub25Jbml0RXJyb3JDaGVjayhpZGVudGlmaWVyTG9jYXRpb24sIGlk
ZW50aWZpZXIsICZwdWJsaWNUeXBlKSkKLSAgICAgICAgcmVjb3ZlcigpOworICAgIGNoZWNrQ2Fu
QmVEZWNsYXJlZFdpdGhvdXRJbml0aWFsaXplcihpZGVudGlmaWVyTG9jYXRpb24sIGlkZW50aWZp
ZXIsICZwdWJsaWNUeXBlKTsKIAotICAgIGlmIChhcnJheVR5cGVFcnJvckNoZWNrKGFycmF5TG9j
YXRpb24sIHB1YmxpY1R5cGUpIHx8Ci0gICAgICAgIGFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayhh
cnJheUxvY2F0aW9uLCBwdWJsaWNUeXBlKSkKKyAgICBpZiAoY2hlY2tJc1ZhbGlkVHlwZUFuZFF1
YWxpZmllckZvckFycmF5KGFycmF5TG9jYXRpb24sIHB1YmxpY1R5cGUpKQogICAgIHsKLSAgICAg
ICAgcmVjb3ZlcigpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewogICAgICAgICBUVHlwZSBhcnJh
eVR5cGUgPSBUVHlwZShwdWJsaWNUeXBlKTsKLSAgICAgICAgaW50IHNpemU7Ci0gICAgICAgIGlm
IChhcnJheVNpemVFcnJvckNoZWNrKGFycmF5TG9jYXRpb24sIGluZGV4RXhwcmVzc2lvbiwgc2l6
ZSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJlY292ZXIoKTsKLSAgICAgICAgfQorICAgICAg
ICB1bnNpZ25lZCBpbnQgc2l6ZSA9IGNoZWNrSXNWYWxpZEFycmF5U2l6ZShhcnJheUxvY2F0aW9u
LCBpbmRleEV4cHJlc3Npb24pOwogICAgICAgICBhcnJheVR5cGUuc2V0QXJyYXlTaXplKHNpemUp
OwogCiAgICAgICAgIFRWYXJpYWJsZSAqdmFyaWFibGUgPSBudWxscHRyOwotICAgICAgICBpZiAo
IWRlY2xhcmVWYXJpYWJsZShpZGVudGlmaWVyTG9jYXRpb24sIGlkZW50aWZpZXIsIGFycmF5VHlw
ZSwgJnZhcmlhYmxlKSkKLSAgICAgICAgICAgIHJlY292ZXIoKTsKKyAgICAgICAgZGVjbGFyZVZh
cmlhYmxlKGlkZW50aWZpZXJMb2NhdGlvbiwgaWRlbnRpZmllciwgYXJyYXlUeXBlLCAmdmFyaWFi
bGUpOwogCiAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9CiAgICAgICAgICAgICBpbnRl
cm1lZGlhdGUuYWRkU3ltYm9sKDAsIGlkZW50aWZpZXIsIGFycmF5VHlwZSwgaWRlbnRpZmllckxv
Y2F0aW9uKTsKQEAgLTE3OTcsMTMgKzE4MTgsMTEgQEAKICAgICAvLyBub3QgcGVyZm9ybWVkLgog
ICAgIGlmIChtRGVmZXJyZWRTaW5nbGVEZWNsYXJhdGlvbkVycm9yQ2hlY2spCiAgICAgewotICAg
ICAgICBpZiAoc2luZ2xlRGVjbGFyYXRpb25FcnJvckNoZWNrKHB1YmxpY1R5cGUsIGlkZW50aWZp
ZXJMb2NhdGlvbikpCi0gICAgICAgICAgICByZWNvdmVyKCk7CisgICAgICAgIHNpbmdsZURlY2xh
cmF0aW9uRXJyb3JDaGVjayhwdWJsaWNUeXBlLCBpZGVudGlmaWVyTG9jYXRpb24pOwogICAgICAg
ICBtRGVmZXJyZWRTaW5nbGVEZWNsYXJhdGlvbkVycm9yQ2hlY2sgPSBmYWxzZTsKICAgICB9CiAK
LSAgICBpZiAobG9jYXRpb25EZWNsYXJhdG9yTGlzdENoZWNrKGlkZW50aWZpZXJMb2NhdGlvbiwg
cHVibGljVHlwZSkpCi0gICAgICAgIHJlY292ZXIoKTsKKyAgICBjaGVja0RlY2xhcmF0b3JMb2Nh
dGlvbklzTm90U3BlY2lmaWVkKGlkZW50aWZpZXJMb2NhdGlvbiwgcHVibGljVHlwZSk7CiAKICAg
ICBUSW50ZXJtTm9kZSAqaW50ZXJtTm9kZSA9IG51bGxwdHI7CiAgICAgaWYgKCFleGVjdXRlSW5p
dGlhbGl6ZXIoaWRlbnRpZmllckxvY2F0aW9uLCBpZGVudGlmaWVyLCBwdWJsaWNUeXBlLCBpbml0
aWFsaXplciwgJmludGVybU5vZGUpKQpAQCAtMTgyMiw3ICsxODQxLDYgQEAKICAgICB9CiAgICAg
ZWxzZQogICAgIHsKLSAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiB9CkBAIC0xODQwLDI5ICsxODU4LDIyIEBACiAgICAgLy8gbm90IHBlcmZvcm1lZC4K
ICAgICBpZiAobURlZmVycmVkU2luZ2xlRGVjbGFyYXRpb25FcnJvckNoZWNrKQogICAgIHsKLSAg
ICAgICAgaWYgKHNpbmdsZURlY2xhcmF0aW9uRXJyb3JDaGVjayhwdWJsaWNUeXBlLCBpZGVudGlm
aWVyTG9jYXRpb24pKQotICAgICAgICAgICAgcmVjb3ZlcigpOworICAgICAgICBzaW5nbGVEZWNs
YXJhdGlvbkVycm9yQ2hlY2socHVibGljVHlwZSwgaWRlbnRpZmllckxvY2F0aW9uKTsKICAgICAg
ICAgbURlZmVycmVkU2luZ2xlRGVjbGFyYXRpb25FcnJvckNoZWNrID0gZmFsc2U7CiAgICAgfQog
Ci0gICAgaWYgKGxvY2F0aW9uRGVjbGFyYXRvckxpc3RDaGVjayhpZGVudGlmaWVyTG9jYXRpb24s
IHB1YmxpY1R5cGUpKQotICAgICAgICByZWNvdmVyKCk7CisgICAgY2hlY2tEZWNsYXJhdG9yTG9j
YXRpb25Jc05vdFNwZWNpZmllZChpZGVudGlmaWVyTG9jYXRpb24sIHB1YmxpY1R5cGUpOwogCi0g
ICAgaWYgKGFycmF5VHlwZUVycm9yQ2hlY2soaW5kZXhMb2NhdGlvbiwgcHVibGljVHlwZSkgfHwK
LSAgICAgICAgYXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKGluZGV4TG9jYXRpb24sIHB1YmxpY1R5
cGUpKQotICAgIHsKLSAgICAgICAgcmVjb3ZlcigpOwotICAgIH0KKyAgICBjaGVja0lzVmFsaWRU
eXBlQW5kUXVhbGlmaWVyRm9yQXJyYXkoaW5kZXhMb2NhdGlvbiwgcHVibGljVHlwZSk7CiAKICAg
ICBUUHVibGljVHlwZSBhcnJheVR5cGUocHVibGljVHlwZSk7CiAKLSAgICBpbnQgc2l6ZSA9IDA7
CisgICAgdW5zaWduZWQgaW50IHNpemUgPSAwdTsKICAgICAvLyBJZiBpbmRleEV4cHJlc3Npb24g
aXMgbnVsbHB0ciwgdGhlbiB0aGUgYXJyYXkgd2lsbCBldmVudHVhbGx5IGdldCBpdHMgc2l6ZSBp
bXBsaWNpdGx5IGZyb20KICAgICAvLyB0aGUgaW5pdGlhbGl6ZXIuCi0gICAgaWYgKGluZGV4RXhw
cmVzc2lvbiAhPSBudWxscHRyICYmCi0gICAgICAgIGFycmF5U2l6ZUVycm9yQ2hlY2soaWRlbnRp
ZmllckxvY2F0aW9uLCBpbmRleEV4cHJlc3Npb24sIHNpemUpKQorICAgIGlmIChpbmRleEV4cHJl
c3Npb24gIT0gbnVsbHB0cikKICAgICB7Ci0gICAgICAgIHJlY292ZXIoKTsKKyAgICAgICAgc2l6
ZSA9IGNoZWNrSXNWYWxpZEFycmF5U2l6ZShpZGVudGlmaWVyTG9jYXRpb24sIGluZGV4RXhwcmVz
c2lvbik7CiAgICAgfQogICAgIC8vIE1ha2UgdGhlIHR5cGUgYW4gYXJyYXkgZXZlbiBpZiBzaXpl
IGNoZWNrIGZhaWxlZC4KICAgICAvLyBUaGlzIGVuc3VyZXMgdXNlbGVzcyBlcnJvciBtZXNzYWdl
cyByZWdhcmRpbmcgdGhlIHZhcmlhYmxlJ3Mgbm9uLWFycmF5bmVzcyB3b24ndCBmb2xsb3cuCkBA
IC0xODgzLDczICsxODk0LDE0MyBAQAogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBy
ZWNvdmVyKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIH0KIAotdm9pZCBUUGFy
c2VDb250ZXh0OjpwYXJzZUdsb2JhbExheW91dFF1YWxpZmllcihjb25zdCBUUHVibGljVHlwZSAm
dHlwZVF1YWxpZmllcikKK3ZvaWQgVFBhcnNlQ29udGV4dDo6cGFyc2VHbG9iYWxMYXlvdXRRdWFs
aWZpZXIoY29uc3QgVFR5cGVRdWFsaWZpZXJCdWlsZGVyICZ0eXBlUXVhbGlmaWVyQnVpbGRlcikK
IHsKLSAgICBpZiAodHlwZVF1YWxpZmllci5xdWFsaWZpZXIgIT0gRXZxVW5pZm9ybSkKLSAgICB7
Ci0gICAgICAgIGVycm9yKHR5cGVRdWFsaWZpZXIubGluZSwgImludmFsaWQgcXVhbGlmaWVyOiIs
IGdldFF1YWxpZmllclN0cmluZyh0eXBlUXVhbGlmaWVyLnF1YWxpZmllciksCi0gICAgICAgICAg
ICAgICJnbG9iYWwgbGF5b3V0IG11c3QgYmUgdW5pZm9ybSIpOwotICAgICAgICByZWNvdmVyKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KKyAgICBUVHlwZVF1YWxpZmllciB0eXBlUXVhbGlm
aWVyID0gdHlwZVF1YWxpZmllckJ1aWxkZXIuZ2V0VmFyaWFibGVUeXBlUXVhbGlmaWVyKCZtRGlh
Z25vc3RpY3MpOwogICAgIGNvbnN0IFRMYXlvdXRRdWFsaWZpZXIgbGF5b3V0UXVhbGlmaWVyID0g
dHlwZVF1YWxpZmllci5sYXlvdXRRdWFsaWZpZXI7Ci0gICAgQVNTRVJUKCFsYXlvdXRRdWFsaWZp
ZXIuaXNFbXB0eSgpKTsKIAotICAgIGlmIChtU2hhZGVyVmVyc2lvbiA8IDMwMCkKKyAgICBjaGVj
a0ludmFyaWFudFZhcmlhYmxlUXVhbGlmaWVyKHR5cGVRdWFsaWZpZXIuaW52YXJpYW50LCB0eXBl
UXVhbGlmaWVyLnF1YWxpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHR5cGVRdWFsaWZpZXIubGluZSk7CisKKyAgICAvLyBJdCBzaG91bGQgbmV2ZXIgYmUgdGhlIGNh
c2UsIGJ1dCBzb21lIHN0cmFuZ2UgcGFyc2VyIGVycm9ycyBjYW4gc2VuZCB1cyBoZXJlLgorICAg
IGlmIChsYXlvdXRRdWFsaWZpZXIuaXNFbXB0eSgpKQogICAgIHsKLSAgICAgICAgZXJyb3IodHlw
ZVF1YWxpZmllci5saW5lLCAibGF5b3V0IHF1YWxpZmllcnMgc3VwcG9ydGVkIGluIEdMU0wgRVMg
My4wMCBvbmx5IiwgImxheW91dCIpOwotICAgICAgICByZWNvdmVyKCk7CisgICAgICAgIGVycm9y
KHR5cGVRdWFsaWZpZXIubGluZSwgIkVycm9yIGR1cmluZyBsYXlvdXQgcXVhbGlmaWVyIHBhcnNp
bmcuIiwgIj8iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChsYXlvdXRMb2Nh
dGlvbkVycm9yQ2hlY2sodHlwZVF1YWxpZmllci5saW5lLCB0eXBlUXVhbGlmaWVyLmxheW91dFF1
YWxpZmllcikpCisgICAgaWYgKCFsYXlvdXRRdWFsaWZpZXIuaXNDb21iaW5hdGlvblZhbGlkKCkp
CiAgICAgewotICAgICAgICByZWNvdmVyKCk7CisgICAgICAgIGVycm9yKHR5cGVRdWFsaWZpZXIu
bGluZSwgImludmFsaWQgY29tYmluYXRpb246IiwgImxheW91dCIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgaWYgKGxheW91dFF1YWxpZmllci5tYXRyaXhQYWNraW5nICE9IEVtcFVu
c3BlY2lmaWVkKQorICAgIGlmICh0eXBlUXVhbGlmaWVyLnF1YWxpZmllciA9PSBFdnFDb21wdXRl
SW4pCiAgICAgewotICAgICAgICBtRGVmYXVsdE1hdHJpeFBhY2tpbmcgPSBsYXlvdXRRdWFsaWZp
ZXIubWF0cml4UGFja2luZzsKKyAgICAgICAgaWYgKG1Db21wdXRlU2hhZGVyTG9jYWxTaXplRGVj
bGFyZWQgJiYKKyAgICAgICAgICAgICFsYXlvdXRRdWFsaWZpZXIuaXNMb2NhbFNpemVFcXVhbCht
Q29tcHV0ZVNoYWRlckxvY2FsU2l6ZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVycm9yKHR5
cGVRdWFsaWZpZXIubGluZSwgIldvcmsgZ3JvdXAgc2l6ZSBkb2VzIG5vdCBtYXRjaCB0aGUgcHJl
dmlvdXMgZGVjbGFyYXRpb24iLAorICAgICAgICAgICAgICAgICAgImxheW91dCIpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1TaGFkZXJWZXJzaW9uIDwg
MzEwKQorICAgICAgICB7CisgICAgICAgICAgICBlcnJvcih0eXBlUXVhbGlmaWVyLmxpbmUsICJp
biB0eXBlIHF1YWxpZmllciBzdXBwb3J0ZWQgaW4gR0xTTCBFUyAzLjEwIG9ubHkiLCAibGF5b3V0
Iik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWxheW91
dFF1YWxpZmllci5sb2NhbFNpemUuaXNBbnlWYWx1ZVNldCgpKQorICAgICAgICB7CisgICAgICAg
ICAgICBlcnJvcih0eXBlUXVhbGlmaWVyLmxpbmUsICJObyBsb2NhbCB3b3JrIGdyb3VwIHNpemUg
c3BlY2lmaWVkIiwgImxheW91dCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgY29uc3QgVFZhcmlhYmxlICptYXhDb21wdXRlV29ya0dyb3VwU2l6ZSA9IHN0YXRp
Y19jYXN0PGNvbnN0IFRWYXJpYWJsZSAqPigKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLmZpbmRC
dWlsdEluKCJnbF9NYXhDb21wdXRlV29ya0dyb3VwU2l6ZSIsIG1TaGFkZXJWZXJzaW9uKSk7CisK
KyAgICAgICAgY29uc3QgVENvbnN0YW50VW5pb24gKm1heENvbXB1dGVXb3JrR3JvdXBTaXplRGF0
YSA9CisgICAgICAgICAgICBtYXhDb21wdXRlV29ya0dyb3VwU2l6ZS0+Z2V0Q29uc3RQb2ludGVy
KCk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDB1OyBpIDwgbGF5b3V0UXVhbGlmaWVyLmxv
Y2FsU2l6ZS5zaXplKCk7ICsraSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGxheW91dFF1
YWxpZmllci5sb2NhbFNpemVbaV0gIT0gLTEpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgbUNvbXB1dGVTaGFkZXJMb2NhbFNpemVbaV0gICAgICAgICAgICAgPSBsYXlvdXRRdWFsaWZp
ZXIubG9jYWxTaXplW2ldOworICAgICAgICAgICAgICAgIGNvbnN0IGludCBtYXhDb21wdXRlV29y
a0dyb3VwU2l6ZVZhbHVlID0gbWF4Q29tcHV0ZVdvcmtHcm91cFNpemVEYXRhW2ldLmdldElDb25z
dCgpOworICAgICAgICAgICAgICAgIGlmIChtQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZVtpXSA8IDEg
fHwKKyAgICAgICAgICAgICAgICAgICAgbUNvbXB1dGVTaGFkZXJMb2NhbFNpemVbaV0gPiBtYXhD
b21wdXRlV29ya0dyb3VwU2l6ZVZhbHVlKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXJyb3JNZXNzYWdlU3RyZWFtOworICAgICAgICAg
ICAgICAgICAgICBlcnJvck1lc3NhZ2VTdHJlYW0gPDwgIlZhbHVlIG11c3QgYmUgYXQgbGVhc3Qg
MSBhbmQgbm8gZ3JlYXRlciB0aGFuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDw8IG1heENvbXB1dGVXb3JrR3JvdXBTaXplVmFsdWU7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZlcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2VTdHJlYW0u
c3RyKCk7CisKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IodHlwZVF1YWxpZmllci5saW5lLCAi
aW52YWxpZCB2YWx1ZToiLCBnZXRXb3JrR3JvdXBTaXplU3RyaW5nKGkpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UuY19zdHIoKSk7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICBtQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZURlY2xhcmVkID0gdHJ1ZTsKICAgICB9Cisg
ICAgZWxzZQorICAgIHsKIAotICAgIGlmIChsYXlvdXRRdWFsaWZpZXIuYmxvY2tTdG9yYWdlICE9
IEVic1Vuc3BlY2lmaWVkKQotICAgIHsKLSAgICAgICAgbURlZmF1bHRCbG9ja1N0b3JhZ2UgPSBs
YXlvdXRRdWFsaWZpZXIuYmxvY2tTdG9yYWdlOworICAgICAgICBpZiAoIWNoZWNrV29ya0dyb3Vw
U2l6ZUlzTm90U3BlY2lmaWVkKHR5cGVRdWFsaWZpZXIubGluZSwgdHlwZVF1YWxpZmllci5sYXlv
dXRRdWFsaWZpZXIpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBpZiAodHlwZVF1YWxpZmllci5xdWFsaWZpZXIgIT0gRXZxVW5pZm9ybSkKKyAg
ICAgICAgeworICAgICAgICAgICAgZXJyb3IodHlwZVF1YWxpZmllci5saW5lLCAiaW52YWxpZCBx
dWFsaWZpZXI6IiwKKyAgICAgICAgICAgICAgICAgIGdldFF1YWxpZmllclN0cmluZyh0eXBlUXVh
bGlmaWVyLnF1YWxpZmllciksICJnbG9iYWwgbGF5b3V0IG11c3QgYmUgdW5pZm9ybSIpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1TaGFkZXJWZXJzaW9u
IDwgMzAwKQorICAgICAgICB7CisgICAgICAgICAgICBlcnJvcih0eXBlUXVhbGlmaWVyLmxpbmUs
ICJsYXlvdXQgcXVhbGlmaWVycyBzdXBwb3J0ZWQgaW4gR0xTTCBFUyAzLjAwIGFuZCBhYm92ZSIs
CisgICAgICAgICAgICAgICAgICAibGF5b3V0Iik7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBjaGVja0xvY2F0aW9uSXNOb3RTcGVjaWZpZWQodHlwZVF1YWxpZmll
ci5saW5lLCB0eXBlUXVhbGlmaWVyLmxheW91dFF1YWxpZmllcik7CisKKyAgICAgICAgaWYgKGxh
eW91dFF1YWxpZmllci5tYXRyaXhQYWNraW5nICE9IEVtcFVuc3BlY2lmaWVkKQorICAgICAgICB7
CisgICAgICAgICAgICBtRGVmYXVsdE1hdHJpeFBhY2tpbmcgPSBsYXlvdXRRdWFsaWZpZXIubWF0
cml4UGFja2luZzsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChsYXlvdXRRdWFsaWZpZXIuYmxv
Y2tTdG9yYWdlICE9IEVic1Vuc3BlY2lmaWVkKQorICAgICAgICB7CisgICAgICAgICAgICBtRGVm
YXVsdEJsb2NrU3RvcmFnZSA9IGxheW91dFF1YWxpZmllci5ibG9ja1N0b3JhZ2U7CisgICAgICAg
IH0KICAgICB9CiB9CiAKLVRJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OmFkZEZ1bmN0
aW9uUHJvdG90eXBlRGVjbGFyYXRpb24oY29uc3QgVEZ1bmN0aW9uICZmdW5jdGlvbiwKK1RJbnRl
cm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OmFkZEZ1bmN0aW9uUHJvdG90eXBlRGVjbGFyYXRp
b24oY29uc3QgVEZ1bmN0aW9uICZwYXJzZWRGdW5jdGlvbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJj
ZUxvYyAmbG9jYXRpb24pCiB7Ci0gICAgLy8gTm90ZTogc3ltYm9sVGFibGVGdW5jdGlvbiBjb3Vs
ZCBiZSB0aGUgc2FtZSBhcyBmdW5jdGlvbiBpZiB0aGlzIGlzIHRoZSBmaXJzdCBkZWNsYXJhdGlv
bi4KLSAgICAvLyBFaXRoZXIgd2F5IHRoZSBpbnN0YW5jZSBpbiB0aGUgc3ltYm9sIHRhYmxlIGlz
IHVzZWQgdG8gdHJhY2sgd2hldGhlciB0aGUgZnVuY3Rpb24gaXMgZGVjbGFyZWQKLSAgICAvLyBt
dWx0aXBsZSB0aW1lcy4KLSAgICBURnVuY3Rpb24gKnN5bWJvbFRhYmxlRnVuY3Rpb24gPQotICAg
ICAgICBzdGF0aWNfY2FzdDxURnVuY3Rpb24gKj4oc3ltYm9sVGFibGUuZmluZChmdW5jdGlvbi5n
ZXRNYW5nbGVkTmFtZSgpLCBnZXRTaGFkZXJWZXJzaW9uKCkpKTsKLSAgICBpZiAoc3ltYm9sVGFi
bGVGdW5jdGlvbi0+aGFzUHJvdG90eXBlRGVjbGFyYXRpb24oKSAmJiBtU2hhZGVyVmVyc2lvbiA9
PSAxMDApCisgICAgLy8gTm90ZTogZnVuY3Rpb24gZm91bmQgZnJvbSB0aGUgc3ltYm9sIHRhYmxl
IGNvdWxkIGJlIHRoZSBzYW1lIGFzIHBhcnNlZEZ1bmN0aW9uIGlmIHRoaXMgaXMgdGhlCisgICAg
Ly8gZmlyc3QgZGVjbGFyYXRpb24uIEVpdGhlciB3YXkgdGhlIGluc3RhbmNlIGluIHRoZSBzeW1i
b2wgdGFibGUgaXMgdXNlZCB0byB0cmFjayB3aGV0aGVyIHRoZQorICAgIC8vIGZ1bmN0aW9uIGlz
IGRlY2xhcmVkIG11bHRpcGxlIHRpbWVzLgorICAgIFRGdW5jdGlvbiAqZnVuY3Rpb24gPSBzdGF0
aWNfY2FzdDxURnVuY3Rpb24gKj4oCisgICAgICAgIHN5bWJvbFRhYmxlLmZpbmQocGFyc2VkRnVu
Y3Rpb24uZ2V0TWFuZ2xlZE5hbWUoKSwgZ2V0U2hhZGVyVmVyc2lvbigpKSk7CisgICAgaWYgKGZ1
bmN0aW9uLT5oYXNQcm90b3R5cGVEZWNsYXJhdGlvbigpICYmIG1TaGFkZXJWZXJzaW9uID09IDEw
MCkKICAgICB7CiAgICAgICAgIC8vIEVTU0wgMS4wMC4xNyBzZWN0aW9uIDQuMi43LgogICAgICAg
ICAvLyBEb2Vzbid0IGFwcGx5IHRvIEVTU0wgMy4wMC40OiBzZWUgc2VjdGlvbiA0LjIuMy4KICAg
ICAgICAgZXJyb3IobG9jYXRpb24sICJkdXBsaWNhdGUgZnVuY3Rpb24gcHJvdG90eXBlIGRlY2xh
cmF0aW9ucyBhcmUgbm90IGFsbG93ZWQiLCAiZnVuY3Rpb24iKTsKLSAgICAgICAgcmVjb3Zlcigp
OwogICAgIH0KLSAgICBzeW1ib2xUYWJsZUZ1bmN0aW9uLT5zZXRIYXNQcm90b3R5cGVEZWNsYXJh
dGlvbigpOworICAgIGZ1bmN0aW9uLT5zZXRIYXNQcm90b3R5cGVEZWNsYXJhdGlvbigpOwogCiAg
ICAgVEludGVybUFnZ3JlZ2F0ZSAqcHJvdG90eXBlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGU7Ci0g
ICAgcHJvdG90eXBlLT5zZXRUeXBlKGZ1bmN0aW9uLmdldFJldHVyblR5cGUoKSk7Ci0gICAgcHJv
dG90eXBlLT5zZXROYW1lKGZ1bmN0aW9uLmdldE1hbmdsZWROYW1lKCkpOwotICAgIHByb3RvdHlw
ZS0+c2V0RnVuY3Rpb25JZChmdW5jdGlvbi5nZXRVbmlxdWVJZCgpKTsKKyAgICAvLyBUT0RPKG9l
dHVhaG9AbnZpZGlhLmNvbSk6IEluc3RlYWQgb2YgY29udmVydGluZyB0aGUgZnVuY3Rpb24gaW5m
b3JtYXRpb24gaGVyZSwgdGhlIG5vZGUgY291bGQKKyAgICAvLyBwb2ludCB0byB0aGUgZGF0YSB0
aGF0IGFscmVhZHkgZXhpc3RzIGluIHRoZSBzeW1ib2wgdGFibGUuCisgICAgcHJvdG90eXBlLT5z
ZXRUeXBlKGZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkpOworICAgIHByb3RvdHlwZS0+Z2V0RnVu
Y3Rpb25TeW1ib2xJbmZvKCktPnNldEZyb21GdW5jdGlvbigqZnVuY3Rpb24pOwogCi0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbi5nZXRQYXJhbUNvdW50KCk7IGkrKykKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9uLT5nZXRQYXJhbUNvdW50KCk7IGkrKykKICAg
ICB7Ci0gICAgICAgIGNvbnN0IFRDb25zdFBhcmFtZXRlciAmcGFyYW0gPSBmdW5jdGlvbi5nZXRQ
YXJhbShpKTsKKyAgICAgICAgY29uc3QgVENvbnN0UGFyYW1ldGVyICZwYXJhbSA9IGZ1bmN0aW9u
LT5nZXRQYXJhbShpKTsKICAgICAgICAgaWYgKHBhcmFtLm5hbWUgIT0gMCkKICAgICAgICAgewog
ICAgICAgICAgICAgVFZhcmlhYmxlIHZhcmlhYmxlKHBhcmFtLm5hbWUsICpwYXJhbS50eXBlKTsK
QEAgLTE5NzMsODMgKzIwNTQsODkgQEAKICAgICB7CiAgICAgICAgIC8vIEVTU0wgMy4wMC40IHNl
Y3Rpb24gNC4yLjQuCiAgICAgICAgIGVycm9yKGxvY2F0aW9uLCAibG9jYWwgZnVuY3Rpb24gcHJv
dG90eXBlIGRlY2xhcmF0aW9ucyBhcmUgbm90IGFsbG93ZWQiLCAiZnVuY3Rpb24iKTsKLSAgICAg
ICAgcmVjb3ZlcigpOwogICAgIH0KIAogICAgIHJldHVybiBwcm90b3R5cGU7CiB9CiAKLVRJbnRl
cm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OmFkZEZ1bmN0aW9uRGVmaW5pdGlvbihjb25zdCBU
RnVuY3Rpb24gJmZ1bmN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmZ1bmN0aW9uUHJvdG90eXBlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJ
bnRlcm1BZ2dyZWdhdGUgKmZ1bmN0aW9uQm9keSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsb2NhdGlvbikK
K1RJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKlRQYXJzZUNvbnRleHQ6OmFkZEZ1bmN0aW9uRGVm
aW5pdGlvbigKKyAgICBjb25zdCBURnVuY3Rpb24gJmZ1bmN0aW9uLAorICAgIFRJbnRlcm1BZ2dy
ZWdhdGUgKmZ1bmN0aW9uUGFyYW1ldGVycywKKyAgICBUSW50ZXJtQmxvY2sgKmZ1bmN0aW9uQm9k
eSwKKyAgICBjb25zdCBUU291cmNlTG9jICZsb2NhdGlvbikKIHsKLSAgICAvLz8/IENoZWNrIHRo
YXQgYWxsIHBhdGhzIHJldHVybiBhIHZhbHVlIGlmIHJldHVybiB0eXBlICE9IHZvaWQgPwotICAg
IC8vICAgTWF5IGJlIGJlc3QgZG9uZSBhcyBwb3N0IHByb2Nlc3MgcGhhc2Ugb24gaW50ZXJtZWRp
YXRlIGNvZGUKKyAgICAvLyBDaGVjayB0aGF0IG5vbi12b2lkIGZ1bmN0aW9ucyBoYXZlIGF0IGxl
YXN0IG9uZSByZXR1cm4gc3RhdGVtZW50LgogICAgIGlmIChtQ3VycmVudEZ1bmN0aW9uVHlwZS0+
Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0Vm9pZCAmJiAhbUZ1bmN0aW9uUmV0dXJuc1ZhbHVlKQogICAg
IHsKICAgICAgICAgZXJyb3IobG9jYXRpb24sICJmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2
YWx1ZToiLCAiIiwgZnVuY3Rpb24uZ2V0TmFtZSgpLmNfc3RyKCkpOwotICAgICAgICByZWNvdmVy
KCk7CiAgICAgfQogCi0gICAgVEludGVybUFnZ3JlZ2F0ZSAqYWdncmVnYXRlID0KLSAgICAgICAg
aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoZnVuY3Rpb25Qcm90b3R5cGUsIGZ1bmN0aW9uQm9k
eSwgbG9jYXRpb24pOwotICAgIGludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcihhZ2dy
ZWdhdGUsIEVPcEZ1bmN0aW9uLCBsb2NhdGlvbik7Ci0gICAgYWdncmVnYXRlLT5zZXROYW1lKGZ1
bmN0aW9uLmdldE1hbmdsZWROYW1lKCkuY19zdHIoKSk7Ci0gICAgYWdncmVnYXRlLT5zZXRUeXBl
KGZ1bmN0aW9uLmdldFJldHVyblR5cGUoKSk7Ci0gICAgYWdncmVnYXRlLT5zZXRGdW5jdGlvbklk
KGZ1bmN0aW9uLmdldFVuaXF1ZUlkKCkpOworICAgIGlmIChmdW5jdGlvbkJvZHkgPT0gbnVsbHB0
cikKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uQm9keSA9IG5ldyBUSW50ZXJtQmxvY2soKTsKKyAg
ICAgICAgZnVuY3Rpb25Cb2R5LT5zZXRMaW5lKGxvY2F0aW9uKTsKKyAgICB9CisgICAgVEludGVy
bUZ1bmN0aW9uRGVmaW5pdGlvbiAqZnVuY3Rpb25Ob2RlID0KKyAgICAgICAgbmV3IFRJbnRlcm1G
dW5jdGlvbkRlZmluaXRpb24oZnVuY3Rpb24uZ2V0UmV0dXJuVHlwZSgpLCBmdW5jdGlvblBhcmFt
ZXRlcnMsIGZ1bmN0aW9uQm9keSk7CisgICAgZnVuY3Rpb25Ob2RlLT5zZXRMaW5lKGxvY2F0aW9u
KTsKIAorICAgIGZ1bmN0aW9uTm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPnNldEZyb21G
dW5jdGlvbihmdW5jdGlvbik7CisKICAgICBzeW1ib2xUYWJsZS5wb3AoKTsKLSAgICByZXR1cm4g
YWdncmVnYXRlOworICAgIHJldHVybiBmdW5jdGlvbk5vZGU7CiB9CiAKLXZvaWQgVFBhcnNlQ29u
dGV4dDo6cGFyc2VGdW5jdGlvblByb3RvdHlwZShjb25zdCBUU291cmNlTG9jICZsb2NhdGlvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURnVuY3Rpb24gKmZ1
bmN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRl
cm1BZ2dyZWdhdGUgKiphZ2dyZWdhdGVPdXQpCit2b2lkIFRQYXJzZUNvbnRleHQ6OnBhcnNlRnVu
Y3Rpb25EZWZpbml0aW9uSGVhZGVyKGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURnVuY3Rpb24gKipm
dW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVEludGVybUFnZ3JlZ2F0ZSAqKmFnZ3JlZ2F0ZU91dCkKIHsKKyAgICBBU1NFUlQoZnVuY3Rp
b24pOworICAgIEFTU0VSVCgqZnVuY3Rpb24pOwogICAgIGNvbnN0IFRTeW1ib2wgKmJ1aWx0SW4g
PQotICAgICAgICBzeW1ib2xUYWJsZS5maW5kQnVpbHRJbihmdW5jdGlvbi0+Z2V0TWFuZ2xlZE5h
bWUoKSwgZ2V0U2hhZGVyVmVyc2lvbigpKTsKKyAgICAgICAgc3ltYm9sVGFibGUuZmluZEJ1aWx0
SW4oKCpmdW5jdGlvbiktPmdldE1hbmdsZWROYW1lKCksIGdldFNoYWRlclZlcnNpb24oKSk7CiAK
ICAgICBpZiAoYnVpbHRJbikKICAgICB7Ci0gICAgICAgIGVycm9yKGxvY2F0aW9uLCAiYnVpbHQt
aW4gZnVuY3Rpb25zIGNhbm5vdCBiZSByZWRlZmluZWQiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNf
c3RyKCkpOwotICAgICAgICByZWNvdmVyKCk7CisgICAgICAgIGVycm9yKGxvY2F0aW9uLCAiYnVp
bHQtaW4gZnVuY3Rpb25zIGNhbm5vdCBiZSByZWRlZmluZWQiLCAoKmZ1bmN0aW9uKS0+Z2V0TmFt
ZSgpLmNfc3RyKCkpOwogICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBURnVuY3Rpb24g
KnByZXZEZWMgPSBzdGF0aWNfY2FzdDxURnVuY3Rpb24gKj4oCisgICAgICAgICAgICBzeW1ib2xU
YWJsZS5maW5kKCgqZnVuY3Rpb24pLT5nZXRNYW5nbGVkTmFtZSgpLCBnZXRTaGFkZXJWZXJzaW9u
KCkpKTsKIAotICAgIFRGdW5jdGlvbiAqcHJldkRlYyA9Ci0gICAgICAgIHN0YXRpY19jYXN0PFRG
dW5jdGlvbiAqPihzeW1ib2xUYWJsZS5maW5kKGZ1bmN0aW9uLT5nZXRNYW5nbGVkTmFtZSgpLCBn
ZXRTaGFkZXJWZXJzaW9uKCkpKTsKLSAgICAvLwotICAgIC8vIE5vdGU6ICAncHJldkRlYycgY291
bGQgYmUgJ2Z1bmN0aW9uJyBpZiB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHdlJ3ZlIHNlZW4gZnVu
Y3Rpb24KLSAgICAvLyBhcyBpdCB3b3VsZCBoYXZlIGp1c3QgYmVlbiBwdXQgaW4gdGhlIHN5bWJv
bCB0YWJsZS4gIE90aGVyd2lzZSwgd2UncmUgbG9va2luZyB1cAotICAgIC8vIGFuIGVhcmxpZXIg
b2NjdXJhbmNlLgotICAgIC8vCi0gICAgaWYgKHByZXZEZWMtPmlzRGVmaW5lZCgpKQotICAgIHsK
LSAgICAgICAgLy8gVGhlbiB0aGlzIGZ1bmN0aW9uIGFscmVhZHkgaGFzIGEgYm9keS4KLSAgICAg
ICAgZXJyb3IobG9jYXRpb24sICJmdW5jdGlvbiBhbHJlYWR5IGhhcyBhIGJvZHkiLCBmdW5jdGlv
bi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwotICAgICAgICByZWNvdmVyKCk7CisgICAgICAgIC8vIE5v
dGU6ICdwcmV2RGVjJyBjb3VsZCBiZSAnZnVuY3Rpb24nIGlmIHRoaXMgaXMgdGhlIGZpcnN0IHRp
bWUgd2UndmUgc2VlbiBmdW5jdGlvbiBhcyBpdAorICAgICAgICAvLyB3b3VsZCBoYXZlIGp1c3Qg
YmVlbiBwdXQgaW4gdGhlIHN5bWJvbCB0YWJsZS4gT3RoZXJ3aXNlLCB3ZSdyZSBsb29raW5nIHVw
IGFuIGVhcmxpZXIKKyAgICAgICAgLy8gb2NjdXJhbmNlLgorICAgICAgICBpZiAoKmZ1bmN0aW9u
ICE9IHByZXZEZWMpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFN3YXAgdGhlIHBhcmFtZXRl
cnMgb2YgdGhlIHByZXZpb3VzIGRlY2xhcmF0aW9uIHRvIHRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBm
dW5jdGlvbgorICAgICAgICAgICAgLy8gZGVmaW5pdGlvbiAocGFyYW1ldGVyIG5hbWVzIG1heSBk
aWZmZXIpLgorICAgICAgICAgICAgcHJldkRlYy0+c3dhcFBhcmFtZXRlcnMoKipmdW5jdGlvbik7
CisKKyAgICAgICAgICAgIC8vIFRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIHdpbGwgc2hhcmUgdGhl
IHNhbWUgc3ltYm9sIGFzIGFueSBwcmV2aW91cyBkZWNsYXJhdGlvbi4KKyAgICAgICAgICAgICpm
dW5jdGlvbiA9IHByZXZEZWM7CisgICAgICAgIH0KKworICAgICAgICBpZiAoKCpmdW5jdGlvbikt
PmlzRGVmaW5lZCgpKQorICAgICAgICB7CisgICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwgImZ1
bmN0aW9uIGFscmVhZHkgaGFzIGEgYm9keSIsICgqZnVuY3Rpb24pLT5nZXROYW1lKCkuY19zdHIo
KSk7CisgICAgICAgIH0KKworICAgICAgICAoKmZ1bmN0aW9uKS0+c2V0RGVmaW5lZCgpOwogICAg
IH0KLSAgICBwcmV2RGVjLT5zZXREZWZpbmVkKCk7Ci0gICAgLy8KLSAgICAvLyBPdmVybG9hZCB0
aGUgdW5pcXVlIElEIG9mIHRoZSBkZWZpbml0aW9uIHRvIGJlIHRoZSBzYW1lIHVuaXF1ZSBJRCBh
cyB0aGUgZGVjbGFyYXRpb24uCi0gICAgLy8gRXZlbnR1YWxseSB3ZSB3aWxsIHByb2JhYmx5IHdh
bnQgdG8gaGF2ZSBvbmx5IGEgc2luZ2xlIGRlZmluaXRpb24gYW5kIGp1c3Qgc3dhcCB0aGUKLSAg
ICAvLyBhcmd1bWVudHMgdG8gYmUgdGhlIGRlZmluaXRpb24ncyBhcmd1bWVudHMuCi0gICAgLy8K
LSAgICBmdW5jdGlvbi0+c2V0VW5pcXVlSWQocHJldkRlYy0+Z2V0VW5pcXVlSWQoKSk7CiAKICAg
ICAvLyBSYWlzZSBlcnJvciBtZXNzYWdlIGlmIG1haW4gZnVuY3Rpb24gdGFrZXMgYW55IHBhcmFt
ZXRlcnMgb3IgcmV0dXJuIGFueXRoaW5nIG90aGVyIHRoYW4gdm9pZAotICAgIGlmIChmdW5jdGlv
bi0+Z2V0TmFtZSgpID09ICJtYWluIikKKyAgICBpZiAoKCpmdW5jdGlvbiktPmdldE5hbWUoKSA9
PSAibWFpbiIpCiAgICAgewotICAgICAgICBpZiAoZnVuY3Rpb24tPmdldFBhcmFtQ291bnQoKSA+
IDApCisgICAgICAgIGlmICgoKmZ1bmN0aW9uKS0+Z2V0UGFyYW1Db3VudCgpID4gMCkKICAgICAg
ICAgewotICAgICAgICAgICAgZXJyb3IobG9jYXRpb24sICJmdW5jdGlvbiBjYW5ub3QgdGFrZSBh
bnkgcGFyYW1ldGVyKHMpIiwgZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKLSAgICAgICAg
ICAgIHJlY292ZXIoKTsKKyAgICAgICAgICAgIGVycm9yKGxvY2F0aW9uLCAiZnVuY3Rpb24gY2Fu
bm90IHRha2UgYW55IHBhcmFtZXRlcihzKSIsCisgICAgICAgICAgICAgICAgICAoKmZ1bmN0aW9u
KS0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChmdW5jdGlvbi0+
Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQpCisgICAgICAgIGlmICgo
KmZ1bmN0aW9uKS0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGVycm9yKGxvY2F0aW9uLCAiIiwgZnVuY3Rpb24tPmdldFJl
dHVyblR5cGUoKS5nZXRCYXNpY1N0cmluZygpLAorICAgICAgICAgICAgZXJyb3IobG9jYXRpb24s
ICIiLCAoKmZ1bmN0aW9uKS0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljU3RyaW5nKCksCiAgICAg
ICAgICAgICAgICAgICAibWFpbiBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiKTsKLSAg
ICAgICAgICAgIHJlY292ZXIoKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjA1Niw3ICsyMTQz
LDcgQEAKICAgICAvLwogICAgIC8vIFJlbWVtYmVyIHRoZSByZXR1cm4gdHlwZSBmb3IgbGF0ZXIg
Y2hlY2tpbmcgZm9yIFJFVFVSTiBzdGF0ZW1lbnRzLgogICAgIC8vCi0gICAgbUN1cnJlbnRGdW5j
dGlvblR5cGUgID0gJihwcmV2RGVjLT5nZXRSZXR1cm5UeXBlKCkpOworICAgIG1DdXJyZW50RnVu
Y3Rpb25UeXBlICA9ICYoKCpmdW5jdGlvbiktPmdldFJldHVyblR5cGUoKSk7CiAgICAgbUZ1bmN0
aW9uUmV0dXJuc1ZhbHVlID0gZmFsc2U7CiAKICAgICAvLwpAQCAtMjA2OCw5ICsyMTU1LDkgQEAK
ICAgICAvLyBrbm93cyB3aGVyZSB0byBmaW5kIHBhcmFtZXRlcnMuCiAgICAgLy8KICAgICBUSW50
ZXJtQWdncmVnYXRlICpwYXJhbU5vZGVzID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGU7Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbi0+Z2V0UGFyYW1Db3VudCgpOyBpKyspCisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCAoKmZ1bmN0aW9uKS0+Z2V0UGFyYW1Db3VudCgpOyBpKysp
CiAgICAgewotICAgICAgICBjb25zdCBUQ29uc3RQYXJhbWV0ZXIgJnBhcmFtID0gZnVuY3Rpb24t
PmdldFBhcmFtKGkpOworICAgICAgICBjb25zdCBUQ29uc3RQYXJhbWV0ZXIgJnBhcmFtID0gKCpm
dW5jdGlvbiktPmdldFBhcmFtKGkpOwogICAgICAgICBpZiAocGFyYW0ubmFtZSAhPSAwKQogICAg
ICAgICB7CiAgICAgICAgICAgICBUVmFyaWFibGUgKnZhcmlhYmxlID0gbmV3IFRWYXJpYWJsZShw
YXJhbS5uYW1lLCAqcGFyYW0udHlwZSk7CkBAIC0yMDgwLDcgKzIxNjcsNiBAQAogICAgICAgICAg
ICAgaWYgKCFzeW1ib2xUYWJsZS5kZWNsYXJlKHZhcmlhYmxlKSkKICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwgInJlZGVmaW5pdGlvbiIsIHZhcmlhYmxlLT5n
ZXROYW1lKCkuY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICAg
ICAgICAgIHBhcmFtTm9kZXMgPSBpbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgKICAgICAgICAg
ICAgICAgICAgICAgcGFyYW1Ob2RlcywgaW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgKnBh
cmFtLnR5cGUsIGxvY2F0aW9uKSwgbG9jYXRpb24pOwogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwpAQCAtMjEyNCwxNSArMjIxMCwxMyBAQAogICAgICAgICAvLyBUaGVyZWZvcmUgb3ZlcmxvYWRp
bmcgb3IgcmVkZWZpbmluZyBidWlsdGluIGZ1bmN0aW9ucyBpcyBhbiBlcnJvci4KICAgICAgICAg
ZXJyb3IobG9jYXRpb24sICJOYW1lIG9mIGEgYnVpbHQtaW4gZnVuY3Rpb24gY2Fubm90IGJlIHJl
ZGVjbGFyZWQgYXMgZnVuY3Rpb24iLAogICAgICAgICAgICAgICBmdW5jdGlvbi0+Z2V0TmFtZSgp
LmNfc3RyKCkpOwotICAgICAgICByZWNvdmVyKCk7CiAgICAgfQogICAgIGVsc2UgaWYgKHByZXZE
ZWMpCiAgICAgewogICAgICAgICBpZiAocHJldkRlYy0+Z2V0UmV0dXJuVHlwZSgpICE9IGZ1bmN0
aW9uLT5nZXRSZXR1cm5UeXBlKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGVycm9yKGxvY2F0
aW9uLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBzYW1lIHJldHVybiB0eXBl
IiwKKyAgICAgICAgICAgIGVycm9yKGxvY2F0aW9uLCAiZnVuY3Rpb24gbXVzdCBoYXZlIHRoZSBz
YW1lIHJldHVybiB0eXBlIGluIGFsbCBvZiBpdHMgZGVjbGFyYXRpb25zIiwKICAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSk7Ci0gICAg
ICAgICAgICByZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBwcmV2RGVjLT5nZXRQYXJhbUNvdW50KCk7ICsraSkKICAgICAgICAgewpAQCAtMjEzOSw5
ICsyMjIzLDkgQEAKICAgICAgICAgICAgIGlmIChwcmV2RGVjLT5nZXRQYXJhbShpKS50eXBlLT5n
ZXRRdWFsaWZpZXIoKSAhPQogICAgICAgICAgICAgICAgIGZ1bmN0aW9uLT5nZXRQYXJhbShpKS50
eXBlLT5nZXRRdWFsaWZpZXIoKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBlcnJv
cihsb2NhdGlvbiwgIm92ZXJsb2FkZWQgZnVuY3Rpb25zIG11c3QgaGF2ZSB0aGUgc2FtZSBwYXJh
bWV0ZXIgcXVhbGlmaWVycyIsCisgICAgICAgICAgICAgICAgZXJyb3IobG9jYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIG11c3QgaGF2ZSB0aGUgc2FtZSBwYXJhbWV0ZXIg
cXVhbGlmaWVycyBpbiBhbGwgb2YgaXRzIGRlY2xhcmF0aW9ucyIsCiAgICAgICAgICAgICAgICAg
ICAgICAgZnVuY3Rpb24tPmdldFBhcmFtKGkpLnR5cGUtPmdldFF1YWxpZmllclN0cmluZygpKTsK
LSAgICAgICAgICAgICAgICByZWNvdmVyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CkBAIC0yMTU1LDE1ICsyMjM5LDEyIEBACiAgICAgICAgIGlmICghcHJldlN5bS0+aXNGdW5j
dGlvbigpKQogICAgICAgICB7CiAgICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwgInJlZGVmaW5p
dGlvbiIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSwgImZ1bmN0aW9uIik7Ci0gICAgICAg
ICAgICByZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZQogICAgIHsKICAgICAg
ICAgLy8gSW5zZXJ0IHRoZSB1bm1hbmdsZWQgbmFtZSB0byBkZXRlY3QgcG90ZW50aWFsIGZ1dHVy
ZSByZWRlZmluaXRpb24gYXMgYSB2YXJpYWJsZS4KLSAgICAgICAgVEZ1bmN0aW9uICpuZXdGdW5j
dGlvbiA9Ci0gICAgICAgICAgICBuZXcgVEZ1bmN0aW9uKE5ld1Bvb2xUU3RyaW5nKGZ1bmN0aW9u
LT5nZXROYW1lKCkuY19zdHIoKSksICZmdW5jdGlvbi0+Z2V0UmV0dXJuVHlwZSgpKTsKLSAgICAg
ICAgc3ltYm9sVGFibGUuZ2V0T3V0ZXJMZXZlbCgpLT5pbnNlcnRVbm1hbmdsZWQobmV3RnVuY3Rp
b24pOworICAgICAgICBzeW1ib2xUYWJsZS5nZXRPdXRlckxldmVsKCktPmluc2VydFVubWFuZ2xl
ZChmdW5jdGlvbik7CiAgICAgfQogCiAgICAgLy8gV2UncmUgYXQgdGhlIGlubmVyIHNjb3BlIGxl
dmVsIG9mIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50cyBhbmQgYm9keSBzdGF0ZW1lbnQuCkBAIC0y
MTc4LDE1NyArMjI1OSw2MiBAQAogICAgIHJldHVybiBmdW5jdGlvbjsKIH0KIAorVEZ1bmN0aW9u
ICpUUGFyc2VDb250ZXh0OjpwYXJzZUZ1bmN0aW9uSGVhZGVyKGNvbnN0IFRQdWJsaWNUeXBlICZ0
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRTdHJpbmcgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jYXRpb24pCit7CisgICAgaWYgKHR5cGUucXVhbGlm
aWVyICE9IEV2cUdsb2JhbCAmJiB0eXBlLnF1YWxpZmllciAhPSBFdnFUZW1wb3JhcnkpCisgICAg
eworICAgICAgICBlcnJvcihsb2NhdGlvbiwgIm5vIHF1YWxpZmllcnMgYWxsb3dlZCBmb3IgZnVu
Y3Rpb24gcmV0dXJuIiwKKyAgICAgICAgICAgICAgZ2V0UXVhbGlmaWVyU3RyaW5nKHR5cGUucXVh
bGlmaWVyKSk7CisgICAgfQorICAgIGlmICghdHlwZS5sYXlvdXRRdWFsaWZpZXIuaXNFbXB0eSgp
KQorICAgIHsKKyAgICAgICAgZXJyb3IobG9jYXRpb24sICJubyBxdWFsaWZpZXJzIGFsbG93ZWQg
Zm9yIGZ1bmN0aW9uIHJldHVybiIsICJsYXlvdXQiKTsKKyAgICB9CisgICAgLy8gbWFrZSBzdXJl
IGEgc2FtcGxlciBpcyBub3QgaW52b2x2ZWQgYXMgd2VsbC4uLgorICAgIGNoZWNrSXNOb3RTYW1w
bGVyKGxvY2F0aW9uLCB0eXBlLnR5cGVTcGVjaWZpZXJOb25BcnJheSwKKyAgICAgICAgICAgICAg
ICAgICAgICAic2FtcGxlcnMgY2FuJ3QgYmUgZnVuY3Rpb24gcmV0dXJuIHZhbHVlcyIpOworICAg
IGlmIChtU2hhZGVyVmVyc2lvbiA8IDMwMCkKKyAgICB7CisgICAgICAgIC8vIEFycmF5IHJldHVy
biB2YWx1ZXMgYXJlIGZvcmJpZGRlbiwgYnV0IHRoZXJlJ3MgYWxzbyBubyB2YWxpZCBzeW50YXgg
Zm9yIGRlY2xhcmluZyBhcnJheQorICAgICAgICAvLyByZXR1cm4gdmFsdWVzIGluIEVTU0wgMS4w
MC4KKyAgICAgICAgQVNTRVJUKHR5cGUuYXJyYXlTaXplID09IDAgfHwgbURpYWdub3N0aWNzLm51
bUVycm9ycygpID4gMCk7CisKKyAgICAgICAgaWYgKHR5cGUuaXNTdHJ1Y3R1cmVDb250YWluaW5n
QXJyYXlzKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIEVTU0wgMS4wMC4xNyBzZWN0aW9u
IDYuMSBGdW5jdGlvbiBEZWZpbml0aW9ucworICAgICAgICAgICAgZXJyb3IobG9jYXRpb24sICJz
dHJ1Y3R1cmVzIGNvbnRhaW5pbmcgYXJyYXlzIGNhbid0IGJlIGZ1bmN0aW9uIHJldHVybiB2YWx1
ZXMiLAorICAgICAgICAgICAgICAgICAgVFR5cGUodHlwZSkuZ2V0Q29tcGxldGVTdHJpbmcoKS5j
X3N0cigpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEFkZCB0aGUgZnVuY3Rpb24gYXMg
YSBwcm90b3R5cGUgYWZ0ZXIgcGFyc2luZyBpdCAod2UgZG8gbm90IHN1cHBvcnQgcmVjdXJzaW9u
KQorICAgIHJldHVybiBuZXcgVEZ1bmN0aW9uKG5hbWUsIG5ldyBUVHlwZSh0eXBlKSk7Cit9CisK
IFRGdW5jdGlvbiAqVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWN0b3JGdW5jKGNvbnN0IFRQdWJs
aWNUeXBlICZwdWJsaWNUeXBlSW4pCiB7CiAgICAgVFB1YmxpY1R5cGUgcHVibGljVHlwZSA9IHB1
YmxpY1R5cGVJbjsKLSAgICBpZiAocHVibGljVHlwZS5pc1N0cnVjdFNwZWNpZmllcikKKyAgICBp
ZiAocHVibGljVHlwZS5pc1N0cnVjdFNwZWNpZmllcigpKQogICAgIHsKLSAgICAgICAgZXJyb3Io
cHVibGljVHlwZS5saW5lLCAiY29uc3RydWN0b3IgY2FuJ3QgYmUgYSBzdHJ1Y3R1cmUgZGVmaW5p
dGlvbiIsCi0gICAgICAgICAgICAgIGdldEJhc2ljU3RyaW5nKHB1YmxpY1R5cGUudHlwZSkpOwot
ICAgICAgICByZWNvdmVyKCk7CisgICAgICAgIGVycm9yKHB1YmxpY1R5cGUuZ2V0TGluZSgpLCAi
Y29uc3RydWN0b3IgY2FuJ3QgYmUgYSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiIsCisgICAgICAgICAg
ICAgIGdldEJhc2ljU3RyaW5nKHB1YmxpY1R5cGUuZ2V0QmFzaWNUeXBlKCkpKTsKICAgICB9CiAK
ICAgICBUT3BlcmF0b3Igb3AgPSBFT3BOdWxsOwotICAgIGlmIChwdWJsaWNUeXBlLnVzZXJEZWYp
CisgICAgaWYgKHB1YmxpY1R5cGUuZ2V0VXNlckRlZigpKQogICAgIHsKICAgICAgICAgb3AgPSBF
T3BDb25zdHJ1Y3RTdHJ1Y3Q7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIHN3aXRj
aCAocHVibGljVHlwZS50eXBlKQotICAgICAgICB7Ci0gICAgICAgICAgICBjYXNlIEVidEZsb2F0
OgotICAgICAgICAgICAgICAgIGlmIChwdWJsaWNUeXBlLmlzTWF0cml4KCkpCi0gICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHB1YmxpY1R5cGUuZ2V0Q29scygp
KQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChwdWJsaWNUeXBlLmdldFJvd3Mo
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w
ID0gRU9wQ29uc3RydWN0TWF0MjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdE1hdDJ4MzsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvcCA9IEVPcENvbnN0cnVjdE1hdDJ4NDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
MzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHB1YmxpY1R5cGUuZ2V0Um93
cygpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3AgPSBFT3BDb25zdHJ1Y3RNYXQzeDI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RNYXQzOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0M3g0OwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSA0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocHVibGljVHlwZS5nZXRS
b3dzKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvcCA9IEVPcENvbnN0cnVjdE1hdDR4MjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdE1hdDR4
MzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdE1hdDQ7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChwdWJsaWNUeXBlLmdldE5vbWluYWxTaXplKCkp
Ci0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdEZsb2F0OwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSAyOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0VmVj
MjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0
cnVjdFZlYzM7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBF
T3BDb25zdHJ1Y3RWZWM0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJy
ZWFrOwotCi0gICAgICAgICAgICBjYXNlIEVidEludDoKLSAgICAgICAgICAgICAgICBzd2l0Y2gg
KHB1YmxpY1R5cGUuZ2V0Tm9taW5hbFNpemUoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29u
c3RydWN0SW50OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0
SVZlYzI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSAzOgotICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RJVmVj
MzsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBj
YXNlIDQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdElWZWM0Owot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICBjYXNlIEVidFVJbnQ6Ci0gICAgICAgICAg
ICAgICAgc3dpdGNoIChwdWJsaWNUeXBlLmdldE5vbWluYWxTaXplKCkpCi0gICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBvcCA9IEVPcENvbnN0cnVjdFVJbnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgICAgICAgICAgICAgb3Ag
PSBFT3BDb25zdHJ1Y3RVVmVjMjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICBjYXNlIDM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVP
cENvbnN0cnVjdFVWZWMzOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29u
c3RydWN0VVZlYzQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIGNhc2UgRWJ0Qm9v
bDoKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKHB1YmxpY1R5cGUuZ2V0Tm9taW5hbFNpemUoKSkK
LSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMToKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0Qm9vbDsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdEJWZWMyOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG9wID0gRU9wQ29uc3RydWN0QlZlYzM7Ci0gICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgICAgICAgICAg
ICAgb3AgPSBFT3BDb25zdHJ1Y3RCVmVjNDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCisgICAgICAg
IG9wID0gc2g6OlR5cGVUb0NvbnN0cnVjdG9yT3BlcmF0b3IoVFR5cGUocHVibGljVHlwZSkpOwog
ICAgICAgICBpZiAob3AgPT0gRU9wTnVsbCkKICAgICAgICAgewotICAgICAgICAgICAgZXJyb3Io
cHVibGljVHlwZS5saW5lLCAiY2Fubm90IGNvbnN0cnVjdCB0aGlzIHR5cGUiLCBnZXRCYXNpY1N0
cmluZyhwdWJsaWNUeXBlLnR5cGUpKTsKLSAgICAgICAgICAgIHJlY292ZXIoKTsKLSAgICAgICAg
ICAgIHB1YmxpY1R5cGUudHlwZSA9IEVidEZsb2F0OworICAgICAgICAgICAgZXJyb3IocHVibGlj
VHlwZS5nZXRMaW5lKCksICJjYW5ub3QgY29uc3RydWN0IHRoaXMgdHlwZSIsCisgICAgICAgICAg
ICAgICAgICBnZXRCYXNpY1N0cmluZyhwdWJsaWNUeXBlLmdldEJhc2ljVHlwZSgpKSk7CisgICAg
ICAgICAgICBwdWJsaWNUeXBlLnNldEJhc2ljVHlwZShFYnRGbG9hdCk7CiAgICAgICAgICAgICBv
cCAgICAgICAgICAgICAgPSBFT3BDb25zdHJ1Y3RGbG9hdDsKICAgICAgICAgfQogICAgIH0KQEAg
LTIzNDEsNTIgKzIzMjcsMzYgQEAKIC8vIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byB0ZXN0IGZv
ciB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIHBhcmFtZXRlcnMgcGFzc2VkIHRvIHZhcmlvdXMgY29u
c3RydWN0b3IKIC8vIGZ1bmN0aW9ucyBhbmQgYWxzbyBjb252ZXJ0IHRoZW0gdG8gdGhlIHJpZ2h0
IGRhdGF0eXBlIGlmIGl0IGlzIGFsbG93ZWQgYW5kIHJlcXVpcmVkLgogLy8KLS8vIFJldHVybnMg
MCBmb3IgYW4gZXJyb3Igb3IgdGhlIGNvbnN0cnVjdGVkIG5vZGUgKGFnZ3JlZ2F0ZSBvciB0eXBl
ZCkgZm9yIG5vIGVycm9yLgorLy8gUmV0dXJucyBhIG5vZGUgdG8gYWRkIHRvIHRoZSB0cmVlIHJl
Z2FyZGxlc3Mgb2YgaWYgYW4gZXJyb3Igd2FzIGdlbmVyYXRlZCBvciBub3QuCiAvLwogVEludGVy
bVR5cGVkICpUUGFyc2VDb250ZXh0OjphZGRDb25zdHJ1Y3RvcihUSW50ZXJtTm9kZSAqYXJndW1l
bnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUVHlwZSAq
dHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVE9wZXJh
dG9yIG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURnVu
Y3Rpb24gKmZuQ2FsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVFNvdXJjZUxvYyAmbGluZSkKIHsKLSAgICBUSW50ZXJtQWdncmVnYXRlICpjb25z
dHJ1Y3RvciA9IGFyZ3VtZW50cy0+Z2V0QXNBZ2dyZWdhdGUoKTsKLSAgICBBU1NFUlQoY29uc3Ry
dWN0b3IgIT0gbnVsbHB0cik7Ci0KLSAgICBpZiAodHlwZS0+aXNBcnJheSgpKQorICAgIFRUeXBl
IHR5cGUgPSBmbkNhbGwtPmdldFJldHVyblR5cGUoKTsKKyAgICBpZiAodHlwZS5pc1Vuc2l6ZWRB
cnJheSgpKQogICAgIHsKLSAgICAgICAgLy8gR0xTTCBFUyAzLjAwIHNlY3Rpb24gNS40LjQ6IEVh
Y2ggYXJndW1lbnQgbXVzdCBiZSB0aGUgc2FtZSB0eXBlIGFzIHRoZSBlbGVtZW50IHR5cGUgb2YK
LSAgICAgICAgLy8gdGhlIGFycmF5LgotICAgICAgICBUSW50ZXJtU2VxdWVuY2UgKmFyZ3MgPSBj
b25zdHJ1Y3Rvci0+Z2V0U2VxdWVuY2UoKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBhcmdzLT5zaXplKCk7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgVFR5cGUg
JmFyZ1R5cGUgPSAoKmFyZ3MpW2ldLT5nZXRBc1R5cGVkKCktPmdldFR5cGUoKTsKLSAgICAgICAg
ICAgIC8vIEl0IGhhcyBhbHJlYWR5IGJlZW4gY2hlY2tlZCB0aGF0IHRoZSBhcmd1bWVudCBpcyBu
b3QgYW4gYXJyYXkuCi0gICAgICAgICAgICBBU1NFUlQoIWFyZ1R5cGUuaXNBcnJheSgpKTsKLSAg
ICAgICAgICAgIGlmICghYXJnVHlwZS5zYW1lRWxlbWVudFR5cGUoKnR5cGUpKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGVycm9yKGxpbmUsICJBcnJheSBjb25zdHJ1Y3RvciBhcmd1
bWVudCBoYXMgYW4gaW5jb3JyZWN0IHR5cGUiLCAiRXJyb3IiKTsKLSAgICAgICAgICAgICAgICBy
ZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KKyAgICAgICAgdHlwZS5zZXRBcnJheVNpemUoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgaW50PihmbkNhbGwtPmdldFBhcmFtQ291bnQoKSkpOwogICAgIH0KLSAgICBlbHNlIGlmIChv
cCA9PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QpCisgICAgYm9vbCBjb25zdFR5cGUgPSB0cnVlOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZm5DYWxsLT5nZXRQYXJhbUNvdW50KCk7ICsraSkKICAg
ICB7Ci0gICAgICAgIGNvbnN0IFRGaWVsZExpc3QgJmZpZWxkcyA9IHR5cGUtPmdldFN0cnVjdCgp
LT5maWVsZHMoKTsKLSAgICAgICAgVEludGVybVNlcXVlbmNlICphcmdzICAgID0gY29uc3RydWN0
b3ItPmdldFNlcXVlbmNlKCk7CisgICAgICAgIGNvbnN0IFRDb25zdFBhcmFtZXRlciAmcGFyYW0g
PSBmbkNhbGwtPmdldFBhcmFtKGkpOworICAgICAgICBpZiAocGFyYW0udHlwZS0+Z2V0UXVhbGlm
aWVyKCkgIT0gRXZxQ29uc3QpCisgICAgICAgICAgICBjb25zdFR5cGUgPSBmYWxzZTsKKyAgICB9
CisgICAgaWYgKGNvbnN0VHlwZSkKKyAgICAgICAgdHlwZS5zZXRRdWFsaWZpZXIoRXZxQ29uc3Qp
OwogCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgaSsrKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoaSA+PSBhcmdzLT5zaXplKCkgfHwgKCphcmdzKVtp
XS0+Z2V0QXNUeXBlZCgpLT5nZXRUeXBlKCkgIT0gKmZpZWxkc1tpXS0+dHlwZSgpKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGVycm9yKGxpbmUsICJTdHJ1Y3R1cmUgY29uc3RydWN0
b3IgYXJndW1lbnRzIGRvIG5vdCBtYXRjaCBzdHJ1Y3R1cmUgZmllbGRzIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAiRXJyb3IiKTsKLSAgICAgICAgICAgICAgICByZWNvdmVyKCk7Ci0KLSAgICAg
ICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgIGlmICgh
Y2hlY2tDb25zdHJ1Y3RvckFyZ3VtZW50cyhsaW5lLCBhcmd1bWVudHMsICpmbkNhbGwsIG9wLCB0
eXBlKSkKKyAgICB7CisgICAgICAgIFRJbnRlcm1UeXBlZCAqZHVtbXlOb2RlID0gaW50ZXJtZWRp
YXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKG51bGxwdHIsIG9wLCBsaW5lKTsKKyAgICAgICAgZHVt
bXlOb2RlLT5zZXRUeXBlKHR5cGUpOworICAgICAgICByZXR1cm4gZHVtbXlOb2RlOwogICAgIH0K
KyAgICBUSW50ZXJtQWdncmVnYXRlICpjb25zdHJ1Y3RvciA9IGFyZ3VtZW50cy0+Z2V0QXNBZ2dy
ZWdhdGUoKTsKKyAgICBBU1NFUlQoY29uc3RydWN0b3IgIT0gbnVsbHB0cik7CiAKICAgICAvLyBU
dXJuIHRoZSBhcmd1bWVudCBsaXN0IGl0c2VsZiBpbnRvIGEgY29uc3RydWN0b3IKICAgICBjb25z
dHJ1Y3Rvci0+c2V0T3Aob3ApOwpAQCAtMjM5NCw3ICsyMzY0LDcgQEAKICAgICBBU1NFUlQoY29u
c3RydWN0b3ItPmlzQ29uc3RydWN0b3IoKSk7CiAKICAgICAvLyBOZWVkIHRvIHNldCB0eXBlIGJl
Zm9yZSBzZXRQcmVjaXNpb25Gcm9tQ2hpbGRyZW4oKSBiZWNhdXNlIGJvb2wgZG9lc24ndCBoYXZl
IHByZWNpc2lvbi4KLSAgICBjb25zdHJ1Y3Rvci0+c2V0VHlwZSgqdHlwZSk7CisgICAgY29uc3Ry
dWN0b3ItPnNldFR5cGUodHlwZSk7CiAKICAgICAvLyBTdHJ1Y3RzIHNob3VsZCBub3QgYmUgcHJl
Y2lzaW9uIHF1YWxpZmllZCwgdGhlIGluZGl2aWR1YWwgbWVtYmVycyBtYXkgYmUuCiAgICAgLy8g
QnVpbHQtaW4gdHlwZXMgb24gdGhlIG90aGVyIGhhbmQgc2hvdWxkIGJlIHByZWNpc2lvbiBxdWFs
aWZpZWQuCkBAIC0yNDAxLDEwICsyMzcxLDEyIEBACiAgICAgaWYgKG9wICE9IEVPcENvbnN0cnVj
dFN0cnVjdCkKICAgICB7CiAgICAgICAgIGNvbnN0cnVjdG9yLT5zZXRQcmVjaXNpb25Gcm9tQ2hp
bGRyZW4oKTsKLSAgICAgICAgdHlwZS0+c2V0UHJlY2lzaW9uKGNvbnN0cnVjdG9yLT5nZXRQcmVj
aXNpb24oKSk7CisgICAgICAgIHR5cGUuc2V0UHJlY2lzaW9uKGNvbnN0cnVjdG9yLT5nZXRQcmVj
aXNpb24oKSk7CiAgICAgfQogCi0gICAgVEludGVybVR5cGVkICpjb25zdENvbnN0cnVjdG9yID0g
aW50ZXJtZWRpYXRlLmZvbGRBZ2dyZWdhdGVCdWlsdEluKGNvbnN0cnVjdG9yKTsKKyAgICBjb25z
dHJ1Y3Rvci0+c2V0VHlwZSh0eXBlKTsKKworICAgIFRJbnRlcm1UeXBlZCAqY29uc3RDb25zdHJ1
Y3RvciA9IGludGVybWVkaWF0ZS5mb2xkQWdncmVnYXRlQnVpbHRJbihjb25zdHJ1Y3RvciwgJm1E
aWFnbm9zdGljcyk7CiAgICAgaWYgKGNvbnN0Q29uc3RydWN0b3IpCiAgICAgewogICAgICAgICBy
ZXR1cm4gY29uc3RDb25zdHJ1Y3RvcjsKQEAgLTI0MTQsMTY5ICsyMzg2LDM2IEBACiB9CiAKIC8v
Ci0vLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHRyZWUgcmVwcmVzZW50YXRpb24gZm9yIHRo
ZSB2ZWN0b3IgZmllbGQocykgYmVpbmcgYWNjZXNzZWQgZnJvbSBjb250YW50Ci0vLyB2ZWN0b3Iu
Ci0vLyBJZiBvbmx5IG9uZSBjb21wb25lbnQgb2YgdmVjdG9yIGlzIGFjY2Vzc2VkICh2Lnggb3Ig
dlswXSB3aGVyZSB2IGlzIGEgY29udGFudCB2ZWN0b3IpLCB0aGVuIGEKLS8vIGNvbnRhbnQgbm9k
ZSBpcyByZXR1cm5lZCwgZWxzZSBhbiBhZ2dyZWdhdGUgbm9kZSBpcyByZXR1cm5lZCAoZm9yIHYu
eHkpLiBUaGUgaW5wdXQgdG8gdGhpcwotLy8gZnVuY3Rpb24gY291bGQgZWl0aGVyIGJlIHRoZSBz
eW1ib2wgbm9kZSBvciBpdCBjb3VsZCBiZSB0aGUgaW50ZXJtZWRpYXRlIHRyZWUgcmVwcmVzZW50
YXRpb24gb2YKLS8vIGFjY2Vzc2luZyBmaWVsZHMgaW4gYSBjb25zdGFudCBzdHJ1Y3R1cmUgb3Ig
Y29sdW1uIG9mIGEgY29uc3RhbnQgbWF0cml4LgorLy8gSW50ZXJmYWNlL3VuaWZvcm0gYmxvY2tz
CiAvLwotVEludGVybVR5cGVkICpUUGFyc2VDb250ZXh0OjphZGRDb25zdFZlY3Rvck5vZGUoVFZl
Y3RvckZpZWxkcyAmZmllbGRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVEludGVybUNvbnN0YW50VW5pb24gKm5vZGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsaW5lLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBvdXRP
ZlJhbmdlSW5kZXhJc0Vycm9yKQorVEludGVybUFnZ3JlZ2F0ZSAqVFBhcnNlQ29udGV4dDo6YWRk
SW50ZXJmYWNlQmxvY2soCisgICAgY29uc3QgVFR5cGVRdWFsaWZpZXJCdWlsZGVyICZ0eXBlUXVh
bGlmaWVyQnVpbGRlciwKKyAgICBjb25zdCBUU291cmNlTG9jICZuYW1lTGluZSwKKyAgICBjb25z
dCBUU3RyaW5nICZibG9ja05hbWUsCisgICAgVEZpZWxkTGlzdCAqZmllbGRMaXN0LAorICAgIGNv
bnN0IFRTdHJpbmcgKmluc3RhbmNlTmFtZSwKKyAgICBjb25zdCBUU291cmNlTG9jICZpbnN0YW5j
ZUxpbmUsCisgICAgVEludGVybVR5cGVkICphcnJheUluZGV4LAorICAgIGNvbnN0IFRTb3VyY2VM
b2MgJmFycmF5SW5kZXhMaW5lKQogewotICAgIGNvbnN0IFRDb25zdGFudFVuaW9uICp1bmlvbkFy
cmF5ID0gbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKLSAgICBBU1NFUlQodW5pb25BcnJh
eSk7CisgICAgY2hlY2tJc05vdFJlc2VydmVkKG5hbWVMaW5lLCBibG9ja05hbWUpOwogCi0gICAg
VENvbnN0YW50VW5pb24gKmNvbnN0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bZmllbGRzLm51
bV07CisgICAgVFR5cGVRdWFsaWZpZXIgdHlwZVF1YWxpZmllciA9IHR5cGVRdWFsaWZpZXJCdWls
ZGVyLmdldFZhcmlhYmxlVHlwZVF1YWxpZmllcigmbURpYWdub3N0aWNzKTsKIAotICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgZmllbGRzLm51bTsgaSsrKQotICAgIHsKLSAgICAgICAgaWYgKGZpZWxk
cy5vZmZzZXRzW2ldID49IG5vZGUtPmdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07Ci0gICAg
ICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgInZlY3RvciBmaWVsZCBzZWxlY3Rpb24gb3V0IG9m
IHJhbmdlICciIDw8IGZpZWxkcy5vZmZzZXRzW2ldIDw8ICInIjsKLSAgICAgICAgICAgIHN0ZDo6
c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAgICAgIG91
dE9mUmFuZ2VFcnJvcihvdXRPZlJhbmdlSW5kZXhJc0Vycm9yLCBsaW5lLCAiIiwgIlsiLCBleHRy
YUluZm8uY19zdHIoKSk7Ci0gICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1tpXSA9IG5vZGUtPmdl
dFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpIC0gMTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0
QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ZpZWxkcy5vZmZzZXRzW2ldXTsKLSAgICB9Ci0gICAgcmV0
dXJuIGludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKGNvbnN0QXJyYXksIG5vZGUtPmdldFR5
cGUoKSwgbGluZSk7Ci19Ci0KLS8vCi0vLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGNvbHVt
biBiZWluZyBhY2Nlc3NlZCBmcm9tIGEgY29uc3RhbnQgbWF0cml4LiBUaGUgdmFsdWVzIGFyZSBy
ZXRyaWV2ZWQKLS8vIGZyb20gdGhlIHN5bWJvbCB0YWJsZSBhbmQgcGFyc2UtdHJlZSBpcyBidWls
dCBmb3IgYSB2ZWN0b3IgKGVhY2ggY29sdW1uIG9mIGEgbWF0cml4IGlzIGEgdmVjdG9yKS4KLS8v
IFRoZSBpbnB1dCB0byB0aGUgZnVuY3Rpb24gY291bGQgZWl0aGVyIGJlIGEgc3ltYm9sIG5vZGUg
KG1bMF0gd2hlcmUgbSBpcyBhIGNvbnN0YW50IG1hdHJpeCl0aGF0Ci0vLyByZXByZXNlbnRzIGEg
Y29uc3RhbnQgbWF0cml4IG9yIGl0IGNvdWxkIGJlIHRoZSB0cmVlIHJlcHJlc2VudGF0aW9uIG9m
IHRoZSBjb25zdGFudCBtYXRyaXgKLS8vIChzLm0xWzBdIHdoZXJlIHMgaXMgYSBjb25zdGFudCBz
dHJ1Y3R1cmUpCi0vLwotVEludGVybVR5cGVkICpUUGFyc2VDb250ZXh0OjphZGRDb25zdE1hdHJp
eE5vZGUoaW50IGluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVEludGVybUNvbnN0YW50VW5pb24gKm5vZGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsaW5lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBvdXRPZlJh
bmdlSW5kZXhJc0Vycm9yKQotewotICAgIGlmIChpbmRleCA+PSBub2RlLT5nZXRUeXBlKCkuZ2V0
Q29scygpKQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFt
OwotICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgIm1hdHJpeCBmaWVsZCBzZWxlY3Rpb24gb3V0
IG9mIHJhbmdlICciIDw8IGluZGV4IDw8ICInIjsKLSAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJ
bmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwotICAgICAgICBvdXRPZlJhbmdlRXJyb3Iob3V0
T2ZSYW5nZUluZGV4SXNFcnJvciwgbGluZSwgIiIsICJbIiwgZXh0cmFJbmZvLmNfc3RyKCkpOwot
ICAgICAgICBpbmRleCA9IG5vZGUtPmdldFR5cGUoKS5nZXRDb2xzKCkgLSAxOwotICAgIH0KLQot
ICAgIGNvbnN0IFRDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbm9kZS0+Z2V0VW5pb25BcnJh
eVBvaW50ZXIoKTsKLSAgICBpbnQgc2l6ZSA9IG5vZGUtPmdldFR5cGUoKS5nZXRDb2xzKCk7Ci0g
ICAgcmV0dXJuIGludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKCZ1bmlvbkFycmF5W3NpemUg
KiBpbmRleF0sIG5vZGUtPmdldFR5cGUoKSwgbGluZSk7Ci19Ci0KLS8vCi0vLyBUaGlzIGZ1bmN0
aW9uIHJldHVybnMgYW4gZWxlbWVudCBvZiBhbiBhcnJheSBhY2Nlc3NlZCBmcm9tIGEgY29uc3Rh
bnQgYXJyYXkuIFRoZSB2YWx1ZXMgYXJlCi0vLyByZXRyaWV2ZWQgZnJvbSB0aGUgc3ltYm9sIHRh
YmxlIGFuZCBwYXJzZS10cmVlIGlzIGJ1aWx0IGZvciB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudC4g
VGhlIGlucHV0Ci0vLyB0byB0aGUgZnVuY3Rpb24gY291bGQgZWl0aGVyIGJlIGEgc3ltYm9sIG5v
ZGUgKGFbMF0gd2hlcmUgYSBpcyBhIGNvbnN0YW50IGFycmF5KXRoYXQgcmVwcmVzZW50cyBhCi0v
LyBjb25zdGFudCBhcnJheSBvciBpdCBjb3VsZCBiZSB0aGUgdHJlZSByZXByZXNlbnRhdGlvbiBv
ZiB0aGUgY29uc3RhbnQgYXJyYXkgKHMuYTFbMF0gd2hlcmUgcyBpcyBhCi0vLyBjb25zdGFudCBz
dHJ1Y3R1cmUpCi0vLwotVEludGVybVR5cGVkICpUUGFyc2VDb250ZXh0OjphZGRDb25zdEFycmF5
Tm9kZShpbnQgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpub2RlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsaW5lLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIG91dE9mUmFuZ2VJ
bmRleElzRXJyb3IpCi17Ci0gICAgVFR5cGUgYXJyYXlFbGVtZW50VHlwZSA9IG5vZGUtPmdldFR5
cGUoKTsKLSAgICBhcnJheUVsZW1lbnRUeXBlLmNsZWFyQXJyYXluZXNzKCk7Ci0KLSAgICBpZiAo
aW5kZXggPj0gbm9kZS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpKQotICAgIHsKLSAgICAgICAg
c3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAgICBleHRyYUluZm9TdHJl
YW0gPDwgImFycmF5IGZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwgaW5kZXggPDwg
IiciOwotICAgICAgICBzdGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3Ry
KCk7Ci0gICAgICAgIG91dE9mUmFuZ2VFcnJvcihvdXRPZlJhbmdlSW5kZXhJc0Vycm9yLCBsaW5l
LCAiIiwgIlsiLCBleHRyYUluZm8uY19zdHIoKSk7Ci0gICAgICAgIGluZGV4ID0gbm9kZS0+Z2V0
VHlwZSgpLmdldEFycmF5U2l6ZSgpIC0gMTsKLSAgICB9Ci0gICAgc2l6ZV90IGFycmF5RWxlbWVu
dFNpemUgICAgICAgICAgPSBhcnJheUVsZW1lbnRUeXBlLmdldE9iamVjdFNpemUoKTsKLSAgICBj
b25zdCBUQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5vZGUtPmdldFVuaW9uQXJyYXlQb2lu
dGVyKCk7Ci0gICAgcmV0dXJuIGludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKCZ1bmlvbkFy
cmF5W2FycmF5RWxlbWVudFNpemUgKiBpbmRleF0sIG5vZGUtPmdldFR5cGUoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZSk7Ci19Ci0KLS8vCi0vLyBUaGlz
IGZ1bmN0aW9uIHJldHVybnMgdGhlIHZhbHVlIG9mIGEgcGFydGljdWxhciBmaWVsZCBpbnNpZGUg
YSBjb25zdGFudCBzdHJ1Y3R1cmUgZnJvbSB0aGUgc3ltYm9sCi0vLyB0YWJsZS4KLS8vIElmIHRo
ZXJlIGlzIGFuIGVtYmVkZGVkL25lc3RlZCBzdHJ1Y3QsIGl0IGFwcHJvcHJpYXRlbHkgY2FsbHMg
YWRkQ29uc3RTdHJ1Y3ROZXN0ZWQgb3IKLS8vIGFkZENvbnN0U3RydWN0RnJvbUFnZ3IgZnVuY3Rp
b24gYW5kIHJldHVybnMgdGhlIHBhcnNlLXRyZWUgd2l0aCB0aGUgdmFsdWVzIG9mIHRoZSBlbWJl
ZGRlZC9uZXN0ZWQKLS8vIHN0cnVjdC4KLS8vCi1USW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6
OmFkZENvbnN0U3RydWN0KGNvbnN0IFRTdHJpbmcgJmlkZW50aWZpZXIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqbm9kZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAm
bGluZSkKLXsKLSAgICBjb25zdCBURmllbGRMaXN0ICZmaWVsZHMgPSBub2RlLT5nZXRUeXBlKCku
Z2V0U3RydWN0KCktPmZpZWxkcygpOwotICAgIHNpemVfdCBpbnN0YW5jZVNpemUgICAgICA9IDA7
Ci0KLSAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgZmllbGRzLnNpemUoKTsgKytp
bmRleCkKLSAgICB7Ci0gICAgICAgIGlmIChmaWVsZHNbaW5kZXhdLT5uYW1lKCkgPT0gaWRlbnRp
ZmllcikKLSAgICAgICAgewotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
ZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnN0YW5jZVNpemUgKz0gZmllbGRzW2luZGV4
XS0+dHlwZSgpLT5nZXRPYmplY3RTaXplKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBUSW50
ZXJtVHlwZWQgKnR5cGVkTm9kZTsKLSAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqdGVtcENvbnN0
YW50Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3RhbnRVbmlvbigpOwotICAgIGlmICh0ZW1wQ29uc3Rh
bnROb2RlKQotICAgIHsKLSAgICAgICAgY29uc3QgVENvbnN0YW50VW5pb24gKmNvbnN0QXJyYXkg
PSB0ZW1wQ29uc3RhbnROb2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOwotCi0gICAgICAgIC8v
IHR5cGUgd2lsbCBiZSBjaGFuZ2VkIGluIHRoZSBjYWxsaW5nIGZ1bmN0aW9uCi0gICAgICAgIHR5
cGVkTm9kZSA9IGludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKGNvbnN0QXJyYXkgKyBpbnN0
YW5jZVNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlbXBDb25zdGFudE5vZGUtPmdldFR5cGUoKSwgbGluZSk7Ci0gICAgfQotICAgIGVsc2UK
LSAgICB7Ci0gICAgICAgIGVycm9yKGxpbmUsICJDYW5ub3Qgb2Zmc2V0IGludG8gdGhlIHN0cnVj
dHVyZSIsICJFcnJvciIpOwotICAgICAgICByZWNvdmVyKCk7Ci0KLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgfQotCi0gICAgcmV0dXJuIHR5cGVkTm9kZTsKLX0KLQotLy8KLS8vIEludGVyZmFjZS91
bmlmb3JtIGJsb2NrcwotLy8KLVRJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OmFkZElu
dGVyZmFjZUJsb2NrKGNvbnN0IFRQdWJsaWNUeXBlICZ0eXBlUXVhbGlmaWVyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxv
YyAmbmFtZUxpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUU3RyaW5nICZibG9ja05hbWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURmllbGRMaXN0ICpmaWVsZExpc3QsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3Ry
aW5nICppbnN0YW5jZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZpbnN0YW5jZUxpbmUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmFy
cmF5SW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUU291cmNlTG9jICZhcnJheUluZGV4TGluZSkKLXsKLSAgICBpZiAocmVzZXJ2
ZWRFcnJvckNoZWNrKG5hbWVMaW5lLCBibG9ja05hbWUpKQotICAgICAgICByZWNvdmVyKCk7Ci0K
ICAgICBpZiAodHlwZVF1YWxpZmllci5xdWFsaWZpZXIgIT0gRXZxVW5pZm9ybSkKICAgICB7CiAg
ICAgICAgIGVycm9yKHR5cGVRdWFsaWZpZXIubGluZSwgImludmFsaWQgcXVhbGlmaWVyOiIsIGdl
dFF1YWxpZmllclN0cmluZyh0eXBlUXVhbGlmaWVyLnF1YWxpZmllciksCiAgICAgICAgICAgICAg
ICJpbnRlcmZhY2UgYmxvY2tzIG11c3QgYmUgdW5pZm9ybSIpOwotICAgICAgICByZWNvdmVyKCk7
CiAgICAgfQogCi0gICAgVExheW91dFF1YWxpZmllciBibG9ja0xheW91dFF1YWxpZmllciA9IHR5
cGVRdWFsaWZpZXIubGF5b3V0UXVhbGlmaWVyOwotICAgIGlmIChsYXlvdXRMb2NhdGlvbkVycm9y
Q2hlY2sodHlwZVF1YWxpZmllci5saW5lLCBibG9ja0xheW91dFF1YWxpZmllcikpCisgICAgaWYg
KHR5cGVRdWFsaWZpZXIuaW52YXJpYW50KQogICAgIHsKLSAgICAgICAgcmVjb3ZlcigpOworICAg
ICAgICBlcnJvcih0eXBlUXVhbGlmaWVyLmxpbmUsICJpbnZhbGlkIHF1YWxpZmllciBvbiBpbnRl
cmZhY2UgYmxvY2sgbWVtYmVyIiwgImludmFyaWFudCIpOwogICAgIH0KIAorICAgIFRMYXlvdXRR
dWFsaWZpZXIgYmxvY2tMYXlvdXRRdWFsaWZpZXIgPSB0eXBlUXVhbGlmaWVyLmxheW91dFF1YWxp
ZmllcjsKKyAgICBjaGVja0xvY2F0aW9uSXNOb3RTcGVjaWZpZWQodHlwZVF1YWxpZmllci5saW5l
LCBibG9ja0xheW91dFF1YWxpZmllcik7CisKICAgICBpZiAoYmxvY2tMYXlvdXRRdWFsaWZpZXIu
bWF0cml4UGFja2luZyA9PSBFbXBVbnNwZWNpZmllZCkKICAgICB7CiAgICAgICAgIGJsb2NrTGF5
b3V0UXVhbGlmaWVyLm1hdHJpeFBhY2tpbmcgPSBtRGVmYXVsdE1hdHJpeFBhY2tpbmc7CkBAIC0y
NTg3LDExICsyNDI2LDEyIEBACiAgICAgICAgIGJsb2NrTGF5b3V0UXVhbGlmaWVyLmJsb2NrU3Rv
cmFnZSA9IG1EZWZhdWx0QmxvY2tTdG9yYWdlOwogICAgIH0KIAorICAgIGNoZWNrV29ya0dyb3Vw
U2l6ZUlzTm90U3BlY2lmaWVkKG5hbWVMaW5lLCBibG9ja0xheW91dFF1YWxpZmllcik7CisKICAg
ICBUU3ltYm9sICpibG9ja05hbWVTeW1ib2wgPSBuZXcgVEludGVyZmFjZUJsb2NrTmFtZSgmYmxv
Y2tOYW1lKTsKICAgICBpZiAoIXN5bWJvbFRhYmxlLmRlY2xhcmUoYmxvY2tOYW1lU3ltYm9sKSkK
ICAgICB7CiAgICAgICAgIGVycm9yKG5hbWVMaW5lLCAicmVkZWZpbml0aW9uIiwgYmxvY2tOYW1l
LmNfc3RyKCksICJpbnRlcmZhY2UgYmxvY2sgbmFtZSIpOwotICAgICAgICByZWNvdmVyKCk7CiAg
ICAgfQogCiAgICAgLy8gY2hlY2sgZm9yIHNhbXBsZXIgdHlwZXMgYW5kIGFwcGx5IGxheW91dCBx
dWFsaWZpZXJzCkBAIC0yNjAzLDcgKzI0NDMsNiBAQAogICAgICAgICB7CiAgICAgICAgICAgICBl
cnJvcihmaWVsZC0+bGluZSgpLCAidW5zdXBwb3J0ZWQgdHlwZSIsIGZpZWxkVHlwZS0+Z2V0QmFz
aWNTdHJpbmcoKSwKICAgICAgICAgICAgICAgICAgICJzYW1wbGVyIHR5cGVzIGFyZSBub3QgYWxs
b3dlZCBpbiBpbnRlcmZhY2UgYmxvY2tzIik7Ci0gICAgICAgICAgICByZWNvdmVyKCk7CiAgICAg
ICAgIH0KIAogICAgICAgICBjb25zdCBUUXVhbGlmaWVyIHF1YWxpZmllciA9IGZpZWxkVHlwZS0+
Z2V0UXVhbGlmaWVyKCk7CkBAIC0yNjE1LDIyICsyNDU0LDIyIEBACiAgICAgICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgICAgIGVycm9yKGZpZWxkLT5saW5lKCksICJpbnZhbGlkIHF1YWxp
ZmllciBvbiBpbnRlcmZhY2UgYmxvY2sgbWVtYmVyIiwKICAgICAgICAgICAgICAgICAgICAgICBn
ZXRRdWFsaWZpZXJTdHJpbmcocXVhbGlmaWVyKSk7Ci0gICAgICAgICAgICAgICAgcmVjb3Zlcigp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gY2hlY2sg
bGF5b3V0IHF1YWxpZmllcnMKLSAgICAgICAgVExheW91dFF1YWxpZmllciBmaWVsZExheW91dFF1
YWxpZmllciA9IGZpZWxkVHlwZS0+Z2V0TGF5b3V0UXVhbGlmaWVyKCk7Ci0gICAgICAgIGlmIChs
YXlvdXRMb2NhdGlvbkVycm9yQ2hlY2soZmllbGQtPmxpbmUoKSwgZmllbGRMYXlvdXRRdWFsaWZp
ZXIpKQorICAgICAgICBpZiAoZmllbGRUeXBlLT5pc0ludmFyaWFudCgpKQogICAgICAgICB7Ci0g
ICAgICAgICAgICByZWNvdmVyKCk7CisgICAgICAgICAgICBlcnJvcihmaWVsZC0+bGluZSgpLCAi
aW52YWxpZCBxdWFsaWZpZXIgb24gaW50ZXJmYWNlIGJsb2NrIG1lbWJlciIsICJpbnZhcmlhbnQi
KTsKICAgICAgICAgfQogCisgICAgICAgIC8vIGNoZWNrIGxheW91dCBxdWFsaWZpZXJzCisgICAg
ICAgIFRMYXlvdXRRdWFsaWZpZXIgZmllbGRMYXlvdXRRdWFsaWZpZXIgPSBmaWVsZFR5cGUtPmdl
dExheW91dFF1YWxpZmllcigpOworICAgICAgICBjaGVja0xvY2F0aW9uSXNOb3RTcGVjaWZpZWQo
ZmllbGQtPmxpbmUoKSwgZmllbGRMYXlvdXRRdWFsaWZpZXIpOworCiAgICAgICAgIGlmIChmaWVs
ZExheW91dFF1YWxpZmllci5ibG9ja1N0b3JhZ2UgIT0gRWJzVW5zcGVjaWZpZWQpCiAgICAgICAg
IHsKICAgICAgICAgICAgIGVycm9yKGZpZWxkLT5saW5lKCksICJpbnZhbGlkIGxheW91dCBxdWFs
aWZpZXI6IiwKICAgICAgICAgICAgICAgICAgIGdldEJsb2NrU3RvcmFnZVN0cmluZyhmaWVsZExh
eW91dFF1YWxpZmllci5ibG9ja1N0b3JhZ2UpLCAiY2Fubm90IGJlIHVzZWQgaGVyZSIpOwotICAg
ICAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGZpZWxkTGF5b3V0
UXVhbGlmaWVyLm1hdHJpeFBhY2tpbmcgPT0gRW1wVW5zcGVjaWZpZWQpCkBAIC0yNjQ4LDExICsy
NDg3LDEwIEBACiAgICAgfQogCiAgICAgLy8gYWRkIGFycmF5IGluZGV4Ci0gICAgaW50IGFycmF5
U2l6ZSA9IDA7Ci0gICAgaWYgKGFycmF5SW5kZXggIT0gTlVMTCkKKyAgICB1bnNpZ25lZCBpbnQg
YXJyYXlTaXplID0gMDsKKyAgICBpZiAoYXJyYXlJbmRleCAhPSBudWxscHRyKQogICAgIHsKLSAg
ICAgICAgaWYgKGFycmF5U2l6ZUVycm9yQ2hlY2soYXJyYXlJbmRleExpbmUsIGFycmF5SW5kZXgs
IGFycmF5U2l6ZSkpCi0gICAgICAgICAgICByZWNvdmVyKCk7CisgICAgICAgIGFycmF5U2l6ZSA9
IGNoZWNrSXNWYWxpZEFycmF5U2l6ZShhcnJheUluZGV4TGluZSwgYXJyYXlJbmRleCk7CiAgICAg
fQogCiAgICAgVEludGVyZmFjZUJsb2NrICppbnRlcmZhY2VCbG9jayA9CkBAIC0yNjgxLDE0ICsy
NTE5LDEyIEBACiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgZXJyb3IoZmllbGQtPmxp
bmUoKSwgInJlZGVmaW5pdGlvbiIsIGZpZWxkLT5uYW1lKCkuY19zdHIoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAiaW50ZXJmYWNlIGJsb2NrIG1lbWJlciBuYW1lIik7Ci0gICAgICAgICAgICAg
ICAgcmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UK
ICAgICB7Ci0gICAgICAgIGlmIChyZXNlcnZlZEVycm9yQ2hlY2soaW5zdGFuY2VMaW5lLCAqaW5z
dGFuY2VOYW1lKSkKLSAgICAgICAgICAgIHJlY292ZXIoKTsKKyAgICAgICAgY2hlY2tJc05vdFJl
c2VydmVkKGluc3RhbmNlTGluZSwgKmluc3RhbmNlTmFtZSk7CiAKICAgICAgICAgLy8gYWRkIGEg
c3ltYm9sIGZvciB0aGlzIGludGVyZmFjZSBibG9jawogICAgICAgICBUVmFyaWFibGUgKmluc3Rh
bmNlVHlwZURlZiA9IG5ldyBUVmFyaWFibGUoaW5zdGFuY2VOYW1lLCBpbnRlcmZhY2VCbG9ja1R5
cGUsIGZhbHNlKTsKQEAgLTI2OTgsNyArMjUzNCw2IEBACiAgICAgICAgIHsKICAgICAgICAgICAg
IGVycm9yKGluc3RhbmNlTGluZSwgInJlZGVmaW5pdGlvbiIsIGluc3RhbmNlTmFtZS0+Y19zdHIo
KSwKICAgICAgICAgICAgICAgICAgICJpbnRlcmZhY2UgYmxvY2sgaW5zdGFuY2UgbmFtZSIpOwot
ICAgICAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICB9CiAKICAgICAgICAgc3ltYm9sSWQgICA9
IGluc3RhbmNlVHlwZURlZi0+Z2V0VW5pcXVlSWQoKTsKQEAgLTI3MDUsNyArMjU0MCw3IEBACiAg
ICAgICAgIHN5bWJvbE5hbWUgPSBpbnN0YW5jZVR5cGVEZWYtPmdldE5hbWUoKTsKICAgICB9CiAK
LSAgICBUSW50ZXJtQWdncmVnYXRlICphZ2dyZWdhdGUgPSBpbnRlcm1lZGlhdGUubWFrZUFnZ3Jl
Z2F0ZSgKKyAgICBUSW50ZXJtQWdncmVnYXRlICphZ2dyZWdhdGUgPSBUSW50ZXJtZWRpYXRlOjpN
YWtlQWdncmVnYXRlKAogICAgICAgICBpbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHN5bWJvbElkLCBz
eW1ib2xOYW1lLCBpbnRlcmZhY2VCbG9ja1R5cGUsIHR5cGVRdWFsaWZpZXIubGluZSksCiAgICAg
ICAgIG5hbWVMaW5lKTsKICAgICBhZ2dyZWdhdGUtPnNldE9wKEVPcERlY2xhcmF0aW9uKTsKQEAg
LTI3MTQsNyArMjU0OSw3IEBACiAgICAgcmV0dXJuIGFnZ3JlZ2F0ZTsKIH0KIAotYm9vbCBUUGFy
c2VDb250ZXh0OjplbnRlclN0cnVjdERlY2xhcmF0aW9uKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUs
IGNvbnN0IFRTdHJpbmcgJmlkZW50aWZpZXIpCit2b2lkIFRQYXJzZUNvbnRleHQ6OmVudGVyU3Ry
dWN0RGVjbGFyYXRpb24oY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3QgVFN0cmluZyAmaWRl
bnRpZmllcikKIHsKICAgICArK21TdHJ1Y3ROZXN0aW5nTGV2ZWw7CiAKQEAgLTI3MjQsMTAgKzI1
NTksNyBAQAogICAgIGlmIChtU3RydWN0TmVzdGluZ0xldmVsID4gMSkKICAgICB7CiAgICAgICAg
IGVycm9yKGxpbmUsICIiLCAiRW1iZWRkZWQgc3RydWN0IGRlZmluaXRpb25zIGFyZSBub3QgYWxs
b3dlZCIpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7
CiB9CiAKIHZvaWQgVFBhcnNlQ29udGV4dDo6ZXhpdFN0cnVjdERlY2xhcmF0aW9uKCkKQEAgLTI3
NDEsMTYgKzI1NzMsMTYgQEAKIAogfSAgLy8gbmFtZXNwYWNlCiAKLWJvb2wgVFBhcnNlQ29udGV4
dDo6c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3Qg
VEZpZWxkICZmaWVsZCkKK3ZvaWQgVFBhcnNlQ29udGV4dDo6Y2hlY2tJc0JlbG93U3RydWN0TmVz
dGluZ0xpbWl0KGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0IFRGaWVsZCAmZmllbGQpCiB7
CiAgICAgaWYgKCFJc1dlYkdMQmFzZWRTcGVjKG1TaGFkZXJTcGVjKSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChmaWVsZC50
eXBlKCktPmdldEJhc2ljVHlwZSgpICE9IEVidFN0cnVjdCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIFdlJ3JlIGFscmVhZHkg
aW5zaWRlIGEgc3RydWN0dXJlIGRlZmluaXRpb24gYXQgdGhpcyBwb2ludCwgc28gYWRkCkBAIC0y
NzYyLDEwICsyNTk0LDggQEAKICAgICAgICAgICAgICAgICAgICAgIDw8ICIgZXhjZWVkcyBtYXhp
bXVtIGFsbG93ZWQgbmVzdGluZyBsZXZlbCBvZiAiIDw8IGtXZWJHTE1heFN0cnVjdE5lc3Rpbmc7
CiAgICAgICAgIHN0ZDo6c3RyaW5nIHJlYXNvbiA9IHJlYXNvblN0cmVhbS5zdHIoKTsKICAgICAg
ICAgZXJyb3IobGluZSwgcmVhc29uLmNfc3RyKCksIGZpZWxkLm5hbWUoKS5jX3N0cigpLCAiIik7
Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAgcmV0
dXJuIGZhbHNlOwogfQogCiAvLwpAQCAtMjc3NSw4ICsyNjA1LDYgQEAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0
aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElu
dGVybVR5cGVkICppbmRleEV4cHJlc3Npb24pCiB7Ci0gICAgVEludGVybVR5cGVkICppbmRleGVk
RXhwcmVzc2lvbiA9IE5VTEw7Ci0KICAgICBpZiAoIWJhc2VFeHByZXNzaW9uLT5pc0FycmF5KCkg
JiYgIWJhc2VFeHByZXNzaW9uLT5pc01hdHJpeCgpICYmICFiYXNlRXhwcmVzc2lvbi0+aXNWZWN0
b3IoKSkKICAgICB7CiAgICAgICAgIGlmIChiYXNlRXhwcmVzc2lvbi0+Z2V0QXNTeW1ib2xOb2Rl
KCkpCkBAIC0yNzg4LDcgKzI2MTYsMTEgQEAKICAgICAgICAgewogICAgICAgICAgICAgZXJyb3Io
bG9jYXRpb24sICIgbGVmdCBvZiAnWycgaXMgbm90IG9mIHR5cGUgYXJyYXksIG1hdHJpeCwgb3Ig
dmVjdG9yICIsICJleHByZXNzaW9uIik7CiAgICAgICAgIH0KLSAgICAgICAgcmVjb3ZlcigpOwor
CisgICAgICAgIFRDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9u
WzFdOworICAgICAgICB1bmlvbkFycmF5LT5zZXRGQ29uc3QoMC4wZik7CisgICAgICAgIHJldHVy
biBpbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9h
dCwgRWJwSGlnaCwgRXZxQ29uc3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbG9jYXRpb24pOwogICAgIH0KIAogICAgIFRJbnRlcm1Db25zdGFudFVuaW9u
ICppbmRleENvbnN0YW50VW5pb24gPSBpbmRleEV4cHJlc3Npb24tPmdldEFzQ29uc3RhbnRVbmlv
bigpOwpAQCAtMjgwNCwxNzEgKzI2MzYsMTE3IEBACiAgICAgICAgICAgICBlcnJvcigKICAgICAg
ICAgICAgICAgICBsb2NhdGlvbiwgIiIsICJbIiwKICAgICAgICAgICAgICAgICAiYXJyYXkgaW5k
ZXhlcyBmb3IgaW50ZXJmYWNlIGJsb2NrcyBhcnJheXMgbXVzdCBiZSBjb25zdGFudCBpbnRlZ3Jh
bCBleHByZXNzaW9ucyIpOwotICAgICAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICB9CiAgICAg
ICAgIGVsc2UgaWYgKGJhc2VFeHByZXNzaW9uLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFGcmFnbWVu
dE91dCkKICAgICAgICAgewogICAgICAgICAgICAgZXJyb3IobG9jYXRpb24sICIiLCAiWyIsCiAg
ICAgICAgICAgICAgICAgICAiYXJyYXkgaW5kZXhlcyBmb3IgZnJhZ21lbnQgb3V0cHV0cyBtdXN0
IGJlIGNvbnN0YW50IGludGVncmFsIGV4cHJlc3Npb25zIik7Ci0gICAgICAgICAgICByZWNvdmVy
KCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAobVNoYWRlclNwZWMgPT0gU0hfV0VCR0wy
X1NQRUMgJiYgYmFzZUV4cHJlc3Npb24tPmdldFF1YWxpZmllcigpID09IEV2cUZyYWdEYXRhKQog
ICAgICAgICB7CiAgICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwgIiIsICJbIiwgImFycmF5IGlu
ZGV4IGZvciBnbF9GcmFnRGF0YSBtdXN0IGJlIGNvbnN0YW50IHplcm8iKTsKLSAgICAgICAgICAg
IHJlY292ZXIoKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChpbmRleENvbnN0YW50VW5p
b24pCiAgICAgewotICAgICAgICAvLyBJZiB0aGUgaW5kZXggaXMgbm90IHF1YWxpZmllZCBhcyBj
b25zdGFudCwgdGhlIGJlaGF2aW9yIGluIHRoZSBzcGVjIGlzIHVuZGVmaW5lZC4gVGhpcwotICAg
ICAgICAvLyBhcHBsaWVzIGV2ZW4gaWYgQU5HTEUgaGFzIGJlZW4gYWJsZSB0byBjb25zdGFudCBm
b2xkIGl0IChBTkdMRSBtYXkgY29uc3RhbnQgZm9sZAotICAgICAgICAvLyBleHByZXNzaW9ucyB0
aGF0IGFyZSBub3QgY29uc3RhbnQgZXhwcmVzc2lvbnMpLiBUaGUgbW9zdCBjb21wYXRpYmxlIHdh
eSB0byBoYW5kbGUgdGhpcwotICAgICAgICAvLyBjYXNlIGlzIHRvIHJlcG9ydCBhIHdhcm5pbmcg
aW5zdGVhZCBvZiBhbiBlcnJvciBhbmQgZm9yY2UgdGhlIGluZGV4IHRvIGJlIGluIHRoZQotICAg
ICAgICAvLyBjb3JyZWN0IHJhbmdlLgorICAgICAgICAvLyBJZiBhbiBvdXQtb2YtcmFuZ2UgaW5k
ZXggaXMgbm90IHF1YWxpZmllZCBhcyBjb25zdGFudCwgdGhlIGJlaGF2aW9yIGluIHRoZSBzcGVj
IGlzCisgICAgICAgIC8vIHVuZGVmaW5lZC4gVGhpcyBhcHBsaWVzIGV2ZW4gaWYgQU5HTEUgaGFz
IGJlZW4gYWJsZSB0byBjb25zdGFudCBmb2xkIGl0IChBTkdMRSBtYXkKKyAgICAgICAgLy8gY29u
c3RhbnQgZm9sZCBleHByZXNzaW9ucyB0aGF0IGFyZSBub3QgY29uc3RhbnQgZXhwcmVzc2lvbnMp
LiBUaGUgbW9zdCBjb21wYXRpYmxlIHdheSB0bworICAgICAgICAvLyBoYW5kbGUgdGhpcyBjYXNl
IGlzIHRvIHJlcG9ydCBhIHdhcm5pbmcgaW5zdGVhZCBvZiBhbiBlcnJvciBhbmQgZm9yY2UgdGhl
IGluZGV4IHRvIGJlIGluCisgICAgICAgIC8vIHRoZSBjb3JyZWN0IHJhbmdlLgogICAgICAgICBi
b29sIG91dE9mUmFuZ2VJbmRleElzRXJyb3IgPSBpbmRleEV4cHJlc3Npb24tPmdldFF1YWxpZmll
cigpID09IEV2cUNvbnN0OwogICAgICAgICBpbnQgaW5kZXggPSBpbmRleENvbnN0YW50VW5pb24t
PmdldElDb25zdCgwKTsKLSAgICAgICAgaWYgKGluZGV4IDwgMCkKKworICAgICAgICBpbnQgc2Fm
ZUluZGV4ID0gLTE7CisKKyAgICAgICAgaWYgKGJhc2VFeHByZXNzaW9uLT5pc0FycmF5KCkpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGluZm9TdHJlYW07Ci0gICAg
ICAgICAgICBpbmZvU3RyZWFtIDw8IGluZGV4OwotICAgICAgICAgICAgc3RkOjpzdHJpbmcgaW5m
byA9IGluZm9TdHJlYW0uc3RyKCk7Ci0gICAgICAgICAgICBvdXRPZlJhbmdlRXJyb3Iob3V0T2ZS
YW5nZUluZGV4SXNFcnJvciwgbG9jYXRpb24sICJuZWdhdGl2ZSBpbmRleCIsIGluZm8uY19zdHIo
KSk7Ci0gICAgICAgICAgICBpbmRleCA9IDA7Ci0gICAgICAgIH0KLSAgICAgICAgVEludGVybUNv
bnN0YW50VW5pb24gKmJhc2VDb25zdGFudFVuaW9uID0gYmFzZUV4cHJlc3Npb24tPmdldEFzQ29u
c3RhbnRVbmlvbigpOwotICAgICAgICBpZiAoYmFzZUNvbnN0YW50VW5pb24pCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGlmIChiYXNlRXhwcmVzc2lvbi0+aXNBcnJheSgpKQorICAgICAgICAgICAg
aWYgKGJhc2VFeHByZXNzaW9uLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFGcmFnRGF0YSAmJiBpbmRl
eCA+IDApCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gY29uc3RhbnQgZm9sZGlu
ZyBmb3IgYXJyYXkgaW5kZXhpbmcKLSAgICAgICAgICAgICAgICBpbmRleGVkRXhwcmVzc2lvbiA9
Ci0gICAgICAgICAgICAgICAgICAgIGFkZENvbnN0QXJyYXlOb2RlKGluZGV4LCBiYXNlQ29uc3Rh
bnRVbmlvbiwgbG9jYXRpb24sIG91dE9mUmFuZ2VJbmRleElzRXJyb3IpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZWxzZSBpZiAoYmFzZUV4cHJlc3Npb24tPmlzVmVjdG9yKCkpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgdmVjdG9y
IGluZGV4aW5nCi0gICAgICAgICAgICAgICAgVFZlY3RvckZpZWxkcyBmaWVsZHM7Ci0gICAgICAg
ICAgICAgICAgZmllbGRzLm51bSA9IDE7Ci0gICAgICAgICAgICAgICAgZmllbGRzLm9mZnNldHNb
MF0gPQotICAgICAgICAgICAgICAgICAgICBpbmRleDsgIC8vIG5lZWQgdG8gZG8gaXQgdGhpcyB3
YXkgYmVjYXVzZSB2Lnh5IHNlbmRzIGZpZWxkcyBpbnRlZ2VyIGFycmF5Ci0gICAgICAgICAgICAg
ICAgaW5kZXhlZEV4cHJlc3Npb24gPQotICAgICAgICAgICAgICAgICAgICBhZGRDb25zdFZlY3Rv
ck5vZGUoZmllbGRzLCBiYXNlQ29uc3RhbnRVbmlvbiwgbG9jYXRpb24sIG91dE9mUmFuZ2VJbmRl
eElzRXJyb3IpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoYmFzZUV4cHJl
c3Npb24tPmlzTWF0cml4KCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gY29u
c3RhbnQgZm9sZGluZyBmb3IgbWF0cml4IGluZGV4aW5nCi0gICAgICAgICAgICAgICAgaW5kZXhl
ZEV4cHJlc3Npb24gPQotICAgICAgICAgICAgICAgICAgICBhZGRDb25zdE1hdHJpeE5vZGUoaW5k
ZXgsIGJhc2VDb25zdGFudFVuaW9uLCBsb2NhdGlvbiwgb3V0T2ZSYW5nZUluZGV4SXNFcnJvcik7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpbnQgc2FmZUluZGV4ID0gLTE7Ci0KLSAgICAgICAgICAgIGlmIChiYXNlRXhwcmVz
c2lvbi0+aXNBcnJheSgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChiYXNl
RXhwcmVzc2lvbi0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxRnJhZ0RhdGEgJiYgaW5kZXggPiAwKQor
ICAgICAgICAgICAgICAgIGlmIChtU2hhZGVyU3BlYyA9PSBTSF9XRUJHTDJfU1BFQykKICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtU2hhZGVyU3BlYyA9PSBTSF9X
RUJHTDJfU1BFQykKKyAgICAgICAgICAgICAgICAgICAgLy8gRXJyb3IgaGFzIGJlZW4gYWxyZWFk
eSBnZW5lcmF0ZWQgaWYgaW5kZXggaXMgbm90IGNvbnN0LgorICAgICAgICAgICAgICAgICAgICBp
ZiAoaW5kZXhFeHByZXNzaW9uLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkKICAgICAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXJyb3IgaGFzIGJlZW4g
YWxyZWFkeSBnZW5lcmF0ZWQgaWYgaW5kZXggaXMgbm90IGNvbnN0LgotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGluZGV4RXhwcmVzc2lvbi0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3Qp
Ci0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXJyb3IobG9jYXRpb24sICIiLCAiWyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImFycmF5IGluZGV4IGZvciBnbF9GcmFnRGF0YSBtdXN0IGJlIGNvbnN0YW50IHplcm8iKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBzYWZlSW5kZXggPSAwOworICAgICAg
ICAgICAgICAgICAgICAgICAgZXJyb3IobG9jYXRpb24sICIiLCAiWyIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiYXJyYXkgaW5kZXggZm9yIGdsX0ZyYWdEYXRhIG11c3QgYmUgY29u
c3RhbnQgemVybyIpOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IGVsc2UgaWYgKCFpc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKSkKLSAg
ICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgb3V0T2ZSYW5nZUVy
cm9yKG91dE9mUmFuZ2VJbmRleElzRXJyb3IsIGxvY2F0aW9uLCAiIiwgIlsiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcnJheSBpbmRleCBmb3IgZ2xfRnJhZ0Rh
dGEgbXVzdCBiZSB6ZXJvIHdoZW4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJHTF9FWFRfZHJhd19idWZmZXJzIGlzIGRpc2FibGVkIik7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBzYWZlSW5kZXggPSAwOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIHNhZmVJbmRleCA9IDA7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIC8vIE9ubHkgZG8gZ2VuZXJpYyBvdXQtb2YtcmFuZ2UgY2hlY2sgaWYgc2ltaWxhciBl
cnJvciBoYXNuJ3QgYWxyZWFkeSBiZWVuIHJlcG9ydGVkLgotICAgICAgICAgICAgICAgIGlmIChz
YWZlSW5kZXggPCAwICYmIGluZGV4ID49IGJhc2VFeHByZXNzaW9uLT5nZXRUeXBlKCkuZ2V0QXJy
YXlTaXplKCkpCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWlzRXh0ZW5zaW9uRW5hYmxlZCgi
R0xfRVhUX2RyYXdfYnVmZmVycyIpKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAgICAgICAgICAg
ICAgICBleHRyYUluZm9TdHJlYW0gPDwgImFycmF5IGluZGV4IG91dCBvZiByYW5nZSAnIiA8PCBp
bmRleCA8PCAiJyI7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9
IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAgICAgICAgICAgICAgb3V0T2ZSYW5nZUVy
cm9yKG91dE9mUmFuZ2VJbmRleElzRXJyb3IsIGxvY2F0aW9uLCAiIiwgIlsiLCBleHRyYUluZm8u
Y19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHNhZmVJbmRleCA9IGJhc2VFeHByZXNzaW9u
LT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkgLSAxOworICAgICAgICAgICAgICAgICAgICBvdXRP
ZlJhbmdlRXJyb3Iob3V0T2ZSYW5nZUluZGV4SXNFcnJvciwgbG9jYXRpb24sICIiLCAiWyIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJyYXkgaW5kZXggZm9yIGdsX0Zy
YWdEYXRhIG11c3QgYmUgemVybyB3aGVuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJHTF9FWFRfZHJhd19idWZmZXJzIGlzIGRpc2FibGVkIik7CisgICAgICAgICAgICAg
ICAgICAgIHNhZmVJbmRleCA9IDA7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgZWxzZSBpZiAoKGJhc2VFeHByZXNzaW9uLT5pc1ZlY3RvcigpIHx8IGJhc2VF
eHByZXNzaW9uLT5pc01hdHJpeCgpKSAmJgotICAgICAgICAgICAgICAgICAgICAgYmFzZUV4cHJl
c3Npb24tPmdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpIDw9IGluZGV4KQorICAgICAgICAgICAg
Ly8gT25seSBkbyBnZW5lcmljIG91dC1vZi1yYW5nZSBjaGVjayBpZiBzaW1pbGFyIGVycm9yIGhh
c24ndCBhbHJlYWR5IGJlZW4gcmVwb3J0ZWQuCisgICAgICAgICAgICBpZiAoc2FmZUluZGV4IDwg
MCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRy
YUluZm9TdHJlYW07Ci0gICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJmaWVsZCBz
ZWxlY3Rpb24gb3V0IG9mIHJhbmdlICciIDw8IGluZGV4IDw8ICInIjsKLSAgICAgICAgICAgICAg
ICBzdGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7Ci0gICAgICAg
ICAgICAgICAgb3V0T2ZSYW5nZUVycm9yKG91dE9mUmFuZ2VJbmRleElzRXJyb3IsIGxvY2F0aW9u
LCAiIiwgIlsiLCBleHRyYUluZm8uY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgc2FmZUluZGV4
ID0gYmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpIC0gMTsKKyAgICAg
ICAgICAgICAgICBzYWZlSW5kZXggPSBjaGVja0luZGV4T3V0T2ZSYW5nZShvdXRPZlJhbmdlSW5k
ZXhJc0Vycm9yLCBsb2NhdGlvbiwgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYmFzZUV4cHJlc3Npb24tPmdldEFycmF5U2l6ZSgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcnJheSBpbmRl
eCBvdXQgb2YgcmFuZ2UiLCAiW10iKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBlbHNlIGlmIChiYXNlRXhwcmVzc2lvbi0+aXNNYXRyaXgoKSkKKyAgICAgICAgeworICAgICAg
ICAgICAgc2FmZUluZGV4ID0gY2hlY2tJbmRleE91dE9mUmFuZ2Uob3V0T2ZSYW5nZUluZGV4SXNF
cnJvciwgbG9jYXRpb24sIGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKS5nZXRDb2xzKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWF0cml4IGZpZWxkIHNlbGVj
dGlvbiBvdXQgb2YgcmFuZ2UiLCAiW10iKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChi
YXNlRXhwcmVzc2lvbi0+aXNWZWN0b3IoKSkKKyAgICAgICAgeworICAgICAgICAgICAgc2FmZUlu
ZGV4ID0gY2hlY2tJbmRleE91dE9mUmFuZ2Uob3V0T2ZSYW5nZUluZGV4SXNFcnJvciwgbG9jYXRp
b24sIGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZlY3RvciBmaWVsZCBzZWxlY3Rpb24g
b3V0IG9mIHJhbmdlIiwgIltdIik7CisgICAgICAgIH0KIAotICAgICAgICAgICAgLy8gRGF0YSBv
ZiBjb25zdGFudCB1bmlvbnMgY2FuJ3QgYmUgY2hhbmdlZCwgYmVjYXVzZSBpdCBtYXkgYmUgc2hh
cmVkIHdpdGggb3RoZXIKLSAgICAgICAgICAgIC8vIGNvbnN0YW50IHVuaW9ucyBvciBldmVuIGJ1
aWx0aW5zLCBsaWtlIGdsX01heERyYXdCdWZmZXJzLiBJbnN0ZWFkIHVzZSBhIG5ldwotICAgICAg
ICAgICAgLy8gc2FuaXRpemVkIG9iamVjdC4KLSAgICAgICAgICAgIGlmIChzYWZlSW5kZXggIT0g
LTEpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgVENvbnN0YW50VW5pb24gKnNhZmVD
b25zdGFudFVuaW9uID0gbmV3IFRDb25zdGFudFVuaW9uKCk7Ci0gICAgICAgICAgICAgICAgc2Fm
ZUNvbnN0YW50VW5pb24tPnNldElDb25zdChzYWZlSW5kZXgpOwotICAgICAgICAgICAgICAgIGlu
ZGV4Q29uc3RhbnRVbmlvbi0+cmVwbGFjZUNvbnN0YW50VW5pb24oc2FmZUNvbnN0YW50VW5pb24p
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpbmRleGVkRXhwcmVzc2lvbiA9Ci0gICAg
ICAgICAgICAgICAgaW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCBiYXNlRXhw
cmVzc2lvbiwgaW5kZXhFeHByZXNzaW9uLCBsb2NhdGlvbik7CisgICAgICAgIEFTU0VSVChzYWZl
SW5kZXggPj0gMCk7CisgICAgICAgIC8vIERhdGEgb2YgY29uc3RhbnQgdW5pb25zIGNhbid0IGJl
IGNoYW5nZWQsIGJlY2F1c2UgaXQgbWF5IGJlIHNoYXJlZCB3aXRoIG90aGVyCisgICAgICAgIC8v
IGNvbnN0YW50IHVuaW9ucyBvciBldmVuIGJ1aWx0aW5zLCBsaWtlIGdsX01heERyYXdCdWZmZXJz
LiBJbnN0ZWFkIHVzZSBhIG5ldworICAgICAgICAvLyBzYW5pdGl6ZWQgb2JqZWN0LgorICAgICAg
ICBpZiAoc2FmZUluZGV4ICE9IGluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBUQ29uc3Rh
bnRVbmlvbiAqc2FmZUNvbnN0YW50VW5pb24gPSBuZXcgVENvbnN0YW50VW5pb24oKTsKKyAgICAg
ICAgICAgIHNhZmVDb25zdGFudFVuaW9uLT5zZXRJQ29uc3Qoc2FmZUluZGV4KTsKKyAgICAgICAg
ICAgIGluZGV4Q29uc3RhbnRVbmlvbi0+cmVwbGFjZUNvbnN0YW50VW5pb24oc2FmZUNvbnN0YW50
VW5pb24pOwogICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIGluZGV4
ZWRFeHByZXNzaW9uID0KLSAgICAgICAgICAgIGludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRl
eEluZGlyZWN0LCBiYXNlRXhwcmVzc2lvbiwgaW5kZXhFeHByZXNzaW9uLCBsb2NhdGlvbik7Ci0g
ICAgfQogCi0gICAgaWYgKGluZGV4ZWRFeHByZXNzaW9uID09IDApCi0gICAgewotICAgICAgICBU
Q29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblsxXTsKLSAgICAg
ICAgdW5pb25BcnJheS0+c2V0RkNvbnN0KDAuMGYpOwotICAgICAgICBpbmRleGVkRXhwcmVzc2lv
biA9Ci0gICAgICAgICAgICBpbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5
LCBUVHlwZShFYnRGbG9hdCwgRWJwSGlnaCwgRXZxQ29uc3QpLCBsb2NhdGlvbik7CisgICAgICAg
IHJldHVybiBpbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsIGJhc2VFeHByZXNz
aW9uLCBpbmRleEV4cHJlc3Npb24sIGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZtRGlhZ25vc3RpY3MpOwogICAgIH0KLSAgICBlbHNlIGlmIChiYXNlRXhw
cmVzc2lvbi0+aXNBcnJheSgpKQotICAgIHsKLSAgICAgICAgVFR5cGUgaW5kZXhlZFR5cGUgPSBi
YXNlRXhwcmVzc2lvbi0+Z2V0VHlwZSgpOwotICAgICAgICBpbmRleGVkVHlwZS5jbGVhckFycmF5
bmVzcygpOwotICAgICAgICBpbmRleGVkRXhwcmVzc2lvbi0+c2V0VHlwZShpbmRleGVkVHlwZSk7
Ci0gICAgfQotICAgIGVsc2UgaWYgKGJhc2VFeHByZXNzaW9uLT5pc01hdHJpeCgpKQotICAgIHsK
LSAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24tPnNldFR5cGUoVFR5cGUoYmFzZUV4cHJlc3Npb24t
PmdldEJhc2ljVHlwZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBiYXNlRXhwcmVzc2lvbi0+Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hh
cj4oYmFzZUV4cHJlc3Npb24tPmdldFJvd3MoKSkpKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoYmFz
ZUV4cHJlc3Npb24tPmlzVmVjdG9yKCkpCi0gICAgewotICAgICAgICBpbmRleGVkRXhwcmVzc2lv
bi0+c2V0VHlwZSgKLSAgICAgICAgICAgIFRUeXBlKGJhc2VFeHByZXNzaW9uLT5nZXRCYXNpY1R5
cGUoKSwgYmFzZUV4cHJlc3Npb24tPmdldFByZWNpc2lvbigpLCBFdnFUZW1wb3JhcnkpKTsKLSAg
ICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24tPnNldFR5cGUo
YmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKSk7CisgICAgICAgIHJldHVybiBpbnRlcm1lZGlhdGUu
YWRkSW5kZXgoRU9wSW5kZXhJbmRpcmVjdCwgYmFzZUV4cHJlc3Npb24sIGluZGV4RXhwcmVzc2lv
biwgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1EaWFn
bm9zdGljcyk7CiAgICAgfQorfQogCi0gICAgaWYgKGJhc2VFeHByZXNzaW9uLT5nZXRUeXBlKCku
Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QgJiYKLSAgICAgICAgaW5kZXhFeHByZXNzaW9uLT5n
ZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCitpbnQgVFBhcnNlQ29udGV4dDo6
Y2hlY2tJbmRleE91dE9mUmFuZ2UoYm9vbCBvdXRPZlJhbmdlSW5kZXhJc0Vycm9yLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmRleCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYXJyYXlTaXplLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0
b2tlbikKK3sKKyAgICBpZiAoaW5kZXggPj0gYXJyYXlTaXplIHx8IGluZGV4IDwgMCkKICAgICB7
Ci0gICAgICAgIGluZGV4ZWRFeHByZXNzaW9uLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZp
ZXIoRXZxQ29uc3QpOworICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07
CisgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiJyIgPDwgaW5kZXggPDwgIiciOworICAgICAg
ICBzdGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7CisgICAgICAg
IG91dE9mUmFuZ2VFcnJvcihvdXRPZlJhbmdlSW5kZXhJc0Vycm9yLCBsb2NhdGlvbiwgcmVhc29u
LCB0b2tlbiwgZXh0cmFJbmZvLmNfc3RyKCkpOworICAgICAgICBpZiAoaW5kZXggPCAwKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhcnJheVNpemUgLSAxOworICAgICAgICB9CiAg
ICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIGluZGV4ZWRFeHByZXNzaW9uLT5nZXRUeXBl
UG9pbnRlcigpLT5zZXRRdWFsaWZpZXIoRXZxVGVtcG9yYXJ5KTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gaW5kZXhlZEV4cHJlc3Npb247CisgICAgcmV0dXJuIGluZGV4OwogfQogCiBUSW50ZXJtVHlw
ZWQgKlRQYXJzZUNvbnRleHQ6OmFkZEZpZWxkU2VsZWN0aW9uRXhwcmVzc2lvbihUSW50ZXJtVHlw
ZWQgKmJhc2VFeHByZXNzaW9uLApAQCAtMjk3NiwxMiArMjc1NCwxMCBAQAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmlu
ZyAmZmllbGRTdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZmaWVsZExvY2F0aW9uKQogewotICAg
IFRJbnRlcm1UeXBlZCAqaW5kZXhlZEV4cHJlc3Npb24gPSBOVUxMOwotCiAgICAgaWYgKGJhc2VF
eHByZXNzaW9uLT5pc0FycmF5KCkpCiAgICAgewogICAgICAgICBlcnJvcihmaWVsZExvY2F0aW9u
LCAiY2Fubm90IGFwcGx5IGRvdCBvcGVyYXRvciB0byBhbiBhcnJheSIsICIuIik7Ci0gICAgICAg
IHJlY292ZXIoKTsKKyAgICAgICAgcmV0dXJuIGJhc2VFeHByZXNzaW9uOwogICAgIH0KIAogICAg
IGlmIChiYXNlRXhwcmVzc2lvbi0+aXNWZWN0b3IoKSkKQEAgLTI5OTIsNDYgKzI3NjgsMjEgQEAK
ICAgICAgICAgewogICAgICAgICAgICAgZmllbGRzLm51bSAgICAgICAgPSAxOwogICAgICAgICAg
ICAgZmllbGRzLm9mZnNldHNbMF0gPSAwOwotICAgICAgICAgICAgcmVjb3ZlcigpOwogICAgICAg
ICB9CiAKLSAgICAgICAgaWYgKGJhc2VFeHByZXNzaW9uLT5nZXRBc0NvbnN0YW50VW5pb24oKSkK
LSAgICAgICAgewotICAgICAgICAgICAgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgdmVjdG9yIGZp
ZWxkcwotICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24gPSBhZGRDb25zdFZlY3Rvck5vZGUo
ZmllbGRzLCBiYXNlRXhwcmVzc2lvbi0+Z2V0QXNDb25zdGFudFVuaW9uKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZExvY2F0aW9uLCB0
cnVlKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIFRJ
bnRlcm1UeXBlZCAqaW5kZXggPSBpbnRlcm1lZGlhdGUuYWRkU3dpenpsZShmaWVsZHMsIGZpZWxk
TG9jYXRpb24pOwotICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24gPQotICAgICAgICAgICAg
ICAgIGludGVybWVkaWF0ZS5hZGRJbmRleChFT3BWZWN0b3JTd2l6emxlLCBiYXNlRXhwcmVzc2lv
biwgaW5kZXgsIGRvdExvY2F0aW9uKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaW5kZXhlZEV4
cHJlc3Npb24gPT0gbnVsbHB0cikKLSAgICAgICAgewotICAgICAgICAgICAgcmVjb3ZlcigpOwot
ICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24gPSBiYXNlRXhwcmVzc2lvbjsKLSAgICAgICAg
fQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGUg
cXVhbGlmaWVyIHNldCBoZXJlIHdpbGwgYmUgY29ycmVjdGVkIGxhdGVyLgotICAgICAgICAgICAg
aW5kZXhlZEV4cHJlc3Npb24tPnNldFR5cGUoVFR5cGUoYmFzZUV4cHJlc3Npb24tPmdldEJhc2lj
VHlwZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFz
ZUV4cHJlc3Npb24tPmdldFByZWNpc2lvbigpLCBFdnFUZW1wb3JhcnksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhcikoZmllbGRTdHJp
bmcpLnNpemUoKSkpOwotICAgICAgICB9CisgICAgICAgIHJldHVybiBUSW50ZXJtZWRpYXRlOjpB
ZGRTd2l6emxlKGJhc2VFeHByZXNzaW9uLCBmaWVsZHMsIGRvdExvY2F0aW9uKTsKICAgICB9CiAg
ICAgZWxzZSBpZiAoYmFzZUV4cHJlc3Npb24tPmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkK
ICAgICB7Ci0gICAgICAgIGJvb2wgZmllbGRGb3VuZCAgICAgICAgICA9IGZhbHNlOwogICAgICAg
ICBjb25zdCBURmllbGRMaXN0ICZmaWVsZHMgPSBiYXNlRXhwcmVzc2lvbi0+Z2V0VHlwZSgpLmdl
dFN0cnVjdCgpLT5maWVsZHMoKTsKICAgICAgICAgaWYgKGZpZWxkcy5lbXB0eSgpKQogICAgICAg
ICB7CiAgICAgICAgICAgICBlcnJvcihkb3RMb2NhdGlvbiwgInN0cnVjdHVyZSBoYXMgbm8gZmll
bGRzIiwgIkludGVybmFsIEVycm9yIik7Ci0gICAgICAgICAgICByZWNvdmVyKCk7Ci0gICAgICAg
ICAgICBpbmRleGVkRXhwcmVzc2lvbiA9IGJhc2VFeHByZXNzaW9uOworICAgICAgICAgICAgcmV0
dXJuIGJhc2VFeHByZXNzaW9uOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewor
ICAgICAgICAgICAgYm9vbCBmaWVsZEZvdW5kID0gZmFsc2U7CiAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgaTsKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyArK2kp
CiAgICAgICAgICAgICB7CkBAIC0zMDQzLDUwICsyNzk0LDI5IEBACiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAoZmllbGRGb3VuZCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBpZiAoYmFzZUV4cHJlc3Npb24tPmdldEFzQ29uc3RhbnRVbmlvbigpKQotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24gPSBhZGRDb25zdFN0
cnVjdChmaWVsZFN0cmluZywgYmFzZUV4cHJlc3Npb24sIGRvdExvY2F0aW9uKTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKGluZGV4ZWRFeHByZXNzaW9uID09IDApCi0gICAgICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlY292ZXIoKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uID0gYmFzZUV4cHJlc3Npb247Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmRleGVkRXhwcmVzc2lvbi0+c2V0VHlwZSgq
ZmllbGRzW2ldLT50eXBlKCkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgIFRDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9u
WzFdOwotICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoaSk7Ci0gICAg
ICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5kZXggPSBpbnRlcm1lZGlhdGUuYWRkQ29u
c3RhbnRVbmlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXksICpmaWVsZHNb
aV0tPnR5cGUoKSwgZmllbGRMb2NhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIGluZGV4ZWRF
eHByZXNzaW9uID0gaW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0U3RydWN0LCBi
YXNlRXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5kZXgsIGRvdExvY2F0aW9uKTsKLSAgICAgICAgICAgICAg
ICAgICAgaW5kZXhlZEV4cHJlc3Npb24tPnNldFR5cGUoKmZpZWxkc1tpXS0+dHlwZSgpKTsKLSAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICppbmRleCA9IFRJ
bnRlcm1UeXBlZDo6Q3JlYXRlSW5kZXhOb2RlKGkpOworICAgICAgICAgICAgICAgIGluZGV4LT5z
ZXRMaW5lKGZpZWxkTG9jYXRpb24pOworICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm1lZGlh
dGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3RTdHJ1Y3QsIGJhc2VFeHByZXNzaW9uLCBpbmRleCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdExvY2F0aW9u
LCAmbURpYWdub3N0aWNzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICBlcnJvcihkb3RMb2NhdGlvbiwgIiBubyBzdWNoIGZp
ZWxkIGluIHN0cnVjdHVyZSIsIGZpZWxkU3RyaW5nLmNfc3RyKCkpOwotICAgICAgICAgICAgICAg
IHJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICBpbmRleGVkRXhwcmVzc2lvbiA9IGJhc2VFeHBy
ZXNzaW9uOworICAgICAgICAgICAgICAgIHJldHVybiBiYXNlRXhwcmVzc2lvbjsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIGlmIChiYXNlRXhwcmVzc2lvbi0+aXNJ
bnRlcmZhY2VCbG9jaygpKQogICAgIHsKLSAgICAgICAgYm9vbCBmaWVsZEZvdW5kICAgICAgICAg
ID0gZmFsc2U7CiAgICAgICAgIGNvbnN0IFRGaWVsZExpc3QgJmZpZWxkcyA9IGJhc2VFeHByZXNz
aW9uLT5nZXRUeXBlKCkuZ2V0SW50ZXJmYWNlQmxvY2soKS0+ZmllbGRzKCk7CiAgICAgICAgIGlm
IChmaWVsZHMuZW1wdHkoKSkKICAgICAgICAgewogICAgICAgICAgICAgZXJyb3IoZG90TG9jYXRp
b24sICJpbnRlcmZhY2UgYmxvY2sgaGFzIG5vIGZpZWxkcyIsICJJbnRlcm5hbCBFcnJvciIpOwot
ICAgICAgICAgICAgcmVjb3ZlcigpOwotICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24gPSBi
YXNlRXhwcmVzc2lvbjsKKyAgICAgICAgICAgIHJldHVybiBiYXNlRXhwcmVzc2lvbjsKICAgICAg
ICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKKyAgICAgICAgICAgIGJvb2wgZmllbGRGb3Vu
ZCA9IGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgaW50IGk7CiAgICAgICAgICAgICBmb3Ig
KGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgKytpKQogICAgICAgICAgICAgewpAQCAtMzA5OCwx
OSArMjgyOCwxNSBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGZpZWxkRm91bmQp
CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgVENvbnN0YW50VW5pb24gKnVuaW9uQXJy
YXkgPSBuZXcgVENvbnN0YW50VW5pb25bMV07Ci0gICAgICAgICAgICAgICAgdW5pb25BcnJheS0+
c2V0SUNvbnN0KGkpOwotICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5kZXggPQotICAg
ICAgICAgICAgICAgICAgICBpbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5
LCAqZmllbGRzW2ldLT50eXBlKCksIGZpZWxkTG9jYXRpb24pOwotICAgICAgICAgICAgICAgIGlu
ZGV4ZWRFeHByZXNzaW9uID0gaW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0SW50
ZXJmYWNlQmxvY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYmFzZUV4cHJlc3Npb24sIGluZGV4LCBkb3RMb2NhdGlvbik7Ci0gICAg
ICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24tPnNldFR5cGUoKmZpZWxkc1tpXS0+dHlwZSgp
KTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmluZGV4ID0gVEludGVybVR5cGVkOjpD
cmVhdGVJbmRleE5vZGUoaSk7CisgICAgICAgICAgICAgICAgaW5kZXgtPnNldExpbmUoZmllbGRM
b2NhdGlvbik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybWVkaWF0ZS5hZGRJbmRleChF
T3BJbmRleERpcmVjdEludGVyZmFjZUJsb2NrLCBiYXNlRXhwcmVzc2lvbiwgaW5kZXgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3RMb2NhdGlvbiwgJm1E
aWFnbm9zdGljcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgZXJyb3IoZG90TG9jYXRpb24sICIgbm8gc3VjaCBmaWVsZCBp
biBpbnRlcmZhY2UgYmxvY2siLCBmaWVsZFN0cmluZy5jX3N0cigpKTsKLSAgICAgICAgICAgICAg
ICByZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24gPSBiYXNlRXhw
cmVzc2lvbjsKKyAgICAgICAgICAgICAgICByZXR1cm4gYmFzZUV4cHJlc3Npb247CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0zMTI4LDM3ICsyODU0LDI5IEBACiAgICAgICAg
ICAgICAgICAgICAic2lkZSIsCiAgICAgICAgICAgICAgICAgICBmaWVsZFN0cmluZy5jX3N0cigp
KTsKICAgICAgICAgfQotICAgICAgICByZWNvdmVyKCk7Ci0gICAgICAgIGluZGV4ZWRFeHByZXNz
aW9uID0gYmFzZUV4cHJlc3Npb247CisgICAgICAgIHJldHVybiBiYXNlRXhwcmVzc2lvbjsKICAg
ICB9Ci0KLSAgICBpZiAoYmFzZUV4cHJlc3Npb24tPmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0
KQotICAgIHsKLSAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24tPmdldFR5cGVQb2ludGVyKCktPnNl
dFF1YWxpZmllcihFdnFDb25zdCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIGlu
ZGV4ZWRFeHByZXNzaW9uLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIoRXZxVGVtcG9y
YXJ5KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gaW5kZXhlZEV4cHJlc3Npb247CiB9CiAKIFRMYXlv
dXRRdWFsaWZpZXIgVFBhcnNlQ29udGV4dDo6cGFyc2VMYXlvdXRRdWFsaWZpZXIoY29uc3QgVFN0
cmluZyAmcXVhbGlmaWVyVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmcXVhbGlmaWVyVHlwZUxpbmUpCiB7
Ci0gICAgVExheW91dFF1YWxpZmllciBxdWFsaWZpZXI7CisgICAgVExheW91dFF1YWxpZmllciBx
dWFsaWZpZXIgPSBUTGF5b3V0UXVhbGlmaWVyOjpjcmVhdGUoKTsKIAotICAgIHF1YWxpZmllci5s
b2NhdGlvbiAgICAgID0gLTE7Ci0gICAgcXVhbGlmaWVyLm1hdHJpeFBhY2tpbmcgPSBFbXBVbnNw
ZWNpZmllZDsKLSAgICBxdWFsaWZpZXIuYmxvY2tTdG9yYWdlICA9IEVic1Vuc3BlY2lmaWVkOwot
CiAgICAgaWYgKHF1YWxpZmllclR5cGUgPT0gInNoYXJlZCIpCiAgICAgeworICAgICAgICBpZiAo
SXNXZWJHTEJhc2VkU3BlYyhtU2hhZGVyU3BlYykpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVy
cm9yKHF1YWxpZmllclR5cGVMaW5lLCAiT25seSBzdGQxNDAgbGF5b3V0IGlzIGFsbG93ZWQgaW4g
V2ViR0wiLCAic2hhcmVkIik7CisgICAgICAgIH0KICAgICAgICAgcXVhbGlmaWVyLmJsb2NrU3Rv
cmFnZSA9IEVic1NoYXJlZDsKICAgICB9CiAgICAgZWxzZSBpZiAocXVhbGlmaWVyVHlwZSA9PSAi
cGFja2VkIikKICAgICB7CisgICAgICAgIGlmIChJc1dlYkdMQmFzZWRTcGVjKG1TaGFkZXJTcGVj
KSkKKyAgICAgICAgeworICAgICAgICAgICAgZXJyb3IocXVhbGlmaWVyVHlwZUxpbmUsICJPbmx5
IHN0ZDE0MCBsYXlvdXQgaXMgYWxsb3dlZCBpbiBXZWJHTCIsICJwYWNrZWQiKTsKKyAgICAgICAg
fQogICAgICAgICBxdWFsaWZpZXIuYmxvY2tTdG9yYWdlID0gRWJzUGFja2VkOwogICAgIH0KICAg
ICBlbHNlIGlmIChxdWFsaWZpZXJUeXBlID09ICJzdGQxNDAiKQpAQCAtMzE3NywxNDAgKzI4OTUs
MTIwIEBACiAgICAgewogICAgICAgICBlcnJvcihxdWFsaWZpZXJUeXBlTGluZSwgImludmFsaWQg
bGF5b3V0IHF1YWxpZmllciIsIHF1YWxpZmllclR5cGUuY19zdHIoKSwKICAgICAgICAgICAgICAg
ImxvY2F0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50Iik7Ci0gICAgICAgIHJlY292ZXIoKTsKICAg
ICB9CiAgICAgZWxzZQogICAgIHsKICAgICAgICAgZXJyb3IocXVhbGlmaWVyVHlwZUxpbmUsICJp
bnZhbGlkIGxheW91dCBxdWFsaWZpZXIiLCBxdWFsaWZpZXJUeXBlLmNfc3RyKCkpOwotICAgICAg
ICByZWNvdmVyKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHF1YWxpZmllcjsKIH0KIAordm9pZCBU
UGFyc2VDb250ZXh0OjpwYXJzZUxvY2FsU2l6ZShjb25zdCBUU3RyaW5nICZxdWFsaWZpZXJUeXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZx
dWFsaWZpZXJUeXBlTGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGludFZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291
cmNlTG9jICZpbnRWYWx1ZUxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZpbnRWYWx1ZVN0cmluZywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaDo6V29ya0dyb3VwU2l6ZSAqbG9jYWxTaXplKQoreworICAgIGNoZWNrTGF5b3V0
UXVhbGlmaWVyU3VwcG9ydGVkKHF1YWxpZmllclR5cGVMaW5lLCBxdWFsaWZpZXJUeXBlLCAzMTAp
OworICAgIGlmIChpbnRWYWx1ZSA8IDEpCisgICAgeworICAgICAgICBzdGQ6OnN0cmluZyBlcnJv
ck1lc3NhZ2UgPSBzdGQ6OnN0cmluZyhnZXRXb3JrR3JvdXBTaXplU3RyaW5nKGluZGV4KSkgKyAi
IG11c3QgYmUgcG9zaXRpdmUiOworICAgICAgICBlcnJvcihpbnRWYWx1ZUxpbmUsICJvdXQgb2Yg
cmFuZ2U6IiwgaW50VmFsdWVTdHJpbmcuY19zdHIoKSwgZXJyb3JNZXNzYWdlLmNfc3RyKCkpOwor
ICAgIH0KKyAgICAoKmxvY2FsU2l6ZSlbaW5kZXhdID0gaW50VmFsdWU7Cit9CisKIFRMYXlvdXRR
dWFsaWZpZXIgVFBhcnNlQ29udGV4dDo6cGFyc2VMYXlvdXRRdWFsaWZpZXIoY29uc3QgVFN0cmlu
ZyAmcXVhbGlmaWVyVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmcXVhbGlmaWVyVHlwZUxpbmUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRT
dHJpbmcgJmludFZhbHVlU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgaW50VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmludFZhbHVl
TGluZSkKIHsKLSAgICBUTGF5b3V0UXVhbGlmaWVyIHF1YWxpZmllcjsKKyAgICBUTGF5b3V0UXVh
bGlmaWVyIHF1YWxpZmllciA9IFRMYXlvdXRRdWFsaWZpZXI6OmNyZWF0ZSgpOwogCi0gICAgcXVh
bGlmaWVyLmxvY2F0aW9uICAgICAgPSAtMTsKLSAgICBxdWFsaWZpZXIubWF0cml4UGFja2luZyA9
IEVtcFVuc3BlY2lmaWVkOwotICAgIHF1YWxpZmllci5ibG9ja1N0b3JhZ2UgID0gRWJzVW5zcGVj
aWZpZWQ7CisgICAgc3RkOjpzdHJpbmcgaW50VmFsdWVTdHJpbmcgPSBTdHIoaW50VmFsdWUpOwog
Ci0gICAgaWYgKHF1YWxpZmllclR5cGUgIT0gImxvY2F0aW9uIikKKyAgICBpZiAocXVhbGlmaWVy
VHlwZSA9PSAibG9jYXRpb24iKQogICAgIHsKLSAgICAgICAgZXJyb3IocXVhbGlmaWVyVHlwZUxp
bmUsICJpbnZhbGlkIGxheW91dCBxdWFsaWZpZXIiLCBxdWFsaWZpZXJUeXBlLmNfc3RyKCksCi0g
ICAgICAgICAgICAgICJvbmx5IGxvY2F0aW9uIG1heSBoYXZlIGFyZ3VtZW50cyIpOwotICAgICAg
ICByZWNvdmVyKCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7CiAgICAgICAgIC8vIG11c3QgY2hl
Y2sgdGhhdCBsb2NhdGlvbiBpcyBub24tbmVnYXRpdmUKICAgICAgICAgaWYgKGludFZhbHVlIDwg
MCkKICAgICAgICAgewogICAgICAgICAgICAgZXJyb3IoaW50VmFsdWVMaW5lLCAib3V0IG9mIHJh
bmdlOiIsIGludFZhbHVlU3RyaW5nLmNfc3RyKCksCiAgICAgICAgICAgICAgICAgICAibG9jYXRp
b24gbXVzdCBiZSBub24tbmVnYXRpdmUiKTsKLSAgICAgICAgICAgIHJlY292ZXIoKTsKICAgICAg
ICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKICAgICAgICAgICAgIHF1YWxpZmllci5sb2Nh
dGlvbiA9IGludFZhbHVlOworICAgICAgICAgICAgcXVhbGlmaWVyLmxvY2F0aW9uc1NwZWNpZmll
ZCA9IDE7CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICByZXR1cm4gcXVhbGlmaWVyOwotfQotCi1U
TGF5b3V0UXVhbGlmaWVyIFRQYXJzZUNvbnRleHQ6OmpvaW5MYXlvdXRRdWFsaWZpZXJzKFRMYXlv
dXRRdWFsaWZpZXIgbGVmdFF1YWxpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVExheW91dFF1YWxpZmllciByaWdodFF1YWxpZmllcikK
LXsKLSAgICBUTGF5b3V0UXVhbGlmaWVyIGpvaW5lZFF1YWxpZmllciA9IGxlZnRRdWFsaWZpZXI7
Ci0KLSAgICBpZiAocmlnaHRRdWFsaWZpZXIubG9jYXRpb24gIT0gLTEpCisgICAgZWxzZSBpZiAo
cXVhbGlmaWVyVHlwZSA9PSAibG9jYWxfc2l6ZV94IikKICAgICB7Ci0gICAgICAgIGpvaW5lZFF1
YWxpZmllci5sb2NhdGlvbiA9IHJpZ2h0UXVhbGlmaWVyLmxvY2F0aW9uOworICAgICAgICBwYXJz
ZUxvY2FsU2l6ZShxdWFsaWZpZXJUeXBlLCBxdWFsaWZpZXJUeXBlTGluZSwgaW50VmFsdWUsIGlu
dFZhbHVlTGluZSwgaW50VmFsdWVTdHJpbmcsIDB1LAorICAgICAgICAgICAgICAgICAgICAgICAm
cXVhbGlmaWVyLmxvY2FsU2l6ZSk7CiAgICAgfQotICAgIGlmIChyaWdodFF1YWxpZmllci5tYXRy
aXhQYWNraW5nICE9IEVtcFVuc3BlY2lmaWVkKQorICAgIGVsc2UgaWYgKHF1YWxpZmllclR5cGUg
PT0gImxvY2FsX3NpemVfeSIpCiAgICAgewotICAgICAgICBqb2luZWRRdWFsaWZpZXIubWF0cml4
UGFja2luZyA9IHJpZ2h0UXVhbGlmaWVyLm1hdHJpeFBhY2tpbmc7CisgICAgICAgIHBhcnNlTG9j
YWxTaXplKHF1YWxpZmllclR5cGUsIHF1YWxpZmllclR5cGVMaW5lLCBpbnRWYWx1ZSwgaW50VmFs
dWVMaW5lLCBpbnRWYWx1ZVN0cmluZywgMXUsCisgICAgICAgICAgICAgICAgICAgICAgICZxdWFs
aWZpZXIubG9jYWxTaXplKTsKICAgICB9Ci0gICAgaWYgKHJpZ2h0UXVhbGlmaWVyLmJsb2NrU3Rv
cmFnZSAhPSBFYnNVbnNwZWNpZmllZCkKKyAgICBlbHNlIGlmIChxdWFsaWZpZXJUeXBlID09ICJs
b2NhbF9zaXplX3oiKQogICAgIHsKLSAgICAgICAgam9pbmVkUXVhbGlmaWVyLmJsb2NrU3RvcmFn
ZSA9IHJpZ2h0UXVhbGlmaWVyLmJsb2NrU3RvcmFnZTsKKyAgICAgICAgcGFyc2VMb2NhbFNpemUo
cXVhbGlmaWVyVHlwZSwgcXVhbGlmaWVyVHlwZUxpbmUsIGludFZhbHVlLCBpbnRWYWx1ZUxpbmUs
IGludFZhbHVlU3RyaW5nLCAydSwKKyAgICAgICAgICAgICAgICAgICAgICAgJnF1YWxpZmllci5s
b2NhbFNpemUpOwogICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBlcnJvcihxdWFsaWZp
ZXJUeXBlTGluZSwgImludmFsaWQgbGF5b3V0IHF1YWxpZmllciIsIHF1YWxpZmllclR5cGUuY19z
dHIoKSk7CisgICAgfQogCi0gICAgcmV0dXJuIGpvaW5lZFF1YWxpZmllcjsKKyAgICByZXR1cm4g
cXVhbGlmaWVyOwogfQogCi1UUHVibGljVHlwZSBUUGFyc2VDb250ZXh0Ojpqb2luSW50ZXJwb2xh
dGlvblF1YWxpZmllcnMoY29uc3QgVFNvdXJjZUxvYyAmaW50ZXJwb2xhdGlvbkxvYywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUXVhbGlm
aWVyIGludGVycG9sYXRpb25RdWFsaWZpZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmc3RvcmFnZUxvYywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
UXVhbGlmaWVyIHN0b3JhZ2VRdWFsaWZpZXIpCitUVHlwZVF1YWxpZmllckJ1aWxkZXIgKlRQYXJz
ZUNvbnRleHQ6OmNyZWF0ZVR5cGVRdWFsaWZpZXJCdWlsZGVyKGNvbnN0IFRTb3VyY2VMb2MgJmxv
YykKIHsKLSAgICBUUXVhbGlmaWVyIG1lcmdlZFF1YWxpZmllciA9IEV2cVNtb290aEluOworICAg
IHJldHVybiBuZXcgVFR5cGVRdWFsaWZpZXJCdWlsZGVyKAorICAgICAgICBuZXcgVFN0b3JhZ2VR
dWFsaWZpZXJXcmFwcGVyKHN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6
IEV2cVRlbXBvcmFyeSwgbG9jKSwKKyAgICAgICAgbVNoYWRlclZlcnNpb24pOworfQogCi0gICAg
aWYgKHN0b3JhZ2VRdWFsaWZpZXIgPT0gRXZxRnJhZ21lbnRJbikKK1RMYXlvdXRRdWFsaWZpZXIg
VFBhcnNlQ29udGV4dDo6am9pbkxheW91dFF1YWxpZmllcnMoVExheW91dFF1YWxpZmllciBsZWZ0
UXVhbGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUTGF5b3V0UXVhbGlmaWVyIHJpZ2h0UXVhbGlmaWVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZy
aWdodFF1YWxpZmllckxvY2F0aW9uKQoreworICAgIHJldHVybiBzaDo6Sm9pbkxheW91dFF1YWxp
ZmllcnMobGVmdFF1YWxpZmllciwgcmlnaHRRdWFsaWZpZXIsIHJpZ2h0UXVhbGlmaWVyTG9jYXRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbURpYWdub3N0aWNzKTsK
K30KKworVEZpZWxkTGlzdCAqVFBhcnNlQ29udGV4dDo6YWRkU3RydWN0RGVjbGFyYXRvckxpc3RX
aXRoUXVhbGlmaWVycygKKyAgICBjb25zdCBUVHlwZVF1YWxpZmllckJ1aWxkZXIgJnR5cGVRdWFs
aWZpZXJCdWlsZGVyLAorICAgIFRQdWJsaWNUeXBlICp0eXBlU3BlY2lmaWVyLAorICAgIFRGaWVs
ZExpc3QgKmZpZWxkTGlzdCkKK3sKKyAgICBUVHlwZVF1YWxpZmllciB0eXBlUXVhbGlmaWVyID0g
dHlwZVF1YWxpZmllckJ1aWxkZXIuZ2V0VmFyaWFibGVUeXBlUXVhbGlmaWVyKCZtRGlhZ25vc3Rp
Y3MpOworCisgICAgdHlwZVNwZWNpZmllci0+cXVhbGlmaWVyICAgICAgID0gdHlwZVF1YWxpZmll
ci5xdWFsaWZpZXI7CisgICAgdHlwZVNwZWNpZmllci0+bGF5b3V0UXVhbGlmaWVyID0gdHlwZVF1
YWxpZmllci5sYXlvdXRRdWFsaWZpZXI7CisgICAgdHlwZVNwZWNpZmllci0+aW52YXJpYW50ICAg
ICAgID0gdHlwZVF1YWxpZmllci5pbnZhcmlhbnQ7CisgICAgaWYgKHR5cGVRdWFsaWZpZXIucHJl
Y2lzaW9uICE9IEVicFVuZGVmaW5lZCkKICAgICB7Ci0gICAgICAgIGlmIChpbnRlcnBvbGF0aW9u
UXVhbGlmaWVyID09IEV2cVNtb290aCkKLSAgICAgICAgICAgIG1lcmdlZFF1YWxpZmllciA9IEV2
cVNtb290aEluOwotICAgICAgICBlbHNlIGlmIChpbnRlcnBvbGF0aW9uUXVhbGlmaWVyID09IEV2
cUZsYXQpCi0gICAgICAgICAgICBtZXJnZWRRdWFsaWZpZXIgPSBFdnFGbGF0SW47Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIHR5cGVTcGVjaWZpZXIt
PnByZWNpc2lvbiA9IHR5cGVRdWFsaWZpZXIucHJlY2lzaW9uOwogICAgIH0KLSAgICBlbHNlIGlm
IChzdG9yYWdlUXVhbGlmaWVyID09IEV2cUNlbnRyb2lkSW4pCi0gICAgewotICAgICAgICBpZiAo
aW50ZXJwb2xhdGlvblF1YWxpZmllciA9PSBFdnFTbW9vdGgpCi0gICAgICAgICAgICBtZXJnZWRR
dWFsaWZpZXIgPSBFdnFDZW50cm9pZEluOwotICAgICAgICBlbHNlIGlmIChpbnRlcnBvbGF0aW9u
UXVhbGlmaWVyID09IEV2cUZsYXQpCi0gICAgICAgICAgICBtZXJnZWRRdWFsaWZpZXIgPSBFdnFG
bGF0SW47Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgfQot
ICAgIGVsc2UgaWYgKHN0b3JhZ2VRdWFsaWZpZXIgPT0gRXZxVmVydGV4T3V0KQotICAgIHsKLSAg
ICAgICAgaWYgKGludGVycG9sYXRpb25RdWFsaWZpZXIgPT0gRXZxU21vb3RoKQotICAgICAgICAg
ICAgbWVyZ2VkUXVhbGlmaWVyID0gRXZxU21vb3RoT3V0OwotICAgICAgICBlbHNlIGlmIChpbnRl
cnBvbGF0aW9uUXVhbGlmaWVyID09IEV2cUZsYXQpCi0gICAgICAgICAgICBtZXJnZWRRdWFsaWZp
ZXIgPSBFdnFGbGF0T3V0OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OwotICAgIH0KLSAgICBlbHNlIGlmIChzdG9yYWdlUXVhbGlmaWVyID09IEV2cUNlbnRyb2lkT3V0
KQotICAgIHsKLSAgICAgICAgaWYgKGludGVycG9sYXRpb25RdWFsaWZpZXIgPT0gRXZxU21vb3Ro
KQotICAgICAgICAgICAgbWVyZ2VkUXVhbGlmaWVyID0gRXZxQ2VudHJvaWRPdXQ7Ci0gICAgICAg
IGVsc2UgaWYgKGludGVycG9sYXRpb25RdWFsaWZpZXIgPT0gRXZxRmxhdCkKLSAgICAgICAgICAg
IG1lcmdlZFF1YWxpZmllciA9IEV2cUZsYXRPdXQ7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIGVycm9yKGlu
dGVycG9sYXRpb25Mb2MsCi0gICAgICAgICAgICAgICJpbnRlcnBvbGF0aW9uIHF1YWxpZmllciBy
ZXF1aXJlcyBhIGZyYWdtZW50ICdpbicgb3IgdmVydGV4ICdvdXQnIHN0b3JhZ2UgcXVhbGlmaWVy
IiwKLSAgICAgICAgICAgICAgZ2V0SW50ZXJwb2xhdGlvblN0cmluZyhpbnRlcnBvbGF0aW9uUXVh
bGlmaWVyKSk7Ci0gICAgICAgIHJlY292ZXIoKTsKLQotICAgICAgICBtZXJnZWRRdWFsaWZpZXIg
PSBzdG9yYWdlUXVhbGlmaWVyOwotICAgIH0KLQotICAgIFRQdWJsaWNUeXBlIHR5cGU7Ci0gICAg
dHlwZS5zZXRCYXNpYyhFYnRWb2lkLCBtZXJnZWRRdWFsaWZpZXIsIHN0b3JhZ2VMb2MpOwotICAg
IHJldHVybiB0eXBlOworICAgIHJldHVybiBhZGRTdHJ1Y3REZWNsYXJhdG9yTGlzdCgqdHlwZVNw
ZWNpZmllciwgZmllbGRMaXN0KTsKIH0KIAogVEZpZWxkTGlzdCAqVFBhcnNlQ29udGV4dDo6YWRk
U3RydWN0RGVjbGFyYXRvckxpc3QoY29uc3QgVFB1YmxpY1R5cGUgJnR5cGVTcGVjaWZpZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURmllbGRM
aXN0ICpmaWVsZExpc3QpCiB7Ci0gICAgaWYgKHZvaWRFcnJvckNoZWNrKHR5cGVTcGVjaWZpZXIu
bGluZSwgKCpmaWVsZExpc3QpWzBdLT5uYW1lKCksIHR5cGVTcGVjaWZpZXIudHlwZSkpCi0gICAg
ewotICAgICAgICByZWNvdmVyKCk7Ci0gICAgfQorICAgIGNoZWNrUHJlY2lzaW9uU3BlY2lmaWVk
KHR5cGVTcGVjaWZpZXIuZ2V0TGluZSgpLCB0eXBlU3BlY2lmaWVyLnByZWNpc2lvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0eXBlU3BlY2lmaWVyLmdldEJhc2ljVHlwZSgpKTsKIAor
ICAgIGNoZWNrSXNOb25Wb2lkKHR5cGVTcGVjaWZpZXIuZ2V0TGluZSgpLCAoKmZpZWxkTGlzdClb
MF0tPm5hbWUoKSwgdHlwZVNwZWNpZmllci5nZXRCYXNpY1R5cGUoKSk7CisKKyAgICBjaGVja1dv
cmtHcm91cFNpemVJc05vdFNwZWNpZmllZCh0eXBlU3BlY2lmaWVyLmdldExpbmUoKSwgdHlwZVNw
ZWNpZmllci5sYXlvdXRRdWFsaWZpZXIpOworCiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7
IGkgPCBmaWVsZExpc3QtPnNpemUoKTsgKytpKQogICAgIHsKICAgICAgICAgLy8KQEAgLTMzMTcs
MzkgKzMwMTUsMzYgQEAKICAgICAgICAgLy8gQ2FyZWZ1bCBub3QgdG8gcmVwbGFjZSBhbHJlYWR5
IGtub3duIGFzcGVjdHMgb2YgdHlwZSwgbGlrZSBhcnJheS1uZXNzCiAgICAgICAgIC8vCiAgICAg
ICAgIFRUeXBlICp0eXBlID0gKCpmaWVsZExpc3QpW2ldLT50eXBlKCk7Ci0gICAgICAgIHR5cGUt
PnNldEJhc2ljVHlwZSh0eXBlU3BlY2lmaWVyLnR5cGUpOwotICAgICAgICB0eXBlLT5zZXRQcmlt
YXJ5U2l6ZSh0eXBlU3BlY2lmaWVyLnByaW1hcnlTaXplKTsKLSAgICAgICAgdHlwZS0+c2V0U2Vj
b25kYXJ5U2l6ZSh0eXBlU3BlY2lmaWVyLnNlY29uZGFyeVNpemUpOworICAgICAgICB0eXBlLT5z
ZXRCYXNpY1R5cGUodHlwZVNwZWNpZmllci5nZXRCYXNpY1R5cGUoKSk7CisgICAgICAgIHR5cGUt
PnNldFByaW1hcnlTaXplKHR5cGVTcGVjaWZpZXIuZ2V0UHJpbWFyeVNpemUoKSk7CisgICAgICAg
IHR5cGUtPnNldFNlY29uZGFyeVNpemUodHlwZVNwZWNpZmllci5nZXRTZWNvbmRhcnlTaXplKCkp
OwogICAgICAgICB0eXBlLT5zZXRQcmVjaXNpb24odHlwZVNwZWNpZmllci5wcmVjaXNpb24pOwog
ICAgICAgICB0eXBlLT5zZXRRdWFsaWZpZXIodHlwZVNwZWNpZmllci5xdWFsaWZpZXIpOwogICAg
ICAgICB0eXBlLT5zZXRMYXlvdXRRdWFsaWZpZXIodHlwZVNwZWNpZmllci5sYXlvdXRRdWFsaWZp
ZXIpOworICAgICAgICB0eXBlLT5zZXRJbnZhcmlhbnQodHlwZVNwZWNpZmllci5pbnZhcmlhbnQp
OwogCiAgICAgICAgIC8vIGRvbid0IGFsbG93IGFycmF5cyBvZiBhcnJheXMKICAgICAgICAgaWYg
KHR5cGUtPmlzQXJyYXkoKSkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKGFycmF5VHlwZUVy
cm9yQ2hlY2sodHlwZVNwZWNpZmllci5saW5lLCB0eXBlU3BlY2lmaWVyKSkKLSAgICAgICAgICAg
ICAgICByZWNvdmVyKCk7CisgICAgICAgICAgICBjaGVja0lzVmFsaWRUeXBlRm9yQXJyYXkodHlw
ZVNwZWNpZmllci5nZXRMaW5lKCksIHR5cGVTcGVjaWZpZXIpOwogICAgICAgICB9CiAgICAgICAg
IGlmICh0eXBlU3BlY2lmaWVyLmFycmF5KQotICAgICAgICAgICAgdHlwZS0+c2V0QXJyYXlTaXpl
KHR5cGVTcGVjaWZpZXIuYXJyYXlTaXplKTsKLSAgICAgICAgaWYgKHR5cGVTcGVjaWZpZXIudXNl
ckRlZikKKyAgICAgICAgICAgIHR5cGUtPnNldEFycmF5U2l6ZShzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBpbnQ+KHR5cGVTcGVjaWZpZXIuYXJyYXlTaXplKSk7CisgICAgICAgIGlmICh0eXBlU3BlY2lm
aWVyLmdldFVzZXJEZWYoKSkKICAgICAgICAgewotICAgICAgICAgICAgdHlwZS0+c2V0U3RydWN0
KHR5cGVTcGVjaWZpZXIudXNlckRlZi0+Z2V0U3RydWN0KCkpOworICAgICAgICAgICAgdHlwZS0+
c2V0U3RydWN0KHR5cGVTcGVjaWZpZXIuZ2V0VXNlckRlZigpLT5nZXRTdHJ1Y3QoKSk7CiAgICAg
ICAgIH0KIAotICAgICAgICBpZiAoc3RydWN0TmVzdGluZ0Vycm9yQ2hlY2sodHlwZVNwZWNpZmll
ci5saW5lLCAqKCpmaWVsZExpc3QpW2ldKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmVjb3Zl
cigpOwotICAgICAgICB9CisgICAgICAgIGNoZWNrSXNCZWxvd1N0cnVjdE5lc3RpbmdMaW1pdCh0
eXBlU3BlY2lmaWVyLmdldExpbmUoKSwgKigqZmllbGRMaXN0KVtpXSk7CiAgICAgfQogCiAgICAg
cmV0dXJuIGZpZWxkTGlzdDsKIH0KIAotVFB1YmxpY1R5cGUgVFBhcnNlQ29udGV4dDo6YWRkU3Ry
dWN0dXJlKGNvbnN0IFRTb3VyY2VMb2MgJnN0cnVjdExpbmUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbmFtZUxpbmUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAqc3RydWN0TmFt
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURmllbGRMaXN0ICpm
aWVsZExpc3QpCitUVHlwZVNwZWNpZmllck5vbkFycmF5IFRQYXJzZUNvbnRleHQ6OmFkZFN0cnVj
dHVyZShjb25zdCBUU291cmNlTG9jICZzdHJ1Y3RMaW5lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbmFtZUxpbmUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUU3RyaW5nICpzdHJ1Y3ROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVEZpZWxkTGlzdCAqZmllbGRMaXN0KQogewogICAgIFRTdHJ1Y3R1
cmUgKnN0cnVjdHVyZSA9IG5ldyBUU3RydWN0dXJlKHN0cnVjdE5hbWUsIGZpZWxkTGlzdCk7CiAg
ICAgVFR5cGUgKnN0cnVjdHVyZVR5cGUgID0gbmV3IFRUeXBlKHN0cnVjdHVyZSk7CkBAIC0zMzU2
LDIwICszMDUxLDE1IEBACiAKICAgICAvLyBTdG9yZSBhIGJvb2wgaW4gdGhlIHN0cnVjdCBpZiB3
ZSdyZSBhdCBnbG9iYWwgc2NvcGUsIHRvIGFsbG93IHVzIHRvCiAgICAgLy8gc2tpcCB0aGUgbG9j
YWwgc3RydWN0IHNjb3Bpbmcgd29ya2Fyb3VuZCBpbiBITFNMLgotICAgIHN0cnVjdHVyZS0+c2V0
VW5pcXVlSWQoVFN5bWJvbFRhYmxlOjpuZXh0VW5pcXVlSWQoKSk7CiAgICAgc3RydWN0dXJlLT5z
ZXRBdEdsb2JhbFNjb3BlKHN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSk7CiAKICAgICBpZiAo
IXN0cnVjdE5hbWUtPmVtcHR5KCkpCiAgICAgewotICAgICAgICBpZiAocmVzZXJ2ZWRFcnJvckNo
ZWNrKG5hbWVMaW5lLCAqc3RydWN0TmFtZSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJlY292
ZXIoKTsKLSAgICAgICAgfQorICAgICAgICBjaGVja0lzTm90UmVzZXJ2ZWQobmFtZUxpbmUsICpz
dHJ1Y3ROYW1lKTsKICAgICAgICAgVFZhcmlhYmxlICp1c2VyVHlwZURlZiA9IG5ldyBUVmFyaWFi
bGUoc3RydWN0TmFtZSwgKnN0cnVjdHVyZVR5cGUsIHRydWUpOwogICAgICAgICBpZiAoIXN5bWJv
bFRhYmxlLmRlY2xhcmUodXNlclR5cGVEZWYpKQogICAgICAgICB7CiAgICAgICAgICAgICBlcnJv
cihuYW1lTGluZSwgInJlZGVmaW5pdGlvbiIsIHN0cnVjdE5hbWUtPmNfc3RyKCksICJzdHJ1Y3Qi
KTsKLSAgICAgICAgICAgIHJlY292ZXIoKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzM4Niwy
MiArMzA3NiwyNyBAQAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBlcnJv
cihmaWVsZC5saW5lKCksICJpbnZhbGlkIHF1YWxpZmllciBvbiBzdHJ1Y3QgbWVtYmVyIiwKICAg
ICAgICAgICAgICAgICAgICAgICBnZXRRdWFsaWZpZXJTdHJpbmcocXVhbGlmaWVyKSk7Ci0gICAg
ICAgICAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CisgICAgICAgIGlmIChmaWVsZC50eXBlKCktPmlzSW52YXJpYW50KCkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGVycm9yKGZpZWxkLmxpbmUoKSwgImludmFsaWQgcXVhbGlmaWVyIG9uIHN0cnVj
dCBtZW1iZXIiLCAiaW52YXJpYW50Iik7CisgICAgICAgIH0KKworICAgICAgICBjaGVja0xvY2F0
aW9uSXNOb3RTcGVjaWZpZWQoZmllbGQubGluZSgpLCBmaWVsZC50eXBlKCktPmdldExheW91dFF1
YWxpZmllcigpKTsKICAgICB9CiAKLSAgICBUUHVibGljVHlwZSBwdWJsaWNUeXBlOwotICAgIHB1
YmxpY1R5cGUuc2V0QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksIHN0cnVjdExpbmUpOwot
ICAgIHB1YmxpY1R5cGUudXNlckRlZiA9IHN0cnVjdHVyZVR5cGU7Ci0gICAgcHVibGljVHlwZS5p
c1N0cnVjdFNwZWNpZmllciA9IHRydWU7CisgICAgVFR5cGVTcGVjaWZpZXJOb25BcnJheSB0eXBl
U3BlY2lmaWVyTm9uQXJyYXk7CisgICAgdHlwZVNwZWNpZmllck5vbkFycmF5LmluaXRpYWxpemUo
RWJ0U3RydWN0LCBzdHJ1Y3RMaW5lKTsKKyAgICB0eXBlU3BlY2lmaWVyTm9uQXJyYXkudXNlckRl
ZiAgICAgICAgICAgPSBzdHJ1Y3R1cmVUeXBlOworICAgIHR5cGVTcGVjaWZpZXJOb25BcnJheS5p
c1N0cnVjdFNwZWNpZmllciA9IHRydWU7CiAgICAgZXhpdFN0cnVjdERlY2xhcmF0aW9uKCk7CiAK
LSAgICByZXR1cm4gcHVibGljVHlwZTsKKyAgICByZXR1cm4gdHlwZVNwZWNpZmllck5vbkFycmF5
OwogfQogCiBUSW50ZXJtU3dpdGNoICpUUGFyc2VDb250ZXh0OjphZGRTd2l0Y2goVEludGVybVR5
cGVkICppbml0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRl
cm1BZ2dyZWdhdGUgKnN0YXRlbWVudExpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVEludGVybUJsb2NrICpzdGF0ZW1lbnRMaXN0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvYykKIHsKICAgICBU
QmFzaWNUeXBlIHN3aXRjaFR5cGUgPSBpbml0LT5nZXRCYXNpY1R5cGUoKTsKQEAgLTM0MTAsNyAr
MzEwNSw2IEBACiAgICAgewogICAgICAgICBlcnJvcihpbml0LT5nZXRMaW5lKCksICJpbml0LWV4
cHJlc3Npb24gaW4gYSBzd2l0Y2ggc3RhdGVtZW50IG11c3QgYmUgYSBzY2FsYXIgaW50ZWdlciIs
CiAgICAgICAgICAgICAgICJzd2l0Y2giKTsKLSAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTM0MTgsNyArMzExMiw2IEBACiAgICAgewogICAg
ICAgICBpZiAoIVZhbGlkYXRlU3dpdGNoOjp2YWxpZGF0ZShzd2l0Y2hUeXBlLCB0aGlzLCBzdGF0
ZW1lbnRMaXN0LCBsb2MpKQogICAgICAgICB7Ci0gICAgICAgICAgICByZWNvdmVyKCk7CiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgIH0KQEAgLTM0MjcsNyArMzEy
MCw2IEBACiAgICAgaWYgKG5vZGUgPT0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIGVycm9yKGxv
YywgImVycm9uZW91cyBzd2l0Y2ggc3RhdGVtZW50IiwgInN3aXRjaCIpOwotICAgICAgICByZWNv
dmVyKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICByZXR1cm4gbm9kZTsK
QEAgLTM0MzgsMTMgKzMxMzAsMTEgQEAKICAgICBpZiAobVN3aXRjaE5lc3RpbmdMZXZlbCA9PSAw
KQogICAgIHsKICAgICAgICAgZXJyb3IobG9jLCAiY2FzZSBsYWJlbHMgbmVlZCB0byBiZSBpbnNp
ZGUgc3dpdGNoIHN0YXRlbWVudHMiLCAiY2FzZSIpOwotICAgICAgICByZWNvdmVyKCk7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBpZiAoY29uZGl0aW9uID09IG51bGxwdHIp
CiAgICAgewogICAgICAgICBlcnJvcihsb2MsICJjYXNlIGxhYmVsIG11c3QgaGF2ZSBhIGNvbmRp
dGlvbiIsICJjYXNlIik7Ci0gICAgICAgIHJlY292ZXIoKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogICAgIGlmICgoY29uZGl0aW9uLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRJbnQg
JiYgY29uZGl0aW9uLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRVSW50KSB8fApAQCAtMzQ1MSw3ICsz
MTQxLDYgQEAKICAgICAgICAgY29uZGl0aW9uLT5pc01hdHJpeCgpIHx8IGNvbmRpdGlvbi0+aXNB
cnJheSgpIHx8IGNvbmRpdGlvbi0+aXNWZWN0b3IoKSkKICAgICB7CiAgICAgICAgIGVycm9yKGNv
bmRpdGlvbi0+Z2V0TGluZSgpLCAiY2FzZSBsYWJlbCBtdXN0IGJlIGEgc2NhbGFyIGludGVnZXIi
LCAiY2FzZSIpOwotICAgICAgICByZWNvdmVyKCk7CiAgICAgfQogICAgIFRJbnRlcm1Db25zdGFu
dFVuaW9uICpjb25kaXRpb25Db25zdCA9IGNvbmRpdGlvbi0+Z2V0QXNDb25zdGFudFVuaW9uKCk7
CiAgICAgLy8gVE9ETyhvZXR1YWhvQG52aWRpYS5jb20pOiBHZXQgcmlkIG9mIHRoZSBjb25kaXRp
b25Db25zdCA9PSBudWxscHRyIGNoZWNrIG9uY2UgYWxsIGNvbnN0YW50CkBAIC0zNDYwLDEzICsz
MTQ5LDExIEBACiAgICAgaWYgKGNvbmRpdGlvbi0+Z2V0UXVhbGlmaWVyKCkgIT0gRXZxQ29uc3Qg
fHwgY29uZGl0aW9uQ29uc3QgPT0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIGVycm9yKGNvbmRp
dGlvbi0+Z2V0TGluZSgpLCAiY2FzZSBsYWJlbCBtdXN0IGJlIGNvbnN0YW50IiwgImNhc2UiKTsK
LSAgICAgICAgcmVjb3ZlcigpOwogICAgIH0KICAgICBUSW50ZXJtQ2FzZSAqbm9kZSA9IGludGVy
bWVkaWF0ZS5hZGRDYXNlKGNvbmRpdGlvbiwgbG9jKTsKICAgICBpZiAobm9kZSA9PSBudWxscHRy
KQogICAgIHsKICAgICAgICAgZXJyb3IobG9jLCAiZXJyb25lb3VzIGNhc2Ugc3RhdGVtZW50Iiwg
ImNhc2UiKTsKLSAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAgICAgcmV0dXJuIG5vZGU7CkBAIC0zNDc3LDcgKzMxNjQsNiBAQAogICAgIGlmIChtU3dp
dGNoTmVzdGluZ0xldmVsID09IDApCiAgICAgewogICAgICAgICBlcnJvcihsb2MsICJkZWZhdWx0
IGxhYmVscyBuZWVkIHRvIGJlIGluc2lkZSBzd2l0Y2ggc3RhdGVtZW50cyIsICJkZWZhdWx0Iik7
Ci0gICAgICAgIHJlY292ZXIoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAg
IFRJbnRlcm1DYXNlICpub2RlID0gaW50ZXJtZWRpYXRlLmFkZENhc2UobnVsbHB0ciwgbG9jKTsK
QEAgLTM0ODQsNyArMzE3MCw2IEBACiAgICAgaWYgKG5vZGUgPT0gbnVsbHB0cikKICAgICB7CiAg
ICAgICAgIGVycm9yKGxvYywgImVycm9uZW91cyBkZWZhdWx0IHN0YXRlbWVudCIsICJkZWZhdWx0
Iik7Ci0gICAgICAgIHJlY292ZXIoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
ICAgIHJldHVybiBub2RlOwpAQCAtMzUyMyw3ICszMjA4LDcgQEAKICAgICAgICAgY2FzZSBFT3BO
ZWdhdGl2ZToKICAgICAgICAgY2FzZSBFT3BQb3NpdGl2ZToKICAgICAgICAgICAgIGlmIChjaGls
ZC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0IHx8IGNoaWxkLT5nZXRCYXNpY1R5cGUoKSA9
PSBFYnRCb29sIHx8Ci0gICAgICAgICAgICAgICAgY2hpbGQtPmlzQXJyYXkoKSkKKyAgICAgICAg
ICAgICAgICBjaGlsZC0+aXNBcnJheSgpIHx8IElzU2FtcGxlcihjaGlsZC0+Z2V0QmFzaWNUeXBl
KCkpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
ICAgICAgICAgfQpAQCAtMzUzMiw3ICszMjE3LDE0IEBACiAgICAgICAgICAgICBicmVhazsKICAg
ICB9CiAKLSAgICByZXR1cm4gaW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChvcCwgY2hpbGQsIGxv
YywgZnVuY1JldHVyblR5cGUpOworICAgIFRJbnRlcm1VbmFyeSAqbm9kZSA9IG5ldyBUSW50ZXJt
VW5hcnkob3AsIGNoaWxkKTsKKyAgICBub2RlLT5zZXRMaW5lKGxvYyk7CisKKyAgICBUSW50ZXJt
VHlwZWQgKmZvbGRlZE5vZGUgPSBub2RlLT5mb2xkKCZtRGlhZ25vc3RpY3MpOworICAgIGlmIChm
b2xkZWROb2RlKQorICAgICAgICByZXR1cm4gZm9sZGVkTm9kZTsKKworICAgIHJldHVybiBub2Rl
OwogfQogCiBUSW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6OmFkZFVuYXJ5TWF0aChUT3BlcmF0
b3Igb3AsIFRJbnRlcm1UeXBlZCAqY2hpbGQsIGNvbnN0IFRTb3VyY2VMb2MgJmxvYykKQEAgLTM1
NDEsNyArMzIzMyw2IEBACiAgICAgaWYgKG5vZGUgPT0gbnVsbHB0cikKICAgICB7CiAgICAgICAg
IHVuYXJ5T3BFcnJvcihsb2MsIEdldE9wZXJhdG9yU3RyaW5nKG9wKSwgY2hpbGQtPmdldENvbXBs
ZXRlU3RyaW5nKCkpOwotICAgICAgICByZWNvdmVyKCk7CiAgICAgICAgIHJldHVybiBjaGlsZDsK
ICAgICB9CiAgICAgcmV0dXJuIG5vZGU7CkBAIC0zNTUxLDggKzMyNDIsNyBAQAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpjaGls
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRTb3VyY2VMb2MgJmxvYykKIHsKLSAgICBpZiAobFZhbHVlRXJyb3JDaGVjayhsb2MsIEdldE9w
ZXJhdG9yU3RyaW5nKG9wKSwgY2hpbGQpKQotICAgICAgICByZWNvdmVyKCk7CisgICAgY2hlY2tD
YW5CZUxWYWx1ZShsb2MsIEdldE9wZXJhdG9yU3RyaW5nKG9wKSwgY2hpbGQpOwogICAgIHJldHVy
biBhZGRVbmFyeU1hdGgob3AsIGNoaWxkLCBsb2MpOwogfQogCkBAIC0zNTYxLDYgKzMyNTEsMjgg
QEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQg
KnJpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRT
b3VyY2VMb2MgJmxvYykKIHsKKyAgICBpZiAobGVmdC0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpIHx8
IHJpZ2h0LT5nZXRUeXBlKCkuZ2V0U3RydWN0KCkpCisgICAgeworICAgICAgICBzd2l0Y2ggKG9w
KQorICAgICAgICB7CisgICAgICAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0U3RydWN0OgorICAg
ICAgICAgICAgICAgIEFTU0VSVChsZWZ0LT5nZXRUeXBlKCkuZ2V0U3RydWN0KCkpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFT3BFcXVhbDoKKyAgICAgICAgICAg
IGNhc2UgRU9wTm90RXF1YWw6CisgICAgICAgICAgICBjYXNlIEVPcEFzc2lnbjoKKyAgICAgICAg
ICAgIGNhc2UgRU9wSW5pdGlhbGl6ZToKKyAgICAgICAgICAgICAgICBpZiAobGVmdC0+Z2V0VHlw
ZSgpICE9IHJpZ2h0LT5nZXRUeXBlKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBlcnJvcihsb2Ms
ICJJbnZhbGlkIG9wZXJhdGlvbiBmb3Igc3RydWN0cyIsIEdldE9wZXJhdG9yU3RyaW5nKG9wKSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCiAgICAg
aWYgKGxlZnQtPmlzQXJyYXkoKSB8fCByaWdodC0+aXNBcnJheSgpKQogICAgIHsKICAgICAgICAg
aWYgKG1TaGFkZXJWZXJzaW9uIDwgMzAwKQpAQCAtMzYzNCw4ICszMzQ2LDEwIEBACiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICAvLyBDaGVjayB0aGF0IHR5cGUgc2l6ZXMgbWF0
Y2ggZXhhY3RseSBvbiBvcHMgdGhhdCByZXF1aXJlIHRoYXQuCi0gICAgLy8gQWxzbyBjaGVjayBy
ZXN0cmljdGlvbnMgZm9yIHN0cnVjdHMgdGhhdCBjb250YWluIGFycmF5cyBvciBzYW1wbGVycy4K
KyAgICAvLyBDaGVjayB0aGF0OgorICAgIC8vIDEuIFR5cGUgc2l6ZXMgbWF0Y2ggZXhhY3RseSBv
biBvcHMgdGhhdCByZXF1aXJlIHRoYXQuCisgICAgLy8gMi4gUmVzdHJpY3Rpb25zIGZvciBzdHJ1
Y3RzIHRoYXQgY29udGFpbiBhcnJheXMgb3Igc2FtcGxlcnMgYXJlIHJlc3BlY3RlZC4KKyAgICAv
LyAzLiBBcml0aG1ldGljIG9wIHR5cGUgZGltZW5zaW9uYWxpdHkgcmVzdHJpY3Rpb25zIGZvciBv
cHMgb3RoZXIgdGhhbiBtdWx0aXBseSBhcmUgcmVzcGVjdGVkLgogICAgIHN3aXRjaCAob3ApCiAg
ICAgewogICAgICAgICBjYXNlIEVPcEFzc2lnbjoKQEAgLTM2NjgsNiArMzM4Miw0OCBAQAogICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEFkZDoKKyAgICAgICAgY2FzZSBF
T3BTdWI6CisgICAgICAgIGNhc2UgRU9wRGl2OgorICAgICAgICBjYXNlIEVPcElNb2Q6CisgICAg
ICAgIGNhc2UgRU9wQml0U2hpZnRMZWZ0OgorICAgICAgICBjYXNlIEVPcEJpdFNoaWZ0UmlnaHQ6
CisgICAgICAgIGNhc2UgRU9wQml0d2lzZUFuZDoKKyAgICAgICAgY2FzZSBFT3BCaXR3aXNlWG9y
OgorICAgICAgICBjYXNlIEVPcEJpdHdpc2VPcjoKKyAgICAgICAgY2FzZSBFT3BBZGRBc3NpZ246
CisgICAgICAgIGNhc2UgRU9wU3ViQXNzaWduOgorICAgICAgICBjYXNlIEVPcERpdkFzc2lnbjoK
KyAgICAgICAgY2FzZSBFT3BJTW9kQXNzaWduOgorICAgICAgICBjYXNlIEVPcEJpdFNoaWZ0TGVm
dEFzc2lnbjoKKyAgICAgICAgY2FzZSBFT3BCaXRTaGlmdFJpZ2h0QXNzaWduOgorICAgICAgICBj
YXNlIEVPcEJpdHdpc2VBbmRBc3NpZ246CisgICAgICAgIGNhc2UgRU9wQml0d2lzZVhvckFzc2ln
bjoKKyAgICAgICAgY2FzZSBFT3BCaXR3aXNlT3JBc3NpZ246CisgICAgICAgICAgICBpZiAoKGxl
ZnQtPmlzTWF0cml4KCkgJiYgcmlnaHQtPmlzVmVjdG9yKCkpIHx8IChsZWZ0LT5pc1ZlY3Rvcigp
ICYmIHJpZ2h0LT5pc01hdHJpeCgpKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEFyZSB0aGUgc2l6
ZXMgY29tcGF0aWJsZT8KKyAgICAgICAgICAgIGlmIChsZWZ0LT5nZXROb21pbmFsU2l6ZSgpICE9
IHJpZ2h0LT5nZXROb21pbmFsU2l6ZSgpIHx8CisgICAgICAgICAgICAgICAgbGVmdC0+Z2V0U2Vj
b25kYXJ5U2l6ZSgpICE9IHJpZ2h0LT5nZXRTZWNvbmRhcnlTaXplKCkpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgLy8gSWYgdGhlIG5vbWluYWwgc2l6ZXMgb2Ygb3BlcmFuZHMgZG8g
bm90IG1hdGNoOgorICAgICAgICAgICAgICAgIC8vIE9uZSBvZiB0aGVtIG11c3QgYmUgYSBzY2Fs
YXIuCisgICAgICAgICAgICAgICAgaWYgKCFsZWZ0LT5pc1NjYWxhcigpICYmICFyaWdodC0+aXNT
Y2FsYXIoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAg
ICAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgY29tcG91bmQgYXNzaWdubWVudCBvdGhlciB0aGFuIG11
bHRpcGx5LWFzc2lnbiwKKyAgICAgICAgICAgICAgICAvLyB0aGUgcmlnaHQgc2lkZSBuZWVkcyB0
byBiZSBhIHNjYWxhci4gT3RoZXJ3aXNlIGEgdmVjdG9yL21hdHJpeAorICAgICAgICAgICAgICAg
IC8vIHdvdWxkIGJlIGFzc2lnbmVkIHRvIGEgc2NhbGFyLiBBIHNjYWxhciBjYW4ndCBiZSBzaGlm
dGVkIGJ5IGEKKyAgICAgICAgICAgICAgICAvLyB2ZWN0b3IgZWl0aGVyLgorICAgICAgICAgICAg
ICAgIGlmICghcmlnaHQtPmlzU2NhbGFyKCkgJiYKKyAgICAgICAgICAgICAgICAgICAgKElzQXNz
aWdubWVudChvcCkgfHwgb3AgPT0gRU9wQml0U2hpZnRMZWZ0IHx8IG9wID09IEVPcEJpdFNoaWZ0
UmlnaHQpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwogICAgIH0KQEAgLTM2NzUsNiArMzQzMSw0OSBAQAogICAgIHJldHVybiB0cnVlOwogfQogCiti
b29sIFRQYXJzZUNvbnRleHQ6OmlzTXVsdGlwbGljYXRpb25UeXBlQ29tYmluYXRpb25WYWxpZChU
T3BlcmF0b3Igb3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUVHlwZSAmbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZyaWdodCkKK3sK
KyAgICBzd2l0Y2ggKG9wKQorICAgIHsKKyAgICAgICAgY2FzZSBFT3BNdWw6CisgICAgICAgIGNh
c2UgRU9wTXVsQXNzaWduOgorICAgICAgICAgICAgcmV0dXJuIGxlZnQuZ2V0Tm9taW5hbFNpemUo
KSA9PSByaWdodC5nZXROb21pbmFsU2l6ZSgpICYmCisgICAgICAgICAgICAgICAgICAgbGVmdC5n
ZXRTZWNvbmRhcnlTaXplKCkgPT0gcmlnaHQuZ2V0U2Vjb25kYXJ5U2l6ZSgpOworICAgICAgICBj
YXNlIEVPcFZlY3RvclRpbWVzU2NhbGFyOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIGNhc2UgRU9wVmVjdG9yVGltZXNTY2FsYXJBc3NpZ246CisgICAgICAgICAgICBBU1NFUlQo
IWxlZnQuaXNNYXRyaXgoKSAmJiAhcmlnaHQuaXNNYXRyaXgoKSk7CisgICAgICAgICAgICByZXR1
cm4gbGVmdC5pc1ZlY3RvcigpICYmICFyaWdodC5pc1ZlY3RvcigpOworICAgICAgICBjYXNlIEVP
cFZlY3RvclRpbWVzTWF0cml4OgorICAgICAgICAgICAgcmV0dXJuIGxlZnQuZ2V0Tm9taW5hbFNp
emUoKSA9PSByaWdodC5nZXRSb3dzKCk7CisgICAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNNYXRy
aXhBc3NpZ246CisgICAgICAgICAgICBBU1NFUlQoIWxlZnQuaXNNYXRyaXgoKSAmJiByaWdodC5p
c01hdHJpeCgpKTsKKyAgICAgICAgICAgIHJldHVybiBsZWZ0LmlzVmVjdG9yKCkgJiYgbGVmdC5n
ZXROb21pbmFsU2l6ZSgpID09IHJpZ2h0LmdldFJvd3MoKSAmJgorICAgICAgICAgICAgICAgICAg
IGxlZnQuZ2V0Tm9taW5hbFNpemUoKSA9PSByaWdodC5nZXRDb2xzKCk7CisgICAgICAgIGNhc2Ug
RU9wTWF0cml4VGltZXNWZWN0b3I6CisgICAgICAgICAgICByZXR1cm4gbGVmdC5nZXRDb2xzKCkg
PT0gcmlnaHQuZ2V0Tm9taW5hbFNpemUoKTsKKyAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1Nj
YWxhcjoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBjYXNlIEVPcE1hdHJpeFRp
bWVzU2NhbGFyQXNzaWduOgorICAgICAgICAgICAgQVNTRVJUKGxlZnQuaXNNYXRyaXgoKSAmJiAh
cmlnaHQuaXNNYXRyaXgoKSk7CisgICAgICAgICAgICByZXR1cm4gIXJpZ2h0LmlzVmVjdG9yKCk7
CisgICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNNYXRyaXg6CisgICAgICAgICAgICByZXR1cm4g
bGVmdC5nZXRDb2xzKCkgPT0gcmlnaHQuZ2V0Um93cygpOworICAgICAgICBjYXNlIEVPcE1hdHJp
eFRpbWVzTWF0cml4QXNzaWduOgorICAgICAgICAgICAgQVNTRVJUKGxlZnQuaXNNYXRyaXgoKSAm
JiByaWdodC5pc01hdHJpeCgpKTsKKyAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgdHdv
IHRoaW5nczoKKyAgICAgICAgICAgIC8vIDEuIFRoZSBtYXRyaXggbXVsdGlwbGljYXRpb24gc3Rl
cCBpcyB2YWxpZC4KKyAgICAgICAgICAgIC8vIDIuIFRoZSByZXN1bHQgd2lsbCBoYXZlIHRoZSBz
YW1lIG51bWJlciBvZiBjb2x1bW5zIGFzIHRoZSBsdmFsdWUuCisgICAgICAgICAgICByZXR1cm4g
bGVmdC5nZXRDb2xzKCkgPT0gcmlnaHQuZ2V0Um93cygpICYmIGxlZnQuZ2V0Q29scygpID09IHJp
Z2h0LmdldENvbHMoKTsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKIFRJbnRlcm1UeXBl
ZCAqVFBhcnNlQ29udGV4dDo6YWRkQmluYXJ5TWF0aEludGVybmFsKFRPcGVyYXRvciBvcCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1U
eXBlZCAqbGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRJbnRlcm1UeXBlZCAqcmlnaHQsCkBAIC0zNjkyLDggKzM0OTEsOSBAQAogICAgICAg
ICBjYXNlIEVPcEdyZWF0ZXJUaGFuOgogICAgICAgICBjYXNlIEVPcExlc3NUaGFuRXF1YWw6CiAg
ICAgICAgIGNhc2UgRU9wR3JlYXRlclRoYW5FcXVhbDoKLSAgICAgICAgICAgIEFTU0VSVCghbGVm
dC0+aXNBcnJheSgpICYmICFyaWdodC0+aXNBcnJheSgpKTsKLSAgICAgICAgICAgIGlmIChsZWZ0
LT5pc01hdHJpeCgpIHx8IGxlZnQtPmlzVmVjdG9yKCkgfHwgbGVmdC0+Z2V0QmFzaWNUeXBlKCkg
PT0gRWJ0U3RydWN0KQorICAgICAgICAgICAgQVNTRVJUKCFsZWZ0LT5pc0FycmF5KCkgJiYgIXJp
Z2h0LT5pc0FycmF5KCkgJiYgIWxlZnQtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKSAmJgorICAgICAg
ICAgICAgICAgICAgICFyaWdodC0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpKTsKKyAgICAgICAgICAg
IGlmIChsZWZ0LT5pc01hdHJpeCgpIHx8IGxlZnQtPmlzVmVjdG9yKCkpCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICB9CkBAIC0zNzAx
LDcgKzM1MDEsOCBAQAogICAgICAgICBjYXNlIEVPcExvZ2ljYWxPcjoKICAgICAgICAgY2FzZSBF
T3BMb2dpY2FsWG9yOgogICAgICAgICBjYXNlIEVPcExvZ2ljYWxBbmQ6Ci0gICAgICAgICAgICBB
U1NFUlQoIWxlZnQtPmlzQXJyYXkoKSAmJiAhcmlnaHQtPmlzQXJyYXkoKSk7CisgICAgICAgICAg
ICBBU1NFUlQoIWxlZnQtPmlzQXJyYXkoKSAmJiAhcmlnaHQtPmlzQXJyYXkoKSAmJiAhbGVmdC0+
Z2V0VHlwZSgpLmdldFN0cnVjdCgpICYmCisgICAgICAgICAgICAgICAgICAgIXJpZ2h0LT5nZXRU
eXBlKCkuZ2V0U3RydWN0KCkpOwogICAgICAgICAgICAgaWYgKGxlZnQtPmdldEJhc2ljVHlwZSgp
ICE9IEVidEJvb2wgfHwgbGVmdC0+aXNNYXRyaXgoKSB8fCBsZWZ0LT5pc1ZlY3RvcigpKQogICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzcxMSwyOCAr
MzUxMiw0NCBAQAogICAgICAgICBjYXNlIEVPcFN1YjoKICAgICAgICAgY2FzZSBFT3BEaXY6CiAg
ICAgICAgIGNhc2UgRU9wTXVsOgotICAgICAgICAgICAgQVNTRVJUKCFsZWZ0LT5pc0FycmF5KCkg
JiYgIXJpZ2h0LT5pc0FycmF5KCkpOwotICAgICAgICAgICAgaWYgKGxlZnQtPmdldEJhc2ljVHlw
ZSgpID09IEVidFN0cnVjdCB8fCBsZWZ0LT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRCb29sKQorICAg
ICAgICAgICAgQVNTRVJUKCFsZWZ0LT5pc0FycmF5KCkgJiYgIXJpZ2h0LT5pc0FycmF5KCkgJiYg
IWxlZnQtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKSAmJgorICAgICAgICAgICAgICAgICAgICFyaWdo
dC0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpKTsKKyAgICAgICAgICAgIGlmIChsZWZ0LT5nZXRCYXNp
Y1R5cGUoKSA9PSBFYnRCb29sKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgRU9wSU1vZDoKLSAgICAgICAgICAgIEFTU0VSVCghbGVmdC0+aXNBcnJheSgpICYmICFyaWdo
dC0+aXNBcnJheSgpKTsKKyAgICAgICAgICAgIEFTU0VSVCghbGVmdC0+aXNBcnJheSgpICYmICFy
aWdodC0+aXNBcnJheSgpICYmICFsZWZ0LT5nZXRUeXBlKCkuZ2V0U3RydWN0KCkgJiYKKyAgICAg
ICAgICAgICAgICAgICAhcmlnaHQtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKSk7CiAgICAgICAgICAg
ICAvLyBOb3RlIHRoYXQgdGhpcyBpcyBvbmx5IGZvciB0aGUgJSBvcGVyYXRvciwgbm90IGZvciBt
b2QoKQotICAgICAgICAgICAgaWYgKGxlZnQtPmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCB8
fCBsZWZ0LT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRCb29sIHx8Ci0gICAgICAgICAgICAgICAgbGVm
dC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQpCisgICAgICAgICAgICBpZiAobGVmdC0+Z2V0
QmFzaWNUeXBlKCkgPT0gRWJ0Qm9vbCB8fCBsZWZ0LT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9h
dCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAvLyBOb3RlIHRoYXQgZm9yIGJp
dHdpc2Ugb3BzLCB0eXBlIGNoZWNraW5nIGlzIGRvbmUgaW4gcHJvbW90ZSgpIHRvCi0gICAgICAg
IC8vIHNoYXJlIGNvZGUgYmV0d2VlbiBvcHMgYW5kIGNvbXBvdW5kIGFzc2lnbm1lbnQKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHJldHVybiBpbnRl
cm1lZGlhdGUuYWRkQmluYXJ5TWF0aChvcCwgbGVmdCwgcmlnaHQsIGxvYyk7CisgICAgaWYgKG9w
ID09IEVPcE11bCkKKyAgICB7CisgICAgICAgIG9wID0gVEludGVybUJpbmFyeTo6R2V0TXVsT3BC
YXNlZE9uT3BlcmFuZHMobGVmdC0+Z2V0VHlwZSgpLCByaWdodC0+Z2V0VHlwZSgpKTsKKyAgICAg
ICAgaWYgKCFpc011bHRpcGxpY2F0aW9uVHlwZUNvbWJpbmF0aW9uVmFsaWQob3AsIGxlZnQtPmdl
dFR5cGUoKSwgcmlnaHQtPmdldFR5cGUoKSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICB9CisgICAgfQorCisgICAgVEludGVybUJpbmFyeSAqbm9kZSA9
IG5ldyBUSW50ZXJtQmluYXJ5KG9wLCBsZWZ0LCByaWdodCk7CisgICAgbm9kZS0+c2V0TGluZShs
b2MpOworCisgICAgLy8gU2VlIGlmIHdlIGNhbiBmb2xkIGNvbnN0YW50cy4KKyAgICBUSW50ZXJt
VHlwZWQgKmZvbGRlZE5vZGUgPSBub2RlLT5mb2xkKCZtRGlhZ25vc3RpY3MpOworICAgIGlmIChm
b2xkZWROb2RlKQorICAgICAgICByZXR1cm4gZm9sZGVkTm9kZTsKKworICAgIHJldHVybiBub2Rl
OwogfQogCiBUSW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6OmFkZEJpbmFyeU1hdGgoVE9wZXJh
dG9yIG9wLApAQCAtMzc0NSw3ICszNTYyLDYgQEAKICAgICB7CiAgICAgICAgIGJpbmFyeU9wRXJy
b3IobG9jLCBHZXRPcGVyYXRvclN0cmluZyhvcCksIGxlZnQtPmdldENvbXBsZXRlU3RyaW5nKCks
CiAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQtPmdldENvbXBsZXRlU3RyaW5nKCkpOwotICAg
ICAgICByZWNvdmVyKCk7CiAgICAgICAgIHJldHVybiBsZWZ0OwogICAgIH0KICAgICByZXR1cm4g
bm9kZTsKQEAgLTM3NjEsNyArMzU3Nyw2IEBACiAgICAgewogICAgICAgICBiaW5hcnlPcEVycm9y
KGxvYywgR2V0T3BlcmF0b3JTdHJpbmcob3ApLCBsZWZ0LT5nZXRDb21wbGV0ZVN0cmluZygpLAog
ICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKLSAgICAg
ICAgcmVjb3ZlcigpOwogICAgICAgICBUQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBU
Q29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsK
ICAgICAgICAgcmV0dXJuIGludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXks
IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLApAQCAtMzc3Nyw3ICszNTky
LDE4IEBACiB7CiAgICAgaWYgKGJpbmFyeU9wQ29tbW9uQ2hlY2sob3AsIGxlZnQsIHJpZ2h0LCBs
b2MpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGludGVybWVkaWF0ZS5hZGRBc3NpZ24ob3AsIGxl
ZnQsIHJpZ2h0LCBsb2MpOworICAgICAgICBpZiAob3AgPT0gRU9wTXVsQXNzaWduKQorICAgICAg
ICB7CisgICAgICAgICAgICBvcCA9IFRJbnRlcm1CaW5hcnk6OkdldE11bEFzc2lnbk9wQmFzZWRP
bk9wZXJhbmRzKGxlZnQtPmdldFR5cGUoKSwgcmlnaHQtPmdldFR5cGUoKSk7CisgICAgICAgICAg
ICBpZiAoIWlzTXVsdGlwbGljYXRpb25UeXBlQ29tYmluYXRpb25WYWxpZChvcCwgbGVmdC0+Z2V0
VHlwZSgpLCByaWdodC0+Z2V0VHlwZSgpKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBUSW50
ZXJtQmluYXJ5ICpub2RlID0gbmV3IFRJbnRlcm1CaW5hcnkob3AsIGxlZnQsIHJpZ2h0KTsKKyAg
ICAgICAgbm9kZS0+c2V0TGluZShsb2MpOworCisgICAgICAgIHJldHVybiBub2RlOwogICAgIH0K
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTM3OTEsNyArMzYxNyw2IEBACiAgICAgaWYgKG5v
ZGUgPT0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIGFzc2lnbkVycm9yKGxvYywgImFzc2lnbiIs
IGxlZnQtPmdldENvbXBsZXRlU3RyaW5nKCksIHJpZ2h0LT5nZXRDb21wbGV0ZVN0cmluZygpKTsK
LSAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICByZXR1cm4gbGVmdDsKICAgICB9CiAgICAgcmV0
dXJuIG5vZGU7CkBAIC0zODAxLDcgKzM2MjYsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpyaWdodCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jKQogewotICAgIHJldHVybiBp
bnRlcm1lZGlhdGUuYWRkQ29tbWEobGVmdCwgcmlnaHQsIGxvYywgbVNoYWRlclZlcnNpb24pOwor
ICAgIC8vIFdlYkdMMiBzZWN0aW9uIDUuMjYsIHRoZSBmb2xsb3dpbmcgcmVzdWx0cyBpbiBhbiBl
cnJvcjoKKyAgICAvLyAiU2VxdWVuY2Ugb3BlcmF0b3IgYXBwbGllZCB0byB2b2lkLCBhcnJheXMs
IG9yIHN0cnVjdHMgY29udGFpbmluZyBhcnJheXMiCisgICAgaWYgKG1TaGFkZXJTcGVjID09IFNI
X1dFQkdMMl9TUEVDICYmIChsZWZ0LT5pc0FycmF5KCkgfHwgbGVmdC0+Z2V0QmFzaWNUeXBlKCkg
PT0gRWJ0Vm9pZCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bGVmdC0+Z2V0VHlwZSgpLmlzU3RydWN0dXJlQ29udGFpbmluZ0FycmF5cygpIHx8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodC0+aXNBcnJheSgpIHx8IHJp
Z2h0LT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRWb2lkIHx8CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByaWdodC0+Z2V0VHlwZSgpLmlzU3RydWN0dXJlQ29udGFpbmlu
Z0FycmF5cygpKSkKKyAgICB7CisgICAgICAgIGVycm9yKGxvYywKKyAgICAgICAgICAgICAgInNl
cXVlbmNlIG9wZXJhdG9yIGlzIG5vdCBhbGxvd2VkIGZvciB2b2lkLCBhcnJheXMsIG9yIHN0cnVj
dHMgY29udGFpbmluZyBhcnJheXMiLAorICAgICAgICAgICAgICAiLCIpOworICAgIH0KKworICAg
IHJldHVybiBUSW50ZXJtZWRpYXRlOjpBZGRDb21tYShsZWZ0LCByaWdodCwgbG9jLCBtU2hhZGVy
VmVyc2lvbik7CiB9CiAKIFRJbnRlcm1CcmFuY2ggKlRQYXJzZUNvbnRleHQ6OmFkZEJyYW5jaChU
T3BlcmF0b3Igb3AsIGNvbnN0IFRTb3VyY2VMb2MgJmxvYykKQEAgLTM4MTIsNyArMzY0OSw2IEBA
CiAgICAgICAgICAgICBpZiAobUxvb3BOZXN0aW5nTGV2ZWwgPD0gMCkKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICBlcnJvcihsb2MsICJjb250aW51ZSBzdGF0ZW1lbnQgb25seSBhbGxv
d2VkIGluIGxvb3BzIiwgIiIpOwotICAgICAgICAgICAgICAgIHJlY292ZXIoKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEVPcEJyZWFrOgpAQCAtMzgx
OSw3ICszNjU1LDYgQEAKICAgICAgICAgICAgIGlmIChtTG9vcE5lc3RpbmdMZXZlbCA8PSAwICYm
IG1Td2l0Y2hOZXN0aW5nTGV2ZWwgPD0gMCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICBlcnJvcihsb2MsICJicmVhayBzdGF0ZW1lbnQgb25seSBhbGxvd2VkIGluIGxvb3BzIGFuZCBz
d2l0Y2ggc3RhdGVtZW50cyIsICIiKTsKLSAgICAgICAgICAgICAgICByZWNvdmVyKCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBFT3BSZXR1cm46CkBA
IC0zODI2LDcgKzM2NjEsNiBAQAogICAgICAgICAgICAgaWYgKG1DdXJyZW50RnVuY3Rpb25UeXBl
LT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRWb2lkKQogICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgIGVycm9yKGxvYywgIm5vbi12b2lkIGZ1bmN0aW9uIG11c3QgcmV0dXJuIGEgdmFsdWUiLCAi
cmV0dXJuIik7Ci0gICAgICAgICAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0zODQ1LDEyICszNjc5LDEwIEBA
CiAgICAgaWYgKG1DdXJyZW50RnVuY3Rpb25UeXBlLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRWb2lk
KQogICAgIHsKICAgICAgICAgZXJyb3IobG9jLCAidm9pZCBmdW5jdGlvbiBjYW5ub3QgcmV0dXJu
IGEgdmFsdWUiLCAicmV0dXJuIik7Ci0gICAgICAgIHJlY292ZXIoKTsKICAgICB9CiAgICAgZWxz
ZSBpZiAoKm1DdXJyZW50RnVuY3Rpb25UeXBlICE9IHJldHVyblZhbHVlLT5nZXRUeXBlKCkpCiAg
ICAgewogICAgICAgICBlcnJvcihsb2MsICJmdW5jdGlvbiByZXR1cm4gaXMgbm90IG1hdGNoaW5n
IHR5cGU6IiwgInJldHVybiIpOwotICAgICAgICByZWNvdmVyKCk7CiAgICAgfQogICAgIHJldHVy
biBpbnRlcm1lZGlhdGUuYWRkQnJhbmNoKG9wLCByZXR1cm5WYWx1ZSwgbG9jKTsKIH0KQEAgLTM4
NTgsNyArMzY5MCw3IEBACiB2b2lkIFRQYXJzZUNvbnRleHQ6OmNoZWNrVGV4dHVyZU9mZnNldENv
bnN0KFRJbnRlcm1BZ2dyZWdhdGUgKmZ1bmN0aW9uQ2FsbCkKIHsKICAgICBBU1NFUlQoIWZ1bmN0
aW9uQ2FsbC0+aXNVc2VyRGVmaW5lZCgpKTsKLSAgICBjb25zdCBUU3RyaW5nICZuYW1lICAgICAg
ICA9IGZ1bmN0aW9uQ2FsbC0+Z2V0TmFtZSgpOworICAgIGNvbnN0IFRTdHJpbmcgJm5hbWUgICAg
ICAgID0gZnVuY3Rpb25DYWxsLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0TmFtZSgpOwog
ICAgIFRJbnRlcm1Ob2RlICpvZmZzZXQgICAgICAgID0gbnVsbHB0cjsKICAgICBUSW50ZXJtU2Vx
dWVuY2UgKmFyZ3VtZW50cyA9IGZ1bmN0aW9uQ2FsbC0+Z2V0U2VxdWVuY2UoKTsKICAgICBpZiAo
bmFtZS5jb21wYXJlKDAsIDE2LCAidGV4ZWxGZXRjaE9mZnNldCIpID09IDAgfHwKQEAgLTM4ODQs
NyArMzcxNiw2IEBACiAgICAgICAgICAgICBUU3RyaW5nIHVubWFuZ2xlZE5hbWUgPSBURnVuY3Rp
b246OnVubWFuZ2xlTmFtZShuYW1lKTsKICAgICAgICAgICAgIGVycm9yKGZ1bmN0aW9uQ2FsbC0+
Z2V0TGluZSgpLCAiVGV4dHVyZSBvZmZzZXQgbXVzdCBiZSBhIGNvbnN0YW50IGV4cHJlc3Npb24i
LAogICAgICAgICAgICAgICAgICAgdW5tYW5nbGVkTmFtZS5jX3N0cigpKTsKLSAgICAgICAgICAg
IHJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKQEAgLTM5MDEs
NyArMzczMiw2IEBACiAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHRva2VuID0gdG9r
ZW5TdHJlYW0uc3RyKCk7CiAgICAgICAgICAgICAgICAgICAgIGVycm9yKG9mZnNldC0+Z2V0TGlu
ZSgpLCAiVGV4dHVyZSBvZmZzZXQgdmFsdWUgb3V0IG9mIHZhbGlkIHJhbmdlIiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdG9rZW4uY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJl
Y292ZXIoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTM5MjYsMTcgKzM3NTYsMTQgQEAKICAgICAgICAgaWYgKGZuQ2FsbC0+Z2V0TmFtZSgpICE9ICJs
ZW5ndGgiKQogICAgICAgICB7CiAgICAgICAgICAgICBlcnJvcihsb2MsICJpbnZhbGlkIG1ldGhv
ZCIsIGZuQ2FsbC0+Z2V0TmFtZSgpLmNfc3RyKCkpOwotICAgICAgICAgICAgcmVjb3ZlcigpOwog
ICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKHBhcmFtTm9kZSAhPSBudWxscHRyKQogICAgICAg
ICB7CiAgICAgICAgICAgICBlcnJvcihsb2MsICJtZXRob2QgdGFrZXMgbm8gcGFyYW1ldGVycyIs
ICJsZW5ndGgiKTsKLSAgICAgICAgICAgIHJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICBl
bHNlIGlmICh0eXBlZFRoaXMgPT0gbnVsbHB0ciB8fCAhdHlwZWRUaGlzLT5pc0FycmF5KCkpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGVycm9yKGxvYywgImxlbmd0aCBjYW4gb25seSBiZSBjYWxs
ZWQgb24gYXJyYXlzIiwgImxlbmd0aCIpOwotICAgICAgICAgICAgcmVjb3ZlcigpOwogICAgICAg
ICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewpAQCAtMzk1NCw3ICszNzgxLDYgQEAKICAgICAg
ICAgICAgICAgICAvLyBsZW5ndGggbWV0aG9kIGFwcGxpZWQiLgogICAgICAgICAgICAgICAgIGVy
cm9yKGxvYywgImxlbmd0aCBjYW4gb25seSBiZSBjYWxsZWQgb24gYXJyYXkgbmFtZXMsIG5vdCBv
biBhcnJheSBleHByZXNzaW9ucyIsCiAgICAgICAgICAgICAgICAgICAgICAgImxlbmd0aCIpOwot
ICAgICAgICAgICAgICAgIHJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
ICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoYXJyYXlTaXplKTsKQEAgLTM5NjMsMjYgKzM3ODks
OCBAQAogICAgIH0KICAgICBlbHNlIGlmIChvcCAhPSBFT3BOdWxsKQogICAgIHsKLSAgICAgICAg
Ly8KICAgICAgICAgLy8gVGhlbiB0aGlzIHNob3VsZCBiZSBhIGNvbnN0cnVjdG9yLgotICAgICAg
ICAvLyBEb24ndCBnbyB0aHJvdWdoIHRoZSBzeW1ib2wgdGFibGUgZm9yIGNvbnN0cnVjdG9ycy4K
LSAgICAgICAgLy8gVGhlaXIgcGFyYW1ldGVycyB3aWxsIGJlIHZlcmlmaWVkIGFsZ29yaXRobWlj
YWxseS4KLSAgICAgICAgLy8KLSAgICAgICAgVFR5cGUgdHlwZShFYnRWb2lkLCBFYnBVbmRlZmlu
ZWQpOyAgLy8gdXNlIHRoaXMgdG8gZ2V0IHRoZSB0eXBlIGJhY2sKLSAgICAgICAgaWYgKCFjb25z
dHJ1Y3RvckVycm9yQ2hlY2sobG9jLCBwYXJhbU5vZGUsICpmbkNhbGwsIG9wLCAmdHlwZSkpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBJdCdzIGEgY29uc3RydWN0
b3IsIG9mIHR5cGUgJ3R5cGUnLgotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIGNhbGxOb2Rl
ID0gYWRkQ29uc3RydWN0b3IocGFyYW1Ob2RlLCAmdHlwZSwgb3AsIGZuQ2FsbCwgbG9jKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmIChjYWxsTm9kZSA9PSBudWxscHRyKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZWNvdmVyKCk7Ci0gICAgICAgICAgICBjYWxsTm9kZSA9IGludGVybWVkaWF0
ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcihudWxscHRyLCBvcCwgbG9jKTsKLSAgICAgICAgfQotICAg
ICAgICBjYWxsTm9kZS0+c2V0VHlwZSh0eXBlKTsKKyAgICAgICAgY2FsbE5vZGUgPSBhZGRDb25z
dHJ1Y3RvcihwYXJhbU5vZGUsIG9wLCBmbkNhbGwsIGxvYyk7CiAgICAgfQogICAgIGVsc2UKICAg
ICB7CkBAIC0zOTk3LDEwICszODA1LDkgQEAKICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAv
LyBBIGRlY2xhcmVkIGZ1bmN0aW9uLgogICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIGlmIChi
dWlsdEluICYmICFmbkNhbmRpZGF0ZS0+Z2V0RXh0ZW5zaW9uKCkuZW1wdHkoKSAmJgotICAgICAg
ICAgICAgICAgIGV4dGVuc2lvbkVycm9yQ2hlY2sobG9jLCBmbkNhbmRpZGF0ZS0+Z2V0RXh0ZW5z
aW9uKCkpKQorICAgICAgICAgICAgaWYgKGJ1aWx0SW4gJiYgIWZuQ2FuZGlkYXRlLT5nZXRFeHRl
bnNpb24oKS5lbXB0eSgpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJlY292ZXIo
KTsKKyAgICAgICAgICAgICAgICBjaGVja0NhblVzZUV4dGVuc2lvbihsb2MsIGZuQ2FuZGlkYXRl
LT5nZXRFeHRlbnNpb24oKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBvcCA9IGZuQ2Fu
ZGlkYXRlLT5nZXRCdWlsdEluT3AoKTsKICAgICAgICAgICAgIGlmIChidWlsdEluICYmIG9wICE9
IEVPcE51bGwpCkBAIC00MDQ2LDcgKzM4NTMsOCBAQAogCiAgICAgICAgICAgICAgICAgICAgIC8v
IFNlZSBpZiB3ZSBjYW4gY29uc3RhbnQgZm9sZCBhIGJ1aWx0LWluLiBOb3RlIHRoYXQgdGhpcyBt
YXkgYmUgcG9zc2libGUgZXZlbgogICAgICAgICAgICAgICAgICAgICAvLyBpZiBpdCBpcyBub3Qg
Y29uc3QtcXVhbGlmaWVkLgotICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmZvbGRl
ZE5vZGUgPSBpbnRlcm1lZGlhdGUuZm9sZEFnZ3JlZ2F0ZUJ1aWx0SW4oYWdncmVnYXRlKTsKKyAg
ICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpmb2xkZWROb2RlID0KKyAgICAgICAgICAg
ICAgICAgICAgICAgIGludGVybWVkaWF0ZS5mb2xkQWdncmVnYXRlQnVpbHRJbihhZ2dyZWdhdGUs
ICZtRGlhZ25vc3RpY3MpOwogICAgICAgICAgICAgICAgICAgICBpZiAoZm9sZGVkTm9kZSkKICAg
ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbE5vZGUgPSBm
b2xkZWROb2RlOwpAQCAtNDA3MSwxMCArMzg3OSw5IEBACiAgICAgICAgICAgICAgICAgLy8gaWYg
YnVpbHRJbiA9PSB0cnVlLCBpdCdzIGRlZmluaXRlbHkgYSBidWlsdEluIGZ1bmN0aW9uIHdpdGgg
RU9wTnVsbAogICAgICAgICAgICAgICAgIGlmICghYnVpbHRJbikKICAgICAgICAgICAgICAgICAg
ICAgYWdncmVnYXRlLT5zZXRVc2VyRGVmaW5lZCgpOwotICAgICAgICAgICAgICAgIGFnZ3JlZ2F0
ZS0+c2V0TmFtZShmbkNhbmRpZGF0ZS0+Z2V0TWFuZ2xlZE5hbWUoKSk7Ci0gICAgICAgICAgICAg
ICAgYWdncmVnYXRlLT5zZXRGdW5jdGlvbklkKGZuQ2FuZGlkYXRlLT5nZXRVbmlxdWVJZCgpKTsK
KyAgICAgICAgICAgICAgICBhZ2dyZWdhdGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5zZXRG
cm9tRnVuY3Rpb24oKmZuQ2FuZGlkYXRlKTsKIAotICAgICAgICAgICAgICAgIC8vIFRoaXMgbmVl
ZHMgdG8gaGFwcGVuIGFmdGVyIHRoZSBuYW1lIGlzIHNldAorICAgICAgICAgICAgICAgIC8vIFRo
aXMgbmVlZHMgdG8gaGFwcGVuIGFmdGVyIHRoZSBmdW5jdGlvbiBpbmZvIGluY2x1ZGluZyBuYW1l
IGlzIHNldAogICAgICAgICAgICAgICAgIGlmIChidWlsdEluKQogICAgICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAgICAgYWdncmVnYXRlLT5zZXRCdWlsdEluRnVuY3Rpb25QcmVjaXNp
b24oKTsKQEAgLTQwOTUsNyArMzkwMiw2IEBACiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRG
Q29uc3QoMC4wZik7CiAgICAgICAgICAgICBjYWxsTm9kZSA9IGludGVybWVkaWF0ZS5hZGRDb25z
dGFudFVuaW9uKHVuaW9uQXJyYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0
KSwgbG9jKTsKLSAgICAgICAgICAgIHJlY292ZXIoKTsKICAgICAgICAgfQogICAgIH0KICAgICBy
ZXR1cm4gY2FsbE5vZGU7CkBAIC00MTAyLDI5ICszOTA4LDM1IEBACiB9CiAKIFRJbnRlcm1UeXBl
ZCAqVFBhcnNlQ29udGV4dDo6YWRkVGVybmFyeVNlbGVjdGlvbihUSW50ZXJtVHlwZWQgKmNvbmQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVy
bVR5cGVkICp0cnVlQmxvY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVEludGVybVR5cGVkICpmYWxzZUJsb2NrLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqdHJ1ZUV4cHJlc3Np
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElu
dGVybVR5cGVkICpmYWxzZUV4cHJlc3Npb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jKQogewotICAgIGlmIChi
b29sRXJyb3JDaGVjayhsb2MsIGNvbmQpKQotICAgICAgICByZWNvdmVyKCk7CisgICAgY2hlY2tJ
c1NjYWxhckJvb2wobG9jLCBjb25kKTsKIAotICAgIGlmICh0cnVlQmxvY2stPmdldFR5cGUoKSAh
PSBmYWxzZUJsb2NrLT5nZXRUeXBlKCkpCisgICAgaWYgKHRydWVFeHByZXNzaW9uLT5nZXRUeXBl
KCkgIT0gZmFsc2VFeHByZXNzaW9uLT5nZXRUeXBlKCkpCiAgICAgewotICAgICAgICBiaW5hcnlP
cEVycm9yKGxvYywgIjoiLCB0cnVlQmxvY2stPmdldENvbXBsZXRlU3RyaW5nKCksIGZhbHNlQmxv
Y2stPmdldENvbXBsZXRlU3RyaW5nKCkpOwotICAgICAgICByZWNvdmVyKCk7Ci0gICAgICAgIHJl
dHVybiBmYWxzZUJsb2NrOworICAgICAgICBiaW5hcnlPcEVycm9yKGxvYywgIjoiLCB0cnVlRXhw
cmVzc2lvbi0+Z2V0Q29tcGxldGVTdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgICAgICBmYWxz
ZUV4cHJlc3Npb24tPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICByZXR1cm4gZmFsc2VF
eHByZXNzaW9uOwogICAgIH0KICAgICAvLyBFU1NMMSBzZWN0aW9ucyA1LjIgYW5kIDUuNzoKICAg
ICAvLyBFU1NMMyBzZWN0aW9uIDUuNzoKICAgICAvLyBUZXJuYXJ5IG9wZXJhdG9yIGlzIG5vdCBh
bW9uZyB0aGUgb3BlcmF0b3JzIGFsbG93ZWQgZm9yIHN0cnVjdHVyZXMvYXJyYXlzLgotICAgIGlm
ICh0cnVlQmxvY2stPmlzQXJyYXkoKSB8fCB0cnVlQmxvY2stPmdldEJhc2ljVHlwZSgpID09IEVi
dFN0cnVjdCkKKyAgICBpZiAodHJ1ZUV4cHJlc3Npb24tPmlzQXJyYXkoKSB8fCB0cnVlRXhwcmVz
c2lvbi0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KQogICAgIHsKICAgICAgICAgZXJyb3Io
bG9jLCAidGVybmFyeSBvcGVyYXRvciBpcyBub3QgYWxsb3dlZCBmb3Igc3RydWN0dXJlcyBvciBh
cnJheXMiLCAiOiIpOwotICAgICAgICByZWNvdmVyKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZUJs
b2NrOworICAgICAgICByZXR1cm4gZmFsc2VFeHByZXNzaW9uOwogICAgIH0KLSAgICByZXR1cm4g
aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbihjb25kLCB0cnVlQmxvY2ssIGZhbHNlQmxvY2ssIGxv
Yyk7CisgICAgLy8gV2ViR0wyIHNlY3Rpb24gNS4yNiwgdGhlIGZvbGxvd2luZyByZXN1bHRzIGlu
IGFuIGVycm9yOgorICAgIC8vICJUZXJuYXJ5IG9wZXJhdG9yIGFwcGxpZWQgdG8gdm9pZCwgYXJy
YXlzLCBvciBzdHJ1Y3RzIGNvbnRhaW5pbmcgYXJyYXlzIgorICAgIGlmIChtU2hhZGVyU3BlYyA9
PSBTSF9XRUJHTDJfU1BFQyAmJiB0cnVlRXhwcmVzc2lvbi0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0
Vm9pZCkKKyAgICB7CisgICAgICAgIGVycm9yKGxvYywgInRlcm5hcnkgb3BlcmF0b3IgaXMgbm90
IGFsbG93ZWQgZm9yIHZvaWQiLCAiOiIpOworICAgICAgICByZXR1cm4gZmFsc2VFeHByZXNzaW9u
OworICAgIH0KKworICAgIHJldHVybiBUSW50ZXJtZWRpYXRlOjpBZGRUZXJuYXJ5U2VsZWN0aW9u
KGNvbmQsIHRydWVFeHByZXNzaW9uLCBmYWxzZUV4cHJlc3Npb24sIGxvYyk7CiB9CiAKIC8vCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9QYXJz
ZUNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9QYXJzZUNvbnRleHQuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUGFyc2VDb250ZXh0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlICJjb21waWxlci90
cmFuc2xhdG9yL0RpcmVjdGl2ZUhhbmRsZXIuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xh
dG9yL0ludGVybWVkaWF0ZS5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvU3ltYm9s
VGFibGUuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1F1YWxpZmllclR5cGVzLmgi
CiAjaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL1ByZXByb2Nlc3Nvci5oIgogCiBzdHJ1
Y3QgVE1hdHJpeEZpZWxkcwpAQCAtMzAsMTggKzMxLDE4IEBACiAgIHB1YmxpYzoKICAgICBUUGFy
c2VDb250ZXh0KFRTeW1ib2xUYWJsZSAmc3ltdCwKICAgICAgICAgICAgICAgICAgIFRFeHRlbnNp
b25CZWhhdmlvciAmZXh0LAotICAgICAgICAgICAgICAgICAgVEludGVybWVkaWF0ZSAmaW50ZXJt
LAogICAgICAgICAgICAgICAgICAgc2g6OkdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAg
U2hTaGFkZXJTcGVjIHNwZWMsCi0gICAgICAgICAgICAgICAgICBpbnQgb3B0aW9ucywKKyAgICAg
ICAgICAgICAgICAgIFNoQ29tcGlsZU9wdGlvbnMgb3B0aW9ucywKICAgICAgICAgICAgICAgICAg
IGJvb2wgY2hlY2tzUHJlY0Vycm9ycywKICAgICAgICAgICAgICAgICAgIFRJbmZvU2luayAmaXMs
CiAgICAgICAgICAgICAgICAgICBjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMgJnJlc291cmNlcykK
LSAgICAgICAgOiBpbnRlcm1lZGlhdGUoaW50ZXJtKSwKKyAgICAgICAgOiBpbnRlcm1lZGlhdGUo
KSwKICAgICAgICAgICBzeW1ib2xUYWJsZShzeW10KSwKICAgICAgICAgICBtRGVmZXJyZWRTaW5n
bGVEZWNsYXJhdGlvbkVycm9yQ2hlY2soZmFsc2UpLAogICAgICAgICAgIG1TaGFkZXJUeXBlKHR5
cGUpLAogICAgICAgICAgIG1TaGFkZXJTcGVjKHNwZWMpLAorICAgICAgICAgIG1Db21waWxlT3B0
aW9ucyhvcHRpb25zKSwKICAgICAgICAgICBtU2hhZGVyVmVyc2lvbigxMDApLAogICAgICAgICAg
IG1UcmVlUm9vdChudWxscHRyKSwKICAgICAgICAgICBtTG9vcE5lc3RpbmdMZXZlbCgwKSwKQEAg
LTUyLDcgKzUzLDcgQEAKICAgICAgICAgICBtQ2hlY2tzUHJlY2lzaW9uRXJyb3JzKGNoZWNrc1By
ZWNFcnJvcnMpLAogICAgICAgICAgIG1GcmFnbWVudFByZWNpc2lvbkhpZ2hPbkVTU0wxKGZhbHNl
KSwKICAgICAgICAgICBtRGVmYXVsdE1hdHJpeFBhY2tpbmcoRW1wQ29sdW1uTWFqb3IpLAotICAg
ICAgICAgIG1EZWZhdWx0QmxvY2tTdG9yYWdlKEVic1NoYXJlZCksCisgICAgICAgICAgbURlZmF1
bHRCbG9ja1N0b3JhZ2UoSXNXZWJHTEJhc2VkU3BlYyhzcGVjKSA/IEVic1N0ZDE0MCA6IEVic1No
YXJlZCksCiAgICAgICAgICAgbURpYWdub3N0aWNzKGlzKSwKICAgICAgICAgICBtRGlyZWN0aXZl
SGFuZGxlcihleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbURpYWdub3N0aWNzLApA
QCAtNjUsOCArNjYsMTEgQEAKICAgICAgICAgICBtVXNlc0ZyYWdDb2xvcihmYWxzZSksCiAgICAg
ICAgICAgbVVzZXNTZWNvbmRhcnlPdXRwdXRzKGZhbHNlKSwKICAgICAgICAgICBtTWluUHJvZ3Jh
bVRleGVsT2Zmc2V0KHJlc291cmNlcy5NaW5Qcm9ncmFtVGV4ZWxPZmZzZXQpLAotICAgICAgICAg
IG1NYXhQcm9ncmFtVGV4ZWxPZmZzZXQocmVzb3VyY2VzLk1heFByb2dyYW1UZXhlbE9mZnNldCkK
KyAgICAgICAgICBtTWF4UHJvZ3JhbVRleGVsT2Zmc2V0KHJlc291cmNlcy5NYXhQcm9ncmFtVGV4
ZWxPZmZzZXQpLAorICAgICAgICAgIG1Db21wdXRlU2hhZGVyTG9jYWxTaXplRGVjbGFyZWQoZmFs
c2UpLAorICAgICAgICAgIG1EZWNsYXJpbmdGdW5jdGlvbihmYWxzZSkKICAgICB7CisgICAgICAg
IG1Db21wdXRlU2hhZGVyTG9jYWxTaXplLmZpbGwoLTEpOwogICAgIH0KIAogICAgIGNvbnN0IHBw
OjpQcmVwcm9jZXNzb3IgJmdldFByZXByb2Nlc3NvcigpIGNvbnN0IHsgcmV0dXJuIG1QcmVwcm9j
ZXNzb3I7IH0KQEAgLTkwLDkgKzk0LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyICp0b2tlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpleHRy
YUluZm8gPSAiIik7CiAKLSAgICB2b2lkIHJlY292ZXIoKTsKLSAgICBUSW50ZXJtTm9kZSAqZ2V0
VHJlZVJvb3QoKSBjb25zdCB7IHJldHVybiBtVHJlZVJvb3Q7IH0KLSAgICB2b2lkIHNldFRyZWVS
b290KFRJbnRlcm1Ob2RlICp0cmVlUm9vdCkgeyBtVHJlZVJvb3QgPSB0cmVlUm9vdDsgfQorICAg
IFRJbnRlcm1CbG9jayAqZ2V0VHJlZVJvb3QoKSBjb25zdCB7IHJldHVybiBtVHJlZVJvb3Q7IH0K
KyAgICB2b2lkIHNldFRyZWVSb290KFRJbnRlcm1CbG9jayAqdHJlZVJvb3QpIHsgbVRyZWVSb290
ID0gdHJlZVJvb3Q7IH0KIAogICAgIGJvb2wgZ2V0RnJhZ21lbnRQcmVjaXNpb25IaWdoKCkgY29u
c3QKICAgICB7CkBAIC0xMTQsNiArMTE3LDE1IEBACiAgICAgdm9pZCBpbmNyU3dpdGNoTmVzdGlu
Z0xldmVsKCkgeyArK21Td2l0Y2hOZXN0aW5nTGV2ZWw7IH0KICAgICB2b2lkIGRlY3JTd2l0Y2hO
ZXN0aW5nTGV2ZWwoKSB7IC0tbVN3aXRjaE5lc3RpbmdMZXZlbDsgfQogCisgICAgYm9vbCBpc0Nv
bXB1dGVTaGFkZXJMb2NhbFNpemVEZWNsYXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1Db21wdXRlU2hh
ZGVyTG9jYWxTaXplRGVjbGFyZWQ7IH0KKyAgICBzaDo6V29ya0dyb3VwU2l6ZSBnZXRDb21wdXRl
U2hhZGVyTG9jYWxTaXplKCkgY29uc3Q7CisKKyAgICB2b2lkIGVudGVyRnVuY3Rpb25EZWNsYXJh
dGlvbigpIHsgbURlY2xhcmluZ0Z1bmN0aW9uID0gdHJ1ZTsgfQorCisgICAgdm9pZCBleGl0RnVu
Y3Rpb25EZWNsYXJhdGlvbigpIHsgbURlY2xhcmluZ0Z1bmN0aW9uID0gZmFsc2U7IH0KKworICAg
IGJvb2wgZGVjbGFyaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtRGVjbGFyaW5nRnVuY3Rp
b247IH0KKwogICAgIC8vIFRoaXMgbWV0aG9kIGlzIGd1YXJhbnRlZWQgdG8gc3VjY2VlZCwgZXZl
biBpZiBubyB2YXJpYWJsZSB3aXRoICduYW1lJyBleGlzdHMuCiAgICAgY29uc3QgVFZhcmlhYmxl
ICpnZXROYW1lZFZhcmlhYmxlKGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uLCBjb25zdCBUU3Ry
aW5nICpuYW1lLCBjb25zdCBUU3ltYm9sICpzeW1ib2wpOwogICAgIFRJbnRlcm1UeXBlZCAqcGFy
c2VWYXJpYWJsZUlkZW50aWZpZXIoY29uc3QgVFNvdXJjZUxvYyAmbG9jYXRpb24sCkBAIC0xMjIs
MzkgKzEzNCw2MCBAQAogCiAgICAgYm9vbCBwYXJzZVZlY3RvckZpZWxkcyhjb25zdCBUU3RyaW5n
JiwgaW50IHZlY1NpemUsIFRWZWN0b3JGaWVsZHMmLCBjb25zdCBUU291cmNlTG9jICZsaW5lKTsK
IAotICAgIGJvb2wgcmVzZXJ2ZWRFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNv
bnN0IFRTdHJpbmcgJmlkZW50aWZpZXIpOwogICAgIHZvaWQgYXNzaWduRXJyb3IoY29uc3QgVFNv
dXJjZUxvYyAmbGluZSwgY29uc3QgY2hhciAqb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyByaWdo
dCk7CiAgICAgdm9pZCB1bmFyeU9wRXJyb3IoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3Qg
Y2hhciAqb3AsIFRTdHJpbmcgb3BlcmFuZCk7CiAgICAgdm9pZCBiaW5hcnlPcEVycm9yKGNvbnN0
IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0IGNoYXIgKm9wLCBUU3RyaW5nIGxlZnQsIFRTdHJpbmcg
cmlnaHQpOwotICAgIGJvb2wgcHJlY2lzaW9uRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jICZs
aW5lLCBUUHJlY2lzaW9uIHByZWNpc2lvbiwgVEJhc2ljVHlwZSB0eXBlKTsKLSAgICBib29sIGxW
YWx1ZUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3QgY2hhciAqb3AsIFRJ
bnRlcm1UeXBlZCopOwotICAgIGJvb2wgY29uc3RFcnJvckNoZWNrKFRJbnRlcm1UeXBlZCAqbm9k
ZSk7Ci0gICAgYm9vbCBpbnRlZ2VyRXJyb3JDaGVjayhUSW50ZXJtVHlwZWQgKm5vZGUsIGNvbnN0
IGNoYXIgKnRva2VuKTsKLSAgICBib29sIGdsb2JhbEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxv
YyAmbGluZSwgYm9vbCBnbG9iYWwsIGNvbnN0IGNoYXIgKnRva2VuKTsKLSAgICBib29sIGNvbnN0
cnVjdG9yRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jICZsaW5lLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICphcmd1bWVudHNOb2RlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRGdW5jdGlvbiAmZnVuY3Rpb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVE9wZXJhdG9yIG9wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRUeXBlICp0eXBlKTsKLSAgICBib29sIGFycmF5U2l6ZUVycm9yQ2hlY2soY29uc3QgVFNv
dXJjZUxvYyAmbGluZSwgVEludGVybVR5cGVkICpleHByLCBpbnQgJnNpemUpOwotICAgIGJvb2wg
YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0IFRQ
dWJsaWNUeXBlICZ0eXBlKTsKLSAgICBib29sIGFycmF5VHlwZUVycm9yQ2hlY2soY29uc3QgVFNv
dXJjZUxvYyAmbGluZSwgY29uc3QgVFB1YmxpY1R5cGUgJnR5cGUpOwotICAgIGJvb2wgdm9pZEVy
cm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3QgVFN0cmluZyAmaWRlbnRpZmll
ciwgY29uc3QgVEJhc2ljVHlwZSAmdHlwZSk7Ci0gICAgYm9vbCBib29sRXJyb3JDaGVjayhjb25z
dCBUU291cmNlTG9jJiwgY29uc3QgVEludGVybVR5cGVkKik7Ci0gICAgYm9vbCBib29sRXJyb3JD
aGVjayhjb25zdCBUU291cmNlTG9jJiwgY29uc3QgVFB1YmxpY1R5cGUmKTsKLSAgICBib29sIHNh
bXBsZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0IFRQdWJsaWNUeXBl
ICZwVHlwZSwgY29uc3QgY2hhciAqcmVhc29uKTsKLSAgICBib29sIGxvY2F0aW9uRGVjbGFyYXRv
ckxpc3RDaGVjayhjb25zdCBUU291cmNlTG9jICZsaW5lLCBjb25zdCBUUHVibGljVHlwZSAmcFR5
cGUpOwotICAgIGJvb2wgcGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxv
YyAmbGluZSwgVFF1YWxpZmllciBxdWFsaWZpZXIsIGNvbnN0IFRUeXBlICZ0eXBlKTsKLSAgICBi
b29sIHBhcmFtRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jICZsaW5lLCBUUXVhbGlmaWVyIHF1
YWxpZmllciwgVFF1YWxpZmllciBwYXJhbVF1YWxpZmllciwgVFR5cGUgKnR5cGUpOwotICAgIGJv
b2wgZXh0ZW5zaW9uRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jICZsaW5lLCBjb25zdCBUU3Ry
aW5nJik7Ci0gICAgYm9vbCBzaW5nbGVEZWNsYXJhdGlvbkVycm9yQ2hlY2soY29uc3QgVFB1Ymxp
Y1R5cGUgJnB1YmxpY1R5cGUsIGNvbnN0IFRTb3VyY2VMb2MgJmlkZW50aWZpZXJMb2NhdGlvbik7
Ci0gICAgYm9vbCBsYXlvdXRMb2NhdGlvbkVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyAmbG9j
YXRpb24sIGNvbnN0IFRMYXlvdXRRdWFsaWZpZXIgJmxheW91dFF1YWxpZmllcik7Ci0gICAgYm9v
bCBmdW5jdGlvbkNhbGxMVmFsdWVFcnJvckNoZWNrKGNvbnN0IFRGdW5jdGlvbiAqZm5DYW5kaWRh
dGUsIFRJbnRlcm1BZ2dyZWdhdGUgKik7Ci0gICAgdm9pZCBlczNJbnZhcmlhbnRFcnJvckNoZWNr
KGNvbnN0IFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBjb25zdCBUU291cmNlTG9jICZpbnZhcmlhbnRM
b2NhdGlvbik7Ci0gICAgdm9pZCBlczNJbnB1dE91dHB1dFR5cGVDaGVjayhjb25zdCBUUXVhbGlm
aWVyIHF1YWxpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRQ
dWJsaWNUeXBlICZ0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFNvdXJjZUxvYyAmcXVhbGlmaWVyTG9jYXRpb24pOwogCisgICAgLy8gQ2hlY2sgZnVuY3Rpb25z
IC0gdGhlIG9uZXMgdGhhdCByZXR1cm4gYm9vbCByZXR1cm4gZmFsc2UgaWYgYW4gZXJyb3Igd2Fz
IGdlbmVyYXRlZC4KKworICAgIGJvb2wgY2hlY2tJc05vdFJlc2VydmVkKGNvbnN0IFRTb3VyY2VM
b2MgJmxpbmUsIGNvbnN0IFRTdHJpbmcgJmlkZW50aWZpZXIpOworICAgIHZvaWQgY2hlY2tQcmVj
aXNpb25TcGVjaWZpZWQoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgVFByZWNpc2lvbiBwcmVjaXNp
b24sIFRCYXNpY1R5cGUgdHlwZSk7CisgICAgYm9vbCBjaGVja0NhbkJlTFZhbHVlKGNvbnN0IFRT
b3VyY2VMb2MgJmxpbmUsIGNvbnN0IGNoYXIgKm9wLCBUSW50ZXJtVHlwZWQgKm5vZGUpOworICAg
IHZvaWQgY2hlY2tJc0NvbnN0KFRJbnRlcm1UeXBlZCAqbm9kZSk7CisgICAgdm9pZCBjaGVja0lz
U2NhbGFySW50ZWdlcihUSW50ZXJtVHlwZWQgKm5vZGUsIGNvbnN0IGNoYXIgKnRva2VuKTsKKyAg
ICBib29sIGNoZWNrSXNBdEdsb2JhbExldmVsKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0
IGNoYXIgKnRva2VuKTsKKyAgICBib29sIGNoZWNrQ29uc3RydWN0b3JBcmd1bWVudHMoY29uc3Qg
VFNvdXJjZUxvYyAmbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElu
dGVybU5vZGUgKmFyZ3VtZW50c05vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRGdW5jdGlvbiAmZnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRPcGVyYXRvciBvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVFR5cGUgJnR5cGUpOworCisgICAgLy8gUmV0dXJucyBhIHNhbml0aXplZCBhcnJh
eSBzaXplIHRvIHVzZSAodGhlIHNpemUgaXMgYXQgbGVhc3QgMSkuCisgICAgdW5zaWduZWQgaW50
IGNoZWNrSXNWYWxpZEFycmF5U2l6ZShjb25zdCBUU291cmNlTG9jICZsaW5lLCBUSW50ZXJtVHlw
ZWQgKmV4cHIpOworICAgIGJvb2wgY2hlY2tJc1ZhbGlkUXVhbGlmaWVyRm9yQXJyYXkoY29uc3Qg
VFNvdXJjZUxvYyAmbGluZSwgY29uc3QgVFB1YmxpY1R5cGUgJmVsZW1lbnRRdWFsaWZpZXIpOwor
ICAgIGJvb2wgY2hlY2tJc1ZhbGlkVHlwZUZvckFycmF5KGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUs
IGNvbnN0IFRQdWJsaWNUeXBlICZlbGVtZW50VHlwZSk7CisgICAgYm9vbCBjaGVja0lzTm9uVm9p
ZChjb25zdCBUU291cmNlTG9jICZsaW5lLCBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVyLCBjb25z
dCBUQmFzaWNUeXBlICZ0eXBlKTsKKyAgICB2b2lkIGNoZWNrSXNTY2FsYXJCb29sKGNvbnN0IFRT
b3VyY2VMb2MgJmxpbmUsIGNvbnN0IFRJbnRlcm1UeXBlZCAqdHlwZSk7CisgICAgdm9pZCBjaGVj
a0lzU2NhbGFyQm9vbChjb25zdCBUU291cmNlTG9jICZsaW5lLCBjb25zdCBUUHVibGljVHlwZSAm
cFR5cGUpOworICAgIGJvb2wgY2hlY2tJc05vdFNhbXBsZXIoY29uc3QgVFNvdXJjZUxvYyAmbGlu
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlU3BlY2lmaWVyTm9uQXJy
YXkgJnBUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29u
KTsKKyAgICB2b2lkIGNoZWNrRGVjbGFyYXRvckxvY2F0aW9uSXNOb3RTcGVjaWZpZWQoY29uc3Qg
VFNvdXJjZUxvYyAmbGluZSwgY29uc3QgVFB1YmxpY1R5cGUgJnBUeXBlKTsKKyAgICB2b2lkIGNo
ZWNrTG9jYXRpb25Jc05vdFNwZWNpZmllZChjb25zdCBUU291cmNlTG9jICZsb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUTGF5b3V0UXVhbGlmaWVy
ICZsYXlvdXRRdWFsaWZpZXIpOworICAgIHZvaWQgY2hlY2tPdXRQYXJhbWV0ZXJJc05vdFNhbXBs
ZXIoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgJnR5cGUpOworICAgIHZvaWQgY2hlY2tJc1BhcmFt
ZXRlclF1YWxpZmllclZhbGlkKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGVRdWFsaWZpZXJCdWlsZGVyICZ0
eXBlUXVhbGlmaWVyQnVpbGRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUVHlwZSAqdHlwZSk7CisgICAgYm9vbCBjaGVja0NhblVzZUV4dGVuc2lvbihjb25zdCBU
U291cmNlTG9jICZsaW5lLCBjb25zdCBUU3RyaW5nICZleHRlbnNpb24pOworICAgIHZvaWQgc2lu
Z2xlRGVjbGFyYXRpb25FcnJvckNoZWNrKGNvbnN0IFRQdWJsaWNUeXBlICZwdWJsaWNUeXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlk
ZW50aWZpZXJMb2NhdGlvbik7CisgICAgdm9pZCBjaGVja0xheW91dFF1YWxpZmllclN1cHBvcnRl
ZChjb25zdCBUU291cmNlTG9jICZsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJmxheW91dFF1YWxpZmllck5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmVyc2lvblJlcXVpcmVkKTsKKyAg
ICBib29sIGNoZWNrV29ya0dyb3VwU2l6ZUlzTm90U3BlY2lmaWVkKGNvbnN0IFRTb3VyY2VMb2Mg
JmxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVExheW91dFF1YWxpZmllciAmbGF5b3V0UXVhbGlmaWVyKTsKKworICAgIHZvaWQgZnVuY3Rp
b25DYWxsTFZhbHVlRXJyb3JDaGVjayhjb25zdCBURnVuY3Rpb24gKmZuQ2FuZGlkYXRlLCBUSW50
ZXJtQWdncmVnYXRlICpmbkNhbGwpOworICAgIHZvaWQgY2hlY2tJbnZhcmlhbnRWYXJpYWJsZVF1
YWxpZmllcihib29sIGludmFyaWFudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVFF1YWxpZmllciBxdWFsaWZpZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmludmFyaWFudExvY2F0aW9u
KTsKKyAgICB2b2lkIGNoZWNrSW5wdXRPdXRwdXRUeXBlSXNWYWxpZEVTMyhjb25zdCBUUXVhbGlm
aWVyIHF1YWxpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUUHVibGljVHlwZSAmdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUU291cmNlTG9jICZxdWFsaWZpZXJMb2NhdGlvbik7CisKICAgICBjb25z
dCBUUHJhZ21hICZwcmFnbWEoKSBjb25zdCB7IHJldHVybiBtRGlyZWN0aXZlSGFuZGxlci5wcmFn
bWEoKTsgfQogICAgIGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciAmZXh0ZW5zaW9uQmVoYXZpb3Io
KSBjb25zdCB7IHJldHVybiBtRGlyZWN0aXZlSGFuZGxlci5leHRlbnNpb25CZWhhdmlvcigpOyB9
CiAgICAgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBjaGFyICpleHRlbnNpb24pOwpAQCAt
MTcxLDkgKzIwNCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVk
ICppbml0aWFsaXplciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtTm9kZSAq
KmludGVybU5vZGUpOwogCi0gICAgVFB1YmxpY1R5cGUgYWRkRnVsbHlTcGVjaWZpZWRUeXBlKFRR
dWFsaWZpZXIgcXVhbGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGludmFyaWFudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VExheW91dFF1YWxpZmllciBsYXlvdXRRdWFsaWZpZXIsCisgICAgVFB1YmxpY1R5cGUgYWRkRnVs
bHlTcGVjaWZpZWRUeXBlKGNvbnN0IFRUeXBlUXVhbGlmaWVyQnVpbGRlciAmdHlwZVF1YWxpZmll
ckJ1aWxkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRQ
dWJsaWNUeXBlICZ0eXBlU3BlY2lmaWVyKTsKIAogICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnBhcnNl
U2luZ2xlRGVjbGFyYXRpb24oVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUsCkBAIC0yMDAsNyArMjMx
LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRTb3VyY2VMb2MgJmluaXRMb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5pdGlhbGl6
ZXIpOwogCi0gICAgVEludGVybUFnZ3JlZ2F0ZSAqcGFyc2VJbnZhcmlhbnREZWNsYXJhdGlvbihj
b25zdCBUU291cmNlTG9jICZpbnZhcmlhbnRMb2MsCisgICAgVEludGVybUFnZ3JlZ2F0ZSAqcGFy
c2VJbnZhcmlhbnREZWNsYXJhdGlvbihjb25zdCBUVHlwZVF1YWxpZmllckJ1aWxkZXIgJnR5cGVR
dWFsaWZpZXJCdWlsZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaWRlbnRpZmllckxvYywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgKmlkZW50aWZp
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUU3ltYm9sICpzeW1ib2wpOwpAQCAtMjMyLDM4ICsyNjMsMjcgQEAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaW5pdExv
Y2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
SW50ZXJtVHlwZWQgKmluaXRpYWxpemVyKTsKIAotICAgIHZvaWQgcGFyc2VHbG9iYWxMYXlvdXRR
dWFsaWZpZXIoY29uc3QgVFB1YmxpY1R5cGUgJnR5cGVRdWFsaWZpZXIpOwotICAgIFRJbnRlcm1B
Z2dyZWdhdGUgKmFkZEZ1bmN0aW9uUHJvdG90eXBlRGVjbGFyYXRpb24oY29uc3QgVEZ1bmN0aW9u
ICZmdW5jdGlvbiwKKyAgICB2b2lkIHBhcnNlR2xvYmFsTGF5b3V0UXVhbGlmaWVyKGNvbnN0IFRU
eXBlUXVhbGlmaWVyQnVpbGRlciAmdHlwZVF1YWxpZmllckJ1aWxkZXIpOworICAgIFRJbnRlcm1B
Z2dyZWdhdGUgKmFkZEZ1bmN0aW9uUHJvdG90eXBlRGVjbGFyYXRpb24oY29uc3QgVEZ1bmN0aW9u
ICZwYXJzZWRGdW5jdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uKTsKLSAgICBUSW50ZXJt
QWdncmVnYXRlICphZGRGdW5jdGlvbkRlZmluaXRpb24oY29uc3QgVEZ1bmN0aW9uICZmdW5jdGlv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybUFn
Z3JlZ2F0ZSAqZnVuY3Rpb25Qcm90b3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmZ1bmN0aW9uQm9keSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9j
YXRpb24pOwotICAgIHZvaWQgcGFyc2VGdW5jdGlvblByb3RvdHlwZShjb25zdCBUU291cmNlTG9j
ICZsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEZ1bmN0aW9uICpm
dW5jdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0
ZSAqKmFnZ3JlZ2F0ZU91dCk7CisgICAgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAqYWRkRnVu
Y3Rpb25EZWZpbml0aW9uKGNvbnN0IFRGdW5jdGlvbiAmZnVuY3Rpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUg
KmZ1bmN0aW9uUGFyYW1ldGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVEludGVybUJsb2NrICpmdW5jdGlvbkJvZHksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VM
b2MgJmxvY2F0aW9uKTsKKyAgICB2b2lkIHBhcnNlRnVuY3Rpb25EZWZpbml0aW9uSGVhZGVyKGNv
bnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVEZ1bmN0aW9uICoqZnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICoqYWdncmVnYXRlT3V0KTsKICAgICBURnVu
Y3Rpb24gKnBhcnNlRnVuY3Rpb25EZWNsYXJhdG9yKGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9u
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEZ1bmN0aW9uICpmdW5j
dGlvbik7CisgICAgVEZ1bmN0aW9uICpwYXJzZUZ1bmN0aW9uSGVhZGVyKGNvbnN0IFRQdWJsaWNU
eXBlICZ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3Ry
aW5nICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291
cmNlTG9jICZsb2NhdGlvbik7CiAgICAgVEZ1bmN0aW9uICphZGRDb25zdHJ1Y3RvckZ1bmMoY29u
c3QgVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUpOwogICAgIFRJbnRlcm1UeXBlZCAqYWRkQ29uc3Ry
dWN0b3IoVEludGVybU5vZGUgKmFyZ3VtZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRUeXBlICp0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVE9w
ZXJhdG9yIG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEZ1bmN0aW9uICpm
bkNhbGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9j
ICZsaW5lKTsKLSAgICBUSW50ZXJtVHlwZWQgKmFkZENvbnN0VmVjdG9yTm9kZShUVmVjdG9yRmll
bGRzICZmaWVsZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVy
bUNvbnN0YW50VW5pb24gKm5vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIG91dE9mUmFuZ2VJbmRleElzRXJyb3IpOwotICAgIFRJbnRlcm1UeXBlZCAq
YWRkQ29uc3RNYXRyaXhOb2RlKGludCBpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqbm9kZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsaW5lLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgb3V0T2ZSYW5nZUluZGV4SXNFcnJvcik7Ci0g
ICAgVEludGVybVR5cGVkICphZGRDb25zdEFycmF5Tm9kZShpbnQgaW5kZXgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqbm9kZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIG91dE9mUmFuZ2VJbmRl
eElzRXJyb3IpOwotICAgIFRJbnRlcm1UeXBlZCAqYWRkQ29uc3RTdHJ1Y3QoCi0gICAgICAgIGNv
bnN0IFRTdHJpbmcgJmlkZW50aWZpZXIsIFRJbnRlcm1UeXBlZCAqbm9kZSwgY29uc3QgVFNvdXJj
ZUxvYyYgbGluZSk7CisKICAgICBUSW50ZXJtVHlwZWQgKmFkZEluZGV4RXhwcmVzc2lvbihUSW50
ZXJtVHlwZWQgKmJhc2VFeHByZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRTb3VyY2VMb2MmIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5kZXhFeHByZXNzaW9uKTsKQEAgLTI3Miwx
MyArMjkyLDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVFN0cmluZyAmZmllbGRTdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmZmllbGRMb2NhdGlvbik7CiAK
KyAgICBURmllbGRMaXN0ICphZGRTdHJ1Y3REZWNsYXJhdG9yTGlzdFdpdGhRdWFsaWZpZXJzKAor
ICAgICAgICBjb25zdCBUVHlwZVF1YWxpZmllckJ1aWxkZXIgJnR5cGVRdWFsaWZpZXJCdWlsZGVy
LAorICAgICAgICBUUHVibGljVHlwZSAqdHlwZVNwZWNpZmllciwKKyAgICAgICAgVEZpZWxkTGlz
dCAqZmllbGRMaXN0KTsKICAgICBURmllbGRMaXN0ICphZGRTdHJ1Y3REZWNsYXJhdG9yTGlzdChj
b25zdCBUUHVibGljVHlwZSAmdHlwZVNwZWNpZmllciwgVEZpZWxkTGlzdCAqZmllbGRMaXN0KTsK
LSAgICBUUHVibGljVHlwZSBhZGRTdHJ1Y3R1cmUoY29uc3QgVFNvdXJjZUxvYyAmc3RydWN0TGlu
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbmFtZUxp
bmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgKnN0cnVjdE5h
bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRGaWVsZExpc3QgKmZpZWxkTGlzdCk7
CisgICAgVFR5cGVTcGVjaWZpZXJOb25BcnJheSBhZGRTdHJ1Y3R1cmUoY29uc3QgVFNvdXJjZUxv
YyAmc3RydWN0TGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUU291cmNlTG9jICZuYW1lTGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUU3RyaW5nICpzdHJ1Y3ROYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRGaWVsZExpc3QgKmZpZWxkTGlzdCk7CiAKLSAgICBUSW50
ZXJtQWdncmVnYXRlKiBhZGRJbnRlcmZhY2VCbG9jayhjb25zdCBUUHVibGljVHlwZSAmdHlwZVF1
YWxpZmllciwKKyAgICBUSW50ZXJtQWdncmVnYXRlICphZGRJbnRlcmZhY2VCbG9jayhjb25zdCBU
VHlwZVF1YWxpZmllckJ1aWxkZXIgJnR5cGVRdWFsaWZpZXJCdWlsZGVyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJm5hbWVMaW5lLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJmJs
b2NrTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURmllbGRM
aXN0ICpmaWVsZExpc3QsCkBAIC0yODUsMjggKzMwOSwzNSBAQAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgKmluc3RhbmNlTmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZpbnN0
YW5jZUxpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVy
bVR5cGVkICphcnJheUluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRTb3VyY2VMb2MmIGFycmF5SW5kZXhMaW5lKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZhcnJheUluZGV4TGluZSk7
CiAKKyAgICB2b2lkIHBhcnNlTG9jYWxTaXplKGNvbnN0IFRTdHJpbmcgJnF1YWxpZmllclR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZxdWFsaWZpZXJUeXBl
TGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnRWYWx1ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmludFZhbHVlTGluZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZpbnRWYWx1ZVN0cmluZywKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNo
OjpXb3JrR3JvdXBTaXplICpsb2NhbFNpemUpOwogICAgIFRMYXlvdXRRdWFsaWZpZXIgcGFyc2VM
YXlvdXRRdWFsaWZpZXIoCiAgICAgICAgIGNvbnN0IFRTdHJpbmcgJnF1YWxpZmllclR5cGUsIGNv
bnN0IFRTb3VyY2VMb2MgJnF1YWxpZmllclR5cGVMaW5lKTsKICAgICBUTGF5b3V0UXVhbGlmaWVy
IHBhcnNlTGF5b3V0UXVhbGlmaWVyKGNvbnN0IFRTdHJpbmcgJnF1YWxpZmllclR5cGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZx
dWFsaWZpZXJUeXBlTGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRTdHJpbmcgJmludFZhbHVlU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGludFZhbHVlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaW50VmFsdWVMaW5lKTsKLSAg
ICBUTGF5b3V0UXVhbGlmaWVyIGpvaW5MYXlvdXRRdWFsaWZpZXJzKFRMYXlvdXRRdWFsaWZpZXIg
bGVmdFF1YWxpZmllciwgVExheW91dFF1YWxpZmllciByaWdodFF1YWxpZmllcik7Ci0gICAgVFB1
YmxpY1R5cGUgam9pbkludGVycG9sYXRpb25RdWFsaWZpZXJzKGNvbnN0IFRTb3VyY2VMb2MgJmlu
dGVycG9sYXRpb25Mb2MsIFRRdWFsaWZpZXIgaW50ZXJwb2xhdGlvblF1YWxpZmllciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAm
c3RvcmFnZUxvYywgVFF1YWxpZmllciBzdG9yYWdlUXVhbGlmaWVyKTsKKyAgICBUVHlwZVF1YWxp
ZmllckJ1aWxkZXIgKmNyZWF0ZVR5cGVRdWFsaWZpZXJCdWlsZGVyKGNvbnN0IFRTb3VyY2VMb2Mg
JmxvYyk7CisgICAgVExheW91dFF1YWxpZmllciBqb2luTGF5b3V0UXVhbGlmaWVycyhUTGF5b3V0
UXVhbGlmaWVyIGxlZnRRdWFsaWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUTGF5b3V0UXVhbGlmaWVyIHJpZ2h0UXVhbGlmaWVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmcmlnaHRRdWFs
aWZpZXJMb2NhdGlvbik7CiAKICAgICAvLyBQZXJmb3JtcyBhbiBlcnJvciBjaGVjayBmb3IgZW1i
ZWRkZWQgc3RydWN0IGRlY2xhcmF0aW9ucy4KLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgYW4gZXJy
b3Igd2FzIHJhaXNlZCBkdWUgdG8gdGhlIGRlY2xhcmF0aW9uIG9mCi0gICAgLy8gdGhpcyBzdHJ1
Y3QuCi0gICAgYm9vbCBlbnRlclN0cnVjdERlY2xhcmF0aW9uKGNvbnN0IFRTb3VyY2VMb2MgJmxp
bmUsIGNvbnN0IFRTdHJpbmcgJmlkZW50aWZpZXIpOworICAgIHZvaWQgZW50ZXJTdHJ1Y3REZWNs
YXJhdGlvbihjb25zdCBUU291cmNlTG9jICZsaW5lLCBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVy
KTsKICAgICB2b2lkIGV4aXRTdHJ1Y3REZWNsYXJhdGlvbigpOwogCi0gICAgYm9vbCBzdHJ1Y3RO
ZXN0aW5nRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jICZsaW5lLCBjb25zdCBURmllbGQgJmZp
ZWxkKTsKKyAgICB2b2lkIGNoZWNrSXNCZWxvd1N0cnVjdE5lc3RpbmdMaW1pdChjb25zdCBUU291
cmNlTG9jICZsaW5lLCBjb25zdCBURmllbGQgJmZpZWxkKTsKIAotICAgIFRJbnRlcm1Td2l0Y2gg
KmFkZFN3aXRjaChUSW50ZXJtVHlwZWQgKmluaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKnN0YXRlbWVu
dExpc3QsIGNvbnN0IFRTb3VyY2VMb2MgJmxvYyk7CisgICAgVEludGVybVN3aXRjaCAqYWRkU3dp
dGNoKFRJbnRlcm1UeXBlZCAqaW5pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElu
dGVybUJsb2NrICpzdGF0ZW1lbnRMaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUU291cmNlTG9jICZsb2MpOwogICAgIFRJbnRlcm1DYXNlICphZGRDYXNlKFRJbnRlcm1U
eXBlZCAqY29uZGl0aW9uLCBjb25zdCBUU291cmNlTG9jICZsb2MpOwogICAgIFRJbnRlcm1DYXNl
ICphZGREZWZhdWx0KGNvbnN0IFRTb3VyY2VMb2MgJmxvYyk7CiAKQEAgLTMzMSwxOCArMzYyLDM2
IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291
cmNlTG9jICZsb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sICpmYXRhbEVycm9yKTsKIAotICAgIFRJbnRlcm1UeXBlZCAqYWRkVGVybmFyeVNlbGVjdGlv
bigKLSAgICAgICAgVEludGVybVR5cGVkICpjb25kLCBUSW50ZXJtVHlwZWQgKnRydWVCbG9jaywg
VEludGVybVR5cGVkICpmYWxzZUJsb2NrLCBjb25zdCBUU291cmNlTG9jICZsaW5lKTsKKyAgICBU
SW50ZXJtVHlwZWQgKmFkZFRlcm5hcnlTZWxlY3Rpb24oVEludGVybVR5cGVkICpjb25kLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnRydWVFeHBy
ZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlw
ZWQgKmZhbHNlRXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVFNvdXJjZUxvYyAmbGluZSk7CiAKICAgICAvLyBUT0RPKGptYWRpbGwpOiBtYWtl
IHRoZXNlIHByaXZhdGUKLSAgICBUSW50ZXJtZWRpYXRlICZpbnRlcm1lZGlhdGU7IC8vIHRvIGhv
bGQgYW5kIGJ1aWxkIGEgcGFyc2UgdHJlZQorICAgIFRJbnRlcm1lZGlhdGUgaW50ZXJtZWRpYXRl
OyAgLy8gdG8gYnVpbGQgYSBwYXJzZSB0cmVlCiAgICAgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJs
ZTsgICAvLyBzeW1ib2wgdGFibGUgdGhhdCBnb2VzIHdpdGggdGhlIGxhbmd1YWdlIGN1cnJlbnRs
eSBiZWluZyBwYXJzZWQKIAogICBwcml2YXRlOgorICAgIC8vIFJldHVybnMgYSBjbGFtcGVkIGlu
ZGV4LgorICAgIGludCBjaGVja0luZGV4T3V0T2ZSYW5nZShib29sIG91dE9mUmFuZ2VJbmRleElz
RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZXgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBhcnJheVNpemUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciAqdG9rZW4pOworCiAgICAgYm9vbCBkZWNsYXJlVmFyaWFibGUoY29uc3Qg
VFNvdXJjZUxvYyAmbGluZSwgY29uc3QgVFN0cmluZyAmaWRlbnRpZmllciwgY29uc3QgVFR5cGUg
JnR5cGUsIFRWYXJpYWJsZSAqKnZhcmlhYmxlKTsKIAotICAgIGJvb2wgbm9uSW5pdEVycm9yQ2hl
Y2soY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3QgVFN0cmluZyAmaWRlbnRpZmllciwgVFB1
YmxpY1R5cGUgKnR5cGUpOworICAgIHZvaWQgY2hlY2tDYW5CZURlY2xhcmVkV2l0aG91dEluaXRp
YWxpemVyKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmaWRlbnRpZmllciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUHVibGljVHlwZSAqdHlwZSk7
CiAKKyAgICBib29sIGNoZWNrSXNWYWxpZFR5cGVBbmRRdWFsaWZpZXJGb3JBcnJheShjb25zdCBU
U291cmNlTG9jICZpbmRleExvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFRQdWJsaWNUeXBlICZlbGVtZW50VHlwZSk7CisKKyAgICAv
LyBBc3N1bWVzIHRoYXQgbXVsdGlwbGljYXRpb24gb3AgaGFzIGFscmVhZHkgYmVlbiBzZXQgYmFz
ZWQgb24gdGhlIHR5cGVzLgorICAgIGJvb2wgaXNNdWx0aXBsaWNhdGlvblR5cGVDb21iaW5hdGlv
blZhbGlkKFRPcGVyYXRvciBvcCwgY29uc3QgVFR5cGUgJmxlZnQsIGNvbnN0IFRUeXBlICZyaWdo
dCk7CisKICAgICBUSW50ZXJtVHlwZWQgKmFkZEJpbmFyeU1hdGhJbnRlcm5hbCgKICAgICAgICAg
VE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQgKmxlZnQsIFRJbnRlcm1UeXBlZCAqcmlnaHQsIGNv
bnN0IFRTb3VyY2VMb2MgJmxvYyk7CiAgICAgVEludGVybVR5cGVkICpjcmVhdGVBc3NpZ24oCkBA
IC0zNjAsMTUgKzQwOSwxOCBAQAogICAgIGJvb2wgbURlZmVycmVkU2luZ2xlRGVjbGFyYXRpb25F
cnJvckNoZWNrOwogCiAgICAgc2g6OkdMZW51bSBtU2hhZGVyVHlwZTsgICAgICAgICAgICAgIC8v
IHZlcnRleCBvciBmcmFnbWVudCBsYW5ndWFnZSAoZnV0dXJlOiBwYWNrIG9yIHVucGFjaykKLSAg
ICBTaFNoYWRlclNwZWMgbVNoYWRlclNwZWM7ICAgICAgICAgICAgICAvLyBUaGUgbGFuZ3VhZ2Ug
c3BlY2lmaWNhdGlvbiBjb21waWxlciBjb25mb3JtcyB0byAtIEdMRVMyIG9yIFdlYkdMLgorICAg
IFNoU2hhZGVyU3BlYyBtU2hhZGVyU3BlYzsgIC8vIFRoZSBsYW5ndWFnZSBzcGVjaWZpY2F0aW9u
IGNvbXBpbGVyIGNvbmZvcm1zIHRvIC0gR0xFUzIgb3IgV2ViR0wuCisgICAgU2hDb21waWxlT3B0
aW9ucyBtQ29tcGlsZU9wdGlvbnM7ICAvLyBPcHRpb25zIHBhc3NlZCB0byBUQ29tcGlsZXIKICAg
ICBpbnQgbVNoYWRlclZlcnNpb247Ci0gICAgVEludGVybU5vZGUgKm1UcmVlUm9vdDsgICAgICAg
Ly8gcm9vdCBvZiBwYXJzZSB0cmVlIGJlaW5nIGNyZWF0ZWQKKyAgICBUSW50ZXJtQmxvY2sgKm1U
cmVlUm9vdDsgICAgIC8vIHJvb3Qgb2YgcGFyc2UgdHJlZSBiZWluZyBjcmVhdGVkCiAgICAgaW50
IG1Mb29wTmVzdGluZ0xldmVsOyAgICAgICAvLyAwIGlmIG91dHNpZGUgYWxsIGxvb3BzCi0gICAg
aW50IG1TdHJ1Y3ROZXN0aW5nTGV2ZWw7ICAgICAgLy8gaW5jcmVtZW50ZWQgd2hpbGUgcGFyc2lu
ZyBhIHN0cnVjdCBkZWNsYXJhdGlvbgorICAgIGludCBtU3RydWN0TmVzdGluZ0xldmVsOyAgICAg
Ly8gaW5jcmVtZW50ZWQgd2hpbGUgcGFyc2luZyBhIHN0cnVjdCBkZWNsYXJhdGlvbgogICAgIGlu
dCBtU3dpdGNoTmVzdGluZ0xldmVsOyAgICAgLy8gMCBpZiBvdXRzaWRlIGFsbCBzd2l0Y2ggc3Rh
dGVtZW50cwotICAgIGNvbnN0IFRUeXBlICptQ3VycmVudEZ1bmN0aW9uVHlwZTsgIC8vIHRoZSBy
ZXR1cm4gdHlwZSBvZiB0aGUgZnVuY3Rpb24gdGhhdCdzIGN1cnJlbnRseSBiZWluZyBwYXJzZWQK
KyAgICBjb25zdCBUVHlwZQorICAgICAgICAqbUN1cnJlbnRGdW5jdGlvblR5cGU7ICAgLy8gdGhl
IHJldHVybiB0eXBlIG9mIHRoZSBmdW5jdGlvbiB0aGF0J3MgY3VycmVudGx5IGJlaW5nIHBhcnNl
ZAogICAgIGJvb2wgbUZ1bmN0aW9uUmV0dXJuc1ZhbHVlOyAgLy8gdHJ1ZSBpZiBhIG5vbi12b2lk
IGZ1bmN0aW9uIGhhcyBhIHJldHVybgotICAgIGJvb2wgbUNoZWNrc1ByZWNpc2lvbkVycm9yczsg
IC8vIHRydWUgaWYgYW4gZXJyb3Igd2lsbCBiZSBnZW5lcmF0ZWQgd2hlbiBhIHZhcmlhYmxlIGlz
IGRlY2xhcmVkIHdpdGhvdXQgcHJlY2lzaW9uLCBleHBsaWNpdCBvciBpbXBsaWNpdC4KKyAgICBi
b29sIG1DaGVja3NQcmVjaXNpb25FcnJvcnM7ICAvLyB0cnVlIGlmIGFuIGVycm9yIHdpbGwgYmUg
Z2VuZXJhdGVkIHdoZW4gYSB2YXJpYWJsZSBpcyBkZWNsYXJlZAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHdpdGhvdXQgcHJlY2lzaW9uLCBleHBsaWNpdCBvciBpbXBsaWNp
dC4KICAgICBib29sIG1GcmFnbWVudFByZWNpc2lvbkhpZ2hPbkVTU0wxOyAgLy8gdHJ1ZSBpZiBo
aWdocCBwcmVjaXNpb24gaXMgc3VwcG9ydGVkIHdoZW4gY29tcGlsaW5nCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVTU0wxLgogICAgIFRMYXlvdXRNYXRyaXhQ
YWNraW5nIG1EZWZhdWx0TWF0cml4UGFja2luZzsKQEAgLTM4NCw2ICs0MzYsMTIgQEAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdsX1NlY29uZGFyeSBGcmFnQ29sb3Igb3Ig
Ym90aC4KICAgICBpbnQgbU1pblByb2dyYW1UZXhlbE9mZnNldDsKICAgICBpbnQgbU1heFByb2dy
YW1UZXhlbE9mZnNldDsKKworICAgIC8vIGtlZXAgdHJhY2sgb2YgbG9jYWwgZ3JvdXAgc2l6ZSBk
ZWNsYXJlZCBpbiBsYXlvdXQuIEl0IHNob3VsZCBiZSBkZWNsYXJlZCBvbmx5IG9uY2UuCisgICAg
Ym9vbCBtQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZURlY2xhcmVkOworICAgIHNoOjpXb3JrR3JvdXBT
aXplIG1Db21wdXRlU2hhZGVyTG9jYWxTaXplOworICAgIC8vIGtlZXBzIHRyYWNrIHdoZXRoZXIg
d2UgYXJlIGRlY2xhcmluZyAvIGRlZmluaW5nIGEgZnVuY3Rpb24KKyAgICBib29sIG1EZWNsYXJp
bmdGdW5jdGlvbjsKIH07CiAKIGludCBQYVBhcnNlU3RyaW5ncygKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Bvb2xBbGxvYy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
UG9vbEFsbG9jLmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUG9vbEFsbG9jLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNiwxNiArNiwxNiBAQAogCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9Qb29sQWxs
b2MuaCIKIAotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZUdsb2JhbHMu
aCIKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPGFz
c2VydC5oPgogCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJjb21t
b24vZGVidWcuaCIKICNpbmNsdWRlICJjb21tb24vcGxhdGZvcm0uaCIKLSNpbmNsdWRlICJjb21t
b24vYW5nbGV1dGlscy5oIgogI2luY2x1ZGUgImNvbW1vbi90bHMuaCIKKyNpbmNsdWRlICJjb21w
aWxlci90cmFuc2xhdG9yL0luaXRpYWxpemVHbG9iYWxzLmgiCiAKLSNpbmNsdWRlIDxzdGRpbnQu
aD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPGFzc2VydC5oPgotCiBUTFNJbmRleCBQ
b29sSW5kZXggPSBUTFNfSU5WQUxJRF9JTkRFWDsKIAogYm9vbCBJbml0aWFsaXplUG9vbEluZGV4
KCkKQEAgLTUwLDI4ICs1MCwxOCBAQAogLy8gSW1wbGVtZW50IHRoZSBmdW5jdGlvbmFsaXR5IG9m
IHRoZSBUUG9vbEFsbG9jYXRvciBjbGFzcywgd2hpY2gKIC8vIGlzIGRvY3VtZW50ZWQgaW4gUG9v
bEFsbG9jLmguCiAvLwotVFBvb2xBbGxvY2F0b3I6OlRQb29sQWxsb2NhdG9yKGludCBncm93dGhJ
bmNyZW1lbnQsIGludCBhbGxvY2F0aW9uQWxpZ25tZW50KSA6IAotICAgIHBhZ2VTaXplKGdyb3d0
aEluY3JlbWVudCksCi0gICAgYWxpZ25tZW50KGFsbG9jYXRpb25BbGlnbm1lbnQpLAotICAgIGZy
ZWVMaXN0KDApLAotICAgIGluVXNlTGlzdCgwKSwKLSAgICBudW1DYWxscygwKSwKLSAgICB0b3Rh
bEJ5dGVzKDApCitUUG9vbEFsbG9jYXRvcjo6VFBvb2xBbGxvY2F0b3IoaW50IGdyb3d0aEluY3Jl
bWVudCwgaW50IGFsbG9jYXRpb25BbGlnbm1lbnQpCisgICAgOiBhbGlnbm1lbnQoYWxsb2NhdGlv
bkFsaWdubWVudCksCisjaWYgIWRlZmluZWQoQU5HTEVfVFJBTlNMQVRPUl9ESVNBQkxFX1BPT0xf
QUxMT0MpCisgICAgICBwYWdlU2l6ZShncm93dGhJbmNyZW1lbnQpLAorICAgICAgZnJlZUxpc3Qo
MCksCisgICAgICBpblVzZUxpc3QoMCksCisgICAgICBudW1DYWxscygwKSwKKyAgICAgIHRvdGFs
Qnl0ZXMoMCksCisjZW5kaWYKKyAgICAgIG1Mb2NrZWQoZmFsc2UpCiB7CiAgICAgLy8KLSAgICAv
LyBEb24ndCBhbGxvdyBwYWdlIHNpemVzIHdlIGtub3cgYXJlIHNtYWxsZXIgdGhhbiBhbGwgY29t
bW9uCi0gICAgLy8gT1MgcGFnZSBzaXplcy4KLSAgICAvLwotICAgIGlmIChwYWdlU2l6ZSA8IDQq
MTAyNCkKLSAgICAgICAgcGFnZVNpemUgPSA0KjEwMjQ7Ci0KLSAgICAvLwotICAgIC8vIEEgbGFy
Z2UgY3VycmVudFBhZ2VPZmZzZXQgaW5kaWNhdGVzIGEgbmV3IHBhZ2UgbmVlZHMgdG8KLSAgICAv
LyBiZSBvYnRhaW5lZCB0byBhbGxvY2F0ZSBtZW1vcnkuCi0gICAgLy8KLSAgICBjdXJyZW50UGFn
ZU9mZnNldCA9IHBhZ2VTaXplOwotCi0gICAgLy8KICAgICAvLyBBZGp1c3QgYWxpZ25tZW50IHRv
IGJlIGF0IGxlYXN0IHBvaW50ZXIgYWxpZ25lZCBhbmQKICAgICAvLyBwb3dlciBvZiAyLgogICAg
IC8vCkBAIC04NSw3ICs3NSwyMSBAQAogICAgIGFsaWdubWVudCA9IGE7CiAgICAgYWxpZ25tZW50
TWFzayA9IGEgLSAxOwogCisjaWYgIWRlZmluZWQoQU5HTEVfVFJBTlNMQVRPUl9ESVNBQkxFX1BP
T0xfQUxMT0MpCiAgICAgLy8KKyAgICAvLyBEb24ndCBhbGxvdyBwYWdlIHNpemVzIHdlIGtub3cg
YXJlIHNtYWxsZXIgdGhhbiBhbGwgY29tbW9uCisgICAgLy8gT1MgcGFnZSBzaXplcy4KKyAgICAv
LworICAgIGlmIChwYWdlU2l6ZSA8IDQgKiAxMDI0KQorICAgICAgICBwYWdlU2l6ZSA9IDQgKiAx
MDI0OworCisgICAgLy8KKyAgICAvLyBBIGxhcmdlIGN1cnJlbnRQYWdlT2Zmc2V0IGluZGljYXRl
cyBhIG5ldyBwYWdlIG5lZWRzIHRvCisgICAgLy8gYmUgb2J0YWluZWQgdG8gYWxsb2NhdGUgbWVt
b3J5LgorICAgIC8vCisgICAgY3VycmVudFBhZ2VPZmZzZXQgPSBwYWdlU2l6ZTsKKworICAgIC8v
CiAgICAgLy8gQWxpZ24gaGVhZGVyIHNraXAKICAgICAvLwogICAgIGhlYWRlclNraXAgPSBtaW5B
bGlnbjsKQEAgLTkyLDEwICs5NiwxNCBAQAogICAgIGlmIChoZWFkZXJTa2lwIDwgc2l6ZW9mKHRI
ZWFkZXIpKSB7CiAgICAgICAgIGhlYWRlclNraXAgPSAoc2l6ZW9mKHRIZWFkZXIpICsgYWxpZ25t
ZW50TWFzaykgJiB+YWxpZ25tZW50TWFzazsKICAgICB9CisjZWxzZSAgLy8gIWRlZmluZWQoQU5H
TEVfVFJBTlNMQVRPUl9ESVNBQkxFX1BPT0xfQUxMT0MpCisgICAgbVN0YWNrLnB1c2hfYmFjayh7
fSk7CisjZW5kaWYKIH0KIAogVFBvb2xBbGxvY2F0b3I6On5UUG9vbEFsbG9jYXRvcigpCiB7Cisj
aWYgIWRlZmluZWQoQU5HTEVfVFJBTlNMQVRPUl9ESVNBQkxFX1BPT0xfQUxMT0MpCiAgICAgd2hp
bGUgKGluVXNlTGlzdCkgewogICAgICAgICB0SGVhZGVyKiBuZXh0ID0gaW5Vc2VMaXN0LT5uZXh0
UGFnZTsKICAgICAgICAgaW5Vc2VMaXN0LT5+dEhlYWRlcigpOwpAQCAtMTEyLDYgKzEyMCwxNiBA
QAogICAgICAgICBkZWxldGUgW10gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZnJlZUxpc3QpOwog
ICAgICAgICBmcmVlTGlzdCA9IG5leHQ7CiAgICAgfQorI2Vsc2UgIC8vICFkZWZpbmVkKEFOR0xF
X1RSQU5TTEFUT1JfRElTQUJMRV9QT09MX0FMTE9DKQorICAgIGZvciAoYXV0byAmYWxsb2NzIDog
bVN0YWNrKQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvIGFsbG9jIDogYWxsb2NzKQorICAgICAg
ICB7CisgICAgICAgICAgICBmcmVlKGFsbG9jKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBtU3Rh
Y2suY2xlYXIoKTsKKyNlbmRpZgogfQogCiAvLyBTdXBwb3J0IE1TVkMrKyA2LjAKQEAgLTE1Miwx
NCArMTcwLDE4IEBACiAKIHZvaWQgVFBvb2xBbGxvY2F0b3I6OnB1c2goKQogeworI2lmICFkZWZp
bmVkKEFOR0xFX1RSQU5TTEFUT1JfRElTQUJMRV9QT09MX0FMTE9DKQogICAgIHRBbGxvY1N0YXRl
IHN0YXRlID0geyBjdXJyZW50UGFnZU9mZnNldCwgaW5Vc2VMaXN0IH07CiAKLSAgICBzdGFjay5w
dXNoX2JhY2soc3RhdGUpOwotICAgICAgICAKKyAgICBtU3RhY2sucHVzaF9iYWNrKHN0YXRlKTsK
KwogICAgIC8vCiAgICAgLy8gSW5kaWNhdGUgdGhlcmUgaXMgbm8gY3VycmVudCBwYWdlIHRvIGFs
bG9jYXRlIGZyb20uCiAgICAgLy8KICAgICBjdXJyZW50UGFnZU9mZnNldCA9IHBhZ2VTaXplOwor
I2Vsc2UgIC8vICFkZWZpbmVkKEFOR0xFX1RSQU5TTEFUT1JfRElTQUJMRV9QT09MX0FMTE9DKQor
ICAgIG1TdGFjay5wdXNoX2JhY2soe30pOworI2VuZGlmCiB9CiAKIC8vCkBAIC0xNzEsMTEgKzE5
MywxMiBAQAogLy8KIHZvaWQgVFBvb2xBbGxvY2F0b3I6OnBvcCgpCiB7Ci0gICAgaWYgKHN0YWNr
LnNpemUoKSA8IDEpCisgICAgaWYgKG1TdGFjay5zaXplKCkgPCAxKQogICAgICAgICByZXR1cm47
CiAKLSAgICB0SGVhZGVyKiBwYWdlID0gc3RhY2suYmFjaygpLnBhZ2U7Ci0gICAgY3VycmVudFBh
Z2VPZmZzZXQgPSBzdGFjay5iYWNrKCkub2Zmc2V0OworI2lmICFkZWZpbmVkKEFOR0xFX1RSQU5T
TEFUT1JfRElTQUJMRV9QT09MX0FMTE9DKQorICAgIHRIZWFkZXIgKnBhZ2UgICAgID0gbVN0YWNr
LmJhY2soKS5wYWdlOworICAgIGN1cnJlbnRQYWdlT2Zmc2V0ID0gbVN0YWNrLmJhY2soKS5vZmZz
ZXQ7CiAKICAgICB3aGlsZSAoaW5Vc2VMaXN0ICE9IHBhZ2UpIHsKICAgICAgICAgLy8gaW52b2tl
IGRlc3RydWN0b3IgdG8gZnJlZSBhbGxvY2F0aW9uIGxpc3QKQEAgLTE5MSw3ICsyMTQsMTQgQEAK
ICAgICAgICAgaW5Vc2VMaXN0ID0gbmV4dEluVXNlOwogICAgIH0KIAotICAgIHN0YWNrLnBvcF9i
YWNrKCk7CisgICAgbVN0YWNrLnBvcF9iYWNrKCk7CisjZWxzZSAgLy8gIWRlZmluZWQoQU5HTEVf
VFJBTlNMQVRPUl9ESVNBQkxFX1BPT0xfQUxMT0MpCisgICAgZm9yIChhdXRvICZhbGxvYyA6IG1T
dGFjay5iYWNrKCkpCisgICAgeworICAgICAgICBmcmVlKGFsbG9jKTsKKyAgICB9CisgICAgbVN0
YWNrLnBvcF9iYWNrKCk7CisjZW5kaWYKIH0KIAogLy8KQEAgLTIwMCwxMiArMjMwLDE1IEBACiAv
Lwogdm9pZCBUUG9vbEFsbG9jYXRvcjo6cG9wQWxsKCkKIHsKLSAgICB3aGlsZSAoc3RhY2suc2l6
ZSgpID4gMCkKKyAgICB3aGlsZSAobVN0YWNrLnNpemUoKSA+IDApCiAgICAgICAgIHBvcCgpOwog
fQogCiB2b2lkKiBUUG9vbEFsbG9jYXRvcjo6YWxsb2NhdGUoc2l6ZV90IG51bUJ5dGVzKQogewor
ICAgIEFTU0VSVCghbUxvY2tlZCk7CisKKyNpZiAhZGVmaW5lZChBTkdMRV9UUkFOU0xBVE9SX0RJ
U0FCTEVfUE9PTF9BTExPQykKICAgICAvLwogICAgIC8vIEp1c3Qga2VlcCBzb21lIGludGVyZXN0
aW5nIHN0YXRpc3RpY3MuCiAgICAgLy8KQEAgLTI4Miw5ICszMTUsMjggQEAKICAgICBjdXJyZW50
UGFnZU9mZnNldCA9IChoZWFkZXJTa2lwICsgYWxsb2NhdGlvblNpemUgKyBhbGlnbm1lbnRNYXNr
KSAmIH5hbGlnbm1lbnRNYXNrOwogCiAgICAgcmV0dXJuIGluaXRpYWxpemVBbGxvY2F0aW9uKGlu
VXNlTGlzdCwgcmV0LCBudW1CeXRlcyk7CisjZWxzZSAgLy8gIWRlZmluZWQoQU5HTEVfVFJBTlNM
QVRPUl9ESVNBQkxFX1BPT0xfQUxMT0MpCisgICAgdm9pZCAqYWxsb2MgPSBtYWxsb2MobnVtQnl0
ZXMgKyBhbGlnbm1lbnRNYXNrKTsKKyAgICBtU3RhY2suYmFjaygpLnB1c2hfYmFjayhhbGxvYyk7
CisKKyAgICBpbnRwdHJfdCBpbnRBbGxvYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFs
bG9jKTsKKyAgICBpbnRBbGxvYyAgICAgICAgICA9IChpbnRBbGxvYyArIGFsaWdubWVudE1hc2sp
ICYgfmFsaWdubWVudE1hc2s7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqPihp
bnRBbGxvYyk7CisjZW5kaWYKIH0KIAordm9pZCBUUG9vbEFsbG9jYXRvcjo6bG9jaygpCit7Cisg
ICAgQVNTRVJUKCFtTG9ja2VkKTsKKyAgICBtTG9ja2VkID0gdHJ1ZTsKK30KIAordm9pZCBUUG9v
bEFsbG9jYXRvcjo6dW5sb2NrKCkKK3sKKyAgICBBU1NFUlQobUxvY2tlZCk7CisgICAgbUxvY2tl
ZCA9IGZhbHNlOworfQorCiAvLwogLy8gQ2hlY2sgYWxsIGFsbG9jYXRpb25zIGluIGEgbGlzdCBm
b3IgZGFtYWdlIGJ5IGNhbGxpbmcgY2hlY2sgb24gZWFjaC4KIC8vCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Qb29sQWxsb2MuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Q
b29sQWxsb2MuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUG9vbEFsbG9jLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1
Miw3ICsxNTIsMTcgQEAKICAgICAvLyBieSBjYWxsaW5nIHBvcCgpLCBhbmQgdG8gbm90IGhhdmUg
dG8gc29sdmUgbWVtb3J5IGxlYWsgcHJvYmxlbXMuCiAgICAgLy8KIAotcHJvdGVjdGVkOgorICAg
IC8vIENhdGNoIHVud2FudGVkIGFsbG9jYXRpb25zLgorICAgIC8vIFRPRE8oam1hZGlsbCk6IFJl
bW92ZSB0aGlzIHdoZW4gd2UgcmVtb3ZlIHRoZSBnbG9iYWwgYWxsb2NhdG9yLgorICAgIHZvaWQg
bG9jaygpOworICAgIHZvaWQgdW5sb2NrKCk7CisKKyAgcHJpdmF0ZToKKyAgICBzaXplX3QgYWxp
Z25tZW50OyAgLy8gYWxsIHJldHVybmVkIGFsbG9jYXRpb25zIHdpbGwgYmUgYWxpZ25lZCBhdAor
ICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGdyYW51bGFyaXR5LCB3aGljaCB3aWxsIGJl
IGEgcG93ZXIgb2YgMgorICAgIHNpemVfdCBhbGlnbm1lbnRNYXNrOworCisjaWYgIWRlZmluZWQo
QU5HTEVfVFJBTlNMQVRPUl9ESVNBQkxFX1BPT0xfQUxMT0MpCiAgICAgZnJpZW5kIHN0cnVjdCB0
SGVhZGVyOwogICAgIAogICAgIHN0cnVjdCB0SGVhZGVyIHsKQEAgLTE5NSw5ICsyMDUsNiBAQAog
ICAgIH0KIAogICAgIHNpemVfdCBwYWdlU2l6ZTsgICAgICAgIC8vIGdyYW51bGFyaXR5IG9mIGFs
bG9jYXRpb24gZnJvbSB0aGUgT1MKLSAgICBzaXplX3QgYWxpZ25tZW50OyAgICAgICAvLyBhbGwg
cmV0dXJuZWQgYWxsb2NhdGlvbnMgd2lsbCBiZSBhbGlnbmVkIGF0IAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHRoaXMgZ3JhbnVsYXJpdHksIHdoaWNoIHdpbGwgYmUgYSBwb3dlciBv
ZiAyCi0gICAgc2l6ZV90IGFsaWdubWVudE1hc2s7CiAgICAgc2l6ZV90IGhlYWRlclNraXA7ICAg
ICAgLy8gYW1vdW50IG9mIG1lbW9yeSB0byBza2lwIHRvIG1ha2Ugcm9vbSBmb3IgdGhlCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICBoZWFkZXIgKGJhc2ljYWxseSwgc2l6ZSBv
ZiBoZWFkZXIsIHJvdW5kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgIHVw
IHRvIG1ha2UgaXQgYWxpZ25lZApAQCAtMjA0LDEzICsyMTEsMTggQEAKICAgICBzaXplX3QgY3Vy
cmVudFBhZ2VPZmZzZXQ7ICAvLyBuZXh0IG9mZnNldCBpbiB0b3Agb2YgaW5Vc2VMaXN0IHRvIGFs
bG9jYXRlIGZyb20KICAgICB0SGVhZGVyKiBmcmVlTGlzdDsgICAgICAvLyBsaXN0IG9mIHBvcHBl
ZCBtZW1vcnkKICAgICB0SGVhZGVyKiBpblVzZUxpc3Q7ICAgICAvLyBsaXN0IG9mIGFsbCBtZW1v
cnkgY3VycmVudGx5IGJlaW5nIHVzZWQKLSAgICB0QWxsb2NTdGFjayBzdGFjazsgICAgICAvLyBz
dGFjayBvZiB3aGVyZSB0byBhbGxvY2F0ZSBmcm9tLCB0byBwYXJ0aXRpb24gcG9vbAorICAgIHRB
bGxvY1N0YWNrIG1TdGFjazsgICAgIC8vIHN0YWNrIG9mIHdoZXJlIHRvIGFsbG9jYXRlIGZyb20s
IHRvIHBhcnRpdGlvbiBwb29sCiAKICAgICBpbnQgbnVtQ2FsbHM7ICAgICAgICAgICAvLyBqdXN0
IGFuIGludGVyZXN0aW5nIHN0YXRpc3RpYwogICAgIHNpemVfdCB0b3RhbEJ5dGVzOyAgICAgIC8v
IGp1c3QgYW4gaW50ZXJlc3Rpbmcgc3RhdGlzdGljCi1wcml2YXRlOgorCisjZWxzZSAgLy8gIWRl
ZmluZWQoQU5HTEVfVFJBTlNMQVRPUl9ESVNBQkxFX1BPT0xfQUxMT0MpCisgICAgc3RkOjp2ZWN0
b3I8c3RkOjp2ZWN0b3I8dm9pZCAqPj4gbVN0YWNrOworI2VuZGlmCisKICAgICBUUG9vbEFsbG9j
YXRvciYgb3BlcmF0b3I9KGNvbnN0IFRQb29sQWxsb2NhdG9yJik7ICAvLyBkb250IGFsbG93IGFz
c2lnbm1lbnQgb3BlcmF0b3IKICAgICBUUG9vbEFsbG9jYXRvcihjb25zdCBUUG9vbEFsbG9jYXRv
ciYpOyAgLy8gZG9udCBhbGxvdyBkZWZhdWx0IGNvcHkgY29uc3RydWN0b3IKKyAgICBib29sIG1M
b2NrZWQ7CiB9OwogCiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL1BydW5lRW1wdHlEZWNsYXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1BydW5lRW1wdHlE
ZWNsYXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9QcnVuZUVtcHR5RGVjbGFyYXRpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjIsMTAgKzYyLDQwIEBACiAgICAgICAgICAgICAgICAgICAgIC8v
IGRlY2xhcmF0aW9uIHRoYXQgd2lsbCBiZSBwcnVuZWQ6CiAgICAgICAgICAgICAgICAgICAgIC8v
IGZsb2F0OwogICAgICAgICAgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgZW1wdHlSZXBsYWNl
bWVudDsKLSAgICAgICAgICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqcGFyZW50QWdnID0g
Z2V0UGFyZW50Tm9kZSgpLT5nZXRBc0FnZ3JlZ2F0ZSgpOwotICAgICAgICAgICAgICAgICAgICBB
U1NFUlQocGFyZW50QWdnICE9IG51bGxwdHIpOwotICAgICAgICAgICAgICAgICAgICBtTXVsdGlS
ZXBsYWNlbWVudHMucHVzaF9iYWNrKE5vZGVSZXBsYWNlV2l0aE11bHRpcGxlRW50cnkocGFyZW50
QWdnLCBub2RlLCBlbXB0eVJlcGxhY2VtZW50KSk7CisgICAgICAgICAgICAgICAgICAgIFRJbnRl
cm1CbG9jayAqcGFyZW50QXNCbG9jayA9IGdldFBhcmVudE5vZGUoKS0+Z2V0QXNCbG9jaygpOwor
ICAgICAgICAgICAgICAgICAgICAvLyBUaGUgZGVjbGFyYXRpb24gbWF5IGJlIGluc2lkZSBhIGJs
b2NrIG9yIGluIGEgbG9vcCBpbml0IGV4cHJlc3Npb24uCisgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChwYXJlbnRBc0Jsb2NrICE9IG51bGxwdHIgfHwgZ2V0UGFyZW50Tm9kZSgpLT5nZXRBc0xv
b3BOb2RlKCkgIT0gbnVsbHB0cik7CisgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRBc0Js
b2NrKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBtTXVs
dGlSZXBsYWNlbWVudHMucHVzaF9iYWNrKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5v
ZGVSZXBsYWNlV2l0aE11bHRpcGxlRW50cnkocGFyZW50QXNCbG9jaywgbm9kZSwgZW1wdHlSZXBs
YWNlbWVudCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgcXVldWVS
ZXBsYWNlbWVudChub2RlLCBudWxscHRyLCBPcmlnaW5hbE5vZGU6OklTX0RST1BQRUQpOworICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVs
c2UgaWYgKHN5bS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpICE9IEV2cUdsb2JhbCAmJgorICAg
ICAgICAgICAgICAgICAgICAgICAgIHN5bS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpICE9IEV2
cVRlbXBvcmFyeSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIFdl
J3ZlIGhpdCBhbiBlbXB0eSBzdHJ1Y3QgZGVjbGFyYXRpb24gd2l0aCBhIHF1YWxpZmllciwgZm9y
IGV4YW1wbGUgbGlrZQorICAgICAgICAgICAgICAgICAgICAvLyB0aGlzOgorICAgICAgICAgICAg
ICAgICAgICAvLyBjb25zdCBzdHJ1Y3QgYSB7IGludCBpOyB9OworICAgICAgICAgICAgICAgICAg
ICAvLyBOVklESUEgR0wgZHJpdmVyIHZlcnNpb24gMzY3LjI3IGRvZXNuJ3QgYWNjZXB0IHRoaXMg
a2luZCBvZiBkZWNsYXJhdGlvbnMsIHNvCisgICAgICAgICAgICAgICAgICAgIC8vIHdlIGNvbnZl
cnQgdGhlIGRlY2xhcmF0aW9uIHRvIGEgcmVndWxhciBzdHJ1Y3QgZGVjbGFyYXRpb24uIFRoaXMg
aXMgb2theSwKKyAgICAgICAgICAgICAgICAgICAgLy8gc2luY2UgRVNTTCAxLjAwIHNwZWMgc2Vj
dGlvbiA0LjEuOCBzYXlzIGFib3V0IHN0cnVjdHMgdGhhdCAiVGhlIG9wdGlvbmFsCisgICAgICAg
ICAgICAgICAgICAgIC8vIHF1YWxpZmllcnMgb25seSBhcHBseSB0byBhbnkgZGVjbGFyYXRvcnMs
IGFuZCBhcmUgbm90IHBhcnQgb2YgdGhlIHR5cGUgYmVpbmcKKyAgICAgICAgICAgICAgICAgICAg
Ly8gZGVmaW5lZCBmb3IgbmFtZS4iCisKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1Jbkdsb2Jh
bFNjb3BlKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBz
eW0tPmdldFR5cGVQb2ludGVyKCktPnNldFF1YWxpZmllcihFdnFHbG9iYWwpOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgc3ltLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRR
dWFsaWZpZXIoRXZxVGVtcG9yYXJ5KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9R
dWFsaWZpZXJBbGl2ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1F1YWxpZmllckFsaXZlLmgJKHJldmlzaW9uIDIwODAyMSkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1F1YWxp
ZmllckFsaXZlLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMiArMCwwIEBACi0vLwotLy8gQ29weXJp
Z2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
Ci0vLwotCi0jaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFUT1JfUVVBTElGSUVSQUxJVkVfSF8KLSNk
ZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9RVUFMSUZJRVJBTElWRV9IXwotCi1ib29sIFF1YWxp
ZmllcldyaXR0ZW4oVEludGVybU5vZGUqIHJvb3QsIFRRdWFsaWZpZXIpOwotCi0jZW5kaWYgLy8g
Q09NUElMRVJfVFJBTlNMQVRPUl9RVUFMSUZJRVJBTElWRV9IXwoKUHJvcGVydHkgY2hhbmdlcyBv
bjogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUXVhbGlm
aWVyQWxpdmUuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAj
IwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1F1YWxpZmllclR5cGVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9RdWFsaWZpZXJUeXBlcy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUXVhbGlmaWVyVHlwZXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjQ2IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAy
LTIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5j
bHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9RdWFsaWZpZXJUeXBlcy5oIgorCisjaW5jbHVkZSAi
Y29tcGlsZXIvdHJhbnNsYXRvci9EaWFnbm9zdGljcy5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGht
PgorCituYW1lc3BhY2Ugc2gKK3sKK1RMYXlvdXRRdWFsaWZpZXIgSm9pbkxheW91dFF1YWxpZmll
cnMoVExheW91dFF1YWxpZmllciBsZWZ0UXVhbGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUTGF5b3V0UXVhbGlmaWVyIHJpZ2h0UXVhbGlmaWVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZyaWdodFF1
YWxpZmllckxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
RGlhZ25vc3RpY3MgKmRpYWdub3N0aWNzKQoreworICAgIFRMYXlvdXRRdWFsaWZpZXIgam9pbmVk
UXVhbGlmaWVyID0gbGVmdFF1YWxpZmllcjsKKworICAgIGlmIChyaWdodFF1YWxpZmllci5sb2Nh
dGlvbiAhPSAtMSkKKyAgICB7CisgICAgICAgIGpvaW5lZFF1YWxpZmllci5sb2NhdGlvbiA9IHJp
Z2h0UXVhbGlmaWVyLmxvY2F0aW9uOworICAgICAgICArK2pvaW5lZFF1YWxpZmllci5sb2NhdGlv
bnNTcGVjaWZpZWQ7CisgICAgfQorICAgIGlmIChyaWdodFF1YWxpZmllci5tYXRyaXhQYWNraW5n
ICE9IEVtcFVuc3BlY2lmaWVkKQorICAgIHsKKyAgICAgICAgam9pbmVkUXVhbGlmaWVyLm1hdHJp
eFBhY2tpbmcgPSByaWdodFF1YWxpZmllci5tYXRyaXhQYWNraW5nOworICAgIH0KKyAgICBpZiAo
cmlnaHRRdWFsaWZpZXIuYmxvY2tTdG9yYWdlICE9IEVic1Vuc3BlY2lmaWVkKQorICAgIHsKKyAg
ICAgICAgam9pbmVkUXVhbGlmaWVyLmJsb2NrU3RvcmFnZSA9IHJpZ2h0UXVhbGlmaWVyLmJsb2Nr
U3RvcmFnZTsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMHU7IGkgPCByaWdodFF1YWxp
Zmllci5sb2NhbFNpemUuc2l6ZSgpOyArK2kpCisgICAgeworICAgICAgICBpZiAocmlnaHRRdWFs
aWZpZXIubG9jYWxTaXplW2ldICE9IC0xKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoam9p
bmVkUXVhbGlmaWVyLmxvY2FsU2l6ZVtpXSAhPSAtMSAmJgorICAgICAgICAgICAgICAgIGpvaW5l
ZFF1YWxpZmllci5sb2NhbFNpemVbaV0gIT0gcmlnaHRRdWFsaWZpZXIubG9jYWxTaXplW2ldKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRpYWdub3N0aWNzLT5lcnJvcihyaWdodFF1
YWxpZmllckxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fu
bm90IGhhdmUgbXVsdGlwbGUgZGlmZmVyZW50IHdvcmsgZ3JvdXAgc2l6ZSBzcGVjaWZpZXJzIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0V29ya0dyb3VwU2l6ZVN0cmlu
ZyhpKSwgIiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgam9pbmVkUXVhbGlmaWVyLmxv
Y2FsU2l6ZVtpXSA9IHJpZ2h0UXVhbGlmaWVyLmxvY2FsU2l6ZVtpXTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHJldHVybiBqb2luZWRRdWFsaWZpZXI7Cit9Cit9ICAvLyBuYW1lc3BhY2Ugc2gK
KworbmFtZXNwYWNlCit7CisKKy8vIEdMU0wgRVMgMy4xMCBkb2VzIG5vdCBpbXBvc2UgYSBzdHJp
Y3Qgb3JkZXIgb24gdHlwZSBxdWFsaWZpZXJzIGFuZCBhbGxvd3MgbXVsdGlwbGUgbGF5b3V0Cisv
LyBkZWNsYXJhdGlvbnMuCisvLyBHTFNMIEVTIDMuMTAgUmV2aXNpb24gNCwgNC4xMCBPcmRlciBv
ZiBRdWFsaWZpY2F0aW9uCitib29sIEFyZVR5cGVRdWFsaWZpZXJDaGVja3NSZWxheGVkKGludCBz
aGFkZXJWZXJzaW9uKQoreworICAgIHJldHVybiBzaGFkZXJWZXJzaW9uID49IDMxMDsKK30KKwor
I2lmIGRlZmluZWQoQU5HTEVfRU5BQkxFX0FTU0VSVFMpCitib29sIElzU2NvcGVRdWFsaWZpZXIo
VFF1YWxpZmllciBxdWFsaWZpZXIpCit7CisgICAgcmV0dXJuIHF1YWxpZmllciA9PSBFdnFHbG9i
YWwgfHwgcXVhbGlmaWVyID09IEV2cVRlbXBvcmFyeTsKK30KKworYm9vbCBJc1Njb3BlUXVhbGlm
aWVyV3JhcHBlcihjb25zdCBUUXVhbGlmaWVyV3JhcHBlckJhc2UgKnF1YWxpZmllcikKK3sKKyAg
ICBpZiAocXVhbGlmaWVyLT5nZXRUeXBlKCkgIT0gUXRTdG9yYWdlKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgY29uc3QgVFN0b3JhZ2VRdWFsaWZpZXJXcmFwcGVyICpzdG9yYWdlUXVhbGlm
aWVyID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgVFN0b3JhZ2VRdWFsaWZpZXJXcmFwcGVy
ICo+KHF1YWxpZmllcik7CisgICAgVFF1YWxpZmllciBxID0gc3RvcmFnZVF1YWxpZmllci0+Z2V0
UXVhbGlmaWVyKCk7CisgICAgcmV0dXJuIElzU2NvcGVRdWFsaWZpZXIocSk7Cit9CisKKy8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGUgaW52YXJpYW50IGZvciB0aGUgcXVhbGlmaWVyIHNlcXVlbmNlIGhv
bGRzCitib29sIElzSW52YXJpYW50Q29ycmVjdChjb25zdCBUVHlwZVF1YWxpZmllckJ1aWxkZXI6
OlF1YWxpZmllclNlcXVlbmNlICZxdWFsaWZpZXJzKQoreworICAgIC8vIFdlIHNob3VsZCBoYXZl
IGF0IGxlYXN0IG9uZSBxdWFsaWZpZXIuCisgICAgLy8gVGhlIGZpcnN0IHF1YWxpZmllciBhbHdh
eXMgdGVsbHMgdGhlIHNjb3BlLgorICAgIHJldHVybiBxdWFsaWZpZXJzLnNpemUoKSA+PSAxICYm
IElzU2NvcGVRdWFsaWZpZXJXcmFwcGVyKHF1YWxpZmllcnNbMF0pOworfQorI2VuZGlmCisKKy8v
IFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBhcmUgcXVhbGlmaWVycyB3aGljaCBoYXZlIGJlZW4gc3Bl
Y2lmaWVkIG11bHRpcGxlIHRpbWVzCisvLyBJZiBhcmVRdWFsaWZpZXJDaGVja3NSZWxheGVkIGlz
IHNldCB0byB0cnVlLCB0aGVuIGxheW91dCBxdWFsaWZpZXIgcmVwZXRpdGlvbiBpcyBhbGxvd2Vk
LgorYm9vbCBIYXNSZXBlYXRpbmdRdWFsaWZpZXJzKGNvbnN0IFRUeXBlUXVhbGlmaWVyQnVpbGRl
cjo6UXVhbGlmaWVyU2VxdWVuY2UgJnF1YWxpZmllcnMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBhcmVRdWFsaWZpZXJDaGVja3NSZWxheGVkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6c3RyaW5nICplcnJvck1lc3NhZ2UpCit7CisgICAgYm9vbCBpbnZhcmlh
bnRGb3VuZCAgICAgPSBmYWxzZTsKKyAgICBib29sIHByZWNpc2lvbkZvdW5kICAgICA9IGZhbHNl
OworICAgIGJvb2wgbGF5b3V0Rm91bmQgICAgICAgID0gZmFsc2U7CisgICAgYm9vbCBpbnRlcnBv
bGF0aW9uRm91bmQgPSBmYWxzZTsKKworICAgIHVuc2lnbmVkIGludCBsb2NhdGlvbnNTcGVjaWZp
ZWQgPSAwOworICAgIGJvb2wgaXNPdXQgICAgICAgICAgICAgICAgICAgICAgPSBmYWxzZTsKKwor
ICAgIC8vIFRoZSBpdGVyYXRpb24gc3RhcnRzIGZyb20gb25lIHNpbmNlIHRoZSBmaXJzdCBxdWFs
aWZpZXIgb25seSByZXZlYWxzIHRoZSBzY29wZSBvZiB0aGUKKyAgICAvLyBleHByZXNzaW9uLiBJ
dCBpcyBpbnNlcnRlZCBmaXJzdCB3aGVuZXZlciB0aGUgc2VxdWVuY2UgZ2V0cyBjcmVhdGVkLgor
ICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgcXVhbGlmaWVycy5zaXplKCk7ICsraSkKKyAgICB7
CisgICAgICAgIHN3aXRjaCAocXVhbGlmaWVyc1tpXS0+Z2V0VHlwZSgpKQorICAgICAgICB7Cisg
ICAgICAgICAgICBjYXNlIFF0SW52YXJpYW50OgorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGlmIChpbnZhcmlhbnRGb3VuZCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgICplcnJvck1lc3NhZ2UgPSAiVGhlIGludmFyaWFudCBxdWFsaWZpZXIgc3BlY2lmaWVk
IG11bHRpcGxlIHRpbWVzLiI7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpbnZhcmlhbnRGb3VuZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFF0
UHJlY2lzaW9uOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChwcmVjaXNpb25G
b3VuZCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICplcnJvck1lc3Nh
Z2UgPSAiVGhlIHByZWNpc2lvbiBxdWFsaWZpZXIgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVzLiI7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBwcmVjaXNpb25Gb3VuZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFF0TGF5b3V0OgorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGlmIChsYXlvdXRGb3VuZCAmJiAhYXJlUXVhbGlmaWVyQ2hl
Y2tzUmVsYXhlZCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICplcnJv
ck1lc3NhZ2UgPSAiVGhlIGxheW91dCBxdWFsaWZpZXIgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVz
LiI7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBpZiAoaW52YXJpYW50Rm91bmQgJiYgIWFyZVF1YWxpZmllckNoZWNr
c1JlbGF4ZWQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvLyBUaGlz
IGNvbWJpbmF0aW9uIGlzIG5vdCBjb3JyZWN0IGFjY29yZGluZyB0byB0aGUgc3ludGF4IHNwZWNp
ZmllZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gZm9ybWFsIGdyYW1tYXIgaW4gdGhl
IEVTU0wgMy4wMCBzcGVjLiBJbiBFU1NMIDMuMTAgdGhlIGdyYW1tYXIgZG9lcyBub3QgaGF2ZQor
ICAgICAgICAgICAgICAgICAgICAvLyBhIHNpbWlsYXIgcmVzdHJpY3Rpb24uCisgICAgICAgICAg
ICAgICAgICAgICplcnJvck1lc3NhZ2UgPQorICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBs
YXlvdXQgcXVhbGlmaWVyIGFuZCBpbnZhcmlhbnQgcXVhbGlmaWVyIGNhbm5vdCBjb2V4aXN0IGlu
IHRoZSBzYW1lICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJhdGlvbiBhY2NvcmRp
bmcgdG8gdGhlIGdyYW1tYXIuIjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGxheW91dEZvdW5kID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICBjb25zdCBUTGF5b3V0UXVhbGlmaWVyICZjdXJyZW50UXVhbGlmaWVyID0K
KyAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgVExheW91dFF1YWxpZmllcldy
YXBwZXIgKj4ocXVhbGlmaWVyc1tpXSktPmdldFF1YWxpZmllcigpOworICAgICAgICAgICAgICAg
IGxvY2F0aW9uc1NwZWNpZmllZCArPSBjdXJyZW50UXVhbGlmaWVyLmxvY2F0aW9uc1NwZWNpZmll
ZDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNh
c2UgUXRJbnRlcnBvbGF0aW9uOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vICdj
ZW50cm9pZCcgaXMgdHJlYXRlZCBhcyBhIHN0b3JhZ2UgcXVhbGlmaWVyCisgICAgICAgICAgICAg
ICAgLy8gJ2ZsYXQgY2VudHJvaWQnIHdpbGwgYmUgc3F1YXNoZWQgdG8gJ2ZsYXQnCisgICAgICAg
ICAgICAgICAgLy8gJ3Ntb290aCBjZW50cm9pZCcgd2lsbCBiZSBzcXVhc2hlZCB0byAnY2VudHJv
aWQnCisgICAgICAgICAgICAgICAgaWYgKGludGVycG9sYXRpb25Gb3VuZCkKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICplcnJvck1lc3NhZ2UgPSAiVGhlIGludGVycG9s
YXRpb24gcXVhbGlmaWVyIHNwZWNpZmllZCBtdWx0aXBsZSB0aW1lcy4iOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
aW50ZXJwb2xhdGlvbkZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgUXRTdG9yYWdlOgorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIC8vIEdvIG92ZXIgYWxsIG9mIHRoZSBzdG9yYWdlIHF1YWxpZmllcnMgdXAg
dW50aWwgdGhlIGN1cnJlbnQgb25lIGFuZCBjaGVjayBmb3IKKyAgICAgICAgICAgICAgICAvLyBy
ZXBldGl0aW9ucy4KKyAgICAgICAgICAgICAgICBUUXVhbGlmaWVyIGN1cnJlbnRRdWFsaWZpZXIg
PQorICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBUU3RvcmFnZVF1YWxpZmll
cldyYXBwZXIgKj4ocXVhbGlmaWVyc1tpXSktPmdldFF1YWxpZmllcigpOworICAgICAgICAgICAg
ICAgIGlmIChjdXJyZW50UXVhbGlmaWVyID09IEV2cVZlcnRleE91dCB8fCBjdXJyZW50UXVhbGlm
aWVyID09IEV2cUZyYWdtZW50T3V0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgaXNPdXQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBm
b3IgKHNpemVfdCBqID0gMTsgaiA8IGk7ICsraikKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChxdWFsaWZpZXJzW2pdLT5nZXRUeXBlKCkgPT0gUXRTdG9yYWdlKQor
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3Rv
cmFnZVF1YWxpZmllcldyYXBwZXIgKnByZXZpb3VzUXVhbGlmaWVyV3JhcHBlciA9CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgVFN0b3JhZ2VRdWFsaWZpZXJX
cmFwcGVyICo+KHF1YWxpZmllcnNbal0pOworICAgICAgICAgICAgICAgICAgICAgICAgVFF1YWxp
ZmllciBwcmV2aW91c1F1YWxpZmllciA9IHByZXZpb3VzUXVhbGlmaWVyV3JhcHBlci0+Z2V0UXVh
bGlmaWVyKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFF1YWxpZmllciA9
PSBwcmV2aW91c1F1YWxpZmllcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqZXJyb3JNZXNzYWdlID0gcHJldmlvdXNRdWFsaWZpZXJXcmFw
cGVyLT5nZXRRdWFsaWZpZXJTdHJpbmcoKS5jX3N0cigpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICplcnJvck1lc3NhZ2UgKz0gIiBzcGVjaWZpZWQgbXVsdGlwbGUgdGltZXMiOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYg
KGxvY2F0aW9uc1NwZWNpZmllZCA+IDEgJiYgaXNPdXQpCisgICAgeworICAgICAgICAvLyBHTFNM
IEVTIDMuMDAuNiBzZWN0aW9uIDQuMy44LjIgT3V0cHV0IExheW91dCBRdWFsaWZpZXJzCisgICAg
ICAgIC8vIEdMU0wgRVMgMy4xMCBzZWN0aW9uIDQuNC4yIE91dHB1dCBMYXlvdXQgUXVhbGlmaWVy
cworICAgICAgICAvLyAiVGhlIHF1YWxpZmllciBtYXkgYXBwZWFyIGF0IG1vc3Qgb25jZSB3aXRo
aW4gYSBkZWNsYXJhdGlvbi4iCisgICAgICAgICplcnJvck1lc3NhZ2UgPSAiT3V0cHV0IGxheW91
dCBsb2NhdGlvbiBzcGVjaWZpZWQgbXVsdGlwbGUgdGltZXMuIjsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCisvLyBHTFNMIEVTIDMuMDBfNiwg
NC43IE9yZGVyIG9mIFF1YWxpZmljYXRpb24KKy8vIFRoZSBjb3JyZWN0IG9yZGVyIG9mIHF1YWxp
ZmllcnMgaXM6CisvLyBpbnZhcmlhbnQtcXVhbGlmaWVyIGludGVycG9sYXRpb24tcXVhbGlmaWVy
IHN0b3JhZ2UtcXVhbGlmaWVyIHByZWNpc2lvbi1xdWFsaWZpZXIKKy8vIGxheW91dC1xdWFsaWZp
ZXIgaGFzIHRvIGJlIGJlZm9yZSBzdG9yYWdlLXF1YWxpZmllci4KK2Jvb2wgQXJlUXVhbGlmaWVy
c0luT3JkZXIoY29uc3QgVFR5cGVRdWFsaWZpZXJCdWlsZGVyOjpRdWFsaWZpZXJTZXF1ZW5jZSAm
cXVhbGlmaWVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgKmVycm9y
TWVzc2FnZSkKK3sKKyAgICBib29sIGZvdW5kSW50ZXJwb2xhdGlvbiA9IGZhbHNlOworICAgIGJv
b2wgZm91bmRTdG9yYWdlICAgICAgID0gZmFsc2U7CisgICAgYm9vbCBmb3VuZFByZWNpc2lvbiAg
ICAgPSBmYWxzZTsKKyAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IHF1YWxpZmllcnMuc2l6ZSgp
OyArK2kpCisgICAgeworICAgICAgICBzd2l0Y2ggKHF1YWxpZmllcnNbaV0tPmdldFR5cGUoKSkK
KyAgICAgICAgeworICAgICAgICAgICAgY2FzZSBRdEludmFyaWFudDoKKyAgICAgICAgICAgICAg
ICBpZiAoZm91bmRJbnRlcnBvbGF0aW9uIHx8IGZvdW5kU3RvcmFnZSB8fCBmb3VuZFByZWNpc2lv
bikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICplcnJvck1lc3NhZ2Ug
PSAiVGhlIGludmFyaWFudCBxdWFsaWZpZXIgaGFzIHRvIGJlIGZpcnN0IGluIHRoZSBleHByZXNz
aW9uLiI7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFF0SW50ZXJwb2xh
dGlvbjoKKyAgICAgICAgICAgICAgICBpZiAoZm91bmRTdG9yYWdlKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgKmVycm9yTWVzc2FnZSA9ICJTdG9yYWdlIHF1YWxpZmll
cnMgaGF2ZSB0byBiZSBhZnRlciBpbnRlcnBvbGF0aW9uIHF1YWxpZmllcnMuIjsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBlbHNlIGlmIChmb3VuZFByZWNpc2lvbikKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICplcnJvck1lc3NhZ2UgPQorICAgICAgICAgICAgICAgICAgICAgICAgIlBy
ZWNpc2lvbiBxdWFsaWZpZXJzIGhhdmUgdG8gYmUgYWZ0ZXIgaW50ZXJwb2xhdGlvbiBxdWFsaWZp
ZXJzLiI7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgZm91bmRJbnRlcnBvbGF0aW9uID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgUXRMYXlvdXQ6CisgICAgICAgICAgICAg
ICAgaWYgKGZvdW5kU3RvcmFnZSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICplcnJvck1lc3NhZ2UgPSAiU3RvcmFnZSBxdWFsaWZpZXJzIGhhdmUgdG8gYmUgYWZ0ZXIg
bGF5b3V0IHF1YWxpZmllcnMuIjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChmb3VuZFByZWNpc2lv
bikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICplcnJvck1lc3NhZ2Ug
PSAiUHJlY2lzaW9uIHF1YWxpZmllcnMgaGF2ZSB0byBiZSBhZnRlciBsYXlvdXQgcXVhbGlmaWVy
cy4iOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBRdFN0b3JhZ2U6Cisg
ICAgICAgICAgICAgICAgaWYgKGZvdW5kUHJlY2lzaW9uKQorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgKmVycm9yTWVzc2FnZSA9ICJQcmVjaXNpb24gcXVhbGlmaWVycyBo
YXZlIHRvIGJlIGFmdGVyIHN0b3JhZ2UgcXVhbGlmaWVycy4iOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZvdW5k
U3RvcmFnZSA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IFF0UHJlY2lzaW9uOgorICAgICAgICAgICAgICAgIGZvdW5kUHJlY2lzaW9uID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kworc3RydWN0IFF1YWxpZmllckNvbXBhcmF0b3IKK3sKKyAgICBib29sIG9wZXJhdG9yKCkoY29u
c3QgVFF1YWxpZmllcldyYXBwZXJCYXNlICpxMSwgY29uc3QgVFF1YWxpZmllcldyYXBwZXJCYXNl
ICpxMikKKyAgICB7CisgICAgICAgIHJldHVybiBxMS0+Z2V0UmFuaygpIDwgcTItPmdldFJhbmso
KTsKKyAgICB9Cit9OworCit2b2lkIFNvcnRTZXF1ZW5jZShUVHlwZVF1YWxpZmllckJ1aWxkZXI6
OlF1YWxpZmllclNlcXVlbmNlICZxdWFsaWZpZXJzKQoreworICAgIC8vIFdlIG5lZWQgYSBzdGFi
bGUgc29ydGluZyBhbGdvcml0aG0gc2luY2UgdGhlIG9yZGVyIG9mIGxheW91dC1xdWFsaWZpZXIg
ZGVjbGFyYXRpb25zIG1hdHRlci4KKyAgICAvLyBUaGUgc29ydGluZyBzdGFydHMgZnJvbSBpbmRl
eCAxLCBpbnN0ZWFkIG9mIDAsIHNpbmNlIHRoZSBlbGVtZW50IGF0IGluZGV4IDAgdGVsbHMgdGhl
IHNjb3BlCisgICAgLy8gYW5kIHdlIGFsd2F5cyB3YW50IGl0IHRvIGJlIGZpcnN0LgorICAgIHN0
ZDo6c3RhYmxlX3NvcnQocXVhbGlmaWVycy5iZWdpbigpICsgMSwgcXVhbGlmaWVycy5lbmQoKSwg
UXVhbGlmaWVyQ29tcGFyYXRvcigpKTsKK30KKworLy8gSGFuZGxlcyB0aGUgam9pbmluZyBvZiBz
dG9yYWdlIHF1YWxpZmllcnMgZm9yIHZhcmlhYmxlcy4KK2Jvb2wgSm9pblZhcmlhYmxlU3RvcmFn
ZVF1YWxpZmllcihUUXVhbGlmaWVyICpqb2luZWRRdWFsaWZpZXIsIFRRdWFsaWZpZXIgc3RvcmFn
ZVF1YWxpZmllcikKK3sKKyAgICBzd2l0Y2ggKCpqb2luZWRRdWFsaWZpZXIpCisgICAgeworICAg
ICAgICBjYXNlIEV2cUdsb2JhbDoKKyAgICAgICAgICAgICpqb2luZWRRdWFsaWZpZXIgPSBzdG9y
YWdlUXVhbGlmaWVyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRXZxVGVtcG9y
YXJ5OgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKHN0b3JhZ2VRdWFsaWZpZXIpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBFdnFDb25zdDoKKyAgICAgICAgICAg
ICAgICAgICAgKmpvaW5lZFF1YWxpZmllciA9IHN0b3JhZ2VRdWFsaWZpZXI7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgRXZxU21vb3RoOgorICAgICAgICB7CisgICAgICAgICAg
ICBzd2l0Y2ggKHN0b3JhZ2VRdWFsaWZpZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgY2FzZSBFdnFDZW50cm9pZDoKKyAgICAgICAgICAgICAgICAgICAgKmpvaW5lZFF1YWxpZmll
ciA9IEV2cUNlbnRyb2lkOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIEV2cVZlcnRleE91dDoKKyAgICAgICAgICAgICAgICAgICAgKmpvaW5lZFF1YWxp
ZmllciA9IEV2cVNtb290aE91dDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgY2FzZSBFdnFGcmFnbWVudEluOgorICAgICAgICAgICAgICAgICAgICAqam9pbmVk
UXVhbGlmaWVyID0gRXZxU21vb3RoSW47CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNh
c2UgRXZxRmxhdDoKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChzdG9yYWdlUXVhbGlm
aWVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRXZxQ2VudHJvaWQ6Cisg
ICAgICAgICAgICAgICAgICAgICpqb2luZWRRdWFsaWZpZXIgPSBFdnFGbGF0OworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEV2cVZlcnRleE91dDoKKyAg
ICAgICAgICAgICAgICAgICAgKmpvaW5lZFF1YWxpZmllciA9IEV2cUZsYXRPdXQ7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRXZxRnJhZ21lbnRJbjoK
KyAgICAgICAgICAgICAgICAgICAgKmpvaW5lZFF1YWxpZmllciA9IEV2cUZsYXRJbjsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBFdnFDZW50cm9pZDoKKyAgICAgICAgeworICAg
ICAgICAgICAgc3dpdGNoIChzdG9yYWdlUXVhbGlmaWVyKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGNhc2UgRXZxVmVydGV4T3V0OgorICAgICAgICAgICAgICAgICAgICAqam9pbmVk
UXVhbGlmaWVyID0gRXZxQ2VudHJvaWRPdXQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIGNhc2UgRXZxRnJhZ21lbnRJbjoKKyAgICAgICAgICAgICAgICAgICAg
KmpvaW5lZFF1YWxpZmllciA9IEV2cUNlbnRyb2lkSW47CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJl
dHVybiB0cnVlOworfQorCisvLyBIYW5kbGVzIHRoZSBqb2luaW5nIG9mIHN0b3JhZ2UgcXVhbGlm
aWVycyBmb3IgYSBwYXJhbWV0ZXIgaW4gYSBmdW5jdGlvbi4KK2Jvb2wgSm9pblBhcmFtZXRlclN0
b3JhZ2VRdWFsaWZpZXIoVFF1YWxpZmllciAqam9pbmVkUXVhbGlmaWVyLCBUUXVhbGlmaWVyIHN0
b3JhZ2VRdWFsaWZpZXIpCit7CisgICAgc3dpdGNoICgqam9pbmVkUXVhbGlmaWVyKQorICAgIHsK
KyAgICAgICAgY2FzZSBFdnFUZW1wb3Jhcnk6CisgICAgICAgICAgICAqam9pbmVkUXVhbGlmaWVy
ID0gc3RvcmFnZVF1YWxpZmllcjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEV2
cUNvbnN0OgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKHN0b3JhZ2VRdWFsaWZpZXIp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBFdnFJbjoKKyAgICAgICAgICAg
ICAgICAgICAgKmpvaW5lZFF1YWxpZmllciA9IEV2cUNvbnN0UmVhZE9ubHk7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitUVHlwZVF1YWxpZmllciBHZXRWYXJpYWJsZVR5
cGVRdWFsaWZpZXJGcm9tU29ydGVkU2VxdWVuY2UoCisgICAgY29uc3QgVFR5cGVRdWFsaWZpZXJC
dWlsZGVyOjpRdWFsaWZpZXJTZXF1ZW5jZSAmc29ydGVkU2VxdWVuY2UsCisgICAgVERpYWdub3N0
aWNzICpkaWFnbm9zdGljcykKK3sKKyAgICBUVHlwZVF1YWxpZmllciB0eXBlUXVhbGlmaWVyKAor
ICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBUU3RvcmFnZVF1YWxpZmllcldyYXBwZXIgKj4oc29y
dGVkU2VxdWVuY2VbMF0pLT5nZXRRdWFsaWZpZXIoKSwKKyAgICAgICAgc29ydGVkU2VxdWVuY2Vb
MF0tPmdldExpbmUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBzb3J0ZWRTZXF1ZW5j
ZS5zaXplKCk7ICsraSkKKyAgICB7CisgICAgICAgIGNvbnN0IFRRdWFsaWZpZXJXcmFwcGVyQmFz
ZSAqcXVhbGlmaWVyID0gc29ydGVkU2VxdWVuY2VbaV07CisgICAgICAgIGJvb2wgaXNRdWFsaWZp
ZXJWYWxpZCAgICAgICAgICAgICAgICAgID0gZmFsc2U7CisgICAgICAgIHN3aXRjaCAocXVhbGlm
aWVyLT5nZXRUeXBlKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgUXRJbnZhcmlhbnQ6
CisgICAgICAgICAgICAgICAgaXNRdWFsaWZpZXJWYWxpZCAgICAgICAgPSB0cnVlOworICAgICAg
ICAgICAgICAgIHR5cGVRdWFsaWZpZXIuaW52YXJpYW50ID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgUXRJbnRlcnBvbGF0aW9uOgorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZVF1YWxpZmllci5xdWFsaWZpZXIpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjYXNlIEV2cUdsb2JhbDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlzUXVhbGlmaWVyVmFsaWQgPSB0cnVlOworICAgICAgICAgICAg
ICAgICAgICAgICAgdHlwZVF1YWxpZmllci5xdWFsaWZpZXIgPQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFRJbnRlcnBvbGF0aW9uUXVhbGlmaWVyV3JhcHBl
ciAqPihxdWFsaWZpZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+Z2V0UXVh
bGlmaWVyKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzUXVhbGlmaWVyVmFsaWQg
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFF0TGF5b3V0OgorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGNvbnN0IFRMYXlvdXRRdWFsaWZpZXJXcmFwcGVyICpsYXlvdXRRdWFsaWZp
ZXJXcmFwcGVyID0KKyAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgVExheW91
dFF1YWxpZmllcldyYXBwZXIgKj4ocXVhbGlmaWVyKTsKKyAgICAgICAgICAgICAgICBpc1F1YWxp
ZmllclZhbGlkICAgICAgICAgICAgICA9IHRydWU7CisgICAgICAgICAgICAgICAgdHlwZVF1YWxp
Zmllci5sYXlvdXRRdWFsaWZpZXIgPSBzaDo6Sm9pbkxheW91dFF1YWxpZmllcnMoCisgICAgICAg
ICAgICAgICAgICAgIHR5cGVRdWFsaWZpZXIubGF5b3V0UXVhbGlmaWVyLCBsYXlvdXRRdWFsaWZp
ZXJXcmFwcGVyLT5nZXRRdWFsaWZpZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgbGF5b3V0UXVh
bGlmaWVyV3JhcHBlci0+Z2V0TGluZSgpLCBkaWFnbm9zdGljcyk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFF0U3RvcmFnZToKKyAgICAg
ICAgICAgICAgICBpc1F1YWxpZmllclZhbGlkID0gSm9pblZhcmlhYmxlU3RvcmFnZVF1YWxpZmll
cigKKyAgICAgICAgICAgICAgICAgICAgJnR5cGVRdWFsaWZpZXIucXVhbGlmaWVyLAorICAgICAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBUU3RvcmFnZVF1YWxpZmllcldyYXBwZXIg
Kj4ocXVhbGlmaWVyKS0+Z2V0UXVhbGlmaWVyKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBRdFByZWNpc2lvbjoKKyAgICAgICAgICAgICAgICBpc1F1YWxpZmll
clZhbGlkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB0eXBlUXVhbGlmaWVyLnByZWNpc2lvbiA9
CisgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFRQcmVjaXNpb25RdWFsaWZp
ZXJXcmFwcGVyICo+KHF1YWxpZmllciktPmdldFF1YWxpZmllcigpOworICAgICAgICAgICAgICAg
IEFTU0VSVCh0eXBlUXVhbGlmaWVyLnByZWNpc2lvbiAhPSBFYnBVbmRlZmluZWQpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOworICAgICAgICB9CisgICAgICAgIGlmICghaXNRdWFsaWZpZXJWYWxpZCkK
KyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmcXVhbGlmaWVyU3RyaW5nID0g
cXVhbGlmaWVyLT5nZXRRdWFsaWZpZXJTdHJpbmcoKTsKKyAgICAgICAgICAgIGRpYWdub3N0aWNz
LT5lcnJvcihxdWFsaWZpZXItPmdldExpbmUoKSwgImludmFsaWQgcXVhbGlmaWVyIGNvbWJpbmF0
aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWFsaWZpZXJTdHJpbmcuY19z
dHIoKSwgIiIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0
dXJuIHR5cGVRdWFsaWZpZXI7Cit9CisKK1RUeXBlUXVhbGlmaWVyIEdldFBhcmFtZXRlclR5cGVR
dWFsaWZpZXJGcm9tU29ydGVkU2VxdWVuY2UoCisgICAgY29uc3QgVFR5cGVRdWFsaWZpZXJCdWls
ZGVyOjpRdWFsaWZpZXJTZXF1ZW5jZSAmc29ydGVkU2VxdWVuY2UsCisgICAgVERpYWdub3N0aWNz
ICpkaWFnbm9zdGljcykKK3sKKyAgICBUVHlwZVF1YWxpZmllciB0eXBlUXVhbGlmaWVyKEV2cVRl
bXBvcmFyeSwgc29ydGVkU2VxdWVuY2VbMF0tPmdldExpbmUoKSk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDE7IGkgPCBzb3J0ZWRTZXF1ZW5jZS5zaXplKCk7ICsraSkKKyAgICB7CisgICAgICAgIGNv
bnN0IFRRdWFsaWZpZXJXcmFwcGVyQmFzZSAqcXVhbGlmaWVyID0gc29ydGVkU2VxdWVuY2VbaV07
CisgICAgICAgIGJvb2wgaXNRdWFsaWZpZXJWYWxpZCAgICAgICAgICAgICAgICAgID0gZmFsc2U7
CisgICAgICAgIHN3aXRjaCAocXVhbGlmaWVyLT5nZXRUeXBlKCkpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGNhc2UgUXRJbnZhcmlhbnQ6CisgICAgICAgICAgICBjYXNlIFF0SW50ZXJwb2xhdGlv
bjoKKyAgICAgICAgICAgIGNhc2UgUXRMYXlvdXQ6CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIFF0U3RvcmFnZToKKyAgICAgICAgICAgICAgICBpc1F1YWxpZmllclZh
bGlkID0gSm9pblBhcmFtZXRlclN0b3JhZ2VRdWFsaWZpZXIoCisgICAgICAgICAgICAgICAgICAg
ICZ0eXBlUXVhbGlmaWVyLnF1YWxpZmllciwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8Y29uc3QgVFN0b3JhZ2VRdWFsaWZpZXJXcmFwcGVyICo+KHF1YWxpZmllciktPmdldFF1YWxp
ZmllcigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgUXRQcmVj
aXNpb246CisgICAgICAgICAgICAgICAgaXNRdWFsaWZpZXJWYWxpZCA9IHRydWU7CisgICAgICAg
ICAgICAgICAgdHlwZVF1YWxpZmllci5wcmVjaXNpb24gPQorICAgICAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxjb25zdCBUUHJlY2lzaW9uUXVhbGlmaWVyV3JhcHBlciAqPihxdWFsaWZpZXIp
LT5nZXRRdWFsaWZpZXIoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQodHlwZVF1YWxpZmllci5w
cmVjaXNpb24gIT0gRWJwVW5kZWZpbmVkKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
fQorICAgICAgICBpZiAoIWlzUXVhbGlmaWVyVmFsaWQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGNvbnN0IFRTdHJpbmcgJnF1YWxpZmllclN0cmluZyA9IHF1YWxpZmllci0+Z2V0UXVhbGlmaWVy
U3RyaW5nKCk7CisgICAgICAgICAgICBkaWFnbm9zdGljcy0+ZXJyb3IocXVhbGlmaWVyLT5nZXRM
aW5lKCksICJpbnZhbGlkIHBhcmFtZXRlciBxdWFsaWZpZXIiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHF1YWxpZmllclN0cmluZy5jX3N0cigpLCAiIik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN3aXRjaCAodHlwZVF1YWxpZmllci5xdWFs
aWZpZXIpCisgICAgeworICAgICAgICBjYXNlIEV2cUluOgorICAgICAgICBjYXNlIEV2cUNvbnN0
UmVhZE9ubHk6ICAvLyBjb25zdCBpbgorICAgICAgICBjYXNlIEV2cU91dDoKKyAgICAgICAgY2Fz
ZSBFdnFJbk91dDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEV2cUNvbnN0Ogor
ICAgICAgICAgICAgdHlwZVF1YWxpZmllci5xdWFsaWZpZXIgPSBFdnFDb25zdFJlYWRPbmx5Owor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRXZxVGVtcG9yYXJ5OgorICAgICAgICAg
ICAgLy8gbm8gcXVhbGlmaWVyIGhhcyBiZWVuIHNwZWNpZmllZCwgc2V0IGl0IHRvIEV2cUluIHdo
aWNoIGlzIHRoZSBkZWZhdWx0CisgICAgICAgICAgICB0eXBlUXVhbGlmaWVyLnF1YWxpZmllciA9
IEV2cUluOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBkaWFnbm9zdGljcy0+ZXJyb3Ioc29ydGVkU2VxdWVuY2VbMF0tPmdldExpbmUoKSwgIkludmFs
aWQgcGFyYW1ldGVyIHF1YWxpZmllciAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdldFF1YWxpZmllclN0cmluZyh0eXBlUXVhbGlmaWVyLnF1YWxpZmllciksICIiKTsKKyAgICB9
CisgICAgcmV0dXJuIHR5cGVRdWFsaWZpZXI7Cit9Cit9ICAvLyBuYW1lc3BhY2UKKwordW5zaWdu
ZWQgaW50IFRJbnZhcmlhbnRRdWFsaWZpZXJXcmFwcGVyOjpnZXRSYW5rKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gMHU7Cit9CisKK3Vuc2lnbmVkIGludCBUSW50ZXJwb2xhdGlvblF1YWxpZmllcldy
YXBwZXI6OmdldFJhbmsoKSBjb25zdAoreworICAgIHJldHVybiAxdTsKK30KKwordW5zaWduZWQg
aW50IFRMYXlvdXRRdWFsaWZpZXJXcmFwcGVyOjpnZXRSYW5rKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gMnU7Cit9CisKK3Vuc2lnbmVkIGludCBUU3RvcmFnZVF1YWxpZmllcldyYXBwZXI6OmdldFJh
bmsoKSBjb25zdAoreworICAgIC8vIEZvcmNlIHRoZSAnY2VudHJvaWQnIGF1eGlsYXJ5IHN0b3Jh
Z2UgcXVhbGlmaWVyIHRvIGJlIGFsd2F5cyBmaXJzdCBhbW9uZyBhbGwgc3RvcmFnZQorICAgIC8v
IHF1YWxpZmllcnMuCisgICAgaWYgKG1TdG9yYWdlUXVhbGlmaWVyID09IEV2cUNlbnRyb2lkKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIDN1OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAg
ICByZXR1cm4gNHU7CisgICAgfQorfQorCit1bnNpZ25lZCBpbnQgVFByZWNpc2lvblF1YWxpZmll
cldyYXBwZXI6OmdldFJhbmsoKSBjb25zdAoreworICAgIHJldHVybiA1dTsKK30KKworVFR5cGVR
dWFsaWZpZXI6OlRUeXBlUXVhbGlmaWVyKFRRdWFsaWZpZXIgc2NvcGUsIGNvbnN0IFRTb3VyY2VM
b2MgJmxvYykKKyAgICA6IGxheW91dFF1YWxpZmllcihUTGF5b3V0UXVhbGlmaWVyOjpjcmVhdGUo
KSksCisgICAgICBwcmVjaXNpb24oRWJwVW5kZWZpbmVkKSwKKyAgICAgIHF1YWxpZmllcihzY29w
ZSksCisgICAgICBpbnZhcmlhbnQoZmFsc2UpLAorICAgICAgbGluZShsb2MpCit7CisgICAgQVNT
RVJUKElzU2NvcGVRdWFsaWZpZXIocXVhbGlmaWVyKSk7Cit9CisKK1RUeXBlUXVhbGlmaWVyQnVp
bGRlcjo6VFR5cGVRdWFsaWZpZXJCdWlsZGVyKGNvbnN0IFRTdG9yYWdlUXVhbGlmaWVyV3JhcHBl
ciAqc2NvcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgc2hhZGVyVmVyc2lvbikKKyAgICA6IG1TaGFkZXJWZXJzaW9uKHNoYWRlclZlcnNpb24pCit7
CisgICAgQVNTRVJUKElzU2NvcGVRdWFsaWZpZXIoc2NvcGUtPmdldFF1YWxpZmllcigpKSk7Cisg
ICAgbVF1YWxpZmllcnMucHVzaF9iYWNrKHNjb3BlKTsKK30KKwordm9pZCBUVHlwZVF1YWxpZmll
ckJ1aWxkZXI6OmFwcGVuZFF1YWxpZmllcihjb25zdCBUUXVhbGlmaWVyV3JhcHBlckJhc2UgKnF1
YWxpZmllcikKK3sKKyAgICBtUXVhbGlmaWVycy5wdXNoX2JhY2socXVhbGlmaWVyKTsKK30KKwor
Ym9vbCBUVHlwZVF1YWxpZmllckJ1aWxkZXI6OmNoZWNrU2VxdWVuY2VJc1ZhbGlkKFREaWFnbm9z
dGljcyAqZGlhZ25vc3RpY3MpIGNvbnN0Cit7CisgICAgYm9vbCBhcmVRdWFsaWZpZXJDaGVja3NS
ZWxheGVkID0gQXJlVHlwZVF1YWxpZmllckNoZWNrc1JlbGF4ZWQobVNoYWRlclZlcnNpb24pOwor
ICAgIHN0ZDo6c3RyaW5nIGVycm9yTWVzc2FnZTsKKyAgICBpZiAoSGFzUmVwZWF0aW5nUXVhbGlm
aWVycyhtUXVhbGlmaWVycywgYXJlUXVhbGlmaWVyQ2hlY2tzUmVsYXhlZCwgJmVycm9yTWVzc2Fn
ZSkpCisgICAgeworICAgICAgICBkaWFnbm9zdGljcy0+ZXJyb3IobVF1YWxpZmllcnNbMF0tPmdl
dExpbmUoKSwgInF1YWxpZmllciBzZXF1ZW5jZSIsIGVycm9yTWVzc2FnZS5jX3N0cigpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgaWYgKCFhcmVRdWFsaWZpZXJDaGVja3NSZWxheGVkICYmICFBcmVRdWFsaWZpZXJz
SW5PcmRlcihtUXVhbGlmaWVycywgJmVycm9yTWVzc2FnZSkpCisgICAgeworICAgICAgICBkaWFn
bm9zdGljcy0+ZXJyb3IobVF1YWxpZmllcnNbMF0tPmdldExpbmUoKSwgInF1YWxpZmllciBzZXF1
ZW5jZSIsIGVycm9yTWVzc2FnZS5jX3N0cigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK1RUeXBlUXVhbGlmaWVyIFRUeXBlUXVhbGlmaWVyQnVpbGRlcjo6Z2V0UGFyYW1ldGVyVHlw
ZVF1YWxpZmllcihURGlhZ25vc3RpY3MgKmRpYWdub3N0aWNzKSBjb25zdAoreworICAgIEFTU0VS
VChJc0ludmFyaWFudENvcnJlY3QobVF1YWxpZmllcnMpKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nh
c3Q8Y29uc3QgVFN0b3JhZ2VRdWFsaWZpZXJXcmFwcGVyICo+KG1RdWFsaWZpZXJzWzBdKS0+Z2V0
UXVhbGlmaWVyKCkgPT0KKyAgICAgICAgICAgRXZxVGVtcG9yYXJ5KTsKKworICAgIGlmICghY2hl
Y2tTZXF1ZW5jZUlzVmFsaWQoZGlhZ25vc3RpY3MpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFRU
eXBlUXVhbGlmaWVyKEV2cVRlbXBvcmFyeSwgbVF1YWxpZmllcnNbMF0tPmdldExpbmUoKSk7Cisg
ICAgfQorCisgICAgLy8gSWYgdGhlIHF1YWxpZmllciBjaGVja3MgYXJlIHJlbGF4ZWQsIHRoZW4g
aXQgaXMgZWFzaWVyIHRvIHNvcnQgdGhlIHF1YWxpZmllcnMgc28KKyAgICAvLyB0aGF0IHRoZSBv
cmRlciBpbXBvc2VkIGJ5IHRoZSBHTFNMIEVTIDMuMDAgc3BlYyBpcyBrZXB0LiBUaGVuIHdlIGNh
biB1c2UgdGhlIHNhbWUgY29kZSB0bworICAgIC8vIGNvbWJpbmUgdGhlIHF1YWxpZmllcnMuCisg
ICAgaWYgKEFyZVR5cGVRdWFsaWZpZXJDaGVja3NSZWxheGVkKG1TaGFkZXJWZXJzaW9uKSkKKyAg
ICB7CisgICAgICAgIC8vIENvcHkgdGhlIHF1YWxpZmllciBzZXF1ZW5jZSBzbyB0aGF0IHdlIGNh
biBzb3J0IHRoZW0uCisgICAgICAgIFF1YWxpZmllclNlcXVlbmNlIHNvcnRlZFF1YWxpZmllclNl
cXVlbmNlID0gbVF1YWxpZmllcnM7CisgICAgICAgIFNvcnRTZXF1ZW5jZShzb3J0ZWRRdWFsaWZp
ZXJTZXF1ZW5jZSk7CisgICAgICAgIHJldHVybiBHZXRQYXJhbWV0ZXJUeXBlUXVhbGlmaWVyRnJv
bVNvcnRlZFNlcXVlbmNlKHNvcnRlZFF1YWxpZmllclNlcXVlbmNlLCBkaWFnbm9zdGljcyk7Cisg
ICAgfQorICAgIHJldHVybiBHZXRQYXJhbWV0ZXJUeXBlUXVhbGlmaWVyRnJvbVNvcnRlZFNlcXVl
bmNlKG1RdWFsaWZpZXJzLCBkaWFnbm9zdGljcyk7Cit9CisKK1RUeXBlUXVhbGlmaWVyIFRUeXBl
UXVhbGlmaWVyQnVpbGRlcjo6Z2V0VmFyaWFibGVUeXBlUXVhbGlmaWVyKFREaWFnbm9zdGljcyAq
ZGlhZ25vc3RpY3MpIGNvbnN0Cit7CisgICAgQVNTRVJUKElzSW52YXJpYW50Q29ycmVjdChtUXVh
bGlmaWVycykpOworCisgICAgaWYgKCFjaGVja1NlcXVlbmNlSXNWYWxpZChkaWFnbm9zdGljcykp
CisgICAgeworICAgICAgICByZXR1cm4gVFR5cGVRdWFsaWZpZXIoCisgICAgICAgICAgICBzdGF0
aWNfY2FzdDxjb25zdCBUU3RvcmFnZVF1YWxpZmllcldyYXBwZXIgKj4obVF1YWxpZmllcnNbMF0p
LT5nZXRRdWFsaWZpZXIoKSwKKyAgICAgICAgICAgIG1RdWFsaWZpZXJzWzBdLT5nZXRMaW5lKCkp
OworICAgIH0KKworICAgIC8vIElmIHRoZSBxdWFsaWZpZXIgY2hlY2tzIGFyZSByZWxheGVkLCB0
aGVuIGl0IGlzIGVhc2llciB0byBzb3J0IHRoZSBxdWFsaWZpZXJzIHNvCisgICAgLy8gdGhhdCB0
aGUgb3JkZXIgaW1wb3NlZCBieSB0aGUgR0xTTCBFUyAzLjAwIHNwZWMgaXMga2VwdC4gVGhlbiB3
ZSBjYW4gdXNlIHRoZSBzYW1lIGNvZGUgdG8KKyAgICAvLyBjb21iaW5lIHRoZSBxdWFsaWZpZXJz
LgorICAgIGlmIChBcmVUeXBlUXVhbGlmaWVyQ2hlY2tzUmVsYXhlZChtU2hhZGVyVmVyc2lvbikp
CisgICAgeworICAgICAgICAvLyBDb3B5IHRoZSBxdWFsaWZpZXIgc2VxdWVuY2Ugc28gdGhhdCB3
ZSBjYW4gc29ydCB0aGVtLgorICAgICAgICBRdWFsaWZpZXJTZXF1ZW5jZSBzb3J0ZWRRdWFsaWZp
ZXJTZXF1ZW5jZSA9IG1RdWFsaWZpZXJzOworICAgICAgICBTb3J0U2VxdWVuY2Uoc29ydGVkUXVh
bGlmaWVyU2VxdWVuY2UpOworICAgICAgICByZXR1cm4gR2V0VmFyaWFibGVUeXBlUXVhbGlmaWVy
RnJvbVNvcnRlZFNlcXVlbmNlKHNvcnRlZFF1YWxpZmllclNlcXVlbmNlLCBkaWFnbm9zdGljcyk7
CisgICAgfQorICAgIHJldHVybiBHZXRWYXJpYWJsZVR5cGVRdWFsaWZpZXJGcm9tU29ydGVkU2Vx
dWVuY2UobVF1YWxpZmllcnMsIGRpYWdub3N0aWNzKTsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1F1YWxpZmllclR5cGVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
UXVhbGlmaWVyVHlwZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9RdWFsaWZpZXJUeXBlcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTcwIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaWZuZGVmIENPTVBJTEVS
X1RSQU5TTEFUT1JfUVVBTElGSUVSX1RZUEVTX0hfCisjZGVmaW5lIENPTVBJTEVSX1RSQU5TTEFU
T1JfUVVBTElGSUVSX1RZUEVTX0hfCisKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgor
I2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvQmFzZVR5cGVzLmgiCisjaW5jbHVkZSAiY29t
cGlsZXIvdHJhbnNsYXRvci9UeXBlcy5oIgorCitjbGFzcyBURGlhZ25vc3RpY3M7CisKK25hbWVz
cGFjZSBzaAoreworVExheW91dFF1YWxpZmllciBKb2luTGF5b3V0UXVhbGlmaWVycyhUTGF5b3V0
UXVhbGlmaWVyIGxlZnRRdWFsaWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRMYXlvdXRRdWFsaWZpZXIgcmlnaHRRdWFsaWZpZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJnJpZ2h0UXVhbGlmaWVyTG9j
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFREaWFnbm9zdGlj
cyAqZGlhZ25vc3RpY3MpOworfSAgLy8gbmFtZXNwYWNlIHNoCisKK2VudW0gVFF1YWxpZmllclR5
cGUKK3sKKyAgICBRdEludmFyaWFudCwKKyAgICBRdEludGVycG9sYXRpb24sCisgICAgUXRMYXlv
dXQsCisgICAgUXRTdG9yYWdlLAorICAgIFF0UHJlY2lzaW9uCit9OworCitjbGFzcyBUUXVhbGlm
aWVyV3JhcHBlckJhc2UgOiBhbmdsZTo6Tm9uQ29weWFibGUKK3sKKyAgcHVibGljOgorICAgIFBP
T0xfQUxMT0NBVE9SX05FV19ERUxFVEUoKTsKKyAgICBUUXVhbGlmaWVyV3JhcHBlckJhc2UoY29u
c3QgVFNvdXJjZUxvYyAmbGluZSkgOiBtTGluZShsaW5lKSB7fQorICAgIHZpcnR1YWwgflRRdWFs
aWZpZXJXcmFwcGVyQmFzZSgpe307CisgICAgdmlydHVhbCBUUXVhbGlmaWVyVHlwZSBnZXRUeXBl
KCkgY29uc3QgICAgID0gMDsKKyAgICB2aXJ0dWFsIFRTdHJpbmcgZ2V0UXVhbGlmaWVyU3RyaW5n
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFJhbmsoKSBjb25zdCAg
ICAgICA9IDA7CisgICAgY29uc3QgVFNvdXJjZUxvYyAmZ2V0TGluZSgpIGNvbnN0IHsgcmV0dXJu
IG1MaW5lOyB9CisgIHByaXZhdGU6CisgICAgVFNvdXJjZUxvYyBtTGluZTsKK307CisKK2NsYXNz
IFRJbnZhcmlhbnRRdWFsaWZpZXJXcmFwcGVyIGZpbmFsIDogcHVibGljIFRRdWFsaWZpZXJXcmFw
cGVyQmFzZQoreworICBwdWJsaWM6CisgICAgVEludmFyaWFudFF1YWxpZmllcldyYXBwZXIoY29u
c3QgVFNvdXJjZUxvYyAmbGluZSkgOiBUUXVhbGlmaWVyV3JhcHBlckJhc2UobGluZSkge30KKyAg
ICB+VEludmFyaWFudFF1YWxpZmllcldyYXBwZXIoKSB7fQorCisgICAgVFF1YWxpZmllclR5cGUg
Z2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIFF0SW52YXJpYW50OyB9CisgICAgVFN0cmluZyBnZXRR
dWFsaWZpZXJTdHJpbmcoKSBjb25zdCB7IHJldHVybiAiaW52YXJpYW50IjsgfQorICAgIHVuc2ln
bmVkIGludCBnZXRSYW5rKCkgY29uc3Q7Cit9OworCitjbGFzcyBUSW50ZXJwb2xhdGlvblF1YWxp
ZmllcldyYXBwZXIgZmluYWwgOiBwdWJsaWMgVFF1YWxpZmllcldyYXBwZXJCYXNlCit7CisgIHB1
YmxpYzoKKyAgICBUSW50ZXJwb2xhdGlvblF1YWxpZmllcldyYXBwZXIoVFF1YWxpZmllciBpbnRl
cnBvbGF0aW9uUXVhbGlmaWVyLCBjb25zdCBUU291cmNlTG9jICZsaW5lKQorICAgICAgICA6IFRR
dWFsaWZpZXJXcmFwcGVyQmFzZShsaW5lKSwgbUludGVycG9sYXRpb25RdWFsaWZpZXIoaW50ZXJw
b2xhdGlvblF1YWxpZmllcikKKyAgICB7CisgICAgfQorICAgIH5USW50ZXJwb2xhdGlvblF1YWxp
ZmllcldyYXBwZXIoKSB7fQorCisgICAgVFF1YWxpZmllclR5cGUgZ2V0VHlwZSgpIGNvbnN0IHsg
cmV0dXJuIFF0SW50ZXJwb2xhdGlvbjsgfQorICAgIFRTdHJpbmcgZ2V0UXVhbGlmaWVyU3RyaW5n
KCkgY29uc3QgeyByZXR1cm4gOjpnZXRRdWFsaWZpZXJTdHJpbmcobUludGVycG9sYXRpb25RdWFs
aWZpZXIpOyB9CisgICAgVFF1YWxpZmllciBnZXRRdWFsaWZpZXIoKSBjb25zdCB7IHJldHVybiBt
SW50ZXJwb2xhdGlvblF1YWxpZmllcjsgfQorICAgIHVuc2lnbmVkIGludCBnZXRSYW5rKCkgY29u
c3Q7CisKKyAgcHJpdmF0ZToKKyAgICBUUXVhbGlmaWVyIG1JbnRlcnBvbGF0aW9uUXVhbGlmaWVy
OworfTsKKworY2xhc3MgVExheW91dFF1YWxpZmllcldyYXBwZXIgZmluYWwgOiBwdWJsaWMgVFF1
YWxpZmllcldyYXBwZXJCYXNlCit7CisgIHB1YmxpYzoKKyAgICBUTGF5b3V0UXVhbGlmaWVyV3Jh
cHBlcihUTGF5b3V0UXVhbGlmaWVyIGxheW91dFF1YWxpZmllciwgY29uc3QgVFNvdXJjZUxvYyAm
bGluZSkKKyAgICAgICAgOiBUUXVhbGlmaWVyV3JhcHBlckJhc2UobGluZSksIG1MYXlvdXRRdWFs
aWZpZXIobGF5b3V0UXVhbGlmaWVyKQorICAgIHsKKyAgICB9CisgICAgflRMYXlvdXRRdWFsaWZp
ZXJXcmFwcGVyKCkge30KKworICAgIFRRdWFsaWZpZXJUeXBlIGdldFR5cGUoKSBjb25zdCB7IHJl
dHVybiBRdExheW91dDsgfQorICAgIFRTdHJpbmcgZ2V0UXVhbGlmaWVyU3RyaW5nKCkgY29uc3Qg
eyByZXR1cm4gImxheW91dCI7IH0KKyAgICBjb25zdCBUTGF5b3V0UXVhbGlmaWVyICZnZXRRdWFs
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtTGF5b3V0UXVhbGlmaWVyOyB9CisgICAgdW5zaWduZWQg
aW50IGdldFJhbmsoKSBjb25zdDsKKworICBwcml2YXRlOgorICAgIFRMYXlvdXRRdWFsaWZpZXIg
bUxheW91dFF1YWxpZmllcjsKK307CisKK2NsYXNzIFRTdG9yYWdlUXVhbGlmaWVyV3JhcHBlciBm
aW5hbCA6IHB1YmxpYyBUUXVhbGlmaWVyV3JhcHBlckJhc2UKK3sKKyAgcHVibGljOgorICAgIFRT
dG9yYWdlUXVhbGlmaWVyV3JhcHBlcihUUXVhbGlmaWVyIHN0b3JhZ2VRdWFsaWZpZXIsIGNvbnN0
IFRTb3VyY2VMb2MgJmxpbmUpCisgICAgICAgIDogVFF1YWxpZmllcldyYXBwZXJCYXNlKGxpbmUp
LCBtU3RvcmFnZVF1YWxpZmllcihzdG9yYWdlUXVhbGlmaWVyKQorICAgIHsKKyAgICB9CisgICAg
flRTdG9yYWdlUXVhbGlmaWVyV3JhcHBlcigpIHt9CisKKyAgICBUUXVhbGlmaWVyVHlwZSBnZXRU
eXBlKCkgY29uc3QgeyByZXR1cm4gUXRTdG9yYWdlOyB9CisgICAgVFN0cmluZyBnZXRRdWFsaWZp
ZXJTdHJpbmcoKSBjb25zdCB7IHJldHVybiA6OmdldFF1YWxpZmllclN0cmluZyhtU3RvcmFnZVF1
YWxpZmllcik7IH0KKyAgICBUUXVhbGlmaWVyIGdldFF1YWxpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1TdG9yYWdlUXVhbGlmaWVyOyB9CisgICAgdW5zaWduZWQgaW50IGdldFJhbmsoKSBjb25zdDsK
KworICBwcml2YXRlOgorICAgIFRRdWFsaWZpZXIgbVN0b3JhZ2VRdWFsaWZpZXI7Cit9OworCitj
bGFzcyBUUHJlY2lzaW9uUXVhbGlmaWVyV3JhcHBlciBmaW5hbCA6IHB1YmxpYyBUUXVhbGlmaWVy
V3JhcHBlckJhc2UKK3sKKyAgcHVibGljOgorICAgIFRQcmVjaXNpb25RdWFsaWZpZXJXcmFwcGVy
KFRQcmVjaXNpb24gcHJlY2lzaW9uUXVhbGlmaWVyLCBjb25zdCBUU291cmNlTG9jICZsaW5lKQor
ICAgICAgICA6IFRRdWFsaWZpZXJXcmFwcGVyQmFzZShsaW5lKSwgbVByZWNpc2lvblF1YWxpZmll
cihwcmVjaXNpb25RdWFsaWZpZXIpCisgICAgeworICAgIH0KKyAgICB+VFByZWNpc2lvblF1YWxp
ZmllcldyYXBwZXIoKSB7fQorCisgICAgVFF1YWxpZmllclR5cGUgZ2V0VHlwZSgpIGNvbnN0IHsg
cmV0dXJuIFF0UHJlY2lzaW9uOyB9CisgICAgVFN0cmluZyBnZXRRdWFsaWZpZXJTdHJpbmcoKSBj
b25zdCB7IHJldHVybiA6OmdldFByZWNpc2lvblN0cmluZyhtUHJlY2lzaW9uUXVhbGlmaWVyKTsg
fQorICAgIFRQcmVjaXNpb24gZ2V0UXVhbGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbVByZWNpc2lv
blF1YWxpZmllcjsgfQorICAgIHVuc2lnbmVkIGludCBnZXRSYW5rKCkgY29uc3Q7CisKKyAgcHJp
dmF0ZToKKyAgICBUUHJlY2lzaW9uIG1QcmVjaXNpb25RdWFsaWZpZXI7Cit9OworCisvLyBUVHlw
ZVF1YWxpZmllciB0aWdodGx5IGNvdmVycyB0eXBlX3F1YWxpZmllciBmcm9tIHRoZSBncmFtbWFy
CitzdHJ1Y3QgVFR5cGVRdWFsaWZpZXIKK3sKKyAgICAvLyBpbml0aWFsaXplcyBhbGwgb2YgdGhl
IHF1YWxpZmllcnMgYW5kIHNldHMgdGhlIHNjb3BlCisgICAgVFR5cGVRdWFsaWZpZXIoVFF1YWxp
ZmllciBzY29wZSwgY29uc3QgVFNvdXJjZUxvYyAmbG9jKTsKKworICAgIFRMYXlvdXRRdWFsaWZp
ZXIgbGF5b3V0UXVhbGlmaWVyOworICAgIFRQcmVjaXNpb24gcHJlY2lzaW9uOworICAgIFRRdWFs
aWZpZXIgcXVhbGlmaWVyOworICAgIGJvb2wgaW52YXJpYW50OworICAgIFRTb3VyY2VMb2MgbGlu
ZTsKK307CisKKy8vIFRUeXBlUXVhbGlmaWVyQnVpbGRlciBjb250YWlucyBhbGwgb2YgdGhlIHF1
YWxpZmllcnMgd2hlbiB0eXBlX3F1YWxpZmllciBnZXRzIHBhcnNlZC4KKy8vIEl0IGlzIHRvIGJl
IHVzZWQgdG8gdmFsaWRhdGUgdGhlIHF1YWxpZmllciBzZXF1ZW5jZSBhbmQgYnVpbGQgYSBUVHlw
ZVF1YWxpZmllciBmcm9tIGl0LgorY2xhc3MgVFR5cGVRdWFsaWZpZXJCdWlsZGVyIDogYW5nbGU6
Ok5vbkNvcHlhYmxlCit7CisgIHB1YmxpYzoKKyAgICB1c2luZyBRdWFsaWZpZXJTZXF1ZW5jZSA9
IFRWZWN0b3I8Y29uc3QgVFF1YWxpZmllcldyYXBwZXJCYXNlICo+OworCisgIHB1YmxpYzoKKyAg
ICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKCk7CisgICAgVFR5cGVRdWFsaWZpZXJCdWlsZGVy
KGNvbnN0IFRTdG9yYWdlUXVhbGlmaWVyV3JhcHBlciAqc2NvcGUsIGludCBzaGFkZXJWZXJzaW9u
KTsKKyAgICAvLyBBZGRzIHRoZSBwYXNzZWQgcXVhbGlmaWVyIHRvIHRoZSBlbmQgb2YgdGhlIHNl
cXVlbmNlLgorICAgIHZvaWQgYXBwZW5kUXVhbGlmaWVyKGNvbnN0IFRRdWFsaWZpZXJXcmFwcGVy
QmFzZSAqcXVhbGlmaWVyKTsKKyAgICAvLyBDaGVja3MgZm9yIHRoZSBvcmRlciBvZiBxdWFsaWZp
Y2F0aW9uIGFuZCByZXBlYXRpbmcgcXVhbGlmaWVycy4KKyAgICBib29sIGNoZWNrU2VxdWVuY2VJ
c1ZhbGlkKFREaWFnbm9zdGljcyAqZGlhZ25vc3RpY3MpIGNvbnN0OworICAgIC8vIEdvZXMgb3Zl
ciB0aGUgcXVhbGlmaWVyIHNlcXVlbmNlIGFuZCBwYXJzZXMgaXQgdG8gZm9ybSBhIHR5cGUgcXVh
bGlmaWVyIGZvciBhIGZ1bmN0aW9uCisgICAgLy8gcGFyYW1ldGVyLgorICAgIC8vIFRoZSByZXR1
cm5lZCBvYmplY3QgaXMgaW5pdGlhbGl6ZWQgZXZlbiBpZiB0aGUgcGFyc2luZyBmYWlscy4KKyAg
ICBUVHlwZVF1YWxpZmllciBnZXRQYXJhbWV0ZXJUeXBlUXVhbGlmaWVyKFREaWFnbm9zdGljcyAq
ZGlhZ25vc3RpY3MpIGNvbnN0OworICAgIC8vIEdvZXMgb3ZlciB0aGUgcXVhbGlmaWVyIHNlcXVl
bmNlIGFuZCBwYXJzZXMgaXQgdG8gZm9ybSBhIHR5cGUgcXVhbGlmaWVyIGZvciBhIHZhcmlhYmxl
LgorICAgIC8vIFRoZSByZXR1cm5lZCBvYmplY3QgaXMgaW5pdGlhbGl6ZWQgZXZlbiBpZiB0aGUg
cGFyc2luZyBmYWlscy4KKyAgICBUVHlwZVF1YWxpZmllciBnZXRWYXJpYWJsZVR5cGVRdWFsaWZp
ZXIoVERpYWdub3N0aWNzICpkaWFnbm9zdGljcykgY29uc3Q7CisKKyAgcHJpdmF0ZToKKyAgICBR
dWFsaWZpZXJTZXF1ZW5jZSBtUXVhbGlmaWVyczsKKyAgICBpbnQgbVNoYWRlclZlcnNpb247Cit9
OworCisjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfUVVBTElGSUVSX1RZUEVTX0hfCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZWNv
cmRDb25zdGFudFByZWNpc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVjb3JkQ29uc3RhbnRQcmVjaXNpb24uY3Bw
CShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9SZWNvcmRDb25zdGFudFByZWNpc2lvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ1LDYgKzQ1LDExIEBACiAKIGJvb2wgUmVjb3JkQ29uc3RhbnRQcmVjaXNpb25UcmF2ZXJz
ZXI6Om9wZXJhbmRBZmZlY3RzUGFyZW50T3BlcmF0aW9uUHJlY2lzaW9uKFRJbnRlcm1UeXBlZCAq
b3BlcmFuZCkKIHsKKyAgICBpZiAoZ2V0UGFyZW50Tm9kZSgpLT5nZXRBc0Nhc2VOb2RlKCkgfHwg
Z2V0UGFyZW50Tm9kZSgpLT5nZXRBc0Jsb2NrKCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCiAgICAgY29uc3QgVEludGVybUJpbmFyeSAqcGFyZW50QXNCaW5hcnkgPSBn
ZXRQYXJlbnROb2RlKCktPmdldEFzQmluYXJ5Tm9kZSgpOwogICAgIGlmIChwYXJlbnRBc0JpbmFy
eSAhPSBudWxscHRyKQogICAgIHsKQEAgLTEyOCw3ICsxMzMsNyBAQAogICAgIFRJbnRlcm1TZXF1
ZW5jZSBpbnNlcnRpb25zOwogICAgIGluc2VydGlvbnMucHVzaF9iYWNrKGNyZWF0ZVRlbXBJbml0
RGVjbGFyYXRpb24obm9kZSwgRXZxQ29uc3QpKTsKICAgICBpbnNlcnRTdGF0ZW1lbnRzSW5QYXJl
bnRCbG9jayhpbnNlcnRpb25zKTsKLSAgICBtUmVwbGFjZW1lbnRzLnB1c2hfYmFjayhOb2RlVXBk
YXRlRW50cnkoZ2V0UGFyZW50Tm9kZSgpLCBub2RlLCBjcmVhdGVUZW1wU3ltYm9sKG5vZGUtPmdl
dFR5cGUoKSksIGZhbHNlKSk7CisgICAgcXVldWVSZXBsYWNlbWVudChub2RlLCBjcmVhdGVUZW1w
U3ltYm9sKG5vZGUtPmdldFR5cGUoKSksIE9yaWdpbmFsTm9kZTo6SVNfRFJPUFBFRCk7CiAgICAg
bUZvdW5kSGlnaGVyUHJlY2lzaW9uQ29uc3RhbnQgPSB0cnVlOwogfQogCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZWdlbmVyYXRlU3RydWN0
TmFtZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1JlZ2VuZXJhdGVTdHJ1Y3ROYW1lcy5jcHAJKHJldmlzaW9uIDIwODAy
MSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Jl
Z2VuZXJhdGVTdHJ1Y3ROYW1lcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDI1ICs1OCwxNCBA
QAogICAgIHVzZXJUeXBlLT5zZXROYW1lKHRtcCk7CiB9CiAKLWJvb2wgUmVnZW5lcmF0ZVN0cnVj
dE5hbWVzOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqYWdncmVnYXRl
KQorYm9vbCBSZWdlbmVyYXRlU3RydWN0TmFtZXM6OnZpc2l0QmxvY2soVmlzaXQsIFRJbnRlcm1C
bG9jayAqYmxvY2spCiB7Ci0gICAgQVNTRVJUKGFnZ3JlZ2F0ZSk7Ci0gICAgc3dpdGNoIChhZ2dy
ZWdhdGUtPmdldE9wKCkpCisgICAgKyttU2NvcGVEZXB0aDsKKyAgICBUSW50ZXJtU2VxdWVuY2Ug
JnNlcXVlbmNlID0gKihibG9jay0+Z2V0U2VxdWVuY2UoKSk7CisgICAgZm9yIChUSW50ZXJtTm9k
ZSAqbm9kZSA6IHNlcXVlbmNlKQogICAgIHsKLSAgICAgIGNhc2UgRU9wU2VxdWVuY2U6Ci0gICAg
ICAgICsrbVNjb3BlRGVwdGg7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5j
ZSAmc2VxdWVuY2UgPSAqKGFnZ3JlZ2F0ZS0+Z2V0U2VxdWVuY2UoKSk7Ci0gICAgICAgICAgICBm
b3IgKHNpemVfdCBpaSA9IDA7IGlpIDwgc2VxdWVuY2Uuc2l6ZSgpOyArK2lpKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICpub2RlID0gc2VxdWVuY2VbaWldOwot
ICAgICAgICAgICAgICAgIEFTU0VSVChub2RlICE9IE5VTEwpOwotICAgICAgICAgICAgICAgIG5v
ZGUtPnRyYXZlcnNlKHRoaXMpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIC0t
bVNjb3BlRGVwdGg7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICBub2RlLT50cmF2ZXJzZSh0aGlzKTsKICAgICB9Cisg
ICAgLS1tU2NvcGVEZXB0aDsKKyAgICByZXR1cm4gZmFsc2U7CiB9CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZWdlbmVyYXRlU3RydWN0TmFt
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9SZWdlbmVyYXRlU3RydWN0TmFtZXMuaAkocmV2aXNpb24gMjA4MDIxKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVnZW5lcmF0
ZVN0cnVjdE5hbWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKIAogICBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICopIG92ZXJyaWRlOwot
ICAgIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKikgb3ZlcnJp
ZGU7CisgICAgYm9vbCB2aXNpdEJsb2NrKFZpc2l0LCBUSW50ZXJtQmxvY2sgKmJsb2NrKSBvdmVy
cmlkZTsKIAogICBwcml2YXRlOgogICAgIGNvbnN0IFRTeW1ib2xUYWJsZSAmbVN5bWJvbFRhYmxl
OwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
UmVtb3ZlRHluYW1pY0luZGV4aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZW1vdmVEeW5hbWljSW5kZXhpbmcuY3Bw
CShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9SZW1vdmVEeW5hbWljSW5kZXhpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMSw2ICsxMSw3IEBACiAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0luZm9TaW5r
LmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCisjaW5jbHVk
ZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXIuaCIKICNpbmNs
dWRlICJjb21waWxlci90cmFuc2xhdG9yL1N5bWJvbFRhYmxlLmgiCiAKIG5hbWVzcGFjZQpAQCAt
OTEsMjEgKzkyLDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVFF1YWxpZmllciBiYXNlUXVhbGlmaWVyKQogewotICAgIFRJbnRlcm1C
aW5hcnkgKmluZGV4Tm9kZSA9IG5ldyBUSW50ZXJtQmluYXJ5KEVPcEluZGV4RGlyZWN0KTsKLSAg
ICBpbmRleE5vZGUtPnNldFR5cGUoZmllbGRUeXBlKTsKICAgICBUSW50ZXJtU3ltYm9sICpiYXNl
U3ltYm9sID0gQ3JlYXRlQmFzZVN5bWJvbChpbmRleGVkVHlwZSwgYmFzZVF1YWxpZmllcik7Ci0g
ICAgaW5kZXhOb2RlLT5zZXRMZWZ0KGJhc2VTeW1ib2wpOwotICAgIGluZGV4Tm9kZS0+c2V0Umln
aHQoQ3JlYXRlSW50Q29uc3RhbnROb2RlKGluZGV4KSk7CisgICAgVEludGVybUJpbmFyeSAqaW5k
ZXhOb2RlID0KKyAgICAgICAgbmV3IFRJbnRlcm1CaW5hcnkoRU9wSW5kZXhEaXJlY3QsIGJhc2VT
eW1ib2wsIFRJbnRlcm1UeXBlZDo6Q3JlYXRlSW5kZXhOb2RlKGluZGV4KSk7CiAgICAgcmV0dXJu
IGluZGV4Tm9kZTsKIH0KIAogVEludGVybUJpbmFyeSAqQ3JlYXRlQXNzaWduVmFsdWVTeW1ib2xO
b2RlKFRJbnRlcm1UeXBlZCAqdGFyZ2V0Tm9kZSwgY29uc3QgVFR5cGUgJmFzc2lnbmVkVmFsdWVU
eXBlKQogewotICAgIFRJbnRlcm1CaW5hcnkgKmFzc2lnbk5vZGUgPSBuZXcgVEludGVybUJpbmFy
eShFT3BBc3NpZ24pOwotICAgIGFzc2lnbk5vZGUtPnNldFR5cGUoYXNzaWduZWRWYWx1ZVR5cGUp
OwotICAgIGFzc2lnbk5vZGUtPnNldExlZnQodGFyZ2V0Tm9kZSk7Ci0gICAgYXNzaWduTm9kZS0+
c2V0UmlnaHQoQ3JlYXRlVmFsdWVTeW1ib2woYXNzaWduZWRWYWx1ZVR5cGUpKTsKLSAgICByZXR1
cm4gYXNzaWduTm9kZTsKKyAgICByZXR1cm4gbmV3IFRJbnRlcm1CaW5hcnkoRU9wQXNzaWduLCB0
YXJnZXROb2RlLCBDcmVhdGVWYWx1ZVN5bWJvbChhc3NpZ25lZFZhbHVlVHlwZSkpOwogfQogCiBU
SW50ZXJtVHlwZWQgKkVuc3VyZVNpZ25lZEludChUSW50ZXJtVHlwZWQgKm5vZGUpCkBAIC0xNzcs
NyArMTcyLDcgQEAKIC8vICAgIGJhc2VbMV0gPSB2YWx1ZTsKIC8vIH0KIC8vIE5vdGUgdGhhdCBl
bHNlIGlzIG5vdCB1c2VkIGluIGFib3ZlIGZ1bmN0aW9ucyB0byBhdm9pZCB0aGUgUmV3cml0ZUVs
c2VCbG9ja3MgdHJhbnNmb3JtYXRpb24uCi1USW50ZXJtQWdncmVnYXRlICpHZXRJbmRleEZ1bmN0
aW9uRGVmaW5pdGlvbihUVHlwZSB0eXBlLCBib29sIHdyaXRlKQorVEludGVybUZ1bmN0aW9uRGVm
aW5pdGlvbiAqR2V0SW5kZXhGdW5jdGlvbkRlZmluaXRpb24oVFR5cGUgdHlwZSwgYm9vbCB3cml0
ZSkKIHsKICAgICBBU1NFUlQoIXR5cGUuaXNBcnJheSgpKTsKICAgICAvLyBDb25zZXJ2YXRpdmVs
eSB1c2UgaGlnaHAgaGVyZSwgZXZlbiBpZiB0aGUgaW5kZXhlZCB0eXBlIGlzIG5vdCBoaWdocC4g
VGhhdCB3YXkgdGhlIGNvZGUgY2FuJ3QKQEAgLTE4NSw4ICsxODAsNiBAQAogICAgIC8vIGhpZ2hw
IHZhbHVlcyBhcmUgYmVpbmcgaW5kZXhlZCBpbiB0aGUgc2hhZGVyLiBGb3IgSExTTCBwcmVjaXNp
b24gZG9lc24ndCBtYXR0ZXIsIGJ1dCBpbgogICAgIC8vIHByaW5jaXBsZSB0aGlzIGNvZGUgY291
bGQgYmUgdXNlZCB3aXRoIG11bHRpcGxlIGJhY2tlbmRzLgogICAgIHR5cGUuc2V0UHJlY2lzaW9u
KEVicEhpZ2gpOwotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmluZGV4aW5nRnVuY3Rpb24gPSBuZXcg
VEludGVybUFnZ3JlZ2F0ZShFT3BGdW5jdGlvbik7Ci0gICAgaW5kZXhpbmdGdW5jdGlvbi0+c2V0
TmFtZU9iaihHZXRJbmRleEZ1bmN0aW9uTmFtZSh0eXBlLCB3cml0ZSkpOwogCiAgICAgVFR5cGUg
ZmllbGRUeXBlID0gR2V0RmllbGRUeXBlKHR5cGUpOwogICAgIGludCBudW1DYXNlcyA9IDA7CkBA
IC0xOTgsMTQgKzE5MSw2IEBACiAgICAgewogICAgICAgICBudW1DYXNlcyA9IHR5cGUuZ2V0Tm9t
aW5hbFNpemUoKTsKICAgICB9Ci0gICAgaWYgKHdyaXRlKQotICAgIHsKLSAgICAgICAgaW5kZXhp
bmdGdW5jdGlvbi0+c2V0VHlwZShUVHlwZShFYnRWb2lkKSk7Ci0gICAgfQotICAgIGVsc2UKLSAg
ICB7Ci0gICAgICAgIGluZGV4aW5nRnVuY3Rpb24tPnNldFR5cGUoZmllbGRUeXBlKTsKLSAgICB9
CiAKICAgICBUSW50ZXJtQWdncmVnYXRlICpwYXJhbXNOb2RlID0gbmV3IFRJbnRlcm1BZ2dyZWdh
dGUoRU9wUGFyYW1ldGVycyk7CiAgICAgVFF1YWxpZmllciBiYXNlUXVhbGlmaWVyID0gRXZxSW5P
dXQ7CkBAIC0yMjAsOSArMjA1LDggQEAKICAgICAgICAgVEludGVybVN5bWJvbCAqdmFsdWVQYXJh
bSA9IENyZWF0ZVZhbHVlU3ltYm9sKGZpZWxkVHlwZSk7CiAgICAgICAgIHBhcmFtc05vZGUtPmdl
dFNlcXVlbmNlKCktPnB1c2hfYmFjayh2YWx1ZVBhcmFtKTsKICAgICB9Ci0gICAgaW5kZXhpbmdG
dW5jdGlvbi0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKHBhcmFtc05vZGUpOwogCi0gICAgVElu
dGVybUFnZ3JlZ2F0ZSAqc3RhdGVtZW50TGlzdCA9IG5ldyBUSW50ZXJtQWdncmVnYXRlKEVPcFNl
cXVlbmNlKTsKKyAgICBUSW50ZXJtQmxvY2sgKnN0YXRlbWVudExpc3QgPSBuZXcgVEludGVybUJs
b2NrKCk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1DYXNlczsgKytpKQogICAgIHsKICAg
ICAgICAgVEludGVybUNhc2UgKmNhc2VOb2RlID0gbmV3IFRJbnRlcm1DYXNlKENyZWF0ZUludENv
bnN0YW50Tm9kZShpKSk7CkBAIC0yNTIsMTggKzIzNiwxNyBAQAogCiAgICAgVEludGVybVN3aXRj
aCAqc3dpdGNoTm9kZSA9IG5ldyBUSW50ZXJtU3dpdGNoKENyZWF0ZUluZGV4U3ltYm9sKCksIHN0
YXRlbWVudExpc3QpOwogCi0gICAgVEludGVybUFnZ3JlZ2F0ZSAqYm9keU5vZGUgPSBuZXcgVElu
dGVybUFnZ3JlZ2F0ZShFT3BTZXF1ZW5jZSk7CisgICAgVEludGVybUJsb2NrICpib2R5Tm9kZSA9
IG5ldyBUSW50ZXJtQmxvY2soKTsKICAgICBib2R5Tm9kZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9i
YWNrKHN3aXRjaE5vZGUpOwogCi0gICAgVEludGVybUJpbmFyeSAqY29uZCA9IG5ldyBUSW50ZXJt
QmluYXJ5KEVPcExlc3NUaGFuKTsKKyAgICBUSW50ZXJtQmluYXJ5ICpjb25kID0KKyAgICAgICAg
bmV3IFRJbnRlcm1CaW5hcnkoRU9wTGVzc1RoYW4sIENyZWF0ZUluZGV4U3ltYm9sKCksIENyZWF0
ZUludENvbnN0YW50Tm9kZSgwKSk7CiAgICAgY29uZC0+c2V0VHlwZShUVHlwZShFYnRCb29sLCBF
YnBVbmRlZmluZWQpKTsKLSAgICBjb25kLT5zZXRMZWZ0KENyZWF0ZUluZGV4U3ltYm9sKCkpOwot
ICAgIGNvbmQtPnNldFJpZ2h0KENyZWF0ZUludENvbnN0YW50Tm9kZSgwKSk7CiAKICAgICAvLyBU
d28gYmxvY2tzOiBvbmUgYWNjZXNzZXMgKGVpdGhlciByZWFkcyBvciB3cml0ZXMpIHRoZSBmaXJz
dCBlbGVtZW50IGFuZCByZXR1cm5zLAogICAgIC8vIHRoZSBvdGhlciBhY2Nlc3NlcyB0aGUgbGFz
dCBlbGVtZW50LgotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnVzZUZpcnN0QmxvY2sgPSBuZXcgVElu
dGVybUFnZ3JlZ2F0ZShFT3BTZXF1ZW5jZSk7Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSAqdXNlTGFz
dEJsb2NrID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoRU9wU2VxdWVuY2UpOworICAgIFRJbnRlcm1C
bG9jayAqdXNlRmlyc3RCbG9jayA9IG5ldyBUSW50ZXJtQmxvY2soKTsKKyAgICBUSW50ZXJtQmxv
Y2sgKnVzZUxhc3RCbG9jayAgPSBuZXcgVEludGVybUJsb2NrKCk7CiAgICAgVEludGVybUJpbmFy
eSAqaW5kZXhGaXJzdE5vZGUgPQogICAgICAgICBDcmVhdGVJbmRleERpcmVjdEJhc2VTeW1ib2xO
b2RlKHR5cGUsIGZpZWxkVHlwZSwgMCwgYmFzZVF1YWxpZmllcik7CiAgICAgVEludGVybUJpbmFy
eSAqaW5kZXhMYXN0Tm9kZSA9CkBAIC0yODYsMTIgKzI2OSwyMCBAQAogICAgICAgICBUSW50ZXJt
QnJhbmNoICpyZXR1cm5MYXN0Tm9kZSA9IG5ldyBUSW50ZXJtQnJhbmNoKEVPcFJldHVybiwgaW5k
ZXhMYXN0Tm9kZSk7CiAgICAgICAgIHVzZUxhc3RCbG9jay0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9i
YWNrKHJldHVybkxhc3ROb2RlKTsKICAgICB9Ci0gICAgVEludGVybVNlbGVjdGlvbiAqaWZOb2Rl
ID0gbmV3IFRJbnRlcm1TZWxlY3Rpb24oY29uZCwgdXNlRmlyc3RCbG9jaywgbnVsbHB0cik7Cisg
ICAgVEludGVybUlmRWxzZSAqaWZOb2RlID0gbmV3IFRJbnRlcm1JZkVsc2UoY29uZCwgdXNlRmly
c3RCbG9jaywgbnVsbHB0cik7CiAgICAgYm9keU5vZGUtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFj
ayhpZk5vZGUpOwogICAgIGJvZHlOb2RlLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2sodXNlTGFz
dEJsb2NrKTsKIAotICAgIGluZGV4aW5nRnVuY3Rpb24tPmdldFNlcXVlbmNlKCktPnB1c2hfYmFj
ayhib2R5Tm9kZSk7Ci0KKyAgICBUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICppbmRleGluZ0Z1
bmN0aW9uID0gbnVsbHB0cjsKKyAgICBpZiAod3JpdGUpCisgICAgeworICAgICAgICBpbmRleGlu
Z0Z1bmN0aW9uID0gbmV3IFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24oVFR5cGUoRWJ0Vm9pZCks
IHBhcmFtc05vZGUsIGJvZHlOb2RlKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAg
aW5kZXhpbmdGdW5jdGlvbiA9IG5ldyBUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uKGZpZWxkVHlw
ZSwgcGFyYW1zTm9kZSwgYm9keU5vZGUpOworICAgIH0KKyAgICBpbmRleGluZ0Z1bmN0aW9uLT5n
ZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+c2V0TmFtZU9iaihHZXRJbmRleEZ1bmN0aW9uTmFtZSh0
eXBlLCB3cml0ZSkpOwogICAgIHJldHVybiBpbmRleGluZ0Z1bmN0aW9uOwogfQogCkBAIC0zMzMs
OCArMzI0LDggQEAKIAogdm9pZCBSZW1vdmVEeW5hbWljSW5kZXhpbmdUcmF2ZXJzZXI6Omluc2Vy
dEhlbHBlckRlZmluaXRpb25zKFRJbnRlcm1Ob2RlICpyb290KQogewotICAgIFRJbnRlcm1BZ2dy
ZWdhdGUgKnJvb3RBZ2cgPSByb290LT5nZXRBc0FnZ3JlZ2F0ZSgpOwotICAgIEFTU0VSVChyb290
QWdnICE9IG51bGxwdHIgJiYgcm9vdEFnZy0+Z2V0T3AoKSA9PSBFT3BTZXF1ZW5jZSk7CisgICAg
VEludGVybUJsb2NrICpyb290QmxvY2sgPSByb290LT5nZXRBc0Jsb2NrKCk7CisgICAgQVNTRVJU
KHJvb3RCbG9jayAhPSBudWxscHRyKTsKICAgICBUSW50ZXJtU2VxdWVuY2UgaW5zZXJ0aW9uczsK
ICAgICBmb3IgKFRUeXBlIHR5cGUgOiBtSW5kZXhlZFZlY0FuZE1hdHJpeFR5cGVzKQogICAgIHsK
QEAgLTM0NCw3ICszMzUsNyBAQAogICAgIHsKICAgICAgICAgaW5zZXJ0aW9ucy5wdXNoX2JhY2so
R2V0SW5kZXhGdW5jdGlvbkRlZmluaXRpb24odHlwZSwgdHJ1ZSkpOwogICAgIH0KLSAgICBtSW5z
ZXJ0aW9ucy5wdXNoX2JhY2soTm9kZUluc2VydE11bHRpcGxlRW50cnkocm9vdEFnZywgMCwgaW5z
ZXJ0aW9ucywgVEludGVybVNlcXVlbmNlKCkpKTsKKyAgICBtSW5zZXJ0aW9ucy5wdXNoX2JhY2so
Tm9kZUluc2VydE11bHRpcGxlRW50cnkocm9vdEJsb2NrLCAwLCBpbnNlcnRpb25zLCBUSW50ZXJt
U2VxdWVuY2UoKSkpOwogfQogCiAvLyBDcmVhdGUgYSBjYWxsIHRvIGR5bl9pbmRleF8qKCkgYmFz
ZWQgb24gYW4gaW5kaXJlY3QgaW5kZXhpbmcgb3Agbm9kZQpAQCAtMzU2LDcgKzM0Nyw4IEBACiAg
ICAgVEludGVybUFnZ3JlZ2F0ZSAqaW5kZXhpbmdDYWxsID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUo
RU9wRnVuY3Rpb25DYWxsKTsKICAgICBpbmRleGluZ0NhbGwtPnNldExpbmUobm9kZS0+Z2V0TGlu
ZSgpKTsKICAgICBpbmRleGluZ0NhbGwtPnNldFVzZXJEZWZpbmVkKCk7Ci0gICAgaW5kZXhpbmdD
YWxsLT5zZXROYW1lT2JqKEdldEluZGV4RnVuY3Rpb25OYW1lKGluZGV4ZWROb2RlLT5nZXRUeXBl
KCksIGZhbHNlKSk7CisgICAgaW5kZXhpbmdDYWxsLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+
c2V0TmFtZU9iaigKKyAgICAgICAgR2V0SW5kZXhGdW5jdGlvbk5hbWUoaW5kZXhlZE5vZGUtPmdl
dFR5cGUoKSwgZmFsc2UpKTsKICAgICBpbmRleGluZ0NhbGwtPmdldFNlcXVlbmNlKCktPnB1c2hf
YmFjayhpbmRleGVkTm9kZSk7CiAgICAgaW5kZXhpbmdDYWxsLT5nZXRTZXF1ZW5jZSgpLT5wdXNo
X2JhY2soaW5kZXgpOwogCkBAIC0zNzQsNyArMzY2LDggQEAKICAgICBBU1NFUlQobGVmdENvcHkg
IT0gbnVsbHB0ciAmJiBsZWZ0Q29weS0+Z2V0QXNUeXBlZCgpICE9IG51bGxwdHIpOwogICAgIFRJ
bnRlcm1BZ2dyZWdhdGUgKmluZGV4ZWRXcml0ZUNhbGwgPQogICAgICAgICBDcmVhdGVJbmRleEZ1
bmN0aW9uQ2FsbChub2RlLCBsZWZ0Q29weS0+Z2V0QXNUeXBlZCgpLCBpbmRleCk7Ci0gICAgaW5k
ZXhlZFdyaXRlQ2FsbC0+c2V0TmFtZU9iaihHZXRJbmRleEZ1bmN0aW9uTmFtZShub2RlLT5nZXRM
ZWZ0KCktPmdldFR5cGUoKSwgdHJ1ZSkpOworICAgIGluZGV4ZWRXcml0ZUNhbGwtPmdldEZ1bmN0
aW9uU3ltYm9sSW5mbygpLT5zZXROYW1lT2JqKAorICAgICAgICBHZXRJbmRleEZ1bmN0aW9uTmFt
ZShub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKSwgdHJ1ZSkpOwogICAgIGluZGV4ZWRXcml0ZUNh
bGwtPnNldFR5cGUoVFR5cGUoRWJ0Vm9pZCkpOwogICAgIGluZGV4ZWRXcml0ZUNhbGwtPmdldFNl
cXVlbmNlKCktPnB1c2hfYmFjayh3cml0dGVuVmFsdWUpOwogICAgIHJldHVybiBpbmRleGVkV3Jp
dGVDYWxsOwpAQCAtMzk4LDIwICszOTEsMjUgQEAKIAogICAgICAgICAgICAgLy8gSW5pdCB0aGUg
dGVtcCB2YXJpYWJsZSBob2xkaW5nIHRoZSBpbmRleAogICAgICAgICAgICAgVEludGVybUFnZ3Jl
Z2F0ZSAqaW5pdEluZGV4ID0gY3JlYXRlVGVtcEluaXREZWNsYXJhdGlvbihub2RlLT5nZXRSaWdo
dCgpKTsKLSAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSBpbnNlcnRpb25zOwotICAgICAgICAg
ICAgaW5zZXJ0aW9ucy5wdXNoX2JhY2soaW5pdEluZGV4KTsKLSAgICAgICAgICAgIGluc2VydFN0
YXRlbWVudHNJblBhcmVudEJsb2NrKGluc2VydGlvbnMpOworICAgICAgICAgICAgaW5zZXJ0U3Rh
dGVtZW50SW5QYXJlbnRCbG9jayhpbml0SW5kZXgpOwogICAgICAgICAgICAgbVVzZWRUcmVlSW5z
ZXJ0aW9uID0gdHJ1ZTsKIAogICAgICAgICAgICAgLy8gUmVwbGFjZSB0aGUgaW5kZXggd2l0aCB0
aGUgdGVtcCB2YXJpYWJsZQogICAgICAgICAgICAgVEludGVybVN5bWJvbCAqdGVtcEluZGV4ID0g
Y3JlYXRlVGVtcFN5bWJvbChub2RlLT5nZXRSaWdodCgpLT5nZXRUeXBlKCkpOwotICAgICAgICAg
ICAgTm9kZVVwZGF0ZUVudHJ5IHJlcGxhY2VJbmRleChub2RlLCBub2RlLT5nZXRSaWdodCgpLCB0
ZW1wSW5kZXgsIGZhbHNlKTsKLSAgICAgICAgICAgIG1SZXBsYWNlbWVudHMucHVzaF9iYWNrKHJl
cGxhY2VJbmRleCk7CisgICAgICAgICAgICBxdWV1ZVJlcGxhY2VtZW50V2l0aFBhcmVudChub2Rl
LCBub2RlLT5nZXRSaWdodCgpLCB0ZW1wSW5kZXgsIE9yaWdpbmFsTm9kZTo6SVNfRFJPUFBFRCk7
CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoIW5vZGUtPmdldExlZnQoKS0+aXNBcnJheSgp
ICYmIG5vZGUtPmdldExlZnQoKS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0KQorICAgICAg
ICBlbHNlIGlmIChJbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXI6OklzRHluYW1pY0luZGV4aW5nT2ZW
ZWN0b3JPck1hdHJpeChub2RlKSkKICAgICAgICAgewogICAgICAgICAgICAgYm9vbCB3cml0ZSA9
IGlzTFZhbHVlUmVxdWlyZWRIZXJlKCk7CiAKKyNpZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9BU1NF
UlRTKQorICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgSW50ZXJtTm9kZVBhdHRlcm5NYXRj
aGVyIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgc2xpZ2h0bHkgZGlmZmVyZW50bHkKKyAgICAgICAg
ICAgIC8vIGltcGxlbWVudGVkIGNoZWNrcyBpbiB0aGlzIHRyYXZlcnNlci4KKyAgICAgICAgICAg
IEludGVybU5vZGVQYXR0ZXJuTWF0Y2hlciBtYXRjaGVyKAorICAgICAgICAgICAgICAgIEludGVy
bU5vZGVQYXR0ZXJuTWF0Y2hlcjo6a0R5bmFtaWNJbmRleGluZ09mVmVjdG9yT3JNYXRyaXhJbkxW
YWx1ZSk7CisgICAgICAgICAgICBBU1NFUlQobWF0Y2hlci5tYXRjaChub2RlLCBnZXRQYXJlbnRO
b2RlKCksIGlzTFZhbHVlUmVxdWlyZWRIZXJlKCkpID09IHdyaXRlKTsKKyNlbmRpZgorCiAgICAg
ICAgICAgICBUVHlwZSB0eXBlID0gbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCk7CiAgICAgICAg
ICAgICBtSW5kZXhlZFZlY0FuZE1hdHJpeFR5cGVzLmluc2VydCh0eXBlKTsKIApAQCAtNDYyLDkg
KzQ2MCw3IEBACiAgICAgICAgICAgICAgICAgICAgIENyZWF0ZUluZGV4ZWRXcml0ZUZ1bmN0aW9u
Q2FsbChub2RlLCB0ZW1wSW5kZXgsIGNyZWF0ZVRlbXBTeW1ib2woZmllbGRUeXBlKSk7CiAgICAg
ICAgICAgICAgICAgaW5zZXJ0aW9uc0FmdGVyLnB1c2hfYmFjayhpbmRleGVkV3JpdGVDYWxsKTsK
ICAgICAgICAgICAgICAgICBpbnNlcnRTdGF0ZW1lbnRzSW5QYXJlbnRCbG9jayhpbnNlcnRpb25z
QmVmb3JlLCBpbnNlcnRpb25zQWZ0ZXIpOwotICAgICAgICAgICAgICAgIE5vZGVVcGRhdGVFbnRy
eSByZXBsYWNlSW5kZXgoZ2V0UGFyZW50Tm9kZSgpLCBub2RlLCBjcmVhdGVUZW1wU3ltYm9sKGZp
ZWxkVHlwZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
YWxzZSk7Ci0gICAgICAgICAgICAgICAgbVJlcGxhY2VtZW50cy5wdXNoX2JhY2socmVwbGFjZUlu
ZGV4KTsKKyAgICAgICAgICAgICAgICBxdWV1ZVJlcGxhY2VtZW50KG5vZGUsIGNyZWF0ZVRlbXBT
eW1ib2woZmllbGRUeXBlKSwgT3JpZ2luYWxOb2RlOjpJU19EUk9QUEVEKTsKICAgICAgICAgICAg
ICAgICBtVXNlZFRyZWVJbnNlcnRpb24gPSB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgZWxzZQpAQCAtNDc3LDggKzQ3Myw3IEBACiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtUmVt
b3ZlSW5kZXhTaWRlRWZmZWN0c0luU3VidHJlZSk7CiAgICAgICAgICAgICAgICAgVEludGVybUFn
Z3JlZ2F0ZSAqaW5kZXhpbmdDYWxsID0gQ3JlYXRlSW5kZXhGdW5jdGlvbkNhbGwoCiAgICAgICAg
ICAgICAgICAgICAgIG5vZGUsIG5vZGUtPmdldExlZnQoKSwgRW5zdXJlU2lnbmVkSW50KG5vZGUt
PmdldFJpZ2h0KCkpKTsKLSAgICAgICAgICAgICAgICBOb2RlVXBkYXRlRW50cnkgcmVwbGFjZUlu
ZGV4KGdldFBhcmVudE5vZGUoKSwgbm9kZSwgaW5kZXhpbmdDYWxsLCBmYWxzZSk7Ci0gICAgICAg
ICAgICAgICAgbVJlcGxhY2VtZW50cy5wdXNoX2JhY2socmVwbGFjZUluZGV4KTsKKyAgICAgICAg
ICAgICAgICBxdWV1ZVJlcGxhY2VtZW50KG5vZGUsIGluZGV4aW5nQ2FsbCwgT3JpZ2luYWxOb2Rl
OjpJU19EUk9QUEVEKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1JlbW92ZVBvdy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvUmVtb3ZlUG93LmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlUG93LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTIsMzEgKzUyLDIwIEBACiB7CiAgICAgaWYgKElzUHJvYmxlbWF0aWNQb3co
bm9kZSkpCiAgICAgewotICAgICAgICBUSW5mb1NpbmsgbnVsbFNpbms7Ci0KICAgICAgICAgVElu
dGVybVR5cGVkICp4ID0gbm9kZS0+Z2V0U2VxdWVuY2UoKS0+YXQoMCktPmdldEFzVHlwZWQoKTsK
ICAgICAgICAgVEludGVybVR5cGVkICp5ID0gbm9kZS0+Z2V0U2VxdWVuY2UoKS0+YXQoMSktPmdl
dEFzVHlwZWQoKTsKIAotICAgICAgICBUSW50ZXJtVW5hcnkgKmxvZyA9IG5ldyBUSW50ZXJtVW5h
cnkoRU9wTG9nMik7Ci0gICAgICAgIGxvZy0+c2V0T3BlcmFuZCh4KTsKKyAgICAgICAgVEludGVy
bVVuYXJ5ICpsb2cgPSBuZXcgVEludGVybVVuYXJ5KEVPcExvZzIsIHgpOwogICAgICAgICBsb2ct
PnNldExpbmUobm9kZS0+Z2V0TGluZSgpKTsKLSAgICAgICAgbG9nLT5zZXRUeXBlKHgtPmdldFR5
cGUoKSk7CiAKLSAgICAgICAgVEludGVybUJpbmFyeSAqbXVsID0gbmV3IFRJbnRlcm1CaW5hcnko
RU9wTXVsKTsKLSAgICAgICAgbXVsLT5zZXRMZWZ0KHkpOwotICAgICAgICBtdWwtPnNldFJpZ2h0
KGxvZyk7CisgICAgICAgIFRPcGVyYXRvciBvcCAgICAgICA9IFRJbnRlcm1CaW5hcnk6OkdldE11
bE9wQmFzZWRPbk9wZXJhbmRzKHktPmdldFR5cGUoKSwgbG9nLT5nZXRUeXBlKCkpOworICAgICAg
ICBUSW50ZXJtQmluYXJ5ICptdWwgPSBuZXcgVEludGVybUJpbmFyeShvcCwgeSwgbG9nKTsKICAg
ICAgICAgbXVsLT5zZXRMaW5lKG5vZGUtPmdldExpbmUoKSk7Ci0gICAgICAgIGJvb2wgdmFsaWQg
PSBtdWwtPnByb21vdGUobnVsbFNpbmspOwotICAgICAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklB
QkxFKHZhbGlkKTsKLSAgICAgICAgQVNTRVJUKHZhbGlkKTsKIAotICAgICAgICBUSW50ZXJtVW5h
cnkgKmV4cCA9IG5ldyBUSW50ZXJtVW5hcnkoRU9wRXhwMik7Ci0gICAgICAgIGV4cC0+c2V0T3Bl
cmFuZChtdWwpOworICAgICAgICBUSW50ZXJtVW5hcnkgKmV4cCA9IG5ldyBUSW50ZXJtVW5hcnko
RU9wRXhwMiwgbXVsKTsKICAgICAgICAgZXhwLT5zZXRMaW5lKG5vZGUtPmdldExpbmUoKSk7Ci0g
ICAgICAgIGV4cC0+c2V0VHlwZShub2RlLT5nZXRUeXBlKCkpOwogCi0gICAgICAgIE5vZGVVcGRh
dGVFbnRyeSByZXBsYWNlUG93KGdldFBhcmVudE5vZGUoKSwgbm9kZSwgZXhwLCBmYWxzZSk7Ci0g
ICAgICAgIG1SZXBsYWNlbWVudHMucHVzaF9iYWNrKHJlcGxhY2VQb3cpOworICAgICAgICBxdWV1
ZVJlcGxhY2VtZW50KG5vZGUsIGV4cCwgT3JpZ2luYWxOb2RlOjpJU19EUk9QUEVEKTsKIAogICAg
ICAgICAvLyBJZiB0aGUgeCBwYXJhbWV0ZXIgYWxzbyBuZWVkcyB0byBiZSByZXBsYWNlZCwgd2Ug
bmVlZCB0byBkbyB0aGF0IGluIGFub3RoZXIgdHJhdmVyc2FsLAogICAgICAgICAvLyBzaW5jZSBp
dCdzIHBhcmVudCBub2RlIHdpbGwgY2hhbmdlIGluIGEgd2F5IHRoYXQncyBub3QgaGFuZGxlZCBj
b3JyZWN0bHkgYnkgdXBkYXRlVHJlZSgpLgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlU3dpdGNoRmFsbFRocm91Z2guY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L1JlbW92ZVN3aXRjaEZhbGxUaHJvdWdoLmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlU3dpdGNoRmFs
bFRocm91Z2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02LDcgKzYsNyBAQAogCiAjaW5jbHVkZSAi
Y29tcGlsZXIvdHJhbnNsYXRvci9SZW1vdmVTd2l0Y2hGYWxsVGhyb3VnaC5oIgogCi1USW50ZXJt
QWdncmVnYXRlICpSZW1vdmVTd2l0Y2hGYWxsVGhyb3VnaDo6cmVtb3ZlRmFsbFRocm91Z2goVElu
dGVybUFnZ3JlZ2F0ZSAqc3RhdGVtZW50TGlzdCkKK1RJbnRlcm1CbG9jayAqUmVtb3ZlU3dpdGNo
RmFsbFRocm91Z2g6OnJlbW92ZUZhbGxUaHJvdWdoKFRJbnRlcm1CbG9jayAqc3RhdGVtZW50TGlz
dCkKIHsKICAgICBSZW1vdmVTd2l0Y2hGYWxsVGhyb3VnaCBybShzdGF0ZW1lbnRMaXN0KTsKICAg
ICBBU1NFUlQoc3RhdGVtZW50TGlzdCk7CkBAIC0yMiwxNCArMjIsMTMgQEAKICAgICByZXR1cm4g
cm0ubVN0YXRlbWVudExpc3RPdXQ7CiB9CiAKLVJlbW92ZVN3aXRjaEZhbGxUaHJvdWdoOjpSZW1v
dmVTd2l0Y2hGYWxsVGhyb3VnaChUSW50ZXJtQWdncmVnYXRlICpzdGF0ZW1lbnRMaXN0KQorUmVt
b3ZlU3dpdGNoRmFsbFRocm91Z2g6OlJlbW92ZVN3aXRjaEZhbGxUaHJvdWdoKFRJbnRlcm1CbG9j
ayAqc3RhdGVtZW50TGlzdCkKICAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZh
bHNlKSwKICAgICAgIG1TdGF0ZW1lbnRMaXN0KHN0YXRlbWVudExpc3QpLAogICAgICAgbUxhc3RT
dGF0ZW1lbnRXYXNCcmVhayhmYWxzZSksCiAgICAgICBtUHJldmlvdXNDYXNlKG51bGxwdHIpCiB7
Ci0gICAgbVN0YXRlbWVudExpc3RPdXQgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZSgpOwotICAgIG1T
dGF0ZW1lbnRMaXN0T3V0LT5zZXRPcChFT3BTZXF1ZW5jZSk7CisgICAgbVN0YXRlbWVudExpc3RP
dXQgPSBuZXcgVEludGVybUJsb2NrKCk7CiB9CiAKIHZvaWQgUmVtb3ZlU3dpdGNoRmFsbFRocm91
Z2g6OnZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wgKm5vZGUpCkBAIC02Miw3ICs2MSw3IEBACiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbW92ZVN3aXRjaEZhbGxUaHJvdWdoOjp2aXNp
dFNlbGVjdGlvbihWaXNpdCwgVEludGVybVNlbGVjdGlvbiAqbm9kZSkKK2Jvb2wgUmVtb3ZlU3dp
dGNoRmFsbFRocm91Z2g6OnZpc2l0VGVybmFyeShWaXNpdCwgVEludGVybVRlcm5hcnkgKm5vZGUp
CiB7CiAgICAgbVByZXZpb3VzQ2FzZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKG5vZGUpOwog
ICAgIG1MYXN0U3RhdGVtZW50V2FzQnJlYWsgPSBmYWxzZTsKQEAgLTY5LDYgKzY4LDEzIEBACiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIFJlbW92ZVN3aXRjaEZhbGxUaHJvdWdoOjp2aXNp
dElmRWxzZShWaXNpdCwgVEludGVybUlmRWxzZSAqbm9kZSkKK3sKKyAgICBtUHJldmlvdXNDYXNl
LT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2sobm9kZSk7CisgICAgbUxhc3RTdGF0ZW1lbnRXYXNC
cmVhayA9IGZhbHNlOworICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBSZW1vdmVTd2l0Y2hG
YWxsVGhyb3VnaDo6dmlzaXRTd2l0Y2goVmlzaXQsIFRJbnRlcm1Td2l0Y2ggKm5vZGUpCiB7CiAg
ICAgbVByZXZpb3VzQ2FzZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKG5vZGUpOwpAQCAtMTIz
LDggKzEyOSw3IEBACiBib29sIFJlbW92ZVN3aXRjaEZhbGxUaHJvdWdoOjp2aXNpdENhc2UoVmlz
aXQsIFRJbnRlcm1DYXNlICpub2RlKQogewogICAgIGhhbmRsZVByZXZpb3VzQ2FzZSgpOwotICAg
IG1QcmV2aW91c0Nhc2UgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZSgpOwotICAgIG1QcmV2aW91c0Nh
c2UtPnNldE9wKEVPcFNlcXVlbmNlKTsKKyAgICBtUHJldmlvdXNDYXNlID0gbmV3IFRJbnRlcm1C
bG9jaygpOwogICAgIG1QcmV2aW91c0Nhc2UtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhub2Rl
KTsKICAgICAvLyBEb24ndCB0cmF2ZXJzZSB0aGUgY29uZGl0aW9uIG9mIHRoZSBjYXNlIHN0YXRl
bWVudAogICAgIHJldHVybiBmYWxzZTsKQEAgLTEzMiw2ICsxMzcsMTMgQEAKIAogYm9vbCBSZW1v
dmVTd2l0Y2hGYWxsVGhyb3VnaDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQsIFRJbnRlcm1BZ2dyZWdh
dGUgKm5vZGUpCiB7CisgICAgbVByZXZpb3VzQ2FzZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNr
KG5vZGUpOworICAgIG1MYXN0U3RhdGVtZW50V2FzQnJlYWsgPSBmYWxzZTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK2Jvb2wgUmVtb3ZlU3dpdGNoRmFsbFRocm91Z2g6OnZpc2l0QmxvY2soVmlz
aXQsIFRJbnRlcm1CbG9jayAqbm9kZSkKK3sKICAgICBpZiAobm9kZSAhPSBtU3RhdGVtZW50TGlz
dCkKICAgICB7CiAgICAgICAgIG1QcmV2aW91c0Nhc2UtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFj
ayhub2RlKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1JlbW92ZVN3aXRjaEZhbGxUaHJvdWdoLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlU3dpdGNoRmFsbFRo
cm91Z2guaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlU3dpdGNoRmFsbFRocm91Z2guaAkod29ya2luZyBj
b3B5KQpAQCAtMTQsMTkgKzE0LDIxIEBACiAgIHB1YmxpYzoKICAgICAvLyBXaGVuIGdpdmVuIGEg
c3RhdGVtZW50TGlzdCBmcm9tIGEgc3dpdGNoIEFTVCBub2RlLCByZXR1cm4gYW4gdXBkYXRlZAog
ICAgIC8vIHN0YXRlbWVudExpc3QgdGhhdCBoYXMgZmFsbC10aHJvdWdoIHJlbW92ZWQuCi0gICAg
c3RhdGljIFRJbnRlcm1BZ2dyZWdhdGUgKnJlbW92ZUZhbGxUaHJvdWdoKFRJbnRlcm1BZ2dyZWdh
dGUgKnN0YXRlbWVudExpc3QpOworICAgIHN0YXRpYyBUSW50ZXJtQmxvY2sgKnJlbW92ZUZhbGxU
aHJvdWdoKFRJbnRlcm1CbG9jayAqc3RhdGVtZW50TGlzdCk7CiAKICAgcHJpdmF0ZToKLSAgICBS
ZW1vdmVTd2l0Y2hGYWxsVGhyb3VnaChUSW50ZXJtQWdncmVnYXRlICpzdGF0ZW1lbnRMaXN0KTsK
KyAgICBSZW1vdmVTd2l0Y2hGYWxsVGhyb3VnaChUSW50ZXJtQmxvY2sgKnN0YXRlbWVudExpc3Qp
OwogCiAgICAgdm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICpub2RlKSBvdmVycmlkZTsK
ICAgICB2b2lkIHZpc2l0Q29uc3RhbnRVbmlvbihUSW50ZXJtQ29uc3RhbnRVbmlvbiAqbm9kZSkg
b3ZlcnJpZGU7CiAgICAgYm9vbCB2aXNpdEJpbmFyeShWaXNpdCwgVEludGVybUJpbmFyeSAqbm9k
ZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCB2aXNpdFVuYXJ5KFZpc2l0LCBUSW50ZXJtVW5hcnkgKm5v
ZGUpIG92ZXJyaWRlOwotICAgIGJvb2wgdmlzaXRTZWxlY3Rpb24oVmlzaXQgdmlzaXQsIFRJbnRl
cm1TZWxlY3Rpb24gKm5vZGUpIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRUZXJuYXJ5KFZpc2l0
IHZpc2l0LCBUSW50ZXJtVGVybmFyeSAqbm9kZSkgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdElm
RWxzZShWaXNpdCB2aXNpdCwgVEludGVybUlmRWxzZSAqbm9kZSkgb3ZlcnJpZGU7CiAgICAgYm9v
bCB2aXNpdFN3aXRjaChWaXNpdCwgVEludGVybVN3aXRjaCAqbm9kZSkgb3ZlcnJpZGU7CiAgICAg
Ym9vbCB2aXNpdENhc2UoVmlzaXQsIFRJbnRlcm1DYXNlICpub2RlKSBvdmVycmlkZTsKICAgICBi
b29sIHZpc2l0QWdncmVnYXRlKFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKSBvdmVycmlk
ZTsKKyAgICBib29sIHZpc2l0QmxvY2soVmlzaXQsIFRJbnRlcm1CbG9jayAqbm9kZSkgb3ZlcnJp
ZGU7CiAgICAgYm9vbCB2aXNpdExvb3AoVmlzaXQsIFRJbnRlcm1Mb29wICpub2RlKSBvdmVycmlk
ZTsKICAgICBib29sIHZpc2l0QnJhbmNoKFZpc2l0LCBUSW50ZXJtQnJhbmNoICpub2RlKSBvdmVy
cmlkZTsKIApAQCAtMzMsMTEgKzM1LDExIEBACiAgICAgdm9pZCBvdXRwdXRTZXF1ZW5jZShUSW50
ZXJtU2VxdWVuY2UgKnNlcXVlbmNlLCBzaXplX3Qgc3RhcnRJbmRleCk7CiAgICAgdm9pZCBoYW5k
bGVQcmV2aW91c0Nhc2UoKTsKIAotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKm1TdGF0ZW1lbnRMaXN0
OwotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKm1TdGF0ZW1lbnRMaXN0T3V0OworICAgIFRJbnRlcm1C
bG9jayAqbVN0YXRlbWVudExpc3Q7CisgICAgVEludGVybUJsb2NrICptU3RhdGVtZW50TGlzdE91
dDsKICAgICBib29sIG1MYXN0U3RhdGVtZW50V2FzQnJlYWs7Ci0gICAgVEludGVybUFnZ3JlZ2F0
ZSAqbVByZXZpb3VzQ2FzZTsKLSAgICBzdGQ6OnZlY3RvcjxUSW50ZXJtQWdncmVnYXRlICo+IG1D
YXNlc1NoYXJpbmdCcmVhazsKKyAgICBUSW50ZXJtQmxvY2sgKm1QcmV2aW91c0Nhc2U7CisgICAg
c3RkOjp2ZWN0b3I8VEludGVybUJsb2NrICo+IG1DYXNlc1NoYXJpbmdCcmVhazsKIH07CiAKICNl
bmRpZiAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1JFTU9WRVNXSVRDSEZBTExUSFJPVUdIX0hfCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZW5h
bWVGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL1JlbmFtZUZ1bmN0aW9uLmgJKHJldmlzaW9uIDIwODAyMSkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1JlbmFtZUZ1
bmN0aW9uLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNiArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0
IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQot
I2lmbmRlZiBDT01QSUxFUl9UUkFOU0xBVE9SX1JFTkFNRUZVTkNUSU9OX0hfCi0jZGVmaW5lIENP
TVBJTEVSX1RSQU5TTEFUT1JfUkVOQU1FRlVOQ1RJT05fSF8KLQotI2luY2x1ZGUgImNvbXBpbGVy
L3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgotCi0vLwotLy8gUmVuYW1lcyBhIGZ1bmN0aW9uLCBp
bmNsdWRpbmcgaXRzIGRlY2xhcmF0aW9uIGFuZCBhbnkgY2FsbHMgdG8gaXQuCi0vLwotY2xhc3Mg
UmVuYW1lRnVuY3Rpb24gOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgotewotcHVibGljOgotICAg
IFJlbmFtZUZ1bmN0aW9uKGNvbnN0IFRTdHJpbmcmIG9sZEZ1bmN0aW9uTmFtZSwgY29uc3QgVFN0
cmluZyYgbmV3RnVuY3Rpb25OYW1lKQotICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxz
ZSwgZmFsc2UpCi0gICAgLCBtT2xkRnVuY3Rpb25OYW1lKG9sZEZ1bmN0aW9uTmFtZSkKLSAgICAs
IG1OZXdGdW5jdGlvbk5hbWUobmV3RnVuY3Rpb25OYW1lKSB7fQotCi0gICAgYm9vbCB2aXNpdEFn
Z3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkgb3ZlcnJpZGUKLSAg
ICB7Ci0gICAgICAgIFRPcGVyYXRvciBvcCA9IG5vZGUtPmdldE9wKCk7Ci0gICAgICAgIGlmICgo
b3AgPT0gRU9wRnVuY3Rpb24gfHwgb3AgPT0gRU9wRnVuY3Rpb25DYWxsKSAmJiBub2RlLT5nZXRO
YW1lKCkgPT0gbU9sZEZ1bmN0aW9uTmFtZSkKLSAgICAgICAgICAgIG5vZGUtPnNldE5hbWUobU5l
d0Z1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICBjb25zdCBUU3RyaW5nIG1PbGRGdW5jdGlvbk5hbWU7Ci0gICAgY29uc3QgVFN0cmluZyBt
TmV3RnVuY3Rpb25OYW1lOwotfTsKLQotI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1JF
TkFNRUZVTkNUSU9OX0hfCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZW5hbWVGdW5jdGlvbi5oCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
RGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZURvV2hpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVEb1doaWxl
LmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZURvV2hpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MywxNSArNDMsMTEgQEAKICAgcHVibGljOgogICAgIERvV2hpbGVSZXdyaXRlcigpIDogVEludGVy
bVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2UpIHt9CiAKLSAgICBib29sIHZpc2l0QWdncmVn
YXRlKFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKSBvdmVycmlkZQorICAgIGJvb2wgdmlz
aXRCbG9jayhWaXNpdCwgVEludGVybUJsb2NrICpub2RlKSBvdmVycmlkZQogICAgIHsKLSAgICAg
ICAgLy8gQSB3ZWxsLWZvcm1lZCBBU1QgY2FuIG9ubHkgaGF2ZSBkby13aGlsZSBpbiBFT3BTZXF1
ZW5jZSB3aGljaCByZXByZXNlbnQgbGlzdHMgb2YKLSAgICAgICAgLy8gc3RhdGVtZW50cy4gQnkg
ZG9pbmcgYSBwcmVmaXggdHJhdmVyc2FsIHdlIGFyZSBhYmxlIHRvIHJlcGxhY2UgdGhlIGRvLXdo
aWxlIGluIHRoZQotICAgICAgICAvLyBzZXF1ZW5jZSBkaXJlY3RseSBhcyB0aGUgY29udGVudCBv
ZiB0aGUgZG8td2hpbGUgd2lsbCBiZSB0cmF2ZXJzZWQgbGF0ZXIuCi0gICAgICAgIGlmIChub2Rl
LT5nZXRPcCgpICE9IEVPcFNlcXVlbmNlKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgfQorICAgICAgICAvLyBBIHdlbGwtZm9ybWVkIEFTVCBjYW4gb25seSBo
YXZlIGRvLXdoaWxlIGluc2lkZSBUSW50ZXJtQmxvY2suIEJ5IGRvaW5nIGEgcHJlZml4IHRyYXZl
cnNhbAorICAgICAgICAvLyB3ZSBhcmUgYWJsZSB0byByZXBsYWNlIHRoZSBkby13aGlsZSBpbiB0
aGUgc2VxdWVuY2UgZGlyZWN0bHkgYXMgdGhlIGNvbnRlbnQgb2YgdGhlCisgICAgICAgIC8vIGRv
LXdoaWxlIHdpbGwgYmUgdHJhdmVyc2VkIGxhdGVyLgogCiAgICAgICAgIFRJbnRlcm1TZXF1ZW5j
ZSAqc3RhdGVtZW50cyA9IG5vZGUtPmdldFNlcXVlbmNlKCk7CiAKQEAgLTk1LDIzICs5MSwyMiBA
QAogICAgICAgICAgICAgLy8gICAgIGJyZWFrOwogICAgICAgICAgICAgLy8gICB9CiAgICAgICAg
ICAgICAvLyB9Ci0gICAgICAgICAgICBUSW50ZXJtU2VsZWN0aW9uICpicmVha0lmID0gbnVsbHB0
cjsKKyAgICAgICAgICAgIFRJbnRlcm1JZkVsc2UgKmJyZWFrSWYgPSBudWxscHRyOwogICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgIFRJbnRlcm1CcmFuY2ggKmJyZWFrU3RhdGVtZW50ID0g
bmV3IFRJbnRlcm1CcmFuY2goRU9wQnJlYWssIG51bGxwdHIpOwogCi0gICAgICAgICAgICAgICAg
VEludGVybUFnZ3JlZ2F0ZSAqYnJlYWtCbG9jayA9IG5ldyBUSW50ZXJtQWdncmVnYXRlKEVPcFNl
cXVlbmNlKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtQmxvY2sgKmJyZWFrQmxvY2sgPSBuZXcg
VEludGVybUJsb2NrKCk7CiAgICAgICAgICAgICAgICAgYnJlYWtCbG9jay0+Z2V0U2VxdWVuY2Uo
KS0+cHVzaF9iYWNrKGJyZWFrU3RhdGVtZW50KTsKIAotICAgICAgICAgICAgICAgIFRJbnRlcm1V
bmFyeSAqbmVnYXRlZENvbmRpdGlvbiA9IG5ldyBUSW50ZXJtVW5hcnkoRU9wTG9naWNhbE5vdCk7
Ci0gICAgICAgICAgICAgICAgbmVnYXRlZENvbmRpdGlvbi0+c2V0T3BlcmFuZChsb29wLT5nZXRD
b25kaXRpb24oKSk7CisgICAgICAgICAgICAgICAgVEludGVybVVuYXJ5ICpuZWdhdGVkQ29uZGl0
aW9uID0KKyAgICAgICAgICAgICAgICAgICAgbmV3IFRJbnRlcm1VbmFyeShFT3BMb2dpY2FsTm90
LCBsb29wLT5nZXRDb25kaXRpb24oKSk7CiAKLSAgICAgICAgICAgICAgICBUSW50ZXJtU2VsZWN0
aW9uICppbm5lcklmID0KLSAgICAgICAgICAgICAgICAgICAgbmV3IFRJbnRlcm1TZWxlY3Rpb24o
bmVnYXRlZENvbmRpdGlvbiwgYnJlYWtCbG9jaywgbnVsbHB0cik7CisgICAgICAgICAgICAgICAg
VEludGVybUlmRWxzZSAqaW5uZXJJZiA9IG5ldyBUSW50ZXJtSWZFbHNlKG5lZ2F0ZWRDb25kaXRp
b24sIGJyZWFrQmxvY2ssIG51bGxwdHIpOwogCi0gICAgICAgICAgICAgICAgVEludGVybUFnZ3Jl
Z2F0ZSAqaW5uZXJJZkJsb2NrID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoRU9wU2VxdWVuY2UpOwor
ICAgICAgICAgICAgICAgIFRJbnRlcm1CbG9jayAqaW5uZXJJZkJsb2NrID0gbmV3IFRJbnRlcm1C
bG9jaygpOwogICAgICAgICAgICAgICAgIGlubmVySWZCbG9jay0+Z2V0U2VxdWVuY2UoKS0+cHVz
aF9iYWNrKGlubmVySWYpOwogCi0gICAgICAgICAgICAgICAgYnJlYWtJZiA9IG5ldyBUSW50ZXJt
U2VsZWN0aW9uKGNyZWF0ZVRlbXBTeW1ib2woYm9vbFR5cGUpLCBpbm5lcklmQmxvY2ssIG51bGxw
dHIpOworICAgICAgICAgICAgICAgIGJyZWFrSWYgPSBuZXcgVEludGVybUlmRWxzZShjcmVhdGVU
ZW1wU3ltYm9sKGJvb2xUeXBlKSwgaW5uZXJJZkJsb2NrLCBudWxscHRyKTsKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgLy8gQXNzZW1ibGUgdGhlIHJlcGxhY2VtZW50IGxvb3BzLCByZXVz
aW5nIHRoZSBkby13aGlsZSBsb29wJ3MgYm9keSBhbmQgaW5zZXJ0aW5nIG91cgpAQCAtMTIyLDE1
ICsxMTcsMTEgQEAKICAgICAgICAgICAgICAgICB0cnVlQ29uc3RhbnQtPnNldEJDb25zdCh0cnVl
KTsKICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnRydWVWYWx1ZSA9IG5ldyBUSW50ZXJt
Q29uc3RhbnRVbmlvbih0cnVlQ29uc3RhbnQsIGJvb2xUeXBlKTsKIAotICAgICAgICAgICAgICAg
IFRJbnRlcm1BZ2dyZWdhdGUgKmJvZHkgPSBudWxscHRyOwotICAgICAgICAgICAgICAgIGlmIChs
b29wLT5nZXRCb2R5KCkgIT0gbnVsbHB0cikKKyAgICAgICAgICAgICAgICBUSW50ZXJtQmxvY2sg
KmJvZHkgPSBsb29wLT5nZXRCb2R5KCk7CisgICAgICAgICAgICAgICAgaWYgKGJvZHkgPT0gbnVs
bHB0cikKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGJvZHkgPSBsb29w
LT5nZXRCb2R5KCktPmdldEFzQWdncmVnYXRlKCk7CisgICAgICAgICAgICAgICAgICAgIGJvZHkg
PSBuZXcgVEludGVybUJsb2NrKCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGJvZHkgPSBuZXcg
VEludGVybUFnZ3JlZ2F0ZShFT3BTZXF1ZW5jZSk7Ci0gICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIGF1dG8gc2VxdWVuY2UgPSBib2R5LT5nZXRTZXF1ZW5jZSgpOwogICAgICAgICAg
ICAgICAgIHNlcXVlbmNlLT5pbnNlcnQoc2VxdWVuY2UtPmJlZ2luKCksIGFzc2lnblRydWUpOwog
ICAgICAgICAgICAgICAgIHNlcXVlbmNlLT5pbnNlcnQoc2VxdWVuY2UtPmJlZ2luKCksIGJyZWFr
SWYpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvUmV3cml0ZUVsc2VCbG9ja3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVFbHNlQmxvY2tzLmNwcAkocmV2
aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvUmV3cml0ZUVsc2VCbG9ja3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04LDYgKzgs
OCBAQAogLy8KIAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZUVsc2VCbG9j
a3MuaCIKKworI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtZWRpYXRlLmgiCiAj
aW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9Ob2RlU2VhcmNoLmgiCiAjaW5jbHVkZSAiY29t
cGlsZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5oIgogCkBAIC0yMyw4MSArMjUsNjEgQEAKICAg
ICBFbHNlQmxvY2tSZXdyaXRlcigpOwogCiAgIHByb3RlY3RlZDoKLSAgICBib29sIHZpc2l0QWdn
cmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICphZ2dyZWdhdGUpIG92ZXJyaWRl
OworICAgIGJvb2wgdmlzaXRGdW5jdGlvbkRlZmluaXRpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1G
dW5jdGlvbkRlZmluaXRpb24gKmFnZ3JlZ2F0ZSkgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdEJs
b2NrKFZpc2l0IHZpc2l0LCBUSW50ZXJtQmxvY2sgKmJsb2NrKSBvdmVycmlkZTsKIAogICBwcml2
YXRlOgogICAgIGNvbnN0IFRUeXBlICptRnVuY3Rpb25UeXBlOwogCi0gICAgVEludGVybU5vZGUg
KnJld3JpdGVTZWxlY3Rpb24oVEludGVybVNlbGVjdGlvbiAqc2VsZWN0aW9uKTsKKyAgICBUSW50
ZXJtTm9kZSAqcmV3cml0ZUlmRWxzZShUSW50ZXJtSWZFbHNlICppZkVsc2UpOwogfTsKIAotVElu
dGVybVVuYXJ5ICpNYWtlTmV3VW5hcnkoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQgKm9wZXJh
bmQpCi17Ci0gICAgVEludGVybVVuYXJ5ICp1bmFyeSA9IG5ldyBUSW50ZXJtVW5hcnkob3AsIG9w
ZXJhbmQtPmdldFR5cGUoKSk7Ci0gICAgdW5hcnktPnNldE9wZXJhbmQob3BlcmFuZCk7Ci0gICAg
cmV0dXJuIHVuYXJ5OwotfQotCiBFbHNlQmxvY2tSZXdyaXRlcjo6RWxzZUJsb2NrUmV3cml0ZXIo
KQogICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgdHJ1ZSksCiAgICAgICBtRnVu
Y3Rpb25UeXBlKE5VTEwpCiB7fQogCi1ib29sIEVsc2VCbG9ja1Jld3JpdGVyOjp2aXNpdEFnZ3Jl
Z2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkKK2Jvb2wgRWxzZUJsb2Nr
UmV3cml0ZXI6OnZpc2l0RnVuY3Rpb25EZWZpbml0aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtRnVu
Y3Rpb25EZWZpbml0aW9uICpub2RlKQogewotICAgIHN3aXRjaCAobm9kZS0+Z2V0T3AoKSkKKyAg
ICAvLyBTdG9yZSB0aGUgY3VycmVudCBmdW5jdGlvbiBjb250ZXh0IChzZWUgY29tbWVudCBiZWxv
dykKKyAgICBtRnVuY3Rpb25UeXBlID0gKCh2aXNpdCA9PSBQcmVWaXNpdCkgPyAmbm9kZS0+Z2V0
VHlwZSgpIDogbnVsbHB0cik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRWxzZUJsb2Nr
UmV3cml0ZXI6OnZpc2l0QmxvY2soVmlzaXQgdmlzaXQsIFRJbnRlcm1CbG9jayAqbm9kZSkKK3sK
KyAgICBpZiAodmlzaXQgPT0gUG9zdFZpc2l0KQogICAgIHsKLSAgICAgIGNhc2UgRU9wU2VxdWVu
Y2U6Ci0gICAgICAgIGlmICh2aXNpdCA9PSBQb3N0VmlzaXQpCisgICAgICAgIGZvciAoc2l6ZV90
IHN0YXRlbWVudEluZGV4ID0gMDsgc3RhdGVtZW50SW5kZXggIT0gbm9kZS0+Z2V0U2VxdWVuY2Uo
KS0+c2l6ZSgpOworICAgICAgICAgICAgIHN0YXRlbWVudEluZGV4KyspCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGZvciAoc2l6ZV90IHN0YXRlbWVudEluZGV4ID0gMDsgc3RhdGVtZW50SW5kZXgg
IT0gbm9kZS0+Z2V0U2VxdWVuY2UoKS0+c2l6ZSgpOyBzdGF0ZW1lbnRJbmRleCsrKQorICAgICAg
ICAgICAgVEludGVybU5vZGUgKnN0YXRlbWVudCA9ICgqbm9kZS0+Z2V0U2VxdWVuY2UoKSlbc3Rh
dGVtZW50SW5kZXhdOworICAgICAgICAgICAgVEludGVybUlmRWxzZSAqaWZFbHNlICA9IHN0YXRl
bWVudC0+Z2V0QXNJZkVsc2VOb2RlKCk7CisgICAgICAgICAgICBpZiAoaWZFbHNlICYmIGlmRWxz
ZS0+Z2V0RmFsc2VCbG9jaygpICE9IG51bGxwdHIpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgVEludGVybU5vZGUgKnN0YXRlbWVudCA9ICgqbm9kZS0+Z2V0U2VxdWVuY2UoKSlbc3Rh
dGVtZW50SW5kZXhdOwotICAgICAgICAgICAgICAgIFRJbnRlcm1TZWxlY3Rpb24gKnNlbGVjdGlv
biA9IHN0YXRlbWVudC0+Z2V0QXNTZWxlY3Rpb25Ob2RlKCk7Ci0gICAgICAgICAgICAgICAgaWYg
KHNlbGVjdGlvbiAmJiBzZWxlY3Rpb24tPmdldEZhbHNlQmxvY2soKSAhPSBudWxscHRyKQotICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGlmIC8gZWxz
ZSBpZgotICAgICAgICAgICAgICAgICAgICBUSW50ZXJtU2VsZWN0aW9uICplbHNlSWZCcmFuY2gg
PSBzZWxlY3Rpb24tPmdldEZhbHNlQmxvY2soKS0+Z2V0QXNTZWxlY3Rpb25Ob2RlKCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChlbHNlSWZCcmFuY2gpCi0gICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbi0+cmVwbGFjZUNoaWxkTm9kZShlbHNl
SWZCcmFuY2gsIHJld3JpdGVTZWxlY3Rpb24oZWxzZUlmQnJhbmNoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBkZWxldGUgZWxzZUlmQnJhbmNoOwotICAgICAgICAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICAgICAgICAgKCpub2RlLT5nZXRTZXF1ZW5jZSgpKVtzdGF0ZW1lbnRJbmRl
eF0gPSByZXdyaXRlU2VsZWN0aW9uKHNlbGVjdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIGRl
bGV0ZSBzZWxlY3Rpb247Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICgqbm9k
ZS0+Z2V0U2VxdWVuY2UoKSlbc3RhdGVtZW50SW5kZXhdID0gcmV3cml0ZUlmRWxzZShpZkVsc2Up
OwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotCi0gICAgICBjYXNl
IEVPcEZ1bmN0aW9uOgotICAgICAgICAvLyBTdG9yZSB0aGUgY3VycmVudCBmdW5jdGlvbiBjb250
ZXh0IChzZWUgY29tbWVudCBiZWxvdykKLSAgICAgICAgbUZ1bmN0aW9uVHlwZSA9ICgodmlzaXQg
PT0gUHJlVmlzaXQpID8gJm5vZGUtPmdldFR5cGUoKSA6IE5VTEwpOwotICAgICAgICBicmVhazsK
LQotICAgICAgZGVmYXVsdDogYnJlYWs7CiAgICAgfQotCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LVRJbnRlcm1Ob2RlICpFbHNlQmxvY2tSZXdyaXRlcjo6cmV3cml0ZVNlbGVjdGlvbihUSW50ZXJt
U2VsZWN0aW9uICpzZWxlY3Rpb24pCitUSW50ZXJtTm9kZSAqRWxzZUJsb2NrUmV3cml0ZXI6OnJl
d3JpdGVJZkVsc2UoVEludGVybUlmRWxzZSAqaWZFbHNlKQogewotICAgIEFTU0VSVChzZWxlY3Rp
b24gIT0gbnVsbHB0cik7CisgICAgQVNTRVJUKGlmRWxzZSAhPSBudWxscHRyKTsKIAogICAgIG5l
eHRUZW1wb3JhcnlJbmRleCgpOwogCi0gICAgVEludGVybVR5cGVkICp0eXBlZENvbmRpdGlvbiA9
IHNlbGVjdGlvbi0+Z2V0Q29uZGl0aW9uKCktPmdldEFzVHlwZWQoKTsKKyAgICBUSW50ZXJtVHlw
ZWQgKnR5cGVkQ29uZGl0aW9uICAgICA9IGlmRWxzZS0+Z2V0Q29uZGl0aW9uKCktPmdldEFzVHlw
ZWQoKTsKICAgICBUSW50ZXJtQWdncmVnYXRlICpzdG9yZUNvbmRpdGlvbiA9IGNyZWF0ZVRlbXBJ
bml0RGVjbGFyYXRpb24odHlwZWRDb25kaXRpb24pOwogCi0gICAgVEludGVybVNlbGVjdGlvbiAq
ZmFsc2VCbG9jayA9IG51bGxwdHI7CisgICAgVEludGVybUJsb2NrICpmYWxzZUJsb2NrID0gbnVs
bHB0cjsKIAogICAgIFRUeXBlIGJvb2xUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxVGVt
cG9yYXJ5KTsKIAotICAgIGlmIChzZWxlY3Rpb24tPmdldEZhbHNlQmxvY2soKSkKKyAgICBpZiAo
aWZFbHNlLT5nZXRGYWxzZUJsb2NrKCkpCiAgICAgewotICAgICAgICBUSW50ZXJtQWdncmVnYXRl
ICpuZWdhdGVkRWxzZSA9IG51bGxwdHI7CisgICAgICAgIFRJbnRlcm1CbG9jayAqbmVnYXRlZEVs
c2UgPSBudWxscHRyOwogICAgICAgICAvLyBjcmJ1Zy5jb20vMzQ2NDYzCiAgICAgICAgIC8vIEQz
RCBnZW5lcmF0ZXMgZXJyb3IgbWVzc2FnZXMgY2xhaW1pbmcgYSBmdW5jdGlvbiBoYXMgbm8gcmV0
dXJuIHZhbHVlLCB3aGVuIHJld3JpdGluZwogICAgICAgICAvLyBhbiBpZi1lbHNlIGNsYXVzZSB0
aGF0IHJldHVybnMgc29tZXRoaW5nIG5vbi12b2lkIGluIGEgZnVuY3Rpb24uIEJ5IGFwcGVuZGlu
ZyBkdW1teQpAQCAtMTA4LDIyICs5MCwyNCBAQAogICAgICAgICAgICAgICAgIG1GdW5jdGlvblR5
cGUtPmdldEJhc2ljU3RyaW5nKCk7CiAgICAgICAgICAgICBUU3RyaW5nIHJhd1RleHQgPSAicmV0
dXJuICgiICsgdHlwZVN0cmluZyArICIpMCI7CiAgICAgICAgICAgICBUSW50ZXJtUmF3ICpyZXR1
cm5Ob2RlID0gbmV3IFRJbnRlcm1SYXcoKm1GdW5jdGlvblR5cGUsIHJhd1RleHQpOwotICAgICAg
ICAgICAgbmVnYXRlZEVsc2UgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZShFT3BTZXF1ZW5jZSk7Cisg
ICAgICAgICAgICBuZWdhdGVkRWxzZSAgICAgICAgICAgID0gbmV3IFRJbnRlcm1CbG9jaygpOwog
ICAgICAgICAgICAgbmVnYXRlZEVsc2UtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhyZXR1cm5O
b2RlKTsKICAgICAgICAgfQogCiAgICAgICAgIFRJbnRlcm1TeW1ib2wgKmNvbmRpdGlvblN5bWJv
bEVsc2UgPSBjcmVhdGVUZW1wU3ltYm9sKGJvb2xUeXBlKTsKLSAgICAgICAgVEludGVybVVuYXJ5
ICpuZWdhdGVkQ29uZGl0aW9uID0gTWFrZU5ld1VuYXJ5KEVPcExvZ2ljYWxOb3QsIGNvbmRpdGlv
blN5bWJvbEVsc2UpOwotICAgICAgICBmYWxzZUJsb2NrID0gbmV3IFRJbnRlcm1TZWxlY3Rpb24o
bmVnYXRlZENvbmRpdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGVjdGlvbi0+Z2V0RmFsc2VCbG9jaygpLCBuZWdhdGVkRWxzZSk7CisgICAgICAgIFRJ
bnRlcm1VbmFyeSAqbmVnYXRlZENvbmRpdGlvbiAgICAgPSBuZXcgVEludGVybVVuYXJ5KEVPcExv
Z2ljYWxOb3QsIGNvbmRpdGlvblN5bWJvbEVsc2UpOworICAgICAgICBUSW50ZXJtSWZFbHNlICpm
YWxzZUlmRWxzZSA9CisgICAgICAgICAgICBuZXcgVEludGVybUlmRWxzZShuZWdhdGVkQ29uZGl0
aW9uLCBpZkVsc2UtPmdldEZhbHNlQmxvY2soKSwgbmVnYXRlZEVsc2UpOworICAgICAgICBmYWxz
ZUJsb2NrID0gVEludGVybWVkaWF0ZTo6RW5zdXJlQmxvY2soZmFsc2VJZkVsc2UpOwogICAgIH0K
IAogICAgIFRJbnRlcm1TeW1ib2wgKmNvbmRpdGlvblN5bWJvbFNlbCA9IGNyZWF0ZVRlbXBTeW1i
b2woYm9vbFR5cGUpOwotICAgIFRJbnRlcm1TZWxlY3Rpb24gKm5ld1NlbGVjdGlvbiA9IG5ldyBU
SW50ZXJtU2VsZWN0aW9uKGNvbmRpdGlvblN5bWJvbFNlbCwgc2VsZWN0aW9uLT5nZXRUcnVlQmxv
Y2soKSwgZmFsc2VCbG9jayk7CisgICAgVEludGVybUlmRWxzZSAqbmV3SWZFbHNlID0KKyAgICAg
ICAgbmV3IFRJbnRlcm1JZkVsc2UoY29uZGl0aW9uU3ltYm9sU2VsLCBpZkVsc2UtPmdldFRydWVC
bG9jaygpLCBmYWxzZUJsb2NrKTsKIAotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmJsb2NrID0gbmV3
IFRJbnRlcm1BZ2dyZWdhdGUoRU9wU2VxdWVuY2UpOworICAgIFRJbnRlcm1CbG9jayAqYmxvY2sg
PSBuZXcgVEludGVybUJsb2NrKCk7CiAgICAgYmxvY2stPmdldFNlcXVlbmNlKCktPnB1c2hfYmFj
ayhzdG9yZUNvbmRpdGlvbik7Ci0gICAgYmxvY2stPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhu
ZXdTZWxlY3Rpb24pOworICAgIGJsb2NrLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2sobmV3SWZF
bHNlKTsKIAogICAgIHJldHVybiBibG9jazsKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVUZXhlbEZldGNoT2Zmc2V0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9SZXdyaXRlVGV4ZWxGZXRjaE9mZnNldC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVRleGVsRmV0
Y2hPZmZzZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcwIEBACisvLworLy8gQ29w
eXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKy8vIEltcGxlbWVudGF0aW9uIG9mIHRleGVsRmV0Y2hPZmZzZXQgdHJhbnNsYXRpb24gaXNz
dWUgd29ya2Fyb3VuZC4KKy8vIFNlZSBoZWFkZXIgZm9yIG1vcmUgaW5mby4KKworI2luY2x1ZGUg
ImNvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQuaCIKKworI2luY2x1
ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9J
bnRlcm1Ob2RlLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5o
IgorCituYW1lc3BhY2Ugc2gKK3sKKworbmFtZXNwYWNlCit7CisKK2NsYXNzIFRyYXZlcnNlciA6
IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCit7CisgIHB1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBB
cHBseShUSW50ZXJtTm9kZSAqcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3lt
Ym9sVGFibGUgJnN5bWJvbFRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgIGludCBzaGFkZXJW
ZXJzaW9uKTsKKworICBwcml2YXRlOgorICAgIFRyYXZlcnNlcihjb25zdCBUU3ltYm9sVGFibGUg
JnN5bWJvbFRhYmxlLCBpbnQgc2hhZGVyVmVyc2lvbik7CisgICAgYm9vbCB2aXNpdEFnZ3JlZ2F0
ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBuZXh0SXRlcmF0aW9uKCk7CisKKyAgICBjb25zdCBUU3ltYm9sVGFibGUgKnN5bWJvbFRhYmxl
OworICAgIGNvbnN0IGludCBzaGFkZXJWZXJzaW9uOworICAgIGJvb2wgbUZvdW5kID0gZmFsc2U7
Cit9OworCitUcmF2ZXJzZXI6OlRyYXZlcnNlcihjb25zdCBUU3ltYm9sVGFibGUgJnN5bWJvbFRh
YmxlLCBpbnQgc2hhZGVyVmVyc2lvbikKKyAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFs
c2UsIGZhbHNlKSwgc3ltYm9sVGFibGUoJnN5bWJvbFRhYmxlKSwgc2hhZGVyVmVyc2lvbihzaGFk
ZXJWZXJzaW9uKQoreworfQorCisvLyBzdGF0aWMKK3ZvaWQgVHJhdmVyc2VyOjpBcHBseShUSW50
ZXJtTm9kZSAqcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3ltYm9sVGFibGUg
JnN5bWJvbFRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgIGludCBzaGFkZXJWZXJzaW9uKQor
eworICAgIFRyYXZlcnNlciB0cmF2ZXJzZXIoc3ltYm9sVGFibGUsIHNoYWRlclZlcnNpb24pOwor
ICAgIGRvCisgICAgeworICAgICAgICB0cmF2ZXJzZXIubmV4dEl0ZXJhdGlvbigpOworICAgICAg
ICByb290LT50cmF2ZXJzZSgmdHJhdmVyc2VyKTsKKyAgICAgICAgaWYgKHRyYXZlcnNlci5tRm91
bmQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRyYXZlcnNlci51cGRhdGVUcmVlKCk7CisgICAg
ICAgIH0KKyAgICB9IHdoaWxlICh0cmF2ZXJzZXIubUZvdW5kKTsKK30KKwordm9pZCBUcmF2ZXJz
ZXI6Om5leHRJdGVyYXRpb24oKQoreworICAgIG1Gb3VuZCA9IGZhbHNlOworfQorCitib29sIFRy
YXZlcnNlcjo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5v
ZGUpCit7CisgICAgaWYgKG1Gb3VuZCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICAvLyBEZWNpZGUgaWYgdGhlIG5vZGUgcmVwcmVzZW50cyB0aGUgY2FsbCBvZiB0
ZXhlbEZldGNoT2Zmc2V0LgorICAgIGlmIChub2RlLT5nZXRPcCgpICE9IEVPcEZ1bmN0aW9uQ2Fs
bCB8fCBub2RlLT5pc1VzZXJEZWZpbmVkKCkpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICBpZiAobm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5hbWUo
KS5jb21wYXJlKDAsIDE2LCAidGV4ZWxGZXRjaE9mZnNldCIpICE9IDApCisgICAgeworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBQb3RlbnRpYWwgcHJvYmxlbSBjYXNlIGRl
dGVjdGVkLCBhcHBseSB3b3JrYXJvdW5kLgorICAgIGNvbnN0IFRJbnRlcm1TZXF1ZW5jZSAqc2Vx
dWVuY2UgPSBub2RlLT5nZXRTZXF1ZW5jZSgpOworICAgIEFTU0VSVChzZXF1ZW5jZS0+c2l6ZSgp
ID09IDR1KTsKKworICAgIC8vIERlY2lkZSBpZiB0aGVyZSBpcyBhIDJEQXJyYXkgc2FtcGxlci4K
KyAgICBib29sIGlzMkRBcnJheSA9IG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5nZXRO
YW1lKCkuZmluZCgiczJhMSIpICE9IFRTdHJpbmc6Om5wb3M7CisKKyAgICAvLyBDcmVhdGUgbmV3
IGFyZ3VtZW50IGxpc3QgZnJvbSBub2RlLT5nZXROYW1lKCkuCisgICAgLy8gZS5nLiBHZXQgIihp
czJhMTt2aTM7aTE7IiBmcm9tICJ0ZXhlbEZldGNoT2Zmc2V0KGlzMmExO3ZpMztpMTt2aTI7Igor
ICAgIFRTdHJpbmcgbmV3QXJncyA9IG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5nZXRO
YW1lKCkuc3Vic3RyKAorICAgICAgICAxNiwgbm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCkt
PmdldE5hbWUoKS5sZW5ndGgoKSAtIDIwKTsKKyAgICBUU3RyaW5nIG5ld05hbWUgICAgICAgICAg
ID0gInRleGVsRmV0Y2giICsgbmV3QXJnczsKKyAgICBUU3ltYm9sICp0ZXhlbEZldGNoU3ltYm9s
ID0gc3ltYm9sVGFibGUtPmZpbmRCdWlsdEluKG5ld05hbWUsIHNoYWRlclZlcnNpb24pOworICAg
IEFTU0VSVCh0ZXhlbEZldGNoU3ltYm9sKTsKKyAgICBpbnQgdW5pcXVlSWQgPSB0ZXhlbEZldGNo
U3ltYm9sLT5nZXRVbmlxdWVJZCgpOworCisgICAgLy8gQ3JlYXRlIG5ldyBub2RlIHRoYXQgcmVw
cmVzZW50cyB0aGUgY2FsbCBvZiBmdW5jdGlvbiB0ZXhlbEZldGNoLgorICAgIC8vIEl0cyBhcmd1
bWVudCBsaXN0IHdpbGwgYmU6IHRleGVsRmV0Y2goc2FtcGxlciwgUG9zaXRpb24rb2Zmc2V0LCBs
b2QpLgorICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnRleGVsRmV0Y2hOb2RlID0gbmV3IFRJbnRlcm1B
Z2dyZWdhdGUoRU9wRnVuY3Rpb25DYWxsKTsKKyAgICB0ZXhlbEZldGNoTm9kZS0+Z2V0RnVuY3Rp
b25TeW1ib2xJbmZvKCktPnNldE5hbWUobmV3TmFtZSk7CisgICAgdGV4ZWxGZXRjaE5vZGUtPmdl
dEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5zZXRJZCh1bmlxdWVJZCk7CisgICAgdGV4ZWxGZXRjaE5v
ZGUtPnNldFR5cGUobm9kZS0+Z2V0VHlwZSgpKTsKKyAgICB0ZXhlbEZldGNoTm9kZS0+c2V0TGlu
ZShub2RlLT5nZXRMaW5lKCkpOworCisgICAgLy8gc2FtcGxlcgorICAgIHRleGVsRmV0Y2hOb2Rl
LT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2soc2VxdWVuY2UtPmF0KDApKTsKKworICAgIC8vIFBv
c2l0aW9uCisgICAgVEludGVybVR5cGVkICp0ZXhDb29yZE5vZGUgPSBzZXF1ZW5jZS0+YXQoMSkt
PmdldEFzVHlwZWQoKTsKKyAgICBBU1NFUlQodGV4Q29vcmROb2RlKTsKKworICAgIC8vIG9mZnNl
dAorICAgIFRJbnRlcm1UeXBlZCAqb2Zmc2V0Tm9kZSA9IG51bGxwdHI7CisgICAgQVNTRVJUKHNl
cXVlbmNlLT5hdCgzKS0+Z2V0QXNUeXBlZCgpKTsKKyAgICBpZiAoaXMyREFycmF5KQorICAgIHsK
KyAgICAgICAgLy8gRm9yIDJEQXJyYXkgc2FtcGxlcnMsIFBvc2l0aW9uIGlzIGl2ZWMzIGFuZCBv
ZmZzZXQgaXMgaXZlYzI7CisgICAgICAgIC8vIFNvIG9mZnNldCBtdXN0IGJlIGNvbnZlcnRlZCBp
bnRvIGFuIGl2ZWMzIGJlZm9yZSBiZWluZyBhZGRlZCB0byBQb3NpdGlvbi4KKyAgICAgICAgVElu
dGVybUFnZ3JlZ2F0ZSAqY29uc3RydWN0SVZlYzNOb2RlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUo
RU9wQ29uc3RydWN0SVZlYzMpOworICAgICAgICBjb25zdHJ1Y3RJVmVjM05vZGUtPnNldExpbmUo
dGV4Q29vcmROb2RlLT5nZXRMaW5lKCkpOworICAgICAgICBjb25zdHJ1Y3RJVmVjM05vZGUtPnNl
dFR5cGUodGV4Q29vcmROb2RlLT5nZXRUeXBlKCkpOworCisgICAgICAgIGNvbnN0cnVjdElWZWMz
Tm9kZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKHNlcXVlbmNlLT5hdCgzKS0+Z2V0QXNUeXBl
ZCgpKTsKKworICAgICAgICBUQ29uc3RhbnRVbmlvbiAqemVybyA9IG5ldyBUQ29uc3RhbnRVbmlv
bigpOworICAgICAgICB6ZXJvLT5zZXRJQ29uc3QoMCk7CisgICAgICAgIFRUeXBlICppbnRUeXBl
ID0gbmV3IFRUeXBlKEVidEludCk7CisKKyAgICAgICAgVEludGVybUNvbnN0YW50VW5pb24gKnpl
cm9Ob2RlID0gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9uKHplcm8sICppbnRUeXBlKTsKKyAgICAg
ICAgY29uc3RydWN0SVZlYzNOb2RlLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2soemVyb05vZGUp
OworCisgICAgICAgIG9mZnNldE5vZGUgPSBjb25zdHJ1Y3RJVmVjM05vZGU7CisgICAgfQorICAg
IGVsc2UKKyAgICB7CisgICAgICAgIG9mZnNldE5vZGUgPSBzZXF1ZW5jZS0+YXQoMyktPmdldEFz
VHlwZWQoKTsKKyAgICB9CisKKyAgICAvLyBQb3NpdGlvbitvZmZzZXQKKyAgICBUSW50ZXJtQmlu
YXJ5ICphZGQgPSBuZXcgVEludGVybUJpbmFyeShFT3BBZGQsIHRleENvb3JkTm9kZSwgb2Zmc2V0
Tm9kZSk7CisgICAgYWRkLT5zZXRMaW5lKHRleENvb3JkTm9kZS0+Z2V0TGluZSgpKTsKKyAgICB0
ZXhlbEZldGNoTm9kZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKGFkZCk7CisKKyAgICAvLyBs
b2QKKyAgICB0ZXhlbEZldGNoTm9kZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKHNlcXVlbmNl
LT5hdCgyKSk7CisKKyAgICBBU1NFUlQodGV4ZWxGZXRjaE5vZGUtPmdldFNlcXVlbmNlKCktPnNp
emUoKSA9PSAzdSk7CisKKyAgICAvLyBSZXBsYWNlIHRoZSBvbGQgbm9kZSBieSB0aGlzIG5ldyBu
b2RlLgorICAgIHF1ZXVlUmVwbGFjZW1lbnQobm9kZSwgdGV4ZWxGZXRjaE5vZGUsIE9yaWdpbmFs
Tm9kZTo6SVNfRFJPUFBFRCk7CisgICAgbUZvdW5kID0gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK30gIC8vIGFub255bW91cyBuYW1lc3BhY2UKKwordm9pZCBSZXdyaXRlVGV4ZWxGZXRj
aE9mZnNldChUSW50ZXJtTm9kZSAqcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IHNoYWRlclZlcnNpb24pCit7CisgICAgLy8gdGV4ZWxGZXRjaE9mZnNldCBpcyBv
bmx5IHZhbGlkIGluIEdMU0wgMy4wIGFuZCBsYXRlci4KKyAgICBpZiAoc2hhZGVyVmVyc2lvbiA8
IDMwMCkKKyAgICAgICAgcmV0dXJuOworCisgICAgVHJhdmVyc2VyOjpBcHBseShyb290LCBzeW1i
b2xUYWJsZSwgc2hhZGVyVmVyc2lvbik7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBzaApJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVRl
eGVsRmV0Y2hPZmZzZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlVGV4ZWxGZXRjaE9mZnNldC5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L1Jld3JpdGVUZXhlbEZldGNoT2Zmc2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMCBA
QAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKy8vCisvLyBUaGlzIG11dGF0aW5nIHRyZWUgdHJhdmVyc2FsIHdvcmtzIGFy
b3VuZCBhbiBpc3N1ZSBvbiB0aGUgdHJhbnNsYXRpb24KKy8vIGZyb20gdGV4ZWxGZXRjaE9mZnNl
dCBpbnRvIEhMU0wgZnVuY3Rpb24gTG9hZCBvbiBJTlRFTCBkcml2ZXJzLiBJdAorLy8gd29ya3Mg
YnkgdHJhbnNsYXRpbmcgdGV4ZWxGZXRjaE9mZnNldCBpbnRvIHRleGVsRmV0Y2g6CisvLworLy8g
LSBGcm9tOiB0ZXhlbEZldGNoT2Zmc2V0KHNhbXBsZXIsIFBvc2l0aW9uLCBsb2QsIG9mZnNldCkK
Ky8vIC0gVG86IHRleGVsRmV0Y2goc2FtcGxlciwgUG9zaXRpb24rb2Zmc2V0LCBsb2QpCisvLwor
Ly8gU2VlIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTQ2OQorCisjaWZuZGVmIENPTVBJTEVSX1RSQU5T
TEFUT1JfUkVXUklURV9URVhFTEZFVENIT0ZGU0VUX0hfCisjZGVmaW5lIENPTVBJTEVSX1RSQU5T
TEFUT1JfUkVXUklURV9URVhFTEZFVENIT0ZGU0VUX0hfCisKK2NsYXNzIFRJbnRlcm1Ob2RlOwor
Y2xhc3MgVFN5bWJvbFRhYmxlOworCituYW1lc3BhY2Ugc2gKK3sKKwordm9pZCBSZXdyaXRlVGV4
ZWxGZXRjaE9mZnNldChUSW50ZXJtTm9kZSAqcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IHNoYWRlclZlcnNpb24pOworCit9ICAvLyBuYW1lc3BhY2Ugc2gKKwor
I2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1JFV1JJVEVfVEVYRUxGRVRDSE9GRlNFVF9I
XwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
UmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckludC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVVuYXJ5TWludXNP
cGVyYXRvckludC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckludC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTIgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIw
MTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gSW1wbGVt
ZW50YXRpb24gb2YgZXZhbHVhdGluZyB1bmFyeSBpbnRlZ2VyIHZhcmlhYmxlIGJ1ZyB3b3JrYXJv
dW5kLgorLy8gU2VlIGhlYWRlciBmb3IgbW9yZSBpbmZvLgorCisjaW5jbHVkZSAiY29tcGlsZXIv
dHJhbnNsYXRvci9SZXdyaXRlVW5hcnlNaW51c09wZXJhdG9ySW50LmgiCisKKyNpbmNsdWRlICJj
b21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuaCIKKworbmFtZXNwYWNlIHNoCit7CisKK25h
bWVzcGFjZQoreworCitjbGFzcyBUcmF2ZXJzZXIgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgor
eworICBwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgQXBwbHkoVEludGVybU5vZGUgKnJvb3QpOwor
CisgIHByaXZhdGU6CisgICAgVHJhdmVyc2VyKCk7CisgICAgYm9vbCB2aXNpdFVuYXJ5KFZpc2l0
IHZpc2l0LCBUSW50ZXJtVW5hcnkgKm5vZGUpIG92ZXJyaWRlOworICAgIHZvaWQgbmV4dEl0ZXJh
dGlvbigpOworCisgICAgYm9vbCBtRm91bmQgPSBmYWxzZTsKK307CisKKy8vIHN0YXRpYwordm9p
ZCBUcmF2ZXJzZXI6OkFwcGx5KFRJbnRlcm1Ob2RlICpyb290KQoreworICAgIFRyYXZlcnNlciB0
cmF2ZXJzZXI7CisgICAgZG8KKyAgICB7CisgICAgICAgIHRyYXZlcnNlci5uZXh0SXRlcmF0aW9u
KCk7CisgICAgICAgIHJvb3QtPnRyYXZlcnNlKCZ0cmF2ZXJzZXIpOworICAgICAgICBpZiAodHJh
dmVyc2VyLm1Gb3VuZCkKKyAgICAgICAgeworICAgICAgICAgICAgdHJhdmVyc2VyLnVwZGF0ZVRy
ZWUoKTsKKyAgICAgICAgfQorICAgIH0gd2hpbGUgKHRyYXZlcnNlci5tRm91bmQpOworfQorCitU
cmF2ZXJzZXI6OlRyYXZlcnNlcigpIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgZmFs
c2UpCit7Cit9CisKK3ZvaWQgVHJhdmVyc2VyOjpuZXh0SXRlcmF0aW9uKCkKK3sKKyAgICBtRm91
bmQgPSBmYWxzZTsKK30KKworYm9vbCBUcmF2ZXJzZXI6OnZpc2l0VW5hcnkoVmlzaXQgdmlzaXQs
IFRJbnRlcm1VbmFyeSAqbm9kZSkKK3sKKyAgICBpZiAobUZvdW5kKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIERlY2lkZSBpZiB0aGUgY3VycmVudCB1bmFy
eSBvcGVyYXRvciBpcyB1bmFyeSBtaW51cy4KKyAgICBpZiAobm9kZS0+Z2V0T3AoKSAhPSBFT3BO
ZWdhdGl2ZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIERl
Y2lkZSBpZiB0aGUgY3VycmVudCBvcGVyYW5kIGlzIGFuIGludGVnZXIgdmFyaWFibGUuCisgICAg
VEludGVybVR5cGVkICpvcHIgPSBub2RlLT5nZXRPcGVyYW5kKCk7CisgICAgaWYgKCFvcHItPmdl
dFR5cGUoKS5pc1NjYWxhckludCgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgLy8gUG90ZW50aWFsIHByb2JsZW0gY2FzZSBkZXRlY3RlZCwgYXBwbHkgd29ya2Fy
b3VuZDogLShpbnQpIC0+IH4oaW50KSArIDEuCisgICAgLy8gfihpbnQpCisgICAgVEludGVybVVu
YXJ5ICpiaXR3aXNlTm90ID0gbmV3IFRJbnRlcm1VbmFyeShFT3BCaXR3aXNlTm90LCBvcHIpOwor
ICAgIGJpdHdpc2VOb3QtPnNldExpbmUob3ByLT5nZXRMaW5lKCkpOworCisgICAgLy8gQ29uc3Rh
bnQgMSAob3IgMXUpCisgICAgVENvbnN0YW50VW5pb24gKm9uZSA9IG5ldyBUQ29uc3RhbnRVbmlv
bigpOworICAgIGlmIChvcHItPmdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRJbnQpCisg
ICAgeworICAgICAgICBvbmUtPnNldElDb25zdCgxKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgb25lLT5zZXRVQ29uc3QoMXUpOworICAgIH0KKyAgICBUSW50ZXJtQ29uc3RhbnRV
bmlvbiAqb25lTm9kZSA9IG5ldyBUSW50ZXJtQ29uc3RhbnRVbmlvbihvbmUsIG9wci0+Z2V0VHlw
ZSgpKTsKKyAgICBvbmVOb2RlLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIoRXZxQ29u
c3QpOworICAgIG9uZU5vZGUtPnNldExpbmUob3ByLT5nZXRMaW5lKCkpOworCisgICAgLy8gfihp
bnQpICsgMQorICAgIFRJbnRlcm1CaW5hcnkgKmFkZCA9IG5ldyBUSW50ZXJtQmluYXJ5KEVPcEFk
ZCwgYml0d2lzZU5vdCwgb25lTm9kZSk7CisgICAgYWRkLT5zZXRMaW5lKG9wci0+Z2V0TGluZSgp
KTsKKworICAgIHF1ZXVlUmVwbGFjZW1lbnQobm9kZSwgYWRkLCBPcmlnaW5hbE5vZGU6OklTX0RS
T1BQRUQpOworCisgICAgbUZvdW5kID0gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30g
IC8vIGFub255bW91cyBuYW1lc3BhY2UKKwordm9pZCBSZXdyaXRlVW5hcnlNaW51c09wZXJhdG9y
SW50KFRJbnRlcm1Ob2RlICpyb290KQoreworICAgIFRyYXZlcnNlcjo6QXBwbHkocm9vdCk7Cit9
CisKK30gIC8vIG5hbWVzcGFjZSBzaApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckludC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L1Jld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JJbnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlVW5hcnlNaW51
c09wZXJhdG9ySW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMCBAQAorLy8gQ29weXJp
Z2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
Ky8vIFRoaXMgbXV0YXRpbmcgdHJlZSB0cmF2ZXJzYWwgd29ya3MgYXJvdW5kIGEgYnVnIG9uIGV2
YWx1YXRpbmcgdW5hcnkKKy8vIGludGVnZXIgdmFyaWFibGUgb24gSW50ZWwgRDNEIGRyaXZlci4g
SXQgd29ya3MgYnkgcmV3cml0aW5nIC0oaW50KSB0bworLy8gfihpbnQpICsgMSB3aGVuIGV2YWx1
YXRpbmcgdW5hcnkgaW50ZWdlciB2YXJpYWJsZXMuCisKKyNpZm5kZWYgQ09NUElMRVJfVFJBTlNM
QVRPUl9SRVdSSVRFVU5BUllNSU5VU09QRVJBVE9SSU5UX0hfCisjZGVmaW5lIENPTVBJTEVSX1RS
QU5TTEFUT1JfUkVXUklURVVOQVJZTUlOVVNPUEVSQVRPUklOVF9IXworCitjbGFzcyBUSW50ZXJt
Tm9kZTsKK25hbWVzcGFjZSBzaAoreworCit2b2lkIFJld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JJ
bnQoVEludGVybU5vZGUgKnJvb3QpOworCit9ICAvLyBuYW1lc3BhY2Ugc2gKKworI2VuZGlmICAv
LyBDT01QSUxFUl9UUkFOU0xBVE9SX1JFV1JJVEVVTkFSWU1JTlVTT1BFUkFUT1JJTlRfSF8KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NjYWxh
cml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2NhbGFyaXplVmVjQW5kTWF0
Q29uc3RydWN0b3JBcmdzLmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2NhbGFyaXplVmVjQW5kTWF0Q29uc3Ry
dWN0b3JBcmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMjMgKzM3LDkgQEAKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLVRJbnRlcm1Db25zdGFudFVuaW9uICpDb25zdHJ1Y3RJbmRleE5vZGUo
aW50IGluZGV4KQotewotICAgIFRDb25zdGFudFVuaW9uICp1ID0gbmV3IFRDb25zdGFudFVuaW9u
WzFdOwotICAgIHVbMF0uc2V0SUNvbnN0KGluZGV4KTsKLQotICAgIFRUeXBlIHR5cGUoRWJ0SW50
LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0LCAxKTsKLSAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAq
bm9kZSA9IG5ldyBUSW50ZXJtQ29uc3RhbnRVbmlvbih1LCB0eXBlKTsKLSAgICByZXR1cm4gbm9k
ZTsKLX0KLQogVEludGVybUJpbmFyeSAqQ29uc3RydWN0VmVjdG9ySW5kZXhCaW5hcnlOb2RlKFRJ
bnRlcm1TeW1ib2wgKnN5bWJvbE5vZGUsIGludCBpbmRleCkKIHsKLSAgICBUSW50ZXJtQmluYXJ5
ICpiaW5hcnkgPSBuZXcgVEludGVybUJpbmFyeShFT3BJbmRleERpcmVjdCk7Ci0gICAgYmluYXJ5
LT5zZXRMZWZ0KHN5bWJvbE5vZGUpOwotICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICppbmRleE5v
ZGUgPSBDb25zdHJ1Y3RJbmRleE5vZGUoaW5kZXgpOwotICAgIGJpbmFyeS0+c2V0UmlnaHQoaW5k
ZXhOb2RlKTsKLSAgICByZXR1cm4gYmluYXJ5OworICAgIHJldHVybiBuZXcgVEludGVybUJpbmFy
eShFT3BJbmRleERpcmVjdCwgc3ltYm9sTm9kZSwgVEludGVybVR5cGVkOjpDcmVhdGVJbmRleE5v
ZGUoaW5kZXgpKTsKIH0KIAogVEludGVybUJpbmFyeSAqQ29uc3RydWN0TWF0cml4SW5kZXhCaW5h
cnlOb2RlKApAQCAtNjIsMTEgKzQ4LDggQEAKICAgICBUSW50ZXJtQmluYXJ5ICpjb2xWZWN0b3JO
b2RlID0KICAgICAgICAgQ29uc3RydWN0VmVjdG9ySW5kZXhCaW5hcnlOb2RlKHN5bWJvbE5vZGUs
IGNvbEluZGV4KTsKIAotICAgIFRJbnRlcm1CaW5hcnkgKmJpbmFyeSA9IG5ldyBUSW50ZXJtQmlu
YXJ5KEVPcEluZGV4RGlyZWN0KTsKLSAgICBiaW5hcnktPnNldExlZnQoY29sVmVjdG9yTm9kZSk7
Ci0gICAgVEludGVybUNvbnN0YW50VW5pb24gKnJvd0luZGV4Tm9kZSA9IENvbnN0cnVjdEluZGV4
Tm9kZShyb3dJbmRleCk7Ci0gICAgYmluYXJ5LT5zZXRSaWdodChyb3dJbmRleE5vZGUpOwotICAg
IHJldHVybiBiaW5hcnk7CisgICAgcmV0dXJuIG5ldyBUSW50ZXJtQmluYXJ5KEVPcEluZGV4RGly
ZWN0LCBjb2xWZWN0b3JOb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJt
VHlwZWQ6OkNyZWF0ZUluZGV4Tm9kZShyb3dJbmRleCkpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ug
YW5vbnltb3VzCkBAIC03NywyNSArNjAsNiBAQAogICAgIHsKICAgICAgICAgc3dpdGNoIChub2Rl
LT5nZXRPcCgpKQogICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBFT3BTZXF1ZW5jZToKLSAgICAg
ICAgICAgIG1TZXF1ZW5jZVN0YWNrLnB1c2hfYmFjayhUSW50ZXJtU2VxdWVuY2UoKSk7Ci0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZm9yIChUSW50ZXJtU2VxdWVuY2U6OmNvbnN0X2l0
ZXJhdG9yIGl0ZXIgPSBub2RlLT5nZXRTZXF1ZW5jZSgpLT5iZWdpbigpOwotICAgICAgICAgICAg
ICAgICAgICAgaXRlciAhPSBub2RlLT5nZXRTZXF1ZW5jZSgpLT5lbmQoKTsgKytpdGVyKQotICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgVEludGVybU5vZGUgKmNoaWxkID0g
Kml0ZXI7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChjaGlsZCAhPSBOVUxMKTsKLSAgICAg
ICAgICAgICAgICAgICAgY2hpbGQtPnRyYXZlcnNlKHRoaXMpOwotICAgICAgICAgICAgICAgICAg
ICBtU2VxdWVuY2VTdGFjay5iYWNrKCkucHVzaF9iYWNrKGNoaWxkKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobVNlcXVlbmNlU3RhY2suYmFjaygp
LnNpemUoKSA+IG5vZGUtPmdldFNlcXVlbmNlKCktPnNpemUoKSkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBub2RlLT5nZXRTZXF1ZW5jZSgpLT5jbGVhcigpOwotICAgICAgICAgICAg
ICAgICoobm9kZS0+Z2V0U2VxdWVuY2UoKSkgPSBtU2VxdWVuY2VTdGFjay5iYWNrKCk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBtU2VxdWVuY2VTdGFjay5wb3BfYmFjaygpOwotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0VmVjMjoKICAg
ICAgICAgICBjYXNlIEVPcENvbnN0cnVjdFZlYzM6CiAgICAgICAgICAgY2FzZSBFT3BDb25zdHJ1
Y3RWZWM0OgpAQCAtMTI3LDYgKzkxLDI2IEBACiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wg
U2NhbGFyaXplVmVjQW5kTWF0Q29uc3RydWN0b3JBcmdzOjp2aXNpdEJsb2NrKFZpc2l0IHZpc2l0
LCBUSW50ZXJtQmxvY2sgKm5vZGUpCit7CisgICAgbUJsb2NrU3RhY2sucHVzaF9iYWNrKFRJbnRl
cm1TZXF1ZW5jZSgpKTsKKyAgICB7CisgICAgICAgIGZvciAoVEludGVybU5vZGUgKmNoaWxkIDog
Km5vZGUtPmdldFNlcXVlbmNlKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChjaGls
ZCAhPSBudWxscHRyKTsKKyAgICAgICAgICAgIGNoaWxkLT50cmF2ZXJzZSh0aGlzKTsKKyAgICAg
ICAgICAgIG1CbG9ja1N0YWNrLmJhY2soKS5wdXNoX2JhY2soY2hpbGQpOworICAgICAgICB9Cisg
ICAgfQorICAgIGlmIChtQmxvY2tTdGFjay5iYWNrKCkuc2l6ZSgpID4gbm9kZS0+Z2V0U2VxdWVu
Y2UoKS0+c2l6ZSgpKQorICAgIHsKKyAgICAgICAgbm9kZS0+Z2V0U2VxdWVuY2UoKS0+Y2xlYXIo
KTsKKyAgICAgICAgKihub2RlLT5nZXRTZXF1ZW5jZSgpKSA9IG1CbG9ja1N0YWNrLmJhY2soKTsK
KyAgICB9CisgICAgbUJsb2NrU3RhY2sucG9wX2JhY2soKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKIHZvaWQgU2NhbGFyaXplVmVjQW5kTWF0Q29uc3RydWN0b3JBcmdzOjpzY2FsYXJpemVBcmdz
KAogICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3JlZ2F0ZSwgYm9vbCBzY2FsYXJpemVWZWN0b3Is
IGJvb2wgc2NhbGFyaXplTWF0cml4KQogewpAQCAtMjc4LDE3ICsyNjIsMTQgQEAKICAgICAgICAg
dHlwZS5zZXRQcmVjaXNpb24obUZyYWdtZW50UHJlY2lzaW9uSGlnaCA/IEVicEhpZ2ggOiBFYnBN
ZWRpdW0pOwogICAgIH0KIAotICAgIFRJbnRlcm1CaW5hcnkgKmluaXQgPSBuZXcgVEludGVybUJp
bmFyeShFT3BJbml0aWFsaXplKTsKICAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2xOb2RlID0gbmV3
IFRJbnRlcm1TeW1ib2woLTEsIHRlbXBWYXJOYW1lLCB0eXBlKTsKLSAgICBpbml0LT5zZXRMZWZ0
KHN5bWJvbE5vZGUpOwotICAgIGluaXQtPnNldFJpZ2h0KG9yaWdpbmFsKTsKLSAgICBpbml0LT5z
ZXRUeXBlKHR5cGUpOworICAgIFRJbnRlcm1CaW5hcnkgKmluaXQgICAgICAgPSBuZXcgVEludGVy
bUJpbmFyeShFT3BJbml0aWFsaXplLCBzeW1ib2xOb2RlLCBvcmlnaW5hbCk7CiAKICAgICBUSW50
ZXJtQWdncmVnYXRlICpkZWNsID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoRU9wRGVjbGFyYXRpb24p
OwogICAgIGRlY2wtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhpbml0KTsKIAotICAgIEFTU0VS
VChtU2VxdWVuY2VTdGFjay5zaXplKCkgPiAwKTsKLSAgICBUSW50ZXJtU2VxdWVuY2UgJnNlcXVl
bmNlID0gbVNlcXVlbmNlU3RhY2suYmFjaygpOworICAgIEFTU0VSVChtQmxvY2tTdGFjay5zaXpl
KCkgPiAwKTsKKyAgICBUSW50ZXJtU2VxdWVuY2UgJnNlcXVlbmNlID0gbUJsb2NrU3RhY2suYmFj
aygpOwogICAgIHNlcXVlbmNlLnB1c2hfYmFjayhkZWNsKTsKIAogICAgIHJldHVybiB0ZW1wVmFy
TmFtZTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1NjYWxhcml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJncy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NjYWxhcml6ZVZl
Y0FuZE1hdENvbnN0cnVjdG9yQXJncy5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TY2FsYXJpemVWZWNBbmRNYXRD
b25zdHJ1Y3RvckFyZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQAogCiAgIHBy
b3RlY3RlZDoKICAgICBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdn
cmVnYXRlICpub2RlKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0QmxvY2soVmlzaXQgdmlzaXQs
IFRJbnRlcm1CbG9jayAqbm9kZSkgb3ZlcnJpZGU7CiAKICAgcHJpdmF0ZToKICAgICB2b2lkIHNj
YWxhcml6ZUFyZ3MoVEludGVybUFnZ3JlZ2F0ZSAqYWdncmVnYXRlLApAQCAtMzgsNyArMzksNyBA
QAogICAgIC8vIFJldHVybiB0aGUgdGVtcG9yYXJ5IHZhcmlhYmxlIG5hbWUuCiAgICAgVFN0cmlu
ZyBjcmVhdGVUZW1wVmFyaWFibGUoVEludGVybVR5cGVkICpvcmlnaW5hbCk7CiAKLSAgICBzdGQ6
OnZlY3RvcjxUSW50ZXJtU2VxdWVuY2U+IG1TZXF1ZW5jZVN0YWNrOworICAgIHN0ZDo6dmVjdG9y
PFRJbnRlcm1TZXF1ZW5jZT4gbUJsb2NrU3RhY2s7CiAgICAgaW50IG1UZW1wVmFyQ291bnQ7CiAK
ICAgICBzaDo6R0xlbnVtIG1TaGFkZXJUeXBlOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVBcnJheUluaXRpYWxpemF0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9TZXBhcmF0ZUFycmF5SW5pdGlhbGl6YXRpb24uY3BwCShyZXZpc2lvbiAyMDgwMjEp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TZXBh
cmF0ZUFycmF5SW5pdGlhbGl6YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw4ICs1OCw4
IEBACiAgICAgICAgICAgICAgICAgLy8gV2UgcmVseSBvbiB0aGF0IGFycmF5IGRlY2xhcmF0aW9u
cyBoYXZlIGJlZW4gaXNvbGF0ZWQgdG8gc2luZ2xlIGRlY2xhcmF0aW9ucy4KICAgICAgICAgICAg
ICAgICBBU1NFUlQoc2VxdWVuY2UtPnNpemUoKSA9PSAxKTsKICAgICAgICAgICAgICAgICBUSW50
ZXJtVHlwZWQgKnN5bWJvbCA9IGluaXROb2RlLT5nZXRMZWZ0KCk7Ci0gICAgICAgICAgICAgICAg
VEludGVybUFnZ3JlZ2F0ZSAqcGFyZW50QWdnID0gZ2V0UGFyZW50Tm9kZSgpLT5nZXRBc0FnZ3Jl
Z2F0ZSgpOwotICAgICAgICAgICAgICAgIEFTU0VSVChwYXJlbnRBZ2cgIT0gbnVsbHB0cik7Cisg
ICAgICAgICAgICAgICAgVEludGVybUJsb2NrICpwYXJlbnRCbG9jayA9IGdldFBhcmVudE5vZGUo
KS0+Z2V0QXNCbG9jaygpOworICAgICAgICAgICAgICAgIEFTU0VSVChwYXJlbnRCbG9jayAhPSBu
dWxscHRyKTsKIAogICAgICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSByZXBsYWNlbWVudHM7
CiAKQEAgLTY5LDE0ICs2OSwxMyBAQAogICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50RGVjbGFy
YXRpb24tPnNldExpbmUoc3ltYm9sLT5nZXRMaW5lKCkpOwogICAgICAgICAgICAgICAgIHJlcGxh
Y2VtZW50cy5wdXNoX2JhY2socmVwbGFjZW1lbnREZWNsYXJhdGlvbik7CiAKLSAgICAgICAgICAg
ICAgICBUSW50ZXJtQmluYXJ5ICpyZXBsYWNlbWVudEFzc2lnbm1lbnQgPSBuZXcgVEludGVybUJp
bmFyeShFT3BBc3NpZ24pOwotICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50QXNzaWdubWVudC0+
c2V0TGVmdChzeW1ib2wpOwotICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50QXNzaWdubWVudC0+
c2V0UmlnaHQoaW5pdGlhbGl6ZXIpOwotICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50QXNzaWdu
bWVudC0+c2V0VHlwZShpbml0aWFsaXplci0+Z2V0VHlwZSgpKTsKKyAgICAgICAgICAgICAgICBU
SW50ZXJtQmluYXJ5ICpyZXBsYWNlbWVudEFzc2lnbm1lbnQgPQorICAgICAgICAgICAgICAgICAg
ICBuZXcgVEludGVybUJpbmFyeShFT3BBc3NpZ24sIHN5bWJvbCwgaW5pdGlhbGl6ZXIpOwogICAg
ICAgICAgICAgICAgIHJlcGxhY2VtZW50QXNzaWdubWVudC0+c2V0TGluZShzeW1ib2wtPmdldExp
bmUoKSk7CiAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRzLnB1c2hfYmFjayhyZXBsYWNlbWVu
dEFzc2lnbm1lbnQpOwogCi0gICAgICAgICAgICAgICAgbU11bHRpUmVwbGFjZW1lbnRzLnB1c2hf
YmFjayhOb2RlUmVwbGFjZVdpdGhNdWx0aXBsZUVudHJ5KHBhcmVudEFnZywgbm9kZSwgcmVwbGFj
ZW1lbnRzKSk7CisgICAgICAgICAgICAgICAgbU11bHRpUmVwbGFjZW1lbnRzLnB1c2hfYmFjaygK
KyAgICAgICAgICAgICAgICAgICAgTm9kZVJlcGxhY2VXaXRoTXVsdGlwbGVFbnRyeShwYXJlbnRC
bG9jaywgbm9kZSwgcmVwbGFjZW1lbnRzKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVEZWNsYXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NlcGFyYXRl
RGVjbGFyYXRpb25zLmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVEZWNsYXJhdGlvbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OCw4ICs0OCw4IEBACiAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAq
c2VxdWVuY2UgPSBub2RlLT5nZXRTZXF1ZW5jZSgpOwogICAgICAgICBpZiAoc2VxdWVuY2UtPnNp
emUoKSA+IDEpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnBhcmVu
dEFnZyA9IGdldFBhcmVudE5vZGUoKS0+Z2V0QXNBZ2dyZWdhdGUoKTsKLSAgICAgICAgICAgIEFT
U0VSVChwYXJlbnRBZ2cgIT0gbnVsbHB0cik7CisgICAgICAgICAgICBUSW50ZXJtQmxvY2sgKnBh
cmVudEJsb2NrID0gZ2V0UGFyZW50Tm9kZSgpLT5nZXRBc0Jsb2NrKCk7CisgICAgICAgICAgICBB
U1NFUlQocGFyZW50QmxvY2sgIT0gbnVsbHB0cik7CiAKICAgICAgICAgICAgIFRJbnRlcm1TZXF1
ZW5jZSByZXBsYWNlbWVudERlY2xhcmF0aW9uczsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGlp
ID0gMDsgaWkgPCBzZXF1ZW5jZS0+c2l6ZSgpOyArK2lpKQpAQCAtNjIsNyArNjIsOCBAQAogICAg
ICAgICAgICAgICAgIHJlcGxhY2VtZW50RGVjbGFyYXRpb25zLnB1c2hfYmFjayhyZXBsYWNlbWVu
dERlY2xhcmF0aW9uKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbU11bHRpUmVwbGFj
ZW1lbnRzLnB1c2hfYmFjayhOb2RlUmVwbGFjZVdpdGhNdWx0aXBsZUVudHJ5KHBhcmVudEFnZywg
bm9kZSwgcmVwbGFjZW1lbnREZWNsYXJhdGlvbnMpKTsKKyAgICAgICAgICAgIG1NdWx0aVJlcGxh
Y2VtZW50cy5wdXNoX2JhY2soCisgICAgICAgICAgICAgICAgTm9kZVJlcGxhY2VXaXRoTXVsdGlw
bGVFbnRyeShwYXJlbnRCbG9jaywgbm9kZSwgcmVwbGFjZW1lbnREZWNsYXJhdGlvbnMpKTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVFeHByZXNzaW9uc1Jl
dHVybmluZ0FycmF5cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVFeHByZXNzaW9uc1JldHVybmluZ0FycmF5
cy5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL1NlcGFyYXRlRXhwcmVzc2lvbnNSZXR1cm5pbmdBcnJheXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMiw2ICsxMiw3IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJh
bnNsYXRvci9TZXBhcmF0ZUV4cHJlc3Npb25zUmV0dXJuaW5nQXJyYXlzLmgiCiAKICNpbmNsdWRl
ICJjb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuaCIKKyNpbmNsdWRlICJjb21waWxlci90
cmFuc2xhdG9yL0ludGVybU5vZGVQYXR0ZXJuTWF0Y2hlci5oIgogCiBuYW1lc3BhY2UKIHsKQEAg
LTMyLDExICszMywxNCBAQAogICAgIC8vIE1hcmtlZCB0byB0cnVlIG9uY2UgYW4gb3BlcmF0aW9u
IHRoYXQgbmVlZHMgdG8gYmUgaG9pc3RlZCBvdXQgb2YgdGhlIGV4cHJlc3Npb24gaGFzIGJlZW4g
Zm91bmQuCiAgICAgLy8gQWZ0ZXIgdGhhdCwgbm8gbW9yZSBBU1QgdXBkYXRlcyBhcmUgcGVyZm9y
bWVkIG9uIHRoYXQgdHJhdmVyc2FsLgogICAgIGJvb2wgbUZvdW5kQXJyYXlFeHByZXNzaW9uOwor
CisgICAgSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVyIG1QYXR0ZXJuVG9TZXBhcmF0ZU1hdGNoZXI7
CiB9OwogCiBTZXBhcmF0ZUV4cHJlc3Npb25zVHJhdmVyc2VyOjpTZXBhcmF0ZUV4cHJlc3Npb25z
VHJhdmVyc2VyKCkKICAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKSwK
LSAgICAgIG1Gb3VuZEFycmF5RXhwcmVzc2lvbihmYWxzZSkKKyAgICAgIG1Gb3VuZEFycmF5RXhw
cmVzc2lvbihmYWxzZSksCisgICAgICBtUGF0dGVyblRvU2VwYXJhdGVNYXRjaGVyKEludGVybU5v
ZGVQYXR0ZXJuTWF0Y2hlcjo6a0V4cHJlc3Npb25SZXR1cm5pbmdBcnJheSkKIHsKIH0KIApAQCAt
NDUsMTEgKzQ5LDcgQEAKIC8vIGFuZCBhbHNvIG5lZWRzIHRvIGJlIHJlcGxhY2VkIGluIGl0cyBv
cmlnaW5hbCBsb2NhdGlvbiBieSBhIGRpZmZlcmVudCBub2RlLgogVEludGVybUJpbmFyeSAqQ29w
eUFzc2lnbm1lbnROb2RlKFRJbnRlcm1CaW5hcnkgKm5vZGUpCiB7Ci0gICAgVEludGVybUJpbmFy
eSAqY29weU5vZGUgPSBuZXcgVEludGVybUJpbmFyeShub2RlLT5nZXRPcCgpKTsKLSAgICBjb3B5
Tm9kZS0+c2V0TGVmdChub2RlLT5nZXRMZWZ0KCkpOwotICAgIGNvcHlOb2RlLT5zZXRSaWdodChu
b2RlLT5nZXRSaWdodCgpKTsKLSAgICBjb3B5Tm9kZS0+c2V0VHlwZShub2RlLT5nZXRUeXBlKCkp
OwotICAgIHJldHVybiBjb3B5Tm9kZTsKKyAgICByZXR1cm4gbmV3IFRJbnRlcm1CaW5hcnkobm9k
ZS0+Z2V0T3AoKSwgbm9kZS0+Z2V0TGVmdCgpLCBub2RlLT5nZXRSaWdodCgpKTsKIH0KIAogLy8g
UGVyZm9ybXMgYSBzaGFsbG93IGNvcHkgb2YgYSBjb25zdHJ1Y3Rvci9mdW5jdGlvbiBjYWxsIG5v
ZGUuCkBAIC01OSwxMiArNTksMTEgQEAKICAgICBUSW50ZXJtU2VxdWVuY2UgKmNvcHlTZXEgPSBj
b3B5Tm9kZS0+Z2V0U2VxdWVuY2UoKTsKICAgICBjb3B5U2VxLT5pbnNlcnQoY29weVNlcS0+YmVn
aW4oKSwgbm9kZS0+Z2V0U2VxdWVuY2UoKS0+YmVnaW4oKSwgbm9kZS0+Z2V0U2VxdWVuY2UoKS0+
ZW5kKCkpOwogICAgIGNvcHlOb2RlLT5zZXRUeXBlKG5vZGUtPmdldFR5cGUoKSk7Ci0gICAgY29w
eU5vZGUtPnNldEZ1bmN0aW9uSWQobm9kZS0+Z2V0RnVuY3Rpb25JZCgpKTsKKyAgICAqY29weU5v
ZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpID0gKm5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5m
bygpOwogICAgIGlmIChub2RlLT5pc1VzZXJEZWZpbmVkKCkpCiAgICAgewogICAgICAgICBjb3B5
Tm9kZS0+c2V0VXNlckRlZmluZWQoKTsKICAgICB9Ci0gICAgY29weU5vZGUtPnNldE5hbWVPYmoo
bm9kZS0+Z2V0TmFtZU9iaigpKTsKICAgICByZXR1cm4gY29weU5vZGU7CiB9CiAKQEAgLTczLDMx
ICs3MiwyNSBAQAogICAgIGlmIChtRm91bmRBcnJheUV4cHJlc3Npb24pCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIC8vIEVhcmx5IHJldHVybiBpZiB0aGUgZXhwcmVzc2lvbiBpcyBub3Qg
YW4gYXJyYXkgb3IgaWYgd2UncmUgbm90IGluc2lkZSBhIGNvbXBsZXggZXhwcmVzc2lvbi4KLSAg
ICBpZiAoIW5vZGUtPmdldFR5cGUoKS5pc0FycmF5KCkgfHwgcGFyZW50Tm9kZUlzQmxvY2soKSkK
KyAgICAvLyBSZXR1cm4gaWYgdGhlIGV4cHJlc3Npb24gaXMgbm90IGFuIGFycmF5IG9yIGlmIHdl
J3JlIG5vdCBpbnNpZGUgYSBjb21wbGV4IGV4cHJlc3Npb24uCisgICAgaWYgKCFtUGF0dGVyblRv
U2VwYXJhdGVNYXRjaGVyLm1hdGNoKG5vZGUsIGdldFBhcmVudE5vZGUoKSkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCi0gICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQotICAgIHsKLSAgICAgIGNh
c2UgRU9wQXNzaWduOgotICAgICAgICB7Ci0gICAgICAgICAgICBtRm91bmRBcnJheUV4cHJlc3Np
b24gPSB0cnVlOworICAgIEFTU0VSVChub2RlLT5nZXRPcCgpID09IEVPcEFzc2lnbik7CiAKLSAg
ICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSBpbnNlcnRpb25zOwotICAgICAgICAgICAgaW5zZXJ0
aW9ucy5wdXNoX2JhY2soQ29weUFzc2lnbm1lbnROb2RlKG5vZGUpKTsKLSAgICAgICAgICAgIC8v
IFRPRE8ob2V0dWFobyk6IEluIHNvbWUgY2FzZXMgaXQgd291bGQgYmUgbW9yZSBvcHRpbWFsIHRv
IG5vdCBhZGQgdGhlIHRlbXBvcmFyeSBub2RlLCBidXQganVzdCB1c2UgdGhlCi0gICAgICAgICAg
ICAvLyBvcmlnaW5hbCB0YXJnZXQgb2YgdGhlIGFzc2lnbm1lbnQuIENhcmUgbXVzdCBiZSB0YWtl
biBzbyB0aGF0IHRoaXMgZG9lc24ndCBoYXBwZW4gd2hlbiB0aGUgc2FtZSBhcnJheQotICAgICAg
ICAgICAgLy8gc3ltYm9sIGlzIGEgdGFyZ2V0IG9mIGFzc2lnbm1lbnQgbW9yZSB0aGFuIG9uY2Ug
aW4gb25lIGV4cHJlc3Npb24uCi0gICAgICAgICAgICBpbnNlcnRpb25zLnB1c2hfYmFjayhjcmVh
dGVUZW1wSW5pdERlY2xhcmF0aW9uKG5vZGUtPmdldExlZnQoKSkpOwotICAgICAgICAgICAgaW5z
ZXJ0U3RhdGVtZW50c0luUGFyZW50QmxvY2soaW5zZXJ0aW9ucyk7CisgICAgbUZvdW5kQXJyYXlF
eHByZXNzaW9uID0gdHJ1ZTsKIAotICAgICAgICAgICAgTm9kZVVwZGF0ZUVudHJ5IHJlcGxhY2VW
YXJpYWJsZShnZXRQYXJlbnROb2RlKCksIG5vZGUsIGNyZWF0ZVRlbXBTeW1ib2wobm9kZS0+Z2V0
VHlwZSgpKSwgZmFsc2UpOwotICAgICAgICAgICAgbVJlcGxhY2VtZW50cy5wdXNoX2JhY2socmVw
bGFjZVZhcmlhYmxlKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBk
ZWZhdWx0OgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9CisgICAgVEludGVybVNlcXVlbmNl
IGluc2VydGlvbnM7CisgICAgaW5zZXJ0aW9ucy5wdXNoX2JhY2soQ29weUFzc2lnbm1lbnROb2Rl
KG5vZGUpKTsKKyAgICAvLyBUT0RPKG9ldHVhaG8pOiBJbiBzb21lIGNhc2VzIGl0IHdvdWxkIGJl
IG1vcmUgb3B0aW1hbCB0byBub3QgYWRkIHRoZSB0ZW1wb3Jhcnkgbm9kZSwgYnV0IGp1c3QKKyAg
ICAvLyB1c2UgdGhlIG9yaWdpbmFsIHRhcmdldCBvZiB0aGUgYXNzaWdubWVudC4gQ2FyZSBtdXN0
IGJlIHRha2VuIHNvIHRoYXQgdGhpcyBkb2Vzbid0IGhhcHBlbgorICAgIC8vIHdoZW4gdGhlIHNh
bWUgYXJyYXkgc3ltYm9sIGlzIGEgdGFyZ2V0IG9mIGFzc2lnbm1lbnQgbW9yZSB0aGFuIG9uY2Ug
aW4gb25lIGV4cHJlc3Npb24uCisgICAgaW5zZXJ0aW9ucy5wdXNoX2JhY2soY3JlYXRlVGVtcElu
aXREZWNsYXJhdGlvbihub2RlLT5nZXRMZWZ0KCkpKTsKKyAgICBpbnNlcnRTdGF0ZW1lbnRzSW5Q
YXJlbnRCbG9jayhpbnNlcnRpb25zKTsKKworICAgIHF1ZXVlUmVwbGFjZW1lbnQobm9kZSwgY3Jl
YXRlVGVtcFN5bWJvbChub2RlLT5nZXRUeXBlKCkpLCBPcmlnaW5hbE5vZGU6OklTX0RST1BQRUQp
OworCisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIFNlcGFyYXRlRXhwcmVzc2lvbnNUcmF2
ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2Rl
KQpAQCAtMTA1LDQzICs5OCwyMCBAQAogICAgIGlmIChtRm91bmRBcnJheUV4cHJlc3Npb24pCiAg
ICAgICAgIHJldHVybiBmYWxzZTsgLy8gTm8gbmVlZCB0byB0cmF2ZXJzZSBmdXJ0aGVyCiAKLSAg
ICBpZiAoZ2V0UGFyZW50Tm9kZSgpICE9IG51bGxwdHIpCi0gICAgewotICAgICAgICBUSW50ZXJt
QmluYXJ5ICpwYXJlbnRCaW5hcnkgPSBnZXRQYXJlbnROb2RlKCktPmdldEFzQmluYXJ5Tm9kZSgp
OwotICAgICAgICBib29sIHBhcmVudElzQXNzaWdubWVudCA9IChwYXJlbnRCaW5hcnkgIT0gbnVs
bHB0ciAmJgotICAgICAgICAgICAgKHBhcmVudEJpbmFyeS0+Z2V0T3AoKSA9PSBFT3BBc3NpZ24g
fHwgcGFyZW50QmluYXJ5LT5nZXRPcCgpID09IEVPcEluaXRpYWxpemUpKTsKKyAgICBpZiAoIW1Q
YXR0ZXJuVG9TZXBhcmF0ZU1hdGNoZXIubWF0Y2gobm9kZSwgZ2V0UGFyZW50Tm9kZSgpKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgaWYgKCFub2RlLT5nZXRUeXBlKCkuaXNBcnJh
eSgpIHx8IHBhcmVudE5vZGVJc0Jsb2NrKCkgfHwgcGFyZW50SXNBc3NpZ25tZW50KQotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgQVNTRVJUKG5vZGUtPmlzQ29uc3RydWN0b3IoKSB8fCBu
b2RlLT5nZXRPcCgpID09IEVPcEZ1bmN0aW9uQ2FsbCk7CiAKLSAgICAgICAgaWYgKG5vZGUtPmlz
Q29uc3RydWN0b3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgbUZvdW5kQXJyYXlFeHByZXNz
aW9uID0gdHJ1ZTsKKyAgICBtRm91bmRBcnJheUV4cHJlc3Npb24gPSB0cnVlOwogCi0gICAgICAg
ICAgICBUSW50ZXJtU2VxdWVuY2UgaW5zZXJ0aW9uczsKLSAgICAgICAgICAgIGluc2VydGlvbnMu
cHVzaF9iYWNrKGNyZWF0ZVRlbXBJbml0RGVjbGFyYXRpb24oQ29weUFnZ3JlZ2F0ZU5vZGUobm9k
ZSkpKTsKLSAgICAgICAgICAgIGluc2VydFN0YXRlbWVudHNJblBhcmVudEJsb2NrKGluc2VydGlv
bnMpOworICAgIFRJbnRlcm1TZXF1ZW5jZSBpbnNlcnRpb25zOworICAgIGluc2VydGlvbnMucHVz
aF9iYWNrKGNyZWF0ZVRlbXBJbml0RGVjbGFyYXRpb24oQ29weUFnZ3JlZ2F0ZU5vZGUobm9kZSkp
KTsKKyAgICBpbnNlcnRTdGF0ZW1lbnRzSW5QYXJlbnRCbG9jayhpbnNlcnRpb25zKTsKIAotICAg
ICAgICAgICAgTm9kZVVwZGF0ZUVudHJ5IHJlcGxhY2VWYXJpYWJsZShnZXRQYXJlbnROb2RlKCks
IG5vZGUsIGNyZWF0ZVRlbXBTeW1ib2wobm9kZS0+Z2V0VHlwZSgpKSwgZmFsc2UpOwotICAgICAg
ICAgICAgbVJlcGxhY2VtZW50cy5wdXNoX2JhY2socmVwbGFjZVZhcmlhYmxlKTsKKyAgICBxdWV1
ZVJlcGxhY2VtZW50KG5vZGUsIGNyZWF0ZVRlbXBTeW1ib2wobm9kZS0+Z2V0VHlwZSgpKSwgT3Jp
Z2luYWxOb2RlOjpJU19EUk9QUEVEKTsKIAotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG5vZGUtPmdldE9wKCkgPT0gRU9wRnVuY3Rpb25DYWxs
KQotICAgICAgICB7Ci0gICAgICAgICAgICBtRm91bmRBcnJheUV4cHJlc3Npb24gPSB0cnVlOwot
Ci0gICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgaW5zZXJ0aW9uczsKLSAgICAgICAgICAgIGlu
c2VydGlvbnMucHVzaF9iYWNrKGNyZWF0ZVRlbXBJbml0RGVjbGFyYXRpb24oQ29weUFnZ3JlZ2F0
ZU5vZGUobm9kZSkpKTsKLSAgICAgICAgICAgIGluc2VydFN0YXRlbWVudHNJblBhcmVudEJsb2Nr
KGluc2VydGlvbnMpOwotCi0gICAgICAgICAgICBOb2RlVXBkYXRlRW50cnkgcmVwbGFjZVZhcmlh
YmxlKGdldFBhcmVudE5vZGUoKSwgbm9kZSwgY3JlYXRlVGVtcFN5bWJvbChub2RlLT5nZXRUeXBl
KCkpLCBmYWxzZSk7Ci0gICAgICAgICAgICBtUmVwbGFjZW1lbnRzLnB1c2hfYmFjayhyZXBsYWNl
VmFyaWFibGUpOwotCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIFNlcGFyYXRl
RXhwcmVzc2lvbnNUcmF2ZXJzZXI6Om5leHRJdGVyYXRpb24oKQpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2hhZGVyTGFuZy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
U2hhZGVyTGFuZy5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NoYWRlckxhbmcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDgsNiArMTQ4LDggQEAKICAgICAvLyBFeHRlbnNpb25zLgogICAgIHJlc291cmNlcy0+
T0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzID0gMDsKICAgICByZXNvdXJjZXMtPk9FU19FR0xfaW1h
Z2VfZXh0ZXJuYWwgPSAwOworICAgIHJlc291cmNlcy0+T0VTX0VHTF9pbWFnZV9leHRlcm5hbF9l
c3NsMyAgICA9IDA7CisgICAgcmVzb3VyY2VzLT5OVl9FR0xfc3RyZWFtX2NvbnN1bWVyX2V4dGVy
bmFsID0gMDsKICAgICByZXNvdXJjZXMtPkFSQl90ZXh0dXJlX3JlY3RhbmdsZSA9IDA7CiAgICAg
cmVzb3VyY2VzLT5FWFRfYmxlbmRfZnVuY19leHRlbmRlZCAgICAgID0gMDsKICAgICByZXNvdXJj
ZXMtPkVYVF9kcmF3X2J1ZmZlcnMgPSAwOwpAQCAtMTgwLDYgKzE4MiwzNyBAQAogICAgIHJlc291
cmNlcy0+TWF4RXhwcmVzc2lvbkNvbXBsZXhpdHkgPSAyNTY7CiAgICAgcmVzb3VyY2VzLT5NYXhD
YWxsU3RhY2tEZXB0aCAgICAgICA9IDI1NjsKICAgICByZXNvdXJjZXMtPk1heEZ1bmN0aW9uUGFy
YW1ldGVycyAgID0gMTAyNDsKKworICAgIC8vIEVTIDMuMSBSZXZpc2lvbiA0LCA3LjIgQnVpbHQt
aW4gQ29uc3RhbnRzCisgICAgcmVzb3VyY2VzLT5NYXhJbWFnZVVuaXRzICAgICAgICAgICAgPSA0
OworICAgIHJlc291cmNlcy0+TWF4VmVydGV4SW1hZ2VVbmlmb3JtcyAgID0gMDsKKyAgICByZXNv
dXJjZXMtPk1heEZyYWdtZW50SW1hZ2VVbmlmb3JtcyA9IDA7CisgICAgcmVzb3VyY2VzLT5NYXhD
b21wdXRlSW1hZ2VVbmlmb3JtcyAgPSA0OworICAgIHJlc291cmNlcy0+TWF4Q29tYmluZWRJbWFn
ZVVuaWZvcm1zID0gNDsKKworICAgIHJlc291cmNlcy0+TWF4Q29tYmluZWRTaGFkZXJPdXRwdXRS
ZXNvdXJjZXMgPSA0OworCisgICAgcmVzb3VyY2VzLT5NYXhDb21wdXRlV29ya0dyb3VwQ291bnRb
MF0gPSA2NTUzNTsKKyAgICByZXNvdXJjZXMtPk1heENvbXB1dGVXb3JrR3JvdXBDb3VudFsxXSA9
IDY1NTM1OworICAgIHJlc291cmNlcy0+TWF4Q29tcHV0ZVdvcmtHcm91cENvdW50WzJdID0gNjU1
MzU7CisgICAgcmVzb3VyY2VzLT5NYXhDb21wdXRlV29ya0dyb3VwU2l6ZVswXSAgPSAxMjg7Cisg
ICAgcmVzb3VyY2VzLT5NYXhDb21wdXRlV29ya0dyb3VwU2l6ZVsxXSAgPSAxMjg7CisgICAgcmVz
b3VyY2VzLT5NYXhDb21wdXRlV29ya0dyb3VwU2l6ZVsyXSAgPSA2NDsKKyAgICByZXNvdXJjZXMt
Pk1heENvbXB1dGVVbmlmb3JtQ29tcG9uZW50cyA9IDUxMjsKKyAgICByZXNvdXJjZXMtPk1heENv
bXB1dGVUZXh0dXJlSW1hZ2VVbml0cyA9IDE2OworCisgICAgcmVzb3VyY2VzLT5NYXhDb21wdXRl
QXRvbWljQ291bnRlcnMgICAgICAgPSA4OworICAgIHJlc291cmNlcy0+TWF4Q29tcHV0ZUF0b21p
Y0NvdW50ZXJCdWZmZXJzID0gMTsKKworICAgIHJlc291cmNlcy0+TWF4VmVydGV4QXRvbWljQ291
bnRlcnMgICA9IDA7CisgICAgcmVzb3VyY2VzLT5NYXhGcmFnbWVudEF0b21pY0NvdW50ZXJzID0g
MDsKKyAgICByZXNvdXJjZXMtPk1heENvbWJpbmVkQXRvbWljQ291bnRlcnMgPSA4OworICAgIHJl
c291cmNlcy0+TWF4QXRvbWljQ291bnRlckJpbmRpbmdzICA9IDE7CisKKyAgICByZXNvdXJjZXMt
Pk1heFZlcnRleEF0b21pY0NvdW50ZXJCdWZmZXJzICAgPSAwOworICAgIHJlc291cmNlcy0+TWF4
RnJhZ21lbnRBdG9taWNDb3VudGVyQnVmZmVycyA9IDA7CisgICAgcmVzb3VyY2VzLT5NYXhDb21i
aW5lZEF0b21pY0NvdW50ZXJCdWZmZXJzID0gMTsKKyAgICByZXNvdXJjZXMtPk1heEF0b21pY0Nv
dW50ZXJCdWZmZXJTaXplICAgICAgPSAzMjsKIH0KIAogLy8KQEAgLTIzNSwxMSArMjY4LDEwIEBA
CiAvLyBSZXR1cm46ICBUaGUgcmV0dXJuIHZhbHVlIG9mIFNoQ29tcGlsZSBpcyByZWFsbHkgYm9v
bGVhbiwgaW5kaWNhdGluZwogLy8gc3VjY2VzcyBvciBmYWlsdXJlLgogLy8KLWJvb2wgU2hDb21w
aWxlKAotICAgIGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwKLSAgICBjb25zdCBjaGFyICpjb25zdCBz
aGFkZXJTdHJpbmdzW10sCi0gICAgc2l6ZV90IG51bVN0cmluZ3MsCi0gICAgaW50IGNvbXBpbGVP
cHRpb25zKQorYm9vbCBTaENvbXBpbGUoY29uc3QgU2hIYW5kbGUgaGFuZGxlLAorICAgICAgICAg
ICAgICAgY29uc3QgY2hhciAqY29uc3Qgc2hhZGVyU3RyaW5nc1tdLAorICAgICAgICAgICAgICAg
c2l6ZV90IG51bVN0cmluZ3MsCisgICAgICAgICAgICAgICBTaENvbXBpbGVPcHRpb25zIGNvbXBp
bGVPcHRpb25zKQogewogICAgIFRDb21waWxlciAqY29tcGlsZXIgPSBHZXRDb21waWxlckZyb21I
YW5kbGUoaGFuZGxlKTsKICAgICBBU1NFUlQoY29tcGlsZXIpOwpAQCAtMzI1LDE4ICszNTcsMjAg
QEAKICAgICByZXR1cm4gR2V0U2hhZGVyVmFyaWFibGVzPHNoOjpJbnRlcmZhY2VCbG9jaz4oaGFu
ZGxlKTsKIH0KIAotYm9vbCBTaENoZWNrVmFyaWFibGVzV2l0aGluUGFja2luZ0xpbWl0cygKLSAg
ICBpbnQgbWF4VmVjdG9ycywgU2hWYXJpYWJsZUluZm8gKnZhckluZm9BcnJheSwgc2l6ZV90IHZh
ckluZm9BcnJheVNpemUpCitzaDo6V29ya0dyb3VwU2l6ZSBTaEdldENvbXB1dGVTaGFkZXJMb2Nh
bEdyb3VwU2l6ZShjb25zdCBTaEhhbmRsZSBoYW5kbGUpCiB7Ci0gICAgaWYgKHZhckluZm9BcnJh
eVNpemUgPT0gMCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgQVNTRVJUKHZhckluZm9BcnJh
eSk7Ci0gICAgc3RkOjp2ZWN0b3I8c2g6OlNoYWRlclZhcmlhYmxlPiB2YXJpYWJsZXM7Ci0gICAg
Zm9yIChzaXplX3QgaWkgPSAwOyBpaSA8IHZhckluZm9BcnJheVNpemU7ICsraWkpCi0gICAgewot
ICAgICAgICBzaDo6U2hhZGVyVmFyaWFibGUgdmFyKHZhckluZm9BcnJheVtpaV0udHlwZSwgdmFy
SW5mb0FycmF5W2lpXS5zaXplKTsKLSAgICAgICAgdmFyaWFibGVzLnB1c2hfYmFjayh2YXIpOwot
ICAgIH0KKyAgICBBU1NFUlQoaGFuZGxlKTsKKworICAgIFRTaEhhbmRsZUJhc2UgKmJhc2UgPSBz
dGF0aWNfY2FzdDxUU2hIYW5kbGVCYXNlICo+KGhhbmRsZSk7CisgICAgVENvbXBpbGVyICpjb21w
aWxlciA9IGJhc2UtPmdldEFzQ29tcGlsZXIoKTsKKyAgICBBU1NFUlQoY29tcGlsZXIpOworCisg
ICAgcmV0dXJuIGNvbXBpbGVyLT5nZXRDb21wdXRlU2hhZGVyTG9jYWxTaXplKCk7Cit9CisKK2Jv
b2wgU2hDaGVja1ZhcmlhYmxlc1dpdGhpblBhY2tpbmdMaW1pdHMoaW50IG1heFZlY3RvcnMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9y
PHNoOjpTaGFkZXJWYXJpYWJsZT4gJnZhcmlhYmxlcykKK3sKICAgICBWYXJpYWJsZVBhY2tlciBw
YWNrZXI7CiAgICAgcmV0dXJuIHBhY2tlci5DaGVja1ZhcmlhYmxlc1dpdGhpblBhY2tpbmdMaW1p
dHMobWF4VmVjdG9ycywgdmFyaWFibGVzKTsKIH0KQEAgLTM3MSw3ICs0MDUsNiBAQAogCiAgICAg
cmV0dXJuIHRyYW5zbGF0b3ItPmdldFVuaWZvcm1SZWdpc3Rlck1hcCgpOwogI2Vsc2UKLSAgICBz
dGF0aWMgYXV0byYgbWFwID0gKm5ldyBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgdW5zaWduZWQgaW50
PjsKLSAgICByZXR1cm4gJm1hcDsKKyAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZiAgLy8gQU5H
TEVfRU5BQkxFX0hMU0wKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1NoYWRlclZhcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NoYWRlclZhcnMuY3BwCShyZXZp
c2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9TaGFkZXJWYXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU1LDcgKzM1NSw3IEBA
CiBib29sIFZhcnlpbmc6OmlzU2FtZVZhcnlpbmdBdExpbmtUaW1lKGNvbnN0IFZhcnlpbmcgJm90
aGVyLCBpbnQgc2hhZGVyVmVyc2lvbikgY29uc3QKIHsKICAgICByZXR1cm4gKFNoYWRlclZhcmlh
YmxlOjppc1NhbWVWYXJpYWJsZUF0TGlua1RpbWUob3RoZXIsIGZhbHNlKSAmJgotICAgICAgICAg
ICAgaW50ZXJwb2xhdGlvbiA9PSBvdGhlci5pbnRlcnBvbGF0aW9uICYmCisgICAgICAgICAgICBJ
bnRlcnBvbGF0aW9uVHlwZXNNYXRjaChpbnRlcnBvbGF0aW9uLCBvdGhlci5pbnRlcnBvbGF0aW9u
KSAmJgogICAgICAgICAgICAgKHNoYWRlclZlcnNpb24gPj0gMzAwIHx8IGlzSW52YXJpYW50ID09
IG90aGVyLmlzSW52YXJpYW50KSk7CiB9CiAKQEAgLTM5OCw0ICszOTgsOTEgQEAKICAgICByZXR1
cm4gaW5zdGFuY2VOYW1lLmVtcHR5KCkgPyAiIiA6IG5hbWU7CiB9CiAKK2Jvb2wgSW50ZXJmYWNl
QmxvY2s6OmlzU2FtZUludGVyZmFjZUJsb2NrQXRMaW5rVGltZShjb25zdCBJbnRlcmZhY2VCbG9j
ayAmb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKG5hbWUgIT0gb3RoZXIubmFtZSB8fCBtYXBwZWRO
YW1lICE9IG90aGVyLm1hcHBlZE5hbWUgfHwgYXJyYXlTaXplICE9IG90aGVyLmFycmF5U2l6ZSB8
fAorICAgICAgICBsYXlvdXQgIT0gb3RoZXIubGF5b3V0IHx8IGlzUm93TWFqb3JMYXlvdXQgIT0g
b3RoZXIuaXNSb3dNYWpvckxheW91dCB8fAorICAgICAgICBmaWVsZHMuc2l6ZSgpICE9IG90aGVy
LmZpZWxkcy5zaXplKCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgZm9yIChzaXplX3QgZmllbGRJbmRleCA9IDA7IGZpZWxkSW5kZXggPCBmaWVsZHMuc2l6ZSgp
OyArK2ZpZWxkSW5kZXgpCisgICAgeworICAgICAgICBpZiAoIWZpZWxkc1tmaWVsZEluZGV4XS5p
c1NhbWVJbnRlcmZhY2VCbG9ja0ZpZWxkQXRMaW5rVGltZShvdGhlci5maWVsZHNbZmllbGRJbmRl
eF0pKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXb3JrR3JvdXBTaXplOjpmaWxsKGlu
dCBmaWxsVmFsdWUpCit7CisgICAgbG9jYWxTaXplUXVhbGlmaWVyc1swXSA9IGZpbGxWYWx1ZTsK
KyAgICBsb2NhbFNpemVRdWFsaWZpZXJzWzFdID0gZmlsbFZhbHVlOworICAgIGxvY2FsU2l6ZVF1
YWxpZmllcnNbMl0gPSBmaWxsVmFsdWU7Cit9CisKK3ZvaWQgV29ya0dyb3VwU2l6ZTo6c2V0TG9j
YWxTaXplKGludCBsb2NhbFNpemVYLCBpbnQgbG9jYWxTaXplWSwgaW50IGxvY2FsU2l6ZVopCit7
CisgICAgbG9jYWxTaXplUXVhbGlmaWVyc1swXSA9IGxvY2FsU2l6ZVg7CisgICAgbG9jYWxTaXpl
UXVhbGlmaWVyc1sxXSA9IGxvY2FsU2l6ZVk7CisgICAgbG9jYWxTaXplUXVhbGlmaWVyc1syXSA9
IGxvY2FsU2l6ZVo7Cit9CisKKy8vIGNoZWNrIHRoYXQgaWYgb25lIG9mIHRoZW0gaXMgbGVzcyB0
aGFuIDEsIHRoZW4gYWxsIG9mIHRoZW0gYXJlLgorLy8gT3IgaWYgb25lIGlzIHBvc2l0aXZlLCB0
aGVuIGFsbCBvZiB0aGVtIGFyZSBwb3NpdGl2ZS4KK2Jvb2wgV29ya0dyb3VwU2l6ZTo6aXNMb2Nh
bFNpemVWYWxpZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICgKKyAgICAgICAgKGxvY2FsU2l6ZVF1
YWxpZmllcnNbMF0gPCAxICYmIGxvY2FsU2l6ZVF1YWxpZmllcnNbMV0gPCAxICYmIGxvY2FsU2l6
ZVF1YWxpZmllcnNbMl0gPCAxKSB8fAorICAgICAgICAobG9jYWxTaXplUXVhbGlmaWVyc1swXSA+
IDAgJiYgbG9jYWxTaXplUXVhbGlmaWVyc1sxXSA+IDAgJiYgbG9jYWxTaXplUXVhbGlmaWVyc1sy
XSA+IDApKTsKK30KKworYm9vbCBXb3JrR3JvdXBTaXplOjppc0FueVZhbHVlU2V0KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbG9jYWxTaXplUXVhbGlmaWVyc1swXSA+IDAgfHwgbG9jYWxTaXplUXVh
bGlmaWVyc1sxXSA+IDAgfHwgbG9jYWxTaXplUXVhbGlmaWVyc1syXSA+IDA7Cit9CisKK2Jvb2wg
V29ya0dyb3VwU2l6ZTo6aXNEZWNsYXJlZCgpIGNvbnN0Cit7CisgICAgYm9vbCBsb2NhbFNpemVE
ZWNsYXJlZCA9IGxvY2FsU2l6ZVF1YWxpZmllcnNbMF0gPiAwOworICAgIEFTU0VSVChpc0xvY2Fs
U2l6ZVZhbGlkKCkpOworICAgIHJldHVybiBsb2NhbFNpemVEZWNsYXJlZDsKK30KKworYm9vbCBX
b3JrR3JvdXBTaXplOjppc1dvcmtHcm91cFNpemVNYXRjaGluZyhjb25zdCBXb3JrR3JvdXBTaXpl
ICZyaWdodCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMHU7IGkgPCBzaXplKCk7ICsr
aSkKKyAgICB7CisgICAgICAgIGJvb2wgcmVzdWx0ID0gKGxvY2FsU2l6ZVF1YWxpZmllcnNbaV0g
PT0gcmlnaHQubG9jYWxTaXplUXVhbGlmaWVyc1tpXSB8fAorICAgICAgICAgICAgICAgICAgICAg
ICAobG9jYWxTaXplUXVhbGlmaWVyc1tpXSA9PSAxICYmIHJpZ2h0LmxvY2FsU2l6ZVF1YWxpZmll
cnNbaV0gPT0gLTEpIHx8CisgICAgICAgICAgICAgICAgICAgICAgIChsb2NhbFNpemVRdWFsaWZp
ZXJzW2ldID09IC0xICYmIHJpZ2h0LmxvY2FsU2l6ZVF1YWxpZmllcnNbaV0gPT0gMSkpOworICAg
ICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitpbnQgJldvcmtHcm91cFNp
emU6Om9wZXJhdG9yW10oc2l6ZV90IGluZGV4KQoreworICAgIEFTU0VSVChpbmRleCA8IHNpemUo
KSk7CisgICAgcmV0dXJuIGxvY2FsU2l6ZVF1YWxpZmllcnNbaW5kZXhdOworfQorCitpbnQgV29y
a0dyb3VwU2l6ZTo6b3BlcmF0b3JbXShzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgQVNTRVJU
KGluZGV4IDwgc2l6ZSgpKTsKKyAgICByZXR1cm4gbG9jYWxTaXplUXVhbGlmaWVyc1tpbmRleF07
Cit9CisKK3NpemVfdCBXb3JrR3JvdXBTaXplOjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
M3U7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSBzaApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2ltcGxpZnlMb29wQ29uZGl0aW9ucy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvU2ltcGxpZnlMb29wQ29uZGl0aW9ucy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2ltcGxpZnlMb29wQ29uZGl0
aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyODAgQEAKKy8vCisvLyBDb3B5cmln
aHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLwor
Ly8gU2ltcGxpZnlMb29wQ29uZGl0aW9ucyBpcyBhbiBBU1QgdHJhdmVyc2VyIHRoYXQgY29udmVy
dHMgbG9vcCBjb25kaXRpb25zIGFuZCBsb29wIGV4cHJlc3Npb25zCisvLyB0byByZWd1bGFyIHN0
YXRlbWVudHMgaW5zaWRlIHRoZSBsb29wLiBUaGlzIHdheSBmdXJ0aGVyIHRyYW5zZm9ybWF0aW9u
cyB0aGF0IGdlbmVyYXRlIHN0YXRlbWVudHMKKy8vIGZyb20gbG9vcCBjb25kaXRpb25zIGFuZCBs
b29wIGV4cHJlc3Npb25zIHdvcmsgY29ycmVjdGx5LgorLy8KKworI2luY2x1ZGUgImNvbXBpbGVy
L3RyYW5zbGF0b3IvU2ltcGxpZnlMb29wQ29uZGl0aW9ucy5oIgorCisjaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRv
ci9JbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXIuaCIKKworbmFtZXNwYWNlCit7CisKK1RJbnRlcm1D
b25zdGFudFVuaW9uICpDcmVhdGVCb29sQ29uc3RhbnROb2RlKGJvb2wgdmFsdWUpCit7CisgICAg
VENvbnN0YW50VW5pb24gKnUgPSBuZXcgVENvbnN0YW50VW5pb247CisgICAgdS0+c2V0QkNvbnN0
KHZhbHVlKTsKKyAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqbm9kZSA9CisgICAgICAgIG5ldyBU
SW50ZXJtQ29uc3RhbnRVbmlvbih1LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNv
bnN0LCAxKSk7CisgICAgcmV0dXJuIG5vZGU7Cit9CisKK2NsYXNzIFNpbXBsaWZ5TG9vcENvbmRp
dGlvbnNUcmF2ZXJzZXIgOiBwdWJsaWMgVExWYWx1ZVRyYWNraW5nVHJhdmVyc2VyCit7CisgIHB1
YmxpYzoKKyAgICBTaW1wbGlmeUxvb3BDb25kaXRpb25zVHJhdmVyc2VyKHVuc2lnbmVkIGludCBj
b25kaXRpb25zVG9TaW1wbGlmeU1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHNoYWRlclZlcnNpb24pOworCisgICAgdm9pZCB0cmF2ZXJz
ZUxvb3AoVEludGVybUxvb3AgKm5vZGUpIG92ZXJyaWRlOworCisgICAgYm9vbCB2aXNpdEJpbmFy
eShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkgb3ZlcnJpZGU7CisgICAgYm9vbCB2
aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkgb3ZlcnJp
ZGU7CisgICAgYm9vbCB2aXNpdFRlcm5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1UZXJuYXJ5ICpu
b2RlKSBvdmVycmlkZTsKKworICAgIHZvaWQgbmV4dEl0ZXJhdGlvbigpOworICAgIGJvb2wgZm91
bmRMb29wVG9DaGFuZ2UoKSBjb25zdCB7IHJldHVybiBtRm91bmRMb29wVG9DaGFuZ2U7IH0KKwor
ICBwcm90ZWN0ZWQ6CisgICAgLy8gTWFya2VkIHRvIHRydWUgb25jZSBhbiBvcGVyYXRpb24gdGhh
dCBuZWVkcyB0byBiZSBob2lzdGVkIG91dCBvZiB0aGUgZXhwcmVzc2lvbiBoYXMgYmVlbgorICAg
IC8vIGZvdW5kLiBBZnRlciB0aGF0LCBubyBtb3JlIEFTVCB1cGRhdGVzIGFyZSBwZXJmb3JtZWQg
b24gdGhhdCB0cmF2ZXJzYWwuCisgICAgYm9vbCBtRm91bmRMb29wVG9DaGFuZ2U7CisgICAgYm9v
bCBtSW5zaWRlTG9vcENvbmRpdGlvbk9yRXhwcmVzc2lvbjsKKyAgICBJbnRlcm1Ob2RlUGF0dGVy
bk1hdGNoZXIgbUNvbmRpdGlvbnNUb1NpbXBsaWZ5OworfTsKKworU2ltcGxpZnlMb29wQ29uZGl0
aW9uc1RyYXZlcnNlcjo6U2ltcGxpZnlMb29wQ29uZGl0aW9uc1RyYXZlcnNlcigKKyAgICB1bnNp
Z25lZCBpbnQgY29uZGl0aW9uc1RvU2ltcGxpZnlNYXNrLAorICAgIGNvbnN0IFRTeW1ib2xUYWJs
ZSAmc3ltYm9sVGFibGUsCisgICAgaW50IHNoYWRlclZlcnNpb24pCisgICAgOiBUTFZhbHVlVHJh
Y2tpbmdUcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlLCBzeW1ib2xUYWJsZSwgc2hhZGVyVmVy
c2lvbiksCisgICAgICBtRm91bmRMb29wVG9DaGFuZ2UoZmFsc2UpLAorICAgICAgbUluc2lkZUxv
b3BDb25kaXRpb25PckV4cHJlc3Npb24oZmFsc2UpLAorICAgICAgbUNvbmRpdGlvbnNUb1NpbXBs
aWZ5KGNvbmRpdGlvbnNUb1NpbXBsaWZ5TWFzaykKK3sKK30KKwordm9pZCBTaW1wbGlmeUxvb3BD
b25kaXRpb25zVHJhdmVyc2VyOjpuZXh0SXRlcmF0aW9uKCkKK3sKKyAgICBtRm91bmRMb29wVG9D
aGFuZ2UgICAgICAgICAgICAgICA9IGZhbHNlOworICAgIG1JbnNpZGVMb29wQ29uZGl0aW9uT3JF
eHByZXNzaW9uID0gZmFsc2U7CisgICAgbmV4dFRlbXBvcmFyeUluZGV4KCk7Cit9CisKK2Jvb2wg
U2ltcGxpZnlMb29wQ29uZGl0aW9uc1RyYXZlcnNlcjo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQs
IFRJbnRlcm1CaW5hcnkgKm5vZGUpCit7CisgICAgLy8gVGhlIHZpc2l0IGZ1bmN0aW9ucyBvcGVy
YXRlIGluIHRocmVlIG1vZGVzOgorICAgIC8vIDEuIElmIGEgbWF0Y2hpbmcgZXhwcmVzc2lvbiBo
YXMgYWxyZWFkeSBiZWVuIGZvdW5kLCB3ZSByZXR1cm4gZWFybHkgc2luY2Ugb25seSBvbmUgbG9v
cCBjYW4KKyAgICAvLyAgICBiZSB0cmFuc2Zvcm1lZCBvbiBvbmUgdHJhdmVyc2FsLgorICAgIC8v
IDIuIFdlIHRyeSB0byBmaW5kIGxvb3BzLiBJbiBjYXNlIGEgbm9kZSBpcyBub3QgaW5zaWRlIGEg
bG9vcCBhbmQgY2FuIG5vdCBjb250YWluIGxvb3BzLCB3ZQorICAgIC8vICAgIHN0b3AgdHJhdmVy
c2luZyB0aGUgc3VidHJlZS4KKyAgICAvLyAzLiBJZiB3ZSdyZSBpbnNpZGUgYSBsb29wIGNvbmRp
dGlvbiBvciBleHByZXNzaW9uLCB3ZSBjaGVjayBmb3IgZXhwcmVzc2lvbnMgdGhhdCBzaG91bGQg
YmUKKyAgICAvLyAgICBtb3ZlZCBvdXQgb2YgdGhlIGxvb3AgY29uZGl0aW9uIG9yIGV4cHJlc3Np
b24uIElmIG9uZSBpcyBmb3VuZCwgdGhlIGxvb3AgaXMgcHJvY2Vzc2VkLgorCisgICAgaWYgKG1G
b3VuZExvb3BUb0NoYW5nZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFtSW5z
aWRlTG9vcENvbmRpdGlvbk9yRXhwcmVzc2lvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgbUZvdW5kTG9vcFRvQ2hhbmdlID0gbUNvbmRpdGlvbnNUb1NpbXBsaWZ5Lm1hdGNoKG5vZGUs
IGdldFBhcmVudE5vZGUoKSwgaXNMVmFsdWVSZXF1aXJlZEhlcmUoKSk7CisgICAgcmV0dXJuICFt
Rm91bmRMb29wVG9DaGFuZ2U7Cit9CisKK2Jvb2wgU2ltcGxpZnlMb29wQ29uZGl0aW9uc1RyYXZl
cnNlcjo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUp
Cit7CisgICAgaWYgKG1Gb3VuZExvb3BUb0NoYW5nZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgLy8gSWYgd2UncmUgb3V0c2lkZSBhIGxvb3AgY29uZGl0aW9uLCB3ZSBvbmx5IG5lZWQg
dG8gdHJhdmVyc2Ugbm9kZXMgdGhhdCBtYXkgY29udGFpbiBsb29wcy4KKyAgICBpZiAoIW1JbnNp
ZGVMb29wQ29uZGl0aW9uT3JFeHByZXNzaW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBtRm91bmRMb29wVG9DaGFuZ2UgPSBtQ29uZGl0aW9uc1RvU2ltcGxpZnkubWF0Y2gobm9kZSwg
Z2V0UGFyZW50Tm9kZSgpKTsKKyAgICByZXR1cm4gIW1Gb3VuZExvb3BUb0NoYW5nZTsKK30KKwor
Ym9vbCBTaW1wbGlmeUxvb3BDb25kaXRpb25zVHJhdmVyc2VyOjp2aXNpdFRlcm5hcnkoVmlzaXQg
dmlzaXQsIFRJbnRlcm1UZXJuYXJ5ICpub2RlKQoreworICAgIGlmIChtRm91bmRMb29wVG9DaGFu
Z2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIERvbid0IHRyYXZlcnNlIHRlcm5h
cnkgb3BlcmF0b3JzIG91dHNpZGUgbG9vcCBjb25kaXRpb25zLgorICAgIGlmICghbUluc2lkZUxv
b3BDb25kaXRpb25PckV4cHJlc3Npb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1G
b3VuZExvb3BUb0NoYW5nZSA9IG1Db25kaXRpb25zVG9TaW1wbGlmeS5tYXRjaChub2RlKTsKKyAg
ICByZXR1cm4gIW1Gb3VuZExvb3BUb0NoYW5nZTsKK30KKwordm9pZCBTaW1wbGlmeUxvb3BDb25k
aXRpb25zVHJhdmVyc2VyOjp0cmF2ZXJzZUxvb3AoVEludGVybUxvb3AgKm5vZGUpCit7CisgICAg
aWYgKG1Gb3VuZExvb3BUb0NoYW5nZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gTWFyayB0
aGF0IHdlJ3JlIGluc2lkZSBhIGxvb3AgY29uZGl0aW9uIG9yIGV4cHJlc3Npb24sIGFuZCB0cmFu
c2Zvcm0gdGhlIGxvb3AgaWYgbmVlZGVkLgorCisgICAgaW5jcmVtZW50RGVwdGgobm9kZSk7CisK
KyAgICAvLyBOb3RlOiBObyBuZWVkIHRvIHRyYXZlcnNlIHRoZSBsb29wIGluaXQgbm9kZS4KKwor
ICAgIG1JbnNpZGVMb29wQ29uZGl0aW9uT3JFeHByZXNzaW9uID0gdHJ1ZTsKKyAgICBUTG9vcFR5
cGUgbG9vcFR5cGUgICAgICAgICAgICAgICA9IG5vZGUtPmdldFR5cGUoKTsKKworICAgIGlmIChu
b2RlLT5nZXRDb25kaXRpb24oKSkKKyAgICB7CisgICAgICAgIG5vZGUtPmdldENvbmRpdGlvbigp
LT50cmF2ZXJzZSh0aGlzKTsKKworICAgICAgICBpZiAobUZvdW5kTG9vcFRvQ2hhbmdlKQorICAg
ICAgICB7CisgICAgICAgICAgICAvLyBSZXBsYWNlIHRoZSBsb29wIGNvbmRpdGlvbiB3aXRoIGEg
Ym9vbGVhbiB2YXJpYWJsZSB0aGF0J3MgdXBkYXRlZCBvbiBlYWNoIGl0ZXJhdGlvbi4KKyAgICAg
ICAgICAgIGlmIChsb29wVHlwZSA9PSBFTG9vcFdoaWxlKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIC8vIFRyYW5zZm9ybToKKyAgICAgICAgICAgICAgICAvLyAgIHdoaWxlIChleHBy
KSB7IGJvZHk7IH0KKyAgICAgICAgICAgICAgICAvLyBpbnRvCisgICAgICAgICAgICAgICAgLy8g
ICBib29sIHMwID0gZXhwcjsKKyAgICAgICAgICAgICAgICAvLyAgIHdoaWxlIChzMCkgeyB7IGJv
ZHk7IH0gczAgPSBleHByOyB9CisgICAgICAgICAgICAgICAgVEludGVybVNlcXVlbmNlIHRlbXBJ
bml0U2VxOworICAgICAgICAgICAgICAgIHRlbXBJbml0U2VxLnB1c2hfYmFjayhjcmVhdGVUZW1w
SW5pdERlY2xhcmF0aW9uKG5vZGUtPmdldENvbmRpdGlvbigpLT5kZWVwQ29weSgpKSk7CisgICAg
ICAgICAgICAgICAgaW5zZXJ0U3RhdGVtZW50c0luUGFyZW50QmxvY2sodGVtcEluaXRTZXEpOwor
CisgICAgICAgICAgICAgICAgVEludGVybUJsb2NrICpuZXdCb2R5ID0gbmV3IFRJbnRlcm1CbG9j
aygpOworICAgICAgICAgICAgICAgIGlmIChub2RlLT5nZXRCb2R5KCkpCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBuZXdCb2R5LT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2Jh
Y2sobm9kZS0+Z2V0Qm9keSgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
bmV3Qm9keS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKAorICAgICAgICAgICAgICAgICAgICBj
cmVhdGVUZW1wQXNzaWdubWVudChub2RlLT5nZXRDb25kaXRpb24oKS0+ZGVlcENvcHkoKSkpOwor
CisgICAgICAgICAgICAgICAgLy8gQ2FuJ3QgdXNlIHF1ZXVlUmVwbGFjZW1lbnQgdG8gcmVwbGFj
ZSBvbGQgYm9keSwgc2luY2UgaXQgbWF5IGhhdmUgYmVlbiBudWxscHRyLgorICAgICAgICAgICAg
ICAgIC8vIEl0J3Mgc2FmZSB0byBkbyB0aGUgcmVwbGFjZW1lbnRzIGluIHBsYWNlIGhlcmUgLSB0
aGlzIG5vZGUgd29uJ3QgYmUgdHJhdmVyc2VkCisgICAgICAgICAgICAgICAgLy8gZnVydGhlci4K
KyAgICAgICAgICAgICAgICBub2RlLT5zZXRCb2R5KG5ld0JvZHkpOworICAgICAgICAgICAgICAg
IG5vZGUtPnNldENvbmRpdGlvbihjcmVhdGVUZW1wU3ltYm9sKG5vZGUtPmdldENvbmRpdGlvbigp
LT5nZXRUeXBlKCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGxvb3BU
eXBlID09IEVMb29wRG9XaGlsZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBU
cmFuc2Zvcm06CisgICAgICAgICAgICAgICAgLy8gICBkbyB7CisgICAgICAgICAgICAgICAgLy8g
ICAgIGJvZHk7CisgICAgICAgICAgICAgICAgLy8gICB9IHdoaWxlIChleHByKTsKKyAgICAgICAg
ICAgICAgICAvLyBpbnRvCisgICAgICAgICAgICAgICAgLy8gICBib29sIHMwID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAvLyAgIGRvIHsKKyAgICAgICAgICAgICAgICAvLyAgICAgeyBib2R5OyB9
CisgICAgICAgICAgICAgICAgLy8gICAgIHMwID0gZXhwcjsKKyAgICAgICAgICAgICAgICAvLyAg
IHdoaWxlIChzMCk7CisgICAgICAgICAgICAgICAgVEludGVybVNlcXVlbmNlIHRlbXBJbml0U2Vx
OworICAgICAgICAgICAgICAgIHRlbXBJbml0U2VxLnB1c2hfYmFjayhjcmVhdGVUZW1wSW5pdERl
Y2xhcmF0aW9uKENyZWF0ZUJvb2xDb25zdGFudE5vZGUodHJ1ZSkpKTsKKyAgICAgICAgICAgICAg
ICBpbnNlcnRTdGF0ZW1lbnRzSW5QYXJlbnRCbG9jayh0ZW1wSW5pdFNlcSk7CisKKyAgICAgICAg
ICAgICAgICBUSW50ZXJtQmxvY2sgKm5ld0JvZHkgPSBuZXcgVEludGVybUJsb2NrKCk7CisgICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmdldEJvZHkoKSkKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIG5ld0JvZHktPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhub2RlLT5n
ZXRCb2R5KCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBuZXdCb2R5LT5n
ZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2soCisgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVRlbXBB
c3NpZ25tZW50KG5vZGUtPmdldENvbmRpdGlvbigpLT5kZWVwQ29weSgpKSk7CisKKyAgICAgICAg
ICAgICAgICAvLyBDYW4ndCB1c2UgcXVldWVSZXBsYWNlbWVudCB0byByZXBsYWNlIG9sZCBib2R5
LCBzaW5jZSBpdCBtYXkgaGF2ZSBiZWVuIG51bGxwdHIuCisgICAgICAgICAgICAgICAgLy8gSXQn
cyBzYWZlIHRvIGRvIHRoZSByZXBsYWNlbWVudHMgaW4gcGxhY2UgaGVyZSAtIHRoaXMgbm9kZSB3
b24ndCBiZSB0cmF2ZXJzZWQKKyAgICAgICAgICAgICAgICAvLyBmdXJ0aGVyLgorICAgICAgICAg
ICAgICAgIG5vZGUtPnNldEJvZHkobmV3Qm9keSk7CisgICAgICAgICAgICAgICAgbm9kZS0+c2V0
Q29uZGl0aW9uKGNyZWF0ZVRlbXBTeW1ib2wobm9kZS0+Z2V0Q29uZGl0aW9uKCktPmdldFR5cGUo
KSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobG9vcFR5cGUgPT0gRUxv
b3BGb3IpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gTW92ZSB0aGUgbG9vcCBj
b25kaXRpb24gaW5zaWRlIHRoZSBsb29wLgorICAgICAgICAgICAgICAgIC8vIFRyYW5zZm9ybToK
KyAgICAgICAgICAgICAgICAvLyAgIGZvciAoaW5pdDsgZXhwcjsgZXhwckIpIHsgYm9keTsgfQor
ICAgICAgICAgICAgICAgIC8vIGludG8KKyAgICAgICAgICAgICAgICAvLyAgIHsKKyAgICAgICAg
ICAgICAgICAvLyAgICAgaW5pdDsKKyAgICAgICAgICAgICAgICAvLyAgICAgYm9vbCBzMCA9IGV4
cHI7CisgICAgICAgICAgICAgICAgLy8gICAgIHdoaWxlIChzMCkgeyB7IGJvZHk7IH0gZXhwckI7
IHMwID0gZXhwcjsgfQorICAgICAgICAgICAgICAgIC8vICAgfQorICAgICAgICAgICAgICAgIFRJ
bnRlcm1CbG9jayAqbG9vcFNjb3BlID0gbmV3IFRJbnRlcm1CbG9jaygpOworICAgICAgICAgICAg
ICAgIGlmIChub2RlLT5nZXRJbml0KCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBsb29wU2NvcGUtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhub2RlLT5nZXRJbml0
KCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBsb29wU2NvcGUtPmdldFNl
cXVlbmNlKCktPnB1c2hfYmFjaygKKyAgICAgICAgICAgICAgICAgICAgY3JlYXRlVGVtcEluaXRE
ZWNsYXJhdGlvbihub2RlLT5nZXRDb25kaXRpb24oKS0+ZGVlcENvcHkoKSkpOworCisgICAgICAg
ICAgICAgICAgVEludGVybUJsb2NrICp3aGlsZUxvb3BCb2R5ID0gbmV3IFRJbnRlcm1CbG9jaygp
OworICAgICAgICAgICAgICAgIGlmIChub2RlLT5nZXRCb2R5KCkpCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICB3aGlsZUxvb3BCb2R5LT5nZXRTZXF1ZW5jZSgpLT5wdXNo
X2JhY2sobm9kZS0+Z2V0Qm9keSgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgd2hpbGVMb29wQm9keS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKG5vZGUtPmdldEV4cHJl
c3Npb24oKSk7CisgICAgICAgICAgICAgICAgd2hpbGVMb29wQm9keS0+Z2V0U2VxdWVuY2UoKS0+
cHVzaF9iYWNrKAorICAgICAgICAgICAgICAgICAgICBjcmVhdGVUZW1wQXNzaWdubWVudChub2Rl
LT5nZXRDb25kaXRpb24oKS0+ZGVlcENvcHkoKSkpOworICAgICAgICAgICAgICAgIFRJbnRlcm1M
b29wICp3aGlsZUxvb3AgPSBuZXcgVEludGVybUxvb3AoCisgICAgICAgICAgICAgICAgICAgIEVM
b29wV2hpbGUsIG51bGxwdHIsIGNyZWF0ZVRlbXBTeW1ib2wobm9kZS0+Z2V0Q29uZGl0aW9uKCkt
PmdldFR5cGUoKSksIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgIHdoaWxlTG9vcEJvZHkp
OworICAgICAgICAgICAgICAgIGxvb3BTY29wZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKHdo
aWxlTG9vcCk7CisgICAgICAgICAgICAgICAgcXVldWVSZXBsYWNlbWVudFdpdGhQYXJlbnQoZ2V0
QW5jZXN0b3JOb2RlKDEpLCBub2RlLCBsb29wU2NvcGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgT3JpZ2luYWxOb2RlOjpJU19EUk9QUEVEKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghbUZvdW5kTG9vcFRvQ2hhbmdlICYm
IG5vZGUtPmdldEV4cHJlc3Npb24oKSkKKyAgICB7CisgICAgICAgIG5vZGUtPmdldEV4cHJlc3Np
b24oKS0+dHJhdmVyc2UodGhpcyk7CisKKyAgICAgICAgaWYgKG1Gb3VuZExvb3BUb0NoYW5nZSkK
KyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGxvb3BUeXBlID09IEVMb29wRm9yKTsKKyAg
ICAgICAgICAgIC8vIE1vdmUgdGhlIGxvb3AgZXhwcmVzc2lvbiB0byBpbnNpZGUgdGhlIGxvb3Au
CisgICAgICAgICAgICAvLyBUcmFuc2Zvcm06CisgICAgICAgICAgICAvLyAgIGZvciAoaW5pdDsg
ZXhwcjsgZXhwckIpIHsgYm9keTsgfQorICAgICAgICAgICAgLy8gaW50bworICAgICAgICAgICAg
Ly8gICBmb3IgKGluaXQ7IGV4cHI7ICkgeyB7IGJvZHk7IH0gZXhwckI7IH0KKyAgICAgICAgICAg
IFRJbnRlcm1UeXBlZCAqbG9vcEV4cHJlc3Npb24gPSBub2RlLT5nZXRFeHByZXNzaW9uKCk7Cisg
ICAgICAgICAgICBub2RlLT5zZXRFeHByZXNzaW9uKG51bGxwdHIpOworICAgICAgICAgICAgVElu
dGVybUJsb2NrICpvbGRCb2R5ID0gbm9kZS0+Z2V0Qm9keSgpOworICAgICAgICAgICAgbm9kZS0+
c2V0Qm9keShuZXcgVEludGVybUJsb2NrKCkpOworICAgICAgICAgICAgaWYgKG9sZEJvZHkgIT0g
bnVsbHB0cikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBub2RlLT5nZXRCb2R5KCkt
PmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhvbGRCb2R5KTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIG5vZGUtPmdldEJvZHkoKS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKGxvb3BFeHBy
ZXNzaW9uKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1JbnNpZGVMb29wQ29uZGl0aW9uT3JF
eHByZXNzaW9uID0gZmFsc2U7CisKKyAgICBpZiAoIW1Gb3VuZExvb3BUb0NoYW5nZSAmJiBub2Rl
LT5nZXRCb2R5KCkpCisgICAgICAgIG5vZGUtPmdldEJvZHkoKS0+dHJhdmVyc2UodGhpcyk7CisK
KyAgICBkZWNyZW1lbnREZXB0aCgpOworfQorCit9ICAvLyBuYW1lc3BhY2UKKwordm9pZCBTaW1w
bGlmeUxvb3BDb25kaXRpb25zKFRJbnRlcm1Ob2RlICpyb290LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBjb25kaXRpb25zVG9TaW1wbGlmeU1hc2ssCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICp0ZW1wb3JhcnlJbmRleCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaGFkZXJWZXJzaW9uKQoreworICAgIFNp
bXBsaWZ5TG9vcENvbmRpdGlvbnNUcmF2ZXJzZXIgdHJhdmVyc2VyKGNvbmRpdGlvbnNUb1NpbXBs
aWZ5TWFzaywgc3ltYm9sVGFibGUsIHNoYWRlclZlcnNpb24pOworICAgIEFTU0VSVCh0ZW1wb3Jh
cnlJbmRleCAhPSBudWxscHRyKTsKKyAgICB0cmF2ZXJzZXIudXNlVGVtcG9yYXJ5SW5kZXgodGVt
cG9yYXJ5SW5kZXgpOworICAgIC8vIFByb2Nlc3Mgb25lIGxvb3AgYXQgYSB0aW1lLCBhbmQgcmVz
ZXQgdGhlIHRyYXZlcnNlciBiZXR3ZWVuIGl0ZXJhdGlvbnMuCisgICAgZG8KKyAgICB7CisgICAg
ICAgIHRyYXZlcnNlci5uZXh0SXRlcmF0aW9uKCk7CisgICAgICAgIHJvb3QtPnRyYXZlcnNlKCZ0
cmF2ZXJzZXIpOworICAgICAgICBpZiAodHJhdmVyc2VyLmZvdW5kTG9vcFRvQ2hhbmdlKCkpCisg
ICAgICAgICAgICB0cmF2ZXJzZXIudXBkYXRlVHJlZSgpOworICAgIH0gd2hpbGUgKHRyYXZlcnNl
ci5mb3VuZExvb3BUb0NoYW5nZSgpKTsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NpbXBsaWZ5TG9vcENvbmRpdGlvbnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9T
aW1wbGlmeUxvb3BDb25kaXRpb25zLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2ltcGxpZnlMb29wQ29uZGl0aW9ucy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjMgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIw
MTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gU2ltcGxp
ZnlMb29wQ29uZGl0aW9ucyBpcyBhbiBBU1QgdHJhdmVyc2VyIHRoYXQgY29udmVydHMgbG9vcCBj
b25kaXRpb25zIGFuZCBsb29wIGV4cHJlc3Npb25zCisvLyB0byByZWd1bGFyIHN0YXRlbWVudHMg
aW5zaWRlIHRoZSBsb29wLiBUaGlzIHdheSBmdXJ0aGVyIHRyYW5zZm9ybWF0aW9ucyB0aGF0IGdl
bmVyYXRlIHN0YXRlbWVudHMKKy8vIGZyb20gbG9vcCBjb25kaXRpb25zIGFuZCBsb29wIGV4cHJl
c3Npb25zIHdvcmsgY29ycmVjdGx5LgorLy8KKworI2lmbmRlZiBDT01QSUxFUl9UUkFOU0xBVE9S
X1NJTVBMSUZZTE9PUENPTkRJVElPTlNfSF8KKyNkZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9T
SU1QTElGWUxPT1BDT05ESVRJT05TX0hfCisKK2NsYXNzIFRJbnRlcm1Ob2RlOworY2xhc3MgVFN5
bWJvbFRhYmxlOworCit2b2lkIFNpbXBsaWZ5TG9vcENvbmRpdGlvbnMoVEludGVybU5vZGUgKnJv
b3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNvbmRpdGlvbnNU
b1NpbXBsaWZ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqdGVt
cG9yYXJ5SW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN5bWJvbFRh
YmxlICZzeW1ib2xUYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2hhZGVy
VmVyc2lvbik7CisKKyNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9TSU1QTElGWUxPT1BD
T05ESVRJT05TX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9TcGxpdFNlcXVlbmNlT3BlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NwbGl0U2VxdWVuY2VP
cGVyYXRvci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvU3BsaXRTZXF1ZW5jZU9wZXJhdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDE1MyBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBTcGxpdFNlcXVlbmNlT3Bl
cmF0b3IgaXMgYW4gQVNUIHRyYXZlcnNlciB0aGF0IGRldGVjdHMgc2VxdWVuY2Ugb3BlcmF0b3Ig
ZXhwcmVzc2lvbnMgdGhhdAorLy8gZ28gdGhyb3VnaCBmdXJ0aGVyIEFTVCB0cmFuc2Zvcm1hdGlv
bnMgdGhhdCBnZW5lcmF0ZSBzdGF0ZW1lbnRzLCBhbmQgc3BsaXRzIHRoZW0gc28gdGhhdAorLy8g
cG9zc2libGUgc2lkZSBlZmZlY3RzIG9mIGVhcmxpZXIgcGFydHMgb2YgdGhlIHNlcXVlbmNlIG9w
ZXJhdG9yIGV4cHJlc3Npb24gYXJlIGd1YXJhbnRlZWQgdG8gYmUKKy8vIGV2YWx1YXRlZCBiZWZv
cmUgdGhlIGxhdHRlciBwYXJ0cyBvZiB0aGUgc2VxdWVuY2Ugb3BlcmF0b3IgZXhwcmVzc2lvbiBh
cmUgZXZhbHVhdGVkLgorLy8KKworI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvU3BsaXRT
ZXF1ZW5jZU9wZXJhdG9yLmgiCisKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0ludGVy
bU5vZGUuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGVQYXR0ZXJu
TWF0Y2hlci5oIgorCituYW1lc3BhY2UKK3sKKworY2xhc3MgU3BsaXRTZXF1ZW5jZU9wZXJhdG9y
VHJhdmVyc2VyIDogcHVibGljIFRMVmFsdWVUcmFja2luZ1RyYXZlcnNlcgoreworICBwdWJsaWM6
CisgICAgU3BsaXRTZXF1ZW5jZU9wZXJhdG9yVHJhdmVyc2VyKHVuc2lnbmVkIGludCBwYXR0ZXJu
c1RvU3BsaXRNYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
U3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgc2hhZGVyVmVyc2lvbik7CisKKyAgICBib29sIHZpc2l0QmluYXJ5KFZpc2l0IHZp
c2l0LCBUSW50ZXJtQmluYXJ5ICpub2RlKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0QWdncmVn
YXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKSBvdmVycmlkZTsKKyAgICBi
b29sIHZpc2l0VGVybmFyeShWaXNpdCB2aXNpdCwgVEludGVybVRlcm5hcnkgKm5vZGUpIG92ZXJy
aWRlOworCisgICAgdm9pZCBuZXh0SXRlcmF0aW9uKCk7CisgICAgYm9vbCBmb3VuZEV4cHJlc3Np
b25Ub1NwbGl0KCkgY29uc3QgeyByZXR1cm4gbUZvdW5kRXhwcmVzc2lvblRvU3BsaXQ7IH0KKwor
ICBwcm90ZWN0ZWQ6CisgICAgLy8gTWFya2VkIHRvIHRydWUgb25jZSBhbiBvcGVyYXRpb24gdGhh
dCBuZWVkcyB0byBiZSBob2lzdGVkIG91dCBvZiB0aGUgZXhwcmVzc2lvbiBoYXMgYmVlbgorICAg
IC8vIGZvdW5kLiBBZnRlciB0aGF0LCBubyBtb3JlIEFTVCB1cGRhdGVzIGFyZSBwZXJmb3JtZWQg
b24gdGhhdCB0cmF2ZXJzYWwuCisgICAgYm9vbCBtRm91bmRFeHByZXNzaW9uVG9TcGxpdDsKKyAg
ICBpbnQgbUluc2lkZVNlcXVlbmNlT3BlcmF0b3I7CisKKyAgICBJbnRlcm1Ob2RlUGF0dGVybk1h
dGNoZXIgbVBhdHRlcm5Ub1NwbGl0TWF0Y2hlcjsKK307CisKK1NwbGl0U2VxdWVuY2VPcGVyYXRv
clRyYXZlcnNlcjo6U3BsaXRTZXF1ZW5jZU9wZXJhdG9yVHJhdmVyc2VyKHVuc2lnbmVkIGludCBw
YXR0ZXJuc1RvU3BsaXRNYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJs
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBzaGFkZXJWZXJzaW9uKQorICAgIDogVExWYWx1ZVRyYWNraW5nVHJhdmVy
c2VyKHRydWUsIGZhbHNlLCB0cnVlLCBzeW1ib2xUYWJsZSwgc2hhZGVyVmVyc2lvbiksCisgICAg
ICBtRm91bmRFeHByZXNzaW9uVG9TcGxpdChmYWxzZSksCisgICAgICBtSW5zaWRlU2VxdWVuY2VP
cGVyYXRvcigwKSwKKyAgICAgIG1QYXR0ZXJuVG9TcGxpdE1hdGNoZXIocGF0dGVybnNUb1NwbGl0
TWFzaykKK3sKK30KKwordm9pZCBTcGxpdFNlcXVlbmNlT3BlcmF0b3JUcmF2ZXJzZXI6Om5leHRJ
dGVyYXRpb24oKQoreworICAgIG1Gb3VuZEV4cHJlc3Npb25Ub1NwbGl0ID0gZmFsc2U7CisgICAg
bUluc2lkZVNlcXVlbmNlT3BlcmF0b3IgPSAwOworICAgIG5leHRUZW1wb3JhcnlJbmRleCgpOwor
fQorCitib29sIFNwbGl0U2VxdWVuY2VPcGVyYXRvclRyYXZlcnNlcjo6dmlzaXRBZ2dyZWdhdGUo
VmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpCit7CisgICAgaWYgKG1Gb3VuZEV4
cHJlc3Npb25Ub1NwbGl0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobUluc2lk
ZVNlcXVlbmNlT3BlcmF0b3IgPiAwICYmIHZpc2l0ID09IFByZVZpc2l0KQorICAgIHsKKyAgICAg
ICAgLy8gRGV0ZWN0IGV4cHJlc3Npb25zIHRoYXQgbmVlZCB0byBiZSBzaW1wbGlmaWVkCisgICAg
ICAgIG1Gb3VuZEV4cHJlc3Npb25Ub1NwbGl0ID0gbVBhdHRlcm5Ub1NwbGl0TWF0Y2hlci5tYXRj
aChub2RlLCBnZXRQYXJlbnROb2RlKCkpOworICAgICAgICByZXR1cm4gIW1Gb3VuZEV4cHJlc3Np
b25Ub1NwbGl0OworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFNwbGl0U2Vx
dWVuY2VPcGVyYXRvclRyYXZlcnNlcjo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1C
aW5hcnkgKm5vZGUpCit7CisgICAgaWYgKG5vZGUtPmdldE9wKCkgPT0gRU9wQ29tbWEpCisgICAg
eworICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmIChtRm91bmRFeHByZXNzaW9uVG9TcGxpdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtSW5zaWRlU2Vx
dWVuY2VPcGVyYXRvcisrOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHZpc2l0ID09IFBv
c3RWaXNpdCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gU3BsaXQgc2VxdWVuY2Ugb3BlcmF0
b3JzIHN0YXJ0aW5nIGZyb20gdGhlIG91dGVybW9zdCBvbmUgdG8gcHJlc2VydmUgY29ycmVjdAor
ICAgICAgICAgICAgLy8gZXhlY3V0aW9uIG9yZGVyLgorICAgICAgICAgICAgaWYgKG1Gb3VuZEV4
cHJlc3Npb25Ub1NwbGl0ICYmIG1JbnNpZGVTZXF1ZW5jZU9wZXJhdG9yID09IDEpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgLy8gTW92ZSB0aGUgbGVmdCBzaWRlIG9wZXJhbmQgaW50
byBhIHNlcGFyYXRlIHN0YXRlbWVudCBpbiB0aGUgcGFyZW50IGJsb2NrLgorICAgICAgICAgICAg
ICAgIFRJbnRlcm1TZXF1ZW5jZSBpbnNlcnRpb25zOworICAgICAgICAgICAgICAgIGluc2VydGlv
bnMucHVzaF9iYWNrKG5vZGUtPmdldExlZnQoKSk7CisgICAgICAgICAgICAgICAgaW5zZXJ0U3Rh
dGVtZW50c0luUGFyZW50QmxvY2soaW5zZXJ0aW9ucyk7CisgICAgICAgICAgICAgICAgLy8gUmVw
bGFjZSB0aGUgY29tbWEgbm9kZSB3aXRoIGl0cyByaWdodCBzaWRlIG9wZXJhbmQuCisgICAgICAg
ICAgICAgICAgcXVldWVSZXBsYWNlbWVudChub2RlLCBub2RlLT5nZXRSaWdodCgpLCBPcmlnaW5h
bE5vZGU6OklTX0RST1BQRUQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbUluc2lkZVNl
cXVlbmNlT3BlcmF0b3ItLTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICBpZiAobUZvdW5kRXhwcmVzc2lvblRvU3BsaXQpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmIChtSW5zaWRlU2VxdWVuY2VPcGVyYXRvciA+IDAgJiYgdmlzaXQgPT0gUHJl
VmlzaXQpCisgICAgeworICAgICAgICAvLyBEZXRlY3QgZXhwcmVzc2lvbnMgdGhhdCBuZWVkIHRv
IGJlIHNpbXBsaWZpZWQKKyAgICAgICAgbUZvdW5kRXhwcmVzc2lvblRvU3BsaXQgPQorICAgICAg
ICAgICAgbVBhdHRlcm5Ub1NwbGl0TWF0Y2hlci5tYXRjaChub2RlLCBnZXRQYXJlbnROb2RlKCks
IGlzTFZhbHVlUmVxdWlyZWRIZXJlKCkpOworICAgICAgICByZXR1cm4gIW1Gb3VuZEV4cHJlc3Np
b25Ub1NwbGl0OworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFNwbGl0U2Vx
dWVuY2VPcGVyYXRvclRyYXZlcnNlcjo6dmlzaXRUZXJuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJt
VGVybmFyeSAqbm9kZSkKK3sKKyAgICBpZiAobUZvdW5kRXhwcmVzc2lvblRvU3BsaXQpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtSW5zaWRlU2VxdWVuY2VPcGVyYXRvciA+IDAg
JiYgdmlzaXQgPT0gUHJlVmlzaXQpCisgICAgeworICAgICAgICAvLyBEZXRlY3QgZXhwcmVzc2lv
bnMgdGhhdCBuZWVkIHRvIGJlIHNpbXBsaWZpZWQKKyAgICAgICAgbUZvdW5kRXhwcmVzc2lvblRv
U3BsaXQgPSBtUGF0dGVyblRvU3BsaXRNYXRjaGVyLm1hdGNoKG5vZGUpOworICAgICAgICByZXR1
cm4gIW1Gb3VuZEV4cHJlc3Npb25Ub1NwbGl0OworICAgIH0KKworICAgIHJldHVybiB0cnVlOwor
fQorCit9ICAvLyBuYW1lc3BhY2UKKwordm9pZCBTcGxpdFNlcXVlbmNlT3BlcmF0b3IoVEludGVy
bU5vZGUgKnJvb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGF0dGVybnNUb1Nw
bGl0TWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqdGVtcG9y
YXJ5SW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3ltYm9sVGFibGUg
JnN5bWJvbFRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNoYWRlclZlcnNp
b24pCit7CisgICAgU3BsaXRTZXF1ZW5jZU9wZXJhdG9yVHJhdmVyc2VyIHRyYXZlcnNlcihwYXR0
ZXJuc1RvU3BsaXRNYXNrLCBzeW1ib2xUYWJsZSwgc2hhZGVyVmVyc2lvbik7CisgICAgQVNTRVJU
KHRlbXBvcmFyeUluZGV4ICE9IG51bGxwdHIpOworICAgIHRyYXZlcnNlci51c2VUZW1wb3JhcnlJ
bmRleCh0ZW1wb3JhcnlJbmRleCk7CisgICAgLy8gU2VwYXJhdGUgb25lIGV4cHJlc3Npb24gYXQg
YSB0aW1lLCBhbmQgcmVzZXQgdGhlIHRyYXZlcnNlciBiZXR3ZWVuIGl0ZXJhdGlvbnMuCisgICAg
ZG8KKyAgICB7CisgICAgICAgIHRyYXZlcnNlci5uZXh0SXRlcmF0aW9uKCk7CisgICAgICAgIHJv
b3QtPnRyYXZlcnNlKCZ0cmF2ZXJzZXIpOworICAgICAgICBpZiAodHJhdmVyc2VyLmZvdW5kRXhw
cmVzc2lvblRvU3BsaXQoKSkKKyAgICAgICAgICAgIHRyYXZlcnNlci51cGRhdGVUcmVlKCk7Cisg
ICAgfSB3aGlsZSAodHJhdmVyc2VyLmZvdW5kRXhwcmVzc2lvblRvU3BsaXQoKSk7Cit9CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TcGxpdFNl
cXVlbmNlT3BlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9TcGxpdFNlcXVlbmNlT3BlcmF0b3IuaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9T
cGxpdFNlcXVlbmNlT3BlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI0IEBACisv
LworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKy8vIFNwbGl0U2VxdWVuY2VPcGVyYXRvciBpcyBhbiBBU1QgdHJhdmVyc2Vy
IHRoYXQgZGV0ZWN0cyBzZXF1ZW5jZSBvcGVyYXRvciBleHByZXNzaW9ucyB0aGF0CisvLyBnbyB0
aHJvdWdoIGZ1cnRoZXIgQVNUIHRyYW5zZm9ybWF0aW9ucyB0aGF0IGdlbmVyYXRlIHN0YXRlbWVu
dHMsIGFuZCBzcGxpdHMgdGhlbSBzbyB0aGF0CisvLyBwb3NzaWJsZSBzaWRlIGVmZmVjdHMgb2Yg
ZWFybGllciBwYXJ0cyBvZiB0aGUgc2VxdWVuY2Ugb3BlcmF0b3IgZXhwcmVzc2lvbiBhcmUgZ3Vh
cmFudGVlZCB0byBiZQorLy8gZXZhbHVhdGVkIGJlZm9yZSB0aGUgbGF0dGVyIHBhcnRzIG9mIHRo
ZSBzZXF1ZW5jZSBvcGVyYXRvciBleHByZXNzaW9uIGFyZSBldmFsdWF0ZWQuCisvLworCisjaWZu
ZGVmIENPTVBJTEVSX1RSQU5TTEFUT1JfU1BMSVRTRVFVRU5DRU9QRVJBVE9SX0hfCisjZGVmaW5l
IENPTVBJTEVSX1RSQU5TTEFUT1JfU1BMSVRTRVFVRU5DRU9QRVJBVE9SX0hfCisKK2NsYXNzIFRJ
bnRlcm1Ob2RlOworY2xhc3MgVFN5bWJvbFRhYmxlOworCit2b2lkIFNwbGl0U2VxdWVuY2VPcGVy
YXRvcihUSW50ZXJtTm9kZSAqcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBw
YXR0ZXJuc1RvU3BsaXRNYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50ICp0ZW1wb3JhcnlJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRT
eW1ib2xUYWJsZSAmc3ltYm9sVGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
c2hhZGVyVmVyc2lvbik7CisKKyNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9TUExJVFNF
UVVFTkNFT1BFUkFUT1JfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1N5bWJvbFRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5jcHAJKHJl
dmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1N5bWJvbFRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsMTUgKzIxLDM1
IEBACiAKIGludCBUU3ltYm9sVGFibGU6OnVuaXF1ZUlkQ291bnRlciA9IDA7CiAKK1RTeW1ib2w6
OlRTeW1ib2woY29uc3QgVFN0cmluZyAqbikgOiB1bmlxdWVJZChUU3ltYm9sVGFibGU6Om5leHRV
bmlxdWVJZCgpKSwgbmFtZShuKQoreworfQorCiAvLwogLy8gRnVuY3Rpb25zIGhhdmUgYnVyaWVk
IHBvaW50ZXJzIHRvIGRlbGV0ZS4KIC8vCiBURnVuY3Rpb246On5URnVuY3Rpb24oKQogeworICAg
IGNsZWFyUGFyYW1ldGVycygpOworfQorCit2b2lkIFRGdW5jdGlvbjo6Y2xlYXJQYXJhbWV0ZXJz
KCkKK3sKICAgICBmb3IgKFRQYXJhbUxpc3Q6Oml0ZXJhdG9yIGkgPSBwYXJhbWV0ZXJzLmJlZ2lu
KCk7IGkgIT0gcGFyYW1ldGVycy5lbmQoKTsgKytpKQogICAgICAgICBkZWxldGUgKCppKS50eXBl
OworICAgIHBhcmFtZXRlcnMuY2xlYXIoKTsKKyAgICBtYW5nbGVkTmFtZSA9IG51bGxwdHI7CiB9
CiAKK3ZvaWQgVEZ1bmN0aW9uOjpzd2FwUGFyYW1ldGVycyhjb25zdCBURnVuY3Rpb24gJnBhcmFt
ZXRlcnNTb3VyY2UpCit7CisgICAgY2xlYXJQYXJhbWV0ZXJzKCk7CisgICAgZm9yIChhdXRvIHBh
cmFtZXRlciA6IHBhcmFtZXRlcnNTb3VyY2UucGFyYW1ldGVycykKKyAgICB7CisgICAgICAgIGFk
ZFBhcmFtZXRlcihwYXJhbWV0ZXIpOworICAgIH0KK30KKwogY29uc3QgVFN0cmluZyAqVEZ1bmN0
aW9uOjpidWlsZE1hbmdsZWROYW1lKCkgY29uc3QKIHsKICAgICBzdGQ6OnN0cmluZyBuZXdOYW1l
ID0gbWFuZ2xlTmFtZShnZXROYW1lKCkpLmNfc3RyKCk7CkBAIC01Myw4ICs3Myw2IEBACiAKIGJv
b2wgVFN5bWJvbFRhYmxlTGV2ZWw6Omluc2VydChUU3ltYm9sICpzeW1ib2wpCiB7Ci0gICAgc3lt
Ym9sLT5zZXRVbmlxdWVJZChUU3ltYm9sVGFibGU6Om5leHRVbmlxdWVJZCgpKTsKLQogICAgIC8v
IHJldHVybmluZyB0cnVlIG1lYW5zIHN5bWJvbCB3YXMgYWRkZWQgdG8gdGhlIHRhYmxlCiAgICAg
dEluc2VydFJlc3VsdCByZXN1bHQgPSBsZXZlbC5pbnNlcnQodExldmVsUGFpcihzeW1ib2wtPmdl
dE1hbmdsZWROYW1lKCksIHN5bWJvbCkpOwogCkBAIC02Myw4ICs4MSw2IEBACiAKIGJvb2wgVFN5
bWJvbFRhYmxlTGV2ZWw6Omluc2VydFVubWFuZ2xlZChURnVuY3Rpb24gKmZ1bmN0aW9uKQogewot
ICAgIGZ1bmN0aW9uLT5zZXRVbmlxdWVJZChUU3ltYm9sVGFibGU6Om5leHRVbmlxdWVJZCgpKTsK
LQogICAgIC8vIHJldHVybmluZyB0cnVlIG1lYW5zIHN5bWJvbCB3YXMgYWRkZWQgdG8gdGhlIHRh
YmxlCiAgICAgdEluc2VydFJlc3VsdCByZXN1bHQgPSBsZXZlbC5pbnNlcnQodExldmVsUGFpcihm
dW5jdGlvbi0+Z2V0TmFtZSgpLCBmdW5jdGlvbikpOwogCkBAIC04OCw4ICsxMDQsMTAgQEAKIAog
ICAgIGRvCiAgICAgewotICAgICAgICBpZiAobGV2ZWwgPT0gRVNTTDNfQlVJTFRJTlMgJiYgc2hh
ZGVyVmVyc2lvbiAhPSAzMDApCisgICAgICAgIGlmIChsZXZlbCA9PSBFU1NMM18xX0JVSUxUSU5T
ICYmIHNoYWRlclZlcnNpb24gIT0gMzEwKQogICAgICAgICAgICAgbGV2ZWwtLTsKKyAgICAgICAg
aWYgKGxldmVsID09IEVTU0wzX0JVSUxUSU5TICYmIHNoYWRlclZlcnNpb24gPCAzMDApCisgICAg
ICAgICAgICBsZXZlbC0tOwogICAgICAgICBpZiAobGV2ZWwgPT0gRVNTTDFfQlVJTFRJTlMgJiYg
c2hhZGVyVmVyc2lvbiAhPSAxMDApCiAgICAgICAgICAgICBsZXZlbC0tOwogCkBAIC0xMTAsOCAr
MTI4LDEwIEBACiB7CiAgICAgZm9yIChpbnQgbGV2ZWwgPSBMQVNUX0JVSUxUSU5fTEVWRUw7IGxl
dmVsID49IDA7IGxldmVsLS0pCiAgICAgewotICAgICAgICBpZiAobGV2ZWwgPT0gRVNTTDNfQlVJ
TFRJTlMgJiYgc2hhZGVyVmVyc2lvbiAhPSAzMDApCisgICAgICAgIGlmIChsZXZlbCA9PSBFU1NM
M18xX0JVSUxUSU5TICYmIHNoYWRlclZlcnNpb24gIT0gMzEwKQogICAgICAgICAgICAgbGV2ZWwt
LTsKKyAgICAgICAgaWYgKGxldmVsID09IEVTU0wzX0JVSUxUSU5TICYmIHNoYWRlclZlcnNpb24g
PCAzMDApCisgICAgICAgICAgICBsZXZlbC0tOwogICAgICAgICBpZiAobGV2ZWwgPT0gRVNTTDFf
QlVJTFRJTlMgJiYgc2hhZGVyVmVyc2lvbiAhPSAxMDApCiAgICAgICAgICAgICBsZXZlbC0tOwog
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9T
eW1ib2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL1N5bWJvbFRhYmxlLmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1N5bWJvbFRhYmxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKIC8vICAgYXJlIHRyYWNrZWQgaW4g
dGhlIGludGVybWVkaWF0ZSByZXByZXNlbnRhdGlvbiwgbm90IHRoZSBzeW1ib2wgdGFibGUuCiAv
LwogCisjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAjaW5jbHVkZSA8c2V0
PgogCkBAIC00MiwxMSArNDMsOCBAQAogewogICBwdWJsaWM6CiAgICAgUE9PTF9BTExPQ0FUT1Jf
TkVXX0RFTEVURSgpOwotICAgIFRTeW1ib2woY29uc3QgVFN0cmluZyAqbikKLSAgICAgICAgOiB1
bmlxdWVJZCgwKSwKLSAgICAgICAgICBuYW1lKG4pCi0gICAgewotICAgIH0KKyAgICBUU3ltYm9s
KGNvbnN0IFRTdHJpbmcgKm4pOworCiAgICAgdmlydHVhbCB+VFN5bWJvbCgpCiAgICAgewogICAg
ICAgICAvLyBkb24ndCBkZWxldGUgbmFtZSwgaXQncyBmcm9tIHRoZSBwb29sCkBAIC02OCwxMCAr
NjYsNiBAQAogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICB2b2lkIHNl
dFVuaXF1ZUlkKGludCBpZCkKLSAgICB7Ci0gICAgICAgIHVuaXF1ZUlkID0gaWQ7Ci0gICAgfQog
ICAgIGludCBnZXRVbmlxdWVJZCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gdW5pcXVl
SWQ7CkBAIC04Niw3ICs4MCw3IEBACiAgICAgfQogCiAgIHByaXZhdGU6Ci0gICAgaW50IHVuaXF1
ZUlkOyAvLyBGb3IgcmVhbCBjb21wYXJpbmcgZHVyaW5nIGNvZGUgZ2VuZXJhdGlvbgorICAgIGNv
bnN0IGludCB1bmlxdWVJZDsKICAgICBjb25zdCBUU3RyaW5nICpuYW1lOwogICAgIFRTdHJpbmcg
ZXh0ZW5zaW9uOwogfTsKQEAgLTIyOCw2ICsyMjIsOCBAQAogICAgICAgICBtYW5nbGVkTmFtZSA9
IG51bGxwdHI7CiAgICAgfQogCisgICAgdm9pZCBzd2FwUGFyYW1ldGVycyhjb25zdCBURnVuY3Rp
b24gJnBhcmFtZXRlcnNTb3VyY2UpOworCiAgICAgY29uc3QgVFN0cmluZyAmZ2V0TWFuZ2xlZE5h
bWUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKG1hbmdsZWROYW1lID09IG51
bGxwdHIpCkBAIC0yNjEsNiArMjU3LDggQEAKICAgICB9CiAKICAgcHJpdmF0ZToKKyAgICB2b2lk
IGNsZWFyUGFyYW1ldGVycygpOworCiAgICAgY29uc3QgVFN0cmluZyAqYnVpbGRNYW5nbGVkTmFt
ZSgpIGNvbnN0OwogCiAgICAgdHlwZWRlZiBUVmVjdG9yPFRDb25zdFBhcmFtZXRlcj4gVFBhcmFt
TGlzdDsKQEAgLTI5NSw2ICsyOTMsNyBAQAogICAgIHR5cGVkZWYgc3RkOjpwYWlyPHRMZXZlbDo6
aXRlcmF0b3IsIGJvb2w+IHRJbnNlcnRSZXN1bHQ7CiAKICAgICBUU3ltYm9sVGFibGVMZXZlbCgp
CisgICAgICAgIDogbUdsb2JhbEludmFyaWFudChmYWxzZSkKICAgICB7CiAgICAgfQogICAgIH5U
U3ltYm9sVGFibGVMZXZlbCgpOwpAQCAtMzA2LDggKzMwNSwyMiBAQAogCiAgICAgVFN5bWJvbCAq
ZmluZChjb25zdCBUU3RyaW5nICZuYW1lKSBjb25zdDsKIAorICAgIHZvaWQgYWRkSW52YXJpYW50
VmFyeWluZyhjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkKKyAgICB7CisgICAgICAgIG1JbnZhcmlh
bnRWYXJ5aW5ncy5pbnNlcnQobmFtZSk7CisgICAgfQorCisgICAgYm9vbCBpc1ZhcnlpbmdJbnZh
cmlhbnQoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gKG1H
bG9iYWxJbnZhcmlhbnQgfHwgbUludmFyaWFudFZhcnlpbmdzLmNvdW50KG5hbWUpID4gMCk7Cisg
ICAgfQorCisgICAgdm9pZCBzZXRHbG9iYWxJbnZhcmlhbnQoYm9vbCBpbnZhcmlhbnQpIHsgbUds
b2JhbEludmFyaWFudCA9IGludmFyaWFudDsgfQorCiAgIHByb3RlY3RlZDoKICAgICB0TGV2ZWwg
bGV2ZWw7CisgICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IG1JbnZhcmlhbnRWYXJ5aW5nczsKKyAg
ICBib29sIG1HbG9iYWxJbnZhcmlhbnQ7CiB9OwogCiAvLyBEZWZpbmUgRVN5bWJvbExldmVsIGFz
IGludCByYXRoZXIgdGhhbiBhbiBlbnVtIHNpbmNlIGxldmVsIGNhbiBnbwpAQCAtMzE3LDE0ICsz
MzAsMTQgQEAKIGNvbnN0IGludCBDT01NT05fQlVJTFRJTlMgPSAwOwogY29uc3QgaW50IEVTU0wx
X0JVSUxUSU5TID0gMTsKIGNvbnN0IGludCBFU1NMM19CVUlMVElOUyA9IDI7Ci1jb25zdCBpbnQg
TEFTVF9CVUlMVElOX0xFVkVMID0gRVNTTDNfQlVJTFRJTlM7Ci1jb25zdCBpbnQgR0xPQkFMX0xF
VkVMID0gMzsKK2NvbnN0IGludCBFU1NMM18xX0JVSUxUSU5TICAgPSAzOworY29uc3QgaW50IExB
U1RfQlVJTFRJTl9MRVZFTCA9IEVTU0wzXzFfQlVJTFRJTlM7Citjb25zdCBpbnQgR0xPQkFMX0xF
VkVMICAgICAgID0gNDsKIAogY2xhc3MgVFN5bWJvbFRhYmxlIDogYW5nbGU6Ok5vbkNvcHlhYmxl
CiB7CiAgIHB1YmxpYzoKICAgICBUU3ltYm9sVGFibGUoKQotICAgICAgICA6IG1HbG9iYWxJbnZh
cmlhbnQoZmFsc2UpCiAgICAgewogICAgICAgICAvLyBUaGUgc3ltYm9sIHRhYmxlIGNhbm5vdCBi
ZSB1c2VkIHVudGlsIHB1c2goKSBpcyBjYWxsZWQsIGJ1dAogICAgICAgICAvLyB0aGUgbGFjayBv
ZiBhbiBpbml0aWFsIGNhbGwgdG8gcHVzaCgpIGNhbiBiZSB1c2VkIHRvIGRldGVjdApAQCAtMzQ2
LDcgKzM1OSw3IEBACiAgICAgfQogICAgIGJvb2wgYXRHbG9iYWxMZXZlbCgpIGNvbnN0CiAgICAg
ewotICAgICAgICByZXR1cm4gY3VycmVudExldmVsKCkgPD0gR0xPQkFMX0xFVkVMOworICAgICAg
ICByZXR1cm4gY3VycmVudExldmVsKCkgPT0gR0xPQkFMX0xFVkVMOwogICAgIH0KICAgICB2b2lk
IHB1c2goKQogICAgIHsKQEAgLTM3OSwxMCArMzkyLDEwIEBACiAgICAgICAgIHJldHVybiB0YWJs
ZVtsZXZlbF0tPmluc2VydChzeW1ib2wpOwogICAgIH0KIAotICAgIGJvb2wgaW5zZXJ0Q29uc3RJ
bnQoRVN5bWJvbExldmVsIGxldmVsLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgdmFsdWUpCisgICAg
Ym9vbCBpbnNlcnRDb25zdEludChFU3ltYm9sTGV2ZWwgbGV2ZWwsIGNvbnN0IGNoYXIgKm5hbWUs
IGludCB2YWx1ZSwgVFByZWNpc2lvbiBwcmVjaXNpb24pCiAgICAgewotICAgICAgICBUVmFyaWFi
bGUgKmNvbnN0YW50ID0gbmV3IFRWYXJpYWJsZSgKLSAgICAgICAgICAgIE5ld1Bvb2xUU3RyaW5n
KG5hbWUpLCBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QsIDEpKTsKKyAgICAg
ICAgVFZhcmlhYmxlICpjb25zdGFudCA9CisgICAgICAgICAgICBuZXcgVFZhcmlhYmxlKE5ld1Bv
b2xUU3RyaW5nKG5hbWUpLCBUVHlwZShFYnRJbnQsIHByZWNpc2lvbiwgRXZxQ29uc3QsIDEpKTsK
ICAgICAgICAgVENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25b
MV07CiAgICAgICAgIHVuaW9uQXJyYXlbMF0uc2V0SUNvbnN0KHZhbHVlKTsKICAgICAgICAgY29u
c3RhbnQtPnNoYXJlQ29uc3RQb2ludGVyKHVuaW9uQXJyYXkpOwpAQCAtMzk5LDYgKzQxMiwyNCBA
QAogICAgICAgICByZXR1cm4gaW5zZXJ0KGxldmVsLCBleHQsIGNvbnN0YW50KTsKICAgICB9CiAK
KyAgICBib29sIGluc2VydENvbnN0SXZlYzMoRVN5bWJvbExldmVsIGxldmVsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OmFycmF5PGludCwgMz4gJnZhbHVlcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgVFByZWNpc2lvbiBwcmVjaXNpb24pCisgICAgeworICAgICAgICBUVmFyaWFibGUg
KmNvbnN0YW50SXZlYzMgPQorICAgICAgICAgICAgbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmlu
ZyhuYW1lKSwgVFR5cGUoRWJ0SW50LCBwcmVjaXNpb24sIEV2cUNvbnN0LCAzKSk7CisKKyAgICAg
ICAgVENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bM107Cisg
ICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMHU7IGluZGV4IDwgM3U7ICsraW5kZXgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHVuaW9uQXJyYXlbaW5kZXhdLnNldElDb25zdCh2YWx1ZXNbaW5k
ZXhdKTsKKyAgICAgICAgfQorICAgICAgICBjb25zdGFudEl2ZWMzLT5zaGFyZUNvbnN0UG9pbnRl
cih1bmlvbkFycmF5KTsKKworICAgICAgICByZXR1cm4gaW5zZXJ0KGxldmVsLCBjb25zdGFudEl2
ZWMzKTsKKyAgICB9CisKICAgICB2b2lkIGluc2VydEJ1aWx0SW4oRVN5bWJvbExldmVsIGxldmVs
LCBUT3BlcmF0b3Igb3AsIGNvbnN0IGNoYXIgKmV4dCwgY29uc3QgVFR5cGUgKnJ2YWx1ZSwgY29u
c3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgKnB0eXBl
MSwgY29uc3QgVFR5cGUgKnB0eXBlMiA9IDAsIGNvbnN0IFRUeXBlICpwdHlwZTMgPSAwLCBjb25z
dCBUVHlwZSAqcHR5cGU0ID0gMCwgY29uc3QgVFR5cGUgKnB0eXBlNSA9IDApOwogCkBAIC00Mzcs
MTUgKzQ2OCwxNSBAQAogCiAgICAgYm9vbCBzZXREZWZhdWx0UHJlY2lzaW9uKGNvbnN0IFRQdWJs
aWNUeXBlICZ0eXBlLCBUUHJlY2lzaW9uIHByZWMpCiAgICAgewotICAgICAgICBpZiAoIVN1cHBv
cnRzUHJlY2lzaW9uKHR5cGUudHlwZSkpCisgICAgICAgIGlmICghU3VwcG9ydHNQcmVjaXNpb24o
dHlwZS5nZXRCYXNpY1R5cGUoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IGlmICh0eXBlLnR5cGUgPT0gRWJ0VUludCkKKyAgICAgICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBl
KCkgPT0gRWJ0VUludCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgIC8vIEVTU0wgMy4wMC40
IHNlY3Rpb24gNC41LjQKICAgICAgICAgaWYgKHR5cGUuaXNBZ2dyZWdhdGUoKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsgLy8gTm90IGFsbG93ZWQgdG8gc2V0IGZvciBhZ2dyZWdhdGUgdHlw
ZXMKICAgICAgICAgaW50IGluZGV4T2ZMYXN0RWxlbWVudCA9IHN0YXRpY19jYXN0PGludD4ocHJl
Y2lzaW9uU3RhY2suc2l6ZSgpKSAtIDE7CiAgICAgICAgIC8vIFVzZXMgbWFwIG9wZXJhdG9yIFtd
LCBvdmVyd3JpdGVzIHRoZSBjdXJyZW50IHZhbHVlCi0gICAgICAgICgqcHJlY2lzaW9uU3RhY2tb
aW5kZXhPZkxhc3RFbGVtZW50XSlbdHlwZS50eXBlXSA9IHByZWM7CisgICAgICAgICgqcHJlY2lz
aW9uU3RhY2tbaW5kZXhPZkxhc3RFbGVtZW50XSlbdHlwZS5nZXRCYXNpY1R5cGUoKV0gPSBwcmVj
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTQ1Nyw3ICs0ODgsOCBAQAogICAg
IC8vICJpbnZhcmlhbnQgdmFyeWluZ19uYW1lOyIuCiAgICAgdm9pZCBhZGRJbnZhcmlhbnRWYXJ5
aW5nKGNvbnN0IHN0ZDo6c3RyaW5nICZvcmlnaW5hbE5hbWUpCiAgICAgewotICAgICAgICBtSW52
YXJpYW50VmFyeWluZ3MuaW5zZXJ0KG9yaWdpbmFsTmFtZSk7CisgICAgICAgIEFTU0VSVChhdEds
b2JhbExldmVsKCkpOworICAgICAgICB0YWJsZVtjdXJyZW50TGV2ZWwoKV0tPmFkZEludmFyaWFu
dFZhcnlpbmcob3JpZ2luYWxOYW1lKTsKICAgICB9CiAgICAgLy8gSWYgdGhpcyByZXR1cm5zIGZh
bHNlLCB0aGUgdmFyeWluZyBjb3VsZCBzdGlsbCBiZSBpbnZhcmlhbnQKICAgICAvLyBpZiBpdCBp
cyBzZXQgYXMgaW52YXJpYW50IGR1cmluZyB0aGUgdmFyeWluZyB2YXJpYWJsZQpAQCAtNDY1LDEy
ICs0OTcsMTUgQEAKICAgICAvLyB2YXJpYWJsZSdzIHR5cGUsIG5vdCBoZXJlLgogICAgIGJvb2wg
aXNWYXJ5aW5nSW52YXJpYW50KGNvbnN0IHN0ZDo6c3RyaW5nICZvcmlnaW5hbE5hbWUpIGNvbnN0
CiAgICAgewotICAgICAgcmV0dXJuIChtR2xvYmFsSW52YXJpYW50IHx8Ci0gICAgICAgICAgICAg
IG1JbnZhcmlhbnRWYXJ5aW5ncy5jb3VudChvcmlnaW5hbE5hbWUpID4gMCk7CisgICAgICAgIEFT
U0VSVChhdEdsb2JhbExldmVsKCkpOworICAgICAgICByZXR1cm4gdGFibGVbY3VycmVudExldmVs
KCldLT5pc1ZhcnlpbmdJbnZhcmlhbnQob3JpZ2luYWxOYW1lKTsKICAgICB9CiAKLSAgICB2b2lk
IHNldEdsb2JhbEludmFyaWFudCgpIHsgbUdsb2JhbEludmFyaWFudCA9IHRydWU7IH0KLSAgICBi
b29sIGdldEdsb2JhbEludmFyaWFudCgpIGNvbnN0IHsgcmV0dXJuIG1HbG9iYWxJbnZhcmlhbnQ7
IH0KKyAgICB2b2lkIHNldEdsb2JhbEludmFyaWFudChib29sIGludmFyaWFudCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChhdEdsb2JhbExldmVsKCkpOworICAgICAgICB0YWJsZVtjdXJyZW50TGV2
ZWwoKV0tPnNldEdsb2JhbEludmFyaWFudChpbnZhcmlhbnQpOworICAgIH0KIAogICAgIHN0YXRp
YyBpbnQgbmV4dFVuaXF1ZUlkKCkKICAgICB7CkBAIC01MDAsOSArNTM1LDYgQEAKIAogICAgIHN0
ZDo6c2V0PHN0ZDo6c3RyaW5nPiBtVW5tYW5nbGVkQnVpbHRpbk5hbWVzOwogCi0gICAgc3RkOjpz
ZXQ8c3RkOjpzdHJpbmc+IG1JbnZhcmlhbnRWYXJ5aW5nczsKLSAgICBib29sIG1HbG9iYWxJbnZh
cmlhbnQ7Ci0KICAgICBzdGF0aWMgaW50IHVuaXF1ZUlkQ291bnRlcjsKIH07CiAKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RleHR1cmVGdW5j
dGlvbkhMU0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL1RleHR1cmVGdW5jdGlvbkhMU0wuY3BwCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RleHR1
cmVGdW5jdGlvbkhMU0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTI3NCBAQAorLy8K
Ky8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vCisvLyBUZXh0dXJlRnVuY3Rpb25ITFNMOiBDbGFzcyBmb3Igd3JpdGluZyBpbXBs
ZW1lbnRhdGlvbnMgb2YgRVNTTCB0ZXh0dXJlIGZ1bmN0aW9ucyBpbnRvIEhMU0wKKy8vIG91dHB1
dC4gU29tZSBvZiB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBzdHJhaWdodGZvcndhcmQgYW5kIGp1
c3QgY2FsbCB0aGUgSExTTCBlcXVpdmFsZW50IG9mIHRoZQorLy8gRVNTTCB0ZXh0dXJlIGZ1bmN0
aW9uLCBvdGhlcnMgZG8gbW9yZSB3b3JrIHRvIGVtdWxhdGUgRVNTTCB0ZXh0dXJlIHNhbXBsaW5n
IG9yIHNpemUgcXVlcnkKKy8vIGJlaGF2aW9yLgorLy8KKworI2luY2x1ZGUgImNvbXBpbGVyL3Ry
YW5zbGF0b3IvVGV4dHVyZUZ1bmN0aW9uSExTTC5oIgorCisjaW5jbHVkZSAiY29tcGlsZXIvdHJh
bnNsYXRvci9VdGlsc0hMU0wuaCIKKworbmFtZXNwYWNlIHNoCit7CisKK25hbWVzcGFjZQorewor
Cit2b2lkIE91dHB1dEludFRleENvb3JkV3JhcChUSW5mb1NpbmtCYXNlICZvdXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp3cmFwTW9kZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUU3RyaW5nICZ0ZXhDb29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRTdHJpbmcgJnRleENvb3JkT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciAqdGV4Q29vcmRPdXROYW1lKQoreworICAgIC8vIEdMRVMgMy4wLjQgdGFibGUg
My4yMiBzcGVjaWZpZXMgaG93IHRoZSB3cmFwIG1vZGVzIHdvcmsuIFdlIGRvbid0IHVzZSB0aGUg
Zm9ybXVsYXMgdmVyYmF0aW0KKyAgICAvLyBidXQgcmF0aGVyIHVzZSBlcXVpdmFsZW50IGZvcm11
bGFzIHRoYXQgbWFwIGJldHRlciB0byBITFNMLgorICAgIG91dCA8PCAiaW50ICIgPDwgdGV4Q29v
cmRPdXROYW1lIDw8ICI7XG4iOworICAgIG91dCA8PCAiZmxvYXQgIiA8PCB0ZXhDb29yZE91dE5h
bWUgPDwgIk9mZnNldCA9ICIgPDwgdGV4Q29vcmQgPDwgIiArIGZsb2F0KCIgPDwgdGV4Q29vcmRP
ZmZzZXQKKyAgICAgICAgPDwgIikgLyAiIDw8IHNpemUgPDwgIjtcbiI7CisKKyAgICAvLyBDTEFN
UF9UT19FREdFCisgICAgb3V0IDw8ICJpZiAoIiA8PCB3cmFwTW9kZSA8PCAiID09IDEpXG4iOwor
ICAgIG91dCA8PCAie1xuIjsKKyAgICBvdXQgPDwgIiAgICAiIDw8IHRleENvb3JkT3V0TmFtZSA8
PCAiID0gY2xhbXAoaW50KGZsb29yKCIgPDwgc2l6ZSA8PCAiICogIiA8PCB0ZXhDb29yZE91dE5h
bWUKKyAgICAgICAgPDwgIk9mZnNldCkpLCAwLCBpbnQoIiA8PCBzaXplIDw8ICIpIC0gMSk7XG4i
OworICAgIG91dCA8PCAifVxuIjsKKworICAgIC8vIE1JUlJPUkVEX1JFUEVBVAorICAgIG91dCA8
PCAiZWxzZSBpZiAoIiA8PCB3cmFwTW9kZSA8PCAiID09IDMpXG4iOworICAgIG91dCA8PCAie1xu
IjsKKyAgICBvdXQgPDwgIiAgICBmbG9hdCBjb29yZFdyYXBwZWQgPSAxLjAgLSBhYnMoZnJhYyhh
YnMoIiA8PCB0ZXhDb29yZE91dE5hbWUKKyAgICAgICAgPDwgIk9mZnNldCkgKiAwLjUpICogMi4w
IC0gMS4wKTtcbiI7CisgICAgb3V0IDw8ICIgICAgIiA8PCB0ZXhDb29yZE91dE5hbWUgPDwgIiA9
IGludChmbG9vcigiIDw8IHNpemUgPDwgIiAqIGNvb3JkV3JhcHBlZCkpO1xuIjsKKyAgICBvdXQg
PDwgIn1cbiI7CisKKyAgICAvLyBSRVBFQVQKKyAgICBvdXQgPDwgImVsc2VcbiI7CisgICAgb3V0
IDw8ICJ7XG4iOworICAgIG91dCA8PCAiICAgICIgPDwgdGV4Q29vcmRPdXROYW1lIDw8ICIgPSBp
bnQoZmxvb3IoIiA8PCBzaXplIDw8ICIgKiBmcmFjKCIgPDwgdGV4Q29vcmRPdXROYW1lCisgICAg
ICAgIDw8ICJPZmZzZXQpKSk7XG4iOworICAgIG91dCA8PCAifVxuIjsKK30KKwordm9pZCBPdXRw
dXRJbnRUZXhDb29yZFdyYXBzKFRJbmZvU2lua0Jhc2UgJm91dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVuY3Rpb24gJnRl
eHR1cmVGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUU3RyaW5nICp0ZXhD
b29yZFgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFN0cmluZyAqdGV4Q29vcmRZLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRTdHJpbmcgKnRleENvb3JkWikKK3sKKyAgICAv
LyBDb252ZXJ0IGZyb20gbm9ybWFsaXplZCBmbG9hdGluZy1wb2ludCB0byBpbnRlZ2VyCisgICAg
b3V0IDw8ICJpbnQgd3JhcFMgPSBzYW1wbGVyTWV0YWRhdGFbc2FtcGxlckluZGV4XS53cmFwTW9k
ZXMgJiAweDM7XG4iOworICAgIGlmICh0ZXh0dXJlRnVuY3Rpb24ub2Zmc2V0KQorICAgIHsKKyAg
ICAgICAgT3V0cHV0SW50VGV4Q29vcmRXcmFwKG91dCwgIndyYXBTIiwgIndpZHRoIiwgKnRleENv
b3JkWCwgIm9mZnNldC54IiwgInRpeCIpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAg
ICBPdXRwdXRJbnRUZXhDb29yZFdyYXAob3V0LCAid3JhcFMiLCAid2lkdGgiLCAqdGV4Q29vcmRY
LCAiMCIsICJ0aXgiKTsKKyAgICB9CisgICAgKnRleENvb3JkWCA9ICJ0aXgiOworICAgIG91dCA8
PCAiaW50IHdyYXBUID0gKHNhbXBsZXJNZXRhZGF0YVtzYW1wbGVySW5kZXhdLndyYXBNb2RlcyA+
PiAyKSAmIDB4MztcbiI7CisgICAgaWYgKHRleHR1cmVGdW5jdGlvbi5vZmZzZXQpCisgICAgewor
ICAgICAgICBPdXRwdXRJbnRUZXhDb29yZFdyYXAob3V0LCAid3JhcFQiLCAiaGVpZ2h0IiwgKnRl
eENvb3JkWSwgIm9mZnNldC55IiwgInRpeSIpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAg
ICAgICBPdXRwdXRJbnRUZXhDb29yZFdyYXAob3V0LCAid3JhcFQiLCAiaGVpZ2h0IiwgKnRleENv
b3JkWSwgIjAiLCAidGl5Iik7CisgICAgfQorICAgICp0ZXhDb29yZFkgPSAidGl5IjsKKworICAg
IGlmIChJc1NhbXBsZXJBcnJheSh0ZXh0dXJlRnVuY3Rpb24uc2FtcGxlcikpCisgICAgeworICAg
ICAgICAqdGV4Q29vcmRaID0gImludChtYXgoMCwgbWluKGxheWVycyAtIDEsIGZsb29yKDAuNSAr
IHQueikpKSkiOworICAgIH0KKyAgICBlbHNlIGlmICghSXNTYW1wbGVyQ3ViZSh0ZXh0dXJlRnVu
Y3Rpb24uc2FtcGxlcikgJiYgIUlzU2FtcGxlcjJEKHRleHR1cmVGdW5jdGlvbi5zYW1wbGVyKSkK
KyAgICB7CisgICAgICAgIG91dCA8PCAiaW50IHdyYXBSID0gKHNhbXBsZXJNZXRhZGF0YVtzYW1w
bGVySW5kZXhdLndyYXBNb2RlcyA+PiA0KSAmIDB4MztcbiI7CisgICAgICAgIGlmICh0ZXh0dXJl
RnVuY3Rpb24ub2Zmc2V0KQorICAgICAgICB7CisgICAgICAgICAgICBPdXRwdXRJbnRUZXhDb29y
ZFdyYXAob3V0LCAid3JhcFIiLCAiZGVwdGgiLCAqdGV4Q29vcmRaLCAib2Zmc2V0LnoiLCAidGl6
Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBPdXRw
dXRJbnRUZXhDb29yZFdyYXAob3V0LCAid3JhcFIiLCAiZGVwdGgiLCAqdGV4Q29vcmRaLCAiMCIs
ICJ0aXoiKTsKKyAgICAgICAgfQorICAgICAgICAqdGV4Q29vcmRaID0gInRpeiI7CisgICAgfQor
fQorCit2b2lkIE91dHB1dEhMU0w0U2FtcGxlRnVuY3Rpb25QcmVmaXgoVEluZm9TaW5rQmFzZSAm
b3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRleHR1cmVG
dW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbiAmdGV4dHVyZUZ1bmN0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJnRleHR1cmVSZWZlcmVu
Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAm
c2FtcGxlclJlZmVyZW5jZSkKK3sKKyAgICBvdXQgPDwgdGV4dHVyZVJlZmVyZW5jZTsKKyAgICBp
ZiAoSXNJbnRlZ2VyU2FtcGxlcih0ZXh0dXJlRnVuY3Rpb24uc2FtcGxlcikgfHwKKyAgICAgICAg
dGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVu
Y3Rpb246OkZFVENIKQorICAgIHsKKyAgICAgICAgb3V0IDw8ICIuTG9hZCgiOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKElzU2hhZG93U2FtcGxlcih0ZXh0dXJlRnVuY3Rpb24u
c2FtcGxlcikpCisgICAgeworICAgICAgICBzd2l0Y2ggKHRleHR1cmVGdW5jdGlvbi5tZXRob2Qp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVy
ZUZ1bmN0aW9uOjpJTVBMSUNJVDoKKyAgICAgICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uSExT
TDo6VGV4dHVyZUZ1bmN0aW9uOjpCSUFTOgorICAgICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rp
b25ITFNMOjpUZXh0dXJlRnVuY3Rpb246OkxPRDoKKyAgICAgICAgICAgICAgICBvdXQgPDwgIi5T
YW1wbGVDbXAoIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgVGV4
dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0aW9uOjpMT0QwOgorICAgICAgICAgICAgY2Fz
ZSBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVuY3Rpb246OkxPRDBCSUFTOgorICAgICAg
ICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVuY3Rpb246OkdSQUQ6Cisg
ICAgICAgICAgICAgICAgb3V0IDw8ICIuU2FtcGxlQ21wTGV2ZWxaZXJvKCI7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgc3dp
dGNoICh0ZXh0dXJlRnVuY3Rpb24ubWV0aG9kKQorICAgICAgICB7CisgICAgICAgICAgICBjYXNl
IFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbjo6SU1QTElDSVQ6CisgICAgICAg
ICAgICAgICAgb3V0IDw8ICIuU2FtcGxlKCI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbjo6QklBUzoK
KyAgICAgICAgICAgICAgICBvdXQgPDwgIi5TYW1wbGVCaWFzKCI7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5j
dGlvbjo6TE9EOgorICAgICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJl
RnVuY3Rpb246OkxPRDA6CisgICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbkhMU0w6OlRl
eHR1cmVGdW5jdGlvbjo6TE9EMEJJQVM6CisgICAgICAgICAgICAgICAgb3V0IDw8ICIuU2FtcGxl
TGV2ZWwoIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgVGV4dHVy
ZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0aW9uOjpHUkFEOgorICAgICAgICAgICAgICAgIG91
dCA8PCAiLlNhbXBsZUdyYWQoIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICBvdXQgPDwgc2FtcGxlclJlZmVyZW5jZSA8PCAiLCAiOworfQorCitjb25zdCBjaGFy
ICpHZXRTYW1wbGVyQ29vcmRpbmF0ZVR5cGVTdHJpbmcoCisgICAgY29uc3QgVGV4dHVyZUZ1bmN0
aW9uSExTTDo6VGV4dHVyZUZ1bmN0aW9uICZ0ZXh0dXJlRnVuY3Rpb24sCisgICAgaW50IGhsc2xD
b29yZHMpCit7CisgICAgaWYgKElzSW50ZWdlclNhbXBsZXIodGV4dHVyZUZ1bmN0aW9uLnNhbXBs
ZXIpIHx8CisgICAgICAgIHRleHR1cmVGdW5jdGlvbi5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9u
SExTTDo6VGV4dHVyZUZ1bmN0aW9uOjpGRVRDSCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoaGxz
bENvb3JkcykKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAg
IHJldHVybiAiaW50MyI7CisgICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgcmV0
dXJuICJpbnQ0IjsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBzd2l0
Y2ggKGhsc2xDb29yZHMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAg
ICAgICAgICByZXR1cm4gImZsb2F0MiI7CisgICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAg
ICAgICAgcmV0dXJuICJmbG9hdDMiOworICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAg
ICAgIHJldHVybiAiZmxvYXQ0IjsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gIiI7Cit9CisK
K2ludCBHZXRITFNMQ29vcmRDb3VudChjb25zdCBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJl
RnVuY3Rpb24gJnRleHR1cmVGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICBTaFNoYWRl
ck91dHB1dCBvdXRwdXRUeXBlKQoreworICAgIGlmIChvdXRwdXRUeXBlID09IFNIX0hMU0xfM18w
X09VVFBVVCkKKyAgICB7CisgICAgICAgIGludCBobHNsQ29vcmRzID0gMjsKKyAgICAgICAgc3dp
dGNoICh0ZXh0dXJlRnVuY3Rpb24uc2FtcGxlcikKKyAgICAgICAgeworICAgICAgICAgICAgY2Fz
ZSBFYnRTYW1wbGVyMkQ6CisgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXJFeHRlcm5hbE9FUzoK
KyAgICAgICAgICAgICAgICBobHNsQ29vcmRzID0gMjsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlckN1YmU6CisgICAgICAgICAgICAgICAgaGxzbENv
b3JkcyA9IDM7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIH0KKworICAgICAgICBzd2l0
Y2ggKHRleHR1cmVGdW5jdGlvbi5tZXRob2QpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2Ug
VGV4dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0aW9uOjpJTVBMSUNJVDoKKyAgICAgICAg
ICAgICAgICByZXR1cm4gaGxzbENvb3JkczsKKyAgICAgICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0
aW9uSExTTDo6VGV4dHVyZUZ1bmN0aW9uOjpCSUFTOgorICAgICAgICAgICAgY2FzZSBUZXh0dXJl
RnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVuY3Rpb246OkxPRDoKKyAgICAgICAgICAgIGNhc2UgVGV4
dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0aW9uOjpMT0QwOgorICAgICAgICAgICAgY2Fz
ZSBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVuY3Rpb246OkxPRDBCSUFTOgorICAgICAg
ICAgICAgICAgIHJldHVybiA0OworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAg
ICAgIHN3aXRjaCAodGV4dHVyZUZ1bmN0aW9uLnNhbXBsZXIpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGNhc2UgRWJ0U2FtcGxlcjJEOgorICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAg
ICAgICAgY2FzZSBFYnRTYW1wbGVyM0Q6CisgICAgICAgICAgICAgICAgcmV0dXJuIDM7CisgICAg
ICAgICAgICBjYXNlIEVidFNhbXBsZXJDdWJlOgorICAgICAgICAgICAgICAgIHJldHVybiAzOwor
ICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkRBcnJheToKKyAgICAgICAgICAgICAgICByZXR1
cm4gMzsKKyAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlckV4dGVybmFsT0VTOgorICAgICAgICAg
ICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEOgorICAgICAg
ICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjNEOgorICAg
ICAgICAgICAgICAgIHJldHVybiAzOworICAgICAgICAgICAgY2FzZSBFYnRJU2FtcGxlckN1YmU6
CisgICAgICAgICAgICAgICAgcmV0dXJuIDM7CisgICAgICAgICAgICBjYXNlIEVidElTYW1wbGVy
MkRBcnJheToKKyAgICAgICAgICAgICAgICByZXR1cm4gMzsKKyAgICAgICAgICAgIGNhc2UgRWJ0
VVNhbXBsZXIyRDoKKyAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgIGNhc2Ug
RWJ0VVNhbXBsZXIzRDoKKyAgICAgICAgICAgICAgICByZXR1cm4gMzsKKyAgICAgICAgICAgIGNh
c2UgRWJ0VVNhbXBsZXJDdWJlOgorICAgICAgICAgICAgICAgIHJldHVybiAzOworICAgICAgICAg
ICAgY2FzZSBFYnRVU2FtcGxlcjJEQXJyYXk6CisgICAgICAgICAgICAgICAgcmV0dXJuIDM7Cisg
ICAgICAgICAgICBjYXNlIEVidFNhbXBsZXIyRFNoYWRvdzoKKyAgICAgICAgICAgICAgICByZXR1
cm4gMjsKKyAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlckN1YmVTaGFkb3c6CisgICAgICAgICAg
ICAgICAgcmV0dXJuIDM7CisgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXIyREFycmF5U2hhZG93
OgorICAgICAgICAgICAgICAgIHJldHVybiAzOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAw
OworfQorCit2b2lkIE91dHB1dFRleHR1cmVGdW5jdGlvbkFyZ3VtZW50TGlzdChUSW5mb1NpbmtC
YXNlICZvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
ZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVuY3Rpb24gJnRleHR1cmVGdW5jdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoU2hhZGVyT3V0cHV0
IG91dHB1dFR5cGUpCit7CisgICAgaWYgKG91dHB1dFR5cGUgPT0gU0hfSExTTF8zXzBfT1VUUFVU
KQorICAgIHsKKyAgICAgICAgc3dpdGNoICh0ZXh0dXJlRnVuY3Rpb24uc2FtcGxlcikKKyAgICAg
ICAgeworICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkQ6CisgICAgICAgICAgICBjYXNlIEVi
dFNhbXBsZXJFeHRlcm5hbE9FUzoKKyAgICAgICAgICAgICAgICBvdXQgPDwgInNhbXBsZXIyRCBz
IjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlckN1
YmU6CisgICAgICAgICAgICAgICAgb3V0IDw8ICJzYW1wbGVyQ1VCRSBzIjsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBpZiAo
b3V0cHV0VHlwZSA9PSBTSF9ITFNMXzRfMF9GTDlfM19PVVRQVVQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG91dCA8PCBUZXh0dXJlU3RyaW5nKHRleHR1cmVGdW5jdGlvbi5zYW1wbGVyKSA8PCAi
IHgsICIKKyAgICAgICAgICAgICAgICA8PCBTYW1wbGVyU3RyaW5nKHRleHR1cmVGdW5jdGlvbi5z
YW1wbGVyKSA8PCAiIHMiOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAg
ICAgICAgICAgQVNTRVJUKG91dHB1dFR5cGUgPT0gU0hfSExTTF80XzFfT1VUUFVUKTsKKyAgICAg
ICAgICAgIG91dCA8PCAiY29uc3QgdWludCBzYW1wbGVySW5kZXgiOworICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKHRleHR1cmVGdW5jdGlvbi5tZXRob2QgPT0KKyAgICAgICAgVGV4dHVyZUZ1
bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0aW9uOjpGRVRDSCkgIC8vIEludGVnZXIgY29vcmRpbmF0
ZXMKKyAgICB7CisgICAgICAgIHN3aXRjaCAodGV4dHVyZUZ1bmN0aW9uLmNvb3JkcykKKyAgICAg
ICAgeworICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgIG91dCA8PCAiLCBpbnQy
IHQiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAzOgorICAgICAg
ICAgICAgICAgIG91dCA8PCAiLCBpbnQzIHQiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAg
ICB9CisgICAgfQorICAgIGVsc2UgIC8vIEZsb2F0aW5nLXBvaW50IGNvb3JkaW5hdGVzIChleGNl
cHQgdGV4dHVyZVNpemUpCisgICAgeworICAgICAgICBzd2l0Y2ggKHRleHR1cmVGdW5jdGlvbi5j
b29yZHMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICBv
dXQgPDwgIiwgaW50IGxvZCI7CisgICAgICAgICAgICAgICAgYnJlYWs7ICAvLyB0ZXh0dXJlU2l6
ZSgpCisgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgb3V0IDw8ICIsIGZsb2F0
MiB0IjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzoKKyAgICAg
ICAgICAgICAgICBvdXQgPDwgIiwgZmxvYXQzIHQiOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgIG91dCA8PCAiLCBmbG9hdDQgdCI7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAodGV4dHVy
ZUZ1bmN0aW9uLm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVuY3Rpb246
OkdSQUQpCisgICAgeworICAgICAgICBzd2l0Y2ggKHRleHR1cmVGdW5jdGlvbi5zYW1wbGVyKQor
ICAgICAgICB7CisgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXIyRDoKKyAgICAgICAgICAgIGNh
c2UgRWJ0SVNhbXBsZXIyRDoKKyAgICAgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXIyRDoKKyAgICAg
ICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXk6CisgICAgICAgICAgICBjYXNlIEVidElTYW1w
bGVyMkRBcnJheToKKyAgICAgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXIyREFycmF5OgorICAgICAg
ICAgICAgY2FzZSBFYnRTYW1wbGVyMkRTaGFkb3c6CisgICAgICAgICAgICBjYXNlIEVidFNhbXBs
ZXIyREFycmF5U2hhZG93OgorICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyRXh0ZXJuYWxPRVM6
CisgICAgICAgICAgICAgICAgb3V0IDw8ICIsIGZsb2F0MiBkZHgsIGZsb2F0MiBkZHkiOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyM0Q6CisgICAg
ICAgICAgICBjYXNlIEVidElTYW1wbGVyM0Q6CisgICAgICAgICAgICBjYXNlIEVidFVTYW1wbGVy
M0Q6CisgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXJDdWJlOgorICAgICAgICAgICAgY2FzZSBF
YnRJU2FtcGxlckN1YmU6CisgICAgICAgICAgICBjYXNlIEVidFVTYW1wbGVyQ3ViZToKKyAgICAg
ICAgICAgIGNhc2UgRWJ0U2FtcGxlckN1YmVTaGFkb3c6CisgICAgICAgICAgICAgICAgb3V0IDw8
ICIsIGZsb2F0MyBkZHgsIGZsb2F0MyBkZHkiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAg
ICB9CisgICAgfQorCisgICAgc3dpdGNoICh0ZXh0dXJlRnVuY3Rpb24ubWV0aG9kKQorICAgIHsK
KyAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVuY3Rpb246OklNUExJ
Q0lUOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uSExT
TDo6VGV4dHVyZUZ1bmN0aW9uOjpCSUFTOgorICAgICAgICAgICAgYnJlYWs7ICAvLyBDb21lcyBh
ZnRlciB0aGUgb2Zmc2V0IHBhcmFtZXRlcgorICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbkhM
U0w6OlRleHR1cmVGdW5jdGlvbjo6TE9EOgorICAgICAgICAgICAgb3V0IDw8ICIsIGZsb2F0IGxv
ZCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb25ITFNM
OjpUZXh0dXJlRnVuY3Rpb246OkxPRDA6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVuY3Rpb246OkxPRDBCSUFTOgorICAgICAg
ICAgICAgYnJlYWs7ICAvLyBDb21lcyBhZnRlciB0aGUgb2Zmc2V0IHBhcmFtZXRlcgorICAgICAg
ICBjYXNlIFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbjo6U0laRToKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVG
dW5jdGlvbjo6RkVUQ0g6CisgICAgICAgICAgICBvdXQgPDwgIiwgaW50IG1pcCI7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVu
Y3Rpb246OkdSQUQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgaWYgKHRleHR1cmVGdW5jdGlvbi5v
ZmZzZXQpCisgICAgeworICAgICAgICBzd2l0Y2ggKHRleHR1cmVGdW5jdGlvbi5zYW1wbGVyKQor
ICAgICAgICB7CisgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXIzRDoKKyAgICAgICAgICAgIGNh
c2UgRWJ0SVNhbXBsZXIzRDoKKyAgICAgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXIzRDoKKyAgICAg
ICAgICAgICAgICBvdXQgPDwgIiwgaW50MyBvZmZzZXQiOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkQ6CisgICAgICAgICAgICBjYXNlIEVidFNh
bXBsZXIyREFycmF5OgorICAgICAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEOgorICAgICAgICAg
ICAgY2FzZSBFYnRJU2FtcGxlcjJEQXJyYXk6CisgICAgICAgICAgICBjYXNlIEVidFVTYW1wbGVy
MkQ6CisgICAgICAgICAgICBjYXNlIEVidFVTYW1wbGVyMkRBcnJheToKKyAgICAgICAgICAgIGNh
c2UgRWJ0U2FtcGxlcjJEU2hhZG93OgorICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkRBcnJh
eVNoYWRvdzoKKyAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlckV4dGVybmFsT0VTOgorICAgICAg
ICAgICAgICAgIG91dCA8PCAiLCBpbnQyIG9mZnNldCI7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAodGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9PSBUZXh0
dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVuY3Rpb246OkJJQVMgfHwKKyAgICAgICAgdGV4dHVy
ZUZ1bmN0aW9uLm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVuY3Rpb246
OkxPRDBCSUFTKQorICAgIHsKKyAgICAgICAgb3V0IDw8ICIsIGZsb2F0IGJpYXMiOworICAgIH0K
K30KKwordm9pZCBHZXRUZXh0dXJlUmVmZXJlbmNlKFRJbmZvU2lua0Jhc2UgJm91dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVu
Y3Rpb24gJnRleHR1cmVGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBT
aFNoYWRlck91dHB1dCBvdXRwdXRUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgIFRTdHJp
bmcgKnRleHR1cmVSZWZlcmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgVFN0cmluZyAq
c2FtcGxlclJlZmVyZW5jZSkKK3sKKyAgICBpZiAob3V0cHV0VHlwZSA9PSBTSF9ITFNMXzRfMV9P
VVRQVVQpCisgICAgeworICAgICAgICBUU3RyaW5nIHN1ZmZpeCA9IFRleHR1cmVHcm91cFN1ZmZp
eCh0ZXh0dXJlRnVuY3Rpb24uc2FtcGxlcik7CisgICAgICAgIGlmIChUZXh0dXJlR3JvdXAodGV4
dHVyZUZ1bmN0aW9uLnNhbXBsZXIpID09IEhMU0xfVEVYVFVSRV8yRCkKKyAgICAgICAgeworICAg
ICAgICAgICAgKnRleHR1cmVSZWZlcmVuY2UgPSBUU3RyaW5nKCJ0ZXh0dXJlcyIpICsgc3VmZml4
ICsgIltzYW1wbGVySW5kZXhdIjsKKyAgICAgICAgICAgICpzYW1wbGVyUmVmZXJlbmNlID0gVFN0
cmluZygic2FtcGxlcnMiKSArIHN1ZmZpeCArICJbc2FtcGxlckluZGV4XSI7CisgICAgICAgIH0K
KyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBvdXQgPDwgIiAgICBjb25zdCB1
aW50IHRleHR1cmVJbmRleCA9IHNhbXBsZXJJbmRleCAtIHRleHR1cmVJbmRleE9mZnNldCIgPDwg
c3VmZml4CisgICAgICAgICAgICAgICAgPDwgIjtcbiI7CisgICAgICAgICAgICAqdGV4dHVyZVJl
ZmVyZW5jZSA9IFRTdHJpbmcoInRleHR1cmVzIikgKyBzdWZmaXggKyAiW3RleHR1cmVJbmRleF0i
OworICAgICAgICAgICAgb3V0IDw8ICIgICAgY29uc3QgdWludCBzYW1wbGVyQXJyYXlJbmRleCA9
IHNhbXBsZXJJbmRleCAtIHNhbXBsZXJJbmRleE9mZnNldCIgPDwgc3VmZml4CisgICAgICAgICAg
ICAgICAgPDwgIjtcbiI7CisgICAgICAgICAgICAqc2FtcGxlclJlZmVyZW5jZSA9IFRTdHJpbmco
InNhbXBsZXJzIikgKyBzdWZmaXggKyAiW3NhbXBsZXJBcnJheUluZGV4XSI7CisgICAgICAgIH0K
KyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgKnRleHR1cmVSZWZlcmVuY2UgPSAieCI7
CisgICAgICAgICpzYW1wbGVyUmVmZXJlbmNlID0gInMiOworICAgIH0KK30KKwordm9pZCBPdXRw
dXRUZXh0dXJlU2l6ZUZ1bmN0aW9uQm9keShUSW5mb1NpbmtCYXNlICZvdXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1
cmVGdW5jdGlvbiAmdGV4dHVyZUZ1bmN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUU3RyaW5nICZ0ZXh0dXJlUmVmZXJlbmNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGdldERpbWVuc2lvbnNJZ25vcmVzQmFzZUxldmVsKQor
eworICAgIGlmIChnZXREaW1lbnNpb25zSWdub3Jlc0Jhc2VMZXZlbCkKKyAgICB7CisgICAgICAg
IG91dCA8PCAiaW50IGJhc2VMZXZlbCA9IHNhbXBsZXJNZXRhZGF0YVtzYW1wbGVySW5kZXhdLmJh
c2VMZXZlbDtcbiI7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG91dCA8PCAiaW50
IGJhc2VMZXZlbCA9IDA7XG4iOworICAgIH0KKworICAgIGlmIChJc1NhbXBsZXIzRCh0ZXh0dXJl
RnVuY3Rpb24uc2FtcGxlcikgfHwgSXNTYW1wbGVyQXJyYXkodGV4dHVyZUZ1bmN0aW9uLnNhbXBs
ZXIpIHx8CisgICAgICAgIChJc0ludGVnZXJTYW1wbGVyKHRleHR1cmVGdW5jdGlvbi5zYW1wbGVy
KSAmJiBJc1NhbXBsZXJDdWJlKHRleHR1cmVGdW5jdGlvbi5zYW1wbGVyKSkpCisgICAgeworICAg
ICAgICAvLyAiZGVwdGgiIHN0b3JlcyBlaXRoZXIgdGhlIG51bWJlciBvZiBsYXllcnMgaW4gYW4g
YXJyYXkgdGV4dHVyZSBvciAzRCBkZXB0aAorICAgICAgICBvdXQgPDwgIiAgICB1aW50IHdpZHRo
OyB1aW50IGhlaWdodDsgdWludCBkZXB0aDsgdWludCBudW1iZXJPZkxldmVscztcbiIKKyAgICAg
ICAgICAgIDw8ICIgICAgIiA8PCB0ZXh0dXJlUmVmZXJlbmNlCisgICAgICAgICAgICA8PCAiLkdl
dERpbWVuc2lvbnMoYmFzZUxldmVsLCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgbnVtYmVyT2ZMZXZl
bHMpO1xuIgorICAgICAgICAgICAgPDwgIiAgICB3aWR0aCA9IG1heCh3aWR0aCA+PiBsb2QsIDEp
O1xuIgorICAgICAgICAgICAgPDwgIiAgICBoZWlnaHQgPSBtYXgoaGVpZ2h0ID4+IGxvZCwgMSk7
XG4iOworCisgICAgICAgIGlmICghSXNTYW1wbGVyQXJyYXkodGV4dHVyZUZ1bmN0aW9uLnNhbXBs
ZXIpKQorICAgICAgICB7CisgICAgICAgICAgICBvdXQgPDwgIiAgICBkZXB0aCA9IG1heChkZXB0
aCA+PiBsb2QsIDEpO1xuIjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChJc1NhbXBs
ZXIyRCh0ZXh0dXJlRnVuY3Rpb24uc2FtcGxlcikgfHwgSXNTYW1wbGVyQ3ViZSh0ZXh0dXJlRnVu
Y3Rpb24uc2FtcGxlcikpCisgICAgeworICAgICAgICBvdXQgPDwgIiAgICB1aW50IHdpZHRoOyB1
aW50IGhlaWdodDsgdWludCBudW1iZXJPZkxldmVscztcbiIKKyAgICAgICAgICAgIDw8ICIgICAg
IiA8PCB0ZXh0dXJlUmVmZXJlbmNlCisgICAgICAgICAgICA8PCAiLkdldERpbWVuc2lvbnMoYmFz
ZUxldmVsLCB3aWR0aCwgaGVpZ2h0LCBudW1iZXJPZkxldmVscyk7XG4iCisgICAgICAgICAgICA8
PCAiICAgIHdpZHRoID0gbWF4KHdpZHRoID4+IGxvZCwgMSk7XG4iCisgICAgICAgICAgICA8PCAi
ICAgIGhlaWdodCA9IG1heChoZWlnaHQgPj4gbG9kLCAxKTtcbiI7CisgICAgfQorICAgIGVsc2UK
KyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKworICAgIGlmIChzdHJjbXAodGV4dHVyZUZ1bmN0aW9u
LmdldFJldHVyblR5cGUoKSwgImludDMiKSA9PSAwKQorICAgIHsKKyAgICAgICAgb3V0IDw8ICIg
ICAgcmV0dXJuIGludDMod2lkdGgsIGhlaWdodCwgZGVwdGgpOyI7CisgICAgfQorICAgIGVsc2UK
KyAgICB7CisgICAgICAgIG91dCA8PCAiICAgIHJldHVybiBpbnQyKHdpZHRoLCBoZWlnaHQpOyI7
CisgICAgfQorfQorCit2b2lkIFByb2plY3RUZXh0dXJlQ29vcmRpbmF0ZXMoY29uc3QgVGV4dHVy
ZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0aW9uICZ0ZXh0dXJlRnVuY3Rpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVFN0cmluZyAqdGV4Q29vcmRYLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRTdHJpbmcgKnRleENvb3JkWSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUU3RyaW5nICp0ZXhDb29yZFopCit7CisgICAgaWYgKHRleHR1cmVGdW5j
dGlvbi5wcm9qKQorICAgIHsKKyAgICAgICAgVFN0cmluZyBwcm9qKCIiKTsKKyAgICAgICAgc3dp
dGNoICh0ZXh0dXJlRnVuY3Rpb24uY29vcmRzKQorICAgICAgICB7CisgICAgICAgICAgICBjYXNl
IDM6CisgICAgICAgICAgICAgICAgcHJvaiA9ICIgLyB0LnoiOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgIHByb2ogPSAiIC8gdC53
IjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgfQorICAgICAgICAqdGV4Q29vcmRYID0g
IigiICsgKnRleENvb3JkWCArIHByb2ogKyAiKSI7CisgICAgICAgICp0ZXhDb29yZFkgPSAiKCIg
KyAqdGV4Q29vcmRZICsgcHJvaiArICIpIjsKKyAgICAgICAgKnRleENvb3JkWiA9ICIoIiArICp0
ZXhDb29yZFogKyBwcm9qICsgIikiOworICAgIH0KK30KKwordm9pZCBPdXRwdXRJbnRlZ2VyVGV4
dHVyZVNhbXBsZUZ1bmN0aW9uQ29tcHV0YXRpb25zKAorICAgIFRJbmZvU2lua0Jhc2UgJm91dCwK
KyAgICBjb25zdCBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVuY3Rpb24gJnRleHR1cmVG
dW5jdGlvbiwKKyAgICBjb25zdCBTaFNoYWRlck91dHB1dCBvdXRwdXRUeXBlLAorICAgIGNvbnN0
IFRTdHJpbmcgJnRleHR1cmVSZWZlcmVuY2UsCisgICAgVFN0cmluZyAqdGV4Q29vcmRYLAorICAg
IFRTdHJpbmcgKnRleENvb3JkWSwKKyAgICBUU3RyaW5nICp0ZXhDb29yZFopCit7CisgICAgaWYg
KCFJc0ludGVnZXJTYW1wbGVyKHRleHR1cmVGdW5jdGlvbi5zYW1wbGVyKSkKKyAgICB7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKElzU2FtcGxlckN1YmUodGV4dHVyZUZ1bmN0aW9u
LnNhbXBsZXIpKQorICAgIHsKKyAgICAgICAgb3V0IDw8ICIgICAgZmxvYXQgd2lkdGg7IGZsb2F0
IGhlaWdodDsgZmxvYXQgbGF5ZXJzOyBmbG9hdCBsZXZlbHM7XG4iOworCisgICAgICAgIG91dCA8
PCAiICAgIHVpbnQgbWlwID0gMDtcbiI7CisKKyAgICAgICAgb3V0IDw8ICIgICAgIiA8PCB0ZXh0
dXJlUmVmZXJlbmNlCisgICAgICAgICAgICA8PCAiLkdldERpbWVuc2lvbnMobWlwLCB3aWR0aCwg
aGVpZ2h0LCBsYXllcnMsIGxldmVscyk7XG4iOworCisgICAgICAgIG91dCA8PCAiICAgIGJvb2wg
eE1ham9yID0gYWJzKHQueCkgPiBhYnModC55KSAmJiBhYnModC54KSA+IGFicyh0LnopO1xuIjsK
KyAgICAgICAgb3V0IDw8ICIgICAgYm9vbCB5TWFqb3IgPSBhYnModC55KSA+IGFicyh0LnopICYm
IGFicyh0LnkpID4gYWJzKHQueCk7XG4iOworICAgICAgICBvdXQgPDwgIiAgICBib29sIHpNYWpv
ciA9IGFicyh0LnopID4gYWJzKHQueCkgJiYgYWJzKHQueikgPiBhYnModC55KTtcbiI7CisgICAg
ICAgIG91dCA8PCAiICAgIGJvb2wgbmVnYXRpdmUgPSAoeE1ham9yICYmIHQueCA8IDAuMGYpIHx8
ICh5TWFqb3IgJiYgdC55IDwgMC4wZikgfHwgIgorICAgICAgICAgICAgICAgIih6TWFqb3IgJiYg
dC56IDwgMC4wZik7XG4iOworCisgICAgICAgIC8vIEZBQ0VfUE9TSVRJVkVfWCA9IDAwMGIKKyAg
ICAgICAgLy8gRkFDRV9ORUdBVElWRV9YID0gMDAxYgorICAgICAgICAvLyBGQUNFX1BPU0lUSVZF
X1kgPSAwMTBiCisgICAgICAgIC8vIEZBQ0VfTkVHQVRJVkVfWSA9IDAxMWIKKyAgICAgICAgLy8g
RkFDRV9QT1NJVElWRV9aID0gMTAwYgorICAgICAgICAvLyBGQUNFX05FR0FUSVZFX1ogPSAxMDFi
CisgICAgICAgIG91dCA8PCAiICAgIGludCBmYWNlID0gKGludCluZWdhdGl2ZSArIChpbnQpeU1h
am9yICogMiArIChpbnQpek1ham9yICogNDtcbiI7CisKKyAgICAgICAgb3V0IDw8ICIgICAgZmxv
YXQgdSA9IHhNYWpvciA/IC10LnogOiAoeU1ham9yICYmIHQueSA8IDAuMGYgPyAtdC54IDogdC54
KTtcbiI7CisgICAgICAgIG91dCA8PCAiICAgIGZsb2F0IHYgPSB5TWFqb3IgPyB0LnogOiAobmVn
YXRpdmUgPyB0LnkgOiAtdC55KTtcbiI7CisgICAgICAgIG91dCA8PCAiICAgIGZsb2F0IG0gPSB4
TWFqb3IgPyB0LnggOiAoeU1ham9yID8gdC55IDogdC56KTtcbiI7CisKKyAgICAgICAgb3V0IDw8
ICIgICAgdC54ID0gKHUgKiAwLjVmIC8gbSkgKyAwLjVmO1xuIjsKKyAgICAgICAgb3V0IDw8ICIg
ICAgdC55ID0gKHYgKiAwLjVmIC8gbSkgKyAwLjVmO1xuIjsKKworICAgICAgICAvLyBNaXAgbGV2
ZWwgY29tcHV0YXRpb24uCisgICAgICAgIGlmICh0ZXh0dXJlRnVuY3Rpb24ubWV0aG9kID09IFRl
eHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbjo6SU1QTElDSVQgfHwKKyAgICAgICAg
ICAgIHRleHR1cmVGdW5jdGlvbi5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVy
ZUZ1bmN0aW9uOjpMT0QgfHwKKyAgICAgICAgICAgIHRleHR1cmVGdW5jdGlvbi5tZXRob2QgPT0g
VGV4dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0aW9uOjpHUkFEKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAodGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb25I
TFNMOjpUZXh0dXJlRnVuY3Rpb246OklNUExJQ0lUKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIG91dCA8PCAiICAgIGZsb2F0MiB0U2l6ZWQgPSBmbG9hdDIodC54ICogd2lkdGgsIHQu
eSAqIGhlaWdodCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQyIGR4ID0g
ZGR4KHRTaXplZCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQyIGR5ID0g
ZGR5KHRTaXplZCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQgbG9kID0g
MC41ZiAqIGxvZzIobWF4KGRvdChkeCwgZHgpLCBkb3QoZHksIGR5KSkpO1xuIjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKHRleHR1cmVGdW5jdGlvbi5tZXRob2QgPT0gVGV4
dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0aW9uOjpHUkFEKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIC8vIEVTU0wgMy4wMC42IHNwZWMgc2VjdGlvbiA4Ljg6ICJGb3IgdGhl
IGN1YmUgdmVyc2lvbiwgdGhlIHBhcnRpYWwKKyAgICAgICAgICAgICAgICAvLyBkZXJpdmF0aXZl
cyBvZiBQIGFyZSBhc3N1bWVkIHRvIGJlIGluIHRoZSBjb29yZGluYXRlIHN5c3RlbSB1c2VkIGJl
Zm9yZQorICAgICAgICAgICAgICAgIC8vIHRleHR1cmUgY29vcmRpbmF0ZXMgYXJlIHByb2plY3Rl
ZCBvbnRvIHRoZSBhcHByb3ByaWF0ZSBjdWJlIGZhY2UuIgorICAgICAgICAgICAgICAgIC8vIGRk
eFswXSBhbmQgZGR5WzBdIGFyZSB0aGUgZGVyaXZhdGl2ZXMgb2YgdC54IHBhc3NlZCBpbnRvIHRo
ZSBmdW5jdGlvbgorICAgICAgICAgICAgICAgIC8vIGRkeFsxXSBhbmQgZGR5WzFdIGFyZSB0aGUg
ZGVyaXZhdGl2ZXMgb2YgdC55IHBhc3NlZCBpbnRvIHRoZSBmdW5jdGlvbgorICAgICAgICAgICAg
ICAgIC8vIGRkeFsyXSBhbmQgZGR5WzJdIGFyZSB0aGUgZGVyaXZhdGl2ZXMgb2YgdC56IHBhc3Nl
ZCBpbnRvIHRoZSBmdW5jdGlvbgorICAgICAgICAgICAgICAgIC8vIERldGVybWluZSB0aGUgZGVy
aXZhdGl2ZXMgb2YgdSwgdiBhbmQgbQorICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIGZsb2F0
IGR1ZHggPSB4TWFqb3IgPyBkZHhbMl0gOiAoeU1ham9yICYmIHQueSA8IDAuMGYgPyAtZGR4WzBd
ICIKKyAgICAgICAgICAgICAgICAgICAgICAgIjogZGR4WzBdKTtcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgIiAgICBmbG9hdCBkdWR5ID0geE1ham9yID8gZGR5WzJdIDogKHlNYWpvciAmJiB0
LnkgPCAwLjBmID8gLWRkeVswXSAiCisgICAgICAgICAgICAgICAgICAgICAgICI6IGRkeVswXSk7
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQgZHZkeCA9IHlNYWpvciA/IGRk
eFsyXSA6IChuZWdhdGl2ZSA/IGRkeFsxXSA6IC1kZHhbMV0pO1xuIgorICAgICAgICAgICAgICAg
ICAgICAgICAiICAgIGZsb2F0IGR2ZHkgPSB5TWFqb3IgPyBkZHlbMl0gOiAobmVnYXRpdmUgPyBk
ZHlbMV0gOiAtZGR5WzFdKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdCBk
bWR4ID0geE1ham9yID8gZGR4WzBdIDogKHlNYWpvciA/IGRkeFsxXSA6IGRkeFsyXSk7XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQgZG1keSA9IHhNYWpvciA/IGRkeVswXSA6
ICh5TWFqb3IgPyBkZHlbMV0gOiBkZHlbMl0pO1xuIjsKKyAgICAgICAgICAgICAgICAvLyBOb3cg
ZGV0ZXJtaW5lIHRoZSBkZXJpdmF0aXZlcyBvZiB0aGUgZmFjZSBjb29yZGluYXRlcywgdXNpbmcg
dGhlCisgICAgICAgICAgICAgICAgLy8gZGVyaXZhdGl2ZXMgY2FsY3VsYXRlZCBhYm92ZS4KKyAg
ICAgICAgICAgICAgICAvLyBkIC8gZHggKHUoeCkgKiAwLjUgLyBtKHgpICsgMC41KQorICAgICAg
ICAgICAgICAgIC8vID0gMC41ICogKG0oeCkgKiB1Jyh4KSAtIHUoeCkgKiBtJyh4KSkgLyBtKHgp
XjIKKyAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICBmbG9hdCBkZmFjZXhkeCA9IDAuNWYgKiAo
bSAqIGR1ZHggLSB1ICogZG1keCkgLyAobSAqIG0pO1xuIgorICAgICAgICAgICAgICAgICAgICAg
ICAiICAgIGZsb2F0IGRmYWNleWR4ID0gMC41ZiAqIChtICogZHZkeCAtIHYgKiBkbWR4KSAvICht
ICogbSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQgZGZhY2V4ZHkgPSAw
LjVmICogKG0gKiBkdWR5IC0gdSAqIGRtZHkpIC8gKG0gKiBtKTtcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgIiAgICBmbG9hdCBkZmFjZXlkeSA9IDAuNWYgKiAobSAqIGR2ZHkgLSB2ICogZG1k
eSkgLyAobSAqIG0pO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0MiBzaXpl
VmVjID0gZmxvYXQyKHdpZHRoLCBoZWlnaHQpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAi
ICAgIGZsb2F0MiBmYWNlZGR4ID0gZmxvYXQyKGRmYWNleGR4LCBkZmFjZXlkeCkgKiBzaXplVmVj
O1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0MiBmYWNlZGR5ID0gZmxvYXQy
KGRmYWNleGR5LCBkZmFjZXlkeSkgKiBzaXplVmVjO1xuIjsKKyAgICAgICAgICAgICAgICAvLyBP
cHRpbWl6YXRpb246IGluc3RlYWQgb2Y6IGxvZzIobWF4KGxlbmd0aChmYWNlZGR4KSwgbGVuZ3Ro
KGZhY2VkZHkpKSkKKyAgICAgICAgICAgICAgICAvLyB3ZSBjb21wdXRlOiBsb2cyKG1heChsZW5n
dGgoZmFjZWRkeCleMiwgbGVuZ3RoKGZhY2VkZHkpXjIpKSAvIDIKKyAgICAgICAgICAgICAgICBv
dXQgPDwgIiAgICBmbG9hdCBsZW5ndGhmYWNlZGR4MiA9IGRvdChmYWNlZGR4LCBmYWNlZGR4KTtc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdCBsZW5ndGhmYWNlZGR5MiA9IGRv
dChmYWNlZGR5LCBmYWNlZGR5KTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9h
dCBsb2QgPSBsb2cyKG1heChsZW5ndGhmYWNlZGR4MiwgbGVuZ3RoZmFjZWRkeTIpKSAqIDAuNWY7
XG4iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgb3V0IDw8ICIgICAgbWlwID0gdWludCht
aW4obWF4KHJvdW5kKGxvZCksIDApLCBsZXZlbHMgLSAxKSk7XG4iCisgICAgICAgICAgICAgICAg
PDwgIiAgICAiIDw8IHRleHR1cmVSZWZlcmVuY2UKKyAgICAgICAgICAgICAgICA8PCAiLkdldERp
bWVuc2lvbnMobWlwLCB3aWR0aCwgaGVpZ2h0LCBsYXllcnMsIGxldmVscyk7XG4iOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gQ29udmVydCBmcm9tIG5vcm1hbGl6ZWQgZmxvYXRpbmctcG9pbnQg
dG8gaW50ZWdlcgorICAgICAgICAqdGV4Q29vcmRYID0gImludChmbG9vcih3aWR0aCAqIGZyYWMo
IiArICp0ZXhDb29yZFggKyAiKSkpIjsKKyAgICAgICAgKnRleENvb3JkWSA9ICJpbnQoZmxvb3Io
aGVpZ2h0ICogZnJhYygiICsgKnRleENvb3JkWSArICIpKSkiOworICAgICAgICAqdGV4Q29vcmRa
ID0gImZhY2UiOworICAgIH0KKyAgICBlbHNlIGlmICh0ZXh0dXJlRnVuY3Rpb24ubWV0aG9kICE9
IFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbjo6RkVUQ0gpCisgICAgeworICAg
ICAgICBpZiAoSXNTYW1wbGVyMkQodGV4dHVyZUZ1bmN0aW9uLnNhbXBsZXIpKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAoSXNTYW1wbGVyQXJyYXkodGV4dHVyZUZ1bmN0aW9uLnNhbXBsZXIp
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIGZsb2F0IHdpZHRo
OyBmbG9hdCBoZWlnaHQ7IGZsb2F0IGxheWVyczsgZmxvYXQgbGV2ZWxzO1xuIjsKKworICAgICAg
ICAgICAgICAgIGlmICh0ZXh0dXJlRnVuY3Rpb24ubWV0aG9kID09IFRleHR1cmVGdW5jdGlvbkhM
U0w6OlRleHR1cmVGdW5jdGlvbjo6TE9EMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIG91dCA8PCAiICAgIHVpbnQgbWlwID0gMDtcbiI7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRleHR1cmVGdW5jdGlvbi5tZXRob2QgPT0gVGV4
dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0aW9uOjpMT0QwQklBUykKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIHVpbnQgbWlwID0gYmlhcztc
biI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB7CisKKyAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgIiA8PCB0ZXh0dXJlUmVm
ZXJlbmNlCisgICAgICAgICAgICAgICAgICAgICAgICA8PCAiLkdldERpbWVuc2lvbnMoMCwgd2lk
dGgsIGhlaWdodCwgbGF5ZXJzLCBsZXZlbHMpO1xuIjsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KHRleHR1cmVGdW5jdGlvbi5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1
bmN0aW9uOjpJTVBMSUNJVCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZUZ1bmN0
aW9uLm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVuY3Rpb246OkJJQVMp
CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAi
ICAgIGZsb2F0MiB0U2l6ZWQgPSBmbG9hdDIodC54ICogd2lkdGgsIHQueSAqIGhlaWdodCk7XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdCBkeCA9IGxlbmd0aChk
ZHgodFNpemVkKSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9h
dCBkeSA9IGxlbmd0aChkZHkodFNpemVkKSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiAgICBmbG9hdCBsb2QgPSBsb2cyKG1heChkeCwgZHkpKTtcbiI7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICh0ZXh0dXJlRnVuY3Rpb24ubWV0aG9kID09IFRleHR1cmVGdW5j
dGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbjo6QklBUykKKyAgICAgICAgICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICBsb2QgKz0gYmlhcztc
biI7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9PSBUZXh0
dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVuY3Rpb246OkdSQUQpCisgICAgICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIGZsb2F0MiBzaXplVmVj
ID0gZmxvYXQyKHdpZHRoLCBoZWlnaHQpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIgICAgZmxvYXQyIHNpemVEZHggPSBkZHggKiBzaXplVmVjO1xuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQyIHNpemVEZHkgPSBkZHkgKiBzaXplVmVjO1xu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQgbG9kID0gbG9nMiht
YXgoZG90KHNpemVEZHgsIHNpemVEZHgpLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImRvdChzaXplRGR5LCBzaXplRGR5KSkpICogMC41ZjtcbiI7CisgICAgICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICB1aW50IG1pcCA9IHVpbnQo
bWluKG1heChyb3VuZChsb2QpLCAwKSwgbGV2ZWxzIC0gMSkpO1xuIjsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICAiIDw8IHRleHR1cmVSZWZlcmVuY2UK
KyAgICAgICAgICAgICAgICAgICAgPDwgIi5HZXREaW1lbnNpb25zKG1pcCwgd2lkdGgsIGhlaWdo
dCwgbGF5ZXJzLCBsZXZlbHMpO1xuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICBmbG9hdCB3aWR0aDsg
ZmxvYXQgaGVpZ2h0OyBmbG9hdCBsZXZlbHM7XG4iOworCisgICAgICAgICAgICAgICAgaWYgKHRl
eHR1cmVGdW5jdGlvbi5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0
aW9uOjpMT0QwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0IDw8
ICIgICAgdWludCBtaXAgPSAwO1xuIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgZWxzZSBpZiAodGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb25ITFNM
OjpUZXh0dXJlRnVuY3Rpb246OkxPRDBCSUFTKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgb3V0IDw8ICIgICAgdWludCBtaXAgPSBiaWFzO1xuIjsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgb3V0IDw8ICIgICAgIiA8PCB0ZXh0dXJlUmVmZXJlbmNlCisgICAgICAgICAg
ICAgICAgICAgICAgICA8PCAiLkdldERpbWVuc2lvbnMoMCwgd2lkdGgsIGhlaWdodCwgbGV2ZWxz
KTtcbiI7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRleHR1cmVGdW5jdGlvbi5tZXRob2Qg
PT0gVGV4dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0aW9uOjpJTVBMSUNJVCB8fAorICAg
ICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9PSBUZXh0dXJlRnVu
Y3Rpb25ITFNMOjpUZXh0dXJlRnVuY3Rpb246OkJJQVMpCisgICAgICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIGZsb2F0MiB0U2l6ZWQgPSBmbG9h
dDIodC54ICogd2lkdGgsIHQueSAqIGhlaWdodCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIiAgICBmbG9hdCBkeCA9IGxlbmd0aChkZHgodFNpemVkKSk7XG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdCBkeSA9IGxlbmd0aChkZHkodFNpemVk
KSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdCBsb2QgPSBs
b2cyKG1heChkeCwgZHkpKTtcbiI7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXh0
dXJlRnVuY3Rpb24ubWV0aG9kID09IFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlv
bjo6QklBUykKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvdXQgPDwgIiAgICBsb2QgKz0gYmlhcztcbiI7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAodGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJl
RnVuY3Rpb246OkdSQUQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG91dCA8PCAiICAgIGZsb2F0MiBzaXplVmVjID0gZmxvYXQyKHdpZHRoLCBoZWlnaHQp
O1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQyIHNpemVEZHgg
PSBkZHggKiBzaXplVmVjO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAg
ZmxvYXQyIHNpemVEZHkgPSBkZHkgKiBzaXplVmVjO1xuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIgICAgZmxvYXQgbG9kID0gbG9nMihtYXgoZG90KHNpemVEZHgsIHNpemVEZHgp
LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvdChzaXplRGR5LCBzaXplRGR5
KSkpICogMC41ZjtcbiI7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
ICAgICBvdXQgPDwgIiAgICB1aW50IG1pcCA9IHVpbnQobWluKG1heChyb3VuZChsb2QpLCAwKSwg
bGV2ZWxzIC0gMSkpO1xuIjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBv
dXQgPDwgIiAgICAiIDw8IHRleHR1cmVSZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAgPDwg
Ii5HZXREaW1lbnNpb25zKG1pcCwgd2lkdGgsIGhlaWdodCwgbGV2ZWxzKTtcbiI7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoSXNTYW1wbGVyM0QodGV4dHVyZUZ1
bmN0aW9uLnNhbXBsZXIpKQorICAgICAgICB7CisgICAgICAgICAgICBvdXQgPDwgIiAgICBmbG9h
dCB3aWR0aDsgZmxvYXQgaGVpZ2h0OyBmbG9hdCBkZXB0aDsgZmxvYXQgbGV2ZWxzO1xuIjsKKwor
ICAgICAgICAgICAgaWYgKHRleHR1cmVGdW5jdGlvbi5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9u
SExTTDo6VGV4dHVyZUZ1bmN0aW9uOjpMT0QwKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIG91dCA8PCAiICAgIHVpbnQgbWlwID0gMDtcbiI7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlIGlmICh0ZXh0dXJlRnVuY3Rpb24ubWV0aG9kID09IFRleHR1cmVGdW5jdGlvbkhM
U0w6OlRleHR1cmVGdW5jdGlvbjo6TE9EMEJJQVMpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgb3V0IDw8ICIgICAgdWludCBtaXAgPSBiaWFzO1xuIjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIiAg
ICAiIDw8IHRleHR1cmVSZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAgPDwgIi5HZXREaW1l
bnNpb25zKDAsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBsZXZlbHMpO1xuIjsKKworICAgICAgICAg
ICAgICAgIGlmICh0ZXh0dXJlRnVuY3Rpb24ubWV0aG9kID09IFRleHR1cmVGdW5jdGlvbkhMU0w6
OlRleHR1cmVGdW5jdGlvbjo6SU1QTElDSVQgfHwKKyAgICAgICAgICAgICAgICAgICAgdGV4dHVy
ZUZ1bmN0aW9uLm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVuY3Rpb246
OkJJQVMpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiAg
ICBmbG9hdDMgdFNpemVkID0gZmxvYXQzKHQueCAqIHdpZHRoLCB0LnkgKiBoZWlnaHQsIHQueiAq
IGRlcHRoKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQgZHggPSBs
ZW5ndGgoZGR4KHRTaXplZCkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBm
bG9hdCBkeSA9IGxlbmd0aChkZHkodFNpemVkKSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiICAgIGZsb2F0IGxvZCA9IGxvZzIobWF4KGR4LCBkeSkpO1xuIjsKKworICAgICAgICAg
ICAgICAgICAgICBpZiAodGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb25I
TFNMOjpUZXh0dXJlRnVuY3Rpb246OkJJQVMpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIGxvZCArPSBiaWFzO1xuIjsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlm
ICh0ZXh0dXJlRnVuY3Rpb24ubWV0aG9kID09IFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVG
dW5jdGlvbjo6R1JBRCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG91
dCA8PCAiICAgIGZsb2F0MyBzaXplVmVjID0gZmxvYXQzKHdpZHRoLCBoZWlnaHQsIGRlcHRoKTtc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQzIHNpemVEZHggPSBkZHgg
KiBzaXplVmVjO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdDMgc2l6
ZURkeSA9IGRkeSAqIHNpemVWZWM7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAg
IGZsb2F0IGxvZCA9IGxvZzIobWF4KGRvdChzaXplRGR4LCBzaXplRGR4KSwgZG90KHNpemVEZHks
ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaXplRGR5KSkpICogMC41ZjtcbiI7Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgdWludCBtaXAg
PSB1aW50KG1pbihtYXgocm91bmQobG9kKSwgMCksIGxldmVscyAtIDEpKTtcbiI7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIG91dCA8PCAiICAgICIgPDwgdGV4dHVyZVJlZmVyZW5jZQor
ICAgICAgICAgICAgICAgIDw8ICIuR2V0RGltZW5zaW9ucyhtaXAsIHdpZHRoLCBoZWlnaHQsIGRl
cHRoLCBsZXZlbHMpO1xuIjsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOworCisgICAgICAgIE91dHB1dEludFRleENvb3JkV3JhcHMob3V0LCB0ZXh0
dXJlRnVuY3Rpb24sIHRleENvb3JkWCwgdGV4Q29vcmRZLCB0ZXhDb29yZFopOworICAgIH0KK30K
Kwordm9pZCBPdXRwdXRUZXh0dXJlU2FtcGxlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQoCisgICAg
VEluZm9TaW5rQmFzZSAmb3V0LAorICAgIGNvbnN0IFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1
cmVGdW5jdGlvbiAmdGV4dHVyZUZ1bmN0aW9uLAorICAgIGNvbnN0IFNoU2hhZGVyT3V0cHV0IG91
dHB1dFR5cGUsCisgICAgY29uc3QgVFN0cmluZyAmdGV4dHVyZVJlZmVyZW5jZSwKKyAgICBjb25z
dCBUU3RyaW5nICZzYW1wbGVyUmVmZXJlbmNlLAorICAgIGNvbnN0IFRTdHJpbmcgJnRleENvb3Jk
WCwKKyAgICBjb25zdCBUU3RyaW5nICZ0ZXhDb29yZFksCisgICAgY29uc3QgVFN0cmluZyAmdGV4
Q29vcmRaKQoreworICAgIG91dCA8PCAiICAgIHJldHVybiAiOworCisgICAgLy8gSExTTCBpbnRy
aW5zaWMKKyAgICBpZiAob3V0cHV0VHlwZSA9PSBTSF9ITFNMXzNfMF9PVVRQVVQpCisgICAgewor
ICAgICAgICBzd2l0Y2ggKHRleHR1cmVGdW5jdGlvbi5zYW1wbGVyKQorICAgICAgICB7CisgICAg
ICAgICAgICBjYXNlIEVidFNhbXBsZXIyRDoKKyAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlckV4
dGVybmFsT0VTOgorICAgICAgICAgICAgICAgIG91dCA8PCAidGV4MkQiOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZToKKyAgICAgICAgICAg
ICAgICBvdXQgPDwgInRleENVQkUiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisK
KyAgICAgICAgc3dpdGNoICh0ZXh0dXJlRnVuY3Rpb24ubWV0aG9kKQorICAgICAgICB7CisgICAg
ICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbjo6SU1QTElD
SVQ6CisgICAgICAgICAgICAgICAgb3V0IDw8ICIoIiA8PCBzYW1wbGVyUmVmZXJlbmNlIDw8ICIs
ICI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5j
dGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbjo6QklBUzoKKyAgICAgICAgICAgICAgICBvdXQgPDwg
ImJpYXMoIiA8PCBzYW1wbGVyUmVmZXJlbmNlIDw8ICIsICI7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlv
bjo6TE9EOgorICAgICAgICAgICAgICAgIG91dCA8PCAibG9kKCIgPDwgc2FtcGxlclJlZmVyZW5j
ZSA8PCAiLCAiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBUZXh0
dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVuY3Rpb246OkxPRDA6CisgICAgICAgICAgICAgICAg
b3V0IDw8ICJsb2QoIiA8PCBzYW1wbGVyUmVmZXJlbmNlIDw8ICIsICI7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVG
dW5jdGlvbjo6TE9EMEJJQVM6CisgICAgICAgICAgICAgICAgb3V0IDw8ICJsb2QoIiA8PCBzYW1w
bGVyUmVmZXJlbmNlIDw8ICIsICI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgZWxzZSBpZiAob3V0cHV0VHlwZSA9PSBTSF9ITFNMXzRfMV9PVVRQVVQgfHwgb3V0
cHV0VHlwZSA9PSBTSF9ITFNMXzRfMF9GTDlfM19PVVRQVVQpCisgICAgeworICAgICAgICBPdXRw
dXRITFNMNFNhbXBsZUZ1bmN0aW9uUHJlZml4KG91dCwgdGV4dHVyZUZ1bmN0aW9uLCB0ZXh0dXJl
UmVmZXJlbmNlLCBzYW1wbGVyUmVmZXJlbmNlKTsKKyAgICB9CisgICAgZWxzZQorICAgICAgICBV
TlJFQUNIQUJMRSgpOworCisgICAgY29uc3QgaW50IGhsc2xDb29yZHMgPSBHZXRITFNMQ29vcmRD
b3VudCh0ZXh0dXJlRnVuY3Rpb24sIG91dHB1dFR5cGUpOworCisgICAgb3V0IDw8IEdldFNhbXBs
ZXJDb29yZGluYXRlVHlwZVN0cmluZyh0ZXh0dXJlRnVuY3Rpb24sIGhsc2xDb29yZHMpIDw8ICIo
IiA8PCB0ZXhDb29yZFggPDwgIiwgIgorICAgICAgICA8PCB0ZXhDb29yZFk7CisKKyAgICBpZiAo
b3V0cHV0VHlwZSA9PSBTSF9ITFNMXzNfMF9PVVRQVVQpCisgICAgeworICAgICAgICBpZiAoaGxz
bENvb3JkcyA+PSAzKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAodGV4dHVyZUZ1bmN0aW9u
LmNvb3JkcyA8IDMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICIsIDAi
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIG91dCA8PCAiLCAiIDw8IHRleENvb3JkWjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChobHNsQ29vcmRzID09IDQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN3aXRjaCAodGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbjo6QklB
UzoKKyAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIsIGJpYXMiOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbkhMU0w6OlRl
eHR1cmVGdW5jdGlvbjo6TE9EOgorICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiwgbG9kIjsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBUZXh0dXJl
RnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVuY3Rpb246OkxPRDA6CisgICAgICAgICAgICAgICAgICAg
IG91dCA8PCAiLCAwIjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgY2FzZSBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVuY3Rpb246OkxPRDBCSUFTOgor
ICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiwgYmlhcyI7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBvdXQgPDwg
IikiOworICAgIH0KKyAgICBlbHNlIGlmIChvdXRwdXRUeXBlID09IFNIX0hMU0xfNF8xX09VVFBV
VCB8fCBvdXRwdXRUeXBlID09IFNIX0hMU0xfNF8wX0ZMOV8zX09VVFBVVCkKKyAgICB7CisgICAg
ICAgIGlmIChobHNsQ29vcmRzID49IDMpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCgh
SXNJbnRlZ2VyU2FtcGxlcih0ZXh0dXJlRnVuY3Rpb24uc2FtcGxlcikgfHwKKyAgICAgICAgICAg
ICAgICAgICAhSXNTYW1wbGVyQ3ViZSh0ZXh0dXJlRnVuY3Rpb24uc2FtcGxlcikgfHwgdGV4Q29v
cmRaID09ICJmYWNlIik7CisgICAgICAgICAgICBvdXQgPDwgIiwgIiA8PCB0ZXhDb29yZFo7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAodGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9PSBUZXh0dXJl
RnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVuY3Rpb246OkdSQUQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmIChJc0ludGVnZXJTYW1wbGVyKHRleHR1cmVGdW5jdGlvbi5zYW1wbGVyKSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIiwgbWlwKSI7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBlbHNlIGlmIChJc1NoYWRvd1NhbXBsZXIodGV4dHVyZUZ1bmN0aW9uLnNh
bXBsZXIpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIENvbXBhcmUgdmFsdWUK
KyAgICAgICAgICAgICAgICBpZiAodGV4dHVyZUZ1bmN0aW9uLnByb2opCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAvLyBBY2NvcmRpbmcgdG8gRVNTTCAzLjAwLjQgc2Vj
IDguOCBwOTUgb24gdGV4dHVyZVByb2o6CisgICAgICAgICAgICAgICAgICAgIC8vIFRoZSByZXN1
bHRpbmcgdGhpcmQgY29tcG9uZW50IG9mIFAnIGluIHRoZSBzaGFkb3cgZm9ybXMgaXMgdXNlZCBh
cworICAgICAgICAgICAgICAgICAgICAvLyBEcmVmCisgICAgICAgICAgICAgICAgICAgIG91dCA8
PCAiKSwgIiA8PCB0ZXhDb29yZFo7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodGV4
dHVyZUZ1bmN0aW9uLmNvb3JkcykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAi
KSwgdC56IjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwg
IiksIHQudyI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgb3V0IDw8ICIpLCBkZHgsIGRkeSI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZSBpZiAoSXNJbnRlZ2VyU2FtcGxlcih0ZXh0dXJlRnVuY3Rpb24uc2FtcGxlcikgfHwK
KyAgICAgICAgICAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rp
b25ITFNMOjpUZXh0dXJlRnVuY3Rpb246OkZFVENIKQorICAgICAgICB7CisgICAgICAgICAgICBv
dXQgPDwgIiwgbWlwKSI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoSXNTaGFkb3dTYW1w
bGVyKHRleHR1cmVGdW5jdGlvbi5zYW1wbGVyKSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8g
Q29tcGFyZSB2YWx1ZQorICAgICAgICAgICAgaWYgKHRleHR1cmVGdW5jdGlvbi5wcm9qKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIEFjY29yZGluZyB0byBFU1NMIDMuMDAuNCBz
ZWMgOC44IHA5NSBvbiB0ZXh0dXJlUHJvajoKKyAgICAgICAgICAgICAgICAvLyBUaGUgcmVzdWx0
aW5nIHRoaXJkIGNvbXBvbmVudCBvZiBQJyBpbiB0aGUgc2hhZG93IGZvcm1zIGlzIHVzZWQgYXMg
RHJlZgorICAgICAgICAgICAgICAgIG91dCA8PCAiKSwgIiA8PCB0ZXhDb29yZFo7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
c3dpdGNoICh0ZXh0dXJlRnVuY3Rpb24uY29vcmRzKQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIp
LCB0LnoiOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiKSwgdC53IjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKHRleHR1cmVGdW5jdGlvbi5tZXRob2QpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVuY3Rp
b246OklNUExJQ0lUOgorICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIikiOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbkhM
U0w6OlRleHR1cmVGdW5jdGlvbjo6QklBUzoKKyAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIp
LCBiaWFzIjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVuY3Rpb246OkxPRDoKKyAgICAgICAgICAg
ICAgICAgICAgb3V0IDw8ICIpLCBsb2QiOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbjo6
TE9EMDoKKyAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIpLCAwIjsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb25ITFNMOjpU
ZXh0dXJlRnVuY3Rpb246OkxPRDBCSUFTOgorICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiks
IGJpYXMiOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKHRleHR1cmVGdW5jdGlvbi5vZmZzZXQgJiYKKyAgICAg
ICAgICAgICghSXNJbnRlZ2VyU2FtcGxlcih0ZXh0dXJlRnVuY3Rpb24uc2FtcGxlcikgfHwKKyAg
ICAgICAgICAgICB0ZXh0dXJlRnVuY3Rpb24ubWV0aG9kID09IFRleHR1cmVGdW5jdGlvbkhMU0w6
OlRleHR1cmVGdW5jdGlvbjo6RkVUQ0gpKQorICAgICAgICB7CisgICAgICAgICAgICBvdXQgPDwg
Iiwgb2Zmc2V0IjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgICAgIFVOUkVBQ0hB
QkxFKCk7CisKKyAgICBvdXQgPDwgIik7XG4iOyAgLy8gQ2xvc2UgdGhlIHNhbXBsZSBmdW5jdGlv
biBjYWxsIGFuZCByZXR1cm4gc3RhdGVtZW50Cit9CisKK30gIC8vIEFub255bW91cyBuYW1lc3Bh
Y2UKKworVFN0cmluZyBUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVuY3Rpb246Om5hbWUo
KSBjb25zdAoreworICAgIFRTdHJpbmcgbmFtZSA9ICJnbF90ZXh0dXJlIjsKKworICAgIC8vIFdl
IG5lZWQgdG8gaW5jbHVkZSBmdWxsIHRoZSBzYW1wbGVyIHR5cGUgaW4gdGhlIGZ1bmN0aW9uIG5h
bWUgdG8gbWFrZSB0aGUgc2lnbmF0dXJlIHVuaXF1ZQorICAgIC8vIG9uIEQzRDExLCB3aGVyZSBz
YW1wbGVycyBhcmUgcGFzc2VkIHRvIHRleHR1cmUgZnVuY3Rpb25zIGFzIGluZGljZXMuCisgICAg
bmFtZSArPSBUZXh0dXJlVHlwZVN1ZmZpeCh0aGlzLT5zYW1wbGVyKTsKKworICAgIGlmIChwcm9q
KQorICAgIHsKKyAgICAgICAgbmFtZSArPSAiUHJvaiI7CisgICAgfQorCisgICAgaWYgKG9mZnNl
dCkKKyAgICB7CisgICAgICAgIG5hbWUgKz0gIk9mZnNldCI7CisgICAgfQorCisgICAgc3dpdGNo
IChtZXRob2QpCisgICAgeworICAgICAgICBjYXNlIElNUExJQ0lUOgorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgQklBUzoKKyAgICAgICAgICAgIGJyZWFrOyAgLy8gRXh0cmEgcGFy
YW1ldGVyIG1ha2VzIHRoZSBzaWduYXR1cmUgdW5pcXVlCisgICAgICAgIGNhc2UgTE9EOgorICAg
ICAgICAgICAgbmFtZSArPSAiTG9kIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IExPRDA6CisgICAgICAgICAgICBuYW1lICs9ICJMb2QwIjsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIExPRDBCSUFTOgorICAgICAgICAgICAgbmFtZSArPSAiTG9kMCI7CisgICAg
ICAgICAgICBicmVhazsgIC8vIEV4dHJhIHBhcmFtZXRlciBtYWtlcyB0aGUgc2lnbmF0dXJlIHVu
aXF1ZQorICAgICAgICBjYXNlIFNJWkU6CisgICAgICAgICAgICBuYW1lICs9ICJTaXplIjsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZFVENIOgorICAgICAgICAgICAgbmFtZSAr
PSAiRmV0Y2giOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1JBRDoKKyAgICAg
ICAgICAgIG5hbWUgKz0gIkdyYWQiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgIH0KKworICAgIHJldHVybiBuYW1l
OworfQorCitjb25zdCBjaGFyICpUZXh0dXJlRnVuY3Rpb25ITFNMOjpUZXh0dXJlRnVuY3Rpb246
OmdldFJldHVyblR5cGUoKSBjb25zdAoreworICAgIGlmIChtZXRob2QgPT0gVGV4dHVyZUZ1bmN0
aW9uOjpTSVpFKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChzYW1wbGVyKQorICAgICAgICB7Cisg
ICAgICAgICAgICBjYXNlIEVidFNhbXBsZXIyRDoKKyAgICAgICAgICAgIGNhc2UgRWJ0SVNhbXBs
ZXIyRDoKKyAgICAgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXIyRDoKKyAgICAgICAgICAgIGNhc2Ug
RWJ0U2FtcGxlcjJEU2hhZG93OgorICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZToKKyAg
ICAgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXJDdWJlOgorICAgICAgICAgICAgY2FzZSBFYnRVU2Ft
cGxlckN1YmU6CisgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXJDdWJlU2hhZG93OgorICAgICAg
ICAgICAgY2FzZSBFYnRTYW1wbGVyRXh0ZXJuYWxPRVM6CisgICAgICAgICAgICAgICAgcmV0dXJu
ICJpbnQyIjsKKyAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjNEOgorICAgICAgICAgICAgY2Fz
ZSBFYnRJU2FtcGxlcjNEOgorICAgICAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjNEOgorICAgICAg
ICAgICAgY2FzZSBFYnRTYW1wbGVyMkRBcnJheToKKyAgICAgICAgICAgIGNhc2UgRWJ0SVNhbXBs
ZXIyREFycmF5OgorICAgICAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjJEQXJyYXk6CisgICAgICAg
ICAgICBjYXNlIEVidFNhbXBsZXIyREFycmF5U2hhZG93OgorICAgICAgICAgICAgICAgIHJldHVy
biAiaW50MyI7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFVOUkVBQ0hB
QkxFKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSAgLy8gU2FtcGxpbmcgZnVuY3Rpb24K
KyAgICB7CisgICAgICAgIHN3aXRjaCAoc2FtcGxlcikKKyAgICAgICAgeworICAgICAgICAgICAg
Y2FzZSBFYnRTYW1wbGVyMkQ6CisgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXIzRDoKKyAgICAg
ICAgICAgIGNhc2UgRWJ0U2FtcGxlckN1YmU6CisgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXIy
REFycmF5OgorICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyRXh0ZXJuYWxPRVM6CisgICAgICAg
ICAgICAgICAgcmV0dXJuICJmbG9hdDQiOworICAgICAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjJE
OgorICAgICAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjNEOgorICAgICAgICAgICAgY2FzZSBFYnRJ
U2FtcGxlckN1YmU6CisgICAgICAgICAgICBjYXNlIEVidElTYW1wbGVyMkRBcnJheToKKyAgICAg
ICAgICAgICAgICByZXR1cm4gImludDQiOworICAgICAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjJE
OgorICAgICAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjNEOgorICAgICAgICAgICAgY2FzZSBFYnRV
U2FtcGxlckN1YmU6CisgICAgICAgICAgICBjYXNlIEVidFVTYW1wbGVyMkRBcnJheToKKyAgICAg
ICAgICAgICAgICByZXR1cm4gInVpbnQ0IjsKKyAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJE
U2hhZG93OgorICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZVNoYWRvdzoKKyAgICAgICAg
ICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXlTaGFkb3c6CisgICAgICAgICAgICAgICAgcmV0dXJu
ICJmbG9hdCI7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFVOUkVBQ0hB
QkxFKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuICIiOworfQorCitib29sIFRleHR1
cmVGdW5jdGlvbkhMU0w6OlRleHR1cmVGdW5jdGlvbjo6b3BlcmF0b3I8KGNvbnN0IFRleHR1cmVG
dW5jdGlvbiAmcmhzKSBjb25zdAoreworICAgIHJldHVybiBzdGQ6OnRpZShzYW1wbGVyLCBjb29y
ZHMsIHByb2osIG9mZnNldCwgbWV0aG9kKSA8CisgICAgICAgICAgIHN0ZDo6dGllKHJocy5zYW1w
bGVyLCByaHMuY29vcmRzLCByaHMucHJvaiwgcmhzLm9mZnNldCwgcmhzLm1ldGhvZCk7Cit9CisK
K1RTdHJpbmcgVGV4dHVyZUZ1bmN0aW9uSExTTDo6dXNlVGV4dHVyZUZ1bmN0aW9uKGNvbnN0IFRT
dHJpbmcgJm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUQmFzaWNUeXBlIHNhbXBsZXJUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGNvb3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBhcmd1bWVudENvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBsb2QwLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2g6OkdMZW51bSBzaGFk
ZXJUeXBlKQoreworICAgIFRleHR1cmVGdW5jdGlvbiB0ZXh0dXJlRnVuY3Rpb247CisgICAgdGV4
dHVyZUZ1bmN0aW9uLnNhbXBsZXIgPSBzYW1wbGVyVHlwZTsKKyAgICB0ZXh0dXJlRnVuY3Rpb24u
Y29vcmRzICA9IGNvb3JkczsKKyAgICB0ZXh0dXJlRnVuY3Rpb24ubWV0aG9kICA9IFRleHR1cmVG
dW5jdGlvbjo6SU1QTElDSVQ7CisgICAgdGV4dHVyZUZ1bmN0aW9uLnByb2ogICAgPSBmYWxzZTsK
KyAgICB0ZXh0dXJlRnVuY3Rpb24ub2Zmc2V0ICA9IGZhbHNlOworCisgICAgaWYgKG5hbWUgPT0g
InRleHR1cmUyRCIgfHwgbmFtZSA9PSAidGV4dHVyZUN1YmUiIHx8IG5hbWUgPT0gInRleHR1cmUi
KQorICAgIHsKKyAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9IFRleHR1cmVGdW5jdGlv
bjo6SU1QTElDSVQ7CisgICAgfQorICAgIGVsc2UgaWYgKG5hbWUgPT0gInRleHR1cmUyRFByb2oi
IHx8IG5hbWUgPT0gInRleHR1cmVQcm9qIikKKyAgICB7CisgICAgICAgIHRleHR1cmVGdW5jdGlv
bi5tZXRob2QgPSBUZXh0dXJlRnVuY3Rpb246OklNUExJQ0lUOworICAgICAgICB0ZXh0dXJlRnVu
Y3Rpb24ucHJvaiAgID0gdHJ1ZTsKKyAgICB9CisgICAgZWxzZSBpZiAobmFtZSA9PSAidGV4dHVy
ZTJETG9kIiB8fCBuYW1lID09ICJ0ZXh0dXJlQ3ViZUxvZCIgfHwgbmFtZSA9PSAidGV4dHVyZUxv
ZCIgfHwKKyAgICAgICAgICAgICBuYW1lID09ICJ0ZXh0dXJlMkRMb2RFWFQiIHx8IG5hbWUgPT0g
InRleHR1cmVDdWJlTG9kRVhUIikKKyAgICB7CisgICAgICAgIHRleHR1cmVGdW5jdGlvbi5tZXRo
b2QgPSBUZXh0dXJlRnVuY3Rpb246OkxPRDsKKyAgICB9CisgICAgZWxzZSBpZiAobmFtZSA9PSAi
dGV4dHVyZTJEUHJvakxvZCIgfHwgbmFtZSA9PSAidGV4dHVyZVByb2pMb2QiIHx8CisgICAgICAg
ICAgICAgbmFtZSA9PSAidGV4dHVyZTJEUHJvakxvZEVYVCIpCisgICAgeworICAgICAgICB0ZXh0
dXJlRnVuY3Rpb24ubWV0aG9kID0gVGV4dHVyZUZ1bmN0aW9uOjpMT0Q7CisgICAgICAgIHRleHR1
cmVGdW5jdGlvbi5wcm9qICAgPSB0cnVlOworICAgIH0KKyAgICBlbHNlIGlmIChuYW1lID09ICJ0
ZXh0dXJlU2l6ZSIpCisgICAgeworICAgICAgICB0ZXh0dXJlRnVuY3Rpb24ubWV0aG9kID0gVGV4
dHVyZUZ1bmN0aW9uOjpTSVpFOworICAgIH0KKyAgICBlbHNlIGlmIChuYW1lID09ICJ0ZXh0dXJl
T2Zmc2V0IikKKyAgICB7CisgICAgICAgIHRleHR1cmVGdW5jdGlvbi5tZXRob2QgPSBUZXh0dXJl
RnVuY3Rpb246OklNUExJQ0lUOworICAgICAgICB0ZXh0dXJlRnVuY3Rpb24ub2Zmc2V0ID0gdHJ1
ZTsKKyAgICB9CisgICAgZWxzZSBpZiAobmFtZSA9PSAidGV4dHVyZVByb2pPZmZzZXQiKQorICAg
IHsKKyAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9IFRleHR1cmVGdW5jdGlvbjo6SU1Q
TElDSVQ7CisgICAgICAgIHRleHR1cmVGdW5jdGlvbi5vZmZzZXQgPSB0cnVlOworICAgICAgICB0
ZXh0dXJlRnVuY3Rpb24ucHJvaiAgID0gdHJ1ZTsKKyAgICB9CisgICAgZWxzZSBpZiAobmFtZSA9
PSAidGV4dHVyZUxvZE9mZnNldCIpCisgICAgeworICAgICAgICB0ZXh0dXJlRnVuY3Rpb24ubWV0
aG9kID0gVGV4dHVyZUZ1bmN0aW9uOjpMT0Q7CisgICAgICAgIHRleHR1cmVGdW5jdGlvbi5vZmZz
ZXQgPSB0cnVlOworICAgIH0KKyAgICBlbHNlIGlmIChuYW1lID09ICJ0ZXh0dXJlUHJvakxvZE9m
ZnNldCIpCisgICAgeworICAgICAgICB0ZXh0dXJlRnVuY3Rpb24ubWV0aG9kID0gVGV4dHVyZUZ1
bmN0aW9uOjpMT0Q7CisgICAgICAgIHRleHR1cmVGdW5jdGlvbi5wcm9qICAgPSB0cnVlOworICAg
ICAgICB0ZXh0dXJlRnVuY3Rpb24ub2Zmc2V0ID0gdHJ1ZTsKKyAgICB9CisgICAgZWxzZSBpZiAo
bmFtZSA9PSAidGV4ZWxGZXRjaCIpCisgICAgeworICAgICAgICB0ZXh0dXJlRnVuY3Rpb24ubWV0
aG9kID0gVGV4dHVyZUZ1bmN0aW9uOjpGRVRDSDsKKyAgICB9CisgICAgZWxzZSBpZiAobmFtZSA9
PSAidGV4ZWxGZXRjaE9mZnNldCIpCisgICAgeworICAgICAgICB0ZXh0dXJlRnVuY3Rpb24ubWV0
aG9kID0gVGV4dHVyZUZ1bmN0aW9uOjpGRVRDSDsKKyAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLm9m
ZnNldCA9IHRydWU7CisgICAgfQorICAgIGVsc2UgaWYgKG5hbWUgPT0gInRleHR1cmVHcmFkIiB8
fCBuYW1lID09ICJ0ZXh0dXJlMkRHcmFkRVhUIikKKyAgICB7CisgICAgICAgIHRleHR1cmVGdW5j
dGlvbi5tZXRob2QgPSBUZXh0dXJlRnVuY3Rpb246OkdSQUQ7CisgICAgfQorICAgIGVsc2UgaWYg
KG5hbWUgPT0gInRleHR1cmVHcmFkT2Zmc2V0IikKKyAgICB7CisgICAgICAgIHRleHR1cmVGdW5j
dGlvbi5tZXRob2QgPSBUZXh0dXJlRnVuY3Rpb246OkdSQUQ7CisgICAgICAgIHRleHR1cmVGdW5j
dGlvbi5vZmZzZXQgPSB0cnVlOworICAgIH0KKyAgICBlbHNlIGlmIChuYW1lID09ICJ0ZXh0dXJl
UHJvakdyYWQiIHx8IG5hbWUgPT0gInRleHR1cmUyRFByb2pHcmFkRVhUIiB8fAorICAgICAgICAg
ICAgIG5hbWUgPT0gInRleHR1cmVDdWJlR3JhZEVYVCIpCisgICAgeworICAgICAgICB0ZXh0dXJl
RnVuY3Rpb24ubWV0aG9kID0gVGV4dHVyZUZ1bmN0aW9uOjpHUkFEOworICAgICAgICB0ZXh0dXJl
RnVuY3Rpb24ucHJvaiAgID0gdHJ1ZTsKKyAgICB9CisgICAgZWxzZSBpZiAobmFtZSA9PSAidGV4
dHVyZVByb2pHcmFkT2Zmc2V0IikKKyAgICB7CisgICAgICAgIHRleHR1cmVGdW5jdGlvbi5tZXRo
b2QgPSBUZXh0dXJlRnVuY3Rpb246OkdSQUQ7CisgICAgICAgIHRleHR1cmVGdW5jdGlvbi5wcm9q
ICAgPSB0cnVlOworICAgICAgICB0ZXh0dXJlRnVuY3Rpb24ub2Zmc2V0ID0gdHJ1ZTsKKyAgICB9
CisgICAgZWxzZQorICAgICAgICBVTlJFQUNIQUJMRSgpOworCisgICAgaWYgKHRleHR1cmVGdW5j
dGlvbi5tZXRob2QgPT0KKyAgICAgICAgVGV4dHVyZUZ1bmN0aW9uOjpJTVBMSUNJVCkgIC8vIENv
dWxkIHJlcXVpcmUgbG9kIDAgb3IgaGF2ZSBhIGJpYXMgYXJndW1lbnQKKyAgICB7CisgICAgICAg
IHNpemVfdCBtYW5kYXRvcnlBcmd1bWVudENvdW50ID0gMjsgIC8vIEFsbCBmdW5jdGlvbnMgaGF2
ZSBzYW1wbGVyIGFuZCBjb29yZGluYXRlIGFyZ3VtZW50cworCisgICAgICAgIGlmICh0ZXh0dXJl
RnVuY3Rpb24ub2Zmc2V0KQorICAgICAgICB7CisgICAgICAgICAgICBtYW5kYXRvcnlBcmd1bWVu
dENvdW50Kys7CisgICAgICAgIH0KKworICAgICAgICBib29sIGJpYXMgPSAoYXJndW1lbnRDb3Vu
dCA+IG1hbmRhdG9yeUFyZ3VtZW50Q291bnQpOyAgLy8gQmlhcyBhcmd1bWVudCBpcyBvcHRpb25h
bAorCisgICAgICAgIGlmIChsb2QwIHx8IHNoYWRlclR5cGUgPT0gR0xfVkVSVEVYX1NIQURFUikK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKGJpYXMpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9IFRleHR1cmVGdW5jdGlvbjo6TE9EMEJJ
QVM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9IFRleHR1cmVGdW5jdGlvbjo6TE9E
MDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChiaWFzKQorICAg
ICAgICB7CisgICAgICAgICAgICB0ZXh0dXJlRnVuY3Rpb24ubWV0aG9kID0gVGV4dHVyZUZ1bmN0
aW9uOjpCSUFTOworICAgICAgICB9CisgICAgfQorCisgICAgbVVzZXNUZXh0dXJlLmluc2VydCh0
ZXh0dXJlRnVuY3Rpb24pOworICAgIHJldHVybiB0ZXh0dXJlRnVuY3Rpb24ubmFtZSgpOworfQor
Cit2b2lkIFRleHR1cmVGdW5jdGlvbkhMU0w6OnRleHR1cmVGdW5jdGlvbkhlYWRlcihUSW5mb1Np
bmtCYXNlICZvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBTaFNoYWRlck91dHB1dCBvdXRwdXRUeXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBnZXREaW1lbnNpb25zSWdub3Jlc0Jh
c2VMZXZlbCkKK3sKKyAgICBmb3IgKGNvbnN0IFRleHR1cmVGdW5jdGlvbiAmdGV4dHVyZUZ1bmN0
aW9uIDogbVVzZXNUZXh0dXJlKQorICAgIHsKKyAgICAgICAgLy8gRnVuY3Rpb24gaGVhZGVyCisg
ICAgICAgIG91dCA8PCB0ZXh0dXJlRnVuY3Rpb24uZ2V0UmV0dXJuVHlwZSgpIDw8ICIgIiA8PCB0
ZXh0dXJlRnVuY3Rpb24ubmFtZSgpIDw8ICIoIjsKKworICAgICAgICBPdXRwdXRUZXh0dXJlRnVu
Y3Rpb25Bcmd1bWVudExpc3Qob3V0LCB0ZXh0dXJlRnVuY3Rpb24sIG91dHB1dFR5cGUpOworCisg
ICAgICAgIG91dCA8PCAiKVxuIgorICAgICAgICAgICAgICAgIntcbiI7CisKKyAgICAgICAgLy8g
SW4gc29tZSBjYXNlcyB3ZSB1c2UgYSB2YXJpYWJsZSB0byBzdG9yZSB0aGUgdGV4dHVyZS9zYW1w
bGVyIG9iamVjdHMsIGJ1dCB0byB3b3JrIGFyb3VuZAorICAgICAgICAvLyBhIEQzRDExIGNvbXBp
bGVyIGJ1ZyByZWxhdGVkIHRvIGRpc2NhcmQgaW5zaWRlIGEgbG9vcCB0aGF0IGlzIGNvbmRpdGlv
bmFsIG9uIHRleHR1cmUKKyAgICAgICAgLy8gc2FtcGxpbmcgd2UgbmVlZCB0byBjYWxsIHRoZSBm
dW5jdGlvbiBkaXJlY3RseSBvbiByZWZlcmVuY2VzIHRvIHRoZSB0ZXh0dXJlIGFuZCBzYW1wbGVy
CisgICAgICAgIC8vIGFycmF5cy4gVGhlIGJ1ZyB3YXMgZm91bmQgdXNpbmcgZEVRUC1HTEVTMy5m
dW5jdGlvbmFsLnNoYWRlcnMuZGlzY2FyZCpsb29wX3RleHR1cmUqCisgICAgICAgIC8vIHRlc3Rz
LgorICAgICAgICBUU3RyaW5nIHRleHR1cmVSZWZlcmVuY2U7CisgICAgICAgIFRTdHJpbmcgc2Ft
cGxlclJlZmVyZW5jZTsKKyAgICAgICAgR2V0VGV4dHVyZVJlZmVyZW5jZShvdXQsIHRleHR1cmVG
dW5jdGlvbiwgb3V0cHV0VHlwZSwgJnRleHR1cmVSZWZlcmVuY2UsICZzYW1wbGVyUmVmZXJlbmNl
KTsKKworICAgICAgICBpZiAodGV4dHVyZUZ1bmN0aW9uLm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rp
b246OlNJWkUpCisgICAgICAgIHsKKyAgICAgICAgICAgIE91dHB1dFRleHR1cmVTaXplRnVuY3Rp
b25Cb2R5KG91dCwgdGV4dHVyZUZ1bmN0aW9uLCB0ZXh0dXJlUmVmZXJlbmNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RGltZW5zaW9uc0lnbm9yZXNCYXNl
TGV2ZWwpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAg
VFN0cmluZyB0ZXhDb29yZFgoInQueCIpOworICAgICAgICAgICAgVFN0cmluZyB0ZXhDb29yZFko
InQueSIpOworICAgICAgICAgICAgVFN0cmluZyB0ZXhDb29yZFooInQueiIpOworICAgICAgICAg
ICAgUHJvamVjdFRleHR1cmVDb29yZGluYXRlcyh0ZXh0dXJlRnVuY3Rpb24sICZ0ZXhDb29yZFgs
ICZ0ZXhDb29yZFksICZ0ZXhDb29yZFopOworICAgICAgICAgICAgT3V0cHV0SW50ZWdlclRleHR1
cmVTYW1wbGVGdW5jdGlvbkNvbXB1dGF0aW9ucyhvdXQsIHRleHR1cmVGdW5jdGlvbiwgb3V0cHV0
VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGV4dHVyZVJlZmVyZW5jZSwgJnRleENvb3JkWCwgJnRleENvb3JkWSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRl
eENvb3JkWik7CisgICAgICAgICAgICBPdXRwdXRUZXh0dXJlU2FtcGxlRnVuY3Rpb25SZXR1cm5T
dGF0ZW1lbnQob3V0LCB0ZXh0dXJlRnVuY3Rpb24sIG91dHB1dFR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZVJlZmVyZW5j
ZSwgc2FtcGxlclJlZmVyZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXhDb29yZFgsIHRleENvb3JkWSwgdGV4Q29vcmRaKTsKKyAg
ICAgICAgfQorCisgICAgICAgIG91dCA8PCAifVxuIgorICAgICAgICAgICAgICAgIlxuIjsKKyAg
ICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZSBzaApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVGV4dHVyZUZ1bmN0aW9uSExTTC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Rl
eHR1cmVGdW5jdGlvbkhMU0wuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UZXh0dXJlRnVuY3Rpb25ITFNMLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw3NiBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBUZXh0dXJlRnVuY3Rp
b25ITFNMOiBDbGFzcyBmb3Igd3JpdGluZyBpbXBsZW1lbnRhdGlvbnMgb2YgRVNTTCB0ZXh0dXJl
IGZ1bmN0aW9ucyBpbnRvIEhMU0wKKy8vIG91dHB1dC4gU29tZSBvZiB0aGUgaW1wbGVtZW50YXRp
b25zIGFyZSBzdHJhaWdodGZvcndhcmQgYW5kIGp1c3QgY2FsbCB0aGUgSExTTCBlcXVpdmFsZW50
IG9mIHRoZQorLy8gRVNTTCB0ZXh0dXJlIGZ1bmN0aW9uLCBvdGhlcnMgZG8gbW9yZSB3b3JrIHRv
IGVtdWxhdGUgRVNTTCB0ZXh0dXJlIHNhbXBsaW5nIG9yIHNpemUgcXVlcnkKKy8vIGJlaGF2aW9y
LgorLy8KKworI2lmbmRlZiBDT01QSUxFUl9UUkFOU0xBVE9SX1RFWFRVUkVGVU5DVElPTkhMU0xf
SF8KKyNkZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9URVhUVVJFRlVOQ1RJT05ITFNMX0hfCisK
KyNpbmNsdWRlIDxzZXQ+CisKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0Jhc2VUeXBl
cy5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvQ29tbW9uLmgiCisjaW5jbHVkZSAi
Y29tcGlsZXIvdHJhbnNsYXRvci9JbmZvU2luay5oIgorI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVy
TGFuZy5oIgorCituYW1lc3BhY2Ugc2gKK3sKKworY2xhc3MgVGV4dHVyZUZ1bmN0aW9uSExTTCBm
aW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQoreworICBwdWJsaWM6CisgICAgc3RydWN0IFRleHR1
cmVGdW5jdGlvbgorICAgIHsKKyAgICAgICAgLy8gU2VlIEVTU0wgMy4wMC42IHNlY3Rpb24gOC44
IGZvciByZWZlcmVuY2UgYWJvdXQgd2hhdCB0aGUgZGlmZmVyZW50IG1ldGhvZHMgYmVsb3cgZG8u
CisgICAgICAgIGVudW0gTWV0aG9kCisgICAgICAgIHsKKyAgICAgICAgICAgIElNUExJQ0lULCAg
Ly8gTWlwbWFwIExPRCBkZXRlcm1pbmVkIGltcGxpY2l0bHkgKHN0YW5kYXJkIGxvb2t1cCkKKyAg
ICAgICAgICAgIEJJQVMsCisgICAgICAgICAgICBMT0QsCisgICAgICAgICAgICBMT0QwLAorICAg
ICAgICAgICAgTE9EMEJJQVMsCisgICAgICAgICAgICBTSVpFLCAgLy8gdGV4dHVyZVNpemUoKQor
ICAgICAgICAgICAgRkVUQ0gsCisgICAgICAgICAgICBHUkFECisgICAgICAgIH07CisKKyAgICAg
ICAgVFN0cmluZyBuYW1lKCkgY29uc3Q7CisKKyAgICAgICAgYm9vbCBvcGVyYXRvcjwoY29uc3Qg
VGV4dHVyZUZ1bmN0aW9uICZyaHMpIGNvbnN0OworCisgICAgICAgIGNvbnN0IGNoYXIgKmdldFJl
dHVyblR5cGUoKSBjb25zdDsKKworICAgICAgICBUQmFzaWNUeXBlIHNhbXBsZXI7CisgICAgICAg
IGludCBjb29yZHM7CisgICAgICAgIGJvb2wgcHJvajsKKyAgICAgICAgYm9vbCBvZmZzZXQ7Cisg
ICAgICAgIE1ldGhvZCBtZXRob2Q7CisgICAgfTsKKworICAgIC8vIFJldHVybnMgdGhlIG5hbWUg
b2YgdGhlIHRleHR1cmUgZnVuY3Rpb24gaW1wbGVtZW50YXRpb24gdG8gY2FsbC4KKyAgICAvLyBU
aGUgbmFtZSB0aGF0J3MgcGFzc2VkIGluIGlzIHRoZSBuYW1lIG9mIHRoZSBHTFNMIHRleHR1cmUg
ZnVuY3Rpb24gdGhhdCBpdCBzaG91bGQgaW1wbGVtZW50LgorICAgIFRTdHJpbmcgdXNlVGV4dHVy
ZUZ1bmN0aW9uKGNvbnN0IFRTdHJpbmcgJm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVEJhc2ljVHlwZSBzYW1wbGVyVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgY29vcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBh
cmd1bWVudENvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbG9kMCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaDo6R0xlbnVtIHNoYWRlclR5cGUpOwor
CisgICAgdm9pZCB0ZXh0dXJlRnVuY3Rpb25IZWFkZXIoVEluZm9TaW5rQmFzZSAmb3V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoU2hhZGVyT3V0cHV0IG91dHB1dFR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBnZXREaW1lbnNpb25zSWdu
b3Jlc0Jhc2VMZXZlbCk7CisKKyAgcHJpdmF0ZToKKyAgICB0eXBlZGVmIHN0ZDo6c2V0PFRleHR1
cmVGdW5jdGlvbj4gVGV4dHVyZUZ1bmN0aW9uU2V0OworICAgIFRleHR1cmVGdW5jdGlvblNldCBt
VXNlc1RleHR1cmU7Cit9OworCit9ICAvLyBuYW1lc3BhY2Ugc2gKKworI2VuZGlmICAvLyBDT01Q
SUxFUl9UUkFOU0xBVE9SX1RFWFRVUkVGVU5DVElPTkhMU0xfSF8KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JFU1NMLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9UcmFuc2xhdG9yRVNTTC5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JFU1NMLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDYgQEAKIAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5z
bGF0b3IvVHJhbnNsYXRvckVTU0wuaCIKIAotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3Iv
QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JHTFNMLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNs
YXRvci9FbXVsYXRlUHJlY2lzaW9uLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9S
ZWNvcmRDb25zdGFudFByZWNpc2lvbi5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3Iv
T3V0cHV0RVNTTC5oIgpAQCAtMTcsMTUgKzE2LDggQEAKIHsKIH0KIAotdm9pZCBUcmFuc2xhdG9y
RVNTTDo6aW5pdEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yKEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9y
ICplbXUsIGludCBjb21waWxlT3B0aW9ucykKK3ZvaWQgVHJhbnNsYXRvckVTU0w6OnRyYW5zbGF0
ZShUSW50ZXJtTm9kZSAqcm9vdCwgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucykKIHsK
LSAgICBpZiAoY29tcGlsZU9wdGlvbnMgJiBTSF9FTVVMQVRFX0JVSUxUX0lOX0ZVTkNUSU9OUykK
LSAgICB7Ci0gICAgICAgIEluaXRCdWlsdEluRnVuY3Rpb25FbXVsYXRvckZvckdMU0xXb3JrYXJv
dW5kcyhlbXUsIGdldFNoYWRlclR5cGUoKSk7Ci0gICAgfQotfQotCi12b2lkIFRyYW5zbGF0b3JF
U1NMOjp0cmFuc2xhdGUoVEludGVybU5vZGUgKnJvb3QsIGludCkgewogICAgIFRJbmZvU2lua0Jh
c2UmIHNpbmsgPSBnZXRJbmZvU2luaygpLm9iajsKIAogICAgIGludCBzaGFkZXJWZXIgPSBnZXRT
aGFkZXJWZXJzaW9uKCk7CkBAIC0zNCwxMSArMjYsMTMgQEAKICAgICAgICAgc2luayA8PCAiI3Zl
cnNpb24gIiA8PCBzaGFkZXJWZXIgPDwgIiBlc1xuIjsKICAgICB9CiAKLSAgICB3cml0ZVByYWdt
YSgpOwotCiAgICAgLy8gV3JpdGUgYnVpbHQtaW4gZXh0ZW5zaW9uIGJlaGF2aW9ycy4KICAgICB3
cml0ZUV4dGVuc2lvbkJlaGF2aW9yKCk7CiAKKyAgICAvLyBXcml0ZSBwcmFnbWFzIGFmdGVyIGV4
dGVuc2lvbnMgYmVjYXVzZSBzb21lIGRyaXZlcnMgY29uc2lkZXIgcHJhZ21hcworICAgIC8vIGxp
a2Ugbm9uLXByZXByb2Nlc3NvciB0b2tlbnMuCisgICAgd3JpdGVQcmFnbWEoY29tcGlsZU9wdGlv
bnMpOworCiAgICAgYm9vbCBwcmVjaXNpb25FbXVsYXRpb24gPSBnZXRSZXNvdXJjZXMoKS5XRUJH
TF9kZWJ1Z19zaGFkZXJfcHJlY2lzaW9uICYmIGdldFByYWdtYSgpLmRlYnVnU2hhZGVyUHJlY2lz
aW9uOwogCiAgICAgaWYgKHByZWNpc2lvbkVtdWxhdGlvbikKQEAgLTQ2LDcgKzQwLDcgQEAKICAg
ICAgICAgRW11bGF0ZVByZWNpc2lvbiBlbXVsYXRlUHJlY2lzaW9uKGdldFN5bWJvbFRhYmxlKCks
IHNoYWRlclZlcik7CiAgICAgICAgIHJvb3QtPnRyYXZlcnNlKCZlbXVsYXRlUHJlY2lzaW9uKTsK
ICAgICAgICAgZW11bGF0ZVByZWNpc2lvbi51cGRhdGVUcmVlKCk7Ci0gICAgICAgIGVtdWxhdGVQ
cmVjaXNpb24ud3JpdGVFbXVsYXRpb25IZWxwZXJzKHNpbmssIFNIX0VTU0xfT1VUUFVUKTsKKyAg
ICAgICAgZW11bGF0ZVByZWNpc2lvbi53cml0ZUVtdWxhdGlvbkhlbHBlcnMoc2luaywgc2hhZGVy
VmVyLCBTSF9FU1NMX09VVFBVVCk7CiAgICAgfQogCiAgICAgUmVjb3JkQ29uc3RhbnRQcmVjaXNp
b24ocm9vdCwgZ2V0VGVtcG9yYXJ5SW5kZXgoKSk7CkBAIC03NSw2ICs2OSwxMyBAQAogICAgIC8v
IFdyaXRlIGFycmF5IGJvdW5kcyBjbGFtcGluZyBlbXVsYXRpb24gaWYgbmVlZGVkLgogICAgIGdl
dEFycmF5Qm91bmRzQ2xhbXBlcigpLk91dHB1dENsYW1waW5nRnVuY3Rpb25EZWZpbml0aW9uKHNp
bmspOwogCisgICAgaWYgKGdldFNoYWRlclR5cGUoKSA9PSBHTF9DT01QVVRFX1NIQURFUiAmJiBp
c0NvbXB1dGVTaGFkZXJMb2NhbFNpemVEZWNsYXJlZCgpKQorICAgIHsKKyAgICAgICAgY29uc3Qg
c2g6OldvcmtHcm91cFNpemUgJmxvY2FsU2l6ZSA9IGdldENvbXB1dGVTaGFkZXJMb2NhbFNpemUo
KTsKKyAgICAgICAgc2luayA8PCAibGF5b3V0IChsb2NhbF9zaXplX3g9IiA8PCBsb2NhbFNpemVb
MF0gPDwgIiwgbG9jYWxfc2l6ZV95PSIgPDwgbG9jYWxTaXplWzFdCisgICAgICAgICAgICAgPDwg
IiwgbG9jYWxfc2l6ZV96PSIgPDwgbG9jYWxTaXplWzJdIDw8ICIpIGluO1xuIjsKKyAgICB9CisK
ICAgICAvLyBXcml0ZSB0cmFuc2xhdGVkIHNoYWRlci4KICAgICBUT3V0cHV0RVNTTCBvdXRwdXRF
U1NMKHNpbmssIGdldEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5KCksIGdldEhhc2hGdW5jdGlv
bigpLCBnZXROYW1lTWFwKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRTeW1ib2xU
YWJsZSgpLCBzaGFkZXJWZXIsIHByZWNpc2lvbkVtdWxhdGlvbik7CkBAIC04MSw2ICs4MiwxMiBA
QAogICAgIHJvb3QtPnRyYXZlcnNlKCZvdXRwdXRFU1NMKTsKIH0KIAorYm9vbCBUcmFuc2xhdG9y
RVNTTDo6c2hvdWxkRmxhdHRlblByYWdtYVN0ZGdsSW52YXJpYW50QWxsKCkKK3sKKyAgICAvLyBO
b3QgbmVjZXNzYXJ5IHdoZW4gdHJhbnNsYXRpbmcgdG8gRVNTTC4KKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKIHZvaWQgVHJhbnNsYXRvckVTU0w6OndyaXRlRXh0ZW5zaW9uQmVoYXZpb3IoKSB7CiAg
ICAgVEluZm9TaW5rQmFzZSYgc2luayA9IGdldEluZm9TaW5rKCkub2JqOwogICAgIGNvbnN0IFRF
eHRlbnNpb25CZWhhdmlvciYgZXh0QmVoYXZpb3IgPSBnZXRFeHRlbnNpb25CZWhhdmlvcigpOwpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJh
bnNsYXRvckVTU0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yRVNTTC5oCShyZXZpc2lvbiAyMDgwMjEpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xh
dG9yRVNTTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNSwxMCArMTUsOSBAQAogICAgIFRyYW5zbGF0
b3JFU1NMKHNoOjpHTGVudW0gdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMpOwogCiAgIHByb3RlY3Rl
ZDoKLSAgICB2b2lkIGluaXRCdWlsdEluRnVuY3Rpb25FbXVsYXRvcihCdWlsdEluRnVuY3Rpb25F
bXVsYXRvciAqZW11LCBpbnQgY29tcGlsZU9wdGlvbnMpIG92ZXJyaWRlOworICAgIHZvaWQgdHJh
bnNsYXRlKFRJbnRlcm1Ob2RlICpyb290LCBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25z
KSBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZEZsYXR0ZW5QcmFnbWFTdGRnbEludmFyaWFudEFs
bCgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCB0cmFuc2xhdGUoVEludGVybU5vZGUgKnJvb3QsIGlu
dCBjb21waWxlT3B0aW9ucykgb3ZlcnJpZGU7Ci0KICAgcHJpdmF0ZToKICAgICB2b2lkIHdyaXRl
RXh0ZW5zaW9uQmVoYXZpb3IoKTsKIH07CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yR0xTTC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRv
ckdMU0wuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yR0xTTC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0VtdWxhdGVQ
cmVjaXNpb24uaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0V4dGVuc2lvbkdMU0wu
aCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL091dHB1dEdMU0wuaCIKKyNpbmNsdWRl
ICJjb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVUZXhlbEZldGNoT2Zmc2V0LmgiCiAjaW5jbHVk
ZSAiY29tcGlsZXIvdHJhbnNsYXRvci9WZXJzaW9uR0xTTC5oIgogCiBUcmFuc2xhdG9yR0xTTDo6
VHJhbnNsYXRvckdMU0woc2g6OkdMZW51bSB0eXBlLApAQCAtMTksMTggKzIwLDI0IEBACiAgICAg
OiBUQ29tcGlsZXIodHlwZSwgc3BlYywgb3V0cHV0KSB7CiB9CiAKLXZvaWQgVHJhbnNsYXRvckdM
U0w6OmluaXRCdWlsdEluRnVuY3Rpb25FbXVsYXRvcihCdWlsdEluRnVuY3Rpb25FbXVsYXRvciAq
ZW11LCBpbnQgY29tcGlsZU9wdGlvbnMpCit2b2lkIFRyYW5zbGF0b3JHTFNMOjppbml0QnVpbHRJ
bkZ1bmN0aW9uRW11bGF0b3IoQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IgKmVtdSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaENvbXBpbGVPcHRpb25z
IGNvbXBpbGVPcHRpb25zKQogewotICAgIGlmIChjb21waWxlT3B0aW9ucyAmIFNIX0VNVUxBVEVf
QlVJTFRfSU5fRlVOQ1RJT05TKQorICAgIGlmIChjb21waWxlT3B0aW9ucyAmIFNIX0VNVUxBVEVf
QUJTX0lOVF9GVU5DVElPTikKICAgICB7Ci0gICAgICAgIEluaXRCdWlsdEluRnVuY3Rpb25FbXVs
YXRvckZvckdMU0xXb3JrYXJvdW5kcyhlbXUsIGdldFNoYWRlclR5cGUoKSk7CisgICAgICAgIElu
aXRCdWlsdEluQWJzRnVuY3Rpb25FbXVsYXRvckZvckdMU0xXb3JrYXJvdW5kcyhlbXUsIGdldFNo
YWRlclR5cGUoKSk7CiAgICAgfQogCisgICAgaWYgKGNvbXBpbGVPcHRpb25zICYgU0hfRU1VTEFU
RV9JU05BTl9GTE9BVF9GVU5DVElPTikKKyAgICB7CisgICAgICAgIEluaXRCdWlsdEluSXNuYW5G
dW5jdGlvbkVtdWxhdG9yRm9yR0xTTFdvcmthcm91bmRzKGVtdSwgZ2V0U2hhZGVyVmVyc2lvbigp
KTsKKyAgICB9CisKICAgICBpbnQgdGFyZ2V0R0xTTFZlcnNpb24gPSBTaGFkZXJPdXRwdXRUeXBl
VG9HTFNMVmVyc2lvbihnZXRPdXRwdXRUeXBlKCkpOwogICAgIEluaXRCdWlsdEluRnVuY3Rpb25F
bXVsYXRvckZvckdMU0xNaXNzaW5nRnVuY3Rpb25zKGVtdSwgZ2V0U2hhZGVyVHlwZSgpLCB0YXJn
ZXRHTFNMVmVyc2lvbik7CiB9CiAKLXZvaWQgVHJhbnNsYXRvckdMU0w6OnRyYW5zbGF0ZShUSW50
ZXJtTm9kZSAqcm9vdCwgaW50IGNvbXBpbGVPcHRpb25zKQordm9pZCBUcmFuc2xhdG9yR0xTTDo6
dHJhbnNsYXRlKFRJbnRlcm1Ob2RlICpyb290LCBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRp
b25zKQogewogICAgIFRJbmZvU2lua0Jhc2UmIHNpbmsgPSBnZXRJbmZvU2luaygpLm9iajsKIApA
QCAtMzcsMTEgKzQ0LDQ5IEBACiAgICAgLy8gV3JpdGUgR0xTTCB2ZXJzaW9uLgogICAgIHdyaXRl
VmVyc2lvbihyb290KTsKIAotICAgIHdyaXRlUHJhZ21hKCk7Ci0KICAgICAvLyBXcml0ZSBleHRl
bnNpb24gYmVoYXZpb3VyIGFzIG5lZWRlZAogICAgIHdyaXRlRXh0ZW5zaW9uQmVoYXZpb3Iocm9v
dCk7CiAKKyAgICAvLyBXcml0ZSBwcmFnbWFzIGFmdGVyIGV4dGVuc2lvbnMgYmVjYXVzZSBzb21l
IGRyaXZlcnMgY29uc2lkZXIgcHJhZ21hcworICAgIC8vIGxpa2Ugbm9uLXByZXByb2Nlc3NvciB0
b2tlbnMuCisgICAgd3JpdGVQcmFnbWEoY29tcGlsZU9wdGlvbnMpOworCisgICAgLy8gSWYgZmxh
dHRlbmluZyB0aGUgZ2xvYmFsIGludmFyaWFudCBwcmFnbWEsIHdyaXRlIGludmFyaWFudCBkZWNs
YXJhdGlvbnMgZm9yIGJ1aWx0LWluCisgICAgLy8gdmFyaWFibGVzLiBJdCBzaG91bGQgYmUgaGFy
bWxlc3MgdG8gZG8gdGhpcyB0d2ljZSBpbiB0aGUgY2FzZSB0aGF0IHRoZSBzaGFkZXIgYWxzbyBl
eHBsaWNpdGx5CisgICAgLy8gZGlkIHRoaXMuIEhvd2V2ZXIsIGl0J3MgaW1wb3J0YW50IHRvIGVt
aXQgaW52YXJpYW50IHF1YWxpZmllcnMgb25seSBmb3IgdGhvc2UgYnVpbHQtaW4KKyAgICAvLyB2
YXJpYWJsZXMgdGhhdCBhcmUgYWN0dWFsbHkgdXNlZCwgdG8gYXZvaWQgYWZmZWN0aW5nIHRoZSBi
ZWhhdmlvciBvZiB0aGUgc2hhZGVyLgorICAgIGlmICgoY29tcGlsZU9wdGlvbnMgJiBTSF9GTEFU
VEVOX1BSQUdNQV9TVERHTF9JTlZBUklBTlRfQUxMKSAmJiBnZXRQcmFnbWEoKS5zdGRnbC5pbnZh
cmlhbnRBbGwpCisgICAgeworICAgICAgICBjb2xsZWN0VmFyaWFibGVzKHJvb3QpOworCisgICAg
ICAgIHN3aXRjaCAoZ2V0U2hhZGVyVHlwZSgpKQorICAgICAgICB7CisgICAgICAgICAgICBjYXNl
IEdMX1ZFUlRFWF9TSEFERVI6CisgICAgICAgICAgICAgICAgc2luayA8PCAiaW52YXJpYW50IGds
X1Bvc2l0aW9uO1xuIjsKKworICAgICAgICAgICAgICAgIC8vIGdsX1BvaW50U2l6ZSBzaG91bGQg
YmUgZGVjbGFyZWQgaW52YXJpYW50IGluIGJvdGggRVNTTCAxLjAwIGFuZCAzLjAwIGZyYWdtZW50
CisgICAgICAgICAgICAgICAgLy8gc2hhZGVycyBpZiBpdCdzIHN0YXRpY2FsbHkgcmVmZXJlbmNl
ZC4KKyAgICAgICAgICAgICAgICBjb25kaXRpb25hbGx5T3V0cHV0SW52YXJpYW50RGVjbGFyYXRp
b24oImdsX1BvaW50U2l6ZSIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBHTF9GUkFHTUVOVF9TSEFERVI6CisgICAgICAgICAgICAgICAgLy8gVGhlIHByZXByb2Nl
c3NvciB3aWxsIHJlamVjdCB0aGlzIHByYWdtYSBpZiBpdCdzIHVzZWQgaW4gRVNTTCAzLjAwIGZy
YWdtZW50CisgICAgICAgICAgICAgICAgLy8gc2hhZGVycywgc28gd2UgY2FuIHVzZSBzaW1wbGUg
bG9naWMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gZGVjbGFyZSB0aGVzZQorICAgICAgICAgICAg
ICAgIC8vIHZhcmlhYmxlcyBpbnZhcmlhbnQuCisgICAgICAgICAgICAgICAgY29uZGl0aW9uYWxs
eU91dHB1dEludmFyaWFudERlY2xhcmF0aW9uKCJnbF9GcmFnQ29vcmQiKTsKKyAgICAgICAgICAg
ICAgICBjb25kaXRpb25hbGx5T3V0cHV0SW52YXJpYW50RGVjbGFyYXRpb24oImdsX1BvaW50Q29v
cmQiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgLy8gQ3VycmVudGx5IG5vdCByZWFjaGVkLCBidXQgbGVhdmUgdGhpcyBpbiBm
b3IgZnV0dXJlIGV4cGFuc2lvbi4KKyAgICAgICAgICAgICAgICBBU1NFUlQoZmFsc2UpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKChjb21waWxl
T3B0aW9ucyAmIFNIX1JFV1JJVEVfVEVYRUxGRVRDSE9GRlNFVF9UT19URVhFTEZFVENIKSAhPSAw
KQorICAgIHsKKyAgICAgICAgc2g6OlJld3JpdGVUZXhlbEZldGNoT2Zmc2V0KHJvb3QsIGdldFN5
bWJvbFRhYmxlKCksIGdldFNoYWRlclZlcnNpb24oKSk7CisgICAgfQorCiAgICAgYm9vbCBwcmVj
aXNpb25FbXVsYXRpb24gPSBnZXRSZXNvdXJjZXMoKS5XRUJHTF9kZWJ1Z19zaGFkZXJfcHJlY2lz
aW9uICYmIGdldFByYWdtYSgpLmRlYnVnU2hhZGVyUHJlY2lzaW9uOwogCiAgICAgaWYgKHByZWNp
c2lvbkVtdWxhdGlvbikKQEAgLTQ5LDcgKzk0LDcgQEAKICAgICAgICAgRW11bGF0ZVByZWNpc2lv
biBlbXVsYXRlUHJlY2lzaW9uKGdldFN5bWJvbFRhYmxlKCksIGdldFNoYWRlclZlcnNpb24oKSk7
CiAgICAgICAgIHJvb3QtPnRyYXZlcnNlKCZlbXVsYXRlUHJlY2lzaW9uKTsKICAgICAgICAgZW11
bGF0ZVByZWNpc2lvbi51cGRhdGVUcmVlKCk7Ci0gICAgICAgIGVtdWxhdGVQcmVjaXNpb24ud3Jp
dGVFbXVsYXRpb25IZWxwZXJzKHNpbmssIGdldE91dHB1dFR5cGUoKSk7CisgICAgICAgIGVtdWxh
dGVQcmVjaXNpb24ud3JpdGVFbXVsYXRpb25IZWxwZXJzKHNpbmssIGdldFNoYWRlclZlcnNpb24o
KSwgZ2V0T3V0cHV0VHlwZSgpKTsKICAgICB9CiAKICAgICAvLyBXcml0ZSBlbXVsYXRlZCBidWls
dC1pbiBmdW5jdGlvbnMgaWYgbmVlZGVkLgpAQCAtMTMyLDYgKzE3NywxMyBAQAogICAgICAgICB9
CiAgICAgfQogCisgICAgaWYgKGdldFNoYWRlclR5cGUoKSA9PSBHTF9DT01QVVRFX1NIQURFUiAm
JiBpc0NvbXB1dGVTaGFkZXJMb2NhbFNpemVEZWNsYXJlZCgpKQorICAgIHsKKyAgICAgICAgY29u
c3Qgc2g6OldvcmtHcm91cFNpemUgJmxvY2FsU2l6ZSA9IGdldENvbXB1dGVTaGFkZXJMb2NhbFNp
emUoKTsKKyAgICAgICAgc2luayA8PCAibGF5b3V0IChsb2NhbF9zaXplX3g9IiA8PCBsb2NhbFNp
emVbMF0gPDwgIiwgbG9jYWxfc2l6ZV95PSIgPDwgbG9jYWxTaXplWzFdCisgICAgICAgICAgICAg
PDwgIiwgbG9jYWxfc2l6ZV96PSIgPDwgbG9jYWxTaXplWzJdIDw8ICIpIGluO1xuIjsKKyAgICB9
CisKICAgICAvLyBXcml0ZSB0cmFuc2xhdGVkIHNoYWRlci4KICAgICBUT3V0cHV0R0xTTCBvdXRw
dXRHTFNMKHNpbmssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRBcnJheUluZGV4Q2xh
bXBpbmdTdHJhdGVneSgpLApAQCAtMTQzLDYgKzE5NSwxMyBAQAogICAgIHJvb3QtPnRyYXZlcnNl
KCZvdXRwdXRHTFNMKTsKIH0KIAorYm9vbCBUcmFuc2xhdG9yR0xTTDo6c2hvdWxkRmxhdHRlblBy
YWdtYVN0ZGdsSW52YXJpYW50QWxsKCkKK3sKKyAgICAvLyBSZXF1aXJlZCB3aGVuIG91dHB1dHRp
bmcgdG8gYW55IEdMU0wgdmVyc2lvbiBncmVhdGVyIHRoYW4gMS4yMCwgYnV0IHNpbmNlIEFOR0xF
IGRvZXNuJ3QKKyAgICAvLyB0cmFuc2xhdGUgdG8gdGhhdCB2ZXJzaW9uLCByZXR1cm4gdHJ1ZSBm
b3IgdGhlIG5leHQgaGlnaGVyIHZlcnNpb24uCisgICAgcmV0dXJuIElzR0xTTDEzME9yTmV3ZXIo
Z2V0T3V0cHV0VHlwZSgpKTsKK30KKwogdm9pZCBUcmFuc2xhdG9yR0xTTDo6d3JpdGVWZXJzaW9u
KFRJbnRlcm1Ob2RlICpyb290KQogewogICAgIFRWZXJzaW9uR0xTTCB2ZXJzaW9uR0xTTChnZXRT
aGFkZXJUeXBlKCksIGdldFByYWdtYSgpLCBnZXRPdXRwdXRUeXBlKCkpOwpAQCAtMTY4LDEyICsy
MjcsMjEgQEAKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgLy8g
Rm9yIEdMU0wgb3V0cHV0LCB3ZSBkb24ndCBuZWVkIHRvIGVtaXQgbW9zdCBleHRlbnNpb25zIGV4
cGxpY2l0bHksCi0gICAgICAgIC8vIGJ1dCBzb21lIHdlIG5lZWQgdG8gdHJhbnNsYXRlLgotICAg
ICAgICBpZiAoaXRlci5maXJzdCA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpCisgICAg
ICAgIGlmIChnZXRPdXRwdXRUeXBlKCkgPT0gU0hfR0xTTF9DT01QQVRJQklMSVRZX09VVFBVVCkK
ICAgICAgICAgewotICAgICAgICAgICAgc2luayA8PCAiI2V4dGVuc2lvbiBHTF9BUkJfc2hhZGVy
X3RleHR1cmVfbG9kIDogIiA8PCBnZXRCZWhhdmlvclN0cmluZyhpdGVyLnNlY29uZCkKLSAgICAg
ICAgICAgICAgICAgPDwgIlxuIjsKKyAgICAgICAgICAgIC8vIEZvciBHTFNMIG91dHB1dCwgd2Ug
ZG9uJ3QgbmVlZCB0byBlbWl0IG1vc3QgZXh0ZW5zaW9ucyBleHBsaWNpdGx5LAorICAgICAgICAg
ICAgLy8gYnV0IHNvbWUgd2UgbmVlZCB0byB0cmFuc2xhdGUgaW4gR0wgY29tcGF0aWJpbGl0eSBw
cm9maWxlLgorICAgICAgICAgICAgaWYgKGl0ZXIuZmlyc3QgPT0gIkdMX0VYVF9zaGFkZXJfdGV4
dHVyZV9sb2QiKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHNpbmsgPDwgIiNleHRl
bnNpb24gR0xfQVJCX3NoYWRlcl90ZXh0dXJlX2xvZCA6ICIgPDwgZ2V0QmVoYXZpb3JTdHJpbmco
aXRlci5zZWNvbmQpCisgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBpZiAoaXRlci5maXJzdCA9PSAiR0xfRVhUX2RyYXdfYnVmZmVycyIp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc2luayA8PCAiI2V4dGVuc2lvbiBHTF9B
UkJfZHJhd19idWZmZXJzIDogIiA8PCBnZXRCZWhhdmlvclN0cmluZyhpdGVyLnNlY29uZCkKKyAg
ICAgICAgICAgICAgICAgICAgIDw8ICJcbiI7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTE4Myw2ICsyNTEsMjMgQEAKICAgICAgICAgc2luayA8PCAiI2V4dGVuc2lvbiBH
TF9BUkJfZXhwbGljaXRfYXR0cmliX2xvY2F0aW9uIDogcmVxdWlyZVxuIjsKICAgICB9CiAKKyAg
ICAvLyBOZWVkIHRvIGVuYWJsZSBncHVfc2hhZGVyNSB0byBoYXZlIGluZGV4IGNvbnN0YW50IHNh
bXBsZXIgYXJyYXkgaW5kZXhpbmcKKyAgICBpZiAoZ2V0T3V0cHV0VHlwZSgpICE9IFNIX0VTU0xf
T1VUUFVUICYmIGdldE91dHB1dFR5cGUoKSA8IFNIX0dMU0xfNDAwX0NPUkVfT1VUUFVUKQorICAg
IHsKKyAgICAgICAgc2luayA8PCAiI2V4dGVuc2lvbiBHTF9BUkJfZ3B1X3NoYWRlcjUgOiAiOwor
CisgICAgICAgIC8vIERvbid0IHVzZSAicmVxdWlyZSIgb24gV2ViR0wgMSB0byBhdm9pZCBicmVh
a2luZyBXZWJHTCBvbiBkcml2ZXJzIHRoYXQgc2lsZW50bHkKKyAgICAgICAgLy8gc3VwcG9ydCBp
bmRleCBjb25zdGFudCBzYW1wbGVyIGFycmF5IGluZGV4aW5nLCBidXQgZG9uJ3QgaGF2ZSB0aGUg
ZXh0ZW5zaW9uLgorICAgICAgICBpZiAoZ2V0U2hhZGVyVmVyc2lvbigpID49IDMwMCkKKyAgICAg
ICAgeworICAgICAgICAgICAgc2luayA8PCAicmVxdWlyZVxuIjsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHNpbmsgPDwgImVuYWJsZVxuIjsKKyAgICAg
ICAgfQorICAgIH0KKwogICAgIFRFeHRlbnNpb25HTFNMIGV4dGVuc2lvbkdMU0woZ2V0T3V0cHV0
VHlwZSgpKTsKICAgICByb290LT50cmF2ZXJzZSgmZXh0ZW5zaW9uR0xTTCk7CiAKQEAgLTE5NSwz
ICsyODAsMTIgQEAKICAgICAgICAgc2luayA8PCAiI2V4dGVuc2lvbiAiIDw8IGV4dCA8PCAiIDog
cmVxdWlyZVxuIjsKICAgICB9CiB9CisKK3ZvaWQgVHJhbnNsYXRvckdMU0w6OmNvbmRpdGlvbmFs
bHlPdXRwdXRJbnZhcmlhbnREZWNsYXJhdGlvbihjb25zdCBjaGFyICpidWlsdGluVmFyeWluZ05h
bWUpCit7CisgICAgaWYgKGlzVmFyeWluZ0RlZmluZWQoYnVpbHRpblZhcnlpbmdOYW1lKSkKKyAg
ICB7CisgICAgICAgIFRJbmZvU2lua0Jhc2UgJnNpbmsgPSBnZXRJbmZvU2luaygpLm9iajsKKyAg
ICAgICAgc2luayA8PCAiaW52YXJpYW50ICIgPDwgYnVpbHRpblZhcnlpbmdOYW1lIDw8ICI7XG4i
OworICAgIH0KK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1RyYW5zbGF0b3JHTFNMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckdMU0wuaAkocmV2aXNp
b24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvVHJhbnNsYXRvckdMU0wuaAkod29ya2luZyBjb3B5KQpAQCAtMTUsMTMgKzE1LDE2IEBA
CiAgICAgVHJhbnNsYXRvckdMU0woc2g6OkdMZW51bSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywg
U2hTaGFkZXJPdXRwdXQgb3V0cHV0KTsKIAogICBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBpbml0QnVp
bHRJbkZ1bmN0aW9uRW11bGF0b3IoQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IgKmVtdSwgaW50IGNv
bXBpbGVPcHRpb25zKSBvdmVycmlkZTsKKyAgICB2b2lkIGluaXRCdWlsdEluRnVuY3Rpb25FbXVs
YXRvcihCdWlsdEluRnVuY3Rpb25FbXVsYXRvciAqZW11LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpIG92ZXJyaWRl
OwogCi0gICAgdm9pZCB0cmFuc2xhdGUoVEludGVybU5vZGUgKnJvb3QsIGludCBjb21waWxlT3B0
aW9ucykgb3ZlcnJpZGU7CisgICAgdm9pZCB0cmFuc2xhdGUoVEludGVybU5vZGUgKnJvb3QsIFNo
Q29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpIG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxk
RmxhdHRlblByYWdtYVN0ZGdsSW52YXJpYW50QWxsKCkgb3ZlcnJpZGU7CiAKICAgcHJpdmF0ZToK
ICAgICB2b2lkIHdyaXRlVmVyc2lvbihUSW50ZXJtTm9kZSAqcm9vdCk7CiAgICAgdm9pZCB3cml0
ZUV4dGVuc2lvbkJlaGF2aW9yKFRJbnRlcm1Ob2RlICpyb290KTsKKyAgICB2b2lkIGNvbmRpdGlv
bmFsbHlPdXRwdXRJbnZhcmlhbnREZWNsYXJhdGlvbihjb25zdCBjaGFyICpidWlsdGluVmFyeWlu
Z05hbWUpOwogfTsKIAogI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1RSQU5TTEFUT1JH
TFNMX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9UcmFuc2xhdG9ySExTTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckhMU0wuY3BwCShyZXZpc2lv
biAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9UcmFuc2xhdG9ySExTTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYsMTMgKzYsMjIgQEAK
IAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckhMU0wuaCIKIAorI2lu
Y2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvQWRkRGVmYXVsdFJldHVyblN0YXRlbWVudHMuaCIK
ICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0FycmF5UmV0dXJuVmFsdWVUb091dFBhcmFt
ZXRlci5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvQnJlYWtWYXJpYWJsZUFsaWFz
aW5nSW5Jbm5lckxvb3BzLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9FbXVsYXRl
UHJlY2lzaW9uLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9FeHBhbmRJbnRlZ2Vy
UG93RXhwcmVzc2lvbnMuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0ludGVybU5v
ZGVQYXR0ZXJuTWF0Y2hlci5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0
SExTTC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlRHluYW1pY0luZGV4
aW5nLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlRWxzZUJsb2Nrcy5o
IgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQu
aCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVVbmFyeU1pbnVzT3BlcmF0
b3JJbnQuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1NlcGFyYXRlQXJyYXlJbml0
aWFsaXphdGlvbi5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVEZWNs
YXJhdGlvbnMuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1NlcGFyYXRlRXhwcmVz
c2lvbnNSZXR1cm5pbmdBcnJheXMuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1Np
bXBsaWZ5TG9vcENvbmRpdGlvbnMuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1Nw
bGl0U2VxdWVuY2VPcGVyYXRvci5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVW5m
b2xkU2hvcnRDaXJjdWl0VG9JZi5oIgogCiBUcmFuc2xhdG9ySExTTDo6VHJhbnNsYXRvckhMU0wo
c2g6OkdMZW51bSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywgU2hTaGFkZXJPdXRwdXQgb3V0cHV0
KQpAQCAtMjAsMTMgKzI5LDI5IEBACiB7CiB9CiAKLXZvaWQgVHJhbnNsYXRvckhMU0w6OnRyYW5z
bGF0ZShUSW50ZXJtTm9kZSAqcm9vdCwgaW50IGNvbXBpbGVPcHRpb25zKQordm9pZCBUcmFuc2xh
dG9ySExTTDo6dHJhbnNsYXRlKFRJbnRlcm1Ob2RlICpyb290LCBTaENvbXBpbGVPcHRpb25zIGNv
bXBpbGVPcHRpb25zKQogewogICAgIGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyAmcmVzb3VyY2Vz
ID0gZ2V0UmVzb3VyY2VzKCk7CiAgICAgaW50IG51bVJlbmRlclRhcmdldHMgPSByZXNvdXJjZXMu
RVhUX2RyYXdfYnVmZmVycyA/IHJlc291cmNlcy5NYXhEcmF3QnVmZmVycyA6IDE7CiAKKyAgICBz
aDo6QWRkRGVmYXVsdFJldHVyblN0YXRlbWVudHMocm9vdCk7CisKICAgICBTZXBhcmF0ZURlY2xh
cmF0aW9ucyhyb290KTsKIAorICAgIC8vIE5vdGUgdGhhdCBTaW1wbGlmeUxvb3BDb25kaXRpb25z
IG5lZWRzIHRvIGJlIHJ1biBiZWZvcmUgYW55IG90aGVyIEFTVCB0cmFuc2Zvcm1hdGlvbnMgdGhh
dAorICAgIC8vIG1heSBuZWVkIHRvIGdlbmVyYXRlIG5ldyBzdGF0ZW1lbnRzIGZyb20gbG9vcCBj
b25kaXRpb25zIG9yIGxvb3AgZXhwcmVzc2lvbnMuCisgICAgU2ltcGxpZnlMb29wQ29uZGl0aW9u
cyhyb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJtTm9kZVBhdHRlcm5NYXRj
aGVyOjprRXhwcmVzc2lvblJldHVybmluZ0FycmF5IHwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBJbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXI6OmtVbmZvbGRlZFNob3J0Q2lyY3VpdEV4
cHJlc3Npb24gfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVybU5vZGVQYXR0
ZXJuTWF0Y2hlcjo6a0R5bmFtaWNJbmRleGluZ09mVmVjdG9yT3JNYXRyaXhJbkxWYWx1ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdldFRlbXBvcmFyeUluZGV4KCksIGdldFN5bWJvbFRh
YmxlKCksIGdldFNoYWRlclZlcnNpb24oKSk7CisKKyAgICBTcGxpdFNlcXVlbmNlT3BlcmF0b3Io
cm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVy
OjprRXhwcmVzc2lvblJldHVybmluZ0FycmF5IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEludGVybU5vZGVQYXR0ZXJuTWF0Y2hlcjo6a1VuZm9sZGVkU2hvcnRDaXJjdWl0RXhwcmVz
c2lvbiB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcm1Ob2RlUGF0dGVybk1h
dGNoZXI6OmtEeW5hbWljSW5kZXhpbmdPZlZlY3Rvck9yTWF0cml4SW5MVmFsdWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdldFRlbXBvcmFyeUluZGV4KCksIGdldFN5bWJvbFRhYmxlKCks
IGdldFNoYWRlclZlcnNpb24oKSk7CisKICAgICAvLyBOb3RlIHRoYXQgU2VwYXJhdGVEZWNsYXJh
dGlvbnMgbmVlZHMgdG8gYmUgcnVuIGJlZm9yZSBVbmZvbGRTaG9ydENpcmN1aXRUb0lmLgogICAg
IFVuZm9sZFNob3J0Q2lyY3VpdFRvSWYocm9vdCwgZ2V0VGVtcG9yYXJ5SW5kZXgoKSk7CiAKQEAg
LTUyLDYgKzc3LDQwIEBACiAgICAgICAgIHNoOjpSZXdyaXRlRWxzZUJsb2Nrcyhyb290LCBnZXRU
ZW1wb3JhcnlJbmRleCgpKTsKICAgICB9CiAKKyAgICAvLyBXb3JrIGFyb3VuZCBhbiBITFNMIGNv
bXBpbGVyIGZyb250ZW5kIGFsaWFzaW5nIG9wdGltaXphdGlvbiBidWcuCisgICAgLy8gVE9ETyhj
d2FsbGV6KSBUaGUgZGF0ZSBpcyAyMDE2LTA4LTI1LCBNaWNyb3NvZnQgc2FpZCB0aGUgYnVnIHdv
dWxkIGJlIGZpeGVkCisgICAgLy8gaW4gdGhlIG5leHQgcmVsZWFzZSBvZiBkM2Rjb21waWxlci5k
bGwsIGl0IHdvdWxkIGJlIG5pY2UgdG8gZGV0ZWN0IHRoZSBETEwKKyAgICAvLyB2ZXJzaW9uIGFu
ZCBvbmx5IGFwcGx5IHRoZSB3b3JrYXJvdW5kIGlmIGl0IGlzIHRvbyBvbGQuCisgICAgc2g6OkJy
ZWFrVmFyaWFibGVBbGlhc2luZ0luSW5uZXJMb29wcyhyb290KTsKKworICAgIGJvb2wgcHJlY2lz
aW9uRW11bGF0aW9uID0KKyAgICAgICAgZ2V0UmVzb3VyY2VzKCkuV0VCR0xfZGVidWdfc2hhZGVy
X3ByZWNpc2lvbiAmJiBnZXRQcmFnbWEoKS5kZWJ1Z1NoYWRlclByZWNpc2lvbjsKKworICAgIGlm
IChwcmVjaXNpb25FbXVsYXRpb24pCisgICAgeworICAgICAgICBFbXVsYXRlUHJlY2lzaW9uIGVt
dWxhdGVQcmVjaXNpb24oZ2V0U3ltYm9sVGFibGUoKSwgZ2V0U2hhZGVyVmVyc2lvbigpKTsKKyAg
ICAgICAgcm9vdC0+dHJhdmVyc2UoJmVtdWxhdGVQcmVjaXNpb24pOworICAgICAgICBlbXVsYXRl
UHJlY2lzaW9uLnVwZGF0ZVRyZWUoKTsKKyAgICAgICAgZW11bGF0ZVByZWNpc2lvbi53cml0ZUVt
dWxhdGlvbkhlbHBlcnMoZ2V0SW5mb1NpbmsoKS5vYmosIGdldFNoYWRlclZlcnNpb24oKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0T3V0cHV0VHlw
ZSgpKTsKKyAgICB9CisKKyAgICBpZiAoKGNvbXBpbGVPcHRpb25zICYgU0hfRVhQQU5EX1NFTEVD
VF9ITFNMX0lOVEVHRVJfUE9XX0VYUFJFU1NJT05TKSAhPSAwKQorICAgIHsKKyAgICAgICAgc2g6
OkV4cGFuZEludGVnZXJQb3dFeHByZXNzaW9ucyhyb290LCBnZXRUZW1wb3JhcnlJbmRleCgpKTsK
KyAgICB9CisKKyAgICBpZiAoKGNvbXBpbGVPcHRpb25zICYgU0hfUkVXUklURV9URVhFTEZFVENI
T0ZGU0VUX1RPX1RFWEVMRkVUQ0gpICE9IDApCisgICAgeworICAgICAgICBzaDo6UmV3cml0ZVRl
eGVsRmV0Y2hPZmZzZXQocm9vdCwgZ2V0U3ltYm9sVGFibGUoKSwgZ2V0U2hhZGVyVmVyc2lvbigp
KTsKKyAgICB9CisKKyAgICBpZiAoKChjb21waWxlT3B0aW9ucyAmIFNIX1JFV1JJVEVfSU5URUdF
Ul9VTkFSWV9NSU5VU19PUEVSQVRPUikgIT0gMCkgJiYKKyAgICAgICAgZ2V0U2hhZGVyVHlwZSgp
ID09IEdMX1ZFUlRFWF9TSEFERVIpCisgICAgeworICAgICAgICBzaDo6UmV3cml0ZVVuYXJ5TWlu
dXNPcGVyYXRvckludChyb290KTsKKyAgICB9CisKICAgICBzaDo6T3V0cHV0SExTTCBvdXRwdXRI
TFNMKGdldFNoYWRlclR5cGUoKSwgZ2V0U2hhZGVyVmVyc2lvbigpLCBnZXRFeHRlbnNpb25CZWhh
dmlvcigpLAogICAgICAgICBnZXRTb3VyY2VQYXRoKCksIGdldE91dHB1dFR5cGUoKSwgbnVtUmVu
ZGVyVGFyZ2V0cywgZ2V0VW5pZm9ybXMoKSwgY29tcGlsZU9wdGlvbnMpOwogCkBAIC02MSw2ICsx
MjAsMTIgQEAKICAgICBtVW5pZm9ybVJlZ2lzdGVyTWFwID0gb3V0cHV0SExTTC5nZXRVbmlmb3Jt
UmVnaXN0ZXJNYXAoKTsKIH0KIAorYm9vbCBUcmFuc2xhdG9ySExTTDo6c2hvdWxkRmxhdHRlblBy
YWdtYVN0ZGdsSW52YXJpYW50QWxsKCkKK3sKKyAgICAvLyBOb3QgbmVjZXNzYXJ5IHdoZW4gdHJh
bnNsYXRpbmcgdG8gSExTTC4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgVHJhbnNsYXRv
ckhMU0w6Omhhc0ludGVyZmFjZUJsb2NrKGNvbnN0IHN0ZDo6c3RyaW5nICZpbnRlcmZhY2VCbG9j
a05hbWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIChtSW50ZXJmYWNlQmxvY2tSZWdpc3Rlck1hcC5j
b3VudChpbnRlcmZhY2VCbG9ja05hbWUpID4gMCk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9ySExTTC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5z
bGF0b3JITFNMLmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JITFNMLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE1LDcgKzE1LDcgQEAKICAgICBUcmFuc2xhdG9ySExTTChzaDo6R0xlbnVtIHR5cGUsIFNo
U2hhZGVyU3BlYyBzcGVjLCBTaFNoYWRlck91dHB1dCBvdXRwdXQpOwogI2lmZGVmIEFOR0xFX0VO
QUJMRV9ITFNMCiAgICAgVHJhbnNsYXRvckhMU0wgKmdldEFzVHJhbnNsYXRvckhMU0woKSBvdmVy
cmlkZSB7IHJldHVybiB0aGlzOyB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBBTkdMRV9FTkFCTEVfSExT
TAogCiAgICAgYm9vbCBoYXNJbnRlcmZhY2VCbG9jayhjb25zdCBzdGQ6OnN0cmluZyAmaW50ZXJm
YWNlQmxvY2tOYW1lKSBjb25zdDsKICAgICB1bnNpZ25lZCBpbnQgZ2V0SW50ZXJmYWNlQmxvY2tS
ZWdpc3Rlcihjb25zdCBzdGQ6OnN0cmluZyAmaW50ZXJmYWNlQmxvY2tOYW1lKSBjb25zdDsKQEAg
LTIzLDEwICsyMywxMSBAQAogICAgIGNvbnN0IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCB1bnNpZ25l
ZCBpbnQ+ICpnZXRVbmlmb3JtUmVnaXN0ZXJNYXAoKSBjb25zdDsKIAogICBwcm90ZWN0ZWQ6Ci0g
ICAgdm9pZCB0cmFuc2xhdGUoVEludGVybU5vZGUgKnJvb3QsIGludCBjb21waWxlT3B0aW9ucykg
b3ZlcnJpZGU7CisgICAgdm9pZCB0cmFuc2xhdGUoVEludGVybU5vZGUgKnJvb3QsIFNoQ29tcGls
ZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpIG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkRmxhdHRl
blByYWdtYVN0ZGdsSW52YXJpYW50QWxsKCkgb3ZlcnJpZGU7CiAKICAgICAvLyBjb2xsZWN0VmFy
aWFibGVzIG5lZWRzIHRvIGJlIHJ1biBhbHdheXMgc28gcmVnaXN0ZXJzIGNhbiBiZSBhc3NpZ25l
ZC4KLSAgICBib29sIHNob3VsZENvbGxlY3RWYXJpYWJsZXMoaW50IGNvbXBpbGVPcHRpb25zKSBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBzaG91bGRDb2xsZWN0VmFyaWFibGVz
KFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KIAogICAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCB1bnNpZ25lZCBpbnQ+IG1JbnRlcmZhY2VC
bG9ja1JlZ2lzdGVyTWFwOwogICAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCB1bnNpZ25lZCBpbnQ+
IG1Vbmlmb3JtUmVnaXN0ZXJNYXA7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9UeXBlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHlwZXMuY3BwCShyZXZpc2lvbiAy
MDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9UeXBlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlICJj
b21waWxlci90cmFuc2xhdG9yL1R5cGVzLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRv
ci9JbmZvU2luay5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5o
IgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvU3ltYm9sVGFibGUuaCIKIAogI2luY2x1
ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxjbGltaXRzPgpAQCAtMTksNDEgKzIwLDQ5IEBACiB7
CiAgICAgc3dpdGNoICh0KQogICAgIHsKLSAgICAgIGNhc2UgRWJ0Vm9pZDogICAgICAgICAgICAg
ICAgIHJldHVybiAidm9pZCI7ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRWJ0
RmxvYXQ6ICAgICAgICAgICAgICAgIHJldHVybiAiZmxvYXQiOyAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgRWJ0SW50OiAgICAgICAgICAgICAgICAgIHJldHVybiAiaW50IjsgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRWJ0VUludDogICAgICAgICAgICAgICAg
IHJldHVybiAidWludCI7ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRWJ0Qm9v
bDogICAgICAgICAgICAgICAgIHJldHVybiAiYm9vbCI7ICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEOiAgICAgICAgICAgIHJldHVybiAic2FtcGxlcjJEIjsg
ICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRWJ0U2FtcGxlcjNEOiAgICAgICAgICAgIHJl
dHVybiAic2FtcGxlcjNEIjsgICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRWJ0U2FtcGxl
ckN1YmU6ICAgICAgICAgIHJldHVybiAic2FtcGxlckN1YmUiOyAgICAgICAgICBicmVhazsKLSAg
ICAgIGNhc2UgRWJ0U2FtcGxlckV4dGVybmFsT0VTOiAgIHJldHVybiAic2FtcGxlckV4dGVybmFs
T0VTIjsgICBicmVhazsKLSAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEUmVjdDogICAgICAgIHJldHVy
biAic2FtcGxlcjJEUmVjdCI7ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRWJ0U2FtcGxlcjJE
QXJyYXk6ICAgICAgIHJldHVybiAic2FtcGxlcjJEQXJyYXkiOyAgICAgICBicmVhazsKLSAgICAg
IGNhc2UgRWJ0SVNhbXBsZXIyRDogICAgICAgICAgIHJldHVybiAiaXNhbXBsZXIyRCI7ICAgICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgRWJ0SVNhbXBsZXIzRDogICAgICAgICAgIHJldHVybiAi
aXNhbXBsZXIzRCI7ICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRWJ0SVNhbXBsZXJDdWJl
OiAgICAgICAgIHJldHVybiAiaXNhbXBsZXJDdWJlIjsgICAgICAgICBicmVhazsKLSAgICAgIGNh
c2UgRWJ0SVNhbXBsZXIyREFycmF5OiAgICAgIHJldHVybiAiaXNhbXBsZXIyREFycmF5IjsgICAg
ICBicmVhazsKLSAgICAgIGNhc2UgRWJ0VVNhbXBsZXIyRDogICAgICAgICAgIHJldHVybiAidXNh
bXBsZXIyRCI7ICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRWJ0VVNhbXBsZXIzRDogICAg
ICAgICAgIHJldHVybiAidXNhbXBsZXIzRCI7ICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ug
RWJ0VVNhbXBsZXJDdWJlOiAgICAgICAgIHJldHVybiAidXNhbXBsZXJDdWJlIjsgICAgICAgICBi
cmVhazsKLSAgICAgIGNhc2UgRWJ0VVNhbXBsZXIyREFycmF5OiAgICAgIHJldHVybiAidXNhbXBs
ZXIyREFycmF5IjsgICAgICBicmVhazsKLSAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEU2hhZG93OiAg
ICAgIHJldHVybiAic2FtcGxlcjJEU2hhZG93IjsgICAgICBicmVhazsKLSAgICAgIGNhc2UgRWJ0
U2FtcGxlckN1YmVTaGFkb3c6ICAgIHJldHVybiAic2FtcGxlckN1YmVTaGFkb3ciOyAgICBicmVh
azsKLSAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXlTaGFkb3c6IHJldHVybiAic2FtcGxlcjJE
QXJyYXlTaGFkb3ciOyBicmVhazsKLSAgICAgIGNhc2UgRWJ0U3RydWN0OiAgICAgICAgICAgICAg
IHJldHVybiAic3RydWN0dXJlIjsgICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRWJ0SW50
ZXJmYWNlQmxvY2s6ICAgICAgIHJldHVybiAiaW50ZXJmYWNlIGJsb2NrIjsgICAgICBicmVhazsK
LSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgIHJldHVybiAidW5rbm93biB0eXBl
IjsKKyAgICAgICAgY2FzZSBFYnRWb2lkOiAgICAgICAgICAgICAgICAgcmV0dXJuICJ2b2lkIjsK
KyAgICAgICAgY2FzZSBFYnRGbG9hdDogICAgICAgICAgICAgICAgcmV0dXJuICJmbG9hdCI7Cisg
ICAgICAgIGNhc2UgRWJ0SW50OiAgICAgICAgICAgICAgICAgIHJldHVybiAiaW50IjsKKyAgICAg
ICAgY2FzZSBFYnRVSW50OiAgICAgICAgICAgICAgICAgcmV0dXJuICJ1aW50IjsKKyAgICAgICAg
Y2FzZSBFYnRCb29sOiAgICAgICAgICAgICAgICAgcmV0dXJuICJib29sIjsKKyAgICAgICAgY2Fz
ZSBFYnRTYW1wbGVyMkQ6ICAgICAgICAgICAgcmV0dXJuICJzYW1wbGVyMkQiOworICAgICAgICBj
YXNlIEVidFNhbXBsZXIzRDogICAgICAgICAgICByZXR1cm4gInNhbXBsZXIzRCI7CisgICAgICAg
IGNhc2UgRWJ0U2FtcGxlckN1YmU6ICAgICAgICAgIHJldHVybiAic2FtcGxlckN1YmUiOworICAg
ICAgICBjYXNlIEVidFNhbXBsZXJFeHRlcm5hbE9FUzogICByZXR1cm4gInNhbXBsZXJFeHRlcm5h
bE9FUyI7CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEUmVjdDogICAgICAgIHJldHVybiAic2Ft
cGxlcjJEUmVjdCI7CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXk6ICAgICAgIHJldHVy
biAic2FtcGxlcjJEQXJyYXkiOworICAgICAgICBjYXNlIEVidElTYW1wbGVyMkQ6ICAgICAgICAg
ICByZXR1cm4gImlzYW1wbGVyMkQiOworICAgICAgICBjYXNlIEVidElTYW1wbGVyM0Q6ICAgICAg
ICAgICByZXR1cm4gImlzYW1wbGVyM0QiOworICAgICAgICBjYXNlIEVidElTYW1wbGVyQ3ViZTog
ICAgICAgICByZXR1cm4gImlzYW1wbGVyQ3ViZSI7CisgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIy
REFycmF5OiAgICAgIHJldHVybiAiaXNhbXBsZXIyREFycmF5IjsKKyAgICAgICAgY2FzZSBFYnRV
U2FtcGxlcjJEOiAgICAgICAgICAgcmV0dXJuICJ1c2FtcGxlcjJEIjsKKyAgICAgICAgY2FzZSBF
YnRVU2FtcGxlcjNEOiAgICAgICAgICAgcmV0dXJuICJ1c2FtcGxlcjNEIjsKKyAgICAgICAgY2Fz
ZSBFYnRVU2FtcGxlckN1YmU6ICAgICAgICAgcmV0dXJuICJ1c2FtcGxlckN1YmUiOworICAgICAg
ICBjYXNlIEVidFVTYW1wbGVyMkRBcnJheTogICAgICByZXR1cm4gInVzYW1wbGVyMkRBcnJheSI7
CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEU2hhZG93OiAgICAgIHJldHVybiAic2FtcGxlcjJE
U2hhZG93IjsKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZVNoYWRvdzogICAgcmV0dXJuICJz
YW1wbGVyQ3ViZVNoYWRvdyI7CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXlTaGFkb3c6
IHJldHVybiAic2FtcGxlcjJEQXJyYXlTaGFkb3ciOworICAgICAgICBjYXNlIEVidFN0cnVjdDog
ICAgICAgICAgICAgICByZXR1cm4gInN0cnVjdHVyZSI7CisgICAgICAgIGNhc2UgRWJ0SW50ZXJm
YWNlQmxvY2s6ICAgICAgIHJldHVybiAiaW50ZXJmYWNlIGJsb2NrIjsKKyAgICAgICAgZGVmYXVs
dDogVU5SRUFDSEFCTEUoKTsgICAgICAgcmV0dXJuICJ1bmtub3duIHR5cGUiOwogICAgIH0KIH0K
IAogVFR5cGU6OlRUeXBlKGNvbnN0IFRQdWJsaWNUeXBlICZwKQotICAgIDogdHlwZShwLnR5cGUp
LCBwcmVjaXNpb24ocC5wcmVjaXNpb24pLCBxdWFsaWZpZXIocC5xdWFsaWZpZXIpLCBpbnZhcmlh
bnQocC5pbnZhcmlhbnQpLAotICAgICAgbGF5b3V0UXVhbGlmaWVyKHAubGF5b3V0UXVhbGlmaWVy
KSwgcHJpbWFyeVNpemUocC5wcmltYXJ5U2l6ZSksIHNlY29uZGFyeVNpemUocC5zZWNvbmRhcnlT
aXplKSwKLSAgICAgIGFycmF5KHAuYXJyYXkpLCBhcnJheVNpemUocC5hcnJheVNpemUpLCBpbnRl
cmZhY2VCbG9jaygwKSwgc3RydWN0dXJlKDApCisgICAgOiB0eXBlKHAuZ2V0QmFzaWNUeXBlKCkp
LAorICAgICAgcHJlY2lzaW9uKHAucHJlY2lzaW9uKSwKKyAgICAgIHF1YWxpZmllcihwLnF1YWxp
ZmllciksCisgICAgICBpbnZhcmlhbnQocC5pbnZhcmlhbnQpLAorICAgICAgbGF5b3V0UXVhbGlm
aWVyKHAubGF5b3V0UXVhbGlmaWVyKSwKKyAgICAgIHByaW1hcnlTaXplKHAuZ2V0UHJpbWFyeVNp
emUoKSksCisgICAgICBzZWNvbmRhcnlTaXplKHAuZ2V0U2Vjb25kYXJ5U2l6ZSgpKSwKKyAgICAg
IGFycmF5KHAuYXJyYXkpLAorICAgICAgYXJyYXlTaXplKHAuYXJyYXlTaXplKSwKKyAgICAgIGlu
dGVyZmFjZUJsb2NrKDApLAorICAgICAgc3RydWN0dXJlKDApCiB7Ci0gICAgaWYgKHAudXNlckRl
ZikKLSAgICAgICAgc3RydWN0dXJlID0gcC51c2VyRGVmLT5nZXRTdHJ1Y3QoKTsKKyAgICBpZiAo
cC5nZXRVc2VyRGVmKCkpCisgICAgICAgIHN0cnVjdHVyZSA9IHAuZ2V0VXNlckRlZigpLT5nZXRT
dHJ1Y3QoKTsKIH0KIAogYm9vbCBUU3RydWN0dXJlOjplcXVhbHMoY29uc3QgVFN0cnVjdHVyZSAm
b3RoZXIpIGNvbnN0CkBAIC02MSw2ICs3MCwxMjIgQEAKICAgICByZXR1cm4gKHVuaXF1ZUlkKCkg
PT0gb3RoZXIudW5pcXVlSWQoKSk7CiB9CiAKK2NvbnN0IGNoYXIgKlRUeXBlOjpnZXRCdWlsdElu
VHlwZU5hbWVTdHJpbmcoKSBjb25zdAoreworICAgIGlmIChpc01hdHJpeCgpKQorICAgIHsKKyAg
ICAgICAgc3dpdGNoIChnZXRDb2xzKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgMjoK
KyAgICAgICAgICAgICAgICBzd2l0Y2ggKGdldFJvd3MoKSkKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biAibWF0MiI7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAibWF0MngzIjsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgorICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJtYXQyeDQiOworICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGdldFJvd3MoKSkKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAibWF0M3gyIjsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAz
OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJtYXQzIjsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJtYXQzeDQiOwor
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgVU5S
RUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICBzd2l0
Y2ggKGdldFJvd3MoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgMjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAibWF0NHgyIjsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJtYXQ0
eDMiOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gIm1hdDQiOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoaXNWZWN0b3IoKSkKKyAgICB7CisgICAg
ICAgIHN3aXRjaCAoZ2V0QmFzaWNUeXBlKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2Ug
RWJ0RmxvYXQ6CisgICAgICAgICAgICAgICAgc3dpdGNoIChnZXROb21pbmFsU2l6ZSgpKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuICJ2ZWMyIjsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJ2ZWMzIjsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSA0OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJ2ZWM0IjsKKyAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hB
QkxFKCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICBjYXNlIEVidEludDoKKyAgICAgICAgICAgICAgICBzd2l0
Y2ggKGdldE5vbWluYWxTaXplKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIml2ZWMyIjsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICJpdmVjMyI7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAiaXZlYzQiOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2Ug
RWJ0Qm9vbDoKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGdldE5vbWluYWxTaXplKCkpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gImJ2ZWMyIjsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJidmVjMyI7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiYnZlYzQiOworICAg
ICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgRWJ0VUludDoKKyAgICAgICAgICAgICAgICBz
d2l0Y2ggKGdldE5vbWluYWxTaXplKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInV2ZWMyIjsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuICJ1dmVjMyI7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAidXZlYzQiOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgIH0KKyAgICBBU1NFUlQoZ2V0QmFzaWNUeXBl
KCkgIT0gRWJ0U3RydWN0KTsKKyAgICBBU1NFUlQoZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0SW50ZXJm
YWNlQmxvY2spOworICAgIHJldHVybiBnZXRCYXNpY1N0cmluZygpOworfQorCiBUU3RyaW5nIFRU
eXBlOjpnZXRDb21wbGV0ZVN0cmluZygpIGNvbnN0CiB7CiAgICAgVFN0cmluZ1N0cmVhbSBzdHJl
YW07CkBAIC0yMDIsNyArMzI3LDkgQEAKIAogICAgIGlmIChpc0FycmF5KCkpCiAgICAgewotICAg
ICAgICAvLyBUT0RPOiBnZXRBcnJheVNpemUoKSByZXR1cm5zIGFuIGludCwgbm90IGEgc2l6ZV90
CisgICAgICAgIGlmICh0b3RhbFNpemUgPT0gMCkKKyAgICAgICAgICAgIHJldHVybiAwOworCiAg
ICAgICAgIHNpemVfdCBjdXJyZW50QXJyYXlTaXplID0gZ2V0QXJyYXlTaXplKCk7CiAgICAgICAg
IGlmIChjdXJyZW50QXJyYXlTaXplID4gSU5UX01BWCAvIHRvdGFsU2l6ZSkKICAgICAgICAgICAg
IHRvdGFsU2l6ZSA9IElOVF9NQVg7CkBAIC0yMTMsNiArMzQwLDE0IEBACiAgICAgcmV0dXJuIHRv
dGFsU2l6ZTsKIH0KIAorVFN0cnVjdHVyZTo6VFN0cnVjdHVyZShjb25zdCBUU3RyaW5nICpuYW1l
LCBURmllbGRMaXN0ICpmaWVsZHMpCisgICAgOiBURmllbGRMaXN0Q29sbGVjdGlvbihuYW1lLCBm
aWVsZHMpLAorICAgICAgbURlZXBlc3ROZXN0aW5nKDApLAorICAgICAgbVVuaXF1ZUlkKFRTeW1i
b2xUYWJsZTo6bmV4dFVuaXF1ZUlkKCkpLAorICAgICAgbUF0R2xvYmFsU2NvcGUoZmFsc2UpCit7
Cit9CisKIGJvb2wgVFN0cnVjdHVyZTo6Y29udGFpbnNBcnJheXMoKSBjb25zdAogewogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbUZpZWxkcy0+c2l6ZSgpOyArK2kpCkBAIC0yNDgsNyArMzgz
LDcgQEAKIAogdm9pZCBUU3RydWN0dXJlOjpjcmVhdGVTYW1wbGVyU3ltYm9scyhjb25zdCBUU3Ry
aW5nICZzdHJ1Y3ROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUU3RyaW5nICZzdHJ1Y3RBUElOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBpbnQgYXJyYXlPZlN0cnVjdHNTaXplLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgYXJyYXlPZlN0cnVjdHNT
aXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUVmVjdG9yPFRJbnRl
cm1TeW1ib2wgKj4gKm91dHB1dFN5bWJvbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRNYXA8VEludGVybVN5bWJvbCAqLCBUU3RyaW5nPiAqb3V0cHV0U3ltYm9sc1Rv
QVBJTmFtZXMpIGNvbnN0CiB7CkBAIC0yNTcsOSArMzkyLDkgQEAKICAgICAgICAgY29uc3QgVFR5
cGUgKmZpZWxkVHlwZSA9IGZpZWxkLT50eXBlKCk7CiAgICAgICAgIGlmIChJc1NhbXBsZXIoZmll
bGRUeXBlLT5nZXRCYXNpY1R5cGUoKSkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChhcnJh
eU9mU3RydWN0c1NpemUgPiAwKQorICAgICAgICAgICAgaWYgKGFycmF5T2ZTdHJ1Y3RzU2l6ZSA+
IDB1KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZvciAoaW50IGFycmF5SW5kZXgg
PSAwOyBhcnJheUluZGV4IDwgYXJyYXlPZlN0cnVjdHNTaXplOyArK2FycmF5SW5kZXgpCisgICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgYXJyYXlJbmRleCA9IDB1OyBhcnJheUluZGV4
IDwgYXJyYXlPZlN0cnVjdHNTaXplOyArK2FycmF5SW5kZXgpCiAgICAgICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgICAgICBUU3RyaW5nU3RyZWFtIG5hbWU7CiAgICAgICAgICAgICAgICAg
ICAgIG5hbWUgPDwgc3RydWN0TmFtZSA8PCAiXyIgPDwgYXJyYXlJbmRleCA8PCAiXyIgPDwgZmll
bGQtPm5hbWUoKTsKQEAgLTI4OSwxMCArNDI0LDExIEBACiAgICAgICAgIH0KICAgICAgICAgZWxz
ZSBpZiAoZmllbGRUeXBlLT5pc1N0cnVjdHVyZUNvbnRhaW5pbmdTYW1wbGVycygpKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBpbnQgbmVzdGVkQXJyYXlPZlN0cnVjdHNTaXplID0gZmllbGRUeXBl
LT5pc0FycmF5KCkgPyBmaWVsZFR5cGUtPmdldEFycmF5U2l6ZSgpIDogMDsKKyAgICAgICAgICAg
IHVuc2lnbmVkIGludCBuZXN0ZWRBcnJheU9mU3RydWN0c1NpemUgPQorICAgICAgICAgICAgICAg
IGZpZWxkVHlwZS0+aXNBcnJheSgpID8gZmllbGRUeXBlLT5nZXRBcnJheVNpemUoKSA6IDB1Owog
ICAgICAgICAgICAgaWYgKGFycmF5T2ZTdHJ1Y3RzU2l6ZSA+IDApCiAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgZm9yIChpbnQgYXJyYXlJbmRleCA9IDA7IGFycmF5SW5kZXggPCBhcnJh
eU9mU3RydWN0c1NpemU7ICsrYXJyYXlJbmRleCkKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGludCBhcnJheUluZGV4ID0gMHU7IGFycmF5SW5kZXggPCBhcnJheU9mU3RydWN0c1NpemU7
ICsrYXJyYXlJbmRleCkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIFRT
dHJpbmdTdHJlYW0gZmllbGROYW1lOwogICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWUgPDwg
c3RydWN0TmFtZSA8PCAiXyIgPDwgYXJyYXlJbmRleCA8PCAiXyIgPDwgZmllbGQtPm5hbWUoKTsK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1R5
cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvVHlwZXMuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHlwZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMTAzLDEzICsxMDMsNyBAQAogewogICBwdWJsaWM6CiAgICAgUE9PTF9BTExPQ0FUT1JfTkVX
X0RFTEVURSgpOwotICAgIFRTdHJ1Y3R1cmUoY29uc3QgVFN0cmluZyAqbmFtZSwgVEZpZWxkTGlz
dCAqZmllbGRzKQotICAgICAgICA6IFRGaWVsZExpc3RDb2xsZWN0aW9uKG5hbWUsIGZpZWxkcyks
Ci0gICAgICAgICAgbURlZXBlc3ROZXN0aW5nKDApLAotICAgICAgICAgIG1VbmlxdWVJZCgwKSwK
LSAgICAgICAgICBtQXRHbG9iYWxTY29wZShmYWxzZSkKLSAgICB7Ci0gICAgfQorICAgIFRTdHJ1
Y3R1cmUoY29uc3QgVFN0cmluZyAqbmFtZSwgVEZpZWxkTGlzdCAqZmllbGRzKTsKIAogICAgIGlu
dCBkZWVwZXN0TmVzdGluZygpIGNvbnN0CiAgICAgewpAQCAtMTIzLDcgKzExNyw3IEBACiAKICAg
ICB2b2lkIGNyZWF0ZVNhbXBsZXJTeW1ib2xzKGNvbnN0IFRTdHJpbmcgJnN0cnVjdE5hbWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZzdHJ1Y3RBUElOYW1l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IGFycmF5T2ZTdHJ1Y3Rz
U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBh
cnJheU9mU3RydWN0c1NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUVmVjdG9y
PFRJbnRlcm1TeW1ib2wgKj4gKm91dHB1dFN5bWJvbHMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUTWFwPFRJbnRlcm1TeW1ib2wgKiwgVFN0cmluZz4gKm91dHB1dFN5bWJvbHNUb0FQ
SU5hbWVzKSBjb25zdDsKIApAQCAtMjQxLDExICsyMzUsMTggQEAKICAgICAgICAgICBpbnRlcmZh
Y2VCbG9jayhudWxscHRyKSwgc3RydWN0dXJlKG51bGxwdHIpCiAgICAgewogICAgIH0KLSAgICBU
VHlwZShUQmFzaWNUeXBlIHQsIHVuc2lnbmVkIGNoYXIgcHMgPSAxLCB1bnNpZ25lZCBjaGFyIHNz
ID0gMSkKLSAgICAgICAgOiB0eXBlKHQpLCBwcmVjaXNpb24oRWJwVW5kZWZpbmVkKSwgcXVhbGlm
aWVyKEV2cUdsb2JhbCksIGludmFyaWFudChmYWxzZSksCisgICAgZXhwbGljaXQgVFR5cGUoVEJh
c2ljVHlwZSB0LCB1bnNpZ25lZCBjaGFyIHBzID0gMSwgdW5zaWduZWQgY2hhciBzcyA9IDEpCisg
ICAgICAgIDogdHlwZSh0KSwKKyAgICAgICAgICBwcmVjaXNpb24oRWJwVW5kZWZpbmVkKSwKKyAg
ICAgICAgICBxdWFsaWZpZXIoRXZxR2xvYmFsKSwKKyAgICAgICAgICBpbnZhcmlhbnQoZmFsc2Up
LAogICAgICAgICAgIGxheW91dFF1YWxpZmllcihUTGF5b3V0UXVhbGlmaWVyOjpjcmVhdGUoKSks
Ci0gICAgICAgICAgcHJpbWFyeVNpemUocHMpLCBzZWNvbmRhcnlTaXplKHNzKSwgYXJyYXkoZmFs
c2UpLCBhcnJheVNpemUoMCksCi0gICAgICAgICAgaW50ZXJmYWNlQmxvY2soMCksIHN0cnVjdHVy
ZSgwKQorICAgICAgICAgIHByaW1hcnlTaXplKHBzKSwKKyAgICAgICAgICBzZWNvbmRhcnlTaXpl
KHNzKSwKKyAgICAgICAgICBhcnJheShmYWxzZSksCisgICAgICAgICAgYXJyYXlTaXplKDApLAor
ICAgICAgICAgIGludGVyZmFjZUJsb2NrKDApLAorICAgICAgICAgIHN0cnVjdHVyZSgwKQogICAg
IHsKICAgICB9CiAgICAgVFR5cGUoVEJhc2ljVHlwZSB0LCBUUHJlY2lzaW9uIHAsIFRRdWFsaWZp
ZXIgcSA9IEV2cVRlbXBvcmFyeSwKQEAgLTI1NywxMSArMjU4LDE4IEBACiAgICAgewogICAgIH0K
ICAgICBleHBsaWNpdCBUVHlwZShjb25zdCBUUHVibGljVHlwZSAmcCk7Ci0gICAgVFR5cGUoVFN0
cnVjdHVyZSAqdXNlckRlZiwgVFByZWNpc2lvbiBwID0gRWJwVW5kZWZpbmVkKQotICAgICAgICA6
IHR5cGUoRWJ0U3RydWN0KSwgcHJlY2lzaW9uKHApLCBxdWFsaWZpZXIoRXZxVGVtcG9yYXJ5KSwg
aW52YXJpYW50KGZhbHNlKSwKKyAgICBleHBsaWNpdCBUVHlwZShUU3RydWN0dXJlICp1c2VyRGVm
LCBUUHJlY2lzaW9uIHAgPSBFYnBVbmRlZmluZWQpCisgICAgICAgIDogdHlwZShFYnRTdHJ1Y3Qp
LAorICAgICAgICAgIHByZWNpc2lvbihwKSwKKyAgICAgICAgICBxdWFsaWZpZXIoRXZxVGVtcG9y
YXJ5KSwKKyAgICAgICAgICBpbnZhcmlhbnQoZmFsc2UpLAogICAgICAgICAgIGxheW91dFF1YWxp
ZmllcihUTGF5b3V0UXVhbGlmaWVyOjpjcmVhdGUoKSksCi0gICAgICAgICAgcHJpbWFyeVNpemUo
MSksIHNlY29uZGFyeVNpemUoMSksIGFycmF5KGZhbHNlKSwgYXJyYXlTaXplKDApLAotICAgICAg
ICAgIGludGVyZmFjZUJsb2NrKDApLCBzdHJ1Y3R1cmUodXNlckRlZikKKyAgICAgICAgICBwcmlt
YXJ5U2l6ZSgxKSwKKyAgICAgICAgICBzZWNvbmRhcnlTaXplKDEpLAorICAgICAgICAgIGFycmF5
KGZhbHNlKSwKKyAgICAgICAgICBhcnJheVNpemUoMCksCisgICAgICAgICAgaW50ZXJmYWNlQmxv
Y2soMCksCisgICAgICAgICAgc3RydWN0dXJlKHVzZXJEZWYpCiAgICAgewogICAgIH0KICAgICBU
VHlwZShUSW50ZXJmYWNlQmxvY2sgKmludGVyZmFjZUJsb2NrSW4sIFRRdWFsaWZpZXIgcXVhbGlm
aWVySW4sCkBAIC0zMTIsNiArMzIwLDggQEAKICAgICAgICAgcmV0dXJuIGludmFyaWFudDsKICAg
ICB9CiAKKyAgICB2b2lkIHNldEludmFyaWFudChib29sIGkpIHsgaW52YXJpYW50ID0gaTsgfQor
CiAgICAgVExheW91dFF1YWxpZmllciBnZXRMYXlvdXRRdWFsaWZpZXIoKSBjb25zdAogICAgIHsK
ICAgICAgICAgcmV0dXJuIGxheW91dFF1YWxpZmllcjsKQEAgLTM3MywxNCArMzgzLDExIEBACiAg
ICAgfQogICAgIGJvb2wgaXNVbnNpemVkQXJyYXkoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFycmF5ICYmIGFycmF5U2l6ZSA9PSAwOworICAgICAgICByZXR1cm4gYXJyYXkgJiYgYXJy
YXlTaXplID09IDB1OwogICAgIH0KLSAgICBpbnQgZ2V0QXJyYXlTaXplKCkgY29uc3QKKyAgICB1
bnNpZ25lZCBpbnQgZ2V0QXJyYXlTaXplKCkgY29uc3QgeyByZXR1cm4gYXJyYXlTaXplOyB9Cisg
ICAgdm9pZCBzZXRBcnJheVNpemUodW5zaWduZWQgaW50IHMpCiAgICAgewotICAgICAgICByZXR1
cm4gYXJyYXlTaXplOwotICAgIH0KLSAgICB2b2lkIHNldEFycmF5U2l6ZShpbnQgcykKLSAgICB7
CiAgICAgICAgIGlmICghYXJyYXkgfHwgYXJyYXlTaXplICE9IHMpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGFycmF5ICAgICA9IHRydWU7CkBAIC0zOTMsNyArNDAwLDcgQEAKICAgICAgICAgaWYg
KGFycmF5KQogICAgICAgICB7CiAgICAgICAgICAgICBhcnJheSAgICAgPSBmYWxzZTsKLSAgICAg
ICAgICAgIGFycmF5U2l6ZSA9IDA7CisgICAgICAgICAgICBhcnJheVNpemUgPSAwdTsKICAgICAg
ICAgICAgIGludmFsaWRhdGVNYW5nbGVkTmFtZSgpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDk0
LDYgKzUwMSw3IEBACiAgICAgewogICAgICAgICByZXR1cm4gOjpnZXRCYXNpY1N0cmluZyh0eXBl
KTsKICAgICB9CisKICAgICBjb25zdCBjaGFyICpnZXRQcmVjaXNpb25TdHJpbmcoKSBjb25zdAog
ICAgIHsKICAgICAgICAgcmV0dXJuIDo6Z2V0UHJlY2lzaW9uU3RyaW5nKHByZWNpc2lvbik7CkBA
IC01MDIsNiArNTEwLDkgQEAKICAgICB7CiAgICAgICAgIHJldHVybiA6OmdldFF1YWxpZmllclN0
cmluZyhxdWFsaWZpZXIpOwogICAgIH0KKworICAgIGNvbnN0IGNoYXIgKmdldEJ1aWx0SW5UeXBl
TmFtZVN0cmluZygpIGNvbnN0OworCiAgICAgVFN0cmluZyBnZXRDb21wbGV0ZVN0cmluZygpIGNv
bnN0OwogCiAgICAgLy8gSWYgdGhpcyB0eXBlIGlzIGEgc3RydWN0LCByZXR1cm5zIHRoZSBkZWVw
ZXN0IHN0cnVjdCBuZXN0aW5nIG9mCkBAIC01MzgsNyArNTQ5LDcgQEAKIAogICAgIHZvaWQgY3Jl
YXRlU2FtcGxlclN5bWJvbHMoY29uc3QgVFN0cmluZyAmc3RydWN0TmFtZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJnN0cnVjdEFQSU5hbWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgYXJyYXlPZlN0cnVjdHNTaXplLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IGFycmF5T2ZTdHJ1
Y3RzU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRWZWN0b3I8VEludGVybVN5
bWJvbCAqPiAqb3V0cHV0U3ltYm9scywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRN
YXA8VEludGVybVN5bWJvbCAqLCBUU3RyaW5nPiAqb3V0cHV0U3ltYm9sc1RvQVBJTmFtZXMpIGNv
bnN0CiAgICAgewpAQCAtNTY2LDcgKzU3Nyw3IEBACiAgICAgdW5zaWduZWQgY2hhciBwcmltYXJ5
U2l6ZTsgLy8gc2l6ZSBvZiB2ZWN0b3Igb3IgY29scyBtYXRyaXgKICAgICB1bnNpZ25lZCBjaGFy
IHNlY29uZGFyeVNpemU7IC8vIHJvd3Mgb2YgYSBtYXRyaXgKICAgICBib29sIGFycmF5OwotICAg
IGludCBhcnJheVNpemU7CisgICAgdW5zaWduZWQgaW50IGFycmF5U2l6ZTsKIAogICAgIC8vIDAg
dW5sZXNzIHRoaXMgaXMgYW4gaW50ZXJmYWNlIGJsb2NrLCBvciBpbnRlcmZhY2UgYmxvY2sgbWVt
YmVyIHZhcmlhYmxlCiAgICAgVEludGVyZmFjZUJsb2NrICppbnRlcmZhY2VCbG9jazsKQEAgLTU3
NywyNiArNTg4LDEzIEBACiAgICAgbXV0YWJsZSBUU3RyaW5nIG1hbmdsZWQ7CiB9OwogCi0vLwot
Ly8gVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIGEgcHJvYmxlbSB3aXRoIHRoZSB5YWNjIHN0YWNr
LCAgSXQgY2FuJ3QgaGF2ZQotLy8gdHlwZXMgdGhhdCBpdCB0aGlua3MgaGF2ZSBub24tdHJpdmlh
bCBjb25zdHJ1Y3RvcnMuICBJdCBzaG91bGQKLS8vIGp1c3QgYmUgdXNlZCB3aGlsZSByZWNvZ25p
emluZyB0aGUgZ3JhbW1hciwgbm90IGFueXRoaW5nIGVsc2UuICBQb2ludGVycwotLy8gY291bGQg
YmUgdXNlZCwgYnV0IGFsc28gdHJ5aW5nIHRvIGF2b2lkIGxvdHMgb2YgbWVtb3J5IG1hbmFnZW1l
bnQgb3ZlcmhlYWQuCi0vLwotLy8gTm90IGFzIGJhZCBhcyBpdCBsb29rcywgdGhlcmUgaXMgbm8g
YWN0dWFsIGFzc3VtcHRpb24gdGhhdCB0aGUgZmllbGRzCi0vLyBtYXRjaCB1cCBvciBhcmUgbmFt
ZSB0aGUgc2FtZSBvciBhbnl0aGluZyBsaWtlIHRoYXQuCi0vLwotc3RydWN0IFRQdWJsaWNUeXBl
CisvLyBUVHlwZVNwZWNpZmllck5vbkFycmF5IHN0b3JlcyBhbGwgb2YgdGhlIG5lY2Vzc2FyeSBm
aWVsZHMgZm9yIHR5cGVfc3BlY2lmaWVyX25vbmFycmF5IGZyb20gdGhlCisvLyBncmFtbWFyCitz
dHJ1Y3QgVFR5cGVTcGVjaWZpZXJOb25BcnJheQogewogICAgIFRCYXNpY1R5cGUgdHlwZTsKLSAg
ICBUTGF5b3V0UXVhbGlmaWVyIGxheW91dFF1YWxpZmllcjsKLSAgICBUUXVhbGlmaWVyIHF1YWxp
ZmllcjsKLSAgICBib29sIGludmFyaWFudDsKLSAgICBUUHJlY2lzaW9uIHByZWNpc2lvbjsKICAg
ICB1bnNpZ25lZCBjaGFyIHByaW1hcnlTaXplOyAgICAgICAgICAvLyBzaXplIG9mIHZlY3RvciBv
ciBjb2xzIG9mIG1hdHJpeAogICAgIHVuc2lnbmVkIGNoYXIgc2Vjb25kYXJ5U2l6ZTsgICAgICAg
IC8vIHJvd3Mgb2YgbWF0cml4Ci0gICAgYm9vbCBhcnJheTsKLSAgICBpbnQgYXJyYXlTaXplOwog
ICAgIFRUeXBlICp1c2VyRGVmOwogICAgIFRTb3VyY2VMb2MgbGluZTsKIApAQCAtNjAzLDE4ICs2
MDEsMTIgQEAKICAgICAvLyB0cnVlIGlmIHRoZSB0eXBlIHdhcyBkZWZpbmVkIGJ5IGEgc3RydWN0
IHNwZWNpZmllciByYXRoZXIgdGhhbiBhIHJlZmVyZW5jZSB0byBhIHR5cGUgbmFtZS4KICAgICBi
b29sIGlzU3RydWN0U3BlY2lmaWVyOwogCi0gICAgdm9pZCBzZXRCYXNpYyhUQmFzaWNUeXBlIGJ0
LCBUUXVhbGlmaWVyIHEsIGNvbnN0IFRTb3VyY2VMb2MgJmxuKQorICAgIHZvaWQgaW5pdGlhbGl6
ZShUQmFzaWNUeXBlIGJ0LCBjb25zdCBUU291cmNlTG9jICZsbikKICAgICB7CiAgICAgICAgIHR5
cGUgPSBidDsKLSAgICAgICAgbGF5b3V0UXVhbGlmaWVyID0gVExheW91dFF1YWxpZmllcjo6Y3Jl
YXRlKCk7Ci0gICAgICAgIHF1YWxpZmllciA9IHE7Ci0gICAgICAgIGludmFyaWFudCA9IGZhbHNl
OwotICAgICAgICBwcmVjaXNpb24gPSBFYnBVbmRlZmluZWQ7CiAgICAgICAgIHByaW1hcnlTaXpl
ID0gMTsKICAgICAgICAgc2Vjb25kYXJ5U2l6ZSA9IDE7Ci0gICAgICAgIGFycmF5ID0gZmFsc2U7
Ci0gICAgICAgIGFycmF5U2l6ZSA9IDA7Ci0gICAgICAgIHVzZXJEZWYgPSAwOworICAgICAgICB1
c2VyRGVmICAgICAgICAgICA9IG51bGxwdHI7CiAgICAgICAgIGxpbmUgPSBsbjsKICAgICAgICAg
aXNTdHJ1Y3RTcGVjaWZpZXIgPSBmYWxzZTsKICAgICB9CkBAIC02MjQsNzggKzYxNiw5OSBAQAog
ICAgICAgICBwcmltYXJ5U2l6ZSA9IHNpemU7CiAgICAgfQogCi0gICAgdm9pZCBzZXRNYXRyaXgo
dW5zaWduZWQgY2hhciBjLCB1bnNpZ25lZCBjaGFyIHIpCisgICAgdm9pZCBzZXRNYXRyaXgodW5z
aWduZWQgY2hhciBjb2x1bW5zLCB1bnNpZ25lZCBjaGFyIHJvd3MpCiAgICAgewotICAgICAgICBB
U1NFUlQoYyA+IDEgJiYgciA+IDEgJiYgYyA8PSA0ICYmIHIgPD0gNCk7Ci0gICAgICAgIHByaW1h
cnlTaXplID0gYzsKLSAgICAgICAgc2Vjb25kYXJ5U2l6ZSA9IHI7CisgICAgICAgIEFTU0VSVChj
b2x1bW5zID4gMSAmJiByb3dzID4gMSAmJiBjb2x1bW5zIDw9IDQgJiYgcm93cyA8PSA0KTsKKyAg
ICAgICAgcHJpbWFyeVNpemUgICA9IGNvbHVtbnM7CisgICAgICAgIHNlY29uZGFyeVNpemUgPSBy
b3dzOwogICAgIH0KIAotICAgIGJvb2wgaXNVbnNpemVkQXJyYXkoKSBjb25zdAorICAgIGJvb2wg
aXNNYXRyaXgoKSBjb25zdCB7IHJldHVybiBwcmltYXJ5U2l6ZSA+IDEgJiYgc2Vjb25kYXJ5U2l6
ZSA+IDE7IH0KKworICAgIGJvb2wgaXNWZWN0b3IoKSBjb25zdCB7IHJldHVybiBwcmltYXJ5U2l6
ZSA+IDEgJiYgc2Vjb25kYXJ5U2l6ZSA9PSAxOyB9Cit9OworCisvLworLy8gVGhpcyBpcyBhIHdv
cmthcm91bmQgZm9yIGEgcHJvYmxlbSB3aXRoIHRoZSB5YWNjIHN0YWNrLCAgSXQgY2FuJ3QgaGF2
ZQorLy8gdHlwZXMgdGhhdCBpdCB0aGlua3MgaGF2ZSBub24tdHJpdmlhbCBjb25zdHJ1Y3RvcnMu
ICBJdCBzaG91bGQKKy8vIGp1c3QgYmUgdXNlZCB3aGlsZSByZWNvZ25pemluZyB0aGUgZ3JhbW1h
ciwgbm90IGFueXRoaW5nIGVsc2UuICBQb2ludGVycworLy8gY291bGQgYmUgdXNlZCwgYnV0IGFs
c28gdHJ5aW5nIHRvIGF2b2lkIGxvdHMgb2YgbWVtb3J5IG1hbmFnZW1lbnQgb3ZlcmhlYWQuCisv
LworLy8gTm90IGFzIGJhZCBhcyBpdCBsb29rcywgdGhlcmUgaXMgbm8gYWN0dWFsIGFzc3VtcHRp
b24gdGhhdCB0aGUgZmllbGRzCisvLyBtYXRjaCB1cCBvciBhcmUgbmFtZSB0aGUgc2FtZSBvciBh
bnl0aGluZyBsaWtlIHRoYXQuCisvLworc3RydWN0IFRQdWJsaWNUeXBlCit7CisgICAgVFR5cGVT
cGVjaWZpZXJOb25BcnJheSB0eXBlU3BlY2lmaWVyTm9uQXJyYXk7CisgICAgVExheW91dFF1YWxp
ZmllciBsYXlvdXRRdWFsaWZpZXI7CisgICAgVFF1YWxpZmllciBxdWFsaWZpZXI7CisgICAgYm9v
bCBpbnZhcmlhbnQ7CisgICAgVFByZWNpc2lvbiBwcmVjaXNpb247CisgICAgYm9vbCBhcnJheTsK
KyAgICBpbnQgYXJyYXlTaXplOworCisgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFRUeXBlU3Bl
Y2lmaWVyTm9uQXJyYXkgJnR5cGVTcGVjaWZpZXIsIFRRdWFsaWZpZXIgcSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhcnJheSAmJiBhcnJheVNpemUgPT0gMDsKKyAgICAgICAgdHlwZVNwZWNpZmll
ck5vbkFycmF5ID0gdHlwZVNwZWNpZmllcjsKKyAgICAgICAgbGF5b3V0UXVhbGlmaWVyICAgICAg
ID0gVExheW91dFF1YWxpZmllcjo6Y3JlYXRlKCk7CisgICAgICAgIHF1YWxpZmllciAgICAgICAg
ICAgICA9IHE7CisgICAgICAgIGludmFyaWFudCAgICAgICAgICAgICA9IGZhbHNlOworICAgICAg
ICBwcmVjaXNpb24gICAgICAgICAgICAgPSBFYnBVbmRlZmluZWQ7CisgICAgICAgIGFycmF5ICAg
ICAgICAgICAgICAgICA9IGZhbHNlOworICAgICAgICBhcnJheVNpemUgICAgICAgICAgICAgPSAw
OwogICAgIH0KLSAgICB2b2lkIHNldEFycmF5U2l6ZShpbnQgcykKKworICAgIFRCYXNpY1R5cGUg
Z2V0QmFzaWNUeXBlKCkgY29uc3QgeyByZXR1cm4gdHlwZVNwZWNpZmllck5vbkFycmF5LnR5cGU7
IH0KKyAgICB2b2lkIHNldEJhc2ljVHlwZShUQmFzaWNUeXBlIGJhc2ljVHlwZSkgeyB0eXBlU3Bl
Y2lmaWVyTm9uQXJyYXkudHlwZSA9IGJhc2ljVHlwZTsgfQorCisgICAgdW5zaWduZWQgY2hhciBn
ZXRQcmltYXJ5U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGVTcGVjaWZpZXJOb25BcnJheS5wcmlt
YXJ5U2l6ZTsgfQorICAgIHVuc2lnbmVkIGNoYXIgZ2V0U2Vjb25kYXJ5U2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIHR5cGVTcGVjaWZpZXJOb25BcnJheS5zZWNvbmRhcnlTaXplOyB9CisgICAgdm9pZCBp
bml0aWFsaXplU2l6ZUZvclNjYWxhclR5cGVzKCkKICAgICB7Ci0gICAgICAgIGFycmF5ID0gdHJ1
ZTsKLSAgICAgICAgYXJyYXlTaXplID0gczsKKyAgICAgICAgdHlwZVNwZWNpZmllck5vbkFycmF5
LnByaW1hcnlTaXplICAgPSAxOworICAgICAgICB0eXBlU3BlY2lmaWVyTm9uQXJyYXkuc2Vjb25k
YXJ5U2l6ZSA9IDE7CiAgICAgfQotICAgIHZvaWQgY2xlYXJBcnJheW5lc3MoKQotICAgIHsKLSAg
ICAgICAgYXJyYXkgPSBmYWxzZTsKLSAgICAgICAgYXJyYXlTaXplID0gMDsKLSAgICB9CiAKKyAg
ICBjb25zdCBUVHlwZSAqZ2V0VXNlckRlZigpIGNvbnN0IHsgcmV0dXJuIHR5cGVTcGVjaWZpZXJO
b25BcnJheS51c2VyRGVmOyB9CisgICAgY29uc3QgVFNvdXJjZUxvYyAmZ2V0TGluZSgpIGNvbnN0
IHsgcmV0dXJuIHR5cGVTcGVjaWZpZXJOb25BcnJheS5saW5lOyB9CisKKyAgICBib29sIGlzU3Ry
dWN0U3BlY2lmaWVyKCkgY29uc3QgeyByZXR1cm4gdHlwZVNwZWNpZmllck5vbkFycmF5LmlzU3Ry
dWN0U3BlY2lmaWVyOyB9CisKICAgICBib29sIGlzU3RydWN0dXJlQ29udGFpbmluZ0FycmF5cygp
IGNvbnN0CiAgICAgewotICAgICAgICBpZiAoIXVzZXJEZWYpCisgICAgICAgIGlmICghdHlwZVNw
ZWNpZmllck5vbkFycmF5LnVzZXJEZWYpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiB1c2VyRGVmLT5pc1N0cnVjdHVyZUNv
bnRhaW5pbmdBcnJheXMoKTsKKyAgICAgICAgcmV0dXJuIHR5cGVTcGVjaWZpZXJOb25BcnJheS51
c2VyRGVmLT5pc1N0cnVjdHVyZUNvbnRhaW5pbmdBcnJheXMoKTsKICAgICB9CiAKICAgICBib29s
IGlzU3RydWN0dXJlQ29udGFpbmluZ1R5cGUoVEJhc2ljVHlwZSB0KSBjb25zdAogICAgIHsKLSAg
ICAgICAgaWYgKCF1c2VyRGVmKQorICAgICAgICBpZiAoIXR5cGVTcGVjaWZpZXJOb25BcnJheS51
c2VyRGVmKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
IAotICAgICAgICByZXR1cm4gdXNlckRlZi0+aXNTdHJ1Y3R1cmVDb250YWluaW5nVHlwZSh0KTsK
KyAgICAgICAgcmV0dXJuIHR5cGVTcGVjaWZpZXJOb25BcnJheS51c2VyRGVmLT5pc1N0cnVjdHVy
ZUNvbnRhaW5pbmdUeXBlKHQpOwogICAgIH0KIAotICAgIGJvb2wgaXNNYXRyaXgoKSBjb25zdAor
ICAgIGJvb2wgaXNVbnNpemVkQXJyYXkoKSBjb25zdCB7IHJldHVybiBhcnJheSAmJiBhcnJheVNp
emUgPT0gMDsgfQorICAgIHZvaWQgc2V0QXJyYXlTaXplKGludCBzKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHByaW1hcnlTaXplID4gMSAmJiBzZWNvbmRhcnlTaXplID4gMTsKKyAgICAgICAgYXJy
YXkgICAgID0gdHJ1ZTsKKyAgICAgICAgYXJyYXlTaXplID0gczsKICAgICB9Ci0KLSAgICBib29s
IGlzVmVjdG9yKCkgY29uc3QKKyAgICB2b2lkIGNsZWFyQXJyYXluZXNzKCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBwcmltYXJ5U2l6ZSA+IDEgJiYgc2Vjb25kYXJ5U2l6ZSA9PSAxOworICAgICAg
ICBhcnJheSAgICAgPSBmYWxzZTsKKyAgICAgICAgYXJyYXlTaXplID0gMDsKICAgICB9CiAKLSAg
ICBpbnQgZ2V0Q29scygpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQoaXNNYXRyaXgoKSk7
Ci0gICAgICAgIHJldHVybiBwcmltYXJ5U2l6ZTsKLSAgICB9Ci0KLSAgICBpbnQgZ2V0Um93cygp
IGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQoaXNNYXRyaXgoKSk7Ci0gICAgICAgIHJldHVy
biBzZWNvbmRhcnlTaXplOwotICAgIH0KLQotICAgIGludCBnZXROb21pbmFsU2l6ZSgpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gcHJpbWFyeVNpemU7Ci0gICAgfQotCiAgICAgYm9vbCBp
c0FnZ3JlZ2F0ZSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gYXJyYXkgfHwgaXNNYXRy
aXgoKSB8fCBpc1ZlY3RvcigpOworICAgICAgICByZXR1cm4gYXJyYXkgfHwgdHlwZVNwZWNpZmll
ck5vbkFycmF5LmlzTWF0cml4KCkgfHwgdHlwZVNwZWNpZmllck5vbkFycmF5LmlzVmVjdG9yKCk7
CiAgICAgfQogfTsKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvVW5mb2xkU2hvcnRDaXJjdWl0QVNULmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9VbmZvbGRTaG9ydENp
cmN1aXRBU1QuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9VbmZvbGRTaG9ydENpcmN1aXRBU1QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMCwyNSArMTAsMjMgQEAKIHsKIAogLy8gInggfHwgeSIgaXMgZXF1aXZh
bGVudCB0byAieCA/IHRydWUgOiB5Ii4KLVRJbnRlcm1TZWxlY3Rpb24gKlVuZm9sZE9SKFRJbnRl
cm1UeXBlZCAqeCwgVEludGVybVR5cGVkICp5KQorVEludGVybVRlcm5hcnkgKlVuZm9sZE9SKFRJ
bnRlcm1UeXBlZCAqeCwgVEludGVybVR5cGVkICp5KQogewotICAgIGNvbnN0IFRUeXBlIGJvb2xU
eXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCk7CiAgICAgVENvbnN0YW50VW5pb24gKnUgPSBuZXcg
VENvbnN0YW50VW5pb247CiAgICAgdS0+c2V0QkNvbnN0KHRydWUpOwogICAgIFRJbnRlcm1Db25z
dGFudFVuaW9uICp0cnVlTm9kZSA9IG5ldyBUSW50ZXJtQ29uc3RhbnRVbmlvbigKICAgICAgICAg
dSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCwgMSkpOwotICAgIHJldHVy
biBuZXcgVEludGVybVNlbGVjdGlvbih4LCB0cnVlTm9kZSwgeSwgYm9vbFR5cGUpOworICAgIHJl
dHVybiBuZXcgVEludGVybVRlcm5hcnkoeCwgdHJ1ZU5vZGUsIHkpOwogfQogCiAvLyAieCAmJiB5
IiBpcyBlcXVpdmFsZW50IHRvICJ4ID8geSA6IGZhbHNlIi4KLVRJbnRlcm1TZWxlY3Rpb24gKlVu
Zm9sZEFORChUSW50ZXJtVHlwZWQgKngsIFRJbnRlcm1UeXBlZCAqeSkKK1RJbnRlcm1UZXJuYXJ5
ICpVbmZvbGRBTkQoVEludGVybVR5cGVkICp4LCBUSW50ZXJtVHlwZWQgKnkpCiB7Ci0gICAgY29u
c3QgVFR5cGUgYm9vbFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkKTsKICAgICBUQ29uc3RhbnRV
bmlvbiAqdSA9IG5ldyBUQ29uc3RhbnRVbmlvbjsKICAgICB1LT5zZXRCQ29uc3QoZmFsc2UpOwog
ICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpmYWxzZU5vZGUgPSBuZXcgVEludGVybUNvbnN0YW50
VW5pb24oCiAgICAgICAgIHUsIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3Qs
IDEpKTsKLSAgICByZXR1cm4gbmV3IFRJbnRlcm1TZWxlY3Rpb24oeCwgeSwgZmFsc2VOb2RlLCBi
b29sVHlwZSk7CisgICAgcmV0dXJuIG5ldyBUSW50ZXJtVGVybmFyeSh4LCB5LCBmYWxzZU5vZGUp
OwogfQogCiB9ICAvLyBuYW1lc3BhY2UgYW5vbnltb3VzCkBAIC0zNSw3ICszMyw3IEBACiAKIGJv
b2wgVW5mb2xkU2hvcnRDaXJjdWl0QVNUOjp2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVy
bUJpbmFyeSAqbm9kZSkKIHsKLSAgICBUSW50ZXJtU2VsZWN0aW9uICpyZXBsYWNlbWVudCA9IE5V
TEw7CisgICAgVEludGVybVRlcm5hcnkgKnJlcGxhY2VtZW50ID0gbnVsbHB0cjsKIAogICAgIHN3
aXRjaCAobm9kZS0+Z2V0T3AoKSkKICAgICB7CkBAIC01MCw4ICs0OCw3IEBACiAgICAgfQogICAg
IGlmIChyZXBsYWNlbWVudCkKICAgICB7Ci0gICAgICAgIG1SZXBsYWNlbWVudHMucHVzaF9iYWNr
KAotICAgICAgICAgICAgTm9kZVVwZGF0ZUVudHJ5KGdldFBhcmVudE5vZGUoKSwgbm9kZSwgcmVw
bGFjZW1lbnQsIGZhbHNlKSk7CisgICAgICAgIHF1ZXVlUmVwbGFjZW1lbnQobm9kZSwgcmVwbGFj
ZW1lbnQsIE9yaWdpbmFsTm9kZTo6SVNfRFJPUFBFRCk7CiAgICAgfQogICAgIHJldHVybiB0cnVl
OwogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvVW5mb2xkU2hvcnRDaXJjdWl0VG9JZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVW5mb2xkU2hvcnRDaXJjdWl0VG9J
Zi5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL1VuZm9sZFNob3J0Q2lyY3VpdFRvSWYuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9VbmZv
bGRTaG9ydENpcmN1aXRUb0lmLmgiCiAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0lu
dGVybU5vZGUuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGVQYXR0
ZXJuTWF0Y2hlci5oIgogCiBuYW1lc3BhY2UKIHsKQEAgLTIyLDQxICsyMywyMyBAQAogICAgIFVu
Zm9sZFNob3J0Q2lyY3VpdFRyYXZlcnNlcigpOwogCiAgICAgYm9vbCB2aXNpdEJpbmFyeShWaXNp
dCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkgb3ZlcnJpZGU7Ci0gICAgYm9vbCB2aXNpdEFn
Z3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkgb3ZlcnJpZGU7Ci0g
ICAgYm9vbCB2aXNpdFNlbGVjdGlvbihWaXNpdCB2aXNpdCwgVEludGVybVNlbGVjdGlvbiAqbm9k
ZSkgb3ZlcnJpZGU7Ci0gICAgYm9vbCB2aXNpdExvb3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29w
ICpub2RlKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0VGVybmFyeShWaXNpdCB2aXNpdCwgVElu
dGVybVRlcm5hcnkgKm5vZGUpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBuZXh0SXRlcmF0aW9uKCk7
CiAgICAgYm9vbCBmb3VuZFNob3J0Q2lyY3VpdCgpIGNvbnN0IHsgcmV0dXJuIG1Gb3VuZFNob3J0
Q2lyY3VpdDsgfQogCiAgIHByb3RlY3RlZDoKLSAgICAvLyBDaGVjayBpZiB0aGUgdHJhdmVyc2Fs
IGlzIGluc2lkZSBhIGxvb3AgY29uZGl0aW9uIG9yIGV4cHJlc3Npb24sIGluIHdoaWNoIGNhc2Ug
dGhlIHVuZm9sZGVkCi0gICAgLy8gZXhwcmVzc2lvbiBuZWVkcyB0byBiZSBjb3BpZWQgaW5zaWRl
IHRoZSBsb29wLiBSZXR1cm5zIHRydWUgaWYgdGhlIGNvcHlpbmcgaXMgZG9uZSwgaW4gd2hpY2gK
LSAgICAvLyBjYXNlIG5vIGZ1cnRoZXIgdW5mb2xkaW5nIHNob3VsZCBiZSBkb25lIG9uIHRoZSBz
YW1lIHRyYXZlcnNhbC4KLSAgICAvLyBUaGUgcGFyYW1ldGVycyBhcmUgdGhlIG5vZGUgdGhhdCB3
aWxsIGJlIHVuZm9sZGVkIHRvIG11bHRpcGxlIHN0YXRlbWVudHMgYW5kIHNvIGNhbid0IHJlbWFp
bgotICAgIC8vIGluc2lkZSBhIGxvb3AgY29uZGl0aW9uLCBhbmQgaXRzIHBhcmVudC4KLSAgICBi
b29sIGNvcHlMb29wQ29uZGl0aW9uT3JFeHByZXNzaW9uKFRJbnRlcm1Ob2RlICpwYXJlbnQsIFRJ
bnRlcm1UeXBlZCAqbm9kZSk7Ci0KICAgICAvLyBNYXJrZWQgdG8gdHJ1ZSBvbmNlIGFuIG9wZXJh
dGlvbiB0aGF0IG5lZWRzIHRvIGJlIHVuZm9sZGVkIGhhcyBiZWVuIGZvdW5kLgogICAgIC8vIEFm
dGVyIHRoYXQsIG5vIG1vcmUgdW5mb2xkaW5nIGlzIHBlcmZvcm1lZCBvbiB0aGF0IHRyYXZlcnNh
bC4KICAgICBib29sIG1Gb3VuZFNob3J0Q2lyY3VpdDsKIAotICAgIC8vIFNldCB0byB0aGUgbG9v
cCBub2RlIHdoaWxlIGEgbG9vcCBjb25kaXRpb24gb3IgZXhwcmVzc2lvbiBpcyBiZWluZyB0cmF2
ZXJzZWQuCi0gICAgVEludGVybUxvb3AgKm1QYXJlbnRMb29wOwotICAgIC8vIFBhcmVudCBvZiB0
aGUgbG9vcCBub2RlIHdoaWxlIGEgbG9vcCBjb25kaXRpb24gb3IgZXhwcmVzc2lvbiBpcyBiZWlu
ZyB0cmF2ZXJzZWQuCi0gICAgVEludGVybU5vZGUgKm1Mb29wUGFyZW50OwotCi0gICAgYm9vbCBt
SW5Mb29wQ29uZGl0aW9uOwotICAgIGJvb2wgbUluTG9vcEV4cHJlc3Npb247CisgICAgSW50ZXJt
Tm9kZVBhdHRlcm5NYXRjaGVyIG1QYXR0ZXJuVG9VbmZvbGRNYXRjaGVyOwogfTsKIAogVW5mb2xk
U2hvcnRDaXJjdWl0VHJhdmVyc2VyOjpVbmZvbGRTaG9ydENpcmN1aXRUcmF2ZXJzZXIoKQogICAg
IDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgdHJ1ZSksCiAgICAgICBtRm91bmRTaG9y
dENpcmN1aXQoZmFsc2UpLAotICAgICAgbVBhcmVudExvb3AobnVsbHB0ciksCi0gICAgICBtTG9v
cFBhcmVudChudWxscHRyKSwKLSAgICAgIG1Jbkxvb3BDb25kaXRpb24oZmFsc2UpLAotICAgICAg
bUluTG9vcEV4cHJlc3Npb24oZmFsc2UpCisgICAgICBtUGF0dGVyblRvVW5mb2xkTWF0Y2hlcihJ
bnRlcm1Ob2RlUGF0dGVybk1hdGNoZXI6OmtVbmZvbGRlZFNob3J0Q2lyY3VpdEV4cHJlc3Npb24p
CiB7CiB9CiAKQEAgLTY0LDI4NSArNDcsMTE4IEBACiB7CiAgICAgaWYgKG1Gb3VuZFNob3J0Q2ly
Y3VpdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHZpc2l0ICE9IFByZVZpc2l0
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmICghbVBhdHRlcm5Ub1VuZm9sZE1hdGNo
ZXIubWF0Y2gobm9kZSwgZ2V0UGFyZW50Tm9kZSgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
ICAgICAvLyBJZiBvdXIgcmlnaHQgbm9kZSBkb2Vzbid0IGhhdmUgc2lkZSBlZmZlY3RzLCB3ZSBr
bm93IHdlIGRvbid0IG5lZWQgdG8gdW5mb2xkIHRoaXMKICAgICAvLyBleHByZXNzaW9uOiB0aGVy
ZSB3aWxsIGJlIG5vIHNob3J0LWNpcmN1aXRpbmcgc2lkZSBlZmZlY3RzIHRvIGF2b2lkCiAgICAg
Ly8gKG5vdGU6IHVuZm9sZGluZyBkb2Vzbid0IGRlcGVuZCBvbiB0aGUgbGVmdCBub2RlIC0tIGl0
IHdpbGwgYWx3YXlzIGJlIGV2YWx1YXRlZCkKLSAgICBpZiAoIW5vZGUtPmdldFJpZ2h0KCktPmhh
c1NpZGVFZmZlY3RzKCkpCi0gICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9CisgICAg
QVNTRVJUKG5vZGUtPmdldFJpZ2h0KCktPmhhc1NpZGVFZmZlY3RzKCkpOwogCisgICAgbUZvdW5k
U2hvcnRDaXJjdWl0ID0gdHJ1ZTsKKwogICAgIHN3aXRjaCAobm9kZS0+Z2V0T3AoKSkKICAgICB7
CiAgICAgICBjYXNlIEVPcExvZ2ljYWxPcjoKLSAgICAgICAgbUZvdW5kU2hvcnRDaXJjdWl0ID0g
dHJ1ZTsKLSAgICAgICAgaWYgKCFjb3B5TG9vcENvbmRpdGlvbk9yRXhwcmVzc2lvbihnZXRQYXJl
bnROb2RlKCksIG5vZGUpKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyAieCB8fCB5IiBpcyBl
cXVpdmFsZW50IHRvICJ4ID8gdHJ1ZSA6IHkiLCB3aGljaCB1bmZvbGRzIHRvICJib29sIHM7IGlm
KHgpIHMgPSB0cnVlOwotICAgICAgICAgICAgLy8gZWxzZSBzID0geTsiLAotICAgICAgICAgICAg
Ly8gYW5kIHRoZW4gZnVydGhlciBzaW1wbGlmaWVzIGRvd24gdG8gImJvb2wgcyA9IHg7IGlmKCFz
KSBzID0geTsiLgorICAgICAgeworICAgICAgICAgIC8vICJ4IHx8IHkiIGlzIGVxdWl2YWxlbnQg
dG8gInggPyB0cnVlIDogeSIsIHdoaWNoIHVuZm9sZHMgdG8gImJvb2wgczsgaWYoeCkgcyA9IHRy
dWU7CisgICAgICAgICAgLy8gZWxzZSBzID0geTsiLAorICAgICAgICAgIC8vIGFuZCB0aGVuIGZ1
cnRoZXIgc2ltcGxpZmllcyBkb3duIHRvICJib29sIHMgPSB4OyBpZighcykgcyA9IHk7Ii4KIAot
ICAgICAgICAgICAgVEludGVybVNlcXVlbmNlIGluc2VydGlvbnM7Ci0gICAgICAgICAgICBUVHlw
ZSBib29sVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cVRlbXBvcmFyeSk7CisgICAgICAg
ICAgVEludGVybVNlcXVlbmNlIGluc2VydGlvbnM7CisgICAgICAgICAgVFR5cGUgYm9vbFR5cGUo
RWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFUZW1wb3JhcnkpOwogCi0gICAgICAgICAgICBBU1NF
UlQobm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkgPT0gYm9vbFR5cGUpOwotICAgICAgICAgICAg
aW5zZXJ0aW9ucy5wdXNoX2JhY2soY3JlYXRlVGVtcEluaXREZWNsYXJhdGlvbihub2RlLT5nZXRM
ZWZ0KCkpKTsKKyAgICAgICAgICBBU1NFUlQobm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkgPT0g
Ym9vbFR5cGUpOworICAgICAgICAgIGluc2VydGlvbnMucHVzaF9iYWNrKGNyZWF0ZVRlbXBJbml0
RGVjbGFyYXRpb24obm9kZS0+Z2V0TGVmdCgpKSk7CiAKLSAgICAgICAgICAgIFRJbnRlcm1BZ2dy
ZWdhdGUgKmFzc2lnblJpZ2h0QmxvY2sgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZShFT3BTZXF1ZW5j
ZSk7Ci0gICAgICAgICAgICBBU1NFUlQobm9kZS0+Z2V0UmlnaHQoKS0+Z2V0VHlwZSgpID09IGJv
b2xUeXBlKTsKLSAgICAgICAgICAgIGFzc2lnblJpZ2h0QmxvY2stPmdldFNlcXVlbmNlKCktPnB1
c2hfYmFjayhjcmVhdGVUZW1wQXNzaWdubWVudChub2RlLT5nZXRSaWdodCgpKSk7CisgICAgICAg
ICAgVEludGVybUJsb2NrICphc3NpZ25SaWdodEJsb2NrID0gbmV3IFRJbnRlcm1CbG9jaygpOwor
ICAgICAgICAgIEFTU0VSVChub2RlLT5nZXRSaWdodCgpLT5nZXRUeXBlKCkgPT0gYm9vbFR5cGUp
OworICAgICAgICAgIGFzc2lnblJpZ2h0QmxvY2stPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhj
cmVhdGVUZW1wQXNzaWdubWVudChub2RlLT5nZXRSaWdodCgpKSk7CiAKLSAgICAgICAgICAgIFRJ
bnRlcm1VbmFyeSAqbm90VGVtcFN5bWJvbCA9IG5ldyBUSW50ZXJtVW5hcnkoRU9wTG9naWNhbE5v
dCwgYm9vbFR5cGUpOwotICAgICAgICAgICAgbm90VGVtcFN5bWJvbC0+c2V0T3BlcmFuZChjcmVh
dGVUZW1wU3ltYm9sKGJvb2xUeXBlKSk7Ci0gICAgICAgICAgICBUSW50ZXJtU2VsZWN0aW9uICpp
Zk5vZGUgPSBuZXcgVEludGVybVNlbGVjdGlvbihub3RUZW1wU3ltYm9sLCBhc3NpZ25SaWdodEJs
b2NrLCBudWxscHRyKTsKLSAgICAgICAgICAgIGluc2VydGlvbnMucHVzaF9iYWNrKGlmTm9kZSk7
CisgICAgICAgICAgVEludGVybVVuYXJ5ICpub3RUZW1wU3ltYm9sID0gbmV3IFRJbnRlcm1VbmFy
eShFT3BMb2dpY2FsTm90LCBjcmVhdGVUZW1wU3ltYm9sKGJvb2xUeXBlKSk7CisgICAgICAgICAg
VEludGVybUlmRWxzZSAqaWZOb2RlICAgICAgID0gbmV3IFRJbnRlcm1JZkVsc2Uobm90VGVtcFN5
bWJvbCwgYXNzaWduUmlnaHRCbG9jaywgbnVsbHB0cik7CisgICAgICAgICAgaW5zZXJ0aW9ucy5w
dXNoX2JhY2soaWZOb2RlKTsKIAotICAgICAgICAgICAgaW5zZXJ0U3RhdGVtZW50c0luUGFyZW50
QmxvY2soaW5zZXJ0aW9ucyk7CisgICAgICAgICAgaW5zZXJ0U3RhdGVtZW50c0luUGFyZW50Qmxv
Y2soaW5zZXJ0aW9ucyk7CiAKLSAgICAgICAgICAgIE5vZGVVcGRhdGVFbnRyeSByZXBsYWNlVmFy
aWFibGUoZ2V0UGFyZW50Tm9kZSgpLCBub2RlLCBjcmVhdGVUZW1wU3ltYm9sKGJvb2xUeXBlKSwg
ZmFsc2UpOwotICAgICAgICAgICAgbVJlcGxhY2VtZW50cy5wdXNoX2JhY2socmVwbGFjZVZhcmlh
YmxlKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgcXVldWVS
ZXBsYWNlbWVudChub2RlLCBjcmVhdGVUZW1wU3ltYm9sKGJvb2xUeXBlKSwgT3JpZ2luYWxOb2Rl
OjpJU19EUk9QUEVEKTsKKyAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CiAgICAgICBj
YXNlIEVPcExvZ2ljYWxBbmQ6Ci0gICAgICAgIG1Gb3VuZFNob3J0Q2lyY3VpdCA9IHRydWU7Ci0g
ICAgICAgIGlmICghY29weUxvb3BDb25kaXRpb25PckV4cHJlc3Npb24oZ2V0UGFyZW50Tm9kZSgp
LCBub2RlKSkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gInggJiYgeSIgaXMgZXF1aXZhbGVu
dCB0byAieCA/IHkgOiBmYWxzZSIsIHdoaWNoIHVuZm9sZHMgdG8gImJvb2wgczsgaWYoeCkgcyA9
IHk7Ci0gICAgICAgICAgICAvLyBlbHNlIHMgPSBmYWxzZTsiLAotICAgICAgICAgICAgLy8gYW5k
IHRoZW4gZnVydGhlciBzaW1wbGlmaWVzIGRvd24gdG8gImJvb2wgcyA9IHg7IGlmKHMpIHMgPSB5
OyIuCi0gICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgaW5zZXJ0aW9uczsKLSAgICAgICAgICAg
IFRUeXBlIGJvb2xUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxVGVtcG9yYXJ5KTsKKyAg
ICAgIHsKKyAgICAgICAgICAvLyAieCAmJiB5IiBpcyBlcXVpdmFsZW50IHRvICJ4ID8geSA6IGZh
bHNlIiwgd2hpY2ggdW5mb2xkcyB0byAiYm9vbCBzOyBpZih4KSBzID0geTsKKyAgICAgICAgICAv
LyBlbHNlIHMgPSBmYWxzZTsiLAorICAgICAgICAgIC8vIGFuZCB0aGVuIGZ1cnRoZXIgc2ltcGxp
ZmllcyBkb3duIHRvICJib29sIHMgPSB4OyBpZihzKSBzID0geTsiLgorICAgICAgICAgIFRJbnRl
cm1TZXF1ZW5jZSBpbnNlcnRpb25zOworICAgICAgICAgIFRUeXBlIGJvb2xUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxVGVtcG9yYXJ5KTsKIAotICAgICAgICAgICAgQVNTRVJUKG5vZGUt
PmdldExlZnQoKS0+Z2V0VHlwZSgpID09IGJvb2xUeXBlKTsKLSAgICAgICAgICAgIGluc2VydGlv
bnMucHVzaF9iYWNrKGNyZWF0ZVRlbXBJbml0RGVjbGFyYXRpb24obm9kZS0+Z2V0TGVmdCgpKSk7
CisgICAgICAgICAgQVNTRVJUKG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpID09IGJvb2xUeXBl
KTsKKyAgICAgICAgICBpbnNlcnRpb25zLnB1c2hfYmFjayhjcmVhdGVUZW1wSW5pdERlY2xhcmF0
aW9uKG5vZGUtPmdldExlZnQoKSkpOwogCi0gICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICph
c3NpZ25SaWdodEJsb2NrID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoRU9wU2VxdWVuY2UpOwotICAg
ICAgICAgICAgQVNTRVJUKG5vZGUtPmdldFJpZ2h0KCktPmdldFR5cGUoKSA9PSBib29sVHlwZSk7
Ci0gICAgICAgICAgICBhc3NpZ25SaWdodEJsb2NrLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2so
Y3JlYXRlVGVtcEFzc2lnbm1lbnQobm9kZS0+Z2V0UmlnaHQoKSkpOworICAgICAgICAgIFRJbnRl
cm1CbG9jayAqYXNzaWduUmlnaHRCbG9jayA9IG5ldyBUSW50ZXJtQmxvY2soKTsKKyAgICAgICAg
ICBBU1NFUlQobm9kZS0+Z2V0UmlnaHQoKS0+Z2V0VHlwZSgpID09IGJvb2xUeXBlKTsKKyAgICAg
ICAgICBhc3NpZ25SaWdodEJsb2NrLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2soY3JlYXRlVGVt
cEFzc2lnbm1lbnQobm9kZS0+Z2V0UmlnaHQoKSkpOwogCi0gICAgICAgICAgICBUSW50ZXJtU2Vs
ZWN0aW9uICppZk5vZGUgPSBuZXcgVEludGVybVNlbGVjdGlvbihjcmVhdGVUZW1wU3ltYm9sKGJv
b2xUeXBlKSwgYXNzaWduUmlnaHRCbG9jaywgbnVsbHB0cik7Ci0gICAgICAgICAgICBpbnNlcnRp
b25zLnB1c2hfYmFjayhpZk5vZGUpOworICAgICAgICAgIFRJbnRlcm1JZkVsc2UgKmlmTm9kZSA9
CisgICAgICAgICAgICAgIG5ldyBUSW50ZXJtSWZFbHNlKGNyZWF0ZVRlbXBTeW1ib2woYm9vbFR5
cGUpLCBhc3NpZ25SaWdodEJsb2NrLCBudWxscHRyKTsKKyAgICAgICAgICBpbnNlcnRpb25zLnB1
c2hfYmFjayhpZk5vZGUpOwogCi0gICAgICAgICAgICBpbnNlcnRTdGF0ZW1lbnRzSW5QYXJlbnRC
bG9jayhpbnNlcnRpb25zKTsKKyAgICAgICAgICBpbnNlcnRTdGF0ZW1lbnRzSW5QYXJlbnRCbG9j
ayhpbnNlcnRpb25zKTsKIAotICAgICAgICAgICAgTm9kZVVwZGF0ZUVudHJ5IHJlcGxhY2VWYXJp
YWJsZShnZXRQYXJlbnROb2RlKCksIG5vZGUsIGNyZWF0ZVRlbXBTeW1ib2woYm9vbFR5cGUpLCBm
YWxzZSk7Ci0gICAgICAgICAgICBtUmVwbGFjZW1lbnRzLnB1c2hfYmFjayhyZXBsYWNlVmFyaWFi
bGUpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICBxdWV1ZVJl
cGxhY2VtZW50KG5vZGUsIGNyZWF0ZVRlbXBTeW1ib2woYm9vbFR5cGUpLCBPcmlnaW5hbE5vZGU6
OklTX0RST1BQRUQpOworICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfQogCi1ib29sIFVuZm9sZFNob3J0Q2lyY3Vp
dFRyYXZlcnNlcjo6dmlzaXRTZWxlY3Rpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1TZWxlY3Rpb24g
Km5vZGUpCitib29sIFVuZm9sZFNob3J0Q2lyY3VpdFRyYXZlcnNlcjo6dmlzaXRUZXJuYXJ5KFZp
c2l0IHZpc2l0LCBUSW50ZXJtVGVybmFyeSAqbm9kZSkKIHsKICAgICBpZiAobUZvdW5kU2hvcnRD
aXJjdWl0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBVbmZvbGQgImIgPyB4IDog
eSIgaW50byAidHlwZSBzOyBpZihiKSBzID0geDsgZWxzZSBzID0geTsiCi0gICAgaWYgKHZpc2l0
ID09IFByZVZpc2l0ICYmIG5vZGUtPnVzZXNUZXJuYXJ5T3BlcmF0b3IoKSkKLSAgICB7Ci0gICAg
ICAgIG1Gb3VuZFNob3J0Q2lyY3VpdCA9IHRydWU7Ci0gICAgICAgIGlmICghY29weUxvb3BDb25k
aXRpb25PckV4cHJlc3Npb24oZ2V0UGFyZW50Tm9kZSgpLCBub2RlKSkKLSAgICAgICAgewotICAg
ICAgICAgICAgVEludGVybVNlcXVlbmNlIGluc2VydGlvbnM7CisgICAgaWYgKHZpc2l0ICE9IFBy
ZVZpc2l0KQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICAgICAgVEludGVybVN5bWJv
bCAqdGVtcFN5bWJvbCAgICAgICAgID0gY3JlYXRlVGVtcFN5bWJvbChub2RlLT5nZXRUeXBlKCkp
OwotICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqdGVtcERlY2xhcmF0aW9uID0gbmV3IFRJ
bnRlcm1BZ2dyZWdhdGUoRU9wRGVjbGFyYXRpb24pOwotICAgICAgICAgICAgdGVtcERlY2xhcmF0
aW9uLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2sodGVtcFN5bWJvbCk7Ci0gICAgICAgICAgICBp
bnNlcnRpb25zLnB1c2hfYmFjayh0ZW1wRGVjbGFyYXRpb24pOworICAgIGlmICghbVBhdHRlcm5U
b1VuZm9sZE1hdGNoZXIubWF0Y2gobm9kZSkpCisgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAg
ICAgICAgICBUSW50ZXJtQWdncmVnYXRlICp0cnVlQmxvY2sgPSBuZXcgVEludGVybUFnZ3JlZ2F0
ZShFT3BTZXF1ZW5jZSk7Ci0gICAgICAgICAgICBUSW50ZXJtQmluYXJ5ICp0cnVlQXNzaWdubWVu
dCA9Ci0gICAgICAgICAgICAgICAgY3JlYXRlVGVtcEFzc2lnbm1lbnQobm9kZS0+Z2V0VHJ1ZUJs
b2NrKCktPmdldEFzVHlwZWQoKSk7Ci0gICAgICAgICAgICB0cnVlQmxvY2stPmdldFNlcXVlbmNl
KCktPnB1c2hfYmFjayh0cnVlQXNzaWdubWVudCk7CisgICAgbUZvdW5kU2hvcnRDaXJjdWl0ID0g
dHJ1ZTsKIAotICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqZmFsc2VCbG9jayA9IG5ldyBU
SW50ZXJtQWdncmVnYXRlKEVPcFNlcXVlbmNlKTsKLSAgICAgICAgICAgIFRJbnRlcm1CaW5hcnkg
KmZhbHNlQXNzaWdubWVudCA9Ci0gICAgICAgICAgICAgICAgY3JlYXRlVGVtcEFzc2lnbm1lbnQo
bm9kZS0+Z2V0RmFsc2VCbG9jaygpLT5nZXRBc1R5cGVkKCkpOwotICAgICAgICAgICAgZmFsc2VC
bG9jay0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKGZhbHNlQXNzaWdubWVudCk7CisgICAgLy8g
VW5mb2xkICJiID8geCA6IHkiIGludG8gInR5cGUgczsgaWYoYikgcyA9IHg7IGVsc2UgcyA9IHk7
IgorICAgIFRJbnRlcm1TZXF1ZW5jZSBpbnNlcnRpb25zOwogCi0gICAgICAgICAgICBUSW50ZXJt
U2VsZWN0aW9uICppZk5vZGUgPQotICAgICAgICAgICAgICAgIG5ldyBUSW50ZXJtU2VsZWN0aW9u
KG5vZGUtPmdldENvbmRpdGlvbigpLT5nZXRBc1R5cGVkKCksIHRydWVCbG9jaywgZmFsc2VCbG9j
ayk7Ci0gICAgICAgICAgICBpbnNlcnRpb25zLnB1c2hfYmFjayhpZk5vZGUpOworICAgIFRJbnRl
cm1TeW1ib2wgKnRlbXBTeW1ib2wgICAgICAgICA9IGNyZWF0ZVRlbXBTeW1ib2wobm9kZS0+Z2V0
VHlwZSgpKTsKKyAgICBUSW50ZXJtQWdncmVnYXRlICp0ZW1wRGVjbGFyYXRpb24gPSBuZXcgVElu
dGVybUFnZ3JlZ2F0ZShFT3BEZWNsYXJhdGlvbik7CisgICAgdGVtcERlY2xhcmF0aW9uLT5nZXRT
ZXF1ZW5jZSgpLT5wdXNoX2JhY2sodGVtcFN5bWJvbCk7CisgICAgaW5zZXJ0aW9ucy5wdXNoX2Jh
Y2sodGVtcERlY2xhcmF0aW9uKTsKIAotICAgICAgICAgICAgaW5zZXJ0U3RhdGVtZW50c0luUGFy
ZW50QmxvY2soaW5zZXJ0aW9ucyk7CisgICAgVEludGVybUJsb2NrICp0cnVlQmxvY2sgICAgICAg
PSBuZXcgVEludGVybUJsb2NrKCk7CisgICAgVEludGVybUJpbmFyeSAqdHJ1ZUFzc2lnbm1lbnQg
PSBjcmVhdGVUZW1wQXNzaWdubWVudChub2RlLT5nZXRUcnVlRXhwcmVzc2lvbigpKTsKKyAgICB0
cnVlQmxvY2stPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayh0cnVlQXNzaWdubWVudCk7CiAKLSAg
ICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnRlcm5hcnlSZXN1bHQgPSBjcmVhdGVUZW1wU3ltYm9s
KG5vZGUtPmdldFR5cGUoKSk7Ci0gICAgICAgICAgICBOb2RlVXBkYXRlRW50cnkgcmVwbGFjZVZh
cmlhYmxlKGdldFBhcmVudE5vZGUoKSwgbm9kZSwgdGVybmFyeVJlc3VsdCwgZmFsc2UpOwotICAg
ICAgICAgICAgbVJlcGxhY2VtZW50cy5wdXNoX2JhY2socmVwbGFjZVZhcmlhYmxlKTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIFRJbnRlcm1CbG9jayAqZmFs
c2VCbG9jayAgICAgICA9IG5ldyBUSW50ZXJtQmxvY2soKTsKKyAgICBUSW50ZXJtQmluYXJ5ICpm
YWxzZUFzc2lnbm1lbnQgPSBjcmVhdGVUZW1wQXNzaWdubWVudChub2RlLT5nZXRGYWxzZUV4cHJl
c3Npb24oKSk7CisgICAgZmFsc2VCbG9jay0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKGZhbHNl
QXNzaWdubWVudCk7CiAKLSAgICByZXR1cm4gdHJ1ZTsKLX0KKyAgICBUSW50ZXJtSWZFbHNlICpp
Zk5vZGUgPQorICAgICAgICBuZXcgVEludGVybUlmRWxzZShub2RlLT5nZXRDb25kaXRpb24oKS0+
Z2V0QXNUeXBlZCgpLCB0cnVlQmxvY2ssIGZhbHNlQmxvY2spOworICAgIGluc2VydGlvbnMucHVz
aF9iYWNrKGlmTm9kZSk7CiAKLWJvb2wgVW5mb2xkU2hvcnRDaXJjdWl0VHJhdmVyc2VyOjp2aXNp
dEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkKLXsKLSAgICBp
ZiAodmlzaXQgPT0gUHJlVmlzaXQgJiYgbUZvdW5kU2hvcnRDaXJjdWl0KQotICAgICAgICByZXR1
cm4gZmFsc2U7IC8vIE5vIG5lZWQgdG8gdHJhdmVyc2UgZnVydGhlcgorICAgIGluc2VydFN0YXRl
bWVudHNJblBhcmVudEJsb2NrKGluc2VydGlvbnMpOwogCi0gICAgaWYgKG5vZGUtPmdldE9wKCkg
PT0gRU9wQ29tbWEpCi0gICAgewotICAgICAgICBBU1NFUlQodmlzaXQgIT0gUHJlVmlzaXQgfHwg
IW1Gb3VuZFNob3J0Q2lyY3VpdCk7CisgICAgVEludGVybVN5bWJvbCAqdGVybmFyeVJlc3VsdCA9
IGNyZWF0ZVRlbXBTeW1ib2wobm9kZS0+Z2V0VHlwZSgpKTsKKyAgICBxdWV1ZVJlcGxhY2VtZW50
KG5vZGUsIHRlcm5hcnlSZXN1bHQsIE9yaWdpbmFsTm9kZTo6SVNfRFJPUFBFRCk7CiAKLSAgICAg
ICAgaWYgKHZpc2l0ID09IFBvc3RWaXNpdCAmJiBtRm91bmRTaG9ydENpcmN1aXQpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIC8vIFdlIGNhbiBiZSBzdXJlIHRoYXQgd2UgYXJyaXZlZCBoZXJlIGJl
Y2F1c2UgdGhlcmUgd2FzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRvcgotICAgICAgICAgICAg
Ly8gaW5zaWRlIHRoZSBzZXF1ZW5jZSBvcGVyYXRvciBzaW5jZSB3ZSBvbmx5IHN0YXJ0IHRyYXZl
cnNpbmcgdGhlIHNlcXVlbmNlIG9wZXJhdG9yIGluCi0gICAgICAgICAgICAvLyBjYXNlIGEgc2hv
cnQtY2lyY3VpdGluZyBvcGVyYXRvciBoYXMgbm90IGJlZW4gZm91bmQgc28gZmFyLgotICAgICAg
ICAgICAgLy8gV2UgbmVlZCB0byB1bmZvbGQgdGhlIHNlcXVlbmNlIChjb21tYSkgb3BlcmF0b3Is
IG90aGVyd2lzZSB0aGUgZXZhbHVhdGlvbiBvcmRlciBvZgotICAgICAgICAgICAgLy8gc3RhdGVt
ZW50cyB3b3VsZCBiZSBtZXNzZWQgdXAgYnkgdW5mb2xkZWQgb3BlcmF0aW9ucyBpbnNpZGUuCi0g
ICAgICAgICAgICAvLyBEb24ndCBkbyBhbnkgb3RoZXIgdW5mb2xkaW5nIG9uIHRoaXMgcm91bmQg
b2YgdHJhdmVyc2FsLgotICAgICAgICAgICAgbVJlcGxhY2VtZW50cy5jbGVhcigpOwotICAgICAg
ICAgICAgbU11bHRpUmVwbGFjZW1lbnRzLmNsZWFyKCk7Ci0gICAgICAgICAgICBtSW5zZXJ0aW9u
cy5jbGVhcigpOwotCi0gICAgICAgICAgICBpZiAoIWNvcHlMb29wQ29uZGl0aW9uT3JFeHByZXNz
aW9uKGdldFBhcmVudE5vZGUoKSwgbm9kZSkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgVEludGVybVNlcXVlbmNlIGluc2VydGlvbnM7Ci0gICAgICAgICAgICAgICAgVEludGVybVNl
cXVlbmNlICpzZXEgPSBub2RlLT5nZXRTZXF1ZW5jZSgpOwotCi0gICAgICAgICAgICAgICAgVElu
dGVybVNlcXVlbmNlOjpzaXplX3R5cGUgaSA9IDA7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKCFz
ZXEtPmVtcHR5KCkpOwotICAgICAgICAgICAgICAgIHdoaWxlIChpIDwgc2VxLT5zaXplKCkgLSAx
KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpj
aGlsZCA9ICgqc2VxKVtpXS0+Z2V0QXNUeXBlZCgpOwotICAgICAgICAgICAgICAgICAgICBpbnNl
cnRpb25zLnB1c2hfYmFjayhjaGlsZCk7Ci0gICAgICAgICAgICAgICAgICAgICsraTsKLSAgICAg
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpbnNlcnRTdGF0ZW1lbnRzSW5QYXJlbnRC
bG9jayhpbnNlcnRpb25zKTsKLQotICAgICAgICAgICAgICAgIE5vZGVVcGRhdGVFbnRyeSByZXBs
YWNlVmFyaWFibGUoZ2V0UGFyZW50Tm9kZSgpLCBub2RlLCAoKnNlcSlbaV0sIGZhbHNlKTsKLSAg
ICAgICAgICAgICAgICBtUmVwbGFjZW1lbnRzLnB1c2hfYmFjayhyZXBsYWNlVmFyaWFibGUpOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1i
b29sIFVuZm9sZFNob3J0Q2lyY3VpdFRyYXZlcnNlcjo6dmlzaXRMb29wKFZpc2l0IHZpc2l0LCBU
SW50ZXJtTG9vcCAqbm9kZSkKLXsKLSAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCi0gICAgewot
ICAgICAgICBpZiAobUZvdW5kU2hvcnRDaXJjdWl0KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OyAgLy8gTm8gbmVlZCB0byB0cmF2ZXJzZSBmdXJ0aGVyCi0KLSAgICAgICAgbUxvb3BQYXJlbnQg
PSBnZXRQYXJlbnROb2RlKCk7Ci0gICAgICAgIG1QYXJlbnRMb29wID0gbm9kZTsKLSAgICAgICAg
aW5jcmVtZW50RGVwdGgobm9kZSk7Ci0KLSAgICAgICAgaWYgKG5vZGUtPmdldEluaXQoKSkKLSAg
ICAgICAgewotICAgICAgICAgICAgbm9kZS0+Z2V0SW5pdCgpLT50cmF2ZXJzZSh0aGlzKTsKLSAg
ICAgICAgICAgIGlmIChtRm91bmRTaG9ydENpcmN1aXQpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgZGVjcmVtZW50RGVwdGgoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobm9kZS0+Z2V0Q29uZGl0
aW9uKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1Jbkxvb3BDb25kaXRpb24gPSB0cnVlOwot
ICAgICAgICAgICAgbm9kZS0+Z2V0Q29uZGl0aW9uKCktPnRyYXZlcnNlKHRoaXMpOwotICAgICAg
ICAgICAgbUluTG9vcENvbmRpdGlvbiA9IGZhbHNlOwotCi0gICAgICAgICAgICBpZiAobUZvdW5k
U2hvcnRDaXJjdWl0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGRlY3JlbWVudERl
cHRoKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKG5vZGUtPmdldEV4cHJlc3Npb24oKSkKLSAgICAgICAgewot
ICAgICAgICAgICAgbUluTG9vcEV4cHJlc3Npb24gPSB0cnVlOwotICAgICAgICAgICAgbm9kZS0+
Z2V0RXhwcmVzc2lvbigpLT50cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAgICAgIG1Jbkxvb3BFeHBy
ZXNzaW9uID0gZmFsc2U7Ci0KLSAgICAgICAgICAgIGlmIChtRm91bmRTaG9ydENpcmN1aXQpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZGVjcmVtZW50RGVwdGgoKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAobm9kZS0+Z2V0Qm9keSgpKQotICAgICAgICAgICAgbm9kZS0+Z2V0Qm9keSgpLT50cmF2
ZXJzZSh0aGlzKTsKLQotICAgICAgICBkZWNyZW1lbnREZXB0aCgpOwotICAgIH0KICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLWJvb2wgVW5mb2xkU2hvcnRDaXJjdWl0VHJhdmVyc2VyOjpjb3B5TG9v
cENvbmRpdGlvbk9yRXhwcmVzc2lvbihUSW50ZXJtTm9kZSAqcGFyZW50LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRl
cm1UeXBlZCAqbm9kZSkKLXsKLSAgICBpZiAobUluTG9vcENvbmRpdGlvbikKLSAgICB7Ci0gICAg
ICAgIG1SZXBsYWNlbWVudHMucHVzaF9iYWNrKAotICAgICAgICAgICAgTm9kZVVwZGF0ZUVudHJ5
KHBhcmVudCwgbm9kZSwgY3JlYXRlVGVtcFN5bWJvbChub2RlLT5nZXRUeXBlKCkpLCBmYWxzZSkp
OwotICAgICAgICBUSW50ZXJtQWdncmVnYXRlICpib2R5ID0gbVBhcmVudExvb3AtPmdldEJvZHko
KTsKLSAgICAgICAgVEludGVybVNlcXVlbmNlIGVtcHR5OwotICAgICAgICBpZiAobVBhcmVudExv
b3AtPmdldFR5cGUoKSA9PSBFTG9vcERvV2hpbGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8v
IERlY2xhcmUgdGhlIHRlbXBvcmFyeSB2YXJpYWJsZSBiZWZvcmUgdGhlIGxvb3AuCi0gICAgICAg
ICAgICBUSW50ZXJtU2VxdWVuY2UgaW5zZXJ0aW9uc0JlZm9yZUxvb3A7Ci0gICAgICAgICAgICBp
bnNlcnRpb25zQmVmb3JlTG9vcC5wdXNoX2JhY2soY3JlYXRlVGVtcERlY2xhcmF0aW9uKG5vZGUt
PmdldFR5cGUoKSkpOwotICAgICAgICAgICAgaW5zZXJ0U3RhdGVtZW50c0luUGFyZW50QmxvY2so
aW5zZXJ0aW9uc0JlZm9yZUxvb3ApOwotCi0gICAgICAgICAgICAvLyBNb3ZlIGEgcGFydCBvZiBk
by13aGlsZSBsb29wIGNvbmRpdGlvbiB0byBpbnNpZGUgdGhlIGxvb3AuCi0gICAgICAgICAgICBU
SW50ZXJtU2VxdWVuY2UgaW5zZXJ0aW9uc0luTG9vcDsKLSAgICAgICAgICAgIGluc2VydGlvbnNJ
bkxvb3AucHVzaF9iYWNrKGNyZWF0ZVRlbXBBc3NpZ25tZW50KG5vZGUpKTsKLSAgICAgICAgICAg
IG1JbnNlcnRpb25zLnB1c2hfYmFjayhOb2RlSW5zZXJ0TXVsdGlwbGVFbnRyeShib2R5LCBib2R5
LT5nZXRTZXF1ZW5jZSgpLT5zaXplKCkgLSAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5LCBpbnNlcnRpb25zSW5Mb29wKSk7
Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBUaGUg
bG9vcCBpbml0aWFsaXplciBleHByZXNzaW9uIGFuZCBvbmUgY29weSBvZiB0aGUgcGFydCBvZiB0
aGUgbG9vcCBjb25kaXRpb24gYXJlCi0gICAgICAgICAgICAvLyBleGVjdXRlZCBiZWZvcmUgdGhl
IGxvb3AuIFRoZXkgbmVlZCB0byBiZSBpbiBhIG5ldyBzY29wZS4KLSAgICAgICAgICAgIFRJbnRl
cm1BZ2dyZWdhdGUgKmxvb3BTY29wZSA9IG5ldyBUSW50ZXJtQWdncmVnYXRlKEVPcFNlcXVlbmNl
KTsKLQotICAgICAgICAgICAgVEludGVybU5vZGUgKmluaXRpYWxpemVyID0gbVBhcmVudExvb3At
PmdldEluaXQoKTsKLSAgICAgICAgICAgIGlmIChpbml0aWFsaXplciAhPSBudWxscHRyKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIE1vdmUgdGhlIGluaXRpYWxpemVyIHRvIHRo
ZSBuZXdseSBjcmVhdGVkIG91dGVyIHNjb3BlLCBzbyB0aGF0IGNvbmRpdGlvbiBjYW4KLSAgICAg
ICAgICAgICAgICAvLyBkZXBlbmQgb24gaXQuCi0gICAgICAgICAgICAgICAgbVJlcGxhY2VtZW50
cy5wdXNoX2JhY2soTm9kZVVwZGF0ZUVudHJ5KG1QYXJlbnRMb29wLCBpbml0aWFsaXplciwgbnVs
bHB0ciwgZmFsc2UpKTsKLSAgICAgICAgICAgICAgICBsb29wU2NvcGUtPmdldFNlcXVlbmNlKCkt
PnB1c2hfYmFjayhpbml0aWFsaXplcik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGxv
b3BTY29wZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKGNyZWF0ZVRlbXBJbml0RGVjbGFyYXRp
b24obm9kZSkpOwotICAgICAgICAgICAgbG9vcFNjb3BlLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2Jh
Y2sobVBhcmVudExvb3ApOwotICAgICAgICAgICAgbVJlcGxhY2VtZW50cy5wdXNoX2JhY2soTm9k
ZVVwZGF0ZUVudHJ5KG1Mb29wUGFyZW50LCBtUGFyZW50TG9vcCwgbG9vcFNjb3BlLCB0cnVlKSk7
Ci0KLSAgICAgICAgICAgIC8vIFRoZSBzZWNvbmQgY29weSBvZiB0aGUgcGFydCBvZiB0aGUgbG9v
cCBjb25kaXRpb24gaXMgZXhlY3V0ZWQgaW5zaWRlIHRoZSBsb29wLgotICAgICAgICAgICAgVElu
dGVybVNlcXVlbmNlIGluc2VydGlvbnNJbkxvb3A7Ci0gICAgICAgICAgICBpbnNlcnRpb25zSW5M
b29wLnB1c2hfYmFjayhjcmVhdGVUZW1wQXNzaWdubWVudChub2RlLT5kZWVwQ29weSgpKSk7Ci0g
ICAgICAgICAgICBtSW5zZXJ0aW9ucy5wdXNoX2JhY2soTm9kZUluc2VydE11bHRpcGxlRW50cnko
Ym9keSwgYm9keS0+Z2V0U2VxdWVuY2UoKS0+c2l6ZSgpIC0gMSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXB0eSwgaW5zZXJ0aW9u
c0luTG9vcCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAg
IGlmIChtSW5Mb29wRXhwcmVzc2lvbikKLSAgICB7Ci0gICAgICAgIFRJbnRlcm1UeXBlZCAqbW92
ZWRFeHByZXNzaW9uID0gbVBhcmVudExvb3AtPmdldEV4cHJlc3Npb24oKTsKLSAgICAgICAgbVJl
cGxhY2VtZW50cy5wdXNoX2JhY2soTm9kZVVwZGF0ZUVudHJ5KG1QYXJlbnRMb29wLCBtb3ZlZEV4
cHJlc3Npb24sIG51bGxwdHIsIGZhbHNlKSk7Ci0gICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmJv
ZHkgPSBtUGFyZW50TG9vcC0+Z2V0Qm9keSgpOwotICAgICAgICBUSW50ZXJtU2VxdWVuY2UgZW1w
dHk7Ci0gICAgICAgIFRJbnRlcm1TZXF1ZW5jZSBpbnNlcnRpb25zOwotICAgICAgICBpbnNlcnRp
b25zLnB1c2hfYmFjayhtb3ZlZEV4cHJlc3Npb24pOwotICAgICAgICBtSW5zZXJ0aW9ucy5wdXNo
X2JhY2soCi0gICAgICAgICAgICBOb2RlSW5zZXJ0TXVsdGlwbGVFbnRyeShib2R5LCBib2R5LT5n
ZXRTZXF1ZW5jZSgpLT5zaXplKCkgLSAxLCBlbXB0eSwgaW5zZXJ0aW9ucykpOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB2b2lkIFVuZm9sZFNo
b3J0Q2lyY3VpdFRyYXZlcnNlcjo6bmV4dEl0ZXJhdGlvbigpCiB7CiAgICAgbUZvdW5kU2hvcnRD
aXJjdWl0ID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9Vbmlmb3JtSExTTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVW5pZm9ybUhMU0wuY3BwCShyZXZp
c2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9Vbmlmb3JtSExTTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNyBA
QAogICAgIEFTU0VSVChJc1NhbXBsZXIodHlwZS5nZXRCYXNpY1R5cGUoKSkpOwogICAgIHVuc2ln
bmVkIGludCByZWdpc3RlckluZGV4ID0gbVNhbXBsZXJSZWdpc3RlcjsKICAgICBtVW5pZm9ybVJl
Z2lzdGVyTWFwW3N0ZDo6c3RyaW5nKG5hbWUuY19zdHIoKSldID0gcmVnaXN0ZXJJbmRleDsKLSAg
ICB1bnNpZ25lZCBpbnQgcmVnaXN0ZXJDb3VudCA9IHR5cGUuaXNBcnJheSgpID8gdHlwZS5nZXRB
cnJheVNpemUoKSA6IDE7CisgICAgdW5zaWduZWQgaW50IHJlZ2lzdGVyQ291bnQgICAgICAgICAg
ICAgICAgICAgICA9IHR5cGUuaXNBcnJheSgpID8gdHlwZS5nZXRBcnJheVNpemUoKSA6IDF1Owog
ICAgIG1TYW1wbGVyUmVnaXN0ZXIgKz0gcmVnaXN0ZXJDb3VudDsKICAgICBpZiAob3V0UmVnaXN0
ZXJDb3VudCkKICAgICB7CkBAIC0xNzUsOSArMTc1LDkgQEAKICAgICAgICAgewogICAgICAgICAg
ICAgb3V0IDw8ICJzdGF0aWMgY29uc3QgdWludCAiIDw8IERlY29yYXRlSWZOZWVkZWQodW5pZm9y
bS0+Z2V0TmFtZSgpKSA8PCBBcnJheVN0cmluZyh0eXBlKQogICAgICAgICAgICAgICAgIDw8ICIg
PSB7IjsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdHlwZS5nZXRBcnJheVNpemUo
KTsgKytpKQorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDB1OyBpIDwgdHlwZS5n
ZXRBcnJheVNpemUoKTsgKytpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChp
ID4gMCkKKyAgICAgICAgICAgICAgICBpZiAoaSA+IDB1KQogICAgICAgICAgICAgICAgICAgICBv
dXQgPDwgIiwgIjsKICAgICAgICAgICAgICAgICBvdXQgPDwgKHNhbXBsZXJBcnJheUluZGV4ICsg
aSk7CiAgICAgICAgICAgICB9CkBAIC0yODEsNyArMjgxLDcgQEAKICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICBUVmVjdG9yPFRJbnRlcm1TeW1ib2wgKj4gc2FtcGxlclN5bWJvbHM7CiAg
ICAgICAgICAgICAgICAgVE1hcDxUSW50ZXJtU3ltYm9sICosIFRTdHJpbmc+IHN5bWJvbHNUb0FQ
SU5hbWVzOwotICAgICAgICAgICAgICAgIGludCBhcnJheU9mU3RydWN0c1NpemUgPSB0eXBlLmlz
QXJyYXkoKSA/IHR5cGUuZ2V0QXJyYXlTaXplKCkgOiAwOworICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBhcnJheU9mU3RydWN0c1NpemUgPSB0eXBlLmlzQXJyYXkoKSA/IHR5cGUuZ2V0QXJy
YXlTaXplKCkgOiAwdTsKICAgICAgICAgICAgICAgICB0eXBlLmNyZWF0ZVNhbXBsZXJTeW1ib2xz
KCJhbmdsZV8iICsgbmFtZS5nZXRTdHJpbmcoKSwgbmFtZS5nZXRTdHJpbmcoKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5T2ZTdHJ1Y3RzU2l6ZSwgJnNh
bXBsZXJTeW1ib2xzLCAmc3ltYm9sc1RvQVBJTmFtZXMpOwogICAgICAgICAgICAgICAgIGZvciAo
VEludGVybVN5bWJvbCAqc2FtcGxlciA6IHNhbXBsZXJTeW1ib2xzKQpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVXNlSW50ZXJmYWNlQmxvY2tG
aWVsZHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1VzZUludGVyZmFjZUJsb2NrRmllbGRzLmNwcAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Vc2VJ
bnRlcmZhY2VCbG9ja0ZpZWxkcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNTMgQEAK
Ky8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vCisKKy8vIFVzZUludGVyZmFjZUJsb2NrRmllbGRzLmNwcDogaW5zZXJ0IHN0YXRl
bWVudHMgdG8gcmVmZXJlbmNlIGFsbCBtZW1iZXJzIGluIEludGVyZmFjZUJsb2NrIGxpc3QgYXQK
Ky8vIHRoZSBiZWdpbm5pbmcgb2YgbWFpbi4gVGhpcyBpcyB0byB3b3JrIGFyb3VuZCBhIE1hYyBk
cml2ZXIgdGhhdCB0cmVhdHMgdW51c2VkIHN0YW5kYXJkL3NoYXJlZAorLy8gdW5pZm9ybSBibG9j
a3MgYXMgaW5hY3RpdmUuCisKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1VzZUludGVy
ZmFjZUJsb2NrRmllbGRzLmgiCisKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0ludGVy
bU5vZGUuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL3V0aWwuaCIKKworbmFtZXNw
YWNlIHNoCit7CisKK25hbWVzcGFjZQoreworCitjbGFzcyBVc2VVbmlmb3JtQmxvY2tNZW1iZXJz
IDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKK3sKKyAgcHVibGljOgorICAgIFVzZVVuaWZvcm1C
bG9ja01lbWJlcnMoY29uc3QgSW50ZXJmYWNlQmxvY2tMaXN0ICZibG9ja3MpCisgICAgICAgIDog
VEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2UpLCBtQmxvY2tzKGJsb2NrcyksIG1D
b2RlSW5zZXJ0ZWQoZmFsc2UpCisgICAgeworICAgIH0KKworICBwcm90ZWN0ZWQ6CisgICAgYm9v
bCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkgb3Zl
cnJpZGUgeyByZXR1cm4gIW1Db2RlSW5zZXJ0ZWQ7IH0KKyAgICBib29sIHZpc2l0RnVuY3Rpb25E
ZWZpbml0aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICpub2RlKSBv
dmVycmlkZTsKKworICBwcml2YXRlOgorICAgIHZvaWQgaW5zZXJ0VXNlQ29kZShUSW50ZXJtU2Vx
dWVuY2UgKnNlcXVlbmNlKTsKKyAgICB2b2lkIEFkZEZpZWxkVXNlU3RhdGVtZW50cyhjb25zdCBT
aGFkZXJWYXJpYWJsZSAmdmFyLCBUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlKTsKKworICAgIGNv
bnN0IEludGVyZmFjZUJsb2NrTGlzdCAmbUJsb2NrczsKKyAgICBib29sIG1Db2RlSW5zZXJ0ZWQ7
Cit9OworCitib29sIFVzZVVuaWZvcm1CbG9ja01lbWJlcnM6OnZpc2l0RnVuY3Rpb25EZWZpbml0
aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICpub2RlKQoreworICAg
IEFTU0VSVCh2aXNpdCA9PSBQcmVWaXNpdCk7CisgICAgaWYgKG5vZGUtPmdldEZ1bmN0aW9uU3lt
Ym9sSW5mbygpLT5pc01haW4oKSkKKyAgICB7CisgICAgICAgIFRJbnRlcm1CbG9jayAqYm9keSA9
IG5vZGUtPmdldEJvZHkoKTsKKyAgICAgICAgQVNTRVJUKGJvZHkpOworICAgICAgICBpbnNlcnRV
c2VDb2RlKGJvZHktPmdldFNlcXVlbmNlKCkpOworICAgICAgICBtQ29kZUluc2VydGVkID0gdHJ1
ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gIW1Db2RlSW5zZXJ0
ZWQ7Cit9CisKK3ZvaWQgVXNlVW5pZm9ybUJsb2NrTWVtYmVyczo6QWRkRmllbGRVc2VTdGF0ZW1l
bnRzKGNvbnN0IFNoYWRlclZhcmlhYmxlICZ2YXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlKQorewor
ICAgIFRTdHJpbmcgbmFtZSA9IFRTdHJpbmcodmFyLm5hbWUuY19zdHIoKSk7CisgICAgVFR5cGUg
dHlwZSAgID0gR2V0U2hhZGVyVmFyaWFibGVUeXBlKHZhcik7CisKKyAgICBpZiAodmFyLmlzQXJy
YXkoKSkKKyAgICB7CisgICAgICAgIHNpemVfdCBwb3MgPSBuYW1lLmZpbmRfbGFzdF9vZignWycp
OworICAgICAgICBpZiAocG9zICE9IFRTdHJpbmc6Om5wb3MpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG5hbWUgPSBuYW1lLnN1YnN0cigwLCBwb3MpOworICAgICAgICB9CisgICAgICAgIFRUeXBl
IGVsZW1lbnRUeXBlID0gdHlwZTsKKyAgICAgICAgZWxlbWVudFR5cGUuY2xlYXJBcnJheW5lc3Mo
KTsKKworICAgICAgICBUSW50ZXJtU3ltYm9sICphcnJheVN5bWJvbCA9IG5ldyBUSW50ZXJtU3lt
Ym9sKDAsIG5hbWUsIHR5cGUpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8
IHZhci5hcnJheVNpemU7ICsraSkKKyAgICAgICAgeworICAgICAgICAgICAgVEludGVybUJpbmFy
eSAqZWxlbWVudCA9CisgICAgICAgICAgICAgICAgbmV3IFRJbnRlcm1CaW5hcnkoRU9wSW5kZXhE
aXJlY3QsIGFycmF5U3ltYm9sLCBUSW50ZXJtVHlwZWQ6OkNyZWF0ZUluZGV4Tm9kZShpKSk7CisK
KyAgICAgICAgICAgIHNlcXVlbmNlLT5pbnNlcnQoc2VxdWVuY2UtPmJlZ2luKCksIGVsZW1lbnQp
OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKHZhci5pc1N0cnVjdCgpKQorICAgIHsK
KyAgICAgICAgVEludGVybVN5bWJvbCAqc3RydWN0U3ltYm9sID0gbmV3IFRJbnRlcm1TeW1ib2wo
MCwgbmFtZSwgdHlwZSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgdmFy
LmZpZWxkcy5zaXplKCk7ICsraSkKKyAgICAgICAgeworICAgICAgICAgICAgVEludGVybUJpbmFy
eSAqZWxlbWVudCA9IG5ldyBUSW50ZXJtQmluYXJ5KEVPcEluZGV4RGlyZWN0U3RydWN0LCBzdHJ1
Y3RTeW1ib2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVEludGVybVR5cGVkOjpDcmVhdGVJbmRleE5vZGUoaSkpOworCisgICAgICAgICAg
ICBzZXF1ZW5jZS0+aW5zZXJ0KHNlcXVlbmNlLT5iZWdpbigpLCBlbGVtZW50KTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2wg
PSBuZXcgVEludGVybVN5bWJvbCgwLCBuYW1lLCB0eXBlKTsKKworICAgICAgICBzZXF1ZW5jZS0+
aW5zZXJ0KHNlcXVlbmNlLT5iZWdpbigpLCBzeW1ib2wpOworICAgIH0KK30KKwordm9pZCBVc2VV
bmlmb3JtQmxvY2tNZW1iZXJzOjppbnNlcnRVc2VDb2RlKFRJbnRlcm1TZXF1ZW5jZSAqc2VxdWVu
Y2UpCit7CisgICAgZm9yIChjb25zdCBhdXRvICZibG9jayA6IG1CbG9ja3MpCisgICAgeworICAg
ICAgICBpZiAoYmxvY2suaW5zdGFuY2VOYW1lLmVtcHR5KCkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGZvciAoY29uc3QgYXV0byAmdmFyIDogYmxvY2suZmllbGRzKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIEFkZEZpZWxkVXNlU3RhdGVtZW50cyh2YXIsIHNlcXVlbmNlKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChibG9jay5hcnJheVNpemUg
PiAwKQorICAgICAgICB7CisgICAgICAgICAgICBUVHlwZSB0eXBlICAgICAgICAgICAgICAgICA9
IEdldEludGVyZmFjZUJsb2NrVHlwZShibG9jayk7CisgICAgICAgICAgICBUU3RyaW5nIG5hbWUg
ICAgICAgICAgICAgICA9IFRTdHJpbmcoYmxvY2suaW5zdGFuY2VOYW1lLmNfc3RyKCkpOworICAg
ICAgICAgICAgVEludGVybVN5bWJvbCAqYXJyYXlTeW1ib2wgPSBuZXcgVEludGVybVN5bWJvbCgw
LCBuYW1lLCB0eXBlKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
YmxvY2suYXJyYXlTaXplOyArK2kpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgVElu
dGVybUJpbmFyeSAqaW5zdGFuY2VTeW1ib2wgPSBuZXcgVEludGVybUJpbmFyeShFT3BJbmRleERp
cmVjdCwgYXJyYXlTeW1ib2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQ6OkNyZWF0ZUluZGV4Tm9k
ZShpKSk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaiA9IDA7IGogPCBibG9j
ay5maWVsZHMuc2l6ZSgpOyArK2opCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBUSW50ZXJtQmluYXJ5ICplbGVtZW50ID0KKyAgICAgICAgICAgICAgICAgICAgICAgIG5l
dyBUSW50ZXJtQmluYXJ5KEVPcEluZGV4RGlyZWN0SW50ZXJmYWNlQmxvY2ssIGluc3RhbmNlU3lt
Ym9sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5
cGVkOjpDcmVhdGVJbmRleE5vZGUoaikpOworICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZS0+
aW5zZXJ0KHNlcXVlbmNlLT5iZWdpbigpLCBlbGVtZW50KTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAg
ICAgICBUVHlwZSB0eXBlICAgICAgICAgICAgICAgICA9IEdldEludGVyZmFjZUJsb2NrVHlwZShi
bG9jayk7CisgICAgICAgICAgICBUU3RyaW5nIG5hbWUgICAgICAgICAgICAgICA9IFRTdHJpbmco
YmxvY2suaW5zdGFuY2VOYW1lLmNfc3RyKCkpOworICAgICAgICAgICAgVEludGVybVN5bWJvbCAq
YmxvY2tTeW1ib2wgPSBuZXcgVEludGVybVN5bWJvbCgwLCBuYW1lLCB0eXBlKTsKKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgYmxvY2suZmllbGRzLnNpemUoKTsgKytp
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFRJbnRlcm1CaW5hcnkgKmVsZW1lbnQg
PSBuZXcgVEludGVybUJpbmFyeSgKKyAgICAgICAgICAgICAgICAgICAgRU9wSW5kZXhEaXJlY3RJ
bnRlcmZhY2VCbG9jaywgYmxvY2tTeW1ib2wsIFRJbnRlcm1UeXBlZDo6Q3JlYXRlSW5kZXhOb2Rl
KGkpKTsKKworICAgICAgICAgICAgICAgIHNlcXVlbmNlLT5pbnNlcnQoc2VxdWVuY2UtPmJlZ2lu
KCksIGVsZW1lbnQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit9ICAv
LyBuYW1lc3BhY2UgYW5vbnltb3VzCisKK3ZvaWQgVXNlSW50ZXJmYWNlQmxvY2tGaWVsZHMoVElu
dGVybU5vZGUgKnJvb3QsIGNvbnN0IEludGVyZmFjZUJsb2NrTGlzdCAmYmxvY2tzKQoreworICAg
IFVzZVVuaWZvcm1CbG9ja01lbWJlcnMgdXNlVW5pZm9ybUJsb2NrKGJsb2Nrcyk7CisgICAgcm9v
dC0+dHJhdmVyc2UoJnVzZVVuaWZvcm1CbG9jayk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBzaApJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVXNl
SW50ZXJmYWNlQmxvY2tGaWVsZHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Vc2VJbnRlcmZhY2VCbG9ja0ZpZWxkcy5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1VzZUludGVyZmFjZUJsb2NrRmllbGRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwyNSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorLy8KKworLy8gVXNlSW50ZXJmYWNlQmxvY2tGaWVsZHMuaDogaW5zZXJ0
IHN0YXRlbWVudHMgdG8gcmVmZXJlbmNlIGFsbCBtZW1iZXJzIGluIEludGVyZmFjZUJsb2NrIGxp
c3QgYXQKKy8vIHRoZSBiZWdpbm5pbmcgb2YgbWFpbi4gVGhpcyBpcyB0byB3b3JrIGFyb3VuZCBh
IE1hYyBkcml2ZXIgdGhhdCB0cmVhdHMgdW51c2VkIHN0YW5kYXJkL3NoYXJlZAorLy8gdW5pZm9y
bSBibG9ja3MgYXMgaW5hY3RpdmUuCisKKyNpZm5kZWYgQ09NUElMRVJfVFJBTlNMQVRPUl9VU0VJ
TlRFUkZBQ0VCTE9DS0ZJRUxEU19IXworI2RlZmluZSBDT01QSUxFUl9UUkFOU0xBVE9SX1VTRUlO
VEVSRkFDRUJMT0NLRklFTERTX0hfCisKKyNpbmNsdWRlIDxHTFNMQU5HL1NoYWRlckxhbmcuaD4K
KworY2xhc3MgVEludGVybU5vZGU7CituYW1lc3BhY2Ugc2gKK3sKKwordXNpbmcgSW50ZXJmYWNl
QmxvY2tMaXN0ID0gc3RkOjp2ZWN0b3I8c2g6OkludGVyZmFjZUJsb2NrPjsKKwordm9pZCBVc2VJ
bnRlcmZhY2VCbG9ja0ZpZWxkcyhUSW50ZXJtTm9kZSAqcm9vdCwgY29uc3QgSW50ZXJmYWNlQmxv
Y2tMaXN0ICZibG9ja3MpOworfSAgLy8gbmFtZXNwYWNlIHNoCisKKyNlbmRpZiAgLy8gQ09NUElM
RVJfVFJBTlNMQVRPUl9VU0VJTlRFUkZBQ0VCTE9DS0ZJRUxEU19IXwpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVXRpbHNITFNMLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9VdGlsc0hMU0wuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9VdGlsc0hMU0wuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzMsNiArMTczLDggQEAKICAgICAgICAgICAgIHJldHVybiAiQ3ViZV9pbnQ0XyI7CiAg
ICAgICAgIGNhc2UgRWJ0VVNhbXBsZXJDdWJlOgogICAgICAgICAgICAgcmV0dXJuICJDdWJlX3Vp
bnQ0XyI7CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlckV4dGVybmFsT0VTOgorICAgICAgICAgICAg
cmV0dXJuICJfRXh0ZXJuYWwiOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgLy8gQWxs
IG90aGVyIHR5cGVzIGFyZSBpZGVudGlmaWVkIGJ5IHRoZWlyIGdyb3VwIHN1ZmZpeAogICAgICAg
ICAgICAgcmV0dXJuIFRleHR1cmVHcm91cFN1ZmZpeCh0eXBlKTsKQEAgLTE4MSwxMSArMTgzLDYg
QEAKIAogVFN0cmluZyBEZWNvcmF0ZVVuaWZvcm0oY29uc3QgVE5hbWUgJm5hbWUsIGNvbnN0IFRU
eXBlICZ0eXBlKQogewotICAgIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFNhbXBsZXJF
eHRlcm5hbE9FUykKLSAgICB7Ci0gICAgICAgIHJldHVybiAiZXhfIiArIG5hbWUuZ2V0U3RyaW5n
KCk7Ci0gICAgfQotCiAgICAgcmV0dXJuIERlY29yYXRlSWZOZWVkZWQobmFtZSk7CiB9CiAKQEAg
LTM5Niw0NiArMzkzLDYgQEAKICAgICByZXR1cm4gIiI7CiB9CiAKLWludCBITFNMVGV4dHVyZUNv
b3Jkc0NvdW50KGNvbnN0IFRCYXNpY1R5cGUgc2FtcGxlclR5cGUpCi17Ci0gICAgc3dpdGNoIChz
YW1wbGVyVHlwZSkKLSAgICB7Ci0gICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEOgotICAgICAgICAg
ICAgcmV0dXJuIDI7Ci0gICAgICAgIGNhc2UgRWJ0U2FtcGxlcjNEOgotICAgICAgICAgICAgcmV0
dXJuIDM7Ci0gICAgICAgIGNhc2UgRWJ0U2FtcGxlckN1YmU6Ci0gICAgICAgICAgICByZXR1cm4g
MzsKLSAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkRBcnJheToKLSAgICAgICAgICAgIHJldHVybiAz
OwotICAgICAgICBjYXNlIEVidElTYW1wbGVyMkQ6Ci0gICAgICAgICAgICByZXR1cm4gMjsKLSAg
ICAgICAgY2FzZSBFYnRJU2FtcGxlcjNEOgotICAgICAgICAgICAgcmV0dXJuIDM7Ci0gICAgICAg
IGNhc2UgRWJ0SVNhbXBsZXJDdWJlOgotICAgICAgICAgICAgcmV0dXJuIDM7Ci0gICAgICAgIGNh
c2UgRWJ0SVNhbXBsZXIyREFycmF5OgotICAgICAgICAgICAgcmV0dXJuIDM7Ci0gICAgICAgIGNh
c2UgRWJ0VVNhbXBsZXIyRDoKLSAgICAgICAgICAgIHJldHVybiAyOwotICAgICAgICBjYXNlIEVi
dFVTYW1wbGVyM0Q6Ci0gICAgICAgICAgICByZXR1cm4gMzsKLSAgICAgICAgY2FzZSBFYnRVU2Ft
cGxlckN1YmU6Ci0gICAgICAgICAgICByZXR1cm4gMzsKLSAgICAgICAgY2FzZSBFYnRVU2FtcGxl
cjJEQXJyYXk6Ci0gICAgICAgICAgICByZXR1cm4gMzsKLSAgICAgICAgY2FzZSBFYnRTYW1wbGVy
MkRTaGFkb3c6Ci0gICAgICAgICAgICByZXR1cm4gMjsKLSAgICAgICAgY2FzZSBFYnRTYW1wbGVy
Q3ViZVNoYWRvdzoKLSAgICAgICAgICAgIHJldHVybiAzOwotICAgICAgICBjYXNlIEVidFNhbXBs
ZXIyREFycmF5U2hhZG93OgotICAgICAgICAgICAgcmV0dXJuIDM7Ci0gICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQog
VFN0cmluZyBEaXNhbWJpZ3VhdGVGdW5jdGlvbk5hbWUoY29uc3QgVEludGVybVNlcXVlbmNlICpw
YXJhbWV0ZXJzKQogewogICAgIFRTdHJpbmcgZGlzYW1iaWd1YXRpbmdTdHJpbmc7CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9VdGlsc0hMU0wu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9VdGlsc0hMU0wuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVXRpbHNITFNMLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTczLDcgKzczLDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIHVzZVN0ZDE0MFBhY2tpbmcpOwogVFN0cmluZyBJbnRlcnBvbGF0aW9uU3RyaW5nKFRRdWFs
aWZpZXIgcXVhbGlmaWVyKTsKIFRTdHJpbmcgUXVhbGlmaWVyU3RyaW5nKFRRdWFsaWZpZXIgcXVh
bGlmaWVyKTsKLWludCBITFNMVGV4dHVyZUNvb3Jkc0NvdW50KGNvbnN0IFRCYXNpY1R5cGUgc2Ft
cGxlclR5cGUpOwogLy8gUGFyYW1ldGVycyBtYXkgbmVlZCB0byBiZSBpbmNsdWRlZCBpbiBmdW5j
dGlvbiBuYW1lcyB0byBkaXNhbWJpZ3VhdGUgYmV0d2VlbiBvdmVybG9hZGVkCiAvLyBmdW5jdGlv
bnMuCiBUU3RyaW5nIERpc2FtYmlndWF0ZUZ1bmN0aW9uTmFtZShjb25zdCBUSW50ZXJtU2VxdWVu
Y2UgKnBhcmFtZXRlcnMpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVMaW1pdGF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVMaW1p
dGF0aW9ucy5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlTGltaXRhdGlvbnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MjMsNyArNDIzLDggQEAKIAogICAgIGJvb2wgdmFsaWQgPSB0cnVlOwogICAg
IFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSBHZXRHbG9iYWxQYXJzZUNvbnRleHQoKS0+c3lt
Ym9sVGFibGU7Ci0gICAgVFN5bWJvbCogc3ltYm9sID0gc3ltYm9sVGFibGUuZmluZChub2RlLT5n
ZXROYW1lKCksIEdldEdsb2JhbFBhcnNlQ29udGV4dCgpLT5nZXRTaGFkZXJWZXJzaW9uKCkpOwor
ICAgIFRTeW1ib2wgKnN5bWJvbCAgICAgICAgICAgPSBzeW1ib2xUYWJsZS5maW5kKG5vZGUtPmdl
dEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5nZXROYW1lKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHZXRHbG9iYWxQYXJzZUNvbnRleHQoKS0+Z2V0U2hhZGVyVmVyc2lv
bigpKTsKICAgICBBU1NFUlQoc3ltYm9sICYmIHN5bWJvbC0+aXNGdW5jdGlvbigpKTsKICAgICBU
RnVuY3Rpb24gKmZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8VEZ1bmN0aW9uICo+KHN5bWJvbCk7CiAg
ICAgZm9yIChQYXJhbUluZGV4Ojpjb25zdF9pdGVyYXRvciBpID0gcEluZGV4LmJlZ2luKCk7Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxp
ZGF0ZU91dHB1dHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlT3V0cHV0cy5jcHAJKHJldmlzaW9uIDIwODAy
MSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Zh
bGlkYXRlT3V0cHV0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEwICszNCwxMCBAQAogICAg
IFRTdHJpbmcgbmFtZSA9IHN5bWJvbC0+Z2V0U3ltYm9sKCk7CiAgICAgVFF1YWxpZmllciBxdWFs
aWZpZXIgPSBzeW1ib2wtPmdldFF1YWxpZmllcigpOwogCi0gICAgaWYgKG1WaXNpdGVkU3ltYm9s
cy5jb3VudChuYW1lKSA9PSAxKQorICAgIGlmIChtVmlzaXRlZFN5bWJvbHMuY291bnQobmFtZS5j
X3N0cigpKSA9PSAxKQogICAgICAgICByZXR1cm47CiAKLSAgICBtVmlzaXRlZFN5bWJvbHMuaW5z
ZXJ0KG5hbWUpOworICAgIG1WaXNpdGVkU3ltYm9scy5pbnNlcnQobmFtZS5jX3N0cigpKTsKIAog
ICAgIGlmIChxdWFsaWZpZXIgPT0gRXZxRnJhZ21lbnRPdXQpCiAgICAgewpAQCAtNjAsNyArNjAs
NyBAQAogICAgIGZvciAoY29uc3QgYXV0byAmc3ltYm9sIDogbU91dHB1dHMpCiAgICAgewogICAg
ICAgICBjb25zdCBUVHlwZSAmdHlwZSAgICAgICAgID0gc3ltYm9sLT5nZXRUeXBlKCk7Ci0gICAg
ICAgIGNvbnN0IHNpemVfdCBlbGVtZW50Q291bnQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHR5cGUu
aXNBcnJheSgpID8gdHlwZS5nZXRBcnJheVNpemUoKSA6IDEpOworICAgICAgICBjb25zdCBzaXpl
X3QgZWxlbWVudENvdW50ID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pih0eXBlLmlzQXJyYXkoKSA/IHR5
cGUuZ2V0QXJyYXlTaXplKCkgOiAxdSk7CiAgICAgICAgIGNvbnN0IHNpemVfdCBsb2NhdGlvbiAg
ICAgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHR5cGUuZ2V0TGF5b3V0UXVhbGlmaWVyKCkubG9jYXRp
b24pOwogCiAgICAgICAgIEFTU0VSVCh0eXBlLmdldExheW91dFF1YWxpZmllcigpLmxvY2F0aW9u
ICE9IC0xKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1ZhbGlkYXRlT3V0cHV0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlT3V0cHV0cy5oCShyZXZpc2lv
biAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9WYWxpZGF0ZU91dHB1dHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAog
ICAgIHR5cGVkZWYgc3RkOjp2ZWN0b3I8VEludGVybVN5bWJvbCAqPiBPdXRwdXRWZWN0b3I7CiAg
ICAgT3V0cHV0VmVjdG9yIG1PdXRwdXRzOwogICAgIE91dHB1dFZlY3RvciBtVW5zcGVjaWZpZWRM
b2NhdGlvbk91dHB1dHM7Ci0gICAgc3RkOjpzZXQ8VFN0cmluZz4gbVZpc2l0ZWRTeW1ib2xzOwor
ICAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiBtVmlzaXRlZFN5bWJvbHM7CiB9OwogCiAjZW5kaWYg
Ly8gQ09NUElMRVJfVFJBTlNMQVRPUl9WQUxJREFURU9VVFBVVFNfSF8KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlU3dpdGNoLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9WYWxpZGF0ZVN3aXRjaC5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlU3dpdGNoLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOCw4ICs4LDEwIEBACiAKICNpbmNsdWRlICJjb21waWxlci90
cmFuc2xhdG9yL1BhcnNlQ29udGV4dC5oIgogCi1ib29sIFZhbGlkYXRlU3dpdGNoOjp2YWxpZGF0
ZShUQmFzaWNUeXBlIHN3aXRjaFR5cGUsIFRQYXJzZUNvbnRleHQgKmNvbnRleHQsCi0gICAgVElu
dGVybUFnZ3JlZ2F0ZSAqc3RhdGVtZW50TGlzdCwgY29uc3QgVFNvdXJjZUxvYyAmbG9jKQorYm9v
bCBWYWxpZGF0ZVN3aXRjaDo6dmFsaWRhdGUoVEJhc2ljVHlwZSBzd2l0Y2hUeXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVFBhcnNlQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1CbG9jayAqc3RhdGVtZW50TGlzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvYykKIHsKICAgICBW
YWxpZGF0ZVN3aXRjaCB2YWxpZGF0ZShzd2l0Y2hUeXBlLCBjb250ZXh0KTsKICAgICBBU1NFUlQo
c3RhdGVtZW50TGlzdCk7CkBAIC01OSwxMSArNjEsMTkgQEAKIHsKICAgICBpZiAoIW1GaXJzdENh
c2VGb3VuZCkKICAgICAgICAgbVN0YXRlbWVudEJlZm9yZUNhc2UgPSB0cnVlOworICAgIG1MYXN0
U3RhdGVtZW50V2FzQ2FzZSAgICA9IGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IFZhbGlkYXRlU3dpdGNoOjp2aXNpdFRlcm5hcnkoVmlzaXQsIFRJbnRlcm1UZXJuYXJ5ICopCit7
CisgICAgaWYgKCFtRmlyc3RDYXNlRm91bmQpCisgICAgICAgIG1TdGF0ZW1lbnRCZWZvcmVDYXNl
ID0gdHJ1ZTsKICAgICBtTGFzdFN0YXRlbWVudFdhc0Nhc2UgPSBmYWxzZTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVN3aXRjaDo6dmlzaXRTZWxlY3Rpb24oVmlzaXQgdmlz
aXQsIFRJbnRlcm1TZWxlY3Rpb24gKikKK2Jvb2wgVmFsaWRhdGVTd2l0Y2g6OnZpc2l0SWZFbHNl
KFZpc2l0IHZpc2l0LCBUSW50ZXJtSWZFbHNlICopCiB7CiAgICAgaWYgKHZpc2l0ID09IFByZVZp
c2l0KQogICAgICAgICArK21Db250cm9sRmxvd0RlcHRoOwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVTd2l0Y2guaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9W
YWxpZGF0ZVN3aXRjaC5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZVN3aXRjaC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNiwxNCArMTYsMTcgQEAKICAgcHVibGljOgogICAgIC8vIENoZWNrIGZvciBlcnJv
cnMgYW5kIG91dHB1dCBtZXNzYWdlcyBhbnkgcmVtYWluaW5nIGVycm9ycyBvbiB0aGUgY29udGV4
dC4KICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgYXJlIG5vIGVycm9ycy4KLSAgICBzdGF0
aWMgYm9vbCB2YWxpZGF0ZShUQmFzaWNUeXBlIHN3aXRjaFR5cGUsIFRQYXJzZUNvbnRleHQgKmNv
bnRleHQsCi0gICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnN0YXRlbWVudExpc3QsIGNvbnN0IFRT
b3VyY2VMb2MgJmxvYyk7CisgICAgc3RhdGljIGJvb2wgdmFsaWRhdGUoVEJhc2ljVHlwZSBzd2l0
Y2hUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgIFRQYXJzZUNvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybUJsb2NrICpzdGF0ZW1lbnRMaXN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvYyk7CiAKICAgICB2
b2lkIHZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wgKikgb3ZlcnJpZGU7CiAgICAgdm9pZCB2aXNp
dENvbnN0YW50VW5pb24oVEludGVybUNvbnN0YW50VW5pb24gKikgb3ZlcnJpZGU7CiAgICAgYm9v
bCB2aXNpdEJpbmFyeShWaXNpdCwgVEludGVybUJpbmFyeSAqKSBvdmVycmlkZTsKICAgICBib29s
IHZpc2l0VW5hcnkoVmlzaXQsIFRJbnRlcm1VbmFyeSAqKSBvdmVycmlkZTsKLSAgICBib29sIHZp
c2l0U2VsZWN0aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtU2VsZWN0aW9uICopIG92ZXJyaWRlOwor
ICAgIGJvb2wgdmlzaXRUZXJuYXJ5KFZpc2l0LCBUSW50ZXJtVGVybmFyeSAqKSBvdmVycmlkZTsK
KyAgICBib29sIHZpc2l0SWZFbHNlKFZpc2l0IHZpc2l0LCBUSW50ZXJtSWZFbHNlICopIG92ZXJy
aWRlOwogICAgIGJvb2wgdmlzaXRTd2l0Y2goVmlzaXQsIFRJbnRlcm1Td2l0Y2ggKikgb3ZlcnJp
ZGU7CiAgICAgYm9vbCB2aXNpdENhc2UoVmlzaXQsIFRJbnRlcm1DYXNlICpub2RlKSBvdmVycmlk
ZTsKICAgICBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICopIG92
ZXJyaWRlOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvVmFyaWFibGVJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYXJpYWJsZUluZm8uY3BwCShyZXZpc2lvbiAy
MDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9WYXJpYWJsZUluZm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw1OCArMzEsNiBAQAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZtYXBwZWROYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbWFya1N0YXRpY1VzZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxTaGFkZXJWYXJpYWJsZT4g
KmV4cGFuZGVkKTsKLQotdm9pZCBFeHBhbmRWYXJpYWJsZShjb25zdCBTaGFkZXJWYXJpYWJsZSAm
dmFyaWFibGUsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lLAot
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmbWFwcGVkTmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgYm9vbCBtYXJrU3RhdGljVXNlLAotICAgICAgICAgICAgICAgICAgICBz
dGQ6OnZlY3RvcjxTaGFkZXJWYXJpYWJsZT4gKmV4cGFuZGVkKQotewotICAgIGlmICh2YXJpYWJs
ZS5pc1N0cnVjdCgpKQotICAgIHsKLSAgICAgICAgaWYgKHZhcmlhYmxlLmlzQXJyYXkoKSkKLSAg
ICAgICAgewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgZWxlbWVudEluZGV4ID0gMDsg
ZWxlbWVudEluZGV4IDwgdmFyaWFibGUuZWxlbWVudENvdW50KCk7Ci0gICAgICAgICAgICAgICAg
IGVsZW1lbnRJbmRleCsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0ZDo6c3Ry
aW5nIGxuYW1lID0gbmFtZSArIDo6QXJyYXlTdHJpbmcoZWxlbWVudEluZGV4KTsKLSAgICAgICAg
ICAgICAgICBzdGQ6OnN0cmluZyBsbWFwcGVkTmFtZSA9IG1hcHBlZE5hbWUgKyA6OkFycmF5U3Ry
aW5nKGVsZW1lbnRJbmRleCk7Ci0gICAgICAgICAgICAgICAgRXhwYW5kVXNlckRlZmluZWRWYXJp
YWJsZSh2YXJpYWJsZSwgbG5hbWUsIGxtYXBwZWROYW1lLCBtYXJrU3RhdGljVXNlLCBleHBhbmRl
ZCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0g
ICAgICAgICAgICBFeHBhbmRVc2VyRGVmaW5lZFZhcmlhYmxlKHZhcmlhYmxlLCBuYW1lLCBtYXBw
ZWROYW1lLCBtYXJrU3RhdGljVXNlLCBleHBhbmRlZCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
ZWxzZQotICAgIHsKLSAgICAgICAgU2hhZGVyVmFyaWFibGUgZXhwYW5kZWRWYXIgPSB2YXJpYWJs
ZTsKLQotICAgICAgICBleHBhbmRlZFZhci5uYW1lID0gbmFtZTsKLSAgICAgICAgZXhwYW5kZWRW
YXIubWFwcGVkTmFtZSA9IG1hcHBlZE5hbWU7Ci0KLSAgICAgICAgLy8gTWFyayBhbGwgZXhwYW5k
ZWQgZmllbGRzIGFzIHVzZWQgaWYgdGhlIHBhcmVudCBpcyB1c2VkCi0gICAgICAgIGlmIChtYXJr
U3RhdGljVXNlKQotICAgICAgICB7Ci0gICAgICAgICAgICBleHBhbmRlZFZhci5zdGF0aWNVc2Ug
PSB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGV4cGFuZGVkVmFyLmlzQXJyYXkoKSkK
LSAgICAgICAgewotICAgICAgICAgICAgZXhwYW5kZWRWYXIubmFtZSArPSAiWzBdIjsKLSAgICAg
ICAgICAgIGV4cGFuZGVkVmFyLm1hcHBlZE5hbWUgKz0gIlswXSI7Ci0gICAgICAgIH0KLQotICAg
ICAgICBleHBhbmRlZC0+cHVzaF9iYWNrKGV4cGFuZGVkVmFyKTsKLSAgICB9Ci19Ci0KLXZvaWQg
RXhwYW5kVXNlckRlZmluZWRWYXJpYWJsZShjb25zdCBTaGFkZXJWYXJpYWJsZSAmdmFyaWFibGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm1hcHBl
ZE5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBtYXJrU3RhdGljVXNl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPFNoYWRlclZhcmlh
YmxlPiAqZXhwYW5kZWQpCiB7CiAgICAgQVNTRVJUKHZhcmlhYmxlLmlzU3RydWN0KCkpOwpAQCAt
MTIyLDcgKzcwLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2
ZWN0b3I8c2g6OlZhcnlpbmc+ICp2YXJ5aW5ncywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjp2ZWN0b3I8c2g6OkludGVyZmFjZUJsb2NrPiAqaW50ZXJmYWNlQmxvY2tz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaEhhc2hGdW5jdGlvbjY0IGhh
c2hGdW5jdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN5
bWJvbFRhYmxlICZzeW1ib2xUYWJsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVEV4dGVuc2lvbkJlaGF2aW9yICZleHRlbnNpb25CZWhhdmlv
cikKICAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKSwKICAgICAgIG1B
dHRyaWJzKGF0dHJpYnMpLAogICAgICAgbU91dHB1dFZhcmlhYmxlcyhvdXRwdXRWYXJpYWJsZXMp
LApAQCAtMTQ1LDcgKzk0LDggQEAKICAgICAgIG1TZWNvbmRhcnlGcmFnQ29sb3JFWFRBZGRlZChm
YWxzZSksCiAgICAgICBtU2Vjb25kYXJ5RnJhZ0RhdGFFWFRBZGRlZChmYWxzZSksCiAgICAgICBt
SGFzaEZ1bmN0aW9uKGhhc2hGdW5jdGlvbiksCi0gICAgICBtU3ltYm9sVGFibGUoc3ltYm9sVGFi
bGUpCisgICAgICBtU3ltYm9sVGFibGUoc3ltYm9sVGFibGUpLAorICAgICAgbUV4dGVuc2lvbkJl
aGF2aW9yKGV4dGVuc2lvbkJlaGF2aW9yKQogewogfQogCkBAIC00MDEsMTAgKzM1MSwxNyBAQAog
ICAgICAgICAgICAgICAgICAgaW5mby5uYW1lICAgICAgICAgID0ga05hbWU7CiAgICAgICAgICAg
ICAgICAgICBpbmZvLm1hcHBlZE5hbWUgICAgPSBrTmFtZTsKICAgICAgICAgICAgICAgICAgIGlu
Zm8udHlwZSAgICAgICAgICA9IEdMX0ZMT0FUX1ZFQzQ7Ci0gICAgICAgICAgICAgICAgICBpbmZv
LmFycmF5U2l6ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRWYXJpYWJsZSAqPigKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbigiZ2xf
TWF4RHJhd0J1ZmZlcnMiLCAxMDApKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLT5nZXRDb25zdFBvaW50ZXIoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLT5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgIGlmICg6OklzRXh0ZW5z
aW9uRW5hYmxlZChtRXh0ZW5zaW9uQmVoYXZpb3IsICJHTF9FWFRfZHJhd19idWZmZXJzIikpCisg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgaW5mby5hcnJheVNpemUg
PSBzdGF0aWNfY2FzdDxjb25zdCBUVmFyaWFibGUgKj4oCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbVN5bWJvbFRhYmxlLmZpbmRCdWlsdEluKCJnbF9NYXhEcmF3
QnVmZmVycyIsIDEwMCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLT5nZXRDb25zdFBvaW50ZXIoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC0+Z2V0SUNvbnN0KCk7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
aW5mby5hcnJheVNpemUgPSAxOworICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgaW5mby5wcmVjaXNpb24gPSBHTF9NRURJVU1fRkxPQVQ7ICAvLyBEZWZpbmVkIGJ5IHNwZWMu
CiAgICAgICAgICAgICAgICAgICBpbmZvLnN0YXRpY1VzZSA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgICBtT3V0cHV0VmFyaWFibGVzLT5wdXNoX2JhY2soaW5mbyk7CkBAIC01MjAsNyArNDc3LDcg
QEAKICAgICBhdHRyaWJ1dGUudHlwZSA9IEdMVmFyaWFibGVUeXBlKHR5cGUpOwogICAgIGF0dHJp
YnV0ZS5wcmVjaXNpb24gPSBHTFZhcmlhYmxlUHJlY2lzaW9uKHR5cGUpOwogICAgIGF0dHJpYnV0
ZS5uYW1lID0gdmFyaWFibGUtPmdldFN5bWJvbCgpLmNfc3RyKCk7Ci0gICAgYXR0cmlidXRlLmFy
cmF5U2l6ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4odHlwZS5nZXRBcnJheVNpemUoKSk7
CisgICAgYXR0cmlidXRlLmFycmF5U2l6ZSAgPSB0eXBlLmdldEFycmF5U2l6ZSgpOwogICAgIGF0
dHJpYnV0ZS5tYXBwZWROYW1lID0gVEludGVybVRyYXZlcnNlcjo6aGFzaCh2YXJpYWJsZS0+Z2V0
U3ltYm9sKCksIG1IYXNoRnVuY3Rpb24pLmNfc3RyKCk7CiAgICAgYXR0cmlidXRlLmxvY2F0aW9u
ID0gdmFyaWFibGUtPmdldFR5cGUoKS5nZXRMYXlvdXRRdWFsaWZpZXIoKS5sb2NhdGlvbjsKIApA
QCAtNTQwLDcgKzQ5Nyw3IEBACiAgICAgYXR0cmlidXRlLnR5cGUgICAgICAgPSBHTFZhcmlhYmxl
VHlwZSh0eXBlKTsKICAgICBhdHRyaWJ1dGUucHJlY2lzaW9uICA9IEdMVmFyaWFibGVQcmVjaXNp
b24odHlwZSk7CiAgICAgYXR0cmlidXRlLm5hbWUgICAgICAgPSB2YXJpYWJsZS0+Z2V0U3ltYm9s
KCkuY19zdHIoKTsKLSAgICBhdHRyaWJ1dGUuYXJyYXlTaXplICA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkIGludD4odHlwZS5nZXRBcnJheVNpemUoKSk7CisgICAgYXR0cmlidXRlLmFycmF5U2l6ZSAg
PSB0eXBlLmdldEFycmF5U2l6ZSgpOwogICAgIGF0dHJpYnV0ZS5tYXBwZWROYW1lID0gVEludGVy
bVRyYXZlcnNlcjo6aGFzaCh2YXJpYWJsZS0+Z2V0U3ltYm9sKCksIG1IYXNoRnVuY3Rpb24pLmNf
c3RyKCk7CiAgICAgYXR0cmlidXRlLmxvY2F0aW9uICAgPSB2YXJpYWJsZS0+Z2V0VHlwZSgpLmdl
dExheW91dFF1YWxpZmllcigpLmxvY2F0aW9uOwogCkBAIC02NzcsNiArNjM0LDUyIEBACiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgRXhwYW5kVmFyaWFibGUoY29uc3QgU2hhZGVyVmFyaWFi
bGUgJnZhcmlhYmxlLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmbmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm1hcHBlZE5hbWUsCisg
ICAgICAgICAgICAgICAgICAgIGJvb2wgbWFya1N0YXRpY1VzZSwKKyAgICAgICAgICAgICAgICAg
ICAgc3RkOjp2ZWN0b3I8U2hhZGVyVmFyaWFibGU+ICpleHBhbmRlZCkKK3sKKyAgICBpZiAodmFy
aWFibGUuaXNTdHJ1Y3QoKSkKKyAgICB7CisgICAgICAgIGlmICh2YXJpYWJsZS5pc0FycmF5KCkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGVsZW1lbnRJbmRleCA9
IDA7IGVsZW1lbnRJbmRleCA8IHZhcmlhYmxlLmVsZW1lbnRDb3VudCgpOworICAgICAgICAgICAg
ICAgICBlbGVtZW50SW5kZXgrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzdGQ6
OnN0cmluZyBsbmFtZSAgICAgICA9IG5hbWUgKyA6OkFycmF5U3RyaW5nKGVsZW1lbnRJbmRleCk7
CisgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgbG1hcHBlZE5hbWUgPSBtYXBwZWROYW1lICsg
OjpBcnJheVN0cmluZyhlbGVtZW50SW5kZXgpOworICAgICAgICAgICAgICAgIEV4cGFuZFVzZXJE
ZWZpbmVkVmFyaWFibGUodmFyaWFibGUsIGxuYW1lLCBsbWFwcGVkTmFtZSwgbWFya1N0YXRpY1Vz
ZSwgZXhwYW5kZWQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAg
ICAgICAgeworICAgICAgICAgICAgRXhwYW5kVXNlckRlZmluZWRWYXJpYWJsZSh2YXJpYWJsZSwg
bmFtZSwgbWFwcGVkTmFtZSwgbWFya1N0YXRpY1VzZSwgZXhwYW5kZWQpOworICAgICAgICB9Cisg
ICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIFNoYWRlclZhcmlhYmxlIGV4cGFuZGVkVmFy
ID0gdmFyaWFibGU7CisKKyAgICAgICAgZXhwYW5kZWRWYXIubmFtZSAgICAgICA9IG5hbWU7Cisg
ICAgICAgIGV4cGFuZGVkVmFyLm1hcHBlZE5hbWUgPSBtYXBwZWROYW1lOworCisgICAgICAgIC8v
IE1hcmsgYWxsIGV4cGFuZGVkIGZpZWxkcyBhcyB1c2VkIGlmIHRoZSBwYXJlbnQgaXMgdXNlZAor
ICAgICAgICBpZiAobWFya1N0YXRpY1VzZSkKKyAgICAgICAgeworICAgICAgICAgICAgZXhwYW5k
ZWRWYXIuc3RhdGljVXNlID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChleHBhbmRl
ZFZhci5pc0FycmF5KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGV4cGFuZGVkVmFyLm5hbWUg
Kz0gIlswXSI7CisgICAgICAgICAgICBleHBhbmRlZFZhci5tYXBwZWROYW1lICs9ICJbMF0iOwor
ICAgICAgICB9CisKKyAgICAgICAgZXhwYW5kZWQtPnB1c2hfYmFjayhleHBhbmRlZFZhcik7Cisg
ICAgfQorfQorCiB2b2lkIEV4cGFuZFVuaWZvcm1zKGNvbnN0IHN0ZDo6dmVjdG9yPFVuaWZvcm0+
ICZjb21wYWN0LAogICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxTaGFkZXJWYXJpYWJs
ZT4gKmV4cGFuZGVkKQogewpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvVmFyaWFibGVJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFyaWFibGVJbmZvLmgJKHJldmlz
aW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1ZhcmlhYmxlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC05LDYgKzksNyBAQAogCiAj
aW5jbHVkZSA8R0xTTEFORy9TaGFkZXJMYW5nLmg+CiAKKyNpbmNsdWRlICJjb21waWxlci90cmFu
c2xhdG9yL0V4dGVuc2lvbkJlaGF2aW9yLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRv
ci9JbnRlcm1Ob2RlLmgiCiAKIGNsYXNzIFRTeW1ib2xUYWJsZTsKQEAgLTI2LDcgKzI3LDggQEAK
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPFZhcnlpbmc+ICp2YXJ5aW5ncywKICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPEludGVyZmFjZUJsb2NrPiAqaW50ZXJmYWNl
QmxvY2tzLAogICAgICAgICAgICAgICAgICAgICAgU2hIYXNoRnVuY3Rpb242NCBoYXNoRnVuY3Rp
b24sCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxl
KTsKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFibGUs
CisgICAgICAgICAgICAgICAgICAgICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3IgJmV4dGVuc2lv
bkJlaGF2aW9yKTsKIAogICAgIHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqc3ltYm9s
KSBvdmVycmlkZTsKICAgICBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0LCBUSW50ZXJtQWdncmVn
YXRlICpub2RlKSBvdmVycmlkZTsKQEAgLTY3LDggKzY5LDE1IEBACiAgICAgU2hIYXNoRnVuY3Rp
b242NCBtSGFzaEZ1bmN0aW9uOwogCiAgICAgY29uc3QgVFN5bWJvbFRhYmxlICZtU3ltYm9sVGFi
bGU7CisgICAgY29uc3QgVEV4dGVuc2lvbkJlaGF2aW9yICZtRXh0ZW5zaW9uQmVoYXZpb3I7CiB9
OwogCit2b2lkIEV4cGFuZFZhcmlhYmxlKGNvbnN0IFNoYWRlclZhcmlhYmxlICZ2YXJpYWJsZSwK
KyAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsCisgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZtYXBwZWROYW1lLAorICAgICAgICAgICAgICAg
ICAgICBib29sIG1hcmtTdGF0aWNVc2UsCisgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9y
PFNoYWRlclZhcmlhYmxlPiAqZXhwYW5kZWQpOworCiAvLyBFeHBhbmQgc3RydWN0IHVuaWZvcm1z
IHRvIGZsYXR0ZW5lZCBsaXN0cyBvZiBzcGxpdCB2YXJpYWJsZXMKIHZvaWQgRXhwYW5kVW5pZm9y
bXMoY29uc3Qgc3RkOjp2ZWN0b3I8VW5pZm9ybT4gJmNvbXBhY3QsCiAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6dmVjdG9yPFNoYWRlclZhcmlhYmxlPiAqZXhwYW5kZWQpOwpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFyaWFibGVQYWNrZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1ZhcmlhYmxlUGFja2VyLmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFyaWFibGVQYWNrZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsMTYgKzE0OCwyMiBAQAogICAgIHJldHVybiB0cnVl
OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVmFyVD4KLWJvb2wgVmFyaWFibGVQYWNrZXI6OkNo
ZWNrVmFyaWFibGVzV2l0aGluUGFja2luZ0xpbWl0cyh1bnNpZ25lZCBpbnQgbWF4VmVjdG9ycywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnZlY3RvcjxWYXJUPiAmaW5fdmFyaWFibGVzKQorYm9vbCBWYXJpYWJsZVBhY2tl
cjo6Q2hlY2tWYXJpYWJsZXNXaXRoaW5QYWNraW5nTGltaXRzKAorICAgIHVuc2lnbmVkIGludCBt
YXhWZWN0b3JzLAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpTaGFkZXJWYXJpYWJsZT4gJmlu
X3ZhcmlhYmxlcykKIHsKICAgICBBU1NFUlQobWF4VmVjdG9ycyA+IDApOwogICAgIG1heFJvd3Nf
ID0gbWF4VmVjdG9yczsKICAgICB0b3BOb25GdWxsUm93XyA9IDA7CiAgICAgYm90dG9tTm9uRnVs
bFJvd18gPSBtYXhSb3dzXyAtIDE7Ci0gICAgc3RkOjp2ZWN0b3I8VmFyVD4gdmFyaWFibGVzKGlu
X3ZhcmlhYmxlcyk7CisgICAgc3RkOjp2ZWN0b3I8c2g6OlNoYWRlclZhcmlhYmxlPiB2YXJpYWJs
ZXM7CiAKKyAgICBmb3IgKGNvbnN0IGF1dG8gJnZhcmlhYmxlIDogaW5fdmFyaWFibGVzKQorICAg
IHsKKyAgICAgICAgRXhwYW5kVmFyaWFibGUodmFyaWFibGUsIHZhcmlhYmxlLm5hbWUsIHZhcmlh
YmxlLm1hcHBlZE5hbWUsIHZhcmlhYmxlLnN0YXRpY1VzZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgJnZhcmlhYmxlcyk7CisgICAgfQorCiAgICAgLy8gQ2hlY2sgd2hldGhlciBlYWNoIHZhcmlh
YmxlIGZpdHMgaW4gdGhlIGF2YWlsYWJsZSB2ZWN0b3JzLgogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgdmFyaWFibGVzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGNvbnN0IHNoOjpTaGFkZXJW
YXJpYWJsZSAmdmFyaWFibGUgPSB2YXJpYWJsZXNbaV07CkBAIC0yNjEsOSArMjY3LDMgQEAKIAog
ICAgIHJldHVybiB0cnVlOwogfQotCi0vLyBJbnN0YW50aWF0ZSBhbGwgcG9zc2libGUgdmFyaWFi
bGUgcGFja2luZ3MKLXRlbXBsYXRlIGJvb2wgVmFyaWFibGVQYWNrZXI6OkNoZWNrVmFyaWFibGVz
V2l0aGluUGFja2luZ0xpbWl0cyh1bnNpZ25lZCBpbnQsIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpT
aGFkZXJWYXJpYWJsZT4gJik7Ci10ZW1wbGF0ZSBib29sIFZhcmlhYmxlUGFja2VyOjpDaGVja1Zh
cmlhYmxlc1dpdGhpblBhY2tpbmdMaW1pdHModW5zaWduZWQgaW50LCBjb25zdCBzdGQ6OnZlY3Rv
cjxzaDo6QXR0cmlidXRlPiAmKTsKLXRlbXBsYXRlIGJvb2wgVmFyaWFibGVQYWNrZXI6OkNoZWNr
VmFyaWFibGVzV2l0aGluUGFja2luZ0xpbWl0cyh1bnNpZ25lZCBpbnQsIGNvbnN0IHN0ZDo6dmVj
dG9yPHNoOjpVbmlmb3JtPiAmKTsKLXRlbXBsYXRlIGJvb2wgVmFyaWFibGVQYWNrZXI6OkNoZWNr
VmFyaWFibGVzV2l0aGluUGFja2luZ0xpbWl0cyh1bnNpZ25lZCBpbnQsIGNvbnN0IHN0ZDo6dmVj
dG9yPHNoOjpWYXJ5aW5nPiAmKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL1ZhcmlhYmxlUGFja2VyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFyaWFibGVQYWNrZXIu
aAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvVmFyaWFibGVQYWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTIsMzAg
KzEyLDI5IEBACiAKIGNsYXNzIFZhcmlhYmxlUGFja2VyIHsKICBwdWJsaWM6Ci0gICAgLy8gUmV0
dXJucyB0cnVlIGlmIHRoZSBwYXNzZWQgaW4gdmFyaWFibGVzIHBhY2sgaW4gbWF4VmVjdG9ycyBm
b2xsb3dpbmcKLSAgICAvLyB0aGUgcGFja2luZyBydWxlcyBmcm9tIHRoZSBHTFNMIDEuMDE3IHNw
ZWMsIEFwcGVuZGl4IEEsIHNlY3Rpb24gNy4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmFyVD4K
LSAgICBib29sIENoZWNrVmFyaWFibGVzV2l0aGluUGFja2luZ0xpbWl0cyh1bnNpZ25lZCBpbnQg
bWF4VmVjdG9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnZlY3RvcjxWYXJUPiAmaW5fdmFyaWFibGVzKTsKKyAgIC8vIFJldHVybnMgdHJ1
ZSBpZiB0aGUgcGFzc2VkIGluIHZhcmlhYmxlcyBwYWNrIGluIG1heFZlY3RvcnMgZm9sbG93aW5n
CisgICAvLyB0aGUgcGFja2luZyBydWxlcyBmcm9tIHRoZSBHTFNMIDEuMDE3IHNwZWMsIEFwcGVu
ZGl4IEEsIHNlY3Rpb24gNy4KKyAgIGJvb2wgQ2hlY2tWYXJpYWJsZXNXaXRoaW5QYWNraW5nTGlt
aXRzKHVuc2lnbmVkIGludCBtYXhWZWN0b3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlNoYWRlclZhcmlhYmxlPiAmaW5f
dmFyaWFibGVzKTsKIAotICAgIC8vIEdldHMgaG93IG1hbnkgY29tcG9uZW50cyBpbiBhIHJvdyBh
IGRhdGEgdHlwZSB0YWtlcy4KLSAgICBzdGF0aWMgaW50IEdldE51bUNvbXBvbmVudHNQZXJSb3co
c2g6OkdMZW51bSB0eXBlKTsKKyAgIC8vIEdldHMgaG93IG1hbnkgY29tcG9uZW50cyBpbiBhIHJv
dyBhIGRhdGEgdHlwZSB0YWtlcy4KKyAgIHN0YXRpYyBpbnQgR2V0TnVtQ29tcG9uZW50c1BlclJv
dyhzaDo6R0xlbnVtIHR5cGUpOwogCi0gICAgLy8gR2V0cyBob3cgbWFueSByb3dzIGEgZGF0YSB0
eXBlIHRha2VzLgotICAgIHN0YXRpYyBpbnQgR2V0TnVtUm93cyhzaDo6R0xlbnVtIHR5cGUpOwor
ICAgLy8gR2V0cyBob3cgbWFueSByb3dzIGEgZGF0YSB0eXBlIHRha2VzLgorICAgc3RhdGljIGlu
dCBHZXROdW1Sb3dzKHNoOjpHTGVudW0gdHlwZSk7CiAKLSAgcHJpdmF0ZToKLSAgICBzdGF0aWMg
Y29uc3QgaW50IGtOdW1Db2x1bW5zID0gNDsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQga0Nv
bHVtbk1hc2sgPSAoMSA8PCBrTnVtQ29sdW1ucykgLSAxOworIHByaXZhdGU6CisgICBzdGF0aWMg
Y29uc3QgaW50IGtOdW1Db2x1bW5zICAgICAgPSA0OworICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGtDb2x1bW5NYXNrID0gKDEgPDwga051bUNvbHVtbnMpIC0gMTsKIAotICAgIHVuc2lnbmVkIG1h
a2VDb2x1bW5GbGFncyhpbnQgY29sdW1uLCBpbnQgbnVtQ29tcG9uZW50c1BlclJvdyk7Ci0gICAg
dm9pZCBmaWxsQ29sdW1ucyhpbnQgdG9wUm93LCBpbnQgbnVtUm93cywgaW50IGNvbHVtbiwgaW50
IG51bUNvbXBvbmVudHNQZXJSb3cpOwotICAgIGJvb2wgc2VhcmNoQ29sdW1uKGludCBjb2x1bW4s
IGludCBudW1Sb3dzLCBpbnQqIGRlc3RSb3csIGludCogZGVzdFNpemUpOworICAgdW5zaWduZWQg
bWFrZUNvbHVtbkZsYWdzKGludCBjb2x1bW4sIGludCBudW1Db21wb25lbnRzUGVyUm93KTsKKyAg
IHZvaWQgZmlsbENvbHVtbnMoaW50IHRvcFJvdywgaW50IG51bVJvd3MsIGludCBjb2x1bW4sIGlu
dCBudW1Db21wb25lbnRzUGVyUm93KTsKKyAgIGJvb2wgc2VhcmNoQ29sdW1uKGludCBjb2x1bW4s
IGludCBudW1Sb3dzLCBpbnQgKmRlc3RSb3csIGludCAqZGVzdFNpemUpOwogCi0gICAgaW50IHRv
cE5vbkZ1bGxSb3dfOwotICAgIGludCBib3R0b21Ob25GdWxsUm93XzsKLSAgICBpbnQgbWF4Um93
c187Ci0gICAgc3RkOjp2ZWN0b3I8dW5zaWduZWQ+IHJvd3NfOworICAgaW50IHRvcE5vbkZ1bGxS
b3dfOworICAgaW50IGJvdHRvbU5vbkZ1bGxSb3dfOworICAgaW50IG1heFJvd3NfOworICAgc3Rk
Ojp2ZWN0b3I8dW5zaWduZWQ+IHJvd3NfOwogfTsKIAogI2VuZGlmIC8vIENPTVBJTEVSX1RSQU5T
TEFUT1JfVkFSSUFCTEVQQUNLRVJfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1ZlcnNpb25HTFNMLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WZXJzaW9uR0xTTC5j
cHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1ZlcnNpb25HTFNMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsMTAg
KzY4LDYgQEAKIAogICAgIHN3aXRjaCAobm9kZS0+Z2V0T3AoKSkKICAgICB7Ci0gICAgICBjYXNl
IEVPcFNlcXVlbmNlOgotICAgICAgICAvLyBXZSBuZWVkIHRvIHZpc2l0IHNlcXVlbmNlIGNoaWxk
cmVuIHRvIGdldCB0byBnbG9iYWwgb3IgaW5uZXIgc2NvcGUuCi0gICAgICAgIHZpc2l0Q2hpbGRy
ZW4gPSB0cnVlOwotICAgICAgICBicmVhazsKICAgICAgIGNhc2UgRU9wRGVjbGFyYXRpb246CiAg
ICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IFRJbnRlcm1TZXF1ZW5jZSAmc2VxdWVuY2UgPSAq
KG5vZGUtPmdldFNlcXVlbmNlKCkpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9k
ZXBncmFwaC9EZXBlbmRlbmN5R3JhcGguY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9kZXBncmFwaC9EZXBlbmRl
bmN5R3JhcGguY3BwCShub25leGlzdGVudCkKQEAgLTEsOTUgKzAsMCBAQAotLy8KLS8vIENvcHly
aWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8v
Ci0KLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFw
aC5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdy
YXBoQnVpbGRlci5oIgotCi1URGVwZW5kZW5jeUdyYXBoOjpURGVwZW5kZW5jeUdyYXBoKFRJbnRl
cm1Ob2RlKiBpbnRlcm1Ob2RlKQotewotICAgIFREZXBlbmRlbmN5R3JhcGhCdWlsZGVyOjpidWls
ZChpbnRlcm1Ob2RlLCB0aGlzKTsKLX0KLQotVERlcGVuZGVuY3lHcmFwaDo6flREZXBlbmRlbmN5
R3JhcGgoKQotewotICAgIGZvciAoVEdyYXBoTm9kZVZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgaXRl
ciA9IG1BbGxOb2Rlcy5iZWdpbigpOyBpdGVyICE9IG1BbGxOb2Rlcy5lbmQoKTsgKytpdGVyKQot
ICAgIHsKLSAgICAgICAgVEdyYXBoTm9kZSogbm9kZSA9ICppdGVyOwotICAgICAgICBkZWxldGUg
bm9kZTsKLSAgICB9Ci19Ci0KLVRHcmFwaEFyZ3VtZW50KiBURGVwZW5kZW5jeUdyYXBoOjpjcmVh
dGVBcmd1bWVudChUSW50ZXJtQWdncmVnYXRlKiBpbnRlcm1GdW5jdGlvbkNhbGwsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFyZ3VtZW50TnVt
YmVyKQotewotICAgIFRHcmFwaEFyZ3VtZW50KiBhcmd1bWVudCA9IG5ldyBUR3JhcGhBcmd1bWVu
dChpbnRlcm1GdW5jdGlvbkNhbGwsIGFyZ3VtZW50TnVtYmVyKTsKLSAgICBtQWxsTm9kZXMucHVz
aF9iYWNrKGFyZ3VtZW50KTsKLSAgICByZXR1cm4gYXJndW1lbnQ7Ci19Ci0KLVRHcmFwaEZ1bmN0
aW9uQ2FsbCogVERlcGVuZGVuY3lHcmFwaDo6Y3JlYXRlRnVuY3Rpb25DYWxsKFRJbnRlcm1BZ2dy
ZWdhdGUqIGludGVybUZ1bmN0aW9uQ2FsbCkKLXsKLSAgICBUR3JhcGhGdW5jdGlvbkNhbGwqIGZ1
bmN0aW9uQ2FsbCA9IG5ldyBUR3JhcGhGdW5jdGlvbkNhbGwoaW50ZXJtRnVuY3Rpb25DYWxsKTsK
LSAgICBtQWxsTm9kZXMucHVzaF9iYWNrKGZ1bmN0aW9uQ2FsbCk7Ci0gICAgaWYgKGZ1bmN0aW9u
Q2FsbC0+Z2V0SW50ZXJtRnVuY3Rpb25DYWxsKCktPmlzVXNlckRlZmluZWQoKSkKLSAgICAgICAg
bVVzZXJEZWZpbmVkRnVuY3Rpb25DYWxscy5wdXNoX2JhY2soZnVuY3Rpb25DYWxsKTsKLSAgICBy
ZXR1cm4gZnVuY3Rpb25DYWxsOwotfQotCi1UR3JhcGhTeW1ib2wqIFREZXBlbmRlbmN5R3JhcGg6
OmdldE9yQ3JlYXRlU3ltYm9sKFRJbnRlcm1TeW1ib2wqIGludGVybVN5bWJvbCkKLXsKLSAgICBU
U3ltYm9sSWRNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtU3ltYm9sSWRNYXAuZmluZChpbnRl
cm1TeW1ib2wtPmdldElkKCkpOwotCi0gICAgVEdyYXBoU3ltYm9sKiBzeW1ib2wgPSBOVUxMOwot
Ci0gICAgaWYgKGl0ZXIgIT0gbVN5bWJvbElkTWFwLmVuZCgpKSB7Ci0gICAgICAgIFRTeW1ib2xJ
ZFBhaXIgcGFpciA9ICppdGVyOwotICAgICAgICBzeW1ib2wgPSBwYWlyLnNlY29uZDsKLSAgICB9
IGVsc2UgewotICAgICAgICBzeW1ib2wgPSBuZXcgVEdyYXBoU3ltYm9sKGludGVybVN5bWJvbCk7
Ci0gICAgICAgIG1BbGxOb2Rlcy5wdXNoX2JhY2soc3ltYm9sKTsKLQotICAgICAgICBUU3ltYm9s
SWRQYWlyIHBhaXIoaW50ZXJtU3ltYm9sLT5nZXRJZCgpLCBzeW1ib2wpOwotICAgICAgICBtU3lt
Ym9sSWRNYXAuaW5zZXJ0KHBhaXIpOwotCi0gICAgICAgIC8vIFdlIHNhdmUgYWxsIHNhbXBsZXIg
c3ltYm9scyBpbiBhIGNvbGxlY3Rpb24sIHNvIHdlIGNhbiBzdGFydCBncmFwaCB0cmF2ZXJzYWxz
IGZyb20gdGhlbSBxdWlja2x5LgotICAgICAgICBpZiAoSXNTYW1wbGVyKGludGVybVN5bWJvbC0+
Z2V0QmFzaWNUeXBlKCkpKQotICAgICAgICAgICAgbVNhbXBsZXJTeW1ib2xzLnB1c2hfYmFjayhz
eW1ib2wpOwotICAgIH0KLQotICAgIHJldHVybiBzeW1ib2w7Ci19Ci0KLVRHcmFwaFNlbGVjdGlv
biogVERlcGVuZGVuY3lHcmFwaDo6Y3JlYXRlU2VsZWN0aW9uKFRJbnRlcm1TZWxlY3Rpb24qIGlu
dGVybVNlbGVjdGlvbikKLXsKLSAgICBUR3JhcGhTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IG5ldyBU
R3JhcGhTZWxlY3Rpb24oaW50ZXJtU2VsZWN0aW9uKTsKLSAgICBtQWxsTm9kZXMucHVzaF9iYWNr
KHNlbGVjdGlvbik7Ci0gICAgcmV0dXJuIHNlbGVjdGlvbjsKLX0KLQotVEdyYXBoTG9vcCogVERl
cGVuZGVuY3lHcmFwaDo6Y3JlYXRlTG9vcChUSW50ZXJtTG9vcCogaW50ZXJtTG9vcCkKLXsKLSAg
ICBUR3JhcGhMb29wKiBsb29wID0gbmV3IFRHcmFwaExvb3AoaW50ZXJtTG9vcCk7Ci0gICAgbUFs
bE5vZGVzLnB1c2hfYmFjayhsb29wKTsKLSAgICByZXR1cm4gbG9vcDsKLX0KLQotVEdyYXBoTG9n
aWNhbE9wKiBURGVwZW5kZW5jeUdyYXBoOjpjcmVhdGVMb2dpY2FsT3AoVEludGVybUJpbmFyeSog
aW50ZXJtTG9naWNhbE9wKQotewotICAgIFRHcmFwaExvZ2ljYWxPcCogbG9naWNhbE9wID0gbmV3
IFRHcmFwaExvZ2ljYWxPcChpbnRlcm1Mb2dpY2FsT3ApOwotICAgIG1BbGxOb2Rlcy5wdXNoX2Jh
Y2sobG9naWNhbE9wKTsKLSAgICByZXR1cm4gbG9naWNhbE9wOwotfQotCi1jb25zdCBjaGFyKiBU
R3JhcGhMb2dpY2FsT3A6OmdldE9wU3RyaW5nKCkgY29uc3QKLXsKLSAgICBjb25zdCBjaGFyKiBv
cFN0cmluZyA9IE5VTEw7Ci0gICAgc3dpdGNoIChnZXRJbnRlcm1Mb2dpY2FsT3AoKS0+Z2V0T3Ao
KSkgewotICAgICAgICBjYXNlIEVPcExvZ2ljYWxBbmQ6IG9wU3RyaW5nID0gImFuZCI7IGJyZWFr
OwotICAgICAgICBjYXNlIEVPcExvZ2ljYWxPcjogb3BTdHJpbmcgPSAib3IiOyBicmVhazsKLSAg
ICAgICAgZGVmYXVsdDogb3BTdHJpbmcgPSAidW5rbm93biI7IGJyZWFrOwotICAgIH0KLSAgICBy
ZXR1cm4gb3BTdHJpbmc7Ci19CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGgu
Y3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRp
dmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBo
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoLmgJKHJldmlzaW9uIDIwODAyMSkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBo
L0RlcGVuZGVuY3lHcmFwaC5oCShub25leGlzdGVudCkKQEAgLTEsMTk5ICswLDAgQEAKLS8vCi0v
LyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCi0vLwotCi0jaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFUT1JfREVQR1JBUEhfREVQRU5ERU5D
WUdSQVBIX0hfCi0jZGVmaW5lIENPTVBJTEVSX1RSQU5TTEFUT1JfREVQR1JBUEhfREVQRU5ERU5D
WUdSQVBIX0hfCi0KLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuaCIK
LQotI2luY2x1ZGUgPHNldD4KLSNpbmNsdWRlIDxzdGFjaz4KLQotY2xhc3MgVEdyYXBoTm9kZTsK
LWNsYXNzIFRHcmFwaFBhcmVudE5vZGU7Ci1jbGFzcyBUR3JhcGhBcmd1bWVudDsKLWNsYXNzIFRH
cmFwaEZ1bmN0aW9uQ2FsbDsKLWNsYXNzIFRHcmFwaFN5bWJvbDsKLWNsYXNzIFRHcmFwaFNlbGVj
dGlvbjsKLWNsYXNzIFRHcmFwaExvb3A7Ci1jbGFzcyBUR3JhcGhMb2dpY2FsT3A7Ci1jbGFzcyBU
RGVwZW5kZW5jeUdyYXBoVHJhdmVyc2VyOwotY2xhc3MgVERlcGVuZGVuY3lHcmFwaE91dHB1dDsK
LQotdHlwZWRlZiBzdGQ6OnNldDxUR3JhcGhOb2RlKj4gVEdyYXBoTm9kZVNldDsKLXR5cGVkZWYg
c3RkOjp2ZWN0b3I8VEdyYXBoTm9kZSo+IFRHcmFwaE5vZGVWZWN0b3I7Ci10eXBlZGVmIHN0ZDo6
dmVjdG9yPFRHcmFwaFN5bWJvbCo+IFRHcmFwaFN5bWJvbFZlY3RvcjsKLXR5cGVkZWYgc3RkOjp2
ZWN0b3I8VEdyYXBoRnVuY3Rpb25DYWxsKj4gVEZ1bmN0aW9uQ2FsbFZlY3RvcjsKLQotLy8KLS8v
IEJhc2UgY2xhc3MgZm9yIGFsbCBkZXBlbmRlbmN5IGdyYXBoIG5vZGVzLgotLy8KLWNsYXNzIFRH
cmFwaE5vZGUgewotcHVibGljOgotICAgIFRHcmFwaE5vZGUoVEludGVybU5vZGUqIG5vZGUpIDog
aW50ZXJtTm9kZShub2RlKSB7fQotICAgIHZpcnR1YWwgflRHcmFwaE5vZGUoKSB7fQotICAgIHZp
cnR1YWwgdm9pZCB0cmF2ZXJzZShURGVwZW5kZW5jeUdyYXBoVHJhdmVyc2VyKiBncmFwaFRyYXZl
cnNlcik7Ci1wcm90ZWN0ZWQ6Ci0gICAgVEludGVybU5vZGUqIGludGVybU5vZGU7Ci19OwotCi0v
LwotLy8gQmFzZSBjbGFzcyBmb3IgZGVwZW5kZW5jeSBncmFwaCBub2RlcyB0aGF0IG1heSBoYXZl
IGNoaWxkcmVuLgotLy8KLWNsYXNzIFRHcmFwaFBhcmVudE5vZGUgOiBwdWJsaWMgVEdyYXBoTm9k
ZSB7Ci1wdWJsaWM6Ci0gICAgVEdyYXBoUGFyZW50Tm9kZShUSW50ZXJtTm9kZSogbm9kZSkgOiBU
R3JhcGhOb2RlKG5vZGUpIHt9Ci0gICAgflRHcmFwaFBhcmVudE5vZGUoKSBvdmVycmlkZSB7fQot
ICAgIHZvaWQgYWRkRGVwZW5kZW50Tm9kZShUR3JhcGhOb2RlKiBub2RlKSB7IGlmIChub2RlICE9
IHRoaXMpIG1EZXBlbmRlbnROb2Rlcy5pbnNlcnQobm9kZSk7IH0KLSAgICB2b2lkIHRyYXZlcnNl
KFREZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZXIgKmdyYXBoVHJhdmVyc2VyKSBvdmVycmlkZTsKLQot
cHJpdmF0ZToKLSAgICBUR3JhcGhOb2RlU2V0IG1EZXBlbmRlbnROb2RlczsKLX07Ci0KLS8vCi0v
LyBIYW5kbGUgZnVuY3Rpb24gY2FsbCBhcmd1bWVudHMuCi0vLwotY2xhc3MgVEdyYXBoQXJndW1l
bnQgOiBwdWJsaWMgVEdyYXBoUGFyZW50Tm9kZSB7Ci1wdWJsaWM6Ci0gICAgVEdyYXBoQXJndW1l
bnQoVEludGVybUFnZ3JlZ2F0ZSogaW50ZXJtRnVuY3Rpb25DYWxsLCBpbnQgYXJndW1lbnROdW1i
ZXIpCi0gICAgICAgIDogVEdyYXBoUGFyZW50Tm9kZShpbnRlcm1GdW5jdGlvbkNhbGwpCi0gICAg
ICAgICwgbUFyZ3VtZW50TnVtYmVyKGFyZ3VtZW50TnVtYmVyKSB7fQotICAgIH5UR3JhcGhBcmd1
bWVudCgpIG92ZXJyaWRlIHt9Ci0gICAgY29uc3QgVEludGVybUFnZ3JlZ2F0ZSogZ2V0SW50ZXJt
RnVuY3Rpb25DYWxsKCkgY29uc3QgeyByZXR1cm4gaW50ZXJtTm9kZS0+Z2V0QXNBZ2dyZWdhdGUo
KTsgfQotICAgIGludCBnZXRBcmd1bWVudE51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1Bcmd1bWVu
dE51bWJlcjsgfQotICAgIHZvaWQgdHJhdmVyc2UoVERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlciAq
Z3JhcGhUcmF2ZXJzZXIpIG92ZXJyaWRlOwotCi1wcml2YXRlOgotICAgIGludCBtQXJndW1lbnRO
dW1iZXI7Ci19OwotCi0vLwotLy8gSGFuZGxlIGZ1bmN0aW9uIGNhbGxzLgotLy8KLWNsYXNzIFRH
cmFwaEZ1bmN0aW9uQ2FsbCA6IHB1YmxpYyBUR3JhcGhQYXJlbnROb2RlIHsKLXB1YmxpYzoKLSAg
ICBUR3JhcGhGdW5jdGlvbkNhbGwoVEludGVybUFnZ3JlZ2F0ZSogaW50ZXJtRnVuY3Rpb25DYWxs
KQotICAgICAgICA6IFRHcmFwaFBhcmVudE5vZGUoaW50ZXJtRnVuY3Rpb25DYWxsKSB7fQotICAg
IH5UR3JhcGhGdW5jdGlvbkNhbGwoKSBvdmVycmlkZSB7fQotICAgIGNvbnN0IFRJbnRlcm1BZ2dy
ZWdhdGUqIGdldEludGVybUZ1bmN0aW9uQ2FsbCgpIGNvbnN0IHsgcmV0dXJuIGludGVybU5vZGUt
PmdldEFzQWdncmVnYXRlKCk7IH0KLSAgICB2b2lkIHRyYXZlcnNlKFREZXBlbmRlbmN5R3JhcGhU
cmF2ZXJzZXIgKmdyYXBoVHJhdmVyc2VyKSBvdmVycmlkZTsKLX07Ci0KLS8vCi0vLyBIYW5kbGUg
c3ltYm9scy4KLS8vCi1jbGFzcyBUR3JhcGhTeW1ib2wgOiBwdWJsaWMgVEdyYXBoUGFyZW50Tm9k
ZSB7Ci1wdWJsaWM6Ci0gICAgVEdyYXBoU3ltYm9sKFRJbnRlcm1TeW1ib2wqIGludGVybVN5bWJv
bCkgOiBUR3JhcGhQYXJlbnROb2RlKGludGVybVN5bWJvbCkge30KLSAgICB+VEdyYXBoU3ltYm9s
KCkgb3ZlcnJpZGUge30KLSAgICBjb25zdCBUSW50ZXJtU3ltYm9sKiBnZXRJbnRlcm1TeW1ib2wo
KSBjb25zdCB7IHJldHVybiBpbnRlcm1Ob2RlLT5nZXRBc1N5bWJvbE5vZGUoKTsgfQotICAgIHZv
aWQgdHJhdmVyc2UoVERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlciAqZ3JhcGhUcmF2ZXJzZXIpIG92
ZXJyaWRlOwotfTsKLQotLy8KLS8vIEhhbmRsZSBpZiBzdGF0ZW1lbnRzIGFuZCB0ZXJuYXJ5IG9w
ZXJhdG9ycy4KLS8vCi1jbGFzcyBUR3JhcGhTZWxlY3Rpb24gOiBwdWJsaWMgVEdyYXBoTm9kZSB7
Ci1wdWJsaWM6Ci0gICAgVEdyYXBoU2VsZWN0aW9uKFRJbnRlcm1TZWxlY3Rpb24qIGludGVybVNl
bGVjdGlvbikgOiBUR3JhcGhOb2RlKGludGVybVNlbGVjdGlvbikge30KLSAgICB+VEdyYXBoU2Vs
ZWN0aW9uKCkgb3ZlcnJpZGUge30KLSAgICBjb25zdCBUSW50ZXJtU2VsZWN0aW9uKiBnZXRJbnRl
cm1TZWxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBpbnRlcm1Ob2RlLT5nZXRBc1NlbGVjdGlvbk5v
ZGUoKTsgfQotICAgIHZvaWQgdHJhdmVyc2UoVERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlciAqZ3Jh
cGhUcmF2ZXJzZXIpIG92ZXJyaWRlOwotfTsKLQotLy8KLS8vIEhhbmRsZSBmb3IsIGRvLXdoaWxl
LCBhbmQgd2hpbGUgbG9vcHMuCi0vLwotY2xhc3MgVEdyYXBoTG9vcCA6IHB1YmxpYyBUR3JhcGhO
b2RlIHsKLXB1YmxpYzoKLSAgICBUR3JhcGhMb29wKFRJbnRlcm1Mb29wKiBpbnRlcm1Mb29wKSA6
IFRHcmFwaE5vZGUoaW50ZXJtTG9vcCkge30KLSAgICB+VEdyYXBoTG9vcCgpIG92ZXJyaWRlIHt9
Ci0gICAgY29uc3QgVEludGVybUxvb3AqIGdldEludGVybUxvb3AoKSBjb25zdCB7IHJldHVybiBp
bnRlcm1Ob2RlLT5nZXRBc0xvb3BOb2RlKCk7IH0KLSAgICB2b2lkIHRyYXZlcnNlKFREZXBlbmRl
bmN5R3JhcGhUcmF2ZXJzZXIgKmdyYXBoVHJhdmVyc2VyKSBvdmVycmlkZTsKLX07Ci0KLS8vCi0v
LyBIYW5kbGUgbG9naWNhbCBhbmQsIG9yLgotLy8KLWNsYXNzIFRHcmFwaExvZ2ljYWxPcCA6IHB1
YmxpYyBUR3JhcGhOb2RlIHsKLXB1YmxpYzoKLSAgICBUR3JhcGhMb2dpY2FsT3AoVEludGVybUJp
bmFyeSogaW50ZXJtTG9naWNhbE9wKSA6IFRHcmFwaE5vZGUoaW50ZXJtTG9naWNhbE9wKSB7fQot
ICAgIH5UR3JhcGhMb2dpY2FsT3AoKSBvdmVycmlkZSB7fQotICAgIGNvbnN0IFRJbnRlcm1CaW5h
cnkqIGdldEludGVybUxvZ2ljYWxPcCgpIGNvbnN0IHsgcmV0dXJuIGludGVybU5vZGUtPmdldEFz
QmluYXJ5Tm9kZSgpOyB9Ci0gICAgY29uc3QgY2hhciogZ2V0T3BTdHJpbmcoKSBjb25zdDsKLSAg
ICB2b2lkIHRyYXZlcnNlKFREZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZXIgKmdyYXBoVHJhdmVyc2Vy
KSBvdmVycmlkZTsKLX07Ci0KLS8vCi0vLyBBIGRlcGVuZGVuY3kgZ3JhcGggb2Ygc3ltYm9scywg
ZnVuY3Rpb24gY2FsbHMsIGNvbmRpdGlvbnMgZXRjLgotLy8KLS8vIFRoaXMgY2xhc3MgcHJvdmlk
ZXMgYW4gaW50ZXJmYWNlIHRvIHRoZSBlbnRyeSBwb2ludHMgb2YgdGhlIGRlcGVuZGVuY3kgZ3Jh
cGguCi0vLwotLy8gRGVwZW5kZW5jeSBncmFwaCBub2RlcyBzaG91bGQgYmUgY3JlYXRlZCBieSB1
c2luZyBvbmUgb2YgdGhlIHByb3ZpZGVkICJjcmVhdGUuLi4iIG1ldGhvZHMuCi0vLyBUaGlzIGNs
YXNzIChhbmQgbm9ib2R5IGVsc2UpIG1hbmFnZXMgdGhlIG1lbW9yeSBvZiB0aGUgY3JlYXRlZCBu
b2Rlcy4KLS8vIE5vZGVzIG1heSBub3QgYmUgcmVtb3ZlZCBhZnRlciBiZWluZyBhZGRlZCwgc28g
YWxsIGNyZWF0ZWQgbm9kZXMgd2lsbCBleGlzdCB3aGlsZSB0aGUKLS8vIFREZXBlbmRlbmN5R3Jh
cGggaW5zdGFuY2UgZXhpc3RzLgotLy8KLWNsYXNzIFREZXBlbmRlbmN5R3JhcGggewotcHVibGlj
OgotICAgIFREZXBlbmRlbmN5R3JhcGgoVEludGVybU5vZGUqIGludGVybU5vZGUpOwotICAgIH5U
RGVwZW5kZW5jeUdyYXBoKCk7Ci0gICAgY29uc3QgVEdyYXBoTm9kZVZlY3RvciAmYWxsTm9kZXMo
KSBjb25zdCB7IHJldHVybiBtQWxsTm9kZXM7IH0KLSAgICBjb25zdCBUR3JhcGhTeW1ib2xWZWN0
b3IgJnNhbXBsZXJTeW1ib2xzKCkgY29uc3QgeyByZXR1cm4gbVNhbXBsZXJTeW1ib2xzOyB9Ci0g
ICAgY29uc3QgVEZ1bmN0aW9uQ2FsbFZlY3RvciAmdXNlckRlZmluZWRGdW5jdGlvbkNhbGxzKCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtVXNlckRlZmluZWRGdW5jdGlvbkNhbGxzOwot
ICAgIH0KLQotICAgIFRHcmFwaEFyZ3VtZW50KiBjcmVhdGVBcmd1bWVudChUSW50ZXJtQWdncmVn
YXRlKiBpbnRlcm1GdW5jdGlvbkNhbGwsIGludCBhcmd1bWVudE51bWJlcik7Ci0gICAgVEdyYXBo
RnVuY3Rpb25DYWxsKiBjcmVhdGVGdW5jdGlvbkNhbGwoVEludGVybUFnZ3JlZ2F0ZSogaW50ZXJt
RnVuY3Rpb25DYWxsKTsKLSAgICBUR3JhcGhTeW1ib2wqIGdldE9yQ3JlYXRlU3ltYm9sKFRJbnRl
cm1TeW1ib2wqIGludGVybVN5bWJvbCk7Ci0gICAgVEdyYXBoU2VsZWN0aW9uKiBjcmVhdGVTZWxl
Y3Rpb24oVEludGVybVNlbGVjdGlvbiogaW50ZXJtU2VsZWN0aW9uKTsKLSAgICBUR3JhcGhMb29w
KiBjcmVhdGVMb29wKFRJbnRlcm1Mb29wKiBpbnRlcm1Mb29wKTsKLSAgICBUR3JhcGhMb2dpY2Fs
T3AqIGNyZWF0ZUxvZ2ljYWxPcChUSW50ZXJtQmluYXJ5KiBpbnRlcm1Mb2dpY2FsT3ApOwotcHJp
dmF0ZToKLSAgICB0eXBlZGVmIFRNYXA8aW50LCBUR3JhcGhTeW1ib2wqPiBUU3ltYm9sSWRNYXA7
Ci0gICAgdHlwZWRlZiBzdGQ6OnBhaXI8aW50LCBUR3JhcGhTeW1ib2wqPiBUU3ltYm9sSWRQYWly
OwotCi0gICAgVEdyYXBoTm9kZVZlY3RvciBtQWxsTm9kZXM7Ci0gICAgVEdyYXBoU3ltYm9sVmVj
dG9yIG1TYW1wbGVyU3ltYm9sczsKLSAgICBURnVuY3Rpb25DYWxsVmVjdG9yIG1Vc2VyRGVmaW5l
ZEZ1bmN0aW9uQ2FsbHM7Ci0gICAgVFN5bWJvbElkTWFwIG1TeW1ib2xJZE1hcDsKLX07Ci0KLS8v
Ci0vLyBGb3IgdHJhdmVyc2luZyB0aGUgZGVwZW5kZW5jeSBncmFwaC4gVXNlcnMgc2hvdWxkIGRl
cml2ZSBmcm9tIHRoaXMsCi0vLyBwdXQgdGhlaXIgdHJhdmVyc2FsIHNwZWNpZmljIGRhdGEgaW4g
aXQsIGFuZCB0aGVuIHBhc3MgaXQgdG8gYQotLy8gdHJhdmVyc2UgbWV0aG9kLgotLy8KLS8vIFdo
ZW4gdXNpbmcgdGhpcywganVzdCBmaWxsIGluIHRoZSBtZXRob2RzIGZvciBub2RlcyB5b3Ugd2Fu
dCB2aXNpdGVkLgotLy8KLWNsYXNzIFREZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZXIgOiBhbmdsZTo6
Tm9uQ29weWFibGUgewotcHVibGljOgotICAgIFREZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZXIoKSA6
IG1EZXB0aCgwKSB7fQotICAgIHZpcnR1YWwgflREZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZXIoKSB7
fQotCi0gICAgdmlydHVhbCB2b2lkIHZpc2l0U3ltYm9sKFRHcmFwaFN5bWJvbCogc3ltYm9sKSB7
fTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXRBcmd1bWVudChUR3JhcGhBcmd1bWVudCogc2VsZWN0
aW9uKSB7fTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXRGdW5jdGlvbkNhbGwoVEdyYXBoRnVuY3Rp
b25DYWxsKiBmdW5jdGlvbkNhbGwpIHt9OwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdFNlbGVjdGlv
bihUR3JhcGhTZWxlY3Rpb24qIHNlbGVjdGlvbikge307Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0
TG9vcChUR3JhcGhMb29wKiBsb29wKSB7fTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXRMb2dpY2Fs
T3AoVEdyYXBoTG9naWNhbE9wKiBsb2dpY2FsT3ApIHt9OwotCi0gICAgaW50IGdldERlcHRoKCkg
Y29uc3QgeyByZXR1cm4gbURlcHRoOyB9Ci0gICAgdm9pZCBpbmNyZW1lbnREZXB0aCgpIHsgKytt
RGVwdGg7IH0KLSAgICB2b2lkIGRlY3JlbWVudERlcHRoKCkgeyAtLW1EZXB0aDsgfQotCi0gICAg
dm9pZCBjbGVhclZpc2l0ZWQoKSB7IG1WaXNpdGVkLmNsZWFyKCk7IH0KLSAgICB2b2lkIG1hcmtW
aXNpdGVkKFRHcmFwaE5vZGUqIG5vZGUpIHsgbVZpc2l0ZWQuaW5zZXJ0KG5vZGUpOyB9Ci0gICAg
Ym9vbCBpc1Zpc2l0ZWQoVEdyYXBoTm9kZSogbm9kZSkgY29uc3QgeyByZXR1cm4gbVZpc2l0ZWQu
ZmluZChub2RlKSAhPSBtVmlzaXRlZC5lbmQoKTsgfQotcHJpdmF0ZToKLSAgICBpbnQgbURlcHRo
OwotICAgIFRHcmFwaE5vZGVTZXQgbVZpc2l0ZWQ7Ci19OwotCi0jZW5kaWYgLy8gQ09NUElMRVJf
VFJBTlNMQVRPUl9ERVBHUkFQSF9ERVBFTkRFTkNZR1JBUEhfSF8KClByb3BlcnR5IGNoYW5nZXMg
b246IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2RlcGdy
YXBoL0RlcGVuZGVuY3lHcmFwaC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQoj
IyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3Jh
cGgvRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdy
YXBoQnVpbGRlci5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaEJ1aWxk
ZXIuY3BwCShub25leGlzdGVudCkKQEAgLTEsMjU1ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQg
KGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0j
aW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhCdWls
ZGVyLmgiCi0KLXZvaWQgVERlcGVuZGVuY3lHcmFwaEJ1aWxkZXI6OmJ1aWxkKFRJbnRlcm1Ob2Rl
ICpub2RlLCBURGVwZW5kZW5jeUdyYXBoICpncmFwaCkKLXsKLSAgICBURGVwZW5kZW5jeUdyYXBo
QnVpbGRlciBidWlsZGVyKGdyYXBoKTsKLSAgICBidWlsZGVyLmJ1aWxkKG5vZGUpOwotfQotCi1i
b29sIFREZXBlbmRlbmN5R3JhcGhCdWlsZGVyOjp2aXNpdEFnZ3JlZ2F0ZSgKLSAgICBWaXNpdCB2
aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqaW50ZXJtQWdncmVnYXRlKQotewotICAgIHN3aXRjaCAo
aW50ZXJtQWdncmVnYXRlLT5nZXRPcCgpKQotICAgIHsKLSAgICAgIGNhc2UgRU9wRnVuY3Rpb246
Ci0gICAgICAgIHZpc2l0RnVuY3Rpb25EZWZpbml0aW9uKGludGVybUFnZ3JlZ2F0ZSk7Ci0gICAg
ICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BGdW5jdGlvbkNhbGw6Ci0gICAgICAgIHZpc2l0RnVu
Y3Rpb25DYWxsKGludGVybUFnZ3JlZ2F0ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgZGVmYXVs
dDoKLSAgICAgICAgdmlzaXRBZ2dyZWdhdGVDaGlsZHJlbihpbnRlcm1BZ2dyZWdhdGUpOwotICAg
ICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIFREZXBlbmRl
bmN5R3JhcGhCdWlsZGVyOjp2aXNpdEZ1bmN0aW9uRGVmaW5pdGlvbigKLSAgICBUSW50ZXJtQWdn
cmVnYXRlICppbnRlcm1BZ2dyZWdhdGUpCi17Ci0gICAgLy8gQ3VycmVudGx5LCB3ZSBkbyBub3Qg
c3VwcG9ydCB1c2VyIGRlZmluZWQgZnVuY3Rpb25zLgotICAgIGlmIChpbnRlcm1BZ2dyZWdhdGUt
PmdldE5hbWUoKSAhPSAibWFpbigiKQotICAgICAgICByZXR1cm47Ci0KLSAgICB2aXNpdEFnZ3Jl
Z2F0ZUNoaWxkcmVuKGludGVybUFnZ3JlZ2F0ZSk7Ci19Ci0KLS8vIFRha2VzIGFuIGV4cHJlc3Np
b24gbGlrZSAiZih4KSIgYW5kIGNyZWF0ZXMgYSBkZXBlbmRlbmN5IGdyYXBoIGxpa2UKLS8vICJ4
IC0+IGFyZ3VtZW50IDAgLT4gZnVuY3Rpb24gY2FsbCIuCi12b2lkIFREZXBlbmRlbmN5R3JhcGhC
dWlsZGVyOjp2aXNpdEZ1bmN0aW9uQ2FsbCgKLSAgICBUSW50ZXJtQWdncmVnYXRlICppbnRlcm1G
dW5jdGlvbkNhbGwpCi17Ci0gICAgVEdyYXBoRnVuY3Rpb25DYWxsICpmdW5jdGlvbkNhbGwgPQot
ICAgICAgICBtR3JhcGgtPmNyZWF0ZUZ1bmN0aW9uQ2FsbChpbnRlcm1GdW5jdGlvbkNhbGwpOwot
Ci0gICAgLy8gUnVuIHRocm91Z2ggdGhlIGZ1bmN0aW9uIGNhbGwgYXJndW1lbnRzLgotICAgIGlu
dCBhcmd1bWVudE51bWJlciA9IDA7Ci0gICAgVEludGVybVNlcXVlbmNlICppbnRlcm1Bcmd1bWVu
dHMgPSBpbnRlcm1GdW5jdGlvbkNhbGwtPmdldFNlcXVlbmNlKCk7Ci0gICAgZm9yIChUSW50ZXJt
U2VxdWVuY2U6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBpbnRlcm1Bcmd1bWVudHMtPmJlZ2luKCk7
Ci0gICAgICAgICBpdGVyICE9IGludGVybUFyZ3VtZW50cy0+ZW5kKCk7Ci0gICAgICAgICArK2l0
ZXIsICsrYXJndW1lbnROdW1iZXIpCi0gICAgewotICAgICAgICBUTm9kZVNldE1haW50YWluZXIg
bm9kZVNldE1haW50YWluZXIodGhpcyk7Ci0KLSAgICAgICAgVEludGVybU5vZGUgKmludGVybUFy
Z3VtZW50ID0gKml0ZXI7Ci0gICAgICAgIGludGVybUFyZ3VtZW50LT50cmF2ZXJzZSh0aGlzKTsK
LQotICAgICAgICBpZiAoVFBhcmVudE5vZGVTZXQgKmFyZ3VtZW50Tm9kZXMgPSBtTm9kZVNldHMu
Z2V0VG9wU2V0KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFRHcmFwaEFyZ3VtZW50ICphcmd1
bWVudCA9IG1HcmFwaC0+Y3JlYXRlQXJndW1lbnQoCi0gICAgICAgICAgICAgICAgaW50ZXJtRnVu
Y3Rpb25DYWxsLCBhcmd1bWVudE51bWJlcik7Ci0gICAgICAgICAgICBjb25uZWN0TXVsdGlwbGVO
b2Rlc1RvU2luZ2xlTm9kZShhcmd1bWVudE5vZGVzLCBhcmd1bWVudCk7Ci0gICAgICAgICAgICBh
cmd1bWVudC0+YWRkRGVwZW5kZW50Tm9kZShmdW5jdGlvbkNhbGwpOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgLy8gUHVzaCB0aGUgbGVmdG1vc3Qgc3ltYm9sIG9mIHRoaXMgZnVuY3Rpb24gY2Fs
bCBpbnRvIHRoZSBjdXJyZW50IHNldCBvZgotICAgIC8vIGRlcGVuZGVudCBzeW1ib2xzIHRvIHJl
cHJlc2VudCB0aGUgcmVzdWx0IG9mIHRoaXMgZnVuY3Rpb24gY2FsbC4KLSAgICAvLyBUaHVzLCBh
biBleHByZXNzaW9uIGxpa2UgInkgPSBmKHgpIiB3aWxsIHlpZWxkIGEgZGVwZW5kZW5jeSBncmFw
aCBsaWtlCi0gICAgLy8gInggLT4gYXJndW1lbnQgMCAtPiBmdW5jdGlvbiBjYWxsIC0+IHkiLgot
ICAgIC8vIFRoaXMgbGluZSBlc3NlbnRpYWxseSBwYXNzZXMgdGhlIGZ1bmN0aW9uIGNhbGwgbm9k
ZSBiYWNrIHVwIHRvIGFuIGVhcmxpZXIKLSAgICAvLyB2aXNpdEFzc2lnbm1lbnQgY2FsbCwgd2hp
Y2ggd2lsbCBjcmVhdGUgdGhlIGNvbm5lY3Rpb24gImZ1bmN0aW9uIGNhbGwgLT4geSIuCi0gICAg
bU5vZGVTZXRzLmluc2VydEludG9Ub3BTZXQoZnVuY3Rpb25DYWxsKTsKLX0KLQotdm9pZCBURGVw
ZW5kZW5jeUdyYXBoQnVpbGRlcjo6dmlzaXRBZ2dyZWdhdGVDaGlsZHJlbigKLSAgICBUSW50ZXJt
QWdncmVnYXRlICppbnRlcm1BZ2dyZWdhdGUpCi17Ci0gICAgVEludGVybVNlcXVlbmNlICpzZXF1
ZW5jZSA9IGludGVybUFnZ3JlZ2F0ZS0+Z2V0U2VxdWVuY2UoKTsKLSAgICBmb3IgKFRJbnRlcm1T
ZXF1ZW5jZTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHNlcXVlbmNlLT5iZWdpbigpOwotICAgICAg
ICAgaXRlciAhPSBzZXF1ZW5jZS0+ZW5kKCk7ICsraXRlcikKLSAgICB7Ci0gICAgICAgIFRJbnRl
cm1Ob2RlICppbnRlcm1DaGlsZCA9ICppdGVyOwotICAgICAgICBpbnRlcm1DaGlsZC0+dHJhdmVy
c2UodGhpcyk7Ci0gICAgfQotfQotCi12b2lkIFREZXBlbmRlbmN5R3JhcGhCdWlsZGVyOjp2aXNp
dFN5bWJvbChUSW50ZXJtU3ltYm9sICppbnRlcm1TeW1ib2wpCi17Ci0gICAgLy8gUHVzaCB0aGlz
IHN5bWJvbCBpbnRvIHRoZSBzZXQgb2YgZGVwZW5kZW50IHN5bWJvbHMgZm9yIHRoZSBjdXJyZW50
Ci0gICAgLy8gYXNzaWdubWVudCBvciBjb25kaXRpb24gdGhhdCB3ZSBhcmUgdHJhdmVyc2luZy4K
LSAgICBUR3JhcGhTeW1ib2wgKnN5bWJvbCA9IG1HcmFwaC0+Z2V0T3JDcmVhdGVTeW1ib2woaW50
ZXJtU3ltYm9sKTsKLSAgICBtTm9kZVNldHMuaW5zZXJ0SW50b1RvcFNldChzeW1ib2wpOwotCi0g
ICAgLy8gSWYgdGhpcyBzeW1ib2wgaXMgdGhlIGN1cnJlbnQgbGVmdG1vc3Qgc3ltYm9sIHVuZGVy
IGFuIGFzc2lnbm1lbnQsIHJlcGxhY2UKLSAgICAvLyB0aGUgcHJldmlvdXMgbGVmdG1vc3Qgc3lt
Ym9sIHdpdGggdGhpcyBzeW1ib2wuCi0gICAgaWYgKCFtTGVmdG1vc3RTeW1ib2xzLmVtcHR5KCkg
JiYgbUxlZnRtb3N0U3ltYm9scy50b3AoKSAhPSAmbVJpZ2h0U3VidHJlZSkKLSAgICB7Ci0gICAg
ICAgIG1MZWZ0bW9zdFN5bWJvbHMucG9wKCk7Ci0gICAgICAgIG1MZWZ0bW9zdFN5bWJvbHMucHVz
aChzeW1ib2wpOwotICAgIH0KLX0KLQotYm9vbCBURGVwZW5kZW5jeUdyYXBoQnVpbGRlcjo6dmlz
aXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkgKmludGVybUJpbmFyeSkKLXsKLSAg
ICBUT3BlcmF0b3Igb3AgPSBpbnRlcm1CaW5hcnktPmdldE9wKCk7Ci0gICAgaWYgKG9wID09IEVP
cEluaXRpYWxpemUgfHwgaW50ZXJtQmluYXJ5LT5pc0Fzc2lnbm1lbnQoKSkKLSAgICAgICAgdmlz
aXRBc3NpZ25tZW50KGludGVybUJpbmFyeSk7Ci0gICAgZWxzZSBpZiAob3AgPT0gRU9wTG9naWNh
bEFuZCB8fCBvcCA9PSBFT3BMb2dpY2FsT3IpCi0gICAgICAgIHZpc2l0TG9naWNhbE9wKGludGVy
bUJpbmFyeSk7Ci0gICAgZWxzZQotICAgICAgICB2aXNpdEJpbmFyeUNoaWxkcmVuKGludGVybUJp
bmFyeSk7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgVERlcGVuZGVuY3lHcmFwaEJ1
aWxkZXI6OnZpc2l0QXNzaWdubWVudChUSW50ZXJtQmluYXJ5ICppbnRlcm1Bc3NpZ25tZW50KQot
ewotICAgIFRJbnRlcm1UeXBlZCAqaW50ZXJtTGVmdCA9IGludGVybUFzc2lnbm1lbnQtPmdldExl
ZnQoKTsKLSAgICBpZiAoIWludGVybUxlZnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFRHcmFw
aFN5bWJvbCAqbGVmdG1vc3RTeW1ib2wgPSBOVUxMOwotCi0gICAgewotICAgICAgICBUTm9kZVNl
dE1haW50YWluZXIgbm9kZVNldE1haW50YWluZXIodGhpcyk7Ci0KLSAgICAgICAgewotICAgICAg
ICAgICAgVExlZnRtb3N0U3ltYm9sTWFpbnRhaW5lciBsZWZ0bW9zdFN5bWJvbE1haW50YWluZXIo
dGhpcywgbUxlZnRTdWJ0cmVlKTsKLSAgICAgICAgICAgIGludGVybUxlZnQtPnRyYXZlcnNlKHRo
aXMpOwotICAgICAgICAgICAgbGVmdG1vc3RTeW1ib2wgPSBtTGVmdG1vc3RTeW1ib2xzLnRvcCgp
OwotCi0gICAgICAgICAgICAvLyBBZnRlciB0cmF2ZXJzaW5nIHRoZSBsZWZ0IHN1YnRyZWUgb2Yg
dGhpcyBhc3NpZ25tZW50LCB3ZSBzaG91bGQKLSAgICAgICAgICAgIC8vIGhhdmUgZm91bmQgYSBy
ZWFsIGxlZnRtb3N0IHN5bWJvbCwgYW5kIHRoZSBsZWZ0bW9zdCBzeW1ib2wgc2hvdWxkCi0gICAg
ICAgICAgICAvLyBub3QgYmUgYSBwbGFjZWhvbGRlci4KLSAgICAgICAgICAgIEFTU0VSVChsZWZ0
bW9zdFN5bWJvbCAhPSAmbUxlZnRTdWJ0cmVlKTsKLSAgICAgICAgICAgIEFTU0VSVChsZWZ0bW9z
dFN5bWJvbCAhPSAmbVJpZ2h0U3VidHJlZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoVElu
dGVybVR5cGVkICppbnRlcm1SaWdodCA9IGludGVybUFzc2lnbm1lbnQtPmdldFJpZ2h0KCkpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIFRMZWZ0bW9zdFN5bWJvbE1haW50YWluZXIgbGVmdG1vc3RT
eW1ib2xNYWludGFpbmVyKHRoaXMsIG1SaWdodFN1YnRyZWUpOwotICAgICAgICAgICAgaW50ZXJt
UmlnaHQtPnRyYXZlcnNlKHRoaXMpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKFRQYXJlbnRO
b2RlU2V0ICphc3NpZ25tZW50Tm9kZXMgPSBtTm9kZVNldHMuZ2V0VG9wU2V0KCkpCi0gICAgICAg
ICAgICBjb25uZWN0TXVsdGlwbGVOb2Rlc1RvU2luZ2xlTm9kZShhc3NpZ25tZW50Tm9kZXMsIGxl
ZnRtb3N0U3ltYm9sKTsKLSAgICB9Ci0KLSAgICAvLyBQdXNoIHRoZSBsZWZ0bW9zdCBzeW1ib2wg
b2YgdGhpcyBhc3NpZ25tZW50IGludG8gdGhlIGN1cnJlbnQgc2V0IG9mIGRlcGVuZGVudAotICAg
IC8vIHN5bWJvbHMgdG8gcmVwcmVzZW50IHRoZSByZXN1bHQgb2YgdGhpcyBhc3NpZ25tZW50Lgot
ICAgIC8vIEFuIGV4cHJlc3Npb24gbGlrZSAiYSA9IChiID0gYykiIHdpbGwgeWllbGQgYSBkZXBl
bmRlbmN5IGdyYXBoIGxpa2UKLSAgICAvLyAiYyAtPiBiIC0+IGEiLgotICAgIC8vIFRoaXMgbGlu
ZSBlc3NlbnRpYWxseSBwYXNzZXMgdGhlIGxlZnRtb3N0IHN5bWJvbCBvZiB0aGUgbmVzdGVkIGFz
c2lnbm1lbnQKLSAgICAvLyAoImIiIGluIHRoaXMgZXhhbXBsZSkgYmFjayB1cCB0byB0aGUgZWFy
bGllciB2aXNpdEFzc2lnbm1lbnQgY2FsbCBmb3IgdGhlCi0gICAgLy8gb3V0ZXIgYXNzaWdubWVu
dCwgd2hpY2ggd2lsbCBjcmVhdGUgdGhlIGNvbm5lY3Rpb24gImIgLT4gYSIuCi0gICAgbU5vZGVT
ZXRzLmluc2VydEludG9Ub3BTZXQobGVmdG1vc3RTeW1ib2wpOwotfQotCi12b2lkIFREZXBlbmRl
bmN5R3JhcGhCdWlsZGVyOjp2aXNpdExvZ2ljYWxPcChUSW50ZXJtQmluYXJ5ICppbnRlcm1Mb2dp
Y2FsT3ApCi17Ci0gICAgaWYgKFRJbnRlcm1UeXBlZCAqaW50ZXJtTGVmdCA9IGludGVybUxvZ2lj
YWxPcC0+Z2V0TGVmdCgpKQotICAgIHsKLSAgICAgICAgVE5vZGVTZXRQcm9wYWdhdGluZ01haW50
YWluZXIgbm9kZVNldE1haW50YWluZXIodGhpcyk7Ci0KLSAgICAgICAgaW50ZXJtTGVmdC0+dHJh
dmVyc2UodGhpcyk7Ci0gICAgICAgIGlmIChUUGFyZW50Tm9kZVNldCAqbGVmdE5vZGVzID0gbU5v
ZGVTZXRzLmdldFRvcFNldCgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBUR3JhcGhMb2dpY2Fs
T3AgKmxvZ2ljYWxPcCA9IG1HcmFwaC0+Y3JlYXRlTG9naWNhbE9wKGludGVybUxvZ2ljYWxPcCk7
Ci0gICAgICAgICAgICBjb25uZWN0TXVsdGlwbGVOb2Rlc1RvU2luZ2xlTm9kZShsZWZ0Tm9kZXMs
IGxvZ2ljYWxPcCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoVEludGVybVR5cGVkICpp
bnRlcm1SaWdodCA9IGludGVybUxvZ2ljYWxPcC0+Z2V0UmlnaHQoKSkKLSAgICB7Ci0gICAgICAg
IFRMZWZ0bW9zdFN5bWJvbE1haW50YWluZXIgbGVmdG1vc3RTeW1ib2xNYWludGFpbmVyKHRoaXMs
IG1SaWdodFN1YnRyZWUpOwotICAgICAgICBpbnRlcm1SaWdodC0+dHJhdmVyc2UodGhpcyk7Ci0g
ICAgfQotfQotCi12b2lkIFREZXBlbmRlbmN5R3JhcGhCdWlsZGVyOjp2aXNpdEJpbmFyeUNoaWxk
cmVuKFRJbnRlcm1CaW5hcnkgKmludGVybUJpbmFyeSkKLXsKLSAgICBpZiAoVEludGVybVR5cGVk
ICppbnRlcm1MZWZ0ID0gaW50ZXJtQmluYXJ5LT5nZXRMZWZ0KCkpCi0gICAgICAgIGludGVybUxl
ZnQtPnRyYXZlcnNlKHRoaXMpOwotCi0gICAgaWYgKFRJbnRlcm1UeXBlZCAqaW50ZXJtUmlnaHQg
PSBpbnRlcm1CaW5hcnktPmdldFJpZ2h0KCkpCi0gICAgewotICAgICAgICBUTGVmdG1vc3RTeW1i
b2xNYWludGFpbmVyIGxlZnRtb3N0U3ltYm9sTWFpbnRhaW5lcih0aGlzLCBtUmlnaHRTdWJ0cmVl
KTsKLSAgICAgICAgaW50ZXJtUmlnaHQtPnRyYXZlcnNlKHRoaXMpOwotICAgIH0KLX0KLQotYm9v
bCBURGVwZW5kZW5jeUdyYXBoQnVpbGRlcjo6dmlzaXRTZWxlY3Rpb24oCi0gICAgVmlzaXQgdmlz
aXQsIFRJbnRlcm1TZWxlY3Rpb24gKmludGVybVNlbGVjdGlvbikKLXsKLSAgICBpZiAoVEludGVy
bU5vZGUgKmludGVybUNvbmRpdGlvbiA9IGludGVybVNlbGVjdGlvbi0+Z2V0Q29uZGl0aW9uKCkp
Ci0gICAgewotICAgICAgICBUTm9kZVNldE1haW50YWluZXIgbm9kZVNldE1haW50YWluZXIodGhp
cyk7Ci0KLSAgICAgICAgaW50ZXJtQ29uZGl0aW9uLT50cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAg
aWYgKFRQYXJlbnROb2RlU2V0ICpjb25kaXRpb25Ob2RlcyA9IG1Ob2RlU2V0cy5nZXRUb3BTZXQo
KSkKLSAgICAgICAgewotICAgICAgICAgICAgVEdyYXBoU2VsZWN0aW9uICpzZWxlY3Rpb24gPSBt
R3JhcGgtPmNyZWF0ZVNlbGVjdGlvbihpbnRlcm1TZWxlY3Rpb24pOwotICAgICAgICAgICAgY29u
bmVjdE11bHRpcGxlTm9kZXNUb1NpbmdsZU5vZGUoY29uZGl0aW9uTm9kZXMsIHNlbGVjdGlvbik7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoVEludGVybU5vZGUgKmludGVybVRydWVCbG9j
ayA9IGludGVybVNlbGVjdGlvbi0+Z2V0VHJ1ZUJsb2NrKCkpCi0gICAgICAgIGludGVybVRydWVC
bG9jay0+dHJhdmVyc2UodGhpcyk7Ci0KLSAgICBpZiAoVEludGVybU5vZGUgKmludGVybUZhbHNl
QmxvY2sgPSBpbnRlcm1TZWxlY3Rpb24tPmdldEZhbHNlQmxvY2soKSkKLSAgICAgICAgaW50ZXJt
RmFsc2VCbG9jay0+dHJhdmVyc2UodGhpcyk7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJv
b2wgVERlcGVuZGVuY3lHcmFwaEJ1aWxkZXI6OnZpc2l0TG9vcChWaXNpdCB2aXNpdCwgVEludGVy
bUxvb3AgKmludGVybUxvb3ApCi17Ci0gICAgaWYgKFRJbnRlcm1UeXBlZCAqaW50ZXJtQ29uZGl0
aW9uID0gaW50ZXJtTG9vcC0+Z2V0Q29uZGl0aW9uKCkpCi0gICAgewotICAgICAgICBUTm9kZVNl
dE1haW50YWluZXIgbm9kZVNldE1haW50YWluZXIodGhpcyk7Ci0KLSAgICAgICAgaW50ZXJtQ29u
ZGl0aW9uLT50cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAgaWYgKFRQYXJlbnROb2RlU2V0ICpjb25k
aXRpb25Ob2RlcyA9IG1Ob2RlU2V0cy5nZXRUb3BTZXQoKSkKLSAgICAgICAgewotICAgICAgICAg
ICAgVEdyYXBoTG9vcCAqbG9vcCA9IG1HcmFwaC0+Y3JlYXRlTG9vcChpbnRlcm1Mb29wKTsKLSAg
ICAgICAgICAgIGNvbm5lY3RNdWx0aXBsZU5vZGVzVG9TaW5nbGVOb2RlKGNvbmRpdGlvbk5vZGVz
LCBsb29wKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChUSW50ZXJtTm9kZSogaW50ZXJt
Qm9keSA9IGludGVybUxvb3AtPmdldEJvZHkoKSkKLSAgICAgICAgaW50ZXJtQm9keS0+dHJhdmVy
c2UodGhpcyk7Ci0KLSAgICBpZiAoVEludGVybVR5cGVkICppbnRlcm1FeHByZXNzaW9uID0gaW50
ZXJtTG9vcC0+Z2V0RXhwcmVzc2lvbigpKQotICAgICAgICBpbnRlcm1FeHByZXNzaW9uLT50cmF2
ZXJzZSh0aGlzKTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotCi12b2lkIFREZXBlbmRlbmN5
R3JhcGhCdWlsZGVyOjpjb25uZWN0TXVsdGlwbGVOb2Rlc1RvU2luZ2xlTm9kZSgKLSAgICBUUGFy
ZW50Tm9kZVNldCAqbm9kZXMsIFRHcmFwaE5vZGUgKm5vZGUpIGNvbnN0Ci17Ci0gICAgZm9yIChU
UGFyZW50Tm9kZVNldDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG5vZGVzLT5iZWdpbigpOwotICAg
ICAgICAgaXRlciAhPSBub2Rlcy0+ZW5kKCk7ICsraXRlcikKLSAgICB7Ci0gICAgICAgIFRHcmFw
aFBhcmVudE5vZGUgKmN1cnJlbnROb2RlID0gKml0ZXI7Ci0gICAgICAgIGN1cnJlbnROb2RlLT5h
ZGREZXBlbmRlbnROb2RlKG5vZGUpOwotICAgIH0KLX0KClByb3BlcnR5IGNoYW5nZXMgb246IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0Rl
cGVuZGVuY3lHcmFwaEJ1aWxkZXIuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHls
ZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVw
Z3JhcGgvRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lH
cmFwaEJ1aWxkZXIuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoQnVpbGRl
ci5oCShub25leGlzdGVudCkKQEAgLTEsMTk5ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMp
IDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaWZu
ZGVmIENPTVBJTEVSX1RSQU5TTEFUT1JfREVQR1JBUEhfREVQRU5ERU5DWUdSQVBIQlVJTERFUl9I
XwotI2RlZmluZSBDT01QSUxFUl9UUkFOU0xBVE9SX0RFUEdSQVBIX0RFUEVOREVOQ1lHUkFQSEJV
SUxERVJfSF8KLQotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5k
ZW5jeUdyYXBoLmgiCi0KLS8vCi0vLyBDcmVhdGVzIGEgZGVwZW5kZW5jeSBncmFwaCBvZiBzeW1i
b2xzLCBmdW5jdGlvbiBjYWxscywgY29uZGl0aW9ucyBldGMuIGJ5Ci0vLyB0cmF2ZXJzaW5nIGEg
aW50ZXJtZWRpYXRlIHRyZWUuCi0vLwotY2xhc3MgVERlcGVuZGVuY3lHcmFwaEJ1aWxkZXIgOiBw
dWJsaWMgVEludGVybVRyYXZlcnNlcgotewotICBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYnVp
bGQoVEludGVybU5vZGUgKm5vZGUsIFREZXBlbmRlbmN5R3JhcGggKmdyYXBoKTsKLQotICAgIHZv
aWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqKSBvdmVycmlkZTsKLSAgICBib29sIHZpc2l0
QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5ICopIG92ZXJyaWRlOwotICAgIGJvb2wg
dmlzaXRTZWxlY3Rpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1TZWxlY3Rpb24gKikgb3ZlcnJpZGU7
Ci0gICAgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAq
KSBvdmVycmlkZTsKLSAgICBib29sIHZpc2l0TG9vcChWaXNpdCB2aXNpdCwgVEludGVybUxvb3Ag
Kikgb3ZlcnJpZGU7Ci0KLSAgcHJpdmF0ZToKLSAgICB0eXBlZGVmIHN0ZDo6c3RhY2s8VEdyYXBo
U3ltYm9sICo+IFRTeW1ib2xTdGFjazsKLSAgICB0eXBlZGVmIHN0ZDo6c2V0PFRHcmFwaFBhcmVu
dE5vZGUgKj4gVFBhcmVudE5vZGVTZXQ7Ci0KLSAgICAvLwotICAgIC8vIEZvciBjb2xsZWN0aW5n
IHRoZSBkZXBlbmRlbnQgbm9kZXMgb2YgYXNzaWdubWVudHMsIGNvbmRpdGlvbnMsIGV0Yy4KLSAg
ICAvLyB3aGlsZSB0cmF2ZXJzaW5nIHRoZSBpbnRlcm1lZGlhdGUgdHJlZS4KLSAgICAvLwotICAg
IC8vIFRoaXMgZGF0YSBzdHJ1Y3R1cmUgaXMgc3RhY2sgb2Ygc2V0cy4gRWFjaCBzZXQgY29udGFp
bnMgZGVwZW5kZW5jeSBncmFwaAotICAgIC8vIHBhcmVudCBub2Rlcy4KLSAgICAvLwotICAgIGNs
YXNzIFROb2RlU2V0U3RhY2sKLSAgICB7Ci0gICAgICBwdWJsaWM6Ci0gICAgICAgIFROb2RlU2V0
U3RhY2soKSB7fTsKLSAgICAgICAgflROb2RlU2V0U3RhY2soKSB7IGNsZWFyKCk7IH0KLQotICAg
ICAgICAvLyBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBhIHB1c2hTZXQuCi0gICAg
ICAgIC8vIFJldHVybnMgTlVMTCBpZiB0aGUgdG9wIHNldCBpcyBlbXB0eS4KLSAgICAgICAgVFBh
cmVudE5vZGVTZXQgKmdldFRvcFNldCgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEFT
U0VSVCghbU5vZGVTZXRzLmVtcHR5KCkpOwotICAgICAgICAgICAgVFBhcmVudE5vZGVTZXQgKnRv
cFNldCA9IG1Ob2RlU2V0cy50b3AoKTsKLSAgICAgICAgICAgIHJldHVybiAhdG9wU2V0LT5lbXB0
eSgpID8gdG9wU2V0IDogTlVMTDsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgcHVzaFNldCgp
IHsgbU5vZGVTZXRzLnB1c2gobmV3IFRQYXJlbnROb2RlU2V0KCkpOyB9Ci0gICAgICAgIHZvaWQg
cG9wU2V0KCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKCFtTm9kZVNldHMuZW1wdHko
KSk7Ci0gICAgICAgICAgICBkZWxldGUgbU5vZGVTZXRzLnRvcCgpOwotICAgICAgICAgICAgbU5v
ZGVTZXRzLnBvcCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gUG9wcyB0aGUgdG9wIHNldCBh
bmQgYWRkcyBpdHMgY29udGVudHMgdG8gdGhlIG5ldyB0b3Agc2V0LgotICAgICAgICAvLyBUaGlz
IHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBhIHB1c2hTZXQuCi0gICAgICAgIC8vIElmIHRo
ZXJlIGlzIG5vIHNldCBiZWxvdyB0aGUgdG9wIHNldCwgdGhlIHRvcCBzZXQgaXMganVzdCBkZWxl
dGVkLgotICAgICAgICB2b2lkIHBvcFNldEludG9OZXh0KCkKLSAgICAgICAgewotICAgICAgICAg
ICAgQVNTRVJUKCFtTm9kZVNldHMuZW1wdHkoKSk7Ci0gICAgICAgICAgICBUUGFyZW50Tm9kZVNl
dCAqb2xkVG9wU2V0ID0gbU5vZGVTZXRzLnRvcCgpOwotICAgICAgICAgICAgbU5vZGVTZXRzLnBv
cCgpOwotCi0gICAgICAgICAgICBpZiAoIW1Ob2RlU2V0cy5lbXB0eSgpKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIFRQYXJlbnROb2RlU2V0ICpuZXdUb3BTZXQgPSBtTm9kZVNldHMu
dG9wKCk7Ci0gICAgICAgICAgICAgICAgbmV3VG9wU2V0LT5pbnNlcnQob2xkVG9wU2V0LT5iZWdp
bigpLCBvbGRUb3BTZXQtPmVuZCgpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZGVs
ZXRlIG9sZFRvcFNldDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIERvZXMgbm90aGluZyBpZiB0
aGVyZSBpcyBubyB0b3Agc2V0LgotICAgICAgICAvLyBUaGlzIGNhbiBiZSBjYWxsZWQgd2hlbiB0
aGVyZSBpcyBubyB0b3Agc2V0IGlmIHdlIGFyZSB2aXNpdGluZwotICAgICAgICAvLyBzeW1ib2xz
IHRoYXQgYXJlIG5vdCB1bmRlciBhbiBhc3NpZ25tZW50IG9yIGNvbmRpdGlvbi4KLSAgICAgICAg
Ly8gV2UgZG9uJ3QgbmVlZCB0byB0cmFjayB0aG9zZSBzeW1ib2xzLgotICAgICAgICB2b2lkIGlu
c2VydEludG9Ub3BTZXQoVEdyYXBoUGFyZW50Tm9kZSAqbm9kZSkKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKG1Ob2RlU2V0cy5lbXB0eSgpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICAgICAgbU5vZGVTZXRzLnRvcCgpLT5pbnNlcnQobm9kZSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICB2b2lkIGNsZWFyKCkKLSAgICAgICAgewotICAgICAgICAgICAgd2hpbGUgKCFtTm9k
ZVNldHMuZW1wdHkoKSkKLSAgICAgICAgICAgICAgICBwb3BTZXQoKTsKLSAgICAgICAgfQotCi0g
ICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHN0ZDo6c3RhY2s8VFBhcmVudE5vZGVTZXQg
Kj4gVFBhcmVudE5vZGVTZXRTdGFjazsKLQotICAgICAgICBUUGFyZW50Tm9kZVNldFN0YWNrIG1O
b2RlU2V0czsKLSAgICB9OwotCi0gICAgLy8KLSAgICAvLyBBbiBpbnN0YW5jZSBvZiB0aGlzIGNs
YXNzIHB1c2hlcyBhIG5ldyBub2RlIHNldCB3aGVuIGluc3RhbnRpYXRlZC4KLSAgICAvLyBXaGVu
IHRoZSBpbnN0YW5jZSBnb2VzIG91dCBvZiBzY29wZSwgaXQgYW5kIHBvcHMgdGhlIG5vZGUgc2V0
LgotICAgIC8vCi0gICAgY2xhc3MgVE5vZGVTZXRNYWludGFpbmVyIDogYW5nbGU6Ok5vbkNvcHlh
YmxlCi0gICAgewotICAgICAgcHVibGljOgotICAgICAgICBUTm9kZVNldE1haW50YWluZXIoVERl
cGVuZGVuY3lHcmFwaEJ1aWxkZXIgKmZhY3RvcnkpCi0gICAgICAgICAgICA6IG1TZXRzKGZhY3Rv
cnktPm1Ob2RlU2V0cykKLSAgICAgICAgewotICAgICAgICAgICAgbVNldHMucHVzaFNldCgpOwot
ICAgICAgICB9Ci0gICAgICAgIH5UTm9kZVNldE1haW50YWluZXIoKSB7IG1TZXRzLnBvcFNldCgp
OyB9Ci0gICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFROb2RlU2V0U3RhY2sgJm1TZXRzOwotICAg
IH07Ci0KLSAgICAvLwotICAgIC8vIEFuIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MgcHVzaGVzIGEg
bmV3IG5vZGUgc2V0IHdoZW4gaW5zdGFudGlhdGVkLgotICAgIC8vIFdoZW4gdGhlIGluc3RhbmNl
IGdvZXMgb3V0IG9mIHNjb3BlLCBpdCBhbmQgcG9wcyB0aGUgdG9wIG5vZGUgc2V0IGFuZCBhZGRz
Ci0gICAgLy8gaXRzIGNvbnRlbnRzIHRvIHRoZSBuZXcgdG9wIG5vZGUgc2V0LgotICAgIC8vCi0g
ICAgY2xhc3MgVE5vZGVTZXRQcm9wYWdhdGluZ01haW50YWluZXIgOiBhbmdsZTo6Tm9uQ29weWFi
bGUKLSAgICB7Ci0gICAgICBwdWJsaWM6Ci0gICAgICAgIFROb2RlU2V0UHJvcGFnYXRpbmdNYWlu
dGFpbmVyKFREZXBlbmRlbmN5R3JhcGhCdWlsZGVyICpmYWN0b3J5KQotICAgICAgICAgICAgOiBt
U2V0cyhmYWN0b3J5LT5tTm9kZVNldHMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1TZXRzLnB1
c2hTZXQoKTsKLSAgICAgICAgfQotICAgICAgICB+VE5vZGVTZXRQcm9wYWdhdGluZ01haW50YWlu
ZXIoKSB7IG1TZXRzLnBvcFNldEludG9OZXh0KCk7IH0KLSAgICAgIHByb3RlY3RlZDoKLSAgICAg
ICAgVE5vZGVTZXRTdGFjayAmbVNldHM7Ci0gICAgfTsKLQotICAgIC8vCi0gICAgLy8gQW4gaW5z
dGFuY2Ugb2YgdGhpcyBjbGFzcyBrZWVwcyB0cmFjayBvZiB0aGUgbGVmdG1vc3Qgc3ltYm9sIHdo
aWxlIHdlJ3JlCi0gICAgLy8gZXhwbG9yaW5nIGFuIGFzc2lnbm1lbnQuCi0gICAgLy8gSXQgd2ls
bCBwdXNoIHRoZSBwbGFjZWhvbGRlciBzeW1ib2wga0xlZnRTdWJ0cmVlIHdoZW4gaW5zdGFudGlh
dGVkIHVuZGVyIGEKLSAgICAvLyBsZWZ0IHN1YnRyZWUsIGFuZCBrUmlnaHRTdWJ0cmVlIHVuZGVy
IGEgcmlnaHQgc3VidHJlZS4KLSAgICAvLyBXaGVuIGl0IGdvZXMgb3V0IG9mIHNjb3BlLCBpdCB3
aWxsIHBvcCB0aGUgbGVmdG1vc3Qgc3ltYm9sIGF0IHRoZSB0b3Agb2YgdGhlCi0gICAgLy8gc2Nv
cGUuCi0gICAgLy8gRHVyaW5nIHRyYXZlcnNhbCwgdGhlIFREZXBlbmRlbmN5R3JhcGhCdWlsZGVy
IHdpbGwgcmVwbGFjZSBrTGVmdFN1YnRyZWUgd2l0aAotICAgIC8vIGEgcmVhbCBzeW1ib2wuCi0g
ICAgLy8ga1JpZ2h0U3VidHJlZSB3aWxsIG5ldmVyIGJlIHJlcGxhY2VkIGJ5IGEgcmVhbCBzeW1i
b2wgYmVjYXVzZSB3ZSBhcmUgdHJhY2tpbmcKLSAgICAvLyB0aGUgbGVmdG1vc3Qgc3ltYm9sLgot
ICAgIC8vCi0gICAgY2xhc3MgVExlZnRtb3N0U3ltYm9sTWFpbnRhaW5lciA6IGFuZ2xlOjpOb25D
b3B5YWJsZQotICAgIHsKLSAgICAgIHB1YmxpYzoKLSAgICAgICAgVExlZnRtb3N0U3ltYm9sTWFp
bnRhaW5lcigKLSAgICAgICAgICAgIFREZXBlbmRlbmN5R3JhcGhCdWlsZGVyICpmYWN0b3J5LCBU
R3JhcGhTeW1ib2wgJnN1YnRyZWUpCi0gICAgICAgICAgICA6IG1MZWZ0bW9zdFN5bWJvbHMoZmFj
dG9yeS0+bUxlZnRtb3N0U3ltYm9scykKLSAgICAgICAgewotICAgICAgICAgICAgbU5lZWRzUGxh
Y2Vob2xkZXJTeW1ib2wgPQotICAgICAgICAgICAgICAgIG1MZWZ0bW9zdFN5bWJvbHMuZW1wdHko
KSB8fCBtTGVmdG1vc3RTeW1ib2xzLnRvcCgpICE9ICZzdWJ0cmVlOwotICAgICAgICAgICAgaWYg
KG1OZWVkc1BsYWNlaG9sZGVyU3ltYm9sKQotICAgICAgICAgICAgICAgIG1MZWZ0bW9zdFN5bWJv
bHMucHVzaCgmc3VidHJlZSk7Ci0gICAgICAgIH0KLQotICAgICAgICB+VExlZnRtb3N0U3ltYm9s
TWFpbnRhaW5lcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtTmVlZHNQbGFjZWhvbGRl
clN5bWJvbCkKLSAgICAgICAgICAgICAgICBtTGVmdG1vc3RTeW1ib2xzLnBvcCgpOwotICAgICAg
ICB9Ci0KLSAgICAgIHByb3RlY3RlZDoKLSAgICAgICAgVFN5bWJvbFN0YWNrJiBtTGVmdG1vc3RT
eW1ib2xzOwotICAgICAgICBib29sIG1OZWVkc1BsYWNlaG9sZGVyU3ltYm9sOwotICAgIH07Ci0K
LSAgICBURGVwZW5kZW5jeUdyYXBoQnVpbGRlcihURGVwZW5kZW5jeUdyYXBoICpncmFwaCkKLSAg
ICAgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSksCi0gICAgICAgICAg
bUxlZnRTdWJ0cmVlKE5VTEwpLAotICAgICAgICAgIG1SaWdodFN1YnRyZWUoTlVMTCksCi0gICAg
ICAgICAgbUdyYXBoKGdyYXBoKSB7fQotICAgIHZvaWQgYnVpbGQoVEludGVybU5vZGUgKmludGVy
bU5vZGUpIHsgaW50ZXJtTm9kZS0+dHJhdmVyc2UodGhpcyk7IH0KLQotICAgIHZvaWQgY29ubmVj
dE11bHRpcGxlTm9kZXNUb1NpbmdsZU5vZGUoCi0gICAgICAgIFRQYXJlbnROb2RlU2V0ICpub2Rl
cywgVEdyYXBoTm9kZSAqbm9kZSkgY29uc3Q7Ci0KLSAgICB2b2lkIHZpc2l0QXNzaWdubWVudChU
SW50ZXJtQmluYXJ5ICopOwotICAgIHZvaWQgdmlzaXRMb2dpY2FsT3AoVEludGVybUJpbmFyeSAq
KTsKLSAgICB2b2lkIHZpc2l0QmluYXJ5Q2hpbGRyZW4oVEludGVybUJpbmFyeSAqKTsKLSAgICB2
b2lkIHZpc2l0RnVuY3Rpb25EZWZpbml0aW9uKFRJbnRlcm1BZ2dyZWdhdGUgKik7Ci0gICAgdm9p
ZCB2aXNpdEZ1bmN0aW9uQ2FsbChUSW50ZXJtQWdncmVnYXRlICppbnRlcm1GdW5jdGlvbkNhbGwp
OwotICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGVDaGlsZHJlbihUSW50ZXJtQWdncmVnYXRlICopOwot
Ci0gICAgVEdyYXBoU3ltYm9sIG1MZWZ0U3VidHJlZTsKLSAgICBUR3JhcGhTeW1ib2wgbVJpZ2h0
U3VidHJlZTsKLQotICAgIFREZXBlbmRlbmN5R3JhcGggKm1HcmFwaDsKLSAgICBUTm9kZVNldFN0
YWNrIG1Ob2RlU2V0czsKLSAgICBUU3ltYm9sU3RhY2sgbUxlZnRtb3N0U3ltYm9sczsKLX07Ci0K
LSNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9ERVBHUkFQSF9ERVBFTkRFTkNZR1JBUEhC
VUlMREVSX0hfCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmgK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhPdXRw
dXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaE91dHB1dC5jcHAJKHJldmlzaW9u
IDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaE91dHB1dC5jcHAJKG5vbmV4aXN0ZW50KQpAQCAt
MSw2NCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0
b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmgiCi0KLXZvaWQgVERlcGVuZGVuY3lH
cmFwaE91dHB1dDo6b3V0cHV0SW5kZW50YXRpb24oKQotewotICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgZ2V0RGVwdGgoKTsgKytpKQotICAgICAgICBtU2luayA8PCAiICAiOwotfQotCi12b2lkIFRE
ZXBlbmRlbmN5R3JhcGhPdXRwdXQ6OnZpc2l0QXJndW1lbnQoVEdyYXBoQXJndW1lbnQqIHBhcmFt
ZXRlcikKLXsKLSAgICBvdXRwdXRJbmRlbnRhdGlvbigpOwotICAgIG1TaW5rIDw8ICJhcmd1bWVu
dCAiIDw8IHBhcmFtZXRlci0+Z2V0QXJndW1lbnROdW1iZXIoKSA8PCAiIG9mIGNhbGwgdG8gIgot
ICAgICAgICAgIDw8IHBhcmFtZXRlci0+Z2V0SW50ZXJtRnVuY3Rpb25DYWxsKCktPmdldE5hbWUo
KSA8PCAiXG4iOwotfQotCi12b2lkIFREZXBlbmRlbmN5R3JhcGhPdXRwdXQ6OnZpc2l0RnVuY3Rp
b25DYWxsKFRHcmFwaEZ1bmN0aW9uQ2FsbCogZnVuY3Rpb25DYWxsKQotewotICAgIG91dHB1dElu
ZGVudGF0aW9uKCk7Ci0gICAgbVNpbmsgPDwgImZ1bmN0aW9uIGNhbGwgIiA8PCAgZnVuY3Rpb25D
YWxsLT5nZXRJbnRlcm1GdW5jdGlvbkNhbGwoKS0+Z2V0TmFtZSgpIDw8ICJcbiI7Ci19Ci0KLXZv
aWQgVERlcGVuZGVuY3lHcmFwaE91dHB1dDo6dmlzaXRTeW1ib2woVEdyYXBoU3ltYm9sKiBzeW1i
b2wpCi17Ci0gICAgb3V0cHV0SW5kZW50YXRpb24oKTsKLSAgICBtU2luayA8PCBzeW1ib2wtPmdl
dEludGVybVN5bWJvbCgpLT5nZXRTeW1ib2woKSA8PCAiIChzeW1ib2wgaWQ6ICIKLSAgICAgICAg
ICA8PCBzeW1ib2wtPmdldEludGVybVN5bWJvbCgpLT5nZXRJZCgpIDw8ICIpXG4iOwotfQotCi12
b2lkIFREZXBlbmRlbmN5R3JhcGhPdXRwdXQ6OnZpc2l0U2VsZWN0aW9uKFRHcmFwaFNlbGVjdGlv
biogc2VsZWN0aW9uKQotewotICAgIG91dHB1dEluZGVudGF0aW9uKCk7Ci0gICAgbVNpbmsgPDwg
InNlbGVjdGlvblxuIjsKLX0KLQotdm9pZCBURGVwZW5kZW5jeUdyYXBoT3V0cHV0Ojp2aXNpdExv
b3AoVEdyYXBoTG9vcCogbG9vcCkKLXsKLSAgICBvdXRwdXRJbmRlbnRhdGlvbigpOwotICAgIG1T
aW5rIDw8ICJsb29wIGNvbmRpdGlvblxuIjsKLX0KLQotdm9pZCBURGVwZW5kZW5jeUdyYXBoT3V0
cHV0Ojp2aXNpdExvZ2ljYWxPcChUR3JhcGhMb2dpY2FsT3AqIGxvZ2ljYWxPcCkKLXsKLSAgICBv
dXRwdXRJbmRlbnRhdGlvbigpOwotICAgIG1TaW5rIDw8ICJsb2dpY2FsICIgPDwgbG9naWNhbE9w
LT5nZXRPcFN0cmluZygpIDw8ICJcbiI7Ci19Ci0KLXZvaWQgVERlcGVuZGVuY3lHcmFwaE91dHB1
dDo6b3V0cHV0QWxsU3Bhbm5pbmdUcmVlcyhURGVwZW5kZW5jeUdyYXBoJiBncmFwaCkKLXsKLSAg
ICBtU2luayA8PCAiXG4iOwotCi0gICAgZm9yIChhdXRvIHN5bWJvbCA6IGdyYXBoLmFsbE5vZGVz
KCkpCi0gICAgewotICAgICAgICBtU2luayA8PCAiLS0tIERlcGVuZGVuY3kgZ3JhcGggc3Bhbm5p
bmcgdHJlZSAtLS1cbiI7Ci0gICAgICAgIGNsZWFyVmlzaXRlZCgpOwotICAgICAgICBzeW1ib2wt
PnRyYXZlcnNlKHRoaXMpOwotICAgICAgICBtU2luayA8PCAiXG4iOwotICAgIH0KLX0KClByb3Bl
cnR5IGNoYW5nZXMgb246IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaE91dHB1dC5jcHAKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxl
dGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhPdXRwdXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9kZXBn
cmFwaC9EZXBlbmRlbmN5R3JhcGhPdXRwdXQuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5k
ZW5jeUdyYXBoT3V0cHV0LmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwzMSArMCwwIEBACi0vLwotLy8g
Q29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgotLy8KLQotI2lmbmRlZiBDT01QSUxFUl9UUkFOU0xBVE9SX0RFUEdSQVBIX0RFUEVOREVOQ1lH
UkFQSE9VVFBVVF9IXwotI2RlZmluZSBDT01QSUxFUl9UUkFOU0xBVE9SX0RFUEdSQVBIX0RFUEVO
REVOQ1lHUkFQSE9VVFBVVF9IXwotCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9kZXBn
cmFwaC9EZXBlbmRlbmN5R3JhcGguaCIKLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0lu
Zm9TaW5rLmgiCi0KLWNsYXNzIFREZXBlbmRlbmN5R3JhcGhPdXRwdXQgOiBwdWJsaWMgVERlcGVu
ZGVuY3lHcmFwaFRyYXZlcnNlcgotewotICBwdWJsaWM6Ci0gICAgVERlcGVuZGVuY3lHcmFwaE91
dHB1dChUSW5mb1NpbmtCYXNlJiBzaW5rKSA6IG1TaW5rKHNpbmspIHt9Ci0gICAgdm9pZCB2aXNp
dFN5bWJvbChUR3JhcGhTeW1ib2wqIHN5bWJvbCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNpdEFy
Z3VtZW50KFRHcmFwaEFyZ3VtZW50KiBwYXJhbWV0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgdmlz
aXRGdW5jdGlvbkNhbGwoVEdyYXBoRnVuY3Rpb25DYWxsKiBmdW5jdGlvbkNhbGwpIG92ZXJyaWRl
OwotICAgIHZvaWQgdmlzaXRTZWxlY3Rpb24oVEdyYXBoU2VsZWN0aW9uKiBzZWxlY3Rpb24pIG92
ZXJyaWRlOwotICAgIHZvaWQgdmlzaXRMb29wKFRHcmFwaExvb3AqIGxvb3ApIG92ZXJyaWRlOwot
ICAgIHZvaWQgdmlzaXRMb2dpY2FsT3AoVEdyYXBoTG9naWNhbE9wKiBsb2dpY2FsT3ApIG92ZXJy
aWRlOwotCi0gICAgdm9pZCBvdXRwdXRBbGxTcGFubmluZ1RyZWVzKFREZXBlbmRlbmN5R3JhcGgm
IGdyYXBoKTsKLSAgcHJpdmF0ZToKLSAgICB2b2lkIG91dHB1dEluZGVudGF0aW9uKCk7Ci0KLSAg
ICBUSW5mb1NpbmtCYXNlJiBtU2luazsKLX07Ci0KLSNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNM
QVRPUl9ERVBHUkFQSF9ERVBFTkRFTkNZR1JBUEhPVVRQVVRfSF8KClByb3BlcnR5IGNoYW5nZXMg
b246IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2RlcGdy
YXBoL0RlcGVuZGVuY3lHcmFwaE91dHB1dC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1z
dHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0
eQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
ZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoVHJhdmVyc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVu
ZGVuY3lHcmFwaFRyYXZlcnNlLmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdy
YXBoVHJhdmVyc2UuY3BwCShub25leGlzdGVudCkKQEAgLTEsNjkgKzAsMCBAQAotLy8KLS8vIENv
cHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
LS8vCi0KLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lH
cmFwaC5oIgotCi0vLyBUaGVzZSBtZXRob2RzIGRvIGEgYnJlYWR0aC1maXJzdCB0cmF2ZXJzYWwg
dGhyb3VnaCB0aGUgZ3JhcGggYW5kIG1hcmsgdmlzaXRlZCBub2Rlcy4KLQotdm9pZCBUR3JhcGhO
b2RlOjp0cmF2ZXJzZShURGVwZW5kZW5jeUdyYXBoVHJhdmVyc2VyKiBncmFwaFRyYXZlcnNlcikK
LXsKLSAgICBncmFwaFRyYXZlcnNlci0+bWFya1Zpc2l0ZWQodGhpcyk7Ci19Ci0KLXZvaWQgVEdy
YXBoUGFyZW50Tm9kZTo6dHJhdmVyc2UoVERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlciogZ3JhcGhU
cmF2ZXJzZXIpCi17Ci0gICAgVEdyYXBoTm9kZTo6dHJhdmVyc2UoZ3JhcGhUcmF2ZXJzZXIpOwot
Ci0gICAgZ3JhcGhUcmF2ZXJzZXItPmluY3JlbWVudERlcHRoKCk7Ci0KLSAgICAvLyBWaXNpdCB0
aGUgcGFyZW50IG5vZGUncyBjaGlsZHJlbi4KLSAgICBmb3IgKFRHcmFwaE5vZGVTZXQ6OmNvbnN0
X2l0ZXJhdG9yIGl0ZXIgPSBtRGVwZW5kZW50Tm9kZXMuYmVnaW4oKTsKLSAgICAgICAgIGl0ZXIg
IT0gbURlcGVuZGVudE5vZGVzLmVuZCgpOwotICAgICAgICAgKytpdGVyKQotICAgIHsKLSAgICAg
ICAgVEdyYXBoTm9kZSogbm9kZSA9ICppdGVyOwotICAgICAgICBpZiAoIWdyYXBoVHJhdmVyc2Vy
LT5pc1Zpc2l0ZWQobm9kZSkpCi0gICAgICAgICAgICBub2RlLT50cmF2ZXJzZShncmFwaFRyYXZl
cnNlcik7Ci0gICAgfQotCi0gICAgZ3JhcGhUcmF2ZXJzZXItPmRlY3JlbWVudERlcHRoKCk7Ci19
Ci0KLXZvaWQgVEdyYXBoQXJndW1lbnQ6OnRyYXZlcnNlKFREZXBlbmRlbmN5R3JhcGhUcmF2ZXJz
ZXIqIGdyYXBoVHJhdmVyc2VyKQotewotICAgIGdyYXBoVHJhdmVyc2VyLT52aXNpdEFyZ3VtZW50
KHRoaXMpOwotICAgIFRHcmFwaFBhcmVudE5vZGU6OnRyYXZlcnNlKGdyYXBoVHJhdmVyc2VyKTsK
LX0KLQotdm9pZCBUR3JhcGhGdW5jdGlvbkNhbGw6OnRyYXZlcnNlKFREZXBlbmRlbmN5R3JhcGhU
cmF2ZXJzZXIqIGdyYXBoVHJhdmVyc2VyKQotewotICAgIGdyYXBoVHJhdmVyc2VyLT52aXNpdEZ1
bmN0aW9uQ2FsbCh0aGlzKTsKLSAgICBUR3JhcGhQYXJlbnROb2RlOjp0cmF2ZXJzZShncmFwaFRy
YXZlcnNlcik7Ci19Ci0KLXZvaWQgVEdyYXBoU3ltYm9sOjp0cmF2ZXJzZShURGVwZW5kZW5jeUdy
YXBoVHJhdmVyc2VyKiBncmFwaFRyYXZlcnNlcikKLXsKLSAgICBncmFwaFRyYXZlcnNlci0+dmlz
aXRTeW1ib2wodGhpcyk7Ci0gICAgVEdyYXBoUGFyZW50Tm9kZTo6dHJhdmVyc2UoZ3JhcGhUcmF2
ZXJzZXIpOwotfQotCi12b2lkIFRHcmFwaFNlbGVjdGlvbjo6dHJhdmVyc2UoVERlcGVuZGVuY3lH
cmFwaFRyYXZlcnNlciogZ3JhcGhUcmF2ZXJzZXIpCi17Ci0gICAgZ3JhcGhUcmF2ZXJzZXItPnZp
c2l0U2VsZWN0aW9uKHRoaXMpOwotICAgIFRHcmFwaE5vZGU6OnRyYXZlcnNlKGdyYXBoVHJhdmVy
c2VyKTsKLX0KLQotdm9pZCBUR3JhcGhMb29wOjp0cmF2ZXJzZShURGVwZW5kZW5jeUdyYXBoVHJh
dmVyc2VyKiBncmFwaFRyYXZlcnNlcikKLXsKLSAgICBncmFwaFRyYXZlcnNlci0+dmlzaXRMb29w
KHRoaXMpOwotICAgIFRHcmFwaE5vZGU6OnRyYXZlcnNlKGdyYXBoVHJhdmVyc2VyKTsKLX0KLQot
dm9pZCBUR3JhcGhMb2dpY2FsT3A6OnRyYXZlcnNlKFREZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZXIq
IGdyYXBoVHJhdmVyc2VyKQotewotICAgIGdyYXBoVHJhdmVyc2VyLT52aXNpdExvZ2ljYWxPcCh0
aGlzKTsKLSAgICBUR3JhcGhOb2RlOjp0cmF2ZXJzZShncmFwaFRyYXZlcnNlcik7Ci19CgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpE
ZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nLmwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZy5sCShyZXZpc2lvbiAyMDgw
MjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9n
bHNsYW5nLmwJKHdvcmtpbmcgY29weSkKQEAgLTM5Miw3ICszOTIsNiBAQAogPEZJRUxEUz5bIFx0
XHZcZlxyXSB7fQogPEZJRUxEUz4uIHsKICAgICB5eWV4dHJhLT5lcnJvcigqeXlsbG9jLCAiSWxs
ZWdhbCBjaGFyYWN0ZXIgYXQgZmllbGRuYW1lIHN0YXJ0IiwgeXl0ZXh0LCAiIik7Ci0gICAgeXll
eHRyYS0+cmVjb3ZlcigpOwogICAgIHJldHVybiAwOwogfQogCkBAIC00MzcsNyArNDM2LDYgQEAK
ICAgICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKSB5eXNjYW5uZXI7
CiAKICAgICB5eWV4dHJhLT5lcnJvcigqeXlsbG9jLCAiSWxsZWdhbCB1c2Ugb2YgcmVzZXJ2ZWQg
d29yZCIsIHl5dGV4dCwgIiIpOwotICAgIHl5ZXh0cmEtPnJlY292ZXIoKTsKICAgICByZXR1cm4g
MDsKIH0KIApAQCAtNDg3LDcgKzQ4NSw2IEBACiAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclZl
cnNpb24oKSA8IDMwMCkKICAgICB7CiAgICAgICAgIGNvbnRleHQtPmVycm9yKCp5eWxsb2MsICJV
bnNpZ25lZCBpbnRlZ2VycyBhcmUgdW5zdXBwb3J0ZWQgcHJpb3IgdG8gR0xTTCBFUyAzLjAwIiwg
eXl0ZXh0LCAiIik7Ci0gICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogCkBAIC01MDQsNyArNTAxLDYgQEAKICAgICBpZiAoY29udGV4dC0+Z2V0U2hh
ZGVyVmVyc2lvbigpIDwgMzAwKQogICAgIHsKICAgICAgICAgY29udGV4dC0+ZXJyb3IoKnl5bGxv
YywgIkZsb2F0aW5nLXBvaW50IHN1ZmZpeCB1bnN1cHBvcnRlZCBwcmlvciB0byBHTFNMIEVTIDMu
MDAiLCB5eXRleHQpOwotICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KIApAQCAtNTE4LDcgKzUxNCw2IEBACiAKIHZvaWQgeXllcnJvcihZWUxUWVBF
KiBsbG9jLCBUUGFyc2VDb250ZXh0KiBjb250ZXh0LCB2b2lkICpzY2FubmVyLCBjb25zdCBjaGFy
KiByZWFzb24pIHsKICAgICBjb250ZXh0LT5lcnJvcigqbGxvYywgcmVhc29uLCB5eWdldF90ZXh0
KHNjYW5uZXIpKTsKLSAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiB9CiAKIGludCBpbnRfY29uc3Rh
bnQoVFBhcnNlQ29udGV4dCAqY29udGV4dCkgewpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZy55Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2dsc2xhbmcueQkocmV2
aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvZ2xzbGFuZy55CSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw4IEBACiAKIC8v
IFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBieSBnZW5lcmF0ZV9wYXJzZXIuc2guIERPIE5P
VCBFRElUIQogCisvLyBjbGFuZy1mb3JtYXQgb2ZmCisKIC8vIElnbm9yZSBlcnJvcnMgaW4gYXV0
by1nZW5lcmF0ZWQgY29kZS4KICNpZiBkZWZpbmVkKF9fR05VQ19fKQogI3ByYWdtYSBHQ0MgZGlh
Z25vc3RpYyBpZ25vcmVkICItV3VudXNlZC1mdW5jdGlvbiIKQEAgLTc0LDEwICs3NiwxMiBAQAog
ICAgICAgICAgICAgVEludGVybU5vZGVQYWlyIG5vZGVQYWlyOwogICAgICAgICAgICAgVEludGVy
bVR5cGVkKiBpbnRlcm1UeXBlZE5vZGU7CiAgICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlKiBp
bnRlcm1BZ2dyZWdhdGU7CisgICAgICAgICAgICBUSW50ZXJtQmxvY2sqIGludGVybUJsb2NrOwog
ICAgICAgICAgICAgVEludGVybVN3aXRjaCogaW50ZXJtU3dpdGNoOwogICAgICAgICAgICAgVElu
dGVybUNhc2UqIGludGVybUNhc2U7CiAgICAgICAgIH07CiAgICAgICAgIHVuaW9uIHsKKyAgICAg
ICAgICAgIFRUeXBlU3BlY2lmaWVyTm9uQXJyYXkgdHlwZVNwZWNpZmllck5vbkFycmF5OwogICAg
ICAgICAgICAgVFB1YmxpY1R5cGUgdHlwZTsKICAgICAgICAgICAgIFRQcmVjaXNpb24gcHJlY2lz
aW9uOwogICAgICAgICAgICAgVExheW91dFF1YWxpZmllciBsYXlvdXRRdWFsaWZpZXI7CkBAIC04
Niw2ICs5MCw4IEBACiAgICAgICAgICAgICBUUGFyYW1ldGVyIHBhcmFtOwogICAgICAgICAgICAg
VEZpZWxkKiBmaWVsZDsKICAgICAgICAgICAgIFRGaWVsZExpc3QqIGZpZWxkTGlzdDsKKyAgICAg
ICAgICAgIFRRdWFsaWZpZXJXcmFwcGVyQmFzZSogcXVhbGlmaWVyV3JhcHBlcjsKKyAgICAgICAg
ICAgIFRUeXBlUXVhbGlmaWVyQnVpbGRlciogdHlwZVF1YWxpZmllckJ1aWxkZXI7CiAgICAgICAg
IH07CiAgICAgfSBpbnRlcm07CiB9CkBAIC0xMTMsNyArMTE5LDYgQEAKICNkZWZpbmUgVkVSVEVY
X09OTFkoUywgTCkgeyAgXAogICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXJUeXBlKCkgIT0gR0xf
VkVSVEVYX1NIQURFUikgeyAgXAogICAgICAgICBjb250ZXh0LT5lcnJvcihMLCAiIHN1cHBvcnRl
ZCBpbiB2ZXJ0ZXggc2hhZGVycyBvbmx5ICIsIFMpOyAgXAotICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7ICBcCiAgICAgfSAgXAogfQogCkBAIC0xMjAsMjMgKzEyNSwzOCBAQAogI2RlZmluZSBG
UkFHX09OTFkoUywgTCkgeyAgXAogICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXJUeXBlKCkgIT0g
R0xfRlJBR01FTlRfU0hBREVSKSB7ICBcCiAgICAgICAgIGNvbnRleHQtPmVycm9yKEwsICIgc3Vw
cG9ydGVkIGluIGZyYWdtZW50IHNoYWRlcnMgb25seSAiLCBTKTsgIFwKLSAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOyAgXAogICAgIH0gIFwKIH0KIAorI2RlZmluZSBDT01QVVRFX09OTFkoUywg
TCkgeyAgXAorICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXJUeXBlKCkgIT0gR0xfQ09NUFVURV9T
SEFERVIpIHsgIFwKKyAgICAgICAgY29udGV4dC0+ZXJyb3IoTCwgIiBzdXBwb3J0ZWQgaW4gY29t
cHV0ZSBzaGFkZXJzIG9ubHkgIiwgUyk7ICBcCisgICAgfSAgXAorfQorCisjZGVmaW5lIE5PTl9D
T01QVVRFX09OTFkoUywgTCkgeyAgXAorICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXJUeXBlKCkg
IT0gR0xfVkVSVEVYX1NIQURFUiAmJiBjb250ZXh0LT5nZXRTaGFkZXJUeXBlKCkgIT0gR0xfRlJB
R01FTlRfU0hBREVSKSB7ICBcCisgICAgICAgIGNvbnRleHQtPmVycm9yKEwsICIgc3VwcG9ydGVk
IGluIHZlcnRleCBhbmQgZnJhZ21lbnQgc2hhZGVycyBvbmx5ICIsIFMpOyAgXAorICAgIH0gIFwK
K30KKwogI2RlZmluZSBFUzJfT05MWShTLCBMKSB7ICBcCiAgICAgaWYgKGNvbnRleHQtPmdldFNo
YWRlclZlcnNpb24oKSAhPSAxMDApIHsgIFwKICAgICAgICAgY29udGV4dC0+ZXJyb3IoTCwgIiBz
dXBwb3J0ZWQgaW4gR0xTTCBFUyAxLjAwIG9ubHkgIiwgUyk7ICBcCi0gICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsgIFwKICAgICB9ICBcCiB9CiAKLSNkZWZpbmUgRVMzX09OTFkoVE9LRU4sIExJ
TkUsIFJFQVNPTikgeyAgXAotICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXJWZXJzaW9uKCkgIT0g
MzAwKSB7ICBcCi0gICAgICAgIGNvbnRleHQtPmVycm9yKExJTkUsIFJFQVNPTiAiIHN1cHBvcnRl
ZCBpbiBHTFNMIEVTIDMuMDAgb25seSAiLCBUT0tFTik7ICBcCi0gICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsgIFwKKyNkZWZpbmUgRVMzX09SX05FV0VSKFRPS0VOLCBMSU5FLCBSRUFTT04pIHsg
IFwKKyAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyVmVyc2lvbigpIDwgMzAwKSB7ICBcCisgICAg
ICAgIGNvbnRleHQtPmVycm9yKExJTkUsIFJFQVNPTiAiIHN1cHBvcnRlZCBpbiBHTFNMIEVTIDMu
MDAgYW5kIGFib3ZlIG9ubHkgIiwgVE9LRU4pOyAgXAogICAgIH0gIFwKIH0KKworI2RlZmluZSBF
UzNfMV9PTkxZKFRPS0VOLCBMSU5FLCBSRUFTT04pIHsgIFwKKyAgICBpZiAoY29udGV4dC0+Z2V0
U2hhZGVyVmVyc2lvbigpICE9IDMxMCkgeyAgXAorICAgICAgICBjb250ZXh0LT5lcnJvcihMSU5F
LCBSRUFTT04gIiBzdXBwb3J0ZWQgaW4gR0xTTCBFUyAzLjEwIG9ubHkgIiwgVE9LRU4pOyAgXAor
ICAgIH0gIFwKK30KICV9CiAKICV0b2tlbiA8bGV4PiBJTlZBUklBTlQgSElHSF9QUkVDSVNJT04g
TUVESVVNX1BSRUNJU0lPTiBMT1dfUFJFQ0lTSU9OIFBSRUNJU0lPTgpAQCAtMTc2LDkgKzE5Niw5
IEBACiAldHlwZSA8aW50ZXJtLmludGVybVR5cGVkTm9kZT4gc2hpZnRfZXhwcmVzc2lvbiBhbmRf
ZXhwcmVzc2lvbiBleGNsdXNpdmVfb3JfZXhwcmVzc2lvbiBpbmNsdXNpdmVfb3JfZXhwcmVzc2lv
bgogJXR5cGUgPGludGVybS5pbnRlcm1UeXBlZE5vZGU+IGZ1bmN0aW9uX2NhbGwgaW5pdGlhbGl6
ZXIgY29uZGl0aW9uIGNvbmRpdGlvbm9wdAogCi0ldHlwZSA8aW50ZXJtLmludGVybU5vZGU+IHRy
YW5zbGF0aW9uX3VuaXQgZnVuY3Rpb25fZGVmaW5pdGlvbgotJXR5cGUgPGludGVybS5pbnRlcm1O
b2RlPiBzdGF0ZW1lbnQgc2ltcGxlX3N0YXRlbWVudAotJXR5cGUgPGludGVybS5pbnRlcm1BZ2dy
ZWdhdGU+ICBzdGF0ZW1lbnRfbGlzdCBjb21wb3VuZF9zdGF0ZW1lbnQgY29tcG91bmRfc3RhdGVt
ZW50X25vX25ld19zY29wZQorJXR5cGUgPGludGVybS5pbnRlcm1CbG9jaz4gdHJhbnNsYXRpb25f
dW5pdAorJXR5cGUgPGludGVybS5pbnRlcm1Ob2RlPiBmdW5jdGlvbl9kZWZpbml0aW9uIHN0YXRl
bWVudCBzaW1wbGVfc3RhdGVtZW50CisldHlwZSA8aW50ZXJtLmludGVybUJsb2NrPiBzdGF0ZW1l
bnRfbGlzdCBjb21wb3VuZF9zdGF0ZW1lbnQgY29tcG91bmRfc3RhdGVtZW50X25vX25ld19zY29w
ZQogJXR5cGUgPGludGVybS5pbnRlcm1Ob2RlPiBkZWNsYXJhdGlvbl9zdGF0ZW1lbnQgc2VsZWN0
aW9uX3N0YXRlbWVudCBleHByZXNzaW9uX3N0YXRlbWVudAogJXR5cGUgPGludGVybS5pbnRlcm1O
b2RlPiBkZWNsYXJhdGlvbiBleHRlcm5hbF9kZWNsYXJhdGlvbgogJXR5cGUgPGludGVybS5pbnRl
cm1Ob2RlPiBmb3JfaW5pdF9zdGF0ZW1lbnQKQEAgLTE4OSwxMyArMjA5LDE4IEBACiAldHlwZSA8
aW50ZXJtPiBzaW5nbGVfZGVjbGFyYXRpb24gaW5pdF9kZWNsYXJhdG9yX2xpc3QKIAogJXR5cGUg
PGludGVybT4gcGFyYW1ldGVyX2RlY2xhcmF0aW9uIHBhcmFtZXRlcl9kZWNsYXJhdG9yIHBhcmFt
ZXRlcl90eXBlX3NwZWNpZmllcgotJXR5cGUgPGludGVybS5xdWFsaWZpZXI+IHBhcmFtZXRlcl9x
dWFsaWZpZXIgcGFyYW1ldGVyX3R5cGVfcXVhbGlmaWVyIAotJXR5cGUgPGludGVybS5sYXlvdXRR
dWFsaWZpZXI+IGxheW91dF9xdWFsaWZpZXIgbGF5b3V0X3F1YWxpZmllcl9pZF9saXN0IGxheW91
dF9xdWFsaWZpZXJfaWQKKyV0eXBlIDxpbnRlcm0ubGF5b3V0UXVhbGlmaWVyPiBsYXlvdXRfcXVh
bGlmaWVyX2lkX2xpc3QgbGF5b3V0X3F1YWxpZmllcl9pZAogCisldHlwZSA8aW50ZXJtLnR5cGU+
IGZ1bGx5X3NwZWNpZmllZF90eXBlIHR5cGVfc3BlY2lmaWVyCisKICV0eXBlIDxpbnRlcm0ucHJl
Y2lzaW9uPiBwcmVjaXNpb25fcXVhbGlmaWVyCi0ldHlwZSA8aW50ZXJtLnR5cGU+IHR5cGVfcXVh
bGlmaWVyIGZ1bGx5X3NwZWNpZmllZF90eXBlIHR5cGVfc3BlY2lmaWVyIHN0b3JhZ2VfcXVhbGlm
aWVyIGludGVycG9sYXRpb25fcXVhbGlmaWVyCi0ldHlwZSA8aW50ZXJtLnR5cGU+IHR5cGVfc3Bl
Y2lmaWVyX25vX3ByZWMgdHlwZV9zcGVjaWZpZXJfbm9uYXJyYXkKLSV0eXBlIDxpbnRlcm0udHlw
ZT4gc3RydWN0X3NwZWNpZmllcgorJXR5cGUgPGludGVybS5sYXlvdXRRdWFsaWZpZXI+IGxheW91
dF9xdWFsaWZpZXIKKyV0eXBlIDxpbnRlcm0ucXVhbGlmaWVyPiBzdG9yYWdlX3F1YWxpZmllciBp
bnRlcnBvbGF0aW9uX3F1YWxpZmllcgorJXR5cGUgPGludGVybS5xdWFsaWZpZXJXcmFwcGVyPiBz
aW5nbGVfdHlwZV9xdWFsaWZpZXIgaW52YXJpYW50X3F1YWxpZmllcgorJXR5cGUgPGludGVybS50
eXBlUXVhbGlmaWVyQnVpbGRlcj4gdHlwZV9xdWFsaWZpZXIKKworJXR5cGUgPGludGVybS50eXBl
U3BlY2lmaWVyTm9uQXJyYXk+IHR5cGVfc3BlY2lmaWVyX25vbmFycmF5IHN0cnVjdF9zcGVjaWZp
ZXIKKyV0eXBlIDxpbnRlcm0udHlwZT4gdHlwZV9zcGVjaWZpZXJfbm9fcHJlYwogJXR5cGUgPGlu
dGVybS5maWVsZD4gc3RydWN0X2RlY2xhcmF0b3IKICV0eXBlIDxpbnRlcm0uZmllbGRMaXN0PiBz
dHJ1Y3RfZGVjbGFyYXRvcl9saXN0IHN0cnVjdF9kZWNsYXJhdGlvbiBzdHJ1Y3RfZGVjbGFyYXRp
b25fbGlzdAogJXR5cGUgPGludGVybS5mdW5jdGlvbj4gZnVuY3Rpb25faGVhZGVyIGZ1bmN0aW9u
X2RlY2xhcmF0b3IgZnVuY3Rpb25faWRlbnRpZmllcgpAQCAtMjc0LDggKzI5OSw3IEBACiAKIGlu
dGVnZXJfZXhwcmVzc2lvbgogICAgIDogZXhwcmVzc2lvbiB7Ci0gICAgICAgIGlmIChjb250ZXh0
LT5pbnRlZ2VyRXJyb3JDaGVjaygkMSwgIltdIikpCi0gICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CisgICAgICAgIGNvbnRleHQtPmNoZWNrSXNTY2FsYXJJbnRlZ2VyKCQxLCAiW10iKTsK
ICAgICAgICAgJCQgPSAkMTsKICAgICB9CiAgICAgOwpAQCAtMjk3LDcgKzMyMSw3IEBACiAgICAg
ICAgICQkLm5vZGVQYWlyLm5vZGUyID0gbnVsbHB0cjsKICAgICB9CiAgICAgfCBwb3N0Zml4X2V4
cHJlc3Npb24gRE9UIGZ1bmN0aW9uX2NhbGxfZ2VuZXJpYyB7Ci0gICAgICAgIEVTM19PTkxZKCIi
LCBAMywgIm1ldGhvZHMiKTsKKyAgICAgICAgRVMzX09SX05FV0VSKCIiLCBAMywgIm1ldGhvZHMi
KTsKICAgICAgICAgJCQgPSAkMzsKICAgICAgICAgJCQubm9kZVBhaXIubm9kZTIgPSAkMTsKICAg
ICB9CkBAIC0zMjgsNyArMzUyLDcgQEAKICAgICAgICAgY29uc3QgVFR5cGUgKnR5cGUgPSBuZXcg
VFR5cGUoJDItPmdldFR5cGUoKSk7CiAgICAgICAgICQxLT5hZGRQYXJhbWV0ZXIoVENvbnN0UGFy
YW1ldGVyKHR5cGUpKTsKICAgICAgICAgJCQuZnVuY3Rpb24gPSAkMTsKLSAgICAgICAgJCQubm9k
ZVBhaXIubm9kZTEgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZSgkMiwgQDIp
OworICAgICAgICAkJC5ub2RlUGFpci5ub2RlMSA9IFRJbnRlcm1lZGlhdGU6Ok1ha2VBZ2dyZWdh
dGUoJDIsIEAyKTsKICAgICB9CiAgICAgfCBmdW5jdGlvbl9jYWxsX2hlYWRlcl93aXRoX3BhcmFt
ZXRlcnMgQ09NTUEgYXNzaWdubWVudF9leHByZXNzaW9uIHsKICAgICAgICAgY29uc3QgVFR5cGUg
KnR5cGUgPSBuZXcgVFR5cGUoJDMtPmdldFR5cGUoKSk7CkBAIC0zNDksMjAgKzM3MywxOCBAQAog
ZnVuY3Rpb25faWRlbnRpZmllcgogICAgIDogdHlwZV9zcGVjaWZpZXJfbm9fcHJlYyB7CiAgICAg
ICAgIGlmICgkMS5hcnJheSkgewotICAgICAgICAgICAgRVMzX09OTFkoIltdIiwgQDEsICJhcnJh
eSBjb25zdHJ1Y3RvciIpOworICAgICAgICAgICAgRVMzX09SX05FV0VSKCJbXSIsIEAxLCAiYXJy
YXkgY29uc3RydWN0b3IiKTsKICAgICAgICAgfQogICAgICAgICAkJCA9IGNvbnRleHQtPmFkZENv
bnN0cnVjdG9yRnVuYygkMSk7CiAgICAgfQogICAgIHwgSURFTlRJRklFUiB7Ci0gICAgICAgIGlm
IChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soQDEsICokMS5zdHJpbmcpKQotICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICBjb250ZXh0LT5jaGVja0lzTm90UmVzZXJ2
ZWQoQDEsICokMS5zdHJpbmcpOwogICAgICAgICBjb25zdCBUVHlwZSAqdHlwZSA9IFRDYWNoZTo6
Z2V0VHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwogICAgICAgICBURnVuY3Rpb24gKmZ1bmN0
aW9uID0gbmV3IFRGdW5jdGlvbigkMS5zdHJpbmcsIHR5cGUpOwogICAgICAgICAkJCA9IGZ1bmN0
aW9uOwogICAgIH0KICAgICB8IEZJRUxEX1NFTEVDVElPTiB7Ci0gICAgICAgIGlmIChjb250ZXh0
LT5yZXNlcnZlZEVycm9yQ2hlY2soQDEsICokMS5zdHJpbmcpKQotICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOworICAgICAgICBjb250ZXh0LT5jaGVja0lzTm90UmVzZXJ2ZWQoQDEsICok
MS5zdHJpbmcpOwogICAgICAgICBjb25zdCBUVHlwZSAqdHlwZSA9IFRDYWNoZTo6Z2V0VHlwZShF
YnRWb2lkLCBFYnBVbmRlZmluZWQpOwogICAgICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uID0gbmV3
IFRGdW5jdGlvbigkMS5zdHJpbmcsIHR5cGUpOwogICAgICAgICAkJCA9IGZ1bmN0aW9uOwpAQCAt
MzkzLDcgKzQxNSw3IEBACiAgICAgfCBEQVNIICB7ICQkLm9wID0gRU9wTmVnYXRpdmU7IH0KICAg
ICB8IEJBTkcgIHsgJCQub3AgPSBFT3BMb2dpY2FsTm90OyB9CiAgICAgfCBUSUxERSB7Ci0gICAg
ICAgIEVTM19PTkxZKCJ+IiwgQCQsICJiaXQtd2lzZSBvcGVyYXRvciIpOworICAgICAgICBFUzNf
T1JfTkVXRVIoIn4iLCBAJCwgImJpdC13aXNlIG9wZXJhdG9yIik7CiAgICAgICAgICQkLm9wID0g
RU9wQml0d2lzZU5vdDsKICAgICB9CiAgICAgOwpAQCAtNDA4LDcgKzQzMCw3IEBACiAgICAgICAg
ICQkID0gY29udGV4dC0+YWRkQmluYXJ5TWF0aChFT3BEaXYsICQxLCAkMywgQDIpOwogICAgIH0K
ICAgICB8IG11bHRpcGxpY2F0aXZlX2V4cHJlc3Npb24gUEVSQ0VOVCB1bmFyeV9leHByZXNzaW9u
IHsKLSAgICAgICAgRVMzX09OTFkoIiUiLCBAMiwgImludGVnZXIgbW9kdWx1cyBvcGVyYXRvciIp
OworICAgICAgICBFUzNfT1JfTkVXRVIoIiUiLCBAMiwgImludGVnZXIgbW9kdWx1cyBvcGVyYXRv
ciIpOwogICAgICAgICAkJCA9IGNvbnRleHQtPmFkZEJpbmFyeU1hdGgoRU9wSU1vZCwgJDEsICQz
LCBAMik7CiAgICAgfQogICAgIDsKQEAgLTQyNiwxMSArNDQ4LDExIEBACiBzaGlmdF9leHByZXNz
aW9uCiAgICAgOiBhZGRpdGl2ZV9leHByZXNzaW9uIHsgJCQgPSAkMTsgfQogICAgIHwgc2hpZnRf
ZXhwcmVzc2lvbiBMRUZUX09QIGFkZGl0aXZlX2V4cHJlc3Npb24gewotICAgICAgICBFUzNfT05M
WSgiPDwiLCBAMiwgImJpdC13aXNlIG9wZXJhdG9yIik7CisgICAgICAgIEVTM19PUl9ORVdFUigi
PDwiLCBAMiwgImJpdC13aXNlIG9wZXJhdG9yIik7CiAgICAgICAgICQkID0gY29udGV4dC0+YWRk
QmluYXJ5TWF0aChFT3BCaXRTaGlmdExlZnQsICQxLCAkMywgQDIpOwogICAgIH0KICAgICB8IHNo
aWZ0X2V4cHJlc3Npb24gUklHSFRfT1AgYWRkaXRpdmVfZXhwcmVzc2lvbiB7Ci0gICAgICAgIEVT
M19PTkxZKCI+PiIsIEAyLCAiYml0LXdpc2Ugb3BlcmF0b3IiKTsKKyAgICAgICAgRVMzX09SX05F
V0VSKCI+PiIsIEAyLCAiYml0LXdpc2Ugb3BlcmF0b3IiKTsKICAgICAgICAgJCQgPSBjb250ZXh0
LT5hZGRCaW5hcnlNYXRoKEVPcEJpdFNoaWZ0UmlnaHQsICQxLCAkMywgQDIpOwogICAgIH0KICAg
ICA7CkBAIC00NjQsNyArNDg2LDcgQEAKIGFuZF9leHByZXNzaW9uCiAgICAgOiBlcXVhbGl0eV9l
eHByZXNzaW9uIHsgJCQgPSAkMTsgfQogICAgIHwgYW5kX2V4cHJlc3Npb24gQU1QRVJTQU5EIGVx
dWFsaXR5X2V4cHJlc3Npb24gewotICAgICAgICBFUzNfT05MWSgiJiIsIEAyLCAiYml0LXdpc2Ug
b3BlcmF0b3IiKTsKKyAgICAgICAgRVMzX09SX05FV0VSKCImIiwgQDIsICJiaXQtd2lzZSBvcGVy
YXRvciIpOwogICAgICAgICAkJCA9IGNvbnRleHQtPmFkZEJpbmFyeU1hdGgoRU9wQml0d2lzZUFu
ZCwgJDEsICQzLCBAMik7CiAgICAgfQogICAgIDsKQEAgLTQ3Miw3ICs0OTQsNyBAQAogZXhjbHVz
aXZlX29yX2V4cHJlc3Npb24KICAgICA6IGFuZF9leHByZXNzaW9uIHsgJCQgPSAkMTsgfQogICAg
IHwgZXhjbHVzaXZlX29yX2V4cHJlc3Npb24gQ0FSRVQgYW5kX2V4cHJlc3Npb24gewotICAgICAg
ICBFUzNfT05MWSgiXiIsIEAyLCAiYml0LXdpc2Ugb3BlcmF0b3IiKTsKKyAgICAgICAgRVMzX09S
X05FV0VSKCJeIiwgQDIsICJiaXQtd2lzZSBvcGVyYXRvciIpOwogICAgICAgICAkJCA9IGNvbnRl
eHQtPmFkZEJpbmFyeU1hdGgoRU9wQml0d2lzZVhvciwgJDEsICQzLCBAMik7CiAgICAgfQogICAg
IDsKQEAgLTQ4MCw3ICs1MDIsNyBAQAogaW5jbHVzaXZlX29yX2V4cHJlc3Npb24KICAgICA6IGV4
Y2x1c2l2ZV9vcl9leHByZXNzaW9uIHsgJCQgPSAkMTsgfQogICAgIHwgaW5jbHVzaXZlX29yX2V4
cHJlc3Npb24gVkVSVElDQUxfQkFSIGV4Y2x1c2l2ZV9vcl9leHByZXNzaW9uIHsKLSAgICAgICAg
RVMzX09OTFkoInwiLCBAMiwgImJpdC13aXNlIG9wZXJhdG9yIik7CisgICAgICAgIEVTM19PUl9O
RVdFUigifCIsIEAyLCAiYml0LXdpc2Ugb3BlcmF0b3IiKTsKICAgICAgICAgJCQgPSBjb250ZXh0
LT5hZGRCaW5hcnlNYXRoKEVPcEJpdHdpc2VPciwgJDEsICQzLCBAMik7CiAgICAgfQogICAgIDsK
QEAgLTUxNiw4ICs1MzgsNyBAQAogYXNzaWdubWVudF9leHByZXNzaW9uCiAgICAgOiBjb25kaXRp
b25hbF9leHByZXNzaW9uIHsgJCQgPSAkMTsgfQogICAgIHwgdW5hcnlfZXhwcmVzc2lvbiBhc3Np
Z25tZW50X29wZXJhdG9yIGFzc2lnbm1lbnRfZXhwcmVzc2lvbiB7Ci0gICAgICAgIGlmIChjb250
ZXh0LT5sVmFsdWVFcnJvckNoZWNrKEAyLCAiYXNzaWduIiwgJDEpKQotICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOworICAgICAgICBjb250ZXh0LT5jaGVja0NhbkJlTFZhbHVlKEAyLCAi
YXNzaWduIiwgJDEpOwogICAgICAgICAkJCA9IGNvbnRleHQtPmFkZEFzc2lnbigkMi5vcCwgJDEs
ICQzLCBAMik7CiAgICAgfQogICAgIDsKQEAgLTUyNywyOSArNTQ4LDI5IEBACiAgICAgfCBNVUxf
QVNTSUdOICAgeyAkJC5vcCA9IEVPcE11bEFzc2lnbjsgfQogICAgIHwgRElWX0FTU0lHTiAgIHsg
JCQub3AgPSBFT3BEaXZBc3NpZ247IH0KICAgICB8IE1PRF9BU1NJR04gICB7Ci0gICAgICAgIEVT
M19PTkxZKCIlPSIsIEAkLCAiaW50ZWdlciBtb2R1bHVzIG9wZXJhdG9yIik7CisgICAgICAgIEVT
M19PUl9ORVdFUigiJT0iLCBAJCwgImludGVnZXIgbW9kdWx1cyBvcGVyYXRvciIpOwogICAgICAg
ICAkJC5vcCA9IEVPcElNb2RBc3NpZ247CiAgICAgfQogICAgIHwgQUREX0FTU0lHTiAgIHsgJCQu
b3AgPSBFT3BBZGRBc3NpZ247IH0KICAgICB8IFNVQl9BU1NJR04gICB7ICQkLm9wID0gRU9wU3Vi
QXNzaWduOyB9CiAgICAgfCBMRUZUX0FTU0lHTiB7Ci0gICAgICAgIEVTM19PTkxZKCI8PD0iLCBA
JCwgImJpdC13aXNlIG9wZXJhdG9yIik7CisgICAgICAgIEVTM19PUl9ORVdFUigiPDw9IiwgQCQs
ICJiaXQtd2lzZSBvcGVyYXRvciIpOwogICAgICAgICAkJC5vcCA9IEVPcEJpdFNoaWZ0TGVmdEFz
c2lnbjsKICAgICB9CiAgICAgfCBSSUdIVF9BU1NJR04gewotICAgICAgICBFUzNfT05MWSgiPj49
IiwgQCQsICJiaXQtd2lzZSBvcGVyYXRvciIpOworICAgICAgICBFUzNfT1JfTkVXRVIoIj4+PSIs
IEAkLCAiYml0LXdpc2Ugb3BlcmF0b3IiKTsKICAgICAgICAgJCQub3AgPSBFT3BCaXRTaGlmdFJp
Z2h0QXNzaWduOwogICAgIH0KICAgICB8IEFORF9BU1NJR04gewotICAgICAgICBFUzNfT05MWSgi
Jj0iLCBAJCwgImJpdC13aXNlIG9wZXJhdG9yIik7CisgICAgICAgIEVTM19PUl9ORVdFUigiJj0i
LCBAJCwgImJpdC13aXNlIG9wZXJhdG9yIik7CiAgICAgICAgICQkLm9wID0gRU9wQml0d2lzZUFu
ZEFzc2lnbjsKICAgICB9CiAgICAgfCBYT1JfQVNTSUdOIHsKLSAgICAgICAgRVMzX09OTFkoIl49
IiwgQCQsICJiaXQtd2lzZSBvcGVyYXRvciIpOworICAgICAgICBFUzNfT1JfTkVXRVIoIl49Iiwg
QCQsICJiaXQtd2lzZSBvcGVyYXRvciIpOwogICAgICAgICAkJC5vcCA9IEVPcEJpdHdpc2VYb3JB
c3NpZ247CiAgICAgfQogICAgIHwgT1JfQVNTSUdOIHsKLSAgICAgICAgRVMzX09OTFkoInw9Iiwg
QCQsICJiaXQtd2lzZSBvcGVyYXRvciIpOworICAgICAgICBFUzNfT1JfTkVXRVIoInw9IiwgQCQs
ICJiaXQtd2lzZSBvcGVyYXRvciIpOwogICAgICAgICAkJC5vcCA9IEVPcEJpdHdpc2VPckFzc2ln
bjsKICAgICB9CiAgICAgOwpAQCAtNTY1LDggKzU4Niw3IEBACiAKIGNvbnN0YW50X2V4cHJlc3Np
b24KICAgICA6IGNvbmRpdGlvbmFsX2V4cHJlc3Npb24gewotICAgICAgICBpZiAoY29udGV4dC0+
Y29uc3RFcnJvckNoZWNrKCQxKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAg
ICAgICAgY29udGV4dC0+Y2hlY2tJc0NvbnN0KCQxKTsKICAgICAgICAgJCQgPSAkMTsKICAgICB9
CiAgICAgOwpAQCAtNTczLDggKzU5Myw3IEBACiAKIGVudGVyX3N0cnVjdAogICAgIDogSURFTlRJ
RklFUiBMRUZUX0JSQUNFIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFy
YXRpb24oQDEsICokMS5zdHJpbmcpKQotICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwor
ICAgICAgICBjb250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKEAxLCAqJDEuc3RyaW5nKTsK
ICAgICAgICAgJCQgPSAkMTsKICAgICB9CiAgICAgOwpAQCAtNTkyLDM1ICs2MTEsMzggQEAKICAg
ICB8IFBSRUNJU0lPTiBwcmVjaXNpb25fcXVhbGlmaWVyIHR5cGVfc3BlY2lmaWVyX25vX3ByZWMg
U0VNSUNPTE9OIHsKICAgICAgICAgaWYgKCgkMiA9PSBFYnBIaWdoKSAmJiAoY29udGV4dC0+Z2V0
U2hhZGVyVHlwZSgpID09IEdMX0ZSQUdNRU5UX1NIQURFUikgJiYgIWNvbnRleHQtPmdldEZyYWdt
ZW50UHJlY2lzaW9uSGlnaCgpKSB7CiAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgInBy
ZWNpc2lvbiBpcyBub3Qgc3VwcG9ydGVkIGluIGZyYWdtZW50IHNoYWRlciIsICJoaWdocCIpOwot
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIGlmICgh
Y29udGV4dC0+c3ltYm9sVGFibGUuc2V0RGVmYXVsdFByZWNpc2lvbiggJDMsICQyICkpIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAiaWxsZWdhbCB0eXBlIGFyZ3VtZW50IGZvciBk
ZWZhdWx0IHByZWNpc2lvbiBxdWFsaWZpZXIiLCBnZXRCYXNpY1N0cmluZygkMy50eXBlKSk7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJv
cihAMSwgImlsbGVnYWwgdHlwZSBhcmd1bWVudCBmb3IgZGVmYXVsdCBwcmVjaXNpb24gcXVhbGlm
aWVyIiwgZ2V0QmFzaWNTdHJpbmcoJDMuZ2V0QmFzaWNUeXBlKCkpKTsKICAgICAgICAgfQogICAg
ICAgICAkJCA9IDA7CiAgICAgfQogICAgIHwgdHlwZV9xdWFsaWZpZXIgZW50ZXJfc3RydWN0IHN0
cnVjdF9kZWNsYXJhdGlvbl9saXN0IFJJR0hUX0JSQUNFIFNFTUlDT0xPTiB7Ci0gICAgICAgIEVT
M19PTkxZKGdldFF1YWxpZmllclN0cmluZygkMS5xdWFsaWZpZXIpLCBAMSwgImludGVyZmFjZSBi
bG9ja3MiKTsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRJbnRlcmZhY2VCbG9jaygkMSwgQDIs
ICokMi5zdHJpbmcsICQzLCBOVUxMLCBAJCwgTlVMTCwgQCQpOworICAgICAgICBFUzNfT1JfTkVX
RVIoJDIuc3RyaW5nLT5jX3N0cigpLCBAMSwgImludGVyZmFjZSBibG9ja3MiKTsKKyAgICAgICAg
JCQgPSBjb250ZXh0LT5hZGRJbnRlcmZhY2VCbG9jaygqJDEsIEAyLCAqJDIuc3RyaW5nLCAkMywg
TlVMTCwgQCQsIE5VTEwsIEAkKTsKICAgICB9CiAgICAgfCB0eXBlX3F1YWxpZmllciBlbnRlcl9z
dHJ1Y3Qgc3RydWN0X2RlY2xhcmF0aW9uX2xpc3QgUklHSFRfQlJBQ0UgSURFTlRJRklFUiBTRU1J
Q09MT04gewotICAgICAgICBFUzNfT05MWShnZXRRdWFsaWZpZXJTdHJpbmcoJDEucXVhbGlmaWVy
KSwgQDEsICJpbnRlcmZhY2UgYmxvY2tzIik7Ci0gICAgICAgICQkID0gY29udGV4dC0+YWRkSW50
ZXJmYWNlQmxvY2soJDEsIEAyLCAqJDIuc3RyaW5nLCAkMywgJDUuc3RyaW5nLCBANSwgTlVMTCwg
QCQpOworICAgICAgICBFUzNfT1JfTkVXRVIoJDIuc3RyaW5nLT5jX3N0cigpLCBAMSwgImludGVy
ZmFjZSBibG9ja3MiKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRJbnRlcmZhY2VCbG9jaygq
JDEsIEAyLCAqJDIuc3RyaW5nLCAkMywgJDUuc3RyaW5nLCBANSwgTlVMTCwgQCQpOwogICAgIH0K
ICAgICB8IHR5cGVfcXVhbGlmaWVyIGVudGVyX3N0cnVjdCBzdHJ1Y3RfZGVjbGFyYXRpb25fbGlz
dCBSSUdIVF9CUkFDRSBJREVOVElGSUVSIExFRlRfQlJBQ0tFVCBjb25zdGFudF9leHByZXNzaW9u
IFJJR0hUX0JSQUNLRVQgU0VNSUNPTE9OIHsKLSAgICAgICAgRVMzX09OTFkoZ2V0UXVhbGlmaWVy
U3RyaW5nKCQxLnF1YWxpZmllciksIEAxLCAiaW50ZXJmYWNlIGJsb2NrcyIpOwotICAgICAgICAk
JCA9IGNvbnRleHQtPmFkZEludGVyZmFjZUJsb2NrKCQxLCBAMiwgKiQyLnN0cmluZywgJDMsICQ1
LnN0cmluZywgQDUsICQ3LCBANik7CisgICAgICAgIEVTM19PUl9ORVdFUigkMi5zdHJpbmctPmNf
c3RyKCksIEAxLCAiaW50ZXJmYWNlIGJsb2NrcyIpOworICAgICAgICAkJCA9IGNvbnRleHQtPmFk
ZEludGVyZmFjZUJsb2NrKCokMSwgQDIsICokMi5zdHJpbmcsICQzLCAkNS5zdHJpbmcsIEA1LCAk
NywgQDYpOwogICAgIH0KICAgICB8IHR5cGVfcXVhbGlmaWVyIFNFTUlDT0xPTiB7Ci0gICAgICAg
IGNvbnRleHQtPnBhcnNlR2xvYmFsTGF5b3V0UXVhbGlmaWVyKCQxKTsKKyAgICAgICAgY29udGV4
dC0+cGFyc2VHbG9iYWxMYXlvdXRRdWFsaWZpZXIoKiQxKTsKICAgICAgICAgJCQgPSAwOwogICAg
IH0KKyAgICB8IHR5cGVfcXVhbGlmaWVyIElERU5USUZJRVIgU0VNSUNPTE9OIC8vIGUuZy4gdG8g
cXVhbGlmeSBhbiBleGlzdGluZyB2YXJpYWJsZSBhcyBpbnZhcmlhbnQKKyAgICB7CisgICAgICAg
ICQkID0gY29udGV4dC0+cGFyc2VJbnZhcmlhbnREZWNsYXJhdGlvbigqJDEsIEAyLCAkMi5zdHJp
bmcsICQyLnN5bWJvbCk7CisgICAgfQogICAgIDsKIAogZnVuY3Rpb25fcHJvdG90eXBlCiAgICAg
OiBmdW5jdGlvbl9kZWNsYXJhdG9yIFJJR0hUX1BBUkVOICB7CiAgICAgICAgICQkLmZ1bmN0aW9u
ID0gY29udGV4dC0+cGFyc2VGdW5jdGlvbkRlY2xhcmF0b3IoQDIsICQxKTsKKyAgICAgICAgY29u
dGV4dC0+ZXhpdEZ1bmN0aW9uRGVjbGFyYXRpb24oKTsKICAgICB9CiAgICAgOwogCkBAIC02NTMs
NyArNjc1LDYgQEAKICAgICAgICAgICAgIC8vIFRoaXMgcGFyYW1ldGVyID4gZmlyc3QgaXMgdm9p
ZAogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAiY2Fubm90
IGJlIGFuIGFyZ3VtZW50IHR5cGUgZXhjZXB0IGZvciAnKHZvaWQpJyIsICJ2b2lkIik7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBkZWxldGUgJDMucGFyYW0u
dHlwZTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIEFkZCB0aGUgcGFyYW1ldGVy
CkBAIC02NjUsMjcgKzY4NiwxMCBAQAogCiBmdW5jdGlvbl9oZWFkZXIKICAgICA6IGZ1bGx5X3Nw
ZWNpZmllZF90eXBlIElERU5USUZJRVIgTEVGVF9QQVJFTiB7Ci0gICAgICAgIGlmICgkMS5xdWFs
aWZpZXIgIT0gRXZxR2xvYmFsICYmICQxLnF1YWxpZmllciAhPSBFdnFUZW1wb3JhcnkpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAibm8gcXVhbGlmaWVycyBhbGxv
d2VkIGZvciBmdW5jdGlvbiByZXR1cm4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoJDEucXVhbGlmaWVy
KSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKCEkMS5sYXlvdXRRdWFsaWZpZXIuaXNFbXB0eSgpKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcihAMiwgIm5vIHF1YWxpZmllcnMgYWxsb3dlZCBmb3IgZnVuY3Rpb24g
cmV0dXJuIiwgImxheW91dCIpOwotICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAg
ICAgICB9Ci0gICAgICAgIC8vIG1ha2Ugc3VyZSBhIHNhbXBsZXIgaXMgbm90IGludm9sdmVkIGFz
IHdlbGwuLi4KLSAgICAgICAgaWYgKGNvbnRleHQtPnNhbXBsZXJFcnJvckNoZWNrKEAyLCAkMSwg
InNhbXBsZXJzIGNhbid0IGJlIGZ1bmN0aW9uIHJldHVybiB2YWx1ZXMiKSkKLSAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5wYXJzZUZ1bmN0aW9u
SGVhZGVyKCQxLCAkMi5zdHJpbmcsIEAyKTsKIAotICAgICAgICAvLyBBZGQgdGhlIGZ1bmN0aW9u
IGFzIGEgcHJvdG90eXBlIGFmdGVyIHBhcnNpbmcgaXQgKHdlIGRvIG5vdCBzdXBwb3J0IHJlY3Vy
c2lvbikKLSAgICAgICAgVEZ1bmN0aW9uICpmdW5jdGlvbjsKLSAgICAgICAgY29uc3QgVFR5cGUg
KnR5cGUgPSBuZXcgVFR5cGUoJDEpOwotICAgICAgICBmdW5jdGlvbiA9IG5ldyBURnVuY3Rpb24o
JDIuc3RyaW5nLCB0eXBlKTsKLSAgICAgICAgJCQgPSBmdW5jdGlvbjsKLSAgICAgICAgCiAgICAg
ICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsKKyAgICAgICAgY29udGV4dC0+ZW50ZXJG
dW5jdGlvbkRlY2xhcmF0aW9uKCk7CiAgICAgfQogICAgIDsKIApAQCAtNjkyLDI2ICs2OTYsMjEg
QEAKIHBhcmFtZXRlcl9kZWNsYXJhdG9yCiAgICAgLy8gVHlwZSArIG5hbWUKICAgICA6IHR5cGVf
c3BlY2lmaWVyIGlkZW50aWZpZXIgewotICAgICAgICBpZiAoJDEudHlwZSA9PSBFYnRWb2lkKSB7
CisgICAgICAgIGlmICgkMS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRWb2lkKSB7CiAgICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcihAMiwgImlsbGVnYWwgdXNlIG9mIHR5cGUgJ3ZvaWQnIiwgJDIuc3Ry
aW5nLT5jX3N0cigpKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
fQotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5n
KSkKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgY29udGV4dC0+Y2hl
Y2tJc05vdFJlc2VydmVkKEAyLCAqJDIuc3RyaW5nKTsKICAgICAgICAgVFBhcmFtZXRlciBwYXJh
bSA9IHskMi5zdHJpbmcsIG5ldyBUVHlwZSgkMSl9OwogICAgICAgICAkJC5wYXJhbSA9IHBhcmFt
OwogICAgIH0KICAgICB8IHR5cGVfc3BlY2lmaWVyIGlkZW50aWZpZXIgTEVGVF9CUkFDS0VUIGNv
bnN0YW50X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7CiAgICAgICAgIC8vIENoZWNrIHRoYXQg
d2UgY2FuIG1ha2UgYW4gYXJyYXkgb3V0IG9mIHRoaXMgdHlwZQotICAgICAgICBpZiAoY29udGV4
dC0+YXJyYXlUeXBlRXJyb3JDaGVjayhAMywgJDEpKQotICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOworICAgICAgICBjb250ZXh0LT5jaGVja0lzVmFsaWRUeXBlRm9yQXJyYXkoQDMsICQx
KTsKIAotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKEAyLCAqJDIuc3Ry
aW5nKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgY29udGV4dC0+
Y2hlY2tJc05vdFJlc2VydmVkKEAyLCAqJDIuc3RyaW5nKTsKIAotICAgICAgICBpbnQgc2l6ZTsK
LSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soQDMsICQ0LCBzaXplKSkK
LSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgdW5zaWduZWQgaW50IHNp
emUgPSBjb250ZXh0LT5jaGVja0lzVmFsaWRBcnJheVNpemUoQDMsICQ0KTsKKwogICAgICAgICAk
MS5zZXRBcnJheVNpemUoc2l6ZSk7CiAKICAgICAgICAgVFR5cGUqIHR5cGUgPSBuZXcgVFR5cGUo
JDEpOwpAQCAtNzI5LDQ4ICs3MjgsMjIgQEAKICAgICAvLwogICAgIC8vIFR5cGUgKyBuYW1lCiAg
ICAgLy8KLSAgICA6IHBhcmFtZXRlcl90eXBlX3F1YWxpZmllciBwYXJhbWV0ZXJfcXVhbGlmaWVy
IHBhcmFtZXRlcl9kZWNsYXJhdG9yIHsKLSAgICAgICAgJCQgPSAkMzsKLSAgICAgICAgaWYgKGNv
bnRleHQtPnBhcmFtRXJyb3JDaGVjayhAMywgJDEsICQyLCAkJC5wYXJhbS50eXBlKSkKLSAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICB9Ci0gICAgfCBwYXJhbWV0ZXJfcXVhbGlm
aWVyIHBhcmFtZXRlcl9kZWNsYXJhdG9yIHsKKyAgICA6IHR5cGVfcXVhbGlmaWVyIHBhcmFtZXRl
cl9kZWNsYXJhdG9yIHsKICAgICAgICAgJCQgPSAkMjsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBh
cmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKEAyLCAkMSwgKiQyLnBhcmFtLnR5cGUpKQotICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJv
ckNoZWNrKEAyLCBFdnFUZW1wb3JhcnksICQxLCAkJC5wYXJhbS50eXBlKSkKLSAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgY29udGV4dC0+Y2hlY2tJc1BhcmFtZXRlclF1
YWxpZmllclZhbGlkKEAyLCAqJDEsICQyLnBhcmFtLnR5cGUpOwogICAgIH0KLSAgICAvLwotICAg
IC8vIE9ubHkgdHlwZQotICAgIC8vCi0gICAgfCBwYXJhbWV0ZXJfdHlwZV9xdWFsaWZpZXIgcGFy
YW1ldGVyX3F1YWxpZmllciBwYXJhbWV0ZXJfdHlwZV9zcGVjaWZpZXIgewotICAgICAgICAkJCA9
ICQzOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKEAzLCAkMSwgJDIsICQk
LnBhcmFtLnR5cGUpKQotICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgIHwgcGFy
YW1ldGVyX2RlY2xhcmF0b3IgeworICAgICAgICAkJCA9ICQxOworICAgICAgICAkJC5wYXJhbS50
eXBlLT5zZXRRdWFsaWZpZXIoRXZxSW4pOwogICAgIH0KLSAgICB8IHBhcmFtZXRlcl9xdWFsaWZp
ZXIgcGFyYW1ldGVyX3R5cGVfc3BlY2lmaWVyIHsKKyAgICB8IHR5cGVfcXVhbGlmaWVyIHBhcmFt
ZXRlcl90eXBlX3NwZWNpZmllciB7CiAgICAgICAgICQkID0gJDI7Ci0gICAgICAgIGlmIChjb250
ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjayhAMiwgJDEsICokMi5wYXJhbS50eXBlKSkK
LSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBh
cmFtRXJyb3JDaGVjayhAMiwgRXZxVGVtcG9yYXJ5LCAkMSwgJCQucGFyYW0udHlwZSkpCi0gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgIGNvbnRleHQtPmNoZWNrSXNQYXJh
bWV0ZXJRdWFsaWZpZXJWYWxpZChAMiwgKiQxLCAkMi5wYXJhbS50eXBlKTsKICAgICB9Ci0gICAg
OwotCi1wYXJhbWV0ZXJfcXVhbGlmaWVyCi0gICAgOiAvKiBlbXB0eSAqLyB7Ci0gICAgICAgICQk
ID0gRXZxSW47CisgICAgfCBwYXJhbWV0ZXJfdHlwZV9zcGVjaWZpZXIgeworICAgICAgICAkJCA9
ICQxOworICAgICAgICAkJC5wYXJhbS50eXBlLT5zZXRRdWFsaWZpZXIoRXZxSW4pOwogICAgIH0K
LSAgICB8IElOX1FVQUwgewotICAgICAgICAkJCA9IEV2cUluOwotICAgIH0KLSAgICB8IE9VVF9R
VUFMIHsKLSAgICAgICAgJCQgPSBFdnFPdXQ7Ci0gICAgfQotICAgIHwgSU5PVVRfUVVBTCB7Ci0g
ICAgICAgICQkID0gRXZxSW5PdXQ7Ci0gICAgfQogICAgIDsKIAogcGFyYW1ldGVyX3R5cGVfc3Bl
Y2lmaWVyCkBAIC03OTMsMTIgKzc2NiwxMiBAQAogICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUg
PSBjb250ZXh0LT5wYXJzZUFycmF5RGVjbGFyYXRvcigkJC50eXBlLCAkMS5pbnRlcm1BZ2dyZWdh
dGUsIEAzLCAqJDMuc3RyaW5nLCBANCwgJDUpOwogICAgIH0KICAgICB8IGluaXRfZGVjbGFyYXRv
cl9saXN0IENPTU1BIGlkZW50aWZpZXIgTEVGVF9CUkFDS0VUIFJJR0hUX0JSQUNLRVQgRVFVQUwg
aW5pdGlhbGl6ZXIgewotICAgICAgICBFUzNfT05MWSgiW10iLCBAMywgImltcGxpY2l0bHkgc2l6
ZWQgYXJyYXkiKTsKKyAgICAgICAgRVMzX09SX05FV0VSKCJbXSIsIEAzLCAiaW1wbGljaXRseSBz
aXplZCBhcnJheSIpOwogICAgICAgICAkJCA9ICQxOwogICAgICAgICAkJC5pbnRlcm1BZ2dyZWdh
dGUgPSBjb250ZXh0LT5wYXJzZUFycmF5SW5pdERlY2xhcmF0b3IoJCQudHlwZSwgJDEuaW50ZXJt
QWdncmVnYXRlLCBAMywgKiQzLnN0cmluZywgQDQsIG51bGxwdHIsIEA2LCAkNyk7CiAgICAgfQog
ICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgaWRlbnRpZmllciBMRUZUX0JSQUNLRVQg
Y29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIEVRVUFMIGluaXRpYWxpemVyIHsKLSAg
ICAgICAgRVMzX09OTFkoIj0iLCBANywgImZpcnN0LWNsYXNzIGFycmF5cyAoYXJyYXkgaW5pdGlh
bGl6ZXIpIik7CisgICAgICAgIEVTM19PUl9ORVdFUigiPSIsIEA3LCAiZmlyc3QtY2xhc3MgYXJy
YXlzIChhcnJheSBpbml0aWFsaXplcikiKTsKICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgJCQu
aW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+cGFyc2VBcnJheUluaXREZWNsYXJhdG9yKCQkLnR5
cGUsICQxLmludGVybUFnZ3JlZ2F0ZSwgQDMsICokMy5zdHJpbmcsIEA0LCAkNSwgQDcsICQ4KTsK
ICAgICB9CkBAIC04MjIsMTIgKzc5NSwxMiBAQAogICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUg
PSBjb250ZXh0LT5wYXJzZVNpbmdsZUFycmF5RGVjbGFyYXRpb24oJCQudHlwZSwgQDIsICokMi5z
dHJpbmcsIEAzLCAkNCk7CiAgICAgfQogICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgaWRlbnRp
ZmllciBMRUZUX0JSQUNLRVQgUklHSFRfQlJBQ0tFVCBFUVVBTCBpbml0aWFsaXplciB7Ci0gICAg
ICAgIEVTM19PTkxZKCJbXSIsIEAzLCAiaW1wbGljaXRseSBzaXplZCBhcnJheSIpOworICAgICAg
ICBFUzNfT1JfTkVXRVIoIltdIiwgQDMsICJpbXBsaWNpdGx5IHNpemVkIGFycmF5Iik7CiAgICAg
ICAgICQkLnR5cGUgPSAkMTsKICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+
cGFyc2VTaW5nbGVBcnJheUluaXREZWNsYXJhdGlvbigkJC50eXBlLCBAMiwgKiQyLnN0cmluZywg
QDMsIG51bGxwdHIsIEA1LCAkNik7CiAgICAgfQogICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUg
aWRlbnRpZmllciBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VU
IEVRVUFMIGluaXRpYWxpemVyIHsKLSAgICAgICAgRVMzX09OTFkoIj0iLCBANiwgImZpcnN0LWNs
YXNzIGFycmF5cyAoYXJyYXkgaW5pdGlhbGl6ZXIpIik7CisgICAgICAgIEVTM19PUl9ORVdFUigi
PSIsIEA2LCAiZmlyc3QtY2xhc3MgYXJyYXlzIChhcnJheSBpbml0aWFsaXplcikiKTsKICAgICAg
ICAgJCQudHlwZSA9ICQxOwogICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5w
YXJzZVNpbmdsZUFycmF5SW5pdERlY2xhcmF0aW9uKCQkLnR5cGUsIEAyLCAqJDIuc3RyaW5nLCBA
MywgJDQsIEA2LCAkNyk7CiAgICAgfQpAQCAtODM1LDEwICs4MDgsNiBAQAogICAgICAgICAkJC50
eXBlID0gJDE7CiAgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPnBhcnNlU2lu
Z2xlSW5pdERlY2xhcmF0aW9uKCQkLnR5cGUsIEAyLCAqJDIuc3RyaW5nLCBAMywgJDQpOwogICAg
IH0KLSAgICB8IElOVkFSSUFOVCBJREVOVElGSUVSIHsKLSAgICAgICAgLy8gJCQudHlwZSBpcyBu
b3QgdXNlZCBpbiBpbnZhcmlhbnQgZGVjbGFyYXRpb25zLgotICAgICAgICAkJC5pbnRlcm1BZ2dy
ZWdhdGUgPSBjb250ZXh0LT5wYXJzZUludmFyaWFudERlY2xhcmF0aW9uKEAxLCBAMiwgJDIuc3Ry
aW5nLCAkMi5zeW1ib2wpOwotICAgIH0KICAgICA7CiAKIGZ1bGx5X3NwZWNpZmllZF90eXBlCkBA
IC04NDYsMTMxICs4MTUsMTQwIEBACiAgICAgICAgICQkID0gJDE7CiAKICAgICAgICAgaWYgKCQx
LmFycmF5KSB7Ci0gICAgICAgICAgICBFUzNfT05MWSgiW10iLCBAMSwgImZpcnN0LWNsYXNzLWFy
cmF5Iik7CisgICAgICAgICAgICBFUzNfT1JfTkVXRVIoIltdIiwgQDEsICJmaXJzdC1jbGFzcy1h
cnJheSIpOwogICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclZlcnNpb24oKSAhPSAz
MDApIHsKICAgICAgICAgICAgICAgICAkMS5jbGVhckFycmF5bmVzcygpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQotICAgIHwgdHlwZV9xdWFsaWZpZXIgdHlwZV9zcGVjaWZpZXIg
IHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRGdWxseVNwZWNpZmllZFR5cGUoJDEucXVhbGlm
aWVyLCAkMS5pbnZhcmlhbnQsICQxLmxheW91dFF1YWxpZmllciwgJDIpOworICAgIHwgdHlwZV9x
dWFsaWZpZXIgdHlwZV9zcGVjaWZpZXIgeworICAgICAgICAkJCA9IGNvbnRleHQtPmFkZEZ1bGx5
U3BlY2lmaWVkVHlwZSgqJDEsICQyKTsKICAgICB9CiAgICAgOwogCiBpbnRlcnBvbGF0aW9uX3F1
YWxpZmllcgogICAgIDogU01PT1RIIHsKLSAgICAgICAgJCQucXVhbGlmaWVyID0gRXZxU21vb3Ro
OworICAgICAgICAkJCA9IEV2cVNtb290aDsKICAgICB9CiAgICAgfCBGTEFUIHsKLSAgICAgICAg
JCQucXVhbGlmaWVyID0gRXZxRmxhdDsKKyAgICAgICAgJCQgPSBFdnFGbGF0OwogICAgIH0KICAg
ICA7CiAKLXBhcmFtZXRlcl90eXBlX3F1YWxpZmllcgotICAgIDogQ09OU1RfUVVBTCB7Ci0gICAg
ICAgICQkID0gRXZxQ29uc3Q7Cit0eXBlX3F1YWxpZmllcgorICAgIDogc2luZ2xlX3R5cGVfcXVh
bGlmaWVyIHsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5jcmVhdGVUeXBlUXVhbGlmaWVyQnVpbGRl
cihAMSk7CisgICAgICAgICQkLT5hcHBlbmRRdWFsaWZpZXIoJDEpOwogICAgIH0KKyAgICB8IHR5
cGVfcXVhbGlmaWVyIHNpbmdsZV90eXBlX3F1YWxpZmllciB7CisgICAgICAgICQkID0gJDE7Cisg
ICAgICAgICQkLT5hcHBlbmRRdWFsaWZpZXIoJDIpOworICAgIH0KICAgICA7CiAKLXR5cGVfcXVh
bGlmaWVyCi0gICAgOiBBVFRSSUJVVEUgewotICAgICAgICBWRVJURVhfT05MWSgiYXR0cmlidXRl
IiwgQDEpOwotICAgICAgICBFUzJfT05MWSgiYXR0cmlidXRlIiwgQDEpOwotICAgICAgICBpZiAo
Y29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjayhAMSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpLCAiYXR0cmlidXRlIikpCi0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cUF0dHJpYnV0ZSwgQDEpOworaW52YXJp
YW50X3F1YWxpZmllcgorICAgIDogSU5WQVJJQU5UIHsKKyAgICAgICAgLy8gZW1wdHkKICAgICB9
Ci0gICAgfCBWQVJZSU5HIHsKLSAgICAgICAgRVMyX09OTFkoInZhcnlpbmciLCBAMSk7Ci0gICAg
ICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKEAxLCBjb250ZXh0LT5zeW1ib2xUYWJs
ZS5hdEdsb2JhbExldmVsKCksICJ2YXJ5aW5nIikpCi0gICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXJUeXBlKCkgPT0gR0xfVkVSVEVY
X1NIQURFUikKLSAgICAgICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdPdXQs
IEAxKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZx
VmFyeWluZ0luLCBAMSk7Ci0gICAgfQotICAgIHwgSU5WQVJJQU5UIFZBUllJTkcgewotICAgICAg
ICBFUzJfT05MWSgidmFyeWluZyIsIEAxKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVy
cm9yQ2hlY2soQDEsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFy
aWFudCB2YXJ5aW5nIikpCi0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAg
IGlmIChjb250ZXh0LT5nZXRTaGFkZXJUeXBlKCkgPT0gR0xfVkVSVEVYX1NIQURFUikKLSAgICAg
ICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdPdXQsIEAxKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFyeWluZ0luLCBAMSk7
Ci0gICAgICAgICQkLmludmFyaWFudCA9IHRydWU7Ci0gICAgfQotICAgIHwgc3RvcmFnZV9xdWFs
aWZpZXIgewotICAgICAgICBpZiAoJDEucXVhbGlmaWVyICE9IEV2cUNvbnN0ICYmICFjb250ZXh0
LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkpCisgICAgOworCitzaW5nbGVfdHlwZV9xdWFs
aWZpZXIKKyAgICA6IHN0b3JhZ2VfcXVhbGlmaWVyIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5k
ZWNsYXJpbmdGdW5jdGlvbigpICYmICQxICE9IEV2cUNvbnN0ICYmICFjb250ZXh0LT5zeW1ib2xU
YWJsZS5hdEdsb2JhbExldmVsKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKEAxLCAiTG9jYWwgdmFyaWFibGVzIGNhbiBvbmx5IHVzZSB0aGUgY29uc3Qgc3RvcmFnZSBx
dWFsaWZpZXIuIiwgZ2V0UXVhbGlmaWVyU3RyaW5nKCQxLnF1YWxpZmllcikpOwotICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJM
b2NhbCB2YXJpYWJsZXMgY2FuIG9ubHkgdXNlIHRoZSBjb25zdCBzdG9yYWdlIHF1YWxpZmllci4i
LCBnZXRRdWFsaWZpZXJTdHJpbmcoJDEpKTsKICAgICAgICAgfQotICAgICAgICAkJC5zZXRCYXNp
YyhFYnRWb2lkLCAkMS5xdWFsaWZpZXIsIEAxKTsKKyAgICAgICAgJCQgPSBuZXcgVFN0b3JhZ2VR
dWFsaWZpZXJXcmFwcGVyKCQxLCBAMSk7CiAgICAgfQotICAgIHwgaW50ZXJwb2xhdGlvbl9xdWFs
aWZpZXIgc3RvcmFnZV9xdWFsaWZpZXIgewotICAgICAgICAkJCA9IGNvbnRleHQtPmpvaW5JbnRl
cnBvbGF0aW9uUXVhbGlmaWVycyhAMSwgJDEucXVhbGlmaWVyLCBAMiwgJDIucXVhbGlmaWVyKTsK
LSAgICB9Ci0gICAgfCBpbnRlcnBvbGF0aW9uX3F1YWxpZmllciB7Ci0gICAgICAgIGNvbnRleHQt
PmVycm9yKEAxLCAiaW50ZXJwb2xhdGlvbiBxdWFsaWZpZXIgcmVxdWlyZXMgYSBmcmFnbWVudCAn
aW4nIG9yIHZlcnRleCAnb3V0JyBzdG9yYWdlIHF1YWxpZmllciIsIGdldEludGVycG9sYXRpb25T
dHJpbmcoJDEucXVhbGlmaWVyKSk7Ci0gICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAg
ICAgCi0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xv
YmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFz
aWMoRWJ0Vm9pZCwgcXVhbCwgQDEpOwotICAgIH0KICAgICB8IGxheW91dF9xdWFsaWZpZXIgewot
ICAgICAgICAkJC5xdWFsaWZpZXIgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVs
KCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLmxheW91dFF1YWxpZmll
ciA9ICQxOworICAgICAgICBjb250ZXh0LT5jaGVja0lzQXRHbG9iYWxMZXZlbChAMSwgImxheW91
dCIpOworICAgICAgICAkJCA9IG5ldyBUTGF5b3V0UXVhbGlmaWVyV3JhcHBlcigkMSwgQDEpOwog
ICAgIH0KLSAgICB8IGxheW91dF9xdWFsaWZpZXIgc3RvcmFnZV9xdWFsaWZpZXIgewotICAgICAg
ICAkJC5zZXRCYXNpYyhFYnRWb2lkLCAkMi5xdWFsaWZpZXIsIEAyKTsKLSAgICAgICAgJCQubGF5
b3V0UXVhbGlmaWVyID0gJDE7CisgICAgfCBwcmVjaXNpb25fcXVhbGlmaWVyIHsKKyAgICAgICAg
JCQgPSBuZXcgVFByZWNpc2lvblF1YWxpZmllcldyYXBwZXIoJDEsIEAxKTsKICAgICB9Ci0gICAg
fCBJTlZBUklBTlQgc3RvcmFnZV9xdWFsaWZpZXIgewotICAgICAgICBjb250ZXh0LT5lczNJbnZh
cmlhbnRFcnJvckNoZWNrKCQyLnF1YWxpZmllciwgQDEpOwotICAgICAgICAkJC5zZXRCYXNpYyhF
YnRWb2lkLCAkMi5xdWFsaWZpZXIsIEAyKTsKLSAgICAgICAgJCQuaW52YXJpYW50ID0gdHJ1ZTsK
KyAgICB8IGludGVycG9sYXRpb25fcXVhbGlmaWVyIHsKKyAgICAgICAgJCQgPSBuZXcgVEludGVy
cG9sYXRpb25RdWFsaWZpZXJXcmFwcGVyKCQxLCBAMSk7CiAgICAgfQotICAgIHwgSU5WQVJJQU5U
IGludGVycG9sYXRpb25fcXVhbGlmaWVyIHN0b3JhZ2VfcXVhbGlmaWVyIHsKLSAgICAgICAgY29u
dGV4dC0+ZXMzSW52YXJpYW50RXJyb3JDaGVjaygkMy5xdWFsaWZpZXIsIEAxKTsKLSAgICAgICAg
JCQgPSBjb250ZXh0LT5qb2luSW50ZXJwb2xhdGlvblF1YWxpZmllcnMoQDIsICQyLnF1YWxpZmll
ciwgQDMsICQzLnF1YWxpZmllcik7Ci0gICAgICAgICQkLmludmFyaWFudCA9IHRydWU7CisgICAg
fCBpbnZhcmlhbnRfcXVhbGlmaWVyIHsKKyAgICAgICAgY29udGV4dC0+Y2hlY2tJc0F0R2xvYmFs
TGV2ZWwoQDEsICJpbnZhcmlhbnQiKTsKKyAgICAgICAgJCQgPSBuZXcgVEludmFyaWFudFF1YWxp
ZmllcldyYXBwZXIoQDEpOwogICAgIH0KICAgICA7CiAKKwogc3RvcmFnZV9xdWFsaWZpZXIKLSAg
ICA6IENPTlNUX1FVQUwgewotICAgICAgICAkJC5xdWFsaWZpZXIgPSBFdnFDb25zdDsKKyAgICA6
CisgICAgQVRUUklCVVRFIHsKKyAgICAgICAgVkVSVEVYX09OTFkoImF0dHJpYnV0ZSIsIEAxKTsK
KyAgICAgICAgRVMyX09OTFkoImF0dHJpYnV0ZSIsIEAxKTsKKyAgICAgICAgY29udGV4dC0+Y2hl
Y2tJc0F0R2xvYmFsTGV2ZWwoQDEsICJhdHRyaWJ1dGUiKTsKKyAgICAgICAgJCQgPSBFdnFBdHRy
aWJ1dGU7CiAgICAgfQorICAgIHwgVkFSWUlORyB7CisgICAgICAgIEVTMl9PTkxZKCJ2YXJ5aW5n
IiwgQDEpOworICAgICAgICBjb250ZXh0LT5jaGVja0lzQXRHbG9iYWxMZXZlbChAMSwgInZhcnlp
bmciKTsKKyAgICAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclR5cGUoKSA9PSBHTF9WRVJURVhf
U0hBREVSKQorICAgICAgICAgICAgJCQgPSBFdnFWYXJ5aW5nT3V0OworICAgICAgICBlbHNlCisg
ICAgICAgICAgICAkJCA9IEV2cVZhcnlpbmdJbjsKKyAgICB9CisgICAgfCBDT05TVF9RVUFMIHsK
KyAgICAgICAgJCQgPSBFdnFDb25zdDsKKyAgICB9CiAgICAgfCBJTl9RVUFMIHsKLSAgICAgICAg
RVMzX09OTFkoImluIiwgQDEsICJzdG9yYWdlIHF1YWxpZmllciIpOwotICAgICAgICAkJC5xdWFs
aWZpZXIgPSAoY29udGV4dC0+Z2V0U2hhZGVyVHlwZSgpID09IEdMX0ZSQUdNRU5UX1NIQURFUikg
PyBFdnFGcmFnbWVudEluIDogRXZxVmVydGV4SW47CisgICAgICAgIGlmIChjb250ZXh0LT5kZWNs
YXJpbmdGdW5jdGlvbigpKQorICAgICAgICB7CisgICAgICAgICAgICAkJCA9IEV2cUluOworICAg
ICAgICB9CisgICAgICAgIGVsc2UgaWYgKGNvbnRleHQtPmdldFNoYWRlclR5cGUoKSA9PSBHTF9G
UkFHTUVOVF9TSEFERVIpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVTM19PUl9ORVdFUigiaW4i
LCBAMSwgInN0b3JhZ2UgcXVhbGlmaWVyIik7CisgICAgICAgICAgICAkJCA9IEV2cUZyYWdtZW50
SW47CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoY29udGV4dC0+Z2V0U2hhZGVyVHlwZSgp
ID09IEdMX1ZFUlRFWF9TSEFERVIpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVTM19PUl9ORVdF
UigiaW4iLCBAMSwgInN0b3JhZ2UgcXVhbGlmaWVyIik7CisgICAgICAgICAgICAkJCA9IEV2cVZl
cnRleEluOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAg
JCQgPSBFdnFDb21wdXRlSW47CisgICAgICAgIH0KICAgICB9CiAgICAgfCBPVVRfUVVBTCB7Ci0g
ICAgICAgIEVTM19PTkxZKCJvdXQiLCBAMSwgInN0b3JhZ2UgcXVhbGlmaWVyIik7Ci0gICAgICAg
ICQkLnF1YWxpZmllciA9IChjb250ZXh0LT5nZXRTaGFkZXJUeXBlKCkgPT0gR0xfRlJBR01FTlRf
U0hBREVSKSA/IEV2cUZyYWdtZW50T3V0IDogRXZxVmVydGV4T3V0OwotICAgIH0KLSAgICB8IENF
TlRST0lEIElOX1FVQUwgewotICAgICAgICBFUzNfT05MWSgiY2VudHJvaWQgaW4iLCBAMSwgInN0
b3JhZ2UgcXVhbGlmaWVyIik7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXJUeXBlKCkg
PT0gR0xfVkVSVEVYX1NIQURFUikKKyAgICAgICAgaWYgKGNvbnRleHQtPmRlY2xhcmluZ0Z1bmN0
aW9uKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAiaW52YWxp
ZCBzdG9yYWdlIHF1YWxpZmllciIsICJpdCBpcyBhbiBlcnJvciB0byB1c2UgJ2NlbnRyb2lkIGlu
JyBpbiB0aGUgdmVydGV4IHNoYWRlciIpOwotICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OworICAgICAgICAgICAgJCQgPSBFdnFPdXQ7CiAgICAgICAgIH0KLSAgICAgICAgJCQucXVhbGlm
aWVyID0gKGNvbnRleHQtPmdldFNoYWRlclR5cGUoKSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpID8g
RXZxQ2VudHJvaWRJbiA6IEV2cVZlcnRleEluOworICAgICAgICBlbHNlCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEVTM19PUl9ORVdFUigib3V0IiwgQDEsICJzdG9yYWdlIHF1YWxpZmllciIpOwor
ICAgICAgICAgICAgTk9OX0NPTVBVVEVfT05MWSgib3V0IiwgQDEpOworICAgICAgICAgICAgaWYg
KGNvbnRleHQtPmdldFNoYWRlclR5cGUoKSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgJCQgPSBFdnFGcmFnbWVudE91dDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAkJCA9
IEV2cVZlcnRleE91dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KLSAgICB8IENF
TlRST0lEIE9VVF9RVUFMIHsKLSAgICAgICAgRVMzX09OTFkoImNlbnRyb2lkIG91dCIsIEAxLCAi
c3RvcmFnZSBxdWFsaWZpZXIiKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclR5cGUo
KSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpCisgICAgfCBJTk9VVF9RVUFMIHsKKyAgICAgICAgaWYg
KCFjb250ZXh0LT5kZWNsYXJpbmdGdW5jdGlvbigpKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5lcnJvcihAMSwgImludmFsaWQgc3RvcmFnZSBxdWFsaWZpZXIiLCAiaXQgaXMgYW4g
ZXJyb3IgdG8gdXNlICdjZW50cm9pZCBvdXQnIGluIHRoZSBmcmFnbWVudCBzaGFkZXIiKTsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KEAxLCAiaW52YWxpZCBpbm91dCBxdWFsaWZpZXIiLCAiJ2lub3V0JyBjYW4gYmUgb25seSB1c2Vk
IHdpdGggZnVuY3Rpb24gcGFyYW1ldGVycyIpOwogICAgICAgICB9Ci0gICAgICAgICQkLnF1YWxp
ZmllciA9IChjb250ZXh0LT5nZXRTaGFkZXJUeXBlKCkgPT0gR0xfRlJBR01FTlRfU0hBREVSKSA/
IEV2cUZyYWdtZW50T3V0IDogRXZxQ2VudHJvaWRPdXQ7CisgICAgICAgICQkID0gRXZxSW5PdXQ7
CiAgICAgfQorICAgIHwgQ0VOVFJPSUQgeworICAgICAgICBFUzNfT1JfTkVXRVIoImNlbnRyb2lk
IiwgQDEsICJzdG9yYWdlIHF1YWxpZmllciIpOworICAgICAgICAkJCA9IEV2cUNlbnRyb2lkOwor
ICAgIH0KICAgICB8IFVOSUZPUk0gewotICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JD
aGVjayhAMSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidW5pZm9ybSIp
KQotICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAkJC5xdWFsaWZpZXIg
PSBFdnFVbmlmb3JtOworICAgICAgICBjb250ZXh0LT5jaGVja0lzQXRHbG9iYWxMZXZlbChAMSwg
InVuaWZvcm0iKTsKKyAgICAgICAgJCQgPSBFdnFVbmlmb3JtOwogICAgIH0KICAgICA7CiAKQEAg
LTk3OSwyMSArOTU3LDkgQEAKICAgICAgICAgJCQgPSAkMTsKIAogICAgICAgICBpZiAoJCQucHJl
Y2lzaW9uID09IEVicFVuZGVmaW5lZCkgewotICAgICAgICAgICAgJCQucHJlY2lzaW9uID0gY29u
dGV4dC0+c3ltYm9sVGFibGUuZ2V0RGVmYXVsdFByZWNpc2lvbigkMS50eXBlKTsKLSAgICAgICAg
ICAgIGlmIChjb250ZXh0LT5wcmVjaXNpb25FcnJvckNoZWNrKEAxLCAkJC5wcmVjaXNpb24sICQx
LnR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAg
ICAgfQorICAgICAgICAgICAgJCQucHJlY2lzaW9uID0gY29udGV4dC0+c3ltYm9sVGFibGUuZ2V0
RGVmYXVsdFByZWNpc2lvbigkMS5nZXRCYXNpY1R5cGUoKSk7CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgfCBwcmVjaXNpb25fcXVhbGlmaWVyIHR5cGVfc3BlY2lmaWVyX25vX3ByZWMgewotICAgICAg
ICAkJCA9ICQyOwotICAgICAgICAkJC5wcmVjaXNpb24gPSAkMTsKLQotICAgICAgICBpZiAoIVN1
cHBvcnRzUHJlY2lzaW9uKCQyLnR5cGUpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcihA
MSwgImlsbGVnYWwgdHlwZSBmb3IgcHJlY2lzaW9uIHF1YWxpZmllciIsIGdldEJhc2ljU3RyaW5n
KCQyLnR5cGUpKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgfQot
ICAgIH0KICAgICA7CiAKIHByZWNpc2lvbl9xdWFsaWZpZXIKQEAgLTEwMTAsNyArOTc2LDcgQEAK
IAogbGF5b3V0X3F1YWxpZmllcgogICAgIDogTEFZT1VUIExFRlRfUEFSRU4gbGF5b3V0X3F1YWxp
Zmllcl9pZF9saXN0IFJJR0hUX1BBUkVOIHsKLSAgICAgICAgRVMzX09OTFkoImxheW91dCIsIEAx
LCAicXVhbGlmaWVyIik7CisgICAgICAgIEVTM19PUl9ORVdFUigibGF5b3V0IiwgQDEsICJxdWFs
aWZpZXIiKTsKICAgICAgICAgJCQgPSAkMzsKICAgICB9CiAgICAgOwpAQCAtMTAyMCw3ICs5ODYs
NyBAQAogICAgICAgICAkJCA9ICQxOwogICAgIH0KICAgICB8IGxheW91dF9xdWFsaWZpZXJfaWRf
bGlzdCBDT01NQSBsYXlvdXRfcXVhbGlmaWVyX2lkIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5q
b2luTGF5b3V0UXVhbGlmaWVycygkMSwgJDMpOworICAgICAgICAkJCA9IGNvbnRleHQtPmpvaW5M
YXlvdXRRdWFsaWZpZXJzKCQxLCAkMywgQDMpOwogICAgIH0KICAgICA7CiAKQEAgLTEwMjksMzEg
Kzk5NSwyNyBAQAogICAgICAgICAkJCA9IGNvbnRleHQtPnBhcnNlTGF5b3V0UXVhbGlmaWVyKCok
MS5zdHJpbmcsIEAxKTsKICAgICB9CiAgICAgfCBJREVOVElGSUVSIEVRVUFMIElOVENPTlNUQU5U
IHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5wYXJzZUxheW91dFF1YWxpZmllcigqJDEuc3RyaW5n
LCBAMSwgKiQzLnN0cmluZywgJDMuaSwgQDMpOworICAgICAgICAkJCA9IGNvbnRleHQtPnBhcnNl
TGF5b3V0UXVhbGlmaWVyKCokMS5zdHJpbmcsIEAxLCAkMy5pLCBAMyk7CiAgICAgfQogICAgIHwg
SURFTlRJRklFUiBFUVVBTCBVSU5UQ09OU1RBTlQgewotICAgICAgICAkJCA9IGNvbnRleHQtPnBh
cnNlTGF5b3V0UXVhbGlmaWVyKCokMS5zdHJpbmcsIEAxLCAqJDMuc3RyaW5nLCAkMy5pLCBAMyk7
CisgICAgICAgICQkID0gY29udGV4dC0+cGFyc2VMYXlvdXRRdWFsaWZpZXIoKiQxLnN0cmluZywg
QDEsICQzLmksIEAzKTsKICAgICB9CiAgICAgOwogCiB0eXBlX3NwZWNpZmllcl9ub19wcmVjCiAg
ICAgOiB0eXBlX3NwZWNpZmllcl9ub25hcnJheSB7Ci0gICAgICAgICQkID0gJDE7CisgICAgICAg
ICQkLmluaXRpYWxpemUoJDEsIChjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkg
PyBFdnFHbG9iYWwgOiBFdnFUZW1wb3JhcnkpKTsKICAgICB9CiAgICAgfCB0eXBlX3NwZWNpZmll
cl9ub25hcnJheSBMRUZUX0JSQUNLRVQgUklHSFRfQlJBQ0tFVCB7Ci0gICAgICAgIEVTM19PTkxZ
KCJbXSIsIEAyLCAiaW1wbGljaXRseSBzaXplZCBhcnJheSIpOwotICAgICAgICAkJCA9ICQxOwor
ICAgICAgICBFUzNfT1JfTkVXRVIoIltdIiwgQDIsICJpbXBsaWNpdGx5IHNpemVkIGFycmF5Iik7
CisgICAgICAgICQkLmluaXRpYWxpemUoJDEsIChjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2Jh
bExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3JhcnkpKTsKICAgICAgICAgJCQuc2V0QXJy
YXlTaXplKDApOwogICAgIH0KICAgICB8IHR5cGVfc3BlY2lmaWVyX25vbmFycmF5IExFRlRfQlJB
Q0tFVCBjb25zdGFudF9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgewotICAgICAgICAkJCA9ICQx
OwotCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKEAyLCAkMSkpCi0g
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgaW50IHNpemU7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVj
ayhAMiwgJDMsIHNpemUpKQotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAg
ICAgICAgJCQuaW5pdGlhbGl6ZSgkMSwgKGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2
ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeSkpOworICAgICAgICBpZiAoY29udGV4dC0+
Y2hlY2tJc1ZhbGlkVHlwZUZvckFycmF5KEAyLCAkJCkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHVuc2lnbmVkIGludCBzaXplID0gY29udGV4dC0+Y2hlY2tJc1ZhbGlkQXJyYXlTaXplKEAyLCAk
Myk7CiAgICAgICAgICAgICAkJC5zZXRBcnJheVNpemUoc2l6ZSk7CiAgICAgICAgIH0KICAgICB9
CkBAIC0xMDYxLDIwOSArMTAyMywxNjQgQEAKIAogdHlwZV9zcGVjaWZpZXJfbm9uYXJyYXkKICAg
ICA6IFZPSURfVFlQRSB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAg
ICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgcXVhbCwgQDEpOworICAgICAgICAkJC5pbml0aWFsaXpl
KEVidFZvaWQsIEAxKTsKICAgICB9CiAgICAgfCBGTE9BVF9UWVBFIHsKLSAgICAgICAgVFF1YWxp
ZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwg
QDEpOworICAgICAgICAkJC5pbml0aWFsaXplKEVidEZsb2F0LCBAMSk7CiAgICAgfQogICAgIHwg
SU5UX1RZUEUgewotICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJs
ZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQk
LnNldEJhc2ljKEVidEludCwgcXVhbCwgQDEpOworICAgICAgICAkJC5pbml0aWFsaXplKEVidElu
dCwgQDEpOwogICAgIH0KICAgICB8IFVJTlRfVFlQRSB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVh
bCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2
cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0VUludCwgcXVhbCwgQDEpOworICAg
ICAgICAkJC5pbml0aWFsaXplKEVidFVJbnQsIEAxKTsKICAgICB9CiAgICAgfCBCT09MX1RZUEUg
ewotICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2Jh
bExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2lj
KEVidEJvb2wsIHF1YWwsIEAxKTsKKyAgICAgICAgJCQuaW5pdGlhbGl6ZShFYnRCb29sLCBAMSk7
CiAgICAgfQogICAgIHwgVkVDMiB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQt
PnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsK
LSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsIEAxKTsKKyAgICAgICAgJCQuaW5p
dGlhbGl6ZShFYnRGbG9hdCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoMik7CiAgICAg
fQogICAgIHwgVkVDMyB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAg
ICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsIEAxKTsKKyAgICAgICAgJCQuaW5pdGlhbGl6
ZShFYnRGbG9hdCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoMyk7CiAgICAgfQogICAg
IHwgVkVDNCB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQu
c2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsIEAxKTsKKyAgICAgICAgJCQuaW5pdGlhbGl6ZShFYnRG
bG9hdCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgfQogICAgIHwgQlZF
QzIgewotICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEds
b2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJh
c2ljKEVidEJvb2wsIHF1YWwsIEAxKTsKKyAgICAgICAgJCQuaW5pdGlhbGl6ZShFYnRCb29sLCBA
MSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgyKTsKICAgICB9CiAgICAgfCBCVkVDMyB7Ci0g
ICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2
ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0
Qm9vbCwgcXVhbCwgQDEpOworICAgICAgICAkJC5pbml0aWFsaXplKEVidEJvb2wsIEAxKTsKICAg
ICAgICAgJCQuc2V0QWdncmVnYXRlKDMpOwogICAgIH0KICAgICB8IEJWRUM0IHsKLSAgICAgICAg
VFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8g
RXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRCb29sLCBx
dWFsLCBAMSk7CisgICAgICAgICQkLmluaXRpYWxpemUoRWJ0Qm9vbCwgQDEpOwogICAgICAgICAk
JC5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgfQogICAgIHwgSVZFQzIgewotICAgICAgICBUUXVhbGlm
aWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9i
YWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgQDEp
OworICAgICAgICAkJC5pbml0aWFsaXplKEVidEludCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dy
ZWdhdGUoMik7CiAgICAgfQogICAgIHwgSVZFQzMgewotICAgICAgICBUUXVhbGlmaWVyIHF1YWwg
PSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFU
ZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgQDEpOworICAgICAg
ICAkJC5pbml0aWFsaXplKEVidEludCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoMyk7
CiAgICAgfQogICAgIHwgSVZFQzQgewotICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0
LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7
Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgQDEpOworICAgICAgICAkJC5pbml0
aWFsaXplKEVidEludCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgfQog
ICAgIHwgVVZFQzIgewotICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xU
YWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAg
ICQkLnNldEJhc2ljKEVidFVJbnQsIHF1YWwsIEAxKTsKKyAgICAgICAgJCQuaW5pdGlhbGl6ZShF
YnRVSW50LCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgyKTsKICAgICB9CiAgICAgfCBV
VkVDMyB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0
QmFzaWMoRWJ0VUludCwgcXVhbCwgQDEpOworICAgICAgICAkJC5pbml0aWFsaXplKEVidFVJbnQs
IEAxKTsKICAgICAgICAgJCQuc2V0QWdncmVnYXRlKDMpOwogICAgIH0KICAgICB8IFVWRUM0IHsK
LSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxM
ZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhF
YnRVSW50LCBxdWFsLCBAMSk7CisgICAgICAgICQkLmluaXRpYWxpemUoRWJ0VUludCwgQDEpOwog
ICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgfQogICAgIHwgTUFUUklYMiB7Ci0gICAg
ICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwo
KSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Rmxv
YXQsIHF1YWwsIEAxKTsKKyAgICAgICAgJCQuaW5pdGlhbGl6ZShFYnRGbG9hdCwgQDEpOwogICAg
ICAgICAkJC5zZXRNYXRyaXgoMiwgMik7CiAgICAgfQogICAgIHwgTUFUUklYMyB7Ci0gICAgICAg
IFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/
IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQs
IHF1YWwsIEAxKTsKKyAgICAgICAgJCQuaW5pdGlhbGl6ZShFYnRGbG9hdCwgQDEpOwogICAgICAg
ICAkJC5zZXRNYXRyaXgoMywgMyk7CiAgICAgfQogICAgIHwgTUFUUklYNCB7Ci0gICAgICAgIFRR
dWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2
cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1
YWwsIEAxKTsKKyAgICAgICAgJCQuaW5pdGlhbGl6ZShFYnRGbG9hdCwgQDEpOwogICAgICAgICAk
JC5zZXRNYXRyaXgoNCwgNCk7CiAgICAgfQogICAgIHwgTUFUUklYMngzIHsKLSAgICAgICAgVFF1
YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZx
R2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVh
bCwgQDEpOworICAgICAgICAkJC5pbml0aWFsaXplKEVidEZsb2F0LCBAMSk7CiAgICAgICAgICQk
LnNldE1hdHJpeCgyLCAzKTsKICAgICB9CiAgICAgfCBNQVRSSVgzeDIgewotICAgICAgICBUUXVh
bGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFH
bG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0LCBxdWFs
LCBAMSk7CisgICAgICAgICQkLmluaXRpYWxpemUoRWJ0RmxvYXQsIEAxKTsKICAgICAgICAgJCQu
c2V0TWF0cml4KDMsIDIpOwogICAgIH0KICAgICB8IE1BVFJJWDJ4NCB7Ci0gICAgICAgIFRRdWFs
aWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUds
b2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWws
IEAxKTsKKyAgICAgICAgJCQuaW5pdGlhbGl6ZShFYnRGbG9hdCwgQDEpOwogICAgICAgICAkJC5z
ZXRNYXRyaXgoMiwgNCk7CiAgICAgfQogICAgIHwgTUFUUklYNHgyIHsKLSAgICAgICAgVFF1YWxp
ZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwg
QDEpOworICAgICAgICAkJC5pbml0aWFsaXplKEVidEZsb2F0LCBAMSk7CiAgICAgICAgICQkLnNl
dE1hdHJpeCg0LCAyKTsKICAgICB9CiAgICAgfCBNQVRSSVgzeDQgewotICAgICAgICBUUXVhbGlm
aWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9i
YWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCBA
MSk7CisgICAgICAgICQkLmluaXRpYWxpemUoRWJ0RmxvYXQsIEAxKTsKICAgICAgICAgJCQuc2V0
TWF0cml4KDMsIDQpOwogICAgIH0KICAgICB8IE1BVFJJWDR4MyB7Ci0gICAgICAgIFRRdWFsaWZp
ZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2Jh
bCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsIEAx
KTsKKyAgICAgICAgJCQuaW5pdGlhbGl6ZShFYnRGbG9hdCwgQDEpOwogICAgICAgICAkJC5zZXRN
YXRyaXgoNCwgMyk7CiAgICAgfQogICAgIHwgU0FNUExFUjJEIHsKLSAgICAgICAgVFF1YWxpZmll
ciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFs
IDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRTYW1wbGVyMkQsIHF1YWws
IEAxKTsKKyAgICAgICAgJCQuaW5pdGlhbGl6ZShFYnRTYW1wbGVyMkQsIEAxKTsKICAgICB9CiAg
ICAgfCBTQU1QTEVSM0QgewotICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1i
b2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAg
ICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXIzRCwgcXVhbCwgQDEpOworICAgICAgICAkJC5pbml0
aWFsaXplKEVidFNhbXBsZXIzRCwgQDEpOwogICAgIH0KICAgICB8IFNBTVBMRVJDVUJFIHsKLSAg
ICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZl
bCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRT
YW1wbGVyQ3ViZSwgcXVhbCwgQDEpOworICAgICAgICAkJC5pbml0aWFsaXplKEVidFNhbXBsZXJD
dWJlLCBAMSk7CiAgICAgfQogICAgIHwgU0FNUExFUjJEQVJSQVkgewotICAgICAgICBUUXVhbGlm
aWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9i
YWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXIyREFycmF5
LCBxdWFsLCBAMSk7CisgICAgICAgICQkLmluaXRpYWxpemUoRWJ0U2FtcGxlcjJEQXJyYXksIEAx
KTsKICAgICB9CiAgICAgfCBJU0FNUExFUjJEIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0g
Y29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVt
cG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRJU2FtcGxlcjJELCBxdWFsLCBAMSk7Cisg
ICAgICAgICQkLmluaXRpYWxpemUoRWJ0SVNhbXBsZXIyRCwgQDEpOwogICAgIH0KICAgICB8IElT
QU1QTEVSM0QgewotICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJs
ZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQk
LnNldEJhc2ljKEVidElTYW1wbGVyM0QsIHF1YWwsIEAxKTsKKyAgICAgICAgJCQuaW5pdGlhbGl6
ZShFYnRJU2FtcGxlcjNELCBAMSk7CiAgICAgfQogICAgIHwgSVNBTVBMRVJDVUJFIHsKLSAgICAg
ICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgp
ID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRJU2Ft
cGxlckN1YmUsIHF1YWwsIEAxKTsKKyAgICAgICAgJCQuaW5pdGlhbGl6ZShFYnRJU2FtcGxlckN1
YmUsIEAxKTsKICAgICB9CiAgICAgfCBJU0FNUExFUjJEQVJSQVkgewotICAgICAgICBUUXVhbGlm
aWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9i
YWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidElTYW1wbGVyMkRBcnJh
eSwgcXVhbCwgQDEpOworICAgICAgICAkJC5pbml0aWFsaXplKEVidElTYW1wbGVyMkRBcnJheSwg
QDEpOwogICAgIH0KICAgICB8IFVTQU1QTEVSMkQgewotICAgICAgICBUUXVhbGlmaWVyIHF1YWwg
PSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFU
ZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFVTYW1wbGVyMkQsIHF1YWwsIEAxKTsK
KyAgICAgICAgJCQuaW5pdGlhbGl6ZShFYnRVU2FtcGxlcjJELCBAMSk7CiAgICAgfQogICAgIHwg
VVNBTVBMRVIzRCB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRh
YmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAg
JCQuc2V0QmFzaWMoRWJ0VVNhbXBsZXIzRCwgcXVhbCwgQDEpOworICAgICAgICAkJC5pbml0aWFs
aXplKEVidFVTYW1wbGVyM0QsIEAxKTsKICAgICB9CiAgICAgfCBVU0FNUExFUkNVQkUgewotICAg
ICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVs
KCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFVT
YW1wbGVyQ3ViZSwgcXVhbCwgQDEpOworICAgICAgICAkJC5pbml0aWFsaXplKEVidFVTYW1wbGVy
Q3ViZSwgQDEpOwogICAgIH0KICAgICB8IFVTQU1QTEVSMkRBUlJBWSB7Ci0gICAgICAgIFRRdWFs
aWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUds
b2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0VVNhbXBsZXIyREFy
cmF5LCBxdWFsLCBAMSk7CisgICAgICAgICQkLmluaXRpYWxpemUoRWJ0VVNhbXBsZXIyREFycmF5
LCBAMSk7CiAgICAgfQogICAgIHwgU0FNUExFUjJEU0hBRE9XIHsKLSAgICAgICAgVFF1YWxpZmll
ciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFs
IDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRTYW1wbGVyMkRTaGFkb3cs
IHF1YWwsIEAxKTsKKyAgICAgICAgJCQuaW5pdGlhbGl6ZShFYnRTYW1wbGVyMkRTaGFkb3csIEAx
KTsKICAgICB9CiAgICAgfCBTQU1QTEVSQ1VCRVNIQURPVyB7Ci0gICAgICAgIFRRdWFsaWZpZXIg
cXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6
IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U2FtcGxlckN1YmVTaGFkb3cs
IHF1YWwsIEAxKTsKKyAgICAgICAgJCQuaW5pdGlhbGl6ZShFYnRTYW1wbGVyQ3ViZVNoYWRvdywg
QDEpOwogICAgIH0KICAgICB8IFNBTVBMRVIyREFSUkFZU0hBRE9XIHsKLSAgICAgICAgVFF1YWxp
ZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRTYW1wbGVyMkRBcnJh
eVNoYWRvdywgcXVhbCwgQDEpOworICAgICAgICAkJC5pbml0aWFsaXplKEVidFNhbXBsZXIyREFy
cmF5U2hhZG93LCBAMSk7CiAgICAgfQogICAgIHwgU0FNUExFUl9FWFRFUk5BTF9PRVMgewotICAg
ICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfRUdMX2ltYWdlX2V4
dGVybmFsIikpIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xf
T0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpICYmCisgICAgICAgICAgICAhY29udGV4dC0+c3VwcG9y
dHNFeHRlbnNpb24oIkdMX05WX0VHTF9zdHJlYW1fY29uc3VtZXJfZXh0ZXJuYWwiKSkgewogICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJ1bnN1cHBvcnRlZCB0eXBlIiwgInNhbXBsZXJF
eHRlcm5hbE9FUyIpOwotICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9
Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFs
TGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMo
RWJ0U2FtcGxlckV4dGVybmFsT0VTLCBxdWFsLCBAMSk7CisgICAgICAgICQkLmluaXRpYWxpemUo
RWJ0U2FtcGxlckV4dGVybmFsT0VTLCBAMSk7CiAgICAgfQogICAgIHwgU0FNUExFUjJEUkVDVCB7
CiAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl90ZXh0dXJl
X3JlY3RhbmdsZSIpKSB7CiAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgInVuc3VwcG9y
dGVkIHR5cGUiLCAic2FtcGxlcjJEUmVjdCIpOwotICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICB9Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAg
ICAgJCQuc2V0QmFzaWMoRWJ0U2FtcGxlcjJEUmVjdCwgcXVhbCwgQDEpOworICAgICAgICAkJC5p
bml0aWFsaXplKEVidFNhbXBsZXIyRFJlY3QsIEAxKTsKICAgICB9CiAgICAgfCBzdHJ1Y3Rfc3Bl
Y2lmaWVyIHsKICAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgJCQucXVhbGlmaWVyID0gY29udGV4
dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5
OwogICAgIH0KICAgICB8IFRZUEVfTkFNRSB7CiAgICAgICAgIC8vCkBAIC0xMjcxLDE3ICsxMTg4
LDE2IEBACiAgICAgICAgIC8vIHR5cGUuCiAgICAgICAgIC8vCiAgICAgICAgIFRUeXBlJiBzdHJ1
Y3R1cmUgPSBzdGF0aWNfY2FzdDxUVmFyaWFibGUqPigkMS5zeW1ib2wpLT5nZXRUeXBlKCk7Ci0g
ICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2
ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0
U3RydWN0LCBxdWFsLCBAMSk7CisgICAgICAgICQkLmluaXRpYWxpemUoRWJ0U3RydWN0LCBAMSk7
CiAgICAgICAgICQkLnVzZXJEZWYgPSAmc3RydWN0dXJlOwogICAgIH0KICAgICA7CiAKIHN0cnVj
dF9zcGVjaWZpZXIKLSAgICA6IFNUUlVDVCBpZGVudGlmaWVyIExFRlRfQlJBQ0UgeyBpZiAoY29u
dGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbihAMiwgKiQyLnN0cmluZykpIGNvbnRleHQtPnJl
Y292ZXIoKTsgfSBzdHJ1Y3RfZGVjbGFyYXRpb25fbGlzdCBSSUdIVF9CUkFDRSB7CisgICAgOiBT
VFJVQ1QgaWRlbnRpZmllciBMRUZUX0JSQUNFIHsgY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJh
dGlvbihAMiwgKiQyLnN0cmluZyk7IH0gc3RydWN0X2RlY2xhcmF0aW9uX2xpc3QgUklHSFRfQlJB
Q0UgewogICAgICAgICAkJCA9IGNvbnRleHQtPmFkZFN0cnVjdHVyZShAMSwgQDIsICQyLnN0cmlu
ZywgJDUpOwogICAgIH0KLSAgICB8IFNUUlVDVCBMRUZUX0JSQUNFIHsgaWYgKGNvbnRleHQtPmVu
dGVyU3RydWN0RGVjbGFyYXRpb24oQDIsICokMi5zdHJpbmcpKSBjb250ZXh0LT5yZWNvdmVyKCk7
IH0gc3RydWN0X2RlY2xhcmF0aW9uX2xpc3QgUklHSFRfQlJBQ0UgeworICAgIHwgU1RSVUNUIExF
RlRfQlJBQ0UgeyBjb250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKEAyLCAqJDIuc3RyaW5n
KTsgfSBzdHJ1Y3RfZGVjbGFyYXRpb25fbGlzdCBSSUdIVF9CUkFDRSB7CiAgICAgICAgICQkID0g
Y29udGV4dC0+YWRkU3RydWN0dXJlKEAxLCBAJCwgTmV3UG9vbFRTdHJpbmcoIiIpLCAkNCk7CiAg
ICAgfQogICAgIDsKQEAgLTEyOTcsNyArMTIxMyw2IEBACiAgICAgICAgICAgICBmb3IgKHNpemVf
dCBqID0gMDsgaiA8ICQkLT5zaXplKCk7ICsraikgewogICAgICAgICAgICAgICAgIGlmICgoKiQk
KVtqXS0+bmFtZSgpID09IGZpZWxkLT5uYW1lKCkpIHsKICAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoQDIsICJkdXBsaWNhdGUgZmllbGQgbmFtZSBpbiBzdHJ1Y3R1cmU6IiwgInN0
cnVjdCIsIGZpZWxkLT5uYW1lKCkuY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAkJC0+cHVzaF9iYWNrKGZpZWxkKTsKQEAgLTEzMTEsOSArMTIyNiw3IEBACiAgICAgfQog
ICAgIHwgdHlwZV9xdWFsaWZpZXIgdHlwZV9zcGVjaWZpZXIgc3RydWN0X2RlY2xhcmF0b3JfbGlz
dCBTRU1JQ09MT04gewogICAgICAgICAvLyBFUzMgT25seSwgYnV0IGVycm9ycyBzaG91bGQgYmUg
aGFuZGxlZCBlbHNld2hlcmUKLSAgICAgICAgJDIucXVhbGlmaWVyID0gJDEucXVhbGlmaWVyOwot
ICAgICAgICAkMi5sYXlvdXRRdWFsaWZpZXIgPSAkMS5sYXlvdXRRdWFsaWZpZXI7Ci0gICAgICAg
ICQkID0gY29udGV4dC0+YWRkU3RydWN0RGVjbGFyYXRvckxpc3QoJDIsICQzKTsKKyAgICAgICAg
JCQgPSBjb250ZXh0LT5hZGRTdHJ1Y3REZWNsYXJhdG9yTGlzdFdpdGhRdWFsaWZpZXJzKCokMSwg
JiQyLCAkMyk7CiAgICAgfQogICAgIDsKIApAQCAtMTMyOSwyMCArMTI0MiwxNiBAQAogCiBzdHJ1
Y3RfZGVjbGFyYXRvcgogICAgIDogaWRlbnRpZmllciB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5y
ZXNlcnZlZEVycm9yQ2hlY2soQDEsICokMS5zdHJpbmcpKQotICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOworICAgICAgICBjb250ZXh0LT5jaGVja0lzTm90UmVzZXJ2ZWQoQDEsICokMS5z
dHJpbmcpOwogCiAgICAgICAgIFRUeXBlKiB0eXBlID0gbmV3IFRUeXBlKEVidFZvaWQsIEVicFVu
ZGVmaW5lZCk7CiAgICAgICAgICQkID0gbmV3IFRGaWVsZCh0eXBlLCAkMS5zdHJpbmcsIEAxKTsK
ICAgICB9CiAgICAgfCBpZGVudGlmaWVyIExFRlRfQlJBQ0tFVCBjb25zdGFudF9leHByZXNzaW9u
IFJJR0hUX0JSQUNLRVQgewotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNr
KEAxLCAqJDEuc3RyaW5nKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAg
ICAgY29udGV4dC0+Y2hlY2tJc05vdFJlc2VydmVkKEAxLCAqJDEuc3RyaW5nKTsKIAogICAgICAg
ICBUVHlwZSogdHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwotICAgICAg
ICBpbnQgc2l6ZTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soQDMs
ICQzLCBzaXplKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgdW5z
aWduZWQgaW50IHNpemUgPSBjb250ZXh0LT5jaGVja0lzVmFsaWRBcnJheVNpemUoQDMsICQzKTsK
ICAgICAgICAgdHlwZS0+c2V0QXJyYXlTaXplKHNpemUpOwogCiAgICAgICAgICQkID0gbmV3IFRG
aWVsZCh0eXBlLCAkMS5zdHJpbmcsIEAxKTsKQEAgLTEzNzgsNyArMTI4Nyw2IEBACiAgICAgOiBM
RUZUX0JSQUNFIFJJR0hUX0JSQUNFIHsgJCQgPSAwOyB9CiAgICAgfCBMRUZUX0JSQUNFIHsgY29u
dGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyB9IHN0YXRlbWVudF9saXN0IHsgY29udGV4dC0+c3lt
Ym9sVGFibGUucG9wKCk7IH0gUklHSFRfQlJBQ0UgewogICAgICAgICBpZiAoJDMgIT0gMCkgewot
ICAgICAgICAgICAgJDMtPnNldE9wKEVPcFNlcXVlbmNlKTsKICAgICAgICAgICAgICQzLT5zZXRM
aW5lKEAkKTsKICAgICAgICAgfQogICAgICAgICAkJCA9ICQzOwpAQCAtMTQwMiw3ICsxMzEwLDYg
QEAKICAgICB9CiAgICAgfCBMRUZUX0JSQUNFIHN0YXRlbWVudF9saXN0IFJJR0hUX0JSQUNFIHsK
ICAgICAgICAgaWYgKCQyKSB7Ci0gICAgICAgICAgICAkMi0+c2V0T3AoRU9wU2VxdWVuY2UpOwog
ICAgICAgICAgICAgJDItPnNldExpbmUoQCQpOwogICAgICAgICB9CiAgICAgICAgICQkID0gJDI7
CkBAIC0xNDExLDEwICsxMzE4LDEzIEBACiAKIHN0YXRlbWVudF9saXN0CiAgICAgOiBzdGF0ZW1l
bnQgewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKCQx
LCBAJCk7CisgICAgICAgICQkID0gbmV3IFRJbnRlcm1CbG9jaygpOworICAgICAgICAkJC0+c2V0
TGluZShAJCk7CisgICAgICAgICQkLT5hcHBlbmRTdGF0ZW1lbnQoJDEpOwogICAgIH0KICAgICB8
IHN0YXRlbWVudF9saXN0IHN0YXRlbWVudCB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEsICQyLCBAJCk7CisgICAgICAgICQkID0gJDE7CisgICAg
ICAgICQkLT5hcHBlbmRTdGF0ZW1lbnQoJDIpOwogICAgIH0KICAgICA7CiAKQEAgLTE0MjUsOSAr
MTMzNSw4IEBACiAKIHNlbGVjdGlvbl9zdGF0ZW1lbnQKICAgICA6IElGIExFRlRfUEFSRU4gZXhw
cmVzc2lvbiBSSUdIVF9QQVJFTiBzZWxlY3Rpb25fcmVzdF9zdGF0ZW1lbnQgewotICAgICAgICBp
ZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hlY2soQDEsICQzKSkKLSAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0
aW9uKCQzLCAkNSwgQDEpOworICAgICAgICBjb250ZXh0LT5jaGVja0lzU2NhbGFyQm9vbChAMSwg
JDMpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJZkVsc2UoJDMsICQ1
LCBAMSk7CiAgICAgfQogICAgIDsKIApAQCAtMTQ2MiwxOCArMTM3MSwxNSBAQAogICAgIC8vIElu
IDE5OTYgYysrIGRyYWZ0LCBjb25kaXRpb25zIGNhbiBpbmNsdWRlIHNpbmdsZSBkZWNsYXJhdGlv
bnMKICAgICA6IGV4cHJlc3Npb24gewogICAgICAgICAkJCA9ICQxOwotICAgICAgICBpZiAoY29u
dGV4dC0+Ym9vbEVycm9yQ2hlY2soJDEtPmdldExpbmUoKSwgJDEpKQotICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOworICAgICAgICBjb250ZXh0LT5jaGVja0lzU2NhbGFyQm9vbCgkMS0+
Z2V0TGluZSgpLCAkMSk7CiAgICAgfQogICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgaWRlbnRp
ZmllciBFUVVBTCBpbml0aWFsaXplciB7CiAgICAgICAgIFRJbnRlcm1Ob2RlICppbnRlcm1Ob2Rl
OwotICAgICAgICBpZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hlY2soQDIsICQxKSkKLSAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgY29udGV4dC0+Y2hlY2tJc1NjYWxhckJv
b2woQDIsICQxKTsKIAogICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcihA
MiwgKiQyLnN0cmluZywgJDEsICQ0LCAmaW50ZXJtTm9kZSkpCiAgICAgICAgICAgICAkJCA9ICQ0
OwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgICAgICQkID0gMDsKICAgICAgICAgfQogICAgIH0KQEAgLTE0ODYsOCArMTM5Miw3IEBACiAg
ICAgICAgIGNvbnRleHQtPmRlY3JMb29wTmVzdGluZ0xldmVsKCk7CiAgICAgfQogICAgIHwgRE8g
eyBjb250ZXh0LT5pbmNyTG9vcE5lc3RpbmdMZXZlbCgpOyB9IHN0YXRlbWVudF93aXRoX3Njb3Bl
IFdISUxFIExFRlRfUEFSRU4gZXhwcmVzc2lvbiBSSUdIVF9QQVJFTiBTRU1JQ09MT04gewotICAg
ICAgICBpZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hlY2soQDgsICQ2KSkKLSAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgY29udGV4dC0+Y2hlY2tJc1NjYWxhckJvb2woQDgs
ICQ2KTsKIAogICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29w
RG9XaGlsZSwgMCwgJDYsIDAsICQzLCBANCk7CiAgICAgICAgIGNvbnRleHQtPmRlY3JMb29wTmVz
dGluZ0xldmVsKCk7CkBAIC0xNTUxLDEyICsxNDU2LDEzIEBACiAKIHRyYW5zbGF0aW9uX3VuaXQK
ICAgICA6IGV4dGVybmFsX2RlY2xhcmF0aW9uIHsKLSAgICAgICAgJCQgPSAkMTsKKyAgICAgICAg
JCQgPSBuZXcgVEludGVybUJsb2NrKCk7CisgICAgICAgICQkLT5zZXRMaW5lKEAkKTsKKyAgICAg
ICAgJCQtPmFwcGVuZFN0YXRlbWVudCgkMSk7CiAgICAgICAgIGNvbnRleHQtPnNldFRyZWVSb290
KCQkKTsKICAgICB9CiAgICAgfCB0cmFuc2xhdGlvbl91bml0IGV4dGVybmFsX2RlY2xhcmF0aW9u
IHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMSwg
JDIsIEAkKTsKLSAgICAgICAgY29udGV4dC0+c2V0VHJlZVJvb3QoJCQpOworICAgICAgICAkJC0+
YXBwZW5kU3RhdGVtZW50KCQyKTsKICAgICB9CiAgICAgOwogCkBAIC0xNTcxLDcgKzE0NzcsNyBA
QAogCiBmdW5jdGlvbl9kZWZpbml0aW9uCiAgICAgOiBmdW5jdGlvbl9wcm90b3R5cGUgewotICAg
ICAgICBjb250ZXh0LT5wYXJzZUZ1bmN0aW9uUHJvdG90eXBlKEAxLCAkMS5mdW5jdGlvbiwgJiQx
LmludGVybUFnZ3JlZ2F0ZSk7CisgICAgICAgIGNvbnRleHQtPnBhcnNlRnVuY3Rpb25EZWZpbml0
aW9uSGVhZGVyKEAxLCAmKCQxLmZ1bmN0aW9uKSwgJiQxLmludGVybUFnZ3JlZ2F0ZSk7CiAgICAg
fQogICAgIGNvbXBvdW5kX3N0YXRlbWVudF9ub19uZXdfc2NvcGUgewogICAgICAgICAkJCA9IGNv
bnRleHQtPmFkZEZ1bmN0aW9uRGVmaW5pdGlvbigqKCQxLmZ1bmN0aW9uKSwgJDEuaW50ZXJtQWdn
cmVnYXRlLCAkMywgQDEpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvZ2xzbGFuZ19sZXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2dsc2xhbmdfbGV4LmNwcAkocmV2
aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvZ2xzbGFuZ19sZXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDc1LDcgKzIwNzUs
NiBAQAogWVlfUlVMRV9TRVRVUAogewogICAgIHl5ZXh0cmEtPmVycm9yKCp5eWxsb2MsICJJbGxl
Z2FsIGNoYXJhY3RlciBhdCBmaWVsZG5hbWUgc3RhcnQiLCB5eXRleHQsICIiKTsKLSAgICB5eWV4
dHJhLT5yZWNvdmVyKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAJWVlfQlJFQUsKQEAgLTIwOTAsNyAr
MjA4OSw3IEBACiAJWVlfQlJFQUsKIGNhc2UgMjM5OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4g
MDsgfQoreyBhc3NlcnQoZmFsc2UpOyByZXR1cm4gMDsgfQogCVlZX0JSRUFLCiBjYXNlIDI0MDoK
IFlZX1JVTEVfU0VUVVAKQEAgLTMyNzUsNyArMzI3NCw2IEBACiAgICAgc3RydWN0IHl5Z3V0c190
KiB5eWcgPSAoc3RydWN0IHl5Z3V0c190KikgeXlzY2FubmVyOwogCiAgICAgeXlleHRyYS0+ZXJy
b3IoKnl5bGxvYywgIklsbGVnYWwgdXNlIG9mIHJlc2VydmVkIHdvcmQiLCB5eXRleHQsICIiKTsK
LSAgICB5eWV4dHJhLT5yZWNvdmVyKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTMzMjUsNyAr
MzMyMyw2IEBACiAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclZlcnNpb24oKSA8IDMwMCkKICAg
ICB7CiAgICAgICAgIGNvbnRleHQtPmVycm9yKCp5eWxsb2MsICJVbnNpZ25lZCBpbnRlZ2VycyBh
cmUgdW5zdXBwb3J0ZWQgcHJpb3IgdG8gR0xTTCBFUyAzLjAwIiwgeXl0ZXh0LCAiIik7Ci0gICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0z
MzQyLDcgKzMzMzksNiBAQAogICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXJWZXJzaW9uKCkgPCAz
MDApCiAgICAgewogICAgICAgICBjb250ZXh0LT5lcnJvcigqeXlsbG9jLCAiRmxvYXRpbmctcG9p
bnQgc3VmZml4IHVuc3VwcG9ydGVkIHByaW9yIHRvIEdMU0wgRVMgMy4wMCIsIHl5dGV4dCk7Ci0g
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBA
IC0zMzU2LDcgKzMzNTIsNiBAQAogCiB2b2lkIHl5ZXJyb3IoWVlMVFlQRSogbGxvYywgVFBhcnNl
Q29udGV4dCogY29udGV4dCwgdm9pZCAqc2Nhbm5lciwgY29uc3QgY2hhciogcmVhc29uKSB7CiAg
ICAgY29udGV4dC0+ZXJyb3IoKmxsb2MsIHJlYXNvbiwgeXlnZXRfdGV4dChzY2FubmVyKSk7Ci0g
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogfQogCiBpbnQgaW50X2NvbnN0YW50KFRQYXJzZUNvbnRl
eHQgKmNvbnRleHQpIHsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL2dsc2xhbmdfdGFiLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nX3RhYi5jcHAJKHJldmlz
aW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL2dsc2xhbmdfdGFiLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsOCBAQAog
CiAvLyBUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgZ2VuZXJhdGVfcGFyc2VyLnNoLiBE
TyBOT1QgRURJVCEKIAorLy8gY2xhbmctZm9ybWF0IG9mZgorCiAvLyBJZ25vcmUgZXJyb3JzIGlu
IGF1dG8tZ2VuZXJhdGVkIGNvZGUuCiAjaWYgZGVmaW5lZChfX0dOVUNfXykKICNwcmFnbWEgR0ND
IGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bnVzZWQtZnVuY3Rpb24iCkBAIC0yOTEsMTAgKzI5Mywx
MiBAQAogICAgICAgICAgICAgVEludGVybU5vZGVQYWlyIG5vZGVQYWlyOwogICAgICAgICAgICAg
VEludGVybVR5cGVkKiBpbnRlcm1UeXBlZE5vZGU7CiAgICAgICAgICAgICBUSW50ZXJtQWdncmVn
YXRlKiBpbnRlcm1BZ2dyZWdhdGU7CisgICAgICAgICAgICBUSW50ZXJtQmxvY2sqIGludGVybUJs
b2NrOwogICAgICAgICAgICAgVEludGVybVN3aXRjaCogaW50ZXJtU3dpdGNoOwogICAgICAgICAg
ICAgVEludGVybUNhc2UqIGludGVybUNhc2U7CiAgICAgICAgIH07CiAgICAgICAgIHVuaW9uIHsK
KyAgICAgICAgICAgIFRUeXBlU3BlY2lmaWVyTm9uQXJyYXkgdHlwZVNwZWNpZmllck5vbkFycmF5
OwogICAgICAgICAgICAgVFB1YmxpY1R5cGUgdHlwZTsKICAgICAgICAgICAgIFRQcmVjaXNpb24g
cHJlY2lzaW9uOwogICAgICAgICAgICAgVExheW91dFF1YWxpZmllciBsYXlvdXRRdWFsaWZpZXI7
CkBAIC0zMDMsNiArMzA3LDggQEAKICAgICAgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW07CiAgICAg
ICAgICAgICBURmllbGQqIGZpZWxkOwogICAgICAgICAgICAgVEZpZWxkTGlzdCogZmllbGRMaXN0
OworICAgICAgICAgICAgVFF1YWxpZmllcldyYXBwZXJCYXNlKiBxdWFsaWZpZXJXcmFwcGVyOwor
ICAgICAgICAgICAgVFR5cGVRdWFsaWZpZXJCdWlsZGVyKiB0eXBlUXVhbGlmaWVyQnVpbGRlcjsK
ICAgICAgICAgfTsKICAgICB9IGludGVybTsKIApAQCAtMzU5LDcgKzM2NSw2IEBACiAjZGVmaW5l
IFZFUlRFWF9PTkxZKFMsIEwpIHsgIFwKICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyVHlwZSgp
ICE9IEdMX1ZFUlRFWF9TSEFERVIpIHsgIFwKICAgICAgICAgY29udGV4dC0+ZXJyb3IoTCwgIiBz
dXBwb3J0ZWQgaW4gdmVydGV4IHNoYWRlcnMgb25seSAiLCBTKTsgIFwKLSAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOyAgXAogICAgIH0gIFwKIH0KIApAQCAtMzY2LDI2ICszNzEsNDEgQEAKICNk
ZWZpbmUgRlJBR19PTkxZKFMsIEwpIHsgIFwKICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyVHlw
ZSgpICE9IEdMX0ZSQUdNRU5UX1NIQURFUikgeyAgXAogICAgICAgICBjb250ZXh0LT5lcnJvcihM
LCAiIHN1cHBvcnRlZCBpbiBmcmFnbWVudCBzaGFkZXJzIG9ubHkgIiwgUyk7ICBcCi0gICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsgIFwKICAgICB9ICBcCiB9CiAKKyNkZWZpbmUgQ09NUFVURV9P
TkxZKFMsIEwpIHsgIFwKKyAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyVHlwZSgpICE9IEdMX0NP
TVBVVEVfU0hBREVSKSB7ICBcCisgICAgICAgIGNvbnRleHQtPmVycm9yKEwsICIgc3VwcG9ydGVk
IGluIGNvbXB1dGUgc2hhZGVycyBvbmx5ICIsIFMpOyAgXAorICAgIH0gIFwKK30KKworI2RlZmlu
ZSBOT05fQ09NUFVURV9PTkxZKFMsIEwpIHsgIFwKKyAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVy
VHlwZSgpICE9IEdMX1ZFUlRFWF9TSEFERVIgJiYgY29udGV4dC0+Z2V0U2hhZGVyVHlwZSgpICE9
IEdMX0ZSQUdNRU5UX1NIQURFUikgeyAgXAorICAgICAgICBjb250ZXh0LT5lcnJvcihMLCAiIHN1
cHBvcnRlZCBpbiB2ZXJ0ZXggYW5kIGZyYWdtZW50IHNoYWRlcnMgb25seSAiLCBTKTsgIFwKKyAg
ICB9ICBcCit9CisKICNkZWZpbmUgRVMyX09OTFkoUywgTCkgeyAgXAogICAgIGlmIChjb250ZXh0
LT5nZXRTaGFkZXJWZXJzaW9uKCkgIT0gMTAwKSB7ICBcCiAgICAgICAgIGNvbnRleHQtPmVycm9y
KEwsICIgc3VwcG9ydGVkIGluIEdMU0wgRVMgMS4wMCBvbmx5ICIsIFMpOyAgXAotICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7ICBcCiAgICAgfSAgXAogfQogCi0jZGVmaW5lIEVTM19PTkxZKFRP
S0VOLCBMSU5FLCBSRUFTT04pIHsgIFwKLSAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyVmVyc2lv
bigpICE9IDMwMCkgeyAgXAotICAgICAgICBjb250ZXh0LT5lcnJvcihMSU5FLCBSRUFTT04gIiBz
dXBwb3J0ZWQgaW4gR0xTTCBFUyAzLjAwIG9ubHkgIiwgVE9LRU4pOyAgXAotICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7ICBcCisjZGVmaW5lIEVTM19PUl9ORVdFUihUT0tFTiwgTElORSwgUkVB
U09OKSB7ICBcCisgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclZlcnNpb24oKSA8IDMwMCkgeyAg
XAorICAgICAgICBjb250ZXh0LT5lcnJvcihMSU5FLCBSRUFTT04gIiBzdXBwb3J0ZWQgaW4gR0xT
TCBFUyAzLjAwIGFuZCBhYm92ZSBvbmx5ICIsIFRPS0VOKTsgIFwKICAgICB9ICBcCiB9CiAKKyNk
ZWZpbmUgRVMzXzFfT05MWShUT0tFTiwgTElORSwgUkVBU09OKSB7ICBcCisgICAgaWYgKGNvbnRl
eHQtPmdldFNoYWRlclZlcnNpb24oKSAhPSAzMTApIHsgIFwKKyAgICAgICAgY29udGV4dC0+ZXJy
b3IoTElORSwgUkVBU09OICIgc3VwcG9ydGVkIGluIEdMU0wgRVMgMy4xMCBvbmx5ICIsIFRPS0VO
KTsgIFwKKyAgICB9ICBcCit9CiAKIAorCiAjaWZkZWYgc2hvcnQKICMgdW5kZWYgc2hvcnQKICNl
bmRpZgpAQCAtNjI2LDkgKzY0Niw5IEBACiAjZW5kaWYgLyogIVlZQ09QWV9ORUVERUQgKi8KIAog
LyogWVlGSU5BTCAtLSBTdGF0ZSBudW1iZXIgb2YgdGhlIHRlcm1pbmF0aW9uIHN0YXRlLiAgKi8K
LSNkZWZpbmUgWVlGSU5BTCAgMTE2CisjZGVmaW5lIFlZRklOQUwgIDEwOQogLyogWVlMQVNUIC0t
IExhc3QgaW5kZXggaW4gWVlUQUJMRS4gICovCi0jZGVmaW5lIFlZTEFTVCAgIDI1MTYKKyNkZWZp
bmUgWVlMQVNUICAgMjQzMgogCiAvKiBZWU5UT0tFTlMgLS0gTnVtYmVyIG9mIHRlcm1pbmFscy4g
ICovCiAjZGVmaW5lIFlZTlRPS0VOUyAgMTI4CkBAIC02MzUsOSArNjU1LDkgQEAKIC8qIFlZTk5U
UyAtLSBOdW1iZXIgb2Ygbm9udGVybWluYWxzLiAgKi8KICNkZWZpbmUgWVlOTlRTICA5NAogLyog
WVlOUlVMRVMgLS0gTnVtYmVyIG9mIHJ1bGVzLiAgKi8KLSNkZWZpbmUgWVlOUlVMRVMgIDI3NQor
I2RlZmluZSBZWU5SVUxFUyAgMjY5CiAvKiBZWU5TVEFURVMgLS0gTnVtYmVyIG9mIHN0YXRlcy4g
ICovCi0jZGVmaW5lIFlZTlNUQVRFUyAgNDE3CisjZGVmaW5lIFlZTlNUQVRFUyAgNDA1CiAKIC8q
IFlZVFJBTlNMQVRFW1lZWF0gLS0gU3ltYm9sIG51bWJlciBjb3JyZXNwb25kaW5nIHRvIFlZWCBh
cyByZXR1cm5lZAogICAgYnkgeXlsZXgsIHdpdGggb3V0LW9mLWJvdW5kcyBjaGVja2luZy4gICov
CkBAIC02OTYsMzQgKzcxNiwzMyBAQAogICAvKiBZWVJMSU5FW1lZTl0gLS0gU291cmNlIGxpbmUg
d2hlcmUgcnVsZSBudW1iZXIgWVlOIHdhcyBkZWZpbmVkLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5
cGVfdWludDE2IHl5cmxpbmVbXSA9CiB7Ci0gICAgICAgMCwgICAyMTIsICAgMjEyLCAgIDIxMywg
ICAyMTYsICAgMjI2LCAgIDIyOSwgICAyMzQsICAgMjM5LCAgIDI0NCwKLSAgICAgMjQ5LCAgIDI1
NSwgICAyNTgsICAgMjYxLCAgIDI2NCwgICAyNjcsICAgMjcwLCAgIDI3NiwgICAyODQsICAgMjk1
LAotICAgICAyOTksICAgMzA3LCAgIDMxMCwgICAzMTYsICAgMzIwLCAgIDMyNywgICAzMzMsICAg
MzQyLCAgIDM1MCwgICAzNTYsCi0gICAgIDM2MywgICAzNzMsICAgMzc2LCAgIDM3OSwgICAzODIs
ICAgMzkyLCAgIDM5MywgICAzOTQsICAgMzk1LCAgIDQwMywKLSAgICAgNDA0LCAgIDQwNywgICA0
MTAsICAgNDE3LCAgIDQxOCwgICA0MjEsICAgNDI3LCAgIDQyOCwgICA0MzIsICAgNDM5LAotICAg
ICA0NDAsICAgNDQzLCAgIDQ0NiwgICA0NDksICAgNDU1LCAgIDQ1NiwgICA0NTksICAgNDY1LCAg
IDQ2NiwgICA0NzMsCi0gICAgIDQ3NCwgICA0ODEsICAgNDgyLCAgIDQ4OSwgICA0OTAsICAgNDk2
LCAgIDQ5NywgICA1MDMsICAgNTA0LCAgIDUxMCwKLSAgICAgNTExLCAgIDUxNywgICA1MTgsICAg
NTI2LCAgIDUyNywgICA1MjgsICAgNTI5LCAgIDUzMywgICA1MzQsICAgNTM1LAotICAgICA1Mzks
ICAgNTQzLCAgIDU0NywgICA1NTEsICAgNTU4LCAgIDU2MSwgICA1NjcsICAgNTc1LCAgIDU4Mywg
ICA1ODYsCi0gICAgIDU5MiwgICA2MDMsICAgNjA3LCAgIDYxMSwgICA2MTUsICAgNjIyLCAgIDYy
OCwgICA2MzEsICAgNjM4LCAgIDY0NiwKLSAgICAgNjY3LCAgIDY5NCwgICA3MDQsICAgNzMyLCAg
IDczNywgICA3NDcsICAgNzUyLCAgIDc2MiwgICA3NjUsICAgNzY4LAotICAgICA3NzEsICAgNzc3
LCAgIDc4NCwgICA3ODcsICAgNzkxLCAgIDc5NSwgICA4MDAsICAgODA1LCAgIDgxMiwgICA4MTYs
Ci0gICAgIDgyMCwgICA4MjQsICAgODI5LCAgIDgzNCwgICA4MzgsICAgODQ1LCAgIDg1NSwgICA4
NjEsICAgODY0LCAgIDg3MCwKLSAgICAgODc2LCAgIDg4MywgICA4OTIsICAgOTAyLCAgIDkxMCwg
ICA5MTMsICAgOTIwLCAgIDkyNCwgICA5MjgsICAgOTMzLAotICAgICA5NDEsICAgOTQ0LCAgIDk0
OCwgICA5NTIsICAgOTYxLCAgIDk3MCwgICA5NzgsICAgOTg4LCAgMTAwMCwgIDEwMDMsCi0gICAg
MTAwNiwgIDEwMTIsICAxMDE5LCAgMTAyMiwgIDEwMjgsICAxMDMxLCAgMTAzNCwgIDEwNDAsICAx
MDQzLCAgMTA0OCwKLSAgICAxMDYzLCAgMTA2NywgIDEwNzEsICAxMDc1LCAgMTA3OSwgIDEwODMs
ICAxMDg4LCAgMTA5MywgIDEwOTgsICAxMTAzLAotICAgIDExMDgsICAxMTEzLCAgMTExOCwgIDEx
MjMsICAxMTI4LCAgMTEzMywgIDExMzgsICAxMTQzLCAgMTE0OCwgIDExNTMsCi0gICAgMTE1OCwg
IDExNjMsICAxMTY4LCAgMTE3MywgIDExNzgsICAxMTgzLCAgMTE4OCwgIDExOTIsICAxMTk2LCAg
MTIwMCwKLSAgICAxMjA0LCAgMTIwOCwgIDEyMTIsICAxMjE2LCAgMTIyMCwgIDEyMjQsICAxMjI4
LCAgMTIzMiwgIDEyMzYsICAxMjQwLAotICAgIDEyNDQsICAxMjQ4LCAgMTI1NiwgIDEyNjQsICAx
MjY4LCAgMTI4MSwgIDEyODEsICAxMjg0LCAgMTI4NCwgIDEyOTAsCi0gICAgMTI5MywgIDEzMDks
ICAxMzEyLCAgMTMyMSwgIDEzMjUsICAxMzMxLCAgMTMzOCwgIDEzNTMsICAxMzU3LCAgMTM2MSwK
LSAgICAxMzYyLCAgMTM2OCwgIDEzNjksICAxMzcwLCAgMTM3MSwgIDEzNzIsICAxMzczLCAgMTM3
NCwgIDEzNzgsICAxMzc5LAotICAgIDEzNzksICAxMzc5LCAgMTM4OSwgIDEzOTAsICAxMzk0LCAg
MTM5NCwgIDEzOTUsICAxMzk1LCAgMTQwMCwgIDE0MDMsCi0gICAgMTQxMywgIDE0MTYsICAxNDIy
LCAgMTQyMywgIDE0MjcsICAxNDM1LCAgMTQzOSwgIDE0NDYsICAxNDQ2LCAgMTQ1MywKLSAgICAx
NDU2LCAgMTQ2MywgIDE0NjgsICAxNDgzLCAgMTQ4MywgIDE0ODgsICAxNDg4LCAgMTQ5NSwgIDE0
OTUsICAxNTAzLAotICAgIDE1MDYsICAxNTEyLCAgMTUxNSwgIDE1MjEsICAxNTI1LCAgMTUzMiwg
IDE1MzUsICAxNTM4LCAgMTU0MSwgIDE1NDQsCi0gICAgMTU1MywgIDE1NTcsICAxNTY0LCAgMTU2
NywgIDE1NzMsICAxNTczCisgICAgICAgMCwgICAyMzcsICAgMjM3LCAgIDIzOCwgICAyNDEsICAg
MjUxLCAgIDI1NCwgICAyNTksICAgMjY0LCAgIDI2OSwKKyAgICAgMjc0LCAgIDI4MCwgICAyODMs
ICAgMjg2LCAgIDI4OSwgICAyOTIsICAgMjk1LCAgIDMwMSwgICAzMDgsICAgMzE5LAorICAgICAz
MjMsICAgMzMxLCAgIDMzNCwgICAzNDAsICAgMzQ0LCAgIDM1MSwgICAzNTcsICAgMzY2LCAgIDM3
NCwgICAzODAsCisgICAgIDM4NiwgICAzOTUsICAgMzk4LCAgIDQwMSwgICA0MDQsICAgNDE0LCAg
IDQxNSwgICA0MTYsICAgNDE3LCAgIDQyNSwKKyAgICAgNDI2LCAgIDQyOSwgICA0MzIsICAgNDM5
LCAgIDQ0MCwgICA0NDMsICAgNDQ5LCAgIDQ1MCwgICA0NTQsICAgNDYxLAorICAgICA0NjIsICAg
NDY1LCAgIDQ2OCwgICA0NzEsICAgNDc3LCAgIDQ3OCwgICA0ODEsICAgNDg3LCAgIDQ4OCwgICA0
OTUsCisgICAgIDQ5NiwgICA1MDMsICAgNTA0LCAgIDUxMSwgICA1MTIsICAgNTE4LCAgIDUxOSwg
ICA1MjUsICAgNTI2LCAgIDUzMiwKKyAgICAgNTMzLCAgIDUzOSwgICA1NDAsICAgNTQ3LCAgIDU0
OCwgICA1NDksICAgNTUwLCAgIDU1NCwgICA1NTUsICAgNTU2LAorICAgICA1NjAsICAgNTY0LCAg
IDU2OCwgICA1NzIsICAgNTc5LCAgIDU4MiwgICA1ODgsICAgNTk1LCAgIDYwMiwgICA2MDUsCisg
ICAgIDYxMSwgICA2MjAsICAgNjI0LCAgIDYyOCwgICA2MzIsICAgNjM2LCAgIDY0MywgICA2NTAs
ICAgNjUzLCAgIDY2MCwKKyAgICAgNjY4LCAgIDY4OCwgICA2OTgsICAgNzA2LCAgIDczMSwgICA3
MzUsICAgNzM5LCAgIDc0MywgICA3NTAsICAgNzU3LAorICAgICA3NjAsICAgNzY0LCAgIDc2OCwg
ICA3NzMsICAgNzc4LCAgIDc4NSwgICA3ODksICAgNzkzLCAgIDc5NywgICA4MDIsCisgICAgIDgw
NywgICA4MTQsICAgODI0LCAgIDgzMCwgICA4MzMsICAgODM5LCAgIDg0MywgICA4NTAsICAgODU2
LCAgIDg2MywKKyAgICAgODY3LCAgIDg3MCwgICA4NzMsICAgODgyLCAgIDg4OCwgICA4OTYsICAg
ODk5LCAgIDkxOSwgICA5MzgsICAgOTQ1LAorICAgICA5NDksICAgOTU2LCAgIDk2NiwgICA5Njks
ICAgOTcyLCAgIDk3OCwgICA5ODUsICAgOTg4LCAgIDk5NCwgICA5OTcsCisgICAgMTAwMCwgIDEw
MDYsICAxMDA5LCAgMTAxNCwgIDEwMjUsICAxMDI4LCAgMTAzMSwgIDEwMzQsICAxMDM3LCAgMTA0
MCwKKyAgICAxMDQ0LCAgMTA0OCwgIDEwNTIsICAxMDU2LCAgMTA2MCwgIDEwNjQsICAxMDY4LCAg
MTA3MiwgIDEwNzYsICAxMDgwLAorICAgIDEwODQsICAxMDg4LCAgMTA5MiwgIDEwOTYsICAxMTAw
LCAgMTEwNCwgIDExMDgsICAxMTEyLCAgMTExNiwgIDExMjAsCisgICAgMTEyNCwgIDExMjcsICAx
MTMwLCAgMTEzMywgIDExMzYsICAxMTM5LCAgMTE0MiwgIDExNDUsICAxMTQ4LCAgMTE1MSwKKyAg
ICAxMTU0LCAgMTE1NywgIDExNjAsICAxMTYzLCAgMTE2NiwgIDExNjksICAxMTc2LCAgMTE4Miwg
IDExODUsICAxMTk3LAorICAgIDExOTcsICAxMjAwLCAgMTIwMCwgIDEyMDYsICAxMjA5LCAgMTIy
NCwgIDEyMjcsICAxMjM0LCAgMTIzOCwgIDEyNDQsCisgICAgMTI1MCwgIDEyNjIsICAxMjY2LCAg
MTI3MCwgIDEyNzEsICAxMjc3LCAgMTI3OCwgIDEyNzksICAxMjgwLCAgMTI4MSwKKyAgICAxMjgy
LCAgMTI4MywgIDEyODcsICAxMjg4LCAgMTI4OCwgIDEyODgsICAxMjk3LCAgMTI5OCwgIDEzMDIs
ICAxMzAyLAorICAgIDEzMDMsICAxMzAzLCAgMTMwOCwgIDEzMTEsICAxMzIwLCAgMTMyNSwgIDEz
MzIsICAxMzMzLCAgMTMzNywgIDEzNDQsCisgICAgMTM0OCwgIDEzNTUsICAxMzU1LCAgMTM2Miwg
IDEzNjUsICAxMzcyLCAgMTM3NiwgIDEzODksICAxMzg5LCAgMTM5NCwKKyAgICAxMzk0LCAgMTQw
MCwgIDE0MDAsICAxNDA4LCAgMTQxMSwgIDE0MTcsICAxNDIwLCAgMTQyNiwgIDE0MzAsICAxNDM3
LAorICAgIDE0NDAsICAxNDQzLCAgMTQ0NiwgIDE0NDksICAxNDU4LCAgMTQ2NCwgIDE0NzAsICAx
NDczLCAgMTQ3OSwgIDE0NzkKIH07CiAjZW5kaWYKIApAQCAtNzcwLDEwICs3ODksMTAgQEAKICAg
ImNvbnN0YW50X2V4cHJlc3Npb24iLCAiZW50ZXJfc3RydWN0IiwgImRlY2xhcmF0aW9uIiwKICAg
ImZ1bmN0aW9uX3Byb3RvdHlwZSIsICJmdW5jdGlvbl9kZWNsYXJhdG9yIiwKICAgImZ1bmN0aW9u
X2hlYWRlcl93aXRoX3BhcmFtZXRlcnMiLCAiZnVuY3Rpb25faGVhZGVyIiwKLSAgInBhcmFtZXRl
cl9kZWNsYXJhdG9yIiwgInBhcmFtZXRlcl9kZWNsYXJhdGlvbiIsICJwYXJhbWV0ZXJfcXVhbGlm
aWVyIiwKKyAgInBhcmFtZXRlcl9kZWNsYXJhdG9yIiwgInBhcmFtZXRlcl9kZWNsYXJhdGlvbiIs
CiAgICJwYXJhbWV0ZXJfdHlwZV9zcGVjaWZpZXIiLCAiaW5pdF9kZWNsYXJhdG9yX2xpc3QiLCAi
c2luZ2xlX2RlY2xhcmF0aW9uIiwKLSAgImZ1bGx5X3NwZWNpZmllZF90eXBlIiwgImludGVycG9s
YXRpb25fcXVhbGlmaWVyIiwKLSAgInBhcmFtZXRlcl90eXBlX3F1YWxpZmllciIsICJ0eXBlX3F1
YWxpZmllciIsICJzdG9yYWdlX3F1YWxpZmllciIsCisgICJmdWxseV9zcGVjaWZpZWRfdHlwZSIs
ICJpbnRlcnBvbGF0aW9uX3F1YWxpZmllciIsICJ0eXBlX3F1YWxpZmllciIsCisgICJpbnZhcmlh
bnRfcXVhbGlmaWVyIiwgInNpbmdsZV90eXBlX3F1YWxpZmllciIsICJzdG9yYWdlX3F1YWxpZmll
ciIsCiAgICJ0eXBlX3NwZWNpZmllciIsICJwcmVjaXNpb25fcXVhbGlmaWVyIiwgImxheW91dF9x
dWFsaWZpZXIiLAogICAibGF5b3V0X3F1YWxpZmllcl9pZF9saXN0IiwgImxheW91dF9xdWFsaWZp
ZXJfaWQiLAogICAidHlwZV9zcGVjaWZpZXJfbm9fcHJlYyIsICJ0eXBlX3NwZWNpZmllcl9ub25h
cnJheSIsICJzdHJ1Y3Rfc3BlY2lmaWVyIiwKQEAgLTgxMiwxMiArODMxLDEyIEBACiB9OwogIyBl
bmRpZgogCi0jZGVmaW5lIFlZUEFDVF9OSU5GIC0zNjEKKyNkZWZpbmUgWVlQQUNUX05JTkYgLTM0
OAogCiAjZGVmaW5lIHl5cGFjdF92YWx1ZV9pc19kZWZhdWx0KFl5c3RhdGUpIFwKLSAgKCEhKChZ
eXN0YXRlKSA9PSAoLTM2MSkpKQorICAoISEoKFl5c3RhdGUpID09ICgtMzQ4KSkpCiAKLSNkZWZp
bmUgWVlUQUJMRV9OSU5GIC0yMzUKKyNkZWZpbmUgWVlUQUJMRV9OSU5GIC0yMjkKIAogI2RlZmlu
ZSB5eXRhYmxlX3ZhbHVlX2lzX2Vycm9yKFl5dGFibGVfdmFsdWUpIFwKICAgMApAQCAtODI2LDQ4
ICs4NDUsNDcgQEAKICAgICAgU1RBVEUtTlVNLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50
MTYgeXlwYWN0W10gPQogewotICAgIDIxNTQsICAgMjI0LCAgLTM2MSwgIC0zNjEsICAtMzYxLCAg
IDEzMCwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsCi0gICAgLTM2MSwgIC0zNjEsICAtMzYx
LCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwKLSAgICAt
MzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0z
NjEsICAtMzYxLAotICAgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwg
IC0zNjEsICAgMTQ1LCAgLTM2MSwgIC0zNjEsCi0gICAgIC00NiwgIC0zNjEsICAtMzYxLCAgLTM2
MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwKLSAgICAtMzYxLCAg
LTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAg
LTgyLAotICAgIC0zNjEsICAtMzYxLCAgIC02OCwgICAtNDEsICAgLTQ1LCAgICAgOSwgICAgIDcs
ICAtMzYxLCAgIDExNywgICAgMTYsCi0gICAgMTE3MywgIC0zNjEsICAtMzYxLCAgMjQzOSwgICAg
MTYsICAtMzYxLCAgICAtOSwgIC0zNjEsICAyMDc5LCAgLTM2MSwKLSAgICAtMzYxLCAgLTM2MSwg
IC0zNjEsICAgIDE2LCAgLTM2MSwgIDI0MzksICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLAot
ICAgIC0zNjEsICAgLTMxLCAgICAyMywgIC0zNjEsICAgIDExLCAgLTM2MSwgICAgNjMsICAtMzYx
LCAgLTM2MSwgIC0zNjEsCi0gICAgLTM2MSwgIC0zNjEsICAyMzAzLCAgIDE2OCwgICAxMjAsICAt
MzYxLCAgICAxMywgICAtNjYsICAtMzYxLCAgICAzMSwKLSAgICAtMzYxLCAgMjIyOSwgIC0zNjEs
ICAtMzYxLCAgLTM2MSwgIDEyNDMsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAgIDU2LAotICAgIDIy
MjksICAtMzYxLCAgICAxNywgICAtNTAsICAtMzYxLCAgIDQwMSwgIC0zNjEsICAtMzYxLCAgLTM2
MSwgIC0zNjEsCi0gICAgIDEyMCwgIDIzMDMsICAgLTE4LCAgLTM2MSwgIDEzNDEsICAxNjMyLCAg
LTM2MSwgICAxNzksICAyMzAzLCAgIDEyMCwKLSAgICAxODI0LCAgLTM2MSwgICAgNzAsICAtMzYx
LCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIDE2MzIsICAxNjMyLAotICAgIDE2MzIsICAt
MzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgICAyMiwgIC0z
NjEsCi0gICAgLTM2MSwgIC0zNjEsICAgMTAxLCAgIC0yOSwgIDE3MjcsICAgMTE0LCAgLTM2MSwg
IDE2MzIsICAgIDk2LCAgIC05NywKLSAgICAgMTI4LCAgIC01NCwgICAxMTEsICAgMTE4LCAgIDEw
MiwgICAxMTUsICAgMTU0LCAgIDE1MywgICAtNjksICAtMzYxLAotICAgICAxNDAsICAtMzYxLCAg
LTM2MSwgIDE5MDksICAyMjI5LCAgIDEyNCwgIC0zNjEsICAgIDIzLCAgIDEzNCwgICAxMzYsCi0g
ICAgLTM2MSwgICAxNDcsICAgMTQ5LCAgIDE0MywgIDE0MzksICAgMTU1LCAgMTYzMiwgICAxNDgs
ICAgMTU3LCAgIDE2MCwKLSAgICAtMzYxLCAgLTM2MSwgICAxODQsICAtMzYxLCAgLTM2MSwgICAg
NTIsICAtMzYxLCAgIC02OCwgICAxNTgsICAtMzYxLAotICAgIC0zNjEsICAtMzYxLCAgLTM2MSwg
ICA1MTcsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsCi0gICAgIDE2
NiwgIC0zNjEsICAtMzYxLCAgMTUzNCwgIDE2MzIsICAgMTUwLCAgIDE1OSwgIC0zNjEsICAtMzYx
LCAgIDEyMCwKLSAgICAgMTY3LCAgICA2MSwgIC0zNjEsICAgLTYyLCAgLTM2MSwgIC0zNjEsICAt
MzYxLCAgICAtNSwgIC0zNjEsICAtMzYxLAotICAgIDE2MzIsICAyMzcxLCAgLTM2MSwgIC0zNjEs
ICAxNjMyLCAgIDE4NSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIDE2MzIsCi0gICAgMTYzMiwgIDE2
MzIsICAxNjMyLCAgMTYzMiwgIDE2MzIsICAxNjMyLCAgMTYzMiwgIDE2MzIsICAxNjMyLCAgMTYz
MiwKLSAgICAxNjMyLCAgMTYzMiwgIDE2MzIsICAxNjMyLCAgMTYzMiwgIDE2MzIsICAxNjMyLCAg
MTYzMiwgIDE2MzIsICAtMzYxLAotICAgIC0zNjEsICAxOTk0LCAgLTM2MSwgIC0zNjEsICAtMzYx
LCAgLTM2MSwgIC0zNjEsICAgMTgxLCAgLTM2MSwgIDE2MzIsCi0gICAgLTM2MSwgIC0zNjEsICAg
IDY3LCAgMTYzMiwgICAxODAsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAgNjMzLCAgLTM2MSwKLSAg
ICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwg
IC0zNjEsICAtMzYxLAotICAgIDE2MzIsICAxNjMyLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgMTYz
MiwgICAxNzgsICAgMTg2LCAgLTM2MSwgIDE2MzIsCi0gICAgIDE4MiwgICAgNjgsICAxNjMyLCAg
IDEyMCwgIC0zNjEsICAgLTcxLCAgLTM2MSwgIC0zNjEsICAgMTg3LCAgIDE4OCwKLSAgICAtMzYx
LCAgIDE5MiwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgICA5NiwgICAgOTYs
ICAgLTk3LAotICAgICAtOTcsICAgMTI4LCAgIDEyOCwgICAxMjgsICAgMTI4LCAgIC01NCwgICAt
NTQsICAgMTExLCAgIDExOCwgICAxMDIsCi0gICAgIDExNSwgICAxNTQsICAgMTUzLCAgIDExMywg
IC0zNjEsICAgMjQyLCAgICAxMSwgICA4NjUsICAgOTgxLCAgICAgNCwKLSAgICAtMzYxLCAgICAx
OCwgIC0zNjEsICAxMDc4LCAgIDYzMywgIC0zNjEsICAtMzYxLCAgIDE5NCwgIDE2MzIsICAgMTg5
LAotICAgIC0zNjEsICAxNjMyLCAgLTM2MSwgICAxOTYsICAtMzYxLCAgMTYzMiwgIC0zNjEsICAt
MzYxLCAgMTYzMiwgICAyMDAsCi0gICAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIDEwNzgs
ICAgMTgxLCAgLTM2MSwgICAxODgsICAgMTIwLCAgMjMwMywKLSAgICAgMjAxLCAgIDE5OCwgIC0z
NjEsICAtMzYxLCAgMTYzMiwgIC0zNjEsICAtMzYxLCAgIDIwMiwgIC0zNjEsICAxNjMyLAotICAg
IC0zNjEsICAgMTkxLCAgIDIwMywgICAyOTMsICAtMzYxLCAgIDIwNCwgICAyMDUsICAgNzQ5LCAg
LTM2MSwgIC0zNjEsCi0gICAgIDE5NywgICAgNjAsICAxNjMyLCAgIDc0OSwgICAxODEsICAtMzYx
LCAgMTYzMiwgIC0zNjEsICAtMzYxLCAgLTM2MSwKLSAgICAtMzYxLCAgIDE5OSwgICAxODgsICAt
MzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxCisgICAgMjE0NCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwg
IC0zNDgsICAgMTQ0LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwKKyAgICAtMzQ4LCAgLTM0
OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4
LAorICAgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAt
MzQ4LCAgLTM0OCwgIC0zNDgsCisgICAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgs
ICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwKKyAgICAtMzQ4LCAgIC01MywgIC0z
NDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LAorICAg
IC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAg
LTM0OCwgIC0zNDgsCisgICAgIC04MywgIC0zNDgsICAtMzQ4LCAgIC04OSwgICAtNzAsICAgLTgx
LCAgMjIxOSwgICAtMjYsICAtMzQ4LCAgICA2MCwKKyAgICAtMzQ4LCAgMTE2MywgIC0zNDgsICAt
MzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAgLTY2LAorICAgIC0zNDgs
ICAyMDY5LCAgLTM0OCwgIC0zNDgsICAyMzU1LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgIC00MSwg
ICAgLTIsCisgICAgLTM0OCwgICAtMzAsICAtMzQ4LCAgMjIxOSwgIC0zNDgsICAtMzQ4LCAgLTM0
OCwgIDIyMTksICAgIDgwLCAgICA4MCwKKyAgICAtMzQ4LCAgIC0xNywgICAtNzUsICAgLTY1LCAg
LTM0OCwgIDIyMTksICAtMzQ4LCAgLTM0OCwgIDEyMzMsICAtMzQ4LAorICAgIC0zNDgsICAgLTE1
LCAgMjIxOSwgIC0zNDgsICAgLTEwLCAgIC04NSwgIC0zNDgsICAgMzg5LCAgLTM0OCwgIC0zNDgs
CisgICAgLTM0OCwgIC0zNDgsICAgICAxLCAgIC00OSwgIC0zNDgsICAxMzMxLCAgMTYyMiwgIC0z
NDgsICAtMzQ4LCAgMjIxOSwKKyAgICAgIDgwLCAgMTgxNCwgIC0zNDgsICAgIDE5LCAgLTM0OCwg
IC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAxNjIyLAorICAgIDE2MjIsICAxNjIyLCAgLTM0
OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgICAtMjQsCisgICAg
LTM0OCwgIC0zNDgsICAtMzQ4LCAgICAzNywgICAtMjIsICAxNzE3LCAgICA2NywgIC0zNDgsICAx
NjIyLCAgICAzNCwKKyAgICAgIDE0LCAgICA3NiwgICAtNDYsICAgIDcyLCAgICA1MSwgICAgNzUs
ICAgIDc4LCAgIDExMiwgICAxMTMsICAgLTc3LAorICAgIC0zNDgsICAgIDk4LCAgLTM0OCwgIC0z
NDgsICAxODk5LCAgMjIxOSwgICAgODQsICAtMzQ4LCAgICAtMiwgICAgOTQsCisgICAgICA5Nywg
IC0zNDgsICAgMTA4LCAgIDEwOSwgICAxMDAsICAxNDI5LCAgIDExNCwgIDE2MjIsICAgMTA0LCAg
IDExNSwKKyAgICAgMTExLCAgLTM0OCwgIC0zNDgsICAgMTkwLCAgLTM0OCwgIC0zNDgsICAgLTE5
LCAgLTM0OCwgICAtODksICAgMTE3LAorICAgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAg
NTA1LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsCisgICAgLTM0OCwgIDE2MjIs
ICAxNTI0LCAgMTYyMiwgICAxMTYsICAgMTEwLCAgLTM0OCwgIC0zNDgsICAgIDgwLCAgIDExOCwK
KyAgICAgIDI3LCAgLTM0OCwgICAtNTgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAgIC01LCAgLTM0
OCwgIC0zNDgsICAxNjIyLAorICAgIDIyODcsICAtMzQ4LCAgLTM0OCwgIDE2MjIsICAgMTIxLCAg
LTM0OCwgIC0zNDgsICAtMzQ4LCAgMTYyMiwgIDE2MjIsCisgICAgMTYyMiwgIDE2MjIsICAxNjIy
LCAgMTYyMiwgIDE2MjIsICAxNjIyLCAgMTYyMiwgIDE2MjIsICAxNjIyLCAgMTYyMiwKKyAgICAx
NjIyLCAgMTYyMiwgIDE2MjIsICAxNjIyLCAgMTYyMiwgIDE2MjIsICAxNjIyLCAgMTYyMiwgIC0z
NDgsICAtMzQ4LAorICAgIDE5ODQsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwg
ICAxMTksICAtMzQ4LCAgMTYyMiwgIC0zNDgsCisgICAgLTM0OCwgICAgMzIsICAxNjIyLCAgIDEy
MiwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgICA2MjEsICAtMzQ4LCAgLTM0OCwKKyAgICAtMzQ4LCAg
LTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAx
NjIyLAorICAgIDE2MjIsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAgMTI0LCAgIDEyMCwgICAxMjks
ICAtMzQ4LCAgMTYyMiwgICAxMjUsCisgICAgICAzMywgIDE2MjIsICAgIDgwLCAgLTM0OCwgICAt
ODcsICAtMzQ4LCAgLTM0OCwgICAxMzAsICAgMTI4LCAgLTM0OCwKKyAgICAgMTM2LCAgLTM0OCwg
IC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAgIDM0LCAgICAzNCwgICAgMTQsICAgIDE0LAor
ICAgICAgNzYsICAgIDc2LCAgICA3NiwgICAgNzYsICAgLTQ2LCAgIC00NiwgICAgNzIsICAgIDUx
LCAgICA3NSwgICAgNzgsCisgICAgIDExMiwgICAxMTMsICAgIDU0LCAgLTM0OCwgICAxNjYsICAg
LTMwLCAgIDg1MywgICA5NjksICAgIC0zLCAgLTM0OCwKKyAgICAgIC0xLCAgLTM0OCwgIDEwNjYs
ICAgNjIxLCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgMTYyMiwgICAxMzIsICAtMzQ4LAorICAgIDE2
MjIsICAtMzQ4LCAgIDEzNSwgIC0zNDgsICAxNjIyLCAgLTM0OCwgIC0zNDgsICAxNjIyLCAgIDEz
OSwgIC0zNDgsCisgICAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgMTA2NiwgICAxMTksICAtMzQ4LCAg
IDEyOCwgICAgODAsICAyMjE5LCAgIDE0MSwKKyAgICAgMTQwLCAgLTM0OCwgIDE2MjIsICAtMzQ4
LCAgLTM0OCwgICAxNDUsICAtMzQ4LCAgMTYyMiwgIC0zNDgsICAgMTM0LAorICAgICAxNDYsICAg
MjM2LCAgLTM0OCwgICAxNDcsICAgMTQzLCAgIDczNywgIC0zNDgsICAtMzQ4LCAgIDE0OCwgICAg
MTcsCisgICAgMTYyMiwgICA3MzcsICAgMTE5LCAgLTM0OCwgIDE2MjIsICAtMzQ4LCAgLTM0OCwg
IC0zNDgsICAtMzQ4LCAgIDE0OSwKKyAgICAgMTI4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0
OAogfTsKIAogICAvKiBZWURFRkFDVFtTVEFURS1OVU1dIC0tIERlZmF1bHQgcmVkdWN0aW9uIG51
bWJlciBpbiBzdGF0ZSBTVEFURS1OVU0uCkBAIC04NzUsNzggKzg5Myw3NyBAQAogICAgICBtZWFu
cyB0aGUgZGVmYXVsdCBpcyBhbiBlcnJvci4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQx
NiB5eWRlZmFjdFtdID0KIHsKLSAgICAgICAwLCAgICAgMCwgICAxNDgsICAgMTQ5LCAgIDE1MCwg
ICAgIDAsICAgMTMwLCAgIDE0MCwgICAxNjQsICAgMTYxLAotICAgICAxNjIsICAgMTYzLCAgIDE2
OCwgICAxNjksICAgMTcwLCAgIDE3MSwgICAxNzIsICAgMTczLCAgIDE2NSwgICAxNjYsCi0gICAg
IDE2NywgICAxNzQsICAgMTc1LCAgIDE3NiwgICAxNzcsICAgMTc4LCAgIDE3OSwgICAxNDEsICAg
MTQyLCAgIDE0NSwKLSAgICAgMTMxLCAgIDE4MCwgICAxODEsICAgMTgyLCAgIDE4MywgICAxODQs
ICAgMTg1LCAgICAgMCwgICAxMjgsICAgMTI3LAotICAgICAgIDAsICAgMTYwLCAgIDE4NiwgICAx
ODgsICAgMjAxLCAgIDIwMiwgICAxODksICAgMTkwLCAgIDE5MSwgICAxOTIsCi0gICAgIDE5Mywg
ICAxOTQsICAgMTk1LCAgIDE5NiwgICAxOTcsICAgMTg3LCAgIDE5OCwgICAxOTksICAgMjAwLCAg
ICAgMCwKLSAgICAgMjA0LCAgIDI3MywgICAyNzQsICAgICAwLCAgICA5NywgICAxMDcsICAgICAw
LCAgIDExMiwgICAxMTgsICAgMTM1LAotICAgICAgIDAsICAgMTMzLCAgIDEyNSwgICAgIDAsICAg
MTM2LCAgIDE0NiwgICAxNTcsICAgMjAzLCAgICAgMCwgICAyNzAsCi0gICAgIDI3MiwgICAxMzIs
ICAgMTI0LCAgICAgMCwgICAxMzgsICAgICAwLCAgIDE0MywgICAxNDQsICAgICAyLCAgICAgMywK
LSAgICAgMjA3LCAgICAgMCwgICAgIDAsICAgIDg4LCAgICAgMCwgICAgOTUsICAgMTA3LCAgIDEy
OSwgICAxMDgsICAgMTA5LAotICAgICAxMTAsICAgIDk4LCAgICAgMCwgICAxMDcsICAgICAwLCAg
ICA4OSwgICAgIDIsICAgMTE5LCAgIDEzNCwgICAgIDAsCi0gICAgICA5NCwgICAgIDAsICAgMTI2
LCAgIDE0NywgICAxMzcsICAgICAwLCAgICAgMSwgICAyNzEsICAgMTM5LCAgICAgMCwKLSAgICAg
ICAwLCAgIDIwNSwgICAxNTQsICAgICAwLCAgIDE1MiwgICAgIDAsICAgMjc1LCAgICA5OSwgICAx
MDQsICAgMTA2LAotICAgICAxMTEsICAgICAwLCAgIDExMywgICAxMDAsICAgICAwLCAgICAgMCwg
ICAgODcsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAyMDksICAgICA0LCAgICAg
OCwgICAgIDYsICAgICA3LCAgICAgOSwgICAgMzAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAg
IDE1OCwgICAgMzcsICAgIDM2LCAgICAzOCwgICAgMzUsICAgICA1LCAgICAxMSwgICAgMzEsICAg
IDEzLAotICAgICAgMTgsICAgIDE5LCAgICAgMCwgICAgIDAsICAgIDI0LCAgICAgMCwgICAgMzks
ICAgICAwLCAgICA0MywgICAgNDYsCi0gICAgICA0OSwgICAgNTQsICAgIDU3LCAgICA1OSwgICAg
NjEsICAgIDYzLCAgICA2NSwgICAgNjcsICAgIDY5LCAgICA4NiwKLSAgICAgICAwLCAgICAyOCwg
ICAgOTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTUxLCAgICAgMCwgICAgIDAsICAgICAwLAot
ICAgICAyNTUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAyMjksCi0gICAgIDIzOCwgICAyNDIsICAgIDM5LCAgICA3MSwgICAgODQsICAg
ICAwLCAgIDIxOCwgICAgIDAsICAgMTQ2LCAgIDIyMSwKLSAgICAgMjQwLCAgIDIyMCwgICAyMTks
ICAgICAwLCAgIDIyMiwgICAyMjMsICAgMjI0LCAgIDIyNSwgICAyMjYsICAgMjI3LAotICAgICAx
MDEsICAgMTAzLCAgIDEwNSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMjE3LCAgIDEy
MywgICAgIDAsCi0gICAgIDIxNSwgICAgIDAsICAgMjEzLCAgICAgMCwgICAyMTAsICAgIDMyLCAg
ICAzMywgICAgIDAsICAgIDE1LCAgICAxNiwKLSAgICAgICAwLCAgICAgMCwgICAgMjIsICAgIDIx
LCAgICAgMCwgICAxNjAsICAgIDI1LCAgICAyNywgICAgMzQsICAgICAwLAorICAgICAgIDAsICAg
MTI3LCAgIDE0MiwgICAxNDMsICAgMTQ0LCAgICAgMCwgICAxMzMsICAgMTM1LCAgIDE1OCwgICAx
NTUsCisgICAgIDE1NiwgICAxNTcsICAgMTYyLCAgIDE2MywgICAxNjQsICAgMTY1LCAgIDE2Niwg
ICAxNjcsICAgMTU5LCAgIDE2MCwKKyAgICAgMTYxLCAgIDE2OCwgICAxNjksICAgMTcwLCAgIDE3
MSwgICAxNzIsICAgMTczLCAgIDEzNiwgICAxMzcsICAgMTM4LAorICAgICAxNDAsICAgMTM0LCAg
IDE3NCwgICAxNzUsICAgMTc2LCAgIDE3NywgICAxNzgsICAgMTc5LCAgIDEzOSwgICAxMjQsCisg
ICAgIDEyMywgICAgIDAsICAgMTU0LCAgIDE4MCwgICAxODIsICAgMTk1LCAgIDE5NiwgICAxODMs
ICAgMTg0LCAgIDE4NSwKKyAgICAgMTg2LCAgIDE4NywgICAxODgsICAgMTg5LCAgIDE5MCwgICAx
OTEsICAgMTgxLCAgIDE5MiwgICAxOTMsICAgMTk0LAorICAgICAgIDAsICAgMTk4LCAgIDI2Nywg
ICAyNjgsICAgICAwLCAgICA5OCwgICAgOTcsICAgICAwLCAgIDEwOSwgICAxMTUsCisgICAgIDEz
MSwgICAgIDAsICAgMTMyLCAgIDEyNSwgICAxMjgsICAgMTIxLCAgIDEzMCwgICAxMjksICAgMTQx
LCAgIDE1MSwKKyAgICAgMTk3LCAgICAgMCwgICAyNjQsICAgMjY2LCAgICAgMCwgICAgIDIsICAg
ICAzLCAgIDIwMSwgICAgIDAsICAgICAwLAorICAgICAgODgsICAgICAwLCAgICA5NiwgICAgIDAs
ICAgMTA1LCAgICA5OSwgICAxMDcsICAgICAwLCAgIDEwOCwgICAgIDAsCisgICAgICA4OSwgICAg
IDIsICAgMTE2LCAgICAgMCwgICAgOTQsICAgICAwLCAgIDEyNiwgICAxMjIsICAgICAwLCAgICAg
MSwKKyAgICAgMjY1LCAgICAgMCwgICAgIDAsICAgMTk5LCAgIDE0OCwgICAgIDAsICAgMTQ2LCAg
ICAgMCwgICAyNjksICAgMTAwLAorICAgICAxMDQsICAgMTA2LCAgIDEwMiwgICAxMTAsICAgMTAx
LCAgICAgMCwgICAgIDAsICAgIDg3LCAgICA5NSwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAg
MjAzLCAgICAgNCwgICAgIDgsICAgICA2LCAgICAgNywgICAgIDksICAgIDMwLCAgICAgMCwKKyAg
ICAgICAwLCAgICAgMCwgICAxNTIsICAgIDM3LCAgICAzNiwgICAgMzgsICAgIDM1LCAgICAgNSwg
ICAgMTEsICAgIDMxLAorICAgICAgMTMsICAgIDE4LCAgICAxOSwgICAgIDAsICAgICAwLCAgICAy
NCwgICAgIDAsICAgIDM5LCAgICAgMCwgICAgNDMsCisgICAgICA0NiwgICAgNDksICAgIDU0LCAg
ICA1NywgICAgNTksICAgIDYxLCAgICA2MywgICAgNjUsICAgIDY3LCAgICA2OSwKKyAgICAgIDg2
LCAgICAgMCwgICAgMjgsICAgIDkwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0NSwgICAgIDAs
ICAgICAwLAorICAgICAgIDAsICAgMjQ5LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgIDIyMywgICAyMzIsICAgMjM2LCAgICAzOSwg
ICAgNzEsICAgIDg0LCAgICAgMCwgICAyMTIsICAgICAwLCAgIDE0MSwKKyAgICAgMjE1LCAgIDIz
NCwgICAyMTQsICAgMjEzLCAgICAgMCwgICAyMTYsICAgMjE3LCAgIDIxOCwgICAyMTksICAgMjIw
LAorICAgICAyMjEsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAyMTEsICAg
MTIwLCAgICAgMCwgICAyMDksCisgICAgICAgMCwgICAyMDcsICAgICAwLCAgIDIwNCwgICAgMzIs
ICAgIDMzLCAgICAgMCwgICAgMTUsICAgIDE2LCAgICAgMCwKKyAgICAgICAwLCAgICAyMiwgICAg
MjEsICAgICAwLCAgIDE1NCwgICAgMjUsICAgIDI3LCAgICAzNCwgICAgIDAsICAgICAwLAogICAg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE1OSwKLSAgICAgMjA4LCAgICAgMCwgICAxNTUsICAg
MTU2LCAgIDE1MywgICAyNjYsICAgMjY1LCAgIDIzNiwgICAyNTcsICAgICAwLAotICAgICAyNjks
ICAgMjY3LCAgICAgMCwgICAgIDAsICAgICAwLCAgIDI1MCwgICAyNTMsICAgMjI4LCAgICAgMCwg
ICAgNzQsCi0gICAgICA3NSwgICAgNzcsICAgIDc2LCAgICA3OSwgICAgODAsICAgIDgxLCAgICA4
MiwgICAgODMsICAgIDc4LCAgICA3MywKLSAgICAgICAwLCAgICAgMCwgICAyNDMsICAgMjM5LCAg
IDI0MSwgICAgIDAsICAgICAwLCAgICAgMCwgICAxMTcsICAgICAwLAotICAgICAxMjAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgMjExLCAgICAgMCwgICAgOTEsICAgIDEwLCAgICAgMCwgICAgMTcs
Ci0gICAgICAyOSwgICAgMTQsICAgIDIwLCAgICAyNiwgICAgNDAsICAgIDQxLCAgICA0MiwgICAg
NDUsICAgIDQ0LCAgICA0NywKLSAgICAgIDQ4LCAgICA1MiwgICAgNTMsICAgIDUwLCAgICA1MSwg
ICAgNTUsICAgIDU2LCAgICA1OCwgICAgNjAsICAgIDYyLAotICAgICAgNjQsICAgIDY2LCAgICA2
OCwgICAgIDAsICAgMjA2LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAg
IDI2OCwgICAgIDAsICAgMjQ5LCAgICAgMCwgICAyMzAsICAgIDcyLCAgICA4NSwgICAgIDAsICAg
ICAwLCAgIDExNCwKLSAgICAgMTIxLCAgICAgMCwgICAyMTIsICAgICAwLCAgIDIxNCwgICAgIDAs
ICAgIDkyLCAgICAxMiwgICAgIDAsICAgICAwLAotICAgICAyMzUsICAgMjM3LCAgIDI2MCwgICAy
NTksICAgMjYyLCAgIDIzNiwgICAyNDcsICAgMjUxLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwg
ICAgIDAsICAgMTAyLCAgIDExNSwgICAgIDAsICAgMTIyLCAgIDIxNiwgICAgIDAsICAgIDcwLCAg
ICAgMCwKLSAgICAgMjYxLCAgICAgMCwgICAgIDAsICAgMjQ2LCAgIDI0NCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAyMzEsICAgMTE2LAotICAgICAgIDAsICAgICAwLCAgIDI2MywgICAgIDAsICAg
MjM2LCAgIDI0OCwgICAgIDAsICAgMjMzLCAgIDI1NCwgICAyMzIsCi0gICAgICA5MywgICAgIDAs
ICAgMjY0LCAgIDI1OCwgICAyNDUsICAgMjUyLCAgIDI1NgorICAgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE1MywgICAyMDIsCisgICAg
ICAgMCwgICAxNDksICAgMTUwLCAgIDE0NywgICAyNjAsICAgMjU5LCAgIDIzMCwgICAyNTEsICAg
ICAwLCAgIDI2MywKKyAgICAgMjYxLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDI0NCwgICAyNDcs
ICAgMjIyLCAgICAgMCwgICAgNzQsICAgIDc1LAorICAgICAgNzcsICAgIDc2LCAgICA3OSwgICAg
ODAsICAgIDgxLCAgICA4MiwgICAgODMsICAgIDc4LCAgICA3MywgICAgIDAsCisgICAgICAgMCwg
ICAyMzcsICAgMjMzLCAgIDIzNSwgICAgIDAsICAgICAwLCAgICAgMCwgICAxMTQsICAgICAwLCAg
IDExNywKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgMjA1LCAgICAgMCwgICAgOTEsICAgIDEw
LCAgICAgMCwgICAgMTcsICAgIDI5LAorICAgICAgMTQsICAgIDIwLCAgICAyNiwgICAgNDAsICAg
IDQxLCAgICA0MiwgICAgNDUsICAgIDQ0LCAgICA0NywgICAgNDgsCisgICAgICA1MiwgICAgNTMs
ICAgIDUwLCAgICA1MSwgICAgNTUsICAgIDU2LCAgICA1OCwgICAgNjAsICAgIDYyLCAgICA2NCwK
KyAgICAgIDY2LCAgICA2OCwgICAgIDAsICAgMjAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgMjYyLAorICAgICAgIDAsICAgMjQzLCAgICAgMCwgICAyMjQsICAgIDcyLCAg
ICA4NSwgICAxMDMsICAgICAwLCAgIDExMSwgICAxMTgsCisgICAgICAgMCwgICAyMDYsICAgICAw
LCAgIDIwOCwgICAgIDAsICAgIDkyLCAgICAxMiwgICAgIDAsICAgICAwLCAgIDIyOSwKKyAgICAg
MjMxLCAgIDI1NCwgICAyNTMsICAgMjU2LCAgIDIzMCwgICAyNDEsICAgMjQ1LCAgICAgMCwgICAg
IDAsICAgICAwLAorICAgICAgIDAsICAgMTEyLCAgICAgMCwgICAxMTksICAgMjEwLCAgICAgMCwg
ICAgNzAsICAgICAwLCAgIDI1NSwgICAgIDAsCisgICAgICAgMCwgICAyNDAsICAgMjM4LCAgICAg
MCwgICAgIDAsICAgICAwLCAgIDIyNSwgICAxMTMsICAgICAwLCAgICAgMCwKKyAgICAgMjU3LCAg
ICAgMCwgICAyMzAsICAgMjQyLCAgICAgMCwgICAyMjcsICAgMjQ4LCAgIDIyNiwgICAgOTMsICAg
ICAwLAorICAgICAyNTgsICAgMjUyLCAgIDIzOSwgICAyNDYsICAgMjUwCiB9OwogCiAgIC8qIFlZ
UEdPVE9bTlRFUk0tTlVNXS4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDE2IHl5cGdvdG9b
XSA9CiB7Ci0gICAgLTM2MSwgICAtMzksICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2
MSwgIC0zNjEsICAgIDczLCAgLTM2MSwKLSAgICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMTA3LCAg
LTM2MSwgICAtMTUsICAgLTIwLCAgIC02NywgICAtMTksICAgIDUzLAotICAgICAgNTQsICAgIDU1
LCAgICA1MSwgICAgNTcsICAgIDU4LCAgLTM2MSwgIC0xMTAsICAtMTMyLCAgLTM2MSwgIC0xNDYs
Ci0gICAgLTEyNSwgIC0zNjEsICAgICA2LCAgICAxMiwgIC0zNjEsICAtMzYxLCAgLTM2MSwgICAx
OTAsICAgMjI4LCAgIDIxNywKLSAgICAgMTk1LCAgLTM2MSwgIC0zNjEsICAtMzM2LCAgICAyNSwg
IC0zNjEsICAtMTA0LCAgICAyNywgICAtNTcsICAgMzIyLAotICAgIC0zNjEsICAtMzYxLCAgIDE0
MSwgICAgIDAsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTEwOSwgIC0xMzAsCi0gICAg
IDEwMCwgICAgMTksICAtMTg1LCAgIC0xNywgIC0xOTMsICAtMzEwLCAgIC02NSwgIC0zNjEsICAt
MzYxLCAgIC03MCwKLSAgICAtMzYwLCAgLTM2MSwgIC0zNjEsICAgLTkyLCAgICA0NiwgICAtMTMs
ICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLAotICAgIC0zNjEsICAgLTM4LCAgLTM2MSwgIC0z
NjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsCi0gICAgLTM2MSwg
ICAyNTksICAtMzYxLCAgLTM2MQorICAgIC0zNDgsICAgLTQwLCAgLTM0OCwgIC0zNDgsICAtMzQ4
LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgICAyOCwgIC0zNDgsCisgICAgLTM0OCwgIC0zNDgsICAt
MzQ4LCAgIC02MCwgIC0zNDgsICAgLTcyLCAgIC03MSwgIC0xMjcsICAgLTUyLCAgICAgOCwKKyAg
ICAgIDEyLCAgICAxNiwgICAgIDcsICAgIDEwLCAgICAxMSwgIC0zNDgsICAgLTg2LCAgLTEyMiwg
IC0zNDgsICAtMTMzLAorICAgICAtNzgsICAtMzQ4LCAgICAgOSwgICAgMTMsICAtMzQ4LCAgLTM0
OCwgIC0zNDgsICAgMTY5LCAgIDE3NywgICAxNzQsCisgICAgLTM0OCwgIC0zNDgsICAtMzI2LCAg
LTM0OCwgICAtNTksICAtMzQ4LCAgIC02OSwgIC0zNDgsICAgLTYxLCAgIDI2OCwKKyAgICAtMzQ4
LCAgLTM0OCwgICAgOTYsICAgICAwLCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0xMDAs
ICAtMTIwLAorICAgICAgNTcsICAgLTIzLCAgLTE0MCwgICAtNTcsICAtMTk4LCAgLTMyMiwgIC0x
MDUsICAtMzQ4LCAgLTM0OCwgIC0xMTAsCisgICAgLTM0NywgIC0zNDgsICAtMzQ4LCAgIC04OCwg
ICAgIDUsICAgLTQyLCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwKKyAgICAtMzQ4LCAgIC02
NywgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4
LAorICAgIC0zNDgsICAgMjE2LCAgLTM0OCwgIC0zNDgKIH07CiAKICAgLyogWVlERUZHT1RPW05U
RVJNLU5VTV0uICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eWRlZmdvdG9bXSA9CiB7
Ci0gICAgICAtMSwgICAyMzAsICAgMTU2LCAgIDE1NywgICAxNTgsICAgMzE4LCAgIDE1OSwgICAx
NjAsICAgMTYxLCAgIDE2MiwKLSAgICAgMTYzLCAgIDE2NCwgICAxNjUsICAgMjAyLCAgIDE2Nywg
ICAxNjgsICAgMTY5LCAgIDE3MCwgICAxNzEsICAgMTcyLAotICAgICAxNzMsICAgMTc0LCAgIDE3
NSwgICAxNzYsICAgMTc3LCAgIDE3OCwgICAyMDMsICAgMjA0LCAgIDMwMCwgICAyMDUsCi0gICAg
IDE4MCwgICAxMTEsICAgMjA2LCAgIDIwNywgICAgNjMsICAgIDY0LCAgICA2NSwgICAxMjgsICAg
MTAxLCAgIDEwMiwKLSAgICAgMTI5LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAxMDMs
ICAgIDcwLCAgICA3MSwgICAgNzIsICAgIDczLAotICAgICAgNzQsICAgMTIzLCAgIDEyNCwgICAx
ODEsICAgIDc2LCAgICA3NywgICAxODQsICAgMTIwLCAgIDE0MCwgICAxNDEsCi0gICAgIDIzMSwg
ICAyMzIsICAgMjI4LCAgIDIwOSwgICAyMTAsICAgMjExLCAgIDIxMiwgICAyODgsICAgMzgxLCAg
IDQwOCwKLSAgICAgMzQ1LCAgIDM0NiwgICAzNDcsICAgNDA5LCAgIDIxMywgICAyMTQsICAgMjE1
LCAgIDM5NCwgICAyMTYsICAgMzk1LAotICAgICAyMTcsICAgMzgwLCAgIDIxOCwgICAzNTMsICAg
Mjc3LCAgIDM0OCwgICAzNzQsICAgMzkxLCAgIDM5MiwgICAyMTksCi0gICAgICA3OCwgICAgNzks
ICAgIDgwLCAgICA5NAorICAgICAgLTEsICAgMjE5LCAgIDE0NywgICAxNDgsICAgMTQ5LCAgIDMw
NywgICAxNTAsICAgMTUxLCAgIDE1MiwgICAxNTMsCisgICAgIDE1NCwgICAxNTUsICAgMTU2LCAg
IDE5MywgICAxNTgsICAgMTU5LCAgIDE2MCwgICAxNjEsICAgMTYyLCAgIDE2MywKKyAgICAgMTY0
LCAgIDE2NSwgICAxNjYsICAgMTY3LCAgIDE2OCwgICAxNjksICAgMTk0LCAgIDE5NSwgICAyODks
ICAgMTk2LAorICAgICAxNzEsICAgMTA1LCAgIDE5NywgICAxOTgsICAgIDY0LCAgICA2NSwgICAg
NjYsICAgIDk0LCAgICA5NSwgICAgOTYsCisgICAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwg
ICAgNzEsICAgIDcyLCAgICA3MywgICAgNzQsICAgIDc1LCAgICA3NiwKKyAgICAgIDc3LCAgIDEx
NSwgICAxMTYsICAgMTcyLCAgICA3OSwgICAgODAsICAgMTc1LCAgIDExMiwgICAxMzEsICAgMTMy
LAorICAgICAyMjAsICAgMjIxLCAgIDIxNywgICAyMDAsICAgMjAxLCAgIDIwMiwgICAyMDMsICAg
Mjc3LCAgIDM3MCwgICAzOTYsCisgICAgIDMzNCwgICAzMzUsICAgMzM2LCAgIDM5NywgICAyMDQs
ICAgMjA1LCAgIDIwNiwgICAzODIsICAgMjA3LCAgIDM4MywKKyAgICAgMjA4LCAgIDM2OSwgICAy
MDksICAgMzQyLCAgIDI2NiwgICAzMzcsICAgMzYzLCAgIDM3OSwgICAzODAsICAgMjEwLAorICAg
ICAgODEsICAgIDgyLCAgICA4MywgICAgOTEKIH07CiAKICAgLyogWVlUQUJMRVtZWVBBQ1RbU1RB
VEUtTlVNXV0gLS0gV2hhdCB0byBkbyBpbiBzdGF0ZSBTVEFURS1OVU0uICBJZgpAQCAtOTU0LDMw
NyArOTcxLDMyMSBAQAogICAgICBudW1iZXIgaXMgdGhlIG9wcG9zaXRlLiAgSWYgWVlUQUJMRV9O
SU5GLCBzeW50YXggZXJyb3IuICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eXRhYmxl
W10gPQogewotICAgICAgNzUsICAgIDkxLCAgIDEyNiwgICAyMjcsICAgMjM3LCAgIDE3OSwgICAg
NjEsICAgMTM4LCAgIDE2NiwgICAyMjYsCi0gICAgIDIzNCwgICAxODMsICAgIDYyLCAgIDExMiwg
ICAzMTUsICAgMzkzLCAgIDEzOCwgICAzNzgsICAgIDk3LCAgIDI1MiwKLSAgICAgMzA0LCAgIDI1
MywgICAgOTIsICAgMjY3LCAgIDE3OSwgICAgIDcsICAgIDgzLCAgIDE2NiwgICAgODQsICAgMTA3
LAotICAgICAgODgsICAgIDg5LCAgIDI0NiwgICAyNTYsICAgMjU3LCAgIDM2NSwgICAxMzgsICAg
MzcxLCAgIDM3OCwgICAzMDgsCi0gICAgIDEzNCwgICAyMzUsICAgMjM2LCAgIDM2NiwgICA0MTQs
ICAgMTMwLCAgICA5MywgICAxMzUsICAgMjgyLCAgICA5OCwKLSAgICAgIDk5LCAgIDEwMCwgICAz
MTYsICAgMjM0LCAgIDEzOSwgICAxODYsICAgIDI3LCAgICAyOCwgICAyNjgsICAgIDI5LAotICAg
ICAyNDgsICAgMTg3LCAgICA5MCwgICAxMzksICAgIDk1LCAgIDEzMiwgICAgOTYsICAgIDM3LCAg
IDI1OCwgICAyNTksCi0gICAgICA3NSwgICAyODQsICAgIDk3LCAgIDExMywgICAxMzAsICAgMjcx
LCAgIDI0MywgICAxMjEsICAgIDc1LCAgIDEzOCwKLSAgICAgMTM4LCAgIDIyOSwgICAyNDQsICAg
MTM5LCAgICA2MSwgICAxMTksICAgMTc5LCAgIDQwNywgICAyMjMsICAgMTY2LAotICAgICAgNjIs
ICAgMjIwLCAgIDIyNywgICA0MDcsICAgMzE5LCAgIDIyNCwgICAxMDgsICAgMTE1LCAgIDMwNywg
ICAxMjIsCi0gICAgIDMxNywgICAxMTQsICAgIDc1LCAgICA5OCwgICAgOTksICAgMTAwLCAgIDMw
MSwgICAyMzgsICAgMjM5LCAgIDM3NSwKLSAgICAgMTE4LCAgICA3NSwgICAzMjMsICAgMTc5LCAg
IC05NiwgICAzMDEsICAgMTY2LCAgIDEzMywgICAxMDQsICAgMTI1LAotICAgICAgNzUsICAgMTA1
LCAgIDM0MywgICAzNzYsICAgMzYwLCAgIDIwOCwgICAxMzksICAgMTM5LCAgIDI0MCwgICAzMDEs
Ci0gICAgIDE4NSwgICAgNzUsICAgMjQxLCAgIDM0OSwgICAgIDIsICAgICAzLCAgICAgNCwgICAz
NTEsICAgIDc1LCAgIDEzNiwKLSAgICAgIDc1LCAgIDIzNCwgICAzMjQsICAgMzI1LCAgIDMyNiwg
ICAxNjYsICAgMTY2LCAgIDE2NiwgICAxNjYsICAgMTY2LAotICAgICAxNjYsICAgMTY2LCAgIDE2
NiwgICAxNjYsICAgMTY2LCAgIDE2NiwgICAxNjYsICAgMTY2LCAgIDE2NiwgICAxNjYsCi0gICAg
IDE2NiwgICAzMDQsICAgIDgzLCAgIDMwMSwgICAgODQsICAgNDExLCAgIDMwMiwgICAxMzgsICAg
MzU1LCAgIDM1NiwKLSAgICAgMTgyLCAgIDMwMSwgICAzMTMsICAgMzgzLCAgIC0yOSwgICAzMTQs
ICAgMzg1LCAgIDIyNywgICAzMDEsICAgMzEzLAotICAgICAzNTcsICAgMzUwLCAgIDM2MiwgICAg
NzUsICAgIDc1LCAgICA4NiwgICAgODcsICAgMzYzLCAgICAgNywgICAzMzEsCi0gICAgIDMzMiwg
ICAzMzMsICAgMzM0LCAgIDEwNiwgICAgODksICAgMTc5LCAgICA4OCwgICAgODksICAgMTY2LCAg
IDM5OSwKLSAgICAgMjYwLCAgIDI2MSwgICAxNzksICAgMjcyLCAgIDI3MywgICAxNjYsICAgMjQy
LCAgIDM3NywgICAgOTgsICAgIDk5LAotICAgICAxMDAsICAgMjU0LCAgIDI1NSwgICAyMDgsICAg
MTM5LCAgIDI0OSwgICAyNTAsICAgMjUxLCAgIDI0NywgICAgMjcsCi0gICAgICAyOCwgICA0MTUs
ICAgIDI5LCAgICA4MSwgICAzMDEsICAgMzY4LCAgIDIyNywgICAyNjMsICAgMzc3LCAgIDIyNywK
LSAgICAgIDM3LCAgICAzOCwgICAgMzksICAgICA3LCAgIDMyOSwgICAzMzAsICAgMzg4LCAgIDMy
NywgICAzMjgsICAgMjY0LAotICAgICAzODcsICAgMzM1LCAgIDMzNiwgICA0MDEsICAgMjYyLCAg
IDI2NSwgICAyNjYsICAgMjY5LCAgIDI3NSwgICAzNzksCi0gICAgIDI3NiwgICAyNzgsICAgMjI3
LCAgIDI3OSwgICAzNzAsICAgMTc5LCAgIDQxMiwgICAyODAsICAgMTY2LCAgIDI4MywKLSAgICAg
Mjg1LCAgIDI4NiwgICAtMjgsICAgMzA5LCAgICAyNywgICAgMjgsICAgMzEwLCAgICAyOSwgICAg
ODEsICAgMjg3LAotICAgICAzNzksICAgIDc1LCAgIDMwNSwgICAzMTIsICAgMjI3LCAgICAzNywg
ICAgMzgsICAgIDM5LCAgIDI4OSwgICAyOTAsCi0gICAgIDI5MSwgICAyOTIsICAgMjkzLCAgIDI5
NCwgICAyOTUsICAgMjk2LCAgIDI5NywgICAyOTgsICAgMjA4LCAgLTIzNCwKLSAgICAgLTIzLCAg
IDM1OCwgICAzNTIsICAgMzU5LCAgIDM2NywgICAzNjEsICAgLTMwLCAgIDI5OSwgICAzNjksICAg
MzAxLAotICAgICAgODIsICAgMzgyLCAgIDM4NCwgICAzODYsICAgMzg5LCAgIDQwMiwgICAzOTcs
ICAgMzk4LCAgIDQwMywgICA0MDAsCi0gICAgIDQwNCwgICA0MTAsICAgMTk5LCAgIDQxNiwgICAz
MjIsICAgMzM3LCAgIDM0MCwgICAzMzgsICAgNDA2LCAgIDMzOSwKLSAgICAgMTMxLCAgIDIyMSwg
ICAxMTIsICAgMzQxLCAgIDEyNywgICAzNDIsICAgMjIyLCAgICA4NSwgICAyNzQsICAgMzExLAot
ICAgICA0MDUsICAgMzcyLCAgIDM2NCwgICA0MTMsICAgMzU0LCAgIDM3MywgICAzOTAsICAgMTE3
LCAgICAgMCwgICAzOTYsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAyMDgsICAgMjA4LCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAs
ICAgMjA4LCAgIDIwOCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAg
NzgsICAgIDg4LCAgIDEwNiwgICAxMTgsICAgMjE2LCAgICA5OCwgICAyOTMsICAgIDk3LCAgIDIy
NiwgICAgNjIsCisgICAgIDEwNywgICAyMjMsICAgMTc0LCAgICA2MywgICAzNjAsICAgMjU2LCAg
IDM2NywgICAzODEsICAgMzA0LCAgIDM1NCwKKyAgICAgMTc3LCAgICA4OSwgICAxNzAsICAgIDg1
LCAgICA4NiwgICAgOTAsICAgMTc4LCAgIDM1NSwgICAxMDYsICAgMTAyLAorICAgICAgOTMsICAg
MTI1LCAgICA5OCwgICAyMzUsICAgIDk3LCAgICA5MiwgICAgOTgsICAgMzY3LCAgIDEyNiwgICAx
NzAsCisgICAgIDEwOCwgICAyNDUsICAgMjQ2LCAgIDEyNywgICAxMzAsICAgNDAyLCAgIDEyOSwg
ICAyMTUsICAgMTU3LCAgIDEyOCwKKyAgICAgMjU3LCAgIDEzMCwgICAyNzEsICAgMTI5LCAgIDIy
MywgICAgODcsICAgMzA1LCAgIDIxMiwgICAxMjIsICAgMTIzLAorICAgICAxMDYsICAgMjI3LCAg
IDIyOCwgICAzOTUsICAgMjEzLCAgIDE1NywgICAgNzgsICAgMTEzLCAgIDIxOCwgICAzOTUsCisg
ICAgIDEzMCwgICAgNzgsICAgMTI5LCAgIDI5NywgICAxMTQsICAgMjYwLCAgIDI0NywgICAyNDgs
ICAgMTE3LCAgIDIyNCwKKyAgICAgMjI1LCAgICA3OCwgICAyMjksICAgMjMyLCAgIDExMSwgICAg
OTksICAgMjMwLCAgIDEyNCwgICAxMDAsICAgMjMzLAorICAgICAgNjIsICAgMjE2LCAgIDI5MCwg
ICAgNzgsICAgIDYzLCAgIDI5MSwgICAzMDgsICAgIDc4LCAgIDIzNywgICAxNzMsCisgICAgIDMw
NiwgICAxNzAsICAgMzY0LCAgIDE3NiwgICAzNjUsICAgIDc4LCAgIDI5MCwgICAyMTEsICAgMjkw
LCAgIDI3MywKKyAgICAgMjkwLCAgIDMxMiwgICAgNzgsICAgMTMwLCAgIDEzMCwgICAxMjksICAg
MTI5LCAgIDE5OSwgICAzMjAsICAgMzIxLAorICAgICAzMjIsICAgMzIzLCAgIDM5OSwgICAtMjks
ICAgMzMyLCAgIDE3MCwgICAxNzAsICAgMTU3LCAgIDI5MCwgICAgNzgsCisgICAgIDI0MSwgICAg
NzgsICAgMjQyLCAgIDI5NCwgICAyOTYsICAgMzM4LCAgIDEwMSwgICAgODYsICAgMzAyLCAgIDM0
MCwKKyAgICAgMjIzLCAgIDMwMywgICAyMzEsICAgMjkwLCAgIDMwMiwgICAyOTMsICAgMzM5LCAg
IDM1MSwgICAgIDIsICAgICAzLAorICAgICAgIDQsICAgMTU3LCAgIDE1NywgICAyMzgsICAgMjM5
LCAgIDI0MCwgICAgODUsICAgIDg2LCAgIDM0OSwgICAyNDMsCisgICAgIDI0NCwgICAyNDksICAg
MjUwLCAgIDI2MSwgICAyNjIsICAgMjkwLCAgIDM1NywgICAzNDQsICAgMzQ1LCAgIDMxNiwKKyAg
ICAgMzE3LCAgIDIzNiwgICAzMTgsICAgMzE5LCAgICA3OCwgICAgNzgsICAgMjE2LCAgIDI1MSwg
ICAzMTMsICAgMzE0LAorICAgICAzMTUsICAgMTU3LCAgIDE1NywgICAxNTcsICAgMTU3LCAgIDE1
NywgICAxNTcsICAgMTU3LCAgIDE1NywgICAxNTcsCisgICAgIDE1NywgICAxNTcsICAgMTU3LCAg
IDE1NywgICAxNTcsICAgMTU3LCAgIDE1NywgICAzMjQsICAgMzI1LCAgIDEzMCwKKyAgICAgMjUy
LCAgIDEyOSwgICAyNTMsICAgMjU0LCAgIDE5OSwgICAyNTgsICAgMjU1LCAgIDM3MSwgICAyNjQs
ICAgMzY2LAorICAgICAzNzMsICAgMjY1LCAgIDI2NywgICAyNjgsICAgMjY5LCAgIDE3MCwgICAy
NzQsICAgMjk5LCAgIDI3MiwgICAyNzUsCisgICAgIDI3NiwgICAtMjgsICAgMzU4LCAgIDM1Miwg
ICAzMDEsICAgMjE2LCAgIC0yMywgIC0yMjgsICAgMjE2LCAgIDI5OCwKKyAgICAgMzY2LCAgIDM0
NiwgICAzODcsICAgMzQ3LCAgIDM0MSwgICAzNzYsICAgMzQ4LCAgIDM1NiwgICAzNTAsICAgMjkw
LAorICAgICAtMzAsICAgMTU3LCAgIDM3NCwgICAzNzcsICAgMzg5LCAgIDM3MiwgICAzODUsICAg
MzU5LCAgIDM5MCwgICAzODYsCisgICAgIDIxNiwgICAzOTEsICAgMzg4LCAgIDM5MiwgICA0MDMs
ICAgMTkwLCAgIDM5NCwgICA0MDAsICAgMzExLCAgIDMyNiwKKyAgICAgIDc4LCAgIDMyOSwgICAz
OTgsICAgNDA0LCAgIDMyNywgICAzMzAsICAgMTIwLCAgIDMzMSwgICAxNzAsICAgMzI4LAorICAg
ICAxMTksICAgMTIxLCAgIDIxNiwgICAgODQsICAgMjYzLCAgIDMwMCwgICAzNzUsICAgMTk5LCAg
IDM5MywgICAzNTMsCisgICAgIDM2MSwgICA0MDEsICAgMzQzLCAgIDM2OCwgICAyNzgsICAgMjc5
LCAgIDI4MCwgICAyODEsICAgMjgyLCAgIDI4MywKKyAgICAgMjg0LCAgIDI4NSwgICAyODYsICAg
Mjg3LCAgIDE1NywgICAzNjIsICAgMzc4LCAgIDExMCwgICAgIDAsICAgMTA2LAorICAgICAgIDAs
ICAgICAwLCAgICAgMCwgICAyODgsICAgMzY4LCAgICAgMCwgICAgIDAsICAgMTA3LCAgICAgMCwg
ICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
IDIwOCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDc1LAorICAgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMzg0LCAgICAgMCwgICAgIDAs
CisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE5OSwgICAx
OTksICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAxOTksICAgMTk5LCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAyMDgsICAg
ICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgMjA4LCAgICAgMSwgICAgIDIs
ICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LAotICAgICAgIDcsICAgICA4LCAgICAgOSwgICAg
MTAsICAgIDExLCAgIDE4OCwgICAxODksICAgMTkwLCAgICAgMCwgICAxOTEsCi0gICAgIDE5Miwg
ICAxOTMsICAgMTk0LCAgIDE5NSwgICAxOTYsICAgMTk3LCAgICAxMiwgICAgMTMsICAgIDE0LCAg
ICAxNSwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgMTk5LCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgNzgsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgMTk5LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwK
KyAgICAgICAwLCAgIDE5OSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAg
NiwgICAgIDcsICAgICA4LAorICAgICAgIDksICAgIDEwLCAgICAxMSwgICAxNzksICAgMTgwLCAg
IDE4MSwgICAgIDAsICAgMTgyLCAgIDE4MywgICAxODQsCisgICAgIDE4NSwgICAxODYsICAgMTg3
LCAgIDE4OCwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywKKyAgICAg
IDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAg
MjYsICAgIDI3LAorICAgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywg
ICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsCisgICAgICAzOCwgICAgMzksICAgIDQwLCAgICA0
MSwgICAgNDIsICAgMTg5LCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwKKyAgICAgIDQ3LCAg
ICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAg
IDU2LAorICAgICAgIDAsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgIDEzMywgICAgNjEs
ICAgMTM0LCAgIDEzNSwgICAxMzYsCisgICAgIDEzNywgICAxMzgsICAgICAwLCAgICAgMCwgICAx
MzksICAgMTQwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAor
ICAgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDEsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTkw
LCAgIDE5MSwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgIDE5MiwgICAxNDMsICAg
MTQ0LCAgIDE0NSwgICAxNDYsICAgICAxLCAgICAgMiwKKyAgICAgICAzLCAgICAgNCwgICAgIDUs
ICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgMTc5LAorICAgICAx
ODAsICAgMTgxLCAgICAgMCwgICAxODIsICAgMTgzLCAgIDE4NCwgICAxODUsICAgMTg2LCAgIDE4
NywgICAxODgsCisgICAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAg
ICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwKKyAgICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1
LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLAorICAgICAgMzIsICAg
IDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAg
NDEsCisgICAgICA0MiwgICAxODksICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0Nywg
ICAgNDgsICAgIDQ5LCAgICA1MCwKKyAgICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1
NSwgICAgNTYsICAgICAwLCAgICA1NywgICAgNTgsICAgIDU5LAorICAgICAgNjAsICAgMTMzLCAg
ICA2MSwgICAxMzQsICAgMTM1LCAgIDEzNiwgICAxMzcsICAgMTM4LCAgICAgMCwgICAgIDAsCisg
ICAgIDEzOSwgICAxNDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQxLAorICAgICAgIDAsICAgICAwLCAgICAgMCwg
ICAxOTAsICAgMjkyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxOTIsCisgICAgIDE0
MywgICAxNDQsICAgMTQ1LCAgIDE0NiwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1
LCAgICAgNiwKKyAgICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAxNzksICAg
MTgwLCAgIDE4MSwgICAgIDAsICAgMTgyLAorICAgICAxODMsICAgMTg0LCAgIDE4NSwgICAxODYs
ICAgMTg3LCAgIDE4OCwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsCiAgICAgICAxNiwgICAg
MTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAy
NSwKLSAgICAgIDI2LCAgICAyNywgICAgMjgsICAgICAwLCAgICAyOSwgICAgMzAsICAgIDMxLCAg
ICAzMiwgICAgMzMsICAgIDM0LAotICAgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5
LCAgICA0MCwgICAgNDEsICAgMTk4LCAgICA0MiwgICAgNDMsCi0gICAgICA0NCwgICAgNDUsICAg
IDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywKLSAg
ICAgIDU0LCAgICA1NSwgICAgIDAsICAgIDU2LCAgICA1NywgICAgNTgsICAgIDU5LCAgIDE0Miwg
ICAgNjAsICAgMTQzLAotICAgICAxNDQsICAgMTQ1LCAgIDE0NiwgICAxNDcsICAgICAwLCAgICAg
MCwgICAxNDgsICAgMTQ5LCAgICAgMCwgICAgIDAsCisgICAgICAyNiwgICAgMjcsICAgIDI4LCAg
ICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwKKyAgICAgIDM2
LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgIDE4OSwgICAgNDMs
ICAgIDQ0LAorICAgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAg
NTEsICAgIDUyLCAgICA1MywgICAgNTQsCisgICAgICA1NSwgICAgNTYsICAgICAwLCAgICA1Nywg
ICAgNTgsICAgIDU5LCAgICA2MCwgICAxMzMsICAgIDYxLCAgIDEzNCwKKyAgICAgMTM1LCAgIDEz
NiwgICAxMzcsICAgMTM4LCAgICAgMCwgICAgIDAsICAgMTM5LCAgIDE0MCwgICAgIDAsICAgICAw
LAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgMTUwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE5OSwKLSAgICAgMjAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAyMDEsICAgMTUyLCAgIDE1MywgICAxNTQsICAgMTU1LAorICAg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0MSwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAxOTAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTky
LCAgIDE0MywgICAxNDQsICAgMTQ1LCAgIDE0NiwKICAgICAgICAxLCAgICAgMiwgICAgIDMsICAg
ICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLAotICAgICAgMTEs
ICAgMTg4LCAgIDE4OSwgICAxOTAsICAgICAwLCAgIDE5MSwgICAxOTIsICAgMTkzLCAgIDE5NCwg
ICAxOTUsCi0gICAgIDE5NiwgICAxOTcsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAx
NiwgICAgMTcsICAgIDE4LCAgICAxOSwKLSAgICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAg
ICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgICAwLAotICAgICAgMjksICAgIDMw
LCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgs
Ci0gICAgICAzOSwgICAgNDAsICAgIDQxLCAgIDE5OCwgICAgNDIsICAgIDQzLCAgICA0NCwgICAg
NDUsICAgIDQ2LCAgICA0NywKLSAgICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1Miwg
ICAgNTMsICAgIDU0LCAgICA1NSwgICAgIDAsICAgIDU2LAotICAgICAgNTcsICAgIDU4LCAgICA1
OSwgICAxNDIsICAgIDYwLCAgIDE0MywgICAxNDQsICAgMTQ1LCAgIDE0NiwgICAxNDcsCi0gICAg
ICAgMCwgICAgIDAsICAgMTQ4LCAgIDE0OSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwKKyAgICAgIDExLCAgIDE3OSwgICAxODAsICAgMTgxLCAgICAgMCwgICAxODIs
ICAgMTgzLCAgIDE4NCwgICAxODUsICAgMTg2LAorICAgICAxODcsICAgMTg4LCAgICAxMiwgICAg
MTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksCisgICAgICAyMCwg
ICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAg
ICAyOSwKKyAgICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2
LCAgICAzNywgICAgMzgsICAgIDM5LAorICAgICAgNDAsICAgIDQxLCAgICA0MiwgICAxODksICAg
IDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsCisgICAgICA0OSwgICAgNTAs
ICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYsICAgICAwLCAgICA1NywK
KyAgICAgIDU4LCAgICA1OSwgICAgNjAsICAgMTMzLCAgICA2MSwgICAxMzQsICAgMTM1LCAgIDEz
NiwgICAxMzcsICAgMTM4LAorICAgICAgIDAsICAgICAwLCAgIDEzOSwgICAxNDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAg
ICAwLCAgIDE1MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxOTksICAgMzAzLCAgICAgMCwgICAg
IDAsICAgICAwLAotICAgICAgIDAsICAgMjAxLCAgIDE1MiwgICAxNTMsICAgMTU0LCAgIDE1NSwg
ICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsCi0gICAgICAgNSwgICAgIDYsICAgICA3LCAgICAg
OCwgICAgIDksICAgIDEwLCAgICAxMSwgICAxODgsICAgMTg5LCAgIDE5MCwKLSAgICAgICAwLCAg
IDE5MSwgICAxOTIsICAgMTkzLCAgIDE5NCwgICAxOTUsICAgMTk2LCAgIDE5NywgICAgMTIsICAg
IDEzLAorICAgICAgIDAsICAgMTQxLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDExNywgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAxOTIsICAgMTQzLCAgIDE0NCwgICAx
NDUsICAgMTQ2LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwKKyAgICAgICA1LCAgICAgNiwg
ICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgIDE3OSwgICAxODAsICAgMTgxLAor
ICAgICAgIDAsICAgMTgyLCAgIDE4MywgICAxODQsICAgMTg1LCAgIDE4NiwgICAxODcsICAgMTg4
LCAgICAxMiwgICAgMTMsCiAgICAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAg
IDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywKLSAgICAgIDI0LCAgICAyNSwgICAgMjYs
ICAgIDI3LCAgICAyOCwgICAgIDAsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLAotICAgICAg
MzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0
MSwgICAxOTgsCi0gICAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAg
ICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwKLSAgICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1
LCAgICAgMCwgICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTksICAgMTQyLAotICAgICAgNjAsICAg
MTQzLCAgIDE0NCwgICAxNDUsICAgMTQ2LCAgIDE0NywgICAgIDAsICAgICAwLCAgIDE0OCwgICAx
NDksCisgICAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwg
ICAgMzEsICAgIDMyLCAgICAzMywKKyAgICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAz
OCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgMTg5LAorICAgICAgNDMsICAgIDQ0LCAg
ICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsCisg
ICAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAgIDAsICAgIDU3LCAgICA1OCwgICAgNTks
ICAgIDYwLCAgIDEzMywKKyAgICAgIDYxLCAgIDEzNCwgICAxMzUsICAgMTM2LCAgIDEzNywgICAx
MzgsICAgICAwLCAgICAgMCwgICAxMzksICAgMTQwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNTAsICAgICAw
LCAgICAgMCwKLSAgICAgICAwLCAgIDE5OSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgIDIwMSwgICAxNTIsICAgMTUzLAotICAgICAxNTQsICAgMTU1LCAgICAgMSwgICAgIDIs
ICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsCi0gICAgICAgOSwgICAg
MTAsICAgIDExLCAgIDE4OCwgICAxODksICAgMTkwLCAgICAgMCwgICAxOTEsICAgMTkyLCAgIDE5
MywKLSAgICAgMTk0LCAgIDE5NSwgICAxOTYsICAgMTk3LCAgICAxMiwgICAgMTMsICAgIDE0LCAg
ICAxNSwgICAgMTYsICAgIDE3LAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgMTQxLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxOTIsICAgMTQzLCAgIDE0NCwKKyAg
ICAgMTQ1LCAgIDE0NiwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwg
ICAgIDcsICAgICA4LAorICAgICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywKICAgICAgIDE4
LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYs
ICAgIDI3LAotICAgICAgMjgsICAgICAwLCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAg
MzMsICAgIDM0LCAgICAzNSwgICAgMzYsCi0gICAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwg
ICAgNDEsICAgMTk4LCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwKLSAgICAgIDQ2LCAgICA0
NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1
LAotICAgICAgIDAsICAgIDU2LCAgICA1NywgICAgNTgsICAgIDU5LCAgIDE0MiwgICAgNjAsICAg
MTQzLCAgIDE0NCwgICAxNDUsCi0gICAgIDE0NiwgICAxNDcsICAgICAwLCAgICAgMCwgICAxNDgs
ICAgMTQ5LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAg
ICAgIDAsICAgICAwLCAgICAgMCwgICAxNTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTI1LCAg
ICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgIDIwMSwgICAxNTIsICAgMTUz
LCAgIDE1NCwgICAxNTUsICAgICAxLCAgICAgMiwKLSAgICAgICAzLCAgICAgNCwgICAgIDUsICAg
ICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgMTg4LAotICAgICAxODks
ICAgMTkwLCAgICAgMCwgICAxOTEsICAgMTkyLCAgIDE5MywgICAxOTQsICAgMTk1LCAgIDE5Niwg
ICAxOTcsCi0gICAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAx
OCwgICAgMTksICAgIDIwLCAgICAyMSwKLSAgICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAg
ICAyNiwgICAgMjcsICAgIDI4LCAgICAgMCwgICAgMjksICAgIDMwLAorICAgICAgMjgsICAgIDI5
LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcs
CisgICAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgICAwLCAgICA0MywgICAg
NDQsICAgIDQ1LCAgICA0NiwKKyAgICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwg
ICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgIDU2LAorICAgICAgIDAsICAgIDU3LCAgICA1
OCwgICAgNTksICAgIDYwLCAgIDEzMywgICAgNjEsICAgMTM0LCAgIDEzNSwgICAxMzYsCisgICAg
IDEzNywgICAxMzgsICAgICAwLCAgICAgMCwgICAxMzksICAgMTQwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAxLAorICAgICAgIDIsICAgICAzLCAgICAgNCwgICAx
NDEsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsCisgICAgICAgMCwg
ICAgIDAsICAgICAwLCAgIDE5MiwgICAxNDMsICAgMTQ0LCAgIDE0NSwgICAxNDYsICAgICAwLCAg
ICAgMCwKKyAgICAgICAwLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3
LCAgICAxOCwgICAgMTksICAgIDIwLAorICAgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAg
IDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsCiAgICAgICAzMSwgICAgMzIs
ICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwK
LSAgICAgIDQxLCAgIDE5OCwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0
NywgICAgNDgsICAgIDQ5LAotICAgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAg
ICA1NSwgICAgIDAsICAgIDU2LCAgICA1NywgICAgNTgsCi0gICAgICA1OSwgICAxNDIsICAgIDYw
LCAgIDE0MywgICAxNDQsICAgMTQ1LCAgIDE0NiwgICAxNDcsICAgICAwLCAgICAgMCwKLSAgICAg
MTQ4LCAgIDE0OSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAxNTAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDIwMSwKLSAgICAgMTUyLCAg
IDE1MywgICAxNTQsICAgMTU1LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsICAg
ICA2LAotICAgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwKLSAgICAgIDE2LCAgICAxNywg
ICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LAot
ICAgICAgMjYsICAgIDI3LCAgICAyOCwgICAgIDAsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMy
LCAgICAzMywgICAgMzQsCi0gICAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAg
IDQwLCAgICA0MSwgICAgIDAsICAgIDQyLCAgICA0MywKLSAgICAgIDQ0LCAgICA0NSwgICAgNDYs
ICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLAotICAgICAg
NTQsICAgIDU1LCAgICAgMCwgICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTksICAgMTQyLCAgICA2
MCwgICAxNDMsCi0gICAgIDE0NCwgICAxNDUsICAgMTQ2LCAgIDE0NywgICAgIDAsICAgICAwLCAg
IDE0OCwgICAxNDksICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAg
MTM3LCAgICAgMiwgICAgIDMsICAgICA0LCAgIDE1MCwgICAgIDYsICAgICA3LCAgICAgOCwgICAg
IDksCi0gICAgICAxMCwgICAgMTEsICAgICAwLCAgICAgMCwgICAgIDAsICAgMjAxLCAgIDE1Miwg
ICAxNTMsICAgMTU0LCAgIDE1NSwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgIDEyLCAgICAx
MywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LAotICAgICAgMTksICAgIDIwLCAg
ICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsCi0g
ICAgICAgMCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUs
ICAgIDM2LCAgICAzNywKLSAgICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICAgMCwgICAg
NDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LAotICAgICAgNDcsICAgIDQ4LCAgICA0OSwg
ICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgIDAsCi0gICAgICA1
NiwgICAgNTcsICAgIDU4LCAgICA1OSwgICAxNDIsICAgIDYwLCAgIDE0MywgICAxNDQsICAgMTQ1
LCAgIDE0NiwKLSAgICAgMTQ3LCAgICAgMCwgICAgIDAsICAgMTQ4LCAgIDE0OSwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAyLCAgICAgMywgICAgIDQsCi0gICAgICAgMCwgICAg
IDAsICAgMTUwLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAwLCAgICAg
MCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgMTUyLCAgIDE1MywgICAxNTQsICAgMTU1LCAg
ICAgMCwgICAgMTIsICAgIDEzLAorICAgICAgNDEsICAgIDQyLCAgICAgMCwgICAgNDMsICAgIDQ0
LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksCisgICAgICA1MCwgICAgNTEsICAg
IDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAgIDAsICAgIDU3LCAgICA1OCwKKyAg
ICAgIDU5LCAgICA2MCwgICAxMzMsICAgIDYxLCAgIDEzNCwgICAxMzUsICAgMTM2LCAgIDEzNywg
ICAxMzgsICAgICAwLAorICAgICAgIDAsICAgMTM5LCAgIDE0MCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwKKyAgICAgMTQx
LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAgMCwgICAgIDAs
ICAgICAwLAorICAgICAgIDAsICAgMTQzLCAgIDE0NCwgICAxNDUsICAgMTQ2LCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAxMiwgICAgMTMsCiAgICAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywg
ICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywKLSAgICAgIDI0LCAgICAy
NSwgICAgMjYsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMzEsICAgIDMy
LAotICAgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgICAwLCAgICAgMCwgICAgIDAsICAg
IDQwLCAgICA0MSwgICAgIDAsCi0gICAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYs
ICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwKLSAgICAgIDUyLCAgICA1MywgICAg
NTQsICAgIDU1LCAgICAgMCwgICAgNTYsICAgIDU3LCAgICA1OCwgICAgIDAsICAgMTA5LAotICAg
ICAgNjAsICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgICAwLCAg
ICAgMCwgICAgIDAsCisgICAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5
LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywKKyAgICAgIDM0LCAgICAzNSwgICAgMzYsICAg
IDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgICAwLAorICAgICAgNDMs
ICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwg
ICAgNTIsCisgICAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAgIDAsICAgIDU3LCAgICA1
OCwgICAgNTksICAgIDYwLCAgIDEwMywKKyAgICAgIDYxLCAgICAgMCwgICAgIDAsICAgICA4LCAg
ICAgOSwgICAgMTAsICAgIDExLCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMiwgICAgMTMs
CiAgICAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAg
MjEsICAgIDIyLCAgICAyMywKLSAgICAgIDI0LCAgICAyNSwgICAgMjYsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgIDExMCwgICAgMzEsICAgIDMyLAotICAgICAgMzMsICAgIDM0LCAgICAz
NSwgICAgMzYsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDQwLCAgICA0MSwgICAgIDAsCi0gICAg
ICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAg
IDUwLCAgICA1MSwKLSAgICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICAgMCwgICAgNTYs
ICAgIDU3LCAgICA1OCwgICAgIDAsICAgMTQyLAotICAgICAgNjAsICAgMTQzLCAgIDE0NCwgICAx
NDUsICAgMTQ2LCAgIDE0NywgICAgIDAsICAgICAwLCAgIDE0OCwgICAxNDksCisgICAgICAyNCwg
ICAgMjUsICAgIDI2LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxMDQsICAgIDMyLCAg
ICAzMywKKyAgICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAgMCwgICAgIDAsICAgICAw
LCAgICA0MSwgICAgNDIsICAgICAwLAorICAgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAg
IDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsCisgICAgICA1MywgICAgNTQs
ICAgIDU1LCAgICA1NiwgICAgIDAsICAgIDU3LCAgICA1OCwgICAgNTksICAgICAwLCAgIDEzMywK
KyAgICAgIDYxLCAgIDEzNCwgICAxMzUsICAgMTM2LCAgIDEzNywgICAxMzgsICAgICAwLCAgICAg
MCwgICAxMzksICAgMTQwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNTAsICAgICAwLCAgICAgMCwKLSAgICAg
MTUxLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAwLCAgICAgMCwgICAx
NTIsICAgMTUzLAotICAgICAxNTQsICAgMTU1LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDEsICAgICAwLCAgICAgMCwKKyAgICAgMTQyLCAg
ICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDMsICAg
MTQ0LAorICAgICAxNDUsICAgMTQ2LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTIs
ICAgIDEzLCAgICAxNCwgICAgMTUsCiAgICAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAg
MjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwKLSAgICAgIDI2LCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LAot
ICAgICAgMzUsICAgIDM2LCAgICAgMCwgICAgIDAsICAgICAwLCAgICA0MCwgICAgNDEsICAgICAw
LCAgICA0MiwgICAgNDMsCi0gICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAg
IDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywKLSAgICAgIDU0LCAgICA1NSwgICAgIDAs
ICAgIDU2LCAgICA1NywgICAgNTgsICAgICAwLCAgIDE0MiwgICAgNjAsICAgMTQzLAotICAgICAx
NDQsICAgMTQ1LCAgIDE0NiwgICAxNDcsICAgICAwLCAgICAgMCwgICAxNDgsICAgMTQ5LCAgICAg
MCwgICAgIDAsCisgICAgICAyNiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwKKyAgICAgIDM2LCAgICAzNywgICAgIDAsICAgICAw
LCAgICAgMCwgICAgNDEsICAgIDQyLCAgICAgMCwgICAgNDMsICAgIDQ0LAorICAgICAgNDUsICAg
IDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAg
NTQsCisgICAgICA1NSwgICAgNTYsICAgICAwLCAgICA1NywgICAgNTgsICAgIDU5LCAgICAgMCwg
ICAxMzMsICAgIDYxLCAgIDEzNCwKKyAgICAgMTM1LCAgIDEzNiwgICAxMzcsICAgMTM4LCAgICAg
MCwgICAgIDAsICAgMTM5LCAgIDE0MCwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0g
ICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTUwLCAgICAgMCwgICAgIDAs
ICAgMjI1LCAgICAgOCwKLSAgICAgICA5LCAgICAxMCwgICAgMTEsICAgICAwLCAgICAgMCwgICAg
IDAsICAgMTUyLCAgIDE1MywgICAxNTQsICAgMTU1LAorICAgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgIDE0MSwgICAgIDAsICAgICAwLCAgIDIxNCwgICAgIDgsCisgICAgICAg
OSwgICAgMTAsICAgIDExLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0MywgICAxNDQsICAgMTQ1
LCAgIDE0NiwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMiwgICAgMTMsICAg
IDE0LCAgICAxNSwgICAgMTYsICAgIDE3LAogICAgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEs
ICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgIDAsCi0gICAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAz
NiwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgIDQwLCAgICA0MSwgICAgIDAsICAgIDQyLCAg
ICA0MywgICAgNDQsICAgIDQ1LAotICAgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUw
LCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsCi0gICAgICAgMCwgICAgNTYsICAg
IDU3LCAgICA1OCwgICAgIDAsICAgMTQyLCAgICA2MCwgICAxNDMsICAgMTQ0LCAgIDE0NSwKLSAg
ICAgMTQ2LCAgIDE0NywgICAgIDAsICAgICAwLCAgIDE0OCwgICAxNDksICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDMyLCAgICAz
MywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAg
ICA0MSwgICAgNDIsICAgICAwLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwKKyAgICAgIDQ3
LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUs
ICAgIDU2LAorICAgICAgIDAsICAgIDU3LCAgICA1OCwgICAgNTksICAgICAwLCAgIDEzMywgICAg
NjEsICAgMTM0LCAgIDEzNSwgICAxMzYsCisgICAgIDEzNywgICAxMzgsICAgICAwLCAgICAgMCwg
ICAxMzksICAgMTQwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKICAgICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAxNTAsICAgICA4LCAgICAgOSwgICAgMTAsICAg
IDExLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgIDI4MSwgICAxNTIs
ICAgMTUzLCAgIDE1NCwgICAxNTUsICAgICAwLCAgICAxMiwKKyAgICAgICAwLCAgICAgMCwgICAg
IDAsICAgMTQxLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAwLAorICAg
ICAgIDAsICAgICAwLCAgICAgMCwgICAyNzAsICAgMTQzLCAgIDE0NCwgICAxNDUsICAgMTQ2LCAg
ICAgMCwgICAgMTIsCiAgICAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4
LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwKLSAgICAgIDIzLCAgICAyNCwgICAgMjUsICAg
IDI2LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDMxLAotICAgICAgMzIs
ICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAgMCwgICAgIDAsICAgICAwLCAgICA0MCwg
ICAgNDEsCi0gICAgICAgMCwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0
NywgICAgNDgsICAgIDQ5LCAgICA1MCwKLSAgICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAg
ICA1NSwgICAgIDAsICAgIDU2LCAgICA1NywgICAgNTgsICAgICAwLAotICAgICAxNDIsICAgIDYw
LCAgIDE0MywgICAxNDQsICAgMTQ1LCAgIDE0NiwgICAxNDcsICAgICAwLCAgICAgMCwgICAxNDgs
Ci0gICAgIDE0OSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAxNTAsICAgICAwLAotICAgICAgIDAsICAgMzA2LCAgICAg
OCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNTIsCi0gICAg
IDE1MywgICAxNTQsICAgMTU1LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTIsICAg
IDEzLCAgICAxNCwKKyAgICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDMyLAorICAgICAgMzMsICAgIDM0LCAgICAzNSwgICAg
MzYsICAgIDM3LCAgICAgMCwgICAgIDAsICAgICAwLCAgICA0MSwgICAgNDIsCisgICAgICAgMCwg
ICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAg
ICA1MSwKKyAgICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAgIDAsICAgIDU3
LCAgICA1OCwgICAgNTksICAgICAwLAorICAgICAxMzMsICAgIDYxLCAgIDEzNCwgICAxMzUsICAg
MTM2LCAgIDEzNywgICAxMzgsICAgICAwLCAgICAgMCwgICAxMzksCisgICAgIDE0MCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwK
KyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAxNDEsICAgICAwLAorICAgICAgIDAsICAgMjk1LCAgICAgOCwgICAgIDksICAgIDEwLCAg
ICAxMSwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDMsCisgICAgIDE0NCwgICAxNDUsICAgMTQ2
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTIsICAgIDEzLCAgICAxNCwKICAgICAg
IDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAg
MjMsICAgIDI0LAotICAgICAgMjUsICAgIDI2LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgIDMxLCAgICAzMiwgICAgMzMsCi0gICAgICAzNCwgICAgMzUsICAgIDM2LCAgICAg
MCwgICAgIDAsICAgICAwLCAgICA0MCwgICAgNDEsICAgICAwLCAgICA0MiwKLSAgICAgIDQzLCAg
ICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAg
IDUyLAotICAgICAgNTMsICAgIDU0LCAgICA1NSwgICAgIDAsICAgIDU2LCAgICA1NywgICAgNTgs
ICAgICAwLCAgIDE0MiwgICAgNjAsCi0gICAgIDE0MywgICAxNDQsICAgMTQ1LCAgIDE0NiwgICAx
NDcsICAgICAwLCAgICAgMCwgICAxNDgsICAgMTQ5LCAgICAgMCwKKyAgICAgIDI1LCAgICAyNiwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAzMiwgICAgMzMsICAgIDM0LAor
ICAgICAgMzUsICAgIDM2LCAgICAzNywgICAgIDAsICAgICAwLCAgICAgMCwgICAgNDEsICAgIDQy
LCAgICAgMCwgICAgNDMsCisgICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAg
IDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywKKyAgICAgIDU0LCAgICA1NSwgICAgNTYs
ICAgICAwLCAgICA1NywgICAgNTgsICAgIDU5LCAgICAgMCwgICAxMzMsICAgIDYxLAorICAgICAx
MzQsICAgMTM1LCAgIDEzNiwgICAxMzcsICAgMTM4LCAgICAgMCwgICAgIDAsICAgMTM5LCAgIDE0
MCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgMTUwLCAgICAgOCwgICAgIDksICAgIDEwLAotICAgICAgMTEsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTUyLCAgIDE1MywgICAx
NTQsCi0gICAgIDE1NSwgICAgIDAsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwg
ICAgMTcsICAgIDE4LCAgICAxOSwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgMTQxLCAgICAgOCwgICAgIDksICAgIDEwLAorICAgICAgMTEsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQzLCAgIDE0NCwgICAxNDUsCisg
ICAgIDE0NiwgICAgIDAsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcs
ICAgIDE4LCAgICAxOSwKICAgICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAg
MjUsICAgIDI2LCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAzMSwg
ICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAgMCwgICAgIDAsCi0gICAgICAg
MCwgICAgNDAsICAgMjQ1LCAgICAgMCwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2
LCAgICA0NywKLSAgICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAg
IDU0LCAgICA1NSwgICAgIDAsICAgIDU2LAotICAgICAgNTcsICAgIDU4LCAgICAgMCwgICAxNDIs
ICAgIDYwLCAgIDE0MywgICAxNDQsICAgMTQ1LCAgIDE0NiwgICAxNDcsCi0gICAgICAgMCwgICAg
IDAsICAgMTQ4LCAgIDE0OSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
IDEzNywgICAgIDIsICAgICAzLAotICAgICAgIDQsICAgMTUwLCAgICAgNiwgICAgIDcsICAgICA4
LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAg
MTUyLCAgIDE1MywgICAxNTQsICAgMTU1LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMiwKKyAg
ICAgICAwLCAgICAgMCwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywg
ICAgIDAsICAgICAwLAorICAgICAgIDAsICAgIDQxLCAgIDIzNCwgICAgIDAsICAgIDQzLCAgICA0
NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsCisgICAgICA0OSwgICAgNTAsICAgIDUxLCAg
ICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYsICAgICAwLCAgICA1NywKKyAgICAgIDU4
LCAgICA1OSwgICAgIDAsICAgMTMzLCAgICA2MSwgICAxMzQsICAgMTM1LCAgIDEzNiwgICAxMzcs
ICAgMTM4LAorICAgICAgIDAsICAgICAwLCAgIDEzOSwgICAxNDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDEsICAgICAyLCAgICAgMywKKyAgICAgICA0LCAgIDE0
MSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAw
LAorICAgICAgIDAsICAgICAwLCAgIDE0MywgICAxNDQsICAgMTQ1LCAgIDE0NiwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgMTIsCiAgICAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcs
ICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwKLSAgICAgIDIzLCAgICAyNCwgICAg
MjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgICAwLCAgICAyOSwgICAgMzAsICAgIDMxLAotICAg
ICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAg
ICA0MCwgICAgNDEsCi0gICAgICAgMCwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2
LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwKLSAgICAgIDUxLCAgICA1MiwgICAgNTMsICAg
IDU0LCAgICA1NSwgICAgIDAsICAgIDU2LCAgICA1NywgICAgNTgsICAgIDU5LAotICAgICAgIDAs
ICAgIDYwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgMTM3LCAgICAgMiwgICAgIDMsICAgICA0LCAgICAg
MCwgICAgIDYsICAgICA3LCAgICAgOCwKKyAgICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAg
ICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLAorICAgICAgMzMsICAgIDM0
LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIs
CisgICAgICAgMCwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAg
NDksICAgIDUwLCAgICA1MSwKKyAgICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1Niwg
ICAgIDAsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLAorICAgICAgIDAsICAgIDYxLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAg
ICAgMCwgICAgIDAsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwgICAgIDYsICAg
ICA3LCAgICAgOCwKICAgICAgICA5LCAgICAxMCwgICAgMTEsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAy
MzMsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsCisgICAgICAgMCwg
ICAgIDAsICAgICAwLCAgIDIyMiwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAg
ICAxNywKICAgICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0
LCAgICAyNSwgICAgMjYsICAgIDI3LAotICAgICAgMjgsICAgICAwLCAgICAyOSwgICAgMzAsICAg
IDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsCi0gICAgICAzNywgICAgMzgs
ICAgIDM5LCAgICA0MCwgICAgNDEsICAgICAwLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwK
LSAgICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1
MywgICAgNTQsICAgIDU1LAotICAgICAgIDAsICAgIDU2LCAgICA1NywgICAgNTgsICAgIDU5LCAg
ICAgMCwgICAgNjAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxMzcsICAgICAyLCAgICAgMywKKyAgICAg
IDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAg
MzYsICAgIDM3LAorICAgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICAgMCwg
ICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsCisgICAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1
MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwKKyAgICAgICAwLCAg
ICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAgIDAsICAgIDYxLCAgICAgMCwgICAgIDAsICAg
ICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAxLCAgICAgMiwgICAgIDMsCiAgICAgICAgNCwgICAgIDAsICAgICA2LCAgICAgNywgICAg
IDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAyNzAsICAgIDEyLAor
ICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgIDI1OSwgICAgMTIsCiAgICAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAg
IDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwKLSAgICAgIDIzLCAgICAyNCwgICAgMjUs
ICAgIDI2LCAgICAyNywgICAgMjgsICAgICAwLCAgICAyOSwgICAgMzAsICAgIDMxLAotICAgICAg
MzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0
MCwgICAgNDEsCi0gICAgICAgMCwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAg
ICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwKLSAgICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0
LCAgICA1NSwgICAgIDAsICAgIDU2LCAgICA1NywgICAgNTgsICAgIDU5LAotICAgICAgIDAsICAg
IDYwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAx
MTYsCisgICAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwg
ICAgMzAsICAgIDMxLCAgICAzMiwKKyAgICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAz
NywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLAorICAgICAgIDAsICAgIDQzLCAg
ICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsCisg
ICAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYsICAgICAwLCAgICA1NywgICAgNTgs
ICAgIDU5LCAgICA2MCwKKyAgICAgICAwLCAgICA2MSwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTA5LAogICAgICAgIDAsICAgICAwLCAgICAgMSwg
ICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsCiAgICAgICAg
OSwgICAgMTAsICAgIDExLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgMzQ0LCAgICAxMiwgICAgMTMsICAg
IDE0LCAgICAxNSwgICAgMTYsICAgIDE3LAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAzMzMs
ICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsCiAgICAgICAxOCwgICAg
MTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAy
NywKLSAgICAgIDI4LCAgICAgMCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAg
ICAzNCwgICAgMzUsICAgIDM2LAotICAgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQx
LCAgICAgMCwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsCi0gICAgICA0NiwgICAgNDcsICAg
IDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwKLSAg
ICAgICAwLCAgICA1NiwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgIDAsICAgIDYwLCAgICAgMSwg
ICAgIDIsICAgICAzLAorICAgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAz
MywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsCisgICAgICAzOCwgICAgMzksICAgIDQwLCAg
ICA0MSwgICAgNDIsICAgICAwLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwKKyAgICAgIDQ3
LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUs
ICAgIDU2LAorICAgICAgIDAsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgICAgMCwgICAg
NjEsICAgICAxLCAgICAgMiwgICAgIDMsCiAgICAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywg
ICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgICAwLCAgICAgMCwKICAgICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDEy
LAogICAgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAg
IDIwLCAgICAyMSwgICAgMjIsCi0gICAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcs
ICAgIDI4LCAgICAgMCwgICAgMjksICAgIDMwLCAgICAzMSwKLSAgICAgIDMyLCAgICAzMywgICAg
MzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLAotICAg
ICAgIDAsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAg
ICA0OSwgICAgNTAsCi0gICAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgICAw
LCAgICA1NiwgICAgNTcsICAgIDU4LCAgICA1OSwKLSAgICAgICAwLCAgICA2MCwgICAxMzcsICAg
ICAyLCAgICAgMywgICAgIDQsICAgICAwLCAgICAgNiwgICAgIDcsICAgICA4LAorICAgICAgMjMs
ICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwg
ICAgMzIsCisgICAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAz
OSwgICAgNDAsICAgIDQxLCAgICA0MiwKKyAgICAgICAwLCAgICA0MywgICAgNDQsICAgIDQ1LCAg
ICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLAorICAgICAgNTIsICAgIDUz
LCAgICA1NCwgICAgNTUsICAgIDU2LCAgICAgMCwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAs
CisgICAgICAgMCwgICAgNjEsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwgICAg
IDYsICAgICA3LCAgICAgOCwKICAgICAgICA5LCAgICAxMCwgICAgMTEsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsCiAgICAg
ICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAg
IDI2LCAgICAyNywKLSAgICAgIDI4LCAgICAgMCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIs
ICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LAotICAgICAgMzcsICAgIDM4LCAgICAzOSwgICAg
NDAsICAgIDQxLCAgICAgMCwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsCi0gICAgICA0Niwg
ICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAg
ICA1NSwKLSAgICAgICAwLCAgICA1NiwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgIDAsICAgIDYw
LCAgICAgMiwgICAgIDMsICAgICA0LAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsICAg
ICA5LCAgICAxMCwgICAgMTEsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDEyLCAgICAxMywK
LSAgICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAy
MSwgICAgMjIsICAgIDIzLAotICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAzMSwgICAgMzIsCi0gICAgICAzMywgICAgMzQsICAgIDM1
LCAgICAzNiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgNDAsICAgIDQxLCAgICAgMCwKLSAgICAg
IDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAg
NTAsICAgIDUxLAotICAgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgICAwLCAgICA1Niwg
ICAgNTcsICAgIDU4LCAgICAgMCwgICAgIDAsCi0gICAgICA2MCwgICAgIDgsICAgICA5LCAgICAx
MCwgICAgMTEsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDEyLCAgICAxMywgICAgMTQsICAg
IDE1LAotICAgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIs
ICAgIDIzLCAgICAyNCwgICAgMjUsCi0gICAgICAyNiwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwKLSAgICAgIDM1LCAgICAzNiwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgNDAsICAgIDQxLCAgICAgMCwgICAgNDIsICAgIDQzLAot
ICAgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUx
LCAgICA1MiwgICAgNTMsCi0gICAgICA1NCwgICAgNTUsICAgICAwLCAgICA1NiwgICAgNTcsICAg
IDU4LCAgICAgMCwgICAzMjAsICAgIDYwLCAgICAgOCwKLSAgICAgICA5LCAgICAxMCwgICAgMTEs
ICAgMzIxLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAx
NiwgICAgMTcsCi0gICAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAg
ICAyNCwgICAgMjUsICAgIDI2LCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LAotICAgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgNDAsICAgIDQxLCAgICAgMCwgICAgNDIsICAgIDQzLCAgICA0NCwgICAg
NDUsCi0gICAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1Miwg
ICAgNTMsICAgIDU0LCAgICA1NSwKLSAgICAgICAwLCAgICA1NiwgICAgNTcsICAgIDU4LCAgICAg
MCwgICAgIDAsICAgIDYwCisgICAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAg
IDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywKKyAgICAgIDM4LCAgICAzOSwgICAgNDAs
ICAgIDQxLCAgICA0MiwgICAgIDAsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LAorICAgICAg
NDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1
NSwgICAgNTYsCisgICAgICAgMCwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgICAwLCAg
ICA2MSwgICAgIDgsICAgICA5LCAgICAxMCwKKyAgICAgIDExLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAg
ICAwLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAg
MTksCisgICAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwg
ICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgMzIsICAgIDMzLCAgICAz
NCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgIDQxLCAg
ICA0MiwgICAgIDAsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsCisg
ICAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYs
ICAgICAwLCAgICA1NywKKyAgICAgIDU4LCAgICA1OSwgICAgIDAsICAgMzA5LCAgICA2MSwgICAg
IDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgMzEwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAx
MiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIw
LCAgICAyMSwKKyAgICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUs
ICAgIDM2LCAgICAzNywgICAgIDAsICAgICAwLCAgICAgMCwgICAgNDEsCisgICAgICA0MiwgICAg
IDAsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1
MCwKKyAgICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYsICAgICAwLCAg
ICA1NywgICAgNTgsICAgIDU5LAorICAgICAgIDAsICAgICAwLCAgICA2MQogfTsKIAogc3RhdGlj
IGNvbnN0IHl5dHlwZV9pbnQxNiB5eWNoZWNrW10gPQogewotICAgICAgIDAsICAgIDQwLCAgICA5
NCwgICAxMzUsICAgMTUwLCAgIDExNSwgICAgIDAsICAgMTExLCAgIDExNSwgICAxMzQsCi0gICAg
IDE0MCwgICAxMjAsICAgICAwLCAgICA3MCwgICAgNzYsICAgMzc1LCAgIDEyMCwgICAzNTMsICAg
ICA5LCAgIDExNiwKLSAgICAgMjEzLCAgIDExOCwgICAxMDQsICAgIDkyLCAgIDEzNCwgICAgIDks
ICAgICAxLCAgIDEzNCwgICAgIDEsICAgIDY4LAotICAgICAgNzYsICAgIDc3LCAgIDE2NCwgICAg
ODcsICAgIDg4LCAgIDEwNiwgICAxNDAsICAgMzQ3LCAgIDM3NCwgICAyMjQsCi0gICAgIDEwNiwg
ICAxNDgsICAgMTQ5LCAgIDExNCwgICA0MDQsICAgMTAyLCAgIDExNCwgICAxMTMsICAgMTk0LCAg
ICA0MCwKLSAgICAgIDQxLCAgICA0MiwgICAxMTQsICAgMTgzLCAgIDExMSwgICAxMDUsICAgIDQw
LCAgICA0MSwgICAxMjcsICAgIDQzLAotICAgICAxNjcsICAgMTExLCAgIDEwOCwgICAxMjAsICAg
MTA1LCAgIDEwNCwgICAxMTEsICAgIDUxLCAgIDEyMiwgICAxMjMsCi0gICAgICA3MCwgICAxOTYs
ICAgICA5LCAgICA3MywgICAxMzEsICAgMTg0LCAgIDEwNSwgICAxMDgsICAgIDc4LCAgIDE4MywK
LSAgICAgMTg0LCAgIDEzOCwgICAxMTEsICAgMTQwLCAgICA3OCwgICAgODUsICAgMTk2LCAgIDM5
NywgICAxMDYsICAgMTk2LAotICAgICAgNzgsICAgMTMwLCAgIDIyNCwgICA0MDMsICAgMjQwLCAg
IDExMywgICAgNjksICAgMTA2LCAgIDIyMywgICAgNzYsCi0gICAgIDEwNSwgICAgNzQsICAgMTAy
LCAgICA0MCwgICAgNDEsICAgIDQyLCAgIDExMSwgICAgODUsICAgIDg2LCAgIDEwNSwKLSAgICAg
IDgzLCAgIDExMSwgICAyNDQsICAgMjIzLCAgIDEwNSwgICAxMTEsICAgMjIzLCAgIDEwNCwgICAx
MTEsICAgMTA4LAotICAgICAxMjAsICAgMTE0LCAgIDI2OCwgICAxMDUsICAgMzA5LCAgIDEyNSwg
ICAxODMsICAgMTg0LCAgIDEwNiwgICAxMTEsCi0gICAgIDExMywgICAxMzEsICAgMTEwLCAgIDI3
OSwgICAgIDQsICAgICA1LCAgICAgNiwgICAyODMsICAgMTM4LCAgIDEwOCwKLSAgICAgMTQwLCAg
IDI3MSwgICAyNDksICAgMjUwLCAgIDI1MSwgICAyNTIsICAgMjUzLCAgIDI1NCwgICAyNTUsICAg
MjU2LAotICAgICAyNTcsICAgMjU4LCAgIDI1OSwgICAyNjAsICAgMjYxLCAgIDI2MiwgICAyNjMs
ICAgMjY0LCAgIDI2NSwgICAyNjYsCi0gICAgIDI2NywgICAzNTQsICAgMTM3LCAgIDExMSwgICAx
MzcsICAgMTA1LCAgIDExNCwgICAyNzEsICAgMzAwLCAgIDMwMSwKLSAgICAgMTE0LCAgIDExMSwg
ICAxMTEsICAgMzU4LCAgIDEwNCwgICAxMTQsICAgMzYxLCAgIDMwOSwgICAxMTEsICAgMTExLAot
ICAgICAzMDUsICAgMTE0LCAgIDExNCwgICAxODMsICAgMTg0LCAgICA0MCwgICAgNDEsICAgMzEy
LCAgICAgOSwgICAyNTYsCi0gICAgIDI1NywgICAyNTgsICAgMjU5LCAgICA3NiwgICAgNzcsICAg
MzA1LCAgICA3NiwgICAgNzcsICAgMzA1LCAgIDM4NCwKLSAgICAgIDg5LCAgICA5MCwgICAzMTIs
ICAgIDc5LCAgICA4MCwgICAzMTIsICAgMTA1LCAgIDM1MywgICAgNDAsICAgIDQxLAotICAgICAg
NDIsICAgIDgzLCAgICA4NCwgICAyMTMsICAgMjcxLCAgIDExOSwgICAxMjAsICAgMTIxLCAgIDEw
NCwgICAgNDAsCi0gICAgICA0MSwgICA0MDYsICAgIDQzLCAgICA0NCwgICAxMTEsICAgMTEyLCAg
IDM1OCwgICAxMjUsICAgMzc0LCAgIDM2MSwKLSAgICAgIDUxLCAgICA1MiwgICAgNTMsICAgICA5
LCAgIDI1NCwgICAyNTUsICAgMzY4LCAgIDI1MiwgICAyNTMsICAgMTI0LAotICAgICAzNjUsICAg
MjYwLCAgIDI2MSwgICAzODksICAgMTI2LCAgICA5MSwgICAgOTMsICAgMTA3LCAgIDExNCwgICAz
NTMsCi0gICAgIDExNCwgICAxMDQsICAgMzg0LCAgIDEwNCwgICAzNDYsICAgMzY1LCAgIDQwMiwg
ICAxMTQsICAgMzY1LCAgIDEwNCwKLSAgICAgMTEyLCAgIDEwNCwgICAxMDQsICAgMTEzLCAgICA0
MCwgICAgNDEsICAgMTA3LCAgICA0MywgICAgNDQsICAgMTA5LAotICAgICAzNzQsICAgMjcxLCAg
IDEwNiwgICAxMDYsICAgNDA2LCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA5NCwgICAgOTUsCi0g
ICAgICA5NiwgICAgOTcsICAgIDk4LCAgICA5OSwgICAxMDAsICAgMTAxLCAgIDEwMiwgICAxMDMs
ICAgMjg4LCAgIDEwOCwKLSAgICAgMTA1LCAgIDExMywgICAxMTIsICAgMTA3LCAgIDEwNywgICAx
MTMsICAgMTA0LCAgIDExMywgICAgNTYsICAgMTExLAotICAgICAgNzYsICAgMTA3LCAgIDExMywg
ICAxMDcsICAgMTA0LCAgIDExNCwgICAxMDUsICAgMTA5LCAgIDEwNSwgICAxMDcsCi0gICAgICAx
NywgICAxMTQsICAgMTA4LCAgIDExNCwgICAyNDEsICAgMjYyLCAgIDI2NSwgICAyNjMsICAgMTEz
LCAgIDI2NCwKLSAgICAgMTAzLCAgIDEzMSwgICAzNzksICAgMjY2LCAgICA5NiwgICAyNjcsICAg
MTMxLCAgICAgNSwgICAxODcsICAgMjI5LAotICAgICAzOTUsICAgMzQ4LCAgIDMxMywgICA0MDMs
ICAgMjg4LCAgIDM0OCwgICAzNzQsICAgIDc4LCAgICAtMSwgICAzNzgsCi0gICAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAzNDcsICAgMzQ4LCAgICAt
MSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgMzUzLCAgIDM1NCwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgIDAsICAgIDQxLCAgICA3MSwgICAgOTEsICAgMTI2
LCAgICA2NiwgICAyMDQsICAgIDY2LCAgIDE0MSwgICAgIDAsCisgICAgICA3MSwgICAxMzEsICAg
MTEyLCAgICAgMCwgICAzMzYsICAgIDkyLCAgIDM0MiwgICAzNjQsICAgIDc2LCAgIDEwNiwKKyAg
ICAgMTA1LCAgIDEwNCwgICAxMDgsICAgIDc2LCAgICA3NywgICAxMTQsICAgMTExLCAgIDExNCwg
ICAgOTcsICAgIDY5LAorICAgICAxMTEsICAgMTA2LCAgICA5MywgICAxNTUsICAgIDkzLCAgIDEw
NSwgICAgOTcsICAgMzYzLCAgIDExMywgICAxMjUsCisgICAgIDEwNiwgICAgODcsICAgIDg4LCAg
IDEwOCwgICAxMDUsICAgMzkyLCAgIDEwNSwgICAxMjUsICAgMTA4LCAgIDExNCwKKyAgICAgMTI3
LCAgIDExMiwgICAxODUsICAgMTEyLCAgIDE3NCwgICAxMDgsICAgMTE0LCAgIDEwNiwgICAgOTgs
ICAgIDk5LAorICAgICAxMjksICAgIDg1LCAgICA4NiwgICAzODUsICAgMTEzLCAgIDEyNSwgICAg
NjYsICAgMTA4LCAgIDEyOSwgICAzOTEsCisgICAgIDEzMSwgICAgNzEsICAgMTMxLCAgIDIxMywg
ICAgNzYsICAgMTc1LCAgIDEyMiwgICAxMjMsICAgMTA4LCAgIDEzOSwKKyAgICAgMTQwLCAgICA4
MSwgICAxMDYsICAgMTA1LCAgICA4NCwgICAxMTEsICAgMTEwLCAgIDEwNCwgICAxMTQsICAgMTEx
LAorICAgICAgODEsICAgMjEzLCAgIDExMSwgICAgOTMsICAgIDgxLCAgIDExNCwgICAyMjksICAg
IDk3LCAgIDE1OCwgICAxMTQsCisgICAgIDEwNSwgICAxODcsICAgMTA1LCAgIDExMywgICAxMDUs
ICAgMTA1LCAgIDExMSwgICAxMDYsICAgMTExLCAgIDE4NywKKyAgICAgMTExLCAgIDIzMywgICAx
MTIsICAgMTc0LCAgIDE3NSwgICAxNzQsICAgMTc1LCAgIDExNywgICAyNDUsICAgMjQ2LAorICAg
ICAyNDcsICAgMjQ4LCAgIDEwNSwgICAxMDQsICAgMjU3LCAgIDIxMSwgICAyMTIsICAgMTg3LCAg
IDExMSwgICAxMjksCisgICAgIDExNiwgICAxMzEsICAgMTE4LCAgIDIxMSwgICAyMTIsICAgMjY4
LCAgICA3NiwgICAgNzcsICAgMTExLCAgIDI3MiwKKyAgICAgMjYwLCAgIDExNCwgICAxMDUsICAg
MTExLCAgIDExMSwgICAzNDMsICAgMTE0LCAgIDExNCwgICAgIDQsICAgICA1LAorICAgICAgIDYs
ICAgMjExLCAgIDIxMiwgICAxMTksICAgMTIwLCAgIDEyMSwgICAgNzYsICAgIDc3LCAgIDI5OCwg
ICAgODMsCisgICAgICA4NCwgICAgODksICAgIDkwLCAgICA3OSwgICAgODAsICAgMTExLCAgIDEx
MiwgICAyODksICAgMjkwLCAgIDI0MSwKKyAgICAgMjQyLCAgIDEwNCwgICAyNDMsICAgMjQ0LCAg
IDE3NCwgICAxNzUsICAgMjk4LCAgIDEyNiwgICAyMzgsICAgMjM5LAorICAgICAyNDAsICAgMjQx
LCAgIDI0MiwgICAyNDMsICAgMjQ0LCAgIDI0NSwgICAyNDYsICAgMjQ3LCAgIDI0OCwgICAyNDks
CisgICAgIDI1MCwgICAyNTEsICAgMjUyLCAgIDI1MywgICAyNTQsICAgMjU1LCAgIDI1NiwgICAy
NDksICAgMjUwLCAgIDI2MCwKKyAgICAgMTI1LCAgIDI2MCwgICAxMjQsICAgIDkxLCAgIDIwNCwg
ICAxMDcsICAgIDkzLCAgIDM0NywgICAxMTQsICAgMzQyLAorICAgICAzNTAsICAgMTE0LCAgIDEw
NCwgICAxMDQsICAgMTE0LCAgIDMwMSwgICAxMTIsICAgMTA3LCAgIDEwNCwgICAxMDQsCisgICAg
IDEwOSwgICAxMDQsICAgIDU2LCAgIDMwMSwgICAxMDYsICAgMzQ3LCAgIDEwNSwgICAxMDgsICAg
MzUwLCAgIDExMywKKyAgICAgMzYzLCAgIDEwNywgICAzNzIsICAgMTEzLCAgIDExMiwgICAzNTcs
ICAgMTA3LCAgIDEwNywgICAxMTMsICAgMTExLAorICAgICAxMDQsICAgMzAxLCAgIDEwNywgICAx
MDQsICAgMzc3LCAgIDExMywgICAxMDUsICAgMzM1LCAgIDExNCwgICAxMDksCisgICAgIDM3Miwg
ICAxMDUsICAgMTA3LCAgICAxNywgICAzOTQsICAgMTA4LCAgIDExMywgICAzOTAsICAgMjMwLCAg
IDI1MSwKKyAgICAgMjYwLCAgIDI1NCwgICAxMTQsICAgMTE0LCAgIDI1MiwgICAyNTUsICAgIDk3
LCAgIDI1NiwgICAzNTQsICAgMjUzLAorICAgICAgOTMsICAgIDk3LCAgIDM5NCwgICAgIDUsICAg
MTc4LCAgIDIxOCwgICAzNTQsICAgMjc3LCAgIDM4MywgICAzMDIsCisgICAgIDMzNywgICAzOTEs
ICAgMjc3LCAgIDM0MiwgICAgOTQsICAgIDk1LCAgICA5NiwgICAgOTcsICAgIDk4LCAgICA5OSwK
KyAgICAgMTAwLCAgIDEwMSwgICAxMDIsICAgMTAzLCAgIDM1NCwgICAzMzcsICAgMzYzLCAgICA4
MSwgICAgLTEsICAgMzY4LAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMTMsICAgMzYzLCAg
ICAtMSwgICAgLTEsICAgMzY4LCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDM3NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgMzc5LAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgMzY3LCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgIDMzNiwgICAzMzcsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAg
ICAtMSwgICAzNDIsICAgMzQzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAzOTcsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgNDAzLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LAor
ICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAzNjMsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgIDM2OCwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAzODUsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAg
LTEsICAgMzkxLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAg
OSwgICAgMTAsCisgICAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAg
ICAtMSwgICAgMTgsICAgIDE5LCAgICAyMCwKKyAgICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0
LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLAorICAgICAgMzEsICAg
IDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAg
NDAsCisgICAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0Nywg
ICAgNDgsICAgIDQ5LCAgICA1MCwKKyAgICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1
NSwgICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLAorICAgICAgNjEsICAgIDYyLCAg
ICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsCisg
ICAgICAtMSwgICAgNzIsICAgIDczLCAgICA3NCwgICAgNzUsICAgIDc2LCAgICA3NywgICAgNzgs
ICAgIDc5LCAgICA4MCwKKyAgICAgIDgxLCAgICA4MiwgICAgLTEsICAgIC0xLCAgICA4NSwgICAg
ODYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAt
MSwgICAgLTEsICAgIC0xLCAgIDEwNCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMDgsICAgMTA5
LCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTE0LCAgIDExNSwgICAxMTYsICAg
MTE3LCAgIDExOCwgICAgIDMsICAgICA0LAorICAgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgs
ICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsCisgICAgICAxNSwgICAg
MTYsICAgIC0xLCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAy
NCwKKyAgICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAg
ICAzMiwgICAgMzMsICAgIDM0LAorICAgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5
LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsCisgICAgICA0NSwgICAgNDYsICAg
IDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwKKyAg
ICAgIDU1LCAgICA1NiwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2Miwg
ICAgNjMsICAgIDY0LAorICAgICAgNjUsICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAgICA3
MCwgICAgLTEsICAgIDcyLCAgICA3MywgICAgNzQsCisgICAgICA3NSwgICAgNzYsICAgIDc3LCAg
ICA3OCwgICAgNzksICAgIDgwLCAgICA4MSwgICAgODIsICAgIC0xLCAgICAtMSwKKyAgICAgIDg1
LCAgICA4NiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAxMDQsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgIDEwOCwg
ICAxMDksICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDExNCwKKyAgICAgMTE1LCAgIDEx
NiwgICAxMTcsICAgMTE4LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4
LAogICAgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAg
IDE2LCAgICAtMSwgICAgMTgsCiAgICAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMs
ICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwKICAgICAgIDI5LCAgICAzMCwgICAg
MzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LAotICAg
ICAgMzksICAgIDQwLCAgICA0MSwgICAgLTEsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAg
ICA0NywgICAgNDgsCisgICAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0
LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwKICAgICAgIDQ5LCAgICA1MCwgICAgNTEsICAg
IDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAgNTcsICAgIDU4LAogICAgICAgNTks
ICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2NCwgICAgNjUsICAgIDY2LCAgICA2Nywg
ICAgNjgsCiAgICAgICA2OSwgICAgNzAsICAgIC0xLCAgICA3MiwgICAgNzMsICAgIDc0LCAgICA3
NSwgICAgNzYsICAgIDc3LCAgICA3OCwKQEAgLTEyNjEsMTEgKzEyOTIsMTEgQEAKICAgICAgIDc5
LCAgICA4MCwgICAgODEsICAgIDgyLCAgICAtMSwgICAgLTEsICAgIDg1LCAgICA4NiwgICAgLTEs
ICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgMTA0LCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDEwOCwKLSAgICAgMTA5LCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMTQsICAgMTE1LCAgIDExNiwgICAxMTcsICAgMTE4
LAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDExNCwgICAxMTUsICAg
MTE2LCAgIDExNywgICAxMTgsCiAgICAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcs
ICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwKICAgICAgIDEzLCAgICAxNCwgICAg
MTUsICAgIDE2LCAgICAtMSwgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLAogICAg
ICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAg
ICAzMSwgICAgMzIsCi0gICAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4
LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICAtMSwKKyAgICAgIDMzLCAgICAzNCwgICAgMzUsICAg
IDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLAogICAgICAgNDMs
ICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwg
ICAgNTIsCiAgICAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAgNTcsICAgIDU4LCAgICA1
OSwgICAgNjAsICAgIDYxLCAgICA2MiwKICAgICAgIDYzLCAgICA2NCwgICAgNjUsICAgIDY2LCAg
ICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwgICAgLTEsICAgIDcyLApAQCAtMTI3MiwxMiArMTMw
MywxMiBAQAogICAgICAgNzMsICAgIDc0LCAgICA3NSwgICAgNzYsICAgIDc3LCAgICA3OCwgICAg
NzksICAgIDgwLCAgICA4MSwgICAgODIsCiAgICAgICAtMSwgICAgLTEsICAgIDg1LCAgICA4Niwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LAotICAgICAgLTEsICAgMTA0LCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDEwOCwgICAxMDksICAg
IC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAxMDQsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgMTA4LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgIDExNCwgICAx
MTUsICAgMTE2LCAgIDExNywgICAxMTgsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LAogICAg
ICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAg
ICAxNSwgICAgMTYsCiAgICAgICAtMSwgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIy
LCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwKICAgICAgIDI3LCAgICAyOCwgICAgMjksICAg
IDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LAotICAgICAgMzcs
ICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICAtMSwgICAgNDMsICAgIDQ0LCAgICA0NSwg
ICAgNDYsCisgICAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0
MywgICAgNDQsICAgIDQ1LCAgICA0NiwKICAgICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAg
ICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgIDU2LAogICAgICAgNTcsICAgIDU4
LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0LCAgICA2NSwgICAgNjYs
CiAgICAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwgICAgLTEsICAgIDcyLCAgICA3MywgICAg
NzQsICAgIDc1LCAgICA3NiwKQEAgLTEyODQsNTcgKzEzMTUsMzQgQEAKICAgICAgIDc3LCAgICA3
OCwgICAgNzksICAgIDgwLCAgICA4MSwgICAgODIsICAgIC0xLCAgICAtMSwgICAgODUsICAgIDg2
LAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAxMDQsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgIDEwOCwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDExNCwgICAxMTUsICAgMTE2LAorICAg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTE0LCAg
IDExNSwgICAxMTYsCiAgICAgIDExNywgICAxMTgsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2
LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwKLSAgICAgIDExLCAgICAxMiwgICAgMTMsICAg
IDE0LCAgICAxNSwgICAgMTYsICAgIC0xLCAgICAxOCwgICAgMTksICAgIDIwLAotICAgICAgMjEs
ICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwg
ICAgMzAsCisgICAgICAxMSwgICAgMTIsICAgIDEzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLAogICAgICAgMzEsICAgIDMy
LCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAs
Ci0gICAgICA0MSwgICAgLTEsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAg
NDgsICAgIDQ5LCAgICA1MCwKLSAgICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwg
ICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLAorICAgICAgNDEsICAgIDQyLCAgICA0
MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsCisgICAg
ICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgIC0xLCAgICA1NywgICAgNTgsICAg
IDU5LCAgICA2MCwKICAgICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0LCAgICA2NSwgICAgNjYs
ICAgIDY3LCAgICA2OCwgICAgNjksICAgIDcwLAogICAgICAgLTEsICAgIDcyLCAgICA3MywgICAg
NzQsICAgIDc1LCAgICA3NiwgICAgNzcsICAgIDc4LCAgICA3OSwgICAgODAsCiAgICAgICA4MSwg
ICAgODIsICAgIC0xLCAgICAtMSwgICAgODUsICAgIDg2LCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMDQsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgMTA4LCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEs
ICAgIC0xLCAgIDExNCwgICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsICAgICAzLCAgICAgNCwK
LSAgICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAx
MiwgICAgMTMsICAgIDE0LAotICAgICAgMTUsICAgIDE2LCAgICAtMSwgICAgMTgsICAgIDE5LCAg
ICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsCi0gICAgICAyNSwgICAgMjYsICAgIDI3
LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwKLSAgICAg
IDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICAtMSwgICAg
NDMsICAgIDQ0LAotICAgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwg
ICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsCi0gICAgICA1NSwgICAgNTYsICAgIDU3LCAgICA1
OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2NCwKLSAgICAgIDY1LCAg
ICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsICAgIC0xLCAgICA3MiwgICAgNzMsICAg
IDc0LAotICAgICAgNzUsICAgIDc2LCAgICA3NywgICAgNzgsICAgIDc5LCAgICA4MCwgICAgODEs
ICAgIDgyLCAgICAtMSwgICAgLTEsCi0gICAgICA4NSwgICAgODYsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTA0LAot
ICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAxMTQsCi0gICAgIDExNSwgICAxMTYsICAgMTE3LCAgIDExOCwgICAgIDMsICAg
ICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwKLSAgICAgICA5LCAgICAxMCwgICAgMTEs
ICAgIDEyLCAgICAxMywgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjUsICAgIDI2LCAgICAy
NywgICAgMjgsCi0gICAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAg
ICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwKLSAgICAgIDM5LCAgICA0MCwgICAgNDEsICAgIC0x
LCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LAotICAgICAgNDksICAg
IDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgIC0xLCAgICA1NywgICAg
NTgsCi0gICAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0LCAgICA2NSwg
ICAgNjYsICAgIDY3LCAgICA2OCwKLSAgICAgIDY5LCAgICA3MCwgICAgLTEsICAgIDcyLCAgICA3
MywgICAgNzQsICAgIDc1LCAgICA3NiwgICAgNzcsICAgIDc4LAotICAgICAgNzksICAgIDgwLCAg
ICA4MSwgICAgODIsICAgIC0xLCAgICAtMSwgICAgODUsICAgIDg2LCAgICAtMSwgICAgLTEsCi0g
ICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAx
MDQsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLAotICAgICAgMTIsICAgIDEzLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgIDExNCwgICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsCi0gICAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMw
LCAgICAzMSwKLSAgICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAg
IDM4LCAgICAzOSwgICAgNDAsICAgIDQxLAotICAgICAgLTEsICAgIDQzLCAgICA0NCwgICAgNDUs
ICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsCi0gICAgICA1MiwgICAg
NTMsICAgIDU0LCAgICA1NSwgICAgLTEsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2
MSwKLSAgICAgIDYyLCAgICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAg
ICA2OSwgICAgNzAsICAgIC0xLAotICAgICAgNzIsICAgIDczLCAgICA3NCwgICAgNzUsICAgIDc2
LCAgICA3NywgICAgNzgsICAgIDc5LCAgICA4MCwgICAgODEsCi0gICAgICA4MiwgICAgLTEsICAg
IC0xLCAgICA4NSwgICAgODYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAg
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAgNCwg
ICAgIDUsICAgICA2LAotICAgICAgLTEsICAgIC0xLCAgIDEwNCwgICAgMTAsICAgIDExLCAgICAx
MiwgICAgMTMsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAg
IDExNSwgICAxMTYsICAgMTE3LCAgIDExOCwgICAgLTEsICAgIDI1LCAgICAyNiwKKyAgICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgICAzLAorICAgICAgIDQsICAgICA1LCAgICAgNiwgICAxMDQsICAgICA4LCAgICAgOSwgICAg
MTAsICAgIDExLCAgICAxMiwgICAgMTMsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgIDExNCwg
ICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAy
NSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMz
LAorICAgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAg
IDQxLCAgICA0MiwgICAgNDMsCisgICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgs
ICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywKKyAgICAgIDU0LCAgICA1NSwgICAg
LTEsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYzLAorICAg
ICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsICAgIC0xLCAg
ICA3MiwgICAgNzMsCisgICAgICA3NCwgICAgNzUsICAgIDc2LCAgICA3NywgICAgNzgsICAgIDc5
LCAgICA4MCwgICAgODEsICAgIDgyLCAgICAtMSwKKyAgICAgIC0xLCAgICA4NSwgICAgODYsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgIDMsICAgICA0LCAgICAgNSwg
ICAgIDYsCisgICAgIDEwNCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAx
MywgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgIDExNSwgICAxMTYsICAgMTE3LCAg
IDExOCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjUsICAgIDI2LAogICAgICAgMjcsICAgIDI4
LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYs
Ci0gICAgICAzNywgICAgMzgsICAgIDM5LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIDQ1LCAgICA0NiwKLSAgICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICA1NCwgICAgNTUsICAgIC0xLAorICAgICAgMzcsICAgIDM4LCAgICAz
OSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsCisgICAg
ICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAg
IDU1LCAgICAtMSwKICAgICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIs
ICAgIDYzLCAgICA2NCwgICAgNjUsICAgIDY2LAotICAgICAgNjcsICAgIDY4LCAgICA2OSwgICAg
NzAsICAgIC0xLCAgICA3MiwgICAgNzMsICAgIDc0LCAgICAtMSwgICAgNzYsCisgICAgICA2Nywg
ICAgNjgsICAgIDY5LCAgICA3MCwgICAgLTEsICAgIDcyLCAgICA3MywgICAgNzQsICAgIDc1LCAg
ICA3NiwKICAgICAgIDc3LCAgICAtMSwgICAgLTEsICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEz
LCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyNSwgICAgMjYsCiAgICAgICAyNywgICAgMjgs
ICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwK
QEAgLTEzOTYsNyArMTQwNCw3IEBACiAgICAgICAgNiwgICAxMDQsICAgICA4LCAgICAgOSwgICAg
MTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwg
ICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDI1LAog
ICAgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMz
LCAgICAzNCwgICAgMzUsCi0gICAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAg
IDQxLCAgICAtMSwgICAgNDMsICAgIDQ0LCAgICA0NSwKKyAgICAgIDM2LCAgICAzNywgICAgMzgs
ICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LAogICAgICAg
NDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1
NCwgICAgNTUsCiAgICAgICAtMSwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAg
ICA2MiwgICAgNjMsICAgIDY0LCAgICA2NSwKICAgICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5
LCAgICA3MCwgICAgLTEsICAgIDcyLCAgICA3MywgICAgNzQsICAgIDc1LApAQCAtMTQwNSw3ICsx
NDEzLDcgQEAKICAgICAgIDExLCAgICAxMiwgICAgMTMsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMDks
ICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsCiAgICAgICAzMSwgICAg
MzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0
MCwKLSAgICAgIDQxLCAgICAtMSwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAg
ICA0OCwgICAgNDksICAgIDUwLAorICAgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1
LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsCiAgICAgICA1MSwgICAgNTIsICAg
IDUzLCAgICA1NCwgICAgNTUsICAgIC0xLCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwKICAg
ICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0LCAgICA2NSwgICAgNjYsICAgIDY3LCAgICA2OCwg
ICAgNjksICAgIDcwLAogICAgICAgLTEsICAgIDcyLCAgICA3MywgICAgNzQsICAgIDc1LCAgICAt
MSwgICAgNzcsICAgIC0xLCAgICAtMSwgICAgLTEsCkBAIC0xNDEzLDcgKzE0MjEsNyBAQAogICAg
ICAgIDYsICAgIC0xLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAg
ICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgMTA5LCAgICAyNSwKICAgICAgIDI2LCAgICAyNywgICAgMjgsICAg
IDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LAotICAgICAgMzYs
ICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgLTEsICAgIDQzLCAgICA0NCwg
ICAgNDUsCisgICAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0
MiwgICAgNDMsICAgIDQ0LCAgICA0NSwKICAgICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAg
ICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LAogICAgICAgLTEsICAgIDU3
LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2NCwgICAgNjUs
CiAgICAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsICAgIC0xLCAgICA3MiwgICAg
NzMsICAgIDc0LCAgICA3NSwKQEAgLTE0MjIsNyArMTQzMCw3IEBACiAgICAgICAxMSwgICAgMTIs
ICAgIDEzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwK
ICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTA5LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAy
OCwgICAgMjksICAgIDMwLAogICAgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAg
ICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsCi0gICAgICA0MSwgICAgLTEsICAgIDQz
LCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwKKyAgICAg
IDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAg
NDksICAgIDUwLAogICAgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICAtMSwg
ICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsCiAgICAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2
NCwgICAgNjUsICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwKICAgICAgIC0xLCAg
ICA3MiwgICAgNzMsICAgIDc0LCAgICA3NSwgICAgLTEsICAgIDc3LCAgICAgMywgICAgIDQsICAg
ICA1LApAQCAtMTQyOSw3ICsxNDM3LDcgQEAKICAgICAgICA2LCAgICAgNywgICAgIDgsICAgICA5
LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
MjUsCiAgICAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwg
ICAgMzMsICAgIDM0LCAgICAzNSwKLSAgICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0
MCwgICAgNDEsICAgIC0xLCAgICA0MywgICAgNDQsICAgIDQ1LAorICAgICAgMzYsICAgIDM3LCAg
ICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsCiAg
ICAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMs
ICAgIDU0LCAgICA1NSwKICAgICAgIC0xLCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAg
NjEsICAgIDYyLCAgICA2MywgICAgNjQsICAgIDY1LAogICAgICAgNjYsICAgIDY3LCAgICA2OCwg
ICAgNjksICAgIDcwLCAgICAtMSwgICAgNzIsICAgIDczLCAgICA3NCwgICAgNzUsCkBAIC0xNDM3
LDMxICsxNDQ1LDI0IEBACiAgICAgICAxMSwgICAgMTIsICAgIDEzLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLAogICAgICAg
MzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAz
OSwgICAgNDAsCi0gICAgICA0MSwgICAgLTEsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAg
ICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwKKyAgICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0
LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLAogICAgICAgNTEsICAg
IDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICAtMSwgICAgNTcsICAgIDU4LCAgICA1OSwgICAg
NjAsCiAgICAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2NCwgICAgNjUsICAgIDY2LCAgICA2Nywg
ICAgNjgsICAgIDY5LCAgICA3MCwKLSAgICAgIC0xLCAgICA3MiwgICAgNzMsICAgIDc0LCAgICA3
NSwgICAgLTEsICAgIDc3LCAgICAgNCwgICAgIDUsICAgICA2LAotICAgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIC0xLCAgICAtMSwgICAgLTEsCi0g
ICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIDI1LCAgICAyNiwKLSAgICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAg
MzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LAotICAgICAgMzcsICAgIDM4LCAgICAzOSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA0NSwgICAgNDYsCi0gICAgICA0
NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNTQsICAgIDU1
LCAgICAtMSwKLSAgICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsICAg
IDYzLCAgICA2NCwgICAgNjUsICAgIDY2LAotICAgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAs
ICAgIC0xLCAgICA3MiwgICAgNzMsICAgIDc0LCAgICAtMSwgICAgLTEsCi0gICAgICA3NywgICAg
MTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDI1LCAg
ICAyNiwgICAgMjcsICAgIDI4LAotICAgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMz
LCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsCi0gICAgICAzOSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwKLSAg
ICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNTQsICAgIDU1LCAgICAtMSwg
ICAgNTcsICAgIDU4LAotICAgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2
NCwgICAgNjUsICAgIDY2LCAgICA2NywgICAgNjgsCi0gICAgICA2OSwgICAgNzAsICAgIC0xLCAg
ICA3MiwgICAgNzMsICAgIDc0LCAgICAtMSwgICAgNzYsICAgIDc3LCAgICAxMCwKLSAgICAgIDEx
LCAgICAxMiwgICAgMTMsICAgIDgyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDI1LCAgICAyNiwgICAg
MjcsICAgIDI4LCAgICAyOSwgICAgMzAsCi0gICAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwg
ICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICAtMSwKLSAgICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUw
LAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNTQsICAgIDU1LCAgICAtMSwgICAgNTcsICAg
IDU4LCAgICA1OSwgICAgNjAsCi0gICAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2NCwgICAgNjUs
ICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwKLSAgICAgIC0xLCAgICA3MiwgICAg
NzMsICAgIDc0LCAgICAtMSwgICAgLTEsICAgIDc3CisgICAgICAtMSwgICAgNzIsICAgIDczLCAg
ICA3NCwgICAgNzUsICAgIC0xLCAgICA3NywgICAgMTAsICAgIDExLCAgICAxMiwKKyAgICAgIDEz
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAg
MjksICAgIDMwLCAgICAzMSwgICAgMzIsCisgICAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwg
ICAgMzcsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAt
MSwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0x
LAorICAgICAgLTEsICAgIDU0LCAgICA1NSwgICAgLTEsICAgIDU3LCAgICA1OCwgICAgNTksICAg
IDYwLCAgICA2MSwgICAgNjIsCisgICAgICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcs
ICAgIDY4LCAgICA2OSwgICAgNzAsICAgIC0xLCAgICA3MiwKKyAgICAgIDczLCAgICA3NCwgICAg
LTEsICAgIDc2LCAgICA3NywgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDgyLAorICAg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsCisgICAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMw
LCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwKKyAgICAgIDM1LCAgICAzNiwgICAgMzcsICAg
IDM4LCAgICAzOSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgNDUs
ICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgNTQsCisgICAgICA1NSwgICAgLTEsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2
MSwgICAgNjIsICAgIDYzLCAgICA2NCwKKyAgICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAg
ICA2OSwgICAgNzAsICAgIC0xLCAgICA3MiwgICAgNzMsICAgIDc0LAorICAgICAgLTEsICAgIC0x
LCAgICA3NwogfTsKIAogICAvKiBZWVNUT1NbU1RBVEUtTlVNXSAtLSBUaGUgKGludGVybmFsIG51
bWJlciBvZiB0aGUpIGFjY2Vzc2luZwpAQCAtMTQ3MCw0NiArMTQ3MSw0NSBAQAogewogICAgICAg
IDAsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAx
MCwgICAgMTEsCiAgICAgICAxMiwgICAgMTMsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAg
ICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwKLSAgICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2
LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQzLAotICAgICAgNDQsICAg
IDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAg
NTMsCi0gICAgICA1NCwgICAgNTUsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwg
ICAgNjIsICAgIDYzLCAgICA2NCwKLSAgICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2
OSwgICAgNzAsICAgIDcyLCAgICA3MywgICAgNzQsICAgIDc1LAotICAgICAgNzcsICAgMTYwLCAg
IDE2MSwgICAxNjIsICAgMTYzLCAgIDE2NCwgICAxNjksICAgMTcwLCAgIDE3MSwgICAxNzIsCi0g
ICAgIDE3NCwgICAxNzUsICAgMTc2LCAgIDE3NywgICAxNzgsICAgMTgxLCAgIDE4MiwgICAxODMs
ICAgMjE4LCAgIDIxOSwKLSAgICAgMjIwLCAgICA0NCwgICAgNzYsICAgMTcyLCAgIDE3NSwgICAx
NzcsICAgIDQwLCAgICA0MSwgICAgNzYsICAgIDc3LAotICAgICAxMDgsICAgMTI5LCAgIDEwNCwg
ICAxMTQsICAgMjIxLCAgIDEwNSwgICAxMTEsICAgICA5LCAgICA0MCwgICAgNDEsCi0gICAgICA0
MiwgICAxNjYsICAgMTY3LCAgIDE3MywgICAxMTEsICAgMTE0LCAgICA3NiwgICAxMjksICAgMTc1
LCAgICA3NiwKLSAgICAgMTE0LCAgIDE1OSwgICAxNzYsICAgMTgxLCAgIDE3NSwgICAxMDYsICAg
ICAwLCAgIDIxOSwgICAxNzUsICAgMTgxLAotICAgICAxODUsICAgMTA4LCAgICA3NiwgICAxNzks
ICAgMTgwLCAgIDEwOCwgICAyMDEsICAgMTY2LCAgIDE2NSwgICAxNjgsCi0gICAgIDE3NiwgICAx
NjcsICAgMTI5LCAgIDEwNCwgICAxMDYsICAgMTEzLCAgIDEwOCwgICAgIDMsICAgMTc0LCAgIDE3
NiwKLSAgICAgMTg2LCAgIDE4NywgICAgNzYsICAgIDc4LCAgICA3OSwgICAgODAsICAgIDgxLCAg
ICA4MiwgICAgODUsICAgIDg2LAotICAgICAxMDQsICAgMTA3LCAgIDExNSwgICAxMTYsICAgMTE3
LCAgIDExOCwgICAxMzAsICAgMTMxLCAgIDEzMiwgICAxMzQsCi0gICAgIDEzNSwgICAxMzYsICAg
MTM3LCAgIDEzOCwgICAxMzksICAgMTQwLCAgIDE0MSwgICAxNDIsICAgMTQzLCAgIDE0NCwKLSAg
ICAgMTQ1LCAgIDE0NiwgICAxNDcsICAgMTQ4LCAgIDE0OSwgICAxNTAsICAgMTUxLCAgIDE1Miwg
ICAxNTMsICAgMTU0LAotICAgICAxNTgsICAgMTgxLCAgIDExNCwgICAxODYsICAgMTg0LCAgIDEx
MywgICAxMDUsICAgMTExLCAgICAxNCwgICAgMTUsCi0gICAgICAxNiwgICAgMTgsICAgIDE5LCAg
ICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDU2LCAgIDEwOCwKLSAgICAgMTA5
LCAgIDExNCwgICAxNDEsICAgMTU0LCAgIDE1NSwgICAxNTcsICAgMTYwLCAgIDE2MSwgICAxODEs
ICAgMTkxLAotICAgICAxOTIsICAgMTkzLCAgIDE5NCwgICAyMDIsICAgMjAzLCAgIDIwNCwgICAy
MDYsICAgMjA4LCAgIDIxMCwgICAyMTcsCi0gICAgIDEyOSwgICAxNjUsICAgMTY4LCAgIDEwNiwg
ICAxMTMsICAgMTA3LCAgIDE1OCwgICAxNTUsICAgMTkwLCAgIDE3NiwKLSAgICAgMTI5LCAgIDE4
OCwgICAxODksICAgMTA5LCAgIDE4NywgICAxNDEsICAgMTQxLCAgIDE1NywgICAgODUsICAgIDg2
LAotICAgICAxMDYsICAgMTEwLCAgIDEwNSwgICAxMDUsICAgMTExLCAgICA1NSwgICAxNTUsICAg
MTA0LCAgIDE0MSwgICAxMTksCi0gICAgIDEyMCwgICAxMjEsICAgMTE2LCAgIDExOCwgICAgODMs
ICAgIDg0LCAgICA4NywgICAgODgsICAgMTIyLCAgIDEyMywKLSAgICAgIDg5LCAgICA5MCwgICAx
MjYsICAgMTI1LCAgIDEyNCwgICAgOTEsICAgIDkzLCAgICA5MiwgICAxMjcsICAgMTA3LAotICAg
ICAxMDksICAgMTg2LCAgICA3OSwgICAgODAsICAgMTgwLCAgIDExNCwgICAxMTQsICAgMjEyLCAg
IDEwNCwgICAxMDQsCi0gICAgIDExNCwgICAxMTQsICAgMTU3LCAgIDEwNCwgICAxNTgsICAgMTEy
LCAgIDEwNCwgICAxMDksICAgMTk1LCAgICA5NCwKLSAgICAgIDk1LCAgICA5NiwgICAgOTcsICAg
IDk4LCAgICA5OSwgICAxMDAsICAgMTAxLCAgIDEwMiwgICAxMDMsICAgMTEzLAotICAgICAxNTYs
ICAgMTExLCAgIDExNCwgICAxMDksICAgMTkyLCAgIDEwNiwgICAxMDcsICAgMTU4LCAgIDE5MCwg
ICAxMTMsCi0gICAgIDEwNywgICAxODgsICAgMTA2LCAgIDExMSwgICAxMTQsICAgIDc2LCAgIDEx
NCwgICAxMDUsICAgMTMzLCAgIDE1NywKLSAgICAgIDc2LCAgICA4MiwgICAxMzYsICAgMTU1LCAg
IDE0MSwgICAxNDEsICAgMTQxLCAgIDE0MywgICAxNDMsICAgMTQ0LAotICAgICAxNDQsICAgMTQ1
LCAgIDE0NSwgICAxNDUsICAgMTQ1LCAgIDE0NiwgICAxNDYsICAgMTQ3LCAgIDE0OCwgICAxNDks
Ci0gICAgIDE1MCwgICAxNTEsICAgMTUyLCAgIDE1NywgICAxMDksICAgMTk4LCAgIDE5OSwgICAy
MDAsICAgMjEzLCAgIDE1NywKLSAgICAgMTE0LCAgIDE1NywgICAxMTIsICAgMjExLCAgIDIwMiwg
ICAxNTUsICAgMTU1LCAgIDE1OCwgICAxMTMsICAgMTA3LAotICAgICAxOTAsICAgMTEzLCAgIDEx
NCwgICAxNTgsICAgMTg5LCAgIDEwNiwgICAxMTQsICAgMTA3LCAgIDExMiwgICAgNTYsCi0gICAg
IDIwMSwgICAxOTMsICAgMTkxLCAgIDIwMywgICAyMTQsICAgMTA1LCAgIDEwNSwgICAxNTcsICAg
MTcxLCAgIDE3NCwKLSAgICAgMjA5LCAgIDE5NiwgICAxMDcsICAgMTkwLCAgIDExMywgICAxOTAs
ICAgMTA3LCAgIDE1OCwgICAxNTUsICAgMTA0LAotICAgICAyMDksICAgMjE1LCAgIDIxNiwgICAx
OTgsICAgMjA1LCAgIDIwNywgICAxMjksICAgMTA1LCAgIDEwOSwgICAxOTAsCi0gICAgIDEwNywg
ICAxNTcsICAgMTE0LCAgIDEwNSwgICAgMTcsICAgMTk0LCAgIDExMywgICAxOTMsICAgMTk3LCAg
IDIwMSwKLSAgICAgMTE0LCAgIDEwNSwgICAxNTcsICAgMTk3LCAgIDE5OCwgICAxOTAsICAgMTE0
CisgICAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAg
NDAsICAgIDQxLCAgICA0MiwKKyAgICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0Nywg
ICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLAorICAgICAgNTMsICAgIDU0LCAgICA1
NSwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsCisgICAg
ICA2NCwgICAgNjUsICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwgICAgNzIsICAg
IDczLCAgICA3NCwKKyAgICAgIDc1LCAgICA3NywgICAxNjAsICAgMTYxLCAgIDE2MiwgICAxNjMs
ICAgMTY0LCAgIDE2OCwgICAxNjksICAgMTcwLAorICAgICAxNzEsICAgMTcyLCAgIDE3MywgICAx
NzQsICAgMTc1LCAgIDE3NiwgICAxNzcsICAgMTc4LCAgIDE4MSwgICAxODIsCisgICAgIDE4Mywg
ICAyMTgsICAgMjE5LCAgIDIyMCwgICAxNzcsICAgIDc2LCAgICA3NywgICAxMDgsICAgMTI5LCAg
IDEwNCwKKyAgICAgMTE0LCAgIDIyMSwgICAxMDUsICAgMTExLCAgIDE2NSwgICAxNjYsICAgMTY3
LCAgIDE3MiwgICAxNzYsICAgMTExLAorICAgICAxMTQsICAgIDc2LCAgIDEyOSwgICAgNzYsICAg
MTE0LCAgIDE1OSwgICAxNzQsICAgMTc2LCAgIDEwNiwgICAgIDAsCisgICAgIDIxOSwgICAxODEs
ICAgMTg1LCAgIDEwOCwgICAgNzYsICAgMTc5LCAgIDE4MCwgICAxMDgsICAgMjAxLCAgIDE2NiwK
KyAgICAgMTY1LCAgIDE2NywgICAxMjksICAgMTI5LCAgIDEwNCwgICAxMDYsICAgMTEzLCAgIDEw
OCwgICAxMTQsICAgMTcyLAorICAgICAxNzYsICAgMTg2LCAgIDE4NywgICAgNzYsICAgIDc4LCAg
ICA3OSwgICAgODAsICAgIDgxLCAgICA4MiwgICAgODUsCisgICAgICA4NiwgICAxMDQsICAgMTA3
LCAgIDExNSwgICAxMTYsICAgMTE3LCAgIDExOCwgICAxMzAsICAgMTMxLCAgIDEzMiwKKyAgICAg
MTM0LCAgIDEzNSwgICAxMzYsICAgMTM3LCAgIDEzOCwgICAxMzksICAgMTQwLCAgIDE0MSwgICAx
NDIsICAgMTQzLAorICAgICAxNDQsICAgMTQ1LCAgIDE0NiwgICAxNDcsICAgMTQ4LCAgIDE0OSwg
ICAxNTAsICAgMTUxLCAgIDE1MiwgICAxNTMsCisgICAgIDE1NCwgICAxNTgsICAgMTgxLCAgIDEx
NCwgICAxODYsICAgMTg0LCAgIDExMywgICAxMDUsICAgMTExLCAgICAxNCwKKyAgICAgIDE1LCAg
ICAxNiwgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAg
IDU2LAorICAgICAxMDgsICAgMTA5LCAgIDExNCwgICAxNDEsICAgMTU0LCAgIDE1NSwgICAxNTcs
ICAgMTYwLCAgIDE2MSwgICAxODEsCisgICAgIDE5MSwgICAxOTIsICAgMTkzLCAgIDE5NCwgICAy
MDIsICAgMjAzLCAgIDIwNCwgICAyMDYsICAgMjA4LCAgIDIxMCwKKyAgICAgMjE3LCAgIDEwNiwg
ICAxMDYsICAgMTEzLCAgIDEwNywgICAxNTgsICAgMTU1LCAgIDE5MCwgICAxNzYsICAgMTI5LAor
ICAgICAxODgsICAgMTg5LCAgIDEwOSwgICAxODcsICAgMTQxLCAgIDE0MSwgICAxNTcsICAgIDg1
LCAgICA4NiwgICAxMDYsCisgICAgIDExMCwgICAxMDUsICAgMTA1LCAgIDExMSwgICAgNTUsICAg
MTU1LCAgIDEwNCwgICAxNDEsICAgMTE5LCAgIDEyMCwKKyAgICAgMTIxLCAgIDExNiwgICAxMTgs
ICAgIDgzLCAgICA4NCwgICAgODcsICAgIDg4LCAgIDEyMiwgICAxMjMsICAgIDg5LAorICAgICAg
OTAsICAgMTI2LCAgIDEyNSwgICAxMjQsICAgIDkxLCAgICA5MywgICAgOTIsICAgMTI3LCAgIDEw
NywgICAxMDksCisgICAgIDE4NiwgICAgNzksICAgIDgwLCAgIDE4MCwgICAxMTQsICAgMTE0LCAg
IDIxMiwgICAxMDQsICAgMTA0LCAgIDExNCwKKyAgICAgMTE0LCAgIDE1NywgICAxMDQsICAgMTU4
LCAgIDExMiwgICAxMDQsICAgMTA5LCAgIDE5NSwgICAgOTQsICAgIDk1LAorICAgICAgOTYsICAg
IDk3LCAgICA5OCwgICAgOTksICAgMTAwLCAgIDEwMSwgICAxMDIsICAgMTAzLCAgIDExMywgICAx
NTYsCisgICAgIDExMSwgICAxMTQsICAgMTA5LCAgIDE5MiwgICAxNTgsICAgMTA3LCAgIDE1OCwg
ICAxOTAsICAgMTEzLCAgIDEwNywKKyAgICAgMTg4LCAgIDEwNiwgICAxMTEsICAgMTE0LCAgICA3
NiwgICAxMTQsICAgMTA1LCAgIDEzMywgICAxNTcsICAgIDc2LAorICAgICAgODIsICAgMTM2LCAg
IDE1NSwgICAxNDEsICAgMTQxLCAgIDE0MSwgICAxNDMsICAgMTQzLCAgIDE0NCwgICAxNDQsCisg
ICAgIDE0NSwgICAxNDUsICAgMTQ1LCAgIDE0NSwgICAxNDYsICAgMTQ2LCAgIDE0NywgICAxNDgs
ICAgMTQ5LCAgIDE1MCwKKyAgICAgMTUxLCAgIDE1MiwgICAxNTcsICAgMTA5LCAgIDE5OCwgICAx
OTksICAgMjAwLCAgIDIxMywgICAxNTcsICAgMTE0LAorICAgICAxNTcsICAgMTEyLCAgIDIxMSwg
ICAyMDIsICAgMTU1LCAgIDE1NSwgICAxMDcsICAgMTEzLCAgIDEwNywgICAxOTAsCisgICAgIDEx
MywgICAxMTQsICAgMTU4LCAgIDE4OSwgICAxMDYsICAgMTE0LCAgIDEwNywgICAxMTIsICAgIDU2
LCAgIDIwMSwKKyAgICAgMTkzLCAgIDE5MSwgICAyMDMsICAgMjE0LCAgIDEwNSwgICAxMDUsICAg
MTU3LCAgIDE3MCwgICAxNzIsICAgMjA5LAorICAgICAxOTYsICAgMTkwLCAgIDExMywgICAxOTAs
ICAgMTA3LCAgIDE1OCwgICAxNTUsICAgMTA0LCAgIDIwOSwgICAyMTUsCisgICAgIDIxNiwgICAx
OTgsICAgMjA1LCAgIDIwNywgICAxMjksICAgMTA1LCAgIDEwOSwgICAxOTAsICAgMTA3LCAgIDE1
NywKKyAgICAgMTE0LCAgIDEwNSwgICAgMTcsICAgMTk0LCAgIDExMywgICAxOTMsICAgMTk3LCAg
IDIwMSwgICAxMTQsICAgMTA1LAorICAgICAxNTcsICAgMTk3LCAgIDE5OCwgICAxOTAsICAgMTE0
CiB9OwogCiAgIC8qIFlZUjFbWVlOXSAtLSBTeW1ib2wgbnVtYmVyIG9mIHN5bWJvbCB0aGF0IHJ1
bGUgWVlOIGRlcml2ZXMuICAqLwpAQCAtMTUyNCwyNSArMTUyNCwyNCBAQAogICAgICAxNDksICAg
MTUwLCAgIDE1MCwgICAxNTEsICAgMTUxLCAgIDE1MiwgICAxNTIsICAgMTUzLCAgIDE1MywgICAx
NTQsCiAgICAgIDE1NCwgICAxNTUsICAgMTU1LCAgIDE1NiwgICAxNTYsICAgMTU2LCAgIDE1Niwg
ICAxNTYsICAgMTU2LCAgIDE1NiwKICAgICAgMTU2LCAgIDE1NiwgICAxNTYsICAgMTU2LCAgIDE1
NywgICAxNTcsICAgMTU4LCAgIDE1OSwgICAxNjAsICAgMTYwLAotICAgICAxNjAsICAgMTYwLCAg
IDE2MCwgICAxNjAsICAgMTYwLCAgIDE2MSwgICAxNjIsICAgMTYyLCAgIDE2MywgICAxNjMsCi0g
ICAgIDE2NCwgICAxNjUsICAgMTY1LCAgIDE2NiwgICAxNjYsICAgMTY2LCAgIDE2NiwgICAxNjcs
ICAgMTY3LCAgIDE2NywKLSAgICAgMTY3LCAgIDE2OCwgICAxNjksICAgMTY5LCAgIDE2OSwgICAx
NjksICAgMTY5LCAgIDE2OSwgICAxNzAsICAgMTcwLAotICAgICAxNzAsICAgMTcwLCAgIDE3MCwg
ICAxNzAsICAgMTcwLCAgIDE3MSwgICAxNzEsICAgMTcyLCAgIDE3MiwgICAxNzMsCi0gICAgIDE3
NCwgICAxNzQsICAgMTc0LCAgIDE3NCwgICAxNzQsICAgMTc0LCAgIDE3NCwgICAxNzQsICAgMTc0
LCAgIDE3NCwKLSAgICAgMTc1LCAgIDE3NSwgICAxNzUsICAgMTc1LCAgIDE3NSwgICAxNzUsICAg
MTc2LCAgIDE3NiwgICAxNzcsICAgMTc3LAotICAgICAxNzcsICAgMTc4LCAgIDE3OSwgICAxNzks
ICAgMTgwLCAgIDE4MCwgICAxODAsICAgMTgxLCAgIDE4MSwgICAxODEsCisgICAgIDE2MCwgICAx
NjAsICAgMTYwLCAgIDE2MCwgICAxNjAsICAgMTYwLCAgIDE2MSwgICAxNjIsICAgMTYyLCAgIDE2
MywKKyAgICAgMTYzLCAgIDE2NCwgICAxNjUsICAgMTY1LCAgIDE2NiwgICAxNjYsICAgMTY2LCAg
IDE2NiwgICAxNjcsICAgMTY4LAorICAgICAxNjgsICAgMTY4LCAgIDE2OCwgICAxNjgsICAgMTY4
LCAgIDE2OSwgICAxNjksICAgMTY5LCAgIDE2OSwgICAxNjksCisgICAgIDE2OSwgICAxNzAsICAg
MTcwLCAgIDE3MSwgICAxNzEsICAgMTcyLCAgIDE3MiwgICAxNzMsICAgMTc0LCAgIDE3NCwKKyAg
ICAgMTc0LCAgIDE3NCwgICAxNzQsICAgMTc1LCAgIDE3NSwgICAxNzUsICAgMTc1LCAgIDE3NSwg
ICAxNzUsICAgMTc1LAorICAgICAxNzUsICAgMTc2LCAgIDE3NywgICAxNzcsICAgMTc3LCAgIDE3
OCwgICAxNzksICAgMTc5LCAgIDE4MCwgICAxODAsCisgICAgIDE4MCwgICAxODEsICAgMTgxLCAg
IDE4MSwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwKICAgICAgMTgy
LCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIs
ICAgMTgyLAogICAgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAx
ODIsICAgMTgyLCAgIDE4MiwgICAxODIsCiAgICAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4Miwg
ICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwKLSAgICAgMTgyLCAgIDE4
MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgy
LAotICAgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4NCwgICAxODMsICAg
MTg1LCAgIDE4MywgICAxODYsCi0gICAgIDE4NiwgICAxODcsICAgMTg3LCAgIDE4OCwgICAxODgs
ICAgMTg5LCAgIDE4OSwgICAxOTAsICAgMTkxLCAgIDE5MiwKLSAgICAgMTkyLCAgIDE5MywgICAx
OTMsICAgMTkzLCAgIDE5MywgICAxOTMsICAgMTkzLCAgIDE5MywgICAxOTQsICAgMTk1LAotICAg
ICAxOTYsICAgMTk0LCAgIDE5NywgICAxOTcsICAgMTk5LCAgIDE5OCwgICAyMDAsICAgMTk4LCAg
IDIwMSwgICAyMDEsCi0gICAgIDIwMiwgICAyMDIsICAgMjAzLCAgIDIwMywgICAyMDQsICAgMjA1
LCAgIDIwNSwgICAyMDcsICAgMjA2LCAgIDIwOCwKLSAgICAgMjA4LCAgIDIwOSwgICAyMDksICAg
MjExLCAgIDIxMCwgICAyMTIsICAgMjEwLCAgIDIxMywgICAyMTAsICAgMjE0LAotICAgICAyMTQs
ICAgMjE1LCAgIDIxNSwgICAyMTYsICAgMjE2LCAgIDIxNywgICAyMTcsICAgMjE3LCAgIDIxNywg
ICAyMTcsCi0gICAgIDIxOCwgICAyMTgsICAgMjE5LCAgIDIxOSwgICAyMjEsICAgMjIwCisgICAg
IDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAg
MTgyLCAgIDE4NCwKKyAgICAgMTgzLCAgIDE4NSwgICAxODMsICAgMTg2LCAgIDE4NiwgICAxODcs
ICAgMTg3LCAgIDE4OCwgICAxODgsICAgMTg5LAorICAgICAxODksICAgMTkwLCAgIDE5MSwgICAx
OTIsICAgMTkyLCAgIDE5MywgICAxOTMsICAgMTkzLCAgIDE5MywgICAxOTMsCisgICAgIDE5Mywg
ICAxOTMsICAgMTk0LCAgIDE5NSwgICAxOTYsICAgMTk0LCAgIDE5NywgICAxOTcsICAgMTk5LCAg
IDE5OCwKKyAgICAgMjAwLCAgIDE5OCwgICAyMDEsICAgMjAxLCAgIDIwMiwgICAyMDIsICAgMjAz
LCAgIDIwMywgICAyMDQsICAgMjA1LAorICAgICAyMDUsICAgMjA3LCAgIDIwNiwgICAyMDgsICAg
MjA4LCAgIDIwOSwgICAyMDksICAgMjExLCAgIDIxMCwgICAyMTIsCisgICAgIDIxMCwgICAyMTMs
ICAgMjEwLCAgIDIxNCwgICAyMTQsICAgMjE1LCAgIDIxNSwgICAyMTYsICAgMjE2LCAgIDIxNywK
KyAgICAgMjE3LCAgIDIxNywgICAyMTcsICAgMjE3LCAgIDIxOCwgICAyMTgsICAgMjE5LCAgIDIx
OSwgICAyMjEsICAgMjIwCiB9OwogCiAgIC8qIFlZUjJbWVlOXSAtLSBOdW1iZXIgb2Ygc3ltYm9s
cyBvbiB0aGUgcmlnaHQgaGFuZCBzaWRlIG9mIHJ1bGUgWVlOLiAgKi8KQEAgLTE1NTcsMjUgKzE1
NTYsMjQgQEAKICAgICAgICAzLCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMywgICAgIDEsICAg
ICAzLCAgICAgMSwgICAgIDMsICAgICAxLAogICAgICAgIDUsICAgICAxLCAgICAgMywgICAgIDEs
ICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsCiAgICAgICAgMSwgICAg
IDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMSwgICAgIDIsICAgICAyLCAgICAg
MiwKLSAgICAgICA0LCAgICAgNSwgICAgIDYsICAgICA5LCAgICAgMiwgICAgIDIsICAgICAxLCAg
ICAgMSwgICAgIDIsICAgICAzLAotICAgICAgIDMsICAgICAyLCAgICAgNSwgICAgIDMsICAgICAy
LCAgICAgMywgICAgIDIsICAgICAwLCAgICAgMSwgICAgIDEsCi0gICAgICAgMSwgICAgIDEsICAg
ICAxLCAgICAgMywgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDUsICAgICAxLCAgICAgMiwKLSAg
ICAgICA1LCAgICAgNiwgICAgIDcsICAgICA0LCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgMSwg
ICAgIDEsICAgICAxLAotICAgICAgIDEsICAgICAxLCAgICAgMiwgICAgIDEsICAgICAyLCAgICAg
MSwgICAgIDEsICAgICAyLCAgICAgMiwgICAgIDMsCi0gICAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMiwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMSwKLSAgICAgICAx
LCAgICAgNCwgICAgIDEsICAgICAzLCAgICAgMSwgICAgIDMsICAgICAzLCAgICAgMSwgICAgIDMs
ICAgICA0LAorICAgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDksICAgICAyLCAgICAgMywgICAg
IDIsICAgICAxLCAgICAgMSwgICAgIDIsCisgICAgICAgMywgICAgIDMsICAgICAyLCAgICAgNSwg
ICAgIDIsICAgICAxLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwKKyAgICAgICAzLCAgICAg
NiwgICAgIDcsICAgICA4LCAgICAgNSwgICAgIDEsICAgICAyLCAgICAgNSwgICAgIDYsICAgICA3
LAorICAgICAgIDQsICAgICAxLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDIsICAg
ICAxLCAgICAgMSwgICAgIDEsCiAgICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEs
ICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwKKyAgICAgICAxLCAgICAgMSwgICAg
IDEsICAgICAxLCAgICAgMSwgICAgIDQsICAgICAxLCAgICAgMywgICAgIDEsICAgICAzLAorICAg
ICAgIDMsICAgICAxLCAgICAgMywgICAgIDQsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMSwgICAgIDEsCiAgICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAx
LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwKICAgICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLAogICAgICAgIDEs
ICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwg
ICAgIDEsCi0gICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAwLCAgICAg
NiwgICAgIDAsICAgICA1LCAgICAgMSwKLSAgICAgICAyLCAgICAgMywgICAgIDQsICAgICAxLCAg
ICAgMywgICAgIDEsICAgICA0LCAgICAgMSwgICAgIDEsICAgICAxLAotICAgICAgIDEsICAgICAx
LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMiwgICAgIDAs
Ci0gICAgICAgMCwgICAgIDUsICAgICAxLCAgICAgMSwgICAgIDAsICAgICAyLCAgICAgMCwgICAg
IDIsICAgICAyLCAgICAgMywKLSAgICAgICAxLCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgNSwg
ICAgIDMsICAgICAxLCAgICAgMCwgICAgIDYsICAgICAzLAotICAgICAgIDIsICAgICAxLCAgICAg
NCwgICAgIDAsICAgICA2LCAgICAgMCwgICAgIDgsICAgICAwLCAgICAgNywgICAgIDEsCi0gICAg
ICAgMSwgICAgIDEsICAgICAwLCAgICAgMiwgICAgIDMsICAgICAyLCAgICAgMiwgICAgIDIsICAg
ICAzLCAgICAgMiwKLSAgICAgICAxLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMCwgICAgIDMK
KyAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAg
MSwgICAgIDEsICAgICAwLAorICAgICAgIDYsICAgICAwLCAgICAgNSwgICAgIDEsICAgICAyLCAg
ICAgMywgICAgIDQsICAgICAxLCAgICAgMywgICAgIDEsCisgICAgICAgNCwgICAgIDEsICAgICAx
LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwKKyAgICAg
ICAxLCAgICAgMSwgICAgIDIsICAgICAwLCAgICAgMCwgICAgIDUsICAgICAxLCAgICAgMSwgICAg
IDAsICAgICAyLAorICAgICAgIDAsICAgICAyLCAgICAgMiwgICAgIDMsICAgICAxLCAgICAgMiwg
ICAgIDEsICAgICAyLCAgICAgNSwgICAgIDMsCisgICAgICAgMSwgICAgIDAsICAgICA2LCAgICAg
MywgICAgIDIsICAgICAxLCAgICAgNCwgICAgIDAsICAgICA2LCAgICAgMCwKKyAgICAgICA4LCAg
ICAgMCwgICAgIDcsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAwLCAgICAgMiwgICAgIDMsICAg
ICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMywgICAgIDIsICAgICAxLCAgICAgMiwgICAgIDEs
ICAgICAxLCAgICAgMCwgICAgIDMKIH07CiAKIApAQCAtMjQ3Myw4ICsyNDcxLDcgQEAKICAgY2Fz
ZSAxNzoKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmludGVnZXJFcnJvckNoZWNrKCh5
eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgIltdIikpCi0gICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgIGNvbnRleHQtPmNoZWNrSXNTY2FsYXJJbnRlZ2VyKCh5
eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgIltdIik7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KTsKICAgICB9CiAKQEAgLTI1MDUsNyArMjUwMiw3IEBACiAgIGNhc2UgMjA6CiAKICAgICB7Ci0g
ICAgICAgIEVTM19PTkxZKCIiLCAoeXlsc3BbMF0pLCAibWV0aG9kcyIpOworICAgICAgICBFUzNf
T1JfTkVXRVIoIiIsICh5eWxzcFswXSksICJtZXRob2RzIik7CiAgICAgICAgICh5eXZhbC5pbnRl
cm0pID0gKHl5dnNwWzBdLmludGVybSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLm5vZGVQYWly
Lm5vZGUyID0gKHl5dnNwWy0yXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICB9CkBAIC0y
NTUyLDcgKzI1NDksNyBAQAogICAgICAgICBjb25zdCBUVHlwZSAqdHlwZSA9IG5ldyBUVHlwZSgo
eXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKSk7CiAgICAgICAgICh5
eXZzcFstMV0uaW50ZXJtLmZ1bmN0aW9uKS0+YWRkUGFyYW1ldGVyKFRDb25zdFBhcmFtZXRlcih0
eXBlKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmZ1bmN0aW9uID0gKHl5dnNwWy0xXS5pbnRl
cm0uZnVuY3Rpb24pOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5ub2RlUGFpci5ub2RlMSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKCh5eXZzcFswXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgKHl5bHNwWzBdKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLm5vZGVQYWly
Lm5vZGUxID0gVEludGVybWVkaWF0ZTo6TWFrZUFnZ3JlZ2F0ZSgoeXl2c3BbMF0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSksICh5eWxzcFswXSkpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMjU4
MCw3ICsyNTc3LDcgQEAKIAogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFswXS5pbnRlcm0udHlw
ZSkuYXJyYXkpIHsKLSAgICAgICAgICAgIEVTM19PTkxZKCJbXSIsICh5eWxzcFswXSksICJhcnJh
eSBjb25zdHJ1Y3RvciIpOworICAgICAgICAgICAgRVMzX09SX05FV0VSKCJbXSIsICh5eWxzcFsw
XSksICJhcnJheSBjb25zdHJ1Y3RvciIpOwogICAgICAgICB9CiAgICAgICAgICh5eXZhbC5pbnRl
cm0uZnVuY3Rpb24pID0gY29udGV4dC0+YWRkQ29uc3RydWN0b3JGdW5jKCh5eXZzcFswXS5pbnRl
cm0udHlwZSkpOwogICAgIH0KQEAgLTI1OTAsOCArMjU4Nyw3IEBACiAgIGNhc2UgMjk6CiAKICAg
ICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5bHNwWzBdKSwg
Kih5eXZzcFswXS5sZXgpLnN0cmluZykpCi0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CisgICAgICAgIGNvbnRleHQtPmNoZWNrSXNOb3RSZXNlcnZlZCgoeXlsc3BbMF0pLCAqKHl5dnNw
WzBdLmxleCkuc3RyaW5nKTsKICAgICAgICAgY29uc3QgVFR5cGUgKnR5cGUgPSBUQ2FjaGU6Omdl
dFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKICAgICAgICAgVEZ1bmN0aW9uICpmdW5jdGlv
biA9IG5ldyBURnVuY3Rpb24oKHl5dnNwWzBdLmxleCkuc3RyaW5nLCB0eXBlKTsKICAgICAgICAg
KHl5dmFsLmludGVybS5mdW5jdGlvbikgPSBmdW5jdGlvbjsKQEAgLTI2MDIsOCArMjU5OCw3IEBA
CiAgIGNhc2UgMzA6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9y
Q2hlY2soKHl5bHNwWzBdKSwgKih5eXZzcFswXS5sZXgpLnN0cmluZykpCi0gICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgIGNvbnRleHQtPmNoZWNrSXNOb3RSZXNlcnZlZCgo
eXlsc3BbMF0pLCAqKHl5dnNwWzBdLmxleCkuc3RyaW5nKTsKICAgICAgICAgY29uc3QgVFR5cGUg
KnR5cGUgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKICAgICAgICAg
VEZ1bmN0aW9uICpmdW5jdGlvbiA9IG5ldyBURnVuY3Rpb24oKHl5dnNwWzBdLmxleCkuc3RyaW5n
LCB0eXBlKTsKICAgICAgICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikgPSBmdW5jdGlvbjsKQEAg
LTI2NjcsNyArMjY2Miw3IEBACiAgIGNhc2UgMzg6CiAKICAgICB7Ci0gICAgICAgIEVTM19PTkxZ
KCJ+IiwgKHl5bG9jKSwgImJpdC13aXNlIG9wZXJhdG9yIik7CisgICAgICAgIEVTM19PUl9ORVdF
UigifiIsICh5eWxvYyksICJiaXQtd2lzZSBvcGVyYXRvciIpOwogICAgICAgICAoeXl2YWwuaW50
ZXJtKS5vcCA9IEVPcEJpdHdpc2VOb3Q7CiAgICAgfQogCkBAIC0yNjk4LDcgKzI2OTMsNyBAQAog
ICBjYXNlIDQyOgogCiAgICAgewotICAgICAgICBFUzNfT05MWSgiJSIsICh5eWxzcFstMV0pLCAi
aW50ZWdlciBtb2R1bHVzIG9wZXJhdG9yIik7CisgICAgICAgIEVTM19PUl9ORVdFUigiJSIsICh5
eWxzcFstMV0pLCAiaW50ZWdlciBtb2R1bHVzIG9wZXJhdG9yIik7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZEJpbmFyeU1hdGgoRU9wSU1vZCwg
KHl5dnNwWy0yXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWzBdLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAoeXlsc3BbLTFdKSk7CiAgICAgfQogCkBAIC0yNzM1LDcgKzI3MzAsNyBA
QAogICBjYXNlIDQ3OgogCiAgICAgewotICAgICAgICBFUzNfT05MWSgiPDwiLCAoeXlsc3BbLTFd
KSwgImJpdC13aXNlIG9wZXJhdG9yIik7CisgICAgICAgIEVTM19PUl9ORVdFUigiPDwiLCAoeXls
c3BbLTFdKSwgImJpdC13aXNlIG9wZXJhdG9yIik7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZEJpbmFyeU1hdGgoRU9wQml0U2hpZnRMZWZ0LCAo
eXl2c3BbLTJdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbMF0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksICh5eWxzcFstMV0pKTsKICAgICB9CiAKQEAgLTI3NDQsNyArMjczOSw3IEBA
CiAgIGNhc2UgNDg6CiAKICAgICB7Ci0gICAgICAgIEVTM19PTkxZKCI+PiIsICh5eWxzcFstMV0p
LCAiYml0LXdpc2Ugb3BlcmF0b3IiKTsKKyAgICAgICAgRVMzX09SX05FV0VSKCI+PiIsICh5eWxz
cFstMV0pLCAiYml0LXdpc2Ugb3BlcmF0b3IiKTsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkQmluYXJ5TWF0aChFT3BCaXRTaGlmdFJpZ2h0LCAo
eXl2c3BbLTJdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbMF0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksICh5eWxzcFstMV0pKTsKICAgICB9CiAKQEAgLTI4MTksNyArMjgxNCw3IEBA
CiAgIGNhc2UgNTg6CiAKICAgICB7Ci0gICAgICAgIEVTM19PTkxZKCImIiwgKHl5bHNwWy0xXSks
ICJiaXQtd2lzZSBvcGVyYXRvciIpOworICAgICAgICBFUzNfT1JfTkVXRVIoIiYiLCAoeXlsc3Bb
LTFdKSwgImJpdC13aXNlIG9wZXJhdG9yIik7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZEJpbmFyeU1hdGgoRU9wQml0d2lzZUFuZCwgKHl5dnNw
Wy0yXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCAoeXlsc3BbLTFdKSk7CiAgICAgfQogCkBAIC0yODM0LDcgKzI4MjksNyBAQAogICBj
YXNlIDYwOgogCiAgICAgewotICAgICAgICBFUzNfT05MWSgiXiIsICh5eWxzcFstMV0pLCAiYml0
LXdpc2Ugb3BlcmF0b3IiKTsKKyAgICAgICAgRVMzX09SX05FV0VSKCJeIiwgKHl5bHNwWy0xXSks
ICJiaXQtd2lzZSBvcGVyYXRvciIpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSBjb250ZXh0LT5hZGRCaW5hcnlNYXRoKEVPcEJpdHdpc2VYb3IsICh5eXZzcFstMl0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5bHNwWy0xXSkpOwogICAgIH0KIApAQCAtMjg0OSw3ICsyODQ0LDcgQEAKICAgY2FzZSA2
MjoKIAogICAgIHsKLSAgICAgICAgRVMzX09OTFkoInwiLCAoeXlsc3BbLTFdKSwgImJpdC13aXNl
IG9wZXJhdG9yIik7CisgICAgICAgIEVTM19PUl9ORVdFUigifCIsICh5eWxzcFstMV0pLCAiYml0
LXdpc2Ugb3BlcmF0b3IiKTsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gY29udGV4dC0+YWRkQmluYXJ5TWF0aChFT3BCaXR3aXNlT3IsICh5eXZzcFstMl0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5
bHNwWy0xXSkpOwogICAgIH0KIApAQCAtMjkyMCw4ICsyOTE1LDcgQEAKICAgY2FzZSA3MjoKIAog
ICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5bHNwWy0xXSks
ICJhc3NpZ24iLCAoeXl2c3BbLTJdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKLSAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgY29udGV4dC0+Y2hlY2tDYW5CZUxWYWx1
ZSgoeXlsc3BbLTFdKSwgImFzc2lnbiIsICh5eXZzcFstMl0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5h
ZGRBc3NpZ24oKHl5dnNwWy0xXS5pbnRlcm0pLm9wLCAoeXl2c3BbLTJdLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLCAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFstMV0p
KTsKICAgICB9CiAKQEAgLTI5NDgsNyArMjk0Miw3IEBACiAgIGNhc2UgNzY6CiAKICAgICB7Ci0g
ICAgICAgIEVTM19PTkxZKCIlPSIsICh5eWxvYyksICJpbnRlZ2VyIG1vZHVsdXMgb3BlcmF0b3Ii
KTsKKyAgICAgICAgRVMzX09SX05FV0VSKCIlPSIsICh5eWxvYyksICJpbnRlZ2VyIG1vZHVsdXMg
b3BlcmF0b3IiKTsKICAgICAgICAgKHl5dmFsLmludGVybSkub3AgPSBFT3BJTW9kQXNzaWduOwog
ICAgIH0KIApAQCAtMjk2OSw3ICsyOTYzLDcgQEAKICAgY2FzZSA3OToKIAogICAgIHsKLSAgICAg
ICAgRVMzX09OTFkoIjw8PSIsICh5eWxvYyksICJiaXQtd2lzZSBvcGVyYXRvciIpOworICAgICAg
ICBFUzNfT1JfTkVXRVIoIjw8PSIsICh5eWxvYyksICJiaXQtd2lzZSBvcGVyYXRvciIpOwogICAg
ICAgICAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcEJpdFNoaWZ0TGVmdEFzc2lnbjsKICAgICB9CiAK
QEAgLTI5NzgsNyArMjk3Miw3IEBACiAgIGNhc2UgODA6CiAKICAgICB7Ci0gICAgICAgIEVTM19P
TkxZKCI+Pj0iLCAoeXlsb2MpLCAiYml0LXdpc2Ugb3BlcmF0b3IiKTsKKyAgICAgICAgRVMzX09S
X05FV0VSKCI+Pj0iLCAoeXlsb2MpLCAiYml0LXdpc2Ugb3BlcmF0b3IiKTsKICAgICAgICAgKHl5
dmFsLmludGVybSkub3AgPSBFT3BCaXRTaGlmdFJpZ2h0QXNzaWduOwogICAgIH0KIApAQCAtMjk4
Nyw3ICsyOTgxLDcgQEAKICAgY2FzZSA4MToKIAogICAgIHsKLSAgICAgICAgRVMzX09OTFkoIiY9
IiwgKHl5bG9jKSwgImJpdC13aXNlIG9wZXJhdG9yIik7CisgICAgICAgIEVTM19PUl9ORVdFUigi
Jj0iLCAoeXlsb2MpLCAiYml0LXdpc2Ugb3BlcmF0b3IiKTsKICAgICAgICAgKHl5dmFsLmludGVy
bSkub3AgPSBFT3BCaXR3aXNlQW5kQXNzaWduOwogICAgIH0KIApAQCAtMjk5Niw3ICsyOTkwLDcg
QEAKICAgY2FzZSA4MjoKIAogICAgIHsKLSAgICAgICAgRVMzX09OTFkoIl49IiwgKHl5bG9jKSwg
ImJpdC13aXNlIG9wZXJhdG9yIik7CisgICAgICAgIEVTM19PUl9ORVdFUigiXj0iLCAoeXlsb2Mp
LCAiYml0LXdpc2Ugb3BlcmF0b3IiKTsKICAgICAgICAgKHl5dmFsLmludGVybSkub3AgPSBFT3BC
aXR3aXNlWG9yQXNzaWduOwogICAgIH0KIApAQCAtMzAwNSw3ICsyOTk5LDcgQEAKICAgY2FzZSA4
MzoKIAogICAgIHsKLSAgICAgICAgRVMzX09OTFkoInw9IiwgKHl5bG9jKSwgImJpdC13aXNlIG9w
ZXJhdG9yIik7CisgICAgICAgIEVTM19PUl9ORVdFUigifD0iLCAoeXlsb2MpLCAiYml0LXdpc2Ug
b3BlcmF0b3IiKTsKICAgICAgICAgKHl5dmFsLmludGVybSkub3AgPSBFT3BCaXR3aXNlT3JBc3Np
Z247CiAgICAgfQogCkBAIC0zMDMwLDggKzMwMjQsNyBAQAogICBjYXNlIDg2OgogCiAgICAgewot
ICAgICAgICBpZiAoY29udGV4dC0+Y29uc3RFcnJvckNoZWNrKCh5eXZzcFswXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSkpCi0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAg
IGNvbnRleHQtPmNoZWNrSXNDb25zdCgoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkp
OwogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbMF0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgfQogCkBAIC0zMDQwLDggKzMwMzMsNyBAQAogICBj
YXNlIDg3OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJh
dGlvbigoeXlsc3BbLTFdKSwgKih5eXZzcFstMV0ubGV4KS5zdHJpbmcpKQotICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICBjb250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0
aW9uKCh5eWxzcFstMV0pLCAqKHl5dnNwWy0xXS5sZXgpLnN0cmluZyk7CiAgICAgICAgICh5eXZh
bC5sZXgpID0gKHl5dnNwWy0xXS5sZXgpOwogICAgIH0KIApAQCAtMzA3MSwxMSArMzA2Myw5IEBA
CiAgICAgewogICAgICAgICBpZiAoKCh5eXZzcFstMl0uaW50ZXJtLnByZWNpc2lvbikgPT0gRWJw
SGlnaCkgJiYgKGNvbnRleHQtPmdldFNoYWRlclR5cGUoKSA9PSBHTF9GUkFHTUVOVF9TSEFERVIp
ICYmICFjb250ZXh0LT5nZXRGcmFnbWVudFByZWNpc2lvbkhpZ2goKSkgewogICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoKHl5bHNwWy0zXSksICJwcmVjaXNpb24gaXMgbm90IHN1cHBvcnRlZCBp
biBmcmFnbWVudCBzaGFkZXIiLCAiaGlnaHAiKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgfQogICAgICAgICBpZiAoIWNvbnRleHQtPnN5bWJvbFRhYmxlLnNldERl
ZmF1bHRQcmVjaXNpb24oICh5eXZzcFstMV0uaW50ZXJtLnR5cGUpLCAoeXl2c3BbLTJdLmludGVy
bS5wcmVjaXNpb24pICkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFstM10p
LCAiaWxsZWdhbCB0eXBlIGFyZ3VtZW50IGZvciBkZWZhdWx0IHByZWNpc2lvbiBxdWFsaWZpZXIi
LCBnZXRCYXNpY1N0cmluZygoeXl2c3BbLTFdLmludGVybS50eXBlKS50eXBlKSk7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXls
c3BbLTNdKSwgImlsbGVnYWwgdHlwZSBhcmd1bWVudCBmb3IgZGVmYXVsdCBwcmVjaXNpb24gcXVh
bGlmaWVyIiwgZ2V0QmFzaWNTdHJpbmcoKHl5dnNwWy0xXS5pbnRlcm0udHlwZSkuZ2V0QmFzaWNU
eXBlKCkpKTsKICAgICAgICAgfQogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0g
MDsKICAgICB9CkBAIC0zMDg1LDggKzMwNzUsOCBAQAogICBjYXNlIDkxOgogCiAgICAgewotICAg
ICAgICBFUzNfT05MWShnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWy00XS5pbnRlcm0udHlwZSku
cXVhbGlmaWVyKSwgKHl5bHNwWy00XSksICJpbnRlcmZhY2UgYmxvY2tzIik7Ci0gICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5hZGRJbnRlcmZhY2VCbG9jaygoeXl2
c3BbLTRdLmludGVybS50eXBlKSwgKHl5bHNwWy0zXSksICooeXl2c3BbLTNdLmxleCkuc3RyaW5n
LCAoeXl2c3BbLTJdLmludGVybS5maWVsZExpc3QpLCBOVUxMLCAoeXlsb2MpLCBOVUxMLCAoeXls
b2MpKTsKKyAgICAgICAgRVMzX09SX05FV0VSKCh5eXZzcFstM10ubGV4KS5zdHJpbmctPmNfc3Ry
KCksICh5eWxzcFstNF0pLCAiaW50ZXJmYWNlIGJsb2NrcyIpOworICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+YWRkSW50ZXJmYWNlQmxvY2soKih5eXZzcFstNF0u
aW50ZXJtLnR5cGVRdWFsaWZpZXJCdWlsZGVyKSwgKHl5bHNwWy0zXSksICooeXl2c3BbLTNdLmxl
eCkuc3RyaW5nLCAoeXl2c3BbLTJdLmludGVybS5maWVsZExpc3QpLCBOVUxMLCAoeXlsb2MpLCBO
VUxMLCAoeXlsb2MpKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTMwOTQsOCArMzA4NCw4IEBA
CiAgIGNhc2UgOTI6CiAKICAgICB7Ci0gICAgICAgIEVTM19PTkxZKGdldFF1YWxpZmllclN0cmlu
ZygoeXl2c3BbLTVdLmludGVybS50eXBlKS5xdWFsaWZpZXIpLCAoeXlsc3BbLTVdKSwgImludGVy
ZmFjZSBibG9ja3MiKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRl
eHQtPmFkZEludGVyZmFjZUJsb2NrKCh5eXZzcFstNV0uaW50ZXJtLnR5cGUpLCAoeXlsc3BbLTRd
KSwgKih5eXZzcFstNF0ubGV4KS5zdHJpbmcsICh5eXZzcFstM10uaW50ZXJtLmZpZWxkTGlzdCks
ICh5eXZzcFstMV0ubGV4KS5zdHJpbmcsICh5eWxzcFstMV0pLCBOVUxMLCAoeXlsb2MpKTsKKyAg
ICAgICAgRVMzX09SX05FV0VSKCh5eXZzcFstNF0ubGV4KS5zdHJpbmctPmNfc3RyKCksICh5eWxz
cFstNV0pLCAiaW50ZXJmYWNlIGJsb2NrcyIpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bU5vZGUpID0gY29udGV4dC0+YWRkSW50ZXJmYWNlQmxvY2soKih5eXZzcFstNV0uaW50ZXJtLnR5
cGVRdWFsaWZpZXJCdWlsZGVyKSwgKHl5bHNwWy00XSksICooeXl2c3BbLTRdLmxleCkuc3RyaW5n
LCAoeXl2c3BbLTNdLmludGVybS5maWVsZExpc3QpLCAoeXl2c3BbLTFdLmxleCkuc3RyaW5nLCAo
eXlsc3BbLTFdKSwgTlVMTCwgKHl5bG9jKSk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zMTAz
LDggKzMwOTMsOCBAQAogICBjYXNlIDkzOgogCiAgICAgewotICAgICAgICBFUzNfT05MWShnZXRR
dWFsaWZpZXJTdHJpbmcoKHl5dnNwWy04XS5pbnRlcm0udHlwZSkucXVhbGlmaWVyKSwgKHl5bHNw
Wy04XSksICJpbnRlcmZhY2UgYmxvY2tzIik7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
Tm9kZSkgPSBjb250ZXh0LT5hZGRJbnRlcmZhY2VCbG9jaygoeXl2c3BbLThdLmludGVybS50eXBl
KSwgKHl5bHNwWy03XSksICooeXl2c3BbLTddLmxleCkuc3RyaW5nLCAoeXl2c3BbLTZdLmludGVy
bS5maWVsZExpc3QpLCAoeXl2c3BbLTRdLmxleCkuc3RyaW5nLCAoeXlsc3BbLTRdKSwgKHl5dnNw
Wy0yXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWy0zXSkpOworICAgICAgICBFUzNf
T1JfTkVXRVIoKHl5dnNwWy03XS5sZXgpLnN0cmluZy0+Y19zdHIoKSwgKHl5bHNwWy04XSksICJp
bnRlcmZhY2UgYmxvY2tzIik7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBj
b250ZXh0LT5hZGRJbnRlcmZhY2VCbG9jaygqKHl5dnNwWy04XS5pbnRlcm0udHlwZVF1YWxpZmll
ckJ1aWxkZXIpLCAoeXlsc3BbLTddKSwgKih5eXZzcFstN10ubGV4KS5zdHJpbmcsICh5eXZzcFst
Nl0uaW50ZXJtLmZpZWxkTGlzdCksICh5eXZzcFstNF0ubGV4KS5zdHJpbmcsICh5eWxzcFstNF0p
LCAoeXl2c3BbLTJdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbLTNdKSk7CiAgICAg
fQogCiAgICAgYnJlYWs7CkBAIC0zMTEyLDcgKzMxMDIsNyBAQAogICBjYXNlIDk0OgogCiAgICAg
ewotICAgICAgICBjb250ZXh0LT5wYXJzZUdsb2JhbExheW91dFF1YWxpZmllcigoeXl2c3BbLTFd
LmludGVybS50eXBlKSk7CisgICAgICAgIGNvbnRleHQtPnBhcnNlR2xvYmFsTGF5b3V0UXVhbGlm
aWVyKCooeXl2c3BbLTFdLmludGVybS50eXBlUXVhbGlmaWVyQnVpbGRlcikpOwogICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gMDsKICAgICB9CiAKQEAgLTMxMjEsNyArMzExMSw3
IEBACiAgIGNhc2UgOTU6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmZ1bmN0aW9u
ID0gY29udGV4dC0+cGFyc2VGdW5jdGlvbkRlY2xhcmF0b3IoKHl5bHNwWzBdKSwgKHl5dnNwWy0x
XS5pbnRlcm0uZnVuY3Rpb24pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9
IGNvbnRleHQtPnBhcnNlSW52YXJpYW50RGVjbGFyYXRpb24oKih5eXZzcFstMl0uaW50ZXJtLnR5
cGVRdWFsaWZpZXJCdWlsZGVyKSwgKHl5bHNwWy0xXSksICh5eXZzcFstMV0ubGV4KS5zdHJpbmcs
ICh5eXZzcFstMV0ubGV4KS5zeW1ib2wpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzEyOSw3
ICszMTE5LDggQEAKICAgY2FzZSA5NjoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5m
dW5jdGlvbikgPSAoeXl2c3BbMF0uaW50ZXJtLmZ1bmN0aW9uKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybSkuZnVuY3Rpb24gPSBjb250ZXh0LT5wYXJzZUZ1bmN0aW9uRGVjbGFyYXRvcigoeXlsc3Bb
MF0pLCAoeXl2c3BbLTFdLmludGVybS5mdW5jdGlvbikpOworICAgICAgICBjb250ZXh0LT5leGl0
RnVuY3Rpb25EZWNsYXJhdGlvbigpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzE0NSw2ICsz
MTM2LDE0IEBACiAgIGNhc2UgOTg6CiAKICAgICB7CisgICAgICAgICh5eXZhbC5pbnRlcm0uZnVu
Y3Rpb24pID0gKHl5dnNwWzBdLmludGVybS5mdW5jdGlvbik7CisgICAgfQorCisgICAgYnJlYWs7
CisKKyAgY2FzZSA5OToKKworICAgIHsKICAgICAgICAgLy8gQWRkIHRoZSBwYXJhbWV0ZXIKICAg
ICAgICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikgPSAoeXl2c3BbLTFdLmludGVybS5mdW5jdGlv
bik7CiAgICAgICAgIGlmICgoeXl2c3BbMF0uaW50ZXJtKS5wYXJhbS50eXBlLT5nZXRCYXNpY1R5
cGUoKSAhPSBFYnRWb2lkKQpAQCAtMzE1NSw3ICszMTU0LDcgQEAKIAogICAgIGJyZWFrOwogCi0g
IGNhc2UgOTk6CisgIGNhc2UgMTAwOgogCiAgICAgewogICAgICAgICAvLwpAQCAtMzE2Nyw3ICsz
MTY2LDYgQEAKICAgICAgICAgICAgIC8vIFRoaXMgcGFyYW1ldGVyID4gZmlyc3QgaXMgdm9pZAog
ICAgICAgICAgICAgLy8KICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFstMV0pLCAi
Y2Fubm90IGJlIGFuIGFyZ3VtZW50IHR5cGUgZXhjZXB0IGZvciAnKHZvaWQpJyIsICJ2b2lkIik7
Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBkZWxldGUgKHl5
dnNwWzBdLmludGVybSkucGFyYW0udHlwZTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IC8vIEFkZCB0aGUgcGFyYW1ldGVyCkBAIC0zMTc4LDQzICszMTc2LDI0IEBACiAKICAgICBicmVh
azsKIAotICBjYXNlIDEwMDoKKyAgY2FzZSAxMDE6CiAKICAgICB7Ci0gICAgICAgIGlmICgoeXl2
c3BbLTJdLmludGVybS50eXBlKS5xdWFsaWZpZXIgIT0gRXZxR2xvYmFsICYmICh5eXZzcFstMl0u
aW50ZXJtLnR5cGUpLnF1YWxpZmllciAhPSBFdnFUZW1wb3JhcnkpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFstMV0pLCAibm8gcXVhbGlmaWVycyBhbGxvd2Vk
IGZvciBmdW5jdGlvbiByZXR1cm4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWy0yXS5pbnRl
cm0udHlwZSkucXVhbGlmaWVyKSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKCEoeXl2c3BbLTJdLmludGVybS50eXBlKS5sYXlvdXRRdWFs
aWZpZXIuaXNFbXB0eSgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigo
eXlsc3BbLTFdKSwgIm5vIHF1YWxpZmllcnMgYWxsb3dlZCBmb3IgZnVuY3Rpb24gcmV0dXJuIiwg
ImxheW91dCIpOwotICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICB9Ci0g
ICAgICAgIC8vIG1ha2Ugc3VyZSBhIHNhbXBsZXIgaXMgbm90IGludm9sdmVkIGFzIHdlbGwuLi4K
LSAgICAgICAgaWYgKGNvbnRleHQtPnNhbXBsZXJFcnJvckNoZWNrKCh5eWxzcFstMV0pLCAoeXl2
c3BbLTJdLmludGVybS50eXBlKSwgInNhbXBsZXJzIGNhbid0IGJlIGZ1bmN0aW9uIHJldHVybiB2
YWx1ZXMiKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS5mdW5jdGlvbikgPSBjb250ZXh0LT5wYXJzZUZ1bmN0aW9uSGVhZGVyKCh5eXZzcFst
Ml0uaW50ZXJtLnR5cGUpLCAoeXl2c3BbLTFdLmxleCkuc3RyaW5nLCAoeXlsc3BbLTFdKSk7CiAK
LSAgICAgICAgLy8gQWRkIHRoZSBmdW5jdGlvbiBhcyBhIHByb3RvdHlwZSBhZnRlciBwYXJzaW5n
IGl0ICh3ZSBkbyBub3Qgc3VwcG9ydCByZWN1cnNpb24pCi0gICAgICAgIFRGdW5jdGlvbiAqZnVu
Y3Rpb247Ci0gICAgICAgIGNvbnN0IFRUeXBlICp0eXBlID0gbmV3IFRUeXBlKCh5eXZzcFstMl0u
aW50ZXJtLnR5cGUpKTsKLSAgICAgICAgZnVuY3Rpb24gPSBuZXcgVEZ1bmN0aW9uKCh5eXZzcFst
MV0ubGV4KS5zdHJpbmcsIHR5cGUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmZ1bmN0aW9uKSA9
IGZ1bmN0aW9uOwotICAgICAgICAKICAgICAgICAgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgp
OworICAgICAgICBjb250ZXh0LT5lbnRlckZ1bmN0aW9uRGVjbGFyYXRpb24oKTsKICAgICB9CiAK
ICAgICBicmVhazsKIAotICBjYXNlIDEwMToKKyAgY2FzZSAxMDI6CiAKICAgICB7Ci0gICAgICAg
IGlmICgoeXl2c3BbLTFdLmludGVybS50eXBlKS50eXBlID09IEVidFZvaWQpIHsKKyAgICAgICAg
aWYgKCh5eXZzcFstMV0uaW50ZXJtLnR5cGUpLmdldEJhc2ljVHlwZSgpID09IEVidFZvaWQpIHsK
ICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFswXSksICJpbGxlZ2FsIHVzZSBvZiB0
eXBlICd2b2lkJyIsICh5eXZzcFswXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGNvbnRleHQtPnJl
c2VydmVkRXJyb3JDaGVjaygoeXlsc3BbMF0pLCAqKHl5dnNwWzBdLmxleCkuc3RyaW5nKSkKLSAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgY29udGV4dC0+Y2hlY2tJc05v
dFJlc2VydmVkKCh5eWxzcFswXSksICooeXl2c3BbMF0ubGV4KS5zdHJpbmcpOwogICAgICAgICBU
UGFyYW1ldGVyIHBhcmFtID0geyh5eXZzcFswXS5sZXgpLnN0cmluZywgbmV3IFRUeXBlKCh5eXZz
cFstMV0uaW50ZXJtLnR5cGUpKX07CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnBhcmFtID0gcGFy
YW07CiAgICAgfQpAQCAtMzIyMSwxOSArMzIwMCwxNiBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxMDI6CisgIGNhc2UgMTAzOgogCiAgICAgewogICAgICAgICAvLyBDaGVjayB0aGF0IHdlIGNh
biBtYWtlIGFuIGFycmF5IG91dCBvZiB0aGlzIHR5cGUKLSAgICAgICAgaWYgKGNvbnRleHQtPmFy
cmF5VHlwZUVycm9yQ2hlY2soKHl5bHNwWy0yXSksICh5eXZzcFstNF0uaW50ZXJtLnR5cGUpKSkK
LSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgY29udGV4dC0+Y2hlY2tJ
c1ZhbGlkVHlwZUZvckFycmF5KCh5eWxzcFstMl0pLCAoeXl2c3BbLTRdLmludGVybS50eXBlKSk7
CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygoeXlsc3BbLTNdKSwg
Kih5eXZzcFstM10ubGV4KS5zdHJpbmcpKQotICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OworICAgICAgICBjb250ZXh0LT5jaGVja0lzTm90UmVzZXJ2ZWQoKHl5bHNwWy0zXSksICooeXl2
c3BbLTNdLmxleCkuc3RyaW5nKTsKIAotICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgaWYgKGNv
bnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5bHNwWy0yXSksICh5eXZzcFstMV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksIHNpemUpKQotICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OworICAgICAgICB1bnNpZ25lZCBpbnQgc2l6ZSA9IGNvbnRleHQtPmNoZWNrSXNWYWxpZEFycmF5
U2l6ZSgoeXlsc3BbLTJdKSwgKHl5dnNwWy0xXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSk7CisK
ICAgICAgICAgKHl5dnNwWy00XS5pbnRlcm0udHlwZSkuc2V0QXJyYXlTaXplKHNpemUpOwogCiAg
ICAgICAgIFRUeXBlKiB0eXBlID0gbmV3IFRUeXBlKCh5eXZzcFstNF0uaW50ZXJtLnR5cGUpKTsK
QEAgLTMyNDMsMjQgKzMyMTksMTEgQEAKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTAzOgotCi0g
ICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFswXS5pbnRlcm0pOwotICAgICAg
ICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eWxzcFswXSksICh5eXZzcFstMl0uaW50
ZXJtLnF1YWxpZmllciksICh5eXZzcFstMV0uaW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRl
cm0pLnBhcmFtLnR5cGUpKQotICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgIH0K
LQotICAgIGJyZWFrOwotCiAgIGNhc2UgMTA0OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50
ZXJtKSA9ICh5eXZzcFswXS5pbnRlcm0pOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1ldGVy
U2FtcGxlckVycm9yQ2hlY2soKHl5bHNwWzBdKSwgKHl5dnNwWy0xXS5pbnRlcm0ucXVhbGlmaWVy
KSwgKih5eXZzcFswXS5pbnRlcm0pLnBhcmFtLnR5cGUpKQotICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eWxzcFsw
XSksIEV2cVRlbXBvcmFyeSwgKHl5dnNwWy0xXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5dmFsLmlu
dGVybSkucGFyYW0udHlwZSkpCi0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAg
ICAgIGNvbnRleHQtPmNoZWNrSXNQYXJhbWV0ZXJRdWFsaWZpZXJWYWxpZCgoeXlsc3BbMF0pLCAq
KHl5dnNwWy0xXS5pbnRlcm0udHlwZVF1YWxpZmllckJ1aWxkZXIpLCAoeXl2c3BbMF0uaW50ZXJt
KS5wYXJhbS50eXBlKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTMyNjksOCArMzIzMiw3IEBA
CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWzBdLmludGVybSk7Ci0g
ICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soKHl5bHNwWzBdKSwgKHl5dnNwWy0y
XS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5dnNwWy0xXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5dmFs
LmludGVybSkucGFyYW0udHlwZSkpCi0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUtPnNldFF1YWxpZmllcihFdnFJbik7CiAg
ICAgfQogCiAgICAgYnJlYWs7CkBAIC0zMjc5LDEwICszMjQxLDcgQEAKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbMF0uaW50ZXJtKTsKLSAgICAgICAgaWYgKGNvbnRl
eHQtPnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKCh5eWxzcFswXSksICh5eXZzcFstMV0uaW50
ZXJtLnF1YWxpZmllciksICooeXl2c3BbMF0uaW50ZXJtKS5wYXJhbS50eXBlKSkKLSAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JD
aGVjaygoeXlsc3BbMF0pLCBFdnFUZW1wb3JhcnksICh5eXZzcFstMV0uaW50ZXJtLnF1YWxpZmll
ciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUpKQotICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOworICAgICAgICBjb250ZXh0LT5jaGVja0lzUGFyYW1ldGVyUXVhbGlmaWVyVmFsaWQo
KHl5bHNwWzBdKSwgKih5eXZzcFstMV0uaW50ZXJtLnR5cGVRdWFsaWZpZXJCdWlsZGVyKSwgKHl5
dnNwWzBdLmludGVybSkucGFyYW0udHlwZSk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zMjkw
LDcgKzMyNDksOCBAQAogICBjYXNlIDEwNzoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVy
bS5xdWFsaWZpZXIpID0gRXZxSW47CisgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWzBd
LmludGVybSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUtPnNldFF1YWxpZmll
cihFdnFJbik7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zMjk4LDcgKzMyNTgsOCBAQAogICBj
YXNlIDEwODoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZx
SW47CisgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW0gPSB7IDAsIG5ldyBUVHlwZSgoeXl2c3BbMF0u
aW50ZXJtLnR5cGUpKSB9OworICAgICAgICAoeXl2YWwuaW50ZXJtKS5wYXJhbSA9IHBhcmFtOwog
ICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzMwNiw3ICszMjY3LDcgQEAKICAgY2FzZSAxMDk6CiAK
ICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cU91dDsKKyAgICAg
ICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbMF0uaW50ZXJtKTsKICAgICB9CiAKICAgICBicmVh
azsKQEAgLTMzMTQsNyArMzI3NSw4IEBACiAgIGNhc2UgMTEwOgogCiAgICAgewotICAgICAgICAo
eXl2YWwuaW50ZXJtLnF1YWxpZmllcikgPSBFdnFJbk91dDsKKyAgICAgICAgKHl5dmFsLmludGVy
bSkgPSAoeXl2c3BbLTJdLmludGVybSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFn
Z3JlZ2F0ZSA9IGNvbnRleHQtPnBhcnNlRGVjbGFyYXRvcigoeXl2YWwuaW50ZXJtKS50eXBlLCAo
eXl2c3BbLTJdLmludGVybSkuaW50ZXJtQWdncmVnYXRlLCAoeXlsc3BbMF0pLCAqKHl5dnNwWzBd
LmxleCkuc3RyaW5nKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTMzMjIsOCArMzI4NCw4IEBA
CiAgIGNhc2UgMTExOgogCiAgICAgewotICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyAwLCBu
ZXcgVFR5cGUoKHl5dnNwWzBdLmludGVybS50eXBlKSkgfTsKLSAgICAgICAgKHl5dmFsLmludGVy
bSkucGFyYW0gPSBwYXJhbTsKKyAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbLTVdLmlu
dGVybSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQt
PnBhcnNlQXJyYXlEZWNsYXJhdG9yKCh5eXZhbC5pbnRlcm0pLnR5cGUsICh5eXZzcFstNV0uaW50
ZXJtKS5pbnRlcm1BZ2dyZWdhdGUsICh5eWxzcFstM10pLCAqKHl5dnNwWy0zXS5sZXgpLnN0cmlu
ZywgKHl5bHNwWy0yXSksICh5eXZzcFstMV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpOwogICAg
IH0KIAogICAgIGJyZWFrOwpAQCAtMzMzMSw3ICszMjkzLDkgQEAKICAgY2FzZSAxMTI6CiAKICAg
ICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWzBdLmludGVybSk7CisgICAgICAg
IEVTM19PUl9ORVdFUigiW10iLCAoeXlsc3BbLTRdKSwgImltcGxpY2l0bHkgc2l6ZWQgYXJyYXki
KTsKKyAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbLTZdLmludGVybSk7CisgICAgICAg
ICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPnBhcnNlQXJyYXlJbml0
RGVjbGFyYXRvcigoeXl2YWwuaW50ZXJtKS50eXBlLCAoeXl2c3BbLTZdLmludGVybSkuaW50ZXJt
QWdncmVnYXRlLCAoeXlsc3BbLTRdKSwgKih5eXZzcFstNF0ubGV4KS5zdHJpbmcsICh5eWxzcFst
M10pLCBudWxscHRyLCAoeXlsc3BbLTFdKSwgKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTMzMzksOCArMzMwMyw5IEBACiAgIGNhc2Ug
MTEzOgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFstMl0uaW50ZXJt
KTsKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+cGFy
c2VEZWNsYXJhdG9yKCh5eXZhbC5pbnRlcm0pLnR5cGUsICh5eXZzcFstMl0uaW50ZXJtKS5pbnRl
cm1BZ2dyZWdhdGUsICh5eWxzcFswXSksICooeXl2c3BbMF0ubGV4KS5zdHJpbmcpOworICAgICAg
ICBFUzNfT1JfTkVXRVIoIj0iLCAoeXlsc3BbLTFdKSwgImZpcnN0LWNsYXNzIGFycmF5cyAoYXJy
YXkgaW5pdGlhbGl6ZXIpIik7CisgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWy03XS5p
bnRlcm0pOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0
LT5wYXJzZUFycmF5SW5pdERlY2xhcmF0b3IoKHl5dmFsLmludGVybSkudHlwZSwgKHl5dnNwWy03
XS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSwgKHl5bHNwWy01XSksICooeXl2c3BbLTVdLmxleCku
c3RyaW5nLCAoeXlsc3BbLTRdKSwgKHl5dnNwWy0zXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
KHl5bHNwWy0xXSksICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSk7CiAgICAgfQog
CiAgICAgYnJlYWs7CkBAIC0zMzQ4LDggKzMzMTMsOCBAQAogICBjYXNlIDExNDoKIAogICAgIHsK
LSAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbLTVdLmludGVybSk7Ci0gICAgICAgICh5
eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPnBhcnNlQXJyYXlEZWNsYXJh
dG9yKCh5eXZhbC5pbnRlcm0pLnR5cGUsICh5eXZzcFstNV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdh
dGUsICh5eWxzcFstM10pLCAqKHl5dnNwWy0zXS5sZXgpLnN0cmluZywgKHl5bHNwWy0yXSksICh5
eXZzcFstMV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpOworICAgICAgICAoeXl2YWwuaW50ZXJt
KSA9ICh5eXZzcFstNF0uaW50ZXJtKTsKKyAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdn
cmVnYXRlID0gY29udGV4dC0+cGFyc2VJbml0RGVjbGFyYXRvcigoeXl2YWwuaW50ZXJtKS50eXBl
LCAoeXl2c3BbLTRdLmludGVybSkuaW50ZXJtQWdncmVnYXRlLCAoeXlsc3BbLTJdKSwgKih5eXZz
cFstMl0ubGV4KS5zdHJpbmcsICh5eWxzcFstMV0pLCAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSkpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzM1Nyw5ICszMzIyLDggQEAKICAg
Y2FzZSAxMTU6CiAKICAgICB7Ci0gICAgICAgIEVTM19PTkxZKCJbXSIsICh5eWxzcFstNF0pLCAi
aW1wbGljaXRseSBzaXplZCBhcnJheSIpOwotICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZz
cFstNl0uaW50ZXJtKTsKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0g
Y29udGV4dC0+cGFyc2VBcnJheUluaXREZWNsYXJhdG9yKCh5eXZhbC5pbnRlcm0pLnR5cGUsICh5
eXZzcFstNl0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUsICh5eWxzcFstNF0pLCAqKHl5dnNwWy00
XS5sZXgpLnN0cmluZywgKHl5bHNwWy0zXSksIG51bGxwdHIsICh5eWxzcFstMV0pLCAoeXl2c3Bb
MF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtKS50eXBl
ID0gKHl5dnNwWzBdLmludGVybS50eXBlKTsKKyAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJt
QWdncmVnYXRlID0gY29udGV4dC0+cGFyc2VTaW5nbGVEZWNsYXJhdGlvbigoeXl2YWwuaW50ZXJt
KS50eXBlLCAoeXlsc3BbMF0pLCAiIik7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zMzY3LDkg
KzMzMzEsOCBAQAogICBjYXNlIDExNjoKIAogICAgIHsKLSAgICAgICAgRVMzX09OTFkoIj0iLCAo
eXlsc3BbLTFdKSwgImZpcnN0LWNsYXNzIGFycmF5cyAoYXJyYXkgaW5pdGlhbGl6ZXIpIik7Ci0g
ICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWy03XS5pbnRlcm0pOwotICAgICAgICAoeXl2
YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5wYXJzZUFycmF5SW5pdERlY2xh
cmF0b3IoKHl5dmFsLmludGVybSkudHlwZSwgKHl5dnNwWy03XS5pbnRlcm0pLmludGVybUFnZ3Jl
Z2F0ZSwgKHl5bHNwWy01XSksICooeXl2c3BbLTVdLmxleCkuc3RyaW5nLCAoeXlsc3BbLTRdKSwg
KHl5dnNwWy0zXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWy0xXSksICh5eXZzcFsw
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUg
PSAoeXl2c3BbLTFdLmludGVybS50eXBlKTsKKyAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJt
QWdncmVnYXRlID0gY29udGV4dC0+cGFyc2VTaW5nbGVEZWNsYXJhdGlvbigoeXl2YWwuaW50ZXJt
KS50eXBlLCAoeXlsc3BbMF0pLCAqKHl5dnNwWzBdLmxleCkuc3RyaW5nKTsKICAgICB9CiAKICAg
ICBicmVhazsKQEAgLTMzNzcsOCArMzM0MCw4IEBACiAgIGNhc2UgMTE3OgogCiAgICAgewotICAg
ICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFstNF0uaW50ZXJtKTsKLSAgICAgICAgKHl5dmFs
LmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+cGFyc2VJbml0RGVjbGFyYXRvcigo
eXl2YWwuaW50ZXJtKS50eXBlLCAoeXl2c3BbLTRdLmludGVybSkuaW50ZXJtQWdncmVnYXRlLCAo
eXlsc3BbLTJdKSwgKih5eXZzcFstMl0ubGV4KS5zdHJpbmcsICh5eWxzcFstMV0pLCAoeXl2c3Bb
MF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtKS50eXBl
ID0gKHl5dnNwWy00XS5pbnRlcm0udHlwZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVy
bUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPnBhcnNlU2luZ2xlQXJyYXlEZWNsYXJhdGlvbigoeXl2YWwu
aW50ZXJtKS50eXBlLCAoeXlsc3BbLTNdKSwgKih5eXZzcFstM10ubGV4KS5zdHJpbmcsICh5eWxz
cFstMl0pLCAoeXl2c3BbLTFdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKTsKICAgICB9CiAKICAg
ICBicmVhazsKQEAgLTMzODYsOCArMzM0OSw5IEBACiAgIGNhc2UgMTE4OgogCiAgICAgewotICAg
ICAgICAoeXl2YWwuaW50ZXJtKS50eXBlID0gKHl5dnNwWzBdLmludGVybS50eXBlKTsKLSAgICAg
ICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+cGFyc2VTaW5nbGVE
ZWNsYXJhdGlvbigoeXl2YWwuaW50ZXJtKS50eXBlLCAoeXlsc3BbMF0pLCAiIik7CisgICAgICAg
IEVTM19PUl9ORVdFUigiW10iLCAoeXlsc3BbLTNdKSwgImltcGxpY2l0bHkgc2l6ZWQgYXJyYXki
KTsKKyAgICAgICAgKHl5dmFsLmludGVybSkudHlwZSA9ICh5eXZzcFstNV0uaW50ZXJtLnR5cGUp
OworICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5wYXJz
ZVNpbmdsZUFycmF5SW5pdERlY2xhcmF0aW9uKCh5eXZhbC5pbnRlcm0pLnR5cGUsICh5eWxzcFst
NF0pLCAqKHl5dnNwWy00XS5sZXgpLnN0cmluZywgKHl5bHNwWy0zXSksIG51bGxwdHIsICh5eWxz
cFstMV0pLCAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpOwogICAgIH0KIAogICAg
IGJyZWFrOwpAQCAtMzM5NSw4ICszMzU5LDkgQEAKICAgY2FzZSAxMTk6CiAKICAgICB7Ci0gICAg
ICAgICh5eXZhbC5pbnRlcm0pLnR5cGUgPSAoeXl2c3BbLTFdLmludGVybS50eXBlKTsKLSAgICAg
ICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+cGFyc2VTaW5nbGVE
ZWNsYXJhdGlvbigoeXl2YWwuaW50ZXJtKS50eXBlLCAoeXlsc3BbMF0pLCAqKHl5dnNwWzBdLmxl
eCkuc3RyaW5nKTsKKyAgICAgICAgRVMzX09SX05FV0VSKCI9IiwgKHl5bHNwWy0xXSksICJmaXJz
dC1jbGFzcyBhcnJheXMgKGFycmF5IGluaXRpYWxpemVyKSIpOworICAgICAgICAoeXl2YWwuaW50
ZXJtKS50eXBlID0gKHl5dnNwWy02XS5pbnRlcm0udHlwZSk7CisgICAgICAgICh5eXZhbC5pbnRl
cm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPnBhcnNlU2luZ2xlQXJyYXlJbml0RGVjbGFy
YXRpb24oKHl5dmFsLmludGVybSkudHlwZSwgKHl5bHNwWy01XSksICooeXl2c3BbLTVdLmxleCku
c3RyaW5nLCAoeXlsc3BbLTRdKSwgKHl5dnNwWy0zXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
KHl5bHNwWy0xXSksICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSk7CiAgICAgfQog
CiAgICAgYnJlYWs7CkBAIC0zNDA0LDggKzMzNjksOCBAQAogICBjYXNlIDEyMDoKIAogICAgIHsK
LSAgICAgICAgKHl5dmFsLmludGVybSkudHlwZSA9ICh5eXZzcFstNF0uaW50ZXJtLnR5cGUpOwot
ICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5wYXJzZVNp
bmdsZUFycmF5RGVjbGFyYXRpb24oKHl5dmFsLmludGVybSkudHlwZSwgKHl5bHNwWy0zXSksICoo
eXl2c3BbLTNdLmxleCkuc3RyaW5nLCAoeXlsc3BbLTJdKSwgKHl5dnNwWy0xXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUgPSAoeXl2c3BbLTNd
LmludGVybS50eXBlKTsKKyAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0g
Y29udGV4dC0+cGFyc2VTaW5nbGVJbml0RGVjbGFyYXRpb24oKHl5dmFsLmludGVybSkudHlwZSwg
KHl5bHNwWy0yXSksICooeXl2c3BbLTJdLmxleCkuc3RyaW5nLCAoeXlsc3BbLTFdKSwgKHl5dnNw
WzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTM0
MTMsOSArMzM3OCwxNCBAQAogICBjYXNlIDEyMToKIAogICAgIHsKLSAgICAgICAgRVMzX09OTFko
IltdIiwgKHl5bHNwWy0zXSksICJpbXBsaWNpdGx5IHNpemVkIGFycmF5Iik7Ci0gICAgICAgICh5
eXZhbC5pbnRlcm0pLnR5cGUgPSAoeXl2c3BbLTVdLmludGVybS50eXBlKTsKLSAgICAgICAgKHl5
dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+cGFyc2VTaW5nbGVBcnJheUlu
aXREZWNsYXJhdGlvbigoeXl2YWwuaW50ZXJtKS50eXBlLCAoeXlsc3BbLTRdKSwgKih5eXZzcFst
NF0ubGV4KS5zdHJpbmcsICh5eWxzcFstM10pLCBudWxscHRyLCAoeXlsc3BbLTFdKSwgKHl5dnNw
WzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KSA9ICh5eXZzcFswXS5pbnRlcm0udHlwZSk7CisKKyAgICAgICAgaWYgKCh5eXZzcFswXS5pbnRl
cm0udHlwZSkuYXJyYXkpIHsKKyAgICAgICAgICAgIEVTM19PUl9ORVdFUigiW10iLCAoeXlsc3Bb
MF0pLCAiZmlyc3QtY2xhc3MtYXJyYXkiKTsKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRT
aGFkZXJWZXJzaW9uKCkgIT0gMzAwKSB7CisgICAgICAgICAgICAgICAgKHl5dnNwWzBdLmludGVy
bS50eXBlKS5jbGVhckFycmF5bmVzcygpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAg
fQogCiAgICAgYnJlYWs7CkBAIC0zNDIzLDkgKzMzOTMsNyBAQAogICBjYXNlIDEyMjoKIAogICAg
IHsKLSAgICAgICAgRVMzX09OTFkoIj0iLCAoeXlsc3BbLTFdKSwgImZpcnN0LWNsYXNzIGFycmF5
cyAoYXJyYXkgaW5pdGlhbGl6ZXIpIik7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUgPSAo
eXl2c3BbLTZdLmludGVybS50eXBlKTsKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdn
cmVnYXRlID0gY29udGV4dC0+cGFyc2VTaW5nbGVBcnJheUluaXREZWNsYXJhdGlvbigoeXl2YWwu
aW50ZXJtKS50eXBlLCAoeXlsc3BbLTVdKSwgKih5eXZzcFstNV0ubGV4KS5zdHJpbmcsICh5eWxz
cFstNF0pLCAoeXl2c3BbLTNdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbLTFdKSwg
KHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKTsKKyAgICAgICAgKHl5dmFsLmludGVy
bS50eXBlKSA9IGNvbnRleHQtPmFkZEZ1bGx5U3BlY2lmaWVkVHlwZSgqKHl5dnNwWy0xXS5pbnRl
cm0udHlwZVF1YWxpZmllckJ1aWxkZXIpLCAoeXl2c3BbMF0uaW50ZXJtLnR5cGUpKTsKICAgICB9
CiAKICAgICBicmVhazsKQEAgLTM0MzMsOCArMzQwMSw3IEBACiAgIGNhc2UgMTIzOgogCiAgICAg
ewotICAgICAgICAoeXl2YWwuaW50ZXJtKS50eXBlID0gKHl5dnNwWy0zXS5pbnRlcm0udHlwZSk7
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPnBhcnNl
U2luZ2xlSW5pdERlY2xhcmF0aW9uKCh5eXZhbC5pbnRlcm0pLnR5cGUsICh5eWxzcFstMl0pLCAq
KHl5dnNwWy0yXS5sZXgpLnN0cmluZywgKHl5bHNwWy0xXSksICh5eXZzcFswXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cVNt
b290aDsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTM0NDIsOCArMzQwOSw3IEBACiAgIGNhc2Ug
MTI0OgogCiAgICAgewotICAgICAgICAvLyAkJC50eXBlIGlzIG5vdCB1c2VkIGluIGludmFyaWFu
dCBkZWNsYXJhdGlvbnMuCi0gICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9
IGNvbnRleHQtPnBhcnNlSW52YXJpYW50RGVjbGFyYXRpb24oKHl5bHNwWy0xXSksICh5eWxzcFsw
XSksICh5eXZzcFswXS5sZXgpLnN0cmluZywgKHl5dnNwWzBdLmxleCkuc3ltYm9sKTsKKyAgICAg
ICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxRmxhdDsKICAgICB9CiAKICAgICBicmVh
azsKQEAgLTM0NTEsMTQgKzM0MTcsOCBAQAogICBjYXNlIDEyNToKIAogICAgIHsKLSAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFswXS5pbnRlcm0udHlwZSk7Ci0KLSAgICAgICAg
aWYgKCh5eXZzcFswXS5pbnRlcm0udHlwZSkuYXJyYXkpIHsKLSAgICAgICAgICAgIEVTM19PTkxZ
KCJbXSIsICh5eWxzcFswXSksICJmaXJzdC1jbGFzcy1hcnJheSIpOwotICAgICAgICAgICAgaWYg
KGNvbnRleHQtPmdldFNoYWRlclZlcnNpb24oKSAhPSAzMDApIHsKLSAgICAgICAgICAgICAgICAo
eXl2c3BbMF0uaW50ZXJtLnR5cGUpLmNsZWFyQXJyYXluZXNzKCk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlUXVhbGlmaWVyQnVpbGRlcikgPSBj
b250ZXh0LT5jcmVhdGVUeXBlUXVhbGlmaWVyQnVpbGRlcigoeXlsc3BbMF0pKTsKKyAgICAgICAg
KHl5dmFsLmludGVybS50eXBlUXVhbGlmaWVyQnVpbGRlciktPmFwcGVuZFF1YWxpZmllcigoeXl2
c3BbMF0uaW50ZXJtLnF1YWxpZmllcldyYXBwZXIpKTsKICAgICB9CiAKICAgICBicmVhazsKQEAg
LTM0NjYsNyArMzQyNiw4IEBACiAgIGNhc2UgMTI2OgogCiAgICAgewotICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGUpID0gY29udGV4dC0+YWRkRnVsbHlTcGVjaWZpZWRUeXBlKCh5eXZzcFstMV0u
aW50ZXJtLnR5cGUpLnF1YWxpZmllciwgKHl5dnNwWy0xXS5pbnRlcm0udHlwZSkuaW52YXJpYW50
LCAoeXl2c3BbLTFdLmludGVybS50eXBlKS5sYXlvdXRRdWFsaWZpZXIsICh5eXZzcFswXS5pbnRl
cm0udHlwZSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVRdWFsaWZpZXJCdWlsZGVyKSA9
ICh5eXZzcFstMV0uaW50ZXJtLnR5cGVRdWFsaWZpZXJCdWlsZGVyKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS50eXBlUXVhbGlmaWVyQnVpbGRlciktPmFwcGVuZFF1YWxpZmllcigoeXl2c3BbMF0u
aW50ZXJtLnF1YWxpZmllcldyYXBwZXIpKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTM0NzQs
NyArMzQzNSw3IEBACiAgIGNhc2UgMTI3OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnF1YWxpZmllciA9IEV2cVNtb290aDsKKyAgICAgICAgLy8gZW1wdHkKICAgICB9CiAK
ICAgICBicmVhazsKQEAgLTM0ODIsNyArMzQ0MywxMSBAQAogICBjYXNlIDEyODoKIAogICAgIHsK
LSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5xdWFsaWZpZXIgPSBFdnFGbGF0OworICAgICAg
ICBpZiAoIWNvbnRleHQtPmRlY2xhcmluZ0Z1bmN0aW9uKCkgJiYgKHl5dnNwWzBdLmludGVybS5x
dWFsaWZpZXIpICE9IEV2cUNvbnN0ICYmICFjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExl
dmVsKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFswXSks
ICJMb2NhbCB2YXJpYWJsZXMgY2FuIG9ubHkgdXNlIHRoZSBjb25zdCBzdG9yYWdlIHF1YWxpZmll
ci4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWzBdLmludGVybS5xdWFsaWZpZXIpKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXJXcmFwcGVyKSA9IG5ldyBU
U3RvcmFnZVF1YWxpZmllcldyYXBwZXIoKHl5dnNwWzBdLmludGVybS5xdWFsaWZpZXIpLCAoeXls
c3BbMF0pKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTM0OTAsNyArMzQ1NSw4IEBACiAgIGNh
c2UgMTI5OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmllcikgPSBFdnFD
b25zdDsKKyAgICAgICAgY29udGV4dC0+Y2hlY2tJc0F0R2xvYmFsTGV2ZWwoKHl5bHNwWzBdKSwg
ImxheW91dCIpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmllcldyYXBwZXIpID0gbmV3
IFRMYXlvdXRRdWFsaWZpZXJXcmFwcGVyKCh5eXZzcFswXS5pbnRlcm0ubGF5b3V0UXVhbGlmaWVy
KSwgKHl5bHNwWzBdKSk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zNDk4LDExICszNDY0LDcg
QEAKICAgY2FzZSAxMzA6CiAKICAgICB7Ci0gICAgICAgIFZFUlRFWF9PTkxZKCJhdHRyaWJ1dGUi
LCAoeXlsc3BbMF0pKTsKLSAgICAgICAgRVMyX09OTFkoImF0dHJpYnV0ZSIsICh5eWxzcFswXSkp
OwotICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXlsc3BbMF0pLCBjb250
ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJhdHRyaWJ1dGUiKSkKLSAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRC
YXNpYyhFYnRWb2lkLCBFdnFBdHRyaWJ1dGUsICh5eWxzcFswXSkpOworICAgICAgICAoeXl2YWwu
aW50ZXJtLnF1YWxpZmllcldyYXBwZXIpID0gbmV3IFRQcmVjaXNpb25RdWFsaWZpZXJXcmFwcGVy
KCh5eXZzcFswXS5pbnRlcm0ucHJlY2lzaW9uKSwgKHl5bHNwWzBdKSk7CiAgICAgfQogCiAgICAg
YnJlYWs7CkBAIC0zNTEwLDEzICszNDcyLDcgQEAKICAgY2FzZSAxMzE6CiAKICAgICB7Ci0gICAg
ICAgIEVTMl9PTkxZKCJ2YXJ5aW5nIiwgKHl5bHNwWzBdKSk7Ci0gICAgICAgIGlmIChjb250ZXh0
LT5nbG9iYWxFcnJvckNoZWNrKCh5eWxzcFswXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xv
YmFsTGV2ZWwoKSwgInZhcnlpbmciKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
LSAgICAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclR5cGUoKSA9PSBHTF9WRVJURVhfU0hBREVS
KQotICAgICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFW
YXJ5aW5nT3V0LCAoeXlsc3BbMF0pKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5nSW4sICh5eWxzcFswXSkp
OworICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmllcldyYXBwZXIpID0gbmV3IFRJbnRlcnBv
bGF0aW9uUXVhbGlmaWVyV3JhcHBlcigoeXl2c3BbMF0uaW50ZXJtLnF1YWxpZmllciksICh5eWxz
cFswXSkpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzUyNCwxNCArMzQ4MCw4IEBACiAgIGNh
c2UgMTMyOgogCiAgICAgewotICAgICAgICBFUzJfT05MWSgidmFyeWluZyIsICh5eWxzcFstMV0p
KTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5bHNwWy0xXSksIGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFyaWFudCB2YXJ5aW5nIikp
Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5n
ZXRTaGFkZXJUeXBlKCkgPT0gR0xfVkVSVEVYX1NIQURFUikKLSAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFyeWluZ091dCwgKHl5bHNwWy0xXSkp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2lj
KEVidFZvaWQsIEV2cVZhcnlpbmdJbiwgKHl5bHNwWy0xXSkpOwotICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGUpLmludmFyaWFudCA9IHRydWU7CisgICAgICAgIGNvbnRleHQtPmNoZWNrSXNBdEds
b2JhbExldmVsKCh5eWxzcFswXSksICJpbnZhcmlhbnQiKTsKKyAgICAgICAgKHl5dmFsLmludGVy
bS5xdWFsaWZpZXJXcmFwcGVyKSA9IG5ldyBUSW52YXJpYW50UXVhbGlmaWVyV3JhcHBlcigoeXls
c3BbMF0pKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTM1MzksMTIgKzM0ODksMTAgQEAKICAg
Y2FzZSAxMzM6CiAKICAgICB7Ci0gICAgICAgIGlmICgoeXl2c3BbMF0uaW50ZXJtLnR5cGUpLnF1
YWxpZmllciAhPSBFdnFDb25zdCAmJiAhY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZl
bCgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbMF0pLCAi
TG9jYWwgdmFyaWFibGVzIGNhbiBvbmx5IHVzZSB0aGUgY29uc3Qgc3RvcmFnZSBxdWFsaWZpZXIu
IiwgZ2V0UXVhbGlmaWVyU3RyaW5nKCh5eXZzcFswXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyKSk7
Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCAoeXl2c3BbMF0uaW50ZXJtLnR5cGUp
LnF1YWxpZmllciwgKHl5bHNwWzBdKSk7CisgICAgICAgIFZFUlRFWF9PTkxZKCJhdHRyaWJ1dGUi
LCAoeXlsc3BbMF0pKTsKKyAgICAgICAgRVMyX09OTFkoImF0dHJpYnV0ZSIsICh5eWxzcFswXSkp
OworICAgICAgICBjb250ZXh0LT5jaGVja0lzQXRHbG9iYWxMZXZlbCgoeXlsc3BbMF0pLCAiYXR0
cmlidXRlIik7CisgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cUF0dHJpYnV0
ZTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTM1NTIsNyArMzUwMCwxMiBAQAogICBjYXNlIDEz
NDoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKSA9IGNvbnRleHQtPmpvaW5J
bnRlcnBvbGF0aW9uUXVhbGlmaWVycygoeXlsc3BbLTFdKSwgKHl5dnNwWy0xXS5pbnRlcm0udHlw
ZSkucXVhbGlmaWVyLCAoeXlsc3BbMF0pLCAoeXl2c3BbMF0uaW50ZXJtLnR5cGUpLnF1YWxpZmll
cik7CisgICAgICAgIEVTMl9PTkxZKCJ2YXJ5aW5nIiwgKHl5bHNwWzBdKSk7CisgICAgICAgIGNv
bnRleHQtPmNoZWNrSXNBdEdsb2JhbExldmVsKCh5eWxzcFswXSksICJ2YXJ5aW5nIik7CisgICAg
ICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXJUeXBlKCkgPT0gR0xfVkVSVEVYX1NIQURFUikKKyAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cVZhcnlpbmdPdXQ7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cVZhcnlp
bmdJbjsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTM1NjAsMTEgKzM1MTMsNyBAQAogICBjYXNl
IDEzNToKIAogICAgIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWzBdKSwgImludGVy
cG9sYXRpb24gcXVhbGlmaWVyIHJlcXVpcmVzIGEgZnJhZ21lbnQgJ2luJyBvciB2ZXJ0ZXggJ291
dCcgc3RvcmFnZSBxdWFsaWZpZXIiLCBnZXRJbnRlcnBvbGF0aW9uU3RyaW5nKCh5eXZzcFswXS5p
bnRlcm0udHlwZSkucXVhbGlmaWVyKSk7Ci0gICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAg
ICAgICAgCi0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBxdWFsLCAoeXlsc3BbMF0pKTsKKyAgICAg
ICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxQ29uc3Q7CiAgICAgfQogCiAgICAgYnJl
YWs7CkBAIC0zNTcyLDggKzM1MjEsMjQgQEAKICAgY2FzZSAxMzY6CiAKICAgICB7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkucXVhbGlmaWVyID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRH
bG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGUpLmxheW91dFF1YWxpZmllciA9ICh5eXZzcFswXS5pbnRlcm0ubGF5b3V0UXVh
bGlmaWVyKTsKKyAgICAgICAgaWYgKGNvbnRleHQtPmRlY2xhcmluZ0Z1bmN0aW9uKCkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cUluOworICAg
ICAgICB9CisgICAgICAgIGVsc2UgaWYgKGNvbnRleHQtPmdldFNoYWRlclR5cGUoKSA9PSBHTF9G
UkFHTUVOVF9TSEFERVIpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVTM19PUl9ORVdFUigiaW4i
LCAoeXlsc3BbMF0pLCAic3RvcmFnZSBxdWFsaWZpZXIiKTsKKyAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0ucXVhbGlmaWVyKSA9IEV2cUZyYWdtZW50SW47CisgICAgICAgIH0KKyAgICAgICAgZWxz
ZSBpZiAoY29udGV4dC0+Z2V0U2hhZGVyVHlwZSgpID09IEdMX1ZFUlRFWF9TSEFERVIpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIEVTM19PUl9ORVdFUigiaW4iLCAoeXlsc3BbMF0pLCAic3RvcmFn
ZSBxdWFsaWZpZXIiKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2
cVZlcnRleEluOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAg
ICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxQ29tcHV0ZUluOworICAgICAgICB9CiAg
ICAgfQogCiAgICAgYnJlYWs7CkBAIC0zNTgxLDggKzM1NDYsMjMgQEAKICAgY2FzZSAxMzc6CiAK
ICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgKHl5
dnNwWzBdLmludGVybS50eXBlKS5xdWFsaWZpZXIsICh5eWxzcFswXSkpOwotICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGUpLmxheW91dFF1YWxpZmllciA9ICh5eXZzcFstMV0uaW50ZXJtLmxheW91
dFF1YWxpZmllcik7CisgICAgICAgIGlmIChjb250ZXh0LT5kZWNsYXJpbmdGdW5jdGlvbigpKQor
ICAgICAgICB7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmllcikgPSBFdnFPdXQ7
CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBFUzNfT1Jf
TkVXRVIoIm91dCIsICh5eWxzcFswXSksICJzdG9yYWdlIHF1YWxpZmllciIpOworICAgICAgICAg
ICAgTk9OX0NPTVBVVEVfT05MWSgib3V0IiwgKHl5bHNwWzBdKSk7CisgICAgICAgICAgICBpZiAo
Y29udGV4dC0+Z2V0U2hhZGVyVHlwZSgpID09IEdMX0ZSQUdNRU5UX1NIQURFUikKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmllcikgPSBFdnFGcmFn
bWVudE91dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmllcikgPSBFdnFWZXJ0ZXhPdXQ7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKICAgICBicmVhazsKQEAgLTM1OTAs
OSArMzU3MCwxMSBAQAogICBjYXNlIDEzODoKIAogICAgIHsKLSAgICAgICAgY29udGV4dC0+ZXMz
SW52YXJpYW50RXJyb3JDaGVjaygoeXl2c3BbMF0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciwgKHl5
bHNwWy0xXSkpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQs
ICh5eXZzcFswXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyLCAoeXlsc3BbMF0pKTsKLSAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5pbnZhcmlhbnQgPSB0cnVlOworICAgICAgICBpZiAoIWNvbnRl
eHQtPmRlY2xhcmluZ0Z1bmN0aW9uKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCh5eWxzcFswXSksICJpbnZhbGlkIGlub3V0IHF1YWxpZmllciIsICInaW5vdXQnIGNh
biBiZSBvbmx5IHVzZWQgd2l0aCBmdW5jdGlvbiBwYXJhbWV0ZXJzIik7CisgICAgICAgIH0KKyAg
ICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxSW5PdXQ7CiAgICAgfQogCiAgICAg
YnJlYWs7CkBAIC0zNjAwLDkgKzM1ODIsOCBAQAogICBjYXNlIDEzOToKIAogICAgIHsKLSAgICAg
ICAgY29udGV4dC0+ZXMzSW52YXJpYW50RXJyb3JDaGVjaygoeXl2c3BbMF0uaW50ZXJtLnR5cGUp
LnF1YWxpZmllciwgKHl5bHNwWy0yXSkpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0g
Y29udGV4dC0+am9pbkludGVycG9sYXRpb25RdWFsaWZpZXJzKCh5eWxzcFstMV0pLCAoeXl2c3Bb
LTFdLmludGVybS50eXBlKS5xdWFsaWZpZXIsICh5eWxzcFswXSksICh5eXZzcFswXS5pbnRlcm0u
dHlwZSkucXVhbGlmaWVyKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5pbnZhcmlhbnQg
PSB0cnVlOworICAgICAgICBFUzNfT1JfTkVXRVIoImNlbnRyb2lkIiwgKHl5bHNwWzBdKSwgInN0
b3JhZ2UgcXVhbGlmaWVyIik7CisgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2
cUNlbnRyb2lkOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzYxMCw3ICszNTkxLDggQEAKICAg
Y2FzZSAxNDA6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkucXVhbGlmaWVy
ID0gRXZxQ29uc3Q7CisgICAgICAgIGNvbnRleHQtPmNoZWNrSXNBdEdsb2JhbExldmVsKCh5eWxz
cFswXSksICJ1bmlmb3JtIik7CisgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2
cVVuaWZvcm07CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zNjE4LDggKzM2MDAsMTEgQEAKICAg
Y2FzZSAxNDE6CiAKICAgICB7Ci0gICAgICAgIEVTM19PTkxZKCJpbiIsICh5eWxzcFswXSksICJz
dG9yYWdlIHF1YWxpZmllciIpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnF1YWxpZmll
ciA9IChjb250ZXh0LT5nZXRTaGFkZXJUeXBlKCkgPT0gR0xfRlJBR01FTlRfU0hBREVSKSA/IEV2
cUZyYWdtZW50SW4gOiBFdnFWZXJ0ZXhJbjsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKSA9
ICh5eXZzcFswXS5pbnRlcm0udHlwZSk7CisKKyAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0udHlw
ZSkucHJlY2lzaW9uID09IEVicFVuZGVmaW5lZCkgeworICAgICAgICAgICAgKHl5dmFsLmludGVy
bS50eXBlKS5wcmVjaXNpb24gPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5nZXREZWZhdWx0UHJlY2lz
aW9uKCh5eXZzcFswXS5pbnRlcm0udHlwZSkuZ2V0QmFzaWNUeXBlKCkpOworICAgICAgICB9CiAg
ICAgfQogCiAgICAgYnJlYWs7CkBAIC0zNjI3LDggKzM2MTIsNyBAQAogICBjYXNlIDE0MjoKIAog
ICAgIHsKLSAgICAgICAgRVMzX09OTFkoIm91dCIsICh5eWxzcFswXSksICJzdG9yYWdlIHF1YWxp
ZmllciIpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnF1YWxpZmllciA9IChjb250ZXh0
LT5nZXRTaGFkZXJUeXBlKCkgPT0gR0xfRlJBR01FTlRfU0hBREVSKSA/IEV2cUZyYWdtZW50T3V0
IDogRXZxVmVydGV4T3V0OworICAgICAgICAoeXl2YWwuaW50ZXJtLnByZWNpc2lvbikgPSBFYnBI
aWdoOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzYzNiwxMyArMzYyMCw3IEBACiAgIGNhc2Ug
MTQzOgogCiAgICAgewotICAgICAgICBFUzNfT05MWSgiY2VudHJvaWQgaW4iLCAoeXlsc3BbLTFd
KSwgInN0b3JhZ2UgcXVhbGlmaWVyIik7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXJU
eXBlKCkgPT0gR0xfVkVSVEVYX1NIQURFUikKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoKHl5bHNwWy0xXSksICJpbnZhbGlkIHN0b3JhZ2UgcXVhbGlmaWVyIiwgIml0IGlz
IGFuIGVycm9yIHRvIHVzZSAnY2VudHJvaWQgaW4nIGluIHRoZSB2ZXJ0ZXggc2hhZGVyIik7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5xdWFsaWZpZXIgPSAoY29udGV4dC0+Z2V0U2hhZGVyVHlwZSgpID09IEdM
X0ZSQUdNRU5UX1NIQURFUikgPyBFdnFDZW50cm9pZEluIDogRXZxVmVydGV4SW47CisgICAgICAg
ICh5eXZhbC5pbnRlcm0ucHJlY2lzaW9uKSA9IEVicE1lZGl1bTsKICAgICB9CiAKICAgICBicmVh
azsKQEAgLTM2NTAsMTMgKzM2MjgsNyBAQAogICBjYXNlIDE0NDoKIAogICAgIHsKLSAgICAgICAg
RVMzX09OTFkoImNlbnRyb2lkIG91dCIsICh5eWxzcFstMV0pLCAic3RvcmFnZSBxdWFsaWZpZXIi
KTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclR5cGUoKSA9PSBHTF9GUkFHTUVOVF9T
SEFERVIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFstMV0p
LCAiaW52YWxpZCBzdG9yYWdlIHF1YWxpZmllciIsICJpdCBpcyBhbiBlcnJvciB0byB1c2UgJ2Nl
bnRyb2lkIG91dCcgaW4gdGhlIGZyYWdtZW50IHNoYWRlciIpOwotICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwotICAgICAgICB9Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkucXVh
bGlmaWVyID0gKGNvbnRleHQtPmdldFNoYWRlclR5cGUoKSA9PSBHTF9GUkFHTUVOVF9TSEFERVIp
ID8gRXZxRnJhZ21lbnRPdXQgOiBFdnFDZW50cm9pZE91dDsKKyAgICAgICAgKHl5dmFsLmludGVy
bS5wcmVjaXNpb24pID0gRWJwTG93OwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzY2NCw5ICsz
NjM2LDggQEAKICAgY2FzZSAxNDU6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nbG9i
YWxFcnJvckNoZWNrKCh5eWxzcFswXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2
ZWwoKSwgInVuaWZvcm0iKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS5xdWFsaWZpZXIgPSBFdnFVbmlmb3JtOworICAgICAgICBF
UzNfT1JfTkVXRVIoImxheW91dCIsICh5eWxzcFstM10pLCAicXVhbGlmaWVyIik7CisgICAgICAg
ICh5eXZhbC5pbnRlcm0ubGF5b3V0UXVhbGlmaWVyKSA9ICh5eXZzcFstMV0uaW50ZXJtLmxheW91
dFF1YWxpZmllcik7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zNjc0LDE0ICszNjQ1LDcgQEAK
ICAgY2FzZSAxNDY6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAoeXl2
c3BbMF0uaW50ZXJtLnR5cGUpOwotCi0gICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLnR5cGUpLnBy
ZWNpc2lvbiA9PSBFYnBVbmRlZmluZWQpIHsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZSkucHJlY2lzaW9uID0gY29udGV4dC0+c3ltYm9sVGFibGUuZ2V0RGVmYXVsdFByZWNpc2lvbigo
eXl2c3BbMF0uaW50ZXJtLnR5cGUpLnR5cGUpOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPnBy
ZWNpc2lvbkVycm9yQ2hlY2soKHl5bHNwWzBdKSwgKHl5dmFsLmludGVybS50eXBlKS5wcmVjaXNp
b24sICh5eXZzcFswXS5pbnRlcm0udHlwZSkudHlwZSkpIHsKLSAgICAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgKHl5dmFs
LmludGVybS5sYXlvdXRRdWFsaWZpZXIpID0gKHl5dnNwWzBdLmludGVybS5sYXlvdXRRdWFsaWZp
ZXIpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzY4OSwxMyArMzY1Myw3IEBACiAgIGNhc2Ug
MTQ3OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWzBdLmlu
dGVybS50eXBlKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5wcmVjaXNpb24gPSAoeXl2
c3BbLTFdLmludGVybS5wcmVjaXNpb24pOwotCi0gICAgICAgIGlmICghU3VwcG9ydHNQcmVjaXNp
b24oKHl5dnNwWzBdLmludGVybS50eXBlKS50eXBlKSkgewotICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoKHl5bHNwWy0xXSksICJpbGxlZ2FsIHR5cGUgZm9yIHByZWNpc2lvbiBxdWFsaWZpZXIi
LCBnZXRCYXNpY1N0cmluZygoeXl2c3BbMF0uaW50ZXJtLnR5cGUpLnR5cGUpKTsKLSAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgfQorICAgICAgICAoeXl2YWwuaW50ZXJt
LmxheW91dFF1YWxpZmllcikgPSBjb250ZXh0LT5qb2luTGF5b3V0UXVhbGlmaWVycygoeXl2c3Bb
LTJdLmludGVybS5sYXlvdXRRdWFsaWZpZXIpLCAoeXl2c3BbMF0uaW50ZXJtLmxheW91dFF1YWxp
ZmllciksICh5eWxzcFswXSkpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzcwMyw3ICszNjYx
LDcgQEAKICAgY2FzZSAxNDg6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0ucHJlY2lz
aW9uKSA9IEVicEhpZ2g7CisgICAgICAgICh5eXZhbC5pbnRlcm0ubGF5b3V0UXVhbGlmaWVyKSA9
IGNvbnRleHQtPnBhcnNlTGF5b3V0UXVhbGlmaWVyKCooeXl2c3BbMF0ubGV4KS5zdHJpbmcsICh5
eWxzcFswXSkpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzcxMSw3ICszNjY5LDcgQEAKICAg
Y2FzZSAxNDk6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0ucHJlY2lzaW9uKSA9IEVi
cE1lZGl1bTsKKyAgICAgICAgKHl5dmFsLmludGVybS5sYXlvdXRRdWFsaWZpZXIpID0gY29udGV4
dC0+cGFyc2VMYXlvdXRRdWFsaWZpZXIoKih5eXZzcFstMl0ubGV4KS5zdHJpbmcsICh5eWxzcFst
Ml0pLCAoeXl2c3BbMF0ubGV4KS5pLCAoeXlsc3BbMF0pKTsKICAgICB9CiAKICAgICBicmVhazsK
QEAgLTM3MTksNyArMzY3Nyw3IEBACiAgIGNhc2UgMTUwOgogCiAgICAgewotICAgICAgICAoeXl2
YWwuaW50ZXJtLnByZWNpc2lvbikgPSBFYnBMb3c7CisgICAgICAgICh5eXZhbC5pbnRlcm0ubGF5
b3V0UXVhbGlmaWVyKSA9IGNvbnRleHQtPnBhcnNlTGF5b3V0UXVhbGlmaWVyKCooeXl2c3BbLTJd
LmxleCkuc3RyaW5nLCAoeXlsc3BbLTJdKSwgKHl5dnNwWzBdLmxleCkuaSwgKHl5bHNwWzBdKSk7
CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zNzI3LDggKzM2ODUsNyBAQAogICBjYXNlIDE1MToK
IAogICAgIHsKLSAgICAgICAgRVMzX09OTFkoImxheW91dCIsICh5eWxzcFstM10pLCAicXVhbGlm
aWVyIik7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0ubGF5b3V0UXVhbGlmaWVyKSA9ICh5eXZzcFst
MV0uaW50ZXJtLmxheW91dFF1YWxpZmllcik7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSku
aW5pdGlhbGl6ZSgoeXl2c3BbMF0uaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSksIChjb250
ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jh
cnkpKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTM3MzYsNyArMzY5Myw5IEBACiAgIGNhc2Ug
MTUyOgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmxheW91dFF1YWxpZmllcikgPSAo
eXl2c3BbMF0uaW50ZXJtLmxheW91dFF1YWxpZmllcik7CisgICAgICAgIEVTM19PUl9ORVdFUigi
W10iLCAoeXlsc3BbLTFdKSwgImltcGxpY2l0bHkgc2l6ZWQgYXJyYXkiKTsKKyAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5pbml0aWFsaXplKCh5eXZzcFstMl0uaW50ZXJtLnR5cGVTcGVjaWZp
ZXJOb25BcnJheSksIChjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFH
bG9iYWwgOiBFdnFUZW1wb3JhcnkpKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRB
cnJheVNpemUoMCk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zNzQ0LDcgKzM3MDMsMTIgQEAK
ICAgY2FzZSAxNTM6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0ubGF5b3V0UXVhbGlm
aWVyKSA9IGNvbnRleHQtPmpvaW5MYXlvdXRRdWFsaWZpZXJzKCh5eXZzcFstMl0uaW50ZXJtLmxh
eW91dFF1YWxpZmllciksICh5eXZzcFswXS5pbnRlcm0ubGF5b3V0UXVhbGlmaWVyKSk7CisgICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZSkuaW5pdGlhbGl6ZSgoeXl2c3BbLTNdLmludGVybS50eXBl
U3BlY2lmaWVyTm9uQXJyYXkpLCAoY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgp
ID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5KSk7CisgICAgICAgIGlmIChjb250ZXh0LT5jaGVj
a0lzVmFsaWRUeXBlRm9yQXJyYXkoKHl5bHNwWy0yXSksICh5eXZhbC5pbnRlcm0udHlwZSkpKQor
ICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2l6ZSA9IGNvbnRleHQtPmNoZWNr
SXNWYWxpZEFycmF5U2l6ZSgoeXlsc3BbLTJdKSwgKHl5dnNwWy0xXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFycmF5U2l6ZShz
aXplKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzc1Miw3ICszNzE2LDcg
QEAKICAgY2FzZSAxNTQ6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0ubGF5b3V0UXVh
bGlmaWVyKSA9IGNvbnRleHQtPnBhcnNlTGF5b3V0UXVhbGlmaWVyKCooeXl2c3BbMF0ubGV4KS5z
dHJpbmcsICh5eWxzcFswXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJO
b25BcnJheSkuaW5pdGlhbGl6ZShFYnRWb2lkLCAoeXlsc3BbMF0pKTsKICAgICB9CiAKICAgICBi
cmVhazsKQEAgLTM3NjAsNyArMzcyNCw3IEBACiAgIGNhc2UgMTU1OgogCiAgICAgewotICAgICAg
ICAoeXl2YWwuaW50ZXJtLmxheW91dFF1YWxpZmllcikgPSBjb250ZXh0LT5wYXJzZUxheW91dFF1
YWxpZmllcigqKHl5dnNwWy0yXS5sZXgpLnN0cmluZywgKHl5bHNwWy0yXSksICooeXl2c3BbMF0u
bGV4KS5zdHJpbmcsICh5eXZzcFswXS5sZXgpLmksICh5eWxzcFswXSkpOworICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRGbG9hdCwgKHl5
bHNwWzBdKSk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zNzY4LDcgKzM3MzIsNyBAQAogICBj
YXNlIDE1NjoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5sYXlvdXRRdWFsaWZpZXIp
ID0gY29udGV4dC0+cGFyc2VMYXlvdXRRdWFsaWZpZXIoKih5eXZzcFstMl0ubGV4KS5zdHJpbmcs
ICh5eWxzcFstMl0pLCAqKHl5dnNwWzBdLmxleCkuc3RyaW5nLCAoeXl2c3BbMF0ubGV4KS5pLCAo
eXlsc3BbMF0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkp
LmluaXRpYWxpemUoRWJ0SW50LCAoeXlsc3BbMF0pKTsKICAgICB9CiAKICAgICBicmVhazsKQEAg
LTM3NzYsNyArMzc0MCw3IEBACiAgIGNhc2UgMTU3OgogCiAgICAgewotICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGUpID0gKHl5dnNwWzBdLmludGVybS50eXBlKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0VUludCwgKHl5bHNwWzBd
KSk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zNzg0LDkgKzM3NDgsNyBAQAogICBjYXNlIDE1
ODoKIAogICAgIHsKLSAgICAgICAgRVMzX09OTFkoIltdIiwgKHl5bHNwWy0xXSksICJpbXBsaWNp
dGx5IHNpemVkIGFycmF5Iik7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAoeXl2c3Bb
LTJdLmludGVybS50eXBlKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBcnJheVNp
emUoMCk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0
aWFsaXplKEVidEJvb2wsICh5eWxzcFswXSkpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzc5
NCwxNiArMzc1Niw4IEBACiAgIGNhc2UgMTU5OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGUpID0gKHl5dnNwWy0zXS5pbnRlcm0udHlwZSk7Ci0KLSAgICAgICAgaWYgKGNvbnRl
eHQtPmFycmF5VHlwZUVycm9yQ2hlY2soKHl5bHNwWy0yXSksICh5eXZzcFstM10uaW50ZXJtLnR5
cGUpKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVF
cnJvckNoZWNrKCh5eWxzcFstMl0pLCAoeXl2c3BbLTFdLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LCBzaXplKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFycmF5U2l6ZShzaXplKTsKLSAgICAgICAgfQorICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRG
bG9hdCwgKHl5bHNwWzBdKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5v
bkFycmF5KS5zZXRBZ2dyZWdhdGUoMik7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zODExLDgg
KzM3NjUsOCBAQAogICBjYXNlIDE2MDoKIAogICAgIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFs
ID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZx
VGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQs
IHF1YWwsICh5eWxzcFswXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJO
b25BcnJheSkuaW5pdGlhbGl6ZShFYnRGbG9hdCwgKHl5bHNwWzBdKSk7CisgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5zZXRBZ2dyZWdhdGUoMyk7CiAgICAgfQog
CiAgICAgYnJlYWs7CkBAIC0zODIwLDggKzM3NzQsOCBAQAogICBjYXNlIDE2MToKIAogICAgIHsK
LSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxM
ZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXlsc3BbMF0pKTsKKyAgICAgICAgKHl5
dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0RmxvYXQsICh5
eWxzcFswXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSku
c2V0QWdncmVnYXRlKDQpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzgyOSw4ICszNzgzLDgg
QEAKICAgY2FzZSAxNjI6CiAKICAgICB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFy
eTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5
eWxzcFswXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSku
aW5pdGlhbGl6ZShFYnRCb29sLCAoeXlsc3BbMF0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50
eXBlU3BlY2lmaWVyTm9uQXJyYXkpLnNldEFnZ3JlZ2F0ZSgyKTsKICAgICB9CiAKICAgICBicmVh
azsKQEAgLTM4MzgsOCArMzc5Miw4IEBACiAgIGNhc2UgMTYzOgogCiAgICAgewotICAgICAgICBU
UXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBF
dnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0
QmFzaWMoRWJ0VUludCwgcXVhbCwgKHl5bHNwWzBdKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0u
dHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidEJvb2wsICh5eWxzcFswXSkpOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuc2V0QWdncmVnYXRl
KDMpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzg0Nyw4ICszODAxLDggQEAKICAgY2FzZSAx
NjQ6CiAKICAgICB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRh
YmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXlsc3BbMF0pKTsK
KyAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUo
RWJ0Qm9vbCwgKHl5bHNwWzBdKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmll
ck5vbkFycmF5KS5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zODU2
LDkgKzM4MTAsOCBAQAogICBjYXNlIDE2NToKIAogICAgIHsKLSAgICAgICAgVFF1YWxpZmllciBx
dWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDog
RXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZs
b2F0LCBxdWFsLCAoeXlsc3BbMF0pKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRB
Z2dyZWdhdGUoMik7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5
KS5pbml0aWFsaXplKEVidEludCwgKHl5bHNwWzBdKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0u
dHlwZVNwZWNpZmllck5vbkFycmF5KS5zZXRBZ2dyZWdhdGUoMik7CiAgICAgfQogCiAgICAgYnJl
YWs7CkBAIC0zODY2LDkgKzM4MTksOCBAQAogICBjYXNlIDE2NjoKIAogICAgIHsKLSAgICAgICAg
VFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8g
RXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNl
dEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXlsc3BbMF0pKTsKLSAgICAgICAgKHl5dmFsLmludGVy
bS50eXBlKS5zZXRBZ2dyZWdhdGUoMyk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNp
Zmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidEludCwgKHl5bHNwWzBdKSk7CisgICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5zZXRBZ2dyZWdhdGUoMyk7CiAgICAg
fQogCiAgICAgYnJlYWs7CkBAIC0zODc2LDkgKzM4MjgsOCBAQAogICBjYXNlIDE2NzoKIAogICAg
IHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXlsc3BbMF0pKTsKLSAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7CisgICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidEludCwgKHl5bHNwWzBdKSk7
CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5zZXRBZ2dyZWdh
dGUoNCk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zODg2LDkgKzM4MzcsOCBAQAogICBjYXNl
IDE2ODoKIAogICAgIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9s
VGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICh5eWxzcFswXSkp
OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKKyAgICAgICAg
KHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0VUludCwg
KHl5bHNwWzBdKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5
KS5zZXRBZ2dyZWdhdGUoMik7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zODk2LDkgKzM4NDYs
OCBAQAogICBjYXNlIDE2OToKIAogICAgIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29u
dGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9y
YXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEJvb2wsIHF1YWws
ICh5eWxzcFswXSkpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgz
KTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxp
emUoRWJ0VUludCwgKHl5bHNwWzBdKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNp
Zmllck5vbkFycmF5KS5zZXRBZ2dyZWdhdGUoMyk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0z
OTA2LDkgKzM4NTUsOCBAQAogICBjYXNlIDE3MDoKIAogICAgIHsKLSAgICAgICAgVFF1YWxpZmll
ciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFs
IDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVi
dEJvb2wsIHF1YWwsICh5eWxzcFswXSkpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNl
dEFnZ3JlZ2F0ZSg0KTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJy
YXkpLmluaXRpYWxpemUoRWJ0VUludCwgKHl5bHNwWzBdKSk7CisgICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgfQogCiAgICAg
YnJlYWs7CkBAIC0zOTE2LDkgKzM4NjQsOCBAQAogICBjYXNlIDE3MToKIAogICAgIHsKLSAgICAg
ICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgp
ID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
LnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5bHNwWzBdKSk7Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZSkuc2V0QWdncmVnYXRlKDIpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVj
aWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRGbG9hdCwgKHl5bHNwWzBdKSk7CisgICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5zZXRNYXRyaXgoMiwgMik7CiAg
ICAgfQogCiAgICAgYnJlYWs7CkBAIC0zOTI2LDkgKzM4NzMsOCBAQAogICBjYXNlIDE3MjoKIAog
ICAgIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRH
bG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5bHNwWzBdKSk7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDMpOworICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRGbG9hdCwgKHl5bHNwWzBd
KSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5zZXRNYXRy
aXgoMywgMyk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zOTM2LDkgKzM4ODIsOCBAQAogICBj
YXNlIDE3MzoKIAogICAgIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3lt
Ym9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5bHNwWzBd
KSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDQpOworICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRGbG9h
dCwgKHl5bHNwWzBdKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFy
cmF5KS5zZXRNYXRyaXgoNCwgNCk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zOTQ2LDkgKzM4
OTEsOCBAQAogICBjYXNlIDE3NDoKIAogICAgIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0g
Y29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVt
cG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFVJbnQsIHF1
YWwsICh5eWxzcFswXSkpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0
ZSgyKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRp
YWxpemUoRWJ0RmxvYXQsICh5eWxzcFswXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVT
cGVjaWZpZXJOb25BcnJheSkuc2V0TWF0cml4KDIsIDMpOwogICAgIH0KIAogICAgIGJyZWFrOwpA
QCAtMzk1Niw5ICszOTAwLDggQEAKICAgY2FzZSAxNzU6CiAKICAgICB7Ci0gICAgICAgIFRRdWFs
aWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUds
b2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNp
YyhFYnRVSW50LCBxdWFsLCAoeXlsc3BbMF0pKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRBZ2dyZWdhdGUoMyk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5v
bkFycmF5KS5pbml0aWFsaXplKEVidEZsb2F0LCAoeXlsc3BbMF0pKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLnNldE1hdHJpeCgzLCAyKTsKICAgICB9CiAK
ICAgICBicmVhazsKQEAgLTM5NjYsOSArMzkwOSw4IEBACiAgIGNhc2UgMTc2OgogCiAgICAgewot
ICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExl
dmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0u
dHlwZSkuc2V0QmFzaWMoRWJ0VUludCwgcXVhbCwgKHl5bHNwWzBdKSk7Ci0gICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDQpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRGbG9hdCwgKHl5bHNwWzBdKSk7Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5zZXRNYXRyaXgoMiwg
NCk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zOTc2LDkgKzM5MTgsOCBAQAogICBjYXNlIDE3
NzoKIAogICAgIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXlsc3BbMF0pKTsK
LSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRNYXRyaXgoMiwgMik7CisgICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidEZsb2F0LCAo
eXlsc3BbMF0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkp
LnNldE1hdHJpeCg0LCAyKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTM5ODYsOSArMzkyNyw4
IEBACiAgIGNhc2UgMTc4OgogCiAgICAgewotICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250
ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jh
cnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWws
ICh5eWxzcFswXSkpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldE1hdHJpeCgzLCAz
KTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxp
emUoRWJ0RmxvYXQsICh5eWxzcFswXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVj
aWZpZXJOb25BcnJheSkuc2V0TWF0cml4KDMsIDQpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAt
Mzk5Niw5ICszOTM2LDggQEAKICAgY2FzZSAxNzk6CiAKICAgICB7Ci0gICAgICAgIFRRdWFsaWZp
ZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2Jh
bCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhF
YnRGbG9hdCwgcXVhbCwgKHl5bHNwWzBdKSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSku
c2V0TWF0cml4KDQsIDQpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25B
cnJheSkuaW5pdGlhbGl6ZShFYnRGbG9hdCwgKHl5bHNwWzBdKSk7CisgICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5zZXRNYXRyaXgoNCwgMyk7CiAgICAgfQogCiAg
ICAgYnJlYWs7CkBAIC00MDA2LDkgKzM5NDUsNyBAQAogICBjYXNlIDE4MDoKIAogICAgIHsKLSAg
ICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZl
bCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXlsc3BbMF0pKTsKLSAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRNYXRyaXgoMiwgMyk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidFNhbXBsZXIyRCwgKHl5bHNwWzBdKSk7
CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC00MDE2LDkgKzM5NTMsNyBAQAogICBjYXNlIDE4MToK
IAogICAgIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXlsc3BbMF0pKTsKLSAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRNYXRyaXgoMywgMik7CisgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidFNhbXBsZXIzRCwg
KHl5bHNwWzBdKSk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC00MDI2LDkgKzM5NjEsNyBAQAog
ICBjYXNlIDE4MjoKIAogICAgIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+
c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5Owot
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXls
c3BbMF0pKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRNYXRyaXgoMiwgNCk7Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVi
dFNhbXBsZXJDdWJlLCAoeXlsc3BbMF0pKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTQwMzYs
OSArMzk2OSw3IEBACiAgIGNhc2UgMTgzOgogCiAgICAgewotICAgICAgICBUUXVhbGlmaWVyIHF1
YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBF
dnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Rmxv
YXQsIHF1YWwsICh5eWxzcFswXSkpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldE1h
dHJpeCg0LCAyKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkp
LmluaXRpYWxpemUoRWJ0U2FtcGxlcjJEQXJyYXksICh5eWxzcFswXSkpOwogICAgIH0KIAogICAg
IGJyZWFrOwpAQCAtNDA0Niw5ICszOTc3LDcgQEAKICAgY2FzZSAxODQ6CiAKICAgICB7Ci0gICAg
ICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwo
KSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWzBdKSk7Ci0gICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZSkuc2V0TWF0cml4KDMsIDQpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVT
cGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRJU2FtcGxlcjJELCAoeXlsc3BbMF0pKTsK
ICAgICB9CiAKICAgICBicmVhazsKQEAgLTQwNTYsOSArMzk4NSw3IEBACiAgIGNhc2UgMTg1Ogog
CiAgICAgewotICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5h
dEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eWxzcFswXSkpOwotICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldE1hdHJpeCg0LCAzKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0SVNhbXBsZXIzRCwg
KHl5bHNwWzBdKSk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC00MDY2LDggKzM5OTMsNyBAQAog
ICBjYXNlIDE4NjoKIAogICAgIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+
c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5Owot
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNhbXBsZXIyRCwgcXVhbCwg
KHl5bHNwWzBdKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5
KS5pbml0aWFsaXplKEVidElTYW1wbGVyQ3ViZSwgKHl5bHNwWzBdKSk7CiAgICAgfQogCiAgICAg
YnJlYWs7CkBAIC00MDc1LDggKzQwMDEsNyBAQAogICBjYXNlIDE4NzoKIAogICAgIHsKLSAgICAg
ICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgp
ID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
LnNldEJhc2ljKEVidFNhbXBsZXIzRCwgcXVhbCwgKHl5bHNwWzBdKSk7CisgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidElTYW1wbGVyMkRB
cnJheSwgKHl5bHNwWzBdKSk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC00MDg0LDggKzQwMDks
NyBAQAogICBjYXNlIDE4ODoKIAogICAgIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29u
dGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9y
YXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNhbXBsZXJDdWJl
LCBxdWFsLCAoeXlsc3BbMF0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVy
Tm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0VVNhbXBsZXIyRCwgKHl5bHNwWzBdKSk7CiAgICAgfQog
CiAgICAgYnJlYWs7CkBAIC00MDkzLDggKzQwMTcsNyBAQAogICBjYXNlIDE4OToKIAogICAgIHsK
LSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxM
ZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEJhc2ljKEVidFNhbXBsZXIyREFycmF5LCBxdWFsLCAoeXlsc3BbMF0pKTsKKyAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0
VVNhbXBsZXIzRCwgKHl5bHNwWzBdKSk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC00MTAyLDgg
KzQwMjUsNyBAQAogICBjYXNlIDE5MDoKIAogICAgIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFs
ID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZx
VGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidElTYW1w
bGVyMkQsIHF1YWwsICh5eWxzcFswXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVj
aWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRVU2FtcGxlckN1YmUsICh5eWxzcFswXSkpOwog
ICAgIH0KIAogICAgIGJyZWFrOwpAQCAtNDExMSw4ICs0MDMzLDcgQEAKICAgY2FzZSAxOTE6CiAK
ICAgICB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJU2FtcGxlcjNELCBxdWFsLCAoeXlsc3BbMF0pKTsK
KyAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUo
RWJ0VVNhbXBsZXIyREFycmF5LCAoeXlsc3BbMF0pKTsKICAgICB9CiAKICAgICBicmVhazsKQEAg
LTQxMjAsOCArNDA0MSw3IEBACiAgIGNhc2UgMTkyOgogCiAgICAgewotICAgICAgICBUUXVhbGlm
aWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9i
YWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMo
RWJ0SVNhbXBsZXJDdWJlLCBxdWFsLCAoeXlsc3BbMF0pKTsKKyAgICAgICAgKHl5dmFsLmludGVy
bS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0U2FtcGxlcjJEU2hhZG93LCAo
eXlsc3BbMF0pKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTQxMjksOCArNDA0OSw3IEBACiAg
IGNhc2UgMTkzOgogCiAgICAgewotICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5z
eW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0g
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0SVNhbXBsZXIyREFycmF5LCBx
dWFsLCAoeXlsc3BbMF0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9u
QXJyYXkpLmluaXRpYWxpemUoRWJ0U2FtcGxlckN1YmVTaGFkb3csICh5eWxzcFswXSkpOwogICAg
IH0KIAogICAgIGJyZWFrOwpAQCAtNDEzOCw4ICs0MDU3LDcgQEAKICAgY2FzZSAxOTQ6CiAKICAg
ICB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xv
YmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5zZXRCYXNpYyhFYnRVU2FtcGxlcjJELCBxdWFsLCAoeXlsc3BbMF0pKTsKKyAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0
U2FtcGxlcjJEQXJyYXlTaGFkb3csICh5eWxzcFswXSkpOwogICAgIH0KIAogICAgIGJyZWFrOwpA
QCAtNDE0Nyw5MyArNDA2NSwzNSBAQAogICBjYXNlIDE5NToKIAogICAgIHsKLSAgICAgICAgVFF1
YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZx
R2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJh
c2ljKEVidFVTYW1wbGVyM0QsIHF1YWwsICh5eWxzcFswXSkpOwotICAgIH0KLQotICAgIGJyZWFr
OwotCi0gIGNhc2UgMTk2OgotCi0gICAgewotICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250
ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jh
cnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0VVNhbXBsZXJDdWJl
LCBxdWFsLCAoeXlsc3BbMF0pKTsKLSAgICB9Ci0KLSAgICBicmVhazsKLQotICBjYXNlIDE5NzoK
LQotICAgIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFVTYW1wbGVyMkRBcnJheSwgcXVhbCwgKHl5bHNw
WzBdKSk7Ci0gICAgfQotCi0gICAgYnJlYWs7Ci0KLSAgY2FzZSAxOTg6Ci0KLSAgICB7Ci0gICAg
ICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwo
KSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRCYXNpYyhFYnRTYW1wbGVyMkRTaGFkb3csIHF1YWwsICh5eWxzcFswXSkpOwotICAgIH0K
LQotICAgIGJyZWFrOwotCi0gIGNhc2UgMTk5OgotCi0gICAgewotICAgICAgICBUUXVhbGlmaWVy
IHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwg
OiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0
U2FtcGxlckN1YmVTaGFkb3csIHF1YWwsICh5eWxzcFswXSkpOwotICAgIH0KLQotICAgIGJyZWFr
OwotCi0gIGNhc2UgMjAwOgotCi0gICAgewotICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250
ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jh
cnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U2FtcGxlcjJEQXJy
YXlTaGFkb3csIHF1YWwsICh5eWxzcFswXSkpOwotICAgIH0KLQotICAgIGJyZWFrOwotCi0gIGNh
c2UgMjAxOgotCi0gICAgewotICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9u
KCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIikpIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5z
dXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpICYmCisgICAgICAg
ICAgICAhY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX05WX0VHTF9zdHJlYW1fY29uc3Vt
ZXJfZXh0ZXJuYWwiKSkgewogICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWzBdKSwg
InVuc3VwcG9ydGVkIHR5cGUiLCAic2FtcGxlckV4dGVybmFsT0VTIik7Ci0gICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0g
Y29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVt
cG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNhbXBsZXJF
eHRlcm5hbE9FUywgcXVhbCwgKHl5bHNwWzBdKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidFNhbXBsZXJFeHRlcm5hbE9FUywgKHl5
bHNwWzBdKSk7CiAgICAgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMDI6CisgIGNhc2UgMTk2
OgogCiAgICAgewogICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9B
UkJfdGV4dHVyZV9yZWN0YW5nbGUiKSkgewogICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5
bHNwWzBdKSwgInVuc3VwcG9ydGVkIHR5cGUiLCAic2FtcGxlcjJEUmVjdCIpOwotICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVh
bCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2
cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTYW1w
bGVyMkRSZWN0LCBxdWFsLCAoeXlsc3BbMF0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBl
U3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0U2FtcGxlcjJEUmVjdCwgKHl5bHNwWzBd
KSk7CiAgICAgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMDM6CisgIGNhc2UgMTk3OgogCiAg
ICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWzBdLmludGVybS50eXBl
KTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5xdWFsaWZpZXIgPSBjb250ZXh0LT5zeW1i
b2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CisgICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KSA9ICh5eXZzcFswXS5pbnRl
cm0udHlwZVNwZWNpZmllck5vbkFycmF5KTsKICAgICB9CiAKICAgICBicmVhazsKIAotICBjYXNl
IDIwNDoKKyAgY2FzZSAxOTg6CiAKICAgICB7CiAgICAgICAgIC8vCkBAIC00MjQxLDQyICs0MTAx
LDQxIEBACiAgICAgICAgIC8vIHR5cGUuCiAgICAgICAgIC8vCiAgICAgICAgIFRUeXBlJiBzdHJ1
Y3R1cmUgPSBzdGF0aWNfY2FzdDxUVmFyaWFibGUqPigoeXl2c3BbMF0ubGV4KS5zeW1ib2wpLT5n
ZXRUeXBlKCk7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTdHJ1Y3QsIHF1YWwsICh5eWxzcFswXSkpOwot
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnVzZXJEZWYgPSAmc3RydWN0dXJlOworICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRTdHJ1
Y3QsICh5eWxzcFswXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25B
cnJheSkudXNlckRlZiA9ICZzdHJ1Y3R1cmU7CiAgICAgfQogCiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAyMDU6CisgIGNhc2UgMTk5OgogCi0gICAgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNs
YXJhdGlvbigoeXlsc3BbLTFdKSwgKih5eXZzcFstMV0ubGV4KS5zdHJpbmcpKSBjb250ZXh0LT5y
ZWNvdmVyKCk7IH0KKyAgICB7IGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oKHl5bHNw
Wy0xXSksICooeXl2c3BbLTFdLmxleCkuc3RyaW5nKTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAyMDY6CisgIGNhc2UgMjAwOgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
ID0gY29udGV4dC0+YWRkU3RydWN0dXJlKCh5eWxzcFstNV0pLCAoeXlsc3BbLTRdKSwgKHl5dnNw
Wy00XS5sZXgpLnN0cmluZywgKHl5dnNwWy0xXS5pbnRlcm0uZmllbGRMaXN0KSk7CisgICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KSA9IGNvbnRleHQtPmFkZFN0cnVj
dHVyZSgoeXlsc3BbLTVdKSwgKHl5bHNwWy00XSksICh5eXZzcFstNF0ubGV4KS5zdHJpbmcsICh5
eXZzcFstMV0uaW50ZXJtLmZpZWxkTGlzdCkpOwogICAgIH0KIAogICAgIGJyZWFrOwogCi0gIGNh
c2UgMjA3OgorICBjYXNlIDIwMToKIAotICAgIHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVj
bGFyYXRpb24oKHl5bHNwWzBdKSwgKih5eXZzcFswXS5sZXgpLnN0cmluZykpIGNvbnRleHQtPnJl
Y292ZXIoKTsgfQorICAgIHsgY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbigoeXlsc3Bb
MF0pLCAqKHl5dnNwWzBdLmxleCkuc3RyaW5nKTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAy
MDg6CisgIGNhc2UgMjAyOgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0g
Y29udGV4dC0+YWRkU3RydWN0dXJlKCh5eWxzcFstNF0pLCAoeXlsb2MpLCBOZXdQb29sVFN0cmlu
ZygiIiksICh5eXZzcFstMV0uaW50ZXJtLmZpZWxkTGlzdCkpOworICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkgPSBjb250ZXh0LT5hZGRTdHJ1Y3R1cmUoKHl5bHNw
Wy00XSksICh5eWxvYyksIE5ld1Bvb2xUU3RyaW5nKCIiKSwgKHl5dnNwWy0xXS5pbnRlcm0uZmll
bGRMaXN0KSk7CiAgICAgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMDk6CisgIGNhc2UgMjAz
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCkgPSAoeXl2c3BbMF0u
aW50ZXJtLmZpZWxkTGlzdCk7CkBAIC00Mjg0LDcgKzQxNDMsNyBAQAogCiAgICAgYnJlYWs7CiAK
LSAgY2FzZSAyMTA6CisgIGNhc2UgMjA0OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJt
LmZpZWxkTGlzdCkgPSAoeXl2c3BbLTFdLmludGVybS5maWVsZExpc3QpOwpAQCAtNDI5Myw3ICs0
MTUyLDYgQEAKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgKHl5dmFsLmludGVy
bS5maWVsZExpc3QpLT5zaXplKCk7ICsraikgewogICAgICAgICAgICAgICAgIGlmICgoKih5eXZh
bC5pbnRlcm0uZmllbGRMaXN0KSlbal0tPm5hbWUoKSA9PSBmaWVsZC0+bmFtZSgpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFswXSksICJkdXBsaWNhdGUgZmll
bGQgbmFtZSBpbiBzdHJ1Y3R1cmU6IiwgInN0cnVjdCIsIGZpZWxkLT5uYW1lKCkuY19zdHIoKSk7
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCkt
PnB1c2hfYmFjayhmaWVsZCk7CkBAIC00MzAyLDcgKzQxNjAsNyBAQAogCiAgICAgYnJlYWs7CiAK
LSAgY2FzZSAyMTE6CisgIGNhc2UgMjA1OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJt
LmZpZWxkTGlzdCkgPSBjb250ZXh0LT5hZGRTdHJ1Y3REZWNsYXJhdG9yTGlzdCgoeXl2c3BbLTJd
LmludGVybS50eXBlKSwgKHl5dnNwWy0xXS5pbnRlcm0uZmllbGRMaXN0KSk7CkBAIC00MzEwLDE4
ICs0MTY4LDE2IEBACiAKICAgICBicmVhazsKIAotICBjYXNlIDIxMjoKKyAgY2FzZSAyMDY6CiAK
ICAgICB7CiAgICAgICAgIC8vIEVTMyBPbmx5LCBidXQgZXJyb3JzIHNob3VsZCBiZSBoYW5kbGVk
IGVsc2V3aGVyZQotICAgICAgICAoeXl2c3BbLTJdLmludGVybS50eXBlKS5xdWFsaWZpZXIgPSAo
eXl2c3BbLTNdLmludGVybS50eXBlKS5xdWFsaWZpZXI7Ci0gICAgICAgICh5eXZzcFstMl0uaW50
ZXJtLnR5cGUpLmxheW91dFF1YWxpZmllciA9ICh5eXZzcFstM10uaW50ZXJtLnR5cGUpLmxheW91
dFF1YWxpZmllcjsKLSAgICAgICAgKHl5dmFsLmludGVybS5maWVsZExpc3QpID0gY29udGV4dC0+
YWRkU3RydWN0RGVjbGFyYXRvckxpc3QoKHl5dnNwWy0yXS5pbnRlcm0udHlwZSksICh5eXZzcFst
MV0uaW50ZXJtLmZpZWxkTGlzdCkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCkg
PSBjb250ZXh0LT5hZGRTdHJ1Y3REZWNsYXJhdG9yTGlzdFdpdGhRdWFsaWZpZXJzKCooeXl2c3Bb
LTNdLmludGVybS50eXBlUXVhbGlmaWVyQnVpbGRlciksICYoeXl2c3BbLTJdLmludGVybS50eXBl
KSwgKHl5dnNwWy0xXS5pbnRlcm0uZmllbGRMaXN0KSk7CiAgICAgfQogCiAgICAgYnJlYWs7CiAK
LSAgY2FzZSAyMTM6CisgIGNhc2UgMjA3OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJt
LmZpZWxkTGlzdCkgPSBOZXdQb29sVEZpZWxkTGlzdCgpOwpAQCAtNDMzMCw3ICs0MTg2LDcgQEAK
IAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjE0OgorICBjYXNlIDIwODoKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsLmludGVybS5maWVsZExpc3QpLT5wdXNoX2JhY2soKHl5dnNwWzBdLmludGVybS5m
aWVsZCkpOwpAQCAtNDMzOCwxMSArNDE5NCwxMCBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAy
MTU6CisgIGNhc2UgMjA5OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRF
cnJvckNoZWNrKCh5eWxzcFswXSksICooeXl2c3BbMF0ubGV4KS5zdHJpbmcpKQotICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICBjb250ZXh0LT5jaGVja0lzTm90UmVzZXJ2
ZWQoKHl5bHNwWzBdKSwgKih5eXZzcFswXS5sZXgpLnN0cmluZyk7CiAKICAgICAgICAgVFR5cGUq
IHR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKICAgICAgICAgKHl5dmFs
LmludGVybS5maWVsZCkgPSBuZXcgVEZpZWxkKHR5cGUsICh5eXZzcFswXS5sZXgpLnN0cmluZywg
KHl5bHNwWzBdKSk7CkBAIC00MzUwLDE2ICs0MjA1LDEzIEBACiAKICAgICBicmVhazsKIAotICBj
YXNlIDIxNjoKKyAgY2FzZSAyMTA6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNl
cnZlZEVycm9yQ2hlY2soKHl5bHNwWy0zXSksICooeXl2c3BbLTNdLmxleCkuc3RyaW5nKSkKLSAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgY29udGV4dC0+Y2hlY2tJc05v
dFJlc2VydmVkKCh5eWxzcFstM10pLCAqKHl5dnNwWy0zXS5sZXgpLnN0cmluZyk7CiAKICAgICAg
ICAgVFR5cGUqIHR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKLSAgICAg
ICAgaW50IHNpemU7Ci0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5
eWxzcFstMV0pLCAoeXl2c3BbLTFdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXplKSkKLSAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgdW5zaWduZWQgaW50IHNpemUg
PSBjb250ZXh0LT5jaGVja0lzVmFsaWRBcnJheVNpemUoKHl5bHNwWy0xXSksICh5eXZzcFstMV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSkpOwogICAgICAgICB0eXBlLT5zZXRBcnJheVNpemUoc2l6
ZSk7CiAKICAgICAgICAgKHl5dmFsLmludGVybS5maWVsZCkgPSBuZXcgVEZpZWxkKHR5cGUsICh5
eXZzcFstM10ubGV4KS5zdHJpbmcsICh5eWxzcFstM10pKTsKQEAgLTQzNjcsMTk3ICs0MjE5LDE5
NyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMTc6CisgIGNhc2UgMjExOgogCiAgICAgeyAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSk7IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjE4OgorICBjYXNlIDIxMjoKIAog
ICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJt
Tm9kZSk7IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjE5OgorICBjYXNlIDIxMzoKIAotICAg
IHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtQWdn
cmVnYXRlKTsgfQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFswXS5p
bnRlcm0uaW50ZXJtQmxvY2spOyB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDIyMDoKKyAgY2Fz
ZSAyMTQ6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbMF0uaW50
ZXJtLmludGVybU5vZGUpOyB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDIyMToKKyAgY2FzZSAy
MTU6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJt
LmludGVybU5vZGUpOyB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDIyMjoKKyAgY2FzZSAyMTY6
CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmlu
dGVybU5vZGUpOyB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDIyMzoKKyAgY2FzZSAyMTc6CiAK
ICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVy
bU5vZGUpOyB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDIyNDoKKyAgY2FzZSAyMTg6CiAKICAg
ICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybVN3
aXRjaCk7IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjI1OgorICBjYXNlIDIxOToKIAogICAg
IHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtQ2Fz
ZSk7IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjI2OgorICBjYXNlIDIyMDoKIAogICAgIHsg
KHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtTm9kZSk7
IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjI3OgorICBjYXNlIDIyMToKIAogICAgIHsgKHl5
dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0K
IAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjI4OgorICBjYXNlIDIyMjoKIAotICAgIHsgKHl5dmFs
LmludGVybS5pbnRlcm1BZ2dyZWdhdGUpID0gMDsgfQorICAgIHsgKHl5dmFsLmludGVybS5pbnRl
cm1CbG9jaykgPSAwOyB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDIyOToKKyAgY2FzZSAyMjM6
CiAKICAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgfQogCiAgICAgYnJlYWs7CiAK
LSAgY2FzZSAyMzA6CisgIGNhc2UgMjI0OgogCiAgICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5w
b3AoKTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMzE6CisgIGNhc2UgMjI1OgogCiAgICAg
ewotICAgICAgICBpZiAoKHl5dnNwWy0yXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSAhPSAwKSB7
Ci0gICAgICAgICAgICAoeXl2c3BbLTJdLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpLT5zZXRPcChF
T3BTZXF1ZW5jZSk7Ci0gICAgICAgICAgICAoeXl2c3BbLTJdLmludGVybS5pbnRlcm1BZ2dyZWdh
dGUpLT5zZXRMaW5lKCh5eWxvYykpOworICAgICAgICBpZiAoKHl5dnNwWy0yXS5pbnRlcm0uaW50
ZXJtQmxvY2spICE9IDApIHsKKyAgICAgICAgICAgICh5eXZzcFstMl0uaW50ZXJtLmludGVybUJs
b2NrKS0+c2V0TGluZSgoeXlsb2MpKTsKICAgICAgICAgfQotICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybUFnZ3JlZ2F0ZSkgPSAoeXl2c3BbLTJdLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybUJsb2NrKSA9ICh5eXZzcFstMl0uaW50ZXJtLmlu
dGVybUJsb2NrKTsKICAgICB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDIzMjoKKyAgY2FzZSAy
MjY6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJt
LmludGVybUFnZ3JlZ2F0ZSk7IH0KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAo
eXl2c3BbMF0uaW50ZXJtLmludGVybUJsb2NrKTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAy
MzM6CisgIGNhc2UgMjI3OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5
dnNwWzBdLmludGVybS5pbnRlcm1Ob2RlKTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMzQ6
CisgIGNhc2UgMjI4OgogCiAgICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7IH0KIAog
ICAgIGJyZWFrOwogCi0gIGNhc2UgMjM1OgorICBjYXNlIDIyOToKIAotICAgIHsgY29udGV4dC0+
c3ltYm9sVGFibGUucG9wKCk7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbMF0u
aW50ZXJtLmludGVybUFnZ3JlZ2F0ZSk7IH0KKyAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBv
cCgpOyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1C
bG9jayk7IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjM2OgorICBjYXNlIDIzMDoKIAogICAg
IHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyB9CiAKICAgICBicmVhazsKIAotICBjYXNl
IDIzNzoKKyAgY2FzZSAyMzE6CiAKICAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOyAo
eXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1Ob2RlKTsg
fQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMzg6CisgIGNhc2UgMjMyOgogCiAgICAgewotICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkgPSAwOworICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybUJsb2NrKSA9IDA7CiAgICAgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAy
Mzk6CisgIGNhc2UgMjMzOgogCiAgICAgewotICAgICAgICBpZiAoKHl5dnNwWy0xXS5pbnRlcm0u
aW50ZXJtQWdncmVnYXRlKSkgewotICAgICAgICAgICAgKHl5dnNwWy0xXS5pbnRlcm0uaW50ZXJt
QWdncmVnYXRlKS0+c2V0T3AoRU9wU2VxdWVuY2UpOwotICAgICAgICAgICAgKHl5dnNwWy0xXS5p
bnRlcm0uaW50ZXJtQWdncmVnYXRlKS0+c2V0TGluZSgoeXlsb2MpKTsKKyAgICAgICAgaWYgKCh5
eXZzcFstMV0uaW50ZXJtLmludGVybUJsb2NrKSkgeworICAgICAgICAgICAgKHl5dnNwWy0xXS5p
bnRlcm0uaW50ZXJtQmxvY2spLT5zZXRMaW5lKCh5eWxvYykpOwogICAgICAgICB9Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSA9ICh5eXZzcFstMV0uaW50ZXJtLmludGVy
bUFnZ3JlZ2F0ZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQmxvY2spID0gKHl5dnNw
Wy0xXS5pbnRlcm0uaW50ZXJtQmxvY2spOwogICAgIH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2Ug
MjQwOgorICBjYXNlIDIzNDoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1B
Z2dyZWdhdGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoKHl5dnNwWzBd
LmludGVybS5pbnRlcm1Ob2RlKSwgKHl5bG9jKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtQmxvY2spID0gbmV3IFRJbnRlcm1CbG9jaygpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybUJsb2NrKS0+c2V0TGluZSgoeXlsb2MpKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1CbG9jayktPmFwcGVuZFN0YXRlbWVudCgoeXl2c3BbMF0uaW50ZXJtLmludGVybU5vZGUpKTsK
ICAgICB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDI0MToKKyAgY2FzZSAyMzU6CiAKICAgICB7
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFstMV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSks
ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eWxvYykpOworICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybUJsb2NrKSA9ICh5eXZzcFstMV0uaW50ZXJtLmludGVybUJsb2NrKTsKKyAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1CbG9jayktPmFwcGVuZFN0YXRlbWVudCgoeXl2c3Bb
MF0uaW50ZXJtLmludGVybU5vZGUpKTsKICAgICB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDI0
MjoKKyAgY2FzZSAyMzY6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAwOyB9
CiAKICAgICBicmVhazsKIAotICBjYXNlIDI0MzoKKyAgY2FzZSAyMzc6CiAKICAgICB7ICh5eXZh
bC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBzdGF0aWNfY2FzdDxUSW50ZXJtTm9kZSo+KCh5eXZzcFst
MV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpOyB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDI0
NDoKKyAgY2FzZSAyMzg6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JD
aGVjaygoeXlsc3BbLTRdKSwgKHl5dnNwWy0yXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCi0g
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9uKCh5eXZzcFstMl0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFswXS5pbnRlcm0ubm9kZVBhaXIpLCAoeXls
c3BbLTRdKSk7CisgICAgICAgIGNvbnRleHQtPmNoZWNrSXNTY2FsYXJCb29sKCh5eWxzcFstNF0p
LCAoeXl2c3BbLTJdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJZkVsc2UoKHl5dnNw
Wy0yXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWzBdLmludGVybS5ub2RlUGFpciks
ICh5eWxzcFstNF0pKTsKICAgICB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDI0NToKKyAgY2Fz
ZSAyMzk6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0g
KHl5dnNwWy0yXS5pbnRlcm0uaW50ZXJtTm9kZSk7CkBAIC00NTY2LDcgKzQ0MTgsNyBAQAogCiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAyNDY6CisgIGNhc2UgMjQwOgogCiAgICAgewogICAgICAgICAo
eXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5ub2RlMSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtTm9k
ZSk7CkBAIC00NTc1LDIyICs0NDI3LDIyIEBACiAKICAgICBicmVhazsKIAotICBjYXNlIDI0NzoK
KyAgY2FzZSAyNDE6CiAKICAgICB7IGNvbnRleHQtPmluY3JTd2l0Y2hOZXN0aW5nTGV2ZWwoKTsg
fQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNDg6CisgIGNhc2UgMjQyOgogCiAgICAgewotICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVN3aXRjaCkgPSBjb250ZXh0LT5hZGRTd2l0Y2goKHl5
dnNwWy0zXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWzBdLmludGVybS5pbnRlcm1B
Z2dyZWdhdGUpLCAoeXlsc3BbLTVdKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtU3dp
dGNoKSA9IGNvbnRleHQtPmFkZFN3aXRjaCgoeXl2c3BbLTNdLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXl2c3BbMF0uaW50ZXJtLmludGVybUJsb2NrKSwgKHl5bHNwWy01XSkpOwogICAgICAg
ICBjb250ZXh0LT5kZWNyU3dpdGNoTmVzdGluZ0xldmVsKCk7CiAgICAgfQogCiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAyNDk6CisgIGNhc2UgMjQzOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybUNhc2UpID0gY29udGV4dC0+YWRkQ2FzZSgoeXl2c3BbLTFdLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAoeXlsc3BbLTJdKSk7CkBAIC00NTk4LDcgKzQ0NTAsNyBAQAogCiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAyNTA6CisgIGNhc2UgMjQ0OgogCiAgICAgewogICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybUNhc2UpID0gY29udGV4dC0+YWRkRGVmYXVsdCgoeXlsc3BbLTFdKSk7
CkBAIC00NjA2LDI3ICs0NDU4LDI0IEBACiAKICAgICBicmVhazsKIAotICBjYXNlIDI1MToKKyAg
Y2FzZSAyNDU6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKLSAgICAgICAgaWYgKGNvbnRl
eHQtPmJvb2xFcnJvckNoZWNrKCh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
TGluZSgpLCAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQotICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICBjb250ZXh0LT5jaGVja0lzU2NhbGFyQm9vbCgo
eXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldExpbmUoKSwgKHl5dnNwWzBdLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpKTsKICAgICB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDI1
MjoKKyAgY2FzZSAyNDY6CiAKICAgICB7CiAgICAgICAgIFRJbnRlcm1Ob2RlICppbnRlcm1Ob2Rl
OwotICAgICAgICBpZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hlY2soKHl5bHNwWy0yXSksICh5eXZz
cFstM10uaW50ZXJtLnR5cGUpKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAg
ICAgICAgY29udGV4dC0+Y2hlY2tJc1NjYWxhckJvb2woKHl5bHNwWy0yXSksICh5eXZzcFstM10u
aW50ZXJtLnR5cGUpKTsKIAogICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXpl
cigoeXlsc3BbLTJdKSwgKih5eXZzcFstMl0ubGV4KS5zdHJpbmcsICh5eXZzcFstM10uaW50ZXJt
LnR5cGUpLCAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICZpbnRlcm1Ob2RlKSkK
ICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFswXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSAwOwogICAgICAgICB9CiAgICAgfQpAQCAtNDYzMywxMyArNDQ4MiwxMyBAQAogCiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAyNTM6CisgIGNhc2UgMjQ3OgogCiAgICAgeyBjb250ZXh0LT5zeW1i
b2xUYWJsZS5wdXNoKCk7IGNvbnRleHQtPmluY3JMb29wTmVzdGluZ0xldmVsKCk7IH0KIAogICAg
IGJyZWFrOwogCi0gIGNhc2UgMjU0OgorICBjYXNlIDI0ODoKIAogICAgIHsKICAgICAgICAgY29u
dGV4dC0+c3ltYm9sVGFibGUucG9wKCk7CkBAIC00NjQ5LDE3ICs0NDk4LDE2IEBACiAKICAgICBi
cmVhazsKIAotICBjYXNlIDI1NToKKyAgY2FzZSAyNDk6CiAKICAgICB7IGNvbnRleHQtPmluY3JM
b29wTmVzdGluZ0xldmVsKCk7IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjU2OgorICBjYXNl
IDI1MDoKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCh5eWxz
cFswXSksICh5eXZzcFstMl0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQotICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICBjb250ZXh0LT5jaGVja0lzU2NhbGFyQm9vbCgo
eXlsc3BbMF0pLCAoeXl2c3BbLTJdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKTsKIAogICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZExv
b3AoRUxvb3BEb1doaWxlLCAwLCAoeXl2c3BbLTJdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAw
LCAoeXl2c3BbLTVdLmludGVybS5pbnRlcm1Ob2RlKSwgKHl5bHNwWy00XSkpOwogICAgICAgICBj
b250ZXh0LT5kZWNyTG9vcE5lc3RpbmdMZXZlbCgpOwpAQCAtNDY2NywxMyArNDUxNSwxMyBAQAog
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNTc6CisgIGNhc2UgMjUxOgogCiAgICAgeyBjb250ZXh0
LT5zeW1ib2xUYWJsZS5wdXNoKCk7IGNvbnRleHQtPmluY3JMb29wTmVzdGluZ0xldmVsKCk7IH0K
IAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjU4OgorICBjYXNlIDI1MjoKIAogICAgIHsKICAgICAg
ICAgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7CkBAIC00NjgzLDcgKzQ1MzEsNyBAQAogCiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAyNTk6CisgIGNhc2UgMjUzOgogCiAgICAgewogICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1Ob2RlKTsK
QEAgLTQ2OTEsNyArNDUzOSw3IEBACiAKICAgICBicmVhazsKIAotICBjYXNlIDI2MDoKKyAgY2Fz
ZSAyNTQ6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2
c3BbMF0uaW50ZXJtLmludGVybU5vZGUpOwpAQCAtNDY5OSw3ICs0NTQ3LDcgQEAKIAogICAgIGJy
ZWFrOwogCi0gIGNhc2UgMjYxOgorICBjYXNlIDI1NToKIAogICAgIHsKICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpOwpAQCAtNDcwNyw3ICs0NTU1LDcgQEAKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjYyOgor
ICBjYXNlIDI1NjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gMDsKQEAgLTQ3MTUsNyArNDU2Myw3IEBACiAKICAgICBicmVhazsKIAotICBjYXNlIDI2
MzoKKyAgY2FzZSAyNTc6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIp
Lm5vZGUxID0gKHl5dnNwWy0xXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKQEAgLTQ3MjQsNyAr
NDU3Miw3IEBACiAKICAgICBicmVhazsKIAotICBjYXNlIDI2NDoKKyAgY2FzZSAyNTg6CiAKICAg
ICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWy0yXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKQEAgLTQ3MzMsNyArNDU4MSw3IEBACiAKICAgICBicmVh
azsKIAotICBjYXNlIDI2NToKKyAgY2FzZSAyNTk6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5hZGRCcmFuY2goRU9wQ29udGludWUsICh5eWxz
cFstMV0pKTsKQEAgLTQ3NDEsNyArNDU4OSw3IEBACiAKICAgICBicmVhazsKIAotICBjYXNlIDI2
NjoKKyAgY2FzZSAyNjA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9k
ZSkgPSBjb250ZXh0LT5hZGRCcmFuY2goRU9wQnJlYWssICh5eWxzcFstMV0pKTsKQEAgLTQ3NDks
NyArNDU5Nyw3IEBACiAKICAgICBicmVhazsKIAotICBjYXNlIDI2NzoKKyAgY2FzZSAyNjE6CiAK
ICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5hZGRC
cmFuY2goRU9wUmV0dXJuLCAoeXlsc3BbLTFdKSk7CkBAIC00NzU3LDcgKzQ2MDUsNyBAQAogCiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAyNjg6CisgIGNhc2UgMjYyOgogCiAgICAgewogICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+YWRkQnJhbmNoKEVPcFJldHVybiwg
KHl5dnNwWy0xXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWy0yXSkpOwpAQCAtNDc2
NSw3ICs0NjEzLDcgQEAKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjY5OgorICBjYXNlIDI2MzoK
IAogICAgIHsKICAgICAgICAgRlJBR19PTkxZKCJkaXNjYXJkIiwgKHl5bHNwWy0xXSkpOwpAQCAt
NDc3NCwyNSArNDYyMiwyNiBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNzA6CisgIGNhc2Ug
MjY0OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNw
WzBdLmludGVybS5pbnRlcm1Ob2RlKTsKLSAgICAgICAgY29udGV4dC0+c2V0VHJlZVJvb3QoKHl5
dmFsLmludGVybS5pbnRlcm1Ob2RlKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQmxv
Y2spID0gbmV3IFRJbnRlcm1CbG9jaygpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybUJs
b2NrKS0+c2V0TGluZSgoeXlsb2MpKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1CbG9j
ayktPmFwcGVuZFN0YXRlbWVudCgoeXl2c3BbMF0uaW50ZXJtLmludGVybU5vZGUpKTsKKyAgICAg
ICAgY29udGV4dC0+c2V0VHJlZVJvb3QoKHl5dmFsLmludGVybS5pbnRlcm1CbG9jaykpOwogICAg
IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjcxOgorICBjYXNlIDI2NToKIAogICAgIHsKLSAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5n
cm93QWdncmVnYXRlKCh5eXZzcFstMV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXl2c3BbMF0uaW50
ZXJtLmludGVybU5vZGUpLCAoeXlsb2MpKTsKLSAgICAgICAgY29udGV4dC0+c2V0VHJlZVJvb3Qo
KHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
QmxvY2spLT5hcHBlbmRTdGF0ZW1lbnQoKHl5dnNwWzBdLmludGVybS5pbnRlcm1Ob2RlKSk7CiAg
ICAgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNzI6CisgIGNhc2UgMjY2OgogCiAgICAgewog
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRl
cm1Ob2RlKTsKQEAgLTQ4MDAsNyArNDY0OSw3IEBACiAKICAgICBicmVhazsKIAotICBjYXNlIDI3
MzoKKyAgY2FzZSAyNjc6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9k
ZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybU5vZGUpOwpAQCAtNDgwOCwxOCArNDY1NywxOCBA
QAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNzQ6CisgIGNhc2UgMjY4OgogCiAgICAgewotICAg
ICAgICBjb250ZXh0LT5wYXJzZUZ1bmN0aW9uUHJvdG90eXBlKCh5eWxzcFswXSksICh5eXZzcFsw
XS5pbnRlcm0pLmZ1bmN0aW9uLCAmKHl5dnNwWzBdLmludGVybSkuaW50ZXJtQWdncmVnYXRlKTsK
KyAgICAgICAgY29udGV4dC0+cGFyc2VGdW5jdGlvbkRlZmluaXRpb25IZWFkZXIoKHl5bHNwWzBd
KSwgJigoeXl2c3BbMF0uaW50ZXJtKS5mdW5jdGlvbiksICYoeXl2c3BbMF0uaW50ZXJtKS5pbnRl
cm1BZ2dyZWdhdGUpOwogICAgIH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjc1OgorICBjYXNl
IDI2OToKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRl
eHQtPmFkZEZ1bmN0aW9uRGVmaW5pdGlvbigqKCh5eXZzcFstMl0uaW50ZXJtKS5mdW5jdGlvbiks
ICh5eXZzcFstMl0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUsICh5eXZzcFswXS5pbnRlcm0uaW50
ZXJtQWdncmVnYXRlKSwgKHl5bHNwWy0yXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bU5vZGUpID0gY29udGV4dC0+YWRkRnVuY3Rpb25EZWZpbml0aW9uKCooKHl5dnNwWy0yXS5pbnRl
cm0pLmZ1bmN0aW9uKSwgKHl5dnNwWy0yXS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSwgKHl5dnNw
WzBdLmludGVybS5pbnRlcm1CbG9jayksICh5eWxzcFstMl0pKTsKICAgICB9CiAKICAgICBicmVh
azsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L2dsc2xhbmdfdGFiLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZ190YWIuaAkocmV2aXNpb24gMjA4MDIxKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZ190
YWIuaAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDYgKzIxMCw3IEBACiAgICAgICAgICAgICBUSW50
ZXJtQ2FzZSogaW50ZXJtQ2FzZTsKICAgICAgICAgfTsKICAgICAgICAgdW5pb24geworICAgICAg
ICAgICAgVFR5cGVTcGVjaWZpZXJOb25BcnJheSB0eXBlU3BlY2lmaWVyTm9uQXJyYXk7CiAgICAg
ICAgICAgICBUUHVibGljVHlwZSB0eXBlOwogICAgICAgICAgICAgVFByZWNpc2lvbiBwcmVjaXNp
b247CiAgICAgICAgICAgICBUTGF5b3V0UXVhbGlmaWVyIGxheW91dFF1YWxpZmllcjsKQEAgLTIx
OCw2ICsyMTksOCBAQAogICAgICAgICAgICAgVFBhcmFtZXRlciBwYXJhbTsKICAgICAgICAgICAg
IFRGaWVsZCogZmllbGQ7CiAgICAgICAgICAgICBURmllbGRMaXN0KiBmaWVsZExpc3Q7CisgICAg
ICAgICAgICBUUXVhbGlmaWVyV3JhcHBlckJhc2UgKnF1YWxpZmllcldyYXBwZXI7CisgICAgICAg
ICAgICBUVHlwZVF1YWxpZmllckJ1aWxkZXIgKnR5cGVRdWFsaWZpZXJCdWlsZGVyOwogICAgICAg
ICB9OwogICAgIH0gaW50ZXJtOwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9pbnRlcm1PdXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2ludGVybU91dC5jcHAJKHJl
dmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL2ludGVybU91dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwLDEwICsxMCwxMSBA
QAogbmFtZXNwYWNlCiB7CiAKLXZvaWQgT3V0cHV0RnVuY3Rpb24oVEluZm9TaW5rQmFzZSAmb3V0
LCBjb25zdCBjaGFyICpzdHIsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpCit2b2lkIE91dHB1dEZ1
bmN0aW9uKFRJbmZvU2lua0Jhc2UgJm91dCwgY29uc3QgY2hhciAqc3RyLCBURnVuY3Rpb25TeW1i
b2xJbmZvICppbmZvKQogewotICAgIGNvbnN0IGNoYXIgKmludGVybmFsID0gbm9kZS0+Z2V0TmFt
ZU9iaigpLmlzSW50ZXJuYWwoKSA/ICIgKGludGVybmFsIGZ1bmN0aW9uKSIgOiAiIjsKLSAgICBv
dXQgPDwgc3RyIDw8IGludGVybmFsIDw8ICI6ICIgPDwgbm9kZS0+Z2V0TmFtZU9iaigpLmdldFN0
cmluZygpOworICAgIGNvbnN0IGNoYXIgKmludGVybmFsID0gaW5mby0+Z2V0TmFtZU9iaigpLmlz
SW50ZXJuYWwoKSA/ICIgKGludGVybmFsIGZ1bmN0aW9uKSIgOiAiIjsKKyAgICBvdXQgPDwgc3Ry
IDw8IGludGVybmFsIDw8ICI6ICIgPDwgaW5mby0+Z2V0TmFtZU9iaigpLmdldFN0cmluZygpIDw8
ICIgKHN5bWJvbCBpZCAiCisgICAgICAgIDw8IGluZm8tPmdldElkKCkgPDwgIikiOwogfQogCiAv
LwpAQCAtNDIsMTAgKzQzLDE2IEBACiAgIHByb3RlY3RlZDoKICAgICB2b2lkIHZpc2l0U3ltYm9s
KFRJbnRlcm1TeW1ib2wgKikgb3ZlcnJpZGU7CiAgICAgdm9pZCB2aXNpdENvbnN0YW50VW5pb24o
VEludGVybUNvbnN0YW50VW5pb24gKikgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdFN3aXp6bGUo
VmlzaXQgdmlzaXQsIFRJbnRlcm1Td2l6emxlICpub2RlKSBvdmVycmlkZTsKICAgICBib29sIHZp
c2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5ICopIG92ZXJyaWRlOwogICAgIGJv
b2wgdmlzaXRVbmFyeShWaXNpdCB2aXNpdCwgVEludGVybVVuYXJ5ICopIG92ZXJyaWRlOwotICAg
IGJvb2wgdmlzaXRTZWxlY3Rpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1TZWxlY3Rpb24gKikgb3Zl
cnJpZGU7CisgICAgYm9vbCB2aXNpdFRlcm5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1UZXJuYXJ5
ICpub2RlKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0SWZFbHNlKFZpc2l0IHZpc2l0LCBUSW50
ZXJtSWZFbHNlICpub2RlKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0U3dpdGNoKFZpc2l0IHZp
c2l0LCBUSW50ZXJtU3dpdGNoICpub2RlKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0Q2FzZShW
aXNpdCB2aXNpdCwgVEludGVybUNhc2UgKm5vZGUpIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRG
dW5jdGlvbkRlZmluaXRpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24g
Km5vZGUpIG92ZXJyaWRlOwogICAgIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJ
bnRlcm1BZ2dyZWdhdGUgKikgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdEJsb2NrKFZpc2l0IHZp
c2l0LCBUSW50ZXJtQmxvY2sgKikgb3ZlcnJpZGU7CiAgICAgYm9vbCB2aXNpdExvb3AoVmlzaXQg
dmlzaXQsIFRJbnRlcm1Mb29wICopIG92ZXJyaWRlOwogICAgIGJvb2wgdmlzaXRCcmFuY2goVmlz
aXQgdmlzaXQsIFRJbnRlcm1CcmFuY2ggKikgb3ZlcnJpZGU7CiB9OwpAQCAtODIsNiArODksMTQg
QEAKICAgICBzaW5rIDw8ICIoIiA8PCBub2RlLT5nZXRDb21wbGV0ZVN0cmluZygpIDw8ICIpXG4i
OwogfQogCitib29sIFRPdXRwdXRUcmF2ZXJzZXI6OnZpc2l0U3dpenpsZShWaXNpdCB2aXNpdCwg
VEludGVybVN3aXp6bGUgKm5vZGUpCit7CisgICAgVEluZm9TaW5rQmFzZSAmb3V0ID0gc2luazsK
KyAgICBPdXRwdXRUcmVlVGV4dChvdXQsIG5vZGUsIG1EZXB0aCk7CisgICAgb3V0IDw8ICJ2ZWN0
b3Igc3dpenpsZSI7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgVE91dHB1dFRyYXZlcnNl
cjo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkgKm5vZGUpCiB7CiAgICAg
VEluZm9TaW5rQmFzZSYgb3V0ID0gc2luazsKQEAgLTkwLDE0OCArMTA1LDE0OCBAQAogCiAgICAg
c3dpdGNoIChub2RlLT5nZXRPcCgpKQogICAgIHsKLSAgICAgIGNhc2UgRU9wQXNzaWduOgotICAg
ICAgICBvdXQgPDwgIm1vdmUgc2Vjb25kIGNoaWxkIHRvIGZpcnN0IGNoaWxkIjsKLSAgICAgICAg
YnJlYWs7Ci0gICAgICBjYXNlIEVPcEluaXRpYWxpemU6Ci0gICAgICAgIG91dCA8PCAiaW5pdGlh
bGl6ZSBmaXJzdCBjaGlsZCB3aXRoIHNlY29uZCBjaGlsZCI7Ci0gICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSBFT3BBZGRBc3NpZ246Ci0gICAgICAgIG91dCA8PCAiYWRkIHNlY29uZCBjaGlsZCBp
bnRvIGZpcnN0IGNoaWxkIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFN1YkFzc2ln
bjoKLSAgICAgICAgb3V0IDw8ICJzdWJ0cmFjdCBzZWNvbmQgY2hpbGQgaW50byBmaXJzdCBjaGls
ZCI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BNdWxBc3NpZ246Ci0gICAgICAgIG91
dCA8PCAibXVsdGlwbHkgc2Vjb25kIGNoaWxkIGludG8gZmlyc3QgY2hpbGQiOwotICAgICAgICBi
cmVhazsKLSAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNNYXRyaXhBc3NpZ246Ci0gICAgICAgIG91
dCA8PCAibWF0cml4IG11bHQgc2Vjb25kIGNoaWxkIGludG8gZmlyc3QgY2hpbGQiOwotICAgICAg
ICBicmVhazsKLSAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNTY2FsYXJBc3NpZ246Ci0gICAgICAg
IG91dCA8PCAidmVjdG9yIHNjYWxlIHNlY29uZCBjaGlsZCBpbnRvIGZpcnN0IGNoaWxkIjsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzU2NhbGFyQXNzaWduOgotICAg
ICAgICBvdXQgPDwgIm1hdHJpeCBzY2FsZSBzZWNvbmQgY2hpbGQgaW50byBmaXJzdCBjaGlsZCI7
Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc01hdHJpeEFzc2lnbjoK
LSAgICAgICAgb3V0IDw8ICJtYXRyaXggbXVsdCBzZWNvbmQgY2hpbGQgaW50byBmaXJzdCBjaGls
ZCI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BEaXZBc3NpZ246Ci0gICAgICAgIG91
dCA8PCAiZGl2aWRlIHNlY29uZCBjaGlsZCBpbnRvIGZpcnN0IGNoaWxkIjsKLSAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEVPcElNb2RBc3NpZ246Ci0gICAgICAgIG91dCA8PCAibW9kdWxvIHNl
Y29uZCBjaGlsZCBpbnRvIGZpcnN0IGNoaWxkIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNl
IEVPcEJpdFNoaWZ0TGVmdEFzc2lnbjoKLSAgICAgICAgb3V0IDw8ICJiaXQtd2lzZSBzaGlmdCBm
aXJzdCBjaGlsZCBsZWZ0IGJ5IHNlY29uZCBjaGlsZCI7Ci0gICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSBFT3BCaXRTaGlmdFJpZ2h0QXNzaWduOgotICAgICAgICBvdXQgPDwgImJpdC13aXNlIHNo
aWZ0IGZpcnN0IGNoaWxkIHJpZ2h0IGJ5IHNlY29uZCBjaGlsZCI7Ci0gICAgICAgIGJyZWFrOwot
ICAgICAgY2FzZSBFT3BCaXR3aXNlQW5kQXNzaWduOgotICAgICAgICBvdXQgPDwgImJpdC13aXNl
IGFuZCBzZWNvbmQgY2hpbGQgaW50byBmaXJzdCBjaGlsZCI7Ci0gICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSBFT3BCaXR3aXNlWG9yQXNzaWduOgotICAgICAgICBvdXQgPDwgImJpdC13aXNlIHhv
ciBzZWNvbmQgY2hpbGQgaW50byBmaXJzdCBjaGlsZCI7Ci0gICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSBFT3BCaXR3aXNlT3JBc3NpZ246Ci0gICAgICAgIG91dCA8PCAiYml0LXdpc2Ugb3Igc2Vj
b25kIGNoaWxkIGludG8gZmlyc3QgY2hpbGQiOwotICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBFT3BDb21tYToKKyAgICAgICAgICAgIG91dCA8PCAiY29tbWEiOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgRU9wQXNzaWduOgorICAgICAgICAgICAgb3V0IDw8ICJtb3ZlIHNl
Y29uZCBjaGlsZCB0byBmaXJzdCBjaGlsZCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBFT3BJbml0aWFsaXplOgorICAgICAgICAgICAgb3V0IDw8ICJpbml0aWFsaXplIGZpcnN0
IGNoaWxkIHdpdGggc2Vjb25kIGNoaWxkIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEVPcEFkZEFzc2lnbjoKKyAgICAgICAgICAgIG91dCA8PCAiYWRkIHNlY29uZCBjaGlsZCBp
bnRvIGZpcnN0IGNoaWxkIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcFN1
YkFzc2lnbjoKKyAgICAgICAgICAgIG91dCA8PCAic3VidHJhY3Qgc2Vjb25kIGNoaWxkIGludG8g
Zmlyc3QgY2hpbGQiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wTXVsQXNz
aWduOgorICAgICAgICAgICAgb3V0IDw8ICJtdWx0aXBseSBzZWNvbmQgY2hpbGQgaW50byBmaXJz
dCBjaGlsZCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BWZWN0b3JUaW1l
c01hdHJpeEFzc2lnbjoKKyAgICAgICAgICAgIG91dCA8PCAibWF0cml4IG11bHQgc2Vjb25kIGNo
aWxkIGludG8gZmlyc3QgY2hpbGQiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
RU9wVmVjdG9yVGltZXNTY2FsYXJBc3NpZ246CisgICAgICAgICAgICBvdXQgPDwgInZlY3RvciBz
Y2FsZSBzZWNvbmQgY2hpbGQgaW50byBmaXJzdCBjaGlsZCI7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1NjYWxhckFzc2lnbjoKKyAgICAgICAgICAgIG91
dCA8PCAibWF0cml4IHNjYWxlIHNlY29uZCBjaGlsZCBpbnRvIGZpcnN0IGNoaWxkIjsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzTWF0cml4QXNzaWduOgor
ICAgICAgICAgICAgb3V0IDw8ICJtYXRyaXggbXVsdCBzZWNvbmQgY2hpbGQgaW50byBmaXJzdCBj
aGlsZCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BEaXZBc3NpZ246Cisg
ICAgICAgICAgICBvdXQgPDwgImRpdmlkZSBzZWNvbmQgY2hpbGQgaW50byBmaXJzdCBjaGlsZCI7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BJTW9kQXNzaWduOgorICAgICAg
ICAgICAgb3V0IDw8ICJtb2R1bG8gc2Vjb25kIGNoaWxkIGludG8gZmlyc3QgY2hpbGQiOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQml0U2hpZnRMZWZ0QXNzaWduOgorICAg
ICAgICAgICAgb3V0IDw8ICJiaXQtd2lzZSBzaGlmdCBmaXJzdCBjaGlsZCBsZWZ0IGJ5IHNlY29u
ZCBjaGlsZCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BCaXRTaGlmdFJp
Z2h0QXNzaWduOgorICAgICAgICAgICAgb3V0IDw8ICJiaXQtd2lzZSBzaGlmdCBmaXJzdCBjaGls
ZCByaWdodCBieSBzZWNvbmQgY2hpbGQiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgRU9wQml0d2lzZUFuZEFzc2lnbjoKKyAgICAgICAgICAgIG91dCA8PCAiYml0LXdpc2UgYW5k
IHNlY29uZCBjaGlsZCBpbnRvIGZpcnN0IGNoaWxkIjsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEVPcEJpdHdpc2VYb3JBc3NpZ246CisgICAgICAgICAgICBvdXQgPDwgImJpdC13
aXNlIHhvciBzZWNvbmQgY2hpbGQgaW50byBmaXJzdCBjaGlsZCI7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBFT3BCaXR3aXNlT3JBc3NpZ246CisgICAgICAgICAgICBvdXQgPDwg
ImJpdC13aXNlIG9yIHNlY29uZCBjaGlsZCBpbnRvIGZpcnN0IGNoaWxkIjsKKyAgICAgICAgICAg
IGJyZWFrOwogCi0gICAgICBjYXNlIEVPcEluZGV4RGlyZWN0OgotICAgICAgICBvdXQgPDwgImRp
cmVjdCBpbmRleCI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BJbmRleEluZGlyZWN0
OgotICAgICAgICBvdXQgPDwgImluZGlyZWN0IGluZGV4IjsKLSAgICAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEVPcEluZGV4RGlyZWN0U3RydWN0OgotICAgICAgICBvdXQgPDwgImRpcmVjdCBpbmRl
eCBmb3Igc3RydWN0dXJlIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEluZGV4RGly
ZWN0SW50ZXJmYWNlQmxvY2s6Ci0gICAgICAgIG91dCA8PCAiZGlyZWN0IGluZGV4IGZvciBpbnRl
cmZhY2UgYmxvY2siOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wVmVjdG9yU3dpenps
ZToKLSAgICAgICAgb3V0IDw8ICJ2ZWN0b3Igc3dpenpsZSI7Ci0gICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEVPcEluZGV4RGlyZWN0OgorICAgICAgICAgICAgb3V0IDw8ICJkaXJlY3QgaW5k
ZXgiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wSW5kZXhJbmRpcmVjdDoK
KyAgICAgICAgICAgIG91dCA8PCAiaW5kaXJlY3QgaW5kZXgiOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3RTdHJ1Y3Q6CisgICAgICAgICAgICBvdXQgPDwg
ImRpcmVjdCBpbmRleCBmb3Igc3RydWN0dXJlIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEVPcEluZGV4RGlyZWN0SW50ZXJmYWNlQmxvY2s6CisgICAgICAgICAgICBvdXQgPDwg
ImRpcmVjdCBpbmRleCBmb3IgaW50ZXJmYWNlIGJsb2NrIjsKKyAgICAgICAgICAgIGJyZWFrOwog
Ci0gICAgICBjYXNlIEVPcEFkZDoKLSAgICAgICAgb3V0IDw8ICJhZGQiOwotICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgRU9wU3ViOgotICAgICAgICBvdXQgPDwgInN1YnRyYWN0IjsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcE11bDoKLSAgICAgICAgb3V0IDw8ICJjb21wb25lbnQt
d2lzZSBtdWx0aXBseSI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BEaXY6Ci0gICAg
ICAgIG91dCA8PCAiZGl2aWRlIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcElNb2Q6
Ci0gICAgICAgIG91dCA8PCAibW9kdWxvIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVP
cEJpdFNoaWZ0TGVmdDoKLSAgICAgICAgb3V0IDw8ICJiaXQtd2lzZSBzaGlmdCBsZWZ0IjsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEJpdFNoaWZ0UmlnaHQ6Ci0gICAgICAgIG91dCA8
PCAiYml0LXdpc2Ugc2hpZnQgcmlnaHQiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9w
Qml0d2lzZUFuZDoKLSAgICAgICAgb3V0IDw8ICJiaXQtd2lzZSBhbmQiOwotICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgRU9wQml0d2lzZVhvcjoKLSAgICAgICAgb3V0IDw8ICJiaXQtd2lzZSB4
b3IiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQml0d2lzZU9yOgotICAgICAgICBv
dXQgPDwgImJpdC13aXNlIG9yIjsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQWRk
OgorICAgICAgICAgICAgb3V0IDw8ICJhZGQiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRU9wU3ViOgorICAgICAgICAgICAgb3V0IDw8ICJzdWJ0cmFjdCI7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BNdWw6CisgICAgICAgICAgICBvdXQgPDwgImNvbXBv
bmVudC13aXNlIG11bHRpcGx5IjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVP
cERpdjoKKyAgICAgICAgICAgIG91dCA8PCAiZGl2aWRlIjsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEVPcElNb2Q6CisgICAgICAgICAgICBvdXQgPDwgIm1vZHVsbyI7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BCaXRTaGlmdExlZnQ6CisgICAgICAgICAg
ICBvdXQgPDwgImJpdC13aXNlIHNoaWZ0IGxlZnQiOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgRU9wQml0U2hpZnRSaWdodDoKKyAgICAgICAgICAgIG91dCA8PCAiYml0LXdpc2Ug
c2hpZnQgcmlnaHQiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQml0d2lz
ZUFuZDoKKyAgICAgICAgICAgIG91dCA8PCAiYml0LXdpc2UgYW5kIjsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEVPcEJpdHdpc2VYb3I6CisgICAgICAgICAgICBvdXQgPDwgImJp
dC13aXNlIHhvciI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BCaXR3aXNl
T3I6CisgICAgICAgICAgICBvdXQgPDwgImJpdC13aXNlIG9yIjsKKyAgICAgICAgICAgIGJyZWFr
OwogCi0gICAgICBjYXNlIEVPcEVxdWFsOgotICAgICAgICBvdXQgPDwgIkNvbXBhcmUgRXF1YWwi
OwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wTm90RXF1YWw6Ci0gICAgICAgIG91dCA8
PCAiQ29tcGFyZSBOb3QgRXF1YWwiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wTGVz
c1RoYW46Ci0gICAgICAgIG91dCA8PCAiQ29tcGFyZSBMZXNzIFRoYW4iOwotICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgRU9wR3JlYXRlclRoYW46Ci0gICAgICAgIG91dCA8PCAiQ29tcGFyZSBH
cmVhdGVyIFRoYW4iOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wTGVzc1RoYW5FcXVh
bDoKLSAgICAgICAgb3V0IDw8ICJDb21wYXJlIExlc3MgVGhhbiBvciBFcXVhbCI7Ci0gICAgICAg
IGJyZWFrOwotICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbkVxdWFsOgotICAgICAgICBvdXQgPDwg
IkNvbXBhcmUgR3JlYXRlciBUaGFuIG9yIEVxdWFsIjsKLSAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRU9wRXF1YWw6CisgICAgICAgICAgICBvdXQgPDwgIkNvbXBhcmUgRXF1YWwiOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wTm90RXF1YWw6CisgICAgICAgICAgICBv
dXQgPDwgIkNvbXBhcmUgTm90IEVxdWFsIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEVPcExlc3NUaGFuOgorICAgICAgICAgICAgb3V0IDw8ICJDb21wYXJlIExlc3MgVGhhbiI7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbjoKKyAgICAg
ICAgICAgIG91dCA8PCAiQ29tcGFyZSBHcmVhdGVyIFRoYW4iOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgRU9wTGVzc1RoYW5FcXVhbDoKKyAgICAgICAgICAgIG91dCA8PCAiQ29t
cGFyZSBMZXNzIFRoYW4gb3IgRXF1YWwiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgRU9wR3JlYXRlclRoYW5FcXVhbDoKKyAgICAgICAgICAgIG91dCA8PCAiQ29tcGFyZSBHcmVh
dGVyIFRoYW4gb3IgRXF1YWwiOworICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgIGNhc2UgRU9w
VmVjdG9yVGltZXNTY2FsYXI6Ci0gICAgICAgIG91dCA8PCAidmVjdG9yLXNjYWxlIjsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFZlY3RvclRpbWVzTWF0cml4OgotICAgICAgICBvdXQg
PDwgInZlY3Rvci10aW1lcy1tYXRyaXgiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9w
TWF0cml4VGltZXNWZWN0b3I6Ci0gICAgICAgIG91dCA8PCAibWF0cml4LXRpbWVzLXZlY3RvciI7
Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1NjYWxhcjoKLSAgICAg
ICAgb3V0IDw8ICJtYXRyaXgtc2NhbGUiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9w
TWF0cml4VGltZXNNYXRyaXg6Ci0gICAgICAgIG91dCA8PCAibWF0cml4LW11bHRpcGx5IjsKLSAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNTY2FsYXI6CisgICAgICAg
ICAgICBvdXQgPDwgInZlY3Rvci1zY2FsZSI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBFT3BWZWN0b3JUaW1lc01hdHJpeDoKKyAgICAgICAgICAgIG91dCA8PCAidmVjdG9yLXRp
bWVzLW1hdHJpeCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BNYXRyaXhU
aW1lc1ZlY3RvcjoKKyAgICAgICAgICAgIG91dCA8PCAibWF0cml4LXRpbWVzLXZlY3RvciI7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1NjYWxhcjoKKyAg
ICAgICAgICAgIG91dCA8PCAibWF0cml4LXNjYWxlIjsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzTWF0cml4OgorICAgICAgICAgICAgb3V0IDw8ICJtYXRy
aXgtbXVsdGlwbHkiOworICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgIGNhc2UgRU9wTG9naWNh
bE9yOgotICAgICAgICBvdXQgPDwgImxvZ2ljYWwtb3IiOwotICAgICAgICBicmVhazsKLSAgICAg
IGNhc2UgRU9wTG9naWNhbFhvcjoKLSAgICAgICAgb3V0IDw8ICJsb2dpY2FsLXhvciI7Ci0gICAg
ICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BMb2dpY2FsQW5kOgotICAgICAgICBvdXQgPDwgImxv
Z2ljYWwtYW5kIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICBvdXQg
PDwgIjx1bmtub3duIG9wPiI7CisgICAgICAgIGNhc2UgRU9wTG9naWNhbE9yOgorICAgICAgICAg
ICAgb3V0IDw8ICJsb2dpY2FsLW9yIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEVPcExvZ2ljYWxYb3I6CisgICAgICAgICAgICBvdXQgPDwgImxvZ2ljYWwteG9yIjsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcExvZ2ljYWxBbmQ6CisgICAgICAgICAgICBv
dXQgPDwgImxvZ2ljYWwtYW5kIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgb3V0IDw8ICI8dW5rbm93biBvcD4iOwogICAgIH0KIAogICAgIG91dCA8
PCAiICgiIDw8IG5vZGUtPmdldENvbXBsZXRlU3RyaW5nKCkgPDwgIikiOwpAQCAtMzYyLDI3ICsz
NzcsMzggQEAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBUT3V0cHV0VHJhdmVyc2VyOjp2
aXNpdEZ1bmN0aW9uRGVmaW5pdGlvbihWaXNpdCB2aXNpdCwgVEludGVybUZ1bmN0aW9uRGVmaW5p
dGlvbiAqbm9kZSkKK3sKKyAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBzaW5rOworICAgIE91dHB1
dFRyZWVUZXh0KG91dCwgbm9kZSwgbURlcHRoKTsKKyAgICBPdXRwdXRGdW5jdGlvbihvdXQsICJG
dW5jdGlvbiBEZWZpbml0aW9uIiwgbm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCkpOworICAg
IG91dCA8PCAiXG4iOworICAgIHJldHVybiB0cnVlOworfQorCiBib29sIFRPdXRwdXRUcmF2ZXJz
ZXI6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKQog
ewogICAgIFRJbmZvU2lua0Jhc2UgJm91dCA9IHNpbms7CiAKKyAgICBPdXRwdXRUcmVlVGV4dChv
dXQsIG5vZGUsIG1EZXB0aCk7CisKICAgICBpZiAobm9kZS0+Z2V0T3AoKSA9PSBFT3BOdWxsKQog
ICAgIHsKICAgICAgICAgb3V0LnByZWZpeChFUHJlZml4RXJyb3IpOwotICAgICAgICBvdXQgPDwg
Im5vZGUgaXMgc3RpbGwgRU9wTnVsbCEiOworICAgICAgICBvdXQgPDwgIm5vZGUgaXMgc3RpbGwg
RU9wTnVsbCFcbiI7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIE91dHB1dFRy
ZWVUZXh0KG91dCwgbm9kZSwgbURlcHRoKTsKIAogICAgIHN3aXRjaCAobm9kZS0+Z2V0T3AoKSkK
ICAgICB7Ci0gICAgICBjYXNlIEVPcFNlcXVlbmNlOiAgICAgIG91dCA8PCAiU2VxdWVuY2VcbiI7
IHJldHVybiB0cnVlOwotICAgICAgY2FzZSBFT3BDb21tYTogICAgICAgICBvdXQgPDwgIkNvbW1h
XG4iOyByZXR1cm4gdHJ1ZTsKLSAgICAgIGNhc2UgRU9wRnVuY3Rpb246ICAgICAgT3V0cHV0RnVu
Y3Rpb24ob3V0LCAiRnVuY3Rpb24gRGVmaW5pdGlvbiIsIG5vZGUpOyBicmVhazsKLSAgICAgIGNh
c2UgRU9wRnVuY3Rpb25DYWxsOiAgT3V0cHV0RnVuY3Rpb24ob3V0LCAiRnVuY3Rpb24gQ2FsbCIs
IG5vZGUpOyBicmVhazsKKyAgICAgIGNhc2UgRU9wRnVuY3Rpb25DYWxsOgorICAgICAgICAgIE91
dHB1dEZ1bmN0aW9uKG91dCwgIkZ1bmN0aW9uIENhbGwiLCBub2RlLT5nZXRGdW5jdGlvblN5bWJv
bEluZm8oKSk7CisgICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcFBhcmFtZXRlcnM6ICAg
IG91dCA8PCAiRnVuY3Rpb24gUGFyYW1ldGVyczogIjsgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSBFT3BQcm90b3R5cGU6ICAgICBPdXRwdXRGdW5jdGlvbihvdXQsICJGdW5jdGlvbiBQ
cm90b3R5cGUiLCBub2RlKTsgYnJlYWs7CisgICAgICBjYXNlIEVPcFByb3RvdHlwZToKKyAgICAg
ICAgICBPdXRwdXRGdW5jdGlvbihvdXQsICJGdW5jdGlvbiBQcm90b3R5cGUiLCBub2RlLT5nZXRG
dW5jdGlvblN5bWJvbEluZm8oKSk7CisgICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgRU9w
Q29uc3RydWN0RmxvYXQ6IG91dCA8PCAiQ29uc3RydWN0IGZsb2F0IjsgYnJlYWs7CiAgICAgICBj
YXNlIEVPcENvbnN0cnVjdFZlYzI6ICBvdXQgPDwgIkNvbnN0cnVjdCB2ZWMyIjsgIGJyZWFrOwpA
QCAtNDQ5LDcgKzQ3NSw3IEBACiAgICAgICAgIG91dCA8PCAiQmFkIGFnZ3JlZ2F0aW9uIG9wIjsK
ICAgICB9CiAKLSAgICBpZiAobm9kZS0+Z2V0T3AoKSAhPSBFT3BTZXF1ZW5jZSAmJiBub2RlLT5n
ZXRPcCgpICE9IEVPcFBhcmFtZXRlcnMpCisgICAgaWYgKG5vZGUtPmdldE9wKCkgIT0gRU9wUGFy
YW1ldGVycykKICAgICAgICAgb3V0IDw8ICIgKCIgPDwgbm9kZS0+Z2V0Q29tcGxldGVTdHJpbmco
KSA8PCAiKSI7CiAKICAgICBvdXQgPDwgIlxuIjsKQEAgLTQ1NywxMyArNDgzLDIzIEBACiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRTZWxlY3Rpb24o
VmlzaXQgdmlzaXQsIFRJbnRlcm1TZWxlY3Rpb24gKm5vZGUpCitib29sIFRPdXRwdXRUcmF2ZXJz
ZXI6OnZpc2l0QmxvY2soVmlzaXQgdmlzaXQsIFRJbnRlcm1CbG9jayAqbm9kZSkKIHsKICAgICBU
SW5mb1NpbmtCYXNlICZvdXQgPSBzaW5rOwogCiAgICAgT3V0cHV0VHJlZVRleHQob3V0LCBub2Rl
LCBtRGVwdGgpOworICAgIG91dCA8PCAiQ29kZSBibG9ja1xuIjsKIAotICAgIG91dCA8PCAiVGVz
dCBjb25kaXRpb24gYW5kIHNlbGVjdCI7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVE91
dHB1dFRyYXZlcnNlcjo6dmlzaXRUZXJuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtVGVybmFyeSAq
bm9kZSkKK3sKKyAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBzaW5rOworCisgICAgT3V0cHV0VHJl
ZVRleHQob3V0LCBub2RlLCBtRGVwdGgpOworCisgICAgb3V0IDw8ICJUZXJuYXJ5IHNlbGVjdGlv
biI7CiAgICAgb3V0IDw8ICIgKCIgPDwgbm9kZS0+Z2V0Q29tcGxldGVTdHJpbmcoKSA8PCAiKVxu
IjsKIAogICAgICsrbURlcHRoOwpAQCAtNDczLDYgKzUwOSwzOCBAQAogICAgIG5vZGUtPmdldENv
bmRpdGlvbigpLT50cmF2ZXJzZSh0aGlzKTsKIAogICAgIE91dHB1dFRyZWVUZXh0KHNpbmssIG5v
ZGUsIG1EZXB0aCk7CisgICAgaWYgKG5vZGUtPmdldFRydWVFeHByZXNzaW9uKCkpCisgICAgewor
ICAgICAgICBvdXQgPDwgInRydWUgY2FzZVxuIjsKKyAgICAgICAgbm9kZS0+Z2V0VHJ1ZUV4cHJl
c3Npb24oKS0+dHJhdmVyc2UodGhpcyk7CisgICAgfQorICAgIGlmIChub2RlLT5nZXRGYWxzZUV4
cHJlc3Npb24oKSkKKyAgICB7CisgICAgICAgIE91dHB1dFRyZWVUZXh0KHNpbmssIG5vZGUsIG1E
ZXB0aCk7CisgICAgICAgIG91dCA8PCAiZmFsc2UgY2FzZVxuIjsKKyAgICAgICAgbm9kZS0+Z2V0
RmFsc2VFeHByZXNzaW9uKCktPnRyYXZlcnNlKHRoaXMpOworICAgIH0KKworICAgIC0tbURlcHRo
OworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFRPdXRwdXRUcmF2ZXJzZXI6OnZpc2l0
SWZFbHNlKFZpc2l0IHZpc2l0LCBUSW50ZXJtSWZFbHNlICpub2RlKQoreworICAgIFRJbmZvU2lu
a0Jhc2UgJm91dCA9IHNpbms7CisKKyAgICBPdXRwdXRUcmVlVGV4dChvdXQsIG5vZGUsIG1EZXB0
aCk7CisKKyAgICBvdXQgPDwgIklmIHRlc3RcbiI7CisKKyAgICArK21EZXB0aDsKKworICAgIE91
dHB1dFRyZWVUZXh0KHNpbmssIG5vZGUsIG1EZXB0aCk7CisgICAgb3V0IDw8ICJDb25kaXRpb25c
biI7CisgICAgbm9kZS0+Z2V0Q29uZGl0aW9uKCktPnRyYXZlcnNlKHRoaXMpOworCisgICAgT3V0
cHV0VHJlZVRleHQoc2luaywgbm9kZSwgbURlcHRoKTsKICAgICBpZiAobm9kZS0+Z2V0VHJ1ZUJs
b2NrKCkpCiAgICAgewogICAgICAgICBvdXQgPDwgInRydWUgY2FzZVxuIjsKQEAgLTQ5NSw2ICs1
NjMsMzUgQEAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgVE91dHB1dFRyYXZlcnNlcjo6
dmlzaXRTd2l0Y2goVmlzaXQgdmlzaXQsIFRJbnRlcm1Td2l0Y2ggKm5vZGUpCit7CisgICAgVElu
Zm9TaW5rQmFzZSAmb3V0ID0gc2luazsKKworICAgIE91dHB1dFRyZWVUZXh0KG91dCwgbm9kZSwg
bURlcHRoKTsKKworICAgIG91dCA8PCAiU3dpdGNoXG4iOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRDYXNlKFZpc2l0IHZpc2l0LCBUSW50ZXJt
Q2FzZSAqbm9kZSkKK3sKKyAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBzaW5rOworCisgICAgT3V0
cHV0VHJlZVRleHQob3V0LCBub2RlLCBtRGVwdGgpOworCisgICAgaWYgKG5vZGUtPmdldENvbmRp
dGlvbigpID09IG51bGxwdHIpCisgICAgeworICAgICAgICBvdXQgPDwgIkRlZmF1bHRcbiI7Cisg
ICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG91dCA8PCAiQ2FzZVxuIjsKKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdENvbnN0
YW50VW5pb24oVEludGVybUNvbnN0YW50VW5pb24gKm5vZGUpCiB7CiAgICAgVEluZm9TaW5rQmFz
ZSAmb3V0ID0gc2luazsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL3RpbWluZy9SZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci90aW1pbmcvUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZy5jcHAJKHJldmlzaW9uIDIwODAy
MSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3Rp
bWluZy9SZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0x
LDEzMCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0
b3IvSW5mb1NpbmsuaCIKLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1BhcnNlQ29udGV4
dC5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdy
YXBoT3V0cHV0LmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci90aW1pbmcvUmVzdHJp
Y3RGcmFnbWVudFNoYWRlclRpbWluZy5oIgotCi1SZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5n
OjpSZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nKFRJbmZvU2lua0Jhc2UmIHNpbmspCi0gICAg
OiBtU2luayhzaW5rKQotICAgICwgbU51bUVycm9ycygwKQotewotICAgIC8vIFNhbXBsaW5nIG9w
cyBmb3VuZCBvbmx5IGluIGZyYWdtZW50IHNoYWRlcnMuCi0gICAgbVNhbXBsaW5nT3BzLmluc2Vy
dCgidGV4dHVyZTJEKHMyMTt2ZjI7ZjE7Iik7Ci0gICAgbVNhbXBsaW5nT3BzLmluc2VydCgidGV4
dHVyZTJEUHJvaihzMjE7dmYzO2YxOyIpOwotICAgIG1TYW1wbGluZ09wcy5pbnNlcnQoInRleHR1
cmUyRFByb2ooczIxO3ZmNDtmMTsiKTsKLSAgICBtU2FtcGxpbmdPcHMuaW5zZXJ0KCJ0ZXh0dXJl
Q3ViZShzQzE7dmYzO2YxOyIpOwotICAgIC8vIFNhbXBsaW5nIG9wcyBmb3VuZCBpbiBib3RoIHZl
cnRleCBhbmQgZnJhZ21lbnQgc2hhZGVycy4KLSAgICBtU2FtcGxpbmdPcHMuaW5zZXJ0KCJ0ZXh0
dXJlMkQoczIxO3ZmMjsiKTsKLSAgICBtU2FtcGxpbmdPcHMuaW5zZXJ0KCJ0ZXh0dXJlMkRQcm9q
KHMyMTt2ZjM7Iik7Ci0gICAgbVNhbXBsaW5nT3BzLmluc2VydCgidGV4dHVyZTJEUHJvaihzMjE7
dmY0OyIpOwotICAgIG1TYW1wbGluZ09wcy5pbnNlcnQoInRleHR1cmVDdWJlKHNDMTt2ZjM7Iik7
Ci0gICAgLy8gU2FtcGxpbmcgb3BzIHByb3ZpZGVkIGJ5IE9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwu
Ci0gICAgbVNhbXBsaW5nT3BzLmluc2VydCgidGV4dHVyZTJEKDE7dmYyOyIpOwotICAgIG1TYW1w
bGluZ09wcy5pbnNlcnQoInRleHR1cmUyRFByb2ooMTt2ZjM7Iik7Ci0gICAgbVNhbXBsaW5nT3Bz
Lmluc2VydCgidGV4dHVyZTJEUHJvaigxO3ZmNDsiKTsKLSAgICAvLyBTYW1wbGluZyBvcHMgcHJv
dmlkZWQgYnkgQVJCX3RleHR1cmVfcmVjdGFuZ2xlLgotICAgIG1TYW1wbGluZ09wcy5pbnNlcnQo
InRleHR1cmUyRFJlY3QoMTt2ZjI7Iik7Ci0gICAgbVNhbXBsaW5nT3BzLmluc2VydCgidGV4dHVy
ZTJEUmVjdFByb2ooMTt2ZjM7Iik7Ci0gICAgbVNhbXBsaW5nT3BzLmluc2VydCgidGV4dHVyZTJE
UmVjdFByb2ooMTt2ZjQ7Iik7Ci0gICAgLy8gU2FtcGxpbmcgb3BzIHByb3ZpZGVkIGJ5IEVYVF9z
aGFkZXJfdGV4dHVyZV9sb2QuCi0gICAgbVNhbXBsaW5nT3BzLmluc2VydCgidGV4dHVyZTJETG9k
RVhUKDE7dmYyO2YxOyIpOwotICAgIG1TYW1wbGluZ09wcy5pbnNlcnQoInRleHR1cmUyRFByb2pM
b2RFWFQoMTt2ZjM7ZjE7Iik7Ci0gICAgbVNhbXBsaW5nT3BzLmluc2VydCgidGV4dHVyZTJEUHJv
akxvZEVYVCgxO3ZmNDtmMTsiKTsKLSAgICBtU2FtcGxpbmdPcHMuaW5zZXJ0KCJ0ZXh0dXJlQ3Vi
ZUxvZEVYVCgxO3ZmNDtmMTsiKTsKLSAgICBtU2FtcGxpbmdPcHMuaW5zZXJ0KCJ0ZXh0dXJlMkRH
cmFkRVhUKDE7dmYyO3ZmMjt2ZjI7Iik7Ci0gICAgbVNhbXBsaW5nT3BzLmluc2VydCgidGV4dHVy
ZTJEUHJvakdyYWRFWFQoMTt2ZjM7dmYyO3ZmMjsiKTsKLSAgICBtU2FtcGxpbmdPcHMuaW5zZXJ0
KCJ0ZXh0dXJlMkRQcm9qR3JhZEVYVCgxO3ZmNDt2ZjI7dmYyOyIpOwotICAgIG1TYW1wbGluZ09w
cy5pbnNlcnQoInRleHR1cmVDdWJlR3JhZEVYVCgxO3ZmMzt2ZjM7dmYzOyIpOwotfQotCi0vLyBG
SVhNRShtdnVqb3ZpYyk6IFdlIGRvIG5vdCBrbm93IGlmIHRoZSBleGVjdXRpb24gdGltZSBvZiBi
dWlsdC1pbiBvcGVyYXRpb25zIGxpa2Ugc2luLCBwb3csIGV0Yy4KLS8vIGNhbiB2YXJ5IGJhc2Vk
IG9uIHRoZSB2YWx1ZSBvZiB0aGUgaW5wdXQgYXJndW1lbnRzLiBJZiBzbywgd2Ugc2hvdWxkIHJl
c3RyaWN0IHRob3NlIGFzIHdlbGwuCi12b2lkIFJlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmc6
OmVuZm9yY2VSZXN0cmljdGlvbnMoY29uc3QgVERlcGVuZGVuY3lHcmFwaCYgZ3JhcGgpCi17Ci0g
ICAgbU51bUVycm9ycyA9IDA7Ci0KLSAgICAvLyBGSVhNRShtdnVqb3ZpYyk6IFRoZSBkZXBlbmRl
bmN5IGdyYXBoIGRvZXMgbm90IHN1cHBvcnQgdXNlciBkZWZpbmVkIGZ1bmN0aW9uIGNhbGxzIHJp
Z2h0IG5vdywKLSAgICAvLyBzbyB3ZSBnZW5lcmF0ZSBlcnJvcnMgZm9yIHRoZW0uCi0gICAgdmFs
aWRhdGVVc2VyRGVmaW5lZEZ1bmN0aW9uQ2FsbFVzYWdlKGdyYXBoKTsKLQotICAgIC8vIFN0YXJ0
aW5nIGZyb20gZWFjaCBzYW1wbGVyLCB0cmF2ZXJzZSB0aGUgZGVwZW5kZW5jeSBncmFwaCBhbmQg
Z2VuZXJhdGUgYW4gZXJyb3IgZWFjaCB0aW1lIHdlCi0gICAgLy8gaGl0IGEgbm9kZSB3aGVyZSBz
YW1wbGVyIGRlcGVuZGVudCB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkLgotICAgIGZvciAoYXV0byBz
YW1wbGVyU3ltYm9sIDogZ3JhcGguc2FtcGxlclN5bWJvbHMoKSkKLSAgICB7Ci0gICAgICAgIGNs
ZWFyVmlzaXRlZCgpOwotICAgICAgICBzYW1wbGVyU3ltYm9sLT50cmF2ZXJzZSh0aGlzKTsKLSAg
ICB9Ci19Ci0KLXZvaWQgUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZzo6dmFsaWRhdGVVc2Vy
RGVmaW5lZEZ1bmN0aW9uQ2FsbFVzYWdlKGNvbnN0IFREZXBlbmRlbmN5R3JhcGgmIGdyYXBoKQot
ewotICAgIGZvciAoY29uc3QgYXV0byogZnVuY3Rpb25DYWxsIDogZ3JhcGgudXNlckRlZmluZWRG
dW5jdGlvbkNhbGxzKCkpCi0gICAgewotICAgICAgICBiZWdpbkVycm9yKGZ1bmN0aW9uQ2FsbC0+
Z2V0SW50ZXJtRnVuY3Rpb25DYWxsKCkpOwotICAgICAgICBtU2luayA8PCAiQSBjYWxsIHRvIGEg
dXNlciBkZWZpbmVkIGZ1bmN0aW9uIGlzIG5vdCBwZXJtaXR0ZWQuXG4iOwotICAgIH0KLX0KLQot
dm9pZCBSZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nOjpiZWdpbkVycm9yKGNvbnN0IFRJbnRl
cm1Ob2RlKiBub2RlKQotewotICAgICsrbU51bUVycm9yczsKLSAgICBtU2luay5wcmVmaXgoRVBy
ZWZpeEVycm9yKTsKLSAgICBtU2luay5sb2NhdGlvbihub2RlLT5nZXRMaW5lKCkpOwotfQotCi1i
b29sIFJlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmc6OmlzU2FtcGxpbmdPcChjb25zdCBUSW50
ZXJtQWdncmVnYXRlKiBpbnRlcm1GdW5jdGlvbkNhbGwpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFp
bnRlcm1GdW5jdGlvbkNhbGwtPmlzVXNlckRlZmluZWQoKSAmJgotICAgICAgICAgICBtU2FtcGxp
bmdPcHMuZmluZChpbnRlcm1GdW5jdGlvbkNhbGwtPmdldE5hbWUoKSkgIT0gbVNhbXBsaW5nT3Bz
LmVuZCgpOwotfQotCi12b2lkIFJlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmc6OnZpc2l0QXJn
dW1lbnQoVEdyYXBoQXJndW1lbnQqIHBhcmFtZXRlcikKLXsKLSAgICAvLyBUZXh0dXJlIGNhY2hl
IGFjY2VzcyB0aW1lIG1pZ2h0IGxlYWsgc2Vuc2l0aXZlIGluZm9ybWF0aW9uLgotICAgIC8vIFRo
dXMsIHdlIHJlc3RyaWN0IHNhbXBsZXIgZGVwZW5kZW50IHZhbHVlcyBmcm9tIGFmZmVjdGluZyB0
aGUgY29vcmRpbmF0ZSBvciBMT0QgYmlhcyBvZiBhCi0gICAgLy8gc2FtcGxpbmcgb3BlcmF0aW9u
LgotICAgIGlmIChpc1NhbXBsaW5nT3AocGFyYW1ldGVyLT5nZXRJbnRlcm1GdW5jdGlvbkNhbGwo
KSkpIHsKLSAgICAgICAgc3dpdGNoIChwYXJhbWV0ZXItPmdldEFyZ3VtZW50TnVtYmVyKCkpIHsK
LSAgICAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgICAgICAvLyBTZWNvbmQgYXJndW1lbnQg
KGNvb3JkKQotICAgICAgICAgICAgICAgIGJlZ2luRXJyb3IocGFyYW1ldGVyLT5nZXRJbnRlcm1G
dW5jdGlvbkNhbGwoKSk7Ci0gICAgICAgICAgICAgICAgbVNpbmsgPDwgIkFuIGV4cHJlc3Npb24g
ZGVwZW5kZW50IG9uIGEgc2FtcGxlciBpcyBub3QgcGVybWl0dGVkIHRvIGJlIHRoZSIKLSAgICAg
ICAgICAgICAgICAgICAgICA8PCAiIGNvb3JkaW5hdGUgYXJndW1lbnQgb2YgYSBzYW1wbGluZyBv
cGVyYXRpb24uXG4iOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAy
OgotICAgICAgICAgICAgICAgIC8vIFRoaXJkIGFyZ3VtZW50IChiaWFzKQotICAgICAgICAgICAg
ICAgIGJlZ2luRXJyb3IocGFyYW1ldGVyLT5nZXRJbnRlcm1GdW5jdGlvbkNhbGwoKSk7Ci0gICAg
ICAgICAgICAgICAgbVNpbmsgPDwgIkFuIGV4cHJlc3Npb24gZGVwZW5kZW50IG9uIGEgc2FtcGxl
ciBpcyBub3QgcGVybWl0dGVkIHRvIGJlIHRoZSIKLSAgICAgICAgICAgICAgICAgICAgICA8PCAi
IGJpYXMgYXJndW1lbnQgb2YgYSBzYW1wbGluZyBvcGVyYXRpb24uXG4iOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAvLyBGaXJz
dCBhcmd1bWVudCAoc2FtcGxlcikKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgIH0KLX0KLQotdm9pZCBSZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nOjp2aXNpdFNlbGVj
dGlvbihUR3JhcGhTZWxlY3Rpb24qIHNlbGVjdGlvbikKLXsKLSAgICBiZWdpbkVycm9yKHNlbGVj
dGlvbi0+Z2V0SW50ZXJtU2VsZWN0aW9uKCkpOwotICAgIG1TaW5rIDw8ICJBbiBleHByZXNzaW9u
IGRlcGVuZGVudCBvbiBhIHNhbXBsZXIgaXMgbm90IHBlcm1pdHRlZCBpbiBhIGNvbmRpdGlvbmFs
IHN0YXRlbWVudC5cbiI7Ci19Ci0KLXZvaWQgUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZzo6
dmlzaXRMb29wKFRHcmFwaExvb3AqIGxvb3ApCi17Ci0gICAgYmVnaW5FcnJvcihsb29wLT5nZXRJ
bnRlcm1Mb29wKCkpOwotICAgIG1TaW5rIDw8ICJBbiBleHByZXNzaW9uIGRlcGVuZGVudCBvbiBh
IHNhbXBsZXIgaXMgbm90IHBlcm1pdHRlZCBpbiBhIGxvb3AgY29uZGl0aW9uLlxuIjsKLX0KLQot
dm9pZCBSZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nOjp2aXNpdExvZ2ljYWxPcChUR3JhcGhM
b2dpY2FsT3AqIGxvZ2ljYWxPcCkKLXsKLSAgICBiZWdpbkVycm9yKGxvZ2ljYWxPcC0+Z2V0SW50
ZXJtTG9naWNhbE9wKCkpOwotICAgIG1TaW5rIDw8ICJBbiBleHByZXNzaW9uIGRlcGVuZGVudCBv
biBhIHNhbXBsZXIgaXMgbm90IHBlcm1pdHRlZCBvbiB0aGUgbGVmdCBoYW5kIHNpZGUgb2YgYSBs
b2dpY2FsICIKLSAgICAgICAgICA8PCBsb2dpY2FsT3AtPmdldE9wU3RyaW5nKCkKLSAgICAgICAg
ICA8PCAiIG9wZXJhdG9yLlxuIjsKLX0KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3RpbWluZy9SZXN0cmljdEZyYWdt
ZW50U2hhZGVyVGltaW5nLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMg
LTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3RpbWluZy9S
ZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdGltaW5nL1Jlc3RyaWN0RnJhZ21l
bnRTaGFkZXJUaW1pbmcuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdGltaW5nL1Jlc3RyaWN0RnJhZ21lbnRTaGFk
ZXJUaW1pbmcuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDM5ICswLDAgQEAKLS8vCi0vLyBDb3B5cmln
aHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwot
Ci0jaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFUT1JfVElNSU5HX1JFU1RSSUNURlJBR01FTlRTSEFE
RVJUSU1JTkdfSF8KLSNkZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9USU1JTkdfUkVTVFJJQ1RG
UkFHTUVOVFNIQURFUlRJTUlOR19IXwotCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9J
bnRlcm1Ob2RlLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9kZXBncmFwaC9EZXBl
bmRlbmN5R3JhcGguaCIKLQotY2xhc3MgVEluZm9TaW5rQmFzZTsKLQotY2xhc3MgUmVzdHJpY3RG
cmFnbWVudFNoYWRlclRpbWluZyA6IFREZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZXIKLXsKLSAgcHVi
bGljOgotICAgIFJlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmcoVEluZm9TaW5rQmFzZSAmc2lu
ayk7Ci0gICAgdm9pZCBlbmZvcmNlUmVzdHJpY3Rpb25zKGNvbnN0IFREZXBlbmRlbmN5R3JhcGgg
JmdyYXBoKTsKLSAgICBpbnQgbnVtRXJyb3JzKCkgY29uc3QgeyByZXR1cm4gbU51bUVycm9yczsg
fQotCi0gICAgdm9pZCB2aXNpdEFyZ3VtZW50KFRHcmFwaEFyZ3VtZW50ICpwYXJhbWV0ZXIpIG92
ZXJyaWRlOwotICAgIHZvaWQgdmlzaXRTZWxlY3Rpb24oVEdyYXBoU2VsZWN0aW9uICpzZWxlY3Rp
b24pIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXRMb29wKFRHcmFwaExvb3AgKmxvb3ApIG92ZXJy
aWRlOwotICAgIHZvaWQgdmlzaXRMb2dpY2FsT3AoVEdyYXBoTG9naWNhbE9wICpsb2dpY2FsT3Ap
IG92ZXJyaWRlOwotCi0gIHByaXZhdGU6Ci0gICAgdm9pZCBiZWdpbkVycm9yKGNvbnN0IFRJbnRl
cm1Ob2RlICpub2RlKTsKLSAgICB2b2lkIHZhbGlkYXRlVXNlckRlZmluZWRGdW5jdGlvbkNhbGxV
c2FnZShjb25zdCBURGVwZW5kZW5jeUdyYXBoICZncmFwaCk7Ci0gICAgYm9vbCBpc1NhbXBsaW5n
T3AoY29uc3QgVEludGVybUFnZ3JlZ2F0ZSAqaW50ZXJtRnVuY3Rpb25DYWxsKSBjb25zdDsKLQot
ICAgIFRJbmZvU2lua0Jhc2UgJm1TaW5rOwotICAgIGludCBtTnVtRXJyb3JzOwotCi0gICAgdHlw
ZWRlZiBzdGQ6OnNldDxUU3RyaW5nPiBTdHJpbmdTZXQ7Ci0gICAgU3RyaW5nU2V0IG1TYW1wbGlu
Z09wczsKLX07Ci0KLSNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9USU1JTkdfUkVTVFJJ
Q1RGUkFHTUVOVFNIQURFUlRJTUlOR19IXwoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdGltaW5nL1Jlc3RyaWN0RnJh
Z21lbnRTaGFkZXJUaW1pbmcuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMg
LTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3RpbWluZy9S
ZXN0cmljdFZlcnRleFNoYWRlclRpbWluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdGltaW5nL1Jlc3RyaWN0VmVydGV4
U2hhZGVyVGltaW5nLmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdGltaW5nL1Jlc3RyaWN0VmVydGV4U2hhZGVy
VGltaW5nLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDE3ICswLDAgQEAKLS8vCi0vLyBDb3B5cmln
aHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwot
Ci0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci90aW1pbmcvUmVzdHJpY3RWZXJ0ZXhTaGFk
ZXJUaW1pbmcuaCIKLQotdm9pZCBSZXN0cmljdFZlcnRleFNoYWRlclRpbWluZzo6dmlzaXRTeW1i
b2woVEludGVybVN5bWJvbCogbm9kZSkKLXsKLSAgICBpZiAoSXNTYW1wbGVyKG5vZGUtPmdldEJh
c2ljVHlwZSgpKSkgewotICAgICAgICArK21OdW1FcnJvcnM7Ci0gICAgICAgIG1TaW5rLm1lc3Nh
Z2UoRVByZWZpeEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmdldExpbmUoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAiU2FtcGxlcnMgYXJlIG5vdCBwZXJtaXR0ZWQgaW4gdmVy
dGV4IHNoYWRlcnMuXG4iKTsKLSAgICB9Ci19CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci90aW1pbmcvUmVzdHJpY3RW
ZXJ0ZXhTaGFkZXJUaW1pbmcuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQoj
IyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdGltaW5n
L1Jlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdGltaW5nL1Jlc3RyaWN0VmVydGV4
U2hhZGVyVGltaW5nLmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3RpbWluZy9SZXN0cmljdFZlcnRleFNoYWRlclRp
bWluZy5oCShub25leGlzdGVudCkKQEAgLTEsMzIgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAo
YykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNp
Zm5kZWYgQ09NUElMRVJfVFJBTlNMQVRPUl9USU1JTkdfUkVTVFJJQ1RWRVJURVhTSEFERVJUSU1J
TkdfSF8KLSNkZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9USU1JTkdfUkVTVFJJQ1RWRVJURVhT
SEFERVJUSU1JTkdfSF8KLQotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9k
ZS5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW5mb1NpbmsuaCIKLQotY2xhc3Mg
VEluZm9TaW5rQmFzZTsKLQotY2xhc3MgUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcgOiBwdWJs
aWMgVEludGVybVRyYXZlcnNlciB7Ci1wdWJsaWM6Ci0gICAgUmVzdHJpY3RWZXJ0ZXhTaGFkZXJU
aW1pbmcoVEluZm9TaW5rQmFzZSYgc2luaykKLSAgICAgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRy
dWUsIGZhbHNlLCBmYWxzZSkKLSAgICAgICAgLCBtU2luayhzaW5rKQotICAgICAgICAsIG1OdW1F
cnJvcnMoMCkge30KLQotICAgIHZvaWQgZW5mb3JjZVJlc3RyaWN0aW9ucyhUSW50ZXJtTm9kZSog
cm9vdCkgeyByb290LT50cmF2ZXJzZSh0aGlzKTsgfQotICAgIGludCBudW1FcnJvcnMoKSB7IHJl
dHVybiBtTnVtRXJyb3JzOyB9Ci0KLSAgICB2b2lkIHZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wg
Kikgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6Ci0gICAgVEluZm9TaW5rQmFzZSYgbVNpbms7Ci0gICAg
aW50IG1OdW1FcnJvcnM7Ci19OwotCi0jZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfVElN
SU5HX1JFU1RSSUNUVkVSVEVYU0hBREVSVElNSU5HX0hfCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci90aW1pbmcvUmVz
dHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5
bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3V0
aWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL3V0aWwuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci91dGlsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjc4LDYgKzI3OCwyNDQgQEAKICAgICB9CiB9CiAKK1RUeXBlIEdldEludGVyZmFjZUJs
b2NrVHlwZShjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2sgJmJsb2NrKQoreworICAgIFRUeXBlIHR5
cGU7CisgICAgVEZpZWxkTGlzdCAqZmllbGRzID0gbmV3IFRGaWVsZExpc3Q7CisgICAgVFNvdXJj
ZUxvYyBsb2M7CisgICAgZm9yIChjb25zdCBhdXRvICZmaWVsZCA6IGJsb2NrLmZpZWxkcykKKyAg
ICB7CisgICAgICAgIFRUeXBlICpmaWVsZFR5cGUgPSBuZXcgVFR5cGUoR2V0U2hhZGVyVmFyaWFi
bGVUeXBlKGZpZWxkKSk7CisgICAgICAgIGZpZWxkcy0+cHVzaF9iYWNrKG5ldyBURmllbGQoZmll
bGRUeXBlLCBuZXcgVFN0cmluZyhmaWVsZC5uYW1lLmNfc3RyKCkpLCBsb2MpKTsKKyAgICB9CisK
KyAgICBUSW50ZXJmYWNlQmxvY2sgKmludGVyZmFjZUJsb2NrID0gbmV3IFRJbnRlcmZhY2VCbG9j
aygKKyAgICAgICAgbmV3IFRTdHJpbmcoYmxvY2submFtZS5jX3N0cigpKSwgZmllbGRzLCBuZXcg
VFN0cmluZyhibG9jay5pbnN0YW5jZU5hbWUuY19zdHIoKSksCisgICAgICAgIGJsb2NrLmFycmF5
U2l6ZSwgVExheW91dFF1YWxpZmllcjo6Y3JlYXRlKCkpOworCisgICAgdHlwZS5zZXRCYXNpY1R5
cGUoRWJ0SW50ZXJmYWNlQmxvY2spOworICAgIHR5cGUuc2V0SW50ZXJmYWNlQmxvY2soaW50ZXJm
YWNlQmxvY2spOworICAgIHR5cGUuc2V0QXJyYXlTaXplKGJsb2NrLmFycmF5U2l6ZSk7CisgICAg
cmV0dXJuIHR5cGU7Cit9CisKK1RUeXBlIEdldFNoYWRlclZhcmlhYmxlQmFzaWNUeXBlKGNvbnN0
IHNoOjpTaGFkZXJWYXJpYWJsZSAmdmFyKQoreworICAgIHN3aXRjaCAodmFyLnR5cGUpCisgICAg
eworICAgICAgICBjYXNlIEdMX0JPT0w6CisgICAgICAgICAgICByZXR1cm4gVFR5cGUoRWJ0Qm9v
bCk7CisgICAgICAgIGNhc2UgR0xfQk9PTF9WRUMyOgorICAgICAgICAgICAgcmV0dXJuIFRUeXBl
KEVidEJvb2wsIDIpOworICAgICAgICBjYXNlIEdMX0JPT0xfVkVDMzoKKyAgICAgICAgICAgIHJl
dHVybiBUVHlwZShFYnRCb29sLCAzKTsKKyAgICAgICAgY2FzZSBHTF9CT09MX1ZFQzQ6CisgICAg
ICAgICAgICByZXR1cm4gVFR5cGUoRWJ0Qm9vbCwgNCk7CisgICAgICAgIGNhc2UgR0xfRkxPQVQ6
CisgICAgICAgICAgICByZXR1cm4gVFR5cGUoRWJ0RmxvYXQpOworICAgICAgICBjYXNlIEdMX0ZM
T0FUX1ZFQzI6CisgICAgICAgICAgICByZXR1cm4gVFR5cGUoRWJ0RmxvYXQsIDIpOworICAgICAg
ICBjYXNlIEdMX0ZMT0FUX1ZFQzM6CisgICAgICAgICAgICByZXR1cm4gVFR5cGUoRWJ0RmxvYXQs
IDMpOworICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzQ6CisgICAgICAgICAgICByZXR1cm4gVFR5
cGUoRWJ0RmxvYXQsIDQpOworICAgICAgICBjYXNlIEdMX0ZMT0FUX01BVDI6CisgICAgICAgICAg
ICByZXR1cm4gVFR5cGUoRWJ0RmxvYXQsIDIsIDIpOworICAgICAgICBjYXNlIEdMX0ZMT0FUX01B
VDM6CisgICAgICAgICAgICByZXR1cm4gVFR5cGUoRWJ0RmxvYXQsIDMsIDMpOworICAgICAgICBj
YXNlIEdMX0ZMT0FUX01BVDQ6CisgICAgICAgICAgICByZXR1cm4gVFR5cGUoRWJ0RmxvYXQsIDQs
IDQpOworICAgICAgICBjYXNlIEdMX0ZMT0FUX01BVDJ4MzoKKyAgICAgICAgICAgIHJldHVybiBU
VHlwZShFYnRGbG9hdCwgMiwgMyk7CisgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMng0OgorICAg
ICAgICAgICAgcmV0dXJuIFRUeXBlKEVidEZsb2F0LCAyLCA0KTsKKyAgICAgICAgY2FzZSBHTF9G
TE9BVF9NQVQzeDI6CisgICAgICAgICAgICByZXR1cm4gVFR5cGUoRWJ0RmxvYXQsIDMsIDIpOwor
ICAgICAgICBjYXNlIEdMX0ZMT0FUX01BVDN4NDoKKyAgICAgICAgICAgIHJldHVybiBUVHlwZShF
YnRGbG9hdCwgMywgNCk7CisgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUNHgyOgorICAgICAgICAg
ICAgcmV0dXJuIFRUeXBlKEVidEZsb2F0LCA0LCAyKTsKKyAgICAgICAgY2FzZSBHTF9GTE9BVF9N
QVQ0eDM6CisgICAgICAgICAgICByZXR1cm4gVFR5cGUoRWJ0RmxvYXQsIDQsIDMpOworICAgICAg
ICBjYXNlIEdMX0lOVDoKKyAgICAgICAgICAgIHJldHVybiBUVHlwZShFYnRJbnQpOworICAgICAg
ICBjYXNlIEdMX0lOVF9WRUMyOgorICAgICAgICAgICAgcmV0dXJuIFRUeXBlKEVidEludCwgMik7
CisgICAgICAgIGNhc2UgR0xfSU5UX1ZFQzM6CisgICAgICAgICAgICByZXR1cm4gVFR5cGUoRWJ0
SW50LCAzKTsKKyAgICAgICAgY2FzZSBHTF9JTlRfVkVDNDoKKyAgICAgICAgICAgIHJldHVybiBU
VHlwZShFYnRJbnQsIDQpOworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKKyAgICAgICAg
ICAgIHJldHVybiBUVHlwZShFYnRVSW50KTsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRf
VkVDMjoKKyAgICAgICAgICAgIHJldHVybiBUVHlwZShFYnRVSW50LCAyKTsKKyAgICAgICAgY2Fz
ZSBHTF9VTlNJR05FRF9JTlRfVkVDMzoKKyAgICAgICAgICAgIHJldHVybiBUVHlwZShFYnRVSW50
LCAzKTsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfVkVDNDoKKyAgICAgICAgICAgIHJl
dHVybiBUVHlwZShFYnRVSW50LCA0KTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gVFR5cGUoKTsKKyAgICB9Cit9CisKK1RU
eXBlIEdldFNoYWRlclZhcmlhYmxlVHlwZShjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUgJnZhcikK
K3sKKyAgICBUVHlwZSB0eXBlOworICAgIGlmICh2YXIuaXNTdHJ1Y3QoKSkKKyAgICB7CisgICAg
ICAgIFRGaWVsZExpc3QgKmZpZWxkcyA9IG5ldyBURmllbGRMaXN0OworICAgICAgICBUU291cmNl
TG9jIGxvYzsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvICZmaWVsZCA6IHZhci5maWVsZHMpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIFRUeXBlICpmaWVsZFR5cGUgPSBuZXcgVFR5cGUoR2V0U2hh
ZGVyVmFyaWFibGVUeXBlKGZpZWxkKSk7CisgICAgICAgICAgICBmaWVsZHMtPnB1c2hfYmFjayhu
ZXcgVEZpZWxkKGZpZWxkVHlwZSwgbmV3IFRTdHJpbmcoZmllbGQubmFtZS5jX3N0cigpKSwgbG9j
KSk7CisgICAgICAgIH0KKyAgICAgICAgVFN0cnVjdHVyZSAqc3RydWN0dXJlID0gbmV3IFRTdHJ1
Y3R1cmUobmV3IFRTdHJpbmcodmFyLnN0cnVjdE5hbWUuY19zdHIoKSksIGZpZWxkcyk7CisKKyAg
ICAgICAgdHlwZS5zZXRCYXNpY1R5cGUoRWJ0U3RydWN0KTsKKyAgICAgICAgdHlwZS5zZXRTdHJ1
Y3Qoc3RydWN0dXJlKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgdHlwZSA9IEdl
dFNoYWRlclZhcmlhYmxlQmFzaWNUeXBlKHZhcik7CisgICAgfQorCisgICAgaWYgKHZhci5pc0Fy
cmF5KCkpCisgICAgeworICAgICAgICB0eXBlLnNldEFycmF5U2l6ZSh2YXIuZWxlbWVudENvdW50
KCkpOworICAgIH0KKyAgICByZXR1cm4gdHlwZTsKK30KKworVE9wZXJhdG9yIFR5cGVUb0NvbnN0
cnVjdG9yT3BlcmF0b3IoY29uc3QgVFR5cGUgJnR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlLmdl
dEJhc2ljVHlwZSgpKQorICAgIHsKKyAgICAgICAgY2FzZSBFYnRGbG9hdDoKKyAgICAgICAgICAg
IGlmICh0eXBlLmlzTWF0cml4KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3dp
dGNoICh0eXBlLmdldENvbHMoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZS5nZXRSb3dz
KCkpCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSAyOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU9wQ29u
c3RydWN0TWF0MjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFT3BDb25zdHJ1Y3RNYXQyeDM7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gRU9wQ29uc3RydWN0TWF0Mng0OworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgICAgICAgICAg
c3dpdGNoICh0eXBlLmdldFJvd3MoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBFT3BDb25zdHJ1Y3RNYXQzeDI7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU9w
Q29uc3RydWN0TWF0MzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFT3BDb25zdHJ1Y3RNYXQzeDQ7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CisgICAg
ICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUuZ2V0Um93cygpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVPcENvbnN0cnVjdE1hdDR4MjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBFT3BDb25zdHJ1Y3RNYXQ0eDM7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
RU9wQ29uc3RydWN0TWF0NDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBzd2l0Y2ggKHR5cGUuZ2V0Tm9taW5hbFNpemUoKSkKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBFT3BDb25zdHJ1Y3RGbG9hdDsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVPcENvbnN0cnVjdFZlYzI7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFT3BD
b25zdHJ1Y3RWZWMzOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gRU9wQ29uc3RydWN0VmVjNDsKKyAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRWJ0
SW50OgorICAgICAgICAgICAgc3dpdGNoICh0eXBlLmdldE5vbWluYWxTaXplKCkpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gRU9wQ29uc3RydWN0SW50OworICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEVPcENvbnN0cnVjdElWZWMyOworICAgICAgICAgICAgICAgIGNhc2Ug
MzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVPcENvbnN0cnVjdElWZWMzOworICAgICAg
ICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVPcENvbnN0cnVj
dElWZWM0OworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBF
YnRVSW50OgorICAgICAgICAgICAgc3dpdGNoICh0eXBlLmdldE5vbWluYWxTaXplKCkpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gRU9wQ29uc3RydWN0VUludDsKKyAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBFT3BDb25zdHJ1Y3RVVmVjMjsKKyAgICAgICAgICAgICAgICBj
YXNlIDM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBFT3BDb25zdHJ1Y3RVVmVjMzsKKyAg
ICAgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBFT3BDb25z
dHJ1Y3RVVmVjNDsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNh
c2UgRWJ0Qm9vbDoKKyAgICAgICAgICAgIHN3aXRjaCAodHlwZS5nZXROb21pbmFsU2l6ZSgpKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEVPcENvbnN0cnVjdEJvb2w7CisgICAgICAgICAgICAgICAgY2FzZSAyOgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gRU9wQ29uc3RydWN0QlZlYzI7CisgICAgICAgICAgICAg
ICAgY2FzZSAzOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU9wQ29uc3RydWN0QlZlYzM7
CisgICAgICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU9w
Q29uc3RydWN0QlZlYzQ7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBjYXNlIEVidFN0cnVjdDoKKyAgICAgICAgICAgIHJldHVybiBFT3BDb25zdHJ1Y3RTdHJ1Y3Q7
CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJl
dHVybiBFT3BOdWxsOworfQorCiBHZXRWYXJpYWJsZVRyYXZlcnNlcjo6R2V0VmFyaWFibGVUcmF2
ZXJzZXIoY29uc3QgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSkKICAgICA6IG1TeW1ib2xUYWJs
ZShzeW1ib2xUYWJsZSkKIHsKQEAgLTMyNCw3ICs1NjIsNyBAQAogCiAgICAgVmFyVCB2YXJpYWJs
ZTsKICAgICB2YXJpYWJsZS5uYW1lID0gbmFtZS5jX3N0cigpOwotICAgIHZhcmlhYmxlLmFycmF5
U2l6ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4odHlwZS5nZXRBcnJheVNpemUoKSk7Cisg
ICAgdmFyaWFibGUuYXJyYXlTaXplID0gdHlwZS5nZXRBcnJheVNpemUoKTsKIAogICAgIGlmICgh
c3RydWN0dXJlKQogICAgIHsKQEAgLTM1Nyw0ICs1OTUsNTIgQEAKIHRlbXBsYXRlIHZvaWQgR2V0
VmFyaWFibGVUcmF2ZXJzZXI6OnRyYXZlcnNlKGNvbnN0IFRUeXBlICYsIGNvbnN0IFRTdHJpbmcg
Jiwgc3RkOjp2ZWN0b3I8VW5pZm9ybT4gKik7CiB0ZW1wbGF0ZSB2b2lkIEdldFZhcmlhYmxlVHJh
dmVyc2VyOjp0cmF2ZXJzZShjb25zdCBUVHlwZSAmLCBjb25zdCBUU3RyaW5nICYsIHN0ZDo6dmVj
dG9yPFZhcnlpbmc+ICopOwogCisvLyBHTFNMIEVTIDEuMC4xNyA0LjYuMSBUaGUgSW52YXJpYW50
IFF1YWxpZmllcgorYm9vbCBDYW5CZUludmFyaWFudEVTU0wxKFRRdWFsaWZpZXIgcXVhbGlmaWVy
KQoreworICAgIHJldHVybiBJc1ZhcnlpbmdJbihxdWFsaWZpZXIpIHx8IElzVmFyeWluZ091dChx
dWFsaWZpZXIpIHx8CisgICAgICAgICAgIElzQnVpbHRpbk91dHB1dFZhcmlhYmxlKHF1YWxpZmll
cikgfHwKKyAgICAgICAgICAgKElzQnVpbHRpbkZyYWdtZW50SW5wdXRWYXJpYWJsZShxdWFsaWZp
ZXIpICYmIHF1YWxpZmllciAhPSBFdnFGcm9udEZhY2luZyk7CiB9CisKKy8vIEdMU0wgRVMgMy4w
MCBSZXZpc2lvbiA2LCA0LjYuMSBUaGUgSW52YXJpYW50IFF1YWxpZmllcgorLy8gR0xTTCBFUyAz
LjEwIFJldmlzaW9uIDQsIDQuOC4xIFRoZSBJbnZhcmlhbnQgUXVhbGlmaWVyCitib29sIENhbkJl
SW52YXJpYW50RVNTTDNPckdyZWF0ZXIoVFF1YWxpZmllciBxdWFsaWZpZXIpCit7CisgICAgcmV0
dXJuIElzVmFyeWluZ091dChxdWFsaWZpZXIpIHx8IHF1YWxpZmllciA9PSBFdnFGcmFnbWVudE91
dCB8fAorICAgICAgICAgICBJc0J1aWx0aW5PdXRwdXRWYXJpYWJsZShxdWFsaWZpZXIpOworfQor
Citib29sIElzQnVpbHRpbk91dHB1dFZhcmlhYmxlKFRRdWFsaWZpZXIgcXVhbGlmaWVyKQorewor
ICAgIHN3aXRjaCAocXVhbGlmaWVyKQorICAgIHsKKyAgICAgICAgY2FzZSBFdnFQb3NpdGlvbjoK
KyAgICAgICAgY2FzZSBFdnFQb2ludFNpemU6CisgICAgICAgIGNhc2UgRXZxRnJhZ0RlcHRoOgor
ICAgICAgICBjYXNlIEV2cUZyYWdEZXB0aEVYVDoKKyAgICAgICAgY2FzZSBFdnFGcmFnQ29sb3I6
CisgICAgICAgIGNhc2UgRXZxU2Vjb25kYXJ5RnJhZ0NvbG9yRVhUOgorICAgICAgICBjYXNlIEV2
cUZyYWdEYXRhOgorICAgICAgICBjYXNlIEV2cVNlY29uZGFyeUZyYWdEYXRhRVhUOgorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsK
KyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIElzQnVpbHRpbkZyYWdtZW50SW5w
dXRWYXJpYWJsZShUUXVhbGlmaWVyIHF1YWxpZmllcikKK3sKKyAgICBzd2l0Y2ggKHF1YWxpZmll
cikKKyAgICB7CisgICAgICAgIGNhc2UgRXZxRnJhZ0Nvb3JkOgorICAgICAgICBjYXNlIEV2cVBv
aW50Q29vcmQ6CisgICAgICAgIGNhc2UgRXZxRnJvbnRGYWNpbmc6CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7Cit9Cit9ICAvLyBuYW1lc3BhY2Ugc2gKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3V0aWwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci91dGlsLmgJ
KHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL3V0aWwuaAkod29ya2luZyBjb3B5KQpAQCAtMTIsNiArMTIsNyBAQAogI2lu
Y2x1ZGUgImFuZ2xlX2dsLmgiCiAjaW5jbHVkZSA8R0xTTEFORy9TaGFkZXJMYW5nLmg+CiAKKyNp
bmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL09wZXJhdG9yLmgiCiAjaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci9UeXBlcy5oIgogCiAvLyBzdHJ0b2ZfY2xhbXAgaXMgbGlrZSBzdHJ0b2Yg
YnV0CkBAIC0zNyw2ICszOCwxMiBAQAogSW50ZXJwb2xhdGlvblR5cGUgR2V0SW50ZXJwb2xhdGlv
blR5cGUoVFF1YWxpZmllciBxdWFsaWZpZXIpOwogVFN0cmluZyBBcnJheVN0cmluZyhjb25zdCBU
VHlwZSAmdHlwZSk7CiAKK1RUeXBlIEdldEludGVyZmFjZUJsb2NrVHlwZShjb25zdCBzaDo6SW50
ZXJmYWNlQmxvY2sgJmJsb2NrKTsKK1RUeXBlIEdldFNoYWRlclZhcmlhYmxlQmFzaWNUeXBlKGNv
bnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmdmFyKTsKK1RUeXBlIEdldFNoYWRlclZhcmlhYmxlVHlw
ZShjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUgJnZhcik7CisKK1RPcGVyYXRvciBUeXBlVG9Db25z
dHJ1Y3Rvck9wZXJhdG9yKGNvbnN0IFRUeXBlICZ0eXBlKTsKKwogY2xhc3MgR2V0VmFyaWFibGVU
cmF2ZXJzZXIgOiBhbmdsZTo6Tm9uQ29weWFibGUKIHsKICAgcHVibGljOgpAQCAtNjAsNiArNjcs
MTAgQEAKICAgICBjb25zdCBUU3ltYm9sVGFibGUgJm1TeW1ib2xUYWJsZTsKIH07CiAKK2Jvb2wg
SXNCdWlsdGluT3V0cHV0VmFyaWFibGUoVFF1YWxpZmllciBxdWFsaWZpZXIpOworYm9vbCBJc0J1
aWx0aW5GcmFnbWVudElucHV0VmFyaWFibGUoVFF1YWxpZmllciBxdWFsaWZpZXIpOworYm9vbCBD
YW5CZUludmFyaWFudEVTU0wxKFRRdWFsaWZpZXIgcXVhbGlmaWVyKTsKK2Jvb2wgQ2FuQmVJbnZh
cmlhbnRFU1NMM09yR3JlYXRlcihUUXVhbGlmaWVyIHF1YWxpZmllcik7CiB9CiAKICNlbmRpZiAv
LyBDT01QSUxFUl9UUkFOU0xBVE9SX1VUSUxfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci5neXBpCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMjIsOSArMjIs
MTMgQEAKICAgICAgICAgICAgICcuLi9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyVmFycy5oJywKICAg
ICAgICAgICAgICcuLi9pbmNsdWRlL0tIUi9raHJwbGF0Zm9ybS5oJywKICAgICAgICAgICAgICcu
Li9pbmNsdWRlL2FuZ2xlX2dsLmgnLAorICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3Iv
QWRkQW5kVHJ1ZVRvTG9vcENvbmRpdGlvbi5jcHAnLAorICAgICAgICAgICAgJ2NvbXBpbGVyL3Ry
YW5zbGF0b3IvQWRkQW5kVHJ1ZVRvTG9vcENvbmRpdGlvbi5oJywKICAgICAgICAgICAgICdjb21w
aWxlci90cmFuc2xhdG9yL0Jhc2VUeXBlcy5oJywKICAgICAgICAgICAgICdjb21waWxlci90cmFu
c2xhdG9yL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCcsCiAgICAgICAgICAgICAnY29tcGls
ZXIvdHJhbnNsYXRvci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oJywKKyAgICAgICAgICAgICdj
b21waWxlci90cmFuc2xhdG9yL0JyZWFrVmFyaWFibGVBbGlhc2luZ0luSW5uZXJMb29wcy5jcHAn
LAorICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvQnJlYWtWYXJpYWJsZUFsaWFzaW5n
SW5Jbm5lckxvb3BzLmgnLAogICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvQ2FjaGUu
Y3BwJywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0NhY2hlLmgnLAogICAgICAg
ICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvQ2FsbERBRy5jcHAnLApAQCAtMzMsNiArMzcsNyBA
QAogICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29tbW9uLmgnLAogICAgICAgICAg
ICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29tcGlsZXIuY3BwJywKICAgICAgICAgICAgICdjb21w
aWxlci90cmFuc2xhdG9yL0NvbXBpbGVyLmgnLAorICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5z
bGF0b3IvQ29uc3RhbnRVbmlvbi5jcHAnLAogICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0
b3IvQ29uc3RhbnRVbmlvbi5oJywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0Rl
ZmVyR2xvYmFsSW5pdGlhbGl6ZXJzLmNwcCcsCiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNs
YXRvci9EZWZlckdsb2JhbEluaXRpYWxpemVycy5oJywKQEAgLTQwLDggKzQ1LDEyIEBACiAgICAg
ICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9EaWFnbm9zdGljcy5oJywKICAgICAgICAgICAg
ICdjb21waWxlci90cmFuc2xhdG9yL0RpcmVjdGl2ZUhhbmRsZXIuY3BwJywKICAgICAgICAgICAg
ICdjb21waWxlci90cmFuc2xhdG9yL0RpcmVjdGl2ZUhhbmRsZXIuaCcsCisgICAgICAgICAgICAn
Y29tcGlsZXIvdHJhbnNsYXRvci9FbXVsYXRlR0xGcmFnQ29sb3JCcm9hZGNhc3QuY3BwJywKKyAg
ICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0VtdWxhdGVHTEZyYWdDb2xvckJyb2FkY2Fz
dC5oJywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0VtdWxhdGVQcmVjaXNpb24u
Y3BwJywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0VtdWxhdGVQcmVjaXNpb24u
aCcsCisgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9FeHBhbmRJbnRlZ2VyUG93RXhw
cmVzc2lvbnMuY3BwJywKKyAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0V4cGFuZElu
dGVnZXJQb3dFeHByZXNzaW9ucy5oJywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9y
L0V4dGVuc2lvbkJlaGF2aW9yLmgnLAogICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3Iv
RmxhZ1N0ZDE0MFN0cnVjdHMuY3BwJywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9y
L0ZsYWdTdGQxNDBTdHJ1Y3RzLmgnLApAQCAtNzcsNiArODYsOCBAQAogICAgICAgICAgICAgJ2Nv
bXBpbGVyL3RyYW5zbGF0b3IvUHJhZ21hLmgnLAogICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5z
bGF0b3IvUHJ1bmVFbXB0eURlY2xhcmF0aW9ucy5jcHAnLAogICAgICAgICAgICAgJ2NvbXBpbGVy
L3RyYW5zbGF0b3IvUHJ1bmVFbXB0eURlY2xhcmF0aW9ucy5oJywKKyAgICAgICAgICAgICdjb21w
aWxlci90cmFuc2xhdG9yL1F1YWxpZmllclR5cGVzLmgnLAorICAgICAgICAgICAgJ2NvbXBpbGVy
L3RyYW5zbGF0b3IvUXVhbGlmaWVyVHlwZXMuY3BwJywKICAgICAgICAgICAgICdjb21waWxlci90
cmFuc2xhdG9yL1JlY29yZENvbnN0YW50UHJlY2lzaW9uLmNwcCcsCiAgICAgICAgICAgICAnY29t
cGlsZXIvdHJhbnNsYXRvci9SZWNvcmRDb25zdGFudFByZWNpc2lvbi5oJywKICAgICAgICAgICAg
ICdjb21waWxlci90cmFuc2xhdG9yL1JlZ2VuZXJhdGVTdHJ1Y3ROYW1lcy5jcHAnLApAQCAtODUs
NyArOTYsMTAgQEAKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1JlbW92ZVBvdy5o
JywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVEb1doaWxlLmNwcCcs
CiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlRG9XaGlsZS5oJywKLSAg
ICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1JlbmFtZUZ1bmN0aW9uLmgnLAorICAgICAg
ICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQuY3BwJywK
KyAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVUZXhlbEZldGNoT2Zmc2V0
LmgnLAorICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVVuYXJ5TWludXNP
cGVyYXRvckludC5jcHAnLAorICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0
ZVVuYXJ5TWludXNPcGVyYXRvckludC5oJywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xh
dG9yL1NjYWxhcml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJncy5jcHAnLAogICAgICAgICAgICAg
J2NvbXBpbGVyL3RyYW5zbGF0b3IvU2NhbGFyaXplVmVjQW5kTWF0Q29uc3RydWN0b3JBcmdzLmgn
LAogICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VhcmNoU3ltYm9sLmNwcCcsCkBA
IC05Niw2ICsxMTAsOCBAQAogICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvVHlwZXMu
aCcsCiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9VbmZvbGRTaG9ydENpcmN1aXRB
U1QuY3BwJywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1VuZm9sZFNob3J0Q2ly
Y3VpdEFTVC5oJywKKyAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1VzZUludGVyZmFj
ZUJsb2NrRmllbGRzLmNwcCcsCisgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9Vc2VJ
bnRlcmZhY2VCbG9ja0ZpZWxkcy5oJywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9y
L1ZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXIuY3BwJywKICAgICAgICAgICAgICdjb21waWxlci90
cmFuc2xhdG9yL1ZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXIuaCcsCiAgICAgICAgICAgICAnY29t
cGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZUxpbWl0YXRpb25zLmNwcCcsCkBAIC0xMTIsMTMgKzEy
OCw2IEBACiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9WYXJpYWJsZVBhY2tlci5o
JywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL2Jsb2NrbGF5b3V0LmNwcCcsCiAg
ICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9ibG9ja2xheW91dC5oJywKLSAgICAgICAg
ICAgICdjb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaC5jcHAnLAot
ICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBo
LmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5j
eUdyYXBoQnVpbGRlci5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVw
Z3JhcGgvRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5oJywKLSAgICAgICAgICAgICdjb21waWxlci90
cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaE91dHB1dC5jcHAnLAotICAgICAgICAg
ICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoT3V0cHV0Lmgn
LAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdy
YXBoVHJhdmVyc2UuY3BwJywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL2dsc2xh
bmcuaCcsCiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nLmwnLAogICAg
ICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZy55JywKQEAgLTEyNywxMCArMTM2
LDYgQEAKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL2dsc2xhbmdfdGFiLmgnLAog
ICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvaW50ZXJtT3V0LmNwcCcsCiAgICAgICAg
ICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9sZW5ndGhfbGltaXRzLmgnLAotICAgICAgICAgICAg
J2NvbXBpbGVyL3RyYW5zbGF0b3IvdGltaW5nL1Jlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmcu
Y3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL3RpbWluZy9SZXN0cmljdEZy
YWdtZW50U2hhZGVyVGltaW5nLmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3Iv
dGltaW5nL1Jlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nLmNwcCcsCi0gICAgICAgICAgICAnY29t
cGlsZXIvdHJhbnNsYXRvci90aW1pbmcvUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuaCcsCiAg
ICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci91dGlsLmNwcCcsCiAgICAgICAgICAgICAn
Y29tcGlsZXIvdHJhbnNsYXRvci91dGlsLmgnLAogICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L2Nv
bXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5jcHAnLApAQCAtMTYwLDYgKzE2NSw4IEBACiAgICAg
ICAgIF0sCiAgICAgICAgICdhbmdsZV90cmFuc2xhdG9yX2xpYl9obHNsX3NvdXJjZXMnOgogICAg
ICAgICBbCisgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9BZGREZWZhdWx0UmV0dXJu
U3RhdGVtZW50cy5jcHAnLAorICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvQWRkRGVm
YXVsdFJldHVyblN0YXRlbWVudHMuaCcsCiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRv
ci9BcnJheVJldHVyblZhbHVlVG9PdXRQYXJhbWV0ZXIuY3BwJywKICAgICAgICAgICAgICdjb21w
aWxlci90cmFuc2xhdG9yL0FycmF5UmV0dXJuVmFsdWVUb091dFBhcmFtZXRlci5oJywKICAgICAg
ICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0FTVE1ldGFkYXRhSExTTC5jcHAnLApAQCAtMTY4
LDYgKzE3NSw4IEBACiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9ibG9ja2xheW91
dEhMU0wuaCcsCiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9CdWlsdEluRnVuY3Rp
b25FbXVsYXRvckhMU0wuY3BwJywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0J1
aWx0SW5GdW5jdGlvbkVtdWxhdG9ySExTTC5oJywKKyAgICAgICAgICAgICdjb21waWxlci90cmFu
c2xhdG9yL0ludGVybU5vZGVQYXR0ZXJuTWF0Y2hlci5jcHAnLAorICAgICAgICAgICAgJ2NvbXBp
bGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVyLmgnLAogICAgICAgICAgICAg
J2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0SExTTC5jcHAnLAogICAgICAgICAgICAgJ2NvbXBp
bGVyL3RyYW5zbGF0b3IvT3V0cHV0SExTTC5oJywKICAgICAgICAgICAgICdjb21waWxlci90cmFu
c2xhdG9yL1JlbW92ZUR5bmFtaWNJbmRleGluZy5jcHAnLApAQCAtMTgyLDggKzE5MSwxNCBAQAog
ICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVEZWNsYXJhdGlvbnMuaCcs
CiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9TZXBhcmF0ZUV4cHJlc3Npb25zUmV0
dXJuaW5nQXJyYXlzLmNwcCcsCiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9TZXBh
cmF0ZUV4cHJlc3Npb25zUmV0dXJuaW5nQXJyYXlzLmgnLAorICAgICAgICAgICAgJ2NvbXBpbGVy
L3RyYW5zbGF0b3IvU2ltcGxpZnlMb29wQ29uZGl0aW9ucy5jcHAnLAorICAgICAgICAgICAgJ2Nv
bXBpbGVyL3RyYW5zbGF0b3IvU2ltcGxpZnlMb29wQ29uZGl0aW9ucy5oJywKKyAgICAgICAgICAg
ICdjb21waWxlci90cmFuc2xhdG9yL1NwbGl0U2VxdWVuY2VPcGVyYXRvci5jcHAnLAorICAgICAg
ICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvU3BsaXRTZXF1ZW5jZU9wZXJhdG9yLmgnLAogICAg
ICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvU3RydWN0dXJlSExTTC5jcHAnLAogICAgICAg
ICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvU3RydWN0dXJlSExTTC5oJywKKyAgICAgICAgICAg
ICdjb21waWxlci90cmFuc2xhdG9yL1RleHR1cmVGdW5jdGlvbkhMU0wuY3BwJywKKyAgICAgICAg
ICAgICdjb21waWxlci90cmFuc2xhdG9yL1RleHR1cmVGdW5jdGlvbkhMU0wuaCcsCiAgICAgICAg
ICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9ySExTTC5jcHAnLAogICAgICAgICAg
ICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckhMU0wuaCcsCiAgICAgICAgICAgICAn
Y29tcGlsZXIvdHJhbnNsYXRvci9VbmZvbGRTaG9ydENpcmN1aXRUb0lmLmNwcCcsCkBAIC0yMjEs
NyArMjM2LDYgQEAKICAgICAgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVy
LmgnLAogICAgICAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6ZXIubCcsCiAg
ICAgICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL251bWVyaWNfbGV4LmgnLAotICAgICAg
ICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9wcF91dGlscy5oJywKICAgICAgICAgXSwKICAg
ICB9LAogICAgICMgRXZlcnl0aGluZyBiZWxvdyB0aGlzIGlzIGR1cGxpY2F0ZWQgaW4gdGhlIEdO
IGJ1aWxkLiBJZiB5b3UgY2hhbmdlCkBAIC0yMzEsNiArMjQ1LDcgQEAKICAgICAgICAgewogICAg
ICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ3ByZXByb2Nlc3NvcicsCiAgICAgICAgICAgICAndHlw
ZSc6ICdzdGF0aWNfbGlicmFyeScsCisgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogWyAnYW5n
bGVfY29tbW9uJyBdLAogICAgICAgICAgICAgJ2luY2x1ZGVzJzogWyAnLi4vYnVpbGQvY29tbW9u
X2RlZmluZXMuZ3lwaScsIF0sCiAgICAgICAgICAgICAnc291cmNlcyc6IFsgJzxAKGFuZ2xlX3By
ZXByb2Nlc3Nvcl9zb3VyY2VzKScsIF0sCiAgICAgICAgIH0sCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvaW1hZ2VfdXRpbC9jb3B5aW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9pbWFnZV91dGlsL2NvcHlpbWFnZS5jcHAJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2ltYWdlX3V0aWwvY29weWlt
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIyIEBACisvLworLy8gQ29weXJpZ2h0
IChjKSAyMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKwor
Ly8gY29weWltYWdlLmNwcDogRGVmaW5lcyBpbWFnZSBjb3B5aW5nIGZ1bmN0aW9ucworCisjaW5j
bHVkZSAiaW1hZ2VfdXRpbC9jb3B5aW1hZ2UuaCIKKworbmFtZXNwYWNlIGFuZ2xlCit7CisKK3Zv
aWQgQ29weUJHUkE4VG9SR0JBOChjb25zdCB1aW50OF90ICpzb3VyY2UsIHVpbnQ4X3QgKmRlc3Qp
Cit7CisgICAgdWludDMyX3QgYXJnYiAgICAgICAgICAgICAgICAgICAgICAgPSAqcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50MzJfdCAqPihzb3VyY2UpOworICAgICpyZWludGVycHJldF9jYXN0
PHVpbnQzMl90ICo+KGRlc3QpID0gKGFyZ2IgJiAweEZGMDBGRjAwKSB8ICAgICAgICAvLyBLZWVw
IGFscGhhIGFuZCBncmVlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGFyZ2IgJiAweDAwRkYwMDAwKSA+PiAxNiB8ICAvLyBNb3ZlIHJlZCB0byBibHVlCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXJnYiAmIDB4MDAwMDAwRkYp
IDw8IDE2OyAgIC8vIE1vdmUgYmx1ZSB0byByZWQKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZ2xl
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvaW1hZ2VfdXRpbC9jb3B5aW1hZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvaW1hZ2VfdXRpbC9j
b3B5aW1hZ2UuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
aW1hZ2VfdXRpbC9jb3B5aW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2IEBACisv
LworLy8gQ29weXJpZ2h0IChjKSAyMDEzLTIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisvLworCisvLyBjb3B5aW1hZ2UuaDogRGVmaW5lcyBpbWFnZSBjb3B5aW5n
IGZ1bmN0aW9ucworCisjaWZuZGVmIElNQUdFVVRJTF9DT1BZSU1BR0VfSF8KKyNkZWZpbmUgSU1B
R0VVVElMX0NPUFlJTUFHRV9IXworCisjaW5jbHVkZSAiY29tbW9uL0NvbG9yLmgiCisKKyNpbmNs
dWRlICJpbWFnZV91dGlsL2ltYWdlZm9ybWF0cy5oIgorCisjaW5jbHVkZSA8c3RkaW50Lmg+CisK
K25hbWVzcGFjZSBhbmdsZQoreworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgc291cmNlVHlwZSwgdHlw
ZW5hbWUgY29sb3JEYXRhVHlwZT4KK3ZvaWQgUmVhZENvbG9yKGNvbnN0IHVpbnQ4X3QgKnNvdXJj
ZSwgdWludDhfdCAqZGVzdCk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBkZXN0VHlwZSwgdHlwZW5h
bWUgY29sb3JEYXRhVHlwZT4KK3ZvaWQgV3JpdGVDb2xvcihjb25zdCB1aW50OF90ICpzb3VyY2Us
IHVpbnQ4X3QgKmRlc3QpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgc291cmNlVHlwZSwgdHlwZW5h
bWUgZGVzdFR5cGUsIHR5cGVuYW1lIGNvbG9yRGF0YVR5cGU+Cit2b2lkIENvcHlQaXhlbChjb25z
dCB1aW50OF90ICpzb3VyY2UsIHVpbnQ4X3QgKmRlc3QpOworCit2b2lkIENvcHlCR1JBOFRvUkdC
QTgoY29uc3QgdWludDhfdCAqc291cmNlLCB1aW50OF90ICpkZXN0KTsKKworfSAgLy8gbmFtZXNw
YWNlIGFuZ2xlCisKKyNpbmNsdWRlICJjb3B5aW1hZ2UuaW5sIgorCisjZW5kaWYgIC8vIElNQUdF
VVRJTF9DT1BZSU1BR0VfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9pbWFn
ZV91dGlsL2NvcHlpbWFnZS5pbmwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2ltYWdlX3V0aWwvY29weWltYWdlLmlubAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvaW1hZ2VfdXRpbC9jb3B5aW1hZ2UuaW5sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMzQgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBjb3B5aW1hZ2UuaW5sOiBE
ZWZpbmVzIGltYWdlIGNvcHlpbmcgZnVuY3Rpb25zCisKK25hbWVzcGFjZSBhbmdsZQoreworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgc291cmNlVHlwZSwgdHlwZW5hbWUgY29sb3JEYXRhVHlwZT4KK2lu
bGluZSB2b2lkIFJlYWRDb2xvcihjb25zdCB1aW50OF90ICpzb3VyY2UsIHVpbnQ4X3QgKmRlc3Qp
Cit7CisgICAgc291cmNlVHlwZTo6cmVhZENvbG9yKHJlaW50ZXJwcmV0X2Nhc3Q8Q29sb3I8Y29s
b3JEYXRhVHlwZT4qPihkZXN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBzb3VyY2VUeXBlKj4oc291cmNlKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBkZXN0VHlwZSwgdHlwZW5hbWUgY29sb3JEYXRhVHlwZT4KK2lubGluZSB2b2lkIFdyaXRl
Q29sb3IoY29uc3QgdWludDhfdCAqc291cmNlLCB1aW50OF90ICpkZXN0KQoreworICAgIGRlc3RU
eXBlOjp3cml0ZUNvbG9yKHJlaW50ZXJwcmV0X2Nhc3Q8ZGVzdFR5cGUqPihkZXN0KSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IENvbG9yPGNvbG9yRGF0
YVR5cGU+Kj4oc291cmNlKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBzb3VyY2VUeXBlLCB0
eXBlbmFtZSBkZXN0VHlwZSwgdHlwZW5hbWUgY29sb3JEYXRhVHlwZT4KK2lubGluZSB2b2lkIENv
cHlQaXhlbChjb25zdCB1aW50OF90ICpzb3VyY2UsIHVpbnQ4X3QgKmRlc3QpCit7CisgICAgY29s
b3JEYXRhVHlwZSB0ZW1wOworICAgIFJlYWRDb2xvcjxzb3VyY2VUeXBlLCBjb2xvckRhdGFUeXBl
Pihzb3VyY2UsICZ0ZW1wKTsKKyAgICBXcml0ZUNvbG9yPGRlc3RUeXBlLCBjb2xvckRhdGFUeXBl
PigmdGVtcCwgZGVzdCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmdsZQpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2ltYWdlX3V0aWwvZ2VuZXJhdGVtaXAuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvaW1hZ2VfdXRpbC9nZW5lcmF0ZW1pcC5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9pbWFnZV91dGls
L2dlbmVyYXRlbWlwLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNCBAQAorLy8KKy8vIENv
cHlyaWdodCAoYykgMjAwMi0yMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgorLy8KKworLy8gZ2VuZXJhdGVtaXAuaDogRGVmaW5lcyB0aGUgR2VuZXJhdGVNaXAgZnVu
Y3Rpb24sIHRlbXBsYXRlZCBvbiB0aGUgZm9ybWF0CisvLyB0eXBlIG9mIHRoZSBpbWFnZSBmb3Ig
d2hpY2ggbWlwIGxldmVscyBhcmUgYmVpbmcgZ2VuZXJhdGVkLgorCisjaWZuZGVmIElNQUdFVVRJ
TF9HRU5FUkFURU1JUF9IXworI2RlZmluZSBJTUFHRVVUSUxfR0VORVJBVEVNSVBfSF8KKworI2lu
Y2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorCituYW1lc3BhY2UgYW5nbGUK
K3sKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgdm9pZCBHZW5lcmF0ZU1pcChzaXpl
X3Qgc291cmNlV2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc291cmNlSGVp
Z2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNvdXJjZURlcHRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqc291cmNlRGF0YSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBzb3VyY2VSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBzb3VyY2VEZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDhfdCAqZGVzdERhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVzdFJvd1Bp
dGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlc3REZXB0aFBpdGNoKTsKKwor
fSAgLy8gbmFtZXNwYWNlIGFuZ2xlCisKKyNpbmNsdWRlICJnZW5lcmF0ZW1pcC5pbmwiCisKKyNl
bmRpZiAgLy8gSU1BR0VVVElMX0dFTkVSQVRFTUlQX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvaW1hZ2VfdXRpbC9nZW5lcmF0ZW1pcC5pbmwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2ltYWdlX3V0aWwvZ2VuZXJhdGVtaXAuaW5sCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9pbWFnZV91dGlsL2dlbmVy
YXRlbWlwLmlubAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI2OCBAQAorLy8KKy8vIENvcHly
aWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8v
CisKKy8vIGdlbmVyYXRlbWlwLmlubDogRGVmaW5lcyB0aGUgR2VuZXJhdGVNaXAgZnVuY3Rpb24s
IHRlbXBsYXRlZCBvbiB0aGUgZm9ybWF0CisvLyB0eXBlIG9mIHRoZSBpbWFnZSBmb3Igd2hpY2gg
bWlwIGxldmVscyBhcmUgYmVpbmcgZ2VuZXJhdGVkLgorCisjaW5jbHVkZSAiY29tbW9uL21hdGh1
dGlsLmgiCisKKyNpbmNsdWRlICJpbWFnZV91dGlsL2ltYWdlZm9ybWF0cy5oIgorCituYW1lc3Bh
Y2UgYW5nbGUKK3sKKworbmFtZXNwYWNlIHByaXYKK3sKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CitzdGF0aWMgaW5saW5lIFQgKkdldFBpeGVsKHVpbnQ4X3QgKmRhdGEsIHNpemVfdCB4LCBzaXpl
X3QgeSwgc2l6ZV90IHosIHNpemVfdCByb3dQaXRjaCwgc2l6ZV90IGRlcHRoUGl0Y2gpCit7Cisg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KGRhdGEgKyAoeCAqIHNpemVvZihUKSkgKyAo
eSAqIHJvd1BpdGNoKSArICh6ICogZGVwdGhQaXRjaCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK3N0YXRpYyBpbmxpbmUgY29uc3QgVCAqR2V0UGl4ZWwoY29uc3QgdWludDhfdCAqZGF0
YSwgc2l6ZV90IHgsIHNpemVfdCB5LCBzaXplX3Qgeiwgc2l6ZV90IHJvd1BpdGNoLCBzaXplX3Qg
ZGVwdGhQaXRjaCkKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4oZGF0
YSArICh4ICogc2l6ZW9mKFQpKSArICh5ICogcm93UGl0Y2gpICsgKHogKiBkZXB0aFBpdGNoKSk7
Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RhdGljIHZvaWQgR2VuZXJhdGVNaXBfWShz
aXplX3Qgc291cmNlV2lkdGgsIHNpemVfdCBzb3VyY2VIZWlnaHQsIHNpemVfdCBzb3VyY2VEZXB0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqc291cmNlRGF0YSwg
c2l6ZV90IHNvdXJjZVJvd1BpdGNoLCBzaXplX3Qgc291cmNlRGVwdGhQaXRjaCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlc3RXaWR0aCwgc2l6ZV90IGRlc3RIZWlnaHQsIHNp
emVfdCBkZXN0RGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmRlc3RE
YXRhLCBzaXplX3QgZGVzdFJvd1BpdGNoLCBzaXplX3QgZGVzdERlcHRoUGl0Y2gpCit7CisgICAg
QVNTRVJUKHNvdXJjZVdpZHRoID09IDEpOworICAgIEFTU0VSVChzb3VyY2VIZWlnaHQgPiAxKTsK
KyAgICBBU1NFUlQoc291cmNlRGVwdGggPT0gMSk7CisKKyAgICBmb3IgKHNpemVfdCB5ID0gMDsg
eSA8IGRlc3RIZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIGNvbnN0IFQgKnNyYzAgPSBHZXRQ
aXhlbDxUPihzb3VyY2VEYXRhLCAwLCB5ICogMiwgMCwgc291cmNlUm93UGl0Y2gsIHNvdXJjZURl
cHRoUGl0Y2gpOworICAgICAgICBjb25zdCBUICpzcmMxID0gR2V0UGl4ZWw8VD4oc291cmNlRGF0
YSwgMCwgeSAqIDIgKyAxLCAwLCBzb3VyY2VSb3dQaXRjaCwgc291cmNlRGVwdGhQaXRjaCk7Cisg
ICAgICAgIFQgKmRzdCA9IEdldFBpeGVsPFQ+KGRlc3REYXRhLCAwLCB5LCAwLCBkZXN0Um93UGl0
Y2gsIGRlc3REZXB0aFBpdGNoKTsKKworICAgICAgICBUOjphdmVyYWdlKGRzdCwgc3JjMCwgc3Jj
MSk7CisgICAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0YXRpYyB2b2lkIEdlbmVy
YXRlTWlwX1goc2l6ZV90IHNvdXJjZVdpZHRoLCBzaXplX3Qgc291cmNlSGVpZ2h0LCBzaXplX3Qg
c291cmNlRGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNv
dXJjZURhdGEsIHNpemVfdCBzb3VyY2VSb3dQaXRjaCwgc2l6ZV90IHNvdXJjZURlcHRoUGl0Y2gs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXN0V2lkdGgsIHNpemVfdCBkZXN0
SGVpZ2h0LCBzaXplX3QgZGVzdERlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
OF90ICpkZXN0RGF0YSwgc2l6ZV90IGRlc3RSb3dQaXRjaCwgc2l6ZV90IGRlc3REZXB0aFBpdGNo
KQoreworICAgIEFTU0VSVChzb3VyY2VXaWR0aCA+IDEpOworICAgIEFTU0VSVChzb3VyY2VIZWln
aHQgPT0gMSk7CisgICAgQVNTRVJUKHNvdXJjZURlcHRoID09IDEpOworCisgICAgZm9yIChzaXpl
X3QgeCA9IDA7IHggPCBkZXN0V2lkdGg7IHgrKykKKyAgICB7CisgICAgICAgIGNvbnN0IFQgKnNy
YzAgPSBHZXRQaXhlbDxUPihzb3VyY2VEYXRhLCB4ICogMiwgMCwgMCwgc291cmNlUm93UGl0Y2gs
IHNvdXJjZURlcHRoUGl0Y2gpOworICAgICAgICBjb25zdCBUICpzcmMxID0gR2V0UGl4ZWw8VD4o
c291cmNlRGF0YSwgeCAqIDIgKyAxLCAwLCAwLCBzb3VyY2VSb3dQaXRjaCwgc291cmNlRGVwdGhQ
aXRjaCk7CisgICAgICAgIFQgKmRzdCA9IEdldFBpeGVsPFQ+KGRlc3REYXRhLCB4LCAwLCAwLCBk
ZXN0Um93UGl0Y2gsIGRlc3REZXB0aFBpdGNoKTsKKworICAgICAgICBUOjphdmVyYWdlKGRzdCwg
c3JjMCwgc3JjMSk7CisgICAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0YXRpYyB2
b2lkIEdlbmVyYXRlTWlwX1ooc2l6ZV90IHNvdXJjZVdpZHRoLCBzaXplX3Qgc291cmNlSGVpZ2h0
LCBzaXplX3Qgc291cmNlRGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVp
bnQ4X3QgKnNvdXJjZURhdGEsIHNpemVfdCBzb3VyY2VSb3dQaXRjaCwgc2l6ZV90IHNvdXJjZURl
cHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXN0V2lkdGgsIHNp
emVfdCBkZXN0SGVpZ2h0LCBzaXplX3QgZGVzdERlcHRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50OF90ICpkZXN0RGF0YSwgc2l6ZV90IGRlc3RSb3dQaXRjaCwgc2l6ZV90IGRlc3RE
ZXB0aFBpdGNoKQoreworICAgIEFTU0VSVChzb3VyY2VXaWR0aCA9PSAxKTsKKyAgICBBU1NFUlQo
c291cmNlSGVpZ2h0ID09IDEpOworICAgIEFTU0VSVChzb3VyY2VEZXB0aCA+IDEpOworCisgICAg
Zm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXN0RGVwdGg7IHorKykKKyAgICB7CisgICAgICAgIGNv
bnN0IFQgKnNyYzAgPSBHZXRQaXhlbDxUPihzb3VyY2VEYXRhLCAwLCAwLCB6ICogMiwgc291cmNl
Um93UGl0Y2gsIHNvdXJjZURlcHRoUGl0Y2gpOworICAgICAgICBjb25zdCBUICpzcmMxID0gR2V0
UGl4ZWw8VD4oc291cmNlRGF0YSwgMCwgMCwgeiAqIDIgKyAxLCBzb3VyY2VSb3dQaXRjaCwgc291
cmNlRGVwdGhQaXRjaCk7CisgICAgICAgIFQgKmRzdCA9IEdldFBpeGVsPFQ+KGRlc3REYXRhLCAw
LCAwLCB6LCBkZXN0Um93UGl0Y2gsIGRlc3REZXB0aFBpdGNoKTsKKworICAgICAgICBUOjphdmVy
YWdlKGRzdCwgc3JjMCwgc3JjMSk7CisgICAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K3N0YXRpYyB2b2lkIEdlbmVyYXRlTWlwX1hZKHNpemVfdCBzb3VyY2VXaWR0aCwgc2l6ZV90IHNv
dXJjZUhlaWdodCwgc2l6ZV90IHNvdXJjZURlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgdWludDhfdCAqc291cmNlRGF0YSwgc2l6ZV90IHNvdXJjZVJvd1BpdGNoLCBzaXpl
X3Qgc291cmNlRGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBk
ZXN0V2lkdGgsIHNpemVfdCBkZXN0SGVpZ2h0LCBzaXplX3QgZGVzdERlcHRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDhfdCAqZGVzdERhdGEsIHNpemVfdCBkZXN0Um93UGl0Y2gs
IHNpemVfdCBkZXN0RGVwdGhQaXRjaCkKK3sKKyAgICBBU1NFUlQoc291cmNlV2lkdGggPiAxKTsK
KyAgICBBU1NFUlQoc291cmNlSGVpZ2h0ID4gMSk7CisgICAgQVNTRVJUKHNvdXJjZURlcHRoID09
IDEpOworCisgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBkZXN0SGVpZ2h0OyB5KyspCisgICAg
eworICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IGRlc3RXaWR0aDsgeCsrKQorICAgICAg
ICB7CisgICAgICAgICAgICBjb25zdCBUICpzcmMwID0gR2V0UGl4ZWw8VD4oc291cmNlRGF0YSwg
eCAqIDIsIHkgKiAyLCAwLCBzb3VyY2VSb3dQaXRjaCwgc291cmNlRGVwdGhQaXRjaCk7CisgICAg
ICAgICAgICBjb25zdCBUICpzcmMxID0gR2V0UGl4ZWw8VD4oc291cmNlRGF0YSwgeCAqIDIsIHkg
KiAyICsgMSwgMCwgc291cmNlUm93UGl0Y2gsIHNvdXJjZURlcHRoUGl0Y2gpOworICAgICAgICAg
ICAgY29uc3QgVCAqc3JjMiA9IEdldFBpeGVsPFQ+KHNvdXJjZURhdGEsIHggKiAyICsgMSwgeSAq
IDIsIDAsIHNvdXJjZVJvd1BpdGNoLCBzb3VyY2VEZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIGNv
bnN0IFQgKnNyYzMgPSBHZXRQaXhlbDxUPihzb3VyY2VEYXRhLCB4ICogMiArIDEsIHkgKiAyICsg
MSwgMCwgc291cmNlUm93UGl0Y2gsIHNvdXJjZURlcHRoUGl0Y2gpOworICAgICAgICAgICAgVCAq
ZHN0ID0gR2V0UGl4ZWw8VD4oZGVzdERhdGEsIHgsIHksIDAsIGRlc3RSb3dQaXRjaCwgZGVzdERl
cHRoUGl0Y2gpOworCisgICAgICAgICAgICBUIHRtcDAsIHRtcDE7CisKKyAgICAgICAgICAgIFQ6
OmF2ZXJhZ2UoJnRtcDAsIHNyYzAsIHNyYzEpOworICAgICAgICAgICAgVDo6YXZlcmFnZSgmdG1w
MSwgc3JjMiwgc3JjMyk7CisgICAgICAgICAgICBUOjphdmVyYWdlKGRzdCwgJnRtcDAsICZ0bXAx
KTsKKyAgICAgICAgfQorICAgIH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGF0aWMg
dm9pZCBHZW5lcmF0ZU1pcF9ZWihzaXplX3Qgc291cmNlV2lkdGgsIHNpemVfdCBzb3VyY2VIZWln
aHQsIHNpemVfdCBzb3VyY2VEZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHVpbnQ4X3QgKnNvdXJjZURhdGEsIHNpemVfdCBzb3VyY2VSb3dQaXRjaCwgc2l6ZV90IHNvdXJj
ZURlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVzdFdpZHRo
LCBzaXplX3QgZGVzdEhlaWdodCwgc2l6ZV90IGRlc3REZXB0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQ4X3QgKmRlc3REYXRhLCBzaXplX3QgZGVzdFJvd1BpdGNoLCBzaXplX3Qg
ZGVzdERlcHRoUGl0Y2gpCit7CisgICAgQVNTRVJUKHNvdXJjZVdpZHRoID09IDEpOworICAgIEFT
U0VSVChzb3VyY2VIZWlnaHQgPiAxKTsKKyAgICBBU1NFUlQoc291cmNlRGVwdGggPiAxKTsKKwor
ICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVzdERlcHRoOyB6KyspCisgICAgeworICAgICAg
ICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGRlc3RIZWlnaHQ7IHkrKykKKyAgICAgICAgeworICAg
ICAgICAgICAgY29uc3QgVCAqc3JjMCA9IEdldFBpeGVsPFQ+KHNvdXJjZURhdGEsIDAsIHkgKiAy
LCB6ICogMiwgc291cmNlUm93UGl0Y2gsIHNvdXJjZURlcHRoUGl0Y2gpOworICAgICAgICAgICAg
Y29uc3QgVCAqc3JjMSA9IEdldFBpeGVsPFQ+KHNvdXJjZURhdGEsIDAsIHkgKiAyLCB6ICogMiAr
IDEsIHNvdXJjZVJvd1BpdGNoLCBzb3VyY2VEZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIGNvbnN0
IFQgKnNyYzIgPSBHZXRQaXhlbDxUPihzb3VyY2VEYXRhLCAwLCB5ICogMiArIDEsIHogKiAyLCBz
b3VyY2VSb3dQaXRjaCwgc291cmNlRGVwdGhQaXRjaCk7CisgICAgICAgICAgICBjb25zdCBUICpz
cmMzID0gR2V0UGl4ZWw8VD4oc291cmNlRGF0YSwgMCwgeSAqIDIgKyAxLCB6ICogMiArIDEsIHNv
dXJjZVJvd1BpdGNoLCBzb3VyY2VEZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIFQgKmRzdCA9IEdl
dFBpeGVsPFQ+KGRlc3REYXRhLCAwLCB5LCB6LCBkZXN0Um93UGl0Y2gsIGRlc3REZXB0aFBpdGNo
KTsKKworICAgICAgICAgICAgVCB0bXAwLCB0bXAxOworCisgICAgICAgICAgICBUOjphdmVyYWdl
KCZ0bXAwLCBzcmMwLCBzcmMxKTsKKyAgICAgICAgICAgIFQ6OmF2ZXJhZ2UoJnRtcDEsIHNyYzIs
IHNyYzMpOworICAgICAgICAgICAgVDo6YXZlcmFnZShkc3QsICZ0bXAwLCAmdG1wMSk7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RhdGljIHZvaWQgR2Vu
ZXJhdGVNaXBfWFooc2l6ZV90IHNvdXJjZVdpZHRoLCBzaXplX3Qgc291cmNlSGVpZ2h0LCBzaXpl
X3Qgc291cmNlRGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90
ICpzb3VyY2VEYXRhLCBzaXplX3Qgc291cmNlUm93UGl0Y2gsIHNpemVfdCBzb3VyY2VEZXB0aFBp
dGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlc3RXaWR0aCwgc2l6ZV90
IGRlc3RIZWlnaHQsIHNpemVfdCBkZXN0RGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50OF90ICpkZXN0RGF0YSwgc2l6ZV90IGRlc3RSb3dQaXRjaCwgc2l6ZV90IGRlc3REZXB0
aFBpdGNoKQoreworICAgIEFTU0VSVChzb3VyY2VXaWR0aCA+IDEpOworICAgIEFTU0VSVChzb3Vy
Y2VIZWlnaHQgPT0gMSk7CisgICAgQVNTRVJUKHNvdXJjZURlcHRoID4gMSk7CisKKyAgICBmb3Ig
KHNpemVfdCB6ID0gMDsgeiA8IGRlc3REZXB0aDsgeisrKQorICAgIHsKKyAgICAgICAgZm9yIChz
aXplX3QgeCA9IDA7IHggPCBkZXN0V2lkdGg7IHgrKykKKyAgICAgICAgeworICAgICAgICAgICAg
Y29uc3QgVCAqc3JjMCA9IEdldFBpeGVsPFQ+KHNvdXJjZURhdGEsIHggKiAyLCAwLCB6ICogMiwg
c291cmNlUm93UGl0Y2gsIHNvdXJjZURlcHRoUGl0Y2gpOworICAgICAgICAgICAgY29uc3QgVCAq
c3JjMSA9IEdldFBpeGVsPFQ+KHNvdXJjZURhdGEsIHggKiAyLCAwLCB6ICogMiArIDEsIHNvdXJj
ZVJvd1BpdGNoLCBzb3VyY2VEZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIGNvbnN0IFQgKnNyYzIg
PSBHZXRQaXhlbDxUPihzb3VyY2VEYXRhLCB4ICogMiArIDEsIDAsIHogKiAyLCBzb3VyY2VSb3dQ
aXRjaCwgc291cmNlRGVwdGhQaXRjaCk7CisgICAgICAgICAgICBjb25zdCBUICpzcmMzID0gR2V0
UGl4ZWw8VD4oc291cmNlRGF0YSwgeCAqIDIgKyAxLCAwLCB6ICogMiArIDEsIHNvdXJjZVJvd1Bp
dGNoLCBzb3VyY2VEZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIFQgKmRzdCA9IEdldFBpeGVsPFQ+
KGRlc3REYXRhLCB4LCAwLCB6LCBkZXN0Um93UGl0Y2gsIGRlc3REZXB0aFBpdGNoKTsKKworICAg
ICAgICAgICAgVCB0bXAwLCB0bXAxOworCisgICAgICAgICAgICBUOjphdmVyYWdlKCZ0bXAwLCBz
cmMwLCBzcmMxKTsKKyAgICAgICAgICAgIFQ6OmF2ZXJhZ2UoJnRtcDEsIHNyYzIsIHNyYzMpOwor
ICAgICAgICAgICAgVDo6YXZlcmFnZShkc3QsICZ0bXAwLCAmdG1wMSk7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RhdGljIHZvaWQgR2VuZXJhdGVNaXBf
WFlaKHNpemVfdCBzb3VyY2VXaWR0aCwgc2l6ZV90IHNvdXJjZUhlaWdodCwgc2l6ZV90IHNvdXJj
ZURlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNvdXJj
ZURhdGEsIHNpemVfdCBzb3VyY2VSb3dQaXRjaCwgc2l6ZV90IHNvdXJjZURlcHRoUGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlc3RXaWR0aCwgc2l6ZV90IGRlc3RI
ZWlnaHQsIHNpemVfdCBkZXN0RGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDhfdCAqZGVzdERhdGEsIHNpemVfdCBkZXN0Um93UGl0Y2gsIHNpemVfdCBkZXN0RGVwdGhQaXRj
aCkKK3sKKyAgICBBU1NFUlQoc291cmNlV2lkdGggPiAxKTsKKyAgICBBU1NFUlQoc291cmNlSGVp
Z2h0ID4gMSk7CisgICAgQVNTRVJUKHNvdXJjZURlcHRoID4gMSk7CisKKyAgICBmb3IgKHNpemVf
dCB6ID0gMDsgeiA8IGRlc3REZXB0aDsgeisrKQorICAgIHsKKyAgICAgICAgZm9yIChzaXplX3Qg
eSA9IDA7IHkgPCBkZXN0SGVpZ2h0OyB5KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAo
c2l6ZV90IHggPSAwOyB4IDwgZGVzdFdpZHRoOyB4KyspCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgY29uc3QgVCAqc3JjMCA9IEdldFBpeGVsPFQ+KHNvdXJjZURhdGEsIHggKiAyLCB5
ICogMiwgeiAqIDIsIHNvdXJjZVJvd1BpdGNoLCBzb3VyY2VEZXB0aFBpdGNoKTsKKyAgICAgICAg
ICAgICAgICBjb25zdCBUICpzcmMxID0gR2V0UGl4ZWw8VD4oc291cmNlRGF0YSwgeCAqIDIsIHkg
KiAyLCB6ICogMiArIDEsIHNvdXJjZVJvd1BpdGNoLCBzb3VyY2VEZXB0aFBpdGNoKTsKKyAgICAg
ICAgICAgICAgICBjb25zdCBUICpzcmMyID0gR2V0UGl4ZWw8VD4oc291cmNlRGF0YSwgeCAqIDIs
IHkgKiAyICsgMSwgeiAqIDIsIHNvdXJjZVJvd1BpdGNoLCBzb3VyY2VEZXB0aFBpdGNoKTsKKyAg
ICAgICAgICAgICAgICBjb25zdCBUICpzcmMzID0gR2V0UGl4ZWw8VD4oc291cmNlRGF0YSwgeCAq
IDIsIHkgKiAyICsgMSwgeiAqIDIgKyAxLCBzb3VyY2VSb3dQaXRjaCwgc291cmNlRGVwdGhQaXRj
aCk7CisgICAgICAgICAgICAgICAgY29uc3QgVCAqc3JjNCA9IEdldFBpeGVsPFQ+KHNvdXJjZURh
dGEsIHggKiAyICsgMSwgeSAqIDIsIHogKiAyLCBzb3VyY2VSb3dQaXRjaCwgc291cmNlRGVwdGhQ
aXRjaCk7CisgICAgICAgICAgICAgICAgY29uc3QgVCAqc3JjNSA9IEdldFBpeGVsPFQ+KHNvdXJj
ZURhdGEsIHggKiAyICsgMSwgeSAqIDIsIHogKiAyICsgMSwgc291cmNlUm93UGl0Y2gsIHNvdXJj
ZURlcHRoUGl0Y2gpOworICAgICAgICAgICAgICAgIGNvbnN0IFQgKnNyYzYgPSBHZXRQaXhlbDxU
Pihzb3VyY2VEYXRhLCB4ICogMiArIDEsIHkgKiAyICsgMSwgeiAqIDIsIHNvdXJjZVJvd1BpdGNo
LCBzb3VyY2VEZXB0aFBpdGNoKTsKKyAgICAgICAgICAgICAgICBjb25zdCBUICpzcmM3ID0gR2V0
UGl4ZWw8VD4oc291cmNlRGF0YSwgeCAqIDIgKyAxLCB5ICogMiArIDEsIHogKiAyICsgMSwgc291
cmNlUm93UGl0Y2gsIHNvdXJjZURlcHRoUGl0Y2gpOworICAgICAgICAgICAgICAgIFQgKmRzdCA9
IEdldFBpeGVsPFQ+KGRlc3REYXRhLCB4LCB5LCB6LCBkZXN0Um93UGl0Y2gsIGRlc3REZXB0aFBp
dGNoKTsKKworICAgICAgICAgICAgICAgIFQgdG1wMCwgdG1wMSwgdG1wMiwgdG1wMywgdG1wNCwg
dG1wNTsKKworICAgICAgICAgICAgICAgIFQ6OmF2ZXJhZ2UoJnRtcDAsIHNyYzAsIHNyYzEpOwor
ICAgICAgICAgICAgICAgIFQ6OmF2ZXJhZ2UoJnRtcDEsIHNyYzIsIHNyYzMpOworICAgICAgICAg
ICAgICAgIFQ6OmF2ZXJhZ2UoJnRtcDIsIHNyYzQsIHNyYzUpOworICAgICAgICAgICAgICAgIFQ6
OmF2ZXJhZ2UoJnRtcDMsIHNyYzYsIHNyYzcpOworCisgICAgICAgICAgICAgICAgVDo6YXZlcmFn
ZSgmdG1wNCwgJnRtcDAsICZ0bXAxKTsKKyAgICAgICAgICAgICAgICBUOjphdmVyYWdlKCZ0bXA1
LCAmdG1wMiwgJnRtcDMpOworCisgICAgICAgICAgICAgICAgVDo6YXZlcmFnZShkc3QsICZ0bXA0
LCAmdG1wNSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKKwordHlwZWRl
ZiB2b2lkICgqTWlwR2VuZXJhdGlvbkZ1bmN0aW9uKShzaXplX3Qgc291cmNlV2lkdGgsIHNpemVf
dCBzb3VyY2VIZWlnaHQsIHNpemVfdCBzb3VyY2VEZXB0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqc291cmNlRGF0YSwgc2l6ZV90IHNvdXJj
ZVJvd1BpdGNoLCBzaXplX3Qgc291cmNlRGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlc3RXaWR0aCwgc2l6ZV90IGRlc3RIZWlnaHQsIHNp
emVfdCBkZXN0RGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQ4X3QgKmRlc3REYXRhLCBzaXplX3QgZGVzdFJvd1BpdGNoLCBzaXplX3QgZGVzdERlcHRoUGl0
Y2gpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0YXRpYyBNaXBHZW5lcmF0aW9uRnVuY3Rp
b24gR2V0TWlwR2VuZXJhdGlvbkZ1bmN0aW9uKHNpemVfdCBzb3VyY2VXaWR0aCwgc2l6ZV90IHNv
dXJjZUhlaWdodCwgc2l6ZV90IHNvdXJjZURlcHRoKQoreworICAgIHVpbnQ4X3QgaW5kZXggPSAo
KHNvdXJjZVdpZHRoID4gMSkgID8gMSA6IDApIHwKKyAgICAgICAgICAgICAgICAgICAgKChzb3Vy
Y2VIZWlnaHQgPiAxKSA/IDIgOiAwKSB8CisgICAgICAgICAgICAgICAgICAgICgoc291cmNlRGVw
dGggPiAxKSAgPyA0IDogMCk7CisKKyAgICBzd2l0Y2ggKGluZGV4KQorICAgIHsKKyAgICAgIGNh
c2UgMDogcmV0dXJuIE5VTEw7CisgICAgICBjYXNlIDE6IHJldHVybiBHZW5lcmF0ZU1pcF9YPFQ+
OyAgIC8vIFcgeCAxIHggMQorICAgICAgY2FzZSAyOiByZXR1cm4gR2VuZXJhdGVNaXBfWTxUPjsg
ICAvLyAxIHggSCB4IDEKKyAgICAgIGNhc2UgMzogcmV0dXJuIEdlbmVyYXRlTWlwX1hZPFQ+OyAg
Ly8gVyB4IEggeCAxCisgICAgICBjYXNlIDQ6IHJldHVybiBHZW5lcmF0ZU1pcF9aPFQ+OyAgIC8v
IDEgeCAxIHggRAorICAgICAgY2FzZSA1OiByZXR1cm4gR2VuZXJhdGVNaXBfWFo8VD47ICAvLyBX
IHggMSB4IEQKKyAgICAgIGNhc2UgNjogcmV0dXJuIEdlbmVyYXRlTWlwX1laPFQ+OyAgLy8gMSB4
IEggeCBECisgICAgICBjYXNlIDc6IHJldHVybiBHZW5lcmF0ZU1pcF9YWVo8VD47IC8vIFcgeCBI
IHggRAorICAgIH0KKworICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisK
K30gIC8vIG5hbWVzcGFjZSBwcml2CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIHZv
aWQgR2VuZXJhdGVNaXAoc2l6ZV90IHNvdXJjZVdpZHRoLCBzaXplX3Qgc291cmNlSGVpZ2h0LCBz
aXplX3Qgc291cmNlRGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90
ICpzb3VyY2VEYXRhLCBzaXplX3Qgc291cmNlUm93UGl0Y2gsIHNpemVfdCBzb3VyY2VEZXB0aFBp
dGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqZGVzdERhdGEsIHNpemVfdCBk
ZXN0Um93UGl0Y2gsIHNpemVfdCBkZXN0RGVwdGhQaXRjaCkKK3sKKyAgICBzaXplX3QgbWlwV2lk
dGggPSBzdGQ6Om1heDxzaXplX3Q+KDEsIHNvdXJjZVdpZHRoID4+IDEpOworICAgIHNpemVfdCBt
aXBIZWlnaHQgPSBzdGQ6Om1heDxzaXplX3Q+KDEsIHNvdXJjZUhlaWdodCA+PiAxKTsKKyAgICBz
aXplX3QgbWlwRGVwdGggPSBzdGQ6Om1heDxzaXplX3Q+KDEsIHNvdXJjZURlcHRoID4+IDEpOwor
CisgICAgcHJpdjo6TWlwR2VuZXJhdGlvbkZ1bmN0aW9uIGdlbmVyYXRpb25GdW5jdGlvbiA9IHBy
aXY6OkdldE1pcEdlbmVyYXRpb25GdW5jdGlvbjxUPihzb3VyY2VXaWR0aCwgc291cmNlSGVpZ2h0
LCBzb3VyY2VEZXB0aCk7CisgICAgQVNTRVJUKGdlbmVyYXRpb25GdW5jdGlvbiAhPSBOVUxMKTsK
KworICAgIGdlbmVyYXRpb25GdW5jdGlvbihzb3VyY2VXaWR0aCwgc291cmNlSGVpZ2h0LCBzb3Vy
Y2VEZXB0aCwgc291cmNlRGF0YSwgc291cmNlUm93UGl0Y2gsIHNvdXJjZURlcHRoUGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICAgIG1pcFdpZHRoLCBtaXBIZWlnaHQsIG1pcERlcHRoLCBkZXN0
RGF0YSwgZGVzdFJvd1BpdGNoLCBkZXN0RGVwdGhQaXRjaCk7Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSBhbmdsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2ltYWdlX3V0aWwvaW1h
Z2Vmb3JtYXRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
aW1hZ2VfdXRpbC9pbWFnZWZvcm1hdHMuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9pbWFnZV91dGlsL2ltYWdlZm9ybWF0cy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxNjg4IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gaW1hZ2Vmb3JtYXRzLmNw
cDogRGVmaW5lcyBpbWFnZSBmb3JtYXQgdHlwZXMgd2l0aCBmdW5jdGlvbnMgZm9yIG1pcCBnZW5l
cmF0aW9uCisvLyBhbmQgY29weWluZy4KKworI2luY2x1ZGUgImltYWdlX3V0aWwvaW1hZ2Vmb3Jt
YXRzLmgiCisKKyNpbmNsdWRlICJjb21tb24vbWF0aHV0aWwuaCIKKworbmFtZXNwYWNlIGFuZ2xl
Cit7CisKK3ZvaWQgTDg6OnJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IEw4ICpzcmMp
Cit7CisgICAgY29uc3QgZmxvYXQgbHVtID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+TCk7
CisgICAgZHN0LT5yZWQgICAgICAgID0gbHVtOworICAgIGRzdC0+Z3JlZW4gICAgICA9IGx1bTsK
KyAgICBkc3QtPmJsdWUgICAgICAgPSBsdW07CisgICAgZHN0LT5hbHBoYSAgICAgID0gMS4wZjsK
K30KKwordm9pZCBMODo6d3JpdGVDb2xvcihMOCAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMp
Cit7CisgICAgZHN0LT5MID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPHVpbnQ4X3Q+KHNyYy0+cmVk
KTsKK30KKwordm9pZCBMODo6YXZlcmFnZShMOCAqZHN0LCBjb25zdCBMOCAqc3JjMSwgY29uc3Qg
TDggKnNyYzIpCit7CisgICAgZHN0LT5MID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+TCwgc3JjMi0+TCk7
Cit9CisKK3ZvaWQgUjg6OnJlYWRDb2xvcihnbDo6Q29sb3JVSSAqZHN0LCBjb25zdCBSOCAqc3Jj
KQoreworICAgIGRzdC0+cmVkICAgPSBzcmMtPlI7CisgICAgZHN0LT5ncmVlbiA9IDA7CisgICAg
ZHN0LT5ibHVlICA9IDA7CisgICAgZHN0LT5hbHBoYSA9IDE7Cit9CisKK3ZvaWQgUjg6OnJlYWRD
b2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFI4ICpzcmMpCit7CisgICAgZHN0LT5yZWQgICA9
IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPlIpOworICAgIGRzdC0+Z3JlZW4gPSAwLjBmOwor
ICAgIGRzdC0+Ymx1ZSAgPSAwLjBmOworICAgIGRzdC0+YWxwaGEgPSAxLjBmOworfQorCit2b2lk
IFI4Ojp3cml0ZUNvbG9yKFI4ICpkc3QsIGNvbnN0IGdsOjpDb2xvclVJICpzcmMpCit7CisgICAg
ZHN0LT5SID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3JjLT5yZWQpOworfQorCit2b2lkIFI4Ojp3
cml0ZUNvbG9yKFI4ICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKK3sKKyAgICBkc3QtPlIg
PSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dWludDhfdD4oc3JjLT5yZWQpOworfQorCit2b2lkIFI4
OjphdmVyYWdlKFI4ICpkc3QsIGNvbnN0IFI4ICpzcmMxLCBjb25zdCBSOCAqc3JjMikKK3sKKyAg
ICBkc3QtPlIgPSBnbDo6YXZlcmFnZShzcmMxLT5SLCBzcmMyLT5SKTsKK30KKwordm9pZCBBODo6
cmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgQTggKnNyYykKK3sKKyAgICBkc3QtPnJl
ZCAgID0gMC4wZjsKKyAgICBkc3QtPmdyZWVuID0gMC4wZjsKKyAgICBkc3QtPmJsdWUgID0gMC4w
ZjsKKyAgICBkc3QtPmFscGhhID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+QSk7Cit9CisK
K3ZvaWQgQTg6OndyaXRlQ29sb3IoQTggKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQorewor
ICAgIGRzdC0+QSA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1aW50OF90PihzcmMtPmFscGhhKTsK
K30KKwordm9pZCBBODo6YXZlcmFnZShBOCAqZHN0LCBjb25zdCBBOCAqc3JjMSwgY29uc3QgQTgg
KnNyYzIpCit7CisgICAgZHN0LT5BID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+QSwgc3JjMi0+QSk7Cit9
CisKK3ZvaWQgTDhBODo6cmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgTDhBOCAqc3Jj
KQoreworICAgIGNvbnN0IGZsb2F0IGx1bSA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkwp
OworICAgIGRzdC0+cmVkICAgICAgICA9IGx1bTsKKyAgICBkc3QtPmdyZWVuICAgICAgPSBsdW07
CisgICAgZHN0LT5ibHVlICAgICAgID0gbHVtOworICAgIGRzdC0+YWxwaGEgICAgICA9IGdsOjpu
b3JtYWxpemVkVG9GbG9hdChzcmMtPkEpOworfQorCit2b2lkIEw4QTg6OndyaXRlQ29sb3IoTDhB
OCAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCit7CisgICAgZHN0LT5MID0gZ2w6OmZsb2F0
VG9Ob3JtYWxpemVkPHVpbnQ4X3Q+KHNyYy0+cmVkKTsKKyAgICBkc3QtPkEgPSBnbDo6ZmxvYXRU
b05vcm1hbGl6ZWQ8dWludDhfdD4oc3JjLT5hbHBoYSk7Cit9CisKK3ZvaWQgTDhBODo6YXZlcmFn
ZShMOEE4ICpkc3QsIGNvbnN0IEw4QTggKnNyYzEsIGNvbnN0IEw4QTggKnNyYzIpCit7CisgICAg
Kih1aW50MTZfdCAqKWRzdCA9ICgoKCoodWludDE2X3QgKilzcmMxIF4gKih1aW50MTZfdCAqKXNy
YzIpICYgMHhGRUZFKSA+PiAxKSArCisgICAgICAgICAgICAgICAgICAgICAgICgqKHVpbnQxNl90
ICopc3JjMSAmICoodWludDE2X3QgKilzcmMyKTsKK30KKwordm9pZCBBOEw4OjpyZWFkQ29sb3Io
Z2w6OkNvbG9yRiAqZHN0LCBjb25zdCBBOEw4ICpzcmMpCit7CisgICAgY29uc3QgZmxvYXQgbHVt
ID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+TCk7CisgICAgZHN0LT5yZWQgICAgICAgID0g
bHVtOworICAgIGRzdC0+Z3JlZW4gICAgICA9IGx1bTsKKyAgICBkc3QtPmJsdWUgICAgICAgPSBs
dW07CisgICAgZHN0LT5hbHBoYSAgICAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+QSk7
Cit9CisKK3ZvaWQgQThMODo6d3JpdGVDb2xvcihBOEw4ICpkc3QsIGNvbnN0IGdsOjpDb2xvckYg
KnNyYykKK3sKKyAgICBkc3QtPkwgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dWludDhfdD4oc3Jj
LT5yZWQpOworICAgIGRzdC0+QSA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1aW50OF90PihzcmMt
PmFscGhhKTsKK30KKwordm9pZCBBOEw4OjphdmVyYWdlKEE4TDggKmRzdCwgY29uc3QgQThMOCAq
c3JjMSwgY29uc3QgQThMOCAqc3JjMikKK3sKKyAgICAqKHVpbnQxNl90ICopZHN0ID0gKCgoKih1
aW50MTZfdCAqKXNyYzEgXiAqKHVpbnQxNl90ICopc3JjMikgJiAweEZFRkUpID4+IDEpICsKKyAg
ICAgICAgICAgICAgICAgICAgICAgKCoodWludDE2X3QgKilzcmMxICYgKih1aW50MTZfdCAqKXNy
YzIpOworfQorCit2b2lkIFI4Rzg6OnJlYWRDb2xvcihnbDo6Q29sb3JVSSAqZHN0LCBjb25zdCBS
OEc4ICpzcmMpCit7CisgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKKyAgICBkc3QtPmdyZWVuID0g
c3JjLT5HOworICAgIGRzdC0+Ymx1ZSAgPSAwOworICAgIGRzdC0+YWxwaGEgPSAxOworfQorCit2
b2lkIFI4Rzg6OnJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFI4RzggKnNyYykKK3sK
KyAgICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7CisgICAgZHN0
LT5ncmVlbiA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkcpOworICAgIGRzdC0+Ymx1ZSAg
PSAwLjBmOworICAgIGRzdC0+YWxwaGEgPSAxLjBmOworfQorCit2b2lkIFI4Rzg6OndyaXRlQ29s
b3IoUjhHOCAqZHN0LCBjb25zdCBnbDo6Q29sb3JVSSAqc3JjKQoreworICAgIGRzdC0+UiA9IHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KHNyYy0+cmVkKTsKKyAgICBkc3QtPkcgPSBzdGF0aWNfY2FzdDx1
aW50OF90PihzcmMtPmdyZWVuKTsKK30KKwordm9pZCBSOEc4Ojp3cml0ZUNvbG9yKFI4RzggKmRz
dCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQoreworICAgIGRzdC0+UiA9IGdsOjpmbG9hdFRvTm9y
bWFsaXplZDx1aW50OF90PihzcmMtPnJlZCk7CisgICAgZHN0LT5HID0gZ2w6OmZsb2F0VG9Ob3Jt
YWxpemVkPHVpbnQ4X3Q+KHNyYy0+Z3JlZW4pOworfQorCit2b2lkIFI4Rzg6OmF2ZXJhZ2UoUjhH
OCAqZHN0LCBjb25zdCBSOEc4ICpzcmMxLCBjb25zdCBSOEc4ICpzcmMyKQoreworICAgICoodWlu
dDE2X3QgKilkc3QgPSAoKCgqKHVpbnQxNl90ICopc3JjMSBeICoodWludDE2X3QgKilzcmMyKSAm
IDB4RkVGRSkgPj4gMSkgKworICAgICAgICAgICAgICAgICAgICAgICAoKih1aW50MTZfdCAqKXNy
YzEgJiAqKHVpbnQxNl90ICopc3JjMik7Cit9CisKK3ZvaWQgUjhHOEI4OjpyZWFkQ29sb3IoZ2w6
OkNvbG9yVUkgKmRzdCwgY29uc3QgUjhHOEI4ICpzcmMpCit7CisgICAgZHN0LT5yZWQgICA9IHNy
Yy0+UjsKKyAgICBkc3QtPmdyZWVuID0gc3JjLT5HOworICAgIGRzdC0+Ymx1ZSAgPSBzcmMtPkc7
CisgICAgZHN0LT5hbHBoYSA9IDE7Cit9CisKK3ZvaWQgUjhHOEI4OjpyZWFkQ29sb3IoZ2w6OkNv
bG9yRiAqZHN0LCBjb25zdCBSOEc4QjggKnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gZ2w6Om5v
cm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7CisgICAgZHN0LT5ncmVlbiA9IGdsOjpub3JtYWxpemVk
VG9GbG9hdChzcmMtPkcpOworICAgIGRzdC0+Ymx1ZSAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQo
c3JjLT5CKTsKKyAgICBkc3QtPmFscGhhID0gMS4wZjsKK30KKwordm9pZCBSOEc4Qjg6OndyaXRl
Q29sb3IoUjhHOEI4ICpkc3QsIGNvbnN0IGdsOjpDb2xvclVJICpzcmMpCit7CisgICAgZHN0LT5S
ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3JjLT5yZWQpOworICAgIGRzdC0+RyA9IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KHNyYy0+Z3JlZW4pOworICAgIGRzdC0+QiA9IHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KHNyYy0+Ymx1ZSk7Cit9CisKK3ZvaWQgUjhHOEI4Ojp3cml0ZUNvbG9yKFI4RzhCOCAqZHN0
LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCit7CisgICAgZHN0LT5SID0gZ2w6OmZsb2F0VG9Ob3Jt
YWxpemVkPHVpbnQ4X3Q+KHNyYy0+cmVkKTsKKyAgICBkc3QtPkcgPSBnbDo6ZmxvYXRUb05vcm1h
bGl6ZWQ8dWludDhfdD4oc3JjLT5ncmVlbik7CisgICAgZHN0LT5CID0gZ2w6OmZsb2F0VG9Ob3Jt
YWxpemVkPHVpbnQ4X3Q+KHNyYy0+Ymx1ZSk7Cit9CisKK3ZvaWQgUjhHOEI4OjphdmVyYWdlKFI4
RzhCOCAqZHN0LCBjb25zdCBSOEc4QjggKnNyYzEsIGNvbnN0IFI4RzhCOCAqc3JjMikKK3sKKyAg
ICBkc3QtPlIgPSBnbDo6YXZlcmFnZShzcmMxLT5SLCBzcmMyLT5SKTsKKyAgICBkc3QtPkcgPSBn
bDo6YXZlcmFnZShzcmMxLT5HLCBzcmMyLT5HKTsKKyAgICBkc3QtPkIgPSBnbDo6YXZlcmFnZShz
cmMxLT5CLCBzcmMyLT5CKTsKK30KKwordm9pZCBCOEc4Ujg6OnJlYWRDb2xvcihnbDo6Q29sb3JV
SSAqZHN0LCBjb25zdCBCOEc4UjggKnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gc3JjLT5SOwor
ICAgIGRzdC0+Z3JlZW4gPSBzcmMtPkc7CisgICAgZHN0LT5ibHVlICA9IHNyYy0+RzsKKyAgICBk
c3QtPmFscGhhID0gMTsKK30KKwordm9pZCBCOEc4Ujg6OnJlYWRDb2xvcihnbDo6Q29sb3JGICpk
c3QsIGNvbnN0IEI4RzhSOCAqc3JjKQoreworICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXpl
ZFRvRmxvYXQoc3JjLT5SKTsKKyAgICBkc3QtPmdyZWVuID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0
KHNyYy0+Ryk7CisgICAgZHN0LT5ibHVlICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkIp
OworICAgIGRzdC0+YWxwaGEgPSAxLjBmOworfQorCit2b2lkIEI4RzhSODo6d3JpdGVDb2xvcihC
OEc4UjggKmRzdCwgY29uc3QgZ2w6OkNvbG9yVUkgKnNyYykKK3sKKyAgICBkc3QtPlIgPSBzdGF0
aWNfY2FzdDx1aW50OF90PihzcmMtPnJlZCk7CisgICAgZHN0LT5HID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oc3JjLT5ncmVlbik7CisgICAgZHN0LT5CID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3Jj
LT5ibHVlKTsKK30KKwordm9pZCBCOEc4Ujg6OndyaXRlQ29sb3IoQjhHOFI4ICpkc3QsIGNvbnN0
IGdsOjpDb2xvckYgKnNyYykKK3sKKyAgICBkc3QtPlIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8
dWludDhfdD4oc3JjLT5yZWQpOworICAgIGRzdC0+RyA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1
aW50OF90PihzcmMtPmdyZWVuKTsKKyAgICBkc3QtPkIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8
dWludDhfdD4oc3JjLT5ibHVlKTsKK30KKwordm9pZCBCOEc4Ujg6OmF2ZXJhZ2UoQjhHOFI4ICpk
c3QsIGNvbnN0IEI4RzhSOCAqc3JjMSwgY29uc3QgQjhHOFI4ICpzcmMyKQoreworICAgIGRzdC0+
UiA9IGdsOjphdmVyYWdlKHNyYzEtPlIsIHNyYzItPlIpOworICAgIGRzdC0+RyA9IGdsOjphdmVy
YWdlKHNyYzEtPkcsIHNyYzItPkcpOworICAgIGRzdC0+QiA9IGdsOjphdmVyYWdlKHNyYzEtPkIs
IHNyYzItPkIpOworfQorCit2b2lkIFI1RzZCNTo6cmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwg
Y29uc3QgUjVHNkI1ICpzcmMpCit7CisgICAgZHN0LT5yZWQgICA9IGdsOjpub3JtYWxpemVkVG9G
bG9hdDw1PihnbDo6Z2V0U2hpZnRlZERhdGE8NSwgMTE+KHNyYy0+UkdCKSk7CisgICAgZHN0LT5n
cmVlbiA9IGdsOjpub3JtYWxpemVkVG9GbG9hdDw2PihnbDo6Z2V0U2hpZnRlZERhdGE8NiwgNT4o
c3JjLT5SR0IpKTsKKyAgICBkc3QtPmJsdWUgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0PDU+KGds
OjpnZXRTaGlmdGVkRGF0YTw1LCAwPihzcmMtPlJHQikpOworICAgIGRzdC0+YWxwaGEgPSAxLjBm
OworfQorCit2b2lkIFI1RzZCNTo6d3JpdGVDb2xvcihSNUc2QjUgKmRzdCwgY29uc3QgZ2w6OkNv
bG9yRiAqc3JjKQoreworICAgIGRzdC0+UkdCID0gZ2w6OnNoaWZ0RGF0YTw1LCAxMT4oZ2w6OmZs
b2F0VG9Ob3JtYWxpemVkPDUsIHVpbnQxNl90PihzcmMtPnJlZCkpIHwKKyAgICAgICAgICAgICAg
IGdsOjpzaGlmdERhdGE8NiwgNT4oZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPDYsIHVpbnQxNl90Pihz
cmMtPmdyZWVuKSkgfAorICAgICAgICAgICAgICAgZ2w6OnNoaWZ0RGF0YTw1LCAwPihnbDo6Zmxv
YXRUb05vcm1hbGl6ZWQ8NSwgdWludDE2X3Q+KHNyYy0+Ymx1ZSkpOworfQorCit2b2lkIFI1RzZC
NTo6YXZlcmFnZShSNUc2QjUgKmRzdCwgY29uc3QgUjVHNkI1ICpzcmMxLCBjb25zdCBSNUc2QjUg
KnNyYzIpCit7CisgICAgZHN0LT5SR0IgPSBnbDo6c2hpZnREYXRhPDUsIDExPihnbDo6YXZlcmFn
ZShnbDo6Z2V0U2hpZnRlZERhdGE8NSwgMTE+KHNyYzEtPlJHQiksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6Z2V0U2hpZnRlZERhdGE8NSwgMTE+
KHNyYzItPlJHQikpKSB8CisgICAgICAgICAgICAgICBnbDo6c2hpZnREYXRhPDYsIDU+KGdsOjph
dmVyYWdlKGdsOjpnZXRTaGlmdGVkRGF0YTw2LCA1PihzcmMxLT5SR0IpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6Z2V0U2hpZnRlZERhdGE8Niwg
NT4oc3JjMi0+UkdCKSkpIHwKKyAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NSwgMD4oZ2w6
OmF2ZXJhZ2UoZ2w6OmdldFNoaWZ0ZWREYXRhPDUsIDA+KHNyYzEtPlJHQiksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpnZXRTaGlmdGVkRGF0YTw1
LCAwPihzcmMyLT5SR0IpKSk7Cit9CisKK3ZvaWQgQjVHNlI1OjpyZWFkQ29sb3IoZ2w6OkNvbG9y
RiAqZHN0LCBjb25zdCBCNUc2UjUgKnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1h
bGl6ZWRUb0Zsb2F0PDU+KGdsOjpnZXRTaGlmdGVkRGF0YTw1LCAxMT4oc3JjLT5CR1IpKTsKKyAg
ICBkc3QtPmdyZWVuID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0PDY+KGdsOjpnZXRTaGlmdGVkRGF0
YTw2LCA1PihzcmMtPkJHUikpOworICAgIGRzdC0+Ymx1ZSAgPSBnbDo6bm9ybWFsaXplZFRvRmxv
YXQ8NT4oZ2w6OmdldFNoaWZ0ZWREYXRhPDUsIDA+KHNyYy0+QkdSKSk7CisgICAgZHN0LT5hbHBo
YSA9IDEuMGY7Cit9CisKK3ZvaWQgQjVHNlI1Ojp3cml0ZUNvbG9yKEI1RzZSNSAqZHN0LCBjb25z
dCBnbDo6Q29sb3JGICpzcmMpCit7CisgICAgZHN0LT5CR1IgPSBnbDo6c2hpZnREYXRhPDUsIDA+
KGdsOjpmbG9hdFRvTm9ybWFsaXplZDw1LCB1bnNpZ25lZCBzaG9ydD4oc3JjLT5ibHVlKSkgfAor
ICAgICAgICAgICAgICAgZ2w6OnNoaWZ0RGF0YTw2LCA1PihnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8
NiwgdW5zaWduZWQgc2hvcnQ+KHNyYy0+Z3JlZW4pKSB8CisgICAgICAgICAgICAgICBnbDo6c2hp
ZnREYXRhPDUsIDExPihnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8NSwgdW5zaWduZWQgc2hvcnQ+KHNy
Yy0+cmVkKSk7Cit9CisKK3ZvaWQgQjVHNlI1OjphdmVyYWdlKEI1RzZSNSAqZHN0LCBjb25zdCBC
NUc2UjUgKnNyYzEsIGNvbnN0IEI1RzZSNSAqc3JjMikKK3sKKyAgICBkc3QtPkJHUiA9IGdsOjpz
aGlmdERhdGE8NSwgMTE+KGdsOjphdmVyYWdlKGdsOjpnZXRTaGlmdGVkRGF0YTw1LCAxMT4oc3Jj
MS0+QkdSKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdsOjpnZXRTaGlmdGVkRGF0YTw1LCAxMT4oc3JjMi0+QkdSKSkpIHwKKyAgICAgICAgICAgICAg
IGdsOjpzaGlmdERhdGE8NiwgNT4oZ2w6OmF2ZXJhZ2UoZ2w6OmdldFNoaWZ0ZWREYXRhPDYsIDU+
KHNyYzEtPkJHUiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdsOjpnZXRTaGlmdGVkRGF0YTw2LCA1PihzcmMyLT5CR1IpKSkgfAorICAgICAgICAgICAg
ICAgZ2w6OnNoaWZ0RGF0YTw1LCAwPihnbDo6YXZlcmFnZShnbDo6Z2V0U2hpZnRlZERhdGE8NSwg
MD4oc3JjMS0+QkdSKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2w6OmdldFNoaWZ0ZWREYXRhPDUsIDA+KHNyYzItPkJHUikpKTsKK30KKwordm9pZCBB
OFI4RzhCODo6cmVhZENvbG9yKGdsOjpDb2xvclVJICpkc3QsIGNvbnN0IEE4UjhHOEI4ICpzcmMp
Cit7CisgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKKyAgICBkc3QtPmdyZWVuID0gc3JjLT5HOwor
ICAgIGRzdC0+Ymx1ZSAgPSBzcmMtPkI7CisgICAgZHN0LT5hbHBoYSA9IHNyYy0+QTsKK30KKwor
dm9pZCBBOFI4RzhCODo6cmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgQThSOEc4Qjgg
KnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7
CisgICAgZHN0LT5ncmVlbiA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkcpOworICAgIGRz
dC0+Ymx1ZSAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5CKTsKKyAgICBkc3QtPmFscGhh
ID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+QSk7Cit9CisKK3ZvaWQgQThSOEc4Qjg6Ondy
aXRlQ29sb3IoQThSOEc4QjggKmRzdCwgY29uc3QgZ2w6OkNvbG9yVUkgKnNyYykKK3sKKyAgICBk
c3QtPlIgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzcmMtPnJlZCk7CisgICAgZHN0LT5HID0gc3Rh
dGljX2Nhc3Q8dWludDhfdD4oc3JjLT5ncmVlbik7CisgICAgZHN0LT5CID0gc3RhdGljX2Nhc3Q8
dWludDhfdD4oc3JjLT5ibHVlKTsKKyAgICBkc3QtPkEgPSBzdGF0aWNfY2FzdDx1aW50OF90Pihz
cmMtPmFscGhhKTsKK30KKwordm9pZCBBOFI4RzhCODo6d3JpdGVDb2xvcihBOFI4RzhCOCAqZHN0
LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCit7CisgICAgZHN0LT5SID0gZ2w6OmZsb2F0VG9Ob3Jt
YWxpemVkPHVpbnQ4X3Q+KHNyYy0+cmVkKTsKKyAgICBkc3QtPkcgPSBnbDo6ZmxvYXRUb05vcm1h
bGl6ZWQ8dWludDhfdD4oc3JjLT5ncmVlbik7CisgICAgZHN0LT5CID0gZ2w6OmZsb2F0VG9Ob3Jt
YWxpemVkPHVpbnQ4X3Q+KHNyYy0+Ymx1ZSk7CisgICAgZHN0LT5BID0gZ2w6OmZsb2F0VG9Ob3Jt
YWxpemVkPHVpbnQ4X3Q+KHNyYy0+YWxwaGEpOworfQorCit2b2lkIEE4UjhHOEI4OjphdmVyYWdl
KEE4UjhHOEI4ICpkc3QsIGNvbnN0IEE4UjhHOEI4ICpzcmMxLCBjb25zdCBBOFI4RzhCOCAqc3Jj
MikKK3sKKyAgICAqKHVpbnQzMl90ICopZHN0ID0gKCgoKih1aW50MzJfdCAqKXNyYzEgXiAqKHVp
bnQzMl90ICopc3JjMikgJiAweEZFRkVGRUZFKSA+PiAxKSArCisgICAgICAgICAgICAgICAgICAg
ICAgICgqKHVpbnQzMl90ICopc3JjMSAmICoodWludDMyX3QgKilzcmMyKTsKK30KKwordm9pZCBS
OEc4QjhBODo6cmVhZENvbG9yKGdsOjpDb2xvclVJICpkc3QsIGNvbnN0IFI4RzhCOEE4ICpzcmMp
Cit7CisgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKKyAgICBkc3QtPmdyZWVuID0gc3JjLT5HOwor
ICAgIGRzdC0+Ymx1ZSAgPSBzcmMtPkI7CisgICAgZHN0LT5hbHBoYSA9IHNyYy0+QTsKK30KKwor
dm9pZCBSOEc4QjhBODo6cmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjhHOEI4QTgg
KnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7
CisgICAgZHN0LT5ncmVlbiA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkcpOworICAgIGRz
dC0+Ymx1ZSAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5CKTsKKyAgICBkc3QtPmFscGhh
ID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+QSk7Cit9CisKK3ZvaWQgUjhHOEI4QTg6Ondy
aXRlQ29sb3IoUjhHOEI4QTggKmRzdCwgY29uc3QgZ2w6OkNvbG9yVUkgKnNyYykKK3sKKyAgICBk
c3QtPlIgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzcmMtPnJlZCk7CisgICAgZHN0LT5HID0gc3Rh
dGljX2Nhc3Q8dWludDhfdD4oc3JjLT5ncmVlbik7CisgICAgZHN0LT5CID0gc3RhdGljX2Nhc3Q8
dWludDhfdD4oc3JjLT5ibHVlKTsKKyAgICBkc3QtPkEgPSBzdGF0aWNfY2FzdDx1aW50OF90Pihz
cmMtPmFscGhhKTsKK30KKwordm9pZCBSOEc4QjhBODo6d3JpdGVDb2xvcihSOEc4QjhBOCAqZHN0
LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCit7CisgICAgZHN0LT5SID0gZ2w6OmZsb2F0VG9Ob3Jt
YWxpemVkPHVpbnQ4X3Q+KHNyYy0+cmVkKTsKKyAgICBkc3QtPkcgPSBnbDo6ZmxvYXRUb05vcm1h
bGl6ZWQ8dWludDhfdD4oc3JjLT5ncmVlbik7CisgICAgZHN0LT5CID0gZ2w6OmZsb2F0VG9Ob3Jt
YWxpemVkPHVpbnQ4X3Q+KHNyYy0+Ymx1ZSk7CisgICAgZHN0LT5BID0gZ2w6OmZsb2F0VG9Ob3Jt
YWxpemVkPHVpbnQ4X3Q+KHNyYy0+YWxwaGEpOworfQorCit2b2lkIFI4RzhCOEE4OjphdmVyYWdl
KFI4RzhCOEE4ICpkc3QsIGNvbnN0IFI4RzhCOEE4ICpzcmMxLCBjb25zdCBSOEc4QjhBOCAqc3Jj
MikKK3sKKyAgICAqKHVpbnQzMl90ICopZHN0ID0gKCgoKih1aW50MzJfdCAqKXNyYzEgXiAqKHVp
bnQzMl90ICopc3JjMikgJiAweEZFRkVGRUZFKSA+PiAxKSArCisgICAgICAgICAgICAgICAgICAg
ICAgICgqKHVpbnQzMl90ICopc3JjMSAmICoodWludDMyX3QgKilzcmMyKTsKK30KKwordm9pZCBC
OEc4UjhBODo6cmVhZENvbG9yKGdsOjpDb2xvclVJICpkc3QsIGNvbnN0IEI4RzhSOEE4ICpzcmMp
Cit7CisgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKKyAgICBkc3QtPmdyZWVuID0gc3JjLT5HOwor
ICAgIGRzdC0+Ymx1ZSAgPSBzcmMtPkI7CisgICAgZHN0LT5hbHBoYSA9IHNyYy0+QTsKK30KKwor
dm9pZCBCOEc4UjhBODo6cmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgQjhHOFI4QTgg
KnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7
CisgICAgZHN0LT5ncmVlbiA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkcpOworICAgIGRz
dC0+Ymx1ZSAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5CKTsKKyAgICBkc3QtPmFscGhh
ID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+QSk7Cit9CisKK3ZvaWQgQjhHOFI4QTg6Ondy
aXRlQ29sb3IoQjhHOFI4QTggKmRzdCwgY29uc3QgZ2w6OkNvbG9yVUkgKnNyYykKK3sKKyAgICBk
c3QtPlIgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzcmMtPnJlZCk7CisgICAgZHN0LT5HID0gc3Rh
dGljX2Nhc3Q8dWludDhfdD4oc3JjLT5ncmVlbik7CisgICAgZHN0LT5CID0gc3RhdGljX2Nhc3Q8
dWludDhfdD4oc3JjLT5ibHVlKTsKKyAgICBkc3QtPkEgPSBzdGF0aWNfY2FzdDx1aW50OF90Pihz
cmMtPmFscGhhKTsKK30KKwordm9pZCBCOEc4UjhBODo6d3JpdGVDb2xvcihCOEc4UjhBOCAqZHN0
LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCit7CisgICAgZHN0LT5SID0gZ2w6OmZsb2F0VG9Ob3Jt
YWxpemVkPHVpbnQ4X3Q+KHNyYy0+cmVkKTsKKyAgICBkc3QtPkcgPSBnbDo6ZmxvYXRUb05vcm1h
bGl6ZWQ8dWludDhfdD4oc3JjLT5ncmVlbik7CisgICAgZHN0LT5CID0gZ2w6OmZsb2F0VG9Ob3Jt
YWxpemVkPHVpbnQ4X3Q+KHNyYy0+Ymx1ZSk7CisgICAgZHN0LT5BID0gZ2w6OmZsb2F0VG9Ob3Jt
YWxpemVkPHVpbnQ4X3Q+KHNyYy0+YWxwaGEpOworfQorCit2b2lkIEI4RzhSOEE4OjphdmVyYWdl
KEI4RzhSOEE4ICpkc3QsIGNvbnN0IEI4RzhSOEE4ICpzcmMxLCBjb25zdCBCOEc4UjhBOCAqc3Jj
MikKK3sKKyAgICAqKHVpbnQzMl90ICopZHN0ID0gKCgoKih1aW50MzJfdCAqKXNyYzEgXiAqKHVp
bnQzMl90ICopc3JjMikgJiAweEZFRkVGRUZFKSA+PiAxKSArCisgICAgICAgICAgICAgICAgICAg
ICAgICgqKHVpbnQzMl90ICopc3JjMSAmICoodWludDMyX3QgKilzcmMyKTsKK30KKwordm9pZCBC
OEc4UjhYODo6cmVhZENvbG9yKGdsOjpDb2xvclVJICpkc3QsIGNvbnN0IEI4RzhSOFg4ICpzcmMp
Cit7CisgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKKyAgICBkc3QtPmdyZWVuID0gc3JjLT5HOwor
ICAgIGRzdC0+Ymx1ZSAgPSBzcmMtPkI7CisgICAgZHN0LT5hbHBoYSA9IDE7Cit9CisKK3ZvaWQg
QjhHOFI4WDg6OnJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IEI4RzhSOFg4ICpzcmMp
Cit7CisgICAgZHN0LT5yZWQgICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPlIpOworICAg
IGRzdC0+Z3JlZW4gPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5HKTsKKyAgICBkc3QtPmJs
dWUgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Qik7CisgICAgZHN0LT5hbHBoYSA9IDEu
MGY7Cit9CisKK3ZvaWQgQjhHOFI4WDg6OndyaXRlQ29sb3IoQjhHOFI4WDggKmRzdCwgY29uc3Qg
Z2w6OkNvbG9yVUkgKnNyYykKK3sKKyAgICBkc3QtPlIgPSBzdGF0aWNfY2FzdDx1aW50OF90Pihz
cmMtPnJlZCk7CisgICAgZHN0LT5HID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3JjLT5ncmVlbik7
CisgICAgZHN0LT5CID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3JjLT5ibHVlKTsKKyAgICBkc3Qt
PlggPSAyNTU7Cit9CisKK3ZvaWQgQjhHOFI4WDg6OndyaXRlQ29sb3IoQjhHOFI4WDggKmRzdCwg
Y29uc3QgZ2w6OkNvbG9yRiAqc3JjKQoreworICAgIGRzdC0+UiA9IGdsOjpmbG9hdFRvTm9ybWFs
aXplZDx1aW50OF90PihzcmMtPnJlZCk7CisgICAgZHN0LT5HID0gZ2w6OmZsb2F0VG9Ob3JtYWxp
emVkPHVpbnQ4X3Q+KHNyYy0+Z3JlZW4pOworICAgIGRzdC0+QiA9IGdsOjpmbG9hdFRvTm9ybWFs
aXplZDx1aW50OF90PihzcmMtPmJsdWUpOworICAgIGRzdC0+WCA9IDI1NTsKK30KKwordm9pZCBC
OEc4UjhYODo6YXZlcmFnZShCOEc4UjhYOCAqZHN0LCBjb25zdCBCOEc4UjhYOCAqc3JjMSwgY29u
c3QgQjhHOFI4WDggKnNyYzIpCit7CisgICAgKih1aW50MzJfdCAqKWRzdCA9ICgoKCoodWludDMy
X3QgKilzcmMxIF4gKih1aW50MzJfdCAqKXNyYzIpICYgMHhGRUZFRkVGRSkgPj4gMSkgKworICAg
ICAgICAgICAgICAgICAgICAgICAoKih1aW50MzJfdCAqKXNyYzEgJiAqKHVpbnQzMl90ICopc3Jj
Mik7CisgICAgZHN0LT5YID0gMjU1OworfQorCit2b2lkIEExUjVHNUI1OjpyZWFkQ29sb3IoZ2w6
OkNvbG9yRiAqZHN0LCBjb25zdCBBMVI1RzVCNSAqc3JjKQoreworICAgIGRzdC0+YWxwaGEgPSBn
bDo6bm9ybWFsaXplZFRvRmxvYXQ8MT4oZ2w6OmdldFNoaWZ0ZWREYXRhPDEsIDE1PihzcmMtPkFS
R0IpKTsKKyAgICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0PDU+KGdsOjpnZXRT
aGlmdGVkRGF0YTw1LCAxMD4oc3JjLT5BUkdCKSk7CisgICAgZHN0LT5ncmVlbiA9IGdsOjpub3Jt
YWxpemVkVG9GbG9hdDw1PihnbDo6Z2V0U2hpZnRlZERhdGE8NSwgNT4oc3JjLT5BUkdCKSk7Cisg
ICAgZHN0LT5ibHVlICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdDw1PihnbDo6Z2V0U2hpZnRlZERh
dGE8NSwgMD4oc3JjLT5BUkdCKSk7Cit9CisKK3ZvaWQgQTFSNUc1QjU6OndyaXRlQ29sb3IoQTFS
NUc1QjUgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQoreworICAgIGRzdC0+QVJHQiA9IGds
OjpzaGlmdERhdGE8MSwgMTU+KGdsOjpmbG9hdFRvTm9ybWFsaXplZDwxLCB1aW50MTZfdD4oc3Jj
LT5hbHBoYSkpIHwKKyAgICAgICAgICAgICAgICBnbDo6c2hpZnREYXRhPDUsIDEwPihnbDo6Zmxv
YXRUb05vcm1hbGl6ZWQ8NSwgdWludDE2X3Q+KHNyYy0+cmVkKSkgfAorICAgICAgICAgICAgICAg
IGdsOjpzaGlmdERhdGE8NSwgNT4oZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPDUsIHVpbnQxNl90Pihz
cmMtPmdyZWVuKSkgfAorICAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NSwgMD4oZ2w6OmZs
b2F0VG9Ob3JtYWxpemVkPDUsIHVpbnQxNl90PihzcmMtPmJsdWUpKTsKK30KKwordm9pZCBBMVI1
RzVCNTo6YXZlcmFnZShBMVI1RzVCNSAqZHN0LCBjb25zdCBBMVI1RzVCNSAqc3JjMSwgY29uc3Qg
QTFSNUc1QjUgKnNyYzIpCit7CisgICAgZHN0LT5BUkdCID0gZ2w6OnNoaWZ0RGF0YTwxLCAxNT4o
Z2w6OmF2ZXJhZ2UoZ2w6OmdldFNoaWZ0ZWREYXRhPDEsIDE1PihzcmMxLT5BUkdCKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6Z2V0U2hpZnRl
ZERhdGE8MSwgMTU+KHNyYzItPkFSR0IpKSkgfAorICAgICAgICAgICAgICAgIGdsOjpzaGlmdERh
dGE8NSwgMTA+KGdsOjphdmVyYWdlKGdsOjpnZXRTaGlmdGVkRGF0YTw1LCAxMD4oc3JjMS0+QVJH
QiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6
OmdldFNoaWZ0ZWREYXRhPDUsIDEwPihzcmMyLT5BUkdCKSkpIHwKKyAgICAgICAgICAgICAgICBn
bDo6c2hpZnREYXRhPDUsIDU+KGdsOjphdmVyYWdlKGdsOjpnZXRTaGlmdGVkRGF0YTw1LCA1Pihz
cmMxLT5BUkdCKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdsOjpnZXRTaGlmdGVkRGF0YTw1LCA1PihzcmMyLT5BUkdCKSkpIHwKKyAgICAgICAgICAg
ICAgICBnbDo6c2hpZnREYXRhPDUsIDA+KGdsOjphdmVyYWdlKGdsOjpnZXRTaGlmdGVkRGF0YTw1
LCAwPihzcmMxLT5BUkdCKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdsOjpnZXRTaGlmdGVkRGF0YTw1LCAwPihzcmMyLT5BUkdCKSkpOworfQorCit2
b2lkIFI1RzVCNUExOjpyZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSNUc1QjVBMSAq
c3JjKQoreworICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQ8NT4oZ2w6Omdl
dFNoaWZ0ZWREYXRhPDUsIDExPihzcmMtPlJHQkEpKTsKKyAgICBkc3QtPmdyZWVuID0gZ2w6Om5v
cm1hbGl6ZWRUb0Zsb2F0PDU+KGdsOjpnZXRTaGlmdGVkRGF0YTw1LCA2PihzcmMtPlJHQkEpKTsK
KyAgICBkc3QtPmJsdWUgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0PDU+KGdsOjpnZXRTaGlmdGVk
RGF0YTw1LCAxPihzcmMtPlJHQkEpKTsKKyAgICBkc3QtPmFscGhhID0gZ2w6Om5vcm1hbGl6ZWRU
b0Zsb2F0PDE+KGdsOjpnZXRTaGlmdGVkRGF0YTwxLCAwPihzcmMtPlJHQkEpKTsKK30KKwordm9p
ZCBSNUc1QjVBMTo6d3JpdGVDb2xvcihSNUc1QjVBMSAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpz
cmMpCit7CisgICAgZHN0LT5SR0JBID0gZ2w6OnNoaWZ0RGF0YTw1LCAxMT4oZ2w6OmZsb2F0VG9O
b3JtYWxpemVkPDUsIHVpbnQxNl90PihzcmMtPnJlZCkpIHwKKyAgICAgICAgICAgICAgICBnbDo6
c2hpZnREYXRhPDUsIDY+KGdsOjpmbG9hdFRvTm9ybWFsaXplZDw1LCB1aW50MTZfdD4oc3JjLT5n
cmVlbikpIHwKKyAgICAgICAgICAgICAgICBnbDo6c2hpZnREYXRhPDUsIDE+KGdsOjpmbG9hdFRv
Tm9ybWFsaXplZDw1LCB1aW50MTZfdD4oc3JjLT5ibHVlKSkgfAorICAgICAgICAgICAgICAgIGds
OjpzaGlmdERhdGE8MSwgMD4oZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPDEsIHVpbnQxNl90PihzcmMt
PmFscGhhKSk7Cit9CisKK3ZvaWQgUjVHNUI1QTE6OmF2ZXJhZ2UoUjVHNUI1QTEgKmRzdCwgY29u
c3QgUjVHNUI1QTEgKnNyYzEsIGNvbnN0IFI1RzVCNUExICpzcmMyKQoreworICAgIGRzdC0+UkdC
QSA9IGdsOjpzaGlmdERhdGE8NSwgMTE+KGdsOjphdmVyYWdlKGdsOjpnZXRTaGlmdGVkRGF0YTw1
LCAxMT4oc3JjMS0+UkdCQSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2w6OmdldFNoaWZ0ZWREYXRhPDUsIDExPihzcmMyLT5SR0JBKSkpIHwKKyAg
ICAgICAgICAgICAgICBnbDo6c2hpZnREYXRhPDUsIDY+KGdsOjphdmVyYWdlKGdsOjpnZXRTaGlm
dGVkRGF0YTw1LCA2PihzcmMxLT5SR0JBKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdsOjpnZXRTaGlmdGVkRGF0YTw1LCA2PihzcmMyLT5SR0JBKSkp
IHwKKyAgICAgICAgICAgICAgICBnbDo6c2hpZnREYXRhPDUsIDE+KGdsOjphdmVyYWdlKGdsOjpn
ZXRTaGlmdGVkRGF0YTw1LCAxPihzcmMxLT5SR0JBKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpnZXRTaGlmdGVkRGF0YTw1LCAxPihzcmMyLT5S
R0JBKSkpIHwKKyAgICAgICAgICAgICAgICBnbDo6c2hpZnREYXRhPDEsIDA+KGdsOjphdmVyYWdl
KGdsOjpnZXRTaGlmdGVkRGF0YTwxLCAwPihzcmMxLT5SR0JBKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpnZXRTaGlmdGVkRGF0YTwxLCAwPihz
cmMyLT5SR0JBKSkpOworfQorCit2b2lkIFI0RzRCNEE0OjpyZWFkQ29sb3IoZ2w6OkNvbG9yRiAq
ZHN0LCBjb25zdCBSNEc0QjRBNCAqc3JjKQoreworICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFs
aXplZFRvRmxvYXQ8ND4oZ2w6OmdldFNoaWZ0ZWREYXRhPDQsIDEyPihzcmMtPlJHQkEpKTsKKyAg
ICBkc3QtPmdyZWVuID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0PDQ+KGdsOjpnZXRTaGlmdGVkRGF0
YTw0LCA4PihzcmMtPlJHQkEpKTsKKyAgICBkc3QtPmJsdWUgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zs
b2F0PDQ+KGdsOjpnZXRTaGlmdGVkRGF0YTw0LCA0PihzcmMtPlJHQkEpKTsKKyAgICBkc3QtPmFs
cGhhID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0PDQ+KGdsOjpnZXRTaGlmdGVkRGF0YTw0LCAwPihz
cmMtPlJHQkEpKTsKK30KKwordm9pZCBSNEc0QjRBNDo6d3JpdGVDb2xvcihSNEc0QjRBNCAqZHN0
LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCit7CisgICAgZHN0LT5SR0JBID0gZ2w6OnNoaWZ0RGF0
YTw0LCAxMj4oZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPDQsIHVpbnQxNl90PihzcmMtPnJlZCkpIHwK
KyAgICAgICAgICAgICAgICBnbDo6c2hpZnREYXRhPDQsIDg+KGdsOjpmbG9hdFRvTm9ybWFsaXpl
ZDw0LCB1aW50MTZfdD4oc3JjLT5ncmVlbikpIHwKKyAgICAgICAgICAgICAgICBnbDo6c2hpZnRE
YXRhPDQsIDQ+KGdsOjpmbG9hdFRvTm9ybWFsaXplZDw0LCB1aW50MTZfdD4oc3JjLT5ibHVlKSkg
fAorICAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NCwgMD4oZ2w6OmZsb2F0VG9Ob3JtYWxp
emVkPDQsIHVpbnQxNl90PihzcmMtPmFscGhhKSk7Cit9CisKK3ZvaWQgUjRHNEI0QTQ6OmF2ZXJh
Z2UoUjRHNEI0QTQgKmRzdCwgY29uc3QgUjRHNEI0QTQgKnNyYzEsIGNvbnN0IFI0RzRCNEE0ICpz
cmMyKQoreworICAgIGRzdC0+UkdCQSA9IGdsOjpzaGlmdERhdGE8NCwgMTI+KGdsOjphdmVyYWdl
KGdsOjpnZXRTaGlmdGVkRGF0YTw0LCAxMj4oc3JjMS0+UkdCQSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OmdldFNoaWZ0ZWREYXRhPDQsIDEy
PihzcmMyLT5SR0JBKSkpIHwKKyAgICAgICAgICAgICAgICBnbDo6c2hpZnREYXRhPDQsIDg+KGds
OjphdmVyYWdlKGdsOjpnZXRTaGlmdGVkRGF0YTw0LCA4PihzcmMxLT5SR0JBKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpnZXRTaGlmdGVkRGF0
YTw0LCA4PihzcmMyLT5SR0JBKSkpIHwKKyAgICAgICAgICAgICAgICBnbDo6c2hpZnREYXRhPDQs
IDQ+KGdsOjphdmVyYWdlKGdsOjpnZXRTaGlmdGVkRGF0YTw0LCA0PihzcmMxLT5SR0JBKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpnZXRTaGlm
dGVkRGF0YTw0LCA0PihzcmMyLT5SR0JBKSkpIHwKKyAgICAgICAgICAgICAgICBnbDo6c2hpZnRE
YXRhPDQsIDA+KGdsOjphdmVyYWdlKGdsOjpnZXRTaGlmdGVkRGF0YTw0LCAwPihzcmMxLT5SR0JB
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpn
ZXRTaGlmdGVkRGF0YTw0LCAwPihzcmMyLT5SR0JBKSkpOworfQorCit2b2lkIEE0UjRHNEI0Ojpy
ZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBBNFI0RzRCNCAqc3JjKQoreworICAgIGRz
dC0+YWxwaGEgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQ8ND4oZ2w6OmdldFNoaWZ0ZWREYXRhPDQs
IDEyPihzcmMtPkFSR0IpKTsKKyAgICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0
PDQ+KGdsOjpnZXRTaGlmdGVkRGF0YTw0LCA4PihzcmMtPkFSR0IpKTsKKyAgICBkc3QtPmdyZWVu
ID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0PDQ+KGdsOjpnZXRTaGlmdGVkRGF0YTw0LCA0PihzcmMt
PkFSR0IpKTsKKyAgICBkc3QtPmJsdWUgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0PDQ+KGdsOjpn
ZXRTaGlmdGVkRGF0YTw0LCAwPihzcmMtPkFSR0IpKTsKK30KKwordm9pZCBBNFI0RzRCNDo6d3Jp
dGVDb2xvcihBNFI0RzRCNCAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCit7CisgICAgZHN0
LT5BUkdCID0gZ2w6OnNoaWZ0RGF0YTw0LCAxMj4oZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPDQsIHVp
bnQxNl90PihzcmMtPmFscGhhKSkgfAorICAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NCwg
OD4oZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPDQsIHVpbnQxNl90PihzcmMtPnJlZCkpIHwKKyAgICAg
ICAgICAgICAgICBnbDo6c2hpZnREYXRhPDQsIDQ+KGdsOjpmbG9hdFRvTm9ybWFsaXplZDw0LCB1
aW50MTZfdD4oc3JjLT5ncmVlbikpIHwKKyAgICAgICAgICAgICAgICBnbDo6c2hpZnREYXRhPDQs
IDA+KGdsOjpmbG9hdFRvTm9ybWFsaXplZDw0LCB1aW50MTZfdD4oc3JjLT5ibHVlKSk7Cit9CisK
K3ZvaWQgQTRSNEc0QjQ6OmF2ZXJhZ2UoQTRSNEc0QjQgKmRzdCwgY29uc3QgQTRSNEc0QjQgKnNy
YzEsIGNvbnN0IEE0UjRHNEI0ICpzcmMyKQoreworICAgIGRzdC0+QVJHQiA9IGdsOjpzaGlmdERh
dGE8NCwgMTI+KGdsOjphdmVyYWdlKGdsOjpnZXRTaGlmdGVkRGF0YTw0LCAxMj4oc3JjMS0+QVJH
QiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6
OmdldFNoaWZ0ZWREYXRhPDQsIDEyPihzcmMyLT5BUkdCKSkpIHwKKyAgICAgICAgICAgICAgICBn
bDo6c2hpZnREYXRhPDQsIDg+KGdsOjphdmVyYWdlKGdsOjpnZXRTaGlmdGVkRGF0YTw0LCA4Pihz
cmMxLT5BUkdCKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdsOjpnZXRTaGlmdGVkRGF0YTw0LCA4PihzcmMyLT5BUkdCKSkpIHwKKyAgICAgICAgICAg
ICAgICBnbDo6c2hpZnREYXRhPDQsIDQ+KGdsOjphdmVyYWdlKGdsOjpnZXRTaGlmdGVkRGF0YTw0
LCA0PihzcmMxLT5BUkdCKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdsOjpnZXRTaGlmdGVkRGF0YTw0LCA0PihzcmMyLT5BUkdCKSkpIHwKKyAgICAg
ICAgICAgICAgICBnbDo6c2hpZnREYXRhPDQsIDA+KGdsOjphdmVyYWdlKGdsOjpnZXRTaGlmdGVk
RGF0YTw0LCAwPihzcmMxLT5BUkdCKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdsOjpnZXRTaGlmdGVkRGF0YTw0LCAwPihzcmMyLT5BUkdCKSkpOwor
fQorCit2b2lkIFIxNjo6cmVhZENvbG9yKGdsOjpDb2xvclVJICpkc3QsIGNvbnN0IFIxNiAqc3Jj
KQoreworICAgIGRzdC0+cmVkICAgPSBzcmMtPlI7CisgICAgZHN0LT5ncmVlbiA9IDA7CisgICAg
ZHN0LT5ibHVlICA9IDA7CisgICAgZHN0LT5hbHBoYSA9IDE7Cit9CisKK3ZvaWQgUjE2OjpyZWFk
Q29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMTYgKnNyYykKK3sKKyAgICBkc3QtPnJlZCAg
ID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7CisgICAgZHN0LT5ncmVlbiA9IDAuMGY7
CisgICAgZHN0LT5ibHVlICA9IDAuMGY7CisgICAgZHN0LT5hbHBoYSA9IDEuMGY7Cit9CisKK3Zv
aWQgUjE2Ojp3cml0ZUNvbG9yKFIxNiAqZHN0LCBjb25zdCBnbDo6Q29sb3JVSSAqc3JjKQorewor
ICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PHVpbnQxNl90PihzcmMtPnJlZCk7Cit9CisKK3ZvaWQg
UjE2Ojp3cml0ZUNvbG9yKFIxNiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCit7CisgICAg
ZHN0LT5SID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPHVpbnQxNl90PihzcmMtPnJlZCk7Cit9CisK
K3ZvaWQgUjE2OjphdmVyYWdlKFIxNiAqZHN0LCBjb25zdCBSMTYgKnNyYzEsIGNvbnN0IFIxNiAq
c3JjMikKK3sKKyAgICBkc3QtPlIgPSBnbDo6YXZlcmFnZShzcmMxLT5SLCBzcmMyLT5SKTsKK30K
Kwordm9pZCBSMTZHMTY6OnJlYWRDb2xvcihnbDo6Q29sb3JVSSAqZHN0LCBjb25zdCBSMTZHMTYg
KnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gc3JjLT5SOworICAgIGRzdC0+Z3JlZW4gPSBzcmMt
Pkc7CisgICAgZHN0LT5ibHVlICA9IDA7CisgICAgZHN0LT5hbHBoYSA9IDE7Cit9CisKK3ZvaWQg
UjE2RzE2OjpyZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMTZHMTYgKnNyYykKK3sK
KyAgICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7CisgICAgZHN0
LT5ncmVlbiA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkcpOworICAgIGRzdC0+Ymx1ZSAg
PSAwLjBmOworICAgIGRzdC0+YWxwaGEgPSAxLjBmOworfQorCit2b2lkIFIxNkcxNjo6d3JpdGVD
b2xvcihSMTZHMTYgKmRzdCwgY29uc3QgZ2w6OkNvbG9yVUkgKnNyYykKK3sKKyAgICBkc3QtPlIg
PSBzdGF0aWNfY2FzdDx1aW50MTZfdD4oc3JjLT5yZWQpOworICAgIGRzdC0+RyA9IHN0YXRpY19j
YXN0PHVpbnQxNl90PihzcmMtPmdyZWVuKTsKK30KKwordm9pZCBSMTZHMTY6OndyaXRlQ29sb3Io
UjE2RzE2ICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKK3sKKyAgICBkc3QtPlIgPSBnbDo6
ZmxvYXRUb05vcm1hbGl6ZWQ8dWludDE2X3Q+KHNyYy0+cmVkKTsKKyAgICBkc3QtPkcgPSBnbDo6
ZmxvYXRUb05vcm1hbGl6ZWQ8dWludDE2X3Q+KHNyYy0+Z3JlZW4pOworfQorCit2b2lkIFIxNkcx
Njo6YXZlcmFnZShSMTZHMTYgKmRzdCwgY29uc3QgUjE2RzE2ICpzcmMxLCBjb25zdCBSMTZHMTYg
KnNyYzIpCit7CisgICAgZHN0LT5SID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Uiwgc3JjMi0+Uik7Cisg
ICAgZHN0LT5HID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Rywgc3JjMi0+Ryk7Cit9CisKK3ZvaWQgUjE2
RzE2QjE2OjpyZWFkQ29sb3IoZ2w6OkNvbG9yVUkgKmRzdCwgY29uc3QgUjE2RzE2QjE2ICpzcmMp
Cit7CisgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKKyAgICBkc3QtPmdyZWVuID0gc3JjLT5HOwor
ICAgIGRzdC0+Ymx1ZSAgPSBzcmMtPkI7CisgICAgZHN0LT5hbHBoYSA9IDE7Cit9CisKK3ZvaWQg
UjE2RzE2QjE2OjpyZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMTZHMTZCMTYgKnNy
YykKK3sKKyAgICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7Cisg
ICAgZHN0LT5ncmVlbiA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkcpOworICAgIGRzdC0+
Ymx1ZSAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5CKTsKKyAgICBkc3QtPmFscGhhID0g
MS4wZjsKK30KKwordm9pZCBSMTZHMTZCMTY6OndyaXRlQ29sb3IoUjE2RzE2QjE2ICpkc3QsIGNv
bnN0IGdsOjpDb2xvclVJICpzcmMpCit7CisgICAgZHN0LT5SID0gc3RhdGljX2Nhc3Q8dWludDE2
X3Q+KHNyYy0+cmVkKTsKKyAgICBkc3QtPkcgPSBzdGF0aWNfY2FzdDx1aW50MTZfdD4oc3JjLT5n
cmVlbik7CisgICAgZHN0LT5CID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHNyYy0+Ymx1ZSk7Cit9
CisKK3ZvaWQgUjE2RzE2QjE2Ojp3cml0ZUNvbG9yKFIxNkcxNkIxNiAqZHN0LCBjb25zdCBnbDo6
Q29sb3JGICpzcmMpCit7CisgICAgZHN0LT5SID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPHVpbnQx
Nl90PihzcmMtPnJlZCk7CisgICAgZHN0LT5HID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPHVpbnQx
Nl90PihzcmMtPmdyZWVuKTsKKyAgICBkc3QtPkIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dWlu
dDE2X3Q+KHNyYy0+Ymx1ZSk7Cit9CisKK3ZvaWQgUjE2RzE2QjE2OjphdmVyYWdlKFIxNkcxNkIx
NiAqZHN0LCBjb25zdCBSMTZHMTZCMTYgKnNyYzEsIGNvbnN0IFIxNkcxNkIxNiAqc3JjMikKK3sK
KyAgICBkc3QtPlIgPSBnbDo6YXZlcmFnZShzcmMxLT5SLCBzcmMyLT5SKTsKKyAgICBkc3QtPkcg
PSBnbDo6YXZlcmFnZShzcmMxLT5HLCBzcmMyLT5HKTsKKyAgICBkc3QtPkIgPSBnbDo6YXZlcmFn
ZShzcmMxLT5CLCBzcmMyLT5CKTsKK30KKwordm9pZCBSMTZHMTZCMTZBMTY6OnJlYWRDb2xvcihn
bDo6Q29sb3JVSSAqZHN0LCBjb25zdCBSMTZHMTZCMTZBMTYgKnNyYykKK3sKKyAgICBkc3QtPnJl
ZCAgID0gc3JjLT5SOworICAgIGRzdC0+Z3JlZW4gPSBzcmMtPkc7CisgICAgZHN0LT5ibHVlICA9
IHNyYy0+QjsKKyAgICBkc3QtPmFscGhhID0gc3JjLT5BOworfQorCit2b2lkIFIxNkcxNkIxNkEx
Njo6cmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjE2RzE2QjE2QTE2ICpzcmMpCit7
CisgICAgZHN0LT5yZWQgICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPlIpOworICAgIGRz
dC0+Z3JlZW4gPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5HKTsKKyAgICBkc3QtPmJsdWUg
ID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Qik7CisgICAgZHN0LT5hbHBoYSA9IGdsOjpu
b3JtYWxpemVkVG9GbG9hdChzcmMtPkEpOworfQorCit2b2lkIFIxNkcxNkIxNkExNjo6d3JpdGVD
b2xvcihSMTZHMTZCMTZBMTYgKmRzdCwgY29uc3QgZ2w6OkNvbG9yVUkgKnNyYykKK3sKKyAgICBk
c3QtPlIgPSBzdGF0aWNfY2FzdDx1aW50MTZfdD4oc3JjLT5yZWQpOworICAgIGRzdC0+RyA9IHN0
YXRpY19jYXN0PHVpbnQxNl90PihzcmMtPmdyZWVuKTsKKyAgICBkc3QtPkIgPSBzdGF0aWNfY2Fz
dDx1aW50MTZfdD4oc3JjLT5ibHVlKTsKKyAgICBkc3QtPkEgPSBzdGF0aWNfY2FzdDx1aW50MTZf
dD4oc3JjLT5hbHBoYSk7Cit9CisKK3ZvaWQgUjE2RzE2QjE2QTE2Ojp3cml0ZUNvbG9yKFIxNkcx
NkIxNkExNiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCit7CisgICAgZHN0LT5SID0gZ2w6
OmZsb2F0VG9Ob3JtYWxpemVkPHVpbnQxNl90PihzcmMtPnJlZCk7CisgICAgZHN0LT5HID0gZ2w6
OmZsb2F0VG9Ob3JtYWxpemVkPHVpbnQxNl90PihzcmMtPmdyZWVuKTsKKyAgICBkc3QtPkIgPSBn
bDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dWludDE2X3Q+KHNyYy0+Ymx1ZSk7CisgICAgZHN0LT5BID0g
Z2w6OmZsb2F0VG9Ob3JtYWxpemVkPHVpbnQxNl90PihzcmMtPmFscGhhKTsKK30KKwordm9pZCBS
MTZHMTZCMTZBMTY6OmF2ZXJhZ2UoUjE2RzE2QjE2QTE2ICpkc3QsIGNvbnN0IFIxNkcxNkIxNkEx
NiAqc3JjMSwgY29uc3QgUjE2RzE2QjE2QTE2ICpzcmMyKQoreworICAgIGRzdC0+UiA9IGdsOjph
dmVyYWdlKHNyYzEtPlIsIHNyYzItPlIpOworICAgIGRzdC0+RyA9IGdsOjphdmVyYWdlKHNyYzEt
PkcsIHNyYzItPkcpOworICAgIGRzdC0+QiA9IGdsOjphdmVyYWdlKHNyYzEtPkIsIHNyYzItPkIp
OworICAgIGRzdC0+QSA9IGdsOjphdmVyYWdlKHNyYzEtPkEsIHNyYzItPkEpOworfQorCit2b2lk
IFIzMjo6cmVhZENvbG9yKGdsOjpDb2xvclVJICpkc3QsIGNvbnN0IFIzMiAqc3JjKQoreworICAg
IGRzdC0+cmVkICAgPSBzcmMtPlI7CisgICAgZHN0LT5ncmVlbiA9IDA7CisgICAgZHN0LT5ibHVl
ICA9IDA7CisgICAgZHN0LT5hbHBoYSA9IDE7Cit9CisKK3ZvaWQgUjMyOjpyZWFkQ29sb3IoZ2w6
OkNvbG9yRiAqZHN0LCBjb25zdCBSMzIgKnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gZ2w6Om5v
cm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7CisgICAgZHN0LT5ncmVlbiA9IDAuMGY7CisgICAgZHN0
LT5ibHVlICA9IDAuMGY7CisgICAgZHN0LT5hbHBoYSA9IDEuMGY7Cit9CisKK3ZvaWQgUjMyOjp3
cml0ZUNvbG9yKFIzMiAqZHN0LCBjb25zdCBnbDo6Q29sb3JVSSAqc3JjKQoreworICAgIGRzdC0+
UiA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihzcmMtPnJlZCk7Cit9CisKK3ZvaWQgUjMyOjp3cml0
ZUNvbG9yKFIzMiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCit7CisgICAgZHN0LT5SID0g
Z2w6OmZsb2F0VG9Ob3JtYWxpemVkPHVpbnQzMl90PihzcmMtPnJlZCk7Cit9CisKK3ZvaWQgUjMy
OjphdmVyYWdlKFIzMiAqZHN0LCBjb25zdCBSMzIgKnNyYzEsIGNvbnN0IFIzMiAqc3JjMikKK3sK
KyAgICBkc3QtPlIgPSBnbDo6YXZlcmFnZShzcmMxLT5SLCBzcmMyLT5SKTsKK30KKwordm9pZCBS
MzJHMzI6OnJlYWRDb2xvcihnbDo6Q29sb3JVSSAqZHN0LCBjb25zdCBSMzJHMzIgKnNyYykKK3sK
KyAgICBkc3QtPnJlZCAgID0gc3JjLT5SOworICAgIGRzdC0+Z3JlZW4gPSBzcmMtPkc7CisgICAg
ZHN0LT5ibHVlICA9IDA7CisgICAgZHN0LT5hbHBoYSA9IDE7Cit9CisKK3ZvaWQgUjMyRzMyOjpy
ZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMzJHMzIgKnNyYykKK3sKKyAgICBkc3Qt
PnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7CisgICAgZHN0LT5ncmVlbiA9
IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkcpOworICAgIGRzdC0+Ymx1ZSAgPSAwLjBmOwor
ICAgIGRzdC0+YWxwaGEgPSAxLjBmOworfQorCit2b2lkIFIzMkczMjo6d3JpdGVDb2xvcihSMzJH
MzIgKmRzdCwgY29uc3QgZ2w6OkNvbG9yVUkgKnNyYykKK3sKKyAgICBkc3QtPlIgPSBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oc3JjLT5yZWQpOworICAgIGRzdC0+RyA9IHN0YXRpY19jYXN0PHVpbnQz
Ml90PihzcmMtPmdyZWVuKTsKK30KKwordm9pZCBSMzJHMzI6OndyaXRlQ29sb3IoUjMyRzMyICpk
c3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKK3sKKyAgICBkc3QtPlIgPSBnbDo6ZmxvYXRUb05v
cm1hbGl6ZWQ8dWludDMyX3Q+KHNyYy0+cmVkKTsKKyAgICBkc3QtPkcgPSBnbDo6ZmxvYXRUb05v
cm1hbGl6ZWQ8dWludDMyX3Q+KHNyYy0+Z3JlZW4pOworfQorCit2b2lkIFIzMkczMjo6YXZlcmFn
ZShSMzJHMzIgKmRzdCwgY29uc3QgUjMyRzMyICpzcmMxLCBjb25zdCBSMzJHMzIgKnNyYzIpCit7
CisgICAgZHN0LT5SID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Uiwgc3JjMi0+Uik7CisgICAgZHN0LT5H
ID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Rywgc3JjMi0+Ryk7Cit9CisKK3ZvaWQgUjMyRzMyQjMyOjpy
ZWFkQ29sb3IoZ2w6OkNvbG9yVUkgKmRzdCwgY29uc3QgUjMyRzMyQjMyICpzcmMpCit7CisgICAg
ZHN0LT5yZWQgICA9IHNyYy0+UjsKKyAgICBkc3QtPmdyZWVuID0gc3JjLT5HOworICAgIGRzdC0+
Ymx1ZSAgPSBzcmMtPkI7CisgICAgZHN0LT5hbHBoYSA9IDE7Cit9CisKK3ZvaWQgUjMyRzMyQjMy
OjpyZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMzJHMzJCMzIgKnNyYykKK3sKKyAg
ICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7CisgICAgZHN0LT5n
cmVlbiA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkcpOworICAgIGRzdC0+Ymx1ZSAgPSBn
bDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5CKTsKKyAgICBkc3QtPmFscGhhID0gMS4wZjsKK30K
Kwordm9pZCBSMzJHMzJCMzI6OndyaXRlQ29sb3IoUjMyRzMyQjMyICpkc3QsIGNvbnN0IGdsOjpD
b2xvclVJICpzcmMpCit7CisgICAgZHN0LT5SID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHNyYy0+
cmVkKTsKKyAgICBkc3QtPkcgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3JjLT5ncmVlbik7Cisg
ICAgZHN0LT5CID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHNyYy0+Ymx1ZSk7Cit9CisKK3ZvaWQg
UjMyRzMyQjMyOjp3cml0ZUNvbG9yKFIzMkczMkIzMiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpz
cmMpCit7CisgICAgZHN0LT5SID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPHVpbnQzMl90PihzcmMt
PnJlZCk7CisgICAgZHN0LT5HID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPHVpbnQzMl90PihzcmMt
PmdyZWVuKTsKKyAgICBkc3QtPkIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dWludDMyX3Q+KHNy
Yy0+Ymx1ZSk7Cit9CisKK3ZvaWQgUjMyRzMyQjMyOjphdmVyYWdlKFIzMkczMkIzMiAqZHN0LCBj
b25zdCBSMzJHMzJCMzIgKnNyYzEsIGNvbnN0IFIzMkczMkIzMiAqc3JjMikKK3sKKyAgICBkc3Qt
PlIgPSBnbDo6YXZlcmFnZShzcmMxLT5SLCBzcmMyLT5SKTsKKyAgICBkc3QtPkcgPSBnbDo6YXZl
cmFnZShzcmMxLT5HLCBzcmMyLT5HKTsKKyAgICBkc3QtPkIgPSBnbDo6YXZlcmFnZShzcmMxLT5C
LCBzcmMyLT5CKTsKK30KKwordm9pZCBSMzJHMzJCMzJBMzI6OnJlYWRDb2xvcihnbDo6Q29sb3JV
SSAqZHN0LCBjb25zdCBSMzJHMzJCMzJBMzIgKnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gc3Jj
LT5SOworICAgIGRzdC0+Z3JlZW4gPSBzcmMtPkc7CisgICAgZHN0LT5ibHVlICA9IHNyYy0+QjsK
KyAgICBkc3QtPmFscGhhID0gc3JjLT5BOworfQorCit2b2lkIFIzMkczMkIzMkEzMjo6cmVhZENv
bG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjMyRzMyQjMyQTMyICpzcmMpCit7CisgICAgZHN0
LT5yZWQgICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPlIpOworICAgIGRzdC0+Z3JlZW4g
PSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5HKTsKKyAgICBkc3QtPmJsdWUgID0gZ2w6Om5v
cm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Qik7CisgICAgZHN0LT5hbHBoYSA9IGdsOjpub3JtYWxpemVk
VG9GbG9hdChzcmMtPkEpOworfQorCit2b2lkIFIzMkczMkIzMkEzMjo6d3JpdGVDb2xvcihSMzJH
MzJCMzJBMzIgKmRzdCwgY29uc3QgZ2w6OkNvbG9yVUkgKnNyYykKK3sKKyAgICBkc3QtPlIgPSBz
dGF0aWNfY2FzdDx1aW50MzJfdD4oc3JjLT5yZWQpOworICAgIGRzdC0+RyA9IHN0YXRpY19jYXN0
PHVpbnQzMl90PihzcmMtPmdyZWVuKTsKKyAgICBkc3QtPkIgPSBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oc3JjLT5ibHVlKTsKKyAgICBkc3QtPkEgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3JjLT5h
bHBoYSk7Cit9CisKK3ZvaWQgUjMyRzMyQjMyQTMyOjp3cml0ZUNvbG9yKFIzMkczMkIzMkEzMiAq
ZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCit7CisgICAgZHN0LT5SID0gZ2w6OmZsb2F0VG9O
b3JtYWxpemVkPHVpbnQzMl90PihzcmMtPnJlZCk7CisgICAgZHN0LT5HID0gZ2w6OmZsb2F0VG9O
b3JtYWxpemVkPHVpbnQzMl90PihzcmMtPmdyZWVuKTsKKyAgICBkc3QtPkIgPSBnbDo6ZmxvYXRU
b05vcm1hbGl6ZWQ8dWludDMyX3Q+KHNyYy0+Ymx1ZSk7CisgICAgZHN0LT5BID0gZ2w6OmZsb2F0
VG9Ob3JtYWxpemVkPHVpbnQzMl90PihzcmMtPmFscGhhKTsKK30KKwordm9pZCBSMzJHMzJCMzJB
MzI6OmF2ZXJhZ2UoUjMyRzMyQjMyQTMyICpkc3QsIGNvbnN0IFIzMkczMkIzMkEzMiAqc3JjMSwg
Y29uc3QgUjMyRzMyQjMyQTMyICpzcmMyKQoreworICAgIGRzdC0+UiA9IGdsOjphdmVyYWdlKHNy
YzEtPlIsIHNyYzItPlIpOworICAgIGRzdC0+RyA9IGdsOjphdmVyYWdlKHNyYzEtPkcsIHNyYzIt
PkcpOworICAgIGRzdC0+QiA9IGdsOjphdmVyYWdlKHNyYzEtPkIsIHNyYzItPkIpOworICAgIGRz
dC0+QSA9IGdsOjphdmVyYWdlKHNyYzEtPkEsIHNyYzItPkEpOworfQorCit2b2lkIFI4Uzo6cmVh
ZENvbG9yKGdsOjpDb2xvckkgKmRzdCwgY29uc3QgUjhTICpzcmMpCit7CisgICAgZHN0LT5yZWQg
ICA9IHNyYy0+UjsKKyAgICBkc3QtPmdyZWVuID0gMDsKKyAgICBkc3QtPmJsdWUgID0gMDsKKyAg
ICBkc3QtPmFscGhhID0gMTsKK30KKwordm9pZCBSOFM6OnJlYWRDb2xvcihnbDo6Q29sb3JGICpk
c3QsIGNvbnN0IFI4UyAqc3JjKQoreworICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRv
RmxvYXQoc3JjLT5SKTsKKyAgICBkc3QtPmdyZWVuID0gMC4wZjsKKyAgICBkc3QtPmJsdWUgID0g
MC4wZjsKKyAgICBkc3QtPmFscGhhID0gMS4wZjsKK30KKwordm9pZCBSOFM6OndyaXRlQ29sb3Io
UjhTICpkc3QsIGNvbnN0IGdsOjpDb2xvckkgKnNyYykKK3sKKyAgICBkc3QtPlIgPSBzdGF0aWNf
Y2FzdDxpbnQ4X3Q+KHNyYy0+cmVkKTsKK30KKwordm9pZCBSOFM6OndyaXRlQ29sb3IoUjhTICpk
c3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKK3sKKyAgICBkc3QtPlIgPSBnbDo6ZmxvYXRUb05v
cm1hbGl6ZWQ8aW50OF90PihzcmMtPnJlZCk7Cit9CisKK3ZvaWQgUjhTOjphdmVyYWdlKFI4UyAq
ZHN0LCBjb25zdCBSOFMgKnNyYzEsIGNvbnN0IFI4UyAqc3JjMikKK3sKKyAgICBkc3QtPlIgPSBz
dGF0aWNfY2FzdDxpbnQ4X3Q+KGdsOjphdmVyYWdlKHNyYzEtPlIsIHNyYzItPlIpKTsKK30KKwor
dm9pZCBSOEc4Uzo6cmVhZENvbG9yKGdsOjpDb2xvckkgKmRzdCwgY29uc3QgUjhHOFMgKnNyYykK
K3sKKyAgICBkc3QtPnJlZCAgID0gc3JjLT5SOworICAgIGRzdC0+Z3JlZW4gPSBzcmMtPkc7Cisg
ICAgZHN0LT5ibHVlICA9IDA7CisgICAgZHN0LT5hbHBoYSA9IDE7Cit9CisKK3ZvaWQgUjhHOFM6
OnJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFI4RzhTICpzcmMpCit7CisgICAgZHN0
LT5yZWQgICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPlIpOworICAgIGRzdC0+Z3JlZW4g
PSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5HKTsKKyAgICBkc3QtPmJsdWUgID0gMC4wZjsK
KyAgICBkc3QtPmFscGhhID0gMS4wZjsKK30KKwordm9pZCBSOEc4Uzo6d3JpdGVDb2xvcihSOEc4
UyAqZHN0LCBjb25zdCBnbDo6Q29sb3JJICpzcmMpCit7CisgICAgZHN0LT5SID0gc3RhdGljX2Nh
c3Q8aW50OF90PihzcmMtPnJlZCk7CisgICAgZHN0LT5HID0gc3RhdGljX2Nhc3Q8aW50OF90Pihz
cmMtPmdyZWVuKTsKK30KKwordm9pZCBSOEc4Uzo6d3JpdGVDb2xvcihSOEc4UyAqZHN0LCBjb25z
dCBnbDo6Q29sb3JGICpzcmMpCit7CisgICAgZHN0LT5SID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVk
PGludDhfdD4oc3JjLT5yZWQpOworICAgIGRzdC0+RyA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDxp
bnQ4X3Q+KHNyYy0+Z3JlZW4pOworfQorCit2b2lkIFI4RzhTOjphdmVyYWdlKFI4RzhTICpkc3Qs
IGNvbnN0IFI4RzhTICpzcmMxLCBjb25zdCBSOEc4UyAqc3JjMikKK3sKKyAgICBkc3QtPlIgPSBz
dGF0aWNfY2FzdDxpbnQ4X3Q+KGdsOjphdmVyYWdlKHNyYzEtPlIsIHNyYzItPlIpKTsKKyAgICBk
c3QtPkcgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGdsOjphdmVyYWdlKHNyYzEtPkcsIHNyYzItPkcp
KTsKK30KKwordm9pZCBSOEc4QjhTOjpyZWFkQ29sb3IoZ2w6OkNvbG9ySSAqZHN0LCBjb25zdCBS
OEc4QjhTICpzcmMpCit7CisgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKKyAgICBkc3QtPmdyZWVu
ID0gc3JjLT5HOworICAgIGRzdC0+Ymx1ZSAgPSBzcmMtPkI7CisgICAgZHN0LT5hbHBoYSA9IDE7
Cit9CisKK3ZvaWQgUjhHOEI4Uzo6cmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjhH
OEI4UyAqc3JjKQoreworICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3Jj
LT5SKTsKKyAgICBkc3QtPmdyZWVuID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Ryk7Cisg
ICAgZHN0LT5ibHVlICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkIpOworICAgIGRzdC0+
YWxwaGEgPSAxLjBmOworfQorCit2b2lkIFI4RzhCOFM6OndyaXRlQ29sb3IoUjhHOEI4UyAqZHN0
LCBjb25zdCBnbDo6Q29sb3JJICpzcmMpCit7CisgICAgZHN0LT5SID0gc3RhdGljX2Nhc3Q8aW50
OF90PihzcmMtPnJlZCk7CisgICAgZHN0LT5HID0gc3RhdGljX2Nhc3Q8aW50OF90PihzcmMtPmdy
ZWVuKTsKKyAgICBkc3QtPkIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KHNyYy0+Ymx1ZSk7Cit9CisK
K3ZvaWQgUjhHOEI4Uzo6d3JpdGVDb2xvcihSOEc4QjhTICpkc3QsIGNvbnN0IGdsOjpDb2xvckYg
KnNyYykKK3sKKyAgICBkc3QtPlIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8aW50OF90PihzcmMt
PnJlZCk7CisgICAgZHN0LT5HID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPGludDhfdD4oc3JjLT5n
cmVlbik7CisgICAgZHN0LT5CID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPGludDhfdD4oc3JjLT5i
bHVlKTsKK30KKwordm9pZCBSOEc4QjhTOjphdmVyYWdlKFI4RzhCOFMgKmRzdCwgY29uc3QgUjhH
OEI4UyAqc3JjMSwgY29uc3QgUjhHOEI4UyAqc3JjMikKK3sKKyAgICBkc3QtPlIgPSBzdGF0aWNf
Y2FzdDxpbnQ4X3Q+KGdsOjphdmVyYWdlKHNyYzEtPlIsIHNyYzItPlIpKTsKKyAgICBkc3QtPkcg
PSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGdsOjphdmVyYWdlKHNyYzEtPkcsIHNyYzItPkcpKTsKKyAg
ICBkc3QtPkIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGdsOjphdmVyYWdlKHNyYzEtPkIsIHNyYzIt
PkIpKTsKK30KKwordm9pZCBSOEc4QjhBOFM6OnJlYWRDb2xvcihnbDo6Q29sb3JJICpkc3QsIGNv
bnN0IFI4RzhCOEE4UyAqc3JjKQoreworICAgIGRzdC0+cmVkICAgPSBzcmMtPlI7CisgICAgZHN0
LT5ncmVlbiA9IHNyYy0+RzsKKyAgICBkc3QtPmJsdWUgID0gc3JjLT5COworICAgIGRzdC0+YWxw
aGEgPSBzcmMtPkE7Cit9CisKK3ZvaWQgUjhHOEI4QThTOjpyZWFkQ29sb3IoZ2w6OkNvbG9yRiAq
ZHN0LCBjb25zdCBSOEc4QjhBOFMgKnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1h
bGl6ZWRUb0Zsb2F0KHNyYy0+Uik7CisgICAgZHN0LT5ncmVlbiA9IGdsOjpub3JtYWxpemVkVG9G
bG9hdChzcmMtPkcpOworICAgIGRzdC0+Ymx1ZSAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3Jj
LT5CKTsKKyAgICBkc3QtPmFscGhhID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+QSk7Cit9
CisKK3ZvaWQgUjhHOEI4QThTOjp3cml0ZUNvbG9yKFI4RzhCOEE4UyAqZHN0LCBjb25zdCBnbDo6
Q29sb3JJICpzcmMpCit7CisgICAgZHN0LT5SID0gc3RhdGljX2Nhc3Q8aW50OF90PihzcmMtPnJl
ZCk7CisgICAgZHN0LT5HID0gc3RhdGljX2Nhc3Q8aW50OF90PihzcmMtPmdyZWVuKTsKKyAgICBk
c3QtPkIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KHNyYy0+Ymx1ZSk7CisgICAgZHN0LT5BID0gc3Rh
dGljX2Nhc3Q8aW50OF90PihzcmMtPmFscGhhKTsKK30KKwordm9pZCBSOEc4QjhBOFM6OndyaXRl
Q29sb3IoUjhHOEI4QThTICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKK3sKKyAgICBkc3Qt
PlIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8aW50OF90PihzcmMtPnJlZCk7CisgICAgZHN0LT5H
ID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPGludDhfdD4oc3JjLT5ncmVlbik7CisgICAgZHN0LT5C
ID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPGludDhfdD4oc3JjLT5ibHVlKTsKKyAgICBkc3QtPkEg
PSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8aW50OF90PihzcmMtPmFscGhhKTsKK30KKwordm9pZCBS
OEc4QjhBOFM6OmF2ZXJhZ2UoUjhHOEI4QThTICpkc3QsIGNvbnN0IFI4RzhCOEE4UyAqc3JjMSwg
Y29uc3QgUjhHOEI4QThTICpzcmMyKQoreworICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PGludDhf
dD4oZ2w6OmF2ZXJhZ2Uoc3JjMS0+Uiwgc3JjMi0+UikpOworICAgIGRzdC0+RyA9IHN0YXRpY19j
YXN0PGludDhfdD4oZ2w6OmF2ZXJhZ2Uoc3JjMS0+Rywgc3JjMi0+RykpOworICAgIGRzdC0+QiA9
IHN0YXRpY19jYXN0PGludDhfdD4oZ2w6OmF2ZXJhZ2Uoc3JjMS0+Qiwgc3JjMi0+QikpOworICAg
IGRzdC0+QSA9IHN0YXRpY19jYXN0PGludDhfdD4oZ2w6OmF2ZXJhZ2Uoc3JjMS0+QSwgc3JjMi0+
QSkpOworfQorCit2b2lkIFIxNlM6OnJlYWRDb2xvcihnbDo6Q29sb3JJICpkc3QsIGNvbnN0IFIx
NlMgKnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gc3JjLT5SOworICAgIGRzdC0+Z3JlZW4gPSAw
OworICAgIGRzdC0+Ymx1ZSAgPSAwOworICAgIGRzdC0+YWxwaGEgPSAxOworfQorCit2b2lkIFIx
NlM6OnJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIxNlMgKnNyYykKK3sKKyAgICBk
c3QtPnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7CisgICAgZHN0LT5ncmVl
biA9IDAuMGY7CisgICAgZHN0LT5ibHVlICA9IDAuMGY7CisgICAgZHN0LT5hbHBoYSA9IDEuMGY7
Cit9CisKK3ZvaWQgUjE2Uzo6d3JpdGVDb2xvcihSMTZTICpkc3QsIGNvbnN0IGdsOjpDb2xvckkg
KnNyYykKK3sKKyAgICBkc3QtPlIgPSBzdGF0aWNfY2FzdDxpbnQxNl90PihzcmMtPnJlZCk7Cit9
CisKK3ZvaWQgUjE2Uzo6d3JpdGVDb2xvcihSMTZTICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNy
YykKK3sKKyAgICBkc3QtPlIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8aW50MTZfdD4oc3JjLT5y
ZWQpOworfQorCit2b2lkIFIxNlM6OmF2ZXJhZ2UoUjE2UyAqZHN0LCBjb25zdCBSMTZTICpzcmMx
LCBjb25zdCBSMTZTICpzcmMyKQoreworICAgIGRzdC0+UiA9IGdsOjphdmVyYWdlKHNyYzEtPlIs
IHNyYzItPlIpOworfQorCit2b2lkIFIxNkcxNlM6OnJlYWRDb2xvcihnbDo6Q29sb3JJICpkc3Qs
IGNvbnN0IFIxNkcxNlMgKnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gc3JjLT5SOworICAgIGRz
dC0+Z3JlZW4gPSBzcmMtPkc7CisgICAgZHN0LT5ibHVlICA9IDA7CisgICAgZHN0LT5hbHBoYSA9
IDE7Cit9CisKK3ZvaWQgUjE2RzE2Uzo6cmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3Qg
UjE2RzE2UyAqc3JjKQoreworICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQo
c3JjLT5SKTsKKyAgICBkc3QtPmdyZWVuID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Ryk7
CisgICAgZHN0LT5ibHVlICA9IDAuMGY7CisgICAgZHN0LT5hbHBoYSA9IDEuMGY7Cit9CisKK3Zv
aWQgUjE2RzE2Uzo6d3JpdGVDb2xvcihSMTZHMTZTICpkc3QsIGNvbnN0IGdsOjpDb2xvckkgKnNy
YykKK3sKKyAgICBkc3QtPlIgPSBzdGF0aWNfY2FzdDxpbnQxNl90PihzcmMtPnJlZCk7CisgICAg
ZHN0LT5HID0gc3RhdGljX2Nhc3Q8aW50MTZfdD4oc3JjLT5ncmVlbik7Cit9CisKK3ZvaWQgUjE2
RzE2Uzo6d3JpdGVDb2xvcihSMTZHMTZTICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKK3sK
KyAgICBkc3QtPlIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8aW50MTZfdD4oc3JjLT5yZWQpOwor
ICAgIGRzdC0+RyA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDxpbnQxNl90PihzcmMtPmdyZWVuKTsK
K30KKwordm9pZCBSMTZHMTZTOjphdmVyYWdlKFIxNkcxNlMgKmRzdCwgY29uc3QgUjE2RzE2UyAq
c3JjMSwgY29uc3QgUjE2RzE2UyAqc3JjMikKK3sKKyAgICBkc3QtPlIgPSBnbDo6YXZlcmFnZShz
cmMxLT5SLCBzcmMyLT5SKTsKKyAgICBkc3QtPkcgPSBnbDo6YXZlcmFnZShzcmMxLT5HLCBzcmMy
LT5HKTsKK30KKwordm9pZCBSMTZHMTZCMTZTOjpyZWFkQ29sb3IoZ2w6OkNvbG9ySSAqZHN0LCBj
b25zdCBSMTZHMTZCMTZTICpzcmMpCit7CisgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKKyAgICBk
c3QtPmdyZWVuID0gc3JjLT5HOworICAgIGRzdC0+Ymx1ZSAgPSBzcmMtPkI7CisgICAgZHN0LT5h
bHBoYSA9IDE7Cit9CisKK3ZvaWQgUjE2RzE2QjE2Uzo6cmVhZENvbG9yKGdsOjpDb2xvckYgKmRz
dCwgY29uc3QgUjE2RzE2QjE2UyAqc3JjKQoreworICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFs
aXplZFRvRmxvYXQoc3JjLT5SKTsKKyAgICBkc3QtPmdyZWVuID0gZ2w6Om5vcm1hbGl6ZWRUb0Zs
b2F0KHNyYy0+Ryk7CisgICAgZHN0LT5ibHVlICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMt
PkIpOworICAgIGRzdC0+YWxwaGEgPSAxLjBmOworfQorCit2b2lkIFIxNkcxNkIxNlM6OndyaXRl
Q29sb3IoUjE2RzE2QjE2UyAqZHN0LCBjb25zdCBnbDo6Q29sb3JJICpzcmMpCit7CisgICAgZHN0
LT5SID0gc3RhdGljX2Nhc3Q8aW50MTZfdD4oc3JjLT5yZWQpOworICAgIGRzdC0+RyA9IHN0YXRp
Y19jYXN0PGludDE2X3Q+KHNyYy0+Z3JlZW4pOworICAgIGRzdC0+QiA9IHN0YXRpY19jYXN0PGlu
dDE2X3Q+KHNyYy0+Ymx1ZSk7Cit9CisKK3ZvaWQgUjE2RzE2QjE2Uzo6d3JpdGVDb2xvcihSMTZH
MTZCMTZTICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKK3sKKyAgICBkc3QtPlIgPSBnbDo6
ZmxvYXRUb05vcm1hbGl6ZWQ8aW50MTZfdD4oc3JjLT5yZWQpOworICAgIGRzdC0+RyA9IGdsOjpm
bG9hdFRvTm9ybWFsaXplZDxpbnQxNl90PihzcmMtPmdyZWVuKTsKKyAgICBkc3QtPkIgPSBnbDo6
ZmxvYXRUb05vcm1hbGl6ZWQ8aW50MTZfdD4oc3JjLT5ibHVlKTsKK30KKwordm9pZCBSMTZHMTZC
MTZTOjphdmVyYWdlKFIxNkcxNkIxNlMgKmRzdCwgY29uc3QgUjE2RzE2QjE2UyAqc3JjMSwgY29u
c3QgUjE2RzE2QjE2UyAqc3JjMikKK3sKKyAgICBkc3QtPlIgPSBnbDo6YXZlcmFnZShzcmMxLT5S
LCBzcmMyLT5SKTsKKyAgICBkc3QtPkcgPSBnbDo6YXZlcmFnZShzcmMxLT5HLCBzcmMyLT5HKTsK
KyAgICBkc3QtPkIgPSBnbDo6YXZlcmFnZShzcmMxLT5CLCBzcmMyLT5CKTsKK30KKwordm9pZCBS
MTZHMTZCMTZBMTZTOjpyZWFkQ29sb3IoZ2w6OkNvbG9ySSAqZHN0LCBjb25zdCBSMTZHMTZCMTZB
MTZTICpzcmMpCit7CisgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKKyAgICBkc3QtPmdyZWVuID0g
c3JjLT5HOworICAgIGRzdC0+Ymx1ZSAgPSBzcmMtPkI7CisgICAgZHN0LT5hbHBoYSA9IHNyYy0+
QTsKK30KKwordm9pZCBSMTZHMTZCMTZBMTZTOjpyZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBj
b25zdCBSMTZHMTZCMTZBMTZTICpzcmMpCit7CisgICAgZHN0LT5yZWQgICA9IGdsOjpub3JtYWxp
emVkVG9GbG9hdChzcmMtPlIpOworICAgIGRzdC0+Z3JlZW4gPSBnbDo6bm9ybWFsaXplZFRvRmxv
YXQoc3JjLT5HKTsKKyAgICBkc3QtPmJsdWUgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+
Qik7CisgICAgZHN0LT5hbHBoYSA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkEpOworfQor
Cit2b2lkIFIxNkcxNkIxNkExNlM6OndyaXRlQ29sb3IoUjE2RzE2QjE2QTE2UyAqZHN0LCBjb25z
dCBnbDo6Q29sb3JJICpzcmMpCit7CisgICAgZHN0LT5SID0gc3RhdGljX2Nhc3Q8aW50MTZfdD4o
c3JjLT5yZWQpOworICAgIGRzdC0+RyA9IHN0YXRpY19jYXN0PGludDE2X3Q+KHNyYy0+Z3JlZW4p
OworICAgIGRzdC0+QiA9IHN0YXRpY19jYXN0PGludDE2X3Q+KHNyYy0+Ymx1ZSk7CisgICAgZHN0
LT5BID0gc3RhdGljX2Nhc3Q8aW50MTZfdD4oc3JjLT5hbHBoYSk7Cit9CisKK3ZvaWQgUjE2RzE2
QjE2QTE2Uzo6d3JpdGVDb2xvcihSMTZHMTZCMTZBMTZTICpkc3QsIGNvbnN0IGdsOjpDb2xvckYg
KnNyYykKK3sKKyAgICBkc3QtPlIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8aW50MTZfdD4oc3Jj
LT5yZWQpOworICAgIGRzdC0+RyA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDxpbnQxNl90PihzcmMt
PmdyZWVuKTsKKyAgICBkc3QtPkIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8aW50MTZfdD4oc3Jj
LT5ibHVlKTsKKyAgICBkc3QtPkEgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8aW50MTZfdD4oc3Jj
LT5hbHBoYSk7Cit9CisKK3ZvaWQgUjE2RzE2QjE2QTE2Uzo6YXZlcmFnZShSMTZHMTZCMTZBMTZT
ICpkc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUjE2RzE2QjE2QTE2UyAq
c3JjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSMTZHMTZCMTZBMTZTICpz
cmMyKQoreworICAgIGRzdC0+UiA9IGdsOjphdmVyYWdlKHNyYzEtPlIsIHNyYzItPlIpOworICAg
IGRzdC0+RyA9IGdsOjphdmVyYWdlKHNyYzEtPkcsIHNyYzItPkcpOworICAgIGRzdC0+QiA9IGds
OjphdmVyYWdlKHNyYzEtPkIsIHNyYzItPkIpOworICAgIGRzdC0+QSA9IGdsOjphdmVyYWdlKHNy
YzEtPkEsIHNyYzItPkEpOworfQorCit2b2lkIFIzMlM6OnJlYWRDb2xvcihnbDo6Q29sb3JJICpk
c3QsIGNvbnN0IFIzMlMgKnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gc3JjLT5SOworICAgIGRz
dC0+Z3JlZW4gPSAwOworICAgIGRzdC0+Ymx1ZSAgPSAwOworICAgIGRzdC0+YWxwaGEgPSAxOwor
fQorCit2b2lkIFIzMlM6OnJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIzMlMgKnNy
YykKK3sKKyAgICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7Cisg
ICAgZHN0LT5ncmVlbiA9IDAuMGY7CisgICAgZHN0LT5ibHVlICA9IDAuMGY7CisgICAgZHN0LT5h
bHBoYSA9IDEuMGY7Cit9CisKK3ZvaWQgUjMyUzo6d3JpdGVDb2xvcihSMzJTICpkc3QsIGNvbnN0
IGdsOjpDb2xvckkgKnNyYykKK3sKKyAgICBkc3QtPlIgPSBzdGF0aWNfY2FzdDxpbnQzMl90Pihz
cmMtPnJlZCk7Cit9CisKK3ZvaWQgUjMyUzo6d3JpdGVDb2xvcihSMzJTICpkc3QsIGNvbnN0IGds
OjpDb2xvckYgKnNyYykKK3sKKyAgICBkc3QtPlIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8aW50
MzJfdD4oc3JjLT5yZWQpOworfQorCit2b2lkIFIzMlM6OmF2ZXJhZ2UoUjMyUyAqZHN0LCBjb25z
dCBSMzJTICpzcmMxLCBjb25zdCBSMzJTICpzcmMyKQoreworICAgIGRzdC0+UiA9IGdsOjphdmVy
YWdlKHNyYzEtPlIsIHNyYzItPlIpOworfQorCit2b2lkIFIzMkczMlM6OnJlYWRDb2xvcihnbDo6
Q29sb3JJICpkc3QsIGNvbnN0IFIzMkczMlMgKnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gc3Jj
LT5SOworICAgIGRzdC0+Z3JlZW4gPSBzcmMtPkc7CisgICAgZHN0LT5ibHVlICA9IDA7CisgICAg
ZHN0LT5hbHBoYSA9IDE7Cit9CisKK3ZvaWQgUjMyRzMyUzo6cmVhZENvbG9yKGdsOjpDb2xvckYg
KmRzdCwgY29uc3QgUjMyRzMyUyAqc3JjKQoreworICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFs
aXplZFRvRmxvYXQoc3JjLT5SKTsKKyAgICBkc3QtPmdyZWVuID0gZ2w6Om5vcm1hbGl6ZWRUb0Zs
b2F0KHNyYy0+Ryk7CisgICAgZHN0LT5ibHVlICA9IDAuMGY7CisgICAgZHN0LT5hbHBoYSA9IDEu
MGY7Cit9CisKK3ZvaWQgUjMyRzMyUzo6d3JpdGVDb2xvcihSMzJHMzJTICpkc3QsIGNvbnN0IGds
OjpDb2xvckkgKnNyYykKK3sKKyAgICBkc3QtPlIgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihzcmMt
PnJlZCk7CisgICAgZHN0LT5HID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oc3JjLT5ncmVlbik7Cit9
CisKK3ZvaWQgUjMyRzMyUzo6d3JpdGVDb2xvcihSMzJHMzJTICpkc3QsIGNvbnN0IGdsOjpDb2xv
ckYgKnNyYykKK3sKKyAgICBkc3QtPlIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8aW50MzJfdD4o
c3JjLT5yZWQpOworICAgIGRzdC0+RyA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDxpbnQzMl90Pihz
cmMtPmdyZWVuKTsKK30KKwordm9pZCBSMzJHMzJTOjphdmVyYWdlKFIzMkczMlMgKmRzdCwgY29u
c3QgUjMyRzMyUyAqc3JjMSwgY29uc3QgUjMyRzMyUyAqc3JjMikKK3sKKyAgICBkc3QtPlIgPSBn
bDo6YXZlcmFnZShzcmMxLT5SLCBzcmMyLT5SKTsKKyAgICBkc3QtPkcgPSBnbDo6YXZlcmFnZShz
cmMxLT5HLCBzcmMyLT5HKTsKK30KKwordm9pZCBSMzJHMzJCMzJTOjpyZWFkQ29sb3IoZ2w6OkNv
bG9ySSAqZHN0LCBjb25zdCBSMzJHMzJCMzJTICpzcmMpCit7CisgICAgZHN0LT5yZWQgICA9IHNy
Yy0+UjsKKyAgICBkc3QtPmdyZWVuID0gc3JjLT5HOworICAgIGRzdC0+Ymx1ZSAgPSBzcmMtPkI7
CisgICAgZHN0LT5hbHBoYSA9IDE7Cit9CisKK3ZvaWQgUjMyRzMyQjMyUzo6cmVhZENvbG9yKGds
OjpDb2xvckYgKmRzdCwgY29uc3QgUjMyRzMyQjMyUyAqc3JjKQoreworICAgIGRzdC0+cmVkICAg
PSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5SKTsKKyAgICBkc3QtPmdyZWVuID0gZ2w6Om5v
cm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Ryk7CisgICAgZHN0LT5ibHVlICA9IGdsOjpub3JtYWxpemVk
VG9GbG9hdChzcmMtPkIpOworICAgIGRzdC0+YWxwaGEgPSAxLjBmOworfQorCit2b2lkIFIzMkcz
MkIzMlM6OndyaXRlQ29sb3IoUjMyRzMyQjMyUyAqZHN0LCBjb25zdCBnbDo6Q29sb3JJICpzcmMp
Cit7CisgICAgZHN0LT5SID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oc3JjLT5yZWQpOworICAgIGRz
dC0+RyA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHNyYy0+Z3JlZW4pOworICAgIGRzdC0+QiA9IHN0
YXRpY19jYXN0PGludDMyX3Q+KHNyYy0+Ymx1ZSk7Cit9CisKK3ZvaWQgUjMyRzMyQjMyUzo6d3Jp
dGVDb2xvcihSMzJHMzJCMzJTICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKK3sKKyAgICBk
c3QtPlIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8aW50MzJfdD4oc3JjLT5yZWQpOworICAgIGRz
dC0+RyA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDxpbnQzMl90PihzcmMtPmdyZWVuKTsKKyAgICBk
c3QtPkIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8aW50MzJfdD4oc3JjLT5ibHVlKTsKK30KKwor
dm9pZCBSMzJHMzJCMzJTOjphdmVyYWdlKFIzMkczMkIzMlMgKmRzdCwgY29uc3QgUjMyRzMyQjMy
UyAqc3JjMSwgY29uc3QgUjMyRzMyQjMyUyAqc3JjMikKK3sKKyAgICBkc3QtPlIgPSBnbDo6YXZl
cmFnZShzcmMxLT5SLCBzcmMyLT5SKTsKKyAgICBkc3QtPkcgPSBnbDo6YXZlcmFnZShzcmMxLT5H
LCBzcmMyLT5HKTsKKyAgICBkc3QtPkIgPSBnbDo6YXZlcmFnZShzcmMxLT5CLCBzcmMyLT5CKTsK
K30KKwordm9pZCBSMzJHMzJCMzJBMzJTOjpyZWFkQ29sb3IoZ2w6OkNvbG9ySSAqZHN0LCBjb25z
dCBSMzJHMzJCMzJBMzJTICpzcmMpCit7CisgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKKyAgICBk
c3QtPmdyZWVuID0gc3JjLT5HOworICAgIGRzdC0+Ymx1ZSAgPSBzcmMtPkI7CisgICAgZHN0LT5h
bHBoYSA9IHNyYy0+QTsKK30KKwordm9pZCBSMzJHMzJCMzJBMzJTOjpyZWFkQ29sb3IoZ2w6OkNv
bG9yRiAqZHN0LCBjb25zdCBSMzJHMzJCMzJBMzJTICpzcmMpCit7CisgICAgZHN0LT5yZWQgICA9
IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPlIpOworICAgIGRzdC0+Z3JlZW4gPSBnbDo6bm9y
bWFsaXplZFRvRmxvYXQoc3JjLT5HKTsKKyAgICBkc3QtPmJsdWUgID0gZ2w6Om5vcm1hbGl6ZWRU
b0Zsb2F0KHNyYy0+Qik7CisgICAgZHN0LT5hbHBoYSA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChz
cmMtPkEpOworfQorCit2b2lkIFIzMkczMkIzMkEzMlM6OndyaXRlQ29sb3IoUjMyRzMyQjMyQTMy
UyAqZHN0LCBjb25zdCBnbDo6Q29sb3JJICpzcmMpCit7CisgICAgZHN0LT5SID0gc3RhdGljX2Nh
c3Q8aW50MzJfdD4oc3JjLT5yZWQpOworICAgIGRzdC0+RyA9IHN0YXRpY19jYXN0PGludDMyX3Q+
KHNyYy0+Z3JlZW4pOworICAgIGRzdC0+QiA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHNyYy0+Ymx1
ZSk7CisgICAgZHN0LT5BID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oc3JjLT5hbHBoYSk7Cit9CisK
K3ZvaWQgUjMyRzMyQjMyQTMyUzo6d3JpdGVDb2xvcihSMzJHMzJCMzJBMzJTICpkc3QsIGNvbnN0
IGdsOjpDb2xvckYgKnNyYykKK3sKKyAgICBkc3QtPlIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8
aW50MzJfdD4oc3JjLT5yZWQpOworICAgIGRzdC0+RyA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDxp
bnQzMl90PihzcmMtPmdyZWVuKTsKKyAgICBkc3QtPkIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8
aW50MzJfdD4oc3JjLT5ibHVlKTsKKyAgICBkc3QtPkEgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8
aW50MzJfdD4oc3JjLT5hbHBoYSk7Cit9CisKK3ZvaWQgUjMyRzMyQjMyQTMyUzo6YXZlcmFnZShS
MzJHMzJCMzJBMzJTICpkc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUjMy
RzMyQjMyQTMyUyAqc3JjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSMzJH
MzJCMzJBMzJTICpzcmMyKQoreworICAgIGRzdC0+UiA9IGdsOjphdmVyYWdlKHNyYzEtPlIsIHNy
YzItPlIpOworICAgIGRzdC0+RyA9IGdsOjphdmVyYWdlKHNyYzEtPkcsIHNyYzItPkcpOworICAg
IGRzdC0+QiA9IGdsOjphdmVyYWdlKHNyYzEtPkIsIHNyYzItPkIpOworICAgIGRzdC0+QSA9IGds
OjphdmVyYWdlKHNyYzEtPkEsIHNyYzItPkEpOworfQorCit2b2lkIEExNkIxNkcxNlIxNkY6OnJl
YWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IEExNkIxNkcxNlIxNkYgKnNyYykKK3sKKyAg
ICBkc3QtPnJlZCAgID0gZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoc3JjLT5SKTsKKyAgICBkc3QtPmdy
ZWVuID0gZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoc3JjLT5HKTsKKyAgICBkc3QtPmJsdWUgID0gZ2w6
OmZsb2F0MTZUb0Zsb2F0MzIoc3JjLT5CKTsKKyAgICBkc3QtPmFscGhhID0gZ2w6OmZsb2F0MTZU
b0Zsb2F0MzIoc3JjLT5BKTsKK30KKwordm9pZCBBMTZCMTZHMTZSMTZGOjp3cml0ZUNvbG9yKEEx
NkIxNkcxNlIxNkYgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQoreworICAgIGRzdC0+UiA9
IGdsOjpmbG9hdDMyVG9GbG9hdDE2KHNyYy0+cmVkKTsKKyAgICBkc3QtPkcgPSBnbDo6ZmxvYXQz
MlRvRmxvYXQxNihzcmMtPmdyZWVuKTsKKyAgICBkc3QtPkIgPSBnbDo6ZmxvYXQzMlRvRmxvYXQx
NihzcmMtPmJsdWUpOworICAgIGRzdC0+QSA9IGdsOjpmbG9hdDMyVG9GbG9hdDE2KHNyYy0+YWxw
aGEpOworfQorCit2b2lkIEExNkIxNkcxNlIxNkY6OmF2ZXJhZ2UoQTE2QjE2RzE2UjE2RiAqZHN0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEExNkIxNkcxNlIxNkYgKnNyYzEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQTE2QjE2RzE2UjE2RiAqc3JjMikK
K3sKKyAgICBkc3QtPlIgPSBnbDo6YXZlcmFnZUhhbGZGbG9hdChzcmMxLT5SLCBzcmMyLT5SKTsK
KyAgICBkc3QtPkcgPSBnbDo6YXZlcmFnZUhhbGZGbG9hdChzcmMxLT5HLCBzcmMyLT5HKTsKKyAg
ICBkc3QtPkIgPSBnbDo6YXZlcmFnZUhhbGZGbG9hdChzcmMxLT5CLCBzcmMyLT5CKTsKKyAgICBk
c3QtPkEgPSBnbDo6YXZlcmFnZUhhbGZGbG9hdChzcmMxLT5BLCBzcmMyLT5BKTsKK30KKwordm9p
ZCBSMTZHMTZCMTZBMTZGOjpyZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMTZHMTZC
MTZBMTZGICpzcmMpCit7CisgICAgZHN0LT5yZWQgICA9IGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNy
Yy0+Uik7CisgICAgZHN0LT5ncmVlbiA9IGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNyYy0+Ryk7Cisg
ICAgZHN0LT5ibHVlICA9IGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNyYy0+Qik7CisgICAgZHN0LT5h
bHBoYSA9IGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNyYy0+QSk7Cit9CisKK3ZvaWQgUjE2RzE2QjE2
QTE2Rjo6d3JpdGVDb2xvcihSMTZHMTZCMTZBMTZGICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNy
YykKK3sKKyAgICBkc3QtPlIgPSBnbDo6ZmxvYXQzMlRvRmxvYXQxNihzcmMtPnJlZCk7CisgICAg
ZHN0LT5HID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTYoc3JjLT5ncmVlbik7CisgICAgZHN0LT5CID0g
Z2w6OmZsb2F0MzJUb0Zsb2F0MTYoc3JjLT5ibHVlKTsKKyAgICBkc3QtPkEgPSBnbDo6ZmxvYXQz
MlRvRmxvYXQxNihzcmMtPmFscGhhKTsKK30KKwordm9pZCBSMTZHMTZCMTZBMTZGOjphdmVyYWdl
KFIxNkcxNkIxNkExNkYgKmRzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBS
MTZHMTZCMTZBMTZGICpzcmMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFIx
NkcxNkIxNkExNkYgKnNyYzIpCit7CisgICAgZHN0LT5SID0gZ2w6OmF2ZXJhZ2VIYWxmRmxvYXQo
c3JjMS0+Uiwgc3JjMi0+Uik7CisgICAgZHN0LT5HID0gZ2w6OmF2ZXJhZ2VIYWxmRmxvYXQoc3Jj
MS0+Rywgc3JjMi0+Ryk7CisgICAgZHN0LT5CID0gZ2w6OmF2ZXJhZ2VIYWxmRmxvYXQoc3JjMS0+
Qiwgc3JjMi0+Qik7CisgICAgZHN0LT5BID0gZ2w6OmF2ZXJhZ2VIYWxmRmxvYXQoc3JjMS0+QSwg
c3JjMi0+QSk7Cit9CisKK3ZvaWQgUjE2Rjo6cmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29u
c3QgUjE2RiAqc3JjKQoreworICAgIGRzdC0+cmVkICAgPSBnbDo6ZmxvYXQxNlRvRmxvYXQzMihz
cmMtPlIpOworICAgIGRzdC0+Z3JlZW4gPSAwLjBmOworICAgIGRzdC0+Ymx1ZSAgPSAwLjBmOwor
ICAgIGRzdC0+YWxwaGEgPSAxLjBmOworfQorCit2b2lkIFIxNkY6OndyaXRlQ29sb3IoUjE2RiAq
ZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCit7CisgICAgZHN0LT5SID0gZ2w6OmZsb2F0MzJU
b0Zsb2F0MTYoc3JjLT5yZWQpOworfQorCit2b2lkIFIxNkY6OmF2ZXJhZ2UoUjE2RiAqZHN0LCBj
b25zdCBSMTZGICpzcmMxLCBjb25zdCBSMTZGICpzcmMyKQoreworICAgIGRzdC0+UiA9IGdsOjph
dmVyYWdlSGFsZkZsb2F0KHNyYzEtPlIsIHNyYzItPlIpOworfQorCit2b2lkIEExNkY6OnJlYWRD
b2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IEExNkYgKnNyYykKK3sKKyAgICBkc3QtPnJlZCAg
ID0gMC4wZjsKKyAgICBkc3QtPmdyZWVuID0gMC4wZjsKKyAgICBkc3QtPmJsdWUgID0gMC4wZjsK
KyAgICBkc3QtPmFscGhhID0gZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoc3JjLT5BKTsKK30KKwordm9p
ZCBBMTZGOjp3cml0ZUNvbG9yKEExNkYgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQorewor
ICAgIGRzdC0+QSA9IGdsOjpmbG9hdDMyVG9GbG9hdDE2KHNyYy0+YWxwaGEpOworfQorCit2b2lk
IEExNkY6OmF2ZXJhZ2UoQTE2RiAqZHN0LCBjb25zdCBBMTZGICpzcmMxLCBjb25zdCBBMTZGICpz
cmMyKQoreworICAgIGRzdC0+QSA9IGdsOjphdmVyYWdlSGFsZkZsb2F0KHNyYzEtPkEsIHNyYzIt
PkEpOworfQorCit2b2lkIEwxNkY6OnJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IEwx
NkYgKnNyYykKK3sKKyAgICBmbG9hdCBsdW0gID0gZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoc3JjLT5M
KTsKKyAgICBkc3QtPnJlZCAgID0gbHVtOworICAgIGRzdC0+Z3JlZW4gPSBsdW07CisgICAgZHN0
LT5ibHVlICA9IGx1bTsKKyAgICBkc3QtPmFscGhhID0gMS4wZjsKK30KKwordm9pZCBMMTZGOjp3
cml0ZUNvbG9yKEwxNkYgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQoreworICAgIGRzdC0+
TCA9IGdsOjpmbG9hdDMyVG9GbG9hdDE2KHNyYy0+cmVkKTsKK30KKwordm9pZCBMMTZGOjphdmVy
YWdlKEwxNkYgKmRzdCwgY29uc3QgTDE2RiAqc3JjMSwgY29uc3QgTDE2RiAqc3JjMikKK3sKKyAg
ICBkc3QtPkwgPSBnbDo6YXZlcmFnZUhhbGZGbG9hdChzcmMxLT5MLCBzcmMyLT5MKTsKK30KKwor
dm9pZCBMMTZBMTZGOjpyZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBMMTZBMTZGICpz
cmMpCit7CisgICAgZmxvYXQgbHVtICA9IGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNyYy0+TCk7Cisg
ICAgZHN0LT5yZWQgICA9IGx1bTsKKyAgICBkc3QtPmdyZWVuID0gbHVtOworICAgIGRzdC0+Ymx1
ZSAgPSBsdW07CisgICAgZHN0LT5hbHBoYSA9IGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNyYy0+QSk7
Cit9CisKK3ZvaWQgTDE2QTE2Rjo6d3JpdGVDb2xvcihMMTZBMTZGICpkc3QsIGNvbnN0IGdsOjpD
b2xvckYgKnNyYykKK3sKKyAgICBkc3QtPkwgPSBnbDo6ZmxvYXQzMlRvRmxvYXQxNihzcmMtPnJl
ZCk7CisgICAgZHN0LT5BID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTYoc3JjLT5hbHBoYSk7Cit9CisK
K3ZvaWQgTDE2QTE2Rjo6YXZlcmFnZShMMTZBMTZGICpkc3QsIGNvbnN0IEwxNkExNkYgKnNyYzEs
IGNvbnN0IEwxNkExNkYgKnNyYzIpCit7CisgICAgZHN0LT5MID0gZ2w6OmF2ZXJhZ2VIYWxmRmxv
YXQoc3JjMS0+TCwgc3JjMi0+TCk7CisgICAgZHN0LT5BID0gZ2w6OmF2ZXJhZ2VIYWxmRmxvYXQo
c3JjMS0+QSwgc3JjMi0+QSk7Cit9CisKK3ZvaWQgUjE2RzE2Rjo6cmVhZENvbG9yKGdsOjpDb2xv
ckYgKmRzdCwgY29uc3QgUjE2RzE2RiAqc3JjKQoreworICAgIGRzdC0+cmVkICAgPSBnbDo6Zmxv
YXQxNlRvRmxvYXQzMihzcmMtPlIpOworICAgIGRzdC0+Z3JlZW4gPSBnbDo6ZmxvYXQxNlRvRmxv
YXQzMihzcmMtPkcpOworICAgIGRzdC0+Ymx1ZSAgPSAwLjBmOworICAgIGRzdC0+YWxwaGEgPSAx
LjBmOworfQorCit2b2lkIFIxNkcxNkY6OndyaXRlQ29sb3IoUjE2RzE2RiAqZHN0LCBjb25zdCBn
bDo6Q29sb3JGICpzcmMpCit7CisgICAgZHN0LT5SID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTYoc3Jj
LT5yZWQpOworICAgIGRzdC0+RyA9IGdsOjpmbG9hdDMyVG9GbG9hdDE2KHNyYy0+Z3JlZW4pOwor
fQorCit2b2lkIFIxNkcxNkY6OmF2ZXJhZ2UoUjE2RzE2RiAqZHN0LCBjb25zdCBSMTZHMTZGICpz
cmMxLCBjb25zdCBSMTZHMTZGICpzcmMyKQoreworICAgIGRzdC0+UiA9IGdsOjphdmVyYWdlSGFs
ZkZsb2F0KHNyYzEtPlIsIHNyYzItPlIpOworICAgIGRzdC0+RyA9IGdsOjphdmVyYWdlSGFsZkZs
b2F0KHNyYzEtPkcsIHNyYzItPkcpOworfQorCit2b2lkIFIxNkcxNkIxNkY6OnJlYWRDb2xvcihn
bDo6Q29sb3JGICpkc3QsIGNvbnN0IFIxNkcxNkIxNkYgKnNyYykKK3sKKyAgICBkc3QtPnJlZCAg
ID0gZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoc3JjLT5SKTsKKyAgICBkc3QtPmdyZWVuID0gZ2w6OmZs
b2F0MTZUb0Zsb2F0MzIoc3JjLT5HKTsKKyAgICBkc3QtPmJsdWUgID0gZ2w6OmZsb2F0MTZUb0Zs
b2F0MzIoc3JjLT5CKTsKKyAgICBkc3QtPmFscGhhID0gMS4wZjsKK30KKwordm9pZCBSMTZHMTZC
MTZGOjp3cml0ZUNvbG9yKFIxNkcxNkIxNkYgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQor
eworICAgIGRzdC0+UiA9IGdsOjpmbG9hdDMyVG9GbG9hdDE2KHNyYy0+cmVkKTsKKyAgICBkc3Qt
PkcgPSBnbDo6ZmxvYXQzMlRvRmxvYXQxNihzcmMtPmdyZWVuKTsKKyAgICBkc3QtPkIgPSBnbDo6
ZmxvYXQzMlRvRmxvYXQxNihzcmMtPmJsdWUpOworfQorCit2b2lkIFIxNkcxNkIxNkY6OmF2ZXJh
Z2UoUjE2RzE2QjE2RiAqZHN0LCBjb25zdCBSMTZHMTZCMTZGICpzcmMxLCBjb25zdCBSMTZHMTZC
MTZGICpzcmMyKQoreworICAgIGRzdC0+UiA9IGdsOjphdmVyYWdlSGFsZkZsb2F0KHNyYzEtPlIs
IHNyYzItPlIpOworICAgIGRzdC0+RyA9IGdsOjphdmVyYWdlSGFsZkZsb2F0KHNyYzEtPkcsIHNy
YzItPkcpOworICAgIGRzdC0+QiA9IGdsOjphdmVyYWdlSGFsZkZsb2F0KHNyYzEtPkIsIHNyYzIt
PkIpOworfQorCit2b2lkIEEzMkIzMkczMlIzMkY6OnJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3Qs
IGNvbnN0IEEzMkIzMkczMlIzMkYgKnNyYykKK3sKKyAgICBkc3QtPnJlZCAgID0gc3JjLT5SOwor
ICAgIGRzdC0+Z3JlZW4gPSBzcmMtPkc7CisgICAgZHN0LT5ibHVlICA9IHNyYy0+QjsKKyAgICBk
c3QtPmFscGhhID0gc3JjLT5BOworfQorCit2b2lkIEEzMkIzMkczMlIzMkY6OndyaXRlQ29sb3Io
QTMyQjMyRzMyUjMyRiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCit7CisgICAgZHN0LT5S
ID0gc3JjLT5yZWQ7CisgICAgZHN0LT5HID0gc3JjLT5ncmVlbjsKKyAgICBkc3QtPkIgPSBzcmMt
PmJsdWU7CisgICAgZHN0LT5BID0gc3JjLT5hbHBoYTsKK30KKwordm9pZCBBMzJCMzJHMzJSMzJG
OjphdmVyYWdlKEEzMkIzMkczMlIzMkYgKmRzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBBMzJCMzJHMzJSMzJGICpzcmMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEEzMkIzMkczMlIzMkYgKnNyYzIpCit7CisgICAgZHN0LT5SID0gZ2w6OmF2ZXJhZ2Uo
c3JjMS0+Uiwgc3JjMi0+Uik7CisgICAgZHN0LT5HID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Rywgc3Jj
Mi0+Ryk7CisgICAgZHN0LT5CID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Qiwgc3JjMi0+Qik7CisgICAg
ZHN0LT5BID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+QSwgc3JjMi0+QSk7Cit9CisKK3ZvaWQgUjMyRzMy
QjMyQTMyRjo6cmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjMyRzMyQjMyQTMyRiAq
c3JjKQoreworICAgIGRzdC0+cmVkICAgPSBzcmMtPlI7CisgICAgZHN0LT5ncmVlbiA9IHNyYy0+
RzsKKyAgICBkc3QtPmJsdWUgID0gc3JjLT5COworICAgIGRzdC0+YWxwaGEgPSBzcmMtPkE7Cit9
CisKK3ZvaWQgUjMyRzMyQjMyQTMyRjo6d3JpdGVDb2xvcihSMzJHMzJCMzJBMzJGICpkc3QsIGNv
bnN0IGdsOjpDb2xvckYgKnNyYykKK3sKKyAgICBkc3QtPlIgPSBzcmMtPnJlZDsKKyAgICBkc3Qt
PkcgPSBzcmMtPmdyZWVuOworICAgIGRzdC0+QiA9IHNyYy0+Ymx1ZTsKKyAgICBkc3QtPkEgPSBz
cmMtPmFscGhhOworfQorCit2b2lkIFIzMkczMkIzMkEzMkY6OmF2ZXJhZ2UoUjMyRzMyQjMyQTMy
RiAqZHN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFIzMkczMkIzMkEzMkYg
KnNyYzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUjMyRzMyQjMyQTMyRiAq
c3JjMikKK3sKKyAgICBkc3QtPlIgPSBnbDo6YXZlcmFnZShzcmMxLT5SLCBzcmMyLT5SKTsKKyAg
ICBkc3QtPkcgPSBnbDo6YXZlcmFnZShzcmMxLT5HLCBzcmMyLT5HKTsKKyAgICBkc3QtPkIgPSBn
bDo6YXZlcmFnZShzcmMxLT5CLCBzcmMyLT5CKTsKKyAgICBkc3QtPkEgPSBnbDo6YXZlcmFnZShz
cmMxLT5BLCBzcmMyLT5BKTsKK30KKwordm9pZCBSMzJGOjpyZWFkQ29sb3IoZ2w6OkNvbG9yRiAq
ZHN0LCBjb25zdCBSMzJGICpzcmMpCit7CisgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKKyAgICBk
c3QtPmdyZWVuID0gMC4wZjsKKyAgICBkc3QtPmJsdWUgID0gMC4wZjsKKyAgICBkc3QtPmFscGhh
ID0gMS4wZjsKK30KKwordm9pZCBSMzJGOjp3cml0ZUNvbG9yKFIzMkYgKmRzdCwgY29uc3QgZ2w6
OkNvbG9yRiAqc3JjKQoreworICAgIGRzdC0+UiA9IHNyYy0+cmVkOworfQorCit2b2lkIFIzMkY6
OmF2ZXJhZ2UoUjMyRiAqZHN0LCBjb25zdCBSMzJGICpzcmMxLCBjb25zdCBSMzJGICpzcmMyKQor
eworICAgIGRzdC0+UiA9IGdsOjphdmVyYWdlKHNyYzEtPlIsIHNyYzItPlIpOworfQorCit2b2lk
IEEzMkY6OnJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IEEzMkYgKnNyYykKK3sKKyAg
ICBkc3QtPnJlZCAgID0gMC4wZjsKKyAgICBkc3QtPmdyZWVuID0gMC4wZjsKKyAgICBkc3QtPmJs
dWUgID0gMC4wZjsKKyAgICBkc3QtPmFscGhhID0gc3JjLT5BOworfQorCit2b2lkIEEzMkY6Ondy
aXRlQ29sb3IoQTMyRiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCit7CisgICAgZHN0LT5B
ID0gc3JjLT5hbHBoYTsKK30KKwordm9pZCBBMzJGOjphdmVyYWdlKEEzMkYgKmRzdCwgY29uc3Qg
QTMyRiAqc3JjMSwgY29uc3QgQTMyRiAqc3JjMikKK3sKKyAgICBkc3QtPkEgPSBnbDo6YXZlcmFn
ZShzcmMxLT5BLCBzcmMyLT5BKTsKK30KKwordm9pZCBMMzJGOjpyZWFkQ29sb3IoZ2w6OkNvbG9y
RiAqZHN0LCBjb25zdCBMMzJGICpzcmMpCit7CisgICAgZHN0LT5yZWQgICA9IHNyYy0+TDsKKyAg
ICBkc3QtPmdyZWVuID0gc3JjLT5MOworICAgIGRzdC0+Ymx1ZSAgPSBzcmMtPkw7CisgICAgZHN0
LT5hbHBoYSA9IDEuMGY7Cit9CisKK3ZvaWQgTDMyRjo6d3JpdGVDb2xvcihMMzJGICpkc3QsIGNv
bnN0IGdsOjpDb2xvckYgKnNyYykKK3sKKyAgICBkc3QtPkwgPSBzcmMtPnJlZDsKK30KKwordm9p
ZCBMMzJGOjphdmVyYWdlKEwzMkYgKmRzdCwgY29uc3QgTDMyRiAqc3JjMSwgY29uc3QgTDMyRiAq
c3JjMikKK3sKKyAgICBkc3QtPkwgPSBnbDo6YXZlcmFnZShzcmMxLT5MLCBzcmMyLT5MKTsKK30K
Kwordm9pZCBMMzJBMzJGOjpyZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBMMzJBMzJG
ICpzcmMpCit7CisgICAgZHN0LT5yZWQgICA9IHNyYy0+TDsKKyAgICBkc3QtPmdyZWVuID0gc3Jj
LT5MOworICAgIGRzdC0+Ymx1ZSAgPSBzcmMtPkw7CisgICAgZHN0LT5hbHBoYSA9IHNyYy0+QTsK
K30KKwordm9pZCBMMzJBMzJGOjp3cml0ZUNvbG9yKEwzMkEzMkYgKmRzdCwgY29uc3QgZ2w6OkNv
bG9yRiAqc3JjKQoreworICAgIGRzdC0+TCA9IHNyYy0+cmVkOworICAgIGRzdC0+QSA9IHNyYy0+
YWxwaGE7Cit9CisKK3ZvaWQgTDMyQTMyRjo6YXZlcmFnZShMMzJBMzJGICpkc3QsIGNvbnN0IEwz
MkEzMkYgKnNyYzEsIGNvbnN0IEwzMkEzMkYgKnNyYzIpCit7CisgICAgZHN0LT5MID0gZ2w6OmF2
ZXJhZ2Uoc3JjMS0+TCwgc3JjMi0+TCk7CisgICAgZHN0LT5BID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+
QSwgc3JjMi0+QSk7Cit9CisKK3ZvaWQgUjMyRzMyRjo6cmVhZENvbG9yKGdsOjpDb2xvckYgKmRz
dCwgY29uc3QgUjMyRzMyRiAqc3JjKQoreworICAgIGRzdC0+cmVkICAgPSBzcmMtPlI7CisgICAg
ZHN0LT5ncmVlbiA9IHNyYy0+RzsKKyAgICBkc3QtPmJsdWUgID0gMC4wZjsKKyAgICBkc3QtPmFs
cGhhID0gMS4wZjsKK30KKwordm9pZCBSMzJHMzJGOjp3cml0ZUNvbG9yKFIzMkczMkYgKmRzdCwg
Y29uc3QgZ2w6OkNvbG9yRiAqc3JjKQoreworICAgIGRzdC0+UiA9IHNyYy0+cmVkOworICAgIGRz
dC0+RyA9IHNyYy0+Z3JlZW47Cit9CisKK3ZvaWQgUjMyRzMyRjo6YXZlcmFnZShSMzJHMzJGICpk
c3QsIGNvbnN0IFIzMkczMkYgKnNyYzEsIGNvbnN0IFIzMkczMkYgKnNyYzIpCit7CisgICAgZHN0
LT5SID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Uiwgc3JjMi0+Uik7CisgICAgZHN0LT5HID0gZ2w6OmF2
ZXJhZ2Uoc3JjMS0+Rywgc3JjMi0+Ryk7Cit9CisKK3ZvaWQgUjMyRzMyQjMyRjo6cmVhZENvbG9y
KGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjMyRzMyQjMyRiAqc3JjKQoreworICAgIGRzdC0+cmVk
ICAgPSBzcmMtPlI7CisgICAgZHN0LT5ncmVlbiA9IHNyYy0+RzsKKyAgICBkc3QtPmJsdWUgID0g
c3JjLT5COworICAgIGRzdC0+YWxwaGEgPSAxLjBmOworfQorCit2b2lkIFIzMkczMkIzMkY6Ondy
aXRlQ29sb3IoUjMyRzMyQjMyRiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCit7CisgICAg
ZHN0LT5SID0gc3JjLT5yZWQ7CisgICAgZHN0LT5HID0gc3JjLT5ncmVlbjsKKyAgICBkc3QtPkIg
PSBzcmMtPmJsdWU7Cit9CisKK3ZvaWQgUjMyRzMyQjMyRjo6YXZlcmFnZShSMzJHMzJCMzJGICpk
c3QsIGNvbnN0IFIzMkczMkIzMkYgKnNyYzEsIGNvbnN0IFIzMkczMkIzMkYgKnNyYzIpCit7Cisg
ICAgZHN0LT5SID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Uiwgc3JjMi0+Uik7CisgICAgZHN0LT5HID0g
Z2w6OmF2ZXJhZ2Uoc3JjMS0+Rywgc3JjMi0+Ryk7CisgICAgZHN0LT5CID0gZ2w6OmF2ZXJhZ2Uo
c3JjMS0+Qiwgc3JjMi0+Qik7Cit9CisKK3ZvaWQgUjEwRzEwQjEwQTI6OnJlYWRDb2xvcihnbDo6
Q29sb3JVSSAqZHN0LCBjb25zdCBSMTBHMTBCMTBBMiAqc3JjKQoreworICAgIGRzdC0+cmVkICAg
PSBzcmMtPlI7CisgICAgZHN0LT5ncmVlbiA9IHNyYy0+RzsKKyAgICBkc3QtPmJsdWUgID0gc3Jj
LT5COworICAgIGRzdC0+YWxwaGEgPSBzcmMtPkE7Cit9CisKK3ZvaWQgUjEwRzEwQjEwQTI6OnJl
YWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIxMEcxMEIxMEEyICpzcmMpCit7CisgICAg
ZHN0LT5yZWQgICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdDwxMD4oc3JjLT5SKTsKKyAgICBkc3Qt
PmdyZWVuID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0PDEwPihzcmMtPkcpOworICAgIGRzdC0+Ymx1
ZSAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQ8MTA+KHNyYy0+Qik7CisgICAgZHN0LT5hbHBoYSA9
IGdsOjpub3JtYWxpemVkVG9GbG9hdDwyPihzcmMtPkEpOworfQorCit2b2lkIFIxMEcxMEIxMEEy
Ojp3cml0ZUNvbG9yKFIxMEcxMEIxMEEyICpkc3QsIGNvbnN0IGdsOjpDb2xvclVJICpzcmMpCit7
CisgICAgZHN0LT5SID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHNyYy0+cmVkKTsKKyAgICBkc3Qt
PkcgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3JjLT5ncmVlbik7CisgICAgZHN0LT5CID0gc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KHNyYy0+Ymx1ZSk7CisgICAgZHN0LT5BID0gc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KHNyYy0+YWxwaGEpOworfQorCit2b2lkIFIxMEcxMEIxMEEyOjp3cml0ZUNvbG9y
KFIxMEcxMEIxMEEyICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKK3sKKyAgICBkc3QtPlIg
PSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8MTAsIHVpbnQzMl90PihzcmMtPnJlZCk7CisgICAgZHN0
LT5HID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPDEwLCB1aW50MzJfdD4oc3JjLT5ncmVlbik7Cisg
ICAgZHN0LT5CID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPDEwLCB1aW50MzJfdD4oc3JjLT5ibHVl
KTsKKyAgICBkc3QtPkEgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8MiwgdWludDMyX3Q+KHNyYy0+
YWxwaGEpOworfQorCit2b2lkIFIxMEcxMEIxMEEyOjphdmVyYWdlKFIxMEcxMEIxMEEyICpkc3Qs
IGNvbnN0IFIxMEcxMEIxMEEyICpzcmMxLCBjb25zdCBSMTBHMTBCMTBBMiAqc3JjMikKK3sKKyAg
ICBkc3QtPlIgPSBnbDo6YXZlcmFnZShzcmMxLT5SLCBzcmMyLT5SKTsKKyAgICBkc3QtPkcgPSBn
bDo6YXZlcmFnZShzcmMxLT5HLCBzcmMyLT5HKTsKKyAgICBkc3QtPkIgPSBnbDo6YXZlcmFnZShz
cmMxLT5CLCBzcmMyLT5CKTsKKyAgICBkc3QtPkEgPSBnbDo6YXZlcmFnZShzcmMxLT5BLCBzcmMy
LT5BKTsKK30KKwordm9pZCBSOUc5QjlFNTo6cmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29u
c3QgUjlHOUI5RTUgKnNyYykKK3sKKyAgICBnbDo6Y29udmVydDk5OUU1dG9SR0JGbG9hdHMoZ2w6
OmJpdENhc3Q8dWludDMyX3Q+KCpzcmMpLCAmZHN0LT5yZWQsICZkc3QtPmdyZWVuLCAmZHN0LT5i
bHVlKTsKKyAgICBkc3QtPmFscGhhID0gMS4wZjsKK30KKwordm9pZCBSOUc5QjlFNTo6d3JpdGVD
b2xvcihSOUc5QjlFNSAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCit7CisgICAgKnJlaW50
ZXJwcmV0X2Nhc3Q8dWludDMyX3QgKj4oZHN0KSA9CisgICAgICAgIGdsOjpjb252ZXJ0UkdCRmxv
YXRzVG85OTlFNShzcmMtPnJlZCwgc3JjLT5ncmVlbiwgc3JjLT5ibHVlKTsKK30KKwordm9pZCBS
OUc5QjlFNTo6YXZlcmFnZShSOUc5QjlFNSAqZHN0LCBjb25zdCBSOUc5QjlFNSAqc3JjMSwgY29u
c3QgUjlHOUI5RTUgKnNyYzIpCit7CisgICAgZmxvYXQgcjEsIGcxLCBiMTsKKyAgICBnbDo6Y29u
dmVydDk5OUU1dG9SR0JGbG9hdHMoKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QgKj4o
c3JjMSksICZyMSwgJmcxLCAmYjEpOworCisgICAgZmxvYXQgcjIsIGcyLCBiMjsKKyAgICBnbDo6
Y29udmVydDk5OUU1dG9SR0JGbG9hdHMoKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3Qg
Kj4oc3JjMiksICZyMiwgJmcyLCAmYjIpOworCisgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDMy
X3QgKj4oZHN0KSA9CisgICAgICAgIGdsOjpjb252ZXJ0UkdCRmxvYXRzVG85OTlFNShnbDo6YXZl
cmFnZShyMSwgcjIpLCBnbDo6YXZlcmFnZShnMSwgZzIpLCBnbDo6YXZlcmFnZShiMSwgYjIpKTsK
K30KKwordm9pZCBSMTFHMTFCMTBGOjpyZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBS
MTFHMTFCMTBGICpzcmMpCit7CisgICAgZHN0LT5yZWQgICA9IGdsOjpmbG9hdDExVG9GbG9hdDMy
KHNyYy0+Uik7CisgICAgZHN0LT5ncmVlbiA9IGdsOjpmbG9hdDExVG9GbG9hdDMyKHNyYy0+Ryk7
CisgICAgZHN0LT5ibHVlICA9IGdsOjpmbG9hdDEwVG9GbG9hdDMyKHNyYy0+Qik7CisgICAgZHN0
LT5hbHBoYSA9IDEuMGY7Cit9CisKK3ZvaWQgUjExRzExQjEwRjo6d3JpdGVDb2xvcihSMTFHMTFC
MTBGICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKK3sKKyAgICBkc3QtPlIgPSBnbDo6Zmxv
YXQzMlRvRmxvYXQxMShzcmMtPnJlZCk7CisgICAgZHN0LT5HID0gZ2w6OmZsb2F0MzJUb0Zsb2F0
MTEoc3JjLT5ncmVlbik7CisgICAgZHN0LT5CID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTAoc3JjLT5i
bHVlKTsKK30KKwordm9pZCBSMTFHMTFCMTBGOjphdmVyYWdlKFIxMUcxMUIxMEYgKmRzdCwgY29u
c3QgUjExRzExQjEwRiAqc3JjMSwgY29uc3QgUjExRzExQjEwRiAqc3JjMikKK3sKKyAgICBkc3Qt
PlIgPSBnbDo6YXZlcmFnZUZsb2F0MTEoc3JjMS0+Uiwgc3JjMi0+Uik7CisgICAgZHN0LT5HID0g
Z2w6OmF2ZXJhZ2VGbG9hdDExKHNyYzEtPkcsIHNyYzItPkcpOworICAgIGRzdC0+QiA9IGdsOjph
dmVyYWdlRmxvYXQxMChzcmMxLT5CLCBzcmMyLT5CKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFu
Z2xlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvaW1hZ2VfdXRpbC9pbWFnZWZv
cm1hdHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvaW1hZ2Vf
dXRpbC9pbWFnZWZvcm1hdHMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvaW1hZ2VfdXRpbC9pbWFnZWZvcm1hdHMuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDY4OCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMy0yMDE1IFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gaW1hZ2Vmb3JtYXRzLmg6IERlZmlu
ZXMgaW1hZ2UgZm9ybWF0IHR5cGVzIHdpdGggZnVuY3Rpb25zIGZvciBtaXAgZ2VuZXJhdGlvbgor
Ly8gYW5kIGNvcHlpbmcuCisKKyNpZm5kZWYgSU1BR0VVVElMX0lNQUdFRk9STUFUU19IXworI2Rl
ZmluZSBJTUFHRVVUSUxfSU1BR0VGT1JNQVRTX0hfCisKKyNpbmNsdWRlICJjb21tb24vQ29sb3Iu
aCIKKworI2luY2x1ZGUgPGNzdGRpbnQ+CisKK25hbWVzcGFjZSBhbmdsZQoreworCisvLyBTZXZl
cmFsIHN0cnVjdHVyZXMgc2hhcmUgZnVuY3Rpb25hbGl0eSBmb3IgcmVhZGluZywgd3JpdGluZyBv
ciBtaXBtYXBwaW5nIGJ1dCB0aGUgbGF5b3V0CisvLyBtdXN0IG1hdGNoIHRoZSB0ZXh0dXJlIGZv
cm1hdCB3aGljaCB0aGUgc3RydWN0dXJlIHJlcHJlc2VudHMuIElmIGNvbGxhcHNpbmcgb3IgdHlw
ZWRlZmluZworLy8gc3RydWN0cyBpbiB0aGlzIGhlYWRlciwgbWFrZSBzdXJlIHRoZSBmdW5jdGlv
bmFsaXR5IGFuZCBtZW1vcnkgbGF5b3V0IGlzIGV4YWN0bHkgdGhlIHNhbWUuCisKK3N0cnVjdCBM
OAoreworICAgIHVpbnQ4X3QgTDsKKworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29s
b3JGICpkc3QsIGNvbnN0IEw4ICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoTDgg
KmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKEw4
ICpkc3QsIGNvbnN0IEw4ICpzcmMxLCBjb25zdCBMOCAqc3JjMik7Cit9OworCitzdHJ1Y3QgUjgK
K3sKKyAgICB1aW50OF90IFI7CisKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9y
RiAqZHN0LCBjb25zdCBSOCAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNv
bG9yVUkgKmRzdCwgY29uc3QgUjggKnNyYyk7CisgICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihS
OCAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29s
b3IoUjggKmRzdCwgY29uc3QgZ2w6OkNvbG9yVUkgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgYXZl
cmFnZShSOCAqZHN0LCBjb25zdCBSOCAqc3JjMSwgY29uc3QgUjggKnNyYzIpOworfTsKKworc3Ry
dWN0IEE4Cit7CisgICAgdWludDhfdCBBOworCisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGds
OjpDb2xvckYgKmRzdCwgY29uc3QgQTggKnNyYyk7CisgICAgc3RhdGljIHZvaWQgd3JpdGVDb2xv
cihBOCAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpOworICAgIHN0YXRpYyB2b2lkIGF2ZXJh
Z2UoQTggKmRzdCwgY29uc3QgQTggKnNyYzEsIGNvbnN0IEE4ICpzcmMyKTsKK307CisKK3N0cnVj
dCBMOEE4Cit7CisgICAgdWludDhfdCBMOworICAgIHVpbnQ4X3QgQTsKKworICAgIHN0YXRpYyB2
b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IEw4QTggKnNyYyk7CisgICAgc3Rh
dGljIHZvaWQgd3JpdGVDb2xvcihMOEE4ICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYyk7Cisg
ICAgc3RhdGljIHZvaWQgYXZlcmFnZShMOEE4ICpkc3QsIGNvbnN0IEw4QTggKnNyYzEsIGNvbnN0
IEw4QTggKnNyYzIpOworfTsKKworc3RydWN0IEE4TDgKK3sKKyAgICB1aW50OF90IEE7CisgICAg
dWludDhfdCBMOworCisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwg
Y29uc3QgQThMOCAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKEE4TDggKmRzdCwg
Y29uc3QgZ2w6OkNvbG9yRiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKEE4TDggKmRz
dCwgY29uc3QgQThMOCAqc3JjMSwgY29uc3QgQThMOCAqc3JjMik7Cit9OworCitzdHJ1Y3QgUjhH
OAoreworICAgIHVpbnQ4X3QgUjsKKyAgICB1aW50OF90IEc7CisKKyAgICBzdGF0aWMgdm9pZCBy
ZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSOEc4ICpzcmMpOworICAgIHN0YXRpYyB2
b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JVSSAqZHN0LCBjb25zdCBSOEc4ICpzcmMpOworICAgIHN0
YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjhHOCAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpOwor
ICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjhHOCAqZHN0LCBjb25zdCBnbDo6Q29sb3JVSSAq
c3JjKTsKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFI4RzggKmRzdCwgY29uc3QgUjhHOCAqc3Jj
MSwgY29uc3QgUjhHOCAqc3JjMik7Cit9OworCitzdHJ1Y3QgUjhHOEI4Cit7CisgICAgdWludDhf
dCBSOworICAgIHVpbnQ4X3QgRzsKKyAgICB1aW50OF90IEI7CisKKyAgICBzdGF0aWMgdm9pZCBy
ZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSOEc4QjggKnNyYyk7CisgICAgc3RhdGlj
IHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvclVJICpkc3QsIGNvbnN0IFI4RzhCOCAqc3JjKTsKKyAg
ICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFI4RzhCOCAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpz
cmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjhHOEI4ICpkc3QsIGNvbnN0IGdsOjpD
b2xvclVJICpzcmMpOworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjhHOEI4ICpkc3QsIGNvbnN0
IFI4RzhCOCAqc3JjMSwgY29uc3QgUjhHOEI4ICpzcmMyKTsKK307CisKK3N0cnVjdCBCOEc4UjgK
K3sKKyAgICB1aW50OF90IEI7CisgICAgdWludDhfdCBHOworICAgIHVpbnQ4X3QgUjsKKworICAg
IHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IEI4RzhSOCAqc3Jj
KTsKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yVUkgKmRzdCwgY29uc3QgQjhH
OFI4ICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoQjhHOFI4ICpkc3QsIGNvbnN0
IGdsOjpDb2xvckYgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihCOEc4UjggKmRz
dCwgY29uc3QgZ2w6OkNvbG9yVUkgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgYXZlcmFnZShCOEc4
UjggKmRzdCwgY29uc3QgQjhHOFI4ICpzcmMxLCBjb25zdCBCOEc4UjggKnNyYzIpOworfTsKKwor
c3RydWN0IFI1RzZCNQoreworICAgIC8vIE9wZW5HTCBFUyAyLjAuMjUgc3BlYyBTZWN0aW9uIDMu
Ni4yOiAiQ29tcG9uZW50cyBhcmUgcGFja2VkIHdpdGggdGhlIGZpcnN0IGNvbXBvbmVudCBpbiB0
aGUKKyAgICAvLyBtb3N0IHNpZ25pZmljYW50IGJpdHMgb2YgdGhlIGJpdGZpZWxkLCBhbmQgc3Vj
Y2Vzc2l2ZSBjb21wb25lbnQgb2NjdXB5aW5nIHByb2dyZXNzaXZlbHkgbGVzcworICAgIC8vIHNp
Z25pZmljYW50IGxvY2F0aW9ucyIKKyAgICB1aW50MTZfdCBSR0I7CisKKyAgICBzdGF0aWMgdm9p
ZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSNUc2QjUgKnNyYyk7CisgICAgc3Rh
dGljIHZvaWQgd3JpdGVDb2xvcihSNUc2QjUgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKTsK
KyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFI1RzZCNSAqZHN0LCBjb25zdCBSNUc2QjUgKnNyYzEs
IGNvbnN0IFI1RzZCNSAqc3JjMik7Cit9OworCitzdHJ1Y3QgQjVHNlI1Cit7CisgICAgdWludDE2
X3QgQkdSOworCisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29u
c3QgQjVHNlI1ICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoQjVHNlI1ICpkc3Qs
IGNvbnN0IGdsOjpDb2xvckYgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgYXZlcmFnZShCNUc2UjUg
KmRzdCwgY29uc3QgQjVHNlI1ICpzcmMxLCBjb25zdCBCNUc2UjUgKnNyYzIpOworfTsKKworc3Ry
dWN0IEE4UjhHOEI4Cit7CisgICAgdWludDhfdCBBOworICAgIHVpbnQ4X3QgUjsKKyAgICB1aW50
OF90IEc7CisgICAgdWludDhfdCBCOworCisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpD
b2xvckYgKmRzdCwgY29uc3QgQThSOEc4QjggKnNyYyk7CisgICAgc3RhdGljIHZvaWQgcmVhZENv
bG9yKGdsOjpDb2xvclVJICpkc3QsIGNvbnN0IEE4UjhHOEI4ICpzcmMpOworICAgIHN0YXRpYyB2
b2lkIHdyaXRlQ29sb3IoQThSOEc4QjggKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKTsKKyAg
ICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKEE4UjhHOEI4ICpkc3QsIGNvbnN0IGdsOjpDb2xvclVJ
ICpzcmMpOworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoQThSOEc4QjggKmRzdCwgY29uc3QgQThS
OEc4QjggKnNyYzEsIGNvbnN0IEE4UjhHOEI4ICpzcmMyKTsKK307CisKK3N0cnVjdCBSOEc4QjhB
OAoreworICAgIHVpbnQ4X3QgUjsKKyAgICB1aW50OF90IEc7CisgICAgdWludDhfdCBCOworICAg
IHVpbnQ4X3QgQTsKKworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3Qs
IGNvbnN0IFI4RzhCOEE4ICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29s
b3JVSSAqZHN0LCBjb25zdCBSOEc4QjhBOCAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNv
bG9yKFI4RzhCOEE4ICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYyk7CisgICAgc3RhdGljIHZv
aWQgd3JpdGVDb2xvcihSOEc4QjhBOCAqZHN0LCBjb25zdCBnbDo6Q29sb3JVSSAqc3JjKTsKKyAg
ICBzdGF0aWMgdm9pZCBhdmVyYWdlKFI4RzhCOEE4ICpkc3QsIGNvbnN0IFI4RzhCOEE4ICpzcmMx
LCBjb25zdCBSOEc4QjhBOCAqc3JjMik7Cit9OworCitzdHJ1Y3QgQjhHOFI4QTgKK3sKKyAgICB1
aW50OF90IEI7CisgICAgdWludDhfdCBHOworICAgIHVpbnQ4X3QgUjsKKyAgICB1aW50OF90IEE7
CisKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBCOEc4
UjhBOCAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yVUkgKmRzdCwg
Y29uc3QgQjhHOFI4QTggKnNyYyk7CisgICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihCOEc4UjhB
OCAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29s
b3IoQjhHOFI4QTggKmRzdCwgY29uc3QgZ2w6OkNvbG9yVUkgKnNyYyk7CisgICAgc3RhdGljIHZv
aWQgYXZlcmFnZShCOEc4UjhBOCAqZHN0LCBjb25zdCBCOEc4UjhBOCAqc3JjMSwgY29uc3QgQjhH
OFI4QTggKnNyYzIpOworfTsKKworc3RydWN0IEI4RzhSOFg4Cit7CisgICAgdWludDhfdCBCOwor
ICAgIHVpbnQ4X3QgRzsKKyAgICB1aW50OF90IFI7CisgICAgdWludDhfdCBYOworCisgICAgc3Rh
dGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgQjhHOFI4WDggKnNyYyk7
CisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvclVJICpkc3QsIGNvbnN0IEI4RzhS
OFg4ICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoQjhHOFI4WDggKmRzdCwgY29u
c3QgZ2w6OkNvbG9yRiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKEI4RzhSOFg4
ICpkc3QsIGNvbnN0IGdsOjpDb2xvclVJICpzcmMpOworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2Uo
QjhHOFI4WDggKmRzdCwgY29uc3QgQjhHOFI4WDggKnNyYzEsIGNvbnN0IEI4RzhSOFg4ICpzcmMy
KTsKK307CisKK3N0cnVjdCBBMVI1RzVCNQoreworICAgIHVpbnQxNl90IEFSR0I7CisKKyAgICBz
dGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBBMVI1RzVCNSAqc3Jj
KTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKEExUjVHNUI1ICpkc3QsIGNvbnN0IGdsOjpD
b2xvckYgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgYXZlcmFnZShBMVI1RzVCNSAqZHN0LCBjb25z
dCBBMVI1RzVCNSAqc3JjMSwgY29uc3QgQTFSNUc1QjUgKnNyYzIpOworfTsKKworc3RydWN0IFI1
RzVCNUExCit7CisgICAgLy8gT3BlbkdMIEVTIDIuMC4yNSBzcGVjIFNlY3Rpb24gMy42LjI6ICJD
b21wb25lbnRzIGFyZSBwYWNrZWQgd2l0aCB0aGUgZmlyc3QgY29tcG9uZW50IGluIHRoZQorICAg
IC8vIG1vc3Qgc2lnbmlmaWNhbnQKKyAgICAvLyBiaXRzIG9mIHRoZSBiaXRmaWVsZCwgYW5kIHN1
Y2Nlc3NpdmUgY29tcG9uZW50IG9jY3VweWluZyBwcm9ncmVzc2l2ZWx5IGxlc3Mgc2lnbmlmaWNh
bnQKKyAgICAvLyBsb2NhdGlvbnMiCisgICAgdWludDE2X3QgUkdCQTsKKworICAgIHN0YXRpYyB2
b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFI1RzVCNUExICpzcmMpOworICAg
IHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjVHNUI1QTEgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAq
c3JjKTsKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFI1RzVCNUExICpkc3QsIGNvbnN0IFI1RzVC
NUExICpzcmMxLCBjb25zdCBSNUc1QjVBMSAqc3JjMik7Cit9OworCitzdHJ1Y3QgUjRHNEI0QTQK
K3sKKyAgICAvLyBPcGVuR0wgRVMgMi4wLjI1IHNwZWMgU2VjdGlvbiAzLjYuMjogIkNvbXBvbmVu
dHMgYXJlIHBhY2tlZCB3aXRoIHRoZSBmaXJzdCBjb21wb25lbnQgaW4gdGhlCisgICAgLy8gbW9z
dCBzaWduaWZpY2FudAorICAgIC8vIGJpdHMgb2YgdGhlIGJpdGZpZWxkLCBhbmQgc3VjY2Vzc2l2
ZSBjb21wb25lbnQgb2NjdXB5aW5nIHByb2dyZXNzaXZlbHkgbGVzcyBzaWduaWZpY2FudAorICAg
IC8vIGxvY2F0aW9ucyIKKyAgICB1aW50MTZfdCBSR0JBOworCisgICAgc3RhdGljIHZvaWQgcmVh
ZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjRHNEI0QTQgKnNyYyk7CisgICAgc3RhdGlj
IHZvaWQgd3JpdGVDb2xvcihSNEc0QjRBNCAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpOwor
ICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjRHNEI0QTQgKmRzdCwgY29uc3QgUjRHNEI0QTQgKnNy
YzEsIGNvbnN0IFI0RzRCNEE0ICpzcmMyKTsKK307CisKK3N0cnVjdCBBNFI0RzRCNAoreworICAg
IHVpbnQxNl90IEFSR0I7CisKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAq
ZHN0LCBjb25zdCBBNFI0RzRCNCAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKEE0
UjRHNEI0ICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgYXZl
cmFnZShBNFI0RzRCNCAqZHN0LCBjb25zdCBBNFI0RzRCNCAqc3JjMSwgY29uc3QgQTRSNEc0QjQg
KnNyYzIpOworfTsKKworc3RydWN0IFIxNgoreworICAgIHVpbnQxNl90IFI7CisKKyAgICBzdGF0
aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMTYgKnNyYyk7CisgICAg
c3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvclVJICpkc3QsIGNvbnN0IFIxNiAqc3JjKTsK
KyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIxNiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpz
cmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjE2ICpkc3QsIGNvbnN0IGdsOjpDb2xv
clVJICpzcmMpOworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjE2ICpkc3QsIGNvbnN0IFIxNiAq
c3JjMSwgY29uc3QgUjE2ICpzcmMyKTsKK307CisKK3N0cnVjdCBSMTZHMTYKK3sKKyAgICB1aW50
MTZfdCBSOworICAgIHVpbnQxNl90IEc7CisKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6
OkNvbG9yRiAqZHN0LCBjb25zdCBSMTZHMTYgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgcmVhZENv
bG9yKGdsOjpDb2xvclVJICpkc3QsIGNvbnN0IFIxNkcxNiAqc3JjKTsKKyAgICBzdGF0aWMgdm9p
ZCB3cml0ZUNvbG9yKFIxNkcxNiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpOworICAgIHN0
YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjE2RzE2ICpkc3QsIGNvbnN0IGdsOjpDb2xvclVJICpzcmMp
OworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjE2RzE2ICpkc3QsIGNvbnN0IFIxNkcxNiAqc3Jj
MSwgY29uc3QgUjE2RzE2ICpzcmMyKTsKK307CisKK3N0cnVjdCBSMTZHMTZCMTYKK3sKKyAgICB1
aW50MTZfdCBSOworICAgIHVpbnQxNl90IEc7CisgICAgdWludDE2X3QgQjsKKworICAgIHN0YXRp
YyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIxNkcxNkIxNiAqc3JjKTsK
KyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yVUkgKmRzdCwgY29uc3QgUjE2RzE2
QjE2ICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjE2RzE2QjE2ICpkc3QsIGNv
bnN0IGdsOjpDb2xvckYgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSMTZHMTZC
MTYgKmRzdCwgY29uc3QgZ2w6OkNvbG9yVUkgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgYXZlcmFn
ZShSMTZHMTZCMTYgKmRzdCwgY29uc3QgUjE2RzE2QjE2ICpzcmMxLCBjb25zdCBSMTZHMTZCMTYg
KnNyYzIpOworfTsKKworc3RydWN0IFIxNkcxNkIxNkExNgoreworICAgIHVpbnQxNl90IFI7Cisg
ICAgdWludDE2X3QgRzsKKyAgICB1aW50MTZfdCBCOworICAgIHVpbnQxNl90IEE7CisKKyAgICBz
dGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMTZHMTZCMTZBMTYg
KnNyYyk7CisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvclVJICpkc3QsIGNvbnN0
IFIxNkcxNkIxNkExNiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIxNkcxNkIx
NkExNiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRl
Q29sb3IoUjE2RzE2QjE2QTE2ICpkc3QsIGNvbnN0IGdsOjpDb2xvclVJICpzcmMpOworICAgIHN0
YXRpYyB2b2lkIGF2ZXJhZ2UoUjE2RzE2QjE2QTE2ICpkc3QsIGNvbnN0IFIxNkcxNkIxNkExNiAq
c3JjMSwgY29uc3QgUjE2RzE2QjE2QTE2ICpzcmMyKTsKK307CisKK3N0cnVjdCBSMzIKK3sKKyAg
ICB1aW50MzJfdCBSOworCisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRz
dCwgY29uc3QgUjMyICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JV
SSAqZHN0LCBjb25zdCBSMzIgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSMzIg
KmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9y
KFIzMiAqZHN0LCBjb25zdCBnbDo6Q29sb3JVSSAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCBhdmVy
YWdlKFIzMiAqZHN0LCBjb25zdCBSMzIgKnNyYzEsIGNvbnN0IFIzMiAqc3JjMik7Cit9OworCitz
dHJ1Y3QgUjMyRzMyCit7CisgICAgdWludDMyX3QgUjsKKyAgICB1aW50MzJfdCBHOworCisgICAg
c3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjMyRzMyICpzcmMp
OworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JVSSAqZHN0LCBjb25zdCBSMzJH
MzIgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSMzJHMzIgKmRzdCwgY29uc3Qg
Z2w6OkNvbG9yRiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIzMkczMiAqZHN0
LCBjb25zdCBnbDo6Q29sb3JVSSAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFIzMkcz
MiAqZHN0LCBjb25zdCBSMzJHMzIgKnNyYzEsIGNvbnN0IFIzMkczMiAqc3JjMik7Cit9OworCitz
dHJ1Y3QgUjMyRzMyQjMyCit7CisgICAgdWludDMyX3QgUjsKKyAgICB1aW50MzJfdCBHOworICAg
IHVpbnQzMl90IEI7CisKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0
LCBjb25zdCBSMzJHMzJCMzIgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpD
b2xvclVJICpkc3QsIGNvbnN0IFIzMkczMkIzMiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0
ZUNvbG9yKFIzMkczMkIzMiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpOworICAgIHN0YXRp
YyB2b2lkIHdyaXRlQ29sb3IoUjMyRzMyQjMyICpkc3QsIGNvbnN0IGdsOjpDb2xvclVJICpzcmMp
OworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjMyRzMyQjMyICpkc3QsIGNvbnN0IFIzMkczMkIz
MiAqc3JjMSwgY29uc3QgUjMyRzMyQjMyICpzcmMyKTsKK307CisKK3N0cnVjdCBSMzJHMzJCMzJB
MzIKK3sKKyAgICB1aW50MzJfdCBSOworICAgIHVpbnQzMl90IEc7CisgICAgdWludDMyX3QgQjsK
KyAgICB1aW50MzJfdCBBOworCisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYg
KmRzdCwgY29uc3QgUjMyRzMyQjMyQTMyICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xv
cihnbDo6Q29sb3JVSSAqZHN0LCBjb25zdCBSMzJHMzJCMzJBMzIgKnNyYyk7CisgICAgc3RhdGlj
IHZvaWQgd3JpdGVDb2xvcihSMzJHMzJCMzJBMzIgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3Jj
KTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIzMkczMkIzMkEzMiAqZHN0LCBjb25zdCBn
bDo6Q29sb3JVSSAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFIzMkczMkIzMkEzMiAq
ZHN0LCBjb25zdCBSMzJHMzJCMzJBMzIgKnNyYzEsIGNvbnN0IFIzMkczMkIzMkEzMiAqc3JjMik7
Cit9OworCitzdHJ1Y3QgUjhTCit7CisgICAgaW50OF90IFI7CisKKyAgICBzdGF0aWMgdm9pZCBy
ZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSOFMgKnNyYyk7CisgICAgc3RhdGljIHZv
aWQgcmVhZENvbG9yKGdsOjpDb2xvckkgKmRzdCwgY29uc3QgUjhTICpzcmMpOworICAgIHN0YXRp
YyB2b2lkIHdyaXRlQ29sb3IoUjhTICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYyk7CisgICAg
c3RhdGljIHZvaWQgd3JpdGVDb2xvcihSOFMgKmRzdCwgY29uc3QgZ2w6OkNvbG9ySSAqc3JjKTsK
KyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFI4UyAqZHN0LCBjb25zdCBSOFMgKnNyYzEsIGNvbnN0
IFI4UyAqc3JjMik7Cit9OworCitzdHJ1Y3QgUjhHOFMKK3sKKyAgICBpbnQ4X3QgUjsKKyAgICBp
bnQ4X3QgRzsKKworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNv
bnN0IFI4RzhTICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JJICpk
c3QsIGNvbnN0IFI4RzhTICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjhHOFMg
KmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9y
KFI4RzhTICpkc3QsIGNvbnN0IGdsOjpDb2xvckkgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgYXZl
cmFnZShSOEc4UyAqZHN0LCBjb25zdCBSOEc4UyAqc3JjMSwgY29uc3QgUjhHOFMgKnNyYzIpOwor
fTsKKworc3RydWN0IFI4RzhCOFMKK3sKKyAgICBpbnQ4X3QgUjsKKyAgICBpbnQ4X3QgRzsKKyAg
ICBpbnQ4X3QgQjsKKworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3Qs
IGNvbnN0IFI4RzhCOFMgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xv
ckkgKmRzdCwgY29uc3QgUjhHOEI4UyAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9y
KFI4RzhCOFMgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3
cml0ZUNvbG9yKFI4RzhCOFMgKmRzdCwgY29uc3QgZ2w6OkNvbG9ySSAqc3JjKTsKKyAgICBzdGF0
aWMgdm9pZCBhdmVyYWdlKFI4RzhCOFMgKmRzdCwgY29uc3QgUjhHOEI4UyAqc3JjMSwgY29uc3Qg
UjhHOEI4UyAqc3JjMik7Cit9OworCitzdHJ1Y3QgUjhHOEI4QThTCit7CisgICAgaW50OF90IFI7
CisgICAgaW50OF90IEc7CisgICAgaW50OF90IEI7CisgICAgaW50OF90IEE7CisKKyAgICBzdGF0
aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSOEc4QjhBOFMgKnNyYyk7
CisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckkgKmRzdCwgY29uc3QgUjhHOEI4
QThTICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjhHOEI4QThTICpkc3QsIGNv
bnN0IGdsOjpDb2xvckYgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSOEc4QjhB
OFMgKmRzdCwgY29uc3QgZ2w6OkNvbG9ySSAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdl
KFI4RzhCOEE4UyAqZHN0LCBjb25zdCBSOEc4QjhBOFMgKnNyYzEsIGNvbnN0IFI4RzhCOEE4UyAq
c3JjMik7Cit9OworCitzdHJ1Y3QgUjE2UworeworICAgIGludDE2X3QgUjsKKworICAgIHN0YXRp
YyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIxNlMgKnNyYyk7CisgICAg
c3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckkgKmRzdCwgY29uc3QgUjE2UyAqc3JjKTsK
KyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIxNlMgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAq
c3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIxNlMgKmRzdCwgY29uc3QgZ2w6OkNv
bG9ySSAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFIxNlMgKmRzdCwgY29uc3QgUjE2
UyAqc3JjMSwgY29uc3QgUjE2UyAqc3JjMik7Cit9OworCitzdHJ1Y3QgUjE2RzE2UworeworICAg
IGludDE2X3QgUjsKKyAgICBpbnQxNl90IEc7CisKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3Io
Z2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMTZHMTZTICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHJl
YWRDb2xvcihnbDo6Q29sb3JJICpkc3QsIGNvbnN0IFIxNkcxNlMgKnNyYyk7CisgICAgc3RhdGlj
IHZvaWQgd3JpdGVDb2xvcihSMTZHMTZTICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYyk7Cisg
ICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSMTZHMTZTICpkc3QsIGNvbnN0IGdsOjpDb2xvckkg
KnNyYyk7CisgICAgc3RhdGljIHZvaWQgYXZlcmFnZShSMTZHMTZTICpkc3QsIGNvbnN0IFIxNkcx
NlMgKnNyYzEsIGNvbnN0IFIxNkcxNlMgKnNyYzIpOworfTsKKworc3RydWN0IFIxNkcxNkIxNlMK
K3sKKyAgICBpbnQxNl90IFI7CisgICAgaW50MTZfdCBHOworICAgIGludDE2X3QgQjsKKworICAg
IHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIxNkcxNkIxNlMg
KnNyYyk7CisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckkgKmRzdCwgY29uc3Qg
UjE2RzE2QjE2UyAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIxNkcxNkIxNlMg
KmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9y
KFIxNkcxNkIxNlMgKmRzdCwgY29uc3QgZ2w6OkNvbG9ySSAqc3JjKTsKKyAgICBzdGF0aWMgdm9p
ZCBhdmVyYWdlKFIxNkcxNkIxNlMgKmRzdCwgY29uc3QgUjE2RzE2QjE2UyAqc3JjMSwgY29uc3Qg
UjE2RzE2QjE2UyAqc3JjMik7Cit9OworCitzdHJ1Y3QgUjE2RzE2QjE2QTE2UworeworICAgIGlu
dDE2X3QgUjsKKyAgICBpbnQxNl90IEc7CisgICAgaW50MTZfdCBCOworICAgIGludDE2X3QgQTsK
KworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIxNkcx
NkIxNkExNlMgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckkgKmRz
dCwgY29uc3QgUjE2RzE2QjE2QTE2UyAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9y
KFIxNkcxNkIxNkExNlMgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKTsKKyAgICBzdGF0aWMg
dm9pZCB3cml0ZUNvbG9yKFIxNkcxNkIxNkExNlMgKmRzdCwgY29uc3QgZ2w6OkNvbG9ySSAqc3Jj
KTsKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFIxNkcxNkIxNkExNlMgKmRzdCwgY29uc3QgUjE2
RzE2QjE2QTE2UyAqc3JjMSwgY29uc3QgUjE2RzE2QjE2QTE2UyAqc3JjMik7Cit9OworCitzdHJ1
Y3QgUjMyUworeworICAgIGludDMyX3QgUjsKKworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihn
bDo6Q29sb3JGICpkc3QsIGNvbnN0IFIzMlMgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgcmVhZENv
bG9yKGdsOjpDb2xvckkgKmRzdCwgY29uc3QgUjMyUyAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3
cml0ZUNvbG9yKFIzMlMgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKTsKKyAgICBzdGF0aWMg
dm9pZCB3cml0ZUNvbG9yKFIzMlMgKmRzdCwgY29uc3QgZ2w6OkNvbG9ySSAqc3JjKTsKKyAgICBz
dGF0aWMgdm9pZCBhdmVyYWdlKFIzMlMgKmRzdCwgY29uc3QgUjMyUyAqc3JjMSwgY29uc3QgUjMy
UyAqc3JjMik7Cit9OworCitzdHJ1Y3QgUjMyRzMyUworeworICAgIGludDMyX3QgUjsKKyAgICBp
bnQzMl90IEc7CisKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBj
b25zdCBSMzJHMzJTICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JJ
ICpkc3QsIGNvbnN0IFIzMkczMlMgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihS
MzJHMzJTICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgd3Jp
dGVDb2xvcihSMzJHMzJTICpkc3QsIGNvbnN0IGdsOjpDb2xvckkgKnNyYyk7CisgICAgc3RhdGlj
IHZvaWQgYXZlcmFnZShSMzJHMzJTICpkc3QsIGNvbnN0IFIzMkczMlMgKnNyYzEsIGNvbnN0IFIz
MkczMlMgKnNyYzIpOworfTsKKworc3RydWN0IFIzMkczMkIzMlMKK3sKKyAgICBpbnQzMl90IFI7
CisgICAgaW50MzJfdCBHOworICAgIGludDMyX3QgQjsKKworICAgIHN0YXRpYyB2b2lkIHJlYWRD
b2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIzMkczMkIzMlMgKnNyYyk7CisgICAgc3RhdGlj
IHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckkgKmRzdCwgY29uc3QgUjMyRzMyQjMyUyAqc3JjKTsK
KyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIzMkczMkIzMlMgKmRzdCwgY29uc3QgZ2w6OkNv
bG9yRiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIzMkczMkIzMlMgKmRzdCwg
Y29uc3QgZ2w6OkNvbG9ySSAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFIzMkczMkIz
MlMgKmRzdCwgY29uc3QgUjMyRzMyQjMyUyAqc3JjMSwgY29uc3QgUjMyRzMyQjMyUyAqc3JjMik7
Cit9OworCitzdHJ1Y3QgUjMyRzMyQjMyQTMyUworeworICAgIGludDMyX3QgUjsKKyAgICBpbnQz
Ml90IEc7CisgICAgaW50MzJfdCBCOworICAgIGludDMyX3QgQTsKKworICAgIHN0YXRpYyB2b2lk
IHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIzMkczMkIzMkEzMlMgKnNyYyk7Cisg
ICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckkgKmRzdCwgY29uc3QgUjMyRzMyQjMy
QTMyUyAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIzMkczMkIzMkEzMlMgKmRz
dCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIz
MkczMkIzMkEzMlMgKmRzdCwgY29uc3QgZ2w6OkNvbG9ySSAqc3JjKTsKKyAgICBzdGF0aWMgdm9p
ZCBhdmVyYWdlKFIzMkczMkIzMkEzMlMgKmRzdCwgY29uc3QgUjMyRzMyQjMyQTMyUyAqc3JjMSwg
Y29uc3QgUjMyRzMyQjMyQTMyUyAqc3JjMik7Cit9OworCitzdHJ1Y3QgQTE2QjE2RzE2UjE2Rgor
eworICAgIHVpbnQxNl90IEE7CisgICAgdWludDE2X3QgUjsKKyAgICB1aW50MTZfdCBHOworICAg
IHVpbnQxNl90IEI7CisKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0
LCBjb25zdCBBMTZCMTZHMTZSMTZGICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3Io
QTE2QjE2RzE2UjE2RiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpOworICAgIHN0YXRpYyB2
b2lkIGF2ZXJhZ2UoQTE2QjE2RzE2UjE2RiAqZHN0LCBjb25zdCBBMTZCMTZHMTZSMTZGICpzcmMx
LCBjb25zdCBBMTZCMTZHMTZSMTZGICpzcmMyKTsKK307CisKK3N0cnVjdCBSMTZHMTZCMTZBMTZG
Cit7CisgICAgdWludDE2X3QgUjsKKyAgICB1aW50MTZfdCBHOworICAgIHVpbnQxNl90IEI7Cisg
ICAgdWludDE2X3QgQTsKKworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpk
c3QsIGNvbnN0IFIxNkcxNkIxNkExNkYgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgd3JpdGVDb2xv
cihSMTZHMTZCMTZBMTZGICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYyk7CisgICAgc3RhdGlj
IHZvaWQgYXZlcmFnZShSMTZHMTZCMTZBMTZGICpkc3QsIGNvbnN0IFIxNkcxNkIxNkExNkYgKnNy
YzEsIGNvbnN0IFIxNkcxNkIxNkExNkYgKnNyYzIpOworfTsKKworc3RydWN0IFIxNkYKK3sKKyAg
ICB1aW50MTZfdCBSOworCisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRz
dCwgY29uc3QgUjE2RiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIxNkYgKmRz
dCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFIxNkYg
KmRzdCwgY29uc3QgUjE2RiAqc3JjMSwgY29uc3QgUjE2RiAqc3JjMik7Cit9OworCitzdHJ1Y3Qg
QTE2RgoreworICAgIHVpbnQxNl90IEE7CisKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6
OkNvbG9yRiAqZHN0LCBjb25zdCBBMTZGICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29s
b3IoQTE2RiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpOworICAgIHN0YXRpYyB2b2lkIGF2
ZXJhZ2UoQTE2RiAqZHN0LCBjb25zdCBBMTZGICpzcmMxLCBjb25zdCBBMTZGICpzcmMyKTsKK307
CisKK3N0cnVjdCBMMTZGCit7CisgICAgdWludDE2X3QgTDsKKworICAgIHN0YXRpYyB2b2lkIHJl
YWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IEwxNkYgKnNyYyk7CisgICAgc3RhdGljIHZv
aWQgd3JpdGVDb2xvcihMMTZGICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYyk7CisgICAgc3Rh
dGljIHZvaWQgYXZlcmFnZShMMTZGICpkc3QsIGNvbnN0IEwxNkYgKnNyYzEsIGNvbnN0IEwxNkYg
KnNyYzIpOworfTsKKworc3RydWN0IEwxNkExNkYKK3sKKyAgICB1aW50MTZfdCBMOworICAgIHVp
bnQxNl90IEE7CisKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBj
b25zdCBMMTZBMTZGICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoTDE2QTE2RiAq
ZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpOworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoTDE2
QTE2RiAqZHN0LCBjb25zdCBMMTZBMTZGICpzcmMxLCBjb25zdCBMMTZBMTZGICpzcmMyKTsKK307
CisKK3N0cnVjdCBSMTZHMTZGCit7CisgICAgdWludDE2X3QgUjsKKyAgICB1aW50MTZfdCBHOwor
CisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjE2RzE2
RiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIxNkcxNkYgKmRzdCwgY29uc3Qg
Z2w6OkNvbG9yRiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFIxNkcxNkYgKmRzdCwg
Y29uc3QgUjE2RzE2RiAqc3JjMSwgY29uc3QgUjE2RzE2RiAqc3JjMik7Cit9OworCitzdHJ1Y3Qg
UjE2RzE2QjE2RgoreworICAgIHVpbnQxNl90IFI7CisgICAgdWludDE2X3QgRzsKKyAgICB1aW50
MTZfdCBCOworCisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29u
c3QgUjE2RzE2QjE2RiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIxNkcxNkIx
NkYgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdl
KFIxNkcxNkIxNkYgKmRzdCwgY29uc3QgUjE2RzE2QjE2RiAqc3JjMSwgY29uc3QgUjE2RzE2QjE2
RiAqc3JjMik7Cit9OworCitzdHJ1Y3QgQTMyQjMyRzMyUjMyRgoreworICAgIGZsb2F0IEE7Cisg
ICAgZmxvYXQgUjsKKyAgICBmbG9hdCBHOworICAgIGZsb2F0IEI7CisKKyAgICBzdGF0aWMgdm9p
ZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBBMzJCMzJHMzJSMzJGICpzcmMpOwor
ICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoQTMyQjMyRzMyUjMyRiAqZHN0LCBjb25zdCBnbDo6
Q29sb3JGICpzcmMpOworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoQTMyQjMyRzMyUjMyRiAqZHN0
LCBjb25zdCBBMzJCMzJHMzJSMzJGICpzcmMxLCBjb25zdCBBMzJCMzJHMzJSMzJGICpzcmMyKTsK
K307CisKK3N0cnVjdCBSMzJHMzJCMzJBMzJGCit7CisgICAgZmxvYXQgUjsKKyAgICBmbG9hdCBH
OworICAgIGZsb2F0IEI7CisgICAgZmxvYXQgQTsKKworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xv
cihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIzMkczMkIzMkEzMkYgKnNyYyk7CisgICAgc3RhdGlj
IHZvaWQgd3JpdGVDb2xvcihSMzJHMzJCMzJBMzJGICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNy
Yyk7CisgICAgc3RhdGljIHZvaWQgYXZlcmFnZShSMzJHMzJCMzJBMzJGICpkc3QsIGNvbnN0IFIz
MkczMkIzMkEzMkYgKnNyYzEsIGNvbnN0IFIzMkczMkIzMkEzMkYgKnNyYzIpOworfTsKKworc3Ry
dWN0IFIzMkYKK3sKKyAgICBmbG9hdCBSOworCisgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGds
OjpDb2xvckYgKmRzdCwgY29uc3QgUjMyRiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNv
bG9yKFIzMkYgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCBh
dmVyYWdlKFIzMkYgKmRzdCwgY29uc3QgUjMyRiAqc3JjMSwgY29uc3QgUjMyRiAqc3JjMik7Cit9
OworCitzdHJ1Y3QgQTMyRgoreworICAgIGZsb2F0IEE7CisKKyAgICBzdGF0aWMgdm9pZCByZWFk
Q29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBBMzJGICpzcmMpOworICAgIHN0YXRpYyB2b2lk
IHdyaXRlQ29sb3IoQTMyRiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpOworICAgIHN0YXRp
YyB2b2lkIGF2ZXJhZ2UoQTMyRiAqZHN0LCBjb25zdCBBMzJGICpzcmMxLCBjb25zdCBBMzJGICpz
cmMyKTsKK307CisKK3N0cnVjdCBMMzJGCit7CisgICAgZmxvYXQgTDsKKworICAgIHN0YXRpYyB2
b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IEwzMkYgKnNyYyk7CisgICAgc3Rh
dGljIHZvaWQgd3JpdGVDb2xvcihMMzJGICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYyk7Cisg
ICAgc3RhdGljIHZvaWQgYXZlcmFnZShMMzJGICpkc3QsIGNvbnN0IEwzMkYgKnNyYzEsIGNvbnN0
IEwzMkYgKnNyYzIpOworfTsKKworc3RydWN0IEwzMkEzMkYKK3sKKyAgICBmbG9hdCBMOworICAg
IGZsb2F0IEE7CisKKyAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBj
b25zdCBMMzJBMzJGICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoTDMyQTMyRiAq
ZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpOworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoTDMy
QTMyRiAqZHN0LCBjb25zdCBMMzJBMzJGICpzcmMxLCBjb25zdCBMMzJBMzJGICpzcmMyKTsKK307
CisKK3N0cnVjdCBSMzJHMzJGCit7CisgICAgZmxvYXQgUjsKKyAgICBmbG9hdCBHOworCisgICAg
c3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjMyRzMyRiAqc3Jj
KTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIzMkczMkYgKmRzdCwgY29uc3QgZ2w6OkNv
bG9yRiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFIzMkczMkYgKmRzdCwgY29uc3Qg
UjMyRzMyRiAqc3JjMSwgY29uc3QgUjMyRzMyRiAqc3JjMik7Cit9OworCitzdHJ1Y3QgUjMyRzMy
QjMyRgoreworICAgIGZsb2F0IFI7CisgICAgZmxvYXQgRzsKKyAgICBmbG9hdCBCOworCisgICAg
c3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjMyRzMyQjMyRiAq
c3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIzMkczMkIzMkYgKmRzdCwgY29uc3Qg
Z2w6OkNvbG9yRiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFIzMkczMkIzMkYgKmRz
dCwgY29uc3QgUjMyRzMyQjMyRiAqc3JjMSwgY29uc3QgUjMyRzMyQjMyRiAqc3JjMik7Cit9Owor
CitzdHJ1Y3QgUjEwRzEwQjEwQTIKK3sKKyAgICB1aW50MzJfdCBSIDogMTA7CisgICAgdWludDMy
X3QgRyA6IDEwOworICAgIHVpbnQzMl90IEIgOiAxMDsKKyAgICB1aW50MzJfdCBBIDogMjsKKwor
ICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIxMEcxMEIx
MEEyICpzcmMpOworICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JVSSAqZHN0LCBj
b25zdCBSMTBHMTBCMTBBMiAqc3JjKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIxMEcx
MEIxMEEyICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYyk7CisgICAgc3RhdGljIHZvaWQgd3Jp
dGVDb2xvcihSMTBHMTBCMTBBMiAqZHN0LCBjb25zdCBnbDo6Q29sb3JVSSAqc3JjKTsKKyAgICBz
dGF0aWMgdm9pZCBhdmVyYWdlKFIxMEcxMEIxMEEyICpkc3QsIGNvbnN0IFIxMEcxMEIxMEEyICpz
cmMxLCBjb25zdCBSMTBHMTBCMTBBMiAqc3JjMik7Cit9Oworc3RhdGljX2Fzc2VydChzaXplb2Yo
UjEwRzEwQjEwQTIpID09IDQsICJSMTBHMTBCMTBBMiBzdHJ1Y3Qgbm90IDMyLWJpdHMuIik7CisK
K3N0cnVjdCBSOUc5QjlFNQoreworICAgIHVpbnQzMl90IFIgOiA5OworICAgIHVpbnQzMl90IEcg
OiA5OworICAgIHVpbnQzMl90IEIgOiA5OworICAgIHVpbnQzMl90IEUgOiA1OworCisgICAgc3Rh
dGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjlHOUI5RTUgKnNyYyk7
CisgICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSOUc5QjlFNSAqZHN0LCBjb25zdCBnbDo6Q29s
b3JGICpzcmMpOworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjlHOUI5RTUgKmRzdCwgY29uc3Qg
UjlHOUI5RTUgKnNyYzEsIGNvbnN0IFI5RzlCOUU1ICpzcmMyKTsKK307CitzdGF0aWNfYXNzZXJ0
KHNpemVvZihSOUc5QjlFNSkgPT0gNCwgIlI5RzlCOUU1IHN0cnVjdCBub3QgMzItYml0cy4iKTsK
Kworc3RydWN0IFIxMUcxMUIxMEYKK3sKKyAgICB1aW50MzJfdCBSIDogMTE7CisgICAgdWludDMy
X3QgRyA6IDExOworICAgIHVpbnQzMl90IEIgOiAxMDsKKworICAgIHN0YXRpYyB2b2lkIHJlYWRD
b2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIxMUcxMUIxMEYgKnNyYyk7CisgICAgc3RhdGlj
IHZvaWQgd3JpdGVDb2xvcihSMTFHMTFCMTBGICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYyk7
CisgICAgc3RhdGljIHZvaWQgYXZlcmFnZShSMTFHMTFCMTBGICpkc3QsIGNvbnN0IFIxMUcxMUIx
MEYgKnNyYzEsIGNvbnN0IFIxMUcxMUIxMEYgKnNyYzIpOworfTsKK3N0YXRpY19hc3NlcnQoc2l6
ZW9mKFIxMUcxMUIxMEYpID09IDQsICJSMTFHMTFCMTBGIHN0cnVjdCBub3QgMzItYml0cy4iKTsK
KworfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCisKKyNlbmRpZiAgLy8gSU1BR0VVVElMX0lNQUdFRk9S
TUFUU19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2ltYWdlX3V0aWwvbG9h
ZGltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvaW1h
Z2VfdXRpbC9sb2FkaW1hZ2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9pbWFnZV91dGlsL2xvYWRpbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMzIzIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEzLTIwMTUgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBhbmdsZV9sb2FkaW1hZ2UuY3Bw
OiBEZWZpbmVzIGltYWdlIGxvYWRpbmcgZnVuY3Rpb25zLgorCisjaW5jbHVkZSAiaW1hZ2VfdXRp
bC9sb2FkaW1hZ2UuaCIKKworI2luY2x1ZGUgImNvbW1vbi9tYXRodXRpbC5oIgorI2luY2x1ZGUg
ImNvbW1vbi9wbGF0Zm9ybS5oIgorI2luY2x1ZGUgImltYWdlX3V0aWwvaW1hZ2Vmb3JtYXRzLmgi
CisKK25hbWVzcGFjZSBhbmdsZQoreworCit2b2lkIExvYWRBOFRvUkdCQTgoc2l6ZV90IHdpZHRo
LAorICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAor
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgdWludDhfdCAq
b3V0cHV0LAorICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAg
ICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3sKKyNpZiBkZWZpbmVkKEFO
R0xFX1VTRV9TU0UpCisgICAgaWYgKGdsOjpzdXBwb3J0c1NTRTIoKSkKKyAgICB7CisgICAgICAg
IF9fbTEyOGkgemVyb1dpZGUgPSBfbW1fc2V0emVyb19zaTEyOCgpOworCisgICAgICAgIGZvciAo
c2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKKyAgICAgICAgeworICAgICAgICAgICAgZm9y
IChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjb25zdCB1aW50OF90ICpzb3VyY2UgPQorICAgICAgICAgICAgICAgICAgICBwcml2
OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50OF90PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwg
aW5wdXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCAqZGVzdCA9IHByaXY6
Ok9mZnNldERhdGFQb2ludGVyPHVpbnQzMl90PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNo
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG91dHB1dERlcHRoUGl0Y2gpOworCisgICAgICAgICAgICAgICAgc2l6ZV90
IHggPSAwOworCisgICAgICAgICAgICAgICAgLy8gTWFrZSBvdXRwdXQgd3JpdGVzIGFsaWduZWQK
KyAgICAgICAgICAgICAgICBmb3IgKDsgKChyZWludGVycHJldF9jYXN0PGludHB0cl90PigmZGVz
dFt4XSkgJiAweEYpICE9IDAgJiYgeCA8IHdpZHRoKTsgeCsrKQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgZGVzdFt4XSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pihzb3Vy
Y2VbeF0pIDw8IDI0OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGZvciAo
OyB4ICsgNyA8IHdpZHRoOyB4ICs9IDgpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBfX20xMjhpIHNvdXJjZURhdGEgPQorICAgICAgICAgICAgICAgICAgICAgICAgX21t
X2xvYWRsX2VwaTY0KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgX19tMTI4aSAqPigmc291cmNlW3hd
KSk7CisgICAgICAgICAgICAgICAgICAgIC8vIEludGVybGVhdmUgZWFjaCBieXRlIHRvIDE2Yml0
LCBtYWtlIHRoZSBsb3dlciBieXRlIHRvIHplcm8KKyAgICAgICAgICAgICAgICAgICAgc291cmNl
RGF0YSA9IF9tbV91bnBhY2tsb19lcGk4KHplcm9XaWRlLCBzb3VyY2VEYXRhKTsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gSW50ZXJsZWF2ZSBlYWNoIDE2Yml0IHRvIDMyYml0LCBtYWtlIHRoZSBs
b3dlciAxNmJpdCB0byB6ZXJvCisgICAgICAgICAgICAgICAgICAgIF9fbTEyOGkgbG8gPSBfbW1f
dW5wYWNrbG9fZXBpMTYoemVyb1dpZGUsIHNvdXJjZURhdGEpOworICAgICAgICAgICAgICAgICAg
ICBfX20xMjhpIGhpID0gX21tX3VucGFja2hpX2VwaTE2KHplcm9XaWRlLCBzb3VyY2VEYXRhKTsK
KworICAgICAgICAgICAgICAgICAgICBfbW1fc3RvcmVfc2kxMjgocmVpbnRlcnByZXRfY2FzdDxf
X20xMjhpICo+KCZkZXN0W3hdKSwgbG8pOworICAgICAgICAgICAgICAgICAgICBfbW1fc3RvcmVf
c2kxMjgocmVpbnRlcnByZXRfY2FzdDxfX20xMjhpICo+KCZkZXN0W3ggKyA0XSksIGhpKTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBIYW5kbGUgdGhlIHJlbWFpbmRl
cgorICAgICAgICAgICAgICAgIGZvciAoOyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIGRlc3RbeF0gPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
c291cmNlW3hdKSA8PCAyNDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAgICBmb3IgKHNpemVf
dCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCB5ID0g
MDsgeSA8IGhlaWdodDsgeSsrKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCB1aW50OF90
ICpzb3VyY2UgPQorICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQ4
X3Q+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOworICAgICAg
ICAgICAgdWludDMyX3QgKmRlc3QgPQorICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNldERhdGFQ
b2ludGVyPHVpbnQzMl90PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0
aFBpdGNoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHgrKykK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZXN0W3hdID0gc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KHNvdXJjZVt4XSkgPDwgMjQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3ZvaWQgTG9hZEE4VG9CR1JBOChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAg
ICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVw
dGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgIHNpemVf
dCBvdXRwdXREZXB0aFBpdGNoKQoreworICAgIC8vIFNhbWUgYXMgbG9hZGluZyB0byBSR0JBCisg
ICAgTG9hZEE4VG9SR0JBOCh3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgaW5wdXQsIGlucHV0Um93UGl0
Y2gsIGlucHV0RGVwdGhQaXRjaCwgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgb3V0cHV0Um93
UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOworfQorCit2b2lkIExvYWRBMzJGVG9SR0JBMzJGKHNp
emVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0
Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gs
CisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRl
cHRoOyB6KyspCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsg
eSsrKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBmbG9hdCAqc291cmNlID0KKyAgICAg
ICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjxmbG9hdD4oaW5wdXQsIHksIHosIGlu
cHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICBmbG9hdCAqZGVzdCA9
CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8ZmxvYXQ+KG91dHB1dCwg
eSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOworICAgICAgICAgICAgZm9y
IChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGRlc3RbNCAqIHggKyAwXSA9IDAuMGY7CisgICAgICAgICAgICAgICAgZGVzdFs0ICog
eCArIDFdID0gMC4wZjsKKyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMl0gPSAwLjBmOwor
ICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSA9IHNvdXJjZVt4XTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBMb2FkQTE2RlRvUkdCQTE2RihzaXplX3Qg
d2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1Bp
dGNoLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAg
ICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsg
eisrKQorICAgIHsKKyAgICAgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykK
KyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgdWludDE2X3QgKnNvdXJjZSA9CisgICAgICAg
ICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dWludDE2X3Q+KGlucHV0LCB5LCB6LCBp
bnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOworICAgICAgICAgICAgdWludDE2X3QgKmRl
c3QgPQorICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQxNl90Pihv
dXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKKyAgICAgICAg
ICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSAwOworICAgICAgICAgICAgICAgIGRlc3Rb
NCAqIHggKyAxXSA9IDA7CisgICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDJdID0gMDsKKyAg
ICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10gPSBzb3VyY2VbeF07CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgTG9hZEw4VG9SR0JBOChzaXplX3Qgd2lkdGgs
CisgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICBz
aXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpv
dXRwdXQsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQoreworICAgIGZvciAoc2l6ZV90
IHogPSAwOyB6IDwgZGVwdGg7IHorKykKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IHkgPSAw
OyB5IDwgaGVpZ2h0OyB5KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qg
KnNvdXJjZSA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dWludDhf
dD4oaW5wdXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAgICAg
ICAgICB1aW50OF90ICpkZXN0ID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9p
bnRlcjx1aW50OF90PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBp
dGNoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB1aW50OF90IHNvdXJjZVZhbCA9IHNvdXJjZVt4
XTsKKyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gICA9IHNvdXJjZVZhbDsKKyAgICAg
ICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gICA9IHNvdXJjZVZhbDsKKyAgICAgICAgICAgICAg
ICBkZXN0WzQgKiB4ICsgMl0gICA9IHNvdXJjZVZhbDsKKyAgICAgICAgICAgICAgICBkZXN0WzQg
KiB4ICsgM10gICA9IDB4RkY7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisK
K3ZvaWQgTG9hZEw4VG9CR1JBOChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAg
ICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRj
aCwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRw
dXREZXB0aFBpdGNoKQoreworICAgIC8vIFNhbWUgYXMgbG9hZGluZyB0byBSR0JBCisgICAgTG9h
ZEw4VG9SR0JBOCh3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgaW5wdXQsIGlucHV0Um93UGl0Y2gsIGlu
cHV0RGVwdGhQaXRjaCwgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgb3V0cHV0Um93UGl0Y2gs
IG91dHB1dERlcHRoUGl0Y2gpOworfQorCit2b2lkIExvYWRMMzJGVG9SR0JBMzJGKHNpemVfdCB3
aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0
Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
b3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6
KyspCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQor
ICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBmbG9hdCAqc291cmNlID0KKyAgICAgICAgICAg
ICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjxmbG9hdD4oaW5wdXQsIHksIHosIGlucHV0Um93
UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICBmbG9hdCAqZGVzdCA9CisgICAg
ICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8ZmxvYXQ+KG91dHB1dCwgeSwgeiwg
b3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOworICAgICAgICAgICAgZm9yIChzaXpl
X3QgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGRlc3RbNCAqIHggKyAwXSA9IHNvdXJjZVt4XTsKKyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4
ICsgMV0gPSBzb3VyY2VbeF07CisgICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDJdID0gc291
cmNlW3hdOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSA9IDEuMGY7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgTG9hZEwxNkZUb1JHQkExNkYoc2l6
ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRS
b3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwK
KyAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBvdXRwdXREZXB0aFBpdGNoKQoreworICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVw
dGg7IHorKykKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5
KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQxNl90ICpzb3VyY2UgPQorICAg
ICAgICAgICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQxNl90PihpbnB1dCwgeSwg
eiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIHVpbnQxNl90
ICpkZXN0ID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50MTZf
dD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7CisgICAg
ICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gc291cmNlW3hdOworICAgICAgICAg
ICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IHNvdXJjZVt4XTsKKyAgICAgICAgICAgICAgICBkZXN0
WzQgKiB4ICsgMl0gPSBzb3VyY2VbeF07CisgICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDNd
ID0gZ2w6OkZsb2F0MTZPbmU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisK
K3ZvaWQgTG9hZExBOFRvUkdCQTgoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICBz
aXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICBz
aXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVw
dGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAg
ICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBvdXRwdXREZXB0aFBpdGNoKQoreworICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVw
dGg7IHorKykKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5
KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNvdXJjZSA9CisgICAg
ICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dWludDhfdD4oaW5wdXQsIHksIHos
IGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICB1aW50OF90ICpk
ZXN0ID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50OF90Pihv
dXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKKyAgICAgICAg
ICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSBzb3VyY2VbMiAqIHggKyAwXTsKKyAgICAg
ICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSBzb3VyY2VbMiAqIHggKyAwXTsKKyAgICAgICAg
ICAgICAgICBkZXN0WzQgKiB4ICsgMl0gPSBzb3VyY2VbMiAqIHggKyAwXTsKKyAgICAgICAgICAg
ICAgICBkZXN0WzQgKiB4ICsgM10gPSBzb3VyY2VbMiAqIHggKyAxXTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBMb2FkTEE4VG9CR1JBOChzaXplX3Qgd2lkdGgs
CisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQs
CisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICB1aW50
OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwK
KyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgLy8g
U2FtZSBhcyBsb2FkaW5nIHRvIFJHQkEKKyAgICBMb2FkTEE4VG9SR0JBOCh3aWR0aCwgaGVpZ2h0
LCBkZXB0aCwgaW5wdXQsIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCwgb3V0cHV0LAor
ICAgICAgICAgICAgICAgICAgIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKK30K
Kwordm9pZCBMb2FkTEEzMkZUb1JHQkEzMkYoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBk
ZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1
dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0
Y2gpCit7CisgICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQorICAgIHsKKyAg
ICAgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAgeworICAg
ICAgICAgICAgY29uc3QgZmxvYXQgKnNvdXJjZSA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zm
c2V0RGF0YVBvaW50ZXI8ZmxvYXQ+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERl
cHRoUGl0Y2gpOworICAgICAgICAgICAgZmxvYXQgKmRlc3QgPQorICAgICAgICAgICAgICAgIHBy
aXY6Ok9mZnNldERhdGFQb2ludGVyPGZsb2F0PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNo
LCBvdXRwdXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwg
d2lkdGg7IHgrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsg
MF0gPSBzb3VyY2VbMiAqIHggKyAwXTsKKyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0g
PSBzb3VyY2VbMiAqIHggKyAwXTsKKyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMl0gPSBz
b3VyY2VbMiAqIHggKyAwXTsKKyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10gPSBzb3Vy
Y2VbMiAqIHggKyAxXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9p
ZCBMb2FkTEExNkZUb1JHQkExNkYoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1Bp
dGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7
CisgICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQorICAgIHsKKyAgICAgICAg
Zm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAgeworICAgICAgICAg
ICAgY29uc3QgdWludDE2X3QgKnNvdXJjZSA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0
RGF0YVBvaW50ZXI8dWludDE2X3Q+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERl
cHRoUGl0Y2gpOworICAgICAgICAgICAgdWludDE2X3QgKmRlc3QgPQorICAgICAgICAgICAgICAg
IHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQxNl90PihvdXRwdXQsIHksIHosIG91dHB1dFJv
d1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAw
OyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZXN0WzQg
KiB4ICsgMF0gPSBzb3VyY2VbMiAqIHggKyAwXTsKKyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4
ICsgMV0gPSBzb3VyY2VbMiAqIHggKyAwXTsKKyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsg
Ml0gPSBzb3VyY2VbMiAqIHggKyAwXTsKKyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10g
PSBzb3VyY2VbMiAqIHggKyAxXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30K
Kwordm9pZCBMb2FkUkdCOFRvQkdSNTY1KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwK
KyAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91
dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgZm9yIChz
aXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQorICAgIHsKKyAgICAgICAgZm9yIChzaXplX3Qg
eSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgdWlu
dDhfdCAqc291cmNlID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1
aW50OF90PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKKyAg
ICAgICAgICAgIHVpbnQxNl90ICpkZXN0ID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXRE
YXRhUG9pbnRlcjx1aW50MTZfdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0
RGVwdGhQaXRjaCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4
KyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdWludDhfdCByOCA9IHNvdXJjZVt4
ICogMyArIDBdOworICAgICAgICAgICAgICAgIHVpbnQ4X3QgZzggPSBzb3VyY2VbeCAqIDMgKyAx
XTsKKyAgICAgICAgICAgICAgICB1aW50OF90IGI4ID0gc291cmNlW3ggKiAzICsgMl07CisgICAg
ICAgICAgICAgICAgYXV0byByNSAgICA9IHN0YXRpY19jYXN0PHVpbnQxNl90PihyOCA+PiAzKTsK
KyAgICAgICAgICAgICAgICBhdXRvIGc2ICAgID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KGc4ID4+
IDIpOworICAgICAgICAgICAgICAgIGF1dG8gYjUgICAgPSBzdGF0aWNfY2FzdDx1aW50MTZfdD4o
YjggPj4gMyk7CisgICAgICAgICAgICAgICAgZGVzdFt4XSAgICA9IChyNSA8PCAxMSkgfCAoZzYg
PDwgNSkgfCBiNTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBM
b2FkUkdCNTY1VG9CR1I1NjUoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgdWludDhf
dCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNo
LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7Cisg
ICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQorICAgIHsKKyAgICAgICAgZm9y
IChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAgeworICAgICAgICAgICAg
Y29uc3QgdWludDE2X3QgKnNvdXJjZSA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0
YVBvaW50ZXI8dWludDE2X3Q+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRo
UGl0Y2gpOworICAgICAgICAgICAgdWludDE2X3QgKmRlc3QgPQorICAgICAgICAgICAgICAgIHBy
aXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQxNl90PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1Bp
dGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4
IDwgd2lkdGg7IHgrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgR0wg
dHlwZSBSR0IgaXMgcGFja2VkIHdpdGggd2l0aCByZWQgaW4gdGhlIE1TQiwgd2hpbGUgdGhlIEQz
RDExIHR5cGUgQkdSCisgICAgICAgICAgICAgICAgLy8gaXMgcGFja2VkIHdpdGggcmVkIGluIHRo
ZSBMU0IKKyAgICAgICAgICAgICAgICBhdXRvIHJnYiAgICA9IHNvdXJjZVt4XTsKKyAgICAgICAg
ICAgICAgICB1aW50MTZfdCByNSA9IGdsOjpnZXRTaGlmdGVkRGF0YTw1LCAxMT4ocmdiKTsKKyAg
ICAgICAgICAgICAgICB1aW50MTZfdCBnNiA9IGdsOjpnZXRTaGlmdGVkRGF0YTw2LCA1PihyZ2Ip
OworICAgICAgICAgICAgICAgIHVpbnQxNl90IGI1ID0gZ2w6OmdldFNoaWZ0ZWREYXRhPDUsIDA+
KHJnYik7CisgICAgICAgICAgICAgICAgZGVzdFt4XSAgICAgPSAocjUgPDwgMTEpIHwgKGc2IDw8
IDUpIHwgYjU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgTG9h
ZFJHQjhUb0JHUlg4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBo
ZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQ
aXRjaCwKKyAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBvdXRwdXREZXB0aFBpdGNoKQoreworICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVw
dGg7IHorKykKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5
KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNvdXJjZSA9CisgICAg
ICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dWludDhfdD4oaW5wdXQsIHksIHos
IGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICB1aW50OF90ICpk
ZXN0ID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50OF90Pihv
dXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKKyAgICAgICAg
ICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSBzb3VyY2VbeCAqIDMgKyAyXTsKKyAgICAg
ICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSBzb3VyY2VbeCAqIDMgKyAxXTsKKyAgICAgICAg
ICAgICAgICBkZXN0WzQgKiB4ICsgMl0gPSBzb3VyY2VbeCAqIDMgKyAwXTsKKyAgICAgICAgICAg
ICAgICBkZXN0WzQgKiB4ICsgM10gPSAweEZGOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorfQorCit2b2lkIExvYWRSRzhUb0JHUlg4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRo
LAorICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwK
KyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAg
ICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAgICBmb3IgKHNpemVfdCB6ID0g
MDsgeiA8IGRlcHRoOyB6KyspCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8
IGhlaWdodDsgeSsrKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzb3Vy
Y2UgPQorICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+KGlu
cHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOworICAgICAgICAgICAg
dWludDhfdCAqZGVzdCA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8
dWludDhfdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7
CisgICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gMHgwMDsKKyAgICAgICAg
ICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSBzb3VyY2VbeCAqIDIgKyAxXTsKKyAgICAgICAgICAg
ICAgICBkZXN0WzQgKiB4ICsgMl0gPSBzb3VyY2VbeCAqIDIgKyAwXTsKKyAgICAgICAgICAgICAg
ICBkZXN0WzQgKiB4ICsgM10gPSAweEZGOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorfQorCit2b2lkIExvYWRSOFRvQkdSWDgoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAg
IHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERl
cHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRo
OyB6KyspCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsr
KQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzb3VyY2UgPQorICAgICAg
ICAgICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+KGlucHV0LCB5LCB6LCBp
bnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOworICAgICAgICAgICAgdWludDhfdCAqZGVz
dCA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dWludDhfdD4ob3V0
cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAg
ICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gMHgwMDsKKyAgICAgICAgICAgICAgICBkZXN0
WzQgKiB4ICsgMV0gPSAweDAwOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IHNv
dXJjZVt4XTsKKyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10gPSAweEZGOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIExvYWRSNUc2QjVUb0JHUkE4KHNp
emVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0
Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gs
CisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRl
cHRoOyB6KyspCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsg
eSsrKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCB1aW50MTZfdCAqc291cmNlID0KKyAg
ICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50MTZfdD4oaW5wdXQsIHks
IHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICB1aW50OF90
ICpkZXN0ID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50OF90
PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKKyAgICAg
ICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICB1aW50MTZfdCByZ2IgPSBzb3VyY2VbeF07CisgICAgICAgICAgICAg
ICAgZGVzdFs0ICogeCArIDBdID0KKyAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oKChyZ2IgJiAweDAwMUYpIDw8IDMpIHwgKChyZ2IgJiAweDAwMUYpID4+IDIpKTsKKyAg
ICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPQorICAgICAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDx1aW50OF90PigoKHJnYiAmIDB4MDdFMCkgPj4gMykgfCAoKHJnYiAmIDB4MDdFMCkg
Pj4gOSkpOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9CisgICAgICAgICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCgocmdiICYgMHhGODAwKSA+PiA4KSB8ICgocmdi
ICYgMHhGODAwKSA+PiAxMykpOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSA9IDB4
RkY7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgTG9hZFI1RzZC
NVRvUkdCQTgoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVp
Z2h0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0
RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQoreworICAgIGZvciAoc2l6ZV90IHog
PSAwOyB6IDwgZGVwdGg7IHorKykKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5
IDwgaGVpZ2h0OyB5KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQxNl90ICpz
b3VyY2UgPQorICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQxNl90
PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKKyAgICAgICAg
ICAgIHVpbnQ4X3QgKmRlc3QgPQorICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2lu
dGVyPHVpbnQ4X3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0
Y2gpOworICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHVpbnQxNl90IHJnYiA9IHNvdXJjZVt4XTsKKyAg
ICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPQorICAgICAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDx1aW50OF90PigoKHJnYiAmIDB4RjgwMCkgPj4gOCkgfCAoKHJnYiAmIDB4RjgwMCkg
Pj4gMTMpKTsKKyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPQorICAgICAgICAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDx1aW50OF90PigoKHJnYiAmIDB4MDdFMCkgPj4gMykgfCAoKHJn
YiAmIDB4MDdFMCkgPj4gOSkpOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9Cisg
ICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCgocmdiICYgMHgwMDFGKSA8
PCAzKSB8ICgocmdiICYgMHgwMDFGKSA+PiAyKSk7CisgICAgICAgICAgICAgICAgZGVzdFs0ICog
eCArIDNdID0gMHhGRjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9p
ZCBMb2FkUkdCQThUb0JHUkE4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
aW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwK
KyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisjaWYgZGVmaW5lZChBTkdM
RV9VU0VfU1NFKQorICAgIGlmIChnbDo6c3VwcG9ydHNTU0UyKCkpCisgICAgeworICAgICAgICBf
X20xMjhpIGJyTWFzayA9IF9tbV9zZXQxX2VwaTMyKDB4MDBmZjAwZmYpOworCisgICAgICAgIGZv
ciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKKyAgICAgICAgeworICAgICAgICAgICAg
Zm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBjb25zdCB1aW50MzJfdCAqc291cmNlID0KKyAgICAgICAgICAgICAgICAgICAg
cHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dWludDMyX3Q+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1Bp
dGNoLCBpbnB1dERlcHRoUGl0Y2gpOworICAgICAgICAgICAgICAgIHVpbnQzMl90ICpkZXN0ID0g
cHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dWludDMyX3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93
UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3V0cHV0RGVwdGhQaXRjaCk7CisKKyAgICAgICAgICAgICAgICBz
aXplX3QgeCA9IDA7CisKKyAgICAgICAgICAgICAgICAvLyBNYWtlIG91dHB1dCB3cml0ZXMgYWxp
Z25lZAorICAgICAgICAgICAgICAgIGZvciAoOyAoKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+
KCZkZXN0W3hdKSAmIDE1KSAhPSAwKSAmJiB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHJnYmEgPSBzb3VyY2VbeF07CisgICAg
ICAgICAgICAgICAgICAgIGRlc3RbeF0gICAgICAgPSAoQU5HTEVfUk9UTChyZ2JhLCAxNikgJiAw
eDAwZmYwMGZmKSB8IChyZ2JhICYgMHhmZjAwZmYwMCk7CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgZm9yICg7IHggKyAzIDwgd2lkdGg7IHggKz0gNCkKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIF9fbTEyOGkgc291cmNlRGF0YSA9CisgICAgICAg
ICAgICAgICAgICAgICAgICBfbW1fbG9hZHVfc2kxMjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBf
X20xMjhpICo+KCZzb3VyY2VbeF0pKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gTWFzayBvdXQg
ZyBhbmQgYSwgd2hpY2ggZG9uJ3QgY2hhbmdlCisgICAgICAgICAgICAgICAgICAgIF9fbTEyOGkg
Z2FDb21wb25lbnRzID0gX21tX2FuZG5vdF9zaTEyOChick1hc2ssIHNvdXJjZURhdGEpOworICAg
ICAgICAgICAgICAgICAgICAvLyBNYXNrIG91dCBiIGFuZCByCisgICAgICAgICAgICAgICAgICAg
IF9fbTEyOGkgYnJDb21wb25lbnRzID0gX21tX2FuZF9zaTEyOChzb3VyY2VEYXRhLCBick1hc2sp
OworICAgICAgICAgICAgICAgICAgICAvLyBTd2FwIGIgYW5kIHIKKyAgICAgICAgICAgICAgICAg
ICAgX19tMTI4aSBiclN3YXBwZWQgPSBfbW1fc2h1ZmZsZWhpX2VwaTE2KAorICAgICAgICAgICAg
ICAgICAgICAgICAgX21tX3NodWZmbGVsb19lcGkxNihickNvbXBvbmVudHMsIF9NTV9TSFVGRkxF
KDIsIDMsIDAsIDEpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIF9NTV9TSFVGRkxFKDIsIDMs
IDAsIDEpKTsKKyAgICAgICAgICAgICAgICAgICAgX19tMTI4aSByZXN1bHQgPSBfbW1fb3Jfc2kx
MjgoZ2FDb21wb25lbnRzLCBiclN3YXBwZWQpOworICAgICAgICAgICAgICAgICAgICBfbW1fc3Rv
cmVfc2kxMjgocmVpbnRlcnByZXRfY2FzdDxfX20xMjhpICo+KCZkZXN0W3hdKSwgcmVzdWx0KTsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBQZXJmb3JtIGxlZnRvdmVy
IHdyaXRlcworICAgICAgICAgICAgICAgIGZvciAoOyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHJnYmEgPSBzb3VyY2VbeF07
CisgICAgICAgICAgICAgICAgICAgIGRlc3RbeF0gICAgICAgPSAoQU5HTEVfUk9UTChyZ2JhLCAx
NikgJiAweDAwZmYwMGZmKSB8IChyZ2JhICYgMHhmZjAwZmYwMCk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNl
bmRpZgorCisgICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQorICAgIHsKKyAg
ICAgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAgeworICAg
ICAgICAgICAgY29uc3QgdWludDMyX3QgKnNvdXJjZSA9CisgICAgICAgICAgICAgICAgcHJpdjo6
T2Zmc2V0RGF0YVBvaW50ZXI8dWludDMyX3Q+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBp
bnB1dERlcHRoUGl0Y2gpOworICAgICAgICAgICAgdWludDMyX3QgKmRlc3QgPQorICAgICAgICAg
ICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQzMl90PihvdXRwdXQsIHksIHosIG91
dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90
IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB1
aW50MzJfdCByZ2JhID0gc291cmNlW3hdOworICAgICAgICAgICAgICAgIGRlc3RbeF0gICAgICAg
PSAoQU5HTEVfUk9UTChyZ2JhLCAxNikgJiAweDAwZmYwMGZmKSB8IChyZ2JhICYgMHhmZjAwZmYw
MCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgTG9hZFJHQkE4
VG9CR1JBNChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdo
dCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQ
aXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQoreworICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwg
ZGVwdGg7IHorKykKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0
OyB5KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90ICpzb3VyY2UgPQor
ICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQzMl90PihpbnB1dCwg
eSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIHVpbnQx
Nl90ICpkZXN0ID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50
MTZfdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7Cisg
ICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgdWludDMyX3QgcmdiYTggPSBzb3VyY2VbeF07CisgICAgICAg
ICAgICAgICAgYXV0byByNCAgICAgICAgPSBzdGF0aWNfY2FzdDx1aW50MTZfdD4oKHJnYmE4ICYg
MHgwMDAwMDBGRikgPj4gNCk7CisgICAgICAgICAgICAgICAgYXV0byBnNCAgICAgICAgPSBzdGF0
aWNfY2FzdDx1aW50MTZfdD4oKHJnYmE4ICYgMHgwMDAwRkYwMCkgPj4gMTIpOworICAgICAgICAg
ICAgICAgIGF1dG8gYjQgICAgICAgID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KChyZ2JhOCAmIDB4
MDBGRjAwMDApID4+IDIwKTsKKyAgICAgICAgICAgICAgICBhdXRvIGE0ICAgICAgICA9IHN0YXRp
Y19jYXN0PHVpbnQxNl90PigocmdiYTggJiAweEZGMDAwMDAwKSA+PiAyOCk7CisgICAgICAgICAg
ICAgICAgZGVzdFt4XSAgICAgICAgPSAoYTQgPDwgMTIpIHwgKHI0IDw8IDgpIHwgKGc0IDw8IDQp
IHwgYjQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgTG9hZFJH
QkE0VG9BUkdCNChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhl
aWdodCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVw
dGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQoreworICAgIGZvciAoc2l6ZV90IHogPSAwOyB6
IDwgZGVwdGg7IHorKykKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVp
Z2h0OyB5KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQxNl90ICpzb3VyY2Ug
PQorICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQxNl90PihpbnB1
dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIHVp
bnQxNl90ICpkZXN0ID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1
aW50MTZfdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7
CisgICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgZGVzdFt4XSA9IEFOR0xFX1JPVFIxNihzb3VyY2VbeF0s
IDQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIExvYWRSR0JB
NFRvQkdSQTgoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWln
aHQsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRo
UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8
IGRlcHRoOyB6KyspCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdo
dDsgeSsrKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCB1aW50MTZfdCAqc291cmNlID0K
KyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50MTZfdD4oaW5wdXQs
IHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICB1aW50
OF90ICpkZXN0ID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50
OF90PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKKyAg
ICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICB1aW50MTZfdCByZ2JhID0gc291cmNlW3hdOworICAgICAgICAg
ICAgICAgIGRlc3RbNCAqIHggKyAwXSA9CisgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KCgocmdiYSAmIDB4MDBGMCkgPDwgMCkgfCAoKHJnYmEgJiAweDAwRjApID4+IDQp
KTsKKyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPQorICAgICAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDx1aW50OF90PigoKHJnYmEgJiAweDBGMDApID4+IDQpIHwgKChyZ2JhICYg
MHgwRjAwKSA+PiA4KSk7CisgICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDJdID0KKyAgICAg
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDhfdD4oKChyZ2JhICYgMHhGMDAwKSA+PiA4
KSB8ICgocmdiYSAmIDB4RjAwMCkgPj4gMTIpKTsKKyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4
ICsgM10gPQorICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50OF90PigoKHJnYmEg
JiAweDAwMEYpIDw8IDQpIHwgKChyZ2JhICYgMHgwMDBGKSA+PiAwKSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgTG9hZFJHQkE0VG9SR0JBOChzaXplX3Qgd2lk
dGgsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhf
dCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAg
ICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0
aFBpdGNoKQoreworICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKKyAgICB7
CisgICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgICAgIHsK
KyAgICAgICAgICAgIGNvbnN0IHVpbnQxNl90ICpzb3VyY2UgPQorICAgICAgICAgICAgICAgIHBy
aXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQxNl90PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRj
aCwgaW5wdXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIHVpbnQ4X3QgKmRlc3QgPQorICAgICAg
ICAgICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+KG91dHB1dCwgeSwgeiwg
b3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOworICAgICAgICAgICAgZm9yIChzaXpl
X3QgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHVpbnQxNl90IHJnYmEgPSBzb3VyY2VbeF07CisgICAgICAgICAgICAgICAgZGVzdFs0ICogeCAr
IDBdID0KKyAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDhfdD4oKChyZ2JhICYg
MHhGMDAwKSA+PiA4KSB8ICgocmdiYSAmIDB4RjAwMCkgPj4gMTIpKTsKKyAgICAgICAgICAgICAg
ICBkZXN0WzQgKiB4ICsgMV0gPQorICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50
OF90PigoKHJnYmEgJiAweDBGMDApID4+IDQpIHwgKChyZ2JhICYgMHgwRjAwKSA+PiA4KSk7Cisg
ICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDJdID0KKyAgICAgICAgICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8dWludDhfdD4oKChyZ2JhICYgMHgwMEYwKSA8PCAwKSB8ICgocmdiYSAmIDB4MDBG
MCkgPj4gNCkpOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSA9CisgICAgICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCgocmdiYSAmIDB4MDAwRikgPDwgNCkgfCAo
KHJnYmEgJiAweDAwMEYpID4+IDApKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
K30KKwordm9pZCBMb2FkQkdSQTRUb0JHUkE4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0
aCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qg
Km91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgZm9y
IChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQorICAgIHsKKyAgICAgICAgZm9yIChzaXpl
X3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3Qg
dWludDE2X3QgKnNvdXJjZSA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50
ZXI8dWludDE2X3Q+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gp
OworICAgICAgICAgICAgdWludDhfdCAqZGVzdCA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zm
c2V0RGF0YVBvaW50ZXI8dWludDhfdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0
cHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRo
OyB4KyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdWludDE2X3QgYmdyYSA9IHNv
dXJjZVt4XTsKKyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPQorICAgICAgICAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDx1aW50OF90PigoKGJncmEgJiAweEYwMDApID4+IDgpIHwgKChi
Z3JhICYgMHhGMDAwKSA+PiAxMikpOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9
CisgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCgoYmdyYSAmIDB4MEYw
MCkgPj4gNCkgfCAoKGJncmEgJiAweDBGMDApID4+IDgpKTsKKyAgICAgICAgICAgICAgICBkZXN0
WzQgKiB4ICsgMl0gPQorICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50OF90Pigo
KGJncmEgJiAweDAwRjApIDw8IDApIHwgKChiZ3JhICYgMHgwMEYwKSA+PiA0KSk7CisgICAgICAg
ICAgICAgICAgZGVzdFs0ICogeCArIDNdID0KKyAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8dWludDhfdD4oKChiZ3JhICYgMHgwMDBGKSA8PCA0KSB8ICgoYmdyYSAmIDB4MDAwRikgPj4g
MCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIExvYWRSR0JB
OFRvQkdSNUExKHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhl
aWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1
dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAgICBmb3IgKHNpemVfdCB6
ID0gMDsgeiA8IGRlcHRoOyB6KyspCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsg
eSA8IGhlaWdodDsgeSsrKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCB1aW50MzJfdCAq
c291cmNlID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50MzJf
dD4oaW5wdXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAgICAg
ICAgICB1aW50MTZfdCAqZGVzdCA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBv
aW50ZXI8dWludDE2X3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRo
UGl0Y2gpOworICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHVpbnQzMl90IHJnYmE4ID0gc291cmNlW3hd
OworICAgICAgICAgICAgICAgIGF1dG8gcjUgICAgICAgID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+
KChyZ2JhOCAmIDB4MDAwMDAwRkYpID4+IDMpOworICAgICAgICAgICAgICAgIGF1dG8gZzUgICAg
ICAgID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KChyZ2JhOCAmIDB4MDAwMEZGMDApID4+IDExKTsK
KyAgICAgICAgICAgICAgICBhdXRvIGI1ICAgICAgICA9IHN0YXRpY19jYXN0PHVpbnQxNl90Pigo
cmdiYTggJiAweDAwRkYwMDAwKSA+PiAxOSk7CisgICAgICAgICAgICAgICAgYXV0byBhMSAgICAg
ICAgPSBzdGF0aWNfY2FzdDx1aW50MTZfdD4oKHJnYmE4ICYgMHhGRjAwMDAwMCkgPj4gMzEpOwor
ICAgICAgICAgICAgICAgIGRlc3RbeF0gICAgICAgID0gKGExIDw8IDE1KSB8IChyNSA8PCAxMCkg
fCAoZzUgPDwgNSkgfCBiNTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwor
dm9pZCBMb2FkUkdCMTBBMlRvQkdSNUExKHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBk
ZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
b3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERl
cHRoUGl0Y2gpCit7CisgICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQorICAg
IHsKKyAgICAgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAg
eworICAgICAgICAgICAgY29uc3QgUjEwRzEwQjEwQTIgKnNvdXJjZSA9CisgICAgICAgICAgICAg
ICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8UjEwRzEwQjEwQTI+KGlucHV0LCB5LCB6LCBpbnB1
dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOworICAgICAgICAgICAgdWludDE2X3QgKmRlc3Qg
PQorICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQxNl90PihvdXRw
dXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAg
IGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBSMTBHMTBCMTBBMiByZ2IxMGEyID0gc291cmNlW3hdOworCisgICAgICAgICAg
ICAgICAgdWludDE2X3QgcjUgPSBzdGF0aWNfY2FzdDx1aW50MTZfdD4ocmdiMTBhMi5SID4+IDV1
KTsKKyAgICAgICAgICAgICAgICB1aW50MTZfdCBnNSA9IHN0YXRpY19jYXN0PHVpbnQxNl90Pihy
Z2IxMGEyLkcgPj4gNXUpOworICAgICAgICAgICAgICAgIHVpbnQxNl90IGI1ID0gc3RhdGljX2Nh
c3Q8dWludDE2X3Q+KHJnYjEwYTIuQiA+PiA1dSk7CisgICAgICAgICAgICAgICAgdWludDE2X3Qg
YTEgPSBzdGF0aWNfY2FzdDx1aW50MTZfdD4ocmdiMTBhMi5BID4+IDF1KTsKKworICAgICAgICAg
ICAgICAgIGRlc3RbeF0gPSAoYTEgPDwgMTUpIHwgKHI1IDw8IDEwKSB8IChnNSA8PCA1KSB8IGI1
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIExvYWRSR0I1QTFU
b0ExUkdCNShzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVp
Z2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBp
bnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQs
CisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAgICBmb3IgKHNp
emVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCB5
ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCB1aW50
MTZfdCAqc291cmNlID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1
aW50MTZfdD4oaW5wdXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7Cisg
ICAgICAgICAgICB1aW50MTZfdCAqZGVzdCA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0
RGF0YVBvaW50ZXI8dWludDE2X3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1
dERlcHRoUGl0Y2gpOworICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsg
eCsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlc3RbeF0gPSBBTkdMRV9ST1RS
MTYoc291cmNlW3hdLCAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwor
dm9pZCBMb2FkUkdCNUExVG9CR1JBOChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90
ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwK
KyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAg
Zm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQorICAgIHsKKyAgICAgICAgZm9yIChz
aXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAgeworICAgICAgICAgICAgY29u
c3QgdWludDE2X3QgKnNvdXJjZSA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBv
aW50ZXI8dWludDE2X3Q+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0
Y2gpOworICAgICAgICAgICAgdWludDhfdCAqZGVzdCA9CisgICAgICAgICAgICAgICAgcHJpdjo6
T2Zmc2V0RGF0YVBvaW50ZXI8dWludDhfdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwg
b3V0cHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdp
ZHRoOyB4KyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdWludDE2X3QgcmdiYSA9
IHNvdXJjZVt4XTsKKyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPQorICAgICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50OF90PigoKHJnYmEgJiAweDAwM0UpIDw8IDIpIHwg
KChyZ2JhICYgMHgwMDNFKSA+PiAzKSk7CisgICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDFd
ID0KKyAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDhfdD4oKChyZ2JhICYgMHgw
N0MwKSA+PiAzKSB8ICgocmdiYSAmIDB4MDdDMCkgPj4gOCkpOworICAgICAgICAgICAgICAgIGRl
c3RbNCAqIHggKyAyXSA9CisgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KCgocmdiYSAmIDB4RjgwMCkgPj4gOCkgfCAoKHJnYmEgJiAweEY4MDApID4+IDEzKSk7CisgICAg
ICAgICAgICAgICAgZGVzdFs0ICogeCArIDNdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oKHJnYmEg
JiAweDAwMDEpID8gMHhGRiA6IDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
fQorCit2b2lkIExvYWRSR0I1QTFUb1JHQkE4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRl
cHRoLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1Bp
dGNoLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3sK
KyAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCisgICAgeworICAgICAgICBm
b3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgICAgICB7CisgICAgICAgICAg
ICBjb25zdCB1aW50MTZfdCAqc291cmNlID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXRE
YXRhUG9pbnRlcjx1aW50MTZfdD4oaW5wdXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVw
dGhQaXRjaCk7CisgICAgICAgICAgICB1aW50OF90ICpkZXN0ID0KKyAgICAgICAgICAgICAgICBw
cml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50OF90PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1Bp
dGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4
IDwgd2lkdGg7IHgrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB1aW50MTZfdCBy
Z2JhID0gc291cmNlW3hdOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSA9CisgICAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCgocmdiYSAmIDB4RjgwMCkgPj4g
OCkgfCAoKHJnYmEgJiAweEY4MDApID4+IDEzKSk7CisgICAgICAgICAgICAgICAgZGVzdFs0ICog
eCArIDFdID0KKyAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDhfdD4oKChyZ2Jh
ICYgMHgwN0MwKSA+PiAzKSB8ICgocmdiYSAmIDB4MDdDMCkgPj4gOCkpOworICAgICAgICAgICAg
ICAgIGRlc3RbNCAqIHggKyAyXSA9CisgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KCgocmdiYSAmIDB4MDAzRSkgPDwgMikgfCAoKHJnYmEgJiAweDAwM0UpID4+IDMpKTsK
KyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10gPSBzdGF0aWNfY2FzdDx1aW50OF90Pigo
cmdiYSAmIDB4MDAwMSkgPyAweEZGIDogMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK3ZvaWQgTG9hZEJHUjVBMVRvQkdSQTgoc2l6ZV90IHdpZHRoLAorICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAor
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0
Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNo
KQoreworICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKKyAgICB7CisgICAg
ICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGNvbnN0IHVpbnQxNl90ICpzb3VyY2UgPQorICAgICAgICAgICAgICAgIHByaXY6Ok9m
ZnNldERhdGFQb2ludGVyPHVpbnQxNl90PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5w
dXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIHVpbnQ4X3QgKmRlc3QgPQorICAgICAgICAgICAg
ICAgIHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0
Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOworICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9
IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHVpbnQx
Nl90IGJncmEgPSBzb3VyY2VbeF07CisgICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0K
KyAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDhfdD4oKChiZ3JhICYgMHhGODAw
KSA+PiA4KSB8ICgoYmdyYSAmIDB4RjgwMCkgPj4gMTMpKTsKKyAgICAgICAgICAgICAgICBkZXN0
WzQgKiB4ICsgMV0gPQorICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50OF90Pigo
KGJncmEgJiAweDA3QzApID4+IDMpIHwgKChiZ3JhICYgMHgwN0MwKSA+PiA4KSk7CisgICAgICAg
ICAgICAgICAgZGVzdFs0ICogeCArIDJdID0KKyAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8dWludDhfdD4oKChiZ3JhICYgMHgwMDNFKSA8PCAyKSB8ICgoYmdyYSAmIDB4MDAzRSkgPj4g
MykpOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSA9IHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KChiZ3JhICYgMHgwMDAxKSA/IDB4RkYgOiAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KK30KKwordm9pZCBMb2FkUkdCMTBBMlRvUkdCQTgoc2l6ZV90IHdpZHRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qg
KmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91
dHB1dERlcHRoUGl0Y2gpCit7CisgICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisr
KQorICAgIHsKKyAgICAgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAg
ICAgICAgeworICAgICAgICAgICAgY29uc3QgdWludDMyX3QgKnNvdXJjZSA9CisgICAgICAgICAg
ICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dWludDMyX3Q+KGlucHV0LCB5LCB6LCBpbnB1
dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOworICAgICAgICAgICAgdWludDhfdCAqZGVzdCA9
CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dWludDhfdD4ob3V0cHV0
LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICBm
b3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgdWludDMyX3QgcmdiYSAgID0gc291cmNlW3hdOworICAgICAgICAgICAgICAgIGRl
c3RbNCAqIHggKyAwXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KChyZ2JhICYgMHgwMDAwMDNGRikg
Pj4gMik7CisgICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oKHJnYmEgJiAweDAwMEZGQzAwKSA+PiAxMik7CisgICAgICAgICAgICAgICAgZGVzdFs0
ICogeCArIDJdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oKHJnYmEgJiAweDNGRjAwMDAwKSA+PiAy
Mik7CisgICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDNdID0gc3RhdGljX2Nhc3Q8dWludDhf
dD4oKChyZ2JhICYgMHhDMDAwMDAwMCkgPj4gMzApICogMHg1NSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgTG9hZFJHQjE2RlRvUkdCOUU1KHNpemVfdCB3aWR0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1Bp
dGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBvdXRwdXREZXB0aFBpdGNoKQoreworICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVw
dGg7IHorKykKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5
KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQxNl90ICpzb3VyY2UgPQorICAg
ICAgICAgICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQxNl90PihpbnB1dCwgeSwg
eiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIHVpbnQzMl90
ICpkZXN0ID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50MzJf
dD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7CisgICAg
ICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgZGVzdFt4XSA9IGdsOjpjb252ZXJ0UkdCRmxvYXRzVG85OTlFNShn
bDo6ZmxvYXQxNlRvRmxvYXQzMihzb3VyY2VbeCAqIDMgKyAwXSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6ZmxvYXQxNlRvRmxvYXQz
Mihzb3VyY2VbeCAqIDMgKyAxXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnbDo6ZmxvYXQxNlRvRmxvYXQzMihzb3VyY2VbeCAqIDMgKyAy
XSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIExvYWRSR0Iz
MkZUb1JHQjlFNShzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
aGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRw
dXQsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAgICBmb3Ig
KHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCisgICAgeworICAgICAgICBmb3IgKHNpemVf
dCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBm
bG9hdCAqc291cmNlID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjxm
bG9hdD4oaW5wdXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAg
ICAgICAgICB1aW50MzJfdCAqZGVzdCA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0
YVBvaW50ZXI8dWludDMyX3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERl
cHRoUGl0Y2gpOworICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCsr
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlc3RbeF0gPSBnbDo6Y29udmVydFJH
QkZsb2F0c1RvOTk5RTUoc291cmNlW3ggKiAzICsgMF0sIHNvdXJjZVt4ICogMyArIDFdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNl
W3ggKiAzICsgMl0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lk
IExvYWRSR0IxNkZUb1JHMTFCMTBGKHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRl
cHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0
cHV0RGVwdGhQaXRjaCkKK3sKKyAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6Kysp
CisgICAgeworICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAg
ICAgICB7CisgICAgICAgICAgICBjb25zdCB1aW50MTZfdCAqc291cmNlID0KKyAgICAgICAgICAg
ICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50MTZfdD4oaW5wdXQsIHksIHosIGlucHV0
Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICB1aW50MzJfdCAqZGVzdCA9
CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dWludDMyX3Q+KG91dHB1
dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOworICAgICAgICAgICAg
Zm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGRlc3RbeF0gPSAoZ2w6OmZsb2F0MzJUb0Zsb2F0MTEoZ2w6OmZsb2F0MTZUb0Zs
b2F0MzIoc291cmNlW3ggKiAzICsgMF0pKSA8PCAwKSB8CisgICAgICAgICAgICAgICAgICAgICAg
ICAgIChnbDo6ZmxvYXQzMlRvRmxvYXQxMShnbDo6ZmxvYXQxNlRvRmxvYXQzMihzb3VyY2VbeCAq
IDMgKyAxXSkpIDw8IDExKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgIChnbDo6ZmxvYXQz
MlRvRmxvYXQxMChnbDo6ZmxvYXQxNlRvRmxvYXQzMihzb3VyY2VbeCAqIDMgKyAyXSkpIDw8IDIy
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBMb2FkUkdCMzJG
VG9SRzExQjEwRihzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRS
b3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0
Y2gpCit7CisgICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQorICAgIHsKKyAg
ICAgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAgeworICAg
ICAgICAgICAgY29uc3QgZmxvYXQgKnNvdXJjZSA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zm
c2V0RGF0YVBvaW50ZXI8ZmxvYXQ+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERl
cHRoUGl0Y2gpOworICAgICAgICAgICAgdWludDMyX3QgKmRlc3QgPQorICAgICAgICAgICAgICAg
IHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQzMl90PihvdXRwdXQsIHksIHosIG91dHB1dFJv
d1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAw
OyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZXN0W3hd
ID0gKGdsOjpmbG9hdDMyVG9GbG9hdDExKHNvdXJjZVt4ICogMyArIDBdKSA8PCAwKSB8CisgICAg
ICAgICAgICAgICAgICAgICAgICAgIChnbDo6ZmxvYXQzMlRvRmxvYXQxMShzb3VyY2VbeCAqIDMg
KyAxXSkgPDwgMTEpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGdsOjpmbG9hdDMyVG9G
bG9hdDEwKHNvdXJjZVt4ICogMyArIDJdKSA8PCAyMik7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9Cit9CisKK3ZvaWQgTG9hZEc4UjI0VG9SMjRHOChzaXplX3Qgd2lkdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQs
CisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAg
ICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJv
d1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQor
eworICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKKyAgICB7CisgICAgICAg
IGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGNvbnN0IHVpbnQzMl90ICpzb3VyY2UgPQorICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNl
dERhdGFQb2ludGVyPHVpbnQzMl90PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXRE
ZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIHVpbnQzMl90ICpkZXN0ID0KKyAgICAgICAgICAgICAg
ICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50MzJfdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRS
b3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0g
MDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdWludDMy
X3QgZCA9IHNvdXJjZVt4XSA+PiA4OworICAgICAgICAgICAgICAgIHVpbnQ4X3QgcyAgPSBzb3Vy
Y2VbeF0gJiAweEZGOworICAgICAgICAgICAgICAgIGRlc3RbeF0gICAgPSBkIHwgKHMgPDwgMjQp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIExvYWREMzJGVG9E
MzJGKHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICBjb25z
dCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0
Y2gsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAg
ICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQ
aXRjaCkKK3sKKyAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCisgICAgewor
ICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgICAgICB7Cisg
ICAgICAgICAgICBjb25zdCBmbG9hdCAqc291cmNlID0KKyAgICAgICAgICAgICAgICBwcml2OjpP
ZmZzZXREYXRhUG9pbnRlcjxmbG9hdD4oaW5wdXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0
RGVwdGhQaXRjaCk7CisgICAgICAgICAgICBmbG9hdCAqZGVzdCA9CisgICAgICAgICAgICAgICAg
cHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8ZmxvYXQ+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0
Y2gsIG91dHB1dERlcHRoUGl0Y2gpOworICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHgg
PCB3aWR0aDsgeCsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlc3RbeF0gPSBn
bDo6Y2xhbXAwMShzb3VyY2VbeF0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
fQorCit2b2lkIExvYWREMzJGUzhYMjRUb0QzMkZTOFgyNChzaXplX3Qgd2lkdGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBp
bnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpv
dXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0
Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRj
aCkKK3sKKyAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCisgICAgeworICAg
ICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgICAgICB7CisgICAg
ICAgICAgICBjb25zdCBmbG9hdCAqc291cmNlRGVwdGggPQorICAgICAgICAgICAgICAgIHByaXY6
Ok9mZnNldERhdGFQb2ludGVyPGZsb2F0PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5w
dXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90ICpzb3VyY2VTdGVuY2ls
ID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50MzJfdD4oaW5w
dXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCkgKyAxOworICAgICAgICAg
ICAgZmxvYXQgKmRlc3REZXB0aCA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBv
aW50ZXI8ZmxvYXQ+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0
Y2gpOworICAgICAgICAgICAgdWludDMyX3QgKmRlc3RTdGVuY2lsID0KKyAgICAgICAgICAgICAg
ICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50MzJfdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRS
b3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCkgKworICAgICAgICAgICAgICAgIDE7CisgICAgICAg
ICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgZGVzdERlcHRoW3ggKiAyXSAgID0gZ2w6OmNsYW1wMDEoc291cmNlRGVw
dGhbeCAqIDJdKTsKKyAgICAgICAgICAgICAgICBkZXN0U3RlbmNpbFt4ICogMl0gPSBzb3VyY2VT
dGVuY2lsW3ggKiAyXSAmIDB4RkYwMDAwMDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK3ZvaWQgTG9hZFJHQjMyRlRvUkdCQTE2RihzaXplX3Qgd2lkdGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAq
aW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBvdXRwdXREZXB0aFBpdGNoKQoreworICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7
IHorKykKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5Kysp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGZsb2F0ICpzb3VyY2UgPQorICAgICAgICAg
ICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2ludGVyPGZsb2F0PihpbnB1dCwgeSwgeiwgaW5wdXRS
b3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIHVpbnQxNl90ICpkZXN0ID0K
KyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50MTZfdD4ob3V0cHV0
LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICBm
b3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgZGVzdFt4ICogNCArIDBdID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTYoc291cmNlW3gg
KiAzICsgMF0pOworICAgICAgICAgICAgICAgIGRlc3RbeCAqIDQgKyAxXSA9IGdsOjpmbG9hdDMy
VG9GbG9hdDE2KHNvdXJjZVt4ICogMyArIDFdKTsKKyAgICAgICAgICAgICAgICBkZXN0W3ggKiA0
ICsgMl0gPSBnbDo6ZmxvYXQzMlRvRmxvYXQxNihzb3VyY2VbeCAqIDMgKyAyXSk7CisgICAgICAg
ICAgICAgICAgZGVzdFt4ICogNCArIDNdID0gZ2w6OkZsb2F0MTZPbmU7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgTG9hZFIzMlRvUjE2KHNpemVfdCB3aWR0aCwK
KyAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICBzaXpl
X3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAg
ICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgc2l6
ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwK
KyAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAg
ICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQoreworICAgIGZvciAoc2l6ZV90IHogPSAwOyB6
IDwgZGVwdGg7IHorKykKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVp
Z2h0OyB5KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90ICpzb3VyY2Ug
PQorICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQzMl90PihpbnB1
dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIHVp
bnQxNl90ICpkZXN0ID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1
aW50MTZfdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7
CisgICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgZGVzdFt4XSA9IHNvdXJjZVt4XSA+PiAxNjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBMb2FkUjMyVG9SMjRHOChzaXpl
X3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhf
dCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAg
ICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRS
b3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7
CisgICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQorICAgIHsKKyAgICAgICAg
Zm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAgeworICAgICAgICAg
ICAgY29uc3QgdWludDMyX3QgKnNvdXJjZSA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0
RGF0YVBvaW50ZXI8dWludDMyX3Q+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERl
cHRoUGl0Y2gpOworICAgICAgICAgICAgdWludDMyX3QgKmRlc3QgPQorICAgICAgICAgICAgICAg
IHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQzMl90PihvdXRwdXQsIHksIHosIG91dHB1dFJv
d1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKKworICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9
IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlc3Rb
eF0gPSBzb3VyY2VbeF0gPj4gODsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30K
KworfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvaW1hZ2VfdXRpbC9sb2FkaW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvaW1hZ2VfdXRpbC9sb2FkaW1hZ2UuaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvaW1hZ2VfdXRpbC9sb2FkaW1hZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDYxOCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMy0yMDE1IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gbG9hZGltYWdl
Lmg6IERlZmluZXMgaW1hZ2UgbG9hZGluZyBmdW5jdGlvbnMKKworI2lmbmRlZiBJTUFHRVVUSUxf
TE9BRElNQUdFX0hfCisjZGVmaW5lIElNQUdFVVRJTF9MT0FESU1BR0VfSF8KKworI2luY2x1ZGUg
PHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorCituYW1lc3BhY2UgYW5nbGUKK3sKKwor
dm9pZCBMb2FkQThUb1JHQkE4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICBzaXpl
X3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAg
ICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICBzaXplX3Qg
aW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNo
LAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAg
ICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1
dERlcHRoUGl0Y2gpOworCit2b2lkIExvYWRBOFRvQkdSQTgoc2l6ZV90IHdpZHRoLAorICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRl
cHRoLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgIHNpemVf
dCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAor
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAg
ICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7CisKK3ZvaWQgTG9hZEEzMkZUb1JHQkEzMkYo
c2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5w
dXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRj
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKKwordm9pZCBMb2FkQTE2RlRvUkdCQTE2RihzaXpl
X3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJv
d1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAor
ICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IG91dHB1dERlcHRoUGl0Y2gpOworCit2b2lkIExvYWRMOFRvUkdCQTgoc2l6ZV90IHdpZHRo
LAorICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAor
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgdWludDhfdCAq
b3V0cHV0LAorICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAg
ICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7CisKK3ZvaWQgTG9hZEw4VG9C
R1JBOChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAg
ICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgY29uc3Qg
dWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gs
CisgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAg
ICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1
dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsK
Kwordm9pZCBMb2FkTDMyRlRvUkdCQTMyRihzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICB1aW50
OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRj
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOworCit2
b2lkIExvYWRMMTZGVG9SR0JBMTZGKHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qg
Km91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAor
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7CisKK3ZvaWQg
TG9hZExBOFRvUkdCQTgoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
aGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
aW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRj
aCwKKyAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAg
ICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBv
dXRwdXREZXB0aFBpdGNoKTsKKwordm9pZCBMb2FkTEE4VG9CR1JBOChzaXplX3Qgd2lkdGgsCisg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICB1aW50OF90
ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOworCit2b2lkIExvYWRM
QTMyRlRvUkdCQTMyRihzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpv
dXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7CisKK3ZvaWQg
TG9hZExBMTZGVG9SR0JBMTZGKHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4
X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRj
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKKwor
dm9pZCBMb2FkUkdCOFRvQkdSNTY1KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1
dCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOworCit2b2lkIExvYWRSR0I1
NjVUb0JHUjU2NShzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
aGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRw
dXQsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7CisKK3ZvaWQgTG9h
ZFJHQjhUb0JHUlg4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBo
ZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQ
aXRjaCwKKyAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBvdXRwdXREZXB0aFBpdGNoKTsKKwordm9pZCBMb2FkUkc4VG9CR1JYOChzaXplX3Qgd2lk
dGgsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5w
dXQsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICB1
aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRj
aCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOworCit2b2lk
IExvYWRSOFRvQkdSWDgoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgIHNpemVfdCBo
ZWlnaHQsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1
dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgIHNp
emVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVw
dGhQaXRjaCk7CisKK3ZvaWQgTG9hZFI1RzZCNVRvQkdSQTgoc2l6ZV90IHdpZHRoLAorICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0
LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0
cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBp
dGNoKTsKKwordm9pZCBMb2FkUjVHNkI1VG9SR0JBOChzaXplX3Qgd2lkdGgsCisgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAg
ICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRS
b3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gp
OworCit2b2lkIExvYWRSR0JBOFRvQkdSQTgoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRo
LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAq
b3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7CisKK3ZvaWQgTG9h
ZFJHQkE4VG9CR1JBNChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0
RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKKwordm9pZCBMb2FkUkdCQTRUb0FSR0I0
KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRS
b3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAor
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IG91dHB1dERlcHRoUGl0Y2gpOworCit2b2lkIExvYWRSR0JBNFRvQkdSQTgoc2l6ZV90IHdpZHRo
LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qg
KmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAg
ICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBv
dXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQ
aXRjaCk7CisKK3ZvaWQgTG9hZFJHQkE0VG9SR0JBOChzaXplX3Qgd2lkdGgsCisgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
ZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICB1aW50
OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNo
LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKKwordm9p
ZCBMb2FkQkdSQTRUb0JHUkE4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
aW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwK
KyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOworCit2b2lkIExvYWRSR0JBOFRv
QkdSNUExKHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdo
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERl
cHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7CisKK3ZvaWQgTG9hZFJHQjEwQTJUb0JH
UjVBMShzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdo
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRw
dXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKKwordm9pZCBM
b2FkUkdCNUExVG9BMVJHQjUoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgdWludDhf
dCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNo
LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOworCit2
b2lkIExvYWRSR0I1QTFUb0JHUkE4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qg
Km91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAor
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7CisKK3ZvaWQg
TG9hZFJHQjVBMVRvUkdCQTgoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0
cHV0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKKwordm9pZCBMb2Fk
QkdSNUExVG9CR1JBOChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
aW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQs
CisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOworCit2b2lkIExvYWRSR0Ix
MEEyVG9SR0JBOChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
aGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRw
dXQsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7CisKK3ZvaWQgTG9h
ZFJHQjE2RlRvUkdCOUU1KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qg
Km91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKKwordm9p
ZCBMb2FkUkdCMzJGVG9SR0I5RTUoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1Bp
dGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOwor
Cit2b2lkIExvYWRSR0IxNkZUb1JHMTFCMTBGKHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgb3V0cHV0RGVwdGhQaXRjaCk7CisKK3ZvaWQgTG9hZFJHQjMyRlRvUkcxMUIxMEYoc2l6ZV90
IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0
RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKKwordm9pZCBMb2Fk
RzhSMjRUb1IyNEc4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
aGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRE
ZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOworCit2b2lkIExvYWREMzJGVG9EMzJGKHNp
emVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50
OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAg
ICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1
dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7
CisKK3ZvaWQgTG9hZEQzMkZTOFgyNFRvRDMyRlM4WDI0KHNpemVfdCB3aWR0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlu
cHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91
dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRj
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNo
KTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIHR5cGUsIHNpemVfdCBjb21wb25lbnRDb3VudD4KK2lu
bGluZSB2b2lkIExvYWRUb05hdGl2ZShzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVw
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91
dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0
aFBpdGNoKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIHR5cGUsIHVpbnQzMl90IGZvdXJ0aENvbXBv
bmVudEJpdHM+CitpbmxpbmUgdm9pZCBMb2FkVG9OYXRpdmUzVG80KHNpemVfdCB3aWR0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBp
bnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91
dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNo
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7
CisKK3RlbXBsYXRlIDxzaXplX3QgY29tcG9uZW50Q291bnQ+CitpbmxpbmUgdm9pZCBMb2FkMzJG
VG8xNkYoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWln
aHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0
cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7CisKK3ZvaWQg
TG9hZFJHQjMyRlRvUkdCQTE2RihzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1
dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBp
dGNoKTsKKwordGVtcGxhdGUgPHNpemVfdCBibG9ja1dpZHRoLCBzaXplX3QgYmxvY2tIZWlnaHQs
IHNpemVfdCBibG9ja1NpemU+CitpbmxpbmUgdm9pZCBMb2FkQ29tcHJlc3NlZFRvTmF0aXZlKHNp
emVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhl
aWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0
Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNo
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQ
aXRjaCk7CisKK3ZvaWQgTG9hZFIzMlRvUjE2KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAg
ICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAg
ICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgIHNp
emVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQ
aXRjaCwKKyAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAg
ICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRw
dXREZXB0aFBpdGNoKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIHR5cGUsCisgICAgICAgICAgdWlu
dDMyX3QgZmlyc3RCaXRzLAorICAgICAgICAgIHVpbnQzMl90IHNlY29uZEJpdHMsCisgICAgICAg
ICAgdWludDMyX3QgdGhpcmRCaXRzLAorICAgICAgICAgIHVpbnQzMl90IGZvdXJ0aEJpdHM+Citp
bmxpbmUgdm9pZCBJbml0aWFsaXplNENvbXBvbmVudERhdGEoc2l6ZV90IHdpZHRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOworCit2b2lk
IExvYWRSMzJUb1IyNEc4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAg
ICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0
Y2gsCisgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
b3V0cHV0RGVwdGhQaXRjaCk7CisKK3ZvaWQgTG9hZEVUQzFSR0I4VG9SR0JBOChzaXplX3Qgd2lk
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0
Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRj
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKKwordm9pZCBMb2FkRVRDMVJHQjhUb0JD
MShzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBp
bnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBp
dGNoLAorICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOworCit2b2lkIExvYWRFQUNSMTFUb1I4KHNpemVf
dCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90
ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAg
ICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJv
d1BpdGNoLAorICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7CisK
K3ZvaWQgTG9hZEVBQ1IxMVNUb1I4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlu
cHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKKwordm9pZCBMb2FkRUFDUkcxMVRvUkc4
KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRS
b3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAor
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IG91dHB1dERlcHRoUGl0Y2gpOworCit2b2lkIExvYWRFQUNSRzExU1RvUkc4KHNpemVfdCB3aWR0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50
OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gs
CisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0
cHV0RGVwdGhQaXRjaCk7CisKK3ZvaWQgTG9hZEVUQzJSR0I4VG9SR0JBOChzaXplX3Qgd2lkdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93
UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKKwordm9pZCBMb2FkRVRDMlNSR0I4VG9SR0JB
OChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpv
dXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOworCit2
b2lkIExvYWRFVEMyUkdCOEExVG9SR0JBOChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5w
dXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7CisKK3ZvaWQgTG9hZEVUQzJTUkdCOEExVG9SR0JB
OChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdo
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91
dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRE
ZXB0aFBpdGNoKTsKKwordm9pZCBMb2FkRVRDMlJHQkE4VG9SR0JBOChzaXplX3Qgd2lkdGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJv
d1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNo
LAorICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOworCit2b2lkIExvYWRFVEMyU1JHQkE4
VG9TUkdCQTgoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
b3V0cHV0RGVwdGhQaXRjaCk7CisKK30gIC8vIG5hbWVzcGFjZSBhbmdsZQorCisjaW5jbHVkZSAi
bG9hZGltYWdlLmlubCIKKworI2VuZGlmICAvLyBJTUFHRVVUSUxfTE9BRElNQUdFX0hfCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvaW1hZ2VfdXRpbC9sb2FkaW1hZ2UuaW5sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9pbWFnZV91dGlsL2xvYWRp
bWFnZS5pbmwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2lt
YWdlX3V0aWwvbG9hZGltYWdlLmlubAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2MyBAQAor
Ly8KKy8vIENvcHlyaWdodCAoYykgMjAxNC0yMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgImNvbW1vbi9tYXRodXRpbC5oIgorCisjaW5j
bHVkZSA8c3RyaW5nLmg+CisKK25hbWVzcGFjZSBhbmdsZQoreworCituYW1lc3BhY2UgcHJpdgor
eworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2lubGluZSBUICpPZmZzZXREYXRhUG9pbnRlcih1
aW50OF90ICpkYXRhLCBzaXplX3QgeSwgc2l6ZV90IHosIHNpemVfdCByb3dQaXRjaCwgc2l6ZV90
IGRlcHRoUGl0Y2gpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KGRhdGEgKyAo
eSAqIHJvd1BpdGNoKSArICh6ICogZGVwdGhQaXRjaCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK2lubGluZSBjb25zdCBUICpPZmZzZXREYXRhUG9pbnRlcihjb25zdCB1aW50OF90ICpk
YXRhLCBzaXplX3QgeSwgc2l6ZV90IHosIHNpemVfdCByb3dQaXRjaCwgc2l6ZV90IGRlcHRoUGl0
Y2gpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KGRhdGEgKyAoeSAq
IHJvd1BpdGNoKSArICh6ICogZGVwdGhQaXRjaCkpOworfQorCit9ICAvLyBuYW1lc3BhY2UgcHJp
dgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgdHlwZSwgc2l6ZV90IGNvbXBvbmVudENvdW50PgoraW5s
aW5lIHZvaWQgTG9hZFRvTmF0aXZlKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90
IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBz
aXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6
ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgY29uc3Qgc2l6ZV90IHJvd1NpemUgPSB3aWR0
aCAqIHNpemVvZih0eXBlKSAqIGNvbXBvbmVudENvdW50OworICAgIGNvbnN0IHNpemVfdCBsYXll
clNpemUgPSByb3dTaXplICogaGVpZ2h0OworICAgIGNvbnN0IHNpemVfdCBpbWFnZVNpemUgPSBs
YXllclNpemUgKiBkZXB0aDsKKworICAgIGlmIChsYXllclNpemUgPT0gaW5wdXREZXB0aFBpdGNo
ICYmIGxheWVyU2l6ZSA9PSBvdXRwdXREZXB0aFBpdGNoKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KHJvd1NpemUgPT0gaW5wdXRSb3dQaXRjaCAmJiByb3dTaXplID09IG91dHB1dFJvd1BpdGNoKTsK
KyAgICAgICAgbWVtY3B5KG91dHB1dCwgaW5wdXQsIGltYWdlU2l6ZSk7CisgICAgfQorICAgIGVs
c2UgaWYgKHJvd1NpemUgPT0gaW5wdXRSb3dQaXRjaCAmJiByb3dTaXplID09IG91dHB1dFJvd1Bp
dGNoKQorICAgIHsKKyAgICAgICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQor
ICAgICAgICB7CisgICAgICAgICAgICBjb25zdCB0eXBlICpzb3VyY2UgPSBwcml2OjpPZmZzZXRE
YXRhUG9pbnRlcjx0eXBlPihpbnB1dCwgMCwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBp
dGNoKTsKKyAgICAgICAgICAgIHR5cGUgKmRlc3QgPSBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx0
eXBlPihvdXRwdXQsIDAsIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKKwor
ICAgICAgICAgICAgbWVtY3B5KGRlc3QsIHNvdXJjZSwgbGF5ZXJTaXplKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRl
cHRoOyB6KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwg
aGVpZ2h0OyB5KyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc3QgdHlwZSAq
c291cmNlID0gcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dHlwZT4oaW5wdXQsIHksIHosIGlucHV0
Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICAgICAgdHlwZSAqZGVzdCA9
IHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHR5cGU+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0
Y2gsIG91dHB1dERlcHRoUGl0Y2gpOworICAgICAgICAgICAgICAgIG1lbWNweShkZXN0LCBzb3Vy
Y2UsIHdpZHRoICogc2l6ZW9mKHR5cGUpICogY29tcG9uZW50Q291bnQpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgdHlwZSwgdWludDMy
X3QgZm91cnRoQ29tcG9uZW50Qml0cz4KK2lubGluZSB2b2lkIExvYWRUb05hdGl2ZTNUbzQoc2l6
ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwg
c2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBp
dGNoKQoreworICAgIGNvbnN0IHR5cGUgZm91cnRoVmFsdWUgPSBnbDo6Yml0Q2FzdDx0eXBlPihm
b3VydGhDb21wb25lbnRCaXRzKTsKKworICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7
IHorKykKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5Kysp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IHR5cGUgKnNvdXJjZSA9IHByaXY6Ok9mZnNl
dERhdGFQb2ludGVyPHR5cGU+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRo
UGl0Y2gpOworICAgICAgICAgICAgdHlwZSAqZGVzdCA9IHByaXY6Ok9mZnNldERhdGFQb2ludGVy
PHR5cGU+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOwor
ICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGRlc3RbeCAqIDQgKyAwXSA9IHNvdXJjZVt4ICogMyArIDBd
OworICAgICAgICAgICAgICAgIGRlc3RbeCAqIDQgKyAxXSA9IHNvdXJjZVt4ICogMyArIDFdOwor
ICAgICAgICAgICAgICAgIGRlc3RbeCAqIDQgKyAyXSA9IHNvdXJjZVt4ICogMyArIDJdOworICAg
ICAgICAgICAgICAgIGRlc3RbeCAqIDQgKyAzXSA9IGZvdXJ0aFZhbHVlOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorfQorCit0ZW1wbGF0ZSA8c2l6ZV90IGNvbXBvbmVudENvdW50
PgoraW5saW5lIHZvaWQgTG9hZDMyRlRvMTZGKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwg
c2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlu
cHV0LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRj
aCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgY29uc3Qgc2l6ZV90IGVsZW1lbnRX
aWR0aCA9IGNvbXBvbmVudENvdW50ICogd2lkdGg7CisKKyAgICBmb3IgKHNpemVfdCB6ID0gMDsg
eiA8IGRlcHRoOyB6KyspCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhl
aWdodDsgeSsrKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBmbG9hdCAqc291cmNlID0g
cHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8ZmxvYXQ+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNo
LCBpbnB1dERlcHRoUGl0Y2gpOworICAgICAgICAgICAgdWludDE2X3QgKmRlc3QgPSBwcml2OjpP
ZmZzZXREYXRhUG9pbnRlcjx1aW50MTZfdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwg
b3V0cHV0RGVwdGhQaXRjaCk7CisKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwg
ZWxlbWVudFdpZHRoOyB4KyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGVzdFt4
XSA9IGdsOjpmbG9hdDMyVG9GbG9hdDE2KHNvdXJjZVt4XSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK3RlbXBsYXRlIDxzaXplX3QgYmxvY2tXaWR0aCwgc2l6ZV90IGJs
b2NrSGVpZ2h0LCBzaXplX3QgYmxvY2tTaXplPgoraW5saW5lIHZvaWQgTG9hZENvbXByZXNzZWRU
b05hdGl2ZShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVf
dCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRj
aCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgY29uc3Qgc2l6ZV90IGNvbHVtbnMg
PSAod2lkdGggKyAoYmxvY2tXaWR0aCAtIDEpKSAvIGJsb2NrV2lkdGg7CisgICAgY29uc3Qgc2l6
ZV90IHJvd3MgPSAoaGVpZ2h0ICsgKGJsb2NrSGVpZ2h0IC0gMSkpIC8gYmxvY2tIZWlnaHQ7CisK
KyAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyArK3opCisgICAgeworICAgICAgICBm
b3IgKHNpemVfdCB5ID0gMDsgeSA8IHJvd3M7ICsreSkKKyAgICAgICAgeworICAgICAgICAgICAg
Y29uc3QgdWludDhfdCAqc291cmNlID0gcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dWludDhfdD4o
aW5wdXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAg
ICB1aW50OF90ICpkZXN0ID0gcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dWludDhfdD4ob3V0cHV0
LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICBt
ZW1jcHkoZGVzdCwgc291cmNlLCBjb2x1bW5zICogYmxvY2tTaXplKTsKKyAgICAgICAgfQorICAg
IH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIHR5cGUsIHVpbnQzMl90IGZpcnN0Qml0cywgdWlu
dDMyX3Qgc2Vjb25kQml0cywgdWludDMyX3QgdGhpcmRCaXRzLCB1aW50MzJfdCBmb3VydGhCaXRz
PgoraW5saW5lIHZvaWQgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhKHNpemVfdCB3aWR0aCwgc2l6
ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0
cHV0RGVwdGhQaXRjaCkKK3sKKyAgICB0eXBlIHdyaXRlVmFsdWVzWzRdID0KKyAgICB7CisgICAg
ICAgIGdsOjpiaXRDYXN0PHR5cGU+KGZpcnN0Qml0cyksCisgICAgICAgIGdsOjpiaXRDYXN0PHR5
cGU+KHNlY29uZEJpdHMpLAorICAgICAgICBnbDo6Yml0Q2FzdDx0eXBlPih0aGlyZEJpdHMpLAor
ICAgICAgICBnbDo6Yml0Q2FzdDx0eXBlPihmb3VydGhCaXRzKSwKKyAgICB9OworCisgICAgZm9y
IChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQorICAgIHsKKyAgICAgICAgZm9yIChzaXpl
X3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAgeworICAgICAgICAgICAgdHlwZSAq
ZGVzdFJvdyA9IHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHR5cGU+KG91dHB1dCwgeSwgeiwgb3V0
cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOworICAgICAgICAgICAgZm9yIChzaXplX3Qg
eCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHR5
cGUqIGRlc3RQaXhlbCA9IGRlc3RSb3cgKyB4ICogNDsKKworICAgICAgICAgICAgICAgIC8vIFRo
aXMgY291bGQgcG90ZW50aWFsbHkgYmUgb3B0aW1pemVkIGJ5IGdlbmVyYXRpbmcgYW4gZW50aXJl
IHJvdyBvZiBpbml0aWFsaXphdGlvbgorICAgICAgICAgICAgICAgIC8vIGRhdGEgYW5kIGNvcHlp
bmcgcm93IGJ5IHJvdyBpbnN0ZWFkIG9mIHBpeGVsIGJ5IHBpeGVsLgorICAgICAgICAgICAgICAg
IG1lbWNweShkZXN0UGl4ZWwsIHdyaXRlVmFsdWVzLCBzaXplb2YodHlwZSkgKiA0KTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgYW5nbGUKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9pbWFnZV91dGlsL2xvYWRpbWFnZV9ldGMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9pbWFnZV91dGls
L2xvYWRpbWFnZV9ldGMuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9pbWFnZV91dGlsL2xvYWRpbWFnZV9ldGMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTU3MiBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMy0yMDE1IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gbG9hZGltYWdlX2V0Yy5jcHA6
IERlY29kZXMgRVRDIGFuZCBFQUMgZW5jb2RlZCB0ZXh0dXJlcy4KKworI2luY2x1ZGUgImltYWdl
X3V0aWwvbG9hZGltYWdlLmgiCisKKyNpbmNsdWRlICJjb21tb24vbWF0aHV0aWwuaCIKKworI2lu
Y2x1ZGUgImltYWdlX3V0aWwvaW1hZ2Vmb3JtYXRzLmgiCisKK25hbWVzcGFjZSBhbmdsZQorewor
bmFtZXNwYWNlCit7CisvLyBUYWJsZSAzLjE3LjIgc29ydGVkIGFjY29yZGluZyB0byB0YWJsZSAz
LjE3LjMKKy8vIGNsYW5nLWZvcm1hdCBvZmYKK3N0YXRpYyBjb25zdCBpbnQgaW50ZW5zaXR5TW9k
aWZpZXJEZWZhdWx0W11bNF0gPQoreworICAgIHsgIDIsICAgOCwgIC0yLCAgIC04IH0sCisgICAg
eyAgNSwgIDE3LCAgLTUsICAtMTcgfSwKKyAgICB7ICA5LCAgMjksICAtOSwgIC0yOSB9LAorICAg
IHsgMTMsICA0MiwgLTEzLCAgLTQyIH0sCisgICAgeyAxOCwgIDYwLCAtMTgsICAtNjAgfSwKKyAg
ICB7IDI0LCAgODAsIC0yNCwgIC04MCB9LAorICAgIHsgMzMsIDEwNiwgLTMzLCAtMTA2IH0sCisg
ICAgeyA0NywgMTgzLCAtNDcsIC0xODMgfSwKK307CisvLyBjbGFuZy1mb3JtYXQgb24KKworLy8g
VGFibGUgQy4xMiwgaW50ZW5zaXR5IG1vZGlmaWVyIGZvciBub24gb3BhcXVlIHB1bmNodGhyb3Vn
aCBhbHBoYQorLy8gY2xhbmctZm9ybWF0IG9mZgorc3RhdGljIGNvbnN0IGludCBpbnRlbnNpdHlN
b2RpZmllck5vbk9wYXF1ZVtdWzRdID0KK3sKKyAgICB7IDAsICAgOCwgMCwgICAtOCB9LAorICAg
IHsgMCwgIDE3LCAwLCAgLTE3IH0sCisgICAgeyAwLCAgMjksIDAsICAtMjkgfSwKKyAgICB7IDAs
ICA0MiwgMCwgIC00MiB9LAorICAgIHsgMCwgIDYwLCAwLCAgLTYwIH0sCisgICAgeyAwLCAgODAs
IDAsICAtODAgfSwKKyAgICB7IDAsIDEwNiwgMCwgLTEwNiB9LAorICAgIHsgMCwgMTgzLCAwLCAt
MTgzIH0sCit9OworLy8gY2xhbmctZm9ybWF0IG9uCisKK3N0YXRpYyBjb25zdCBpbnQga051bVBp
eGVsc0luQmxvY2sgPSAxNjsKKworc3RydWN0IEVUQzJCbG9jaworeworICAgIC8vIERlY29kZXMg
dW5zaWduZWQgc2luZ2xlIG9yIGR1YWwgY2hhbm5lbCBibG9jayB0byBieXRlcworICAgIHZvaWQg
ZGVjb2RlQXNTaW5nbGVDaGFubmVsKHVpbnQ4X3QgKmRlc3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGRlc3RQaXhlbFN0cmlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgZGVzdFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgaXNTaWduZWQpIGNvbnN0CisgICAgeworICAgICAgICBmb3IgKHNpemVfdCBqID0g
MDsgaiA8IDQgJiYgKHkgKyBqKSA8IGg7IGorKykKKyAgICAgICAgeworICAgICAgICAgICAgdWlu
dDhfdCAqcm93ID0gZGVzdCArIChqICogZGVzdFJvd1BpdGNoKTsKKyAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgNCAmJiAoeCArIGkpIDwgdzsgaSsrKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnBpeGVsID0gcm93ICsgKGkgKiBkZXN0UGl4ZWxTdHJp
ZGUpOworICAgICAgICAgICAgICAgIGlmIChpc1NpZ25lZCkKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICpwaXhlbCA9IGNsYW1wU0J5dGUoZ2V0U2luZ2xlQ2hhbm5lbChp
LCBqLCBpc1NpZ25lZCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAqcGl4ZWwgPSBjbGFtcEJ5
dGUoZ2V0U2luZ2xlQ2hhbm5lbChpLCBqLCBpc1NpZ25lZCkpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIERlY29kZXMgUkdCIGJs
b2NrIHRvIHJnYmE4CisgICAgdm9pZCBkZWNvZGVBc1JHQih1aW50OF90ICpkZXN0LAorICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IHgsCisgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeSwK
KyAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB3LAorICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGgsCisgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVzdFJvd1BpdGNoLAorICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCBhbHBoYVZhbHVlc1s0XVs0XSwKKyAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgcHVuY2hUaHJvdWdoQWxwaGEpIGNvbnN0CisgICAgeworICAgICAg
ICBib29sIG9wYXF1ZUJpdCAgICAgICAgICAgICAgICAgID0gdS5pZGh0Lm1vZGUuaWRtLmRpZmZi
aXQ7CisgICAgICAgIGJvb2wgbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEgPSBwdW5jaFRocm91
Z2hBbHBoYSAmJiAhb3BhcXVlQml0OworICAgICAgICAvLyBTZWxlY3QgbW9kZQorICAgICAgICBp
ZiAodS5pZGh0Lm1vZGUuaWRtLmRpZmZiaXQgfHwgcHVuY2hUaHJvdWdoQWxwaGEpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8gJmJsb2NrID0gdS5pZGh0Lm1vZGUuaWRtLmNvbG9y
cy5kaWZmOworICAgICAgICAgICAgaW50IHIgICAgICAgICAgICAgPSAoYmxvY2suUiArIGJsb2Nr
LmRSKTsKKyAgICAgICAgICAgIGludCBnICAgICAgICAgICAgID0gKGJsb2NrLkcgKyBibG9jay5k
Ryk7CisgICAgICAgICAgICBpbnQgYiAgICAgICAgICAgICA9IChibG9jay5CICsgYmxvY2suZEIp
OworICAgICAgICAgICAgaWYgKHIgPCAwIHx8IHIgPiAzMSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBkZWNvZGVUQmxvY2soZGVzdCwgeCwgeSwgdywgaCwgZGVzdFJvd1BpdGNoLCBh
bHBoYVZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uT3BhcXVlUHVuY2hU
aHJvdWdoQWxwaGEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoZyA8IDAg
fHwgZyA+IDMxKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlY29kZUhCbG9jayhk
ZXN0LCB4LCB5LCB3LCBoLCBkZXN0Um93UGl0Y2gsIGFscGhhVmFsdWVzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBlbHNlIGlmIChiIDwgMCB8fCBiID4gMzEpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgZGVjb2RlUGxhbmFyQmxvY2soZGVzdCwgeCwgeSwgdywgaCwgZGVz
dFJvd1BpdGNoLCBhbHBoYVZhbHVlcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGVjb2RlRGlmZmVyZW50aWFsQmxvY2so
ZGVzdCwgeCwgeSwgdywgaCwgZGVzdFJvd1BpdGNoLCBhbHBoYVZhbHVlcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWNvZGVJbmRpdmlkdWFsQmxvY2soZGVzdCwgeCwgeSwgdywgaCwgZGVzdFJvd1Bp
dGNoLCBhbHBoYVZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25P
cGFxdWVQdW5jaFRocm91Z2hBbHBoYSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBUcmFu
c2NvZGVzIFJHQiBibG9jayB0byBCQzEKKyAgICB2b2lkIHRyYW5zY29kZUFzQkMxKHVpbnQ4X3Qg
KmRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHcsCisg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHVpbnQ4X3QgYWxwaGFWYWx1ZXNbNF1bNF0sCisgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIHB1bmNoVGhyb3VnaEFscGhhKSBjb25zdAorICAgIHsKKyAgICAgICAgYm9vbCBvcGFx
dWVCaXQgICAgICAgICAgICAgICAgICA9IHUuaWRodC5tb2RlLmlkbS5kaWZmYml0OworICAgICAg
ICBib29sIG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhhID0gcHVuY2hUaHJvdWdoQWxwaGEgJiYg
IW9wYXF1ZUJpdDsKKyAgICAgICAgLy8gU2VsZWN0IG1vZGUKKyAgICAgICAgaWYgKHUuaWRodC5t
b2RlLmlkbS5kaWZmYml0IHx8IHB1bmNoVGhyb3VnaEFscGhhKQorICAgICAgICB7CisgICAgICAg
ICAgICBjb25zdCBhdXRvICZibG9jayA9IHUuaWRodC5tb2RlLmlkbS5jb2xvcnMuZGlmZjsKKyAg
ICAgICAgICAgIGludCByICAgICAgICAgICAgID0gKGJsb2NrLlIgKyBibG9jay5kUik7CisgICAg
ICAgICAgICBpbnQgZyAgICAgICAgICAgICA9IChibG9jay5HICsgYmxvY2suZEcpOworICAgICAg
ICAgICAgaW50IGIgICAgICAgICAgICAgPSAoYmxvY2suQiArIGJsb2NrLmRCKTsKKyAgICAgICAg
ICAgIGlmIChyIDwgMCB8fCByID4gMzEpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
dHJhbnNjb2RlVEJsb2NrVG9CQzEoZGVzdCwgeCwgeSwgdywgaCwgYWxwaGFWYWx1ZXMsIG5vbk9w
YXF1ZVB1bmNoVGhyb3VnaEFscGhhKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2Ug
aWYgKGcgPCAwIHx8IGcgPiAzMSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0cmFu
c2NvZGVIQmxvY2tUb0JDMShkZXN0LCB4LCB5LCB3LCBoLCBhbHBoYVZhbHVlcywgbm9uT3BhcXVl
UHVuY2hUaHJvdWdoQWxwaGEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAo
YiA8IDAgfHwgYiA+IDMxKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRyYW5zY29k
ZVBsYW5hckJsb2NrVG9CQzEoZGVzdCwgeCwgeSwgdywgaCwgYWxwaGFWYWx1ZXMpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHRyYW5zY29kZURpZmZlcmVudGlhbEJsb2NrVG9CQzEoZGVzdCwgeCwgeSwgdywgaCwgYWxwaGFW
YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
b25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICB0cmFuc2NvZGVJbmRpdmlkdWFsQmxv
Y2tUb0JDMShkZXN0LCB4LCB5LCB3LCBoLCBhbHBoYVZhbHVlcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhhKTsKKyAg
ICAgICAgfQorICAgIH0KKworICBwcml2YXRlOgorICAgIHVuaW9uIHsKKyAgICAgICAgLy8gSW5k
aXZpZHVhbCwgZGlmZmVyZW50aWFsLCBIIGFuZCBUIG1vZGVzCisgICAgICAgIHN0cnVjdAorICAg
ICAgICB7CisgICAgICAgICAgICB1bmlvbiB7CisgICAgICAgICAgICAgICAgLy8gSW5kaXZpZHVh
bCBhbmQgZGlmZmVyZW50aWFsIG1vZGVzCisgICAgICAgICAgICAgICAgc3RydWN0CisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1bmlvbiB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3QgIC8vIEluZGl2aWR1YWwgY29sb3JzCisgICAgICAgICAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBSMiA6IDQ7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBSMSA6IDQ7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBHMiA6IDQ7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBHMSA6IDQ7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciBCMiA6IDQ7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgY2hhciBCMSA6IDQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGlu
ZGl2OworICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0ICAvLyBEaWZmZXJlbnRpYWwgY29s
b3JzCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2lnbmVkIGNoYXIgZFIgOiAzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGNoYXIgUiA6IDU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmVkIGNoYXIg
ZEcgOiAzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgRyA6IDU7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmVkIGNoYXIgZEIgOiAzOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgQiA6IDU7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9IGRpZmY7CisgICAgICAgICAgICAgICAgICAgIH0gY29sb3JzOworICAgICAg
ICAgICAgICAgICAgICBib29sIGZsaXBiaXQgOiAxOworICAgICAgICAgICAgICAgICAgICBib29s
IGRpZmZiaXQgOiAxOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGN3MiA6IDM7
CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY3cxIDogMzsKKyAgICAgICAgICAg
ICAgICB9IGlkbTsKKyAgICAgICAgICAgICAgICAvLyBUIG1vZGUKKyAgICAgICAgICAgICAgICBz
dHJ1Y3QKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIEJ5dGUgMQor
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIFRSMWIgOiAyOworICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBjaGFyIFRkdW1teUIgOiAxOworICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBjaGFyIFRSMWEgOiAyOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFy
IFRkdW1teUEgOiAzOworICAgICAgICAgICAgICAgICAgICAvLyBCeXRlIDIKKyAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgY2hhciBUQjEgOiA0OworICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBjaGFyIFRHMSA6IDQ7CisgICAgICAgICAgICAgICAgICAgIC8vIEJ5dGUgMworICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIFRHMiA6IDQ7CisgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGNoYXIgVFIyIDogNDsKKyAgICAgICAgICAgICAgICAgICAgLy8gQnl0ZSA0Cisg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgVGRiIDogMTsKKyAgICAgICAgICAgICAg
ICAgICAgYm9vbCBUZmxpcGJpdCA6IDE7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNo
YXIgVGRhIDogMjsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBUQjIgOiA0Owor
ICAgICAgICAgICAgICAgIH0gdG07CisgICAgICAgICAgICAgICAgLy8gSCBtb2RlCisgICAgICAg
ICAgICAgICAgc3RydWN0CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAv
LyBCeXRlIDEKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBIRzFhIDogMzsKKyAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBIUjEgOiA0OworICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBjaGFyIEhkdW1teUEgOiAxOworICAgICAgICAgICAgICAgICAgICAvLyBC
eXRlIDIKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBIQjFiIDogMjsKKyAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBIZHVtbXlDIDogMTsKKyAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgY2hhciBIQjFhIDogMTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgY2hhciBIRzFiIDogMTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBIZHVt
bXlCIDogMzsKKyAgICAgICAgICAgICAgICAgICAgLy8gQnl0ZSAzCisgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGNoYXIgSEcyYSA6IDM7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGNoYXIgSFIyIDogNDsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBIQjFjIDog
MTsKKyAgICAgICAgICAgICAgICAgICAgLy8gQnl0ZSA0CisgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGNoYXIgSGRiIDogMTsKKyAgICAgICAgICAgICAgICAgICAgYm9vbCBIZmxpcGJpdCA6
IDE7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgSGRhIDogMTsKKyAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciBIQjIgOiA0OworICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBjaGFyIEhHMmIgOiAxOworICAgICAgICAgICAgICAgIH0gaG07CisgICAgICAgICAg
ICB9IG1vZGU7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHBpeGVsSW5kZXhNU0JbMl07Cisg
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHBpeGVsSW5kZXhMU0JbMl07CisgICAgICAgIH0gaWRo
dDsKKyAgICAgICAgLy8gcGxhbmFyIG1vZGUKKyAgICAgICAgc3RydWN0CisgICAgICAgIHsKKyAg
ICAgICAgICAgIC8vIEJ5dGUgMQorICAgICAgICAgICAgdW5zaWduZWQgY2hhciBHTzEgOiAxOwor
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciBSTyA6IDY7CisgICAgICAgICAgICB1bnNpZ25lZCBj
aGFyIFBkdW1teUEgOiAxOworICAgICAgICAgICAgLy8gQnl0ZSAyCisgICAgICAgICAgICB1bnNp
Z25lZCBjaGFyIEJPMSA6IDE7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEdPMiA6IDY7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyIFBkdW1teUIgOiAxOworICAgICAgICAgICAgLy8gQnl0
ZSAzCisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEJPM2EgOiAyOworICAgICAgICAgICAgdW5z
aWduZWQgY2hhciBQZHVtbXlEIDogMTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgQk8yIDog
MjsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgUGR1bW15QyA6IDM7CisgICAgICAgICAgICAv
LyBCeXRlIDQKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgUkgyIDogMTsKKyAgICAgICAgICAg
IGJvb2wgUGZsaXBiaXQgOiAxOworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBSSDEgOiA1Owor
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciBCTzNiIDogMTsKKyAgICAgICAgICAgIC8vIEJ5dGUg
NQorICAgICAgICAgICAgdW5zaWduZWQgY2hhciBCSGEgOiAxOworICAgICAgICAgICAgdW5zaWdu
ZWQgY2hhciBHSCA6IDc7CisgICAgICAgICAgICAvLyBCeXRlIDYKKyAgICAgICAgICAgIHVuc2ln
bmVkIGNoYXIgUlZhIDogMzsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgQkhiIDogNTsKKyAg
ICAgICAgICAgIC8vIEJ5dGUgNworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBHVmEgOiA1Owor
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciBSVmIgOiAzOworICAgICAgICAgICAgLy8gQnl0ZSA4
CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEJWIDogNjsKKyAgICAgICAgICAgIHVuc2lnbmVk
IGNoYXIgR1ZiIDogMjsKKyAgICAgICAgfSBwYmxrOworICAgICAgICAvLyBTaW5nbGUgY2hhbm5l
bCBibG9jaworICAgICAgICBzdHJ1Y3QKKyAgICAgICAgeworICAgICAgICAgICAgdW5pb24gewor
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgdXM7CisgICAgICAgICAgICAgICAgc2lnbmVk
IGNoYXIgczsKKyAgICAgICAgICAgIH0gYmFzZV9jb2Rld29yZDsKKyAgICAgICAgICAgIHVuc2ln
bmVkIGNoYXIgdGFibGVfaW5kZXggOiA0OworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBtdWx0
aXBsaWVyIDogNDsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbWMxIDogMjsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIGNoYXIgbWIgOiAzOworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBtYSA6
IDM7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG1mMSA6IDE7CisgICAgICAgICAgICB1bnNp
Z25lZCBjaGFyIG1lIDogMzsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbWQgOiAzOworICAg
ICAgICAgICAgdW5zaWduZWQgY2hhciBtYzIgOiAxOworICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciBtaCA6IDM7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG1nIDogMzsKKyAgICAgICAgICAg
IHVuc2lnbmVkIGNoYXIgbWYyIDogMjsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbWsxIDog
MjsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbWogOiAzOworICAgICAgICAgICAgdW5zaWdu
ZWQgY2hhciBtaSA6IDM7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG1uMSA6IDE7CisgICAg
ICAgICAgICB1bnNpZ25lZCBjaGFyIG1tIDogMzsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIg
bWwgOiAzOworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBtazIgOiAxOworICAgICAgICAgICAg
dW5zaWduZWQgY2hhciBtcCA6IDM7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG1vIDogMzsK
KyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbW4yIDogMjsKKyAgICAgICAgfSBzY2JsazsKKyAg
ICB9IHU7CisKKyAgICBzdGF0aWMgdW5zaWduZWQgY2hhciBjbGFtcEJ5dGUoaW50IHZhbHVlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGdsOjpjbGFt
cCh2YWx1ZSwgMCwgMjU1KSk7CisgICAgfQorCisgICAgc3RhdGljIHNpZ25lZCBjaGFyIGNsYW1w
U0J5dGUoaW50IHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpZ25l
ZCBjaGFyPihnbDo6Y2xhbXAodmFsdWUsIC0xMjgsIDEyNykpOworICAgIH0KKworICAgIHN0YXRp
YyBSOEc4QjhBOCBjcmVhdGVSR0JBKGludCByZWQsIGludCBncmVlbiwgaW50IGJsdWUsIGludCBh
bHBoYSkKKyAgICB7CisgICAgICAgIFI4RzhCOEE4IHJnYmE7CisgICAgICAgIHJnYmEuUiA9IGNs
YW1wQnl0ZShyZWQpOworICAgICAgICByZ2JhLkcgPSBjbGFtcEJ5dGUoZ3JlZW4pOworICAgICAg
ICByZ2JhLkIgPSBjbGFtcEJ5dGUoYmx1ZSk7CisgICAgICAgIHJnYmEuQSA9IGNsYW1wQnl0ZShh
bHBoYSk7CisgICAgICAgIHJldHVybiByZ2JhOworICAgIH0KKworICAgIHN0YXRpYyBSOEc4QjhB
OCBjcmVhdGVSR0JBKGludCByZWQsIGludCBncmVlbiwgaW50IGJsdWUpCisgICAgeworICAgICAg
ICByZXR1cm4gY3JlYXRlUkdCQShyZWQsIGdyZWVuLCBibHVlLCAyNTUpOworICAgIH0KKworICAg
IHN0YXRpYyBpbnQgZXh0ZW5kXzR0bzhiaXRzKGludCB4KSB7IHJldHVybiAoeCA8PCA0KSB8IHg7
IH0KKyAgICBzdGF0aWMgaW50IGV4dGVuZF81dG84Yml0cyhpbnQgeCkgeyByZXR1cm4gKHggPDwg
MykgfCAoeCA+PiAyKTsgfQorICAgIHN0YXRpYyBpbnQgZXh0ZW5kXzZ0bzhiaXRzKGludCB4KSB7
IHJldHVybiAoeCA8PCAyKSB8ICh4ID4+IDQpOyB9CisgICAgc3RhdGljIGludCBleHRlbmRfN3Rv
OGJpdHMoaW50IHgpIHsgcmV0dXJuICh4IDw8IDEpIHwgKHggPj4gNik7IH0KKworICAgIHZvaWQg
ZGVjb2RlSW5kaXZpZHVhbEJsb2NrKHVpbnQ4X3QgKmRlc3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGRlc3RSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB1aW50OF90IGFscGhhVmFsdWVzWzRdWzRdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpIGNvbnN0CisgICAg
eworICAgICAgICBjb25zdCBhdXRvICZibG9jayA9IHUuaWRodC5tb2RlLmlkbS5jb2xvcnMuaW5k
aXY7CisgICAgICAgIGludCByMSAgICAgICAgICAgID0gZXh0ZW5kXzR0bzhiaXRzKGJsb2NrLlIx
KTsKKyAgICAgICAgaW50IGcxICAgICAgICAgICAgPSBleHRlbmRfNHRvOGJpdHMoYmxvY2suRzEp
OworICAgICAgICBpbnQgYjEgICAgICAgICAgICA9IGV4dGVuZF80dG84Yml0cyhibG9jay5CMSk7
CisgICAgICAgIGludCByMiAgICAgICAgICAgID0gZXh0ZW5kXzR0bzhiaXRzKGJsb2NrLlIyKTsK
KyAgICAgICAgaW50IGcyICAgICAgICAgICAgPSBleHRlbmRfNHRvOGJpdHMoYmxvY2suRzIpOwor
ICAgICAgICBpbnQgYjIgICAgICAgICAgICA9IGV4dGVuZF80dG84Yml0cyhibG9jay5CMik7Cisg
ICAgICAgIGRlY29kZUluZGl2aWR1YWxPckRpZmZlcmVudGlhbEJsb2NrKGRlc3QsIHgsIHksIHcs
IGgsIGRlc3RSb3dQaXRjaCwgcjEsIGcxLCBiMSwgcjIsIGcyLCBiMiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFWYWx1ZXMsIG5vbk9wYXF1ZVB1bmNo
VGhyb3VnaEFscGhhKTsKKyAgICB9CisKKyAgICB2b2lkIGRlY29kZURpZmZlcmVudGlhbEJsb2Nr
KHVpbnQ4X3QgKmRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB5LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBkZXN0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB1aW50OF90IGFscGhhVmFsdWVzWzRdWzRdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSkgY29uc3QKKyAgICB7CisgICAg
ICAgIGNvbnN0IGF1dG8gJmJsb2NrID0gdS5pZGh0Lm1vZGUuaWRtLmNvbG9ycy5kaWZmOworICAg
ICAgICBpbnQgYjEgICAgICAgICAgICA9IGV4dGVuZF81dG84Yml0cyhibG9jay5CKTsKKyAgICAg
ICAgaW50IGcxICAgICAgICAgICAgPSBleHRlbmRfNXRvOGJpdHMoYmxvY2suRyk7CisgICAgICAg
IGludCByMSAgICAgICAgICAgID0gZXh0ZW5kXzV0bzhiaXRzKGJsb2NrLlIpOworICAgICAgICBp
bnQgcjIgICAgICAgICAgICA9IGV4dGVuZF81dG84Yml0cyhibG9jay5SICsgYmxvY2suZFIpOwor
ICAgICAgICBpbnQgZzIgICAgICAgICAgICA9IGV4dGVuZF81dG84Yml0cyhibG9jay5HICsgYmxv
Y2suZEcpOworICAgICAgICBpbnQgYjIgICAgICAgICAgICA9IGV4dGVuZF81dG84Yml0cyhibG9j
ay5CICsgYmxvY2suZEIpOworICAgICAgICBkZWNvZGVJbmRpdmlkdWFsT3JEaWZmZXJlbnRpYWxC
bG9jayhkZXN0LCB4LCB5LCB3LCBoLCBkZXN0Um93UGl0Y2gsIHIxLCBnMSwgYjEsIHIyLCBnMiwg
YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhVmFs
dWVzLCBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSk7CisgICAgfQorCisgICAgdm9pZCBkZWNv
ZGVJbmRpdmlkdWFsT3JEaWZmZXJlbnRpYWxCbG9jayh1aW50OF90ICpkZXN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB3LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVzdFJvd1BpdGNoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHIxLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGcxLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGIxLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHIyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGcyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGIyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCBhbHBoYVZhbHVlc1s0XVs0XSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbm9uT3Bh
cXVlUHVuY2hUaHJvdWdoQWxwaGEpIGNvbnN0CisgICAgeworICAgICAgICBjb25zdCBhdXRvIGlu
dGVuc2l0eU1vZGlmaWVyID0KKyAgICAgICAgICAgIG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhh
ID8gaW50ZW5zaXR5TW9kaWZpZXJOb25PcGFxdWUgOiBpbnRlbnNpdHlNb2RpZmllckRlZmF1bHQ7
CisKKyAgICAgICAgUjhHOEI4QTggc3ViYmxvY2tDb2xvcnMwWzRdOworICAgICAgICBSOEc4QjhB
OCBzdWJibG9ja0NvbG9yczFbNF07CisgICAgICAgIGZvciAoc2l6ZV90IG1vZGlmaWVySWR4ID0g
MDsgbW9kaWZpZXJJZHggPCA0OyBtb2RpZmllcklkeCsrKQorICAgICAgICB7CisgICAgICAgICAg
ICBjb25zdCBpbnQgaTEgICAgICAgICAgICAgICAgID0gaW50ZW5zaXR5TW9kaWZpZXJbdS5pZGh0
Lm1vZGUuaWRtLmN3MV1bbW9kaWZpZXJJZHhdOworICAgICAgICAgICAgc3ViYmxvY2tDb2xvcnMw
W21vZGlmaWVySWR4XSA9IGNyZWF0ZVJHQkEocjEgKyBpMSwgZzEgKyBpMSwgYjEgKyBpMSk7CisK
KyAgICAgICAgICAgIGNvbnN0IGludCBpMiAgICAgICAgICAgICAgICAgPSBpbnRlbnNpdHlNb2Rp
Zmllclt1LmlkaHQubW9kZS5pZG0uY3cyXVttb2RpZmllcklkeF07CisgICAgICAgICAgICBzdWJi
bG9ja0NvbG9yczFbbW9kaWZpZXJJZHhdID0gY3JlYXRlUkdCQShyMiArIGkyLCBnMiArIGkyLCBi
MiArIGkyKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh1LmlkaHQubW9kZS5pZG0uZmxpcGJp
dCkKKyAgICAgICAgeworICAgICAgICAgICAgdWludDhfdCAqY3VyUGl4ZWwgPSBkZXN0OworICAg
ICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCAyICYmICh5ICsgaikgPCBoOyBqKyspCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgUjhHOEI4QTggKnJvdyA9IHJlaW50ZXJwcmV0
X2Nhc3Q8UjhHOEI4QTggKj4oY3VyUGl4ZWwpOworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgNCAmJiAoeCArIGkpIDwgdzsgaSsrKQorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgcm93W2ldICAgPSBzdWJibG9ja0NvbG9yczBbZ2V0SW5kZXgoaSwg
aildOworICAgICAgICAgICAgICAgICAgICByb3dbaV0uQSA9IGFscGhhVmFsdWVzW2pdW2ldOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjdXJQaXhlbCArPSBkZXN0Um93UGl0
Y2g7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMjsgaiA8IDQg
JiYgKHkgKyBqKSA8IGg7IGorKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBSOEc4
QjhBOCAqcm93ID0gcmVpbnRlcnByZXRfY2FzdDxSOEc4QjhBOCAqPihjdXJQaXhlbCk7CisgICAg
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA0ICYmICh4ICsgaSkgPCB3OyBpKysp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByb3dbaV0gICA9IHN1YmJs
b2NrQ29sb3JzMVtnZXRJbmRleChpLCBqKV07CisgICAgICAgICAgICAgICAgICAgIHJvd1tpXS5B
ID0gYWxwaGFWYWx1ZXNbal1baV07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGN1clBpeGVsICs9IGRlc3RSb3dQaXRjaDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHVpbnQ4X3QgKmN1clBpeGVsID0gZGVz
dDsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgNCAmJiAoeSArIGopIDwgaDsg
aisrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFI4RzhCOEE4ICpyb3cgPSByZWlu
dGVycHJldF9jYXN0PFI4RzhCOEE4ICo+KGN1clBpeGVsKTsKKyAgICAgICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IDIgJiYgKHggKyBpKSA8IHc7IGkrKykKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHJvd1tpXSAgID0gc3ViYmxvY2tDb2xvcnMwW2dldElu
ZGV4KGksIGopXTsKKyAgICAgICAgICAgICAgICAgICAgcm93W2ldLkEgPSBhbHBoYVZhbHVlc1tq
XVtpXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDI7IGkgPCA0ICYmICh4ICsgaSkgPCB3OyBpKyspCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICByb3dbaV0gICA9IHN1YmJsb2NrQ29sb3JzMVtnZXRJbmRleChpLCBqKV07
CisgICAgICAgICAgICAgICAgICAgIHJvd1tpXS5BID0gYWxwaGFWYWx1ZXNbal1baV07CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGN1clBpeGVsICs9IGRlc3RSb3dQaXRjaDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAobm9uT3BhcXVlUHVuY2hUaHJv
dWdoQWxwaGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlY29kZVB1bmNoVGhyb3VnaEFscGhh
QmxvY2soZGVzdCwgeCwgeSwgdywgaCwgZGVzdFJvd1BpdGNoKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHZvaWQgZGVjb2RlVEJsb2NrKHVpbnQ4X3QgKmRlc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IHgsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHksCisgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IHcsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGgs
CisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlc3RSb3dQaXRjaCwKKyAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB1aW50OF90IGFscGhhVmFsdWVzWzRdWzRdLAorICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpIGNvbnN0CisgICAgewor
ICAgICAgICAvLyBUYWJsZSBDLjgsIGRpc3RhbmNlIGluZGV4IGZvciBUIGFuZCBIIG1vZGVzCisg
ICAgICAgIGNvbnN0IGF1dG8gJmJsb2NrID0gdS5pZGh0Lm1vZGUudG07CisKKyAgICAgICAgaW50
IHIxID0gZXh0ZW5kXzR0bzhiaXRzKGJsb2NrLlRSMWEgPDwgMiB8IGJsb2NrLlRSMWIpOworICAg
ICAgICBpbnQgZzEgPSBleHRlbmRfNHRvOGJpdHMoYmxvY2suVEcxKTsKKyAgICAgICAgaW50IGIx
ID0gZXh0ZW5kXzR0bzhiaXRzKGJsb2NrLlRCMSk7CisgICAgICAgIGludCByMiA9IGV4dGVuZF80
dG84Yml0cyhibG9jay5UUjIpOworICAgICAgICBpbnQgZzIgPSBleHRlbmRfNHRvOGJpdHMoYmxv
Y2suVEcyKTsKKyAgICAgICAgaW50IGIyID0gZXh0ZW5kXzR0bzhiaXRzKGJsb2NrLlRCMik7CisK
KyAgICAgICAgc3RhdGljIGludCBkaXN0YW5jZVs4XSA9IHszLCA2LCAxMSwgMTYsIDIzLCAzMiwg
NDEsIDY0fTsKKyAgICAgICAgY29uc3QgaW50IGQgICAgICAgICAgICA9IGRpc3RhbmNlW2Jsb2Nr
LlRkYSA8PCAxIHwgYmxvY2suVGRiXTsKKworICAgICAgICBjb25zdCBSOEc4QjhBOCBwYWludENv
bG9yc1s0XSA9IHsKKyAgICAgICAgICAgIGNyZWF0ZVJHQkEocjEsIGcxLCBiMSksIGNyZWF0ZVJH
QkEocjIgKyBkLCBnMiArIGQsIGIyICsgZCksIGNyZWF0ZVJHQkEocjIsIGcyLCBiMiksCisgICAg
ICAgICAgICBjcmVhdGVSR0JBKHIyIC0gZCwgZzIgLSBkLCBiMiAtIGQpLAorICAgICAgICB9Owor
CisgICAgICAgIHVpbnQ4X3QgKmN1clBpeGVsID0gZGVzdDsKKyAgICAgICAgZm9yIChzaXplX3Qg
aiA9IDA7IGogPCA0ICYmICh5ICsgaikgPCBoOyBqKyspCisgICAgICAgIHsKKyAgICAgICAgICAg
IFI4RzhCOEE4ICpyb3cgPSByZWludGVycHJldF9jYXN0PFI4RzhCOEE4ICo+KGN1clBpeGVsKTsK
KyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNCAmJiAoeCArIGkpIDwgdzsgaSsr
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJvd1tpXSAgID0gcGFpbnRDb2xvcnNb
Z2V0SW5kZXgoaSwgaildOworICAgICAgICAgICAgICAgIHJvd1tpXS5BID0gYWxwaGFWYWx1ZXNb
al1baV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjdXJQaXhlbCArPSBkZXN0Um93UGl0
Y2g7CisgICAgICAgIH0KKworICAgICAgICBpZiAobm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGRlY29kZVB1bmNoVGhyb3VnaEFscGhhQmxvY2soZGVz
dCwgeCwgeSwgdywgaCwgZGVzdFJvd1BpdGNoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZv
aWQgZGVjb2RlSEJsb2NrKHVpbnQ4X3QgKmRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IHgsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHksCisgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IHcsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGgsCisgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGRlc3RSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB1aW50OF90IGFscGhhVmFsdWVzWzRdWzRdLAorICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpIGNvbnN0CisgICAgeworICAgICAgICAv
LyBUYWJsZSBDLjgsIGRpc3RhbmNlIGluZGV4IGZvciBUIGFuZCBIIG1vZGVzCisgICAgICAgIGNv
bnN0IGF1dG8gJmJsb2NrID0gdS5pZGh0Lm1vZGUuaG07CisKKyAgICAgICAgaW50IHIxID0gZXh0
ZW5kXzR0bzhiaXRzKGJsb2NrLkhSMSk7CisgICAgICAgIGludCBnMSA9IGV4dGVuZF80dG84Yml0
cyhibG9jay5IRzFhIDw8IDEgfCBibG9jay5IRzFiKTsKKyAgICAgICAgaW50IGIxID0gZXh0ZW5k
XzR0bzhiaXRzKGJsb2NrLkhCMWEgPDwgMyB8IGJsb2NrLkhCMWIgPDwgMSB8IGJsb2NrLkhCMWMp
OworICAgICAgICBpbnQgcjIgPSBleHRlbmRfNHRvOGJpdHMoYmxvY2suSFIyKTsKKyAgICAgICAg
aW50IGcyID0gZXh0ZW5kXzR0bzhiaXRzKGJsb2NrLkhHMmEgPDwgMSB8IGJsb2NrLkhHMmIpOwor
ICAgICAgICBpbnQgYjIgPSBleHRlbmRfNHRvOGJpdHMoYmxvY2suSEIyKTsKKworICAgICAgICBz
dGF0aWMgY29uc3QgaW50IGRpc3RhbmNlWzhdID0gezMsIDYsIDExLCAxNiwgMjMsIDMyLCA0MSwg
NjR9OworICAgICAgICBjb25zdCBpbnQgZCAgICAgICAgICAgICAgICAgID0gZGlzdGFuY2VbKGJs
b2NrLkhkYSA8PCAyKSB8IChibG9jay5IZGIgPDwgMSkgfAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICgocjEgPDwgMTYgfCBnMSA8PCA4IHwgYjEpID49IChyMiA8PCAxNiB8IGcyIDw8
IDggfCBiMikgPyAxIDogMCldOworCisgICAgICAgIGNvbnN0IFI4RzhCOEE4IHBhaW50Q29sb3Jz
WzRdID0geworICAgICAgICAgICAgY3JlYXRlUkdCQShyMSArIGQsIGcxICsgZCwgYjEgKyBkKSwg
Y3JlYXRlUkdCQShyMSAtIGQsIGcxIC0gZCwgYjEgLSBkKSwKKyAgICAgICAgICAgIGNyZWF0ZVJH
QkEocjIgKyBkLCBnMiArIGQsIGIyICsgZCksIGNyZWF0ZVJHQkEocjIgLSBkLCBnMiAtIGQsIGIy
IC0gZCksCisgICAgICAgIH07CisKKyAgICAgICAgdWludDhfdCAqY3VyUGl4ZWwgPSBkZXN0Owor
ICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IDQgJiYgKHkgKyBqKSA8IGg7IGorKykKKyAg
ICAgICAgeworICAgICAgICAgICAgUjhHOEI4QTggKnJvdyA9IHJlaW50ZXJwcmV0X2Nhc3Q8UjhH
OEI4QTggKj4oY3VyUGl4ZWwpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA0
ICYmICh4ICsgaSkgPCB3OyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcm93
W2ldICAgPSBwYWludENvbG9yc1tnZXRJbmRleChpLCBqKV07CisgICAgICAgICAgICAgICAgcm93
W2ldLkEgPSBhbHBoYVZhbHVlc1tqXVtpXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGN1
clBpeGVsICs9IGRlc3RSb3dQaXRjaDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChub25PcGFx
dWVQdW5jaFRocm91Z2hBbHBoYSkKKyAgICAgICAgeworICAgICAgICAgICAgZGVjb2RlUHVuY2hU
aHJvdWdoQWxwaGFCbG9jayhkZXN0LCB4LCB5LCB3LCBoLCBkZXN0Um93UGl0Y2gpOworICAgICAg
ICB9CisgICAgfQorCisgICAgdm9pZCBkZWNvZGVQbGFuYXJCbG9jayh1aW50OF90ICpkZXN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB3LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgcGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
aW50OF90IGFscGhhVmFsdWVzWzRdWzRdKSBjb25zdAorICAgIHsKKyAgICAgICAgaW50IHJvID0g
ZXh0ZW5kXzZ0bzhiaXRzKHUucGJsay5STyk7CisgICAgICAgIGludCBnbyA9IGV4dGVuZF83dG84
Yml0cyh1LnBibGsuR08xIDw8IDYgfCB1LnBibGsuR08yKTsKKyAgICAgICAgaW50IGJvID0KKyAg
ICAgICAgICAgIGV4dGVuZF82dG84Yml0cyh1LnBibGsuQk8xIDw8IDUgfCB1LnBibGsuQk8yIDw8
IDMgfCB1LnBibGsuQk8zYSA8PCAxIHwgdS5wYmxrLkJPM2IpOworICAgICAgICBpbnQgcmggPSBl
eHRlbmRfNnRvOGJpdHModS5wYmxrLlJIMSA8PCAxIHwgdS5wYmxrLlJIMik7CisgICAgICAgIGlu
dCBnaCA9IGV4dGVuZF83dG84Yml0cyh1LnBibGsuR0gpOworICAgICAgICBpbnQgYmggPSBleHRl
bmRfNnRvOGJpdHModS5wYmxrLkJIYSA8PCA1IHwgdS5wYmxrLkJIYik7CisgICAgICAgIGludCBy
diA9IGV4dGVuZF82dG84Yml0cyh1LnBibGsuUlZhIDw8IDMgfCB1LnBibGsuUlZiKTsKKyAgICAg
ICAgaW50IGd2ID0gZXh0ZW5kXzd0bzhiaXRzKHUucGJsay5HVmEgPDwgMiB8IHUucGJsay5HVmIp
OworICAgICAgICBpbnQgYnYgPSBleHRlbmRfNnRvOGJpdHModS5wYmxrLkJWKTsKKworICAgICAg
ICB1aW50OF90ICpjdXJQaXhlbCA9IGRlc3Q7CisgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBq
IDwgNCAmJiAoeSArIGopIDwgaDsgaisrKQorICAgICAgICB7CisgICAgICAgICAgICBSOEc4QjhB
OCAqcm93ID0gcmVpbnRlcnByZXRfY2FzdDxSOEc4QjhBOCAqPihjdXJQaXhlbCk7CisKKyAgICAg
ICAgICAgIGludCByeSA9IHN0YXRpY19jYXN0PGludD4oaikgKiAocnYgLSBybykgKyAyOworICAg
ICAgICAgICAgaW50IGd5ID0gc3RhdGljX2Nhc3Q8aW50PihqKSAqIChndiAtIGdvKSArIDI7Cisg
ICAgICAgICAgICBpbnQgYnkgPSBzdGF0aWNfY2FzdDxpbnQ+KGopICogKGJ2IC0gYm8pICsgMjsK
KyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNCAmJiAoeCArIGkpIDwgdzsgaSsr
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJvd1tpXSA9IGNyZWF0ZVJHQkEoKChz
dGF0aWNfY2FzdDxpbnQ+KGkpICogKHJoIC0gcm8pICsgcnkpID4+IDIpICsgcm8sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHN0YXRpY19jYXN0PGludD4oaSkgKiAoZ2gg
LSBnbykgKyBneSkgPj4gMikgKyBnbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICgoc3RhdGljX2Nhc3Q8aW50PihpKSAqIChiaCAtIGJvKSArIGJ5KSA+PiAyKSArIGJvLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFWYWx1ZXNbal1baV0pOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgY3VyUGl4ZWwgKz0gcGl0Y2g7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICAvLyBJbmRleCBmb3IgaW5kaXZpZHVhbCwgZGlmZmVyZW50aWFsLCBIIGFu
ZCBUIG1vZGVzCisgICAgc2l6ZV90IGdldEluZGV4KHNpemVfdCB4LCBzaXplX3QgeSkgY29uc3QK
KyAgICB7CisgICAgICAgIHNpemVfdCBiaXRJbmRleCAgPSB4ICogNCArIHk7CisgICAgICAgIHNp
emVfdCBiaXRPZmZzZXQgPSBiaXRJbmRleCAmIDc7CisgICAgICAgIHNpemVfdCBsc2IgICAgICAg
PSAodS5pZGh0LnBpeGVsSW5kZXhMU0JbMSAtIChiaXRJbmRleCA+PiAzKV0gPj4gYml0T2Zmc2V0
KSAmIDE7CisgICAgICAgIHNpemVfdCBtc2IgICAgICAgPSAodS5pZGh0LnBpeGVsSW5kZXhNU0Jb
MSAtIChiaXRJbmRleCA+PiAzKV0gPj4gYml0T2Zmc2V0KSAmIDE7CisgICAgICAgIHJldHVybiAo
bXNiIDw8IDEpIHwgbHNiOworICAgIH0KKworICAgIHZvaWQgZGVjb2RlUHVuY2hUaHJvdWdoQWxw
aGFCbG9jayh1aW50OF90ICpkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB3LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlc3RSb3dQaXRjaCkgY29uc3QK
KyAgICB7CisgICAgICAgIHVpbnQ4X3QgKmN1clBpeGVsID0gZGVzdDsKKyAgICAgICAgZm9yIChz
aXplX3QgaiA9IDA7IGogPCA0ICYmICh5ICsgaikgPCBoOyBqKyspCisgICAgICAgIHsKKyAgICAg
ICAgICAgIFI4RzhCOEE4ICpyb3cgPSByZWludGVycHJldF9jYXN0PFI4RzhCOEE4ICo+KGN1clBp
eGVsKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNCAmJiAoeCArIGkpIDwg
dzsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChnZXRJbmRleChpLCBq
KSA9PSAyKSAgLy8gIG1zYiA9PSAxICYmIGxzYiA9PSAwCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICByb3dbaV0gPSBjcmVhdGVSR0JBKDAsIDAsIDAsIDApOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGN1clBpeGVsICs9IGRlc3RS
b3dQaXRjaDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHVpbnQxNl90IFJHQjhUb1JHQjU2NShj
b25zdCBSOEc4QjhBOCAmcmdiYSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAoc3RhdGlj
X2Nhc3Q8dWludDE2X3Q+KHJnYmEuUiA+PiAzKSA8PCAxMSkgfAorICAgICAgICAgICAgICAgKHN0
YXRpY19jYXN0PHVpbnQxNl90PihyZ2JhLkcgPj4gMikgPDwgNSkgfAorICAgICAgICAgICAgICAg
KHN0YXRpY19jYXN0PHVpbnQxNl90PihyZ2JhLkIgPj4gMykgPDwgMCk7CisgICAgfQorCisgICAg
dWludDMyX3QgbWF0Y2hCQzFCaXRzKGNvbnN0IGludCAqcGl4ZWxJbmRpY2VzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBpbnQgKnBpeGVsSW5kZXhDb3VudHMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFI4RzhCOEE4ICpzdWJibG9ja0NvbG9ycywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bUNvbG9ycywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUjhHOEI4QTggJm1pbkNvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBSOEc4QjhBOCAmbWF4Q29sb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpIGNvbnN0CisgICAgeworICAgICAgICAvLyBQ
cm9qZWN0IGVhY2ggcGl4ZWwgb24gdGhlIChtYXhDb2xvciwgbWluQ29sb3IpIGxpbmUgdG8gZGVj
aWRlIHdoaWNoCisgICAgICAgIC8vIEJDMSBjb2RlIHRvIGFzc2lnbiB0byBpdC4KKworICAgICAg
ICB1aW50OF90IGRlY29kZWRDb2xvcnNbMl1bM10gPSB7e21heENvbG9yLlIsIG1heENvbG9yLkcs
IG1heENvbG9yLkJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge21p
bkNvbG9yLlIsIG1pbkNvbG9yLkcsIG1pbkNvbG9yLkJ9fTsKKworICAgICAgICBpbnQgZGlyZWN0
aW9uWzNdOworICAgICAgICBmb3IgKGludCBjaCA9IDA7IGNoIDwgMzsgY2grKykKKyAgICAgICAg
eworICAgICAgICAgICAgZGlyZWN0aW9uW2NoXSA9IGRlY29kZWRDb2xvcnNbMF1bY2hdIC0gZGVj
b2RlZENvbG9yc1sxXVtjaF07CisgICAgICAgIH0KKworICAgICAgICBpbnQgc3RvcHNbMl07Cisg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjsgaSsrKQorICAgICAgICB7CisgICAgICAgICAg
ICBzdG9wc1tpXSA9IGRlY29kZWRDb2xvcnNbaV1bMF0gKiBkaXJlY3Rpb25bMF0gKyBkZWNvZGVk
Q29sb3JzW2ldWzFdICogZGlyZWN0aW9uWzFdICsKKyAgICAgICAgICAgICAgICAgICAgICAgZGVj
b2RlZENvbG9yc1tpXVsyXSAqIGRpcmVjdGlvblsyXTsKKyAgICAgICAgfQorCisgICAgICAgIEFT
U0VSVChudW1Db2xvcnMgPD0ga051bVBpeGVsc0luQmxvY2spOworCisgICAgICAgIGludCBlbmNv
ZGVkQ29sb3JzW2tOdW1QaXhlbHNJbkJsb2NrXTsKKyAgICAgICAgaWYgKG5vbk9wYXF1ZVB1bmNo
VGhyb3VnaEFscGhhKQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG51bUNvbG9yczsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnN0
IGludCBjb3VudCA9IHBpeGVsSW5kZXhDb3VudHNbaV07CisgICAgICAgICAgICAgICAgaWYgKGNv
dW50ID4gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIEluIG5v
bi1vcGFxdWUgbW9kZSwgMyBpcyBmb3IgdHJhbnBhcmVudCBwaXhlbHMuCisKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKDAgPT0gc3ViYmxvY2tDb2xvcnNbaV0uQSkKKyAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlZENvbG9yc1tpXSA9IDM7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSOEc4QjhBOCAmcGl4ZWwg
PSBzdWJibG9ja0NvbG9yc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBk
b3QgICAgICAgICA9IHBpeGVsLlIgKiBkaXJlY3Rpb25bMF0gKyBwaXhlbC5HICogZGlyZWN0aW9u
WzFdICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbC5CICog
ZGlyZWN0aW9uWzJdOworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IGZhY3RvciA9
IGdsOjpjbGFtcCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRv
dCAtIHN0b3BzWzFdKSAvIChzdG9wc1swXSAtIHN0b3BzWzFdKSkgKiAyICsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMC41ZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MCwgMik7CisgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGZhY3RvcikKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZWRDb2xvcnNbaV0gPSAwOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZWRD
b2xvcnNbaV0gPSAyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlZENv
bG9yc1tpXSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAg
eworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Db2xvcnM7IGkrKykKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdCBpbnQgY291bnQgPSBwaXhlbEluZGV4
Q291bnRzW2ldOworICAgICAgICAgICAgICAgIGlmIChjb3VudCA+IDApCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAvLyBJbiBvcGFxdWUgbW9kZSwgdGhlIGNvZGUgaXMg
ZnJvbSAwIHRvIDMuCisKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgUjhHOEI4QTggJnBpeGVs
ID0gc3ViYmxvY2tDb2xvcnNbaV07CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBkb3Qg
PQorICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWwuUiAqIGRpcmVjdGlvblswXSArIHBpeGVs
LkcgKiBkaXJlY3Rpb25bMV0gKyBwaXhlbC5CICogZGlyZWN0aW9uWzJdOworICAgICAgICAgICAg
ICAgICAgICBjb25zdCBpbnQgZmFjdG9yID0gZ2w6OmNsYW1wKAorICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8aW50PigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGRvdCAtIHN0b3BzWzFdKSAvIChzdG9wc1swXSAtIHN0b3BzWzFdKSkg
KiAzICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjVmKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIDAsIDMpOworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGZhY3RvcikKKyAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZWRDb2xvcnNbaV0gPSAxOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAx
OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZWRDb2xvcnNbaV0gPSAzOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSAyOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZWRDb2xvcnNbaV0gPSAy
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbmNvZGVkQ29sb3JzW2ldID0gMDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHVpbnQzMl90IGJpdHMg
PSAwOworICAgICAgICBmb3IgKGludCBpID0ga051bVBpeGVsc0luQmxvY2sgLSAxOyBpID49IDA7
IGktLSkKKyAgICAgICAgeworICAgICAgICAgICAgYml0cyA8PD0gMjsKKyAgICAgICAgICAgIGJp
dHMgfD0gZW5jb2RlZENvbG9yc1twaXhlbEluZGljZXNbaV1dOworICAgICAgICB9CisKKyAgICAg
ICAgcmV0dXJuIGJpdHM7CisgICAgfQorCisgICAgdm9pZCBwYWNrQkMxKHZvaWQgKmJjMSwKKyAg
ICAgICAgICAgICAgICAgY29uc3QgaW50ICpwaXhlbEluZGljZXMsCisgICAgICAgICAgICAgICAg
IGNvbnN0IGludCAqcGl4ZWxJbmRleENvdW50cywKKyAgICAgICAgICAgICAgICAgY29uc3QgUjhH
OEI4QTggKnN1YmJsb2NrQ29sb3JzLAorICAgICAgICAgICAgICAgICBzaXplX3QgbnVtQ29sb3Jz
LAorICAgICAgICAgICAgICAgICBpbnQgbWluQ29sb3JJbmRleCwKKyAgICAgICAgICAgICAgICAg
aW50IG1heENvbG9ySW5kZXgsCisgICAgICAgICAgICAgICAgIGJvb2wgbm9uT3BhcXVlUHVuY2hU
aHJvdWdoQWxwaGEpIGNvbnN0CisgICAgeworICAgICAgICBjb25zdCBSOEc4QjhBOCAmbWluQ29s
b3IgPSBzdWJibG9ja0NvbG9yc1ttaW5Db2xvckluZGV4XTsKKyAgICAgICAgY29uc3QgUjhHOEI4
QTggJm1heENvbG9yID0gc3ViYmxvY2tDb2xvcnNbbWF4Q29sb3JJbmRleF07CisKKyAgICAgICAg
dWludDMyX3QgYml0czsKKyAgICAgICAgdWludDE2X3QgbWF4MTYgPSBSR0I4VG9SR0I1NjUobWF4
Q29sb3IpOworICAgICAgICB1aW50MTZfdCBtaW4xNiA9IFJHQjhUb1JHQjU2NShtaW5Db2xvcik7
CisgICAgICAgIGlmIChtYXgxNiAhPSBtaW4xNikKKyAgICAgICAgeworICAgICAgICAgICAgLy8g
RmluZCB0aGUgYmVzdCBCQzEgY29kZSBmb3IgZWFjaCBwaXhlbAorICAgICAgICAgICAgYml0cyA9
IG1hdGNoQkMxQml0cyhwaXhlbEluZGljZXMsIHBpeGVsSW5kZXhDb3VudHMsIHN1YmJsb2NrQ29s
b3JzLCBudW1Db2xvcnMsIG1pbkNvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtYXhDb2xvciwgbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpOworICAgICAgICB9CisgICAg
ICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgLy8gU2FtZSBjb2xvcnMsIEJDMSBpbmRl
eCAwIGlzIHRoZSBjb2xvciBpbiBib3RoIG9wYXF1ZSBhbmQgdHJhbnNwYXJlbnQgbW9kZQorICAg
ICAgICAgICAgYml0cyA9IDA7CisgICAgICAgICAgICAvLyBCQzEgaW5kZXggMyBpcyB0cmFuc3Bh
cmVudAorICAgICAgICAgICAgaWYgKG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhhKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwga051bVBpeGVsc0lu
QmxvY2s7IGkrKykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGlmICgw
ID09IHN1YmJsb2NrQ29sb3JzW3BpeGVsSW5kaWNlc1tpXV0uQSkKKyAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgYml0cyB8PSAoMyA8PCAoaSAqIDIpKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChtYXgxNiA8IG1pbjE2KQorICAgICAgICB7CisgICAgICAg
ICAgICBzdGQ6OnN3YXAobWF4MTYsIG1pbjE2KTsKKworICAgICAgICAgICAgdWludDMyX3QgeG9y
TWFzayA9IDA7CisgICAgICAgICAgICBpZiAobm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gSW4gdHJhbnNwYXJlbnQgbW9kZSBzd2l0
Y2hpbmcgdGhlIGNvbG9ycyBpcyBkb2luZyB0aGUKKyAgICAgICAgICAgICAgICAvLyBmb2xsb3dp
bmcgY29kZSBzd2FwOiAwIDwtPiAxLiAweEEgc2VsZWN0cyB0aGUgc2Vjb25kIGJpdCBvZgorICAg
ICAgICAgICAgICAgIC8vIGVhY2ggY29kZSwgYml0cyA+PiAxIHNlbGVjdHMgdGhlIGZpcnN0IGJp
dCBvZiB0aGUgY29kZSB3aGVuCisgICAgICAgICAgICAgICAgLy8gdGhlIHNlY29uZHMgYml0IGlz
IHNldCAoY2FzZSAyIGFuZCAzKS4gV2UgaW52ZXJ0IGFsbCB0aGUKKyAgICAgICAgICAgICAgICAv
LyBub24tc2VsZWN0ZWQgYml0cywgdGhhdCBpcyB0aGUgZmlyc3QgYml0IHdoZW4gdGhlIGNvZGUg
aXMKKyAgICAgICAgICAgICAgICAvLyAwIG9yIDEuCisgICAgICAgICAgICAgICAgeG9yTWFzayA9
IH4oKGJpdHMgPj4gMSkgfCAweEFBQUFBQUFBKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBJbiBvcGFxdWUgbW9kZSBz
d2l0Y2hpbmcgdGhlIHR3byBjb2xvcnMgaXMgZG9pbmcgdGhlCisgICAgICAgICAgICAgICAgLy8g
Zm9sbG93aW5nIGNvZGUgc3dhcHM6IDAgPC0+IDEgYW5kIDIgPC0+IDMuIFRoaXMgaXMKKyAgICAg
ICAgICAgICAgICAvLyBlcXVpdmFsZW50IHRvIGZsaXBwaW5nIHRoZSBmaXJzdCBiaXQgb2YgZWFj
aCBjb2RlCisgICAgICAgICAgICAgICAgLy8gKDUgPSAwYjAxMDEpCisgICAgICAgICAgICAgICAg
eG9yTWFzayA9IDB4NTU1NTU1NTU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBiaXRzIF49
IHhvck1hc2s7CisgICAgICAgIH0KKworICAgICAgICBzdHJ1Y3QgQkMxQmxvY2sKKyAgICAgICAg
eworICAgICAgICAgICAgdWludDE2X3QgY29sb3IwOworICAgICAgICAgICAgdWludDE2X3QgY29s
b3IxOworICAgICAgICAgICAgdWludDMyX3QgYml0czsKKyAgICAgICAgfTsKKworICAgICAgICAv
LyBFbmNvZGUgdGhlIG9wYXF1ZW5lc3MgaW4gdGhlIG9yZGVyIG9mIHRoZSB0d28gQkMxIGNvbG9y
cworICAgICAgICBCQzFCbG9jayAqZGVzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8QkMxQmxvY2sgKj4o
YmMxKTsKKyAgICAgICAgaWYgKG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhhKQorICAgICAgICB7
CisgICAgICAgICAgICBkZXN0LT5jb2xvcjAgPSBtaW4xNjsKKyAgICAgICAgICAgIGRlc3QtPmNv
bG9yMSA9IG1heDE2OworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVzdC0+Y29sb3IwID0gbWF4MTY7CisgICAgICAgICAgICBkZXN0LT5jb2xvcjEgPSBt
aW4xNjsKKyAgICAgICAgfQorICAgICAgICBkZXN0LT5iaXRzID0gYml0czsKKyAgICB9CisKKyAg
ICB2b2lkIHRyYW5zY29kZUluZGl2aWR1YWxCbG9ja1RvQkMxKHVpbnQ4X3QgKmRlc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB5LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHVpbnQ4X3QgYWxwaGFWYWx1ZXNbNF1bNF0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhhKSBj
b25zdAorICAgIHsKKyAgICAgICAgY29uc3QgYXV0byAmYmxvY2sgPSB1LmlkaHQubW9kZS5pZG0u
Y29sb3JzLmluZGl2OworICAgICAgICBpbnQgcjEgICAgICAgICAgICA9IGV4dGVuZF80dG84Yml0
cyhibG9jay5SMSk7CisgICAgICAgIGludCBnMSAgICAgICAgICAgID0gZXh0ZW5kXzR0bzhiaXRz
KGJsb2NrLkcxKTsKKyAgICAgICAgaW50IGIxICAgICAgICAgICAgPSBleHRlbmRfNHRvOGJpdHMo
YmxvY2suQjEpOworICAgICAgICBpbnQgcjIgICAgICAgICAgICA9IGV4dGVuZF80dG84Yml0cyhi
bG9jay5SMik7CisgICAgICAgIGludCBnMiAgICAgICAgICAgID0gZXh0ZW5kXzR0bzhiaXRzKGJs
b2NrLkcyKTsKKyAgICAgICAgaW50IGIyICAgICAgICAgICAgPSBleHRlbmRfNHRvOGJpdHMoYmxv
Y2suQjIpOworICAgICAgICB0cmFuc2NvZGVJbmRpdmlkdWFsT3JEaWZmZXJlbnRpYWxCbG9ja1Rv
QkMxKGRlc3QsIHgsIHksIHcsIGgsIHIxLCBnMSwgYjEsIHIyLCBnMiwgYjIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFWYWx1ZXMsIG5v
bk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhhKTsKKyAgICB9CisKKyAgICB2b2lkIHRyYW5zY29kZURp
ZmZlcmVudGlhbEJsb2NrVG9CQzEodWludDhfdCAqZGVzdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHVpbnQ4X3QgYWxwaGFWYWx1ZXNbNF1bNF0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpIGNvbnN0
CisgICAgeworICAgICAgICBjb25zdCBhdXRvICZibG9jayA9IHUuaWRodC5tb2RlLmlkbS5jb2xv
cnMuZGlmZjsKKyAgICAgICAgaW50IGIxICAgICAgICAgICAgPSBleHRlbmRfNXRvOGJpdHMoYmxv
Y2suQik7CisgICAgICAgIGludCBnMSAgICAgICAgICAgID0gZXh0ZW5kXzV0bzhiaXRzKGJsb2Nr
LkcpOworICAgICAgICBpbnQgcjEgICAgICAgICAgICA9IGV4dGVuZF81dG84Yml0cyhibG9jay5S
KTsKKyAgICAgICAgaW50IHIyICAgICAgICAgICAgPSBleHRlbmRfNXRvOGJpdHMoYmxvY2suUiAr
IGJsb2NrLmRSKTsKKyAgICAgICAgaW50IGcyICAgICAgICAgICAgPSBleHRlbmRfNXRvOGJpdHMo
YmxvY2suRyArIGJsb2NrLmRHKTsKKyAgICAgICAgaW50IGIyICAgICAgICAgICAgPSBleHRlbmRf
NXRvOGJpdHMoYmxvY2suQiArIGJsb2NrLmRCKTsKKyAgICAgICAgdHJhbnNjb2RlSW5kaXZpZHVh
bE9yRGlmZmVyZW50aWFsQmxvY2tUb0JDMShkZXN0LCB4LCB5LCB3LCBoLCByMSwgZzEsIGIxLCBy
MiwgZzIsIGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFscGhhVmFsdWVzLCBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSk7CisgICAgfQor
CisgICAgdm9pZCBleHRyYWN0UGl4ZWxJbmRpY2VzKGludCAqcGl4ZWxJbmRpY2VzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnBpeGVsSW5kaWNlc0NvdW50cywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgZmxpcGJpdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IHN1YmJsb2NrSWR4KSBjb25zdAorICAgIHsKKyAgICAgICAgc2l6ZV90IGR4QmVnaW4gPSAw
OworICAgICAgICBzaXplX3QgZHhFbmQgICA9IDQ7CisgICAgICAgIHNpemVfdCBkeUJlZ2luID0g
c3ViYmxvY2tJZHggKiAyOworICAgICAgICBzaXplX3QgZHlFbmQgICA9IGR5QmVnaW4gKyAyOwor
ICAgICAgICBpZiAoIWZsaXBiaXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0ZDo6c3dhcChk
eEJlZ2luLCBkeUJlZ2luKTsKKyAgICAgICAgICAgIHN0ZDo6c3dhcChkeEVuZCwgZHlFbmQpOwor
ICAgICAgICB9CisKKyAgICAgICAgZm9yIChzaXplX3QgaiA9IGR5QmVnaW47IGogPCBkeUVuZDsg
aisrKQorICAgICAgICB7CisgICAgICAgICAgICBpbnQgKnJvdyA9ICZwaXhlbEluZGljZXNbaiAq
IDRdOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IGR4QmVnaW47IGkgPCBkeEVuZDsgaSsr
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnN0IHNpemVfdCBwaXhlbEluZGV4
ID0gc3ViYmxvY2tJZHggKiA0ICsgZ2V0SW5kZXgoaSwgaik7CisgICAgICAgICAgICAgICAgcm93
W2ldICAgICAgICAgICAgICAgICAgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVsSW5kZXgpOworICAg
ICAgICAgICAgICAgIHBpeGVsSW5kaWNlc0NvdW50c1twaXhlbEluZGV4XSsrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBzZWxlY3RFbmRQb2ludFBDQShjb25z
dCBpbnQgKnBpeGVsSW5kZXhDb3VudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBSOEc4QjhBOCAqc3ViYmxvY2tDb2xvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgbnVtQ29sb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICptaW5Db2xv
ckluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICptYXhDb2xvckluZGV4KSBj
b25zdAorICAgIHsKKyAgICAgICAgLy8gZGV0ZXJtaW5lIGNvbG9yIGRpc3RyaWJ1dGlvbgorICAg
ICAgICBpbnQgbXVbM10sIG1pblszXSwgbWF4WzNdOworICAgICAgICBmb3IgKGludCBjaCA9IDA7
IGNoIDwgMzsgY2grKykKKyAgICAgICAgeworICAgICAgICAgICAgaW50IG11diAgPSAwOworICAg
ICAgICAgICAgaW50IG1pbnYgPSAyNTU7CisgICAgICAgICAgICBpbnQgbWF4diA9IDA7CisgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUNvbG9yczsgaSsrKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGNvbnN0IGludCBjb3VudCA9IHBpeGVsSW5kZXhDb3VudHNb
aV07CisgICAgICAgICAgICAgICAgaWYgKGNvdW50ID4gMCkKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8gJnBpeGVsID0gc3ViYmxvY2tDb2xvcnNbaV07
CisgICAgICAgICAgICAgICAgICAgIGlmIChwaXhlbC5BID4gMCkKKyAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm9uLXRyYW5zcGFyZW50IHBpeGVscwor
ICAgICAgICAgICAgICAgICAgICAgICAgbXV2ICs9ICgmcGl4ZWwuUilbY2hdICogY291bnQ7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBtaW52ID0gc3RkOjptaW48aW50PihtaW52LCAoJnBpeGVs
LlIpW2NoXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtYXh2ID0gc3RkOjptYXg8aW50Piht
YXh2LCAoJnBpeGVsLlIpW2NoXSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG11W2NoXSAgPSAobXV2ICsga051
bVBpeGVsc0luQmxvY2sgLyAyKSAvIGtOdW1QaXhlbHNJbkJsb2NrOworICAgICAgICAgICAgbWlu
W2NoXSA9IG1pbnY7CisgICAgICAgICAgICBtYXhbY2hdID0gbWF4djsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIGRldGVybWluZSBjb3ZhcmlhbmNlIG1hdHJpeAorICAgICAgICBpbnQgY292WzZd
ID0gezAsIDAsIDAsIDAsIDAsIDB9OworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51
bUNvbG9yczsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBpbnQgY291bnQgPSBw
aXhlbEluZGV4Q291bnRzW2ldOworICAgICAgICAgICAgaWYgKGNvdW50ID4gMCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdCBhdXRvICZwaXhlbCA9IHN1YmJsb2NrQ29sb3Jz
W2ldOworICAgICAgICAgICAgICAgIGlmIChwaXhlbC5BID4gMCkKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIGludCByID0gcGl4ZWwuUiAtIG11WzBdOworICAgICAgICAg
ICAgICAgICAgICBpbnQgZyA9IHBpeGVsLkcgLSBtdVsxXTsKKyAgICAgICAgICAgICAgICAgICAg
aW50IGIgPSBwaXhlbC5CIC0gbXVbMl07CisKKyAgICAgICAgICAgICAgICAgICAgY292WzBdICs9
IHIgKiByICogY291bnQ7CisgICAgICAgICAgICAgICAgICAgIGNvdlsxXSArPSByICogZyAqIGNv
dW50OworICAgICAgICAgICAgICAgICAgICBjb3ZbMl0gKz0gciAqIGIgKiBjb3VudDsKKyAgICAg
ICAgICAgICAgICAgICAgY292WzNdICs9IGcgKiBnICogY291bnQ7CisgICAgICAgICAgICAgICAg
ICAgIGNvdls0XSArPSBnICogYiAqIGNvdW50OworICAgICAgICAgICAgICAgICAgICBjb3ZbNV0g
Kz0gYiAqIGIgKiBjb3VudDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICAvLyBQb3dlciBpdGVyYXRpb24gYWxnb3JpdGhtIHRvIGdldCB0aGUg
ZWlnZW52YWx1ZXMgYW5kIGVpZ2VudmVjdG9yCisKKyAgICAgICAgLy8gU3RhcnRzIHdpdGggZGlh
Z29uYWwgdmVjdG9yCisgICAgICAgIGZsb2F0IHZmciA9IHN0YXRpY19jYXN0PGZsb2F0PihtYXhb
MF0gLSBtaW5bMF0pOworICAgICAgICBmbG9hdCB2ZmcgPSBzdGF0aWNfY2FzdDxmbG9hdD4obWF4
WzFdIC0gbWluWzFdKTsKKyAgICAgICAgZmxvYXQgdmZiID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1h
eFsyXSAtIG1pblsyXSk7CisgICAgICAgIGZsb2F0IGVpZ2VudmFsdWU7CisKKyAgICAgICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBrUG93ZXJJdGVyYXRpb25zID0gNDsKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBrUG93ZXJJdGVyYXRpb25zOyBpKyspCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGZsb2F0IHIgPSB2ZnIgKiBjb3ZbMF0gKyB2ZmcgKiBjb3ZbMV0gKyB2ZmIgKiBjb3ZbMl07
CisgICAgICAgICAgICBmbG9hdCBnID0gdmZyICogY292WzFdICsgdmZnICogY292WzNdICsgdmZi
ICogY292WzRdOworICAgICAgICAgICAgZmxvYXQgYiA9IHZmciAqIGNvdlsyXSArIHZmZyAqIGNv
dls0XSArIHZmYiAqIGNvdls1XTsKKworICAgICAgICAgICAgdmZyID0gcjsKKyAgICAgICAgICAg
IHZmZyA9IGc7CisgICAgICAgICAgICB2ZmIgPSBiOworCisgICAgICAgICAgICBlaWdlbnZhbHVl
ID0gc3FydChyICogciArIGcgKiBnICsgYiAqIGIpOworICAgICAgICAgICAgaWYgKGVpZ2VudmFs
dWUgPiAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZsb2F0IGludk5vcm0gPSAx
LjBmIC8gZWlnZW52YWx1ZTsKKyAgICAgICAgICAgICAgICB2ZnIgKj0gaW52Tm9ybTsKKyAgICAg
ICAgICAgICAgICB2ZmcgKj0gaW52Tm9ybTsKKyAgICAgICAgICAgICAgICB2ZmIgKj0gaW52Tm9y
bTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGludCB2ciwgdmcsIHZiOwor
CisgICAgICAgIHN0YXRpYyBjb25zdCBmbG9hdCBrRGVmYXVsdEx1bWluYW5jZVRocmVzaG9sZCA9
IDQuMGYgKiAyNTU7CisgICAgICAgIHN0YXRpYyBjb25zdCBmbG9hdCBrUXVhbnRpemVSYW5nZSAg
ICAgICAgICAgICA9IDUxMi4wZjsKKyAgICAgICAgaWYgKGVpZ2VudmFsdWUgPCBrRGVmYXVsdEx1
bWluYW5jZVRocmVzaG9sZCkgIC8vIHRvbyBzbWFsbCwgZGVmYXVsdCB0byBsdW1pbmFuY2UKKyAg
ICAgICAgeworICAgICAgICAgICAgLy8gTHVtaW5hbmNlIHdlaWdodHMgZGVmaW5lZCBieSBJVFUt
UiBSZWNvbW1lbmRhdGlvbiBCVC42MDEsIHNjYWxlZCBieSAxMDAwCisgICAgICAgICAgICB2ciA9
IDI5OTsKKyAgICAgICAgICAgIHZnID0gNTg3OworICAgICAgICAgICAgdmIgPSAxMTQ7CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICAvLyBGcm9tIHRoZSBl
aWdlbnZhbHVlIGFuZCBlaWdlbnZlY3RvciwgY2hvb3NlIHRoZSBheGlzIHRvIHByb2plY3QKKyAg
ICAgICAgICAgIC8vIGNvbG9ycyBvbi4gV2hlbiBwcm9qZWN0aW5nIGNvbG9ycyB3ZSB3YW50IHRv
IGRvIGludGVnZXIgY29tcHV0YXRpb25zCisgICAgICAgICAgICAvLyBmb3Igc3BlZWQsIHNvIHdl
IG5vcm1hbGl6ZSB0aGUgZWlnZW52ZWN0b3IgdG8gdGhlIFswLCA1MTJdIHJhbmdlLgorICAgICAg
ICAgICAgZmxvYXQgbWFnbiA9IHN0ZDo6bWF4KHN0ZDo6bWF4KHN0ZDo6YWJzKHZmciksIHN0ZDo6
YWJzKHZmZykpLCBzdGQ6OmFicyh2ZmIpKTsKKyAgICAgICAgICAgIG1hZ24gICAgICAgPSBrUXVh
bnRpemVSYW5nZSAvIG1hZ247CisgICAgICAgICAgICB2ciAgICAgICAgID0gc3RhdGljX2Nhc3Q8
aW50Pih2ZnIgKiBtYWduKTsKKyAgICAgICAgICAgIHZnICAgICAgICAgPSBzdGF0aWNfY2FzdDxp
bnQ+KHZmZyAqIG1hZ24pOworICAgICAgICAgICAgdmIgICAgICAgICA9IHN0YXRpY19jYXN0PGlu
dD4odmZiICogbWFnbik7CisgICAgICAgIH0KKworICAgICAgICAvLyBQaWNrIGNvbG9ycyBhdCBl
eHRyZW1lIHBvaW50cworICAgICAgICBpbnQgbWluRCAgICAgICAgPSBJTlRfTUFYOworICAgICAg
ICBpbnQgbWF4RCAgICAgICAgPSAwOworICAgICAgICBzaXplX3QgbWluSW5kZXggPSAwOworICAg
ICAgICBzaXplX3QgbWF4SW5kZXggPSAwOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG51bUNvbG9yczsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBpbnQgY291bnQg
PSBwaXhlbEluZGV4Q291bnRzW2ldOworICAgICAgICAgICAgaWYgKGNvdW50ID4gMCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdCBhdXRvICZwaXhlbCA9IHN1YmJsb2NrQ29s
b3JzW2ldOworICAgICAgICAgICAgICAgIGlmIChwaXhlbC5BID4gMCkKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIGludCBkb3QgPSBwaXhlbC5SICogdnIgKyBwaXhlbC5H
ICogdmcgKyBwaXhlbC5CICogdmI7CisgICAgICAgICAgICAgICAgICAgIGlmIChkb3QgPCBtaW5E
KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBtaW5EICAg
ICA9IGRvdDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbkluZGV4ID0gaTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoZG90ID4gbWF4RCkKKyAgICAg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgbWF4RCAgICAgPSBkb3Q7
CisgICAgICAgICAgICAgICAgICAgICAgICBtYXhJbmRleCA9IGk7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICAqbWluQ29sb3JJbmRleCA9IHN0YXRpY19jYXN0PGludD4obWluSW5kZXgpOworICAgICAg
ICAqbWF4Q29sb3JJbmRleCA9IHN0YXRpY19jYXN0PGludD4obWF4SW5kZXgpOworICAgIH0KKwor
ICAgIHZvaWQgdHJhbnNjb2RlSW5kaXZpZHVhbE9yRGlmZmVyZW50aWFsQmxvY2tUb0JDMSh1aW50
OF90ICpkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB3LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHIxLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZzEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBiMSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHIy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgZzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdWludDhfdCBhbHBoYVZhbHVlc1s0XVs0XSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBub25PcGFxdWVQdW5j
aFRocm91Z2hBbHBoYSkgY29uc3QKKyAgICB7CisgICAgICAgIC8vIEEgQkMxIGJsb2NrIGhhcyAy
IGVuZHBvaW50cywgcGl4ZWxzIGlzIGVuY29kZWQgYXMgbGluZWFyCisgICAgICAgIC8vIGludGVy
cG9sYXRpb25zIG9mIHRoZW0uIEEgRVRDMS9FVEMyIGluZGl2aWR1YWwgb3IgZGlmZmVyZW50aWFs
IGJsb2NrCisgICAgICAgIC8vIGhhcyAyIHN1YmJsb2Nrcy4gRWFjaCBzdWJibG9jayBoYXMgb25l
IGNvbG9yIGFuZCBhIG1vZGlmaWVyLiBXZQorICAgICAgICAvLyBzZWxlY3QgYXhpcyBieSBwcmlu
Y2lwYWwgY29tcG9uZW50IGFuYWx5c2lzIChQQ0EpIHRvIHVzZSBhcworICAgICAgICAvLyBvdXIg
dHdvIEJDMSBlbmRwb2ludHMgYW5kIHRoZW4gbWFwIHBpeGVscyB0byBCQzEgYnkgcHJvamVjdGlu
ZyBvbiB0aGUKKyAgICAgICAgLy8gbGluZSBiZXR3ZWVuIHRoZSB0d28gZW5kcG9pbnRzIGFuZCBj
aG9vc2luZyB0aGUgcmlnaHQgZnJhY3Rpb24uCisKKyAgICAgICAgLy8gVGhlIGdvYWwgb2YgdGhp
cyBhbGdvcml0aG0gaXMgbWFrZSBpdCBmYXN0ZXIgdGhhbiBkZWNvZGUgRVRDIHRvIFJHQnMKKyAg
ICAgICAgLy8gICBhbmQgdGhlbiBlbmNvZGUgdG8gQkMuIFRvIGFjaGlldmUgdGhpcywgd2Ugb25s
eSBleHRyYWN0IHN1YmJsb2NrCisgICAgICAgIC8vICAgY29sb3JzLCBwaXhlbCBpbmRpY2VzLCBh
bmQgY291bnRzIG9mIGVhY2ggcGl4ZWwgaW5kaWNlcyBmcm9tIEVUQy4KKyAgICAgICAgLy8gICBX
aXRoIHRob3NlIGluZm9ybWF0aW9uLCB3ZSBjYW4gb25seSBlbmNvZGUgdXNlZCBzdWJibG9jayBj
b2xvcnMKKyAgICAgICAgLy8gICB0byBCQzEsIGFuZCBjb3B5IHRoZSBiaXRzIHRvIHRoZSByaWdo
dCBwaXhlbHMuCisgICAgICAgIC8vIEZ1bGx5IGRlY29kZSBhbmQgZW5jb2RlIG5lZWQgdG8gcHJv
Y2VzcyAxNiBSR0JBIHBpeGVscy4gV2l0aCB0aGlzCisgICAgICAgIC8vICAgYWxnb3JpdGhtLCBp
dCdzIDggcGl4ZWxzIGF0IG1heGltdW0gZm9yIGEgaW5kaXZpZHVhbCBvcgorICAgICAgICAvLyAg
IGRpZmZlcmVudGlhbCBibG9jay4gU2F2ZXMgdXMgYmFuZHdpZHRoIGFuZCBjb21wdXRhdGlvbnMu
CisKKyAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBrTnVtQ29sb3JzID0gODsKKworICAgICAg
ICBjb25zdCBhdXRvIGludGVuc2l0eU1vZGlmaWVyID0KKyAgICAgICAgICAgIG5vbk9wYXF1ZVB1
bmNoVGhyb3VnaEFscGhhID8gaW50ZW5zaXR5TW9kaWZpZXJOb25PcGFxdWUgOiBpbnRlbnNpdHlN
b2RpZmllckRlZmF1bHQ7CisKKyAgICAgICAgLy8gQ29tcHV0ZSB0aGUgY29sb3JzIHRoYXQgcGl4
ZWxzIGNhbiBoYXZlIGluIGVhY2ggc3ViYmxvY2sgYm90aCBmb3IKKyAgICAgICAgLy8gdGhlIGRl
Y29kaW5nIG9mIHRoZSBSR0JBIGRhdGEgYW5kIEJDMSBlbmNvZGluZworICAgICAgICBSOEc4QjhB
OCBzdWJibG9ja0NvbG9yc1trTnVtQ29sb3JzXTsKKyAgICAgICAgZm9yIChzaXplX3QgbW9kaWZp
ZXJJZHggPSAwOyBtb2RpZmllcklkeCA8IDQ7IG1vZGlmaWVySWR4KyspCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmIChub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSAmJiAobW9kaWZpZXJJZHgg
PT0gMikpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gSW4gRVRDIG9wYXF1ZSBw
dW5jaCB0aHJvdWdoIGZvcm1hdHMsIGluZGl2aWR1YWwgYW5kCisgICAgICAgICAgICAgICAgLy8g
ZGlmZmVyZW50aWFsIGJsb2NrcyB0YWtlIGluZGV4IDIgYXMgdHJhbnNwYXJlbnQgcGl4ZWwuCisg
ICAgICAgICAgICAgICAgLy8gVGh1cyB3ZSBkb24ndCBuZWVkIHRvIGNvbXB1dGUgaXRzIGNvbG9y
LCBqdXN0IGFzc2lnbiBpdAorICAgICAgICAgICAgICAgIC8vIGFzIGJsYWNrLgorICAgICAgICAg
ICAgICAgIHN1YmJsb2NrQ29sb3JzW21vZGlmaWVySWR4XSAgICAgPSBjcmVhdGVSR0JBKDAsIDAs
IDAsIDApOworICAgICAgICAgICAgICAgIHN1YmJsb2NrQ29sb3JzWzQgKyBtb2RpZmllcklkeF0g
PSBjcmVhdGVSR0JBKDAsIDAsIDAsIDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnN0IGludCBpMSAgICAgICAgICAg
ICAgICA9IGludGVuc2l0eU1vZGlmaWVyW3UuaWRodC5tb2RlLmlkbS5jdzFdW21vZGlmaWVySWR4
XTsKKyAgICAgICAgICAgICAgICBzdWJibG9ja0NvbG9yc1ttb2RpZmllcklkeF0gPSBjcmVhdGVS
R0JBKHIxICsgaTEsIGcxICsgaTEsIGIxICsgaTEpOworCisgICAgICAgICAgICAgICAgY29uc3Qg
aW50IGkyID0gaW50ZW5zaXR5TW9kaWZpZXJbdS5pZGh0Lm1vZGUuaWRtLmN3Ml1bbW9kaWZpZXJJ
ZHhdOworICAgICAgICAgICAgICAgIHN1YmJsb2NrQ29sb3JzWzQgKyBtb2RpZmllcklkeF0gPSBj
cmVhdGVSR0JBKHIyICsgaTIsIGcyICsgaTIsIGIyICsgaTIpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgaW50IHBpeGVsSW5kaWNlc1trTnVtUGl4ZWxzSW5CbG9ja107Cisg
ICAgICAgIGludCBwaXhlbEluZGV4Q291bnRzW2tOdW1Db2xvcnNdID0gezB9OworICAgICAgICAv
LyBFeHRyYWN0IHBpeGVsIGluZGljZXMgZnJvbSBhIEVUQyBibG9jay4KKyAgICAgICAgZm9yIChz
aXplX3QgYmxvY2tJZHggPSAwOyBibG9ja0lkeCA8IDI7IGJsb2NrSWR4KyspCisgICAgICAgIHsK
KyAgICAgICAgICAgIGV4dHJhY3RQaXhlbEluZGljZXMocGl4ZWxJbmRpY2VzLCBwaXhlbEluZGV4
Q291bnRzLCB4LCB5LCB3LCBoLCB1LmlkaHQubW9kZS5pZG0uZmxpcGJpdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYmxvY2tJZHgpOworICAgICAgICB9CisKKyAgICAgICAgaW50
IG1pbkNvbG9ySW5kZXgsIG1heENvbG9ySW5kZXg7CisgICAgICAgIHNlbGVjdEVuZFBvaW50UENB
KHBpeGVsSW5kZXhDb3VudHMsIHN1YmJsb2NrQ29sb3JzLCBrTnVtQ29sb3JzLCAmbWluQ29sb3JJ
bmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJm1heENvbG9ySW5kZXgpOworCisgICAg
ICAgIHBhY2tCQzEoZGVzdCwgcGl4ZWxJbmRpY2VzLCBwaXhlbEluZGV4Q291bnRzLCBzdWJibG9j
a0NvbG9ycywga051bUNvbG9ycywgbWluQ29sb3JJbmRleCwKKyAgICAgICAgICAgICAgICBtYXhD
b2xvckluZGV4LCBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSk7CisgICAgfQorCisgICAgdm9p
ZCB0cmFuc2NvZGVUQmxvY2tUb0JDMSh1aW50OF90ICpkZXN0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB3LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB1aW50OF90IGFscGhhVmFsdWVzWzRdWzRdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSkgY29uc3QKKyAgICB7
CisgICAgICAgIC8vIFRPRE8gKG1nb25nKTogV2lsbCBiZSBpbXBsZW1lbnRlZCBzb29uCisgICAg
ICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9CisKKyAgICB2b2lkIHRyYW5zY29kZUhCbG9ja1Rv
QkMxKHVpbnQ4X3QgKmRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IHcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qg
YWxwaGFWYWx1ZXNbNF1bNF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIG5v
bk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhhKSBjb25zdAorICAgIHsKKyAgICAgICAgLy8gVE9ETyAo
bWdvbmcpOiBXaWxsIGJlIGltcGxlbWVudGVkIHNvb24KKyAgICAgICAgVU5JTVBMRU1FTlRFRCgp
OworICAgIH0KKworICAgIHZvaWQgdHJhbnNjb2RlUGxhbmFyQmxvY2tUb0JDMSh1aW50OF90ICpk
ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCB3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgdWludDhfdCBhbHBoYVZhbHVlc1s0XVs0XSkgY29uc3QKKyAgICB7CisgICAgICAgIC8vIFRP
RE8gKG1nb25nKTogV2lsbCBiZSBpbXBsZW1lbnRlZCBzb29uCisgICAgICAgIFVOSU1QTEVNRU5U
RUQoKTsKKyAgICB9CisKKyAgICAvLyBTaW5nbGUgY2hhbm5lbCB1dGlsaXR5IGZ1bmN0aW9ucwor
ICAgIGludCBnZXRTaW5nbGVDaGFubmVsKHNpemVfdCB4LCBzaXplX3QgeSwgYm9vbCBpc1NpZ25l
ZCkgY29uc3QKKyAgICB7CisgICAgICAgIGludCBjb2Rld29yZCA9IGlzU2lnbmVkID8gdS5zY2Js
ay5iYXNlX2NvZGV3b3JkLnMgOiB1LnNjYmxrLmJhc2VfY29kZXdvcmQudXM7CisgICAgICAgIHJl
dHVybiBjb2Rld29yZCArIGdldFNpbmdsZUNoYW5uZWxNb2RpZmllcih4LCB5KSAqIHUuc2NibGsu
bXVsdGlwbGllcjsKKyAgICB9CisKKyAgICBpbnQgZ2V0U2luZ2xlQ2hhbm5lbEluZGV4KHNpemVf
dCB4LCBzaXplX3QgeSkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCh4IDwgNCAmJiB5IDwg
NCk7CisKKyAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgorICAgICAgICBzd2l0Y2ggKHggKiA0
ICsgeSkKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gdS5zY2Jsay5tYTsK
KyAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIHUuc2NibGsubWI7CisgICAgICAgICAgICBjYXNl
IDI6IHJldHVybiB1LnNjYmxrLm1jMSA8PCAxIHwgdS5zY2Jsay5tYzI7CisgICAgICAgICAgICBj
YXNlIDM6IHJldHVybiB1LnNjYmxrLm1kOworICAgICAgICAgICAgY2FzZSA0OiByZXR1cm4gdS5z
Y2Jsay5tZTsKKyAgICAgICAgICAgIGNhc2UgNTogcmV0dXJuIHUuc2NibGsubWYxIDw8IDIgfCB1
LnNjYmxrLm1mMjsKKyAgICAgICAgICAgIGNhc2UgNjogcmV0dXJuIHUuc2NibGsubWc7CisgICAg
ICAgICAgICBjYXNlIDc6IHJldHVybiB1LnNjYmxrLm1oOworICAgICAgICAgICAgY2FzZSA4OiBy
ZXR1cm4gdS5zY2Jsay5taTsKKyAgICAgICAgICAgIGNhc2UgOTogcmV0dXJuIHUuc2NibGsubWo7
CisgICAgICAgICAgICBjYXNlIDEwOiByZXR1cm4gdS5zY2Jsay5tazEgPDwgMSB8IHUuc2NibGsu
bWsyOworICAgICAgICAgICAgY2FzZSAxMTogcmV0dXJuIHUuc2NibGsubWw7CisgICAgICAgICAg
ICBjYXNlIDEyOiByZXR1cm4gdS5zY2Jsay5tbTsKKyAgICAgICAgICAgIGNhc2UgMTM6IHJldHVy
biB1LnNjYmxrLm1uMSA8PCAyIHwgdS5zY2Jsay5tbjI7CisgICAgICAgICAgICBjYXNlIDE0OiBy
ZXR1cm4gdS5zY2Jsay5tbzsKKyAgICAgICAgICAgIGNhc2UgMTU6IHJldHVybiB1LnNjYmxrLm1w
OworICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgcmV0dXJuIDA7CisgICAgICAg
IH0KKyAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9uCisgICAgfQorCisgICAgaW50IGdldFNpbmds
ZUNoYW5uZWxNb2RpZmllcihzaXplX3QgeCwgc2l6ZV90IHkpIGNvbnN0CisgICAgeworICAgICAg
ICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbW9kaWZpZXJU
YWJsZVsxNl1bOF0gPQorICAgICAgICB7CisgICAgICAgICAgICB7IC0zLCAtNiwgIC05LCAtMTUs
IDIsIDUsIDgsIDE0IH0sCisgICAgICAgICAgICB7IC0zLCAtNywgLTEwLCAtMTMsIDIsIDYsIDks
IDEyIH0sCisgICAgICAgICAgICB7IC0yLCAtNSwgIC04LCAtMTMsIDEsIDQsIDcsIDEyIH0sCisg
ICAgICAgICAgICB7IC0yLCAtNCwgIC02LCAtMTMsIDEsIDMsIDUsIDEyIH0sCisgICAgICAgICAg
ICB7IC0zLCAtNiwgIC04LCAtMTIsIDIsIDUsIDcsIDExIH0sCisgICAgICAgICAgICB7IC0zLCAt
NywgIC05LCAtMTEsIDIsIDYsIDgsIDEwIH0sCisgICAgICAgICAgICB7IC00LCAtNywgIC04LCAt
MTEsIDMsIDYsIDcsIDEwIH0sCisgICAgICAgICAgICB7IC0zLCAtNSwgIC04LCAtMTEsIDIsIDQs
IDcsIDEwIH0sCisgICAgICAgICAgICB7IC0yLCAtNiwgIC04LCAtMTAsIDEsIDUsIDcsICA5IH0s
CisgICAgICAgICAgICB7IC0yLCAtNSwgIC04LCAtMTAsIDEsIDQsIDcsICA5IH0sCisgICAgICAg
ICAgICB7IC0yLCAtNCwgIC04LCAtMTAsIDEsIDMsIDcsICA5IH0sCisgICAgICAgICAgICB7IC0y
LCAtNSwgIC03LCAtMTAsIDEsIDQsIDYsICA5IH0sCisgICAgICAgICAgICB7IC0zLCAtNCwgIC03
LCAtMTAsIDIsIDMsIDYsICA5IH0sCisgICAgICAgICAgICB7IC0xLCAtMiwgIC0zLCAtMTAsIDAs
IDEsIDIsICA5IH0sCisgICAgICAgICAgICB7IC00LCAtNiwgIC04LCAgLTksIDMsIDUsIDcsICA4
IH0sCisgICAgICAgICAgICB7IC0zLCAtNSwgIC03LCAgLTksIDIsIDQsIDYsICA4IH0KKyAgICAg
ICAgfTsKKyAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9uCisKKyAgICAgICAgcmV0dXJuIG1vZGlm
aWVyVGFibGVbdS5zY2Jsay50YWJsZV9pbmRleF1bZ2V0U2luZ2xlQ2hhbm5lbEluZGV4KHgsIHkp
XTsKKyAgICB9Cit9OworCisvLyBjbGFuZy1mb3JtYXQgb2ZmCitzdGF0aWMgY29uc3QgdWludDhf
dCBEZWZhdWx0RVRDQWxwaGFWYWx1ZXNbNF1bNF0gPQoreworICAgIHsgMjU1LCAyNTUsIDI1NSwg
MjU1IH0sCisgICAgeyAyNTUsIDI1NSwgMjU1LCAyNTUgfSwKKyAgICB7IDI1NSwgMjU1LCAyNTUs
IDI1NSB9LAorICAgIHsgMjU1LCAyNTUsIDI1NSwgMjU1IH0sCit9OworLy8gY2xhbmctZm9ybWF0
IG9uCisKK3ZvaWQgTG9hZFIxMUVBQ1RvUjgoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlu
cHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAg
ICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICBib29sIGlz
U2lnbmVkKQoreworICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKKyAgICB7
CisgICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5ICs9IDQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGNvbnN0IEVUQzJCbG9jayAqc291cmNlUm93ID0KKyAgICAgICAgICAg
ICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjxFVEMyQmxvY2s+KGlucHV0LCB5IC8gNCwgeiwg
aW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIHVpbnQ4X3QgKmRl
c3RSb3cgPQorICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+
KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOworCisgICAg
ICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4ICs9IDQpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgY29uc3QgRVRDMkJsb2NrICpzb3VyY2VCbG9jayA9IHNvdXJj
ZVJvdyArICh4IC8gNCk7CisgICAgICAgICAgICAgICAgdWludDhfdCAqZGVzdFBpeGVscyAgICAg
ICAgICA9IGRlc3RSb3cgKyB4OworCisgICAgICAgICAgICAgICAgc291cmNlQmxvY2stPmRlY29k
ZUFzU2luZ2xlQ2hhbm5lbChkZXN0UGl4ZWxzLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCAxLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0Um93
UGl0Y2gsIGlzU2lnbmVkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwor
dm9pZCBMb2FkUkcxMUVBQ1RvUkc4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1
dCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBpc1NpZ25lZCkKK3sKKyAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRo
OyB6KyspCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSAr
PSA0KQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBFVEMyQmxvY2sgKnNvdXJjZVJvdyA9
CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8RVRDMkJsb2NrPihpbnB1
dCwgeSAvIDQsIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAg
ICB1aW50OF90ICpkZXN0Um93ID0KKyAgICAgICAgICAgICAgICBwcml2OjpPZmZzZXREYXRhUG9p
bnRlcjx1aW50OF90PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBp
dGNoKTsKKworICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCArPSA0
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmRlc3RQaXhlbHNSZWQg
ICAgICAgICAgPSBkZXN0Um93ICsgKHggKiAyKTsKKyAgICAgICAgICAgICAgICBjb25zdCBFVEMy
QmxvY2sgKnNvdXJjZUJsb2NrUmVkID0gc291cmNlUm93ICsgKHggLyAyKTsKKyAgICAgICAgICAg
ICAgICBzb3VyY2VCbG9ja1JlZC0+ZGVjb2RlQXNTaW5nbGVDaGFubmVsKGRlc3RQaXhlbHNSZWQs
IHgsIHksIHdpZHRoLCBoZWlnaHQsIDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRSb3dQaXRjaCwgaXNTaWduZWQpOworCisgICAg
ICAgICAgICAgICAgdWludDhfdCAqZGVzdFBpeGVsc0dyZWVuICAgICAgICAgID0gZGVzdFBpeGVs
c1JlZCArIDE7CisgICAgICAgICAgICAgICAgY29uc3QgRVRDMkJsb2NrICpzb3VyY2VCbG9ja0dy
ZWVuID0gc291cmNlQmxvY2tSZWQgKyAxOworICAgICAgICAgICAgICAgIHNvdXJjZUJsb2NrR3Jl
ZW4tPmRlY29kZUFzU2luZ2xlQ2hhbm5lbChkZXN0UGl4ZWxzR3JlZW4sIHgsIHksIHdpZHRoLCBo
ZWlnaHQsIDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG91dHB1dFJvd1BpdGNoLCBpc1NpZ25lZCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgTG9hZEVUQzJSR0I4VG9SR0JBOChzaXplX3Qgd2lkdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93
UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgcHVuY2h0aHJvdWdoQWxwaGEpCit7CisgICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0
aDsgeisrKQorICAgIHsKKyAgICAgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkg
Kz0gNCkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgRVRDMkJsb2NrICpzb3VyY2VSb3cg
PQorICAgICAgICAgICAgICAgIHByaXY6Ok9mZnNldERhdGFQb2ludGVyPEVUQzJCbG9jaz4oaW5w
dXQsIHkgLyA0LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOworICAgICAgICAg
ICAgdWludDhfdCAqZGVzdFJvdyA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBv
aW50ZXI8dWludDhfdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQ
aXRjaCk7CisKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHggKz0g
NCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdCBFVEMyQmxvY2sgKnNvdXJj
ZUJsb2NrID0gc291cmNlUm93ICsgKHggLyA0KTsKKyAgICAgICAgICAgICAgICB1aW50OF90ICpk
ZXN0UGl4ZWxzICAgICAgICAgID0gZGVzdFJvdyArICh4ICogNCk7CisKKyAgICAgICAgICAgICAg
ICBzb3VyY2VCbG9jay0+ZGVjb2RlQXNSR0IoZGVzdFBpeGVscywgeCwgeSwgd2lkdGgsIGhlaWdo
dCwgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERlZmF1bHRFVENBbHBoYVZhbHVlcywgcHVuY2h0aHJvdWdoQWxwaGEpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIExvYWRFVEMyUkdCOFRvQkMxKHNpemVf
dCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93
UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgb3V0cHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwdW5jaHRo
cm91Z2hBbHBoYSkKK3sKKyAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCisg
ICAgeworICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSArPSA0KQorICAg
ICAgICB7CisgICAgICAgICAgICBjb25zdCBFVEMyQmxvY2sgKnNvdXJjZVJvdyA9CisgICAgICAg
ICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8RVRDMkJsb2NrPihpbnB1dCwgeSAvIDQs
IHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICB1aW50OF90
ICpkZXN0Um93ID0gcHJpdjo6T2Zmc2V0RGF0YVBvaW50ZXI8dWludDhfdD4ob3V0cHV0LCB5IC8g
NCwgeiwgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0RGVwdGhQaXRjaCk7CisKKyAgICAg
ICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHggKz0gNCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBjb25zdCBFVEMyQmxvY2sgKnNvdXJjZUJsb2NrID0gc291cmNl
Um93ICsgKHggLyA0KTsKKyAgICAgICAgICAgICAgICB1aW50OF90ICpkZXN0UGl4ZWxzICAgICAg
ICAgID0gZGVzdFJvdyArICh4ICogMik7CisKKyAgICAgICAgICAgICAgICBzb3VyY2VCbG9jay0+
dHJhbnNjb2RlQXNCQzEoZGVzdFBpeGVscywgeCwgeSwgd2lkdGgsIGhlaWdodCwgRGVmYXVsdEVU
Q0FscGhhVmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdW5jaHRocm91Z2hBbHBoYSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgTG9hZEVUQzJSR0JBOFRvUkdCQTgoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlu
cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBvdXRwdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNy
Z2IpCit7CisgICAgdWludDhfdCBkZWNvZGVkQWxwaGFWYWx1ZXNbNF1bNF07CisKKyAgICBmb3Ig
KHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCisgICAgeworICAgICAgICBmb3IgKHNpemVf
dCB5ID0gMDsgeSA8IGhlaWdodDsgeSArPSA0KQorICAgICAgICB7CisgICAgICAgICAgICBjb25z
dCBFVEMyQmxvY2sgKnNvdXJjZVJvdyA9CisgICAgICAgICAgICAgICAgcHJpdjo6T2Zmc2V0RGF0
YVBvaW50ZXI8RVRDMkJsb2NrPihpbnB1dCwgeSAvIDQsIHosIGlucHV0Um93UGl0Y2gsIGlucHV0
RGVwdGhQaXRjaCk7CisgICAgICAgICAgICB1aW50OF90ICpkZXN0Um93ID0KKyAgICAgICAgICAg
ICAgICBwcml2OjpPZmZzZXREYXRhUG9pbnRlcjx1aW50OF90PihvdXRwdXQsIHksIHosIG91dHB1
dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKKworICAgICAgICAgICAgZm9yIChzaXplX3Qg
eCA9IDA7IHggPCB3aWR0aDsgeCArPSA0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGNvbnN0IEVUQzJCbG9jayAqc291cmNlQmxvY2tBbHBoYSA9IHNvdXJjZVJvdyArICh4IC8gMik7
CisgICAgICAgICAgICAgICAgc291cmNlQmxvY2tBbHBoYS0+ZGVjb2RlQXNTaW5nbGVDaGFubmVs
KAorICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4X3QgKj4oZGVjb2Rl
ZEFscGhhVmFsdWVzKSwgeCwgeSwgd2lkdGgsIGhlaWdodCwgMSwgNCwKKyAgICAgICAgICAgICAg
ICAgICAgZmFsc2UpOworCisgICAgICAgICAgICAgICAgdWludDhfdCAqZGVzdFBpeGVscyAgICAg
ICAgICAgICA9IGRlc3RSb3cgKyAoeCAqIDQpOworICAgICAgICAgICAgICAgIGNvbnN0IEVUQzJC
bG9jayAqc291cmNlQmxvY2tSR0IgPSBzb3VyY2VCbG9ja0FscGhhICsgMTsKKyAgICAgICAgICAg
ICAgICBzb3VyY2VCbG9ja1JHQi0+ZGVjb2RlQXNSR0IoZGVzdFBpeGVscywgeCwgeSwgd2lkdGgs
IGhlaWdodCwgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRlY29kZWRBbHBoYVZhbHVlcywgZmFsc2UpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorfQorCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK3ZvaWQg
TG9hZEVUQzFSR0I4VG9SR0JBOChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1
dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBp
dGNoKQoreworICAgIExvYWRFVEMyUkdCOFRvUkdCQTgod2lkdGgsIGhlaWdodCwgZGVwdGgsIGlu
cHV0LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gsIG91dHB1dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoLCBmYWxzZSk7Cit9
CisKK3ZvaWQgTG9hZEVUQzFSR0I4VG9CQzEoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVw
dGgsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0
Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQorewor
ICAgIExvYWRFVEMyUkdCOFRvQkMxKHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBpbnB1dCwgaW5wdXRS
b3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoLCBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAg
b3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gsIGZhbHNlKTsKK30KKwordm9pZCBMb2Fk
RUFDUjExVG9SOChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWln
aHQsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAg
ICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1
dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAor
ICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1
dERlcHRoUGl0Y2gpCit7CisgICAgTG9hZFIxMUVBQ1RvUjgod2lkdGgsIGhlaWdodCwgZGVwdGgs
IGlucHV0LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gsIG91dHB1dCwKKyAgICAgICAg
ICAgICAgICAgICBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCwgZmFsc2UpOworfQor
Cit2b2lkIExvYWRFQUNSMTFTVG9SOChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBp
bnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisg
ICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAg
ICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAgICBMb2FkUjExRUFDVG9SOCh3
aWR0aCwgaGVpZ2h0LCBkZXB0aCwgaW5wdXQsIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRj
aCwgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0
aFBpdGNoLCB0cnVlKTsKK30KKwordm9pZCBMb2FkRUFDUkcxMVRvUkc4KHNpemVfdCB3aWR0aCwK
KyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpp
bnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0
cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0
Y2gpCit7CisgICAgTG9hZFJHMTFFQUNUb1JHOCh3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgaW5wdXQs
IGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCwgb3V0cHV0LAorICAgICAgICAgICAgICAg
ICAgICAgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gsIGZhbHNlKTsKK30KKwordm9p
ZCBMb2FkRUFDUkcxMVNUb1JHOChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpv
dXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgTG9h
ZFJHMTFFQUNUb1JHOCh3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgaW5wdXQsIGlucHV0Um93UGl0Y2gs
IGlucHV0RGVwdGhQaXRjaCwgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgb3V0cHV0Um93
UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gsIHRydWUpOworfQorCit2b2lkIExvYWRFVEMyUkdCOFRv
UkdCQTgoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWln
aHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0
cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAgICBM
b2FkRVRDMlJHQjhUb1JHQkE4KHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBpbnB1dCwgaW5wdXRSb3dQ
aXRjaCwgaW5wdXREZXB0aFBpdGNoLCBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICBv
dXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCwgZmFsc2UpOworfQorCit2b2lkIExvYWRF
VEMyU1JHQjhUb1JHQkE4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91
dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVw
dGhQaXRjaCkKK3sKKyAgICBMb2FkRVRDMlJHQjhUb1JHQkE4KHdpZHRoLCBoZWlnaHQsIGRlcHRo
LCBpbnB1dCwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoLCBvdXRwdXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCwgZmFsc2Up
OworfQorCit2b2lkIExvYWRFVEMyUkdCOEExVG9SR0JBOChzaXplX3Qgd2lkdGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlu
dDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQ
aXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAgICBMb2FkRVRDMlJHQjhU
b1JHQkE4KHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBpbnB1dCwgaW5wdXRSb3dQaXRjaCwgaW5wdXRE
ZXB0aFBpdGNoLCBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRSb3dQaXRj
aCwgb3V0cHV0RGVwdGhQaXRjaCwgdHJ1ZSk7Cit9CisKK3ZvaWQgTG9hZEVUQzJTUkdCOEExVG9S
R0JBOChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhl
aWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRw
dXREZXB0aFBpdGNoKQoreworICAgIExvYWRFVEMyUkdCOFRvUkdCQTgod2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGlucHV0LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gsIG91dHB1dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoLCB0
cnVlKTsKK30KKwordm9pZCBMb2FkRVRDMlJHQkE4VG9SR0JBOChzaXplX3Qgd2lkdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlu
dDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1Bp
dGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgTG9hZEVUQzJSR0JBOFRvUkdC
QTgod2lkdGgsIGhlaWdodCwgZGVwdGgsIGlucHV0LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRo
UGl0Y2gsIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRSb3dQaXRjaCwg
b3V0cHV0RGVwdGhQaXRjaCwgZmFsc2UpOworfQorCit2b2lkIExvYWRFVEMyU1JHQkE4VG9TUkdC
QTgoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWln
aHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBv
dXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0
RGVwdGhQaXRjaCkKK3sKKyAgICBMb2FkRVRDMlJHQkE4VG9SR0JBOCh3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCwgaW5wdXQsIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCwgb3V0cHV0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoLCB0
cnVlKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvQXR0cmlidXRlTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQXR0cmlidXRlTWFwLmNwcAkocmV2aXNp
b24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0F0dHJp
YnV0ZU1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDExICsyOSwzMCBAQAogICAgIHJldHVy
biAobUF0dHJpYnV0ZXMuZmluZChrZXkpICE9IG1BdHRyaWJ1dGVzLmVuZCgpKSA/IGl0ZXItPnNl
Y29uZCA6IGRlZmF1bHRWYWx1ZTsKIH0KIAorRUdMaW50IEF0dHJpYnV0ZU1hcDo6Z2V0QXNJbnQo
RUdMQXR0cmliIGtleSwgRUdMaW50IGRlZmF1bHRWYWx1ZSkgY29uc3QKK3sKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RUdMaW50PigKKyAgICAgICAgZ2V0KHN0YXRpY19jYXN0PEVHTEF0dHJpYj4o
a2V5KSwgc3RhdGljX2Nhc3Q8RUdMQXR0cmliPihkZWZhdWx0VmFsdWUpKSk7Cit9CisKIGJvb2wg
QXR0cmlidXRlTWFwOjppc0VtcHR5KCkgY29uc3QKIHsKICAgICByZXR1cm4gbUF0dHJpYnV0ZXMu
ZW1wdHkoKTsKIH0KIAorc3RkOjp2ZWN0b3I8RUdMaW50PiBBdHRyaWJ1dGVNYXA6OnRvSW50VmVj
dG9yKCkgY29uc3QKK3sKKyAgICBzdGQ6OnZlY3RvcjxFR0xpbnQ+IHJldDsKKyAgICBmb3IgKGNv
bnN0IGF1dG8gJnBhaXIgOiBtQXR0cmlidXRlcykKKyAgICB7CisgICAgICAgIHJldC5wdXNoX2Jh
Y2soc3RhdGljX2Nhc3Q8RUdMaW50PihwYWlyLmZpcnN0KSk7CisgICAgICAgIHJldC5wdXNoX2Jh
Y2soc3RhdGljX2Nhc3Q8RUdMaW50PihwYWlyLnNlY29uZCkpOworICAgIH0KKyAgICByZXQucHVz
aF9iYWNrKEVHTF9OT05FKTsKKworICAgIHJldHVybiByZXQ7Cit9CisKIEF0dHJpYnV0ZU1hcDo6
Y29uc3RfaXRlcmF0b3IgQXR0cmlidXRlTWFwOjpiZWdpbigpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1BdHRyaWJ1dGVzLmJlZ2luKCk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvQXR0cmlidXRlTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL0F0dHJpYnV0ZU1hcC5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQXR0cmlidXRlTWFwLmgJKHdvcmtp
bmcgY29weSkKQEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlIDxFR0wvZWdsLmg+CiAKICNpbmNs
dWRlIDxtYXA+CisjaW5jbHVkZSA8dmVjdG9yPgogCiBuYW1lc3BhY2UgZWdsCiB7CkBAIC0yMyw3
ICsyNCw5IEBACiAgICAgdm9pZCBpbnNlcnQoRUdMQXR0cmliIGtleSwgRUdMQXR0cmliIHZhbHVl
KTsKICAgICBib29sIGNvbnRhaW5zKEVHTEF0dHJpYiBrZXkpIGNvbnN0OwogICAgIEVHTEF0dHJp
YiBnZXQoRUdMQXR0cmliIGtleSwgRUdMQXR0cmliIGRlZmF1bHRWYWx1ZSkgY29uc3Q7CisgICAg
RUdMaW50IGdldEFzSW50KEVHTEF0dHJpYiBrZXksIEVHTGludCBkZWZhdWx0VmFsdWUpIGNvbnN0
OwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OworICAgIHN0ZDo6dmVjdG9yPEVHTGludD4gdG9J
bnRWZWN0b3IoKSBjb25zdDsKIAogICAgIHR5cGVkZWYgc3RkOjptYXA8RUdMQXR0cmliLCBFR0xB
dHRyaWI+Ojpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKIApJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0JpbmFyeVN0cmVhbS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9CaW5hcnlTdHJlYW0uaAkocmV2
aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Jp
bmFyeVN0cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC05LDI1ICs5LDEzIEBACiAjaWZuZGVmIExJ
QkFOR0xFX0JJTkFSWVNUUkVBTV9IXwogI2RlZmluZSBMSUJBTkdMRV9CSU5BUllTVFJFQU1fSF8K
IAotI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCi0jaW5jbHVkZSAiY29tbW9uL21hdGh1
dGlsLmgiCi0KICNpbmNsdWRlIDxjc3RkZGVmPgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRl
IDx2ZWN0b3I+CiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
dm9pZCBTdGF0aWNBc3NlcnRJc0Z1bmRhbWVudGFsKCkKLXsKLSAgICAvLyBjKysxMSBTVEwgaXMg
bm90IGF2YWlsYWJsZSBvbiBPU1ggb3IgQW5kcm9pZAotI2lmICFkZWZpbmVkKEFOR0xFX1BMQVRG
T1JNX0FQUExFKSAmJiAhZGVmaW5lZChBTkdMRV9QTEFURk9STV9BTkRST0lEKQotICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19mdW5kYW1lbnRhbDxUPjo6dmFsdWUsICJUIG11c3QgYmUgYSBmdW5k
YW1lbnRhbCB0eXBlLiIpOwotI2Vsc2UKLSAgICB1bmlvbiB7IFQgZHVtbXk7IH0gZHVtbXk7Ci0g
ICAgc3RhdGljX2Nhc3Q8dm9pZD4oZHVtbXkpOwotI2VuZGlmCi19CisjaW5jbHVkZSAiY29tbW9u
L2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJjb21tb24vbWF0aHV0aWwuaCIKIAogbmFtZXNwYWNl
IGdsCiB7CkBAIC05Miw3ICs4MCwxMCBAQAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgaWYgKCFyeDo6SXNVbnNpZ25lZEFkZGl0aW9uU2FmZShtT2Zmc2V0LCBsZW5n
dGgpIHx8IG1PZmZzZXQgKyBsZW5ndGggPiBtTGVuZ3RoKQorICAgICAgICBhbmdsZTo6Q2hlY2tl
ZE51bWVyaWM8c2l6ZV90PiBjaGVja2VkT2Zmc2V0KG1PZmZzZXQpOworICAgICAgICBjaGVja2Vk
T2Zmc2V0ICs9IGxlbmd0aDsKKworICAgICAgICBpZiAoIWNoZWNrZWRPZmZzZXQuSXNWYWxpZCgp
IHx8IG1PZmZzZXQgKyBsZW5ndGggPiBtTGVuZ3RoKQogICAgICAgICB7CiAgICAgICAgICAgICBt
RXJyb3IgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTksMTggKzkwLDIxIEBACiAg
ICAgICAgIH0KIAogICAgICAgICB2LT5hc3NpZ24ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
ICo+KG1EYXRhKSArIG1PZmZzZXQsIGxlbmd0aCk7Ci0gICAgICAgIG1PZmZzZXQgKz0gbGVuZ3Ro
OworICAgICAgICBtT2Zmc2V0ID0gY2hlY2tlZE9mZnNldC5WYWx1ZU9yRGllKCk7CiAgICAgfQog
CiAgICAgdm9pZCBza2lwKHNpemVfdCBsZW5ndGgpCiAgICAgewotICAgICAgICBpZiAoIXJ4OjpJ
c1Vuc2lnbmVkQWRkaXRpb25TYWZlKG1PZmZzZXQsIGxlbmd0aCkgfHwgbU9mZnNldCArIGxlbmd0
aCA+IG1MZW5ndGgpCisgICAgICAgIGFuZ2xlOjpDaGVja2VkTnVtZXJpYzxzaXplX3Q+IGNoZWNr
ZWRPZmZzZXQobU9mZnNldCk7CisgICAgICAgIGNoZWNrZWRPZmZzZXQgKz0gbGVuZ3RoOworCisg
ICAgICAgIGlmICghY2hlY2tlZE9mZnNldC5Jc1ZhbGlkKCkgfHwgbU9mZnNldCArIGxlbmd0aCA+
IG1MZW5ndGgpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1FcnJvciA9IHRydWU7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBtT2Zmc2V0ICs9IGxlbmd0aDsKKyAg
ICAgICAgbU9mZnNldCA9IGNoZWNrZWRPZmZzZXQuVmFsdWVPckRpZSgpOwogICAgIH0KIAogICAg
IHNpemVfdCBvZmZzZXQoKSBjb25zdApAQCAtMTQyLDI0ICsxMzYsMjcgQEAKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KICAgICB2b2lkIHJlYWQoVCAqdiwgc2l6ZV90IG51bSkKICAgICB7Ci0g
ICAgICAgIFN0YXRpY0Fzc2VydElzRnVuZGFtZW50YWw8VD4oKTsKKyAgICAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2Z1bmRhbWVudGFsPFQ+Ojp2YWx1ZSwgIlQgbXVzdCBiZSBhIGZ1bmRhbWVu
dGFsIHR5cGUuIik7CiAKLSAgICAgICAgaWYgKCFyeDo6SXNVbnNpZ25lZE11bHRpcGxpY2F0aW9u
U2FmZShudW0sIHNpemVvZihUKSkpCisgICAgICAgIGFuZ2xlOjpDaGVja2VkTnVtZXJpYzxzaXpl
X3Q+IGNoZWNrZWRMZW5ndGgobnVtKTsKKyAgICAgICAgY2hlY2tlZExlbmd0aCAqPSBzaXplb2Yo
VCk7CisgICAgICAgIGlmICghY2hlY2tlZExlbmd0aC5Jc1ZhbGlkKCkpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIG1FcnJvciA9IHRydWU7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBzaXplX3QgbGVuZ3RoID0gbnVtICogc2l6ZW9mKFQpOworICAgICAgICBhbmds
ZTo6Q2hlY2tlZE51bWVyaWM8c2l6ZV90PiBjaGVja2VkT2Zmc2V0KG1PZmZzZXQpOworICAgICAg
ICBjaGVja2VkT2Zmc2V0ICs9IGNoZWNrZWRMZW5ndGg7CiAKLSAgICAgICAgaWYgKCFyeDo6SXNV
bnNpZ25lZEFkZGl0aW9uU2FmZShtT2Zmc2V0LCBsZW5ndGgpIHx8IG1PZmZzZXQgKyBsZW5ndGgg
PiBtTGVuZ3RoKQorICAgICAgICBpZiAoIWNoZWNrZWRPZmZzZXQuSXNWYWxpZCgpIHx8IGNoZWNr
ZWRPZmZzZXQuVmFsdWVPckRpZSgpID4gbUxlbmd0aCkKICAgICAgICAgewogICAgICAgICAgICAg
bUVycm9yID0gdHJ1ZTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IG1lbWNweSh2LCBtRGF0YSArIG1PZmZzZXQsIGxlbmd0aCk7Ci0gICAgICAgIG1PZmZzZXQgKz0g
bGVuZ3RoOworICAgICAgICBtZW1jcHkodiwgbURhdGEgKyBtT2Zmc2V0LCBjaGVja2VkTGVuZ3Ro
LlZhbHVlT3JEaWUoKSk7CisgICAgICAgIG1PZmZzZXQgPSBjaGVja2VkT2Zmc2V0LlZhbHVlT3JE
aWUoKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTE4MSwxMSArMTc4
LDI1IEBACiAgICAgdGVtcGxhdGUgPGNsYXNzIEludFQ+CiAgICAgdm9pZCB3cml0ZUludChJbnRU
IHBhcmFtKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHJ4OjpJc0ludGVnZXJDYXN0U2FmZTxpbnQ+
KHBhcmFtKSk7CisgICAgICAgIEFTU0VSVChhbmdsZTo6SXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmlj
VHlwZTxpbnQ+KHBhcmFtKSk7CiAgICAgICAgIGludCBpbnRWYWx1ZSA9IHN0YXRpY19jYXN0PGlu
dD4ocGFyYW0pOwogICAgICAgICB3cml0ZSgmaW50VmFsdWUsIDEpOwogICAgIH0KIAorICAgIC8v
IFNwZWNpYWxpemVkIHdyaXRlSW50IGZvciB2YWx1ZXMgdGhhdCBjYW4gYWxzbyBiZSBleGFjdGx5
IC0xLgorICAgIHRlbXBsYXRlIDxjbGFzcyBVaW50VD4KKyAgICB2b2lkIHdyaXRlSW50T3JOZWdP
bmUoVWludFQgcGFyYW0pCisgICAgeworICAgICAgICBpZiAocGFyYW0gPT0gc3RhdGljX2Nhc3Q8
VWludFQ+KC0xKSkKKyAgICAgICAgeworICAgICAgICAgICAgd3JpdGVJbnQoLTEpOworICAgICAg
ICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgd3JpdGVJbnQocGFyYW0p
OworICAgICAgICB9CisgICAgfQorCiAgICAgdm9pZCB3cml0ZVN0cmluZyhjb25zdCBzdGQ6OnN0
cmluZyAmdikKICAgICB7CiAgICAgICAgIHdyaXRlSW50KHYubGVuZ3RoKCkpOwpAQCAtMjEzLDcg
KzIyNCw3IEBACiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCB3cml0ZShjb25z
dCBUICp2LCBzaXplX3QgbnVtKQogICAgIHsKLSAgICAgICAgU3RhdGljQXNzZXJ0SXNGdW5kYW1l
bnRhbDxUPigpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZnVuZGFtZW50YWw8VD46
OnZhbHVlLCAiVCBtdXN0IGJlIGEgZnVuZGFtZW50YWwgdHlwZS4iKTsKICAgICAgICAgY29uc3Qg
Y2hhciAqYXNCeXRlcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHYpOwogICAgICAg
ICBtRGF0YS5pbnNlcnQobURhdGEuZW5kKCksIGFzQnl0ZXMsIGFzQnl0ZXMgKyBudW0gKiBzaXpl
b2YoVCkpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9CdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9CdWZmZXIuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvQnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAsNyAr
MTAsNiBAQAogCiAjaW5jbHVkZSAibGliQU5HTEUvQnVmZmVyLmgiCiAjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvQnVmZmVySW1wbC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1Jl
bmRlcmVyLmgiCiAKIG5hbWVzcGFjZSBnbAogewpAQCAtNDUsNDUgKzQ0LDMzIEBACiAgICAgcmV0
dXJuIG1MYWJlbDsKIH0KIAotRXJyb3IgQnVmZmVyOjpidWZmZXJEYXRhKGNvbnN0IHZvaWQgKmRh
dGEsIEdMc2l6ZWlwdHIgc2l6ZSwgR0xlbnVtIHVzYWdlKQorRXJyb3IgQnVmZmVyOjpidWZmZXJE
YXRhKEdMZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQgKmRhdGEsIEdMc2l6ZWlwdHIgc2l6ZSwgR0xl
bnVtIHVzYWdlKQogewotICAgIGdsOjpFcnJvciBlcnJvciA9IG1CdWZmZXItPnNldERhdGEoZGF0
YSwgc2l6ZSwgdXNhZ2UpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAg
ICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShtQnVmZmVyLT5zZXREYXRhKHRh
cmdldCwgZGF0YSwgc2l6ZSwgdXNhZ2UpKTsKIAogICAgIG1JbmRleFJhbmdlQ2FjaGUuY2xlYXIo
KTsKICAgICBtVXNhZ2UgPSB1c2FnZTsKICAgICBtU2l6ZSA9IHNpemU7CiAKLSAgICByZXR1cm4g
ZXJyb3I7CisgICAgcmV0dXJuIE5vRXJyb3IoKTsKIH0KIAotRXJyb3IgQnVmZmVyOjpidWZmZXJT
dWJEYXRhKGNvbnN0IHZvaWQgKmRhdGEsIEdMc2l6ZWlwdHIgc2l6ZSwgR0xpbnRwdHIgb2Zmc2V0
KQorRXJyb3IgQnVmZmVyOjpidWZmZXJTdWJEYXRhKEdMZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQg
KmRhdGEsIEdMc2l6ZWlwdHIgc2l6ZSwgR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIGdsOjpFcnJv
ciBlcnJvciA9IG1CdWZmZXItPnNldFN1YkRhdGEoZGF0YSwgc2l6ZSwgb2Zmc2V0KTsKLSAgICBp
ZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0K
KyAgICBBTkdMRV9UUlkobUJ1ZmZlci0+c2V0U3ViRGF0YSh0YXJnZXQsIGRhdGEsIHNpemUsIG9m
ZnNldCkpOwogCiAgICAgbUluZGV4UmFuZ2VDYWNoZS5pbnZhbGlkYXRlUmFuZ2Uoc3RhdGljX2Nh
c3Q8dW5zaWduZWQgaW50PihvZmZzZXQpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHNpemUp
KTsKIAotICAgIHJldHVybiBlcnJvcjsKKyAgICByZXR1cm4gTm9FcnJvcigpOwogfQogCiBFcnJv
ciBCdWZmZXI6OmNvcHlCdWZmZXJTdWJEYXRhKEJ1ZmZlciogc291cmNlLCBHTGludHB0ciBzb3Vy
Y2VPZmZzZXQsIEdMaW50cHRyIGRlc3RPZmZzZXQsIEdMc2l6ZWlwdHIgc2l6ZSkKIHsKLSAgICBn
bDo6RXJyb3IgZXJyb3IgPSBtQnVmZmVyLT5jb3B5U3ViRGF0YShzb3VyY2UtPmdldEltcGxlbWVu
dGF0aW9uKCksIHNvdXJjZU9mZnNldCwgZGVzdE9mZnNldCwgc2l6ZSk7Ci0gICAgaWYgKGVycm9y
LmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5H
TEVfVFJZKG1CdWZmZXItPmNvcHlTdWJEYXRhKHNvdXJjZS0+Z2V0SW1wbGVtZW50YXRpb24oKSwg
c291cmNlT2Zmc2V0LCBkZXN0T2Zmc2V0LCBzaXplKSk7CiAKICAgICBtSW5kZXhSYW5nZUNhY2hl
LmludmFsaWRhdGVSYW5nZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGRlc3RPZmZzZXQpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHNpemUpKTsKIAotICAgIHJldHVybiBlcnJvcjsKKyAg
ICByZXR1cm4gTm9FcnJvcigpOwogfQogCiBFcnJvciBCdWZmZXI6Om1hcChHTGVudW0gYWNjZXNz
KQpAQCAtMTc5LDE4ICsxNjYsMTQgQEAKIHsKICAgICBpZiAobUluZGV4UmFuZ2VDYWNoZS5maW5k
UmFuZ2UodHlwZSwgb2Zmc2V0LCBjb3VudCwgcHJpbWl0aXZlUmVzdGFydEVuYWJsZWQsIG91dFJh
bmdlKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAg
ICAgICByZXR1cm4gTm9FcnJvcigpOwogICAgIH0KIAotICAgIEVycm9yIGVycm9yID0gbUJ1ZmZl
ci0+Z2V0SW5kZXhSYW5nZSh0eXBlLCBvZmZzZXQsIGNvdW50LCBwcmltaXRpdmVSZXN0YXJ0RW5h
YmxlZCwgb3V0UmFuZ2UpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAg
ICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShtQnVmZmVyLT5nZXRJbmRleFJh
bmdlKHR5cGUsIG9mZnNldCwgY291bnQsIHByaW1pdGl2ZVJlc3RhcnRFbmFibGVkLCBvdXRSYW5n
ZSkpOwogCiAgICAgbUluZGV4UmFuZ2VDYWNoZS5hZGRSYW5nZSh0eXBlLCBvZmZzZXQsIGNvdW50
LCBwcmltaXRpdmVSZXN0YXJ0RW5hYmxlZCwgKm91dFJhbmdlKTsKIAotICAgIHJldHVybiBFcnJv
cihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIE5vRXJyb3IoKTsKIH0KIAotfQorfSAgLy8gbmFt
ZXNwYWNlIGdsCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQnVm
ZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L0J1ZmZlci5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDggQEAKICAg
ICB2b2lkIHNldExhYmVsKGNvbnN0IHN0ZDo6c3RyaW5nICZsYWJlbCkgb3ZlcnJpZGU7CiAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJmdldExhYmVsKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBFcnJv
ciBidWZmZXJEYXRhKGNvbnN0IHZvaWQgKmRhdGEsIEdMc2l6ZWlwdHIgc2l6ZSwgR0xlbnVtIHVz
YWdlKTsKLSAgICBFcnJvciBidWZmZXJTdWJEYXRhKGNvbnN0IHZvaWQgKmRhdGEsIEdMc2l6ZWlw
dHIgc2l6ZSwgR0xpbnRwdHIgb2Zmc2V0KTsKKyAgICBFcnJvciBidWZmZXJEYXRhKEdMZW51bSB0
YXJnZXQsIGNvbnN0IHZvaWQgKmRhdGEsIEdMc2l6ZWlwdHIgc2l6ZSwgR0xlbnVtIHVzYWdlKTsK
KyAgICBFcnJvciBidWZmZXJTdWJEYXRhKEdMZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQgKmRhdGEs
IEdMc2l6ZWlwdHIgc2l6ZSwgR0xpbnRwdHIgb2Zmc2V0KTsKICAgICBFcnJvciBjb3B5QnVmZmVy
U3ViRGF0YShCdWZmZXIqIHNvdXJjZSwgR0xpbnRwdHIgc291cmNlT2Zmc2V0LCBHTGludHB0ciBk
ZXN0T2Zmc2V0LCBHTHNpemVpcHRyIHNpemUpOwogICAgIEVycm9yIG1hcChHTGVudW0gYWNjZXNz
KTsKICAgICBFcnJvciBtYXBSYW5nZShHTGludHB0ciBvZmZzZXQsIEdMc2l6ZWlwdHIgbGVuZ3Ro
LCBHTGJpdGZpZWxkIGFjY2Vzcyk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvQ2Fwcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL0NhcHMuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ2Fwcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDkg
KzcwLDE3IEBACiAgICAgfQogfQogCit2b2lkIFRleHR1cmVDYXBzTWFwOjpjbGVhcigpCit7Cisg
ICAgbUNhcHNNYXAuY2xlYXIoKTsKK30KKwogY29uc3QgVGV4dHVyZUNhcHMgJlRleHR1cmVDYXBz
TWFwOjpnZXQoR0xlbnVtIGludGVybmFsRm9ybWF0KSBjb25zdAogewotICAgIHN0YXRpYyBhdXRv
JiBkZWZhdWx0VW5zdXBwb3J0ZWRUZXh0dXJlID0gKm5ldyBUZXh0dXJlQ2FwczsKKyNwcmFnbWEg
R0NDIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2V4
aXQtdGltZS1kZXN0cnVjdG9ycyIKKyAgICBzdGF0aWMgVGV4dHVyZUNhcHMgZGVmYXVsdFVuc3Vw
cG9ydGVkVGV4dHVyZTsKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCiAgICAgSW50ZXJuYWxG
b3JtYXRUb0NhcHNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtQ2Fwc01hcC5maW5kKGludGVy
bmFsRm9ybWF0KTsKICAgICByZXR1cm4gKGl0ZXIgIT0gbUNhcHNNYXAuZW5kKCkpID8gaXRlci0+
c2Vjb25kIDogZGVmYXVsdFVuc3VwcG9ydGVkVGV4dHVyZTsKIH0KQEAgLTE1OCw3ICsxNjYsMTgg
QEAKICAgICAgIG1heExhYmVsTGVuZ3RoKDApLAogICAgICAgbm9FcnJvcihmYWxzZSksCiAgICAg
ICBsb3NzeUVUQ0RlY29kZShmYWxzZSksCi0gICAgICBjb2xvckJ1ZmZlckZsb2F0KGZhbHNlKQor
ICAgICAgYmluZFVuaWZvcm1Mb2NhdGlvbihmYWxzZSksCisgICAgICBzeW5jUXVlcnkoZmFsc2Up
LAorICAgICAgY29weVRleHR1cmUoZmFsc2UpLAorICAgICAgY29weUNvbXByZXNzZWRUZXh0dXJl
KGZhbHNlKSwKKyAgICAgIHdlYmdsQ29tcGF0aWJpbGl0eShmYWxzZSksCisgICAgICBiaW5kR2Vu
ZXJhdGVzUmVzb3VyY2UoZmFsc2UpLAorICAgICAgcm9idXN0Q2xpZW50TWVtb3J5KGZhbHNlKSwK
KyAgICAgIGNvbG9yQnVmZmVyRmxvYXQoZmFsc2UpLAorICAgICAgbXVsdGlzYW1wbGVDb21wYXRp
YmlsaXR5KGZhbHNlKSwKKyAgICAgIGZyYW1lYnVmZmVyTWl4ZWRTYW1wbGVzKGZhbHNlKSwKKyAg
ICAgIHRleHR1cmVOb3JtMTYoZmFsc2UpLAorICAgICAgcGF0aFJlbmRlcmluZyhmYWxzZSkKIHsK
IH0KIApAQCAtMTY2LDcyICsxODUsMTQgQEAKIHsKICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmlu
Zz4gZXh0ZW5zaW9uU3RyaW5nczsKIAotICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKLSAgICAvLyAg
ICAgICAgICAgICAgICAgICB8IEV4dGVuc2lvbiBuYW1lICAgICAgICAgICAgICAgICAgICAgICB8
IFN1cHBvcnRlZCBmbGFnICAgICAgICAgICB8IE91dHB1dCB2ZWN0b3IgICB8Ci0gICAgSW5zZXJ0
RXh0ZW5zaW9uU3RyaW5nKCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50IiwgICAgICAgICAgIGVs
ZW1lbnRJbmRleFVpbnQsICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRF
eHRlbnNpb25TdHJpbmcoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIsICAgICAgICAgcGFj
a2VkRGVwdGhTdGVuY2lsLCAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4
dGVuc2lvblN0cmluZygiR0xfT0VTX2dldF9wcm9ncmFtX2JpbmFyeSIsICAgICAgICAgICBnZXRQ
cm9ncmFtQmluYXJ5LCAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0
ZW5zaW9uU3RyaW5nKCJHTF9PRVNfcmdiOF9yZ2JhOCIsICAgICAgICAgICAgICAgICAgIHJnYjhy
Z2JhOCwgICAgICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRl
bnNpb25TdHJpbmcoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIsICAgICAgdGV4dHVy
ZUZvcm1hdEJHUkE4ODg4LCAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVu
c2lvblN0cmluZygiR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEiLCAgICAgICAgICAgICByZWFkRm9y
bWF0QkdSQSwgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5z
aW9uU3RyaW5nKCJHTF9OVl9waXhlbF9idWZmZXJfb2JqZWN0IiwgICAgICAgICAgIHBpeGVsQnVm
ZmVyT2JqZWN0LCAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNp
b25TdHJpbmcoIkdMX09FU19tYXBidWZmZXIiLCAgICAgICAgICAgICAgICAgICAgbWFwQnVmZmVy
LCAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lv
blN0cmluZygiR0xfRVhUX21hcF9idWZmZXJfcmFuZ2UiLCAgICAgICAgICAgICBtYXBCdWZmZXJS
YW5nZSwgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9u
U3RyaW5nKCJHTF9FWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiLCAgICAgIGNvbG9yQnVmZmVy
SGFsZkZsb2F0LCAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25T
dHJpbmcoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiLCAgICAgICAgICAgdGV4dHVyZUhhbGZG
bG9hdCwgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0
cmluZygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiLCAgICB0ZXh0dXJlSGFsZkZs
b2F0TGluZWFyLCAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3Ry
aW5nKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIsICAgICAgICAgICAgICAgIHRleHR1cmVGbG9hdCwg
ICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJp
bmcoIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIsICAgICAgICAgdGV4dHVyZUZsb2F0TGlu
ZWFyLCAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmlu
ZygiR0xfRVhUX3RleHR1cmVfcmciLCAgICAgICAgICAgICAgICAgICB0ZXh0dXJlUkcsICAgICAg
ICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5n
KCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIiwgICAgIHRleHR1cmVDb21wcmVzc2lv
bkRYVDEsICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmco
IkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MyIsICAgdGV4dHVyZUNvbXByZXNzaW9u
RFhUMywgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygi
R0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1IiwgICB0ZXh0dXJlQ29tcHJlc3Npb25E
WFQ1LCAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJH
TF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2hkciIsIHRleHR1cmVDb21wcmVzc2lvbkFT
VENIRFIsICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdM
X0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiwgdGV4dHVyZUNvbXByZXNzaW9uQVNU
Q0xEUiwgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xf
T0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiLCBjb21wcmVzc2VkRVRDMVJHQjhUZXh0
dXJlLCAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9F
WFRfc1JHQiIsICAgICAgICAgICAgICAgICAgICAgICAgIHNSR0IsICAgICAgICAgICAgICAgICAg
ICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX0FO
R0xFX2RlcHRoX3RleHR1cmUiLCAgICAgICAgICAgICAgZGVwdGhUZXh0dXJlcywgICAgICAgICAg
ICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfT0VT
X2RlcHRoMzIiLCAgICAgICAgICAgICAgICAgICAgICBkZXB0aDMyLCAgICAgICAgICAgICAgICAg
ICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9FWFRf
dGV4dHVyZV9zdG9yYWdlIiwgICAgICAgICAgICAgIHRleHR1cmVTdG9yYWdlLCAgICAgICAgICAg
ICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX09FU190
ZXh0dXJlX25wb3QiLCAgICAgICAgICAgICAgICAgdGV4dHVyZU5QT1QsICAgICAgICAgICAgICAg
JmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfRVhUX2Ry
YXdfYnVmZmVycyIsICAgICAgICAgICAgICAgICBkcmF3QnVmZmVycywgICAgICAgICAgICAgICAm
ZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9FWFRfdGV4
dHVyZV9maWx0ZXJfYW5pc290cm9waWMiLCAgIHRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYywgICZl
eHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX0VYVF9vY2Ns
dXNpb25fcXVlcnlfYm9vbGVhbiIsICAgICAgb2NjbHVzaW9uUXVlcnlCb29sZWFuLCAgICAgJmV4
dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfTlZfZmVuY2Ui
LCAgICAgICAgICAgICAgICAgICAgICAgICBmZW5jZSwgICAgICAgICAgICAgICAgICAgICAmZXh0
ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9BTkdMRV90aW1l
cl9xdWVyeSIsICAgICAgICAgICAgICAgIHRpbWVyUXVlcnksICAgICAgICAgICAgICAgICZleHRl
bnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX0VYVF9kaXNqb2lu
dF90aW1lcl9xdWVyeSIsICAgICAgICAgZGlzam9pbnRUaW1lclF1ZXJ5LCAgICAgICAgJmV4dGVu
c2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfRVhUX3JvYnVzdG5l
c3MiLCAgICAgICAgICAgICAgICAgICByb2J1c3RuZXNzLCAgICAgICAgICAgICAgICAmZXh0ZW5z
aW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9FWFRfYmxlbmRfbWlu
bWF4IiwgICAgICAgICAgICAgICAgIGJsZW5kTWluTWF4LCAgICAgICAgICAgICAgICZleHRlbnNp
b25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX0FOR0xFX2ZyYW1lYnVm
ZmVyX2JsaXQiLCAgICAgICAgICAgZnJhbWVidWZmZXJCbGl0LCAgICAgICAgICAgJmV4dGVuc2lv
blN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfQU5HTEVfZnJhbWVidWZm
ZXJfbXVsdGlzYW1wbGUiLCAgICBmcmFtZWJ1ZmZlck11bHRpc2FtcGxlLCAgICAmZXh0ZW5zaW9u
U3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9BTkdMRV9pbnN0YW5jZWRf
YXJyYXlzIiwgICAgICAgICAgIGluc3RhbmNlZEFycmF5cywgICAgICAgICAgICZleHRlbnNpb25T
dHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX0FOR0xFX3BhY2tfcmV2ZXJz
ZV9yb3dfb3JkZXIiLCAgICAgcGFja1JldmVyc2VSb3dPcmRlciwgICAgICAgJmV4dGVuc2lvblN0
cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfT0VTX3N0YW5kYXJkX2Rlcml2
YXRpdmVzIiwgICAgICAgICBzdGFuZGFyZERlcml2YXRpdmVzLCAgICAgICAmZXh0ZW5zaW9uU3Ry
aW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVf
bG9kIiwgICAgICAgICAgIHNoYWRlclRleHR1cmVMT0QsICAgICAgICAgICZleHRlbnNpb25TdHJp
bmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX05WX3NoYWRlcl9mcmFtZWJ1ZmZl
cl9mZXRjaCIsICAgICAgTlZzaGFkZXJGcmFtZWJ1ZmZlckZldGNoLCAgJmV4dGVuc2lvblN0cmlu
Z3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfQVJNX3NoYWRlcl9mcmFtZWJ1ZmZl
cl9mZXRjaCIsICAgICBBUk1zaGFkZXJGcmFtZWJ1ZmZlckZldGNoLCAmZXh0ZW5zaW9uU3RyaW5n
cyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9FWFRfc2hhZGVyX2ZyYW1lYnVmZmVy
X2ZldGNoIiwgICAgIHNoYWRlckZyYW1lYnVmZmVyRmV0Y2gsICAgICZleHRlbnNpb25TdHJpbmdz
KTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX0VYVF9mcmFnX2RlcHRoIiwgICAgICAg
ICAgICAgICAgICAgZnJhZ0RlcHRoLCAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3Mp
OwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfQU5HTEVfdGV4dHVyZV91c2FnZSIsICAg
ICAgICAgICAgICB0ZXh0dXJlVXNhZ2UsICAgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7
Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9z
b3VyY2UiLCAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UsICAgICZleHRlbnNpb25TdHJpbmdzKTsK
LSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX09FU19mYm9fcmVuZGVyX21pcG1hcCIsICAg
ICAgICAgICAgZmJvUmVuZGVyTWlwbWFwLCAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwot
ICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfRVhUX2Rpc2NhcmRfZnJhbWVidWZmZXIiLCAg
ICAgICAgICBkaXNjYXJkRnJhbWVidWZmZXIsICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0g
ICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9FWFRfZGVidWdfbWFya2VyIiwgICAgICAgICAg
ICAgICAgIGRlYnVnTWFya2VyLCAgICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAg
ICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX09FU19FR0xfaW1hZ2UiLCAgICAgICAgICAgICAg
ICAgICAgZWdsSW1hZ2UsICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAg
IEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIsICAgICAg
ICAgICBlZ2xJbWFnZUV4dGVybmFsLCAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAg
SW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vzc2wzIiwg
ICAgIGVnbEltYWdlRXh0ZXJuYWxFc3NsMywgICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJ
bnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX05WX0VHTF9zdHJlYW1fY29uc3VtZXJfZXh0ZXJuYWwi
LCAgZWdsU3RyZWFtQ29uc3VtZXJFeHRlcm5hbCwgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIElu
c2VydEV4dGVuc2lvblN0cmluZygiR0xfRVhUX3VucGFja19zdWJpbWFnZSIsICAgICAgICAgICAg
ICB1bnBhY2tTdWJpbWFnZSwgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5z
ZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9OVl9wYWNrX3N1YmltYWdlIiwgICAgICAgICAgICAgICAg
IHBhY2tTdWJpbWFnZSwgICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNl
cnRFeHRlbnNpb25TdHJpbmcoIkdMX0VYVF9jb2xvcl9idWZmZXJfZmxvYXQiLCAgICAgICAgICAg
Y29sb3JCdWZmZXJGbG9hdCwgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2Vy
dEV4dGVuc2lvblN0cmluZygiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiLCAgICAgICAgICB2
ZXJ0ZXhBcnJheU9iamVjdCwgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0
RXh0ZW5zaW9uU3RyaW5nKCJHTF9LSFJfZGVidWciLCAgICAgICAgICAgICAgICAgICAgICAgIGRl
YnVnLCAgICAgICAgICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICAvLyBUT0RP
KGptYWRpbGwpOiBFbmFibGUgdGhpcyB3aGVuIGNvbXBsZXRlLgotICAgIC8vSW5zZXJ0RXh0ZW5z
aW9uU3RyaW5nKCJHTF9LSFJfbm9fZXJyb3IiLCAgICAgICAgICAgICAgICAgICAgIG5vRXJyb3Is
ICAgICAgICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKKyAgICBmb3IgKGNvbnN0IGF1
dG8gJmV4dGVuc2lvbkluZm8gOiBHZXRFeHRlbnNpb25JbmZvTWFwKCkpCisgICAgeworICAgICAg
ICBpZiAodGhpcy0+KihleHRlbnNpb25JbmZvLnNlY29uZC5FeHRlbnNpb25zTWVtYmVyKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgZXh0ZW5zaW9uU3RyaW5ncy5wdXNoX2JhY2soZXh0ZW5zaW9u
SW5mby5maXJzdCk7CisgICAgICAgIH0KKyAgICB9CiAKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJp
bmcoIkdMX0FOR0xFX2xvc3N5X2V0Y19kZWNvZGUiLCAgICAgICAgICAgbG9zc3lFVENEZWNvZGUs
ICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIC8vIGNsYW5nLWZvcm1hdCBvbgot
CiAgICAgcmV0dXJuIGV4dGVuc2lvblN0cmluZ3M7CiB9CiAKQEAgLTQ5NSw2ICs0NTYsMjggQEAK
ICAgICByZXR1cm4gR2V0Rm9ybWF0U3VwcG9ydCh0ZXh0dXJlQ2FwcywgcmVxdWlyZWRGb3JtYXRz
LCB0cnVlLCBmYWxzZSwgdHJ1ZSk7CiB9CiAKKy8vIENoZWNrIGZvciBHTF9FWFRfdGV4dHVyZV9u
b3JtMTYKK3N0YXRpYyBib29sIERldGVybWluZVRleHR1cmVOb3JtMTZTdXBwb3J0KGNvbnN0IFRl
eHR1cmVDYXBzTWFwICZ0ZXh0dXJlQ2FwcykKK3sKKyAgICBzdGQ6OnZlY3RvcjxHTGVudW0+IHJl
cXVpcmVkRmlsdGVyRm9ybWF0czsKKyAgICByZXF1aXJlZEZpbHRlckZvcm1hdHMucHVzaF9iYWNr
KEdMX1IxNl9FWFQpOworICAgIHJlcXVpcmVkRmlsdGVyRm9ybWF0cy5wdXNoX2JhY2soR0xfUkcx
Nl9FWFQpOworICAgIHJlcXVpcmVkRmlsdGVyRm9ybWF0cy5wdXNoX2JhY2soR0xfUkdCMTZfRVhU
KTsKKyAgICByZXF1aXJlZEZpbHRlckZvcm1hdHMucHVzaF9iYWNrKEdMX1JHQkExNl9FWFQpOwor
ICAgIHJlcXVpcmVkRmlsdGVyRm9ybWF0cy5wdXNoX2JhY2soR0xfUjE2X1NOT1JNX0VYVCk7Cisg
ICAgcmVxdWlyZWRGaWx0ZXJGb3JtYXRzLnB1c2hfYmFjayhHTF9SRzE2X1NOT1JNX0VYVCk7Cisg
ICAgcmVxdWlyZWRGaWx0ZXJGb3JtYXRzLnB1c2hfYmFjayhHTF9SR0IxNl9TTk9STV9FWFQpOwor
ICAgIHJlcXVpcmVkRmlsdGVyRm9ybWF0cy5wdXNoX2JhY2soR0xfUkdCQTE2X1NOT1JNX0VYVCk7
CisKKyAgICBzdGQ6OnZlY3RvcjxHTGVudW0+IHJlcXVpcmVkUmVuZGVyRm9ybWF0czsKKyAgICBy
ZXF1aXJlZEZpbHRlckZvcm1hdHMucHVzaF9iYWNrKEdMX1IxNl9FWFQpOworICAgIHJlcXVpcmVk
RmlsdGVyRm9ybWF0cy5wdXNoX2JhY2soR0xfUkcxNl9FWFQpOworICAgIHJlcXVpcmVkRmlsdGVy
Rm9ybWF0cy5wdXNoX2JhY2soR0xfUkdCQTE2X0VYVCk7CisKKyAgICByZXR1cm4gR2V0Rm9ybWF0
U3VwcG9ydCh0ZXh0dXJlQ2FwcywgcmVxdWlyZWRGaWx0ZXJGb3JtYXRzLCB0cnVlLCB0cnVlLCBm
YWxzZSkgJiYKKyAgICAgICAgICAgR2V0Rm9ybWF0U3VwcG9ydCh0ZXh0dXJlQ2FwcywgcmVxdWly
ZWRSZW5kZXJGb3JtYXRzLCB0cnVlLCBmYWxzZSwgdHJ1ZSk7Cit9CisKIHZvaWQgRXh0ZW5zaW9u
czo6c2V0VGV4dHVyZUV4dGVuc2lvblN1cHBvcnQoY29uc3QgVGV4dHVyZUNhcHNNYXAgJnRleHR1
cmVDYXBzKQogewogICAgIHBhY2tlZERlcHRoU3RlbmNpbCA9IERldGVybWluZVBhY2tlZERlcHRo
U3RlbmNpbFN1cHBvcnQodGV4dHVyZUNhcHMpOwpAQCAtNTE2LDggKzQ5OSwxMTEgQEAKICAgICBk
ZXB0aFRleHR1cmVzID0gRGV0ZXJtaW5lRGVwdGhUZXh0dXJlU3VwcG9ydCh0ZXh0dXJlQ2Fwcyk7
CiAgICAgZGVwdGgzMiAgICAgICAgICAgICAgICAgICA9IERldGVybWluZURlcHRoMzJTdXBwb3J0
KHRleHR1cmVDYXBzKTsKICAgICBjb2xvckJ1ZmZlckZsb2F0ID0gRGV0ZXJtaW5lQ29sb3JCdWZm
ZXJGbG9hdFN1cHBvcnQodGV4dHVyZUNhcHMpOworICAgIHRleHR1cmVOb3JtMTYgICAgICAgICAg
ICAgPSBEZXRlcm1pbmVUZXh0dXJlTm9ybTE2U3VwcG9ydCh0ZXh0dXJlQ2Fwcyk7CiB9CiAKK2Nv
bnN0IEV4dGVuc2lvbkluZm9NYXAgJkdldEV4dGVuc2lvbkluZm9NYXAoKQoreworICAgIGF1dG8g
YnVpbGRFeHRlbnNpb25JbmZvTWFwID0gW10oKSB7CisgICAgICAgIGF1dG8gZW5hYmxlYWJsZUV4
dGVuc2lvbiA9IFtdKEV4dGVuc2lvbkluZm86OkV4dGVuc2lvbkJvb2wgbWVtYmVyKSB7CisgICAg
ICAgICAgICBFeHRlbnNpb25JbmZvIGluZm87CisgICAgICAgICAgICBpbmZvLkVuYWJsZWFibGUg
ICAgICAgPSB0cnVlOworICAgICAgICAgICAgaW5mby5FeHRlbnNpb25zTWVtYmVyID0gbWVtYmVy
OworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH07CisKKyAgICAgICAgYXV0byBl
c09ubHlFeHRlbnNpb24gPSBbXShFeHRlbnNpb25JbmZvOjpFeHRlbnNpb25Cb29sIG1lbWJlcikg
eworICAgICAgICAgICAgRXh0ZW5zaW9uSW5mbyBpbmZvOworICAgICAgICAgICAgaW5mby5FeHRl
bnNpb25zTWVtYmVyID0gbWVtYmVyOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAg
IH07CisKKyAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgorICAgICAgICBFeHRlbnNpb25JbmZv
TWFwIG1hcDsKKyAgICAgICAgbWFwWyJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50Il0gPSBlbmFi
bGVhYmxlRXh0ZW5zaW9uKCZFeHRlbnNpb25zOjplbGVtZW50SW5kZXhVaW50KTsKKyAgICAgICAg
bWFwWyJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0
ZW5zaW9uczo6cGFja2VkRGVwdGhTdGVuY2lsKTsKKyAgICAgICAgbWFwWyJHTF9PRVNfZ2V0X3By
b2dyYW1fYmluYXJ5Il0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OmdldFByb2dyYW1C
aW5hcnkpOworICAgICAgICBtYXBbIkdMX09FU19yZ2I4X3JnYmE4Il0gPSBlc09ubHlFeHRlbnNp
b24oJkV4dGVuc2lvbnM6OnJnYjhyZ2JhOCk7CisgICAgICAgIG1hcFsiR0xfRVhUX3RleHR1cmVf
Zm9ybWF0X0JHUkE4ODg4Il0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnRleHR1cmVG
b3JtYXRCR1JBODg4OCk7CisgICAgICAgIG1hcFsiR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEiXSA9
IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6cmVhZEZvcm1hdEJHUkEpOworICAgICAgICBt
YXBbIkdMX05WX3BpeGVsX2J1ZmZlcl9vYmplY3QiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5z
aW9uczo6cGl4ZWxCdWZmZXJPYmplY3QpOworICAgICAgICBtYXBbIkdMX09FU19tYXBidWZmZXIi
XSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6bWFwQnVmZmVyKTsKKyAgICAgICAgbWFw
WyJHTF9FWFRfbWFwX2J1ZmZlcl9yYW5nZSJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25z
OjptYXBCdWZmZXJSYW5nZSk7CisgICAgICAgIG1hcFsiR0xfRVhUX2NvbG9yX2J1ZmZlcl9oYWxm
X2Zsb2F0Il0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OmNvbG9yQnVmZmVySGFsZkZs
b2F0KTsKKyAgICAgICAgbWFwWyJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Il0gPSBlc09ubHlF
eHRlbnNpb24oJkV4dGVuc2lvbnM6OnRleHR1cmVIYWxmRmxvYXQpOworICAgICAgICBtYXBbIkdM
X09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIl0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVu
c2lvbnM6OnRleHR1cmVIYWxmRmxvYXRMaW5lYXIpOworICAgICAgICBtYXBbIkdMX09FU190ZXh0
dXJlX2Zsb2F0Il0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnRleHR1cmVGbG9hdCk7
CisgICAgICAgIG1hcFsiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIl0gPSBlc09ubHlFeHRl
bnNpb24oJkV4dGVuc2lvbnM6OnRleHR1cmVGbG9hdExpbmVhcik7CisgICAgICAgIG1hcFsiR0xf
RVhUX3RleHR1cmVfcmciXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6dGV4dHVyZVJH
KTsKKyAgICAgICAgbWFwWyJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIl0gPSBlc09u
bHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lvbkRYVDEpOworICAgICAg
ICBtYXBbIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MyJdID0gZXNPbmx5RXh0ZW5z
aW9uKCZFeHRlbnNpb25zOjp0ZXh0dXJlQ29tcHJlc3Npb25EWFQzKTsKKyAgICAgICAgbWFwWyJH
TF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0
ZW5zaW9uczo6dGV4dHVyZUNvbXByZXNzaW9uRFhUNSk7CisgICAgICAgIG1hcFsiR0xfS0hSX3Rl
eHR1cmVfY29tcHJlc3Npb25fYXN0Y19oZHIiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9u
czo6dGV4dHVyZUNvbXByZXNzaW9uQVNUQ0hEUik7CisgICAgICAgIG1hcFsiR0xfS0hSX3RleHR1
cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6
dGV4dHVyZUNvbXByZXNzaW9uQVNUQ0xEUik7CisgICAgICAgIG1hcFsiR0xfT0VTX2NvbXByZXNz
ZWRfRVRDMV9SR0I4X3RleHR1cmUiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6Y29t
cHJlc3NlZEVUQzFSR0I4VGV4dHVyZSk7CisgICAgICAgIG1hcFsiR0xfRVhUX3NSR0IiXSA9IGVz
T25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6c1JHQik7CisgICAgICAgIG1hcFsiR0xfQU5HTEVf
ZGVwdGhfdGV4dHVyZSJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpkZXB0aFRleHR1
cmVzKTsKKyAgICAgICAgbWFwWyJHTF9PRVNfZGVwdGgzMiJdID0gZXNPbmx5RXh0ZW5zaW9uKCZF
eHRlbnNpb25zOjpkZXB0aDMyKTsKKyAgICAgICAgbWFwWyJHTF9FWFRfdGV4dHVyZV9zdG9yYWdl
Il0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnRleHR1cmVTdG9yYWdlKTsKKyAgICAg
ICAgbWFwWyJHTF9PRVNfdGV4dHVyZV9ucG90Il0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lv
bnM6OnRleHR1cmVOUE9UKTsKKyAgICAgICAgbWFwWyJHTF9FWFRfZHJhd19idWZmZXJzIl0gPSBl
c09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OmRyYXdCdWZmZXJzKTsKKyAgICAgICAgbWFwWyJH
TF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0
ZW5zaW9uczo6dGV4dHVyZUZpbHRlckFuaXNvdHJvcGljKTsKKyAgICAgICAgbWFwWyJHTF9FWFRf
b2NjbHVzaW9uX3F1ZXJ5X2Jvb2xlYW4iXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6
b2NjbHVzaW9uUXVlcnlCb29sZWFuKTsKKyAgICAgICAgbWFwWyJHTF9OVl9mZW5jZSJdID0gZXNP
bmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpmZW5jZSk7CisgICAgICAgIG1hcFsiR0xfQU5HTEVf
dGltZXJfcXVlcnkiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6dGltZXJRdWVyeSk7
CisgICAgICAgIG1hcFsiR0xfRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5Il0gPSBlc09ubHlFeHRl
bnNpb24oJkV4dGVuc2lvbnM6OmRpc2pvaW50VGltZXJRdWVyeSk7CisgICAgICAgIG1hcFsiR0xf
RVhUX3JvYnVzdG5lc3MiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6cm9idXN0bmVz
cyk7CisgICAgICAgIG1hcFsiR0xfRVhUX2JsZW5kX21pbm1heCJdID0gZXNPbmx5RXh0ZW5zaW9u
KCZFeHRlbnNpb25zOjpibGVuZE1pbk1heCk7CisgICAgICAgIG1hcFsiR0xfQU5HTEVfZnJhbWVi
dWZmZXJfYmxpdCJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpmcmFtZWJ1ZmZlckJs
aXQpOworICAgICAgICBtYXBbIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIl0gPSBl
c09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OmZyYW1lYnVmZmVyTXVsdGlzYW1wbGUpOworICAg
ICAgICBtYXBbIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiXSA9IGVzT25seUV4dGVuc2lvbigm
RXh0ZW5zaW9uczo6aW5zdGFuY2VkQXJyYXlzKTsKKyAgICAgICAgbWFwWyJHTF9BTkdMRV9wYWNr
X3JldmVyc2Vfcm93X29yZGVyIl0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnBhY2tS
ZXZlcnNlUm93T3JkZXIpOworICAgICAgICBtYXBbIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZl
cyJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpzdGFuZGFyZERlcml2YXRpdmVzKTsK
KyAgICAgICAgbWFwWyJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl0gPSBlc09ubHlFeHRlbnNp
b24oJkV4dGVuc2lvbnM6OnNoYWRlclRleHR1cmVMT0QpOworICAgICAgICBtYXBbIkdMX05WX3No
YWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpO
VnNoYWRlckZyYW1lYnVmZmVyRmV0Y2gpOworICAgICAgICBtYXBbIkdMX0FSTV9zaGFkZXJfZnJh
bWVidWZmZXJfZmV0Y2giXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6QVJNc2hhZGVy
RnJhbWVidWZmZXJGZXRjaCk7CisgICAgICAgIG1hcFsiR0xfRVhUX3NoYWRlcl9mcmFtZWJ1ZmZl
cl9mZXRjaCJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpzaGFkZXJGcmFtZWJ1ZmZl
ckZldGNoKTsKKyAgICAgICAgbWFwWyJHTF9FWFRfZnJhZ19kZXB0aCJdID0gZXNPbmx5RXh0ZW5z
aW9uKCZFeHRlbnNpb25zOjpmcmFnRGVwdGgpOworICAgICAgICBtYXBbIkdMX0FOR0xFX3RleHR1
cmVfdXNhZ2UiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6dGV4dHVyZVVzYWdlKTsK
KyAgICAgICAgbWFwWyJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiXSA9IGVzT25s
eUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6dHJhbnNsYXRlZFNoYWRlclNvdXJjZSk7CisgICAgICAg
IG1hcFsiR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFwIl0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVu
c2lvbnM6OmZib1JlbmRlck1pcG1hcCk7CisgICAgICAgIG1hcFsiR0xfRVhUX2Rpc2NhcmRfZnJh
bWVidWZmZXIiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6ZGlzY2FyZEZyYW1lYnVm
ZmVyKTsKKyAgICAgICAgbWFwWyJHTF9FWFRfZGVidWdfbWFya2VyIl0gPSBlc09ubHlFeHRlbnNp
b24oJkV4dGVuc2lvbnM6OmRlYnVnTWFya2VyKTsKKyAgICAgICAgbWFwWyJHTF9PRVNfRUdMX2lt
YWdlIl0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OmVnbEltYWdlKTsKKyAgICAgICAg
bWFwWyJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIl0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVu
c2lvbnM6OmVnbEltYWdlRXh0ZXJuYWwpOworICAgICAgICBtYXBbIkdMX09FU19FR0xfaW1hZ2Vf
ZXh0ZXJuYWxfZXNzbDMiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6ZWdsSW1hZ2VF
eHRlcm5hbEVzc2wzKTsKKyAgICAgICAgbWFwWyJHTF9OVl9FR0xfc3RyZWFtX2NvbnN1bWVyX2V4
dGVybmFsIl0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OmVnbFN0cmVhbUNvbnN1bWVy
RXh0ZXJuYWwpOworICAgICAgICBtYXBbIkdMX0VYVF91bnBhY2tfc3ViaW1hZ2UiXSA9IGVzT25s
eUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6dW5wYWNrU3ViaW1hZ2UpOworICAgICAgICBtYXBbIkdM
X05WX3BhY2tfc3ViaW1hZ2UiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6cGFja1N1
YmltYWdlKTsKKyAgICAgICAgbWFwWyJHTF9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0Il0gPSBlc09u
bHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OmNvbG9yQnVmZmVyRmxvYXQpOworICAgICAgICBtYXBb
IkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Il0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lv
bnM6OnZlcnRleEFycmF5T2JqZWN0KTsKKyAgICAgICAgbWFwWyJHTF9LSFJfZGVidWciXSA9IGVz
T25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6ZGVidWcpOworICAgICAgICAvLyBUT0RPKGptYWRp
bGwpOiBFbmFibGUgdGhpcyB3aGVuIGNvbXBsZXRlLgorICAgICAgICAvL21hcFsiR0xfS0hSX25v
X2Vycm9yIl0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6Om5vRXJyb3IpOworICAgICAg
ICBtYXBbIkdMX0FOR0xFX2xvc3N5X2V0Y19kZWNvZGUiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0
ZW5zaW9uczo6bG9zc3lFVENEZWNvZGUpOworICAgICAgICBtYXBbIkdMX0NIUk9NSVVNX2JpbmRf
dW5pZm9ybV9sb2NhdGlvbiJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpiaW5kVW5p
Zm9ybUxvY2F0aW9uKTsKKyAgICAgICAgbWFwWyJHTF9DSFJPTUlVTV9zeW5jX3F1ZXJ5Il0gPSBl
c09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnN5bmNRdWVyeSk7CisgICAgICAgIG1hcFsiR0xf
Q0hST01JVU1fY29weV90ZXh0dXJlIl0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OmNv
cHlUZXh0dXJlKTsKKyAgICAgICAgbWFwWyJHTF9DSFJPTUlVTV9jb3B5X2NvbXByZXNzZWRfdGV4
dHVyZSJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpjb3B5Q29tcHJlc3NlZFRleHR1
cmUpOworICAgICAgICBtYXBbIkdMX0FOR0xFX3dlYmdsX2NvbXBhdGliaWxpdHkiXSA9IGVzT25s
eUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6d2ViZ2xDb21wYXRpYmlsaXR5KTsKKyAgICAgICAgbWFw
WyJHTF9DSFJPTUlVTV9iaW5kX2dlbmVyYXRlc19yZXNvdXJjZSJdID0gZXNPbmx5RXh0ZW5zaW9u
KCZFeHRlbnNpb25zOjpiaW5kR2VuZXJhdGVzUmVzb3VyY2UpOworICAgICAgICBtYXBbIkdMX0FO
R0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Il0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6
OnJvYnVzdENsaWVudE1lbW9yeSk7CisgICAgICAgIG1hcFsiR0xfRVhUX211bHRpc2FtcGxlX2Nv
bXBhdGliaWxpdHkiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6bXVsdGlzYW1wbGVD
b21wYXRpYmlsaXR5KTsKKyAgICAgICAgbWFwWyJHTF9DSFJPTUlVTV9mcmFtZWJ1ZmZlcl9taXhl
ZF9zYW1wbGVzIl0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OmZyYW1lYnVmZmVyTWl4
ZWRTYW1wbGVzKTsKKyAgICAgICAgbWFwWyJHTF9FWFRfdGV4dHVyZV9ub3JtMTYiXSA9IGVzT25s
eUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6dGV4dHVyZU5vcm0xNik7CisgICAgICAgIG1hcFsiR0xf
Q0hST01JVU1fcGF0aF9yZW5kZXJpbmciXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6
cGF0aFJlbmRlcmluZyk7CisgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorCisgICAgICAgIHJl
dHVybiBtYXA7CisgICAgfTsKKworI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21h
IEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZXhpdC10aW1lLWRlc3RydWN0b3JzIgorICAgIHN0
YXRpYyBjb25zdCBFeHRlbnNpb25JbmZvTWFwIGV4dGVuc2lvbkluZm8gPSBidWlsZEV4dGVuc2lv
bkluZm9NYXAoKTsKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCisgICAgcmV0dXJuIGV4dGVu
c2lvbkluZm87Cit9CisKIFR5cGVQcmVjaXNpb246OlR5cGVQcmVjaXNpb24oKQogewogICAgIHJh
bmdlWzBdID0gMDsKQEAgLTU2MSwxOCArNjQ3LDMzIEBACiAgICAgICBtYXhMT0RCaWFzKDApLAog
ICAgICAgbWF4Q3ViZU1hcFRleHR1cmVTaXplKDApLAogICAgICAgbWF4UmVuZGVyYnVmZmVyU2l6
ZSgwKSwKKyAgICAgIG1pbkFsaWFzZWRQb2ludFNpemUoMCksCisgICAgICBtYXhBbGlhc2VkUG9p
bnRTaXplKDApLAorICAgICAgbWluQWxpYXNlZExpbmVXaWR0aCgwKSwKKyAgICAgIG1heEFsaWFz
ZWRMaW5lV2lkdGgoMCksCisKKyAgICAgIC8vIFRhYmxlIDIwLjQwCiAgICAgICBtYXhEcmF3QnVm
ZmVycygwKSwKKyAgICAgIG1heEZyYW1lYnVmZmVyV2lkdGgoMCksCisgICAgICBtYXhGcmFtZWJ1
ZmZlckhlaWdodCgwKSwKKyAgICAgIG1heEZyYW1lYnVmZmVyU2FtcGxlcygwKSwKICAgICAgIG1h
eENvbG9yQXR0YWNobWVudHMoMCksCiAgICAgICBtYXhWaWV3cG9ydFdpZHRoKDApLAogICAgICAg
bWF4Vmlld3BvcnRIZWlnaHQoMCksCi0gICAgICBtaW5BbGlhc2VkUG9pbnRTaXplKDApLAotICAg
ICAgbWF4QWxpYXNlZFBvaW50U2l6ZSgwKSwKLSAgICAgIG1pbkFsaWFzZWRMaW5lV2lkdGgoMCks
Ci0gICAgICAvLyBUYWJsZSA2LjI5CisgICAgICBtYXhTYW1wbGVNYXNrV29yZHMoMCksCisgICAg
ICBtYXhDb2xvclRleHR1cmVTYW1wbGVzKDApLAorICAgICAgbWF4RGVwdGhUZXh0dXJlU2FtcGxl
cygwKSwKKyAgICAgIG1heEludGVnZXJTYW1wbGVzKDApLAorICAgICAgbWF4U2VydmVyV2FpdFRp
bWVvdXQoMCksCisKKyAgICAgIC8vIFRhYmxlIDIwLjQxCisgICAgICBtYXhWZXJ0ZXhBdHRyaWJS
ZWxhdGl2ZU9mZnNldCgwKSwKKyAgICAgIG1heFZlcnRleEF0dHJpYkJpbmRpbmdzKDApLAorICAg
ICAgbWF4VmVydGV4QXR0cmliU3RyaWRlKDApLAogICAgICAgbWF4RWxlbWVudHNJbmRpY2VzKDAp
LAogICAgICAgbWF4RWxlbWVudHNWZXJ0aWNlcygwKSwKLSAgICAgIG1heFNlcnZlcldhaXRUaW1l
b3V0KDApLAotICAgICAgLy8gVGFibGUgNi4zMQorCisgICAgICAvLyBUYWJsZSAyMC40MwogICAg
ICAgbWF4VmVydGV4QXR0cmlidXRlcygwKSwKICAgICAgIG1heFZlcnRleFVuaWZvcm1Db21wb25l
bnRzKDApLAogICAgICAgbWF4VmVydGV4VW5pZm9ybVZlY3RvcnMoMCksCkBAIC01NzksMTUgKzY4
MCwzOSBAQAogICAgICAgbWF4VmVydGV4VW5pZm9ybUJsb2NrcygwKSwKICAgICAgIG1heFZlcnRl
eE91dHB1dENvbXBvbmVudHMoMCksCiAgICAgICBtYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cygw
KSwKLSAgICAgIC8vIFRhYmxlIDYuMzIKKyAgICAgIG1heFZlcnRleEF0b21pY0NvdW50ZXJCdWZm
ZXJzKDApLAorICAgICAgbWF4VmVydGV4QXRvbWljQ291bnRlcnMoMCksCisgICAgICBtYXhWZXJ0
ZXhJbWFnZVVuaWZvcm1zKDApLAorICAgICAgbWF4VmVydGV4U2hhZGVyU3RvcmFnZUJsb2Nrcygw
KSwKKworICAgICAgLy8gVGFibGUgMjAuNDQKICAgICAgIG1heEZyYWdtZW50VW5pZm9ybUNvbXBv
bmVudHMoMCksCiAgICAgICBtYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzKDApLAogICAgICAgbWF4
RnJhZ21lbnRVbmlmb3JtQmxvY2tzKDApLAogICAgICAgbWF4RnJhZ21lbnRJbnB1dENvbXBvbmVu
dHMoMCksCiAgICAgICBtYXhUZXh0dXJlSW1hZ2VVbml0cygwKSwKKyAgICAgIG1heEZyYWdtZW50
QXRvbWljQ291bnRlckJ1ZmZlcnMoMCksCisgICAgICBtYXhGcmFnbWVudEF0b21pY0NvdW50ZXJz
KDApLAorICAgICAgbWF4RnJhZ21lbnRJbWFnZVVuaWZvcm1zKDApLAorICAgICAgbWF4RnJhZ21l
bnRTaGFkZXJTdG9yYWdlQmxvY2tzKDApLAorICAgICAgbWluUHJvZ3JhbVRleHR1cmVHYXRoZXJP
ZmZzZXQoMCksCisgICAgICBtYXhQcm9ncmFtVGV4dHVyZUdhdGhlck9mZnNldCgwKSwKICAgICAg
IG1pblByb2dyYW1UZXhlbE9mZnNldCgwKSwKICAgICAgIG1heFByb2dyYW1UZXhlbE9mZnNldCgw
KSwKLSAgICAgIC8vIFRhYmxlIDYuMzMKKworICAgICAgLy8gVGFibGUgMjAuNDUKKyAgICAgIG1h
eENvbXB1dGVXb3JrR3JvdXBJbnZvY2F0aW9ucygwKSwKKyAgICAgIG1heENvbXB1dGVVbmlmb3Jt
QmxvY2tzKDApLAorICAgICAgbWF4Q29tcHV0ZVRleHR1cmVJbWFnZVVuaXRzKDApLAorICAgICAg
bWF4Q29tcHV0ZVNoYXJlZE1lbW9yeVNpemUoMCksCisgICAgICBtYXhDb21wdXRlVW5pZm9ybUNv
bXBvbmVudHMoMCksCisgICAgICBtYXhDb21wdXRlQXRvbWljQ291bnRlckJ1ZmZlcnMoMCksCisg
ICAgICBtYXhDb21wdXRlQXRvbWljQ291bnRlcnMoMCksCisgICAgICBtYXhDb21wdXRlSW1hZ2VV
bmlmb3JtcygwKSwKKyAgICAgIG1heENvbWJpbmVkQ29tcHV0ZVVuaWZvcm1Db21wb25lbnRzKDAp
LAorICAgICAgbWF4Q29tcHV0ZVNoYWRlclN0b3JhZ2VCbG9ja3MoMCksCisKKyAgICAgIC8vIFRh
YmxlIDIwLjQ2CiAgICAgICBtYXhVbmlmb3JtQnVmZmVyQmluZGluZ3MoMCksCiAgICAgICBtYXhV
bmlmb3JtQmxvY2tTaXplKDApLAogICAgICAgdW5pZm9ybUJ1ZmZlck9mZnNldEFsaWdubWVudCgw
KSwKQEAgLTU5NywxMyArNzIyLDM1IEBACiAgICAgICBtYXhWYXJ5aW5nQ29tcG9uZW50cygwKSwK
ICAgICAgIG1heFZhcnlpbmdWZWN0b3JzKDApLAogICAgICAgbWF4Q29tYmluZWRUZXh0dXJlSW1h
Z2VVbml0cygwKSwKLSAgICAgIC8vIFRhYmxlIDYuMzQKKyAgICAgIG1heENvbWJpbmVkU2hhZGVy
T3V0cHV0UmVzb3VyY2VzKDApLAorCisgICAgICAvLyBUYWJsZSAyMC40NworICAgICAgbWF4VW5p
Zm9ybUxvY2F0aW9ucygwKSwKKyAgICAgIG1heEF0b21pY0NvdW50ZXJCdWZmZXJCaW5kaW5ncygw
KSwKKyAgICAgIG1heEF0b21pY0NvdW50ZXJCdWZmZXJTaXplKDApLAorICAgICAgbWF4Q29tYmlu
ZWRBdG9taWNDb3VudGVyQnVmZmVycygwKSwKKyAgICAgIG1heENvbWJpbmVkQXRvbWljQ291bnRl
cnMoMCksCisgICAgICBtYXhJbWFnZVVuaXRzKDApLAorICAgICAgbWF4Q29tYmluZWRJbWFnZVVu
aWZvcm1zKDApLAorICAgICAgbWF4U2hhZGVyU3RvcmFnZUJ1ZmZlckJpbmRpbmdzKDApLAorICAg
ICAgbWF4U2hhZGVyU3RvcmFnZUJsb2NrU2l6ZSgwKSwKKyAgICAgIG1heENvbWJpbmVkU2hhZGVy
U3RvcmFnZUJsb2NrcygwKSwKKyAgICAgIHNoYWRlclN0b3JhZ2VCdWZmZXJPZmZzZXRBbGlnbm1l
bnQoMCksCisKKyAgICAgIC8vIFRhYmxlIDIwLjQ4CiAgICAgICBtYXhUcmFuc2Zvcm1GZWVkYmFj
a0ludGVybGVhdmVkQ29tcG9uZW50cygwKSwKICAgICAgIG1heFRyYW5zZm9ybUZlZWRiYWNrU2Vw
YXJhdGVBdHRyaWJ1dGVzKDApLAogICAgICAgbWF4VHJhbnNmb3JtRmVlZGJhY2tTZXBhcmF0ZUNv
bXBvbmVudHMoMCksCi0gICAgICAvLyBUYWJsZSA2LjM1CisKKyAgICAgIC8vIFRhYmxlIDIwLjQ5
CiAgICAgICBtYXhTYW1wbGVzKDApCisKIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDM7
ICsraSkKKyAgICB7CisgICAgICAgIG1heENvbXB1dGVXb3JrR3JvdXBDb3VudFtpXSA9IDA7Cisg
ICAgICAgIG1heENvbXB1dGVXb3JrR3JvdXBTaXplW2ldICA9IDA7CisgICAgfQogfQogCiB9CkBA
IC02NDEsNyArNzg4LDEwIEBACiAgICAgICBzdHJlYW0oZmFsc2UpLAogICAgICAgc3RyZWFtQ29u
c3VtZXJHTFRleHR1cmUoZmFsc2UpLAogICAgICAgc3RyZWFtQ29uc3VtZXJHTFRleHR1cmVZVVYo
ZmFsc2UpLAotICAgICAgc3RyZWFtUHJvZHVjZXJEM0RUZXh0dXJlTlYxMihmYWxzZSkKKyAgICAg
IHN0cmVhbVByb2R1Y2VyRDNEVGV4dHVyZU5WMTIoZmFsc2UpLAorICAgICAgY3JlYXRlQ29udGV4
dFdlYkdMQ29tcGF0aWJpbGl0eShmYWxzZSksCisgICAgICBjcmVhdGVDb250ZXh0QmluZEdlbmVy
YXRlc1Jlc291cmNlKGZhbHNlKSwKKyAgICAgIGdldFN5bmNWYWx1ZXMoZmFsc2UpCiB7CiB9CiAK
QEAgLTY1MCwzMiArODAwLDM2IEBACiAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGV4dGVu
c2lvblN0cmluZ3M7CiAKICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCi0gICAgLy8gICAgICAgICAg
ICAgICAgICAgfCBFeHRlbnNpb24gbmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgU3VwcG9ydGVkIGZsYWcgICAgICAgICAgICAgICAgfCBPdXRwdXQgdmVjdG9yICAgfAotICAg
IEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0VYVF9jcmVhdGVfY29udGV4dF9yb2J1c3RuZXNz
IiwgICAgICAgICAgICAgY3JlYXRlQ29udGV4dFJvYnVzdG5lc3MsICAgICAgICAmZXh0ZW5zaW9u
U3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfQU5HTEVfZDNkX3NoYXJl
X2hhbmRsZV9jbGllbnRfYnVmZmVyIiwgICAgICBkM2RTaGFyZUhhbmRsZUNsaWVudEJ1ZmZlciwg
ICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkVHTF9B
TkdMRV9zdXJmYWNlX2QzZF90ZXh0dXJlXzJkX3NoYXJlX2hhbmRsZSIsIHN1cmZhY2VEM0RUZXh0
dXJlMkRTaGFyZUhhbmRsZSwgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lv
blN0cmluZygiRUdMX0FOR0xFX3F1ZXJ5X3N1cmZhY2VfcG9pbnRlciIsICAgICAgICAgICAgICAg
cXVlcnlTdXJmYWNlUG9pbnRlciwgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAg
SW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfQU5HTEVfd2luZG93X2ZpeGVkX3NpemUiLCAgICAg
ICAgICAgICAgICAgICB3aW5kb3dGaXhlZFNpemUsICAgICAgICAgICAgICAgICZleHRlbnNpb25T
dHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkVHTF9BTkdMRV9rZXllZF9tdXRl
eCIsICAgICAgICAgICAgICAgICAgICAgICAgIGtleWVkTXV0ZXgsICAgICAgICAgICAgICAgICAg
ICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0FO
R0xFX3N1cmZhY2Vfb3JpZW50YXRpb24iLCAgICAgICAgICAgICAgICAgc3VyZmFjZU9yaWVudGF0
aW9uLCAgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9u
U3RyaW5nKCJFR0xfQU5HTEVfZGlyZWN0X2NvbXBvc2l0aW9uIiwgICAgICAgICAgICAgICAgICBk
aXJlY3RDb21wb3NpdGlvbiwgICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJ
bnNlcnRFeHRlbnNpb25TdHJpbmcoIkVHTF9OVl9wb3N0X3N1Yl9idWZmZXIiLCAgICAgICAgICAg
ICAgICAgICAgICAgIHBvc3RTdWJCdWZmZXIsICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0
cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0tIUl9jcmVhdGVfY29udGV4
dCIsICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlQ29udGV4dCwgICAgICAgICAgICAgICAg
ICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfRVhU
X2RldmljZV9xdWVyeSIsICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VRdWVyeSwgICAg
ICAgICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25T
dHJpbmcoIkVHTF9LSFJfaW1hZ2UiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlt
YWdlLCAgICAgICAgICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIElu
c2VydEV4dGVuc2lvblN0cmluZygiRUdMX0tIUl9pbWFnZV9iYXNlIiwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW1hZ2VCYXNlLCAgICAgICAgICAgICAgICAgICAgICAmZXh0ZW5zaW9uU3Ry
aW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfS0hSX2ltYWdlX3BpeG1hcCIs
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZVBpeG1hcCwgICAgICAgICAgICAgICAgICAg
ICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkVHTF9LSFJf
Z2xfdGV4dHVyZV8yRF9pbWFnZSIsICAgICAgICAgICAgICAgICAgIGdsVGV4dHVyZTJESW1hZ2Us
ICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0
cmluZygiRUdMX0tIUl9nbF90ZXh0dXJlX2N1YmVtYXBfaW1hZ2UiLCAgICAgICAgICAgICAgZ2xU
ZXh0dXJlQ3ViZW1hcEltYWdlLCAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5z
ZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfS0hSX2dsX3RleHR1cmVfM0RfaW1hZ2UiLCAgICAgICAg
ICAgICAgICAgICBnbFRleHR1cmUzREltYWdlLCAgICAgICAgICAgICAgICZleHRlbnNpb25TdHJp
bmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkVHTF9LSFJfZ2xfcmVuZGVyYnVmZmVy
X2ltYWdlIiwgICAgICAgICAgICAgICAgIGdsUmVuZGVyYnVmZmVySW1hZ2UsICAgICAgICAgICAg
JmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0tIUl9n
ZXRfYWxsX3Byb2NfYWRkcmVzc2VzIiwgICAgICAgICAgICAgICAgZ2V0QWxsUHJvY0FkZHJlc3Nl
cywgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3Ry
aW5nKCJFR0xfS0hSX3N0cmVhbSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJl
YW0sICAgICAgICAgICAgICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNl
cnRFeHRlbnNpb25TdHJpbmcoIkVHTF9LSFJfc3RyZWFtX2NvbnN1bWVyX2dsdGV4dHVyZSIsICAg
ICAgICAgICAgIHN0cmVhbUNvbnN1bWVyR0xUZXh0dXJlLCAgICAgICAgJmV4dGVuc2lvblN0cmlu
Z3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX05WX3N0cmVhbV9jb25zdW1lcl9n
bHRleHR1cmVfeXV2IiwgICAgICAgICAgc3RyZWFtQ29uc3VtZXJHTFRleHR1cmVZVVYsICAgICAm
ZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfQU5HTEVf
ZmxleGlibGVfc3VyZmFjZV9jb21wYXRpYmlsaXR5IiwgICAgICBmbGV4aWJsZVN1cmZhY2VDb21w
YXRpYmlsaXR5LCAgICZleHRlbnNpb25TdHJpbmdzKTsKKyAgICAvLyAgICAgICAgICAgICAgICAg
ICB8IEV4dGVuc2lvbiBuYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCBTdXBwb3J0ZWQgZmxhZyAgICAgICAgICAgICAgICAgICAgfCBPdXRwdXQgdmVjdG9yICAgfAor
ICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0VYVF9jcmVhdGVfY29udGV4dF9yb2J1c3Ru
ZXNzIiwgICAgICAgICAgICAgICAgICAgY3JlYXRlQ29udGV4dFJvYnVzdG5lc3MsICAgICAgICAg
ICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0FO
R0xFX2QzZF9zaGFyZV9oYW5kbGVfY2xpZW50X2J1ZmZlciIsICAgICAgICAgICAgZDNkU2hhcmVI
YW5kbGVDbGllbnRCdWZmZXIsICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2Vy
dEV4dGVuc2lvblN0cmluZygiRUdMX0FOR0xFX3N1cmZhY2VfZDNkX3RleHR1cmVfMmRfc2hhcmVf
aGFuZGxlIiwgICAgICAgc3VyZmFjZUQzRFRleHR1cmUyRFNoYXJlSGFuZGxlLCAgICAgJmV4dGVu
c2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0FOR0xFX3F1ZXJ5
X3N1cmZhY2VfcG9pbnRlciIsICAgICAgICAgICAgICAgICAgICAgcXVlcnlTdXJmYWNlUG9pbnRl
ciwgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lv
blN0cmluZygiRUdMX0FOR0xFX3dpbmRvd19maXhlZF9zaXplIiwgICAgICAgICAgICAgICAgICAg
ICAgICAgd2luZG93Rml4ZWRTaXplLCAgICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmlu
Z3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0FOR0xFX2tleWVkX211dGV4Iiwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ZWRNdXRleCwgICAgICAgICAgICAgICAg
ICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygi
RUdMX0FOR0xFX3N1cmZhY2Vfb3JpZW50YXRpb24iLCAgICAgICAgICAgICAgICAgICAgICAgc3Vy
ZmFjZU9yaWVudGF0aW9uLCAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAg
IEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0FOR0xFX2RpcmVjdF9jb21wb3NpdGlvbiIsICAg
ICAgICAgICAgICAgICAgICAgICAgZGlyZWN0Q29tcG9zaXRpb24sICAgICAgICAgICAgICAgICAg
JmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX05WX3Bv
c3Rfc3ViX2J1ZmZlciIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zdFN1YkJ1ZmZl
ciwgICAgICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4
dGVuc2lvblN0cmluZygiRUdMX0tIUl9jcmVhdGVfY29udGV4dCIsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3JlYXRlQ29udGV4dCwgICAgICAgICAgICAgICAgICAgICAgJmV4dGVuc2lv
blN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0VYVF9kZXZpY2VfcXVl
cnkiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlUXVlcnksICAgICAgICAg
ICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0
cmluZygiRUdMX0tIUl9pbWFnZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW1hZ2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3Mp
OworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0tIUl9pbWFnZV9iYXNlIiwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VCYXNlLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdM
X0tIUl9pbWFnZV9waXhtYXAiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VQ
aXhtYXAsICAgICAgICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIElu
c2VydEV4dGVuc2lvblN0cmluZygiRUdMX0tIUl9nbF90ZXh0dXJlXzJEX2ltYWdlIiwgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2xUZXh0dXJlMkRJbWFnZSwgICAgICAgICAgICAgICAgICAgJmV4
dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0tIUl9nbF90
ZXh0dXJlX2N1YmVtYXBfaW1hZ2UiLCAgICAgICAgICAgICAgICAgICAgZ2xUZXh0dXJlQ3ViZW1h
cEltYWdlLCAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVu
c2lvblN0cmluZygiRUdMX0tIUl9nbF90ZXh0dXJlXzNEX2ltYWdlIiwgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2xUZXh0dXJlM0RJbWFnZSwgICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0
cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0tIUl9nbF9yZW5kZXJidWZm
ZXJfaW1hZ2UiLCAgICAgICAgICAgICAgICAgICAgICAgZ2xSZW5kZXJidWZmZXJJbWFnZSwgICAg
ICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmlu
ZygiRUdMX0tIUl9nZXRfYWxsX3Byb2NfYWRkcmVzc2VzIiwgICAgICAgICAgICAgICAgICAgICAg
Z2V0QWxsUHJvY0FkZHJlc3NlcywgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwor
ICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0tIUl9zdHJlYW0iLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0tI
Ul9zdHJlYW1fY29uc3VtZXJfZ2x0ZXh0dXJlIiwgICAgICAgICAgICAgICAgICAgc3RyZWFtQ29u
c3VtZXJHTFRleHR1cmUsICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2Vy
dEV4dGVuc2lvblN0cmluZygiRUdMX05WX3N0cmVhbV9jb25zdW1lcl9nbHRleHR1cmVfeXV2Iiwg
ICAgICAgICAgICAgICAgc3RyZWFtQ29uc3VtZXJHTFRleHR1cmVZVVYsICAgICAgICAgJmV4dGVu
c2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0FOR0xFX2ZsZXhp
YmxlX3N1cmZhY2VfY29tcGF0aWJpbGl0eSIsICAgICAgICAgICAgZmxleGlibGVTdXJmYWNlQ29t
cGF0aWJpbGl0eSwgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lv
blN0cmluZygiRUdMX0FOR0xFX3N0cmVhbV9wcm9kdWNlcl9kM2RfdGV4dHVyZV9udjEyIiwgICAg
ICAgICAgc3RyZWFtUHJvZHVjZXJEM0RUZXh0dXJlTlYxMiwgICAgICAgJmV4dGVuc2lvblN0cmlu
Z3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0FOR0xFX2NyZWF0ZV9jb250ZXh0
X3dlYmdsX2NvbXBhdGliaWxpdHkiLCAgICAgICAgY3JlYXRlQ29udGV4dFdlYkdMQ29tcGF0aWJp
bGl0eSwgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygi
RUdMX0NIUk9NSVVNX2NyZWF0ZV9jb250ZXh0X2JpbmRfZ2VuZXJhdGVzX3Jlc291cmNlIiwgY3Jl
YXRlQ29udGV4dEJpbmRHZW5lcmF0ZXNSZXNvdXJjZSwgJmV4dGVuc2lvblN0cmluZ3MpOworICAg
IEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0NIUk9NSVVNX3N5bmNfY29udHJvbCIsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2V0U3luY1ZhbHVlcywgICAgICAgICAgICAgICAgICAgICAg
JmV4dGVuc2lvblN0cmluZ3MpOwogICAgIC8vIFRPRE8oam1hZGlsbCk6IEVuYWJsZSB0aGlzIHdo
ZW4gY29tcGxldGUuCi0gICAgLy9JbnNlcnRFeHRlbnNpb25TdHJpbmcoIktIUl9jcmVhdGVfY29u
dGV4dF9ub19lcnJvciIsICAgICAgICAgICAgICAgICAgIGNyZWF0ZUNvbnRleHROb0Vycm9yLCAg
ICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIC8vSW5zZXJ0RXh0ZW5zaW9uU3RyaW5n
KCJLSFJfY3JlYXRlX2NvbnRleHRfbm9fZXJyb3IiLCAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlQ29udGV4dE5vRXJyb3IsICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwogICAg
IC8vIGNsYW5nLWZvcm1hdCBvbgogCiAgICAgcmV0dXJuIGV4dGVuc2lvblN0cmluZ3M7CkBAIC03
MjMsNiArODc3LDcgQEAKICAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkVHTF9BTkdMRV9wbGF0
Zm9ybV9hbmdsZSIsICAgICAgICAgICAgICBwbGF0Zm9ybUFOR0xFLCAgICAgICAgICAgICAmZXh0
ZW5zaW9uU3RyaW5ncyk7CiAgICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfQU5HTEVfcGxh
dGZvcm1fYW5nbGVfZDNkIiwgICAgICAgICAgcGxhdGZvcm1BTkdMRUQzRCwgICAgICAgICAgJmV4
dGVuc2lvblN0cmluZ3MpOwogICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0FOR0xFX3Bs
YXRmb3JtX2FuZ2xlX29wZW5nbCIsICAgICAgIHBsYXRmb3JtQU5HTEVPcGVuR0wsICAgICAgICZl
eHRlbnNpb25TdHJpbmdzKTsKKyAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkVHTF9BTkdMRV9w
bGF0Zm9ybV9hbmdsZV9udWxsIiwgICAgICAgICBwbGF0Zm9ybUFOR0xFTlVMTCwgICAgICAgICAm
ZXh0ZW5zaW9uU3RyaW5ncyk7CiAgICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfQU5HTEVf
ZGV2aWNlX2NyZWF0aW9uIiwgICAgICAgICAgICAgZGV2aWNlQ3JlYXRpb24sICAgICAgICAgICAg
JmV4dGVuc2lvblN0cmluZ3MpOwogICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0FOR0xF
X2RldmljZV9jcmVhdGlvbl9kM2QxMSIsICAgICAgIGRldmljZUNyZWF0aW9uRDNEMTEsICAgICAg
ICZleHRlbnNpb25TdHJpbmdzKTsKICAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkVHTF9BTkdM
RV94MTFfdmlzdWFsIiwgICAgICAgICAgICAgICAgICB4MTFWaXN1YWwsICAgICAgICAgICAgICAg
ICAmZXh0ZW5zaW9uU3RyaW5ncyk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvQ2Fwcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9DYXBzLmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9DYXBzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0LDYgKzE0LDcg
QEAKICNpbmNsdWRlIDxzZXQ+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4K
KyNpbmNsdWRlIDxhcnJheT4KIAogbmFtZXNwYWNlIGdsCiB7CkBAIC01MSw2ICs1Miw3IEBACiAK
ICAgICB2b2lkIGluc2VydChHTGVudW0gaW50ZXJuYWxGb3JtYXQsIGNvbnN0IFRleHR1cmVDYXBz
ICZjYXBzKTsKICAgICB2b2lkIHJlbW92ZShHTGVudW0gaW50ZXJuYWxGb3JtYXQpOworICAgIHZv
aWQgY2xlYXIoKTsKIAogICAgIGNvbnN0IFRleHR1cmVDYXBzICZnZXQoR0xlbnVtIGludGVybmFs
Rm9ybWF0KSBjb25zdDsKIApAQCAtODcsNiArODksNyBAQAogICAgIC8vIEdMX0VYVF9zUkdCCiAg
ICAgLy8gR0xfQU5HTEVfZGVwdGhfdGV4dHVyZSwgR0xfT0VTX2RlcHRoMzIKICAgICAvLyBHTF9F
WFRfY29sb3JfYnVmZmVyX2Zsb2F0CisgICAgLy8gR0xfRVhUX3RleHR1cmVfbm9ybTE2CiAgICAg
dm9pZCBzZXRUZXh0dXJlRXh0ZW5zaW9uU3VwcG9ydChjb25zdCBUZXh0dXJlQ2Fwc01hcCAmdGV4
dHVyZUNhcHMpOwogCiAgICAgLy8gRVMyIEV4dGVuc2lvbiBzdXBwb3J0CkBAIC0yODEsMTIgKzI4
NCw2MCBAQAogICAgIC8vIEdMX0FOR0xFX2xvc3N5X2V0Y19kZWNvZGUKICAgICBib29sIGxvc3N5
RVRDRGVjb2RlOwogCisgICAgLy8gR0xfQ0hST01JVU1fYmluZF91bmlmb3JtX2xvY2F0aW9uCisg
ICAgYm9vbCBiaW5kVW5pZm9ybUxvY2F0aW9uOworCisgICAgLy8gR0xfQ0hST01JVU1fc3luY19x
dWVyeQorICAgIGJvb2wgc3luY1F1ZXJ5OworCisgICAgLy8gR0xfQ0hST01JVU1fY29weV90ZXh0
dXJlCisgICAgYm9vbCBjb3B5VGV4dHVyZTsKKworICAgIC8vIEdMX0NIUk9NSVVNX2NvcHlfY29t
cHJlc3NlZF90ZXh0dXJlCisgICAgYm9vbCBjb3B5Q29tcHJlc3NlZFRleHR1cmU7CisKKyAgICAv
LyBHTF9BTkdMRV93ZWJnbF9jb21wYXRpYmlsaXR5CisgICAgYm9vbCB3ZWJnbENvbXBhdGliaWxp
dHk7CisKKyAgICAvLyBHTF9DSFJPTUlVTV9iaW5kX2dlbmVyYXRlc19yZXNvdXJjZQorICAgIGJv
b2wgYmluZEdlbmVyYXRlc1Jlc291cmNlOworCisgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVu
dF9tZW1vcnkKKyAgICBib29sIHJvYnVzdENsaWVudE1lbW9yeTsKKwogICAgIC8vIEVTMyBFeHRl
bnNpb24gc3VwcG9ydAogCiAgICAgLy8gR0xfRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdAogICAgIGJv
b2wgY29sb3JCdWZmZXJGbG9hdDsKKworICAgIC8vIEdMX0VYVF9tdWx0aXNhbXBsZV9jb21wYXRp
YmlsaXR5LgorICAgIC8vIHdyaXR0ZW4gYWdhaW5zdCBFUyAzLjEgYnV0IGNhbiBhcHBseSB0byBl
YXJsaWVyIHZlcnNpb25zLgorICAgIGJvb2wgbXVsdGlzYW1wbGVDb21wYXRpYmlsaXR5OworCisg
ICAgLy8gR0xfQ0hST01JVU1fZnJhbWVidWZmZXJfbWl4ZWRfc2FtcGxlcworICAgIGJvb2wgZnJh
bWVidWZmZXJNaXhlZFNhbXBsZXM7CisKKyAgICAvLyBHTF9FWFRfdGV4dHVyZV9ub3JtMTYKKyAg
ICAvLyB3cml0dGVuIGFnYWluc3QgRVMgMy4xIGJ1dCBjYW4gYXBwbHkgdG8gRVMgMy4wIGFzIHdl
bGwuCisgICAgYm9vbCB0ZXh0dXJlTm9ybTE2OworCisgICAgLy8gR0xfQ0hST01JVU1fcGF0aF9y
ZW5kZXJpbmcKKyAgICBib29sIHBhdGhSZW5kZXJpbmc7CiB9OwogCitzdHJ1Y3QgRXh0ZW5zaW9u
SW5mbworeworICAgIC8vIElmIHRoaXMgZXh0ZW5zaW9uIGNhbiBiZSBlbmFibGVkIHdpdGggZ2xF
bmFibGVFeHRlbnNpb24gKEdMX0FOR0xFX3dlYmdsX2NvbXBhdGliaWxpdHkpCisgICAgYm9vbCBF
bmFibGVhYmxlID0gZmFsc2U7CisKKyAgICAvLyBQb2ludGVyIHRvIGEgYm9vbGVhbiBtZW1iZXIg
b2YgdGhlIEV4dGVuc2lvbnMgc3RydWN0CisgICAgdHlwZWRlZiBib29sKEV4dGVuc2lvbnM6OipF
eHRlbnNpb25Cb29sKTsKKyAgICBFeHRlbnNpb25Cb29sIEV4dGVuc2lvbnNNZW1iZXIgPSBudWxs
cHRyOworfTsKKwordXNpbmcgRXh0ZW5zaW9uSW5mb01hcCA9IHN0ZDo6bWFwPHN0ZDo6c3RyaW5n
LCBFeHRlbnNpb25JbmZvPjsKK2NvbnN0IEV4dGVuc2lvbkluZm9NYXAgJkdldEV4dGVuc2lvbklu
Zm9NYXAoKTsKKwogc3RydWN0IExpbWl0YXRpb25zCiB7CiAgICAgTGltaXRhdGlvbnMoKTsKQEAg
LTMyOSw3ICszODAsNyBAQAogewogICAgIENhcHMoKTsKIAotICAgIC8vIFRhYmxlIDYuMjgsIGlt
cGxlbWVudGF0aW9uIGRlcGVuZGVudCB2YWx1ZXMKKyAgICAvLyBFUyAzLjEgKEFwcmlsIDI5LCAy
MDE1KSAyMC4zOTogaW1wbGVtZW50YXRpb24gZGVwZW5kZW50IHZhbHVlcwogICAgIEdMdWludDY0
IG1heEVsZW1lbnRJbmRleDsKICAgICBHTHVpbnQgbWF4M0RUZXh0dXJlU2l6ZTsKICAgICBHTHVp
bnQgbWF4MkRUZXh0dXJlU2l6ZTsKQEAgLTMzNywxNiArMzg4LDI5IEBACiAgICAgR0xmbG9hdCBt
YXhMT0RCaWFzOwogICAgIEdMdWludCBtYXhDdWJlTWFwVGV4dHVyZVNpemU7CiAgICAgR0x1aW50
IG1heFJlbmRlcmJ1ZmZlclNpemU7Ci0gICAgR0x1aW50IG1heERyYXdCdWZmZXJzOwotICAgIEdM
dWludCBtYXhDb2xvckF0dGFjaG1lbnRzOwotICAgIEdMdWludCBtYXhWaWV3cG9ydFdpZHRoOwot
ICAgIEdMdWludCBtYXhWaWV3cG9ydEhlaWdodDsKICAgICBHTGZsb2F0IG1pbkFsaWFzZWRQb2lu
dFNpemU7CiAgICAgR0xmbG9hdCBtYXhBbGlhc2VkUG9pbnRTaXplOwogICAgIEdMZmxvYXQgbWlu
QWxpYXNlZExpbmVXaWR0aDsKICAgICBHTGZsb2F0IG1heEFsaWFzZWRMaW5lV2lkdGg7CiAKLSAg
ICAvLyBUYWJsZSA2LjI5LCBpbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQgdmFsdWVzIChjb250LikK
KyAgICAvLyBFUyAzLjEgKEFwcmlsIDI5LCAyMDE1KSAyMC40MDogaW1wbGVtZW50YXRpb24gZGVw
ZW5kZW50IHZhbHVlcyAoY29udC4pCisgICAgR0x1aW50IG1heERyYXdCdWZmZXJzOworICAgIEdM
dWludCBtYXhGcmFtZWJ1ZmZlcldpZHRoOworICAgIEdMdWludCBtYXhGcmFtZWJ1ZmZlckhlaWdo
dDsKKyAgICBHTHVpbnQgbWF4RnJhbWVidWZmZXJTYW1wbGVzOworICAgIEdMdWludCBtYXhDb2xv
ckF0dGFjaG1lbnRzOworICAgIEdMdWludCBtYXhWaWV3cG9ydFdpZHRoOworICAgIEdMdWludCBt
YXhWaWV3cG9ydEhlaWdodDsKKyAgICBHTHVpbnQgbWF4U2FtcGxlTWFza1dvcmRzOworICAgIEdM
dWludCBtYXhDb2xvclRleHR1cmVTYW1wbGVzOworICAgIEdMdWludCBtYXhEZXB0aFRleHR1cmVT
YW1wbGVzOworICAgIEdMdWludCBtYXhJbnRlZ2VyU2FtcGxlczsKKyAgICBHTHVpbnQ2NCBtYXhT
ZXJ2ZXJXYWl0VGltZW91dDsKKworICAgIC8vIEVTIDMuMSAoQXByaWwgMjksIDIwMTUpIFRhYmxl
IDIwLjQxOiBJbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQgdmFsdWVzIChjb250LikKKyAgICBHTGlu
dCBtYXhWZXJ0ZXhBdHRyaWJSZWxhdGl2ZU9mZnNldDsKKyAgICBHTGludCBtYXhWZXJ0ZXhBdHRy
aWJCaW5kaW5nczsKKyAgICBHTGludCBtYXhWZXJ0ZXhBdHRyaWJTdHJpZGU7CiAgICAgR0x1aW50
IG1heEVsZW1lbnRzSW5kaWNlczsKICAgICBHTHVpbnQgbWF4RWxlbWVudHNWZXJ0aWNlczsKICAg
ICBzdGQ6OnZlY3RvcjxHTGVudW0+IGNvbXByZXNzZWRUZXh0dXJlRm9ybWF0czsKQEAgLTM2NCw5
ICs0MjgsOCBAQAogICAgIFR5cGVQcmVjaXNpb24gZnJhZ21lbnRIaWdocEludDsKICAgICBUeXBl
UHJlY2lzaW9uIGZyYWdtZW50TWVkaXVtcEludDsKICAgICBUeXBlUHJlY2lzaW9uIGZyYWdtZW50
TG93cEludDsKLSAgICBHTHVpbnQ2NCBtYXhTZXJ2ZXJXYWl0VGltZW91dDsKIAotICAgIC8vIFRh
YmxlIDYuMzEsIGltcGxlbWVudGF0aW9uIGRlcGVuZGVudCB2ZXJ0ZXggc2hhZGVyIGxpbWl0cwor
ICAgIC8vIEVTIDMuMSAoQXByaWwgMjksIDIwMTUpIFRhYmxlIDIwLjQzOiBJbXBsZW1lbnRhdGlv
biBkZXBlbmRlbnQgVmVydGV4IHNoYWRlciBsaW1pdHMKICAgICBHTHVpbnQgbWF4VmVydGV4QXR0
cmlidXRlczsKICAgICBHTHVpbnQgbWF4VmVydGV4VW5pZm9ybUNvbXBvbmVudHM7CiAgICAgR0x1
aW50IG1heFZlcnRleFVuaWZvcm1WZWN0b3JzOwpAQCAtMzczLDE3ICs0MzYsNDEgQEAKICAgICBH
THVpbnQgbWF4VmVydGV4VW5pZm9ybUJsb2NrczsKICAgICBHTHVpbnQgbWF4VmVydGV4T3V0cHV0
Q29tcG9uZW50czsKICAgICBHTHVpbnQgbWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHM7CisgICAg
R0x1aW50IG1heFZlcnRleEF0b21pY0NvdW50ZXJCdWZmZXJzOworICAgIEdMdWludCBtYXhWZXJ0
ZXhBdG9taWNDb3VudGVyczsKKyAgICBHTHVpbnQgbWF4VmVydGV4SW1hZ2VVbmlmb3JtczsKKyAg
ICBHTHVpbnQgbWF4VmVydGV4U2hhZGVyU3RvcmFnZUJsb2NrczsKIAotICAgIC8vIFRhYmxlIDYu
MzIsIGltcGxlbWVudGF0aW9uIGRlcGVuZGVudCBmcmFnbWVudCBzaGFkZXIgbGltaXRzCisgICAg
Ly8gRVMgMy4xIChBcHJpbCAyOSwgMjAxNSkgVGFibGUgMjAuNDQ6IEltcGxlbWVudGF0aW9uIGRl
cGVuZGVudCBGcmFnbWVudCBzaGFkZXIgbGltaXRzCiAgICAgR0x1aW50IG1heEZyYWdtZW50VW5p
Zm9ybUNvbXBvbmVudHM7CiAgICAgR0x1aW50IG1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnM7CiAg
ICAgR0x1aW50IG1heEZyYWdtZW50VW5pZm9ybUJsb2NrczsKICAgICBHTHVpbnQgbWF4RnJhZ21l
bnRJbnB1dENvbXBvbmVudHM7CiAgICAgR0x1aW50IG1heFRleHR1cmVJbWFnZVVuaXRzOworICAg
IEdMdWludCBtYXhGcmFnbWVudEF0b21pY0NvdW50ZXJCdWZmZXJzOworICAgIEdMdWludCBtYXhG
cmFnbWVudEF0b21pY0NvdW50ZXJzOworICAgIEdMdWludCBtYXhGcmFnbWVudEltYWdlVW5pZm9y
bXM7CisgICAgR0x1aW50IG1heEZyYWdtZW50U2hhZGVyU3RvcmFnZUJsb2NrczsKKyAgICBHTGlu
dCBtaW5Qcm9ncmFtVGV4dHVyZUdhdGhlck9mZnNldDsKKyAgICBHTHVpbnQgbWF4UHJvZ3JhbVRl
eHR1cmVHYXRoZXJPZmZzZXQ7CiAgICAgR0xpbnQgbWluUHJvZ3JhbVRleGVsT2Zmc2V0OwogICAg
IEdMaW50IG1heFByb2dyYW1UZXhlbE9mZnNldDsKIAotICAgIC8vIFRhYmxlIDYuMzMsIGltcGxl
bWVudGF0aW9uIGRlcGVuZGVudCBhZ2dyZWdhdGUgc2hhZGVyIGxpbWl0cworICAgIC8vIEVTIDMu
MSAoQXByaWwgMjksIDIwMTUpIFRhYmxlIDIwLjQ1OiBpbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQg
Y29tcHV0ZSBzaGFkZXIgbGltaXRzCisgICAgc3RkOjphcnJheTxHTHVpbnQsIDM+IG1heENvbXB1
dGVXb3JrR3JvdXBDb3VudDsKKyAgICBzdGQ6OmFycmF5PEdMdWludCwgMz4gbWF4Q29tcHV0ZVdv
cmtHcm91cFNpemU7CisgICAgR0x1aW50IG1heENvbXB1dGVXb3JrR3JvdXBJbnZvY2F0aW9uczsK
KyAgICBHTHVpbnQgbWF4Q29tcHV0ZVVuaWZvcm1CbG9ja3M7CisgICAgR0x1aW50IG1heENvbXB1
dGVUZXh0dXJlSW1hZ2VVbml0czsKKyAgICBHTHVpbnQgbWF4Q29tcHV0ZVNoYXJlZE1lbW9yeVNp
emU7CisgICAgR0x1aW50IG1heENvbXB1dGVVbmlmb3JtQ29tcG9uZW50czsKKyAgICBHTHVpbnQg
bWF4Q29tcHV0ZUF0b21pY0NvdW50ZXJCdWZmZXJzOworICAgIEdMdWludCBtYXhDb21wdXRlQXRv
bWljQ291bnRlcnM7CisgICAgR0x1aW50IG1heENvbXB1dGVJbWFnZVVuaWZvcm1zOworICAgIEdM
dWludCBtYXhDb21iaW5lZENvbXB1dGVVbmlmb3JtQ29tcG9uZW50czsKKyAgICBHTHVpbnQgbWF4
Q29tcHV0ZVNoYWRlclN0b3JhZ2VCbG9ja3M7CisKKyAgICAvLyBFUyAzLjEgKEFwcmlsIDI5LCAy
MDE1KSBUYWJsZSAyMC40NjogaW1wbGVtZW50YXRpb24gZGVwZW5kZW50IGFnZ3JlZ2F0ZSBzaGFk
ZXIgbGltaXRzCiAgICAgR0x1aW50IG1heFVuaWZvcm1CdWZmZXJCaW5kaW5nczsKICAgICBHTHVp
bnQ2NCBtYXhVbmlmb3JtQmxvY2tTaXplOwogICAgIEdMdWludCB1bmlmb3JtQnVmZmVyT2Zmc2V0
QWxpZ25tZW50OwpAQCAtMzkzLDEzICs0ODAsMjcgQEAKICAgICBHTHVpbnQgbWF4VmFyeWluZ0Nv
bXBvbmVudHM7CiAgICAgR0x1aW50IG1heFZhcnlpbmdWZWN0b3JzOwogICAgIEdMdWludCBtYXhD
b21iaW5lZFRleHR1cmVJbWFnZVVuaXRzOworICAgIEdMdWludCBtYXhDb21iaW5lZFNoYWRlck91
dHB1dFJlc291cmNlczsKIAotICAgIC8vIFRhYmxlIDYuMzQsIGltcGxlbWVudGF0aW9uIGRlcGVu
ZGVudCB0cmFuc2Zvcm0gZmVlZGJhY2sgbGltaXRzCisgICAgLy8gRVMgMy4xIChBcHJpbCAyOSwg
MjAxNSkgVGFibGUgMjAuNDc6IGltcGxlbWVudGF0aW9uIGRlcGVuZGVudCBhZ2dyZWdhdGUgc2hh
ZGVyIGxpbWl0cyAoY29udC4pCisgICAgR0x1aW50IG1heFVuaWZvcm1Mb2NhdGlvbnM7CisgICAg
R0x1aW50IG1heEF0b21pY0NvdW50ZXJCdWZmZXJCaW5kaW5nczsKKyAgICBHTHVpbnQgbWF4QXRv
bWljQ291bnRlckJ1ZmZlclNpemU7CisgICAgR0x1aW50IG1heENvbWJpbmVkQXRvbWljQ291bnRl
ckJ1ZmZlcnM7CisgICAgR0x1aW50IG1heENvbWJpbmVkQXRvbWljQ291bnRlcnM7CisgICAgR0x1
aW50IG1heEltYWdlVW5pdHM7CisgICAgR0x1aW50IG1heENvbWJpbmVkSW1hZ2VVbmlmb3JtczsK
KyAgICBHTHVpbnQgbWF4U2hhZGVyU3RvcmFnZUJ1ZmZlckJpbmRpbmdzOworICAgIEdMdWludDY0
IG1heFNoYWRlclN0b3JhZ2VCbG9ja1NpemU7CisgICAgR0x1aW50IG1heENvbWJpbmVkU2hhZGVy
U3RvcmFnZUJsb2NrczsKKyAgICBHTHVpbnQgc2hhZGVyU3RvcmFnZUJ1ZmZlck9mZnNldEFsaWdu
bWVudDsKKworICAgIC8vIEVTIDMuMSAoQXByaWwgMjksIDIwMTUpIFRhYmxlIDIwLjQ4OiBpbXBs
ZW1lbnRhdGlvbiBkZXBlbmRlbnQgdHJhbnNmb3JtIGZlZWRiYWNrIGxpbWl0cwogICAgIEdMdWlu
dCBtYXhUcmFuc2Zvcm1GZWVkYmFja0ludGVybGVhdmVkQ29tcG9uZW50czsKICAgICBHTHVpbnQg
bWF4VHJhbnNmb3JtRmVlZGJhY2tTZXBhcmF0ZUF0dHJpYnV0ZXM7CiAgICAgR0x1aW50IG1heFRy
YW5zZm9ybUZlZWRiYWNrU2VwYXJhdGVDb21wb25lbnRzOwogCi0gICAgLy8gVGFibGUgNi4zNSwg
RnJhbWVidWZmZXIgRGVwZW5kZW50IFZhbHVlcworICAgIC8vIEVTIDMuMSAoQXByaWwgMjksIDIw
MTUpIFRhYmxlIDIwLjQ5OiBGcmFtZWJ1ZmZlciBEZXBlbmRlbnQgVmFsdWVzCiAgICAgR0x1aW50
IG1heFNhbXBsZXM7CiB9OwogCkBAIC00OTcsNiArNTk4LDE1IEBACiAKICAgICAvLyBFR0xfQU5H
TEVfc3RyZWFtX3Byb2R1Y2VyX2QzZF90ZXh0dXJlX252MTIKICAgICBib29sIHN0cmVhbVByb2R1
Y2VyRDNEVGV4dHVyZU5WMTI7CisKKyAgICAvLyBFR0xfQU5HTEVfY3JlYXRlX2NvbnRleHRfd2Vi
Z2xfY29tcGF0aWJpbGl0eQorICAgIGJvb2wgY3JlYXRlQ29udGV4dFdlYkdMQ29tcGF0aWJpbGl0
eTsKKworICAgIC8vIEVHTF9DSFJPTUlVTV9jcmVhdGVfY29udGV4dF9iaW5kX2dlbmVyYXRlc19y
ZXNvdXJjZQorICAgIGJvb2wgY3JlYXRlQ29udGV4dEJpbmRHZW5lcmF0ZXNSZXNvdXJjZTsKKwor
ICAgIC8vIEVHTF9DSFJPTUlVTV9nZXRfc3luY192YWx1ZXMKKyAgICBib29sIGdldFN5bmNWYWx1
ZXM7CiB9OwogCiBzdHJ1Y3QgRGV2aWNlRXh0ZW5zaW9ucwpAQCAtNTM1LDYgKzY0NSw5IEBACiAg
ICAgLy8gRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlX29wZW5nbAogICAgIGJvb2wgcGxhdGZvcm1B
TkdMRU9wZW5HTDsKIAorICAgIC8vIEVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9udWxsCisgICAg
Ym9vbCBwbGF0Zm9ybUFOR0xFTlVMTDsKKwogICAgIC8vIEVHTF9BTkdMRV9kZXZpY2VfY3JlYXRp
b24KICAgICBib29sIGRldmljZUNyZWF0aW9uOwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db21waWxlci5jcHAJKHJldmlzaW9uIDIwODAyMSkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db21waWxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTksOSArOSw5IEBACiAjaW5jbHVkZSAibGliQU5HTEUvQ29tcGlsZXIu
aCIKIAogI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgotI2luY2x1ZGUgImxpYkFOR0xFL0RhdGEu
aCIKKyNpbmNsdWRlICJsaWJBTkdMRS9Db250ZXh0U3RhdGUuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9Db21waWxlckltcGwuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9J
bXBsRmFjdG9yeS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0dMSW1wbEZhY3Rvcnku
aCIKIAogbmFtZXNwYWNlIGdsCiB7CkBAIC0yMywyMCArMjMsMzcgQEAKIC8vIFNoRmluYWxpemUu
CiBzaXplX3QgYWN0aXZlQ29tcGlsZXJIYW5kbGVzID0gMDsKIAorU2hTaGFkZXJTcGVjIFNlbGVj
dFNoYWRlclNwZWMoR0xpbnQgbWFqb3JWZXJzaW9uLCBHTGludCBtaW5vclZlcnNpb24pCit7Cisg
ICAgaWYgKG1ham9yVmVyc2lvbiA+PSAzKQorICAgIHsKKyAgICAgICAgaWYgKG1pbm9yVmVyc2lv
biA9PSAxKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gU0hfR0xFUzNfMV9TUEVDOwor
ICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIFNI
X0dMRVMzX1NQRUM7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIFNIX0dMRVMyX1NQRUM7
Cit9CisKIH0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotQ29tcGlsZXI6OkNvbXBpbGVyKHJ4
OjpJbXBsRmFjdG9yeSAqaW1wbEZhY3RvcnksIGNvbnN0IGdsOjpEYXRhICZkYXRhKQorQ29tcGls
ZXI6OkNvbXBpbGVyKHJ4OjpHTEltcGxGYWN0b3J5ICppbXBsRmFjdG9yeSwgY29uc3QgQ29udGV4
dFN0YXRlICZzdGF0ZSkKICAgICA6IG1JbXBsZW1lbnRhdGlvbihpbXBsRmFjdG9yeS0+Y3JlYXRl
Q29tcGlsZXIoKSksCi0gICAgICBtU3BlYyhkYXRhLmNsaWVudFZlcnNpb24gPiAyID8gU0hfR0xF
UzNfU1BFQyA6IFNIX0dMRVMyX1NQRUMpLAorICAgICAgbVNwZWMoU2VsZWN0U2hhZGVyU3BlYyhz
dGF0ZS5nZXRDbGllbnRNYWpvclZlcnNpb24oKSwgc3RhdGUuZ2V0Q2xpZW50TWlub3JWZXJzaW9u
KCkpKSwKICAgICAgIG1PdXRwdXRUeXBlKG1JbXBsZW1lbnRhdGlvbi0+Z2V0VHJhbnNsYXRvck91
dHB1dFR5cGUoKSksCiAgICAgICBtUmVzb3VyY2VzKCksCiAgICAgICBtRnJhZ21lbnRDb21waWxl
cihudWxscHRyKSwKLSAgICAgIG1WZXJ0ZXhDb21waWxlcihudWxscHRyKQorICAgICAgbVZlcnRl
eENvbXBpbGVyKG51bGxwdHIpLAorICAgICAgbUNvbXB1dGVDb21waWxlcihudWxscHRyKQogewot
ICAgIEFTU0VSVChkYXRhLmNsaWVudFZlcnNpb24gPT0gMiB8fCBkYXRhLmNsaWVudFZlcnNpb24g
PT0gMyk7CisgICAgQVNTRVJUKHN0YXRlLmdldENsaWVudE1ham9yVmVyc2lvbigpID09IDIgfHwg
c3RhdGUuZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPT0gMyk7CiAKLSAgICBjb25zdCBnbDo6Q2Fw
cyAmY2FwcyAgICAgICAgICAgICA9ICpkYXRhLmNhcHM7Ci0gICAgY29uc3QgZ2w6OkV4dGVuc2lv
bnMgJmV4dGVuc2lvbnMgPSAqZGF0YS5leHRlbnNpb25zOworICAgIGNvbnN0IGdsOjpDYXBzICZj
YXBzICAgICAgICAgICAgID0gc3RhdGUuZ2V0Q2FwcygpOworICAgIGNvbnN0IGdsOjpFeHRlbnNp
b25zICZleHRlbnNpb25zID0gc3RhdGUuZ2V0RXh0ZW5zaW9ucygpOwogCiAgICAgU2hJbml0QnVp
bHRJblJlc291cmNlcygmbVJlc291cmNlcyk7CiAgICAgbVJlc291cmNlcy5NYXhWZXJ0ZXhBdHRy
aWJzICAgICAgICAgICAgID0gY2Fwcy5tYXhWZXJ0ZXhBdHRyaWJ1dGVzOwpAQCAtNTAsOCArNjcs
OSBAQAogICAgIG1SZXNvdXJjZXMuT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzICAgICA9IGV4dGVu
c2lvbnMuc3RhbmRhcmREZXJpdmF0aXZlczsKICAgICBtUmVzb3VyY2VzLkVYVF9kcmF3X2J1ZmZl
cnMgICAgICAgICAgICAgPSBleHRlbnNpb25zLmRyYXdCdWZmZXJzOwogICAgIG1SZXNvdXJjZXMu
RVhUX3NoYWRlcl90ZXh0dXJlX2xvZCAgICAgICA9IGV4dGVuc2lvbnMuc2hhZGVyVGV4dHVyZUxP
RDsKLSAgICAvLyBUT0RPOiBkaXNhYmxlZCB1bnRpbCB0aGUgZXh0ZW5zaW9uIGlzIGFjdHVhbGx5
IHN1cHBvcnRlZC4KLSAgICBtUmVzb3VyY2VzLk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwgPSAwOwor
ICAgIG1SZXNvdXJjZXMuT0VTX0VHTF9pbWFnZV9leHRlcm5hbCAgICAgICAgICA9IGV4dGVuc2lv
bnMuZWdsSW1hZ2VFeHRlcm5hbDsKKyAgICBtUmVzb3VyY2VzLk9FU19FR0xfaW1hZ2VfZXh0ZXJu
YWxfZXNzbDMgICAgPSBleHRlbnNpb25zLmVnbEltYWdlRXh0ZXJuYWxFc3NsMzsKKyAgICBtUmVz
b3VyY2VzLk5WX0VHTF9zdHJlYW1fY29uc3VtZXJfZXh0ZXJuYWwgPSBleHRlbnNpb25zLmVnbFN0
cmVhbUNvbnN1bWVyRXh0ZXJuYWw7CiAgICAgLy8gVE9ETzogdXNlIHNoYWRlciBwcmVjaXNpb24g
Y2FwcyB0byBkZXRlcm1pbmUgaWYgaGlnaCBwcmVjaXNpb24gaXMgc3VwcG9ydGVkPwogICAgIG1S
ZXNvdXJjZXMuRnJhZ21lbnRQcmVjaXNpb25IaWdoID0gMTsKICAgICBtUmVzb3VyY2VzLkVYVF9m
cmFnX2RlcHRoICAgICAgICA9IGV4dGVuc2lvbnMuZnJhZ0RlcHRoOwpAQCAtNjEsNiArNzksMzUg
QEAKICAgICBtUmVzb3VyY2VzLk1heEZyYWdtZW50SW5wdXRWZWN0b3JzID0gY2Fwcy5tYXhGcmFn
bWVudElucHV0Q29tcG9uZW50cyAvIDQ7CiAgICAgbVJlc291cmNlcy5NaW5Qcm9ncmFtVGV4ZWxP
ZmZzZXQgICA9IGNhcHMubWluUHJvZ3JhbVRleGVsT2Zmc2V0OwogICAgIG1SZXNvdXJjZXMuTWF4
UHJvZ3JhbVRleGVsT2Zmc2V0ICAgPSBjYXBzLm1heFByb2dyYW1UZXhlbE9mZnNldDsKKworICAg
IC8vIEdMU0wgRVMgMy4xIGNvbXB1dGUgc2hhZGVyIGNvbnN0YW50cworICAgIG1SZXNvdXJjZXMu
TWF4SW1hZ2VVbml0cyAgICAgICAgICAgICAgICAgICAgPSBjYXBzLm1heEltYWdlVW5pdHM7Cisg
ICAgbVJlc291cmNlcy5NYXhWZXJ0ZXhJbWFnZVVuaWZvcm1zICAgICAgICAgICA9IGNhcHMubWF4
VmVydGV4SW1hZ2VVbmlmb3JtczsKKyAgICBtUmVzb3VyY2VzLk1heEZyYWdtZW50SW1hZ2VVbmlm
b3JtcyAgICAgICAgID0gY2Fwcy5tYXhGcmFnbWVudEltYWdlVW5pZm9ybXM7CisgICAgbVJlc291
cmNlcy5NYXhDb21wdXRlSW1hZ2VVbmlmb3JtcyAgICAgICAgICA9IGNhcHMubWF4Q29tcHV0ZUlt
YWdlVW5pZm9ybXM7CisgICAgbVJlc291cmNlcy5NYXhDb21iaW5lZEltYWdlVW5pZm9ybXMgICAg
ICAgICA9IGNhcHMubWF4Q29tYmluZWRJbWFnZVVuaWZvcm1zOworICAgIG1SZXNvdXJjZXMuTWF4
Q29tYmluZWRTaGFkZXJPdXRwdXRSZXNvdXJjZXMgPSBjYXBzLm1heENvbWJpbmVkU2hhZGVyT3V0
cHV0UmVzb3VyY2VzOworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwdTsgaW5kZXggPCAzdTsg
KytpbmRleCkKKyAgICB7CisgICAgICAgIG1SZXNvdXJjZXMuTWF4Q29tcHV0ZVdvcmtHcm91cENv
dW50W2luZGV4XSA9IGNhcHMubWF4Q29tcHV0ZVdvcmtHcm91cENvdW50W2luZGV4XTsKKyAgICAg
ICAgbVJlc291cmNlcy5NYXhDb21wdXRlV29ya0dyb3VwU2l6ZVtpbmRleF0gID0gY2Fwcy5tYXhD
b21wdXRlV29ya0dyb3VwU2l6ZVtpbmRleF07CisgICAgfQorCisgICAgbVJlc291cmNlcy5NYXhD
b21wdXRlVW5pZm9ybUNvbXBvbmVudHMgPSBjYXBzLm1heENvbXB1dGVVbmlmb3JtQ29tcG9uZW50
czsKKyAgICBtUmVzb3VyY2VzLk1heENvbXB1dGVUZXh0dXJlSW1hZ2VVbml0cyA9IGNhcHMubWF4
Q29tcHV0ZVRleHR1cmVJbWFnZVVuaXRzOworCisgICAgbVJlc291cmNlcy5NYXhDb21wdXRlQXRv
bWljQ291bnRlcnMgICAgICAgPSBjYXBzLm1heENvbXB1dGVBdG9taWNDb3VudGVyczsKKyAgICBt
UmVzb3VyY2VzLk1heENvbXB1dGVBdG9taWNDb3VudGVyQnVmZmVycyA9IGNhcHMubWF4Q29tcHV0
ZUF0b21pY0NvdW50ZXJCdWZmZXJzOworCisgICAgbVJlc291cmNlcy5NYXhWZXJ0ZXhBdG9taWND
b3VudGVycyAgICAgICAgID0gY2Fwcy5tYXhWZXJ0ZXhBdG9taWNDb3VudGVyczsKKyAgICBtUmVz
b3VyY2VzLk1heEZyYWdtZW50QXRvbWljQ291bnRlcnMgICAgICAgPSBjYXBzLm1heEZyYWdtZW50
QXRvbWljQ291bnRlcnM7CisgICAgbVJlc291cmNlcy5NYXhDb21iaW5lZEF0b21pY0NvdW50ZXJz
ICAgICAgID0gY2Fwcy5tYXhDb21iaW5lZEF0b21pY0NvdW50ZXJzOworICAgIG1SZXNvdXJjZXMu
TWF4QXRvbWljQ291bnRlckJpbmRpbmdzICAgICAgICA9IGNhcHMubWF4QXRvbWljQ291bnRlckJ1
ZmZlckJpbmRpbmdzOworICAgIG1SZXNvdXJjZXMuTWF4VmVydGV4QXRvbWljQ291bnRlckJ1ZmZl
cnMgICA9IGNhcHMubWF4VmVydGV4QXRvbWljQ291bnRlckJ1ZmZlcnM7CisgICAgbVJlc291cmNl
cy5NYXhGcmFnbWVudEF0b21pY0NvdW50ZXJCdWZmZXJzID0gY2Fwcy5tYXhGcmFnbWVudEF0b21p
Y0NvdW50ZXJCdWZmZXJzOworICAgIG1SZXNvdXJjZXMuTWF4Q29tYmluZWRBdG9taWNDb3VudGVy
QnVmZmVycyA9IGNhcHMubWF4Q29tYmluZWRBdG9taWNDb3VudGVyQnVmZmVyczsKKyAgICBtUmVz
b3VyY2VzLk1heEF0b21pY0NvdW50ZXJCdWZmZXJTaXplICAgICAgPSBjYXBzLm1heEF0b21pY0Nv
dW50ZXJCdWZmZXJTaXplOwogfQogCiBDb21waWxlcjo6fkNvbXBpbGVyKCkKQEAgLTg5LDYgKzEz
NiwxNSBAQAogICAgICAgICBhY3RpdmVDb21waWxlckhhbmRsZXMtLTsKICAgICB9CiAKKyAgICBp
ZiAobUNvbXB1dGVDb21waWxlcikKKyAgICB7CisgICAgICAgIFNoRGVzdHJ1Y3QobUNvbXB1dGVD
b21waWxlcik7CisgICAgICAgIG1Db21wdXRlQ29tcGlsZXIgPSBudWxscHRyOworCisgICAgICAg
IEFTU0VSVChhY3RpdmVDb21waWxlckhhbmRsZXMgPiAwKTsKKyAgICAgICAgYWN0aXZlQ29tcGls
ZXJIYW5kbGVzLS07CisgICAgfQorCiAgICAgaWYgKGFjdGl2ZUNvbXBpbGVySGFuZGxlcyA9PSAw
KQogICAgIHsKICAgICAgICAgU2hGaW5hbGl6ZSgpOwpAQCAtMTExLDcgKzE2Nyw5IEBACiAgICAg
ICAgIGNhc2UgR0xfRlJBR01FTlRfU0hBREVSOgogICAgICAgICAgICAgY29tcGlsZXIgPSAmbUZy
YWdtZW50Q29tcGlsZXI7CiAgICAgICAgICAgICBicmVhazsKLQorICAgICAgICBjYXNlIEdMX0NP
TVBVVEVfU0hBREVSOgorICAgICAgICAgICAgY29tcGlsZXIgPSAmbUNvbXB1dGVDb21waWxlcjsK
KyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbXBpbGVyLmgJKHJldmlzaW9uIDIwODAy
MSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db21waWxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNiwxNyArMTYsMTcgQEAKIG5hbWVzcGFjZSByeAogewogY2xhc3Mg
Q29tcGlsZXJJbXBsOwotY2xhc3MgSW1wbEZhY3Rvcnk7CitjbGFzcyBHTEltcGxGYWN0b3J5Owog
fQogCiBuYW1lc3BhY2UgZ2wKIHsKLXN0cnVjdCBEYXRhOworY2xhc3MgQ29udGV4dFN0YXRlOwog
CiBjbGFzcyBDb21waWxlciBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6
Ci0gICAgQ29tcGlsZXIocng6OkltcGxGYWN0b3J5ICppbXBsRmFjdG9yeSwgY29uc3QgRGF0YSAm
ZGF0YSk7CisgICAgQ29tcGlsZXIocng6OkdMSW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LCBjb25z
dCBDb250ZXh0U3RhdGUgJmRhdGEpOwogICAgIH5Db21waWxlcigpOwogCiAgICAgRXJyb3IgcmVs
ZWFzZSgpOwpAQCAtNDIsNiArNDIsNyBAQAogCiAgICAgU2hIYW5kbGUgbUZyYWdtZW50Q29tcGls
ZXI7CiAgICAgU2hIYW5kbGUgbVZlcnRleENvbXBpbGVyOworICAgIFNoSGFuZGxlIG1Db21wdXRl
Q29tcGlsZXI7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgZ2wKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dC5jcHAJKHJldmlzaW9uIDIwODAy
MSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTEsNyArMTEsMTAgQEAKIAogI2luY2x1ZGUgPGl0ZXJhdG9yPgog
I2luY2x1ZGUgPHNzdHJlYW0+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dmVjdG9y
PgogCisjaW5jbHVkZSAiY29tbW9uL21hdHJpeF91dGlscy5oIgogI2luY2x1ZGUgImNvbW1vbi9w
bGF0Zm9ybS5oIgogI2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKICNpbmNsdWRlICJsaWJB
TkdMRS9CdWZmZXIuaCIKQEAgLTIwLDYgKzIzLDcgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9GZW5j
ZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAibGliQU5H
TEUvRnJhbWVidWZmZXJBdHRhY2htZW50LmgiCisjaW5jbHVkZSAibGliQU5HTEUvUGF0aC5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL1Byb2dyYW0uaCIKICNpbmNsdWRlICJsaWJBTkdMRS9RdWVyeS5o
IgogI2luY2x1ZGUgImxpYkFOR0xFL1JlbmRlcmJ1ZmZlci5oIgpAQCAtMzEsMjggKzM1LDgzIEBA
CiAjaW5jbHVkZSAibGliQU5HTEUvVmVydGV4QXJyYXkuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9m
b3JtYXR1dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3ZhbGlkYXRpb25FUy5oIgotI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1JlbmRlcmVyLmgiCisjaW5jbHVkZSAibGliQU5HTEUvV29y
a2Fyb3VuZHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9Db250ZXh0SW1wbC5oIgor
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0VHTEltcGxGYWN0b3J5LmgiCisjaW5jbHVkZSAi
bGliQU5HTEUvcXVlcnljb252ZXJzaW9ucy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3F1ZXJ5dXRp
bHMuaCIKIAogbmFtZXNwYWNlCiB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotZ2w6OkVycm9y
IEdldFF1ZXJ5T2JqZWN0UGFyYW1ldGVyKGdsOjpDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaWQs
IEdMZW51bSBwbmFtZSwgVCAqcGFyYW1zKQorc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gR2F0aGVy
UGF0aHMoZ2w6OlJlc291cmNlTWFuYWdlciAmcmVzb3VyY2VNYW5hZ2VyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1QYXRocywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlKQogewotICAgIGdsOjpRdWVyeSAq
cXVlcnlPYmplY3QgPSBjb250ZXh0LT5nZXRRdWVyeShpZCwgZmFsc2UsIEdMX05PTkUpOwotICAg
IEFTU0VSVChxdWVyeU9iamVjdCAhPSBudWxscHRyKTsKKyAgICBzdGQ6OnZlY3RvcjxnbDo6UGF0
aCAqPiByZXQ7CisgICAgcmV0LnJlc2VydmUobnVtUGF0aHMpOwogCisgICAgY29uc3QgYXV0byAq
bmFtZUFycmF5ID0gc3RhdGljX2Nhc3Q8Y29uc3QgVCAqPihwYXRocyk7CisKKyAgICBmb3IgKEdM
c2l6ZWkgaSA9IDA7IGkgPCBudW1QYXRoczsgKytpKQorICAgIHsKKyAgICAgICAgY29uc3QgR0x1
aW50IHBhdGhOYW1lID0gbmFtZUFycmF5W2ldICsgcGF0aEJhc2U7CisKKyAgICAgICAgcmV0LnB1
c2hfYmFjayhyZXNvdXJjZU1hbmFnZXIuZ2V0UGF0aChwYXRoTmFtZSkpOworICAgIH0KKworICAg
IHJldHVybiByZXQ7Cit9CisKK3N0ZDo6dmVjdG9yPGdsOjpQYXRoICo+IEdhdGhlclBhdGhzKGds
OjpSZXNvdXJjZU1hbmFnZXIgJnJlc291cmNlTWFuYWdlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UpCit7CisgICAgc3dpdGNoIChwYXRoTmFtZVR5
cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICBy
ZXR1cm4gR2F0aGVyUGF0aHM8R0x1Ynl0ZT4ocmVzb3VyY2VNYW5hZ2VyLCBudW1QYXRocywgcGF0
aHMsIHBhdGhCYXNlKTsKKworICAgICAgICBjYXNlIEdMX0JZVEU6CisgICAgICAgICAgICByZXR1
cm4gR2F0aGVyUGF0aHM8R0xieXRlPihyZXNvdXJjZU1hbmFnZXIsIG51bVBhdGhzLCBwYXRocywg
cGF0aEJhc2UpOworCisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAgICAgICAg
ICByZXR1cm4gR2F0aGVyUGF0aHM8R0x1c2hvcnQ+KHJlc291cmNlTWFuYWdlciwgbnVtUGF0aHMs
IHBhdGhzLCBwYXRoQmFzZSk7CisKKyAgICAgICAgY2FzZSBHTF9TSE9SVDoKKyAgICAgICAgICAg
IHJldHVybiBHYXRoZXJQYXRoczxHTHNob3J0PihyZXNvdXJjZU1hbmFnZXIsIG51bVBhdGhzLCBw
YXRocywgcGF0aEJhc2UpOworCisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgorICAgICAg
ICAgICAgcmV0dXJuIEdhdGhlclBhdGhzPEdMdWludD4ocmVzb3VyY2VNYW5hZ2VyLCBudW1QYXRo
cywgcGF0aHMsIHBhdGhCYXNlKTsKKworICAgICAgICBjYXNlIEdMX0lOVDoKKyAgICAgICAgICAg
IHJldHVybiBHYXRoZXJQYXRoczxHTGludD4ocmVzb3VyY2VNYW5hZ2VyLCBudW1QYXRocywgcGF0
aHMsIHBhdGhCYXNlKTsKKyAgICB9CisKKyAgICBVTlJFQUNIQUJMRSgpOworICAgIHJldHVybiBz
dGQ6OnZlY3RvcjxnbDo6UGF0aCAqPigpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2ds
OjpFcnJvciBHZXRRdWVyeU9iamVjdFBhcmFtZXRlcihnbDo6UXVlcnkgKnF1ZXJ5LCBHTGVudW0g
cG5hbWUsIFQgKnBhcmFtcykKK3sKKyAgICBBU1NFUlQocXVlcnkgIT0gbnVsbHB0cik7CisKICAg
ICBzd2l0Y2ggKHBuYW1lKQogICAgIHsKICAgICAgICAgY2FzZSBHTF9RVUVSWV9SRVNVTFRfRVhU
OgotICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5T2JqZWN0LT5nZXRSZXN1bHQocGFyYW1zKTsKKyAg
ICAgICAgICAgIHJldHVybiBxdWVyeS0+Z2V0UmVzdWx0KHBhcmFtcyk7CiAgICAgICAgIGNhc2Ug
R0xfUVVFUllfUkVTVUxUX0FWQUlMQUJMRV9FWFQ6CiAgICAgICAgIHsKICAgICAgICAgICAgIGJv
b2wgYXZhaWxhYmxlOwotICAgICAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gcXVlcnlPYmplY3Qt
PmlzUmVzdWx0QXZhaWxhYmxlKCZhdmFpbGFibGUpOworICAgICAgICAgICAgZ2w6OkVycm9yIGVy
cm9yID0gcXVlcnktPmlzUmVzdWx0QXZhaWxhYmxlKCZhdmFpbGFibGUpOwogICAgICAgICAgICAg
aWYgKCFlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgKnBh
cmFtcyA9IHN0YXRpY19jYXN0PFQ+KGF2YWlsYWJsZSA/IEdMX1RSVUUgOiBHTF9GQUxTRSk7Cisg
ICAgICAgICAgICAgICAgKnBhcmFtcyA9IGdsOjpDb252ZXJ0RnJvbUdMYm9vbGVhbjxUPihhdmFp
bGFibGUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGVycm9yOwogICAgICAg
ICB9CkBAIC04MCwxMSArMTM5LDE2IEBACiB9CiAKIC8vIEF0dHJpYnV0ZSBtYXAgcXVlcmllcy4K
LUVHTGludCBHZXRDbGllbnRWZXJzaW9uKGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJz
KQorRUdMaW50IEdldENsaWVudE1ham9yVmVyc2lvbihjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAm
YXR0cmlicykKIHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RUdMaW50PihhdHRyaWJzLmdldChF
R0xfQ09OVEVYVF9DTElFTlRfVkVSU0lPTiwgMSkpOwogfQogCitFR0xpbnQgR2V0Q2xpZW50TWlu
b3JWZXJzaW9uKGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQoreworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxFR0xpbnQ+KGF0dHJpYnMuZ2V0KEVHTF9DT05URVhUX01JTk9SX1ZFUlNJ
T04sIDApKTsKK30KKwogR0xlbnVtIEdldFJlc2V0U3RyYXRlZ3koY29uc3QgZWdsOjpBdHRyaWJ1
dGVNYXAgJmF0dHJpYnMpCiB7CiAgICAgRUdMQXR0cmliIGF0dHJpYiA9IGF0dHJpYnMuZ2V0KEVH
TF9DT05URVhUX09QRU5HTF9SRVNFVF9OT1RJRklDQVRJT05fU1RSQVRFR1lfRVhULApAQCAtMTE2
LDE3ICsxODAsNTkgQEAKICAgICByZXR1cm4gKGF0dHJpYnMuZ2V0KEVHTF9DT05URVhUX09QRU5H
TF9OT19FUlJPUl9LSFIsIEVHTF9GQUxTRSkgPT0gRUdMX1RSVUUpOwogfQogCitib29sIEdldFdl
YkdMQ29udGV4dChjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKK3sKKyAgICByZXR1
cm4gKGF0dHJpYnMuZ2V0KEVHTF9DT05URVhUX1dFQkdMX0NPTVBBVElCSUxJVFlfQU5HTEUsIEVH
TF9GQUxTRSkgPT0gRUdMX1RSVUUpOworfQorCitib29sIEdldEJpbmRHZW5lcmF0ZXNSZXNvdXJj
ZShjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKK3sKKyAgICByZXR1cm4gKGF0dHJp
YnMuZ2V0KEVHTF9DT05URVhUX0JJTkRfR0VORVJBVEVTX1JFU09VUkNFX0NIUk9NSVVNLCBFR0xf
VFJVRSkgPT0gRUdMX1RSVUUpOworfQorCitzdGQ6OnN0cmluZyBHZXRPYmplY3RMYWJlbEZyb21Q
b2ludGVyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBHTGNoYXIgKmxhYmVsKQoreworICAgIHN0ZDo6
c3RyaW5nIGxhYmVsTmFtZTsKKyAgICBpZiAobGFiZWwgIT0gbnVsbHB0cikKKyAgICB7CisgICAg
ICAgIHNpemVfdCBsYWJlbExlbmd0aCA9IGxlbmd0aCA8IDAgPyBzdHJsZW4obGFiZWwpIDogbGVu
Z3RoOworICAgICAgICBsYWJlbE5hbWUgICAgICAgICAgPSBzdGQ6OnN0cmluZyhsYWJlbCwgbGFi
ZWxMZW5ndGgpOworICAgIH0KKyAgICByZXR1cm4gbGFiZWxOYW1lOworfQorCit2b2lkIEdldE9i
amVjdExhYmVsQmFzZShjb25zdCBzdGQ6OnN0cmluZyAmb2JqZWN0TGFiZWwsCisgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKmxhYmVsKQor
eworICAgIHNpemVfdCB3cml0ZUxlbmd0aCA9IG9iamVjdExhYmVsLmxlbmd0aCgpOworICAgIGlm
IChsYWJlbCAhPSBudWxscHRyICYmIGJ1ZlNpemUgPiAwKQorICAgIHsKKyAgICAgICAgd3JpdGVM
ZW5ndGggPSBzdGQ6Om1pbihzdGF0aWNfY2FzdDxzaXplX3Q+KGJ1ZlNpemUpIC0gMSwgb2JqZWN0
TGFiZWwubGVuZ3RoKCkpOworICAgICAgICBzdGQ6OmNvcHkob2JqZWN0TGFiZWwuYmVnaW4oKSwg
b2JqZWN0TGFiZWwuYmVnaW4oKSArIHdyaXRlTGVuZ3RoLCBsYWJlbCk7CisgICAgICAgIGxhYmVs
W3dyaXRlTGVuZ3RoXSA9ICdcMCc7CisgICAgfQorCisgICAgaWYgKGxlbmd0aCAhPSBudWxscHRy
KQorICAgIHsKKyAgICAgICAgKmxlbmd0aCA9IHN0YXRpY19jYXN0PEdMc2l6ZWk+KHdyaXRlTGVu
Z3RoKTsKKyAgICB9Cit9CisKIH0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKIAogbmFtZXNwYWNl
IGdsCiB7CiAKLUNvbnRleHQ6OkNvbnRleHQoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZywKK0Nv
bnRleHQ6OkNvbnRleHQocng6OkVHTEltcGxGYWN0b3J5ICppbXBsRmFjdG9yeSwKKyAgICAgICAg
ICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZywKICAgICAgICAgICAgICAgICAgY29u
c3QgQ29udGV4dCAqc2hhcmVDb250ZXh0LAotICAgICAgICAgICAgICAgICByeDo6UmVuZGVyZXIg
KnJlbmRlcmVyLAogICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0
cmlicykKLSAgICA6IFZhbGlkYXRpb25Db250ZXh0KEdldENsaWVudFZlcnNpb24oYXR0cmlicyks
Ci0gICAgICAgICAgICAgICAgICAgICAgICBtU3RhdGUsCisKKyAgICA6IFZhbGlkYXRpb25Db250
ZXh0KEdldENsaWVudE1ham9yVmVyc2lvbihhdHRyaWJzKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEdldENsaWVudE1pbm9yVmVyc2lvbihhdHRyaWJzKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICZtR0xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIG1DYXBzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgbVRleHR1cmVDYXBzLAogICAgICAgICAgICAgICAgICAgICAgICAgbUV4
dGVuc2lvbnMsCkBAIC0xMzMsMTQgKzIzOSwxNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgIG1MaW1pdGF0aW9ucywKICAgICAgICAg
ICAgICAgICAgICAgICAgIEdldE5vRXJyb3IoYXR0cmlicykpLAorICAgICAgbUltcGxlbWVudGF0
aW9uKGltcGxGYWN0b3J5LT5jcmVhdGVDb250ZXh0KG1TdGF0ZSkpLAogICAgICAgbUNvbXBpbGVy
KG51bGxwdHIpLAotICAgICAgbVJlbmRlcmVyKHJlbmRlcmVyKSwKLSAgICAgIG1DbGllbnRWZXJz
aW9uKEdldENsaWVudFZlcnNpb24oYXR0cmlicykpLAorICAgICAgbUNsaWVudE1ham9yVmVyc2lv
bihHZXRDbGllbnRNYWpvclZlcnNpb24oYXR0cmlicykpLAorICAgICAgbUNsaWVudE1pbm9yVmVy
c2lvbihHZXRDbGllbnRNaW5vclZlcnNpb24oYXR0cmlicykpLAogICAgICAgbUNvbmZpZyhjb25m
aWcpLAogICAgICAgbUNsaWVudFR5cGUoRUdMX09QRU5HTF9FU19BUEkpLAogICAgICAgbUhhc0Jl
ZW5DdXJyZW50KGZhbHNlKSwKICAgICAgIG1Db250ZXh0TG9zdChmYWxzZSksCiAgICAgICBtUmVz
ZXRTdGF0dXMoR0xfTk9fRVJST1IpLAorICAgICAgbUNvbnRleHRMb3N0Rm9yY2VkKGZhbHNlKSwK
ICAgICAgIG1SZXNldFN0cmF0ZWd5KEdldFJlc2V0U3RyYXRlZ3koYXR0cmlicykpLAogICAgICAg
bVJvYnVzdEFjY2VzcyhHZXRSb2J1c3RBY2Nlc3MoYXR0cmlicykpLAogICAgICAgbUN1cnJlbnRT
dXJmYWNlKG51bGxwdHIpLApAQCAtMTQ4LDEzICsyNTYsMTUgQEAKIHsKICAgICBBU1NFUlQoIW1S
b2J1c3RBY2Nlc3MpOyAgLy8gVW5pbXBsZW1lbnRlZAogCi0gICAgaW5pdENhcHMobUNsaWVudFZl
cnNpb24pOworICAgIGluaXRDYXBzKEdldFdlYkdMQ29udGV4dChhdHRyaWJzKSk7CisgICAgaW5p
dFdvcmthcm91bmRzKCk7CiAKLSAgICBtU3RhdGUuaW5pdGlhbGl6ZShtQ2FwcywgbUV4dGVuc2lv
bnMsIG1DbGllbnRWZXJzaW9uLCBHZXREZWJ1ZyhhdHRyaWJzKSk7CisgICAgbUdMU3RhdGUuaW5p
dGlhbGl6ZShtQ2FwcywgbUV4dGVuc2lvbnMsIG1DbGllbnRNYWpvclZlcnNpb24sIEdldERlYnVn
KGF0dHJpYnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgR2V0QmluZEdlbmVyYXRlc1Jlc291
cmNlKGF0dHJpYnMpKTsKIAogICAgIG1GZW5jZU5WSGFuZGxlQWxsb2NhdG9yLnNldEJhc2VIYW5k
bGUoMCk7CiAKLSAgICBpZiAoc2hhcmVDb250ZXh0ICE9IE5VTEwpCisgICAgaWYgKHNoYXJlQ29u
dGV4dCAhPSBudWxscHRyKQogICAgIHsKICAgICAgICAgbVJlc291cmNlTWFuYWdlciA9IHNoYXJl
Q29udGV4dC0+bVJlc291cmNlTWFuYWdlcjsKICAgICAgICAgbVJlc291cmNlTWFuYWdlci0+YWRk
UmVmKCk7CkBAIC0xNjEsMTAgKzI3MSwxMCBAQAogICAgIH0KICAgICBlbHNlCiAgICAgewotICAg
ICAgICBtUmVzb3VyY2VNYW5hZ2VyID0gbmV3IFJlc291cmNlTWFuYWdlcihtUmVuZGVyZXIpOwor
ICAgICAgICBtUmVzb3VyY2VNYW5hZ2VyID0gbmV3IFJlc291cmNlTWFuYWdlcigpOwogICAgIH0K
IAotICAgIG1EYXRhLnJlc291cmNlTWFuYWdlciA9IG1SZXNvdXJjZU1hbmFnZXI7CisgICAgbVN0
YXRlLm1SZXNvdXJjZU1hbmFnZXIgPSBtUmVzb3VyY2VNYW5hZ2VyOwogCiAgICAgLy8gW09wZW5H
TCBFUyAyLjAuMjRdIHNlY3Rpb24gMy43IHBhZ2UgODM6CiAgICAgLy8gSW4gdGhlIGluaXRpYWwg
c3RhdGUsIFRFWFRVUkVfMkQgYW5kIFRFWFRVUkVfQ1VCRV9NQVAgaGF2ZSB0d29kaW1lbnNpb25h
bApAQCAtMTcyLDI0ICsyODIsMzEgQEAKICAgICAvLyBJbiBvcmRlciB0aGF0IGFjY2VzcyB0byB0
aGVzZSBpbml0aWFsIHRleHR1cmVzIG5vdCBiZSBsb3N0LCB0aGV5IGFyZSB0cmVhdGVkIGFzIHRl
eHR1cmUKICAgICAvLyBvYmplY3RzIGFsbCBvZiB3aG9zZSBuYW1lcyBhcmUgMC4KIAotICAgIFRl
eHR1cmUgKnplcm9UZXh0dXJlMkQgPSBuZXcgVGV4dHVyZShtUmVuZGVyZXItPmNyZWF0ZVRleHR1
cmUoR0xfVEVYVFVSRV8yRCksIDAsIEdMX1RFWFRVUkVfMkQpOworICAgIFRleHR1cmUgKnplcm9U
ZXh0dXJlMkQgPSBuZXcgVGV4dHVyZShtSW1wbGVtZW50YXRpb24uZ2V0KCksIDAsIEdMX1RFWFRV
UkVfMkQpOwogICAgIG1aZXJvVGV4dHVyZXNbR0xfVEVYVFVSRV8yRF0uc2V0KHplcm9UZXh0dXJl
MkQpOwogCi0gICAgVGV4dHVyZSAqemVyb1RleHR1cmVDdWJlID0gbmV3IFRleHR1cmUobVJlbmRl
cmVyLT5jcmVhdGVUZXh0dXJlKEdMX1RFWFRVUkVfQ1VCRV9NQVApLCAwLCBHTF9URVhUVVJFX0NV
QkVfTUFQKTsKKyAgICBUZXh0dXJlICp6ZXJvVGV4dHVyZUN1YmUgPSBuZXcgVGV4dHVyZShtSW1w
bGVtZW50YXRpb24uZ2V0KCksIDAsIEdMX1RFWFRVUkVfQ1VCRV9NQVApOwogICAgIG1aZXJvVGV4
dHVyZXNbR0xfVEVYVFVSRV9DVUJFX01BUF0uc2V0KHplcm9UZXh0dXJlQ3ViZSk7CiAKLSAgICBp
ZiAobUNsaWVudFZlcnNpb24gPj0gMykKKyAgICBpZiAobUNsaWVudE1ham9yVmVyc2lvbiA+PSAz
KQogICAgIHsKICAgICAgICAgLy8gVE9ETzogVGhlc2UgY291bGQgYWxzbyBiZSBlbmFibGVkIHZp
YSBleHRlbnNpb24KLSAgICAgICAgVGV4dHVyZSAqemVyb1RleHR1cmUzRCA9IG5ldyBUZXh0dXJl
KG1SZW5kZXJlci0+Y3JlYXRlVGV4dHVyZShHTF9URVhUVVJFXzNEKSwgMCwgR0xfVEVYVFVSRV8z
RCk7CisgICAgICAgIFRleHR1cmUgKnplcm9UZXh0dXJlM0QgPSBuZXcgVGV4dHVyZShtSW1wbGVt
ZW50YXRpb24uZ2V0KCksIDAsIEdMX1RFWFRVUkVfM0QpOwogICAgICAgICBtWmVyb1RleHR1cmVz
W0dMX1RFWFRVUkVfM0RdLnNldCh6ZXJvVGV4dHVyZTNEKTsKIAotICAgICAgICBUZXh0dXJlICp6
ZXJvVGV4dHVyZTJEQXJyYXkgPSBuZXcgVGV4dHVyZShtUmVuZGVyZXItPmNyZWF0ZVRleHR1cmUo
R0xfVEVYVFVSRV8yRF9BUlJBWSksIDAsIEdMX1RFWFRVUkVfMkRfQVJSQVkpOworICAgICAgICBU
ZXh0dXJlICp6ZXJvVGV4dHVyZTJEQXJyYXkgPSBuZXcgVGV4dHVyZShtSW1wbGVtZW50YXRpb24u
Z2V0KCksIDAsIEdMX1RFWFRVUkVfMkRfQVJSQVkpOwogICAgICAgICBtWmVyb1RleHR1cmVzW0dM
X1RFWFRVUkVfMkRfQVJSQVldLnNldCh6ZXJvVGV4dHVyZTJEQXJyYXkpOwogICAgIH0KIAotICAg
IG1TdGF0ZS5pbml0aWFsaXplWmVyb1RleHR1cmVzKG1aZXJvVGV4dHVyZXMpOworICAgIGlmICht
RXh0ZW5zaW9ucy5lZ2xJbWFnZUV4dGVybmFsIHx8IG1FeHRlbnNpb25zLmVnbFN0cmVhbUNvbnN1
bWVyRXh0ZXJuYWwpCisgICAgeworICAgICAgICBUZXh0dXJlICp6ZXJvVGV4dHVyZUV4dGVybmFs
ID0KKyAgICAgICAgICAgIG5ldyBUZXh0dXJlKG1JbXBsZW1lbnRhdGlvbi5nZXQoKSwgMCwgR0xf
VEVYVFVSRV9FWFRFUk5BTF9PRVMpOworICAgICAgICBtWmVyb1RleHR1cmVzW0dMX1RFWFRVUkVf
RVhURVJOQUxfT0VTXS5zZXQoemVyb1RleHR1cmVFeHRlcm5hbCk7CisgICAgfQogCisgICAgbUdM
U3RhdGUuaW5pdGlhbGl6ZVplcm9UZXh0dXJlcyhtWmVyb1RleHR1cmVzKTsKKwogICAgIGJpbmRW
ZXJ0ZXhBcnJheSgwKTsKICAgICBiaW5kQXJyYXlCdWZmZXIoMCk7CiAgICAgYmluZEVsZW1lbnRB
cnJheUJ1ZmZlcigwKTsKQEAgLTIwNyw3ICszMjQsNyBAQAogICAgIGJpbmRQaXhlbFBhY2tCdWZm
ZXIoMCk7CiAgICAgYmluZFBpeGVsVW5wYWNrQnVmZmVyKDApOwogCi0gICAgaWYgKG1DbGllbnRW
ZXJzaW9uID49IDMpCisgICAgaWYgKG1DbGllbnRNYWpvclZlcnNpb24gPj0gMykKICAgICB7CiAg
ICAgICAgIC8vIFtPcGVuR0wgRVMgMy4wLjJdIHNlY3Rpb24gMi4xNC4xIHBnIDg1OgogICAgICAg
ICAvLyBJbiB0aGUgaW5pdGlhbCBzdGF0ZSwgYSBkZWZhdWx0IHRyYW5zZm9ybSBmZWVkYmFjayBv
YmplY3QgaXMgYm91bmQgYW5kIHRyZWF0ZWQgYXMKQEAgLTIxNiw3ICszMzMsNyBAQAogICAgICAg
ICBiaW5kVHJhbnNmb3JtRmVlZGJhY2soMCk7CiAgICAgfQogCi0gICAgbUNvbXBpbGVyID0gbmV3
IENvbXBpbGVyKG1SZW5kZXJlciwgZ2V0RGF0YSgpKTsKKyAgICBtQ29tcGlsZXIgPSBuZXcgQ29t
cGlsZXIobUltcGxlbWVudGF0aW9uLmdldCgpLCBtU3RhdGUpOwogCiAgICAgLy8gSW5pdGlhbGl6
ZSBkaXJ0eSBiaXQgbWFza3MKICAgICAvLyBUT0RPKGptYWRpbGwpOiBhZGRpdGlvbmFsIEVTMyBz
dGF0ZQpAQCAtMjI2LDYgKzM0Myw3IEBACiAgICAgbVRleEltYWdlRGlydHlCaXRzLnNldChTdGF0
ZTo6RElSVFlfQklUX1VOUEFDS19TS0lQX0lNQUdFUyk7CiAgICAgbVRleEltYWdlRGlydHlCaXRz
LnNldChTdGF0ZTo6RElSVFlfQklUX1VOUEFDS19TS0lQX1JPV1MpOwogICAgIG1UZXhJbWFnZURp
cnR5Qml0cy5zZXQoU3RhdGU6OkRJUlRZX0JJVF9VTlBBQ0tfU0tJUF9QSVhFTFMpOworICAgIG1U
ZXhJbWFnZURpcnR5Qml0cy5zZXQoU3RhdGU6OkRJUlRZX0JJVF9VTlBBQ0tfQlVGRkVSX0JJTkRJ
TkcpOwogICAgIC8vIE5vIGRpcnR5IG9iamVjdHMuCiAKICAgICAvLyBSZWFkcGl4ZWxzIHVzZXMg
dGhlIHBhY2sgc3RhdGUgYW5kIHJlYWQgRkJPCkBAIC0yMzQsNiArMzUyLDcgQEAKICAgICBtUmVh
ZFBpeGVsc0RpcnR5Qml0cy5zZXQoU3RhdGU6OkRJUlRZX0JJVF9QQUNLX1JPV19MRU5HVEgpOwog
ICAgIG1SZWFkUGl4ZWxzRGlydHlCaXRzLnNldChTdGF0ZTo6RElSVFlfQklUX1BBQ0tfU0tJUF9S
T1dTKTsKICAgICBtUmVhZFBpeGVsc0RpcnR5Qml0cy5zZXQoU3RhdGU6OkRJUlRZX0JJVF9QQUNL
X1NLSVBfUElYRUxTKTsKKyAgICBtUmVhZFBpeGVsc0RpcnR5Qml0cy5zZXQoU3RhdGU6OkRJUlRZ
X0JJVF9QQUNLX0JVRkZFUl9CSU5ESU5HKTsKICAgICBtUmVhZFBpeGVsc0RpcnR5T2JqZWN0cy5z
ZXQoU3RhdGU6OkRJUlRZX09CSkVDVF9SRUFEX0ZSQU1FQlVGRkVSKTsKIAogICAgIG1DbGVhckRp
cnR5Qml0cy5zZXQoU3RhdGU6OkRJUlRZX0JJVF9SQVNURVJJWkVSX0RJU0NBUkRfRU5BQkxFRCk7
CkBAIC0yNTMsMTEgKzM3MiwxMyBAQAogICAgIG1CbGl0RGlydHlCaXRzLnNldChTdGF0ZTo6RElS
VFlfQklUX1NDSVNTT1IpOwogICAgIG1CbGl0RGlydHlPYmplY3RzLnNldChTdGF0ZTo6RElSVFlf
T0JKRUNUX1JFQURfRlJBTUVCVUZGRVIpOwogICAgIG1CbGl0RGlydHlPYmplY3RzLnNldChTdGF0
ZTo6RElSVFlfT0JKRUNUX0RSQVdfRlJBTUVCVUZGRVIpOworCisgICAgaGFuZGxlRXJyb3IobUlt
cGxlbWVudGF0aW9uLT5pbml0aWFsaXplKCkpOwogfQogCiBDb250ZXh0Ojp+Q29udGV4dCgpCiB7
Ci0gICAgbVN0YXRlLnJlc2V0KCk7CisgICAgbUdMU3RhdGUucmVzZXQoKTsKIAogICAgIGZvciAo
YXV0byBmcmFtZWJ1ZmZlciA6IG1GcmFtZWJ1ZmZlck1hcCkKICAgICB7CkBAIC0zMjIsMTQgKzQ0
MywxNCBAQAogICAgICAgICBpbml0UmVuZGVyZXJTdHJpbmcoKTsKICAgICAgICAgaW5pdEV4dGVu
c2lvblN0cmluZ3MoKTsKIAotICAgICAgICBtU3RhdGUuc2V0Vmlld3BvcnRQYXJhbXMoMCwgMCwg
c3VyZmFjZS0+Z2V0V2lkdGgoKSwgc3VyZmFjZS0+Z2V0SGVpZ2h0KCkpOwotICAgICAgICBtU3Rh
dGUuc2V0U2Npc3NvclBhcmFtcygwLCAwLCBzdXJmYWNlLT5nZXRXaWR0aCgpLCBzdXJmYWNlLT5n
ZXRIZWlnaHQoKSk7CisgICAgICAgIG1HTFN0YXRlLnNldFZpZXdwb3J0UGFyYW1zKDAsIDAsIHN1
cmZhY2UtPmdldFdpZHRoKCksIHN1cmZhY2UtPmdldEhlaWdodCgpKTsKKyAgICAgICAgbUdMU3Rh
dGUuc2V0U2Npc3NvclBhcmFtcygwLCAwLCBzdXJmYWNlLT5nZXRXaWR0aCgpLCBzdXJmYWNlLT5n
ZXRIZWlnaHQoKSk7CiAKICAgICAgICAgbUhhc0JlZW5DdXJyZW50ID0gdHJ1ZTsKICAgICB9CiAK
ICAgICAvLyBUT0RPKGptYWRpbGwpOiBSZXdvcmsgdGhpcyB3aGVuIHdlIHN1cHBvcnQgQ29udGV4
dEltcGwKLSAgICBtU3RhdGUuc2V0QWxsRGlydHlCaXRzKCk7CisgICAgbUdMU3RhdGUuc2V0QWxs
RGlydHlCaXRzKCk7CiAKICAgICBpZiAobUN1cnJlbnRTdXJmYWNlKQogICAgIHsKQEAgLTM0Miwx
OSArNDYzLDE5IEBACiAgICAgLy8gZnJhbWVidWZmZXIgKG9yIGxhY2sgb2YpIHdpbGwgaGF2ZSBh
IG51bGxwdHIuCiAgICAgewogICAgICAgICBGcmFtZWJ1ZmZlciAqbmV3RGVmYXVsdCA9IHN1cmZh
Y2UtPmdldERlZmF1bHRGcmFtZWJ1ZmZlcigpOwotICAgICAgICBpZiAobVN0YXRlLmdldFJlYWRG
cmFtZWJ1ZmZlcigpID09IG51bGxwdHIpCisgICAgICAgIGlmIChtR0xTdGF0ZS5nZXRSZWFkRnJh
bWVidWZmZXIoKSA9PSBudWxscHRyKQogICAgICAgICB7Ci0gICAgICAgICAgICBtU3RhdGUuc2V0
UmVhZEZyYW1lYnVmZmVyQmluZGluZyhuZXdEZWZhdWx0KTsKKyAgICAgICAgICAgIG1HTFN0YXRl
LnNldFJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcobmV3RGVmYXVsdCk7CiAgICAgICAgIH0KLSAgICAg
ICAgaWYgKG1TdGF0ZS5nZXREcmF3RnJhbWVidWZmZXIoKSA9PSBudWxscHRyKQorICAgICAgICBp
ZiAobUdMU3RhdGUuZ2V0RHJhd0ZyYW1lYnVmZmVyKCkgPT0gbnVsbHB0cikKICAgICAgICAgewot
ICAgICAgICAgICAgbVN0YXRlLnNldERyYXdGcmFtZWJ1ZmZlckJpbmRpbmcobmV3RGVmYXVsdCk7
CisgICAgICAgICAgICBtR0xTdGF0ZS5zZXREcmF3RnJhbWVidWZmZXJCaW5kaW5nKG5ld0RlZmF1
bHQpOwogICAgICAgICB9CiAgICAgICAgIG1GcmFtZWJ1ZmZlck1hcFswXSA9IG5ld0RlZmF1bHQ7
CiAgICAgfQogCiAgICAgLy8gTm90aWZ5IHRoZSByZW5kZXJlciBvZiBhIGNvbnRleHQgc3dpdGNo
Ci0gICAgbVJlbmRlcmVyLT5vbk1ha2VDdXJyZW50KGdldERhdGEoKSk7CisgICAgbUltcGxlbWVu
dGF0aW9uLT5vbk1ha2VDdXJyZW50KG1TdGF0ZSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6cmVsZWFz
ZVN1cmZhY2UoKQpAQCAtMzY0LDEzICs0ODUsMTMgQEAKICAgICAvLyBSZW1vdmUgdGhlIGRlZmF1
bHQgZnJhbWVidWZmZXIKICAgICB7CiAgICAgICAgIEZyYW1lYnVmZmVyICpjdXJyZW50RGVmYXVs
dCA9IG1DdXJyZW50U3VyZmFjZS0+Z2V0RGVmYXVsdEZyYW1lYnVmZmVyKCk7Ci0gICAgICAgIGlm
IChtU3RhdGUuZ2V0UmVhZEZyYW1lYnVmZmVyKCkgPT0gY3VycmVudERlZmF1bHQpCisgICAgICAg
IGlmIChtR0xTdGF0ZS5nZXRSZWFkRnJhbWVidWZmZXIoKSA9PSBjdXJyZW50RGVmYXVsdCkKICAg
ICAgICAgewotICAgICAgICAgICAgbVN0YXRlLnNldFJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcobnVs
bHB0cik7CisgICAgICAgICAgICBtR0xTdGF0ZS5zZXRSZWFkRnJhbWVidWZmZXJCaW5kaW5nKG51
bGxwdHIpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChtU3RhdGUuZ2V0RHJhd0ZyYW1lYnVmZmVy
KCkgPT0gY3VycmVudERlZmF1bHQpCisgICAgICAgIGlmIChtR0xTdGF0ZS5nZXREcmF3RnJhbWVi
dWZmZXIoKSA9PSBjdXJyZW50RGVmYXVsdCkKICAgICAgICAgewotICAgICAgICAgICAgbVN0YXRl
LnNldERyYXdGcmFtZWJ1ZmZlckJpbmRpbmcobnVsbHB0cik7CisgICAgICAgICAgICBtR0xTdGF0
ZS5zZXREcmF3RnJhbWVidWZmZXJCaW5kaW5nKG51bGxwdHIpOwogICAgICAgICB9CiAgICAgICAg
IG1GcmFtZWJ1ZmZlck1hcC5lcmFzZSgwKTsKICAgICB9CkBAIC0zNzksMTkgKzUwMCw2IEBACiAg
ICAgbUN1cnJlbnRTdXJmYWNlID0gbnVsbHB0cjsKIH0KIAotLy8gTk9URTogdGhpcyBmdW5jdGlv
biBzaG91bGQgbm90IGFzc3VtZSB0aGF0IHRoaXMgY29udGV4dCBpcyBjdXJyZW50IQotdm9pZCBD
b250ZXh0OjptYXJrQ29udGV4dExvc3QoKQotewotICAgIGlmIChtUmVzZXRTdHJhdGVneSA9PSBH
TF9MT1NFX0NPTlRFWFRfT05fUkVTRVRfRVhUKQotICAgICAgICBtUmVzZXRTdGF0dXMgPSBHTF9V
TktOT1dOX0NPTlRFWFRfUkVTRVRfRVhUOwotICAgIG1Db250ZXh0TG9zdCA9IHRydWU7Ci19Ci0K
LWJvb2wgQ29udGV4dDo6aXNDb250ZXh0TG9zdCgpCi17Ci0gICAgcmV0dXJuIG1Db250ZXh0TG9z
dDsKLX0KLQogR0x1aW50IENvbnRleHQ6OmNyZWF0ZUJ1ZmZlcigpCiB7CiAgICAgcmV0dXJuIG1S
ZXNvdXJjZU1hbmFnZXItPmNyZWF0ZUJ1ZmZlcigpOwpAQCAtMzk5LDEyICs1MDcsMTMgQEAKIAog
R0x1aW50IENvbnRleHQ6OmNyZWF0ZVByb2dyYW0oKQogewotICAgIHJldHVybiBtUmVzb3VyY2VN
YW5hZ2VyLT5jcmVhdGVQcm9ncmFtKCk7CisgICAgcmV0dXJuIG1SZXNvdXJjZU1hbmFnZXItPmNy
ZWF0ZVByb2dyYW0obUltcGxlbWVudGF0aW9uLmdldCgpKTsKIH0KIAogR0x1aW50IENvbnRleHQ6
OmNyZWF0ZVNoYWRlcihHTGVudW0gdHlwZSkKIHsKLSAgICByZXR1cm4gbVJlc291cmNlTWFuYWdl
ci0+Y3JlYXRlU2hhZGVyKG1SZW5kZXJlci0+Z2V0UmVuZGVyZXJMaW1pdGF0aW9ucygpLCB0eXBl
KTsKKyAgICByZXR1cm4gbVJlc291cmNlTWFuYWdlci0+Y3JlYXRlU2hhZGVyKG1JbXBsZW1lbnRh
dGlvbi5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1J
bXBsZW1lbnRhdGlvbi0+Z2V0TmF0aXZlTGltaXRhdGlvbnMoKSwgdHlwZSk7CiB9CiAKIEdMdWlu
dCBDb250ZXh0OjpjcmVhdGVUZXh0dXJlKCkKQEAgLTQxOSwxMSArNTI4LDIyIEBACiAKIEdMc3lu
YyBDb250ZXh0OjpjcmVhdGVGZW5jZVN5bmMoKQogewotICAgIEdMdWludCBoYW5kbGUgPSBtUmVz
b3VyY2VNYW5hZ2VyLT5jcmVhdGVGZW5jZVN5bmMoKTsKKyAgICBHTHVpbnQgaGFuZGxlID0gbVJl
c291cmNlTWFuYWdlci0+Y3JlYXRlRmVuY2VTeW5jKG1JbXBsZW1lbnRhdGlvbi5nZXQoKSk7CiAK
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxHTHN5bmM+KHN0YXRpY19jYXN0PHVpbnRwdHJf
dD4oaGFuZGxlKSk7CiB9CiAKK0dMdWludCBDb250ZXh0OjpjcmVhdGVQYXRocyhHTHNpemVpIHJh
bmdlKQoreworICAgIGF1dG8gcmVzdWx0T3JFcnJvciA9IG1SZXNvdXJjZU1hbmFnZXItPmNyZWF0
ZVBhdGhzKG1JbXBsZW1lbnRhdGlvbi5nZXQoKSwgcmFuZ2UpOworICAgIGlmIChyZXN1bHRPckVy
cm9yLmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIGhhbmRsZUVycm9yKHJlc3VsdE9yRXJyb3Iu
Z2V0RXJyb3IoKSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0
T3JFcnJvci5nZXRSZXN1bHQoKTsKK30KKwogR0x1aW50IENvbnRleHQ6OmNyZWF0ZVZlcnRleEFy
cmF5KCkKIHsKICAgICBHTHVpbnQgdmVydGV4QXJyYXkgICAgICAgICAgID0gbVZlcnRleEFycmF5
SGFuZGxlQWxsb2NhdG9yLmFsbG9jYXRlKCk7CkBAIC00NTcsNyArNTc3LDcgQEAKIHsKICAgICBH
THVpbnQgaGFuZGxlID0gbUZlbmNlTlZIYW5kbGVBbGxvY2F0b3IuYWxsb2NhdGUoKTsKIAotICAg
IG1GZW5jZU5WTWFwW2hhbmRsZV0gPSBuZXcgRmVuY2VOVihtUmVuZGVyZXItPmNyZWF0ZUZlbmNl
TlYoKSk7CisgICAgbUZlbmNlTlZNYXBbaGFuZGxlXSA9IG5ldyBGZW5jZU5WKG1JbXBsZW1lbnRh
dGlvbi0+Y3JlYXRlRmVuY2VOVigpKTsKIAogICAgIHJldHVybiBoYW5kbGU7CiB9CkBAIC01MjEs
NiArNjQxLDk2IEBACiAgICAgbVJlc291cmNlTWFuYWdlci0+ZGVsZXRlRmVuY2VTeW5jKHN0YXRp
Y19jYXN0PEdMdWludD4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGZlbmNlU3luYykpKTsK
IH0KIAordm9pZCBDb250ZXh0OjpkZWxldGVQYXRocyhHTHVpbnQgZmlyc3QsIEdMc2l6ZWkgcmFu
Z2UpCit7CisgICAgbVJlc291cmNlTWFuYWdlci0+ZGVsZXRlUGF0aHMoZmlyc3QsIHJhbmdlKTsK
K30KKworYm9vbCBDb250ZXh0OjpoYXNQYXRoRGF0YShHTHVpbnQgcGF0aCkgY29uc3QKK3sKKyAg
ICBjb25zdCBhdXRvICpwYXRoT2JqID0gbVJlc291cmNlTWFuYWdlci0+Z2V0UGF0aChwYXRoKTsK
KyAgICBpZiAocGF0aE9iaiA9PSBudWxscHRyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gcGF0aE9iai0+aGFzUGF0aERhdGEoKTsKK30KKworYm9vbCBDb250ZXh0OjpoYXNQ
YXRoKEdMdWludCBwYXRoKSBjb25zdAoreworICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5o
YXNQYXRoKHBhdGgpOworfQorCit2b2lkIENvbnRleHQ6OnNldFBhdGhDb21tYW5kcyhHTHVpbnQg
cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29tbWFuZHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVieXRlICpjb21tYW5kcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29vcmRzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvb3JkVHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmNvb3JkcykKK3sKKyAgICBhdXRvICpwYXRoT2Jq
ZWN0ID0gbVJlc291cmNlTWFuYWdlci0+Z2V0UGF0aChwYXRoKTsKKworICAgIGhhbmRsZUVycm9y
KHBhdGhPYmplY3QtPnNldENvbW1hbmRzKG51bUNvbW1hbmRzLCBjb21tYW5kcywgbnVtQ29vcmRz
LCBjb29yZFR5cGUsIGNvb3JkcykpOworfQorCit2b2lkIENvbnRleHQ6OnNldFBhdGhQYXJhbWV0
ZXJmKEdMdWludCBwYXRoLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgdmFsdWUpCit7CisgICAgYXV0
byAqcGF0aE9iaiA9IG1SZXNvdXJjZU1hbmFnZXItPmdldFBhdGgocGF0aCk7CisKKyAgICBzd2l0
Y2ggKHBuYW1lKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9QQVRIX1NUUk9LRV9XSURUSF9DSFJP
TUlVTToKKyAgICAgICAgICAgIHBhdGhPYmotPnNldFN0cm9rZVdpZHRoKHZhbHVlKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1BBVEhfRU5EX0NBUFNfQ0hST01JVU06Cisg
ICAgICAgICAgICBwYXRoT2JqLT5zZXRFbmRDYXBzKHN0YXRpY19jYXN0PEdMZW51bT4odmFsdWUp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1BBVEhfSk9JTl9TVFlMRV9D
SFJPTUlVTToKKyAgICAgICAgICAgIHBhdGhPYmotPnNldEpvaW5TdHlsZShzdGF0aWNfY2FzdDxH
TGVudW0+KHZhbHVlKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9QQVRI
X01JVEVSX0xJTUlUX0NIUk9NSVVNOgorICAgICAgICAgICAgcGF0aE9iai0+c2V0TWl0ZXJMaW1p
dCh2YWx1ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9QQVRIX1NUUk9L
RV9CT1VORF9DSFJPTUlVTToKKyAgICAgICAgICAgIHBhdGhPYmotPnNldFN0cm9rZUJvdW5kKHZh
bHVlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
VU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBDb250
ZXh0OjpnZXRQYXRoUGFyYW1ldGVyZnYoR0x1aW50IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xmbG9h
dCAqdmFsdWUpIGNvbnN0Cit7CisgICAgY29uc3QgYXV0byAqcGF0aE9iaiA9IG1SZXNvdXJjZU1h
bmFnZXItPmdldFBhdGgocGF0aCk7CisKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAgICAg
ICAgY2FzZSBHTF9QQVRIX1NUUk9LRV9XSURUSF9DSFJPTUlVTToKKyAgICAgICAgICAgICp2YWx1
ZSA9IHBhdGhPYmotPmdldFN0cm9rZVdpZHRoKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBHTF9QQVRIX0VORF9DQVBTX0NIUk9NSVVNOgorICAgICAgICAgICAgKnZhbHVlID0g
c3RhdGljX2Nhc3Q8R0xmbG9hdD4ocGF0aE9iai0+Z2V0RW5kQ2FwcygpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEdMX1BBVEhfSk9JTl9TVFlMRV9DSFJPTUlVTToKKyAgICAg
ICAgICAgICp2YWx1ZSA9IHN0YXRpY19jYXN0PEdMZmxvYXQ+KHBhdGhPYmotPmdldEpvaW5TdHls
ZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1BBVEhfTUlURVJfTElN
SVRfQ0hST01JVU06CisgICAgICAgICAgICAqdmFsdWUgPSBwYXRoT2JqLT5nZXRNaXRlckxpbWl0
KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9QQVRIX1NUUk9LRV9CT1VO
RF9DSFJPTUlVTToKKyAgICAgICAgICAgICp2YWx1ZSA9IHBhdGhPYmotPmdldFN0cm9rZUJvdW5k
KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgQ29udGV4
dDo6c2V0UGF0aFN0ZW5jaWxGdW5jKEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNr
KQoreworICAgIG1HTFN0YXRlLnNldFBhdGhTdGVuY2lsRnVuYyhmdW5jLCByZWYsIG1hc2spOwor
fQorCiB2b2lkIENvbnRleHQ6OmRlbGV0ZVZlcnRleEFycmF5KEdMdWludCB2ZXJ0ZXhBcnJheSkK
IHsKICAgICBhdXRvIGl0ZXIgPSBtVmVydGV4QXJyYXlNYXAuZmluZCh2ZXJ0ZXhBcnJheSk7CkBA
IC02MTAsMTYgKzgyMCw2IEBACiAgICAgcmV0dXJuIG1SZXNvdXJjZU1hbmFnZXItPmdldEJ1ZmZl
cihoYW5kbGUpOwogfQogCi1TaGFkZXIgKkNvbnRleHQ6OmdldFNoYWRlcihHTHVpbnQgaGFuZGxl
KSBjb25zdAotewotICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5nZXRTaGFkZXIoaGFuZGxl
KTsKLX0KLQotUHJvZ3JhbSAqQ29udGV4dDo6Z2V0UHJvZ3JhbShHTHVpbnQgaGFuZGxlKSBjb25z
dAotewotICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5nZXRQcm9ncmFtKGhhbmRsZSk7Ci19
Ci0KIFRleHR1cmUgKkNvbnRleHQ6OmdldFRleHR1cmUoR0x1aW50IGhhbmRsZSkgY29uc3QKIHsK
ICAgICByZXR1cm4gbVJlc291cmNlTWFuYWdlci0+Z2V0VGV4dHVyZShoYW5kbGUpOwpAQCAtNjg3
LDYgKzg4Nyw0OSBAQAogICAgIHJldHVybiBnZXRGZW5jZVN5bmMocmVpbnRlcnByZXRfY2FzdDxH
THN5bmM+KGNvbnN0X2Nhc3Q8dm9pZCAqPihwdHIpKSk7CiB9CiAKK3ZvaWQgQ29udGV4dDo6b2Jq
ZWN0TGFiZWwoR0xlbnVtIGlkZW50aWZpZXIsIEdMdWludCBuYW1lLCBHTHNpemVpIGxlbmd0aCwg
Y29uc3QgR0xjaGFyICpsYWJlbCkKK3sKKyAgICBMYWJlbGVkT2JqZWN0ICpvYmplY3QgPSBnZXRM
YWJlbGVkT2JqZWN0KGlkZW50aWZpZXIsIG5hbWUpOworICAgIEFTU0VSVChvYmplY3QgIT0gbnVs
bHB0cik7CisKKyAgICBzdGQ6OnN0cmluZyBsYWJlbE5hbWUgPSBHZXRPYmplY3RMYWJlbEZyb21Q
b2ludGVyKGxlbmd0aCwgbGFiZWwpOworICAgIG9iamVjdC0+c2V0TGFiZWwobGFiZWxOYW1lKTsK
K30KKwordm9pZCBDb250ZXh0OjpvYmplY3RQdHJMYWJlbChjb25zdCB2b2lkICpwdHIsIEdMc2l6
ZWkgbGVuZ3RoLCBjb25zdCBHTGNoYXIgKmxhYmVsKQoreworICAgIExhYmVsZWRPYmplY3QgKm9i
amVjdCA9IGdldExhYmVsZWRPYmplY3RGcm9tUHRyKHB0cik7CisgICAgQVNTRVJUKG9iamVjdCAh
PSBudWxscHRyKTsKKworICAgIHN0ZDo6c3RyaW5nIGxhYmVsTmFtZSA9IEdldE9iamVjdExhYmVs
RnJvbVBvaW50ZXIobGVuZ3RoLCBsYWJlbCk7CisgICAgb2JqZWN0LT5zZXRMYWJlbChsYWJlbE5h
bWUpOworfQorCit2b2lkIENvbnRleHQ6OmdldE9iamVjdExhYmVsKEdMZW51bSBpZGVudGlmaWVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Y2hhciAqbGFiZWwpIGNvbnN0Cit7CisgICAgTGFiZWxlZE9iamVjdCAqb2JqZWN0ID0gZ2V0TGFi
ZWxlZE9iamVjdChpZGVudGlmaWVyLCBuYW1lKTsKKyAgICBBU1NFUlQob2JqZWN0ICE9IG51bGxw
dHIpOworCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm9iamVjdExhYmVsID0gb2JqZWN0LT5nZXRM
YWJlbCgpOworICAgIEdldE9iamVjdExhYmVsQmFzZShvYmplY3RMYWJlbCwgYnVmU2l6ZSwgbGVu
Z3RoLCBsYWJlbCk7Cit9CisKK3ZvaWQgQ29udGV4dDo6Z2V0T2JqZWN0UHRyTGFiZWwoY29uc3Qg
dm9pZCAqcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNp
emUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpsYWJlbCkgY29uc3QKK3sKKyAg
ICBMYWJlbGVkT2JqZWN0ICpvYmplY3QgPSBnZXRMYWJlbGVkT2JqZWN0RnJvbVB0cihwdHIpOwor
ICAgIEFTU0VSVChvYmplY3QgIT0gbnVsbHB0cik7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAm
b2JqZWN0TGFiZWwgPSBvYmplY3QtPmdldExhYmVsKCk7CisgICAgR2V0T2JqZWN0TGFiZWxCYXNl
KG9iamVjdExhYmVsLCBidWZTaXplLCBsZW5ndGgsIGxhYmVsKTsKK30KKwogYm9vbCBDb250ZXh0
Ojppc1NhbXBsZXIoR0x1aW50IHNhbXBsZXJOYW1lKSBjb25zdAogewogICAgIHJldHVybiBtUmVz
b3VyY2VNYW5hZ2VyLT5pc1NhbXBsZXIoc2FtcGxlck5hbWUpOwpAQCAtNjk0LDE0ICs5MzcsMTQg
QEAKIAogdm9pZCBDb250ZXh0OjpiaW5kQXJyYXlCdWZmZXIoR0x1aW50IGJ1ZmZlckhhbmRsZSkK
IHsKLSAgICBCdWZmZXIgKmJ1ZmZlciA9IG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrQnVmZmVyQWxs
b2NhdGlvbihidWZmZXJIYW5kbGUpOwotICAgIG1TdGF0ZS5zZXRBcnJheUJ1ZmZlckJpbmRpbmco
YnVmZmVyKTsKKyAgICBCdWZmZXIgKmJ1ZmZlciA9IG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrQnVm
ZmVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIGJ1ZmZlckhhbmRsZSk7CisgICAg
bUdMU3RhdGUuc2V0QXJyYXlCdWZmZXJCaW5kaW5nKGJ1ZmZlcik7CiB9CiAKIHZvaWQgQ29udGV4
dDo6YmluZEVsZW1lbnRBcnJheUJ1ZmZlcihHTHVpbnQgYnVmZmVySGFuZGxlKQogewotICAgIEJ1
ZmZlciAqYnVmZmVyID0gbVJlc291cmNlTWFuYWdlci0+Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKGJ1
ZmZlckhhbmRsZSk7Ci0gICAgbVN0YXRlLmdldFZlcnRleEFycmF5KCktPnNldEVsZW1lbnRBcnJh
eUJ1ZmZlcihidWZmZXIpOworICAgIEJ1ZmZlciAqYnVmZmVyID0gbVJlc291cmNlTWFuYWdlci0+
Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKG1JbXBsZW1lbnRhdGlvbi5nZXQoKSwgYnVmZmVySGFuZGxl
KTsKKyAgICBtR0xTdGF0ZS5nZXRWZXJ0ZXhBcnJheSgpLT5zZXRFbGVtZW50QXJyYXlCdWZmZXIo
YnVmZmVyKTsKIH0KIAogdm9pZCBDb250ZXh0OjpiaW5kVGV4dHVyZShHTGVudW0gdGFyZ2V0LCBH
THVpbnQgaGFuZGxlKQpAQCAtNzE0LDQ4ICs5NTcsNTAgQEAKICAgICB9CiAgICAgZWxzZQogICAg
IHsKLSAgICAgICAgdGV4dHVyZSA9IG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrVGV4dHVyZUFsbG9j
YXRpb24oaGFuZGxlLCB0YXJnZXQpOworICAgICAgICB0ZXh0dXJlID0gbVJlc291cmNlTWFuYWdl
ci0+Y2hlY2tUZXh0dXJlQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIGhhbmRsZSwg
dGFyZ2V0KTsKICAgICB9CiAKICAgICBBU1NFUlQodGV4dHVyZSk7Ci0gICAgbVN0YXRlLnNldFNh
bXBsZXJUZXh0dXJlKHRhcmdldCwgdGV4dHVyZSk7CisgICAgbUdMU3RhdGUuc2V0U2FtcGxlclRl
eHR1cmUodGFyZ2V0LCB0ZXh0dXJlKTsKIH0KIAogdm9pZCBDb250ZXh0OjpiaW5kUmVhZEZyYW1l
YnVmZmVyKEdMdWludCBmcmFtZWJ1ZmZlckhhbmRsZSkKIHsKICAgICBGcmFtZWJ1ZmZlciAqZnJh
bWVidWZmZXIgPSBjaGVja0ZyYW1lYnVmZmVyQWxsb2NhdGlvbihmcmFtZWJ1ZmZlckhhbmRsZSk7
Ci0gICAgbVN0YXRlLnNldFJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcoZnJhbWVidWZmZXIpOworICAg
IG1HTFN0YXRlLnNldFJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcoZnJhbWVidWZmZXIpOwogfQogCiB2
b2lkIENvbnRleHQ6OmJpbmREcmF3RnJhbWVidWZmZXIoR0x1aW50IGZyYW1lYnVmZmVySGFuZGxl
KQogewogICAgIEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IGNoZWNrRnJhbWVidWZmZXJBbGxv
Y2F0aW9uKGZyYW1lYnVmZmVySGFuZGxlKTsKLSAgICBtU3RhdGUuc2V0RHJhd0ZyYW1lYnVmZmVy
QmluZGluZyhmcmFtZWJ1ZmZlcik7CisgICAgbUdMU3RhdGUuc2V0RHJhd0ZyYW1lYnVmZmVyQmlu
ZGluZyhmcmFtZWJ1ZmZlcik7CiB9CiAKIHZvaWQgQ29udGV4dDo6YmluZFJlbmRlcmJ1ZmZlcihH
THVpbnQgcmVuZGVyYnVmZmVySGFuZGxlKQogewotICAgIFJlbmRlcmJ1ZmZlciAqcmVuZGVyYnVm
ZmVyID0gbVJlc291cmNlTWFuYWdlci0+Y2hlY2tSZW5kZXJidWZmZXJBbGxvY2F0aW9uKHJlbmRl
cmJ1ZmZlckhhbmRsZSk7Ci0gICAgbVN0YXRlLnNldFJlbmRlcmJ1ZmZlckJpbmRpbmcocmVuZGVy
YnVmZmVyKTsKKyAgICBSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlciA9CisgICAgICAgIG1SZXNv
dXJjZU1hbmFnZXItPmNoZWNrUmVuZGVyYnVmZmVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24u
Z2V0KCksIHJlbmRlcmJ1ZmZlckhhbmRsZSk7CisgICAgbUdMU3RhdGUuc2V0UmVuZGVyYnVmZmVy
QmluZGluZyhyZW5kZXJidWZmZXIpOwogfQogCiB2b2lkIENvbnRleHQ6OmJpbmRWZXJ0ZXhBcnJh
eShHTHVpbnQgdmVydGV4QXJyYXlIYW5kbGUpCiB7CiAgICAgVmVydGV4QXJyYXkgKnZlcnRleEFy
cmF5ID0gY2hlY2tWZXJ0ZXhBcnJheUFsbG9jYXRpb24odmVydGV4QXJyYXlIYW5kbGUpOwotICAg
IG1TdGF0ZS5zZXRWZXJ0ZXhBcnJheUJpbmRpbmcodmVydGV4QXJyYXkpOworICAgIG1HTFN0YXRl
LnNldFZlcnRleEFycmF5QmluZGluZyh2ZXJ0ZXhBcnJheSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6
YmluZFNhbXBsZXIoR0x1aW50IHRleHR1cmVVbml0LCBHTHVpbnQgc2FtcGxlckhhbmRsZSkKIHsK
ICAgICBBU1NFUlQodGV4dHVyZVVuaXQgPCBtQ2Fwcy5tYXhDb21iaW5lZFRleHR1cmVJbWFnZVVu
aXRzKTsKLSAgICBTYW1wbGVyICpzYW1wbGVyID0gbVJlc291cmNlTWFuYWdlci0+Y2hlY2tTYW1w
bGVyQWxsb2NhdGlvbihzYW1wbGVySGFuZGxlKTsKLSAgICBtU3RhdGUuc2V0U2FtcGxlckJpbmRp
bmcodGV4dHVyZVVuaXQsIHNhbXBsZXIpOworICAgIFNhbXBsZXIgKnNhbXBsZXIgPQorICAgICAg
ICBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja1NhbXBsZXJBbGxvY2F0aW9uKG1JbXBsZW1lbnRhdGlv
bi5nZXQoKSwgc2FtcGxlckhhbmRsZSk7CisgICAgbUdMU3RhdGUuc2V0U2FtcGxlckJpbmRpbmco
dGV4dHVyZVVuaXQsIHNhbXBsZXIpOwogfQogCiB2b2lkIENvbnRleHQ6OmJpbmRHZW5lcmljVW5p
Zm9ybUJ1ZmZlcihHTHVpbnQgYnVmZmVySGFuZGxlKQogewotICAgIEJ1ZmZlciAqYnVmZmVyID0g
bVJlc291cmNlTWFuYWdlci0+Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKGJ1ZmZlckhhbmRsZSk7Ci0g
ICAgbVN0YXRlLnNldEdlbmVyaWNVbmlmb3JtQnVmZmVyQmluZGluZyhidWZmZXIpOworICAgIEJ1
ZmZlciAqYnVmZmVyID0gbVJlc291cmNlTWFuYWdlci0+Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKG1J
bXBsZW1lbnRhdGlvbi5nZXQoKSwgYnVmZmVySGFuZGxlKTsKKyAgICBtR0xTdGF0ZS5zZXRHZW5l
cmljVW5pZm9ybUJ1ZmZlckJpbmRpbmcoYnVmZmVyKTsKIH0KIAogdm9pZCBDb250ZXh0OjpiaW5k
SW5kZXhlZFVuaWZvcm1CdWZmZXIoR0x1aW50IGJ1ZmZlckhhbmRsZSwKQEAgLTc2MywxNCArMTAw
OCwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIg
b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0
ciBzaXplKQogewotICAgIEJ1ZmZlciAqYnVmZmVyID0gbVJlc291cmNlTWFuYWdlci0+Y2hlY2tC
dWZmZXJBbGxvY2F0aW9uKGJ1ZmZlckhhbmRsZSk7Ci0gICAgbVN0YXRlLnNldEluZGV4ZWRVbmlm
b3JtQnVmZmVyQmluZGluZyhpbmRleCwgYnVmZmVyLCBvZmZzZXQsIHNpemUpOworICAgIEJ1ZmZl
ciAqYnVmZmVyID0gbVJlc291cmNlTWFuYWdlci0+Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKG1JbXBs
ZW1lbnRhdGlvbi5nZXQoKSwgYnVmZmVySGFuZGxlKTsKKyAgICBtR0xTdGF0ZS5zZXRJbmRleGVk
VW5pZm9ybUJ1ZmZlckJpbmRpbmcoaW5kZXgsIGJ1ZmZlciwgb2Zmc2V0LCBzaXplKTsKIH0KIAog
dm9pZCBDb250ZXh0OjpiaW5kR2VuZXJpY1RyYW5zZm9ybUZlZWRiYWNrQnVmZmVyKEdMdWludCBi
dWZmZXJIYW5kbGUpCiB7Ci0gICAgQnVmZmVyICpidWZmZXIgPSBtUmVzb3VyY2VNYW5hZ2VyLT5j
aGVja0J1ZmZlckFsbG9jYXRpb24oYnVmZmVySGFuZGxlKTsKLSAgICBtU3RhdGUuZ2V0Q3VycmVu
dFRyYW5zZm9ybUZlZWRiYWNrKCktPmJpbmRHZW5lcmljQnVmZmVyKGJ1ZmZlcik7CisgICAgQnVm
ZmVyICpidWZmZXIgPSBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja0J1ZmZlckFsbG9jYXRpb24obUlt
cGxlbWVudGF0aW9uLmdldCgpLCBidWZmZXJIYW5kbGUpOworICAgIG1HTFN0YXRlLmdldEN1cnJl
bnRUcmFuc2Zvcm1GZWVkYmFjaygpLT5iaW5kR2VuZXJpY0J1ZmZlcihidWZmZXIpOwogfQogCiB2
b2lkIENvbnRleHQ6OmJpbmRJbmRleGVkVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXIoR0x1aW50IGJ1
ZmZlckhhbmRsZSwKQEAgLTc3OCwzNyArMTAyMywzNyBAQAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUpCiB7
Ci0gICAgQnVmZmVyICpidWZmZXIgPSBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja0J1ZmZlckFsbG9j
YXRpb24oYnVmZmVySGFuZGxlKTsKLSAgICBtU3RhdGUuZ2V0Q3VycmVudFRyYW5zZm9ybUZlZWRi
YWNrKCktPmJpbmRJbmRleGVkQnVmZmVyKGluZGV4LCBidWZmZXIsIG9mZnNldCwgc2l6ZSk7Cisg
ICAgQnVmZmVyICpidWZmZXIgPSBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja0J1ZmZlckFsbG9jYXRp
b24obUltcGxlbWVudGF0aW9uLmdldCgpLCBidWZmZXJIYW5kbGUpOworICAgIG1HTFN0YXRlLmdl
dEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpLT5iaW5kSW5kZXhlZEJ1ZmZlcihpbmRleCwgYnVm
ZmVyLCBvZmZzZXQsIHNpemUpOwogfQogCiB2b2lkIENvbnRleHQ6OmJpbmRDb3B5UmVhZEJ1ZmZl
cihHTHVpbnQgYnVmZmVySGFuZGxlKQogewotICAgIEJ1ZmZlciAqYnVmZmVyID0gbVJlc291cmNl
TWFuYWdlci0+Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKGJ1ZmZlckhhbmRsZSk7Ci0gICAgbVN0YXRl
LnNldENvcHlSZWFkQnVmZmVyQmluZGluZyhidWZmZXIpOworICAgIEJ1ZmZlciAqYnVmZmVyID0g
bVJlc291cmNlTWFuYWdlci0+Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKG1JbXBsZW1lbnRhdGlvbi5n
ZXQoKSwgYnVmZmVySGFuZGxlKTsKKyAgICBtR0xTdGF0ZS5zZXRDb3B5UmVhZEJ1ZmZlckJpbmRp
bmcoYnVmZmVyKTsKIH0KIAogdm9pZCBDb250ZXh0OjpiaW5kQ29weVdyaXRlQnVmZmVyKEdMdWlu
dCBidWZmZXJIYW5kbGUpCiB7Ci0gICAgQnVmZmVyICpidWZmZXIgPSBtUmVzb3VyY2VNYW5hZ2Vy
LT5jaGVja0J1ZmZlckFsbG9jYXRpb24oYnVmZmVySGFuZGxlKTsKLSAgICBtU3RhdGUuc2V0Q29w
eVdyaXRlQnVmZmVyQmluZGluZyhidWZmZXIpOworICAgIEJ1ZmZlciAqYnVmZmVyID0gbVJlc291
cmNlTWFuYWdlci0+Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKG1JbXBsZW1lbnRhdGlvbi5nZXQoKSwg
YnVmZmVySGFuZGxlKTsKKyAgICBtR0xTdGF0ZS5zZXRDb3B5V3JpdGVCdWZmZXJCaW5kaW5nKGJ1
ZmZlcik7CiB9CiAKIHZvaWQgQ29udGV4dDo6YmluZFBpeGVsUGFja0J1ZmZlcihHTHVpbnQgYnVm
ZmVySGFuZGxlKQogewotICAgIEJ1ZmZlciAqYnVmZmVyID0gbVJlc291cmNlTWFuYWdlci0+Y2hl
Y2tCdWZmZXJBbGxvY2F0aW9uKGJ1ZmZlckhhbmRsZSk7Ci0gICAgbVN0YXRlLnNldFBpeGVsUGFj
a0J1ZmZlckJpbmRpbmcoYnVmZmVyKTsKKyAgICBCdWZmZXIgKmJ1ZmZlciA9IG1SZXNvdXJjZU1h
bmFnZXItPmNoZWNrQnVmZmVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIGJ1ZmZl
ckhhbmRsZSk7CisgICAgbUdMU3RhdGUuc2V0UGl4ZWxQYWNrQnVmZmVyQmluZGluZyhidWZmZXIp
OwogfQogCiB2b2lkIENvbnRleHQ6OmJpbmRQaXhlbFVucGFja0J1ZmZlcihHTHVpbnQgYnVmZmVy
SGFuZGxlKQogewotICAgIEJ1ZmZlciAqYnVmZmVyID0gbVJlc291cmNlTWFuYWdlci0+Y2hlY2tC
dWZmZXJBbGxvY2F0aW9uKGJ1ZmZlckhhbmRsZSk7Ci0gICAgbVN0YXRlLnNldFBpeGVsVW5wYWNr
QnVmZmVyQmluZGluZyhidWZmZXIpOworICAgIEJ1ZmZlciAqYnVmZmVyID0gbVJlc291cmNlTWFu
YWdlci0+Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKG1JbXBsZW1lbnRhdGlvbi5nZXQoKSwgYnVmZmVy
SGFuZGxlKTsKKyAgICBtR0xTdGF0ZS5zZXRQaXhlbFVucGFja0J1ZmZlckJpbmRpbmcoYnVmZmVy
KTsKIH0KIAogdm9pZCBDb250ZXh0Ojp1c2VQcm9ncmFtKEdMdWludCBwcm9ncmFtKQogewotICAg
IG1TdGF0ZS5zZXRQcm9ncmFtKGdldFByb2dyYW0ocHJvZ3JhbSkpOworICAgIG1HTFN0YXRlLnNl
dFByb2dyYW0oZ2V0UHJvZ3JhbShwcm9ncmFtKSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6YmluZFRy
YW5zZm9ybUZlZWRiYWNrKEdMdWludCB0cmFuc2Zvcm1GZWVkYmFja0hhbmRsZSkKQEAgLTgxNSw3
ICsxMDYwLDcgQEAKIHsKICAgICBUcmFuc2Zvcm1GZWVkYmFjayAqdHJhbnNmb3JtRmVlZGJhY2sg
PQogICAgICAgICBjaGVja1RyYW5zZm9ybUZlZWRiYWNrQWxsb2NhdGlvbih0cmFuc2Zvcm1GZWVk
YmFja0hhbmRsZSk7Ci0gICAgbVN0YXRlLnNldFRyYW5zZm9ybUZlZWRiYWNrQmluZGluZyh0cmFu
c2Zvcm1GZWVkYmFjayk7CisgICAgbUdMU3RhdGUuc2V0VHJhbnNmb3JtRmVlZGJhY2tCaW5kaW5n
KHRyYW5zZm9ybUZlZWRiYWNrKTsKIH0KIAogRXJyb3IgQ29udGV4dDo6YmVnaW5RdWVyeShHTGVu
dW0gdGFyZ2V0LCBHTHVpbnQgcXVlcnkpCkBAIC04MzEsNyArMTA3Niw3IEBACiAgICAgfQogCiAg
ICAgLy8gc2V0IHF1ZXJ5IGFzIGFjdGl2ZSBmb3Igc3BlY2lmaWVkIHRhcmdldCBvbmx5IGlmIGJl
Z2luIHN1Y2NlZWRlZAotICAgIG1TdGF0ZS5zZXRBY3RpdmVRdWVyeSh0YXJnZXQsIHF1ZXJ5T2Jq
ZWN0KTsKKyAgICBtR0xTdGF0ZS5zZXRBY3RpdmVRdWVyeSh0YXJnZXQsIHF1ZXJ5T2JqZWN0KTsK
IAogICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJPUik7CiB9CkBAIC04MzgsMTMgKzEwODMsMTMg
QEAKIAogRXJyb3IgQ29udGV4dDo6ZW5kUXVlcnkoR0xlbnVtIHRhcmdldCkKIHsKLSAgICBRdWVy
eSAqcXVlcnlPYmplY3QgPSBtU3RhdGUuZ2V0QWN0aXZlUXVlcnkodGFyZ2V0KTsKKyAgICBRdWVy
eSAqcXVlcnlPYmplY3QgPSBtR0xTdGF0ZS5nZXRBY3RpdmVRdWVyeSh0YXJnZXQpOwogICAgIEFT
U0VSVChxdWVyeU9iamVjdCk7CiAKICAgICBnbDo6RXJyb3IgZXJyb3IgPSBxdWVyeU9iamVjdC0+
ZW5kKCk7CiAKICAgICAvLyBBbHdheXMgdW5iaW5kIHRoZSBxdWVyeSwgZXZlbiBpZiB0aGVyZSB3
YXMgYW4gZXJyb3IuIFRoaXMgbWF5IGRlbGV0ZSB0aGUgcXVlcnkgb2JqZWN0LgotICAgIG1TdGF0
ZS5zZXRBY3RpdmVRdWVyeSh0YXJnZXQsIE5VTEwpOworICAgIG1HTFN0YXRlLnNldEFjdGl2ZVF1
ZXJ5KHRhcmdldCwgTlVMTCk7CiAKICAgICByZXR1cm4gZXJyb3I7CiB9CkBAIC04NjQsNyArMTEw
OSw3IEBACiAgICAgc3dpdGNoIChwbmFtZSkKICAgICB7CiAgICAgICAgIGNhc2UgR0xfQ1VSUkVO
VF9RVUVSWV9FWFQ6Ci0gICAgICAgICAgICBwYXJhbXNbMF0gPSBnZXRTdGF0ZSgpLmdldEFjdGl2
ZVF1ZXJ5SWQodGFyZ2V0KTsKKyAgICAgICAgICAgIHBhcmFtc1swXSA9IG1HTFN0YXRlLmdldEFj
dGl2ZVF1ZXJ5SWQodGFyZ2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdM
X1FVRVJZX0NPVU5URVJfQklUU19FWFQ6CiAgICAgICAgICAgICBzd2l0Y2ggKHRhcmdldCkKQEAg
LTg4NywyNCArMTEzMiwyNCBAQAogICAgIH0KIH0KIAotRXJyb3IgQ29udGV4dDo6Z2V0UXVlcnlP
YmplY3RpdihHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKK3ZvaWQgQ29u
dGV4dDo6Z2V0UXVlcnlPYmplY3RpdihHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBh
cmFtcykKIHsKLSAgICByZXR1cm4gR2V0UXVlcnlPYmplY3RQYXJhbWV0ZXIodGhpcywgaWQsIHBu
YW1lLCBwYXJhbXMpOworICAgIGhhbmRsZUVycm9yKEdldFF1ZXJ5T2JqZWN0UGFyYW1ldGVyKGdl
dFF1ZXJ5KGlkKSwgcG5hbWUsIHBhcmFtcykpOwogfQogCi1FcnJvciBDb250ZXh0OjpnZXRRdWVy
eU9iamVjdHVpdihHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMpCit2b2lk
IENvbnRleHQ6OmdldFF1ZXJ5T2JqZWN0dWl2KEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTHVp
bnQgKnBhcmFtcykKIHsKLSAgICByZXR1cm4gR2V0UXVlcnlPYmplY3RQYXJhbWV0ZXIodGhpcywg
aWQsIHBuYW1lLCBwYXJhbXMpOworICAgIGhhbmRsZUVycm9yKEdldFF1ZXJ5T2JqZWN0UGFyYW1l
dGVyKGdldFF1ZXJ5KGlkKSwgcG5hbWUsIHBhcmFtcykpOwogfQogCi1FcnJvciBDb250ZXh0Ojpn
ZXRRdWVyeU9iamVjdGk2NHYoR0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMaW50NjQgKnBhcmFt
cykKK3ZvaWQgQ29udGV4dDo6Z2V0UXVlcnlPYmplY3RpNjR2KEdMdWludCBpZCwgR0xlbnVtIHBu
YW1lLCBHTGludDY0ICpwYXJhbXMpCiB7Ci0gICAgcmV0dXJuIEdldFF1ZXJ5T2JqZWN0UGFyYW1l
dGVyKHRoaXMsIGlkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICBoYW5kbGVFcnJvcihHZXRRdWVyeU9i
amVjdFBhcmFtZXRlcihnZXRRdWVyeShpZCksIHBuYW1lLCBwYXJhbXMpKTsKIH0KIAotRXJyb3Ig
Q29udGV4dDo6Z2V0UXVlcnlPYmplY3R1aTY0dihHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0x1
aW50NjQgKnBhcmFtcykKK3ZvaWQgQ29udGV4dDo6Z2V0UXVlcnlPYmplY3R1aTY0dihHTHVpbnQg
aWQsIEdMZW51bSBwbmFtZSwgR0x1aW50NjQgKnBhcmFtcykKIHsKLSAgICByZXR1cm4gR2V0UXVl
cnlPYmplY3RQYXJhbWV0ZXIodGhpcywgaWQsIHBuYW1lLCBwYXJhbXMpOworICAgIGhhbmRsZUVy
cm9yKEdldFF1ZXJ5T2JqZWN0UGFyYW1ldGVyKGdldFF1ZXJ5KGlkKSwgcG5hbWUsIHBhcmFtcykp
OwogfQogCiBGcmFtZWJ1ZmZlciAqQ29udGV4dDo6Z2V0RnJhbWVidWZmZXIodW5zaWduZWQgaW50
IGhhbmRsZSkgY29uc3QKQEAgLTkzOSw3ICsxMTg0LDcgQEAKICAgICB7CiAgICAgICAgIGlmICgh
cXVlcnktPnNlY29uZCAmJiBjcmVhdGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHF1ZXJ5LT5z
ZWNvbmQgPSBuZXcgUXVlcnkobVJlbmRlcmVyLT5jcmVhdGVRdWVyeSh0eXBlKSwgaGFuZGxlKTsK
KyAgICAgICAgICAgIHF1ZXJ5LT5zZWNvbmQgPSBuZXcgUXVlcnkobUltcGxlbWVudGF0aW9uLT5j
cmVhdGVRdWVyeSh0eXBlKSwgaGFuZGxlKTsKICAgICAgICAgICAgIHF1ZXJ5LT5zZWNvbmQtPmFk
ZFJlZigpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBxdWVyeS0+c2Vjb25kOwpAQCAtOTU0
LDEzICsxMTk5LDEzIEBACiAKIFRleHR1cmUgKkNvbnRleHQ6OmdldFRhcmdldFRleHR1cmUoR0xl
bnVtIHRhcmdldCkgY29uc3QKIHsKLSAgICBBU1NFUlQoVmFsaWRUZXh0dXJlVGFyZ2V0KHRoaXMs
IHRhcmdldCkpOwotICAgIHJldHVybiBtU3RhdGUuZ2V0VGFyZ2V0VGV4dHVyZSh0YXJnZXQpOwor
ICAgIEFTU0VSVChWYWxpZFRleHR1cmVUYXJnZXQodGhpcywgdGFyZ2V0KSB8fCBWYWxpZFRleHR1
cmVFeHRlcm5hbFRhcmdldCh0aGlzLCB0YXJnZXQpKTsKKyAgICByZXR1cm4gbUdMU3RhdGUuZ2V0
VGFyZ2V0VGV4dHVyZSh0YXJnZXQpOwogfQogCiBUZXh0dXJlICpDb250ZXh0OjpnZXRTYW1wbGVy
VGV4dHVyZSh1bnNpZ25lZCBpbnQgc2FtcGxlciwgR0xlbnVtIHR5cGUpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1TdGF0ZS5nZXRTYW1wbGVyVGV4dHVyZShzYW1wbGVyLCB0eXBlKTsKKyAgICByZXR1
cm4gbUdMU3RhdGUuZ2V0U2FtcGxlclRleHR1cmUoc2FtcGxlciwgdHlwZSk7CiB9CiAKIENvbXBp
bGVyICpDb250ZXh0OjpnZXRDb21waWxlcigpIGNvbnN0CkBAIC05NzUsOCArMTIyMCw4IEBACiAg
ICAgICBjYXNlIEdMX1NIQURFUl9DT01QSUxFUjogICAgICAgICAgICpwYXJhbXMgPSBHTF9UUlVF
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEdMX0NPTlRF
WFRfUk9CVVNUX0FDQ0VTU19FWFQ6ICpwYXJhbXMgPSBtUm9idXN0QWNjZXNzID8gR0xfVFJVRSA6
IEdMX0ZBTFNFOyAgYnJlYWs7CiAgICAgICBkZWZhdWx0OgotICAgICAgICBtU3RhdGUuZ2V0Qm9v
bGVhbnYocG5hbWUsIHBhcmFtcyk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICAgIG1HTFN0YXRl
LmdldEJvb2xlYW52KHBuYW1lLCBwYXJhbXMpOworICAgICAgICAgIGJyZWFrOwogICAgIH0KIH0K
IApAQCAtMTAwMSw5ICsxMjQ2LDE5IEBACiAgICAgICBjYXNlIEdMX01BWF9URVhUVVJFX0xPRF9C
SUFTOgogICAgICAgICAqcGFyYW1zID0gbUNhcHMubWF4TE9EQmlhczsKICAgICAgICAgYnJlYWs7
CisKKyAgICAgIGNhc2UgR0xfUEFUSF9NT0RFTFZJRVdfTUFUUklYX0NIUk9NSVVNOgorICAgICAg
Y2FzZSBHTF9QQVRIX1BST0pFQ1RJT05fTUFUUklYX0NIUk9NSVVNOgorICAgICAgeworICAgICAg
ICAgIEFTU0VSVChtRXh0ZW5zaW9ucy5wYXRoUmVuZGVyaW5nKTsKKyAgICAgICAgICBjb25zdCBH
TGZsb2F0ICptID0gbUdMU3RhdGUuZ2V0UGF0aFJlbmRlcmluZ01hdHJpeChwbmFtZSk7CisgICAg
ICAgICAgbWVtY3B5KHBhcmFtcywgbSwgMTYgKiBzaXplb2YoR0xmbG9hdCkpOworICAgICAgfQor
ICAgICAgYnJlYWs7CisKICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIG1TdGF0ZS5nZXRGbG9hdHYo
cG5hbWUsIHBhcmFtcyk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICAgIG1HTFN0YXRlLmdldEZs
b2F0dihwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgICBicmVhazsKICAgICB9CiB9CiAKQEAgLTEw
NDIsOCArMTI5NywxMiBAQAogICAgICAgY2FzZSBHTF9NQVhfRlJBR01FTlRfSU5QVVRfQ09NUE9O
RU5UUzogICAgICAgICAgICAqcGFyYW1zID0gbUNhcHMubWF4RnJhZ21lbnRJbnB1dENvbXBvbmVu
dHM7ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEdMX01JTl9QUk9HUkFN
X1RFWEVMX09GRlNFVDogICAgICAgICAgICAgICAgICpwYXJhbXMgPSBtQ2Fwcy5taW5Qcm9ncmFt
VGV4ZWxPZmZzZXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgIGNhc2Ug
R0xfTUFYX1BST0dSQU1fVEVYRUxfT0ZGU0VUOiAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1D
YXBzLm1heFByb2dyYW1UZXhlbE9mZnNldDsgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBHTF9NQUpPUl9WRVJTSU9OOiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqcGFyYW1zID0gbUNsaWVudFZlcnNpb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX01JTk9SX1ZFUlNJT046ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpwYXJhbXMgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFKT1JfVkVSU0lP
TjoKKyAgICAgICAgICAqcGFyYW1zID0gbUNsaWVudE1ham9yVmVyc2lvbjsKKyAgICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgR0xfTUlOT1JfVkVSU0lPTjoKKyAgICAgICAgICAqcGFyYW1zID0g
bUNsaWVudE1pbm9yVmVyc2lvbjsKKyAgICAgICAgICBicmVhazsKICAgICAgIGNhc2UgR0xfTUFY
X0VMRU1FTlRTX0lORElDRVM6ICAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1h
eEVsZW1lbnRzSW5kaWNlczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgY2FzZSBHTF9NQVhfRUxFTUVOVFNfVkVSVElDRVM6ICAgICAgICAgICAgICAgICAgICAqcGFy
YW1zID0gbUNhcHMubWF4RWxlbWVudHNWZXJ0aWNlczsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICBjYXNlIEdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfSU5URVJMRUFW
RURfQ09NUE9ORU5UUzogKnBhcmFtcyA9IG1DYXBzLm1heFRyYW5zZm9ybUZlZWRiYWNrSW50ZXJs
ZWF2ZWRDb21wb25lbnRzOyBicmVhazsKQEAgLTEwOTcsMTIgKzEzNTYsMTM0IEBACiAKICAgICAg
IC8vIEdMX0VYVF9kaXNqb2ludF90aW1lcl9xdWVyeQogICAgICAgY2FzZSBHTF9HUFVfRElTSk9J
TlRfRVhUOgotICAgICAgICAgICpwYXJhbXMgPSBtUmVuZGVyZXItPmdldEdQVURpc2pvaW50KCk7
CisgICAgICAgICAgKnBhcmFtcyA9IG1JbXBsZW1lbnRhdGlvbi0+Z2V0R1BVRGlzam9pbnQoKTsK
ICAgICAgICAgICBicmVhazsKLQorICAgICAgY2FzZSBHTF9NQVhfRlJBTUVCVUZGRVJfV0lEVEg6
CisgICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1heEZyYW1lYnVmZmVyV2lkdGg7CisgICAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlIEdMX01BWF9GUkFNRUJVRkZFUl9IRUlHSFQ6CisgICAgICAg
ICAgKnBhcmFtcyA9IG1DYXBzLm1heEZyYW1lYnVmZmVySGVpZ2h0OworICAgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSBHTF9NQVhfRlJBTUVCVUZGRVJfU0FNUExFUzoKKyAgICAgICAgICAqcGFy
YW1zID0gbUNhcHMubWF4RnJhbWVidWZmZXJTYW1wbGVzOworICAgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSBHTF9NQVhfU0FNUExFX01BU0tfV09SRFM6CisgICAgICAgICAgKnBhcmFtcyA9IG1D
YXBzLm1heFNhbXBsZU1hc2tXb3JkczsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xf
TUFYX0NPTE9SX1RFWFRVUkVfU0FNUExFUzoKKyAgICAgICAgICAqcGFyYW1zID0gbUNhcHMubWF4
Q29sb3JUZXh0dXJlU2FtcGxlczsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFY
X0RFUFRIX1RFWFRVUkVfU0FNUExFUzoKKyAgICAgICAgICAqcGFyYW1zID0gbUNhcHMubWF4RGVw
dGhUZXh0dXJlU2FtcGxlczsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFYX0lO
VEVHRVJfU0FNUExFUzoKKyAgICAgICAgICAqcGFyYW1zID0gbUNhcHMubWF4SW50ZWdlclNhbXBs
ZXM7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX01BWF9WRVJURVhfQVRUUklCX1JF
TEFUSVZFX09GRlNFVDoKKyAgICAgICAgICAqcGFyYW1zID0gbUNhcHMubWF4VmVydGV4QXR0cmli
UmVsYXRpdmVPZmZzZXQ7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX01BWF9WRVJU
RVhfQVRUUklCX0JJTkRJTkdTOgorICAgICAgICAgICpwYXJhbXMgPSBtQ2Fwcy5tYXhWZXJ0ZXhB
dHRyaWJCaW5kaW5nczsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFYX1ZFUlRF
WF9BVFRSSUJfU1RSSURFOgorICAgICAgICAgICpwYXJhbXMgPSBtQ2Fwcy5tYXhWZXJ0ZXhBdHRy
aWJTdHJpZGU7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX01BWF9WRVJURVhfQVRP
TUlDX0NPVU5URVJfQlVGRkVSUzoKKyAgICAgICAgICAqcGFyYW1zID0gbUNhcHMubWF4VmVydGV4
QXRvbWljQ291bnRlckJ1ZmZlcnM7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX01B
WF9WRVJURVhfQVRPTUlDX0NPVU5URVJTOgorICAgICAgICAgICpwYXJhbXMgPSBtQ2Fwcy5tYXhW
ZXJ0ZXhBdG9taWNDb3VudGVyczsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFY
X1ZFUlRFWF9JTUFHRV9VTklGT1JNUzoKKyAgICAgICAgICAqcGFyYW1zID0gbUNhcHMubWF4VmVy
dGV4SW1hZ2VVbmlmb3JtczsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFYX1ZF
UlRFWF9TSEFERVJfU1RPUkFHRV9CTE9DS1M6CisgICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1h
eFZlcnRleFNoYWRlclN0b3JhZ2VCbG9ja3M7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IEdMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTOgorICAgICAgICAgICpwYXJh
bXMgPSBtQ2Fwcy5tYXhGcmFnbWVudEF0b21pY0NvdW50ZXJCdWZmZXJzOworICAgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSBHTF9NQVhfRlJBR01FTlRfQVRPTUlDX0NPVU5URVJTOgorICAgICAg
ICAgICpwYXJhbXMgPSBtQ2Fwcy5tYXhGcmFnbWVudEF0b21pY0NvdW50ZXJzOworICAgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhfRlJBR01FTlRfSU1BR0VfVU5JRk9STVM6CisgICAg
ICAgICAgKnBhcmFtcyA9IG1DYXBzLm1heEZyYWdtZW50SW1hZ2VVbmlmb3JtczsKKyAgICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFYX0ZSQUdNRU5UX1NIQURFUl9TVE9SQUdFX0JMT0NL
UzoKKyAgICAgICAgICAqcGFyYW1zID0gbUNhcHMubWF4RnJhZ21lbnRTaGFkZXJTdG9yYWdlQmxv
Y2tzOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9NSU5fUFJPR1JBTV9URVhUVVJF
X0dBVEhFUl9PRkZTRVQ6CisgICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1pblByb2dyYW1UZXh0
dXJlR2F0aGVyT2Zmc2V0OworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhfUFJP
R1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQ6CisgICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1h
eFByb2dyYW1UZXh0dXJlR2F0aGVyT2Zmc2V0OworICAgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSBHTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX0lOVk9DQVRJT05TOgorICAgICAgICAgICpwYXJh
bXMgPSBtQ2Fwcy5tYXhDb21wdXRlV29ya0dyb3VwSW52b2NhdGlvbnM7CisgICAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIEdMX01BWF9DT01QVVRFX1VOSUZPUk1fQkxPQ0tTOgorICAgICAgICAg
ICpwYXJhbXMgPSBtQ2Fwcy5tYXhDb21wdXRlVW5pZm9ybUJsb2NrczsKKyAgICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgR0xfTUFYX0NPTVBVVEVfVEVYVFVSRV9JTUFHRV9VTklUUzoKKyAgICAg
ICAgICAqcGFyYW1zID0gbUNhcHMubWF4Q29tcHV0ZVRleHR1cmVJbWFnZVVuaXRzOworICAgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhfQ09NUFVURV9TSEFSRURfTUVNT1JZX1NJWkU6
CisgICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1heENvbXB1dGVTaGFyZWRNZW1vcnlTaXplOwor
ICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhfQ09NUFVURV9VTklGT1JNX0NPTVBP
TkVOVFM6CisgICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1heENvbXB1dGVVbmlmb3JtQ29tcG9u
ZW50czsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFYX0NPTVBVVEVfQVRPTUlD
X0NPVU5URVJfQlVGRkVSUzoKKyAgICAgICAgICAqcGFyYW1zID0gbUNhcHMubWF4Q29tcHV0ZUF0
b21pY0NvdW50ZXJCdWZmZXJzOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhf
Q09NUFVURV9BVE9NSUNfQ09VTlRFUlM6CisgICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1heENv
bXB1dGVBdG9taWNDb3VudGVyczsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFY
X0NPTVBVVEVfSU1BR0VfVU5JRk9STVM6CisgICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1heENv
bXB1dGVJbWFnZVVuaWZvcm1zOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhf
Q09NQklORURfQ09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFM6CisgICAgICAgICAgKnBhcmFtcyA9
IG1DYXBzLm1heENvbWJpbmVkQ29tcHV0ZVVuaWZvcm1Db21wb25lbnRzOworICAgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSBHTF9NQVhfQ09NUFVURV9TSEFERVJfU1RPUkFHRV9CTE9DS1M6Cisg
ICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1heENvbXB1dGVTaGFkZXJTdG9yYWdlQmxvY2tzOwor
ICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhfQ09NQklORURfU0hBREVSX09VVFBV
VF9SRVNPVVJDRVM6CisgICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1heENvbWJpbmVkU2hhZGVy
T3V0cHV0UmVzb3VyY2VzOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhfVU5J
Rk9STV9MT0NBVElPTlM6CisgICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1heFVuaWZvcm1Mb2Nh
dGlvbnM7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX01BWF9BVE9NSUNfQ09VTlRF
Ul9CVUZGRVJfQklORElOR1M6CisgICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1heEF0b21pY0Nv
dW50ZXJCdWZmZXJCaW5kaW5nczsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFY
X0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TSVpFOgorICAgICAgICAgICpwYXJhbXMgPSBtQ2Fwcy5t
YXhBdG9taWNDb3VudGVyQnVmZmVyU2l6ZTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
R0xfTUFYX0NPTUJJTkVEX0FUT01JQ19DT1VOVEVSX0JVRkZFUlM6CisgICAgICAgICAgKnBhcmFt
cyA9IG1DYXBzLm1heENvbWJpbmVkQXRvbWljQ291bnRlckJ1ZmZlcnM7CisgICAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIEdMX01BWF9DT01CSU5FRF9BVE9NSUNfQ09VTlRFUlM6CisgICAgICAg
ICAgKnBhcmFtcyA9IG1DYXBzLm1heENvbWJpbmVkQXRvbWljQ291bnRlcnM7CisgICAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIEdMX01BWF9JTUFHRV9VTklUUzoKKyAgICAgICAgICAqcGFyYW1z
ID0gbUNhcHMubWF4SW1hZ2VVbml0czsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xf
TUFYX0NPTUJJTkVEX0lNQUdFX1VOSUZPUk1TOgorICAgICAgICAgICpwYXJhbXMgPSBtQ2Fwcy5t
YXhDb21iaW5lZEltYWdlVW5pZm9ybXM7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdM
X01BWF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfQklORElOR1M6CisgICAgICAgICAgKnBhcmFtcyA9
IG1DYXBzLm1heFNoYWRlclN0b3JhZ2VCdWZmZXJCaW5kaW5nczsKKyAgICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgR0xfTUFYX0NPTUJJTkVEX1NIQURFUl9TVE9SQUdFX0JMT0NLUzoKKyAgICAg
ICAgICAqcGFyYW1zID0gbUNhcHMubWF4Q29tYmluZWRTaGFkZXJTdG9yYWdlQmxvY2tzOworICAg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfT0ZGU0VU
X0FMSUdOTUVOVDoKKyAgICAgICAgICAqcGFyYW1zID0gbUNhcHMuc2hhZGVyU3RvcmFnZUJ1ZmZl
ck9mZnNldEFsaWdubWVudDsKKyAgICAgICAgICBicmVhazsKICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIG1TdGF0ZS5nZXRJbnRlZ2VydihnZXREYXRhKCksIHBuYW1lLCBwYXJhbXMpOwotICAgICAg
ICBicmVhazsKKyAgICAgICAgICBtR0xTdGF0ZS5nZXRJbnRlZ2VydihtU3RhdGUsIHBuYW1lLCBw
YXJhbXMpOworICAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApAQCAtMTEzMCw4ICsxNTExLDEy
IEBACiAKICAgICAgIC8vIEdMX0VYVF9kaXNqb2ludF90aW1lcl9xdWVyeQogICAgICAgY2FzZSBH
TF9USU1FU1RBTVBfRVhUOgotICAgICAgICAgICpwYXJhbXMgPSBtUmVuZGVyZXItPmdldFRpbWVz
dGFtcCgpOworICAgICAgICAgICpwYXJhbXMgPSBtSW1wbGVtZW50YXRpb24tPmdldFRpbWVzdGFt
cCgpOwogICAgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEdMX01BWF9TSEFERVJfU1RPUkFH
RV9CTE9DS19TSVpFOgorICAgICAgICAgICpwYXJhbXMgPSBtQ2Fwcy5tYXhTaGFkZXJTdG9yYWdl
QmxvY2tTaXplOworICAgICAgICAgIGJyZWFrOwogICAgICAgZGVmYXVsdDoKICAgICAgICAgVU5S
RUFDSEFCTEUoKTsKICAgICAgICAgYnJlYWs7CkBAIC0xMTQwLDQzNSArMTUyNSwxMDAgQEAKIAog
dm9pZCBDb250ZXh0OjpnZXRQb2ludGVydihHTGVudW0gcG5hbWUsIHZvaWQgKipwYXJhbXMpIGNv
bnN0CiB7Ci0gICAgbVN0YXRlLmdldFBvaW50ZXJ2KHBuYW1lLCBwYXJhbXMpOworICAgIG1HTFN0
YXRlLmdldFBvaW50ZXJ2KHBuYW1lLCBwYXJhbXMpOwogfQogCi1ib29sIENvbnRleHQ6OmdldElu
ZGV4ZWRJbnRlZ2VydihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMaW50ICpkYXRhKQor
dm9pZCBDb250ZXh0OjpnZXRJbnRlZ2VyaV92KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwg
R0xpbnQgKmRhdGEpCiB7CiAgICAgLy8gUXVlcmllcyBhYm91dCBjb250ZXh0IGNhcGFiaWxpdGll
cyBhbmQgbWF4aW11bXMgYXJlIGFuc3dlcmVkIGJ5IENvbnRleHQuCiAgICAgLy8gUXVlcmllcyBh
Ym91dCBjdXJyZW50IEdMIHN0YXRlIHZhbHVlcyBhcmUgYW5zd2VyZWQgYnkgU3RhdGUuCi0gICAg
Ly8gSW5kZXhlZCBpbnRlZ2VyIHF1ZXJpZXMgYWxsIHJlZmVyIHRvIGN1cnJlbnQgc3RhdGUsIHNv
IHRoaXMgZnVuY3Rpb24gaXMgYQotICAgIC8vIG1lcmUgcGFzc3Rocm91Z2guCi0gICAgcmV0dXJu
IG1TdGF0ZS5nZXRJbmRleGVkSW50ZWdlcnYodGFyZ2V0LCBpbmRleCwgZGF0YSk7Ci19CiAKLWJv
b2wgQ29udGV4dDo6Z2V0SW5kZXhlZEludGVnZXI2NHYoR0xlbnVtIHRhcmdldCwgR0x1aW50IGlu
ZGV4LCBHTGludDY0ICpkYXRhKQotewotICAgIC8vIFF1ZXJpZXMgYWJvdXQgY29udGV4dCBjYXBh
YmlsaXRpZXMgYW5kIG1heGltdW1zIGFyZSBhbnN3ZXJlZCBieSBDb250ZXh0LgotICAgIC8vIFF1
ZXJpZXMgYWJvdXQgY3VycmVudCBHTCBzdGF0ZSB2YWx1ZXMgYXJlIGFuc3dlcmVkIGJ5IFN0YXRl
LgotICAgIC8vIEluZGV4ZWQgaW50ZWdlciBxdWVyaWVzIGFsbCByZWZlciB0byBjdXJyZW50IHN0
YXRlLCBzbyB0aGlzIGZ1bmN0aW9uIGlzIGEKLSAgICAvLyBtZXJlIHBhc3N0aHJvdWdoLgotICAg
IHJldHVybiBtU3RhdGUuZ2V0SW5kZXhlZEludGVnZXI2NHYodGFyZ2V0LCBpbmRleCwgZGF0YSk7
Ci19CisgICAgR0xlbnVtIG5hdGl2ZVR5cGU7CisgICAgdW5zaWduZWQgaW50IG51bVBhcmFtczsK
KyAgICBib29sIHF1ZXJ5U3RhdHVzID0gZ2V0SW5kZXhlZFF1ZXJ5UGFyYW1ldGVySW5mbyh0YXJn
ZXQsICZuYXRpdmVUeXBlLCAmbnVtUGFyYW1zKTsKKyAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklB
QkxFKHF1ZXJ5U3RhdHVzKTsKKyAgICBBU1NFUlQocXVlcnlTdGF0dXMpOwogCi1ib29sIENvbnRl
eHQ6OmdldFF1ZXJ5UGFyYW1ldGVySW5mbyhHTGVudW0gcG5hbWUsIEdMZW51bSAqdHlwZSwgdW5z
aWduZWQgaW50ICpudW1QYXJhbXMpCi17Ci0gICAgaWYgKHBuYW1lID49IEdMX0RSQVdfQlVGRkVS
MF9FWFQgJiYgcG5hbWUgPD0gR0xfRFJBV19CVUZGRVIxNV9FWFQpCisgICAgaWYgKG5hdGl2ZVR5
cGUgPT0gR0xfSU5UKQogICAgIHsKLSAgICAgICAgKnR5cGUgPSBHTF9JTlQ7Ci0gICAgICAgICpu
dW1QYXJhbXMgPSAxOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvLyBQbGVh
c2Ugbm90ZTogdGhlIHF1ZXJ5IHR5cGUgcmV0dXJuZWQgZm9yIERFUFRIX0NMRUFSX1ZBTFVFIGlu
IHRoaXMgaW1wbGVtZW50YXRpb24KLSAgICAvLyBpcyBGTE9BVCByYXRoZXIgdGhhbiBJTlQsIGFz
IHdvdWxkIGJlIHN1Z2dlc3RlZCBieSB0aGUgR0wgRVMgMi4wIHNwZWMuIFRoaXMgaXMgZHVlCi0g
ICAgLy8gdG8gdGhlIGZhY3QgdGhhdCBpdCBpcyBzdG9yZWQgaW50ZXJuYWxseSBhcyBhIGZsb2F0
LCBhbmQgc28gd291bGQgcmVxdWlyZSBjb252ZXJzaW9uCi0gICAgLy8gaWYgcmV0dXJuZWQgZnJv
bSBDb250ZXh0OjpnZXRJbnRlZ2Vydi4gU2luY2UgdGhpcyBjb252ZXJzaW9uIGlzIGFscmVhZHkg
aW1wbGVtZW50ZWQKLSAgICAvLyBpbiB0aGUgY2FzZSB0aGF0IG9uZSBjYWxscyBnbEdldEludGVn
ZXJ2IHRvIHJldHJpZXZlIGEgZmxvYXQtdHlwZWQgc3RhdGUgdmFyaWFibGUsIHdlCi0gICAgLy8g
cGxhY2UgREVQVEhfQ0xFQVJfVkFMVUUgd2l0aCB0aGUgZmxvYXRzLiBUaGlzIHNob3VsZCBtYWtl
IG5vIGRpZmZlcmVuY2UgdG8gdGhlIGNhbGxpbmcKLSAgICAvLyBhcHBsaWNhdGlvbi4KLSAgICBz
d2l0Y2ggKHBuYW1lKQotICAgIHsKLSAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9URVhUVVJFX0ZP
Uk1BVFM6CisgICAgICAgIHN3aXRjaCAodGFyZ2V0KQogICAgICAgICB7Ci0gICAgICAgICAgICAq
dHlwZSA9IEdMX0lOVDsKLSAgICAgICAgICAgICpudW1QYXJhbXMgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBpbnQ+KG1DYXBzLmNvbXByZXNzZWRUZXh0dXJlRm9ybWF0cy5zaXplKCkpOworICAgICAg
ICAgICAgY2FzZSBHTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX0NPVU5UOgorICAgICAgICAgICAg
ICAgIEFTU0VSVChpbmRleCA8IDN1KTsKKyAgICAgICAgICAgICAgICAqZGF0YSA9IG1DYXBzLm1h
eENvbXB1dGVXb3JrR3JvdXBDb3VudFtpbmRleF07CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIEdMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfU0laRToKKyAgICAgICAg
ICAgICAgICBBU1NFUlQoaW5kZXggPCAzdSk7CisgICAgICAgICAgICAgICAgKmRhdGEgPSBtQ2Fw
cy5tYXhDb21wdXRlV29ya0dyb3VwU2l6ZVtpbmRleF07CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIG1HTFN0YXRlLmdldEludGVn
ZXJpX3YodGFyZ2V0LCBpbmRleCwgZGF0YSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICBjYXNlIEdMX1BST0dSQU1fQklOQVJZX0ZPUk1BVFNfT0VTOgotICAgICAgICB7
Ci0gICAgICAgICAgICAqdHlwZSA9IEdMX0lOVDsKLSAgICAgICAgICAgICpudW1QYXJhbXMgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG1DYXBzLnByb2dyYW1CaW5hcnlGb3JtYXRzLnNpemUo
KSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBjYXNlIEdMX1NIQURF
Ul9CSU5BUllfRk9STUFUUzoKLSAgICAgICAgewotICAgICAgICAgICAgKnR5cGUgPSBHTF9JTlQ7
Ci0gICAgICAgICAgICAqbnVtUGFyYW1zID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihtQ2Fw
cy5zaGFkZXJCaW5hcnlGb3JtYXRzLnNpemUoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0KLSAgICAgIGNhc2UgR0xfTUFYX1ZFUlRFWF9BVFRSSUJTOgotICAgICAgY2FzZSBH
TF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUzoKLSAgICAgIGNhc2UgR0xfTUFYX1ZBUllJTkdf
VkVDVE9SUzoKLSAgICAgIGNhc2UgR0xfTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFM6
Ci0gICAgICBjYXNlIEdMX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUzoKLSAgICAgIGNh
c2UgR0xfTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFM6Ci0gICAgICBjYXNlIEdMX01BWF9GUkFHTUVO
VF9VTklGT1JNX1ZFQ1RPUlM6Ci0gICAgICBjYXNlIEdMX01BWF9SRU5ERVJCVUZGRVJfU0laRToK
LSAgICAgIGNhc2UgR0xfTUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVDoKLSAgICAgIGNhc2UgR0xf
TUFYX0RSQVdfQlVGRkVSU19FWFQ6Ci0gICAgICBjYXNlIEdMX05VTV9TSEFERVJfQklOQVJZX0ZP
Uk1BVFM6Ci0gICAgICBjYXNlIEdMX05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUzoKLSAg
ICAgIGNhc2UgR0xfQVJSQVlfQlVGRkVSX0JJTkRJTkc6Ci0gICAgICAvL2Nhc2UgR0xfRlJBTUVC
VUZGRVJfQklORElORzogLy8gZXF1aXZhbGVudCB0byBEUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkdf
QU5HTEUKLSAgICAgIGNhc2UgR0xfRFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HX0FOR0xFOgotICAg
ICAgY2FzZSBHTF9SRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkdfQU5HTEU6Ci0gICAgICBjYXNlIEdM
X1JFTkRFUkJVRkZFUl9CSU5ESU5HOgotICAgICAgY2FzZSBHTF9DVVJSRU5UX1BST0dSQU06Ci0g
ICAgICBjYXNlIEdMX1BBQ0tfQUxJR05NRU5UOgotICAgICAgY2FzZSBHTF9QQUNLX1JFVkVSU0Vf
Uk9XX09SREVSX0FOR0xFOgotICAgICAgY2FzZSBHTF9VTlBBQ0tfQUxJR05NRU5UOgotICAgICAg
Y2FzZSBHTF9HRU5FUkFURV9NSVBNQVBfSElOVDoKLSAgICAgIGNhc2UgR0xfRlJBR01FTlRfU0hB
REVSX0RFUklWQVRJVkVfSElOVF9PRVM6Ci0gICAgICBjYXNlIEdMX1JFRF9CSVRTOgotICAgICAg
Y2FzZSBHTF9HUkVFTl9CSVRTOgotICAgICAgY2FzZSBHTF9CTFVFX0JJVFM6Ci0gICAgICBjYXNl
IEdMX0FMUEhBX0JJVFM6Ci0gICAgICBjYXNlIEdMX0RFUFRIX0JJVFM6Ci0gICAgICBjYXNlIEdM
X1NURU5DSUxfQklUUzoKLSAgICAgIGNhc2UgR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElO
RzoKLSAgICAgIGNhc2UgR0xfQ1VMTF9GQUNFX01PREU6Ci0gICAgICBjYXNlIEdMX0ZST05UX0ZB
Q0U6Ci0gICAgICBjYXNlIEdMX0FDVElWRV9URVhUVVJFOgotICAgICAgY2FzZSBHTF9TVEVOQ0lM
X0ZVTkM6Ci0gICAgICBjYXNlIEdMX1NURU5DSUxfVkFMVUVfTUFTSzoKLSAgICAgIGNhc2UgR0xf
U1RFTkNJTF9SRUY6Ci0gICAgICBjYXNlIEdMX1NURU5DSUxfRkFJTDoKLSAgICAgIGNhc2UgR0xf
U1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUw6Ci0gICAgICBjYXNlIEdMX1NURU5DSUxfUEFTU19ERVBU
SF9QQVNTOgotICAgICAgY2FzZSBHTF9TVEVOQ0lMX0JBQ0tfRlVOQzoKLSAgICAgIGNhc2UgR0xf
U1RFTkNJTF9CQUNLX1ZBTFVFX01BU0s6Ci0gICAgICBjYXNlIEdMX1NURU5DSUxfQkFDS19SRUY6
Ci0gICAgICBjYXNlIEdMX1NURU5DSUxfQkFDS19GQUlMOgotICAgICAgY2FzZSBHTF9TVEVOQ0lM
X0JBQ0tfUEFTU19ERVBUSF9GQUlMOgotICAgICAgY2FzZSBHTF9TVEVOQ0lMX0JBQ0tfUEFTU19E
RVBUSF9QQVNTOgotICAgICAgY2FzZSBHTF9ERVBUSF9GVU5DOgotICAgICAgY2FzZSBHTF9CTEVO
RF9TUkNfUkdCOgotICAgICAgY2FzZSBHTF9CTEVORF9TUkNfQUxQSEE6Ci0gICAgICBjYXNlIEdM
X0JMRU5EX0RTVF9SR0I6Ci0gICAgICBjYXNlIEdMX0JMRU5EX0RTVF9BTFBIQToKLSAgICAgIGNh
c2UgR0xfQkxFTkRfRVFVQVRJT05fUkdCOgotICAgICAgY2FzZSBHTF9CTEVORF9FUVVBVElPTl9B
TFBIQToKLSAgICAgIGNhc2UgR0xfU1RFTkNJTF9XUklURU1BU0s6Ci0gICAgICBjYXNlIEdMX1NU
RU5DSUxfQkFDS19XUklURU1BU0s6Ci0gICAgICBjYXNlIEdMX1NURU5DSUxfQ0xFQVJfVkFMVUU6
Ci0gICAgICBjYXNlIEdMX1NVQlBJWEVMX0JJVFM6Ci0gICAgICBjYXNlIEdMX01BWF9URVhUVVJF
X1NJWkU6Ci0gICAgICBjYXNlIEdMX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkU6Ci0gICAgICBj
YXNlIEdMX1NBTVBMRV9CVUZGRVJTOgotICAgICAgY2FzZSBHTF9TQU1QTEVTOgotICAgICAgY2Fz
ZSBHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEU6Ci0gICAgICBjYXNlIEdMX0lNUExF
TUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUOgotICAgICAgY2FzZSBHTF9URVhUVVJFX0JJTkRJ
TkdfMkQ6Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQklORElOR19DVUJFX01BUDoKLSAgICAgIGNh
c2UgR0xfUkVTRVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZX0VYVDoKLSAgICAgIGNhc2UgR0xfTlVN
X1BST0dSQU1fQklOQVJZX0ZPUk1BVFNfT0VTOgotICAgICAgICB7Ci0gICAgICAgICAgICAqdHlw
ZSA9IEdMX0lOVDsKLSAgICAgICAgICAgICpudW1QYXJhbXMgPSAxOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgY2FzZSBHTF9NQVhfU0FNUExFU19BTkdMRToKLSAgICAg
ICAgewotICAgICAgICAgICAgaWYgKG1FeHRlbnNpb25zLmZyYW1lYnVmZmVyTXVsdGlzYW1wbGUp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgKnR5cGUgPSBHTF9JTlQ7Ci0gICAgICAg
ICAgICAgICAgKm51bVBhcmFtcyA9IDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgY2FzZSBHTF9NQVhf
VklFV1BPUlRfRElNUzoKLSAgICAgICAgewotICAgICAgICAgICAgKnR5cGUgPSBHTF9JTlQ7Ci0g
ICAgICAgICAgICAqbnVtUGFyYW1zID0gMjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgIGNhc2UgR0xfVklFV1BPUlQ6Ci0gICAgICBjYXNlIEdMX1NDSVNTT1JfQk9YOgot
ICAgICAgICB7Ci0gICAgICAgICAgICAqdHlwZSA9IEdMX0lOVDsKLSAgICAgICAgICAgICpudW1Q
YXJhbXMgPSA0OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgY2FzZSBH
TF9TSEFERVJfQ09NUElMRVI6Ci0gICAgICBjYXNlIEdMX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlQ6
Ci0gICAgICBjYXNlIEdMX0RFUFRIX1dSSVRFTUFTSzoKLSAgICAgIGNhc2UgR0xfQ1VMTF9GQUNF
OiAgICAgICAgICAgICAgICAvLyBDVUxMX0ZBQ0UgdGhyb3VnaCBESVRIRVIgYXJlIG5hdHVyYWwg
dG8gSXNFbmFibGVkLAotICAgICAgY2FzZSBHTF9QT0xZR09OX09GRlNFVF9GSUxMOiAgICAgIC8v
IGJ1dCBjYW4gYmUgcmV0cmlldmVkIHRocm91Z2ggdGhlIEdldHtUeXBlfXYgcXVlcmllcy4KLSAg
ICAgIGNhc2UgR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFOiAvLyBGb3IgdGhpcyBwdXJwb3Nl
LCB0aGV5IGFyZSB0cmVhdGVkIGhlcmUgYXMgYm9vbC1uYXR1cmFsCi0gICAgICBjYXNlIEdMX1NB
TVBMRV9DT1ZFUkFHRToKLSAgICAgIGNhc2UgR0xfU0NJU1NPUl9URVNUOgotICAgICAgY2FzZSBH
TF9TVEVOQ0lMX1RFU1Q6Ci0gICAgICBjYXNlIEdMX0RFUFRIX1RFU1Q6Ci0gICAgICBjYXNlIEdM
X0JMRU5EOgotICAgICAgY2FzZSBHTF9ESVRIRVI6Ci0gICAgICBjYXNlIEdMX0NPTlRFWFRfUk9C
VVNUX0FDQ0VTU19FWFQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgICp0eXBlID0gR0xfQk9PTDsK
LSAgICAgICAgICAgICpudW1QYXJhbXMgPSAxOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgY2FzZSBHTF9DT0xPUl9XUklURU1BU0s6Ci0gICAgICAgIHsKLSAgICAgICAg
ICAgICp0eXBlID0gR0xfQk9PTDsKLSAgICAgICAgICAgICpudW1QYXJhbXMgPSA0OwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgY2FzZSBHTF9QT0xZR09OX09GRlNFVF9G
QUNUT1I6Ci0gICAgICBjYXNlIEdMX1BPTFlHT05fT0ZGU0VUX1VOSVRTOgotICAgICAgY2FzZSBH
TF9TQU1QTEVfQ09WRVJBR0VfVkFMVUU6Ci0gICAgICBjYXNlIEdMX0RFUFRIX0NMRUFSX1ZBTFVF
OgotICAgICAgY2FzZSBHTF9MSU5FX1dJRFRIOgotICAgICAgICB7Ci0gICAgICAgICAgICAqdHlw
ZSA9IEdMX0ZMT0FUOwotICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBjYXNlIEdMX0FMSUFTRURfTElORV9XSURUSF9SQU5H
RToKLSAgICAgIGNhc2UgR0xfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFOgotICAgICAgY2FzZSBH
TF9ERVBUSF9SQU5HRToKLSAgICAgICAgewotICAgICAgICAgICAgKnR5cGUgPSBHTF9GTE9BVDsK
LSAgICAgICAgICAgICpudW1QYXJhbXMgPSAyOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgY2FzZSBHTF9DT0xPUl9DTEVBUl9WQUxVRToKLSAgICAgIGNhc2UgR0xfQkxF
TkRfQ09MT1I6Ci0gICAgICAgIHsKLSAgICAgICAgICAgICp0eXBlID0gR0xfRkxPQVQ7Ci0gICAg
ICAgICAgICAqbnVtUGFyYW1zID0gNDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgIGNhc2UgR0xfTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOgotICAgICAgICBp
ZiAoIW1FeHRlbnNpb25zLm1heFRleHR1cmVBbmlzb3Ryb3B5KQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgKnR5cGUgPSBHTF9GTE9BVDsK
LSAgICAgICAgKm51bVBhcmFtcyA9IDE7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgY2Fz
ZSBHTF9USU1FU1RBTVBfRVhUOgotICAgICAgICAgIGlmICghbUV4dGVuc2lvbnMuZGlzam9pbnRU
aW1lclF1ZXJ5KQotICAgICAgICAgIHsKLSAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgIH0KLSAgICAgICAgICAqdHlwZSAgICAgID0gR0xfSU5UXzY0X0FOR0xFWDsKLSAgICAg
ICAgICAqbnVtUGFyYW1zID0gMTsKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGNhc2Ug
R0xfR1BVX0RJU0pPSU5UX0VYVDoKLSAgICAgICAgICBpZiAoIW1FeHRlbnNpb25zLmRpc2pvaW50
VGltZXJRdWVyeSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICB9Ci0gICAgICAgICAgKnR5cGUgICAgICA9IEdMX0lOVDsKLSAgICAgICAgICAqbnVt
UGFyYW1zID0gMTsKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0KLSAgICBpZiAobUV4
dGVuc2lvbnMuZGVidWcpCisgICAgZWxzZQogICAgIHsKLSAgICAgICAgc3dpdGNoIChwbmFtZSkK
LSAgICAgICAgewotICAgICAgICAgICAgY2FzZSBHTF9ERUJVR19MT0dHRURfTUVTU0FHRVM6Ci0g
ICAgICAgICAgICBjYXNlIEdMX0RFQlVHX05FWFRfTE9HR0VEX01FU1NBR0VfTEVOR1RIOgotICAg
ICAgICAgICAgY2FzZSBHTF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSDoKLSAgICAgICAgICAgIGNh
c2UgR0xfTUFYX0RFQlVHX01FU1NBR0VfTEVOR1RIOgotICAgICAgICAgICAgY2FzZSBHTF9NQVhf
REVCVUdfTE9HR0VEX01FU1NBR0VTOgotICAgICAgICAgICAgY2FzZSBHTF9NQVhfREVCVUdfR1JP
VVBfU1RBQ0tfREVQVEg6Ci0gICAgICAgICAgICBjYXNlIEdMX01BWF9MQUJFTF9MRU5HVEg6Ci0g
ICAgICAgICAgICAgICAgKnR5cGUgICAgICA9IEdMX0lOVDsKLSAgICAgICAgICAgICAgICAqbnVt
UGFyYW1zID0gMTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgICAg
Y2FzZSBHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVM6Ci0gICAgICAgICAgICBjYXNlIEdMX0RF
QlVHX09VVFBVVDoKLSAgICAgICAgICAgICAgICAqdHlwZSAgICAgID0gR0xfQk9PTDsKLSAgICAg
ICAgICAgICAgICAqbnVtUGFyYW1zID0gMTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgfQorICAgICAgICBDYXN0SW5kZXhlZFN0YXRlVmFsdWVzKHRoaXMsIG5hdGl2ZVR5
cGUsIHRhcmdldCwgaW5kZXgsIG51bVBhcmFtcywgZGF0YSk7CiAgICAgfQorfQogCi0gICAgLy8g
Q2hlY2sgZm9yIEVTMy4wKyBwYXJhbWV0ZXIgbmFtZXMgd2hpY2ggYXJlIGFsc28gZXhwb3NlZCBh
cyBFUzIgZXh0ZW5zaW9ucwotICAgIHN3aXRjaCAocG5hbWUpCi0gICAgewotICAgICAgICBjYXNl
IEdMX1BBQ0tfUk9XX0xFTkdUSDoKLSAgICAgICAgY2FzZSBHTF9QQUNLX1NLSVBfUk9XUzoKLSAg
ICAgICAgY2FzZSBHTF9QQUNLX1NLSVBfUElYRUxTOgotICAgICAgICAgICAgaWYgKChtQ2xpZW50
VmVyc2lvbiA8IDMpICYmICFtRXh0ZW5zaW9ucy5wYWNrU3ViaW1hZ2UpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgKnR5cGUgICAgICA9IEdMX0lOVDsKLSAgICAgICAgICAgICpudW1QYXJhbXMgPSAxOwotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGNhc2UgR0xfVU5QQUNLX1JPV19MRU5HVEg6
Ci0gICAgICAgIGNhc2UgR0xfVU5QQUNLX1NLSVBfUk9XUzoKLSAgICAgICAgY2FzZSBHTF9VTlBB
Q0tfU0tJUF9QSVhFTFM6Ci0gICAgICAgICAgICBpZiAoKG1DbGllbnRWZXJzaW9uIDwgMykgJiYg
IW1FeHRlbnNpb25zLnVucGFja1N1YmltYWdlKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICp0eXBlICAgICAg
PSBHTF9JTlQ7Ci0gICAgICAgICAgICAqbnVtUGFyYW1zID0gMTsKLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BUlJBWV9CSU5ESU5HOgotICAgICAgICAg
ICAgaWYgKChtQ2xpZW50VmVyc2lvbiA8IDMpICYmICFtRXh0ZW5zaW9ucy52ZXJ0ZXhBcnJheU9i
amVjdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAqdHlwZSAgICAgID0gR0xfSU5UOwotICAgICAgICAgICAg
Km51bVBhcmFtcyA9IDE7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgY2FzZSBH
TF9QSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HOgotICAgICAgICBjYXNlIEdMX1BJWEVMX1VOUEFD
S19CVUZGRVJfQklORElORzoKLSAgICAgICAgICAgIGlmICgobUNsaWVudFZlcnNpb24gPCAzKSAm
JiAhbUV4dGVuc2lvbnMucGl4ZWxCdWZmZXJPYmplY3QpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgKnR5cGUg
ICAgICA9IEdMX0lOVDsKLSAgICAgICAgICAgICpudW1QYXJhbXMgPSAxOwotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQordm9pZCBDb250ZXh0OjpnZXRJbnRlZ2VyNjRpX3YoR0xlbnVt
IHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGludDY0ICpkYXRhKQoreworICAgIC8vIFF1ZXJpZXMg
YWJvdXQgY29udGV4dCBjYXBhYmlsaXRpZXMgYW5kIG1heGltdW1zIGFyZSBhbnN3ZXJlZCBieSBD
b250ZXh0LgorICAgIC8vIFF1ZXJpZXMgYWJvdXQgY3VycmVudCBHTCBzdGF0ZSB2YWx1ZXMgYXJl
IGFuc3dlcmVkIGJ5IFN0YXRlLgogCi0gICAgaWYgKG1DbGllbnRWZXJzaW9uIDwgMykKKyAgICBH
TGVudW0gbmF0aXZlVHlwZTsKKyAgICB1bnNpZ25lZCBpbnQgbnVtUGFyYW1zOworICAgIGJvb2wg
cXVlcnlTdGF0dXMgPSBnZXRJbmRleGVkUXVlcnlQYXJhbWV0ZXJJbmZvKHRhcmdldCwgJm5hdGl2
ZVR5cGUsICZudW1QYXJhbXMpOworICAgIFVOVVNFRF9BU1NFUlRJT05fVkFSSUFCTEUocXVlcnlT
dGF0dXMpOworICAgIEFTU0VSVChxdWVyeVN0YXR1cyk7CisKKyAgICBpZiAobmF0aXZlVHlwZSA9
PSBHTF9JTlRfNjRfQU5HTEVYKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBtR0xTdGF0ZS5nZXRJbnRlZ2VyNjRpX3YodGFyZ2V0LCBpbmRleCwgZGF0YSk7CiAgICAgfQot
Ci0gICAgLy8gQ2hlY2sgZm9yIEVTMy4wKyBwYXJhbWV0ZXIgbmFtZXMKLSAgICBzd2l0Y2ggKHBu
YW1lKQorICAgIGVsc2UKICAgICB7Ci0gICAgICBjYXNlIEdMX01BWF9VTklGT1JNX0JVRkZFUl9C
SU5ESU5HUzoKLSAgICAgIGNhc2UgR0xfVU5JRk9STV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVDoK
LSAgICAgIGNhc2UgR0xfVU5JRk9STV9CVUZGRVJfQklORElORzoKLSAgICAgIGNhc2UgR0xfVFJB
TlNGT1JNX0ZFRURCQUNLX0JJTkRJTkc6Ci0gICAgICBjYXNlIEdMX1RSQU5TRk9STV9GRUVEQkFD
S19CVUZGRVJfQklORElORzoKLSAgICAgIGNhc2UgR0xfQ09QWV9SRUFEX0JVRkZFUl9CSU5ESU5H
OgotICAgICAgY2FzZSBHTF9DT1BZX1dSSVRFX0JVRkZFUl9CSU5ESU5HOgotICAgICAgY2FzZSBH
TF9TQU1QTEVSX0JJTkRJTkc6Ci0gICAgICBjYXNlIEdMX1JFQURfQlVGRkVSOgotICAgICAgY2Fz
ZSBHTF9URVhUVVJFX0JJTkRJTkdfM0Q6Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQklORElOR18y
RF9BUlJBWToKLSAgICAgIGNhc2UgR0xfTUFYXzNEX1RFWFRVUkVfU0laRToKLSAgICAgIGNhc2Ug
R0xfTUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTOgotICAgICAgY2FzZSBHTF9NQVhfVkVSVEVYX1VO
SUZPUk1fQkxPQ0tTOgotICAgICAgY2FzZSBHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9CTE9DS1M6
Ci0gICAgICBjYXNlIEdMX01BWF9DT01CSU5FRF9VTklGT1JNX0JMT0NLUzoKLSAgICAgIGNhc2Ug
R0xfTUFYX1ZFUlRFWF9PVVRQVVRfQ09NUE9ORU5UUzoKLSAgICAgIGNhc2UgR0xfTUFYX0ZSQUdN
RU5UX0lOUFVUX0NPTVBPTkVOVFM6Ci0gICAgICBjYXNlIEdMX01BWF9WQVJZSU5HX0NPTVBPTkVO
VFM6Ci0gICAgICBjYXNlIEdMX01BWF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTOgotICAgICAg
Y2FzZSBHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTOgotICAgICAgY2FzZSBHTF9N
SU5fUFJPR1JBTV9URVhFTF9PRkZTRVQ6Ci0gICAgICBjYXNlIEdMX01BWF9QUk9HUkFNX1RFWEVM
X09GRlNFVDoKLSAgICAgIGNhc2UgR0xfTlVNX0VYVEVOU0lPTlM6Ci0gICAgICBjYXNlIEdMX01B
Sk9SX1ZFUlNJT046Ci0gICAgICBjYXNlIEdMX01JTk9SX1ZFUlNJT046Ci0gICAgICBjYXNlIEdM
X01BWF9FTEVNRU5UU19JTkRJQ0VTOgotICAgICAgY2FzZSBHTF9NQVhfRUxFTUVOVFNfVkVSVElD
RVM6Ci0gICAgICBjYXNlIEdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfSU5URVJMRUFWRURfQ09N
UE9ORU5UUzoKLSAgICAgIGNhc2UgR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9B
VFRSSUJTOgotICAgICAgY2FzZSBHTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0NP
TVBPTkVOVFM6Ci0gICAgICBjYXNlIEdMX1VOUEFDS19JTUFHRV9IRUlHSFQ6Ci0gICAgICBjYXNl
IEdMX1VOUEFDS19TS0lQX0lNQUdFUzoKLSAgICAgICAgewotICAgICAgICAgICAgKnR5cGUgPSBH
TF9JTlQ7Ci0gICAgICAgICAgICAqbnVtUGFyYW1zID0gMTsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLQotICAgICAgY2FzZSBHTF9NQVhfRUxFTUVOVF9JTkRFWDoKLSAgICAgIGNh
c2UgR0xfTUFYX1VOSUZPUk1fQkxPQ0tfU0laRToKLSAgICAgIGNhc2UgR0xfTUFYX0NPTUJJTkVE
X1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFM6Ci0gICAgICBjYXNlIEdMX01BWF9DT01CSU5FRF9G
UkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFM6Ci0gICAgICBjYXNlIEdMX01BWF9TRVJWRVJfV0FJ
VF9USU1FT1VUOgotICAgICAgICB7Ci0gICAgICAgICAgICAqdHlwZSA9IEdMX0lOVF82NF9BTkdM
RVg7Ci0gICAgICAgICAgICAqbnVtUGFyYW1zID0gMTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLQotICAgICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQUNUSVZFOgotICAg
ICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUEFVU0VEOgotICAgICAgY2FzZSBHTF9QUklN
SVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWDoKLSAgICAgIGNhc2UgR0xfUkFTVEVSSVpFUl9ESVND
QVJEOgotICAgICAgICB7Ci0gICAgICAgICAgICAqdHlwZSA9IEdMX0JPT0w7Ci0gICAgICAgICAg
ICAqbnVtUGFyYW1zID0gMTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg
ICAgY2FzZSBHTF9NQVhfVEVYVFVSRV9MT0RfQklBUzoKLSAgICAgICAgewotICAgICAgICAgICAg
KnR5cGUgPSBHTF9GTE9BVDsKLSAgICAgICAgICAgICpudW1QYXJhbXMgPSAxOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBDYXN0SW5kZXhlZFN0YXRlVmFsdWVzKHRo
aXMsIG5hdGl2ZVR5cGUsIHRhcmdldCwgaW5kZXgsIG51bVBhcmFtcywgZGF0YSk7CiAgICAgfQot
Ci0gICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIENvbnRleHQ6OmdldEluZGV4ZWRRdWVyeVBh
cmFtZXRlckluZm8oR0xlbnVtIHRhcmdldCwgR0xlbnVtICp0eXBlLCB1bnNpZ25lZCBpbnQgKm51
bVBhcmFtcykKK3ZvaWQgQ29udGV4dDo6Z2V0Qm9vbGVhbmlfdihHTGVudW0gdGFyZ2V0LCBHTHVp
bnQgaW5kZXgsIEdMYm9vbGVhbiAqZGF0YSkKIHsKLSAgICBpZiAobUNsaWVudFZlcnNpb24gPCAz
KQorICAgIC8vIFF1ZXJpZXMgYWJvdXQgY29udGV4dCBjYXBhYmlsaXRpZXMgYW5kIG1heGltdW1z
IGFyZSBhbnN3ZXJlZCBieSBDb250ZXh0LgorICAgIC8vIFF1ZXJpZXMgYWJvdXQgY3VycmVudCBH
TCBzdGF0ZSB2YWx1ZXMgYXJlIGFuc3dlcmVkIGJ5IFN0YXRlLgorCisgICAgR0xlbnVtIG5hdGl2
ZVR5cGU7CisgICAgdW5zaWduZWQgaW50IG51bVBhcmFtczsKKyAgICBib29sIHF1ZXJ5U3RhdHVz
ID0gZ2V0SW5kZXhlZFF1ZXJ5UGFyYW1ldGVySW5mbyh0YXJnZXQsICZuYXRpdmVUeXBlLCAmbnVt
UGFyYW1zKTsKKyAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKHF1ZXJ5U3RhdHVzKTsKKyAg
ICBBU1NFUlQocXVlcnlTdGF0dXMpOworCisgICAgaWYgKG5hdGl2ZVR5cGUgPT0gR0xfQk9PTCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbUdMU3RhdGUuZ2V0Qm9vbGVh
bmlfdih0YXJnZXQsIGluZGV4LCBkYXRhKTsKICAgICB9Ci0KLSAgICBzd2l0Y2ggKHRhcmdldCkK
KyAgICBlbHNlCiAgICAgewotICAgICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVS
X0JJTkRJTkc6Ci0gICAgICBjYXNlIEdMX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkc6Ci0gICAgICAg
IHsKLSAgICAgICAgICAgICp0eXBlID0gR0xfSU5UOwotICAgICAgICAgICAgKm51bVBhcmFtcyA9
IDE7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBjYXNlIEdMX1RSQU5T
Rk9STV9GRUVEQkFDS19CVUZGRVJfU1RBUlQ6Ci0gICAgICBjYXNlIEdMX1RSQU5TRk9STV9GRUVE
QkFDS19CVUZGRVJfU0laRToKLSAgICAgIGNhc2UgR0xfVU5JRk9STV9CVUZGRVJfU1RBUlQ6Ci0g
ICAgICBjYXNlIEdMX1VOSUZPUk1fQlVGRkVSX1NJWkU6Ci0gICAgICAgIHsKLSAgICAgICAgICAg
ICp0eXBlID0gR0xfSU5UXzY0X0FOR0xFWDsKLSAgICAgICAgICAgICpudW1QYXJhbXMgPSAxOwot
ICAgICAgICB9CisgICAgICAgIENhc3RJbmRleGVkU3RhdGVWYWx1ZXModGhpcywgbmF0aXZlVHlw
ZSwgdGFyZ2V0LCBpbmRleCwgbnVtUGFyYW1zLCBkYXRhKTsKICAgICB9Ci0KLSAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKIEVycm9yIENvbnRleHQ6OmRyYXdBcnJheXMoR0xlbnVtIG1vZGUsIEdMaW50
IGZpcnN0LCBHTHNpemVpIGNvdW50KQogewogICAgIHN5bmNSZW5kZXJlclN0YXRlKCk7Ci0gICAg
RXJyb3IgZXJyb3IgPSBtUmVuZGVyZXItPmRyYXdBcnJheXMoZ2V0RGF0YSgpLCBtb2RlLCBmaXJz
dCwgY291bnQpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1
cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShtSW1wbGVtZW50YXRpb24tPmRyYXdBcnJh
eXMobW9kZSwgZmlyc3QsIGNvdW50KSk7CisgICAgTWFya1RyYW5zZm9ybUZlZWRiYWNrQnVmZmVy
VXNhZ2UobUdMU3RhdGUuZ2V0Q3VycmVudFRyYW5zZm9ybUZlZWRiYWNrKCkpOwogCi0gICAgTWFy
a1RyYW5zZm9ybUZlZWRiYWNrQnVmZmVyVXNhZ2UobVN0YXRlLmdldEN1cnJlbnRUcmFuc2Zvcm1G
ZWVkYmFjaygpKTsKLQotICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJu
IE5vRXJyb3IoKTsKIH0KIAogRXJyb3IgQ29udGV4dDo6ZHJhd0FycmF5c0luc3RhbmNlZChHTGVu
dW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VDb3Vu
dCkKIHsKICAgICBzeW5jUmVuZGVyZXJTdGF0ZSgpOwotICAgIEVycm9yIGVycm9yID0gbVJlbmRl
cmVyLT5kcmF3QXJyYXlzSW5zdGFuY2VkKGdldERhdGEoKSwgbW9kZSwgZmlyc3QsIGNvdW50LCBp
bnN0YW5jZUNvdW50KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkobUltcGxlbWVudGF0aW9uLT5kcmF3
QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwgaW5zdGFuY2VDb3VudCkpOworICAg
IE1hcmtUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlclVzYWdlKG1HTFN0YXRlLmdldEN1cnJlbnRUcmFu
c2Zvcm1GZWVkYmFjaygpKTsKIAotICAgIE1hcmtUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlclVzYWdl
KG1TdGF0ZS5nZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJhY2soKSk7Ci0KLSAgICByZXR1cm4gRXJy
b3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBOb0Vycm9yKCk7CiB9CiAKIEVycm9yIENvbnRl
eHQ6OmRyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwKQEAgLTE1NzgsNyArMTYyOCw3IEBACiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkKIHsK
ICAgICBzeW5jUmVuZGVyZXJTdGF0ZSgpOwotICAgIHJldHVybiBtUmVuZGVyZXItPmRyYXdFbGVt
ZW50cyhnZXREYXRhKCksIG1vZGUsIGNvdW50LCB0eXBlLCBpbmRpY2VzLCBpbmRleFJhbmdlKTsK
KyAgICByZXR1cm4gbUltcGxlbWVudGF0aW9uLT5kcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5
cGUsIGluZGljZXMsIGluZGV4UmFuZ2UpOwogfQogCiBFcnJvciBDb250ZXh0OjpkcmF3RWxlbWVu
dHNJbnN0YW5jZWQoR0xlbnVtIG1vZGUsCkBAIC0xNTg5LDggKzE2MzksOCBAQAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEluZGV4UmFuZ2UgJmluZGV4UmFuZ2Up
CiB7CiAgICAgc3luY1JlbmRlcmVyU3RhdGUoKTsKLSAgICByZXR1cm4gbVJlbmRlcmVyLT5kcmF3
RWxlbWVudHNJbnN0YW5jZWQoZ2V0RGF0YSgpLCBtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywg
aW5zdGFuY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bmRleFJhbmdlKTsKKyAgICByZXR1cm4gbUltcGxlbWVudGF0aW9uLT5kcmF3RWxlbWVudHNJbnN0
YW5jZWQobW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMsIGluc3RhbmNlcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhSYW5nZSk7CiB9CiAK
IEVycm9yIENvbnRleHQ6OmRyYXdSYW5nZUVsZW1lbnRzKEdMZW51bSBtb2RlLApAQCAtMTYwMiw0
OSArMTY1MiwyODUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElu
ZGV4UmFuZ2UgJmluZGV4UmFuZ2UpCiB7CiAgICAgc3luY1JlbmRlcmVyU3RhdGUoKTsKLSAgICBy
ZXR1cm4gbVJlbmRlcmVyLT5kcmF3UmFuZ2VFbGVtZW50cyhnZXREYXRhKCksIG1vZGUsIHN0YXJ0
LCBlbmQsIGNvdW50LCB0eXBlLCBpbmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluZGV4UmFuZ2UpOworICAgIHJldHVybiBtSW1wbGVtZW50YXRpb24tPmRy
YXdSYW5nZUVsZW1lbnRzKG1vZGUsIHN0YXJ0LCBlbmQsIGNvdW50LCB0eXBlLCBpbmRpY2VzLCBp
bmRleFJhbmdlKTsKIH0KIAogRXJyb3IgQ29udGV4dDo6Zmx1c2goKQogewotICAgIHJldHVybiBt
UmVuZGVyZXItPmZsdXNoKCk7CisgICAgcmV0dXJuIG1JbXBsZW1lbnRhdGlvbi0+Zmx1c2goKTsK
IH0KIAogRXJyb3IgQ29udGV4dDo6ZmluaXNoKCkKIHsKLSAgICByZXR1cm4gbVJlbmRlcmVyLT5m
aW5pc2goKTsKKyAgICByZXR1cm4gbUltcGxlbWVudGF0aW9uLT5maW5pc2goKTsKIH0KIAogdm9p
ZCBDb250ZXh0OjppbnNlcnRFdmVudE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAq
bWFya2VyKQogewotICAgIEFTU0VSVChtUmVuZGVyZXIpOwotICAgIG1SZW5kZXJlci0+aW5zZXJ0
RXZlbnRNYXJrZXIobGVuZ3RoLCBtYXJrZXIpOworICAgIEFTU0VSVChtSW1wbGVtZW50YXRpb24p
OworICAgIG1JbXBsZW1lbnRhdGlvbi0+aW5zZXJ0RXZlbnRNYXJrZXIobGVuZ3RoLCBtYXJrZXIp
OwogfQogCiB2b2lkIENvbnRleHQ6OnB1c2hHcm91cE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29u
c3QgY2hhciAqbWFya2VyKQogewotICAgIEFTU0VSVChtUmVuZGVyZXIpOwotICAgIG1SZW5kZXJl
ci0+cHVzaEdyb3VwTWFya2VyKGxlbmd0aCwgbWFya2VyKTsKKyAgICBBU1NFUlQobUltcGxlbWVu
dGF0aW9uKTsKKyAgICBtSW1wbGVtZW50YXRpb24tPnB1c2hHcm91cE1hcmtlcihsZW5ndGgsIG1h
cmtlcik7CiB9CiAKIHZvaWQgQ29udGV4dDo6cG9wR3JvdXBNYXJrZXIoKQogewotICAgIEFTU0VS
VChtUmVuZGVyZXIpOwotICAgIG1SZW5kZXJlci0+cG9wR3JvdXBNYXJrZXIoKTsKKyAgICBBU1NF
UlQobUltcGxlbWVudGF0aW9uKTsKKyAgICBtSW1wbGVtZW50YXRpb24tPnBvcEdyb3VwTWFya2Vy
KCk7CiB9CiAKLXZvaWQgQ29udGV4dDo6cmVjb3JkRXJyb3IoY29uc3QgRXJyb3IgJmVycm9yKQor
dm9pZCBDb250ZXh0OjpiaW5kVW5pZm9ybUxvY2F0aW9uKEdMdWludCBwcm9ncmFtLCBHTGludCBs
b2NhdGlvbiwgY29uc3QgR0xjaGFyICpuYW1lKQogeworICAgIFByb2dyYW0gKnByb2dyYW1PYmpl
Y3QgPSBnZXRQcm9ncmFtKHByb2dyYW0pOworICAgIEFTU0VSVChwcm9ncmFtT2JqZWN0KTsKKwor
ICAgIHByb2dyYW1PYmplY3QtPmJpbmRVbmlmb3JtTG9jYXRpb24obG9jYXRpb24sIG5hbWUpOwor
fQorCit2b2lkIENvbnRleHQ6OnNldENvdmVyYWdlTW9kdWxhdGlvbihHTGVudW0gY29tcG9uZW50
cykKK3sKKyAgICBtR0xTdGF0ZS5zZXRDb3ZlcmFnZU1vZHVsYXRpb24oY29tcG9uZW50cyk7Cit9
CisKK3ZvaWQgQ29udGV4dDo6bG9hZFBhdGhSZW5kZXJpbmdNYXRyaXgoR0xlbnVtIG1hdHJpeE1v
ZGUsIGNvbnN0IEdMZmxvYXQgKm1hdHJpeCkKK3sKKyAgICBtR0xTdGF0ZS5sb2FkUGF0aFJlbmRl
cmluZ01hdHJpeChtYXRyaXhNb2RlLCBtYXRyaXgpOworfQorCit2b2lkIENvbnRleHQ6OmxvYWRQ
YXRoUmVuZGVyaW5nSWRlbnRpdHlNYXRyaXgoR0xlbnVtIG1hdHJpeE1vZGUpCit7CisgICAgR0xm
bG9hdCBJWzE2XTsKKyAgICBhbmdsZTo6TWF0cml4PEdMZmxvYXQ+OjpzZXRUb0lkZW50aXR5KEkp
OworCisgICAgbUdMU3RhdGUubG9hZFBhdGhSZW5kZXJpbmdNYXRyaXgobWF0cml4TW9kZSwgSSk7
Cit9CisKK3ZvaWQgQ29udGV4dDo6c3RlbmNpbEZpbGxQYXRoKEdMdWludCBwYXRoLCBHTGVudW0g
ZmlsbE1vZGUsIEdMdWludCBtYXNrKQoreworICAgIGNvbnN0IGF1dG8gKnBhdGhPYmogPSBtUmVz
b3VyY2VNYW5hZ2VyLT5nZXRQYXRoKHBhdGgpOworICAgIGlmICghcGF0aE9iaikKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gVE9ETyhzdmFpc2FuZW5AbnZpZGlhLmNvbSk6IG1heWJlIHN5bmMg
b25seSBzdGF0ZSByZXF1aXJlZCBmb3IgcGF0aCByZW5kZXJpbmc/CisgICAgc3luY1JlbmRlcmVy
U3RhdGUoKTsKKworICAgIG1JbXBsZW1lbnRhdGlvbi0+c3RlbmNpbEZpbGxQYXRoKHBhdGhPYmos
IGZpbGxNb2RlLCBtYXNrKTsKK30KKwordm9pZCBDb250ZXh0OjpzdGVuY2lsU3Ryb2tlUGF0aChH
THVpbnQgcGF0aCwgR0xpbnQgcmVmZXJlbmNlLCBHTHVpbnQgbWFzaykKK3sKKyAgICBjb25zdCBh
dXRvICpwYXRoT2JqID0gbVJlc291cmNlTWFuYWdlci0+Z2V0UGF0aChwYXRoKTsKKyAgICBpZiAo
IXBhdGhPYmopCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRPRE8oc3ZhaXNhbmVuQG52aWRp
YS5jb20pOiBtYXliZSBzeW5jIG9ubHkgc3RhdGUgcmVxdWlyZWQgZm9yIHBhdGggcmVuZGVyaW5n
PworICAgIHN5bmNSZW5kZXJlclN0YXRlKCk7CisKKyAgICBtSW1wbGVtZW50YXRpb24tPnN0ZW5j
aWxTdHJva2VQYXRoKHBhdGhPYmosIHJlZmVyZW5jZSwgbWFzayk7Cit9CisKK3ZvaWQgQ29udGV4
dDo6Y292ZXJGaWxsUGF0aChHTHVpbnQgcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSkKK3sKKyAgICBj
b25zdCBhdXRvICpwYXRoT2JqID0gbVJlc291cmNlTWFuYWdlci0+Z2V0UGF0aChwYXRoKTsKKyAg
ICBpZiAoIXBhdGhPYmopCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRPRE8oc3ZhaXNhbmVu
QG52aWRpYS5jb20pOiBtYXliZSBzeW5jIG9ubHkgc3RhdGUgcmVxdWlyZWQgZm9yIHBhdGggcmVu
ZGVyaW5nPworICAgIHN5bmNSZW5kZXJlclN0YXRlKCk7CisKKyAgICBtSW1wbGVtZW50YXRpb24t
PmNvdmVyRmlsbFBhdGgocGF0aE9iaiwgY292ZXJNb2RlKTsKK30KKwordm9pZCBDb250ZXh0Ojpj
b3ZlclN0cm9rZVBhdGgoR0x1aW50IHBhdGgsIEdMZW51bSBjb3Zlck1vZGUpCit7CisgICAgY29u
c3QgYXV0byAqcGF0aE9iaiA9IG1SZXNvdXJjZU1hbmFnZXItPmdldFBhdGgocGF0aCk7CisgICAg
aWYgKCFwYXRoT2JqKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUT0RPKHN2YWlzYW5lbkBu
dmlkaWEuY29tKTogbWF5YmUgc3luYyBvbmx5IHN0YXRlIHJlcXVpcmVkIGZvciBwYXRoIHJlbmRl
cmluZz8KKyAgICBzeW5jUmVuZGVyZXJTdGF0ZSgpOworCisgICAgbUltcGxlbWVudGF0aW9uLT5j
b3ZlclN0cm9rZVBhdGgocGF0aE9iaiwgY292ZXJNb2RlKTsKK30KKwordm9pZCBDb250ZXh0Ojpz
dGVuY2lsVGhlbkNvdmVyRmlsbFBhdGgoR0x1aW50IHBhdGgsIEdMZW51bSBmaWxsTW9kZSwgR0x1
aW50IG1hc2ssIEdMZW51bSBjb3Zlck1vZGUpCit7CisgICAgY29uc3QgYXV0byAqcGF0aE9iaiA9
IG1SZXNvdXJjZU1hbmFnZXItPmdldFBhdGgocGF0aCk7CisgICAgaWYgKCFwYXRoT2JqKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBUT0RPKHN2YWlzYW5lbkBudmlkaWEuY29tKTogbWF5YmUg
c3luYyBvbmx5IHN0YXRlIHJlcXVpcmVkIGZvciBwYXRoIHJlbmRlcmluZz8KKyAgICBzeW5jUmVu
ZGVyZXJTdGF0ZSgpOworCisgICAgbUltcGxlbWVudGF0aW9uLT5zdGVuY2lsVGhlbkNvdmVyRmls
bFBhdGgocGF0aE9iaiwgZmlsbE1vZGUsIG1hc2ssIGNvdmVyTW9kZSk7Cit9CisKK3ZvaWQgQ29u
dGV4dDo6c3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGgoR0x1aW50IHBhdGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpCit7CisgICAg
Y29uc3QgYXV0byAqcGF0aE9iaiA9IG1SZXNvdXJjZU1hbmFnZXItPmdldFBhdGgocGF0aCk7Cisg
ICAgaWYgKCFwYXRoT2JqKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUT0RPKHN2YWlzYW5l
bkBudmlkaWEuY29tKTogbWF5YmUgc3luYyBvbmx5IHN0YXRlIHJlcXVpcmVkIGZvciBwYXRoIHJl
bmRlcmluZz8KKyAgICBzeW5jUmVuZGVyZXJTdGF0ZSgpOworCisgICAgbUltcGxlbWVudGF0aW9u
LT5zdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aChwYXRoT2JqLCByZWZlcmVuY2UsIG1hc2ssIGNv
dmVyTW9kZSk7Cit9CisKK3ZvaWQgQ29udGV4dDo6Y292ZXJGaWxsUGF0aEluc3RhbmNlZChHTHNp
emVpIG51bVBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwYXRoTmFtZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgdm9pZCAqcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IHBhdGhCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBjb3Zlck1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQoreworICAgIGNvbnN0IGF1dG8gJnBhdGhPYmpl
Y3RzID0KKyAgICAgICAgR2F0aGVyUGF0aHMoKm1SZXNvdXJjZU1hbmFnZXIsIG51bVBhdGhzLCBw
YXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZSk7CisKKyAgICAvLyBUT0RPKHN2YWlzYW5lbkBu
dmlkaWEuY29tKTogbWF5YmUgc3luYyBvbmx5IHN0YXRlIHJlcXVpcmVkIGZvciBwYXRoIHJlbmRl
cmluZz8KKyAgICBzeW5jUmVuZGVyZXJTdGF0ZSgpOworCisgICAgbUltcGxlbWVudGF0aW9uLT5j
b3ZlckZpbGxQYXRoSW5zdGFuY2VkKHBhdGhPYmplY3RzLCBjb3Zlck1vZGUsIHRyYW5zZm9ybVR5
cGUsIHRyYW5zZm9ybVZhbHVlcyk7Cit9CisKK3ZvaWQgQ29udGV4dDo6Y292ZXJTdHJva2VQYXRo
SW5zdGFuY2VkKEdMc2l6ZWkgbnVtUGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCit7
CisgICAgY29uc3QgYXV0byAmcGF0aE9iamVjdHMgPQorICAgICAgICBHYXRoZXJQYXRocygqbVJl
c291cmNlTWFuYWdlciwgbnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlKTsK
KworICAgIC8vIFRPRE8oc3ZhaXNhbmVuQG52aWRpYS5jb20pOiBtYXliZSBzeW5jIG9ubHkgc3Rh
dGUgcmVxdWlyZWQgZm9yIHBhdGggcmVuZGVyaW5nPworICAgIHN5bmNSZW5kZXJlclN0YXRlKCk7
CisKKyAgICBtSW1wbGVtZW50YXRpb24tPmNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZChwYXRoT2Jq
ZWN0cywgY292ZXJNb2RlLCB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVZhbHVlcyk7Cit9CisKK3ZvaWQgQ29udGV4
dDo6c3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkKEdMc2l6ZWkgbnVtUGF0aHMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNm
b3JtVmFsdWVzKQoreworICAgIGNvbnN0IGF1dG8gJnBhdGhPYmplY3RzID0KKyAgICAgICAgR2F0
aGVyUGF0aHMoKm1SZXNvdXJjZU1hbmFnZXIsIG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhz
LCBwYXRoQmFzZSk7CisKKyAgICAvLyBUT0RPKHN2YWlzYW5lbkBudmlkaWEuY29tKTogbWF5YmUg
c3luYyBvbmx5IHN0YXRlIHJlcXVpcmVkIGZvciBwYXRoIHJlbmRlcmluZz8KKyAgICBzeW5jUmVu
ZGVyZXJTdGF0ZSgpOworCisgICAgbUltcGxlbWVudGF0aW9uLT5zdGVuY2lsRmlsbFBhdGhJbnN0
YW5jZWQocGF0aE9iamVjdHMsIGZpbGxNb2RlLCBtYXNrLCB0cmFuc2Zvcm1UeXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVZhbHVlcyk7
Cit9CisKK3ZvaWQgQ29udGV4dDo6c3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWQoR0xzaXplaSBu
dW1QYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBhdGhOYW1lVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgdm9pZCAqcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBwYXRoQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgcmVmZXJlbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKK3sKKyAgICBjb25z
dCBhdXRvICZwYXRoT2JqZWN0cyA9CisgICAgICAgIEdhdGhlclBhdGhzKCptUmVzb3VyY2VNYW5h
Z2VyLCBudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2UpOworCisgICAgLy8g
VE9ETyhzdmFpc2FuZW5AbnZpZGlhLmNvbSk6IG1heWJlIHN5bmMgb25seSBzdGF0ZSByZXF1aXJl
ZCBmb3IgcGF0aCByZW5kZXJpbmc/CisgICAgc3luY1JlbmRlcmVyU3RhdGUoKTsKKworICAgIG1J
bXBsZW1lbnRhdGlvbi0+c3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWQocGF0aE9iamVjdHMsIHJl
ZmVyZW5jZSwgbWFzaywgdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVZhbHVlcyk7Cit9CisKK3ZvaWQgQ29udGV4
dDo6c3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkKEdMc2l6ZWkgbnVtUGF0aHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0
aE5hbWVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgdm9pZCAqcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJh
bnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKK3sKKyAgICBjb25zdCBhdXRvICZw
YXRoT2JqZWN0cyA9CisgICAgICAgIEdhdGhlclBhdGhzKCptUmVzb3VyY2VNYW5hZ2VyLCBudW1Q
YXRocywgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2UpOworCisgICAgLy8gVE9ETyhzdmFp
c2FuZW5AbnZpZGlhLmNvbSk6IG1heWJlIHN5bmMgb25seSBzdGF0ZSByZXF1aXJlZCBmb3IgcGF0
aCByZW5kZXJpbmc/CisgICAgc3luY1JlbmRlcmVyU3RhdGUoKTsKKworICAgIG1JbXBsZW1lbnRh
dGlvbi0+c3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkKHBhdGhPYmplY3RzLCBjb3Zl
ck1vZGUsIGZpbGxNb2RlLCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcyk7Cit9
CisKK3ZvaWQgQ29udGV4dDo6c3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWQoR0xz
aXplaSBudW1QYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVm
ZXJlbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5z
Zm9ybVZhbHVlcykKK3sKKyAgICBjb25zdCBhdXRvICZwYXRoT2JqZWN0cyA9CisgICAgICAgIEdh
dGhlclBhdGhzKCptUmVzb3VyY2VNYW5hZ2VyLCBudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRo
cywgcGF0aEJhc2UpOworCisgICAgLy8gVE9ETyhzdmFpc2FuZW5AbnZpZGlhLmNvbSk6IG1heWJl
IHN5bmMgb25seSBzdGF0ZSByZXF1aXJlZCBmb3IgcGF0aCByZW5kZXJpbmc/CisgICAgc3luY1Jl
bmRlcmVyU3RhdGUoKTsKKworICAgIG1JbXBsZW1lbnRhdGlvbi0+c3RlbmNpbFRoZW5Db3ZlclN0
cm9rZVBhdGhJbnN0YW5jZWQocGF0aE9iamVjdHMsIGNvdmVyTW9kZSwgcmVmZXJlbmNlLCBtYXNr
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzKTsKK30KKwordm9pZCBDb250ZXh0Ojpi
aW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwg
Y29uc3QgR0xjaGFyICpuYW1lKQoreworICAgIGF1dG8gKnByb2dyYW1PYmplY3QgPSBnZXRQcm9n
cmFtKHByb2dyYW0pOworCisgICAgcHJvZ3JhbU9iamVjdC0+YmluZEZyYWdtZW50SW5wdXRMb2Nh
dGlvbihsb2NhdGlvbiwgbmFtZSk7Cit9CisKK3ZvaWQgQ29udGV4dDo6cHJvZ3JhbVBhdGhGcmFn
bWVudElucHV0R2VuKEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gZ2VuTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGNvbXBvbmVudHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpjb2VmZnMpCit7CisgICAgYXV0
byAqcHJvZ3JhbU9iamVjdCA9IGdldFByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICBwcm9ncmFtT2Jq
ZWN0LT5wYXRoRnJhZ21lbnRJbnB1dEdlbihsb2NhdGlvbiwgZ2VuTW9kZSwgY29tcG9uZW50cywg
Y29lZmZzKTsKK30KKwordm9pZCBDb250ZXh0OjpoYW5kbGVFcnJvcihjb25zdCBFcnJvciAmZXJy
b3IpCit7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7Ci0gICAgICAgIG1FcnJvcnMu
aW5zZXJ0KGVycm9yLmdldENvZGUoKSk7CisgICAgICAgIEdMZW51bSBjb2RlID0gZXJyb3IuZ2V0
Q29kZSgpOworICAgICAgICBtRXJyb3JzLmluc2VydChjb2RlKTsKKyAgICAgICAgaWYgKGNvZGUg
PT0gR0xfT1VUX09GX01FTU9SWSAmJiBnZXRXb3JrYXJvdW5kcygpLmxvc2VDb250ZXh0T25PdXRP
Zk1lbW9yeSkKKyAgICAgICAgeworICAgICAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7CisgICAg
ICAgIH0KIAogICAgICAgICBpZiAoIWVycm9yLmdldE1lc3NhZ2UoKS5lbXB0eSgpKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBhdXRvICZkZWJ1ZyA9IG1TdGF0ZS5nZXREZWJ1ZygpOwotICAgICAg
ICAgICAgZGVidWcuaW5zZXJ0TWVzc2FnZShHTF9ERUJVR19TT1VSQ0VfQVBJLCBHTF9ERUJVR19U
WVBFX0VSUk9SLCBlcnJvci5nZXRJRCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9ERUJVR19TRVZFUklUWV9ISUdILCBlcnJvci5nZXRNZXNzYWdlKCkpOworICAgICAgICAg
ICAgYXV0byAqZGVidWcgPSAmbUdMU3RhdGUuZ2V0RGVidWcoKTsKKyAgICAgICAgICAgIGRlYnVn
LT5pbnNlcnRNZXNzYWdlKEdMX0RFQlVHX1NPVVJDRV9BUEksIEdMX0RFQlVHX1RZUEVfRVJST1Is
IGVycm9yLmdldElEKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9ERUJV
R19TRVZFUklUWV9ISUdILCBlcnJvci5nZXRNZXNzYWdlKCkpOwogICAgICAgICB9CiAgICAgfQog
fQpAQCAtMTY2NSwzMiArMTk1MSw2MSBAQAogICAgIH0KIH0KIAorLy8gTk9URTogdGhpcyBmdW5j
dGlvbiBzaG91bGQgbm90IGFzc3VtZSB0aGF0IHRoaXMgY29udGV4dCBpcyBjdXJyZW50IQordm9p
ZCBDb250ZXh0OjptYXJrQ29udGV4dExvc3QoKQoreworICAgIGlmIChtUmVzZXRTdHJhdGVneSA9
PSBHTF9MT1NFX0NPTlRFWFRfT05fUkVTRVRfRVhUKQorICAgIHsKKyAgICAgICAgbVJlc2V0U3Rh
dHVzID0gR0xfVU5LTk9XTl9DT05URVhUX1JFU0VUX0VYVDsKKyAgICAgICAgbUNvbnRleHRMb3N0
Rm9yY2VkID0gdHJ1ZTsKKyAgICB9CisgICAgbUNvbnRleHRMb3N0ICAgICA9IHRydWU7Cit9CisK
K2Jvb2wgQ29udGV4dDo6aXNDb250ZXh0TG9zdCgpCit7CisgICAgcmV0dXJuIG1Db250ZXh0TG9z
dDsKK30KKwogR0xlbnVtIENvbnRleHQ6OmdldFJlc2V0U3RhdHVzKCkKIHsKLSAgICAvL1RPRE8o
am1hZGlsbCk6IG5lZWRzIE1BTkdMRSByZXdvcmtpbmcKLSAgICBpZiAobVJlc2V0U3RhdHVzID09
IEdMX05PX0VSUk9SICYmICFtQ29udGV4dExvc3QpCisgICAgLy8gRXZlbiBpZiB0aGUgYXBwbGlj
YXRpb24gZG9lc24ndCB3YW50IHRvIGtub3cgYWJvdXQgcmVzZXRzLCB3ZSB3YW50IHRvIGtub3cK
KyAgICAvLyBhcyBpdCB3aWxsIGFsbG93IHVzIHRvIHNraXAgYWxsIHRoZSBjYWxscy4KKyAgICBp
ZiAobVJlc2V0U3RyYXRlZ3kgPT0gR0xfTk9fUkVTRVRfTk9USUZJQ0FUSU9OX0VYVCkKICAgICB7
Ci0gICAgICAgIC8vIG1SZXNldFN0YXR1cyB3aWxsIGJlIHNldCBieSB0aGUgbWFya0NvbnRleHRM
b3N0IGNhbGxiYWNrCi0gICAgICAgIC8vIGluIHRoZSBjYXNlIGEgbm90aWZpY2F0aW9uIGlzIHNl
bnQKLSAgICAgICAgaWYgKG1SZW5kZXJlci0+dGVzdERldmljZUxvc3QoKSkKKyAgICAgICAgaWYg
KCFtQ29udGV4dExvc3QgJiYgbUltcGxlbWVudGF0aW9uLT5nZXRSZXNldFN0YXR1cygpICE9IEdM
X05PX0VSUk9SKQogICAgICAgICB7Ci0gICAgICAgICAgICBtUmVuZGVyZXItPm5vdGlmeURldmlj
ZUxvc3QoKTsKKyAgICAgICAgICAgIG1Db250ZXh0TG9zdCA9IHRydWU7CiAgICAgICAgIH0KKwor
ICAgICAgICAvLyBFWFRfcm9idXN0bmVzcywgc2VjdGlvbiAyLjY6IElmIHRoZSByZXNldCBub3Rp
ZmljYXRpb24gYmVoYXZpb3IgaXMKKyAgICAgICAgLy8gTk9fUkVTRVRfTk9USUZJQ0FUSU9OX0VY
VCwgdGhlbiB0aGUgaW1wbGVtZW50YXRpb24gd2lsbCBuZXZlciBkZWxpdmVyIG5vdGlmaWNhdGlv
biBvZgorICAgICAgICAvLyByZXNldCBldmVudHMsIGFuZCBHZXRHcmFwaGljc1Jlc2V0U3RhdHVz
RVhUIHdpbGwgYWx3YXlzIHJldHVybiBOT19FUlJPUi4KKyAgICAgICAgcmV0dXJuIEdMX05PX0VS
Uk9SOwogICAgIH0KIAotICAgIEdMZW51bSBzdGF0dXMgPSBtUmVzZXRTdGF0dXM7Ci0KLSAgICBp
ZiAobVJlc2V0U3RhdHVzICE9IEdMX05PX0VSUk9SKQorICAgIC8vIFRoZSBHTF9FWFRfcm9idXN0
bmVzcyBzcGVjIHNheXMgdGhhdCBpZiBhIHJlc2V0IGlzIGVuY291bnRlcmVkLCBhIHJlc2V0Cisg
ICAgLy8gc3RhdHVzIHNob3VsZCBiZSByZXR1cm5lZCBhdCBsZWFzdCBvbmNlLCBhbmQgR0xfTk9f
RVJST1Igc2hvdWxkIGJlIHJldHVybmVkCisgICAgLy8gb25jZSB0aGUgZGV2aWNlIGhhcyBmaW5p
c2hlZCByZXNldHRpbmcuCisgICAgaWYgKCFtQ29udGV4dExvc3QpCiAgICAgewotICAgICAgICBB
U1NFUlQobUNvbnRleHRMb3N0KTsKKyAgICAgICAgQVNTRVJUKG1SZXNldFN0YXR1cyA9PSBHTF9O
T19FUlJPUik7CisgICAgICAgIG1SZXNldFN0YXR1cyA9IG1JbXBsZW1lbnRhdGlvbi0+Z2V0UmVz
ZXRTdGF0dXMoKTsKIAotICAgICAgICBpZiAobVJlbmRlcmVyLT50ZXN0RGV2aWNlUmVzZXR0YWJs
ZSgpKQorICAgICAgICBpZiAobVJlc2V0U3RhdHVzICE9IEdMX05PX0VSUk9SKQogICAgICAgICB7
Ci0gICAgICAgICAgICBtUmVzZXRTdGF0dXMgPSBHTF9OT19FUlJPUjsKKyAgICAgICAgICAgIG1D
b250ZXh0TG9zdCA9IHRydWU7CiAgICAgICAgIH0KICAgICB9CisgICAgZWxzZSBpZiAoIW1Db250
ZXh0TG9zdEZvcmNlZCAmJiBtUmVzZXRTdGF0dXMgIT0gR0xfTk9fRVJST1IpCisgICAgeworICAg
ICAgICAvLyBJZiBtYXJrQ29udGV4dExvc3Qgd2FzIHVzZWQgdG8gbWFyayB0aGUgY29udGV4dCBs
b3N0IHRoZW4KKyAgICAgICAgLy8gYXNzdW1lIHRoYXQgaXMgbm90IHJlY292ZXJhYmxlLCBhbmQg
Y29udGludWUgdG8gcmVwb3J0IHRoZQorICAgICAgICAvLyBsb3N0IHJlc2V0IHN0YXR1cyBmb3Ig
dGhlIGxpZmV0aW1lIG9mIHRoaXMgY29udGV4dC4KKyAgICAgICAgbVJlc2V0U3RhdHVzID0gbUlt
cGxlbWVudGF0aW9uLT5nZXRSZXNldFN0YXR1cygpOworICAgIH0KIAotICAgIHJldHVybiBzdGF0
dXM7CisgICAgcmV0dXJuIG1SZXNldFN0YXR1czsKIH0KIAogYm9vbCBDb250ZXh0Ojppc1Jlc2V0
Tm90aWZpY2F0aW9uRW5hYmxlZCgpCkBAIC0xNzMxLDcgKzIwNDYsOCBAQAogICAgIFZlcnRleEFy
cmF5ICp2ZXJ0ZXhBcnJheSA9IGdldFZlcnRleEFycmF5KHZlcnRleEFycmF5SGFuZGxlKTsKICAg
ICBpZiAoIXZlcnRleEFycmF5KQogICAgIHsKLSAgICAgICAgdmVydGV4QXJyYXkgICAgICAgICAg
ICAgICAgICAgICAgICA9IG5ldyBWZXJ0ZXhBcnJheShtUmVuZGVyZXIsIHZlcnRleEFycmF5SGFu
ZGxlLCBNQVhfVkVSVEVYX0FUVFJJQlMpOworICAgICAgICB2ZXJ0ZXhBcnJheSA9IG5ldyBWZXJ0
ZXhBcnJheShtSW1wbGVtZW50YXRpb24uZ2V0KCksIHZlcnRleEFycmF5SGFuZGxlLCBNQVhfVkVS
VEVYX0FUVFJJQlMpOworCiAgICAgICAgIG1WZXJ0ZXhBcnJheU1hcFt2ZXJ0ZXhBcnJheUhhbmRs
ZV0gPSB2ZXJ0ZXhBcnJheTsKICAgICB9CiAKQEAgLTE3NDQsNyArMjA2MCw4IEBACiAgICAgVHJh
bnNmb3JtRmVlZGJhY2sgKnRyYW5zZm9ybUZlZWRiYWNrID0gZ2V0VHJhbnNmb3JtRmVlZGJhY2so
dHJhbnNmb3JtRmVlZGJhY2tIYW5kbGUpOwogICAgIGlmICghdHJhbnNmb3JtRmVlZGJhY2spCiAg
ICAgewotICAgICAgICB0cmFuc2Zvcm1GZWVkYmFjayA9IG5ldyBUcmFuc2Zvcm1GZWVkYmFjayht
UmVuZGVyZXIsIHRyYW5zZm9ybUZlZWRiYWNrSGFuZGxlLCBtQ2Fwcyk7CisgICAgICAgIHRyYW5z
Zm9ybUZlZWRiYWNrID0KKyAgICAgICAgICAgIG5ldyBUcmFuc2Zvcm1GZWVkYmFjayhtSW1wbGVt
ZW50YXRpb24uZ2V0KCksIHRyYW5zZm9ybUZlZWRiYWNrSGFuZGxlLCBtQ2Fwcyk7CiAgICAgICAg
IHRyYW5zZm9ybUZlZWRiYWNrLT5hZGRSZWYoKTsKICAgICAgICAgbVRyYW5zZm9ybUZlZWRiYWNr
TWFwW3RyYW5zZm9ybUZlZWRiYWNrSGFuZGxlXSA9IHRyYW5zZm9ybUZlZWRiYWNrOwogICAgIH0K
QEAgLTE3NTksNyArMjA3Niw3IEBACiAgICAgYm9vbCBuZXZlckNyZWF0ZWQgPSBmcmFtZWJ1ZmZl
ckl0ID09IG1GcmFtZWJ1ZmZlck1hcC5lbmQoKTsKICAgICBpZiAobmV2ZXJDcmVhdGVkIHx8IGZy
YW1lYnVmZmVySXQtPnNlY29uZCA9PSBudWxscHRyKQogICAgIHsKLSAgICAgICAgRnJhbWVidWZm
ZXIgKm5ld0ZCTyA9IG5ldyBGcmFtZWJ1ZmZlcihtQ2FwcywgbVJlbmRlcmVyLCBmcmFtZWJ1ZmZl
cik7CisgICAgICAgIEZyYW1lYnVmZmVyICpuZXdGQk8gPSBuZXcgRnJhbWVidWZmZXIobUNhcHMs
IG1JbXBsZW1lbnRhdGlvbi5nZXQoKSwgZnJhbWVidWZmZXIpOwogICAgICAgICBpZiAobmV2ZXJD
cmVhdGVkKQogICAgICAgICB7CiAgICAgICAgICAgICBtRnJhbWVidWZmZXJIYW5kbGVBbGxvY2F0
b3IucmVzZXJ2ZShmcmFtZWJ1ZmZlcik7CkBAIC0xNzczLDEzICsyMDkwLDM2IEBACiAgICAgcmV0
dXJuIGZyYW1lYnVmZmVySXQtPnNlY29uZDsKIH0KIAorYm9vbCBDb250ZXh0Ojppc1RleHR1cmVH
ZW5lcmF0ZWQoR0x1aW50IHRleHR1cmUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1SZXNvdXJjZU1h
bmFnZXItPmlzVGV4dHVyZUdlbmVyYXRlZCh0ZXh0dXJlKTsKK30KKworYm9vbCBDb250ZXh0Ojpp
c0J1ZmZlckdlbmVyYXRlZChHTHVpbnQgYnVmZmVyKSBjb25zdAoreworICAgIHJldHVybiBtUmVz
b3VyY2VNYW5hZ2VyLT5pc0J1ZmZlckdlbmVyYXRlZChidWZmZXIpOworfQorCitib29sIENvbnRl
eHQ6OmlzUmVuZGVyYnVmZmVyR2VuZXJhdGVkKEdMdWludCByZW5kZXJidWZmZXIpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1SZXNvdXJjZU1hbmFnZXItPmlzUmVuZGVyYnVmZmVyR2VuZXJhdGVkKHJl
bmRlcmJ1ZmZlcik7Cit9CisKK2Jvb2wgQ29udGV4dDo6aXNGcmFtZWJ1ZmZlckdlbmVyYXRlZChH
THVpbnQgZnJhbWVidWZmZXIpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1GcmFtZWJ1ZmZlck1hcC5m
aW5kKDApICE9IG1GcmFtZWJ1ZmZlck1hcC5lbmQoKSk7CisgICAgcmV0dXJuIG1GcmFtZWJ1ZmZl
ck1hcC5maW5kKGZyYW1lYnVmZmVyKSAhPSBtRnJhbWVidWZmZXJNYXAuZW5kKCk7Cit9CisKIGJv
b2wgQ29udGV4dDo6aXNWZXJ0ZXhBcnJheUdlbmVyYXRlZChHTHVpbnQgdmVydGV4QXJyYXkpCiB7
CisgICAgQVNTRVJUKG1WZXJ0ZXhBcnJheU1hcC5maW5kKDApICE9IG1WZXJ0ZXhBcnJheU1hcC5l
bmQoKSk7CiAgICAgcmV0dXJuIG1WZXJ0ZXhBcnJheU1hcC5maW5kKHZlcnRleEFycmF5KSAhPSBt
VmVydGV4QXJyYXlNYXAuZW5kKCk7CiB9CiAKIGJvb2wgQ29udGV4dDo6aXNUcmFuc2Zvcm1GZWVk
YmFja0dlbmVyYXRlZChHTHVpbnQgdHJhbnNmb3JtRmVlZGJhY2spCiB7CisgICAgQVNTRVJUKG1U
cmFuc2Zvcm1GZWVkYmFja01hcC5maW5kKDApICE9IG1UcmFuc2Zvcm1GZWVkYmFja01hcC5lbmQo
KSk7CiAgICAgcmV0dXJuIG1UcmFuc2Zvcm1GZWVkYmFja01hcC5maW5kKHRyYW5zZm9ybUZlZWRi
YWNrKSAhPSBtVHJhbnNmb3JtRmVlZGJhY2tNYXAuZW5kKCk7CiB9CiAKQEAgLTE3ODksNyArMjEy
OSw3IEBACiAgICAgLy8gYWxsb2NhdGlvbiBtYXAgbWFuYWdlbWVudCBlaXRoZXIgaGVyZSBvciBp
biB0aGUgcmVzb3VyY2UgbWFuYWdlciBhdCBkZXRhY2ggdGltZS4KICAgICAvLyBaZXJvIHRleHR1
cmVzIGFyZSBoZWxkIGJ5IHRoZSBDb250ZXh0LCBhbmQgd2UgZG9uJ3QgYXR0ZW1wdCB0byByZXF1
ZXN0IHRoZW0gZnJvbQogICAgIC8vIHRoZSBTdGF0ZS4KLSAgICBtU3RhdGUuZGV0YWNoVGV4dHVy
ZShtWmVyb1RleHR1cmVzLCB0ZXh0dXJlKTsKKyAgICBtR0xTdGF0ZS5kZXRhY2hUZXh0dXJlKG1a
ZXJvVGV4dHVyZXMsIHRleHR1cmUpOwogfQogCiB2b2lkIENvbnRleHQ6OmRldGFjaEJ1ZmZlcihH
THVpbnQgYnVmZmVyKQpAQCAtMTgwMiw3ICsyMTQyLDcgQEAKICAgICAvLyBBdHRhY2htZW50cyB0
byB1bmJvdW5kIGNvbnRhaW5lciBvYmplY3RzLCBzdWNoIGFzCiAgICAgLy8gZGVsZXRpb24gb2Yg
YSBidWZmZXIgYXR0YWNoZWQgdG8gYSB2ZXJ0ZXggYXJyYXkgb2JqZWN0IHdoaWNoIGlzIG5vdCBi
b3VuZCB0byB0aGUgY29udGV4dCwKICAgICAvLyBhcmUgbm90IGFmZmVjdGVkIGFuZCBjb250aW51
ZSB0byBhY3QgYXMgcmVmZXJlbmNlcyBvbiB0aGUgZGVsZXRlZCBvYmplY3QKLSAgICBtU3RhdGUu
ZGV0YWNoQnVmZmVyKGJ1ZmZlcik7CisgICAgbUdMU3RhdGUuZGV0YWNoQnVmZmVyKGJ1ZmZlcik7
CiB9CiAKIHZvaWQgQ29udGV4dDo6ZGV0YWNoRnJhbWVidWZmZXIoR0x1aW50IGZyYW1lYnVmZmVy
KQpAQCAtMTgxNSwxMiArMjE1NSwxMiBAQAogICAgIC8vIElmIGEgZnJhbWVidWZmZXIgdGhhdCBp
cyBjdXJyZW50bHkgYm91bmQgdG8gdGhlIHRhcmdldCBGUkFNRUJVRkZFUiBpcyBkZWxldGVkLCBp
dCBpcyBhcyB0aG91Z2gKICAgICAvLyBCaW5kRnJhbWVidWZmZXIgaGFkIGJlZW4gZXhlY3V0ZWQg
d2l0aCB0aGUgdGFyZ2V0IG9mIEZSQU1FQlVGRkVSIGFuZCBmcmFtZWJ1ZmZlciBvZiB6ZXJvLgog
Ci0gICAgaWYgKG1TdGF0ZS5yZW1vdmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nKGZyYW1lYnVmZmVy
KSAmJiBmcmFtZWJ1ZmZlciAhPSAwKQorICAgIGlmIChtR0xTdGF0ZS5yZW1vdmVSZWFkRnJhbWVi
dWZmZXJCaW5kaW5nKGZyYW1lYnVmZmVyKSAmJiBmcmFtZWJ1ZmZlciAhPSAwKQogICAgIHsKICAg
ICAgICAgYmluZFJlYWRGcmFtZWJ1ZmZlcigwKTsKICAgICB9CiAKLSAgICBpZiAobVN0YXRlLnJl
bW92ZURyYXdGcmFtZWJ1ZmZlckJpbmRpbmcoZnJhbWVidWZmZXIpICYmIGZyYW1lYnVmZmVyICE9
IDApCisgICAgaWYgKG1HTFN0YXRlLnJlbW92ZURyYXdGcmFtZWJ1ZmZlckJpbmRpbmcoZnJhbWVi
dWZmZXIpICYmIGZyYW1lYnVmZmVyICE9IDApCiAgICAgewogICAgICAgICBiaW5kRHJhd0ZyYW1l
YnVmZmVyKDApOwogICAgIH0KQEAgLTE4MjgsNyArMjE2OCw3IEBACiAKIHZvaWQgQ29udGV4dDo6
ZGV0YWNoUmVuZGVyYnVmZmVyKEdMdWludCByZW5kZXJidWZmZXIpCiB7Ci0gICAgbVN0YXRlLmRl
dGFjaFJlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpOworICAgIG1HTFN0YXRlLmRldGFjaFJlbmRl
cmJ1ZmZlcihyZW5kZXJidWZmZXIpOwogfQogCiB2b2lkIENvbnRleHQ6OmRldGFjaFZlcnRleEFy
cmF5KEdMdWludCB2ZXJ0ZXhBcnJheSkKQEAgLTE4NDAsNyArMjE4MCw3IEBACiAgICAgLy8gW09w
ZW5HTCBFUyAzLjAuMl0gc2VjdGlvbiAyLjEwIHBhZ2UgNDM6CiAgICAgLy8gSWYgYSB2ZXJ0ZXgg
YXJyYXkgb2JqZWN0IHRoYXQgaXMgY3VycmVudGx5IGJvdW5kIGlzIGRlbGV0ZWQsIHRoZSBiaW5k
aW5nCiAgICAgLy8gZm9yIHRoYXQgb2JqZWN0IHJldmVydHMgdG8gemVybyBhbmQgdGhlIGRlZmF1
bHQgdmVydGV4IGFycmF5IGJlY29tZXMgY3VycmVudC4KLSAgICBpZiAobVN0YXRlLnJlbW92ZVZl
cnRleEFycmF5QmluZGluZyh2ZXJ0ZXhBcnJheSkpCisgICAgaWYgKG1HTFN0YXRlLnJlbW92ZVZl
cnRleEFycmF5QmluZGluZyh2ZXJ0ZXhBcnJheSkpCiAgICAgewogICAgICAgICBiaW5kVmVydGV4
QXJyYXkoMCk7CiAgICAgfQpAQCAtMTg0OCwxMTcgKzIxODgsNjkgQEAKIAogdm9pZCBDb250ZXh0
OjpkZXRhY2hUcmFuc2Zvcm1GZWVkYmFjayhHTHVpbnQgdHJhbnNmb3JtRmVlZGJhY2spCiB7Ci0g
ICAgbVN0YXRlLmRldGFjaFRyYW5zZm9ybUZlZWRiYWNrKHRyYW5zZm9ybUZlZWRiYWNrKTsKKyAg
ICAvLyBUcmFuc2Zvcm0gZmVlZGJhY2sgZGV0YWNobWVudCBpcyBoYW5kbGVkIGJ5IENvbnRleHQs
IGJlY2F1c2UgMCBpcyBhIHZhbGlkCisgICAgLy8gdHJhbnNmb3JtIGZlZWRiYWNrLCBhbmQgYSBw
b2ludGVyIHRvIGl0IG11c3QgYmUgcGFzc2VkIGZyb20gQ29udGV4dCB0byBTdGF0ZSBhdAorICAg
IC8vIGJpbmRpbmcgdGltZS4KKworICAgIC8vIFRoZSBPcGVuR0wgc3BlY2lmaWNhdGlvbiBkb2Vz
bid0IG1lbnRpb24gd2hhdCBzaG91bGQgaGFwcGVuIHdoZW4gdGhlIGN1cnJlbnRseSBib3VuZAor
ICAgIC8vIHRyYW5zZm9ybSBmZWVkYmFjayBvYmplY3QgaXMgZGVsZXRlZC4gU2luY2UgaXQgaXMg
YSBjb250YWluZXIgb2JqZWN0LCB3ZSB0cmVhdCBpdCBsaWtlCisgICAgLy8gVkFPcyBhbmQgRkJP
cyBhbmQgc2V0IHRoZSBjdXJyZW50IGJvdW5kIHRyYW5zZm9ybSBmZWVkYmFjayBiYWNrIHRvIDAu
CisgICAgaWYgKG1HTFN0YXRlLnJlbW92ZVRyYW5zZm9ybUZlZWRiYWNrQmluZGluZyh0cmFuc2Zv
cm1GZWVkYmFjaykpCisgICAgeworICAgICAgICBiaW5kVHJhbnNmb3JtRmVlZGJhY2soMCk7Cisg
ICAgfQogfQogCiB2b2lkIENvbnRleHQ6OmRldGFjaFNhbXBsZXIoR0x1aW50IHNhbXBsZXIpCiB7
Ci0gICAgbVN0YXRlLmRldGFjaFNhbXBsZXIoc2FtcGxlcik7CisgICAgbUdMU3RhdGUuZGV0YWNo
U2FtcGxlcihzYW1wbGVyKTsKIH0KIAogdm9pZCBDb250ZXh0OjpzZXRWZXJ0ZXhBdHRyaWJEaXZp
c29yKEdMdWludCBpbmRleCwgR0x1aW50IGRpdmlzb3IpCiB7Ci0gICAgbVN0YXRlLnNldFZlcnRl
eEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpOworICAgIG1HTFN0YXRlLnNldFZlcnRleEF0
dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpOwogfQogCiB2b2lkIENvbnRleHQ6OnNhbXBsZXJQ
YXJhbWV0ZXJpKEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQogewot
ICAgIG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrU2FtcGxlckFsbG9jYXRpb24oc2FtcGxlcik7Cisg
ICAgU2FtcGxlciAqc2FtcGxlck9iamVjdCA9CisgICAgICAgIG1SZXNvdXJjZU1hbmFnZXItPmNo
ZWNrU2FtcGxlckFsbG9jYXRpb24obUltcGxlbWVudGF0aW9uLmdldCgpLCBzYW1wbGVyKTsKKyAg
ICBTZXRTYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyT2JqZWN0LCBwbmFtZSwgcGFyYW0pOworfQog
Ci0gICAgU2FtcGxlciAqc2FtcGxlck9iamVjdCA9IGdldFNhbXBsZXIoc2FtcGxlcik7Ci0gICAg
QVNTRVJUKHNhbXBsZXJPYmplY3QpOwotCi0gICAgLy8gY2xhbmctZm9ybWF0IG9mZgotICAgIHN3
aXRjaCAocG5hbWUpCi0gICAgewotICAgICAgY2FzZSBHTF9URVhUVVJFX01JTl9GSUxURVI6ICAg
ICAgICAgc2FtcGxlck9iamVjdC0+c2V0TWluRmlsdGVyKHN0YXRpY19jYXN0PEdMZW51bT4ocGFy
YW0pKTsgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUjogICAgICAg
ICBzYW1wbGVyT2JqZWN0LT5zZXRNYWdGaWx0ZXIoc3RhdGljX2Nhc3Q8R0xlbnVtPihwYXJhbSkp
OyAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1M6ICAgICAgICAgICAgIHNh
bXBsZXJPYmplY3QtPnNldFdyYXBTKHN0YXRpY19jYXN0PEdMZW51bT4ocGFyYW0pKTsgICAgICAg
IGJyZWFrOwotICAgICAgY2FzZSBHTF9URVhUVVJFX1dSQVBfVDogICAgICAgICAgICAgc2FtcGxl
ck9iamVjdC0+c2V0V3JhcFQoc3RhdGljX2Nhc3Q8R0xlbnVtPihwYXJhbSkpOyAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9SOiAgICAgICAgICAgICBzYW1wbGVyT2Jq
ZWN0LT5zZXRXcmFwUihzdGF0aWNfY2FzdDxHTGVudW0+KHBhcmFtKSk7ICAgICAgICBicmVhazsK
LSAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IHNhbXBsZXJPYmplY3Qt
PnNldE1heEFuaXNvdHJvcHkoc3RkOjptaW4oc3RhdGljX2Nhc3Q8R0xmbG9hdD4ocGFyYW0pLCBn
ZXRFeHRlbnNpb25zKCkubWF4VGV4dHVyZUFuaXNvdHJvcHkpKTsgYnJlYWs7Ci0gICAgICBjYXNl
IEdMX1RFWFRVUkVfTUlOX0xPRDogICAgICAgICAgICBzYW1wbGVyT2JqZWN0LT5zZXRNaW5Mb2Qo
c3RhdGljX2Nhc3Q8R0xmbG9hdD4ocGFyYW0pKTsgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xf
VEVYVFVSRV9NQVhfTE9EOiAgICAgICAgICAgIHNhbXBsZXJPYmplY3QtPnNldE1heExvZChzdGF0
aWNfY2FzdDxHTGZsb2F0PihwYXJhbSkpOyAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9URVhU
VVJFX0NPTVBBUkVfTU9ERTogICAgICAgc2FtcGxlck9iamVjdC0+c2V0Q29tcGFyZU1vZGUoc3Rh
dGljX2Nhc3Q8R0xlbnVtPihwYXJhbSkpOyAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVf
Q09NUEFSRV9GVU5DOiAgICAgICBzYW1wbGVyT2JqZWN0LT5zZXRDb21wYXJlRnVuYyhzdGF0aWNf
Y2FzdDxHTGVudW0+KHBhcmFtKSk7ICBicmVhazsKLSAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7IGJyZWFrOwotICAgIH0KLSAgICAvLyBjbGFu
Zy1mb3JtYXQgb24KK3ZvaWQgQ29udGV4dDo6c2FtcGxlclBhcmFtZXRlcml2KEdMdWludCBzYW1w
bGVyLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbSkKK3sKKyAgICBTYW1wbGVyICpz
YW1wbGVyT2JqZWN0ID0KKyAgICAgICAgbVJlc291cmNlTWFuYWdlci0+Y2hlY2tTYW1wbGVyQWxs
b2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIHNhbXBsZXIpOworICAgIFNldFNhbXBsZXJQ
YXJhbWV0ZXJpdihzYW1wbGVyT2JqZWN0LCBwbmFtZSwgcGFyYW0pOwogfQogCiB2b2lkIENvbnRl
eHQ6OnNhbXBsZXJQYXJhbWV0ZXJmKEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMZmxv
YXQgcGFyYW0pCiB7Ci0gICAgbVJlc291cmNlTWFuYWdlci0+Y2hlY2tTYW1wbGVyQWxsb2NhdGlv
bihzYW1wbGVyKTsKKyAgICBTYW1wbGVyICpzYW1wbGVyT2JqZWN0ID0KKyAgICAgICAgbVJlc291
cmNlTWFuYWdlci0+Y2hlY2tTYW1wbGVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCks
IHNhbXBsZXIpOworICAgIFNldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXJPYmplY3QsIHBuYW1l
LCBwYXJhbSk7Cit9CiAKLSAgICBTYW1wbGVyICpzYW1wbGVyT2JqZWN0ID0gZ2V0U2FtcGxlcihz
YW1wbGVyKTsKLSAgICBBU1NFUlQoc2FtcGxlck9iamVjdCk7Ci0KLSAgICAvLyBjbGFuZy1mb3Jt
YXQgb2ZmCi0gICAgc3dpdGNoIChwbmFtZSkKLSAgICB7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVf
TUlOX0ZJTFRFUjogICAgICAgICBzYW1wbGVyT2JqZWN0LT5zZXRNaW5GaWx0ZXIodWlyb3VuZDxH
TGVudW0+KHBhcmFtKSk7ICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfTUFHX0ZJTFRF
UjogICAgICAgICBzYW1wbGVyT2JqZWN0LT5zZXRNYWdGaWx0ZXIodWlyb3VuZDxHTGVudW0+KHBh
cmFtKSk7ICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9TOiAgICAgICAgICAg
ICBzYW1wbGVyT2JqZWN0LT5zZXRXcmFwUyh1aXJvdW5kPEdMZW51bT4ocGFyYW0pKTsgICAgICAg
YnJlYWs7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9UOiAgICAgICAgICAgICBzYW1wbGVy
T2JqZWN0LT5zZXRXcmFwVCh1aXJvdW5kPEdMZW51bT4ocGFyYW0pKTsgICAgICAgYnJlYWs7Ci0g
ICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9SOiAgICAgICAgICAgICBzYW1wbGVyT2JqZWN0LT5z
ZXRXcmFwUih1aXJvdW5kPEdMZW51bT4ocGFyYW0pKTsgICAgICAgYnJlYWs7Ci0gICAgICBjYXNl
IEdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOiBzYW1wbGVyT2JqZWN0LT5zZXRNYXhBbmlz
b3Ryb3B5KHN0ZDo6bWluKHBhcmFtLCBnZXRFeHRlbnNpb25zKCkubWF4VGV4dHVyZUFuaXNvdHJv
cHkpKTsgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfTUlOX0xPRDogICAgICAgICAgICBz
YW1wbGVyT2JqZWN0LT5zZXRNaW5Mb2QocGFyYW0pOyAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfTUFYX0xPRDogICAgICAgICAgICBzYW1wbGVyT2Jq
ZWN0LT5zZXRNYXhMb2QocGFyYW0pOyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEdMX1RFWFRVUkVfQ09NUEFSRV9NT0RFOiAgICAgICBzYW1wbGVyT2JqZWN0LT5zZXRD
b21wYXJlTW9kZSh1aXJvdW5kPEdMZW51bT4ocGFyYW0pKTsgYnJlYWs7Ci0gICAgICBjYXNlIEdM
X1RFWFRVUkVfQ09NUEFSRV9GVU5DOiAgICAgICBzYW1wbGVyT2JqZWN0LT5zZXRDb21wYXJlRnVu
Yyh1aXJvdW5kPEdMZW51bT4ocGFyYW0pKTsgYnJlYWs7Ci0gICAgICBkZWZhdWx0OiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOyBicmVhazsKLSAgICB9Ci0gICAgLy8g
Y2xhbmctZm9ybWF0IG9uCit2b2lkIENvbnRleHQ6OnNhbXBsZXJQYXJhbWV0ZXJmdihHTHVpbnQg
c2FtcGxlciwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbSkKK3sKKyAgICBTYW1w
bGVyICpzYW1wbGVyT2JqZWN0ID0KKyAgICAgICAgbVJlc291cmNlTWFuYWdlci0+Y2hlY2tTYW1w
bGVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIHNhbXBsZXIpOworICAgIFNldFNh
bXBsZXJQYXJhbWV0ZXJmdihzYW1wbGVyT2JqZWN0LCBwbmFtZSwgcGFyYW0pOwogfQogCi1HTGlu
dCBDb250ZXh0OjpnZXRTYW1wbGVyUGFyYW1ldGVyaShHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBu
YW1lKQordm9pZCBDb250ZXh0OjpnZXRTYW1wbGVyUGFyYW1ldGVyaXYoR0x1aW50IHNhbXBsZXIs
IEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKIHsKLSAgICBtUmVzb3VyY2VNYW5hZ2VyLT5j
aGVja1NhbXBsZXJBbGxvY2F0aW9uKHNhbXBsZXIpOwotCi0gICAgU2FtcGxlciAqc2FtcGxlck9i
amVjdCA9IGdldFNhbXBsZXIoc2FtcGxlcik7Ci0gICAgQVNTRVJUKHNhbXBsZXJPYmplY3QpOwot
Ci0gICAgLy8gY2xhbmctZm9ybWF0IG9mZgotICAgIHN3aXRjaCAocG5hbWUpCi0gICAgewotICAg
ICAgY2FzZSBHTF9URVhUVVJFX01JTl9GSUxURVI6ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEdMaW50PihzYW1wbGVyT2JqZWN0LT5nZXRNaW5GaWx0ZXIoKSk7Ci0gICAgICBjYXNlIEdMX1RF
WFRVUkVfTUFHX0ZJTFRFUjogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0xpbnQ+KHNhbXBs
ZXJPYmplY3QtPmdldE1hZ0ZpbHRlcigpKTsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1M6
ICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTGludD4oc2FtcGxlck9iamVjdC0+Z2V0
V3JhcFMoKSk7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9UOiAgICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8R0xpbnQ+KHNhbXBsZXJPYmplY3QtPmdldFdyYXBUKCkpOwotICAgICAg
Y2FzZSBHTF9URVhUVVJFX1dSQVBfUjogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdM
aW50PihzYW1wbGVyT2JqZWN0LT5nZXRXcmFwUigpKTsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9N
QVhfQU5JU09UUk9QWV9FWFQ6IHJldHVybiBzdGF0aWNfY2FzdDxHTGludD4oc2FtcGxlck9iamVj
dC0+Z2V0TWF4QW5pc290cm9weSgpKTsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9NSU5fTE9EOiAg
ICAgICAgICAgIHJldHVybiBpcm91bmQ8R0xpbnQ+KHNhbXBsZXJPYmplY3QtPmdldE1pbkxvZCgp
KTsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfTE9EOiAgICAgICAgICAgIHJldHVybiBpcm91
bmQ8R0xpbnQ+KHNhbXBsZXJPYmplY3QtPmdldE1heExvZCgpKTsKLSAgICAgIGNhc2UgR0xfVEVY
VFVSRV9DT01QQVJFX01PREU6ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTGludD4oc2FtcGxl
ck9iamVjdC0+Z2V0Q29tcGFyZU1vZGUoKSk7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQ09NUEFS
RV9GVU5DOiAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0xpbnQ+KHNhbXBsZXJPYmplY3QtPmdl
dENvbXBhcmVGdW5jKCkpOwotICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVU5SRUFDSEFCTEUoKTsgcmV0dXJuIDA7Ci0gICAgfQotICAgIC8vIGNsYW5nLWZvcm1hdCBv
bgorICAgIGNvbnN0IFNhbXBsZXIgKnNhbXBsZXJPYmplY3QgPQorICAgICAgICBtUmVzb3VyY2VN
YW5hZ2VyLT5jaGVja1NhbXBsZXJBbGxvY2F0aW9uKG1JbXBsZW1lbnRhdGlvbi5nZXQoKSwgc2Ft
cGxlcik7CisgICAgUXVlcnlTYW1wbGVyUGFyYW1ldGVyaXYoc2FtcGxlck9iamVjdCwgcG5hbWUs
IHBhcmFtcyk7CiB9CiAKLUdMZmxvYXQgQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFtZXRlcmYoR0x1
aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSkKK3ZvaWQgQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcmZ2KEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcykKIHsK
LSAgICBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja1NhbXBsZXJBbGxvY2F0aW9uKHNhbXBsZXIpOwot
Ci0gICAgU2FtcGxlciAqc2FtcGxlck9iamVjdCA9IGdldFNhbXBsZXIoc2FtcGxlcik7Ci0gICAg
QVNTRVJUKHNhbXBsZXJPYmplY3QpOwotCi0gICAgLy8gY2xhbmctZm9ybWF0IG9mZgotICAgIHN3
aXRjaCAocG5hbWUpCi0gICAgewotICAgICAgY2FzZSBHTF9URVhUVVJFX01JTl9GSUxURVI6ICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMZmxvYXQ+KHNhbXBsZXJPYmplY3QtPmdldE1pbkZp
bHRlcigpKTsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQUdfRklMVEVSOiAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxHTGZsb2F0PihzYW1wbGVyT2JqZWN0LT5nZXRNYWdGaWx0ZXIoKSk7Ci0g
ICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9TOiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8R0xmbG9hdD4oc2FtcGxlck9iamVjdC0+Z2V0V3JhcFMoKSk7Ci0gICAgICBjYXNlIEdMX1RF
WFRVUkVfV1JBUF9UOiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0xmbG9hdD4oc2Ft
cGxlck9iamVjdC0+Z2V0V3JhcFQoKSk7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9SOiAg
ICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0xmbG9hdD4oc2FtcGxlck9iamVjdC0+Z2V0
V3JhcFIoKSk7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOiByZXR1
cm4gc2FtcGxlck9iamVjdC0+Z2V0TWF4QW5pc290cm9weSgpOwotICAgICAgY2FzZSBHTF9URVhU
VVJFX01JTl9MT0Q6ICAgICAgICAgICAgcmV0dXJuIHNhbXBsZXJPYmplY3QtPmdldE1pbkxvZCgp
OwotICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9MT0Q6ICAgICAgICAgICAgcmV0dXJuIHNhbXBs
ZXJPYmplY3QtPmdldE1heExvZCgpOwotICAgICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfTU9E
RTogICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMZmxvYXQ+KHNhbXBsZXJPYmplY3QtPmdldENv
bXBhcmVNb2RlKCkpOwotICAgICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQzogICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEdMZmxvYXQ+KHNhbXBsZXJPYmplY3QtPmdldENvbXBhcmVGdW5j
KCkpOwotICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsgcmV0dXJuIDA7Ci0gICAgfQotICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorICAgIGNvbnN0
IFNhbXBsZXIgKnNhbXBsZXJPYmplY3QgPQorICAgICAgICBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVj
a1NhbXBsZXJBbGxvY2F0aW9uKG1JbXBsZW1lbnRhdGlvbi5nZXQoKSwgc2FtcGxlcik7CisgICAg
UXVlcnlTYW1wbGVyUGFyYW1ldGVyZnYoc2FtcGxlck9iamVjdCwgcG5hbWUsIHBhcmFtcyk7CiB9
CiAKIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVBhcmFtZXRlcmkoR0x1aW50IHByb2dyYW0sIEdMZW51
bSBwbmFtZSwgR0xpbnQgdmFsdWUpCkBAIC0xOTc0LDEzICsyMjY2LDEzIEBACiB7CiAgICAgc3Rk
Ojpvc3RyaW5nc3RyZWFtIHJlbmRlcmVyU3RyaW5nOwogICAgIHJlbmRlcmVyU3RyaW5nIDw8ICJB
TkdMRSAoIjsKLSAgICByZW5kZXJlclN0cmluZyA8PCBtUmVuZGVyZXItPmdldFJlbmRlcmVyRGVz
Y3JpcHRpb24oKTsKKyAgICByZW5kZXJlclN0cmluZyA8PCBtSW1wbGVtZW50YXRpb24tPmdldFJl
bmRlcmVyRGVzY3JpcHRpb24oKTsKICAgICByZW5kZXJlclN0cmluZyA8PCAiKSI7CiAKICAgICBt
UmVuZGVyZXJTdHJpbmcgPSBNYWtlU3RhdGljU3RyaW5nKHJlbmRlcmVyU3RyaW5nLnN0cigpKTsK
IH0KIAotY29uc3Qgc3RkOjpzdHJpbmcgJkNvbnRleHQ6OmdldFJlbmRlcmVyU3RyaW5nKCkgY29u
c3QKK2NvbnN0IGNoYXIgKkNvbnRleHQ6OmdldFJlbmRlcmVyU3RyaW5nKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbVJlbmRlcmVyU3RyaW5nOwogfQpAQCAtMTk4NywxOSArMjI3OSwyMyBAQAogCiB2
b2lkIENvbnRleHQ6OmluaXRFeHRlbnNpb25TdHJpbmdzKCkKIHsKLSAgICBtRXh0ZW5zaW9uU3Ry
aW5ncyA9IG1FeHRlbnNpb25zLmdldFN0cmluZ3MoKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8gJmV4
dGVuc2lvblN0cmluZyA6IG1FeHRlbnNpb25zLmdldFN0cmluZ3MoKSkKKyAgICB7CisgICAgICAg
IG1FeHRlbnNpb25TdHJpbmdzLnB1c2hfYmFjayhNYWtlU3RhdGljU3RyaW5nKGV4dGVuc2lvblN0
cmluZykpOworICAgIH0KIAogICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBjb21iaW5lZFN0cmluZ1N0
cmVhbTsKLSAgICBzdGQ6OmNvcHkobUV4dGVuc2lvblN0cmluZ3MuYmVnaW4oKSwgbUV4dGVuc2lv
blN0cmluZ3MuZW5kKCksIHN0ZDo6b3N0cmVhbV9pdGVyYXRvcjxzdGQ6OnN0cmluZz4oY29tYmlu
ZWRTdHJpbmdTdHJlYW0sICIgIikpOwotICAgIG1FeHRlbnNpb25TdHJpbmcgPSBjb21iaW5lZFN0
cmluZ1N0cmVhbS5zdHIoKTsKKyAgICBzdGQ6OmNvcHkobUV4dGVuc2lvblN0cmluZ3MuYmVnaW4o
KSwgbUV4dGVuc2lvblN0cmluZ3MuZW5kKCksCisgICAgICAgICAgICAgIHN0ZDo6b3N0cmVhbV9p
dGVyYXRvcjxjb25zdCBjaGFyICo+KGNvbWJpbmVkU3RyaW5nU3RyZWFtLCAiICIpKTsKKyAgICBt
RXh0ZW5zaW9uU3RyaW5nID0gTWFrZVN0YXRpY1N0cmluZyhjb21iaW5lZFN0cmluZ1N0cmVhbS5z
dHIoKSk7CiB9CiAKLWNvbnN0IHN0ZDo6c3RyaW5nICZDb250ZXh0OjpnZXRFeHRlbnNpb25TdHJp
bmcoKSBjb25zdAorY29uc3QgY2hhciAqQ29udGV4dDo6Z2V0RXh0ZW5zaW9uU3RyaW5nKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbUV4dGVuc2lvblN0cmluZzsKIH0KIAotY29uc3Qgc3RkOjpzdHJp
bmcgJkNvbnRleHQ6OmdldEV4dGVuc2lvblN0cmluZyhzaXplX3QgaWR4KSBjb25zdAorY29uc3Qg
Y2hhciAqQ29udGV4dDo6Z2V0RXh0ZW5zaW9uU3RyaW5nKHNpemVfdCBpZHgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1FeHRlbnNpb25TdHJpbmdzW2lkeF07CiB9CkBAIC0yMDExLDExICsyMzA3LDEx
IEBACiAKIHZvaWQgQ29udGV4dDo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHTGVudW0gcHJpbWl0
aXZlTW9kZSkKIHsKLSAgICBUcmFuc2Zvcm1GZWVkYmFjayAqdHJhbnNmb3JtRmVlZGJhY2sgPSBn
ZXRTdGF0ZSgpLmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIFRyYW5zZm9ybUZl
ZWRiYWNrICp0cmFuc2Zvcm1GZWVkYmFjayA9IG1HTFN0YXRlLmdldEN1cnJlbnRUcmFuc2Zvcm1G
ZWVkYmFjaygpOwogICAgIEFTU0VSVCh0cmFuc2Zvcm1GZWVkYmFjayAhPSBudWxscHRyKTsKICAg
ICBBU1NFUlQoIXRyYW5zZm9ybUZlZWRiYWNrLT5pc1BhdXNlZCgpKTsKIAotICAgIHRyYW5zZm9y
bUZlZWRiYWNrLT5iZWdpbihwcmltaXRpdmVNb2RlLCBnZXRTdGF0ZSgpLmdldFByb2dyYW0oKSk7
CisgICAgdHJhbnNmb3JtRmVlZGJhY2stPmJlZ2luKHByaW1pdGl2ZU1vZGUsIG1HTFN0YXRlLmdl
dFByb2dyYW0oKSk7CiB9CiAKIGJvb2wgQ29udGV4dDo6aGFzQWN0aXZlVHJhbnNmb3JtRmVlZGJh
Y2soR0x1aW50IHByb2dyYW0pIGNvbnN0CkBAIC0yMDMwLDI2ICsyMzI2LDM2IEBACiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi12b2lkIENvbnRleHQ6OmluaXRDYXBzKEdMdWludCBjbGllbnRWZXJz
aW9uKQordm9pZCBDb250ZXh0Ojppbml0Q2Fwcyhib29sIHdlYkdMQ29udGV4dCkKIHsKLSAgICBt
Q2FwcyA9IG1SZW5kZXJlci0+Z2V0UmVuZGVyZXJDYXBzKCk7CisgICAgbUNhcHMgPSBtSW1wbGVt
ZW50YXRpb24tPmdldE5hdGl2ZUNhcHMoKTsKIAotICAgIG1FeHRlbnNpb25zID0gbVJlbmRlcmVy
LT5nZXRSZW5kZXJlckV4dGVuc2lvbnMoKTsKKyAgICBtRXh0ZW5zaW9ucyA9IG1JbXBsZW1lbnRh
dGlvbi0+Z2V0TmF0aXZlRXh0ZW5zaW9ucygpOwogCi0gICAgbUxpbWl0YXRpb25zID0gbVJlbmRl
cmVyLT5nZXRSZW5kZXJlckxpbWl0YXRpb25zKCk7CisgICAgbUxpbWl0YXRpb25zID0gbUltcGxl
bWVudGF0aW9uLT5nZXROYXRpdmVMaW1pdGF0aW9ucygpOwogCi0gICAgaWYgKGNsaWVudFZlcnNp
b24gPCAzKQorICAgIGlmIChtQ2xpZW50TWFqb3JWZXJzaW9uIDwgMykKICAgICB7CiAgICAgICAg
IC8vIERpc2FibGUgRVMzKyBleHRlbnNpb25zCiAgICAgICAgIG1FeHRlbnNpb25zLmNvbG9yQnVm
ZmVyRmxvYXQgPSBmYWxzZTsKKyAgICAgICAgbUV4dGVuc2lvbnMuZWdsSW1hZ2VFeHRlcm5hbEVz
c2wzID0gZmFsc2U7CisgICAgICAgIG1FeHRlbnNpb25zLnRleHR1cmVOb3JtMTYgICAgICAgICA9
IGZhbHNlOwogICAgIH0KIAotICAgIGlmIChjbGllbnRWZXJzaW9uID4gMikKKyAgICBpZiAobUNs
aWVudE1ham9yVmVyc2lvbiA+IDIpCiAgICAgewogICAgICAgICAvLyBGSVhNRShnZW9mZmxhbmcp
OiBEb24ndCBzdXBwb3J0IEVYVF9zUkdCIGluIG5vbi1FUzIgY29udGV4dHMKICAgICAgICAgLy9t
RXh0ZW5zaW9ucy5zUkdCID0gZmFsc2U7CiAgICAgfQogCisgICAgLy8gU29tZSBleHRlbnNpb25z
IGFyZSBhbHdheXMgYXZhaWxhYmxlIGJlY2F1c2UgdGhleSBhcmUgaW1wbGVtZW50ZWQgaW4gdGhl
IEdMIGxheWVyLgorICAgIG1FeHRlbnNpb25zLmJpbmRVbmlmb3JtTG9jYXRpb24gPSB0cnVlOwor
ICAgIG1FeHRlbnNpb25zLnZlcnRleEFycmF5T2JqZWN0ICAgPSB0cnVlOworICAgIG1FeHRlbnNp
b25zLmJpbmRHZW5lcmF0ZXNSZXNvdXJjZSA9IHRydWU7CisKKyAgICAvLyBFbmFibGUgdGhlIG5v
IGVycm9yIGV4dGVuc2lvbiBpZiB0aGUgY29udGV4dCB3YXMgY3JlYXRlZCB3aXRoIHRoZSBmbGFn
LgorICAgIG1FeHRlbnNpb25zLm5vRXJyb3IgPSBtU2tpcFZhbGlkYXRpb247CisKICAgICAvLyBF
eHBsaWNpdGx5IGVuYWJsZSBHTF9LSFJfZGVidWcKICAgICBtRXh0ZW5zaW9ucy5kZWJ1ZyAgICAg
ICAgICAgICAgICAgICA9IHRydWU7CiAgICAgbUV4dGVuc2lvbnMubWF4RGVidWdNZXNzYWdlTGVu
Z3RoICAgPSAxMDI0OwpAQCAtMjA1Nyw2ICsyMzYzLDkgQEAKICAgICBtRXh0ZW5zaW9ucy5tYXhE
ZWJ1Z0dyb3VwU3RhY2tEZXB0aCA9IDEwMjQ7CiAgICAgbUV4dGVuc2lvbnMubWF4TGFiZWxMZW5n
dGggICAgICAgICAgPSAxMDI0OwogCisgICAgLy8gRXhwbGljaXRseSBlbmFibGUgR0xfQU5HTEVf
cm9idXN0X2NsaWVudF9tZW1vcnkKKyAgICBtRXh0ZW5zaW9ucy5yb2J1c3RDbGllbnRNZW1vcnkg
PSB0cnVlOworCiAgICAgLy8gQXBwbHkgaW1wbGVtZW50YXRpb24gbGltaXRzCiAgICAgbUNhcHMu
bWF4VmVydGV4QXR0cmlidXRlcyA9IHN0ZDo6bWluPEdMdWludD4obUNhcHMubWF4VmVydGV4QXR0
cmlidXRlcywgTUFYX1ZFUlRFWF9BVFRSSUJTKTsKICAgICBtQ2Fwcy5tYXhWZXJ0ZXhVbmlmb3Jt
QmxvY2tzID0gc3RkOjptaW48R0x1aW50PihtQ2Fwcy5tYXhWZXJ0ZXhVbmlmb3JtQmxvY2tzLCBJ
TVBMRU1FTlRBVElPTl9NQVhfVkVSVEVYX1NIQURFUl9VTklGT1JNX0JVRkZFUlMpOwpAQCAtMjA2
NCw5ICsyMzczLDI3IEBACiAKICAgICBtQ2Fwcy5tYXhGcmFnbWVudElucHV0Q29tcG9uZW50cyA9
IHN0ZDo6bWluPEdMdWludD4obUNhcHMubWF4RnJhZ21lbnRJbnB1dENvbXBvbmVudHMsIElNUExF
TUVOVEFUSU9OX01BWF9WQVJZSU5HX1ZFQ1RPUlMgKiA0KTsKIAorICAgIC8vIFdlYkdMIGNvbXBh
dGliaWxpdHkKKyAgICBtRXh0ZW5zaW9ucy53ZWJnbENvbXBhdGliaWxpdHkgPSB3ZWJHTENvbnRl
eHQ7CisgICAgZm9yIChjb25zdCBhdXRvICZleHRlbnNpb25JbmZvIDogR2V0RXh0ZW5zaW9uSW5m
b01hcCgpKQorICAgIHsKKyAgICAgICAgLy8gSWYgdGhpcyBjb250ZXh0IGlzIGZvciBXZWJHTCwg
ZGlzYWJsZSBhbGwgZW5hYmxlYWJsZSBleHRlbnNpb25zCisgICAgICAgIGlmICh3ZWJHTENvbnRl
eHQgJiYgZXh0ZW5zaW9uSW5mby5zZWNvbmQuRW5hYmxlYWJsZSkKKyAgICAgICAgeworICAgICAg
ICAgICAgbUV4dGVuc2lvbnMuKihleHRlbnNpb25JbmZvLnNlY29uZC5FeHRlbnNpb25zTWVtYmVy
KSA9IGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gR2VuZXJhdGUgdGV4dHVyZSBj
YXBzCisgICAgdXBkYXRlQ2FwcygpOworfQorCit2b2lkIENvbnRleHQ6OnVwZGF0ZUNhcHMoKQor
ewogICAgIG1DYXBzLmNvbXByZXNzZWRUZXh0dXJlRm9ybWF0cy5jbGVhcigpOworICAgIG1UZXh0
dXJlQ2Fwcy5jbGVhcigpOwogCi0gICAgY29uc3QgVGV4dHVyZUNhcHNNYXAgJnJlbmRlcmVyRm9y
bWF0cyA9IG1SZW5kZXJlci0+Z2V0UmVuZGVyZXJUZXh0dXJlQ2FwcygpOworICAgIGNvbnN0IFRl
eHR1cmVDYXBzTWFwICZyZW5kZXJlckZvcm1hdHMgPSBtSW1wbGVtZW50YXRpb24tPmdldE5hdGl2
ZVRleHR1cmVDYXBzKCk7CiAgICAgZm9yIChUZXh0dXJlQ2Fwc01hcDo6Y29uc3RfaXRlcmF0b3Ig
aSA9IHJlbmRlcmVyRm9ybWF0cy5iZWdpbigpOyBpICE9IHJlbmRlcmVyRm9ybWF0cy5lbmQoKTsg
aSsrKQogICAgIHsKICAgICAgICAgR0xlbnVtIGZvcm1hdCA9IGktPmZpcnN0OwpAQCAtMjA3OCwx
MSArMjQwNSwxMSBAQAogICAgICAgICAvLyBDYXBzIGFyZSBBTkQnZCB3aXRoIHRoZSByZW5kZXJl
ciBjYXBzIGJlY2F1c2Ugc29tZSBjb3JlIGZvcm1hdHMgYXJlIHN0aWxsIHVuc3VwcG9ydGVkIGlu
CiAgICAgICAgIC8vIEVTMy4KICAgICAgICAgZm9ybWF0Q2Fwcy50ZXh0dXJhYmxlID0KLSAgICAg
ICAgICAgIGZvcm1hdENhcHMudGV4dHVyYWJsZSAmJiBmb3JtYXRJbmZvLnRleHR1cmVTdXBwb3J0
KGNsaWVudFZlcnNpb24sIG1FeHRlbnNpb25zKTsKKyAgICAgICAgICAgIGZvcm1hdENhcHMudGV4
dHVyYWJsZSAmJiBmb3JtYXRJbmZvLnRleHR1cmVTdXBwb3J0KG1DbGllbnRNYWpvclZlcnNpb24s
IG1FeHRlbnNpb25zKTsKICAgICAgICAgZm9ybWF0Q2Fwcy5yZW5kZXJhYmxlID0KLSAgICAgICAg
ICAgIGZvcm1hdENhcHMucmVuZGVyYWJsZSAmJiBmb3JtYXRJbmZvLnJlbmRlclN1cHBvcnQoY2xp
ZW50VmVyc2lvbiwgbUV4dGVuc2lvbnMpOworICAgICAgICAgICAgZm9ybWF0Q2Fwcy5yZW5kZXJh
YmxlICYmIGZvcm1hdEluZm8ucmVuZGVyU3VwcG9ydChtQ2xpZW50TWFqb3JWZXJzaW9uLCBtRXh0
ZW5zaW9ucyk7CiAgICAgICAgIGZvcm1hdENhcHMuZmlsdGVyYWJsZSA9Ci0gICAgICAgICAgICBm
b3JtYXRDYXBzLmZpbHRlcmFibGUgJiYgZm9ybWF0SW5mby5maWx0ZXJTdXBwb3J0KGNsaWVudFZl
cnNpb24sIG1FeHRlbnNpb25zKTsKKyAgICAgICAgICAgIGZvcm1hdENhcHMuZmlsdGVyYWJsZSAm
JiBmb3JtYXRJbmZvLmZpbHRlclN1cHBvcnQobUNsaWVudE1ham9yVmVyc2lvbiwgbUV4dGVuc2lv
bnMpOwogCiAgICAgICAgIC8vIE9wZW5HTCBFUyBkb2VzIG5vdCBzdXBwb3J0IG11bHRpc2FtcGxp
bmcgd2l0aCBpbnRlZ2VyIGZvcm1hdHMKICAgICAgICAgaWYgKCFmb3JtYXRJbmZvLnJlbmRlclN1
cHBvcnQgfHwgZm9ybWF0SW5mby5jb21wb25lbnRUeXBlID09IEdMX0lOVCB8fCBmb3JtYXRJbmZv
LmNvbXBvbmVudFR5cGUgPT0gR0xfVU5TSUdORURfSU5UKQpAQCAtMjA5OSwyMiArMjQyNiwyOSBA
QAogICAgIH0KIH0KIAordm9pZCBDb250ZXh0Ojppbml0V29ya2Fyb3VuZHMoKQoreworICAgIC8v
IExvc2UgdGhlIGNvbnRleHQgdXBvbiBvdXQgb2YgbWVtb3J5IGVycm9yIGlmIHRoZSBhcHBsaWNh
dGlvbiBpcworICAgIC8vIGV4cGVjdGluZyB0byB3YXRjaCBmb3IgdGhvc2UgZXZlbnRzLgorICAg
IG1Xb3JrYXJvdW5kcy5sb3NlQ29udGV4dE9uT3V0T2ZNZW1vcnkgPSAobVJlc2V0U3RyYXRlZ3kg
PT0gR0xfTE9TRV9DT05URVhUX09OX1JFU0VUX0VYVCk7Cit9CisKIHZvaWQgQ29udGV4dDo6c3lu
Y1JlbmRlcmVyU3RhdGUoKQogewotICAgIGNvbnN0IFN0YXRlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0
cyA9IG1TdGF0ZS5nZXREaXJ0eUJpdHMoKTsKLSAgICBtUmVuZGVyZXItPnN5bmNTdGF0ZShtU3Rh
dGUsIGRpcnR5Qml0cyk7Ci0gICAgbVN0YXRlLmNsZWFyRGlydHlCaXRzKCk7Ci0gICAgbVN0YXRl
LnN5bmNEaXJ0eU9iamVjdHMoKTsKKyAgICBjb25zdCBTdGF0ZTo6RGlydHlCaXRzICZkaXJ0eUJp
dHMgPSBtR0xTdGF0ZS5nZXREaXJ0eUJpdHMoKTsKKyAgICBtSW1wbGVtZW50YXRpb24tPnN5bmNT
dGF0ZShtR0xTdGF0ZSwgZGlydHlCaXRzKTsKKyAgICBtR0xTdGF0ZS5jbGVhckRpcnR5Qml0cygp
OworICAgIG1HTFN0YXRlLnN5bmNEaXJ0eU9iamVjdHMoKTsKIH0KIAogdm9pZCBDb250ZXh0Ojpz
eW5jUmVuZGVyZXJTdGF0ZShjb25zdCBTdGF0ZTo6RGlydHlCaXRzICZiaXRNYXNrLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdGF0ZTo6RGlydHlPYmplY3RzICZvYmpl
Y3RNYXNrKQogewotICAgIGNvbnN0IFN0YXRlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cyA9IChtU3Rh
dGUuZ2V0RGlydHlCaXRzKCkgJiBiaXRNYXNrKTsKLSAgICBtUmVuZGVyZXItPnN5bmNTdGF0ZSht
U3RhdGUsIGRpcnR5Qml0cyk7Ci0gICAgbVN0YXRlLmNsZWFyRGlydHlCaXRzKGRpcnR5Qml0cyk7
CisgICAgY29uc3QgU3RhdGU6OkRpcnR5Qml0cyAmZGlydHlCaXRzID0gKG1HTFN0YXRlLmdldERp
cnR5Qml0cygpICYgYml0TWFzayk7CisgICAgbUltcGxlbWVudGF0aW9uLT5zeW5jU3RhdGUobUdM
U3RhdGUsIGRpcnR5Qml0cyk7CisgICAgbUdMU3RhdGUuY2xlYXJEaXJ0eUJpdHMoZGlydHlCaXRz
KTsKIAotICAgIG1TdGF0ZS5zeW5jRGlydHlPYmplY3RzKG9iamVjdE1hc2spOworICAgIG1HTFN0
YXRlLnN5bmNEaXJ0eU9iamVjdHMob2JqZWN0TWFzayk7CiB9CiAKIHZvaWQgQ29udGV4dDo6Ymxp
dEZyYW1lYnVmZmVyKEdMaW50IHNyY1gwLApAQCAtMjEyOCwxMCArMjQ2Miw3IEBACiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGJpdGZpZWxkIG1hc2ssCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZmlsdGVyKQogewotICAgIEZyYW1lYnVmZmVyICpyZWFkRnJh
bWVidWZmZXIgPSBtU3RhdGUuZ2V0UmVhZEZyYW1lYnVmZmVyKCk7Ci0gICAgQVNTRVJUKHJlYWRG
cmFtZWJ1ZmZlcik7Ci0KLSAgICBGcmFtZWJ1ZmZlciAqZHJhd0ZyYW1lYnVmZmVyID0gbVN0YXRl
LmdldERyYXdGcmFtZWJ1ZmZlcigpOworICAgIEZyYW1lYnVmZmVyICpkcmF3RnJhbWVidWZmZXIg
PSBtR0xTdGF0ZS5nZXREcmF3RnJhbWVidWZmZXIoKTsKICAgICBBU1NFUlQoZHJhd0ZyYW1lYnVm
ZmVyKTsKIAogICAgIFJlY3RhbmdsZSBzcmNBcmVhKHNyY1gwLCBzcmNZMCwgc3JjWDEgLSBzcmNY
MCwgc3JjWTEgLSBzcmNZMCk7CkBAIC0yMTM5LDYxICsyNDcwLDM5IEBACiAKICAgICBzeW5jU3Rh
dGVGb3JCbGl0KCk7CiAKLSAgICBFcnJvciBlcnJvciA9IGRyYXdGcmFtZWJ1ZmZlci0+YmxpdCht
U3RhdGUsIHNyY0FyZWEsIGRzdEFyZWEsIG1hc2ssIGZpbHRlciwgcmVhZEZyYW1lYnVmZmVyKTsK
LSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmVjb3JkRXJyb3IoZXJy
b3IpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGhhbmRsZUVycm9yKGRyYXdGcmFtZWJ1
ZmZlci0+YmxpdChtSW1wbGVtZW50YXRpb24uZ2V0KCksIHNyY0FyZWEsIGRzdEFyZWEsIG1hc2ss
IGZpbHRlcikpOwogfQogCiB2b2lkIENvbnRleHQ6OmNsZWFyKEdMYml0ZmllbGQgbWFzaykKIHsK
ICAgICBzeW5jU3RhdGVGb3JDbGVhcigpOwotCi0gICAgRXJyb3IgZXJyb3IgPSBtU3RhdGUuZ2V0
RHJhd0ZyYW1lYnVmZmVyKCktPmNsZWFyKG1EYXRhLCBtYXNrKTsKLSAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQotICAgIHsKLSAgICAgICAgcmVjb3JkRXJyb3IoZXJyb3IpOwotICAgIH0KKyAgICBo
YW5kbGVFcnJvcihtR0xTdGF0ZS5nZXREcmF3RnJhbWVidWZmZXIoKS0+Y2xlYXIobUltcGxlbWVu
dGF0aW9uLmdldCgpLCBtYXNrKSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6Y2xlYXJCdWZmZXJmdihH
TGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHTGZsb2F0ICp2YWx1ZXMpCiB7
CiAgICAgc3luY1N0YXRlRm9yQ2xlYXIoKTsKLQotICAgIEVycm9yIGVycm9yID0gbVN0YXRlLmdl
dERyYXdGcmFtZWJ1ZmZlcigpLT5jbGVhckJ1ZmZlcmZ2KG1EYXRhLCBidWZmZXIsIGRyYXdidWZm
ZXIsIHZhbHVlcyk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJl
Y29yZEVycm9yKGVycm9yKTsKLSAgICB9CisgICAgaGFuZGxlRXJyb3IobUdMU3RhdGUuZ2V0RHJh
d0ZyYW1lYnVmZmVyKCktPmNsZWFyQnVmZmVyZnYobUltcGxlbWVudGF0aW9uLmdldCgpLCBidWZm
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZHJhd2J1ZmZlciwgdmFsdWVzKSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6Y2xlYXJC
dWZmZXJ1aXYoR0xlbnVtIGJ1ZmZlciwgR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0x1aW50ICp2
YWx1ZXMpCiB7CiAgICAgc3luY1N0YXRlRm9yQ2xlYXIoKTsKLQotICAgIEVycm9yIGVycm9yID0g
bVN0YXRlLmdldERyYXdGcmFtZWJ1ZmZlcigpLT5jbGVhckJ1ZmZlcnVpdihtRGF0YSwgYnVmZmVy
LCBkcmF3YnVmZmVyLCB2YWx1ZXMpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewot
ICAgICAgICByZWNvcmRFcnJvcihlcnJvcik7Ci0gICAgfQorICAgIGhhbmRsZUVycm9yKG1HTFN0
YXRlLmdldERyYXdGcmFtZWJ1ZmZlcigpLT5jbGVhckJ1ZmZlcnVpdihtSW1wbGVtZW50YXRpb24u
Z2V0KCksIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZHJhd2J1ZmZlciwgdmFsdWVzKSk7CiB9CiAKIHZvaWQgQ29u
dGV4dDo6Y2xlYXJCdWZmZXJpdihHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBjb25z
dCBHTGludCAqdmFsdWVzKQogewogICAgIHN5bmNTdGF0ZUZvckNsZWFyKCk7Ci0KLSAgICBFcnJv
ciBlcnJvciA9IG1TdGF0ZS5nZXREcmF3RnJhbWVidWZmZXIoKS0+Y2xlYXJCdWZmZXJpdihtRGF0
YSwgYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
Ci0gICAgewotICAgICAgICByZWNvcmRFcnJvcihlcnJvcik7Ci0gICAgfQorICAgIGhhbmRsZUVy
cm9yKG1HTFN0YXRlLmdldERyYXdGcmFtZWJ1ZmZlcigpLT5jbGVhckJ1ZmZlcml2KG1JbXBsZW1l
bnRhdGlvbi5nZXQoKSwgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdidWZmZXIsIHZhbHVlcykpOwogfQogCiB2
b2lkIENvbnRleHQ6OmNsZWFyQnVmZmVyZmkoR0xlbnVtIGJ1ZmZlciwgR0xpbnQgZHJhd2J1ZmZl
ciwgR0xmbG9hdCBkZXB0aCwgR0xpbnQgc3RlbmNpbCkKIHsKLSAgICBGcmFtZWJ1ZmZlciAqZnJh
bWVidWZmZXJPYmplY3QgPSBtU3RhdGUuZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7CisgICAgRnJhbWVi
dWZmZXIgKmZyYW1lYnVmZmVyT2JqZWN0ID0gbUdMU3RhdGUuZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7
CiAgICAgQVNTRVJUKGZyYW1lYnVmZmVyT2JqZWN0KTsKIAogICAgIC8vIElmIGEgYnVmZmVyIGlz
IG5vdCBwcmVzZW50LCB0aGUgY2xlYXIgaGFzIG5vIGVmZmVjdApAQCAtMjIwNCwxMiArMjUxMyw4
IEBACiAgICAgfQogCiAgICAgc3luY1N0YXRlRm9yQ2xlYXIoKTsKLQotICAgIEVycm9yIGVycm9y
ID0gZnJhbWVidWZmZXJPYmplY3QtPmNsZWFyQnVmZmVyZmkobURhdGEsIGJ1ZmZlciwgZHJhd2J1
ZmZlciwgZGVwdGgsIHN0ZW5jaWwpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewot
ICAgICAgICByZWNvcmRFcnJvcihlcnJvcik7Ci0gICAgfQorICAgIGhhbmRsZUVycm9yKGZyYW1l
YnVmZmVyT2JqZWN0LT5jbGVhckJ1ZmZlcmZpKG1JbXBsZW1lbnRhdGlvbi5nZXQoKSwgYnVmZmVy
LCBkcmF3YnVmZmVyLCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGVuY2lsKSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6cmVhZFBpeGVscyhH
TGludCB4LApAQCAtMjIyMCwxNyArMjUyNSwxOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqcGl4ZWxzKQog
eworICAgIGlmICh3aWR0aCA9PSAwIHx8IGhlaWdodCA9PSAwKQorICAgIHsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKwogICAgIHN5bmNTdGF0ZUZvclJlYWRQaXhlbHMoKTsKIAotICAgIEZyYW1l
YnVmZmVyICpmcmFtZWJ1ZmZlck9iamVjdCA9IG1TdGF0ZS5nZXRSZWFkRnJhbWVidWZmZXIoKTsK
KyAgICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXJPYmplY3QgPSBtR0xTdGF0ZS5nZXRSZWFkRnJh
bWVidWZmZXIoKTsKICAgICBBU1NFUlQoZnJhbWVidWZmZXJPYmplY3QpOwogCiAgICAgUmVjdGFu
Z2xlIGFyZWEoeCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0gICAgRXJyb3IgZXJyb3IgPSBmcmFtZWJ1
ZmZlck9iamVjdC0+cmVhZFBpeGVscyhtU3RhdGUsIGFyZWEsIGZvcm1hdCwgdHlwZSwgcGl4ZWxz
KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmVjb3JkRXJyb3Io
ZXJyb3IpOwotICAgIH0KKyAgICBoYW5kbGVFcnJvcihmcmFtZWJ1ZmZlck9iamVjdC0+cmVhZFBp
eGVscyhtSW1wbGVtZW50YXRpb24uZ2V0KCksIGFyZWEsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKSk7
CiB9CiAKIHZvaWQgQ29udGV4dDo6Y29weVRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwKQEAgLTIy
NDMsMTggKzI1NDksMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYm9y
ZGVyKQogewogICAgIC8vIE9ubHkgc3luYyB0aGUgcmVhZCBGQk8KLSAgICBtU3RhdGUuc3luY0Rp
cnR5T2JqZWN0KEdMX1JFQURfRlJBTUVCVUZGRVIpOworICAgIG1HTFN0YXRlLnN5bmNEaXJ0eU9i
amVjdChHTF9SRUFEX0ZSQU1FQlVGRkVSKTsKIAogICAgIFJlY3RhbmdsZSBzb3VyY2VBcmVhKHgs
IHksIHdpZHRoLCBoZWlnaHQpOwogCi0gICAgY29uc3QgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVy
ID0gbVN0YXRlLmdldFJlYWRGcmFtZWJ1ZmZlcigpOworICAgIGNvbnN0IEZyYW1lYnVmZmVyICpm
cmFtZWJ1ZmZlciA9IG1HTFN0YXRlLmdldFJlYWRGcmFtZWJ1ZmZlcigpOwogICAgIFRleHR1cmUg
KnRleHR1cmUgPQogICAgICAgICBnZXRUYXJnZXRUZXh0dXJlKElzQ3ViZU1hcFRleHR1cmVUYXJn
ZXQodGFyZ2V0KSA/IEdMX1RFWFRVUkVfQ1VCRV9NQVAgOiB0YXJnZXQpOwotICAgIEVycm9yIGVy
cm9yID0gdGV4dHVyZS0+Y29weUltYWdlKHRhcmdldCwgbGV2ZWwsIHNvdXJjZUFyZWEsIGludGVy
bmFsZm9ybWF0LCBmcmFtZWJ1ZmZlcik7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7
Ci0gICAgICAgIHJlY29yZEVycm9yKGVycm9yKTsKLSAgICB9CisgICAgaGFuZGxlRXJyb3IodGV4
dHVyZS0+Y29weUltYWdlKHRhcmdldCwgbGV2ZWwsIHNvdXJjZUFyZWEsIGludGVybmFsZm9ybWF0
LCBmcmFtZWJ1ZmZlcikpOwogfQogCiB2b2lkIENvbnRleHQ6OmNvcHlUZXhTdWJJbWFnZTJEKEdM
ZW51bSB0YXJnZXQsCkBAIC0yMjY2LDIwICsyNTY4LDIxIEBACiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgaGVpZ2h0KQogeworICAgIGlmICh3aWR0aCA9PSAwIHx8IGhlaWdodCA9PSAw
KQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIC8vIE9ubHkgc3luYyB0aGUg
cmVhZCBGQk8KLSAgICBtU3RhdGUuc3luY0RpcnR5T2JqZWN0KEdMX1JFQURfRlJBTUVCVUZGRVIp
OworICAgIG1HTFN0YXRlLnN5bmNEaXJ0eU9iamVjdChHTF9SRUFEX0ZSQU1FQlVGRkVSKTsKIAog
ICAgIE9mZnNldCBkZXN0T2Zmc2V0KHhvZmZzZXQsIHlvZmZzZXQsIDApOwogICAgIFJlY3Rhbmds
ZSBzb3VyY2VBcmVhKHgsIHksIHdpZHRoLCBoZWlnaHQpOwogCi0gICAgY29uc3QgRnJhbWVidWZm
ZXIgKmZyYW1lYnVmZmVyID0gbVN0YXRlLmdldFJlYWRGcmFtZWJ1ZmZlcigpOworICAgIGNvbnN0
IEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IG1HTFN0YXRlLmdldFJlYWRGcmFtZWJ1ZmZlcigp
OwogICAgIFRleHR1cmUgKnRleHR1cmUgPQogICAgICAgICBnZXRUYXJnZXRUZXh0dXJlKElzQ3Vi
ZU1hcFRleHR1cmVUYXJnZXQodGFyZ2V0KSA/IEdMX1RFWFRVUkVfQ1VCRV9NQVAgOiB0YXJnZXQp
OwotICAgIEVycm9yIGVycm9yID0gdGV4dHVyZS0+Y29weVN1YkltYWdlKHRhcmdldCwgbGV2ZWws
IGRlc3RPZmZzZXQsIHNvdXJjZUFyZWEsIGZyYW1lYnVmZmVyKTsKLSAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQotICAgIHsKLSAgICAgICAgcmVjb3JkRXJyb3IoZXJyb3IpOwotICAgIH0KKyAgICBo
YW5kbGVFcnJvcih0ZXh0dXJlLT5jb3B5U3ViSW1hZ2UodGFyZ2V0LCBsZXZlbCwgZGVzdE9mZnNl
dCwgc291cmNlQXJlYSwgZnJhbWVidWZmZXIpKTsKIH0KIAogdm9pZCBDb250ZXh0Ojpjb3B5VGV4
U3ViSW1hZ2UzRChHTGVudW0gdGFyZ2V0LApAQCAtMjI5MiwxOSArMjU5NSwyMCBAQAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCkKIHsKKyAgICBpZiAod2lkdGggPT0gMCB8
fCBoZWlnaHQgPT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyBP
bmx5IHN5bmMgdGhlIHJlYWQgRkJPCi0gICAgbVN0YXRlLnN5bmNEaXJ0eU9iamVjdChHTF9SRUFE
X0ZSQU1FQlVGRkVSKTsKKyAgICBtR0xTdGF0ZS5zeW5jRGlydHlPYmplY3QoR0xfUkVBRF9GUkFN
RUJVRkZFUik7CiAKICAgICBPZmZzZXQgZGVzdE9mZnNldCh4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zm
c2V0KTsKICAgICBSZWN0YW5nbGUgc291cmNlQXJlYSh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKIAot
ICAgIGNvbnN0IEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IG1TdGF0ZS5nZXRSZWFkRnJhbWVi
dWZmZXIoKTsKKyAgICBjb25zdCBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBtR0xTdGF0ZS5n
ZXRSZWFkRnJhbWVidWZmZXIoKTsKICAgICBUZXh0dXJlICp0ZXh0dXJlICAgICAgICAgICAgICAg
PSBnZXRUYXJnZXRUZXh0dXJlKHRhcmdldCk7Ci0gICAgRXJyb3IgZXJyb3IgPSB0ZXh0dXJlLT5j
b3B5U3ViSW1hZ2UodGFyZ2V0LCBsZXZlbCwgZGVzdE9mZnNldCwgc291cmNlQXJlYSwgZnJhbWVi
dWZmZXIpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZWNvcmRF
cnJvcihlcnJvcik7Ci0gICAgfQorICAgIGhhbmRsZUVycm9yKHRleHR1cmUtPmNvcHlTdWJJbWFn
ZSh0YXJnZXQsIGxldmVsLCBkZXN0T2Zmc2V0LCBzb3VyY2VBcmVhLCBmcmFtZWJ1ZmZlcikpOwog
fQogCiB2b2lkIENvbnRleHQ6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMZW51bSB0YXJnZXQsCkBA
IC0yMzEzLDcgKzI2MTcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgdGV4dHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bGV2ZWwpCiB7Ci0gICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gbVN0YXRlLmdldFRhcmdl
dEZyYW1lYnVmZmVyKHRhcmdldCk7CisgICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gbUdM
U3RhdGUuZ2V0VGFyZ2V0RnJhbWVidWZmZXIodGFyZ2V0KTsKICAgICBBU1NFUlQoZnJhbWVidWZm
ZXIpOwogCiAgICAgaWYgKHRleHR1cmUgIT0gMCkKQEAgLTIzMzksNyArMjY0Myw3IEBACiAgICAg
ICAgIGZyYW1lYnVmZmVyLT5yZXNldEF0dGFjaG1lbnQoYXR0YWNobWVudCk7CiAgICAgfQogCi0g
ICAgbVN0YXRlLnNldE9iamVjdERpcnR5KHRhcmdldCk7CisgICAgbUdMU3RhdGUuc2V0T2JqZWN0
RGlydHkodGFyZ2V0KTsKIH0KIAogdm9pZCBDb250ZXh0OjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
cihHTGVudW0gdGFyZ2V0LApAQCAtMjM0Nyw3ICsyNjUxLDcgQEAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHJlbmRlcmJ1ZmZlcikKIHsKLSAg
ICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBtU3RhdGUuZ2V0VGFyZ2V0RnJhbWVidWZmZXIo
dGFyZ2V0KTsKKyAgICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBtR0xTdGF0ZS5nZXRUYXJn
ZXRGcmFtZWJ1ZmZlcih0YXJnZXQpOwogICAgIEFTU0VSVChmcmFtZWJ1ZmZlcik7CiAKICAgICBp
ZiAocmVuZGVyYnVmZmVyICE9IDApCkBAIC0yMzYxLDcgKzI2NjUsNyBAQAogICAgICAgICBmcmFt
ZWJ1ZmZlci0+cmVzZXRBdHRhY2htZW50KGF0dGFjaG1lbnQpOwogICAgIH0KIAotICAgIG1TdGF0
ZS5zZXRPYmplY3REaXJ0eSh0YXJnZXQpOworICAgIG1HTFN0YXRlLnNldE9iamVjdERpcnR5KHRh
cmdldCk7CiB9CiAKIHZvaWQgQ29udGV4dDo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0xlbnVt
IHRhcmdldCwKQEAgLTIzNzAsNyArMjY3NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsYXllcikKIHsKLSAgICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBt
U3RhdGUuZ2V0VGFyZ2V0RnJhbWVidWZmZXIodGFyZ2V0KTsKKyAgICBGcmFtZWJ1ZmZlciAqZnJh
bWVidWZmZXIgPSBtR0xTdGF0ZS5nZXRUYXJnZXRGcmFtZWJ1ZmZlcih0YXJnZXQpOwogICAgIEFT
U0VSVChmcmFtZWJ1ZmZlcik7CiAKICAgICBpZiAodGV4dHVyZSAhPSAwKQpAQCAtMjM5NiwzOSAr
MjcwMCwzNSBAQAogICAgICAgICBmcmFtZWJ1ZmZlci0+cmVzZXRBdHRhY2htZW50KGF0dGFjaG1l
bnQpOwogICAgIH0KIAotICAgIG1TdGF0ZS5zZXRPYmplY3REaXJ0eSh0YXJnZXQpOworICAgIG1H
TFN0YXRlLnNldE9iamVjdERpcnR5KHRhcmdldCk7CiB9CiAKIHZvaWQgQ29udGV4dDo6ZHJhd0J1
ZmZlcnMoR0xzaXplaSBuLCBjb25zdCBHTGVudW0gKmJ1ZnMpCiB7Ci0gICAgRnJhbWVidWZmZXIg
KmZyYW1lYnVmZmVyID0gbVN0YXRlLmdldERyYXdGcmFtZWJ1ZmZlcigpOworICAgIEZyYW1lYnVm
ZmVyICpmcmFtZWJ1ZmZlciA9IG1HTFN0YXRlLmdldERyYXdGcmFtZWJ1ZmZlcigpOwogICAgIEFT
U0VSVChmcmFtZWJ1ZmZlcik7CiAgICAgZnJhbWVidWZmZXItPnNldERyYXdCdWZmZXJzKG4sIGJ1
ZnMpOwotICAgIG1TdGF0ZS5zZXRPYmplY3REaXJ0eShHTF9EUkFXX0ZSQU1FQlVGRkVSKTsKKyAg
ICBtR0xTdGF0ZS5zZXRPYmplY3REaXJ0eShHTF9EUkFXX0ZSQU1FQlVGRkVSKTsKIH0KIAogdm9p
ZCBDb250ZXh0OjpyZWFkQnVmZmVyKEdMZW51bSBtb2RlKQogewotICAgIEZyYW1lYnVmZmVyICpy
ZWFkRkJPID0gbVN0YXRlLmdldFJlYWRGcmFtZWJ1ZmZlcigpOworICAgIEZyYW1lYnVmZmVyICpy
ZWFkRkJPID0gbUdMU3RhdGUuZ2V0UmVhZEZyYW1lYnVmZmVyKCk7CiAgICAgcmVhZEZCTy0+c2V0
UmVhZEJ1ZmZlcihtb2RlKTsKLSAgICBtU3RhdGUuc2V0T2JqZWN0RGlydHkoR0xfUkVBRF9GUkFN
RUJVRkZFUik7CisgICAgbUdMU3RhdGUuc2V0T2JqZWN0RGlydHkoR0xfUkVBRF9GUkFNRUJVRkZF
Uik7CiB9CiAKIHZvaWQgQ29udGV4dDo6ZGlzY2FyZEZyYW1lYnVmZmVyKEdMZW51bSB0YXJnZXQs
IEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpCiB7CiAg
ICAgLy8gT25seSBzeW5jIHRoZSBGQk8KLSAgICBtU3RhdGUuc3luY0RpcnR5T2JqZWN0KHRhcmdl
dCk7CisgICAgbUdMU3RhdGUuc3luY0RpcnR5T2JqZWN0KHRhcmdldCk7CiAKLSAgICBGcmFtZWJ1
ZmZlciAqZnJhbWVidWZmZXIgPSBtU3RhdGUuZ2V0VGFyZ2V0RnJhbWVidWZmZXIodGFyZ2V0KTsK
KyAgICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBtR0xTdGF0ZS5nZXRUYXJnZXRGcmFtZWJ1
ZmZlcih0YXJnZXQpOwogICAgIEFTU0VSVChmcmFtZWJ1ZmZlcik7CiAKICAgICAvLyBUaGUgc3Bl
Y2lmaWNhdGlvbiBpc24ndCBjbGVhciB3aGF0IHNob3VsZCBiZSBkb25lIHdoZW4gdGhlIGZyYW1l
YnVmZmVyIGlzbid0IGNvbXBsZXRlLgogICAgIC8vIFdlIGxlYXZlIGl0IHVwIHRvIHRoZSBmcmFt
ZWJ1ZmZlciBpbXBsZW1lbnRhdGlvbiB0byBkZWNpZGUgd2hhdCB0byBkby4KLSAgICBFcnJvciBl
cnJvciA9IGZyYW1lYnVmZmVyLT5kaXNjYXJkKG51bUF0dGFjaG1lbnRzLCBhdHRhY2htZW50cyk7
Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJlY29yZEVycm9yKGVy
cm9yKTsKLSAgICB9CisgICAgaGFuZGxlRXJyb3IoZnJhbWVidWZmZXItPmRpc2NhcmQobnVtQXR0
YWNobWVudHMsIGF0dGFjaG1lbnRzKSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6aW52YWxpZGF0ZUZy
YW1lYnVmZmVyKEdMZW51bSB0YXJnZXQsCkBAIC0yNDM2LDIwICsyNzM2LDE3IEBACiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKQog
ewogICAgIC8vIE9ubHkgc3luYyB0aGUgRkJPCi0gICAgbVN0YXRlLnN5bmNEaXJ0eU9iamVjdCh0
YXJnZXQpOworICAgIG1HTFN0YXRlLnN5bmNEaXJ0eU9iamVjdCh0YXJnZXQpOwogCi0gICAgRnJh
bWVidWZmZXIgKmZyYW1lYnVmZmVyID0gbVN0YXRlLmdldFRhcmdldEZyYW1lYnVmZmVyKHRhcmdl
dCk7CisgICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gbUdMU3RhdGUuZ2V0VGFyZ2V0RnJh
bWVidWZmZXIodGFyZ2V0KTsKICAgICBBU1NFUlQoZnJhbWVidWZmZXIpOwogCi0gICAgaWYgKGZy
YW1lYnVmZmVyLT5jaGVja1N0YXR1cyhtRGF0YSkgPT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUp
CisgICAgaWYgKGZyYW1lYnVmZmVyLT5jaGVja1N0YXR1cyhtU3RhdGUpICE9IEdMX0ZSQU1FQlVG
RkVSX0NPTVBMRVRFKQogICAgIHsKLSAgICAgICAgRXJyb3IgZXJyb3IgPSBmcmFtZWJ1ZmZlci0+
aW52YWxpZGF0ZShudW1BdHRhY2htZW50cywgYXR0YWNobWVudHMpOwotICAgICAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZWNvcmRFcnJvcihlcnJvcik7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJuOwogICAgIH0K
KworICAgIGhhbmRsZUVycm9yKGZyYW1lYnVmZmVyLT5pbnZhbGlkYXRlKG51bUF0dGFjaG1lbnRz
LCBhdHRhY2htZW50cykpOwogfQogCiB2b2lkIENvbnRleHQ6OmludmFsaWRhdGVTdWJGcmFtZWJ1
ZmZlcihHTGVudW0gdGFyZ2V0LApAQCAtMjQ2MSwyMSArMjc1OCwxOCBAQAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgLy8gT25s
eSBzeW5jIHRoZSBGQk8KLSAgICBtU3RhdGUuc3luY0RpcnR5T2JqZWN0KHRhcmdldCk7CisgICAg
bUdMU3RhdGUuc3luY0RpcnR5T2JqZWN0KHRhcmdldCk7CiAKLSAgICBGcmFtZWJ1ZmZlciAqZnJh
bWVidWZmZXIgPSBtU3RhdGUuZ2V0VGFyZ2V0RnJhbWVidWZmZXIodGFyZ2V0KTsKKyAgICBGcmFt
ZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBtR0xTdGF0ZS5nZXRUYXJnZXRGcmFtZWJ1ZmZlcih0YXJn
ZXQpOwogICAgIEFTU0VSVChmcmFtZWJ1ZmZlcik7CiAKLSAgICBpZiAoZnJhbWVidWZmZXItPmNo
ZWNrU3RhdHVzKG1EYXRhKSA9PSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKKyAgICBpZiAoZnJh
bWVidWZmZXItPmNoZWNrU3RhdHVzKG1TdGF0ZSkgIT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUp
CiAgICAgewotICAgICAgICBSZWN0YW5nbGUgYXJlYSh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKLSAg
ICAgICAgRXJyb3IgZXJyb3IgPSBmcmFtZWJ1ZmZlci0+aW52YWxpZGF0ZVN1YihudW1BdHRhY2ht
ZW50cywgYXR0YWNobWVudHMsIGFyZWEpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZWNvcmRFcnJvcihlcnJvcik7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIFJlY3Rhbmds
ZSBhcmVhKHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIGhhbmRsZUVycm9yKGZyYW1lYnVmZmVy
LT5pbnZhbGlkYXRlU3ViKG51bUF0dGFjaG1lbnRzLCBhdHRhY2htZW50cywgYXJlYSkpOwogfQog
CiB2b2lkIENvbnRleHQ6OnRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwKQEAgLTI0OTMsMTIgKzI3
ODcsOCBAQAogICAgIEV4dGVudHMgc2l6ZSh3aWR0aCwgaGVpZ2h0LCAxKTsKICAgICBUZXh0dXJl
ICp0ZXh0dXJlID0KICAgICAgICAgZ2V0VGFyZ2V0VGV4dHVyZShJc0N1YmVNYXBUZXh0dXJlVGFy
Z2V0KHRhcmdldCkgPyBHTF9URVhUVVJFX0NVQkVfTUFQIDogdGFyZ2V0KTsKLSAgICBFcnJvciBl
cnJvciA9IHRleHR1cmUtPnNldEltYWdlKG1TdGF0ZS5nZXRVbnBhY2tTdGF0ZSgpLCB0YXJnZXQs
IGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZvcm1hdCwgdHlwZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90ICo+
KHBpeGVscykpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZWNv
cmRFcnJvcihlcnJvcik7Ci0gICAgfQorICAgIGhhbmRsZUVycm9yKHRleHR1cmUtPnNldEltYWdl
KG1HTFN0YXRlLmdldFVucGFja1N0YXRlKCksIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0
LCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlwZSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90ICo+KHBpeGVscykpKTsKIH0KIAogdm9pZCBD
b250ZXh0Ojp0ZXhJbWFnZTNEKEdMZW51bSB0YXJnZXQsCkBAIC0yNTE2LDEyICsyODA2LDggQEAK
IAogICAgIEV4dGVudHMgc2l6ZSh3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7CiAgICAgVGV4dHVyZSAq
dGV4dHVyZSA9IGdldFRhcmdldFRleHR1cmUodGFyZ2V0KTsKLSAgICBFcnJvciBlcnJvciA9IHRl
eHR1cmUtPnNldEltYWdlKG1TdGF0ZS5nZXRVbnBhY2tTdGF0ZSgpLCB0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZvcm1hdCwgdHlwZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90ICo+KHBpeGVscykp
OwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZWNvcmRFcnJvcihl
cnJvcik7Ci0gICAgfQorICAgIGhhbmRsZUVycm9yKHRleHR1cmUtPnNldEltYWdlKG1HTFN0YXRl
LmdldFVucGFja1N0YXRlKCksIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCBzaXplLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlwZSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90ICo+KHBpeGVscykpKTsKIH0KIAogdm9pZCBDb250ZXh0Ojp0
ZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQsCkBAIC0yNTQ1LDEyICsyODMxLDggQEAKICAgICBC
b3ggYXJlYSh4b2Zmc2V0LCB5b2Zmc2V0LCAwLCB3aWR0aCwgaGVpZ2h0LCAxKTsKICAgICBUZXh0
dXJlICp0ZXh0dXJlID0KICAgICAgICAgZ2V0VGFyZ2V0VGV4dHVyZShJc0N1YmVNYXBUZXh0dXJl
VGFyZ2V0KHRhcmdldCkgPyBHTF9URVhUVVJFX0NVQkVfTUFQIDogdGFyZ2V0KTsKLSAgICBFcnJv
ciBlcnJvciA9IHRleHR1cmUtPnNldFN1YkltYWdlKG1TdGF0ZS5nZXRVbnBhY2tTdGF0ZSgpLCB0
YXJnZXQsIGxldmVsLCBhcmVhLCBmb3JtYXQsIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QgKj4ocGl4ZWxz
KSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJlY29yZEVycm9y
KGVycm9yKTsKLSAgICB9CisgICAgaGFuZGxlRXJyb3IodGV4dHVyZS0+c2V0U3ViSW1hZ2UobUdM
U3RhdGUuZ2V0VW5wYWNrU3RhdGUoKSwgdGFyZ2V0LCBsZXZlbCwgYXJlYSwgZm9ybWF0LCB0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCAqPihwaXhlbHMpKSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6dGV4U3ViSW1h
Z2UzRChHTGVudW0gdGFyZ2V0LApAQCAtMjU3NSwxMiArMjg1Nyw4IEBACiAKICAgICBCb3ggYXJl
YSh4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7CiAgICAg
VGV4dHVyZSAqdGV4dHVyZSA9IGdldFRhcmdldFRleHR1cmUodGFyZ2V0KTsKLSAgICBFcnJvciBl
cnJvciA9IHRleHR1cmUtPnNldFN1YkltYWdlKG1TdGF0ZS5nZXRVbnBhY2tTdGF0ZSgpLCB0YXJn
ZXQsIGxldmVsLCBhcmVhLCBmb3JtYXQsIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QgKj4ocGl4ZWxzKSk7
Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJlY29yZEVycm9yKGVy
cm9yKTsKLSAgICB9CisgICAgaGFuZGxlRXJyb3IodGV4dHVyZS0+c2V0U3ViSW1hZ2UobUdMU3Rh
dGUuZ2V0VW5wYWNrU3RhdGUoKSwgdGFyZ2V0LCBsZXZlbCwgYXJlYSwgZm9ybWF0LCB0eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCAqPihwaXhlbHMpKSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6Y29tcHJlc3NlZFRl
eEltYWdlMkQoR0xlbnVtIHRhcmdldCwKQEAgLTI1OTcsMTMgKzI4NzUsOSBAQAogICAgIEV4dGVu
dHMgc2l6ZSh3aWR0aCwgaGVpZ2h0LCAxKTsKICAgICBUZXh0dXJlICp0ZXh0dXJlID0KICAgICAg
ICAgZ2V0VGFyZ2V0VGV4dHVyZShJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkgPyBHTF9U
RVhUVVJFX0NVQkVfTUFQIDogdGFyZ2V0KTsKLSAgICBFcnJvciBlcnJvciA9Ci0gICAgICAgIHRl
eHR1cmUtPnNldENvbXByZXNzZWRJbWFnZShtU3RhdGUuZ2V0VW5wYWNrU3RhdGUoKSwgdGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbWFnZVNpemUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihk
YXRhKSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJlY29yZEVy
cm9yKGVycm9yKTsKLSAgICB9CisgICAgaGFuZGxlRXJyb3IodGV4dHVyZS0+c2V0Q29tcHJlc3Nl
ZEltYWdlKG1HTFN0YXRlLmdldFVucGFja1N0YXRlKCksIHRhcmdldCwgbGV2ZWwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsZm9ybWF0LCBzaXpl
LCBpbWFnZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihkYXRhKSkpOwogfQogCiB2b2lkIENv
bnRleHQ6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdMZW51bSB0YXJnZXQsCkBAIC0yNjIwLDEzICsy
ODk0LDkgQEAKIAogICAgIEV4dGVudHMgc2l6ZSh3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7CiAgICAg
VGV4dHVyZSAqdGV4dHVyZSA9IGdldFRhcmdldFRleHR1cmUodGFyZ2V0KTsKLSAgICBFcnJvciBl
cnJvciA9Ci0gICAgICAgIHRleHR1cmUtPnNldENvbXByZXNzZWRJbWFnZShtU3RhdGUuZ2V0VW5w
YWNrU3RhdGUoKSwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHNpemUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZVNpemUsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCAqPihkYXRhKSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7
Ci0gICAgICAgIHJlY29yZEVycm9yKGVycm9yKTsKLSAgICB9CisgICAgaGFuZGxlRXJyb3IodGV4
dHVyZS0+c2V0Q29tcHJlc3NlZEltYWdlKG1HTFN0YXRlLmdldFVucGFja1N0YXRlKCksIHRhcmdl
dCwgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dGVybmFsZm9ybWF0LCBzaXplLCBpbWFnZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihkYXRh
KSkpOwogfQogCiB2b2lkIENvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdMZW51bSB0
YXJnZXQsCkBAIC0yNjQ0LDEzICsyOTE0LDkgQEAKICAgICBCb3ggYXJlYSh4b2Zmc2V0LCB5b2Zm
c2V0LCAwLCB3aWR0aCwgaGVpZ2h0LCAxKTsKICAgICBUZXh0dXJlICp0ZXh0dXJlID0KICAgICAg
ICAgZ2V0VGFyZ2V0VGV4dHVyZShJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkgPyBHTF9U
RVhUVVJFX0NVQkVfTUFQIDogdGFyZ2V0KTsKLSAgICBFcnJvciBlcnJvciA9Ci0gICAgICAgIHRl
eHR1cmUtPnNldENvbXByZXNzZWRTdWJJbWFnZShtU3RhdGUuZ2V0VW5wYWNrU3RhdGUoKSwgdGFy
Z2V0LCBsZXZlbCwgYXJlYSwgZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW1hZ2VTaXplLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QgKj4oZGF0
YSkpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZWNvcmRFcnJv
cihlcnJvcik7Ci0gICAgfQorICAgIGhhbmRsZUVycm9yKHRleHR1cmUtPnNldENvbXByZXNzZWRT
dWJJbWFnZShtR0xTdGF0ZS5nZXRVbnBhY2tTdGF0ZSgpLCB0YXJnZXQsIGxldmVsLCBhcmVhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIGlt
YWdlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90ICo+KGRhdGEpKSk7CiB9CiAKIHZvaWQgQ29u
dGV4dDo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0xlbnVtIHRhcmdldCwKQEAgLTI2NzUsMzkg
KzI5NDEsMTE1IEBACiAKICAgICBCb3ggYXJlYSh4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3
aWR0aCwgaGVpZ2h0LCBkZXB0aCk7CiAgICAgVGV4dHVyZSAqdGV4dHVyZSA9IGdldFRhcmdldFRl
eHR1cmUodGFyZ2V0KTsKLSAgICBFcnJvciBlcnJvciA9Ci0gICAgICAgIHRleHR1cmUtPnNldENv
bXByZXNzZWRTdWJJbWFnZShtU3RhdGUuZ2V0VW5wYWNrU3RhdGUoKSwgdGFyZ2V0LCBsZXZlbCwg
YXJlYSwgZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1h
Z2VTaXplLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QgKj4oZGF0YSkpOwotICAgIGlm
IChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZWNvcmRFcnJvcihlcnJvcik7Ci0g
ICAgfQorICAgIGhhbmRsZUVycm9yKHRleHR1cmUtPnNldENvbXByZXNzZWRTdWJJbWFnZShtR0xT
dGF0ZS5nZXRVbnBhY2tTdGF0ZSgpLCB0YXJnZXQsIGxldmVsLCBhcmVhLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIGltYWdlU2l6ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90ICo+KGRhdGEpKSk7CiB9CiAKLXZvaWQgQ29udGV4dDo6Z2V0QnVm
ZmVyUG9pbnRlcnYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIC8qcG5hbWUqLywgdm9pZCAqKnBhcmFt
cykKK3ZvaWQgQ29udGV4dDo6Z2VuZXJhdGVNaXBtYXAoR0xlbnVtIHRhcmdldCkKIHsKLSAgICBC
dWZmZXIgKmJ1ZmZlciA9IGdldFN0YXRlKCkuZ2V0VGFyZ2V0QnVmZmVyKHRhcmdldCk7Ci0gICAg
QVNTRVJUKGJ1ZmZlcik7CisgICAgVGV4dHVyZSAqdGV4dHVyZSA9IGdldFRhcmdldFRleHR1cmUo
dGFyZ2V0KTsKKyAgICBoYW5kbGVFcnJvcih0ZXh0dXJlLT5nZW5lcmF0ZU1pcG1hcCgpKTsKK30K
IAotICAgIGlmICghYnVmZmVyLT5pc01hcHBlZCgpKQorR0xib29sZWFuIENvbnRleHQ6OmVuYWJs
ZUV4dGVuc2lvbihjb25zdCBjaGFyICpuYW1lKQoreworICAgIGNvbnN0IEV4dGVuc2lvbkluZm9N
YXAgJmV4dGVuc2lvbkluZm9zID0gR2V0RXh0ZW5zaW9uSW5mb01hcCgpOworICAgIEFTU0VSVChl
eHRlbnNpb25JbmZvcy5maW5kKG5hbWUpICE9IGV4dGVuc2lvbkluZm9zLmVuZCgpKTsKKyAgICBj
b25zdCBhdXRvICZleHRlbnNpb24gPSBleHRlbnNpb25JbmZvcy5hdChuYW1lKTsKKyAgICBBU1NF
UlQoZXh0ZW5zaW9uLkVuYWJsZWFibGUpOworCisgICAgaWYgKG1FeHRlbnNpb25zLiooZXh0ZW5z
aW9uLkV4dGVuc2lvbnNNZW1iZXIpKQogICAgIHsKLSAgICAgICAgKnBhcmFtcyA9IG51bGxwdHI7
CisgICAgICAgIC8vIEV4dGVuc2lvbiBhbHJlYWR5IGVuYWJsZWQKKyAgICAgICAgcmV0dXJuIEdM
X1RSVUU7CiAgICAgfQotICAgIGVsc2UKKworICAgIGNvbnN0IGF1dG8gJm5hdGl2ZUV4dGVuc2lv
bnMgPSBtSW1wbGVtZW50YXRpb24tPmdldE5hdGl2ZUV4dGVuc2lvbnMoKTsKKyAgICBpZiAoIShu
YXRpdmVFeHRlbnNpb25zLiooZXh0ZW5zaW9uLkV4dGVuc2lvbnNNZW1iZXIpKSkKICAgICB7Ci0g
ICAgICAgICpwYXJhbXMgPSBidWZmZXItPmdldE1hcFBvaW50ZXIoKTsKKyAgICAgICAgLy8gVW5k
ZXJseWluZyBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgdmFsaWQgZXh0ZW5z
aW9uCisgICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAgICB9CisKKyAgICBtRXh0ZW5zaW9ucy4q
KGV4dGVuc2lvbi5FeHRlbnNpb25zTWVtYmVyKSA9IHRydWU7CisgICAgdXBkYXRlQ2FwcygpOwor
ICAgIGluaXRFeHRlbnNpb25TdHJpbmdzKCk7CisgICAgcmV0dXJuIEdMX1RSVUU7CiB9CiAKK3Zv
aWQgQ29udGV4dDo6Y29weVRleHR1cmVDSFJPTUlVTShHTHVpbnQgc291cmNlSWQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGRlc3RJZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdFR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFja0ZsaXBZLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBhY2tVbm11bHRpcGx5QWxw
aGEpCit7CisgICAgc3luY1N0YXRlRm9yVGV4SW1hZ2UoKTsKKworICAgIGdsOjpUZXh0dXJlICpz
b3VyY2VUZXh0dXJlID0gZ2V0VGV4dHVyZShzb3VyY2VJZCk7CisgICAgZ2w6OlRleHR1cmUgKmRl
c3RUZXh0dXJlICAgPSBnZXRUZXh0dXJlKGRlc3RJZCk7CisgICAgaGFuZGxlRXJyb3IoZGVzdFRl
eHR1cmUtPmNvcHlUZXh0dXJlKGludGVybmFsRm9ybWF0LCBkZXN0VHlwZSwgdW5wYWNrRmxpcFkg
PT0gR0xfVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5w
YWNrUHJlbXVsdGlwbHlBbHBoYSA9PSBHTF9UUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnBhY2tVbm11bHRpcGx5QWxwaGEgPT0gR0xfVFJVRSwgc291cmNl
VGV4dHVyZSkpOworfQorCit2b2lkIENvbnRleHQ6OmNvcHlTdWJUZXh0dXJlQ0hST01JVU0oR0x1
aW50IHNvdXJjZUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBkZXN0SWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9m
ZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBhY2tGbGlwWSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNrVW5tdWx0aXBs
eUFscGhhKQoreworICAgIC8vIFplcm8gc2l6ZWQgY29waWVzIGFyZSB2YWxpZCBidXQgbm8tb3Bz
CisgICAgaWYgKHdpZHRoID09IDAgfHwgaGVpZ2h0ID09IDApCisgICAgeworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgc3luY1N0YXRlRm9yVGV4SW1hZ2UoKTsKKworICAgIGdsOjpUZXh0
dXJlICpzb3VyY2VUZXh0dXJlID0gZ2V0VGV4dHVyZShzb3VyY2VJZCk7CisgICAgZ2w6OlRleHR1
cmUgKmRlc3RUZXh0dXJlICAgPSBnZXRUZXh0dXJlKGRlc3RJZCk7CisgICAgT2Zmc2V0IG9mZnNl
dCh4b2Zmc2V0LCB5b2Zmc2V0LCAwKTsKKyAgICBSZWN0YW5nbGUgYXJlYSh4LCB5LCB3aWR0aCwg
aGVpZ2h0KTsKKyAgICBoYW5kbGVFcnJvcihkZXN0VGV4dHVyZS0+Y29weVN1YlRleHR1cmUob2Zm
c2V0LCBhcmVhLCB1bnBhY2tGbGlwWSA9PSBHTF9UUlVFLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnBhY2tQcmVtdWx0aXBseUFscGhhID09IEdMX1RSVUUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVucGFja1VubXVs
dGlwbHlBbHBoYSA9PSBHTF9UUlVFLCBzb3VyY2VUZXh0dXJlKSk7Cit9CisKK3ZvaWQgQ29udGV4
dDo6Y29tcHJlc3NlZENvcHlUZXh0dXJlQ0hST01JVU0oR0x1aW50IHNvdXJjZUlkLCBHTHVpbnQg
ZGVzdElkKQoreworICAgIHN5bmNTdGF0ZUZvclRleEltYWdlKCk7CisKKyAgICBnbDo6VGV4dHVy
ZSAqc291cmNlVGV4dHVyZSA9IGdldFRleHR1cmUoc291cmNlSWQpOworICAgIGdsOjpUZXh0dXJl
ICpkZXN0VGV4dHVyZSAgID0gZ2V0VGV4dHVyZShkZXN0SWQpOworICAgIGhhbmRsZUVycm9yKGRl
c3RUZXh0dXJlLT5jb3B5Q29tcHJlc3NlZFRleHR1cmUoc291cmNlVGV4dHVyZSkpOworfQorCit2
b2lkIENvbnRleHQ6OmdldEJ1ZmZlclBvaW50ZXJ2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt
ZSwgdm9pZCAqKnBhcmFtcykKK3sKKyAgICBCdWZmZXIgKmJ1ZmZlciA9IG1HTFN0YXRlLmdldFRh
cmdldEJ1ZmZlcih0YXJnZXQpOworICAgIEFTU0VSVChidWZmZXIpOworCisgICAgUXVlcnlCdWZm
ZXJQb2ludGVydihidWZmZXIsIHBuYW1lLCBwYXJhbXMpOworfQorCiBHTHZvaWQgKkNvbnRleHQ6
Om1hcEJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBHTGVudW0gYWNjZXNzKQogewotICAgIEJ1ZmZlciAq
YnVmZmVyID0gZ2V0U3RhdGUoKS5nZXRUYXJnZXRCdWZmZXIodGFyZ2V0KTsKKyAgICBCdWZmZXIg
KmJ1ZmZlciA9IG1HTFN0YXRlLmdldFRhcmdldEJ1ZmZlcih0YXJnZXQpOwogICAgIEFTU0VSVChi
dWZmZXIpOwogCiAgICAgRXJyb3IgZXJyb3IgPSBidWZmZXItPm1hcChhY2Nlc3MpOwogICAgIGlm
IChlcnJvci5pc0Vycm9yKCkpCiAgICAgewotICAgICAgICByZWNvcmRFcnJvcihlcnJvcik7Cisg
ICAgICAgIGhhbmRsZUVycm9yKGVycm9yKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCkBAIC0yNzE2LDcgKzMwNTgsNyBAQAogCiBHTGJvb2xlYW4gQ29udGV4dDo6dW5tYXBCdWZm
ZXIoR0xlbnVtIHRhcmdldCkKIHsKLSAgICBCdWZmZXIgKmJ1ZmZlciA9IGdldFN0YXRlKCkuZ2V0
VGFyZ2V0QnVmZmVyKHRhcmdldCk7CisgICAgQnVmZmVyICpidWZmZXIgPSBtR0xTdGF0ZS5nZXRU
YXJnZXRCdWZmZXIodGFyZ2V0KTsKICAgICBBU1NFUlQoYnVmZmVyKTsKIAogICAgIEdMYm9vbGVh
biByZXN1bHQ7CkBAIC0yNzIzLDcgKzMwNjUsNyBAQAogICAgIEVycm9yIGVycm9yID0gYnVmZmVy
LT51bm1hcCgmcmVzdWx0KTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKLSAgICAg
ICAgcmVjb3JkRXJyb3IoZXJyb3IpOworICAgICAgICBoYW5kbGVFcnJvcihlcnJvcik7CiAgICAg
ICAgIHJldHVybiBHTF9GQUxTRTsKICAgICB9CiAKQEAgLTI3MzUsMTMgKzMwNzcsMTMgQEAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBsZW5ndGgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQgYWNjZXNzKQogewotICAgIEJ1ZmZl
ciAqYnVmZmVyID0gZ2V0U3RhdGUoKS5nZXRUYXJnZXRCdWZmZXIodGFyZ2V0KTsKKyAgICBCdWZm
ZXIgKmJ1ZmZlciA9IG1HTFN0YXRlLmdldFRhcmdldEJ1ZmZlcih0YXJnZXQpOwogICAgIEFTU0VS
VChidWZmZXIpOwogCiAgICAgRXJyb3IgZXJyb3IgPSBidWZmZXItPm1hcFJhbmdlKG9mZnNldCwg
bGVuZ3RoLCBhY2Nlc3MpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewotICAgICAg
ICByZWNvcmRFcnJvcihlcnJvcik7CisgICAgICAgIGhhbmRsZUVycm9yKGVycm9yKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0yNzczLDQgKzMxMTUsNDA3IEBACiAgICAg
c3luY1JlbmRlcmVyU3RhdGUobUJsaXREaXJ0eUJpdHMsIG1CbGl0RGlydHlPYmplY3RzKTsKIH0K
IAordm9pZCBDb250ZXh0OjphY3RpdmVUZXh0dXJlKEdMZW51bSB0ZXh0dXJlKQoreworICAgIG1H
TFN0YXRlLnNldEFjdGl2ZVNhbXBsZXIodGV4dHVyZSAtIEdMX1RFWFRVUkUwKTsKK30KKwordm9p
ZCBDb250ZXh0OjpibGVuZENvbG9yKEdMY2xhbXBmIHJlZCwgR0xjbGFtcGYgZ3JlZW4sIEdMY2xh
bXBmIGJsdWUsIEdMY2xhbXBmIGFscGhhKQoreworICAgIG1HTFN0YXRlLnNldEJsZW5kQ29sb3Io
Y2xhbXAwMShyZWQpLCBjbGFtcDAxKGdyZWVuKSwgY2xhbXAwMShibHVlKSwgY2xhbXAwMShhbHBo
YSkpOworfQorCit2b2lkIENvbnRleHQ6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShHTGVudW0gbW9k
ZVJHQiwgR0xlbnVtIG1vZGVBbHBoYSkKK3sKKyAgICBtR0xTdGF0ZS5zZXRCbGVuZEVxdWF0aW9u
KG1vZGVSR0IsIG1vZGVBbHBoYSk7Cit9CisKK3ZvaWQgQ29udGV4dDo6YmxlbmRGdW5jU2VwYXJh
dGUoR0xlbnVtIHNyY1JHQiwgR0xlbnVtIGRzdFJHQiwgR0xlbnVtIHNyY0FscGhhLCBHTGVudW0g
ZHN0QWxwaGEpCit7CisgICAgbUdMU3RhdGUuc2V0QmxlbmRGYWN0b3JzKHNyY1JHQiwgZHN0UkdC
LCBzcmNBbHBoYSwgZHN0QWxwaGEpOworfQorCit2b2lkIENvbnRleHQ6OmNsZWFyQ29sb3IoR0xj
bGFtcGYgcmVkLCBHTGNsYW1wZiBncmVlbiwgR0xjbGFtcGYgYmx1ZSwgR0xjbGFtcGYgYWxwaGEp
Cit7CisgICAgbUdMU3RhdGUuc2V0Q29sb3JDbGVhclZhbHVlKHJlZCwgZ3JlZW4sIGJsdWUsIGFs
cGhhKTsKK30KKwordm9pZCBDb250ZXh0OjpjbGVhckRlcHRoZihHTGNsYW1wZiBkZXB0aCkKK3sK
KyAgICBtR0xTdGF0ZS5zZXREZXB0aENsZWFyVmFsdWUoZGVwdGgpOworfQorCit2b2lkIENvbnRl
eHQ6OmNsZWFyU3RlbmNpbChHTGludCBzKQoreworICAgIG1HTFN0YXRlLnNldFN0ZW5jaWxDbGVh
clZhbHVlKHMpOworfQorCit2b2lkIENvbnRleHQ6OmNvbG9yTWFzayhHTGJvb2xlYW4gcmVkLCBH
TGJvb2xlYW4gZ3JlZW4sIEdMYm9vbGVhbiBibHVlLCBHTGJvb2xlYW4gYWxwaGEpCit7CisgICAg
bUdMU3RhdGUuc2V0Q29sb3JNYXNrKHJlZCA9PSBHTF9UUlVFLCBncmVlbiA9PSBHTF9UUlVFLCBi
bHVlID09IEdMX1RSVUUsIGFscGhhID09IEdMX1RSVUUpOworfQorCit2b2lkIENvbnRleHQ6OmN1
bGxGYWNlKEdMZW51bSBtb2RlKQoreworICAgIG1HTFN0YXRlLnNldEN1bGxNb2RlKG1vZGUpOwor
fQorCit2b2lkIENvbnRleHQ6OmRlcHRoRnVuYyhHTGVudW0gZnVuYykKK3sKKyAgICBtR0xTdGF0
ZS5zZXREZXB0aEZ1bmMoZnVuYyk7Cit9CisKK3ZvaWQgQ29udGV4dDo6ZGVwdGhNYXNrKEdMYm9v
bGVhbiBmbGFnKQoreworICAgIG1HTFN0YXRlLnNldERlcHRoTWFzayhmbGFnICE9IEdMX0ZBTFNF
KTsKK30KKwordm9pZCBDb250ZXh0OjpkZXB0aFJhbmdlZihHTGNsYW1wZiB6TmVhciwgR0xjbGFt
cGYgekZhcikKK3sKKyAgICBtR0xTdGF0ZS5zZXREZXB0aFJhbmdlKHpOZWFyLCB6RmFyKTsKK30K
Kwordm9pZCBDb250ZXh0OjpkaXNhYmxlKEdMZW51bSBjYXApCit7CisgICAgbUdMU3RhdGUuc2V0
RW5hYmxlRmVhdHVyZShjYXAsIGZhbHNlKTsKK30KKwordm9pZCBDb250ZXh0OjpkaXNhYmxlVmVy
dGV4QXR0cmliQXJyYXkoR0x1aW50IGluZGV4KQoreworICAgIG1HTFN0YXRlLnNldEVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KGluZGV4LCBmYWxzZSk7Cit9CisKK3ZvaWQgQ29udGV4dDo6ZW5hYmxl
KEdMZW51bSBjYXApCit7CisgICAgbUdMU3RhdGUuc2V0RW5hYmxlRmVhdHVyZShjYXAsIHRydWUp
OworfQorCit2b2lkIENvbnRleHQ6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdMdWludCBpbmRl
eCkKK3sKKyAgICBtR0xTdGF0ZS5zZXRFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCwgdHJ1
ZSk7Cit9CisKK3ZvaWQgQ29udGV4dDo6ZnJvbnRGYWNlKEdMZW51bSBtb2RlKQoreworICAgIG1H
TFN0YXRlLnNldEZyb250RmFjZShtb2RlKTsKK30KKwordm9pZCBDb250ZXh0OjpoaW50KEdMZW51
bSB0YXJnZXQsIEdMZW51bSBtb2RlKQoreworICAgIHN3aXRjaCAodGFyZ2V0KQorICAgIHsKKyAg
ICAgICAgY2FzZSBHTF9HRU5FUkFURV9NSVBNQVBfSElOVDoKKyAgICAgICAgICAgIG1HTFN0YXRl
LnNldEdlbmVyYXRlTWlwbWFwSGludChtb2RlKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2UgR0xfRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVM6CisgICAgICAg
ICAgICBtR0xTdGF0ZS5zZXRGcmFnbWVudFNoYWRlckRlcml2YXRpdmVIaW50KG1vZGUpOworICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hB
QkxFKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgfQorfQorCit2b2lkIENvbnRleHQ6Omxp
bmVXaWR0aChHTGZsb2F0IHdpZHRoKQoreworICAgIG1HTFN0YXRlLnNldExpbmVXaWR0aCh3aWR0
aCk7Cit9CisKK3ZvaWQgQ29udGV4dDo6cGl4ZWxTdG9yZWkoR0xlbnVtIHBuYW1lLCBHTGludCBw
YXJhbSkKK3sKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlBB
Q0tfQUxJR05NRU5UOgorICAgICAgICAgICAgbUdMU3RhdGUuc2V0VW5wYWNrQWxpZ25tZW50KHBh
cmFtKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfUEFDS19BTElHTk1F
TlQ6CisgICAgICAgICAgICBtR0xTdGF0ZS5zZXRQYWNrQWxpZ25tZW50KHBhcmFtKTsKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfUEFDS19SRVZFUlNFX1JPV19PUkRFUl9B
TkdMRToKKyAgICAgICAgICAgIG1HTFN0YXRlLnNldFBhY2tSZXZlcnNlUm93T3JkZXIocGFyYW0g
IT0gMCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX1VOUEFDS19ST1df
TEVOR1RIOgorICAgICAgICAgICAgQVNTRVJUKChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA+PSAz
KSB8fCBnZXRFeHRlbnNpb25zKCkudW5wYWNrU3ViaW1hZ2UpOworICAgICAgICAgICAgbUdMU3Rh
dGUuc2V0VW5wYWNrUm93TGVuZ3RoKHBhcmFtKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2UgR0xfVU5QQUNLX0lNQUdFX0hFSUdIVDoKKyAgICAgICAgICAgIEFTU0VSVChnZXRD
bGllbnRNYWpvclZlcnNpb24oKSA+PSAzKTsKKyAgICAgICAgICAgIG1HTFN0YXRlLnNldFVucGFj
a0ltYWdlSGVpZ2h0KHBhcmFtKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug
R0xfVU5QQUNLX1NLSVBfSU1BR0VTOgorICAgICAgICAgICAgQVNTRVJUKGdldENsaWVudE1ham9y
VmVyc2lvbigpID49IDMpOworICAgICAgICAgICAgbUdMU3RhdGUuc2V0VW5wYWNrU2tpcEltYWdl
cyhwYXJhbSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX1VOUEFDS19T
S0lQX1JPV1M6CisgICAgICAgICAgICBBU1NFUlQoKGdldENsaWVudE1ham9yVmVyc2lvbigpID49
IDMpIHx8IGdldEV4dGVuc2lvbnMoKS51bnBhY2tTdWJpbWFnZSk7CisgICAgICAgICAgICBtR0xT
dGF0ZS5zZXRVbnBhY2tTa2lwUm93cyhwYXJhbSk7CisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBjYXNlIEdMX1VOUEFDS19TS0lQX1BJWEVMUzoKKyAgICAgICAgICAgIEFTU0VSVCgoZ2V0
Q2xpZW50TWFqb3JWZXJzaW9uKCkgPj0gMykgfHwgZ2V0RXh0ZW5zaW9ucygpLnVucGFja1N1Ymlt
YWdlKTsKKyAgICAgICAgICAgIG1HTFN0YXRlLnNldFVucGFja1NraXBQaXhlbHMocGFyYW0pOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9QQUNLX1JPV19MRU5HVEg6Cisg
ICAgICAgICAgICBBU1NFUlQoKGdldENsaWVudE1ham9yVmVyc2lvbigpID49IDMpIHx8IGdldEV4
dGVuc2lvbnMoKS5wYWNrU3ViaW1hZ2UpOworICAgICAgICAgICAgbUdMU3RhdGUuc2V0UGFja1Jv
d0xlbmd0aChwYXJhbSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX1BB
Q0tfU0tJUF9ST1dTOgorICAgICAgICAgICAgQVNTRVJUKChnZXRDbGllbnRNYWpvclZlcnNpb24o
KSA+PSAzKSB8fCBnZXRFeHRlbnNpb25zKCkucGFja1N1YmltYWdlKTsKKyAgICAgICAgICAgIG1H
TFN0YXRlLnNldFBhY2tTa2lwUm93cyhwYXJhbSk7CisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBjYXNlIEdMX1BBQ0tfU0tJUF9QSVhFTFM6CisgICAgICAgICAgICBBU1NFUlQoKGdldENs
aWVudE1ham9yVmVyc2lvbigpID49IDMpIHx8IGdldEV4dGVuc2lvbnMoKS5wYWNrU3ViaW1hZ2Up
OworICAgICAgICAgICAgbUdMU3RhdGUuc2V0UGFja1NraXBQaXhlbHMocGFyYW0pOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgfQorfQorCit2b2lkIENvbnRleHQ6OnBvbHln
b25PZmZzZXQoR0xmbG9hdCBmYWN0b3IsIEdMZmxvYXQgdW5pdHMpCit7CisgICAgbUdMU3RhdGUu
c2V0UG9seWdvbk9mZnNldFBhcmFtcyhmYWN0b3IsIHVuaXRzKTsKK30KKwordm9pZCBDb250ZXh0
OjpzYW1wbGVDb3ZlcmFnZShHTGNsYW1wZiB2YWx1ZSwgR0xib29sZWFuIGludmVydCkKK3sKKyAg
ICBtR0xTdGF0ZS5zZXRTYW1wbGVDb3ZlcmFnZVBhcmFtcyhjbGFtcDAxKHZhbHVlKSwgaW52ZXJ0
ID09IEdMX1RSVUUpOworfQorCit2b2lkIENvbnRleHQ6OnNjaXNzb3IoR0xpbnQgeCwgR0xpbnQg
eSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCit7CisgICAgbUdMU3RhdGUuc2V0U2Np
c3NvclBhcmFtcyh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKK30KKwordm9pZCBDb250ZXh0OjpzdGVu
Y2lsRnVuY1NlcGFyYXRlKEdMZW51bSBmYWNlLCBHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVp
bnQgbWFzaykKK3sKKyAgICBpZiAoZmFjZSA9PSBHTF9GUk9OVCB8fCBmYWNlID09IEdMX0ZST05U
X0FORF9CQUNLKQorICAgIHsKKyAgICAgICAgbUdMU3RhdGUuc2V0U3RlbmNpbFBhcmFtcyhmdW5j
LCByZWYsIG1hc2spOworICAgIH0KKworICAgIGlmIChmYWNlID09IEdMX0JBQ0sgfHwgZmFjZSA9
PSBHTF9GUk9OVF9BTkRfQkFDSykKKyAgICB7CisgICAgICAgIG1HTFN0YXRlLnNldFN0ZW5jaWxC
YWNrUGFyYW1zKGZ1bmMsIHJlZiwgbWFzayk7CisgICAgfQorfQorCit2b2lkIENvbnRleHQ6OnN0
ZW5jaWxNYXNrU2VwYXJhdGUoR0xlbnVtIGZhY2UsIEdMdWludCBtYXNrKQoreworICAgIGlmIChm
YWNlID09IEdMX0ZST05UIHx8IGZhY2UgPT0gR0xfRlJPTlRfQU5EX0JBQ0spCisgICAgeworICAg
ICAgICBtR0xTdGF0ZS5zZXRTdGVuY2lsV3JpdGVtYXNrKG1hc2spOworICAgIH0KKworICAgIGlm
IChmYWNlID09IEdMX0JBQ0sgfHwgZmFjZSA9PSBHTF9GUk9OVF9BTkRfQkFDSykKKyAgICB7Cisg
ICAgICAgIG1HTFN0YXRlLnNldFN0ZW5jaWxCYWNrV3JpdGVtYXNrKG1hc2spOworICAgIH0KK30K
Kwordm9pZCBDb250ZXh0OjpzdGVuY2lsT3BTZXBhcmF0ZShHTGVudW0gZmFjZSwgR0xlbnVtIGZh
aWwsIEdMZW51bSB6ZmFpbCwgR0xlbnVtIHpwYXNzKQoreworICAgIGlmIChmYWNlID09IEdMX0ZS
T05UIHx8IGZhY2UgPT0gR0xfRlJPTlRfQU5EX0JBQ0spCisgICAgeworICAgICAgICBtR0xTdGF0
ZS5zZXRTdGVuY2lsT3BlcmF0aW9ucyhmYWlsLCB6ZmFpbCwgenBhc3MpOworICAgIH0KKworICAg
IGlmIChmYWNlID09IEdMX0JBQ0sgfHwgZmFjZSA9PSBHTF9GUk9OVF9BTkRfQkFDSykKKyAgICB7
CisgICAgICAgIG1HTFN0YXRlLnNldFN0ZW5jaWxCYWNrT3BlcmF0aW9ucyhmYWlsLCB6ZmFpbCwg
enBhc3MpOworICAgIH0KK30KKwordm9pZCBDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWIxZihHTHVpbnQg
aW5kZXgsIEdMZmxvYXQgeCkKK3sKKyAgICBHTGZsb2F0IHZhbHNbNF0gPSB7eCwgMCwgMCwgMX07
CisgICAgbUdMU3RhdGUuc2V0VmVydGV4QXR0cmliZihpbmRleCwgdmFscyk7Cit9CisKK3ZvaWQg
Q29udGV4dDo6dmVydGV4QXR0cmliMWZ2KEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdmFs
dWVzKQoreworICAgIEdMZmxvYXQgdmFsc1s0XSA9IHt2YWx1ZXNbMF0sIDAsIDAsIDF9OworICAg
IG1HTFN0YXRlLnNldFZlcnRleEF0dHJpYmYoaW5kZXgsIHZhbHMpOworfQorCit2b2lkIENvbnRl
eHQ6OnZlcnRleEF0dHJpYjJmKEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpCit7
CisgICAgR0xmbG9hdCB2YWxzWzRdID0ge3gsIHksIDAsIDF9OworICAgIG1HTFN0YXRlLnNldFZl
cnRleEF0dHJpYmYoaW5kZXgsIHZhbHMpOworfQorCit2b2lkIENvbnRleHQ6OnZlcnRleEF0dHJp
YjJmdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKnZhbHVlcykKK3sKKyAgICBHTGZsb2F0
IHZhbHNbNF0gPSB7dmFsdWVzWzBdLCB2YWx1ZXNbMV0sIDAsIDF9OworICAgIG1HTFN0YXRlLnNl
dFZlcnRleEF0dHJpYmYoaW5kZXgsIHZhbHMpOworfQorCit2b2lkIENvbnRleHQ6OnZlcnRleEF0
dHJpYjNmKEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeikKK3sK
KyAgICBHTGZsb2F0IHZhbHNbNF0gPSB7eCwgeSwgeiwgMX07CisgICAgbUdMU3RhdGUuc2V0VmVy
dGV4QXR0cmliZihpbmRleCwgdmFscyk7Cit9CisKK3ZvaWQgQ29udGV4dDo6dmVydGV4QXR0cmli
M2Z2KEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdmFsdWVzKQoreworICAgIEdMZmxvYXQg
dmFsc1s0XSA9IHt2YWx1ZXNbMF0sIHZhbHVlc1sxXSwgdmFsdWVzWzJdLCAxfTsKKyAgICBtR0xT
dGF0ZS5zZXRWZXJ0ZXhBdHRyaWJmKGluZGV4LCB2YWxzKTsKK30KKwordm9pZCBDb250ZXh0Ojp2
ZXJ0ZXhBdHRyaWI0ZihHTHVpbnQgaW5kZXgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0
IHosIEdMZmxvYXQgdykKK3sKKyAgICBHTGZsb2F0IHZhbHNbNF0gPSB7eCwgeSwgeiwgd307Cisg
ICAgbUdMU3RhdGUuc2V0VmVydGV4QXR0cmliZihpbmRleCwgdmFscyk7Cit9CisKK3ZvaWQgQ29u
dGV4dDo6dmVydGV4QXR0cmliNGZ2KEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdmFsdWVz
KQoreworICAgIG1HTFN0YXRlLnNldFZlcnRleEF0dHJpYmYoaW5kZXgsIHZhbHVlcyk7Cit9CisK
K3ZvaWQgQ29udGV4dDo6dmVydGV4QXR0cmliUG9pbnRlcihHTHVpbnQgaW5kZXgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGJvb2xlYW4gbm9ybWFsaXplZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIHN0cmlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHZvaWQgKnB0cikKK3sKKyAgICBtR0xTdGF0ZS5zZXRWZXJ0ZXhBdHRyaWJTdGF0
ZShpbmRleCwgbUdMU3RhdGUuZ2V0VGFyZ2V0QnVmZmVyKEdMX0FSUkFZX0JVRkZFUiksIHNpemUs
IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZCA9PSBH
TF9UUlVFLCBmYWxzZSwgc3RyaWRlLCBwdHIpOworfQorCit2b2lkIENvbnRleHQ6OnZpZXdwb3J0
KEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQoreworICAg
IG1HTFN0YXRlLnNldFZpZXdwb3J0UGFyYW1zKHgsIHksIHdpZHRoLCBoZWlnaHQpOworfQorCit2
b2lkIENvbnRleHQ6OnZlcnRleEF0dHJpYklQb2ludGVyKEdMdWludCBpbmRleCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTHZvaWQgKnBvaW50ZXIpCit7CisgICAgbUdMU3RhdGUuc2V0VmVydGV4QXR0
cmliU3RhdGUoaW5kZXgsIG1HTFN0YXRlLmdldFRhcmdldEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIp
LCBzaXplLCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCB0
cnVlLCBzdHJpZGUsIHBvaW50ZXIpOworfQorCit2b2lkIENvbnRleHQ6OnZlcnRleEF0dHJpYkk0
aShHTHVpbnQgaW5kZXgsIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHosIEdMaW50IHcpCit7Cisg
ICAgR0xpbnQgdmFsc1s0XSA9IHt4LCB5LCB6LCB3fTsKKyAgICBtR0xTdGF0ZS5zZXRWZXJ0ZXhB
dHRyaWJpKGluZGV4LCB2YWxzKTsKK30KKwordm9pZCBDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNHVp
KEdMdWludCBpbmRleCwgR0x1aW50IHgsIEdMdWludCB5LCBHTHVpbnQgeiwgR0x1aW50IHcpCit7
CisgICAgR0x1aW50IHZhbHNbNF0gPSB7eCwgeSwgeiwgd307CisgICAgbUdMU3RhdGUuc2V0VmVy
dGV4QXR0cmlidShpbmRleCwgdmFscyk7Cit9CisKK3ZvaWQgQ29udGV4dDo6dmVydGV4QXR0cmli
STRpdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMaW50ICp2KQoreworICAgIG1HTFN0YXRlLnNldFZl
cnRleEF0dHJpYmkoaW5kZXgsIHYpOworfQorCit2b2lkIENvbnRleHQ6OnZlcnRleEF0dHJpYkk0
dWl2KEdMdWludCBpbmRleCwgY29uc3QgR0x1aW50ICp2KQoreworICAgIG1HTFN0YXRlLnNldFZl
cnRleEF0dHJpYnUoaW5kZXgsIHYpOworfQorCit2b2lkIENvbnRleHQ6OmRlYnVnTWVzc2FnZUNv
bnRyb2woR0xlbnVtIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc2V2
ZXJpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKmlkcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gZW5hYmxlZCkKK3sKKyAg
ICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IGlkVmVjdG9yKGlkcywgaWRzICsgY291bnQpOworICAgIG1H
TFN0YXRlLmdldERlYnVnKCkuc2V0TWVzc2FnZUNvbnRyb2woc291cmNlLCB0eXBlLCBzZXZlcml0
eSwgc3RkOjptb3ZlKGlkVmVjdG9yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChlbmFibGVkICE9IEdMX0ZBTFNFKSk7Cit9CisKK3ZvaWQgQ29udGV4dDo6ZGVi
dWdNZXNzYWdlSW5zZXJ0KEdMZW51bSBzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzZXZlcml0
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGVuZ3RoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpidWYpCit7CisgICAg
c3RkOjpzdHJpbmcgbXNnKGJ1ZiwgKGxlbmd0aCA+IDApID8gc3RhdGljX2Nhc3Q8c2l6ZV90Pihs
ZW5ndGgpIDogc3RybGVuKGJ1ZikpOworICAgIG1HTFN0YXRlLmdldERlYnVnKCkuaW5zZXJ0TWVz
c2FnZShzb3VyY2UsIHR5cGUsIGlkLCBzZXZlcml0eSwgc3RkOjptb3ZlKG1zZykpOworfQorCit2
b2lkIENvbnRleHQ6OmRlYnVnTWVzc2FnZUNhbGxiYWNrKEdMREVCVUdQUk9DS0hSIGNhbGxiYWNr
LCBjb25zdCB2b2lkICp1c2VyUGFyYW0pCit7CisgICAgbUdMU3RhdGUuZ2V0RGVidWcoKS5zZXRD
YWxsYmFjayhjYWxsYmFjaywgdXNlclBhcmFtKTsKK30KKworR0x1aW50IENvbnRleHQ6OmdldERl
YnVnTWVzc2FnZUxvZyhHTHVpbnQgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtICpzb3VyY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gKnR5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
KmlkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICpzZXZlcml0
aWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGhz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKm1lc3NhZ2VMb2cp
Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMdWludD4obUdMU3RhdGUuZ2V0RGVidWcoKS5n
ZXRNZXNzYWdlcyhjb3VudCwgYnVmU2l6ZSwgc291cmNlcywgdHlwZXMsIGlkcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dmVyaXRpZXMsIGxlbmd0aHMsIG1lc3NhZ2VMb2cpKTsKK30KKwordm9pZCBDb250ZXh0OjpwdXNo
RGVidWdHcm91cChHTGVudW0gc291cmNlLCBHTHVpbnQgaWQsIEdMc2l6ZWkgbGVuZ3RoLCBjb25z
dCBHTGNoYXIgKm1lc3NhZ2UpCit7CisgICAgc3RkOjpzdHJpbmcgbXNnKG1lc3NhZ2UsIChsZW5n
dGggPiAwKSA/IHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSA6IHN0cmxlbihtZXNzYWdlKSk7
CisgICAgbUdMU3RhdGUuZ2V0RGVidWcoKS5wdXNoR3JvdXAoc291cmNlLCBpZCwgc3RkOjptb3Zl
KG1zZykpOworfQorCit2b2lkIENvbnRleHQ6OnBvcERlYnVnR3JvdXAoKQoreworICAgIG1HTFN0
YXRlLmdldERlYnVnKCkucG9wR3JvdXAoKTsKK30KKwordm9pZCBDb250ZXh0OjpidWZmZXJEYXRh
KEdMZW51bSB0YXJnZXQsIEdMc2l6ZWlwdHIgc2l6ZSwgY29uc3QgR0x2b2lkICpkYXRhLCBHTGVu
dW0gdXNhZ2UpCit7CisgICAgQnVmZmVyICpidWZmZXIgPSBtR0xTdGF0ZS5nZXRUYXJnZXRCdWZm
ZXIodGFyZ2V0KTsKKyAgICBBU1NFUlQoYnVmZmVyKTsKKyAgICBoYW5kbGVFcnJvcihidWZmZXIt
PmJ1ZmZlckRhdGEodGFyZ2V0LCBkYXRhLCBzaXplLCB1c2FnZSkpOworfQorCit2b2lkIENvbnRl
eHQ6OmJ1ZmZlclN1YkRhdGEoR0xlbnVtIHRhcmdldCwgR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVp
cHRyIHNpemUsIGNvbnN0IEdMdm9pZCAqZGF0YSkKK3sKKyAgICBpZiAoZGF0YSA9PSBudWxscHRy
KQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEJ1ZmZlciAqYnVmZmVyID0g
bUdMU3RhdGUuZ2V0VGFyZ2V0QnVmZmVyKHRhcmdldCk7CisgICAgQVNTRVJUKGJ1ZmZlcik7Cisg
ICAgaGFuZGxlRXJyb3IoYnVmZmVyLT5idWZmZXJTdWJEYXRhKHRhcmdldCwgZGF0YSwgc2l6ZSwg
b2Zmc2V0KSk7Cit9CisKK3ZvaWQgQ29udGV4dDo6YXR0YWNoU2hhZGVyKEdMdWludCBwcm9ncmFt
LCBHTHVpbnQgc2hhZGVyKQoreworICAgIGF1dG8gcHJvZ3JhbU9iamVjdCA9IG1SZXNvdXJjZU1h
bmFnZXItPmdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAgYXV0byBzaGFkZXJPYmplY3QgID0gbVJl
c291cmNlTWFuYWdlci0+Z2V0U2hhZGVyKHNoYWRlcik7CisgICAgQVNTRVJUKHByb2dyYW1PYmpl
Y3QgJiYgc2hhZGVyT2JqZWN0KTsKKyAgICBwcm9ncmFtT2JqZWN0LT5hdHRhY2hTaGFkZXIoc2hh
ZGVyT2JqZWN0KTsKK30KKworY29uc3QgV29ya2Fyb3VuZHMgJkNvbnRleHQ6OmdldFdvcmthcm91
bmRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVdvcmthcm91bmRzOworfQorCiB9ICAvLyBuYW1l
c3BhY2UgZ2wKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db250
ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L0NvbnRleHQuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTgsMTUgKzE4LDE3IEBA
CiAjaW5jbHVkZSAibGliQU5HTEUvUmVmQ291bnRPYmplY3QuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9DYXBzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvQ29uc3RhbnRzLmgiCi0jaW5jbHVkZSAibGli
QU5HTEUvRGF0YS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHRTdGF0ZS5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL0Vycm9yLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvSGFuZGxlQWxsb2NhdG9y
LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvVmVydGV4QXR0cmlidXRlLmgiCisjaW5jbHVkZSAibGli
QU5HTEUvV29ya2Fyb3VuZHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgiCiAK
IG5hbWVzcGFjZSByeAogewotY2xhc3MgUmVuZGVyZXI7CitjbGFzcyBDb250ZXh0SW1wbDsKK2Ns
YXNzIEVHTEltcGxGYWN0b3J5OwogfQogCiBuYW1lc3BhY2UgZWdsCkBAIC01Nyw5ICs1OSw5IEBA
CiBjbGFzcyBDb250ZXh0IGZpbmFsIDogcHVibGljIFZhbGlkYXRpb25Db250ZXh0CiB7CiAgIHB1
YmxpYzoKLSAgICBDb250ZXh0KGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcsCisgICAgQ29udGV4
dChyeDo6RUdMSW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LAorICAgICAgICAgICAgY29uc3QgZWds
OjpDb25maWcgKmNvbmZpZywKICAgICAgICAgICAgIGNvbnN0IENvbnRleHQgKnNoYXJlQ29udGV4
dCwKLSAgICAgICAgICAgIHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIsCiAgICAgICAgICAgICBjb25z
dCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicyk7CiAKICAgICB2aXJ0dWFsIH5Db250ZXh0KCk7
CkBAIC02Nyw5ICs2OSw2IEBACiAgICAgdm9pZCBtYWtlQ3VycmVudChlZ2w6OlN1cmZhY2UgKnN1
cmZhY2UpOwogICAgIHZvaWQgcmVsZWFzZVN1cmZhY2UoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBt
YXJrQ29udGV4dExvc3QoKTsKLSAgICBib29sIGlzQ29udGV4dExvc3QoKTsKLQogICAgIC8vIFRo
ZXNlIGNyZWF0ZSAgYW5kIGRlc3Ryb3kgbWV0aG9kcyBhcmUgbWVyZWx5IHBhc3MtdGhyb3VnaHMg
dG8KICAgICAvLyBSZXNvdXJjZU1hbmFnZXIsIHdoaWNoIG93bnMgdGhlc2Ugb2JqZWN0IHR5cGVz
CiAgICAgR0x1aW50IGNyZWF0ZUJ1ZmZlcigpOwpAQCAtODAsNiArNzksNyBAQAogICAgIEdMdWlu
dCBjcmVhdGVTYW1wbGVyKCk7CiAgICAgR0x1aW50IGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCk7
CiAgICAgR0xzeW5jIGNyZWF0ZUZlbmNlU3luYygpOworICAgIEdMdWludCBjcmVhdGVQYXRocyhH
THNpemVpIHJhbmdlKTsKIAogICAgIHZvaWQgZGVsZXRlQnVmZmVyKEdMdWludCBidWZmZXIpOwog
ICAgIHZvaWQgZGVsZXRlU2hhZGVyKEdMdWludCBzaGFkZXIpOwpAQCAtODksNyArODksMjEgQEAK
ICAgICB2b2lkIGRlbGV0ZVNhbXBsZXIoR0x1aW50IHNhbXBsZXIpOwogICAgIHZvaWQgZGVsZXRl
VHJhbnNmb3JtRmVlZGJhY2soR0x1aW50IHRyYW5zZm9ybUZlZWRiYWNrKTsKICAgICB2b2lkIGRl
bGV0ZUZlbmNlU3luYyhHTHN5bmMgZmVuY2VTeW5jKTsKKyAgICB2b2lkIGRlbGV0ZVBhdGhzKEdM
dWludCBmaXJzdCwgR0xzaXplaSByYW5nZSk7CiAKKyAgICAvLyBDSFJPTUlVTV9wYXRoX3JlbmRl
cmluZworICAgIGJvb2wgaGFzUGF0aERhdGEoR0x1aW50IHBhdGgpIGNvbnN0OworICAgIGJvb2wg
aGFzUGF0aChHTHVpbnQgcGF0aCkgY29uc3Q7CisgICAgdm9pZCBzZXRQYXRoQ29tbWFuZHMoR0x1
aW50IHBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1Db21tYW5kcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVieXRlICpjb21tYW5kcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUNvb3JkcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gY29vcmRUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHZvaWQgKmNvb3Jkcyk7CisgICAgdm9pZCBzZXRQYXRoUGFyYW1ldGVyZihHTHVpbnQgcGF0aCwg
R0xlbnVtIHBuYW1lLCBHTGZsb2F0IHZhbHVlKTsKKyAgICB2b2lkIGdldFBhdGhQYXJhbWV0ZXJm
dihHTHVpbnQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICp2YWx1ZSkgY29uc3Q7CisgICAg
dm9pZCBzZXRQYXRoU3RlbmNpbEZ1bmMoR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1h
c2spOworCiAgICAgLy8gRnJhbWVidWZmZXJzIGFyZSBvd25lZCBieSB0aGUgQ29udGV4dCwgc28g
dGhlc2UgbWV0aG9kcyBkbyBub3QgcGFzcyB0aHJvdWdoCiAgICAgR0x1aW50IGNyZWF0ZUZyYW1l
YnVmZmVyKCk7CiAgICAgdm9pZCBkZWxldGVGcmFtZWJ1ZmZlcihHTHVpbnQgZnJhbWVidWZmZXIp
OwpAQCAtMTM1LDI1ICsxNDksMjYgQEAKICAgICBFcnJvciBlbmRRdWVyeShHTGVudW0gdGFyZ2V0
KTsKICAgICBFcnJvciBxdWVyeUNvdW50ZXIoR0x1aW50IGlkLCBHTGVudW0gdGFyZ2V0KTsKICAg
ICB2b2lkIGdldFF1ZXJ5aXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFy
YW1zKTsKLSAgICBFcnJvciBnZXRRdWVyeU9iamVjdGl2KEdMdWludCBpZCwgR0xlbnVtIHBuYW1l
LCBHTGludCAqcGFyYW1zKTsKLSAgICBFcnJvciBnZXRRdWVyeU9iamVjdHVpdihHTHVpbnQgaWQs
IEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMpOwotICAgIEVycm9yIGdldFF1ZXJ5T2JqZWN0
aTY0dihHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAqcGFyYW1zKTsKLSAgICBFcnJv
ciBnZXRRdWVyeU9iamVjdHVpNjR2KEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQ2NCAq
cGFyYW1zKTsKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0aXYoR0x1aW50IGlkLCBHTGVudW0gcG5h
bWUsIEdMaW50ICpwYXJhbXMpOworICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXYoR0x1aW50IGlk
LCBHTGVudW0gcG5hbWUsIEdMdWludCAqcGFyYW1zKTsKKyAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0
aTY0dihHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAqcGFyYW1zKTsKKyAgICB2b2lk
IGdldFF1ZXJ5T2JqZWN0dWk2NHYoR0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMdWludDY0ICpw
YXJhbXMpOwogCiAgICAgdm9pZCBzZXRWZXJ0ZXhBdHRyaWJEaXZpc29yKEdMdWludCBpbmRleCwg
R0x1aW50IGRpdmlzb3IpOwogCiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaShHTHVpbnQgc2Ft
cGxlciwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1l
dGVyaXYoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtKTsK
ICAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmKEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUs
IEdMZmxvYXQgcGFyYW0pOwotICAgIEdMaW50IGdldFNhbXBsZXJQYXJhbWV0ZXJpKEdMdWludCBz
YW1wbGVyLCBHTGVudW0gcG5hbWUpOwotICAgIEdMZmxvYXQgZ2V0U2FtcGxlclBhcmFtZXRlcmYo
R0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSk7CisgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVy
ZnYoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW0pOwog
CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXYoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBw
bmFtZSwgR0xpbnQgKnBhcmFtcyk7CisgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnYoR0x1
aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKKwogICAgIHZvaWQg
cHJvZ3JhbVBhcmFtZXRlcmkoR0x1aW50IHByb2dyYW0sIEdMZW51bSBwbmFtZSwgR0xpbnQgdmFs
dWUpOwogCiAgICAgQnVmZmVyICpnZXRCdWZmZXIoR0x1aW50IGhhbmRsZSkgY29uc3Q7CiAgICAg
RmVuY2VOViAqZ2V0RmVuY2VOVihHTHVpbnQgaGFuZGxlKTsKICAgICBGZW5jZVN5bmMgKmdldEZl
bmNlU3luYyhHTHN5bmMgaGFuZGxlKSBjb25zdDsKLSAgICBTaGFkZXIgKmdldFNoYWRlcihHTHVp
bnQgaGFuZGxlKSBjb25zdDsKLSAgICBQcm9ncmFtICpnZXRQcm9ncmFtKEdMdWludCBoYW5kbGUp
IGNvbnN0OwogICAgIFRleHR1cmUgKmdldFRleHR1cmUoR0x1aW50IGhhbmRsZSkgY29uc3Q7CiAg
ICAgRnJhbWVidWZmZXIgKmdldEZyYW1lYnVmZmVyKEdMdWludCBoYW5kbGUpIGNvbnN0OwogICAg
IFJlbmRlcmJ1ZmZlciAqZ2V0UmVuZGVyYnVmZmVyKEdMdWludCBoYW5kbGUpIGNvbnN0OwpAQCAt
MTYyLDggKzE3NywxNCBAQAogICAgIFF1ZXJ5ICpnZXRRdWVyeShHTHVpbnQgaGFuZGxlLCBib29s
IGNyZWF0ZSwgR0xlbnVtIHR5cGUpOwogICAgIFF1ZXJ5ICpnZXRRdWVyeShHTHVpbnQgaGFuZGxl
KSBjb25zdDsKICAgICBUcmFuc2Zvcm1GZWVkYmFjayAqZ2V0VHJhbnNmb3JtRmVlZGJhY2soR0x1
aW50IGhhbmRsZSkgY29uc3Q7Ci0gICAgTGFiZWxlZE9iamVjdCAqZ2V0TGFiZWxlZE9iamVjdChH
TGVudW0gaWRlbnRpZmllciwgR0x1aW50IG5hbWUpIGNvbnN0OwotICAgIExhYmVsZWRPYmplY3Qg
KmdldExhYmVsZWRPYmplY3RGcm9tUHRyKGNvbnN0IHZvaWQgKnB0cikgY29uc3Q7CisgICAgdm9p
ZCBvYmplY3RMYWJlbChHTGVudW0gaWRlbnRpZmllciwgR0x1aW50IG5hbWUsIEdMc2l6ZWkgbGVu
Z3RoLCBjb25zdCBHTGNoYXIgKmxhYmVsKTsKKyAgICB2b2lkIG9iamVjdFB0ckxhYmVsKGNvbnN0
IHZvaWQgKnB0ciwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdMY2hhciAqbGFiZWwpOworICAgIHZv
aWQgZ2V0T2JqZWN0TGFiZWwoR0xlbnVtIGlkZW50aWZpZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEdMY2hhciAqbGFiZWwpIGNvbnN0OworICAgIHZvaWQgZ2V0T2JqZWN0UHRy
TGFiZWwoY29uc3Qgdm9pZCAqcHRyLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwg
R0xjaGFyICpsYWJlbCkgY29uc3Q7CiAKICAgICBUZXh0dXJlICpnZXRUYXJnZXRUZXh0dXJlKEdM
ZW51bSB0YXJnZXQpIGNvbnN0OwogICAgIFRleHR1cmUgKmdldFNhbXBsZXJUZXh0dXJlKHVuc2ln
bmVkIGludCBzYW1wbGVyLCBHTGVudW0gdHlwZSkgY29uc3Q7CkBAIC0xNzIsNiArMTkzLDEwIEBA
CiAKICAgICBib29sIGlzU2FtcGxlcihHTHVpbnQgc2FtcGxlck5hbWUpIGNvbnN0OwogCisgICAg
Ym9vbCBpc1RleHR1cmVHZW5lcmF0ZWQoR0x1aW50IHRleHR1cmUpIGNvbnN0OworICAgIGJvb2wg
aXNCdWZmZXJHZW5lcmF0ZWQoR0x1aW50IGJ1ZmZlcikgY29uc3Q7CisgICAgYm9vbCBpc1JlbmRl
cmJ1ZmZlckdlbmVyYXRlZChHTHVpbnQgcmVuZGVyYnVmZmVyKSBjb25zdDsKKyAgICBib29sIGlz
RnJhbWVidWZmZXJHZW5lcmF0ZWQoR0x1aW50IGZyYW1lYnVmZmVyKSBjb25zdDsKICAgICBib29s
IGlzVmVydGV4QXJyYXlHZW5lcmF0ZWQoR0x1aW50IHZlcnRleEFycmF5KTsKICAgICBib29sIGlz
VHJhbnNmb3JtRmVlZGJhY2tHZW5lcmF0ZWQoR0x1aW50IHZlcnRleEFycmF5KTsKIApAQCAtMTgw
LDEzICsyMDUsODYgQEAKICAgICB2b2lkIGdldEludGVnZXJ2KEdMZW51bSBwbmFtZSwgR0xpbnQg
KnBhcmFtcyk7CiAgICAgdm9pZCBnZXRJbnRlZ2VyNjR2KEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAq
cGFyYW1zKTsKICAgICB2b2lkIGdldFBvaW50ZXJ2KEdMZW51bSBwbmFtZSwgdm9pZCAqKnBhcmFt
cykgY29uc3Q7CisgICAgdm9pZCBnZXRCb29sZWFuaV92KEdMZW51bSB0YXJnZXQsIEdMdWludCBp
bmRleCwgR0xib29sZWFuICpkYXRhKTsKKyAgICB2b2lkIGdldEludGVnZXJpX3YoR0xlbnVtIHRh
cmdldCwgR0x1aW50IGluZGV4LCBHTGludCAqZGF0YSk7CisgICAgdm9pZCBnZXRJbnRlZ2VyNjRp
X3YoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGludDY0ICpkYXRhKTsKIAotICAgIGJv
b2wgZ2V0SW5kZXhlZEludGVnZXJ2KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xpbnQg
KmRhdGEpOwotICAgIGJvb2wgZ2V0SW5kZXhlZEludGVnZXI2NHYoR0xlbnVtIHRhcmdldCwgR0x1
aW50IGluZGV4LCBHTGludDY0ICpkYXRhKTsKKyAgICB2b2lkIGFjdGl2ZVRleHR1cmUoR0xlbnVt
IHRleHR1cmUpOworICAgIHZvaWQgYmxlbmRDb2xvcihHTGNsYW1wZiByZWQsIEdMY2xhbXBmIGdy
ZWVuLCBHTGNsYW1wZiBibHVlLCBHTGNsYW1wZiBhbHBoYSk7CisgICAgdm9pZCBibGVuZEVxdWF0
aW9uU2VwYXJhdGUoR0xlbnVtIG1vZGVSR0IsIEdMZW51bSBtb2RlQWxwaGEpOworICAgIHZvaWQg
YmxlbmRGdW5jU2VwYXJhdGUoR0xlbnVtIHNyY1JHQiwgR0xlbnVtIGRzdFJHQiwgR0xlbnVtIHNy
Y0FscGhhLCBHTGVudW0gZHN0QWxwaGEpOworICAgIHZvaWQgY2xlYXJDb2xvcihHTGNsYW1wZiBy
ZWQsIEdMY2xhbXBmIGdyZWVuLCBHTGNsYW1wZiBibHVlLCBHTGNsYW1wZiBhbHBoYSk7CisgICAg
dm9pZCBjbGVhckRlcHRoZihHTGNsYW1wZiBkZXB0aCk7CisgICAgdm9pZCBjbGVhclN0ZW5jaWwo
R0xpbnQgcyk7CisgICAgdm9pZCBjb2xvck1hc2soR0xib29sZWFuIHJlZCwgR0xib29sZWFuIGdy
ZWVuLCBHTGJvb2xlYW4gYmx1ZSwgR0xib29sZWFuIGFscGhhKTsKKyAgICB2b2lkIGN1bGxGYWNl
KEdMZW51bSBtb2RlKTsKKyAgICB2b2lkIGRlcHRoRnVuYyhHTGVudW0gZnVuYyk7CisgICAgdm9p
ZCBkZXB0aE1hc2soR0xib29sZWFuIGZsYWcpOworICAgIHZvaWQgZGVwdGhSYW5nZWYoR0xjbGFt
cGYgek5lYXIsIEdMY2xhbXBmIHpGYXIpOworICAgIHZvaWQgZGlzYWJsZShHTGVudW0gY2FwKTsK
KyAgICB2b2lkIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHTHVpbnQgaW5kZXgpOworICAgIHZv
aWQgZW5hYmxlKEdMZW51bSBjYXApOworICAgIHZvaWQgZW5hYmxlVmVydGV4QXR0cmliQXJyYXko
R0x1aW50IGluZGV4KTsKKyAgICB2b2lkIGZyb250RmFjZShHTGVudW0gbW9kZSk7CisgICAgdm9p
ZCBoaW50KEdMZW51bSB0YXJnZXQsIEdMZW51bSBtb2RlKTsKKyAgICB2b2lkIGxpbmVXaWR0aChH
TGZsb2F0IHdpZHRoKTsKKyAgICB2b2lkIHBpeGVsU3RvcmVpKEdMZW51bSBwbmFtZSwgR0xpbnQg
cGFyYW0pOworICAgIHZvaWQgcG9seWdvbk9mZnNldChHTGZsb2F0IGZhY3RvciwgR0xmbG9hdCB1
bml0cyk7CisgICAgdm9pZCBzYW1wbGVDb3ZlcmFnZShHTGNsYW1wZiB2YWx1ZSwgR0xib29sZWFu
IGludmVydCk7CisgICAgdm9pZCBzY2lzc29yKEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0KTsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jU2VwYXJhdGUoR0xlbnVt
IGZhY2UsIEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKTsKKyAgICB2b2lkIHN0
ZW5jaWxNYXNrU2VwYXJhdGUoR0xlbnVtIGZhY2UsIEdMdWludCBtYXNrKTsKKyAgICB2b2lkIHN0
ZW5jaWxPcFNlcGFyYXRlKEdMZW51bSBmYWNlLCBHTGVudW0gZmFpbCwgR0xlbnVtIHpmYWlsLCBH
TGVudW0genBhc3MpOworICAgIHZvaWQgdmVydGV4QXR0cmliMWYoR0x1aW50IGluZGV4LCBHTGZs
b2F0IHgpOworICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2KEdMdWludCBpbmRleCwgY29uc3QgR0xm
bG9hdCAqdmFsdWVzKTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjJmKEdMdWludCBpbmRleCwgR0xm
bG9hdCB4LCBHTGZsb2F0IHkpOworICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KEdMdWludCBpbmRl
eCwgY29uc3QgR0xmbG9hdCAqdmFsdWVzKTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjNmKEdMdWlu
dCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CisgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWIzZnYoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2YWx1ZXMpOworICAgIHZv
aWQgdmVydGV4QXR0cmliNGYoR0x1aW50IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xm
bG9hdCB6LCBHTGZsb2F0IHcpOworICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2KEdMdWludCBpbmRl
eCwgY29uc3QgR0xmbG9hdCAqdmFsdWVzKTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIo
R0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzaXplLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xib29sZWFuIG5vcm1hbGl6ZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHZvaWQgKnB0cik7CisgICAgdm9pZCB2aWV3cG9ydChHTGludCB4LCBHTGludCB5LCBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CiAKLSAgICBib29sIGdldFF1ZXJ5UGFyYW1l
dGVySW5mbyhHTGVudW0gcG5hbWUsIEdMZW51bSAqdHlwZSwgdW5zaWduZWQgaW50ICpudW1QYXJh
bXMpOwotICAgIGJvb2wgZ2V0SW5kZXhlZFF1ZXJ5UGFyYW1ldGVySW5mbyhHTGVudW0gdGFyZ2V0
LCBHTGVudW0gKnR5cGUsIHVuc2lnbmVkIGludCAqbnVtUGFyYW1zKTsKKyAgICB2b2lkIHZlcnRl
eEF0dHJpYklQb2ludGVyKEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwb2ludGVyKTsKKyAgICB2b2lk
IHZlcnRleEF0dHJpYkk0aShHTHVpbnQgaW5kZXgsIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHos
IEdMaW50IHcpOworICAgIHZvaWQgdmVydGV4QXR0cmliSTR1aShHTHVpbnQgaW5kZXgsIEdMdWlu
dCB4LCBHTHVpbnQgeSwgR0x1aW50IHosIEdMdWludCB3KTsKKyAgICB2b2lkIHZlcnRleEF0dHJp
Ykk0aXYoR0x1aW50IGluZGV4LCBjb25zdCBHTGludCAqdik7CisgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWJJNHVpdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMdWludCAqdik7CiAKKyAgICB2b2lkIGRlYnVn
TWVzc2FnZUNvbnRyb2woR0xlbnVtIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzZXZl
cml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICppZHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBlbmFibGVkKTsKKyAgICB2b2lkIGRlYnVnTWVzc2Fn
ZUluc2VydChHTGVudW0gc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gc2V2ZXJpdHksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xjaGFyICpidWYpOworICAgIHZvaWQgZGVidWdNZXNzYWdlQ2FsbGJhY2soR0xERUJVR1BS
T0NLSFIgY2FsbGJhY2ssIGNvbnN0IHZvaWQgKnVzZXJQYXJhbSk7CisgICAgR0x1aW50IGdldERl
YnVnTWVzc2FnZUxvZyhHTHVpbnQgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
KnNvdXJjZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKnR5cGVzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICppZHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gKnNldmVyaXRpZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpICpsZW5ndGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xjaGFyICptZXNzYWdlTG9nKTsKKyAgICB2b2lkIHB1c2hEZWJ1Z0dyb3VwKEdMZW51bSBz
b3VyY2UsIEdMdWludCBpZCwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdMY2hhciAqbWVzc2FnZSk7
CisgICAgdm9pZCBwb3BEZWJ1Z0dyb3VwKCk7CisKICAgICB2b2lkIGNsZWFyKEdMYml0ZmllbGQg
bWFzayk7CiAgICAgdm9pZCBjbGVhckJ1ZmZlcmZ2KEdMZW51bSBidWZmZXIsIEdMaW50IGRyYXdi
dWZmZXIsIGNvbnN0IEdMZmxvYXQgKnZhbHVlcyk7CiAgICAgdm9pZCBjbGVhckJ1ZmZlcnVpdihH
TGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHTHVpbnQgKnZhbHVlcyk7CkBA
IC0zNjgsNyArNDY2LDMwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbWFn
ZVNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmRh
dGEpOworICAgIHZvaWQgY29weVRleHR1cmVDSFJPTUlVTShHTHVpbnQgc291cmNlSWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBkZXN0SWQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZGVzdFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Ym9vbGVhbiB1bnBhY2tGbGlwWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIHVucGFja1ByZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMYm9vbGVhbiB1bnBhY2tVbm11bHRpcGx5QWxwaGEpOworICAgIHZvaWQgY29weVN1YlRleHR1
cmVDSFJPTUlVTShHTHVpbnQgc291cmNlSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBkZXN0SWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHhvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHlvZmZzZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5w
YWNrRmxpcFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBh
Y2tQcmVtdWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJv
b2xlYW4gdW5wYWNrVW5tdWx0aXBseUFscGhhKTsKKyAgICB2b2lkIGNvbXByZXNzZWRDb3B5VGV4
dHVyZUNIUk9NSVVNKEdMdWludCBzb3VyY2VJZCwgR0x1aW50IGRlc3RJZCk7CiAKKyAgICB2b2lk
IGdlbmVyYXRlTWlwbWFwKEdMZW51bSB0YXJnZXQpOworCisgICAgR0xib29sZWFuIGVuYWJsZUV4
dGVuc2lvbihjb25zdCBjaGFyICpuYW1lKTsKKwogICAgIEVycm9yIGZsdXNoKCk7CiAgICAgRXJy
b3IgZmluaXNoKCk7CiAKQEAgLTM4NiwyNiArNTA3LDEwMCBAQAogICAgIHZvaWQgcHVzaEdyb3Vw
TWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpOwogICAgIHZvaWQgcG9w
R3JvdXBNYXJrZXIoKTsKIAotICAgIHZvaWQgcmVjb3JkRXJyb3IoY29uc3QgRXJyb3IgJmVycm9y
KSBvdmVycmlkZTsKKyAgICB2b2lkIGJpbmRVbmlmb3JtTG9jYXRpb24oR0x1aW50IHByb2dyYW0s
IEdMaW50IGxvY2F0aW9uLCBjb25zdCBHTGNoYXIgKm5hbWUpOwogCisgICAgLy8gQ0hST01JVU1f
ZnJhbWVidWZmZXJfbWl4ZWRfc2FtcGxlcworICAgIHZvaWQgc2V0Q292ZXJhZ2VNb2R1bGF0aW9u
KEdMZW51bSBjb21wb25lbnRzKTsKKworICAgIC8vIENIUk9NSVVNX3BhdGhfcmVuZGVyaW5nCisg
ICAgdm9pZCBsb2FkUGF0aFJlbmRlcmluZ01hdHJpeChHTGVudW0gbWF0cml4TW9kZSwgY29uc3Qg
R0xmbG9hdCAqbWF0cml4KTsKKyAgICB2b2lkIGxvYWRQYXRoUmVuZGVyaW5nSWRlbnRpdHlNYXRy
aXgoR0xlbnVtIG1hdHJpeE1vZGUpOworICAgIHZvaWQgc3RlbmNpbEZpbGxQYXRoKEdMdWludCBw
YXRoLCBHTGVudW0gZmlsbE1vZGUsIEdMdWludCBtYXNrKTsKKyAgICB2b2lkIHN0ZW5jaWxTdHJv
a2VQYXRoKEdMdWludCBwYXRoLCBHTGludCByZWZlcmVuY2UsIEdMdWludCBtYXNrKTsKKyAgICB2
b2lkIGNvdmVyRmlsbFBhdGgoR0x1aW50IHBhdGgsIEdMZW51bSBjb3Zlck1vZGUpOworICAgIHZv
aWQgY292ZXJTdHJva2VQYXRoKEdMdWludCBwYXRoLCBHTGVudW0gY292ZXJNb2RlKTsKKyAgICB2
b2lkIHN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aChHTHVpbnQgcGF0aCwgR0xlbnVtIGZpbGxNb2Rl
LCBHTHVpbnQgbWFzaywgR0xlbnVtIGNvdmVyTW9kZSk7CisgICAgdm9pZCBzdGVuY2lsVGhlbkNv
dmVyU3Ryb2tlUGF0aChHTHVpbnQgcGF0aCwgR0xpbnQgcmVmZXJlbmNlLCBHTHVpbnQgbWFzaywg
R0xlbnVtIGNvdmVyTW9kZSk7CisgICAgdm9pZCBjb3ZlckZpbGxQYXRoSW5zdGFuY2VkKEdMc2l6
ZWkgbnVtUGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRo
TmFtZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBh
dGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwor
ICAgIHZvaWQgY292ZXJTdHJva2VQYXRoSW5zdGFuY2VkKEdMc2l6ZWkgbnVtUGF0aHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOworICAgIHZv
aWQgc3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkKEdMc2l6ZWkgbnVtUGF0aHMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJBc2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7CisgICAgdm9pZCBzdGVuY2lsU3Ryb2tl
UGF0aEluc3RhbmNlZChHTHNpemVpIG51bVBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7CisgICAgdm9pZCBzdGVuY2lsVGhlbkNv
dmVyRmlsbFBhdGhJbnN0YW5jZWQoR0xzaXplaSBudW1QYXRocywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1v
ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1h
c2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNv
dmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOworICAgIHZvaWQgc3RlbmNpbFRo
ZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWQoR0xzaXplaSBudW1QYXRocywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpw
YXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBwYXRoQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IHJlZmVyZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVz
KTsKKyAgICB2b2lkIGJpbmRGcmFnbWVudElucHV0TG9jYXRpb24oR0x1aW50IHByb2dyYW0sIEdM
aW50IGxvY2F0aW9uLCBjb25zdCBHTGNoYXIgKm5hbWUpOworICAgIHZvaWQgcHJvZ3JhbVBhdGhG
cmFnbWVudElucHV0R2VuKEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBnZW5Nb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGNvbXBvbmVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xmbG9hdCAqY29lZmZzKTsKKworICAgIHZvaWQgYnVmZmVyRGF0YShHTGVu
dW0gdGFyZ2V0LCBHTHNpemVpcHRyIHNpemUsIGNvbnN0IEdMdm9pZCAqZGF0YSwgR0xlbnVtIHVz
YWdlKTsKKyAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0xlbnVtIHRhcmdldCwgR0xpbnRwdHIgb2Zm
c2V0LCBHTHNpemVpcHRyIHNpemUsIGNvbnN0IEdMdm9pZCAqZGF0YSk7CisgICAgdm9pZCBhdHRh
Y2hTaGFkZXIoR0x1aW50IHByb2dyYW0sIEdMdWludCBzaGFkZXIpOworCisgICAgdm9pZCBoYW5k
bGVFcnJvcihjb25zdCBFcnJvciAmZXJyb3IpIG92ZXJyaWRlOworCiAgICAgR0xlbnVtIGdldEVy
cm9yKCk7CisgICAgdm9pZCBtYXJrQ29udGV4dExvc3QoKTsKKyAgICBib29sIGlzQ29udGV4dExv
c3QoKTsKICAgICBHTGVudW0gZ2V0UmVzZXRTdGF0dXMoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNS
ZXNldE5vdGlmaWNhdGlvbkVuYWJsZWQoKTsKKyAgICBib29sIGlzUmVzZXROb3RpZmljYXRpb25F
bmFibGVkKCk7CiAKICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqZ2V0Q29uZmlnKCkgY29uc3Q7CiAg
ICAgRUdMZW51bSBnZXRDbGllbnRUeXBlKCkgY29uc3Q7CiAgICAgRUdMZW51bSBnZXRSZW5kZXJC
dWZmZXIoKSBjb25zdDsKIAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZnZXRSZW5kZXJlclN0cmlu
ZygpIGNvbnN0OworICAgIGNvbnN0IGNoYXIgKmdldFJlbmRlcmVyU3RyaW5nKCkgY29uc3Q7CiAK
LSAgICBjb25zdCBzdGQ6OnN0cmluZyAmZ2V0RXh0ZW5zaW9uU3RyaW5nKCkgY29uc3Q7Ci0gICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJmdldEV4dGVuc2lvblN0cmluZyhzaXplX3QgaWR4KSBjb25zdDsK
KyAgICBjb25zdCBjaGFyICpnZXRFeHRlbnNpb25TdHJpbmcoKSBjb25zdDsKKyAgICBjb25zdCBj
aGFyICpnZXRFeHRlbnNpb25TdHJpbmcoc2l6ZV90IGlkeCkgY29uc3Q7CiAgICAgc2l6ZV90IGdl
dEV4dGVuc2lvblN0cmluZ0NvdW50KCkgY29uc3Q7CiAKLSAgICByeDo6UmVuZGVyZXIgKmdldFJl
bmRlcmVyKCkgeyByZXR1cm4gbVJlbmRlcmVyOyB9CisgICAgcng6OkNvbnRleHRJbXBsICpnZXRJ
bXBsZW1lbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1JbXBsZW1lbnRhdGlvbi5nZXQoKTsgfQor
ICAgIGNvbnN0IFdvcmthcm91bmRzICZnZXRXb3JrYXJvdW5kcygpIGNvbnN0OwogCi0gICAgU3Rh
dGUgJmdldFN0YXRlKCkgeyByZXR1cm4gbVN0YXRlOyB9Ci0KICAgcHJpdmF0ZToKICAgICB2b2lk
IHN5bmNSZW5kZXJlclN0YXRlKCk7CiAgICAgdm9pZCBzeW5jUmVuZGVyZXJTdGF0ZShjb25zdCBT
dGF0ZTo6RGlydHlCaXRzICZiaXRNYXNrLCBjb25zdCBTdGF0ZTo6RGlydHlPYmplY3RzICZvYmpl
Y3RNYXNrKTsKQEAgLTQyOCw4ICs2MjMsMTUgQEAKICAgICB2b2lkIGluaXRSZW5kZXJlclN0cmlu
ZygpOwogICAgIHZvaWQgaW5pdEV4dGVuc2lvblN0cmluZ3MoKTsKIAotICAgIHZvaWQgaW5pdENh
cHMoR0x1aW50IGNsaWVudFZlcnNpb24pOworICAgIHZvaWQgaW5pdENhcHMoYm9vbCB3ZWJHTENv
bnRleHQpOworICAgIHZvaWQgdXBkYXRlQ2FwcygpOworICAgIHZvaWQgaW5pdFdvcmthcm91bmRz
KCk7CiAKKyAgICBMYWJlbGVkT2JqZWN0ICpnZXRMYWJlbGVkT2JqZWN0KEdMZW51bSBpZGVudGlm
aWVyLCBHTHVpbnQgbmFtZSkgY29uc3Q7CisgICAgTGFiZWxlZE9iamVjdCAqZ2V0TGFiZWxlZE9i
amVjdEZyb21QdHIoY29uc3Qgdm9pZCAqcHRyKSBjb25zdDsKKworICAgIHN0ZDo6dW5pcXVlX3B0
cjxyeDo6Q29udGV4dEltcGw+IG1JbXBsZW1lbnRhdGlvbjsKKwogICAgIC8vIENhcHMgdG8gdXNl
IGZvciB2YWxpZGF0aW9uCiAgICAgQ2FwcyBtQ2FwczsKICAgICBUZXh0dXJlQ2Fwc01hcCBtVGV4
dHVyZUNhcHM7CkBAIC00MzksMTAgKzY0MSwxMCBAQAogICAgIC8vIFNoYWRlciBjb21waWxlcgog
ICAgIENvbXBpbGVyICptQ29tcGlsZXI7CiAKLSAgICByeDo6UmVuZGVyZXIgKmNvbnN0IG1SZW5k
ZXJlcjsKLSAgICBTdGF0ZSBtU3RhdGU7CisgICAgU3RhdGUgbUdMU3RhdGU7CiAKLSAgICBpbnQg
bUNsaWVudFZlcnNpb247CisgICAgaW50IG1DbGllbnRNYWpvclZlcnNpb247CisgICAgaW50IG1D
bGllbnRNaW5vclZlcnNpb247CiAKICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqbUNvbmZpZzsKICAg
ICBFR0xlbnVtIG1DbGllbnRUeXBlOwpAQCAtNDY0LDkgKzY2Niw5IEBACiAgICAgUmVzb3VyY2VN
YXA8VHJhbnNmb3JtRmVlZGJhY2s+IG1UcmFuc2Zvcm1GZWVkYmFja01hcDsKICAgICBIYW5kbGVB
bGxvY2F0b3IgbVRyYW5zZm9ybUZlZWRiYWNrQWxsb2NhdG9yOwogCi0gICAgc3RkOjpzdHJpbmcg
bVJlbmRlcmVyU3RyaW5nOwotICAgIHN0ZDo6c3RyaW5nIG1FeHRlbnNpb25TdHJpbmc7Ci0gICAg
c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IG1FeHRlbnNpb25TdHJpbmdzOworICAgIGNvbnN0IGNo
YXIgKm1SZW5kZXJlclN0cmluZzsKKyAgICBjb25zdCBjaGFyICptRXh0ZW5zaW9uU3RyaW5nOwor
ICAgIHN0ZDo6dmVjdG9yPGNvbnN0IGNoYXIgKj4gbUV4dGVuc2lvblN0cmluZ3M7CiAKICAgICAv
LyBSZWNvcmRlZCBlcnJvcnMKICAgICB0eXBlZGVmIHN0ZDo6c2V0PEdMZW51bT4gRXJyb3JTZXQ7
CkBAIC00NzYsNiArNjc4LDcgQEAKICAgICBib29sIG1IYXNCZWVuQ3VycmVudDsKICAgICBib29s
IG1Db250ZXh0TG9zdDsKICAgICBHTGVudW0gbVJlc2V0U3RhdHVzOworICAgIGJvb2wgbUNvbnRl
eHRMb3N0Rm9yY2VkOwogICAgIEdMZW51bSBtUmVzZXRTdHJhdGVneTsKICAgICBib29sIG1Sb2J1
c3RBY2Nlc3M7CiAgICAgZWdsOjpTdXJmYWNlICptQ3VycmVudFN1cmZhY2U7CkBAIC00OTAsNiAr
NjkzLDggQEAKICAgICBTdGF0ZTo6RGlydHlPYmplY3RzIG1DbGVhckRpcnR5T2JqZWN0czsKICAg
ICBTdGF0ZTo6RGlydHlCaXRzIG1CbGl0RGlydHlCaXRzOwogICAgIFN0YXRlOjpEaXJ0eU9iamVj
dHMgbUJsaXREaXJ0eU9iamVjdHM7CisKKyAgICBXb3JrYXJvdW5kcyBtV29ya2Fyb3VuZHM7CiB9
OwogCiB9ICAvLyBuYW1lc3BhY2UgZ2wKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9Db250ZXh0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0U3RhdGUuY3BwCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0U3RhdGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTg5IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE0
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gRGF0YS5j
cHA6IENvbnRhaW5lciBjbGFzcyBmb3IgYWxsIEdMIHJlbGV2YW50IHN0YXRlLCBjYXBzIGFuZCBv
YmplY3RzCisKKyNpbmNsdWRlICJsaWJBTkdMRS9Db250ZXh0U3RhdGUuaCIKKworI2luY2x1ZGUg
ImxpYkFOR0xFL0ZyYW1lYnVmZmVyLmgiCisjaW5jbHVkZSAibGliQU5HTEUvUmVzb3VyY2VNYW5h
Z2VyLmgiCisKK25hbWVzcGFjZSBnbAoreworCitDb250ZXh0U3RhdGU6OkNvbnRleHRTdGF0ZSh1
aW50cHRyX3QgY29udGV4dEluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY2xp
ZW50TWFqb3JWZXJzaW9uSW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBjbGll
bnRNaW5vclZlcnNpb25JbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlICpzdGF0
ZUluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ2FwcyAmY2Fwc0luLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGV4dHVyZUNhcHNNYXAgJnRleHR1cmVDYXBz
SW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFeHRlbnNpb25zICZleHRlbnNp
b25zSW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZXNvdXJjZU1hbmFnZXIg
KnJlc291cmNlTWFuYWdlckluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGlt
aXRhdGlvbnMgJmxpbWl0YXRpb25zSW4pCisgICAgOiBtR0xWZXJzaW9uKGNsaWVudE1ham9yVmVy
c2lvbkluLCBjbGllbnRNaW5vclZlcnNpb25JbiksCisgICAgICBtQ29udGV4dChjb250ZXh0SW4p
LAorICAgICAgbVN0YXRlKHN0YXRlSW4pLAorICAgICAgbUNhcHMoY2Fwc0luKSwKKyAgICAgIG1U
ZXh0dXJlQ2Fwcyh0ZXh0dXJlQ2Fwc0luKSwKKyAgICAgIG1FeHRlbnNpb25zKGV4dGVuc2lvbnNJ
biksCisgICAgICBtUmVzb3VyY2VNYW5hZ2VyKHJlc291cmNlTWFuYWdlckluKSwKKyAgICAgIG1M
aW1pdGF0aW9ucyhsaW1pdGF0aW9uc0luKQoreworfQorCitDb250ZXh0U3RhdGU6On5Db250ZXh0
U3RhdGUoKQoreworfQorCitjb25zdCBUZXh0dXJlQ2FwcyAmQ29udGV4dFN0YXRlOjpnZXRUZXh0
dXJlQ2FwKEdMZW51bSBpbnRlcm5hbEZvcm1hdCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVRleHR1
cmVDYXBzLmdldChpbnRlcm5hbEZvcm1hdCk7Cit9CisKK1ZhbGlkYXRpb25Db250ZXh0OjpWYWxp
ZGF0aW9uQ29udGV4dChHTGludCBjbGllbnRNYWpvclZlcnNpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY2xpZW50TWlub3JWZXJzaW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlICpzdGF0ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDYXBzICZjYXBzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRleHR1cmVDYXBzTWFwICZ0ZXh0dXJlQ2FwcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFeHRlbnNpb25zICZl
eHRlbnNpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJl
c291cmNlTWFuYWdlciAqcmVzb3VyY2VNYW5hZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IExpbWl0YXRpb25zICZsaW1pdGF0aW9ucywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNraXBWYWxpZGF0aW9uKQorICAgIDogbVN0
YXRlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSwKKyAgICAgICAgICAgICBjbGll
bnRNYWpvclZlcnNpb24sCisgICAgICAgICAgICAgY2xpZW50TWlub3JWZXJzaW9uLAorICAgICAg
ICAgICAgIHN0YXRlLAorICAgICAgICAgICAgIGNhcHMsCisgICAgICAgICAgICAgdGV4dHVyZUNh
cHMsCisgICAgICAgICAgICAgZXh0ZW5zaW9ucywKKyAgICAgICAgICAgICByZXNvdXJjZU1hbmFn
ZXIsCisgICAgICAgICAgICAgbGltaXRhdGlvbnMpLAorICAgICAgbVNraXBWYWxpZGF0aW9uKHNr
aXBWYWxpZGF0aW9uKQoreworfQorCitib29sIFZhbGlkYXRpb25Db250ZXh0OjpnZXRRdWVyeVBh
cmFtZXRlckluZm8oR0xlbnVtIHBuYW1lLCBHTGVudW0gKnR5cGUsIHVuc2lnbmVkIGludCAqbnVt
UGFyYW1zKQoreworICAgIGlmIChwbmFtZSA+PSBHTF9EUkFXX0JVRkZFUjBfRVhUICYmIHBuYW1l
IDw9IEdMX0RSQVdfQlVGRkVSMTVfRVhUKQorICAgIHsKKyAgICAgICAgKnR5cGUgICAgICA9IEdM
X0lOVDsKKyAgICAgICAgKm51bVBhcmFtcyA9IDE7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIC8vIFBsZWFzZSBub3RlOiB0aGUgcXVlcnkgdHlwZSByZXR1cm5lZCBmb3IgREVQ
VEhfQ0xFQVJfVkFMVUUgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbgorICAgIC8vIGlzIEZMT0FUIHJh
dGhlciB0aGFuIElOVCwgYXMgd291bGQgYmUgc3VnZ2VzdGVkIGJ5IHRoZSBHTCBFUyAyLjAgc3Bl
Yy4gVGhpcyBpcyBkdWUKKyAgICAvLyB0byB0aGUgZmFjdCB0aGF0IGl0IGlzIHN0b3JlZCBpbnRl
cm5hbGx5IGFzIGEgZmxvYXQsIGFuZCBzbyB3b3VsZCByZXF1aXJlIGNvbnZlcnNpb24KKyAgICAv
LyBpZiByZXR1cm5lZCBmcm9tIENvbnRleHQ6OmdldEludGVnZXJ2LiBTaW5jZSB0aGlzIGNvbnZl
cnNpb24gaXMgYWxyZWFkeSBpbXBsZW1lbnRlZAorICAgIC8vIGluIHRoZSBjYXNlIHRoYXQgb25l
IGNhbGxzIGdsR2V0SW50ZWdlcnYgdG8gcmV0cmlldmUgYSBmbG9hdC10eXBlZCBzdGF0ZSB2YXJp
YWJsZSwgd2UKKyAgICAvLyBwbGFjZSBERVBUSF9DTEVBUl9WQUxVRSB3aXRoIHRoZSBmbG9hdHMu
IFRoaXMgc2hvdWxkIG1ha2Ugbm8gZGlmZmVyZW5jZSB0byB0aGUgY2FsbGluZworICAgIC8vIGFw
cGxpY2F0aW9uLgorICAgIHN3aXRjaCAocG5hbWUpCisgICAgeworICAgICAgICBjYXNlIEdMX0NP
TVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTOgorICAgICAgICB7CisgICAgICAgICAgICAqdHlwZSAg
ICAgID0gR0xfSU5UOworICAgICAgICAgICAgKm51bVBhcmFtcyA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkIGludD4oZ2V0Q2FwcygpLmNvbXByZXNzZWRUZXh0dXJlRm9ybWF0cy5zaXplKCkpOworICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9QUk9HUkFN
X0JJTkFSWV9GT1JNQVRTX09FUzoKKyAgICAgICAgeworICAgICAgICAgICAgKnR5cGUgICAgICA9
IEdMX0lOVDsKKyAgICAgICAgICAgICpudW1QYXJhbXMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBp
bnQ+KGdldENhcHMoKS5wcm9ncmFtQmluYXJ5Rm9ybWF0cy5zaXplKCkpOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9TSEFERVJfQklOQVJZX0ZP
Uk1BVFM6CisgICAgICAgIHsKKyAgICAgICAgICAgICp0eXBlICAgICAgPSBHTF9JTlQ7CisgICAg
ICAgICAgICAqbnVtUGFyYW1zID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihnZXRDYXBzKCku
c2hhZGVyQmluYXJ5Rm9ybWF0cy5zaXplKCkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKworICAgICAgICBjYXNlIEdMX01BWF9WRVJURVhfQVRUUklCUzoKKyAgICAgICAg
Y2FzZSBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUzoKKyAgICAgICAgY2FzZSBHTF9NQVhf
VkFSWUlOR19WRUNUT1JTOgorICAgICAgICBjYXNlIEdMX01BWF9DT01CSU5FRF9URVhUVVJFX0lN
QUdFX1VOSVRTOgorICAgICAgICBjYXNlIEdMX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklU
UzoKKyAgICAgICAgY2FzZSBHTF9NQVhfVEVYVFVSRV9JTUFHRV9VTklUUzoKKyAgICAgICAgY2Fz
ZSBHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTOgorICAgICAgICBjYXNlIEdMX01BWF9S
RU5ERVJCVUZGRVJfU0laRToKKyAgICAgICAgY2FzZSBHTF9NQVhfQ09MT1JfQVRUQUNITUVOVFNf
RVhUOgorICAgICAgICBjYXNlIEdMX01BWF9EUkFXX0JVRkZFUlNfRVhUOgorICAgICAgICBjYXNl
IEdMX05VTV9TSEFERVJfQklOQVJZX0ZPUk1BVFM6CisgICAgICAgIGNhc2UgR0xfTlVNX0NPTVBS
RVNTRURfVEVYVFVSRV9GT1JNQVRTOgorICAgICAgICBjYXNlIEdMX0FSUkFZX0JVRkZFUl9CSU5E
SU5HOgorICAgICAgICAvLyBjYXNlIEdMX0ZSQU1FQlVGRkVSX0JJTkRJTkc6IC8vIGVxdWl2YWxl
bnQgdG8gRFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HX0FOR0xFCisgICAgICAgIGNhc2UgR0xfRFJB
V19GUkFNRUJVRkZFUl9CSU5ESU5HX0FOR0xFOgorICAgICAgICBjYXNlIEdMX1JFQURfRlJBTUVC
VUZGRVJfQklORElOR19BTkdMRToKKyAgICAgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVJfQklORElO
RzoKKyAgICAgICAgY2FzZSBHTF9DVVJSRU5UX1BST0dSQU06CisgICAgICAgIGNhc2UgR0xfUEFD
S19BTElHTk1FTlQ6CisgICAgICAgIGNhc2UgR0xfUEFDS19SRVZFUlNFX1JPV19PUkRFUl9BTkdM
RToKKyAgICAgICAgY2FzZSBHTF9VTlBBQ0tfQUxJR05NRU5UOgorICAgICAgICBjYXNlIEdMX0dF
TkVSQVRFX01JUE1BUF9ISU5UOgorICAgICAgICBjYXNlIEdMX0ZSQUdNRU5UX1NIQURFUl9ERVJJ
VkFUSVZFX0hJTlRfT0VTOgorICAgICAgICBjYXNlIEdMX1JFRF9CSVRTOgorICAgICAgICBjYXNl
IEdMX0dSRUVOX0JJVFM6CisgICAgICAgIGNhc2UgR0xfQkxVRV9CSVRTOgorICAgICAgICBjYXNl
IEdMX0FMUEhBX0JJVFM6CisgICAgICAgIGNhc2UgR0xfREVQVEhfQklUUzoKKyAgICAgICAgY2Fz
ZSBHTF9TVEVOQ0lMX0JJVFM6CisgICAgICAgIGNhc2UgR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVJf
QklORElORzoKKyAgICAgICAgY2FzZSBHTF9DVUxMX0ZBQ0VfTU9ERToKKyAgICAgICAgY2FzZSBH
TF9GUk9OVF9GQUNFOgorICAgICAgICBjYXNlIEdMX0FDVElWRV9URVhUVVJFOgorICAgICAgICBj
YXNlIEdMX1NURU5DSUxfRlVOQzoKKyAgICAgICAgY2FzZSBHTF9TVEVOQ0lMX1ZBTFVFX01BU0s6
CisgICAgICAgIGNhc2UgR0xfU1RFTkNJTF9SRUY6CisgICAgICAgIGNhc2UgR0xfU1RFTkNJTF9G
QUlMOgorICAgICAgICBjYXNlIEdMX1NURU5DSUxfUEFTU19ERVBUSF9GQUlMOgorICAgICAgICBj
YXNlIEdMX1NURU5DSUxfUEFTU19ERVBUSF9QQVNTOgorICAgICAgICBjYXNlIEdMX1NURU5DSUxf
QkFDS19GVU5DOgorICAgICAgICBjYXNlIEdMX1NURU5DSUxfQkFDS19WQUxVRV9NQVNLOgorICAg
ICAgICBjYXNlIEdMX1NURU5DSUxfQkFDS19SRUY6CisgICAgICAgIGNhc2UgR0xfU1RFTkNJTF9C
QUNLX0ZBSUw6CisgICAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTDoK
KyAgICAgICAgY2FzZSBHTF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTOgorICAgICAgICBj
YXNlIEdMX0RFUFRIX0ZVTkM6CisgICAgICAgIGNhc2UgR0xfQkxFTkRfU1JDX1JHQjoKKyAgICAg
ICAgY2FzZSBHTF9CTEVORF9TUkNfQUxQSEE6CisgICAgICAgIGNhc2UgR0xfQkxFTkRfRFNUX1JH
QjoKKyAgICAgICAgY2FzZSBHTF9CTEVORF9EU1RfQUxQSEE6CisgICAgICAgIGNhc2UgR0xfQkxF
TkRfRVFVQVRJT05fUkdCOgorICAgICAgICBjYXNlIEdMX0JMRU5EX0VRVUFUSU9OX0FMUEhBOgor
ICAgICAgICBjYXNlIEdMX1NURU5DSUxfV1JJVEVNQVNLOgorICAgICAgICBjYXNlIEdMX1NURU5D
SUxfQkFDS19XUklURU1BU0s6CisgICAgICAgIGNhc2UgR0xfU1RFTkNJTF9DTEVBUl9WQUxVRToK
KyAgICAgICAgY2FzZSBHTF9TVUJQSVhFTF9CSVRTOgorICAgICAgICBjYXNlIEdMX01BWF9URVhU
VVJFX1NJWkU6CisgICAgICAgIGNhc2UgR0xfTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRToKKyAg
ICAgICAgY2FzZSBHTF9TQU1QTEVfQlVGRkVSUzoKKyAgICAgICAgY2FzZSBHTF9TQU1QTEVTOgor
ICAgICAgICBjYXNlIEdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRToKKyAgICAgICAg
Y2FzZSBHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVDoKKyAgICAgICAgY2FzZSBH
TF9URVhUVVJFX0JJTkRJTkdfMkQ6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9CSU5ESU5HX0NV
QkVfTUFQOgorICAgICAgICBjYXNlIEdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWV9FWFQ6
CisgICAgICAgIGNhc2UgR0xfTlVNX1BST0dSQU1fQklOQVJZX0ZPUk1BVFNfT0VTOgorICAgICAg
ICB7CisgICAgICAgICAgICAqdHlwZSAgICAgID0gR0xfSU5UOworICAgICAgICAgICAgKm51bVBh
cmFtcyA9IDE7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIEdMX01BWF9TQU1QTEVTX0FOR0xFOgorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIWdl
dEV4dGVuc2lvbnMoKS5mcmFtZWJ1ZmZlck11bHRpc2FtcGxlKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICp0
eXBlICAgICAgPSBHTF9JTlQ7CisgICAgICAgICAgICAqbnVtUGFyYW1zID0gMTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfTUFYX1ZJRVdQT1JU
X0RJTVM6CisgICAgICAgIHsKKyAgICAgICAgICAgICp0eXBlICAgICAgPSBHTF9JTlQ7CisgICAg
ICAgICAgICAqbnVtUGFyYW1zID0gMjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgR0xfVklFV1BPUlQ6CisgICAgICAgIGNhc2UgR0xfU0NJU1NPUl9C
T1g6CisgICAgICAgIHsKKyAgICAgICAgICAgICp0eXBlICAgICAgPSBHTF9JTlQ7CisgICAgICAg
ICAgICAqbnVtUGFyYW1zID0gNDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CisgICAgICAgIGNhc2UgR0xfU0hBREVSX0NPTVBJTEVSOgorICAgICAgICBjYXNlIEdMX1NBTVBM
RV9DT1ZFUkFHRV9JTlZFUlQ6CisgICAgICAgIGNhc2UgR0xfREVQVEhfV1JJVEVNQVNLOgorICAg
ICAgICBjYXNlIEdMX0NVTExfRkFDRTogICAgICAgICAgICAgICAgIC8vIENVTExfRkFDRSB0aHJv
dWdoIERJVEhFUiBhcmUgbmF0dXJhbCB0byBJc0VuYWJsZWQsCisgICAgICAgIGNhc2UgR0xfUE9M
WUdPTl9PRkZTRVRfRklMTDogICAgICAgLy8gYnV0IGNhbiBiZSByZXRyaWV2ZWQgdGhyb3VnaCB0
aGUgR2V0e1R5cGV9diBxdWVyaWVzLgorICAgICAgICBjYXNlIEdMX1NBTVBMRV9BTFBIQV9UT19D
T1ZFUkFHRTogIC8vIEZvciB0aGlzIHB1cnBvc2UsIHRoZXkgYXJlIHRyZWF0ZWQgaGVyZSBhcwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJvb2wtbmF0dXJh
bAorICAgICAgICBjYXNlIEdMX1NBTVBMRV9DT1ZFUkFHRToKKyAgICAgICAgY2FzZSBHTF9TQ0lT
U09SX1RFU1Q6CisgICAgICAgIGNhc2UgR0xfU1RFTkNJTF9URVNUOgorICAgICAgICBjYXNlIEdM
X0RFUFRIX1RFU1Q6CisgICAgICAgIGNhc2UgR0xfQkxFTkQ6CisgICAgICAgIGNhc2UgR0xfRElU
SEVSOgorICAgICAgICBjYXNlIEdMX0NPTlRFWFRfUk9CVVNUX0FDQ0VTU19FWFQ6CisgICAgICAg
IHsKKyAgICAgICAgICAgICp0eXBlICAgICAgPSBHTF9CT09MOworICAgICAgICAgICAgKm51bVBh
cmFtcyA9IDE7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIEdMX0NPTE9SX1dSSVRFTUFTSzoKKyAgICAgICAgeworICAgICAgICAgICAgKnR5cGUgICAg
ICA9IEdMX0JPT0w7CisgICAgICAgICAgICAqbnVtUGFyYW1zID0gNDsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUE9MWUdPTl9PRkZTRVRfRkFD
VE9SOgorICAgICAgICBjYXNlIEdMX1BPTFlHT05fT0ZGU0VUX1VOSVRTOgorICAgICAgICBjYXNl
IEdMX1NBTVBMRV9DT1ZFUkFHRV9WQUxVRToKKyAgICAgICAgY2FzZSBHTF9ERVBUSF9DTEVBUl9W
QUxVRToKKyAgICAgICAgY2FzZSBHTF9MSU5FX1dJRFRIOgorICAgICAgICB7CisgICAgICAgICAg
ICAqdHlwZSAgICAgID0gR0xfRkxPQVQ7CisgICAgICAgICAgICAqbnVtUGFyYW1zID0gMTsKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQUxJQVNF
RF9MSU5FX1dJRFRIX1JBTkdFOgorICAgICAgICBjYXNlIEdMX0FMSUFTRURfUE9JTlRfU0laRV9S
QU5HRToKKyAgICAgICAgY2FzZSBHTF9ERVBUSF9SQU5HRToKKyAgICAgICAgeworICAgICAgICAg
ICAgKnR5cGUgICAgICA9IEdMX0ZMT0FUOworICAgICAgICAgICAgKm51bVBhcmFtcyA9IDI7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTE9S
X0NMRUFSX1ZBTFVFOgorICAgICAgICBjYXNlIEdMX0JMRU5EX0NPTE9SOgorICAgICAgICB7Cisg
ICAgICAgICAgICAqdHlwZSAgICAgID0gR0xfRkxPQVQ7CisgICAgICAgICAgICAqbnVtUGFyYW1z
ID0gNDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
R0xfTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOgorICAgICAgICAgICAgaWYgKCFnZXRF
eHRlbnNpb25zKCkubWF4VGV4dHVyZUFuaXNvdHJvcHkpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKnR5cGUg
ICAgICA9IEdMX0ZMT0FUOworICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSBHTF9USU1FU1RBTVBfRVhUOgorICAgICAgICAg
ICAgaWYgKCFnZXRFeHRlbnNpb25zKCkuZGlzam9pbnRUaW1lclF1ZXJ5KQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICp0eXBlICAgICAgPSBHTF9JTlRfNjRfQU5HTEVYOworICAgICAgICAgICAgKm51bVBhcmFt
cyA9IDE7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSBHTF9HUFVfRElT
Sk9JTlRfRVhUOgorICAgICAgICAgICAgaWYgKCFnZXRFeHRlbnNpb25zKCkuZGlzam9pbnRUaW1l
clF1ZXJ5KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICp0eXBlICAgICAgPSBHTF9JTlQ7CisgICAgICAgICAg
ICAqbnVtUGFyYW1zID0gMTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBjYXNl
IEdMX0NPVkVSQUdFX01PRFVMQVRJT05fQ0hST01JVU06CisgICAgICAgICAgICBpZiAoIWdldEV4
dGVuc2lvbnMoKS5mcmFtZWJ1ZmZlck1peGVkU2FtcGxlcykKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqdHlw
ZSAgICAgID0gR0xfSU5UOworICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0JJTkRJTkdfRVhURVJOQUxf
T0VTOgorICAgICAgICAgICAgaWYgKCFnZXRFeHRlbnNpb25zKCkuZWdsU3RyZWFtQ29uc3VtZXJF
eHRlcm5hbCAmJiAhZ2V0RXh0ZW5zaW9ucygpLmVnbEltYWdlRXh0ZXJuYWwpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgKnR5cGUgICAgICA9IEdMX0lOVDsKKyAgICAgICAgICAgICpudW1QYXJhbXMgPSAxOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGdldEV4dGVuc2lvbnMo
KS5kZWJ1ZykKKyAgICB7CisgICAgICAgIHN3aXRjaCAocG5hbWUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGNhc2UgR0xfREVCVUdfTE9HR0VEX01FU1NBR0VTOgorICAgICAgICAgICAgY2FzZSBH
TF9ERUJVR19ORVhUX0xPR0dFRF9NRVNTQUdFX0xFTkdUSDoKKyAgICAgICAgICAgIGNhc2UgR0xf
REVCVUdfR1JPVVBfU1RBQ0tfREVQVEg6CisgICAgICAgICAgICBjYXNlIEdMX01BWF9ERUJVR19N
RVNTQUdFX0xFTkdUSDoKKyAgICAgICAgICAgIGNhc2UgR0xfTUFYX0RFQlVHX0xPR0dFRF9NRVNT
QUdFUzoKKyAgICAgICAgICAgIGNhc2UgR0xfTUFYX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIOgor
ICAgICAgICAgICAgY2FzZSBHTF9NQVhfTEFCRUxfTEVOR1RIOgorICAgICAgICAgICAgICAgICp0
eXBlICAgICAgPSBHTF9JTlQ7CisgICAgICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgIGNhc2UgR0xfREVCVUdfT1VU
UFVUX1NZTkNIUk9OT1VTOgorICAgICAgICAgICAgY2FzZSBHTF9ERUJVR19PVVRQVVQ6CisgICAg
ICAgICAgICAgICAgKnR5cGUgICAgICA9IEdMX0JPT0w7CisgICAgICAgICAgICAgICAgKm51bVBh
cmFtcyA9IDE7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBpZiAoZ2V0RXh0ZW5zaW9ucygpLm11bHRpc2FtcGxlQ29tcGF0aWJpbGl0eSkKKyAg
ICB7CisgICAgICAgIHN3aXRjaCAocG5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2Ug
R0xfTVVMVElTQU1QTEVfRVhUOgorICAgICAgICAgICAgY2FzZSBHTF9TQU1QTEVfQUxQSEFfVE9f
T05FX0VYVDoKKyAgICAgICAgICAgICAgICAqdHlwZSAgICAgID0gR0xfQk9PTDsKKyAgICAgICAg
ICAgICAgICAqbnVtUGFyYW1zID0gMTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGlmIChnZXRFeHRlbnNpb25zKCkucGF0aFJlbmRlcmluZykK
KyAgICB7CisgICAgICAgIHN3aXRjaCAocG5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNh
c2UgR0xfUEFUSF9NT0RFTFZJRVdfTUFUUklYX0NIUk9NSVVNOgorICAgICAgICAgICAgY2FzZSBH
TF9QQVRIX1BST0pFQ1RJT05fTUFUUklYX0NIUk9NSVVNOgorICAgICAgICAgICAgICAgICp0eXBl
ID0gR0xfRkxPQVQ7CisgICAgICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE2OworICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGdldEV4dGVu
c2lvbnMoKS5iaW5kR2VuZXJhdGVzUmVzb3VyY2UpCisgICAgeworICAgICAgICBzd2l0Y2ggKHBu
YW1lKQorICAgICAgICB7CisgICAgICAgICAgICBjYXNlIEdMX0JJTkRfR0VORVJBVEVTX1JFU09V
UkNFX0NIUk9NSVVNOgorICAgICAgICAgICAgICAgICp0eXBlICAgICAgPSBHTF9CT09MOworICAg
ICAgICAgICAgICAgICpudW1QYXJhbXMgPSAxOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisgICAgfQorCisgICAgLy8gQ2hlY2sgZm9yIEVTMy4wKyBwYXJhbWV0ZXIg
bmFtZXMgd2hpY2ggYXJlIGFsc28gZXhwb3NlZCBhcyBFUzIgZXh0ZW5zaW9ucworICAgIHN3aXRj
aCAocG5hbWUpCisgICAgeworICAgICAgICBjYXNlIEdMX1BBQ0tfUk9XX0xFTkdUSDoKKyAgICAg
ICAgY2FzZSBHTF9QQUNLX1NLSVBfUk9XUzoKKyAgICAgICAgY2FzZSBHTF9QQUNLX1NLSVBfUElY
RUxTOgorICAgICAgICAgICAgaWYgKChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpICYmICFn
ZXRFeHRlbnNpb25zKCkucGFja1N1YmltYWdlKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICp0eXBlICAgICAg
PSBHTF9JTlQ7CisgICAgICAgICAgICAqbnVtUGFyYW1zID0gMTsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICBjYXNlIEdMX1VOUEFDS19ST1dfTEVOR1RIOgorICAgICAgICBjYXNl
IEdMX1VOUEFDS19TS0lQX1JPV1M6CisgICAgICAgIGNhc2UgR0xfVU5QQUNLX1NLSVBfUElYRUxT
OgorICAgICAgICAgICAgaWYgKChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpICYmICFnZXRF
eHRlbnNpb25zKCkudW5wYWNrU3ViaW1hZ2UpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKnR5cGUgICAgICA9
IEdMX0lOVDsKKyAgICAgICAgICAgICpudW1QYXJhbXMgPSAxOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIGNhc2UgR0xfVkVSVEVYX0FSUkFZX0JJTkRJTkc6CisgICAgICAgICAg
ICBpZiAoKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykgJiYgIWdldEV4dGVuc2lvbnMoKS52
ZXJ0ZXhBcnJheU9iamVjdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqdHlwZSAgICAgID0gR0xfSU5UOwor
ICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgY2FzZSBHTF9QSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HOgorICAgICAgICBjYXNlIEdM
X1BJWEVMX1VOUEFDS19CVUZGRVJfQklORElORzoKKyAgICAgICAgICAgIGlmICgoZ2V0Q2xpZW50
TWFqb3JWZXJzaW9uKCkgPCAzKSAmJiAhZ2V0RXh0ZW5zaW9ucygpLnBpeGVsQnVmZmVyT2JqZWN0
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICp0eXBlICAgICAgPSBHTF9JTlQ7CisgICAgICAgICAgICAqbnVt
UGFyYW1zID0gMTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGNvbnN0
IEdMVmVyc2lvbiAmZ2xWZXJzaW9uID0gbVN0YXRlLmdldEdMVmVyc2lvbigpOworCisgICAgaWYg
KCFnbFZlcnNpb24uaXNFUzNPckdyZWF0ZXIoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICAvLyBDaGVjayBmb3IgRVMzLjArIHBhcmFtZXRlciBuYW1lcworICAg
IHN3aXRjaCAocG5hbWUpCisgICAgeworICAgICAgICBjYXNlIEdMX01BWF9VTklGT1JNX0JVRkZF
Ul9CSU5ESU5HUzoKKyAgICAgICAgY2FzZSBHTF9VTklGT1JNX0JVRkZFUl9PRkZTRVRfQUxJR05N
RU5UOgorICAgICAgICBjYXNlIEdMX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkc6CisgICAgICAgIGNh
c2UgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JJTkRJTkc6CisgICAgICAgIGNhc2UgR0xfVFJBTlNG
T1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HOgorICAgICAgICBjYXNlIEdMX0NPUFlfUkVBRF9C
VUZGRVJfQklORElORzoKKyAgICAgICAgY2FzZSBHTF9DT1BZX1dSSVRFX0JVRkZFUl9CSU5ESU5H
OgorICAgICAgICBjYXNlIEdMX1NBTVBMRVJfQklORElORzoKKyAgICAgICAgY2FzZSBHTF9SRUFE
X0JVRkZFUjoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0JJTkRJTkdfM0Q6CisgICAgICAgIGNh
c2UgR0xfVEVYVFVSRV9CSU5ESU5HXzJEX0FSUkFZOgorICAgICAgICBjYXNlIEdMX01BWF8zRF9U
RVhUVVJFX1NJWkU6CisgICAgICAgIGNhc2UgR0xfTUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTOgor
ICAgICAgICBjYXNlIEdMX01BWF9WRVJURVhfVU5JRk9STV9CTE9DS1M6CisgICAgICAgIGNhc2Ug
R0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQkxPQ0tTOgorICAgICAgICBjYXNlIEdMX01BWF9DT01C
SU5FRF9VTklGT1JNX0JMT0NLUzoKKyAgICAgICAgY2FzZSBHTF9NQVhfVkVSVEVYX09VVFBVVF9D
T01QT05FTlRTOgorICAgICAgICBjYXNlIEdMX01BWF9GUkFHTUVOVF9JTlBVVF9DT01QT05FTlRT
OgorICAgICAgICBjYXNlIEdMX01BWF9WQVJZSU5HX0NPTVBPTkVOVFM6CisgICAgICAgIGNhc2Ug
R0xfTUFYX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFM6CisgICAgICAgIGNhc2UgR0xfTUFYX0ZS
QUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUzoKKyAgICAgICAgY2FzZSBHTF9NSU5fUFJPR1JBTV9U
RVhFTF9PRkZTRVQ6CisgICAgICAgIGNhc2UgR0xfTUFYX1BST0dSQU1fVEVYRUxfT0ZGU0VUOgor
ICAgICAgICBjYXNlIEdMX05VTV9FWFRFTlNJT05TOgorICAgICAgICBjYXNlIEdMX01BSk9SX1ZF
UlNJT046CisgICAgICAgIGNhc2UgR0xfTUlOT1JfVkVSU0lPTjoKKyAgICAgICAgY2FzZSBHTF9N
QVhfRUxFTUVOVFNfSU5ESUNFUzoKKyAgICAgICAgY2FzZSBHTF9NQVhfRUxFTUVOVFNfVkVSVElD
RVM6CisgICAgICAgIGNhc2UgR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19JTlRFUkxFQVZFRF9D
T01QT05FTlRTOgorICAgICAgICBjYXNlIEdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJB
VEVfQVRUUklCUzoKKyAgICAgICAgY2FzZSBHTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFS
QVRFX0NPTVBPTkVOVFM6CisgICAgICAgIGNhc2UgR0xfVU5QQUNLX0lNQUdFX0hFSUdIVDoKKyAg
ICAgICAgY2FzZSBHTF9VTlBBQ0tfU0tJUF9JTUFHRVM6CisgICAgICAgIHsKKyAgICAgICAgICAg
ICp0eXBlICAgICAgPSBHTF9JTlQ7CisgICAgICAgICAgICAqbnVtUGFyYW1zID0gMTsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBHTF9NQVhfRUxF
TUVOVF9JTkRFWDoKKyAgICAgICAgY2FzZSBHTF9NQVhfVU5JRk9STV9CTE9DS19TSVpFOgorICAg
ICAgICBjYXNlIEdMX01BWF9DT01CSU5FRF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTOgorICAg
ICAgICBjYXNlIEdMX01BWF9DT01CSU5FRF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFM6Cisg
ICAgICAgIGNhc2UgR0xfTUFYX1NFUlZFUl9XQUlUX1RJTUVPVVQ6CisgICAgICAgIHsKKyAgICAg
ICAgICAgICp0eXBlICAgICAgPSBHTF9JTlRfNjRfQU5HTEVYOworICAgICAgICAgICAgKm51bVBh
cmFtcyA9IDE7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAg
IGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0FDVElWRToKKyAgICAgICAgY2FzZSBHTF9UUkFO
U0ZPUk1fRkVFREJBQ0tfUEFVU0VEOgorICAgICAgICBjYXNlIEdMX1BSSU1JVElWRV9SRVNUQVJU
X0ZJWEVEX0lOREVYOgorICAgICAgICBjYXNlIEdMX1JBU1RFUklaRVJfRElTQ0FSRDoKKyAgICAg
ICAgeworICAgICAgICAgICAgKnR5cGUgICAgICA9IEdMX0JPT0w7CisgICAgICAgICAgICAqbnVt
UGFyYW1zID0gMTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAg
ICAgY2FzZSBHTF9NQVhfVEVYVFVSRV9MT0RfQklBUzoKKyAgICAgICAgeworICAgICAgICAgICAg
KnR5cGUgICAgICA9IEdMX0ZMT0FUOworICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghZ2xWZXJz
aW9uLmlzRVMzMSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IHN3aXRjaCAocG5hbWUpCisgICAgeworICAgICAgICBjYXNlIEdMX01BWF9GUkFNRUJVRkZFUl9X
SURUSDoKKyAgICAgICAgY2FzZSBHTF9NQVhfRlJBTUVCVUZGRVJfSEVJR0hUOgorICAgICAgICBj
YXNlIEdMX01BWF9GUkFNRUJVRkZFUl9TQU1QTEVTOgorICAgICAgICBjYXNlIEdMX01BWF9TQU1Q
TEVfTUFTS19XT1JEUzoKKyAgICAgICAgY2FzZSBHTF9NQVhfQ09MT1JfVEVYVFVSRV9TQU1QTEVT
OgorICAgICAgICBjYXNlIEdMX01BWF9ERVBUSF9URVhUVVJFX1NBTVBMRVM6CisgICAgICAgIGNh
c2UgR0xfTUFYX0lOVEVHRVJfU0FNUExFUzoKKyAgICAgICAgY2FzZSBHTF9NQVhfVkVSVEVYX0FU
VFJJQl9SRUxBVElWRV9PRkZTRVQ6CisgICAgICAgIGNhc2UgR0xfTUFYX1ZFUlRFWF9BVFRSSUJf
QklORElOR1M6CisgICAgICAgIGNhc2UgR0xfTUFYX1ZFUlRFWF9BVFRSSUJfU1RSSURFOgorICAg
ICAgICBjYXNlIEdMX01BWF9WRVJURVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSUzoKKyAgICAgICAg
Y2FzZSBHTF9NQVhfVkVSVEVYX0FUT01JQ19DT1VOVEVSUzoKKyAgICAgICAgY2FzZSBHTF9NQVhf
VkVSVEVYX0lNQUdFX1VOSUZPUk1TOgorICAgICAgICBjYXNlIEdMX01BWF9WRVJURVhfU0hBREVS
X1NUT1JBR0VfQkxPQ0tTOgorICAgICAgICBjYXNlIEdMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09V
TlRFUl9CVUZGRVJTOgorICAgICAgICBjYXNlIEdMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRF
UlM6CisgICAgICAgIGNhc2UgR0xfTUFYX0ZSQUdNRU5UX0lNQUdFX1VOSUZPUk1TOgorICAgICAg
ICBjYXNlIEdMX01BWF9GUkFHTUVOVF9TSEFERVJfU1RPUkFHRV9CTE9DS1M6CisgICAgICAgIGNh
c2UgR0xfTUlOX1BST0dSQU1fVEVYVFVSRV9HQVRIRVJfT0ZGU0VUOgorICAgICAgICBjYXNlIEdM
X01BWF9QUk9HUkFNX1RFWFRVUkVfR0FUSEVSX09GRlNFVDoKKyAgICAgICAgY2FzZSBHTF9NQVhf
Q09NUFVURV9XT1JLX0dST1VQX0lOVk9DQVRJT05TOgorICAgICAgICBjYXNlIEdMX01BWF9DT01Q
VVRFX1VOSUZPUk1fQkxPQ0tTOgorICAgICAgICBjYXNlIEdMX01BWF9DT01QVVRFX1RFWFRVUkVf
SU1BR0VfVU5JVFM6CisgICAgICAgIGNhc2UgR0xfTUFYX0NPTVBVVEVfU0hBUkVEX01FTU9SWV9T
SVpFOgorICAgICAgICBjYXNlIEdMX01BWF9DT01QVVRFX1VOSUZPUk1fQ09NUE9ORU5UUzoKKyAg
ICAgICAgY2FzZSBHTF9NQVhfQ09NUFVURV9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTOgorICAgICAg
ICBjYXNlIEdMX01BWF9DT01QVVRFX0FUT01JQ19DT1VOVEVSUzoKKyAgICAgICAgY2FzZSBHTF9N
QVhfQ09NUFVURV9JTUFHRV9VTklGT1JNUzoKKyAgICAgICAgY2FzZSBHTF9NQVhfQ09NQklORURf
Q09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFM6CisgICAgICAgIGNhc2UgR0xfTUFYX0NPTVBVVEVf
U0hBREVSX1NUT1JBR0VfQkxPQ0tTOgorICAgICAgICBjYXNlIEdMX01BWF9DT01CSU5FRF9TSEFE
RVJfT1VUUFVUX1JFU09VUkNFUzoKKyAgICAgICAgY2FzZSBHTF9NQVhfVU5JRk9STV9MT0NBVElP
TlM6CisgICAgICAgIGNhc2UgR0xfTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9CSU5ESU5HUzoK
KyAgICAgICAgY2FzZSBHTF9NQVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NJWkU6CisgICAgICAg
IGNhc2UgR0xfTUFYX0NPTUJJTkVEX0FUT01JQ19DT1VOVEVSX0JVRkZFUlM6CisgICAgICAgIGNh
c2UgR0xfTUFYX0NPTUJJTkVEX0FUT01JQ19DT1VOVEVSUzoKKyAgICAgICAgY2FzZSBHTF9NQVhf
SU1BR0VfVU5JVFM6CisgICAgICAgIGNhc2UgR0xfTUFYX0NPTUJJTkVEX0lNQUdFX1VOSUZPUk1T
OgorICAgICAgICBjYXNlIEdMX01BWF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfQklORElOR1M6Cisg
ICAgICAgIGNhc2UgR0xfTUFYX0NPTUJJTkVEX1NIQURFUl9TVE9SQUdFX0JMT0NLUzoKKyAgICAg
ICAgY2FzZSBHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVDoKKyAgICAg
ICAgICAgICp0eXBlICAgICAgPSBHTF9JTlQ7CisgICAgICAgICAgICAqbnVtUGFyYW1zID0gMTsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBjYXNlIEdMX01BWF9TSEFERVJfU1RP
UkFHRV9CTE9DS19TSVpFOgorICAgICAgICAgICAgKnR5cGUgICAgICA9IEdMX0lOVF82NF9BTkdM
RVg7CisgICAgICAgICAgICAqbnVtUGFyYW1zID0gMTsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBWYWxpZGF0aW9uQ29udGV4
dDo6Z2V0SW5kZXhlZFF1ZXJ5UGFyYW1ldGVySW5mbyhHTGVudW0gdGFyZ2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKnR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCAqbnVtUGFyYW1zKQoreworCisgICAgY29uc3QgR0xWZXJzaW9uICZnbFZlcnNp
b24gPSBtU3RhdGUuZ2V0R0xWZXJzaW9uKCk7CisgICAgaWYgKCFnbFZlcnNpb24uaXNFUzNPckdy
ZWF0ZXIoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzd2l0
Y2ggKHRhcmdldCkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JV
RkZFUl9CSU5ESU5HOgorICAgICAgICBjYXNlIEdMX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkc6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgICp0eXBlICAgICAgPSBHTF9JTlQ7CisgICAgICAgICAgICAq
bnVtUGFyYW1zID0gMTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TVEFSVDoKKyAgICAgICAgY2Fz
ZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NJWkU6CisgICAgICAgIGNhc2UgR0xfVU5J
Rk9STV9CVUZGRVJfU1RBUlQ6CisgICAgICAgIGNhc2UgR0xfVU5JRk9STV9CVUZGRVJfU0laRToK
KyAgICAgICAgeworICAgICAgICAgICAgKnR5cGUgICAgICA9IEdMX0lOVF82NF9BTkdMRVg7Cisg
ICAgICAgICAgICAqbnVtUGFyYW1zID0gMTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgfQorCisgICAgaWYgKCFnbFZlcnNpb24uaXNFUzMxKCkpCisgICAgeworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3dpdGNoICh0YXJnZXQpCisgICAgewor
ICAgICAgICBjYXNlIEdMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfQ09VTlQ6CisgICAgICAgIGNh
c2UgR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9TSVpFOgorICAgICAgICB7CisgICAgICAgICAg
ICAqdHlwZSAgICAgID0gR0xfSU5UOworICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBmYWxz
ZTsKK30KKworUHJvZ3JhbSAqVmFsaWRhdGlvbkNvbnRleHQ6OmdldFByb2dyYW0oR0x1aW50IGhh
bmRsZSkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN0YXRlLm1SZXNvdXJjZU1hbmFnZXItPmdldFBy
b2dyYW0oaGFuZGxlKTsKK30KKworU2hhZGVyICpWYWxpZGF0aW9uQ29udGV4dDo6Z2V0U2hhZGVy
KEdMdWludCBoYW5kbGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdGF0ZS5tUmVzb3VyY2VNYW5h
Z2VyLT5nZXRTaGFkZXIoaGFuZGxlKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGdsCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dFN0YXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbnRleHRTdGF0
ZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9Db250ZXh0U3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyMiBAQAorLy8KKy8v
IENvcHlyaWdodCAoYykgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisKKy8vIENvbnRleHRTdGF0ZTogQ29udGFpbmVyIGNsYXNzIGZvciBhbGwgR0wgY29u
dGV4dCBzdGF0ZSwgY2FwcyBhbmQgb2JqZWN0cy4KKworI2lmbmRlZiBMSUJBTkdMRV9DT05URVhU
U1RBVEVfSF8KKyNkZWZpbmUgTElCQU5HTEVfQ09OVEVYVFNUQVRFX0hfCisKKyNpbmNsdWRlICJj
b21tb24vYW5nbGV1dGlscy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1N0YXRlLmgiCisKK25hbWVz
cGFjZSBnbAoreworY2xhc3MgVmFsaWRhdGlvbkNvbnRleHQ7CitjbGFzcyBDb250ZXh0U3RhdGU7
CisKK2NsYXNzIEdMVmVyc2lvbiBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQoreworICBwdWJs
aWM6CisgICAgR0xWZXJzaW9uKEdMaW50IGNsaWVudE1ham9yVmVyc2lvbiwgR0xpbnQgY2xpZW50
TWlub3JWZXJzaW9uKQorICAgICAgICA6IG1DbGllbnRNYWpvclZlcnNpb24oY2xpZW50TWFqb3JW
ZXJzaW9uKSwgbUNsaWVudE1pbm9yVmVyc2lvbihjbGllbnRNaW5vclZlcnNpb24pCisgICAgewor
ICAgIH0KKworICAgIEdMaW50IGdldENsaWVudE1ham9yVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJu
IG1DbGllbnRNYWpvclZlcnNpb247IH0KKyAgICBHTGludCBnZXRDbGllbnRNaW5vclZlcnNpb24o
KSBjb25zdCB7IHJldHVybiBtQ2xpZW50TWlub3JWZXJzaW9uOyB9CisKKyAgICBib29sIGlzRVMy
KCkgY29uc3QgeyByZXR1cm4gbUNsaWVudE1ham9yVmVyc2lvbiA9PSAyOyB9CisgICAgYm9vbCBp
c0VTMygpIGNvbnN0IHsgcmV0dXJuIG1DbGllbnRNYWpvclZlcnNpb24gPT0gMyAmJiBtQ2xpZW50
TWlub3JWZXJzaW9uID09IDA7IH0KKyAgICBib29sIGlzRVMzMSgpIGNvbnN0IHsgcmV0dXJuIG1D
bGllbnRNYWpvclZlcnNpb24gPT0gMyAmJiBtQ2xpZW50TWlub3JWZXJzaW9uID09IDE7IH0KKyAg
ICBib29sIGlzRVMzT3JHcmVhdGVyKCkgY29uc3QgeyByZXR1cm4gbUNsaWVudE1ham9yVmVyc2lv
biA+PSAzOyB9CisKKyAgcHJpdmF0ZToKKyAgICBHTGludCBtQ2xpZW50TWFqb3JWZXJzaW9uOwor
ICAgIEdMaW50IG1DbGllbnRNaW5vclZlcnNpb247Cit9OworCitjbGFzcyBDb250ZXh0U3RhdGUg
ZmluYWwgOiBwdWJsaWMgYW5nbGU6Ok5vbkNvcHlhYmxlCit7CisgIHB1YmxpYzoKKyAgICBDb250
ZXh0U3RhdGUodWludHB0cl90IGNvbnRleHQsCisgICAgICAgICAgICAgICAgIEdMaW50IGNsaWVu
dE1ham9yVmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgR0xpbnQgY2xpZW50TWlub3JWZXJzaW9u
LAorICAgICAgICAgICAgICAgICBTdGF0ZSAqc3RhdGUsCisgICAgICAgICAgICAgICAgIGNvbnN0
IENhcHMgJmNhcHMsCisgICAgICAgICAgICAgICAgIGNvbnN0IFRleHR1cmVDYXBzTWFwICZ0ZXh0
dXJlQ2FwcywKKyAgICAgICAgICAgICAgICAgY29uc3QgRXh0ZW5zaW9ucyAmZXh0ZW5zaW9ucywK
KyAgICAgICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VNYW5hZ2VyICpyZXNvdXJjZU1hbmFnZXIs
CisgICAgICAgICAgICAgICAgIGNvbnN0IExpbWl0YXRpb25zICZsaW1pdGF0aW9ucyk7CisgICAg
fkNvbnRleHRTdGF0ZSgpOworCisgICAgdWludHB0cl90IGdldENvbnRleHQoKSBjb25zdCB7IHJl
dHVybiBtQ29udGV4dDsgfQorICAgIEdMaW50IGdldENsaWVudE1ham9yVmVyc2lvbigpIGNvbnN0
IHsgcmV0dXJuIG1HTFZlcnNpb24uZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCk7IH0KKyAgICBHTGlu
dCBnZXRDbGllbnRNaW5vclZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtR0xWZXJzaW9uLmdldENs
aWVudE1pbm9yVmVyc2lvbigpOyB9CisgICAgY29uc3QgR0xWZXJzaW9uICZnZXRHTFZlcnNpb24o
KSBjb25zdCB7IHJldHVybiBtR0xWZXJzaW9uOyB9CisgICAgY29uc3QgU3RhdGUgJmdldFN0YXRl
KCkgY29uc3QgeyByZXR1cm4gKm1TdGF0ZTsgfQorICAgIGNvbnN0IENhcHMgJmdldENhcHMoKSBj
b25zdCB7IHJldHVybiBtQ2FwczsgfQorICAgIGNvbnN0IFRleHR1cmVDYXBzTWFwICZnZXRUZXh0
dXJlQ2FwcygpIGNvbnN0IHsgcmV0dXJuIG1UZXh0dXJlQ2FwczsgfQorICAgIGNvbnN0IEV4dGVu
c2lvbnMgJmdldEV4dGVuc2lvbnMoKSBjb25zdCB7IHJldHVybiBtRXh0ZW5zaW9uczsgfQorICAg
IGNvbnN0IFJlc291cmNlTWFuYWdlciAmZ2V0UmVzb3VyY2VNYW5hZ2VyKCkgY29uc3QgeyByZXR1
cm4gKm1SZXNvdXJjZU1hbmFnZXI7IH0KKyAgICBjb25zdCBMaW1pdGF0aW9ucyAmZ2V0TGltaXRh
dGlvbnMoKSBjb25zdCB7IHJldHVybiBtTGltaXRhdGlvbnM7IH0KKworICAgIGNvbnN0IFRleHR1
cmVDYXBzICZnZXRUZXh0dXJlQ2FwKEdMZW51bSBpbnRlcm5hbEZvcm1hdCkgY29uc3Q7CisKKyAg
cHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQ29udGV4dDsKKyAgICBmcmllbmQgY2xhc3MgVmFs
aWRhdGlvbkNvbnRleHQ7CisKKyAgICBHTFZlcnNpb24gbUdMVmVyc2lvbjsKKyAgICB1aW50cHRy
X3QgbUNvbnRleHQ7CisgICAgU3RhdGUgKm1TdGF0ZTsKKyAgICBjb25zdCBDYXBzICZtQ2FwczsK
KyAgICBjb25zdCBUZXh0dXJlQ2Fwc01hcCAmbVRleHR1cmVDYXBzOworICAgIGNvbnN0IEV4dGVu
c2lvbnMgJm1FeHRlbnNpb25zOworICAgIGNvbnN0IFJlc291cmNlTWFuYWdlciAqbVJlc291cmNl
TWFuYWdlcjsKKyAgICBjb25zdCBMaW1pdGF0aW9ucyAmbUxpbWl0YXRpb25zOworfTsKKworY2xh
c3MgVmFsaWRhdGlvbkNvbnRleHQgOiBhbmdsZTo6Tm9uQ29weWFibGUKK3sKKyAgcHVibGljOgor
ICAgIFZhbGlkYXRpb25Db250ZXh0KEdMaW50IGNsaWVudE1ham9yVmVyc2lvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBjbGllbnRNaW5vclZlcnNpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgU3RhdGUgKnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENhcHMgJmNh
cHMsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGV4dHVyZUNhcHNNYXAgJnRleHR1cmVD
YXBzLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEV4dGVuc2lvbnMgJmV4dGVuc2lvbnMs
CisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VNYW5hZ2VyICpyZXNvdXJjZU1h
bmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGltaXRhdGlvbnMgJmxpbWl0YXRp
b25zLAorICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2tpcFZhbGlkYXRpb24pOworICAgIHZp
cnR1YWwgflZhbGlkYXRpb25Db250ZXh0KCkge30KKworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVF
cnJvcihjb25zdCBFcnJvciAmZXJyb3IpID0gMDsKKworICAgIGNvbnN0IENvbnRleHRTdGF0ZSAm
Z2V0Q29udGV4dFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbVN0YXRlOyB9CisgICAgaW50IGdldENs
aWVudE1ham9yVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1TdGF0ZS5nZXRDbGllbnRNYWpvclZl
cnNpb24oKTsgfQorICAgIGludCBnZXRDbGllbnRNaW5vclZlcnNpb24oKSBjb25zdCB7IHJldHVy
biBtU3RhdGUuZ2V0Q2xpZW50TWlub3JWZXJzaW9uKCk7IH0KKyAgICBjb25zdCBHTFZlcnNpb24g
JmdldEdMVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1TdGF0ZS5tR0xWZXJzaW9uOyB9CisgICAg
Y29uc3QgU3RhdGUgJmdldEdMU3RhdGUoKSBjb25zdCB7IHJldHVybiBtU3RhdGUuZ2V0U3RhdGUo
KTsgfQorICAgIGNvbnN0IENhcHMgJmdldENhcHMoKSBjb25zdCB7IHJldHVybiBtU3RhdGUuZ2V0
Q2FwcygpOyB9CisgICAgY29uc3QgVGV4dHVyZUNhcHNNYXAgJmdldFRleHR1cmVDYXBzKCkgY29u
c3QgeyByZXR1cm4gbVN0YXRlLmdldFRleHR1cmVDYXBzKCk7IH0KKyAgICBjb25zdCBFeHRlbnNp
b25zICZnZXRFeHRlbnNpb25zKCkgY29uc3QgeyByZXR1cm4gbVN0YXRlLmdldEV4dGVuc2lvbnMo
KTsgfQorICAgIGNvbnN0IExpbWl0YXRpb25zICZnZXRMaW1pdGF0aW9ucygpIGNvbnN0IHsgcmV0
dXJuIG1TdGF0ZS5nZXRMaW1pdGF0aW9ucygpOyB9CisgICAgYm9vbCBza2lwVmFsaWRhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1Ta2lwVmFsaWRhdGlvbjsgfQorCisgICAgLy8gU3BlY2lmaWMgbWV0
aG9kcyBuZWVkZWQgZm9yIHZhbGlkYXRpb24uCisgICAgYm9vbCBnZXRRdWVyeVBhcmFtZXRlcklu
Zm8oR0xlbnVtIHBuYW1lLCBHTGVudW0gKnR5cGUsIHVuc2lnbmVkIGludCAqbnVtUGFyYW1zKTsK
KyAgICBib29sIGdldEluZGV4ZWRRdWVyeVBhcmFtZXRlckluZm8oR0xlbnVtIHRhcmdldCwgR0xl
bnVtICp0eXBlLCB1bnNpZ25lZCBpbnQgKm51bVBhcmFtcyk7CisKKyAgICBQcm9ncmFtICpnZXRQ
cm9ncmFtKEdMdWludCBoYW5kbGUpIGNvbnN0OworICAgIFNoYWRlciAqZ2V0U2hhZGVyKEdMdWlu
dCBoYW5kbGUpIGNvbnN0OworCisgIHByb3RlY3RlZDoKKyAgICBDb250ZXh0U3RhdGUgbVN0YXRl
OworICAgIGJvb2wgbVNraXBWYWxpZGF0aW9uOworfTsKK30gIC8vIG5hbWVzcGFjZSBnbAorCisj
ZW5kaWYgIC8vIExJQkFOR0xFX0NPTlRFWFRTVEFURV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL0RhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9EYXRhLmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0RhdGEuY3BwCShub25leGlzdGVu
dCkKQEAgLTEsNTYgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxNCBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQot
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIERhdGEuY3BwOiBDb250YWlu
ZXIgY2xhc3MgZm9yIGFsbCBHTCByZWxldmFudCBzdGF0ZSwgY2FwcyBhbmQgb2JqZWN0cwotCi0j
aW5jbHVkZSAibGliQU5HTEUvRGF0YS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL1Jlc291cmNlTWFu
YWdlci5oIgotCi1uYW1lc3BhY2UgZ2wKLXsKLQotRGF0YTo6RGF0YSh1aW50cHRyX3QgY29udGV4
dEluLAotICAgICAgICAgICBHTGludCBjbGllbnRWZXJzaW9uSW4sCi0gICAgICAgICAgIGNvbnN0
IFN0YXRlICZzdGF0ZUluLAotICAgICAgICAgICBjb25zdCBDYXBzICZjYXBzSW4sCi0gICAgICAg
ICAgIGNvbnN0IFRleHR1cmVDYXBzTWFwICZ0ZXh0dXJlQ2Fwc0luLAotICAgICAgICAgICBjb25z
dCBFeHRlbnNpb25zICZleHRlbnNpb25zSW4sCi0gICAgICAgICAgIGNvbnN0IFJlc291cmNlTWFu
YWdlciAqcmVzb3VyY2VNYW5hZ2VySW4sCi0gICAgICAgICAgIGNvbnN0IExpbWl0YXRpb25zICZs
aW1pdGF0aW9uc0luKQotICAgIDogY29udGV4dChjb250ZXh0SW4pLAotICAgICAgY2xpZW50VmVy
c2lvbihjbGllbnRWZXJzaW9uSW4pLAotICAgICAgc3RhdGUoJnN0YXRlSW4pLAotICAgICAgY2Fw
cygmY2Fwc0luKSwKLSAgICAgIHRleHR1cmVDYXBzKCZ0ZXh0dXJlQ2Fwc0luKSwKLSAgICAgIGV4
dGVuc2lvbnMoJmV4dGVuc2lvbnNJbiksCi0gICAgICByZXNvdXJjZU1hbmFnZXIocmVzb3VyY2VN
YW5hZ2VySW4pLAotICAgICAgbGltaXRhdGlvbnMoJmxpbWl0YXRpb25zSW4pCi17fQotCi1EYXRh
Ojp+RGF0YSgpCi17Ci19Ci0KLVZhbGlkYXRpb25Db250ZXh0OjpWYWxpZGF0aW9uQ29udGV4dChH
TGludCBjbGllbnRWZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBDYXBzICZjYXBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFRleHR1cmVDYXBzTWFwICZ0ZXh0dXJlQ2FwcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBFeHRlbnNpb25zICZleHRlbnNpb25zLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlc291cmNlTWFuYWdlciAqcmVzb3Vy
Y2VNYW5hZ2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExp
bWl0YXRpb25zICZsaW1pdGF0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIHNraXBWYWxpZGF0aW9uKQotICAgIDogbURhdGEocmVpbnRlcnByZXRfY2FzdDx1
aW50cHRyX3Q+KHRoaXMpLAotICAgICAgICAgICAgY2xpZW50VmVyc2lvbiwKLSAgICAgICAgICAg
IHN0YXRlLAotICAgICAgICAgICAgY2FwcywKLSAgICAgICAgICAgIHRleHR1cmVDYXBzLAotICAg
ICAgICAgICAgZXh0ZW5zaW9ucywKLSAgICAgICAgICAgIHJlc291cmNlTWFuYWdlciwKLSAgICAg
ICAgICAgIGxpbWl0YXRpb25zKSwKLSAgICAgIG1Ta2lwVmFsaWRhdGlvbihza2lwVmFsaWRhdGlv
bikKLXsKLX0KLX0gIC8vIG5hbWVzcGFjZSBnbApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL0RhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvRGF0YS5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRGF0YS5oCShub25leGlzdGVudCkKQEAgLTEsNzIg
KzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIERhdGEuaDogQ29udGFpbmVyIGNsYXNzIGZvciBh
bGwgR0wgcmVsZXZhbnQgc3RhdGUsIGNhcHMgYW5kIG9iamVjdHMKLQotI2lmbmRlZiBMSUJBTkdM
RV9EQVRBX0hfCi0jZGVmaW5lIExJQkFOR0xFX0RBVEFfSF8KLQotI2luY2x1ZGUgImNvbW1vbi9h
bmdsZXV0aWxzLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvU3RhdGUuaCIKLQotbmFtZXNwYWNlIGds
Ci17Ci0KLXN0cnVjdCBEYXRhIGZpbmFsIDogcHVibGljIGFuZ2xlOjpOb25Db3B5YWJsZQotewot
ICBwdWJsaWM6Ci0gICAgRGF0YSh1aW50cHRyX3QgY29udGV4dCwKLSAgICAgICAgIEdMaW50IGNs
aWVudFZlcnNpb24sCi0gICAgICAgICBjb25zdCBTdGF0ZSAmc3RhdGUsCi0gICAgICAgICBjb25z
dCBDYXBzICZjYXBzLAotICAgICAgICAgY29uc3QgVGV4dHVyZUNhcHNNYXAgJnRleHR1cmVDYXBz
LAotICAgICAgICAgY29uc3QgRXh0ZW5zaW9ucyAmZXh0ZW5zaW9ucywKLSAgICAgICAgIGNvbnN0
IFJlc291cmNlTWFuYWdlciAqcmVzb3VyY2VNYW5hZ2VyLAotICAgICAgICAgY29uc3QgTGltaXRh
dGlvbnMgJmxpbWl0YXRpb25zKTsKLSAgICB+RGF0YSgpOwotCi0gICAgdWludHB0cl90IGNvbnRl
eHQ7Ci0gICAgR0xpbnQgY2xpZW50VmVyc2lvbjsKLSAgICBjb25zdCBTdGF0ZSAqc3RhdGU7Ci0g
ICAgY29uc3QgQ2FwcyAqY2FwczsKLSAgICBjb25zdCBUZXh0dXJlQ2Fwc01hcCAqdGV4dHVyZUNh
cHM7Ci0gICAgY29uc3QgRXh0ZW5zaW9ucyAqZXh0ZW5zaW9uczsKLSAgICBjb25zdCBSZXNvdXJj
ZU1hbmFnZXIgKnJlc291cmNlTWFuYWdlcjsKLSAgICBjb25zdCBMaW1pdGF0aW9ucyAqbGltaXRh
dGlvbnM7Ci19OwotCi1jbGFzcyBWYWxpZGF0aW9uQ29udGV4dCA6IGFuZ2xlOjpOb25Db3B5YWJs
ZQotewotICBwdWJsaWM6Ci0gICAgVmFsaWRhdGlvbkNvbnRleHQoR0xpbnQgY2xpZW50VmVyc2lv
biwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQ2FwcyAmY2FwcywKLSAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUZXh0dXJlQ2Fwc01hcCAmdGV4dHVyZUNhcHMsCi0gICAgICAgICAgICAgICAgICAgICAgY29u
c3QgRXh0ZW5zaW9ucyAmZXh0ZW5zaW9ucywKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBS
ZXNvdXJjZU1hbmFnZXIgKnJlc291cmNlTWFuYWdlciwKLSAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBMaW1pdGF0aW9ucyAmbGltaXRhdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgYm9v
bCBza2lwVmFsaWRhdGlvbik7Ci0gICAgdmlydHVhbCB+VmFsaWRhdGlvbkNvbnRleHQoKSB7fQot
Ci0gICAgdmlydHVhbCB2b2lkIHJlY29yZEVycm9yKGNvbnN0IEVycm9yICZlcnJvcikgPSAwOwot
Ci0gICAgY29uc3QgRGF0YSAmZ2V0RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1EYXRhOyB9Ci0gICAg
aW50IGdldENsaWVudFZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtRGF0YS5jbGllbnRWZXJzaW9u
OyB9Ci0gICAgY29uc3QgU3RhdGUgJmdldFN0YXRlKCkgY29uc3QgeyByZXR1cm4gKm1EYXRhLnN0
YXRlOyB9Ci0gICAgY29uc3QgQ2FwcyAmZ2V0Q2FwcygpIGNvbnN0IHsgcmV0dXJuICptRGF0YS5j
YXBzOyB9Ci0gICAgY29uc3QgVGV4dHVyZUNhcHNNYXAgJmdldFRleHR1cmVDYXBzKCkgY29uc3Qg
eyByZXR1cm4gKm1EYXRhLnRleHR1cmVDYXBzOyB9Ci0gICAgY29uc3QgRXh0ZW5zaW9ucyAmZ2V0
RXh0ZW5zaW9ucygpIGNvbnN0IHsgcmV0dXJuICptRGF0YS5leHRlbnNpb25zOyB9Ci0gICAgY29u
c3QgTGltaXRhdGlvbnMgJmdldExpbWl0YXRpb25zKCkgY29uc3QgeyByZXR1cm4gKm1EYXRhLmxp
bWl0YXRpb25zOyB9Ci0gICAgYm9vbCBza2lwVmFsaWRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1T
a2lwVmFsaWRhdGlvbjsgfQotCi0gIHByb3RlY3RlZDoKLSAgICBEYXRhIG1EYXRhOwotICAgIGJv
b2wgbVNraXBWYWxpZGF0aW9uOwotfTsKLQotfQotCi0jZW5kaWYgLy8gTElCQU5HTEVfREFUQV9I
XwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0RldmljZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Rldmlj
ZS5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9EZXZpY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCwxMCBAQAogdHlw
ZWRlZiBzdGQ6OnNldDxlZ2w6OkRldmljZSAqPiBEZXZpY2VTZXQ7CiBzdGF0aWMgRGV2aWNlU2V0
ICpHZXREZXZpY2VTZXQoKQogewotICAgIHN0YXRpYyBhdXRvJiBkZXZpY2VzID0gKm5ldyBEZXZp
Y2VTZXQ7CisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgR0NDIGRpYWdub3N0
aWMgaWdub3JlZCAiLVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMiCisgICAgc3RhdGljIERldmljZVNl
dCBkZXZpY2VzOworI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKICAgICByZXR1cm4gJmRldmlj
ZXM7CiB9CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9EaXNw
bGF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvRGlzcGxheS5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9EaXNwbGF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTEgKzQ0
LDE5IEBACiAjICAgICAgIGluY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9EaXNwbGF5
R0xYLmgiCiAjICAgZWxpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0FQUExFKQogIyAgICAgICBp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvRGlzcGxheUNHTC5oIgorIyAgIGVsaWYg
ZGVmaW5lZChBTkdMRV9VU0VfT1pPTkUpCisjICAgICAgIGluY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL2dsL2VnbC9vem9uZS9EaXNwbGF5T3pvbmUuaCIKKyMgICBlbGlmIGRlZmluZWQoQU5HTEVf
UExBVEZPUk1fQU5EUk9JRCkKKyMgICAgICAgaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wv
ZWdsL2FuZHJvaWQvRGlzcGxheUFuZHJvaWQuaCIKICMgICBlbHNlCiAjICAgICAgIGVycm9yIFVu
c3VwcG9ydGVkIE9wZW5HTCBwbGF0Zm9ybS4KICMgICBlbmRpZgogI2VuZGlmCiAKKyNpZiBkZWZp
bmVkKEFOR0xFX0VOQUJMRV9OVUxMKQorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL251bGwv
RGlzcGxheU5VTEwuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgZWdsCiB7CiAKQEAgLTgyLDcgKzkw
LDEwIEBACiAvLyBhc3NvY2lhdGVkIHdpdGggaXQuCiBzdGF0aWMgV2luZG93U3VyZmFjZU1hcCAq
R2V0V2luZG93U3VyZmFjZXMoKQogewotICAgIHN0YXRpYyBhdXRvJiB3aW5kb3dTdXJmYWNlcyA9
ICpuZXcgV2luZG93U3VyZmFjZU1hcDsKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAorI3By
YWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2V4aXQtdGltZS1kZXN0cnVjdG9ycyIKKyAg
ICBzdGF0aWMgV2luZG93U3VyZmFjZU1hcCB3aW5kb3dTdXJmYWNlczsKKyNwcmFnbWEgR0NDIGRp
YWdub3N0aWMgcG9wCiAgICAgcmV0dXJuICZ3aW5kb3dTdXJmYWNlczsKIH0KIApAQCAtODksNyAr
MTAwLDEwIEBACiB0eXBlZGVmIHN0ZDo6bWFwPEVHTE5hdGl2ZURpc3BsYXlUeXBlLCBEaXNwbGF5
ICo+IEFOR0xFUGxhdGZvcm1EaXNwbGF5TWFwOwogc3RhdGljIEFOR0xFUGxhdGZvcm1EaXNwbGF5
TWFwICpHZXRBTkdMRVBsYXRmb3JtRGlzcGxheU1hcCgpCiB7Ci0gICAgc3RhdGljIGF1dG8mIGRp
c3BsYXlzID0gKm5ldyBBTkdMRVBsYXRmb3JtRGlzcGxheU1hcDsKKyNwcmFnbWEgR0NDIGRpYWdu
b3N0aWMgcHVzaAorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2V4aXQtdGltZS1k
ZXN0cnVjdG9ycyIKKyAgICBzdGF0aWMgQU5HTEVQbGF0Zm9ybURpc3BsYXlNYXAgZGlzcGxheXM7
CisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAogICAgIHJldHVybiAmZGlzcGxheXM7CiB9CiAK
QEAgLTk2LDcgKzExMCwxMCBAQAogdHlwZWRlZiBzdGQ6Om1hcDxEZXZpY2UgKiwgRGlzcGxheSAq
PiBEZXZpY2VQbGF0Zm9ybURpc3BsYXlNYXA7CiBzdGF0aWMgRGV2aWNlUGxhdGZvcm1EaXNwbGF5
TWFwICpHZXREZXZpY2VQbGF0Zm9ybURpc3BsYXlNYXAoKQogewotICAgIHN0YXRpYyBhdXRvJiBk
aXNwbGF5cyA9ICpuZXcgRGV2aWNlUGxhdGZvcm1EaXNwbGF5TWFwOworI3ByYWdtYSBHQ0MgZGlh
Z25vc3RpYyBwdXNoCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZXhpdC10aW1l
LWRlc3RydWN0b3JzIgorICAgIHN0YXRpYyBEZXZpY2VQbGF0Zm9ybURpc3BsYXlNYXAgZGlzcGxh
eXM7CisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAogICAgIHJldHVybiAmZGlzcGxheXM7CiB9
CiAKQEAgLTE0MiwxMCArMTU5LDE0IEBACiAjaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfRDNEOSkg
fHwgZGVmaW5lZChBTkdMRV9FTkFCTEVfRDNEMTEpCiAgICAgICAgIC8vIERlZmF1bHQgdG8gRDNE
IGRpc3BsYXlzCiAgICAgICAgIGltcGwgPSBuZXcgcng6OkRpc3BsYXlEM0QoKTsKLSNlbGlmIGRl
ZmluZWQoQU5HTEVfVVNFX1gxMSkgJiYgZGVmaW5lZChBTkdMRV9FTkFCTEVfT1BFTkdMKQorI2Vs
aWYgZGVmaW5lZChBTkdMRV9VU0VfWDExKQogICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5
R0xYKCk7Ci0jZWxpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0FQUExFKSAmJiBkZWZpbmVkKEFO
R0xFX0VOQUJMRV9PUEVOR0wpCisjZWxpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0FQUExFKQog
ICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5Q0dMKCk7CisjZWxpZiBkZWZpbmVkKEFOR0xF
X1VTRV9PWk9ORSkKKyAgICAgICAgaW1wbCA9IG5ldyByeDo6RGlzcGxheU96b25lKCk7CisjZWxp
ZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0FORFJPSUQpCisgICAgICAgIGltcGwgPSBuZXcgcng6
OkRpc3BsYXlBbmRyb2lkKCk7CiAjZWxzZQogICAgICAgICAvLyBObyBkaXNwbGF5IGF2YWlsYWJs
ZQogICAgICAgICBVTlJFQUNIQUJMRSgpOwpAQCAtMTcwLDYgKzE5MSwxMiBAQAogICAgICAgICBp
bXBsID0gbmV3IHJ4OjpEaXNwbGF5R0xYKCk7CiAjZWxpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JN
X0FQUExFKQogICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5Q0dMKCk7CisjZWxpZiBkZWZp
bmVkKEFOR0xFX1VTRV9PWk9ORSkKKyAgICAgICAgLy8gVGhpcyBtaWdodCB3b3JrIGJ1dCBoYXMg
bmV2ZXIgYmVlbiB0cmllZCwgc28gZGlzYWxsb3cgZm9yIG5vdy4KKyAgICAgICAgaW1wbCA9IG51
bGxwdHI7CisjZWxpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0FORFJPSUQpCisgICAgICAgIC8v
IE5vIEdMIHN1cHBvcnQgb24gdGhpcyBwbGF0Zm9ybSwgZmFpbCBkaXNwbGF5IGNyZWF0aW9uLgor
ICAgICAgICBpbXBsID0gbnVsbHB0cjsKICNlbHNlCiAjZXJyb3IgVW5zdXBwb3J0ZWQgT3BlbkdM
IHBsYXRmb3JtLgogI2VuZGlmCkBAIC0xODEsMTMgKzIwOCwyMyBAQAogI2lmIGRlZmluZWQoQU5H
TEVfRU5BQkxFX09QRU5HTCkKICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BF
TkdMRVNfQU5HTEU6CiAjaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9XSU5ET1dTKQotICAgICAg
ICAgIGltcGwgPSBuZXcgcng6OkRpc3BsYXlXR0woKTsKKyAgICAgICAgaW1wbCA9IG5ldyByeDo6
RGlzcGxheVdHTCgpOwogI2VsaWYgZGVmaW5lZChBTkdMRV9VU0VfWDExKQotICAgICAgICAgIGlt
cGwgPSBuZXcgcng6OkRpc3BsYXlHTFgoKTsKKyAgICAgICAgaW1wbCA9IG5ldyByeDo6RGlzcGxh
eUdMWCgpOworI2VsaWYgZGVmaW5lZChBTkdMRV9VU0VfT1pPTkUpCisgICAgICAgIGltcGwgPSBu
ZXcgcng6OkRpc3BsYXlPem9uZSgpOworI2VsaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9BTkRS
T0lEKQorICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5QW5kcm9pZCgpOwogI2Vsc2UKLSAg
ICAgICAgICAvLyBObyBHTEVTIHN1cHBvcnQgb24gdGhpcyBwbGF0Zm9ybSwgZmFpbCBkaXNwbGF5
IGNyZWF0aW9uLgotICAgICAgICAgIGltcGwgPSBudWxscHRyOworICAgICAgICAvLyBObyBHTEVT
IHN1cHBvcnQgb24gdGhpcyBwbGF0Zm9ybSwgZmFpbCBkaXNwbGF5IGNyZWF0aW9uLgorICAgICAg
ICBpbXBsID0gbnVsbHB0cjsKICNlbmRpZgorICAgICAgICBicmVhazsKKyNlbmRpZgorCisjaWYg
ZGVmaW5lZChBTkdMRV9FTkFCTEVfTlVMTCkKKyAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xF
X1RZUEVfTlVMTF9BTkdMRToKKyAgICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5TlVMTCgp
OwogICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAKQEAgLTMwMyw2ICszNDAsNyBAQAogICAgICAg
bUNvbnRleHRTZXQoKSwKICAgICAgIG1TdHJlYW1TZXQoKSwKICAgICAgIG1Jbml0aWFsaXplZChm
YWxzZSksCisgICAgICBtRGV2aWNlTG9zdChmYWxzZSksCiAgICAgICBtQ2FwcygpLAogICAgICAg
bURpc3BsYXlFeHRlbnNpb25zKCksCiAgICAgICBtRGlzcGxheUV4dGVuc2lvblN0cmluZygpLApA
QCAtMzk4LDE3ICs0MzYsOCBAQAogICAgICAgICBpZiAobURpc3BsYXlFeHRlbnNpb25zLmRldmlj
ZVF1ZXJ5KQogICAgICAgICB7CiAgICAgICAgICAgICByeDo6RGV2aWNlSW1wbCAqaW1wbCA9IG51
bGxwdHI7Ci0gICAgICAgICAgICBlcnJvciA9IG1JbXBsZW1lbnRhdGlvbi0+Z2V0RGV2aWNlKCZp
bXBsKTsKLSAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBlcnJvciA9IERldmljZTo6Q3JlYXRlRGV2aWNlKHRoaXMsIGltcGwsICZtRGV2aWNlKTsKLSAg
ICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgQU5HTEVfVFJZ
KG1JbXBsZW1lbnRhdGlvbi0+Z2V0RGV2aWNlKCZpbXBsKSk7CisgICAgICAgICAgICBBTkdMRV9U
UlkoRGV2aWNlOjpDcmVhdGVEZXZpY2UodGhpcywgaW1wbCwgJm1EZXZpY2UpKTsKICAgICAgICAg
fQogICAgICAgICBlbHNlCiAgICAgICAgIHsKQEAgLTUzMCwzMiArNTU5LDIxIEBACiB7CiAgICAg
aWYgKG1JbXBsZW1lbnRhdGlvbi0+dGVzdERldmljZUxvc3QoKSkKICAgICB7Ci0gICAgICAgIEVy
cm9yIGVycm9yID0gcmVzdG9yZUxvc3REZXZpY2UoKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJy
b3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9Cisg
ICAgICAgIEFOR0xFX1RSWShyZXN0b3JlTG9zdERldmljZSgpKTsKICAgICB9CiAKLSAgICByeDo6
U3VyZmFjZUltcGwgKnN1cmZhY2VJbXBsID0gbUltcGxlbWVudGF0aW9uLT5jcmVhdGVXaW5kb3dT
dXJmYWNlKGNvbmZpZ3VyYXRpb24sIHdpbmRvdywgYXR0cmlicyk7Ci0gICAgQVNTRVJUKHN1cmZh
Y2VJbXBsICE9IG51bGxwdHIpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTdXJmYWNlPiBzdXJmYWNl
KAorICAgICAgICBuZXcgV2luZG93U3VyZmFjZShtSW1wbGVtZW50YXRpb24sIGNvbmZpZ3VyYXRp
b24sIHdpbmRvdywgYXR0cmlicykpOworICAgIEFOR0xFX1RSWShzdXJmYWNlLT5pbml0aWFsaXpl
KCkpOwogCi0gICAgRXJyb3IgZXJyb3IgPSBzdXJmYWNlSW1wbC0+aW5pdGlhbGl6ZSgpOwotICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICBTYWZlRGVsZXRlKHN1cmZhY2VJ
bXBsKTsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBU1NFUlQob3V0U3VyZmFj
ZSAhPSBudWxscHRyKTsKKyAgICAqb3V0U3VyZmFjZSA9IHN1cmZhY2UucmVsZWFzZSgpOworICAg
IG1JbXBsZW1lbnRhdGlvbi0+Z2V0U3VyZmFjZVNldCgpLmluc2VydCgqb3V0U3VyZmFjZSk7CiAK
LSAgICBTdXJmYWNlICpzdXJmYWNlID0gbmV3IFN1cmZhY2Uoc3VyZmFjZUltcGwsIEVHTF9XSU5E
T1dfQklULCBjb25maWd1cmF0aW9uLCBhdHRyaWJzKTsKLSAgICBtSW1wbGVtZW50YXRpb24tPmdl
dFN1cmZhY2VTZXQoKS5pbnNlcnQoc3VyZmFjZSk7Ci0KICAgICBXaW5kb3dTdXJmYWNlTWFwICp3
aW5kb3dTdXJmYWNlcyA9IEdldFdpbmRvd1N1cmZhY2VzKCk7CiAgICAgQVNTRVJUKHdpbmRvd1N1
cmZhY2VzICYmIHdpbmRvd1N1cmZhY2VzLT5maW5kKHdpbmRvdykgPT0gd2luZG93U3VyZmFjZXMt
PmVuZCgpKTsKLSAgICB3aW5kb3dTdXJmYWNlcy0+aW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKHdpbmRv
dywgc3VyZmFjZSkpOworICAgIHdpbmRvd1N1cmZhY2VzLT5pbnNlcnQoc3RkOjptYWtlX3BhaXIo
d2luZG93LCAqb3V0U3VyZmFjZSkpOwogCi0gICAgQVNTRVJUKG91dFN1cmZhY2UgIT0gbnVsbHB0
cik7Ci0gICAgKm91dFN1cmZhY2UgPSBzdXJmYWNlOwogICAgIHJldHVybiBlZ2w6OkVycm9yKEVH
TF9TVUNDRVNTKTsKIH0KIApAQCAtNTY1LDI4ICs1ODMsMTYgQEAKIAogICAgIGlmIChtSW1wbGVt
ZW50YXRpb24tPnRlc3REZXZpY2VMb3N0KCkpCiAgICAgewotICAgICAgICBFcnJvciBlcnJvciA9
IHJlc3RvcmVMb3N0RGV2aWNlKCk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBBTkdM
RV9UUlkocmVzdG9yZUxvc3REZXZpY2UoKSk7CiAgICAgfQogCi0gICAgcng6OlN1cmZhY2VJbXBs
ICpzdXJmYWNlSW1wbCA9IG1JbXBsZW1lbnRhdGlvbi0+Y3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29u
ZmlndXJhdGlvbiwgYXR0cmlicyk7Ci0gICAgQVNTRVJUKHN1cmZhY2VJbXBsICE9IG51bGxwdHIp
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxTdXJmYWNlPiBzdXJmYWNlKG5ldyBQYnVmZmVyU3VyZmFj
ZShtSW1wbGVtZW50YXRpb24sIGNvbmZpZ3VyYXRpb24sIGF0dHJpYnMpKTsKKyAgICBBTkdMRV9U
Ulkoc3VyZmFjZS0+aW5pdGlhbGl6ZSgpKTsKIAotICAgIEVycm9yIGVycm9yID0gc3VyZmFjZUlt
cGwtPmluaXRpYWxpemUoKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAg
ICAgU2FmZURlbGV0ZShzdXJmYWNlSW1wbCk7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9
CisgICAgQVNTRVJUKG91dFN1cmZhY2UgIT0gbnVsbHB0cik7CisgICAgKm91dFN1cmZhY2UgPSBz
dXJmYWNlLnJlbGVhc2UoKTsKKyAgICBtSW1wbGVtZW50YXRpb24tPmdldFN1cmZhY2VTZXQoKS5p
bnNlcnQoKm91dFN1cmZhY2UpOwogCi0gICAgU3VyZmFjZSAqc3VyZmFjZSA9IG5ldyBTdXJmYWNl
KHN1cmZhY2VJbXBsLCBFR0xfUEJVRkZFUl9CSVQsIGNvbmZpZ3VyYXRpb24sIGF0dHJpYnMpOwot
ICAgIG1JbXBsZW1lbnRhdGlvbi0+Z2V0U3VyZmFjZVNldCgpLmluc2VydChzdXJmYWNlKTsKLQot
ICAgIEFTU0VSVChvdXRTdXJmYWNlICE9IG51bGxwdHIpOwotICAgICpvdXRTdXJmYWNlID0gc3Vy
ZmFjZTsKICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CiB9CiAKQEAgLTU5Nywy
OCArNjAzLDE3IEBACiAKICAgICBpZiAobUltcGxlbWVudGF0aW9uLT50ZXN0RGV2aWNlTG9zdCgp
KQogICAgIHsKLSAgICAgICAgRXJyb3IgZXJyb3IgPSByZXN0b3JlTG9zdERldmljZSgpOwotICAg
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
ZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKHJlc3RvcmVMb3N0RGV2aWNlKCkp
OwogICAgIH0KIAotICAgIHJ4OjpTdXJmYWNlSW1wbCAqc3VyZmFjZUltcGwgPSBtSW1wbGVtZW50
YXRpb24tPmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNvbmZpZ3VyYXRpb24sIHNoYXJl
SGFuZGxlLCBhdHRyaWJzKTsKLSAgICBBU1NFUlQoc3VyZmFjZUltcGwgIT0gbnVsbHB0cik7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFN1cmZhY2U+IHN1cmZhY2UoCisgICAgICAgIG5ldyBQYnVmZmVy
U3VyZmFjZShtSW1wbGVtZW50YXRpb24sIGNvbmZpZ3VyYXRpb24sIHNoYXJlSGFuZGxlLCBhdHRy
aWJzKSk7CisgICAgQU5HTEVfVFJZKHN1cmZhY2UtPmluaXRpYWxpemUoKSk7CiAKLSAgICBFcnJv
ciBlcnJvciA9IHN1cmZhY2VJbXBsLT5pbml0aWFsaXplKCk7Ci0gICAgaWYgKGVycm9yLmlzRXJy
b3IoKSkKLSAgICB7Ci0gICAgICAgIFNhZmVEZWxldGUoc3VyZmFjZUltcGwpOwotICAgICAgICBy
ZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFTU0VSVChvdXRTdXJmYWNlICE9IG51bGxwdHIpOwor
ICAgICpvdXRTdXJmYWNlID0gc3VyZmFjZS5yZWxlYXNlKCk7CisgICAgbUltcGxlbWVudGF0aW9u
LT5nZXRTdXJmYWNlU2V0KCkuaW5zZXJ0KCpvdXRTdXJmYWNlKTsKIAotICAgIFN1cmZhY2UgKnN1
cmZhY2UgPSBuZXcgU3VyZmFjZShzdXJmYWNlSW1wbCwgRUdMX1BCVUZGRVJfQklULCBjb25maWd1
cmF0aW9uLCBhdHRyaWJzKTsKLSAgICBtSW1wbGVtZW50YXRpb24tPmdldFN1cmZhY2VTZXQoKS5p
bnNlcnQoc3VyZmFjZSk7Ci0KLSAgICBBU1NFUlQob3V0U3VyZmFjZSAhPSBudWxscHRyKTsKLSAg
ICAqb3V0U3VyZmFjZSA9IHN1cmZhY2U7CiAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NF
U1MpOwogfQogCkBAIC02MjksMjggKzYyNCwxNyBAQAogCiAgICAgaWYgKG1JbXBsZW1lbnRhdGlv
bi0+dGVzdERldmljZUxvc3QoKSkKICAgICB7Ci0gICAgICAgIEVycm9yIGVycm9yID0gcmVzdG9y
ZUxvc3REZXZpY2UoKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9CisgICAgICAgIEFOR0xFX1RSWShy
ZXN0b3JlTG9zdERldmljZSgpKTsKICAgICB9CiAKLSAgICByeDo6U3VyZmFjZUltcGwgKnN1cmZh
Y2VJbXBsID0gbUltcGxlbWVudGF0aW9uLT5jcmVhdGVQaXhtYXBTdXJmYWNlKGNvbmZpZ3VyYXRp
b24sIG5hdGl2ZVBpeG1hcCwgYXR0cmlicyk7Ci0gICAgQVNTRVJUKHN1cmZhY2VJbXBsICE9IG51
bGxwdHIpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTdXJmYWNlPiBzdXJmYWNlKAorICAgICAgICBu
ZXcgUGl4bWFwU3VyZmFjZShtSW1wbGVtZW50YXRpb24sIGNvbmZpZ3VyYXRpb24sIG5hdGl2ZVBp
eG1hcCwgYXR0cmlicykpOworICAgIEFOR0xFX1RSWShzdXJmYWNlLT5pbml0aWFsaXplKCkpOwog
Ci0gICAgRXJyb3IgZXJyb3IgPSBzdXJmYWNlSW1wbC0+aW5pdGlhbGl6ZSgpOwotICAgIGlmIChl
cnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICBTYWZlRGVsZXRlKHN1cmZhY2VJbXBsKTsK
LSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBU1NFUlQob3V0U3VyZmFjZSAhPSBu
dWxscHRyKTsKKyAgICAqb3V0U3VyZmFjZSA9IHN1cmZhY2UucmVsZWFzZSgpOworICAgIG1JbXBs
ZW1lbnRhdGlvbi0+Z2V0U3VyZmFjZVNldCgpLmluc2VydCgqb3V0U3VyZmFjZSk7CiAKLSAgICBT
dXJmYWNlICpzdXJmYWNlID0gbmV3IFN1cmZhY2Uoc3VyZmFjZUltcGwsIEVHTF9QSVhNQVBfQklU
LCBjb25maWd1cmF0aW9uLCBhdHRyaWJzKTsKLSAgICBtSW1wbGVtZW50YXRpb24tPmdldFN1cmZh
Y2VTZXQoKS5pbnNlcnQoc3VyZmFjZSk7Ci0KLSAgICBBU1NFUlQob3V0U3VyZmFjZSAhPSBudWxs
cHRyKTsKLSAgICAqb3V0U3VyZmFjZSA9IHN1cmZhY2U7CiAgICAgcmV0dXJuIGVnbDo6RXJyb3Io
RUdMX1NVQ0NFU1MpOwogfQogCkBAIC02NjQsMTEgKzY0OCw3IEBACiAKICAgICBpZiAobUltcGxl
bWVudGF0aW9uLT50ZXN0RGV2aWNlTG9zdCgpKQogICAgIHsKLSAgICAgICAgRXJyb3IgZXJyb3Ig
PSByZXN0b3JlTG9zdERldmljZSgpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5H
TEVfVFJZKHJlc3RvcmVMb3N0RGV2aWNlKCkpOwogICAgIH0KIAogICAgIGVnbDo6SW1hZ2VTaWJs
aW5nICpzaWJsaW5nID0gbnVsbHB0cjsKQEAgLTY4OSwxMSArNjY5LDcgQEAKICAgICByeDo6SW1h
Z2VJbXBsICppbWFnZUltcGwgPSBtSW1wbGVtZW50YXRpb24tPmNyZWF0ZUltYWdlKHRhcmdldCwg
c2libGluZywgYXR0cmlicyk7CiAgICAgQVNTRVJUKGltYWdlSW1wbCAhPSBudWxscHRyKTsKIAot
ICAgIEVycm9yIGVycm9yID0gaW1hZ2VJbXBsLT5pbml0aWFsaXplKCk7Ci0gICAgaWYgKGVycm9y
LmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5H
TEVfVFJZKGltYWdlSW1wbC0+aW5pdGlhbGl6ZSgpKTsKIAogICAgIEltYWdlICppbWFnZSA9IG5l
dyBJbWFnZShpbWFnZUltcGwsIHRhcmdldCwgc2libGluZywgYXR0cmlicyk7CiAKQEAgLTcxMSwx
MSArNjg3LDggQEAKIHsKICAgICBBU1NFUlQoaXNJbml0aWFsaXplZCgpKTsKIAotICAgIHJ4OjpT
dHJlYW1JbXBsICpzdHJlYW1JbXBsID0gbUltcGxlbWVudGF0aW9uLT5jcmVhdGVTdHJlYW0oYXR0
cmlicyk7Ci0gICAgQVNTRVJUKHN0cmVhbUltcGwgIT0gbnVsbHB0cik7CisgICAgU3RyZWFtICpz
dHJlYW0gPSBuZXcgU3RyZWFtKHRoaXMsIGF0dHJpYnMpOwogCi0gICAgU3RyZWFtICpzdHJlYW0g
PSBuZXcgU3RyZWFtKHN0cmVhbUltcGwsIGF0dHJpYnMpOwotCiAgICAgQVNTRVJUKHN0cmVhbSAh
PSBudWxscHRyKTsKICAgICBtU3RyZWFtU2V0Lmluc2VydChzdHJlYW0pOwogCkBAIC03MzIsMTUg
KzcwNSwxMCBAQAogCiAgICAgaWYgKG1JbXBsZW1lbnRhdGlvbi0+dGVzdERldmljZUxvc3QoKSkK
ICAgICB7Ci0gICAgICAgIEVycm9yIGVycm9yID0gcmVzdG9yZUxvc3REZXZpY2UoKTsKLSAgICAg
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVy
cm9yOwotICAgICAgICB9CisgICAgICAgIEFOR0xFX1RSWShyZXN0b3JlTG9zdERldmljZSgpKTsK
ICAgICB9CiAKLSAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9ICpvdXRDb250ZXh0ID0KLSAgICAg
ICAgbUltcGxlbWVudGF0aW9uLT5jcmVhdGVDb250ZXh0KGNvbmZpZ3VyYXRpb24sIHNoYXJlQ29u
dGV4dCwgYXR0cmlicyk7CisgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBuZXcgZ2w6OkNvbnRl
eHQobUltcGxlbWVudGF0aW9uLCBjb25maWd1cmF0aW9uLCBzaGFyZUNvbnRleHQsIGF0dHJpYnMp
OwogCiAgICAgQVNTRVJUKGNvbnRleHQgIT0gbnVsbHB0cik7CiAgICAgbUNvbnRleHRTZXQuaW5z
ZXJ0KGNvbnRleHQpOwpAQCAtNzUyLDExICs3MjAsNyBAQAogCiBFcnJvciBEaXNwbGF5OjptYWtl
Q3VycmVudChlZ2w6OlN1cmZhY2UgKmRyYXdTdXJmYWNlLCBlZ2w6OlN1cmZhY2UgKnJlYWRTdXJm
YWNlLCBnbDo6Q29udGV4dCAqY29udGV4dCkKIHsKLSAgICBFcnJvciBlcnJvciA9IG1JbXBsZW1l
bnRhdGlvbi0+bWFrZUN1cnJlbnQoZHJhd1N1cmZhY2UsIHJlYWRTdXJmYWNlLCBjb250ZXh0KTsK
LSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwot
ICAgIH0KKyAgICBBTkdMRV9UUlkobUltcGxlbWVudGF0aW9uLT5tYWtlQ3VycmVudChkcmF3U3Vy
ZmFjZSwgcmVhZFN1cmZhY2UsIGNvbnRleHQpKTsKIAogICAgIGlmIChjb250ZXh0ICE9IG51bGxw
dHIgJiYgZHJhd1N1cmZhY2UgIT0gbnVsbHB0cikKICAgICB7CkBAIC04MjksMjEgKzc5MywzNCBA
QAogYm9vbCBEaXNwbGF5Ojppc0RldmljZUxvc3QoKSBjb25zdAogewogICAgIEFTU0VSVChpc0lu
aXRpYWxpemVkKCkpOwotICAgIHJldHVybiBtSW1wbGVtZW50YXRpb24tPmlzRGV2aWNlTG9zdCgp
OworICAgIHJldHVybiBtRGV2aWNlTG9zdDsKIH0KIAogYm9vbCBEaXNwbGF5Ojp0ZXN0RGV2aWNl
TG9zdCgpCiB7CiAgICAgQVNTRVJUKGlzSW5pdGlhbGl6ZWQoKSk7Ci0gICAgcmV0dXJuIG1JbXBs
ZW1lbnRhdGlvbi0+dGVzdERldmljZUxvc3QoKTsKKworICAgIGlmICghbURldmljZUxvc3QgJiYg
bUltcGxlbWVudGF0aW9uLT50ZXN0RGV2aWNlTG9zdCgpKQorICAgIHsKKyAgICAgICAgbm90aWZ5
RGV2aWNlTG9zdCgpOworICAgIH0KKworICAgIHJldHVybiBtRGV2aWNlTG9zdDsKIH0KIAogdm9p
ZCBEaXNwbGF5Ojpub3RpZnlEZXZpY2VMb3N0KCkKIHsKKyAgICBpZiAobURldmljZUxvc3QpCisg
ICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgZm9yIChDb250ZXh0U2V0OjppdGVy
YXRvciBjb250ZXh0ID0gbUNvbnRleHRTZXQuYmVnaW4oKTsgY29udGV4dCAhPSBtQ29udGV4dFNl
dC5lbmQoKTsgY29udGV4dCsrKQogICAgIHsKICAgICAgICAgKCpjb250ZXh0KS0+bWFya0NvbnRl
eHRMb3N0KCk7CiAgICAgfQorCisgICAgbURldmljZUxvc3QgPSB0cnVlOwogfQogCiBFcnJvciBE
aXNwbGF5Ojp3YWl0Q2xpZW50KCkgY29uc3QKQEAgLTkxNiw2ICs4OTMsMTAgQEAKICAgICBleHRl
bnNpb25zLnBsYXRmb3JtQU5HTEVPcGVuR0wgPSB0cnVlOwogI2VuZGlmCiAKKyNpZiBkZWZpbmVk
KEFOR0xFX0VOQUJMRV9OVUxMKQorICAgIGV4dGVuc2lvbnMucGxhdGZvcm1BTkdMRU5VTEwgPSB0
cnVlOworI2VuZGlmCisKICNpZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9EM0QxMSkKICAgICBleHRl
bnNpb25zLmRldmljZUNyZWF0aW9uICAgICAgPSB0cnVlOwogICAgIGV4dGVuc2lvbnMuZGV2aWNl
Q3JlYXRpb25EM0QxMSA9IHRydWU7CkBAIC05NDksNyArOTMwLDEwIEBACiAKIGNvbnN0IHN0ZDo6
c3RyaW5nICZEaXNwbGF5OjpnZXRDbGllbnRFeHRlbnNpb25TdHJpbmcoKQogewotICAgIHN0YXRp
YyBjb25zdCBhdXRvJiBjbGllbnRFeHRlbnNpb25zU3RyaW5nID0gKm5ldyBzdGQ6OnN0cmluZyhH
ZW5lcmF0ZUV4dGVuc2lvbnNTdHJpbmcoZ2V0Q2xpZW50RXh0ZW5zaW9ucygpKSk7CisjcHJhZ21h
IEdDQyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdl
eGl0LXRpbWUtZGVzdHJ1Y3RvcnMiCisgICAgc3RhdGljIGNvbnN0IHN0ZDo6c3RyaW5nIGNsaWVu
dEV4dGVuc2lvbnNTdHJpbmcgPSBHZW5lcmF0ZUV4dGVuc2lvbnNTdHJpbmcoZ2V0Q2xpZW50RXh0
ZW5zaW9ucygpKTsKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCiAgICAgcmV0dXJuIGNsaWVu
dEV4dGVuc2lvbnNTdHJpbmc7CiB9CiAKQEAgLTk1Nyw2ICs5NDEsMTIgQEAKIHsKICAgICBtRGlz
cGxheUV4dGVuc2lvbnMgPSBtSW1wbGVtZW50YXRpb24tPmdldEV4dGVuc2lvbnMoKTsKIAorICAg
IC8vIFNvbWUgZXh0ZW5zaW9ucyBhcmUgYWx3YXlzIGF2YWlsYWJsZSBiZWNhdXNlIHRoZXkgYXJl
IGltcGxlbWVudGVkIGluIHRoZSBFR0wgbGF5ZXIuCisgICAgbURpc3BsYXlFeHRlbnNpb25zLmNy
ZWF0ZUNvbnRleHQgICAgICAgID0gdHJ1ZTsKKyAgICBtRGlzcGxheUV4dGVuc2lvbnMuY3JlYXRl
Q29udGV4dE5vRXJyb3IgPSB0cnVlOworICAgIG1EaXNwbGF5RXh0ZW5zaW9ucy5jcmVhdGVDb250
ZXh0V2ViR0xDb21wYXRpYmlsaXR5ID0gdHJ1ZTsKKyAgICBtRGlzcGxheUV4dGVuc2lvbnMuY3Jl
YXRlQ29udGV4dEJpbmRHZW5lcmF0ZXNSZXNvdXJjZSA9IHRydWU7CisKICAgICAvLyBGb3JjZSBF
R0xfS0hSX2dldF9hbGxfcHJvY19hZGRyZXNzZXMgb24uCiAgICAgbURpc3BsYXlFeHRlbnNpb25z
LmdldEFsbFByb2NBZGRyZXNzZXMgPSB0cnVlOwogCkBAIC0xMDM3LDQgKzEwMjcsOCBAQAogICAg
IHJldHVybiBtRGV2aWNlOwogfQogCitnbDo6VmVyc2lvbiBEaXNwbGF5OjpnZXRNYXhTdXBwb3J0
ZWRFU1ZlcnNpb24oKSBjb25zdAoreworICAgIHJldHVybiBtSW1wbGVtZW50YXRpb24tPmdldE1h
eFN1cHBvcnRlZEVTVmVyc2lvbigpOwogfQorfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL0Rpc3BsYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvRGlzcGxheS5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRGlzcGxheS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNCwxMSArMTQsMTEgQEAKICNpbmNsdWRlIDxzZXQ+CiAjaW5jbHVkZSA8dmVjdG9yPgog
Ci0jaW5jbHVkZSAibGliQU5HTEUvRXJyb3IuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9BdHRyaWJ1
dGVNYXAuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9DYXBzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
Q29uZmlnLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvQXR0cmlidXRlTWFwLmgiCi0jaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvUmVuZGVyZXIuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9FcnJvci5o
IgorI2luY2x1ZGUgImxpYkFOR0xFL1ZlcnNpb24uaCIKIAogbmFtZXNwYWNlIGdsCiB7CkBAIC0x
MTIsNiArMTEyLDggQEAKICAgICBEZXZpY2UgKmdldERldmljZSgpIGNvbnN0OwogICAgIEVHTGVu
dW0gZ2V0UGxhdGZvcm0oKSBjb25zdCB7IHJldHVybiBtUGxhdGZvcm07IH0KIAorICAgIGdsOjpW
ZXJzaW9uIGdldE1heFN1cHBvcnRlZEVTVmVyc2lvbigpIGNvbnN0OworCiAgIHByaXZhdGU6CiAg
ICAgRGlzcGxheShFR0xlbnVtIHBsYXRmb3JtLCBFR0xOYXRpdmVEaXNwbGF5VHlwZSBkaXNwbGF5
SWQsIERldmljZSAqZWdsRGV2aWNlKTsKIApAQCAtMTM5LDYgKzE0MSw3IEBACiAgICAgU3RyZWFt
U2V0IG1TdHJlYW1TZXQ7CiAKICAgICBib29sIG1Jbml0aWFsaXplZDsKKyAgICBib29sIG1EZXZp
Y2VMb3N0OwogCiAgICAgQ2FwcyBtQ2FwczsKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL0ZlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvRmVuY2UuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRmVuY2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05LDEzICs5LDEyIEBACiAKICNpbmNsdWRlICJsaWJBTkdMRS9GZW5jZS5oIgogCisjaW5j
bHVkZSAiYW5nbGVfZ2wuaCIKKworI2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9GZW5jZU5WSW1wbC5oIgogI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL0ZlbmNlU3luY0ltcGwuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9S
ZW5kZXJlci5oIgotI2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKIAotI2luY2x1ZGUgImFu
Z2xlX2dsLmgiCi0KIG5hbWVzcGFjZSBnbAogewogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvRmxvYXQxNlRvRmxvYXQzMi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Zsb2F0MTZUb0Zsb2F0MzIuY3BwCShy
ZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
RmxvYXQxNlRvRmxvYXQzMi5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMjAzICswLDAgQEAKLS8v
Ci0vLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCi0vLwotCi0vLyBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQuCi0K
LW5hbWVzcGFjZSBnbAotewotCi1jb25zdCBzdGF0aWMgdW5zaWduZWQgZ19tYW50aXNzYVsyMDQ4
XSA9IHsKLSAgICAweDAwMDAwMDAwLAotICAgIDB4MzM4MDAwMDAsCi0gICAgMHgzNDAwMDAwMCwK
LSAgICAweDM0NDAwMDAwLAotICAgIDB4MzQ4MDAwMDAsCi0gICAgMHgzNGEwMDAwMCwKLSAgICAw
eDM0YzAwMDAwLAotICAgIDB4MzRlMDAwMDAsCi0gICAgMHgzNTAwMDAwMCwKLSAgICAweDM1MTAw
MDAwLAotICAgIDB4MzUyMDAwMDAsCi0gICAgMHgzNTMwMDAwMCwKLSAgICAweDM1NDAwMDAwLAot
ICAgIDB4MzU1MDAwMDAsCi0gICAgMHgzNTYwMDAwMCwKLSAgICAweDM1NzAwMDAwLAotICAgIDB4
MzU4MDAwMDAsCi0gICAgMHgzNTg4MDAwMCwKLSAgICAweDM1OTAwMDAwLAotICAgIDB4MzU5ODAw
MDAsCi0gICAgMHgzNWEwMDAwMCwKLSAgICAweDM1YTgwMDAwLAotICAgIDB4MzViMDAwMDAsCi0g
ICAgMHgzNWI4MDAwMCwKLSAgICAweDM1YzAwMDAwLAotICAgIDB4MzVjODAwMDAsCi0gICAgMHgz
NWQwMDAwMCwKLSAgICAweDM1ZDgwMDAwLAotICAgIDB4MzVlMDAwMDAsCi0gICAgMHgzNWU4MDAw
MCwKLSAgICAweDM1ZjAwMDAwLAotICAgIDB4MzVmODAwMDAsCi0gICAgMHgzNjAwMDAwMCwKLSAg
ICAweDM2MDQwMDAwLAotICAgIDB4MzYwODAwMDAsCi0gICAgMHgzNjBjMDAwMCwKLSAgICAweDM2
MTAwMDAwLAotICAgIDB4MzYxNDAwMDAsCi0gICAgMHgzNjE4MDAwMCwKLSAgICAweDM2MWMwMDAw
LAotICAgIDB4MzYyMDAwMDAsCi0gICAgMHgzNjI0MDAwMCwKLSAgICAweDM2MjgwMDAwLAotICAg
IDB4MzYyYzAwMDAsCi0gICAgMHgzNjMwMDAwMCwKLSAgICAweDM2MzQwMDAwLAotICAgIDB4MzYz
ODAwMDAsCi0gICAgMHgzNjNjMDAwMCwKLSAgICAweDM2NDAwMDAwLAotICAgIDB4MzY0NDAwMDAs
Ci0gICAgMHgzNjQ4MDAwMCwKLSAgICAweDM2NGMwMDAwLAotICAgIDB4MzY1MDAwMDAsCi0gICAg
MHgzNjU0MDAwMCwKLSAgICAweDM2NTgwMDAwLAotICAgIDB4MzY1YzAwMDAsCi0gICAgMHgzNjYw
MDAwMCwKLSAgICAweDM2NjQwMDAwLAotICAgIDB4MzY2ODAwMDAsCi0gICAgMHgzNjZjMDAwMCwK
LSAgICAweDM2NzAwMDAwLAotICAgIDB4MzY3NDAwMDAsCi0gICAgMHgzNjc4MDAwMCwKLSAgICAw
eDM2N2MwMDAwLAotICAgIDB4MzY4MDAwMDAsCi0gICAgMHgzNjgyMDAwMCwKLSAgICAweDM2ODQw
MDAwLAotICAgIDB4MzY4NjAwMDAsCi0gICAgMHgzNjg4MDAwMCwKLSAgICAweDM2OGEwMDAwLAot
ICAgIDB4MzY4YzAwMDAsCi0gICAgMHgzNjhlMDAwMCwKLSAgICAweDM2OTAwMDAwLAotICAgIDB4
MzY5MjAwMDAsCi0gICAgMHgzNjk0MDAwMCwKLSAgICAweDM2OTYwMDAwLAotICAgIDB4MzY5ODAw
MDAsCi0gICAgMHgzNjlhMDAwMCwKLSAgICAweDM2OWMwMDAwLAotICAgIDB4MzY5ZTAwMDAsCi0g
ICAgMHgzNmEwMDAwMCwKLSAgICAweDM2YTIwMDAwLAotICAgIDB4MzZhNDAwMDAsCi0gICAgMHgz
NmE2MDAwMCwKLSAgICAweDM2YTgwMDAwLAotICAgIDB4MzZhYTAwMDAsCi0gICAgMHgzNmFjMDAw
MCwKLSAgICAweDM2YWUwMDAwLAotICAgIDB4MzZiMDAwMDAsCi0gICAgMHgzNmIyMDAwMCwKLSAg
ICAweDM2YjQwMDAwLAotICAgIDB4MzZiNjAwMDAsCi0gICAgMHgzNmI4MDAwMCwKLSAgICAweDM2
YmEwMDAwLAotICAgIDB4MzZiYzAwMDAsCi0gICAgMHgzNmJlMDAwMCwKLSAgICAweDM2YzAwMDAw
LAotICAgIDB4MzZjMjAwMDAsCi0gICAgMHgzNmM0MDAwMCwKLSAgICAweDM2YzYwMDAwLAotICAg
IDB4MzZjODAwMDAsCi0gICAgMHgzNmNhMDAwMCwKLSAgICAweDM2Y2MwMDAwLAotICAgIDB4MzZj
ZTAwMDAsCi0gICAgMHgzNmQwMDAwMCwKLSAgICAweDM2ZDIwMDAwLAotICAgIDB4MzZkNDAwMDAs
Ci0gICAgMHgzNmQ2MDAwMCwKLSAgICAweDM2ZDgwMDAwLAotICAgIDB4MzZkYTAwMDAsCi0gICAg
MHgzNmRjMDAwMCwKLSAgICAweDM2ZGUwMDAwLAotICAgIDB4MzZlMDAwMDAsCi0gICAgMHgzNmUy
MDAwMCwKLSAgICAweDM2ZTQwMDAwLAotICAgIDB4MzZlNjAwMDAsCi0gICAgMHgzNmU4MDAwMCwK
LSAgICAweDM2ZWEwMDAwLAotICAgIDB4MzZlYzAwMDAsCi0gICAgMHgzNmVlMDAwMCwKLSAgICAw
eDM2ZjAwMDAwLAotICAgIDB4MzZmMjAwMDAsCi0gICAgMHgzNmY0MDAwMCwKLSAgICAweDM2ZjYw
MDAwLAotICAgIDB4MzZmODAwMDAsCi0gICAgMHgzNmZhMDAwMCwKLSAgICAweDM2ZmMwMDAwLAot
ICAgIDB4MzZmZTAwMDAsCi0gICAgMHgzNzAwMDAwMCwKLSAgICAweDM3MDEwMDAwLAotICAgIDB4
MzcwMjAwMDAsCi0gICAgMHgzNzAzMDAwMCwKLSAgICAweDM3MDQwMDAwLAotICAgIDB4MzcwNTAw
MDAsCi0gICAgMHgzNzA2MDAwMCwKLSAgICAweDM3MDcwMDAwLAotICAgIDB4MzcwODAwMDAsCi0g
ICAgMHgzNzA5MDAwMCwKLSAgICAweDM3MGEwMDAwLAotICAgIDB4MzcwYjAwMDAsCi0gICAgMHgz
NzBjMDAwMCwKLSAgICAweDM3MGQwMDAwLAotICAgIDB4MzcwZTAwMDAsCi0gICAgMHgzNzBmMDAw
MCwKLSAgICAweDM3MTAwMDAwLAotICAgIDB4MzcxMTAwMDAsCi0gICAgMHgzNzEyMDAwMCwKLSAg
ICAweDM3MTMwMDAwLAotICAgIDB4MzcxNDAwMDAsCi0gICAgMHgzNzE1MDAwMCwKLSAgICAweDM3
MTYwMDAwLAotICAgIDB4MzcxNzAwMDAsCi0gICAgMHgzNzE4MDAwMCwKLSAgICAweDM3MTkwMDAw
LAotICAgIDB4MzcxYTAwMDAsCi0gICAgMHgzNzFiMDAwMCwKLSAgICAweDM3MWMwMDAwLAotICAg
IDB4MzcxZDAwMDAsCi0gICAgMHgzNzFlMDAwMCwKLSAgICAweDM3MWYwMDAwLAotICAgIDB4Mzcy
MDAwMDAsCi0gICAgMHgzNzIxMDAwMCwKLSAgICAweDM3MjIwMDAwLAotICAgIDB4MzcyMzAwMDAs
Ci0gICAgMHgzNzI0MDAwMCwKLSAgICAweDM3MjUwMDAwLAotICAgIDB4MzcyNjAwMDAsCi0gICAg
MHgzNzI3MDAwMCwKLSAgICAweDM3MjgwMDAwLAotICAgIDB4MzcyOTAwMDAsCi0gICAgMHgzNzJh
MDAwMCwKLSAgICAweDM3MmIwMDAwLAotICAgIDB4MzcyYzAwMDAsCi0gICAgMHgzNzJkMDAwMCwK
LSAgICAweDM3MmUwMDAwLAotICAgIDB4MzcyZjAwMDAsCi0gICAgMHgzNzMwMDAwMCwKLSAgICAw
eDM3MzEwMDAwLAotICAgIDB4MzczMjAwMDAsCi0gICAgMHgzNzMzMDAwMCwKLSAgICAweDM3MzQw
MDAwLAotICAgIDB4MzczNTAwMDAsCi0gICAgMHgzNzM2MDAwMCwKLSAgICAweDM3MzcwMDAwLAot
ICAgIDB4MzczODAwMDAsCi0gICAgMHgzNzM5MDAwMCwKLSAgICAweDM3M2EwMDAwLAotICAgIDB4
MzczYjAwMDAsCi0gICAgMHgzNzNjMDAwMCwKLSAgICAweDM3M2QwMDAwLAotICAgIDB4MzczZTAw
MDAsCi0gICAgMHgzNzNmMDAwMCwKLSAgICAweDM3NDAwMDAwLAotICAgIDB4Mzc0MTAwMDAsCi0g
ICAgMHgzNzQyMDAwMCwKLSAgICAweDM3NDMwMDAwLAotICAgIDB4Mzc0NDAwMDAsCi0gICAgMHgz
NzQ1MDAwMCwKLSAgICAweDM3NDYwMDAwLAotICAgIDB4Mzc0NzAwMDAsCi0gICAgMHgzNzQ4MDAw
MCwKLSAgICAweDM3NDkwMDAwLAotICAgIDB4Mzc0YTAwMDAsCi0gICAgMHgzNzRiMDAwMCwKLSAg
ICAweDM3NGMwMDAwLAotICAgIDB4Mzc0ZDAwMDAsCi0gICAgMHgzNzRlMDAwMCwKLSAgICAweDM3
NGYwMDAwLAotICAgIDB4Mzc1MDAwMDAsCi0gICAgMHgzNzUxMDAwMCwKLSAgICAweDM3NTIwMDAw
LAotICAgIDB4Mzc1MzAwMDAsCi0gICAgMHgzNzU0MDAwMCwKLSAgICAweDM3NTUwMDAwLAotICAg
IDB4Mzc1NjAwMDAsCi0gICAgMHgzNzU3MDAwMCwKLSAgICAweDM3NTgwMDAwLAotICAgIDB4Mzc1
OTAwMDAsCi0gICAgMHgzNzVhMDAwMCwKLSAgICAweDM3NWIwMDAwLAotICAgIDB4Mzc1YzAwMDAs
Ci0gICAgMHgzNzVkMDAwMCwKLSAgICAweDM3NWUwMDAwLAotICAgIDB4Mzc1ZjAwMDAsCi0gICAg
MHgzNzYwMDAwMCwKLSAgICAweDM3NjEwMDAwLAotICAgIDB4Mzc2MjAwMDAsCi0gICAgMHgzNzYz
MDAwMCwKLSAgICAweDM3NjQwMDAwLAotICAgIDB4Mzc2NTAwMDAsCi0gICAgMHgzNzY2MDAwMCwK
LSAgICAweDM3NjcwMDAwLAotICAgIDB4Mzc2ODAwMDAsCi0gICAgMHgzNzY5MDAwMCwKLSAgICAw
eDM3NmEwMDAwLAotICAgIDB4Mzc2YjAwMDAsCi0gICAgMHgzNzZjMDAwMCwKLSAgICAweDM3NmQw
MDAwLAotICAgIDB4Mzc2ZTAwMDAsCi0gICAgMHgzNzZmMDAwMCwKLSAgICAweDM3NzAwMDAwLAot
ICAgIDB4Mzc3MTAwMDAsCi0gICAgMHgzNzcyMDAwMCwKLSAgICAweDM3NzMwMDAwLAotICAgIDB4
Mzc3NDAwMDAsCi0gICAgMHgzNzc1MDAwMCwKLSAgICAweDM3NzYwMDAwLAotICAgIDB4Mzc3NzAw
MDAsCi0gICAgMHgzNzc4MDAwMCwKLSAgICAweDM3NzkwMDAwLAotICAgIDB4Mzc3YTAwMDAsCi0g
ICAgMHgzNzdiMDAwMCwKLSAgICAweDM3N2MwMDAwLAotICAgIDB4Mzc3ZDAwMDAsCi0gICAgMHgz
NzdlMDAwMCwKLSAgICAweDM3N2YwMDAwLAotICAgIDB4Mzc4MDAwMDAsCi0gICAgMHgzNzgwODAw
MCwKLSAgICAweDM3ODEwMDAwLAotICAgIDB4Mzc4MTgwMDAsCi0gICAgMHgzNzgyMDAwMCwKLSAg
ICAweDM3ODI4MDAwLAotICAgIDB4Mzc4MzAwMDAsCi0gICAgMHgzNzgzODAwMCwKLSAgICAweDM3
ODQwMDAwLAotICAgIDB4Mzc4NDgwMDAsCi0gICAgMHgzNzg1MDAwMCwKLSAgICAweDM3ODU4MDAw
LAotICAgIDB4Mzc4NjAwMDAsCi0gICAgMHgzNzg2ODAwMCwKLSAgICAweDM3ODcwMDAwLAotICAg
IDB4Mzc4NzgwMDAsCi0gICAgMHgzNzg4MDAwMCwKLSAgICAweDM3ODg4MDAwLAotICAgIDB4Mzc4
OTAwMDAsCi0gICAgMHgzNzg5ODAwMCwKLSAgICAweDM3OGEwMDAwLAotICAgIDB4Mzc4YTgwMDAs
Ci0gICAgMHgzNzhiMDAwMCwKLSAgICAweDM3OGI4MDAwLAotICAgIDB4Mzc4YzAwMDAsCi0gICAg
MHgzNzhjODAwMCwKLSAgICAweDM3OGQwMDAwLAotICAgIDB4Mzc4ZDgwMDAsCi0gICAgMHgzNzhl
MDAwMCwKLSAgICAweDM3OGU4MDAwLAotICAgIDB4Mzc4ZjAwMDAsCi0gICAgMHgzNzhmODAwMCwK
LSAgICAweDM3OTAwMDAwLAotICAgIDB4Mzc5MDgwMDAsCi0gICAgMHgzNzkxMDAwMCwKLSAgICAw
eDM3OTE4MDAwLAotICAgIDB4Mzc5MjAwMDAsCi0gICAgMHgzNzkyODAwMCwKLSAgICAweDM3OTMw
MDAwLAotICAgIDB4Mzc5MzgwMDAsCi0gICAgMHgzNzk0MDAwMCwKLSAgICAweDM3OTQ4MDAwLAot
ICAgIDB4Mzc5NTAwMDAsCi0gICAgMHgzNzk1ODAwMCwKLSAgICAweDM3OTYwMDAwLAotICAgIDB4
Mzc5NjgwMDAsCi0gICAgMHgzNzk3MDAwMCwKLSAgICAweDM3OTc4MDAwLAotICAgIDB4Mzc5ODAw
MDAsCi0gICAgMHgzNzk4ODAwMCwKLSAgICAweDM3OTkwMDAwLAotICAgIDB4Mzc5OTgwMDAsCi0g
ICAgMHgzNzlhMDAwMCwKLSAgICAweDM3OWE4MDAwLAotICAgIDB4Mzc5YjAwMDAsCi0gICAgMHgz
NzliODAwMCwKLSAgICAweDM3OWMwMDAwLAotICAgIDB4Mzc5YzgwMDAsCi0gICAgMHgzNzlkMDAw
MCwKLSAgICAweDM3OWQ4MDAwLAotICAgIDB4Mzc5ZTAwMDAsCi0gICAgMHgzNzllODAwMCwKLSAg
ICAweDM3OWYwMDAwLAotICAgIDB4Mzc5ZjgwMDAsCi0gICAgMHgzN2EwMDAwMCwKLSAgICAweDM3
YTA4MDAwLAotICAgIDB4MzdhMTAwMDAsCi0gICAgMHgzN2ExODAwMCwKLSAgICAweDM3YTIwMDAw
LAotICAgIDB4MzdhMjgwMDAsCi0gICAgMHgzN2EzMDAwMCwKLSAgICAweDM3YTM4MDAwLAotICAg
IDB4MzdhNDAwMDAsCi0gICAgMHgzN2E0ODAwMCwKLSAgICAweDM3YTUwMDAwLAotICAgIDB4Mzdh
NTgwMDAsCi0gICAgMHgzN2E2MDAwMCwKLSAgICAweDM3YTY4MDAwLAotICAgIDB4MzdhNzAwMDAs
Ci0gICAgMHgzN2E3ODAwMCwKLSAgICAweDM3YTgwMDAwLAotICAgIDB4MzdhODgwMDAsCi0gICAg
MHgzN2E5MDAwMCwKLSAgICAweDM3YTk4MDAwLAotICAgIDB4MzdhYTAwMDAsCi0gICAgMHgzN2Fh
ODAwMCwKLSAgICAweDM3YWIwMDAwLAotICAgIDB4MzdhYjgwMDAsCi0gICAgMHgzN2FjMDAwMCwK
LSAgICAweDM3YWM4MDAwLAotICAgIDB4MzdhZDAwMDAsCi0gICAgMHgzN2FkODAwMCwKLSAgICAw
eDM3YWUwMDAwLAotICAgIDB4MzdhZTgwMDAsCi0gICAgMHgzN2FmMDAwMCwKLSAgICAweDM3YWY4
MDAwLAotICAgIDB4MzdiMDAwMDAsCi0gICAgMHgzN2IwODAwMCwKLSAgICAweDM3YjEwMDAwLAot
ICAgIDB4MzdiMTgwMDAsCi0gICAgMHgzN2IyMDAwMCwKLSAgICAweDM3YjI4MDAwLAotICAgIDB4
MzdiMzAwMDAsCi0gICAgMHgzN2IzODAwMCwKLSAgICAweDM3YjQwMDAwLAotICAgIDB4MzdiNDgw
MDAsCi0gICAgMHgzN2I1MDAwMCwKLSAgICAweDM3YjU4MDAwLAotICAgIDB4MzdiNjAwMDAsCi0g
ICAgMHgzN2I2ODAwMCwKLSAgICAweDM3YjcwMDAwLAotICAgIDB4MzdiNzgwMDAsCi0gICAgMHgz
N2I4MDAwMCwKLSAgICAweDM3Yjg4MDAwLAotICAgIDB4MzdiOTAwMDAsCi0gICAgMHgzN2I5ODAw
MCwKLSAgICAweDM3YmEwMDAwLAotICAgIDB4MzdiYTgwMDAsCi0gICAgMHgzN2JiMDAwMCwKLSAg
ICAweDM3YmI4MDAwLAotICAgIDB4MzdiYzAwMDAsCi0gICAgMHgzN2JjODAwMCwKLSAgICAweDM3
YmQwMDAwLAotICAgIDB4MzdiZDgwMDAsCi0gICAgMHgzN2JlMDAwMCwKLSAgICAweDM3YmU4MDAw
LAotICAgIDB4MzdiZjAwMDAsCi0gICAgMHgzN2JmODAwMCwKLSAgICAweDM3YzAwMDAwLAotICAg
IDB4MzdjMDgwMDAsCi0gICAgMHgzN2MxMDAwMCwKLSAgICAweDM3YzE4MDAwLAotICAgIDB4Mzdj
MjAwMDAsCi0gICAgMHgzN2MyODAwMCwKLSAgICAweDM3YzMwMDAwLAotICAgIDB4MzdjMzgwMDAs
Ci0gICAgMHgzN2M0MDAwMCwKLSAgICAweDM3YzQ4MDAwLAotICAgIDB4MzdjNTAwMDAsCi0gICAg
MHgzN2M1ODAwMCwKLSAgICAweDM3YzYwMDAwLAotICAgIDB4MzdjNjgwMDAsCi0gICAgMHgzN2M3
MDAwMCwKLSAgICAweDM3Yzc4MDAwLAotICAgIDB4MzdjODAwMDAsCi0gICAgMHgzN2M4ODAwMCwK
LSAgICAweDM3YzkwMDAwLAotICAgIDB4MzdjOTgwMDAsCi0gICAgMHgzN2NhMDAwMCwKLSAgICAw
eDM3Y2E4MDAwLAotICAgIDB4MzdjYjAwMDAsCi0gICAgMHgzN2NiODAwMCwKLSAgICAweDM3Y2Mw
MDAwLAotICAgIDB4MzdjYzgwMDAsCi0gICAgMHgzN2NkMDAwMCwKLSAgICAweDM3Y2Q4MDAwLAot
ICAgIDB4MzdjZTAwMDAsCi0gICAgMHgzN2NlODAwMCwKLSAgICAweDM3Y2YwMDAwLAotICAgIDB4
MzdjZjgwMDAsCi0gICAgMHgzN2QwMDAwMCwKLSAgICAweDM3ZDA4MDAwLAotICAgIDB4MzdkMTAw
MDAsCi0gICAgMHgzN2QxODAwMCwKLSAgICAweDM3ZDIwMDAwLAotICAgIDB4MzdkMjgwMDAsCi0g
ICAgMHgzN2QzMDAwMCwKLSAgICAweDM3ZDM4MDAwLAotICAgIDB4MzdkNDAwMDAsCi0gICAgMHgz
N2Q0ODAwMCwKLSAgICAweDM3ZDUwMDAwLAotICAgIDB4MzdkNTgwMDAsCi0gICAgMHgzN2Q2MDAw
MCwKLSAgICAweDM3ZDY4MDAwLAotICAgIDB4MzdkNzAwMDAsCi0gICAgMHgzN2Q3ODAwMCwKLSAg
ICAweDM3ZDgwMDAwLAotICAgIDB4MzdkODgwMDAsCi0gICAgMHgzN2Q5MDAwMCwKLSAgICAweDM3
ZDk4MDAwLAotICAgIDB4MzdkYTAwMDAsCi0gICAgMHgzN2RhODAwMCwKLSAgICAweDM3ZGIwMDAw
LAotICAgIDB4MzdkYjgwMDAsCi0gICAgMHgzN2RjMDAwMCwKLSAgICAweDM3ZGM4MDAwLAotICAg
IDB4MzdkZDAwMDAsCi0gICAgMHgzN2RkODAwMCwKLSAgICAweDM3ZGUwMDAwLAotICAgIDB4Mzdk
ZTgwMDAsCi0gICAgMHgzN2RmMDAwMCwKLSAgICAweDM3ZGY4MDAwLAotICAgIDB4MzdlMDAwMDAs
Ci0gICAgMHgzN2UwODAwMCwKLSAgICAweDM3ZTEwMDAwLAotICAgIDB4MzdlMTgwMDAsCi0gICAg
MHgzN2UyMDAwMCwKLSAgICAweDM3ZTI4MDAwLAotICAgIDB4MzdlMzAwMDAsCi0gICAgMHgzN2Uz
ODAwMCwKLSAgICAweDM3ZTQwMDAwLAotICAgIDB4MzdlNDgwMDAsCi0gICAgMHgzN2U1MDAwMCwK
LSAgICAweDM3ZTU4MDAwLAotICAgIDB4MzdlNjAwMDAsCi0gICAgMHgzN2U2ODAwMCwKLSAgICAw
eDM3ZTcwMDAwLAotICAgIDB4MzdlNzgwMDAsCi0gICAgMHgzN2U4MDAwMCwKLSAgICAweDM3ZTg4
MDAwLAotICAgIDB4MzdlOTAwMDAsCi0gICAgMHgzN2U5ODAwMCwKLSAgICAweDM3ZWEwMDAwLAot
ICAgIDB4MzdlYTgwMDAsCi0gICAgMHgzN2ViMDAwMCwKLSAgICAweDM3ZWI4MDAwLAotICAgIDB4
MzdlYzAwMDAsCi0gICAgMHgzN2VjODAwMCwKLSAgICAweDM3ZWQwMDAwLAotICAgIDB4MzdlZDgw
MDAsCi0gICAgMHgzN2VlMDAwMCwKLSAgICAweDM3ZWU4MDAwLAotICAgIDB4MzdlZjAwMDAsCi0g
ICAgMHgzN2VmODAwMCwKLSAgICAweDM3ZjAwMDAwLAotICAgIDB4MzdmMDgwMDAsCi0gICAgMHgz
N2YxMDAwMCwKLSAgICAweDM3ZjE4MDAwLAotICAgIDB4MzdmMjAwMDAsCi0gICAgMHgzN2YyODAw
MCwKLSAgICAweDM3ZjMwMDAwLAotICAgIDB4MzdmMzgwMDAsCi0gICAgMHgzN2Y0MDAwMCwKLSAg
ICAweDM3ZjQ4MDAwLAotICAgIDB4MzdmNTAwMDAsCi0gICAgMHgzN2Y1ODAwMCwKLSAgICAweDM3
ZjYwMDAwLAotICAgIDB4MzdmNjgwMDAsCi0gICAgMHgzN2Y3MDAwMCwKLSAgICAweDM3Zjc4MDAw
LAotICAgIDB4MzdmODAwMDAsCi0gICAgMHgzN2Y4ODAwMCwKLSAgICAweDM3ZjkwMDAwLAotICAg
IDB4MzdmOTgwMDAsCi0gICAgMHgzN2ZhMDAwMCwKLSAgICAweDM3ZmE4MDAwLAotICAgIDB4Mzdm
YjAwMDAsCi0gICAgMHgzN2ZiODAwMCwKLSAgICAweDM3ZmMwMDAwLAotICAgIDB4MzdmYzgwMDAs
Ci0gICAgMHgzN2ZkMDAwMCwKLSAgICAweDM3ZmQ4MDAwLAotICAgIDB4MzdmZTAwMDAsCi0gICAg
MHgzN2ZlODAwMCwKLSAgICAweDM3ZmYwMDAwLAotICAgIDB4MzdmZjgwMDAsCi0gICAgMHgzODAw
MDAwMCwKLSAgICAweDM4MDA0MDAwLAotICAgIDB4MzgwMDgwMDAsCi0gICAgMHgzODAwYzAwMCwK
LSAgICAweDM4MDEwMDAwLAotICAgIDB4MzgwMTQwMDAsCi0gICAgMHgzODAxODAwMCwKLSAgICAw
eDM4MDFjMDAwLAotICAgIDB4MzgwMjAwMDAsCi0gICAgMHgzODAyNDAwMCwKLSAgICAweDM4MDI4
MDAwLAotICAgIDB4MzgwMmMwMDAsCi0gICAgMHgzODAzMDAwMCwKLSAgICAweDM4MDM0MDAwLAot
ICAgIDB4MzgwMzgwMDAsCi0gICAgMHgzODAzYzAwMCwKLSAgICAweDM4MDQwMDAwLAotICAgIDB4
MzgwNDQwMDAsCi0gICAgMHgzODA0ODAwMCwKLSAgICAweDM4MDRjMDAwLAotICAgIDB4MzgwNTAw
MDAsCi0gICAgMHgzODA1NDAwMCwKLSAgICAweDM4MDU4MDAwLAotICAgIDB4MzgwNWMwMDAsCi0g
ICAgMHgzODA2MDAwMCwKLSAgICAweDM4MDY0MDAwLAotICAgIDB4MzgwNjgwMDAsCi0gICAgMHgz
ODA2YzAwMCwKLSAgICAweDM4MDcwMDAwLAotICAgIDB4MzgwNzQwMDAsCi0gICAgMHgzODA3ODAw
MCwKLSAgICAweDM4MDdjMDAwLAotICAgIDB4MzgwODAwMDAsCi0gICAgMHgzODA4NDAwMCwKLSAg
ICAweDM4MDg4MDAwLAotICAgIDB4MzgwOGMwMDAsCi0gICAgMHgzODA5MDAwMCwKLSAgICAweDM4
MDk0MDAwLAotICAgIDB4MzgwOTgwMDAsCi0gICAgMHgzODA5YzAwMCwKLSAgICAweDM4MGEwMDAw
LAotICAgIDB4MzgwYTQwMDAsCi0gICAgMHgzODBhODAwMCwKLSAgICAweDM4MGFjMDAwLAotICAg
IDB4MzgwYjAwMDAsCi0gICAgMHgzODBiNDAwMCwKLSAgICAweDM4MGI4MDAwLAotICAgIDB4Mzgw
YmMwMDAsCi0gICAgMHgzODBjMDAwMCwKLSAgICAweDM4MGM0MDAwLAotICAgIDB4MzgwYzgwMDAs
Ci0gICAgMHgzODBjYzAwMCwKLSAgICAweDM4MGQwMDAwLAotICAgIDB4MzgwZDQwMDAsCi0gICAg
MHgzODBkODAwMCwKLSAgICAweDM4MGRjMDAwLAotICAgIDB4MzgwZTAwMDAsCi0gICAgMHgzODBl
NDAwMCwKLSAgICAweDM4MGU4MDAwLAotICAgIDB4MzgwZWMwMDAsCi0gICAgMHgzODBmMDAwMCwK
LSAgICAweDM4MGY0MDAwLAotICAgIDB4MzgwZjgwMDAsCi0gICAgMHgzODBmYzAwMCwKLSAgICAw
eDM4MTAwMDAwLAotICAgIDB4MzgxMDQwMDAsCi0gICAgMHgzODEwODAwMCwKLSAgICAweDM4MTBj
MDAwLAotICAgIDB4MzgxMTAwMDAsCi0gICAgMHgzODExNDAwMCwKLSAgICAweDM4MTE4MDAwLAot
ICAgIDB4MzgxMWMwMDAsCi0gICAgMHgzODEyMDAwMCwKLSAgICAweDM4MTI0MDAwLAotICAgIDB4
MzgxMjgwMDAsCi0gICAgMHgzODEyYzAwMCwKLSAgICAweDM4MTMwMDAwLAotICAgIDB4MzgxMzQw
MDAsCi0gICAgMHgzODEzODAwMCwKLSAgICAweDM4MTNjMDAwLAotICAgIDB4MzgxNDAwMDAsCi0g
ICAgMHgzODE0NDAwMCwKLSAgICAweDM4MTQ4MDAwLAotICAgIDB4MzgxNGMwMDAsCi0gICAgMHgz
ODE1MDAwMCwKLSAgICAweDM4MTU0MDAwLAotICAgIDB4MzgxNTgwMDAsCi0gICAgMHgzODE1YzAw
MCwKLSAgICAweDM4MTYwMDAwLAotICAgIDB4MzgxNjQwMDAsCi0gICAgMHgzODE2ODAwMCwKLSAg
ICAweDM4MTZjMDAwLAotICAgIDB4MzgxNzAwMDAsCi0gICAgMHgzODE3NDAwMCwKLSAgICAweDM4
MTc4MDAwLAotICAgIDB4MzgxN2MwMDAsCi0gICAgMHgzODE4MDAwMCwKLSAgICAweDM4MTg0MDAw
LAotICAgIDB4MzgxODgwMDAsCi0gICAgMHgzODE4YzAwMCwKLSAgICAweDM4MTkwMDAwLAotICAg
IDB4MzgxOTQwMDAsCi0gICAgMHgzODE5ODAwMCwKLSAgICAweDM4MTljMDAwLAotICAgIDB4Mzgx
YTAwMDAsCi0gICAgMHgzODFhNDAwMCwKLSAgICAweDM4MWE4MDAwLAotICAgIDB4MzgxYWMwMDAs
Ci0gICAgMHgzODFiMDAwMCwKLSAgICAweDM4MWI0MDAwLAotICAgIDB4MzgxYjgwMDAsCi0gICAg
MHgzODFiYzAwMCwKLSAgICAweDM4MWMwMDAwLAotICAgIDB4MzgxYzQwMDAsCi0gICAgMHgzODFj
ODAwMCwKLSAgICAweDM4MWNjMDAwLAotICAgIDB4MzgxZDAwMDAsCi0gICAgMHgzODFkNDAwMCwK
LSAgICAweDM4MWQ4MDAwLAotICAgIDB4MzgxZGMwMDAsCi0gICAgMHgzODFlMDAwMCwKLSAgICAw
eDM4MWU0MDAwLAotICAgIDB4MzgxZTgwMDAsCi0gICAgMHgzODFlYzAwMCwKLSAgICAweDM4MWYw
MDAwLAotICAgIDB4MzgxZjQwMDAsCi0gICAgMHgzODFmODAwMCwKLSAgICAweDM4MWZjMDAwLAot
ICAgIDB4MzgyMDAwMDAsCi0gICAgMHgzODIwNDAwMCwKLSAgICAweDM4MjA4MDAwLAotICAgIDB4
MzgyMGMwMDAsCi0gICAgMHgzODIxMDAwMCwKLSAgICAweDM4MjE0MDAwLAotICAgIDB4MzgyMTgw
MDAsCi0gICAgMHgzODIxYzAwMCwKLSAgICAweDM4MjIwMDAwLAotICAgIDB4MzgyMjQwMDAsCi0g
ICAgMHgzODIyODAwMCwKLSAgICAweDM4MjJjMDAwLAotICAgIDB4MzgyMzAwMDAsCi0gICAgMHgz
ODIzNDAwMCwKLSAgICAweDM4MjM4MDAwLAotICAgIDB4MzgyM2MwMDAsCi0gICAgMHgzODI0MDAw
MCwKLSAgICAweDM4MjQ0MDAwLAotICAgIDB4MzgyNDgwMDAsCi0gICAgMHgzODI0YzAwMCwKLSAg
ICAweDM4MjUwMDAwLAotICAgIDB4MzgyNTQwMDAsCi0gICAgMHgzODI1ODAwMCwKLSAgICAweDM4
MjVjMDAwLAotICAgIDB4MzgyNjAwMDAsCi0gICAgMHgzODI2NDAwMCwKLSAgICAweDM4MjY4MDAw
LAotICAgIDB4MzgyNmMwMDAsCi0gICAgMHgzODI3MDAwMCwKLSAgICAweDM4Mjc0MDAwLAotICAg
IDB4MzgyNzgwMDAsCi0gICAgMHgzODI3YzAwMCwKLSAgICAweDM4MjgwMDAwLAotICAgIDB4Mzgy
ODQwMDAsCi0gICAgMHgzODI4ODAwMCwKLSAgICAweDM4MjhjMDAwLAotICAgIDB4MzgyOTAwMDAs
Ci0gICAgMHgzODI5NDAwMCwKLSAgICAweDM4Mjk4MDAwLAotICAgIDB4MzgyOWMwMDAsCi0gICAg
MHgzODJhMDAwMCwKLSAgICAweDM4MmE0MDAwLAotICAgIDB4MzgyYTgwMDAsCi0gICAgMHgzODJh
YzAwMCwKLSAgICAweDM4MmIwMDAwLAotICAgIDB4MzgyYjQwMDAsCi0gICAgMHgzODJiODAwMCwK
LSAgICAweDM4MmJjMDAwLAotICAgIDB4MzgyYzAwMDAsCi0gICAgMHgzODJjNDAwMCwKLSAgICAw
eDM4MmM4MDAwLAotICAgIDB4MzgyY2MwMDAsCi0gICAgMHgzODJkMDAwMCwKLSAgICAweDM4MmQ0
MDAwLAotICAgIDB4MzgyZDgwMDAsCi0gICAgMHgzODJkYzAwMCwKLSAgICAweDM4MmUwMDAwLAot
ICAgIDB4MzgyZTQwMDAsCi0gICAgMHgzODJlODAwMCwKLSAgICAweDM4MmVjMDAwLAotICAgIDB4
MzgyZjAwMDAsCi0gICAgMHgzODJmNDAwMCwKLSAgICAweDM4MmY4MDAwLAotICAgIDB4MzgyZmMw
MDAsCi0gICAgMHgzODMwMDAwMCwKLSAgICAweDM4MzA0MDAwLAotICAgIDB4MzgzMDgwMDAsCi0g
ICAgMHgzODMwYzAwMCwKLSAgICAweDM4MzEwMDAwLAotICAgIDB4MzgzMTQwMDAsCi0gICAgMHgz
ODMxODAwMCwKLSAgICAweDM4MzFjMDAwLAotICAgIDB4MzgzMjAwMDAsCi0gICAgMHgzODMyNDAw
MCwKLSAgICAweDM4MzI4MDAwLAotICAgIDB4MzgzMmMwMDAsCi0gICAgMHgzODMzMDAwMCwKLSAg
ICAweDM4MzM0MDAwLAotICAgIDB4MzgzMzgwMDAsCi0gICAgMHgzODMzYzAwMCwKLSAgICAweDM4
MzQwMDAwLAotICAgIDB4MzgzNDQwMDAsCi0gICAgMHgzODM0ODAwMCwKLSAgICAweDM4MzRjMDAw
LAotICAgIDB4MzgzNTAwMDAsCi0gICAgMHgzODM1NDAwMCwKLSAgICAweDM4MzU4MDAwLAotICAg
IDB4MzgzNWMwMDAsCi0gICAgMHgzODM2MDAwMCwKLSAgICAweDM4MzY0MDAwLAotICAgIDB4Mzgz
NjgwMDAsCi0gICAgMHgzODM2YzAwMCwKLSAgICAweDM4MzcwMDAwLAotICAgIDB4MzgzNzQwMDAs
Ci0gICAgMHgzODM3ODAwMCwKLSAgICAweDM4MzdjMDAwLAotICAgIDB4MzgzODAwMDAsCi0gICAg
MHgzODM4NDAwMCwKLSAgICAweDM4Mzg4MDAwLAotICAgIDB4MzgzOGMwMDAsCi0gICAgMHgzODM5
MDAwMCwKLSAgICAweDM4Mzk0MDAwLAotICAgIDB4MzgzOTgwMDAsCi0gICAgMHgzODM5YzAwMCwK
LSAgICAweDM4M2EwMDAwLAotICAgIDB4MzgzYTQwMDAsCi0gICAgMHgzODNhODAwMCwKLSAgICAw
eDM4M2FjMDAwLAotICAgIDB4MzgzYjAwMDAsCi0gICAgMHgzODNiNDAwMCwKLSAgICAweDM4M2I4
MDAwLAotICAgIDB4MzgzYmMwMDAsCi0gICAgMHgzODNjMDAwMCwKLSAgICAweDM4M2M0MDAwLAot
ICAgIDB4MzgzYzgwMDAsCi0gICAgMHgzODNjYzAwMCwKLSAgICAweDM4M2QwMDAwLAotICAgIDB4
MzgzZDQwMDAsCi0gICAgMHgzODNkODAwMCwKLSAgICAweDM4M2RjMDAwLAotICAgIDB4MzgzZTAw
MDAsCi0gICAgMHgzODNlNDAwMCwKLSAgICAweDM4M2U4MDAwLAotICAgIDB4MzgzZWMwMDAsCi0g
ICAgMHgzODNmMDAwMCwKLSAgICAweDM4M2Y0MDAwLAotICAgIDB4MzgzZjgwMDAsCi0gICAgMHgz
ODNmYzAwMCwKLSAgICAweDM4NDAwMDAwLAotICAgIDB4Mzg0MDQwMDAsCi0gICAgMHgzODQwODAw
MCwKLSAgICAweDM4NDBjMDAwLAotICAgIDB4Mzg0MTAwMDAsCi0gICAgMHgzODQxNDAwMCwKLSAg
ICAweDM4NDE4MDAwLAotICAgIDB4Mzg0MWMwMDAsCi0gICAgMHgzODQyMDAwMCwKLSAgICAweDM4
NDI0MDAwLAotICAgIDB4Mzg0MjgwMDAsCi0gICAgMHgzODQyYzAwMCwKLSAgICAweDM4NDMwMDAw
LAotICAgIDB4Mzg0MzQwMDAsCi0gICAgMHgzODQzODAwMCwKLSAgICAweDM4NDNjMDAwLAotICAg
IDB4Mzg0NDAwMDAsCi0gICAgMHgzODQ0NDAwMCwKLSAgICAweDM4NDQ4MDAwLAotICAgIDB4Mzg0
NGMwMDAsCi0gICAgMHgzODQ1MDAwMCwKLSAgICAweDM4NDU0MDAwLAotICAgIDB4Mzg0NTgwMDAs
Ci0gICAgMHgzODQ1YzAwMCwKLSAgICAweDM4NDYwMDAwLAotICAgIDB4Mzg0NjQwMDAsCi0gICAg
MHgzODQ2ODAwMCwKLSAgICAweDM4NDZjMDAwLAotICAgIDB4Mzg0NzAwMDAsCi0gICAgMHgzODQ3
NDAwMCwKLSAgICAweDM4NDc4MDAwLAotICAgIDB4Mzg0N2MwMDAsCi0gICAgMHgzODQ4MDAwMCwK
LSAgICAweDM4NDg0MDAwLAotICAgIDB4Mzg0ODgwMDAsCi0gICAgMHgzODQ4YzAwMCwKLSAgICAw
eDM4NDkwMDAwLAotICAgIDB4Mzg0OTQwMDAsCi0gICAgMHgzODQ5ODAwMCwKLSAgICAweDM4NDlj
MDAwLAotICAgIDB4Mzg0YTAwMDAsCi0gICAgMHgzODRhNDAwMCwKLSAgICAweDM4NGE4MDAwLAot
ICAgIDB4Mzg0YWMwMDAsCi0gICAgMHgzODRiMDAwMCwKLSAgICAweDM4NGI0MDAwLAotICAgIDB4
Mzg0YjgwMDAsCi0gICAgMHgzODRiYzAwMCwKLSAgICAweDM4NGMwMDAwLAotICAgIDB4Mzg0YzQw
MDAsCi0gICAgMHgzODRjODAwMCwKLSAgICAweDM4NGNjMDAwLAotICAgIDB4Mzg0ZDAwMDAsCi0g
ICAgMHgzODRkNDAwMCwKLSAgICAweDM4NGQ4MDAwLAotICAgIDB4Mzg0ZGMwMDAsCi0gICAgMHgz
ODRlMDAwMCwKLSAgICAweDM4NGU0MDAwLAotICAgIDB4Mzg0ZTgwMDAsCi0gICAgMHgzODRlYzAw
MCwKLSAgICAweDM4NGYwMDAwLAotICAgIDB4Mzg0ZjQwMDAsCi0gICAgMHgzODRmODAwMCwKLSAg
ICAweDM4NGZjMDAwLAotICAgIDB4Mzg1MDAwMDAsCi0gICAgMHgzODUwNDAwMCwKLSAgICAweDM4
NTA4MDAwLAotICAgIDB4Mzg1MGMwMDAsCi0gICAgMHgzODUxMDAwMCwKLSAgICAweDM4NTE0MDAw
LAotICAgIDB4Mzg1MTgwMDAsCi0gICAgMHgzODUxYzAwMCwKLSAgICAweDM4NTIwMDAwLAotICAg
IDB4Mzg1MjQwMDAsCi0gICAgMHgzODUyODAwMCwKLSAgICAweDM4NTJjMDAwLAotICAgIDB4Mzg1
MzAwMDAsCi0gICAgMHgzODUzNDAwMCwKLSAgICAweDM4NTM4MDAwLAotICAgIDB4Mzg1M2MwMDAs
Ci0gICAgMHgzODU0MDAwMCwKLSAgICAweDM4NTQ0MDAwLAotICAgIDB4Mzg1NDgwMDAsCi0gICAg
MHgzODU0YzAwMCwKLSAgICAweDM4NTUwMDAwLAotICAgIDB4Mzg1NTQwMDAsCi0gICAgMHgzODU1
ODAwMCwKLSAgICAweDM4NTVjMDAwLAotICAgIDB4Mzg1NjAwMDAsCi0gICAgMHgzODU2NDAwMCwK
LSAgICAweDM4NTY4MDAwLAotICAgIDB4Mzg1NmMwMDAsCi0gICAgMHgzODU3MDAwMCwKLSAgICAw
eDM4NTc0MDAwLAotICAgIDB4Mzg1NzgwMDAsCi0gICAgMHgzODU3YzAwMCwKLSAgICAweDM4NTgw
MDAwLAotICAgIDB4Mzg1ODQwMDAsCi0gICAgMHgzODU4ODAwMCwKLSAgICAweDM4NThjMDAwLAot
ICAgIDB4Mzg1OTAwMDAsCi0gICAgMHgzODU5NDAwMCwKLSAgICAweDM4NTk4MDAwLAotICAgIDB4
Mzg1OWMwMDAsCi0gICAgMHgzODVhMDAwMCwKLSAgICAweDM4NWE0MDAwLAotICAgIDB4Mzg1YTgw
MDAsCi0gICAgMHgzODVhYzAwMCwKLSAgICAweDM4NWIwMDAwLAotICAgIDB4Mzg1YjQwMDAsCi0g
ICAgMHgzODViODAwMCwKLSAgICAweDM4NWJjMDAwLAotICAgIDB4Mzg1YzAwMDAsCi0gICAgMHgz
ODVjNDAwMCwKLSAgICAweDM4NWM4MDAwLAotICAgIDB4Mzg1Y2MwMDAsCi0gICAgMHgzODVkMDAw
MCwKLSAgICAweDM4NWQ0MDAwLAotICAgIDB4Mzg1ZDgwMDAsCi0gICAgMHgzODVkYzAwMCwKLSAg
ICAweDM4NWUwMDAwLAotICAgIDB4Mzg1ZTQwMDAsCi0gICAgMHgzODVlODAwMCwKLSAgICAweDM4
NWVjMDAwLAotICAgIDB4Mzg1ZjAwMDAsCi0gICAgMHgzODVmNDAwMCwKLSAgICAweDM4NWY4MDAw
LAotICAgIDB4Mzg1ZmMwMDAsCi0gICAgMHgzODYwMDAwMCwKLSAgICAweDM4NjA0MDAwLAotICAg
IDB4Mzg2MDgwMDAsCi0gICAgMHgzODYwYzAwMCwKLSAgICAweDM4NjEwMDAwLAotICAgIDB4Mzg2
MTQwMDAsCi0gICAgMHgzODYxODAwMCwKLSAgICAweDM4NjFjMDAwLAotICAgIDB4Mzg2MjAwMDAs
Ci0gICAgMHgzODYyNDAwMCwKLSAgICAweDM4NjI4MDAwLAotICAgIDB4Mzg2MmMwMDAsCi0gICAg
MHgzODYzMDAwMCwKLSAgICAweDM4NjM0MDAwLAotICAgIDB4Mzg2MzgwMDAsCi0gICAgMHgzODYz
YzAwMCwKLSAgICAweDM4NjQwMDAwLAotICAgIDB4Mzg2NDQwMDAsCi0gICAgMHgzODY0ODAwMCwK
LSAgICAweDM4NjRjMDAwLAotICAgIDB4Mzg2NTAwMDAsCi0gICAgMHgzODY1NDAwMCwKLSAgICAw
eDM4NjU4MDAwLAotICAgIDB4Mzg2NWMwMDAsCi0gICAgMHgzODY2MDAwMCwKLSAgICAweDM4NjY0
MDAwLAotICAgIDB4Mzg2NjgwMDAsCi0gICAgMHgzODY2YzAwMCwKLSAgICAweDM4NjcwMDAwLAot
ICAgIDB4Mzg2NzQwMDAsCi0gICAgMHgzODY3ODAwMCwKLSAgICAweDM4NjdjMDAwLAotICAgIDB4
Mzg2ODAwMDAsCi0gICAgMHgzODY4NDAwMCwKLSAgICAweDM4Njg4MDAwLAotICAgIDB4Mzg2OGMw
MDAsCi0gICAgMHgzODY5MDAwMCwKLSAgICAweDM4Njk0MDAwLAotICAgIDB4Mzg2OTgwMDAsCi0g
ICAgMHgzODY5YzAwMCwKLSAgICAweDM4NmEwMDAwLAotICAgIDB4Mzg2YTQwMDAsCi0gICAgMHgz
ODZhODAwMCwKLSAgICAweDM4NmFjMDAwLAotICAgIDB4Mzg2YjAwMDAsCi0gICAgMHgzODZiNDAw
MCwKLSAgICAweDM4NmI4MDAwLAotICAgIDB4Mzg2YmMwMDAsCi0gICAgMHgzODZjMDAwMCwKLSAg
ICAweDM4NmM0MDAwLAotICAgIDB4Mzg2YzgwMDAsCi0gICAgMHgzODZjYzAwMCwKLSAgICAweDM4
NmQwMDAwLAotICAgIDB4Mzg2ZDQwMDAsCi0gICAgMHgzODZkODAwMCwKLSAgICAweDM4NmRjMDAw
LAotICAgIDB4Mzg2ZTAwMDAsCi0gICAgMHgzODZlNDAwMCwKLSAgICAweDM4NmU4MDAwLAotICAg
IDB4Mzg2ZWMwMDAsCi0gICAgMHgzODZmMDAwMCwKLSAgICAweDM4NmY0MDAwLAotICAgIDB4Mzg2
ZjgwMDAsCi0gICAgMHgzODZmYzAwMCwKLSAgICAweDM4NzAwMDAwLAotICAgIDB4Mzg3MDQwMDAs
Ci0gICAgMHgzODcwODAwMCwKLSAgICAweDM4NzBjMDAwLAotICAgIDB4Mzg3MTAwMDAsCi0gICAg
MHgzODcxNDAwMCwKLSAgICAweDM4NzE4MDAwLAotICAgIDB4Mzg3MWMwMDAsCi0gICAgMHgzODcy
MDAwMCwKLSAgICAweDM4NzI0MDAwLAotICAgIDB4Mzg3MjgwMDAsCi0gICAgMHgzODcyYzAwMCwK
LSAgICAweDM4NzMwMDAwLAotICAgIDB4Mzg3MzQwMDAsCi0gICAgMHgzODczODAwMCwKLSAgICAw
eDM4NzNjMDAwLAotICAgIDB4Mzg3NDAwMDAsCi0gICAgMHgzODc0NDAwMCwKLSAgICAweDM4NzQ4
MDAwLAotICAgIDB4Mzg3NGMwMDAsCi0gICAgMHgzODc1MDAwMCwKLSAgICAweDM4NzU0MDAwLAot
ICAgIDB4Mzg3NTgwMDAsCi0gICAgMHgzODc1YzAwMCwKLSAgICAweDM4NzYwMDAwLAotICAgIDB4
Mzg3NjQwMDAsCi0gICAgMHgzODc2ODAwMCwKLSAgICAweDM4NzZjMDAwLAotICAgIDB4Mzg3NzAw
MDAsCi0gICAgMHgzODc3NDAwMCwKLSAgICAweDM4Nzc4MDAwLAotICAgIDB4Mzg3N2MwMDAsCi0g
ICAgMHgzODc4MDAwMCwKLSAgICAweDM4Nzg0MDAwLAotICAgIDB4Mzg3ODgwMDAsCi0gICAgMHgz
ODc4YzAwMCwKLSAgICAweDM4NzkwMDAwLAotICAgIDB4Mzg3OTQwMDAsCi0gICAgMHgzODc5ODAw
MCwKLSAgICAweDM4NzljMDAwLAotICAgIDB4Mzg3YTAwMDAsCi0gICAgMHgzODdhNDAwMCwKLSAg
ICAweDM4N2E4MDAwLAotICAgIDB4Mzg3YWMwMDAsCi0gICAgMHgzODdiMDAwMCwKLSAgICAweDM4
N2I0MDAwLAotICAgIDB4Mzg3YjgwMDAsCi0gICAgMHgzODdiYzAwMCwKLSAgICAweDM4N2MwMDAw
LAotICAgIDB4Mzg3YzQwMDAsCi0gICAgMHgzODdjODAwMCwKLSAgICAweDM4N2NjMDAwLAotICAg
IDB4Mzg3ZDAwMDAsCi0gICAgMHgzODdkNDAwMCwKLSAgICAweDM4N2Q4MDAwLAotICAgIDB4Mzg3
ZGMwMDAsCi0gICAgMHgzODdlMDAwMCwKLSAgICAweDM4N2U0MDAwLAotICAgIDB4Mzg3ZTgwMDAs
Ci0gICAgMHgzODdlYzAwMCwKLSAgICAweDM4N2YwMDAwLAotICAgIDB4Mzg3ZjQwMDAsCi0gICAg
MHgzODdmODAwMCwKLSAgICAweDM4N2ZjMDAwLAotICAgIDB4MzgwMDAwMDAsCi0gICAgMHgzODAw
MjAwMCwKLSAgICAweDM4MDA0MDAwLAotICAgIDB4MzgwMDYwMDAsCi0gICAgMHgzODAwODAwMCwK
LSAgICAweDM4MDBhMDAwLAotICAgIDB4MzgwMGMwMDAsCi0gICAgMHgzODAwZTAwMCwKLSAgICAw
eDM4MDEwMDAwLAotICAgIDB4MzgwMTIwMDAsCi0gICAgMHgzODAxNDAwMCwKLSAgICAweDM4MDE2
MDAwLAotICAgIDB4MzgwMTgwMDAsCi0gICAgMHgzODAxYTAwMCwKLSAgICAweDM4MDFjMDAwLAot
ICAgIDB4MzgwMWUwMDAsCi0gICAgMHgzODAyMDAwMCwKLSAgICAweDM4MDIyMDAwLAotICAgIDB4
MzgwMjQwMDAsCi0gICAgMHgzODAyNjAwMCwKLSAgICAweDM4MDI4MDAwLAotICAgIDB4MzgwMmEw
MDAsCi0gICAgMHgzODAyYzAwMCwKLSAgICAweDM4MDJlMDAwLAotICAgIDB4MzgwMzAwMDAsCi0g
ICAgMHgzODAzMjAwMCwKLSAgICAweDM4MDM0MDAwLAotICAgIDB4MzgwMzYwMDAsCi0gICAgMHgz
ODAzODAwMCwKLSAgICAweDM4MDNhMDAwLAotICAgIDB4MzgwM2MwMDAsCi0gICAgMHgzODAzZTAw
MCwKLSAgICAweDM4MDQwMDAwLAotICAgIDB4MzgwNDIwMDAsCi0gICAgMHgzODA0NDAwMCwKLSAg
ICAweDM4MDQ2MDAwLAotICAgIDB4MzgwNDgwMDAsCi0gICAgMHgzODA0YTAwMCwKLSAgICAweDM4
MDRjMDAwLAotICAgIDB4MzgwNGUwMDAsCi0gICAgMHgzODA1MDAwMCwKLSAgICAweDM4MDUyMDAw
LAotICAgIDB4MzgwNTQwMDAsCi0gICAgMHgzODA1NjAwMCwKLSAgICAweDM4MDU4MDAwLAotICAg
IDB4MzgwNWEwMDAsCi0gICAgMHgzODA1YzAwMCwKLSAgICAweDM4MDVlMDAwLAotICAgIDB4Mzgw
NjAwMDAsCi0gICAgMHgzODA2MjAwMCwKLSAgICAweDM4MDY0MDAwLAotICAgIDB4MzgwNjYwMDAs
Ci0gICAgMHgzODA2ODAwMCwKLSAgICAweDM4MDZhMDAwLAotICAgIDB4MzgwNmMwMDAsCi0gICAg
MHgzODA2ZTAwMCwKLSAgICAweDM4MDcwMDAwLAotICAgIDB4MzgwNzIwMDAsCi0gICAgMHgzODA3
NDAwMCwKLSAgICAweDM4MDc2MDAwLAotICAgIDB4MzgwNzgwMDAsCi0gICAgMHgzODA3YTAwMCwK
LSAgICAweDM4MDdjMDAwLAotICAgIDB4MzgwN2UwMDAsCi0gICAgMHgzODA4MDAwMCwKLSAgICAw
eDM4MDgyMDAwLAotICAgIDB4MzgwODQwMDAsCi0gICAgMHgzODA4NjAwMCwKLSAgICAweDM4MDg4
MDAwLAotICAgIDB4MzgwOGEwMDAsCi0gICAgMHgzODA4YzAwMCwKLSAgICAweDM4MDhlMDAwLAot
ICAgIDB4MzgwOTAwMDAsCi0gICAgMHgzODA5MjAwMCwKLSAgICAweDM4MDk0MDAwLAotICAgIDB4
MzgwOTYwMDAsCi0gICAgMHgzODA5ODAwMCwKLSAgICAweDM4MDlhMDAwLAotICAgIDB4MzgwOWMw
MDAsCi0gICAgMHgzODA5ZTAwMCwKLSAgICAweDM4MGEwMDAwLAotICAgIDB4MzgwYTIwMDAsCi0g
ICAgMHgzODBhNDAwMCwKLSAgICAweDM4MGE2MDAwLAotICAgIDB4MzgwYTgwMDAsCi0gICAgMHgz
ODBhYTAwMCwKLSAgICAweDM4MGFjMDAwLAotICAgIDB4MzgwYWUwMDAsCi0gICAgMHgzODBiMDAw
MCwKLSAgICAweDM4MGIyMDAwLAotICAgIDB4MzgwYjQwMDAsCi0gICAgMHgzODBiNjAwMCwKLSAg
ICAweDM4MGI4MDAwLAotICAgIDB4MzgwYmEwMDAsCi0gICAgMHgzODBiYzAwMCwKLSAgICAweDM4
MGJlMDAwLAotICAgIDB4MzgwYzAwMDAsCi0gICAgMHgzODBjMjAwMCwKLSAgICAweDM4MGM0MDAw
LAotICAgIDB4MzgwYzYwMDAsCi0gICAgMHgzODBjODAwMCwKLSAgICAweDM4MGNhMDAwLAotICAg
IDB4MzgwY2MwMDAsCi0gICAgMHgzODBjZTAwMCwKLSAgICAweDM4MGQwMDAwLAotICAgIDB4Mzgw
ZDIwMDAsCi0gICAgMHgzODBkNDAwMCwKLSAgICAweDM4MGQ2MDAwLAotICAgIDB4MzgwZDgwMDAs
Ci0gICAgMHgzODBkYTAwMCwKLSAgICAweDM4MGRjMDAwLAotICAgIDB4MzgwZGUwMDAsCi0gICAg
MHgzODBlMDAwMCwKLSAgICAweDM4MGUyMDAwLAotICAgIDB4MzgwZTQwMDAsCi0gICAgMHgzODBl
NjAwMCwKLSAgICAweDM4MGU4MDAwLAotICAgIDB4MzgwZWEwMDAsCi0gICAgMHgzODBlYzAwMCwK
LSAgICAweDM4MGVlMDAwLAotICAgIDB4MzgwZjAwMDAsCi0gICAgMHgzODBmMjAwMCwKLSAgICAw
eDM4MGY0MDAwLAotICAgIDB4MzgwZjYwMDAsCi0gICAgMHgzODBmODAwMCwKLSAgICAweDM4MGZh
MDAwLAotICAgIDB4MzgwZmMwMDAsCi0gICAgMHgzODBmZTAwMCwKLSAgICAweDM4MTAwMDAwLAot
ICAgIDB4MzgxMDIwMDAsCi0gICAgMHgzODEwNDAwMCwKLSAgICAweDM4MTA2MDAwLAotICAgIDB4
MzgxMDgwMDAsCi0gICAgMHgzODEwYTAwMCwKLSAgICAweDM4MTBjMDAwLAotICAgIDB4MzgxMGUw
MDAsCi0gICAgMHgzODExMDAwMCwKLSAgICAweDM4MTEyMDAwLAotICAgIDB4MzgxMTQwMDAsCi0g
ICAgMHgzODExNjAwMCwKLSAgICAweDM4MTE4MDAwLAotICAgIDB4MzgxMWEwMDAsCi0gICAgMHgz
ODExYzAwMCwKLSAgICAweDM4MTFlMDAwLAotICAgIDB4MzgxMjAwMDAsCi0gICAgMHgzODEyMjAw
MCwKLSAgICAweDM4MTI0MDAwLAotICAgIDB4MzgxMjYwMDAsCi0gICAgMHgzODEyODAwMCwKLSAg
ICAweDM4MTJhMDAwLAotICAgIDB4MzgxMmMwMDAsCi0gICAgMHgzODEyZTAwMCwKLSAgICAweDM4
MTMwMDAwLAotICAgIDB4MzgxMzIwMDAsCi0gICAgMHgzODEzNDAwMCwKLSAgICAweDM4MTM2MDAw
LAotICAgIDB4MzgxMzgwMDAsCi0gICAgMHgzODEzYTAwMCwKLSAgICAweDM4MTNjMDAwLAotICAg
IDB4MzgxM2UwMDAsCi0gICAgMHgzODE0MDAwMCwKLSAgICAweDM4MTQyMDAwLAotICAgIDB4Mzgx
NDQwMDAsCi0gICAgMHgzODE0NjAwMCwKLSAgICAweDM4MTQ4MDAwLAotICAgIDB4MzgxNGEwMDAs
Ci0gICAgMHgzODE0YzAwMCwKLSAgICAweDM4MTRlMDAwLAotICAgIDB4MzgxNTAwMDAsCi0gICAg
MHgzODE1MjAwMCwKLSAgICAweDM4MTU0MDAwLAotICAgIDB4MzgxNTYwMDAsCi0gICAgMHgzODE1
ODAwMCwKLSAgICAweDM4MTVhMDAwLAotICAgIDB4MzgxNWMwMDAsCi0gICAgMHgzODE1ZTAwMCwK
LSAgICAweDM4MTYwMDAwLAotICAgIDB4MzgxNjIwMDAsCi0gICAgMHgzODE2NDAwMCwKLSAgICAw
eDM4MTY2MDAwLAotICAgIDB4MzgxNjgwMDAsCi0gICAgMHgzODE2YTAwMCwKLSAgICAweDM4MTZj
MDAwLAotICAgIDB4MzgxNmUwMDAsCi0gICAgMHgzODE3MDAwMCwKLSAgICAweDM4MTcyMDAwLAot
ICAgIDB4MzgxNzQwMDAsCi0gICAgMHgzODE3NjAwMCwKLSAgICAweDM4MTc4MDAwLAotICAgIDB4
MzgxN2EwMDAsCi0gICAgMHgzODE3YzAwMCwKLSAgICAweDM4MTdlMDAwLAotICAgIDB4MzgxODAw
MDAsCi0gICAgMHgzODE4MjAwMCwKLSAgICAweDM4MTg0MDAwLAotICAgIDB4MzgxODYwMDAsCi0g
ICAgMHgzODE4ODAwMCwKLSAgICAweDM4MThhMDAwLAotICAgIDB4MzgxOGMwMDAsCi0gICAgMHgz
ODE4ZTAwMCwKLSAgICAweDM4MTkwMDAwLAotICAgIDB4MzgxOTIwMDAsCi0gICAgMHgzODE5NDAw
MCwKLSAgICAweDM4MTk2MDAwLAotICAgIDB4MzgxOTgwMDAsCi0gICAgMHgzODE5YTAwMCwKLSAg
ICAweDM4MTljMDAwLAotICAgIDB4MzgxOWUwMDAsCi0gICAgMHgzODFhMDAwMCwKLSAgICAweDM4
MWEyMDAwLAotICAgIDB4MzgxYTQwMDAsCi0gICAgMHgzODFhNjAwMCwKLSAgICAweDM4MWE4MDAw
LAotICAgIDB4MzgxYWEwMDAsCi0gICAgMHgzODFhYzAwMCwKLSAgICAweDM4MWFlMDAwLAotICAg
IDB4MzgxYjAwMDAsCi0gICAgMHgzODFiMjAwMCwKLSAgICAweDM4MWI0MDAwLAotICAgIDB4Mzgx
YjYwMDAsCi0gICAgMHgzODFiODAwMCwKLSAgICAweDM4MWJhMDAwLAotICAgIDB4MzgxYmMwMDAs
Ci0gICAgMHgzODFiZTAwMCwKLSAgICAweDM4MWMwMDAwLAotICAgIDB4MzgxYzIwMDAsCi0gICAg
MHgzODFjNDAwMCwKLSAgICAweDM4MWM2MDAwLAotICAgIDB4MzgxYzgwMDAsCi0gICAgMHgzODFj
YTAwMCwKLSAgICAweDM4MWNjMDAwLAotICAgIDB4MzgxY2UwMDAsCi0gICAgMHgzODFkMDAwMCwK
LSAgICAweDM4MWQyMDAwLAotICAgIDB4MzgxZDQwMDAsCi0gICAgMHgzODFkNjAwMCwKLSAgICAw
eDM4MWQ4MDAwLAotICAgIDB4MzgxZGEwMDAsCi0gICAgMHgzODFkYzAwMCwKLSAgICAweDM4MWRl
MDAwLAotICAgIDB4MzgxZTAwMDAsCi0gICAgMHgzODFlMjAwMCwKLSAgICAweDM4MWU0MDAwLAot
ICAgIDB4MzgxZTYwMDAsCi0gICAgMHgzODFlODAwMCwKLSAgICAweDM4MWVhMDAwLAotICAgIDB4
MzgxZWMwMDAsCi0gICAgMHgzODFlZTAwMCwKLSAgICAweDM4MWYwMDAwLAotICAgIDB4MzgxZjIw
MDAsCi0gICAgMHgzODFmNDAwMCwKLSAgICAweDM4MWY2MDAwLAotICAgIDB4MzgxZjgwMDAsCi0g
ICAgMHgzODFmYTAwMCwKLSAgICAweDM4MWZjMDAwLAotICAgIDB4MzgxZmUwMDAsCi0gICAgMHgz
ODIwMDAwMCwKLSAgICAweDM4MjAyMDAwLAotICAgIDB4MzgyMDQwMDAsCi0gICAgMHgzODIwNjAw
MCwKLSAgICAweDM4MjA4MDAwLAotICAgIDB4MzgyMGEwMDAsCi0gICAgMHgzODIwYzAwMCwKLSAg
ICAweDM4MjBlMDAwLAotICAgIDB4MzgyMTAwMDAsCi0gICAgMHgzODIxMjAwMCwKLSAgICAweDM4
MjE0MDAwLAotICAgIDB4MzgyMTYwMDAsCi0gICAgMHgzODIxODAwMCwKLSAgICAweDM4MjFhMDAw
LAotICAgIDB4MzgyMWMwMDAsCi0gICAgMHgzODIxZTAwMCwKLSAgICAweDM4MjIwMDAwLAotICAg
IDB4MzgyMjIwMDAsCi0gICAgMHgzODIyNDAwMCwKLSAgICAweDM4MjI2MDAwLAotICAgIDB4Mzgy
MjgwMDAsCi0gICAgMHgzODIyYTAwMCwKLSAgICAweDM4MjJjMDAwLAotICAgIDB4MzgyMmUwMDAs
Ci0gICAgMHgzODIzMDAwMCwKLSAgICAweDM4MjMyMDAwLAotICAgIDB4MzgyMzQwMDAsCi0gICAg
MHgzODIzNjAwMCwKLSAgICAweDM4MjM4MDAwLAotICAgIDB4MzgyM2EwMDAsCi0gICAgMHgzODIz
YzAwMCwKLSAgICAweDM4MjNlMDAwLAotICAgIDB4MzgyNDAwMDAsCi0gICAgMHgzODI0MjAwMCwK
LSAgICAweDM4MjQ0MDAwLAotICAgIDB4MzgyNDYwMDAsCi0gICAgMHgzODI0ODAwMCwKLSAgICAw
eDM4MjRhMDAwLAotICAgIDB4MzgyNGMwMDAsCi0gICAgMHgzODI0ZTAwMCwKLSAgICAweDM4MjUw
MDAwLAotICAgIDB4MzgyNTIwMDAsCi0gICAgMHgzODI1NDAwMCwKLSAgICAweDM4MjU2MDAwLAot
ICAgIDB4MzgyNTgwMDAsCi0gICAgMHgzODI1YTAwMCwKLSAgICAweDM4MjVjMDAwLAotICAgIDB4
MzgyNWUwMDAsCi0gICAgMHgzODI2MDAwMCwKLSAgICAweDM4MjYyMDAwLAotICAgIDB4MzgyNjQw
MDAsCi0gICAgMHgzODI2NjAwMCwKLSAgICAweDM4MjY4MDAwLAotICAgIDB4MzgyNmEwMDAsCi0g
ICAgMHgzODI2YzAwMCwKLSAgICAweDM4MjZlMDAwLAotICAgIDB4MzgyNzAwMDAsCi0gICAgMHgz
ODI3MjAwMCwKLSAgICAweDM4Mjc0MDAwLAotICAgIDB4MzgyNzYwMDAsCi0gICAgMHgzODI3ODAw
MCwKLSAgICAweDM4MjdhMDAwLAotICAgIDB4MzgyN2MwMDAsCi0gICAgMHgzODI3ZTAwMCwKLSAg
ICAweDM4MjgwMDAwLAotICAgIDB4MzgyODIwMDAsCi0gICAgMHgzODI4NDAwMCwKLSAgICAweDM4
Mjg2MDAwLAotICAgIDB4MzgyODgwMDAsCi0gICAgMHgzODI4YTAwMCwKLSAgICAweDM4MjhjMDAw
LAotICAgIDB4MzgyOGUwMDAsCi0gICAgMHgzODI5MDAwMCwKLSAgICAweDM4MjkyMDAwLAotICAg
IDB4MzgyOTQwMDAsCi0gICAgMHgzODI5NjAwMCwKLSAgICAweDM4Mjk4MDAwLAotICAgIDB4Mzgy
OWEwMDAsCi0gICAgMHgzODI5YzAwMCwKLSAgICAweDM4MjllMDAwLAotICAgIDB4MzgyYTAwMDAs
Ci0gICAgMHgzODJhMjAwMCwKLSAgICAweDM4MmE0MDAwLAotICAgIDB4MzgyYTYwMDAsCi0gICAg
MHgzODJhODAwMCwKLSAgICAweDM4MmFhMDAwLAotICAgIDB4MzgyYWMwMDAsCi0gICAgMHgzODJh
ZTAwMCwKLSAgICAweDM4MmIwMDAwLAotICAgIDB4MzgyYjIwMDAsCi0gICAgMHgzODJiNDAwMCwK
LSAgICAweDM4MmI2MDAwLAotICAgIDB4MzgyYjgwMDAsCi0gICAgMHgzODJiYTAwMCwKLSAgICAw
eDM4MmJjMDAwLAotICAgIDB4MzgyYmUwMDAsCi0gICAgMHgzODJjMDAwMCwKLSAgICAweDM4MmMy
MDAwLAotICAgIDB4MzgyYzQwMDAsCi0gICAgMHgzODJjNjAwMCwKLSAgICAweDM4MmM4MDAwLAot
ICAgIDB4MzgyY2EwMDAsCi0gICAgMHgzODJjYzAwMCwKLSAgICAweDM4MmNlMDAwLAotICAgIDB4
MzgyZDAwMDAsCi0gICAgMHgzODJkMjAwMCwKLSAgICAweDM4MmQ0MDAwLAotICAgIDB4MzgyZDYw
MDAsCi0gICAgMHgzODJkODAwMCwKLSAgICAweDM4MmRhMDAwLAotICAgIDB4MzgyZGMwMDAsCi0g
ICAgMHgzODJkZTAwMCwKLSAgICAweDM4MmUwMDAwLAotICAgIDB4MzgyZTIwMDAsCi0gICAgMHgz
ODJlNDAwMCwKLSAgICAweDM4MmU2MDAwLAotICAgIDB4MzgyZTgwMDAsCi0gICAgMHgzODJlYTAw
MCwKLSAgICAweDM4MmVjMDAwLAotICAgIDB4MzgyZWUwMDAsCi0gICAgMHgzODJmMDAwMCwKLSAg
ICAweDM4MmYyMDAwLAotICAgIDB4MzgyZjQwMDAsCi0gICAgMHgzODJmNjAwMCwKLSAgICAweDM4
MmY4MDAwLAotICAgIDB4MzgyZmEwMDAsCi0gICAgMHgzODJmYzAwMCwKLSAgICAweDM4MmZlMDAw
LAotICAgIDB4MzgzMDAwMDAsCi0gICAgMHgzODMwMjAwMCwKLSAgICAweDM4MzA0MDAwLAotICAg
IDB4MzgzMDYwMDAsCi0gICAgMHgzODMwODAwMCwKLSAgICAweDM4MzBhMDAwLAotICAgIDB4Mzgz
MGMwMDAsCi0gICAgMHgzODMwZTAwMCwKLSAgICAweDM4MzEwMDAwLAotICAgIDB4MzgzMTIwMDAs
Ci0gICAgMHgzODMxNDAwMCwKLSAgICAweDM4MzE2MDAwLAotICAgIDB4MzgzMTgwMDAsCi0gICAg
MHgzODMxYTAwMCwKLSAgICAweDM4MzFjMDAwLAotICAgIDB4MzgzMWUwMDAsCi0gICAgMHgzODMy
MDAwMCwKLSAgICAweDM4MzIyMDAwLAotICAgIDB4MzgzMjQwMDAsCi0gICAgMHgzODMyNjAwMCwK
LSAgICAweDM4MzI4MDAwLAotICAgIDB4MzgzMmEwMDAsCi0gICAgMHgzODMyYzAwMCwKLSAgICAw
eDM4MzJlMDAwLAotICAgIDB4MzgzMzAwMDAsCi0gICAgMHgzODMzMjAwMCwKLSAgICAweDM4MzM0
MDAwLAotICAgIDB4MzgzMzYwMDAsCi0gICAgMHgzODMzODAwMCwKLSAgICAweDM4MzNhMDAwLAot
ICAgIDB4MzgzM2MwMDAsCi0gICAgMHgzODMzZTAwMCwKLSAgICAweDM4MzQwMDAwLAotICAgIDB4
MzgzNDIwMDAsCi0gICAgMHgzODM0NDAwMCwKLSAgICAweDM4MzQ2MDAwLAotICAgIDB4MzgzNDgw
MDAsCi0gICAgMHgzODM0YTAwMCwKLSAgICAweDM4MzRjMDAwLAotICAgIDB4MzgzNGUwMDAsCi0g
ICAgMHgzODM1MDAwMCwKLSAgICAweDM4MzUyMDAwLAotICAgIDB4MzgzNTQwMDAsCi0gICAgMHgz
ODM1NjAwMCwKLSAgICAweDM4MzU4MDAwLAotICAgIDB4MzgzNWEwMDAsCi0gICAgMHgzODM1YzAw
MCwKLSAgICAweDM4MzVlMDAwLAotICAgIDB4MzgzNjAwMDAsCi0gICAgMHgzODM2MjAwMCwKLSAg
ICAweDM4MzY0MDAwLAotICAgIDB4MzgzNjYwMDAsCi0gICAgMHgzODM2ODAwMCwKLSAgICAweDM4
MzZhMDAwLAotICAgIDB4MzgzNmMwMDAsCi0gICAgMHgzODM2ZTAwMCwKLSAgICAweDM4MzcwMDAw
LAotICAgIDB4MzgzNzIwMDAsCi0gICAgMHgzODM3NDAwMCwKLSAgICAweDM4Mzc2MDAwLAotICAg
IDB4MzgzNzgwMDAsCi0gICAgMHgzODM3YTAwMCwKLSAgICAweDM4MzdjMDAwLAotICAgIDB4Mzgz
N2UwMDAsCi0gICAgMHgzODM4MDAwMCwKLSAgICAweDM4MzgyMDAwLAotICAgIDB4MzgzODQwMDAs
Ci0gICAgMHgzODM4NjAwMCwKLSAgICAweDM4Mzg4MDAwLAotICAgIDB4MzgzOGEwMDAsCi0gICAg
MHgzODM4YzAwMCwKLSAgICAweDM4MzhlMDAwLAotICAgIDB4MzgzOTAwMDAsCi0gICAgMHgzODM5
MjAwMCwKLSAgICAweDM4Mzk0MDAwLAotICAgIDB4MzgzOTYwMDAsCi0gICAgMHgzODM5ODAwMCwK
LSAgICAweDM4MzlhMDAwLAotICAgIDB4MzgzOWMwMDAsCi0gICAgMHgzODM5ZTAwMCwKLSAgICAw
eDM4M2EwMDAwLAotICAgIDB4MzgzYTIwMDAsCi0gICAgMHgzODNhNDAwMCwKLSAgICAweDM4M2E2
MDAwLAotICAgIDB4MzgzYTgwMDAsCi0gICAgMHgzODNhYTAwMCwKLSAgICAweDM4M2FjMDAwLAot
ICAgIDB4MzgzYWUwMDAsCi0gICAgMHgzODNiMDAwMCwKLSAgICAweDM4M2IyMDAwLAotICAgIDB4
MzgzYjQwMDAsCi0gICAgMHgzODNiNjAwMCwKLSAgICAweDM4M2I4MDAwLAotICAgIDB4MzgzYmEw
MDAsCi0gICAgMHgzODNiYzAwMCwKLSAgICAweDM4M2JlMDAwLAotICAgIDB4MzgzYzAwMDAsCi0g
ICAgMHgzODNjMjAwMCwKLSAgICAweDM4M2M0MDAwLAotICAgIDB4MzgzYzYwMDAsCi0gICAgMHgz
ODNjODAwMCwKLSAgICAweDM4M2NhMDAwLAotICAgIDB4MzgzY2MwMDAsCi0gICAgMHgzODNjZTAw
MCwKLSAgICAweDM4M2QwMDAwLAotICAgIDB4MzgzZDIwMDAsCi0gICAgMHgzODNkNDAwMCwKLSAg
ICAweDM4M2Q2MDAwLAotICAgIDB4MzgzZDgwMDAsCi0gICAgMHgzODNkYTAwMCwKLSAgICAweDM4
M2RjMDAwLAotICAgIDB4MzgzZGUwMDAsCi0gICAgMHgzODNlMDAwMCwKLSAgICAweDM4M2UyMDAw
LAotICAgIDB4MzgzZTQwMDAsCi0gICAgMHgzODNlNjAwMCwKLSAgICAweDM4M2U4MDAwLAotICAg
IDB4MzgzZWEwMDAsCi0gICAgMHgzODNlYzAwMCwKLSAgICAweDM4M2VlMDAwLAotICAgIDB4Mzgz
ZjAwMDAsCi0gICAgMHgzODNmMjAwMCwKLSAgICAweDM4M2Y0MDAwLAotICAgIDB4MzgzZjYwMDAs
Ci0gICAgMHgzODNmODAwMCwKLSAgICAweDM4M2ZhMDAwLAotICAgIDB4MzgzZmMwMDAsCi0gICAg
MHgzODNmZTAwMCwKLSAgICAweDM4NDAwMDAwLAotICAgIDB4Mzg0MDIwMDAsCi0gICAgMHgzODQw
NDAwMCwKLSAgICAweDM4NDA2MDAwLAotICAgIDB4Mzg0MDgwMDAsCi0gICAgMHgzODQwYTAwMCwK
LSAgICAweDM4NDBjMDAwLAotICAgIDB4Mzg0MGUwMDAsCi0gICAgMHgzODQxMDAwMCwKLSAgICAw
eDM4NDEyMDAwLAotICAgIDB4Mzg0MTQwMDAsCi0gICAgMHgzODQxNjAwMCwKLSAgICAweDM4NDE4
MDAwLAotICAgIDB4Mzg0MWEwMDAsCi0gICAgMHgzODQxYzAwMCwKLSAgICAweDM4NDFlMDAwLAot
ICAgIDB4Mzg0MjAwMDAsCi0gICAgMHgzODQyMjAwMCwKLSAgICAweDM4NDI0MDAwLAotICAgIDB4
Mzg0MjYwMDAsCi0gICAgMHgzODQyODAwMCwKLSAgICAweDM4NDJhMDAwLAotICAgIDB4Mzg0MmMw
MDAsCi0gICAgMHgzODQyZTAwMCwKLSAgICAweDM4NDMwMDAwLAotICAgIDB4Mzg0MzIwMDAsCi0g
ICAgMHgzODQzNDAwMCwKLSAgICAweDM4NDM2MDAwLAotICAgIDB4Mzg0MzgwMDAsCi0gICAgMHgz
ODQzYTAwMCwKLSAgICAweDM4NDNjMDAwLAotICAgIDB4Mzg0M2UwMDAsCi0gICAgMHgzODQ0MDAw
MCwKLSAgICAweDM4NDQyMDAwLAotICAgIDB4Mzg0NDQwMDAsCi0gICAgMHgzODQ0NjAwMCwKLSAg
ICAweDM4NDQ4MDAwLAotICAgIDB4Mzg0NGEwMDAsCi0gICAgMHgzODQ0YzAwMCwKLSAgICAweDM4
NDRlMDAwLAotICAgIDB4Mzg0NTAwMDAsCi0gICAgMHgzODQ1MjAwMCwKLSAgICAweDM4NDU0MDAw
LAotICAgIDB4Mzg0NTYwMDAsCi0gICAgMHgzODQ1ODAwMCwKLSAgICAweDM4NDVhMDAwLAotICAg
IDB4Mzg0NWMwMDAsCi0gICAgMHgzODQ1ZTAwMCwKLSAgICAweDM4NDYwMDAwLAotICAgIDB4Mzg0
NjIwMDAsCi0gICAgMHgzODQ2NDAwMCwKLSAgICAweDM4NDY2MDAwLAotICAgIDB4Mzg0NjgwMDAs
Ci0gICAgMHgzODQ2YTAwMCwKLSAgICAweDM4NDZjMDAwLAotICAgIDB4Mzg0NmUwMDAsCi0gICAg
MHgzODQ3MDAwMCwKLSAgICAweDM4NDcyMDAwLAotICAgIDB4Mzg0NzQwMDAsCi0gICAgMHgzODQ3
NjAwMCwKLSAgICAweDM4NDc4MDAwLAotICAgIDB4Mzg0N2EwMDAsCi0gICAgMHgzODQ3YzAwMCwK
LSAgICAweDM4NDdlMDAwLAotICAgIDB4Mzg0ODAwMDAsCi0gICAgMHgzODQ4MjAwMCwKLSAgICAw
eDM4NDg0MDAwLAotICAgIDB4Mzg0ODYwMDAsCi0gICAgMHgzODQ4ODAwMCwKLSAgICAweDM4NDhh
MDAwLAotICAgIDB4Mzg0OGMwMDAsCi0gICAgMHgzODQ4ZTAwMCwKLSAgICAweDM4NDkwMDAwLAot
ICAgIDB4Mzg0OTIwMDAsCi0gICAgMHgzODQ5NDAwMCwKLSAgICAweDM4NDk2MDAwLAotICAgIDB4
Mzg0OTgwMDAsCi0gICAgMHgzODQ5YTAwMCwKLSAgICAweDM4NDljMDAwLAotICAgIDB4Mzg0OWUw
MDAsCi0gICAgMHgzODRhMDAwMCwKLSAgICAweDM4NGEyMDAwLAotICAgIDB4Mzg0YTQwMDAsCi0g
ICAgMHgzODRhNjAwMCwKLSAgICAweDM4NGE4MDAwLAotICAgIDB4Mzg0YWEwMDAsCi0gICAgMHgz
ODRhYzAwMCwKLSAgICAweDM4NGFlMDAwLAotICAgIDB4Mzg0YjAwMDAsCi0gICAgMHgzODRiMjAw
MCwKLSAgICAweDM4NGI0MDAwLAotICAgIDB4Mzg0YjYwMDAsCi0gICAgMHgzODRiODAwMCwKLSAg
ICAweDM4NGJhMDAwLAotICAgIDB4Mzg0YmMwMDAsCi0gICAgMHgzODRiZTAwMCwKLSAgICAweDM4
NGMwMDAwLAotICAgIDB4Mzg0YzIwMDAsCi0gICAgMHgzODRjNDAwMCwKLSAgICAweDM4NGM2MDAw
LAotICAgIDB4Mzg0YzgwMDAsCi0gICAgMHgzODRjYTAwMCwKLSAgICAweDM4NGNjMDAwLAotICAg
IDB4Mzg0Y2UwMDAsCi0gICAgMHgzODRkMDAwMCwKLSAgICAweDM4NGQyMDAwLAotICAgIDB4Mzg0
ZDQwMDAsCi0gICAgMHgzODRkNjAwMCwKLSAgICAweDM4NGQ4MDAwLAotICAgIDB4Mzg0ZGEwMDAs
Ci0gICAgMHgzODRkYzAwMCwKLSAgICAweDM4NGRlMDAwLAotICAgIDB4Mzg0ZTAwMDAsCi0gICAg
MHgzODRlMjAwMCwKLSAgICAweDM4NGU0MDAwLAotICAgIDB4Mzg0ZTYwMDAsCi0gICAgMHgzODRl
ODAwMCwKLSAgICAweDM4NGVhMDAwLAotICAgIDB4Mzg0ZWMwMDAsCi0gICAgMHgzODRlZTAwMCwK
LSAgICAweDM4NGYwMDAwLAotICAgIDB4Mzg0ZjIwMDAsCi0gICAgMHgzODRmNDAwMCwKLSAgICAw
eDM4NGY2MDAwLAotICAgIDB4Mzg0ZjgwMDAsCi0gICAgMHgzODRmYTAwMCwKLSAgICAweDM4NGZj
MDAwLAotICAgIDB4Mzg0ZmUwMDAsCi0gICAgMHgzODUwMDAwMCwKLSAgICAweDM4NTAyMDAwLAot
ICAgIDB4Mzg1MDQwMDAsCi0gICAgMHgzODUwNjAwMCwKLSAgICAweDM4NTA4MDAwLAotICAgIDB4
Mzg1MGEwMDAsCi0gICAgMHgzODUwYzAwMCwKLSAgICAweDM4NTBlMDAwLAotICAgIDB4Mzg1MTAw
MDAsCi0gICAgMHgzODUxMjAwMCwKLSAgICAweDM4NTE0MDAwLAotICAgIDB4Mzg1MTYwMDAsCi0g
ICAgMHgzODUxODAwMCwKLSAgICAweDM4NTFhMDAwLAotICAgIDB4Mzg1MWMwMDAsCi0gICAgMHgz
ODUxZTAwMCwKLSAgICAweDM4NTIwMDAwLAotICAgIDB4Mzg1MjIwMDAsCi0gICAgMHgzODUyNDAw
MCwKLSAgICAweDM4NTI2MDAwLAotICAgIDB4Mzg1MjgwMDAsCi0gICAgMHgzODUyYTAwMCwKLSAg
ICAweDM4NTJjMDAwLAotICAgIDB4Mzg1MmUwMDAsCi0gICAgMHgzODUzMDAwMCwKLSAgICAweDM4
NTMyMDAwLAotICAgIDB4Mzg1MzQwMDAsCi0gICAgMHgzODUzNjAwMCwKLSAgICAweDM4NTM4MDAw
LAotICAgIDB4Mzg1M2EwMDAsCi0gICAgMHgzODUzYzAwMCwKLSAgICAweDM4NTNlMDAwLAotICAg
IDB4Mzg1NDAwMDAsCi0gICAgMHgzODU0MjAwMCwKLSAgICAweDM4NTQ0MDAwLAotICAgIDB4Mzg1
NDYwMDAsCi0gICAgMHgzODU0ODAwMCwKLSAgICAweDM4NTRhMDAwLAotICAgIDB4Mzg1NGMwMDAs
Ci0gICAgMHgzODU0ZTAwMCwKLSAgICAweDM4NTUwMDAwLAotICAgIDB4Mzg1NTIwMDAsCi0gICAg
MHgzODU1NDAwMCwKLSAgICAweDM4NTU2MDAwLAotICAgIDB4Mzg1NTgwMDAsCi0gICAgMHgzODU1
YTAwMCwKLSAgICAweDM4NTVjMDAwLAotICAgIDB4Mzg1NWUwMDAsCi0gICAgMHgzODU2MDAwMCwK
LSAgICAweDM4NTYyMDAwLAotICAgIDB4Mzg1NjQwMDAsCi0gICAgMHgzODU2NjAwMCwKLSAgICAw
eDM4NTY4MDAwLAotICAgIDB4Mzg1NmEwMDAsCi0gICAgMHgzODU2YzAwMCwKLSAgICAweDM4NTZl
MDAwLAotICAgIDB4Mzg1NzAwMDAsCi0gICAgMHgzODU3MjAwMCwKLSAgICAweDM4NTc0MDAwLAot
ICAgIDB4Mzg1NzYwMDAsCi0gICAgMHgzODU3ODAwMCwKLSAgICAweDM4NTdhMDAwLAotICAgIDB4
Mzg1N2MwMDAsCi0gICAgMHgzODU3ZTAwMCwKLSAgICAweDM4NTgwMDAwLAotICAgIDB4Mzg1ODIw
MDAsCi0gICAgMHgzODU4NDAwMCwKLSAgICAweDM4NTg2MDAwLAotICAgIDB4Mzg1ODgwMDAsCi0g
ICAgMHgzODU4YTAwMCwKLSAgICAweDM4NThjMDAwLAotICAgIDB4Mzg1OGUwMDAsCi0gICAgMHgz
ODU5MDAwMCwKLSAgICAweDM4NTkyMDAwLAotICAgIDB4Mzg1OTQwMDAsCi0gICAgMHgzODU5NjAw
MCwKLSAgICAweDM4NTk4MDAwLAotICAgIDB4Mzg1OWEwMDAsCi0gICAgMHgzODU5YzAwMCwKLSAg
ICAweDM4NTllMDAwLAotICAgIDB4Mzg1YTAwMDAsCi0gICAgMHgzODVhMjAwMCwKLSAgICAweDM4
NWE0MDAwLAotICAgIDB4Mzg1YTYwMDAsCi0gICAgMHgzODVhODAwMCwKLSAgICAweDM4NWFhMDAw
LAotICAgIDB4Mzg1YWMwMDAsCi0gICAgMHgzODVhZTAwMCwKLSAgICAweDM4NWIwMDAwLAotICAg
IDB4Mzg1YjIwMDAsCi0gICAgMHgzODViNDAwMCwKLSAgICAweDM4NWI2MDAwLAotICAgIDB4Mzg1
YjgwMDAsCi0gICAgMHgzODViYTAwMCwKLSAgICAweDM4NWJjMDAwLAotICAgIDB4Mzg1YmUwMDAs
Ci0gICAgMHgzODVjMDAwMCwKLSAgICAweDM4NWMyMDAwLAotICAgIDB4Mzg1YzQwMDAsCi0gICAg
MHgzODVjNjAwMCwKLSAgICAweDM4NWM4MDAwLAotICAgIDB4Mzg1Y2EwMDAsCi0gICAgMHgzODVj
YzAwMCwKLSAgICAweDM4NWNlMDAwLAotICAgIDB4Mzg1ZDAwMDAsCi0gICAgMHgzODVkMjAwMCwK
LSAgICAweDM4NWQ0MDAwLAotICAgIDB4Mzg1ZDYwMDAsCi0gICAgMHgzODVkODAwMCwKLSAgICAw
eDM4NWRhMDAwLAotICAgIDB4Mzg1ZGMwMDAsCi0gICAgMHgzODVkZTAwMCwKLSAgICAweDM4NWUw
MDAwLAotICAgIDB4Mzg1ZTIwMDAsCi0gICAgMHgzODVlNDAwMCwKLSAgICAweDM4NWU2MDAwLAot
ICAgIDB4Mzg1ZTgwMDAsCi0gICAgMHgzODVlYTAwMCwKLSAgICAweDM4NWVjMDAwLAotICAgIDB4
Mzg1ZWUwMDAsCi0gICAgMHgzODVmMDAwMCwKLSAgICAweDM4NWYyMDAwLAotICAgIDB4Mzg1ZjQw
MDAsCi0gICAgMHgzODVmNjAwMCwKLSAgICAweDM4NWY4MDAwLAotICAgIDB4Mzg1ZmEwMDAsCi0g
ICAgMHgzODVmYzAwMCwKLSAgICAweDM4NWZlMDAwLAotICAgIDB4Mzg2MDAwMDAsCi0gICAgMHgz
ODYwMjAwMCwKLSAgICAweDM4NjA0MDAwLAotICAgIDB4Mzg2MDYwMDAsCi0gICAgMHgzODYwODAw
MCwKLSAgICAweDM4NjBhMDAwLAotICAgIDB4Mzg2MGMwMDAsCi0gICAgMHgzODYwZTAwMCwKLSAg
ICAweDM4NjEwMDAwLAotICAgIDB4Mzg2MTIwMDAsCi0gICAgMHgzODYxNDAwMCwKLSAgICAweDM4
NjE2MDAwLAotICAgIDB4Mzg2MTgwMDAsCi0gICAgMHgzODYxYTAwMCwKLSAgICAweDM4NjFjMDAw
LAotICAgIDB4Mzg2MWUwMDAsCi0gICAgMHgzODYyMDAwMCwKLSAgICAweDM4NjIyMDAwLAotICAg
IDB4Mzg2MjQwMDAsCi0gICAgMHgzODYyNjAwMCwKLSAgICAweDM4NjI4MDAwLAotICAgIDB4Mzg2
MmEwMDAsCi0gICAgMHgzODYyYzAwMCwKLSAgICAweDM4NjJlMDAwLAotICAgIDB4Mzg2MzAwMDAs
Ci0gICAgMHgzODYzMjAwMCwKLSAgICAweDM4NjM0MDAwLAotICAgIDB4Mzg2MzYwMDAsCi0gICAg
MHgzODYzODAwMCwKLSAgICAweDM4NjNhMDAwLAotICAgIDB4Mzg2M2MwMDAsCi0gICAgMHgzODYz
ZTAwMCwKLSAgICAweDM4NjQwMDAwLAotICAgIDB4Mzg2NDIwMDAsCi0gICAgMHgzODY0NDAwMCwK
LSAgICAweDM4NjQ2MDAwLAotICAgIDB4Mzg2NDgwMDAsCi0gICAgMHgzODY0YTAwMCwKLSAgICAw
eDM4NjRjMDAwLAotICAgIDB4Mzg2NGUwMDAsCi0gICAgMHgzODY1MDAwMCwKLSAgICAweDM4NjUy
MDAwLAotICAgIDB4Mzg2NTQwMDAsCi0gICAgMHgzODY1NjAwMCwKLSAgICAweDM4NjU4MDAwLAot
ICAgIDB4Mzg2NWEwMDAsCi0gICAgMHgzODY1YzAwMCwKLSAgICAweDM4NjVlMDAwLAotICAgIDB4
Mzg2NjAwMDAsCi0gICAgMHgzODY2MjAwMCwKLSAgICAweDM4NjY0MDAwLAotICAgIDB4Mzg2NjYw
MDAsCi0gICAgMHgzODY2ODAwMCwKLSAgICAweDM4NjZhMDAwLAotICAgIDB4Mzg2NmMwMDAsCi0g
ICAgMHgzODY2ZTAwMCwKLSAgICAweDM4NjcwMDAwLAotICAgIDB4Mzg2NzIwMDAsCi0gICAgMHgz
ODY3NDAwMCwKLSAgICAweDM4Njc2MDAwLAotICAgIDB4Mzg2NzgwMDAsCi0gICAgMHgzODY3YTAw
MCwKLSAgICAweDM4NjdjMDAwLAotICAgIDB4Mzg2N2UwMDAsCi0gICAgMHgzODY4MDAwMCwKLSAg
ICAweDM4NjgyMDAwLAotICAgIDB4Mzg2ODQwMDAsCi0gICAgMHgzODY4NjAwMCwKLSAgICAweDM4
Njg4MDAwLAotICAgIDB4Mzg2OGEwMDAsCi0gICAgMHgzODY4YzAwMCwKLSAgICAweDM4NjhlMDAw
LAotICAgIDB4Mzg2OTAwMDAsCi0gICAgMHgzODY5MjAwMCwKLSAgICAweDM4Njk0MDAwLAotICAg
IDB4Mzg2OTYwMDAsCi0gICAgMHgzODY5ODAwMCwKLSAgICAweDM4NjlhMDAwLAotICAgIDB4Mzg2
OWMwMDAsCi0gICAgMHgzODY5ZTAwMCwKLSAgICAweDM4NmEwMDAwLAotICAgIDB4Mzg2YTIwMDAs
Ci0gICAgMHgzODZhNDAwMCwKLSAgICAweDM4NmE2MDAwLAotICAgIDB4Mzg2YTgwMDAsCi0gICAg
MHgzODZhYTAwMCwKLSAgICAweDM4NmFjMDAwLAotICAgIDB4Mzg2YWUwMDAsCi0gICAgMHgzODZi
MDAwMCwKLSAgICAweDM4NmIyMDAwLAotICAgIDB4Mzg2YjQwMDAsCi0gICAgMHgzODZiNjAwMCwK
LSAgICAweDM4NmI4MDAwLAotICAgIDB4Mzg2YmEwMDAsCi0gICAgMHgzODZiYzAwMCwKLSAgICAw
eDM4NmJlMDAwLAotICAgIDB4Mzg2YzAwMDAsCi0gICAgMHgzODZjMjAwMCwKLSAgICAweDM4NmM0
MDAwLAotICAgIDB4Mzg2YzYwMDAsCi0gICAgMHgzODZjODAwMCwKLSAgICAweDM4NmNhMDAwLAot
ICAgIDB4Mzg2Y2MwMDAsCi0gICAgMHgzODZjZTAwMCwKLSAgICAweDM4NmQwMDAwLAotICAgIDB4
Mzg2ZDIwMDAsCi0gICAgMHgzODZkNDAwMCwKLSAgICAweDM4NmQ2MDAwLAotICAgIDB4Mzg2ZDgw
MDAsCi0gICAgMHgzODZkYTAwMCwKLSAgICAweDM4NmRjMDAwLAotICAgIDB4Mzg2ZGUwMDAsCi0g
ICAgMHgzODZlMDAwMCwKLSAgICAweDM4NmUyMDAwLAotICAgIDB4Mzg2ZTQwMDAsCi0gICAgMHgz
ODZlNjAwMCwKLSAgICAweDM4NmU4MDAwLAotICAgIDB4Mzg2ZWEwMDAsCi0gICAgMHgzODZlYzAw
MCwKLSAgICAweDM4NmVlMDAwLAotICAgIDB4Mzg2ZjAwMDAsCi0gICAgMHgzODZmMjAwMCwKLSAg
ICAweDM4NmY0MDAwLAotICAgIDB4Mzg2ZjYwMDAsCi0gICAgMHgzODZmODAwMCwKLSAgICAweDM4
NmZhMDAwLAotICAgIDB4Mzg2ZmMwMDAsCi0gICAgMHgzODZmZTAwMCwKLSAgICAweDM4NzAwMDAw
LAotICAgIDB4Mzg3MDIwMDAsCi0gICAgMHgzODcwNDAwMCwKLSAgICAweDM4NzA2MDAwLAotICAg
IDB4Mzg3MDgwMDAsCi0gICAgMHgzODcwYTAwMCwKLSAgICAweDM4NzBjMDAwLAotICAgIDB4Mzg3
MGUwMDAsCi0gICAgMHgzODcxMDAwMCwKLSAgICAweDM4NzEyMDAwLAotICAgIDB4Mzg3MTQwMDAs
Ci0gICAgMHgzODcxNjAwMCwKLSAgICAweDM4NzE4MDAwLAotICAgIDB4Mzg3MWEwMDAsCi0gICAg
MHgzODcxYzAwMCwKLSAgICAweDM4NzFlMDAwLAotICAgIDB4Mzg3MjAwMDAsCi0gICAgMHgzODcy
MjAwMCwKLSAgICAweDM4NzI0MDAwLAotICAgIDB4Mzg3MjYwMDAsCi0gICAgMHgzODcyODAwMCwK
LSAgICAweDM4NzJhMDAwLAotICAgIDB4Mzg3MmMwMDAsCi0gICAgMHgzODcyZTAwMCwKLSAgICAw
eDM4NzMwMDAwLAotICAgIDB4Mzg3MzIwMDAsCi0gICAgMHgzODczNDAwMCwKLSAgICAweDM4NzM2
MDAwLAotICAgIDB4Mzg3MzgwMDAsCi0gICAgMHgzODczYTAwMCwKLSAgICAweDM4NzNjMDAwLAot
ICAgIDB4Mzg3M2UwMDAsCi0gICAgMHgzODc0MDAwMCwKLSAgICAweDM4NzQyMDAwLAotICAgIDB4
Mzg3NDQwMDAsCi0gICAgMHgzODc0NjAwMCwKLSAgICAweDM4NzQ4MDAwLAotICAgIDB4Mzg3NGEw
MDAsCi0gICAgMHgzODc0YzAwMCwKLSAgICAweDM4NzRlMDAwLAotICAgIDB4Mzg3NTAwMDAsCi0g
ICAgMHgzODc1MjAwMCwKLSAgICAweDM4NzU0MDAwLAotICAgIDB4Mzg3NTYwMDAsCi0gICAgMHgz
ODc1ODAwMCwKLSAgICAweDM4NzVhMDAwLAotICAgIDB4Mzg3NWMwMDAsCi0gICAgMHgzODc1ZTAw
MCwKLSAgICAweDM4NzYwMDAwLAotICAgIDB4Mzg3NjIwMDAsCi0gICAgMHgzODc2NDAwMCwKLSAg
ICAweDM4NzY2MDAwLAotICAgIDB4Mzg3NjgwMDAsCi0gICAgMHgzODc2YTAwMCwKLSAgICAweDM4
NzZjMDAwLAotICAgIDB4Mzg3NmUwMDAsCi0gICAgMHgzODc3MDAwMCwKLSAgICAweDM4NzcyMDAw
LAotICAgIDB4Mzg3NzQwMDAsCi0gICAgMHgzODc3NjAwMCwKLSAgICAweDM4Nzc4MDAwLAotICAg
IDB4Mzg3N2EwMDAsCi0gICAgMHgzODc3YzAwMCwKLSAgICAweDM4NzdlMDAwLAotICAgIDB4Mzg3
ODAwMDAsCi0gICAgMHgzODc4MjAwMCwKLSAgICAweDM4Nzg0MDAwLAotICAgIDB4Mzg3ODYwMDAs
Ci0gICAgMHgzODc4ODAwMCwKLSAgICAweDM4NzhhMDAwLAotICAgIDB4Mzg3OGMwMDAsCi0gICAg
MHgzODc4ZTAwMCwKLSAgICAweDM4NzkwMDAwLAotICAgIDB4Mzg3OTIwMDAsCi0gICAgMHgzODc5
NDAwMCwKLSAgICAweDM4Nzk2MDAwLAotICAgIDB4Mzg3OTgwMDAsCi0gICAgMHgzODc5YTAwMCwK
LSAgICAweDM4NzljMDAwLAotICAgIDB4Mzg3OWUwMDAsCi0gICAgMHgzODdhMDAwMCwKLSAgICAw
eDM4N2EyMDAwLAotICAgIDB4Mzg3YTQwMDAsCi0gICAgMHgzODdhNjAwMCwKLSAgICAweDM4N2E4
MDAwLAotICAgIDB4Mzg3YWEwMDAsCi0gICAgMHgzODdhYzAwMCwKLSAgICAweDM4N2FlMDAwLAot
ICAgIDB4Mzg3YjAwMDAsCi0gICAgMHgzODdiMjAwMCwKLSAgICAweDM4N2I0MDAwLAotICAgIDB4
Mzg3YjYwMDAsCi0gICAgMHgzODdiODAwMCwKLSAgICAweDM4N2JhMDAwLAotICAgIDB4Mzg3YmMw
MDAsCi0gICAgMHgzODdiZTAwMCwKLSAgICAweDM4N2MwMDAwLAotICAgIDB4Mzg3YzIwMDAsCi0g
ICAgMHgzODdjNDAwMCwKLSAgICAweDM4N2M2MDAwLAotICAgIDB4Mzg3YzgwMDAsCi0gICAgMHgz
ODdjYTAwMCwKLSAgICAweDM4N2NjMDAwLAotICAgIDB4Mzg3Y2UwMDAsCi0gICAgMHgzODdkMDAw
MCwKLSAgICAweDM4N2QyMDAwLAotICAgIDB4Mzg3ZDQwMDAsCi0gICAgMHgzODdkNjAwMCwKLSAg
ICAweDM4N2Q4MDAwLAotICAgIDB4Mzg3ZGEwMDAsCi0gICAgMHgzODdkYzAwMCwKLSAgICAweDM4
N2RlMDAwLAotICAgIDB4Mzg3ZTAwMDAsCi0gICAgMHgzODdlMjAwMCwKLSAgICAweDM4N2U0MDAw
LAotICAgIDB4Mzg3ZTYwMDAsCi0gICAgMHgzODdlODAwMCwKLSAgICAweDM4N2VhMDAwLAotICAg
IDB4Mzg3ZWMwMDAsCi0gICAgMHgzODdlZTAwMCwKLSAgICAweDM4N2YwMDAwLAotICAgIDB4Mzg3
ZjIwMDAsCi0gICAgMHgzODdmNDAwMCwKLSAgICAweDM4N2Y2MDAwLAotICAgIDB4Mzg3ZjgwMDAs
Ci0gICAgMHgzODdmYTAwMCwKLSAgICAweDM4N2ZjMDAwLAotICAgIDB4Mzg3ZmUwMDAsCi19Owot
Ci1jb25zdCBzdGF0aWMgdW5zaWduZWQgZ19leHBvbmVudFs2NF0gPSB7Ci0gICAgMHgwMDAwMDAw
MCwKLSAgICAweDAwODAwMDAwLAotICAgIDB4MDEwMDAwMDAsCi0gICAgMHgwMTgwMDAwMCwKLSAg
ICAweDAyMDAwMDAwLAotICAgIDB4MDI4MDAwMDAsCi0gICAgMHgwMzAwMDAwMCwKLSAgICAweDAz
ODAwMDAwLAotICAgIDB4MDQwMDAwMDAsCi0gICAgMHgwNDgwMDAwMCwKLSAgICAweDA1MDAwMDAw
LAotICAgIDB4MDU4MDAwMDAsCi0gICAgMHgwNjAwMDAwMCwKLSAgICAweDA2ODAwMDAwLAotICAg
IDB4MDcwMDAwMDAsCi0gICAgMHgwNzgwMDAwMCwKLSAgICAweDA4MDAwMDAwLAotICAgIDB4MDg4
MDAwMDAsCi0gICAgMHgwOTAwMDAwMCwKLSAgICAweDA5ODAwMDAwLAotICAgIDB4MGEwMDAwMDAs
Ci0gICAgMHgwYTgwMDAwMCwKLSAgICAweDBiMDAwMDAwLAotICAgIDB4MGI4MDAwMDAsCi0gICAg
MHgwYzAwMDAwMCwKLSAgICAweDBjODAwMDAwLAotICAgIDB4MGQwMDAwMDAsCi0gICAgMHgwZDgw
MDAwMCwKLSAgICAweDBlMDAwMDAwLAotICAgIDB4MGU4MDAwMDAsCi0gICAgMHgwZjAwMDAwMCwK
LSAgICAweDQ3ODAwMDAwLAotICAgIDB4ODAwMDAwMDAsCi0gICAgMHg4MDgwMDAwMCwKLSAgICAw
eDgxMDAwMDAwLAotICAgIDB4ODE4MDAwMDAsCi0gICAgMHg4MjAwMDAwMCwKLSAgICAweDgyODAw
MDAwLAotICAgIDB4ODMwMDAwMDAsCi0gICAgMHg4MzgwMDAwMCwKLSAgICAweDg0MDAwMDAwLAot
ICAgIDB4ODQ4MDAwMDAsCi0gICAgMHg4NTAwMDAwMCwKLSAgICAweDg1ODAwMDAwLAotICAgIDB4
ODYwMDAwMDAsCi0gICAgMHg4NjgwMDAwMCwKLSAgICAweDg3MDAwMDAwLAotICAgIDB4ODc4MDAw
MDAsCi0gICAgMHg4ODAwMDAwMCwKLSAgICAweDg4ODAwMDAwLAotICAgIDB4ODkwMDAwMDAsCi0g
ICAgMHg4OTgwMDAwMCwKLSAgICAweDhhMDAwMDAwLAotICAgIDB4OGE4MDAwMDAsCi0gICAgMHg4
YjAwMDAwMCwKLSAgICAweDhiODAwMDAwLAotICAgIDB4OGMwMDAwMDAsCi0gICAgMHg4YzgwMDAw
MCwKLSAgICAweDhkMDAwMDAwLAotICAgIDB4OGQ4MDAwMDAsCi0gICAgMHg4ZTAwMDAwMCwKLSAg
ICAweDhlODAwMDAwLAotICAgIDB4OGYwMDAwMDAsCi0gICAgMHhjNzgwMDAwMCwKLX07Ci0KLWNv
bnN0IHN0YXRpYyB1bnNpZ25lZCBnX29mZnNldFs2NF0gPSB7Ci0gICAgMHgwMDAwMDAwMCwKLSAg
ICAweDAwMDAwNDAwLAotICAgIDB4MDAwMDA0MDAsCi0gICAgMHgwMDAwMDQwMCwKLSAgICAweDAw
MDAwNDAwLAotICAgIDB4MDAwMDA0MDAsCi0gICAgMHgwMDAwMDQwMCwKLSAgICAweDAwMDAwNDAw
LAotICAgIDB4MDAwMDA0MDAsCi0gICAgMHgwMDAwMDQwMCwKLSAgICAweDAwMDAwNDAwLAotICAg
IDB4MDAwMDA0MDAsCi0gICAgMHgwMDAwMDQwMCwKLSAgICAweDAwMDAwNDAwLAotICAgIDB4MDAw
MDA0MDAsCi0gICAgMHgwMDAwMDQwMCwKLSAgICAweDAwMDAwNDAwLAotICAgIDB4MDAwMDA0MDAs
Ci0gICAgMHgwMDAwMDQwMCwKLSAgICAweDAwMDAwNDAwLAotICAgIDB4MDAwMDA0MDAsCi0gICAg
MHgwMDAwMDQwMCwKLSAgICAweDAwMDAwNDAwLAotICAgIDB4MDAwMDA0MDAsCi0gICAgMHgwMDAw
MDQwMCwKLSAgICAweDAwMDAwNDAwLAotICAgIDB4MDAwMDA0MDAsCi0gICAgMHgwMDAwMDQwMCwK
LSAgICAweDAwMDAwNDAwLAotICAgIDB4MDAwMDA0MDAsCi0gICAgMHgwMDAwMDQwMCwKLSAgICAw
eDAwMDAwNDAwLAotICAgIDB4MDAwMDAwMDAsCi0gICAgMHgwMDAwMDQwMCwKLSAgICAweDAwMDAw
NDAwLAotICAgIDB4MDAwMDA0MDAsCi0gICAgMHgwMDAwMDQwMCwKLSAgICAweDAwMDAwNDAwLAot
ICAgIDB4MDAwMDA0MDAsCi0gICAgMHgwMDAwMDQwMCwKLSAgICAweDAwMDAwNDAwLAotICAgIDB4
MDAwMDA0MDAsCi0gICAgMHgwMDAwMDQwMCwKLSAgICAweDAwMDAwNDAwLAotICAgIDB4MDAwMDA0
MDAsCi0gICAgMHgwMDAwMDQwMCwKLSAgICAweDAwMDAwNDAwLAotICAgIDB4MDAwMDA0MDAsCi0g
ICAgMHgwMDAwMDQwMCwKLSAgICAweDAwMDAwNDAwLAotICAgIDB4MDAwMDA0MDAsCi0gICAgMHgw
MDAwMDQwMCwKLSAgICAweDAwMDAwNDAwLAotICAgIDB4MDAwMDA0MDAsCi0gICAgMHgwMDAwMDQw
MCwKLSAgICAweDAwMDAwNDAwLAotICAgIDB4MDAwMDA0MDAsCi0gICAgMHgwMDAwMDQwMCwKLSAg
ICAweDAwMDAwNDAwLAotICAgIDB4MDAwMDA0MDAsCi0gICAgMHgwMDAwMDQwMCwKLSAgICAweDAw
MDAwNDAwLAotICAgIDB4MDAwMDA0MDAsCi0gICAgMHgwMDAwMDQwMCwKLX07Ci0KLWZsb2F0IGZs
b2F0MTZUb0Zsb2F0MzIodW5zaWduZWQgc2hvcnQgaCkKLXsKLSAgICB1bnNpZ25lZCBpMzIgPSBn
X21hbnRpc3NhW2dfb2Zmc2V0W2ggPj4gMTBdICsgKGggJiAweDNmZildICsgZ19leHBvbmVudFto
ID4+IDEwXTsKLSAgICByZXR1cm4gKihmbG9hdCopICZpMzI7Ci19Ci19Ci0KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GbG9hdDE2VG9GbG9hdDMyLnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GbG9hdDE2VG9G
bG9hdDMyLnB5CShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvRmxvYXQxNlRvRmxvYXQzMi5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDc4ICsw
LDAgQEAKLSMgQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0jIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSMgZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KLSMKLQotIyBUaGlzIHNjcmlwdCBnZW5lcmF0ZXMgYSBmdW5jdGlvbiB0aGF0IGNv
bnZlcnRzIDE2LWJpdCBwcmVjaXNpb24gZmxvYXRpbmcKLSMgcG9pbnQgbnVtYmVycyB0byAzMi1i
aXQuCi0jIEl0IGlzIGJhc2VkIG9uIGZ0cDovL2Z0cC5mb3gtdG9vbGtpdC5vcmcvcHViL2Zhc3Ro
YWxmZmxvYXRjb252ZXJzaW9uLnBkZi4KLQotZGVmIGNvbnZlcnRNYW50aXNzYShpKToKLSAgICBp
ZiBpID09IDA6Ci0gICAgICAgIHJldHVybiAwCi0gICAgZWxpZiBpIDwgMTAyNDoKLSAgICAgICAg
bSA9IGkgPDwgMTMKLSAgICAgICAgZSA9IDAKLSAgICAgICAgd2hpbGUgbm90IChtICYgMHgwMDgw
MDAwMCk6Ci0gICAgICAgICAgICBlIC09IDB4MDA4MDAwMDAKLSAgICAgICAgICAgIG0gPSBtIDw8
IDEKLSAgICAgICAgbSAmPSB+MHgwMDgwMDAwMAotICAgICAgICBlICs9IDB4Mzg4MDAwMDAKLSAg
ICAgICAgcmV0dXJuIG0gfCBlCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuIDB4MzgwMDAwMDAg
KyAoKGkgLSAxMDI0KSA8PCAxMykKLQotZGVmIGNvbnZlcnRFeHBvbmVudChpKToKLSAgICBpZiBp
ID09IDA6Ci0gICAgICAgIHJldHVybiAwCi0gICAgZWxpZiBpIGluIHJhbmdlKDEsIDMxKToKLSAg
ICAgICAgcmV0dXJuIGkgPDwgMjMKLSAgICBlbGlmIGkgPT0gMzE6Ci0gICAgICAgIHJldHVybiAw
eDQ3ODAwMDAwCi0gICAgZWxpZiBpID09IDMyOgotICAgICAgICByZXR1cm4gMHg4MDAwMDAwMAot
ICAgIGVsaWYgaSBpbiByYW5nZSgzMywgNjMpOgotICAgICAgICByZXR1cm4gMHg4MDAwMDAwMCAr
ICgoaSAtIDMyKSA8PCAyMykKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gMHhDNzgwMDAwMAot
Ci1kZWYgY29udmVydE9mZnNldChpKToKLSAgICBpZiBpID09IDAgb3IgaSA9PSAzMjoKLSAgICAg
ICAgcmV0dXJuIDAKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gMTAyNAotCi1wcmludCAiIiIv
LwotLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgotLy8KLQotLy8gVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkLgot
Ci1uYW1lc3BhY2UgZ2wKLXsKLSIiIgotCi1wcmludCAiY29uc3Qgc3RhdGljIHVuc2lnbmVkIGdf
bWFudGlzc2FbMjA0OF0gPSB7IgotZm9yIGkgaW4gcmFuZ2UoMCwgMjA0OCk6Ci0gICAgcHJpbnQg
IiAgICAlIzAxMHgsIiAlIGNvbnZlcnRNYW50aXNzYShpKQotcHJpbnQgIn07XG4iCi0KLXByaW50
ICJjb25zdCBzdGF0aWMgdW5zaWduZWQgZ19leHBvbmVudFs2NF0gPSB7IgotZm9yIGkgaW4gcmFu
Z2UoMCwgNjQpOgotICAgIHByaW50ICIgICAgJSMwMTB4LCIgJSBjb252ZXJ0RXhwb25lbnQoaSkK
LXByaW50ICJ9O1xuIgotCi1wcmludCAiY29uc3Qgc3RhdGljIHVuc2lnbmVkIGdfb2Zmc2V0WzY0
XSA9IHsiCi1mb3IgaSBpbiByYW5nZSgwLCA2NCk6Ci0gICAgcHJpbnQgIiAgICAlIzAxMHgsIiAl
IGNvbnZlcnRPZmZzZXQoaSkKLXByaW50ICJ9O1xuIgotCi1wcmludCAiIiJmbG9hdCBmbG9hdDE2
VG9GbG9hdDMyKHVuc2lnbmVkIHNob3J0IGgpCi17Ci0gICAgdW5zaWduZWQgaTMyID0gZ19tYW50
aXNzYVtnX29mZnNldFtoID4+IDEwXSArIChoICYgMHgzZmYpXSArIGdfZXhwb25lbnRbaCA+PiAx
MF07Ci0gICAgcmV0dXJuICooZmxvYXQqKSAmaTMyOwotfQotfQotIiIiCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRnJhbWVidWZmZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GcmFtZWJ1ZmZlci5jcHAJ
KHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9GcmFtZWJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4LDI4ICsxOCwyOCBAQAogI2lu
Y2x1ZGUgImxpYkFOR0xFL1N1cmZhY2UuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9UZXh0dXJlLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvZm9ybWF0dXRpbHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9Db250ZXh0SW1wbC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0ZyYW1l
YnVmZmVySW1wbC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0ltcGxGYWN0b3J5Lmgi
CisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvR0xJbXBsRmFjdG9yeS5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL1JlbmRlcmJ1ZmZlckltcGwuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9TdXJmYWNlSW1wbC5oIgogCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKIG5h
bWVzcGFjZSBnbAogewogCiBuYW1lc3BhY2UKIHsKLXZvaWQgRGV0YWNoTWF0Y2hpbmdBdHRhY2ht
ZW50KEZyYW1lYnVmZmVyQXR0YWNobWVudCAqYXR0YWNobWVudCwgR0xlbnVtIG1hdGNoVHlwZSwg
R0x1aW50IG1hdGNoSWQpCisKK3ZvaWQgQmluZFJlc291cmNlQ2hhbm5lbChDaGFubmVsQmluZGlu
ZyAqYmluZGluZywgRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0ICpyZXNvdXJjZSkKIHsKLSAg
ICBpZiAoYXR0YWNobWVudC0+aXNBdHRhY2hlZCgpICYmCi0gICAgICAgIGF0dGFjaG1lbnQtPnR5
cGUoKSA9PSBtYXRjaFR5cGUgJiYKLSAgICAgICAgYXR0YWNobWVudC0+aWQoKSA9PSBtYXRjaElk
KQotICAgIHsKLSAgICAgICAgYXR0YWNobWVudC0+ZGV0YWNoKCk7Ci0gICAgfQorICAgIGJpbmRp
bmctPmJpbmQocmVzb3VyY2UgPyByZXNvdXJjZS0+Z2V0RGlydHlDaGFubmVsKCkgOiBudWxscHRy
KTsKIH0KLX0KIAotRnJhbWVidWZmZXI6OkRhdGE6OkRhdGEoKQorfSAgLy8gYW5vbnltb3VzIG5h
bWVzcGFjZQorCitGcmFtZWJ1ZmZlclN0YXRlOjpGcmFtZWJ1ZmZlclN0YXRlKCkKICAgICA6IG1M
YWJlbCgpLAogICAgICAgbUNvbG9yQXR0YWNobWVudHMoMSksCiAgICAgICBtRHJhd0J1ZmZlclN0
YXRlcygxLCBHTF9OT05FKSwKQEAgLTQ4LDcgKzQ4LDcgQEAKICAgICBtRHJhd0J1ZmZlclN0YXRl
c1swXSA9IEdMX0NPTE9SX0FUVEFDSE1FTlQwX0VYVDsKIH0KIAotRnJhbWVidWZmZXI6OkRhdGE6
OkRhdGEoY29uc3QgQ2FwcyAmY2FwcykKK0ZyYW1lYnVmZmVyU3RhdGU6OkZyYW1lYnVmZmVyU3Rh
dGUoY29uc3QgQ2FwcyAmY2FwcykKICAgICA6IG1MYWJlbCgpLAogICAgICAgbUNvbG9yQXR0YWNo
bWVudHMoY2Fwcy5tYXhDb2xvckF0dGFjaG1lbnRzKSwKICAgICAgIG1EcmF3QnVmZmVyU3RhdGVz
KGNhcHMubWF4RHJhd0J1ZmZlcnMsIEdMX05PTkUpLApAQCAtNTgsMTcgKzU4LDQ0IEBACiAgICAg
bURyYXdCdWZmZXJTdGF0ZXNbMF0gPSBHTF9DT0xPUl9BVFRBQ0hNRU5UMF9FWFQ7CiB9CiAKLUZy
YW1lYnVmZmVyOjpEYXRhOjp+RGF0YSgpCitGcmFtZWJ1ZmZlclN0YXRlOjp+RnJhbWVidWZmZXJT
dGF0ZSgpCiB7CiB9CiAKLWNvbnN0IHN0ZDo6c3RyaW5nICZGcmFtZWJ1ZmZlcjo6RGF0YTo6Z2V0
TGFiZWwoKQorY29uc3Qgc3RkOjpzdHJpbmcgJkZyYW1lYnVmZmVyU3RhdGU6OmdldExhYmVsKCkK
IHsKICAgICByZXR1cm4gbUxhYmVsOwogfQogCi1jb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQg
KkZyYW1lYnVmZmVyOjpEYXRhOjpnZXRSZWFkQXR0YWNobWVudCgpIGNvbnN0Citjb25zdCBGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnQgKkZyYW1lYnVmZmVyU3RhdGU6OmdldEF0dGFjaG1lbnQoR0xlbnVt
IGF0dGFjaG1lbnQpIGNvbnN0CiB7CisgICAgaWYgKGF0dGFjaG1lbnQgPj0gR0xfQ09MT1JfQVRU
QUNITUVOVDAgJiYgYXR0YWNobWVudCA8PSBHTF9DT0xPUl9BVFRBQ0hNRU5UMTUpCisgICAgewor
ICAgICAgICByZXR1cm4gZ2V0Q29sb3JBdHRhY2htZW50KGF0dGFjaG1lbnQgLSBHTF9DT0xPUl9B
VFRBQ0hNRU5UMCk7CisgICAgfQorCisgICAgc3dpdGNoIChhdHRhY2htZW50KQorICAgIHsKKyAg
ICAgICAgY2FzZSBHTF9DT0xPUjoKKyAgICAgICAgY2FzZSBHTF9CQUNLOgorICAgICAgICAgICAg
cmV0dXJuIGdldENvbG9yQXR0YWNobWVudCgwKTsKKyAgICAgICAgY2FzZSBHTF9ERVBUSDoKKyAg
ICAgICAgY2FzZSBHTF9ERVBUSF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgcmV0dXJuIGdldERl
cHRoQXR0YWNobWVudCgpOworICAgICAgICBjYXNlIEdMX1NURU5DSUw6CisgICAgICAgIGNhc2Ug
R0xfU1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgcmV0dXJuIGdldFN0ZW5jaWxBdHRh
Y2htZW50KCk7CisgICAgICAgIGNhc2UgR0xfREVQVEhfU1RFTkNJTDoKKyAgICAgICAgY2FzZSBH
TF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQ6CisgICAgICAgICAgICByZXR1cm4gZ2V0RGVwdGhT
dGVuY2lsQXR0YWNobWVudCgpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KK30KKworY29uc3Qg
RnJhbWVidWZmZXJBdHRhY2htZW50ICpGcmFtZWJ1ZmZlclN0YXRlOjpnZXRSZWFkQXR0YWNobWVu
dCgpIGNvbnN0Cit7CiAgICAgQVNTRVJUKG1SZWFkQnVmZmVyU3RhdGUgPT0gR0xfQkFDSyB8fCAo
bVJlYWRCdWZmZXJTdGF0ZSA+PSBHTF9DT0xPUl9BVFRBQ0hNRU5UMCAmJiBtUmVhZEJ1ZmZlclN0
YXRlIDw9IEdMX0NPTE9SX0FUVEFDSE1FTlQxNSkpOwogICAgIHNpemVfdCByZWFkSW5kZXggPSAo
bVJlYWRCdWZmZXJTdGF0ZSA9PSBHTF9CQUNLID8gMCA6IHN0YXRpY19jYXN0PHNpemVfdD4obVJl
YWRCdWZmZXJTdGF0ZSAtIEdMX0NPTE9SX0FUVEFDSE1FTlQwKSk7CiAgICAgQVNTRVJUKHJlYWRJ
bmRleCA8IG1Db2xvckF0dGFjaG1lbnRzLnNpemUoKSk7CkBAIC03NSw3ICsxMDIsNyBAQAogICAg
IHJldHVybiBtQ29sb3JBdHRhY2htZW50c1tyZWFkSW5kZXhdLmlzQXR0YWNoZWQoKSA/ICZtQ29s
b3JBdHRhY2htZW50c1tyZWFkSW5kZXhdIDogbnVsbHB0cjsKIH0KIAotY29uc3QgRnJhbWVidWZm
ZXJBdHRhY2htZW50ICpGcmFtZWJ1ZmZlcjo6RGF0YTo6Z2V0Rmlyc3RDb2xvckF0dGFjaG1lbnQo
KSBjb25zdAorY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpGcmFtZWJ1ZmZlclN0YXRlOjpn
ZXRGaXJzdENvbG9yQXR0YWNobWVudCgpIGNvbnN0CiB7CiAgICAgZm9yIChjb25zdCBGcmFtZWJ1
ZmZlckF0dGFjaG1lbnQgJmNvbG9yQXR0YWNobWVudCA6IG1Db2xvckF0dGFjaG1lbnRzKQogICAg
IHsKQEAgLTg4LDcgKzExNSw3IEBACiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLWNvbnN0IEZy
YW1lYnVmZmVyQXR0YWNobWVudCAqRnJhbWVidWZmZXI6OkRhdGE6OmdldERlcHRoT3JTdGVuY2ls
QXR0YWNobWVudCgpIGNvbnN0Citjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKkZyYW1lYnVm
ZmVyU3RhdGU6OmdldERlcHRoT3JTdGVuY2lsQXR0YWNobWVudCgpIGNvbnN0CiB7CiAgICAgaWYg
KG1EZXB0aEF0dGFjaG1lbnQuaXNBdHRhY2hlZCgpKQogICAgIHsKQEAgLTEwMSw3ICsxMjgsNyBA
QAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1jb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQg
KkZyYW1lYnVmZmVyOjpEYXRhOjpnZXRDb2xvckF0dGFjaG1lbnQoc2l6ZV90IGNvbG9yQXR0YWNo
bWVudCkgY29uc3QKK2NvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqRnJhbWVidWZmZXJTdGF0
ZTo6Z2V0Q29sb3JBdHRhY2htZW50KHNpemVfdCBjb2xvckF0dGFjaG1lbnQpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKGNvbG9yQXR0YWNobWVudCA8IG1Db2xvckF0dGFjaG1lbnRzLnNpemUoKSk7CiAg
ICAgcmV0dXJuIG1Db2xvckF0dGFjaG1lbnRzW2NvbG9yQXR0YWNobWVudF0uaXNBdHRhY2hlZCgp
ID8KQEAgLTEwOSwxNyArMTM2LDE3IEBACiAgICAgICAgICAgIG51bGxwdHI7CiB9CiAKLWNvbnN0
IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqRnJhbWVidWZmZXI6OkRhdGE6OmdldERlcHRoQXR0YWNo
bWVudCgpIGNvbnN0Citjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKkZyYW1lYnVmZmVyU3Rh
dGU6OmdldERlcHRoQXR0YWNobWVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1EZXB0aEF0dGFj
aG1lbnQuaXNBdHRhY2hlZCgpID8gJm1EZXB0aEF0dGFjaG1lbnQgOiBudWxscHRyOwogfQogCi1j
b25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKkZyYW1lYnVmZmVyOjpEYXRhOjpnZXRTdGVuY2ls
QXR0YWNobWVudCgpIGNvbnN0Citjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKkZyYW1lYnVm
ZmVyU3RhdGU6OmdldFN0ZW5jaWxBdHRhY2htZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gbVN0
ZW5jaWxBdHRhY2htZW50LmlzQXR0YWNoZWQoKSA/ICZtU3RlbmNpbEF0dGFjaG1lbnQgOiBudWxs
cHRyOwogfQogCi1jb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKkZyYW1lYnVmZmVyOjpEYXRh
OjpnZXREZXB0aFN0ZW5jaWxBdHRhY2htZW50KCkgY29uc3QKK2NvbnN0IEZyYW1lYnVmZmVyQXR0
YWNobWVudCAqRnJhbWVidWZmZXJTdGF0ZTo6Z2V0RGVwdGhTdGVuY2lsQXR0YWNobWVudCgpIGNv
bnN0CiB7CiAgICAgLy8gQSB2YWxpZCBkZXB0aC1zdGVuY2lsIGF0dGFjaG1lbnQgaGFzIHRoZSBz
YW1lIHJlc291cmNlIGJvdW5kIHRvIGJvdGggdGhlCiAgICAgLy8gZGVwdGggYW5kIHN0ZW5jaWwg
YXR0YWNobWVudCBwb2ludHMuCkBAIC0xMzMsNyArMTYwLDcgQEAKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotYm9vbCBGcmFtZWJ1ZmZlcjo6RGF0YTo6YXR0YWNobWVudHNIYXZlU2FtZURpbWVu
c2lvbnMoKSBjb25zdAorYm9vbCBGcmFtZWJ1ZmZlclN0YXRlOjphdHRhY2htZW50c0hhdmVTYW1l
RGltZW5zaW9ucygpIGNvbnN0CiB7CiAgICAgT3B0aW9uYWw8RXh0ZW50cz4gYXR0YWNobWVudFNp
emU7CiAKQEAgLTE2OSwxNyArMTk2LDg5IEBACiAgICAgcmV0dXJuICFoYXNNaXNtYXRjaGVkU2l6
ZShtU3RlbmNpbEF0dGFjaG1lbnQpOwogfQogCi1GcmFtZWJ1ZmZlcjo6RnJhbWVidWZmZXIoY29u
c3QgQ2FwcyAmY2Fwcywgcng6OkltcGxGYWN0b3J5ICpmYWN0b3J5LCBHTHVpbnQgaWQpCi0gICAg
OiBtRGF0YShjYXBzKSwgbUltcGwoZmFjdG9yeS0+Y3JlYXRlRnJhbWVidWZmZXIobURhdGEpKSwg
bUlkKGlkKQorY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqRnJhbWVidWZmZXJTdGF0
ZTo6Z2V0RHJhd0J1ZmZlcihzaXplX3QgZHJhd0J1ZmZlcklkeCkgY29uc3QKIHsKKyAgICBBU1NF
UlQoZHJhd0J1ZmZlcklkeCA8IG1EcmF3QnVmZmVyU3RhdGVzLnNpemUoKSk7CisgICAgaWYgKG1E
cmF3QnVmZmVyU3RhdGVzW2RyYXdCdWZmZXJJZHhdICE9IEdMX05PTkUpCisgICAgeworICAgICAg
ICAvLyBFUzMgc3BlYzogIklmIHRoZSBHTCBpcyBib3VuZCB0byBhIGRyYXcgZnJhbWVidWZmZXIg
b2JqZWN0LCB0aGUgaXRoIGJ1ZmZlciBsaXN0ZWQgaW4gYnVmcworICAgICAgICAvLyBtdXN0IGJl
IENPTE9SX0FUVEFDSE1FTlRpIG9yIE5PTkUiCisgICAgICAgIEFTU0VSVChtRHJhd0J1ZmZlclN0
YXRlc1tkcmF3QnVmZmVySWR4XSA9PSBHTF9DT0xPUl9BVFRBQ0hNRU5UMCArIGRyYXdCdWZmZXJJ
ZHggfHwKKyAgICAgICAgICAgICAgIChkcmF3QnVmZmVySWR4ID09IDAgJiYgbURyYXdCdWZmZXJT
dGF0ZXNbZHJhd0J1ZmZlcklkeF0gPT0gR0xfQkFDSykpOworICAgICAgICByZXR1cm4gZ2V0QXR0
YWNobWVudChtRHJhd0J1ZmZlclN0YXRlc1tkcmF3QnVmZmVySWR4XSk7CisgICAgfQorICAgIGVs
c2UKKyAgICB7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KK30KKworc2l6ZV90IEZy
YW1lYnVmZmVyU3RhdGU6OmdldERyYXdCdWZmZXJDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1EcmF3QnVmZmVyU3RhdGVzLnNpemUoKTsKK30KKworYm9vbCBGcmFtZWJ1ZmZlclN0YXRlOjpj
b2xvckF0dGFjaG1lbnRzQXJlVW5pcXVlSW1hZ2VzKCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVf
dCBmaXJzdEF0dGFjaG1lbnRJZHggPSAwOyBmaXJzdEF0dGFjaG1lbnRJZHggPCBtQ29sb3JBdHRh
Y2htZW50cy5zaXplKCk7CisgICAgICAgICBmaXJzdEF0dGFjaG1lbnRJZHgrKykKKyAgICB7Cisg
ICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgJmZpcnN0QXR0YWNobWVudCA9
IG1Db2xvckF0dGFjaG1lbnRzW2ZpcnN0QXR0YWNobWVudElkeF07CisgICAgICAgIGlmICghZmly
c3RBdHRhY2htZW50LmlzQXR0YWNoZWQoKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHNpemVfdCBzZWNvbmRBdHRhY2htZW50SWR4
ID0gZmlyc3RBdHRhY2htZW50SWR4ICsgMTsKKyAgICAgICAgICAgICBzZWNvbmRBdHRhY2htZW50
SWR4IDwgbUNvbG9yQXR0YWNobWVudHMuc2l6ZSgpOyBzZWNvbmRBdHRhY2htZW50SWR4KyspCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgJnNl
Y29uZEF0dGFjaG1lbnQgPQorICAgICAgICAgICAgICAgIG1Db2xvckF0dGFjaG1lbnRzW3NlY29u
ZEF0dGFjaG1lbnRJZHhdOworICAgICAgICAgICAgaWYgKCFzZWNvbmRBdHRhY2htZW50LmlzQXR0
YWNoZWQoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGZpcnN0QXR0YWNobWVudCA9PSBzZWNvbmRBdHRh
Y2htZW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitG
cmFtZWJ1ZmZlcjo6RnJhbWVidWZmZXIoY29uc3QgQ2FwcyAmY2Fwcywgcng6OkdMSW1wbEZhY3Rv
cnkgKmZhY3RvcnksIEdMdWludCBpZCkKKyAgICA6IG1TdGF0ZShjYXBzKSwKKyAgICAgIG1JbXBs
KGZhY3RvcnktPmNyZWF0ZUZyYW1lYnVmZmVyKG1TdGF0ZSkpLAorICAgICAgbUlkKGlkKSwKKyAg
ICAgIG1DYWNoZWRTdGF0dXMoKSwKKyAgICAgIG1EaXJ0eURlcHRoQXR0YWNobWVudEJpbmRpbmco
dGhpcywgRElSVFlfQklUX0RFUFRIX0FUVEFDSE1FTlQpLAorICAgICAgbURpcnR5U3RlbmNpbEF0
dGFjaG1lbnRCaW5kaW5nKHRoaXMsIERJUlRZX0JJVF9TVEVOQ0lMX0FUVEFDSE1FTlQpCit7CiAg
ICAgQVNTRVJUKG1JZCAhPSAwKTsKICAgICBBU1NFUlQobUltcGwgIT0gbnVsbHB0cik7CisgICAg
QVNTRVJUKG1TdGF0ZS5tQ29sb3JBdHRhY2htZW50cy5zaXplKCkgPT0gc3RhdGljX2Nhc3Q8c2l6
ZV90PihjYXBzLm1heENvbG9yQXR0YWNobWVudHMpKTsKKworICAgIGZvciAoc2l6ZV90IGNvbG9y
SW5kZXggPSAwOyBjb2xvckluZGV4IDwgbVN0YXRlLm1Db2xvckF0dGFjaG1lbnRzLnNpemUoKTsg
Kytjb2xvckluZGV4KQorICAgIHsKKyAgICAgICAgbURpcnR5Q29sb3JBdHRhY2htZW50QmluZGlu
Z3MucHVzaF9iYWNrKENoYW5uZWxCaW5kaW5nKAorICAgICAgICAgICAgdGhpcywgc3RhdGljX2Nh
c3Q8U2lnbmFsVG9rZW4+KERJUlRZX0JJVF9DT0xPUl9BVFRBQ0hNRU5UXzAgKyBjb2xvckluZGV4
KSkpOworICAgIH0KIH0KIAogRnJhbWVidWZmZXI6OkZyYW1lYnVmZmVyKHJ4OjpTdXJmYWNlSW1w
bCAqc3VyZmFjZSkKLSAgICA6IG1EYXRhKCksIG1JbXBsKHN1cmZhY2UtPmNyZWF0ZURlZmF1bHRG
cmFtZWJ1ZmZlcihtRGF0YSkpLCBtSWQoMCkKKyAgICA6IG1TdGF0ZSgpLAorICAgICAgbUltcGwo
c3VyZmFjZS0+Y3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKG1TdGF0ZSkpLAorICAgICAgbUlkKDAp
LAorICAgICAgbUNhY2hlZFN0YXR1cyhHTF9GUkFNRUJVRkZFUl9DT01QTEVURSksCisgICAgICBt
RGlydHlEZXB0aEF0dGFjaG1lbnRCaW5kaW5nKHRoaXMsIERJUlRZX0JJVF9ERVBUSF9BVFRBQ0hN
RU5UKSwKKyAgICAgIG1EaXJ0eVN0ZW5jaWxBdHRhY2htZW50QmluZGluZyh0aGlzLCBESVJUWV9C
SVRfU1RFTkNJTF9BVFRBQ0hNRU5UKQogewogICAgIEFTU0VSVChtSW1wbCAhPSBudWxscHRyKTsK
KyAgICBtRGlydHlDb2xvckF0dGFjaG1lbnRCaW5kaW5ncy5wdXNoX2JhY2soCisgICAgICAgIENo
YW5uZWxCaW5kaW5nKHRoaXMsIHN0YXRpY19jYXN0PFNpZ25hbFRva2VuPihESVJUWV9CSVRfQ09M
T1JfQVRUQUNITUVOVF8wKSkpOwogfQogCiBGcmFtZWJ1ZmZlcjo6fkZyYW1lYnVmZmVyKCkKQEAg
LTE4OSwxMiArMjg4LDEyIEBACiAKIHZvaWQgRnJhbWVidWZmZXI6OnNldExhYmVsKGNvbnN0IHN0
ZDo6c3RyaW5nICZsYWJlbCkKIHsKLSAgICBtRGF0YS5tTGFiZWwgPSBsYWJlbDsKKyAgICBtU3Rh
dGUubUxhYmVsID0gbGFiZWw7CiB9CiAKIGNvbnN0IHN0ZDo6c3RyaW5nICZGcmFtZWJ1ZmZlcjo6
Z2V0TGFiZWwoKSBjb25zdAogewotICAgIHJldHVybiBtRGF0YS5tTGFiZWw7CisgICAgcmV0dXJu
IG1TdGF0ZS5tTGFiZWw7CiB9CiAKIHZvaWQgRnJhbWVidWZmZXI6OmRldGFjaFRleHR1cmUoR0x1
aW50IHRleHR1cmVJZCkKQEAgLTIwOSwxMDQgKzMwOCw5NSBAQAogCiB2b2lkIEZyYW1lYnVmZmVy
OjpkZXRhY2hSZXNvdXJjZUJ5SWQoR0xlbnVtIHJlc291cmNlVHlwZSwgR0x1aW50IHJlc291cmNl
SWQpCiB7Ci0gICAgZm9yIChhdXRvICZjb2xvckF0dGFjaG1lbnQgOiBtRGF0YS5tQ29sb3JBdHRh
Y2htZW50cykKKyAgICBmb3IgKHNpemVfdCBjb2xvckluZGV4ID0gMDsgY29sb3JJbmRleCA8IG1T
dGF0ZS5tQ29sb3JBdHRhY2htZW50cy5zaXplKCk7ICsrY29sb3JJbmRleCkKICAgICB7Ci0gICAg
ICAgIERldGFjaE1hdGNoaW5nQXR0YWNobWVudCgmY29sb3JBdHRhY2htZW50LCByZXNvdXJjZVR5
cGUsIHJlc291cmNlSWQpOworICAgICAgICBkZXRhY2hNYXRjaGluZ0F0dGFjaG1lbnQoJm1TdGF0
ZS5tQ29sb3JBdHRhY2htZW50c1tjb2xvckluZGV4XSwgcmVzb3VyY2VUeXBlLCByZXNvdXJjZUlk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRElSVFlfQklUX0NPTE9SX0FUVEFD
SE1FTlRfMCArIGNvbG9ySW5kZXgpOwogICAgIH0KIAotICAgIERldGFjaE1hdGNoaW5nQXR0YWNo
bWVudCgmbURhdGEubURlcHRoQXR0YWNobWVudCwgcmVzb3VyY2VUeXBlLCByZXNvdXJjZUlkKTsK
LSAgICBEZXRhY2hNYXRjaGluZ0F0dGFjaG1lbnQoJm1EYXRhLm1TdGVuY2lsQXR0YWNobWVudCwg
cmVzb3VyY2VUeXBlLCByZXNvdXJjZUlkKTsKKyAgICBkZXRhY2hNYXRjaGluZ0F0dGFjaG1lbnQo
Jm1TdGF0ZS5tRGVwdGhBdHRhY2htZW50LCByZXNvdXJjZVR5cGUsIHJlc291cmNlSWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERJUlRZX0JJVF9ERVBUSF9BVFRBQ0hNRU5UKTsKKyAg
ICBkZXRhY2hNYXRjaGluZ0F0dGFjaG1lbnQoJm1TdGF0ZS5tU3RlbmNpbEF0dGFjaG1lbnQsIHJl
c291cmNlVHlwZSwgcmVzb3VyY2VJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRElS
VFlfQklUX1NURU5DSUxfQVRUQUNITUVOVCk7CiB9CiAKK3ZvaWQgRnJhbWVidWZmZXI6OmRldGFj
aE1hdGNoaW5nQXR0YWNobWVudChGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmF0dGFjaG1lbnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1hdGNoVHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWF0
Y2hJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
ZGlydHlCaXQpCit7CisgICAgaWYgKGF0dGFjaG1lbnQtPmlzQXR0YWNoZWQoKSAmJiBhdHRhY2ht
ZW50LT50eXBlKCkgPT0gbWF0Y2hUeXBlICYmIGF0dGFjaG1lbnQtPmlkKCkgPT0gbWF0Y2hJZCkK
KyAgICB7CisgICAgICAgIGF0dGFjaG1lbnQtPmRldGFjaCgpOworICAgICAgICBtRGlydHlCaXRz
LnNldChkaXJ0eUJpdCk7CisgICAgfQorfQorCiBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQg
KkZyYW1lYnVmZmVyOjpnZXRDb2xvcmJ1ZmZlcihzaXplX3QgY29sb3JBdHRhY2htZW50KSBjb25z
dAogewotICAgIHJldHVybiBtRGF0YS5nZXRDb2xvckF0dGFjaG1lbnQoY29sb3JBdHRhY2htZW50
KTsKKyAgICByZXR1cm4gbVN0YXRlLmdldENvbG9yQXR0YWNobWVudChjb2xvckF0dGFjaG1lbnQp
OwogfQogCiBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKkZyYW1lYnVmZmVyOjpnZXREZXB0
aGJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1EYXRhLmdldERlcHRoQXR0YWNobWVudCgp
OworICAgIHJldHVybiBtU3RhdGUuZ2V0RGVwdGhBdHRhY2htZW50KCk7CiB9CiAKIGNvbnN0IEZy
YW1lYnVmZmVyQXR0YWNobWVudCAqRnJhbWVidWZmZXI6OmdldFN0ZW5jaWxidWZmZXIoKSBjb25z
dAogewotICAgIHJldHVybiBtRGF0YS5nZXRTdGVuY2lsQXR0YWNobWVudCgpOworICAgIHJldHVy
biBtU3RhdGUuZ2V0U3RlbmNpbEF0dGFjaG1lbnQoKTsKIH0KIAogY29uc3QgRnJhbWVidWZmZXJB
dHRhY2htZW50ICpGcmFtZWJ1ZmZlcjo6Z2V0RGVwdGhTdGVuY2lsQnVmZmVyKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbURhdGEuZ2V0RGVwdGhTdGVuY2lsQXR0YWNobWVudCgpOworICAgIHJldHVy
biBtU3RhdGUuZ2V0RGVwdGhTdGVuY2lsQXR0YWNobWVudCgpOwogfQogCiBjb25zdCBGcmFtZWJ1
ZmZlckF0dGFjaG1lbnQgKkZyYW1lYnVmZmVyOjpnZXREZXB0aE9yU3RlbmNpbGJ1ZmZlcigpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1EYXRhLmdldERlcHRoT3JTdGVuY2lsQXR0YWNobWVudCgpOwor
ICAgIHJldHVybiBtU3RhdGUuZ2V0RGVwdGhPclN0ZW5jaWxBdHRhY2htZW50KCk7CiB9CiAKIGNv
bnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqRnJhbWVidWZmZXI6OmdldFJlYWRDb2xvcmJ1ZmZl
cigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1EYXRhLmdldFJlYWRBdHRhY2htZW50KCk7CisgICAg
cmV0dXJuIG1TdGF0ZS5nZXRSZWFkQXR0YWNobWVudCgpOwogfQogCiBHTGVudW0gRnJhbWVidWZm
ZXI6OmdldFJlYWRDb2xvcmJ1ZmZlclR5cGUoKSBjb25zdAogewotICAgIGNvbnN0IEZyYW1lYnVm
ZmVyQXR0YWNobWVudCAqcmVhZEF0dGFjaG1lbnQgPSBtRGF0YS5nZXRSZWFkQXR0YWNobWVudCgp
OworICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqcmVhZEF0dGFjaG1lbnQgPSBtU3Rh
dGUuZ2V0UmVhZEF0dGFjaG1lbnQoKTsKICAgICByZXR1cm4gKHJlYWRBdHRhY2htZW50ICE9IG51
bGxwdHIgPyByZWFkQXR0YWNobWVudC0+dHlwZSgpIDogR0xfTk9ORSk7CiB9CiAKIGNvbnN0IEZy
YW1lYnVmZmVyQXR0YWNobWVudCAqRnJhbWVidWZmZXI6OmdldEZpcnN0Q29sb3JidWZmZXIoKSBj
b25zdAogewotICAgIHJldHVybiBtRGF0YS5nZXRGaXJzdENvbG9yQXR0YWNobWVudCgpOworICAg
IHJldHVybiBtU3RhdGUuZ2V0Rmlyc3RDb2xvckF0dGFjaG1lbnQoKTsKIH0KIAogY29uc3QgRnJh
bWVidWZmZXJBdHRhY2htZW50ICpGcmFtZWJ1ZmZlcjo6Z2V0QXR0YWNobWVudChHTGVudW0gYXR0
YWNobWVudCkgY29uc3QKIHsKLSAgICBpZiAoYXR0YWNobWVudCA+PSBHTF9DT0xPUl9BVFRBQ0hN
RU5UMCAmJiBhdHRhY2htZW50IDw9IEdMX0NPTE9SX0FUVEFDSE1FTlQxNSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtRGF0YS5nZXRDb2xvckF0dGFjaG1lbnQoYXR0YWNobWVudCAtIEdMX0NPTE9S
X0FUVEFDSE1FTlQwKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgc3dpdGNoIChh
dHRhY2htZW50KQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9DT0xPUjoKLSAgICAgICAg
ICBjYXNlIEdMX0JBQ0s6Ci0gICAgICAgICAgICByZXR1cm4gbURhdGEuZ2V0Q29sb3JBdHRhY2ht
ZW50KDApOwotICAgICAgICAgIGNhc2UgR0xfREVQVEg6Ci0gICAgICAgICAgY2FzZSBHTF9ERVBU
SF9BVFRBQ0hNRU5UOgotICAgICAgICAgICAgcmV0dXJuIG1EYXRhLmdldERlcHRoQXR0YWNobWVu
dCgpOwotICAgICAgICAgIGNhc2UgR0xfU1RFTkNJTDoKLSAgICAgICAgICBjYXNlIEdMX1NURU5D
SUxfQVRUQUNITUVOVDoKLSAgICAgICAgICAgIHJldHVybiBtRGF0YS5nZXRTdGVuY2lsQXR0YWNo
bWVudCgpOwotICAgICAgICAgIGNhc2UgR0xfREVQVEhfU1RFTkNJTDoKLSAgICAgICAgICBjYXNl
IEdMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVDoKLSAgICAgICAgICAgIHJldHVybiBnZXREZXB0
aFN0ZW5jaWxCdWZmZXIoKTsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0gICAgfQor
ICAgIHJldHVybiBtU3RhdGUuZ2V0QXR0YWNobWVudChhdHRhY2htZW50KTsKIH0KIAogc2l6ZV90
IEZyYW1lYnVmZmVyOjpnZXREcmF3YnVmZmVyU3RhdGVDb3VudCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1EYXRhLm1EcmF3QnVmZmVyU3RhdGVzLnNpemUoKTsKKyAgICByZXR1cm4gbVN0YXRlLm1E
cmF3QnVmZmVyU3RhdGVzLnNpemUoKTsKIH0KIAogR0xlbnVtIEZyYW1lYnVmZmVyOjpnZXREcmF3
QnVmZmVyU3RhdGUoc2l6ZV90IGRyYXdCdWZmZXIpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGRyYXdC
dWZmZXIgPCBtRGF0YS5tRHJhd0J1ZmZlclN0YXRlcy5zaXplKCkpOwotICAgIHJldHVybiBtRGF0
YS5tRHJhd0J1ZmZlclN0YXRlc1tkcmF3QnVmZmVyXTsKKyAgICBBU1NFUlQoZHJhd0J1ZmZlciA8
IG1TdGF0ZS5tRHJhd0J1ZmZlclN0YXRlcy5zaXplKCkpOworICAgIHJldHVybiBtU3RhdGUubURy
YXdCdWZmZXJTdGF0ZXNbZHJhd0J1ZmZlcl07CiB9CiAKIGNvbnN0IHN0ZDo6dmVjdG9yPEdMZW51
bT4gJkZyYW1lYnVmZmVyOjpnZXREcmF3QnVmZmVyU3RhdGVzKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbURhdGEuZ2V0RHJhd0J1ZmZlclN0YXRlcygpOworICAgIHJldHVybiBtU3RhdGUuZ2V0RHJh
d0J1ZmZlclN0YXRlcygpOwogfQogCiB2b2lkIEZyYW1lYnVmZmVyOjpzZXREcmF3QnVmZmVycyhz
aXplX3QgY291bnQsIGNvbnN0IEdMZW51bSAqYnVmZmVycykKIHsKLSAgICBhdXRvICZkcmF3U3Rh
dGVzID0gbURhdGEubURyYXdCdWZmZXJTdGF0ZXM7CisgICAgYXV0byAmZHJhd1N0YXRlcyA9IG1T
dGF0ZS5tRHJhd0J1ZmZlclN0YXRlczsKIAogICAgIEFTU0VSVChjb3VudCA8PSBkcmF3U3RhdGVz
LnNpemUoKSk7CiAgICAgc3RkOjpjb3B5KGJ1ZmZlcnMsIGJ1ZmZlcnMgKyBjb3VudCwgZHJhd1N0
YXRlcy5iZWdpbigpKTsKQEAgLTMxNiwyNCArNDA2LDEyIEBACiAKIGNvbnN0IEZyYW1lYnVmZmVy
QXR0YWNobWVudCAqRnJhbWVidWZmZXI6OmdldERyYXdCdWZmZXIoc2l6ZV90IGRyYXdCdWZmZXIp
IGNvbnN0CiB7Ci0gICAgQVNTRVJUKGRyYXdCdWZmZXIgPCBtRGF0YS5tRHJhd0J1ZmZlclN0YXRl
cy5zaXplKCkpOwotICAgIGlmIChtRGF0YS5tRHJhd0J1ZmZlclN0YXRlc1tkcmF3QnVmZmVyXSAh
PSBHTF9OT05FKQotICAgIHsKLSAgICAgICAgLy8gRVMzIHNwZWM6ICJJZiB0aGUgR0wgaXMgYm91
bmQgdG8gYSBkcmF3IGZyYW1lYnVmZmVyIG9iamVjdCwgdGhlIGl0aCBidWZmZXIgbGlzdGVkIGlu
IGJ1ZnMKLSAgICAgICAgLy8gbXVzdCBiZSBDT0xPUl9BVFRBQ0hNRU5UaSBvciBOT05FIgotICAg
ICAgICBBU1NFUlQobURhdGEubURyYXdCdWZmZXJTdGF0ZXNbZHJhd0J1ZmZlcl0gPT0gR0xfQ09M
T1JfQVRUQUNITUVOVDAgKyBkcmF3QnVmZmVyIHx8Ci0gICAgICAgICAgICAgICAoZHJhd0J1ZmZl
ciA9PSAwICYmIG1EYXRhLm1EcmF3QnVmZmVyU3RhdGVzW2RyYXdCdWZmZXJdID09IEdMX0JBQ0sp
KTsKLSAgICAgICAgcmV0dXJuIGdldEF0dGFjaG1lbnQobURhdGEubURyYXdCdWZmZXJTdGF0ZXNb
ZHJhd0J1ZmZlcl0pOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICB9CisgICAgcmV0dXJuIG1TdGF0ZS5nZXREcmF3QnVmZmVyKGRyYXdCdWZmZXIp
OwogfQogCiBib29sIEZyYW1lYnVmZmVyOjpoYXNFbmFibGVkRHJhd0J1ZmZlcigpIGNvbnN0CiB7
Ci0gICAgZm9yIChzaXplX3QgZHJhd2J1ZmZlcklkeCA9IDA7IGRyYXdidWZmZXJJZHggPCBtRGF0
YS5tRHJhd0J1ZmZlclN0YXRlcy5zaXplKCk7ICsrZHJhd2J1ZmZlcklkeCkKKyAgICBmb3IgKHNp
emVfdCBkcmF3YnVmZmVySWR4ID0gMDsgZHJhd2J1ZmZlcklkeCA8IG1TdGF0ZS5tRHJhd0J1ZmZl
clN0YXRlcy5zaXplKCk7ICsrZHJhd2J1ZmZlcklkeCkKICAgICB7CiAgICAgICAgIGlmIChnZXRE
cmF3QnVmZmVyKGRyYXdidWZmZXJJZHgpICE9IG51bGxwdHIpCiAgICAgICAgIHsKQEAgLTM0Niw3
ICs0MjQsNyBAQAogCiBHTGVudW0gRnJhbWVidWZmZXI6OmdldFJlYWRCdWZmZXJTdGF0ZSgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1EYXRhLm1SZWFkQnVmZmVyU3RhdGU7CisgICAgcmV0dXJuIG1T
dGF0ZS5tUmVhZEJ1ZmZlclN0YXRlOwogfQogCiB2b2lkIEZyYW1lYnVmZmVyOjpzZXRSZWFkQnVm
ZmVyKEdMZW51bSBidWZmZXIpCkBAIC0zNTMsMjkgKzQzMSwzMCBAQAogewogICAgIEFTU0VSVChi
dWZmZXIgPT0gR0xfQkFDSyB8fCBidWZmZXIgPT0gR0xfTk9ORSB8fAogICAgICAgICAgICAoYnVm
ZmVyID49IEdMX0NPTE9SX0FUVEFDSE1FTlQwICYmCi0gICAgICAgICAgICAoYnVmZmVyIC0gR0xf
Q09MT1JfQVRUQUNITUVOVDApIDwgbURhdGEubUNvbG9yQXR0YWNobWVudHMuc2l6ZSgpKSk7Ci0g
ICAgbURhdGEubVJlYWRCdWZmZXJTdGF0ZSA9IGJ1ZmZlcjsKKyAgICAgICAgICAgIChidWZmZXIg
LSBHTF9DT0xPUl9BVFRBQ0hNRU5UMCkgPCBtU3RhdGUubUNvbG9yQXR0YWNobWVudHMuc2l6ZSgp
KSk7CisgICAgbVN0YXRlLm1SZWFkQnVmZmVyU3RhdGUgPSBidWZmZXI7CiAgICAgbURpcnR5Qml0
cy5zZXQoRElSVFlfQklUX1JFQURfQlVGRkVSKTsKIH0KIAogc2l6ZV90IEZyYW1lYnVmZmVyOjpn
ZXROdW1Db2xvckJ1ZmZlcnMoKSBjb25zdAogewotICAgIHJldHVybiBtRGF0YS5tQ29sb3JBdHRh
Y2htZW50cy5zaXplKCk7CisgICAgcmV0dXJuIG1TdGF0ZS5tQ29sb3JBdHRhY2htZW50cy5zaXpl
KCk7CiB9CiAKIGJvb2wgRnJhbWVidWZmZXI6Omhhc0RlcHRoKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gKG1EYXRhLm1EZXB0aEF0dGFjaG1lbnQuaXNBdHRhY2hlZCgpICYmIG1EYXRhLm1EZXB0aEF0
dGFjaG1lbnQuZ2V0RGVwdGhTaXplKCkgPiAwKTsKKyAgICByZXR1cm4gKG1TdGF0ZS5tRGVwdGhB
dHRhY2htZW50LmlzQXR0YWNoZWQoKSAmJiBtU3RhdGUubURlcHRoQXR0YWNobWVudC5nZXREZXB0
aFNpemUoKSA+IDApOwogfQogCiBib29sIEZyYW1lYnVmZmVyOjpoYXNTdGVuY2lsKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gKG1EYXRhLm1TdGVuY2lsQXR0YWNobWVudC5pc0F0dGFjaGVkKCkgJiYg
bURhdGEubVN0ZW5jaWxBdHRhY2htZW50LmdldFN0ZW5jaWxTaXplKCkgPiAwKTsKKyAgICByZXR1
cm4gKG1TdGF0ZS5tU3RlbmNpbEF0dGFjaG1lbnQuaXNBdHRhY2hlZCgpICYmCisgICAgICAgICAg
ICBtU3RhdGUubVN0ZW5jaWxBdHRhY2htZW50LmdldFN0ZW5jaWxTaXplKCkgPiAwKTsKIH0KIAog
Ym9vbCBGcmFtZWJ1ZmZlcjo6dXNpbmdFeHRlbmRlZERyYXdCdWZmZXJzKCkgY29uc3QKIHsKLSAg
ICBmb3IgKHNpemVfdCBkcmF3YnVmZmVySWR4ID0gMTsgZHJhd2J1ZmZlcklkeCA8IG1EYXRhLm1E
cmF3QnVmZmVyU3RhdGVzLnNpemUoKTsgKytkcmF3YnVmZmVySWR4KQorICAgIGZvciAoc2l6ZV90
IGRyYXdidWZmZXJJZHggPSAxOyBkcmF3YnVmZmVySWR4IDwgbVN0YXRlLm1EcmF3QnVmZmVyU3Rh
dGVzLnNpemUoKTsgKytkcmF3YnVmZmVySWR4KQogICAgIHsKICAgICAgICAgaWYgKGdldERyYXdC
dWZmZXIoZHJhd2J1ZmZlcklkeCkgIT0gbnVsbHB0cikKICAgICAgICAgewpAQCAtMzg2LDcgKzQ2
NSw3IEBACiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1HTGVudW0gRnJhbWVidWZmZXI6OmNoZWNr
U3RhdHVzKGNvbnN0IGdsOjpEYXRhICZkYXRhKSBjb25zdAorR0xlbnVtIEZyYW1lYnVmZmVyOjpj
aGVja1N0YXR1cyhjb25zdCBDb250ZXh0U3RhdGUgJnN0YXRlKQogewogICAgIC8vIFRoZSBkZWZh
dWx0IGZyYW1lYnVmZmVyICptdXN0KiBhbHdheXMgYmUgY29tcGxldGUsIHRob3VnaCBpdCBtYXkg
bm90IGJlCiAgICAgLy8gc3ViamVjdCB0byB0aGUgc2FtZSBydWxlcyBhcyBhcHBsaWNhdGlvbiBG
Qk9zLiBpZSwgaXQgY291bGQgaGF2ZSAweDAgc2l6ZS4KQEAgLTM5NSwxMSArNDc0LDIzIEBACiAg
ICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9DT01QTEVURTsKICAgICB9CiAKKyAgICBpZiAo
aGFzQW55RGlydHlCaXQoKSB8fCAhbUNhY2hlZFN0YXR1cy52YWxpZCgpKQorICAgIHsKKyAgICAg
ICAgbUNhY2hlZFN0YXR1cyA9IGNoZWNrU3RhdHVzSW1wbChzdGF0ZSk7CisgICAgfQorCisgICAg
cmV0dXJuIG1DYWNoZWRTdGF0dXMudmFsdWUoKTsKK30KKworR0xlbnVtIEZyYW1lYnVmZmVyOjpj
aGVja1N0YXR1c0ltcGwoY29uc3QgQ29udGV4dFN0YXRlICZzdGF0ZSkKK3sKKyAgICBBU1NFUlQo
bUlkICE9IDApOworCiAgICAgdW5zaWduZWQgaW50IGNvbG9yYnVmZmVyU2l6ZSA9IDA7CiAgICAg
aW50IHNhbXBsZXMgPSAtMTsKICAgICBib29sIG1pc3NpbmdBdHRhY2htZW50ID0gdHJ1ZTsKIAot
ICAgIGZvciAoY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICZjb2xvckF0dGFjaG1lbnQgOiBt
RGF0YS5tQ29sb3JBdHRhY2htZW50cykKKyAgICBmb3IgKGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNo
bWVudCAmY29sb3JBdHRhY2htZW50IDogbVN0YXRlLm1Db2xvckF0dGFjaG1lbnRzKQogICAgIHsK
ICAgICAgICAgaWYgKGNvbG9yQXR0YWNobWVudC5pc0F0dGFjaGVkKCkpCiAgICAgICAgIHsKQEAg
LTQwOSw5ICs1MDAsOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9J
TkNPTVBMRVRFX0FUVEFDSE1FTlQ7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIEdMZW51
bSBpbnRlcm5hbGZvcm1hdCA9IGNvbG9yQXR0YWNobWVudC5nZXRJbnRlcm5hbEZvcm1hdCgpOwot
ICAgICAgICAgICAgY29uc3QgVGV4dHVyZUNhcHMgJmZvcm1hdENhcHMgPSBkYXRhLnRleHR1cmVD
YXBzLT5nZXQoaW50ZXJuYWxmb3JtYXQpOwotICAgICAgICAgICAgY29uc3QgSW50ZXJuYWxGb3Jt
YXQgJmZvcm1hdEluZm8gPSBHZXRJbnRlcm5hbEZvcm1hdEluZm8oaW50ZXJuYWxmb3JtYXQpOwor
ICAgICAgICAgICAgY29uc3QgRm9ybWF0ICZmb3JtYXQgICAgICAgICAgPSBjb2xvckF0dGFjaG1l
bnQuZ2V0Rm9ybWF0KCk7CisgICAgICAgICAgICBjb25zdCBUZXh0dXJlQ2FwcyAmZm9ybWF0Q2Fw
cyA9IHN0YXRlLmdldFRleHR1cmVDYXAoZm9ybWF0LmFzU2l6ZWQoKSk7CiAgICAgICAgICAgICBp
ZiAoY29sb3JBdHRhY2htZW50LnR5cGUoKSA9PSBHTF9URVhUVVJFKQogICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgIGlmICghZm9ybWF0Q2Fwcy5yZW5kZXJhYmxlKQpAQCAtNDE5LDcgKzUw
OSw3IEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBM
RVRFX0FUVEFDSE1FTlQ7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYg
KGZvcm1hdEluZm8uZGVwdGhCaXRzID4gMCB8fCBmb3JtYXRJbmZvLnN0ZW5jaWxCaXRzID4gMCkK
KyAgICAgICAgICAgICAgICBpZiAoZm9ybWF0LmluZm8tPmRlcHRoQml0cyA+IDAgfHwgZm9ybWF0
LmluZm8tPnN0ZW5jaWxCaXRzID4gMCkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7CiAgICAg
ICAgICAgICAgICAgfQpAQCAtNDM1LDcgKzUyNSw4IEBACiAgICAgICAgICAgICAgICAgLy8gVE9E
TyhqbWFkaWxsKTogQ2hlY2sgaWYgT3BlbkdMIEVTMiBkcml2ZXJzIGVuZm9yY2UgY3ViZSBjb21w
bGV0ZW5lc3MuCiAgICAgICAgICAgICAgICAgY29uc3QgVGV4dHVyZSAqdGV4dHVyZSA9IGNvbG9y
QXR0YWNobWVudC5nZXRUZXh0dXJlKCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHRleHR1cmUp
OwotICAgICAgICAgICAgICAgIGlmICh0ZXh0dXJlLT5nZXRUYXJnZXQoKSA9PSBHTF9URVhUVVJF
X0NVQkVfTUFQICYmICF0ZXh0dXJlLT5pc0N1YmVDb21wbGV0ZSgpKQorICAgICAgICAgICAgICAg
IGlmICh0ZXh0dXJlLT5nZXRUYXJnZXQoKSA9PSBHTF9URVhUVVJFX0NVQkVfTUFQICYmCisgICAg
ICAgICAgICAgICAgICAgICF0ZXh0dXJlLT5nZXRUZXh0dXJlU3RhdGUoKS5pc0N1YmVDb21wbGV0
ZSgpKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZS
QU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVDsKICAgICAgICAgICAgICAgICB9CkBAIC00
NDIsNyArNTMzLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKGNvbG9y
QXR0YWNobWVudC50eXBlKCkgPT0gR0xfUkVOREVSQlVGRkVSKQogICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGlmICghZm9ybWF0Q2Fwcy5yZW5kZXJhYmxlIHx8IGZvcm1hdEluZm8uZGVw
dGhCaXRzID4gMCB8fCBmb3JtYXRJbmZvLnN0ZW5jaWxCaXRzID4gMCkKKyAgICAgICAgICAgICAg
ICBpZiAoIWZvcm1hdENhcHMucmVuZGVyYWJsZSB8fCBmb3JtYXQuaW5mby0+ZGVwdGhCaXRzID4g
MCB8fAorICAgICAgICAgICAgICAgICAgICBmb3JtYXQuaW5mby0+c3RlbmNpbEJpdHMgPiAwKQog
ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVG
RkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVDsKICAgICAgICAgICAgICAgICB9CkBAIC00NTksOSAr
NTUxLDkgQEAKIAogICAgICAgICAgICAgICAgIC8vIGluIEdMRVMgMi4wLCBhbGwgY29sb3IgYXR0
YWNobWVudHMgYXR0YWNobWVudHMgbXVzdCBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiBiaXRwbGFu
ZXMKICAgICAgICAgICAgICAgICAvLyBpbiBHTEVTIDMuMCwgdGhlcmUgaXMgbm8gc3VjaCByZXN0
cmljdGlvbgotICAgICAgICAgICAgICAgIGlmIChkYXRhLmNsaWVudFZlcnNpb24gPCAzKQorICAg
ICAgICAgICAgICAgIGlmIChzdGF0ZS5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAoZm9ybWF0SW5mby5waXhlbEJ5
dGVzICE9IGNvbG9yYnVmZmVyU2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1hdC5p
bmZvLT5waXhlbEJ5dGVzICE9IGNvbG9yYnVmZmVyU2l6ZSkKICAgICAgICAgICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX1VOU1VQUE9S
VEVEOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC00NzAsMTMgKzU2MiwxMyBAQAogICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHNhbXBsZXMgPSBjb2xv
ckF0dGFjaG1lbnQuZ2V0U2FtcGxlcygpOwotICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyU2l6
ZSA9IGZvcm1hdEluZm8ucGl4ZWxCeXRlczsKKyAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlclNp
emUgICA9IGZvcm1hdC5pbmZvLT5waXhlbEJ5dGVzOwogICAgICAgICAgICAgICAgIG1pc3NpbmdB
dHRhY2htZW50ID0gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgJmRlcHRoQXR0YWNobWVudCA9IG1EYXRhLm1E
ZXB0aEF0dGFjaG1lbnQ7CisgICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICZkZXB0aEF0
dGFjaG1lbnQgPSBtU3RhdGUubURlcHRoQXR0YWNobWVudDsKICAgICBpZiAoZGVwdGhBdHRhY2ht
ZW50LmlzQXR0YWNoZWQoKSkKICAgICB7CiAgICAgICAgIGNvbnN0IEV4dGVudHMgJnNpemUgPSBk
ZXB0aEF0dGFjaG1lbnQuZ2V0U2l6ZSgpOwpAQCAtNDg1LDEzICs1NzcsMTIgQEAKICAgICAgICAg
ICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7CiAgICAgICAg
IH0KIAotICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSBkZXB0aEF0dGFjaG1lbnQuZ2V0
SW50ZXJuYWxGb3JtYXQoKTsKLSAgICAgICAgY29uc3QgVGV4dHVyZUNhcHMgJmZvcm1hdENhcHMg
PSBkYXRhLnRleHR1cmVDYXBzLT5nZXQoaW50ZXJuYWxmb3JtYXQpOwotICAgICAgICBjb25zdCBJ
bnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9IEdldEludGVybmFsRm9ybWF0SW5mbyhpbnRlcm5h
bGZvcm1hdCk7CisgICAgICAgIGNvbnN0IEZvcm1hdCAmZm9ybWF0ICAgICAgICAgID0gZGVwdGhB
dHRhY2htZW50LmdldEZvcm1hdCgpOworICAgICAgICBjb25zdCBUZXh0dXJlQ2FwcyAmZm9ybWF0
Q2FwcyA9IHN0YXRlLmdldFRleHR1cmVDYXAoZm9ybWF0LmFzU2l6ZWQoKSk7CiAgICAgICAgIGlm
IChkZXB0aEF0dGFjaG1lbnQudHlwZSgpID09IEdMX1RFWFRVUkUpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIC8vIGRlcHRoIHRleHR1cmUgYXR0YWNobWVudHMgcmVxdWlyZSBPRVMvQU5HTEVfZGVw
dGhfdGV4dHVyZQotICAgICAgICAgICAgaWYgKCFkYXRhLmV4dGVuc2lvbnMtPmRlcHRoVGV4dHVy
ZXMpCisgICAgICAgICAgICBpZiAoIXN0YXRlLmdldEV4dGVuc2lvbnMoKS5kZXB0aFRleHR1cmVz
KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9J
TkNPTVBMRVRFX0FUVEFDSE1FTlQ7CiAgICAgICAgICAgICB9CkBAIC01MDEsNyArNTkyLDcgQEAK
ICAgICAgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hN
RU5UOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoZm9ybWF0SW5mby5kZXB0aEJp
dHMgPT0gMCkKKyAgICAgICAgICAgIGlmIChmb3JtYXQuaW5mby0+ZGVwdGhCaXRzID09IDApCiAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09N
UExFVEVfQVRUQUNITUVOVDsKICAgICAgICAgICAgIH0KQEAgLTUwOCw3ICs1OTksNyBAQAogICAg
ICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGRlcHRoQXR0YWNobWVudC50eXBlKCkgPT0gR0xfUkVO
REVSQlVGRkVSKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIWZvcm1hdENhcHMucmVuZGVy
YWJsZSB8fCBmb3JtYXRJbmZvLmRlcHRoQml0cyA9PSAwKQorICAgICAgICAgICAgaWYgKCFmb3Jt
YXRDYXBzLnJlbmRlcmFibGUgfHwgZm9ybWF0LmluZm8tPmRlcHRoQml0cyA9PSAwKQogICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRF
X0FUVEFDSE1FTlQ7CiAgICAgICAgICAgICB9CkBAIC01MjEsMTEgKzYxMiwyMSBAQAogICAgICAg
ICB9CiAgICAgICAgIGVsc2UgaWYgKHNhbXBsZXMgIT0gZGVwdGhBdHRhY2htZW50LmdldFNhbXBs
ZXMoKSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09N
UExFVEVfTVVMVElTQU1QTEVfQU5HTEU7CisgICAgICAgICAgICAvLyBDSFJPTUlVTV9mcmFtZWJ1
ZmZlcl9taXhlZF9zYW1wbGVzIGFsbG93cyBhIGZyYW1lYnVmZmVyIHRvIGJlCisgICAgICAgICAg
ICAvLyBjb25zaWRlcmVkIGNvbXBsZXRlIHdoZW4gaXRzIGRlcHRoIG9yIHN0ZW5jaWwgc2FtcGxl
cyBhcmUgYQorICAgICAgICAgICAgLy8gbXVsdGlwbGUgb2YgdGhlIG51bWJlciBvZiBjb2xvciBz
YW1wbGVzLgorICAgICAgICAgICAgY29uc3QgYm9vbCBtaXhlZFNhbXBsZXMgPSBzdGF0ZS5nZXRF
eHRlbnNpb25zKCkuZnJhbWVidWZmZXJNaXhlZFNhbXBsZXM7CisgICAgICAgICAgICBpZiAoIW1p
eGVkU2FtcGxlcykKKyAgICAgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01Q
TEVURV9NVUxUSVNBTVBMRV9BTkdMRTsKKworICAgICAgICAgICAgY29uc3QgaW50IGNvbG9yU2Ft
cGxlcyA9IHNhbXBsZXMgPyBzYW1wbGVzIDogMTsKKyAgICAgICAgICAgIGNvbnN0IGludCBkZXB0
aFNhbXBsZXMgPSBkZXB0aEF0dGFjaG1lbnQuZ2V0U2FtcGxlcygpOworICAgICAgICAgICAgaWYg
KChkZXB0aFNhbXBsZXMgJSBjb2xvclNhbXBsZXMpICE9IDApCisgICAgICAgICAgICAgICAgcmV0
dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEVfQU5HTEU7CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgJnN0ZW5jaWxBdHRh
Y2htZW50ID0gbURhdGEubVN0ZW5jaWxBdHRhY2htZW50OworICAgIGNvbnN0IEZyYW1lYnVmZmVy
QXR0YWNobWVudCAmc3RlbmNpbEF0dGFjaG1lbnQgPSBtU3RhdGUubVN0ZW5jaWxBdHRhY2htZW50
OwogICAgIGlmIChzdGVuY2lsQXR0YWNobWVudC5pc0F0dGFjaGVkKCkpCiAgICAgewogICAgICAg
ICBjb25zdCBFeHRlbnRzICZzaXplID0gc3RlbmNpbEF0dGFjaG1lbnQuZ2V0U2l6ZSgpOwpAQCAt
NTM0LDE0ICs2MzUsMTMgQEAKICAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNP
TVBMRVRFX0FUVEFDSE1FTlQ7CiAgICAgICAgIH0KIAotICAgICAgICBHTGVudW0gaW50ZXJuYWxm
b3JtYXQgPSBzdGVuY2lsQXR0YWNobWVudC5nZXRJbnRlcm5hbEZvcm1hdCgpOwotICAgICAgICBj
b25zdCBUZXh0dXJlQ2FwcyAmZm9ybWF0Q2FwcyA9IGRhdGEudGV4dHVyZUNhcHMtPmdldChpbnRl
cm5hbGZvcm1hdCk7Ci0gICAgICAgIGNvbnN0IEludGVybmFsRm9ybWF0ICZmb3JtYXRJbmZvID0g
R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGludGVybmFsZm9ybWF0KTsKKyAgICAgICAgY29uc3QgRm9y
bWF0ICZmb3JtYXQgICAgICAgICAgPSBzdGVuY2lsQXR0YWNobWVudC5nZXRGb3JtYXQoKTsKKyAg
ICAgICAgY29uc3QgVGV4dHVyZUNhcHMgJmZvcm1hdENhcHMgPSBzdGF0ZS5nZXRUZXh0dXJlQ2Fw
KGZvcm1hdC5hc1NpemVkKCkpOwogICAgICAgICBpZiAoc3RlbmNpbEF0dGFjaG1lbnQudHlwZSgp
ID09IEdMX1RFWFRVUkUpCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIHRleHR1cmUgc3RlbmNp
bCBhdHRhY2htZW50cyBjb21lIGFsb25nIGFzIHBhcnQKICAgICAgICAgICAgIC8vIG9mIE9FU19w
YWNrZWRfZGVwdGhfc3RlbmNpbCArIE9FUy9BTkdMRV9kZXB0aF90ZXh0dXJlCi0gICAgICAgICAg
ICBpZiAoIWRhdGEuZXh0ZW5zaW9ucy0+ZGVwdGhUZXh0dXJlcykKKyAgICAgICAgICAgIGlmICgh
c3RhdGUuZ2V0RXh0ZW5zaW9ucygpLmRlcHRoVGV4dHVyZXMpCiAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVDsK
ICAgICAgICAgICAgIH0KQEAgLTU1MSw3ICs2NTEsNyBAQAogICAgICAgICAgICAgICAgIHJldHVy
biBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIGlmIChmb3JtYXRJbmZvLnN0ZW5jaWxCaXRzID09IDApCisgICAgICAgICAg
ICBpZiAoZm9ybWF0LmluZm8tPnN0ZW5jaWxCaXRzID09IDApCiAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVDsK
ICAgICAgICAgICAgIH0KQEAgLTU1OCw3ICs2NTgsNyBAQAogICAgICAgICB9CiAgICAgICAgIGVs
c2UgaWYgKHN0ZW5jaWxBdHRhY2htZW50LnR5cGUoKSA9PSBHTF9SRU5ERVJCVUZGRVIpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGlmICghZm9ybWF0Q2Fwcy5yZW5kZXJhYmxlIHx8IGZvcm1hdElu
Zm8uc3RlbmNpbEJpdHMgPT0gMCkKKyAgICAgICAgICAgIGlmICghZm9ybWF0Q2Fwcy5yZW5kZXJh
YmxlIHx8IGZvcm1hdC5pbmZvLT5zdGVuY2lsQml0cyA9PSAwKQogICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7
CiAgICAgICAgICAgICB9CkBAIC01NzEsOCArNjcxLDIzIEBACiAgICAgICAgIH0KICAgICAgICAg
ZWxzZSBpZiAoc2FtcGxlcyAhPSBzdGVuY2lsQXR0YWNobWVudC5nZXRTYW1wbGVzKCkpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJ
U0FNUExFX0FOR0xFOworICAgICAgICAgICAgLy8gc2VlIHRoZSBjb21tZW50cyBpbiBkZXB0aCBh
dHRhY2htZW50IGNoZWNrLgorICAgICAgICAgICAgY29uc3QgYm9vbCBtaXhlZFNhbXBsZXMgPSBz
dGF0ZS5nZXRFeHRlbnNpb25zKCkuZnJhbWVidWZmZXJNaXhlZFNhbXBsZXM7CisgICAgICAgICAg
ICBpZiAoIW1peGVkU2FtcGxlcykKKyAgICAgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZG
RVJfSU5DT01QTEVURV9NVUxUSVNBTVBMRV9BTkdMRTsKKworICAgICAgICAgICAgY29uc3QgaW50
IGNvbG9yU2FtcGxlcyAgID0gc2FtcGxlcyA/IHNhbXBsZXMgOiAxOworICAgICAgICAgICAgY29u
c3QgaW50IHN0ZW5jaWxTYW1wbGVzID0gc3RlbmNpbEF0dGFjaG1lbnQuZ2V0U2FtcGxlcygpOwor
ICAgICAgICAgICAgaWYgKChzdGVuY2lsU2FtcGxlcyAlIGNvbG9yU2FtcGxlcykgIT0gMCkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NVUxUSVNBTVBM
RV9BTkdMRTsKICAgICAgICAgfQorCisgICAgICAgIC8vIFN0YXJ0aW5nIGZyb20gRVMgMy4wIHN0
ZW5jaWwgYW5kIGRlcHRoLCBpZiBwcmVzZW50LCBzaG91bGQgYmUgdGhlIHNhbWUgaW1hZ2UKKyAg
ICAgICAgaWYgKHN0YXRlLmdldENsaWVudE1ham9yVmVyc2lvbigpID49IDMgJiYgZGVwdGhBdHRh
Y2htZW50LmlzQXR0YWNoZWQoKSAmJgorICAgICAgICAgICAgc3RlbmNpbEF0dGFjaG1lbnQgIT0g
ZGVwdGhBdHRhY2htZW50KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVC
VUZGRVJfVU5TVVBQT1JURUQ7CisgICAgICAgIH0KICAgICB9CiAKICAgICAvLyB3ZSBuZWVkIHRv
IGhhdmUgYXQgbGVhc3Qgb25lIGF0dGFjaG1lbnQgdG8gYmUgY29tcGxldGUKQEAgLTU4Myw3ICs2
OTgsNyBAQAogCiAgICAgLy8gSW4gRVMgMi4wLCBhbGwgY29sb3IgYXR0YWNobWVudHMgbXVzdCBo
YXZlIHRoZSBzYW1lIHdpZHRoIGFuZCBoZWlnaHQuCiAgICAgLy8gSW4gRVMgMy4wLCB0aGVyZSBp
cyBubyBzdWNoIHJlc3RyaWN0aW9uLgotICAgIGlmIChkYXRhLmNsaWVudFZlcnNpb24gPCAzICYm
ICFtRGF0YS5hdHRhY2htZW50c0hhdmVTYW1lRGltZW5zaW9ucygpKQorICAgIGlmIChzdGF0ZS5n
ZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMgJiYgIW1TdGF0ZS5hdHRhY2htZW50c0hhdmVTYW1l
RGltZW5zaW9ucygpKQogICAgIHsKICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09N
UExFVEVfRElNRU5TSU9OUzsKICAgICB9CkBAIC02MTIsNjcgKzcyNyw2NyBAQAogICAgIHJldHVy
biBtSW1wbC0+aW52YWxpZGF0ZVN1Yihjb3VudCwgYXR0YWNobWVudHMsIGFyZWEpOwogfQogCi1F
cnJvciBGcmFtZWJ1ZmZlcjo6Y2xlYXIoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIEdMYml0ZmllbGQg
bWFzaykKK0Vycm9yIEZyYW1lYnVmZmVyOjpjbGVhcihyeDo6Q29udGV4dEltcGwgKmNvbnRleHQs
IEdMYml0ZmllbGQgbWFzaykKIHsKLSAgICBpZiAoZGF0YS5zdGF0ZS0+aXNSYXN0ZXJpemVyRGlz
Y2FyZEVuYWJsZWQoKSkKKyAgICBpZiAoY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmlzUmFzdGVyaXpl
ckRpc2NhcmRFbmFibGVkKCkpCiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05P
X0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogCi0gICAgcmV0
dXJuIG1JbXBsLT5jbGVhcihkYXRhLCBtYXNrKTsKKyAgICByZXR1cm4gbUltcGwtPmNsZWFyKGNv
bnRleHQsIG1hc2spOwogfQogCi1FcnJvciBGcmFtZWJ1ZmZlcjo6Y2xlYXJCdWZmZXJmdihjb25z
dCBnbDo6RGF0YSAmZGF0YSwKK0Vycm9yIEZyYW1lYnVmZmVyOjpjbGVhckJ1ZmZlcmZ2KHJ4OjpD
b250ZXh0SW1wbCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3
YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
dmFsdWVzKQogewotICAgIGlmIChkYXRhLnN0YXRlLT5pc1Jhc3Rlcml6ZXJEaXNjYXJkRW5hYmxl
ZCgpKQorICAgIGlmIChjb250ZXh0LT5nZXRHTFN0YXRlKCkuaXNSYXN0ZXJpemVyRGlzY2FyZEVu
YWJsZWQoKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwor
ICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiAKLSAgICByZXR1cm4gbUltcGwt
PmNsZWFyQnVmZmVyZnYoZGF0YSwgYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMpOworICAgIHJl
dHVybiBtSW1wbC0+Y2xlYXJCdWZmZXJmdihjb250ZXh0LCBidWZmZXIsIGRyYXdidWZmZXIsIHZh
bHVlcyk7CiB9CiAKLUVycm9yIEZyYW1lYnVmZmVyOjpjbGVhckJ1ZmZlcnVpdihjb25zdCBnbDo6
RGF0YSAmZGF0YSwKK0Vycm9yIEZyYW1lYnVmZmVyOjpjbGVhckJ1ZmZlcnVpdihyeDo6Q29udGV4
dEltcGwgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVm
ZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFs
dWVzKQogewotICAgIGlmIChkYXRhLnN0YXRlLT5pc1Jhc3Rlcml6ZXJEaXNjYXJkRW5hYmxlZCgp
KQorICAgIGlmIChjb250ZXh0LT5nZXRHTFN0YXRlKCkuaXNSYXN0ZXJpemVyRGlzY2FyZEVuYWJs
ZWQoKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAg
ICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiAKLSAgICByZXR1cm4gbUltcGwtPmNs
ZWFyQnVmZmVydWl2KGRhdGEsIGJ1ZmZlciwgZHJhd2J1ZmZlciwgdmFsdWVzKTsKKyAgICByZXR1
cm4gbUltcGwtPmNsZWFyQnVmZmVydWl2KGNvbnRleHQsIGJ1ZmZlciwgZHJhd2J1ZmZlciwgdmFs
dWVzKTsKIH0KIAotRXJyb3IgRnJhbWVidWZmZXI6OmNsZWFyQnVmZmVyaXYoY29uc3QgZ2w6OkRh
dGEgJmRhdGEsCitFcnJvciBGcmFtZWJ1ZmZlcjo6Y2xlYXJCdWZmZXJpdihyeDo6Q29udGV4dElt
cGwgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYnVm
ZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHJhd2J1ZmZlciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZXMpCiB7
Ci0gICAgaWYgKGRhdGEuc3RhdGUtPmlzUmFzdGVyaXplckRpc2NhcmRFbmFibGVkKCkpCisgICAg
aWYgKGNvbnRleHQtPmdldEdMU3RhdGUoKS5pc1Jhc3Rlcml6ZXJEaXNjYXJkRW5hYmxlZCgpKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJl
dHVybiBnbDo6Tm9FcnJvcigpOwogICAgIH0KIAotICAgIHJldHVybiBtSW1wbC0+Y2xlYXJCdWZm
ZXJpdihkYXRhLCBidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlcyk7CisgICAgcmV0dXJuIG1JbXBs
LT5jbGVhckJ1ZmZlcml2KGNvbnRleHQsIGJ1ZmZlciwgZHJhd2J1ZmZlciwgdmFsdWVzKTsKIH0K
IAotRXJyb3IgRnJhbWVidWZmZXI6OmNsZWFyQnVmZmVyZmkoY29uc3QgZ2w6OkRhdGEgJmRhdGEs
CitFcnJvciBGcmFtZWJ1ZmZlcjo6Y2xlYXJCdWZmZXJmaShyeDo6Q29udGV4dEltcGwgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYnVmZmVyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHJhd2J1ZmZlciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgZGVwdGgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBzdGVuY2lsKQogewotICAgIGlmIChkYXRhLnN0YXRlLT5p
c1Jhc3Rlcml6ZXJEaXNjYXJkRW5hYmxlZCgpKQorICAgIGlmIChjb250ZXh0LT5nZXRHTFN0YXRl
KCkuaXNSYXN0ZXJpemVyRGlzY2FyZEVuYWJsZWQoKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAg
ICB9CiAKLSAgICByZXR1cm4gbUltcGwtPmNsZWFyQnVmZmVyZmkoZGF0YSwgYnVmZmVyLCBkcmF3
YnVmZmVyLCBkZXB0aCwgc3RlbmNpbCk7CisgICAgcmV0dXJuIG1JbXBsLT5jbGVhckJ1ZmZlcmZp
KGNvbnRleHQsIGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGVwdGgsIHN0ZW5jaWwpOwogfQogCiBHTGVu
dW0gRnJhbWVidWZmZXI6OmdldEltcGxlbWVudGF0aW9uQ29sb3JSZWFkRm9ybWF0KCkgY29uc3QK
QEAgLTY4NSw0OSArODAwLDQzIEBACiAgICAgcmV0dXJuIG1JbXBsLT5nZXRJbXBsZW1lbnRhdGlv
bkNvbG9yUmVhZFR5cGUoKTsKIH0KIAotRXJyb3IgRnJhbWVidWZmZXI6OnJlYWRQaXhlbHMoY29u
c3QgU3RhdGUgJnN0YXRlLAorRXJyb3IgRnJhbWVidWZmZXI6OnJlYWRQaXhlbHMocng6OkNvbnRl
eHRJbXBsICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVj
dGFuZ2xlICZhcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1h
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x2b2lkICpwaXhlbHMpIGNvbnN0CiB7Ci0gICAgRXJyb3Ig
ZXJyb3IgPSBtSW1wbC0+cmVhZFBpeGVscyhzdGF0ZSwgYXJlYSwgZm9ybWF0LCB0eXBlLCBwaXhl
bHMpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJy
b3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShtSW1wbC0+cmVhZFBpeGVscyhjb250ZXh0LCBhcmVh
LCBmb3JtYXQsIHR5cGUsIHBpeGVscykpOwogCi0gICAgQnVmZmVyICp1bnBhY2tCdWZmZXIgPSBz
dGF0ZS5nZXRVbnBhY2tTdGF0ZSgpLnBpeGVsQnVmZmVyLmdldCgpOworICAgIEJ1ZmZlciAqdW5w
YWNrQnVmZmVyID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFVucGFja1N0YXRlKCkucGl4ZWxC
dWZmZXIuZ2V0KCk7CiAgICAgaWYgKHVucGFja0J1ZmZlcikKICAgICB7CiAgICAgICAgIHVucGFj
a0J1ZmZlci0+b25QaXhlbFVucGFjaygpOwogICAgIH0KIAotICAgIHJldHVybiBFcnJvcihHTF9O
T19FUlJPUik7CisgICAgcmV0dXJuIE5vRXJyb3IoKTsKIH0KIAotRXJyb3IgRnJhbWVidWZmZXI6
OmJsaXQoY29uc3QgU3RhdGUgJnN0YXRlLAorRXJyb3IgRnJhbWVidWZmZXI6OmJsaXQocng6OkNv
bnRleHRJbXBsICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVjdGFu
Z2xlICZzb3VyY2VBcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVjdGFuZ2xl
ICZkZXN0QXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQgbWFzaywKLSAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWx0ZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBGcmFtZWJ1ZmZlciAqc291cmNlRnJhbWVidWZmZXIpCisgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gZmlsdGVyKQogewotICAgIHJldHVybiBtSW1wbC0+YmxpdChzdGF0
ZSwgc291cmNlQXJlYSwgZGVzdEFyZWEsIG1hc2ssIGZpbHRlciwgc291cmNlRnJhbWVidWZmZXIp
OworICAgIHJldHVybiBtSW1wbC0+YmxpdChjb250ZXh0LCBzb3VyY2VBcmVhLCBkZXN0QXJlYSwg
bWFzaywgZmlsdGVyKTsKIH0KIAotaW50IEZyYW1lYnVmZmVyOjpnZXRTYW1wbGVzKGNvbnN0IGds
OjpEYXRhICZkYXRhKSBjb25zdAoraW50IEZyYW1lYnVmZmVyOjpnZXRTYW1wbGVzKGNvbnN0IENv
bnRleHRTdGF0ZSAmc3RhdGUpCiB7Ci0gICAgaWYgKGNoZWNrU3RhdHVzKGRhdGEpID09IEdMX0ZS
QU1FQlVGRkVSX0NPTVBMRVRFKQorICAgIGlmIChjb21wbGV0ZShzdGF0ZSkpCiAgICAgewotICAg
ICAgICAvLyBmb3IgYSBjb21wbGV0ZSBmcmFtZWJ1ZmZlciwgYWxsIGF0dGFjaG1lbnRzIG11c3Qg
aGF2ZSB0aGUgc2FtZSBzYW1wbGUgY291bnQKLSAgICAgICAgLy8gaW4gdGhpcyBjYXNlIHJldHVy
biB0aGUgZmlyc3Qgbm9uemVybyBzYW1wbGUgc2l6ZQotICAgICAgICBmb3IgKGNvbnN0IEZyYW1l
YnVmZmVyQXR0YWNobWVudCAmY29sb3JBdHRhY2htZW50IDogbURhdGEubUNvbG9yQXR0YWNobWVu
dHMpCisgICAgICAgIC8vIEZvciBhIGNvbXBsZXRlIGZyYW1lYnVmZmVyLCBhbGwgYXR0YWNobWVu
dHMgbXVzdCBoYXZlIHRoZSBzYW1lIHNhbXBsZSBjb3VudC4KKyAgICAgICAgLy8gSW4gdGhpcyBj
YXNlIHJldHVybiB0aGUgZmlyc3Qgbm9uemVybyBzYW1wbGUgc2l6ZS4KKyAgICAgICAgY29uc3Qg
YXV0byAqZmlyc3RDb2xvckF0dGFjaG1lbnQgPSBtU3RhdGUuZ2V0Rmlyc3RDb2xvckF0dGFjaG1l
bnQoKTsKKyAgICAgICAgaWYgKGZpcnN0Q29sb3JBdHRhY2htZW50KQogICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAoY29sb3JBdHRhY2htZW50LmlzQXR0YWNoZWQoKSkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICByZXR1cm4gY29sb3JBdHRhY2htZW50LmdldFNhbXBsZXMoKTsKLSAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVChmaXJzdENvbG9yQXR0YWNobWVudC0+aXNB
dHRhY2hlZCgpKTsKKyAgICAgICAgICAgIHJldHVybiBmaXJzdENvbG9yQXR0YWNobWVudC0+Z2V0
U2FtcGxlcygpOwogICAgICAgICB9CiAgICAgfQogCkBAIC03MzYsNyArODQ1LDcgQEAKIAogYm9v
bCBGcmFtZWJ1ZmZlcjo6aGFzVmFsaWREZXB0aFN0ZW5jaWwoKSBjb25zdAogewotICAgIHJldHVy
biBtRGF0YS5nZXREZXB0aFN0ZW5jaWxBdHRhY2htZW50KCkgIT0gbnVsbHB0cjsKKyAgICByZXR1
cm4gbVN0YXRlLmdldERlcHRoU3RlbmNpbEF0dGFjaG1lbnQoKSAhPSBudWxscHRyOwogfQogCiB2
b2lkIEZyYW1lYnVmZmVyOjpzZXRBdHRhY2htZW50KEdMZW51bSB0eXBlLApAQCAtNzUxLDkgKzg2
MCw4IEBACiAgICAgICAgIGlmIChyZXNvdXJjZSkKICAgICAgICAgewogICAgICAgICAgICAgRnJh
bWVidWZmZXJBdHRhY2htZW50OjpUYXJnZXQgdGFyZ2V0KGJpbmRpbmcsIHRleHR1cmVJbmRleCk7
Ci0gICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQgICAgICAgICAgICA9IHJlc291cmNl
LT5nZXRBdHRhY2htZW50SW50ZXJuYWxGb3JtYXQodGFyZ2V0KTsKLSAgICAgICAgICAgIGNvbnN0
IEludGVybmFsRm9ybWF0ICZmb3JtYXRJbmZvID0gR2V0SW50ZXJuYWxGb3JtYXRJbmZvKGludGVy
bmFsRm9ybWF0KTsKLSAgICAgICAgICAgIGlmIChmb3JtYXRJbmZvLmRlcHRoQml0cyA9PSAwIHx8
IGZvcm1hdEluZm8uc3RlbmNpbEJpdHMgPT0gMCkKKyAgICAgICAgICAgIGNvbnN0IEZvcm1hdCAm
Zm9ybWF0ID0gcmVzb3VyY2UtPmdldEF0dGFjaG1lbnRGb3JtYXQodGFyZ2V0KTsKKyAgICAgICAg
ICAgIGlmIChmb3JtYXQuaW5mby0+ZGVwdGhCaXRzID09IDAgfHwgZm9ybWF0LmluZm8tPnN0ZW5j
aWxCaXRzID09IDApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgLy8gQXR0YWNoaW5n
IG51bGxwdHIgZGV0YWNoZXMgdGhlIGN1cnJlbnQgYXR0YWNobWVudC4KICAgICAgICAgICAgICAg
ICBhdHRhY2htZW50T2JqID0gbnVsbHB0cjsKQEAgLTc2MCwxMCArODY4LDEyIEBACiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBtRGF0YS5tRGVwdGhBdHRhY2htZW50LmF0dGFj
aCh0eXBlLCBiaW5kaW5nLCB0ZXh0dXJlSW5kZXgsIGF0dGFjaG1lbnRPYmopOwotICAgICAgICBt
RGF0YS5tU3RlbmNpbEF0dGFjaG1lbnQuYXR0YWNoKHR5cGUsIGJpbmRpbmcsIHRleHR1cmVJbmRl
eCwgYXR0YWNobWVudE9iaik7CisgICAgICAgIG1TdGF0ZS5tRGVwdGhBdHRhY2htZW50LmF0dGFj
aCh0eXBlLCBiaW5kaW5nLCB0ZXh0dXJlSW5kZXgsIGF0dGFjaG1lbnRPYmopOworICAgICAgICBt
U3RhdGUubVN0ZW5jaWxBdHRhY2htZW50LmF0dGFjaCh0eXBlLCBiaW5kaW5nLCB0ZXh0dXJlSW5k
ZXgsIGF0dGFjaG1lbnRPYmopOwogICAgICAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfREVQ
VEhfQVRUQUNITUVOVCk7CiAgICAgICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9TVEVOQ0lM
X0FUVEFDSE1FTlQpOworICAgICAgICBCaW5kUmVzb3VyY2VDaGFubmVsKCZtRGlydHlEZXB0aEF0
dGFjaG1lbnRCaW5kaW5nLCByZXNvdXJjZSk7CisgICAgICAgIEJpbmRSZXNvdXJjZUNoYW5uZWwo
Jm1EaXJ0eVN0ZW5jaWxBdHRhY2htZW50QmluZGluZywgcmVzb3VyY2UpOwogICAgIH0KICAgICBl
bHNlCiAgICAgewpAQCAtNzcxLDI0ICs4ODEsMjggQEAKICAgICAgICAgewogICAgICAgICAgICAg
Y2FzZSBHTF9ERVBUSDoKICAgICAgICAgICAgIGNhc2UgR0xfREVQVEhfQVRUQUNITUVOVDoKLSAg
ICAgICAgICAgICAgICBtRGF0YS5tRGVwdGhBdHRhY2htZW50LmF0dGFjaCh0eXBlLCBiaW5kaW5n
LCB0ZXh0dXJlSW5kZXgsIHJlc291cmNlKTsKKyAgICAgICAgICAgICAgICBtU3RhdGUubURlcHRo
QXR0YWNobWVudC5hdHRhY2godHlwZSwgYmluZGluZywgdGV4dHVyZUluZGV4LCByZXNvdXJjZSk7
CiAgICAgICAgICAgICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0RFUFRIX0FUVEFDSE1F
TlQpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgQmluZFJlc291cmNlQ2hh
bm5lbCgmbURpcnR5RGVwdGhBdHRhY2htZW50QmluZGluZywgcmVzb3VyY2UpOworICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBHTF9TVEVOQ0lMOgogICAgICAgICAgICAg
Y2FzZSBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQ6Ci0gICAgICAgICAgICAgICAgbURhdGEubVN0ZW5j
aWxBdHRhY2htZW50LmF0dGFjaCh0eXBlLCBiaW5kaW5nLCB0ZXh0dXJlSW5kZXgsIHJlc291cmNl
KTsKKyAgICAgICAgICAgICAgICBtU3RhdGUubVN0ZW5jaWxBdHRhY2htZW50LmF0dGFjaCh0eXBl
LCBiaW5kaW5nLCB0ZXh0dXJlSW5kZXgsIHJlc291cmNlKTsKICAgICAgICAgICAgICAgICBtRGly
dHlCaXRzLnNldChESVJUWV9CSVRfU1RFTkNJTF9BVFRBQ0hNRU5UKTsKLSAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIEJpbmRSZXNvdXJjZUNoYW5uZWwoJm1EaXJ0eVN0ZW5jaWxB
dHRhY2htZW50QmluZGluZywgcmVzb3VyY2UpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBHTF9CQUNLOgotICAgICAgICAgICAgICAgIG1EYXRhLm1Db2xvckF0dGFj
aG1lbnRzWzBdLmF0dGFjaCh0eXBlLCBiaW5kaW5nLCB0ZXh0dXJlSW5kZXgsIHJlc291cmNlKTsK
KyAgICAgICAgICAgICAgICBtU3RhdGUubUNvbG9yQXR0YWNobWVudHNbMF0uYXR0YWNoKHR5cGUs
IGJpbmRpbmcsIHRleHR1cmVJbmRleCwgcmVzb3VyY2UpOwogICAgICAgICAgICAgICAgIG1EaXJ0
eUJpdHMuc2V0KERJUlRZX0JJVF9DT0xPUl9BVFRBQ0hNRU5UXzApOwotICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgLy8gTm8gbmVlZCBmb3IgYSByZXNvdXJjZSBiaW5kaW5nIGZv
ciB0aGUgZGVmYXVsdCBGQk8sIGl0J3MgYWx3YXlzIGNvbXBsZXRlLgorICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICBzaXplX3QgY29sb3JJbmRleCA9IGJpbmRpbmcgLSBHTF9DT0xPUl9BVFRBQ0hNRU5UMDsK
LSAgICAgICAgICAgICAgICBBU1NFUlQoY29sb3JJbmRleCA8IG1EYXRhLm1Db2xvckF0dGFjaG1l
bnRzLnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgbURhdGEubUNvbG9yQXR0YWNobWVudHNbY29s
b3JJbmRleF0uYXR0YWNoKHR5cGUsIGJpbmRpbmcsIHRleHR1cmVJbmRleCwgcmVzb3VyY2UpOwor
ICAgICAgICAgICAgICAgIEFTU0VSVChjb2xvckluZGV4IDwgbVN0YXRlLm1Db2xvckF0dGFjaG1l
bnRzLnNpemUoKSk7CisgICAgICAgICAgICAgICAgbVN0YXRlLm1Db2xvckF0dGFjaG1lbnRzW2Nv
bG9ySW5kZXhdLmF0dGFjaCh0eXBlLCBiaW5kaW5nLCB0ZXh0dXJlSW5kZXgsIHJlc291cmNlKTsK
ICAgICAgICAgICAgICAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfQ09MT1JfQVRUQUNITUVO
VF8wICsgY29sb3JJbmRleCk7CisgICAgICAgICAgICAgICAgQmluZFJlc291cmNlQ2hhbm5lbCgm
bURpcnR5Q29sb3JBdHRhY2htZW50QmluZGluZ3NbY29sb3JJbmRleF0sIHJlc291cmNlKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC04MDAsMTMgKzkx
NCwyNSBAQAogICAgIHNldEF0dGFjaG1lbnQoR0xfTk9ORSwgYmluZGluZywgSW1hZ2VJbmRleDo6
TWFrZUludmFsaWQoKSwgbnVsbHB0cik7CiB9CiAKLXZvaWQgRnJhbWVidWZmZXI6OnN5bmNTdGF0
ZSgpIGNvbnN0Cit2b2lkIEZyYW1lYnVmZmVyOjpzeW5jU3RhdGUoKQogewogICAgIGlmIChtRGly
dHlCaXRzLmFueSgpKQogICAgIHsKICAgICAgICAgbUltcGwtPnN5bmNTdGF0ZShtRGlydHlCaXRz
KTsKICAgICAgICAgbURpcnR5Qml0cy5yZXNldCgpOworICAgICAgICBtQ2FjaGVkU3RhdHVzLnJl
c2V0KCk7CiAgICAgfQogfQogCit2b2lkIEZyYW1lYnVmZmVyOjpzaWduYWwoU2lnbmFsVG9rZW4g
dG9rZW4pCit7CisgICAgLy8gVE9PRChqbWFkaWxsKTogTWFrZSB0aGlzIG9ubHkgdXBkYXRlIGlu
ZGl2aWR1YWwgYXR0YWNobWVudHMgdG8gZG8gbGVzcyB3b3JrLgorICAgIG1DYWNoZWRTdGF0dXMu
cmVzZXQoKTsKK30KKworYm9vbCBGcmFtZWJ1ZmZlcjo6Y29tcGxldGUoY29uc3QgQ29udGV4dFN0
YXRlICZzdGF0ZSkKK3sKKyAgICByZXR1cm4gKGNoZWNrU3RhdHVzKHN0YXRlKSA9PSBHTF9GUkFN
RUJVRkZFUl9DT01QTEVURSk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSBnbApJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZyYW1lYnVmZmVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZyYW1lYnVmZmVyLmgJKHJl
dmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9G
cmFtZWJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw2ICsxMiw3IEBACiAKICNpbmNsdWRl
IDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJjb21tb24vT3B0aW9uYWwuaCIKICNpbmNsdWRlICJjb21t
b24vYW5nbGV1dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0NvbnN0YW50cy5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL0RlYnVnLmgiCkBAIC0xOCwxMCArMTksMTIgQEAKICNpbmNsdWRlICJsaWJB
TkdMRS9FcnJvci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5o
IgogI2luY2x1ZGUgImxpYkFOR0xFL1JlZkNvdW50T2JqZWN0LmgiCisjaW5jbHVkZSAibGliQU5H
TEUvc2lnbmFsX3V0aWxzLmgiCiAKIG5hbWVzcGFjZSByeAogewotY2xhc3MgSW1wbEZhY3Rvcnk7
CitjbGFzcyBDb250ZXh0SW1wbDsKK2NsYXNzIEdMSW1wbEZhY3Rvcnk7CiBjbGFzcyBGcmFtZWJ1
ZmZlckltcGw7CiBjbGFzcyBSZW5kZXJidWZmZXJJbXBsOwogY2xhc3MgU3VyZmFjZUltcGw7CkBA
IC0zNSw1NyArMzgsNjUgQEAKIG5hbWVzcGFjZSBnbAogewogY2xhc3MgQ29udGV4dDsKK2NsYXNz
IEZyYW1lYnVmZmVyOwogY2xhc3MgUmVuZGVyYnVmZmVyOwogY2xhc3MgU3RhdGU7CiBjbGFzcyBU
ZXh0dXJlOwogY2xhc3MgVGV4dHVyZUNhcHNNYXA7CiBzdHJ1Y3QgQ2FwczsKLXN0cnVjdCBEYXRh
OworY2xhc3MgQ29udGV4dFN0YXRlOwogc3RydWN0IEV4dGVuc2lvbnM7CiBzdHJ1Y3QgSW1hZ2VJ
bmRleDsKIHN0cnVjdCBSZWN0YW5nbGU7CiAKLWNsYXNzIEZyYW1lYnVmZmVyIGZpbmFsIDogcHVi
bGljIExhYmVsZWRPYmplY3QKK2NsYXNzIEZyYW1lYnVmZmVyU3RhdGUgZmluYWwgOiBhbmdsZTo6
Tm9uQ29weWFibGUKIHsKICAgcHVibGljOgorICAgIEZyYW1lYnVmZmVyU3RhdGUoKTsKKyAgICBl
eHBsaWNpdCBGcmFtZWJ1ZmZlclN0YXRlKGNvbnN0IENhcHMgJmNhcHMpOworICAgIH5GcmFtZWJ1
ZmZlclN0YXRlKCk7CiAKLSAgICBjbGFzcyBEYXRhIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxl
Ci0gICAgewotICAgICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBEYXRhKCk7Ci0gICAgICAg
IGV4cGxpY2l0IERhdGEoY29uc3QgQ2FwcyAmY2Fwcyk7Ci0gICAgICAgIH5EYXRhKCk7CisgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJmdldExhYmVsKCk7CiAKLSAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJmdldExhYmVsKCk7CisgICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpnZXRBdHRh
Y2htZW50KEdMZW51bSBhdHRhY2htZW50KSBjb25zdDsKKyAgICBjb25zdCBGcmFtZWJ1ZmZlckF0
dGFjaG1lbnQgKmdldFJlYWRBdHRhY2htZW50KCkgY29uc3Q7CisgICAgY29uc3QgRnJhbWVidWZm
ZXJBdHRhY2htZW50ICpnZXRGaXJzdENvbG9yQXR0YWNobWVudCgpIGNvbnN0OworICAgIGNvbnN0
IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqZ2V0RGVwdGhPclN0ZW5jaWxBdHRhY2htZW50KCkgY29u
c3Q7CisgICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpnZXRDb2xvckF0dGFjaG1lbnQo
c2l6ZV90IGNvbG9yQXR0YWNobWVudCkgY29uc3Q7CisgICAgY29uc3QgRnJhbWVidWZmZXJBdHRh
Y2htZW50ICpnZXREZXB0aEF0dGFjaG1lbnQoKSBjb25zdDsKKyAgICBjb25zdCBGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnQgKmdldFN0ZW5jaWxBdHRhY2htZW50KCkgY29uc3Q7CisgICAgY29uc3QgRnJh
bWVidWZmZXJBdHRhY2htZW50ICpnZXREZXB0aFN0ZW5jaWxBdHRhY2htZW50KCkgY29uc3Q7CiAK
LSAgICAgICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpnZXRSZWFkQXR0YWNobWVudCgp
IGNvbnN0OwotICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmdldEZpcnN0Q29s
b3JBdHRhY2htZW50KCkgY29uc3Q7Ci0gICAgICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVu
dCAqZ2V0RGVwdGhPclN0ZW5jaWxBdHRhY2htZW50KCkgY29uc3Q7Ci0gICAgICAgIGNvbnN0IEZy
YW1lYnVmZmVyQXR0YWNobWVudCAqZ2V0Q29sb3JBdHRhY2htZW50KHNpemVfdCBjb2xvckF0dGFj
aG1lbnQpIGNvbnN0OwotICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmdldERl
cHRoQXR0YWNobWVudCgpIGNvbnN0OwotICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1l
bnQgKmdldFN0ZW5jaWxBdHRhY2htZW50KCkgY29uc3Q7Ci0gICAgICAgIGNvbnN0IEZyYW1lYnVm
ZmVyQXR0YWNobWVudCAqZ2V0RGVwdGhTdGVuY2lsQXR0YWNobWVudCgpIGNvbnN0OworICAgIGNv
bnN0IHN0ZDo6dmVjdG9yPEdMZW51bT4gJmdldERyYXdCdWZmZXJTdGF0ZXMoKSBjb25zdCB7IHJl
dHVybiBtRHJhd0J1ZmZlclN0YXRlczsgfQorICAgIEdMZW51bSBnZXRSZWFkQnVmZmVyU3RhdGUo
KSBjb25zdCB7IHJldHVybiBtUmVhZEJ1ZmZlclN0YXRlOyB9CisgICAgY29uc3Qgc3RkOjp2ZWN0
b3I8RnJhbWVidWZmZXJBdHRhY2htZW50PiAmZ2V0Q29sb3JBdHRhY2htZW50cygpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbUNvbG9yQXR0YWNobWVudHM7CisgICAgfQogCi0gICAgICAg
IGNvbnN0IHN0ZDo6dmVjdG9yPEdMZW51bT4gJmdldERyYXdCdWZmZXJTdGF0ZXMoKSBjb25zdCB7
IHJldHVybiBtRHJhd0J1ZmZlclN0YXRlczsgfQotICAgICAgICBHTGVudW0gZ2V0UmVhZEJ1ZmZl
clN0YXRlKCkgY29uc3QgeyByZXR1cm4gbVJlYWRCdWZmZXJTdGF0ZTsgfQotICAgICAgICBjb25z
dCBzdGQ6OnZlY3RvcjxGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ+ICZnZXRDb2xvckF0dGFjaG1lbnRz
KCkgY29uc3QgeyByZXR1cm4gbUNvbG9yQXR0YWNobWVudHM7IH0KKyAgICBib29sIGF0dGFjaG1l
bnRzSGF2ZVNhbWVEaW1lbnNpb25zKCkgY29uc3Q7CisgICAgYm9vbCBjb2xvckF0dGFjaG1lbnRz
QXJlVW5pcXVlSW1hZ2VzKCkgY29uc3Q7CiAKLSAgICAgICAgYm9vbCBhdHRhY2htZW50c0hhdmVT
YW1lRGltZW5zaW9ucygpIGNvbnN0OworICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAq
Z2V0RHJhd0J1ZmZlcihzaXplX3QgZHJhd0J1ZmZlcklkeCkgY29uc3Q7CisgICAgc2l6ZV90IGdl
dERyYXdCdWZmZXJDb3VudCgpIGNvbnN0OwogCi0gICAgICBwcml2YXRlOgotICAgICAgICBmcmll
bmQgY2xhc3MgRnJhbWVidWZmZXI7CisgIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEZyYW1l
YnVmZmVyOwogCi0gICAgICAgIHN0ZDo6c3RyaW5nIG1MYWJlbDsKKyAgICBzdGQ6OnN0cmluZyBt
TGFiZWw7CiAKLSAgICAgICAgc3RkOjp2ZWN0b3I8RnJhbWVidWZmZXJBdHRhY2htZW50PiBtQ29s
b3JBdHRhY2htZW50czsKLSAgICAgICAgRnJhbWVidWZmZXJBdHRhY2htZW50IG1EZXB0aEF0dGFj
aG1lbnQ7Ci0gICAgICAgIEZyYW1lYnVmZmVyQXR0YWNobWVudCBtU3RlbmNpbEF0dGFjaG1lbnQ7
CisgICAgc3RkOjp2ZWN0b3I8RnJhbWVidWZmZXJBdHRhY2htZW50PiBtQ29sb3JBdHRhY2htZW50
czsKKyAgICBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgbURlcHRoQXR0YWNobWVudDsKKyAgICBGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnQgbVN0ZW5jaWxBdHRhY2htZW50OwogCi0gICAgICAgIHN0ZDo6dmVj
dG9yPEdMZW51bT4gbURyYXdCdWZmZXJTdGF0ZXM7Ci0gICAgICAgIEdMZW51bSBtUmVhZEJ1ZmZl
clN0YXRlOwotICAgIH07CisgICAgc3RkOjp2ZWN0b3I8R0xlbnVtPiBtRHJhd0J1ZmZlclN0YXRl
czsKKyAgICBHTGVudW0gbVJlYWRCdWZmZXJTdGF0ZTsKK307CiAKLSAgICBGcmFtZWJ1ZmZlcihj
b25zdCBDYXBzICZjYXBzLCByeDo6SW1wbEZhY3RvcnkgKmZhY3RvcnksIEdMdWludCBpZCk7Citj
bGFzcyBGcmFtZWJ1ZmZlciBmaW5hbCA6IHB1YmxpYyBMYWJlbGVkT2JqZWN0LCBwdWJsaWMgYW5n
bGU6OlNpZ25hbFJlY2VpdmVyCit7CisgIHB1YmxpYzoKKyAgICBGcmFtZWJ1ZmZlcihjb25zdCBD
YXBzICZjYXBzLCByeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwgR0x1aW50IGlkKTsKICAgICBG
cmFtZWJ1ZmZlcihyeDo6U3VyZmFjZUltcGwgKnN1cmZhY2UpOwogICAgIHZpcnR1YWwgfkZyYW1l
YnVmZmVyKCk7CiAKQEAgLTkyLDggKzEwMyw3IEBACiAgICAgdm9pZCBzZXRMYWJlbChjb25zdCBz
dGQ6OnN0cmluZyAmbGFiZWwpIG92ZXJyaWRlOwogICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZnZXRM
YWJlbCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgY29uc3Qgcng6OkZyYW1lYnVmZmVySW1wbCAq
Z2V0SW1wbGVtZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtSW1wbDsgfQotICAgIHJ4OjpGcmFt
ZWJ1ZmZlckltcGwgKmdldEltcGxlbWVudGF0aW9uKCkgeyByZXR1cm4gbUltcGw7IH0KKyAgICBy
eDo6RnJhbWVidWZmZXJJbXBsICpnZXRJbXBsZW1lbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1J
bXBsOyB9CiAKICAgICBHTHVpbnQgaWQoKSBjb25zdCB7IHJldHVybiBtSWQ7IH0KIApAQCAtMTMw
LDEwICsxNDAsMTYgQEAKICAgICBzaXplX3QgZ2V0TnVtQ29sb3JCdWZmZXJzKCkgY29uc3Q7CiAg
ICAgYm9vbCBoYXNEZXB0aCgpIGNvbnN0OwogICAgIGJvb2wgaGFzU3RlbmNpbCgpIGNvbnN0Owot
ICAgIGludCBnZXRTYW1wbGVzKGNvbnN0IGdsOjpEYXRhICZkYXRhKSBjb25zdDsKKwogICAgIGJv
b2wgdXNpbmdFeHRlbmRlZERyYXdCdWZmZXJzKCkgY29uc3Q7CiAKLSAgICBHTGVudW0gY2hlY2tT
dGF0dXMoY29uc3QgZ2w6OkRhdGEgJmRhdGEpIGNvbnN0OworICAgIC8vIFRoaXMgbWV0aG9kIGNh
bGxzIGNoZWNrU3RhdHVzLgorICAgIGludCBnZXRTYW1wbGVzKGNvbnN0IENvbnRleHRTdGF0ZSAm
c3RhdGUpOworICAgIEdMZW51bSBjaGVja1N0YXR1cyhjb25zdCBDb250ZXh0U3RhdGUgJnN0YXRl
KTsKKworICAgIC8vIEhlbHBlciBmb3IgY2hlY2tTdGF0dXMgPT0gR0xfRlJBTUVCVUZGRVJfQ09N
UExFVEUuCisgICAgYm9vbCBjb21wbGV0ZShjb25zdCBDb250ZXh0U3RhdGUgJnN0YXRlKTsKKwog
ICAgIGJvb2wgaGFzVmFsaWREZXB0aFN0ZW5jaWwoKSBjb25zdDsKIAogICAgIEVycm9yIGRpc2Nh
cmQoc2l6ZV90IGNvdW50LCBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKTsKQEAgLTE0MCwzNiAr
MTU2LDM4IEBACiAgICAgRXJyb3IgaW52YWxpZGF0ZShzaXplX3QgY291bnQsIGNvbnN0IEdMZW51
bSAqYXR0YWNobWVudHMpOwogICAgIEVycm9yIGludmFsaWRhdGVTdWIoc2l6ZV90IGNvdW50LCBj
b25zdCBHTGVudW0gKmF0dGFjaG1lbnRzLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZhcmVhKTsKIAot
ICAgIEVycm9yIGNsZWFyKGNvbnN0IGdsOjpEYXRhICZkYXRhLCBHTGJpdGZpZWxkIG1hc2spOwot
ICAgIEVycm9yIGNsZWFyQnVmZmVyZnYoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCisgICAgRXJyb3Ig
Y2xlYXIocng6OkNvbnRleHRJbXBsICpjb250ZXh0LCBHTGJpdGZpZWxkIG1hc2spOworICAgIEVy
cm9yIGNsZWFyQnVmZmVyZnYocng6OkNvbnRleHRJbXBsICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGRyYXdidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1
ZXMpOwotICAgIEVycm9yIGNsZWFyQnVmZmVydWl2KGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAg
IEVycm9yIGNsZWFyQnVmZmVydWl2KHJ4OjpDb250ZXh0SW1wbCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGRyYXdidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50
ICp2YWx1ZXMpOwotICAgIEVycm9yIGNsZWFyQnVmZmVyaXYoY29uc3QgZ2w6OkRhdGEgJmRhdGEs
IEdMZW51bSBidWZmZXIsIEdMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdMaW50ICp2YWx1ZXMpOwot
ICAgIEVycm9yIGNsZWFyQnVmZmVyZmkoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCisgICAgRXJyb3Ig
Y2xlYXJCdWZmZXJpdihyeDo6Q29udGV4dEltcGwgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHJh
d2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZXMpOwor
ICAgIEVycm9yIGNsZWFyQnVmZmVyZmkocng6OkNvbnRleHRJbXBsICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGRyYXdidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGRlcHRo
LAogICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3RlbmNpbCk7CiAKICAgICBHTGVudW0g
Z2V0SW1wbGVtZW50YXRpb25Db2xvclJlYWRGb3JtYXQoKSBjb25zdDsKICAgICBHTGVudW0gZ2V0
SW1wbGVtZW50YXRpb25Db2xvclJlYWRUeXBlKCkgY29uc3Q7Ci0gICAgRXJyb3IgcmVhZFBpeGVs
cyhjb25zdCBnbDo6U3RhdGUgJnN0YXRlLAorICAgIEVycm9yIHJlYWRQaXhlbHMocng6OkNvbnRl
eHRJbXBsICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3Rhbmds
ZSAmYXJlYSwKICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqcGl4
ZWxzKSBjb25zdDsKIAotICAgIEVycm9yIGJsaXQoY29uc3QgU3RhdGUgJnN0YXRlLAorICAgIEVy
cm9yIGJsaXQocng6OkNvbnRleHRJbXBsICpjb250ZXh0LAogICAgICAgICAgICAgICAgY29uc3Qg
UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAogICAgICAgICAgICAgICAgY29uc3QgUmVjdGFuZ2xlICZk
ZXN0QXJlYSwKICAgICAgICAgICAgICAgIEdMYml0ZmllbGQgbWFzaywKLSAgICAgICAgICAgICAg
IEdMZW51bSBmaWx0ZXIsCi0gICAgICAgICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlciAqc291cmNl
RnJhbWVidWZmZXIpOworICAgICAgICAgICAgICAgR0xlbnVtIGZpbHRlcik7CiAKICAgICBlbnVt
IERpcnR5Qml0VHlwZQogICAgIHsKQEAgLTE4NywxOSArMjA1LDMxIEBACiAgICAgdHlwZWRlZiBz
dGQ6OmJpdHNldDxESVJUWV9CSVRfTUFYPiBEaXJ0eUJpdHM7CiAgICAgYm9vbCBoYXNBbnlEaXJ0
eUJpdCgpIGNvbnN0IHsgcmV0dXJuIG1EaXJ0eUJpdHMuYW55KCk7IH0KIAotICAgIHZvaWQgc3lu
Y1N0YXRlKCkgY29uc3Q7CisgICAgdm9pZCBzeW5jU3RhdGUoKTsKIAotICBwcm90ZWN0ZWQ6Cisg
ICAgLy8gYW5nbGU6OlNpZ25hbFJlY2VpdmVyIGltcGxlbWVudGF0aW9uCisgICAgdm9pZCBzaWdu
YWwoYW5nbGU6OlNpZ25hbFRva2VuIHRva2VuKSBvdmVycmlkZTsKKworICBwcml2YXRlOgogICAg
IHZvaWQgZGV0YWNoUmVzb3VyY2VCeUlkKEdMZW51bSByZXNvdXJjZVR5cGUsIEdMdWludCByZXNv
dXJjZUlkKTsKKyAgICB2b2lkIGRldGFjaE1hdGNoaW5nQXR0YWNobWVudChGcmFtZWJ1ZmZlckF0
dGFjaG1lbnQgKmF0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIG1hdGNoVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgbWF0Y2hJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGly
dHlCaXQpOworICAgIEdMZW51bSBjaGVja1N0YXR1c0ltcGwoY29uc3QgQ29udGV4dFN0YXRlICZz
dGF0ZSk7CiAKLSAgICBEYXRhIG1EYXRhOworICAgIEZyYW1lYnVmZmVyU3RhdGUgbVN0YXRlOwog
ICAgIHJ4OjpGcmFtZWJ1ZmZlckltcGwgKm1JbXBsOwogICAgIEdMdWludCBtSWQ7CiAKLSAgICAv
LyBUT0RPKGptYWRpbGwpOiBTZWUgaWYgd2UgY2FuIG1ha2UgdGhpcyBub24tbXV0YWJsZS4KLSAg
ICBtdXRhYmxlIERpcnR5Qml0cyBtRGlydHlCaXRzOworICAgIE9wdGlvbmFsPEdMZW51bT4gbUNh
Y2hlZFN0YXR1czsKKyAgICBzdGQ6OnZlY3RvcjxhbmdsZTo6Q2hhbm5lbEJpbmRpbmc+IG1EaXJ0
eUNvbG9yQXR0YWNobWVudEJpbmRpbmdzOworICAgIGFuZ2xlOjpDaGFubmVsQmluZGluZyBtRGly
dHlEZXB0aEF0dGFjaG1lbnRCaW5kaW5nOworICAgIGFuZ2xlOjpDaGFubmVsQmluZGluZyBtRGly
dHlTdGVuY2lsQXR0YWNobWVudEJpbmRpbmc7CisKKyAgICBEaXJ0eUJpdHMgbURpcnR5Qml0czsK
IH07CiAKLX0KK30gIC8vIG5hbWVzcGFjZSBnbAogCiAjZW5kaWYgICAvLyBMSUJBTkdMRV9GUkFN
RUJVRkZFUl9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Zy
YW1lYnVmZmVyQXR0YWNobWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5jcHAJKHJldmlzaW9uIDIw
ODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GcmFtZWJ1ZmZl
ckF0dGFjaG1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVk
ZSAibGliQU5HTEUvVGV4dHVyZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL2Zvcm1hdHV0aWxzLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvRnJhbWVidWZmZXJJbXBsLmgiCisjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0SW1wbC5oIgog
CiBuYW1lc3BhY2UgZ2wKIHsKQEAgLTExNCw0MiArMTE1LDQyIEBACiAKIEdMdWludCBGcmFtZWJ1
ZmZlckF0dGFjaG1lbnQ6OmdldFJlZFNpemUoKSBjb25zdAogewotICAgIHJldHVybiBHZXRJbnRl
cm5hbEZvcm1hdEluZm8oZ2V0SW50ZXJuYWxGb3JtYXQoKSkucmVkQml0czsKKyAgICByZXR1cm4g
Z2V0Rm9ybWF0KCkuaW5mby0+cmVkQml0czsKIH0KIAogR0x1aW50IEZyYW1lYnVmZmVyQXR0YWNo
bWVudDo6Z2V0R3JlZW5TaXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gR2V0SW50ZXJuYWxGb3Jt
YXRJbmZvKGdldEludGVybmFsRm9ybWF0KCkpLmdyZWVuQml0czsKKyAgICByZXR1cm4gZ2V0Rm9y
bWF0KCkuaW5mby0+Z3JlZW5CaXRzOwogfQogCiBHTHVpbnQgRnJhbWVidWZmZXJBdHRhY2htZW50
OjpnZXRCbHVlU2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEdldEludGVybmFsRm9ybWF0SW5m
byhnZXRJbnRlcm5hbEZvcm1hdCgpKS5ibHVlQml0czsKKyAgICByZXR1cm4gZ2V0Rm9ybWF0KCku
aW5mby0+Ymx1ZUJpdHM7CiB9CiAKIEdMdWludCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OmdldEFs
cGhhU2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEdldEludGVybmFsRm9ybWF0SW5mbyhnZXRJ
bnRlcm5hbEZvcm1hdCgpKS5hbHBoYUJpdHM7CisgICAgcmV0dXJuIGdldEZvcm1hdCgpLmluZm8t
PmFscGhhQml0czsKIH0KIAogR0x1aW50IEZyYW1lYnVmZmVyQXR0YWNobWVudDo6Z2V0RGVwdGhT
aXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gR2V0SW50ZXJuYWxGb3JtYXRJbmZvKGdldEludGVy
bmFsRm9ybWF0KCkpLmRlcHRoQml0czsKKyAgICByZXR1cm4gZ2V0Rm9ybWF0KCkuaW5mby0+ZGVw
dGhCaXRzOwogfQogCiBHTHVpbnQgRnJhbWVidWZmZXJBdHRhY2htZW50OjpnZXRTdGVuY2lsU2l6
ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEdldEludGVybmFsRm9ybWF0SW5mbyhnZXRJbnRlcm5h
bEZvcm1hdCgpKS5zdGVuY2lsQml0czsKKyAgICByZXR1cm4gZ2V0Rm9ybWF0KCkuaW5mby0+c3Rl
bmNpbEJpdHM7CiB9CiAKIEdMZW51bSBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OmdldENvbXBvbmVu
dFR5cGUoKSBjb25zdAogewotICAgIHJldHVybiBHZXRJbnRlcm5hbEZvcm1hdEluZm8oZ2V0SW50
ZXJuYWxGb3JtYXQoKSkuY29tcG9uZW50VHlwZTsKKyAgICByZXR1cm4gZ2V0Rm9ybWF0KCkuaW5m
by0+Y29tcG9uZW50VHlwZTsKIH0KIAogR0xlbnVtIEZyYW1lYnVmZmVyQXR0YWNobWVudDo6Z2V0
Q29sb3JFbmNvZGluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEdldEludGVybmFsRm9ybWF0SW5m
byhnZXRJbnRlcm5hbEZvcm1hdCgpKS5jb2xvckVuY29kaW5nOworICAgIHJldHVybiBnZXRGb3Jt
YXQoKS5pbmZvLT5jb2xvckVuY29kaW5nOwogfQogCiBHTHVpbnQgRnJhbWVidWZmZXJBdHRhY2ht
ZW50OjppZCgpIGNvbnN0CkBAIC0yMDUsNCArMjA2LDM2IEBACiAgICAgcmV0dXJuIHJ4OjpHZXRB
czxlZ2w6OlN1cmZhY2U+KG1SZXNvdXJjZSk7CiB9CiAKK2Jvb2wgRnJhbWVidWZmZXJBdHRhY2ht
ZW50OjpvcGVyYXRvcj09KGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAmb3RoZXIpIGNvbnN0
Cit7CisgICAgaWYgKG1SZXNvdXJjZSAhPSBvdGhlci5tUmVzb3VyY2UgfHwgbVR5cGUgIT0gb3Ro
ZXIubVR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYg
KG1UeXBlID09IEdMX1RFWFRVUkUgJiYgZ2V0VGV4dHVyZUltYWdlSW5kZXgoKSAhPSBvdGhlci5n
ZXRUZXh0dXJlSW1hZ2VJbmRleCgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIHJldHVybiB0cnVlOwogfQorCitib29sIEZyYW1lYnVmZmVyQXR0YWNobWVudDo6
b3BlcmF0b3IhPShjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgJm90aGVyKSBjb25zdAorewor
ICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKK30KKworRXJyb3IgRnJhbWVidWZmZXJBdHRh
Y2htZW50T2JqZWN0OjpnZXRBdHRhY2htZW50UmVuZGVyVGFyZ2V0KAorICAgIGNvbnN0IEZyYW1l
YnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQsCisgICAgcng6OkZyYW1lYnVmZmVyQXR0
YWNobWVudFJlbmRlclRhcmdldCAqKnJ0T3V0KSBjb25zdAoreworICAgIHJldHVybiBnZXRBdHRh
Y2htZW50SW1wbCgpLT5nZXRBdHRhY2htZW50UmVuZGVyVGFyZ2V0KHRhcmdldCwgcnRPdXQpOwor
fQorCithbmdsZTo6QnJvYWRjYXN0Q2hhbm5lbCAqRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0
OjpnZXREaXJ0eUNoYW5uZWwoKQoreworICAgIHJldHVybiAmbURpcnR5Q2hhbm5lbDsKK30KKwor
fSAgLy8gbmFtZXNwYWNlIGdsCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvRnJhbWVidWZmZXJBdHRhY2htZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5oCShyZXZpc2lv
biAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRnJhbWVi
dWZmZXJBdHRhY2htZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNs
dWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRXJyb3IuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9JbWFnZUluZGV4LmgiCisjaW5jbHVkZSAibGliQU5HTEUvc2ln
bmFsX3V0aWxzLmgiCiAKIG5hbWVzcGFjZSBlZ2wKIHsKQEAgLTM4LDYgKzM5LDcgQEAKIG5hbWVz
cGFjZSBnbAogewogY2xhc3MgRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0Oworc3RydWN0IEZv
cm1hdDsKIGNsYXNzIFJlbmRlcmJ1ZmZlcjsKIGNsYXNzIFRleHR1cmU7CiAKQEAgLTExNiw3ICsx
MTgsNyBAQAogICAgIC8vIGNvcnJlc3BvbmQgdG8gYSAzRCB0ZXh0dXJlIGRlcHRoIG9yIHRoZSBs
YXllciBjb3VudCBvZiBhIDJEIGFycmF5IHRleHR1cmUuIEZvciBTdXJmYWNlcyBhbmQKICAgICAv
LyBSZW5kZXJidWZmZXJzLCBpdCB3aWxsIGFsd2F5cyBiZSAxLgogICAgIEV4dGVudHMgZ2V0U2l6
ZSgpIGNvbnN0OwotICAgIEdMZW51bSBnZXRJbnRlcm5hbEZvcm1hdCgpIGNvbnN0OworICAgIGNv
bnN0IEZvcm1hdCAmZ2V0Rm9ybWF0KCkgY29uc3Q7CiAgICAgR0xzaXplaSBnZXRTYW1wbGVzKCkg
Y29uc3Q7CiAgICAgR0xlbnVtIHR5cGUoKSBjb25zdCB7IHJldHVybiBtVHlwZTsgfQogICAgIGJv
b2wgaXNBdHRhY2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1UeXBlICE9IEdMX05PTkU7IH0KQEAgLTEz
Niw2ICsxMzgsOSBAQAogICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgfQogCisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAmb3RoZXIpIGNvbnN0OworICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgJm90aGVyKSBjb25z
dDsKKwogICBwcml2YXRlOgogICAgIGdsOjpFcnJvciBnZXRSZW5kZXJUYXJnZXQocng6OkZyYW1l
YnVmZmVyQXR0YWNobWVudFJlbmRlclRhcmdldCAqKnJ0T3V0KSBjb25zdDsKIApAQCAtMTUyLDcg
KzE1Nyw4IEBACiAgICAgdmlydHVhbCB+RnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0KCkge30K
IAogICAgIHZpcnR1YWwgRXh0ZW50cyBnZXRBdHRhY2htZW50U2l6ZShjb25zdCBGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnQ6OlRhcmdldCAmdGFyZ2V0KSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBHTGVu
dW0gZ2V0QXR0YWNobWVudEludGVybmFsRm9ybWF0KGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVu
dDo6VGFyZ2V0ICZ0YXJnZXQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IEZvcm1hdCAm
Z2V0QXR0YWNobWVudEZvcm1hdCgKKyAgICAgICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50
OjpUYXJnZXQgJnRhcmdldCkgY29uc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAwOwogICAgIHZpcnR1YWwgR0xzaXplaSBnZXRBdHRhY2htZW50U2FtcGxlcyhjb25zdCBGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnQ6OlRhcmdldCAmdGFyZ2V0KSBjb25zdCA9IDA7CiAKICAgICB2aXJ0
dWFsIHZvaWQgb25BdHRhY2goKSA9IDA7CkBAIC0xNjIsOCArMTY4LDEyIEBACiAgICAgRXJyb3Ig
Z2V0QXR0YWNobWVudFJlbmRlclRhcmdldChjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OlRh
cmdldCAmdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcng6OkZy
YW1lYnVmZmVyQXR0YWNobWVudFJlbmRlclRhcmdldCAqKnJ0T3V0KSBjb25zdDsKIAorICAgIGFu
Z2xlOjpCcm9hZGNhc3RDaGFubmVsICpnZXREaXJ0eUNoYW5uZWwoKTsKKwogICBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCByeDo6RnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0SW1wbCAqZ2V0QXR0
YWNobWVudEltcGwoKSBjb25zdCA9IDA7CisKKyAgICBhbmdsZTo6QnJvYWRjYXN0Q2hhbm5lbCBt
RGlydHlDaGFubmVsOwogfTsKIAogaW5saW5lIEV4dGVudHMgRnJhbWVidWZmZXJBdHRhY2htZW50
OjpnZXRTaXplKCkgY29uc3QKQEAgLTE3MSw5ICsxODEsOSBAQAogICAgIHJldHVybiBtUmVzb3Vy
Y2UtPmdldEF0dGFjaG1lbnRTaXplKG1UYXJnZXQpOwogfQogCi1pbmxpbmUgR0xlbnVtIEZyYW1l
YnVmZmVyQXR0YWNobWVudDo6Z2V0SW50ZXJuYWxGb3JtYXQoKSBjb25zdAoraW5saW5lIGNvbnN0
IEZvcm1hdCAmRnJhbWVidWZmZXJBdHRhY2htZW50OjpnZXRGb3JtYXQoKSBjb25zdAogewotICAg
IHJldHVybiBtUmVzb3VyY2UtPmdldEF0dGFjaG1lbnRJbnRlcm5hbEZvcm1hdChtVGFyZ2V0KTsK
KyAgICByZXR1cm4gbVJlc291cmNlLT5nZXRBdHRhY2htZW50Rm9ybWF0KG1UYXJnZXQpOwogfQog
CiBpbmxpbmUgR0xzaXplaSBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OmdldFNhbXBsZXMoKSBjb25z
dApAQCAtMTg4LDMxICsxOTgsNCBAQAogCiB9IC8vIG5hbWVzcGFjZSBnbAogCi1uYW1lc3BhY2Ug
cngKLXsKLQotY2xhc3MgRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0SW1wbCA6IGFuZ2xlOjpO
b25Db3B5YWJsZQotewotICBwdWJsaWM6Ci0gICAgRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0
SW1wbCgpIHt9Ci0gICAgdmlydHVhbCB+RnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0SW1wbCgp
IHt9Ci0KLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBnZXRBdHRhY2htZW50UmVuZGVyVGFyZ2V0KGNv
bnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OlRhcmdldCAmdGFyZ2V0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJBdHRhY2ht
ZW50UmVuZGVyVGFyZ2V0ICoqcnRPdXQpID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHJ4Ci0K
LW5hbWVzcGFjZSBnbAotewotCi1pbmxpbmUgRXJyb3IgRnJhbWVidWZmZXJBdHRhY2htZW50T2Jq
ZWN0OjpnZXRBdHRhY2htZW50UmVuZGVyVGFyZ2V0KAotICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0
YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQsCi0gICAgcng6OkZyYW1lYnVmZmVyQXR0YWNobWVudFJl
bmRlclRhcmdldCAqKnJ0T3V0KSBjb25zdAotewotICAgIHJldHVybiBnZXRBdHRhY2htZW50SW1w
bCgpLT5nZXRBdHRhY2htZW50UmVuZGVyVGFyZ2V0KHRhcmdldCwgcnRPdXQpOwotfQotCi19Ci0K
ICNlbmRpZiAvLyBMSUJBTkdMRV9GUkFNRUJVRkZFUkFUVEFDSE1FTlRfSF8KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9IYW5kbGVBbGxv
Y2F0b3IuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvSGFuZGxlQWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTEg
KzYzLDE0IEBACiAgICAgR0x1aW50IGZyZWVMaXN0SGFuZGxlID0gbGlzdEl0LT5iZWdpbjsKICAg
ICBBU1NFUlQoZnJlZUxpc3RIYW5kbGUgPiAwKTsKIAotICAgIGxpc3RJdC0+YmVnaW4rKzsKICAg
ICBpZiAobGlzdEl0LT5iZWdpbiA9PSBsaXN0SXQtPmVuZCkKICAgICB7CiAgICAgICAgIG1VbmFs
bG9jYXRlZExpc3QuZXJhc2UobGlzdEl0KTsKICAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAg
ICAgbGlzdEl0LT5iZWdpbisrOworICAgIH0KIAogICAgIHJldHVybiBmcmVlTGlzdEhhbmRsZTsK
IH0KQEAgLTEwMSw3ICsxMDQsNyBAQAogCiAgICAgaWYgKGhhbmRsZSA9PSBiZWdpbiB8fCBoYW5k
bGUgPT0gZW5kKQogICAgIHsKLSAgICAgICAgaWYgKGJlZ2luICsgMSA9PSBlbmQpCisgICAgICAg
IGlmIChiZWdpbiA9PSBlbmQpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1VbmFsbG9jYXRlZExp
c3QuZXJhc2UoYm91bmRJdCk7CiAgICAgICAgIH0KQEAgLTExNywxOCArMTIwLDEyIEBACiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKKyAgICBBU1NFUlQoYmVnaW4gPCBoYW5kbGUgJiYgaGFuZGxl
IDwgZW5kKTsKKwogICAgIC8vIG5lZWQgdG8gc3BsaXQgdGhlIHJhbmdlCiAgICAgYXV0byBwbGFj
ZW1lbnRJdCA9IG1VbmFsbG9jYXRlZExpc3QuZXJhc2UoYm91bmRJdCk7Ci0KLSAgICBpZiAoaGFu
ZGxlICsgMSAhPSBlbmQpCi0gICAgewotICAgICAgICBwbGFjZW1lbnRJdCA9IG1VbmFsbG9jYXRl
ZExpc3QuaW5zZXJ0KHBsYWNlbWVudEl0LCBIYW5kbGVSYW5nZShoYW5kbGUgKyAxLCBlbmQpKTsK
LSAgICB9Ci0gICAgaWYgKGJlZ2luICE9IGhhbmRsZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChi
ZWdpbiA8IGhhbmRsZSk7Ci0gICAgICAgIG1VbmFsbG9jYXRlZExpc3QuaW5zZXJ0KHBsYWNlbWVu
dEl0LCBIYW5kbGVSYW5nZShiZWdpbiwgaGFuZGxlKSk7Ci0gICAgfQorICAgIHBsYWNlbWVudEl0
ICAgICAgPSBtVW5hbGxvY2F0ZWRMaXN0Lmluc2VydChwbGFjZW1lbnRJdCwgSGFuZGxlUmFuZ2Uo
aGFuZGxlICsgMSwgZW5kKSk7CisgICAgbVVuYWxsb2NhdGVkTGlzdC5pbnNlcnQocGxhY2VtZW50
SXQsIEhhbmRsZVJhbmdlKGJlZ2luLCBoYW5kbGUgLSAxKSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFj
ZSBnbApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0hhbmRsZUFs
bG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9IYW5kbGVBbGxvY2F0b3IuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MSw2ICs0MSw3IEBACiAgICAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxHTHVpbnQ+IEhhbmRs
ZUxpc3Q7CiAgICAgSGFuZGxlTGlzdCBtRnJlZVZhbHVlczsKIAorICAgIC8vIFJlcHJlc2VudHMg
YW4gaW5jbHVzaXZlIHJhbmdlIFtiZWdpbiwgZW5kXQogICAgIHN0cnVjdCBIYW5kbGVSYW5nZQog
ICAgIHsKICAgICAgICAgSGFuZGxlUmFuZ2UoR0x1aW50IGJlZ2luSW4sIEdMdWludCBlbmRJbikg
OiBiZWdpbihiZWdpbkluKSwgZW5kKGVuZEluKSB7fQpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRvcl91bml0dGVzdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRv
cl91bml0dGVzdC5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9IYW5kbGVBbGxvY2F0b3JfdW5pdHRlc3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05MCw4ICs5MCw3IEBACiAgICAgRVhQRUNUX0VRKGZpbmFsUmVzdWx0LCAxKTsKIH0K
IAotLy8gVGhlIGZvbGxvd2luZyB0ZXN0IGNvdmVycyByZXNlcnZpbmcgYSBoYW5kbGUgd2l0aCBt
YXggdWludCB2YWx1ZS4KLS8vIFNlZSBodHRwOi8vYW5nbGVidWcuY29tLzEwNTIKKy8vIFRoZSBm
b2xsb3dpbmcgdGVzdCBjb3ZlcnMgcmVzZXJ2aW5nIGEgaGFuZGxlIHdpdGggbWF4IHVpbnQgdmFs
dWUuIFNlZSBodHRwOi8vYW5nbGVidWcuY29tLzEwNTIKIFRFU1QoSGFuZGxlQWxsb2NhdG9yVGVz
dCwgUmVzZXJ2ZU1heFVpbnRIYW5kbGUpCiB7CiAgICAgZ2w6OkhhbmRsZUFsbG9jYXRvciBhbGxv
Y2F0b3I7CkBAIC0xMDMsNiArMTAyLDE5IEBACiAgICAgRVhQRUNUX0VRKDF1LCBub3JtYWxIYW5k
bGUpOwogfQogCisvLyBUaGUgZm9sbG93aW5nIHRlc3QgY292ZXJzIHJlc2VydmluZyBhIGhhbmRs
ZSB3aXRoIG1heCB1aW50IHZhbHVlIG1pbnVzIG9uZSB0aGVuIG1heCB1aW50IHZhbHVlLgorVEVT
VChIYW5kbGVBbGxvY2F0b3JUZXN0LCBSZXNlcnZlTWF4VWludEhhbmRsZTIpCit7CisgICAgZ2w6
OkhhbmRsZUFsbG9jYXRvciBhbGxvY2F0b3I7CisKKyAgICBHTHVpbnQgbWF4VWludEhhbmRsZSA9
IHN0ZDo6bnVtZXJpY19saW1pdHM8R0x1aW50Pjo6bWF4KCk7CisgICAgYWxsb2NhdG9yLnJlc2Vy
dmUobWF4VWludEhhbmRsZSAtIDEpOworICAgIGFsbG9jYXRvci5yZXNlcnZlKG1heFVpbnRIYW5k
bGUpOworCisgICAgR0x1aW50IG5vcm1hbEhhbmRsZSA9IGFsbG9jYXRvci5hbGxvY2F0ZSgpOwor
ICAgIEVYUEVDVF9FUSgxdSwgbm9ybWFsSGFuZGxlKTsKK30KKwogLy8gVG8gdGVzdCBpZiB0aGUg
YWxsb2NhdG9yIGtlZXAgdGhlIGhhbmRsZSBpbiBhIHNvcnRlZCBvcmRlci4KIFRFU1QoSGFuZGxl
QWxsb2NhdG9yVGVzdCwgU29ydGVkT3JkZXJIYW5kbGUpCiB7CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSGFuZGxlUmFuZ2VBbGxvY2F0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9IYW5kbGVSYW5nZUFs
bG9jYXRvci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL0hhbmRsZVJhbmdlQWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDIyNiBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEhhbmRsZVJhbmdlQWxsb2NhdG9yLmNwcCA6
IEltcGxlbWVudGF0aW9uIGZvciBIYW5kbGVSYW5nZUFsbG9jYXRvci5oCisKKyNpbmNsdWRlICJs
aWJBTkdMRS9IYW5kbGVSYW5nZUFsbG9jYXRvci5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgor
I2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx1dGlsaXR5PgorCisjaW5jbHVkZSAiY29tbW9u
L2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKworbmFtZXNwYWNlIGds
Cit7CisKK2NvbnN0IEdMdWludCBIYW5kbGVSYW5nZUFsbG9jYXRvcjo6a0ludmFsaWRIYW5kbGUg
PSAwOworCitIYW5kbGVSYW5nZUFsbG9jYXRvcjo6SGFuZGxlUmFuZ2VBbGxvY2F0b3IoKQorewor
ICAgIC8vIFNpbXBsaWZ5IHRoZSBjb2RlIGJ5IG1ha2luZyBzdXJlIHRoYXQgbG93ZXJfYm91bmQo
aWQpIG5ldmVyCisgICAgLy8gcmV0dXJucyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBtYXAsIGlmIGlk
IGlzIHZhbGlkIChlZyAhPSBrSW52YWxpZEhhbmRsZSkuCisgICAgbVVzZWQuaW5zZXJ0KHN0ZDo6
bWFrZV9wYWlyKDB1LCAwdSkpOworfQorCitHTHVpbnQgSGFuZGxlUmFuZ2VBbGxvY2F0b3I6OmFs
bG9jYXRlKCkKK3sKKyAgICByZXR1cm4gYWxsb2NhdGVSYW5nZSgxdSk7Cit9CisKK0dMdWludCBI
YW5kbGVSYW5nZUFsbG9jYXRvcjo6YWxsb2NhdGVBdE9yQWJvdmUoR0x1aW50IHdhbnRlZCkKK3sK
KyAgICBpZiAod2FudGVkID09IDB1IHx8IHdhbnRlZCA9PSAxdSkKKyAgICAgICAgcmV0dXJuIGFs
bG9jYXRlUmFuZ2UoMXUpOworCisgICAgYXV0byBjdXJyZW50ID0gbVVzZWQubG93ZXJfYm91bmQo
d2FudGVkKTsKKyAgICBhdXRvIG5leHQgPSBjdXJyZW50OworICAgIGlmIChjdXJyZW50ID09IG1V
c2VkLmVuZCgpIHx8IGN1cnJlbnQtPmZpcnN0ID4gd2FudGVkKQorICAgIHsKKyAgICAgICAgY3Vy
cmVudC0tOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBuZXh0Kys7CisgICAgfQor
CisgICAgR0x1aW50IGZpcnN0SWQgPSBjdXJyZW50LT5maXJzdDsKKyAgICBVTlVTRURfQVNTRVJU
SU9OX1ZBUklBQkxFKGZpcnN0SWQpOworICAgIEdMdWludCBsYXN0SWQgPSBjdXJyZW50LT5zZWNv
bmQ7CisgICAgQVNTRVJUKHdhbnRlZCA+PSBmaXJzdElkKTsKKworICAgIGlmICh3YW50ZWQgLSAx
dSA8PSBsYXN0SWQpCisgICAgeworICAgICAgICAvLyBBcHBlbmQgdG8gY3VycmVudCByYW5nZS4K
KyAgICAgICAgbGFzdElkKys7CisgICAgICAgIGlmIChsYXN0SWQgPT0gMCkKKyAgICAgICAgewor
ICAgICAgICAgICAgLy8gVGhlIGluY3JlbWVudCBvdmVyZmxvd2VkLgorICAgICAgICAgICAgcmV0
dXJuIGFsbG9jYXRlUmFuZ2UoMXUpOworICAgICAgICB9CisKKyAgICAgICAgY3VycmVudC0+c2Vj
b25kID0gbGFzdElkOworCisgICAgICAgIGlmIChuZXh0ICE9IG1Vc2VkLmVuZCgpICYmIG5leHQt
PmZpcnN0IC0gMXUgPT0gbGFzdElkKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBNZXJnZSB3
aXRoIG5leHQgcmFuZ2UuCisgICAgICAgICAgICBjdXJyZW50LT5zZWNvbmQgPSBuZXh0LT5zZWNv
bmQ7CisgICAgICAgICAgICBtVXNlZC5lcmFzZShuZXh0KTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gbGFzdElkOworICAgIH0KKyAgICBlbHNlIGlmIChuZXh0ICE9IG1Vc2VkLmVuZCgpICYm
IG5leHQtPmZpcnN0IC0gMXUgPT0gd2FudGVkKQorICAgIHsKKyAgICAgICAgLy8gUHJlcGVuZCB0
byBuZXh0IHJhbmdlLgorICAgICAgICBHTHVpbnQgbGFzdEV4aXN0aW5nID0gbmV4dC0+c2Vjb25k
OworICAgICAgICBtVXNlZC5lcmFzZShuZXh0KTsKKyAgICAgICAgbVVzZWQuaW5zZXJ0KHN0ZDo6
bWFrZV9wYWlyKHdhbnRlZCwgbGFzdEV4aXN0aW5nKSk7CisgICAgICAgIHJldHVybiB3YW50ZWQ7
CisgICAgfQorICAgIG1Vc2VkLmluc2VydChzdGQ6Om1ha2VfcGFpcih3YW50ZWQsIHdhbnRlZCkp
OworICAgIHJldHVybiB3YW50ZWQ7Cit9CisKK0dMdWludCBIYW5kbGVSYW5nZUFsbG9jYXRvcjo6
YWxsb2NhdGVSYW5nZShHTHVpbnQgcmFuZ2UpCit7CisgICAgQVNTRVJUKHJhbmdlICE9IDApOwor
CisgICAgYXV0byBjdXJyZW50ID0gbVVzZWQuYmVnaW4oKTsKKyAgICBhdXRvIG5leHQgICAgPSBj
dXJyZW50OworCisgICAgd2hpbGUgKCsrbmV4dCAhPSBtVXNlZC5lbmQoKSkKKyAgICB7CisgICAg
ICAgIGlmIChuZXh0LT5maXJzdCAtIGN1cnJlbnQtPnNlY29uZCA+IHJhbmdlKQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGN1cnJlbnQgPSBuZXh0OworICAgIH0KKyAgICBjb25zdCBHTHVp
bnQgZmlyc3RJZCA9IGN1cnJlbnQtPnNlY29uZCArIDF1OworICAgIGNvbnN0IEdMdWludCBsYXN0
SWQgID0gZmlyc3RJZCArIHJhbmdlIC0gMXU7CisKKyAgICAvLyBkZWFsIHdpdGggd3JhcGFyb3Vu
ZAorICAgIGlmIChmaXJzdElkID09IDB1IHx8IGxhc3RJZCA8IGZpcnN0SWQpCisgICAgICAgIHJl
dHVybiBrSW52YWxpZEhhbmRsZTsKKworICAgIGN1cnJlbnQtPnNlY29uZCA9IGxhc3RJZDsKKwor
ICAgIGlmIChuZXh0ICE9IG1Vc2VkLmVuZCgpICYmIG5leHQtPmZpcnN0IC0gMXUgPT0gbGFzdElk
KQorICAgIHsKKyAgICAgICAgLy8gbWVyZ2Ugd2l0aCBuZXh0IHJhbmdlCisgICAgICAgIGN1cnJl
bnQtPnNlY29uZCA9IG5leHQtPnNlY29uZDsKKyAgICAgICAgbVVzZWQuZXJhc2UobmV4dCk7Cisg
ICAgfQorICAgIHJldHVybiBmaXJzdElkOworfQorCitib29sIEhhbmRsZVJhbmdlQWxsb2NhdG9y
OjptYXJrQXNVc2VkKEdMdWludCBoYW5kbGUpCit7CisgICAgQVNTRVJUKGhhbmRsZSk7CisgICAg
YXV0byBjdXJyZW50ID0gbVVzZWQubG93ZXJfYm91bmQoaGFuZGxlKTsKKyAgICBpZiAoY3VycmVu
dCAhPSBtVXNlZC5lbmQoKSAmJiBjdXJyZW50LT5maXJzdCA9PSBoYW5kbGUpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGF1dG8gbmV4dCA9IGN1cnJlbnQ7CisgICAgLS1jdXJyZW50Owor
CisgICAgaWYgKGN1cnJlbnQtPnNlY29uZCA+PSBoYW5kbGUpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIEFTU0VSVChjdXJyZW50LT5maXJzdCA8IGhhbmRsZSAmJiBjdXJyZW50LT5zZWNv
bmQgPCBoYW5kbGUpOworCisgICAgaWYgKGN1cnJlbnQtPnNlY29uZCArIDF1ID09IGhhbmRsZSkK
KyAgICB7CisgICAgICAgIC8vIEFwcGVuZCB0byBjdXJyZW50IHJhbmdlLgorICAgICAgICBjdXJy
ZW50LT5zZWNvbmQgPSBoYW5kbGU7CisgICAgICAgIGlmIChuZXh0ICE9IG1Vc2VkLmVuZCgpICYm
IG5leHQtPmZpcnN0IC0gMXUgPT0gaGFuZGxlKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBN
ZXJnZSB3aXRoIG5leHQgcmFuZ2UuCisgICAgICAgICAgICBjdXJyZW50LT5zZWNvbmQgPSBuZXh0
LT5zZWNvbmQ7CisgICAgICAgICAgICBtVXNlZC5lcmFzZShuZXh0KTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgZWxzZSBpZiAobmV4dCAhPSBtVXNlZC5lbmQo
KSAmJiBuZXh0LT5maXJzdCAtIDF1ID09IGhhbmRsZSkKKyAgICB7CisgICAgICAgIC8vIFByZXBl
bmQgdG8gbmV4dCByYW5nZS4KKyAgICAgICAgR0x1aW50IGxhc3RFeGlzdGluZyA9IG5leHQtPnNl
Y29uZDsKKyAgICAgICAgbVVzZWQuZXJhc2UobmV4dCk7CisgICAgICAgIG1Vc2VkLmluc2VydChz
dGQ6Om1ha2VfcGFpcihoYW5kbGUsIGxhc3RFeGlzdGluZykpOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKKyAgICBtVXNlZC5pbnNlcnQoc3RkOjptYWtlX3BhaXIoaGFuZGxlLCBoYW5k
bGUpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBIYW5kbGVSYW5nZUFsbG9jYXRvcjo6
cmVsZWFzZShHTHVpbnQgaGFuZGxlKQoreworICAgIHJlbGVhc2VSYW5nZShoYW5kbGUsIDF1KTsK
K30KKwordm9pZCBIYW5kbGVSYW5nZUFsbG9jYXRvcjo6cmVsZWFzZVJhbmdlKEdMdWludCBmaXJz
dCwgR0x1aW50IHJhbmdlKQoreworICAgIGlmIChyYW5nZSA9PSAwdSB8fCAoZmlyc3QgPT0gMHUg
JiYgcmFuZ2UgPT0gMXUpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZmlyc3QgPT0gMHUp
CisgICAgeworICAgICAgICBmaXJzdCsrOworICAgICAgICByYW5nZS0tOworICAgIH0KKworICAg
IEdMdWludCBsYXN0ID0gZmlyc3QgKyByYW5nZSAtIDF1OworICAgIGlmIChsYXN0IDwgZmlyc3Qp
CisgICAgICAgIGxhc3QgPSBzdGQ6Om51bWVyaWNfbGltaXRzPEdMdWludD46Om1heCgpOworCisg
ICAgd2hpbGUgKHRydWUpCisgICAgeworICAgICAgICBhdXRvIGN1cnJlbnQgPSBtVXNlZC5sb3dl
cl9ib3VuZChsYXN0KTsKKyAgICAgICAgaWYgKGN1cnJlbnQgPT0gbVVzZWQuZW5kKCkgfHwgY3Vy
cmVudC0+Zmlyc3QgPiBsYXN0KQorICAgICAgICAgICAgLS1jdXJyZW50OworCisgICAgICAgIGlm
IChjdXJyZW50LT5zZWNvbmQgPCBmaXJzdCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBpZiAoY3VycmVudC0+Zmlyc3QgPj0gZmlyc3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNv
bnN0IEdMdWludCBsYXN0RXhpc3RpbmcgPSBjdXJyZW50LT5zZWNvbmQ7CisgICAgICAgICAgICBt
VXNlZC5lcmFzZShjdXJyZW50KTsKKyAgICAgICAgICAgIGlmIChsYXN0IDwgbGFzdEV4aXN0aW5n
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1Vc2VkLmluc2VydChzdGQ6Om1ha2Vf
cGFpcihsYXN0ICsgMXUsIGxhc3RFeGlzdGluZykpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIGVsc2UgaWYgKGN1cnJlbnQtPnNlY29uZCA8PSBsYXN0KQorICAgICAgICB7Cisg
ICAgICAgICAgICBjdXJyZW50LT5zZWNvbmQgPSBmaXJzdCAtIDF1OworICAgICAgICB9CisgICAg
ICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGN1cnJlbnQtPmZpcnN0IDwg
Zmlyc3QgJiYgY3VycmVudC0+c2Vjb25kID4gbGFzdCk7CisgICAgICAgICAgICBjb25zdCBHTHVp
bnQgbGFzdEV4aXN0aW5nID0gY3VycmVudC0+c2Vjb25kOworICAgICAgICAgICAgY3VycmVudC0+
c2Vjb25kID0gZmlyc3QgLSAxdTsKKyAgICAgICAgICAgIG1Vc2VkLmluc2VydChzdGQ6Om1ha2Vf
cGFpcihsYXN0ICsgMXUsIGxhc3RFeGlzdGluZykpOworICAgICAgICB9CisgICAgfQorfQorCiti
b29sIEhhbmRsZVJhbmdlQWxsb2NhdG9yOjppc1VzZWQoR0x1aW50IGhhbmRsZSkgY29uc3QKK3sK
KyAgICBpZiAoaGFuZGxlID09IGtJbnZhbGlkSGFuZGxlKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBhdXRvIGN1cnJlbnQgPSBtVXNlZC5sb3dlcl9ib3VuZChoYW5kbGUpOworICAgIGlm
IChjdXJyZW50ICE9IG1Vc2VkLmVuZCgpKQorICAgIHsKKyAgICAgICAgaWYgKGN1cnJlbnQtPmZp
cnN0ID09IGhhbmRsZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAtLWN1
cnJlbnQ7CisgICAgcmV0dXJuIGN1cnJlbnQtPnNlY29uZCA+PSBoYW5kbGU7Cit9CisKK30gIC8v
IG5hbWVzcGFjZSBnbApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L0hhbmRsZVJhbmdlQWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL0hhbmRsZVJhbmdlQWxsb2NhdG9yLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0hhbmRsZVJhbmdlQWxsb2Nh
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OSBAQAorLy8KKy8vIENvcHlyaWdodCAo
YykgMjAwMi0yMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
KworLy8gSGFuZGxlUmFuZ2VBbGxvY2F0b3IuaDogRGVmaW5lcyB0aGUgZ2w6OkhhbmRsZVJhbmdl
QWxsb2NhdG9yIGNsYXNzLCB3aGljaCBpcyB1c2VkIHRvCisvLyBhbGxvY2F0ZSBjb250aWd1b3Vz
IHJhbmdlcyBvZiBHTCBwYXRoIGhhbmRsZXMuCisKKyNpZm5kZWYgTElCQU5HTEVfSEFORExFUkFO
R0VBTExPQ0FUT1JfSF8KKyNkZWZpbmUgTElCQU5HTEVfSEFORExFUkFOR0VBTExPQ0FUT1JfSF8K
KworI2luY2x1ZGUgPG1hcD4KKworI2luY2x1ZGUgImFuZ2xlX2dsLmgiCisjaW5jbHVkZSAiY29t
bW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNlIGdsCit7CisKKy8vIEFsbG9jYXRlcyBjb250
aWd1b3VzIHJhbmdlcyBvZiBwYXRoIG9iamVjdCBoYW5kbGVzLgorY2xhc3MgSGFuZGxlUmFuZ2VB
bGxvY2F0b3IgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKK3sKKyAgcHVibGljOgorICAgIHN0
YXRpYyBjb25zdCBHTHVpbnQga0ludmFsaWRIYW5kbGU7CisKKyAgICBIYW5kbGVSYW5nZUFsbG9j
YXRvcigpOworCisgICAgLy8gQWxsb2NhdGVzIGEgbmV3IHBhdGggaGFuZGxlLgorICAgIEdMdWlu
dCBhbGxvY2F0ZSgpOworCisgICAgLy8gQWxsb2NhdGVzIGEgaGFuZGxlIHN0YXJ0aW5nIGF0IG9y
IGFib3ZlIHRoZSB2YWx1ZSBvZiB8d2FudGVkfC4KKyAgICAvLyBOb3RlOiBtYXkgd3JhcCBpZiBp
dCBzdGFydHMgbmVhciBsaW1pdC4KKyAgICBHTHVpbnQgYWxsb2NhdGVBdE9yQWJvdmUoR0x1aW50
IHdhbnRlZCk7CisKKyAgICAvLyBBbGxvY2F0ZXMgfHJhbmdlfCBhbW91bnQgb2YgY29udGlndW91
cyBwYXRocy4KKyAgICAvLyBSZXR1cm5zIHRoZSBmaXJzdCBpZCB0byB8Zmlyc3RfaWR8IG9yIHxr
SW52YWxpZEhhbmRsZXwgaWYKKyAgICAvLyBhbGxvY2F0aW9uIGZhaWxlZC4KKyAgICBHTHVpbnQg
YWxsb2NhdGVSYW5nZShHTHVpbnQgcmFuZ2UpOworCisgICAgLy8gTWFya3MgYW4gaWQgYXMgdXNl
ZC4gUmV0dXJucyBmYWxzZSBpZiBoYW5kbGUgd2FzIGFscmVhZHkgdXNlZC4KKyAgICBib29sIG1h
cmtBc1VzZWQoR0x1aW50IGhhbmRsZSk7CisKKyAgICAvLyBSZWxlYXNlIGhhbmRsZS4KKyAgICB2
b2lkIHJlbGVhc2UoR0x1aW50IGhhbmRsZSk7CisKKyAgICAvLyBSZWxlYXNlIGEgfHJhbmdlfCBh
bW91bnQgb2YgY29udGlndW91cyBoYW5kbGVzLCBzdGFydGluZyBmcm9tIHxmaXJzdHwKKyAgICB2
b2lkIHJlbGVhc2VSYW5nZShHTHVpbnQgZmlyc3QsIEdMdWludCByYW5nZSk7CisKKyAgICAvLyBD
aGVja3Mgd2hldGhlciBvciBub3QgYSByZXNvdXJjZSBJRCBpcyBpbiB1c2UuCisgICAgYm9vbCBp
c1VzZWQoR0x1aW50IGhhbmRsZSkgY29uc3Q7CisKKyAgcHJpdmF0ZToKKyAgICBzdGQ6Om1hcDxH
THVpbnQsIEdMdWludD4gbVVzZWQ7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgZ2wKKworI2VuZGlm
ICAvLyBMSUJBTkdMRV9IQU5ETEVSQU5HRUFMTE9DQVRPUl9IXwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0hhbmRsZVJhbmdlQWxsb2NhdG9yX3VuaXR0ZXN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSGFu
ZGxlUmFuZ2VBbGxvY2F0b3JfdW5pdHRlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9IYW5kbGVSYW5nZUFsbG9jYXRvcl91bml0dGVz
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNzUgQEAKKy8vCisvLyBDb3B5cmlnaHQg
MjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBVbml0
IHRlc3RzIGZvciBIYW5kbGVSYW5nZUFsbG9jYXRvci4KKy8vCisKKyNpbmNsdWRlICJnbW9jay9n
bW9jay5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpbmNsdWRlICJsaWJBTkdMRS9I
YW5kbGVSYW5nZUFsbG9jYXRvci5oIgorCituYW1lc3BhY2UKK3sKKworY2xhc3MgSGFuZGxlUmFu
Z2VBbGxvY2F0b3JUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QKK3sKKyAgcHJvdGVjdGVkOgor
ICAgIGdsOjpIYW5kbGVSYW5nZUFsbG9jYXRvciAqZ2V0QWxsb2NhdG9yKCkgeyByZXR1cm4gJm1B
bGxvY2F0b3I7IH0KKworICBwcml2YXRlOgorICAgIGdsOjpIYW5kbGVSYW5nZUFsbG9jYXRvciBt
QWxsb2NhdG9yOworfTsKKworLy8gQ2hlY2tzIGJhc2ljIGZ1bmN0aW9uYWxpdHk6IGFsbG9jYXRl
LCByZWxlYXNlLCBpc1VzZWQuCitURVNUX0YoSGFuZGxlUmFuZ2VBbGxvY2F0b3JUZXN0LCBUZXN0
QmFzaWMpCit7CisgICAgYXV0byAqYWxsb2NhdG9yID0gZ2V0QWxsb2NhdG9yKCk7CisgICAgLy8g
Q2hlY2sgdGhhdCByZXNvdXJjZSAxIGlzIG5vdCBpbiB1c2UKKyAgICBFWFBFQ1RfRkFMU0UoYWxs
b2NhdG9yLT5pc1VzZWQoMSkpOworCisgICAgLy8gQWxsb2NhdGUgYW4gSUQsIGNoZWNrIHRoYXQg
aXQncyBpbiB1c2UuCisgICAgR0x1aW50IGlkMSA9IGFsbG9jYXRvci0+YWxsb2NhdGUoKTsKKyAg
ICBFWFBFQ1RfVFJVRShhbGxvY2F0b3ItPmlzVXNlZChpZDEpKTsKKworICAgIC8vIEFsbG9jYXRl
IGFub3RoZXIgSUQsIGNoZWNrIHRoYXQgaXQncyBpbiB1c2UsIGFuZCBkaWZmZXJlbnQgZnJvbSB0
aGUgZmlyc3QKKyAgICAvLyBvbmUuCisgICAgR0x1aW50IGlkMiA9IGFsbG9jYXRvci0+YWxsb2Nh
dGUoKTsKKyAgICBFWFBFQ1RfVFJVRShhbGxvY2F0b3ItPmlzVXNlZChpZDIpKTsKKyAgICBFWFBF
Q1RfTkUoaWQxLCBpZDIpOworCisgICAgLy8gRnJlZSBvbmUgb2YgdGhlIElEcywgY2hlY2sgdGhh
dCBpdCdzIG5vdCBpbiB1c2UgYW55IG1vcmUuCisgICAgYWxsb2NhdG9yLT5yZWxlYXNlKGlkMSk7
CisgICAgRVhQRUNUX0ZBTFNFKGFsbG9jYXRvci0+aXNVc2VkKGlkMSkpOworCisgICAgLy8gRnJl
ZXMgdGhlIG90aGVyIElELCBjaGVjayB0aGF0IGl0J3Mgbm90IGluIHVzZSBhbnkgbW9yZS4KKyAg
ICBhbGxvY2F0b3ItPnJlbGVhc2UoaWQyKTsKKyAgICBFWFBFQ1RfRkFMU0UoYWxsb2NhdG9yLT5p
c1VzZWQoaWQyKSk7Cit9CisKKy8vIENoZWNrcyB0aGF0IHRoZSByZXNvdXJjZSBoYW5kbGVzIGFy
ZSByZS11c2VkIGFmdGVyIGJlaW5nIGZyZWVkLgorVEVTVF9GKEhhbmRsZVJhbmdlQWxsb2NhdG9y
VGVzdCwgVGVzdEFkdmFuY2VkKQoreworICAgIGF1dG8gKmFsbG9jYXRvciA9IGdldEFsbG9jYXRv
cigpOworCisgICAgLy8gQWxsb2NhdGUgdGhlIGhpZ2hlc3QgcG9zc2libGUgSUQsIHRvIG1ha2Ug
bGlmZSBhd2t3YXJkLgorICAgIGFsbG9jYXRvci0+YWxsb2NhdGVBdE9yQWJvdmUofnN0YXRpY19j
YXN0PEdMdWludD4oMCkpOworCisgICAgLy8gQWxsb2NhdGUgYSBzaWduaWZpY2FudCBudW1iZXIg
b2YgcmVzb3VyY2VzLgorICAgIGNvbnN0IHVuc2lnbmVkIGludCBrTnVtUmVzb3VyY2VzID0gMTAw
OworICAgIEdMdWludCBpZHNba051bVJlc291cmNlc107CisgICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCBrTnVtUmVzb3VyY2VzOyArK2kpCisgICAgeworICAgICAgICBpZHNbaV0gPSBh
bGxvY2F0b3ItPmFsbG9jYXRlKCk7CisgICAgICAgIEVYUEVDVF9UUlVFKGFsbG9jYXRvci0+aXNV
c2VkKGlkc1tpXSkpOworICAgIH0KKworICAgIC8vIENoZWNrIHRoYXQgYSBuZXcgYWxsb2NhdGlv
biByZS11c2VzIHRoZSByZXNvdXJjZSB3ZSBqdXN0IGZyZWVkLgorICAgIEdMdWludCBpZDEgPSBp
ZHNba051bVJlc291cmNlcyAvIDJdOworICAgIGFsbG9jYXRvci0+cmVsZWFzZShpZDEpOworICAg
IEVYUEVDVF9GQUxTRShhbGxvY2F0b3ItPmlzVXNlZChpZDEpKTsKKyAgICBHTHVpbnQgaWQyID0g
YWxsb2NhdG9yLT5hbGxvY2F0ZSgpOworICAgIEVYUEVDVF9UUlVFKGFsbG9jYXRvci0+aXNVc2Vk
KGlkMikpOworICAgIEVYUEVDVF9FUShpZDEsIGlkMik7Cit9CisKKy8vIENoZWNrcyB0aGF0IHdl
IGNhbiBjaG9vc2Ugb3VyIG93biBpZHMgYW5kIHRoZXkgd29uJ3QgYmUgcmV1c2VkLgorVEVTVF9G
KEhhbmRsZVJhbmdlQWxsb2NhdG9yVGVzdCwgTWFya0FzVXNlZCkKK3sKKyAgICBhdXRvICphbGxv
Y2F0b3IgPSBnZXRBbGxvY2F0b3IoKTsKKyAgICBHTHVpbnQgaWQgPSBhbGxvY2F0b3ItPmFsbG9j
YXRlKCk7CisgICAgYWxsb2NhdG9yLT5yZWxlYXNlKGlkKTsKKyAgICBFWFBFQ1RfRkFMU0UoYWxs
b2NhdG9yLT5pc1VzZWQoaWQpKTsKKyAgICBFWFBFQ1RfVFJVRShhbGxvY2F0b3ItPm1hcmtBc1Vz
ZWQoaWQpKTsKKyAgICBFWFBFQ1RfVFJVRShhbGxvY2F0b3ItPmlzVXNlZChpZCkpOworICAgIEdM
dWludCBpZDIgPSBhbGxvY2F0b3ItPmFsbG9jYXRlKCk7CisgICAgRVhQRUNUX05FKGlkLCBpZDIp
OworICAgIEVYUEVDVF9UUlVFKGFsbG9jYXRvci0+bWFya0FzVXNlZChpZDIgKyAxKSk7CisgICAg
R0x1aW50IGlkMyA9IGFsbG9jYXRvci0+YWxsb2NhdGUoKTsKKyAgICAvLyBDaGVja3Mgb3VyIGFs
Z29yaXRobS4gSWYgdGhlIGFsZ29yaXRobSBjaGFuZ2VzIHRoaXMgY2hlY2sgc2hvdWxkIGJlCisg
ICAgLy8gY2hhbmdlZC4KKyAgICBFWFBFQ1RfRVEoaWQzLCBpZDIgKyAyKTsKK30KKworLy8gQ2hl
Y2tzIGFsbG9jYXRlQXRPckFib3ZlLgorVEVTVF9GKEhhbmRsZVJhbmdlQWxsb2NhdG9yVGVzdCwg
QWxsb2NhdGVBdE9yQWJvdmUpCit7CisgICAgY29uc3QgR0x1aW50IGtPZmZzZXQgPSAxMjM0NTY7
CisgICAgYXV0byAqYWxsb2NhdG9yICAgICAgPSBnZXRBbGxvY2F0b3IoKTsKKyAgICBHTHVpbnQg
aWQxID0gYWxsb2NhdG9yLT5hbGxvY2F0ZUF0T3JBYm92ZShrT2Zmc2V0KTsKKyAgICBFWFBFQ1Rf
RVEoa09mZnNldCwgaWQxKTsKKyAgICBHTHVpbnQgaWQyID0gYWxsb2NhdG9yLT5hbGxvY2F0ZUF0
T3JBYm92ZShrT2Zmc2V0KTsKKyAgICBFWFBFQ1RfR1QoaWQyLCBrT2Zmc2V0KTsKKyAgICBHTHVp
bnQgaWQzID0gYWxsb2NhdG9yLT5hbGxvY2F0ZUF0T3JBYm92ZShrT2Zmc2V0KTsKKyAgICBFWFBF
Q1RfR1QoaWQzLCBrT2Zmc2V0KTsKK30KKworLy8gQ2hlY2tzIHRoYXQgYWxsb2NhdGVBdE9yQWJv
dmUgd3JhcHMgYXJvdW5kIGF0IHRoZSBtYXhpbXVtIHZhbHVlLgorVEVTVF9GKEhhbmRsZVJhbmdl
QWxsb2NhdG9yVGVzdCwgQWxsb2NhdGVJZEF0T3JBYm92ZVdyYXBzQXJvdW5kKQoreworICAgIGNv
bnN0IEdMdWludCBrTWF4UG9zc2libGVPZmZzZXQgPSB+c3RhdGljX2Nhc3Q8R0x1aW50PigwKTsK
KyAgICBhdXRvICphbGxvY2F0b3IgICAgICAgICAgICAgICAgID0gZ2V0QWxsb2NhdG9yKCk7Cisg
ICAgR0x1aW50IGlkMSA9IGFsbG9jYXRvci0+YWxsb2NhdGVBdE9yQWJvdmUoa01heFBvc3NpYmxl
T2Zmc2V0KTsKKyAgICBFWFBFQ1RfRVEoa01heFBvc3NpYmxlT2Zmc2V0LCBpZDEpOworICAgIEdM
dWludCBpZDIgPSBhbGxvY2F0b3ItPmFsbG9jYXRlQXRPckFib3ZlKGtNYXhQb3NzaWJsZU9mZnNl
dCk7CisgICAgRVhQRUNUX0VRKDF1LCBpZDIpOworICAgIEdMdWludCBpZDMgPSBhbGxvY2F0b3It
PmFsbG9jYXRlQXRPckFib3ZlKGtNYXhQb3NzaWJsZU9mZnNldCk7CisgICAgRVhQRUNUX0VRKDJ1
LCBpZDMpOworfQorCisvLyBDaGVja3MgdGhhdCBmcmVlaW5nIGFuIGFscmVhZHkgZnJlZWQgcmFu
Z2UgY2F1c2VzIG5vIGhhcm0uCitURVNUX0YoSGFuZGxlUmFuZ2VBbGxvY2F0b3JUZXN0LCBSZWR1
bmRhbnRGcmVlSXNJZ25vcmVkKQoreworICAgIGF1dG8gKmFsbG9jYXRvciA9IGdldEFsbG9jYXRv
cigpOworICAgIEdMdWludCBpZDEgPSBhbGxvY2F0b3ItPmFsbG9jYXRlKCk7CisgICAgYWxsb2Nh
dG9yLT5yZWxlYXNlKDApOworICAgIGFsbG9jYXRvci0+cmVsZWFzZShpZDEpOworICAgIGFsbG9j
YXRvci0+cmVsZWFzZShpZDEpOworICAgIGFsbG9jYXRvci0+cmVsZWFzZShpZDEgKyAxKTsKKyAg
ICBHTHVpbnQgaWQyID0gYWxsb2NhdG9yLT5hbGxvY2F0ZSgpOworICAgIEdMdWludCBpZDMgPSBh
bGxvY2F0b3ItPmFsbG9jYXRlKCk7CisgICAgRVhQRUNUX05FKGlkMiwgaWQzKTsKKyAgICBFWFBF
Q1RfTkUoYWxsb2NhdG9yLT5rSW52YWxpZEhhbmRsZSwgaWQyKTsKKyAgICBFWFBFQ1RfTkUoYWxs
b2NhdG9yLT5rSW52YWxpZEhhbmRsZSwgaWQzKTsKK30KKworLy8gQ2hlY2sgYWxsb2NhdGluZyBh
bmQgcmVsZWFzaW5nIG11bHRpcGxlIHJhbmdlcy4KK1RFU1RfRihIYW5kbGVSYW5nZUFsbG9jYXRv
clRlc3QsIGFsbG9jYXRlUmFuZ2UpCit7CisgICAgY29uc3QgR0x1aW50IGtNYXhQb3NzaWJsZU9m
ZnNldCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8R0x1aW50Pjo6bWF4KCk7CisKKyAgICBhdXRvICph
bGxvY2F0b3IgPSBnZXRBbGxvY2F0b3IoKTsKKworICAgIEdMdWludCBpZDEgPSBhbGxvY2F0b3It
PmFsbG9jYXRlUmFuZ2UoMSk7CisgICAgRVhQRUNUX0VRKDF1LCBpZDEpOworICAgIEdMdWludCBp
ZDIgPSBhbGxvY2F0b3ItPmFsbG9jYXRlUmFuZ2UoMik7CisgICAgRVhQRUNUX0VRKDJ1LCBpZDIp
OworICAgIEdMdWludCBpZDMgPSBhbGxvY2F0b3ItPmFsbG9jYXRlUmFuZ2UoMyk7CisgICAgRVhQ
RUNUX0VRKDR1LCBpZDMpOworICAgIEdMdWludCBpZDQgPSBhbGxvY2F0b3ItPmFsbG9jYXRlKCk7
CisgICAgRVhQRUNUX0VRKDd1LCBpZDQpOworICAgIGFsbG9jYXRvci0+cmVsZWFzZSgzKTsKKyAg
ICBHTHVpbnQgaWQ1ID0gYWxsb2NhdG9yLT5hbGxvY2F0ZVJhbmdlKDEpOworICAgIEVYUEVDVF9F
USgzdSwgaWQ1KTsKKyAgICBhbGxvY2F0b3ItPnJlbGVhc2UoNSk7CisgICAgYWxsb2NhdG9yLT5y
ZWxlYXNlKDIpOworICAgIGFsbG9jYXRvci0+cmVsZWFzZSg0KTsKKyAgICBHTHVpbnQgaWQ2ID0g
YWxsb2NhdG9yLT5hbGxvY2F0ZVJhbmdlKDIpOworICAgIEVYUEVDVF9FUSg0dSwgaWQ2KTsKKyAg
ICBHTHVpbnQgaWQ3ID0gYWxsb2NhdG9yLT5hbGxvY2F0ZUF0T3JBYm92ZShrTWF4UG9zc2libGVP
ZmZzZXQpOworICAgIEVYUEVDVF9FUShrTWF4UG9zc2libGVPZmZzZXQsIGlkNyk7CisgICAgR0x1
aW50IGlkOCA9IGFsbG9jYXRvci0+YWxsb2NhdGVBdE9yQWJvdmUoa01heFBvc3NpYmxlT2Zmc2V0
KTsKKyAgICBFWFBFQ1RfRVEoMnUsIGlkOCk7CisgICAgR0x1aW50IGlkOSA9IGFsbG9jYXRvci0+
YWxsb2NhdGVSYW5nZSg1MCk7CisgICAgRVhQRUNUX0VRKDh1LCBpZDkpOworICAgIEdMdWludCBp
ZDEwID0gYWxsb2NhdG9yLT5hbGxvY2F0ZVJhbmdlKDUwKTsKKyAgICBFWFBFQ1RfRVEoNTh1LCBp
ZDEwKTsKKyAgICAvLyBSZW1vdmUgYWxsIHRoZSBsb3ctbnVtYmVyZWQgaWRzLgorICAgIGFsbG9j
YXRvci0+cmVsZWFzZSgxKTsKKyAgICBhbGxvY2F0b3ItPnJlbGVhc2UoMTUpOworICAgIGFsbG9j
YXRvci0+cmVsZWFzZVJhbmdlKDIsIDEwNyk7CisgICAgR0x1aW50IGlkMTEgPSBhbGxvY2F0b3It
PmFsbG9jYXRlUmFuZ2UoMTAwKTsKKyAgICBFWFBFQ1RfRVEoMXUsIGlkMTEpOworICAgIGFsbG9j
YXRvci0+cmVsZWFzZShrTWF4UG9zc2libGVPZmZzZXQpOworICAgIEdMdWludCBpZDEyID0gYWxs
b2NhdG9yLT5hbGxvY2F0ZVJhbmdlKDEwMCk7CisgICAgRVhQRUNUX0VRKDEwMXUsIGlkMTIpOwor
CisgICAgR0x1aW50IGlkMTMgPSBhbGxvY2F0b3ItPmFsbG9jYXRlQXRPckFib3ZlKGtNYXhQb3Nz
aWJsZU9mZnNldCAtIDJ1KTsKKyAgICBFWFBFQ1RfRVEoa01heFBvc3NpYmxlT2Zmc2V0IC0gMnUs
IGlkMTMpOworICAgIEdMdWludCBpZDE0ID0gYWxsb2NhdG9yLT5hbGxvY2F0ZVJhbmdlKDMpOwor
ICAgIEVYUEVDVF9FUSgyMDF1LCBpZDE0KTsKK30KKworLy8gQ2hlY2tzIHRoYXQgaGF2aW5nIGFs
bG9jYXRlZCBhIGhpZ2ggcmFuZ2UgZG9lc24ndCBpbnRlcmZlcmUKKy8vIHdpdGggbm9ybWFsIGxv
dyByYW5nZSBhbGxvY2F0aW9uLgorVEVTVF9GKEhhbmRsZVJhbmdlQWxsb2NhdG9yVGVzdCwgQWxs
b2NhdGVSYW5nZUVuZE5vRWZmZWN0KQoreworICAgIGNvbnN0IEdMdWludCBrTWF4UG9zc2libGVP
ZmZzZXQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPEdMdWludD46Om1heCgpOworCisgICAgYXV0byAq
YWxsb2NhdG9yID0gZ2V0QWxsb2NhdG9yKCk7CisgICAgR0x1aW50IGlkMSA9IGFsbG9jYXRvci0+
YWxsb2NhdGVBdE9yQWJvdmUoa01heFBvc3NpYmxlT2Zmc2V0IC0gMnUpOworICAgIEVYUEVDVF9F
UShrTWF4UG9zc2libGVPZmZzZXQgLSAydSwgaWQxKTsKKyAgICBHTHVpbnQgaWQzID0gYWxsb2Nh
dG9yLT5hbGxvY2F0ZVJhbmdlKDMpOworICAgIEVYUEVDVF9FUSgxdSwgaWQzKTsKKyAgICBHTHVp
bnQgaWQyID0gYWxsb2NhdG9yLT5hbGxvY2F0ZVJhbmdlKDIpOworICAgIEVYUEVDVF9FUSg0dSwg
aWQyKTsKK30KKworLy8gQ2hlY2tzIGFsbG9jYXRpbmcgYSByYW5nZSB0aGF0IGNvbnN1bWVzIHRo
ZSB3aG9sZSB1aW50MzIgc3BhY2UuCitURVNUX0YoSGFuZGxlUmFuZ2VBbGxvY2F0b3JUZXN0LCBB
bGxvY2F0ZU1heCkKK3sKKyAgICBjb25zdCB1aW50MzJfdCBrTWF4UG9zc2libGVSYW5nZSA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKTsKKworICAgIGF1dG8gKmFsbG9jYXRv
ciA9IGdldEFsbG9jYXRvcigpOworICAgIEdMdWludCBpZCA9IGFsbG9jYXRvci0+YWxsb2NhdGVS
YW5nZShrTWF4UG9zc2libGVSYW5nZSk7CisgICAgRVhQRUNUX0VRKDF1LCBpZCk7CisgICAgYWxs
b2NhdG9yLT5yZWxlYXNlUmFuZ2UoaWQsIGtNYXhQb3NzaWJsZVJhbmdlIC0gMXUpOworICAgIEdM
dWludCBpZDIgPSBhbGxvY2F0b3ItPmFsbG9jYXRlUmFuZ2Uoa01heFBvc3NpYmxlUmFuZ2UpOwor
ICAgIEVYUEVDVF9FUSgwdSwgaWQyKTsKKyAgICBhbGxvY2F0b3ItPnJlbGVhc2VSYW5nZShpZCwg
a01heFBvc3NpYmxlUmFuZ2UpOworICAgIEdMdWludCBpZDMgPSBhbGxvY2F0b3ItPmFsbG9jYXRl
UmFuZ2Uoa01heFBvc3NpYmxlUmFuZ2UpOworICAgIEVYUEVDVF9FUSgxdSwgaWQzKTsKK30KKwor
Ly8gQ2hlY2tzIGFsbG9jYXRpbmcgYSByYW5nZSB0aGF0IGNvbnN1bWVzIHRoZSB3aG9sZSB1aW50
MzIgc3BhY2UKKy8vIGNhdXNlcyBuZXh0IGFsbG9jYXRpb24gdG8gZmFpbC4KKy8vIFN1YnNlcXVl
bnRseSBjaGVja3MgdGhhdCBvbmNlIHRoZSBiaWcgcmFuZ2UgaXMgcmVkdWNlZCBuZXcgYWxsb2Nh
dGlvbnMKKy8vIGFyZSBwb3NzaWJsZS4KK1RFU1RfRihIYW5kbGVSYW5nZUFsbG9jYXRvclRlc3Qs
IEFsbG9jYXRlRnVsbFJhbmdlKQoreworICAgIGNvbnN0IHVpbnQzMl90IGtNYXhQb3NzaWJsZVJh
bmdlID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpOworICAgIGNvbnN0IEdM
dWludCBrRnJlZWRJZCAgICAgICAgICAgID0gNTU1dTsKKyAgICBhdXRvICphbGxvY2F0b3IgICAg
ICAgICAgICAgICAgICA9IGdldEFsbG9jYXRvcigpOworCisgICAgR0x1aW50IGlkMSA9IGFsbG9j
YXRvci0+YWxsb2NhdGVSYW5nZShrTWF4UG9zc2libGVSYW5nZSk7CisgICAgRVhQRUNUX0VRKDF1
LCBpZDEpOworICAgIEdMdWludCBpZDIgPSBhbGxvY2F0b3ItPmFsbG9jYXRlKCk7CisgICAgRVhQ
RUNUX0VRKGdsOjpIYW5kbGVSYW5nZUFsbG9jYXRvcjo6a0ludmFsaWRIYW5kbGUsIGlkMik7Cisg
ICAgYWxsb2NhdG9yLT5yZWxlYXNlKGtGcmVlZElkKTsKKyAgICBHTHVpbnQgaWQzID0gYWxsb2Nh
dG9yLT5hbGxvY2F0ZSgpOworICAgIEVYUEVDVF9FUShrRnJlZWRJZCwgaWQzKTsKKyAgICBHTHVp
bnQgaWQ0ID0gYWxsb2NhdG9yLT5hbGxvY2F0ZSgpOworICAgIEVYUEVDVF9FUSgwdSwgaWQ0KTsK
KyAgICBhbGxvY2F0b3ItPnJlbGVhc2Uoa0ZyZWVkSWQgKyAxdSk7CisgICAgYWxsb2NhdG9yLT5y
ZWxlYXNlKGtGcmVlZElkICsgNHUpOworICAgIGFsbG9jYXRvci0+cmVsZWFzZShrRnJlZWRJZCAr
IDN1KTsKKyAgICBhbGxvY2F0b3ItPnJlbGVhc2Uoa0ZyZWVkSWQgKyA1dSk7CisgICAgYWxsb2Nh
dG9yLT5yZWxlYXNlKGtGcmVlZElkICsgMnUpOworICAgIEdMdWludCBpZDUgPSBhbGxvY2F0b3It
PmFsbG9jYXRlUmFuZ2UoNSk7CisgICAgRVhQRUNUX0VRKGtGcmVlZElkICsgMXUsIGlkNSk7Cit9
CisKKy8vIENoZWNrcyB0aGF0IGFsbG9jYXRpbmcgYSByYW5nZSB0aGF0IGV4Y2VlZHMgdWludDMy
CisvLyBkb2VzIG5vdCB3cmFwIGluY29ycmVjdGx5IGFuZCBmYWlscy4KK1RFU1RfRihIYW5kbGVS
YW5nZUFsbG9jYXRvclRlc3QsIEFsbG9jYXRlUmFuZ2VOb1dyYXBJblJhbmdlKQoreworICAgIGNv
bnN0IHVpbnQzMl90IGtNYXhQb3NzaWJsZVJhbmdlID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50
MzJfdD46Om1heCgpOworICAgIGNvbnN0IEdMdWludCBrQWxsb2NJZCAgICAgICAgICAgID0gMTB1
OworICAgIGF1dG8gKmFsbG9jYXRvciAgICAgICAgICAgICAgICAgID0gZ2V0QWxsb2NhdG9yKCk7
CisKKyAgICBHTHVpbnQgaWQxID0gYWxsb2NhdG9yLT5hbGxvY2F0ZUF0T3JBYm92ZShrQWxsb2NJ
ZCk7CisgICAgRVhQRUNUX0VRKGtBbGxvY0lkLCBpZDEpOworICAgIEdMdWludCBpZDIgPSBhbGxv
Y2F0b3ItPmFsbG9jYXRlUmFuZ2Uoa01heFBvc3NpYmxlUmFuZ2UgLSA1dSk7CisgICAgRVhQRUNU
X0VRKDB1LCBpZDIpOworICAgIEdMdWludCBpZDMgPSBhbGxvY2F0b3ItPmFsbG9jYXRlUmFuZ2Uo
a01heFBvc3NpYmxlUmFuZ2UgLSBrQWxsb2NJZCk7CisgICAgRVhQRUNUX0VRKGtBbGxvY0lkICsg
MXUsIGlkMyk7Cit9CisKKy8vIENoZWNrIHNwZWNpYWwgY2FzZXMgZm9yIDAgcmFuZ2UgYWxsb2Nh
dGlvbnMgYW5kIHplcm8gaGFuZGxlcy4KK1RFU1RfRihIYW5kbGVSYW5nZUFsbG9jYXRvclRlc3Qs
IFplcm9JZENhc2VzKQoreworICAgIGF1dG8gKmFsbG9jYXRvciA9IGdldEFsbG9jYXRvcigpOwor
ICAgIEVYUEVDVF9GQUxTRShhbGxvY2F0b3ItPmlzVXNlZCgwKSk7CisgICAgR0x1aW50IGlkMSA9
IGFsbG9jYXRvci0+YWxsb2NhdGVBdE9yQWJvdmUoMCk7CisgICAgRVhQRUNUX05FKDB1LCBpZDEp
OworICAgIEVYUEVDVF9GQUxTRShhbGxvY2F0b3ItPmlzVXNlZCgwKSk7CisgICAgYWxsb2NhdG9y
LT5yZWxlYXNlKDApOworICAgIEVYUEVDVF9GQUxTRShhbGxvY2F0b3ItPmlzVXNlZCgwKSk7Cisg
ICAgRVhQRUNUX1RSVUUoYWxsb2NhdG9yLT5pc1VzZWQoaWQxKSk7CisgICAgYWxsb2NhdG9yLT5y
ZWxlYXNlKGlkMSk7CisgICAgRVhQRUNUX0ZBTFNFKGFsbG9jYXRvci0+aXNVc2VkKGlkMSkpOwor
fQorCit9ICAvLyBuYW1lc3BhY2UKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSW1hZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9JbWFnZS5jcHAJKHJldmlz
aW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9JbWFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlICJjb21tb24v
ZGVidWcuaCIKICNpbmNsdWRlICJjb21tb24vdXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAibGliQU5H
TEUvYW5nbGV0eXBlcy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL2Zvcm1hdHV0aWxzLmgiCiAjaW5j
bHVkZSAibGliQU5HTEUvVGV4dHVyZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1JlbmRlcmJ1ZmZl
ci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0ltYWdlSW1wbC5oIgpAQCAtODIsNyAr
ODMsNyBAQAogSW1hZ2U6OkltYWdlKHJ4OjpJbWFnZUltcGwgKmltcGwsIEVHTGVudW0gdGFyZ2V0
LCBJbWFnZVNpYmxpbmcgKmJ1ZmZlciwgY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJzKQogICAg
IDogUmVmQ291bnRPYmplY3QoMCksCiAgICAgICBtSW1wbGVtZW50YXRpb24oaW1wbCksCi0gICAg
ICBtSW50ZXJuYWxGb3JtYXQoR0xfTk9ORSksCisgICAgICBtRm9ybWF0KGdsOjpGb3JtYXQ6Oklu
dmFsaWQoKSksCiAgICAgICBtV2lkdGgoMCksCiAgICAgICBtSGVpZ2h0KDApLAogICAgICAgbVNh
bXBsZXMoMCksCkBAIC0xMDAsNyArMTAxLDcgQEAKICAgICAgICAgZ2w6OlRleHR1cmUgKnRleHR1
cmUgPSByeDo6R2V0QXM8Z2w6OlRleHR1cmU+KG1Tb3VyY2UuZ2V0KCkpOwogICAgICAgICBHTGVu
dW0gdGV4dHVyZVRhcmdldCA9IGVnbF9nbDo6RUdMSW1hZ2VUYXJnZXRUb0dMVGV4dHVyZVRhcmdl
dCh0YXJnZXQpOwogICAgICAgICBzaXplX3QgbGV2ZWwgICAgICAgICA9IGF0dHJpYnMuZ2V0KEVH
TF9HTF9URVhUVVJFX0xFVkVMX0tIUiwgMCk7Ci0gICAgICAgIG1JbnRlcm5hbEZvcm1hdCAgICAg
ID0gdGV4dHVyZS0+Z2V0SW50ZXJuYWxGb3JtYXQodGV4dHVyZVRhcmdldCwgbGV2ZWwpOworICAg
ICAgICBtRm9ybWF0ICAgICAgICAgICAgICA9IHRleHR1cmUtPmdldEZvcm1hdCh0ZXh0dXJlVGFy
Z2V0LCBsZXZlbCk7CiAgICAgICAgIG1XaWR0aCAgICAgICAgICAgICAgID0gdGV4dHVyZS0+Z2V0
V2lkdGgodGV4dHVyZVRhcmdldCwgbGV2ZWwpOwogICAgICAgICBtSGVpZ2h0ICAgICAgICAgICAg
ICA9IHRleHR1cmUtPmdldEhlaWdodCh0ZXh0dXJlVGFyZ2V0LCBsZXZlbCk7CiAgICAgICAgIG1T
YW1wbGVzICAgICAgICAgICAgID0gMDsKQEAgLTEwOCw3ICsxMDksNyBAQAogICAgIGVsc2UgaWYg
KElzUmVuZGVyYnVmZmVyVGFyZ2V0KHRhcmdldCkpCiAgICAgewogICAgICAgICBnbDo6UmVuZGVy
YnVmZmVyICpyZW5kZXJidWZmZXIgPSByeDo6R2V0QXM8Z2w6OlJlbmRlcmJ1ZmZlcj4obVNvdXJj
ZS5nZXQoKSk7Ci0gICAgICAgIG1JbnRlcm5hbEZvcm1hdCAgICAgICAgICAgICAgICA9IHJlbmRl
cmJ1ZmZlci0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsKKyAgICAgICAgbUZvcm1hdCAgICAgICAgICAg
ICAgICAgICAgICAgID0gcmVuZGVyYnVmZmVyLT5nZXRGb3JtYXQoKTsKICAgICAgICAgbVdpZHRo
ICAgICAgICAgICAgICAgICAgICAgICAgID0gcmVuZGVyYnVmZmVyLT5nZXRXaWR0aCgpOwogICAg
ICAgICBtSGVpZ2h0ICAgICAgICAgICAgICAgICAgICAgICAgPSByZW5kZXJidWZmZXItPmdldEhl
aWdodCgpOwogICAgICAgICBtU2FtcGxlcyAgICAgICAgICAgICAgICAgICAgICAgPSByZW5kZXJi
dWZmZXItPmdldFNhbXBsZXMoKTsKQEAgLTE2MCw5ICsxNjEsOSBAQAogICAgIHJldHVybiBlcnJv
cjsKIH0KIAotR0xlbnVtIEltYWdlOjpnZXRJbnRlcm5hbEZvcm1hdCgpIGNvbnN0Citjb25zdCBn
bDo6Rm9ybWF0ICZJbWFnZTo6Z2V0Rm9ybWF0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbUludGVy
bmFsRm9ybWF0OworICAgIHJldHVybiBtRm9ybWF0OwogfQogCiBzaXplX3QgSW1hZ2U6OmdldFdp
ZHRoKCkgY29uc3QKQEAgLTE4OSw0ICsxOTAsNCBAQAogewogICAgIHJldHVybiBtSW1wbGVtZW50
YXRpb247CiB9Ci19Cit9ICAvLyBuYW1lc3BhY2UgZWdsCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSW1hZ2UuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ltYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEzLDYgKzEzLDcgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9BdHRyaWJ1dGVNYXAuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9FcnJvci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1JlZkNvdW50T2Jq
ZWN0LmgiCisjaW5jbHVkZSAibGliQU5HTEUvZm9ybWF0dXRpbHMuaCIKIAogI2luY2x1ZGUgPHNl
dD4KIApAQCAtNTcsNyArNTgsNyBAQAogICAgIEltYWdlKHJ4OjpJbWFnZUltcGwgKmltcGwsIEVH
TGVudW0gdGFyZ2V0LCBJbWFnZVNpYmxpbmcgKmJ1ZmZlciwgY29uc3QgQXR0cmlidXRlTWFwICZh
dHRyaWJzKTsKICAgICB+SW1hZ2UoKTsKIAotICAgIEdMZW51bSBnZXRJbnRlcm5hbEZvcm1hdCgp
IGNvbnN0OworICAgIGNvbnN0IGdsOjpGb3JtYXQgJmdldEZvcm1hdCgpIGNvbnN0OwogICAgIHNp
emVfdCBnZXRXaWR0aCgpIGNvbnN0OwogICAgIHNpemVfdCBnZXRIZWlnaHQoKSBjb25zdDsKICAg
ICBzaXplX3QgZ2V0U2FtcGxlcygpIGNvbnN0OwpAQCAtNzgsNyArNzksNyBAQAogCiAgICAgcng6
OkltYWdlSW1wbCAqbUltcGxlbWVudGF0aW9uOwogCi0gICAgR0xlbnVtIG1JbnRlcm5hbEZvcm1h
dDsKKyAgICBnbDo6Rm9ybWF0IG1Gb3JtYXQ7CiAgICAgc2l6ZV90IG1XaWR0aDsKICAgICBzaXpl
X3QgbUhlaWdodDsKICAgICBzaXplX3QgbVNhbXBsZXM7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvSW1hZ2VJbmRleC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ltYWdlSW5kZXguY3BwCShyZXZpc2lvbiAy
MDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSW1hZ2VJbmRl
eC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDExIEBACiAgICAgcmV0dXJuICp0aGlz
OwogfQogCitib29sIEltYWdlSW5kZXg6OmlzM0QoKSBjb25zdAoreworICAgIHJldHVybiB0eXBl
ID09IEdMX1RFWFRVUkVfM0QgfHwgdHlwZSA9PSBHTF9URVhUVVJFXzJEX0FSUkFZOworfQorCiBJ
bWFnZUluZGV4IEltYWdlSW5kZXg6Ok1ha2UyRChHTGludCBtaXBJbmRleCkKIHsKICAgICByZXR1
cm4gSW1hZ2VJbmRleChHTF9URVhUVVJFXzJELCBtaXBJbmRleCwgRU5USVJFX0xFVkVMKTsKQEAg
LTc4LDYgKzgzLDE2IEBACiAgICAgfQogfQogCitib29sIEltYWdlSW5kZXg6Om9wZXJhdG9yPT0o
Y29uc3QgSW1hZ2VJbmRleCAmb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuICh0eXBlID09IG90
aGVyLnR5cGUpICYmIChtaXBJbmRleCA9PSBvdGhlci5taXBJbmRleCkgJiYgKGxheWVySW5kZXgg
PT0gb3RoZXIubGF5ZXJJbmRleCk7Cit9CisKK2Jvb2wgSW1hZ2VJbmRleDo6b3BlcmF0b3IhPShj
b25zdCBJbWFnZUluZGV4ICZvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7Cit9CisKIEltYWdlSW5kZXg6OkltYWdlSW5kZXgoR0xlbnVtIHR5cGVJbiwgR0xpbnQg
bWlwSW5kZXhJbiwgR0xpbnQgbGF5ZXJJbmRleEluKQogICAgIDogdHlwZSh0eXBlSW4pLAogICAg
ICAgbWlwSW5kZXgobWlwSW5kZXhJbiksCkBAIC0xMjAsNyArMTM1LDEyIEBACiAKIEdMaW50IElt
YWdlSW5kZXhJdGVyYXRvcjo6bWF4TGF5ZXIoKSBjb25zdAogewotICAgIHJldHVybiAobUxheWVy
Q291bnRzID8gc3RhdGljX2Nhc3Q8R0xpbnQ+KG1MYXllckNvdW50c1ttQ3VycmVudE1pcF0pIDog
bUxheWVyUmFuZ2UuZW5kKTsKKyAgICBpZiAobUxheWVyQ291bnRzKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKG1DdXJyZW50TWlwID49IDApOworICAgICAgICByZXR1cm4gKG1DdXJyZW50TWlwIDwg
bU1pcFJhbmdlLmVuZCkgPyBtTGF5ZXJDb3VudHNbbUN1cnJlbnRNaXBdIDogMDsKKyAgICB9Cisg
ICAgcmV0dXJuIG1MYXllclJhbmdlLmVuZDsKIH0KIAogSW1hZ2VJbmRleCBJbWFnZUluZGV4SXRl
cmF0b3I6Om5leHQoKQpAQCAtMTM0LDIxICsxNTQsMjkgQEAKIAogICAgIGlmIChtQ3VycmVudExh
eWVyICE9IEltYWdlSW5kZXg6OkVOVElSRV9MRVZFTCkKICAgICB7Ci0gICAgICAgIGlmIChtQ3Vy
cmVudExheWVyIDwgbWF4TGF5ZXIoKS0xKQorICAgICAgICBpZiAobUN1cnJlbnRMYXllciA8IG1h
eExheWVyKCkgLSAxKQogICAgICAgICB7CiAgICAgICAgICAgICBtQ3VycmVudExheWVyKys7CiAg
ICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobUN1cnJlbnRNaXAgPCBtTWlwUmFuZ2UuZW5kLTEp
CisgICAgICAgIGVsc2UgaWYgKG1DdXJyZW50TWlwIDwgbU1pcFJhbmdlLmVuZCAtIDEpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIG1DdXJyZW50TWlwKys7CiAgICAgICAgICAgICBtQ3VycmVudExh
eWVyID0gbUxheWVyUmFuZ2Uuc3RhcnQ7CiAgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAg
ICB7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0KICAgICB9Ci0gICAgZWxzZSBpZiAo
bUN1cnJlbnRNaXAgPCBtTWlwUmFuZ2UuZW5kLTEpCisgICAgZWxzZSBpZiAobUN1cnJlbnRNaXAg
PCBtTWlwUmFuZ2UuZW5kIC0gMSkKICAgICB7CiAgICAgICAgIG1DdXJyZW50TWlwKys7CiAgICAg
ICAgIG1DdXJyZW50TGF5ZXIgPSBtTGF5ZXJSYW5nZS5zdGFydDsKICAgICB9CisgICAgZWxzZQor
ICAgIHsKKyAgICAgICAgZG9uZSgpOworICAgIH0KIAogICAgIHJldHVybiB2YWx1ZTsKIH0KQEAg
LTE3MCw0ICsxOTgsMTAgQEAKICAgICByZXR1cm4gKG1DdXJyZW50TWlwIDwgbU1pcFJhbmdlLmVu
ZCB8fCBtQ3VycmVudExheWVyIDwgbWF4TGF5ZXIoKSk7CiB9CiAKK3ZvaWQgSW1hZ2VJbmRleEl0
ZXJhdG9yOjpkb25lKCkKK3sKKyAgICBtQ3VycmVudE1pcCAgID0gbU1pcFJhbmdlLmVuZDsKKyAg
ICBtQ3VycmVudExheWVyID0gbWF4TGF5ZXIoKTsKIH0KKworfSAgLy8gbmFtZXNwYWNlIGdsCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSW1hZ2VJbmRleC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9JbWFnZUlu
ZGV4LmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9JbWFnZUluZGV4LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICAg
ICBJbWFnZUluZGV4ICZvcGVyYXRvcj0oY29uc3QgSW1hZ2VJbmRleCAmb3RoZXIpOwogCiAgICAg
Ym9vbCBoYXNMYXllcigpIGNvbnN0IHsgcmV0dXJuIGxheWVySW5kZXggIT0gRU5USVJFX0xFVkVM
OyB9CisgICAgYm9vbCBpczNEKCkgY29uc3Q7CiAKICAgICBzdGF0aWMgSW1hZ2VJbmRleCBNYWtl
MkQoR0xpbnQgbWlwSW5kZXgpOwogICAgIHN0YXRpYyBJbWFnZUluZGV4IE1ha2VDdWJlKEdMZW51
bSB0YXJnZXQsIEdMaW50IG1pcEluZGV4KTsKQEAgLTQwLDYgKzQxLDggQEAKICAgICBzdGF0aWMg
Y29uc3QgR0xpbnQgRU5USVJFX0xFVkVMID0gc3RhdGljX2Nhc3Q8R0xpbnQ+KC0xKTsKIAogICAg
IGJvb2wgb3BlcmF0b3I8KGNvbnN0IEltYWdlSW5kZXggJm90aGVyKSBjb25zdDsKKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgSW1hZ2VJbmRleCAmb3RoZXIpIGNvbnN0OworICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBJbWFnZUluZGV4ICZvdGhlcikgY29uc3Q7CiAKICAgcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgSW1hZ2VJbmRleEl0ZXJhdG9yOwpAQCAtNjUsNiArNjgsNyBAQAogICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBSYW5nZTxHTGludD4gJmxheWVyUmFuZ2UsIGNvbnN0
IEdMc2l6ZWkgKmxheWVyQ291bnRzKTsKIAogICAgIEdMaW50IG1heExheWVyKCkgY29uc3Q7Cisg
ICAgdm9pZCBkb25lKCk7CiAKICAgICBHTGVudW0gbVR5cGU7CiAgICAgUmFuZ2U8R0xpbnQ+IG1N
aXBSYW5nZTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9JbWFn
ZUluZGV4SXRlcmF0b3JfdW5pdHRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9JbWFnZUluZGV4SXRlcmF0b3JfdW5pdHRlc3QuY3BwCShy
ZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
SW1hZ2VJbmRleEl0ZXJhdG9yX3VuaXR0ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiAr
NDEsOCBAQAogICAgICAgICBFWFBFQ1RfRVEoY3VycmVudC5taXBJbmRleCwgbmV4dEluZGV4Lm1p
cEluZGV4KTsKICAgICAgICAgRVhQRUNUX0VRKGN1cnJlbnQubGF5ZXJJbmRleCwgbmV4dEluZGV4
LmxheWVySW5kZXgpOwogICAgIH0KKworICAgIEVYUEVDVF9GQUxTRShpdGVyLmhhc05leHQoKSk7
CiB9CiAKIFRFU1QoSW1hZ2VJbmRleFRlc3QsIEl0ZXJhdG9yQ3ViZSkKQEAgLTY0LDYgKzY2LDgg
QEAKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKG5leHRJbmRleC5oYXNMYXllcigpKTsKICAgICAg
ICAgfQogICAgIH0KKworICAgIEVYUEVDVF9GQUxTRShpdGVyLmhhc05leHQoKSk7CiB9CiAKIFRF
U1QoSW1hZ2VJbmRleFRlc3QsIEl0ZXJhdG9yM0QpCkBAIC04NSw2ICs4OSw4IEBACiAgICAgICAg
ICAgICBFWFBFQ1RfVFJVRShuZXh0SW5kZXguaGFzTGF5ZXIoKSk7CiAgICAgICAgIH0KICAgICB9
CisKKyAgICBFWFBFQ1RfRkFMU0UoaXRlci5oYXNOZXh0KCkpOwogfQogCiBURVNUKEltYWdlSW5k
ZXhUZXN0LCBJdGVyYXRvcjJEQXJyYXkpCkBAIC0xMDksNiArMTE1LDggQEAKICAgICAgICAgICAg
IEVYUEVDVF9UUlVFKG5leHRJbmRleC5oYXNMYXllcigpKTsKICAgICAgICAgfQogICAgIH0KKwor
ICAgIEVYUEVDVF9GQUxTRShpdGVyLmhhc05leHQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSW1hZ2VfdW5pdHRlc3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9J
bWFnZV91bml0dGVzdC5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9JbWFnZV91bml0dGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0LDggKzE0LDEwIEBACiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvSW1hZ2VJbXBsX21v
Y2suaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9UZXh0dXJlSW1wbF9tb2NrLmgiCiAj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvUmVuZGVyYnVmZmVySW1wbF9tb2NrLmgiCisjaW5j
bHVkZSAidGVzdHMvYW5nbGVfdW5pdHRlc3RzX3V0aWxzLmgiCiAKIHVzaW5nIDo6dGVzdGluZzo6
XzsKK3VzaW5nIDo6dGVzdGluZzo6TmljZU1vY2s7CiB1c2luZyA6OnRlc3Rpbmc6OlJldHVybjsK
IAogbmFtZXNwYWNlIGFuZ2xlCkBAIC0yMyw5ICsyNSwxMSBAQAogLy8gVmVyaWZ5IHJlZiBjb3Vu
dHMgYXJlIG1haW50YWluZWQgYmV0d2VlbiBpbWFnZXMgYW5kIHRoZWlyIHNpYmxpbmdzIHdoZW4g
b2JqZWN0cyBhcmUgZGVsZXRlZAogVEVTVChJbWFnZVRlc3QsIFJlZkNvdW50aW5nKQogeworICAg
IE5pY2VNb2NrPHJ4OjpNb2NrR0xGYWN0b3J5PiBtb2NrRmFjdG9yeTsKICAgICAvLyBDcmVhdGUg
YSB0ZXh0dXJlIGFuZCBhbiBFR0wgaW1hZ2UgdGhhdCB1c2VzIHRoZSB0ZXh0dXJlIGFzIGl0cyBz
b3VyY2UKICAgICByeDo6TW9ja1RleHR1cmVJbXBsICp0ZXh0dXJlSW1wbCA9IG5ldyByeDo6TW9j
a1RleHR1cmVJbXBsKCk7Ci0gICAgZ2w6OlRleHR1cmUgKnRleHR1cmUgPSBuZXcgZ2w6OlRleHR1
cmUodGV4dHVyZUltcGwsIDEsIEdMX1RFWFRVUkVfMkQpOworICAgIEVYUEVDVF9DQUxMKG1vY2tG
YWN0b3J5LCBjcmVhdGVUZXh0dXJlKF8pKS5XaWxsT25jZShSZXR1cm4odGV4dHVyZUltcGwpKTsK
KyAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSA9IG5ldyBnbDo6VGV4dHVyZSgmbW9ja0ZhY3Rvcnks
IDEsIEdMX1RFWFRVUkVfMkQpOwogICAgIHRleHR1cmUtPmFkZFJlZigpOwogCiAgICAgcng6Ok1v
Y2tJbWFnZUltcGwgKmltYWdlSW1wbCA9IG5ldyByeDo6TW9ja0ltYWdlSW1wbCgpOwpAQCAtODIs
OSArODYsMTEgQEAKIC8vIFZlcmlmeSB0aGF0IHJlc3BlY2lmaXlpbmcgdGV4dHVyZXMgcmVsZWFz
ZXMgcmVmZXJlbmNlcyB0byB0aGUgSW1hZ2UuCiBURVNUKEltYWdlVGVzdCwgUmVzcGVjaWZpY2F0
aW9uUmVsZWFzZXNSZWZlcmVuY2VzKQogeworICAgIE5pY2VNb2NrPHJ4OjpNb2NrR0xGYWN0b3J5
PiBtb2NrRmFjdG9yeTsKICAgICAvLyBDcmVhdGUgYSB0ZXh0dXJlIGFuZCBhbiBFR0wgaW1hZ2Ug
dGhhdCB1c2VzIHRoZSB0ZXh0dXJlIGFzIGl0cyBzb3VyY2UKICAgICByeDo6TW9ja1RleHR1cmVJ
bXBsICp0ZXh0dXJlSW1wbCA9IG5ldyByeDo6TW9ja1RleHR1cmVJbXBsKCk7Ci0gICAgZ2w6OlRl
eHR1cmUgKnRleHR1cmUgPSBuZXcgZ2w6OlRleHR1cmUodGV4dHVyZUltcGwsIDEsIEdMX1RFWFRV
UkVfMkQpOworICAgIEVYUEVDVF9DQUxMKG1vY2tGYWN0b3J5LCBjcmVhdGVUZXh0dXJlKF8pKS5X
aWxsT25jZShSZXR1cm4odGV4dHVyZUltcGwpKTsKKyAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSA9
IG5ldyBnbDo6VGV4dHVyZSgmbW9ja0ZhY3RvcnksIDEsIEdMX1RFWFRVUkVfMkQpOwogICAgIHRl
eHR1cmUtPmFkZFJlZigpOwogCiAgICAgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgZGVmYXVsdFVucGFj
a1N0YXRlOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1BhdGgu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Q
YXRoLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvUGF0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3OCBAQAorLy8KKy8vIENv
cHlyaWdodCAoYykgMjAwMi0yMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgorLy8KKworLy8gUGF0aC5oOiBEZWZpbmVzIHRoZSBnbDo6UGF0aCBjbGFzcywgcmVwcmVz
ZW50aW5nIENIUk9NSVVNX3BhdGhfcmVuZGVyaW5nCisvLyBwYXRoIG9iamVjdC4KKworI2luY2x1
ZGUgImxpYkFOR0xFL1BhdGguaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9QYXRoSW1w
bC5oIgorCisjaW5jbHVkZSAiY29tbW9uL21hdGh1dGlsLmgiCisjaW5jbHVkZSAiY29tbW9uL2Rl
YnVnLmgiCisKK25hbWVzcGFjZSBnbAoreworCitQYXRoOjpQYXRoKHJ4OjpQYXRoSW1wbCAqaW1w
bCkKKyAgICA6IG1QYXRoKGltcGwpLAorICAgICAgbUhhc0RhdGEoZmFsc2UpLAorICAgICAgbUVu
ZENhcHMoR0xfRkxBVF9DSFJPTUlVTSksCisgICAgICBtSm9pblN0eWxlKEdMX01JVEVSX1JFVkVS
VF9DSFJPTUlVTSksCisgICAgICBtU3Ryb2tlV2lkdGgoMS4wZiksCisgICAgICBtU3Ryb2tlQm91
bmQoMC4yZiksCisgICAgICBtTWl0ZXJMaW1pdCg0LjBmKQoreworfQorCitQYXRoOjp+UGF0aCgp
Cit7CisgICAgZGVsZXRlIG1QYXRoOworfQorCitFcnJvciBQYXRoOjpzZXRDb21tYW5kcyhHTHNp
emVpIG51bUNvbW1hbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSAq
Y29tbWFuZHMsCisgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUNvb3JkcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb29yZFR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB2b2lkICpjb29yZHMpCit7CisgICAgQU5HTEVfVFJZKG1QYXRoLT5zZXRD
b21tYW5kcyhudW1Db21tYW5kcywgY29tbWFuZHMsIG51bUNvb3JkcywgY29vcmRUeXBlLCBjb29y
ZHMpKTsKKworICAgIG1IYXNEYXRhID0gdHJ1ZTsKKworICAgIHJldHVybiBnbDo6Tm9FcnJvcigp
OworfQorCit2b2lkIFBhdGg6OnNldFN0cm9rZVdpZHRoKEdMZmxvYXQgd2lkdGgpCit7CisgICAg
bVN0cm9rZVdpZHRoID0gd2lkdGg7CisgICAgbVBhdGgtPnNldFBhdGhQYXJhbWV0ZXIoR0xfUEFU
SF9TVFJPS0VfV0lEVEhfQ0hST01JVU0sIG1TdHJva2VXaWR0aCk7Cit9CisKK3ZvaWQgUGF0aDo6
c2V0U3Ryb2tlQm91bmQoR0xmbG9hdCBib3VuZCkKK3sKKyAgICBtU3Ryb2tlQm91bmQgPSBjbGFt
cChib3VuZCwgMC4wZiwgMS4wZik7CisgICAgbVBhdGgtPnNldFBhdGhQYXJhbWV0ZXIoR0xfUEFU
SF9TVFJPS0VfQk9VTkRfQ0hST01JVU0sIG1TdHJva2VCb3VuZCk7Cit9CisKK3ZvaWQgUGF0aDo6
c2V0RW5kQ2FwcyhHTGVudW0gdHlwZSkKK3sKKyAgICBtRW5kQ2FwcyA9IHR5cGU7CisgICAgbVBh
dGgtPnNldFBhdGhQYXJhbWV0ZXIoR0xfUEFUSF9FTkRfQ0FQU19DSFJPTUlVTSwgc3RhdGljX2Nh
c3Q8R0xmbG9hdD4odHlwZSkpOworfQorCit2b2lkIFBhdGg6OnNldEpvaW5TdHlsZShHTGVudW0g
dHlwZSkKK3sKKyAgICBtSm9pblN0eWxlID0gdHlwZTsKKyAgICBtUGF0aC0+c2V0UGF0aFBhcmFt
ZXRlcihHTF9QQVRIX0pPSU5fU1RZTEVfQ0hST01JVU0sIHN0YXRpY19jYXN0PEdMZmxvYXQ+KHR5
cGUpKTsKK30KKwordm9pZCBQYXRoOjpzZXRNaXRlckxpbWl0KEdMZmxvYXQgdmFsdWUpCit7Cisg
ICAgbU1pdGVyTGltaXQgPSB2YWx1ZTsKKyAgICBtUGF0aC0+c2V0UGF0aFBhcmFtZXRlcihHTF9Q
QVRIX01JVEVSX0xJTUlUX0NIUk9NSVVNLCB2YWx1ZSk7Cit9CisKK30gIC8vIGdsCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUGF0aC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9QYXRoLmgJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1BhdGguaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDcxIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBQYXRoLmg6
IERlZmluZXMgdGhlIGdsOjpQYXRoIGNsYXNzLCByZXByZXNlbnRpbmcgQ0hST01JVU1fcGF0aF9y
ZW5kZXJpbmcKKy8vIHBhdGggb2JqZWN0LgorCisjaWZuZGVmIExJQkFOR0xFX1BBVEhfSF8KKyNk
ZWZpbmUgTElCQU5HTEVfUEFUSF9IXworCisjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKKyNpbmNsdWRl
ICJjb21tb24vYW5nbGV1dGlscy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0Vycm9yLmgiCisjaW5j
bHVkZSAibGliQU5HTEUvUmVmQ291bnRPYmplY3QuaCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFz
cyBQYXRoSW1wbDsKK30KKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBQYXRoIGZpbmFsIDogYW5n
bGU6Ok5vbkNvcHlhYmxlCit7CisgIHB1YmxpYzoKKyAgICBQYXRoKHJ4OjpQYXRoSW1wbCAqaW1w
bCk7CisKKyAgICB+UGF0aCgpOworCisgICAgRXJyb3Igc2V0Q29tbWFuZHMoR0xzaXplaSBudW1D
b21tYW5kcywKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVieXRlICpjb21tYW5kcywK
KyAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUNvb3JkcywKKyAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gY29vcmRUeXBlLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZv
aWQgKmNvb3Jkcyk7CisKKyAgICB2b2lkIHNldFN0cm9rZVdpZHRoKEdMZmxvYXQgd2lkdGgpOwor
ICAgIHZvaWQgc2V0U3Ryb2tlQm91bmQoR0xmbG9hdCBib3VuZCk7CisgICAgdm9pZCBzZXRFbmRD
YXBzKEdMZW51bSB0eXBlKTsKKyAgICB2b2lkIHNldEpvaW5TdHlsZShHTGVudW0gdHlwZSk7Cisg
ICAgdm9pZCBzZXRNaXRlckxpbWl0KEdMZmxvYXQgdmFsdWUpOworCisgICAgR0xmbG9hdCBnZXRT
dHJva2VXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1TdHJva2VXaWR0aDsgfQorICAgIEdMZmxvYXQg
Z2V0U3Ryb2tlQm91bmQoKSBjb25zdCB7IHJldHVybiBtU3Ryb2tlQm91bmQ7IH0KKyAgICBHTGZs
b2F0IGdldE1pdGVyTGltaXQoKSBjb25zdCB7IHJldHVybiBtTWl0ZXJMaW1pdDsgfQorICAgIEdM
ZW51bSBnZXRFbmRDYXBzKCkgY29uc3QgeyByZXR1cm4gbUVuZENhcHM7IH0KKyAgICBHTGVudW0g
Z2V0Sm9pblN0eWxlKCkgY29uc3QgeyByZXR1cm4gbUpvaW5TdHlsZTsgfQorCisgICAgYm9vbCBo
YXNQYXRoRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1IYXNEYXRhOyB9CisKKyAgICByeDo6UGF0aElt
cGwgKmdldEltcGxlbWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbVBhdGg7IH0KKworICBwcml2
YXRlOgorICAgIHJ4OjpQYXRoSW1wbCAqbVBhdGg7CisKKyAgICAvLyBhIFBhdGggb2JqZWN0IGlz
IG5vdCBhY3R1YWxseSBjb25zaWRlcmVkICJhIHBhdGgiCisgICAgLy8gdW50aWxsIGl0IGhhcyBi
ZWVuIHNwZWNpZmllZCB3aXRoIGRhdGEuIFNvIHdlJ2xsCisgICAgLy8ga2VlcCB0aGlzIGZsYWcg
dG8gc3VwcG9ydCB0aGlzIHNlbWFudGljcy4KKyAgICBib29sIG1IYXNEYXRhOworCisgICAgR0xl
bnVtIG1FbmRDYXBzOworICAgIEdMZW51bSBtSm9pblN0eWxlOworICAgIEdMZmxvYXQgbVN0cm9r
ZVdpZHRoOworICAgIEdMZmxvYXQgbVN0cm9rZUJvdW5kOworICAgIEdMZmxvYXQgbU1pdGVyTGlt
aXQ7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgZ2wKKworI2VuZGlmICAvLyBMSUJBTkdMRV9QQVRI
X0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUHJvZ3JhbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1By
b2dyYW0uY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvUHJvZ3JhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3LDEyICsxNywxMyBA
QAogI2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKICNpbmNsdWRlICJjb21tb24vdmVyc2lv
bi5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvYmxvY2tsYXlvdXQuaCIKLSNpbmNs
dWRlICJsaWJBTkdMRS9EYXRhLmgiCisjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dFN0YXRlLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvUmVzb3VyY2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAibGliQU5H
TEUvZmVhdHVyZXMuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9SZW5kZXJlci5oIgor
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0dMSW1wbEZhY3RvcnkuaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9Qcm9ncmFtSW1wbC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3F1ZXJ5
Y29udmVyc2lvbnMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9Vbmlmb3JtLmgiCiAKIG5hbWVzcGFj
ZSBnbAogewpAQCAtMTM4LDE0ICsxMzksNiBAQAogCiBjb25zdCBjaGFyICpjb25zdCBnX2Zha2Vw
YXRoID0gIkM6XFxmYWtlcGF0aCI7CiAKLUF0dHJpYnV0ZUJpbmRpbmdzOjpBdHRyaWJ1dGVCaW5k
aW5ncygpCi17Ci19Ci0KLUF0dHJpYnV0ZUJpbmRpbmdzOjp+QXR0cmlidXRlQmluZGluZ3MoKQot
ewotfQotCiBJbmZvTG9nOjpJbmZvTG9nKCkKIHsKIH0KQEAgLTE4NCw3ICsxNzcsNyBAQAogfQog
CiAvLyBhcHBlbmQgYSBzYW50aXplZCBtZXNzYWdlIHRvIHRoZSBwcm9ncmFtIGluZm8gbG9nLgot
Ly8gVGhlIEQzRCBjb21waWxlciBpbmNsdWRlcyBhIGZha2UgZmlsZSBwYXRoIGluIHNvbWUgb2Yg
dGhlIHdhcm5pbmcgb3IgZXJyb3IgCisvLyBUaGUgRDNEIGNvbXBpbGVyIGluY2x1ZGVzIGEgZmFr
ZSBmaWxlIHBhdGggaW4gc29tZSBvZiB0aGUgd2FybmluZyBvciBlcnJvcgogLy8gbWVzc2FnZXMs
IHNvIGxldHMgcmVtb3ZlIGFsbCBvY2N1cnJlbmNlcyBvZiB0aGlzIGZha2UgZmlsZSBwYXRoIGZy
b20gdGhlIGxvZy4KIHZvaWQgSW5mb0xvZzo6YXBwZW5kU2FuaXRpemVkKGNvbnN0IGNoYXIgKm1l
c3NhZ2UpCiB7CkBAIC0yMDgsMzAgKzIwMSw1MCBAQAogewogfQogCi1WYXJpYWJsZUxvY2F0aW9u
OjpWYXJpYWJsZUxvY2F0aW9uKCkKLSAgICA6IG5hbWUoKSwKLSAgICAgIGVsZW1lbnQoMCksCi0g
ICAgICBpbmRleCgwKQorVmFyaWFibGVMb2NhdGlvbjo6VmFyaWFibGVMb2NhdGlvbigpIDogbmFt
ZSgpLCBlbGVtZW50KDApLCBpbmRleCgwKSwgdXNlZChmYWxzZSksIGlnbm9yZWQoZmFsc2UpCiB7
CiB9CiAKLVZhcmlhYmxlTG9jYXRpb246OlZhcmlhYmxlTG9jYXRpb24oY29uc3Qgc3RkOjpzdHJp
bmcgJm5hbWUsIHVuc2lnbmVkIGludCBlbGVtZW50LCB1bnNpZ25lZCBpbnQgaW5kZXgpCi0gICAg
OiBuYW1lKG5hbWUpLAotICAgICAgZWxlbWVudChlbGVtZW50KSwKLSAgICAgIGluZGV4KGluZGV4
KQorVmFyaWFibGVMb2NhdGlvbjo6VmFyaWFibGVMb2NhdGlvbihjb25zdCBzdGQ6OnN0cmluZyAm
bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGVs
ZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBp
bmRleCkKKyAgICA6IG5hbWUobmFtZSksIGVsZW1lbnQoZWxlbWVudCksIGluZGV4KGluZGV4KSwg
dXNlZCh0cnVlKSwgaWdub3JlZChmYWxzZSkKIHsKIH0KIAotUHJvZ3JhbTo6RGF0YTo6RGF0YSgp
Cit2b2lkIFByb2dyYW06OkJpbmRpbmdzOjpiaW5kTG9jYXRpb24oR0x1aW50IGluZGV4LCBjb25z
dCBzdGQ6OnN0cmluZyAmbmFtZSkKK3sKKyAgICBtQmluZGluZ3NbbmFtZV0gPSBpbmRleDsKK30K
KworaW50IFByb2dyYW06OkJpbmRpbmdzOjpnZXRCaW5kaW5nKGNvbnN0IHN0ZDo6c3RyaW5nICZu
YW1lKSBjb25zdAoreworICAgIGF1dG8gaXRlciA9IG1CaW5kaW5ncy5maW5kKG5hbWUpOworICAg
IHJldHVybiAoaXRlciAhPSBtQmluZGluZ3MuZW5kKCkpID8gaXRlci0+c2Vjb25kIDogLTE7Cit9
CisKK1Byb2dyYW06OkJpbmRpbmdzOjpjb25zdF9pdGVyYXRvciBQcm9ncmFtOjpCaW5kaW5nczo6
YmVnaW4oKSBjb25zdAoreworICAgIHJldHVybiBtQmluZGluZ3MuYmVnaW4oKTsKK30KKworUHJv
Z3JhbTo6QmluZGluZ3M6OmNvbnN0X2l0ZXJhdG9yIFByb2dyYW06OkJpbmRpbmdzOjplbmQoKSBj
b25zdAoreworICAgIHJldHVybiBtQmluZGluZ3MuZW5kKCk7Cit9CisKK1Byb2dyYW1TdGF0ZTo6
UHJvZ3JhbVN0YXRlKCkKICAgICA6IG1MYWJlbCgpLAogICAgICAgbUF0dGFjaGVkRnJhZ21lbnRT
aGFkZXIobnVsbHB0ciksCiAgICAgICBtQXR0YWNoZWRWZXJ0ZXhTaGFkZXIobnVsbHB0ciksCisg
ICAgICBtQXR0YWNoZWRDb21wdXRlU2hhZGVyKG51bGxwdHIpLAogICAgICAgbVRyYW5zZm9ybUZl
ZWRiYWNrQnVmZmVyTW9kZShHTF9JTlRFUkxFQVZFRF9BVFRSSUJTKSwKICAgICAgIG1CaW5hcnlS
ZXRyaWV2ZWFibGVIaW50KGZhbHNlKQogeworICAgIG1Db21wdXRlU2hhZGVyTG9jYWxTaXplLmZp
bGwoMSk7CiB9CiAKLVByb2dyYW06OkRhdGE6On5EYXRhKCkKK1Byb2dyYW1TdGF0ZTo6flByb2dy
YW1TdGF0ZSgpCiB7CiAgICAgaWYgKG1BdHRhY2hlZFZlcnRleFNoYWRlciAhPSBudWxscHRyKQog
ICAgIHsKQEAgLTI0MiwxNCArMjU1LDE5IEBACiAgICAgewogICAgICAgICBtQXR0YWNoZWRGcmFn
bWVudFNoYWRlci0+cmVsZWFzZSgpOwogICAgIH0KKworICAgIGlmIChtQXR0YWNoZWRDb21wdXRl
U2hhZGVyICE9IG51bGxwdHIpCisgICAgeworICAgICAgICBtQXR0YWNoZWRDb21wdXRlU2hhZGVy
LT5yZWxlYXNlKCk7CisgICAgfQogfQogCi1jb25zdCBzdGQ6OnN0cmluZyAmUHJvZ3JhbTo6RGF0
YTo6Z2V0TGFiZWwoKQorY29uc3Qgc3RkOjpzdHJpbmcgJlByb2dyYW1TdGF0ZTo6Z2V0TGFiZWwo
KQogewogICAgIHJldHVybiBtTGFiZWw7CiB9CiAKLWNvbnN0IExpbmtlZFVuaWZvcm0gKlByb2dy
YW06OkRhdGE6OmdldFVuaWZvcm1CeU5hbWUoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0
Citjb25zdCBMaW5rZWRVbmlmb3JtICpQcm9ncmFtU3RhdGU6OmdldFVuaWZvcm1CeU5hbWUoY29u
c3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0CiB7CiAgICAgZm9yIChjb25zdCBMaW5rZWRVbmlm
b3JtICZsaW5rZWRVbmlmb3JtIDogbVVuaWZvcm1zKQogICAgIHsKQEAgLTI2Miw3ICsyODAsNyBA
QAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1HTGludCBQcm9ncmFtOjpEYXRhOjpnZXRVbmlm
b3JtTG9jYXRpb24oY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0CitHTGludCBQcm9ncmFt
U3RhdGU6OmdldFVuaWZvcm1Mb2NhdGlvbihjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkgY29uc3QK
IHsKICAgICBzaXplX3Qgc3Vic2NyaXB0ICAgICA9IEdMX0lOVkFMSURfSU5ERVg7CiAgICAgc3Rk
OjpzdHJpbmcgYmFzZU5hbWUgPSBnbDo6UGFyc2VVbmlmb3JtTmFtZShuYW1lLCAmc3Vic2NyaXB0
KTsKQEAgLTI3MCwxNSArMjg4LDMwIEBACiAgICAgZm9yIChzaXplX3QgbG9jYXRpb24gPSAwOyBs
b2NhdGlvbiA8IG1Vbmlmb3JtTG9jYXRpb25zLnNpemUoKTsgKytsb2NhdGlvbikKICAgICB7CiAg
ICAgICAgIGNvbnN0IFZhcmlhYmxlTG9jYXRpb24gJnVuaWZvcm1Mb2NhdGlvbiA9IG1Vbmlmb3Jt
TG9jYXRpb25zW2xvY2F0aW9uXTsKLSAgICAgICAgY29uc3QgTGlua2VkVW5pZm9ybSAmdW5pZm9y
bSAgICAgICAgICAgID0gbVVuaWZvcm1zW3VuaWZvcm1Mb2NhdGlvbi5pbmRleF07CisgICAgICAg
IGlmICghdW5pZm9ybUxvY2F0aW9uLnVzZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CiAKKyAgICAgICAgY29uc3QgTGlua2VkVW5pZm9ybSAmdW5pZm9ybSA9
IG1Vbmlmb3Jtc1t1bmlmb3JtTG9jYXRpb24uaW5kZXhdOworCiAgICAgICAgIGlmICh1bmlmb3Jt
Lm5hbWUgPT0gYmFzZU5hbWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICgodW5pZm9ybS5p
c0FycmF5KCkgJiYgdW5pZm9ybUxvY2F0aW9uLmVsZW1lbnQgPT0gc3Vic2NyaXB0KSB8fAotICAg
ICAgICAgICAgICAgIChzdWJzY3JpcHQgPT0gR0xfSU5WQUxJRF9JTkRFWCkpCisgICAgICAgICAg
ICBpZiAodW5pZm9ybS5pc0FycmF5KCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEdMaW50Pihsb2NhdGlvbik7CisgICAgICAgICAgICAgICAgaWYg
KHVuaWZvcm1Mb2NhdGlvbi5lbGVtZW50ID09IHN1YnNjcmlwdCB8fAorICAgICAgICAgICAgICAg
ICAgICAodW5pZm9ybUxvY2F0aW9uLmVsZW1lbnQgPT0gMCAmJiBzdWJzY3JpcHQgPT0gR0xfSU5W
QUxJRF9JTkRFWCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8R0xpbnQ+KGxvY2F0aW9uKTsKKyAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgaWYgKHN1YnNjcmlwdCA9PSBHTF9JTlZBTElEX0lOREVYKQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMaW50Pihsb2NhdGlvbik7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCkBA
IC0yODUsNyArMzE4LDcgQEAKICAgICByZXR1cm4gLTE7CiB9CiAKLUdMdWludCBQcm9ncmFtOjpE
YXRhOjpnZXRVbmlmb3JtSW5kZXgoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0CitHTHVp
bnQgUHJvZ3JhbVN0YXRlOjpnZXRVbmlmb3JtSW5kZXgoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUp
IGNvbnN0CiB7CiAgICAgc2l6ZV90IHN1YnNjcmlwdCAgICAgPSBHTF9JTlZBTElEX0lOREVYOwog
ICAgIHN0ZDo6c3RyaW5nIGJhc2VOYW1lID0gZ2w6OlBhcnNlVW5pZm9ybU5hbWUobmFtZSwgJnN1
YnNjcmlwdCk7CkBAIC0zMTEsOCArMzQ0LDggQEAKICAgICByZXR1cm4gR0xfSU5WQUxJRF9JTkRF
WDsKIH0KIAotUHJvZ3JhbTo6UHJvZ3JhbShyeDo6SW1wbEZhY3RvcnkgKmZhY3RvcnksIFJlc291
cmNlTWFuYWdlciAqbWFuYWdlciwgR0x1aW50IGhhbmRsZSkKLSAgICA6IG1Qcm9ncmFtKGZhY3Rv
cnktPmNyZWF0ZVByb2dyYW0obURhdGEpKSwKK1Byb2dyYW06OlByb2dyYW0ocng6OkdMSW1wbEZh
Y3RvcnkgKmZhY3RvcnksIFJlc291cmNlTWFuYWdlciAqbWFuYWdlciwgR0x1aW50IGhhbmRsZSkK
KyAgICA6IG1Qcm9ncmFtKGZhY3RvcnktPmNyZWF0ZVByb2dyYW0obVN0YXRlKSksCiAgICAgICBt
VmFsaWRhdGVkKGZhbHNlKSwKICAgICAgIG1MaW5rZWQoZmFsc2UpLAogICAgICAgbURlbGV0ZVN0
YXR1cyhmYWxzZSksCkBAIC0zMzYsNjQgKzM2OSw4NCBAQAogCiB2b2lkIFByb2dyYW06OnNldExh
YmVsKGNvbnN0IHN0ZDo6c3RyaW5nICZsYWJlbCkKIHsKLSAgICBtRGF0YS5tTGFiZWwgPSBsYWJl
bDsKKyAgICBtU3RhdGUubUxhYmVsID0gbGFiZWw7CiB9CiAKIGNvbnN0IHN0ZDo6c3RyaW5nICZQ
cm9ncmFtOjpnZXRMYWJlbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1EYXRhLm1MYWJlbDsKKyAg
ICByZXR1cm4gbVN0YXRlLm1MYWJlbDsKIH0KIAotYm9vbCBQcm9ncmFtOjphdHRhY2hTaGFkZXIo
U2hhZGVyICpzaGFkZXIpCit2b2lkIFByb2dyYW06OmF0dGFjaFNoYWRlcihTaGFkZXIgKnNoYWRl
cikKIHsKLSAgICBpZiAoc2hhZGVyLT5nZXRUeXBlKCkgPT0gR0xfVkVSVEVYX1NIQURFUikKKyAg
ICBzd2l0Y2ggKHNoYWRlci0+Z2V0VHlwZSgpKQogICAgIHsKLSAgICAgICAgaWYgKG1EYXRhLm1B
dHRhY2hlZFZlcnRleFNoYWRlcikKKyAgICAgICAgY2FzZSBHTF9WRVJURVhfU0hBREVSOgogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBBU1NFUlQoIW1T
dGF0ZS5tQXR0YWNoZWRWZXJ0ZXhTaGFkZXIpOworICAgICAgICAgICAgbVN0YXRlLm1BdHRhY2hl
ZFZlcnRleFNoYWRlciA9IHNoYWRlcjsKKyAgICAgICAgICAgIG1TdGF0ZS5tQXR0YWNoZWRWZXJ0
ZXhTaGFkZXItPmFkZFJlZigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLQotICAg
ICAgICBtRGF0YS5tQXR0YWNoZWRWZXJ0ZXhTaGFkZXIgPSBzaGFkZXI7Ci0gICAgICAgIG1EYXRh
Lm1BdHRhY2hlZFZlcnRleFNoYWRlci0+YWRkUmVmKCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKHNo
YWRlci0+Z2V0VHlwZSgpID09IEdMX0ZSQUdNRU5UX1NIQURFUikKLSAgICB7Ci0gICAgICAgIGlm
IChtRGF0YS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlcikKKyAgICAgICAgY2FzZSBHTF9GUkFHTUVO
VF9TSEFERVI6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIEFTU0VSVCghbVN0YXRlLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyKTsKKyAgICAgICAgICAg
IG1TdGF0ZS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlciA9IHNoYWRlcjsKKyAgICAgICAgICAgIG1T
dGF0ZS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlci0+YWRkUmVmKCk7CisgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQotCi0gICAgICAgIG1EYXRhLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyID0g
c2hhZGVyOwotICAgICAgICBtRGF0YS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlci0+YWRkUmVmKCk7
CisgICAgICAgIGNhc2UgR0xfQ09NUFVURV9TSEFERVI6CisgICAgICAgIHsKKyAgICAgICAgICAg
IEFTU0VSVCghbVN0YXRlLm1BdHRhY2hlZENvbXB1dGVTaGFkZXIpOworICAgICAgICAgICAgbVN0
YXRlLm1BdHRhY2hlZENvbXB1dGVTaGFkZXIgPSBzaGFkZXI7CisgICAgICAgICAgICBtU3RhdGUu
bUF0dGFjaGVkQ29tcHV0ZVNoYWRlci0+YWRkUmVmKCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAg
ICB9Ci0gICAgZWxzZSBVTlJFQUNIQUJMRSgpOwotCi0gICAgcmV0dXJuIHRydWU7CiB9CiAKIGJv
b2wgUHJvZ3JhbTo6ZGV0YWNoU2hhZGVyKFNoYWRlciAqc2hhZGVyKQogewotICAgIGlmIChzaGFk
ZXItPmdldFR5cGUoKSA9PSBHTF9WRVJURVhfU0hBREVSKQorICAgIHN3aXRjaCAoc2hhZGVyLT5n
ZXRUeXBlKCkpCiAgICAgewotICAgICAgICBpZiAobURhdGEubUF0dGFjaGVkVmVydGV4U2hhZGVy
ICE9IHNoYWRlcikKKyAgICAgICAgY2FzZSBHTF9WRVJURVhfU0hBREVSOgogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAobVN0YXRlLm1BdHRhY2hl
ZFZlcnRleFNoYWRlciAhPSBzaGFkZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzaGFkZXItPnJlbGVh
c2UoKTsKKyAgICAgICAgICAgIG1TdGF0ZS5tQXR0YWNoZWRWZXJ0ZXhTaGFkZXIgPSBudWxscHRy
OworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9GUkFHTUVO
VF9TSEFERVI6CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtU3RhdGUubUF0dGFjaGVkRnJh
Z21lbnRTaGFkZXIgIT0gc2hhZGVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICBzaGFkZXItPnJlbGVhc2UoKTsK
LSAgICAgICAgbURhdGEubUF0dGFjaGVkVmVydGV4U2hhZGVyID0gbnVsbHB0cjsKLSAgICB9Ci0g
ICAgZWxzZSBpZiAoc2hhZGVyLT5nZXRUeXBlKCkgPT0gR0xfRlJBR01FTlRfU0hBREVSKQotICAg
IHsKLSAgICAgICAgaWYgKG1EYXRhLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyICE9IHNoYWRlcikK
KyAgICAgICAgICAgIHNoYWRlci0+cmVsZWFzZSgpOworICAgICAgICAgICAgbVN0YXRlLm1BdHRh
Y2hlZEZyYWdtZW50U2hhZGVyID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFVURV9TSEFERVI6CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmIChtU3RhdGUubUF0dGFjaGVkQ29tcHV0
ZVNoYWRlciAhPSBzaGFkZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzaGFkZXItPnJlbGVhc2UoKTsK
KyAgICAgICAgICAgIG1TdGF0ZS5tQXR0YWNoZWRDb21wdXRlU2hhZGVyID0gbnVsbHB0cjsKKyAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0KLSAgICAgICAgc2hhZGVyLT5yZWxlYXNlKCk7
Ci0gICAgICAgIG1EYXRhLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyID0gbnVsbHB0cjsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgfQotICAgIGVsc2Ug
VU5SRUFDSEFCTEUoKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNDAwLDMxICs0NTMsMTAx
IEBACiAKIGludCBQcm9ncmFtOjpnZXRBdHRhY2hlZFNoYWRlcnNDb3VudCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIChtRGF0YS5tQXR0YWNoZWRWZXJ0ZXhTaGFkZXIgPyAxIDogMCkgKyAobURhdGEu
bUF0dGFjaGVkRnJhZ21lbnRTaGFkZXIgPyAxIDogMCk7CisgICAgcmV0dXJuIChtU3RhdGUubUF0
dGFjaGVkVmVydGV4U2hhZGVyID8gMSA6IDApICsgKG1TdGF0ZS5tQXR0YWNoZWRGcmFnbWVudFNo
YWRlciA/IDEgOiAwKSArCisgICAgICAgICAgIChtU3RhdGUubUF0dGFjaGVkQ29tcHV0ZVNoYWRl
ciA/IDEgOiAwKTsKIH0KIAotdm9pZCBBdHRyaWJ1dGVCaW5kaW5nczo6YmluZEF0dHJpYnV0ZUxv
Y2F0aW9uKEdMdWludCBpbmRleCwgY29uc3QgY2hhciAqbmFtZSkKK3ZvaWQgUHJvZ3JhbTo6Ymlu
ZEF0dHJpYnV0ZUxvY2F0aW9uKEdMdWludCBpbmRleCwgY29uc3QgY2hhciAqbmFtZSkKIHsKLSAg
ICBpZiAoaW5kZXggPCBNQVhfVkVSVEVYX0FUVFJJQlMpCisgICAgbUF0dHJpYnV0ZUJpbmRpbmdz
LmJpbmRMb2NhdGlvbihpbmRleCwgbmFtZSk7Cit9CisKK3ZvaWQgUHJvZ3JhbTo6YmluZFVuaWZv
cm1Mb2NhdGlvbihHTHVpbnQgaW5kZXgsIGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgLy8gQmlu
ZCB0aGUgYmFzZSB1bmlmb3JtIG5hbWUgb25seSBzaW5jZSBhcnJheSBpbmRpY2VzIG90aGVyIHRo
YW4gMCBjYW5ub3QgYmUgYm91bmQKKyAgICBtVW5pZm9ybUJpbmRpbmdzLmJpbmRMb2NhdGlvbihp
bmRleCwgUGFyc2VVbmlmb3JtTmFtZShuYW1lLCBudWxscHRyKSk7Cit9CisKK3ZvaWQgUHJvZ3Jh
bTo6YmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbihHTGludCBpbmRleCwgY29uc3QgY2hhciAqbmFt
ZSkKK3sKKyAgICBtRnJhZ21lbnRJbnB1dEJpbmRpbmdzLmJpbmRMb2NhdGlvbihpbmRleCwgbmFt
ZSk7Cit9CisKK0JpbmRpbmdJbmZvIFByb2dyYW06OmdldEZyYWdtZW50SW5wdXRCaW5kaW5nSW5m
byhHTGludCBpbmRleCkgY29uc3QKK3sKKyAgICBCaW5kaW5nSW5mbyByZXQ7CisgICAgcmV0LnR5
cGUgID0gR0xfTk9ORTsKKyAgICByZXQudmFsaWQgPSBmYWxzZTsKKworICAgIGNvbnN0IFNoYWRl
ciAqZnJhZ21lbnRTaGFkZXIgPSBtU3RhdGUuZ2V0QXR0YWNoZWRGcmFnbWVudFNoYWRlcigpOwor
ICAgIEFTU0VSVChmcmFnbWVudFNoYWRlcik7CisKKyAgICAvLyBGaW5kIHRoZSBhY3R1YWwgZnJh
Z21lbnQgc2hhZGVyIHZhcnlpbmcgd2UncmUgaW50ZXJlc3RlZCBpbgorICAgIGNvbnN0IHN0ZDo6
dmVjdG9yPHNoOjpWYXJ5aW5nPiAmaW5wdXRzID0gZnJhZ21lbnRTaGFkZXItPmdldFZhcnlpbmdz
KCk7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8gJmJpbmRpbmcgOiBtRnJhZ21lbnRJbnB1dEJpbmRp
bmdzKQogICAgIHsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNQVhfVkVSVEVYX0FUVFJJ
QlM7IGkrKykKKyAgICAgICAgaWYgKGJpbmRpbmcuc2Vjb25kICE9IHN0YXRpY19jYXN0PEdMdWlu
dD4oaW5kZXgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgcmV0LnZhbGlkID0g
dHJ1ZTsKKworICAgICAgICBzdGQ6OnN0cmluZyBvcmlnaW5hbE5hbWUgPSBiaW5kaW5nLmZpcnN0
OworICAgICAgICB1bnNpZ25lZCBpbnQgYXJyYXlJbmRleCAgPSBQYXJzZUFuZFN0cmlwQXJyYXlJ
bmRleCgmb3JpZ2luYWxOYW1lKTsKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8gJmluIDogaW5w
dXRzKQogICAgICAgICB7Ci0gICAgICAgICAgICBtQXR0cmlidXRlQmluZGluZ1tpXS5lcmFzZShu
YW1lKTsKKyAgICAgICAgICAgIGlmIChpbi5uYW1lID09IG9yaWdpbmFsTmFtZSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoaW4uaXNBcnJheSgpKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGNsaWVudCB3YW50cyB0byBiaW5kIGVpdGhl
ciAibmFtZSIgb3IgIm5hbWVbMF0iLgorICAgICAgICAgICAgICAgICAgICAvLyBHTCBFUyAzLjEg
c3BlYyByZWZlcnMgdG8gYWN0aXZlIGFycmF5IG5hbWVzIHdpdGggbGFuZ3VhZ2Ugc3VjaCBhczoK
KyAgICAgICAgICAgICAgICAgICAgLy8gImlmIHRoZSBzdHJpbmcgaWRlbnRpZmllcyB0aGUgYmFz
ZSBuYW1lIG9mIGFuIGFjdGl2ZSBhcnJheSwgd2hlcmUgdGhlCisgICAgICAgICAgICAgICAgICAg
IC8vIHN0cmluZyB3b3VsZCBleGFjdGx5IG1hdGNoIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSBp
ZiB0aGUgc3VmZml4ICJbMF0iCisgICAgICAgICAgICAgICAgICAgIC8vIHdlcmUgYXBwZW5kZWQg
dG8gdGhlIHN0cmluZyIuCisgICAgICAgICAgICAgICAgICAgIGlmIChhcnJheUluZGV4ID09IEdM
X0lOVkFMSURfSU5ERVgpCisgICAgICAgICAgICAgICAgICAgICAgICBhcnJheUluZGV4ID0gMDsK
KworICAgICAgICAgICAgICAgICAgICByZXQubmFtZSA9IGluLm1hcHBlZE5hbWUgKyAiWyIgKyBU
b1N0cmluZyhhcnJheUluZGV4KSArICJdIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0Lm5h
bWUgPSBpbi5tYXBwZWROYW1lOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBy
ZXQudHlwZSA9IGluLnR5cGU7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQorICAgIH0KIAotICAgICAgICBtQXR0cmlidXRlQmluZGluZ1tpbmRl
eF0uaW5zZXJ0KG5hbWUpOwotICAgIH0KKyAgICByZXR1cm4gcmV0OwogfQogCi12b2lkIFByb2dy
YW06OmJpbmRBdHRyaWJ1dGVMb2NhdGlvbihHTHVpbnQgaW5kZXgsIGNvbnN0IGNoYXIgKm5hbWUp
Cit2b2lkIFByb2dyYW06OnBhdGhGcmFnbWVudElucHV0R2VuKEdMaW50IGluZGV4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZ2VuTW9kZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY29tcG9uZW50cywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqY29lZmZzKQogewotICAgIG1BdHRy
aWJ1dGVCaW5kaW5ncy5iaW5kQXR0cmlidXRlTG9jYXRpb24oaW5kZXgsIG5hbWUpOworICAgIC8v
IElmIHRoZSBsb2NhdGlvbiBpcyAtMSB0aGVuIHRoZSBjb21tYW5kIGlzIHNpbGVudGx5IGlnbm9y
ZWQKKyAgICBpZiAoaW5kZXggPT0gLTEpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0IGF1
dG8gJmJpbmRpbmcgPSBnZXRGcmFnbWVudElucHV0QmluZGluZ0luZm8oaW5kZXgpOworCisgICAg
Ly8gSWYgdGhlIGlucHV0IGRvZXNuJ3QgZXhpc3QgdGhlbiB0aGVuIHRoZSBjb21tYW5kIGlzIHNp
bGVudGx5IGlnbm9yZWQKKyAgICAvLyBUaGlzIGNvdWxkIGhhcHBlbiB0aHJvdWdoIG9wdGltaXph
dGlvbiBmb3IgZXhhbXBsZSwgdGhlIHNoYWRlciB0cmFuc2xhdG9yCisgICAgLy8gZGVjaWRlcyB0
aGF0IGEgdmFyaWFibGUgaXMgbm90IGFjdHVhbGx5IGJlaW5nIHVzZWQgYW5kIG9wdGltaXplcyBp
dCBhd2F5LgorICAgIGlmIChiaW5kaW5nLm5hbWUuZW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbVByb2dyYW0tPnNldFBhdGhGcmFnbWVudElucHV0R2VuKGJpbmRpbmcubmFtZSwgZ2Vu
TW9kZSwgY29tcG9uZW50cywgY29lZmZzKTsKIH0KIAotLy8gTGlua3MgdGhlIEhMU0wgY29kZSBv
ZiB0aGUgdmVydGV4IGFuZCBwaXhlbCBzaGFkZXIgYnkgbWF0Y2hpbmcgdXAgdGhlaXIgdmFyeWlu
Z3MsCi0vLyBjb21waWxpbmcgdGhlbSBpbnRvIGJpbmFyaWVzLCBkZXRlcm1pbmluZyB0aGUgYXR0
cmlidXRlIG1hcHBpbmdzLCBhbmQgY29sbGVjdGluZwotLy8gYSBsaXN0IG9mIHVuaWZvcm1zCi1F
cnJvciBQcm9ncmFtOjpsaW5rKGNvbnN0IGdsOjpEYXRhICZkYXRhKQorLy8gVGhlIGF0dGFjaGVk
IHNoYWRlcnMgYXJlIGNoZWNrZWQgZm9yIGxpbmtpbmcgZXJyb3JzIGJ5IG1hdGNoaW5nIHVwIHRo
ZWlyIHZhcmlhYmxlcy4KKy8vIFVuaWZvcm0sIGlucHV0IGFuZCBvdXRwdXQgdmFyaWFibGVzIGdl
dCBjb2xsZWN0ZWQuCisvLyBUaGUgY29kZSBnZXRzIGNvbXBpbGVkIGludG8gYmluYXJpZXMuCitF
cnJvciBQcm9ncmFtOjpsaW5rKGNvbnN0IENvbnRleHRTdGF0ZSAmZGF0YSkKIHsKICAgICB1bmxp
bmsoZmFsc2UpOwogCkBAIC00MzEsNzEgKzU1NCwxMTkgQEAKICAgICBtSW5mb0xvZy5yZXNldCgp
OwogICAgIHJlc2V0VW5pZm9ybUJsb2NrQmluZGluZ3MoKTsKIAotICAgIGlmICghbURhdGEubUF0
dGFjaGVkRnJhZ21lbnRTaGFkZXIgfHwgIW1EYXRhLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyLT5p
c0NvbXBpbGVkKCkpCi0gICAgewotICAgICAgICByZXR1cm4gRXJyb3IoR0xfTk9fRVJST1IpOwot
ICAgIH0KLSAgICBBU1NFUlQobURhdGEubUF0dGFjaGVkRnJhZ21lbnRTaGFkZXItPmdldFR5cGUo
KSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpOworICAgIGNvbnN0IENhcHMgJmNhcHMgPSBkYXRhLmdl
dENhcHMoKTsKIAotICAgIGlmICghbURhdGEubUF0dGFjaGVkVmVydGV4U2hhZGVyIHx8ICFtRGF0
YS5tQXR0YWNoZWRWZXJ0ZXhTaGFkZXItPmlzQ29tcGlsZWQoKSkKKyAgICBib29sIGlzQ29tcHV0
ZVNoYWRlckF0dGFjaGVkID0gKG1TdGF0ZS5tQXR0YWNoZWRDb21wdXRlU2hhZGVyICE9IG51bGxw
dHIpOworICAgIGJvb2wgbm9uQ29tcHV0ZVNoYWRlcnNBdHRhY2hlZCA9CisgICAgICAgIChtU3Rh
dGUubUF0dGFjaGVkVmVydGV4U2hhZGVyICE9IG51bGxwdHIgfHwgbVN0YXRlLm1BdHRhY2hlZEZy
YWdtZW50U2hhZGVyICE9IG51bGxwdHIpOworICAgIC8vIENoZWNrIHdoZXRoZXIgd2UgYm90aCBo
YXZlIGEgY29tcHV0ZSBhbmQgbm9uLWNvbXB1dGUgc2hhZGVycyBhdHRhY2hlZC4KKyAgICAvLyBJ
ZiB0aGVyZSBhcmUgb2YgYm90aCB0eXBlcyBhdHRhY2hlZCwgdGhlbiBsaW5raW5nIHNob3VsZCBm
YWlsLgorICAgIC8vIE9wZW5HTCBFUyAzLjEwLCA3LjMgUHJvZ3JhbSBPYmplY3RzLCB1bmRlciBM
aW5rUHJvZ3JhbQorICAgIGlmIChpc0NvbXB1dGVTaGFkZXJBdHRhY2hlZCA9PSB0cnVlICYmIG5v
bkNvbXB1dGVTaGFkZXJzQXR0YWNoZWQgPT0gdHJ1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBF
cnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIG1JbmZvTG9nIDw8ICJCb3RoIGEgY29tcHV0ZSBh
bmQgbm9uLWNvbXB1dGUgc2hhZGVycyBhcmUgYXR0YWNoZWQgdG8gdGhlIHNhbWUgcHJvZ3JhbS4i
OworICAgICAgICByZXR1cm4gTm9FcnJvcigpOwogICAgIH0KLSAgICBBU1NFUlQobURhdGEubUF0
dGFjaGVkVmVydGV4U2hhZGVyLT5nZXRUeXBlKCkgPT0gR0xfVkVSVEVYX1NIQURFUik7CiAKLSAg
ICBpZiAoIWxpbmtBdHRyaWJ1dGVzKGRhdGEsIG1JbmZvTG9nLCBtQXR0cmlidXRlQmluZGluZ3Ms
IG1EYXRhLm1BdHRhY2hlZFZlcnRleFNoYWRlcikpCisgICAgaWYgKG1TdGF0ZS5tQXR0YWNoZWRD
b21wdXRlU2hhZGVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEVycm9yKEdMX05PX0VSUk9SKTsK
LSAgICB9CisgICAgICAgIGlmICghbVN0YXRlLm1BdHRhY2hlZENvbXB1dGVTaGFkZXItPmlzQ29t
cGlsZWQoKSkKKyAgICAgICAgeworICAgICAgICAgICAgbUluZm9Mb2cgPDwgIkF0dGFjaGVkIGNv
bXB1dGUgc2hhZGVyIGlzIG5vdCBjb21waWxlZC4iOworICAgICAgICAgICAgcmV0dXJuIE5vRXJy
b3IoKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQobVN0YXRlLm1BdHRhY2hlZENvbXB1dGVT
aGFkZXItPmdldFR5cGUoKSA9PSBHTF9DT01QVVRFX1NIQURFUik7CiAKLSAgICBpZiAoIWxpbmtW
YXJ5aW5ncyhtSW5mb0xvZywgbURhdGEubUF0dGFjaGVkVmVydGV4U2hhZGVyLCBtRGF0YS5tQXR0
YWNoZWRGcmFnbWVudFNoYWRlcikpCi0gICAgewotICAgICAgICByZXR1cm4gRXJyb3IoR0xfTk9f
RVJST1IpOwotICAgIH0KKyAgICAgICAgbVN0YXRlLm1Db21wdXRlU2hhZGVyTG9jYWxTaXplID0g
bVN0YXRlLm1BdHRhY2hlZENvbXB1dGVTaGFkZXItPmdldFdvcmtHcm91cFNpemUoKTsKIAotICAg
IGlmICghbGlua1VuaWZvcm1zKG1JbmZvTG9nLCAqZGF0YS5jYXBzKSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBFcnJvcihHTF9OT19FUlJPUik7Ci0gICAgfQorICAgICAgICAvLyBHTFNMIEVTIDMu
MTAsIDQuNC4xLjEgQ29tcHV0ZSBTaGFkZXIgSW5wdXRzCisgICAgICAgIC8vIElmIHRoZSB3b3Jr
IGdyb3VwIHNpemUgaXMgbm90IHNwZWNpZmllZCwgYSBsaW5rIHRpbWUgZXJyb3Igc2hvdWxkIG9j
Y3VyLgorICAgICAgICBpZiAoIW1TdGF0ZS5tQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZS5pc0RlY2xh
cmVkKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1JbmZvTG9nIDw8ICJXb3JrIGdyb3VwIHNp
emUgaXMgbm90IHNwZWNpZmllZC4iOworICAgICAgICAgICAgcmV0dXJuIE5vRXJyb3IoKTsKKyAg
ICAgICAgfQogCi0gICAgaWYgKCFsaW5rVW5pZm9ybUJsb2NrcyhtSW5mb0xvZywgKmRhdGEuY2Fw
cykpCi0gICAgewotICAgICAgICByZXR1cm4gRXJyb3IoR0xfTk9fRVJST1IpOwotICAgIH0KKyAg
ICAgICAgaWYgKCFsaW5rVW5pZm9ybXMobUluZm9Mb2csIGNhcHMsIG1Vbmlmb3JtQmluZGluZ3Mp
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gTm9FcnJvcigpOworICAgICAgICB9CiAK
LSAgICBjb25zdCBhdXRvICZtZXJnZWRWYXJ5aW5ncyA9IGdldE1lcmdlZFZhcnlpbmdzKCk7Cisg
ICAgICAgIGlmICghbGlua1VuaWZvcm1CbG9ja3MobUluZm9Mb2csIGNhcHMpKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gTm9FcnJvcigpOworICAgICAgICB9CiAKLSAgICBpZiAoIWxp
bmtWYWxpZGF0ZVRyYW5zZm9ybUZlZWRiYWNrKG1JbmZvTG9nLCBtZXJnZWRWYXJ5aW5ncywgKmRh
dGEuY2FwcykpCisgICAgICAgIHJ4OjpMaW5rUmVzdWx0IHJlc3VsdCA9IG1Qcm9ncmFtLT5saW5r
KGRhdGEsIG1JbmZvTG9nKTsKKworICAgICAgICBpZiAocmVzdWx0LmVycm9yLmlzRXJyb3IoKSB8
fCAhcmVzdWx0LmxpbmtTdWNjZXNzKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gcmVz
dWx0LmVycm9yOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKICAgICB7Ci0gICAgICAgIHJl
dHVybiBFcnJvcihHTF9OT19FUlJPUik7Ci0gICAgfQorICAgICAgICBpZiAoIW1TdGF0ZS5tQXR0
YWNoZWRGcmFnbWVudFNoYWRlciB8fCAhbVN0YXRlLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyLT5p
c0NvbXBpbGVkKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBOb0Vycm9yKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgQVNTRVJUKG1TdGF0ZS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlci0+
Z2V0VHlwZSgpID09IEdMX0ZSQUdNRU5UX1NIQURFUik7CiAKLSAgICBsaW5rT3V0cHV0VmFyaWFi
bGVzKCk7CisgICAgICAgIGlmICghbVN0YXRlLm1BdHRhY2hlZFZlcnRleFNoYWRlciB8fCAhbVN0
YXRlLm1BdHRhY2hlZFZlcnRleFNoYWRlci0+aXNDb21waWxlZCgpKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gTm9FcnJvcigpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVChtU3Rh
dGUubUF0dGFjaGVkVmVydGV4U2hhZGVyLT5nZXRUeXBlKCkgPT0gR0xfVkVSVEVYX1NIQURFUik7
CiAKLSAgICByeDo6TGlua1Jlc3VsdCByZXN1bHQgPSBtUHJvZ3JhbS0+bGluayhkYXRhLCBtSW5m
b0xvZyk7Ci0gICAgaWYgKHJlc3VsdC5lcnJvci5pc0Vycm9yKCkgfHwgIXJlc3VsdC5saW5rU3Vj
Y2VzcykKLSAgICB7Ci0gICAgICAgIHJldHVybiByZXN1bHQuZXJyb3I7Ci0gICAgfQorICAgICAg
ICBpZiAobVN0YXRlLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyLT5nZXRTaGFkZXJWZXJzaW9uKCkg
IT0KKyAgICAgICAgICAgIG1TdGF0ZS5tQXR0YWNoZWRWZXJ0ZXhTaGFkZXItPmdldFNoYWRlclZl
cnNpb24oKSkKKyAgICAgICAgeworICAgICAgICAgICAgbUluZm9Mb2cgPDwgIkZyYWdtZW50IHNo
YWRlciB2ZXJzaW9uIGRvZXMgbm90IG1hdGNoIHZlcnRleCBzaGFkZXIgdmVyc2lvbi4iOworICAg
ICAgICAgICAgcmV0dXJuIE5vRXJyb3IoKTsKKyAgICAgICAgfQogCi0gICAgZ2F0aGVyVHJhbnNm
b3JtRmVlZGJhY2tWYXJ5aW5ncyhtZXJnZWRWYXJ5aW5ncyk7Ci0gICAgZ2F0aGVySW50ZXJmYWNl
QmxvY2tJbmZvKCk7CisgICAgICAgIGlmICghbGlua0F0dHJpYnV0ZXMoZGF0YSwgbUluZm9Mb2cs
IG1BdHRyaWJ1dGVCaW5kaW5ncywgbVN0YXRlLm1BdHRhY2hlZFZlcnRleFNoYWRlcikpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBOb0Vycm9yKCk7CisgICAgICAgIH0KIAotICAgIG1M
aW5rZWQgPSB0cnVlOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwotfQorICAg
ICAgICBpZiAoIWxpbmtWYXJ5aW5ncyhtSW5mb0xvZywgbVN0YXRlLm1BdHRhY2hlZFZlcnRleFNo
YWRlciwgbVN0YXRlLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyKSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIE5vRXJyb3IoKTsKKyAgICAgICAgfQogCi1pbnQgQXR0cmlidXRlQmluZGlu
Z3M6OmdldEF0dHJpYnV0ZUJpbmRpbmcoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0Ci17
Ci0gICAgZm9yIChpbnQgbG9jYXRpb24gPSAwOyBsb2NhdGlvbiA8IE1BWF9WRVJURVhfQVRUUklC
UzsgbG9jYXRpb24rKykKLSAgICB7Ci0gICAgICAgIGlmIChtQXR0cmlidXRlQmluZGluZ1tsb2Nh
dGlvbl0uZmluZChuYW1lKSAhPSBtQXR0cmlidXRlQmluZGluZ1tsb2NhdGlvbl0uZW5kKCkpCisg
ICAgICAgIGlmICghbGlua1VuaWZvcm1zKG1JbmZvTG9nLCBjYXBzLCBtVW5pZm9ybUJpbmRpbmdz
KSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9uOworICAgICAgICAgICAg
cmV0dXJuIE5vRXJyb3IoKTsKICAgICAgICAgfQorCisgICAgICAgIGlmICghbGlua1VuaWZvcm1C
bG9ja3MobUluZm9Mb2csIGNhcHMpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gTm9F
cnJvcigpOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgYXV0byAmbWVyZ2VkVmFyeWluZ3Mg
PSBnZXRNZXJnZWRWYXJ5aW5ncygpOworCisgICAgICAgIGlmICghbGlua1ZhbGlkYXRlVHJhbnNm
b3JtRmVlZGJhY2sobUluZm9Mb2csIG1lcmdlZFZhcnlpbmdzLCBjYXBzKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIE5vRXJyb3IoKTsKKyAgICAgICAgfQorCisgICAgICAgIGxpbmtP
dXRwdXRWYXJpYWJsZXMoKTsKKworICAgICAgICByeDo6TGlua1Jlc3VsdCByZXN1bHQgPSBtUHJv
Z3JhbS0+bGluayhkYXRhLCBtSW5mb0xvZyk7CisgICAgICAgIGlmIChyZXN1bHQuZXJyb3IuaXNF
cnJvcigpIHx8ICFyZXN1bHQubGlua1N1Y2Nlc3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiByZXN1bHQuZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBnYXRoZXJUcmFuc2Zvcm1G
ZWVkYmFja1ZhcnlpbmdzKG1lcmdlZFZhcnlpbmdzKTsKICAgICB9CiAKLSAgICByZXR1cm4gLTE7
CisgICAgZ2F0aGVySW50ZXJmYWNlQmxvY2tJbmZvKCk7CisKKyAgICBtTGlua2VkID0gdHJ1ZTsK
KyAgICByZXR1cm4gTm9FcnJvcigpOwogfQogCiAvLyBSZXR1cm5zIHRoZSBwcm9ncmFtIG9iamVj
dCB0byBhbiB1bmxpbmtlZCBzdGF0ZSwgYmVmb3JlIHJlLWxpbmtpbmcsIG9yIGF0IGRlc3RydWN0
aW9uCkBAIC01MDMsMjYgKzY3NCwzMyBAQAogewogICAgIGlmIChkZXN0cm95KSAgIC8vIE9iamVj
dCBiZWluZyBkZXN0cnVjdGVkCiAgICAgewotICAgICAgICBpZiAobURhdGEubUF0dGFjaGVkRnJh
Z21lbnRTaGFkZXIpCisgICAgICAgIGlmIChtU3RhdGUubUF0dGFjaGVkRnJhZ21lbnRTaGFkZXIp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIG1EYXRhLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyLT5y
ZWxlYXNlKCk7Ci0gICAgICAgICAgICBtRGF0YS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlciA9IG51
bGxwdHI7CisgICAgICAgICAgICBtU3RhdGUubUF0dGFjaGVkRnJhZ21lbnRTaGFkZXItPnJlbGVh
c2UoKTsKKyAgICAgICAgICAgIG1TdGF0ZS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlciA9IG51bGxw
dHI7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobURhdGEubUF0dGFjaGVkVmVydGV4U2hhZGVy
KQorICAgICAgICBpZiAobVN0YXRlLm1BdHRhY2hlZFZlcnRleFNoYWRlcikKICAgICAgICAgewot
ICAgICAgICAgICAgbURhdGEubUF0dGFjaGVkVmVydGV4U2hhZGVyLT5yZWxlYXNlKCk7Ci0gICAg
ICAgICAgICBtRGF0YS5tQXR0YWNoZWRWZXJ0ZXhTaGFkZXIgPSBudWxscHRyOworICAgICAgICAg
ICAgbVN0YXRlLm1BdHRhY2hlZFZlcnRleFNoYWRlci0+cmVsZWFzZSgpOworICAgICAgICAgICAg
bVN0YXRlLm1BdHRhY2hlZFZlcnRleFNoYWRlciA9IG51bGxwdHI7CiAgICAgICAgIH0KKworICAg
ICAgICBpZiAobVN0YXRlLm1BdHRhY2hlZENvbXB1dGVTaGFkZXIpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1TdGF0ZS5tQXR0YWNoZWRDb21wdXRlU2hhZGVyLT5yZWxlYXNlKCk7CisgICAgICAg
ICAgICBtU3RhdGUubUF0dGFjaGVkQ29tcHV0ZVNoYWRlciA9IG51bGxwdHI7CisgICAgICAgIH0K
ICAgICB9CiAKLSAgICBtRGF0YS5tQXR0cmlidXRlcy5jbGVhcigpOwotICAgIG1EYXRhLm1BY3Rp
dmVBdHRyaWJMb2NhdGlvbnNNYXNrLnJlc2V0KCk7Ci0gICAgbURhdGEubVRyYW5zZm9ybUZlZWRi
YWNrVmFyeWluZ1ZhcnMuY2xlYXIoKTsKLSAgICBtRGF0YS5tVW5pZm9ybXMuY2xlYXIoKTsKLSAg
ICBtRGF0YS5tVW5pZm9ybUxvY2F0aW9ucy5jbGVhcigpOwotICAgIG1EYXRhLm1Vbmlmb3JtQmxv
Y2tzLmNsZWFyKCk7Ci0gICAgbURhdGEubU91dHB1dFZhcmlhYmxlcy5jbGVhcigpOworICAgIG1T
dGF0ZS5tQXR0cmlidXRlcy5jbGVhcigpOworICAgIG1TdGF0ZS5tQWN0aXZlQXR0cmliTG9jYXRp
b25zTWFzay5yZXNldCgpOworICAgIG1TdGF0ZS5tVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nVmFy
cy5jbGVhcigpOworICAgIG1TdGF0ZS5tVW5pZm9ybXMuY2xlYXIoKTsKKyAgICBtU3RhdGUubVVu
aWZvcm1Mb2NhdGlvbnMuY2xlYXIoKTsKKyAgICBtU3RhdGUubVVuaWZvcm1CbG9ja3MuY2xlYXIo
KTsKKyAgICBtU3RhdGUubU91dHB1dFZhcmlhYmxlcy5jbGVhcigpOworICAgIG1TdGF0ZS5tQ29t
cHV0ZVNoYWRlckxvY2FsU2l6ZS5maWxsKDEpOwogCiAgICAgbVZhbGlkYXRlZCA9IGZhbHNlOwog
CkBAIC01NjYsMjIgKzc0NCwyNiBAQAogICAgICAgICByZXR1cm4gRXJyb3IoR0xfTk9fRVJST1Ip
OwogICAgIH0KIAorICAgIG1TdGF0ZS5tQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZVswXSA9IHN0cmVh
bS5yZWFkSW50PGludD4oKTsKKyAgICBtU3RhdGUubUNvbXB1dGVTaGFkZXJMb2NhbFNpemVbMV0g
PSBzdHJlYW0ucmVhZEludDxpbnQ+KCk7CisgICAgbVN0YXRlLm1Db21wdXRlU2hhZGVyTG9jYWxT
aXplWzJdID0gc3RyZWFtLnJlYWRJbnQ8aW50PigpOworCiAgICAgc3RhdGljX2Fzc2VydChNQVhf
VkVSVEVYX0FUVFJJQlMgPD0gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpICogOCwKICAgICAgICAgICAg
ICAgICAgICJUb28gbWFueSB2ZXJ0ZXggYXR0cmlicyBmb3IgbWFzayIpOwotICAgIG1EYXRhLm1B
Y3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrID0gc3RyZWFtLnJlYWRJbnQ8dW5zaWduZWQgbG9uZz4o
KTsKKyAgICBtU3RhdGUubUFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2sgPSBzdHJlYW0ucmVhZElu
dDx1bnNpZ25lZCBsb25nPigpOwogCiAgICAgdW5zaWduZWQgaW50IGF0dHJpYkNvdW50ID0gc3Ry
ZWFtLnJlYWRJbnQ8dW5zaWduZWQgaW50PigpOwotICAgIEFTU0VSVChtRGF0YS5tQXR0cmlidXRl
cy5lbXB0eSgpKTsKKyAgICBBU1NFUlQobVN0YXRlLm1BdHRyaWJ1dGVzLmVtcHR5KCkpOwogICAg
IGZvciAodW5zaWduZWQgaW50IGF0dHJpYkluZGV4ID0gMDsgYXR0cmliSW5kZXggPCBhdHRyaWJD
b3VudDsgKythdHRyaWJJbmRleCkKICAgICB7CiAgICAgICAgIHNoOjpBdHRyaWJ1dGUgYXR0cmli
OwogICAgICAgICBMb2FkU2hhZGVyVmFyKCZzdHJlYW0sICZhdHRyaWIpOwogICAgICAgICBhdHRy
aWIubG9jYXRpb24gPSBzdHJlYW0ucmVhZEludDxpbnQ+KCk7Ci0gICAgICAgIG1EYXRhLm1BdHRy
aWJ1dGVzLnB1c2hfYmFjayhhdHRyaWIpOworICAgICAgICBtU3RhdGUubUF0dHJpYnV0ZXMucHVz
aF9iYWNrKGF0dHJpYik7CiAgICAgfQogCiAgICAgdW5zaWduZWQgaW50IHVuaWZvcm1Db3VudCA9
IHN0cmVhbS5yZWFkSW50PHVuc2lnbmVkIGludD4oKTsKLSAgICBBU1NFUlQobURhdGEubVVuaWZv
cm1zLmVtcHR5KCkpOworICAgIEFTU0VSVChtU3RhdGUubVVuaWZvcm1zLmVtcHR5KCkpOwogICAg
IGZvciAodW5zaWduZWQgaW50IHVuaWZvcm1JbmRleCA9IDA7IHVuaWZvcm1JbmRleCA8IHVuaWZv
cm1Db3VudDsgKyt1bmlmb3JtSW5kZXgpCiAgICAgewogICAgICAgICBMaW5rZWRVbmlmb3JtIHVu
aWZvcm07CkBAIC01OTMsMTEgKzc3NSwxMSBAQAogICAgICAgICB1bmlmb3JtLmJsb2NrSW5mby5t
YXRyaXhTdHJpZGUgICAgID0gc3RyZWFtLnJlYWRJbnQ8aW50PigpOwogICAgICAgICB1bmlmb3Jt
LmJsb2NrSW5mby5pc1Jvd01ham9yTWF0cml4ID0gc3RyZWFtLnJlYWRCb29sKCk7CiAKLSAgICAg
ICAgbURhdGEubVVuaWZvcm1zLnB1c2hfYmFjayh1bmlmb3JtKTsKKyAgICAgICAgbVN0YXRlLm1V
bmlmb3Jtcy5wdXNoX2JhY2sodW5pZm9ybSk7CiAgICAgfQogCiAgICAgY29uc3QgdW5zaWduZWQg
aW50IHVuaWZvcm1JbmRleENvdW50ID0gc3RyZWFtLnJlYWRJbnQ8dW5zaWduZWQgaW50PigpOwot
ICAgIEFTU0VSVChtRGF0YS5tVW5pZm9ybUxvY2F0aW9ucy5lbXB0eSgpKTsKKyAgICBBU1NFUlQo
bVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zLmVtcHR5KCkpOwogICAgIGZvciAodW5zaWduZWQgaW50
IHVuaWZvcm1JbmRleEluZGV4ID0gMDsgdW5pZm9ybUluZGV4SW5kZXggPCB1bmlmb3JtSW5kZXhD
b3VudDsKICAgICAgICAgIHVuaWZvcm1JbmRleEluZGV4KyspCiAgICAgewpAQCAtNjA1LDEyICs3
ODcsMTQgQEAKICAgICAgICAgc3RyZWFtLnJlYWRTdHJpbmcoJnZhcmlhYmxlLm5hbWUpOwogICAg
ICAgICBzdHJlYW0ucmVhZEludCgmdmFyaWFibGUuZWxlbWVudCk7CiAgICAgICAgIHN0cmVhbS5y
ZWFkSW50KCZ2YXJpYWJsZS5pbmRleCk7CisgICAgICAgIHN0cmVhbS5yZWFkQm9vbCgmdmFyaWFi
bGUudXNlZCk7CisgICAgICAgIHN0cmVhbS5yZWFkQm9vbCgmdmFyaWFibGUuaWdub3JlZCk7CiAK
LSAgICAgICAgbURhdGEubVVuaWZvcm1Mb2NhdGlvbnMucHVzaF9iYWNrKHZhcmlhYmxlKTsKKyAg
ICAgICAgbVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zLnB1c2hfYmFjayh2YXJpYWJsZSk7CiAgICAg
fQogCiAgICAgdW5zaWduZWQgaW50IHVuaWZvcm1CbG9ja0NvdW50ID0gc3RyZWFtLnJlYWRJbnQ8
dW5zaWduZWQgaW50PigpOwotICAgIEFTU0VSVChtRGF0YS5tVW5pZm9ybUJsb2Nrcy5lbXB0eSgp
KTsKKyAgICBBU1NFUlQobVN0YXRlLm1Vbmlmb3JtQmxvY2tzLmVtcHR5KCkpOwogICAgIGZvciAo
dW5zaWduZWQgaW50IHVuaWZvcm1CbG9ja0luZGV4ID0gMDsgdW5pZm9ybUJsb2NrSW5kZXggPCB1
bmlmb3JtQmxvY2tDb3VudDsKICAgICAgICAgICsrdW5pZm9ybUJsb2NrSW5kZXgpCiAgICAgewpA
QCAtNjI4LDExICs4MTIsMTEgQEAKICAgICAgICAgICAgIHVuaWZvcm1CbG9jay5tZW1iZXJVbmlm
b3JtSW5kZXhlcy5wdXNoX2JhY2soc3RyZWFtLnJlYWRJbnQ8dW5zaWduZWQgaW50PigpKTsKICAg
ICAgICAgfQogCi0gICAgICAgIG1EYXRhLm1Vbmlmb3JtQmxvY2tzLnB1c2hfYmFjayh1bmlmb3Jt
QmxvY2spOworICAgICAgICBtU3RhdGUubVVuaWZvcm1CbG9ja3MucHVzaF9iYWNrKHVuaWZvcm1C
bG9jayk7CiAgICAgfQogCiAgICAgdW5zaWduZWQgaW50IHRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
Z0NvdW50ID0gc3RyZWFtLnJlYWRJbnQ8dW5zaWduZWQgaW50PigpOwotICAgIEFTU0VSVChtRGF0
YS5tVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nVmFycy5lbXB0eSgpKTsKKyAgICBBU1NFUlQobVN0
YXRlLm1UcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdWYXJzLmVtcHR5KCkpOwogICAgIGZvciAodW5z
aWduZWQgaW50IHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ0luZGV4ID0gMDsKICAgICAgICAgdHJh
bnNmb3JtRmVlZGJhY2tWYXJ5aW5nSW5kZXggPCB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdDb3Vu
dDsKICAgICAgICAgKyt0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdJbmRleCkKQEAgLTY0MiwxMCAr
ODI2LDEwIEBACiAgICAgICAgIHN0cmVhbS5yZWFkSW50KCZ2YXJ5aW5nLnR5cGUpOwogICAgICAg
ICBzdHJlYW0ucmVhZFN0cmluZygmdmFyeWluZy5uYW1lKTsKIAotICAgICAgICBtRGF0YS5tVHJh
bnNmb3JtRmVlZGJhY2tWYXJ5aW5nVmFycy5wdXNoX2JhY2sodmFyeWluZyk7CisgICAgICAgIG1T
dGF0ZS5tVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nVmFycy5wdXNoX2JhY2sodmFyeWluZyk7CiAg
ICAgfQogCi0gICAgc3RyZWFtLnJlYWRJbnQoJm1EYXRhLm1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZl
ck1vZGUpOworICAgIHN0cmVhbS5yZWFkSW50KCZtU3RhdGUubVRyYW5zZm9ybUZlZWRiYWNrQnVm
ZmVyTW9kZSk7CiAKICAgICB1bnNpZ25lZCBpbnQgb3V0cHV0VmFyQ291bnQgPSBzdHJlYW0ucmVh
ZEludDx1bnNpZ25lZCBpbnQ+KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgb3V0cHV0SW5kZXgg
PSAwOyBvdXRwdXRJbmRleCA8IG91dHB1dFZhckNvdW50OyArK291dHB1dEluZGV4KQpAQCAtNjU1
LDcgKzgzOSw3IEBACiAgICAgICAgIHN0cmVhbS5yZWFkSW50KCZsb2NhdGlvbkRhdGEuZWxlbWVu
dCk7CiAgICAgICAgIHN0cmVhbS5yZWFkSW50KCZsb2NhdGlvbkRhdGEuaW5kZXgpOwogICAgICAg
ICBzdHJlYW0ucmVhZFN0cmluZygmbG9jYXRpb25EYXRhLm5hbWUpOwotICAgICAgICBtRGF0YS5t
T3V0cHV0VmFyaWFibGVzW2xvY2F0aW9uSW5kZXhdID0gbG9jYXRpb25EYXRhOworICAgICAgICBt
U3RhdGUubU91dHB1dFZhcmlhYmxlc1tsb2NhdGlvbkluZGV4XSA9IGxvY2F0aW9uRGF0YTsKICAg
ICB9CiAKICAgICBzdHJlYW0ucmVhZEludCgmbVNhbXBsZXJVbmlmb3JtUmFuZ2Uuc3RhcnQpOwpA
QCAtNjg1LDE3ICs4NjksMjEgQEAKICAgICBzdHJlYW0ud3JpdGVJbnQoQU5HTEVfTUlOT1JfVkVS
U0lPTik7CiAgICAgc3RyZWFtLndyaXRlQnl0ZXMocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNp
Z25lZCBjaGFyKj4oQU5HTEVfQ09NTUlUX0hBU0gpLCBBTkdMRV9DT01NSVRfSEFTSF9TSVpFKTsK
IAotICAgIHN0cmVhbS53cml0ZUludChtRGF0YS5tQWN0aXZlQXR0cmliTG9jYXRpb25zTWFzay50
b191bG9uZygpKTsKKyAgICBzdHJlYW0ud3JpdGVJbnQobVN0YXRlLm1Db21wdXRlU2hhZGVyTG9j
YWxTaXplWzBdKTsKKyAgICBzdHJlYW0ud3JpdGVJbnQobVN0YXRlLm1Db21wdXRlU2hhZGVyTG9j
YWxTaXplWzFdKTsKKyAgICBzdHJlYW0ud3JpdGVJbnQobVN0YXRlLm1Db21wdXRlU2hhZGVyTG9j
YWxTaXplWzJdKTsKIAotICAgIHN0cmVhbS53cml0ZUludChtRGF0YS5tQXR0cmlidXRlcy5zaXpl
KCkpOwotICAgIGZvciAoY29uc3Qgc2g6OkF0dHJpYnV0ZSAmYXR0cmliIDogbURhdGEubUF0dHJp
YnV0ZXMpCisgICAgc3RyZWFtLndyaXRlSW50KG1TdGF0ZS5tQWN0aXZlQXR0cmliTG9jYXRpb25z
TWFzay50b191bG9uZygpKTsKKworICAgIHN0cmVhbS53cml0ZUludChtU3RhdGUubUF0dHJpYnV0
ZXMuc2l6ZSgpKTsKKyAgICBmb3IgKGNvbnN0IHNoOjpBdHRyaWJ1dGUgJmF0dHJpYiA6IG1TdGF0
ZS5tQXR0cmlidXRlcykKICAgICB7CiAgICAgICAgIFdyaXRlU2hhZGVyVmFyKCZzdHJlYW0sIGF0
dHJpYik7CiAgICAgICAgIHN0cmVhbS53cml0ZUludChhdHRyaWIubG9jYXRpb24pOwogICAgIH0K
IAotICAgIHN0cmVhbS53cml0ZUludChtRGF0YS5tVW5pZm9ybXMuc2l6ZSgpKTsKLSAgICBmb3Ig
KGNvbnN0IGdsOjpMaW5rZWRVbmlmb3JtICZ1bmlmb3JtIDogbURhdGEubVVuaWZvcm1zKQorICAg
IHN0cmVhbS53cml0ZUludChtU3RhdGUubVVuaWZvcm1zLnNpemUoKSk7CisgICAgZm9yIChjb25z
dCBnbDo6TGlua2VkVW5pZm9ybSAmdW5pZm9ybSA6IG1TdGF0ZS5tVW5pZm9ybXMpCiAgICAgewog
ICAgICAgICBXcml0ZVNoYWRlclZhcigmc3RyZWFtLCB1bmlmb3JtKTsKIApAQCAtNzA4LDE2ICs4
OTYsMTggQEAKICAgICAgICAgc3RyZWFtLndyaXRlSW50KHVuaWZvcm0uYmxvY2tJbmZvLmlzUm93
TWFqb3JNYXRyaXgpOwogICAgIH0KIAotICAgIHN0cmVhbS53cml0ZUludChtRGF0YS5tVW5pZm9y
bUxvY2F0aW9ucy5zaXplKCkpOwotICAgIGZvciAoY29uc3QgYXV0byAmdmFyaWFibGUgOiBtRGF0
YS5tVW5pZm9ybUxvY2F0aW9ucykKKyAgICBzdHJlYW0ud3JpdGVJbnQobVN0YXRlLm1Vbmlmb3Jt
TG9jYXRpb25zLnNpemUoKSk7CisgICAgZm9yIChjb25zdCBhdXRvICZ2YXJpYWJsZSA6IG1TdGF0
ZS5tVW5pZm9ybUxvY2F0aW9ucykKICAgICB7CiAgICAgICAgIHN0cmVhbS53cml0ZVN0cmluZyh2
YXJpYWJsZS5uYW1lKTsKICAgICAgICAgc3RyZWFtLndyaXRlSW50KHZhcmlhYmxlLmVsZW1lbnQp
OwogICAgICAgICBzdHJlYW0ud3JpdGVJbnQodmFyaWFibGUuaW5kZXgpOworICAgICAgICBzdHJl
YW0ud3JpdGVJbnQodmFyaWFibGUudXNlZCk7CisgICAgICAgIHN0cmVhbS53cml0ZUludCh2YXJp
YWJsZS5pZ25vcmVkKTsKICAgICB9CiAKLSAgICBzdHJlYW0ud3JpdGVJbnQobURhdGEubVVuaWZv
cm1CbG9ja3Muc2l6ZSgpKTsKLSAgICBmb3IgKGNvbnN0IFVuaWZvcm1CbG9jayAmdW5pZm9ybUJs
b2NrIDogbURhdGEubVVuaWZvcm1CbG9ja3MpCisgICAgc3RyZWFtLndyaXRlSW50KG1TdGF0ZS5t
VW5pZm9ybUJsb2Nrcy5zaXplKCkpOworICAgIGZvciAoY29uc3QgVW5pZm9ybUJsb2NrICZ1bmlm
b3JtQmxvY2sgOiBtU3RhdGUubVVuaWZvcm1CbG9ja3MpCiAgICAgewogICAgICAgICBzdHJlYW0u
d3JpdGVTdHJpbmcodW5pZm9ybUJsb2NrLm5hbWUpOwogICAgICAgICBzdHJlYW0ud3JpdGVJbnQo
dW5pZm9ybUJsb2NrLmlzQXJyYXkpOwpAQCAtNzM0LDggKzkyNCw4IEBACiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBzdHJlYW0ud3JpdGVJbnQobURhdGEubVRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
Z1ZhcnMuc2l6ZSgpKTsKLSAgICBmb3IgKGNvbnN0IHNoOjpWYXJ5aW5nICZ2YXJ5aW5nIDogbURh
dGEubVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ1ZhcnMpCisgICAgc3RyZWFtLndyaXRlSW50KG1T
dGF0ZS5tVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nVmFycy5zaXplKCkpOworICAgIGZvciAoY29u
c3Qgc2g6OlZhcnlpbmcgJnZhcnlpbmcgOiBtU3RhdGUubVRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
Z1ZhcnMpCiAgICAgewogICAgICAgICBzdHJlYW0ud3JpdGVJbnQodmFyeWluZy5hcnJheVNpemUp
OwogICAgICAgICBzdHJlYW0ud3JpdGVJbnQodmFyeWluZy50eXBlKTsKQEAgLTc0MiwxMyArOTMy
LDEzIEBACiAgICAgICAgIHN0cmVhbS53cml0ZVN0cmluZyh2YXJ5aW5nLm5hbWUpOwogICAgIH0K
IAotICAgIHN0cmVhbS53cml0ZUludChtRGF0YS5tVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2Rl
KTsKKyAgICBzdHJlYW0ud3JpdGVJbnQobVN0YXRlLm1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1v
ZGUpOwogCi0gICAgc3RyZWFtLndyaXRlSW50KG1EYXRhLm1PdXRwdXRWYXJpYWJsZXMuc2l6ZSgp
KTsKLSAgICBmb3IgKGNvbnN0IGF1dG8gJm91dHB1dFBhaXIgOiBtRGF0YS5tT3V0cHV0VmFyaWFi
bGVzKQorICAgIHN0cmVhbS53cml0ZUludChtU3RhdGUubU91dHB1dFZhcmlhYmxlcy5zaXplKCkp
OworICAgIGZvciAoY29uc3QgYXV0byAmb3V0cHV0UGFpciA6IG1TdGF0ZS5tT3V0cHV0VmFyaWFi
bGVzKQogICAgIHsKICAgICAgICAgc3RyZWFtLndyaXRlSW50KG91dHB1dFBhaXIuZmlyc3QpOwot
ICAgICAgICBzdHJlYW0ud3JpdGVJbnQob3V0cHV0UGFpci5zZWNvbmQuZWxlbWVudCk7CisgICAg
ICAgIHN0cmVhbS53cml0ZUludE9yTmVnT25lKG91dHB1dFBhaXIuc2Vjb25kLmVsZW1lbnQpOwog
ICAgICAgICBzdHJlYW0ud3JpdGVJbnQob3V0cHV0UGFpci5zZWNvbmQuaW5kZXgpOwogICAgICAg
ICBzdHJlYW0ud3JpdGVTdHJpbmcob3V0cHV0UGFpci5zZWNvbmQubmFtZSk7CiAgICAgfQpAQCAt
NzYzLDcgKzk1Myw3IEBACiAgICAgfQogCiAgICAgR0xzaXplaSBzdHJlYW1MZW5ndGggICA9IHN0
YXRpY19jYXN0PEdMc2l6ZWk+KHN0cmVhbS5sZW5ndGgoKSk7Ci0gICAgY29uc3Qgdm9pZCAqc3Ry
ZWFtRGF0YSA9IHN0cmVhbS5kYXRhKCk7CisgICAgY29uc3Qgdm9pZCAqc3RyZWFtU3RhdGUgPSBz
dHJlYW0uZGF0YSgpOwogCiAgICAgaWYgKHN0cmVhbUxlbmd0aCA+IGJ1ZlNpemUpCiAgICAgewpA
QCAtNzgyLDcgKzk3Miw3IEBACiAgICAgewogICAgICAgICBjaGFyICpwdHIgPSByZWludGVycHJl
dF9jYXN0PGNoYXIqPihiaW5hcnkpOwogCi0gICAgICAgIG1lbWNweShwdHIsIHN0cmVhbURhdGEs
IHN0cmVhbUxlbmd0aCk7CisgICAgICAgIG1lbWNweShwdHIsIHN0cmVhbVN0YXRlLCBzdHJlYW1M
ZW5ndGgpOwogICAgICAgICBwdHIgKz0gc3RyZWFtTGVuZ3RoOwogCiAgICAgICAgIEFTU0VSVChw
dHIgLSBzdHJlYW1MZW5ndGggPT0gYmluYXJ5KTsKQEAgLTgxMiwxMiArMTAwMiwxMiBAQAogewog
ICAgIC8vIFRPRE8oam1hZGlsbCkgOiByZXBsYWNlIHdpdGggZGlydHkgYml0cwogICAgIG1Qcm9n
cmFtLT5zZXRCaW5hcnlSZXRyaWV2YWJsZUhpbnQocmV0cmlldmFibGUpOwotICAgIG1EYXRhLm1C
aW5hcnlSZXRyaWV2ZWFibGVIaW50ID0gcmV0cmlldmFibGU7CisgICAgbVN0YXRlLm1CaW5hcnlS
ZXRyaWV2ZWFibGVIaW50ID0gcmV0cmlldmFibGU7CiB9CiAKIGJvb2wgUHJvZ3JhbTo6Z2V0Qmlu
YXJ5UmV0cmlldmFibGVIaW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbURhdGEubUJpbmFyeVJl
dHJpZXZlYWJsZUhpbnQ7CisgICAgcmV0dXJuIG1TdGF0ZS5tQmluYXJ5UmV0cmlldmVhYmxlSGlu
dDsKIH0KIAogdm9pZCBQcm9ncmFtOjpyZWxlYXNlKCkKQEAgLTg1NCwyNCArMTA0NCwzMyBAQAog
ewogICAgIGludCB0b3RhbCA9IDA7CiAKLSAgICBpZiAobURhdGEubUF0dGFjaGVkVmVydGV4U2hh
ZGVyKQorICAgIGlmIChtU3RhdGUubUF0dGFjaGVkQ29tcHV0ZVNoYWRlcikKICAgICB7CiAgICAg
ICAgIGlmICh0b3RhbCA8IG1heENvdW50KQogICAgICAgICB7Ci0gICAgICAgICAgICBzaGFkZXJz
W3RvdGFsXSA9IG1EYXRhLm1BdHRhY2hlZFZlcnRleFNoYWRlci0+Z2V0SGFuZGxlKCk7CisgICAg
ICAgICAgICBzaGFkZXJzW3RvdGFsXSA9IG1TdGF0ZS5tQXR0YWNoZWRDb21wdXRlU2hhZGVyLT5n
ZXRIYW5kbGUoKTsKICAgICAgICAgICAgIHRvdGFsKys7CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBpZiAobURhdGEubUF0dGFjaGVkRnJhZ21lbnRTaGFkZXIpCisgICAgaWYgKG1TdGF0ZS5tQXR0
YWNoZWRWZXJ0ZXhTaGFkZXIpCiAgICAgewogICAgICAgICBpZiAodG90YWwgPCBtYXhDb3VudCkK
ICAgICAgICAgewotICAgICAgICAgICAgc2hhZGVyc1t0b3RhbF0gPSBtRGF0YS5tQXR0YWNoZWRG
cmFnbWVudFNoYWRlci0+Z2V0SGFuZGxlKCk7CisgICAgICAgICAgICBzaGFkZXJzW3RvdGFsXSA9
IG1TdGF0ZS5tQXR0YWNoZWRWZXJ0ZXhTaGFkZXItPmdldEhhbmRsZSgpOwogICAgICAgICAgICAg
dG90YWwrKzsKICAgICAgICAgfQogICAgIH0KIAorICAgIGlmIChtU3RhdGUubUF0dGFjaGVkRnJh
Z21lbnRTaGFkZXIpCisgICAgeworICAgICAgICBpZiAodG90YWwgPCBtYXhDb3VudCkKKyAgICAg
ICAgeworICAgICAgICAgICAgc2hhZGVyc1t0b3RhbF0gPSBtU3RhdGUubUF0dGFjaGVkRnJhZ21l
bnRTaGFkZXItPmdldEhhbmRsZSgpOworICAgICAgICAgICAgdG90YWwrKzsKKyAgICAgICAgfQor
ICAgIH0KKwogICAgIGlmIChjb3VudCkKICAgICB7CiAgICAgICAgICpjb3VudCA9IHRvdGFsOwpA
QCAtODgwLDcgKzEwNzksNyBAQAogCiBHTHVpbnQgUHJvZ3JhbTo6Z2V0QXR0cmlidXRlTG9jYXRp
b24oY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0CiB7Ci0gICAgZm9yIChjb25zdCBzaDo6
QXR0cmlidXRlICZhdHRyaWJ1dGUgOiBtRGF0YS5tQXR0cmlidXRlcykKKyAgICBmb3IgKGNvbnN0
IHNoOjpBdHRyaWJ1dGUgJmF0dHJpYnV0ZSA6IG1TdGF0ZS5tQXR0cmlidXRlcykKICAgICB7CiAg
ICAgICAgIGlmIChhdHRyaWJ1dGUubmFtZSA9PSBuYW1lICYmIGF0dHJpYnV0ZS5zdGF0aWNVc2Up
CiAgICAgICAgIHsKQEAgLTg5Myw4ICsxMDkyLDggQEAKIAogYm9vbCBQcm9ncmFtOjppc0F0dHJp
YkxvY2F0aW9uQWN0aXZlKHNpemVfdCBhdHRyaWJMb2NhdGlvbikgY29uc3QKIHsKLSAgICBBU1NF
UlQoYXR0cmliTG9jYXRpb24gPCBtRGF0YS5tQWN0aXZlQXR0cmliTG9jYXRpb25zTWFzay5zaXpl
KCkpOwotICAgIHJldHVybiBtRGF0YS5tQWN0aXZlQXR0cmliTG9jYXRpb25zTWFza1thdHRyaWJM
b2NhdGlvbl07CisgICAgQVNTRVJUKGF0dHJpYkxvY2F0aW9uIDwgbVN0YXRlLm1BY3RpdmVBdHRy
aWJMb2NhdGlvbnNNYXNrLnNpemUoKSk7CisgICAgcmV0dXJuIG1TdGF0ZS5tQWN0aXZlQXR0cmli
TG9jYXRpb25zTWFza1thdHRyaWJMb2NhdGlvbl07CiB9CiAKIHZvaWQgUHJvZ3JhbTo6Z2V0QWN0
aXZlQXR0cmlidXRlKEdMdWludCBpbmRleCwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpICpsZW5n
dGgsIEdMaW50ICpzaXplLCBHTGVudW0gKnR5cGUsIEdMY2hhciAqbmFtZSkKQEAgLTkxOCw3ICsx
MTE3LDcgQEAKIAogICAgIHNpemVfdCBhdHRyaWJ1dGVJbmRleCA9IDA7CiAKLSAgICBmb3IgKGNv
bnN0IHNoOjpBdHRyaWJ1dGUgJmF0dHJpYnV0ZSA6IG1EYXRhLm1BdHRyaWJ1dGVzKQorICAgIGZv
ciAoY29uc3Qgc2g6OkF0dHJpYnV0ZSAmYXR0cmlidXRlIDogbVN0YXRlLm1BdHRyaWJ1dGVzKQog
ICAgIHsKICAgICAgICAgLy8gU2tpcCBvdmVyIGluYWN0aXZlIGF0dHJpYnV0ZXMKICAgICAgICAg
aWYgKGF0dHJpYnV0ZS5zdGF0aWNVc2UpCkBAIC05MzEsOCArMTEzMCw4IEBACiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBBU1NFUlQoaW5kZXggPT0gYXR0cmlidXRlSW5kZXggJiYgYXR0cmlidXRl
SW5kZXggPCBtRGF0YS5tQXR0cmlidXRlcy5zaXplKCkpOwotICAgIGNvbnN0IHNoOjpBdHRyaWJ1
dGUgJmF0dHJpYiA9IG1EYXRhLm1BdHRyaWJ1dGVzW2F0dHJpYnV0ZUluZGV4XTsKKyAgICBBU1NF
UlQoaW5kZXggPT0gYXR0cmlidXRlSW5kZXggJiYgYXR0cmlidXRlSW5kZXggPCBtU3RhdGUubUF0
dHJpYnV0ZXMuc2l6ZSgpKTsKKyAgICBjb25zdCBzaDo6QXR0cmlidXRlICZhdHRyaWIgPSBtU3Rh
dGUubUF0dHJpYnV0ZXNbYXR0cmlidXRlSW5kZXhdOwogCiAgICAgaWYgKGJ1ZnNpemUgPiAwKQog
ICAgIHsKQEAgLTk2MSw3ICsxMTYwLDcgQEAKIAogICAgIEdMaW50IGNvdW50ID0gMDsKIAotICAg
IGZvciAoY29uc3Qgc2g6OkF0dHJpYnV0ZSAmYXR0cmliIDogbURhdGEubUF0dHJpYnV0ZXMpCisg
ICAgZm9yIChjb25zdCBzaDo6QXR0cmlidXRlICZhdHRyaWIgOiBtU3RhdGUubUF0dHJpYnV0ZXMp
CiAgICAgewogICAgICAgICBjb3VudCArPSAoYXR0cmliLnN0YXRpY1VzZSA/IDEgOiAwKTsKICAg
ICB9CkBAIC05NzgsNyArMTE3Nyw3IEBACiAKICAgICBzaXplX3QgbWF4TGVuZ3RoID0gMDsKIAot
ICAgIGZvciAoY29uc3Qgc2g6OkF0dHJpYnV0ZSAmYXR0cmliIDogbURhdGEubUF0dHJpYnV0ZXMp
CisgICAgZm9yIChjb25zdCBzaDo6QXR0cmlidXRlICZhdHRyaWIgOiBtU3RhdGUubUF0dHJpYnV0
ZXMpCiAgICAgewogICAgICAgICBpZiAoYXR0cmliLnN0YXRpY1VzZSkKICAgICAgICAgewpAQCAt
OTkzLDcgKzExOTIsNyBAQAogewogICAgIHN0ZDo6c3RyaW5nIGJhc2VOYW1lKG5hbWUpOwogICAg
IHVuc2lnbmVkIGludCBhcnJheUluZGV4ID0gUGFyc2VBbmRTdHJpcEFycmF5SW5kZXgoJmJhc2VO
YW1lKTsKLSAgICBmb3IgKGF1dG8gb3V0cHV0UGFpciA6IG1EYXRhLm1PdXRwdXRWYXJpYWJsZXMp
CisgICAgZm9yIChhdXRvIG91dHB1dFBhaXIgOiBtU3RhdGUubU91dHB1dFZhcmlhYmxlcykKICAg
ICB7CiAgICAgICAgIGNvbnN0IFZhcmlhYmxlTG9jYXRpb24gJm91dHB1dFZhcmlhYmxlID0gb3V0
cHV0UGFpci5zZWNvbmQ7CiAgICAgICAgIGlmIChvdXRwdXRWYXJpYWJsZS5uYW1lID09IGJhc2VO
YW1lICYmIChhcnJheUluZGV4ID09IEdMX0lOVkFMSURfSU5ERVggfHwgYXJyYXlJbmRleCA9PSBv
dXRwdXRWYXJpYWJsZS5lbGVtZW50KSkKQEAgLTEwMTQsOCArMTIxMyw4IEBACiAgICAgaWYgKG1M
aW5rZWQpCiAgICAgewogICAgICAgICAvLyBpbmRleCBtdXN0IGJlIHNtYWxsZXIgdGhhbiBnZXRB
Y3RpdmVVbmlmb3JtQ291bnQoKQotICAgICAgICBBU1NFUlQoaW5kZXggPCBtRGF0YS5tVW5pZm9y
bXMuc2l6ZSgpKTsKLSAgICAgICAgY29uc3QgTGlua2VkVW5pZm9ybSAmdW5pZm9ybSA9IG1EYXRh
Lm1Vbmlmb3Jtc1tpbmRleF07CisgICAgICAgIEFTU0VSVChpbmRleCA8IG1TdGF0ZS5tVW5pZm9y
bXMuc2l6ZSgpKTsKKyAgICAgICAgY29uc3QgTGlua2VkVW5pZm9ybSAmdW5pZm9ybSA9IG1TdGF0
ZS5tVW5pZm9ybXNbaW5kZXhdOwogCiAgICAgICAgIGlmIChidWZzaXplID4gMCkKICAgICAgICAg
ewpAQCAtMTA1OCw3ICsxMjU3LDcgQEAKIHsKICAgICBpZiAobUxpbmtlZCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTGludD4obURhdGEubVVuaWZvcm1zLnNpemUoKSk7Cisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTGludD4obVN0YXRlLm1Vbmlmb3Jtcy5zaXplKCkp
OwogICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtMTA3Miw3ICsxMjcxLDcgQEAKIAogICAgIGlm
IChtTGlua2VkKQogICAgIHsKLSAgICAgICAgZm9yIChjb25zdCBMaW5rZWRVbmlmb3JtICZ1bmlm
b3JtIDogbURhdGEubVVuaWZvcm1zKQorICAgICAgICBmb3IgKGNvbnN0IExpbmtlZFVuaWZvcm0g
JnVuaWZvcm0gOiBtU3RhdGUubVVuaWZvcm1zKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAo
IXVuaWZvcm0ubmFtZS5lbXB0eSgpKQogICAgICAgICAgICAgewpAQCAtMTA5MSw4ICsxMjkwLDgg
QEAKIAogR0xpbnQgUHJvZ3JhbTo6Z2V0QWN0aXZlVW5pZm9ybWkoR0x1aW50IGluZGV4LCBHTGVu
dW0gcG5hbWUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgp
IDwgbURhdGEubVVuaWZvcm1zLnNpemUoKSk7Ci0gICAgY29uc3QgZ2w6OkxpbmtlZFVuaWZvcm0g
JnVuaWZvcm0gPSBtRGF0YS5tVW5pZm9ybXNbaW5kZXhdOworICAgIEFTU0VSVChzdGF0aWNfY2Fz
dDxzaXplX3Q+KGluZGV4KSA8IG1TdGF0ZS5tVW5pZm9ybXMuc2l6ZSgpKTsKKyAgICBjb25zdCBn
bDo6TGlua2VkVW5pZm9ybSAmdW5pZm9ybSA9IG1TdGF0ZS5tVW5pZm9ybXNbaW5kZXhdOwogICAg
IHN3aXRjaCAocG5hbWUpCiAgICAgewogICAgICAgY2FzZSBHTF9VTklGT1JNX1RZUEU6ICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMaW50Pih1bmlmb3JtLnR5cGUpOwpAQCAtMTExMiwyNCAr
MTMxMSwzNCBAQAogCiBib29sIFByb2dyYW06OmlzVmFsaWRVbmlmb3JtTG9jYXRpb24oR0xpbnQg
bG9jYXRpb24pIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHJ4OjpJc0ludGVnZXJDYXN0U2FmZTxHTGlu
dD4obURhdGEubVVuaWZvcm1Mb2NhdGlvbnMuc2l6ZSgpKSk7Ci0gICAgcmV0dXJuIChsb2NhdGlv
biA+PSAwICYmIHN0YXRpY19jYXN0PHNpemVfdD4obG9jYXRpb24pIDwgbURhdGEubVVuaWZvcm1M
b2NhdGlvbnMuc2l6ZSgpKTsKKyAgICBBU1NFUlQoYW5nbGU6OklzVmFsdWVJblJhbmdlRm9yTnVt
ZXJpY1R5cGU8R0xpbnQ+KG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9ucy5zaXplKCkpKTsKKyAgICBy
ZXR1cm4gKGxvY2F0aW9uID49IDAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90Pihsb2NhdGlvbikgPCBt
U3RhdGUubVVuaWZvcm1Mb2NhdGlvbnMuc2l6ZSgpICYmCisgICAgICAgICAgICBtU3RhdGUubVVu
aWZvcm1Mb2NhdGlvbnNbc3RhdGljX2Nhc3Q8c2l6ZV90Pihsb2NhdGlvbildLnVzZWQpOwogfQog
Citib29sIFByb2dyYW06OmlzSWdub3JlZFVuaWZvcm1Mb2NhdGlvbihHTGludCBsb2NhdGlvbikg
Y29uc3QKK3sKKyAgICAvLyBMb2NhdGlvbiBpcyBpZ25vcmVkIGlmIGl0IGlzIC0xIG9yIGl0IHdh
cyBib3VuZCBidXQgbm9uLWV4aXN0YW50IGluIHRoZSBzaGFkZXIgb3Igb3B0aW1pemVkCisgICAg
Ly8gb3V0CisgICAgcmV0dXJuIGxvY2F0aW9uID09IC0xIHx8CisgICAgICAgICAgIChsb2NhdGlv
biA+PSAwICYmIHN0YXRpY19jYXN0PHNpemVfdD4obG9jYXRpb24pIDwgbVN0YXRlLm1Vbmlmb3Jt
TG9jYXRpb25zLnNpemUoKSAmJgorICAgICAgICAgICAgbVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25z
W3N0YXRpY19jYXN0PHNpemVfdD4obG9jYXRpb24pXS5pZ25vcmVkKTsKK30KKwogY29uc3QgTGlu
a2VkVW5pZm9ybSAmUHJvZ3JhbTo6Z2V0VW5pZm9ybUJ5TG9jYXRpb24oR0xpbnQgbG9jYXRpb24p
IGNvbnN0CiB7Ci0gICAgQVNTRVJUKGxvY2F0aW9uID49IDAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90
Pihsb2NhdGlvbikgPCBtRGF0YS5tVW5pZm9ybUxvY2F0aW9ucy5zaXplKCkpOwotICAgIHJldHVy
biBtRGF0YS5tVW5pZm9ybXNbbURhdGEubVVuaWZvcm1Mb2NhdGlvbnNbbG9jYXRpb25dLmluZGV4
XTsKKyAgICBBU1NFUlQobG9jYXRpb24gPj0gMCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KGxvY2F0
aW9uKSA8IG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9ucy5zaXplKCkpOworICAgIHJldHVybiBtU3Rh
dGUubVVuaWZvcm1zW21TdGF0ZS5tVW5pZm9ybUxvY2F0aW9uc1tsb2NhdGlvbl0uaW5kZXhdOwog
fQogCiBHTGludCBQcm9ncmFtOjpnZXRVbmlmb3JtTG9jYXRpb24oY29uc3Qgc3RkOjpzdHJpbmcg
Jm5hbWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1EYXRhLmdldFVuaWZvcm1Mb2NhdGlvbihuYW1l
KTsKKyAgICByZXR1cm4gbVN0YXRlLmdldFVuaWZvcm1Mb2NhdGlvbihuYW1lKTsKIH0KIAogR0x1
aW50IFByb2dyYW06OmdldFVuaWZvcm1JbmRleChjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkgY29u
c3QKIHsKLSAgICByZXR1cm4gbURhdGEuZ2V0VW5pZm9ybUluZGV4KG5hbWUpOworICAgIHJldHVy
biBtU3RhdGUuZ2V0VW5pZm9ybUluZGV4KG5hbWUpOwogfQogCiB2b2lkIFByb2dyYW06OnNldFVu
aWZvcm0xZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYp
CkBAIC0xMzIxLDcgKzE1MzAsNyBAQAogICAgIGZvciAodW5zaWduZWQgaW50IHNhbXBsZXJJbmRl
eCA9IG1TYW1wbGVyVW5pZm9ybVJhbmdlLnN0YXJ0OwogICAgICAgICAgc2FtcGxlckluZGV4IDwg
bVNhbXBsZXJVbmlmb3JtUmFuZ2UuZW5kOyArK3NhbXBsZXJJbmRleCkKICAgICB7Ci0gICAgICAg
IGNvbnN0IExpbmtlZFVuaWZvcm0gJnVuaWZvcm0gPSBtRGF0YS5tVW5pZm9ybXNbc2FtcGxlcklu
ZGV4XTsKKyAgICAgICAgY29uc3QgTGlua2VkVW5pZm9ybSAmdW5pZm9ybSA9IG1TdGF0ZS5tVW5p
Zm9ybXNbc2FtcGxlckluZGV4XTsKICAgICAgICAgQVNTRVJUKHVuaWZvcm0uaXNTYW1wbGVyKCkp
OwogCiAgICAgICAgIGlmICghdW5pZm9ybS5zdGF0aWNVc2UpCkBAIC0xMzgwLDE1ICsxNTg5LDE2
IEBACiAKIEdMdWludCBQcm9ncmFtOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tDb3VudCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMdWludD4obURhdGEubVVuaWZvcm1CbG9ja3Mu
c2l6ZSgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0x1aW50PihtU3RhdGUubVVuaWZvcm1C
bG9ja3Muc2l6ZSgpKTsKIH0KIAogdm9pZCBQcm9ncmFtOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tO
YW1lKEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICps
ZW5ndGgsIEdMY2hhciAqdW5pZm9ybUJsb2NrTmFtZSkgY29uc3QKIHsKLSAgICBBU1NFUlQodW5p
Zm9ybUJsb2NrSW5kZXggPAotICAgICAgICAgICBtRGF0YS5tVW5pZm9ybUJsb2Nrcy5zaXplKCkp
OyAgLy8gaW5kZXggbXVzdCBiZSBzbWFsbGVyIHRoYW4gZ2V0QWN0aXZlVW5pZm9ybUJsb2NrQ291
bnQoKQorICAgIEFTU0VSVCgKKyAgICAgICAgdW5pZm9ybUJsb2NrSW5kZXggPAorICAgICAgICBt
U3RhdGUubVVuaWZvcm1CbG9ja3Muc2l6ZSgpKTsgIC8vIGluZGV4IG11c3QgYmUgc21hbGxlciB0
aGFuIGdldEFjdGl2ZVVuaWZvcm1CbG9ja0NvdW50KCkKIAotICAgIGNvbnN0IFVuaWZvcm1CbG9j
ayAmdW5pZm9ybUJsb2NrID0gbURhdGEubVVuaWZvcm1CbG9ja3NbdW5pZm9ybUJsb2NrSW5kZXhd
OworICAgIGNvbnN0IFVuaWZvcm1CbG9jayAmdW5pZm9ybUJsb2NrID0gbVN0YXRlLm1Vbmlmb3Jt
QmxvY2tzW3VuaWZvcm1CbG9ja0luZGV4XTsKIAogICAgIGlmIChidWZTaXplID4gMCkKICAgICB7
CkBAIC0xNDA5LDQzICsxNjE5LDYgQEAKICAgICB9CiB9CiAKLXZvaWQgUHJvZ3JhbTo6Z2V0QWN0
aXZlVW5pZm9ybUJsb2NraXYoR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHTGVudW0gcG5hbWUs
IEdMaW50ICpwYXJhbXMpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKHVuaWZvcm1CbG9ja0luZGV4IDwK
LSAgICAgICAgICAgbURhdGEubVVuaWZvcm1CbG9ja3Muc2l6ZSgpKTsgIC8vIGluZGV4IG11c3Qg
YmUgc21hbGxlciB0aGFuIGdldEFjdGl2ZVVuaWZvcm1CbG9ja0NvdW50KCkKLQotICAgIGNvbnN0
IFVuaWZvcm1CbG9jayAmdW5pZm9ybUJsb2NrID0gbURhdGEubVVuaWZvcm1CbG9ja3NbdW5pZm9y
bUJsb2NrSW5kZXhdOwotCi0gICAgc3dpdGNoIChwbmFtZSkKLSAgICB7Ci0gICAgICBjYXNlIEdM
X1VOSUZPUk1fQkxPQ0tfREFUQV9TSVpFOgotICAgICAgICAqcGFyYW1zID0gc3RhdGljX2Nhc3Q8
R0xpbnQ+KHVuaWZvcm1CbG9jay5kYXRhU2l6ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBHTF9VTklGT1JNX0JMT0NLX05BTUVfTEVOR1RIOgotICAgICAgICAgICpwYXJhbXMgPQotICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxHTGludD4odW5pZm9ybUJsb2NrLm5hbWUuc2l6ZSgpICsg
MSArICh1bmlmb3JtQmxvY2suaXNBcnJheSA/IDMgOiAwKSk7Ci0gICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSBHTF9VTklGT1JNX0JMT0NLX0FDVElWRV9VTklGT1JNUzoKLSAgICAgICAgKnBhcmFt
cyA9IHN0YXRpY19jYXN0PEdMaW50Pih1bmlmb3JtQmxvY2subWVtYmVyVW5pZm9ybUluZGV4ZXMu
c2l6ZSgpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1VOSUZPUk1fQkxPQ0tfQUNU
SVZFX1VOSUZPUk1fSU5ESUNFUzoKLSAgICAgICAgewotICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgYmxvY2tNZW1iZXJJbmRleCA9IDA7IGJsb2NrTWVtYmVySW5kZXggPCB1bmlmb3JtQmxv
Y2subWVtYmVyVW5pZm9ybUluZGV4ZXMuc2l6ZSgpOyBibG9ja01lbWJlckluZGV4KyspCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcGFyYW1zW2Jsb2NrTWVtYmVySW5kZXhdID0gc3Rh
dGljX2Nhc3Q8R0xpbnQ+KHVuaWZvcm1CbG9jay5tZW1iZXJVbmlmb3JtSW5kZXhlc1tibG9ja01l
bWJlckluZGV4XSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0g
ICAgICBjYXNlIEdMX1VOSUZPUk1fQkxPQ0tfUkVGRVJFTkNFRF9CWV9WRVJURVhfU0hBREVSOgot
ICAgICAgICAgICpwYXJhbXMgPSBzdGF0aWNfY2FzdDxHTGludD4odW5pZm9ybUJsb2NrLnZlcnRl
eFN0YXRpY1VzZSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9VTklGT1JNX0JMT0NL
X1JFRkVSRU5DRURfQllfRlJBR01FTlRfU0hBREVSOgotICAgICAgICAgICpwYXJhbXMgPSBzdGF0
aWNfY2FzdDxHTGludD4odW5pZm9ybUJsb2NrLmZyYWdtZW50U3RhdGljVXNlKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgIH0KLX0KLQogR0xpbnQg
UHJvZ3JhbTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTWF4TGVuZ3RoKCkgY29uc3QKIHsKICAgICBp
bnQgbWF4TGVuZ3RoID0gMDsKQEAgLTE0NTIsMTAgKzE2MjUsMTAgQEAKIAogICAgIGlmIChtTGlu
a2VkKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgaW50IG51bVVuaWZvcm1CbG9ja3MgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG1EYXRhLm1Vbmlmb3JtQmxvY2tzLnNpemUoKSk7CisgICAg
ICAgIHVuc2lnbmVkIGludCBudW1Vbmlmb3JtQmxvY2tzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQg
aW50PihtU3RhdGUubVVuaWZvcm1CbG9ja3Muc2l6ZSgpKTsKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgdW5pZm9ybUJsb2NrSW5kZXggPSAwOyB1bmlmb3JtQmxvY2tJbmRleCA8IG51bVVuaWZv
cm1CbG9ja3M7IHVuaWZvcm1CbG9ja0luZGV4KyspCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnN0IFVuaWZvcm1CbG9jayAmdW5pZm9ybUJsb2NrID0gbURhdGEubVVuaWZvcm1CbG9ja3NbdW5p
Zm9ybUJsb2NrSW5kZXhdOworICAgICAgICAgICAgY29uc3QgVW5pZm9ybUJsb2NrICZ1bmlmb3Jt
QmxvY2sgPSBtU3RhdGUubVVuaWZvcm1CbG9ja3NbdW5pZm9ybUJsb2NrSW5kZXhdOwogICAgICAg
ICAgICAgaWYgKCF1bmlmb3JtQmxvY2submFtZS5lbXB0eSgpKQogICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgIGNvbnN0IGludCBsZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQ+KHVuaWZvcm1C
bG9jay5uYW1lLmxlbmd0aCgpKSArIDE7CkBAIC0xNDc2LDEwICsxNjQ5LDEwIEBACiAgICAgc2l6
ZV90IHN1YnNjcmlwdCAgICAgPSBHTF9JTlZBTElEX0lOREVYOwogICAgIHN0ZDo6c3RyaW5nIGJh
c2VOYW1lID0gZ2w6OlBhcnNlVW5pZm9ybU5hbWUobmFtZSwgJnN1YnNjcmlwdCk7CiAKLSAgICB1
bnNpZ25lZCBpbnQgbnVtVW5pZm9ybUJsb2NrcyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4o
bURhdGEubVVuaWZvcm1CbG9ja3Muc2l6ZSgpKTsKKyAgICB1bnNpZ25lZCBpbnQgbnVtVW5pZm9y
bUJsb2NrcyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4obVN0YXRlLm1Vbmlmb3JtQmxvY2tz
LnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgYmxvY2tJbmRleCA9IDA7IGJsb2NrSW5k
ZXggPCBudW1Vbmlmb3JtQmxvY2tzOyBibG9ja0luZGV4KyspCiAgICAgewotICAgICAgICBjb25z
dCBnbDo6VW5pZm9ybUJsb2NrICZ1bmlmb3JtQmxvY2sgPSBtRGF0YS5tVW5pZm9ybUJsb2Nrc1ti
bG9ja0luZGV4XTsKKyAgICAgICAgY29uc3QgZ2w6OlVuaWZvcm1CbG9jayAmdW5pZm9ybUJsb2Nr
ID0gbVN0YXRlLm1Vbmlmb3JtQmxvY2tzW2Jsb2NrSW5kZXhdOwogICAgICAgICBpZiAodW5pZm9y
bUJsb2NrLm5hbWUgPT0gYmFzZU5hbWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IGJv
b2wgYXJyYXlFbGVtZW50WmVybyA9CkBAIC0xNDk3LDE5ICsxNjcwLDE5IEBACiAKIGNvbnN0IFVu
aWZvcm1CbG9jayAmUHJvZ3JhbTo6Z2V0VW5pZm9ybUJsb2NrQnlJbmRleChHTHVpbnQgaW5kZXgp
IGNvbnN0CiB7Ci0gICAgQVNTRVJUKGluZGV4IDwgc3RhdGljX2Nhc3Q8R0x1aW50PihtRGF0YS5t
VW5pZm9ybUJsb2Nrcy5zaXplKCkpKTsKLSAgICByZXR1cm4gbURhdGEubVVuaWZvcm1CbG9ja3Nb
aW5kZXhdOworICAgIEFTU0VSVChpbmRleCA8IHN0YXRpY19jYXN0PEdMdWludD4obVN0YXRlLm1V
bmlmb3JtQmxvY2tzLnNpemUoKSkpOworICAgIHJldHVybiBtU3RhdGUubVVuaWZvcm1CbG9ja3Nb
aW5kZXhdOwogfQogCiB2b2lkIFByb2dyYW06OmJpbmRVbmlmb3JtQmxvY2soR0x1aW50IHVuaWZv
cm1CbG9ja0luZGV4LCBHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykKIHsKLSAgICBtRGF0YS5t
VW5pZm9ybUJsb2NrQmluZGluZ3NbdW5pZm9ybUJsb2NrSW5kZXhdID0gdW5pZm9ybUJsb2NrQmlu
ZGluZzsKKyAgICBtU3RhdGUubVVuaWZvcm1CbG9ja0JpbmRpbmdzW3VuaWZvcm1CbG9ja0luZGV4
XSA9IHVuaWZvcm1CbG9ja0JpbmRpbmc7CiAgICAgbVByb2dyYW0tPnNldFVuaWZvcm1CbG9ja0Jp
bmRpbmcodW5pZm9ybUJsb2NrSW5kZXgsIHVuaWZvcm1CbG9ja0JpbmRpbmcpOwogfQogCiBHTHVp
bnQgUHJvZ3JhbTo6Z2V0VW5pZm9ybUJsb2NrQmluZGluZyhHTHVpbnQgdW5pZm9ybUJsb2NrSW5k
ZXgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1EYXRhLmdldFVuaWZvcm1CbG9ja0JpbmRpbmcodW5p
Zm9ybUJsb2NrSW5kZXgpOworICAgIHJldHVybiBtU3RhdGUuZ2V0VW5pZm9ybUJsb2NrQmluZGlu
Zyh1bmlmb3JtQmxvY2tJbmRleCk7CiB9CiAKIHZvaWQgUHJvZ3JhbTo6cmVzZXRVbmlmb3JtQmxv
Y2tCaW5kaW5ncygpCkBAIC0xNTE2LDIwICsxNjg5LDIwIEBACiB7CiAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgYmxvY2tJZCA9IDA7IGJsb2NrSWQgPCBJTVBMRU1FTlRBVElPTl9NQVhfQ09NQklORURf
U0hBREVSX1VOSUZPUk1fQlVGRkVSUzsgYmxvY2tJZCsrKQogICAgIHsKLSAgICAgICAgbURhdGEu
bVVuaWZvcm1CbG9ja0JpbmRpbmdzW2Jsb2NrSWRdID0gMDsKKyAgICAgICAgbVN0YXRlLm1Vbmlm
b3JtQmxvY2tCaW5kaW5nc1tibG9ja0lkXSA9IDA7CiAgICAgfQotICAgIG1EYXRhLm1BY3RpdmVV
bmlmb3JtQmxvY2tCaW5kaW5ncy5yZXNldCgpOworICAgIG1TdGF0ZS5tQWN0aXZlVW5pZm9ybUJs
b2NrQmluZGluZ3MucmVzZXQoKTsKIH0KIAogdm9pZCBQcm9ncmFtOjpzZXRUcmFuc2Zvcm1GZWVk
YmFja1ZhcnlpbmdzKEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMY2hhciAqY29uc3QgKnZhcnlpbmdz
LCBHTGVudW0gYnVmZmVyTW9kZSkKIHsKLSAgICBtRGF0YS5tVHJhbnNmb3JtRmVlZGJhY2tWYXJ5
aW5nTmFtZXMucmVzaXplKGNvdW50KTsKKyAgICBtU3RhdGUubVRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZ05hbWVzLnJlc2l6ZShjb3VudCk7CiAgICAgZm9yIChHTHNpemVpIGkgPSAwOyBpIDwgY291
bnQ7IGkrKykKICAgICB7Ci0gICAgICAgIG1EYXRhLm1UcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdO
YW1lc1tpXSA9IHZhcnlpbmdzW2ldOworICAgICAgICBtU3RhdGUubVRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZ05hbWVzW2ldID0gdmFyeWluZ3NbaV07CiAgICAgfQogCi0gICAgbURhdGEubVRyYW5z
Zm9ybUZlZWRiYWNrQnVmZmVyTW9kZSA9IGJ1ZmZlck1vZGU7CisgICAgbVN0YXRlLm1UcmFuc2Zv
cm1GZWVkYmFja0J1ZmZlck1vZGUgPSBidWZmZXJNb2RlOwogfQogCiB2b2lkIFByb2dyYW06Omdl
dFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmU2l6ZSwg
R0xzaXplaSAqbGVuZ3RoLCBHTHNpemVpICpzaXplLCBHTGVudW0gKnR5cGUsIEdMY2hhciAqbmFt
ZSkgY29uc3QKQEAgLTE1MzYsOCArMTcwOSw4IEBACiB7CiAgICAgaWYgKG1MaW5rZWQpCiAgICAg
ewotICAgICAgICBBU1NFUlQoaW5kZXggPCBtRGF0YS5tVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5n
VmFycy5zaXplKCkpOwotICAgICAgICBjb25zdCBzaDo6VmFyeWluZyAmdmFyeWluZyA9IG1EYXRh
Lm1UcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdWYXJzW2luZGV4XTsKKyAgICAgICAgQVNTRVJUKGlu
ZGV4IDwgbVN0YXRlLm1UcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdWYXJzLnNpemUoKSk7CisgICAg
ICAgIGNvbnN0IHNoOjpWYXJ5aW5nICZ2YXJ5aW5nID0gbVN0YXRlLm1UcmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmdWYXJzW2luZGV4XTsKICAgICAgICAgR0xzaXplaSBsYXN0TmFtZUlkeCA9IHN0ZDo6
bWluKGJ1ZlNpemUgLSAxLCBzdGF0aWNfY2FzdDxHTHNpemVpPih2YXJ5aW5nLm5hbWUubGVuZ3Ro
KCkpKTsKICAgICAgICAgaWYgKGxlbmd0aCkKICAgICAgICAgewpAQCAtMTU2Myw3ICsxNzM2LDcg
QEAKIHsKICAgICBpZiAobUxpbmtlZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxHTHNpemVpPihtRGF0YS5tVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nVmFycy5zaXplKCkpOwor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0xzaXplaT4obVN0YXRlLm1UcmFuc2Zvcm1GZWVk
YmFja1ZhcnlpbmdWYXJzLnNpemUoKSk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC0xNTc2
LDcgKzE3NDksNyBAQAogICAgIGlmIChtTGlua2VkKQogICAgIHsKICAgICAgICAgR0xzaXplaSBt
YXhTaXplID0gMDsKLSAgICAgICAgZm9yIChjb25zdCBzaDo6VmFyeWluZyAmdmFyeWluZyA6IG1E
YXRhLm1UcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdWYXJzKQorICAgICAgICBmb3IgKGNvbnN0IHNo
OjpWYXJ5aW5nICZ2YXJ5aW5nIDogbVN0YXRlLm1UcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdWYXJz
KQogICAgICAgICB7CiAgICAgICAgICAgICBtYXhTaXplID0gc3RkOjptYXgobWF4U2l6ZSwgc3Rh
dGljX2Nhc3Q8R0xzaXplaT4odmFyeWluZy5uYW1lLmxlbmd0aCgpICsgMSkpOwogICAgICAgICB9
CkBAIC0xNTkxLDE3ICsxNzY0LDIwIEBACiAKIEdMZW51bSBQcm9ncmFtOjpnZXRUcmFuc2Zvcm1G
ZWVkYmFja0J1ZmZlck1vZGUoKSBjb25zdAogewotICAgIHJldHVybiBtRGF0YS5tVHJhbnNmb3Jt
RmVlZGJhY2tCdWZmZXJNb2RlOworICAgIHJldHVybiBtU3RhdGUubVRyYW5zZm9ybUZlZWRiYWNr
QnVmZmVyTW9kZTsKIH0KIAotLy8gc3RhdGljCiBib29sIFByb2dyYW06OmxpbmtWYXJ5aW5ncyhJ
bmZvTG9nICZpbmZvTG9nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hhZGVy
ICp2ZXJ0ZXhTaGFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTaGFkZXIg
KmZyYWdtZW50U2hhZGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hhZGVy
ICpmcmFnbWVudFNoYWRlcikgY29uc3QKIHsKKyAgICBBU1NFUlQodmVydGV4U2hhZGVyLT5nZXRT
aGFkZXJWZXJzaW9uKCkgPT0gZnJhZ21lbnRTaGFkZXItPmdldFNoYWRlclZlcnNpb24oKSk7CisK
ICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6VmFyeWluZz4gJnZlcnRleFZhcnlpbmdzICAgPSB2
ZXJ0ZXhTaGFkZXItPmdldFZhcnlpbmdzKCk7CiAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlZh
cnlpbmc+ICZmcmFnbWVudFZhcnlpbmdzID0gZnJhZ21lbnRTaGFkZXItPmdldFZhcnlpbmdzKCk7
CiAKKyAgICBzdGQ6Om1hcDxHTHVpbnQsIHN0ZDo6c3RyaW5nPiBzdGF0aWNGcmFnbWVudElucHV0
TG9jYXRpb25zOworCiAgICAgZm9yIChjb25zdCBzaDo6VmFyeWluZyAmb3V0cHV0IDogZnJhZ21l
bnRWYXJ5aW5ncykKICAgICB7CiAgICAgICAgIGJvb2wgbWF0Y2hlZCA9IGZhbHNlOwpAQCAtMTYx
Nyw3ICsxNzkzLDggQEAKICAgICAgICAgICAgIGlmIChvdXRwdXQubmFtZSA9PSBpbnB1dC5uYW1l
KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIEFTU0VSVCghaW5wdXQuaXNCdWlsdElu
KCkpOwotICAgICAgICAgICAgICAgIGlmICghbGlua1ZhbGlkYXRlVmFyeWluZ3MoaW5mb0xvZywg
b3V0cHV0Lm5hbWUsIGlucHV0LCBvdXRwdXQpKQorICAgICAgICAgICAgICAgIGlmICghbGlua1Zh
bGlkYXRlVmFyeWluZ3MoaW5mb0xvZywgb3V0cHV0Lm5hbWUsIGlucHV0LCBvdXRwdXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhTaGFkZXItPmdldFNo
YWRlclZlcnNpb24oKSkpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTYzMyw2ICsxODEwLDI5IEBACiAg
ICAgICAgICAgICBpbmZvTG9nIDw8ICJGcmFnbWVudCB2YXJ5aW5nICIgPDwgb3V0cHV0Lm5hbWUg
PDwgIiBkb2VzIG5vdCBtYXRjaCBhbnkgdmVydGV4IHZhcnlpbmciOwogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CisKKyAgICAgICAgLy8gQ2hlY2sgZm9yIGFsaWFzZWQgcGF0
aCByZW5kZXJpbmcgaW5wdXQgYmluZGluZ3MgKGlmIGFueSkuCisgICAgICAgIC8vIElmIG1vcmUg
dGhhbiBvbmUgYmluZGluZyByZWZlciBzdGF0aWNhbGx5IHRvIHRoZSBzYW1lCisgICAgICAgIC8v
IGxvY2F0aW9uIHRoZSBsaW5rIG11c3QgZmFpbC4KKworICAgICAgICBpZiAoIW91dHB1dC5zdGF0
aWNVc2UpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBjb25zdCBhdXRvIGlucHV0
QmluZGluZyA9IG1GcmFnbWVudElucHV0QmluZGluZ3MuZ2V0QmluZGluZyhvdXRwdXQubmFtZSk7
CisgICAgICAgIGlmIChpbnB1dEJpbmRpbmcgPT0gLTEpCisgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICBjb25zdCBhdXRvIGl0ID0gc3RhdGljRnJhZ21lbnRJbnB1dExvY2F0aW9ucy5m
aW5kKGlucHV0QmluZGluZyk7CisgICAgICAgIGlmIChpdCA9PSBzdGQ6OmVuZChzdGF0aWNGcmFn
bWVudElucHV0TG9jYXRpb25zKSkKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljRnJhZ21l
bnRJbnB1dExvY2F0aW9ucy5pbnNlcnQoc3RkOjptYWtlX3BhaXIoaW5wdXRCaW5kaW5nLCBvdXRw
dXQubmFtZSkpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAg
ICAgaW5mb0xvZyA8PCAiQmluZGluZyBmb3IgZnJhZ21lbnQgaW5wdXQgIiA8PCBvdXRwdXQubmFt
ZSA8PCAiIGNvbmZsaWN0cyB3aXRoICIKKyAgICAgICAgICAgICAgICAgICAgPDwgaXQtPnNlY29u
ZDsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIC8v
IFRPRE8oam1hZGlsbCk6IHZlcmlmeSBubyB1bm1hdGNoZWQgdmVydGV4IHZhcnlpbmdzPwpAQCAt
MTY0MCwxMyArMTg0MCwxMyBAQAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFByb2dyYW06
OmxpbmtVbmlmb3JtcyhnbDo6SW5mb0xvZyAmaW5mb0xvZywgY29uc3QgZ2w6OkNhcHMgJmNhcHMp
Citib29sIFByb2dyYW06OnZhbGlkYXRlVmVydGV4QW5kRnJhZ21lbnRVbmlmb3JtcyhJbmZvTG9n
ICZpbmZvTG9nKSBjb25zdAogewotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpVbmlmb3JtPiAm
dmVydGV4VW5pZm9ybXMgICA9IG1EYXRhLm1BdHRhY2hlZFZlcnRleFNoYWRlci0+Z2V0VW5pZm9y
bXMoKTsKLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6VW5pZm9ybT4gJmZyYWdtZW50VW5pZm9y
bXMgPSBtRGF0YS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlci0+Z2V0VW5pZm9ybXMoKTsKLQogICAg
IC8vIENoZWNrIHRoYXQgdW5pZm9ybXMgZGVmaW5lZCBpbiB0aGUgdmVydGV4IGFuZCBmcmFnbWVu
dCBzaGFkZXJzIGFyZSBpZGVudGljYWwKICAgICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgTGlua2Vk
VW5pZm9ybT4gbGlua2VkVW5pZm9ybXM7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlVuaWZv
cm0+ICZ2ZXJ0ZXhVbmlmb3JtcyA9IG1TdGF0ZS5tQXR0YWNoZWRWZXJ0ZXhTaGFkZXItPmdldFVu
aWZvcm1zKCk7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlVuaWZvcm0+ICZmcmFnbWVudFVu
aWZvcm1zID0KKyAgICAgICAgbVN0YXRlLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyLT5nZXRVbmlm
b3JtcygpOwogCiAgICAgZm9yIChjb25zdCBzaDo6VW5pZm9ybSAmdmVydGV4VW5pZm9ybSA6IHZl
cnRleFVuaWZvcm1zKQogICAgIHsKQEAgLTE2NjYsNyArMTg2NiwyMiBAQAogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQorICAgIHJldHVybiB0cnVlOworfQogCitib29sIFByb2dyYW06
OmxpbmtVbmlmb3JtcyhnbDo6SW5mb0xvZyAmaW5mb0xvZywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpDYXBzICZjYXBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgQmluZGluZ3MgJnVuaWZvcm1CaW5kaW5ncykKK3sKKyAgICBpZiAobVN0YXRlLm1BdHRh
Y2hlZFZlcnRleFNoYWRlciAmJiBtU3RhdGUubUF0dGFjaGVkRnJhZ21lbnRTaGFkZXIpCisgICAg
eworICAgICAgICBBU1NFUlQobVN0YXRlLm1BdHRhY2hlZENvbXB1dGVTaGFkZXIgPT0gbnVsbHB0
cik7CisgICAgICAgIGlmICghdmFsaWRhdGVWZXJ0ZXhBbmRGcmFnbWVudFVuaWZvcm1zKGluZm9M
b2cpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICB9CisKICAgICAvLyBGbGF0dGVuIHRoZSB1bmlmb3JtcyBsaXN0IChuZXN0ZWQgZmllbGRzKSBp
bnRvIGEgc2ltcGxlIGxpc3QgKG5vIG5lc3RpbmcpLgogICAgIC8vIEFsc28gY2hlY2sgdGhlIG1h
eGltdW0gdW5pZm9ybSB2ZWN0b3IgYW5kIHNhbXBsZXIgY291bnRzLgogICAgIGlmICghZmxhdHRl
blVuaWZvcm1zQW5kQ2hlY2tDYXBzKGNhcHMsIGluZm9Mb2cpKQpAQCAtMTY3NCwzMCArMTg4OSwx
MTEgQEAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGluZGV4VW5pZm9ybXMo
KTsKKyAgICBpZiAoIWluZGV4VW5pZm9ybXMoaW5mb0xvZywgY2FwcywgdW5pZm9ybUJpbmRpbmdz
KSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBQcm9ncmFtOjppbmRleFVuaWZvcm1zKCkKK2Jvb2wgUHJvZ3JhbTo6aW5k
ZXhVbmlmb3JtcyhnbDo6SW5mb0xvZyAmaW5mb0xvZywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6Q2FwcyAmY2FwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBCaW5kaW5ncyAmdW5pZm9ybUJpbmRpbmdzKQogewotICAgIGZvciAoc2l6ZV90IHVuaWZv
cm1JbmRleCA9IDA7IHVuaWZvcm1JbmRleCA8IG1EYXRhLm1Vbmlmb3Jtcy5zaXplKCk7IHVuaWZv
cm1JbmRleCsrKQorICAgIC8vIFVuaWZvcm1zIGF3YWl0aW5nIGEgbG9jYXRpb24KKyAgICBzdGQ6
OnZlY3RvcjxWYXJpYWJsZUxvY2F0aW9uPiB1bmJvdW5kVW5pZm9ybXM7CisgICAgc3RkOjptYXA8
R0x1aW50LCBWYXJpYWJsZUxvY2F0aW9uPiBib3VuZFVuaWZvcm1zOworICAgIGludCBtYXhVbmlm
b3JtTG9jYXRpb24gPSAtMTsKKworICAgIC8vIEdhdGhlciBib3VuZCBhbmQgdW5ib3VuZCB1bmlm
b3JtcworICAgIGZvciAoc2l6ZV90IHVuaWZvcm1JbmRleCA9IDA7IHVuaWZvcm1JbmRleCA8IG1T
dGF0ZS5tVW5pZm9ybXMuc2l6ZSgpOyB1bmlmb3JtSW5kZXgrKykKICAgICB7Ci0gICAgICAgIGNv
bnN0IGdsOjpMaW5rZWRVbmlmb3JtICZ1bmlmb3JtID0gbURhdGEubVVuaWZvcm1zW3VuaWZvcm1J
bmRleF07CisgICAgICAgIGNvbnN0IGdsOjpMaW5rZWRVbmlmb3JtICZ1bmlmb3JtID0gbVN0YXRl
Lm1Vbmlmb3Jtc1t1bmlmb3JtSW5kZXhdOwogCisgICAgICAgIGlmICh1bmlmb3JtLmlzQnVpbHRJ
bigpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAg
ICAgIGludCBiaW5kaW5nTG9jYXRpb24gPSB1bmlmb3JtQmluZGluZ3MuZ2V0QmluZGluZyh1bmlm
b3JtLm5hbWUpOworCisgICAgICAgIC8vIFZlcmlmeSB0aGF0IHRoaXMgbG9jYXRpb24gaXNuJ3Qg
Ym91bmQgdHdpY2UKKyAgICAgICAgaWYgKGJpbmRpbmdMb2NhdGlvbiAhPSAtMSAmJiBib3VuZFVu
aWZvcm1zLmZpbmQoYmluZGluZ0xvY2F0aW9uKSAhPSBib3VuZFVuaWZvcm1zLmVuZCgpKQorICAg
ICAgICB7CisgICAgICAgICAgICBpbmZvTG9nIDw8ICJNdWx0aXBsZSB1bmlmb3JtcyBib3VuZCB0
byBsb2NhdGlvbiAiIDw8IGJpbmRpbmdMb2NhdGlvbiA8PCAiLiI7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKwogICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBhcnJheUlu
ZGV4ID0gMDsgYXJyYXlJbmRleCA8IHVuaWZvcm0uZWxlbWVudENvdW50KCk7IGFycmF5SW5kZXgr
KykKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCF1bmlmb3JtLmlzQnVpbHRJbigpKQorICAg
ICAgICAgICAgVmFyaWFibGVMb2NhdGlvbiBsb2NhdGlvbih1bmlmb3JtLm5hbWUsIGFycmF5SW5k
ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVu
c2lnbmVkIGludD4odW5pZm9ybUluZGV4KSk7CisKKyAgICAgICAgICAgIGlmIChhcnJheUluZGV4
ID09IDAgJiYgYmluZGluZ0xvY2F0aW9uICE9IC0xKQogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIC8vIEFzc2lnbiBpbi1vcmRlciB1bmlmb3JtIGxvY2F0aW9ucwotICAgICAgICAgICAg
ICAgIG1EYXRhLm1Vbmlmb3JtTG9jYXRpb25zLnB1c2hfYmFjayhnbDo6VmFyaWFibGVMb2NhdGlv
bigKLSAgICAgICAgICAgICAgICAgICAgdW5pZm9ybS5uYW1lLCBhcnJheUluZGV4LCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBpbnQ+KHVuaWZvcm1JbmRleCkpKTsKKyAgICAgICAgICAgICAgICBib3Vu
ZFVuaWZvcm1zW2JpbmRpbmdMb2NhdGlvbl0gPSBsb2NhdGlvbjsKKyAgICAgICAgICAgICAgICBt
YXhVbmlmb3JtTG9jYXRpb24gICAgICAgICAgICAgPSBzdGQ6Om1heChtYXhVbmlmb3JtTG9jYXRp
b24sIGJpbmRpbmdMb2NhdGlvbik7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdW5ib3VuZFVuaWZvcm1zLnB1c2hfYmFjayhs
b2NhdGlvbik7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CisKKyAgICAvLyBHYXRo
ZXIgdGhlIHJlc2VydmVkIGJpbmRpbmdzLCBvbmVzIHRoYXQgYXJlIGJvdW5kIGJ1dCBub3QgcmVm
ZXJlbmNlZC4gIE90aGVyIHVuaWZvcm1zIHNob3VsZAorICAgIC8vIG5vdCBiZSBhc3NpZ25lZCB0
byB0aG9zZSBsb2NhdGlvbnMuCisgICAgc3RkOjpzZXQ8R0x1aW50PiByZXNlcnZlZExvY2F0aW9u
czsKKyAgICBmb3IgKGNvbnN0IGF1dG8gJmJpbmRpbmcgOiB1bmlmb3JtQmluZGluZ3MpCisgICAg
eworICAgICAgICBHTHVpbnQgbG9jYXRpb24gPSBiaW5kaW5nLnNlY29uZDsKKyAgICAgICAgaWYg
KGJvdW5kVW5pZm9ybXMuZmluZChsb2NhdGlvbikgPT0gYm91bmRVbmlmb3Jtcy5lbmQoKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmVzZXJ2ZWRMb2NhdGlvbnMuaW5zZXJ0KGxvY2F0aW9uKTsK
KyAgICAgICAgICAgIG1heFVuaWZvcm1Mb2NhdGlvbiA9IHN0ZDo6bWF4KG1heFVuaWZvcm1Mb2Nh
dGlvbiwgc3RhdGljX2Nhc3Q8aW50Pihsb2NhdGlvbikpOworICAgICAgICB9CisgICAgfQorCisg
ICAgLy8gTWFrZSBlbm91Z2ggc3BhY2UgZm9yIGFsbCB1bmlmb3JtcywgYm91bmQgYW5kIHVuYm91
bmQKKyAgICBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnMucmVzaXplKAorICAgICAgICBzdGQ6Om1h
eCh1bmJvdW5kVW5pZm9ybXMuc2l6ZSgpICsgYm91bmRVbmlmb3Jtcy5zaXplKCkgKyByZXNlcnZl
ZExvY2F0aW9ucy5zaXplKCksCisgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHNpemVfdD4o
bWF4VW5pZm9ybUxvY2F0aW9uICsgMSkpKTsKKworICAgIC8vIEFzc2lnbiBib3VuZCB1bmlmb3Jt
cworICAgIGZvciAoY29uc3QgYXV0byAmYm91bmRVbmlmb3JtIDogYm91bmRVbmlmb3JtcykKKyAg
ICB7CisgICAgICAgIG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9uc1tib3VuZFVuaWZvcm0uZmlyc3Rd
ID0gYm91bmRVbmlmb3JtLnNlY29uZDsKKyAgICB9CisKKyAgICAvLyBBc3NpZ24gcmVzZXJ2ZWQg
dW5pZm9ybXMKKyAgICBmb3IgKGNvbnN0IGF1dG8gJnJlc2VydmVkTG9jYXRpb24gOiByZXNlcnZl
ZExvY2F0aW9ucykKKyAgICB7CisgICAgICAgIG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9uc1tyZXNl
cnZlZExvY2F0aW9uXS5pZ25vcmVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBBc3NpZ24gdW5i
b3VuZCB1bmlmb3JtcworICAgIHNpemVfdCBuZXh0VW5pZm9ybUxvY2F0aW9uID0gMDsKKyAgICBm
b3IgKGNvbnN0IGF1dG8gJnVuYm91bmRVbmlmb3JtIDogdW5ib3VuZFVuaWZvcm1zKQorICAgIHsK
KyAgICAgICAgd2hpbGUgKG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9uc1tuZXh0VW5pZm9ybUxvY2F0
aW9uXS51c2VkIHx8CisgICAgICAgICAgICAgICBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnNbbmV4
dFVuaWZvcm1Mb2NhdGlvbl0uaWdub3JlZCkKKyAgICAgICAgeworICAgICAgICAgICAgbmV4dFVu
aWZvcm1Mb2NhdGlvbisrOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKG5leHRVbmlmb3Jt
TG9jYXRpb24gPCBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnMuc2l6ZSgpKTsKKyAgICAgICAgbVN0
YXRlLm1Vbmlmb3JtTG9jYXRpb25zW25leHRVbmlmb3JtTG9jYXRpb25dID0gdW5ib3VuZFVuaWZv
cm07CisgICAgICAgIG5leHRVbmlmb3JtTG9jYXRpb24rKzsKKyAgICB9CisKKyAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBQcm9ncmFtOjpsaW5rVmFsaWRhdGVJbnRlcmZhY2VCbG9ja0ZpZWxk
cyhJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBzdGQ6OnN0cmluZyAmdW5pZm9ybU5hbWUsIGNvbnN0
IHNoOjpJbnRlcmZhY2VCbG9ja0ZpZWxkICZ2ZXJ0ZXhVbmlmb3JtLCBjb25zdCBzaDo6SW50ZXJm
YWNlQmxvY2tGaWVsZCAmZnJhZ21lbnRVbmlmb3JtKQorYm9vbCBQcm9ncmFtOjpsaW5rVmFsaWRh
dGVJbnRlcmZhY2VCbG9ja0ZpZWxkcyhJbmZvTG9nICZpbmZvTG9nLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdW5pZm9y
bU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHNoOjpJbnRlcmZhY2VCbG9ja0ZpZWxkICZ2ZXJ0ZXhVbmlmb3JtLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaDo6SW50ZXJmYWNlQmxv
Y2tGaWVsZCAmZnJhZ21lbnRVbmlmb3JtKQogewogICAgIC8vIFdlIGRvbid0IHZhbGlkYXRlIHBy
ZWNpc2lvbiBvbiBVQk8gZmllbGRzLiBTZWUgcmVzb2x1dGlvbiBvZiBLaHJvbm9zIGJ1ZyAxMDI4
Ny4KICAgICBpZiAoIWxpbmtWYWxpZGF0ZVZhcmlhYmxlc0Jhc2UoaW5mb0xvZywgdW5pZm9ybU5h
bWUsIHZlcnRleFVuaWZvcm0sIGZyYWdtZW50VW5pZm9ybSwgZmFsc2UpKQpAQCAtMTcxNSwzMSAr
MjAxMSwzMSBAQAogfQogCiAvLyBEZXRlcm1pbmVzIHRoZSBtYXBwaW5nIGJldHdlZW4gR0wgYXR0
cmlidXRlcyBhbmQgRGlyZWN0M0QgOSB2ZXJ0ZXggc3RyZWFtIHVzYWdlIGluZGljZXMKLWJvb2wg
UHJvZ3JhbTo6bGlua0F0dHJpYnV0ZXMoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCitib29sIFByb2dy
YW06OmxpbmtBdHRyaWJ1dGVzKGNvbnN0IENvbnRleHRTdGF0ZSAmZGF0YSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSW5mb0xvZyAmaW5mb0xvZywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgQXR0cmlidXRlQmluZGluZ3MgJmF0dHJpYnV0ZUJpbmRpbmdzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCaW5kaW5ncyAmYXR0cmlidXRlQmluZGlu
Z3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoYWRlciAqdmVydGV4U2hh
ZGVyKQogewogICAgIHVuc2lnbmVkIGludCB1c2VkTG9jYXRpb25zID0gMDsKLSAgICBtRGF0YS5t
QXR0cmlidXRlcyAgICAgICAgICA9IHZlcnRleFNoYWRlci0+Z2V0QWN0aXZlQXR0cmlidXRlcygp
OwotICAgIEdMdWludCBtYXhBdHRyaWJzID0gZGF0YS5jYXBzLT5tYXhWZXJ0ZXhBdHRyaWJ1dGVz
OworICAgIG1TdGF0ZS5tQXR0cmlidXRlcyAgICAgICAgID0gdmVydGV4U2hhZGVyLT5nZXRBY3Rp
dmVBdHRyaWJ1dGVzKCk7CisgICAgR0x1aW50IG1heEF0dHJpYnMgICAgICAgICAgPSBkYXRhLmdl
dENhcHMoKS5tYXhWZXJ0ZXhBdHRyaWJ1dGVzOwogCiAgICAgLy8gVE9ETyhqbWFkaWxsKTogaGFu
ZGxlIGFsaWFzaW5nIHJvYnVzdGx5Ci0gICAgaWYgKG1EYXRhLm1BdHRyaWJ1dGVzLnNpemUoKSA+
IG1heEF0dHJpYnMpCisgICAgaWYgKG1TdGF0ZS5tQXR0cmlidXRlcy5zaXplKCkgPiBtYXhBdHRy
aWJzKQogICAgIHsKICAgICAgICAgaW5mb0xvZyA8PCAiVG9vIG1hbnkgdmVydGV4IGF0dHJpYnV0
ZXMuIjsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHN0ZDo6dmVjdG9yPHNo
OjpBdHRyaWJ1dGUgKj4gdXNlZEF0dHJpYk1hcChkYXRhLmNhcHMtPm1heFZlcnRleEF0dHJpYnV0
ZXMsIG51bGxwdHIpOworICAgIHN0ZDo6dmVjdG9yPHNoOjpBdHRyaWJ1dGUgKj4gdXNlZEF0dHJp
Yk1hcChtYXhBdHRyaWJzLCBudWxscHRyKTsKIAogICAgIC8vIExpbmsgYXR0cmlidXRlcyB0aGF0
IGhhdmUgYSBiaW5kaW5nIGxvY2F0aW9uCi0gICAgZm9yIChzaDo6QXR0cmlidXRlICZhdHRyaWJ1
dGUgOiBtRGF0YS5tQXR0cmlidXRlcykKKyAgICBmb3IgKHNoOjpBdHRyaWJ1dGUgJmF0dHJpYnV0
ZSA6IG1TdGF0ZS5tQXR0cmlidXRlcykKICAgICB7CiAgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6
IGRvIHN0YXRpY1VzZSBmaWx0ZXJpbmcgc3RlcCBoZXJlLCBvciBub3QgYXQgYWxsCiAgICAgICAg
IEFTU0VSVChhdHRyaWJ1dGUuc3RhdGljVXNlKTsKIAotICAgICAgICBpbnQgYmluZGluZ0xvY2F0
aW9uID0gYXR0cmlidXRlQmluZGluZ3MuZ2V0QXR0cmlidXRlQmluZGluZyhhdHRyaWJ1dGUubmFt
ZSk7CisgICAgICAgIGludCBiaW5kaW5nTG9jYXRpb24gPSBhdHRyaWJ1dGVCaW5kaW5ncy5nZXRC
aW5kaW5nKGF0dHJpYnV0ZS5uYW1lKTsKICAgICAgICAgaWYgKGF0dHJpYnV0ZS5sb2NhdGlvbiA9
PSAtMSAmJiBiaW5kaW5nTG9jYXRpb24gIT0gLTEpCiAgICAgICAgIHsKICAgICAgICAgICAgIGF0
dHJpYnV0ZS5sb2NhdGlvbiA9IGJpbmRpbmdMb2NhdGlvbjsKQEAgLTE3ODYsNyArMjA4Miw3IEBA
CiAgICAgfQogCiAgICAgLy8gTGluayBhdHRyaWJ1dGVzIHRoYXQgZG9uJ3QgaGF2ZSBhIGJpbmRp
bmcgbG9jYXRpb24KLSAgICBmb3IgKHNoOjpBdHRyaWJ1dGUgJmF0dHJpYnV0ZSA6IG1EYXRhLm1B
dHRyaWJ1dGVzKQorICAgIGZvciAoc2g6OkF0dHJpYnV0ZSAmYXR0cmlidXRlIDogbVN0YXRlLm1B
dHRyaWJ1dGVzKQogICAgIHsKICAgICAgICAgQVNTRVJUKGF0dHJpYnV0ZS5zdGF0aWNVc2UpOwog
CkBAIC0xODA2LDcgKzIxMDIsNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgZm9yIChjb25z
dCBzaDo6QXR0cmlidXRlICZhdHRyaWJ1dGUgOiBtRGF0YS5tQXR0cmlidXRlcykKKyAgICBmb3Ig
KGNvbnN0IHNoOjpBdHRyaWJ1dGUgJmF0dHJpYnV0ZSA6IG1TdGF0ZS5tQXR0cmlidXRlcykKICAg
ICB7CiAgICAgICAgIEFTU0VSVChhdHRyaWJ1dGUuc3RhdGljVXNlKTsKICAgICAgICAgQVNTRVJU
KGF0dHJpYnV0ZS5sb2NhdGlvbiAhPSAtMSk7CkBAIC0xODE0LDcgKzIxMTAsNyBAQAogCiAgICAg
ICAgIGZvciAoaW50IHIgPSAwOyByIDwgcmVnczsgcisrKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBtRGF0YS5tQWN0aXZlQXR0cmliTG9jYXRpb25zTWFzay5zZXQoYXR0cmlidXRlLmxvY2F0aW9u
ICsgcik7CisgICAgICAgICAgICBtU3RhdGUubUFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2suc2V0
KGF0dHJpYnV0ZS5sb2NhdGlvbiArIHIpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xODIxLDM2
ICsyMTE3LDQwIEBACiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUHJvZ3JhbTo6bGlua1Vu
aWZvcm1CbG9ja3MoSW5mb0xvZyAmaW5mb0xvZywgY29uc3QgQ2FwcyAmY2FwcykKK2Jvb2wgUHJv
Z3JhbTo6dmFsaWRhdGVVbmlmb3JtQmxvY2tzQ291bnQoR0x1aW50IG1heFVuaWZvcm1CbG9ja3Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVj
dG9yPHNoOjpJbnRlcmZhY2VCbG9jaz4gJmludGVmYWNlQmxvY2tzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmZXJyb3JNZXNzYWdl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmZvTG9nICZpbmZv
TG9nKSBjb25zdAogewotICAgIGNvbnN0IFNoYWRlciAmdmVydGV4U2hhZGVyICAgPSAqbURhdGEu
bUF0dGFjaGVkVmVydGV4U2hhZGVyOwotICAgIGNvbnN0IFNoYWRlciAmZnJhZ21lbnRTaGFkZXIg
PSAqbURhdGEubUF0dGFjaGVkRnJhZ21lbnRTaGFkZXI7CisgICAgR0x1aW50IGJsb2NrQ291bnQg
PSAwOworICAgIGZvciAoY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrICZibG9jayA6IGludGVmYWNl
QmxvY2tzKQorICAgIHsKKyAgICAgICAgaWYgKGJsb2NrLnN0YXRpY1VzZSB8fCBibG9jay5sYXlv
dXQgIT0gc2g6OkJMT0NLTEFZT1VUX1BBQ0tFRCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KCsrYmxvY2tDb3VudCA+IG1heFVuaWZvcm1CbG9ja3MpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgaW5mb0xvZyA8PCBlcnJvck1lc3NhZ2UgPDwgbWF4VW5pZm9ybUJsb2NrcyA8PCAi
KSI7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQogCi0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8
c2g6OkludGVyZmFjZUJsb2NrPiAmdmVydGV4SW50ZXJmYWNlQmxvY2tzID0gdmVydGV4U2hhZGVy
LmdldEludGVyZmFjZUJsb2NrcygpOwotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpJbnRlcmZh
Y2VCbG9jaz4gJmZyYWdtZW50SW50ZXJmYWNlQmxvY2tzID0gZnJhZ21lbnRTaGFkZXIuZ2V0SW50
ZXJmYWNlQmxvY2tzKCk7Ci0KK2Jvb2wgUHJvZ3JhbTo6dmFsaWRhdGVWZXJ0ZXhBbmRGcmFnbWVu
dEludGVyZmFjZUJsb2NrcygKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6SW50ZXJmYWNlQmxv
Y2s+ICZ2ZXJ0ZXhJbnRlcmZhY2VCbG9ja3MsCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6Oklu
dGVyZmFjZUJsb2NrPiAmZnJhZ21lbnRJbnRlcmZhY2VCbG9ja3MsCisgICAgSW5mb0xvZyAmaW5m
b0xvZykgY29uc3QKK3sKICAgICAvLyBDaGVjayB0aGF0IGludGVyZmFjZSBibG9ja3MgZGVmaW5l
ZCBpbiB0aGUgdmVydGV4IGFuZCBmcmFnbWVudCBzaGFkZXJzIGFyZSBpZGVudGljYWwKLSAgICB0
eXBlZGVmIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2sqPiBV
bmlmb3JtQmxvY2tNYXA7CisgICAgdHlwZWRlZiBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgY29uc3Qg
c2g6OkludGVyZmFjZUJsb2NrICo+IFVuaWZvcm1CbG9ja01hcDsKICAgICBVbmlmb3JtQmxvY2tN
YXAgbGlua2VkVW5pZm9ybUJsb2NrczsKIAotICAgIEdMdWludCB2ZXJ0ZXhCbG9ja0NvdW50ID0g
MDsKICAgICBmb3IgKGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9jayAmdmVydGV4SW50ZXJmYWNlQmxv
Y2sgOiB2ZXJ0ZXhJbnRlcmZhY2VCbG9ja3MpCiAgICAgewogICAgICAgICBsaW5rZWRVbmlmb3Jt
QmxvY2tzW3ZlcnRleEludGVyZmFjZUJsb2NrLm5hbWVdID0gJnZlcnRleEludGVyZmFjZUJsb2Nr
OwotCi0gICAgICAgIC8vIE5vdGU6IHNoYXJlZCBhbmQgc3RkMTQwIGxheW91dHMgYXJlIGFsd2F5
cyBjb25zaWRlcmVkIGFjdGl2ZQotICAgICAgICBpZiAodmVydGV4SW50ZXJmYWNlQmxvY2suc3Rh
dGljVXNlIHx8IHZlcnRleEludGVyZmFjZUJsb2NrLmxheW91dCAhPSBzaDo6QkxPQ0tMQVlPVVRf
UEFDS0VEKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoKyt2ZXJ0ZXhCbG9ja0NvdW50ID4g
Y2Fwcy5tYXhWZXJ0ZXhVbmlmb3JtQmxvY2tzKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGluZm9Mb2cgPDwgIlZlcnRleCBzaGFkZXIgdW5pZm9ybSBibG9jayBjb3VudCBleGNlZWQg
R0xfTUFYX1ZFUlRFWF9VTklGT1JNX0JMT0NLUyAoIgotICAgICAgICAgICAgICAgICAgICAgICAg
PDwgY2Fwcy5tYXhWZXJ0ZXhVbmlmb3JtQmxvY2tzIDw8ICIpIjsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KICAgICB9CiAKLSAgICBHTHVp
bnQgZnJhZ21lbnRCbG9ja0NvdW50ID0gMDsKICAgICBmb3IgKGNvbnN0IHNoOjpJbnRlcmZhY2VC
bG9jayAmZnJhZ21lbnRJbnRlcmZhY2VCbG9jayA6IGZyYWdtZW50SW50ZXJmYWNlQmxvY2tzKQog
ICAgIHsKICAgICAgICAgYXV0byBlbnRyeSA9IGxpbmtlZFVuaWZvcm1CbG9ja3MuZmluZChmcmFn
bWVudEludGVyZmFjZUJsb2NrLm5hbWUpOwpAQCAtMTg2MiwyNiArMjE2Miw1OSBAQAogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgIH0K
KyAgICByZXR1cm4gdHJ1ZTsKK30KIAotICAgICAgICAvLyBOb3RlOiBzaGFyZWQgYW5kIHN0ZDE0
MCBsYXlvdXRzIGFyZSBhbHdheXMgY29uc2lkZXJlZCBhY3RpdmUKLSAgICAgICAgaWYgKGZyYWdt
ZW50SW50ZXJmYWNlQmxvY2suc3RhdGljVXNlIHx8Ci0gICAgICAgICAgICBmcmFnbWVudEludGVy
ZmFjZUJsb2NrLmxheW91dCAhPSBzaDo6QkxPQ0tMQVlPVVRfUEFDS0VEKQorYm9vbCBQcm9ncmFt
OjpsaW5rVW5pZm9ybUJsb2NrcyhJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBDYXBzICZjYXBzKQor
eworICAgIGlmIChtU3RhdGUubUF0dGFjaGVkQ29tcHV0ZVNoYWRlcikKKyAgICB7CisgICAgICAg
IGNvbnN0IFNoYWRlciAmY29tcHV0ZVNoYWRlciAgICAgICAgPSAqbVN0YXRlLm1BdHRhY2hlZENv
bXB1dGVTaGFkZXI7CisgICAgICAgIGNvbnN0IGF1dG8gJmNvbXB1dGVJbnRlcmZhY2VCbG9ja3Mg
PSBjb21wdXRlU2hhZGVyLmdldEludGVyZmFjZUJsb2NrcygpOworCisgICAgICAgIGlmICghdmFs
aWRhdGVVbmlmb3JtQmxvY2tzQ291bnQoCisgICAgICAgICAgICAgICAgY2Fwcy5tYXhDb21wdXRl
VW5pZm9ybUJsb2NrcywgY29tcHV0ZUludGVyZmFjZUJsb2NrcywKKyAgICAgICAgICAgICAgICAi
Q29tcHV0ZSBzaGFkZXIgdW5pZm9ybSBibG9jayBjb3VudCBleGNlZWRzIEdMX01BWF9DT01QVVRF
X1VOSUZPUk1fQkxPQ0tTICgiLAorICAgICAgICAgICAgICAgIGluZm9Mb2cpKQogICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAoKytmcmFnbWVudEJsb2NrQ291bnQgPiBjYXBzLm1heEZyYWdtZW50
VW5pZm9ybUJsb2NrcykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbmZvTG9nCi0g
ICAgICAgICAgICAgICAgICAgIDw8ICJGcmFnbWVudCBzaGFkZXIgdW5pZm9ybSBibG9jayBjb3Vu
dCBleGNlZWQgR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQkxPQ0tTICgiCi0gICAgICAgICAgICAg
ICAgICAgIDw8IGNhcHMubWF4RnJhZ21lbnRVbmlmb3JtQmxvY2tzIDw8ICIpIjsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgY29u
c3QgU2hhZGVyICZ2ZXJ0ZXhTaGFkZXIgICA9ICptU3RhdGUubUF0dGFjaGVkVmVydGV4U2hhZGVy
OworICAgIGNvbnN0IFNoYWRlciAmZnJhZ21lbnRTaGFkZXIgPSAqbVN0YXRlLm1BdHRhY2hlZEZy
YWdtZW50U2hhZGVyOworCisgICAgY29uc3QgYXV0byAmdmVydGV4SW50ZXJmYWNlQmxvY2tzICAg
PSB2ZXJ0ZXhTaGFkZXIuZ2V0SW50ZXJmYWNlQmxvY2tzKCk7CisgICAgY29uc3QgYXV0byAmZnJh
Z21lbnRJbnRlcmZhY2VCbG9ja3MgPSBmcmFnbWVudFNoYWRlci5nZXRJbnRlcmZhY2VCbG9ja3Mo
KTsKKworICAgIGlmICghdmFsaWRhdGVVbmlmb3JtQmxvY2tzQ291bnQoCisgICAgICAgICAgICBj
YXBzLm1heFZlcnRleFVuaWZvcm1CbG9ja3MsIHZlcnRleEludGVyZmFjZUJsb2NrcywKKyAgICAg
ICAgICAgICJWZXJ0ZXggc2hhZGVyIHVuaWZvcm0gYmxvY2sgY291bnQgZXhjZWVkcyBHTF9NQVhf
VkVSVEVYX1VOSUZPUk1fQkxPQ0tTICgiLCBpbmZvTG9nKSkKKyAgICB7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgaWYgKCF2YWxpZGF0ZVVuaWZvcm1CbG9ja3NDb3VudCgKKyAg
ICAgICAgICAgIGNhcHMubWF4RnJhZ21lbnRVbmlmb3JtQmxvY2tzLCBmcmFnbWVudEludGVyZmFj
ZUJsb2NrcywKKyAgICAgICAgICAgICJGcmFnbWVudCBzaGFkZXIgdW5pZm9ybSBibG9jayBjb3Vu
dCBleGNlZWRzIEdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0JMT0NLUyAoIiwKKyAgICAgICAgICAg
IGluZm9Mb2cpKQorICAgIHsKKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlm
ICghdmFsaWRhdGVWZXJ0ZXhBbmRGcmFnbWVudEludGVyZmFjZUJsb2Nrcyh2ZXJ0ZXhJbnRlcmZh
Y2VCbG9ja3MsIGZyYWdtZW50SW50ZXJmYWNlQmxvY2tzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvTG9nKSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBQcm9ncmFt
OjphcmVNYXRjaGluZ0ludGVyZmFjZUJsb2NrcyhnbDo6SW5mb0xvZyAmaW5mb0xvZywgY29uc3Qg
c2g6OkludGVyZmFjZUJsb2NrICZ2ZXJ0ZXhJbnRlcmZhY2VCbG9jaywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrICZmcmFn
bWVudEludGVyZmFjZUJsb2NrKQorYm9vbCBQcm9ncmFtOjphcmVNYXRjaGluZ0ludGVyZmFjZUJs
b2NrcyhnbDo6SW5mb0xvZyAmaW5mb0xvZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrICZ2ZXJ0ZXhJbnRlcmZhY2VCbG9j
aywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2g6Oklu
dGVyZmFjZUJsb2NrICZmcmFnbWVudEludGVyZmFjZUJsb2NrKSBjb25zdAogewogICAgIGNvbnN0
IGNoYXIqIGJsb2NrTmFtZSA9IHZlcnRleEludGVyZmFjZUJsb2NrLm5hbWUuY19zdHIoKTsKICAg
ICAvLyB2YWxpZGF0ZSBibG9ja3MgZm9yIHRoZSBzYW1lIG1lbWJlciB0eXBlcwpAQCAtMTk5Myw3
ICsyMzI2LDExIEBACiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUHJvZ3JhbTo6bGlua1Zh
bGlkYXRlVmFyeWluZ3MoSW5mb0xvZyAmaW5mb0xvZywgY29uc3Qgc3RkOjpzdHJpbmcgJnZhcnlp
bmdOYW1lLCBjb25zdCBzaDo6VmFyeWluZyAmdmVydGV4VmFyeWluZywgY29uc3Qgc2g6OlZhcnlp
bmcgJmZyYWdtZW50VmFyeWluZykKK2Jvb2wgUHJvZ3JhbTo6bGlua1ZhbGlkYXRlVmFyeWluZ3Mo
SW5mb0xvZyAmaW5mb0xvZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcgJnZhcnlpbmdOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzaDo6VmFyeWluZyAmdmVydGV4VmFyeWluZywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2g6OlZhcnlpbmcgJmZyYWdtZW50VmFyeWluZywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNoYWRlclZlcnNpb24pCiB7
CiAgICAgaWYgKCFsaW5rVmFsaWRhdGVWYXJpYWJsZXNCYXNlKGluZm9Mb2csIHZhcnlpbmdOYW1l
LCB2ZXJ0ZXhWYXJ5aW5nLCBmcmFnbWVudFZhcnlpbmcsIGZhbHNlKSkKICAgICB7CkBAIC0yMDAy
LDEwICsyMzM5LDE4IEBACiAKICAgICBpZiAoIXNoOjpJbnRlcnBvbGF0aW9uVHlwZXNNYXRjaCh2
ZXJ0ZXhWYXJ5aW5nLmludGVycG9sYXRpb24sIGZyYWdtZW50VmFyeWluZy5pbnRlcnBvbGF0aW9u
KSkKICAgICB7Ci0gICAgICAgIGluZm9Mb2cgPDwgIkludGVycG9sYXRpb24gdHlwZXMgZm9yICIg
PDwgdmFyeWluZ05hbWUgPDwgIiBkaWZmZXIgYmV0d2VlbiB2ZXJ0ZXggYW5kIGZyYWdtZW50IHNo
YWRlcnMiOworICAgICAgICBpbmZvTG9nIDw8ICJJbnRlcnBvbGF0aW9uIHR5cGVzIGZvciAiIDw8
IHZhcnlpbmdOYW1lCisgICAgICAgICAgICAgICAgPDwgIiBkaWZmZXIgYmV0d2VlbiB2ZXJ0ZXgg
YW5kIGZyYWdtZW50IHNoYWRlcnMuIjsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAor
ICAgIGlmIChzaGFkZXJWZXJzaW9uID09IDEwMCAmJiB2ZXJ0ZXhWYXJ5aW5nLmlzSW52YXJpYW50
ICE9IGZyYWdtZW50VmFyeWluZy5pc0ludmFyaWFudCkKKyAgICB7CisgICAgICAgIGluZm9Mb2cg
PDwgIkludmFyaWFuY2UgZm9yICIgPDwgdmFyeWluZ05hbWUKKyAgICAgICAgICAgICAgICA8PCAi
IGRpZmZlcnMgYmV0d2VlbiB2ZXJ0ZXggYW5kIGZyYWdtZW50IHNoYWRlcnMuIjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yMDE3LDcg
KzIzNjIsNyBAQAogCiAgICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IHVuaXF1ZU5hbWVzOwogCi0g
ICAgZm9yIChjb25zdCBzdGQ6OnN0cmluZyAmdGZWYXJ5aW5nTmFtZSA6IG1EYXRhLm1UcmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmdOYW1lcykKKyAgICBmb3IgKGNvbnN0IHN0ZDo6c3RyaW5nICZ0ZlZh
cnlpbmdOYW1lIDogbVN0YXRlLm1UcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdOYW1lcykKICAgICB7
CiAgICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKICAgICAgICAgZm9yIChjb25zdCBzaDo6VmFy
eWluZyAqdmFyeWluZyA6IHZhcnlpbmdzKQpAQCAtMjA0MCw3ICsyMzg1LDcgQEAKIAogICAgICAg
ICAgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IEludmVzdGlnYXRlIGltcGxlbWVudGF0aW9uIGxp
bWl0cyBvbiBEM0QxMQogICAgICAgICAgICAgICAgIHNpemVfdCBjb21wb25lbnRDb3VudCA9IGds
OjpWYXJpYWJsZUNvbXBvbmVudENvdW50KHZhcnlpbmctPnR5cGUpOwotICAgICAgICAgICAgICAg
IGlmIChtRGF0YS5tVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlID09IEdMX1NFUEFSQVRFX0FU
VFJJQlMgJiYKKyAgICAgICAgICAgICAgICBpZiAobVN0YXRlLm1UcmFuc2Zvcm1GZWVkYmFja0J1
ZmZlck1vZGUgPT0gR0xfU0VQQVJBVEVfQVRUUklCUyAmJgogICAgICAgICAgICAgICAgICAgICBj
b21wb25lbnRDb3VudCA+IGNhcHMubWF4VHJhbnNmb3JtRmVlZGJhY2tTZXBhcmF0ZUNvbXBvbmVu
dHMpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBpbmZvTG9nIDw8ICJU
cmFuc2Zvcm0gZmVlZGJhY2sgdmFyeWluZydzICIgPDwgdmFyeWluZy0+bmFtZSA8PCAiIGNvbXBv
bmVudHMgKCIKQEAgLTIwNjYsNyArMjQxMSw3IEBACiAgICAgICAgIFVOVVNFRF9BU1NFUlRJT05f
VkFSSUFCTEUoZm91bmQpOwogICAgIH0KIAotICAgIGlmIChtRGF0YS5tVHJhbnNmb3JtRmVlZGJh
Y2tCdWZmZXJNb2RlID09IEdMX0lOVEVSTEVBVkVEX0FUVFJJQlMgJiYKKyAgICBpZiAobVN0YXRl
Lm1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUgPT0gR0xfSU5URVJMRUFWRURfQVRUUklCUyAm
JgogICAgICAgICB0b3RhbENvbXBvbmVudHMgPiBjYXBzLm1heFRyYW5zZm9ybUZlZWRiYWNrSW50
ZXJsZWF2ZWRDb21wb25lbnRzKQogICAgIHsKICAgICAgICAgaW5mb0xvZyA8PCAiVHJhbnNmb3Jt
IGZlZWRiYWNrIHZhcnlpbmcgdG90YWwgY29tcG9uZW50cyAoIiA8PCB0b3RhbENvbXBvbmVudHMK
QEAgLTIwODEsMTQgKzI0MjYsMTQgQEAKIHZvaWQgUHJvZ3JhbTo6Z2F0aGVyVHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5ncyhjb25zdCBzdGQ6OnZlY3Rvcjxjb25zdCBzaDo6VmFyeWluZyAqPiAmdmFy
eWluZ3MpCiB7CiAgICAgLy8gR2F0aGVyIHRoZSBsaW5rZWQgdmFyeWluZ3MgdGhhdCBhcmUgdXNl
ZCBmb3IgdHJhbnNmb3JtIGZlZWRiYWNrLCB0aGV5IHNob3VsZCBhbGwgZXhpc3QuCi0gICAgbURh
dGEubVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ1ZhcnMuY2xlYXIoKTsKLSAgICBmb3IgKGNvbnN0
IHN0ZDo6c3RyaW5nICZ0ZlZhcnlpbmdOYW1lIDogbURhdGEubVRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZ05hbWVzKQorICAgIG1TdGF0ZS5tVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nVmFycy5jbGVh
cigpOworICAgIGZvciAoY29uc3Qgc3RkOjpzdHJpbmcgJnRmVmFyeWluZ05hbWUgOiBtU3RhdGUu
bVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ05hbWVzKQogICAgIHsKICAgICAgICAgZm9yIChjb25z
dCBzaDo6VmFyeWluZyAqdmFyeWluZyA6IHZhcnlpbmdzKQogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAodGZWYXJ5aW5nTmFtZSA9PSB2YXJ5aW5nLT5uYW1lKQogICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIG1EYXRhLm1UcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdWYXJzLnB1c2hfYmFj
aygqdmFyeWluZyk7CisgICAgICAgICAgICAgICAgbVN0YXRlLm1UcmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmdWYXJzLnB1c2hfYmFjaygqdmFyeWluZyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIxMDAsNyArMjQ0NSw3IEBACiAgICAgc3RkOjpz
ZXQ8c3RkOjpzdHJpbmc+IHVuaXF1ZU5hbWVzOwogICAgIHN0ZDo6dmVjdG9yPGNvbnN0IHNoOjpW
YXJ5aW5nICo+IHZhcnlpbmdzOwogCi0gICAgZm9yIChjb25zdCBzaDo6VmFyeWluZyAmdmFyeWlu
ZyA6IG1EYXRhLm1BdHRhY2hlZFZlcnRleFNoYWRlci0+Z2V0VmFyeWluZ3MoKSkKKyAgICBmb3Ig
KGNvbnN0IHNoOjpWYXJ5aW5nICZ2YXJ5aW5nIDogbVN0YXRlLm1BdHRhY2hlZFZlcnRleFNoYWRl
ci0+Z2V0VmFyeWluZ3MoKSkKICAgICB7CiAgICAgICAgIGlmICh1bmlxdWVOYW1lcy5jb3VudCh2
YXJ5aW5nLm5hbWUpID09IDApCiAgICAgICAgIHsKQEAgLTIxMDksNyArMjQ1NCw3IEBACiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBmb3IgKGNvbnN0IHNoOjpWYXJ5aW5nICZ2YXJ5aW5nIDogbURh
dGEubUF0dGFjaGVkRnJhZ21lbnRTaGFkZXItPmdldFZhcnlpbmdzKCkpCisgICAgZm9yIChjb25z
dCBzaDo6VmFyeWluZyAmdmFyeWluZyA6IG1TdGF0ZS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlci0+
Z2V0VmFyeWluZ3MoKSkKICAgICB7CiAgICAgICAgIGlmICh1bmlxdWVOYW1lcy5jb3VudCh2YXJ5
aW5nLm5hbWUpID09IDApCiAgICAgICAgIHsKQEAgLTIxMjMsNyArMjQ2OCw3IEBACiAKIHZvaWQg
UHJvZ3JhbTo6bGlua091dHB1dFZhcmlhYmxlcygpCiB7Ci0gICAgY29uc3QgU2hhZGVyICpmcmFn
bWVudFNoYWRlciA9IG1EYXRhLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyOworICAgIGNvbnN0IFNo
YWRlciAqZnJhZ21lbnRTaGFkZXIgPSBtU3RhdGUubUF0dGFjaGVkRnJhZ21lbnRTaGFkZXI7CiAg
ICAgQVNTRVJUKGZyYWdtZW50U2hhZGVyICE9IG51bGxwdHIpOwogCiAgICAgLy8gU2tpcCB0aGlz
IHN0ZXAgZm9yIEdMRVMyIHNoYWRlcnMuCkBAIC0yMTUyLDczICsyNDk3LDk0IEBACiAgICAgICAg
ICAgICAgZWxlbWVudEluZGV4KyspCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IGludCBs
b2NhdGlvbiA9IGJhc2VMb2NhdGlvbiArIGVsZW1lbnRJbmRleDsKLSAgICAgICAgICAgIEFTU0VS
VChtRGF0YS5tT3V0cHV0VmFyaWFibGVzLmNvdW50KGxvY2F0aW9uKSA9PSAwKTsKKyAgICAgICAg
ICAgIEFTU0VSVChtU3RhdGUubU91dHB1dFZhcmlhYmxlcy5jb3VudChsb2NhdGlvbikgPT0gMCk7
CiAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZWxlbWVudCA9IG91dHB1dFZhcmlhYmxlLmlzQXJy
YXkoKSA/IGVsZW1lbnRJbmRleCA6IEdMX0lOVkFMSURfSU5ERVg7Ci0gICAgICAgICAgICBtRGF0
YS5tT3V0cHV0VmFyaWFibGVzW2xvY2F0aW9uXSA9CisgICAgICAgICAgICBtU3RhdGUubU91dHB1
dFZhcmlhYmxlc1tsb2NhdGlvbl0gPQogICAgICAgICAgICAgICAgIFZhcmlhYmxlTG9jYXRpb24o
b3V0cHV0VmFyaWFibGUubmFtZSwgZWxlbWVudCwgb3V0cHV0VmFyaWFibGVJbmRleCk7CiAgICAg
ICAgIH0KICAgICB9CiB9CiAKLWJvb2wgUHJvZ3JhbTo6ZmxhdHRlblVuaWZvcm1zQW5kQ2hlY2tD
YXBzKGNvbnN0IENhcHMgJmNhcHMsIEluZm9Mb2cgJmluZm9Mb2cpCitib29sIFByb2dyYW06OmZs
YXR0ZW5Vbmlmb3Jtc0FuZENoZWNrQ2Fwc0ZvclNoYWRlcihjb25zdCBnbDo6U2hhZGVyICZzaGFk
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgbWF4VW5pZm9ybUNvbXBvbmVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWF4VGV4dHVyZUltYWdlVW5pdHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyAmY29tcG9uZW50c0Vycm9yTWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzYW1wbGVyRXJy
b3JNZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjp2ZWN0b3I8TGlua2VkVW5pZm9ybT4gJnNhbXBsZXJVbmlmb3JtcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZm9Mb2cgJmlu
Zm9Mb2cpCiB7Ci0gICAgY29uc3QgZ2w6OlNoYWRlciAqdmVydGV4U2hhZGVyID0gbURhdGEuZ2V0
QXR0YWNoZWRWZXJ0ZXhTaGFkZXIoKTsKLSAgICBWZWN0b3JBbmRTYW1wbGVyQ291bnQgdnNDb3Vu
dHM7Ci0KLSAgICBzdGQ6OnZlY3RvcjxMaW5rZWRVbmlmb3JtPiBzYW1wbGVyVW5pZm9ybXM7Ci0K
LSAgICBmb3IgKGNvbnN0IHNoOjpVbmlmb3JtICZ1bmlmb3JtIDogdmVydGV4U2hhZGVyLT5nZXRV
bmlmb3JtcygpKQorICAgIFZlY3RvckFuZFNhbXBsZXJDb3VudCB2YXNDb3VudDsKKyAgICBmb3Ig
KGNvbnN0IHNoOjpVbmlmb3JtICZ1bmlmb3JtIDogc2hhZGVyLmdldFVuaWZvcm1zKCkpCiAgICAg
ewogICAgICAgICBpZiAodW5pZm9ybS5zdGF0aWNVc2UpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHZzQ291bnRzICs9IGZsYXR0ZW5Vbmlmb3JtKHVuaWZvcm0sIHVuaWZvcm0ubmFtZSwgJnNhbXBs
ZXJVbmlmb3Jtcyk7CisgICAgICAgICAgICB2YXNDb3VudCArPSBmbGF0dGVuVW5pZm9ybSh1bmlm
b3JtLCB1bmlmb3JtLm5hbWUsICZzYW1wbGVyVW5pZm9ybXMpOwogICAgICAgICB9CiAgICAgfQog
Ci0gICAgaWYgKHZzQ291bnRzLnZlY3RvckNvdW50ID4gY2Fwcy5tYXhWZXJ0ZXhVbmlmb3JtVmVj
dG9ycykKKyAgICBpZiAodmFzQ291bnQudmVjdG9yQ291bnQgPiBtYXhVbmlmb3JtQ29tcG9uZW50
cykKICAgICB7Ci0gICAgICAgIGluZm9Mb2cgPDwgIlZlcnRleCBzaGFkZXIgYWN0aXZlIHVuaWZv
cm1zIGV4Y2VlZCBNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUyAoIgotICAgICAgICAgICAgICAg
IDw8IGNhcHMubWF4VmVydGV4VW5pZm9ybVZlY3RvcnMgPDwgIikuIjsKKyAgICAgICAgaW5mb0xv
ZyA8PCBjb21wb25lbnRzRXJyb3JNZXNzYWdlIDw8IG1heFVuaWZvcm1Db21wb25lbnRzIDw8ICIp
LiI7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAodnNDb3VudHMuc2Ft
cGxlckNvdW50ID4gY2Fwcy5tYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cykKKyAgICBpZiAodmFz
Q291bnQuc2FtcGxlckNvdW50ID4gbWF4VGV4dHVyZUltYWdlVW5pdHMpCiAgICAgewotICAgICAg
ICBpbmZvTG9nIDw8ICJWZXJ0ZXggc2hhZGVyIHNhbXBsZXIgY291bnQgZXhjZWVkcyBNQVhfVkVS
VEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMgKCIKLSAgICAgICAgICAgICAgICA8PCBjYXBzLm1heFZl
cnRleFRleHR1cmVJbWFnZVVuaXRzIDw8ICIpLiI7CisgICAgICAgIGluZm9Mb2cgPDwgc2FtcGxl
ckVycm9yTWVzc2FnZSA8PCBtYXhUZXh0dXJlSW1hZ2VVbml0cyA8PCAiKS4iOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgY29uc3QgZ2w6OlNoYWRlciAqZnJhZ21lbnRTaGFk
ZXIgPSBtRGF0YS5nZXRBdHRhY2hlZEZyYWdtZW50U2hhZGVyKCk7Ci0gICAgVmVjdG9yQW5kU2Ft
cGxlckNvdW50IGZzQ291bnRzOworICAgIHJldHVybiB0cnVlOworfQogCi0gICAgZm9yIChjb25z
dCBzaDo6VW5pZm9ybSAmdW5pZm9ybSA6IGZyYWdtZW50U2hhZGVyLT5nZXRVbmlmb3JtcygpKQor
Ym9vbCBQcm9ncmFtOjpmbGF0dGVuVW5pZm9ybXNBbmRDaGVja0NhcHMoY29uc3QgQ2FwcyAmY2Fw
cywgSW5mb0xvZyAmaW5mb0xvZykKK3sKKyAgICBzdGQ6OnZlY3RvcjxMaW5rZWRVbmlmb3JtPiBz
YW1wbGVyVW5pZm9ybXM7CisKKyAgICBpZiAobVN0YXRlLm1BdHRhY2hlZENvbXB1dGVTaGFkZXIp
CiAgICAgewotICAgICAgICBpZiAodW5pZm9ybS5zdGF0aWNVc2UpCisgICAgICAgIGNvbnN0IGds
OjpTaGFkZXIgKmNvbXB1dGVTaGFkZXIgPSBtU3RhdGUuZ2V0QXR0YWNoZWRDb21wdXRlU2hhZGVy
KCk7CisKKyAgICAgICAgLy8gVE9ETyAobXJhZGV2KTogY2hlY2sgd2hldGhlciB3ZSBuZWVkIGZp
bmVyLWdyYWluZWQgY29tcG9uZW50IGNvdW50aW5nCisgICAgICAgIGlmICghZmxhdHRlblVuaWZv
cm1zQW5kQ2hlY2tDYXBzRm9yU2hhZGVyKAorICAgICAgICAgICAgICAgICpjb21wdXRlU2hhZGVy
LCBjYXBzLm1heENvbXB1dGVVbmlmb3JtQ29tcG9uZW50cyAvIDQsCisgICAgICAgICAgICAgICAg
Y2Fwcy5tYXhDb21wdXRlVGV4dHVyZUltYWdlVW5pdHMsCisgICAgICAgICAgICAgICAgIkNvbXB1
dGUgc2hhZGVyIGFjdGl2ZSB1bmlmb3JtcyBleGNlZWQgTUFYX0NPTVBVVEVfVU5JRk9STV9DT01Q
T05FTlRTICgiLAorICAgICAgICAgICAgICAgICJDb21wdXRlIHNoYWRlciBzYW1wbGVyIGNvdW50
IGV4Y2VlZHMgTUFYX0NPTVBVVEVfVEVYVFVSRV9JTUFHRV9VTklUUyAoIiwKKyAgICAgICAgICAg
ICAgICBzYW1wbGVyVW5pZm9ybXMsIGluZm9Mb2cpKQogICAgICAgICB7Ci0gICAgICAgICAgICBm
c0NvdW50cyArPSBmbGF0dGVuVW5pZm9ybSh1bmlmb3JtLCB1bmlmb3JtLm5hbWUsICZzYW1wbGVy
VW5pZm9ybXMpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQot
Ci0gICAgaWYgKGZzQ291bnRzLnZlY3RvckNvdW50ID4gY2Fwcy5tYXhGcmFnbWVudFVuaWZvcm1W
ZWN0b3JzKQorICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGluZm9Mb2cgPDwgIkZyYWdtZW50IHNo
YWRlciBhY3RpdmUgdW5pZm9ybXMgZXhjZWVkIE1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMg
KCIKLSAgICAgICAgICAgICAgICA8PCBjYXBzLm1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMgPDwg
IikuIjsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICAgICAgY29uc3QgZ2w6OlNo
YWRlciAqdmVydGV4U2hhZGVyID0gbVN0YXRlLmdldEF0dGFjaGVkVmVydGV4U2hhZGVyKCk7CiAK
LSAgICBpZiAoZnNDb3VudHMuc2FtcGxlckNvdW50ID4gY2Fwcy5tYXhUZXh0dXJlSW1hZ2VVbml0
cykKLSAgICB7Ci0gICAgICAgIGluZm9Mb2cgPDwgIkZyYWdtZW50IHNoYWRlciBzYW1wbGVyIGNv
dW50IGV4Y2VlZHMgTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMgKCIKLSAgICAgICAgICAgICAgICA8
PCBjYXBzLm1heFRleHR1cmVJbWFnZVVuaXRzIDw8ICIpLiI7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgaWYgKCFmbGF0dGVuVW5pZm9ybXNBbmRDaGVja0NhcHNGb3JTaGFkZXIoCisg
ICAgICAgICAgICAgICAgKnZlcnRleFNoYWRlciwgY2Fwcy5tYXhWZXJ0ZXhVbmlmb3JtVmVjdG9y
cywgY2Fwcy5tYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cywKKyAgICAgICAgICAgICAgICAiVmVy
dGV4IHNoYWRlciBhY3RpdmUgdW5pZm9ybXMgZXhjZWVkIE1BWF9WRVJURVhfVU5JRk9STV9WRUNU
T1JTICgiLAorICAgICAgICAgICAgICAgICJWZXJ0ZXggc2hhZGVyIHNhbXBsZXIgY291bnQgZXhj
ZWVkcyBNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMgKCIsCisgICAgICAgICAgICAgICAg
c2FtcGxlclVuaWZvcm1zLCBpbmZvTG9nKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisgICAgICAgIGNvbnN0IGdsOjpTaGFkZXIgKmZyYWdtZW50U2hh
ZGVyID0gbVN0YXRlLmdldEF0dGFjaGVkRnJhZ21lbnRTaGFkZXIoKTsKKworICAgICAgICBpZiAo
IWZsYXR0ZW5Vbmlmb3Jtc0FuZENoZWNrQ2Fwc0ZvclNoYWRlcigKKyAgICAgICAgICAgICAgICAq
ZnJhZ21lbnRTaGFkZXIsIGNhcHMubWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycywgY2Fwcy5tYXhU
ZXh0dXJlSW1hZ2VVbml0cywKKyAgICAgICAgICAgICAgICAiRnJhZ21lbnQgc2hhZGVyIGFjdGl2
ZSB1bmlmb3JtcyBleGNlZWQgTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUyAoIiwKKyAgICAg
ICAgICAgICAgICAiRnJhZ21lbnQgc2hhZGVyIHNhbXBsZXIgY291bnQgZXhjZWVkcyBNQVhfVEVY
VFVSRV9JTUFHRV9VTklUUyAoIiwgc2FtcGxlclVuaWZvcm1zLAorICAgICAgICAgICAgICAgIGlu
Zm9Mb2cpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
ICAgICB9CiAKLSAgICBtU2FtcGxlclVuaWZvcm1SYW5nZS5zdGFydCA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkIGludD4obURhdGEubVVuaWZvcm1zLnNpemUoKSk7CisgICAgbVNhbXBsZXJVbmlmb3Jt
UmFuZ2Uuc3RhcnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG1TdGF0ZS5tVW5pZm9ybXMu
c2l6ZSgpKTsKICAgICBtU2FtcGxlclVuaWZvcm1SYW5nZS5lbmQgPQogICAgICAgICBtU2FtcGxl
clVuaWZvcm1SYW5nZS5zdGFydCArIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc2FtcGxlclVu
aWZvcm1zLnNpemUoKSk7CiAKLSAgICBtRGF0YS5tVW5pZm9ybXMuaW5zZXJ0KG1EYXRhLm1Vbmlm
b3Jtcy5lbmQoKSwgc2FtcGxlclVuaWZvcm1zLmJlZ2luKCksIHNhbXBsZXJVbmlmb3Jtcy5lbmQo
KSk7CisgICAgbVN0YXRlLm1Vbmlmb3Jtcy5pbnNlcnQobVN0YXRlLm1Vbmlmb3Jtcy5lbmQoKSwg
c2FtcGxlclVuaWZvcm1zLmJlZ2luKCksIHNhbXBsZXJVbmlmb3Jtcy5lbmQoKSk7CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KQEAgLTIyNDksNyArMjYxNSw4IEBACiAKICAgICAvLyBOb3QgYSBzdHJ1
Y3QKICAgICBib29sIGlzU2FtcGxlciA9IElzU2FtcGxlclR5cGUodW5pZm9ybS50eXBlKTsKLSAg
ICBpZiAoIVVuaWZvcm1Jbkxpc3QobURhdGEuZ2V0VW5pZm9ybXMoKSwgZnVsbE5hbWUpICYmICFV
bmlmb3JtSW5MaXN0KCpzYW1wbGVyVW5pZm9ybXMsIGZ1bGxOYW1lKSkKKyAgICBpZiAoIVVuaWZv
cm1Jbkxpc3QobVN0YXRlLmdldFVuaWZvcm1zKCksIGZ1bGxOYW1lKSAmJgorICAgICAgICAhVW5p
Zm9ybUluTGlzdCgqc2FtcGxlclVuaWZvcm1zLCBmdWxsTmFtZSkpCiAgICAgewogICAgICAgICBn
bDo6TGlua2VkVW5pZm9ybSBsaW5rZWRVbmlmb3JtKHVuaWZvcm0udHlwZSwgdW5pZm9ybS5wcmVj
aXNpb24sIGZ1bGxOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuaWZvcm0uYXJyYXlTaXplLCAtMSwKQEAgLTIyNjMsNyArMjYzMCw3IEBACiAgICAgICAgIH0K
ICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBtRGF0YS5tVW5pZm9ybXMucHVz
aF9iYWNrKGxpbmtlZFVuaWZvcm0pOworICAgICAgICAgICAgbVN0YXRlLm1Vbmlmb3Jtcy5wdXNo
X2JhY2sobGlua2VkVW5pZm9ybSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIyODAsMTQgKzI2
NDcsMzkgQEAKIAogdm9pZCBQcm9ncmFtOjpnYXRoZXJJbnRlcmZhY2VCbG9ja0luZm8oKQogewor
ICAgIEFTU0VSVChtU3RhdGUubVVuaWZvcm1CbG9ja3MuZW1wdHkoKSk7CisKKyAgICBpZiAobVN0
YXRlLm1BdHRhY2hlZENvbXB1dGVTaGFkZXIpCisgICAgeworICAgICAgICBjb25zdCBnbDo6U2hh
ZGVyICpjb21wdXRlU2hhZGVyID0gbVN0YXRlLmdldEF0dGFjaGVkQ29tcHV0ZVNoYWRlcigpOwor
CisgICAgICAgIGZvciAoY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrICZjb21wdXRlQmxvY2sgOiBj
b21wdXRlU2hhZGVyLT5nZXRJbnRlcmZhY2VCbG9ja3MoKSkKKyAgICAgICAgeworCisgICAgICAg
ICAgICAvLyBPbmx5ICdwYWNrZWQnIGJsb2NrcyBhcmUgYWxsb3dlZCB0byBiZSBjb25zaWRlcmVk
IGluYWN0aXZlLgorICAgICAgICAgICAgaWYgKCFjb21wdXRlQmxvY2suc3RhdGljVXNlICYmIGNv
bXB1dGVCbG9jay5sYXlvdXQgPT0gc2g6OkJMT0NLTEFZT1VUX1BBQ0tFRCkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgZm9yIChnbDo6VW5pZm9ybUJsb2NrICZibG9j
ayA6IG1TdGF0ZS5tVW5pZm9ybUJsb2NrcykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBpZiAoYmxvY2submFtZSA9PSBjb21wdXRlQmxvY2submFtZSkKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIGJsb2NrLmNvbXB1dGVTdGF0aWNVc2UgPSBjb21wdXRlQmxv
Y2suc3RhdGljVXNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgZGVmaW5lVW5pZm9ybUJsb2NrKGNvbXB1dGVCbG9jaywgR0xfQ09NUFVURV9TSEFERVIp
OworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBzdGQ6OnNldDxzdGQ6
OnN0cmluZz4gdmlzaXRlZExpc3Q7CiAKLSAgICBjb25zdCBnbDo6U2hhZGVyICp2ZXJ0ZXhTaGFk
ZXIgPSBtRGF0YS5nZXRBdHRhY2hlZFZlcnRleFNoYWRlcigpOworICAgIGNvbnN0IGdsOjpTaGFk
ZXIgKnZlcnRleFNoYWRlciA9IG1TdGF0ZS5nZXRBdHRhY2hlZFZlcnRleFNoYWRlcigpOwogCi0g
ICAgQVNTRVJUKG1EYXRhLm1Vbmlmb3JtQmxvY2tzLmVtcHR5KCkpOwogICAgIGZvciAoY29uc3Qg
c2g6OkludGVyZmFjZUJsb2NrICZ2ZXJ0ZXhCbG9jayA6IHZlcnRleFNoYWRlci0+Z2V0SW50ZXJm
YWNlQmxvY2tzKCkpCiAgICAgewotICAgICAgICAvLyBPbmx5ICdwYWNrZWQnIGJsb2NrcyBhcmUg
YWxsb3dlZCB0byBiZSBjb25zaWRlcmVkIGluYWNpdmUuCisgICAgICAgIC8vIE9ubHkgJ3BhY2tl
ZCcgYmxvY2tzIGFyZSBhbGxvd2VkIHRvIGJlIGNvbnNpZGVyZWQgaW5hY3RpdmUuCiAgICAgICAg
IGlmICghdmVydGV4QmxvY2suc3RhdGljVXNlICYmIHZlcnRleEJsb2NrLmxheW91dCA9PSBzaDo6
QkxPQ0tMQVlPVVRfUEFDS0VEKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTIyOTgsMTcg
KzI2OTAsMTcgQEAKICAgICAgICAgdmlzaXRlZExpc3QuaW5zZXJ0KHZlcnRleEJsb2NrLm5hbWUp
OwogICAgIH0KIAotICAgIGNvbnN0IGdsOjpTaGFkZXIgKmZyYWdtZW50U2hhZGVyID0gbURhdGEu
Z2V0QXR0YWNoZWRGcmFnbWVudFNoYWRlcigpOworICAgIGNvbnN0IGdsOjpTaGFkZXIgKmZyYWdt
ZW50U2hhZGVyID0gbVN0YXRlLmdldEF0dGFjaGVkRnJhZ21lbnRTaGFkZXIoKTsKIAogICAgIGZv
ciAoY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrICZmcmFnbWVudEJsb2NrIDogZnJhZ21lbnRTaGFk
ZXItPmdldEludGVyZmFjZUJsb2NrcygpKQogICAgIHsKLSAgICAgICAgLy8gT25seSAncGFja2Vk
JyBibG9ja3MgYXJlIGFsbG93ZWQgdG8gYmUgY29uc2lkZXJlZCBpbmFjaXZlLgorICAgICAgICAv
LyBPbmx5ICdwYWNrZWQnIGJsb2NrcyBhcmUgYWxsb3dlZCB0byBiZSBjb25zaWRlcmVkIGluYWN0
aXZlLgogICAgICAgICBpZiAoIWZyYWdtZW50QmxvY2suc3RhdGljVXNlICYmIGZyYWdtZW50Qmxv
Y2subGF5b3V0ID09IHNoOjpCTE9DS0xBWU9VVF9QQUNLRUQpCiAgICAgICAgICAgICBjb250aW51
ZTsKIAogICAgICAgICBpZiAodmlzaXRlZExpc3QuY291bnQoZnJhZ21lbnRCbG9jay5uYW1lKSA+
IDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGZvciAoZ2w6OlVuaWZvcm1CbG9jayAmYmxvY2sg
OiBtRGF0YS5tVW5pZm9ybUJsb2NrcykKKyAgICAgICAgICAgIGZvciAoZ2w6OlVuaWZvcm1CbG9j
ayAmYmxvY2sgOiBtU3RhdGUubVVuaWZvcm1CbG9ja3MpCiAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgaWYgKGJsb2NrLm5hbWUgPT0gZnJhZ21lbnRCbG9jay5uYW1lKQogICAgICAgICAg
ICAgICAgIHsKQEAgLTIzNTYsNyArMjc0OCw3IEBACiAKICAgICAgICAgICAgIC8vIFNpbmNlIGJs
b2NrIHVuaWZvcm1zIGhhdmUgbm8gbG9jYXRpb24sIHdlIGRvbid0IG5lZWQgdG8gc3RvcmUgdGhl
bSBpbiB0aGUgdW5pZm9ybQogICAgICAgICAgICAgLy8gbG9jYXRpb25zIGxpc3QuCi0gICAgICAg
ICAgICBtRGF0YS5tVW5pZm9ybXMucHVzaF9iYWNrKG5ld1VuaWZvcm0pOworICAgICAgICAgICAg
bVN0YXRlLm1Vbmlmb3Jtcy5wdXNoX2JhY2sobmV3VW5pZm9ybSk7CiAgICAgICAgIH0KICAgICB9
CiB9CkBAIC0yMzYzLDcgKzI3NTUsNyBAQAogCiB2b2lkIFByb2dyYW06OmRlZmluZVVuaWZvcm1C
bG9jayhjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2sgJmludGVyZmFjZUJsb2NrLCBHTGVudW0gc2hh
ZGVyVHlwZSkKIHsKLSAgICBpbnQgYmxvY2tJbmRleCAgID0gc3RhdGljX2Nhc3Q8aW50PihtRGF0
YS5tVW5pZm9ybUJsb2Nrcy5zaXplKCkpOworICAgIGludCBibG9ja0luZGV4ICAgPSBzdGF0aWNf
Y2FzdDxpbnQ+KG1TdGF0ZS5tVW5pZm9ybUJsb2Nrcy5zaXplKCkpOwogICAgIHNpemVfdCBibG9j
a1NpemUgPSAwOwogCiAgICAgLy8gRG9uJ3QgZGVmaW5lIHRoaXMgYmxvY2sgYXQgYWxsIGlmIGl0
J3Mgbm90IGFjdGl2ZSBpbiB0aGUgaW1wbGVtZW50YXRpb24uCkBAIC0yMzc0LDkgKzI3NjYsOSBA
QAogCiAgICAgLy8gVHJhY2sgdGhlIGZpcnN0IGFuZCBsYXN0IHVuaWZvcm0gaW5kZXggdG8gZGV0
ZXJtaW5lIHRoZSByYW5nZSBvZiBhY3RpdmUgdW5pZm9ybXMgaW4gdGhlCiAgICAgLy8gYmxvY2su
Ci0gICAgc2l6ZV90IGZpcnN0QmxvY2tVbmlmb3JtSW5kZXggPSBtRGF0YS5tVW5pZm9ybXMuc2l6
ZSgpOworICAgIHNpemVfdCBmaXJzdEJsb2NrVW5pZm9ybUluZGV4ID0gbVN0YXRlLm1Vbmlmb3Jt
cy5zaXplKCk7CiAgICAgZGVmaW5lVW5pZm9ybUJsb2NrTWVtYmVycyhpbnRlcmZhY2VCbG9jay5m
aWVsZHMsIGludGVyZmFjZUJsb2NrLmZpZWxkUHJlZml4KCksIGJsb2NrSW5kZXgpOwotICAgIHNp
emVfdCBsYXN0QmxvY2tVbmlmb3JtSW5kZXggPSBtRGF0YS5tVW5pZm9ybXMuc2l6ZSgpOworICAg
IHNpemVfdCBsYXN0QmxvY2tVbmlmb3JtSW5kZXggPSBtU3RhdGUubVVuaWZvcm1zLnNpemUoKTsK
IAogICAgIHN0ZDo6dmVjdG9yPHVuc2lnbmVkIGludD4gYmxvY2tVbmlmb3JtSW5kZXhlczsKICAg
ICBmb3IgKHNpemVfdCBibG9ja1VuaWZvcm1JbmRleCA9IGZpcnN0QmxvY2tVbmlmb3JtSW5kZXg7
CkBAIC0yMzkyLDE1ICsyNzg0LDI2IEBACiAgICAgICAgICAgICBVbmlmb3JtQmxvY2sgYmxvY2so
aW50ZXJmYWNlQmxvY2submFtZSwgdHJ1ZSwgYXJyYXlFbGVtZW50KTsKICAgICAgICAgICAgIGJs
b2NrLm1lbWJlclVuaWZvcm1JbmRleGVzID0gYmxvY2tVbmlmb3JtSW5kZXhlczsKIAotICAgICAg
ICAgICAgaWYgKHNoYWRlclR5cGUgPT0gR0xfVkVSVEVYX1NIQURFUikKKyAgICAgICAgICAgIHN3
aXRjaCAoc2hhZGVyVHlwZSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBibG9jay52
ZXJ0ZXhTdGF0aWNVc2UgPSBpbnRlcmZhY2VCbG9jay5zdGF0aWNVc2U7CisgICAgICAgICAgICAg
ICAgY2FzZSBHTF9WRVJURVhfU0hBREVSOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgYmxvY2sudmVydGV4U3RhdGljVXNlID0gaW50ZXJmYWNlQmxvY2suc3RhdGljVXNl
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgY2FzZSBHTF9GUkFHTUVOVF9TSEFERVI6CisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBibG9jay5mcmFnbWVudFN0YXRpY1VzZSA9IGludGVyZmFjZUJsb2Nr
LnN0YXRpY1VzZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFVURV9TSEFERVI6CisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBibG9jay5jb21wdXRlU3RhdGljVXNlID0gaW50ZXJm
YWNlQmxvY2suc3RhdGljVXNlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAg
VU5SRUFDSEFCTEUoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoc2hhZGVyVHlwZSA9PSBHTF9GUkFHTUVOVF9T
SEFERVIpOwotICAgICAgICAgICAgICAgIGJsb2NrLmZyYWdtZW50U3RhdGljVXNlID0gaW50ZXJm
YWNlQmxvY2suc3RhdGljVXNlOwotICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBUT0RP
KGptYWRpbGwpOiBEZXRlcm1pbmUgaWYgd2UgY2FuIGV2ZXIgaGF2ZSBhbiBpbmFjdGl2ZSBhcnJh
eSBlbGVtZW50IGJsb2NrLgogICAgICAgICAgICAgc2l6ZV90IGJsb2NrRWxlbWVudFNpemUgPSAw
OwpAQCAtMjQxMSw3ICsyODE0LDcgQEAKIAogICAgICAgICAgICAgQVNTRVJUKGJsb2NrRWxlbWVu
dFNpemUgPT0gYmxvY2tTaXplKTsKICAgICAgICAgICAgIGJsb2NrLmRhdGFTaXplID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgaW50PihibG9ja0VsZW1lbnRTaXplKTsKLSAgICAgICAgICAgIG1EYXRh
Lm1Vbmlmb3JtQmxvY2tzLnB1c2hfYmFjayhibG9jayk7CisgICAgICAgICAgICBtU3RhdGUubVVu
aWZvcm1CbG9ja3MucHVzaF9iYWNrKGJsb2NrKTsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNl
CkBAIC0yNDE5LDE4ICsyODIyLDI5IEBACiAgICAgICAgIFVuaWZvcm1CbG9jayBibG9jayhpbnRl
cmZhY2VCbG9jay5uYW1lLCBmYWxzZSwgMCk7CiAgICAgICAgIGJsb2NrLm1lbWJlclVuaWZvcm1J
bmRleGVzID0gYmxvY2tVbmlmb3JtSW5kZXhlczsKIAotICAgICAgICBpZiAoc2hhZGVyVHlwZSA9
PSBHTF9WRVJURVhfU0hBREVSKQorICAgICAgICBzd2l0Y2ggKHNoYWRlclR5cGUpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGJsb2NrLnZlcnRleFN0YXRpY1VzZSA9IGludGVyZmFjZUJsb2NrLnN0
YXRpY1VzZTsKKyAgICAgICAgICAgIGNhc2UgR0xfVkVSVEVYX1NIQURFUjoKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBibG9jay52ZXJ0ZXhTdGF0aWNVc2UgPSBpbnRlcmZhY2VCbG9j
ay5zdGF0aWNVc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBjYXNlIEdMX0ZSQUdNRU5UX1NIQURFUjoKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBibG9jay5mcmFnbWVudFN0YXRpY1VzZSA9IGludGVyZmFjZUJsb2NrLnN0YXRpY1Vz
ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNh
c2UgR0xfQ09NUFVURV9TSEFERVI6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYmxv
Y2suY29tcHV0ZVN0YXRpY1VzZSA9IGludGVyZmFjZUJsb2NrLnN0YXRpY1VzZTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChzaGFkZXJUeXBlID09IEdMX0ZSQUdNRU5UX1NIQURF
Uik7Ci0gICAgICAgICAgICBibG9jay5mcmFnbWVudFN0YXRpY1VzZSA9IGludGVyZmFjZUJsb2Nr
LnN0YXRpY1VzZTsKLSAgICAgICAgfQogCiAgICAgICAgIGJsb2NrLmRhdGFTaXplID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgaW50PihibG9ja1NpemUpOwotICAgICAgICBtRGF0YS5tVW5pZm9ybUJs
b2Nrcy5wdXNoX2JhY2soYmxvY2spOworICAgICAgICBtU3RhdGUubVVuaWZvcm1CbG9ja3MucHVz
aF9iYWNrKGJsb2NrKTsKICAgICB9CiB9CiAKQEAgLTI0MzcsOCArMjg1MSw4IEBACiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KIHZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybUludGVybmFsKEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBUICp2KQogewotICAgIGNvbnN0IFZhcmlhYmxl
TG9jYXRpb24gJmxvY2F0aW9uSW5mbyA9IG1EYXRhLm1Vbmlmb3JtTG9jYXRpb25zW2xvY2F0aW9u
XTsKLSAgICBMaW5rZWRVbmlmb3JtICpsaW5rZWRVbmlmb3JtICAgICAgICAgPSAmbURhdGEubVVu
aWZvcm1zW2xvY2F0aW9uSW5mby5pbmRleF07CisgICAgY29uc3QgVmFyaWFibGVMb2NhdGlvbiAm
bG9jYXRpb25JbmZvID0gbVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zW2xvY2F0aW9uXTsKKyAgICBM
aW5rZWRVbmlmb3JtICpsaW5rZWRVbmlmb3JtICAgICAgICAgPSAmbVN0YXRlLm1Vbmlmb3Jtc1ts
b2NhdGlvbkluZm8uaW5kZXhdOwogICAgIHVpbnQ4X3QgKmRlc3RQb2ludGVyICAgICAgICAgICAg
ICAgICA9IGxpbmtlZFVuaWZvcm0tPmdldERhdGFQdHJUb0VsZW1lbnQobG9jYXRpb25JbmZvLmVs
ZW1lbnQpOwogCiAgICAgaWYgKFZhcmlhYmxlQ29tcG9uZW50VHlwZShsaW5rZWRVbmlmb3JtLT50
eXBlKSA9PSBHTF9CT09MKQpAQCAtMjQ3Niw4ICsyODkwLDggQEAKICAgICB9CiAKICAgICAvLyBQ
ZXJmb3JtIGEgdHJhbnNwb3NpbmcgY29weS4KLSAgICBjb25zdCBWYXJpYWJsZUxvY2F0aW9uICZs
b2NhdGlvbkluZm8gPSBtRGF0YS5tVW5pZm9ybUxvY2F0aW9uc1tsb2NhdGlvbl07Ci0gICAgTGlu
a2VkVW5pZm9ybSAqbGlua2VkVW5pZm9ybSAgICAgICAgID0gJm1EYXRhLm1Vbmlmb3Jtc1tsb2Nh
dGlvbkluZm8uaW5kZXhdOworICAgIGNvbnN0IFZhcmlhYmxlTG9jYXRpb24gJmxvY2F0aW9uSW5m
byA9IG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9uc1tsb2NhdGlvbl07CisgICAgTGlua2VkVW5pZm9y
bSAqbGlua2VkVW5pZm9ybSAgICAgICAgID0gJm1TdGF0ZS5tVW5pZm9ybXNbbG9jYXRpb25JbmZv
LmluZGV4XTsKICAgICBUICpkZXN0UHRyID0gcmVpbnRlcnByZXRfY2FzdDxUICo+KGxpbmtlZFVu
aWZvcm0tPmdldERhdGFQdHJUb0VsZW1lbnQobG9jYXRpb25JbmZvLmVsZW1lbnQpKTsKICAgICBm
b3IgKEdMc2l6ZWkgZWxlbWVudCA9IDA7IGVsZW1lbnQgPCBjb3VudDsgKytlbGVtZW50KQogICAg
IHsKQEAgLTI0OTMsMTUgKzI5MDcsMTEgQEAKICAgICB9CiB9CiAKLWV4dGVybiB0ZW1wbGF0ZSBH
TGVudW0gR0xUeXBlVG9HTGVudW08ZmxvYXQ+Ojp2YWx1ZTsKLWV4dGVybiB0ZW1wbGF0ZSBHTGVu
dW0gR0xUeXBlVG9HTGVudW08aW50Pjo6dmFsdWU7Ci1leHRlcm4gdGVtcGxhdGUgR0xlbnVtIEdM
VHlwZVRvR0xlbnVtPHVuc2lnbmVkIGludD46OnZhbHVlOwotCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
RGVzdFQ+CiB2b2lkIFByb2dyYW06OmdldFVuaWZvcm1JbnRlcm5hbChHTGludCBsb2NhdGlvbiwg
RGVzdFQgKmRhdGFPdXQpIGNvbnN0CiB7Ci0gICAgY29uc3QgVmFyaWFibGVMb2NhdGlvbiAmbG9j
YXRpb25JbmZvID0gbURhdGEubVVuaWZvcm1Mb2NhdGlvbnNbbG9jYXRpb25dOwotICAgIGNvbnN0
IExpbmtlZFVuaWZvcm0gJnVuaWZvcm0gICAgICAgICA9IG1EYXRhLm1Vbmlmb3Jtc1tsb2NhdGlv
bkluZm8uaW5kZXhdOworICAgIGNvbnN0IFZhcmlhYmxlTG9jYXRpb24gJmxvY2F0aW9uSW5mbyA9
IG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9uc1tsb2NhdGlvbl07CisgICAgY29uc3QgTGlua2VkVW5p
Zm9ybSAmdW5pZm9ybSAgICAgICAgID0gbVN0YXRlLm1Vbmlmb3Jtc1tsb2NhdGlvbkluZm8uaW5k
ZXhdOwogCiAgICAgY29uc3QgdWludDhfdCAqc3JjUG9pbnRlciA9IHVuaWZvcm0uZ2V0RGF0YVB0
clRvRWxlbWVudChsb2NhdGlvbkluZm8uZWxlbWVudCk7CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Qcm9ncmFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Byb2dyYW0uaAkocmV2aXNpb24gMjA4MDIxKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Byb2dyYW0uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgcngKIHsKLWNsYXNzIEltcGxG
YWN0b3J5OworY2xhc3MgR0xJbXBsRmFjdG9yeTsKIGNsYXNzIFByb2dyYW1JbXBsOwogc3RydWN0
IFRyYW5zbGF0ZWRBdHRyaWJ1dGU7CiB9CkBAIC0zOCwxMSArMzgsMTAgQEAKIG5hbWVzcGFjZSBn
bAogewogc3RydWN0IENhcHM7Ci1zdHJ1Y3QgRGF0YTsKK2NsYXNzIENvbnRleHRTdGF0ZTsKIGNs
YXNzIFJlc291cmNlTWFuYWdlcjsKIGNsYXNzIFNoYWRlcjsKIGNsYXNzIEluZm9Mb2c7Ci1jbGFz
cyBBdHRyaWJ1dGVCaW5kaW5nczsKIGNsYXNzIEJ1ZmZlcjsKIGNsYXNzIEZyYW1lYnVmZmVyOwog
c3RydWN0IFVuaWZvcm1CbG9jazsKQEAgLTUwLDE5ICs0OSw2IEBACiAKIGV4dGVybiBjb25zdCBj
aGFyICogY29uc3QgZ19mYWtlcGF0aDsKIAotY2xhc3MgQXR0cmlidXRlQmluZGluZ3MKLXsKLSAg
cHVibGljOgotICAgIEF0dHJpYnV0ZUJpbmRpbmdzKCk7Ci0gICAgfkF0dHJpYnV0ZUJpbmRpbmdz
KCk7Ci0KLSAgICB2b2lkIGJpbmRBdHRyaWJ1dGVMb2NhdGlvbihHTHVpbnQgaW5kZXgsIGNvbnN0
IGNoYXIgKm5hbWUpOwotICAgIGludCBnZXRBdHRyaWJ1dGVCaW5kaW5nKGNvbnN0IHN0ZDo6c3Ry
aW5nICZuYW1lKSBjb25zdDsKLQotICBwcml2YXRlOgotICAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5n
PiBtQXR0cmlidXRlQmluZGluZ1tNQVhfVkVSVEVYX0FUVFJJQlNdOwotfTsKLQogY2xhc3MgSW5m
b0xvZyA6IGFuZ2xlOjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6CkBAIC0xNDIsODkgKzEyOCwx
MTIgQEAKICAgICBzdGQ6OnN0cmluZyBuYW1lOwogICAgIHVuc2lnbmVkIGludCBlbGVtZW50Owog
ICAgIHVuc2lnbmVkIGludCBpbmRleDsKKworICAgIC8vIElmIHRoaXMgaXMgYSB2YWxpZCB1bmlm
b3JtIGxvY2F0aW9uCisgICAgYm9vbCB1c2VkOworCisgICAgLy8gSWYgdGhpcyBsb2NhdGlvbiB3
YXMgYm91bmQgdG8gYW4gdW5yZWZlcmVuY2VkIHVuaWZvcm0uICBTZXR0aW5nIGRhdGEgb24gdGhp
cyB1bmlmb3JtIGlzIGEKKyAgICAvLyBuby1vcC4KKyAgICBib29sIGlnbm9yZWQ7CiB9OwogCi1j
bGFzcyBQcm9ncmFtIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlLCBwdWJsaWMgTGFiZWxlZE9i
amVjdAorLy8gSW5mb3JtYXRpb24gYWJvdXQgYSB2YXJpYWJsZSBiaW5kaW5nLgorLy8gQ3VycmVu
dGx5IHVzZWQgYnkgQ0hST01JVU1fcGF0aF9yZW5kZXJpbmcKK3N0cnVjdCBCaW5kaW5nSW5mbwog
eworICAgIC8vIFRoZSB0eXBlIG9mIGJpbmRpbmcsIGZvciBleGFtcGxlIEdMX0ZMT0FUX1ZFQzMu
CisgICAgLy8gVGhpcyBjYW4gYmUgR0xfTk9ORSBpZiB0aGUgdmFyaWFibGUgaXMgb3B0aW1pemVk
IGF3YXkuCisgICAgR0xlbnVtIHR5cGU7CisKKyAgICAvLyBUaGlzIGlzIHRoZSBuYW1lIG9mIHRo
ZSB2YXJpYWJsZSBpbgorICAgIC8vIHRoZSB0cmFuc2xhdGVkIHNoYWRlciBwcm9ncmFtLiBOb3Rl
IHRoYXQKKyAgICAvLyB0aGlzIGNhbiBiZSBlbXB0eSBpbiB0aGUgY2FzZSB3aGVyZSB0aGUKKyAg
ICAvLyB2YXJpYWJsZSBoYXMgYmVlbiBvcHRpbWl6ZWQgYXdheS4KKyAgICBzdGQ6OnN0cmluZyBu
YW1lOworCisgICAgLy8gVHJ1ZSBpZiB0aGUgYmluZGluZyBpcyB2YWxpZCwgb3RoZXJ3aXNlIGZh
bHNlLgorICAgIGJvb2wgdmFsaWQ7Cit9OworCitjbGFzcyBQcm9ncmFtU3RhdGUgZmluYWwgOiBh
bmdsZTo6Tm9uQ29weWFibGUKK3sKICAgcHVibGljOgotICAgIGNsYXNzIERhdGEgZmluYWwgOiBh
bmdsZTo6Tm9uQ29weWFibGUKKyAgICBQcm9ncmFtU3RhdGUoKTsKKyAgICB+UHJvZ3JhbVN0YXRl
KCk7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmZ2V0TGFiZWwoKTsKKworICAgIGNvbnN0IFNo
YWRlciAqZ2V0QXR0YWNoZWRWZXJ0ZXhTaGFkZXIoKSBjb25zdCB7IHJldHVybiBtQXR0YWNoZWRW
ZXJ0ZXhTaGFkZXI7IH0KKyAgICBjb25zdCBTaGFkZXIgKmdldEF0dGFjaGVkRnJhZ21lbnRTaGFk
ZXIoKSBjb25zdCB7IHJldHVybiBtQXR0YWNoZWRGcmFnbWVudFNoYWRlcjsgfQorICAgIGNvbnN0
IFNoYWRlciAqZ2V0QXR0YWNoZWRDb21wdXRlU2hhZGVyKCkgY29uc3QgeyByZXR1cm4gbUF0dGFj
aGVkQ29tcHV0ZVNoYWRlcjsgfQorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiAm
Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nTmFtZXMoKSBjb25zdAogICAgIHsKLSAgICAgIHB1
YmxpYzoKLSAgICAgICAgRGF0YSgpOwotICAgICAgICB+RGF0YSgpOworICAgICAgICByZXR1cm4g
bVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ05hbWVzOworICAgIH0KKyAgICBHTGludCBnZXRUcmFu
c2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUoKSBjb25zdCB7IHJldHVybiBtVHJhbnNmb3JtRmVlZGJh
Y2tCdWZmZXJNb2RlOyB9CisgICAgR0x1aW50IGdldFVuaWZvcm1CbG9ja0JpbmRpbmcoR0x1aW50
IHVuaWZvcm1CbG9ja0luZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKHVuaWZvcm1C
bG9ja0luZGV4IDwgSU1QTEVNRU5UQVRJT05fTUFYX0NPTUJJTkVEX1NIQURFUl9VTklGT1JNX0JV
RkZFUlMpOworICAgICAgICByZXR1cm4gbVVuaWZvcm1CbG9ja0JpbmRpbmdzW3VuaWZvcm1CbG9j
a0luZGV4XTsKKyAgICB9CisgICAgY29uc3QgVW5pZm9ybUJsb2NrQmluZGluZ01hc2sgJmdldEFj
dGl2ZVVuaWZvcm1CbG9ja0JpbmRpbmdzTWFzaygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbUFjdGl2ZVVuaWZvcm1CbG9ja0JpbmRpbmdzOworICAgIH0KKyAgICBjb25zdCBzdGQ6OnZl
Y3RvcjxzaDo6QXR0cmlidXRlPiAmZ2V0QXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1BdHRy
aWJ1dGVzOyB9CisgICAgY29uc3QgQXR0cmlidXRlc01hc2sgJmdldEFjdGl2ZUF0dHJpYkxvY2F0
aW9uc01hc2soKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1BY3RpdmVBdHRyaWJMb2Nh
dGlvbnNNYXNrOworICAgIH0KKyAgICBjb25zdCBzdGQ6Om1hcDxpbnQsIFZhcmlhYmxlTG9jYXRp
b24+ICZnZXRPdXRwdXRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtT3V0cHV0VmFyaWFibGVz
OyB9CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8TGlua2VkVW5pZm9ybT4gJmdldFVuaWZvcm1zKCkg
Y29uc3QgeyByZXR1cm4gbVVuaWZvcm1zOyB9CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8VmFyaWFi
bGVMb2NhdGlvbj4gJmdldFVuaWZvcm1Mb2NhdGlvbnMoKSBjb25zdCB7IHJldHVybiBtVW5pZm9y
bUxvY2F0aW9uczsgfQorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFVuaWZvcm1CbG9jaz4gJmdldFVu
aWZvcm1CbG9ja3MoKSBjb25zdCB7IHJldHVybiBtVW5pZm9ybUJsb2NrczsgfQogCi0gICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZnZXRMYWJlbCgpOworICAgIGNvbnN0IExpbmtlZFVuaWZvcm0g
KmdldFVuaWZvcm1CeU5hbWUoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0OworICAgIEdM
aW50IGdldFVuaWZvcm1Mb2NhdGlvbihjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkgY29uc3Q7Cisg
ICAgR0x1aW50IGdldFVuaWZvcm1JbmRleChjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkgY29uc3Q7
CiAKLSAgICAgICAgY29uc3QgU2hhZGVyICpnZXRBdHRhY2hlZFZlcnRleFNoYWRlcigpIGNvbnN0
IHsgcmV0dXJuIG1BdHRhY2hlZFZlcnRleFNoYWRlcjsgfQotICAgICAgICBjb25zdCBTaGFkZXIg
KmdldEF0dGFjaGVkRnJhZ21lbnRTaGFkZXIoKSBjb25zdCB7IHJldHVybiBtQXR0YWNoZWRGcmFn
bWVudFNoYWRlcjsgfQotICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gJmdl
dFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ05hbWVzKCkgY29uc3QKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIG1UcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdOYW1lczsKLSAgICAgICAgfQot
ICAgICAgICBHTGludCBnZXRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUoKSBjb25zdCB7IHJl
dHVybiBtVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlOyB9Ci0gICAgICAgIEdMdWludCBnZXRV
bmlmb3JtQmxvY2tCaW5kaW5nKEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCkgY29uc3QKLSAgICAg
ICAgewotICAgICAgICAgICAgQVNTRVJUKHVuaWZvcm1CbG9ja0luZGV4IDwgSU1QTEVNRU5UQVRJ
T05fTUFYX0NPTUJJTkVEX1NIQURFUl9VTklGT1JNX0JVRkZFUlMpOwotICAgICAgICAgICAgcmV0
dXJuIG1Vbmlmb3JtQmxvY2tCaW5kaW5nc1t1bmlmb3JtQmxvY2tJbmRleF07Ci0gICAgICAgIH0K
LSAgICAgICAgY29uc3QgVW5pZm9ybUJsb2NrQmluZGluZ01hc2sgJmdldEFjdGl2ZVVuaWZvcm1C
bG9ja0JpbmRpbmdzTWFzaygpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBt
QWN0aXZlVW5pZm9ybUJsb2NrQmluZGluZ3M7Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8c2g6OkF0dHJpYnV0ZT4gJmdldEF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBt
QXR0cmlidXRlczsgfQotICAgICAgICBjb25zdCBBdHRyaWJ1dGVzTWFzayAmZ2V0QWN0aXZlQXR0
cmliTG9jYXRpb25zTWFzaygpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBt
QWN0aXZlQXR0cmliTG9jYXRpb25zTWFzazsKLSAgICAgICAgfQotICAgICAgICBjb25zdCBzdGQ6
Om1hcDxpbnQsIFZhcmlhYmxlTG9jYXRpb24+ICZnZXRPdXRwdXRWYXJpYWJsZXMoKSBjb25zdAot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbU91dHB1dFZhcmlhYmxlczsKLSAgICAgICAg
fQotICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxMaW5rZWRVbmlmb3JtPiAmZ2V0VW5pZm9ybXMo
KSBjb25zdCB7IHJldHVybiBtVW5pZm9ybXM7IH0KLSAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8
VmFyaWFibGVMb2NhdGlvbj4gJmdldFVuaWZvcm1Mb2NhdGlvbnMoKSBjb25zdAotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gbVVuaWZvcm1Mb2NhdGlvbnM7Ci0gICAgICAgIH0KLSAgICAg
ICAgY29uc3Qgc3RkOjp2ZWN0b3I8VW5pZm9ybUJsb2NrPiAmZ2V0VW5pZm9ybUJsb2NrcygpIGNv
bnN0IHsgcmV0dXJuIG1Vbmlmb3JtQmxvY2tzOyB9CisgIHByaXZhdGU6CisgICAgZnJpZW5kIGNs
YXNzIFByb2dyYW07CiAKLSAgICAgICAgY29uc3QgTGlua2VkVW5pZm9ybSAqZ2V0VW5pZm9ybUJ5
TmFtZShjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkgY29uc3Q7Ci0gICAgICAgIEdMaW50IGdldFVu
aWZvcm1Mb2NhdGlvbihjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkgY29uc3Q7Ci0gICAgICAgIEdM
dWludCBnZXRVbmlmb3JtSW5kZXgoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0OworICAg
IHN0ZDo6c3RyaW5nIG1MYWJlbDsKIAotICAgICAgcHJpdmF0ZToKLSAgICAgICAgZnJpZW5kIGNs
YXNzIFByb2dyYW07CisgICAgc2g6OldvcmtHcm91cFNpemUgbUNvbXB1dGVTaGFkZXJMb2NhbFNp
emU7CiAKLSAgICAgICAgc3RkOjpzdHJpbmcgbUxhYmVsOworICAgIFNoYWRlciAqbUF0dGFjaGVk
RnJhZ21lbnRTaGFkZXI7CisgICAgU2hhZGVyICptQXR0YWNoZWRWZXJ0ZXhTaGFkZXI7CisgICAg
U2hhZGVyICptQXR0YWNoZWRDb21wdXRlU2hhZGVyOwogCi0gICAgICAgIFNoYWRlciAqbUF0dGFj
aGVkRnJhZ21lbnRTaGFkZXI7Ci0gICAgICAgIFNoYWRlciAqbUF0dGFjaGVkVmVydGV4U2hhZGVy
OworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBtVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5n
TmFtZXM7CisgICAgc3RkOjp2ZWN0b3I8c2g6OlZhcnlpbmc+IG1UcmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmdWYXJzOworICAgIEdMZW51bSBtVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlOwogCi0g
ICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBtVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5n
TmFtZXM7Ci0gICAgICAgIHN0ZDo6dmVjdG9yPHNoOjpWYXJ5aW5nPiBtVHJhbnNmb3JtRmVlZGJh
Y2tWYXJ5aW5nVmFyczsKLSAgICAgICAgR0xlbnVtIG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1v
ZGU7CisgICAgR0x1aW50IG1Vbmlmb3JtQmxvY2tCaW5kaW5nc1tJTVBMRU1FTlRBVElPTl9NQVhf
Q09NQklORURfU0hBREVSX1VOSUZPUk1fQlVGRkVSU107CisgICAgVW5pZm9ybUJsb2NrQmluZGlu
Z01hc2sgbUFjdGl2ZVVuaWZvcm1CbG9ja0JpbmRpbmdzOwogCi0gICAgICAgIEdMdWludCBtVW5p
Zm9ybUJsb2NrQmluZGluZ3NbSU1QTEVNRU5UQVRJT05fTUFYX0NPTUJJTkVEX1NIQURFUl9VTklG
T1JNX0JVRkZFUlNdOwotICAgICAgICBVbmlmb3JtQmxvY2tCaW5kaW5nTWFzayBtQWN0aXZlVW5p
Zm9ybUJsb2NrQmluZGluZ3M7CisgICAgc3RkOjp2ZWN0b3I8c2g6OkF0dHJpYnV0ZT4gbUF0dHJp
YnV0ZXM7CisgICAgc3RkOjpiaXRzZXQ8TUFYX1ZFUlRFWF9BVFRSSUJTPiBtQWN0aXZlQXR0cmli
TG9jYXRpb25zTWFzazsKIAotICAgICAgICBzdGQ6OnZlY3RvcjxzaDo6QXR0cmlidXRlPiBtQXR0
cmlidXRlczsKLSAgICAgICAgc3RkOjpiaXRzZXQ8TUFYX1ZFUlRFWF9BVFRSSUJTPiBtQWN0aXZl
QXR0cmliTG9jYXRpb25zTWFzazsKKyAgICAvLyBVbmlmb3JtcyBhcmUgc29ydGVkIGluIG9yZGVy
OgorICAgIC8vICAxLiBOb24tc2FtcGxlciB1bmlmb3JtcworICAgIC8vICAyLiBTYW1wbGVyIHVu
aWZvcm1zCisgICAgLy8gIDMuIFVuaWZvcm0gYmxvY2sgdW5pZm9ybXMKKyAgICAvLyBUaGlzIG1h
a2VzIHNhbXBsZXIgdmFsaWRhdGlvbiBlYXNpZXIsIHNpbmNlIHdlIGRvbid0IG5lZWQgYSBzZXBh
cmF0ZSBsaXN0LgorICAgIHN0ZDo6dmVjdG9yPExpbmtlZFVuaWZvcm0+IG1Vbmlmb3JtczsKKyAg
ICBzdGQ6OnZlY3RvcjxWYXJpYWJsZUxvY2F0aW9uPiBtVW5pZm9ybUxvY2F0aW9uczsKKyAgICBz
dGQ6OnZlY3RvcjxVbmlmb3JtQmxvY2s+IG1Vbmlmb3JtQmxvY2tzOwogCi0gICAgICAgIC8vIFVu
aWZvcm1zIGFyZSBzb3J0ZWQgaW4gb3JkZXI6Ci0gICAgICAgIC8vICAxLiBOb24tc2FtcGxlciB1
bmlmb3JtcwotICAgICAgICAvLyAgMi4gU2FtcGxlciB1bmlmb3JtcwotICAgICAgICAvLyAgMy4g
VW5pZm9ybSBibG9jayB1bmlmb3JtcwotICAgICAgICAvLyBUaGlzIG1ha2VzIHNhbXBsZXIgdmFs
aWRhdGlvbiBlYXNpZXIsIHNpbmNlIHdlIGRvbid0IG5lZWQgYSBzZXBhcmF0ZSBsaXN0LgotICAg
ICAgICBzdGQ6OnZlY3RvcjxMaW5rZWRVbmlmb3JtPiBtVW5pZm9ybXM7Ci0gICAgICAgIHN0ZDo6
dmVjdG9yPFZhcmlhYmxlTG9jYXRpb24+IG1Vbmlmb3JtTG9jYXRpb25zOwotICAgICAgICBzdGQ6
OnZlY3RvcjxVbmlmb3JtQmxvY2s+IG1Vbmlmb3JtQmxvY2tzOworICAgIC8vIFRPRE8oam1hZGls
bCk6IHVzZSB1bm9yZGVyZWQvaGFzaCBtYXAgd2hlbiBhdmFpbGFibGUKKyAgICBzdGQ6Om1hcDxp
bnQsIFZhcmlhYmxlTG9jYXRpb24+IG1PdXRwdXRWYXJpYWJsZXM7CiAKLSAgICAgICAgLy8gVE9E
TyhqbWFkaWxsKTogdXNlIHVub3JkZXJlZC9oYXNoIG1hcCB3aGVuIGF2YWlsYWJsZQotICAgICAg
ICBzdGQ6Om1hcDxpbnQsIFZhcmlhYmxlTG9jYXRpb24+IG1PdXRwdXRWYXJpYWJsZXM7CisgICAg
Ym9vbCBtQmluYXJ5UmV0cmlldmVhYmxlSGludDsKK307CiAKLSAgICAgICAgYm9vbCBtQmluYXJ5
UmV0cmlldmVhYmxlSGludDsKLSAgICB9OwotCi0gICAgUHJvZ3JhbShyeDo6SW1wbEZhY3Rvcnkg
KmZhY3RvcnksIFJlc291cmNlTWFuYWdlciAqbWFuYWdlciwgR0x1aW50IGhhbmRsZSk7CitjbGFz
cyBQcm9ncmFtIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlLCBwdWJsaWMgTGFiZWxlZE9iamVj
dAoreworICBwdWJsaWM6CisgICAgUHJvZ3JhbShyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwg
UmVzb3VyY2VNYW5hZ2VyICptYW5hZ2VyLCBHTHVpbnQgaGFuZGxlKTsKICAgICB+UHJvZ3JhbSgp
OwogCiAgICAgR0x1aW50IGlkKCkgY29uc3QgeyByZXR1cm4gbUhhbmRsZTsgfQpAQCAtMjMyLDE2
ICsyNDEsMjggQEAKICAgICB2b2lkIHNldExhYmVsKGNvbnN0IHN0ZDo6c3RyaW5nICZsYWJlbCkg
b3ZlcnJpZGU7CiAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmdldExhYmVsKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKLSAgICByeDo6UHJvZ3JhbUltcGwgKmdldEltcGxlbWVudGF0aW9uKCkgeyByZXR1cm4g
bVByb2dyYW07IH0KLSAgICBjb25zdCByeDo6UHJvZ3JhbUltcGwgKmdldEltcGxlbWVudGF0aW9u
KCkgY29uc3QgeyByZXR1cm4gbVByb2dyYW07IH0KKyAgICByeDo6UHJvZ3JhbUltcGwgKmdldElt
cGxlbWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbVByb2dyYW07IH0KIAotICAgIGJvb2wgYXR0
YWNoU2hhZGVyKFNoYWRlciAqc2hhZGVyKTsKKyAgICB2b2lkIGF0dGFjaFNoYWRlcihTaGFkZXIg
KnNoYWRlcik7CiAgICAgYm9vbCBkZXRhY2hTaGFkZXIoU2hhZGVyICpzaGFkZXIpOwogICAgIGlu
dCBnZXRBdHRhY2hlZFNoYWRlcnNDb3VudCgpIGNvbnN0OwogCisgICAgY29uc3QgU2hhZGVyICpn
ZXRBdHRhY2hlZFZlcnRleFNoYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1TdGF0ZS5tQXR0YWNoZWRW
ZXJ0ZXhTaGFkZXI7IH0KKyAgICBjb25zdCBTaGFkZXIgKmdldEF0dGFjaGVkRnJhZ21lbnRTaGFk
ZXIoKSBjb25zdCB7IHJldHVybiBtU3RhdGUubUF0dGFjaGVkRnJhZ21lbnRTaGFkZXI7IH0KKyAg
ICBjb25zdCBTaGFkZXIgKmdldEF0dGFjaGVkQ29tcHV0ZVNoYWRlcigpIGNvbnN0IHsgcmV0dXJu
IG1TdGF0ZS5tQXR0YWNoZWRDb21wdXRlU2hhZGVyOyB9CisKICAgICB2b2lkIGJpbmRBdHRyaWJ1
dGVMb2NhdGlvbihHTHVpbnQgaW5kZXgsIGNvbnN0IGNoYXIgKm5hbWUpOworICAgIHZvaWQgYmlu
ZFVuaWZvcm1Mb2NhdGlvbihHTHVpbnQgaW5kZXgsIGNvbnN0IGNoYXIgKm5hbWUpOwogCi0gICAg
RXJyb3IgbGluayhjb25zdCBnbDo6RGF0YSAmZGF0YSk7CisgICAgLy8gQ0hST01JVU1fcGF0aF9y
ZW5kZXJpbmcKKyAgICBCaW5kaW5nSW5mbyBnZXRGcmFnbWVudElucHV0QmluZGluZ0luZm8oR0xp
bnQgaW5kZXgpIGNvbnN0OworICAgIHZvaWQgYmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbihHTGlu
dCBpbmRleCwgY29uc3QgY2hhciAqbmFtZSk7CisgICAgdm9pZCBwYXRoRnJhZ21lbnRJbnB1dEdl
bihHTGludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBnZW5N
b2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY29tcG9uZW50cywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKmNvZWZmcyk7CisKKyAg
ICBFcnJvciBsaW5rKGNvbnN0IENvbnRleHRTdGF0ZSAmZGF0YSk7CiAgICAgYm9vbCBpc0xpbmtl
ZCgpIGNvbnN0OwogCiAgICAgRXJyb3IgbG9hZEJpbmFyeShHTGVudW0gYmluYXJ5Rm9ybWF0LCBj
b25zdCB2b2lkICpiaW5hcnksIEdMc2l6ZWkgbGVuZ3RoKTsKQEAgLTI2MCw3ICsyODEsNyBAQAog
ICAgIHZvaWQgZ2V0QWN0aXZlQXR0cmlidXRlKEdMdWludCBpbmRleCwgR0xzaXplaSBidWZzaXpl
LCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpzaXplLCBHTGVudW0gKnR5cGUsIEdMY2hhciAqbmFt
ZSk7CiAgICAgR0xpbnQgZ2V0QWN0aXZlQXR0cmlidXRlQ291bnQoKSBjb25zdDsKICAgICBHTGlu
dCBnZXRBY3RpdmVBdHRyaWJ1dGVNYXhMZW5ndGgoKSBjb25zdDsKLSAgICBjb25zdCBzdGQ6OnZl
Y3RvcjxzaDo6QXR0cmlidXRlPiAmZ2V0QXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1EYXRh
Lm1BdHRyaWJ1dGVzOyB9CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OkF0dHJpYnV0ZT4gJmdl
dEF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBtU3RhdGUubUF0dHJpYnV0ZXM7IH0KIAogICAg
IEdMaW50IGdldEZyYWdEYXRhTG9jYXRpb24oY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0
OwogCkBAIC0yNzQsNiArMjk1LDcgQEAKICAgICBHTGludCBnZXRBY3RpdmVVbmlmb3JtTWF4TGVu
Z3RoKCkgY29uc3Q7CiAgICAgR0xpbnQgZ2V0QWN0aXZlVW5pZm9ybWkoR0x1aW50IGluZGV4LCBH
TGVudW0gcG5hbWUpIGNvbnN0OwogICAgIGJvb2wgaXNWYWxpZFVuaWZvcm1Mb2NhdGlvbihHTGlu
dCBsb2NhdGlvbikgY29uc3Q7CisgICAgYm9vbCBpc0lnbm9yZWRVbmlmb3JtTG9jYXRpb24oR0xp
bnQgbG9jYXRpb24pIGNvbnN0OwogICAgIGNvbnN0IExpbmtlZFVuaWZvcm0gJmdldFVuaWZvcm1C
eUxvY2F0aW9uKEdMaW50IGxvY2F0aW9uKSBjb25zdDsKIAogICAgIEdMaW50IGdldFVuaWZvcm1M
b2NhdGlvbihjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkgY29uc3Q7CkBAIC0zMDUsNyArMzI3LDYg
QEAKICAgICB2b2lkIGdldFVuaWZvcm11aXYoR0xpbnQgbG9jYXRpb24sIEdMdWludCAqcGFyYW1z
KSBjb25zdDsKIAogICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShHTHVpbnQgdW5p
Zm9ybUJsb2NrSW5kZXgsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIg
KnVuaWZvcm1CbG9ja05hbWUpIGNvbnN0OwotICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2Nr
aXYoR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMp
IGNvbnN0OwogICAgIEdMdWludCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tDb3VudCgpIGNvbnN0Owog
ICAgIEdMaW50IGdldEFjdGl2ZVVuaWZvcm1CbG9ja01heExlbmd0aCgpIGNvbnN0OwogCkBAIC0z
MzcsMjUgKzM1OCw0NyBAQAogCiAgICAgY29uc3QgQXR0cmlidXRlc01hc2sgJmdldEFjdGl2ZUF0
dHJpYkxvY2F0aW9uc01hc2soKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1EYXRhLm1B
Y3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrOworICAgICAgICByZXR1cm4gbVN0YXRlLm1BY3RpdmVB
dHRyaWJMb2NhdGlvbnNNYXNrOwogICAgIH0KIAogICBwcml2YXRlOgorICAgIGNsYXNzIEJpbmRp
bmdzIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCisgICAgeworICAgICAgcHVibGljOgorICAg
ICAgICB2b2lkIGJpbmRMb2NhdGlvbihHTHVpbnQgaW5kZXgsIGNvbnN0IHN0ZDo6c3RyaW5nICZu
YW1lKTsKKyAgICAgICAgaW50IGdldEJpbmRpbmcoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNv
bnN0OworCisgICAgICAgIHR5cGVkZWYgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBH
THVpbnQ+Ojpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKKyAgICAgICAgY29uc3RfaXRl
cmF0b3IgYmVnaW4oKSBjb25zdDsKKyAgICAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Q7
CisKKyAgICAgIHByaXZhdGU6CisgICAgICAgIHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmlu
ZywgR0x1aW50PiBtQmluZGluZ3M7CisgICAgfTsKKwogICAgIHZvaWQgdW5saW5rKGJvb2wgZGVz
dHJveSA9IGZhbHNlKTsKICAgICB2b2lkIHJlc2V0VW5pZm9ybUJsb2NrQmluZGluZ3MoKTsKIAot
ICAgIGJvb2wgbGlua0F0dHJpYnV0ZXMoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCisgICAgYm9vbCBs
aW5rQXR0cmlidXRlcyhjb25zdCBDb250ZXh0U3RhdGUgJmRhdGEsCiAgICAgICAgICAgICAgICAg
ICAgICAgICBJbmZvTG9nICZpbmZvTG9nLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
QXR0cmlidXRlQmluZGluZ3MgJmF0dHJpYnV0ZUJpbmRpbmdzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgQmluZGluZ3MgJmF0dHJpYnV0ZUJpbmRpbmdzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgU2hhZGVyICp2ZXJ0ZXhTaGFkZXIpOworICAgIGJvb2wgdmFsaWRhdGVV
bmlmb3JtQmxvY2tzQ291bnQoR0x1aW50IG1heFVuaWZvcm1CbG9ja3MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6SW50ZXJmYWNlQmxv
Y2s+ICZibG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZlcnJvck1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJbmZvTG9nICZpbmZvTG9nKSBjb25zdDsKKyAgICBib29sIHZhbGlkYXRlVmVydGV4QW5k
RnJhZ21lbnRJbnRlcmZhY2VCbG9ja3MoCisgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpJ
bnRlcmZhY2VCbG9jaz4gJnZlcnRleEludGVyZmFjZUJsb2NrcywKKyAgICAgICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8c2g6OkludGVyZmFjZUJsb2NrPiAmZnJhZ21lbnRJbnRlcmZhY2VCbG9ja3MsCisg
ICAgICAgIEluZm9Mb2cgJmluZm9Mb2cpIGNvbnN0OwogICAgIGJvb2wgbGlua1VuaWZvcm1CbG9j
a3MoSW5mb0xvZyAmaW5mb0xvZywgY29uc3QgQ2FwcyAmY2Fwcyk7Ci0gICAgc3RhdGljIGJvb2wg
bGlua1ZhcnlpbmdzKEluZm9Mb2cgJmluZm9Mb2csCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFNoYWRlciAqdmVydGV4U2hhZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBTaGFkZXIgKmZyYWdtZW50U2hhZGVyKTsKLSAgICBib29sIGxpbmtVbmlmb3Jt
cyhnbDo6SW5mb0xvZyAmaW5mb0xvZywgY29uc3QgZ2w6OkNhcHMgJmNhcHMpOwotICAgIHZvaWQg
aW5kZXhVbmlmb3JtcygpOwotICAgIGJvb2wgYXJlTWF0Y2hpbmdJbnRlcmZhY2VCbG9ja3MoZ2w6
OkluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9jayAmdmVydGV4SW50ZXJm
YWNlQmxvY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaDo6
SW50ZXJmYWNlQmxvY2sgJmZyYWdtZW50SW50ZXJmYWNlQmxvY2spOworICAgIGJvb2wgbGlua1Zh
cnlpbmdzKEluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IFNoYWRlciAqdmVydGV4U2hhZGVyLCBjb25z
dCBTaGFkZXIgKmZyYWdtZW50U2hhZGVyKSBjb25zdDsKKyAgICBib29sIHZhbGlkYXRlVmVydGV4
QW5kRnJhZ21lbnRVbmlmb3JtcyhJbmZvTG9nICZpbmZvTG9nKSBjb25zdDsKKyAgICBib29sIGxp
bmtVbmlmb3JtcyhnbDo6SW5mb0xvZyAmaW5mb0xvZywgY29uc3QgZ2w6OkNhcHMgJmNhcHMsIGNv
bnN0IEJpbmRpbmdzICZ1bmlmb3JtQmluZGluZ3MpOworICAgIGJvb2wgaW5kZXhVbmlmb3Jtcyhn
bDo6SW5mb0xvZyAmaW5mb0xvZywgY29uc3QgZ2w6OkNhcHMgJmNhcHMsIGNvbnN0IEJpbmRpbmdz
ICZ1bmlmb3JtQmluZGluZ3MpOworICAgIGJvb2wgYXJlTWF0Y2hpbmdJbnRlcmZhY2VCbG9ja3Mo
Z2w6OkluZm9Mb2cgJmluZm9Mb2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2sgJnZlcnRleEludGVyZmFjZUJsb2NrLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrICZm
cmFnbWVudEludGVyZmFjZUJsb2NrKSBjb25zdDsKIAogICAgIHN0YXRpYyBib29sIGxpbmtWYWxp
ZGF0ZVZhcmlhYmxlc0Jhc2UoSW5mb0xvZyAmaW5mb0xvZywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2YXJpYWJsZU5hbWUsCkBA
IC0zNjMsNyArNDA2LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUgJmZyYWdtZW50VmFyaWFibGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHZhbGlkYXRlUHJlY2lzaW9u
KTsKIAotICAgIHN0YXRpYyBib29sIGxpbmtWYWxpZGF0ZVZhcnlpbmdzKEluZm9Mb2cgJmluZm9M
b2csIGNvbnN0IHN0ZDo6c3RyaW5nICZ2YXJ5aW5nTmFtZSwgY29uc3Qgc2g6OlZhcnlpbmcgJnZl
cnRleFZhcnlpbmcsIGNvbnN0IHNoOjpWYXJ5aW5nICZmcmFnbWVudFZhcnlpbmcpOworICAgIHN0
YXRpYyBib29sIGxpbmtWYWxpZGF0ZVZhcnlpbmdzKEluZm9Mb2cgJmluZm9Mb2csCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZhcnlpbmdO
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNoOjpWYXJ5
aW5nICZ2ZXJ0ZXhWYXJ5aW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHNoOjpWYXJ5aW5nICZmcmFnbWVudFZhcnlpbmcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHNoYWRlclZlcnNpb24pOwogICAgIGJvb2wgbGlua1ZhbGlk
YXRlVHJhbnNmb3JtRmVlZGJhY2soSW5mb0xvZyAmaW5mb0xvZywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGNvbnN0IHNoOjpWYXJ5aW5n
ICo+ICZsaW5rZWRWYXJ5aW5ncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IENhcHMgJmNhcHMpIGNvbnN0OwpAQCAtMzc1LDYgKzQyMiwxMyBAQAogICAgIHN0
ZDo6dmVjdG9yPGNvbnN0IHNoOjpWYXJ5aW5nICo+IGdldE1lcmdlZFZhcnlpbmdzKCkgY29uc3Q7
CiAgICAgdm9pZCBsaW5rT3V0cHV0VmFyaWFibGVzKCk7CiAKKyAgICBib29sIGZsYXR0ZW5Vbmlm
b3Jtc0FuZENoZWNrQ2Fwc0ZvclNoYWRlcihjb25zdCBnbDo6U2hhZGVyICZzaGFkZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1heFVuaWZv
cm1Db21wb25lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBtYXhUZXh0dXJlSW1hZ2VVbml0cywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmY29tcG9uZW50c0Vycm9y
TWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyAmc2FtcGxlckVycm9yTWVzc2FnZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxMaW5rZWRVbmlmb3JtPiAm
c2FtcGxlclVuaWZvcm1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEluZm9Mb2cgJmluZm9Mb2cpOwogICAgIGJvb2wgZmxhdHRlblVuaWZvcm1zQW5kQ2hl
Y2tDYXBzKGNvbnN0IENhcHMgJmNhcHMsIEluZm9Mb2cgJmluZm9Mb2cpOwogCiAgICAgc3RydWN0
IFZlY3RvckFuZFNhbXBsZXJDb3VudApAQCAtNDE1LDEzICs0NjksMTcgQEAKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRGVzdFQ+CiAgICAgdm9pZCBnZXRVbmlmb3JtSW50ZXJuYWwoR0xpbnQgbG9j
YXRpb24sIERlc3RUICpkYXRhT3V0KSBjb25zdDsKIAotICAgIERhdGEgbURhdGE7CisgICAgUHJv
Z3JhbVN0YXRlIG1TdGF0ZTsKICAgICByeDo6UHJvZ3JhbUltcGwgKm1Qcm9ncmFtOwogCiAgICAg
Ym9vbCBtVmFsaWRhdGVkOwogCi0gICAgQXR0cmlidXRlQmluZGluZ3MgbUF0dHJpYnV0ZUJpbmRp
bmdzOworICAgIEJpbmRpbmdzIG1BdHRyaWJ1dGVCaW5kaW5nczsKKyAgICBCaW5kaW5ncyBtVW5p
Zm9ybUJpbmRpbmdzOwogCisgICAgLy8gQ0hST01JVU1fcGF0aF9yZW5kZXJpbmcKKyAgICBCaW5k
aW5ncyBtRnJhZ21lbnRJbnB1dEJpbmRpbmdzOworCiAgICAgYm9vbCBtTGlua2VkOwogICAgIGJv
b2wgbURlbGV0ZVN0YXR1czsgICAvLyBGbGFnIHRvIGluZGljYXRlIHRoYXQgdGhlIHByb2dyYW0g
Y2FuIGJlIGRlbGV0ZWQgd2hlbiBubyBsb25nZXIgaW4gdXNlCiAKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Qcm9ncmFtX3VuaXR0ZXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUHJvZ3JhbV91bml0dGVz
dC5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9Qcm9ncmFtX3VuaXR0ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOCw3ICs4LDYg
QEAKIAogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAKLSNpbmNsdWRlICJ0ZXN0cy9hbmdsZV91
bml0dGVzdHNfdXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Qcm9ncmFtLmgiCiAKIHVzaW5n
IG5hbWVzcGFjZSBnbDsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9SZW5kZXJidWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9SZW5kZXJidWZmZXIuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUmVuZGVyYnVmZmVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogICAgICAgbUxhYmVsKCksCiAgICAgICBtV2lkdGgo
MCksCiAgICAgICBtSGVpZ2h0KDApLAotICAgICAgbUludGVybmFsRm9ybWF0KEdMX1JHQkE0KSwK
KyAgICAgIG1Gb3JtYXQoR0xfUkdCQTQpLAogICAgICAgbVNhbXBsZXMoMCkKIHsKIH0KQEAgLTQ5
LDE4ICs0OSwxNiBAQAogewogICAgIG9ycGhhbkltYWdlcygpOwogCi0gICAgRXJyb3IgZXJyb3Ig
PSBtUmVuZGVyYnVmZmVyLT5zZXRTdG9yYWdlKGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9y
OwotICAgIH0KKyAgICBBTkdMRV9UUlkobVJlbmRlcmJ1ZmZlci0+c2V0U3RvcmFnZShpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCkpOwogCiAgICAgbVdpZHRoICAgICAgICAgID0gc3RhdGlj
X2Nhc3Q8R0xzaXplaT4od2lkdGgpOwogICAgIG1IZWlnaHQgICAgICAgICA9IHN0YXRpY19jYXN0
PEdMc2l6ZWk+KGhlaWdodCk7Ci0gICAgbUludGVybmFsRm9ybWF0ID0gaW50ZXJuYWxmb3JtYXQ7
CisgICAgbUZvcm1hdCAgICAgICAgID0gRm9ybWF0KGludGVybmFsZm9ybWF0KTsKICAgICBtU2Ft
cGxlcyA9IDA7CiAKLSAgICByZXR1cm4gRXJyb3IoR0xfTk9fRVJST1IpOworICAgIG1EaXJ0eUNo
YW5uZWwuc2lnbmFsKCk7CisKKyAgICByZXR1cm4gTm9FcnJvcigpOwogfQogCiBFcnJvciBSZW5k
ZXJidWZmZXI6OnNldFN0b3JhZ2VNdWx0aXNhbXBsZShzaXplX3Qgc2FtcGxlcywgR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQpCkBAIC02NywxOCArNjUs
MTYgQEAKIHsKICAgICBvcnBoYW5JbWFnZXMoKTsKIAotICAgIEVycm9yIGVycm9yID0gbVJlbmRl
cmJ1ZmZlci0+c2V0U3RvcmFnZU11bHRpc2FtcGxlKHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkobVJlbmRlcmJ1ZmZlci0+c2V0U3Rv
cmFnZU11bHRpc2FtcGxlKHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSk7
CiAKICAgICBtV2lkdGggICAgICAgICAgPSBzdGF0aWNfY2FzdDxHTHNpemVpPih3aWR0aCk7CiAg
ICAgbUhlaWdodCAgICAgICAgID0gc3RhdGljX2Nhc3Q8R0xzaXplaT4oaGVpZ2h0KTsKLSAgICBt
SW50ZXJuYWxGb3JtYXQgPSBpbnRlcm5hbGZvcm1hdDsKKyAgICBtRm9ybWF0ICAgICAgICAgPSBG
b3JtYXQoaW50ZXJuYWxmb3JtYXQpOwogICAgIG1TYW1wbGVzICAgICAgICA9IHN0YXRpY19jYXN0
PEdMc2l6ZWk+KHNhbXBsZXMpOwogCi0gICAgcmV0dXJuIEVycm9yKEdMX05PX0VSUk9SKTsKKyAg
ICBtRGlydHlDaGFubmVsLnNpZ25hbCgpOworCisgICAgcmV0dXJuIE5vRXJyb3IoKTsKIH0KIAog
RXJyb3IgUmVuZGVyYnVmZmVyOjpzZXRTdG9yYWdlRUdMSW1hZ2VUYXJnZXQoZWdsOjpJbWFnZSAq
aW1hZ2UpCkBAIC04NSwzMyArODEsMjYgQEAKIHsKICAgICBvcnBoYW5JbWFnZXMoKTsKIAotICAg
IEVycm9yIGVycm9yID0gbVJlbmRlcmJ1ZmZlci0+c2V0U3RvcmFnZUVHTEltYWdlVGFyZ2V0KGlt
YWdlKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVy
cm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkobVJlbmRlcmJ1ZmZlci0+c2V0U3RvcmFnZUVHTElt
YWdlVGFyZ2V0KGltYWdlKSk7CiAKICAgICBzZXRUYXJnZXRJbWFnZShpbWFnZSk7CiAKICAgICBt
V2lkdGggICAgICAgICAgPSBzdGF0aWNfY2FzdDxHTHNpemVpPihpbWFnZS0+Z2V0V2lkdGgoKSk7
CiAgICAgbUhlaWdodCAgICAgICAgID0gc3RhdGljX2Nhc3Q8R0xzaXplaT4oaW1hZ2UtPmdldEhl
aWdodCgpKTsKLSAgICBtSW50ZXJuYWxGb3JtYXQgPSBpbWFnZS0+Z2V0SW50ZXJuYWxGb3JtYXQo
KTsKKyAgICBtRm9ybWF0ICAgICAgICAgPSBGb3JtYXQoaW1hZ2UtPmdldEZvcm1hdCgpKTsKICAg
ICBtU2FtcGxlcyAgICAgICAgPSAwOwogCi0gICAgcmV0dXJuIEVycm9yKEdMX05PX0VSUk9SKTsK
KyAgICBtRGlydHlDaGFubmVsLnNpZ25hbCgpOworCisgICAgcmV0dXJuIE5vRXJyb3IoKTsKIH0K
IAotcng6OlJlbmRlcmJ1ZmZlckltcGwgKlJlbmRlcmJ1ZmZlcjo6Z2V0SW1wbGVtZW50YXRpb24o
KQorcng6OlJlbmRlcmJ1ZmZlckltcGwgKlJlbmRlcmJ1ZmZlcjo6Z2V0SW1wbGVtZW50YXRpb24o
KSBjb25zdAogewogICAgIEFTU0VSVChtUmVuZGVyYnVmZmVyKTsKICAgICByZXR1cm4gbVJlbmRl
cmJ1ZmZlcjsKIH0KIAotY29uc3Qgcng6OlJlbmRlcmJ1ZmZlckltcGwgKlJlbmRlcmJ1ZmZlcjo6
Z2V0SW1wbGVtZW50YXRpb24oKSBjb25zdAotewotICAgIHJldHVybiBtUmVuZGVyYnVmZmVyOwot
fQotCiBHTHNpemVpIFJlbmRlcmJ1ZmZlcjo6Z2V0V2lkdGgoKSBjb25zdAogewogICAgIHJldHVy
biBtV2lkdGg7CkBAIC0xMjIsOSArMTExLDkgQEAKICAgICByZXR1cm4gbUhlaWdodDsKIH0KIAot
R0xlbnVtIFJlbmRlcmJ1ZmZlcjo6Z2V0SW50ZXJuYWxGb3JtYXQoKSBjb25zdAorY29uc3QgRm9y
bWF0ICZSZW5kZXJidWZmZXI6OmdldEZvcm1hdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1JbnRl
cm5hbEZvcm1hdDsKKyAgICByZXR1cm4gbUZvcm1hdDsKIH0KIAogR0xzaXplaSBSZW5kZXJidWZm
ZXI6OmdldFNhbXBsZXMoKSBjb25zdApAQCAtMTM0LDMyICsxMjMsMzIgQEAKIAogR0x1aW50IFJl
bmRlcmJ1ZmZlcjo6Z2V0UmVkU2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEdldEludGVybmFs
Rm9ybWF0SW5mbyhtSW50ZXJuYWxGb3JtYXQpLnJlZEJpdHM7CisgICAgcmV0dXJuIG1Gb3JtYXQu
aW5mby0+cmVkQml0czsKIH0KIAogR0x1aW50IFJlbmRlcmJ1ZmZlcjo6Z2V0R3JlZW5TaXplKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gR2V0SW50ZXJuYWxGb3JtYXRJbmZvKG1JbnRlcm5hbEZvcm1h
dCkuZ3JlZW5CaXRzOworICAgIHJldHVybiBtRm9ybWF0LmluZm8tPmdyZWVuQml0czsKIH0KIAog
R0x1aW50IFJlbmRlcmJ1ZmZlcjo6Z2V0Qmx1ZVNpemUoKSBjb25zdAogewotICAgIHJldHVybiBH
ZXRJbnRlcm5hbEZvcm1hdEluZm8obUludGVybmFsRm9ybWF0KS5ibHVlQml0czsKKyAgICByZXR1
cm4gbUZvcm1hdC5pbmZvLT5ibHVlQml0czsKIH0KIAogR0x1aW50IFJlbmRlcmJ1ZmZlcjo6Z2V0
QWxwaGFTaXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gR2V0SW50ZXJuYWxGb3JtYXRJbmZvKG1J
bnRlcm5hbEZvcm1hdCkuYWxwaGFCaXRzOworICAgIHJldHVybiBtRm9ybWF0LmluZm8tPmFscGhh
Qml0czsKIH0KIAogR0x1aW50IFJlbmRlcmJ1ZmZlcjo6Z2V0RGVwdGhTaXplKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gR2V0SW50ZXJuYWxGb3JtYXRJbmZvKG1JbnRlcm5hbEZvcm1hdCkuZGVwdGhC
aXRzOworICAgIHJldHVybiBtRm9ybWF0LmluZm8tPmRlcHRoQml0czsKIH0KIAogR0x1aW50IFJl
bmRlcmJ1ZmZlcjo6Z2V0U3RlbmNpbFNpemUoKSBjb25zdAogewotICAgIHJldHVybiBHZXRJbnRl
cm5hbEZvcm1hdEluZm8obUludGVybmFsRm9ybWF0KS5zdGVuY2lsQml0czsKKyAgICByZXR1cm4g
bUZvcm1hdC5pbmZvLT5zdGVuY2lsQml0czsKIH0KIAogdm9pZCBSZW5kZXJidWZmZXI6Om9uQXR0
YWNoKCkKQEAgLTE4MSw0ICsxNzAsNCBAQAogewogICAgIHJldHVybiBFeHRlbnRzKG1XaWR0aCwg
bUhlaWdodCwgMSk7CiB9Ci19Cit9ICAvLyBuYW1lc3BhY2UgZ2wKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9SZW5kZXJidWZmZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUmVuZGVyYnVmZmVyLmgJKHJldmlz
aW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9SZW5k
ZXJidWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgImxp
YkFOR0xFL0Vycm9yLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRnJhbWVidWZmZXJBdHRhY2htZW50
LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvSW1hZ2UuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9mb3Jt
YXR1dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1JlbmRlcmJ1ZmZlckltcGwu
aCIKIAogbmFtZXNwYWNlIGdsCkBAIC00MSwxMiArNDIsMTEgQEAKICAgICBFcnJvciBzZXRTdG9y
YWdlTXVsdGlzYW1wbGUoc2l6ZV90IHNhbXBsZXMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgc2l6
ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0KTsKICAgICBFcnJvciBzZXRTdG9yYWdlRUdMSW1hZ2VU
YXJnZXQoZWdsOjpJbWFnZSAqaW1hZ2VUYXJnZXQpOwogCi0gICAgcng6OlJlbmRlcmJ1ZmZlcklt
cGwgKmdldEltcGxlbWVudGF0aW9uKCk7Ci0gICAgY29uc3Qgcng6OlJlbmRlcmJ1ZmZlckltcGwg
KmdldEltcGxlbWVudGF0aW9uKCkgY29uc3Q7CisgICAgcng6OlJlbmRlcmJ1ZmZlckltcGwgKmdl
dEltcGxlbWVudGF0aW9uKCkgY29uc3Q7CiAKICAgICBHTHNpemVpIGdldFdpZHRoKCkgY29uc3Q7
CiAgICAgR0xzaXplaSBnZXRIZWlnaHQoKSBjb25zdDsKLSAgICBHTGVudW0gZ2V0SW50ZXJuYWxG
b3JtYXQoKSBjb25zdDsKKyAgICBjb25zdCBGb3JtYXQgJmdldEZvcm1hdCgpIGNvbnN0OwogICAg
IEdMc2l6ZWkgZ2V0U2FtcGxlcygpIGNvbnN0OwogICAgIEdMdWludCBnZXRSZWRTaXplKCkgY29u
c3Q7CiAgICAgR0x1aW50IGdldEdyZWVuU2l6ZSgpIGNvbnN0OwpAQCAtNTcsNyArNTcsMTEgQEAK
IAogICAgIC8vIEZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdCBJbXBsCiAgICAgRXh0ZW50cyBn
ZXRBdHRhY2htZW50U2l6ZShjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OlRhcmdldCAmdGFy
Z2V0KSBjb25zdCBvdmVycmlkZTsKLSAgICBHTGVudW0gZ2V0QXR0YWNobWVudEludGVybmFsRm9y
bWF0KGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICYvKnRhcmdldCovKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBnZXRJbnRlcm5hbEZvcm1hdCgpOyB9CisgICAgY29uc3QgRm9y
bWF0ICZnZXRBdHRhY2htZW50Rm9ybWF0KAorICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFj
aG1lbnQ6OlRhcmdldCAmIC8qdGFyZ2V0Ki8pIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAg
ICByZXR1cm4gZ2V0Rm9ybWF0KCk7CisgICAgfQogICAgIEdMc2l6ZWkgZ2V0QXR0YWNobWVudFNh
bXBsZXMoY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50OjpUYXJnZXQgJi8qdGFyZ2V0Ki8pIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGdldFNhbXBsZXMoKTsgfQogCiAgICAgdm9pZCBvbkF0dGFj
aCgpIG92ZXJyaWRlOwpAQCAtNzMsNyArNzcsNyBAQAogCiAgICAgR0xzaXplaSBtV2lkdGg7CiAg
ICAgR0xzaXplaSBtSGVpZ2h0OwotICAgIEdMZW51bSBtSW50ZXJuYWxGb3JtYXQ7CisgICAgRm9y
bWF0IG1Gb3JtYXQ7CiAgICAgR0xzaXplaSBtU2FtcGxlczsKIH07CiAKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9SZXNvdXJjZU1hbmFnZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9SZXNvdXJjZU1hbmFn
ZXIuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvUmVzb3VyY2VNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNCwyNSArNCwy
NCBAQAogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCiAKLS8vIFJlc291cmNlTWFu
YWdlci5jcHA6IEltcGxlbWVudHMgdGhlIGdsOjpSZXNvdXJjZU1hbmFnZXIgY2xhc3MsIHdoaWNo
IHRyYWNrcyBhbmQgCisvLyBSZXNvdXJjZU1hbmFnZXIuY3BwOiBJbXBsZW1lbnRzIHRoZSBnbDo6
UmVzb3VyY2VNYW5hZ2VyIGNsYXNzLCB3aGljaCB0cmFja3MgYW5kCiAvLyByZXRyaWV2ZXMgb2Jq
ZWN0cyB3aGljaCBtYXkgYmUgc2hhcmVkIGJ5IG11bHRpcGxlIENvbnRleHRzLgogCiAjaW5jbHVk
ZSAibGliQU5HTEUvUmVzb3VyY2VNYW5hZ2VyLmgiCiAKICNpbmNsdWRlICJsaWJBTkdMRS9CdWZm
ZXIuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9GZW5jZS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1Bh
dGguaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Qcm9ncmFtLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
UmVuZGVyYnVmZmVyLmgiCisjaW5jbHVkZSAibGliQU5HTEUvU2FtcGxlci5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL1NoYWRlci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1RleHR1cmUuaCIKLSNpbmNs
dWRlICJsaWJBTkdMRS9TYW1wbGVyLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvRmVuY2UuaCIKLSNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9SZW5kZXJlci5oIgorI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL0dMSW1wbEZhY3RvcnkuaCIKIAogbmFtZXNwYWNlIGdsCiB7Ci1SZXNvdXJjZU1h
bmFnZXI6OlJlc291cmNlTWFuYWdlcihyeDo6SW1wbEZhY3RvcnkgKmZhY3RvcnkpCi0gICAgOiBt
RmFjdG9yeShmYWN0b3J5KSwKLSAgICAgIG1SZWZDb3VudCgxKQorUmVzb3VyY2VNYW5hZ2VyOjpS
ZXNvdXJjZU1hbmFnZXIoKSA6IG1SZWZDb3VudCgxKQogewogfQogCkBAIC02Miw2ICs2MSwxMiBA
QAogICAgIHsKICAgICAgICAgZGVsZXRlRmVuY2VTeW5jKG1GZW5jZVN5bmNNYXAuYmVnaW4oKS0+
Zmlyc3QpOwogICAgIH0KKworICAgIGZvciAoYXV0byBpdCA9IG1QYXRoTWFwLmJlZ2luKCk7IGl0
ICE9IG1QYXRoTWFwLmVuZCgpOyArK2l0KQorICAgIHsKKyAgICAgICAgY29uc3QgYXV0byAqcCA9
IGl0LT5zZWNvbmQ7CisgICAgICAgIGRlbGV0ZSBwOworICAgIH0KIH0KIAogdm9pZCBSZXNvdXJj
ZU1hbmFnZXI6OmFkZFJlZigpCkBAIC04OCwyNSArOTMsMjQgQEAKIH0KIAogLy8gUmV0dXJucyBh
biB1bnVzZWQgc2hhZGVyL3Byb2dyYW0gbmFtZQotR0x1aW50IFJlc291cmNlTWFuYWdlcjo6Y3Jl
YXRlU2hhZGVyKGNvbnN0IGdsOjpMaW1pdGF0aW9ucyAmcmVuZGVyZXJMaW1pdGF0aW9ucywgR0xl
bnVtIHR5cGUpCitHTHVpbnQgUmVzb3VyY2VNYW5hZ2VyOjpjcmVhdGVTaGFkZXIocng6OkdMSW1w
bEZhY3RvcnkgKmZhY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OkxpbWl0YXRpb25zICZyZW5kZXJlckxpbWl0YXRpb25zLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlKQogeworICAgIEFTU0VSVCh0eXBl
ID09IEdMX1ZFUlRFWF9TSEFERVIgfHwgdHlwZSA9PSBHTF9GUkFHTUVOVF9TSEFERVIgfHwgdHlw
ZSA9PSBHTF9DT01QVVRFX1NIQURFUik7CiAgICAgR0x1aW50IGhhbmRsZSA9IG1Qcm9ncmFtU2hh
ZGVySGFuZGxlQWxsb2NhdG9yLmFsbG9jYXRlKCk7CiAKLSAgICBpZiAodHlwZSA9PSBHTF9WRVJU
RVhfU0hBREVSIHx8IHR5cGUgPT0gR0xfRlJBR01FTlRfU0hBREVSKQotICAgIHsKLSAgICAgICAg
bVNoYWRlck1hcFtoYW5kbGVdID0gbmV3IFNoYWRlcih0aGlzLCBtRmFjdG9yeSwgcmVuZGVyZXJM
aW1pdGF0aW9ucywgdHlwZSwgaGFuZGxlKTsKLSAgICB9Ci0gICAgZWxzZSBVTlJFQUNIQUJMRSgp
OworICAgIG1TaGFkZXJNYXBbaGFuZGxlXSA9IG5ldyBTaGFkZXIodGhpcywgZmFjdG9yeSwgcmVu
ZGVyZXJMaW1pdGF0aW9ucywgdHlwZSwgaGFuZGxlKTsKIAogICAgIHJldHVybiBoYW5kbGU7CiB9
CiAKIC8vIFJldHVybnMgYW4gdW51c2VkIHByb2dyYW0vc2hhZGVyIG5hbWUKLUdMdWludCBSZXNv
dXJjZU1hbmFnZXI6OmNyZWF0ZVByb2dyYW0oKQorR0x1aW50IFJlc291cmNlTWFuYWdlcjo6Y3Jl
YXRlUHJvZ3JhbShyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSkKIHsKICAgICBHTHVpbnQgaGFu
ZGxlID0gbVByb2dyYW1TaGFkZXJIYW5kbGVBbGxvY2F0b3IuYWxsb2NhdGUoKTsKIAotICAgIG1Q
cm9ncmFtTWFwW2hhbmRsZV0gPSBuZXcgUHJvZ3JhbShtRmFjdG9yeSwgdGhpcywgaGFuZGxlKTsK
KyAgICBtUHJvZ3JhbU1hcFtoYW5kbGVdID0gbmV3IFByb2dyYW0oZmFjdG9yeSwgdGhpcywgaGFu
ZGxlKTsKIAogICAgIHJldHVybiBoYW5kbGU7CiB9CkBAIC0xNDIsMTEgKzE0NiwxMSBAQAogfQog
CiAvLyBSZXR1cm5zIHRoZSBuZXh0IHVudXNlZCBmZW5jZSBuYW1lLCBhbmQgYWxsb2NhdGVzIHRo
ZSBmZW5jZQotR0x1aW50IFJlc291cmNlTWFuYWdlcjo6Y3JlYXRlRmVuY2VTeW5jKCkKK0dMdWlu
dCBSZXNvdXJjZU1hbmFnZXI6OmNyZWF0ZUZlbmNlU3luYyhyeDo6R0xJbXBsRmFjdG9yeSAqZmFj
dG9yeSkKIHsKICAgICBHTHVpbnQgaGFuZGxlID0gbUZlbmNlU3luY0hhbmRsZUFsbG9jYXRvci5h
bGxvY2F0ZSgpOwogCi0gICAgRmVuY2VTeW5jICpmZW5jZVN5bmMgPSBuZXcgRmVuY2VTeW5jKG1G
YWN0b3J5LT5jcmVhdGVGZW5jZVN5bmMoKSwgaGFuZGxlKTsKKyAgICBGZW5jZVN5bmMgKmZlbmNl
U3luYyA9IG5ldyBGZW5jZVN5bmMoZmFjdG9yeS0+Y3JlYXRlRmVuY2VTeW5jKCksIGhhbmRsZSk7
CiAgICAgZmVuY2VTeW5jLT5hZGRSZWYoKTsKICAgICBtRmVuY2VTeW5jTWFwW2hhbmRsZV0gPSBm
ZW5jZVN5bmM7CiAKQEAgLTE1Myw2ICsxNTcsMzEgQEAKICAgICByZXR1cm4gaGFuZGxlOwogfQog
CitFcnJvck9yUmVzdWx0PEdMdWludD4gUmVzb3VyY2VNYW5hZ2VyOjpjcmVhdGVQYXRocyhyeDo6
R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwgR0xzaXplaSByYW5nZSkKK3sKKyAgICAvLyBBbGxvY2F0
ZSBjbGllbnQgc2lkZSBoYW5kbGVzLgorICAgIGNvbnN0IEdMdWludCBjbGllbnQgPSBtUGF0aEhh
bmRsZUFsbG9jYXRvci5hbGxvY2F0ZVJhbmdlKHN0YXRpY19jYXN0PEdMdWludD4ocmFuZ2UpKTsK
KyAgICBpZiAoY2xpZW50ID09IEhhbmRsZVJhbmdlQWxsb2NhdG9yOjprSW52YWxpZEhhbmRsZSkK
KyAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGFs
bG9jYXRlIHBhdGggaGFuZGxlIHJhbmdlLiIpOworCisgICAgY29uc3QgYXV0byAmcGF0aHMgPSBm
YWN0b3J5LT5jcmVhdGVQYXRocyhyYW5nZSk7CisgICAgaWYgKHBhdGhzLmVtcHR5KCkpCisgICAg
eworICAgICAgICBtUGF0aEhhbmRsZUFsbG9jYXRvci5yZWxlYXNlUmFuZ2UoY2xpZW50LCByYW5n
ZSk7CisgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0
byBhbGxvY2F0ZSBwYXRoIG9iamVjdHMuIik7CisgICAgfQorCisgICAgYXV0byBoaW50ID0gbVBh
dGhNYXAuYmVnaW4oKTsKKworICAgIGZvciAoR0xzaXplaSBpID0gMDsgaSA8IHJhbmdlOyArK2kp
CisgICAgeworICAgICAgICBjb25zdCBhdXRvIGltcGwgPSBwYXRoc1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oaSldOworICAgICAgICBjb25zdCBhdXRvIGlkICAgPSBjbGllbnQgKyBpOworICAgICAg
ICBoaW50ICAgICAgICAgICAgPSBtUGF0aE1hcC5pbnNlcnQoaGludCwgc3RkOjptYWtlX3BhaXIo
aWQsIG5ldyBQYXRoKGltcGwpKSk7CisgICAgfQorICAgIHJldHVybiBjbGllbnQ7Cit9CisKIHZv
aWQgUmVzb3VyY2VNYW5hZ2VyOjpkZWxldGVCdWZmZXIoR0x1aW50IGJ1ZmZlcikKIHsKICAgICBh
dXRvIGJ1ZmZlck9iamVjdCA9IG1CdWZmZXJNYXAuZmluZChidWZmZXIpOwpAQCAtMTk3LDcgKzIy
Niw3IEBACiAgICAgICAgICAgICBtUHJvZ3JhbU1hcC5lcmFzZShwcm9ncmFtT2JqZWN0KTsKICAg
ICAgICAgfQogICAgICAgICBlbHNlCi0gICAgICAgIHsgCisgICAgICAgIHsKICAgICAgICAgICAg
IHByb2dyYW1PYmplY3QtPnNlY29uZC0+ZmxhZ0ZvckRlbGV0aW9uKCk7CiAgICAgICAgIH0KICAg
ICB9CkBAIC0yNTEsNiArMjgwLDIxIEBACiAgICAgfQogfQogCit2b2lkIFJlc291cmNlTWFuYWdl
cjo6ZGVsZXRlUGF0aHMoR0x1aW50IGZpcnN0LCBHTHNpemVpIHJhbmdlKQoreworICAgIGZvciAo
R0xzaXplaSBpID0gMDsgaSA8IHJhbmdlOyArK2kpCisgICAgeworICAgICAgICBjb25zdCBhdXRv
IGlkID0gZmlyc3QgKyBpOworICAgICAgICBjb25zdCBhdXRvIGl0ID0gbVBhdGhNYXAuZmluZChp
ZCk7CisgICAgICAgIGlmIChpdCA9PSBtUGF0aE1hcC5lbmQoKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBQYXRoICpwID0gaXQtPnNlY29uZDsKKyAgICAgICAgZGVsZXRlIHA7Cisg
ICAgICAgIG1QYXRoTWFwLmVyYXNlKGl0KTsKKyAgICB9CisgICAgbVBhdGhIYW5kbGVBbGxvY2F0
b3IucmVsZWFzZVJhbmdlKGZpcnN0LCBzdGF0aWNfY2FzdDxHTHVpbnQ+KHJhbmdlKSk7Cit9CisK
IEJ1ZmZlciAqUmVzb3VyY2VNYW5hZ2VyOjpnZXRCdWZmZXIodW5zaWduZWQgaW50IGhhbmRsZSkK
IHsKICAgICBhdXRvIGJ1ZmZlciA9IG1CdWZmZXJNYXAuZmluZChoYW5kbGUpOwpAQCAtMjY1LDcg
KzMwOSw3IEBACiAgICAgfQogfQogCi1TaGFkZXIgKlJlc291cmNlTWFuYWdlcjo6Z2V0U2hhZGVy
KHVuc2lnbmVkIGludCBoYW5kbGUpCitTaGFkZXIgKlJlc291cmNlTWFuYWdlcjo6Z2V0U2hhZGVy
KHVuc2lnbmVkIGludCBoYW5kbGUpIGNvbnN0CiB7CiAgICAgYXV0byBzaGFkZXIgPSBtU2hhZGVy
TWFwLmZpbmQoaGFuZGxlKTsKIApAQCAtMzUyLDEyICszOTYsMzQgQEAKICAgICB9CiB9CiAKK2Nv
bnN0IFBhdGggKlJlc291cmNlTWFuYWdlcjo6Z2V0UGF0aChHTHVpbnQgaGFuZGxlKSBjb25zdAor
eworICAgIGF1dG8gaXQgPSBtUGF0aE1hcC5maW5kKGhhbmRsZSk7CisgICAgaWYgKGl0ID09IHN0
ZDo6ZW5kKG1QYXRoTWFwKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGl0
LT5zZWNvbmQ7Cit9CisKK1BhdGggKlJlc291cmNlTWFuYWdlcjo6Z2V0UGF0aChHTHVpbnQgaGFu
ZGxlKQoreworICAgIGF1dG8gaXQgPSBtUGF0aE1hcC5maW5kKGhhbmRsZSk7CisgICAgaWYgKGl0
ID09IHN0ZDo6ZW5kKG1QYXRoTWFwKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBy
ZXR1cm4gaXQtPnNlY29uZDsKK30KKworYm9vbCBSZXNvdXJjZU1hbmFnZXI6Omhhc1BhdGgoR0x1
aW50IGhhbmRsZSkgY29uc3QKK3sKKyAgICByZXR1cm4gbVBhdGhIYW5kbGVBbGxvY2F0b3IuaXNV
c2VkKGhhbmRsZSk7Cit9CisKIHZvaWQgUmVzb3VyY2VNYW5hZ2VyOjpzZXRSZW5kZXJidWZmZXIo
R0x1aW50IGhhbmRsZSwgUmVuZGVyYnVmZmVyICpidWZmZXIpCiB7CiAgICAgbVJlbmRlcmJ1ZmZl
ck1hcFtoYW5kbGVdID0gYnVmZmVyOwogfQogCi1CdWZmZXIgKlJlc291cmNlTWFuYWdlcjo6Y2hl
Y2tCdWZmZXJBbGxvY2F0aW9uKEdMdWludCBoYW5kbGUpCitCdWZmZXIgKlJlc291cmNlTWFuYWdl
cjo6Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5LCBHTHVp
bnQgaGFuZGxlKQogewogICAgIGlmIChoYW5kbGUgPT0gMCkKICAgICB7CkBAIC0zNzIsNyArNDM4
LDcgQEAKICAgICAgICAgcmV0dXJuIGJ1ZmZlck1hcEl0LT5zZWNvbmQ7CiAgICAgfQogCi0gICAg
QnVmZmVyICpidWZmZXIgPSBuZXcgQnVmZmVyKG1GYWN0b3J5LT5jcmVhdGVCdWZmZXIoKSwgaGFu
ZGxlKTsKKyAgICBCdWZmZXIgKmJ1ZmZlciA9IG5ldyBCdWZmZXIoZmFjdG9yeS0+Y3JlYXRlQnVm
ZmVyKCksIGhhbmRsZSk7CiAgICAgYnVmZmVyLT5hZGRSZWYoKTsKIAogICAgIGlmIChoYW5kbGVB
bGxvY2F0ZWQpCkBAIC0zODgsNyArNDU0LDkgQEAKICAgICByZXR1cm4gYnVmZmVyOwogfQogCi1U
ZXh0dXJlICpSZXNvdXJjZU1hbmFnZXI6OmNoZWNrVGV4dHVyZUFsbG9jYXRpb24oR0x1aW50IGhh
bmRsZSwgR0xlbnVtIHR5cGUpCitUZXh0dXJlICpSZXNvdXJjZU1hbmFnZXI6OmNoZWNrVGV4dHVy
ZUFsbG9jYXRpb24ocng6OkdMSW1wbEZhY3RvcnkgKmZhY3RvcnksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGhhbmRsZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSkKIHsK
ICAgICBpZiAoaGFuZGxlID09IDApCiAgICAgewpAQCAtNDAzLDcgKzQ3MSw3IEBACiAgICAgICAg
IHJldHVybiB0ZXh0dXJlTWFwSXQtPnNlY29uZDsKICAgICB9CiAKLSAgICBUZXh0dXJlICp0ZXh0
dXJlID0gbmV3IFRleHR1cmUobUZhY3RvcnktPmNyZWF0ZVRleHR1cmUodHlwZSksIGhhbmRsZSwg
dHlwZSk7CisgICAgVGV4dHVyZSAqdGV4dHVyZSA9IG5ldyBUZXh0dXJlKGZhY3RvcnksIGhhbmRs
ZSwgdHlwZSk7CiAgICAgdGV4dHVyZS0+YWRkUmVmKCk7CiAKICAgICBpZiAoaGFuZGxlQWxsb2Nh
dGVkKQpAQCAtNDE5LDcgKzQ4Nyw4IEBACiAgICAgcmV0dXJuIHRleHR1cmU7CiB9CiAKLVJlbmRl
cmJ1ZmZlciAqUmVzb3VyY2VNYW5hZ2VyOjpjaGVja1JlbmRlcmJ1ZmZlckFsbG9jYXRpb24oR0x1
aW50IGhhbmRsZSkKK1JlbmRlcmJ1ZmZlciAqUmVzb3VyY2VNYW5hZ2VyOjpjaGVja1JlbmRlcmJ1
ZmZlckFsbG9jYXRpb24ocng6OkdMSW1wbEZhY3RvcnkgKmZhY3RvcnksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBoYW5k
bGUpCiB7CiAgICAgaWYgKGhhbmRsZSA9PSAwKQogICAgIHsKQEAgLTQzNCw3ICs1MDMsNyBAQAog
ICAgICAgICByZXR1cm4gcmVuZGVyYnVmZmVyTWFwSXQtPnNlY29uZDsKICAgICB9CiAKLSAgICBS
ZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlciA9IG5ldyBSZW5kZXJidWZmZXIobUZhY3RvcnktPmNy
ZWF0ZVJlbmRlcmJ1ZmZlcigpLCBoYW5kbGUpOworICAgIFJlbmRlcmJ1ZmZlciAqcmVuZGVyYnVm
ZmVyID0gbmV3IFJlbmRlcmJ1ZmZlcihmYWN0b3J5LT5jcmVhdGVSZW5kZXJidWZmZXIoKSwgaGFu
ZGxlKTsKICAgICByZW5kZXJidWZmZXItPmFkZFJlZigpOwogCiAgICAgaWYgKGhhbmRsZUFsbG9j
YXRlZCkKQEAgLTQ1MCw3ICs1MTksNyBAQAogICAgIHJldHVybiByZW5kZXJidWZmZXI7CiB9CiAK
LVNhbXBsZXIgKlJlc291cmNlTWFuYWdlcjo6Y2hlY2tTYW1wbGVyQWxsb2NhdGlvbihHTHVpbnQg
c2FtcGxlckhhbmRsZSkKK1NhbXBsZXIgKlJlc291cmNlTWFuYWdlcjo6Y2hlY2tTYW1wbGVyQWxs
b2NhdGlvbihyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwgR0x1aW50IHNhbXBsZXJIYW5kbGUp
CiB7CiAgICAgLy8gU2FtcGxlcnMgY2Fubm90IGJlIGNyZWF0ZWQgdmlhIEJpbmQKICAgICBpZiAo
c2FtcGxlckhhbmRsZSA9PSAwKQpAQCAtNDYyLDcgKzUzMSw3IEBACiAKICAgICBpZiAoIXNhbXBs
ZXIpCiAgICAgewotICAgICAgICBzYW1wbGVyICAgICAgICAgICAgICAgICAgICA9IG5ldyBTYW1w
bGVyKG1GYWN0b3J5LCBzYW1wbGVySGFuZGxlKTsKKyAgICAgICAgc2FtcGxlciAgICAgICAgICAg
ICAgICAgICAgPSBuZXcgU2FtcGxlcihmYWN0b3J5LCBzYW1wbGVySGFuZGxlKTsKICAgICAgICAg
bVNhbXBsZXJNYXBbc2FtcGxlckhhbmRsZV0gPSBzYW1wbGVyOwogICAgICAgICBzYW1wbGVyLT5h
ZGRSZWYoKTsKICAgICB9CkBAIC00NzUsNCArNTQ0LDE5IEBACiAgICAgcmV0dXJuIG1TYW1wbGVy
TWFwLmZpbmQoc2FtcGxlcikgIT0gbVNhbXBsZXJNYXAuZW5kKCk7CiB9CiAKK2Jvb2wgUmVzb3Vy
Y2VNYW5hZ2VyOjppc1RleHR1cmVHZW5lcmF0ZWQoR0x1aW50IHRleHR1cmUpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHRleHR1cmUgPT0gMCB8fCBtVGV4dHVyZU1hcC5maW5kKHRleHR1cmUpICE9IG1U
ZXh0dXJlTWFwLmVuZCgpOworfQorCitib29sIFJlc291cmNlTWFuYWdlcjo6aXNCdWZmZXJHZW5l
cmF0ZWQoR0x1aW50IGJ1ZmZlcikgY29uc3QKK3sKKyAgICByZXR1cm4gYnVmZmVyID09IDAgfHwg
bUJ1ZmZlck1hcC5maW5kKGJ1ZmZlcikgIT0gbUJ1ZmZlck1hcC5lbmQoKTsKK30KKworYm9vbCBS
ZXNvdXJjZU1hbmFnZXI6OmlzUmVuZGVyYnVmZmVyR2VuZXJhdGVkKEdMdWludCByZW5kZXJidWZm
ZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlbmRlcmJ1ZmZlciA9PSAwIHx8IG1SZW5kZXJidWZm
ZXJNYXAuZmluZChyZW5kZXJidWZmZXIpICE9IG1SZW5kZXJidWZmZXJNYXAuZW5kKCk7Cit9CisK
IH0gIC8vIG5hbWVzcGFjZSBnbApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL1Jlc291cmNlTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9SZXNvdXJjZU1hbmFnZXIuaAkocmV2aXNpb24gMjA4MDIxKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Jlc291cmNlTWFuYWdlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMywxOSArMTMsMjEgQEAKICNpbmNsdWRlICJhbmdsZV9nbC5o
IgogI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvYW5n
bGV0eXBlcy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0Vycm9yLmgiCiAjaW5jbHVkZSAibGliQU5H
TEUvSGFuZGxlQWxsb2NhdG9yLmgiCisjaW5jbHVkZSAibGliQU5HTEUvSGFuZGxlUmFuZ2VBbGxv
Y2F0b3IuaCIKIAogbmFtZXNwYWNlIHJ4CiB7Ci1jbGFzcyBJbXBsRmFjdG9yeTsKK2NsYXNzIEdM
SW1wbEZhY3Rvcnk7CiB9CiAKIG5hbWVzcGFjZSBnbAogewogY2xhc3MgQnVmZmVyOwotc3RydWN0
IERhdGE7CiBjbGFzcyBGZW5jZVN5bmM7CiBzdHJ1Y3QgTGltaXRhdGlvbnM7CitjbGFzcyBQYXRo
OwogY2xhc3MgUHJvZ3JhbTsKIGNsYXNzIFJlbmRlcmJ1ZmZlcjsKIGNsYXNzIFNhbXBsZXI7CkBA
IC0zNSw3ICszNyw3IEBACiBjbGFzcyBSZXNvdXJjZU1hbmFnZXIgOiBhbmdsZTo6Tm9uQ29weWFi
bGUKIHsKICAgcHVibGljOgotICAgIGV4cGxpY2l0IFJlc291cmNlTWFuYWdlcihyeDo6SW1wbEZh
Y3RvcnkgKmZhY3RvcnkpOworICAgIFJlc291cmNlTWFuYWdlcigpOwogICAgIH5SZXNvdXJjZU1h
bmFnZXIoKTsKIAogICAgIHZvaWQgYWRkUmVmKCk7CkBAIC00MiwxMiArNDQsMTUgQEAKICAgICB2
b2lkIHJlbGVhc2UoKTsKIAogICAgIEdMdWludCBjcmVhdGVCdWZmZXIoKTsKLSAgICBHTHVpbnQg
Y3JlYXRlU2hhZGVyKGNvbnN0IGdsOjpMaW1pdGF0aW9ucyAmcmVuZGVyZXJMaW1pdGF0aW9ucywg
R0xlbnVtIHR5cGUpOwotICAgIEdMdWludCBjcmVhdGVQcm9ncmFtKCk7CisgICAgR0x1aW50IGNy
ZWF0ZVNoYWRlcihyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpMaW1pdGF0aW9ucyAmcmVuZGVyZXJMaW1pdGF0aW9ucywKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlKTsKKyAgICBHTHVpbnQgY3JlYXRlUHJvZ3Jh
bShyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSk7CiAgICAgR0x1aW50IGNyZWF0ZVRleHR1cmUo
KTsKICAgICBHTHVpbnQgY3JlYXRlUmVuZGVyYnVmZmVyKCk7CiAgICAgR0x1aW50IGNyZWF0ZVNh
bXBsZXIoKTsKLSAgICBHTHVpbnQgY3JlYXRlRmVuY2VTeW5jKCk7CisgICAgR0x1aW50IGNyZWF0
ZUZlbmNlU3luYyhyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSk7CisgICAgRXJyb3JPclJlc3Vs
dDxHTHVpbnQ+IGNyZWF0ZVBhdGhzKHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5LCBHTHNpemVp
IHJhbmdlKTsKIAogICAgIHZvaWQgZGVsZXRlQnVmZmVyKEdMdWludCBidWZmZXIpOwogICAgIHZv
aWQgZGVsZXRlU2hhZGVyKEdMdWludCBzaGFkZXIpOwpAQCAtNTYsOSArNjEsMTAgQEAKICAgICB2
b2lkIGRlbGV0ZVJlbmRlcmJ1ZmZlcihHTHVpbnQgcmVuZGVyYnVmZmVyKTsKICAgICB2b2lkIGRl
bGV0ZVNhbXBsZXIoR0x1aW50IHNhbXBsZXIpOwogICAgIHZvaWQgZGVsZXRlRmVuY2VTeW5jKEdM
dWludCBmZW5jZVN5bmMpOworICAgIHZvaWQgZGVsZXRlUGF0aHMoR0x1aW50IGZpcnN0LCBHTHNp
emVpIHJhbmdlKTsKIAogICAgIEJ1ZmZlciAqZ2V0QnVmZmVyKEdMdWludCBoYW5kbGUpOwotICAg
IFNoYWRlciAqZ2V0U2hhZGVyKEdMdWludCBoYW5kbGUpOworICAgIFNoYWRlciAqZ2V0U2hhZGVy
KEdMdWludCBoYW5kbGUpIGNvbnN0OwogICAgIFByb2dyYW0gKmdldFByb2dyYW0oR0x1aW50IGhh
bmRsZSkgY29uc3Q7CiAgICAgVGV4dHVyZSAqZ2V0VGV4dHVyZShHTHVpbnQgaGFuZGxlKTsKICAg
ICBSZW5kZXJidWZmZXIgKmdldFJlbmRlcmJ1ZmZlcihHTHVpbnQgaGFuZGxlKTsKQEAgLTY1LDE5
ICs3MSwyOCBAQAogICAgIFNhbXBsZXIgKmdldFNhbXBsZXIoR0x1aW50IGhhbmRsZSk7CiAgICAg
RmVuY2VTeW5jICpnZXRGZW5jZVN5bmMoR0x1aW50IGhhbmRsZSk7CiAKKyAgICAvLyBDSFJPTUlV
TV9wYXRoX3JlbmRlcmluZworICAgIGNvbnN0IFBhdGggKmdldFBhdGgoR0x1aW50IHBhdGgpIGNv
bnN0OworICAgIFBhdGggKmdldFBhdGgoR0x1aW50IHBhdGgpOworICAgIGJvb2wgaGFzUGF0aChH
THVpbnQgcGF0aCkgY29uc3Q7CisKICAgICB2b2lkIHNldFJlbmRlcmJ1ZmZlcihHTHVpbnQgaGFu
ZGxlLCBSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlcik7CiAKLSAgICBCdWZmZXIgKmNoZWNrQnVm
ZmVyQWxsb2NhdGlvbihHTHVpbnQgaGFuZGxlKTsKLSAgICBUZXh0dXJlICpjaGVja1RleHR1cmVB
bGxvY2F0aW9uKEdMdWludCBoYW5kbGUsIEdMZW51bSB0eXBlKTsKLSAgICBSZW5kZXJidWZmZXIg
KmNoZWNrUmVuZGVyYnVmZmVyQWxsb2NhdGlvbihHTHVpbnQgaGFuZGxlKTsKLSAgICBTYW1wbGVy
ICpjaGVja1NhbXBsZXJBbGxvY2F0aW9uKEdMdWludCBzYW1wbGVySGFuZGxlKTsKKyAgICBCdWZm
ZXIgKmNoZWNrQnVmZmVyQWxsb2NhdGlvbihyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwgR0x1
aW50IGhhbmRsZSk7CisgICAgVGV4dHVyZSAqY2hlY2tUZXh0dXJlQWxsb2NhdGlvbihyeDo6R0xJ
bXBsRmFjdG9yeSAqZmFjdG9yeSwgR0x1aW50IGhhbmRsZSwgR0xlbnVtIHR5cGUpOworICAgIFJl
bmRlcmJ1ZmZlciAqY2hlY2tSZW5kZXJidWZmZXJBbGxvY2F0aW9uKHJ4OjpHTEltcGxGYWN0b3J5
ICpmYWN0b3J5LCBHTHVpbnQgaGFuZGxlKTsKKyAgICBTYW1wbGVyICpjaGVja1NhbXBsZXJBbGxv
Y2F0aW9uKHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5LCBHTHVpbnQgc2FtcGxlckhhbmRsZSk7
CiAKICAgICBib29sIGlzU2FtcGxlcihHTHVpbnQgc2FtcGxlcik7CiAKKyAgICAvLyBHTF9DSFJP
TUlVTV9iaW5kX2dlbmVyYXRlc19yZXNvdXJjZQorICAgIGJvb2wgaXNUZXh0dXJlR2VuZXJhdGVk
KEdMdWludCB0ZXh0dXJlKSBjb25zdDsKKyAgICBib29sIGlzQnVmZmVyR2VuZXJhdGVkKEdMdWlu
dCBidWZmZXIpIGNvbnN0OworICAgIGJvb2wgaXNSZW5kZXJidWZmZXJHZW5lcmF0ZWQoR0x1aW50
IHJlbmRlcmJ1ZmZlcikgY29uc3Q7CisKICAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZVRleHR1
cmVJbnRlcm5hbChHTHVpbnQgaGFuZGxlKTsKIAotICAgIHJ4OjpJbXBsRmFjdG9yeSAqbUZhY3Rv
cnk7CiAgICAgc3RkOjpzaXplX3QgbVJlZkNvdW50OwogCiAgICAgUmVzb3VyY2VNYXA8QnVmZmVy
PiBtQnVmZmVyTWFwOwpAQCAtOTksNiArMTE0LDkgQEAKIAogICAgIFJlc291cmNlTWFwPEZlbmNl
U3luYz4gbUZlbmNlU3luY01hcDsKICAgICBIYW5kbGVBbGxvY2F0b3IgbUZlbmNlU3luY0hhbmRs
ZUFsbG9jYXRvcjsKKworICAgIFJlc291cmNlTWFwPFBhdGg+IG1QYXRoTWFwOworICAgIEhhbmRs
ZVJhbmdlQWxsb2NhdG9yIG1QYXRoSGFuZGxlQWxsb2NhdG9yOwogfTsKIAogfSAgLy8gbmFtZXNw
YWNlIGdsCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUmVzb3Vy
Y2VNYW5hZ2VyX3VuaXR0ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvUmVzb3VyY2VNYW5hZ2VyX3VuaXR0ZXN0LmNwcAkocmV2aXNpb24g
MjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Jlc291cmNl
TWFuYWdlcl91bml0dGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTksMjkgKzksMjMgQEAKICNp
bmNsdWRlIDxnbW9jay9nbW9jay5oPgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAKKyNpbmNs
dWRlICJsaWJBTkdMRS9SZXNvdXJjZU1hbmFnZXIuaCIKICNpbmNsdWRlICJ0ZXN0cy9hbmdsZV91
bml0dGVzdHNfdXRpbHMuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9SZXNvdXJjZU1hbmFnZXIuaCIK
IAogdXNpbmcgbmFtZXNwYWNlIHJ4OwogdXNpbmcgbmFtZXNwYWNlIGdsOwogCit1c2luZyA6OnRl
c3Rpbmc6Ol87CisKIG5hbWVzcGFjZQogewogCi1jbGFzcyBNb2NrRmFjdG9yeSA6IHB1YmxpYyBO
dWxsRmFjdG9yeQotewotICBwdWJsaWM6Ci0gICAgTU9DS19NRVRIT0QwKGNyZWF0ZUJ1ZmZlciwg
QnVmZmVySW1wbCooKSk7Ci0gICAgTU9DS19NRVRIT0QxKGNyZWF0ZVRleHR1cmUsIFRleHR1cmVJ
bXBsKihHTGVudW0pKTsKLSAgICBNT0NLX01FVEhPRDAoY3JlYXRlUmVuZGVyYnVmZmVyLCBSZW5k
ZXJidWZmZXJJbXBsKigpKTsKLX07Ci0KIGNsYXNzIFJlc291cmNlTWFuYWdlclRlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdAogewogICBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBTZXRVcCgpIG92ZXJy
aWRlCiAgICAgewotICAgICAgICBtUmVzb3VyY2VNYW5hZ2VyID0gbmV3IFJlc291cmNlTWFuYWdl
cigmbU1vY2tGYWN0b3J5KTsKKyAgICAgICAgbVJlc291cmNlTWFuYWdlciA9IG5ldyBSZXNvdXJj
ZU1hbmFnZXIoKTsKICAgICB9CiAKICAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKQEAgLTM5
LDE1ICszMywxNSBAQAogICAgICAgICBTYWZlRGVsZXRlKG1SZXNvdXJjZU1hbmFnZXIpOwogICAg
IH0KIAotICAgIE1vY2tGYWN0b3J5IG1Nb2NrRmFjdG9yeTsKKyAgICBNb2NrR0xGYWN0b3J5IG1N
b2NrRmFjdG9yeTsKICAgICBSZXNvdXJjZU1hbmFnZXIgKm1SZXNvdXJjZU1hbmFnZXI7CiB9Owog
CiBURVNUX0YoUmVzb3VyY2VNYW5hZ2VyVGVzdCwgUmVhbGxvY2F0ZUJvdW5kVGV4dHVyZSkKIHsK
LSAgICBFWFBFQ1RfQ0FMTChtTW9ja0ZhY3RvcnksIGNyZWF0ZVRleHR1cmUoR0xfVEVYVFVSRV8y
RCkpLlRpbWVzKDEpLlJldGlyZXNPblNhdHVyYXRpb24oKTsKKyAgICBFWFBFQ1RfQ0FMTChtTW9j
a0ZhY3RvcnksIGNyZWF0ZVRleHR1cmUoXykpLlRpbWVzKDEpLlJldGlyZXNPblNhdHVyYXRpb24o
KTsKIAotICAgIG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrVGV4dHVyZUFsbG9jYXRpb24oMSwgR0xf
VEVYVFVSRV8yRCk7CisgICAgbVJlc291cmNlTWFuYWdlci0+Y2hlY2tUZXh0dXJlQWxsb2NhdGlv
bigmbU1vY2tGYWN0b3J5LCAxLCBHTF9URVhUVVJFXzJEKTsKICAgICBHTHVpbnQgbmV3VGV4dHVy
ZSA9IG1SZXNvdXJjZU1hbmFnZXItPmNyZWF0ZVRleHR1cmUoKTsKICAgICBFWFBFQ1RfTkUoMXUs
IG5ld1RleHR1cmUpOwogfQpAQCAtNTYsNyArNTAsNyBAQAogewogICAgIEVYUEVDVF9DQUxMKG1N
b2NrRmFjdG9yeSwgY3JlYXRlQnVmZmVyKCkpLlRpbWVzKDEpLlJldGlyZXNPblNhdHVyYXRpb24o
KTsKIAotICAgIG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrQnVmZmVyQWxsb2NhdGlvbigxKTsKKyAg
ICBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja0J1ZmZlckFsbG9jYXRpb24oJm1Nb2NrRmFjdG9yeSwg
MSk7CiAgICAgR0x1aW50IG5ld0J1ZmZlciA9IG1SZXNvdXJjZU1hbmFnZXItPmNyZWF0ZUJ1ZmZl
cigpOwogICAgIEVYUEVDVF9ORSgxdSwgbmV3QnVmZmVyKTsKIH0KQEAgLTY1LDkgKzU5LDkgQEAK
IHsKICAgICBFWFBFQ1RfQ0FMTChtTW9ja0ZhY3RvcnksIGNyZWF0ZVJlbmRlcmJ1ZmZlcigpKS5U
aW1lcygxKS5SZXRpcmVzT25TYXR1cmF0aW9uKCk7CiAKLSAgICBtUmVzb3VyY2VNYW5hZ2VyLT5j
aGVja1JlbmRlcmJ1ZmZlckFsbG9jYXRpb24oMSk7CisgICAgbVJlc291cmNlTWFuYWdlci0+Y2hl
Y2tSZW5kZXJidWZmZXJBbGxvY2F0aW9uKCZtTW9ja0ZhY3RvcnksIDEpOwogICAgIEdMdWludCBu
ZXdSZW5kZXJidWZmZXIgPSBtUmVzb3VyY2VNYW5hZ2VyLT5jcmVhdGVSZW5kZXJidWZmZXIoKTsK
ICAgICBFWFBFQ1RfTkUoMXUsIG5ld1JlbmRlcmJ1ZmZlcik7CiB9CiAKLX0KK30gIC8vIGFub255
bW91cyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9TYW1wbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvU2FtcGxlci5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TYW1wbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOSwx
MyArOSwxMyBAQAogCiAjaW5jbHVkZSAibGliQU5HTEUvU2FtcGxlci5oIgogI2luY2x1ZGUgImxp
YkFOR0xFL2FuZ2xldHlwZXMuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9JbXBsRmFj
dG9yeS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0dMSW1wbEZhY3RvcnkuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9TYW1wbGVySW1wbC5oIgogCiBuYW1lc3BhY2UgZ2wK
IHsKIAotU2FtcGxlcjo6U2FtcGxlcihyeDo6SW1wbEZhY3RvcnkgKmZhY3RvcnksIEdMdWludCBp
ZCkKK1NhbXBsZXI6OlNhbXBsZXIocng6OkdMSW1wbEZhY3RvcnkgKmZhY3RvcnksIEdMdWludCBp
ZCkKICAgICA6IFJlZkNvdW50T2JqZWN0KGlkKSwgbUltcGwoZmFjdG9yeS0+Y3JlYXRlU2FtcGxl
cigpKSwgbUxhYmVsKCksIG1TYW1wbGVyU3RhdGUoKQogewogfQpAQCAtMTQwLDEzICsxNDAsOSBA
QAogICAgIHJldHVybiBtU2FtcGxlclN0YXRlOwogfQogCi1jb25zdCByeDo6U2FtcGxlckltcGwg
KlNhbXBsZXI6OmdldEltcGxlbWVudGF0aW9uKCkgY29uc3QKK3J4OjpTYW1wbGVySW1wbCAqU2Ft
cGxlcjo6Z2V0SW1wbGVtZW50YXRpb24oKSBjb25zdAogewogICAgIHJldHVybiBtSW1wbDsKIH0K
IAotcng6OlNhbXBsZXJJbXBsICpTYW1wbGVyOjpnZXRJbXBsZW1lbnRhdGlvbigpCi17Ci0gICAg
cmV0dXJuIG1JbXBsOwogfQotfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL1NhbXBsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvU2FtcGxlci5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU2FtcGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNiw3
ICsxNiw3IEBACiAKIG5hbWVzcGFjZSByeAogewotY2xhc3MgSW1wbEZhY3Rvcnk7CitjbGFzcyBH
TEltcGxGYWN0b3J5OwogY2xhc3MgU2FtcGxlckltcGw7CiB9CiAKQEAgLTI2LDcgKzI2LDcgQEAK
IGNsYXNzIFNhbXBsZXIgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRPYmplY3QsIHB1YmxpYyBMYWJl
bGVkT2JqZWN0CiB7CiAgIHB1YmxpYzoKLSAgICBTYW1wbGVyKHJ4OjpJbXBsRmFjdG9yeSAqZmFj
dG9yeSwgR0x1aW50IGlkKTsKKyAgICBTYW1wbGVyKHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5
LCBHTHVpbnQgaWQpOwogICAgIH5TYW1wbGVyKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldExh
YmVsKGNvbnN0IHN0ZDo6c3RyaW5nICZsYWJlbCkgb3ZlcnJpZGU7CkBAIC02NCw4ICs2NCw3IEBA
CiAKICAgICBjb25zdCBTYW1wbGVyU3RhdGUgJmdldFNhbXBsZXJTdGF0ZSgpIGNvbnN0OwogCi0g
ICAgY29uc3Qgcng6OlNhbXBsZXJJbXBsICpnZXRJbXBsZW1lbnRhdGlvbigpIGNvbnN0OwotICAg
IHJ4OjpTYW1wbGVySW1wbCAqZ2V0SW1wbGVtZW50YXRpb24oKTsKKyAgICByeDo6U2FtcGxlcklt
cGwgKmdldEltcGxlbWVudGF0aW9uKCkgY29uc3Q7CiAKICAgcHJpdmF0ZToKICAgICByeDo6U2Ft
cGxlckltcGwgKm1JbXBsOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL1NoYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL1NoYWRlci5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TaGFkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw5
ICsxNCwxMCBAQAogCiAjaW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkdM
U0xBTkcvU2hhZGVyTGFuZy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0NhcHMuaCIKICNpbmNsdWRl
ICJsaWJBTkdMRS9Db21waWxlci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0NvbnN0YW50cy5oIgot
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1JlbmRlcmVyLmgiCisjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvR0xJbXBsRmFjdG9yeS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L1NoYWRlckltcGwuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9SZXNvdXJjZU1hbmFnZXIuaCIKIApA
QCAtNzIsMjEgKzczLDIyIEBACiAgICAgcmV0dXJuIGdsOjpWYXJpYWJsZVNvcnRPcmRlcih4LnR5
cGUpIDwgZ2w6OlZhcmlhYmxlU29ydE9yZGVyKHkudHlwZSk7CiB9CiAKLVNoYWRlcjo6RGF0YTo6
RGF0YShHTGVudW0gc2hhZGVyVHlwZSkgOiBtTGFiZWwoKSwgbVNoYWRlclR5cGUoc2hhZGVyVHlw
ZSksIG1TaGFkZXJWZXJzaW9uKDEwMCkKK1NoYWRlclN0YXRlOjpTaGFkZXJTdGF0ZShHTGVudW0g
c2hhZGVyVHlwZSkgOiBtTGFiZWwoKSwgbVNoYWRlclR5cGUoc2hhZGVyVHlwZSksIG1TaGFkZXJW
ZXJzaW9uKDEwMCkKIHsKKyAgICBtTG9jYWxTaXplLmZpbGwoLTEpOwogfQogCi1TaGFkZXI6OkRh
dGE6On5EYXRhKCkKK1NoYWRlclN0YXRlOjp+U2hhZGVyU3RhdGUoKQogewogfQogCiBTaGFkZXI6
OlNoYWRlcihSZXNvdXJjZU1hbmFnZXIgKm1hbmFnZXIsCi0gICAgICAgICAgICAgICByeDo6SW1w
bEZhY3RvcnkgKmltcGxGYWN0b3J5LAorICAgICAgICAgICAgICAgcng6OkdMSW1wbEZhY3Rvcnkg
KmltcGxGYWN0b3J5LAogICAgICAgICAgICAgICAgY29uc3QgZ2w6OkxpbWl0YXRpb25zICZyZW5k
ZXJlckxpbWl0YXRpb25zLAogICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAg
ICAgICBHTHVpbnQgaGFuZGxlKQotICAgIDogbURhdGEodHlwZSksCi0gICAgICBtSW1wbGVtZW50
YXRpb24oaW1wbEZhY3RvcnktPmNyZWF0ZVNoYWRlcihtRGF0YSkpLAorICAgIDogbVN0YXRlKHR5
cGUpLAorICAgICAgbUltcGxlbWVudGF0aW9uKGltcGxGYWN0b3J5LT5jcmVhdGVTaGFkZXIobVN0
YXRlKSksCiAgICAgICBtUmVuZGVyZXJMaW1pdGF0aW9ucyhyZW5kZXJlckxpbWl0YXRpb25zKSwK
ICAgICAgIG1IYW5kbGUoaGFuZGxlKSwKICAgICAgIG1UeXBlKHR5cGUpLApAQCAtMTA1LDEyICsx
MDcsMTIgQEAKIAogdm9pZCBTaGFkZXI6OnNldExhYmVsKGNvbnN0IHN0ZDo6c3RyaW5nICZsYWJl
bCkKIHsKLSAgICBtRGF0YS5tTGFiZWwgPSBsYWJlbDsKKyAgICBtU3RhdGUubUxhYmVsID0gbGFi
ZWw7CiB9CiAKIGNvbnN0IHN0ZDo6c3RyaW5nICZTaGFkZXI6OmdldExhYmVsKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbURhdGEubUxhYmVsOworICAgIHJldHVybiBtU3RhdGUubUxhYmVsOwogfQog
CiBHTHVpbnQgU2hhZGVyOjpnZXRIYW5kbGUoKSBjb25zdApAQCAtMTM0LDcgKzEzNiw3IEBACiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBtRGF0YS5tU291cmNlID0gc3RyZWFtLnN0cigpOworICAg
IG1TdGF0ZS5tU291cmNlID0gc3RyZWFtLnN0cigpOwogfQogCiBpbnQgU2hhZGVyOjpnZXRJbmZv
TG9nTGVuZ3RoKCkgY29uc3QKQEAgLTE2NywxNyArMTY5LDE3IEBACiAKIGludCBTaGFkZXI6Omdl
dFNvdXJjZUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1EYXRhLm1Tb3VyY2UuZW1wdHko
KSA/IDAgOiAoc3RhdGljX2Nhc3Q8aW50PihtRGF0YS5tU291cmNlLmxlbmd0aCgpKSArIDEpOwor
ICAgIHJldHVybiBtU3RhdGUubVNvdXJjZS5lbXB0eSgpID8gMCA6IChzdGF0aWNfY2FzdDxpbnQ+
KG1TdGF0ZS5tU291cmNlLmxlbmd0aCgpKSArIDEpOwogfQogCiBpbnQgU2hhZGVyOjpnZXRUcmFu
c2xhdGVkU291cmNlTGVuZ3RoKCkgY29uc3QKIHsKLSAgICBpZiAobURhdGEubVRyYW5zbGF0ZWRT
b3VyY2UuZW1wdHkoKSkKKyAgICBpZiAobVN0YXRlLm1UcmFuc2xhdGVkU291cmNlLmVtcHR5KCkp
CiAgICAgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICByZXR1cm4gKHN0YXRpY19j
YXN0PGludD4obURhdGEubVRyYW5zbGF0ZWRTb3VyY2UubGVuZ3RoKCkpICsgMSk7CisgICAgcmV0
dXJuIChzdGF0aWNfY2FzdDxpbnQ+KG1TdGF0ZS5tVHJhbnNsYXRlZFNvdXJjZS5sZW5ndGgoKSkg
KyAxKTsKIH0KIAogaW50IFNoYWRlcjo6Z2V0VHJhbnNsYXRlZFNvdXJjZVdpdGhEZWJ1Z0luZm9M
ZW5ndGgoKSBjb25zdApAQCAtMjExLDEyICsyMTMsMTIgQEAKIAogdm9pZCBTaGFkZXI6OmdldFNv
dXJjZShHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgY2hhciAqYnVmZmVyKSBjb25z
dAogewotICAgIGdldFNvdXJjZUltcGwobURhdGEubVNvdXJjZSwgYnVmU2l6ZSwgbGVuZ3RoLCBi
dWZmZXIpOworICAgIGdldFNvdXJjZUltcGwobVN0YXRlLm1Tb3VyY2UsIGJ1ZlNpemUsIGxlbmd0
aCwgYnVmZmVyKTsKIH0KIAogdm9pZCBTaGFkZXI6OmdldFRyYW5zbGF0ZWRTb3VyY2UoR0xzaXpl
aSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmJ1ZmZlcikgY29uc3QKIHsKLSAgICBn
ZXRTb3VyY2VJbXBsKG1EYXRhLm1UcmFuc2xhdGVkU291cmNlLCBidWZTaXplLCBsZW5ndGgsIGJ1
ZmZlcik7CisgICAgZ2V0U291cmNlSW1wbChtU3RhdGUubVRyYW5zbGF0ZWRTb3VyY2UsIGJ1ZlNp
emUsIGxlbmd0aCwgYnVmZmVyKTsKIH0KIAogdm9pZCBTaGFkZXI6OmdldFRyYW5zbGF0ZWRTb3Vy
Y2VXaXRoRGVidWdJbmZvKEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICpi
dWZmZXIpIGNvbnN0CkBAIC0yMjcsMjMgKzIyOSwyMyBAQAogCiB2b2lkIFNoYWRlcjo6Y29tcGls
ZShDb21waWxlciAqY29tcGlsZXIpCiB7Ci0gICAgbURhdGEubVRyYW5zbGF0ZWRTb3VyY2UuY2xl
YXIoKTsKKyAgICBtU3RhdGUubVRyYW5zbGF0ZWRTb3VyY2UuY2xlYXIoKTsKICAgICBtSW5mb0xv
Zy5jbGVhcigpOwotICAgIG1EYXRhLm1TaGFkZXJWZXJzaW9uID0gMTAwOwotICAgIG1EYXRhLm1W
YXJ5aW5ncy5jbGVhcigpOwotICAgIG1EYXRhLm1Vbmlmb3Jtcy5jbGVhcigpOwotICAgIG1EYXRh
Lm1JbnRlcmZhY2VCbG9ja3MuY2xlYXIoKTsKLSAgICBtRGF0YS5tQWN0aXZlQXR0cmlidXRlcy5j
bGVhcigpOwotICAgIG1EYXRhLm1BY3RpdmVPdXRwdXRWYXJpYWJsZXMuY2xlYXIoKTsKKyAgICBt
U3RhdGUubVNoYWRlclZlcnNpb24gPSAxMDA7CisgICAgbVN0YXRlLm1WYXJ5aW5ncy5jbGVhcigp
OworICAgIG1TdGF0ZS5tVW5pZm9ybXMuY2xlYXIoKTsKKyAgICBtU3RhdGUubUludGVyZmFjZUJs
b2Nrcy5jbGVhcigpOworICAgIG1TdGF0ZS5tQWN0aXZlQXR0cmlidXRlcy5jbGVhcigpOworICAg
IG1TdGF0ZS5tQWN0aXZlT3V0cHV0VmFyaWFibGVzLmNsZWFyKCk7CiAKLSAgICBTaEhhbmRsZSBj
b21waWxlckhhbmRsZSA9IGNvbXBpbGVyLT5nZXRDb21waWxlckhhbmRsZShtRGF0YS5tU2hhZGVy
VHlwZSk7CisgICAgU2hIYW5kbGUgY29tcGlsZXJIYW5kbGUgPSBjb21waWxlci0+Z2V0Q29tcGls
ZXJIYW5kbGUobVN0YXRlLm1TaGFkZXJUeXBlKTsKIAogICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHNv
dXJjZVN0cmVhbTsKIAogICAgIHN0ZDo6c3RyaW5nIHNvdXJjZVBhdGg7Ci0gICAgaW50IGFkZGl0
aW9uYWxPcHRpb25zID0KKyAgICBTaENvbXBpbGVPcHRpb25zIGFkZGl0aW9uYWxPcHRpb25zID0K
ICAgICAgICAgbUltcGxlbWVudGF0aW9uLT5wcmVwYXJlU291cmNlQW5kUmV0dXJuT3B0aW9ucygm
c291cmNlU3RyZWFtLCAmc291cmNlUGF0aCk7Ci0gICAgaW50IGNvbXBpbGVPcHRpb25zICAgID0g
KFNIX09CSkVDVF9DT0RFIHwgU0hfVkFSSUFCTEVTIHwgYWRkaXRpb25hbE9wdGlvbnMpOworICAg
IFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMgPSAoU0hfT0JKRUNUX0NPREUgfCBTSF9W
QVJJQUJMRVMgfCBhZGRpdGlvbmFsT3B0aW9ucyk7CiAKICAgICAvLyBTb21lIHRhcmdldHMgKGVn
IEQzRDExIEZlYXR1cmUgTGV2ZWwgOV8zIGFuZCBiZWxvdykgZG8gbm90IHN1cHBvcnQgbm9uLWNv
bnN0YW50IGxvb3AgaW5kZXhlcwogICAgIC8vIGluIGZyYWdtZW50IHNoYWRlcnMuIFNoYWRlciBj
b21waWxhdGlvbiB3aWxsIGZhaWwuIFRvIHByb3ZpZGUgYSBiZXR0ZXIgZXJyb3IgbWVzc2FnZSB3
ZSBjYW4KQEAgLTI3NCw3ICsyNzYsNyBAQAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
bURhdGEubVRyYW5zbGF0ZWRTb3VyY2UgPSBTaEdldE9iamVjdENvZGUoY29tcGlsZXJIYW5kbGUp
OworICAgIG1TdGF0ZS5tVHJhbnNsYXRlZFNvdXJjZSA9IFNoR2V0T2JqZWN0Q29kZShjb21waWxl
ckhhbmRsZSk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgLy8gUHJlZml4IHRyYW5zbGF0ZWQgc2hh
ZGVyIHdpdGggY29tbWVudGVkIG91dCB1bi10cmFuc2xhdGVkIHNoYWRlci4KQEAgLTI4Niw0MSAr
Mjg4LDUxIEBACiAgICAgc2l6ZV90IGN1clBvcyA9IDA7CiAgICAgd2hpbGUgKGN1clBvcyAhPSBz
dGQ6OnN0cmluZzo6bnBvcykKICAgICB7Ci0gICAgICAgIHNpemVfdCBuZXh0TGluZSA9IG1EYXRh
Lm1Tb3VyY2UuZmluZCgiXG4iLCBjdXJQb3MpOworICAgICAgICBzaXplX3QgbmV4dExpbmUgPSBt
U3RhdGUubVNvdXJjZS5maW5kKCJcbiIsIGN1clBvcyk7CiAgICAgICAgIHNpemVfdCBsZW4gICAg
ICA9IChuZXh0TGluZSA9PSBzdGQ6OnN0cmluZzo6bnBvcykgPyBzdGQ6OnN0cmluZzo6bnBvcyA6
IChuZXh0TGluZSAtIGN1clBvcyArIDEpOwogCi0gICAgICAgIHNoYWRlclN0cmVhbSA8PCAiLy8g
IiA8PCBtRGF0YS5tU291cmNlLnN1YnN0cihjdXJQb3MsIGxlbik7CisgICAgICAgIHNoYWRlclN0
cmVhbSA8PCAiLy8gIiA8PCBtU3RhdGUubVNvdXJjZS5zdWJzdHIoY3VyUG9zLCBsZW4pOwogCiAg
ICAgICAgIGN1clBvcyA9IChuZXh0TGluZSA9PSBzdGQ6OnN0cmluZzo6bnBvcykgPyBzdGQ6OnN0
cmluZzo6bnBvcyA6IChuZXh0TGluZSArIDEpOwogICAgIH0KICAgICBzaGFkZXJTdHJlYW0gPDwg
IlxuXG4iOwotICAgIHNoYWRlclN0cmVhbSA8PCBtRGF0YS5tVHJhbnNsYXRlZFNvdXJjZTsKLSAg
ICBtRGF0YS5tVHJhbnNsYXRlZFNvdXJjZSA9IHNoYWRlclN0cmVhbS5zdHIoKTsKKyAgICBzaGFk
ZXJTdHJlYW0gPDwgbVN0YXRlLm1UcmFuc2xhdGVkU291cmNlOworICAgIG1TdGF0ZS5tVHJhbnNs
YXRlZFNvdXJjZSA9IHNoYWRlclN0cmVhbS5zdHIoKTsKICNlbmRpZgogCiAgICAgLy8gR2F0aGVy
IHRoZSBzaGFkZXIgaW5mb3JtYXRpb24KLSAgICBtRGF0YS5tU2hhZGVyVmVyc2lvbiA9IFNoR2V0
U2hhZGVyVmVyc2lvbihjb21waWxlckhhbmRsZSk7CisgICAgbVN0YXRlLm1TaGFkZXJWZXJzaW9u
ID0gU2hHZXRTaGFkZXJWZXJzaW9uKGNvbXBpbGVySGFuZGxlKTsKIAotICAgIG1EYXRhLm1WYXJ5
aW5ncyAgICAgICAgPSBHZXRTaGFkZXJWYXJpYWJsZXMoU2hHZXRWYXJ5aW5ncyhjb21waWxlckhh
bmRsZSkpOwotICAgIG1EYXRhLm1Vbmlmb3JtcyAgICAgICAgPSBHZXRTaGFkZXJWYXJpYWJsZXMo
U2hHZXRVbmlmb3Jtcyhjb21waWxlckhhbmRsZSkpOwotICAgIG1EYXRhLm1JbnRlcmZhY2VCbG9j
a3MgPSBHZXRTaGFkZXJWYXJpYWJsZXMoU2hHZXRJbnRlcmZhY2VCbG9ja3MoY29tcGlsZXJIYW5k
bGUpKTsKKyAgICBtU3RhdGUubVZhcnlpbmdzICAgICAgICA9IEdldFNoYWRlclZhcmlhYmxlcyhT
aEdldFZhcnlpbmdzKGNvbXBpbGVySGFuZGxlKSk7CisgICAgbVN0YXRlLm1Vbmlmb3JtcyAgICAg
ICAgPSBHZXRTaGFkZXJWYXJpYWJsZXMoU2hHZXRVbmlmb3Jtcyhjb21waWxlckhhbmRsZSkpOwor
ICAgIG1TdGF0ZS5tSW50ZXJmYWNlQmxvY2tzID0gR2V0U2hhZGVyVmFyaWFibGVzKFNoR2V0SW50
ZXJmYWNlQmxvY2tzKGNvbXBpbGVySGFuZGxlKSk7CiAKLSAgICBpZiAobURhdGEubVNoYWRlclR5
cGUgPT0gR0xfVkVSVEVYX1NIQURFUikKKyAgICBzd2l0Y2ggKG1TdGF0ZS5tU2hhZGVyVHlwZSkK
ICAgICB7Ci0gICAgICAgIG1EYXRhLm1BY3RpdmVBdHRyaWJ1dGVzID0gR2V0QWN0aXZlU2hhZGVy
VmFyaWFibGVzKFNoR2V0QXR0cmlidXRlcyhjb21waWxlckhhbmRsZSkpOworICAgICAgICBjYXNl
IEdMX0NPTVBVVEVfU0hBREVSOgorICAgICAgICB7CisgICAgICAgICAgICBtU3RhdGUubUxvY2Fs
U2l6ZSA9IFNoR2V0Q29tcHV0ZVNoYWRlckxvY2FsR3JvdXBTaXplKGNvbXBpbGVySGFuZGxlKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfVkVSVEVYX1NI
QURFUjoKKyAgICAgICAgeworICAgICAgICAgICAgbVN0YXRlLm1BY3RpdmVBdHRyaWJ1dGVzID0g
R2V0QWN0aXZlU2hhZGVyVmFyaWFibGVzKFNoR2V0QXR0cmlidXRlcyhjb21waWxlckhhbmRsZSkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9GUkFHTUVO
VF9TSEFERVI6CisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IEZpZ3Vy
ZSBvdXQgd2h5IHdlIG9ubHkgc29ydCBpbiB0aGUgRlMsIGFuZCBpZiB3ZSBuZWVkIHRvLgorICAg
ICAgICAgICAgc3RkOjpzb3J0KG1TdGF0ZS5tVmFyeWluZ3MuYmVnaW4oKSwgbVN0YXRlLm1WYXJ5
aW5ncy5lbmQoKSwgQ29tcGFyZVNoYWRlclZhcik7CisgICAgICAgICAgICBtU3RhdGUubUFjdGl2
ZU91dHB1dFZhcmlhYmxlcyA9CisgICAgICAgICAgICAgICAgR2V0QWN0aXZlU2hhZGVyVmFyaWFi
bGVzKFNoR2V0T3V0cHV0VmFyaWFibGVzKGNvbXBpbGVySGFuZGxlKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsKICAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1EYXRhLm1TaGFk
ZXJUeXBlID09IEdMX0ZSQUdNRU5UX1NIQURFUik7CiAKLSAgICAgICAgLy8gVE9ETyhqbWFkaWxs
KTogRmlndXJlIG91dCB3aHkgd2Ugb25seSBzb3J0IGluIHRoZSBGUywgYW5kIGlmIHdlIG5lZWQg
dG8uCi0gICAgICAgIHN0ZDo6c29ydChtRGF0YS5tVmFyeWluZ3MuYmVnaW4oKSwgbURhdGEubVZh
cnlpbmdzLmVuZCgpLCBDb21wYXJlU2hhZGVyVmFyKTsKLSAgICAgICAgbURhdGEubUFjdGl2ZU91
dHB1dFZhcmlhYmxlcyA9Ci0gICAgICAgICAgICBHZXRBY3RpdmVTaGFkZXJWYXJpYWJsZXMoU2hH
ZXRPdXRwdXRWYXJpYWJsZXMoY29tcGlsZXJIYW5kbGUpKTsKLSAgICB9CisgICAgQVNTRVJUKCFt
U3RhdGUubVRyYW5zbGF0ZWRTb3VyY2UuZW1wdHkoKSk7CiAKLSAgICBBU1NFUlQoIW1EYXRhLm1U
cmFuc2xhdGVkU291cmNlLmVtcHR5KCkpOwotCiAgICAgbUNvbXBpbGVkID0gbUltcGxlbWVudGF0
aW9uLT5wb3N0VHJhbnNsYXRlQ29tcGlsZShjb21waWxlciwgJm1JbmZvTG9nKTsKIH0KIApAQCAt
MzU2LDMyICszNjgsMzIgQEAKIAogaW50IFNoYWRlcjo6Z2V0U2hhZGVyVmVyc2lvbigpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1EYXRhLm1TaGFkZXJWZXJzaW9uOworICAgIHJldHVybiBtU3RhdGUu
bVNoYWRlclZlcnNpb247CiB9CiAKIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpWYXJ5aW5nPiAmU2hh
ZGVyOjpnZXRWYXJ5aW5ncygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1EYXRhLmdldFZhcnlpbmdz
KCk7CisgICAgcmV0dXJuIG1TdGF0ZS5nZXRWYXJ5aW5ncygpOwogfQogCiBjb25zdCBzdGQ6OnZl
Y3RvcjxzaDo6VW5pZm9ybT4gJlNoYWRlcjo6Z2V0VW5pZm9ybXMoKSBjb25zdAogewotICAgIHJl
dHVybiBtRGF0YS5nZXRVbmlmb3JtcygpOworICAgIHJldHVybiBtU3RhdGUuZ2V0VW5pZm9ybXMo
KTsKIH0KIAogY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OkludGVyZmFjZUJsb2NrPiAmU2hhZGVyOjpn
ZXRJbnRlcmZhY2VCbG9ja3MoKSBjb25zdAogewotICAgIHJldHVybiBtRGF0YS5nZXRJbnRlcmZh
Y2VCbG9ja3MoKTsKKyAgICByZXR1cm4gbVN0YXRlLmdldEludGVyZmFjZUJsb2NrcygpOwogfQog
CiBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6QXR0cmlidXRlPiAmU2hhZGVyOjpnZXRBY3RpdmVBdHRy
aWJ1dGVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbURhdGEuZ2V0QWN0aXZlQXR0cmlidXRlcygp
OworICAgIHJldHVybiBtU3RhdGUuZ2V0QWN0aXZlQXR0cmlidXRlcygpOwogfQogCiBjb25zdCBz
dGQ6OnZlY3RvcjxzaDo6T3V0cHV0VmFyaWFibGU+ICZTaGFkZXI6OmdldEFjdGl2ZU91dHB1dFZh
cmlhYmxlcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1EYXRhLmdldEFjdGl2ZU91dHB1dFZhcmlh
YmxlcygpOworICAgIHJldHVybiBtU3RhdGUuZ2V0QWN0aXZlT3V0cHV0VmFyaWFibGVzKCk7CiB9
CiAKIGludCBTaGFkZXI6OmdldFNlbWFudGljSW5kZXgoY29uc3Qgc3RkOjpzdHJpbmcgJmF0dHJp
YnV0ZU5hbWUpIGNvbnN0CkBAIC0zODgsNyArNDAwLDcgQEAKIHsKICAgICBpZiAoIWF0dHJpYnV0
ZU5hbWUuZW1wdHkoKSkKICAgICB7Ci0gICAgICAgIGNvbnN0IGF1dG8gJmFjdGl2ZUF0dHJpYnV0
ZXMgPSBtRGF0YS5nZXRBY3RpdmVBdHRyaWJ1dGVzKCk7CisgICAgICAgIGNvbnN0IGF1dG8gJmFj
dGl2ZUF0dHJpYnV0ZXMgPSBtU3RhdGUuZ2V0QWN0aXZlQXR0cmlidXRlcygpOwogCiAgICAgICAg
IGludCBzZW1hbnRpY0luZGV4ID0gMDsKICAgICAgICAgZm9yIChzaXplX3QgYXR0cmlidXRlSW5k
ZXggPSAwOyBhdHRyaWJ1dGVJbmRleCA8IGFjdGl2ZUF0dHJpYnV0ZXMuc2l6ZSgpOyBhdHRyaWJ1
dGVJbmRleCsrKQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1No
YWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9TaGFkZXIuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL1NoYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAK
IG5hbWVzcGFjZSByeAogewotY2xhc3MgSW1wbEZhY3Rvcnk7CitjbGFzcyBHTEltcGxGYWN0b3J5
OwogY2xhc3MgU2hhZGVySW1wbDsKIGNsYXNzIFNoYWRlclNoOwogfQpAQCAtMzMsNTggKzMzLDU3
IEBACiBuYW1lc3BhY2UgZ2wKIHsKIGNsYXNzIENvbXBpbGVyOworY2xhc3MgQ29udGV4dFN0YXRl
Owogc3RydWN0IExpbWl0YXRpb25zOwogY2xhc3MgUmVzb3VyY2VNYW5hZ2VyOwotc3RydWN0IERh
dGE7CiAKLWNsYXNzIFNoYWRlciBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZSwgcHVibGljIExh
YmVsZWRPYmplY3QKK2NsYXNzIFNoYWRlclN0YXRlIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxl
CiB7CiAgIHB1YmxpYzoKLSAgICBjbGFzcyBEYXRhIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxl
Ci0gICAgewotICAgICAgcHVibGljOgotICAgICAgICBEYXRhKEdMZW51bSBzaGFkZXJUeXBlKTsK
LSAgICAgICAgfkRhdGEoKTsKKyAgICBTaGFkZXJTdGF0ZShHTGVudW0gc2hhZGVyVHlwZSk7Cisg
ICAgflNoYWRlclN0YXRlKCk7CiAKLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmdldExhYmVs
KCkgY29uc3QgeyByZXR1cm4gbUxhYmVsOyB9CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmdldExh
YmVsKCkgY29uc3QgeyByZXR1cm4gbUxhYmVsOyB9CiAKLSAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJmdldFNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1Tb3VyY2U7IH0KLSAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcgJmdldFRyYW5zbGF0ZWRTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtVHJhbnNs
YXRlZFNvdXJjZTsgfQorICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZnZXRTb3VyY2UoKSBjb25zdCB7
IHJldHVybiBtU291cmNlOyB9CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmdldFRyYW5zbGF0ZWRT
b3VyY2UoKSBjb25zdCB7IHJldHVybiBtVHJhbnNsYXRlZFNvdXJjZTsgfQogCi0gICAgICAgIEdM
ZW51bSBnZXRTaGFkZXJUeXBlKCkgY29uc3QgeyByZXR1cm4gbVNoYWRlclR5cGU7IH0KLSAgICAg
ICAgaW50IGdldFNoYWRlclZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtU2hhZGVyVmVyc2lvbjsg
fQorICAgIEdMZW51bSBnZXRTaGFkZXJUeXBlKCkgY29uc3QgeyByZXR1cm4gbVNoYWRlclR5cGU7
IH0KKyAgICBpbnQgZ2V0U2hhZGVyVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1TaGFkZXJWZXJz
aW9uOyB9CiAKLSAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlZhcnlpbmc+ICZnZXRWYXJ5
aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1WYXJ5aW5nczsgfQotICAgICAgICBjb25zdCBzdGQ6OnZl
Y3RvcjxzaDo6VW5pZm9ybT4gJmdldFVuaWZvcm1zKCkgY29uc3QgeyByZXR1cm4gbVVuaWZvcm1z
OyB9Ci0gICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpJbnRlcmZhY2VCbG9jaz4gJmdldElu
dGVyZmFjZUJsb2NrcygpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtSW50
ZXJmYWNlQmxvY2tzOwotICAgICAgICB9Ci0gICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpB
dHRyaWJ1dGU+ICZnZXRBY3RpdmVBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbUFjdGl2ZUF0
dHJpYnV0ZXM7IH0KLSAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6Ok91dHB1dFZhcmlhYmxl
PiAmZ2V0QWN0aXZlT3V0cHV0VmFyaWFibGVzKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIG1BY3RpdmVPdXRwdXRWYXJpYWJsZXM7Ci0gICAgICAgIH0KKyAgICBjb25zdCBz
dGQ6OnZlY3RvcjxzaDo6VmFyeWluZz4gJmdldFZhcnlpbmdzKCkgY29uc3QgeyByZXR1cm4gbVZh
cnlpbmdzOyB9CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlVuaWZvcm0+ICZnZXRVbmlmb3Jt
cygpIGNvbnN0IHsgcmV0dXJuIG1Vbmlmb3JtczsgfQorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNo
OjpJbnRlcmZhY2VCbG9jaz4gJmdldEludGVyZmFjZUJsb2NrcygpIGNvbnN0IHsgcmV0dXJuIG1J
bnRlcmZhY2VCbG9ja3M7IH0KKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6QXR0cmlidXRlPiAm
Z2V0QWN0aXZlQXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1BY3RpdmVBdHRyaWJ1dGVzOyB9
CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6Ok91dHB1dFZhcmlhYmxlPiAmZ2V0QWN0aXZlT3V0
cHV0VmFyaWFibGVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtQWN0aXZlT3V0cHV0
VmFyaWFibGVzOworICAgIH0KIAotICAgICAgcHJpdmF0ZToKLSAgICAgICAgZnJpZW5kIGNsYXNz
IFNoYWRlcjsKKyAgcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU2hhZGVyOwogCi0gICAgICAg
IHN0ZDo6c3RyaW5nIG1MYWJlbDsKKyAgICBzdGQ6OnN0cmluZyBtTGFiZWw7CiAKLSAgICAgICAg
R0xlbnVtIG1TaGFkZXJUeXBlOwotICAgICAgICBpbnQgbVNoYWRlclZlcnNpb247Ci0gICAgICAg
IHN0ZDo6c3RyaW5nIG1UcmFuc2xhdGVkU291cmNlOwotICAgICAgICBzdGQ6OnN0cmluZyBtU291
cmNlOworICAgIEdMZW51bSBtU2hhZGVyVHlwZTsKKyAgICBpbnQgbVNoYWRlclZlcnNpb247Cisg
ICAgc3RkOjpzdHJpbmcgbVRyYW5zbGF0ZWRTb3VyY2U7CisgICAgc3RkOjpzdHJpbmcgbVNvdXJj
ZTsKIAotICAgICAgICBzdGQ6OnZlY3RvcjxzaDo6VmFyeWluZz4gbVZhcnlpbmdzOwotICAgICAg
ICBzdGQ6OnZlY3RvcjxzaDo6VW5pZm9ybT4gbVVuaWZvcm1zOwotICAgICAgICBzdGQ6OnZlY3Rv
cjxzaDo6SW50ZXJmYWNlQmxvY2s+IG1JbnRlcmZhY2VCbG9ja3M7Ci0gICAgICAgIHN0ZDo6dmVj
dG9yPHNoOjpBdHRyaWJ1dGU+IG1BY3RpdmVBdHRyaWJ1dGVzOwotICAgICAgICBzdGQ6OnZlY3Rv
cjxzaDo6T3V0cHV0VmFyaWFibGU+IG1BY3RpdmVPdXRwdXRWYXJpYWJsZXM7Ci0gICAgfTsKKyAg
ICBzaDo6V29ya0dyb3VwU2l6ZSBtTG9jYWxTaXplOwogCisgICAgc3RkOjp2ZWN0b3I8c2g6OlZh
cnlpbmc+IG1WYXJ5aW5nczsKKyAgICBzdGQ6OnZlY3RvcjxzaDo6VW5pZm9ybT4gbVVuaWZvcm1z
OworICAgIHN0ZDo6dmVjdG9yPHNoOjpJbnRlcmZhY2VCbG9jaz4gbUludGVyZmFjZUJsb2NrczsK
KyAgICBzdGQ6OnZlY3RvcjxzaDo6QXR0cmlidXRlPiBtQWN0aXZlQXR0cmlidXRlczsKKyAgICBz
dGQ6OnZlY3RvcjxzaDo6T3V0cHV0VmFyaWFibGU+IG1BY3RpdmVPdXRwdXRWYXJpYWJsZXM7Cit9
OworCitjbGFzcyBTaGFkZXIgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUsIHB1YmxpYyBMYWJl
bGVkT2JqZWN0Cit7CisgIHB1YmxpYzoKICAgICBTaGFkZXIoUmVzb3VyY2VNYW5hZ2VyICptYW5h
Z2VyLAotICAgICAgICAgICByeDo6SW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LAorICAgICAgICAg
ICByeDo6R0xJbXBsRmFjdG9yeSAqaW1wbEZhY3RvcnksCiAgICAgICAgICAgIGNvbnN0IGdsOjpM
aW1pdGF0aW9ucyAmcmVuZGVyZXJMaW1pdGF0aW9ucywKICAgICAgICAgICAgR0xlbnVtIHR5cGUs
CiAgICAgICAgICAgIEdMdWludCBoYW5kbGUpOwpAQCAtOTcsNyArOTYsNyBAQAogICAgIEdMZW51
bSBnZXRUeXBlKCkgY29uc3QgeyByZXR1cm4gbVR5cGU7IH0KICAgICBHTHVpbnQgZ2V0SGFuZGxl
KCkgY29uc3Q7CiAKLSAgICBjb25zdCByeDo6U2hhZGVySW1wbCAqZ2V0SW1wbGVtZW50YXRpb24o
KSBjb25zdCB7IHJldHVybiBtSW1wbGVtZW50YXRpb247IH0KKyAgICByeDo6U2hhZGVySW1wbCAq
Z2V0SW1wbGVtZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtSW1wbGVtZW50YXRpb247IH0KIAog
ICAgIHZvaWQgZGVsZXRlU291cmNlKCk7CiAgICAgdm9pZCBzZXRTb3VyY2UoR0xzaXplaSBjb3Vu
dCwgY29uc3QgY2hhciAqY29uc3QgKnN0cmluZywgY29uc3QgR0xpbnQgKmxlbmd0aCk7CkBAIC0x
MDcsNyArMTA2LDcgQEAKICAgICB2b2lkIGdldFNvdXJjZShHTHNpemVpIGJ1ZlNpemUsIEdMc2l6
ZWkgKmxlbmd0aCwgY2hhciAqYnVmZmVyKSBjb25zdDsKICAgICBpbnQgZ2V0VHJhbnNsYXRlZFNv
dXJjZUxlbmd0aCgpIGNvbnN0OwogICAgIGludCBnZXRUcmFuc2xhdGVkU291cmNlV2l0aERlYnVn
SW5mb0xlbmd0aCgpIGNvbnN0OwotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZnZXRUcmFuc2xhdGVk
U291cmNlKCkgY29uc3QgeyByZXR1cm4gbURhdGEuZ2V0VHJhbnNsYXRlZFNvdXJjZSgpOyB9Cisg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJmdldFRyYW5zbGF0ZWRTb3VyY2UoKSBjb25zdCB7IHJldHVy
biBtU3RhdGUuZ2V0VHJhbnNsYXRlZFNvdXJjZSgpOyB9CiAgICAgdm9pZCBnZXRUcmFuc2xhdGVk
U291cmNlKEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICpidWZmZXIpIGNv
bnN0OwogICAgIHZvaWQgZ2V0VHJhbnNsYXRlZFNvdXJjZVdpdGhEZWJ1Z0luZm8oR0xzaXplaSBi
dWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmJ1ZmZlcikgY29uc3Q7CiAKQEAgLTEzMCwx
MCArMTI5LDEyIEBACiAKICAgICBpbnQgZ2V0U2VtYW50aWNJbmRleChjb25zdCBzdGQ6OnN0cmlu
ZyAmYXR0cmlidXRlTmFtZSkgY29uc3Q7CiAKKyAgICBjb25zdCBzaDo6V29ya0dyb3VwU2l6ZSAm
Z2V0V29ya0dyb3VwU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1TdGF0ZS5tTG9jYWxTaXplOyB9CisK
ICAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBnZXRTb3VyY2VJbXBsKGNvbnN0IHN0ZDo6c3Ry
aW5nICZzb3VyY2UsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICpidWZm
ZXIpOwogCi0gICAgRGF0YSBtRGF0YTsKKyAgICBTaGFkZXJTdGF0ZSBtU3RhdGU7CiAgICAgcng6
OlNoYWRlckltcGwgKm1JbXBsZW1lbnRhdGlvbjsKICAgICBjb25zdCBnbDo6TGltaXRhdGlvbnMg
Jm1SZW5kZXJlckxpbWl0YXRpb25zOwogICAgIGNvbnN0IEdMdWludCBtSGFuZGxlOwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1N0YXRlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU3RhdGUuY3BwCShyZXZp
c2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU3Rh
dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04LDcgKzgsMTIgQEAKIAogI2luY2x1ZGUgImxpYkFO
R0xFL1N0YXRlLmgiCiAKKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisK
ICNpbmNsdWRlICJjb21tb24vQml0U2V0SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJjb21tb24vbWF0
cml4X3V0aWxzLmgiCisjaW5jbHVkZSAiY29tbW9uL21hdGh1dGlsLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvQ29udGV4dC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0NhcHMuaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9EZWJ1Zy5oIgpAQCAtMTgsNiArMjMsMTYgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9W
ZXJ0ZXhBcnJheS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL2Zvcm1hdHV0aWxzLmgiCiAKK25hbWVz
cGFjZQoreworCitHTGVudW0gQWN0aXZlUXVlcnlUeXBlKGNvbnN0IEdMZW51bSB0eXBlKQorewor
ICAgIHJldHVybiAodHlwZSA9PSBHTF9BTllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFKSA/
IEdMX0FOWV9TQU1QTEVTX1BBU1NFRCA6IHR5cGU7Cit9CisKK30gIC8vIGFub255bW91cyBuYW1l
cGFjZQorCiBuYW1lc3BhY2UgZ2wKIHsKIApAQCAtMzUsNiArNTAsNyBAQAogICAgICAgbUxpbmVX
aWR0aCgwKSwKICAgICAgIG1HZW5lcmF0ZU1pcG1hcEhpbnQoR0xfTk9ORSksCiAgICAgICBtRnJh
Z21lbnRTaGFkZXJEZXJpdmF0aXZlSGludChHTF9OT05FKSwKKyAgICAgIG1CaW5kR2VuZXJhdGVz
UmVzb3VyY2UodHJ1ZSksCiAgICAgICBtTmVhclooMCksCiAgICAgICBtRmFyWigwKSwKICAgICAg
IG1SZWFkRnJhbWVidWZmZXIobnVsbHB0ciksCkBAIC00Miw3ICs1OCw5IEBACiAgICAgICBtUHJv
Z3JhbShudWxscHRyKSwKICAgICAgIG1WZXJ0ZXhBcnJheShudWxscHRyKSwKICAgICAgIG1BY3Rp
dmVTYW1wbGVyKDApLAotICAgICAgbVByaW1pdGl2ZVJlc3RhcnQoZmFsc2UpCisgICAgICBtUHJp
bWl0aXZlUmVzdGFydChmYWxzZSksCisgICAgICBtTXVsdGlTYW1wbGluZyhmYWxzZSksCisgICAg
ICBtU2FtcGxlQWxwaGFUb09uZShmYWxzZSkKIHsKIH0KIApAQCAtNTQsNyArNzIsOCBAQAogdm9p
ZCBTdGF0ZTo6aW5pdGlhbGl6ZShjb25zdCBDYXBzICZjYXBzLAogICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBFeHRlbnNpb25zICZleHRlbnNpb25zLAogICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgY2xpZW50VmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWJ1
ZykKKyAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWJ1ZywKKyAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBiaW5kR2VuZXJhdGVzUmVzb3VyY2UpCiB7CiAgICAgbU1heERyYXdCdWZmZXJz
ID0gY2Fwcy5tYXhEcmF3QnVmZmVyczsKICAgICBtTWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0
cyA9IGNhcHMubWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0czsKQEAgLTEyMCw2ICsxMzksOCBA
QAogICAgIG1HZW5lcmF0ZU1pcG1hcEhpbnQgPSBHTF9ET05UX0NBUkU7CiAgICAgbUZyYWdtZW50
U2hhZGVyRGVyaXZhdGl2ZUhpbnQgPSBHTF9ET05UX0NBUkU7CiAKKyAgICBtQmluZEdlbmVyYXRl
c1Jlc291cmNlID0gYmluZEdlbmVyYXRlc1Jlc291cmNlOworCiAgICAgbUxpbmVXaWR0aCA9IDEu
MGY7CiAKICAgICBtVmlld3BvcnQueCA9IDA7CkBAIC0xNDgsNiArMTY5LDEwIEBACiAgICAgICAg
IG1TYW1wbGVyVGV4dHVyZXNbR0xfVEVYVFVSRV8yRF9BUlJBWV0ucmVzaXplKGNhcHMubWF4Q29t
YmluZWRUZXh0dXJlSW1hZ2VVbml0cyk7CiAgICAgICAgIG1TYW1wbGVyVGV4dHVyZXNbR0xfVEVY
VFVSRV8zRF0ucmVzaXplKGNhcHMubWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyk7CiAgICAg
fQorICAgIGlmIChleHRlbnNpb25zLmVnbEltYWdlRXh0ZXJuYWwgfHwgZXh0ZW5zaW9ucy5lZ2xT
dHJlYW1Db25zdW1lckV4dGVybmFsKQorICAgIHsKKyAgICAgICAgbVNhbXBsZXJUZXh0dXJlc1tH
TF9URVhUVVJFX0VYVEVSTkFMX09FU10ucmVzaXplKGNhcHMubWF4Q29tYmluZWRUZXh0dXJlSW1h
Z2VVbml0cyk7CisgICAgfQogCiAgICAgbVNhbXBsZXJzLnJlc2l6ZShjYXBzLm1heENvbWJpbmVk
VGV4dHVyZUltYWdlVW5pdHMpOwogCkBAIC0xNTUsNiArMTgwLDcgQEAKICAgICBtQWN0aXZlUXVl
cmllc1tHTF9BTllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFXS5zZXQobnVsbHB0cik7CiAg
ICAgbUFjdGl2ZVF1ZXJpZXNbR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRF
Tl0uc2V0KG51bGxwdHIpOwogICAgIG1BY3RpdmVRdWVyaWVzW0dMX1RJTUVfRUxBUFNFRF9FWFRd
LnNldChudWxscHRyKTsKKyAgICBtQWN0aXZlUXVlcmllc1tHTF9DT01NQU5EU19DT01QTEVURURf
Q0hST01JVU1dLnNldChudWxscHRyKTsKIAogICAgIG1Qcm9ncmFtID0gbnVsbHB0cjsKIApAQCAt
MTY1LDYgKzE5MSwyMCBAQAogCiAgICAgbURlYnVnLnNldE91dHB1dEVuYWJsZWQoZGVidWcpOwog
ICAgIG1EZWJ1Zy5zZXRNYXhMb2dnZWRNZXNzYWdlcyhleHRlbnNpb25zLm1heERlYnVnTG9nZ2Vk
TWVzc2FnZXMpOworCisgICAgaWYgKGV4dGVuc2lvbnMuZnJhbWVidWZmZXJNdWx0aXNhbXBsZSkK
KyAgICB7CisgICAgICAgIG1NdWx0aVNhbXBsaW5nID0gdHJ1ZTsKKyAgICAgICAgbVNhbXBsZUFs
cGhhVG9PbmUgPSBmYWxzZTsKKyAgICB9CisKKyAgICBtQ292ZXJhZ2VNb2R1bGF0aW9uID0gR0xf
Tk9ORTsKKworICAgIGFuZ2xlOjpNYXRyaXg8R0xmbG9hdD46OnNldFRvSWRlbnRpdHkobVBhdGhN
YXRyaXhQcm9qKTsKKyAgICBhbmdsZTo6TWF0cml4PEdMZmxvYXQ+OjpzZXRUb0lkZW50aXR5KG1Q
YXRoTWF0cml4TVYpOworICAgIG1QYXRoU3RlbmNpbEZ1bmMgPSBHTF9BTFdBWVM7CisgICAgbVBh
dGhTdGVuY2lsUmVmICA9IDA7CisgICAgbVBhdGhTdGVuY2lsTWFzayA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8R0x1aW50Pjo6bWF4KCk7CiB9CiAKIHZvaWQgU3RhdGU6OnJlc2V0KCkKQEAgLTIxMiw2
ICsyNTIsMTIgQEAKIAogICAgIG1Qcm9ncmFtID0gTlVMTDsKIAorICAgIGFuZ2xlOjpNYXRyaXg8
R0xmbG9hdD46OnNldFRvSWRlbnRpdHkobVBhdGhNYXRyaXhQcm9qKTsKKyAgICBhbmdsZTo6TWF0
cml4PEdMZmxvYXQ+OjpzZXRUb0lkZW50aXR5KG1QYXRoTWF0cml4TVYpOworICAgIG1QYXRoU3Rl
bmNpbEZ1bmMgPSBHTF9BTFdBWVM7CisgICAgbVBhdGhTdGVuY2lsUmVmICA9IDA7CisgICAgbVBh
dGhTdGVuY2lsTWFzayA9IHN0ZDo6bnVtZXJpY19saW1pdHM8R0x1aW50Pjo6bWF4KCk7CisKICAg
ICAvLyBUT0RPKGptYWRpbGwpOiBJcyB0aGlzIG5lY2Vzc2FyeT8KICAgICBzZXRBbGxEaXJ0eUJp
dHMoKTsKIH0KQEAgLTQ5OSw2ICs1NDUsMjggQEAKICAgICByZXR1cm4gbVNhbXBsZUNvdmVyYWdl
SW52ZXJ0OwogfQogCit2b2lkIFN0YXRlOjpzZXRTYW1wbGVBbHBoYVRvT25lKGJvb2wgZW5hYmxl
ZCkKK3sKKyAgICBtU2FtcGxlQWxwaGFUb09uZSA9IGVuYWJsZWQ7CisgICAgbURpcnR5Qml0cy5z
ZXQoRElSVFlfQklUX1NBTVBMRV9BTFBIQV9UT19PTkUpOworfQorCitib29sIFN0YXRlOjppc1Nh
bXBsZUFscGhhVG9PbmVFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVNhbXBsZUFscGhh
VG9PbmU7Cit9CisKK3ZvaWQgU3RhdGU6OnNldE11bHRpc2FtcGxpbmcoYm9vbCBlbmFibGVkKQor
eworICAgIG1NdWx0aVNhbXBsaW5nID0gZW5hYmxlZDsKKyAgICBtRGlydHlCaXRzLnNldChESVJU
WV9CSVRfTVVMVElTQU1QTElORyk7Cit9CisKK2Jvb2wgU3RhdGU6OmlzTXVsdGlzYW1wbGluZ0Vu
YWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBtTXVsdGlTYW1wbGluZzsKK30KKwogYm9vbCBT
dGF0ZTo6aXNTY2lzc29yVGVzdEVuYWJsZWQoKSBjb25zdAogewogICAgIHJldHVybiBtU2Npc3Nv
clRlc3Q7CkBAIC01NTAsNiArNjE4LDggQEAKIHsKICAgICBzd2l0Y2ggKGZlYXR1cmUpCiAgICAg
eworICAgICAgY2FzZSBHTF9NVUxUSVNBTVBMRV9FWFQ6ICAgICAgICAgICAgICAgc2V0TXVsdGlz
YW1wbGluZyhlbmFibGVkKTsgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfU0FNUExFX0FM
UEhBX1RPX09ORV9FWFQ6ICAgICAgIHNldFNhbXBsZUFscGhhVG9PbmUoZW5hYmxlZCk7ICAgICAg
YnJlYWs7CiAgICAgICBjYXNlIEdMX0NVTExfRkFDRTogICAgICAgICAgICAgICAgICAgICBzZXRD
dWxsRmFjZShlbmFibGVkKTsgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBHTF9QT0xZ
R09OX09GRlNFVF9GSUxMOiAgICAgICAgICAgc2V0UG9seWdvbk9mZnNldEZpbGwoZW5hYmxlZCk7
ICAgICBicmVhazsKICAgICAgIGNhc2UgR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFOiAgICAg
IHNldFNhbXBsZUFscGhhVG9Db3ZlcmFnZShlbmFibGVkKTsgYnJlYWs7CkBAIC01NzEsMTAgKzY0
MSwxMiBAQAogICAgIH0KIH0KIAotYm9vbCBTdGF0ZTo6Z2V0RW5hYmxlRmVhdHVyZShHTGVudW0g
ZmVhdHVyZSkKK2Jvb2wgU3RhdGU6OmdldEVuYWJsZUZlYXR1cmUoR0xlbnVtIGZlYXR1cmUpIGNv
bnN0CiB7CiAgICAgc3dpdGNoIChmZWF0dXJlKQogICAgIHsKKyAgICAgIGNhc2UgR0xfTVVMVElT
QU1QTEVfRVhUOiAgICAgICAgICAgICAgIHJldHVybiBpc011bHRpc2FtcGxpbmdFbmFibGVkKCk7
CisgICAgICBjYXNlIEdMX1NBTVBMRV9BTFBIQV9UT19PTkVfRVhUOiAgICAgICByZXR1cm4gaXNT
YW1wbGVBbHBoYVRvT25lRW5hYmxlZCgpOwogICAgICAgY2FzZSBHTF9DVUxMX0ZBQ0U6ICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGlzQ3VsbEZhY2VFbmFibGVkKCk7CiAgICAgICBjYXNlIEdM
X1BPTFlHT05fT0ZGU0VUX0ZJTEw6ICAgICAgICAgICByZXR1cm4gaXNQb2x5Z29uT2Zmc2V0Rmls
bEVuYWJsZWQoKTsKICAgICAgIGNhc2UgR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFOiAgICAg
IHJldHVybiBpc1NhbXBsZUFscGhhVG9Db3ZlcmFnZUVuYWJsZWQoKTsKQEAgLTU5MCw2ICs2NjIs
OCBAQAogICAgICAgICAgIHJldHVybiBtRGVidWcuaXNPdXRwdXRTeW5jaHJvbm91cygpOwogICAg
ICAgY2FzZSBHTF9ERUJVR19PVVRQVVQ6CiAgICAgICAgICAgcmV0dXJuIG1EZWJ1Zy5pc091dHB1
dEVuYWJsZWQoKTsKKyAgICAgIGNhc2UgR0xfQklORF9HRU5FUkFURVNfUkVTT1VSQ0VfQ0hST01J
VU06CisgICAgICAgICAgcmV0dXJuIGlzQmluZEdlbmVyYXRlc1Jlc291cmNlRW5hYmxlZCgpOwog
ICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUo
KTsgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0KQEAgLTYyMCw2ICs2OTQsMTEgQEAKICAgICAvLyBJ
Z25vcmUgZm9yIG5vdy4gSXQgaXMgdmFsaWQgZm9yIGltcGxlbWVudGF0aW9ucyB0byBpZ25vcmUg
aGludC4KIH0KIAorYm9vbCBTdGF0ZTo6aXNCaW5kR2VuZXJhdGVzUmVzb3VyY2VFbmFibGVkKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbUJpbmRHZW5lcmF0ZXNSZXNvdXJjZTsKK30KKwogdm9pZCBT
dGF0ZTo6c2V0Vmlld3BvcnRQYXJhbXMoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQpCiB7CiAgICAgbVZpZXdwb3J0LnggPSB4OwpAQCAtNjgxLDEwICs3NjAs
MTAgQEAKICAgICAvLyBJZiBhIHRleHR1cmUgb2JqZWN0IGlzIGRlbGV0ZWQsIGl0IGlzIGFzIGlm
IGFsbCB0ZXh0dXJlIHVuaXRzIHdoaWNoIGFyZSBib3VuZCB0byB0aGF0IHRleHR1cmUgb2JqZWN0
IGFyZQogICAgIC8vIHJlYm91bmQgdG8gdGV4dHVyZSBvYmplY3QgemVybwogCi0gICAgZm9yIChU
ZXh0dXJlQmluZGluZ01hcDo6aXRlcmF0b3IgYmluZGluZ1ZlYyA9IG1TYW1wbGVyVGV4dHVyZXMu
YmVnaW4oKTsgYmluZGluZ1ZlYyAhPSBtU2FtcGxlclRleHR1cmVzLmVuZCgpOyBiaW5kaW5nVmVj
KyspCisgICAgZm9yIChhdXRvICZiaW5kaW5nVmVjIDogbVNhbXBsZXJUZXh0dXJlcykKICAgICB7
Ci0gICAgICAgIEdMZW51bSB0ZXh0dXJlVHlwZSA9IGJpbmRpbmdWZWMtPmZpcnN0OwotICAgICAg
ICBUZXh0dXJlQmluZGluZ1ZlY3RvciAmdGV4dHVyZVZlY3RvciA9IGJpbmRpbmdWZWMtPnNlY29u
ZDsKKyAgICAgICAgR0xlbnVtIHRleHR1cmVUeXBlID0gYmluZGluZ1ZlYy5maXJzdDsKKyAgICAg
ICAgVGV4dHVyZUJpbmRpbmdWZWN0b3IgJnRleHR1cmVWZWN0b3IgPSBiaW5kaW5nVmVjLnNlY29u
ZDsKICAgICAgICAgZm9yIChzaXplX3QgdGV4dHVyZUlkeCA9IDA7IHRleHR1cmVJZHggPCB0ZXh0
dXJlVmVjdG9yLnNpemUoKTsgdGV4dHVyZUlkeCsrKQogICAgICAgICB7CiAgICAgICAgICAgICBC
aW5kaW5nUG9pbnRlcjxUZXh0dXJlPiAmYmluZGluZyA9IHRleHR1cmVWZWN0b3JbdGV4dHVyZUlk
eF07CkBAIC03NjksNyArODQ4LDcgQEAKICAgICByZXR1cm4gbVJlbmRlcmJ1ZmZlci5pZCgpOwog
fQogCi1SZW5kZXJidWZmZXIgKlN0YXRlOjpnZXRDdXJyZW50UmVuZGVyYnVmZmVyKCkKK1JlbmRl
cmJ1ZmZlciAqU3RhdGU6OmdldEN1cnJlbnRSZW5kZXJidWZmZXIoKSBjb25zdAogewogICAgIHJl
dHVybiBtUmVuZGVyYnVmZmVyLmdldCgpOwogfQpAQCAtODQ4LDI2ICs5MjcsMTYgQEAKICAgICB9
CiB9CiAKLUZyYW1lYnVmZmVyICpTdGF0ZTo6Z2V0UmVhZEZyYW1lYnVmZmVyKCkKK0ZyYW1lYnVm
ZmVyICpTdGF0ZTo6Z2V0UmVhZEZyYW1lYnVmZmVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbVJl
YWRGcmFtZWJ1ZmZlcjsKIH0KIAotRnJhbWVidWZmZXIgKlN0YXRlOjpnZXREcmF3RnJhbWVidWZm
ZXIoKQorRnJhbWVidWZmZXIgKlN0YXRlOjpnZXREcmF3RnJhbWVidWZmZXIoKSBjb25zdAogewog
ICAgIHJldHVybiBtRHJhd0ZyYW1lYnVmZmVyOwogfQogCi1jb25zdCBGcmFtZWJ1ZmZlciAqU3Rh
dGU6OmdldFJlYWRGcmFtZWJ1ZmZlcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1SZWFkRnJhbWVi
dWZmZXI7Ci19Ci0KLWNvbnN0IEZyYW1lYnVmZmVyICpTdGF0ZTo6Z2V0RHJhd0ZyYW1lYnVmZmVy
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbURyYXdGcmFtZWJ1ZmZlcjsKLX0KLQogYm9vbCBTdGF0
ZTo6cmVtb3ZlUmVhZEZyYW1lYnVmZmVyQmluZGluZyhHTHVpbnQgZnJhbWVidWZmZXIpCiB7CiAg
ICAgaWYgKG1SZWFkRnJhbWVidWZmZXIgIT0gbnVsbHB0ciAmJgpAQCAtOTY3LDE5ICsxMDM2LDIz
IEBACiAgICAgcmV0dXJuIGN1clRyYW5zZm9ybUZlZWRiYWNrICYmIGN1clRyYW5zZm9ybUZlZWRi
YWNrLT5pc0FjdGl2ZSgpICYmICFjdXJUcmFuc2Zvcm1GZWVkYmFjay0+aXNQYXVzZWQoKTsKIH0K
IAotdm9pZCBTdGF0ZTo6ZGV0YWNoVHJhbnNmb3JtRmVlZGJhY2soR0x1aW50IHRyYW5zZm9ybUZl
ZWRiYWNrKQorYm9vbCBTdGF0ZTo6cmVtb3ZlVHJhbnNmb3JtRmVlZGJhY2tCaW5kaW5nKEdMdWlu
dCB0cmFuc2Zvcm1GZWVkYmFjaykKIHsKICAgICBpZiAobVRyYW5zZm9ybUZlZWRiYWNrLmlkKCkg
PT0gdHJhbnNmb3JtRmVlZGJhY2spCiAgICAgewotICAgICAgICBtVHJhbnNmb3JtRmVlZGJhY2su
c2V0KE5VTEwpOworICAgICAgICBtVHJhbnNmb3JtRmVlZGJhY2suc2V0KG51bGxwdHIpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wg
U3RhdGU6OmlzUXVlcnlBY3RpdmUoKSBjb25zdAorYm9vbCBTdGF0ZTo6aXNRdWVyeUFjdGl2ZShj
b25zdCBHTGVudW0gdHlwZSkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8gJml0ZXIgOiBtQWN0aXZl
UXVlcmllcykKICAgICB7Ci0gICAgICAgIGlmIChpdGVyLnNlY29uZC5nZXQoKSAhPSBOVUxMKQor
ICAgICAgICBjb25zdCBRdWVyeSAqcXVlcnkgPSBpdGVyLnNlY29uZC5nZXQoKTsKKyAgICAgICAg
aWYgKHF1ZXJ5ICE9IG51bGxwdHIgJiYgQWN0aXZlUXVlcnlUeXBlKHF1ZXJ5LT5nZXRUeXBlKCkp
ID09IEFjdGl2ZVF1ZXJ5VHlwZSh0eXBlKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KQEAgLTEwNjEsMTEgKzExMzQsMTMgQEAKIHZvaWQgU3RhdGU6OnNl
dFBpeGVsUGFja0J1ZmZlckJpbmRpbmcoQnVmZmVyICpidWZmZXIpCiB7CiAgICAgbVBhY2sucGl4
ZWxCdWZmZXIuc2V0KGJ1ZmZlcik7CisgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX1BBQ0tf
QlVGRkVSX0JJTkRJTkcpOwogfQogCiB2b2lkIFN0YXRlOjpzZXRQaXhlbFVucGFja0J1ZmZlckJp
bmRpbmcoQnVmZmVyICpidWZmZXIpCiB7CiAgICAgbVVucGFjay5waXhlbEJ1ZmZlci5zZXQoYnVm
ZmVyKTsKKyAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfVU5QQUNLX0JVRkZFUl9CSU5ESU5H
KTsKIH0KIAogQnVmZmVyICpTdGF0ZTo6Z2V0VGFyZ2V0QnVmZmVyKEdMZW51bSB0YXJnZXQpIGNv
bnN0CkBAIC0xMzE0LDYgKzEzODksNzMgQEAKICAgICByZXR1cm4gbURlYnVnOwogfQogCit2b2lk
IFN0YXRlOjpzZXRDb3ZlcmFnZU1vZHVsYXRpb24oR0xlbnVtIGNvbXBvbmVudHMpCit7CisgICAg
bUNvdmVyYWdlTW9kdWxhdGlvbiA9IGNvbXBvbmVudHM7CisgICAgbURpcnR5Qml0cy5zZXQoRElS
VFlfQklUX0NPVkVSQUdFX01PRFVMQVRJT04pOworfQorCitHTGVudW0gU3RhdGU6OmdldENvdmVy
YWdlTW9kdWxhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1Db3ZlcmFnZU1vZHVsYXRpb247
Cit9CisKK3ZvaWQgU3RhdGU6OmxvYWRQYXRoUmVuZGVyaW5nTWF0cml4KEdMZW51bSBtYXRyaXhN
b2RlLCBjb25zdCBHTGZsb2F0ICptYXRyaXgpCit7CisgICAgaWYgKG1hdHJpeE1vZGUgPT0gR0xf
UEFUSF9NT0RFTFZJRVdfQ0hST01JVU0pCisgICAgeworICAgICAgICBtZW1jcHkobVBhdGhNYXRy
aXhNViwgbWF0cml4LCAxNiAqIHNpemVvZihHTGZsb2F0KSk7CisgICAgICAgIG1EaXJ0eUJpdHMu
c2V0KERJUlRZX0JJVF9QQVRIX1JFTkRFUklOR19NQVRSSVhfTVYpOworICAgIH0KKyAgICBlbHNl
IGlmIChtYXRyaXhNb2RlID09IEdMX1BBVEhfUFJPSkVDVElPTl9DSFJPTUlVTSkKKyAgICB7Cisg
ICAgICAgIG1lbWNweShtUGF0aE1hdHJpeFByb2osIG1hdHJpeCwgMTYgKiBzaXplb2YoR0xmbG9h
dCkpOworICAgICAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfUEFUSF9SRU5ERVJJTkdfTUFU
UklYX1BST0opOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBVTlJFQUNIQUJMRSgp
OworICAgIH0KK30KKworY29uc3QgR0xmbG9hdCAqU3RhdGU6OmdldFBhdGhSZW5kZXJpbmdNYXRy
aXgoR0xlbnVtIHdoaWNoKSBjb25zdAoreworICAgIGlmICh3aGljaCA9PSBHTF9QQVRIX01PREVM
VklFV19NQVRSSVhfQ0hST01JVU0pCisgICAgeworICAgICAgICByZXR1cm4gbVBhdGhNYXRyaXhN
VjsKKyAgICB9CisgICAgZWxzZSBpZiAod2hpY2ggPT0gR0xfUEFUSF9QUk9KRUNUSU9OX01BVFJJ
WF9DSFJPTUlVTSkKKyAgICB7CisgICAgICAgIHJldHVybiBtUGF0aE1hdHJpeFByb2o7CisgICAg
fQorCisgICAgVU5SRUFDSEFCTEUoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBT
dGF0ZTo6c2V0UGF0aFN0ZW5jaWxGdW5jKEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBt
YXNrKQoreworICAgIG1QYXRoU3RlbmNpbEZ1bmMgPSBmdW5jOworICAgIG1QYXRoU3RlbmNpbFJl
ZiAgPSByZWY7CisgICAgbVBhdGhTdGVuY2lsTWFzayA9IG1hc2s7CisgICAgbURpcnR5Qml0cy5z
ZXQoRElSVFlfQklUX1BBVEhfUkVOREVSSU5HX1NURU5DSUxfU1RBVEUpOworfQorCitHTGVudW0g
U3RhdGU6OmdldFBhdGhTdGVuY2lsRnVuYygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1QYXRoU3Rl
bmNpbEZ1bmM7Cit9CisKK0dMaW50IFN0YXRlOjpnZXRQYXRoU3RlbmNpbFJlZigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1QYXRoU3RlbmNpbFJlZjsKK30KKworR0x1aW50IFN0YXRlOjpnZXRQYXRo
U3RlbmNpbE1hc2soKSBjb25zdAoreworICAgIHJldHVybiBtUGF0aFN0ZW5jaWxNYXNrOworfQor
CiB2b2lkIFN0YXRlOjpnZXRCb29sZWFudihHTGVudW0gcG5hbWUsIEdMYm9vbGVhbiAqcGFyYW1z
KQogewogICAgIHN3aXRjaCAocG5hbWUpCkBAIC0xMzQ5LDYgKzE0OTEsMTUgQEAKICAgICAgIGNh
c2UgR0xfREVCVUdfT1VUUFVUOgogICAgICAgICAgICpwYXJhbXMgPSBtRGVidWcuaXNPdXRwdXRF
bmFibGVkKCkgPyBHTF9UUlVFIDogR0xfRkFMU0U7CiAgICAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIEdMX01VTFRJU0FNUExFX0VYVDoKKyAgICAgICAgICAqcGFyYW1zID0gbU11bHRpU2FtcGxp
bmc7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1NBTVBMRV9BTFBIQV9UT19PTkVf
RVhUOgorICAgICAgICAgICpwYXJhbXMgPSBtU2FtcGxlQWxwaGFUb09uZTsKKyAgICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgR0xfQklORF9HRU5FUkFURVNfUkVTT1VSQ0VfQ0hST01JVU06Cisg
ICAgICAgICAgKnBhcmFtcyA9IGlzQmluZEdlbmVyYXRlc1Jlc291cmNlRW5hYmxlZCgpID8gR0xf
VFJVRSA6IEdMX0ZBTFNFOworICAgICAgICAgIGJyZWFrOwogICAgICAgZGVmYXVsdDoKICAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgYnJlYWs7CkBAIC0xMzg0LDYgKzE1MzUsMTQgQEAK
ICAgICAgICAgcGFyYW1zWzJdID0gbUJsZW5kQ29sb3IuYmx1ZTsKICAgICAgICAgcGFyYW1zWzNd
ID0gbUJsZW5kQ29sb3IuYWxwaGE7CiAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9NVUxU
SVNBTVBMRV9FWFQ6CisgICAgICAgICpwYXJhbXMgPSBzdGF0aWNfY2FzdDxHTGZsb2F0PihtTXVs
dGlTYW1wbGluZyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TQU1QTEVfQUxQSEFf
VE9fT05FX0VYVDoKKyAgICAgICAgKnBhcmFtcyA9IHN0YXRpY19jYXN0PEdMZmxvYXQ+KG1TYW1w
bGVBbHBoYVRvT25lKTsKKyAgICAgIGNhc2UgR0xfQ09WRVJBR0VfTU9EVUxBVElPTl9DSFJPTUlV
TToKKyAgICAgICAgICBwYXJhbXNbMF0gPSBzdGF0aWNfY2FzdDxHTGZsb2F0PihtQ292ZXJhZ2VN
b2R1bGF0aW9uKTsKKyAgICAgICAgICBicmVhazsKICAgICAgIGRlZmF1bHQ6CiAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTM5MCw3ICsxNTQ5LDcgQEAKICAgICB9
CiB9CiAKLXZvaWQgU3RhdGU6OmdldEludGVnZXJ2KGNvbnN0IGdsOjpEYXRhICZkYXRhLCBHTGVu
dW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCit2b2lkIFN0YXRlOjpnZXRJbnRlZ2Vydihjb25zdCBD
b250ZXh0U3RhdGUgJmRhdGEsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKIHsKICAgICBp
ZiAocG5hbWUgPj0gR0xfRFJBV19CVUZGRVIwX0VYVCAmJiBwbmFtZSA8PSBHTF9EUkFXX0JVRkZF
UjE1X0VYVCkKICAgICB7CkBAIC0xNTg1LDYgKzE3NDQsMTEgQEAKICAgICAgICAgKnBhcmFtcyA9
CiAgICAgICAgICAgICBnZXRTYW1wbGVyVGV4dHVyZUlkKHN0YXRpY19jYXN0PHVuc2lnbmVkIGlu
dD4obUFjdGl2ZVNhbXBsZXIpLCBHTF9URVhUVVJFXzJEX0FSUkFZKTsKICAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIEdMX1RFWFRVUkVfQklORElOR19FWFRFUk5BTF9PRVM6CisgICAgICAgICAg
QVNTRVJUKG1BY3RpdmVTYW1wbGVyIDwgbU1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpOwor
ICAgICAgICAgICpwYXJhbXMgPSBnZXRTYW1wbGVyVGV4dHVyZUlkKHN0YXRpY19jYXN0PHVuc2ln
bmVkIGludD4obUFjdGl2ZVNhbXBsZXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTKTsKKyAgICAgICAgICBicmVhazsKICAg
ICAgIGNhc2UgR0xfVU5JRk9STV9CVUZGRVJfQklORElORzoKICAgICAgICAgKnBhcmFtcyA9IG1H
ZW5lcmljVW5pZm9ybUJ1ZmZlci5pZCgpOwogICAgICAgICBicmVhazsKQEAgLTE2MjIsNiArMTc4
NiwxNCBAQAogICAgICAgY2FzZSBHTF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSDoKICAgICAgICAg
ICAqcGFyYW1zID0gc3RhdGljX2Nhc3Q8R0xpbnQ+KG1EZWJ1Zy5nZXRHcm91cFN0YWNrRGVwdGgo
KSk7CiAgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX01VTFRJU0FNUExFX0VYVDoKKyAg
ICAgICAgICAqcGFyYW1zID0gc3RhdGljX2Nhc3Q8R0xpbnQ+KG1NdWx0aVNhbXBsaW5nKTsKKyAg
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfU0FNUExFX0FMUEhBX1RPX09ORV9FWFQ6Cisg
ICAgICAgICAgKnBhcmFtcyA9IHN0YXRpY19jYXN0PEdMaW50PihtU2FtcGxlQWxwaGFUb09uZSk7
CisgICAgICBjYXNlIEdMX0NPVkVSQUdFX01PRFVMQVRJT05fQ0hST01JVU06CisgICAgICAgICAg
KnBhcmFtcyA9IHN0YXRpY19jYXN0PEdMaW50PihtQ292ZXJhZ2VNb2R1bGF0aW9uKTsKKyAgICAg
ICAgICBicmVhazsKICAgICAgIGRlZmF1bHQ6CiAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtMTY0NCw3ICsxODE2LDcgQEAKICAgICB9CiB9CiAKLWJvb2wgU3RhdGU6
OmdldEluZGV4ZWRJbnRlZ2VydihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMaW50ICpk
YXRhKQordm9pZCBTdGF0ZTo6Z2V0SW50ZWdlcmlfdihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5k
ZXgsIEdMaW50ICpkYXRhKQogewogICAgIHN3aXRjaCAodGFyZ2V0KQogICAgIHsKQEAgLTE2NjEs
MTMgKzE4MzMsMTIgQEAKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAg
ICAgIGJyZWFrOwogICAgIH0KLQotICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFN0YXRlOjpn
ZXRJbmRleGVkSW50ZWdlcjY0dihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMaW50NjQg
KmRhdGEpCit2b2lkIFN0YXRlOjpnZXRJbnRlZ2VyNjRpX3YoR0xlbnVtIHRhcmdldCwgR0x1aW50
IGluZGV4LCBHTGludDY0ICpkYXRhKQogewogICAgIHN3aXRjaCAodGFyZ2V0KQogICAgIHsKQEAg
LTE2OTYsMTAgKzE4NjcsMTQgQEAKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgICAgICAgIGJyZWFrOwogICAgIH0KK30KIAotICAgIHJldHVybiB0cnVlOwordm9pZCBTdGF0
ZTo6Z2V0Qm9vbGVhbmlfdihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMYm9vbGVhbiAq
ZGF0YSkKK3sKKyAgICBVTlJFQUNIQUJMRSgpOwogfQogCiBib29sIFN0YXRlOjpoYXNNYXBwZWRC
dWZmZXIoR0xlbnVtIHRhcmdldCkgY29uc3QKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9TdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9TdGF0ZS5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTMs
NiArMTMsNyBAQAogI2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0
aWxzLmgiCisjaW5jbHVkZSAiY29tbW9uL0NvbG9yLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRGVi
dWcuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Qcm9ncmFtLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
UmVmQ291bnRPYmplY3QuaCIKQEAgLTI5LDcgKzMwLDYgQEAKIGNsYXNzIFZlcnRleEFycmF5Owog
Y2xhc3MgQ29udGV4dDsKIHN0cnVjdCBDYXBzOwotc3RydWN0IERhdGE7CiAKIHR5cGVkZWYgc3Rk
OjptYXA8R0xlbnVtLCBCaW5kaW5nUG9pbnRlcjxUZXh0dXJlPj4gVGV4dHVyZU1hcDsKIApAQCAt
NDIsNyArNDIsOCBAQAogICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBDYXBzICZjYXBzLAogICAg
ICAgICAgICAgICAgICAgICBjb25zdCBFeHRlbnNpb25zICZleHRlbnNpb25zLAogICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgY2xpZW50VmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgYm9v
bCBkZWJ1Zyk7CisgICAgICAgICAgICAgICAgICAgIGJvb2wgZGVidWcsCisgICAgICAgICAgICAg
ICAgICAgIGJvb2wgYmluZEdlbmVyYXRlc1Jlc291cmNlKTsKICAgICB2b2lkIHJlc2V0KCk7CiAK
ICAgICAvLyBTdGF0ZSBjaHVuayBnZXR0ZXJzCkBAIC0xMTksNiArMTIwLDEyIEBACiAgICAgR0xj
bGFtcGYgZ2V0U2FtcGxlQ292ZXJhZ2VWYWx1ZSgpIGNvbnN0OwogICAgIGJvb2wgZ2V0U2FtcGxl
Q292ZXJhZ2VJbnZlcnQoKSBjb25zdDsKIAorICAgIC8vIE11bHRpc2FtcGxpbmcvYWxwaGEgdG8g
b25lIG1hbmlwdWxhdGlvbi4KKyAgICB2b2lkIHNldFNhbXBsZUFscGhhVG9PbmUoYm9vbCBlbmFi
bGVkKTsKKyAgICBib29sIGlzU2FtcGxlQWxwaGFUb09uZUVuYWJsZWQoKSBjb25zdDsKKyAgICB2
b2lkIHNldE11bHRpc2FtcGxpbmcoYm9vbCBlbmFibGVkKTsKKyAgICBib29sIGlzTXVsdGlzYW1w
bGluZ0VuYWJsZWQoKSBjb25zdDsKKwogICAgIC8vIFNjaXNzb3IgdGVzdCBzdGF0ZSB0b2dnbGUg
JiBxdWVyeQogICAgIGJvb2wgaXNTY2lzc29yVGVzdEVuYWJsZWQoKSBjb25zdDsKICAgICB2b2lk
IHNldFNjaXNzb3JUZXN0KGJvb2wgZW5hYmxlZCk7CkBAIC0xMzEsNyArMTM4LDcgQEAKIAogICAg
IC8vIEdlbmVyaWMgc3RhdGUgdG9nZ2xlICYgcXVlcnkKICAgICB2b2lkIHNldEVuYWJsZUZlYXR1
cmUoR0xlbnVtIGZlYXR1cmUsIGJvb2wgZW5hYmxlZCk7Ci0gICAgYm9vbCBnZXRFbmFibGVGZWF0
dXJlKEdMZW51bSBmZWF0dXJlKTsKKyAgICBib29sIGdldEVuYWJsZUZlYXR1cmUoR0xlbnVtIGZl
YXR1cmUpIGNvbnN0OwogCiAgICAgLy8gTGluZSB3aWR0aCBzdGF0ZSBzZXR0ZXIKICAgICB2b2lk
IHNldExpbmVXaWR0aChHTGZsb2F0IHdpZHRoKTsKQEAgLTE0MSw2ICsxNDgsOSBAQAogICAgIHZv
aWQgc2V0R2VuZXJhdGVNaXBtYXBIaW50KEdMZW51bSBoaW50KTsKICAgICB2b2lkIHNldEZyYWdt
ZW50U2hhZGVyRGVyaXZhdGl2ZUhpbnQoR0xlbnVtIGhpbnQpOwogCisgICAgLy8gR0xfQ0hST01J
VU1fYmluZF9nZW5lcmF0ZXNfcmVzb3VyY2UKKyAgICBib29sIGlzQmluZEdlbmVyYXRlc1Jlc291
cmNlRW5hYmxlZCgpIGNvbnN0OworCiAgICAgLy8gVmlld3BvcnQgc3RhdGUgc2V0dGVyL2dldHRl
cgogICAgIHZvaWQgc2V0Vmlld3BvcnRQYXJhbXMoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQpOwogICAgIGNvbnN0IFJlY3RhbmdsZSAmZ2V0Vmlld3BvcnQo
KSBjb25zdDsKQEAgLTE2NCw3ICsxNzQsNyBAQAogICAgIC8vIFJlbmRlcmJ1ZmZlciBiaW5kaW5n
IG1hbmlwdWxhdGlvbgogICAgIHZvaWQgc2V0UmVuZGVyYnVmZmVyQmluZGluZyhSZW5kZXJidWZm
ZXIgKnJlbmRlcmJ1ZmZlcik7CiAgICAgR0x1aW50IGdldFJlbmRlcmJ1ZmZlcklkKCkgY29uc3Q7
Ci0gICAgUmVuZGVyYnVmZmVyICpnZXRDdXJyZW50UmVuZGVyYnVmZmVyKCk7CisgICAgUmVuZGVy
YnVmZmVyICpnZXRDdXJyZW50UmVuZGVyYnVmZmVyKCkgY29uc3Q7CiAgICAgdm9pZCBkZXRhY2hS
ZW5kZXJidWZmZXIoR0x1aW50IHJlbmRlcmJ1ZmZlcik7CiAKICAgICAvLyBGcmFtZWJ1ZmZlciBi
aW5kaW5nIG1hbmlwdWxhdGlvbgpAQCAtMTcxLDEwICsxODEsOCBAQAogICAgIHZvaWQgc2V0UmVh
ZEZyYW1lYnVmZmVyQmluZGluZyhGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIpOwogICAgIHZvaWQg
c2V0RHJhd0ZyYW1lYnVmZmVyQmluZGluZyhGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIpOwogICAg
IEZyYW1lYnVmZmVyICpnZXRUYXJnZXRGcmFtZWJ1ZmZlcihHTGVudW0gdGFyZ2V0KSBjb25zdDsK
LSAgICBGcmFtZWJ1ZmZlciAqZ2V0UmVhZEZyYW1lYnVmZmVyKCk7Ci0gICAgRnJhbWVidWZmZXIg
KmdldERyYXdGcmFtZWJ1ZmZlcigpOwotICAgIGNvbnN0IEZyYW1lYnVmZmVyICpnZXRSZWFkRnJh
bWVidWZmZXIoKSBjb25zdDsKLSAgICBjb25zdCBGcmFtZWJ1ZmZlciAqZ2V0RHJhd0ZyYW1lYnVm
ZmVyKCkgY29uc3Q7CisgICAgRnJhbWVidWZmZXIgKmdldFJlYWRGcmFtZWJ1ZmZlcigpIGNvbnN0
OworICAgIEZyYW1lYnVmZmVyICpnZXREcmF3RnJhbWVidWZmZXIoKSBjb25zdDsKICAgICBib29s
IHJlbW92ZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcoR0x1aW50IGZyYW1lYnVmZmVyKTsKICAgICBi
b29sIHJlbW92ZURyYXdGcmFtZWJ1ZmZlckJpbmRpbmcoR0x1aW50IGZyYW1lYnVmZmVyKTsKIApA
QCAtMTkyLDEwICsyMDAsMTAgQEAKICAgICB2b2lkIHNldFRyYW5zZm9ybUZlZWRiYWNrQmluZGlu
ZyhUcmFuc2Zvcm1GZWVkYmFjayAqdHJhbnNmb3JtRmVlZGJhY2spOwogICAgIFRyYW5zZm9ybUZl
ZWRiYWNrICpnZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJhY2soKSBjb25zdDsKICAgICBib29sIGlz
VHJhbnNmb3JtRmVlZGJhY2tBY3RpdmVVbnBhdXNlZCgpIGNvbnN0OwotICAgIHZvaWQgZGV0YWNo
VHJhbnNmb3JtRmVlZGJhY2soR0x1aW50IHRyYW5zZm9ybUZlZWRiYWNrKTsKKyAgICBib29sIHJl
bW92ZVRyYW5zZm9ybUZlZWRiYWNrQmluZGluZyhHTHVpbnQgdHJhbnNmb3JtRmVlZGJhY2spOwog
CiAgICAgLy8gUXVlcnkgYmluZGluZyBtYW5pcHVsYXRpb24KLSAgICBib29sIGlzUXVlcnlBY3Rp
dmUoKSBjb25zdDsKKyAgICBib29sIGlzUXVlcnlBY3RpdmUoY29uc3QgR0xlbnVtIHR5cGUpIGNv
bnN0OwogICAgIGJvb2wgaXNRdWVyeUFjdGl2ZShRdWVyeSAqcXVlcnkpIGNvbnN0OwogICAgIHZv
aWQgc2V0QWN0aXZlUXVlcnkoR0xlbnVtIHRhcmdldCwgUXVlcnkgKnF1ZXJ5KTsKICAgICBHTHVp
bnQgZ2V0QWN0aXZlUXVlcnlJZChHTGVudW0gdGFyZ2V0KSBjb25zdDsKQEAgLTI2OSwxMyArMjc3
LDI3IEBACiAgICAgY29uc3QgRGVidWcgJmdldERlYnVnKCkgY29uc3Q7CiAgICAgRGVidWcgJmdl
dERlYnVnKCk7CiAKKyAgICAvLyBDSFJPTUlVTV9mcmFtZWJ1ZmZlcl9taXhlZF9zYW1wbGVzIGNv
dmVyYWdlIG1vZHVsYXRpb24KKyAgICB2b2lkIHNldENvdmVyYWdlTW9kdWxhdGlvbihHTGVudW0g
Y29tcG9uZW50cyk7CisgICAgR0xlbnVtIGdldENvdmVyYWdlTW9kdWxhdGlvbigpIGNvbnN0Owor
CisgICAgLy8gQ0hST01JVU1fcGF0aF9yZW5kZXJpbmcKKyAgICB2b2lkIGxvYWRQYXRoUmVuZGVy
aW5nTWF0cml4KEdMZW51bSBtYXRyaXhNb2RlLCBjb25zdCBHTGZsb2F0ICptYXRyaXgpOworICAg
IGNvbnN0IEdMZmxvYXQgKmdldFBhdGhSZW5kZXJpbmdNYXRyaXgoR0xlbnVtIHdoaWNoKSBjb25z
dDsKKyAgICB2b2lkIHNldFBhdGhTdGVuY2lsRnVuYyhHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBH
THVpbnQgbWFzayk7CisKKyAgICBHTGVudW0gZ2V0UGF0aFN0ZW5jaWxGdW5jKCkgY29uc3Q7Cisg
ICAgR0xpbnQgZ2V0UGF0aFN0ZW5jaWxSZWYoKSBjb25zdDsKKyAgICBHTHVpbnQgZ2V0UGF0aFN0
ZW5jaWxNYXNrKCkgY29uc3Q7CisKICAgICAvLyBTdGF0ZSBxdWVyeSBmdW5jdGlvbnMKICAgICB2
b2lkIGdldEJvb2xlYW52KEdMZW51bSBwbmFtZSwgR0xib29sZWFuICpwYXJhbXMpOwogICAgIHZv
aWQgZ2V0RmxvYXR2KEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKLSAgICB2b2lkIGdl
dEludGVnZXJ2KGNvbnN0IGdsOjpEYXRhICZkYXRhLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJh
bXMpOworICAgIHZvaWQgZ2V0SW50ZWdlcnYoY29uc3QgQ29udGV4dFN0YXRlICZkYXRhLCBHTGVu
dW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwogICAgIHZvaWQgZ2V0UG9pbnRlcnYoR0xlbnVtIHBu
YW1lLCB2b2lkICoqcGFyYW1zKSBjb25zdDsKLSAgICBib29sIGdldEluZGV4ZWRJbnRlZ2VydihH
TGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMaW50ICpkYXRhKTsKLSAgICBib29sIGdldElu
ZGV4ZWRJbnRlZ2VyNjR2KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xpbnQ2NCAqZGF0
YSk7CisgICAgdm9pZCBnZXRJbnRlZ2VyaV92KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwg
R0xpbnQgKmRhdGEpOworICAgIHZvaWQgZ2V0SW50ZWdlcjY0aV92KEdMZW51bSB0YXJnZXQsIEdM
dWludCBpbmRleCwgR0xpbnQ2NCAqZGF0YSk7CisgICAgdm9pZCBnZXRCb29sZWFuaV92KEdMZW51
bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xib29sZWFuICpkYXRhKTsKIAogICAgIGJvb2wgaGFz
TWFwcGVkQnVmZmVyKEdMZW51bSB0YXJnZXQpIGNvbnN0OwogCkBAIC0zMjAsMTEgKzM0MiwxMyBA
QAogICAgICAgICBESVJUWV9CSVRfVU5QQUNLX1NLSVBfSU1BR0VTLAogICAgICAgICBESVJUWV9C
SVRfVU5QQUNLX1NLSVBfUk9XUywKICAgICAgICAgRElSVFlfQklUX1VOUEFDS19TS0lQX1BJWEVM
UywKKyAgICAgICAgRElSVFlfQklUX1VOUEFDS19CVUZGRVJfQklORElORywKICAgICAgICAgRElS
VFlfQklUX1BBQ0tfQUxJR05NRU5ULAogICAgICAgICBESVJUWV9CSVRfUEFDS19SRVZFUlNFX1JP
V19PUkRFUiwKICAgICAgICAgRElSVFlfQklUX1BBQ0tfUk9XX0xFTkdUSCwKICAgICAgICAgRElS
VFlfQklUX1BBQ0tfU0tJUF9ST1dTLAogICAgICAgICBESVJUWV9CSVRfUEFDS19TS0lQX1BJWEVM
UywKKyAgICAgICAgRElSVFlfQklUX1BBQ0tfQlVGRkVSX0JJTkRJTkcsCiAgICAgICAgIERJUlRZ
X0JJVF9ESVRIRVJfRU5BQkxFRCwKICAgICAgICAgRElSVFlfQklUX0dFTkVSQVRFX01JUE1BUF9I
SU5ULAogICAgICAgICBESVJUWV9CSVRfU0hBREVSX0RFUklWQVRJVkVfSElOVCwKQEAgLTMzMyw2
ICszNTcsMTIgQEAKICAgICAgICAgRElSVFlfQklUX1JFTkRFUkJVRkZFUl9CSU5ESU5HLAogICAg
ICAgICBESVJUWV9CSVRfVkVSVEVYX0FSUkFZX0JJTkRJTkcsCiAgICAgICAgIERJUlRZX0JJVF9Q
Uk9HUkFNX0JJTkRJTkcsCisgICAgICAgIERJUlRZX0JJVF9NVUxUSVNBTVBMSU5HLAorICAgICAg
ICBESVJUWV9CSVRfU0FNUExFX0FMUEhBX1RPX09ORSwKKyAgICAgICAgRElSVFlfQklUX0NPVkVS
QUdFX01PRFVMQVRJT04sICAgICAgICAgLy8gQ0hST01JVU1fZnJhbWVidWZmZXJfbWl4ZWRfc2Ft
cGxlcworICAgICAgICBESVJUWV9CSVRfUEFUSF9SRU5ERVJJTkdfTUFUUklYX01WLCAgICAvLyBD
SFJPTUlVTV9wYXRoX3JlbmRlcmluZyBwYXRoIG1vZGVsIHZpZXcgbWF0cml4CisgICAgICAgIERJ
UlRZX0JJVF9QQVRIX1JFTkRFUklOR19NQVRSSVhfUFJPSiwgIC8vIENIUk9NSVVNX3BhdGhfcmVu
ZGVyaW5nIHBhdGggcHJvamVjdGlvbiBtYXRyaXgKKyAgICAgICAgRElSVFlfQklUX1BBVEhfUkVO
REVSSU5HX1NURU5DSUxfU1RBVEUsCiAgICAgICAgIERJUlRZX0JJVF9DVVJSRU5UX1ZBTFVFXzAs
CiAgICAgICAgIERJUlRZX0JJVF9DVVJSRU5UX1ZBTFVFX01BWCA9IERJUlRZX0JJVF9DVVJSRU5U
X1ZBTFVFXzAgKyBNQVhfVkVSVEVYX0FUVFJJQlMsCiAgICAgICAgIERJUlRZX0JJVF9JTlZBTElE
ICAgICAgICAgICA9IERJUlRZX0JJVF9DVVJSRU5UX1ZBTFVFX01BWCwKQEAgLTM5Miw2ICs0MjIs
OCBAQAogICAgIEdMZW51bSBtR2VuZXJhdGVNaXBtYXBIaW50OwogICAgIEdMZW51bSBtRnJhZ21l
bnRTaGFkZXJEZXJpdmF0aXZlSGludDsKIAorICAgIGJvb2wgbUJpbmRHZW5lcmF0ZXNSZXNvdXJj
ZTsKKwogICAgIFJlY3RhbmdsZSBtVmlld3BvcnQ7CiAgICAgZmxvYXQgbU5lYXJaOwogICAgIGZs
b2F0IG1GYXJaOwpAQCAtNDM1LDYgKzQ2NywxOCBAQAogCiAgICAgRGVidWcgbURlYnVnOwogCisg
ICAgYm9vbCBtTXVsdGlTYW1wbGluZzsKKyAgICBib29sIG1TYW1wbGVBbHBoYVRvT25lOworCisg
ICAgR0xlbnVtIG1Db3ZlcmFnZU1vZHVsYXRpb247CisKKyAgICAvLyBDSFJPTUlVTV9wYXRoX3Jl
bmRlcmluZworICAgIEdMZmxvYXQgbVBhdGhNYXRyaXhNVlsxNl07CisgICAgR0xmbG9hdCBtUGF0
aE1hdHJpeFByb2pbMTZdOworICAgIEdMZW51bSBtUGF0aFN0ZW5jaWxGdW5jOworICAgIEdMaW50
IG1QYXRoU3RlbmNpbFJlZjsKKyAgICBHTHVpbnQgbVBhdGhTdGVuY2lsTWFzazsKKwogICAgIERp
cnR5Qml0cyBtRGlydHlCaXRzOwogICAgIERpcnR5T2JqZWN0cyBtRGlydHlPYmplY3RzOwogfTsK
QEAgLTQ0Miw0ICs0ODYsMyBAQAogfSAgLy8gbmFtZXNwYWNlIGdsCiAKICNlbmRpZiAvLyBMSUJB
TkdMRV9TVEFURV9IXwotCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvU3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvU3RyZWFtLmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL1N0cmVhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3LDI1
ICsxNyw0MiBAQAogI2luY2x1ZGUgImNvbW1vbi9wbGF0Zm9ybS5oIgogI2luY2x1ZGUgImNvbW1v
bi91dGlsaXRpZXMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Db250ZXh0LmgiCi0jaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvU3RyZWFtSW1wbC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0Rpc3Bs
YXkuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9EaXNwbGF5SW1wbC5oIgorI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1N0cmVhbVByb2R1Y2VySW1wbC5oIgogCiBuYW1lc3BhY2Ug
ZWdsCiB7CiAKLVN0cmVhbTo6U3RyZWFtKHJ4OjpTdHJlYW1JbXBsICppbXBsLCBjb25zdCBBdHRy
aWJ1dGVNYXAgJmF0dHJpYnMpCi0gICAgOiBtSW1wbGVtZW50YXRpb24oaW1wbCksCitTdHJlYW06
OlN0cmVhbShEaXNwbGF5ICpkaXNwbGF5LCBjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCisg
ICAgOiBtRGlzcGxheShkaXNwbGF5KSwKKyAgICAgIG1Qcm9kdWNlckltcGxlbWVudGF0aW9uKG51
bGxwdHIpLAogICAgICAgbVN0YXRlKEVHTF9TVFJFQU1fU1RBVEVfQ1JFQVRFRF9LSFIpLAogICAg
ICAgbVByb2R1Y2VyRnJhbWUoMCksCiAgICAgICBtQ29uc3VtZXJGcmFtZSgwKSwKLSAgICAgIG1D
b25zdW1lckxhdGVuY3koc3RhdGljX2Nhc3Q8RUdMaW50PihhdHRyaWJzLmdldChFR0xfQ09OU1VN
RVJfTEFURU5DWV9VU0VDX0tIUiwgMCkpKSwKLSAgICAgIG1Db25zdW1lckFjcXVpcmVUaW1lb3V0
KAotICAgICAgICAgIHN0YXRpY19jYXN0PEVHTGludD4oYXR0cmlicy5nZXQoRUdMX0NPTlNVTUVS
X0FDUVVJUkVfVElNRU9VVF9VU0VDX0tIUiwgMCkpKQorICAgICAgbUNvbnN1bWVyTGF0ZW5jeShh
dHRyaWJzLmdldEFzSW50KEVHTF9DT05TVU1FUl9MQVRFTkNZX1VTRUNfS0hSLCAwKSksCisgICAg
ICBtQ29uc3VtZXJBY3F1aXJlVGltZW91dChhdHRyaWJzLmdldEFzSW50KEVHTF9DT05TVU1FUl9B
Q1FVSVJFX1RJTUVPVVRfVVNFQ19LSFIsIDApKSwKKyAgICAgIG1QbGFuZUNvdW50KDApLAorICAg
ICAgbUNvbnN1bWVyVHlwZShDb25zdW1lclR5cGU6Ok5vQ29uc3VtZXIpLAorICAgICAgbVByb2R1
Y2VyVHlwZShQcm9kdWNlclR5cGU6Ok5vUHJvZHVjZXIpCiB7CisgICAgZm9yIChhdXRvICZwbGFu
ZSA6IG1QbGFuZXMpCisgICAgeworICAgICAgICBwbGFuZS50ZXh0dXJlVW5pdCA9IC0xOworICAg
ICAgICBwbGFuZS50ZXh0dXJlICAgICA9IG51bGxwdHI7CisgICAgfQogfQogCiBTdHJlYW06On5T
dHJlYW0oKQogewotICAgIFNhZmVEZWxldGUobUltcGxlbWVudGF0aW9uKTsKKyAgICBTYWZlRGVs
ZXRlKG1Qcm9kdWNlckltcGxlbWVudGF0aW9uKTsKKyAgICBmb3IgKGF1dG8gJnBsYW5lIDogbVBs
YW5lcykKKyAgICB7CisgICAgICAgIGlmIChwbGFuZS50ZXh0dXJlICE9IG51bGxwdHIpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHBsYW5lLnRleHR1cmUtPnJlbGVhc2VTdHJlYW0oKTsKKyAgICAg
ICAgfQorICAgIH0KIH0KIAogdm9pZCBTdHJlYW06OnNldENvbnN1bWVyTGF0ZW5jeShFR0xpbnQg
bGF0ZW5jeSkKQEAgLTczLDQgKzkwLDE4MiBAQAogICAgIHJldHVybiBtQ29uc3VtZXJBY3F1aXJl
VGltZW91dDsKIH0KIAorU3RyZWFtOjpQcm9kdWNlclR5cGUgU3RyZWFtOjpnZXRQcm9kdWNlclR5
cGUoKSBjb25zdAoreworICAgIHJldHVybiBtUHJvZHVjZXJUeXBlOworfQorCitTdHJlYW06OkNv
bnN1bWVyVHlwZSBTdHJlYW06OmdldENvbnN1bWVyVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1Db25zdW1lclR5cGU7Cit9CisKK0VHTGludCBTdHJlYW06OmdldFBsYW5lQ291bnQoKSBjb25z
dAoreworICAgIHJldHVybiBtUGxhbmVDb3VudDsKK30KKworcng6OlN0cmVhbVByb2R1Y2VySW1w
bCAqU3RyZWFtOjpnZXRJbXBsZW1lbnRhdGlvbigpCit7CisgICAgcmV0dXJuIG1Qcm9kdWNlcklt
cGxlbWVudGF0aW9uOworfQorCitFcnJvciBTdHJlYW06OmNyZWF0ZUNvbnN1bWVyR0xUZXh0dXJl
RXh0ZXJuYWwoY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJ1dGVzLCBnbDo6Q29udGV4dCAqY29u
dGV4dCkKK3sKKyAgICBBU1NFUlQobVN0YXRlID09IEVHTF9TVFJFQU1fU1RBVEVfQ1JFQVRFRF9L
SFIpOworICAgIEFTU0VSVChtQ29uc3VtZXJUeXBlID09IENvbnN1bWVyVHlwZTo6Tm9Db25zdW1l
cik7CisgICAgQVNTRVJUKG1Qcm9kdWNlclR5cGUgPT0gUHJvZHVjZXJUeXBlOjpOb1Byb2R1Y2Vy
KTsKKyAgICBBU1NFUlQoY29udGV4dCAhPSBudWxscHRyKTsKKworICAgIGNvbnN0IGF1dG8gJmds
U3RhdGUgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCk7CisgICAgRUdMZW51bSBidWZmZXJUeXBlID0g
YXR0cmlidXRlcy5nZXRBc0ludChFR0xfQ09MT1JfQlVGRkVSX1RZUEUsIEVHTF9SR0JfQlVGRkVS
KTsKKyAgICBpZiAoYnVmZmVyVHlwZSA9PSBFR0xfUkdCX0JVRkZFUikKKyAgICB7CisgICAgICAg
IG1QbGFuZXNbMF0udGV4dHVyZSA9IGdsU3RhdGUuZ2V0VGFyZ2V0VGV4dHVyZShHTF9URVhUVVJF
X0VYVEVSTkFMX09FUyk7CisgICAgICAgIEFTU0VSVChtUGxhbmVzWzBdLnRleHR1cmUgIT0gbnVs
bHB0cik7CisgICAgICAgIG1QbGFuZXNbMF0udGV4dHVyZS0+YmluZFN0cmVhbSh0aGlzKTsKKyAg
ICAgICAgbUNvbnN1bWVyVHlwZSA9IENvbnN1bWVyVHlwZTo6R0xUZXh0dXJlUkdCOworICAgICAg
ICBtUGxhbmVDb3VudCAgID0gMTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbVBs
YW5lQ291bnQgPSBhdHRyaWJ1dGVzLmdldEFzSW50KEVHTF9ZVVZfTlVNQkVSX09GX1BMQU5FU19F
WFQsIDIpOworICAgICAgICBBU1NFUlQobVBsYW5lQ291bnQgPD0gMyk7CisgICAgICAgIGZvciAo
RUdMaW50IGkgPSAwOyBpIDwgbVBsYW5lQ291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAg
ICAgLy8gRmV0Y2ggYWxsIHRoZSB0ZXh0dXJlcworICAgICAgICAgICAgbVBsYW5lc1tpXS50ZXh0
dXJlVW5pdCA9IGF0dHJpYnV0ZXMuZ2V0QXNJbnQoRUdMX1lVVl9QTEFORTBfVEVYVFVSRV9VTklU
X05WICsgaSwgLTEpOworICAgICAgICAgICAgaWYgKG1QbGFuZXNbaV0udGV4dHVyZVVuaXQgIT0g
RUdMX05PTkUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbVBsYW5lc1tpXS50ZXh0
dXJlID0KKyAgICAgICAgICAgICAgICAgICAgZ2xTdGF0ZS5nZXRTYW1wbGVyVGV4dHVyZShtUGxh
bmVzW2ldLnRleHR1cmVVbml0LCBHTF9URVhUVVJFX0VYVEVSTkFMX09FUyk7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKG1QbGFuZXNbaV0udGV4dHVyZSAhPSBudWxscHRyKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIEJpbmQgdGhlbSB0byB0aGUgc3RyZWFtCisgICAg
ICAgIGZvciAoRUdMaW50IGkgPSAwOyBpIDwgbVBsYW5lQ291bnQ7IGkrKykKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKG1QbGFuZXNbaV0udGV4dHVyZVVuaXQgIT0gRUdMX05PTkUpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgbVBsYW5lc1tpXS50ZXh0dXJlLT5iaW5kU3RyZWFt
KHRoaXMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG1Db25zdW1lclR5cGUg
PSBDb25zdW1lclR5cGU6OkdMVGV4dHVyZVlVVjsKKyAgICB9CisKKyAgICBtQ29udGV4dCA9IGNv
bnRleHQ7CisgICAgbVN0YXRlICAgPSBFR0xfU1RSRUFNX1NUQVRFX0NPTk5FQ1RJTkdfS0hSOwor
CisgICAgcmV0dXJuIEVycm9yKEVHTF9TVUNDRVNTKTsKK30KKworRXJyb3IgU3RyZWFtOjpjcmVh
dGVQcm9kdWNlckQzRDExVGV4dHVyZU5WMTIoY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJ1dGVz
KQoreworICAgIEFTU0VSVChtU3RhdGUgPT0gRUdMX1NUUkVBTV9TVEFURV9DT05ORUNUSU5HX0tI
Uik7CisgICAgQVNTRVJUKG1Db25zdW1lclR5cGUgPT0gQ29uc3VtZXJUeXBlOjpHTFRleHR1cmVZ
VVYpOworICAgIEFTU0VSVChtUHJvZHVjZXJUeXBlID09IFByb2R1Y2VyVHlwZTo6Tm9Qcm9kdWNl
cik7CisgICAgQVNTRVJUKG1QbGFuZUNvdW50ID09IDIpOworCisgICAgbVByb2R1Y2VySW1wbGVt
ZW50YXRpb24gPSBtRGlzcGxheS0+Z2V0SW1wbGVtZW50YXRpb24oKS0+Y3JlYXRlU3RyZWFtUHJv
ZHVjZXJEM0RUZXh0dXJlTlYxMigKKyAgICAgICAgbUNvbnN1bWVyVHlwZSwgYXR0cmlidXRlcyk7
CisgICAgbVByb2R1Y2VyVHlwZSA9IFByb2R1Y2VyVHlwZTo6RDNEMTFUZXh0dXJlTlYxMjsKKyAg
ICBtU3RhdGUgICAgICAgID0gRUdMX1NUUkVBTV9TVEFURV9FTVBUWV9LSFI7CisKKyAgICByZXR1
cm4gRXJyb3IoRUdMX1NVQ0NFU1MpOworfQorCisvLyBDYWxsZWQgd2hlbiB0aGUgY29uc3VtZXIg
b2YgdGhpcyBzdHJlYW0gc3RhcnRzIHVzaW5nIHRoZSBzdHJlYW0KK0Vycm9yIFN0cmVhbTo6Y29u
c3VtZXJBY3F1aXJlKCkKK3sKKyAgICBBU1NFUlQobVN0YXRlID09IEVHTF9TVFJFQU1fU1RBVEVf
TkVXX0ZSQU1FX0FWQUlMQUJMRV9LSFIgfHwKKyAgICAgICAgICAgbVN0YXRlID09IEVHTF9TVFJF
QU1fU1RBVEVfT0xEX0ZSQU1FX0FWQUlMQUJMRV9LSFIpOworICAgIEFTU0VSVChtQ29uc3VtZXJU
eXBlID09IENvbnN1bWVyVHlwZTo6R0xUZXh0dXJlUkdCIHx8CisgICAgICAgICAgIG1Db25zdW1l
clR5cGUgPT0gQ29uc3VtZXJUeXBlOjpHTFRleHR1cmVZVVYpOworICAgIEFTU0VSVChtUHJvZHVj
ZXJUeXBlID09IFByb2R1Y2VyVHlwZTo6RDNEMTFUZXh0dXJlTlYxMik7CisKKyAgICBtU3RhdGUg
PSBFR0xfU1RSRUFNX1NUQVRFX09MRF9GUkFNRV9BVkFJTEFCTEVfS0hSOworICAgIG1Db25zdW1l
ckZyYW1lKys7CisKKyAgICAvLyBCaW5kIHRoZSBwbGFuZXMgdG8gdGhlIGdsIHRleHR1cmVzCisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtUGxhbmVDb3VudDsgaSsrKQorICAgIHsKKyAgICAgICAg
aWYgKG1QbGFuZXNbaV0udGV4dHVyZSAhPSBudWxscHRyKQorICAgICAgICB7CisgICAgICAgICAg
ICBtUGxhbmVzW2ldLnRleHR1cmUtPmFjcXVpcmVJbWFnZUZyb21TdHJlYW0oCisgICAgICAgICAg
ICAgICAgbVByb2R1Y2VySW1wbGVtZW50YXRpb24tPmdldEdMRnJhbWVEZXNjcmlwdGlvbihpKSk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gRXJyb3IoRUdMX1NVQ0NFU1MpOworfQor
CitFcnJvciBTdHJlYW06OmNvbnN1bWVyUmVsZWFzZSgpCit7CisgICAgQVNTRVJUKG1TdGF0ZSA9
PSBFR0xfU1RSRUFNX1NUQVRFX05FV19GUkFNRV9BVkFJTEFCTEVfS0hSIHx8CisgICAgICAgICAg
IG1TdGF0ZSA9PSBFR0xfU1RSRUFNX1NUQVRFX09MRF9GUkFNRV9BVkFJTEFCTEVfS0hSKTsKKyAg
ICBBU1NFUlQobUNvbnN1bWVyVHlwZSA9PSBDb25zdW1lclR5cGU6OkdMVGV4dHVyZVJHQiB8fAor
ICAgICAgICAgICBtQ29uc3VtZXJUeXBlID09IENvbnN1bWVyVHlwZTo6R0xUZXh0dXJlWVVWKTsK
KyAgICBBU1NFUlQobVByb2R1Y2VyVHlwZSA9PSBQcm9kdWNlclR5cGU6OkQzRDExVGV4dHVyZU5W
MTIpOworCisgICAgLy8gUmVsZWFzZSB0aGUgaW1hZ2VzCisgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBtUGxhbmVDb3VudDsgaSsrKQorICAgIHsKKyAgICAgICAgaWYgKG1QbGFuZXNbaV0udGV4dHVy
ZSAhPSBudWxscHRyKQorICAgICAgICB7CisgICAgICAgICAgICBtUGxhbmVzW2ldLnRleHR1cmUt
PnJlbGVhc2VJbWFnZUZyb21TdHJlYW0oKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVy
biBFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKK2Jvb2wgU3RyZWFtOjppc0NvbnN1bWVyQm91bmRU
b0NvbnRleHQoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpIGNvbnN0Cit7CisgICAgQVNTRVJU
KGNvbnRleHQgIT0gbnVsbHB0cik7CisgICAgcmV0dXJuIChjb250ZXh0ID09IG1Db250ZXh0KTsK
K30KKworRXJyb3IgU3RyZWFtOjp2YWxpZGF0ZUQzRDExTlYxMlRleHR1cmUodm9pZCAqdGV4dHVy
ZSkgY29uc3QKK3sKKyAgICBBU1NFUlQobUNvbnN1bWVyVHlwZSA9PSBDb25zdW1lclR5cGU6OkdM
VGV4dHVyZVJHQiB8fAorICAgICAgICAgICBtQ29uc3VtZXJUeXBlID09IENvbnN1bWVyVHlwZTo6
R0xUZXh0dXJlWVVWKTsKKyAgICBBU1NFUlQobVByb2R1Y2VyVHlwZSA9PSBQcm9kdWNlclR5cGU6
OkQzRDExVGV4dHVyZU5WMTIpOworICAgIEFTU0VSVChtUHJvZHVjZXJJbXBsZW1lbnRhdGlvbiAh
PSBudWxscHRyKTsKKworICAgIHJldHVybiBtUHJvZHVjZXJJbXBsZW1lbnRhdGlvbi0+dmFsaWRh
dGVEM0ROVjEyVGV4dHVyZSh0ZXh0dXJlKTsKK30KKworRXJyb3IgU3RyZWFtOjpwb3N0RDNEMTFO
VjEyVGV4dHVyZSh2b2lkICp0ZXh0dXJlLCBjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYnV0ZXMp
Cit7CisgICAgQVNTRVJUKG1Db25zdW1lclR5cGUgPT0gQ29uc3VtZXJUeXBlOjpHTFRleHR1cmVS
R0IgfHwKKyAgICAgICAgICAgbUNvbnN1bWVyVHlwZSA9PSBDb25zdW1lclR5cGU6OkdMVGV4dHVy
ZVlVVik7CisgICAgQVNTRVJUKG1Qcm9kdWNlclR5cGUgPT0gUHJvZHVjZXJUeXBlOjpEM0QxMVRl
eHR1cmVOVjEyKTsKKworICAgIG1Qcm9kdWNlckltcGxlbWVudGF0aW9uLT5wb3N0RDNETlYxMlRl
eHR1cmUodGV4dHVyZSwgYXR0cmlidXRlcyk7CisgICAgbVByb2R1Y2VyRnJhbWUrKzsKKworICAg
IG1TdGF0ZSA9IEVHTF9TVFJFQU1fU1RBVEVfTkVXX0ZSQU1FX0FWQUlMQUJMRV9LSFI7CisKKyAg
ICByZXR1cm4gRXJyb3IoRUdMX1NVQ0NFU1MpOworfQorCisvLyBUaGlzIGlzIGNhbGxlZCB3aGVu
IGEgdGV4dHVyZSBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgc3RyZWFtIGlzIGRlc3Ryb3ll
ZC4gRXZlbiBpZiBtdWx0aXBsZQorLy8gdGV4dHVyZXMgYXJlIGJvdW5kLCBvbmUgYmVpbmcgZGVz
dHJveWVkIGludmFsaWRhdGVzIHRoZSBzdHJlYW0sIHNvIGFsbCB0aGUgcmVtYWluaW5nIHRleHR1
cmVzCisvLyB3aWxsIGJlIHJlbGVhc2VkIGFuZCB0aGUgc3RyZWFtIHdpbGwgYmUgaW52YWxpZGF0
ZWQuCit2b2lkIFN0cmVhbTo6cmVsZWFzZVRleHR1cmVzKCkKK3sKKyAgICBmb3IgKGF1dG8gJnBs
YW5lIDogbVBsYW5lcykKKyAgICB7CisgICAgICAgIGlmIChwbGFuZS50ZXh0dXJlICE9IG51bGxw
dHIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHBsYW5lLnRleHR1cmUtPnJlbGVhc2VTdHJlYW0o
KTsKKyAgICAgICAgICAgIHBsYW5lLnRleHR1cmUgPSBudWxscHRyOworICAgICAgICB9CisgICAg
fQorICAgIG1Db25zdW1lclR5cGUgPSBDb25zdW1lclR5cGU6Ok5vQ29uc3VtZXI7CisgICAgbVBy
b2R1Y2VyVHlwZSA9IFByb2R1Y2VyVHlwZTo6Tm9Qcm9kdWNlcjsKKyAgICBtU3RhdGUgICAgICAg
ID0gRUdMX1NUUkVBTV9TVEFURV9ESVNDT05ORUNURURfS0hSOworfQorCiB9ICAvLyBuYW1lc3Bh
Y2UgZWdsCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU3RyZWFt
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1N0
cmVhbS5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvU3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwLDYgKzEwLDggQEAKICNpZm5k
ZWYgTElCQU5HTEVfU1RSRUFNX0hfCiAjZGVmaW5lIExJQkFOR0xFX1NUUkVBTV9IXwogCisjaW5j
bHVkZSA8YXJyYXk+CisKICNpbmNsdWRlIDxFR0wvZWdsLmg+CiAjaW5jbHVkZSA8RUdML2VnbGV4
dC5oPgogCkBAIC0xOCwxOCArMjAsNDggQEAKIAogbmFtZXNwYWNlIHJ4CiB7Ci1jbGFzcyBTdHJl
YW1JbXBsOworY2xhc3MgU3RyZWFtUHJvZHVjZXJJbXBsOwogfQogCituYW1lc3BhY2UgZ2wKK3sK
K2NsYXNzIENvbnRleHQ7CitjbGFzcyBUZXh0dXJlOworfQorCiBuYW1lc3BhY2UgZWdsCiB7Citj
bGFzcyBEaXNwbGF5OworY2xhc3MgRXJyb3I7CiAKIGNsYXNzIFN0cmVhbSBmaW5hbCA6IGFuZ2xl
OjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6Ci0gICAgU3RyZWFtKHJ4OjpTdHJlYW1JbXBsICpp
bXBsLCBjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpOworICAgIFN0cmVhbShEaXNwbGF5ICpk
aXNwbGF5LCBjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpOwogICAgIH5TdHJlYW0oKTsKIAor
ICAgIGVudW0gY2xhc3MgQ29uc3VtZXJUeXBlCisgICAgeworICAgICAgICBOb0NvbnN1bWVyLAor
ICAgICAgICBHTFRleHR1cmVSR0IsCisgICAgICAgIEdMVGV4dHVyZVlVViwKKyAgICB9OworCisg
ICAgZW51bSBjbGFzcyBQcm9kdWNlclR5cGUKKyAgICB7CisgICAgICAgIE5vUHJvZHVjZXIsCisg
ICAgICAgIEQzRDExVGV4dHVyZU5WMTIsCisgICAgfTsKKworICAgIC8vIEEgR0wgdGV4dHVyZSBp
bnRlcnByZXRhdGlvbiBvZiBhIHBhcnQgb2YgYSBwcm9kdWNlciBmcmFtZS4gRm9yIHVzZSB3aXRo
IEdMIHRleHR1cmUgY29uc3VtZXJzCisgICAgc3RydWN0IEdMVGV4dHVyZURlc2NyaXB0aW9uCisg
ICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgd2lkdGg7CisgICAgICAgIHVuc2lnbmVkIGludCBo
ZWlnaHQ7CisgICAgICAgIHVuc2lnbmVkIGludCBpbnRlcm5hbEZvcm1hdDsKKyAgICAgICAgdW5z
aWduZWQgaW50IG1pcExldmVsczsKKyAgICB9OworCiAgICAgRUdMZW51bSBnZXRTdGF0ZSgpIGNv
bnN0OwogCiAgICAgdm9pZCBzZXRDb25zdW1lckxhdGVuY3koRUdMaW50IGxhdGVuY3kpOwpAQCAt
NDEsMTAgKzczLDQzIEBACiAgICAgdm9pZCBzZXRDb25zdW1lckFjcXVpcmVUaW1lb3V0KEVHTGlu
dCB0aW1lb3V0KTsKICAgICBFR0xpbnQgZ2V0Q29uc3VtZXJBY3F1aXJlVGltZW91dCgpIGNvbnN0
OwogCisgICAgQ29uc3VtZXJUeXBlIGdldENvbnN1bWVyVHlwZSgpIGNvbnN0OworICAgIFByb2R1
Y2VyVHlwZSBnZXRQcm9kdWNlclR5cGUoKSBjb25zdDsKKworICAgIEVHTGludCBnZXRQbGFuZUNv
dW50KCkgY29uc3Q7CisKKyAgICByeDo6U3RyZWFtUHJvZHVjZXJJbXBsICpnZXRJbXBsZW1lbnRh
dGlvbigpOworCisgICAgLy8gQ29uc3VtZXIgY3JlYXRpb24gbWV0aG9kcworICAgIEVycm9yIGNy
ZWF0ZUNvbnN1bWVyR0xUZXh0dXJlRXh0ZXJuYWwoY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJ1
dGVzLCBnbDo6Q29udGV4dCAqY29udGV4dCk7CisKKyAgICAvLyBQcm9kdWNlciBjcmVhdGlvbiBt
ZXRob2RzCisgICAgRXJyb3IgY3JlYXRlUHJvZHVjZXJEM0QxMVRleHR1cmVOVjEyKGNvbnN0IEF0
dHJpYnV0ZU1hcCAmYXR0cmlidXRlcyk7CisKKyAgICAvLyBDb25zdW1lciBtZXRob2RzCisgICAg
RXJyb3IgY29uc3VtZXJBY3F1aXJlKCk7CisgICAgRXJyb3IgY29uc3VtZXJSZWxlYXNlKCk7CisK
KyAgICAvLyBTb21lIGNvbnN1bWVycyBhcmUgYm91bmQgdG8gR0wgY29udGV4dHMuIFRoaXMgdmFs
aWRhdGVzIHRoYXQgYSBnaXZlbiBjb250ZXh0IGlzIGJvdW5kIHRvIHRoZQorICAgIC8vIHN0cmVh
bSdzIGNvbnN1bWVyCisgICAgYm9vbCBpc0NvbnN1bWVyQm91bmRUb0NvbnRleHQoY29uc3QgZ2w6
OkNvbnRleHQgKmNvbnRleHQpIGNvbnN0OworCisgICAgLy8gUHJvZHVjZXIgbWV0aG9kcworICAg
IEVycm9yIHZhbGlkYXRlRDNEMTFOVjEyVGV4dHVyZSh2b2lkICp0ZXh0dXJlKSBjb25zdDsKKyAg
ICBFcnJvciBwb3N0RDNEMTFOVjEyVGV4dHVyZSh2b2lkICp0ZXh0dXJlLCBjb25zdCBBdHRyaWJ1
dGVNYXAgJmF0dHJpYnV0ZXMpOworCiAgIHByaXZhdGU6Ci0gICAgLy8gSW1wbGVtZW50YXRpb24K
LSAgICByeDo6U3RyZWFtSW1wbCAqbUltcGxlbWVudGF0aW9uOworICAgIC8vIEFzc29jaWF0ZWQg
ZGlzcGxheQorICAgIERpc3BsYXkgKm1EaXNwbGF5OwogCisgICAgLy8gUHJvZHVjZXIgSW1wbGVt
ZW50YXRpb24KKyAgICByeDo6U3RyZWFtUHJvZHVjZXJJbXBsICptUHJvZHVjZXJJbXBsZW1lbnRh
dGlvbjsKKworICAgIC8vIEFzc29jaWF0ZWQgR0wgY29udGV4dC4gTm90ZSB0aGF0IHRoaXMgaXMg
YSB3ZWFrIHBvaW50ZXIgdXNlZCBmb3IgdmFsaWRhdGlvbiBwdXJwb3NlcyBvbmx5LAorICAgIC8v
IGFuZCBzaG91bGQgbmV2ZXIgYmUgYXJiaXRyYXJpbHkgZGVyZWZlcmVuY2VkIHdpdGhvdXQga25v
d2luZyB0aGUgY29udGV4dCBzdGlsbCBleGlzdHMgYXMgaXQKKyAgICAvLyBjYW4gYmVjb21lIGRh
bmdsaW5nIGF0IGFueSB0aW1lLgorICAgIGdsOjpDb250ZXh0ICptQ29udGV4dDsKKwogICAgIC8v
IEVHTCBkZWZpbmVkIGF0dHJpYnV0ZXMKICAgICBFR0xpbnQgbVN0YXRlOwogICAgIEVHTHVpbnQ2
NEtIUiBtUHJvZHVjZXJGcmFtZTsKQEAgLTUzLDYgKzExOCwyNCBAQAogCiAgICAgLy8gRUdMIGds
dGV4dHVyZSBjb25zdW1lciBhdHRyaWJ1dGVzCiAgICAgRUdMaW50IG1Db25zdW1lckFjcXVpcmVU
aW1lb3V0OworCisgICAgLy8gRUdMIGdsdGV4dHVyZSB5dXYgY29uc3VtZXIgYXR0cmlidXRlcwor
ICAgIEVHTGludCBtUGxhbmVDb3VudDsKKyAgICBzdHJ1Y3QgUGxhbmVUZXh0dXJlCisgICAgewor
ICAgICAgICBFR0xpbnQgdGV4dHVyZVVuaXQ7CisgICAgICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJl
OworICAgIH07CisgICAgLy8gVGV4dHVyZSB1bml0cyBhbmQgdGV4dHVyZXMgZm9yIGFsbCB0aGUg
cGxhbmVzCisgICAgc3RkOjphcnJheTxQbGFuZVRleHR1cmUsIDM+IG1QbGFuZXM7CisKKyAgICAv
LyBDb25zdW1lciBhbmQgcHJvZHVjZXIgdHlwZXMKKyAgICBDb25zdW1lclR5cGUgbUNvbnN1bWVy
VHlwZTsKKyAgICBQcm9kdWNlclR5cGUgbVByb2R1Y2VyVHlwZTsKKworICAgIC8vIEFOR0xFLW9u
bHkgbWV0aG9kLCB1c2VkIGludGVybmFsbHkKKyAgICBmcmllbmQgY2xhc3MgZ2w6OlRleHR1cmU7
CisgICAgdm9pZCByZWxlYXNlVGV4dHVyZXMoKTsKIH07CiB9ICAvLyBuYW1lc3BhY2UgZWdsCiAK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TdXJmYWNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU3VyZmFj
ZS5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9TdXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAsMjQgKzEwLDI2IEBACiAK
ICNpbmNsdWRlICJsaWJBTkdMRS9TdXJmYWNlLmgiCiAKKyNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+
CisKKyNpbmNsdWRlIDxpb3N0cmVhbT4KKwogI2luY2x1ZGUgImxpYkFOR0xFL0NvbmZpZy5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvVGV4
dHVyZS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL2Zvcm1hdHV0aWxzLmgiCisjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvRUdMSW1wbEZhY3RvcnkuaCIKIAotI2luY2x1ZGUgPEVHTC9lZ2xleHQu
aD4KLQotI2luY2x1ZGUgPGlvc3RyZWFtPgotCiBuYW1lc3BhY2UgZWdsCiB7CiAKLVN1cmZhY2U6
OlN1cmZhY2Uocng6OlN1cmZhY2VJbXBsICppbXBsLAotICAgICAgICAgICAgICAgICBFR0xpbnQg
c3VyZmFjZVR5cGUsCi0gICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcs
Ci0gICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0cmlidXRlcykKK1N1cmZh
Y2VTdGF0ZTo6U3VyZmFjZVN0YXRlKCkgOiBkZWZhdWx0RnJhbWVidWZmZXIobnVsbHB0cikKK3sK
K30KKworU3VyZmFjZTo6U3VyZmFjZShFR0xpbnQgc3VyZmFjZVR5cGUsIGNvbnN0IGVnbDo6Q29u
ZmlnICpjb25maWcsIGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0cmlidXRlcykKICAgICA6IEZyYW1l
YnVmZmVyQXR0YWNobWVudE9iamVjdCgpLAotICAgICAgbUltcGxlbWVudGF0aW9uKGltcGwpLAot
ICAgICAgbURlZmF1bHRGcmFtZWJ1ZmZlcihudWxscHRyKSwKKyAgICAgIG1JbXBsZW1lbnRhdGlv
bihudWxscHRyKSwKICAgICAgIG1DdXJyZW50Q291bnQoMCksCiAgICAgICBtRGVzdHJveWVkKGZh
bHNlKSwKICAgICAgIG1UeXBlKHN1cmZhY2VUeXBlKSwKQEAgLTQxLDkgKzQzLDExIEBACiAgICAg
ICAvLyBGSVhNRTogRGV0ZXJtaW5lIGFjdHVhbCBwaXhlbCBhc3BlY3QgcmF0aW8KICAgICAgIG1Q
aXhlbEFzcGVjdFJhdGlvKHN0YXRpY19jYXN0PEVHTGludD4oMS4wICogRUdMX0RJU1BMQVlfU0NB
TElORykpLAogICAgICAgbVJlbmRlckJ1ZmZlcihFR0xfQkFDS19CVUZGRVIpLAotICAgICAgbVN3
YXBCZWhhdmlvcihpbXBsLT5nZXRTd2FwQmVoYXZpb3IoKSksCisgICAgICBtU3dhcEJlaGF2aW9y
KEVHTF9OT05FKSwKICAgICAgIG1PcmllbnRhdGlvbigwKSwKLSAgICAgIG1UZXh0dXJlKCkKKyAg
ICAgIG1UZXh0dXJlKCksCisgICAgICBtQmFja0Zvcm1hdChjb25maWctPnJlbmRlclRhcmdldEZv
cm1hdCksCisgICAgICBtRFNGb3JtYXQoY29uZmlnLT5kZXB0aFN0ZW5jaWxGb3JtYXQpCiB7CiAg
ICAgbVBvc3RTdWJCdWZmZXJSZXF1ZXN0ZWQgPSAoYXR0cmlidXRlcy5nZXQoRUdMX1BPU1RfU1VC
X0JVRkZFUl9TVVBQT1JURURfTlYsIEVHTF9GQUxTRSkgPT0gRUdMX1RSVUUpOwogICAgIG1GbGV4
aWJsZVN1cmZhY2VDb21wYXRpYmlsaXR5UmVxdWVzdGVkID0KQEAgLTY1LDkgKzY5LDYgQEAKICAg
ICB9CiAKICAgICBtT3JpZW50YXRpb24gPSBzdGF0aWNfY2FzdDxFR0xpbnQ+KGF0dHJpYnV0ZXMu
Z2V0KEVHTF9TVVJGQUNFX09SSUVOVEFUSU9OX0FOR0xFLCAwKSk7Ci0KLSAgICBtRGVmYXVsdEZy
YW1lYnVmZmVyID0gY3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKCk7Ci0gICAgQVNTRVJUKG1EZWZh
dWx0RnJhbWVidWZmZXIgIT0gbnVsbHB0cik7CiB9CiAKIFN1cmZhY2U6On5TdXJmYWNlKCkKQEAg
LTgyLDEwICs4MywyNSBAQAogICAgICAgICBtVGV4dHVyZS5zZXQobnVsbHB0cik7CiAgICAgfQog
Ci0gICAgU2FmZURlbGV0ZShtRGVmYXVsdEZyYW1lYnVmZmVyKTsKKyAgICBTYWZlRGVsZXRlKG1T
dGF0ZS5kZWZhdWx0RnJhbWVidWZmZXIpOwogICAgIFNhZmVEZWxldGUobUltcGxlbWVudGF0aW9u
KTsKIH0KIAorRXJyb3IgU3VyZmFjZTo6aW5pdGlhbGl6ZSgpCit7CisgICAgQU5HTEVfVFJZKG1J
bXBsZW1lbnRhdGlvbi0+aW5pdGlhbGl6ZSgpKTsKKworICAgIC8vIEluaXRpYWxpemVkIGhlcmUg
c2luY2UgaW1wbCBpcyBudWxscHRyIGluIHRoZSBjb25zdHJ1Y3Rvci4KKyAgICAvLyBNdXN0IGhh
cHBlbiBhZnRlciBpbXBsZW1lbnRhdGlvbiBpbml0aWFsaXplIGZvciBBbmRyb2lkLgorICAgIG1T
d2FwQmVoYXZpb3IgPSBtSW1wbGVtZW50YXRpb24tPmdldFN3YXBCZWhhdmlvcigpOworCisgICAg
Ly8gTXVzdCBoYXBwZW4gYWZ0ZXIgaW1wbGVtZW50YXRpb24gaW5pdGlhbGl6ZSBmb3IgT1NYLgor
ICAgIG1TdGF0ZS5kZWZhdWx0RnJhbWVidWZmZXIgPSBjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIo
KTsKKyAgICBBU1NFUlQobVN0YXRlLmRlZmF1bHRGcmFtZWJ1ZmZlciAhPSBudWxscHRyKTsKKwor
ICAgIHJldHVybiBFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKIHZvaWQgU3VyZmFjZTo6c2V0SXND
dXJyZW50KGJvb2wgaXNDdXJyZW50KQogewogICAgIGlmIChpc0N1cnJlbnQpCkBAIC0yMDUsNiAr
MjIxLDExIEBACiAgICAgcmV0dXJuIG1JbXBsZW1lbnRhdGlvbi0+cmVsZWFzZVRleEltYWdlKGJ1
ZmZlcik7CiB9CiAKK0Vycm9yIFN1cmZhY2U6OmdldFN5bmNWYWx1ZXMoRUdMdWludDY0S0hSICp1
c3QsIEVHTHVpbnQ2NEtIUiAqbXNjLCBFR0x1aW50NjRLSFIgKnNiYykKK3sKKyAgICByZXR1cm4g
bUltcGxlbWVudGF0aW9uLT5nZXRTeW5jVmFsdWVzKHVzdCwgbXNjLCBzYmMpOworfQorCiB2b2lk
IFN1cmZhY2U6OnJlbGVhc2VUZXhJbWFnZUZyb21UZXh0dXJlKCkKIHsKICAgICBBU1NFUlQobVRl
eHR1cmUuZ2V0KCkpOwpAQCAtMjE2LDEwICsyMzcsMTAgQEAKICAgICByZXR1cm4gZ2w6OkV4dGVu
dHMoZ2V0V2lkdGgoKSwgZ2V0SGVpZ2h0KCksIDEpOwogfQogCi1HTGVudW0gU3VyZmFjZTo6Z2V0
QXR0YWNobWVudEludGVybmFsRm9ybWF0KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6
OlRhcmdldCAmdGFyZ2V0KSBjb25zdAorY29uc3QgZ2w6OkZvcm1hdCAmU3VyZmFjZTo6Z2V0QXR0
YWNobWVudEZvcm1hdCgKKyAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50OjpUYXJn
ZXQgJnRhcmdldCkgY29uc3QKIHsKLSAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnID0gZ2V0
Q29uZmlnKCk7Ci0gICAgcmV0dXJuICh0YXJnZXQuYmluZGluZygpID09IEdMX0JBQ0sgPyBjb25m
aWctPnJlbmRlclRhcmdldEZvcm1hdCA6IGNvbmZpZy0+ZGVwdGhTdGVuY2lsRm9ybWF0KTsKKyAg
ICByZXR1cm4gKHRhcmdldC5iaW5kaW5nKCkgPT0gR0xfQkFDSyA/IG1CYWNrRm9ybWF0IDogbURT
Rm9ybWF0KTsKIH0KIAogR0xzaXplaSBTdXJmYWNlOjpnZXRBdHRhY2htZW50U2FtcGxlcyhjb25z
dCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50OjpUYXJnZXQgJnRhcmdldCkgY29uc3QKQEAgLTI1
OCw0ICsyNzksNTMgQEAKIAogICAgIHJldHVybiBmcmFtZWJ1ZmZlcjsKIH0KKworV2luZG93U3Vy
ZmFjZTo6V2luZG93U3VyZmFjZShyeDo6RUdMSW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJzKQor
ICAgIDogU3VyZmFjZShFR0xfV0lORE9XX0JJVCwgY29uZmlnLCBhdHRyaWJzKQoreworICAgIG1J
bXBsZW1lbnRhdGlvbiA9IGltcGxGYWN0b3J5LT5jcmVhdGVXaW5kb3dTdXJmYWNlKG1TdGF0ZSwg
Y29uZmlnLCB3aW5kb3csIGF0dHJpYnMpOwogfQorCitXaW5kb3dTdXJmYWNlOjp+V2luZG93U3Vy
ZmFjZSgpCit7Cit9CisKK1BidWZmZXJTdXJmYWNlOjpQYnVmZmVyU3VyZmFjZShyeDo6RUdMSW1w
bEZhY3RvcnkgKmltcGxGYWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IENvbmZpZyAqY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEF0dHJpYnV0ZU1hcCAmYXR0cmlicykKKyAgICA6IFN1cmZhY2UoRUdMX1BCVUZGRVJfQklULCBj
b25maWcsIGF0dHJpYnMpCit7CisgICAgbUltcGxlbWVudGF0aW9uID0gaW1wbEZhY3RvcnktPmNy
ZWF0ZVBidWZmZXJTdXJmYWNlKG1TdGF0ZSwgY29uZmlnLCBhdHRyaWJzKTsKK30KKworUGJ1ZmZl
clN1cmZhY2U6OlBidWZmZXJTdXJmYWNlKHJ4OjpFR0xJbXBsRmFjdG9yeSAqaW1wbEZhY3Rvcnks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29uZmlnICpjb25maWcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIHNoYXJlSGFuZGxl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0
cmlicykKKyAgICA6IFN1cmZhY2UoRUdMX1BCVUZGRVJfQklULCBjb25maWcsIGF0dHJpYnMpCit7
CisgICAgbUltcGxlbWVudGF0aW9uID0KKyAgICAgICAgaW1wbEZhY3RvcnktPmNyZWF0ZVBidWZm
ZXJGcm9tQ2xpZW50QnVmZmVyKG1TdGF0ZSwgY29uZmlnLCBzaGFyZUhhbmRsZSwgYXR0cmlicyk7
Cit9CisKK1BidWZmZXJTdXJmYWNlOjp+UGJ1ZmZlclN1cmZhY2UoKQoreworfQorCitQaXhtYXBT
dXJmYWNlOjpQaXhtYXBTdXJmYWNlKHJ4OjpFR0xJbXBsRmFjdG9yeSAqaW1wbEZhY3RvcnksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbmZpZyAqY29uZmlnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOYXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJzKQor
ICAgIDogU3VyZmFjZShFR0xfUElYTUFQX0JJVCwgY29uZmlnLCBhdHRyaWJzKQoreworICAgIG1J
bXBsZW1lbnRhdGlvbiA9IGltcGxGYWN0b3J5LT5jcmVhdGVQaXhtYXBTdXJmYWNlKG1TdGF0ZSwg
Y29uZmlnLCBuYXRpdmVQaXhtYXAsIGF0dHJpYnMpOworfQorCitQaXhtYXBTdXJmYWNlOjp+UGl4
bWFwU3VyZmFjZSgpCit7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBlZ2wKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TdXJmYWNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1N1cmZhY2UuaAkocmV2aXNpb24gMjA4
MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1N1cmZhY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgImxpYkFOR0xFL0Vycm9y
LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRnJhbWVidWZmZXJBdHRhY2htZW50LmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvUmVmQ291bnRPYmplY3QuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1
dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1N1cmZhY2VJbXBsLmgiCiAKIG5h
bWVzcGFjZSBnbApAQCAtMjUsNiArMjYsMTEgQEAKIGNsYXNzIFRleHR1cmU7CiB9CiAKK25hbWVz
cGFjZSByeAoreworY2xhc3MgRUdMSW1wbEZhY3Rvcnk7Cit9CisKIG5hbWVzcGFjZSBlZ2wKIHsK
IGNsYXNzIEF0dHJpYnV0ZU1hcDsKQEAgLTMxLDE2ICszNywyMyBAQAogY2xhc3MgRGlzcGxheTsK
IHN0cnVjdCBDb25maWc7CiAKLWNsYXNzIFN1cmZhY2UgZmluYWwgOiBwdWJsaWMgZ2w6OkZyYW1l
YnVmZmVyQXR0YWNobWVudE9iamVjdAorc3RydWN0IFN1cmZhY2VTdGF0ZSBmaW5hbCA6IGFuZ2xl
OjpOb25Db3B5YWJsZQogeworICAgIFN1cmZhY2VTdGF0ZSgpOworCisgICAgZ2w6OkZyYW1lYnVm
ZmVyICpkZWZhdWx0RnJhbWVidWZmZXI7Cit9OworCitjbGFzcyBTdXJmYWNlIDogcHVibGljIGds
OjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3QKK3sKICAgcHVibGljOgotICAgIFN1cmZhY2Uo
cng6OlN1cmZhY2VJbXBsICppbXBsLCBFR0xpbnQgc3VyZmFjZVR5cGUsIGNvbnN0IGVnbDo6Q29u
ZmlnICpjb25maWcsIGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0cmlidXRlcyk7CisgICAgdmlydHVh
bCB+U3VyZmFjZSgpOwogCi0gICAgcng6OlN1cmZhY2VJbXBsICpnZXRJbXBsZW1lbnRhdGlvbigp
IHsgcmV0dXJuIG1JbXBsZW1lbnRhdGlvbjsgfQotICAgIGNvbnN0IHJ4OjpTdXJmYWNlSW1wbCAq
Z2V0SW1wbGVtZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtSW1wbGVtZW50YXRpb247IH0KKyAg
ICByeDo6U3VyZmFjZUltcGwgKmdldEltcGxlbWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbUlt
cGxlbWVudGF0aW9uOyB9CiAKICAgICBFR0xpbnQgZ2V0VHlwZSgpIGNvbnN0OwogCisgICAgRXJy
b3IgaW5pdGlhbGl6ZSgpOwogICAgIEVycm9yIHN3YXAoKTsKICAgICBFcnJvciBwb3N0U3ViQnVm
ZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KTsKICAg
ICBFcnJvciBxdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUoRUdMaW50IGF0dHJpYnV0ZSwgdm9pZCAq
KnZhbHVlKTsKQEAgLTQ3LDYgKzYwLDggQEAKICAgICBFcnJvciBiaW5kVGV4SW1hZ2UoZ2w6OlRl
eHR1cmUgKnRleHR1cmUsIEVHTGludCBidWZmZXIpOwogICAgIEVycm9yIHJlbGVhc2VUZXhJbWFn
ZShFR0xpbnQgYnVmZmVyKTsKIAorICAgIEVycm9yIGdldFN5bmNWYWx1ZXMoRUdMdWludDY0S0hS
ICp1c3QsIEVHTHVpbnQ2NEtIUiAqbXNjLCBFR0x1aW50NjRLSFIgKnNiYyk7CisKICAgICBFR0xp
bnQgaXNQb3N0U3ViQnVmZmVyU3VwcG9ydGVkKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldFN3YXBJ
bnRlcnZhbChFR0xpbnQgaW50ZXJ2YWwpOwpAQCAtNjUsMTMgKzgwLDE0IEBACiAgICAgRUdMZW51
bSBnZXRUZXh0dXJlVGFyZ2V0KCkgY29uc3Q7CiAKICAgICBnbDo6VGV4dHVyZSAqZ2V0Qm91bmRU
ZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbVRleHR1cmUuZ2V0KCk7IH0KLSAgICBnbDo6RnJhbWVi
dWZmZXIgKmdldERlZmF1bHRGcmFtZWJ1ZmZlcigpIHsgcmV0dXJuIG1EZWZhdWx0RnJhbWVidWZm
ZXI7IH0KKyAgICBnbDo6RnJhbWVidWZmZXIgKmdldERlZmF1bHRGcmFtZWJ1ZmZlcigpIHsgcmV0
dXJuIG1TdGF0ZS5kZWZhdWx0RnJhbWVidWZmZXI7IH0KIAogICAgIEVHTGludCBpc0ZpeGVkU2l6
ZSgpIGNvbnN0OwogCiAgICAgLy8gRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0IGltcGxlbWVu
dGF0aW9uCiAgICAgZ2w6OkV4dGVudHMgZ2V0QXR0YWNobWVudFNpemUoY29uc3QgZ2w6OkZyYW1l
YnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQpIGNvbnN0IG92ZXJyaWRlOwotICAgIEdM
ZW51bSBnZXRBdHRhY2htZW50SW50ZXJuYWxGb3JtYXQoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0
YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IGdsOjpG
b3JtYXQgJmdldEF0dGFjaG1lbnRGb3JtYXQoCisgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnQ6OlRhcmdldCAmdGFyZ2V0KSBjb25zdCBvdmVycmlkZTsKICAgICBHTHNpemVp
IGdldEF0dGFjaG1lbnRTYW1wbGVzKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OlRh
cmdldCAmdGFyZ2V0KSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgb25BdHRhY2goKSBvdmVy
cmlkZSB7fQpAQCAtODYsOCArMTAyLDggQEAKIAogICAgIGJvb2wgZGlyZWN0Q29tcG9zaXRpb24o
KSBjb25zdCB7IHJldHVybiBtRGlyZWN0Q29tcG9zaXRpb247IH0KIAotICBwcml2YXRlOgotICAg
IHZpcnR1YWwgflN1cmZhY2UoKTsKKyAgcHJvdGVjdGVkOgorICAgIFN1cmZhY2UoRUdMaW50IHN1
cmZhY2VUeXBlLCBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLCBjb25zdCBBdHRyaWJ1dGVNYXAg
JmF0dHJpYnV0ZXMpOwogICAgIHJ4OjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3RJbXBsICpn
ZXRBdHRhY2htZW50SW1wbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1JbXBsZW1lbnRhdGlv
bjsgfQogCiAgICAgZ2w6OkZyYW1lYnVmZmVyICpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoKTsK
QEAgLTk2LDggKzExMiw4IEBACiAgICAgZnJpZW5kIGNsYXNzIGdsOjpUZXh0dXJlOwogICAgIHZv
aWQgcmVsZWFzZVRleEltYWdlRnJvbVRleHR1cmUoKTsKIAorICAgIFN1cmZhY2VTdGF0ZSBtU3Rh
dGU7CiAgICAgcng6OlN1cmZhY2VJbXBsICptSW1wbGVtZW50YXRpb247Ci0gICAgZ2w6OkZyYW1l
YnVmZmVyICptRGVmYXVsdEZyYW1lYnVmZmVyOwogICAgIGludCBtQ3VycmVudENvdW50OwogICAg
IGJvb2wgbURlc3Ryb3llZDsKIApAQCAtMTI0LDggKzE0MCw0NCBAQAogICAgIEVHTGludCBtT3Jp
ZW50YXRpb247CiAKICAgICBCaW5kaW5nUG9pbnRlcjxnbDo6VGV4dHVyZT4gbVRleHR1cmU7CisK
KyAgICBnbDo6Rm9ybWF0IG1CYWNrRm9ybWF0OworICAgIGdsOjpGb3JtYXQgbURTRm9ybWF0Owog
fTsKIAotfQorY2xhc3MgV2luZG93U3VyZmFjZSBmaW5hbCA6IHB1YmxpYyBTdXJmYWNlCit7Cisg
IHB1YmxpYzoKKyAgICBXaW5kb3dTdXJmYWNlKHJ4OjpFR0xJbXBsRmFjdG9yeSAqaW1wbEZhY3Rv
cnksCisgICAgICAgICAgICAgICAgICBjb25zdCBDb25maWcgKmNvbmZpZywKKyAgICAgICAgICAg
ICAgICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LAorICAgICAgICAgICAgICAgICAgY29u
c3QgQXR0cmlidXRlTWFwICZhdHRyaWJzKTsKKyAgICB+V2luZG93U3VyZmFjZSgpIG92ZXJyaWRl
OworfTsKIAorY2xhc3MgUGJ1ZmZlclN1cmZhY2UgZmluYWwgOiBwdWJsaWMgU3VyZmFjZQorewor
ICBwdWJsaWM6CisgICAgUGJ1ZmZlclN1cmZhY2Uocng6OkVHTEltcGxGYWN0b3J5ICppbXBsRmFj
dG9yeSwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBDb25maWcgKmNvbmZpZywKKyAgICAgICAg
ICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpOworICAgIFBidWZmZXJTdXJm
YWNlKHJ4OjpFR0xJbXBsRmFjdG9yeSAqaW1wbEZhY3RvcnksCisgICAgICAgICAgICAgICAgICAg
Y29uc3QgQ29uZmlnICpjb25maWcsCisgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVy
IHNoYXJlSGFuZGxlLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0
cmlicyk7CisgICAgflBidWZmZXJTdXJmYWNlKCkgb3ZlcnJpZGU7Cit9OworCitjbGFzcyBQaXht
YXBTdXJmYWNlIGZpbmFsIDogcHVibGljIFN1cmZhY2UKK3sKKyAgcHVibGljOgorICAgIFBpeG1h
cFN1cmZhY2Uocng6OkVHTEltcGxGYWN0b3J5ICppbXBsRmFjdG9yeSwKKyAgICAgICAgICAgICAg
ICAgIGNvbnN0IENvbmZpZyAqY29uZmlnLAorICAgICAgICAgICAgICAgICAgTmF0aXZlUGl4bWFw
VHlwZSBuYXRpdmVQaXhtYXAsCisgICAgICAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGVNYXAg
JmF0dHJpYnMpOworICAgIH5QaXhtYXBTdXJmYWNlKCkgb3ZlcnJpZGU7Cit9OworCit9ICAvLyBu
YW1lc3BhY2UgZWdsCisKICNlbmRpZiAgIC8vIExJQkFOR0xFX1NVUkZBQ0VfSF8KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TdXJmYWNlX3VuaXR0ZXN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU3VyZmFj
ZV91bml0dGVzdC5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9TdXJmYWNlX3VuaXR0ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OSwxMyArOSwxNSBAQAogI2luY2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMuaCIKICNpbmNsdWRl
ICJsaWJBTkdMRS9BdHRyaWJ1dGVNYXAuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Db25maWcuaCIK
LSNpbmNsdWRlICJsaWJBTkdMRS9EYXRhLmgiCisjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dFN0
YXRlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvU3RhdGUuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9T
dXJmYWNlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvRnJhbWVidWZmZXJJbXBsX21v
Y2suaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9TdXJmYWNlSW1wbC5oIgorI2luY2x1
ZGUgInRlc3RzL2FuZ2xlX3VuaXR0ZXN0c191dGlscy5oIgogCiB1c2luZyBuYW1lc3BhY2Ugcng7
Cit1c2luZyBuYW1lc3BhY2UgdGVzdGluZzsKIAogbmFtZXNwYWNlCiB7CkBAIC0yMywxNiArMjUs
MTcgQEAKIGNsYXNzIE1vY2tTdXJmYWNlSW1wbCA6IHB1YmxpYyByeDo6U3VyZmFjZUltcGwKIHsK
ICAgcHVibGljOgorICAgIE1vY2tTdXJmYWNlSW1wbCgpIDogU3VyZmFjZUltcGwobW9ja1N0YXRl
KSB7fQogICAgIHZpcnR1YWwgfk1vY2tTdXJmYWNlSW1wbCgpIHsgZGVzdHJveSgpOyB9CiAKICAg
ICBNT0NLX01FVEhPRDAoaW5pdGlhbGl6ZSwgZWdsOjpFcnJvcigpKTsKLSAgICBNT0NLX01FVEhP
RDEoY3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyLAotICAgICAgICAgICAgICAgICByeDo6RnJhbWVi
dWZmZXJJbXBsICooY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEYXRhICZkYXRhKSk7CisgICAgTU9D
S19NRVRIT0QxKGNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlciwgcng6OkZyYW1lYnVmZmVySW1wbCAq
KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZkYXRhKSk7CiAgICAgTU9DS19NRVRIT0QwKHN3
YXAsIGVnbDo6RXJyb3IoKSk7CiAgICAgTU9DS19NRVRIT0Q0KHBvc3RTdWJCdWZmZXIsIGVnbDo6
RXJyb3IoRUdMaW50LCBFR0xpbnQsIEVHTGludCwgRUdMaW50KSk7CiAgICAgTU9DS19NRVRIT0Qy
KHF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRSwgZWdsOjpFcnJvcihFR0xpbnQsIHZvaWQqKikpOwog
ICAgIE1PQ0tfTUVUSE9EMihiaW5kVGV4SW1hZ2UsIGVnbDo6RXJyb3IoZ2w6OlRleHR1cmUqLCBF
R0xpbnQpKTsKICAgICBNT0NLX01FVEhPRDEocmVsZWFzZVRleEltYWdlLCBlZ2w6OkVycm9yKEVH
TGludCkpOworICAgIE1PQ0tfTUVUSE9EMyhnZXRTeW5jVmFsdWVzLCBlZ2w6OkVycm9yKEVHTHVp
bnQ2NEtIUiAqLCBFR0x1aW50NjRLSFIgKiwgRUdMdWludDY0S0hSICopKTsKICAgICBNT0NLX01F
VEhPRDEoc2V0U3dhcEludGVydmFsLCB2b2lkKEVHTGludCkpOwogICAgIE1PQ0tfQ09OU1RfTUVU
SE9EMChnZXRXaWR0aCwgRUdMaW50KCkpOwogICAgIE1PQ0tfQ09OU1RfTUVUSE9EMChnZXRIZWln
aHQsIEVHTGludCgpKTsKQEAgLTQxLDIwICs0NCwyMSBAQAogICAgIE1PQ0tfTUVUSE9EMihnZXRB
dHRhY2htZW50UmVuZGVyVGFyZ2V0LCBnbDo6RXJyb3IoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0
YWNobWVudDo6VGFyZ2V0ICYsIHJ4OjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQg
KiopKTsKIAogICAgIE1PQ0tfTUVUSE9EMChkZXN0cm95LCB2b2lkKCkpOworCisgICAgZWdsOjpT
dXJmYWNlU3RhdGUgbW9ja1N0YXRlOwogfTsKIAogVEVTVChTdXJmYWNlVGVzdCwgRGVzdHJ1Y3Rp
b25EZWxldGVzSW1wbCkKIHsKLSAgICBNb2NrRnJhbWVidWZmZXJJbXBsICpmcmFtZWJ1ZmZlciA9
IG5ldyBNb2NrRnJhbWVidWZmZXJJbXBsOworICAgIE5pY2VNb2NrPE1vY2tFR0xGYWN0b3J5PiBm
YWN0b3J5OwogCiAgICAgTW9ja1N1cmZhY2VJbXBsICppbXBsID0gbmV3IE1vY2tTdXJmYWNlSW1w
bDsKLSAgICBFWFBFQ1RfQ0FMTCgqaW1wbCwgZ2V0U3dhcEJlaGF2aW9yKCkpOwotICAgIEVYUEVD
VF9DQUxMKCppbXBsLCBjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIodGVzdGluZzo6XykpLldpbGxP
bmNlKHRlc3Rpbmc6OlJldHVybihmcmFtZWJ1ZmZlcikpOworICAgIEVYUEVDVF9DQUxMKGZhY3Rv
cnksIGNyZWF0ZVdpbmRvd1N1cmZhY2UoXywgXywgXywgXykpLldpbGxPbmNlKFJldHVybihpbXBs
KSk7CiAKICAgICBlZ2w6OkNvbmZpZyBjb25maWc7Ci0gICAgZWdsOjpTdXJmYWNlICpzdXJmYWNl
ID0gbmV3IGVnbDo6U3VyZmFjZShpbXBsLCBFR0xfV0lORE9XX0JJVCwgJmNvbmZpZywgZWdsOjpB
dHRyaWJ1dGVNYXAoKSk7CisgICAgZWdsOjpTdXJmYWNlICpzdXJmYWNlID0gbmV3IGVnbDo6V2lu
ZG93U3VyZmFjZSgKKyAgICAgICAgJmZhY3RvcnksICZjb25maWcsIHN0YXRpY19jYXN0PEVHTE5h
dGl2ZVdpbmRvd1R5cGU+KDApLCBlZ2w6OkF0dHJpYnV0ZU1hcCgpKTsKIAotICAgIEVYUEVDVF9D
QUxMKCpmcmFtZWJ1ZmZlciwgZGVzdHJveSgpKS5UaW1lcygxKS5SZXRpcmVzT25TYXR1cmF0aW9u
KCk7CiAgICAgRVhQRUNUX0NBTEwoKmltcGwsIGRlc3Ryb3koKSkuVGltZXMoMSkuUmV0aXJlc09u
U2F0dXJhdGlvbigpOwogCiAgICAgc3VyZmFjZS0+b25EZXN0cm95KCk7CkBAIC02Miw3ICs2Niw3
IEBACiAgICAgLy8gT25seSBuZWVkZWQgYmVjYXVzZSB0aGUgbW9jayBpcyBsZWFrZWQgaWYgYnVn
cyBhcmUgcHJlc2VudCwKICAgICAvLyB3aGljaCBsb2dzIGFuIGVycm9yLCBidXQgZG9lcyBub3Qg
Y2F1c2UgdGhlIHRlc3QgdG8gZmFpbC4KICAgICAvLyBPcmRpbmFyaWx5IG1vY2tzIGFyZSB2ZXJp
ZmllZCB3aGVuIGRlc3Ryb3llZC4KLSAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhcihp
bXBsKTsKKyAgICBNb2NrOjpWZXJpZnlBbmRDbGVhcihpbXBsKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9UZXh0dXJlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVGV4
dHVyZS5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9UZXh0dXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIsMTQgKzEyLDMyIEBA
CiAjaW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0NvbmZp
Zy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHQuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9E
YXRhLmgiCisjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dFN0YXRlLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvSW1hZ2UuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9TdXJmYWNlLmgiCiAjaW5jbHVkZSAi
bGliQU5HTEUvZm9ybWF0dXRpbHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9HTElt
cGxGYWN0b3J5LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvVGV4dHVyZUltcGwuaCIK
IAogbmFtZXNwYWNlIGdsCiB7CiAKK25hbWVzcGFjZQoreworYm9vbCBJc1BvaW50U2FtcGxlZChj
b25zdCBnbDo6U2FtcGxlclN0YXRlICZzYW1wbGVyU3RhdGUpCit7CisgICAgcmV0dXJuIChzYW1w
bGVyU3RhdGUubWFnRmlsdGVyID09IEdMX05FQVJFU1QgJiYKKyAgICAgICAgICAgIChzYW1wbGVy
U3RhdGUubWluRmlsdGVyID09IEdMX05FQVJFU1QgfHwKKyAgICAgICAgICAgICBzYW1wbGVyU3Rh
dGUubWluRmlsdGVyID09IEdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QpKTsKK30KKworc2l6ZV90
IEdldEltYWdlRGVzY0luZGV4KEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCkKK3sKKyAgICBy
ZXR1cm4gSXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpID8gKChsZXZlbCAqIDYpICsgQ3Vi
ZU1hcFRleHR1cmVUYXJnZXRUb0xheWVySW5kZXgodGFyZ2V0KSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogbGV2ZWw7Cit9Cit9ICAvLyBuYW1lc3BhY2UKKwog
Ym9vbCBJc01pcG1hcEZpbHRlcmVkKGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJnNhbXBsZXJTdGF0
ZSkKIHsKICAgICBzd2l0Y2ggKHNhbXBsZXJTdGF0ZS5taW5GaWx0ZXIpCkBAIC0zNywyNSArNTUs
NDQ2IEBACiAgICAgfQogfQogCi1ib29sIElzUG9pbnRTYW1wbGVkKGNvbnN0IGdsOjpTYW1wbGVy
U3RhdGUgJnNhbXBsZXJTdGF0ZSkKK1N3aXp6bGVTdGF0ZTo6U3dpenpsZVN0YXRlKCkKKyAgICA6
IHN3aXp6bGVSZWQoR0xfSU5WQUxJRF9JTkRFWCksCisgICAgICBzd2l6emxlR3JlZW4oR0xfSU5W
QUxJRF9JTkRFWCksCisgICAgICBzd2l6emxlQmx1ZShHTF9JTlZBTElEX0lOREVYKSwKKyAgICAg
IHN3aXp6bGVBbHBoYShHTF9JTlZBTElEX0lOREVYKQogewotICAgIHJldHVybiAoc2FtcGxlclN0
YXRlLm1hZ0ZpbHRlciA9PSBHTF9ORUFSRVNUICYmIChzYW1wbGVyU3RhdGUubWluRmlsdGVyID09
IEdMX05FQVJFU1QgfHwgc2FtcGxlclN0YXRlLm1pbkZpbHRlciA9PSBHTF9ORUFSRVNUX01JUE1B
UF9ORUFSRVNUKSk7CiB9CiAKLXN0YXRpYyBzaXplX3QgR2V0SW1hZ2VEZXNjSW5kZXgoR0xlbnVt
IHRhcmdldCwgc2l6ZV90IGxldmVsKQorU3dpenpsZVN0YXRlOjpTd2l6emxlU3RhdGUoR0xlbnVt
IHJlZCwgR0xlbnVtIGdyZWVuLCBHTGVudW0gYmx1ZSwgR0xlbnVtIGFscGhhKQorICAgIDogc3dp
enpsZVJlZChyZWQpLCBzd2l6emxlR3JlZW4oZ3JlZW4pLCBzd2l6emxlQmx1ZShibHVlKSwgc3dp
enpsZUFscGhhKGFscGhhKQogewotICAgIHJldHVybiBJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRh
cmdldCkgPyAoKGxldmVsICogNikgKyBDdWJlTWFwVGV4dHVyZVRhcmdldFRvTGF5ZXJJbmRleCh0
YXJnZXQpKSA6IGxldmVsOwogfQogCi1UZXh0dXJlOjpUZXh0dXJlKHJ4OjpUZXh0dXJlSW1wbCAq
aW1wbCwgR0x1aW50IGlkLCBHTGVudW0gdGFyZ2V0KQorYm9vbCBTd2l6emxlU3RhdGU6OnN3aXp6
bGVSZXF1aXJlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN3aXp6bGVSZWQgIT0gR0xfUkVEIHx8
IHN3aXp6bGVHcmVlbiAhPSBHTF9HUkVFTiB8fCBzd2l6emxlQmx1ZSAhPSBHTF9CTFVFIHx8Cisg
ICAgICAgICAgIHN3aXp6bGVBbHBoYSAhPSBHTF9BTFBIQTsKK30KKworYm9vbCBTd2l6emxlU3Rh
dGU6Om9wZXJhdG9yPT0oY29uc3QgU3dpenpsZVN0YXRlICZvdGhlcikgY29uc3QKK3sKKyAgICBy
ZXR1cm4gc3dpenpsZVJlZCA9PSBvdGhlci5zd2l6emxlUmVkICYmIHN3aXp6bGVHcmVlbiA9PSBv
dGhlci5zd2l6emxlR3JlZW4gJiYKKyAgICAgICAgICAgc3dpenpsZUJsdWUgPT0gb3RoZXIuc3dp
enpsZUJsdWUgJiYgc3dpenpsZUFscGhhID09IG90aGVyLnN3aXp6bGVBbHBoYTsKK30KKworYm9v
bCBTd2l6emxlU3RhdGU6Om9wZXJhdG9yIT0oY29uc3QgU3dpenpsZVN0YXRlICZvdGhlcikgY29u
c3QKK3sKKyAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Cit9CisKK1RleHR1cmVTdGF0ZTo6
VGV4dHVyZVN0YXRlKEdMZW51bSB0YXJnZXQpCisgICAgOiBtVGFyZ2V0KHRhcmdldCksCisgICAg
ICBtU3dpenpsZVN0YXRlKEdMX1JFRCwgR0xfR1JFRU4sIEdMX0JMVUUsIEdMX0FMUEhBKSwKKyAg
ICAgIG1TYW1wbGVyU3RhdGUoU2FtcGxlclN0YXRlOjpDcmVhdGVEZWZhdWx0Rm9yVGFyZ2V0KHRh
cmdldCkpLAorICAgICAgbUJhc2VMZXZlbCgwKSwKKyAgICAgIG1NYXhMZXZlbCgxMDAwKSwKKyAg
ICAgIG1JbW11dGFibGVGb3JtYXQoZmFsc2UpLAorICAgICAgbUltbXV0YWJsZUxldmVscygwKSwK
KyAgICAgIG1Vc2FnZShHTF9OT05FKSwKKyAgICAgIG1JbWFnZURlc2NzKChJTVBMRU1FTlRBVElP
Tl9NQVhfVEVYVFVSRV9MRVZFTFMgKyAxKSAqCisgICAgICAgICAgICAgICAgICAodGFyZ2V0ID09
IEdMX1RFWFRVUkVfQ1VCRV9NQVAgPyA2IDogMSkpLAorICAgICAgbUNvbXBsZXRlbmVzc0NhY2hl
KCkKK3sKK30KKworYm9vbCBUZXh0dXJlU3RhdGU6OnN3aXp6bGVSZXF1aXJlZCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1Td2l6emxlU3RhdGUuc3dpenpsZVJlcXVpcmVkKCk7Cit9CisKK0dMdWlu
dCBUZXh0dXJlU3RhdGU6OmdldEVmZmVjdGl2ZUJhc2VMZXZlbCgpIGNvbnN0Cit7CisgICAgaWYg
KG1JbW11dGFibGVGb3JtYXQpCisgICAgeworICAgICAgICAvLyBHTEVTIDMuMC40IHNlY3Rpb24g
My44LjEwCisgICAgICAgIHJldHVybiBzdGQ6Om1pbihtQmFzZUxldmVsLCBtSW1tdXRhYmxlTGV2
ZWxzIC0gMSk7CisgICAgfQorICAgIC8vIFNvbWUgY2xhc3NlcyB1c2UgdGhlIGVmZmVjdGl2ZSBi
YXNlIGxldmVsIHRvIGluZGV4IGFycmF5cyB3aXRoIGxldmVsIGRhdGEuIEJ5IGNsYW1waW5nIHRo
ZQorICAgIC8vIGVmZmVjdGl2ZSBiYXNlIGxldmVsIHRvIG1heCBsZXZlbHMgdGhlc2UgYXJyYXlz
IG5lZWQganVzdCBvbmUgZXh0cmEgaXRlbSB0byBzdG9yZSBwcm9wZXJ0aWVzCisgICAgLy8gdGhh
dCBzaG91bGQgYmUgcmV0dXJuZWQgZm9yIGFsbCBvdXQtb2YtcmFuZ2UgYmFzZSBsZXZlbCB2YWx1
ZXMsIGluc3RlYWQgb2YgbmVlZGluZyBzcGVjaWFsCisgICAgLy8gaGFuZGxpbmcgZm9yIG91dC1v
Zi1yYW5nZSBiYXNlIGxldmVscy4KKyAgICByZXR1cm4gc3RkOjptaW4obUJhc2VMZXZlbCwgc3Rh
dGljX2Nhc3Q8R0x1aW50PihnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTKSk7
Cit9CisKK0dMdWludCBUZXh0dXJlU3RhdGU6OmdldEVmZmVjdGl2ZU1heExldmVsKCkgY29uc3QK
K3sKKyAgICBpZiAobUltbXV0YWJsZUZvcm1hdCkKKyAgICB7CisgICAgICAgIC8vIEdMRVMgMy4w
LjQgc2VjdGlvbiAzLjguMTAKKyAgICAgICAgR0x1aW50IGNsYW1wZWRNYXhMZXZlbCA9IHN0ZDo6
bWF4KG1NYXhMZXZlbCwgZ2V0RWZmZWN0aXZlQmFzZUxldmVsKCkpOworICAgICAgICBjbGFtcGVk
TWF4TGV2ZWwgICAgICAgID0gc3RkOjptaW4oY2xhbXBlZE1heExldmVsLCBtSW1tdXRhYmxlTGV2
ZWxzIC0gMSk7CisgICAgICAgIHJldHVybiBjbGFtcGVkTWF4TGV2ZWw7CisgICAgfQorICAgIHJl
dHVybiBtTWF4TGV2ZWw7Cit9CisKK0dMdWludCBUZXh0dXJlU3RhdGU6OmdldE1pcG1hcE1heExl
dmVsKCkgY29uc3QKK3sKKyAgICBjb25zdCBJbWFnZURlc2MgJmJhc2VJbWFnZURlc2MgPSBnZXRJ
bWFnZURlc2MoZ2V0QmFzZUltYWdlVGFyZ2V0KCksIGdldEVmZmVjdGl2ZUJhc2VMZXZlbCgpKTsK
KyAgICBHTHVpbnQgZXhwZWN0ZWRNaXBMZXZlbHMgPSAwOworICAgIGlmIChtVGFyZ2V0ID09IEdM
X1RFWFRVUkVfM0QpCisgICAgeworICAgICAgICBjb25zdCBpbnQgbWF4RGltID0gc3RkOjptYXgo
c3RkOjptYXgoYmFzZUltYWdlRGVzYy5zaXplLndpZHRoLCBiYXNlSW1hZ2VEZXNjLnNpemUuaGVp
Z2h0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VJbWFnZURlc2Mu
c2l6ZS5kZXB0aCk7CisgICAgICAgIGV4cGVjdGVkTWlwTGV2ZWxzID0gc3RhdGljX2Nhc3Q8R0x1
aW50Pihsb2cyKG1heERpbSkpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBleHBl
Y3RlZE1pcExldmVscyA9IHN0YXRpY19jYXN0PEdMdWludD4oCisgICAgICAgICAgICBsb2cyKHN0
ZDo6bWF4KGJhc2VJbWFnZURlc2Muc2l6ZS53aWR0aCwgYmFzZUltYWdlRGVzYy5zaXplLmhlaWdo
dCkpKTsKKyAgICB9CisKKyAgICByZXR1cm4gc3RkOjptaW48R0x1aW50PihnZXRFZmZlY3RpdmVC
YXNlTGV2ZWwoKSArIGV4cGVjdGVkTWlwTGV2ZWxzLCBnZXRFZmZlY3RpdmVNYXhMZXZlbCgpKTsK
K30KKworYm9vbCBUZXh0dXJlU3RhdGU6OnNldEJhc2VMZXZlbChHTHVpbnQgYmFzZUxldmVsKQor
eworICAgIGlmIChtQmFzZUxldmVsICE9IGJhc2VMZXZlbCkKKyAgICB7CisgICAgICAgIG1CYXNl
TGV2ZWwgICAgICAgICAgICAgICAgICAgID0gYmFzZUxldmVsOworICAgICAgICBtQ29tcGxldGVu
ZXNzQ2FjaGUuY2FjaGVWYWxpZCA9IGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFRleHR1cmVTdGF0ZTo6c2V0TWF4TGV2ZWwo
R0x1aW50IG1heExldmVsKQoreworICAgIGlmIChtTWF4TGV2ZWwgIT0gbWF4TGV2ZWwpCisgICAg
eworICAgICAgICBtTWF4TGV2ZWwgICAgICAgICAgICAgICAgICAgICA9IG1heExldmVsOworICAg
ICAgICBtQ29tcGxldGVuZXNzQ2FjaGUuY2FjaGVWYWxpZCA9IGZhbHNlOworICAgIH0KK30KKwor
Ly8gVGVzdHMgZm9yIGN1YmUgdGV4dHVyZSBjb21wbGV0ZW5lc3MuIFtPcGVuR0wgRVMgMi4wLjI0
XSBzZWN0aW9uIDMuNy4xMCBwYWdlIDgxLgorYm9vbCBUZXh0dXJlU3RhdGU6OmlzQ3ViZUNvbXBs
ZXRlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobVRhcmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQ
KTsKKworICAgIGNvbnN0IEltYWdlRGVzYyAmYmFzZUltYWdlRGVzYyA9IGdldEltYWdlRGVzYyhG
aXJzdEN1YmVNYXBUZXh0dXJlVGFyZ2V0LCAwKTsKKyAgICBpZiAoYmFzZUltYWdlRGVzYy5zaXpl
LndpZHRoID09IDAgfHwgYmFzZUltYWdlRGVzYy5zaXplLndpZHRoICE9IGJhc2VJbWFnZURlc2Mu
c2l6ZS5oZWlnaHQpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
Zm9yIChHTGVudW0gZmFjZSA9IEZpcnN0Q3ViZU1hcFRleHR1cmVUYXJnZXQgKyAxOyBmYWNlIDw9
IExhc3RDdWJlTWFwVGV4dHVyZVRhcmdldDsgZmFjZSsrKQorICAgIHsKKyAgICAgICAgY29uc3Qg
SW1hZ2VEZXNjICZmYWNlSW1hZ2VEZXNjID0gZ2V0SW1hZ2VEZXNjKGZhY2UsIDApOworICAgICAg
ICBpZiAoZmFjZUltYWdlRGVzYy5zaXplLndpZHRoICE9IGJhc2VJbWFnZURlc2Muc2l6ZS53aWR0
aCB8fAorICAgICAgICAgICAgZmFjZUltYWdlRGVzYy5zaXplLmhlaWdodCAhPSBiYXNlSW1hZ2VE
ZXNjLnNpemUuaGVpZ2h0IHx8CisgICAgICAgICAgICAhRm9ybWF0OjpTYW1lU2l6ZWQoZmFjZUlt
YWdlRGVzYy5mb3JtYXQsIGJhc2VJbWFnZURlc2MuZm9ybWF0KSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgVGV4dHVyZVN0YXRlOjppc1NhbXBsZXJDb21wbGV0ZShjb25zdCBTYW1wbGVy
U3RhdGUgJnNhbXBsZXJTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBDb250ZXh0U3RhdGUgJmRhdGEpIGNvbnN0Cit7CisgICAgY29uc3QgSW1hZ2VEZXNj
ICZiYXNlSW1hZ2VEZXNjID0gZ2V0SW1hZ2VEZXNjKGdldEJhc2VJbWFnZVRhcmdldCgpLCBnZXRF
ZmZlY3RpdmVCYXNlTGV2ZWwoKSk7CisgICAgY29uc3QgVGV4dHVyZUNhcHMgJnRleHR1cmVDYXBz
ID0gZGF0YS5nZXRUZXh0dXJlQ2FwKGJhc2VJbWFnZURlc2MuZm9ybWF0LmFzU2l6ZWQoKSk7Cisg
ICAgaWYgKCFtQ29tcGxldGVuZXNzQ2FjaGUuY2FjaGVWYWxpZCB8fCBtQ29tcGxldGVuZXNzQ2Fj
aGUuc2FtcGxlclN0YXRlICE9IHNhbXBsZXJTdGF0ZSB8fAorICAgICAgICBtQ29tcGxldGVuZXNz
Q2FjaGUuZmlsdGVyYWJsZSAhPSB0ZXh0dXJlQ2Fwcy5maWx0ZXJhYmxlIHx8CisgICAgICAgIG1D
b21wbGV0ZW5lc3NDYWNoZS5jbGllbnRWZXJzaW9uICE9IGRhdGEuZ2V0Q2xpZW50TWFqb3JWZXJz
aW9uKCkgfHwKKyAgICAgICAgbUNvbXBsZXRlbmVzc0NhY2hlLnN1cHBvcnRzTlBPVCAhPSBkYXRh
LmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlTlBPVCkKKyAgICB7CisgICAgICAgIG1Db21wbGV0ZW5l
c3NDYWNoZS5jYWNoZVZhbGlkICAgICAgPSB0cnVlOworICAgICAgICBtQ29tcGxldGVuZXNzQ2Fj
aGUuc2FtcGxlclN0YXRlICAgID0gc2FtcGxlclN0YXRlOworICAgICAgICBtQ29tcGxldGVuZXNz
Q2FjaGUuZmlsdGVyYWJsZSAgICAgID0gdGV4dHVyZUNhcHMuZmlsdGVyYWJsZTsKKyAgICAgICAg
bUNvbXBsZXRlbmVzc0NhY2hlLmNsaWVudFZlcnNpb24gICA9IGRhdGEuZ2V0Q2xpZW50TWFqb3JW
ZXJzaW9uKCk7CisgICAgICAgIG1Db21wbGV0ZW5lc3NDYWNoZS5zdXBwb3J0c05QT1QgICAgPSBk
YXRhLmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlTlBPVDsKKyAgICAgICAgbUNvbXBsZXRlbmVzc0Nh
Y2hlLnNhbXBsZXJDb21wbGV0ZSA9IGNvbXB1dGVTYW1wbGVyQ29tcGxldGVuZXNzKHNhbXBsZXJT
dGF0ZSwgZGF0YSk7CisgICAgfQorICAgIHJldHVybiBtQ29tcGxldGVuZXNzQ2FjaGUuc2FtcGxl
ckNvbXBsZXRlOworfQorCitib29sIFRleHR1cmVTdGF0ZTo6Y29tcHV0ZVNhbXBsZXJDb21wbGV0
ZW5lc3MoY29uc3QgU2FtcGxlclN0YXRlICZzYW1wbGVyU3RhdGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29udGV4dFN0YXRlICZkYXRhKSBj
b25zdAoreworICAgIGlmIChtQmFzZUxldmVsID4gbU1heExldmVsKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBjb25zdCBJbWFnZURlc2MgJmJhc2VJbWFnZURlc2Mg
PSBnZXRJbWFnZURlc2MoZ2V0QmFzZUltYWdlVGFyZ2V0KCksIGdldEVmZmVjdGl2ZUJhc2VMZXZl
bCgpKTsKKyAgICBpZiAoYmFzZUltYWdlRGVzYy5zaXplLndpZHRoID09IDAgfHwgYmFzZUltYWdl
RGVzYy5zaXplLmhlaWdodCA9PSAwIHx8CisgICAgICAgIGJhc2VJbWFnZURlc2Muc2l6ZS5kZXB0
aCA9PSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAvLyBUaGUg
Y2FzZXMgd2hlcmUgdGhlIHRleHR1cmUgaXMgaW5jb21wbGV0ZSBiZWNhdXNlIGJhc2UgbGV2ZWwg
aXMgb3V0IG9mIHJhbmdlIHNob3VsZCBiZQorICAgIC8vIGhhbmRsZWQgYnkgdGhlIGFib3ZlIGNv
bmRpdGlvbi4KKyAgICBBU1NFUlQobUJhc2VMZXZlbCA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhf
VEVYVFVSRV9MRVZFTFMgfHwgbUltbXV0YWJsZUZvcm1hdCk7CisKKyAgICBpZiAobVRhcmdldCA9
PSBHTF9URVhUVVJFX0NVQkVfTUFQICYmIGJhc2VJbWFnZURlc2Muc2l6ZS53aWR0aCAhPSBiYXNl
SW1hZ2VEZXNjLnNpemUuaGVpZ2h0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIGNvbnN0IFRleHR1cmVDYXBzICZ0ZXh0dXJlQ2FwcyA9IGRhdGEuZ2V0VGV4dHVy
ZUNhcChiYXNlSW1hZ2VEZXNjLmZvcm1hdC5hc1NpemVkKCkpOworICAgIGlmICghdGV4dHVyZUNh
cHMuZmlsdGVyYWJsZSAmJiAhSXNQb2ludFNhbXBsZWQoc2FtcGxlclN0YXRlKSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgYm9vbCBucG90U3VwcG9ydCA9IGRhdGEu
Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVOUE9UIHx8IGRhdGEuZ2V0Q2xpZW50TWFqb3JWZXJzaW9u
KCkgPj0gMzsKKyAgICBpZiAoIW5wb3RTdXBwb3J0KQorICAgIHsKKyAgICAgICAgaWYgKChzYW1w
bGVyU3RhdGUud3JhcFMgIT0gR0xfQ0xBTVBfVE9fRURHRSAmJiAhZ2w6OmlzUG93MihiYXNlSW1h
Z2VEZXNjLnNpemUud2lkdGgpKSB8fAorICAgICAgICAgICAgKHNhbXBsZXJTdGF0ZS53cmFwVCAh
PSBHTF9DTEFNUF9UT19FREdFICYmICFnbDo6aXNQb3cyKGJhc2VJbWFnZURlc2Muc2l6ZS5oZWln
aHQpKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgfQorCisgICAgaWYgKElzTWlwbWFwRmlsdGVyZWQoc2FtcGxlclN0YXRlKSkKKyAgICB7Cisg
ICAgICAgIGlmICghbnBvdFN1cHBvcnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghZ2w6
OmlzUG93MihiYXNlSW1hZ2VEZXNjLnNpemUud2lkdGgpIHx8ICFnbDo6aXNQb3cyKGJhc2VJbWFn
ZURlc2Muc2l6ZS5oZWlnaHQpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICghY29tcHV0
ZU1pcG1hcENvbXBsZXRlbmVzcygpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgaWYgKG1UYXJn
ZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01BUCAmJiAhaXNDdWJlQ29tcGxldGUoKSkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgLy8g
RnJvbSBHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vzc2wzOiBJZiBzdGF0ZSBpcyBwcmVzZW50
IGluIGEgc2FtcGxlciBvYmplY3QgYm91bmQgdG8gYQorICAgIC8vIHRleHR1cmUgdW5pdCB0aGF0
IHdvdWxkIGhhdmUgYmVlbiByZWplY3RlZCBieSBhIGNhbGwgdG8gVGV4UGFyYW1ldGVyKiBmb3Ig
dGhlIHRleHR1cmUgYm91bmQKKyAgICAvLyB0byB0aGF0IHVuaXQsIHRoZSBiZWhhdmlvciBvZiB0
aGUgaW1wbGVtZW50YXRpb24gaXMgYXMgaWYgdGhlIHRleHR1cmUgd2VyZSBpbmNvbXBsZXRlLiBG
b3IKKyAgICAvLyBleGFtcGxlLCBpZiBURVhUVVJFX1dSQVBfUyBvciBURVhUVVJFX1dSQVBfVCBp
cyBzZXQgdG8gYW55dGhpbmcgYnV0IENMQU1QX1RPX0VER0Ugb24gdGhlCisgICAgLy8gc2FtcGxl
ciBvYmplY3QgYm91bmQgdG8gYSB0ZXh0dXJlIHVuaXQgYW5kIHRoZSB0ZXh0dXJlIGJvdW5kIHRv
IHRoYXQgdW5pdCBpcyBhbiBleHRlcm5hbAorICAgIC8vIHRleHR1cmUsIHRoZSB0ZXh0dXJlIHdp
bGwgYmUgY29uc2lkZXJlZCBpbmNvbXBsZXRlLgorICAgIC8vIFNhbXBsZXIgb2JqZWN0IHN0YXRl
IHdoaWNoIGRvZXMgbm90IGFmZmVjdCBzYW1wbGluZyBmb3IgdGhlIHR5cGUgb2YgdGV4dHVyZSBi
b3VuZCB0byBhCisgICAgLy8gdGV4dHVyZSB1bml0LCBzdWNoIGFzIFRFWFRVUkVfV1JBUF9SIGZv
ciBhbiBleHRlcm5hbCB0ZXh0dXJlLCBkb2VzIG5vdCBhZmZlY3QgY29tcGxldGVuZXNzLgorICAg
IGlmIChtVGFyZ2V0ID09IEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTKQorICAgIHsKKyAgICAgICAg
aWYgKHNhbXBsZXJTdGF0ZS53cmFwUyAhPSBHTF9DTEFNUF9UT19FREdFIHx8IHNhbXBsZXJTdGF0
ZS53cmFwVCAhPSBHTF9DTEFNUF9UT19FREdFKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2FtcGxlclN0YXRlLm1pbkZpbHRl
ciAhPSBHTF9MSU5FQVIgJiYgc2FtcGxlclN0YXRlLm1pbkZpbHRlciAhPSBHTF9ORUFSRVNUKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICAvLyBPcGVuR0xFUyAzLjAuMiBzcGVjIHNlY3Rpb24gMy44LjEzIHN0YXRlcyB0aGF0IGEg
dGV4dHVyZSBpcyBub3QgbWlwbWFwIGNvbXBsZXRlIGlmOgorICAgIC8vIFRoZSBpbnRlcm5hbGZv
cm1hdCBzcGVjaWZpZWQgZm9yIHRoZSB0ZXh0dXJlIGFycmF5cyBpcyBhIHNpemVkIGludGVybmFs
IGRlcHRoIG9yCisgICAgLy8gZGVwdGggYW5kIHN0ZW5jaWwgZm9ybWF0IChzZWUgdGFibGUgMy4x
MyksIHRoZSB2YWx1ZSBvZiBURVhUVVJFX0NPTVBBUkVfLQorICAgIC8vIE1PREUgaXMgTk9ORSwg
YW5kIGVpdGhlciB0aGUgbWFnbmlmaWNhdGlvbiBmaWx0ZXIgaXMgbm90IE5FQVJFU1Qgb3IgdGhl
IG1pbmktCisgICAgLy8gZmljYXRpb24gZmlsdGVyIGlzIG5laXRoZXIgTkVBUkVTVCBub3IgTkVB
UkVTVF9NSVBNQVBfTkVBUkVTVC4KKyAgICBpZiAoYmFzZUltYWdlRGVzYy5mb3JtYXQuaW5mby0+
ZGVwdGhCaXRzID4gMCAmJiBkYXRhLmdldENsaWVudE1ham9yVmVyc2lvbigpID49IDMpCisgICAg
eworICAgICAgICAvLyBOb3RlOiB3ZSByZXN0cmljdCB0aGlzIHZhbGlkYXRpb24gdG8gc2l6ZWQg
dHlwZXMuIEZvciB0aGUgT0VTX2RlcHRoX3RleHR1cmVzCisgICAgICAgIC8vIGV4dGVuc2lvbiwg
ZHVlIHRvIHNvbWUgdW5kZXJzcGVjaWZpY2F0aW9uIHByb2JsZW1zLCB3ZSBtdXN0IGFsbG93IGxp
bmVhciBmaWx0ZXJpbmcKKyAgICAgICAgLy8gZm9yIGxlZ2FjeSBjb21wYXRpYmlsaXR5IHdpdGgg
V2ViR0wgMS4KKyAgICAgICAgLy8gU2VlIGh0dHA6Ly9jcmJ1Zy5jb20vNjQ5MjAwCisgICAgICAg
IGlmIChzYW1wbGVyU3RhdGUuY29tcGFyZU1vZGUgPT0gR0xfTk9ORSAmJiBiYXNlSW1hZ2VEZXNj
LmZvcm1hdC5zaXplZCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKChzYW1wbGVyU3RhdGUu
bWluRmlsdGVyICE9IEdMX05FQVJFU1QgJiYKKyAgICAgICAgICAgICAgICAgc2FtcGxlclN0YXRl
Lm1pbkZpbHRlciAhPSBHTF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUKSB8fAorICAgICAgICAgICAg
ICAgIHNhbXBsZXJTdGF0ZS5tYWdGaWx0ZXIgIT0gR0xfTkVBUkVTVCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBUZXh0dXJlU3RhdGU6OmNvbXB1
dGVNaXBtYXBDb21wbGV0ZW5lc3MoKSBjb25zdAoreworICAgIGNvbnN0IEdMdWludCBtYXhMZXZl
bCA9IGdldE1pcG1hcE1heExldmVsKCk7CisKKyAgICBmb3IgKEdMdWludCBsZXZlbCA9IGdldEVm
ZmVjdGl2ZUJhc2VMZXZlbCgpOyBsZXZlbCA8PSBtYXhMZXZlbDsgbGV2ZWwrKykKKyAgICB7Cisg
ICAgICAgIGlmIChtVGFyZ2V0ID09IEdMX1RFWFRVUkVfQ1VCRV9NQVApCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGZvciAoR0xlbnVtIGZhY2UgPSBGaXJzdEN1YmVNYXBUZXh0dXJlVGFyZ2V0OyBm
YWNlIDw9IExhc3RDdWJlTWFwVGV4dHVyZVRhcmdldDsgZmFjZSsrKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGlmICghY29tcHV0ZUxldmVsQ29tcGxldGVuZXNzKGZhY2UsIGxldmVs
KSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxz
ZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIWNvbXB1dGVMZXZlbENvbXBsZXRlbmVzcyht
VGFyZ2V0LCBsZXZlbCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgVGV4dHVyZVN0YXRlOjpjb21wdXRlTGV2ZWxDb21wbGV0ZW5lc3MoR0xlbnVt
IHRhcmdldCwgc2l6ZV90IGxldmVsKSBjb25zdAoreworICAgIEFTU0VSVChsZXZlbCA8IElNUExF
TUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUyk7CisKKyAgICBpZiAobUltbXV0YWJsZUZvcm1h
dCkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGNvbnN0IEltYWdl
RGVzYyAmYmFzZUltYWdlRGVzYyA9IGdldEltYWdlRGVzYyhnZXRCYXNlSW1hZ2VUYXJnZXQoKSwg
Z2V0RWZmZWN0aXZlQmFzZUxldmVsKCkpOworICAgIGlmIChiYXNlSW1hZ2VEZXNjLnNpemUud2lk
dGggPT0gMCB8fCBiYXNlSW1hZ2VEZXNjLnNpemUuaGVpZ2h0ID09IDAgfHwKKyAgICAgICAgYmFz
ZUltYWdlRGVzYy5zaXplLmRlcHRoID09IDApCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgY29uc3QgSW1hZ2VEZXNjICZsZXZlbEltYWdlRGVzYyA9IGdldEltYWdl
RGVzYyh0YXJnZXQsIGxldmVsKTsKKyAgICBpZiAobGV2ZWxJbWFnZURlc2Muc2l6ZS53aWR0aCA9
PSAwIHx8IGxldmVsSW1hZ2VEZXNjLnNpemUuaGVpZ2h0ID09IDAgfHwKKyAgICAgICAgbGV2ZWxJ
bWFnZURlc2Muc2l6ZS5kZXB0aCA9PSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGlmICghRm9ybWF0OjpTYW1lU2l6ZWQobGV2ZWxJbWFnZURlc2MuZm9ybWF0
LCBiYXNlSW1hZ2VEZXNjLmZvcm1hdCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgQVNTRVJUKGxldmVsID49IGdldEVmZmVjdGl2ZUJhc2VMZXZlbCgpKTsKKyAg
ICBjb25zdCBzaXplX3QgcmVsYXRpdmVMZXZlbCA9IGxldmVsIC0gZ2V0RWZmZWN0aXZlQmFzZUxl
dmVsKCk7CisgICAgaWYgKGxldmVsSW1hZ2VEZXNjLnNpemUud2lkdGggIT0gc3RkOjptYXgoMSwg
YmFzZUltYWdlRGVzYy5zaXplLndpZHRoID4+IHJlbGF0aXZlTGV2ZWwpKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChsZXZlbEltYWdlRGVzYy5zaXplLmhl
aWdodCAhPSBzdGQ6Om1heCgxLCBiYXNlSW1hZ2VEZXNjLnNpemUuaGVpZ2h0ID4+IHJlbGF0aXZl
TGV2ZWwpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICht
VGFyZ2V0ID09IEdMX1RFWFRVUkVfM0QpCisgICAgeworICAgICAgICBpZiAobGV2ZWxJbWFnZURl
c2Muc2l6ZS5kZXB0aCAhPSBzdGQ6Om1heCgxLCBiYXNlSW1hZ2VEZXNjLnNpemUuZGVwdGggPj4g
cmVsYXRpdmVMZXZlbCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChtVGFyZ2V0ID09IEdMX1RFWFRVUkVfMkRfQVJS
QVkpCisgICAgeworICAgICAgICBpZiAobGV2ZWxJbWFnZURlc2Muc2l6ZS5kZXB0aCAhPSBiYXNl
SW1hZ2VEZXNjLnNpemUuZGVwdGgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitHTGVudW0gVGV4
dHVyZVN0YXRlOjpnZXRCYXNlSW1hZ2VUYXJnZXQoKSBjb25zdAoreworICAgIHJldHVybiBtVGFy
Z2V0ID09IEdMX1RFWFRVUkVfQ1VCRV9NQVAgPyBGaXJzdEN1YmVNYXBUZXh0dXJlVGFyZ2V0IDog
bVRhcmdldDsKK30KKworSW1hZ2VEZXNjOjpJbWFnZURlc2MoKSA6IEltYWdlRGVzYyhFeHRlbnRz
KDAsIDAsIDApLCBGb3JtYXQ6OkludmFsaWQoKSkKK3sKK30KKworSW1hZ2VEZXNjOjpJbWFnZURl
c2MoY29uc3QgRXh0ZW50cyAmc2l6ZSwgY29uc3QgRm9ybWF0ICZmb3JtYXQpIDogc2l6ZShzaXpl
KSwgZm9ybWF0KGZvcm1hdCkKK3sKK30KKworY29uc3QgSW1hZ2VEZXNjICZUZXh0dXJlU3RhdGU6
OmdldEltYWdlRGVzYyhHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwpIGNvbnN0Cit7CisgICAg
c2l6ZV90IGRlc2NJbmRleCA9IEdldEltYWdlRGVzY0luZGV4KHRhcmdldCwgbGV2ZWwpOworICAg
IEFTU0VSVChkZXNjSW5kZXggPCBtSW1hZ2VEZXNjcy5zaXplKCkpOworICAgIHJldHVybiBtSW1h
Z2VEZXNjc1tkZXNjSW5kZXhdOworfQorCit2b2lkIFRleHR1cmVTdGF0ZTo6c2V0SW1hZ2VEZXNj
KEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgSW1hZ2VEZXNjICZkZXNjKQorewor
ICAgIHNpemVfdCBkZXNjSW5kZXggPSBHZXRJbWFnZURlc2NJbmRleCh0YXJnZXQsIGxldmVsKTsK
KyAgICBBU1NFUlQoZGVzY0luZGV4IDwgbUltYWdlRGVzY3Muc2l6ZSgpKTsKKyAgICBtSW1hZ2VE
ZXNjc1tkZXNjSW5kZXhdICAgICAgICA9IGRlc2M7CisgICAgbUNvbXBsZXRlbmVzc0NhY2hlLmNh
Y2hlVmFsaWQgPSBmYWxzZTsKK30KKwordm9pZCBUZXh0dXJlU3RhdGU6OnNldEltYWdlRGVzY0No
YWluKEdMdWludCBiYXNlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IG1heExldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEV4dGVudHMgYmFzZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgRm9ybWF0ICZmb3JtYXQpCit7CisgICAgZm9yIChHTHVpbnQgbGV2ZWwgPSBiYXNlTGV2
ZWw7IGxldmVsIDw9IG1heExldmVsOyBsZXZlbCsrKQorICAgIHsKKyAgICAgICAgaW50IHJlbGF0
aXZlTGV2ZWwgPSAobGV2ZWwgLSBiYXNlTGV2ZWwpOworICAgICAgICBFeHRlbnRzIGxldmVsU2l6
ZShzdGQ6Om1heDxpbnQ+KGJhc2VTaXplLndpZHRoID4+IHJlbGF0aXZlTGV2ZWwsIDEpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1heDxpbnQ+KGJhc2VTaXplLmhlaWdodCA+PiBy
ZWxhdGl2ZUxldmVsLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKG1UYXJnZXQgPT0g
R0xfVEVYVFVSRV8yRF9BUlJBWSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYmFz
ZVNpemUuZGVwdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc3RkOjptYXg8aW50
PihiYXNlU2l6ZS5kZXB0aCA+PiByZWxhdGl2ZUxldmVsLCAxKSk7CisgICAgICAgIEltYWdlRGVz
YyBsZXZlbEluZm8obGV2ZWxTaXplLCBmb3JtYXQpOworCisgICAgICAgIGlmIChtVGFyZ2V0ID09
IEdMX1RFWFRVUkVfQ1VCRV9NQVApCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoR0xlbnVt
IGZhY2UgPSBGaXJzdEN1YmVNYXBUZXh0dXJlVGFyZ2V0OyBmYWNlIDw9IExhc3RDdWJlTWFwVGV4
dHVyZVRhcmdldDsgZmFjZSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHNldElt
YWdlRGVzYyhmYWNlLCBsZXZlbCwgbGV2ZWxJbmZvKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHNldEltYWdlRGVzYyhtVGFy
Z2V0LCBsZXZlbCwgbGV2ZWxJbmZvKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBUZXh0
dXJlU3RhdGU6OmNsZWFySW1hZ2VEZXNjKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCkKK3sK
KyAgICBzZXRJbWFnZURlc2ModGFyZ2V0LCBsZXZlbCwgSW1hZ2VEZXNjKCkpOworfQorCit2b2lk
IFRleHR1cmVTdGF0ZTo6Y2xlYXJJbWFnZURlc2NzKCkKK3sKKyAgICBmb3IgKHNpemVfdCBkZXNj
SW5kZXggPSAwOyBkZXNjSW5kZXggPCBtSW1hZ2VEZXNjcy5zaXplKCk7IGRlc2NJbmRleCsrKQor
ICAgIHsKKyAgICAgICAgbUltYWdlRGVzY3NbZGVzY0luZGV4XSA9IEltYWdlRGVzYygpOworICAg
IH0KKyAgICBtQ29tcGxldGVuZXNzQ2FjaGUuY2FjaGVWYWxpZCA9IGZhbHNlOworfQorCitUZXh0
dXJlU3RhdGU6OlNhbXBsZXJDb21wbGV0ZW5lc3NDYWNoZTo6U2FtcGxlckNvbXBsZXRlbmVzc0Nh
Y2hlKCkKKyAgICA6IGNhY2hlVmFsaWQoZmFsc2UpLAorICAgICAgc2FtcGxlclN0YXRlKCksCisg
ICAgICBmaWx0ZXJhYmxlKGZhbHNlKSwKKyAgICAgIGNsaWVudFZlcnNpb24oMCksCisgICAgICBz
dXBwb3J0c05QT1QoZmFsc2UpLAorICAgICAgc2FtcGxlckNvbXBsZXRlKGZhbHNlKQoreworfQor
CitUZXh0dXJlOjpUZXh0dXJlKHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5LCBHTHVpbnQgaWQs
IEdMZW51bSB0YXJnZXQpCiAgICAgOiBlZ2w6OkltYWdlU2libGluZyhpZCksCi0gICAgICBtVGV4
dHVyZShpbXBsKSwKKyAgICAgIG1TdGF0ZSh0YXJnZXQpLAorICAgICAgbVRleHR1cmUoZmFjdG9y
eS0+Y3JlYXRlVGV4dHVyZShtU3RhdGUpKSwKICAgICAgIG1MYWJlbCgpLAotICAgICAgbVRleHR1
cmVTdGF0ZSgpLAotICAgICAgbVRhcmdldCh0YXJnZXQpLAotICAgICAgbUltYWdlRGVzY3MoSU1Q
TEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTICogKHRhcmdldCA9PSBHTF9URVhUVVJFX0NV
QkVfTUFQID8gNiA6IDEpKSwKLSAgICAgIG1Db21wbGV0ZW5lc3NDYWNoZSgpLAotICAgICAgbUJv
dW5kU3VyZmFjZShOVUxMKQorICAgICAgbUJvdW5kU3VyZmFjZShudWxscHRyKSwKKyAgICAgIG1C
b3VuZFN0cmVhbShudWxscHRyKQogewogfQogCkBAIC02NCw4ICs1MDMsMTMgQEAKICAgICBpZiAo
bUJvdW5kU3VyZmFjZSkKICAgICB7CiAgICAgICAgIG1Cb3VuZFN1cmZhY2UtPnJlbGVhc2VUZXhJ
bWFnZShFR0xfQkFDS19CVUZGRVIpOwotICAgICAgICBtQm91bmRTdXJmYWNlID0gTlVMTDsKKyAg
ICAgICAgbUJvdW5kU3VyZmFjZSA9IG51bGxwdHI7CiAgICAgfQorICAgIGlmIChtQm91bmRTdHJl
YW0pCisgICAgeworICAgICAgICBtQm91bmRTdHJlYW0tPnJlbGVhc2VUZXh0dXJlcygpOworICAg
ICAgICBtQm91bmRTdHJlYW0gPSBudWxscHRyOworICAgIH0KICAgICBTYWZlRGVsZXRlKG1UZXh0
dXJlKTsKIH0KIApAQCAtNzIsNiArNTE2LDcgQEAKIHZvaWQgVGV4dHVyZTo6c2V0TGFiZWwoY29u
c3Qgc3RkOjpzdHJpbmcgJmxhYmVsKQogewogICAgIG1MYWJlbCA9IGxhYmVsOworICAgIG1EaXJ0
eUJpdHMuc2V0KERJUlRZX0JJVF9MQUJFTCk7CiB9CiAKIGNvbnN0IHN0ZDo6c3RyaW5nICZUZXh0
dXJlOjpnZXRMYWJlbCgpIGNvbnN0CkBAIC04MSwyOTQgKzUyNiwyNjIgQEAKIAogR0xlbnVtIFRl
eHR1cmU6OmdldFRhcmdldCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1UYXJnZXQ7CisgICAgcmV0
dXJuIG1TdGF0ZS5tVGFyZ2V0OwogfQogCiB2b2lkIFRleHR1cmU6OnNldFN3aXp6bGVSZWQoR0xl
bnVtIHN3aXp6bGVSZWQpCiB7Ci0gICAgbVRleHR1cmVTdGF0ZS5zd2l6emxlUmVkID0gc3dpenps
ZVJlZDsKKyAgICBtU3RhdGUubVN3aXp6bGVTdGF0ZS5zd2l6emxlUmVkID0gc3dpenpsZVJlZDsK
KyAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfU1dJWlpMRV9SRUQpOwogfQogCiBHTGVudW0g
VGV4dHVyZTo6Z2V0U3dpenpsZVJlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1UZXh0dXJlU3Rh
dGUuc3dpenpsZVJlZDsKKyAgICByZXR1cm4gbVN0YXRlLm1Td2l6emxlU3RhdGUuc3dpenpsZVJl
ZDsKIH0KIAogdm9pZCBUZXh0dXJlOjpzZXRTd2l6emxlR3JlZW4oR0xlbnVtIHN3aXp6bGVHcmVl
bikKIHsKLSAgICBtVGV4dHVyZVN0YXRlLnN3aXp6bGVHcmVlbiA9IHN3aXp6bGVHcmVlbjsKKyAg
ICBtU3RhdGUubVN3aXp6bGVTdGF0ZS5zd2l6emxlR3JlZW4gPSBzd2l6emxlR3JlZW47CisgICAg
bURpcnR5Qml0cy5zZXQoRElSVFlfQklUX1NXSVpaTEVfR1JFRU4pOwogfQogCiBHTGVudW0gVGV4
dHVyZTo6Z2V0U3dpenpsZUdyZWVuKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbVRleHR1cmVTdGF0
ZS5zd2l6emxlR3JlZW47CisgICAgcmV0dXJuIG1TdGF0ZS5tU3dpenpsZVN0YXRlLnN3aXp6bGVH
cmVlbjsKIH0KIAogdm9pZCBUZXh0dXJlOjpzZXRTd2l6emxlQmx1ZShHTGVudW0gc3dpenpsZUJs
dWUpCiB7Ci0gICAgbVRleHR1cmVTdGF0ZS5zd2l6emxlQmx1ZSA9IHN3aXp6bGVCbHVlOworICAg
IG1TdGF0ZS5tU3dpenpsZVN0YXRlLnN3aXp6bGVCbHVlID0gc3dpenpsZUJsdWU7CisgICAgbURp
cnR5Qml0cy5zZXQoRElSVFlfQklUX1NXSVpaTEVfQkxVRSk7CiB9CiAKIEdMZW51bSBUZXh0dXJl
OjpnZXRTd2l6emxlQmx1ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1UZXh0dXJlU3RhdGUuc3dp
enpsZUJsdWU7CisgICAgcmV0dXJuIG1TdGF0ZS5tU3dpenpsZVN0YXRlLnN3aXp6bGVCbHVlOwog
fQogCiB2b2lkIFRleHR1cmU6OnNldFN3aXp6bGVBbHBoYShHTGVudW0gc3dpenpsZUFscGhhKQog
ewotICAgIG1UZXh0dXJlU3RhdGUuc3dpenpsZUFscGhhID0gc3dpenpsZUFscGhhOworICAgIG1T
dGF0ZS5tU3dpenpsZVN0YXRlLnN3aXp6bGVBbHBoYSA9IHN3aXp6bGVBbHBoYTsKKyAgICBtRGly
dHlCaXRzLnNldChESVJUWV9CSVRfU1dJWlpMRV9BTFBIQSk7CiB9CiAKIEdMZW51bSBUZXh0dXJl
OjpnZXRTd2l6emxlQWxwaGEoKSBjb25zdAogewotICAgIHJldHVybiBtVGV4dHVyZVN0YXRlLnN3
aXp6bGVBbHBoYTsKKyAgICByZXR1cm4gbVN0YXRlLm1Td2l6emxlU3RhdGUuc3dpenpsZUFscGhh
OwogfQogCiB2b2lkIFRleHR1cmU6OnNldE1pbkZpbHRlcihHTGVudW0gbWluRmlsdGVyKQogewot
ICAgIG1UZXh0dXJlU3RhdGUuc2FtcGxlclN0YXRlLm1pbkZpbHRlciA9IG1pbkZpbHRlcjsKKyAg
ICBtU3RhdGUubVNhbXBsZXJTdGF0ZS5taW5GaWx0ZXIgPSBtaW5GaWx0ZXI7CisgICAgbURpcnR5
Qml0cy5zZXQoRElSVFlfQklUX01JTl9GSUxURVIpOwogfQogCiBHTGVudW0gVGV4dHVyZTo6Z2V0
TWluRmlsdGVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbVRleHR1cmVTdGF0ZS5zYW1wbGVyU3Rh
dGUubWluRmlsdGVyOworICAgIHJldHVybiBtU3RhdGUubVNhbXBsZXJTdGF0ZS5taW5GaWx0ZXI7
CiB9CiAKIHZvaWQgVGV4dHVyZTo6c2V0TWFnRmlsdGVyKEdMZW51bSBtYWdGaWx0ZXIpCiB7Ci0g
ICAgbVRleHR1cmVTdGF0ZS5zYW1wbGVyU3RhdGUubWFnRmlsdGVyID0gbWFnRmlsdGVyOworICAg
IG1TdGF0ZS5tU2FtcGxlclN0YXRlLm1hZ0ZpbHRlciA9IG1hZ0ZpbHRlcjsKKyAgICBtRGlydHlC
aXRzLnNldChESVJUWV9CSVRfTUFHX0ZJTFRFUik7CiB9CiAKIEdMZW51bSBUZXh0dXJlOjpnZXRN
YWdGaWx0ZXIoKSBjb25zdAogewotICAgIHJldHVybiBtVGV4dHVyZVN0YXRlLnNhbXBsZXJTdGF0
ZS5tYWdGaWx0ZXI7CisgICAgcmV0dXJuIG1TdGF0ZS5tU2FtcGxlclN0YXRlLm1hZ0ZpbHRlcjsK
IH0KIAogdm9pZCBUZXh0dXJlOjpzZXRXcmFwUyhHTGVudW0gd3JhcFMpCiB7Ci0gICAgbVRleHR1
cmVTdGF0ZS5zYW1wbGVyU3RhdGUud3JhcFMgPSB3cmFwUzsKKyAgICBtU3RhdGUubVNhbXBsZXJT
dGF0ZS53cmFwUyA9IHdyYXBTOworICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9XUkFQX1Mp
OwogfQogCiBHTGVudW0gVGV4dHVyZTo6Z2V0V3JhcFMoKSBjb25zdAogewotICAgIHJldHVybiBt
VGV4dHVyZVN0YXRlLnNhbXBsZXJTdGF0ZS53cmFwUzsKKyAgICByZXR1cm4gbVN0YXRlLm1TYW1w
bGVyU3RhdGUud3JhcFM7CiB9CiAKIHZvaWQgVGV4dHVyZTo6c2V0V3JhcFQoR0xlbnVtIHdyYXBU
KQogewotICAgIG1UZXh0dXJlU3RhdGUuc2FtcGxlclN0YXRlLndyYXBUID0gd3JhcFQ7CisgICAg
bVN0YXRlLm1TYW1wbGVyU3RhdGUud3JhcFQgPSB3cmFwVDsKKyAgICBtRGlydHlCaXRzLnNldChE
SVJUWV9CSVRfV1JBUF9UKTsKIH0KIAogR0xlbnVtIFRleHR1cmU6OmdldFdyYXBUKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbVRleHR1cmVTdGF0ZS5zYW1wbGVyU3RhdGUud3JhcFQ7CisgICAgcmV0
dXJuIG1TdGF0ZS5tU2FtcGxlclN0YXRlLndyYXBUOwogfQogCiB2b2lkIFRleHR1cmU6OnNldFdy
YXBSKEdMZW51bSB3cmFwUikKIHsKLSAgICBtVGV4dHVyZVN0YXRlLnNhbXBsZXJTdGF0ZS53cmFw
UiA9IHdyYXBSOworICAgIG1TdGF0ZS5tU2FtcGxlclN0YXRlLndyYXBSID0gd3JhcFI7CisgICAg
bURpcnR5Qml0cy5zZXQoRElSVFlfQklUX1dSQVBfUik7CiB9CiAKIEdMZW51bSBUZXh0dXJlOjpn
ZXRXcmFwUigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1UZXh0dXJlU3RhdGUuc2FtcGxlclN0YXRl
LndyYXBSOworICAgIHJldHVybiBtU3RhdGUubVNhbXBsZXJTdGF0ZS53cmFwUjsKIH0KIAogdm9p
ZCBUZXh0dXJlOjpzZXRNYXhBbmlzb3Ryb3B5KGZsb2F0IG1heEFuaXNvdHJvcHkpCiB7Ci0gICAg
bVRleHR1cmVTdGF0ZS5zYW1wbGVyU3RhdGUubWF4QW5pc290cm9weSA9IG1heEFuaXNvdHJvcHk7
CisgICAgbVN0YXRlLm1TYW1wbGVyU3RhdGUubWF4QW5pc290cm9weSA9IG1heEFuaXNvdHJvcHk7
CisgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX01BWF9BTklTT1RST1BZKTsKIH0KIAogZmxv
YXQgVGV4dHVyZTo6Z2V0TWF4QW5pc290cm9weSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1UZXh0
dXJlU3RhdGUuc2FtcGxlclN0YXRlLm1heEFuaXNvdHJvcHk7CisgICAgcmV0dXJuIG1TdGF0ZS5t
U2FtcGxlclN0YXRlLm1heEFuaXNvdHJvcHk7CiB9CiAKIHZvaWQgVGV4dHVyZTo6c2V0TWluTG9k
KEdMZmxvYXQgbWluTG9kKQogewotICAgIG1UZXh0dXJlU3RhdGUuc2FtcGxlclN0YXRlLm1pbkxv
ZCA9IG1pbkxvZDsKKyAgICBtU3RhdGUubVNhbXBsZXJTdGF0ZS5taW5Mb2QgPSBtaW5Mb2Q7Cisg
ICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX01JTl9MT0QpOwogfQogCiBHTGZsb2F0IFRleHR1
cmU6OmdldE1pbkxvZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1UZXh0dXJlU3RhdGUuc2FtcGxl
clN0YXRlLm1pbkxvZDsKKyAgICByZXR1cm4gbVN0YXRlLm1TYW1wbGVyU3RhdGUubWluTG9kOwog
fQogCiB2b2lkIFRleHR1cmU6OnNldE1heExvZChHTGZsb2F0IG1heExvZCkKIHsKLSAgICBtVGV4
dHVyZVN0YXRlLnNhbXBsZXJTdGF0ZS5tYXhMb2QgPSBtYXhMb2Q7CisgICAgbVN0YXRlLm1TYW1w
bGVyU3RhdGUubWF4TG9kID0gbWF4TG9kOworICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9N
QVhfTE9EKTsKIH0KIAogR0xmbG9hdCBUZXh0dXJlOjpnZXRNYXhMb2QoKSBjb25zdAogewotICAg
IHJldHVybiBtVGV4dHVyZVN0YXRlLnNhbXBsZXJTdGF0ZS5tYXhMb2Q7CisgICAgcmV0dXJuIG1T
dGF0ZS5tU2FtcGxlclN0YXRlLm1heExvZDsKIH0KIAogdm9pZCBUZXh0dXJlOjpzZXRDb21wYXJl
TW9kZShHTGVudW0gY29tcGFyZU1vZGUpCiB7Ci0gICAgbVRleHR1cmVTdGF0ZS5zYW1wbGVyU3Rh
dGUuY29tcGFyZU1vZGUgPSBjb21wYXJlTW9kZTsKKyAgICBtU3RhdGUubVNhbXBsZXJTdGF0ZS5j
b21wYXJlTW9kZSA9IGNvbXBhcmVNb2RlOworICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9D
T01QQVJFX01PREUpOwogfQogCiBHTGVudW0gVGV4dHVyZTo6Z2V0Q29tcGFyZU1vZGUoKSBjb25z
dAogewotICAgIHJldHVybiBtVGV4dHVyZVN0YXRlLnNhbXBsZXJTdGF0ZS5jb21wYXJlTW9kZTsK
KyAgICByZXR1cm4gbVN0YXRlLm1TYW1wbGVyU3RhdGUuY29tcGFyZU1vZGU7CiB9CiAKIHZvaWQg
VGV4dHVyZTo6c2V0Q29tcGFyZUZ1bmMoR0xlbnVtIGNvbXBhcmVGdW5jKQogewotICAgIG1UZXh0
dXJlU3RhdGUuc2FtcGxlclN0YXRlLmNvbXBhcmVGdW5jID0gY29tcGFyZUZ1bmM7CisgICAgbVN0
YXRlLm1TYW1wbGVyU3RhdGUuY29tcGFyZUZ1bmMgPSBjb21wYXJlRnVuYzsKKyAgICBtRGlydHlC
aXRzLnNldChESVJUWV9CSVRfQ09NUEFSRV9GVU5DKTsKIH0KIAogR0xlbnVtIFRleHR1cmU6Omdl
dENvbXBhcmVGdW5jKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbVRleHR1cmVTdGF0ZS5zYW1wbGVy
U3RhdGUuY29tcGFyZUZ1bmM7CisgICAgcmV0dXJuIG1TdGF0ZS5tU2FtcGxlclN0YXRlLmNvbXBh
cmVGdW5jOwogfQogCiBjb25zdCBTYW1wbGVyU3RhdGUgJlRleHR1cmU6OmdldFNhbXBsZXJTdGF0
ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1UZXh0dXJlU3RhdGUuc2FtcGxlclN0YXRlOworICAg
IHJldHVybiBtU3RhdGUubVNhbXBsZXJTdGF0ZTsKIH0KIAogdm9pZCBUZXh0dXJlOjpzZXRCYXNl
TGV2ZWwoR0x1aW50IGJhc2VMZXZlbCkKIHsKLSAgICBtVGV4dHVyZVN0YXRlLmJhc2VMZXZlbCA9
IGJhc2VMZXZlbDsKKyAgICBpZiAobVN0YXRlLnNldEJhc2VMZXZlbChiYXNlTGV2ZWwpKQorICAg
IHsKKyAgICAgICAgbVRleHR1cmUtPnNldEJhc2VMZXZlbChtU3RhdGUuZ2V0RWZmZWN0aXZlQmFz
ZUxldmVsKCkpOworICAgICAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfQkFTRV9MRVZFTCk7
CisgICAgfQogfQogCiBHTHVpbnQgVGV4dHVyZTo6Z2V0QmFzZUxldmVsKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbVRleHR1cmVTdGF0ZS5iYXNlTGV2ZWw7CisgICAgcmV0dXJuIG1TdGF0ZS5tQmFz
ZUxldmVsOwogfQogCiB2b2lkIFRleHR1cmU6OnNldE1heExldmVsKEdMdWludCBtYXhMZXZlbCkK
IHsKLSAgICBtVGV4dHVyZVN0YXRlLm1heExldmVsID0gbWF4TGV2ZWw7CisgICAgbVN0YXRlLnNl
dE1heExldmVsKG1heExldmVsKTsKKyAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfTUFYX0xF
VkVMKTsKIH0KIAogR0x1aW50IFRleHR1cmU6OmdldE1heExldmVsKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbVRleHR1cmVTdGF0ZS5tYXhMZXZlbDsKKyAgICByZXR1cm4gbVN0YXRlLm1NYXhMZXZl
bDsKIH0KIAogYm9vbCBUZXh0dXJlOjpnZXRJbW11dGFibGVGb3JtYXQoKSBjb25zdAogewotICAg
IHJldHVybiBtVGV4dHVyZVN0YXRlLmltbXV0YWJsZUZvcm1hdDsKKyAgICByZXR1cm4gbVN0YXRl
Lm1JbW11dGFibGVGb3JtYXQ7CiB9CiAKIEdMdWludCBUZXh0dXJlOjpnZXRJbW11dGFibGVMZXZl
bHMoKSBjb25zdAogewotICAgIHJldHVybiBtVGV4dHVyZVN0YXRlLmltbXV0YWJsZUxldmVsczsK
KyAgICByZXR1cm4gbVN0YXRlLm1JbW11dGFibGVMZXZlbHM7CiB9CiAKIHZvaWQgVGV4dHVyZTo6
c2V0VXNhZ2UoR0xlbnVtIHVzYWdlKQogewotICAgIG1UZXh0dXJlU3RhdGUudXNhZ2UgPSB1c2Fn
ZTsKLSAgICBnZXRJbXBsZW1lbnRhdGlvbigpLT5zZXRVc2FnZSh1c2FnZSk7CisgICAgbVN0YXRl
Lm1Vc2FnZSA9IHVzYWdlOworICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9VU0FHRSk7CiB9
CiAKIEdMZW51bSBUZXh0dXJlOjpnZXRVc2FnZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1UZXh0
dXJlU3RhdGUudXNhZ2U7CisgICAgcmV0dXJuIG1TdGF0ZS5tVXNhZ2U7CiB9CiAKIGNvbnN0IFRl
eHR1cmVTdGF0ZSAmVGV4dHVyZTo6Z2V0VGV4dHVyZVN0YXRlKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbVRleHR1cmVTdGF0ZTsKKyAgICByZXR1cm4gbVN0YXRlOwogfQogCiBzaXplX3QgVGV4dHVy
ZTo6Z2V0V2lkdGgoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsKSBjb25zdAogewotICAgIEFT
U0VSVCh0YXJnZXQgPT0gbVRhcmdldCB8fCAobVRhcmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQ
ICYmIElzQ3ViZU1hcFRleHR1cmVUYXJnZXQodGFyZ2V0KSkpOwotICAgIHJldHVybiBnZXRJbWFn
ZURlc2ModGFyZ2V0LCBsZXZlbCkuc2l6ZS53aWR0aDsKKyAgICBBU1NFUlQodGFyZ2V0ID09IG1T
dGF0ZS5tVGFyZ2V0IHx8CisgICAgICAgICAgIChtU3RhdGUubVRhcmdldCA9PSBHTF9URVhUVVJF
X0NVQkVfTUFQICYmIElzQ3ViZU1hcFRleHR1cmVUYXJnZXQodGFyZ2V0KSkpOworICAgIHJldHVy
biBtU3RhdGUuZ2V0SW1hZ2VEZXNjKHRhcmdldCwgbGV2ZWwpLnNpemUud2lkdGg7CiB9CiAKIHNp
emVfdCBUZXh0dXJlOjpnZXRIZWlnaHQoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsKSBjb25z
dAogewotICAgIEFTU0VSVCh0YXJnZXQgPT0gbVRhcmdldCB8fCAobVRhcmdldCA9PSBHTF9URVhU
VVJFX0NVQkVfTUFQICYmIElzQ3ViZU1hcFRleHR1cmVUYXJnZXQodGFyZ2V0KSkpOwotICAgIHJl
dHVybiBnZXRJbWFnZURlc2ModGFyZ2V0LCBsZXZlbCkuc2l6ZS5oZWlnaHQ7CisgICAgQVNTRVJU
KHRhcmdldCA9PSBtU3RhdGUubVRhcmdldCB8fAorICAgICAgICAgICAobVN0YXRlLm1UYXJnZXQg
PT0gR0xfVEVYVFVSRV9DVUJFX01BUCAmJiBJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkp
KTsKKyAgICByZXR1cm4gbVN0YXRlLmdldEltYWdlRGVzYyh0YXJnZXQsIGxldmVsKS5zaXplLmhl
aWdodDsKIH0KIAogc2l6ZV90IFRleHR1cmU6OmdldERlcHRoKEdMZW51bSB0YXJnZXQsIHNpemVf
dCBsZXZlbCkgY29uc3QKIHsKLSAgICBBU1NFUlQodGFyZ2V0ID09IG1UYXJnZXQgfHwgKG1UYXJn
ZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01BUCAmJiBJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdl
dCkpKTsKLSAgICByZXR1cm4gZ2V0SW1hZ2VEZXNjKHRhcmdldCwgbGV2ZWwpLnNpemUuZGVwdGg7
CisgICAgQVNTRVJUKHRhcmdldCA9PSBtU3RhdGUubVRhcmdldCB8fAorICAgICAgICAgICAobVN0
YXRlLm1UYXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01BUCAmJiBJc0N1YmVNYXBUZXh0dXJlVGFy
Z2V0KHRhcmdldCkpKTsKKyAgICByZXR1cm4gbVN0YXRlLmdldEltYWdlRGVzYyh0YXJnZXQsIGxl
dmVsKS5zaXplLmRlcHRoOwogfQogCi1HTGVudW0gVGV4dHVyZTo6Z2V0SW50ZXJuYWxGb3JtYXQo
R0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsKSBjb25zdAorY29uc3QgRm9ybWF0ICZUZXh0dXJl
OjpnZXRGb3JtYXQoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsKSBjb25zdAogewotICAgIEFT
U0VSVCh0YXJnZXQgPT0gbVRhcmdldCB8fCAobVRhcmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQ
ICYmIElzQ3ViZU1hcFRleHR1cmVUYXJnZXQodGFyZ2V0KSkpOwotICAgIHJldHVybiBnZXRJbWFn
ZURlc2ModGFyZ2V0LCBsZXZlbCkuaW50ZXJuYWxGb3JtYXQ7CisgICAgQVNTRVJUKHRhcmdldCA9
PSBtU3RhdGUubVRhcmdldCB8fAorICAgICAgICAgICAobVN0YXRlLm1UYXJnZXQgPT0gR0xfVEVY
VFVSRV9DVUJFX01BUCAmJiBJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkpKTsKKyAgICBy
ZXR1cm4gbVN0YXRlLmdldEltYWdlRGVzYyh0YXJnZXQsIGxldmVsKS5mb3JtYXQ7CiB9CiAKLWJv
b2wgVGV4dHVyZTo6aXNTYW1wbGVyQ29tcGxldGUoY29uc3QgU2FtcGxlclN0YXRlICZzYW1wbGVy
U3RhdGUsIGNvbnN0IERhdGEgJmRhdGEpIGNvbnN0Ci17Ci0gICAgY29uc3QgSW1hZ2VEZXNjICZi
YXNlSW1hZ2VEZXNjID0gZ2V0SW1hZ2VEZXNjKGdldEJhc2VJbWFnZVRhcmdldCgpLCBtVGV4dHVy
ZVN0YXRlLmJhc2VMZXZlbCk7Ci0gICAgY29uc3QgVGV4dHVyZUNhcHMgJnRleHR1cmVDYXBzID0g
ZGF0YS50ZXh0dXJlQ2Fwcy0+Z2V0KGJhc2VJbWFnZURlc2MuaW50ZXJuYWxGb3JtYXQpOwotICAg
IGlmICghbUNvbXBsZXRlbmVzc0NhY2hlLmNhY2hlVmFsaWQgfHwKLSAgICAgICAgbUNvbXBsZXRl
bmVzc0NhY2hlLnNhbXBsZXJTdGF0ZSAhPSBzYW1wbGVyU3RhdGUgfHwKLSAgICAgICAgbUNvbXBs
ZXRlbmVzc0NhY2hlLmZpbHRlcmFibGUgIT0gdGV4dHVyZUNhcHMuZmlsdGVyYWJsZSB8fAotICAg
ICAgICBtQ29tcGxldGVuZXNzQ2FjaGUuY2xpZW50VmVyc2lvbiAhPSBkYXRhLmNsaWVudFZlcnNp
b24gfHwKLSAgICAgICAgbUNvbXBsZXRlbmVzc0NhY2hlLnN1cHBvcnRzTlBPVCAhPSBkYXRhLmV4
dGVuc2lvbnMtPnRleHR1cmVOUE9UKQotICAgIHsKLSAgICAgICAgbUNvbXBsZXRlbmVzc0NhY2hl
LmNhY2hlVmFsaWQgPSB0cnVlOwotICAgICAgICBtQ29tcGxldGVuZXNzQ2FjaGUuc2FtcGxlclN0
YXRlID0gc2FtcGxlclN0YXRlOwotICAgICAgICBtQ29tcGxldGVuZXNzQ2FjaGUuZmlsdGVyYWJs
ZSA9IHRleHR1cmVDYXBzLmZpbHRlcmFibGU7Ci0gICAgICAgIG1Db21wbGV0ZW5lc3NDYWNoZS5j
bGllbnRWZXJzaW9uID0gZGF0YS5jbGllbnRWZXJzaW9uOwotICAgICAgICBtQ29tcGxldGVuZXNz
Q2FjaGUuc3VwcG9ydHNOUE9UID0gZGF0YS5leHRlbnNpb25zLT50ZXh0dXJlTlBPVDsKLSAgICAg
ICAgbUNvbXBsZXRlbmVzc0NhY2hlLnNhbXBsZXJDb21wbGV0ZSA9IGNvbXB1dGVTYW1wbGVyQ29t
cGxldGVuZXNzKHNhbXBsZXJTdGF0ZSwgZGF0YSk7Ci0gICAgfQotICAgIHJldHVybiBtQ29tcGxl
dGVuZXNzQ2FjaGUuc2FtcGxlckNvbXBsZXRlOwotfQotCiBib29sIFRleHR1cmU6OmlzTWlwbWFw
Q29tcGxldGUoKSBjb25zdAogewotICAgIHJldHVybiBjb21wdXRlTWlwbWFwQ29tcGxldGVuZXNz
KCk7CisgICAgcmV0dXJuIG1TdGF0ZS5jb21wdXRlTWlwbWFwQ29tcGxldGVuZXNzKCk7CiB9CiAK
LS8vIFRlc3RzIGZvciBjdWJlIHRleHR1cmUgY29tcGxldGVuZXNzLiBbT3BlbkdMIEVTIDIuMC4y
NF0gc2VjdGlvbiAzLjcuMTAgcGFnZSA4MS4KLWJvb2wgVGV4dHVyZTo6aXNDdWJlQ29tcGxldGUo
KSBjb25zdAorZWdsOjpTdXJmYWNlICpUZXh0dXJlOjpnZXRCb3VuZFN1cmZhY2UoKSBjb25zdAog
ewotICAgIEFTU0VSVChtVGFyZ2V0ID09IEdMX1RFWFRVUkVfQ1VCRV9NQVApOwotCi0gICAgY29u
c3QgSW1hZ2VEZXNjICZiYXNlSW1hZ2VEZXNjID0gZ2V0SW1hZ2VEZXNjKEZpcnN0Q3ViZU1hcFRl
eHR1cmVUYXJnZXQsIDApOwotICAgIGlmIChiYXNlSW1hZ2VEZXNjLnNpemUud2lkdGggPT0gMCB8
fCBiYXNlSW1hZ2VEZXNjLnNpemUud2lkdGggIT0gYmFzZUltYWdlRGVzYy5zaXplLmhlaWdodCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBmb3IgKEdMZW51bSBm
YWNlID0gRmlyc3RDdWJlTWFwVGV4dHVyZVRhcmdldCArIDE7IGZhY2UgPD0gTGFzdEN1YmVNYXBU
ZXh0dXJlVGFyZ2V0OyBmYWNlKyspCi0gICAgewotICAgICAgICBjb25zdCBJbWFnZURlc2MgJmZh
Y2VJbWFnZURlc2MgPSBnZXRJbWFnZURlc2MoZmFjZSwgMCk7Ci0gICAgICAgIGlmIChmYWNlSW1h
Z2VEZXNjLnNpemUud2lkdGggIT0gYmFzZUltYWdlRGVzYy5zaXplLndpZHRoIHx8Ci0gICAgICAg
ICAgICBmYWNlSW1hZ2VEZXNjLnNpemUuaGVpZ2h0ICE9IGJhc2VJbWFnZURlc2Muc2l6ZS5oZWln
aHQgfHwKLSAgICAgICAgICAgIGZhY2VJbWFnZURlc2MuaW50ZXJuYWxGb3JtYXQgIT0gYmFzZUlt
YWdlRGVzYy5pbnRlcm5hbEZvcm1hdCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIG1C
b3VuZFN1cmZhY2U7CiB9CiAKLXNpemVfdCBUZXh0dXJlOjpnZXRNaXBDb21wbGV0ZUxldmVscygp
IGNvbnN0CitlZ2w6OlN0cmVhbSAqVGV4dHVyZTo6Z2V0Qm91bmRTdHJlYW0oKSBjb25zdAogewot
ICAgIGNvbnN0IEltYWdlRGVzYyAmYmFzZUltYWdlRGVzYyA9IGdldEltYWdlRGVzYyhnZXRCYXNl
SW1hZ2VUYXJnZXQoKSwgMCk7Ci0gICAgaWYgKG1UYXJnZXQgPT0gR0xfVEVYVFVSRV8zRCkKLSAg
ICB7Ci0gICAgICAgIGNvbnN0IGludCBtYXhEaW0gPSBzdGQ6Om1heChzdGQ6Om1heChiYXNlSW1h
Z2VEZXNjLnNpemUud2lkdGgsIGJhc2VJbWFnZURlc2Muc2l6ZS5oZWlnaHQpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZUltYWdlRGVzYy5zaXplLmRlcHRoKTsKLSAg
ICAgICAgcmV0dXJuIGxvZzIobWF4RGltKSArIDE7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBsb2cyKHN0ZDo6bWF4KGJhc2VJbWFnZURlc2Muc2l6ZS53aWR0aCwgYmFz
ZUltYWdlRGVzYy5zaXplLmhlaWdodCkpICsgMTsKLSAgICB9CisgICAgcmV0dXJuIG1Cb3VuZFN0
cmVhbTsKIH0KIAotZWdsOjpTdXJmYWNlICpUZXh0dXJlOjpnZXRCb3VuZFN1cmZhY2UoKSBjb25z
dAotewotICAgIHJldHVybiBtQm91bmRTdXJmYWNlOwotfQotCiBFcnJvciBUZXh0dXJlOjpzZXRJ
bWFnZShjb25zdCBQaXhlbFVucGFja1N0YXRlICZ1bnBhY2tTdGF0ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
bGV2ZWwsCkBAIC0zNzgsMjIgKzc5MSwyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMp
CiB7Ci0gICAgQVNTRVJUKHRhcmdldCA9PSBtVGFyZ2V0IHx8IChtVGFyZ2V0ID09IEdMX1RFWFRV
UkVfQ1VCRV9NQVAgJiYgSXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpKSk7CisgICAgQVNT
RVJUKHRhcmdldCA9PSBtU3RhdGUubVRhcmdldCB8fAorICAgICAgICAgICAobVN0YXRlLm1UYXJn
ZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01BUCAmJiBJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdl
dCkpKTsKIAogICAgIC8vIFJlbGVhc2UgZnJvbSBwcmV2aW91cyBjYWxscyB0byBlZ2xCaW5kVGV4
SW1hZ2UsIHRvIGF2b2lkIGNhbGxpbmcgdGhlIEltcGwgYWZ0ZXIKICAgICByZWxlYXNlVGV4SW1h
Z2VJbnRlcm5hbCgpOwogICAgIG9ycGhhbkltYWdlcygpOwogCi0gICAgRXJyb3IgZXJyb3IgPQot
ICAgICAgICBtVGV4dHVyZS0+c2V0SW1hZ2UodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQs
IHNpemUsIGZvcm1hdCwgdHlwZSwgdW5wYWNrU3RhdGUsIHBpeGVscyk7Ci0gICAgaWYgKGVycm9y
LmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5H
TEVfVFJZKAorICAgICAgICBtVGV4dHVyZS0+c2V0SW1hZ2UodGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxGb3JtYXQsIHNpemUsIGZvcm1hdCwgdHlwZSwgdW5wYWNrU3RhdGUsIHBpeGVscykpOwogCi0g
ICAgc2V0SW1hZ2VEZXNjKHRhcmdldCwgbGV2ZWwsIEltYWdlRGVzYyhzaXplLCBHZXRTaXplZElu
dGVybmFsRm9ybWF0KGludGVybmFsRm9ybWF0LCB0eXBlKSkpOworICAgIG1TdGF0ZS5zZXRJbWFn
ZURlc2ModGFyZ2V0LCBsZXZlbCwgSW1hZ2VEZXNjKHNpemUsIEZvcm1hdChpbnRlcm5hbEZvcm1h
dCwgZm9ybWF0LCB0eXBlKSkpOworICAgIG1EaXJ0eUNoYW5uZWwuc2lnbmFsKCk7CiAKLSAgICBy
ZXR1cm4gRXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBOb0Vycm9yKCk7CiB9CiAKIEVy
cm9yIFRleHR1cmU6OnNldFN1YkltYWdlKGNvbnN0IFBpeGVsVW5wYWNrU3RhdGUgJnVucGFja1N0
YXRlLApAQCAtNDA0LDcgKzgxNSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVs
cykKIHsKLSAgICBBU1NFUlQodGFyZ2V0ID09IG1UYXJnZXQgfHwgKG1UYXJnZXQgPT0gR0xfVEVY
VFVSRV9DVUJFX01BUCAmJiBJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkpKTsKKyAgICBB
U1NFUlQodGFyZ2V0ID09IG1TdGF0ZS5tVGFyZ2V0IHx8CisgICAgICAgICAgIChtU3RhdGUubVRh
cmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQICYmIElzQ3ViZU1hcFRleHR1cmVUYXJnZXQodGFy
Z2V0KSkpOwogICAgIHJldHVybiBtVGV4dHVyZS0+c2V0U3ViSW1hZ2UodGFyZ2V0LCBsZXZlbCwg
YXJlYSwgZm9ybWF0LCB0eXBlLCB1bnBhY2tTdGF0ZSwgcGl4ZWxzKTsKIH0KIApAQCAtNDE2LDIy
ICs4MjgsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW1h
Z2VTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qg
KnBpeGVscykKIHsKLSAgICBBU1NFUlQodGFyZ2V0ID09IG1UYXJnZXQgfHwgKG1UYXJnZXQgPT0g
R0xfVEVYVFVSRV9DVUJFX01BUCAmJiBJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkpKTsK
KyAgICBBU1NFUlQodGFyZ2V0ID09IG1TdGF0ZS5tVGFyZ2V0IHx8CisgICAgICAgICAgIChtU3Rh
dGUubVRhcmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQICYmIElzQ3ViZU1hcFRleHR1cmVUYXJn
ZXQodGFyZ2V0KSkpOwogCiAgICAgLy8gUmVsZWFzZSBmcm9tIHByZXZpb3VzIGNhbGxzIHRvIGVn
bEJpbmRUZXhJbWFnZSwgdG8gYXZvaWQgY2FsbGluZyB0aGUgSW1wbCBhZnRlcgogICAgIHJlbGVh
c2VUZXhJbWFnZUludGVybmFsKCk7CiAgICAgb3JwaGFuSW1hZ2VzKCk7CiAKLSAgICBFcnJvciBl
cnJvciA9IG1UZXh0dXJlLT5zZXRDb21wcmVzc2VkSW1hZ2UodGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxGb3JtYXQsIHNpemUsIHVucGFja1N0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbWFnZVNpemUsIHBpeGVscyk7Ci0gICAgaWYgKGVycm9yLmlz
RXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVf
VFJZKG1UZXh0dXJlLT5zZXRDb21wcmVzc2VkSW1hZ2UodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxG
b3JtYXQsIHNpemUsIHVucGFja1N0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGltYWdlU2l6ZSwgcGl4ZWxzKSk7CiAKLSAgICBzZXRJbWFnZURlc2ModGFy
Z2V0LCBsZXZlbCwgSW1hZ2VEZXNjKHNpemUsIEdldFNpemVkSW50ZXJuYWxGb3JtYXQoaW50ZXJu
YWxGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUpKSk7CisgICAgbVN0YXRlLnNldEltYWdlRGVzYyh0
YXJnZXQsIGxldmVsLCBJbWFnZURlc2Moc2l6ZSwgRm9ybWF0KGludGVybmFsRm9ybWF0KSkpOwor
ICAgIG1EaXJ0eUNoYW5uZWwuc2lnbmFsKCk7CiAKLSAgICByZXR1cm4gRXJyb3IoR0xfTk9fRVJS
T1IpOworICAgIHJldHVybiBOb0Vycm9yKCk7CiB9CiAKIEVycm9yIFRleHR1cmU6OnNldENvbXBy
ZXNzZWRTdWJJbWFnZShjb25zdCBQaXhlbFVucGFja1N0YXRlICZ1bnBhY2tTdGF0ZSwKQEAgLTQ0
Miw3ICs4NTIsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBpbWFnZVNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dWludDhfdCAqcGl4ZWxzKQogewotICAgIEFTU0VSVCh0YXJnZXQgPT0gbVRhcmdldCB8fCAobVRh
cmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQICYmIElzQ3ViZU1hcFRleHR1cmVUYXJnZXQodGFy
Z2V0KSkpOworICAgIEFTU0VSVCh0YXJnZXQgPT0gbVN0YXRlLm1UYXJnZXQgfHwKKyAgICAgICAg
ICAgKG1TdGF0ZS5tVGFyZ2V0ID09IEdMX1RFWFRVUkVfQ1VCRV9NQVAgJiYgSXNDdWJlTWFwVGV4
dHVyZVRhcmdldCh0YXJnZXQpKSk7CiAKICAgICByZXR1cm4gbVRleHR1cmUtPnNldENvbXByZXNz
ZWRTdWJJbWFnZSh0YXJnZXQsIGxldmVsLCBhcmVhLCBmb3JtYXQsIHVucGFja1N0YXRlLCBpbWFn
ZVNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxz
KTsKQEAgLTQ1MSwxNDEgKzg2MiwxMzUgQEAKIEVycm9yIFRleHR1cmU6OmNvcHlJbWFnZShHTGVu
dW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0IFJlY3RhbmdsZSAmc291cmNlQXJlYSwgR0xl
bnVtIGludGVybmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZyYW1l
YnVmZmVyICpzb3VyY2UpCiB7Ci0gICAgQVNTRVJUKHRhcmdldCA9PSBtVGFyZ2V0IHx8IChtVGFy
Z2V0ID09IEdMX1RFWFRVUkVfQ1VCRV9NQVAgJiYgSXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0YXJn
ZXQpKSk7CisgICAgQVNTRVJUKHRhcmdldCA9PSBtU3RhdGUubVRhcmdldCB8fAorICAgICAgICAg
ICAobVN0YXRlLm1UYXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01BUCAmJiBJc0N1YmVNYXBUZXh0
dXJlVGFyZ2V0KHRhcmdldCkpKTsKIAogICAgIC8vIFJlbGVhc2UgZnJvbSBwcmV2aW91cyBjYWxs
cyB0byBlZ2xCaW5kVGV4SW1hZ2UsIHRvIGF2b2lkIGNhbGxpbmcgdGhlIEltcGwgYWZ0ZXIKICAg
ICByZWxlYXNlVGV4SW1hZ2VJbnRlcm5hbCgpOwogICAgIG9ycGhhbkltYWdlcygpOwogCi0gICAg
RXJyb3IgZXJyb3IgPSBtVGV4dHVyZS0+Y29weUltYWdlKHRhcmdldCwgbGV2ZWwsIHNvdXJjZUFy
ZWEsIGludGVybmFsRm9ybWF0LCBzb3VyY2UpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0g
ICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShtVGV4dHVy
ZS0+Y29weUltYWdlKHRhcmdldCwgbGV2ZWwsIHNvdXJjZUFyZWEsIGludGVybmFsRm9ybWF0LCBz
b3VyY2UpKTsKIAotICAgIHNldEltYWdlRGVzYyh0YXJnZXQsIGxldmVsLCBJbWFnZURlc2MoRXh0
ZW50cyhzb3VyY2VBcmVhLndpZHRoLCBzb3VyY2VBcmVhLmhlaWdodCwgMSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRTaXplZEludGVybmFsRm9ybWF0KGlu
dGVybmFsRm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFKSkpOworICAgIGNvbnN0IEdMZW51bSBzaXpl
ZEZvcm1hdCA9IEdldFNpemVkSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxGb3JtYXQsIEdMX1VOU0lH
TkVEX0JZVEUpOworICAgIG1TdGF0ZS5zZXRJbWFnZURlc2ModGFyZ2V0LCBsZXZlbCwgSW1hZ2VE
ZXNjKEV4dGVudHMoc291cmNlQXJlYS53aWR0aCwgc291cmNlQXJlYS5oZWlnaHQsIDEpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdChzaXpl
ZEZvcm1hdCkpKTsKKyAgICBtRGlydHlDaGFubmVsLnNpZ25hbCgpOwogCi0gICAgcmV0dXJuIEVy
cm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gTm9FcnJvcigpOwogfQogCiBFcnJvciBUZXh0
dXJlOjpjb3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBPZmZz
ZXQgJmRlc3RPZmZzZXQsIGNvbnN0IFJlY3RhbmdsZSAmc291cmNlQXJlYSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlciAqc291cmNlKQogewotICAgIEFTU0VS
VCh0YXJnZXQgPT0gbVRhcmdldCB8fCAobVRhcmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQICYm
IElzQ3ViZU1hcFRleHR1cmVUYXJnZXQodGFyZ2V0KSkpOworICAgIEFTU0VSVCh0YXJnZXQgPT0g
bVN0YXRlLm1UYXJnZXQgfHwKKyAgICAgICAgICAgKG1TdGF0ZS5tVGFyZ2V0ID09IEdMX1RFWFRV
UkVfQ1VCRV9NQVAgJiYgSXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpKSk7CiAKICAgICBy
ZXR1cm4gbVRleHR1cmUtPmNvcHlTdWJJbWFnZSh0YXJnZXQsIGxldmVsLCBkZXN0T2Zmc2V0LCBz
b3VyY2VBcmVhLCBzb3VyY2UpOwogfQogCi1FcnJvciBUZXh0dXJlOjpzZXRTdG9yYWdlKEdMZW51
bSB0YXJnZXQsIHNpemVfdCBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgY29uc3QgRXh0
ZW50cyAmc2l6ZSkKK0Vycm9yIFRleHR1cmU6OmNvcHlUZXh0dXJlKEdMZW51bSBpbnRlcm5hbEZv
cm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tGbGlwWSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgdW5wYWNrVW5tdWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVGV4dHVyZSAqc291cmNlKQogewotICAgIEFTU0VSVCh0YXJnZXQgPT0gbVRh
cmdldCk7Ci0KICAgICAvLyBSZWxlYXNlIGZyb20gcHJldmlvdXMgY2FsbHMgdG8gZWdsQmluZFRl
eEltYWdlLCB0byBhdm9pZCBjYWxsaW5nIHRoZSBJbXBsIGFmdGVyCiAgICAgcmVsZWFzZVRleElt
YWdlSW50ZXJuYWwoKTsKICAgICBvcnBoYW5JbWFnZXMoKTsKIAotICAgIEVycm9yIGVycm9yID0g
bVRleHR1cmUtPnNldFN0b3JhZ2UodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsRm9ybWF0LCBzaXpl
KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9y
OwotICAgIH0KKyAgICBBTkdMRV9UUlkobVRleHR1cmUtPmNvcHlUZXh0dXJlKGludGVybmFsRm9y
bWF0LCB0eXBlLCB1bnBhY2tGbGlwWSwgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVucGFja1VubXVsdGlwbHlBbHBoYSwgc291cmNl
KSk7CiAKLSAgICBtVGV4dHVyZVN0YXRlLmltbXV0YWJsZUZvcm1hdCA9IHRydWU7Ci0gICAgbVRl
eHR1cmVTdGF0ZS5pbW11dGFibGVMZXZlbHMgPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KGxldmVscyk7
Ci0gICAgY2xlYXJJbWFnZURlc2NzKCk7Ci0gICAgc2V0SW1hZ2VEZXNjQ2hhaW4obGV2ZWxzLCBz
aXplLCBpbnRlcm5hbEZvcm1hdCk7CisgICAgY29uc3QgYXV0byAmc291cmNlRGVzYyAgID0gc291
cmNlLT5tU3RhdGUuZ2V0SW1hZ2VEZXNjKHNvdXJjZS0+Z2V0VGFyZ2V0KCksIDApOworICAgIGNv
bnN0IEdMZW51bSBzaXplZEZvcm1hdCA9IEdldFNpemVkSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxG
b3JtYXQsIHR5cGUpOworICAgIG1TdGF0ZS5zZXRJbWFnZURlc2MoZ2V0VGFyZ2V0KCksIDAsIElt
YWdlRGVzYyhzb3VyY2VEZXNjLnNpemUsIEZvcm1hdChzaXplZEZvcm1hdCkpKTsKKyAgICBtRGly
dHlDaGFubmVsLnNpZ25hbCgpOwogCi0gICAgcmV0dXJuIEVycm9yKEdMX05PX0VSUk9SKTsKKyAg
ICByZXR1cm4gTm9FcnJvcigpOwogfQogCi1FcnJvciBUZXh0dXJlOjpnZW5lcmF0ZU1pcG1hcHMo
KQorRXJyb3IgVGV4dHVyZTo6Y29weVN1YlRleHR1cmUoY29uc3QgT2Zmc2V0ICZkZXN0T2Zmc2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVjdGFuZ2xlICZzb3VyY2VB
cmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tGbGlwWSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrVW5tdWx0aXBseUFscGhh
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGV4dHVyZSAqc291cmNlKQog
eworICAgIHJldHVybiBtVGV4dHVyZS0+Y29weVN1YlRleHR1cmUoZGVzdE9mZnNldCwgc291cmNl
QXJlYSwgdW5wYWNrRmxpcFksIHVucGFja1ByZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnBhY2tVbm11bHRpcGx5QWxwaGEsIHNvdXJjZSk7Cit9
CisKK0Vycm9yIFRleHR1cmU6OmNvcHlDb21wcmVzc2VkVGV4dHVyZShjb25zdCBUZXh0dXJlICpz
b3VyY2UpCit7CiAgICAgLy8gUmVsZWFzZSBmcm9tIHByZXZpb3VzIGNhbGxzIHRvIGVnbEJpbmRU
ZXhJbWFnZSwgdG8gYXZvaWQgY2FsbGluZyB0aGUgSW1wbCBhZnRlcgogICAgIHJlbGVhc2VUZXhJ
bWFnZUludGVybmFsKCk7CisgICAgb3JwaGFuSW1hZ2VzKCk7CiAKLSAgICAvLyBFR0xfS0hSX2ds
X2ltYWdlIHN0YXRlcyB0aGF0IGltYWdlcyBhcmUgb25seSBvcnBoYW5lZCB3aGVuIGdlbmVyYXRp
bmcgbWlwbWFwcyBpZiB0aGUgdGV4dHVyZQotICAgIC8vIGlzIG5vdCBtaXAgY29tcGxldGUuCi0g
ICAgaWYgKCFpc01pcG1hcENvbXBsZXRlKCkpCi0gICAgewotICAgICAgICBvcnBoYW5JbWFnZXMo
KTsKLSAgICB9CisgICAgQU5HTEVfVFJZKG1UZXh0dXJlLT5jb3B5Q29tcHJlc3NlZFRleHR1cmUo
c291cmNlKSk7CiAKLSAgICBFcnJvciBlcnJvciA9IG1UZXh0dXJlLT5nZW5lcmF0ZU1pcG1hcHMo
bVRleHR1cmVTdGF0ZSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQVNTRVJUKHNvdXJjZS0+Z2V0VGFyZ2V0KCkgIT0g
R0xfVEVYVFVSRV9DVUJFX01BUCAmJiBnZXRUYXJnZXQoKSAhPSBHTF9URVhUVVJFX0NVQkVfTUFQ
KTsKKyAgICBjb25zdCBhdXRvICZzb3VyY2VEZXNjID0gc291cmNlLT5tU3RhdGUuZ2V0SW1hZ2VE
ZXNjKHNvdXJjZS0+Z2V0VGFyZ2V0KCksIDApOworICAgIG1TdGF0ZS5zZXRJbWFnZURlc2MoZ2V0
VGFyZ2V0KCksIDAsIHNvdXJjZURlc2MpOwogCi0gICAgY29uc3QgSW1hZ2VEZXNjICZiYXNlSW1h
Z2VJbmZvID0gZ2V0SW1hZ2VEZXNjKGdldEJhc2VJbWFnZVRhcmdldCgpLCAwKTsKLSAgICBzaXpl
X3QgbWlwTGV2ZWxzID0gbG9nMihzdGQ6Om1heChzdGQ6Om1heChiYXNlSW1hZ2VJbmZvLnNpemUu
d2lkdGgsIGJhc2VJbWFnZUluZm8uc2l6ZS5oZWlnaHQpLCBiYXNlSW1hZ2VJbmZvLnNpemUuZGVw
dGgpKSArIDE7Ci0gICAgc2V0SW1hZ2VEZXNjQ2hhaW4obWlwTGV2ZWxzLCBiYXNlSW1hZ2VJbmZv
LnNpemUsIGJhc2VJbWFnZUluZm8uaW50ZXJuYWxGb3JtYXQpOwotCi0gICAgcmV0dXJuIEVycm9y
KEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gTm9FcnJvcigpOwogfQogCi12b2lkIFRleHR1cmU6
OnNldEltYWdlRGVzY0NoYWluKHNpemVfdCBsZXZlbHMsIEV4dGVudHMgYmFzZVNpemUsIEdMZW51
bSBzaXplZEludGVybmFsRm9ybWF0KQorRXJyb3IgVGV4dHVyZTo6c2V0U3RvcmFnZShHTGVudW0g
dGFyZ2V0LCBHTHNpemVpIGxldmVscywgR0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBFeHRl
bnRzICZzaXplKQogewotICAgIGZvciAoaW50IGxldmVsID0gMDsgbGV2ZWwgPCBzdGF0aWNfY2Fz
dDxpbnQ+KGxldmVscyk7IGxldmVsKyspCi0gICAgewotICAgICAgICBFeHRlbnRzIGxldmVsU2l6
ZSgKLSAgICAgICAgICAgIHN0ZDo6bWF4PGludD4oYmFzZVNpemUud2lkdGggPj4gbGV2ZWwsIDEp
LCBzdGQ6Om1heDxpbnQ+KGJhc2VTaXplLmhlaWdodCA+PiBsZXZlbCwgMSksCi0gICAgICAgICAg
ICAobVRhcmdldCA9PSBHTF9URVhUVVJFXzJEX0FSUkFZKSA/IGJhc2VTaXplLmRlcHRoCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHN0ZDo6bWF4PGludD4o
YmFzZVNpemUuZGVwdGggPj4gbGV2ZWwsIDEpKTsKLSAgICAgICAgSW1hZ2VEZXNjIGxldmVsSW5m
byhsZXZlbFNpemUsIHNpemVkSW50ZXJuYWxGb3JtYXQpOworICAgIEFTU0VSVCh0YXJnZXQgPT0g
bVN0YXRlLm1UYXJnZXQpOwogCi0gICAgICAgIGlmIChtVGFyZ2V0ID09IEdMX1RFWFRVUkVfQ1VC
RV9NQVApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAoR0xlbnVtIGZhY2UgPSBGaXJzdEN1
YmVNYXBUZXh0dXJlVGFyZ2V0OyBmYWNlIDw9IExhc3RDdWJlTWFwVGV4dHVyZVRhcmdldDsgZmFj
ZSsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHNldEltYWdlRGVzYyhmYWNlLCBs
ZXZlbCwgbGV2ZWxJbmZvKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNl
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHNldEltYWdlRGVzYyhtVGFyZ2V0LCBsZXZlbCwgbGV2
ZWxJbmZvKTsKLSAgICAgICAgfQotICAgIH0KLX0KKyAgICAvLyBSZWxlYXNlIGZyb20gcHJldmlv
dXMgY2FsbHMgdG8gZWdsQmluZFRleEltYWdlLCB0byBhdm9pZCBjYWxsaW5nIHRoZSBJbXBsIGFm
dGVyCisgICAgcmVsZWFzZVRleEltYWdlSW50ZXJuYWwoKTsKKyAgICBvcnBoYW5JbWFnZXMoKTsK
IAotVGV4dHVyZTo6SW1hZ2VEZXNjOjpJbWFnZURlc2MoKQotICAgIDogSW1hZ2VEZXNjKEV4dGVu
dHMoMCwgMCwgMCksIEdMX05PTkUpCi17Ci19CisgICAgQU5HTEVfVFJZKG1UZXh0dXJlLT5zZXRT
dG9yYWdlKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbEZvcm1hdCwgc2l6ZSkpOwogCi1UZXh0dXJl
OjpJbWFnZURlc2M6OkltYWdlRGVzYyhjb25zdCBFeHRlbnRzICZzaXplLCBHTGVudW0gaW50ZXJu
YWxGb3JtYXQpCi0gICAgOiBzaXplKHNpemUpLAotICAgICAgaW50ZXJuYWxGb3JtYXQoaW50ZXJu
YWxGb3JtYXQpCi17Ci19CisgICAgbVN0YXRlLm1JbW11dGFibGVGb3JtYXQgPSB0cnVlOworICAg
IG1TdGF0ZS5tSW1tdXRhYmxlTGV2ZWxzID0gc3RhdGljX2Nhc3Q8R0x1aW50PihsZXZlbHMpOwor
ICAgIG1TdGF0ZS5jbGVhckltYWdlRGVzY3MoKTsKKyAgICBtU3RhdGUuc2V0SW1hZ2VEZXNjQ2hh
aW4oMCwgc3RhdGljX2Nhc3Q8R0x1aW50PihsZXZlbHMgLSAxKSwgc2l6ZSwgRm9ybWF0KGludGVy
bmFsRm9ybWF0KSk7CiAKLWNvbnN0IFRleHR1cmU6OkltYWdlRGVzYyAmVGV4dHVyZTo6Z2V0SW1h
Z2VEZXNjKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCkgY29uc3QKLXsKLSAgICBzaXplX3Qg
ZGVzY0luZGV4ID0gR2V0SW1hZ2VEZXNjSW5kZXgodGFyZ2V0LCBsZXZlbCk7Ci0gICAgQVNTRVJU
KGRlc2NJbmRleCA8IG1JbWFnZURlc2NzLnNpemUoKSk7Ci0gICAgcmV0dXJuIG1JbWFnZURlc2Nz
W2Rlc2NJbmRleF07Ci19CisgICAgLy8gQ2hhbmdpbmcgdGhlIHRleHR1cmUgdG8gaW1tdXRhYmxl
IGNhbiB0cmlnZ2VyIGEgY2hhbmdlIGluIHRoZSBiYXNlIGFuZCBtYXggbGV2ZWxzOgorICAgIC8v
IEdMRVMgMy4wLjQgc2VjdGlvbiAzLjguMTAgcGcgMTU4OgorICAgIC8vICJGb3IgaW1tdXRhYmxl
LWZvcm1hdCB0ZXh0dXJlcywgbGV2ZWxiYXNlIGlzIGNsYW1wZWQgdG8gdGhlIHJhbmdlWzA7bGV2
ZWxzXSxsZXZlbG1heCBpcyB0aGVuCisgICAgLy8gY2xhbXBlZCB0byB0aGUgcmFuZ2VbbGV2ZWxi
YXNlO2xldmVsc10uCisgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0JBU0VfTEVWRUwpOwor
ICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9NQVhfTEVWRUwpOwogCi12b2lkIFRleHR1cmU6
OnNldEltYWdlRGVzYyhHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0IEltYWdlRGVz
YyAmZGVzYykKLXsKLSAgICBzaXplX3QgZGVzY0luZGV4ID0gR2V0SW1hZ2VEZXNjSW5kZXgodGFy
Z2V0LCBsZXZlbCk7Ci0gICAgQVNTRVJUKGRlc2NJbmRleCA8IG1JbWFnZURlc2NzLnNpemUoKSk7
Ci0gICAgbUltYWdlRGVzY3NbZGVzY0luZGV4XSA9IGRlc2M7Ci0gICAgbUNvbXBsZXRlbmVzc0Nh
Y2hlLmNhY2hlVmFsaWQgPSBmYWxzZTsKKyAgICBtRGlydHlDaGFubmVsLnNpZ25hbCgpOworCisg
ICAgcmV0dXJuIE5vRXJyb3IoKTsKIH0KIAotdm9pZCBUZXh0dXJlOjpjbGVhckltYWdlRGVzYyhH
TGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwpCitFcnJvciBUZXh0dXJlOjpnZW5lcmF0ZU1pcG1h
cCgpCiB7Ci0gICAgc2V0SW1hZ2VEZXNjKHRhcmdldCwgbGV2ZWwsIEltYWdlRGVzYygpKTsKLX0K
KyAgICAvLyBSZWxlYXNlIGZyb20gcHJldmlvdXMgY2FsbHMgdG8gZWdsQmluZFRleEltYWdlLCB0
byBhdm9pZCBjYWxsaW5nIHRoZSBJbXBsIGFmdGVyCisgICAgcmVsZWFzZVRleEltYWdlSW50ZXJu
YWwoKTsKIAotdm9pZCBUZXh0dXJlOjpjbGVhckltYWdlRGVzY3MoKQotewotICAgIGZvciAoc2l6
ZV90IGRlc2NJbmRleCA9IDA7IGRlc2NJbmRleCA8IG1JbWFnZURlc2NzLnNpemUoKTsgZGVzY0lu
ZGV4KyspCisgICAgLy8gRUdMX0tIUl9nbF9pbWFnZSBzdGF0ZXMgdGhhdCBpbWFnZXMgYXJlIG9u
bHkgb3JwaGFuZWQgd2hlbiBnZW5lcmF0aW5nIG1pcG1hcHMgaWYgdGhlIHRleHR1cmUKKyAgICAv
LyBpcyBub3QgbWlwIGNvbXBsZXRlLgorICAgIGlmICghaXNNaXBtYXBDb21wbGV0ZSgpKQogICAg
IHsKLSAgICAgICAgbUltYWdlRGVzY3NbZGVzY0luZGV4XSA9IEltYWdlRGVzYygpOworICAgICAg
ICBvcnBoYW5JbWFnZXMoKTsKICAgICB9Ci0gICAgbUNvbXBsZXRlbmVzc0NhY2hlLmNhY2hlVmFs
aWQgPSBmYWxzZTsKKworICAgIGNvbnN0IEdMdWludCBiYXNlTGV2ZWwgPSBtU3RhdGUuZ2V0RWZm
ZWN0aXZlQmFzZUxldmVsKCk7CisgICAgY29uc3QgR0x1aW50IG1heExldmVsICA9IG1TdGF0ZS5n
ZXRNaXBtYXBNYXhMZXZlbCgpOworCisgICAgaWYgKG1heExldmVsID4gYmFzZUxldmVsKQorICAg
IHsKKyAgICAgICAgc3luY0ltcGxTdGF0ZSgpOworICAgICAgICBBTkdMRV9UUlkobVRleHR1cmUt
PmdlbmVyYXRlTWlwbWFwKCkpOworCisgICAgICAgIGNvbnN0IEltYWdlRGVzYyAmYmFzZUltYWdl
SW5mbyA9CisgICAgICAgICAgICBtU3RhdGUuZ2V0SW1hZ2VEZXNjKG1TdGF0ZS5nZXRCYXNlSW1h
Z2VUYXJnZXQoKSwgYmFzZUxldmVsKTsKKyAgICAgICAgbVN0YXRlLnNldEltYWdlRGVzY0NoYWlu
KGJhc2VMZXZlbCwgbWF4TGV2ZWwsIGJhc2VJbWFnZUluZm8uc2l6ZSwgYmFzZUltYWdlSW5mby5m
b3JtYXQpOworICAgIH0KKworICAgIG1EaXJ0eUNoYW5uZWwuc2lnbmFsKCk7CisKKyAgICByZXR1
cm4gTm9FcnJvcigpOwogfQogCiB2b2lkIFRleHR1cmU6OmJpbmRUZXhJbWFnZUZyb21TdXJmYWNl
KGVnbDo6U3VyZmFjZSAqc3VyZmFjZSkKQEAgLTYwMSwxMCArMTAwNiwxMSBAQAogICAgIG1Cb3Vu
ZFN1cmZhY2UgPSBzdXJmYWNlOwogCiAgICAgLy8gU2V0IHRoZSBpbWFnZSBpbmZvIHRvIHRoZSBz
aXplIGFuZCBmb3JtYXQgb2YgdGhlIHN1cmZhY2UKLSAgICBBU1NFUlQobVRhcmdldCA9PSBHTF9U
RVhUVVJFXzJEKTsKKyAgICBBU1NFUlQobVN0YXRlLm1UYXJnZXQgPT0gR0xfVEVYVFVSRV8yRCk7
CiAgICAgRXh0ZW50cyBzaXplKHN1cmZhY2UtPmdldFdpZHRoKCksIHN1cmZhY2UtPmdldEhlaWdo
dCgpLCAxKTsKLSAgICBJbWFnZURlc2MgZGVzYyhzaXplLCBzdXJmYWNlLT5nZXRDb25maWcoKS0+
cmVuZGVyVGFyZ2V0Rm9ybWF0KTsKLSAgICBzZXRJbWFnZURlc2MobVRhcmdldCwgMCwgZGVzYyk7
CisgICAgSW1hZ2VEZXNjIGRlc2Moc2l6ZSwgRm9ybWF0KHN1cmZhY2UtPmdldENvbmZpZygpLT5y
ZW5kZXJUYXJnZXRGb3JtYXQpKTsKKyAgICBtU3RhdGUuc2V0SW1hZ2VEZXNjKG1TdGF0ZS5tVGFy
Z2V0LCAwLCBkZXNjKTsKKyAgICBtRGlydHlDaGFubmVsLnNpZ25hbCgpOwogfQogCiB2b2lkIFRl
eHR1cmU6OnJlbGVhc2VUZXhJbWFnZUZyb21TdXJmYWNlKCkKQEAgLTYxNCwyMzMgKzEwMjAsOTIg
QEAKICAgICBtVGV4dHVyZS0+cmVsZWFzZVRleEltYWdlKCk7CiAKICAgICAvLyBFcmFzZSB0aGUg
aW1hZ2UgaW5mbyBmb3IgbGV2ZWwgMAotICAgIEFTU0VSVChtVGFyZ2V0ID09IEdMX1RFWFRVUkVf
MkQpOwotICAgIGNsZWFySW1hZ2VEZXNjKG1UYXJnZXQsIDApOworICAgIEFTU0VSVChtU3RhdGUu
bVRhcmdldCA9PSBHTF9URVhUVVJFXzJEKTsKKyAgICBtU3RhdGUuY2xlYXJJbWFnZURlc2MobVN0
YXRlLm1UYXJnZXQsIDApOworICAgIG1EaXJ0eUNoYW5uZWwuc2lnbmFsKCk7CiB9CiAKLXZvaWQg
VGV4dHVyZTo6cmVsZWFzZVRleEltYWdlSW50ZXJuYWwoKQordm9pZCBUZXh0dXJlOjpiaW5kU3Ry
ZWFtKGVnbDo6U3RyZWFtICpzdHJlYW0pCiB7Ci0gICAgaWYgKG1Cb3VuZFN1cmZhY2UpCi0gICAg
ewotICAgICAgICAvLyBOb3RpZnkgdGhlIHN1cmZhY2UKLSAgICAgICAgbUJvdW5kU3VyZmFjZS0+
cmVsZWFzZVRleEltYWdlRnJvbVRleHR1cmUoKTsKKyAgICBBU1NFUlQoc3RyZWFtKTsKIAotICAg
ICAgICAvLyBUaGVuLCBjYWxsIHRoZSBzYW1lIG1ldGhvZCBhcyBmcm9tIHRoZSBzdXJmYWNlCi0g
ICAgICAgIHJlbGVhc2VUZXhJbWFnZUZyb21TdXJmYWNlKCk7Ci0gICAgfQotfQorICAgIC8vIEl0
IHNob3VsZCBub3QgYmUgcG9zc2libGUgdG8gYmluZCBhIHRleHR1cmUgYWxyZWFkeSBib3VuZCB0
byBhbm90aGVyIHN0cmVhbQorICAgIEFTU0VSVChtQm91bmRTdHJlYW0gPT0gbnVsbHB0cik7CiAK
LUVycm9yIFRleHR1cmU6OnNldEVHTEltYWdlVGFyZ2V0KEdMZW51bSB0YXJnZXQsIGVnbDo6SW1h
Z2UgKmltYWdlVGFyZ2V0KQotewotICAgIEFTU0VSVCh0YXJnZXQgPT0gbVRhcmdldCk7Ci0gICAg
QVNTRVJUKHRhcmdldCA9PSBHTF9URVhUVVJFXzJEKTsKKyAgICBtQm91bmRTdHJlYW0gPSBzdHJl
YW07CiAKLSAgICAvLyBSZWxlYXNlIGZyb20gcHJldmlvdXMgY2FsbHMgdG8gZWdsQmluZFRleElt
YWdlLCB0byBhdm9pZCBjYWxsaW5nIHRoZSBJbXBsIGFmdGVyCi0gICAgcmVsZWFzZVRleEltYWdl
SW50ZXJuYWwoKTsKLSAgICBvcnBoYW5JbWFnZXMoKTsKLQotICAgIEVycm9yIGVycm9yID0gbVRl
eHR1cmUtPnNldEVHTEltYWdlVGFyZ2V0KHRhcmdldCwgaW1hZ2VUYXJnZXQpOwotICAgIGlmIChl
cnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQotCi0g
ICAgc2V0VGFyZ2V0SW1hZ2UoaW1hZ2VUYXJnZXQpOwotCi0gICAgRXh0ZW50cyBzaXplKHN0YXRp
Y19jYXN0PGludD4oaW1hZ2VUYXJnZXQtPmdldFdpZHRoKCkpLAotICAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxpbnQ+KGltYWdlVGFyZ2V0LT5nZXRIZWlnaHQoKSksIDEpOwotICAgIEdMZW51
bSBpbnRlcm5hbEZvcm1hdCA9IGltYWdlVGFyZ2V0LT5nZXRJbnRlcm5hbEZvcm1hdCgpOwotICAg
IEdMZW51bSB0eXBlICAgICAgICAgICA9IEdldEludGVybmFsRm9ybWF0SW5mbyhpbnRlcm5hbEZv
cm1hdCkudHlwZTsKLQotICAgIGNsZWFySW1hZ2VEZXNjcygpOwotICAgIHNldEltYWdlRGVzYyh0
YXJnZXQsIDAsIEltYWdlRGVzYyhzaXplLCBHZXRTaXplZEludGVybmFsRm9ybWF0KGludGVybmFs
Rm9ybWF0LCB0eXBlKSkpOwotCi0gICAgcmV0dXJuIEVycm9yKEdMX05PX0VSUk9SKTsKKyAgICBB
U1NFUlQobVN0YXRlLm1UYXJnZXQgPT0gR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMpOwogfQogCi1H
TGVudW0gVGV4dHVyZTo6Z2V0QmFzZUltYWdlVGFyZ2V0KCkgY29uc3QKK3ZvaWQgVGV4dHVyZTo6
cmVsZWFzZVN0cmVhbSgpCiB7Ci0gICAgcmV0dXJuIG1UYXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJF
X01BUCA/IEZpcnN0Q3ViZU1hcFRleHR1cmVUYXJnZXQgOiBtVGFyZ2V0OworICAgIEFTU0VSVCht
Qm91bmRTdHJlYW0pOworICAgIG1Cb3VuZFN0cmVhbSA9IG51bGxwdHI7CiB9CiAKLWJvb2wgVGV4
dHVyZTo6Y29tcHV0ZVNhbXBsZXJDb21wbGV0ZW5lc3MoY29uc3QgU2FtcGxlclN0YXRlICZzYW1w
bGVyU3RhdGUsIGNvbnN0IERhdGEgJmRhdGEpIGNvbnN0Cit2b2lkIFRleHR1cmU6OmFjcXVpcmVJ
bWFnZUZyb21TdHJlYW0oY29uc3QgZWdsOjpTdHJlYW06OkdMVGV4dHVyZURlc2NyaXB0aW9uICZk
ZXNjKQogewotICAgIGNvbnN0IEltYWdlRGVzYyAmYmFzZUltYWdlRGVzYyA9IGdldEltYWdlRGVz
YyhnZXRCYXNlSW1hZ2VUYXJnZXQoKSwgbVRleHR1cmVTdGF0ZS5iYXNlTGV2ZWwpOwotICAgIGlm
IChiYXNlSW1hZ2VEZXNjLnNpemUud2lkdGggPT0gMCB8fCBiYXNlSW1hZ2VEZXNjLnNpemUuaGVp
Z2h0ID09IDAgfHwgYmFzZUltYWdlRGVzYy5zaXplLmRlcHRoID09IDApCi0gICAgewotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIEFTU0VSVChtQm91bmRTdHJlYW0gIT0gbnVsbHB0
cik7CisgICAgbVRleHR1cmUtPnNldEltYWdlRXh0ZXJuYWwobVN0YXRlLm1UYXJnZXQsIG1Cb3Vu
ZFN0cmVhbSwgZGVzYyk7CiAKLSAgICBpZiAobVRhcmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQ
ICYmIGJhc2VJbWFnZURlc2Muc2l6ZS53aWR0aCAhPSBiYXNlSW1hZ2VEZXNjLnNpemUuaGVpZ2h0
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGNvbnN0IFRleHR1
cmVDYXBzICZ0ZXh0dXJlQ2FwcyA9IGRhdGEudGV4dHVyZUNhcHMtPmdldChiYXNlSW1hZ2VEZXNj
LmludGVybmFsRm9ybWF0KTsKLSAgICBpZiAoIXRleHR1cmVDYXBzLmZpbHRlcmFibGUgJiYgIUlz
UG9pbnRTYW1wbGVkKHNhbXBsZXJTdGF0ZSkpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCi0gICAgYm9vbCBucG90U3VwcG9ydCA9IGRhdGEuZXh0ZW5zaW9ucy0+dGV4dHVy
ZU5QT1QgfHwgZGF0YS5jbGllbnRWZXJzaW9uID49IDM7Ci0gICAgaWYgKCFucG90U3VwcG9ydCkK
LSAgICB7Ci0gICAgICAgIGlmICgoc2FtcGxlclN0YXRlLndyYXBTICE9IEdMX0NMQU1QX1RPX0VE
R0UgJiYgIWdsOjppc1BvdzIoYmFzZUltYWdlRGVzYy5zaXplLndpZHRoKSkgfHwKLSAgICAgICAg
ICAgIChzYW1wbGVyU3RhdGUud3JhcFQgIT0gR0xfQ0xBTVBfVE9fRURHRSAmJiAhZ2w6OmlzUG93
MihiYXNlSW1hZ2VEZXNjLnNpemUuaGVpZ2h0KSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChJc01pcG1hcEZpbHRlcmVk
KHNhbXBsZXJTdGF0ZSkpCi0gICAgewotICAgICAgICBpZiAoIW5wb3RTdXBwb3J0KQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAoIWdsOjppc1BvdzIoYmFzZUltYWdlRGVzYy5zaXplLndpZHRo
KSB8fCAhZ2w6OmlzUG93MihiYXNlSW1hZ2VEZXNjLnNpemUuaGVpZ2h0KSkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoIWNvbXB1dGVNaXBtYXBDb21wbGV0ZW5lc3MoKSkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UK
LSAgICB7Ci0gICAgICAgIGlmIChtVGFyZ2V0ID09IEdMX1RFWFRVUkVfQ1VCRV9NQVAgJiYgIWlz
Q3ViZUNvbXBsZXRlKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIC8vIE9wZW5HTEVTIDMuMC4yIHNwZWMgc2VjdGlvbiAzLjgu
MTMgc3RhdGVzIHRoYXQgYSB0ZXh0dXJlIGlzIG5vdCBtaXBtYXAgY29tcGxldGUgaWY6Ci0gICAg
Ly8gVGhlIGludGVybmFsZm9ybWF0IHNwZWNpZmllZCBmb3IgdGhlIHRleHR1cmUgYXJyYXlzIGlz
IGEgc2l6ZWQgaW50ZXJuYWwgZGVwdGggb3IKLSAgICAvLyBkZXB0aCBhbmQgc3RlbmNpbCBmb3Jt
YXQgKHNlZSB0YWJsZSAzLjEzKSwgdGhlIHZhbHVlIG9mIFRFWFRVUkVfQ09NUEFSRV8tCi0gICAg
Ly8gTU9ERSBpcyBOT05FLCBhbmQgZWl0aGVyIHRoZSBtYWduaWZpY2F0aW9uIGZpbHRlciBpcyBu
b3QgTkVBUkVTVCBvciB0aGUgbWluaS0KLSAgICAvLyBmaWNhdGlvbiBmaWx0ZXIgaXMgbmVpdGhl
ciBORUFSRVNUIG5vciBORUFSRVNUX01JUE1BUF9ORUFSRVNULgotICAgIGNvbnN0IGdsOjpJbnRl
cm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oYmFzZUlt
YWdlRGVzYy5pbnRlcm5hbEZvcm1hdCk7Ci0gICAgaWYgKGZvcm1hdEluZm8uZGVwdGhCaXRzID4g
MCAmJiBkYXRhLmNsaWVudFZlcnNpb24gPiAyKQotICAgIHsKLSAgICAgICAgaWYgKHNhbXBsZXJT
dGF0ZS5jb21wYXJlTW9kZSA9PSBHTF9OT05FKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
KHNhbXBsZXJTdGF0ZS5taW5GaWx0ZXIgIT0gR0xfTkVBUkVTVCAmJiBzYW1wbGVyU3RhdGUubWlu
RmlsdGVyICE9IEdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QpIHx8Ci0gICAgICAgICAgICAgICAg
c2FtcGxlclN0YXRlLm1hZ0ZpbHRlciAhPSBHTF9ORUFSRVNUKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLQotICAgIHJldHVybiB0cnVlOworICAgIEV4dGVudHMgc2l6ZShkZXNjLndpZHRoLCBkZXNj
LmhlaWdodCwgMSk7CisgICAgbVN0YXRlLnNldEltYWdlRGVzYyhtU3RhdGUubVRhcmdldCwgMCwg
SW1hZ2VEZXNjKHNpemUsIEZvcm1hdChkZXNjLmludGVybmFsRm9ybWF0KSkpOworICAgIG1EaXJ0
eUNoYW5uZWwuc2lnbmFsKCk7CiB9CiAKLWJvb2wgVGV4dHVyZTo6Y29tcHV0ZU1pcG1hcENvbXBs
ZXRlbmVzcygpIGNvbnN0Cit2b2lkIFRleHR1cmU6OnJlbGVhc2VJbWFnZUZyb21TdHJlYW0oKQog
ewotICAgIHNpemVfdCBleHBlY3RlZE1pcExldmVscyA9IGdldE1pcENvbXBsZXRlTGV2ZWxzKCk7
CisgICAgQVNTRVJUKG1Cb3VuZFN0cmVhbSAhPSBudWxscHRyKTsKKyAgICBtVGV4dHVyZS0+c2V0
SW1hZ2VFeHRlcm5hbChtU3RhdGUubVRhcmdldCwgbnVsbHB0ciwgZWdsOjpTdHJlYW06OkdMVGV4
dHVyZURlc2NyaXB0aW9uKCkpOwogCi0gICAgc2l6ZV90IG1heExldmVsID0gc3RkOjptaW48c2l6
ZV90PihleHBlY3RlZE1pcExldmVscywgbVRleHR1cmVTdGF0ZS5tYXhMZXZlbCArIDEpOwotCi0g
ICAgZm9yIChzaXplX3QgbGV2ZWwgPSBtVGV4dHVyZVN0YXRlLmJhc2VMZXZlbDsgbGV2ZWwgPCBt
YXhMZXZlbDsgbGV2ZWwrKykKLSAgICB7Ci0gICAgICAgIGlmIChtVGFyZ2V0ID09IEdMX1RFWFRV
UkVfQ1VCRV9NQVApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAoR0xlbnVtIGZhY2UgPSBG
aXJzdEN1YmVNYXBUZXh0dXJlVGFyZ2V0OyBmYWNlIDw9IExhc3RDdWJlTWFwVGV4dHVyZVRhcmdl
dDsgZmFjZSsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICghY29tcHV0ZUxl
dmVsQ29tcGxldGVuZXNzKGZhY2UsIGxldmVsKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
IWNvbXB1dGVMZXZlbENvbXBsZXRlbmVzcyhtVGFyZ2V0LCBsZXZlbCkpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7CisgICAgLy8gU2V0IHRvIGluY29tcGxldGUKKyAg
ICBtU3RhdGUuY2xlYXJJbWFnZURlc2MobVN0YXRlLm1UYXJnZXQsIDApOworICAgIG1EaXJ0eUNo
YW5uZWwuc2lnbmFsKCk7CiB9CiAKLWJvb2wgVGV4dHVyZTo6Y29tcHV0ZUxldmVsQ29tcGxldGVu
ZXNzKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCkgY29uc3QKK3ZvaWQgVGV4dHVyZTo6cmVs
ZWFzZVRleEltYWdlSW50ZXJuYWwoKQogewotICAgIEFTU0VSVChsZXZlbCA8IElNUExFTUVOVEFU
SU9OX01BWF9URVhUVVJFX0xFVkVMUyk7Ci0KLSAgICBpZiAobVRleHR1cmVTdGF0ZS5pbW11dGFi
bGVGb3JtYXQpCisgICAgaWYgKG1Cb3VuZFN1cmZhY2UpCiAgICAgewotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9CisgICAgICAgIC8vIE5vdGlmeSB0aGUgc3VyZmFjZQorICAgICAgICBtQm91
bmRTdXJmYWNlLT5yZWxlYXNlVGV4SW1hZ2VGcm9tVGV4dHVyZSgpOwogCi0gICAgY29uc3QgSW1h
Z2VEZXNjICZiYXNlSW1hZ2VEZXNjID0gZ2V0SW1hZ2VEZXNjKGdldEJhc2VJbWFnZVRhcmdldCgp
LCBtVGV4dHVyZVN0YXRlLmJhc2VMZXZlbCk7Ci0gICAgaWYgKGJhc2VJbWFnZURlc2Muc2l6ZS53
aWR0aCA9PSAwIHx8IGJhc2VJbWFnZURlc2Muc2l6ZS5oZWlnaHQgPT0gMCB8fCBiYXNlSW1hZ2VE
ZXNjLnNpemUuZGVwdGggPT0gMCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgLy8gVGhlbiwgY2FsbCB0aGUgc2FtZSBtZXRob2QgYXMgZnJvbSB0aGUgc3VyZmFjZQorICAg
ICAgICByZWxlYXNlVGV4SW1hZ2VGcm9tU3VyZmFjZSgpOwogICAgIH0KK30KIAotICAgIGNvbnN0
IEltYWdlRGVzYyAmbGV2ZWxJbWFnZURlc2MgPSBnZXRJbWFnZURlc2ModGFyZ2V0LCBsZXZlbCk7
Ci0gICAgaWYgKGxldmVsSW1hZ2VEZXNjLnNpemUud2lkdGggPT0gMCB8fCBsZXZlbEltYWdlRGVz
Yy5zaXplLmhlaWdodCA9PSAwIHx8Ci0gICAgICAgIGxldmVsSW1hZ2VEZXNjLnNpemUuZGVwdGgg
PT0gMCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CitFcnJvciBUZXh0dXJl
OjpzZXRFR0xJbWFnZVRhcmdldChHTGVudW0gdGFyZ2V0LCBlZ2w6OkltYWdlICppbWFnZVRhcmdl
dCkKK3sKKyAgICBBU1NFUlQodGFyZ2V0ID09IG1TdGF0ZS5tVGFyZ2V0KTsKKyAgICBBU1NFUlQo
dGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQgfHwgdGFyZ2V0ID09IEdMX1RFWFRVUkVfRVhURVJOQUxf
T0VTKTsKIAotICAgIGlmIChsZXZlbEltYWdlRGVzYy5pbnRlcm5hbEZvcm1hdCAhPSBiYXNlSW1h
Z2VEZXNjLmludGVybmFsRm9ybWF0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KKyAgICAvLyBSZWxlYXNlIGZyb20gcHJldmlvdXMgY2FsbHMgdG8gZWdsQmluZFRleEltYWdl
LCB0byBhdm9pZCBjYWxsaW5nIHRoZSBJbXBsIGFmdGVyCisgICAgcmVsZWFzZVRleEltYWdlSW50
ZXJuYWwoKTsKKyAgICBvcnBoYW5JbWFnZXMoKTsKIAotICAgIEFTU0VSVChsZXZlbCA+PSBtVGV4
dHVyZVN0YXRlLmJhc2VMZXZlbCk7Ci0gICAgY29uc3Qgc2l6ZV90IHJlbGF0aXZlTGV2ZWwgPSBs
ZXZlbCAtIG1UZXh0dXJlU3RhdGUuYmFzZUxldmVsOwotICAgIGlmIChsZXZlbEltYWdlRGVzYy5z
aXplLndpZHRoICE9IHN0ZDo6bWF4KDEsIGJhc2VJbWFnZURlc2Muc2l6ZS53aWR0aCA+PiByZWxh
dGl2ZUxldmVsKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgQU5H
TEVfVFJZKG1UZXh0dXJlLT5zZXRFR0xJbWFnZVRhcmdldCh0YXJnZXQsIGltYWdlVGFyZ2V0KSk7
CiAKLSAgICBpZiAobGV2ZWxJbWFnZURlc2Muc2l6ZS5oZWlnaHQgIT0gc3RkOjptYXgoMSwgYmFz
ZUltYWdlRGVzYy5zaXplLmhlaWdodCA+PiByZWxhdGl2ZUxldmVsKSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgc2V0VGFyZ2V0SW1hZ2UoaW1hZ2VUYXJnZXQpOwog
Ci0gICAgaWYgKG1UYXJnZXQgPT0gR0xfVEVYVFVSRV8zRCkKLSAgICB7Ci0gICAgICAgIGlmIChs
ZXZlbEltYWdlRGVzYy5zaXplLmRlcHRoICE9IHN0ZDo6bWF4KDEsIGJhc2VJbWFnZURlc2Muc2l6
ZS5kZXB0aCA+PiByZWxhdGl2ZUxldmVsKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKG1UYXJnZXQgPT0gR0xfVEVY
VFVSRV8yRF9BUlJBWSkKLSAgICB7Ci0gICAgICAgIGlmIChsZXZlbEltYWdlRGVzYy5zaXplLmRl
cHRoICE9IGJhc2VJbWFnZURlc2Muc2l6ZS5kZXB0aCkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQorICAgIEV4dGVudHMgc2l6ZShzdGF0aWNf
Y2FzdDxpbnQ+KGltYWdlVGFyZ2V0LT5nZXRXaWR0aCgpKSwKKyAgICAgICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8aW50PihpbWFnZVRhcmdldC0+Z2V0SGVpZ2h0KCkpLCAxKTsKIAotICAgIHJldHVy
biB0cnVlOwotfQorICAgIG1TdGF0ZS5jbGVhckltYWdlRGVzY3MoKTsKKyAgICBtU3RhdGUuc2V0
SW1hZ2VEZXNjKHRhcmdldCwgMCwgSW1hZ2VEZXNjKHNpemUsIGltYWdlVGFyZ2V0LT5nZXRGb3Jt
YXQoKSkpOworICAgIG1EaXJ0eUNoYW5uZWwuc2lnbmFsKCk7CiAKLVRleHR1cmU6OlNhbXBsZXJD
b21wbGV0ZW5lc3NDYWNoZTo6U2FtcGxlckNvbXBsZXRlbmVzc0NhY2hlKCkKLSAgICA6IGNhY2hl
VmFsaWQoZmFsc2UpLAotICAgICAgc2FtcGxlclN0YXRlKCksCi0gICAgICBmaWx0ZXJhYmxlKGZh
bHNlKSwKLSAgICAgIGNsaWVudFZlcnNpb24oMCksCi0gICAgICBzdXBwb3J0c05QT1QoZmFsc2Up
LAotICAgICAgc2FtcGxlckNvbXBsZXRlKGZhbHNlKQoteworICAgIHJldHVybiBOb0Vycm9yKCk7
CiB9CiAKIEV4dGVudHMgVGV4dHVyZTo6Z2V0QXR0YWNobWVudFNpemUoY29uc3QgZ2w6OkZyYW1l
YnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdl
dEltYWdlRGVzYyh0YXJnZXQudGV4dHVyZUluZGV4KCkudHlwZSwgdGFyZ2V0LnRleHR1cmVJbmRl
eCgpLm1pcEluZGV4KS5zaXplOworICAgIHJldHVybiBtU3RhdGUuZ2V0SW1hZ2VEZXNjKHRhcmdl
dC50ZXh0dXJlSW5kZXgoKS50eXBlLCB0YXJnZXQudGV4dHVyZUluZGV4KCkubWlwSW5kZXgpLnNp
emU7CiB9CiAKLUdMZW51bSBUZXh0dXJlOjpnZXRBdHRhY2htZW50SW50ZXJuYWxGb3JtYXQoY29u
c3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQpIGNvbnN0Citjb25z
dCBGb3JtYXQgJlRleHR1cmU6OmdldEF0dGFjaG1lbnRGb3JtYXQoY29uc3QgZ2w6OkZyYW1lYnVm
ZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdldElu
dGVybmFsRm9ybWF0KHRhcmdldC50ZXh0dXJlSW5kZXgoKS50eXBlLCB0YXJnZXQudGV4dHVyZUlu
ZGV4KCkubWlwSW5kZXgpOworICAgIHJldHVybiBnZXRGb3JtYXQodGFyZ2V0LnRleHR1cmVJbmRl
eCgpLnR5cGUsIHRhcmdldC50ZXh0dXJlSW5kZXgoKS5taXBJbmRleCk7CiB9CiAKIEdMc2l6ZWkg
VGV4dHVyZTo6Z2V0QXR0YWNobWVudFNhbXBsZXMoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNo
bWVudDo6VGFyZ2V0ICYvKnRhcmdldCovKSBjb25zdApAQCAtODYzLDQgKzExMjgsMTUgQEAKIHsK
ICAgICByZXR1cm4gaWQoKTsKIH0KKwordm9pZCBUZXh0dXJlOjpzeW5jSW1wbFN0YXRlKCkKK3sK
KyAgICBtVGV4dHVyZS0+c3luY1N0YXRlKG1EaXJ0eUJpdHMpOworICAgIG1EaXJ0eUJpdHMucmVz
ZXQoKTsKIH0KKworcng6OkZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdEltcGwgKlRleHR1cmU6
OmdldEF0dGFjaG1lbnRJbXBsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVRleHR1cmU7Cit9Cit9
ICAvLyBuYW1lc3BhY2UgZ2wKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9UZXh0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL1RleHR1cmUuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL1RleHR1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsMjcg
KzIwLDE1NCBAQAogI2luY2x1ZGUgImxpYkFOR0xFL0Vycm9yLmgiCiAjaW5jbHVkZSAibGliQU5H
TEUvRnJhbWVidWZmZXJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvSW1hZ2UuaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9TdHJlYW0uaCIKICNpbmNsdWRlICJsaWJBTkdMRS9hbmdsZXR5
cGVzLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvVGV4dHVyZUltcGwuaCIKKyNpbmNs
dWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgogCiBuYW1lc3BhY2UgZWdsCiB7CiBjbGFzcyBT
dXJmYWNlOworY2xhc3MgU3RyZWFtOwogfQogCituYW1lc3BhY2UgcngKK3sKK2NsYXNzIEdMSW1w
bEZhY3Rvcnk7CitjbGFzcyBUZXh0dXJlSW1wbDsKK2NsYXNzIFRleHR1cmVHTDsKK30KKwogbmFt
ZXNwYWNlIGdsCiB7CitjbGFzcyBDb250ZXh0U3RhdGU7CiBjbGFzcyBGcmFtZWJ1ZmZlcjsKLXN0
cnVjdCBEYXRhOworY2xhc3MgVGV4dHVyZTsKIAogYm9vbCBJc01pcG1hcEZpbHRlcmVkKGNvbnN0
IFNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlKTsKIAorc3RydWN0IEltYWdlRGVzYyBmaW5hbAor
eworICAgIEltYWdlRGVzYygpOworICAgIEltYWdlRGVzYyhjb25zdCBFeHRlbnRzICZzaXplLCBj
b25zdCBGb3JtYXQgJmZvcm1hdCk7CisKKyAgICBJbWFnZURlc2MoY29uc3QgSW1hZ2VEZXNjICZv
dGhlcikgPSBkZWZhdWx0OworICAgIEltYWdlRGVzYyAmb3BlcmF0b3I9KGNvbnN0IEltYWdlRGVz
YyAmb3RoZXIpID0gZGVmYXVsdDsKKworICAgIEV4dGVudHMgc2l6ZTsKKyAgICBGb3JtYXQgZm9y
bWF0OworfTsKKworc3RydWN0IFN3aXp6bGVTdGF0ZSBmaW5hbAoreworICAgIFN3aXp6bGVTdGF0
ZSgpOworICAgIFN3aXp6bGVTdGF0ZShHTGVudW0gcmVkLCBHTGVudW0gZ3JlZW4sIEdMZW51bSBi
bHVlLCBHTGVudW0gYWxwaGEpOworICAgIFN3aXp6bGVTdGF0ZShjb25zdCBTd2l6emxlU3RhdGUg
Jm90aGVyKSA9IGRlZmF1bHQ7CisgICAgU3dpenpsZVN0YXRlICZvcGVyYXRvcj0oY29uc3QgU3dp
enpsZVN0YXRlICZvdGhlcikgPSBkZWZhdWx0OworCisgICAgYm9vbCBzd2l6emxlUmVxdWlyZWQo
KSBjb25zdDsKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTd2l6emxlU3RhdGUgJm90aGVy
KSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3dpenpsZVN0YXRlICZvdGhlcikg
Y29uc3Q7CisKKyAgICBHTGVudW0gc3dpenpsZVJlZDsKKyAgICBHTGVudW0gc3dpenpsZUdyZWVu
OworICAgIEdMZW51bSBzd2l6emxlQmx1ZTsKKyAgICBHTGVudW0gc3dpenpsZUFscGhhOworfTsK
KworLy8gU3RhdGUgZnJvbSBUYWJsZSA2LjkgKHN0YXRlIHBlciB0ZXh0dXJlIG9iamVjdCkgaW4g
dGhlIE9wZW5HTCBFUyAzLjAuMiBzcGVjLgorc3RydWN0IFRleHR1cmVTdGF0ZSBmaW5hbCA6IHB1
YmxpYyBhbmdsZTo6Tm9uQ29weWFibGUKK3sKKyAgICBUZXh0dXJlU3RhdGUoR0xlbnVtIHRhcmdl
dCk7CisKKyAgICBib29sIHN3aXp6bGVSZXF1aXJlZCgpIGNvbnN0OworICAgIEdMdWludCBnZXRF
ZmZlY3RpdmVCYXNlTGV2ZWwoKSBjb25zdDsKKyAgICBHTHVpbnQgZ2V0RWZmZWN0aXZlTWF4TGV2
ZWwoKSBjb25zdDsKKworICAgIC8vIFJldHVybnMgdGhlIHZhbHVlIGNhbGxlZCAicSIgaW4gdGhl
IEdMRVMgMy4wLjQgc3BlYyBzZWN0aW9uIDMuOC4xMC4KKyAgICBHTHVpbnQgZ2V0TWlwbWFwTWF4
TGV2ZWwoKSBjb25zdDsKKworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBiYXNlIGxldmVsIGNoYW5n
ZWQuCisgICAgYm9vbCBzZXRCYXNlTGV2ZWwoR0x1aW50IGJhc2VMZXZlbCk7CisgICAgdm9pZCBz
ZXRNYXhMZXZlbChHTHVpbnQgbWF4TGV2ZWwpOworCisgICAgYm9vbCBpc0N1YmVDb21wbGV0ZSgp
IGNvbnN0OworICAgIGJvb2wgaXNTYW1wbGVyQ29tcGxldGUoY29uc3QgU2FtcGxlclN0YXRlICZz
YW1wbGVyU3RhdGUsIGNvbnN0IENvbnRleHRTdGF0ZSAmZGF0YSkgY29uc3Q7CisKKyAgICBjb25z
dCBJbWFnZURlc2MgJmdldEltYWdlRGVzYyhHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwpIGNv
bnN0OworCisgICAgR0xlbnVtIGdldFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1UYXJnZXQ7IH0K
KyAgICBjb25zdCBTd2l6emxlU3RhdGUgJmdldFN3aXp6bGVTdGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1Td2l6emxlU3RhdGU7IH0KKyAgICBjb25zdCBTYW1wbGVyU3RhdGUgJmdldFNhbXBsZXJTdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1TYW1wbGVyU3RhdGU7IH0KKyAgICBHTGVudW0gZ2V0VXNhZ2Uo
KSBjb25zdCB7IHJldHVybiBtVXNhZ2U7IH0KKworICBwcml2YXRlOgorICAgIC8vIFRleHR1cmUg
bmVlZHMgYWNjZXNzIHRvIHRoZSBJbWFnZURlc2MgZnVuY3Rpb25zLgorICAgIGZyaWVuZCBjbGFz
cyBUZXh0dXJlOworICAgIC8vIFRPRE8oam1hZGlsbCk6IFJlbW92ZSBUZXh0dXJlR0wgZnJvbSBm
cmllbmRzLgorICAgIGZyaWVuZCBjbGFzcyByeDo6VGV4dHVyZUdMOworICAgIGZyaWVuZCBib29s
IG9wZXJhdG9yPT0oY29uc3QgVGV4dHVyZVN0YXRlICZhLCBjb25zdCBUZXh0dXJlU3RhdGUgJmIp
OworCisgICAgYm9vbCBjb21wdXRlU2FtcGxlckNvbXBsZXRlbmVzcyhjb25zdCBTYW1wbGVyU3Rh
dGUgJnNhbXBsZXJTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IENvbnRleHRTdGF0ZSAmZGF0YSkgY29uc3Q7CisgICAgYm9vbCBjb21wdXRlTWlwbWFwQ29t
cGxldGVuZXNzKCkgY29uc3Q7CisgICAgYm9vbCBjb21wdXRlTGV2ZWxDb21wbGV0ZW5lc3MoR0xl
bnVtIHRhcmdldCwgc2l6ZV90IGxldmVsKSBjb25zdDsKKworICAgIEdMZW51bSBnZXRCYXNlSW1h
Z2VUYXJnZXQoKSBjb25zdDsKKworICAgIHZvaWQgc2V0SW1hZ2VEZXNjKEdMZW51bSB0YXJnZXQs
IHNpemVfdCBsZXZlbCwgY29uc3QgSW1hZ2VEZXNjICZkZXNjKTsKKyAgICB2b2lkIHNldEltYWdl
RGVzY0NoYWluKEdMdWludCBiYXNlbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgbWF4TGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHRlbnRzIGJhc2VT
aXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRm9ybWF0ICZmb3JtYXQpOwor
ICAgIHZvaWQgY2xlYXJJbWFnZURlc2MoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsKTsKKyAg
ICB2b2lkIGNsZWFySW1hZ2VEZXNjcygpOworCisgICAgY29uc3QgR0xlbnVtIG1UYXJnZXQ7CisK
KyAgICBTd2l6emxlU3RhdGUgbVN3aXp6bGVTdGF0ZTsKKworICAgIFNhbXBsZXJTdGF0ZSBtU2Ft
cGxlclN0YXRlOworCisgICAgR0x1aW50IG1CYXNlTGV2ZWw7CisgICAgR0x1aW50IG1NYXhMZXZl
bDsKKworICAgIGJvb2wgbUltbXV0YWJsZUZvcm1hdDsKKyAgICBHTHVpbnQgbUltbXV0YWJsZUxl
dmVsczsKKworICAgIC8vIEZyb20gR0xfQU5HTEVfdGV4dHVyZV91c2FnZQorICAgIEdMZW51bSBt
VXNhZ2U7CisKKyAgICBzdGQ6OnZlY3RvcjxJbWFnZURlc2M+IG1JbWFnZURlc2NzOworCisgICAg
c3RydWN0IFNhbXBsZXJDb21wbGV0ZW5lc3NDYWNoZQorICAgIHsKKyAgICAgICAgU2FtcGxlckNv
bXBsZXRlbmVzc0NhY2hlKCk7CisKKyAgICAgICAgYm9vbCBjYWNoZVZhbGlkOworCisgICAgICAg
IC8vIEFsbCB2YWx1ZXMgdGhhdCBhZmZlY3Qgc2FtcGxlciBjb21wbGV0ZW5lc3MgdGhhdCBhcmUg
bm90IHN0b3JlZCB3aXRoaW4KKyAgICAgICAgLy8gdGhlIHRleHR1cmUgaXRzZWxmCisgICAgICAg
IFNhbXBsZXJTdGF0ZSBzYW1wbGVyU3RhdGU7CisgICAgICAgIGJvb2wgZmlsdGVyYWJsZTsKKyAg
ICAgICAgR0xpbnQgY2xpZW50VmVyc2lvbjsKKyAgICAgICAgYm9vbCBzdXBwb3J0c05QT1Q7CisK
KyAgICAgICAgLy8gUmVzdWx0IG9mIHRoZSBzYW1wbGVyIGNvbXBsZXRlbmVzcyB3aXRoIHRoZSBh
Ym92ZSBwYXJhbWV0ZXJzCisgICAgICAgIGJvb2wgc2FtcGxlckNvbXBsZXRlOworICAgIH07Cisg
ICAgbXV0YWJsZSBTYW1wbGVyQ29tcGxldGVuZXNzQ2FjaGUgbUNvbXBsZXRlbmVzc0NhY2hlOwor
fTsKKworYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRleHR1cmVTdGF0ZSAmYSwgY29uc3QgVGV4dHVy
ZVN0YXRlICZiKTsKK2Jvb2wgb3BlcmF0b3IhPShjb25zdCBUZXh0dXJlU3RhdGUgJmEsIGNvbnN0
IFRleHR1cmVTdGF0ZSAmYik7CisKIGNsYXNzIFRleHR1cmUgZmluYWwgOiBwdWJsaWMgZWdsOjpJ
bWFnZVNpYmxpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIEZyYW1lYnVmZmVyQXR0
YWNobWVudE9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgTGFiZWxlZE9iamVj
dAogewogICBwdWJsaWM6Ci0gICAgVGV4dHVyZShyeDo6VGV4dHVyZUltcGwgKmltcGwsIEdMdWlu
dCBpZCwgR0xlbnVtIHRhcmdldCk7CisgICAgVGV4dHVyZShyeDo6R0xJbXBsRmFjdG9yeSAqZmFj
dG9yeSwgR0x1aW50IGlkLCBHTGVudW0gdGFyZ2V0KTsKICAgICB+VGV4dHVyZSgpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBzZXRMYWJlbChjb25zdCBzdGQ6OnN0cmluZyAmbGFiZWwpIG92ZXJyaWRl
OwpAQCAtMTEwLDEyICsyMzcsOSBAQAogICAgIHNpemVfdCBnZXRXaWR0aChHTGVudW0gdGFyZ2V0
LCBzaXplX3QgbGV2ZWwpIGNvbnN0OwogICAgIHNpemVfdCBnZXRIZWlnaHQoR0xlbnVtIHRhcmdl
dCwgc2l6ZV90IGxldmVsKSBjb25zdDsKICAgICBzaXplX3QgZ2V0RGVwdGgoR0xlbnVtIHRhcmdl
dCwgc2l6ZV90IGxldmVsKSBjb25zdDsKLSAgICBHTGVudW0gZ2V0SW50ZXJuYWxGb3JtYXQoR0xl
bnVtIHRhcmdldCwgc2l6ZV90IGxldmVsKSBjb25zdDsKKyAgICBjb25zdCBGb3JtYXQgJmdldEZv
cm1hdChHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwpIGNvbnN0OwogCi0gICAgYm9vbCBpc1Nh
bXBsZXJDb21wbGV0ZShjb25zdCBTYW1wbGVyU3RhdGUgJnNhbXBsZXJTdGF0ZSwgY29uc3QgRGF0
YSAmZGF0YSkgY29uc3Q7CiAgICAgYm9vbCBpc01pcG1hcENvbXBsZXRlKCkgY29uc3Q7Ci0gICAg
Ym9vbCBpc0N1YmVDb21wbGV0ZSgpIGNvbnN0OwotICAgIHNpemVfdCBnZXRNaXBDb21wbGV0ZUxl
dmVscygpIGNvbnN0OwogCiAgICAgRXJyb3Igc2V0SW1hZ2UoY29uc3QgUGl4ZWxVbnBhY2tTdGF0
ZSAmdW5wYWNrU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKQEAgLTE1
OSwyMCArMjgzLDM0IEBACiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlY3RhbmdsZSAm
c291cmNlQXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRnJhbWVidWZmZXIgKnNv
dXJjZSk7CiAKLSAgICBFcnJvciBzZXRTdG9yYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZl
bHMsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgY29uc3QgRXh0ZW50cyAmc2l6ZSk7CisgICAgRXJy
b3IgY29weVRleHR1cmUoR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrRmxpcFks
CisgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAorICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrVW5tdWx0aXBseUFscGhhLAorICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRleHR1cmUgKnNvdXJjZSk7CisgICAgRXJyb3IgY29weVN1YlRl
eHR1cmUoY29uc3QgT2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIHVucGFja0ZsaXBZLAorICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrUHJl
bXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1VubXVs
dGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXh0dXJlICpzb3Vy
Y2UpOworICAgIEVycm9yIGNvcHlDb21wcmVzc2VkVGV4dHVyZShjb25zdCBUZXh0dXJlICpzb3Vy
Y2UpOwogCisgICAgRXJyb3Igc2V0U3RvcmFnZShHTGVudW0gdGFyZ2V0LCBHTHNpemVpIGxldmVs
cywgR0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBFeHRlbnRzICZzaXplKTsKKwogICAgIEVy
cm9yIHNldEVHTEltYWdlVGFyZ2V0KEdMZW51bSB0YXJnZXQsIGVnbDo6SW1hZ2UgKmltYWdlVGFy
Z2V0KTsKIAotICAgIEVycm9yIGdlbmVyYXRlTWlwbWFwcygpOworICAgIEVycm9yIGdlbmVyYXRl
TWlwbWFwKCk7CiAKICAgICBlZ2w6OlN1cmZhY2UgKmdldEJvdW5kU3VyZmFjZSgpIGNvbnN0Owor
ICAgIGVnbDo6U3RyZWFtICpnZXRCb3VuZFN0cmVhbSgpIGNvbnN0OwogCi0gICAgcng6OlRleHR1
cmVJbXBsICpnZXRJbXBsZW1lbnRhdGlvbigpIHsgcmV0dXJuIG1UZXh0dXJlOyB9Ci0gICAgY29u
c3Qgcng6OlRleHR1cmVJbXBsICpnZXRJbXBsZW1lbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1U
ZXh0dXJlOyB9CisgICAgcng6OlRleHR1cmVJbXBsICpnZXRJbXBsZW1lbnRhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1UZXh0dXJlOyB9CiAKICAgICAvLyBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmpl
Y3QgaW1wbGVtZW50YXRpb24KICAgICBFeHRlbnRzIGdldEF0dGFjaG1lbnRTaXplKGNvbnN0IEZy
YW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQpIGNvbnN0IG92ZXJyaWRlOwotICAg
IEdMZW51bSBnZXRBdHRhY2htZW50SW50ZXJuYWxGb3JtYXQoY29uc3QgRnJhbWVidWZmZXJBdHRh
Y2htZW50OjpUYXJnZXQgJnRhcmdldCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgRm9ybWF0
ICZnZXRBdHRhY2htZW50Rm9ybWF0KGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0
ICZ0YXJnZXQpIGNvbnN0IG92ZXJyaWRlOwogICAgIEdMc2l6ZWkgZ2V0QXR0YWNobWVudFNhbXBs
ZXMoY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50OjpUYXJnZXQgJnRhcmdldCkgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIG9uQXR0YWNoKCkgb3ZlcnJpZGU7CkBAIC0xNzksOCArMzE3LDQx
IEBACiAgICAgdm9pZCBvbkRldGFjaCgpIG92ZXJyaWRlOwogICAgIEdMdWludCBnZXRJZCgpIGNv
bnN0IG92ZXJyaWRlOwogCisgICAgZW51bSBEaXJ0eUJpdFR5cGUKKyAgICB7CisgICAgICAgIC8v
IFNhbXBsZXIgc3RhdGUKKyAgICAgICAgRElSVFlfQklUX01JTl9GSUxURVIsCisgICAgICAgIERJ
UlRZX0JJVF9NQUdfRklMVEVSLAorICAgICAgICBESVJUWV9CSVRfV1JBUF9TLAorICAgICAgICBE
SVJUWV9CSVRfV1JBUF9ULAorICAgICAgICBESVJUWV9CSVRfV1JBUF9SLAorICAgICAgICBESVJU
WV9CSVRfTUFYX0FOSVNPVFJPUFksCisgICAgICAgIERJUlRZX0JJVF9NSU5fTE9ELAorICAgICAg
ICBESVJUWV9CSVRfTUFYX0xPRCwKKyAgICAgICAgRElSVFlfQklUX0NPTVBBUkVfTU9ERSwKKyAg
ICAgICAgRElSVFlfQklUX0NPTVBBUkVfRlVOQywKKworICAgICAgICAvLyBUZXh0dXJlIHN0YXRl
CisgICAgICAgIERJUlRZX0JJVF9TV0laWkxFX1JFRCwKKyAgICAgICAgRElSVFlfQklUX1NXSVpa
TEVfR1JFRU4sCisgICAgICAgIERJUlRZX0JJVF9TV0laWkxFX0JMVUUsCisgICAgICAgIERJUlRZ
X0JJVF9TV0laWkxFX0FMUEhBLAorICAgICAgICBESVJUWV9CSVRfQkFTRV9MRVZFTCwKKyAgICAg
ICAgRElSVFlfQklUX01BWF9MRVZFTCwKKworICAgICAgICAvLyBNaXNjCisgICAgICAgIERJUlRZ
X0JJVF9MQUJFTCwKKyAgICAgICAgRElSVFlfQklUX1VTQUdFLAorCisgICAgICAgIERJUlRZX0JJ
VF9DT1VOVCwKKyAgICB9OworICAgIHVzaW5nIERpcnR5Qml0cyA9IHN0ZDo6Yml0c2V0PERJUlRZ
X0JJVF9DT1VOVD47CisKKyAgICB2b2lkIHN5bmNJbXBsU3RhdGUoKTsKKyAgICBib29sIGhhc0Fu
eURpcnR5Qml0KCkgY29uc3QgeyByZXR1cm4gbURpcnR5Qml0cy5hbnkoKTsgfQorCiAgIHByaXZh
dGU6Ci0gICAgcng6OkZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdEltcGwgKmdldEF0dGFjaG1l
bnRJbXBsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbVRleHR1cmU7IH0KKyAgICByeDo6RnJh
bWVidWZmZXJBdHRhY2htZW50T2JqZWN0SW1wbCAqZ2V0QXR0YWNobWVudEltcGwoKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIC8vIEFOR0xFLW9ubHkgbWV0aG9kLCB1c2VkIGludGVybmFsbHkKICAg
ICBmcmllbmQgY2xhc3MgZWdsOjpTdXJmYWNlOwpAQCAtMTg3LDU5ICszNTgsMzcgQEAKICAgICB2
b2lkIGJpbmRUZXhJbWFnZUZyb21TdXJmYWNlKGVnbDo6U3VyZmFjZSAqc3VyZmFjZSk7CiAgICAg
dm9pZCByZWxlYXNlVGV4SW1hZ2VGcm9tU3VyZmFjZSgpOwogCisgICAgLy8gQU5HTEUtb25seSBt
ZXRob2RzLCB1c2VkIGludGVybmFsbHkKKyAgICBmcmllbmQgY2xhc3MgZWdsOjpTdHJlYW07Cisg
ICAgdm9pZCBiaW5kU3RyZWFtKGVnbDo6U3RyZWFtICpzdHJlYW0pOworICAgIHZvaWQgcmVsZWFz
ZVN0cmVhbSgpOworICAgIHZvaWQgYWNxdWlyZUltYWdlRnJvbVN0cmVhbShjb25zdCBlZ2w6OlN0
cmVhbTo6R0xUZXh0dXJlRGVzY3JpcHRpb24gJmRlc2MpOworICAgIHZvaWQgcmVsZWFzZUltYWdl
RnJvbVN0cmVhbSgpOworCisgICAgVGV4dHVyZVN0YXRlIG1TdGF0ZTsKKyAgICBEaXJ0eUJpdHMg
bURpcnR5Qml0czsKICAgICByeDo6VGV4dHVyZUltcGwgKm1UZXh0dXJlOwogCiAgICAgc3RkOjpz
dHJpbmcgbUxhYmVsOwogCi0gICAgVGV4dHVyZVN0YXRlIG1UZXh0dXJlU3RhdGU7Ci0KLSAgICBH
TGVudW0gbVRhcmdldDsKLQotICAgIHN0cnVjdCBJbWFnZURlc2MKLSAgICB7Ci0gICAgICAgIEV4
dGVudHMgc2l6ZTsKLSAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0OwotCi0gICAgICAgIElt
YWdlRGVzYygpOwotICAgICAgICBJbWFnZURlc2MoY29uc3QgRXh0ZW50cyAmc2l6ZSwgR0xlbnVt
IGludGVybmFsRm9ybWF0KTsKLSAgICB9OwotCi0gICAgR0xlbnVtIGdldEJhc2VJbWFnZVRhcmdl
dCgpIGNvbnN0OwotCi0gICAgYm9vbCBjb21wdXRlU2FtcGxlckNvbXBsZXRlbmVzcyhjb25zdCBT
YW1wbGVyU3RhdGUgJnNhbXBsZXJTdGF0ZSwgY29uc3QgRGF0YSAmZGF0YSkgY29uc3Q7Ci0gICAg
Ym9vbCBjb21wdXRlTWlwbWFwQ29tcGxldGVuZXNzKCkgY29uc3Q7Ci0gICAgYm9vbCBjb21wdXRl
TGV2ZWxDb21wbGV0ZW5lc3MoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsKSBjb25zdDsKLQot
ICAgIGNvbnN0IEltYWdlRGVzYyAmZ2V0SW1hZ2VEZXNjKEdMZW51bSB0YXJnZXQsIHNpemVfdCBs
ZXZlbCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRJbWFnZURlc2MoR0xlbnVtIHRhcmdldCwgc2l6ZV90
IGxldmVsLCBjb25zdCBJbWFnZURlc2MgJmRlc2MpOwotICAgIHZvaWQgc2V0SW1hZ2VEZXNjQ2hh
aW4oc2l6ZV90IGxldmVscywgRXh0ZW50cyBiYXNlU2l6ZSwgR0xlbnVtIHNpemVkSW50ZXJuYWxG
b3JtYXQpOwotICAgIHZvaWQgY2xlYXJJbWFnZURlc2MoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxl
dmVsKTsKLSAgICB2b2lkIGNsZWFySW1hZ2VEZXNjcygpOwogICAgIHZvaWQgcmVsZWFzZVRleElt
YWdlSW50ZXJuYWwoKTsKIAotICAgIHN0ZDo6dmVjdG9yPEltYWdlRGVzYz4gbUltYWdlRGVzY3M7
Ci0KLSAgICBzdHJ1Y3QgU2FtcGxlckNvbXBsZXRlbmVzc0NhY2hlCi0gICAgewotICAgICAgICBT
YW1wbGVyQ29tcGxldGVuZXNzQ2FjaGUoKTsKLQotICAgICAgICBib29sIGNhY2hlVmFsaWQ7Ci0K
LSAgICAgICAgLy8gQWxsIHZhbHVlcyB0aGF0IGFmZmVjdCBzYW1wbGVyIGNvbXBsZXRlbmVzcyB0
aGF0IGFyZSBub3Qgc3RvcmVkIHdpdGhpbgotICAgICAgICAvLyB0aGUgdGV4dHVyZSBpdHNlbGYK
LSAgICAgICAgU2FtcGxlclN0YXRlIHNhbXBsZXJTdGF0ZTsKLSAgICAgICAgYm9vbCBmaWx0ZXJh
YmxlOwotICAgICAgICBHTGludCBjbGllbnRWZXJzaW9uOwotICAgICAgICBib29sIHN1cHBvcnRz
TlBPVDsKLQotICAgICAgICAvLyBSZXN1bHQgb2YgdGhlIHNhbXBsZXIgY29tcGxldGVuZXNzIHdp
dGggdGhlIGFib3ZlIHBhcmFtZXRlcnMKLSAgICAgICAgYm9vbCBzYW1wbGVyQ29tcGxldGU7Ci0g
ICAgfTsKLSAgICBtdXRhYmxlIFNhbXBsZXJDb21wbGV0ZW5lc3NDYWNoZSBtQ29tcGxldGVuZXNz
Q2FjaGU7Ci0KICAgICBlZ2w6OlN1cmZhY2UgKm1Cb3VuZFN1cmZhY2U7CisgICAgZWdsOjpTdHJl
YW0gKm1Cb3VuZFN0cmVhbTsKIH07CiAKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVGV4
dHVyZVN0YXRlICZhLCBjb25zdCBUZXh0dXJlU3RhdGUgJmIpCit7CisgICAgcmV0dXJuIGEubVN3
aXp6bGVTdGF0ZSA9PSBiLm1Td2l6emxlU3RhdGUgJiYgYS5tU2FtcGxlclN0YXRlID09IGIubVNh
bXBsZXJTdGF0ZSAmJgorICAgICAgICAgICBhLm1CYXNlTGV2ZWwgPT0gYi5tQmFzZUxldmVsICYm
IGEubU1heExldmVsID09IGIubU1heExldmVsICYmCisgICAgICAgICAgIGEubUltbXV0YWJsZUZv
cm1hdCA9PSBiLm1JbW11dGFibGVGb3JtYXQgJiYgYS5tSW1tdXRhYmxlTGV2ZWxzID09IGIubUlt
bXV0YWJsZUxldmVscyAmJgorICAgICAgICAgICBhLm1Vc2FnZSA9PSBiLm1Vc2FnZTsKIH0KIAor
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUZXh0dXJlU3RhdGUgJmEsIGNvbnN0IFRleHR1
cmVTdGF0ZSAmYikKK3sKKyAgICByZXR1cm4gIShhID09IGIpOworfQorfQorCiAjZW5kaWYgICAv
LyBMSUJBTkdMRV9URVhUVVJFX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvVHJhbnNmb3JtRmVlZGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9UcmFuc2Zvcm1GZWVkYmFjay5jcHAJKHJldmlzaW9u
IDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9UcmFuc2Zv
cm1GZWVkYmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgsMzggKzgsNTkgQEAKIAogI2luY2x1
ZGUgImxpYkFOR0xFL0J1ZmZlci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0NhcHMuaCIKKyNpbmNs
dWRlICJsaWJBTkdMRS9Db250ZXh0U3RhdGUuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Qcm9ncmFt
LmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvSW1wbEZhY3RvcnkuaCIKKyNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9HTEltcGxGYWN0b3J5LmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvVHJhbnNmb3JtRmVlZGJhY2tJbXBsLmgiCiAKIG5hbWVzcGFjZSBnbAogewogCi1U
cmFuc2Zvcm1GZWVkYmFjazo6VHJhbnNmb3JtRmVlZGJhY2socng6OkltcGxGYWN0b3J5ICppbXBs
RmFjdG9yeSwgR0x1aW50IGlkLCBjb25zdCBDYXBzICZjYXBzKQotICAgIDogUmVmQ291bnRPYmpl
Y3QoaWQpLAotICAgICAgbUltcGxlbWVudGF0aW9uKGltcGxGYWN0b3J5LT5jcmVhdGVUcmFuc2Zv
cm1GZWVkYmFjaygpKSwKLSAgICAgIG1MYWJlbCgpLAorVHJhbnNmb3JtRmVlZGJhY2tTdGF0ZTo6
VHJhbnNmb3JtRmVlZGJhY2tTdGF0ZShzaXplX3QgbWF4SW5kZXhlZEJ1ZmZlcnMpCisgICAgOiBt
TGFiZWwoKSwKICAgICAgIG1BY3RpdmUoZmFsc2UpLAogICAgICAgbVByaW1pdGl2ZU1vZGUoR0xf
Tk9ORSksCiAgICAgICBtUGF1c2VkKGZhbHNlKSwKICAgICAgIG1Qcm9ncmFtKG51bGxwdHIpLAog
ICAgICAgbUdlbmVyaWNCdWZmZXIoKSwKLSAgICAgIG1JbmRleGVkQnVmZmVycyhjYXBzLm1heFRy
YW5zZm9ybUZlZWRiYWNrU2VwYXJhdGVBdHRyaWJ1dGVzKQorICAgICAgbUluZGV4ZWRCdWZmZXJz
KG1heEluZGV4ZWRCdWZmZXJzKQogeworfQorCitjb25zdCBCaW5kaW5nUG9pbnRlcjxCdWZmZXI+
ICZUcmFuc2Zvcm1GZWVkYmFja1N0YXRlOjpnZXRHZW5lcmljQnVmZmVyKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbUdlbmVyaWNCdWZmZXI7Cit9CisKK2NvbnN0IE9mZnNldEJpbmRpbmdQb2ludGVy
PEJ1ZmZlcj4gJlRyYW5zZm9ybUZlZWRiYWNrU3RhdGU6OmdldEluZGV4ZWRCdWZmZXIoc2l6ZV90
IGlkeCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUluZGV4ZWRCdWZmZXJzW2lkeF07Cit9CisKK2Nv
bnN0IHN0ZDo6dmVjdG9yPE9mZnNldEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4+ICZUcmFuc2Zvcm1G
ZWVkYmFja1N0YXRlOjpnZXRJbmRleGVkQnVmZmVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1J
bmRleGVkQnVmZmVyczsKK30KKworVHJhbnNmb3JtRmVlZGJhY2s6OlRyYW5zZm9ybUZlZWRiYWNr
KHJ4OjpHTEltcGxGYWN0b3J5ICppbXBsRmFjdG9yeSwgR0x1aW50IGlkLCBjb25zdCBDYXBzICZj
YXBzKQorICAgIDogUmVmQ291bnRPYmplY3QoaWQpLAorICAgICAgbVN0YXRlKGNhcHMubWF4VHJh
bnNmb3JtRmVlZGJhY2tTZXBhcmF0ZUF0dHJpYnV0ZXMpLAorICAgICAgbUltcGxlbWVudGF0aW9u
KGltcGxGYWN0b3J5LT5jcmVhdGVUcmFuc2Zvcm1GZWVkYmFjayhtU3RhdGUpKQorewogICAgIEFT
U0VSVChtSW1wbGVtZW50YXRpb24gIT0gbnVsbHB0cik7CiB9CiAKIFRyYW5zZm9ybUZlZWRiYWNr
Ojp+VHJhbnNmb3JtRmVlZGJhY2soKQogewotICAgIGlmIChtUHJvZ3JhbSkKKyAgICBpZiAobVN0
YXRlLm1Qcm9ncmFtKQogICAgIHsKLSAgICAgICAgbVByb2dyYW0tPnJlbGVhc2UoKTsKLSAgICAg
ICAgbVByb2dyYW0gPSBudWxscHRyOworICAgICAgICBtU3RhdGUubVByb2dyYW0tPnJlbGVhc2Uo
KTsKKyAgICAgICAgbVN0YXRlLm1Qcm9ncmFtID0gbnVsbHB0cjsKICAgICB9Ci0gICAgbUdlbmVy
aWNCdWZmZXIuc2V0KG51bGxwdHIpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUluZGV4
ZWRCdWZmZXJzLnNpemUoKTsgaSsrKQorICAgIG1TdGF0ZS5tR2VuZXJpY0J1ZmZlci5zZXQobnVs
bHB0cik7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtU3RhdGUubUluZGV4ZWRCdWZmZXJz
LnNpemUoKTsgaSsrKQogICAgIHsKLSAgICAgICAgbUluZGV4ZWRCdWZmZXJzW2ldLnNldChudWxs
cHRyKTsKKyAgICAgICAgbVN0YXRlLm1JbmRleGVkQnVmZmVyc1tpXS5zZXQobnVsbHB0cik7CiAg
ICAgfQogCiAgICAgU2FmZURlbGV0ZShtSW1wbGVtZW50YXRpb24pOwpAQCAtNDcsMTkgKzY4LDE5
IEBACiAKIHZvaWQgVHJhbnNmb3JtRmVlZGJhY2s6OnNldExhYmVsKGNvbnN0IHN0ZDo6c3RyaW5n
ICZsYWJlbCkKIHsKLSAgICBtTGFiZWwgPSBsYWJlbDsKKyAgICBtU3RhdGUubUxhYmVsID0gbGFi
ZWw7CiB9CiAKIGNvbnN0IHN0ZDo6c3RyaW5nICZUcmFuc2Zvcm1GZWVkYmFjazo6Z2V0TGFiZWwo
KSBjb25zdAogewotICAgIHJldHVybiBtTGFiZWw7CisgICAgcmV0dXJuIG1TdGF0ZS5tTGFiZWw7
CiB9CiAKIHZvaWQgVHJhbnNmb3JtRmVlZGJhY2s6OmJlZ2luKEdMZW51bSBwcmltaXRpdmVNb2Rl
LCBQcm9ncmFtICpwcm9ncmFtKQogewotICAgIG1BY3RpdmUgPSB0cnVlOwotICAgIG1QcmltaXRp
dmVNb2RlID0gcHJpbWl0aXZlTW9kZTsKLSAgICBtUGF1c2VkID0gZmFsc2U7CisgICAgbVN0YXRl
Lm1BY3RpdmUgICAgICAgID0gdHJ1ZTsKKyAgICBtU3RhdGUubVByaW1pdGl2ZU1vZGUgPSBwcmlt
aXRpdmVNb2RlOworICAgIG1TdGF0ZS5tUGF1c2VkICAgICAgICA9IGZhbHNlOwogICAgIG1JbXBs
ZW1lbnRhdGlvbi0+YmVnaW4ocHJpbWl0aXZlTW9kZSk7CiAgICAgYmluZFByb2dyYW0ocHJvZ3Jh
bSk7CiB9CkBAIC02Niw1NiArODcsNTYgQEAKIAogdm9pZCBUcmFuc2Zvcm1GZWVkYmFjazo6ZW5k
KCkKIHsKLSAgICBtQWN0aXZlID0gZmFsc2U7Ci0gICAgbVByaW1pdGl2ZU1vZGUgPSBHTF9OT05F
OwotICAgIG1QYXVzZWQgPSBmYWxzZTsKKyAgICBtU3RhdGUubUFjdGl2ZSAgICAgICAgPSBmYWxz
ZTsKKyAgICBtU3RhdGUubVByaW1pdGl2ZU1vZGUgPSBHTF9OT05FOworICAgIG1TdGF0ZS5tUGF1
c2VkICAgICAgICA9IGZhbHNlOwogICAgIG1JbXBsZW1lbnRhdGlvbi0+ZW5kKCk7Ci0gICAgaWYg
KG1Qcm9ncmFtKQorICAgIGlmIChtU3RhdGUubVByb2dyYW0pCiAgICAgewotICAgICAgICBtUHJv
Z3JhbS0+cmVsZWFzZSgpOwotICAgICAgICBtUHJvZ3JhbSA9IG51bGxwdHI7CisgICAgICAgIG1T
dGF0ZS5tUHJvZ3JhbS0+cmVsZWFzZSgpOworICAgICAgICBtU3RhdGUubVByb2dyYW0gPSBudWxs
cHRyOwogICAgIH0KIH0KIAogdm9pZCBUcmFuc2Zvcm1GZWVkYmFjazo6cGF1c2UoKQogewotICAg
IG1QYXVzZWQgPSB0cnVlOworICAgIG1TdGF0ZS5tUGF1c2VkID0gdHJ1ZTsKICAgICBtSW1wbGVt
ZW50YXRpb24tPnBhdXNlKCk7CiB9CiAKIHZvaWQgVHJhbnNmb3JtRmVlZGJhY2s6OnJlc3VtZSgp
CiB7Ci0gICAgbVBhdXNlZCA9IGZhbHNlOworICAgIG1TdGF0ZS5tUGF1c2VkID0gZmFsc2U7CiAg
ICAgbUltcGxlbWVudGF0aW9uLT5yZXN1bWUoKTsKIH0KIAogYm9vbCBUcmFuc2Zvcm1GZWVkYmFj
azo6aXNBY3RpdmUoKSBjb25zdAogewotICAgIHJldHVybiBtQWN0aXZlOworICAgIHJldHVybiBt
U3RhdGUubUFjdGl2ZTsKIH0KIAogYm9vbCBUcmFuc2Zvcm1GZWVkYmFjazo6aXNQYXVzZWQoKSBj
b25zdAogewotICAgIHJldHVybiBtUGF1c2VkOworICAgIHJldHVybiBtU3RhdGUubVBhdXNlZDsK
IH0KIAogR0xlbnVtIFRyYW5zZm9ybUZlZWRiYWNrOjpnZXRQcmltaXRpdmVNb2RlKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbVByaW1pdGl2ZU1vZGU7CisgICAgcmV0dXJuIG1TdGF0ZS5tUHJpbWl0
aXZlTW9kZTsKIH0KIAogdm9pZCBUcmFuc2Zvcm1GZWVkYmFjazo6YmluZFByb2dyYW0oUHJvZ3Jh
bSAqcHJvZ3JhbSkKIHsKLSAgICBpZiAobVByb2dyYW0gIT0gcHJvZ3JhbSkKKyAgICBpZiAobVN0
YXRlLm1Qcm9ncmFtICE9IHByb2dyYW0pCiAgICAgewotICAgICAgICBpZiAobVByb2dyYW0gIT0g
bnVsbHB0cikKKyAgICAgICAgaWYgKG1TdGF0ZS5tUHJvZ3JhbSAhPSBudWxscHRyKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBtUHJvZ3JhbS0+cmVsZWFzZSgpOworICAgICAgICAgICAgbVN0YXRl
Lm1Qcm9ncmFtLT5yZWxlYXNlKCk7CiAgICAgICAgIH0KLSAgICAgICAgbVByb2dyYW0gPSBwcm9n
cmFtOwotICAgICAgICBpZiAobVByb2dyYW0gIT0gbnVsbHB0cikKKyAgICAgICAgbVN0YXRlLm1Q
cm9ncmFtID0gcHJvZ3JhbTsKKyAgICAgICAgaWYgKG1TdGF0ZS5tUHJvZ3JhbSAhPSBudWxscHRy
KQogICAgICAgICB7Ci0gICAgICAgICAgICBtUHJvZ3JhbS0+YWRkUmVmKCk7CisgICAgICAgICAg
ICBtU3RhdGUubVByb2dyYW0tPmFkZFJlZigpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTIy
LDU0ICsxNDMsNTQgQEAKIAogYm9vbCBUcmFuc2Zvcm1GZWVkYmFjazo6aGFzQm91bmRQcm9ncmFt
KEdMdWludCBwcm9ncmFtKSBjb25zdAogewotICAgIHJldHVybiBtUHJvZ3JhbSAhPSBudWxscHRy
ICYmIG1Qcm9ncmFtLT5pZCgpID09IHByb2dyYW07CisgICAgcmV0dXJuIG1TdGF0ZS5tUHJvZ3Jh
bSAhPSBudWxscHRyICYmIG1TdGF0ZS5tUHJvZ3JhbS0+aWQoKSA9PSBwcm9ncmFtOwogfQogCiB2
b2lkIFRyYW5zZm9ybUZlZWRiYWNrOjpiaW5kR2VuZXJpY0J1ZmZlcihCdWZmZXIgKmJ1ZmZlcikK
IHsKLSAgICBtR2VuZXJpY0J1ZmZlci5zZXQoYnVmZmVyKTsKLSAgICBtSW1wbGVtZW50YXRpb24t
PmJpbmRHZW5lcmljQnVmZmVyKG1HZW5lcmljQnVmZmVyKTsKKyAgICBtU3RhdGUubUdlbmVyaWNC
dWZmZXIuc2V0KGJ1ZmZlcik7CisgICAgbUltcGxlbWVudGF0aW9uLT5iaW5kR2VuZXJpY0J1ZmZl
cihtU3RhdGUubUdlbmVyaWNCdWZmZXIpOwogfQogCiB2b2lkIFRyYW5zZm9ybUZlZWRiYWNrOjpk
ZXRhY2hCdWZmZXIoR0x1aW50IGJ1ZmZlck5hbWUpCiB7Ci0gICAgZm9yIChzaXplX3QgaW5kZXgg
PSAwOyBpbmRleCA8IG1JbmRleGVkQnVmZmVycy5zaXplKCk7IGluZGV4KyspCisgICAgZm9yIChz
aXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1TdGF0ZS5tSW5kZXhlZEJ1ZmZlcnMuc2l6ZSgpOyBp
bmRleCsrKQogICAgIHsKLSAgICAgICAgaWYgKG1JbmRleGVkQnVmZmVyc1tpbmRleF0uaWQoKSA9
PSBidWZmZXJOYW1lKQorICAgICAgICBpZiAobVN0YXRlLm1JbmRleGVkQnVmZmVyc1tpbmRleF0u
aWQoKSA9PSBidWZmZXJOYW1lKQogICAgICAgICB7Ci0gICAgICAgICAgICBtSW5kZXhlZEJ1ZmZl
cnNbaW5kZXhdLnNldChudWxscHRyKTsKLSAgICAgICAgICAgIG1JbXBsZW1lbnRhdGlvbi0+Ymlu
ZEluZGV4ZWRCdWZmZXIoaW5kZXgsIG1JbmRleGVkQnVmZmVyc1tpbmRleF0pOworICAgICAgICAg
ICAgbVN0YXRlLm1JbmRleGVkQnVmZmVyc1tpbmRleF0uc2V0KG51bGxwdHIpOworICAgICAgICAg
ICAgbUltcGxlbWVudGF0aW9uLT5iaW5kSW5kZXhlZEJ1ZmZlcihpbmRleCwgbVN0YXRlLm1JbmRl
eGVkQnVmZmVyc1tpbmRleF0pOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKG1HZW5lcmlj
QnVmZmVyLmlkKCkgPT0gYnVmZmVyTmFtZSkKKyAgICBpZiAobVN0YXRlLm1HZW5lcmljQnVmZmVy
LmlkKCkgPT0gYnVmZmVyTmFtZSkKICAgICB7Ci0gICAgICAgIG1HZW5lcmljQnVmZmVyLnNldChu
dWxscHRyKTsKLSAgICAgICAgbUltcGxlbWVudGF0aW9uLT5iaW5kR2VuZXJpY0J1ZmZlcihtR2Vu
ZXJpY0J1ZmZlcik7CisgICAgICAgIG1TdGF0ZS5tR2VuZXJpY0J1ZmZlci5zZXQobnVsbHB0cik7
CisgICAgICAgIG1JbXBsZW1lbnRhdGlvbi0+YmluZEdlbmVyaWNCdWZmZXIobVN0YXRlLm1HZW5l
cmljQnVmZmVyKTsKICAgICB9CiB9CiAKIGNvbnN0IEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4gJlRy
YW5zZm9ybUZlZWRiYWNrOjpnZXRHZW5lcmljQnVmZmVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bUdlbmVyaWNCdWZmZXI7CisgICAgcmV0dXJuIG1TdGF0ZS5tR2VuZXJpY0J1ZmZlcjsKIH0KIAog
dm9pZCBUcmFuc2Zvcm1GZWVkYmFjazo6YmluZEluZGV4ZWRCdWZmZXIoc2l6ZV90IGluZGV4LCBC
dWZmZXIgKmJ1ZmZlciwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUpCiB7Ci0gICAgQVNTRVJU
KGluZGV4IDwgbUluZGV4ZWRCdWZmZXJzLnNpemUoKSk7Ci0gICAgbUluZGV4ZWRCdWZmZXJzW2lu
ZGV4XS5zZXQoYnVmZmVyLCBvZmZzZXQsIHNpemUpOwotICAgIG1JbXBsZW1lbnRhdGlvbi0+Ymlu
ZEluZGV4ZWRCdWZmZXIoaW5kZXgsIG1JbmRleGVkQnVmZmVyc1tpbmRleF0pOworICAgIEFTU0VS
VChpbmRleCA8IG1TdGF0ZS5tSW5kZXhlZEJ1ZmZlcnMuc2l6ZSgpKTsKKyAgICBtU3RhdGUubUlu
ZGV4ZWRCdWZmZXJzW2luZGV4XS5zZXQoYnVmZmVyLCBvZmZzZXQsIHNpemUpOworICAgIG1JbXBs
ZW1lbnRhdGlvbi0+YmluZEluZGV4ZWRCdWZmZXIoaW5kZXgsIG1TdGF0ZS5tSW5kZXhlZEJ1ZmZl
cnNbaW5kZXhdKTsKIH0KIAogY29uc3QgT2Zmc2V0QmluZGluZ1BvaW50ZXI8QnVmZmVyPiAmVHJh
bnNmb3JtRmVlZGJhY2s6OmdldEluZGV4ZWRCdWZmZXIoc2l6ZV90IGluZGV4KSBjb25zdAogewot
ICAgIEFTU0VSVChpbmRleCA8IG1JbmRleGVkQnVmZmVycy5zaXplKCkpOwotICAgIHJldHVybiBt
SW5kZXhlZEJ1ZmZlcnNbaW5kZXhdOworICAgIEFTU0VSVChpbmRleCA8IG1TdGF0ZS5tSW5kZXhl
ZEJ1ZmZlcnMuc2l6ZSgpKTsKKyAgICByZXR1cm4gbVN0YXRlLm1JbmRleGVkQnVmZmVyc1tpbmRl
eF07CiB9CiAKIHNpemVfdCBUcmFuc2Zvcm1GZWVkYmFjazo6Z2V0SW5kZXhlZEJ1ZmZlckNvdW50
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbUluZGV4ZWRCdWZmZXJzLnNpemUoKTsKKyAgICByZXR1
cm4gbVN0YXRlLm1JbmRleGVkQnVmZmVycy5zaXplKCk7CiB9CiAKIHJ4OjpUcmFuc2Zvcm1GZWVk
YmFja0ltcGwgKlRyYW5zZm9ybUZlZWRiYWNrOjpnZXRJbXBsZW1lbnRhdGlvbigpCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVHJhbnNmb3JtRmVlZGJhY2suaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVHJhbnNm
b3JtRmVlZGJhY2suaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL1RyYW5zZm9ybUZlZWRiYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2
LDcgKzE2LDcgQEAKIAogbmFtZXNwYWNlIHJ4CiB7Ci1jbGFzcyBJbXBsRmFjdG9yeTsKK2NsYXNz
IEdMSW1wbEZhY3Rvcnk7CiBjbGFzcyBUcmFuc2Zvcm1GZWVkYmFja0ltcGw7CiB9CiAKQEAgLTI2
LDEwICsyNiwzNCBAQAogc3RydWN0IENhcHM7CiBjbGFzcyBQcm9ncmFtOwogCitjbGFzcyBUcmFu
c2Zvcm1GZWVkYmFja1N0YXRlIGZpbmFsIDogcHVibGljIGFuZ2xlOjpOb25Db3B5YWJsZQorewor
ICBwdWJsaWM6CisgICAgVHJhbnNmb3JtRmVlZGJhY2tTdGF0ZShzaXplX3QgbWF4SW5kZXhlZEJ1
ZmZlcnMpOworCisgICAgY29uc3QgQmluZGluZ1BvaW50ZXI8QnVmZmVyPiAmZ2V0R2VuZXJpY0J1
ZmZlcigpIGNvbnN0OworICAgIGNvbnN0IE9mZnNldEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4gJmdl
dEluZGV4ZWRCdWZmZXIoc2l6ZV90IGlkeCkgY29uc3Q7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8
T2Zmc2V0QmluZGluZ1BvaW50ZXI8QnVmZmVyPj4gJmdldEluZGV4ZWRCdWZmZXJzKCkgY29uc3Q7
CisKKyAgcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgVHJhbnNmb3JtRmVlZGJhY2s7CisKKyAg
ICBzdGQ6OnN0cmluZyBtTGFiZWw7CisKKyAgICBib29sIG1BY3RpdmU7CisgICAgR0xlbnVtIG1Q
cmltaXRpdmVNb2RlOworICAgIGJvb2wgbVBhdXNlZDsKKworICAgIFByb2dyYW0gKm1Qcm9ncmFt
OworCisgICAgQmluZGluZ1BvaW50ZXI8QnVmZmVyPiBtR2VuZXJpY0J1ZmZlcjsKKyAgICBzdGQ6
OnZlY3RvcjxPZmZzZXRCaW5kaW5nUG9pbnRlcjxCdWZmZXI+PiBtSW5kZXhlZEJ1ZmZlcnM7Cit9
OworCiBjbGFzcyBUcmFuc2Zvcm1GZWVkYmFjayBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudE9iamVj
dCwgcHVibGljIExhYmVsZWRPYmplY3QKIHsKICAgcHVibGljOgotICAgIFRyYW5zZm9ybUZlZWRi
YWNrKHJ4OjpJbXBsRmFjdG9yeSAqaW1wbEZhY3RvcnksIEdMdWludCBpZCwgY29uc3QgQ2FwcyAm
Y2Fwcyk7CisgICAgVHJhbnNmb3JtRmVlZGJhY2socng6OkdMSW1wbEZhY3RvcnkgKmltcGxGYWN0
b3J5LCBHTHVpbnQgaWQsIGNvbnN0IENhcHMgJmNhcHMpOwogICAgIHZpcnR1YWwgflRyYW5zZm9y
bUZlZWRiYWNrKCk7CiAKICAgICB2b2lkIHNldExhYmVsKGNvbnN0IHN0ZDo6c3RyaW5nICZsYWJl
bCkgb3ZlcnJpZGU7CkBAIC02MSwxOCArODUsOCBAQAogICBwcml2YXRlOgogICAgIHZvaWQgYmlu
ZFByb2dyYW0oUHJvZ3JhbSAqcHJvZ3JhbSk7CiAKKyAgICBUcmFuc2Zvcm1GZWVkYmFja1N0YXRl
IG1TdGF0ZTsKICAgICByeDo6VHJhbnNmb3JtRmVlZGJhY2tJbXBsKiBtSW1wbGVtZW50YXRpb247
Ci0KLSAgICBzdGQ6OnN0cmluZyBtTGFiZWw7Ci0KLSAgICBib29sIG1BY3RpdmU7Ci0gICAgR0xl
bnVtIG1QcmltaXRpdmVNb2RlOwotICAgIGJvb2wgbVBhdXNlZDsKLQotICAgIFByb2dyYW0gKm1Q
cm9ncmFtOwotCi0gICAgQmluZGluZ1BvaW50ZXI8QnVmZmVyPiBtR2VuZXJpY0J1ZmZlcjsKLSAg
ICBzdGQ6OnZlY3RvcjxPZmZzZXRCaW5kaW5nUG9pbnRlcjxCdWZmZXI+PiBtSW5kZXhlZEJ1ZmZl
cnM7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
VHJhbnNmb3JtRmVlZGJhY2tfdW5pdHRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9UcmFuc2Zvcm1GZWVkYmFja191bml0dGVzdC5jcHAJ
KHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9UcmFuc2Zvcm1GZWVkYmFja191bml0dGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0LDYg
KzE0LDcgQEAKICNpbmNsdWRlICJ0ZXN0cy9hbmdsZV91bml0dGVzdHNfdXRpbHMuaCIKIAogdXNp
bmcgOjp0ZXN0aW5nOjpfOwordXNpbmcgOjp0ZXN0aW5nOjpnZXQ7CiB1c2luZyA6OnRlc3Rpbmc6
OlJldHVybjsKIHVzaW5nIDo6dGVzdGluZzo6U2V0QXJndW1lbnRQb2ludGVlOwogCkBAIC0yMCwx
MSArMjEsMTAgQEAKIG5hbWVzcGFjZQogewogCi1jbGFzcyBNb2NrRmFjdG9yeSA6IHB1YmxpYyBy
eDo6TnVsbEZhY3RvcnkKK0FDVElPTihDcmVhdGVNb2NrVHJhbnNmb3JtRmVlZGJhY2tJbXBsKQog
ewotICBwdWJsaWM6Ci0gICAgTU9DS19NRVRIT0QwKGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrLCBy
eDo6VHJhbnNmb3JtRmVlZGJhY2tJbXBsICooKSk7Ci19OworICAgIHJldHVybiBuZXcgcng6Ok1v
Y2tUcmFuc2Zvcm1GZWVkYmFja0ltcGwoYXJnMCk7Cit9CiAKIGNsYXNzIFRyYW5zZm9ybUZlZWRi
YWNrVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0CiB7CkBAIC0zMywxNyArMzMsMTggQEAKIAog
ICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgbUltcGwgPSBuZXcgcng6
Ok1vY2tUcmFuc2Zvcm1GZWVkYmFja0ltcGw7Ci0gICAgICAgIEVYUEVDVF9DQUxMKG1Nb2NrRmFj
dG9yeSwgY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSkKLSAgICAgICAgICAgIC5XaWxsT25jZShS
ZXR1cm4obUltcGwpKQorICAgICAgICBFWFBFQ1RfQ0FMTChtTW9ja0ZhY3RvcnksIGNyZWF0ZVRy
YW5zZm9ybUZlZWRiYWNrKF8pKQorICAgICAgICAgICAgLldpbGxPbmNlKENyZWF0ZU1vY2tUcmFu
c2Zvcm1GZWVkYmFja0ltcGwoKSkKICAgICAgICAgICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7
CiAKICAgICAgICAgLy8gU2V0IGEgcmVhc29uYWJsZSBudW1iZXIgb2YgdGYgYXR0cmlidXRlcwog
ICAgICAgICBtQ2Fwcy5tYXhUcmFuc2Zvcm1GZWVkYmFja1NlcGFyYXRlQXR0cmlidXRlcyA9IDg7
CiAKLSAgICAgICAgRVhQRUNUX0NBTEwoKm1JbXBsLCBkZXN0cnVjdG9yKCkpOwogICAgICAgICBt
RmVlZGJhY2sgPSBuZXcgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrKCZtTW9ja0ZhY3RvcnksIDEsIG1D
YXBzKTsKICAgICAgICAgbUZlZWRiYWNrLT5hZGRSZWYoKTsKKworICAgICAgICBtSW1wbCA9IHJ4
OjpHZXRJbXBsQXM8cng6Ok1vY2tUcmFuc2Zvcm1GZWVkYmFja0ltcGw+KG1GZWVkYmFjayk7Cisg
ICAgICAgIEVYUEVDVF9DQUxMKCptSW1wbCwgZGVzdHJ1Y3RvcigpKTsKICAgICB9CiAKICAgICB2
b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKQEAgLTU5LDcgKzYwLDcgQEAKICAgICAgICAgdGVzdGlu
Zzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXIobUltcGwpOwogICAgIH0KIAotICAgIE1vY2tGYWN0b3J5
IG1Nb2NrRmFjdG9yeTsKKyAgICByeDo6TW9ja0dMRmFjdG9yeSBtTW9ja0ZhY3Rvcnk7CiAgICAg
cng6Ok1vY2tUcmFuc2Zvcm1GZWVkYmFja0ltcGwqIG1JbXBsOwogICAgIGdsOjpUcmFuc2Zvcm1G
ZWVkYmFjayogbUZlZWRiYWNrOwogICAgIGdsOjpDYXBzIG1DYXBzOwpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1VuaWZvcm0uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Vbmlmb3JtLmNwcAkocmV2aXNpb24g
MjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1VuaWZvcm0u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNyArMTIxLDEyIEBACiB9CiAKIFVuaWZvcm1CbG9j
azo6VW5pZm9ybUJsb2NrKCkKLSAgICA6IGlzQXJyYXkoZmFsc2UpLCBhcnJheUVsZW1lbnQoMCks
IGRhdGFTaXplKDApLCB2ZXJ0ZXhTdGF0aWNVc2UoZmFsc2UpLCBmcmFnbWVudFN0YXRpY1VzZShm
YWxzZSkKKyAgICA6IGlzQXJyYXkoZmFsc2UpLAorICAgICAgYXJyYXlFbGVtZW50KDApLAorICAg
ICAgZGF0YVNpemUoMCksCisgICAgICB2ZXJ0ZXhTdGF0aWNVc2UoZmFsc2UpLAorICAgICAgZnJh
Z21lbnRTdGF0aWNVc2UoZmFsc2UpLAorICAgICAgY29tcHV0ZVN0YXRpY1VzZShmYWxzZSkKIHsK
IH0KIApAQCAtMTMxLDcgKzEzNiw4IEBACiAgICAgICBhcnJheUVsZW1lbnQoYXJyYXlFbGVtZW50
SW4pLAogICAgICAgZGF0YVNpemUoMCksCiAgICAgICB2ZXJ0ZXhTdGF0aWNVc2UoZmFsc2UpLAot
ICAgICAgZnJhZ21lbnRTdGF0aWNVc2UoZmFsc2UpCisgICAgICBmcmFnbWVudFN0YXRpY1VzZShm
YWxzZSksCisgICAgICBjb21wdXRlU3RhdGljVXNlKGZhbHNlKQogewogfQogCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVW5pZm9ybS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Vbmlmb3JtLmgJKHJldmlzaW9u
IDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Vbmlmb3Jt
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAKIAogICAgIGJvb2wgdmVydGV4U3Rh
dGljVXNlOwogICAgIGJvb2wgZnJhZ21lbnRTdGF0aWNVc2U7CisgICAgYm9vbCBjb21wdXRlU3Rh
dGljVXNlOwogCiAgICAgc3RkOjp2ZWN0b3I8dW5zaWduZWQgaW50PiBtZW1iZXJVbmlmb3JtSW5k
ZXhlczsKIH07CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVmVy
c2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9WZXJzaW9uLmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9WZXJzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDggQEAK
ICAgICBHTHVpbnQgbWlub3I7CiB9OwogCitib29sIG9wZXJhdG9yPT0oY29uc3QgVmVyc2lvbiAm
YSwgY29uc3QgVmVyc2lvbiAmYik7Citib29sIG9wZXJhdG9yIT0oY29uc3QgVmVyc2lvbiAmYSwg
Y29uc3QgVmVyc2lvbiAmYik7CiBib29sIG9wZXJhdG9yPj0oY29uc3QgVmVyc2lvbiAmYSwgY29u
c3QgVmVyc2lvbiAmYik7CiBib29sIG9wZXJhdG9yPChjb25zdCBWZXJzaW9uICZhLCBjb25zdCBW
ZXJzaW9uICZiKTsKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L1ZlcnNpb24uaW5sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9WZXJzaW9uLmlubAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL1ZlcnNpb24uaW5sCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw2
ICsyMCwxNiBAQAogICAgIG1pbm9yID0gbWlub3JfOwogfQogCitpbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFZlcnNpb24gJmEsIGNvbnN0IFZlcnNpb24gJmIpCit7CisgICAgcmV0dXJuIGEu
bWFqb3IgPT0gYi5tYWpvciAmJiBhLm1pbm9yID09IGIubWlub3I7Cit9CisKK2lubGluZSBib29s
IG9wZXJhdG9yIT0oY29uc3QgVmVyc2lvbiAmYSwgY29uc3QgVmVyc2lvbiAmYikKK3sKKyAgICBy
ZXR1cm4gIShhID09IGIpOworfQorCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFZlcnNp
b24gJmEsIGNvbnN0IFZlcnNpb24gJmIpCiB7CiAgICAgcmV0dXJuIGEubWFqb3IgPiBiLm1ham9y
IHx8IChhLm1ham9yID09IGIubWFqb3IgJiYgYS5taW5vciA+PSBiLm1pbm9yKTsKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9WZXJ0ZXhBcnJheS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1ZlcnRleEFycmF5
LmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL1ZlcnRleEFycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOCwxOCArOCwxOCBAQAog
CiAjaW5jbHVkZSAibGliQU5HTEUvVmVydGV4QXJyYXkuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9C
dWZmZXIuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9JbXBsRmFjdG9yeS5oIgorI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0dMSW1wbEZhY3RvcnkuaCIKICNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9WZXJ0ZXhBcnJheUltcGwuaCIKIAogbmFtZXNwYWNlIGdsCiB7CiAKLVZl
cnRleEFycmF5OjpEYXRhOjpEYXRhKHNpemVfdCBtYXhBdHRyaWJzKQorVmVydGV4QXJyYXlTdGF0
ZTo6VmVydGV4QXJyYXlTdGF0ZShzaXplX3QgbWF4QXR0cmlicykKICAgICA6IG1MYWJlbCgpLCBt
VmVydGV4QXR0cmlidXRlcyhtYXhBdHRyaWJzKSwgbU1heEVuYWJsZWRBdHRyaWJ1dGUoMCkKIHsK
IH0KIAotVmVydGV4QXJyYXk6OkRhdGE6On5EYXRhKCkKK1ZlcnRleEFycmF5U3RhdGU6On5WZXJ0
ZXhBcnJheVN0YXRlKCkKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGdldE1heEF0dHJp
YnMoKTsgaSsrKQogICAgIHsKQEAgLTI4LDggKzI4LDggQEAKICAgICBtRWxlbWVudEFycmF5QnVm
ZmVyLnNldChudWxscHRyKTsKIH0KIAotVmVydGV4QXJyYXk6OlZlcnRleEFycmF5KHJ4OjpJbXBs
RmFjdG9yeSAqZmFjdG9yeSwgR0x1aW50IGlkLCBzaXplX3QgbWF4QXR0cmlicykKLSAgICA6IG1J
ZChpZCksIG1EYXRhKG1heEF0dHJpYnMpLCBtVmVydGV4QXJyYXkoZmFjdG9yeS0+Y3JlYXRlVmVy
dGV4QXJyYXkobURhdGEpKQorVmVydGV4QXJyYXk6OlZlcnRleEFycmF5KHJ4OjpHTEltcGxGYWN0
b3J5ICpmYWN0b3J5LCBHTHVpbnQgaWQsIHNpemVfdCBtYXhBdHRyaWJzKQorICAgIDogbUlkKGlk
KSwgbVN0YXRlKG1heEF0dHJpYnMpLCBtVmVydGV4QXJyYXkoZmFjdG9yeS0+Y3JlYXRlVmVydGV4
QXJyYXkobVN0YXRlKSkKIHsKIH0KIApAQCAtNDUsMTIgKzQ1LDEyIEBACiAKIHZvaWQgVmVydGV4
QXJyYXk6OnNldExhYmVsKGNvbnN0IHN0ZDo6c3RyaW5nICZsYWJlbCkKIHsKLSAgICBtRGF0YS5t
TGFiZWwgPSBsYWJlbDsKKyAgICBtU3RhdGUubUxhYmVsID0gbGFiZWw7CiB9CiAKIGNvbnN0IHN0
ZDo6c3RyaW5nICZWZXJ0ZXhBcnJheTo6Z2V0TGFiZWwoKSBjb25zdAogewotICAgIHJldHVybiBt
RGF0YS5tTGFiZWw7CisgICAgcmV0dXJuIG1TdGF0ZS5tTGFiZWw7CiB9CiAKIHZvaWQgVmVydGV4
QXJyYXk6OmRldGFjaEJ1ZmZlcihHTHVpbnQgYnVmZmVyTmFtZSkKQEAgLTU3LDE1ICs1NywxNSBA
QAogewogICAgIGZvciAoc2l6ZV90IGF0dHJpYnV0ZSA9IDA7IGF0dHJpYnV0ZSA8IGdldE1heEF0
dHJpYnMoKTsgYXR0cmlidXRlKyspCiAgICAgewotICAgICAgICBpZiAobURhdGEubVZlcnRleEF0
dHJpYnV0ZXNbYXR0cmlidXRlXS5idWZmZXIuaWQoKSA9PSBidWZmZXJOYW1lKQorICAgICAgICBp
ZiAobVN0YXRlLm1WZXJ0ZXhBdHRyaWJ1dGVzW2F0dHJpYnV0ZV0uYnVmZmVyLmlkKCkgPT0gYnVm
ZmVyTmFtZSkKICAgICAgICAgewotICAgICAgICAgICAgbURhdGEubVZlcnRleEF0dHJpYnV0ZXNb
YXR0cmlidXRlXS5idWZmZXIuc2V0KG51bGxwdHIpOworICAgICAgICAgICAgbVN0YXRlLm1WZXJ0
ZXhBdHRyaWJ1dGVzW2F0dHJpYnV0ZV0uYnVmZmVyLnNldChudWxscHRyKTsKICAgICAgICAgfQog
ICAgIH0KIAotICAgIGlmIChtRGF0YS5tRWxlbWVudEFycmF5QnVmZmVyLmlkKCkgPT0gYnVmZmVy
TmFtZSkKKyAgICBpZiAobVN0YXRlLm1FbGVtZW50QXJyYXlCdWZmZXIuaWQoKSA9PSBidWZmZXJO
YW1lKQogICAgIHsKLSAgICAgICAgbURhdGEubUVsZW1lbnRBcnJheUJ1ZmZlci5zZXQobnVsbHB0
cik7CisgICAgICAgIG1TdGF0ZS5tRWxlbWVudEFycmF5QnVmZmVyLnNldChudWxscHRyKTsKICAg
ICB9CiB9CiAKQEAgLTcyLDEzICs3MiwxMyBAQAogY29uc3QgVmVydGV4QXR0cmlidXRlICZWZXJ0
ZXhBcnJheTo6Z2V0VmVydGV4QXR0cmlidXRlKHNpemVfdCBhdHRyaWJ1dGVJbmRleCkgY29uc3QK
IHsKICAgICBBU1NFUlQoYXR0cmlidXRlSW5kZXggPCBnZXRNYXhBdHRyaWJzKCkpOwotICAgIHJl
dHVybiBtRGF0YS5tVmVydGV4QXR0cmlidXRlc1thdHRyaWJ1dGVJbmRleF07CisgICAgcmV0dXJu
IG1TdGF0ZS5tVmVydGV4QXR0cmlidXRlc1thdHRyaWJ1dGVJbmRleF07CiB9CiAKIHZvaWQgVmVy
dGV4QXJyYXk6OnNldFZlcnRleEF0dHJpYkRpdmlzb3Ioc2l6ZV90IGluZGV4LCBHTHVpbnQgZGl2
aXNvcikKIHsKICAgICBBU1NFUlQoaW5kZXggPCBnZXRNYXhBdHRyaWJzKCkpOwotICAgIG1EYXRh
Lm1WZXJ0ZXhBdHRyaWJ1dGVzW2luZGV4XS5kaXZpc29yID0gZGl2aXNvcjsKKyAgICBtU3RhdGUu
bVZlcnRleEF0dHJpYnV0ZXNbaW5kZXhdLmRpdmlzb3IgPSBkaXZpc29yOwogICAgIG1EaXJ0eUJp
dHMuc2V0KERJUlRZX0JJVF9BVFRSSUJfMF9ESVZJU09SICsgaW5kZXgpOwogfQogCkBAIC04NSwy
MCArODUsMjAgQEAKIHZvaWQgVmVydGV4QXJyYXk6OmVuYWJsZUF0dHJpYnV0ZShzaXplX3QgYXR0
cmlidXRlSW5kZXgsIGJvb2wgZW5hYmxlZFN0YXRlKQogewogICAgIEFTU0VSVChhdHRyaWJ1dGVJ
bmRleCA8IGdldE1heEF0dHJpYnMoKSk7Ci0gICAgbURhdGEubVZlcnRleEF0dHJpYnV0ZXNbYXR0
cmlidXRlSW5kZXhdLmVuYWJsZWQgPSBlbmFibGVkU3RhdGU7CisgICAgbVN0YXRlLm1WZXJ0ZXhB
dHRyaWJ1dGVzW2F0dHJpYnV0ZUluZGV4XS5lbmFibGVkID0gZW5hYmxlZFN0YXRlOwogICAgIG1E
aXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9BVFRSSUJfMF9FTkFCTEVEICsgYXR0cmlidXRlSW5kZXgp
OwogCiAgICAgLy8gVXBkYXRlIHN0YXRlIGNhY2hlCiAgICAgaWYgKGVuYWJsZWRTdGF0ZSkKICAg
ICB7Ci0gICAgICAgIG1EYXRhLm1NYXhFbmFibGVkQXR0cmlidXRlID0gc3RkOjptYXgoYXR0cmli
dXRlSW5kZXggKyAxLCBtRGF0YS5tTWF4RW5hYmxlZEF0dHJpYnV0ZSk7CisgICAgICAgIG1TdGF0
ZS5tTWF4RW5hYmxlZEF0dHJpYnV0ZSA9IHN0ZDo6bWF4KGF0dHJpYnV0ZUluZGV4ICsgMSwgbVN0
YXRlLm1NYXhFbmFibGVkQXR0cmlidXRlKTsKICAgICB9Ci0gICAgZWxzZSBpZiAobURhdGEubU1h
eEVuYWJsZWRBdHRyaWJ1dGUgPT0gYXR0cmlidXRlSW5kZXggKyAxKQorICAgIGVsc2UgaWYgKG1T
dGF0ZS5tTWF4RW5hYmxlZEF0dHJpYnV0ZSA9PSBhdHRyaWJ1dGVJbmRleCArIDEpCiAgICAgewot
ICAgICAgICB3aGlsZSAobURhdGEubU1heEVuYWJsZWRBdHRyaWJ1dGUgPiAwICYmCi0gICAgICAg
ICAgICAgICAhbURhdGEubVZlcnRleEF0dHJpYnV0ZXNbbURhdGEubU1heEVuYWJsZWRBdHRyaWJ1
dGUgLSAxXS5lbmFibGVkKQorICAgICAgICB3aGlsZSAobVN0YXRlLm1NYXhFbmFibGVkQXR0cmli
dXRlID4gMCAmJgorICAgICAgICAgICAgICAgIW1TdGF0ZS5tVmVydGV4QXR0cmlidXRlc1ttU3Rh
dGUubU1heEVuYWJsZWRBdHRyaWJ1dGUgLSAxXS5lbmFibGVkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICAtLW1EYXRhLm1NYXhFbmFibGVkQXR0cmlidXRlOworICAgICAgICAgICAgLS1tU3RhdGUu
bU1heEVuYWJsZWRBdHRyaWJ1dGU7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xMDgsNyArMTA4
LDcgQEAKIHsKICAgICBBU1NFUlQoYXR0cmlidXRlSW5kZXggPCBnZXRNYXhBdHRyaWJzKCkpOwog
Ci0gICAgVmVydGV4QXR0cmlidXRlICphdHRyaWIgPSAmbURhdGEubVZlcnRleEF0dHJpYnV0ZXNb
YXR0cmlidXRlSW5kZXhdOworICAgIFZlcnRleEF0dHJpYnV0ZSAqYXR0cmliID0gJm1TdGF0ZS5t
VmVydGV4QXR0cmlidXRlc1thdHRyaWJ1dGVJbmRleF07CiAKICAgICBhdHRyaWItPmJ1ZmZlci5z
ZXQoYm91bmRCdWZmZXIpOwogICAgIGF0dHJpYi0+c2l6ZSA9IHNpemU7CkBAIC0xMjIsNyArMTIy
LDcgQEAKIAogdm9pZCBWZXJ0ZXhBcnJheTo6c2V0RWxlbWVudEFycmF5QnVmZmVyKEJ1ZmZlciAq
YnVmZmVyKQogewotICAgIG1EYXRhLm1FbGVtZW50QXJyYXlCdWZmZXIuc2V0KGJ1ZmZlcik7Cisg
ICAgbVN0YXRlLm1FbGVtZW50QXJyYXlCdWZmZXIuc2V0KGJ1ZmZlcik7CiAgICAgbURpcnR5Qml0
cy5zZXQoRElSVFlfQklUX0VMRU1FTlRfQVJSQVlfQlVGRkVSKTsKIH0KIApJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1ZlcnRleEFycmF5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1ZlcnRleEFycmF5LmgJKHJl
dmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9W
ZXJ0ZXhBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAKIG5hbWVzcGFj
ZSByeAogewotY2xhc3MgSW1wbEZhY3Rvcnk7CitjbGFzcyBHTEltcGxGYWN0b3J5OwogY2xhc3Mg
VmVydGV4QXJyYXlJbXBsOwogfQogCkBAIC0zMSwxMCArMzEsMzUgQEAKIHsKIGNsYXNzIEJ1ZmZl
cjsKIAorY2xhc3MgVmVydGV4QXJyYXlTdGF0ZSBmaW5hbCA6IHB1YmxpYyBhbmdsZTo6Tm9uQ29w
eWFibGUKK3sKKyAgcHVibGljOgorICAgIGV4cGxpY2l0IFZlcnRleEFycmF5U3RhdGUoc2l6ZV90
IG1heEF0dHJpYnMpOworICAgIH5WZXJ0ZXhBcnJheVN0YXRlKCk7CisKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyAmZ2V0TGFiZWwoKSBjb25zdCB7IHJldHVybiBtTGFiZWw7IH0KKworICAgIGNvbnN0
IEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4gJmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpIGNvbnN0IHsg
cmV0dXJuIG1FbGVtZW50QXJyYXlCdWZmZXI7IH0KKyAgICBzaXplX3QgZ2V0TWF4QXR0cmlicygp
IGNvbnN0IHsgcmV0dXJuIG1WZXJ0ZXhBdHRyaWJ1dGVzLnNpemUoKTsgfQorICAgIHNpemVfdCBn
ZXRNYXhFbmFibGVkQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbU1heEVuYWJsZWRBdHRyaWJ1
dGU7IH0KKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxWZXJ0ZXhBdHRyaWJ1dGU+ICZnZXRWZXJ0ZXhB
dHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbVZlcnRleEF0dHJpYnV0ZXM7IH0KKyAgICBjb25z
dCBWZXJ0ZXhBdHRyaWJ1dGUgJmdldFZlcnRleEF0dHJpYnV0ZShzaXplX3QgaW5kZXgpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbVZlcnRleEF0dHJpYnV0ZXNbaW5kZXhdOworICAgIH0K
KworICBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBWZXJ0ZXhBcnJheTsKKyAgICBzdGQ6OnN0
cmluZyBtTGFiZWw7CisgICAgc3RkOjp2ZWN0b3I8VmVydGV4QXR0cmlidXRlPiBtVmVydGV4QXR0
cmlidXRlczsKKyAgICBCaW5kaW5nUG9pbnRlcjxCdWZmZXI+IG1FbGVtZW50QXJyYXlCdWZmZXI7
CisgICAgc2l6ZV90IG1NYXhFbmFibGVkQXR0cmlidXRlOworfTsKKwogY2xhc3MgVmVydGV4QXJy
YXkgZmluYWwgOiBwdWJsaWMgTGFiZWxlZE9iamVjdAogewogICBwdWJsaWM6Ci0gICAgVmVydGV4
QXJyYXkocng6OkltcGxGYWN0b3J5ICpmYWN0b3J5LCBHTHVpbnQgaWQsIHNpemVfdCBtYXhBdHRy
aWJzKTsKKyAgICBWZXJ0ZXhBcnJheShyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwgR0x1aW50
IGlkLCBzaXplX3QgbWF4QXR0cmlicyk7CiAgICAgflZlcnRleEFycmF5KCk7CiAKICAgICBHTHVp
bnQgaWQoKSBjb25zdDsKQEAgLTUyLDQwICs3NywyMCBAQAogCiAgICAgdm9pZCBzZXRFbGVtZW50
QXJyYXlCdWZmZXIoQnVmZmVyICpidWZmZXIpOwogCi0gICAgY29uc3QgQmluZGluZ1BvaW50ZXI8
QnVmZmVyPiAmZ2V0RWxlbWVudEFycmF5QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbURhdGEuZ2V0
RWxlbWVudEFycmF5QnVmZmVyKCk7IH0KLSAgICBzaXplX3QgZ2V0TWF4QXR0cmlicygpIGNvbnN0
IHsgcmV0dXJuIG1EYXRhLmdldFZlcnRleEF0dHJpYnV0ZXMoKS5zaXplKCk7IH0KLSAgICBjb25z
dCBzdGQ6OnZlY3RvcjxWZXJ0ZXhBdHRyaWJ1dGU+ICZnZXRWZXJ0ZXhBdHRyaWJ1dGVzKCkgY29u
c3QgeyByZXR1cm4gbURhdGEuZ2V0VmVydGV4QXR0cmlidXRlcygpOyB9Ci0KLSAgICByeDo6VmVy
dGV4QXJyYXlJbXBsICpnZXRJbXBsZW1lbnRhdGlvbigpIHsgcmV0dXJuIG1WZXJ0ZXhBcnJheTsg
fQotICAgIGNvbnN0IHJ4OjpWZXJ0ZXhBcnJheUltcGwgKmdldEltcGxlbWVudGF0aW9uKCkgY29u
c3QgeyByZXR1cm4gbVZlcnRleEFycmF5OyB9Ci0KLSAgICBzaXplX3QgZ2V0TWF4RW5hYmxlZEF0
dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1EYXRhLmdldE1heEVuYWJsZWRBdHRyaWJ1dGUoKTsg
fQotCi0gICAgY2xhc3MgRGF0YSBmaW5hbCA6IHB1YmxpYyBhbmdsZTo6Tm9uQ29weWFibGUKKyAg
ICBjb25zdCBCaW5kaW5nUG9pbnRlcjxCdWZmZXI+ICZnZXRFbGVtZW50QXJyYXlCdWZmZXIoKSBj
b25zdAogICAgIHsKLSAgICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgRGF0YShzaXplX3Qg
bWF4QXR0cmlicyk7Ci0gICAgICAgIH5EYXRhKCk7CisgICAgICAgIHJldHVybiBtU3RhdGUuZ2V0
RWxlbWVudEFycmF5QnVmZmVyKCk7CisgICAgfQorICAgIHNpemVfdCBnZXRNYXhBdHRyaWJzKCkg
Y29uc3QgeyByZXR1cm4gbVN0YXRlLmdldFZlcnRleEF0dHJpYnV0ZXMoKS5zaXplKCk7IH0KKyAg
ICBjb25zdCBzdGQ6OnZlY3RvcjxWZXJ0ZXhBdHRyaWJ1dGU+ICZnZXRWZXJ0ZXhBdHRyaWJ1dGVz
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtU3RhdGUuZ2V0VmVydGV4QXR0cmlidXRl
cygpOworICAgIH0KIAotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmZ2V0TGFiZWwoKSBjb25z
dCB7IHJldHVybiBtTGFiZWw7IH0KKyAgICByeDo6VmVydGV4QXJyYXlJbXBsICpnZXRJbXBsZW1l
bnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1WZXJ0ZXhBcnJheTsgfQogCi0gICAgICAgIGNvbnN0
IEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4gJmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpIGNvbnN0IHsg
cmV0dXJuIG1FbGVtZW50QXJyYXlCdWZmZXI7IH0KLSAgICAgICAgc2l6ZV90IGdldE1heEF0dHJp
YnMoKSBjb25zdCB7IHJldHVybiBtVmVydGV4QXR0cmlidXRlcy5zaXplKCk7IH0KLSAgICAgICAg
c2l6ZV90IGdldE1heEVuYWJsZWRBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBtTWF4RW5hYmxl
ZEF0dHJpYnV0ZTsgfQotICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxWZXJ0ZXhBdHRyaWJ1dGU+
ICZnZXRWZXJ0ZXhBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbVZlcnRleEF0dHJpYnV0ZXM7
IH0KLSAgICAgICAgY29uc3QgVmVydGV4QXR0cmlidXRlICZnZXRWZXJ0ZXhBdHRyaWJ1dGUoc2l6
ZV90IGluZGV4KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbVZlcnRleEF0
dHJpYnV0ZXNbaW5kZXhdOwotICAgICAgICB9CisgICAgc2l6ZV90IGdldE1heEVuYWJsZWRBdHRy
aWJ1dGUoKSBjb25zdCB7IHJldHVybiBtU3RhdGUuZ2V0TWF4RW5hYmxlZEF0dHJpYnV0ZSgpOyB9
CiAKLSAgICAgIHByaXZhdGU6Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBWZXJ0ZXhBcnJheTsKLSAg
ICAgICAgc3RkOjpzdHJpbmcgbUxhYmVsOwotICAgICAgICBzdGQ6OnZlY3RvcjxWZXJ0ZXhBdHRy
aWJ1dGU+IG1WZXJ0ZXhBdHRyaWJ1dGVzOwotICAgICAgICBCaW5kaW5nUG9pbnRlcjxCdWZmZXI+
IG1FbGVtZW50QXJyYXlCdWZmZXI7Ci0gICAgICAgIHNpemVfdCBtTWF4RW5hYmxlZEF0dHJpYnV0
ZTsKLSAgICB9OwotCiAgICAgZW51bSBEaXJ0eUJpdFR5cGUKICAgICB7CiAgICAgICAgIERJUlRZ
X0JJVF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwKQEAgLTExNCw3ICsxMTksNyBAQAogICBwcml2YXRl
OgogICAgIEdMdWludCBtSWQ7CiAKLSAgICBEYXRhIG1EYXRhOworICAgIFZlcnRleEFycmF5U3Rh
dGUgbVN0YXRlOwogICAgIERpcnR5Qml0cyBtRGlydHlCaXRzOwogCiAgICAgcng6OlZlcnRleEFy
cmF5SW1wbCAqbVZlcnRleEFycmF5OwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL1ZlcnRleEF0dHJpYnV0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9WZXJ0ZXhBdHRyaWJ1dGUuaAkocmV2aXNpb24gMjA4MDIx
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1ZlcnRleEF0dHJpYnV0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw5ICszOSw2IEBACiBib29sIG9wZXJhdG9yPT0oY29u
c3QgVmVydGV4QXR0cmlidXRlICZhLCBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmIpOwogYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYSwgY29uc3QgVmVydGV4QXR0cmlidXRl
ICZiKTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1UIFF1ZXJ5U2luZ2xlVmVydGV4QXR0cmli
dXRlUGFyYW1ldGVyKGNvbnN0IFZlcnRleEF0dHJpYnV0ZSYgYXR0cmliLCBHTGVudW0gcG5hbWUp
OwotCiBzaXplX3QgQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZVR5cGVTaXplKGNvbnN0IFZlcnRleEF0
dHJpYnV0ZSYgYXR0cmliKTsKIHNpemVfdCBDb21wdXRlVmVydGV4QXR0cmlidXRlU3RyaWRlKGNv
bnN0IFZlcnRleEF0dHJpYnV0ZSYgYXR0cmliKTsKIHNpemVfdCBDb21wdXRlVmVydGV4QXR0cmli
dXRlRWxlbWVudENvdW50KGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLApJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1ZlcnRleEF0dHJpYnV0ZS5pbmwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1ZlcnRleEF0
dHJpYnV0ZS5pbmwJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9WZXJ0ZXhBdHRyaWJ1dGUuaW5sCSh3b3JraW5nIGNvcHkpCkBAIC0yNywz
MyArMjcsNiBAQAogICAgIHJldHVybiAhKGEgPT0gYik7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotVCBRdWVyeVNpbmdsZVZlcnRleEF0dHJpYnV0ZVBhcmFtZXRlcihjb25zdCBWZXJ0ZXhB
dHRyaWJ1dGUmIGF0dHJpYiwgR0xlbnVtIHBuYW1lKQotewotICBzd2l0Y2ggKHBuYW1lKQotICB7
Ci0gICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRUQ6Ci0gICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8VD4oYXR0cmliLmVuYWJsZWQgPyBHTF9UUlVFIDogR0xfRkFMU0UpOwotICAg
IGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9TSVpFOgotICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFQ+KGF0dHJpYi5zaXplKTsKLSAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU1RS
SURFOgotICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KGF0dHJpYi5zdHJpZGUpOwotICAgIGNh
c2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFOgotICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFQ+KGF0dHJpYi50eXBlKTsKLSAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFM
SVpFRDoKLSAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPihhdHRyaWIubm9ybWFsaXplZCA/IEdM
X1RSVUUgOiBHTF9GQUxTRSk7Ci0gICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX0JVRkZF
Ul9CSU5ESU5HOgotICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KGF0dHJpYi5idWZmZXIuaWQo
KSk7Ci0gICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX0RJVklTT1I6Ci0gICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8VD4oYXR0cmliLmRpdmlzb3IpOwotICAgIGNhc2UgR0xfVkVSVEVYX0FU
VFJJQl9BUlJBWV9JTlRFR0VSOgotICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KGF0dHJpYi5w
dXJlSW50ZWdlciA/IEdMX1RSVUUgOiBHTF9GQUxTRSk7Ci0gICAgZGVmYXVsdDoKLSAgICAgIFVO
UkVBQ0hBQkxFKCk7Ci0gICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oMCk7Ci0gIH0KLX0KLQog
aW5saW5lIFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGE6OlZlcnRleEF0dHJpYkN1cnJlbnRW
YWx1ZURhdGEoKQogICAgIDogVHlwZShHTF9GTE9BVCkKIHsKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Xb3JrYXJvdW5kcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Xb3JrYXJvdW5kcy5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Xb3JrYXJvdW5kcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjUgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIw
MTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBXb3Jr
YXJvdW5kcy5oOiBXb3JrYXJvdW5kcyBmb3IgZHJpdmVyIGJ1Z3MgYW5kIG90aGVyIGJlaGF2aW9y
cyBzZWVuCisvLyBvbiBhbGwgcGxhdGZvcm1zLgorCisjaWZuZGVmIExJQkFOR0xFX1dPUktBUk9V
TkRTX0hfCisjZGVmaW5lIExJQkFOR0xFX1dPUktBUk9VTkRTX0hfCisKK25hbWVzcGFjZSBnbAor
eworCitzdHJ1Y3QgV29ya2Fyb3VuZHMKK3sKKyAgICAvLyBGb3JjZSB0aGUgY29udGV4dCB0byBi
ZSBsb3N0ICh2aWEgS0hSX3JvYnVzdG5lc3MpIGlmIGEgR0xfT1VUX09GX01FTU9SWSBlcnJvciBv
Y2N1cnMuIFRoZQorICAgIC8vIGRyaXZlciBtYXkgYmUgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRl
IGlmIHRoaXMgaGFwcGVucywgYW5kIHNvbWUgdXNlcnMgb2YgQU5HTEUgcmVseSBvbiB0aGlzCisg
ICAgLy8gbm90aWZpY2F0aW9uIHRvIHByZXZlbnQgZnVydGhlciBleGVjdXRpb24uCisgICAgYm9v
bCBsb3NlQ29udGV4dE9uT3V0T2ZNZW1vcnkgPSBmYWxzZTsKK307Cit9ICAvLyBuYW1lc3BhY2Ug
Z2wKKworI2VuZGlmICAvLyBMSUJBTkdMRV9XT1JLQVJPVU5EU19IXwpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2FuZ2xldHlwZXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9hbmdsZXR5cGVzLmNwcAkocmV2
aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2Fu
Z2xldHlwZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MywyNCArNTMsMjEgQEAKIHsKIH0KIAot
VGV4dHVyZVN0YXRlOjpUZXh0dXJlU3RhdGUoKQotICAgIDogc3dpenpsZVJlZChHTF9SRUQpLAot
ICAgICAgc3dpenpsZUdyZWVuKEdMX0dSRUVOKSwKLSAgICAgIHN3aXp6bGVCbHVlKEdMX0JMVUUp
LAotICAgICAgc3dpenpsZUFscGhhKEdMX0FMUEhBKSwKLSAgICAgIHNhbXBsZXJTdGF0ZSgpLAot
ICAgICAgYmFzZUxldmVsKDApLAotICAgICAgbWF4TGV2ZWwoMTAwMCksCi0gICAgICBpbW11dGFi
bGVGb3JtYXQoZmFsc2UpLAotICAgICAgaW1tdXRhYmxlTGV2ZWxzKDApLAotICAgICAgdXNhZ2Uo
R0xfTk9ORSkKKy8vIHN0YXRpYworU2FtcGxlclN0YXRlIFNhbXBsZXJTdGF0ZTo6Q3JlYXRlRGVm
YXVsdEZvclRhcmdldChHTGVudW0gdGFyZ2V0KQogewotfQorICAgIFNhbXBsZXJTdGF0ZSBzdGF0
ZTsKIAotYm9vbCBUZXh0dXJlU3RhdGU6OnN3aXp6bGVSZXF1aXJlZCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIHN3aXp6bGVSZWQgIT0gR0xfUkVEIHx8IHN3aXp6bGVHcmVlbiAhPSBHTF9HUkVFTiB8
fAotICAgICAgICAgICBzd2l6emxlQmx1ZSAhPSBHTF9CTFVFIHx8IHN3aXp6bGVBbHBoYSAhPSBH
TF9BTFBIQTsKKyAgICAvLyBBY2NvcmRpbmcgdG8gT0VTX0VHTF9pbWFnZV9leHRlcm5hbDogRm9y
IGV4dGVybmFsIHRleHR1cmVzLCB0aGUgZGVmYXVsdCBtaW4gZmlsdGVyIGlzCisgICAgLy8gR0xf
TElORUFSIGFuZCB0aGUgZGVmYXVsdCBzIGFuZCB0IHdyYXAgbW9kZXMgYXJlIEdMX0NMQU1QX1RP
X0VER0UuCisgICAgaWYgKHRhcmdldCA9PSBHTF9URVhUVVJFX0VYVEVSTkFMX09FUykKKyAgICB7
CisgICAgICAgIHN0YXRlLm1pbkZpbHRlciA9IEdMX0xJTkVBUjsKKyAgICAgICAgc3RhdGUud3Jh
cFMgICAgID0gR0xfQ0xBTVBfVE9fRURHRTsKKyAgICAgICAgc3RhdGUud3JhcFQgICAgID0gR0xf
Q0xBTVBfVE9fRURHRTsKKyAgICB9CisKKyAgICByZXR1cm4gc3RhdGU7CiB9CiAKIHN0YXRpYyB2
b2lkIE1pbk1heChpbnQgYSwgaW50IGIsIGludCAqbWluaW11bSwgaW50ICptYXhpbXVtKQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2FuZ2xldHlwZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvYW5nbGV0eXBl
cy5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvYW5nbGV0eXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwyOCArNDUsNiBAQAogICAg
IFNBTVBMRVJfVkVSVEVYCiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBDb2xv
cgotewotICAgIFQgcmVkOwotICAgIFQgZ3JlZW47Ci0gICAgVCBibHVlOwotICAgIFQgYWxwaGE7
Ci0KLSAgICBDb2xvcigpIDogcmVkKDApLCBncmVlbigwKSwgYmx1ZSgwKSwgYWxwaGEoMCkgeyB9
Ci0gICAgQ29sb3IoVCByLCBUIGcsIFQgYiwgVCBhKSA6IHJlZChyKSwgZ3JlZW4oZyksIGJsdWUo
YiksIGFscGhhKGEpIHsgfQotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1ib29sIG9wZXJh
dG9yPT0oY29uc3QgQ29sb3I8VD4gJmEsIGNvbnN0IENvbG9yPFQ+ICZiKTsKLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1ib29sIG9wZXJhdG9yIT0oY29uc3QgQ29sb3I8VD4gJmEsIGNvbnN0IENv
bG9yPFQ+ICZiKTsKLQotdHlwZWRlZiBDb2xvcjxmbG9hdD4gQ29sb3JGOwotdHlwZWRlZiBDb2xv
cjxpbnQ+IENvbG9ySTsKLXR5cGVkZWYgQ29sb3I8dW5zaWduZWQgaW50PiBDb2xvclVJOwotCiBz
dHJ1Y3QgUmVjdGFuZ2xlCiB7CiAgICAgUmVjdGFuZ2xlKCkgOiB4KDApLCB5KDApLCB3aWR0aCgw
KSwgaGVpZ2h0KDApIHt9CkBAIC0xMTAsNiArODgsOSBAQAogICAgIEV4dGVudHMoKSA6IHdpZHRo
KDApLCBoZWlnaHQoMCksIGRlcHRoKDApIHsgfQogICAgIEV4dGVudHMoaW50IHdpZHRoXywgaW50
IGhlaWdodF8sIGludCBkZXB0aF8pIDogd2lkdGgod2lkdGhfKSwgaGVpZ2h0KGhlaWdodF8pLCBk
ZXB0aChkZXB0aF8pIHsgfQogCisgICAgRXh0ZW50cyhjb25zdCBFeHRlbnRzICZvdGhlcikgPSBk
ZWZhdWx0OworICAgIEV4dGVudHMgJm9wZXJhdG9yPShjb25zdCBFeHRlbnRzICZvdGhlcikgPSBk
ZWZhdWx0OworCiAgICAgYm9vbCBlbXB0eSgpIGNvbnN0IHsgcmV0dXJuICh3aWR0aCAqIGhlaWdo
dCAqIGRlcHRoKSA9PSAwOyB9CiB9OwogCkBAIC0xOTQsNiArMTc1LDcgQEAKIHN0cnVjdCBTYW1w
bGVyU3RhdGUKIHsKICAgICBTYW1wbGVyU3RhdGUoKTsKKyAgICBzdGF0aWMgU2FtcGxlclN0YXRl
IENyZWF0ZURlZmF1bHRGb3JUYXJnZXQoR0xlbnVtIHRhcmdldCk7CiAKICAgICBHTGVudW0gbWlu
RmlsdGVyOwogICAgIEdMZW51bSBtYWdGaWx0ZXI7CkBAIC0yMTUsODYgKzE5NywzOSBAQAogYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFNhbXBsZXJTdGF0ZSAmYSwgY29uc3QgU2FtcGxlclN0YXRlICZi
KTsKIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTYW1wbGVyU3RhdGUgJmEsIGNvbnN0IFNhbXBsZXJT
dGF0ZSAmYik7CiAKLS8vIFN0YXRlIGZyb20gVGFibGUgNi45IChzdGF0ZSBwZXIgdGV4dHVyZSBv
YmplY3QpIGluIHRoZSBPcGVuR0wgRVMgMy4wLjIgc3BlYy4KLXN0cnVjdCBUZXh0dXJlU3RhdGUK
K3N0cnVjdCBQaXhlbFN0b3JlU3RhdGVCYXNlCiB7Ci0gICAgVGV4dHVyZVN0YXRlKCk7Ci0KLSAg
ICBHTGVudW0gc3dpenpsZVJlZDsKLSAgICBHTGVudW0gc3dpenpsZUdyZWVuOwotICAgIEdMZW51
bSBzd2l6emxlQmx1ZTsKLSAgICBHTGVudW0gc3dpenpsZUFscGhhOwotCi0gICAgU2FtcGxlclN0
YXRlIHNhbXBsZXJTdGF0ZTsKLQotICAgIEdMdWludCBiYXNlTGV2ZWw7Ci0gICAgR0x1aW50IG1h
eExldmVsOwotCi0gICAgYm9vbCBpbW11dGFibGVGb3JtYXQ7Ci0gICAgR0x1aW50IGltbXV0YWJs
ZUxldmVsczsKLQotICAgIC8vIEZyb20gR0xfQU5HTEVfdGV4dHVyZV91c2FnZQotICAgIEdMZW51
bSB1c2FnZTsKLQotICAgIGJvb2wgc3dpenpsZVJlcXVpcmVkKCkgY29uc3Q7CisgICAgQmluZGlu
Z1BvaW50ZXI8QnVmZmVyPiBwaXhlbEJ1ZmZlcjsKKyAgICBHTGludCBhbGlnbm1lbnQgICA9IDQ7
CisgICAgR0xpbnQgcm93TGVuZ3RoICAgPSAwOworICAgIEdMaW50IHNraXBSb3dzICAgID0gMDsK
KyAgICBHTGludCBza2lwUGl4ZWxzICA9IDA7CisgICAgR0xpbnQgaW1hZ2VIZWlnaHQgPSAwOwor
ICAgIEdMaW50IHNraXBJbWFnZXMgID0gMDsKIH07CiAKLWJvb2wgb3BlcmF0b3I9PShjb25zdCBU
ZXh0dXJlU3RhdGUgJmEsIGNvbnN0IFRleHR1cmVTdGF0ZSAmYik7Ci1ib29sIG9wZXJhdG9yIT0o
Y29uc3QgVGV4dHVyZVN0YXRlICZhLCBjb25zdCBUZXh0dXJlU3RhdGUgJmIpOwotCi1zdHJ1Y3Qg
UGl4ZWxVbnBhY2tTdGF0ZQorc3RydWN0IFBpeGVsVW5wYWNrU3RhdGUgOiBQaXhlbFN0b3JlU3Rh
dGVCYXNlCiB7Ci0gICAgQmluZGluZ1BvaW50ZXI8QnVmZmVyPiBwaXhlbEJ1ZmZlcjsKLSAgICBH
TGludCBhbGlnbm1lbnQ7Ci0gICAgR0xpbnQgcm93TGVuZ3RoOwotICAgIEdMaW50IHNraXBSb3dz
OwotICAgIEdMaW50IHNraXBQaXhlbHM7Ci0gICAgR0xpbnQgaW1hZ2VIZWlnaHQ7Ci0gICAgR0xp
bnQgc2tpcEltYWdlczsKKyAgICBQaXhlbFVucGFja1N0YXRlKCkge30KIAotICAgIFBpeGVsVW5w
YWNrU3RhdGUoKQotICAgICAgICA6IGFsaWdubWVudCg0KSwKLSAgICAgICAgICByb3dMZW5ndGgo
MCksCi0gICAgICAgICAgc2tpcFJvd3MoMCksCi0gICAgICAgICAgc2tpcFBpeGVscygwKSwKLSAg
ICAgICAgICBpbWFnZUhlaWdodCgwKSwKLSAgICAgICAgICBza2lwSW1hZ2VzKDApCi0gICAge30K
LQogICAgIFBpeGVsVW5wYWNrU3RhdGUoR0xpbnQgYWxpZ25tZW50SW4sIEdMaW50IHJvd0xlbmd0
aEluKQotICAgICAgICA6IGFsaWdubWVudChhbGlnbm1lbnRJbiksCi0gICAgICAgICAgcm93TGVu
Z3RoKHJvd0xlbmd0aEluKSwKLSAgICAgICAgICBza2lwUm93cygwKSwKLSAgICAgICAgICBza2lw
UGl4ZWxzKDApLAotICAgICAgICAgIGltYWdlSGVpZ2h0KDApLAotICAgICAgICAgIHNraXBJbWFn
ZXMoMCkKLSAgICB7fQorICAgIHsKKyAgICAgICAgYWxpZ25tZW50ID0gYWxpZ25tZW50SW47Cisg
ICAgICAgIHJvd0xlbmd0aCA9IHJvd0xlbmd0aEluOworICAgIH0KIH07CiAKLXN0cnVjdCBQaXhl
bFBhY2tTdGF0ZQorc3RydWN0IFBpeGVsUGFja1N0YXRlIDogUGl4ZWxTdG9yZVN0YXRlQmFzZQog
ewotICAgIEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4gcGl4ZWxCdWZmZXI7Ci0gICAgR0xpbnQgYWxp
Z25tZW50OwotICAgIGJvb2wgcmV2ZXJzZVJvd09yZGVyOwotICAgIEdMaW50IHJvd0xlbmd0aDsK
LSAgICBHTGludCBza2lwUm93czsKLSAgICBHTGludCBza2lwUGl4ZWxzOworICAgIFBpeGVsUGFj
a1N0YXRlKCkge30KIAotICAgIFBpeGVsUGFja1N0YXRlKCkKLSAgICAgICAgOiBhbGlnbm1lbnQo
NCksCi0gICAgICAgICAgcmV2ZXJzZVJvd09yZGVyKGZhbHNlKSwKLSAgICAgICAgICByb3dMZW5n
dGgoMCksCi0gICAgICAgICAgc2tpcFJvd3MoMCksCi0gICAgICAgICAgc2tpcFBpeGVscygwKQot
ICAgIHt9CisgICAgUGl4ZWxQYWNrU3RhdGUoR0xpbnQgYWxpZ25tZW50SW4sIGJvb2wgcmV2ZXJz
ZVJvd09yZGVySW4pCisgICAgICAgIDogcmV2ZXJzZVJvd09yZGVyKHJldmVyc2VSb3dPcmRlcklu
KQorICAgIHsKKyAgICAgICAgYWxpZ25tZW50ID0gYWxpZ25tZW50SW47CisgICAgfQogCi0gICAg
ZXhwbGljaXQgUGl4ZWxQYWNrU3RhdGUoR0xpbnQgYWxpZ25tZW50SW4sIGJvb2wgcmV2ZXJzZVJv
d09yZGVySW4pCi0gICAgICAgIDogYWxpZ25tZW50KGFsaWdubWVudEluKSwKLSAgICAgICAgICBy
ZXZlcnNlUm93T3JkZXIocmV2ZXJzZVJvd09yZGVySW4pLAotICAgICAgICAgIHJvd0xlbmd0aCgw
KSwKLSAgICAgICAgICBza2lwUm93cygwKSwKLSAgICAgICAgICBza2lwUGl4ZWxzKDApCi0gICAg
e30KKyAgICBib29sIHJldmVyc2VSb3dPcmRlciA9IGZhbHNlOwogfTsKIAogLy8gVXNlZCBpbiBQ
cm9ncmFtIGFuZCBWZXJ0ZXhBcnJheS4KQEAgLTMxMywxMCArMjQ4LDEzIEBACiB7CiBlbnVtIFZl
bmRvcklEIDogdWludDMyX3QKIHsKLSAgICBWRU5ET1JfSURfVU5LTk9XTiA9IDB4MCwKLSAgICBW
RU5ET1JfSURfQU1EICAgICA9IDB4MTAwMiwKLSAgICBWRU5ET1JfSURfSU5URUwgICA9IDB4ODA4
NiwKLSAgICBWRU5ET1JfSURfTlZJRElBICA9IDB4MTBERSwKKyAgICBWRU5ET1JfSURfVU5LTk9X
TiAgPSAweDAsCisgICAgVkVORE9SX0lEX0FNRCAgICAgID0gMHgxMDAyLAorICAgIFZFTkRPUl9J
RF9JTlRFTCAgICA9IDB4ODA4NiwKKyAgICBWRU5ET1JfSURfTlZJRElBICAgPSAweDEwREUsCisg
ICAgLy8gVGhpcyBpcyBRdWFsY29tbSBQQ0kgVmVuZG9yIElELgorICAgIC8vIEFuZHJvaWQgZG9l
c24ndCBoYXZlIGEgUENJIGJ1cywgYnV0IGFsbCB3ZSBuZWVkIGlzIGEgdW5pcXVlIGlkLgorICAg
IFZFTkRPUl9JRF9RVUFMQ09NTSA9IDB4NTE0MywKIH07CiAKIC8vIEEgbWFjcm8gdGhhdCBkZXRl
cm1pbmVzIHdoZXRoZXIgYW4gb2JqZWN0IGhhcyBhIGdpdmVuIHJ1bnRpbWUgdHlwZS4KQEAgLTM1
OSwxNCArMjk3LDggQEAKICAgICByZXR1cm4gR2V0QXM8RGVzdFQ+KHNyYy0+Z2V0SW1wbGVtZW50
YXRpb24oKSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBEZXN0VCwgdHlwZW5hbWUgU3JjVD4K
LWlubGluZSBjb25zdCBEZXN0VCAqR2V0SW1wbEFzKGNvbnN0IFNyY1QgKnNyYykKLXsKLSAgICBy
ZXR1cm4gR2V0QXM8Y29uc3QgRGVzdFQ+KHNyYy0+Z2V0SW1wbGVtZW50YXRpb24oKSk7CiB9CiAK
LX0KLQogI2luY2x1ZGUgImFuZ2xldHlwZXMuaW5sIgogCiBuYW1lc3BhY2UgYW5nbGUKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9hbmdsZXR5cGVzLmlubAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvYW5nbGV0eXBl
cy5pbmwJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9hbmdsZXR5cGVzLmlubAkod29ya2luZyBjb3B5KQpAQCAtOSwyMSArOSw2IEBACiBu
YW1lc3BhY2UgZ2wKIHsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1ib29sIG9wZXJhdG9yPT0o
Y29uc3QgQ29sb3I8VD4gJmEsIGNvbnN0IENvbG9yPFQ+ICZiKQotewotICAgIHJldHVybiBhLnJl
ZCA9PSBiLnJlZCAmJgotICAgICAgICAgICBhLmdyZWVuID09IGIuZ3JlZW4gJiYKLSAgICAgICAg
ICAgYS5ibHVlID09IGIuYmx1ZSAmJgotICAgICAgICAgICBhLmFscGhhID09IGIuYWxwaGE7Ci19
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvbG9yPFQ+
ICZhLCBjb25zdCBDb2xvcjxUPiAmYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCiBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlY3RhbmdsZSAmYSwgY29uc3QgUmVjdGFuZ2xl
ICZiKQogewogICAgIHJldHVybiBhLnggPT0gYi54ICYmCkBAIC01NiwyMyArNDEsNCBAQAogICAg
IHJldHVybiAhKGEgPT0gYik7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVGV4
dHVyZVN0YXRlICZhLCBjb25zdCBUZXh0dXJlU3RhdGUgJmIpCi17Ci0gICAgcmV0dXJuIGEuc3dp
enpsZVJlZCA9PSBiLnN3aXp6bGVSZWQgJiYKLSAgICAgICAgICAgYS5zd2l6emxlR3JlZW4gPT0g
Yi5zd2l6emxlR3JlZW4gJiYKLSAgICAgICAgICAgYS5zd2l6emxlQmx1ZSA9PSBiLnN3aXp6bGVC
bHVlICYmCi0gICAgICAgICAgIGEuc3dpenpsZUFscGhhID09IGIuc3dpenpsZUFscGhhICYmCi0g
ICAgICAgICAgIGEuc2FtcGxlclN0YXRlID09IGIuc2FtcGxlclN0YXRlICYmCi0gICAgICAgICAg
IGEuYmFzZUxldmVsID09IGIuYmFzZUxldmVsICYmCi0gICAgICAgICAgIGEubWF4TGV2ZWwgPT0g
Yi5tYXhMZXZlbCAmJgotICAgICAgICAgICBhLmltbXV0YWJsZUZvcm1hdCA9PSBiLmltbXV0YWJs
ZUZvcm1hdCAmJgotICAgICAgICAgICBhLmltbXV0YWJsZUxldmVscyA9PSBiLmltbXV0YWJsZUxl
dmVscyAmJgotICAgICAgICAgICBhLnVzYWdlID09IGIudXNhZ2U7CiB9Ci0KLWlubGluZSBib29s
IG9wZXJhdG9yIT0oY29uc3QgVGV4dHVyZVN0YXRlICZhLCBjb25zdCBUZXh0dXJlU3RhdGUgJmIp
Ci17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQotfQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL2VzM19mb3JtYXRfdHlwZV9jb21iaW5hdGlvbnMuanNvbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZXMzX2Zv
cm1hdF90eXBlX2NvbWJpbmF0aW9ucy5qc29uCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9lczNfZm9ybWF0X3R5cGVfY29tYmluYXRpb25zLmpz
b24JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNzEgQEAKK3sKKyAgICAiRm9ybWF0IGNvbWJp
bmF0aW9ucyBmcm9tIEVTIDMuMC4xIHNwZWMsIHRhYmxlIDMuMiI6CisgICAgWworICAgICAgICBb
ICJHTF9SR0JBOCIsICAgICAgICAgICAgICAiR0xfUkdCQSIsICAgICAgICAgICAgIkdMX1VOU0lH
TkVEX0JZVEUiIF0sCisgICAgICAgIFsgIkdMX1JHQjVfQTEiLCAgICAgICAgICAgICJHTF9SR0JB
IiwgICAgICAgICAgICAiR0xfVU5TSUdORURfQllURSIgXSwKKyAgICAgICAgWyAiR0xfUkdCQTQi
LCAgICAgICAgICAgICAgIkdMX1JHQkEiLCAgICAgICAgICAgICJHTF9VTlNJR05FRF9CWVRFIiBd
LAorICAgICAgICBbICJHTF9TUkdCOF9BTFBIQTgiLCAgICAgICAiR0xfUkdCQSIsICAgICAgICAg
ICAgIkdMX1VOU0lHTkVEX0JZVEUiIF0sCisgICAgICAgIFsgIkdMX1JHQkE4X1NOT1JNIiwgICAg
ICAgICJHTF9SR0JBIiwgICAgICAgICAgICAiR0xfQllURSIgXSwKKyAgICAgICAgWyAiR0xfUkdC
QTQiLCAgICAgICAgICAgICAgIkdMX1JHQkEiLCAgICAgICAgICAgICJHTF9VTlNJR05FRF9TSE9S
VF80XzRfNF80IiBdLAorICAgICAgICBbICJHTF9SR0IxMF9BMiIsICAgICAgICAgICAiR0xfUkdC
QSIsICAgICAgICAgICAgIkdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViIgXSwKKyAgICAg
ICAgWyAiR0xfUkdCNV9BMSIsICAgICAgICAgICAgIkdMX1JHQkEiLCAgICAgICAgICAgICJHTF9V
TlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYiIF0sCisgICAgICAgIFsgIkdMX1JHQjVfQTEiLCAg
ICAgICAgICAgICJHTF9SR0JBIiwgICAgICAgICAgICAiR0xfVU5TSUdORURfU0hPUlRfNV81XzVf
MSIgXSwKKyAgICAgICAgWyAiR0xfUkdCQTE2RiIsICAgICAgICAgICAgIkdMX1JHQkEiLCAgICAg
ICAgICAgICJHTF9IQUxGX0ZMT0FUIiBdLAorICAgICAgICBbICJHTF9SR0JBMTZGIiwgICAgICAg
ICAgICAiR0xfUkdCQSIsICAgICAgICAgICAgIkdMX0hBTEZfRkxPQVRfT0VTIiBdLAorICAgICAg
ICBbICJHTF9SR0JBMzJGIiwgICAgICAgICAgICAiR0xfUkdCQSIsICAgICAgICAgICAgIkdMX0ZM
T0FUIiBdLAorICAgICAgICBbICJHTF9SR0JBMTZGIiwgICAgICAgICAgICAiR0xfUkdCQSIsICAg
ICAgICAgICAgIkdMX0ZMT0FUIiBdLAorICAgICAgICBbICJHTF9SR0JBOFVJIiwgICAgICAgICAg
ICAiR0xfUkdCQV9JTlRFR0VSIiwgICAgIkdMX1VOU0lHTkVEX0JZVEUiIF0sCisgICAgICAgIFsg
IkdMX1JHQkE4SSIsICAgICAgICAgICAgICJHTF9SR0JBX0lOVEVHRVIiLCAgICAiR0xfQllURSIg
XSwKKyAgICAgICAgWyAiR0xfUkdCQTE2VUkiLCAgICAgICAgICAgIkdMX1JHQkFfSU5URUdFUiIs
ICAgICJHTF9VTlNJR05FRF9TSE9SVCIgXSwKKyAgICAgICAgWyAiR0xfUkdCQTE2SSIsICAgICAg
ICAgICAgIkdMX1JHQkFfSU5URUdFUiIsICAgICJHTF9TSE9SVCIgXSwKKyAgICAgICAgWyAiR0xf
UkdCQTMyVUkiLCAgICAgICAgICAgIkdMX1JHQkFfSU5URUdFUiIsICAgICJHTF9VTlNJR05FRF9J
TlQiIF0sCisgICAgICAgIFsgIkdMX1JHQkEzMkkiLCAgICAgICAgICAgICJHTF9SR0JBX0lOVEVH
RVIiLCAgICAiR0xfSU5UIiBdLAorICAgICAgICBbICJHTF9SR0IxMF9BMlVJIiwgICAgICAgICAi
R0xfUkdCQV9JTlRFR0VSIiwgICAgIkdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViIgXSwK
KyAgICAgICAgWyAiR0xfUkdCOCIsICAgICAgICAgICAgICAgIkdMX1JHQiIsICAgICAgICAgICAg
ICJHTF9VTlNJR05FRF9CWVRFIiBdLAorICAgICAgICBbICJHTF9SR0I1NjUiLCAgICAgICAgICAg
ICAiR0xfUkdCIiwgICAgICAgICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiIF0sCisgICAgICAgIFsg
IkdMX1NSR0I4IiwgICAgICAgICAgICAgICJHTF9SR0IiLCAgICAgICAgICAgICAiR0xfVU5TSUdO
RURfQllURSIgXSwKKyAgICAgICAgWyAiR0xfUkdCOF9TTk9STSIsICAgICAgICAgIkdMX1JHQiIs
ICAgICAgICAgICAgICJHTF9CWVRFIiBdLAorICAgICAgICBbICJHTF9SR0I1NjUiLCAgICAgICAg
ICAgICAiR0xfUkdCIiwgICAgICAgICAgICAgIkdMX1VOU0lHTkVEX1NIT1JUXzVfNl81IiBdLAor
ICAgICAgICBbICJHTF9SMTFGX0cxMUZfQjEwRiIsICAgICAiR0xfUkdCIiwgICAgICAgICAgICAg
IkdMX1VOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYiIF0sCisgICAgICAgIFsgIkdMX1JHQjlf
RTUiLCAgICAgICAgICAgICJHTF9SR0IiLCAgICAgICAgICAgICAiR0xfVU5TSUdORURfSU5UXzVf
OV85XzlfUkVWIiBdLAorICAgICAgICBbICJHTF9SR0IxNkYiLCAgICAgICAgICAgICAiR0xfUkdC
IiwgICAgICAgICAgICAgIkdMX0hBTEZfRkxPQVQiIF0sCisgICAgICAgIFsgIkdMX1JHQjE2RiIs
ICAgICAgICAgICAgICJHTF9SR0IiLCAgICAgICAgICAgICAiR0xfSEFMRl9GTE9BVF9PRVMiIF0s
CisgICAgICAgIFsgIkdMX1IxMUZfRzExRl9CMTBGIiwgICAgICJHTF9SR0IiLCAgICAgICAgICAg
ICAiR0xfSEFMRl9GTE9BVCIgXSwKKyAgICAgICAgWyAiR0xfUjExRl9HMTFGX0IxMEYiLCAgICAg
IkdMX1JHQiIsICAgICAgICAgICAgICJHTF9IQUxGX0ZMT0FUX09FUyIgXSwKKyAgICAgICAgWyAi
R0xfUkdCOV9FNSIsICAgICAgICAgICAgIkdMX1JHQiIsICAgICAgICAgICAgICJHTF9IQUxGX0ZM
T0FUIiBdLAorICAgICAgICBbICJHTF9SR0I5X0U1IiwgICAgICAgICAgICAiR0xfUkdCIiwgICAg
ICAgICAgICAgIkdMX0hBTEZfRkxPQVRfT0VTIiBdLAorICAgICAgICBbICJHTF9SR0IzMkYiLCAg
ICAgICAgICAgICAiR0xfUkdCIiwgICAgICAgICAgICAgIkdMX0ZMT0FUIiBdLAorICAgICAgICBb
ICJHTF9SR0IxNkYiLCAgICAgICAgICAgICAiR0xfUkdCIiwgICAgICAgICAgICAgIkdMX0ZMT0FU
IiBdLAorICAgICAgICBbICJHTF9SMTFGX0cxMUZfQjEwRiIsICAgICAiR0xfUkdCIiwgICAgICAg
ICAgICAgIkdMX0ZMT0FUIiBdLAorICAgICAgICBbICJHTF9SR0I5X0U1IiwgICAgICAgICAgICAi
R0xfUkdCIiwgICAgICAgICAgICAgIkdMX0ZMT0FUIiBdLAorICAgICAgICBbICJHTF9SR0I4VUki
LCAgICAgICAgICAgICAiR0xfUkdCX0lOVEVHRVIiLCAgICAgIkdMX1VOU0lHTkVEX0JZVEUiIF0s
CisgICAgICAgIFsgIkdMX1JHQjhJIiwgICAgICAgICAgICAgICJHTF9SR0JfSU5URUdFUiIsICAg
ICAiR0xfQllURSIgXSwKKyAgICAgICAgWyAiR0xfUkdCMTZVSSIsICAgICAgICAgICAgIkdMX1JH
Ql9JTlRFR0VSIiwgICAgICJHTF9VTlNJR05FRF9TSE9SVCIgXSwKKyAgICAgICAgWyAiR0xfUkdC
MTZJIiwgICAgICAgICAgICAgIkdMX1JHQl9JTlRFR0VSIiwgICAgICJHTF9TSE9SVCIgXSwKKyAg
ICAgICAgWyAiR0xfUkdCMzJVSSIsICAgICAgICAgICAgIkdMX1JHQl9JTlRFR0VSIiwgICAgICJH
TF9VTlNJR05FRF9JTlQiIF0sCisgICAgICAgIFsgIkdMX1JHQjMySSIsICAgICAgICAgICAgICJH
TF9SR0JfSU5URUdFUiIsICAgICAiR0xfSU5UIiBdLAorICAgICAgICBbICJHTF9SRzgiLCAgICAg
ICAgICAgICAgICAiR0xfUkciLCAgICAgICAgICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiIF0sCisg
ICAgICAgIFsgIkdMX1JHOF9TTk9STSIsICAgICAgICAgICJHTF9SRyIsICAgICAgICAgICAgICAi
R0xfQllURSIgXSwKKyAgICAgICAgWyAiR0xfUkcxNkYiLCAgICAgICAgICAgICAgIkdMX1JHIiwg
ICAgICAgICAgICAgICJHTF9IQUxGX0ZMT0FUIiBdLAorICAgICAgICBbICJHTF9SRzE2RiIsICAg
ICAgICAgICAgICAiR0xfUkciLCAgICAgICAgICAgICAgIkdMX0hBTEZfRkxPQVRfT0VTIiBdLAor
ICAgICAgICBbICJHTF9SRzMyRiIsICAgICAgICAgICAgICAiR0xfUkciLCAgICAgICAgICAgICAg
IkdMX0ZMT0FUIiBdLAorICAgICAgICBbICJHTF9SRzE2RiIsICAgICAgICAgICAgICAiR0xfUkci
LCAgICAgICAgICAgICAgIkdMX0ZMT0FUIiBdLAorICAgICAgICBbICJHTF9SRzhVSSIsICAgICAg
ICAgICAgICAiR0xfUkdfSU5URUdFUiIsICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiIF0sCisgICAg
ICAgIFsgIkdMX1JHOEkiLCAgICAgICAgICAgICAgICJHTF9SR19JTlRFR0VSIiwgICAgICAiR0xf
QllURSIgXSwKKyAgICAgICAgWyAiR0xfUkcxNlVJIiwgICAgICAgICAgICAgIkdMX1JHX0lOVEVH
RVIiLCAgICAgICJHTF9VTlNJR05FRF9TSE9SVCIgXSwKKyAgICAgICAgWyAiR0xfUkcxNkkiLCAg
ICAgICAgICAgICAgIkdMX1JHX0lOVEVHRVIiLCAgICAgICJHTF9TSE9SVCIgXSwKKyAgICAgICAg
WyAiR0xfUkczMlVJIiwgICAgICAgICAgICAgIkdMX1JHX0lOVEVHRVIiLCAgICAgICJHTF9VTlNJ
R05FRF9JTlQiIF0sCisgICAgICAgIFsgIkdMX1JHMzJJIiwgICAgICAgICAgICAgICJHTF9SR19J
TlRFR0VSIiwgICAgICAiR0xfSU5UIiBdLAorICAgICAgICBbICJHTF9SOCIsICAgICAgICAgICAg
ICAgICAiR0xfUkVEIiwgICAgICAgICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiIF0sCisgICAgICAg
IFsgIkdMX1I4X1NOT1JNIiwgICAgICAgICAgICJHTF9SRUQiLCAgICAgICAgICAgICAiR0xfQllU
RSIgXSwKKyAgICAgICAgWyAiR0xfUjE2RiIsICAgICAgICAgICAgICAgIkdMX1JFRCIsICAgICAg
ICAgICAgICJHTF9IQUxGX0ZMT0FUIiBdLAorICAgICAgICBbICJHTF9SMTZGIiwgICAgICAgICAg
ICAgICAiR0xfUkVEIiwgICAgICAgICAgICAgIkdMX0hBTEZfRkxPQVRfT0VTIiBdLAorICAgICAg
ICBbICJHTF9SMzJGIiwgICAgICAgICAgICAgICAiR0xfUkVEIiwgICAgICAgICAgICAgIkdMX0ZM
T0FUIiBdLAorICAgICAgICBbICJHTF9SMTZGIiwgICAgICAgICAgICAgICAiR0xfUkVEIiwgICAg
ICAgICAgICAgIkdMX0ZMT0FUIiBdLAorICAgICAgICBbICJHTF9SOFVJIiwgICAgICAgICAgICAg
ICAiR0xfUkVEX0lOVEVHRVIiLCAgICAgIkdMX1VOU0lHTkVEX0JZVEUiIF0sCisgICAgICAgIFsg
IkdMX1I4SSIsICAgICAgICAgICAgICAgICJHTF9SRURfSU5URUdFUiIsICAgICAiR0xfQllURSIg
XSwKKyAgICAgICAgWyAiR0xfUjE2VUkiLCAgICAgICAgICAgICAgIkdMX1JFRF9JTlRFR0VSIiwg
ICAgICJHTF9VTlNJR05FRF9TSE9SVCIgXSwKKyAgICAgICAgWyAiR0xfUjE2SSIsICAgICAgICAg
ICAgICAgIkdMX1JFRF9JTlRFR0VSIiwgICAgICJHTF9TSE9SVCIgXSwKKyAgICAgICAgWyAiR0xf
UjMyVUkiLCAgICAgICAgICAgICAgIkdMX1JFRF9JTlRFR0VSIiwgICAgICJHTF9VTlNJR05FRF9J
TlQiIF0sCisgICAgICAgIFsgIkdMX1IzMkkiLCAgICAgICAgICAgICAgICJHTF9SRURfSU5URUdF
UiIsICAgICAiR0xfSU5UIiBdCisgICAgXSwKKyAgICAiVW5zaXplZCBmb3JtYXRzIjoKKyAgICBb
CisgICAgICAgIFsgIkdMX1JHQkEiLCAgICAgICAgICAgICAgICJHTF9SR0JBIiwgICAgICAgICAg
ICAiR0xfVU5TSUdORURfQllURSIgXSwKKyAgICAgICAgWyAiR0xfUkdCQSIsICAgICAgICAgICAg
ICAgIkdMX1JHQkEiLCAgICAgICAgICAgICJHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80IiBdLAor
ICAgICAgICBbICJHTF9SR0JBIiwgICAgICAgICAgICAgICAiR0xfUkdCQSIsICAgICAgICAgICAg
IkdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEiIF0sCisgICAgICAgIFsgIkdMX1JHQiIsICAgICAg
ICAgICAgICAgICJHTF9SR0IiLCAgICAgICAgICAgICAiR0xfVU5TSUdORURfQllURSIgXSwKKyAg
ICAgICAgWyAiR0xfUkdCIiwgICAgICAgICAgICAgICAgIkdMX1JHQiIsICAgICAgICAgICAgICJH
TF9VTlNJR05FRF9TSE9SVF81XzZfNSIgXSwKKyAgICAgICAgWyAiR0xfTFVNSU5BTkNFX0FMUEhB
IiwgICAgIkdMX0xVTUlOQU5DRV9BTFBIQSIsICJHTF9VTlNJR05FRF9CWVRFIiBdLAorICAgICAg
ICBbICJHTF9MVU1JTkFOQ0UiLCAgICAgICAgICAiR0xfTFVNSU5BTkNFIiwgICAgICAgIkdMX1VO
U0lHTkVEX0JZVEUiIF0sCisgICAgICAgIFsgIkdMX0FMUEhBIiwgICAgICAgICAgICAgICJHTF9B
TFBIQSIsICAgICAgICAgICAiR0xfVU5TSUdORURfQllURSIgXSwKKyAgICAgICAgWyAiR0xfU1JH
Ql9BTFBIQV9FWFQiLCAgICAgIkdMX1NSR0JfQUxQSEFfRVhUIiwgICJHTF9VTlNJR05FRF9CWVRF
IiBdLAorICAgICAgICBbICJHTF9TUkdCX0VYVCIsICAgICAgICAgICAiR0xfU1JHQl9FWFQiLCAg
ICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiIF0sCisgICAgICAgIFsgIkdMX1JHIiwgICAgICAgICAg
ICAgICAgICJHTF9SRyIsICAgICAgICAgICAgICAiR0xfVU5TSUdORURfQllURSIgXSwKKyAgICAg
ICAgWyAiR0xfUkciLCAgICAgICAgICAgICAgICAgIkdMX1JHIiwgICAgICAgICAgICAgICJHTF9G
TE9BVCIgXSwKKyAgICAgICAgWyAiR0xfUkciLCAgICAgICAgICAgICAgICAgIkdMX1JHIiwgICAg
ICAgICAgICAgICJHTF9IQUxGX0ZMT0FUIiBdLAorICAgICAgICBbICJHTF9SRyIsICAgICAgICAg
ICAgICAgICAiR0xfUkciLCAgICAgICAgICAgICAgIkdMX0hBTEZfRkxPQVRfT0VTIiBdLAorICAg
ICAgICBbICJHTF9SRUQiLCAgICAgICAgICAgICAgICAiR0xfUkVEIiwgICAgICAgICAgICAgIkdM
X1VOU0lHTkVEX0JZVEUiIF0sCisgICAgICAgIFsgIkdMX1JFRCIsICAgICAgICAgICAgICAgICJH
TF9SRUQiLCAgICAgICAgICAgICAiR0xfRkxPQVQiIF0sCisgICAgICAgIFsgIkdMX1JFRCIsICAg
ICAgICAgICAgICAgICJHTF9SRUQiLCAgICAgICAgICAgICAiR0xfSEFMRl9GTE9BVCIgXSwKKyAg
ICAgICAgWyAiR0xfUkVEIiwgICAgICAgICAgICAgICAgIkdMX1JFRCIsICAgICAgICAgICAgICJH
TF9IQUxGX0ZMT0FUX09FUyIgXSwKKyAgICAgICAgWyAiR0xfREVQVEhfU1RFTkNJTCIsICAgICAg
IkdMX0RFUFRIX1NURU5DSUwiLCAgICJHTF9VTlNJR05FRF9JTlRfMjRfOCIgXQorICAgIF0sCisg
ICAgIkRlcHRoIHN0ZW5jaWwgZm9ybWF0cyI6CisgICAgWworICAgICAgICBbICJHTF9ERVBUSF9D
T01QT05FTlQxNiIsICAiR0xfREVQVEhfQ09NUE9ORU5UIiwgIkdMX1VOU0lHTkVEX1NIT1JUIiBd
LAorICAgICAgICBbICJHTF9ERVBUSF9DT01QT05FTlQyNCIsICAiR0xfREVQVEhfQ09NUE9ORU5U
IiwgIkdMX1VOU0lHTkVEX0lOVCIgXSwKKyAgICAgICAgWyAiR0xfREVQVEhfQ09NUE9ORU5UMTYi
LCAgIkdMX0RFUFRIX0NPTVBPTkVOVCIsICJHTF9VTlNJR05FRF9JTlQiIF0sCisgICAgICAgIFsg
IkdMX0RFUFRIX0NPTVBPTkVOVDMyRiIsICJHTF9ERVBUSF9DT01QT05FTlQiLCAiR0xfRkxPQVQi
IF0sCisgICAgICAgIFsgIkdMX0RFUFRIMjRfU1RFTkNJTDgiLCAgICJHTF9ERVBUSF9TVEVOQ0lM
IiwgICAiR0xfVU5TSUdORURfSU5UXzI0XzgiIF0sCisgICAgICAgIFsgIkdMX0RFUFRIMzJGX1NU
RU5DSUw4IiwgICJHTF9ERVBUSF9TVEVOQ0lMIiwgICAiR0xfRkxPQVRfMzJfVU5TSUdORURfSU5U
XzI0XzhfUkVWIiBdCisgICAgXSwKKyAgICAiRnJvbSBHTF9FWFRfc1JHQiI6CisgICAgWworICAg
ICAgICBbICJHTF9TUkdCOF9BTFBIQThfRVhUIiwgICAiR0xfU1JHQl9BTFBIQV9FWFQiLCAiR0xf
VU5TSUdORURfQllURSIgXSwKKyAgICAgICAgWyAiR0xfU1JHQjgiLCAgICAgICAgICAgICAgIkdM
X1NSR0JfRVhUIiwgICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiIF0KKyAgICBdLAorICAgICJGcm9t
IEdMX09FU190ZXh0dXJlX2Zsb2F0IjoKKyAgICBbCisgICAgICAgIFsgIkdMX1JHQkEiLCAgICAg
ICAgICAgICAgICJHTF9SR0JBIiwgICAgICAgICAgICAiR0xfRkxPQVQiIF0sCisgICAgICAgIFsg
IkdMX1JHQiIsICAgICAgICAgICAgICAgICJHTF9SR0IiLCAgICAgICAgICAgICAiR0xfRkxPQVQi
IF0sCisgICAgICAgIFsgIkdMX0xVTUlOQU5DRV9BTFBIQSIsICAgICJHTF9MVU1JTkFOQ0VfQUxQ
SEEiLCAiR0xfRkxPQVQiIF0sCisgICAgICAgIFsgIkdMX0xVTUlOQU5DRSIsICAgICAgICAgICJH
TF9MVU1JTkFOQ0UiLCAgICAgICAiR0xfRkxPQVQiIF0sCisgICAgICAgIFsgIkdMX0FMUEhBIiwg
ICAgICAgICAgICAgICJHTF9BTFBIQSIsICAgICAgICAgICAiR0xfRkxPQVQiIF0KKyAgICBdLAor
ICAgICJGcm9tIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiOgorICAgIFsKKyAgICAgICAgWyAi
R0xfUkdCQSIsICAgICAgICAgICAgICAgIkdMX1JHQkEiLCAgICAgICAgICAgICJHTF9IQUxGX0ZM
T0FUX09FUyIgXSwKKyAgICAgICAgWyAiR0xfUkdCIiwgICAgICAgICAgICAgICAgIkdMX1JHQiIs
ICAgICAgICAgICAgICJHTF9IQUxGX0ZMT0FUX09FUyIgXSwKKyAgICAgICAgWyAiR0xfTFVNSU5B
TkNFX0FMUEhBIiwgICAgIkdMX0xVTUlOQU5DRV9BTFBIQSIsICJHTF9IQUxGX0ZMT0FUIiBdLAor
ICAgICAgICBbICJHTF9MVU1JTkFOQ0VfQUxQSEEiLCAgICAiR0xfTFVNSU5BTkNFX0FMUEhBIiwg
IkdMX0hBTEZfRkxPQVRfT0VTIiBdLAorICAgICAgICBbICJHTF9MVU1JTkFOQ0UiLCAgICAgICAg
ICAiR0xfTFVNSU5BTkNFIiwgICAgICAgIkdMX0hBTEZfRkxPQVQiIF0sCisgICAgICAgIFsgIkdM
X0xVTUlOQU5DRSIsICAgICAgICAgICJHTF9MVU1JTkFOQ0UiLCAgICAgICAiR0xfSEFMRl9GTE9B
VF9PRVMiIF0sCisgICAgICAgIFsgIkdMX0FMUEhBIiwgICAgICAgICAgICAgICJHTF9BTFBIQSIs
ICAgICAgICAgICAiR0xfSEFMRl9GTE9BVCIgXSwKKyAgICAgICAgWyAiR0xfQUxQSEEiLCAgICAg
ICAgICAgICAgIkdMX0FMUEhBIiwgICAgICAgICAgICJHTF9IQUxGX0ZMT0FUX09FUyIgXQorICAg
IF0sCisgICAgIkZyb20gR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4IjoKKyAgICBbCisg
ICAgICAgIFsgIkdMX0JHUkFfRVhUIiwgICAgICAgICAgICJHTF9CR1JBX0VYVCIsICAgICAgICAi
R0xfVU5TSUdORURfQllURSIgXQorICAgIF0sCisgICAgIkZyb20gR0xfRVhUX3RleHR1cmVfc3Rv
cmFnZSI6CisgICAgWworICAgICAgICBbICJHTF9BTFBIQThfRVhUIiwgICAgICAgICAgICAgIkdM
X0FMUEhBIiwgICAgICAgICAgICJHTF9VTlNJR05FRF9CWVRFIiBdLAorICAgICAgICBbICJHTF9M
VU1JTkFOQ0U4X0VYVCIsICAgICAgICAgIkdMX0xVTUlOQU5DRSIsICAgICAgICJHTF9VTlNJR05F
RF9CWVRFIiBdLAorICAgICAgICBbICJHTF9MVU1JTkFOQ0U4X0FMUEhBOF9FWFQiLCAgIkdMX0xV
TUlOQU5DRV9BTFBIQSIsICJHTF9VTlNJR05FRF9CWVRFIiBdLAorICAgICAgICBbICJHTF9BTFBI
QTMyRl9FWFQiLCAgICAgICAgICAgIkdMX0FMUEhBIiwgICAgICAgICAgICJHTF9GTE9BVCIgXSwK
KyAgICAgICAgWyAiR0xfTFVNSU5BTkNFMzJGX0VYVCIsICAgICAgICJHTF9MVU1JTkFOQ0UiLCAg
ICAgICAiR0xfRkxPQVQiIF0sCisgICAgICAgIFsgIkdMX0xVTUlOQU5DRV9BTFBIQTMyRl9FWFQi
LCAiR0xfTFVNSU5BTkNFX0FMUEhBIiwgIkdMX0ZMT0FUIiBdLAorICAgICAgICBbICJHTF9BTFBI
QTE2Rl9FWFQiLCAgICAgICAgICAgIkdMX0FMUEhBIiwgICAgICAgICAgICJHTF9IQUxGX0ZMT0FU
IiBdLAorICAgICAgICBbICJHTF9BTFBIQTE2Rl9FWFQiLCAgICAgICAgICAgIkdMX0FMUEhBIiwg
ICAgICAgICAgICJHTF9IQUxGX0ZMT0FUX09FUyIgXSwKKyAgICAgICAgWyAiR0xfTFVNSU5BTkNF
MTZGX0VYVCIsICAgICAgICJHTF9MVU1JTkFOQ0UiLCAgICAgICAiR0xfSEFMRl9GTE9BVCIgXSwK
KyAgICAgICAgWyAiR0xfTFVNSU5BTkNFMTZGX0VYVCIsICAgICAgICJHTF9MVU1JTkFOQ0UiLCAg
ICAgICAiR0xfSEFMRl9GTE9BVF9PRVMiIF0sCisgICAgICAgIFsgIkdMX0xVTUlOQU5DRV9BTFBI
QTE2Rl9FWFQiLCAiR0xfTFVNSU5BTkNFX0FMUEhBIiwgIkdMX0hBTEZfRkxPQVQiIF0sCisgICAg
ICAgIFsgIkdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9FWFQiLCAiR0xfTFVNSU5BTkNFX0FMUEhBIiwg
IkdMX0hBTEZfRkxPQVRfT0VTIiBdCisgICAgXSwKKyAgICAiRnJvbSBHTF9FWFRfdGV4dHVyZV9z
dG9yYWdlIGFuZCBHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiOgorICAgIFsKKyAgICAg
ICAgWyAiR0xfQkdSQThfRVhUIiwgICAgICAgICAgICAgICJHTF9CR1JBX0VYVCIsICAgICAgICAi
R0xfVU5TSUdORURfQllURSIgXSwKKyAgICAgICAgWyAiR0xfQkdSQTRfQU5HTEVYIiwgICAgICAg
ICAgICJHTF9CR1JBX0VYVCIsICAgICAgICAiR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF9SRVZf
RVhUIiBdLAorICAgICAgICBbICJHTF9CR1JBNF9BTkdMRVgiLCAgICAgICAgICAgIkdMX0JHUkFf
RVhUIiwgICAgICAgICJHTF9VTlNJR05FRF9CWVRFIiBdLAorICAgICAgICBbICJHTF9CR1I1X0Ex
X0FOR0xFWCIsICAgICAgICAgIkdMX0JHUkFfRVhUIiwgICAgICAgICJHTF9VTlNJR05FRF9TSE9S
VF8xXzVfNV81X1JFVl9FWFQiIF0sCisgICAgICAgIFsgIkdMX0JHUjVfQTFfQU5HTEVYIiwgICAg
ICAgICAiR0xfQkdSQV9FWFQiLCAgICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiIF0KKyAgICBdLAor
ICAgICJGcm9tIEdMX0FOR0xFX2RlcHRoX3RleHR1cmUgYW5kIE9FU19kZXB0aF90ZXh0dXJlIjoK
KyAgICBbCisgICAgICAgIFsgIkdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUyIsICAiR0xfREVQVEhf
Q09NUE9ORU5UIiwgIkdMX1VOU0lHTkVEX0lOVF8yNF84IiBdLAorICAgICAgICBbICJHTF9ERVBU
SF9DT01QT05FTlQiLCAgICAgICAgIkdMX0RFUFRIX0NPTVBPTkVOVCIsICJHTF9VTlNJR05FRF9T
SE9SVCIgXSwKKyAgICAgICAgWyAiR0xfREVQVEhfQ09NUE9ORU5UIiwgICAgICAgICJHTF9ERVBU
SF9DT01QT05FTlQiLCAiR0xfVU5TSUdORURfSU5UIiBdCisgICAgXSwKKyAgICAiRnJvbSBHTF9F
WFRfdGV4dHVyZV9ub3JtMTYiOgorICAgIFsKKyAgICAgICAgWyAiR0xfUjE2X0VYVCIsICAgICAg
ICAgICJHTF9SRUQiLCAgIkdMX1VOU0lHTkVEX1NIT1JUIiBdLAorICAgICAgICBbICJHTF9SRzE2
X0VYVCIsICAgICAgICAgIkdMX1JHIiwgICAiR0xfVU5TSUdORURfU0hPUlQiIF0sCisgICAgICAg
IFsgIkdMX1JHQjE2X0VYVCIsICAgICAgICAiR0xfUkdCIiwgICJHTF9VTlNJR05FRF9TSE9SVCIg
XSwKKyAgICAgICAgWyAiR0xfUkdCQTE2X0VYVCIsICAgICAgICJHTF9SR0JBIiwgIkdMX1VOU0lH
TkVEX1NIT1JUIiBdLAorICAgICAgICBbICJHTF9SMTZfU05PUk1fRVhUIiwgICAgIkdMX1JFRCIs
ICAiR0xfU0hPUlQiIF0sCisgICAgICAgIFsgIkdMX1JHMTZfU05PUk1fRVhUIiwgICAiR0xfUkci
LCAgICJHTF9TSE9SVCIgXSwKKyAgICAgICAgWyAiR0xfUkdCMTZfU05PUk1fRVhUIiwgICJHTF9S
R0IiLCAgIkdMX1NIT1JUIiBdLAorICAgICAgICBbICJHTF9SR0JBMTZfU05PUk1fRVhUIiwgIkdM
X1JHQkEiLCAiR0xfU0hPUlQiIF0KKyAgICBdCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvZm9ybWF0X21hcF9hdXRvZ2VuLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZm9ybWF0X21hcF9hdXRvZ2VuLmNw
cAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
Zm9ybWF0X21hcF9hdXRvZ2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1MzAgQEAK
Ky8vIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQuCisvLyBHZW5lcmF0ZWQgYnkgZ2VuX2Zv
cm1hdF9tYXAucHkgdXNpbmcgZGF0YSBmcm9tIGZvcm1hdF9tYXBfZGF0YS5qc29uLgorLy8gRVMz
IGZvcm1hdCBpbmZvIGZyb20gZXMzX2Zvcm1hdF90eXBlX2NvbWJpbmF0aW9ucy5qc29uLgorLy8K
Ky8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKy8vIGZvcm1hdF9tYXA6CisvLyAgIERldGVybWluaW5nIHRoZSBzaXplZCBpbnRlcm5h
bCBmb3JtYXQgZnJvbSBhIChmb3JtYXQsdHlwZSkgcGFpci4KKy8vICAgQWxzbyBjaGVjayBlczMg
Zm9ybWF0IGNvbWJpbmF0aW9ucyBmb3IgdmFsaWRpdHkuCisKKyNpbmNsdWRlICJhbmdsZV9nbC5o
IgorI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgZ2wKK3sKKworR0xlbnVt
IEdldFNpemVkRm9ybWF0SW50ZXJuYWwoR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUpCit7Cisg
ICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAgICAgICBjYXNlIEdMX0FMUEhBOgorICAgICAg
ICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2Ug
R0xfRkxPQVQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9BTFBIQTMyRl9FWFQ7Cisg
ICAgICAgICAgICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUOgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gR0xfQUxQSEExNkZfRVhUOworICAgICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9B
VF9PRVM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9BTFBIQTE2Rl9FWFQ7CisgICAg
ICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gR0xfQUxQSEE4X0VYVDsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGNhc2UgR0xfQkdSQV9FWFQ6CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gR0xfQkdSQThfRVhUOworICAgICAgICAgICAgICAgIGNhc2Ug
R0xfVU5TSUdORURfU0hPUlRfMV81XzVfNV9SRVZfRVhUOgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gR0xfQkdSNV9BMV9BTkdMRVg7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05F
RF9TSE9SVF80XzRfNF80X1JFVl9FWFQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9C
R1JBNF9BTkdMRVg7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF81XzZf
NToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0JHUjU2NV9BTkdMRVg7CisgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdC
QV9TM1RDX0RYVDFfRVhUOgorICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOworICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQzX0FOR0xFOgorICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU7CisgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdC
QV9TM1RDX0RYVDVfQU5HTEU6CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRTsKKyAgICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9S
R0JfUzNUQ19EWFQxX0VYVDoKKyAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOworICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQ6
CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgY2FzZSBHTF9GTE9BVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0RFUFRIX0NP
TVBPTkVOVDMyRjsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUzsKKyAgICAgICAg
ICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gR0xfREVQVEhfQ09NUE9ORU5UMTY7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBjYXNlIEdMX0RFUFRIX1NURU5DSUw6CisgICAgICAgICAgICBzd2l0Y2ggKHR5
cGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9GTE9BVF8zMl9VTlNJ
R05FRF9JTlRfMjRfOF9SRVY6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9ERVBUSDMy
Rl9TVEVOQ0lMODsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF8yNF84Ogor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfREVQVEgyNF9TVEVOQ0lMODsKKyAgICAgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFOgorICAg
ICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNh
c2UgR0xfRkxPQVQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9MVU1JTkFOQ0UzMkZf
RVhUOworICAgICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVDoKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEdMX0xVTUlOQU5DRTE2Rl9FWFQ7CisgICAgICAgICAgICAgICAgY2FzZSBH
TF9IQUxGX0ZMT0FUX09FUzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0xVTUlOQU5D
RTE2Rl9FWFQ7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gR0xfTFVNSU5BTkNFOF9FWFQ7CisgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQToKKyAgICAg
ICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNl
IEdMX0ZMT0FUOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfTFVNSU5BTkNFX0FMUEhB
MzJGX0VYVDsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVQ6CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBHTF9MVU1JTkFOQ0VfQUxQSEExNkZfRVhUOworICAgICAgICAgICAg
ICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBH
TF9MVU1JTkFOQ0VfQUxQSEExNkZfRVhUOworICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdO
RURfQllURToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0xVTUlOQU5DRThfQUxQSEE4
X0VYVDsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xf
UkVEOgorICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGNhc2UgR0xfQllURToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1I4X1NO
T1JNOworICAgICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBHTF9SMzJGOworICAgICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVDoKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1IxNkY7CisgICAgICAgICAgICAgICAgY2FzZSBH
TF9IQUxGX0ZMT0FUX09FUzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1IxNkY7Cisg
ICAgICAgICAgICAgICAgY2FzZSBHTF9TSE9SVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEdMX1IxNl9TTk9STV9FWFQ7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRF
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfUjg7CisgICAgICAgICAgICAgICAgY2Fz
ZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1IxNl9F
WFQ7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX1JF
RF9JTlRFR0VSOgorICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGNhc2UgR0xfQllURToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdM
X1I4STsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0lOVDoKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEdMX1IzMkk7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9TSE9SVDoKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEdMX1IxNkk7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJ
R05FRF9CWVRFOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfUjhVSTsKKyAgICAgICAg
ICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEdMX1IzMlVJOworICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBHTF9SMTZVSTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfUkc6CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9CWVRFOgorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gR0xfUkc4X1NOT1JNOworICAgICAgICAgICAgICAgIGNhc2UgR0xf
RkxPQVQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9SRzMyRjsKKyAgICAgICAgICAg
ICAgICBjYXNlIEdMX0hBTEZfRkxPQVQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9S
RzE2RjsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVRfT0VTOgorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gR0xfUkcxNkY7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9TSE9S
VDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHMTZfU05PUk1fRVhUOworICAgICAg
ICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEdMX1JHODsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gR0xfUkcxNl9FWFQ7CisgICAgICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX1JHQjoKKyAgICAgICAgICAgIHN3aXRjaCAo
dHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0JZVEU6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBHTF9SR0I4X1NOT1JNOworICAgICAgICAgICAgICAgIGNh
c2UgR0xfRkxPQVQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9SR0IzMkY7CisgICAg
ICAgICAgICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUOgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gR0xfUkdCMTZGOworICAgICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9SR0IxNkY7CisgICAgICAgICAgICAgICAgY2Fz
ZSBHTF9TSE9SVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjE2X1NOT1JNX0VY
VDsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBHTF9SR0I4OworICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURf
SU5UXzEwRl8xMUZfMTFGX1JFVjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1IxMUZf
RzExRl9CMTBGOworICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UXzVfOV85Xzlf
UkVWOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfUkdCOV9FNTsKKyAgICAgICAgICAg
ICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
R0xfUkdCMTZfRVhUOworICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNV82
XzU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9SR0I1NjU7CisgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAgICAgICBz
d2l0Y2ggKHR5cGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9CWVRF
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfUkdCQThfU05PUk07CisgICAgICAgICAg
ICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQkEz
MkY7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUOgorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gR0xfUkdCQTE2RjsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0hBTEZfRkxP
QVRfT0VTOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfUkdCQTE2RjsKKyAgICAgICAg
ICAgICAgICBjYXNlIEdMX1NIT1JUOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfUkdC
QTE2X1NOT1JNX0VYVDsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9SR0JBODsKKyAgICAgICAgICAgICAgICBjYXNl
IEdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVjoKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEdMX1JHQjEwX0EyOworICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9SR0JBMTZfRVhUOworICAgICAgICAgICAg
ICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNDoKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEdMX1JHQkE0OworICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRf
NV81XzVfMToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjVfQTE7CisgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX1JHQkFfSU5URUdFUjoK
KyAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBjYXNlIEdMX0JZVEU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9SR0JBOEk7Cisg
ICAgICAgICAgICAgICAgY2FzZSBHTF9JTlQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBH
TF9SR0JBMzJJOworICAgICAgICAgICAgICAgIGNhc2UgR0xfU0hPUlQ6CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBHTF9SR0JBMTZJOworICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdO
RURfQllURToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQkE4VUk7CisgICAgICAg
ICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBHTF9SR0JBMzJVSTsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF8yXzEw
XzEwXzEwX1JFVjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjEwX0EyVUk7Cisg
ICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEdMX1JHQkExNlVJOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgY2FzZSBHTF9SR0JfSU5URUdFUjoKKyAgICAgICAgICAgIHN3aXRjaCAodHlwZSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0JZVEU6CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBHTF9SR0I4STsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0lOVDoK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjMySTsKKyAgICAgICAgICAgICAgICBj
YXNlIEdMX1NIT1JUOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfUkdCMTZJOworICAg
ICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEdMX1JHQjhVSTsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjMyVUk7CisgICAgICAgICAgICAgICAg
Y2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JH
QjE2VUk7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdM
X1JHX0lOVEVHRVI6CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgY2FzZSBHTF9CWVRFOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
R0xfUkc4STsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0lOVDoKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEdMX1JHMzJJOworICAgICAgICAgICAgICAgIGNhc2UgR0xfU0hPUlQ6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBHTF9SRzE2STsKKyAgICAgICAgICAgICAgICBjYXNlIEdM
X1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9SRzhVSTsKKyAg
ICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEdMX1JHMzJVSTsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JU
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfUkcxNlVJOworICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9TUkdCX0FMUEhBX0VYVDoKKyAgICAg
ICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNl
IEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9TUkdCOF9B
TFBIQTg7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdM
X1NSR0JfRVhUOgorICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEdMX1NSR0I4OworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgY2FzZSBHTF9TVEVOQ0lMOgorICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEdMX1NURU5DSUxfSU5ERVg4OworICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9OT05FOgorICAgICAgICAgICAgcmV0dXJuIEdM
X05PTkU7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIHJldHVybiBHTF9OT05FOworfQorCitib29sIFZhbGlkRVMzRm9ybWF0KEdMZW51bSBmb3Jt
YXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAgICAgICBjYXNlIEdMX0FMUEhB
OgorICAgICAgICBjYXNlIEdMX0JHUkFfRVhUOgorICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBP
TkVOVDoKKyAgICAgICAgY2FzZSBHTF9ERVBUSF9TVEVOQ0lMOgorICAgICAgICBjYXNlIEdMX0xV
TUlOQU5DRToKKyAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6CisgICAgICAgIGNhc2Ug
R0xfUkVEOgorICAgICAgICBjYXNlIEdMX1JFRF9JTlRFR0VSOgorICAgICAgICBjYXNlIEdMX1JH
OgorICAgICAgICBjYXNlIEdMX1JHQjoKKyAgICAgICAgY2FzZSBHTF9SR0JBOgorICAgICAgICBj
YXNlIEdMX1JHQkFfSU5URUdFUjoKKyAgICAgICAgY2FzZSBHTF9SR0JfSU5URUdFUjoKKyAgICAg
ICAgY2FzZSBHTF9SR19JTlRFR0VSOgorICAgICAgICBjYXNlIEdMX1NSR0JfQUxQSEFfRVhUOgor
ICAgICAgICBjYXNlIEdMX1NSR0JfRVhUOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jv
b2wgVmFsaWRFUzNUeXBlKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7
CisgICAgICAgIGNhc2UgR0xfQllURToKKyAgICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAgICAg
Y2FzZSBHTF9GTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVY6CisgICAgICAgIGNhc2UgR0xf
SEFMRl9GTE9BVDoKKyAgICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUX09FUzoKKyAgICAgICAgY2Fz
ZSBHTF9JTlQ6CisgICAgICAgIGNhc2UgR0xfU0hPUlQ6CisgICAgICAgIGNhc2UgR0xfVU5TSUdO
RURfQllURToKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6CisgICAgICAgIGNhc2UgR0xf
VU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFVjoKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9J
TlRfMjRfODoKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVY6Cisg
ICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UXzVfOV85XzlfUkVWOgorICAgICAgICBjYXNlIEdM
X1VOU0lHTkVEX1NIT1JUOgorICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzFfNV81XzVf
UkVWX0VYVDoKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80OgorICAgICAg
ICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzRfUkVWX0VYVDoKKyAgICAgICAgY2FzZSBH
TF9VTlNJR05FRF9TSE9SVF81XzVfNV8xOgorICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JU
XzVfNl81OgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgVmFsaWRFUzNGb3JtYXRD
b21iaW5hdGlvbihHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xlbnVtIGludGVybmFsRm9y
bWF0KQoreworICAgIEFTU0VSVChWYWxpZEVTM0Zvcm1hdChmb3JtYXQpICYmIFZhbGlkRVMzVHlw
ZSh0eXBlKSk7CisKKyAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICB7CisgICAgICAgIGNhc2UgR0xf
UkdCX0lOVEVHRVI6CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgY2FzZSBHTF9JTlQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQjMySToKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQjE2VUk6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEdMX1NIT1JUOgorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SR0IxNkk6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQjhV
SToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfQllURToKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdCOEk6
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQp
CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xf
UkdCMzJVSToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBHTF9SR0JBX0lOVEVHRVI6CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9JTlQ6CisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQkEzMkk6
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOgorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1h
dCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBH
TF9SR0JBMTZVSToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURf
SU5UXzJfMTBfMTBfMTBfUkVWOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SR0IxMF9BMlVJOgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgY2FzZSBHTF9TSE9SVDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdCQTE2SToKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisgICAgICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdCQThVSToKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGNhc2UgR0xfQllURToKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisgICAgICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdCQThJOgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6CisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQkEzMlVJOgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNl
IEdMX1JHQjoKKyAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVY6CisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQor
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1Ix
MUZfRzExRl9CMTBGOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05F
RF9TSE9SVDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAo
aW50ZXJuYWxGb3JtYXQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgR0xfUkdCMTZfRVhUOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2Fz
ZSBHTF9TSE9SVDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRj
aCAoaW50ZXJuYWxGb3JtYXQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgR0xfUkdCMTZfU05PUk1fRVhUOgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SR0I6CisgICAgICAgICAgICAgICAg
ICAgICAgICBjYXNlIEdMX1JHQjg6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1JH
QjU2NToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfU1JHQjg6CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81OgorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SR0I6
CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQjU2NToKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6CisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQjoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdCMTZGOgorICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBHTF9SMTFGX0cxMUZfQjEwRjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xf
UkdCOV9FNToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVDoK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxG
b3JtYXQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgR0xfUkdCMTZGOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SMTFGX0cxMUZf
QjEwRjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdCOV9FNToKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQjoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgR0xfUkdCMzJGOgorICAgICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBHTF9SR0IxNkY6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1IxMUZfRzExRl9C
MTBGOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SR0I5X0U1OgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgY2FzZSBHTF9CWVRFOgorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SR0I4X1NOT1JNOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfNV85XzlfOV9SRVY6Cisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9y
bWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNl
IEdMX1JHQjlfRTU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBOgorICAgICAgICAgICAgc3dpdGNoICh0
eXBlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVDoK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxG
b3JtYXQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgR0xfTFVNSU5BTkNFX0FMUEhBOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9M
VU1JTkFOQ0VfQUxQSEExNkZfRVhUOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBH
TF9GTE9BVDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAo
aW50ZXJuYWxGb3JtYXQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBOgorICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEEzMkZfRVhUOgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6CisgICAgICAg
ICAgICAgICAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRThfQUxQSEE4X0VYVDoKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6CisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5D
RV9BTFBIQToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhB
MTZGX0VYVDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBHTF9BTFBIQToKKyAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVQ6CisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX0FMUEhBOgor
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9BTFBIQTE2Rl9FWFQ6CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBjYXNlIEdMX0ZMT0FUOgorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9BTFBIQToKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgR0xfQUxQSEEzMkZfRVhUOgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9BTFBIQToKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgR0xfQUxQSEE4X0VYVDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX0FMUEhBOgorICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBHTF9BTFBIQTE2Rl9FWFQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfUkdCQToKKyAgICAgICAgICAgIHN3aXRj
aCAodHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVE
X1NIT1JUOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChp
bnRlcm5hbEZvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBHTF9SR0JBMTZfRVhUOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2Fz
ZSBHTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVY6CisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQjEwX0EyOgorICAgICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SR0I1X0ExOgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgY2FzZSBHTF9TSE9SVDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdCQTE2X1NOT1JNX0VYVDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNDoKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdC
QToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdCQTQ6CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAg
ICAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQkE4OgorICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBHTF9SR0I1X0ExOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SR0JBNDoK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfU1JHQjhfQUxQSEE4OgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUX09FUzoKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdCQToKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdCQTE2RjoKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisgICAgICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdCQTE2RjoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlIEdMX1JHQkEzMkY6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNl
IEdMX1JHQkExNkY6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEdMX0JZVEU6Cisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9y
bWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNl
IEdMX1JHQkE4X1NOT1JNOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJ
R05FRF9TSE9SVF81XzVfNV8xOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SR0JBOgorICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBHTF9SR0I1X0ExOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRToKKyAgICAgICAgICAgIHN3aXRjaCAodHlw
ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVQ6Cisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9y
bWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNl
IEdMX0xVTUlOQU5DRToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNF
MTZGX0VYVDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0
KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdM
X0xVTUlOQU5DRToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFMzJG
X0VYVDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxG
b3JtYXQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgR0xfTFVNSU5BTkNFOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9MVU1JTkFO
Q0U4X0VYVDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9P
RVM6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVy
bmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIEdMX0xVTUlOQU5DRToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfTFVN
SU5BTkNFMTZGX0VYVDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgY2FzZSBHTF9SR19JTlRFR0VSOgorICAgICAgICAgICAgc3dpdGNoICh0eXBl
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgR0xfSU5UOgorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SRzMy
SToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6Cisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9y
bWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNl
IEdMX1JHMTZVSToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfU0hPUlQ6Cisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9y
bWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNl
IEdMX1JHMTZJOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9C
WVRFOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnRl
cm5hbEZvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBHTF9SRzhVSToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfQllU
RToKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJu
YWxGb3JtYXQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgR0xfUkc4SToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdO
RURfSU5UOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChp
bnRlcm5hbEZvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBHTF9SRzMyVUk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfUkVEX0lOVEVHRVI6CisgICAgICAgICAgICBzd2l0
Y2ggKHR5cGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9JTlQ6Cisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9y
bWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNl
IEdMX1IzMkk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NI
T1JUOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnRl
cm5hbEZvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBHTF9SMTZVSToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfU0hP
UlQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVy
bmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIEdMX1IxNkk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lH
TkVEX0JZVEU6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2gg
KGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjYXNlIEdMX1I4VUk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEdM
X0JZVEU6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGlu
dGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIEdMX1I4SToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5T
SUdORURfSU5UOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNo
IChpbnRlcm5hbEZvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBHTF9SMzJVSToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9SRUQ6CisgICAgICAgICAgICBzd2l0Y2ggKHR5
cGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9S
VDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJu
YWxGb3JtYXQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgR0xfUjE2X0VYVDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfU0hP
UlQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVy
bmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIEdMX1IxNl9TTk9STV9FWFQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNl
IEdMX0ZMT0FUOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNo
IChpbnRlcm5hbEZvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBHTF9SRUQ6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1Iz
MkY6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1IxNkY6CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVRfT0VTOgorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SRUQ6CisgICAgICAg
ICAgICAgICAgICAgICAgICBjYXNlIEdMX1IxNkY6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBjYXNlIEdMX0hBTEZfRkxPQVQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1JFRDoKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgR0xfUjE2RjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdO
RURfQllURToKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAo
aW50ZXJuYWxGb3JtYXQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgR0xfUkVEOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SODoK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfQllURToKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfUjhfU05PUk06
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNh
c2UgR0xfREVQVEhfQ09NUE9ORU5UOgorICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9ERVBU
SF9DT01QT05FTlQ6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBP
TkVOVDI0OgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQx
NjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UXzI0Xzg6
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFs
Rm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBj
YXNlIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBz
d2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDMyRjoKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVO
VDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMTY6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug
R0xfREVQVEhfU1RFTkNJTDoKKyAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF8yNF84OgorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9ERVBU
SF9TVEVOQ0lMOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSDI0X1NURU5D
SUw4OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBHTF9GTE9BVF8zMl9VTlNJR05F
RF9JTlRfMjRfOF9SRVY6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBz
d2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIMzJGX1NURU5DSUw4OgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX1NSR0JfRVhUOgor
ICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfU1JHQl9FWFQ6CisgICAgICAgICAgICAgICAg
ICAgICAgICBjYXNlIEdMX1NSR0I4OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIEdMX1NSR0JfQUxQSEFfRVhUOgorICAgICAgICAgICAg
c3dpdGNoICh0eXBlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5T
SUdORURfQllURToKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRj
aCAoaW50ZXJuYWxGb3JtYXQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgR0xfU1JHQl9BTFBIQV9FWFQ6CisgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIEdMX1NSR0I4X0FMUEhBOF9FWFQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfUkc6CisgICAgICAgICAgICBzd2l0Y2gg
KHR5cGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9T
SE9SVDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50
ZXJuYWxGb3JtYXQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgR0xfUkcxNl9FWFQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEdM
X1NIT1JUOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChp
bnRlcm5hbEZvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBHTF9SRzE2X1NOT1JNX0VYVDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBz
d2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjYXNlIEdMX1JHOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBH
TF9SRzMyRjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfUkcxNkY6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVRfT0VTOgorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAgICAg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SRzoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfUkcxNkY6CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1JHOgorICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBHTF9SRzE2RjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xf
VU5TSUdORURfQllURToKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3
aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgR0xfUkc6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdM
X1JHODoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgR0xfQllURToKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfUkc4
X1NOT1JNOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBjYXNlIEdMX0JHUkFfRVhUOgorICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF9S
RVZfRVhUOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChp
bnRlcm5hbEZvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBHTF9CR1JBNF9BTkdMRVg6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBj
YXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX0JHUkE4X0VYVDoKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgR0xfQkdSQTRfQU5HTEVYOgorICAgICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBHTF9CR1I1X0ExX0FOR0xFWDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfQkdS
QV9FWFQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JU
XzFfNV81XzVfUkVWX0VYVDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgR0xfQkdSNV9BMV9BTkdMRVg6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJu
IGZhbHNlOworfQorCit9ICAvLyBuYW1lc3BhY2UgZ2wKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9mb3JtYXRfbWFwX2RhdGEuanNvbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZm9ybWF0X21hcF9kYXRhLmpzb24J
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2Zv
cm1hdF9tYXBfZGF0YS5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMwIEBACit7Cisg
ICAgIkdMX1JHQkEiOiB7CisgICAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkdMX1JHQkE4IiwK
KyAgICAgICAgIkdMX1VOU0lHTkVEX1NIT1JUIjogIkdMX1JHQkExNl9FWFQiLAorICAgICAgICAi
R0xfQllURSI6ICJHTF9SR0JBOF9TTk9STSIsCisgICAgICAgICJHTF9TSE9SVCI6ICJHTF9SR0JB
MTZfU05PUk1fRVhUIiwKKyAgICAgICAgIkdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQiOiAiR0xf
UkdCQTQiLAorICAgICAgICAiR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMSI6ICJHTF9SR0I1X0Ex
IiwKKyAgICAgICAgIkdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViI6ICJHTF9SR0IxMF9B
MiIsCisgICAgICAgICJHTF9GTE9BVCI6ICJHTF9SR0JBMzJGIiwKKyAgICAgICAgIkdMX0hBTEZf
RkxPQVQiOiAiR0xfUkdCQTE2RiIsCisgICAgICAgICJHTF9IQUxGX0ZMT0FUX09FUyI6ICJHTF9S
R0JBMTZGIgorICAgIH0sCisgICAgIkdMX1JHQkFfSU5URUdFUiI6IHsKKyAgICAgICAgIkdMX1VO
U0lHTkVEX0JZVEUiOiAiR0xfUkdCQThVSSIsCisgICAgICAgICJHTF9CWVRFIjogIkdMX1JHQkE4
SSIsCisgICAgICAgICJHTF9VTlNJR05FRF9TSE9SVCI6ICJHTF9SR0JBMTZVSSIsCisgICAgICAg
ICJHTF9TSE9SVCI6ICJHTF9SR0JBMTZJIiwKKyAgICAgICAgIkdMX1VOU0lHTkVEX0lOVCI6ICJH
TF9SR0JBMzJVSSIsCisgICAgICAgICJHTF9JTlQiOiAiR0xfUkdCQTMySSIsCisgICAgICAgICJH
TF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYiOiAiR0xfUkdCMTBfQTJVSSIKKyAgICB9LAor
ICAgICJHTF9SR0IiOiB7CisgICAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkdMX1JHQjgiLAor
ICAgICAgICAiR0xfVU5TSUdORURfU0hPUlQiOiAiR0xfUkdCMTZfRVhUIiwKKyAgICAgICAgIkdM
X0JZVEUiOiAiR0xfUkdCOF9TTk9STSIsCisgICAgICAgICJHTF9TSE9SVCI6ICJHTF9SR0IxNl9T
Tk9STV9FWFQiLAorICAgICAgICAiR0xfVU5TSUdORURfU0hPUlRfNV82XzUiOiAiR0xfUkdCNTY1
IiwKKyAgICAgICAgIkdMX1VOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYiOiAiR0xfUjExRl9H
MTFGX0IxMEYiLAorICAgICAgICAiR0xfVU5TSUdORURfSU5UXzVfOV85XzlfUkVWIjogIkdMX1JH
QjlfRTUiLAorICAgICAgICAiR0xfRkxPQVQiOiAiR0xfUkdCMzJGIiwKKyAgICAgICAgIkdMX0hB
TEZfRkxPQVQiOiAiR0xfUkdCMTZGIiwKKyAgICAgICAgIkdMX0hBTEZfRkxPQVRfT0VTIjogIkdM
X1JHQjE2RiIKKyAgICB9LAorICAgICJHTF9SR0JfSU5URUdFUiI6IHsKKyAgICAgICAgIkdMX1VO
U0lHTkVEX0JZVEUiOiAiR0xfUkdCOFVJIiwKKyAgICAgICAgIkdMX0JZVEUiOiAiR0xfUkdCOEki
LCAiR0xfVU5TSUdORURfU0hPUlQiOiAiR0xfUkdCMTZVSSIsCisgICAgICAgICJHTF9TSE9SVCI6
ICJHTF9SR0IxNkkiLAorICAgICAgICAiR0xfVU5TSUdORURfSU5UIjogIkdMX1JHQjMyVUkiLAor
ICAgICAgICAiR0xfSU5UIjogIkdMX1JHQjMySSIKKyAgICB9LAorICAgICJHTF9SRyI6IHsKKyAg
ICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiR0xfUkc4IiwKKyAgICAgICAgIkdMX1VOU0lHTkVE
X1NIT1JUIjogIkdMX1JHMTZfRVhUIiwKKyAgICAgICAgIkdMX0JZVEUiOiAiR0xfUkc4X1NOT1JN
IiwKKyAgICAgICAgIkdMX1NIT1JUIjogIkdMX1JHMTZfU05PUk1fRVhUIiwKKyAgICAgICAgIkdM
X0ZMT0FUIjogIkdMX1JHMzJGIiwKKyAgICAgICAgIkdMX0hBTEZfRkxPQVQiOiAiR0xfUkcxNkYi
LAorICAgICAgICAiR0xfSEFMRl9GTE9BVF9PRVMiOiAiR0xfUkcxNkYiCisgICAgfSwKKyAgICAi
R0xfUkdfSU5URUdFUiI6IHsKKyAgICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiR0xfUkc4VUki
LAorICAgICAgICAiR0xfQllURSI6ICJHTF9SRzhJIiwKKyAgICAgICAgIkdMX1VOU0lHTkVEX1NI
T1JUIjogIkdMX1JHMTZVSSIsCisgICAgICAgICJHTF9TSE9SVCI6ICJHTF9SRzE2SSIsCisgICAg
ICAgICJHTF9VTlNJR05FRF9JTlQiOiAiR0xfUkczMlVJIiwKKyAgICAgICAgIkdMX0lOVCI6ICJH
TF9SRzMySSIKKyAgICB9LAorICAgICJHTF9SRUQiOiB7CisgICAgICAgICJHTF9VTlNJR05FRF9C
WVRFIjogIkdMX1I4IiwKKyAgICAgICAgIkdMX1VOU0lHTkVEX1NIT1JUIjogIkdMX1IxNl9FWFQi
LAorICAgICAgICAiR0xfQllURSI6ICJHTF9SOF9TTk9STSIsCisgICAgICAgICJHTF9TSE9SVCI6
ICJHTF9SMTZfU05PUk1fRVhUIiwKKyAgICAgICAgIkdMX0ZMT0FUIjogIkdMX1IzMkYiLAorICAg
ICAgICAiR0xfSEFMRl9GTE9BVCI6ICJHTF9SMTZGIiwKKyAgICAgICAgIkdMX0hBTEZfRkxPQVRf
T0VTIjogIkdMX1IxNkYiCisgICAgfSwKKyAgICAiR0xfUkVEX0lOVEVHRVIiOiB7CisgICAgICAg
ICJHTF9VTlNJR05FRF9CWVRFIjogIkdMX1I4VUkiLAorICAgICAgICAiR0xfQllURSI6ICJHTF9S
OEkiLAorICAgICAgICAiR0xfVU5TSUdORURfU0hPUlQiOiAiR0xfUjE2VUkiLAorICAgICAgICAi
R0xfU0hPUlQiOiAiR0xfUjE2SSIsCisgICAgICAgICJHTF9VTlNJR05FRF9JTlQiOiAiR0xfUjMy
VUkiLAorICAgICAgICAiR0xfSU5UIjogIkdMX1IzMkkiCisgICAgfSwKKyAgICAiR0xfTFVNSU5B
TkNFX0FMUEhBIjogeworICAgICAgICAiR0xfVU5TSUdORURfQllURSI6ICJHTF9MVU1JTkFOQ0U4
X0FMUEhBOF9FWFQiLAorICAgICAgICAiR0xfRkxPQVQiOiAiR0xfTFVNSU5BTkNFX0FMUEhBMzJG
X0VYVCIsCisgICAgICAgICJHTF9IQUxGX0ZMT0FUIjogIkdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9F
WFQiLAorICAgICAgICAiR0xfSEFMRl9GTE9BVF9PRVMiOiAiR0xfTFVNSU5BTkNFX0FMUEhBMTZG
X0VYVCIKKyAgICB9LAorICAgICJHTF9MVU1JTkFOQ0UiOiB7CisgICAgICAgICJHTF9VTlNJR05F
RF9CWVRFIjogIkdMX0xVTUlOQU5DRThfRVhUIiwKKyAgICAgICAgIkdMX0ZMT0FUIjogIkdMX0xV
TUlOQU5DRTMyRl9FWFQiLAorICAgICAgICAiR0xfSEFMRl9GTE9BVCI6ICJHTF9MVU1JTkFOQ0Ux
NkZfRVhUIiwKKyAgICAgICAgIkdMX0hBTEZfRkxPQVRfT0VTIjogIkdMX0xVTUlOQU5DRTE2Rl9F
WFQiCisgICAgfSwKKyAgICAiR0xfQUxQSEEiOiB7CisgICAgICAgICJHTF9VTlNJR05FRF9CWVRF
IjogIkdMX0FMUEhBOF9FWFQiLAorICAgICAgICAiR0xfRkxPQVQiOiAiR0xfQUxQSEEzMkZfRVhU
IiwKKyAgICAgICAgIkdMX0hBTEZfRkxPQVQiOiAiR0xfQUxQSEExNkZfRVhUIiwKKyAgICAgICAg
IkdMX0hBTEZfRkxPQVRfT0VTIjogIkdMX0FMUEhBMTZGX0VYVCIKKyAgICB9LAorICAgICJHTF9C
R1JBX0VYVCI6IHsKKyAgICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiR0xfQkdSQThfRVhUIiwK
KyAgICAgICAgIkdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzRfUkVWX0VYVCI6ICJHTF9CR1JBNF9B
TkdMRVgiLAorICAgICAgICAiR0xfVU5TSUdORURfU0hPUlRfMV81XzVfNV9SRVZfRVhUIjogIkdM
X0JHUjVfQTFfQU5HTEVYIiwKKyAgICAgICAgIkdMX1VOU0lHTkVEX1NIT1JUXzVfNl81IjogIkdM
X0JHUjU2NV9BTkdMRVgiCisgICAgfSwKKyAgICAiR0xfU1JHQl9FWFQiOiB7CisgICAgICAgICJH
TF9VTlNJR05FRF9CWVRFIjogIkdMX1NSR0I4IgorICAgIH0sCisgICAgIkdMX1NSR0JfQUxQSEFf
RVhUIjogeworICAgICAgICAiR0xfVU5TSUdORURfQllURSI6ICJHTF9TUkdCOF9BTFBIQTgiCisg
ICAgfSwKKyAgICAiR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCI6IHsKKyAgICAgICAg
IkdMX1VOU0lHTkVEX0JZVEUiOiAiR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCIKKyAg
ICB9LAorICAgICJHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCI6IHsKKyAgICAgICAg
IkdMX1VOU0lHTkVEX0JZVEUiOiAiR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQiCisg
ICAgfSwKKyAgICAiR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRSI6IHsKKyAgICAg
ICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdM
RSIKKyAgICB9LAorICAgICJHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFIjogewor
ICAgICAgICAiR0xfVU5TSUdORURfQllURSI6ICJHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1
X0FOR0xFIgorICAgIH0sCisgICAgIkdMX0RFUFRIX0NPTVBPTkVOVCI6IHsKKyAgICAgICAgIkdM
X1VOU0lHTkVEX1NIT1JUIjogIkdMX0RFUFRIX0NPTVBPTkVOVDE2IiwKKyAgICAgICAgIkdMX1VO
U0lHTkVEX0lOVCI6ICJHTF9ERVBUSF9DT01QT05FTlQzMl9PRVMiLAorICAgICAgICAiR0xfRkxP
QVQiOiAiR0xfREVQVEhfQ09NUE9ORU5UMzJGIgorICAgIH0sCisgICAgIkdMX1NURU5DSUwiOiB7
CisgICAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkdMX1NURU5DSUxfSU5ERVg4IgorICAgIH0s
CisgICAgIkdMX0RFUFRIX1NURU5DSUwiOiB7CisgICAgICAgICJHTF9VTlNJR05FRF9JTlRfMjRf
OCI6ICJHTF9ERVBUSDI0X1NURU5DSUw4IiwKKyAgICAgICAgIkdMX0ZMT0FUXzMyX1VOU0lHTkVE
X0lOVF8yNF84X1JFViI6ICJHTF9ERVBUSDMyRl9TVEVOQ0lMOCIKKyAgICB9Cit9CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZm9ybWF0dXRpbHMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mb3JtYXR1dGls
cy5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9mb3JtYXR1dGlscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDkgQEAK
ICNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0Nv
bnRleHQuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlci5oIgotI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL1JlbmRlcmVyLmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKwog
bmFtZXNwYWNlIGdsCiB7CiAKQEAgLTE4LDExNiArMTksMjggQEAKIC8vIEVTMiByZXF1aXJlcyB0
aGF0IGZvcm1hdCBpcyBlcXVhbCB0byBpbnRlcm5hbCBmb3JtYXQgYXQgYWxsIGdsVGV4KkltYWdl
MkQgZW50cnkgcG9pbnRzIGFuZCB0aGUgaW1wbGVtZW50YXRpb24KIC8vIGNhbiBkZWNpZGUgdGhl
IHRydWUsIHNpemVkLCBpbnRlcm5hbCBmb3JtYXQuIFRoZSBFUzJGb3JtYXRNYXAgZGV0ZXJtaW5l
cyB0aGUgaW50ZXJuYWwgZm9ybWF0IGZvciBhbGwgdmFsaWQKIC8vIGZvcm1hdCBhbmQgdHlwZSBj
b21iaW5hdGlvbnMuCitHTGVudW0gR2V0U2l6ZWRGb3JtYXRJbnRlcm5hbChHTGVudW0gZm9ybWF0
LCBHTGVudW0gdHlwZSk7CiAKLXR5cGVkZWYgc3RkOjpwYWlyPEdMZW51bSwgR0xlbnVtPiBGb3Jt
YXRUeXBlUGFpcjsKLXR5cGVkZWYgc3RkOjpwYWlyPEZvcm1hdFR5cGVQYWlyLCBHTGVudW0+IEZv
cm1hdFBhaXI7Ci10eXBlZGVmIHN0ZDo6bWFwPEZvcm1hdFR5cGVQYWlyLCBHTGVudW0+IEZvcm1h
dE1hcDsKK25hbWVzcGFjZQorewordHlwZWRlZiBzdGQ6OnBhaXI8R0xlbnVtLCBJbnRlcm5hbEZv
cm1hdD4gSW50ZXJuYWxGb3JtYXRJbmZvUGFpcjsKK3R5cGVkZWYgc3RkOjptYXA8R0xlbnVtLCBJ
bnRlcm5hbEZvcm1hdD4gSW50ZXJuYWxGb3JtYXRJbmZvTWFwOwogCi0vLyBBIGhlbHBlciBmdW5j
dGlvbiB0byBpbnNlcnQgZGF0YSBpbnRvIHRoZSBmb3JtYXQgbWFwIHdpdGggZmV3ZXIgY2hhcmFj
dGVycy4KLXN0YXRpYyBpbmxpbmUgdm9pZCBJbnNlcnRGb3JtYXRNYXBwaW5nKEZvcm1hdE1hcCAq
bWFwLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xlbnVtIGludGVybmFsRm9ybWF0KQor
fSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCitGb3JtYXRUeXBlOjpGb3JtYXRUeXBlKCkgOiBm
b3JtYXQoR0xfTk9ORSksIHR5cGUoR0xfTk9ORSkKIHsKLSAgICBtYXAtPmluc2VydChGb3JtYXRQ
YWlyKEZvcm1hdFR5cGVQYWlyKGZvcm1hdCwgdHlwZSksIGludGVybmFsRm9ybWF0KSk7CiB9CiAK
LUZvcm1hdE1hcCYgQnVpbGRGb3JtYXRNYXAoKQorRm9ybWF0VHlwZTo6Rm9ybWF0VHlwZShHTGVu
dW0gZm9ybWF0XywgR0xlbnVtIHR5cGVfKSA6IGZvcm1hdChmb3JtYXRfKSwgdHlwZSh0eXBlXykK
IHsKLSAgICBhdXRvJiBtYXAgPSAqbmV3IEZvcm1hdE1hcDsKK30KIAotICAgIC8vICAgICAgICAg
ICAgICAgICAgICAgICB8IEZvcm1hdCAgICAgICAgICAgICAgIHwgVHlwZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCBJbnRlcm5hbCBmb3JtYXQgICAgICAgICAgfAotICAgIEluc2VydEZv
cm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCQSwgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRF
LCAgICAgICAgICAgICAgICAgIEdMX1JHQkE4KTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZt
YXAsIEdMX1JHQkEsICAgICAgICAgICAgICAgR0xfQllURSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9SR0JBOF9TTk9STSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9S
R0JBLCAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQsICAgICAgICAgR0xf
UkdCQTQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCQSwgICAgICAgICAg
ICAgICBHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xLCAgICAgICAgIEdMX1JHQjVfQTEpOwotICAg
IEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCQSwgICAgICAgICAgICAgICBHTF9VTlNJ
R05FRF9JTlRfMl8xMF8xMF8xMF9SRVYsICAgIEdMX1JHQjEwX0EyKTsKLSAgICBJbnNlcnRGb3Jt
YXRNYXBwaW5nKCZtYXAsIEdMX1JHQkEsICAgICAgICAgICAgICAgR0xfRkxPQVQsICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9SR0JBMzJGKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZt
YXAsIEdMX1JHQkEsICAgICAgICAgICAgICAgR0xfSEFMRl9GTE9BVCwgICAgICAgICAgICAgICAg
ICAgICBHTF9SR0JBMTZGKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQkEs
ICAgICAgICAgICAgICAgR0xfSEFMRl9GTE9BVF9PRVMsICAgICAgICAgICAgICAgICBHTF9SR0JB
MTZGKTsKLQotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCQV9JTlRFR0VSLCAg
ICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICAgIEdMX1JHQkE4VUkpOwotICAg
IEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCQV9JTlRFR0VSLCAgICAgICBHTF9CWVRF
LCAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4SSk7Ci0gICAgSW5zZXJ0Rm9ybWF0
TWFwcGluZygmbWFwLCBHTF9SR0JBX0lOVEVHRVIsICAgICAgIEdMX1VOU0lHTkVEX1NIT1JULCAg
ICAgICAgICAgICAgICAgR0xfUkdCQTE2VUkpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1h
cCwgR0xfUkdCQV9JTlRFR0VSLCAgICAgICBHTF9TSE9SVCwgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1JHQkExNkkpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCQV9J
TlRFR0VSLCAgICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICAgICAgICAgICAgIEdMX1JHQkEz
MlVJKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQkFfSU5URUdFUiwgICAg
ICAgR0xfSU5ULCAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJJKTsKLSAgICBJ
bnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQkFfSU5URUdFUiwgICAgICAgR0xfVU5TSUdO
RURfSU5UXzJfMTBfMTBfMTBfUkVWLCAgICBHTF9SR0IxMF9BMlVJKTsKLQotICAgIEluc2VydEZv
cm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCLCAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRF
LCAgICAgICAgICAgICAgICAgIEdMX1JHQjgpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1h
cCwgR0xfUkdCLCAgICAgICAgICAgICAgICBHTF9CWVRFLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1JHQjhfU05PUk0pOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdC
LCAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9TSE9SVF81XzZfNSwgICAgICAgICAgIEdMX1JH
QjU2NSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0IsICAgICAgICAgICAg
ICAgIEdMX1VOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYsICAgR0xfUjExRl9HMTFGX0IxMEYp
OwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCLCAgICAgICAgICAgICAgICBH
TF9VTlNJR05FRF9JTlRfNV85XzlfOV9SRVYsICAgICAgIEdMX1JHQjlfRTUpOwotICAgIEluc2Vy
dEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCLCAgICAgICAgICAgICAgICBHTF9GTE9BVCwgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQjMyRik7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGlu
ZygmbWFwLCBHTF9SR0IsICAgICAgICAgICAgICAgIEdMX0hBTEZfRkxPQVQsICAgICAgICAgICAg
ICAgICAgICAgR0xfUkdCMTZGKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JH
QiwgICAgICAgICAgICAgICAgR0xfSEFMRl9GTE9BVF9PRVMsICAgICAgICAgICAgICAgICBHTF9S
R0IxNkYpOwotCi0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0JfSU5URUdFUiwg
ICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgICAgR0xfUkdCOFVJKTsKLSAg
ICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQl9JTlRFR0VSLCAgICAgICAgR0xfQllU
RSwgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0I4SSk7Ci0gICAgSW5zZXJ0Rm9ybWF0
TWFwcGluZygmbWFwLCBHTF9SR0JfSU5URUdFUiwgICAgICAgIEdMX1VOU0lHTkVEX1NIT1JULCAg
ICAgICAgICAgICAgICAgR0xfUkdCMTZVSSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFw
LCBHTF9SR0JfSU5URUdFUiwgICAgICAgIEdMX1NIT1JULCAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfUkdCMTZJKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQl9JTlRF
R0VSLCAgICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgICAgICAgICAgICBHTF9SR0IzMlVJ
KTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQl9JTlRFR0VSLCAgICAgICAg
R0xfSU5ULCAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0IzMkkpOwotCi0gICAgSW5z
ZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SRywgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVE
X0JZVEUsICAgICAgICAgICAgICAgICAgR0xfUkc4KTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5n
KCZtYXAsIEdMX1JHLCAgICAgICAgICAgICAgICAgR0xfQllURSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9SRzhfU05PUk0pOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xf
UkcsICAgICAgICAgICAgICAgICBHTF9GTE9BVCwgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X1JHMzJGKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHLCAgICAgICAgICAg
ICAgICAgR0xfSEFMRl9GTE9BVCwgICAgICAgICAgICAgICAgICAgICBHTF9SRzE2Rik7Ci0gICAg
SW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SRywgICAgICAgICAgICAgICAgIEdMX0hBTEZf
RkxPQVRfT0VTLCAgICAgICAgICAgICAgICAgR0xfUkcxNkYpOwotCi0gICAgSW5zZXJ0Rm9ybWF0
TWFwcGluZygmbWFwLCBHTF9SR19JTlRFR0VSLCAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAg
ICAgICAgICAgICAgICAgR0xfUkc4VUkpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwg
R0xfUkdfSU5URUdFUiwgICAgICAgICBHTF9CWVRFLCAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1JHOEkpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdfSU5URUdFUiwg
ICAgICAgICBHTF9VTlNJR05FRF9TSE9SVCwgICAgICAgICAgICAgICAgIEdMX1JHMTZVSSk7Ci0g
ICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR19JTlRFR0VSLCAgICAgICAgIEdMX1NI
T1JULCAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkcxNkkpOwotICAgIEluc2VydEZvcm1h
dE1hcHBpbmcoJm1hcCwgR0xfUkdfSU5URUdFUiwgICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAg
ICAgICAgICAgICAgICAgIEdMX1JHMzJVSSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFw
LCBHTF9SR19JTlRFR0VSLCAgICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfUkczMkkpOwotCi0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SRUQsICAg
ICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgICAgR0xfUjgpOwot
ICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkVELCAgICAgICAgICAgICAgICBHTF9C
WVRFLCAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1I4X1NOT1JNKTsKLSAgICBJbnNlcnRG
b3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JFRCwgICAgICAgICAgICAgICAgR0xfRkxPQVQsICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9SMzJGKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZt
YXAsIEdMX1JFRCwgICAgICAgICAgICAgICAgR0xfSEFMRl9GTE9BVCwgICAgICAgICAgICAgICAg
ICAgICBHTF9SMTZGKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JFRCwgICAg
ICAgICAgICAgICAgR0xfSEFMRl9GTE9BVF9PRVMsICAgICAgICAgICAgICAgICBHTF9SMTZGKTsK
LQotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkVEX0lOVEVHRVIsICAgICAgICBH
TF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICAgIEdMX1I4VUkpOwotICAgIEluc2VydEZv
cm1hdE1hcHBpbmcoJm1hcCwgR0xfUkVEX0lOVEVHRVIsICAgICAgICBHTF9CWVRFLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1I4SSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFw
LCBHTF9SRURfSU5URUdFUiwgICAgICAgIEdMX1VOU0lHTkVEX1NIT1JULCAgICAgICAgICAgICAg
ICAgR0xfUjE2VUkpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkVEX0lOVEVH
RVIsICAgICAgICBHTF9TSE9SVCwgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1IxNkkpOwot
ICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkVEX0lOVEVHRVIsICAgICAgICBHTF9V
TlNJR05FRF9JTlQsICAgICAgICAgICAgICAgICAgIEdMX1IzMlVJKTsKLSAgICBJbnNlcnRGb3Jt
YXRNYXBwaW5nKCZtYXAsIEdMX1JFRF9JTlRFR0VSLCAgICAgICAgR0xfSU5ULCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9SMzJJKTsKLQotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1h
cCwgR0xfTFVNSU5BTkNFX0FMUEhBLCAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAg
ICAgIEdMX0xVTUlOQU5DRThfQUxQSEE4X0VYVCk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygm
bWFwLCBHTF9MVU1JTkFOQ0UsICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAg
ICAgICAgR0xfTFVNSU5BTkNFOF9FWFQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwg
R0xfQUxQSEEsICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICAg
IEdMX0FMUEhBOF9FWFQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfTFVNSU5B
TkNFX0FMUEhBLCAgICBHTF9GTE9BVCwgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0xVTUlO
QU5DRV9BTFBIQTMyRl9FWFQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfTFVN
SU5BTkNFLCAgICAgICAgICBHTF9GTE9BVCwgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0xV
TUlOQU5DRTMyRl9FWFQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQUxQSEEs
ICAgICAgICAgICAgICBHTF9GTE9BVCwgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0FMUEhB
MzJGX0VYVCk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9MVU1JTkFOQ0VfQUxQ
SEEsICAgIEdMX0hBTEZfRkxPQVQsICAgICAgICAgICAgICAgICAgICAgR0xfTFVNSU5BTkNFX0FM
UEhBMTZGX0VYVCk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9MVU1JTkFOQ0Vf
QUxQSEEsICAgIEdMX0hBTEZfRkxPQVRfT0VTLCAgICAgICAgICAgICAgICAgR0xfTFVNSU5BTkNF
X0FMUEhBMTZGX0VYVCk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9MVU1JTkFO
Q0UsICAgICAgICAgIEdMX0hBTEZfRkxPQVQsICAgICAgICAgICAgICAgICAgICAgR0xfTFVNSU5B
TkNFMTZGX0VYVCk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9MVU1JTkFOQ0Us
ICAgICAgICAgIEdMX0hBTEZfRkxPQVRfT0VTLCAgICAgICAgICAgICAgICAgR0xfTFVNSU5BTkNF
MTZGX0VYVCk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9BTFBIQSwgICAgICAg
ICAgICAgIEdMX0hBTEZfRkxPQVQsICAgICAgICAgICAgICAgICAgICAgR0xfQUxQSEExNkZfRVhU
KTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0FMUEhBLCAgICAgICAgICAgICAg
R0xfSEFMRl9GTE9BVF9PRVMsICAgICAgICAgICAgICAgICBHTF9BTFBIQTE2Rl9FWFQpOwotCi0g
ICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9CR1JBX0VYVCwgICAgICAgICAgIEdMX1VO
U0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgICAgR0xfQkdSQThfRVhUKTsKLSAgICBJbnNlcnRG
b3JtYXRNYXBwaW5nKCZtYXAsIEdMX0JHUkFfRVhULCAgICAgICAgICAgR0xfVU5TSUdORURfU0hP
UlRfNF80XzRfNF9SRVZfRVhULCBHTF9CR1JBNF9BTkdMRVgpOwotICAgIEluc2VydEZvcm1hdE1h
cHBpbmcoJm1hcCwgR0xfQkdSQV9FWFQsICAgICAgICAgICBHTF9VTlNJR05FRF9TSE9SVF8xXzVf
NV81X1JFVl9FWFQsIEdMX0JHUjVfQTFfQU5HTEVYKTsKLQotICAgIEluc2VydEZvcm1hdE1hcHBp
bmcoJm1hcCwgR0xfU1JHQl9FWFQsICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAg
ICAgICAgICAgIEdMX1NSR0I4KTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1NS
R0JfQUxQSEFfRVhULCAgICAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAgICBHTF9T
UkdCOF9BTFBIQTgpOwotCi0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVT
U0VEX1JHQl9TM1RDX0RYVDFfRVhULCAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgR0xfQ09NUFJF
U1NFRF9SR0JfUzNUQ19EWFQxX0VYVCk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBH
TF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgICBHTF9VTlNJR05FRF9CWVRFLCAgICAg
R0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQpOwotICAgIEluc2VydEZvcm1hdE1hcHBp
bmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRSwgR0xfVU5TSUdORURf
QllURSwgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEUpOwotICAgIEluc2Vy
dEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRSwg
R0xfVU5TSUdORURfQllURSwgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEUp
OwotCi0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9ERVBUSF9DT01QT05FTlQsICAg
IEdMX1VOU0lHTkVEX1NIT1JULCAgICAgICAgICAgICAgICAgR0xfREVQVEhfQ09NUE9ORU5UMTYp
OwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfREVQVEhfQ09NUE9ORU5ULCAgICBH
TF9VTlNJR05FRF9JTlQsICAgICAgICAgICAgICAgICAgIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09F
Uyk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9ERVBUSF9DT01QT05FTlQsICAg
IEdMX0ZMT0FULCAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfREVQVEhfQ09NUE9ORU5UMzJG
KTsKLQotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfU1RFTkNJTCwgICAgICAgICAg
ICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICAgIEdMX1NURU5DSUxfSU5ERVg4KTsK
LQotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfREVQVEhfU1RFTkNJTCwgICAgICBH
TF9VTlNJR05FRF9JTlRfMjRfOCwgICAgICAgICAgICAgIEdMX0RFUFRIMjRfU1RFTkNJTDgpOwot
ICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfREVQVEhfU1RFTkNJTCwgICAgICBHTF9G
TE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVYsIEdMX0RFUFRIMzJGX1NURU5DSUw4KTsKLQot
ICAgIHJldHVybiBtYXA7Citib29sIEZvcm1hdFR5cGU6Om9wZXJhdG9yPChjb25zdCBGb3JtYXRU
eXBlICZvdGhlcikgY29uc3QKK3sKKyAgICBpZiAoZm9ybWF0ICE9IG90aGVyLmZvcm1hdCkKKyAg
ICAgICAgcmV0dXJuIGZvcm1hdCA8IG90aGVyLmZvcm1hdDsKKyAgICByZXR1cm4gdHlwZSA8IG90
aGVyLnR5cGU7CiB9CiAKIFR5cGU6OlR5cGUoKQpAQCAtMjY4LDcgKzE4MSw4IEBACiB9CiAKIElu
dGVybmFsRm9ybWF0OjpJbnRlcm5hbEZvcm1hdCgpCi0gICAgOiByZWRCaXRzKDApLAorICAgIDog
aW50ZXJuYWxGb3JtYXQoR0xfTk9ORSksCisgICAgICByZWRCaXRzKDApLAogICAgICAgZ3JlZW5C
aXRzKDApLAogICAgICAgYmx1ZUJpdHMoMCksCiAgICAgICBsdW1pbmFuY2VCaXRzKDApLApAQCAt
MjkxLDI1ICsyMDUsMTI2IEBACiB7CiB9CiAKLXN0YXRpYyBJbnRlcm5hbEZvcm1hdCBVbnNpemVk
Rm9ybWF0KEdMZW51bSBmb3JtYXQsIEludGVybmFsRm9ybWF0OjpTdXBwb3J0Q2hlY2tGdW5jdGlv
biB0ZXh0dXJlU3VwcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElu
dGVybmFsRm9ybWF0OjpTdXBwb3J0Q2hlY2tGdW5jdGlvbiByZW5kZXJTdXBwb3J0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJuYWxGb3JtYXQ6OlN1cHBvcnRDaGVj
a0Z1bmN0aW9uIGZpbHRlclN1cHBvcnQpCitib29sIEludGVybmFsRm9ybWF0Ojppc0xVTUEoKSBj
b25zdAogeworICAgIHJldHVybiAoKHJlZEJpdHMgKyBncmVlbkJpdHMgKyBibHVlQml0cyArIGRl
cHRoQml0cyArIHN0ZW5jaWxCaXRzKSA9PSAwICYmCisgICAgICAgICAgICAobHVtaW5hbmNlQml0
cyArIGFscGhhQml0cykgPiAwKTsKK30KKworR0xlbnVtIEludGVybmFsRm9ybWF0OjpnZXRSZWFk
UGl4ZWxzRm9ybWF0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZm9ybWF0OworfQorCitHTGVudW0g
SW50ZXJuYWxGb3JtYXQ6OmdldFJlYWRQaXhlbHNUeXBlKCkgY29uc3QKK3sKKyAgICBzd2l0Y2gg
KHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVQ6CisgICAgICAgICAgICAv
LyBUaGUgaW50ZXJuYWwgZm9ybWF0IG1heSBoYXZlIGEgdHlwZSBvZiBHTF9IQUxGX0ZMT0FUIGJ1
dCB3aGVuIGV4cG9zaW5nIHRoaXMgdHlwZSBhcworICAgICAgICAgICAgLy8gdGhlIElNUExFTUVO
VEFUSU9OX1JFQURfVFlQRSwgb25seSBIQUxGX0ZMT0FUX09FUyBpcyBhbGxvd2VkIGJ5CisgICAg
ICAgICAgICAvLyBPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0CisgICAgICAgICAgICByZXR1cm4gR0xf
SEFMRl9GTE9BVF9PRVM7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiB0
eXBlOworICAgIH0KK30KKworRm9ybWF0OjpGb3JtYXQoR0xlbnVtIGludGVybmFsRm9ybWF0KSA6
IEZvcm1hdChHZXRJbnRlcm5hbEZvcm1hdEluZm8oaW50ZXJuYWxGb3JtYXQpKQoreworfQorCitG
b3JtYXQ6OkZvcm1hdChjb25zdCBJbnRlcm5hbEZvcm1hdCAmaW50ZXJuYWxGb3JtYXQpCisgICAg
OiBpbmZvKCZpbnRlcm5hbEZvcm1hdCksIGZvcm1hdChpbmZvLT5mb3JtYXQpLCB0eXBlKGluZm8t
PnR5cGUpLCBzaXplZCh0cnVlKQoreworICAgIEFTU0VSVCgoaW5mby0+cGl4ZWxCeXRlcyA+IDAg
JiYgZm9ybWF0ICE9IEdMX05PTkUgJiYgdHlwZSAhPSBHTF9OT05FKSB8fAorICAgICAgICAgICBp
bnRlcm5hbEZvcm1hdC5mb3JtYXQgPT0gR0xfTk9ORSk7Cit9CisKK0Zvcm1hdDo6Rm9ybWF0KEdM
ZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUpCisgICAgOiBp
bmZvKG51bGxwdHIpLCBmb3JtYXQoZm9ybWF0KSwgdHlwZSh0eXBlKSwgc2l6ZWQoZmFsc2UpCit7
CisgICAgY29uc3QgYXV0byAmcGxhaW5JbmZvID0gR2V0SW50ZXJuYWxGb3JtYXRJbmZvKGludGVy
bmFsRm9ybWF0KTsKKyAgICBzaXplZCAgICAgICAgICAgICAgICAgPSBwbGFpbkluZm8ucGl4ZWxC
eXRlcyA+IDA7CisgICAgaW5mbyA9IChzaXplZCA/ICZwbGFpbkluZm8gOiAmR2V0SW50ZXJuYWxG
b3JtYXRJbmZvKEdldFNpemVkRm9ybWF0SW50ZXJuYWwoZm9ybWF0LCB0eXBlKSkpOworICAgIEFT
U0VSVChmb3JtYXQgPT0gR0xfTk9ORSB8fCBpbmZvLT5waXhlbEJ5dGVzID4gMCk7Cit9CisKK0Zv
cm1hdDo6Rm9ybWF0KGNvbnN0IEZvcm1hdCAmb3RoZXIpID0gZGVmYXVsdDsKK0Zvcm1hdCAmRm9y
bWF0OjpvcGVyYXRvcj0oY29uc3QgRm9ybWF0ICZvdGhlcikgPSBkZWZhdWx0OworCitHTGVudW0g
Rm9ybWF0Ojphc1NpemVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2l6ZWQgPyBpbmZvLT5pbnRl
cm5hbEZvcm1hdCA6IEdldFNpemVkRm9ybWF0SW50ZXJuYWwoZm9ybWF0LCB0eXBlKTsKK30KKwor
Ym9vbCBGb3JtYXQ6OnZhbGlkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaW5mby0+Zm9ybWF0ICE9
IEdMX05PTkU7Cit9CisKKy8vIHN0YXRpYworYm9vbCBGb3JtYXQ6OlNhbWVTaXplZChjb25zdCBG
b3JtYXQgJmEsIGNvbnN0IEZvcm1hdCAmYikKK3sKKyAgICByZXR1cm4gKGEuaW5mbyA9PSBiLmlu
Zm8pOworfQorCisvLyBzdGF0aWMKK0Zvcm1hdCBGb3JtYXQ6OkludmFsaWQoKQoreworICAgIHN0
YXRpYyBGb3JtYXQgaW52YWxpZChHTF9OT05FLCBHTF9OT05FLCBHTF9OT05FKTsKKyAgICByZXR1
cm4gaW52YWxpZDsKK30KKworYm9vbCBJbnRlcm5hbEZvcm1hdDo6b3BlcmF0b3I9PShjb25zdCBJ
bnRlcm5hbEZvcm1hdCAmb3RoZXIpIGNvbnN0Cit7CisgICAgLy8gV2UgYXNzdW1lIHRoZXJlIGFy
ZSBubyBkdXBsaWNhdGVzLgorICAgIEFTU0VSVCgodGhpcyA9PSAmb3RoZXIpID09IChpbnRlcm5h
bEZvcm1hdCA9PSBvdGhlci5pbnRlcm5hbEZvcm1hdCkpOworICAgIHJldHVybiBpbnRlcm5hbEZv
cm1hdCA9PSBvdGhlci5pbnRlcm5hbEZvcm1hdDsKK30KKworYm9vbCBJbnRlcm5hbEZvcm1hdDo6
b3BlcmF0b3IhPShjb25zdCBJbnRlcm5hbEZvcm1hdCAmb3RoZXIpIGNvbnN0Cit7CisgICAgLy8g
V2UgYXNzdW1lIHRoZXJlIGFyZSBubyBkdXBsaWNhdGVzLgorICAgIEFTU0VSVCgodGhpcyAhPSAm
b3RoZXIpID09IChpbnRlcm5hbEZvcm1hdCAhPSBvdGhlci5pbnRlcm5hbEZvcm1hdCkpOworICAg
IHJldHVybiBpbnRlcm5hbEZvcm1hdCAhPSBvdGhlci5pbnRlcm5hbEZvcm1hdDsKK30KKworc3Rh
dGljIHZvaWQgQWRkVW5zaXplZEZvcm1hdChJbnRlcm5hbEZvcm1hdEluZm9NYXAgKm1hcCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJbnRlcm5hbEZvcm1hdDo6U3VwcG9ydENoZWNrRnVuY3Rpb24gdGV4dHVyZVN1
cHBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVybmFsRm9ybWF0OjpTdXBw
b3J0Q2hlY2tGdW5jdGlvbiByZW5kZXJTdXBwb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJbnRlcm5hbEZvcm1hdDo6U3VwcG9ydENoZWNrRnVuY3Rpb24gZmlsdGVyU3VwcG9ydCkK
K3sKICAgICBJbnRlcm5hbEZvcm1hdCBmb3JtYXRJbmZvOworICAgIGZvcm1hdEluZm8uaW50ZXJu
YWxGb3JtYXQgPSBpbnRlcm5hbEZvcm1hdDsKICAgICBmb3JtYXRJbmZvLmZvcm1hdCA9IGZvcm1h
dDsKICAgICBmb3JtYXRJbmZvLnRleHR1cmVTdXBwb3J0ID0gdGV4dHVyZVN1cHBvcnQ7CiAgICAg
Zm9ybWF0SW5mby5yZW5kZXJTdXBwb3J0ID0gcmVuZGVyU3VwcG9ydDsKICAgICBmb3JtYXRJbmZv
LmZpbHRlclN1cHBvcnQgPSBmaWx0ZXJTdXBwb3J0OwotICAgIHJldHVybiBmb3JtYXRJbmZvOwor
ICAgIEFTU0VSVChtYXAtPmNvdW50KGludGVybmFsRm9ybWF0KSA9PSAwKTsKKyAgICAoKm1hcClb
aW50ZXJuYWxGb3JtYXRdID0gZm9ybWF0SW5mbzsKIH0KIAotc3RhdGljIEludGVybmFsRm9ybWF0
IFJHQkFGb3JtYXQoR0x1aW50IHJlZCwgR0x1aW50IGdyZWVuLCBHTHVpbnQgYmx1ZSwgR0x1aW50
IGFscGhhLCBHTHVpbnQgc2hhcmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMZW51bSBjb21wb25lbnRUeXBlLCBib29sIHNy
Z2IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcm5hbEZvcm1hdDo6U3Vw
cG9ydENoZWNrRnVuY3Rpb24gdGV4dHVyZVN1cHBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJbnRlcm5hbEZvcm1hdDo6U3VwcG9ydENoZWNrRnVuY3Rpb24gcmVuZGVyU3Vw
cG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVybmFsRm9ybWF0OjpT
dXBwb3J0Q2hlY2tGdW5jdGlvbiBmaWx0ZXJTdXBwb3J0KQordm9pZCBBZGRSR0JBRm9ybWF0KElu
dGVybmFsRm9ybWF0SW5mb01hcCAqbWFwLAorICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRl
cm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICBHTHVpbnQgcmVkLAorICAgICAgICAgICAg
ICAgICAgIEdMdWludCBncmVlbiwKKyAgICAgICAgICAgICAgICAgICBHTHVpbnQgYmx1ZSwKKyAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgYWxwaGEsCisgICAgICAgICAgICAgICAgICAgR0x1aW50
IHNoYXJlZCwKKyAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb21wb25lbnRU
eXBlLAorICAgICAgICAgICAgICAgICAgIGJvb2wgc3JnYiwKKyAgICAgICAgICAgICAgICAgICBJ
bnRlcm5hbEZvcm1hdDo6U3VwcG9ydENoZWNrRnVuY3Rpb24gdGV4dHVyZVN1cHBvcnQsCisgICAg
ICAgICAgICAgICAgICAgSW50ZXJuYWxGb3JtYXQ6OlN1cHBvcnRDaGVja0Z1bmN0aW9uIHJlbmRl
clN1cHBvcnQsCisgICAgICAgICAgICAgICAgICAgSW50ZXJuYWxGb3JtYXQ6OlN1cHBvcnRDaGVj
a0Z1bmN0aW9uIGZpbHRlclN1cHBvcnQpCiB7CiAgICAgSW50ZXJuYWxGb3JtYXQgZm9ybWF0SW5m
bzsKKyAgICBmb3JtYXRJbmZvLmludGVybmFsRm9ybWF0ID0gaW50ZXJuYWxGb3JtYXQ7CiAgICAg
Zm9ybWF0SW5mby5yZWRCaXRzID0gcmVkOwogICAgIGZvcm1hdEluZm8uZ3JlZW5CaXRzID0gZ3Jl
ZW47CiAgICAgZm9ybWF0SW5mby5ibHVlQml0cyA9IGJsdWU7CkBAIC0zMjQsNyArMzM5LDggQEAK
ICAgICBmb3JtYXRJbmZvLnRleHR1cmVTdXBwb3J0ID0gdGV4dHVyZVN1cHBvcnQ7CiAgICAgZm9y
bWF0SW5mby5yZW5kZXJTdXBwb3J0ID0gcmVuZGVyU3VwcG9ydDsKICAgICBmb3JtYXRJbmZvLmZp
bHRlclN1cHBvcnQgPSBmaWx0ZXJTdXBwb3J0OwotICAgIHJldHVybiBmb3JtYXRJbmZvOworICAg
IEFTU0VSVChtYXAtPmNvdW50KGludGVybmFsRm9ybWF0KSA9PSAwKTsKKyAgICAoKm1hcClbaW50
ZXJuYWxGb3JtYXRdID0gZm9ybWF0SW5mbzsKIH0KIAogc3RhdGljIEludGVybmFsRm9ybWF0IExV
TUFGb3JtYXQoR0x1aW50IGx1bWluYW5jZSwgR0x1aW50IGFscGhhLCBHTGVudW0gZm9ybWF0LCBH
TGVudW0gdHlwZSwgR0xlbnVtIGNvbXBvbmVudFR5cGUsCkBAIC0zMzMsNiArMzQ5LDcgQEAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVybmFsRm9ybWF0OjpTdXBwb3J0Q2hl
Y2tGdW5jdGlvbiBmaWx0ZXJTdXBwb3J0KQogewogICAgIEludGVybmFsRm9ybWF0IGZvcm1hdElu
Zm87CisgICAgZm9ybWF0SW5mby5pbnRlcm5hbEZvcm1hdCA9IEdldFNpemVkRm9ybWF0SW50ZXJu
YWwoZm9ybWF0LCB0eXBlKTsKICAgICBmb3JtYXRJbmZvLmx1bWluYW5jZUJpdHMgPSBsdW1pbmFu
Y2U7CiAgICAgZm9ybWF0SW5mby5hbHBoYUJpdHMgPSBhbHBoYTsKICAgICBmb3JtYXRJbmZvLnBp
eGVsQnl0ZXMgPSAobHVtaW5hbmNlICsgYWxwaGEpIC8gODsKQEAgLTM0NywxMiArMzY0LDIwIEBA
CiAgICAgcmV0dXJuIGZvcm1hdEluZm87CiB9CiAKLXN0YXRpYyBJbnRlcm5hbEZvcm1hdCBEZXB0
aFN0ZW5jaWxGb3JtYXQoR0x1aW50IGRlcHRoQml0cywgR0x1aW50IHN0ZW5jaWxCaXRzLCBHTHVp
bnQgdW51c2VkQml0cywgR0xlbnVtIGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsIEdMZW51bSBjb21wb25lbnRUeXBlLCBJbnRlcm5h
bEZvcm1hdDo6U3VwcG9ydENoZWNrRnVuY3Rpb24gdGV4dHVyZVN1cHBvcnQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVybmFsRm9ybWF0OjpTdXBwb3J0Q2hl
Y2tGdW5jdGlvbiByZW5kZXJTdXBwb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJbnRlcm5hbEZvcm1hdDo6U3VwcG9ydENoZWNrRnVuY3Rpb24gZmlsdGVyU3Vw
cG9ydCkKK3ZvaWQgQWRkRGVwdGhTdGVuY2lsRm9ybWF0KEludGVybmFsRm9ybWF0SW5mb01hcCAq
bWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGRlcHRoQml0cywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBzdGVuY2lsQml0cywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCB1bnVzZWRCaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvbXBvbmVudFR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJbnRlcm5hbEZvcm1hdDo6U3VwcG9ydENoZWNrRnVuY3Rpb24gdGV4
dHVyZVN1cHBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcm5hbEZvcm1hdDo6
U3VwcG9ydENoZWNrRnVuY3Rpb24gcmVuZGVyU3VwcG9ydCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEludGVybmFsRm9ybWF0OjpTdXBwb3J0Q2hlY2tGdW5jdGlvbiBmaWx0ZXJTdXBwb3J0
KQogewogICAgIEludGVybmFsRm9ybWF0IGZvcm1hdEluZm87CisgICAgZm9ybWF0SW5mby5pbnRl
cm5hbEZvcm1hdCA9IGludGVybmFsRm9ybWF0OwogICAgIGZvcm1hdEluZm8uZGVwdGhCaXRzID0g
ZGVwdGhCaXRzOwogICAgIGZvcm1hdEluZm8uc3RlbmNpbEJpdHMgPSBzdGVuY2lsQml0czsKICAg
ICBmb3JtYXRJbmZvLnBpeGVsQnl0ZXMgPSAoZGVwdGhCaXRzICsgc3RlbmNpbEJpdHMgKyB1bnVz
ZWRCaXRzKSAvIDg7CkBAIC0zNjQsNyArMzg5LDggQEAKICAgICBmb3JtYXRJbmZvLnRleHR1cmVT
dXBwb3J0ID0gdGV4dHVyZVN1cHBvcnQ7CiAgICAgZm9ybWF0SW5mby5yZW5kZXJTdXBwb3J0ID0g
cmVuZGVyU3VwcG9ydDsKICAgICBmb3JtYXRJbmZvLmZpbHRlclN1cHBvcnQgPSBmaWx0ZXJTdXBw
b3J0OwotICAgIHJldHVybiBmb3JtYXRJbmZvOworICAgIEFTU0VSVChtYXAtPmNvdW50KGludGVy
bmFsRm9ybWF0KSA9PSAwKTsKKyAgICAoKm1hcClbaW50ZXJuYWxGb3JtYXRdID0gZm9ybWF0SW5m
bzsKIH0KIAogc3RhdGljIEludGVybmFsRm9ybWF0IENvbXByZXNzZWRGb3JtYXQoR0x1aW50IGNv
bXByZXNzZWRCbG9ja1dpZHRoLCBHTHVpbnQgY29tcHJlc3NlZEJsb2NrSGVpZ2h0LCBHTHVpbnQg
Y29tcHJlc3NlZEJsb2NrU2l6ZSwKQEAgLTM3NCw2ICs0MDAsNyBAQAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJuYWxGb3JtYXQ6OlN1cHBvcnRDaGVja0Z1bmN0
aW9uIGZpbHRlclN1cHBvcnQpCiB7CiAgICAgSW50ZXJuYWxGb3JtYXQgZm9ybWF0SW5mbzsKKyAg
ICBmb3JtYXRJbmZvLmludGVybmFsRm9ybWF0ICAgICAgICA9IGZvcm1hdDsKICAgICBmb3JtYXRJ
bmZvLmNvbXByZXNzZWRCbG9ja1dpZHRoID0gY29tcHJlc3NlZEJsb2NrV2lkdGg7CiAgICAgZm9y
bWF0SW5mby5jb21wcmVzc2VkQmxvY2tIZWlnaHQgPSBjb21wcmVzc2VkQmxvY2tIZWlnaHQ7CiAg
ICAgZm9ybWF0SW5mby5waXhlbEJ5dGVzID0gY29tcHJlc3NlZEJsb2NrU2l6ZSAvIDg7CkBAIC0z
ODksODQgKzQxNiw4NSBAQAogICAgIHJldHVybiBmb3JtYXRJbmZvOwogfQogCi10eXBlZGVmIHN0
ZDo6cGFpcjxHTGVudW0sIEludGVybmFsRm9ybWF0PiBJbnRlcm5hbEZvcm1hdEluZm9QYWlyOwot
dHlwZWRlZiBzdGQ6Om1hcDxHTGVudW0sIEludGVybmFsRm9ybWF0PiBJbnRlcm5hbEZvcm1hdElu
Zm9NYXA7Ci0KLXN0YXRpYyBJbnRlcm5hbEZvcm1hdEluZm9NYXAmIEJ1aWxkSW50ZXJuYWxGb3Jt
YXRJbmZvTWFwKCkKK3N0YXRpYyBJbnRlcm5hbEZvcm1hdEluZm9NYXAgQnVpbGRJbnRlcm5hbEZv
cm1hdEluZm9NYXAoKQogewotICAgIGF1dG8mIG1hcCA9ICpuZXcgSW50ZXJuYWxGb3JtYXRJbmZv
TWFwOworICAgIEludGVybmFsRm9ybWF0SW5mb01hcCBtYXA7CiAKLSAgICAvLyBjbGFuZy1mb3Jt
YXQgb2ZmCiAgICAgLy8gRnJvbSBFUyAzLjAuMSBzcGVjLCB0YWJsZSAzLjEyCi0gICAgbWFwLmlu
c2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX05PTkUsICAgICAgICAgICAgICBJbnRlcm5h
bEZvcm1hdCgpKSk7CisgICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX05P
TkUsIEludGVybmFsRm9ybWF0KCkpKTsKIAotICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgSW50ZXJuYWwgZm9ybWF0ICAgICB8ICAgICAgICAgIHwgUiB8IEcgfCBCIHwgQSB8
UyB8IEZvcm1hdCAgICAgICAgIHwgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29t
cG9uZW50IHR5cGUgICAgICAgIHwgU1JHQiB8IFRleHR1cmUgc3VwcG9ydGVkICAgICAgICAgICAg
ICAgICAgICAgICAgfCBSZW5kZXJhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
RmlsdGVyYWJsZSAgICB8Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdM
X1I4LCAgICAgICAgICAgICAgICBSR0JBRm9ybWF0KCA4LCAgMCwgIDAsICAwLCAwLCBHTF9SRUQs
ICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05P
Uk1BTElaRUQsIGZhbHNlLCBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6dGV4dHVyZVJH
PiwgUmVxdWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OnRleHR1cmVSRz4sIEFsd2F5c1N1cHBv
cnRlZCkpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfUjhfU05P
Uk0sICAgICAgICAgIFJHQkFGb3JtYXQoIDgsICAwLCAgMCwgIDAsIDAsIEdMX1JFRCwgICAgICAg
ICAgR0xfQllURSwgICAgICAgICAgICAgICAgICAgICAgICAgR0xfU0lHTkVEX05PUk1BTElaRUQs
ICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZl
clN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKSkp
OwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9SRzgsICAgICAgICAg
ICAgICAgUkdCQUZvcm1hdCggOCwgIDgsICAwLCAgMCwgMCwgR0xfUkcsICAgICAgICAgICBHTF9V
TlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBmYWxz
ZSwgUmVxdWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OnRleHR1cmVSRz4sIFJlcXVpcmVFU09y
RXh0PDMsICZFeHRlbnNpb25zOjp0ZXh0dXJlUkc+LCBBbHdheXNTdXBwb3J0ZWQpKSk7Ci0gICAg
bWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX1JHOF9TTk9STSwgICAgICAgICBS
R0JBRm9ybWF0KCA4LCAgOCwgIDAsICAwLCAwLCBHTF9SRywgICAgICAgICAgIEdMX0JZVEUsICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1NJR05FRF9OT1JNQUxJWkVELCAgIGZhbHNlLCBSZXF1
aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCkpKTsKLSAgICBtYXAuaW5z
ZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfUkdCOCwgICAgICAgICAgICAgIFJHQkFGb3Jt
YXQoIDgsICA4LCAgOCwgIDAsIDAsIEdMX1JHQiwgICAgICAgICAgR0xfVU5TSUdORURfQllURSwg
ICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgZmFsc2UsIFJlcXVpcmVFU09y
RXh0PDMsICZFeHRlbnNpb25zOjpyZ2I4cmdiYTg+LCBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5z
aW9uczo6cmdiOHJnYmE4PiwgQWx3YXlzU3VwcG9ydGVkKSkpOwotICAgIG1hcC5pbnNlcnQoSW50
ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9SR0I4X1NOT1JNLCAgICAgICAgUkdCQUZvcm1hdCggOCwg
IDgsICA4LCAgMCwgMCwgR0xfUkdCLCAgICAgICAgICBHTF9CWVRFLCAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9TSUdORURfTk9STUFMSVpFRCwgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQpKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZv
cm1hdEluZm9QYWlyKEdMX1JHQjU2NSwgICAgICAgICAgICBSR0JBRm9ybWF0KCA1LCAgNiwgIDUs
ICAwLCAwLCBHTF9SR0IsICAgICAgICAgIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81LCAgICAgICAg
IEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIGZhbHNlLCBSZXF1aXJlRVM8Mj4sICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDI+LCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFsd2F5c1N1cHBvcnRlZCkpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5m
b1BhaXIoR0xfUkdCQTQsICAgICAgICAgICAgIFJHQkFGb3JtYXQoIDQsICA0LCAgNCwgIDQsIDAs
IEdMX1JHQkEsICAgICAgICAgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNCwgICAgICAgR0xfVU5T
SUdORURfTk9STUFMSVpFRCwgZmFsc2UsIFJlcXVpcmVFUzwyPiwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSZXF1aXJlRVM8Mj4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3
YXlzU3VwcG9ydGVkKSkpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihH
TF9SR0I1X0ExLCAgICAgICAgICAgUkdCQUZvcm1hdCggNSwgIDUsICA1LCAgMSwgMCwgR0xfUkdC
QSwgICAgICAgICBHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xLCAgICAgICBHTF9VTlNJR05FRF9O
T1JNQUxJWkVELCBmYWxzZSwgUmVxdWlyZUVTPDI+LCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJlcXVpcmVFUzwyPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBw
b3J0ZWQpKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX1JHQkE4
LCAgICAgICAgICAgICBSR0JBRm9ybWF0KCA4LCAgOCwgIDgsICA4LCAwLCBHTF9SR0JBLCAgICAg
ICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTEla
RUQsIGZhbHNlLCBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6cmdiOHJnYmE4PiwgUmVx
dWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OnJnYjhyZ2JhOD4sIEFsd2F5c1N1cHBvcnRlZCkp
KTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfUkdCQThfU05PUk0s
ICAgICAgIFJHQkFGb3JtYXQoIDgsICA4LCAgOCwgIDgsIDAsIEdMX1JHQkEsICAgICAgICAgR0xf
QllURSwgICAgICAgICAgICAgICAgICAgICAgICAgR0xfU0lHTkVEX05PUk1BTElaRUQsICAgZmFs
c2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBv
cnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKSkpOwotICAg
IG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9SR0IxMF9BMiwgICAgICAgICAg
UkdCQUZvcm1hdCgxMCwgMTAsIDEwLCAgMiwgMCwgR0xfUkdCQSwgICAgICAgICBHTF9VTlNJR05F
RF9JTlRfMl8xMF8xMF8xMF9SRVYsICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBmYWxzZSwgUmVx
dWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQpKSk7Ci0gICAgbWFwLmlu
c2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX1JHQjEwX0EyVUksICAgICAgICBSR0JBRm9y
bWF0KDEwLCAxMCwgMTAsICAyLCAwLCBHTF9SR0JBX0lOVEVHRVIsIEdMX1VOU0lHTkVEX0lOVF8y
XzEwXzEwXzEwX1JFViwgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8
Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKSkpOwotICAgIG1hcC5pbnNlcnQoSW50
ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9TUkdCOCwgICAgICAgICAgICAgUkdCQUZvcm1hdCggOCwg
IDgsICA4LCAgMCwgMCwgR0xfUkdCLCAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAg
ICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCB0cnVlLCAgUmVxdWlyZUVTT3JFeHQ8Mywg
JkV4dGVuc2lvbnM6OnNSR0I+LCAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQpKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZv
cm1hdEluZm9QYWlyKEdMX1NSR0I4X0FMUEhBOCwgICAgICBSR0JBRm9ybWF0KCA4LCAgOCwgIDgs
ICA4LCAwLCBHTF9SR0JBLCAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAg
IEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIHRydWUsICBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5z
aW9uczo6c1JHQj4sICAgICAgUmVxdWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OnNSR0I+LCAg
ICAgIEFsd2F5c1N1cHBvcnRlZCkpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5m
b1BhaXIoR0xfUjExRl9HMTFGX0IxMEYsICAgIFJHQkFGb3JtYXQoMTEsIDExLCAxMCwgIDAsIDAs
IEdMX1JHQiwgICAgICAgICAgR0xfVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFViwgR0xfRkxP
QVQsICAgICAgICAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjpjb2xvckJ1ZmZlckZsb2F0PiwgQWx3
YXlzU3VwcG9ydGVkKSkpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihH
TF9SR0I5X0U1LCAgICAgICAgICAgUkdCQUZvcm1hdCggOSwgIDksICA5LCAgMCwgNSwgR0xfUkdC
LCAgICAgICAgICBHTF9VTlNJR05FRF9JTlRfNV85XzlfOV9SRVYsICAgICBHTF9GTE9BVCwgICAg
ICAgICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBw
b3J0ZWQpKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX1I4SSwg
ICAgICAgICAgICAgICBSR0JBRm9ybWF0KCA4LCAgMCwgIDAsICAwLCAwLCBHTF9SRURfSU5URUdF
UiwgIEdMX0JZVEUsICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0lOVCwgICAgICAgICAgICAg
ICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVx
dWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKSkp
OwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9SOFVJLCAgICAgICAg
ICAgICAgUkdCQUZvcm1hdCggOCwgIDAsICAwLCAgMCwgMCwgR0xfUkVEX0lOVEVHRVIsICBHTF9V
TlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICBmYWxz
ZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwz
PiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCkpKTsKLSAgICBt
YXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfUjE2SSwgICAgICAgICAgICAgIFJH
QkFGb3JtYXQoMTYsICAwLCAgMCwgIDAsIDAsIEdMX1JFRF9JTlRFR0VSLCAgR0xfU0hPUlQsICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfSU5ULCAgICAgICAgICAgICAgICAgZmFsc2UsIFJlcXVp
cmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mz4sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpKSk7Ci0gICAgbWFwLmluc2Vy
dChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX1IxNlVJLCAgICAgICAgICAgICBSR0JBRm9ybWF0
KDE2LCAgMCwgIDAsICAwLCAwLCBHTF9SRURfSU5URUdFUiwgIEdMX1VOU0lHTkVEX1NIT1JULCAg
ICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKSkpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJu
YWxGb3JtYXRJbmZvUGFpcihHTF9SMzJJLCAgICAgICAgICAgICAgUkdCQUZvcm1hdCgzMiwgIDAs
ICAwLCAgMCwgMCwgR0xfUkVEX0lOVEVHRVIsICBHTF9JTlQsICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9JTlQsICAgICAgICAgICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOZXZlclN1cHBvcnRlZCkpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0
SW5mb1BhaXIoR0xfUjMyVUksICAgICAgICAgICAgIFJHQkFGb3JtYXQoMzIsICAwLCAgMCwgIDAs
IDAsIEdMX1JFRF9JTlRFR0VSLCAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgICAgICAgICAgR0xf
VU5TSUdORURfSU5ULCAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TmV2ZXJTdXBwb3J0ZWQpKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWly
KEdMX1JHOEksICAgICAgICAgICAgICBSR0JBRm9ybWF0KCA4LCAgOCwgIDAsICAwLCAwLCBHTF9S
R19JTlRFR0VSLCAgIEdMX0JZVEUsICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0lOVCwgICAg
ICAgICAgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3Vw
cG9ydGVkKSkpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9SRzhV
SSwgICAgICAgICAgICAgUkdCQUZvcm1hdCggOCwgIDgsICAwLCAgMCwgMCwgR0xfUkdfSU5URUdF
UiwgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAg
ICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJl
cXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCkp
KTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfUkcxNkksICAgICAg
ICAgICAgIFJHQkFGb3JtYXQoMTYsIDE2LCAgMCwgIDAsIDAsIEdMX1JHX0lOVEVHRVIsICAgR0xf
U0hPUlQsICAgICAgICAgICAgICAgICAgICAgICAgR0xfSU5ULCAgICAgICAgICAgICAgICAgZmFs
c2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8
Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpKSk7Ci0gICAg
bWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX1JHMTZVSSwgICAgICAgICAgICBS
R0JBRm9ybWF0KDE2LCAxNiwgIDAsICAwLCAwLCBHTF9SR19JTlRFR0VSLCAgIEdMX1VOU0lHTkVE
X1NIT1JULCAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgIGZhbHNlLCBSZXF1
aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKSkpOwotICAgIG1hcC5pbnNl
cnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9SRzMySSwgICAgICAgICAgICAgUkdCQUZvcm1h
dCgzMiwgMzIsICAwLCAgMCwgMCwgR0xfUkdfSU5URUdFUiwgICBHTF9JTlQsICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9JTlQsICAgICAgICAgICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCkpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVy
bmFsRm9ybWF0SW5mb1BhaXIoR0xfUkczMlVJLCAgICAgICAgICAgIFJHQkFGb3JtYXQoMzIsIDMy
LCAgMCwgIDAsIDAsIEdMX1JHX0lOVEVHRVIsICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgICAg
ICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1h
dEluZm9QYWlyKEdMX1JHQjhJLCAgICAgICAgICAgICBSR0JBRm9ybWF0KCA4LCAgOCwgIDgsICAw
LCAwLCBHTF9SR0JfSU5URUdFUiwgIEdMX0JZVEUsICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X0lOVCwgICAgICAgICAgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5ldmVyU3VwcG9ydGVkKSkpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFp
cihHTF9SR0I4VUksICAgICAgICAgICAgUkdCQUZvcm1hdCggOCwgIDgsICA4LCAgMCwgMCwgR0xf
UkdCX0lOVEVHRVIsICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICBHTF9VTlNJR05F
RF9JTlQsICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1
cHBvcnRlZCkpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfUkdC
MTZJLCAgICAgICAgICAgIFJHQkFGb3JtYXQoMTYsIDE2LCAxNiwgIDAsIDAsIEdMX1JHQl9JTlRF
R0VSLCAgR0xfU0hPUlQsICAgICAgICAgICAgICAgICAgICAgICAgR0xfSU5ULCAgICAgICAgICAg
ICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO
ZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQp
KSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX1JHQjE2VUksICAg
ICAgICAgICBSR0JBRm9ybWF0KDE2LCAxNiwgMTYsICAwLCAwLCBHTF9SR0JfSU5URUdFUiwgIEdM
X1VOU0lHTkVEX1NIT1JULCAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgIGZh
bHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBw
b3J0ZWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKSkpOwotICAg
IG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9SR0IzMkksICAgICAgICAgICAg
UkdCQUZvcm1hdCgzMiwgMzIsIDMyLCAgMCwgMCwgR0xfUkdCX0lOVEVHRVIsICBHTF9JTlQsICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9JTlQsICAgICAgICAgICAgICAgICBmYWxzZSwgUmVx
dWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCkpKTsKLSAgICBtYXAuaW5z
ZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfUkdCMzJVSSwgICAgICAgICAgIFJHQkFGb3Jt
YXQoMzIsIDMyLCAzMiwgIDAsIDAsIEdMX1JHQl9JTlRFR0VSLCAgR0xfVU5TSUdORURfSU5ULCAg
ICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwz
PiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpKSk7Ci0gICAgbWFwLmluc2VydChJbnRl
cm5hbEZvcm1hdEluZm9QYWlyKEdMX1JHQkE4SSwgICAgICAgICAgICBSR0JBRm9ybWF0KCA4LCAg
OCwgIDgsICA4LCAwLCBHTF9SR0JBX0lOVEVHRVIsIEdMX0JZVEUsICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKSkpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3Jt
YXRJbmZvUGFpcihHTF9SR0JBOFVJLCAgICAgICAgICAgUkdCQUZvcm1hdCggOCwgIDgsICA4LCAg
OCwgMCwgR0xfUkdCQV9JTlRFR0VSLCBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICBH
TF9VTlNJR05FRF9JTlQsICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOZXZlclN1cHBvcnRlZCkpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1Bh
aXIoR0xfUkdCQTE2SSwgICAgICAgICAgIFJHQkFGb3JtYXQoMTYsIDE2LCAxNiwgMTYsIDAsIEdM
X1JHQkFfSU5URUdFUiwgR0xfU0hPUlQsICAgICAgICAgICAgICAgICAgICAgICAgR0xfSU5ULCAg
ICAgICAgICAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJT
dXBwb3J0ZWQpKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX1JH
QkExNlVJLCAgICAgICAgICBSR0JBRm9ybWF0KDE2LCAxNiwgMTYsIDE2LCAwLCBHTF9SR0JBX0lO
VEVHRVIsIEdMX1VOU0lHTkVEX1NIT1JULCAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwg
ICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVk
KSkpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9SR0JBMzJJLCAg
ICAgICAgICAgUkdCQUZvcm1hdCgzMiwgMzIsIDMyLCAzMiwgMCwgR0xfUkdCQV9JTlRFR0VSLCBH
TF9JTlQsICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9JTlQsICAgICAgICAgICAgICAgICBm
YWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVF
UzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCkpKTsKLSAg
ICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfUkdCQTMyVUksICAgICAgICAg
IFJHQkFGb3JtYXQoMzIsIDMyLCAzMiwgMzIsIDAsIEdMX1JHQkFfSU5URUdFUiwgR0xfVU5TSUdO
RURfSU5ULCAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgZmFsc2UsIFJl
cXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mz4sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpKSk7CisgICAgLy8gY2xh
bmctZm9ybWF0IG9mZgogCi0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdM
X0JHUkE4X0VYVCwgICAgICAgICBSR0JBRm9ybWF0KCA4LCAgOCwgIDgsICA4LCAwLCBHTF9CR1JB
X0VYVCwgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURf
Tk9STUFMSVpFRCwgZmFsc2UsIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVGb3JtYXRC
R1JBODg4OD4sIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVGb3JtYXRCR1JBODg4OD4s
IEFsd2F5c1N1cHBvcnRlZCkpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1Bh
aXIoR0xfQkdSQTRfQU5HTEVYLCAgICAgIFJHQkFGb3JtYXQoIDQsICA0LCAgNCwgIDQsIDAsIEdM
X0JHUkFfRVhULCAgICAgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF9SRVZfRVhULCBHTF9VTlNJ
R05FRF9OT1JNQUxJWkVELCBmYWxzZSwgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUZv
cm1hdEJHUkE4ODg4PiwgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUZvcm1hdEJHUkE4
ODg4PiwgQWx3YXlzU3VwcG9ydGVkKSkpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJ
bmZvUGFpcihHTF9CR1I1X0ExX0FOR0xFWCwgICAgUkdCQUZvcm1hdCggNSwgIDUsICA1LCAgMSwg
MCwgR0xfQkdSQV9FWFQsICAgICBHTF9VTlNJR05FRF9TSE9SVF8xXzVfNV81X1JFVl9FWFQsIEdM
X1VOU0lHTkVEX05PUk1BTElaRUQsIGZhbHNlLCBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0
dXJlRm9ybWF0QkdSQTg4ODg+LCBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlRm9ybWF0
QkdSQTg4ODg+LCBBbHdheXNTdXBwb3J0ZWQpKSk7CisgICAgLy8gICAgICAgICAgICAgICAgIHwg
SW50ZXJuYWwgZm9ybWF0ICAgICB8IFIgfCBHIHwgQiB8IEEgfFMgfCBGb3JtYXQgICAgICAgICB8
IFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbXBvbmVudCB0eXBlICAgICAgICB8
IFNSR0IgfCBUZXh0dXJlIHN1cHBvcnRlZCAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVuZGVy
YWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZpbHRlcmFibGUgICAgfAorICAg
IEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUjgsICAgICAgICAgICAgICAgICA4LCAgMCwgIDAsICAw
LCAwLCBHTF9SRUQsICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgIEdM
X1VOU0lHTkVEX05PUk1BTElaRUQsIGZhbHNlLCBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9u
czo6dGV4dHVyZVJHPiwgUmVxdWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OnRleHR1cmVSRz4s
IEFsd2F5c1N1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SOF9TTk9STSwg
ICAgICAgICAgIDgsICAwLCAgMCwgIDAsIDAsIEdMX1JFRCwgICAgICAgICAgR0xfQllURSwgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfU0lHTkVEX05PUk1BTElaRUQsICAgZmFsc2UsIFJlcXVp
cmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9y
bWF0KCZtYXAsIEdMX1JHOCwgICAgICAgICAgICAgICAgOCwgIDgsICAwLCAgMCwgMCwgR0xfUkcs
ICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9O
T1JNQUxJWkVELCBmYWxzZSwgUmVxdWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OnRleHR1cmVS
Rz4sIFJlcXVpcmVFU09yRXh0PDMsICZFeHRlbnNpb25zOjp0ZXh0dXJlUkc+LCBBbHdheXNTdXBw
b3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkc4X1NOT1JNLCAgICAgICAgICA4
LCAgOCwgIDAsICAwLCAwLCBHTF9SRywgICAgICAgICAgIEdMX0JZVEUsICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1NJR05FRF9OT1JNQUxJWkVELCAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBH
TF9SR0I4LCAgICAgICAgICAgICAgIDgsICA4LCAgOCwgIDAsIDAsIEdMX1JHQiwgICAgICAgICAg
R0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwg
ZmFsc2UsIFJlcXVpcmVFU09yRXh0PDMsICZFeHRlbnNpb25zOjpyZ2I4cmdiYTg+LCBSZXF1aXJl
RVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6cmdiOHJnYmE4PiwgQWx3YXlzU3VwcG9ydGVkKTsKKyAg
ICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHQjhfU05PUk0sICAgICAgICAgOCwgIDgsICA4LCAg
MCwgMCwgR0xfUkdCLCAgICAgICAgICBHTF9CWVRFLCAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9TSUdORURfTk9STUFMSVpFRCwgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBbHdheXNTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkdCNTY1LCAg
ICAgICAgICAgICA1LCAgNiwgIDUsICAwLCAwLCBHTF9SR0IsICAgICAgICAgIEdMX1VOU0lHTkVE
X1NIT1JUXzVfNl81LCAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIGZhbHNlLCBSZXF1
aXJlRVM8Mj4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDI+LCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZv
cm1hdCgmbWFwLCBHTF9SR0JBNCwgICAgICAgICAgICAgIDQsICA0LCAgNCwgIDQsIDAsIEdMX1JH
QkEsICAgICAgICAgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNCwgICAgICAgR0xfVU5TSUdORURf
Tk9STUFMSVpFRCwgZmFsc2UsIFJlcXVpcmVFUzwyPiwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSZXF1aXJlRVM8Mj4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3Vw
cG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHQjVfQTEsICAgICAgICAgICAg
NSwgIDUsICA1LCAgMSwgMCwgR0xfUkdCQSwgICAgICAgICBHTF9VTlNJR05FRF9TSE9SVF81XzVf
NV8xLCAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBmYWxzZSwgUmVxdWlyZUVTPDI+LCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwyPiwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwg
R0xfUkdCQTgsICAgICAgICAgICAgICA4LCAgOCwgIDgsICA4LCAwLCBHTF9SR0JBLCAgICAgICAg
IEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQs
IGZhbHNlLCBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6cmdiOHJnYmE4PiwgUmVxdWly
ZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OnJnYjhyZ2JhOD4sIEFsd2F5c1N1cHBvcnRlZCk7Cisg
ICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SR0JBOF9TTk9STSwgICAgICAgIDgsICA4LCAgOCwg
IDgsIDAsIEdMX1JHQkEsICAgICAgICAgR0xfQllURSwgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfU0lHTkVEX05PUk1BTElaRUQsICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQWx3YXlzU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHQjEwX0Ey
LCAgICAgICAgICAxMCwgMTAsIDEwLCAgMiwgMCwgR0xfUkdCQSwgICAgICAgICBHTF9VTlNJR05F
RF9JTlRfMl8xMF8xMF8xMF9SRVYsICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBmYWxzZSwgUmVx
dWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFG
b3JtYXQoJm1hcCwgR0xfUkdCMTBfQTJVSSwgICAgICAgIDEwLCAxMCwgMTAsICAyLCAwLCBHTF9S
R0JBX0lOVEVHRVIsIEdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViwgIEdMX1VOU0lHTkVE
X0lOVCwgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3Vw
cG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1NSR0I4LCAgICAgICAgICAgICAg
OCwgIDgsICA4LCAgMCwgMCwgR0xfUkdCLCAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAg
ICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCB0cnVlLCAgUmVxdWlyZUVTT3JFeHQ8
MywgJkV4dGVuc2lvbnM6OnNSR0I+LCAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwg
R0xfU1JHQjhfQUxQSEE4LCAgICAgICA4LCAgOCwgIDgsICA4LCAwLCBHTF9SR0JBLCAgICAgICAg
IEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQs
IHRydWUsICBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6c1JHQj4sICAgICAgUmVxdWly
ZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OnNSR0I+LCAgICAgIEFsd2F5c1N1cHBvcnRlZCk7Cisg
ICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SR0I5X0U1LCAgICAgICAgICAgIDksICA5LCAgOSwg
IDAsIDUsIEdMX1JHQiwgICAgICAgICAgR0xfVU5TSUdORURfSU5UXzVfOV85XzlfUkVWLCAgICAg
R0xfRkxPQVQsICAgICAgICAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQWx3YXlzU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1I4SSwgICAg
ICAgICAgICAgICAgOCwgIDAsICAwLCAgMCwgMCwgR0xfUkVEX0lOVEVHRVIsICBHTF9CWVRFLCAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9JTlQsICAgICAgICAgICAgICAgICBmYWxzZSwgUmVx
dWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZv
cm1hdCgmbWFwLCBHTF9SOFVJLCAgICAgICAgICAgICAgIDgsICAwLCAgMCwgIDAsIDAsIEdMX1JF
RF9JTlRFR0VSLCAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAgR0xfVU5TSUdORURf
SU5ULCAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBw
b3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUjE2SSwgICAgICAgICAgICAgIDE2
LCAgMCwgIDAsICAwLCAwLCBHTF9SRURfSU5URUdFUiwgIEdMX1NIT1JULCAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdM
X1IxNlVJLCAgICAgICAgICAgICAxNiwgIDAsICAwLCAgMCwgMCwgR0xfUkVEX0lOVEVHRVIsICBH
TF9VTlNJR05FRF9TSE9SVCwgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICBm
YWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVF
UzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7CisgICAg
QWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SMzJJLCAgICAgICAgICAgICAgMzIsICAwLCAgMCwgIDAs
IDAsIEdMX1JFRF9JTlRFR0VSLCAgR0xfSU5ULCAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
SU5ULCAgICAgICAgICAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TmV2ZXJTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUjMyVUksICAgICAg
ICAgICAgIDMyLCAgMCwgIDAsICAwLCAwLCBHTF9SRURfSU5URUdFUiwgIEdMX1VOU0lHTkVEX0lO
VCwgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgIGZhbHNlLCBSZXF1aXJl
RVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0
KCZtYXAsIEdMX1JHOEksICAgICAgICAgICAgICAgOCwgIDgsICAwLCAgMCwgMCwgR0xfUkdfSU5U
RUdFUiwgICBHTF9CWVRFLCAgICAgICAgICAgICAgICAgICAgICAgICBHTF9JTlQsICAgICAgICAg
ICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRl
ZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SRzhVSSwgICAgICAgICAgICAgIDgsICA4
LCAgMCwgIDAsIDAsIEdMX1JHX0lOVEVHRVIsICAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAg
ICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkcx
NkksICAgICAgICAgICAgIDE2LCAxNiwgIDAsICAwLCAwLCBHTF9SR19JTlRFR0VSLCAgIEdMX1NI
T1JULCAgICAgICAgICAgICAgICAgICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgIGZhbHNl
LCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDM+
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGRS
R0JBRm9ybWF0KCZtYXAsIEdMX1JHMTZVSSwgICAgICAgICAgICAxNiwgMTYsICAwLCAgMCwgMCwg
R0xfUkdfSU5URUdFUiwgICBHTF9VTlNJR05FRF9TSE9SVCwgICAgICAgICAgICAgICBHTF9VTlNJ
R05FRF9JTlQsICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZl
clN1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SRzMySSwgICAgICAgICAg
ICAgMzIsIDMyLCAgMCwgIDAsIDAsIEdMX1JHX0lOVEVHRVIsICAgR0xfSU5ULCAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfSU5ULCAgICAgICAgICAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwz
PiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1h
cCwgR0xfUjExRl9HMTFGX0IxMEYsICAgIDExLCAxMSwgMTAsICAwLCAwLCBHTF9SR0IsICAgICAg
ICAgIEdMX1VOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYsIEdMX0ZMT0FULCAgICAgICAgICAg
ICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVx
dWlyZUV4dDwmRXh0ZW5zaW9uczo6Y29sb3JCdWZmZXJGbG9hdD4sIEFsd2F5c1N1cHBvcnRlZCk7
CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SRzMyVUksICAgICAgICAgICAgMzIsIDMyLCAg
MCwgIDAsIDAsIEdMX1JHX0lOVEVHRVIsICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgICAgICAg
ICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTmV2ZXJTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkdCOEks
ICAgICAgICAgICAgICA4LCAgOCwgIDgsICAwLCAwLCBHTF9SR0JfSU5URUdFUiwgIEdMX0JZVEUs
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgIGZhbHNlLCBS
ZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JB
Rm9ybWF0KCZtYXAsIEdMX1JHQjhVSSwgICAgICAgICAgICAgOCwgIDgsICA4LCAgMCwgMCwgR0xf
UkdCX0lOVEVHRVIsICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICBHTF9VTlNJR05F
RF9JTlQsICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1
cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SR0IxNkksICAgICAgICAgICAg
MTYsIDE2LCAxNiwgIDAsIDAsIEdMX1JHQl9JTlRFR0VSLCAgR0xfU0hPUlQsICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfSU5ULCAgICAgICAgICAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwg
R0xfUkdCMTZVSSwgICAgICAgICAgIDE2LCAxNiwgMTYsICAwLCAwLCBHTF9SR0JfSU5URUdFUiwg
IEdMX1VOU0lHTkVEX1NIT1JULCAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAg
IGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJT
dXBwb3J0ZWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKKyAg
ICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHQjMySSwgICAgICAgICAgICAzMiwgMzIsIDMyLCAg
MCwgMCwgR0xfUkdCX0lOVEVHRVIsICBHTF9JTlQsICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9JTlQsICAgICAgICAgICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOZXZlclN1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SR0IzMlVJLCAg
ICAgICAgICAgMzIsIDMyLCAzMiwgIDAsIDAsIEdMX1JHQl9JTlRFR0VSLCAgR0xfVU5TSUdORURf
SU5ULCAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgZmFsc2UsIFJlcXVp
cmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3Jt
YXQoJm1hcCwgR0xfUkdCQThJLCAgICAgICAgICAgICA4LCAgOCwgIDgsICA4LCAwLCBHTF9SR0JB
X0lOVEVHRVIsIEdMX0JZVEUsICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0lOVCwgICAgICAg
ICAgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9y
dGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHQkE4VUksICAgICAgICAgICAgOCwg
IDgsICA4LCAgOCwgMCwgR0xfUkdCQV9JTlRFR0VSLCBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAg
ICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9S
R0JBMTZJLCAgICAgICAgICAgMTYsIDE2LCAxNiwgMTYsIDAsIEdMX1JHQkFfSU5URUdFUiwgR0xf
U0hPUlQsICAgICAgICAgICAgICAgICAgICAgICAgR0xfSU5ULCAgICAgICAgICAgICAgICAgZmFs
c2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8
Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOworICAgIEFk
ZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkdCQTE2VUksICAgICAgICAgIDE2LCAxNiwgMTYsIDE2LCAw
LCBHTF9SR0JBX0lOVEVHRVIsIEdMX1VOU0lHTkVEX1NIT1JULCAgICAgICAgICAgICAgIEdMX1VO
U0lHTkVEX0lOVCwgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5l
dmVyU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHQkEzMkksICAgICAg
ICAgICAzMiwgMzIsIDMyLCAzMiwgMCwgR0xfUkdCQV9JTlRFR0VSLCBHTF9JTlQsICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9JTlQsICAgICAgICAgICAgICAgICBmYWxzZSwgUmVxdWlyZUVT
PDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgm
bWFwLCBHTF9SR0JBMzJVSSwgICAgICAgICAgMzIsIDMyLCAzMiwgMzIsIDAsIEdMX1JHQkFfSU5U
RUdFUiwgR0xfVU5TSUdORURfSU5ULCAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULCAg
ICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS
ZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQp
OwogCisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9CR1JBOF9FWFQsICAgICAgICAgIDgsICA4
LCAgOCwgIDgsIDAsIEdMX0JHUkFfRVhULCAgICAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAg
ICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBmYWxzZSwgUmVxdWlyZUV4dDwmRXh0ZW5z
aW9uczo6dGV4dHVyZUZvcm1hdEJHUkE4ODg4PiwgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6dGV4
dHVyZUZvcm1hdEJHUkE4ODg4PiwgQWx3YXlzU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0
KCZtYXAsIEdMX0JHUkE0X0FOR0xFWCwgICAgICAgNCwgIDQsICA0LCAgNCwgMCwgR0xfQkdSQV9F
WFQsICAgICBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80X1JFVl9FWFQsIEdMX1VOU0lHTkVEX05P
Uk1BTElaRUQsIGZhbHNlLCBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlRm9ybWF0QkdS
QTg4ODg+LCBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlRm9ybWF0QkdSQTg4ODg+LCBB
bHdheXNTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfQkdSNV9BMV9BTkdM
RVgsICAgICA1LCAgNSwgIDUsICAxLCAwLCBHTF9CR1JBX0VYVCwgICAgIEdMX1VOU0lHTkVEX1NI
T1JUXzFfNV81XzVfUkVWX0VYVCwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgZmFsc2UsIFJlcXVp
cmVFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVGb3JtYXRCR1JBODg4OD4sIFJlcXVpcmVFeHQ8JkV4
dGVuc2lvbnM6OnRleHR1cmVGb3JtYXRCR1JBODg4OD4sIEFsd2F5c1N1cHBvcnRlZCk7CisKKyAg
ICAvLyBTcGVjaWFsIGZvcm1hdCB3aGljaCBpcyBub3QgcmVhbGx5IHN1cHBvcnRlZCwgc28gYWx3
YXlzIGZhbHNlIGZvciBhbGwgc3VwcG9ydHMuCisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9C
R1I1NjVfQU5HTEVYLCAgICAgIDUsICA2LCAgNSwgIDEsIDAsIEdMX0JHUkFfRVhULCAgICAgR0xf
VU5TSUdORURfU0hPUlRfNV82XzUsICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBm
YWxzZSwgTmV2ZXJTdXBwb3J0ZWQsIE5ldmVyU3VwcG9ydGVkLCBOZXZlclN1cHBvcnRlZCk7CisK
ICAgICAvLyBGbG9hdGluZyBwb2ludCByZW5kZXJhYmlsaXR5IGFuZCBmaWx0ZXJpbmcgaXMgcHJv
dmlkZWQgYnkgT0VTX3RleHR1cmVfZmxvYXQgYW5kIE9FU190ZXh0dXJlX2hhbGZfZmxvYXQKLSAg
ICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEludGVybmFsIGZvcm1hdCAgICAg
fCAgICAgICAgICB8IEQgfFMgfCBGb3JtYXQgICAgICAgICAgICAgfCBUeXBlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8IENvbXAgICB8IFNSR0IgfCAgVGV4dHVyZSBzdXBwb3J0
ZWQgfCBSZW5kZXJhYmxlICAgICAgICAgICAgICAgICAgfCBGaWx0ZXJhYmxlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwgICB8ICB8ICAgICAgICAg
ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdHlw
ZSAgIHwgICAgICB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0g
ICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX1IxNkYsICAgICAgICAgICAg
ICBSR0JBRm9ybWF0KDE2LCAgMCwgIDAsICAwLCAwLCBHTF9SRUQsICAgICAgICAgIEdMX0hBTEZf
RkxPQVQsICAgICAgICAgICAgICAgICAgIEdMX0ZMT0FULCBmYWxzZSwgSGFsZkZsb2F0U3VwcG9y
dFJHLCBIYWxmRmxvYXRSZW5kZXJhYmxlU3VwcG9ydFJHLCBSZXF1aXJlRXh0PCZFeHRlbnNpb25z
Ojp0ZXh0dXJlSGFsZkZsb2F0TGluZWFyPikpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9y
bWF0SW5mb1BhaXIoR0xfUkcxNkYsICAgICAgICAgICAgIFJHQkFGb3JtYXQoMTYsIDE2LCAgMCwg
IDAsIDAsIEdMX1JHLCAgICAgICAgICAgR0xfSEFMRl9GTE9BVCwgICAgICAgICAgICAgICAgICAg
R0xfRkxPQVQsIGZhbHNlLCBIYWxmRmxvYXRTdXBwb3J0UkcsIEhhbGZGbG9hdFJlbmRlcmFibGVT
dXBwb3J0UkcsIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVIYWxmRmxvYXRMaW5lYXI+
KSkpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9SR0IxNkYsICAg
ICAgICAgICAgUkdCQUZvcm1hdCgxNiwgMTYsIDE2LCAgMCwgMCwgR0xfUkdCLCAgICAgICAgICBH
TF9IQUxGX0ZMT0FULCAgICAgICAgICAgICAgICAgICBHTF9GTE9BVCwgZmFsc2UsIEhhbGZGbG9h
dFN1cHBvcnQsICAgSGFsZkZsb2F0UmVuZGVyYWJsZVN1cHBvcnQsICAgUmVxdWlyZUV4dDwmRXh0
ZW5zaW9uczo6dGV4dHVyZUhhbGZGbG9hdExpbmVhcj4pKSk7Ci0gICAgbWFwLmluc2VydChJbnRl
cm5hbEZvcm1hdEluZm9QYWlyKEdMX1JHQkExNkYsICAgICAgICAgICBSR0JBRm9ybWF0KDE2LCAx
NiwgMTYsIDE2LCAwLCBHTF9SR0JBLCAgICAgICAgIEdMX0hBTEZfRkxPQVQsICAgICAgICAgICAg
ICAgICAgIEdMX0ZMT0FULCBmYWxzZSwgSGFsZkZsb2F0U3VwcG9ydCwgICBIYWxmRmxvYXRSZW5k
ZXJhYmxlU3VwcG9ydCwgICBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlSGFsZkZsb2F0
TGluZWFyPikpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfUjMy
RiwgICAgICAgICAgICAgIFJHQkFGb3JtYXQoMzIsICAwLCAgMCwgIDAsIDAsIEdMX1JFRCwgICAg
ICAgICAgR0xfRkxPQVQsICAgICAgICAgICAgICAgICAgICAgICAgR0xfRkxPQVQsIGZhbHNlLCBG
bG9hdFN1cHBvcnRSRywgICAgIEZsb2F0UmVuZGVyYWJsZVN1cHBvcnRSRywgICAgIFJlcXVpcmVF
eHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVGbG9hdExpbmVhcj4gICAgKSkpOwotICAgIG1hcC5pbnNl
cnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9SRzMyRiwgICAgICAgICAgICAgUkdCQUZvcm1h
dCgzMiwgMzIsICAwLCAgMCwgMCwgR0xfUkcsICAgICAgICAgICBHTF9GTE9BVCwgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9GTE9BVCwgZmFsc2UsIEZsb2F0U3VwcG9ydFJHLCAgICAgRmxvYXRS
ZW5kZXJhYmxlU3VwcG9ydFJHLCAgICAgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUZs
b2F0TGluZWFyPiAgICApKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWly
KEdMX1JHQjMyRiwgICAgICAgICAgICBSR0JBRm9ybWF0KDMyLCAzMiwgMzIsICAwLCAwLCBHTF9S
R0IsICAgICAgICAgIEdMX0ZMT0FULCAgICAgICAgICAgICAgICAgICAgICAgIEdMX0ZMT0FULCBm
YWxzZSwgRmxvYXRTdXBwb3J0LCAgICAgICBGbG9hdFJlbmRlcmFibGVTdXBwb3J0LCAgICAgICBS
ZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlRmxvYXRMaW5lYXI+ICAgICkpKTsKLSAgICBt
YXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfUkdCQTMyRiwgICAgICAgICAgIFJH
QkFGb3JtYXQoMzIsIDMyLCAzMiwgMzIsIDAsIEdMX1JHQkEsICAgICAgICAgR0xfRkxPQVQsICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfRkxPQVQsIGZhbHNlLCBGbG9hdFN1cHBvcnQsICAgICAg
IEZsb2F0UmVuZGVyYWJsZVN1cHBvcnQsICAgICAgIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRl
eHR1cmVGbG9hdExpbmVhcj4gICAgKSkpOworICAgIC8vICAgICAgICAgICAgICAgICB8IEludGVy
bmFsIGZvcm1hdCAgICAgfCBEIHxTIHwgRm9ybWF0ICAgICAgICAgICAgIHwgVHlwZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb21wICAgfCBTUkdCIHwgIFRleHR1cmUgc3Vw
cG9ydGVkIHwgUmVuZGVyYWJsZSAgICAgICAgICAgICAgICAgIHwgRmlsdGVyYWJsZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgICAgICAgICAgfCAg
ICAgICAgICAgICAgICAgICAgIHwgICB8ICB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdHlwZSAgIHwgICAgICB8ICAgICAgICAg
ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgQWRkUkdCQUZvcm1hdCgmbWFw
LCBHTF9SMTZGLCAgICAgICAgICAgICAgMTYsICAwLCAgMCwgIDAsIDAsIEdMX1JFRCwgICAgICAg
ICAgR0xfSEFMRl9GTE9BVCwgICAgICAgICAgICAgICAgICAgR0xfRkxPQVQsIGZhbHNlLCBIYWxm
RmxvYXRTdXBwb3J0UkcsIEhhbGZGbG9hdFJlbmRlcmFibGVTdXBwb3J0UkcsIFJlcXVpcmVFeHQ8
JkV4dGVuc2lvbnM6OnRleHR1cmVIYWxmRmxvYXRMaW5lYXI+KTsKKyAgICBBZGRSR0JBRm9ybWF0
KCZtYXAsIEdMX1JHMTZGLCAgICAgICAgICAgICAxNiwgMTYsICAwLCAgMCwgMCwgR0xfUkcsICAg
ICAgICAgICBHTF9IQUxGX0ZMT0FULCAgICAgICAgICAgICAgICAgICBHTF9GTE9BVCwgZmFsc2Us
IEhhbGZGbG9hdFN1cHBvcnRSRywgSGFsZkZsb2F0UmVuZGVyYWJsZVN1cHBvcnRSRywgUmVxdWly
ZUV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUhhbGZGbG9hdExpbmVhcj4pOworICAgIEFkZFJHQkFG
b3JtYXQoJm1hcCwgR0xfUkdCMTZGLCAgICAgICAgICAgIDE2LCAxNiwgMTYsICAwLCAwLCBHTF9S
R0IsICAgICAgICAgIEdMX0hBTEZfRkxPQVQsICAgICAgICAgICAgICAgICAgIEdMX0ZMT0FULCBm
YWxzZSwgSGFsZkZsb2F0U3VwcG9ydCwgICBIYWxmRmxvYXRSZW5kZXJhYmxlU3VwcG9ydCwgICBS
ZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlSGFsZkZsb2F0TGluZWFyPik7CisgICAgQWRk
UkdCQUZvcm1hdCgmbWFwLCBHTF9SR0JBMTZGLCAgICAgICAgICAgMTYsIDE2LCAxNiwgMTYsIDAs
IEdMX1JHQkEsICAgICAgICAgR0xfSEFMRl9GTE9BVCwgICAgICAgICAgICAgICAgICAgR0xfRkxP
QVQsIGZhbHNlLCBIYWxmRmxvYXRTdXBwb3J0LCAgIEhhbGZGbG9hdFJlbmRlcmFibGVTdXBwb3J0
LCAgIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVIYWxmRmxvYXRMaW5lYXI+KTsKKyAg
ICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1IzMkYsICAgICAgICAgICAgICAzMiwgIDAsICAwLCAg
MCwgMCwgR0xfUkVELCAgICAgICAgICBHTF9GTE9BVCwgICAgICAgICAgICAgICAgICAgICAgICBH
TF9GTE9BVCwgZmFsc2UsIEZsb2F0U3VwcG9ydFJHLCAgICAgRmxvYXRSZW5kZXJhYmxlU3VwcG9y
dFJHLCAgICAgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUZsb2F0TGluZWFyPiAgICAp
OworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkczMkYsICAgICAgICAgICAgIDMyLCAzMiwg
IDAsICAwLCAwLCBHTF9SRywgICAgICAgICAgIEdMX0ZMT0FULCAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX0ZMT0FULCBmYWxzZSwgRmxvYXRTdXBwb3J0UkcsICAgICBGbG9hdFJlbmRlcmFibGVT
dXBwb3J0UkcsICAgICBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlRmxvYXRMaW5lYXI+
ICAgICk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SR0IzMkYsICAgICAgICAgICAgMzIs
IDMyLCAzMiwgIDAsIDAsIEdMX1JHQiwgICAgICAgICAgR0xfRkxPQVQsICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfRkxPQVQsIGZhbHNlLCBGbG9hdFN1cHBvcnQsICAgICAgIEZsb2F0UmVuZGVy
YWJsZVN1cHBvcnQsICAgICAgIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVGbG9hdExp
bmVhcj4gICAgKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHQkEzMkYsICAgICAgICAg
ICAzMiwgMzIsIDMyLCAzMiwgMCwgR0xfUkdCQSwgICAgICAgICBHTF9GTE9BVCwgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9GTE9BVCwgZmFsc2UsIEZsb2F0U3VwcG9ydCwgICAgICAgRmxvYXRS
ZW5kZXJhYmxlU3VwcG9ydCwgICAgICAgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUZs
b2F0TGluZWFyPiAgICApOwogCiAgICAgLy8gRGVwdGggc3RlbmNpbCBmb3JtYXRzCi0gICAgLy8g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBJbnRlcm5hbCBmb3JtYXQgICAgICAgICB8
ICAgICAgICAgICAgICAgICAgfCBEIHxTIHwgWCB8IEZvcm1hdCAgICAgICAgICAgIHwgVHlwZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb21wb25lbnQgdHlwZSAgICAgICAgfCBTdXBw
b3J0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJlbmRlcmFibGUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCBGaWx0ZXJhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfREVQVEhfQ09NUE9O
RU5UMTYsICAgICBEZXB0aFN0ZW5jaWxGb3JtYXQoMTYsIDAsICAwLCBHTF9ERVBUSF9DT01QT05F
TlQsIEdMX1VOU0lHTkVEX1NIT1JULCAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFM
SVpFRCwgUmVxdWlyZUVTPDI+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1
aXJlRVM8Mj4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OmRl
cHRoVGV4dHVyZXM+KSkpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihH
TF9ERVBUSF9DT01QT05FTlQyNCwgICAgIERlcHRoU3RlbmNpbEZvcm1hdCgyNCwgMCwgIDAsIEdM
X0RFUFRIX0NPTVBPTkVOVCwgR0xfVU5TSUdORURfSU5ULCAgICAgICAgICAgICAgICAgICBHTF9V
TlNJR05FRF9OT1JNQUxJWkVELCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVNPckV4dDwzLCAm
RXh0ZW5zaW9uczo6ZGVwdGhUZXh0dXJlcz4pKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZv
cm1hdEluZm9QYWlyKEdMX0RFUFRIX0NPTVBPTkVOVDMyRiwgICAgRGVwdGhTdGVuY2lsRm9ybWF0
KDMyLCAwLCAgMCwgR0xfREVQVEhfQ09NUE9ORU5ULCBHTF9GTE9BVCwgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX0ZMT0FULCAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVp
cmVFU09yRXh0PDMsICZFeHRlbnNpb25zOjpkZXB0aFRleHR1cmVzPikpKTsKLSAgICBtYXAuaW5z
ZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfREVQVEhfQ09NUE9ORU5UMzJfT0VTLCBEZXB0
aFN0ZW5jaWxGb3JtYXQoMzIsIDAsICAwLCBHTF9ERVBUSF9DT01QT05FTlQsIEdMX1VOU0lHTkVE
X0lOVCwgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgUmVxdWlyZUV4
dE9yRXh0PCZFeHRlbnNpb25zOjpkZXB0aFRleHR1cmVzLCAmRXh0ZW5zaW9uczo6ZGVwdGgzMj4s
IFJlcXVpcmVFeHRPckV4dDwmRXh0ZW5zaW9uczo6ZGVwdGhUZXh0dXJlcywgJkV4dGVuc2lvbnM6
OmRlcHRoMzI+LCBBbHdheXNTdXBwb3J0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSkp
OwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9ERVBUSDI0X1NURU5D
SUw4LCAgICAgIERlcHRoU3RlbmNpbEZvcm1hdCgyNCwgOCwgIDAsIEdMX0RFUFRIX1NURU5DSUws
ICAgR0xfVU5TSUdORURfSU5UXzI0XzgsICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJ
WkVELCBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6ZGVwdGhUZXh0dXJlcz4sIFJlcXVp
cmVFU09yRXh0T3JFeHQ8MywgJkV4dGVuc2lvbnM6OmRlcHRoVGV4dHVyZXMsICZFeHRlbnNpb25z
OjpwYWNrZWREZXB0aFN0ZW5jaWw+LCBBbHdheXNTdXBwb3J0ZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICApKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdM
X0RFUFRIMzJGX1NURU5DSUw4LCAgICAgRGVwdGhTdGVuY2lsRm9ybWF0KDMyLCA4LCAyNCwgR0xf
REVQVEhfU1RFTkNJTCwgICBHTF9GTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVYsIEdMX0ZM
T0FULCAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICkpKTsKKyAgICAvLyAgICAgICAgICAgICAgICAgICAg
ICAgICB8IEludGVybmFsIGZvcm1hdCAgICAgICAgIHwgRCB8UyB8IFggfCBGb3JtYXQgICAgICAg
ICAgICB8IFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29tcG9uZW50IHR5cGUg
ICAgICAgIHwgU3VwcG9ydGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBS
ZW5kZXJhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgRmlsdGVyYWJsZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgQWRkRGVwdGhTdGVuY2lsRm9ybWF0KCZtYXAsIEdMX0RFUFRI
X0NPTVBPTkVOVDE2LCAgICAgMTYsIDAsICAwLCBHTF9ERVBUSF9DT01QT05FTlQsIEdMX1VOU0lH
TkVEX1NIT1JULCAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgUmVxdWly
ZUVTPDI+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mj4sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUmVxdWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OmRlcHRoVGV4dHVyZXM+
KTsKKyAgICBBZGREZXB0aFN0ZW5jaWxGb3JtYXQoJm1hcCwgR0xfREVQVEhfQ09NUE9ORU5UMjQs
ICAgICAyNCwgMCwgIDAsIEdMX0RFUFRIX0NPTVBPTkVOVCwgR0xfVU5TSUdORURfSU5ULCAgICAg
ICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBSZXF1aXJlRVM8Mz4sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS
ZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6ZGVwdGhUZXh0dXJlcz4pOworICAgIEFkZERl
cHRoU3RlbmNpbEZvcm1hdCgmbWFwLCBHTF9ERVBUSF9DT01QT05FTlQzMkYsICAgIDMyLCAwLCAg
MCwgR0xfREVQVEhfQ09NUE9ORU5ULCBHTF9GTE9BVCwgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX0ZMT0FULCAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFU09yRXh0
PDMsICZFeHRlbnNpb25zOjpkZXB0aFRleHR1cmVzPik7CisgICAgQWRkRGVwdGhTdGVuY2lsRm9y
bWF0KCZtYXAsIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUywgMzIsIDAsICAwLCBHTF9ERVBUSF9D
T01QT05FTlQsIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURf
Tk9STUFMSVpFRCwgUmVxdWlyZUV4dE9yRXh0PCZFeHRlbnNpb25zOjpkZXB0aFRleHR1cmVzLCAm
RXh0ZW5zaW9uczo6ZGVwdGgzMj4sIFJlcXVpcmVFeHRPckV4dDwmRXh0ZW5zaW9uczo6ZGVwdGhU
ZXh0dXJlcywgJkV4dGVuc2lvbnM6OmRlcHRoMzI+LCBBbHdheXNTdXBwb3J0ZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKTsKKyAgICBBZGREZXB0aFN0ZW5jaWxGb3JtYXQoJm1hcCwgR0xf
REVQVEgyNF9TVEVOQ0lMOCwgICAgICAyNCwgOCwgIDAsIEdMX0RFUFRIX1NURU5DSUwsICAgR0xf
VU5TSUdORURfSU5UXzI0XzgsICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBS
ZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6ZGVwdGhUZXh0dXJlcz4sIFJlcXVpcmVFU09y
RXh0T3JFeHQ8MywgJkV4dGVuc2lvbnM6OmRlcHRoVGV4dHVyZXMsICZFeHRlbnNpb25zOjpwYWNr
ZWREZXB0aFN0ZW5jaWw+LCBBbHdheXNTdXBwb3J0ZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICApOworICAgIEFkZERlcHRoU3RlbmNpbEZvcm1hdCgmbWFwLCBHTF9ERVBUSDMyRl9TVEVO
Q0lMOCwgICAgIDMyLCA4LCAyNCwgR0xfREVQVEhfU1RFTkNJTCwgICBHTF9GTE9BVF8zMl9VTlNJ
R05FRF9JTlRfMjRfOF9SRVYsIEdMX0ZMT0FULCAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFsd2F5c1N1cHBvcnRlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAg
Ly8gU1RFTkNJTF9JTkRFWDggaXMgc3BlY2lhbC1jYXNlZCwgc2VlIGFyb3VuZCB0aGUgYm90dG9t
IG9mIHRoZSBsaXN0LgogCiAgICAgLy8gTHVtaW5hbmNlIGFscGhhIGZvcm1hdHMKQEAgLTQ4Miwy
MyArNTEwLDIzIEBACiAgICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0xV
TUlOQU5DRV9BTFBIQTE2Rl9FWFQsIExVTUFGb3JtYXQoMTYsIDE2LCBHTF9MVU1JTkFOQ0VfQUxQ
SEEsIEdMX0hBTEZfRkxPQVQsICAgIEdMX0ZMT0FULCAgICAgICAgICAgICAgIFJlcXVpcmVFeHRB
bmRFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVTdG9yYWdlLCAmRXh0ZW5zaW9uczo6dGV4dHVyZUhh
bGZGbG9hdD4sIE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7CiAKICAgICAvLyBV
bnNpemVkIGZvcm1hdHMKLSAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IElu
dGVybmFsIGZvcm1hdCAgIHwgICAgICAgICAgICAgfCBGb3JtYXQgICAgICAgICAgICB8IFN1cHBv
cnRlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSZW5kZXJhYmxl
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRmlsdGVyYWJsZSAgICB8
Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0FMUEhBLCAgICAgICAg
ICAgVW5zaXplZEZvcm1hdChHTF9BTFBIQSwgICAgICAgICAgIFJlcXVpcmVFUzwyPiwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKSkpOwotICAgIG1hcC5p
bnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9MVU1JTkFOQ0UsICAgICAgIFVuc2l6ZWRG
b3JtYXQoR0xfTFVNSU5BTkNFLCAgICAgICBSZXF1aXJlRVM8Mj4sICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCkpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVy
bmFsRm9ybWF0SW5mb1BhaXIoR0xfTFVNSU5BTkNFX0FMUEhBLCBVbnNpemVkRm9ybWF0KEdMX0xV
TUlOQU5DRV9BTFBIQSwgUmVxdWlyZUVTPDI+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBbHdheXNTdXBwb3J0ZWQpKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdElu
Zm9QYWlyKEdMX1JFRCwgICAgICAgICAgICAgVW5zaXplZEZvcm1hdChHTF9SRUQsICAgICAgICAg
ICAgIFJlcXVpcmVFU09yRXh0PDMsICZFeHRlbnNpb25zOjp0ZXh0dXJlUkc+LCAgICAgICAgICBO
ZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlz
U3VwcG9ydGVkKSkpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9S
RywgICAgICAgICAgICAgIFVuc2l6ZWRGb3JtYXQoR0xfUkcsICAgICAgICAgICAgICBSZXF1aXJl
RVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6dGV4dHVyZVJHPiwgICAgICAgICAgTmV2ZXJTdXBwb3J0
ZWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCkp
KTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfUkdCLCAgICAgICAg
ICAgICBVbnNpemVkRm9ybWF0KEdMX1JHQiwgICAgICAgICAgICAgUmVxdWlyZUVTPDI+LCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwyPiwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQpKSk7Ci0gICAgbWFw
Lmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX1JHQkEsICAgICAgICAgICAgVW5zaXpl
ZEZvcm1hdChHTF9SR0JBLCAgICAgICAgICAgIFJlcXVpcmVFUzwyPiwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mj4sICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKSkpOwotICAgIG1hcC5pbnNlcnQoSW50
ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9SRURfSU5URUdFUiwgICAgIFVuc2l6ZWRGb3JtYXQoR0xf
UkVEX0lOVEVHRVIsICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5ldmVyU3VwcG9ydGVkICkpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0
SW5mb1BhaXIoR0xfUkdfSU5URUdFUiwgICAgICBVbnNpemVkRm9ybWF0KEdMX1JHX0lOVEVHRVIs
ICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZl
clN1cHBvcnRlZCApKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdM
X1JHQl9JTlRFR0VSLCAgICAgVW5zaXplZEZvcm1hdChHTF9SR0JfSU5URUdFUiwgICAgIFJlcXVp
cmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBv
cnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQg
KSkpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9SR0JBX0lOVEVH
RVIsICAgIFVuc2l6ZWRGb3JtYXQoR0xfUkdCQV9JTlRFR0VSLCAgICBSZXF1aXJlRVM8Mz4sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkICkpKTsKLSAgICBt
YXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfQkdSQV9FWFQsICAgICAgICBVbnNp
emVkRm9ybWF0KEdMX0JHUkFfRVhULCAgICAgICAgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6dGV4
dHVyZUZvcm1hdEJHUkE4ODg4PiwgICAgIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVG
b3JtYXRCR1JBODg4OD4sICAgICBBbHdheXNTdXBwb3J0ZWQpKSk7Ci0gICAgbWFwLmluc2VydChJ
bnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0RFUFRIX0NPTVBPTkVOVCwgVW5zaXplZEZvcm1hdChH
TF9ERVBUSF9DT01QT05FTlQsIFJlcXVpcmVFUzwyPiwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBSZXF1aXJlRVM8Mj4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKSkpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3Jt
YXRJbmZvUGFpcihHTF9ERVBUSF9TVEVOQ0lMLCAgIFVuc2l6ZWRGb3JtYXQoR0xfREVQVEhfU1RF
TkNJTCwgICBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6cGFja2VkRGVwdGhTdGVuY2ls
PiwgUmVxdWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OnBhY2tlZERlcHRoU3RlbmNpbD4sIEFs
d2F5c1N1cHBvcnRlZCkpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIo
R0xfU1JHQl9FWFQsICAgICAgICBVbnNpemVkRm9ybWF0KEdMX1JHQiwgICAgICAgICAgICAgUmVx
dWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OnNSR0I+LCAgICAgICAgICAgICAgIE5ldmVyU3Vw
cG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0
ZWQpKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX1NSR0JfQUxQ
SEFfRVhULCAgVW5zaXplZEZvcm1hdChHTF9SR0JBLCAgICAgICAgICAgIFJlcXVpcmVFU09yRXh0
PDMsICZFeHRlbnNpb25zOjpzUkdCPiwgICAgICAgICAgICAgICBSZXF1aXJlRVNPckV4dDwzLCAm
RXh0ZW5zaW9uczo6c1JHQj4sICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKSkpOworICAg
IC8vICAgICAgICAgICAgICAgICAgICB8IEludGVybmFsIGZvcm1hdCAgIHwgRm9ybWF0ICAgICAg
ICAgICAgfCBTdXBwb3J0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgUmVuZGVyYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZp
bHRlcmFibGUgICAgfAorICAgIEFkZFVuc2l6ZWRGb3JtYXQoJm1hcCwgR0xfQUxQSEEsICAgICAg
ICAgICBHTF9BTFBIQSwgICAgICAgICAgIFJlcXVpcmVFUzwyPiwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKTsKKyAgICBBZGRVbnNpemVkRm9ybWF0KCZt
YXAsIEdMX0xVTUlOQU5DRSwgICAgICAgR0xfTFVNSU5BTkNFLCAgICAgICBSZXF1aXJlRVM8Mj4s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7CisgICAg
QWRkVW5zaXplZEZvcm1hdCgmbWFwLCBHTF9MVU1JTkFOQ0VfQUxQSEEsIEdMX0xVTUlOQU5DRV9B
TFBIQSwgUmVxdWlyZUVTPDI+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdh
eXNTdXBwb3J0ZWQpOworICAgIEFkZFVuc2l6ZWRGb3JtYXQoJm1hcCwgR0xfUkVELCAgICAgICAg
ICAgICBHTF9SRUQsICAgICAgICAgICAgIFJlcXVpcmVFU09yRXh0PDMsICZFeHRlbnNpb25zOjp0
ZXh0dXJlUkc+LCAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKTsKKyAgICBBZGRVbnNpemVkRm9ybWF0KCZt
YXAsIEdMX1JHLCAgICAgICAgICAgICAgR0xfUkcsICAgICAgICAgICAgICBSZXF1aXJlRVNPckV4
dDwzLCAmRXh0ZW5zaW9uczo6dGV4dHVyZVJHPiwgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7CisgICAg
QWRkVW5zaXplZEZvcm1hdCgmbWFwLCBHTF9SR0IsICAgICAgICAgICAgIEdMX1JHQiwgICAgICAg
ICAgICAgUmVxdWlyZUVTPDI+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJlcXVpcmVFUzwyPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdh
eXNTdXBwb3J0ZWQpOworICAgIEFkZFVuc2l6ZWRGb3JtYXQoJm1hcCwgR0xfUkdCQSwgICAgICAg
ICAgICBHTF9SR0JBLCAgICAgICAgICAgIFJlcXVpcmVFUzwyPiwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mj4sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKTsKKyAgICBBZGRVbnNpemVkRm9ybWF0KCZt
YXAsIEdMX1JFRF9JTlRFR0VSLCAgICAgR0xfUkVEX0lOVEVHRVIsICAgICBSZXF1aXJlRVM8Mz4s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkICk7CisgICAg
QWRkVW5zaXplZEZvcm1hdCgmbWFwLCBHTF9SR19JTlRFR0VSLCAgICAgIEdMX1JHX0lOVEVHRVIs
ICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZl
clN1cHBvcnRlZCApOworICAgIEFkZFVuc2l6ZWRGb3JtYXQoJm1hcCwgR0xfUkdCX0lOVEVHRVIs
ICAgICBHTF9SR0JfSU5URUdFUiwgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQgKTsKKyAgICBBZGRVbnNpemVkRm9ybWF0KCZt
YXAsIEdMX1JHQkFfSU5URUdFUiwgICAgR0xfUkdCQV9JTlRFR0VSLCAgICBSZXF1aXJlRVM8Mz4s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkICk7CisgICAg
QWRkVW5zaXplZEZvcm1hdCgmbWFwLCBHTF9CR1JBX0VYVCwgICAgICAgIEdMX0JHUkFfRVhULCAg
ICAgICAgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUZvcm1hdEJHUkE4ODg4PiwgICAg
IFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVGb3JtYXRCR1JBODg4OD4sICAgICBBbHdh
eXNTdXBwb3J0ZWQpOworICAgIEFkZFVuc2l6ZWRGb3JtYXQoJm1hcCwgR0xfREVQVEhfQ09NUE9O
RU5ULCBHTF9ERVBUSF9DT01QT05FTlQsIFJlcXVpcmVFUzwyPiwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mj4sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKTsKKyAgICBBZGRVbnNpemVkRm9ybWF0KCZt
YXAsIEdMX0RFUFRIX1NURU5DSUwsICAgR0xfREVQVEhfU1RFTkNJTCwgICBSZXF1aXJlRVNPckV4
dDwzLCAmRXh0ZW5zaW9uczo6cGFja2VkRGVwdGhTdGVuY2lsPiwgUmVxdWlyZUVTT3JFeHQ8Mywg
JkV4dGVuc2lvbnM6OnBhY2tlZERlcHRoU3RlbmNpbD4sIEFsd2F5c1N1cHBvcnRlZCk7CisgICAg
QWRkVW5zaXplZEZvcm1hdCgmbWFwLCBHTF9TUkdCX0VYVCwgICAgICAgIEdMX1JHQiwgICAgICAg
ICAgICAgUmVxdWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OnNSR0I+LCAgICAgICAgICAgICAg
IE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdh
eXNTdXBwb3J0ZWQpOworICAgIEFkZFVuc2l6ZWRGb3JtYXQoJm1hcCwgR0xfU1JHQl9BTFBIQV9F
WFQsICBHTF9SR0JBLCAgICAgICAgICAgIFJlcXVpcmVFU09yRXh0PDMsICZFeHRlbnNpb25zOjpz
UkdCPiwgICAgICAgICAgICAgICBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6c1JHQj4s
ICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKTsKIAogICAgIC8vIENvbXByZXNzZWQgZm9y
bWF0cywgRnJvbSBFUyAzLjAuMSBzcGVjLCB0YWJsZSAzLjE2CiAgICAgLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCBJbnRlcm5hbCBmb3JtYXQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAgICAgICAgICAgICAgfFcgfEggfCBCUyB8Q0N8IEZvcm1hdCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlICAgICAgICAgICAgfCBTUkdCIHwgU3Vw
cG9ydGVkICAgfCBSZW5kZXJhYmxlICAgIHwgRmlsdGVyYWJsZSAgICB8CkBAIC01NjMsMTIgKzU5
MSwyMyBAQAogICAgIC8vIC0gTXVsdGlzYW1wbGVkIGJ1ZmZlciBhcmUgZGlzYWxsb3dlZCBmb3Ig
bm9uLW5vcm1hbGl6ZWQgaW50ZWdlciBjb21wb25lbnQgdHlwZXMgYW5kIHdlIHdhbnQgdG8gc3Vw
cG9ydCBpdCBmb3IgU1RFTkNJTF9JTkRFWDgKICAgICAvLyAtIEFsbCBvdGhlciBzdGVuY2lsIGZv
cm1hdHMgKGFsbCBkZXB0aC1zdGVuY2lsKSBhcmUgZWl0aGVyIGZsb2F0IG9yIG5vcm1hbGl6ZWQK
ICAgICAvLyAtIEl0IGFmZmVjdHMgb25seSB2YWxpZGF0aW9uIG9mIGludGVybmFsZm9ybWF0IGlu
IFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZS4KLSAgICAvLyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IEludGVybmFsIGZvcm1hdCAgfCAgICAgICAgICAgICAgICAgIHxEIHxT
IHxYIHwgRm9ybWF0ICAgICAgICAgIHwgVHlwZSAgICAgICAgICAgIHwgQ29tcG9uZW50IHR5cGUg
ICAgICAgIHwgU3VwcG9ydGVkICAgfCBSZW5kZXJhYmxlICB8IEZpbHRlcmFibGUgICB8Ci0gICAg
bWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX1NURU5DSUxfSU5ERVg4LCBEZXB0
aFN0ZW5jaWxGb3JtYXQoMCwgOCwgMCwgR0xfREVQVEhfU1RFTkNJTCwgR0xfVU5TSUdORURfQllU
RSwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgUmVxdWlyZUVTPDI+LCBSZXF1aXJlRVM8Mj4sIE5l
dmVyU3VwcG9ydGVkKSkpOworICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgIHwgSW50ZXJu
YWwgZm9ybWF0ICB8RCB8UyB8WCB8IEZvcm1hdCAgICB8IFR5cGUgICAgICAgICAgICB8IENvbXBv
bmVudCB0eXBlICAgICAgICB8IFN1cHBvcnRlZCAgIHwgUmVuZGVyYWJsZSAgfCBGaWx0ZXJhYmxl
ICAgfAorICAgIEFkZERlcHRoU3RlbmNpbEZvcm1hdCgmbWFwLCBHTF9TVEVOQ0lMX0lOREVYOCwg
MCwgOCwgMCwgR0xfU1RFTkNJTCwgR0xfVU5TSUdORURfQllURSwgR0xfVU5TSUdORURfTk9STUFM
SVpFRCwgUmVxdWlyZUVTPDI+LCBSZXF1aXJlRVM8Mj4sIE5ldmVyU3VwcG9ydGVkKTsKIAogICAg
IC8vIEZyb20gR0xfQU5HTEVfbG9zc3lfZXRjX2RlY29kZQotICAgIG1hcC5pbnNlcnQoSW50ZXJu
YWxGb3JtYXRJbmZvUGFpcihHTF9FVEMxX1JHQjhfTE9TU1lfREVDT0RFX0FOR0xFLCBDb21wcmVz
c2VkRm9ybWF0KDQsIDQsIDY0LCAzLCBHTF9FVEMxX1JHQjhfT0VTLCBHTF9VTlNJR05FRF9CWVRF
LCBmYWxzZSwgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6bG9zc3lFVENEZWNvZGU+LCBOZXZlclN1
cHBvcnRlZCwgQWx3YXlzU3VwcG9ydGVkKSkpOworICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3Jt
YXRJbmZvUGFpcihHTF9FVEMxX1JHQjhfTE9TU1lfREVDT0RFX0FOR0xFLCBDb21wcmVzc2VkRm9y
bWF0KDQsIDQsIDY0LCAzLCBHTF9FVEMxX1JHQjhfTE9TU1lfREVDT0RFX0FOR0xFLCBHTF9VTlNJ
R05FRF9CWVRFLCBmYWxzZSwgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6bG9zc3lFVENEZWNvZGU+
LCBOZXZlclN1cHBvcnRlZCwgQWx3YXlzU3VwcG9ydGVkKSkpOwogCisgICAgLy8gRnJvbSBHTF9F
WFRfdGV4dHVyZV9ub3JtMTYKKyAgICAvLyAgICAgICAgICAgICAgICAgfCBJbnRlcm5hbCBmb3Jt
YXQgICAgIHwgUiB8IEcgfCBCIHwgQSB8UyB8IEZvcm1hdCAgICAgICAgIHwgVHlwZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgQ29tcG9uZW50IHR5cGUgICAgICAgIHwgU1JHQiB8IFRleHR1
cmUgc3VwcG9ydGVkICAgICAgICAgICAgICAgICAgICAgICAgfCBSZW5kZXJhYmxlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgRmlsdGVyYWJsZSAgICB8CisgICAgQWRkUkdCQUZvcm1h
dCgmbWFwLCBHTF9SMTZfRVhULCAgICAgICAgICAgMTYsICAwLCAgMCwgIDAsIDAsIEdMX1JFRCwg
ICAgICAgICAgR0xfVU5TSUdORURfU0hPUlQsICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9S
TUFMSVpFRCwgZmFsc2UsIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVOb3JtMTY+LCAg
ICBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlTm9ybTE2PiwgICAgQWx3YXlzU3VwcG9y
dGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1IxNl9TTk9STV9FWFQsICAgICAxNiwg
IDAsICAwLCAgMCwgMCwgR0xfUkVELCAgICAgICAgICBHTF9TSE9SVCwgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9TSUdORURfTk9STUFMSVpFRCwgICBmYWxzZSwgUmVxdWlyZUV4dDwmRXh0ZW5z
aW9uczo6dGV4dHVyZU5vcm0xNj4sICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xf
UkcxNl9FWFQsICAgICAgICAgIDE2LCAxNiwgIDAsICAwLCAwLCBHTF9SRywgICAgICAgICAgIEdM
X1VOU0lHTkVEX1NIT1JULCAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIGZh
bHNlLCBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlTm9ybTE2PiwgICAgUmVxdWlyZUV4
dDwmRXh0ZW5zaW9uczo6dGV4dHVyZU5vcm0xNj4sICAgIEFsd2F5c1N1cHBvcnRlZCk7CisgICAg
QWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SRzE2X1NOT1JNX0VYVCwgICAgMTYsIDE2LCAgMCwgIDAs
IDAsIEdMX1JHLCAgICAgICAgICAgR0xfU0hPUlQsICAgICAgICAgICAgICAgICAgICAgICAgR0xf
U0lHTkVEX05PUk1BTElaRUQsICAgZmFsc2UsIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRleHR1
cmVOb3JtMTY+LCAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QWx3YXlzU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHQjE2X0VYVCwg
ICAgICAgICAxNiwgMTYsIDE2LCAgMCwgMCwgR0xfUkdCLCAgICAgICAgICBHTF9VTlNJR05FRF9T
SE9SVCwgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBmYWxzZSwgUmVxdWly
ZUV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZU5vcm0xNj4sICAgIE5ldmVyU3VwcG9ydGVkLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3Jt
YXQoJm1hcCwgR0xfUkdCMTZfU05PUk1fRVhULCAgIDE2LCAxNiwgMTYsICAwLCAwLCBHTF9SR0Is
ICAgICAgICAgIEdMX1NIT1JULCAgICAgICAgICAgICAgICAgICAgICAgIEdMX1NJR05FRF9OT1JN
QUxJWkVELCAgIGZhbHNlLCBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlTm9ybTE2Piwg
ICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBv
cnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SR0JBMTZfRVhULCAgICAgICAgMTYs
IDE2LCAxNiwgMTYsIDAsIEdMX1JHQkEsICAgICAgICAgR0xfVU5TSUdORURfU0hPUlQsICAgICAg
ICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgZmFsc2UsIFJlcXVpcmVFeHQ8JkV4dGVu
c2lvbnM6OnRleHR1cmVOb3JtMTY+LCAgICBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJl
Tm9ybTE2PiwgICAgQWx3YXlzU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdM
X1JHQkExNl9TTk9STV9FWFQsICAxNiwgMTYsIDE2LCAxNiwgMCwgR0xfUkdCQSwgICAgICAgICBH
TF9TSE9SVCwgICAgICAgICAgICAgICAgICAgICAgICBHTF9TSUdORURfTk9STUFMSVpFRCwgICBm
YWxzZSwgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZU5vcm0xNj4sICAgIE5ldmVyU3Vw
cG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQpOworCiAg
ICAgLy8gY2xhbmctZm9ybWF0IG9uCiAKICAgICByZXR1cm4gbWFwOwpAQCAtNTc2LDIwICs2MTUs
MjYgQEAKIAogc3RhdGljIGNvbnN0IEludGVybmFsRm9ybWF0SW5mb01hcCAmR2V0SW50ZXJuYWxG
b3JtYXRNYXAoKQogewotICAgIHN0YXRpYyBjb25zdCBJbnRlcm5hbEZvcm1hdEluZm9NYXAmIGZv
cm1hdE1hcCA9IEJ1aWxkSW50ZXJuYWxGb3JtYXRJbmZvTWFwKCk7CisjcHJhZ21hIEdDQyBkaWFn
bm9zdGljIHB1c2gKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdleGl0LXRpbWUt
ZGVzdHJ1Y3RvcnMiCisgICAgc3RhdGljIGNvbnN0IEludGVybmFsRm9ybWF0SW5mb01hcCBmb3Jt
YXRNYXAgPSBCdWlsZEludGVybmFsRm9ybWF0SW5mb01hcCgpOworI3ByYWdtYSBHQ0MgZGlhZ25v
c3RpYyBwb3AKICAgICByZXR1cm4gZm9ybWF0TWFwOwogfQogCi1zdGF0aWMgRm9ybWF0U2V0JiBC
dWlsZEFsbFNpemVkSW50ZXJuYWxGb3JtYXRTZXQoKQorc3RhdGljIEZvcm1hdFNldCBCdWlsZEFs
bFNpemVkSW50ZXJuYWxGb3JtYXRTZXQoKQogewotICAgIGF1dG8mIHJlc3VsdCA9ICpuZXcgRm9y
bWF0U2V0OworICAgIEZvcm1hdFNldCByZXN1bHQ7CiAKLSAgICBjb25zdCBJbnRlcm5hbEZvcm1h
dEluZm9NYXAgJmZvcm1hdHMgPSBHZXRJbnRlcm5hbEZvcm1hdE1hcCgpOwotICAgIGZvciAoSW50
ZXJuYWxGb3JtYXRJbmZvTWFwOjpjb25zdF9pdGVyYXRvciBpID0gZm9ybWF0cy5iZWdpbigpOyBp
ICE9IGZvcm1hdHMuZW5kKCk7IGkrKykKKyAgICBmb3IgKGF1dG8gaXRlciA6IEdldEludGVybmFs
Rm9ybWF0TWFwKCkpCiAgICAgewotICAgICAgICBpZiAoaS0+c2Vjb25kLnBpeGVsQnl0ZXMgPiAw
KQorICAgICAgICBpZiAoaXRlci5zZWNvbmQucGl4ZWxCeXRlcyA+IDApCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJlc3VsdC5pbnNlcnQoaS0+Zmlyc3QpOworICAgICAgICAgICAgLy8gVE9ETyhq
bWFkaWxsKTogRml4IHRoaXMgaGFjay4KKyAgICAgICAgICAgIGlmIChpdGVyLmZpcnN0ID09IEdM
X0JHUjU2NV9BTkdMRVgpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAg
IHJlc3VsdC5pbnNlcnQoaXRlci5maXJzdCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTY1NSw3
ICs3MDAsNyBAQAogY29uc3QgSW50ZXJuYWxGb3JtYXQgJkdldEludGVybmFsRm9ybWF0SW5mbyhH
TGVudW0gaW50ZXJuYWxGb3JtYXQpCiB7CiAgICAgY29uc3QgSW50ZXJuYWxGb3JtYXRJbmZvTWFw
ICZmb3JtYXRNYXAgPSBHZXRJbnRlcm5hbEZvcm1hdE1hcCgpOwotICAgIEludGVybmFsRm9ybWF0
SW5mb01hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGZvcm1hdE1hcC5maW5kKGludGVybmFsRm9y
bWF0KTsKKyAgICBhdXRvIGl0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGZvcm1h
dE1hcC5maW5kKGludGVybmFsRm9ybWF0KTsKICAgICBpZiAoaXRlciAhPSBmb3JtYXRNYXAuZW5k
KCkpCiAgICAgewogICAgICAgICByZXR1cm4gaXRlci0+c2Vjb25kOwpAQCAtNjY3LDk3ICs3MTIs
MTYwIEBACiAgICAgfQogfQogCi1HTHVpbnQgSW50ZXJuYWxGb3JtYXQ6OmNvbXB1dGVSb3dQaXRj
aChHTGVudW0gZm9ybWF0VHlwZSwgR0xzaXplaSB3aWR0aCwgR0xpbnQgYWxpZ25tZW50LCBHTGlu
dCByb3dMZW5ndGgpIGNvbnN0CitHTHVpbnQgSW50ZXJuYWxGb3JtYXQ6OmNvbXB1dGVQaXhlbEJ5
dGVzKEdMZW51bSBmb3JtYXRUeXBlKSBjb25zdAogewotICAgIEFTU0VSVChhbGlnbm1lbnQgPiAw
ICYmIGlzUG93MihhbGlnbm1lbnQpKTsKLSAgICBHTHVpbnQgcm93Qnl0ZXM7Ci0gICAgaWYgKHJv
d0xlbmd0aCA+IDApCisgICAgY29uc3QgYXV0byAmdHlwZUluZm8gPSBHZXRUeXBlSW5mbyhmb3Jt
YXRUeXBlKTsKKyAgICBHTHVpbnQgY29tcG9uZW50cyAgICA9IHR5cGVJbmZvLnNwZWNpYWxJbnRl
cnByZXRhdGlvbiA/IDF1IDogY29tcG9uZW50Q291bnQ7CisgICAgcmV0dXJuIGNvbXBvbmVudHMg
KiB0eXBlSW5mby5ieXRlczsKK30KKworRXJyb3JPclJlc3VsdDxHTHVpbnQ+IEludGVybmFsRm9y
bWF0Ojpjb21wdXRlUm93UGl0Y2goR0xlbnVtIGZvcm1hdFR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBhbGlnbm1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcm93TGVuZ3RoKSBjb25zdAoreworICAgIC8vIENv
bXByZXNzZWQgaW1hZ2VzIGRvIG5vdCB1c2UgcGFjay91bnBhY2sgcGFyYW1ldGVycy4KKyAgICBp
ZiAoY29tcHJlc3NlZCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCghY29tcHJlc3NlZCk7Ci0gICAg
ICAgIHJvd0J5dGVzID0gcGl4ZWxCeXRlcyAqIHJvd0xlbmd0aDsKKyAgICAgICAgQVNTRVJUKHJv
d0xlbmd0aCA9PSAwKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVDb21wcmVzc2VkSW1hZ2VTaXpl
KGZvcm1hdFR5cGUsIEV4dGVudHMod2lkdGgsIDEsIDEpKTsKICAgICB9Ci0gICAgZWxzZQorCisg
ICAgQ2hlY2tlZE51bWVyaWM8R0x1aW50PiBjaGVja2VkV2lkdGgocm93TGVuZ3RoID4gMCA/IHJv
d0xlbmd0aCA6IHdpZHRoKTsKKyAgICBDaGVja2VkTnVtZXJpYzxHTHVpbnQ+IGNoZWNrZWRSb3dC
eXRlcyA9IGNoZWNrZWRXaWR0aCAqIGNvbXB1dGVQaXhlbEJ5dGVzKGZvcm1hdFR5cGUpOworCisg
ICAgQVNTRVJUKGFsaWdubWVudCA+IDAgJiYgaXNQb3cyKGFsaWdubWVudCkpOworICAgIENoZWNr
ZWROdW1lcmljPEdMdWludD4gY2hlY2tlZEFsaWdubWVudChhbGlnbm1lbnQpOworICAgIGF1dG8g
YWxpZ25lZCA9IHJ4Ojpyb3VuZFVwKGNoZWNrZWRSb3dCeXRlcywgY2hlY2tlZEFsaWdubWVudCk7
CisgICAgQU5HTEVfVFJZX0NIRUNLRURfTUFUSChhbGlnbmVkKTsKKyAgICByZXR1cm4gYWxpZ25l
ZC5WYWx1ZU9yRGllKCk7Cit9CisKK0Vycm9yT3JSZXN1bHQ8R0x1aW50PiBJbnRlcm5hbEZvcm1h
dDo6Y29tcHV0ZURlcHRoUGl0Y2goR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGltYWdlSGVpZ2h0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgcm93UGl0Y2gpIGNvbnN0Cit7CisgICAgR0x1aW50IHJvd3MgPQorICAgICAgICAoaW1h
Z2VIZWlnaHQgPiAwID8gc3RhdGljX2Nhc3Q8R0x1aW50PihpbWFnZUhlaWdodCkgOiBzdGF0aWNf
Y2FzdDxHTHVpbnQ+KGhlaWdodCkpOworICAgIENoZWNrZWROdW1lcmljPEdMdWludD4gY2hlY2tl
ZFJvd1BpdGNoKHJvd1BpdGNoKTsKKworICAgIGF1dG8gZGVwdGhQaXRjaCA9IGNoZWNrZWRSb3dQ
aXRjaCAqIHJvd3M7CisgICAgQU5HTEVfVFJZX0NIRUNLRURfTUFUSChkZXB0aFBpdGNoKTsKKyAg
ICByZXR1cm4gZGVwdGhQaXRjaC5WYWx1ZU9yRGllKCk7Cit9CisKK0Vycm9yT3JSZXN1bHQ8R0x1
aW50PiBJbnRlcm5hbEZvcm1hdDo6Y29tcHV0ZURlcHRoUGl0Y2goR0xlbnVtIGZvcm1hdFR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBhbGlnbm1l
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCByb3dMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbWFnZUhlaWdodCkgY29uc3QKK3sK
KyAgICBHTHVpbnQgcm93UGl0Y2ggPSAwOworICAgIEFOR0xFX1RSWV9SRVNVTFQoY29tcHV0ZVJv
d1BpdGNoKGZvcm1hdFR5cGUsIHdpZHRoLCBhbGlnbm1lbnQsIHJvd0xlbmd0aCksIHJvd1BpdGNo
KTsKKyAgICByZXR1cm4gY29tcHV0ZURlcHRoUGl0Y2goaGVpZ2h0LCBpbWFnZUhlaWdodCwgcm93
UGl0Y2gpOworfQorCitFcnJvck9yUmVzdWx0PEdMdWludD4gSW50ZXJuYWxGb3JtYXQ6OmNvbXB1
dGVDb21wcmVzc2VkSW1hZ2VTaXplKEdMZW51bSBmb3JtYXRUeXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgRXh0ZW50cyAmc2l6ZSkgY29uc3QKK3sKKyAgICBDaGVja2VkTnVtZXJpYzxHTHVpbnQ+IGNo
ZWNrZWRXaWR0aChzaXplLndpZHRoKTsKKyAgICBDaGVja2VkTnVtZXJpYzxHTHVpbnQ+IGNoZWNr
ZWRIZWlnaHQoc2l6ZS5oZWlnaHQpOworICAgIENoZWNrZWROdW1lcmljPEdMdWludD4gY2hlY2tl
ZERlcHRoKHNpemUuZGVwdGgpOworICAgIENoZWNrZWROdW1lcmljPEdMdWludD4gY2hlY2tlZEJs
b2NrV2lkdGgoY29tcHJlc3NlZEJsb2NrV2lkdGgpOworICAgIENoZWNrZWROdW1lcmljPEdMdWlu
dD4gY2hlY2tlZEJsb2NrSGVpZ2h0KGNvbXByZXNzZWRCbG9ja0hlaWdodCk7CisKKyAgICBBU1NF
UlQoY29tcHJlc3NlZCk7CisgICAgYXV0byBudW1CbG9ja3NXaWRlID0gKGNoZWNrZWRXaWR0aCAr
IGNoZWNrZWRCbG9ja1dpZHRoIC0gMXUpIC8gY2hlY2tlZEJsb2NrV2lkdGg7CisgICAgYXV0byBu
dW1CbG9ja3NIaWdoID0gKGNoZWNrZWRIZWlnaHQgKyBjaGVja2VkQmxvY2tIZWlnaHQgLSAxdSkg
LyBjaGVja2VkQmxvY2tIZWlnaHQ7CisgICAgYXV0byBieXRlcyAgICAgICAgID0gbnVtQmxvY2tz
V2lkZSAqIG51bUJsb2Nrc0hpZ2ggKiBwaXhlbEJ5dGVzICogY2hlY2tlZERlcHRoOworICAgIEFO
R0xFX1RSWV9DSEVDS0VEX01BVEgoYnl0ZXMpOworICAgIHJldHVybiBieXRlcy5WYWx1ZU9yRGll
KCk7Cit9CisKK0Vycm9yT3JSZXN1bHQ8R0x1aW50PiBJbnRlcm5hbEZvcm1hdDo6Y29tcHV0ZVNr
aXBCeXRlcyhHTHVpbnQgcm93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBkZXB0aFBpdGNoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQ
aXhlbFN0b3JlU3RhdGVCYXNlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpczNEKSBjb25zdAoreworICAgIENo
ZWNrZWROdW1lcmljPEdMdWludD4gY2hlY2tlZFJvd1BpdGNoKHJvd1BpdGNoKTsKKyAgICBDaGVj
a2VkTnVtZXJpYzxHTHVpbnQ+IGNoZWNrZWREZXB0aFBpdGNoKGRlcHRoUGl0Y2gpOworICAgIENo
ZWNrZWROdW1lcmljPEdMdWludD4gY2hlY2tlZFNraXBJbWFnZXMoc3RhdGljX2Nhc3Q8R0x1aW50
PihzdGF0ZS5za2lwSW1hZ2VzKSk7CisgICAgQ2hlY2tlZE51bWVyaWM8R0x1aW50PiBjaGVja2Vk
U2tpcFJvd3Moc3RhdGljX2Nhc3Q8R0x1aW50PihzdGF0ZS5za2lwUm93cykpOworICAgIENoZWNr
ZWROdW1lcmljPEdMdWludD4gY2hlY2tlZFNraXBQaXhlbHMoc3RhdGljX2Nhc3Q8R0x1aW50Pihz
dGF0ZS5za2lwUGl4ZWxzKSk7CisgICAgQ2hlY2tlZE51bWVyaWM8R0x1aW50PiBjaGVja2VkUGl4
ZWxCeXRlcyhwaXhlbEJ5dGVzKTsKKyAgICBhdXRvIGNoZWNrZWRTa2lwSW1hZ2VzQnl0ZXMgPSBj
aGVja2VkU2tpcEltYWdlcyAqIGNoZWNrZWREZXB0aFBpdGNoOworICAgIGlmICghaXMzRCkKICAg
ICB7Ci0gICAgICAgIHJvd0J5dGVzID0gY29tcHV0ZUJsb2NrU2l6ZShmb3JtYXRUeXBlLCB3aWR0
aCwgMSk7CisgICAgICAgIGNoZWNrZWRTa2lwSW1hZ2VzQnl0ZXMgPSAwOwogICAgIH0KLSAgICBy
ZXR1cm4gcng6OnJvdW5kVXAocm93Qnl0ZXMsIHN0YXRpY19jYXN0PEdMdWludD4oYWxpZ25tZW50
KSk7CisgICAgYXV0byBza2lwQnl0ZXMgPSBjaGVja2VkU2tpcEltYWdlc0J5dGVzICsgY2hlY2tl
ZFNraXBSb3dzICogY2hlY2tlZFJvd1BpdGNoICsKKyAgICAgICAgICAgICAgICAgICAgIGNoZWNr
ZWRTa2lwUGl4ZWxzICogY2hlY2tlZFBpeGVsQnl0ZXM7CisgICAgQU5HTEVfVFJZX0NIRUNLRURf
TUFUSChza2lwQnl0ZXMpOworICAgIHJldHVybiBza2lwQnl0ZXMuVmFsdWVPckRpZSgpOwogfQog
Ci1HTHVpbnQgSW50ZXJuYWxGb3JtYXQ6OmNvbXB1dGVEZXB0aFBpdGNoKEdMZW51bSBmb3JtYXRU
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdp
ZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhl
aWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYWxp
Z25tZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBy
b3dMZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGltYWdlSGVpZ2h0KSBjb25zdAorRXJyb3JPclJlc3VsdDxHTHVpbnQ+IEludGVybmFsRm9ybWF0
Ojpjb21wdXRlUGFja1VucGFja0VuZEJ5dGUoCisgICAgR0xlbnVtIGZvcm1hdFR5cGUsCisgICAg
Y29uc3QgRXh0ZW50cyAmc2l6ZSwKKyAgICBjb25zdCBQaXhlbFN0b3JlU3RhdGVCYXNlICZzdGF0
ZSwKKyAgICBib29sIGlzM0QpIGNvbnN0CiB7Ci0gICAgR0x1aW50IHJvd3M7Ci0gICAgaWYgKGlt
YWdlSGVpZ2h0ID4gMCkKKyAgICBHTHVpbnQgcm93UGl0Y2ggPSAwOworICAgIEFOR0xFX1RSWV9S
RVNVTFQoY29tcHV0ZVJvd1BpdGNoKGZvcm1hdFR5cGUsIHNpemUud2lkdGgsIHN0YXRlLmFsaWdu
bWVudCwgc3RhdGUucm93TGVuZ3RoKSwKKyAgICAgICAgICAgICAgICAgICAgIHJvd1BpdGNoKTsK
KworICAgIEdMdWludCBkZXB0aFBpdGNoID0gMDsKKyAgICBpZiAoaXMzRCkKICAgICB7Ci0gICAg
ICAgIHJvd3MgPSBpbWFnZUhlaWdodDsKKyAgICAgICAgQU5HTEVfVFJZX1JFU1VMVChjb21wdXRl
RGVwdGhQaXRjaChzaXplLmhlaWdodCwgc3RhdGUuaW1hZ2VIZWlnaHQsIHJvd1BpdGNoKSwgZGVw
dGhQaXRjaCk7CiAgICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJvd3MgPSBoZWlnaHQ7
Ci0gICAgfQotICAgIHJldHVybiBjb21wdXRlUm93UGl0Y2goZm9ybWF0VHlwZSwgd2lkdGgsIGFs
aWdubWVudCwgcm93TGVuZ3RoKSAqIHJvd3M7Ci19CiAKLUdMdWludCBJbnRlcm5hbEZvcm1hdDo6
Y29tcHV0ZUJsb2NrU2l6ZShHTGVudW0gZm9ybWF0VHlwZSwgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQpIGNvbnN0Ci17CisgICAgQ2hlY2tlZE51bWVyaWM8R0x1aW50PiBjaGVja2VkQ29w
eUJ5dGVzID0gMDsKICAgICBpZiAoY29tcHJlc3NlZCkKICAgICB7Ci0gICAgICAgIEdMc2l6ZWkg
bnVtQmxvY2tzV2lkZSA9ICh3aWR0aCArIGNvbXByZXNzZWRCbG9ja1dpZHRoIC0gMSkgLyBjb21w
cmVzc2VkQmxvY2tXaWR0aDsKLSAgICAgICAgR0xzaXplaSBudW1CbG9ja3NIaWdodCA9IChoZWln
aHQgKyBjb21wcmVzc2VkQmxvY2tIZWlnaHQgLSAxKSAvIGNvbXByZXNzZWRCbG9ja0hlaWdodDsK
LSAgICAgICAgcmV0dXJuIChwaXhlbEJ5dGVzICogbnVtQmxvY2tzV2lkZSAqIG51bUJsb2Nrc0hp
Z2h0KTsKKyAgICAgICAgQU5HTEVfVFJZX1JFU1VMVChjb21wdXRlQ29tcHJlc3NlZEltYWdlU2l6
ZShmb3JtYXRUeXBlLCBzaXplKSwgY2hlY2tlZENvcHlCeXRlcyk7CiAgICAgfQotICAgIGVsc2UK
KyAgICBlbHNlIGlmIChzaXplLmhlaWdodCAhPSAwICYmICghaXMzRCB8fCBzaXplLmRlcHRoICE9
IDApKQogICAgIHsKLSAgICAgICAgY29uc3QgVHlwZSAmdHlwZUluZm8gPSBHZXRUeXBlSW5mbyhm
b3JtYXRUeXBlKTsKLSAgICAgICAgaWYgKHR5cGVJbmZvLnNwZWNpYWxJbnRlcnByZXRhdGlvbikK
KyAgICAgICAgQ2hlY2tlZE51bWVyaWM8R0x1aW50PiBieXRlcyA9IGNvbXB1dGVQaXhlbEJ5dGVz
KGZvcm1hdFR5cGUpOworICAgICAgICBjaGVja2VkQ29weUJ5dGVzICs9IHNpemUud2lkdGggKiBi
eXRlczsKKworICAgICAgICBDaGVja2VkTnVtZXJpYzxHTHVpbnQ+IGhlaWdodE1pbnVzT25lID0g
c2l6ZS5oZWlnaHQgLSAxOworICAgICAgICBjaGVja2VkQ29weUJ5dGVzICs9IGhlaWdodE1pbnVz
T25lICogcm93UGl0Y2g7CisKKyAgICAgICAgaWYgKGlzM0QpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiB0eXBlSW5mby5ieXRlcyAqIHdpZHRoICogaGVpZ2h0OworICAgICAgICAgICAg
Q2hlY2tlZE51bWVyaWM8R0x1aW50PiBkZXB0aE1pbnVzT25lID0gc2l6ZS5kZXB0aCAtIDE7Cisg
ICAgICAgICAgICBjaGVja2VkQ29weUJ5dGVzICs9IGRlcHRoTWludXNPbmUgKiBkZXB0aFBpdGNo
OwogICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IGNvbXBvbmVudENvdW50ICogdHlwZUluZm8uYnl0ZXMgKiB3aWR0aCAqIGhlaWdodDsKLSAgICAg
ICAgfQogICAgIH0KLX0KIAotR0x1aW50IEludGVybmFsRm9ybWF0Ojpjb21wdXRlU2tpcFBpeGVs
cyhHTGludCByb3dQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgZGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgc2tpcEltYWdlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgc2tpcFJvd3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHNraXBQaXhlbHMpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNraXBJbWFn
ZXMgKiBkZXB0aFBpdGNoICsgc2tpcFJvd3MgKiByb3dQaXRjaCArIHNraXBQaXhlbHMgKiBwaXhl
bEJ5dGVzOworICAgIENoZWNrZWROdW1lcmljPEdMdWludD4gY2hlY2tlZFNraXBCeXRlcyA9IDA7
CisgICAgQU5HTEVfVFJZX1JFU1VMVChjb21wdXRlU2tpcEJ5dGVzKHJvd1BpdGNoLCBkZXB0aFBp
dGNoLCBzdGF0ZSwgaXMzRCksIGNoZWNrZWRTa2lwQnl0ZXMpOworCisgICAgQ2hlY2tlZE51bWVy
aWM8R0x1aW50PiBlbmRCeXRlID0gY2hlY2tlZENvcHlCeXRlcyArIGNoZWNrZWRTa2lwQnl0ZXM7
CisKKyAgICBBTkdMRV9UUllfQ0hFQ0tFRF9NQVRIKGVuZEJ5dGUpOworICAgIHJldHVybiBlbmRC
eXRlLlZhbHVlT3JEaWUoKTsKIH0KIAogR0xlbnVtIEdldFNpemVkSW50ZXJuYWxGb3JtYXQoR0xl
bnVtIGludGVybmFsRm9ybWF0LCBHTGVudW0gdHlwZSkKIHsKLSAgICBjb25zdCBJbnRlcm5hbEZv
cm1hdCYgZm9ybWF0SW5mbyA9IEdldEludGVybmFsRm9ybWF0SW5mbyhpbnRlcm5hbEZvcm1hdCk7
CisgICAgY29uc3QgSW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBHZXRJbnRlcm5hbEZvcm1h
dEluZm8oaW50ZXJuYWxGb3JtYXQpOwogICAgIGlmIChmb3JtYXRJbmZvLnBpeGVsQnl0ZXMgPiAw
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGludGVybmFsRm9ybWF0OwogICAgIH0KLSAgICBlbHNl
Ci0gICAgewotICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0TWFwJiBmb3JtYXRNYXAgPSBCdWls
ZEZvcm1hdE1hcCgpOwotICAgICAgICBGb3JtYXRNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBm
b3JtYXRNYXAuZmluZChGb3JtYXRUeXBlUGFpcihpbnRlcm5hbEZvcm1hdCwgdHlwZSkpOwotICAg
ICAgICBpZiAoaXRlciAhPSBmb3JtYXRNYXAuZW5kKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBpdGVyLT5zZWNvbmQ7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gR0xfTk9ORTsKLSAgICAgICAgfQotICAgIH0KKyAgICByZXR1
cm4gR2V0U2l6ZWRGb3JtYXRJbnRlcm5hbChpbnRlcm5hbEZvcm1hdCwgdHlwZSk7CiB9CiAKIGNv
bnN0IEZvcm1hdFNldCAmR2V0QWxsU2l6ZWRJbnRlcm5hbEZvcm1hdHMoKQogewotICAgIHN0YXRp
YyBGb3JtYXRTZXQmIGZvcm1hdFNldCA9IEJ1aWxkQWxsU2l6ZWRJbnRlcm5hbEZvcm1hdFNldCgp
OworI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGln
bm9yZWQgIi1XZXhpdC10aW1lLWRlc3RydWN0b3JzIgorICAgIHN0YXRpYyBGb3JtYXRTZXQgZm9y
bWF0U2V0ID0gQnVpbGRBbGxTaXplZEludGVybmFsRm9ybWF0U2V0KCk7CisjcHJhZ21hIEdDQyBk
aWFnbm9zdGljIHBvcAogICAgIHJldHVybiBmb3JtYXRTZXQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mb3JtYXR1dGlscy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mb3JtYXR1dGlscy5oCShyZXZp
c2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZm9y
bWF0dXRpbHMuaAkod29ya2luZyBjb3B5KQpAQCAtOSwxNyArOSwzMCBAQAogI2lmbmRlZiBMSUJB
TkdMRV9GT1JNQVRVVElMU19IXwogI2RlZmluZSBMSUJBTkdMRV9GT1JNQVRVVElMU19IXwogCisj
aW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI2luY2x1ZGUgImFuZ2xl
X2dsLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvQ2Fwcy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0Vy
cm9yLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvYW5nbGV0eXBlcy5oIgogCi0jaW5jbHVkZSAiYW5n
bGVfZ2wuaCIKLQotI2luY2x1ZGUgPGNzdGRkZWY+Ci0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0KIG5h
bWVzcGFjZSBnbAogewogCitzdHJ1Y3QgRm9ybWF0VHlwZSBmaW5hbAoreworICAgIEZvcm1hdFR5
cGUoKTsKKyAgICBGb3JtYXRUeXBlKEdMZW51bSBmb3JtYXRfLCBHTGVudW0gdHlwZV8pOworICAg
IEZvcm1hdFR5cGUoY29uc3QgRm9ybWF0VHlwZSAmb3RoZXIpID0gZGVmYXVsdDsKKyAgICBGb3Jt
YXRUeXBlICZvcGVyYXRvcj0oY29uc3QgRm9ybWF0VHlwZSAmb3RoZXIpID0gZGVmYXVsdDsKKwor
ICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IEZvcm1hdFR5cGUgJm90aGVyKSBjb25zdDsKKworICAg
IEdMZW51bSBmb3JtYXQ7CisgICAgR0xlbnVtIHR5cGU7Cit9OworCiBzdHJ1Y3QgVHlwZQogewog
ICAgIFR5cGUoKTsKQEAgLTM0LDYgKzQ3LDQ0IEBACiB7CiAgICAgSW50ZXJuYWxGb3JtYXQoKTsK
IAorICAgIEdMdWludCBjb21wdXRlUGl4ZWxCeXRlcyhHTGVudW0gZm9ybWF0VHlwZSkgY29uc3Q7
CisKKyAgICBFcnJvck9yUmVzdWx0PEdMdWludD4gY29tcHV0ZVJvd1BpdGNoKEdMZW51bSBmb3Jt
YXRUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGFsaWdubWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHJvd0xlbmd0aCkgY29uc3Q7CisgICAgRXJyb3JPclJlc3VsdDxHTHVpbnQ+IGNvbXB1dGVE
ZXB0aFBpdGNoKEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBpbWFnZUhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHJvd1BpdGNoKSBjb25zdDsKKyAgICBFcnJvck9y
UmVzdWx0PEdMdWludD4gY29tcHV0ZURlcHRoUGl0Y2goR0xlbnVtIGZvcm1hdFR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBhbGln
bm1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHJvd0xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgaW1hZ2VIZWlnaHQpIGNvbnN0OworCisgICAgRXJyb3JPclJlc3VsdDxHTHVpbnQ+IGNv
bXB1dGVDb21wcmVzc2VkSW1hZ2VTaXplKEdMZW51bSBmb3JtYXRUeXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFeHRlbnRzICZz
aXplKSBjb25zdDsKKworICAgIEVycm9yT3JSZXN1bHQ8R0x1aW50PiBjb21wdXRlU2tpcEJ5dGVz
KEdMdWludCByb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgZGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBQaXhlbFN0b3JlU3RhdGVCYXNlICZzdGF0ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzM0QpIGNvbnN0OworCisgICAg
RXJyb3JPclJlc3VsdDxHTHVpbnQ+IGNvbXB1dGVQYWNrVW5wYWNrRW5kQnl0ZShHTGVudW0gZm9y
bWF0VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBFeHRlbnRzICZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBpeGVsU3RvcmVTdGF0ZUJhc2UgJnN0
YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgaXMzRCkgY29uc3Q7CisKKyAgICBib29sIGlzTFVNQSgpIGNvbnN0OworICAgIEdM
ZW51bSBnZXRSZWFkUGl4ZWxzRm9ybWF0KCkgY29uc3Q7CisgICAgR0xlbnVtIGdldFJlYWRQaXhl
bHNUeXBlKCkgY29uc3Q7CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSW50ZXJuYWxGb3Jt
YXQgJm90aGVyKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSW50ZXJuYWxGb3Jt
YXQgJm90aGVyKSBjb25zdDsKKworICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdDsKKwogICAgIEdM
dWludCByZWRCaXRzOwogICAgIEdMdWludCBncmVlbkJpdHM7CiAgICAgR0x1aW50IGJsdWVCaXRz
OwpAQCAtNjQsMjEgKzExNSwzNCBAQAogICAgIFN1cHBvcnRDaGVja0Z1bmN0aW9uIHRleHR1cmVT
dXBwb3J0OwogICAgIFN1cHBvcnRDaGVja0Z1bmN0aW9uIHJlbmRlclN1cHBvcnQ7CiAgICAgU3Vw
cG9ydENoZWNrRnVuY3Rpb24gZmlsdGVyU3VwcG9ydDsKK307CiAKLSAgICBHTHVpbnQgY29tcHV0
ZVJvd1BpdGNoKEdMZW51bSBmb3JtYXRUeXBlLCBHTHNpemVpIHdpZHRoLCBHTGludCBhbGlnbm1l
bnQsIEdMaW50IHJvd0xlbmd0aCkgY29uc3Q7Ci0gICAgR0x1aW50IGNvbXB1dGVEZXB0aFBpdGNo
KEdMZW51bSBmb3JtYXRUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYWxpZ25tZW50LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCByb3dMZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGltYWdlSGVpZ2h0KSBjb25zdDsKLSAgICBHTHVpbnQgY29tcHV0ZUJsb2Nr
U2l6ZShHTGVudW0gZm9ybWF0VHlwZSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpIGNv
bnN0OwotICAgIEdMdWludCBjb21wdXRlU2tpcFBpeGVscyhHTGludCByb3dQaXRjaCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgc2tpcEltYWdlcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgc2tpcFJvd3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHNraXBQaXhlbHMpIGNvbnN0OworLy8gQSAiRm9ybWF0IiBpcyBlaXRoZXIgYSBzaXplZCBmb3Jt
YXQsIG9yIGFuIHt1bnNpemVkIGZvcm1hdCwgdHlwZX0gY29tYmluYXRpb24uCitzdHJ1Y3QgRm9y
bWF0Cit7CisgICAgLy8gU2l6ZWQgdHlwZXMgb25seS4KKyAgICBleHBsaWNpdCBGb3JtYXQoR0xl
bnVtIGludGVybmFsRm9ybWF0KTsKKyAgICBleHBsaWNpdCBGb3JtYXQoY29uc3QgSW50ZXJuYWxG
b3JtYXQgJmludGVybmFsRm9ybWF0KTsKKworICAgIC8vIFNpemVkIG9yIHVuc2l6ZWQgdHlwZXMu
CisgICAgRm9ybWF0KEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVt
IHR5cGUpOworCisgICAgRm9ybWF0KGNvbnN0IEZvcm1hdCAmb3RoZXIpOworICAgIEZvcm1hdCAm
b3BlcmF0b3I9KGNvbnN0IEZvcm1hdCAmb3RoZXIpOworCisgICAgR0xlbnVtIGFzU2l6ZWQoKSBj
b25zdDsKKyAgICBib29sIHZhbGlkKCkgY29uc3Q7CisKKyAgICBzdGF0aWMgRm9ybWF0IEludmFs
aWQoKTsKKyAgICBzdGF0aWMgYm9vbCBTYW1lU2l6ZWQoY29uc3QgRm9ybWF0ICZhLCBjb25zdCBG
b3JtYXQgJmIpOworCisgICAgLy8gVGhpcyBpcyB0aGUgc2l6ZWQgaW5mby4KKyAgICBjb25zdCBJ
bnRlcm5hbEZvcm1hdCAqaW5mbzsKKyAgICBHTGVudW0gZm9ybWF0OworICAgIEdMZW51bSB0eXBl
OworICAgIGJvb2wgc2l6ZWQ7CiB9OworCiBjb25zdCBJbnRlcm5hbEZvcm1hdCAmR2V0SW50ZXJu
YWxGb3JtYXRJbmZvKEdMZW51bSBpbnRlcm5hbEZvcm1hdCk7CiAKIEdMZW51bSBHZXRTaXplZElu
dGVybmFsRm9ybWF0KEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xlbnVtIHR5cGUpOwpAQCAtMjEy
LDcgKzI3Niw3IEBACiAgICAgVkVSVEVYX0ZPUk1BVF9VSU5UMjEwX0lOVCwKIH07CiAKLXR5cGVk
ZWYgc3RkOjp2ZWN0b3I8Z2w6OlZlcnRleEZvcm1hdFR5cGU+IElucHV0TGF5b3V0OwordHlwZWRl
ZiBzdGQ6OnZlY3RvcjxWZXJ0ZXhGb3JtYXRUeXBlPiBJbnB1dExheW91dDsKIAogc3RydWN0IFZl
cnRleEZvcm1hdCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogewpAQCAtMjI5LDYgKzI5MywxMSBAQAog
VmVydGV4Rm9ybWF0VHlwZSBHZXRWZXJ0ZXhGb3JtYXRUeXBlKGNvbnN0IFZlcnRleEF0dHJpYnV0
ZSAmYXR0cmliLCBHTGVudW0gY3VycmVudFZhbHVlVHlwZSk7CiBjb25zdCBWZXJ0ZXhGb3JtYXQg
JkdldFZlcnRleEZvcm1hdEZyb21UeXBlKFZlcnRleEZvcm1hdFR5cGUgdmVydGV4Rm9ybWF0VHlw
ZSk7CiAKKy8vIEltcGxlbWVudGVkIGluIGZvcm1hdF9tYXBfYXV0b2dlbi5jcHAKK2Jvb2wgVmFs
aWRFUzNGb3JtYXQoR0xlbnVtIGZvcm1hdCk7Citib29sIFZhbGlkRVMzVHlwZShHTGVudW0gdHlw
ZSk7Citib29sIFZhbGlkRVMzRm9ybWF0Q29tYmluYXRpb24oR0xlbnVtIGZvcm1hdCwgR0xlbnVt
IHR5cGUsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCk7CisKIH0gIC8vIG5hbWVzcGFjZSBnbAogCiAj
ZW5kaWYgLy8gTElCQU5HTEVfRk9STUFUVVRJTFNfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9nZW5fZm9ybWF0X21hcC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZ2VuX2Zvcm1hdF9tYXAucHkJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2dlbl9mb3Jt
YXRfbWFwLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTg3IEBACisjIS91c3IvYmluL3B5
dGhvbgorIyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisjCisjIGdlbl9mb3JtYXRfbWFwLnB5OgorIyAgQ29kZSBnZW5lcmF0aW9uIGZvciBHTCBm
b3JtYXQgbWFwLiBUaGUgZm9ybWF0IG1hcCBtYXRjaGVzIGJldHdlZW4KKyMgIHtmb3JtYXQsdHlw
ZX0gYW5kIGludGVybmFsIGZvcm1hdC4KKworZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZQoraW1w
b3J0IHN5cworCitzeXMucGF0aC5hcHBlbmQoJ3JlbmRlcmVyJykKK2ltcG9ydCBhbmdsZV9mb3Jt
YXQKKwordGVtcGxhdGVfY3BwID0gIiIiLy8gR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVC4K
Ky8vIEdlbmVyYXRlZCBieSB7c2NyaXB0X25hbWV9IHVzaW5nIGRhdGEgZnJvbSB7ZGF0YV9zb3Vy
Y2VfbmFtZX0uCisvLyBFUzMgZm9ybWF0IGluZm8gZnJvbSB7ZXMzX2RhdGFfc291cmNlX25hbWV9
LgorLy8KKy8vIENvcHlyaWdodCB7Y29weXJpZ2h0X3llYXJ9IFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIGZvcm1hdF9tYXA6CisvLyAgIERldGVybWluaW5n
IHRoZSBzaXplZCBpbnRlcm5hbCBmb3JtYXQgZnJvbSBhIChmb3JtYXQsdHlwZSkgcGFpci4KKy8v
ICAgQWxzbyBjaGVjayBlczMgZm9ybWF0IGNvbWJpbmF0aW9ucyBmb3IgdmFsaWRpdHkuCisKKyNp
bmNsdWRlICJhbmdsZV9nbC5oIgorI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3Bh
Y2UgZ2wKK3t7CisKK0dMZW51bSBHZXRTaXplZEZvcm1hdEludGVybmFsKEdMZW51bSBmb3JtYXQs
IEdMZW51bSB0eXBlKQore3sKKyAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICB7ewore2Zvcm1hdF9j
YXNlc30gICAgICAgIGNhc2UgR0xfTk9ORToKKyAgICAgICAgICAgIHJldHVybiBHTF9OT05FOwor
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICB9fQorCisgICAgcmV0
dXJuIEdMX05PTkU7Cit9fQorCitib29sIFZhbGlkRVMzRm9ybWF0KEdMZW51bSBmb3JtYXQpCit7
eworICAgIHN3aXRjaCAoZm9ybWF0KQorICAgIHt7Cit7ZXMzX2Zvcm1hdF9jYXNlc30gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH19Cit9fQorCitib29sIFZhbGlkRVMzVHlwZShHTGVudW0gdHlwZSkKK3t7
CisgICAgc3dpdGNoICh0eXBlKQorICAgIHt7Cit7ZXMzX3R5cGVfY2FzZXN9ICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9fQorfX0KKworYm9vbCBWYWxpZEVTM0Zvcm1hdENvbWJpbmF0aW9uKEdMZW51bSBm
b3JtYXQsIEdMZW51bSB0eXBlLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQpCit7eworICAgIEFTU0VS
VChWYWxpZEVTM0Zvcm1hdChmb3JtYXQpICYmIFZhbGlkRVMzVHlwZSh0eXBlKSk7CisKKyAgICBz
d2l0Y2ggKGZvcm1hdCkKKyAgICB7ewore2VzM19jb21ib19jYXNlc30gICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgfX0K
KworICAgIHJldHVybiBmYWxzZTsKK319CisKK319ICAvLyBuYW1lc3BhY2UgZ2wKKyIiIgorCit0
ZW1wbGF0ZV9mb3JtYXRfY2FzZSA9ICIiIiAgICAgICAgY2FzZSB7Zm9ybWF0fToKKyAgICAgICAg
ICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAgIHt7Cit7dHlwZV9jYXNlc30gICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
fQorICAgICAgICAgICAgYnJlYWs7CisKKyIiIgorCit0ZW1wbGF0ZV9zaW1wbGVfY2FzZSA9ICIi
IiAgICAgICAgICAgICAgICBjYXNlIHtrZXl9OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
e3Jlc3VsdH07CisiIiIKKwordGVtcGxhdGVfZXMzX2NvbWJvX3R5cGVfY2FzZSA9ICIiIiAgICAg
ICAgICAgICAgICBjYXNlIHt0eXBlfToKKyAgICAgICAgICAgICAgICB7eworICAgICAgICAgICAg
ICAgICAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICB7ewor
e2ludGVybmFsX2Zvcm1hdF9jYXNlc30gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9fQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9fQorIiIiCisKK2RlZiBwYXJzZV90eXBl
X2Nhc2UodHlwZSwgcmVzdWx0KToKKyAgICByZXR1cm4gdGVtcGxhdGVfc2ltcGxlX2Nhc2UuZm9y
bWF0KAorICAgICAgICBrZXkgPSB0eXBlLCByZXN1bHQgPSByZXN1bHQpCisKK2RlZiBwYXJzZV9m
b3JtYXRfY2FzZShmb3JtYXQsIHR5cGVfbWFwKToKKyAgICB0eXBlX2Nhc2VzID0gIiIKKyAgICBm
b3IgdHlwZSwgaW50ZXJuYWxfZm9ybWF0IGluIHNvcnRlZCh0eXBlX21hcC5pdGVyaXRlbXMoKSk6
CisgICAgICAgIHR5cGVfY2FzZXMgKz0gcGFyc2VfdHlwZV9jYXNlKHR5cGUsIGludGVybmFsX2Zv
cm1hdCkKKyAgICByZXR1cm4gdGVtcGxhdGVfZm9ybWF0X2Nhc2UuZm9ybWF0KAorICAgICAgICBm
b3JtYXQgPSBmb3JtYXQsIHR5cGVfY2FzZXMgPSB0eXBlX2Nhc2VzKQorCitpbnB1dF9zY3JpcHQg
PSAnZm9ybWF0X21hcF9kYXRhLmpzb24nCisKK2Zvcm1hdF9tYXAgPSBhbmdsZV9mb3JtYXQubG9h
ZF9qc29uKGlucHV0X3NjcmlwdCkKKworZm9ybWF0X2Nhc2VzID0gIiIKKworZm9yIGZvcm1hdCwg
dHlwZV9tYXAgaW4gc29ydGVkKGZvcm1hdF9tYXAuaXRlcml0ZW1zKCkpOgorICAgIGZvcm1hdF9j
YXNlcyArPSBwYXJzZV9mb3JtYXRfY2FzZShmb3JtYXQsIHR5cGVfbWFwKQorCitjb21ib19kYXRh
X2ZpbGUgPSAnZXMzX2Zvcm1hdF90eXBlX2NvbWJpbmF0aW9ucy5qc29uJworZXMzX2NvbWJvX2Rh
dGEgPSBhbmdsZV9mb3JtYXQubG9hZF9qc29uKGNvbWJvX2RhdGFfZmlsZSkKK2NvbWJvX2RhdGEg
PSBbY29tYm8gZm9yIHN1Ymxpc3QgaW4gZXMzX2NvbWJvX2RhdGEudmFsdWVzKCkgZm9yIGNvbWJv
IGluIHN1Ymxpc3RdCisKK3R5cGVzID0gc2V0KCkKK2Zvcm1hdHMgPSBzZXQoKQorY29tYm9zID0g
e30KKworZm9yIGludGVybmFsX2Zvcm1hdCwgZm9ybWF0LCB0eXBlIGluIGNvbWJvX2RhdGE6Cisg
ICAgdHlwZXMudXBkYXRlKFt0eXBlXSkKKyAgICBmb3JtYXRzLnVwZGF0ZShbZm9ybWF0XSkKKyAg
ICBpZiBmb3JtYXQgbm90IGluIGNvbWJvczoKKyAgICAgICAgY29tYm9zW2Zvcm1hdF0gPSB7fQor
ICAgIGlmIHR5cGUgbm90IGluIGNvbWJvc1tmb3JtYXRdOgorICAgICAgICBjb21ib3NbZm9ybWF0
XVt0eXBlXSA9IFtpbnRlcm5hbF9mb3JtYXRdCisgICAgZWxzZToKKyAgICAgICAgY29tYm9zW2Zv
cm1hdF1bdHlwZV0gKz0gW2ludGVybmFsX2Zvcm1hdF0KKworZXMzX2Zvcm1hdF9jYXNlcyA9ICIi
CisKK2ZvciBmb3JtYXQgaW4gc29ydGVkKGZvcm1hdHMpOgorICAgIGVzM19mb3JtYXRfY2FzZXMg
Kz0gIiAgICAgICAgY2FzZSAiICsgZm9ybWF0ICsgIjpcbiIKKworZXMzX3R5cGVfY2FzZXMgPSAi
IgorCitmb3IgdHlwZSBpbiBzb3J0ZWQodHlwZXMpOgorICAgIGVzM190eXBlX2Nhc2VzICs9ICIg
ICAgICAgIGNhc2UgIiArIHR5cGUgKyAiOlxuIgorCitlczNfY29tYm9fY2FzZXMgPSAiIgorCitm
b3IgZm9ybWF0LCB0eXBlX2NvbWJvcyBpbiBjb21ib3MuaXRlcml0ZW1zKCk6CisgICAgdGhpc190
eXBlX2Nhc2VzID0gIiIKKyAgICBmb3IgdHlwZSwgY29tYm9zIGluIHR5cGVfY29tYm9zLml0ZXJp
dGVtcygpOgorICAgICAgICBpbnRlcm5hbF9mb3JtYXRfY2FzZXMgPSAiIgorICAgICAgICBmb3Ig
aW50ZXJuYWxfZm9ybWF0IGluIGNvbWJvczoKKyAgICAgICAgICAgIGludGVybmFsX2Zvcm1hdF9j
YXNlcyArPSAiICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiICsgaW50ZXJuYWxfZm9ybWF0
ICsgIjpcbiIKKworICAgICAgICB0aGlzX3R5cGVfY2FzZXMgKz0gdGVtcGxhdGVfZXMzX2NvbWJv
X3R5cGVfY2FzZS5mb3JtYXQoCisgICAgICAgICAgICB0eXBlID0gdHlwZSwgaW50ZXJuYWxfZm9y
bWF0X2Nhc2VzID0gaW50ZXJuYWxfZm9ybWF0X2Nhc2VzKQorCisgICAgZXMzX2NvbWJvX2Nhc2Vz
ICs9IHRlbXBsYXRlX2Zvcm1hdF9jYXNlLmZvcm1hdCgKKyAgICAgICAgZm9ybWF0ID0gZm9ybWF0
LCB0eXBlX2Nhc2VzID0gdGhpc190eXBlX2Nhc2VzKQorCit3aXRoIG9wZW4oJ2Zvcm1hdF9tYXBf
YXV0b2dlbi5jcHAnLCAnd3QnKSBhcyBvdXRfZmlsZToKKyAgICBvdXRwdXRfY3BwID0gdGVtcGxh
dGVfY3BwLmZvcm1hdCgKKyAgICAgICAgc2NyaXB0X25hbWUgPSBzeXMuYXJndlswXSwKKyAgICAg
ICAgZGF0YV9zb3VyY2VfbmFtZSA9IGlucHV0X3NjcmlwdCwKKyAgICAgICAgZXMzX2RhdGFfc291
cmNlX25hbWUgPSBjb21ib19kYXRhX2ZpbGUsCisgICAgICAgIGNvcHlyaWdodF95ZWFyID0gZGF0
ZS50b2RheSgpLnllYXIsCisgICAgICAgIGZvcm1hdF9jYXNlcyA9IGZvcm1hdF9jYXNlcywKKyAg
ICAgICAgZXMzX2Zvcm1hdF9jYXNlcyA9IGVzM19mb3JtYXRfY2FzZXMsCisgICAgICAgIGVzM190
eXBlX2Nhc2VzID0gZXMzX3R5cGVfY2FzZXMsCisgICAgICAgIGVzM19jb21ib19jYXNlcyA9IGVz
M19jb21ib19jYXNlcykKKyAgICBvdXRfZmlsZS53cml0ZShvdXRwdXRfY3BwKQorICAgIG91dF9m
aWxlLmNsb3NlKCkKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9x
dWVyeWNvbnZlcnNpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcXVlcnljb252ZXJzaW9ucy5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9xdWVyeWNvbnZlcnNpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODYsMTcgKzg2LDYgQEAKIAogfSAgLy8gYW5vbnltb3VzIG5h
bWVzcGFjZQogCi10ZW1wbGF0ZSA8PgotR0xlbnVtIEdMVHlwZVRvR0xlbnVtPEdMaW50Pjo6dmFs
dWUgPSBHTF9JTlQ7Ci10ZW1wbGF0ZSA8PgotR0xlbnVtIEdMVHlwZVRvR0xlbnVtPEdMdWludD46
OnZhbHVlID0gR0xfVU5TSUdORURfSU5UOwotdGVtcGxhdGUgPD4KLUdMZW51bSBHTFR5cGVUb0dM
ZW51bTxHTGJvb2xlYW4+Ojp2YWx1ZSA9IEdMX0JPT0w7Ci10ZW1wbGF0ZSA8PgotR0xlbnVtIEdM
VHlwZVRvR0xlbnVtPEdMaW50NjQ+Ojp2YWx1ZSA9IEdMX0lOVF82NF9BTkdMRVg7Ci10ZW1wbGF0
ZSA8PgotR0xlbnVtIEdMVHlwZVRvR0xlbnVtPEdMZmxvYXQ+Ojp2YWx1ZSA9IEdMX0ZMT0FUOwot
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUXVlcnlUPgogdm9pZCBDYXN0U3RhdGVWYWx1ZXMoQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIG5hdGl2ZVR5cGUsIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBudW1QYXJhbXMsIFF1ZXJ5VCAqb3V0UGFyYW1zKQpAQCAt
MTU0LDQgKzE0Myw3NyBAQAogdGVtcGxhdGUgdm9pZCBDYXN0U3RhdGVWYWx1ZXM8R0xmbG9hdD4o
Q29udGV4dCAqLCBHTGVudW0sIEdMZW51bSwgdW5zaWduZWQgaW50LCBHTGZsb2F0ICopOwogdGVt
cGxhdGUgdm9pZCBDYXN0U3RhdGVWYWx1ZXM8R0xpbnQ2ND4oQ29udGV4dCAqLCBHTGVudW0sIEdM
ZW51bSwgdW5zaWduZWQgaW50LCBHTGludDY0ICopOwogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUXVl
cnlUPgordm9pZCBDYXN0SW5kZXhlZFN0YXRlVmFsdWVzKENvbnRleHQgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG5hdGl2ZVR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
bnVtUGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5VCAqb3V0UGFyYW1z
KQoreworICAgIGlmIChuYXRpdmVUeXBlID09IEdMX0lOVCkKKyAgICB7CisgICAgICAgIHN0ZDo6
dmVjdG9yPEdMaW50PiBpbnRQYXJhbXMobnVtUGFyYW1zLCAwKTsKKyAgICAgICAgY29udGV4dC0+
Z2V0SW50ZWdlcmlfdihwbmFtZSwgaW5kZXgsIGludFBhcmFtcy5kYXRhKCkpOworCisgICAgICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1zOyArK2kpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG91dFBhcmFtc1tpXSA9IENhc3RTdGF0ZVZhbHVlPFF1ZXJ5VD4ocG5hbWUs
IGludFBhcmFtc1tpXSk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAobmF0aXZlVHlw
ZSA9PSBHTF9CT09MKQorICAgIHsKKyAgICAgICAgc3RkOjp2ZWN0b3I8R0xib29sZWFuPiBib29s
UGFyYW1zKG51bVBhcmFtcywgR0xfRkFMU0UpOworICAgICAgICBjb250ZXh0LT5nZXRCb29sZWFu
aV92KHBuYW1lLCBpbmRleCwgYm9vbFBhcmFtcy5kYXRhKCkpOworCisgICAgICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1zOyArK2kpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG91dFBhcmFtc1tpXSA9CisgICAgICAgICAgICAgICAgKGJvb2xQYXJhbXNbaV0gPT0gR0xf
RkFMU0UgPyBzdGF0aWNfY2FzdDxRdWVyeVQ+KDApIDogc3RhdGljX2Nhc3Q8UXVlcnlUPigxKSk7
CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAobmF0aXZlVHlwZSA9PSBHTF9JTlRfNjRf
QU5HTEVYKQorICAgIHsKKyAgICAgICAgc3RkOjp2ZWN0b3I8R0xpbnQ2ND4gaW50NjRQYXJhbXMo
bnVtUGFyYW1zLCAwKTsKKyAgICAgICAgY29udGV4dC0+Z2V0SW50ZWdlcjY0aV92KHBuYW1lLCBp
bmRleCwgaW50NjRQYXJhbXMuZGF0YSgpKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8IG51bVBhcmFtczsgKytpKQorICAgICAgICB7CisgICAgICAgICAgICBvdXRQYXJh
bXNbaV0gPSBDYXN0U3RhdGVWYWx1ZTxRdWVyeVQ+KHBuYW1lLCBpbnQ2NFBhcmFtc1tpXSk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgICAgICBVTlJFQUNIQUJMRSgpOwogfQorCit0
ZW1wbGF0ZSB2b2lkIENhc3RJbmRleGVkU3RhdGVWYWx1ZXM8R0xib29sZWFuPihDb250ZXh0ICos
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
aW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGJvb2xlYW4gKik7Cit0ZW1wbGF0ZSB2b2lkIENhc3RJbmRleGVkU3RhdGVWYWx1ZXM8
R0xpbnQ+KENvbnRleHQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCAqKTsKK3RlbXBsYXRlIHZvaWQgQ2FzdEluZGV4ZWRTdGF0ZVZhbHVlczxHTHVpbnQ+
KENvbnRleHQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCAqKTsKK3RlbXBsYXRlIHZvaWQgQ2FzdEluZGV4ZWRTdGF0ZVZhbHVlczxHTGZsb2F0
PihDb250ZXh0ICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZmxvYXQgKik7Cit0ZW1wbGF0ZSB2b2lkIENhc3RJbmRleGVkU3RhdGVWYWx1ZXM8
R0xpbnQ2ND4oQ29udGV4dCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludDY0ICopOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3F1ZXJ5Y29udmVyc2lvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcXVlcnljb252ZXJzaW9ucy5oCShyZXZpc2lv
biAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcXVlcnlj
b252ZXJzaW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxNCArMjMsNDggQEAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBHTFR5cGU+CiBzdHJ1Y3QgR0xUeXBlVG9HTGVudW0KIHsKLSAgICBzdGF0aWMg
R0xlbnVtIHZhbHVlOworICAgIC8vIHN0YXRpYyBjb25zdGV4cHIgR0xlbnVtIHZhbHVlOwogfTsK
IAordGVtcGxhdGUgPD4KK3N0cnVjdCBHTFR5cGVUb0dMZW51bTxHTGludD4KK3sKKyAgICBzdGF0
aWMgY29uc3RleHByIEdMZW51bSB2YWx1ZSA9IEdMX0lOVDsKK307Cit0ZW1wbGF0ZSA8Pgorc3Ry
dWN0IEdMVHlwZVRvR0xlbnVtPEdMdWludD4KK3sKKyAgICBzdGF0aWMgY29uc3RleHByIEdMZW51
bSB2YWx1ZSA9IEdMX1VOU0lHTkVEX0lOVDsKK307Cit0ZW1wbGF0ZSA8Pgorc3RydWN0IEdMVHlw
ZVRvR0xlbnVtPEdMYm9vbGVhbj4KK3sKKyAgICBzdGF0aWMgY29uc3RleHByIEdMZW51bSB2YWx1
ZSA9IEdMX0JPT0w7Cit9OwordGVtcGxhdGUgPD4KK3N0cnVjdCBHTFR5cGVUb0dMZW51bTxHTGlu
dDY0PgoreworICAgIHN0YXRpYyBjb25zdGV4cHIgR0xlbnVtIHZhbHVlID0gR0xfSU5UXzY0X0FO
R0xFWDsKK307Cit0ZW1wbGF0ZSA8Pgorc3RydWN0IEdMVHlwZVRvR0xlbnVtPEdMZmxvYXQ+Cit7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBHTGVudW0gdmFsdWUgPSBHTF9GTE9BVDsKK307CisKIC8v
IFRoZSBHTCBzdGF0ZSBxdWVyeSBBUEkgdHlwZXMgYXJlOiBib29sLCBpbnQsIHVpbnQsIGZsb2F0
LCBpbnQ2NAogdGVtcGxhdGUgPHR5cGVuYW1lIFF1ZXJ5VD4KIHZvaWQgQ2FzdFN0YXRlVmFsdWVz
KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBuYXRpdmVUeXBlLCBHTGVudW0gcG5hbWUsCiAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnVtUGFyYW1zLCBRdWVyeVQgKm91dFBhcmFt
cyk7CiAKKy8vIFRoZSBHTCBzdGF0ZSBxdWVyeSBBUEkgdHlwZXMgYXJlOiBib29sLCBpbnQsIHVp
bnQsIGZsb2F0LCBpbnQ2NAordGVtcGxhdGUgPHR5cGVuYW1lIFF1ZXJ5VD4KK3ZvaWQgQ2FzdElu
ZGV4ZWRTdGF0ZVZhbHVlcyhDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBuYXRpdmVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG51bVBhcmFtcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBRdWVyeVQgKm91dFBhcmFtcyk7CiB9CiAKICNlbmRpZiAg
Ly8gTElCQU5HTEVfUVVFUllfQ09OVkVSU0lPTlNfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9xdWVyeXV0aWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcXVlcnl1dGlscy5jcHAJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3F1ZXJ5dXRpbHMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzYwIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAy
MDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gcXVl
cnl1dGlscy5jcHA6IFV0aWxpdGllcyBmb3IgcXVlcnlpbmcgdmFsdWVzIGZyb20gR0wgb2JqZWN0
cworCisjaW5jbHVkZSAibGliQU5HTEUvcXVlcnl1dGlscy5oIgorCisjaW5jbHVkZSAiY29tbW9u
L3V0aWxpdGllcy5oIgorCisjaW5jbHVkZSAibGliQU5HTEUvQnVmZmVyLmgiCisjaW5jbHVkZSAi
bGliQU5HTEUvRnJhbWVidWZmZXIuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9Qcm9ncmFtLmgiCisj
aW5jbHVkZSAibGliQU5HTEUvUmVuZGVyYnVmZmVyLmgiCisjaW5jbHVkZSAibGliQU5HTEUvU2Ft
cGxlci5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1NoYWRlci5oIgorI2luY2x1ZGUgImxpYkFOR0xF
L1RleHR1cmUuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9Vbmlmb3JtLmgiCisjaW5jbHVkZSAibGli
QU5HTEUvVmVydGV4QXR0cmlidXRlLmgiCisKK25hbWVzcGFjZSBnbAoreworCituYW1lc3BhY2UK
K3sKK3RlbXBsYXRlIDx0eXBlbmFtZSBQYXJhbVR5cGU+Cit2b2lkIFF1ZXJ5VGV4UGFyYW1ldGVy
QmFzZShjb25zdCBUZXh0dXJlICp0ZXh0dXJlLCBHTGVudW0gcG5hbWUsIFBhcmFtVHlwZSAqcGFy
YW1zKQoreworICAgIEFTU0VSVCh0ZXh0dXJlICE9IG51bGxwdHIpOworCisgICAgc3dpdGNoIChw
bmFtZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQUdfRklMVEVSOgorICAgICAg
ICAgICAgKnBhcmFtcyA9IENvbnZlcnRGcm9tR0xlbnVtPFBhcmFtVHlwZT4odGV4dHVyZS0+Z2V0
TWFnRmlsdGVyKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVS
RV9NSU5fRklMVEVSOgorICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRGcm9tR0xlbnVtPFBh
cmFtVHlwZT4odGV4dHVyZS0+Z2V0TWluRmlsdGVyKCkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1M6CisgICAgICAgICAgICAqcGFyYW1zID0gQ29u
dmVydEZyb21HTGVudW08UGFyYW1UeXBlPih0ZXh0dXJlLT5nZXRXcmFwUygpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9UOgorICAgICAgICAgICAg
KnBhcmFtcyA9IENvbnZlcnRGcm9tR0xlbnVtPFBhcmFtVHlwZT4odGV4dHVyZS0+Z2V0V3JhcFQo
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX1dSQVBfUjoK
KyAgICAgICAgICAgICpwYXJhbXMgPSBDb252ZXJ0RnJvbUdMZW51bTxQYXJhbVR5cGU+KHRleHR1
cmUtPmdldFdyYXBSKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV9JTU1VVEFCTEVfRk9STUFUOgorICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRGcm9t
R0xib29sZWFuPFBhcmFtVHlwZT4odGV4dHVyZS0+Z2V0SW1tdXRhYmxlRm9ybWF0KCkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9JTU1VVEFCTEVfTEVWRUxT
OgorICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRGcm9tR0x1aW50PFBhcmFtVHlwZT4odGV4
dHVyZS0+Z2V0SW1tdXRhYmxlTGV2ZWxzKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgR0xfVEVYVFVSRV9VU0FHRV9BTkdMRToKKyAgICAgICAgICAgICpwYXJhbXMgPSBDb252
ZXJ0RnJvbUdMZW51bTxQYXJhbVR5cGU+KHRleHR1cmUtPmdldFVzYWdlKCkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6Cisg
ICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTGZsb2F0PFBhcmFtVHlwZT4odGV4dHVy
ZS0+Z2V0TWF4QW5pc290cm9weSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEdMX1RFWFRVUkVfU1dJWlpMRV9SOgorICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRGcm9t
R0xlbnVtPFBhcmFtVHlwZT4odGV4dHVyZS0+Z2V0U3dpenpsZVJlZCgpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfU1dJWlpMRV9HOgorICAgICAgICAgICAg
KnBhcmFtcyA9IENvbnZlcnRGcm9tR0xlbnVtPFBhcmFtVHlwZT4odGV4dHVyZS0+Z2V0U3dpenps
ZUdyZWVuKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9T
V0laWkxFX0I6CisgICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTGVudW08UGFyYW1U
eXBlPih0ZXh0dXJlLT5nZXRTd2l6emxlQmx1ZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEdMX1RFWFRVUkVfU1dJWlpMRV9BOgorICAgICAgICAgICAgKnBhcmFtcyA9IENv
bnZlcnRGcm9tR0xlbnVtPFBhcmFtVHlwZT4odGV4dHVyZS0+Z2V0U3dpenpsZUFscGhhKCkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9CQVNFX0xFVkVMOgor
ICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRGcm9tR0x1aW50PFBhcmFtVHlwZT4odGV4dHVy
ZS0+Z2V0QmFzZUxldmVsKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV9NQVhfTEVWRUw6CisgICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTHVp
bnQ8UGFyYW1UeXBlPih0ZXh0dXJlLT5nZXRNYXhMZXZlbCgpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUlOX0xPRDoKKyAgICAgICAgICAgICpwYXJhbXMg
PSBDb252ZXJ0RnJvbUdMZmxvYXQ8UGFyYW1UeXBlPih0ZXh0dXJlLT5nZXRTYW1wbGVyU3RhdGUo
KS5taW5Mb2QpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9N
QVhfTE9EOgorICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRGcm9tR0xmbG9hdDxQYXJhbVR5
cGU+KHRleHR1cmUtPmdldFNhbXBsZXJTdGF0ZSgpLm1heExvZCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfTU9ERToKKyAgICAgICAgICAgICpw
YXJhbXMgPSBDb252ZXJ0RnJvbUdMZW51bTxQYXJhbVR5cGU+KHRleHR1cmUtPmdldENvbXBhcmVN
b2RlKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DT01Q
QVJFX0ZVTkM6CisgICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTGVudW08UGFyYW1U
eXBlPih0ZXh0dXJlLT5nZXRDb21wYXJlRnVuYygpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgIH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFBhcmFtVHlwZT4KK3ZvaWQgU2V0
VGV4UGFyYW1ldGVyQmFzZShUZXh0dXJlICp0ZXh0dXJlLCBHTGVudW0gcG5hbWUsIGNvbnN0IFBh
cmFtVHlwZSAqcGFyYW1zKQoreworICAgIEFTU0VSVCh0ZXh0dXJlICE9IG51bGxwdHIpOworCisg
ICAgc3dpdGNoIChwbmFtZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1M6
CisgICAgICAgICAgICB0ZXh0dXJlLT5zZXRXcmFwUyhDb252ZXJ0VG9HTGVudW0ocGFyYW1zWzBd
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX1dSQVBfVDoK
KyAgICAgICAgICAgIHRleHR1cmUtPnNldFdyYXBUKENvbnZlcnRUb0dMZW51bShwYXJhbXNbMF0p
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9SOgor
ICAgICAgICAgICAgdGV4dHVyZS0+c2V0V3JhcFIoQ29udmVydFRvR0xlbnVtKHBhcmFtc1swXSkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NSU5fRklMVEVS
OgorICAgICAgICAgICAgdGV4dHVyZS0+c2V0TWluRmlsdGVyKENvbnZlcnRUb0dMZW51bShwYXJh
bXNbMF0pKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUFH
X0ZJTFRFUjoKKyAgICAgICAgICAgIHRleHR1cmUtPnNldE1hZ0ZpbHRlcihDb252ZXJ0VG9HTGVu
dW0ocGFyYW1zWzBdKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhU
VVJFX1VTQUdFX0FOR0xFOgorICAgICAgICAgICAgdGV4dHVyZS0+c2V0VXNhZ2UoQ29udmVydFRv
R0xlbnVtKHBhcmFtc1swXSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6CisgICAgICAgICAgICB0ZXh0dXJlLT5zZXRNYXhB
bmlzb3Ryb3B5KENvbnZlcnRUb0dMZmxvYXQocGFyYW1zWzBdKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfTU9ERToKKyAgICAgICAgICAgIHRl
eHR1cmUtPnNldENvbXBhcmVNb2RlKENvbnZlcnRUb0dMZW51bShwYXJhbXNbMF0pKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ09NUEFSRV9GVU5DOgorICAg
ICAgICAgICAgdGV4dHVyZS0+c2V0Q29tcGFyZUZ1bmMoQ29udmVydFRvR0xlbnVtKHBhcmFtc1sw
XSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9TV0laWkxF
X1I6CisgICAgICAgICAgICB0ZXh0dXJlLT5zZXRTd2l6emxlUmVkKENvbnZlcnRUb0dMZW51bShw
YXJhbXNbMF0pKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1RFWFRVUkVf
U1dJWlpMRV9HOgorICAgICAgICAgICAgdGV4dHVyZS0+c2V0U3dpenpsZUdyZWVuKENvbnZlcnRU
b0dMZW51bShwYXJhbXNbMF0pKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdM
X1RFWFRVUkVfU1dJWlpMRV9COgorICAgICAgICAgICAgdGV4dHVyZS0+c2V0U3dpenpsZUJsdWUo
Q29udmVydFRvR0xlbnVtKHBhcmFtc1swXSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgR0xfVEVYVFVSRV9TV0laWkxFX0E6CisgICAgICAgICAgICB0ZXh0dXJlLT5zZXRTd2l6
emxlQWxwaGEoQ29udmVydFRvR0xlbnVtKHBhcmFtc1swXSkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9CQVNFX0xFVkVMOgorICAgICAgICAgICAgdGV4dHVy
ZS0+c2V0QmFzZUxldmVsKENvbnZlcnRUb0dMdWludChwYXJhbXNbMF0pKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUFYX0xFVkVMOgorICAgICAgICAgICAg
dGV4dHVyZS0+c2V0TWF4TGV2ZWwoQ29udmVydFRvR0x1aW50KHBhcmFtc1swXSkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NSU5fTE9EOgorICAgICAgICAg
ICAgdGV4dHVyZS0+c2V0TWluTG9kKENvbnZlcnRUb0dMZmxvYXQocGFyYW1zWzBdKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9MT0Q6CisgICAgICAg
ICAgICB0ZXh0dXJlLT5zZXRNYXhMb2QoQ29udmVydFRvR0xmbG9hdChwYXJhbXNbMF0pKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IFBhcmFtVHlwZT4KK3ZvaWQgUXVlcnlTYW1wbGVyUGFyYW1ldGVyQmFzZShjb25zdCBTYW1wbGVy
ICpzYW1wbGVyLCBHTGVudW0gcG5hbWUsIFBhcmFtVHlwZSAqcGFyYW1zKQoreworICAgIHN3aXRj
aCAocG5hbWUpCisgICAgeworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUjoKKyAg
ICAgICAgICAgICpwYXJhbXMgPSBDb252ZXJ0RnJvbUdMZW51bTxQYXJhbVR5cGU+KHNhbXBsZXIt
PmdldE1pbkZpbHRlcigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1RF
WFRVUkVfTUFHX0ZJTFRFUjoKKyAgICAgICAgICAgICpwYXJhbXMgPSBDb252ZXJ0RnJvbUdMZW51
bTxQYXJhbVR5cGU+KHNhbXBsZXItPmdldE1hZ0ZpbHRlcigpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9TOgorICAgICAgICAgICAgKnBhcmFtcyA9
IENvbnZlcnRGcm9tR0xlbnVtPFBhcmFtVHlwZT4oc2FtcGxlci0+Z2V0V3JhcFMoKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX1dSQVBfVDoKKyAgICAgICAg
ICAgICpwYXJhbXMgPSBDb252ZXJ0RnJvbUdMZW51bTxQYXJhbVR5cGU+KHNhbXBsZXItPmdldFdy
YXBUKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQ
X1I6CisgICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTGVudW08UGFyYW1UeXBlPihz
YW1wbGVyLT5nZXRXcmFwUigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdM
X1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOgorICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZl
cnRGcm9tR0xmbG9hdDxQYXJhbVR5cGU+KHNhbXBsZXItPmdldE1heEFuaXNvdHJvcHkoKSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX01JTl9MT0Q6CisgICAg
ICAgICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTGZsb2F0PFBhcmFtVHlwZT4oc2FtcGxlci0+
Z2V0TWluTG9kKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVS
RV9NQVhfTE9EOgorICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRGcm9tR0xmbG9hdDxQYXJh
bVR5cGU+KHNhbXBsZXItPmdldE1heExvZCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEdMX1RFWFRVUkVfQ09NUEFSRV9NT0RFOgorICAgICAgICAgICAgKnBhcmFtcyA9IENv
bnZlcnRGcm9tR0xlbnVtPFBhcmFtVHlwZT4oc2FtcGxlci0+Z2V0Q29tcGFyZU1vZGUoKSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQzoK
KyAgICAgICAgICAgICpwYXJhbXMgPSBDb252ZXJ0RnJvbUdMZW51bTxQYXJhbVR5cGU+KHNhbXBs
ZXItPmdldENvbXBhcmVGdW5jKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
fQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUGFyYW1UeXBlPgordm9pZCBTZXRTYW1wbGVyUGFy
YW1ldGVyQmFzZShTYW1wbGVyICpzYW1wbGVyLCBHTGVudW0gcG5hbWUsIGNvbnN0IFBhcmFtVHlw
ZSAqcGFyYW1zKQoreworICAgIHN3aXRjaCAocG5hbWUpCisgICAgeworICAgICAgICBjYXNlIEdM
X1RFWFRVUkVfV1JBUF9TOgorICAgICAgICAgICAgc2FtcGxlci0+c2V0V3JhcFMoQ29udmVydFRv
R0xlbnVtKHBhcmFtc1swXSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV9XUkFQX1Q6CisgICAgICAgICAgICBzYW1wbGVyLT5zZXRXcmFwVChDb252ZXJ0VG9H
TGVudW0ocGFyYW1zWzBdKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9U
RVhUVVJFX1dSQVBfUjoKKyAgICAgICAgICAgIHNhbXBsZXItPnNldFdyYXBSKENvbnZlcnRUb0dM
ZW51bShwYXJhbXNbMF0pKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1RF
WFRVUkVfTUlOX0ZJTFRFUjoKKyAgICAgICAgICAgIHNhbXBsZXItPnNldE1pbkZpbHRlcihDb252
ZXJ0VG9HTGVudW0ocGFyYW1zWzBdKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBHTF9URVhUVVJFX01BR19GSUxURVI6CisgICAgICAgICAgICBzYW1wbGVyLT5zZXRNYWdGaWx0
ZXIoQ29udmVydFRvR0xlbnVtKHBhcmFtc1swXSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6CisgICAgICAgICAgICBzYW1w
bGVyLT5zZXRNYXhBbmlzb3Ryb3B5KENvbnZlcnRUb0dMZmxvYXQocGFyYW1zWzBdKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfTU9ERToKKyAg
ICAgICAgICAgIHNhbXBsZXItPnNldENvbXBhcmVNb2RlKENvbnZlcnRUb0dMZW51bShwYXJhbXNb
MF0pKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ09NUEFS
RV9GVU5DOgorICAgICAgICAgICAgc2FtcGxlci0+c2V0Q29tcGFyZUZ1bmMoQ29udmVydFRvR0xl
bnVtKHBhcmFtc1swXSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV9NSU5fTE9EOgorICAgICAgICAgICAgc2FtcGxlci0+c2V0TWluTG9kKENvbnZlcnRUb0dM
ZmxvYXQocGFyYW1zWzBdKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9U
RVhUVVJFX01BWF9MT0Q6CisgICAgICAgICAgICBzYW1wbGVyLT5zZXRNYXhMb2QoQ29udmVydFRv
R0xmbG9hdChwYXJhbXNbMF0pKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0K
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFBhcmFtVHlwZSwgdHlwZW5hbWUgQ3VycmVudERhdGFU
eXBlPgorUGFyYW1UeXBlIENvbnZlcnRDdXJyZW50VmFsdWUoQ3VycmVudERhdGFUeXBlIGN1cnJl
bnRWYWx1ZSkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UGFyYW1UeXBlPihjdXJyZW50VmFs
dWUpOworfQorCit0ZW1wbGF0ZSA8PgorR0xpbnQgQ29udmVydEN1cnJlbnRWYWx1ZShHTGZsb2F0
IGN1cnJlbnRWYWx1ZSkKK3sKKyAgICByZXR1cm4gaXJvdW5kPEdMaW50PihjdXJyZW50VmFsdWUp
OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUGFyYW1UeXBlLCB0eXBlbmFtZSBDdXJyZW50RGF0
YVR5cGUsIHNpemVfdCBDdXJyZW50VmFsdWVDb3VudD4KK3ZvaWQgUXVlcnlWZXJ0ZXhBdHRyaWJC
YXNlKGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgQ3VycmVudERhdGFUeXBlICgmY3VycmVudFZhbHVlRGF0YSlbQ3VycmVudFZh
bHVlQ291bnRdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1UeXBlICpwYXJhbXMpCit7CisgICAgc3dpdGNo
IChwbmFtZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfQ1VSUkVOVF9WRVJURVhfQVRUUklCOgor
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBDdXJyZW50VmFsdWVDb3VudDsgKytp
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHBhcmFtc1tpXSA9IENvbnZlcnRDdXJy
ZW50VmFsdWU8UGFyYW1UeXBlPihjdXJyZW50VmFsdWVEYXRhW2ldKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlf
RU5BQkxFRDoKKyAgICAgICAgICAgICpwYXJhbXMgPSBDb252ZXJ0RnJvbUdMYm9vbGVhbjxQYXJh
bVR5cGU+KGF0dHJpYi5lbmFibGVkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRToKKyAgICAgICAgICAgICpwYXJhbXMgPSBDb252
ZXJ0RnJvbUdMdWludDxQYXJhbVR5cGU+KGF0dHJpYi5zaXplKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFOgorICAgICAgICAg
ICAgKnBhcmFtcyA9IENvbnZlcnRGcm9tR0x1aW50PFBhcmFtVHlwZT4oYXR0cmliLnN0cmlkZSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZ
X1RZUEU6CisgICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTGVudW08UGFyYW1UeXBl
PihhdHRyaWIudHlwZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9WRVJU
RVhfQVRUUklCX0FSUkFZX05PUk1BTElaRUQ6CisgICAgICAgICAgICAqcGFyYW1zID0gQ29udmVy
dEZyb21HTGJvb2xlYW48UGFyYW1UeXBlPihhdHRyaWIubm9ybWFsaXplZCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5E
SU5HOgorICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRGcm9tR0x1aW50PFBhcmFtVHlwZT4o
YXR0cmliLmJ1ZmZlci5pZCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdM
X1ZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNPUjoKKyAgICAgICAgICAgICpwYXJhbXMgPSBDb252
ZXJ0RnJvbUdMdWludDxQYXJhbVR5cGU+KGF0dHJpYi5kaXZpc29yKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfSU5URUdFUjoKKyAgICAg
ICAgICAgICpwYXJhbXMgPSBDb252ZXJ0RnJvbUdMYm9vbGVhbjxQYXJhbVR5cGU+KGF0dHJpYi5w
dXJlSW50ZWdlcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBQYXJhbVR5cGU+Cit2b2lkIFF1ZXJ5QnVmZmVyUGFyYW1ldGVyQmFz
ZShjb25zdCBCdWZmZXIgKmJ1ZmZlciwgR0xlbnVtIHBuYW1lLCBQYXJhbVR5cGUgKnBhcmFtcykK
K3sKKyAgICBBU1NFUlQoYnVmZmVyICE9IG51bGxwdHIpOworCisgICAgc3dpdGNoIChwbmFtZSkK
KyAgICB7CisgICAgICAgIGNhc2UgR0xfQlVGRkVSX1VTQUdFOgorICAgICAgICAgICAgKnBhcmFt
cyA9IENvbnZlcnRGcm9tR0xlbnVtPFBhcmFtVHlwZT4oYnVmZmVyLT5nZXRVc2FnZSgpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX0JVRkZFUl9TSVpFOgorICAgICAgICAg
ICAgKnBhcmFtcyA9IENvbnZlcnRGcm9tR0xpbnQ2NDxQYXJhbVR5cGU+KGJ1ZmZlci0+Z2V0U2l6
ZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX0JVRkZFUl9BQ0NFU1Nf
RkxBR1M6CisgICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTHVpbnQ8UGFyYW1UeXBl
PihidWZmZXItPmdldEFjY2Vzc0ZsYWdzKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgR0xfQlVGRkVSX0FDQ0VTU19PRVM6CisgICAgICAgICAgICAqcGFyYW1zID0gQ29udmVy
dEZyb21HTGVudW08UGFyYW1UeXBlPihidWZmZXItPmdldEFjY2VzcygpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEdMX0JVRkZFUl9NQVBQRUQ6CisgICAgICAgICAgICAqcGFy
YW1zID0gQ29udmVydEZyb21HTGJvb2xlYW48UGFyYW1UeXBlPihidWZmZXItPmlzTWFwcGVkKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfQlVGRkVSX01BUF9PRkZTRVQ6
CisgICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTGludDY0PFBhcmFtVHlwZT4oYnVm
ZmVyLT5nZXRNYXBPZmZzZXQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBH
TF9CVUZGRVJfTUFQX0xFTkdUSDoKKyAgICAgICAgICAgICpwYXJhbXMgPSBDb252ZXJ0RnJvbUdM
aW50NjQ8UGFyYW1UeXBlPihidWZmZXItPmdldE1hcExlbmd0aCgpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgIH0KK30KKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCit2
b2lkIFF1ZXJ5RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoY29uc3QgRnJhbWVidWZm
ZXIgKmZyYW1lYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBhdHRhY2htZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCAqcGFyYW1zKQoreworICAgIEFTU0VSVChmcmFtZWJ1ZmZlcik7CisK
KyAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmF0dGFjaG1lbnRPYmplY3QgPSBmcmFt
ZWJ1ZmZlci0+Z2V0QXR0YWNobWVudChhdHRhY2htZW50KTsKKyAgICBpZiAoYXR0YWNobWVudE9i
amVjdCA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgLy8gRVMgMi4wLjI1IHNwZWMgcGcgMTI3
IHN0YXRlcyB0aGF0IGlmIHRoZSB2YWx1ZSBvZiBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVD
VF9UWVBFCisgICAgICAgIC8vIGlzIE5PTkUsIHRoZW4gcXVlcnlpbmcgYW55IG90aGVyIHBuYW1l
IHdpbGwgZ2VuZXJhdGUgSU5WQUxJRF9FTlVNLgorCisgICAgICAgIC8vIEVTIDMuMC4yIHNwZWMg
cGcgMjM1IHN0YXRlcyB0aGF0IGlmIHRoZSBhdHRhY2htZW50IHR5cGUgaXMgbm9uZSwKKyAgICAg
ICAgLy8gR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRSB3aWxsIHJldHVybiB6
ZXJvIGFuZCBiZSBhbgorICAgICAgICAvLyBJTlZBTElEX09QRVJBVElPTiBmb3IgYWxsIG90aGVy
IHBuYW1lcworCisgICAgICAgIHN3aXRjaCAocG5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGNhc2UgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRToKKyAgICAgICAgICAg
ICAgICAqcGFyYW1zID0gR0xfTk9ORTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FOgorICAgICAg
ICAgICAgICAgICpwYXJhbXMgPSAwOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
c3dpdGNoIChwbmFtZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfQVRUQUNI
TUVOVF9PQkpFQ1RfVFlQRToKKyAgICAgICAgICAgICpwYXJhbXMgPSBhdHRhY2htZW50T2JqZWN0
LT50eXBlKCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX0ZSQU1FQlVG
RkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUU6CisgICAgICAgICAgICAqcGFyYW1zID0gYXR0YWNo
bWVudE9iamVjdC0+aWQoKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xf
RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMOgorICAgICAgICAgICAgKnBhcmFt
cyA9IGF0dGFjaG1lbnRPYmplY3QtPm1pcExldmVsKCk7CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9G
QUNFOgorICAgICAgICAgICAgKnBhcmFtcyA9IGF0dGFjaG1lbnRPYmplY3QtPmN1YmVNYXBGYWNl
KCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FU
VEFDSE1FTlRfUkVEX1NJWkU6CisgICAgICAgICAgICAqcGFyYW1zID0gYXR0YWNobWVudE9iamVj
dC0+Z2V0UmVkU2l6ZSgpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9G
UkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0dSRUVOX1NJWkU6CisgICAgICAgICAgICAqcGFyYW1zID0g
YXR0YWNobWVudE9iamVjdC0+Z2V0R3JlZW5TaXplKCk7CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQkxVRV9TSVpFOgorICAgICAg
ICAgICAgKnBhcmFtcyA9IGF0dGFjaG1lbnRPYmplY3QtPmdldEJsdWVTaXplKCk7CisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQUxQ
SEFfU0laRToKKyAgICAgICAgICAgICpwYXJhbXMgPSBhdHRhY2htZW50T2JqZWN0LT5nZXRBbHBo
YVNpemUoKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZG
RVJfQVRUQUNITUVOVF9ERVBUSF9TSVpFOgorICAgICAgICAgICAgKnBhcmFtcyA9IGF0dGFjaG1l
bnRPYmplY3QtPmdldERlcHRoU2l6ZSgpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
Y2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1NURU5DSUxfU0laRToKKyAgICAgICAgICAg
ICpwYXJhbXMgPSBhdHRhY2htZW50T2JqZWN0LT5nZXRTdGVuY2lsU2l6ZSgpOworICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTVBP
TkVOVF9UWVBFOgorICAgICAgICAgICAgKnBhcmFtcyA9IGF0dGFjaG1lbnRPYmplY3QtPmdldENv
bXBvbmVudFR5cGUoKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfRlJB
TUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElORzoKKyAgICAgICAgICAgICpwYXJhbXMg
PSBhdHRhY2htZW50T2JqZWN0LT5nZXRDb2xvckVuY29kaW5nKCk7CisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MQVlF
UjoKKyAgICAgICAgICAgICpwYXJhbXMgPSBhdHRhY2htZW50T2JqZWN0LT5sYXllcigpOworICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hB
QkxFKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgUXVlcnlCdWZmZXJQ
YXJhbWV0ZXJpdihjb25zdCBCdWZmZXIgKmJ1ZmZlciwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFy
YW1zKQoreworICAgIFF1ZXJ5QnVmZmVyUGFyYW1ldGVyQmFzZShidWZmZXIsIHBuYW1lLCBwYXJh
bXMpOworfQorCit2b2lkIFF1ZXJ5QnVmZmVyUGFyYW1ldGVyaTY0dihjb25zdCBCdWZmZXIgKmJ1
ZmZlciwgR0xlbnVtIHBuYW1lLCBHTGludDY0ICpwYXJhbXMpCit7CisgICAgUXVlcnlCdWZmZXJQ
YXJhbWV0ZXJCYXNlKGJ1ZmZlciwgcG5hbWUsIHBhcmFtcyk7Cit9CisKK3ZvaWQgUXVlcnlCdWZm
ZXJQb2ludGVydihjb25zdCBCdWZmZXIgKmJ1ZmZlciwgR0xlbnVtIHBuYW1lLCB2b2lkICoqcGFy
YW1zKQoreworICAgIHN3aXRjaCAocG5hbWUpCisgICAgeworICAgICAgICBjYXNlIEdMX0JVRkZF
Ul9NQVBfUE9JTlRFUjoKKyAgICAgICAgICAgICpwYXJhbXMgPSBidWZmZXItPmdldE1hcFBvaW50
ZXIoKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit2b2lkIFF1
ZXJ5UHJvZ3JhbWl2KGNvbnN0IFByb2dyYW0gKnByb2dyYW0sIEdMZW51bSBwbmFtZSwgR0xpbnQg
KnBhcmFtcykKK3sKKyAgICBBU1NFUlQocHJvZ3JhbSAhPSBudWxscHRyKTsKKworICAgIHN3aXRj
aCAocG5hbWUpCisgICAgeworICAgICAgICBjYXNlIEdMX0RFTEVURV9TVEFUVVM6CisgICAgICAg
ICAgICAqcGFyYW1zID0gcHJvZ3JhbS0+aXNGbGFnZ2VkRm9yRGVsZXRpb24oKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBHTF9MSU5LX1NUQVRVUzoKKyAgICAgICAgICAgICpw
YXJhbXMgPSBwcm9ncmFtLT5pc0xpbmtlZCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBjYXNlIEdMX1ZBTElEQVRFX1NUQVRVUzoKKyAgICAgICAgICAgICpwYXJhbXMgPSBwcm9ncmFt
LT5pc1ZhbGlkYXRlZCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIEdMX0lO
Rk9fTE9HX0xFTkdUSDoKKyAgICAgICAgICAgICpwYXJhbXMgPSBwcm9ncmFtLT5nZXRJbmZvTG9n
TGVuZ3RoKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgR0xfQVRUQUNIRURf
U0hBREVSUzoKKyAgICAgICAgICAgICpwYXJhbXMgPSBwcm9ncmFtLT5nZXRBdHRhY2hlZFNoYWRl
cnNDb3VudCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIEdMX0FDVElWRV9B
VFRSSUJVVEVTOgorICAgICAgICAgICAgKnBhcmFtcyA9IHByb2dyYW0tPmdldEFjdGl2ZUF0dHJp
YnV0ZUNvdW50KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgR0xfQUNUSVZF
X0FUVFJJQlVURV9NQVhfTEVOR1RIOgorICAgICAgICAgICAgKnBhcmFtcyA9IHByb2dyYW0tPmdl
dEFjdGl2ZUF0dHJpYnV0ZU1heExlbmd0aCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBjYXNlIEdMX0FDVElWRV9VTklGT1JNUzoKKyAgICAgICAgICAgICpwYXJhbXMgPSBwcm9ncmFt
LT5nZXRBY3RpdmVVbmlmb3JtQ291bnQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
Y2FzZSBHTF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIOgorICAgICAgICAgICAgKnBhcmFtcyA9
IHByb2dyYW0tPmdldEFjdGl2ZVVuaWZvcm1NYXhMZW5ndGgoKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgY2FzZSBHTF9QUk9HUkFNX0JJTkFSWV9MRU5HVEhfT0VTOgorICAgICAgICAg
ICAgKnBhcmFtcyA9IHByb2dyYW0tPmdldEJpbmFyeUxlbmd0aCgpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBjYXNlIEdMX0FDVElWRV9VTklGT1JNX0JMT0NLUzoKKyAgICAgICAgICAg
ICpwYXJhbXMgPSBwcm9ncmFtLT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tDb3VudCgpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIEdMX0FDVElWRV9VTklGT1JNX0JMT0NLX01BWF9O
QU1FX0xFTkdUSDoKKyAgICAgICAgICAgICpwYXJhbXMgPSBwcm9ncmFtLT5nZXRBY3RpdmVVbmlm
b3JtQmxvY2tNYXhMZW5ndGgoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdM
X1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfTU9ERToKKyAgICAgICAgICAgICpwYXJhbXMgPSBw
cm9ncmFtLT5nZXRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUoKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEdMX1RSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HUzoKKyAgICAg
ICAgICAgICpwYXJhbXMgPSBwcm9ncmFtLT5nZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdDb3Vu
dCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURC
QUNLX1ZBUllJTkdfTUFYX0xFTkdUSDoKKyAgICAgICAgICAgICpwYXJhbXMgPSBwcm9ncmFtLT5n
ZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdNYXhMZW5ndGgoKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEdMX1BST0dSQU1fQklOQVJZX1JFVFJJRVZBQkxFX0hJTlQ6CisgICAg
ICAgICAgICAqcGFyYW1zID0gcHJvZ3JhbS0+Z2V0QmluYXJ5UmV0cmlldmFibGVIaW50KCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hB
QkxFKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgUXVlcnlSZW5kZXJi
dWZmZXJpdihjb25zdCBSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlciwgR0xlbnVtIHBuYW1lLCBH
TGludCAqcGFyYW1zKQoreworICAgIEFTU0VSVChyZW5kZXJidWZmZXIgIT0gbnVsbHB0cik7CisK
KyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVJf
V0lEVEg6CisgICAgICAgICAgICAqcGFyYW1zID0gcmVuZGVyYnVmZmVyLT5nZXRXaWR0aCgpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0hFSUdIVDoK
KyAgICAgICAgICAgICpwYXJhbXMgPSByZW5kZXJidWZmZXItPmdldEhlaWdodCgpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1B
VDoKKyAgICAgICAgICAgICpwYXJhbXMgPSByZW5kZXJidWZmZXItPmdldEZvcm1hdCgpLmluZm8t
PmludGVybmFsRm9ybWF0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfUkVO
REVSQlVGRkVSX1JFRF9TSVpFOgorICAgICAgICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+
Z2V0UmVkU2l6ZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfUkVOREVS
QlVGRkVSX0dSRUVOX1NJWkU6CisgICAgICAgICAgICAqcGFyYW1zID0gcmVuZGVyYnVmZmVyLT5n
ZXRHcmVlblNpemUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1JFTkRF
UkJVRkZFUl9CTFVFX1NJWkU6CisgICAgICAgICAgICAqcGFyYW1zID0gcmVuZGVyYnVmZmVyLT5n
ZXRCbHVlU2l6ZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfUkVOREVS
QlVGRkVSX0FMUEhBX1NJWkU6CisgICAgICAgICAgICAqcGFyYW1zID0gcmVuZGVyYnVmZmVyLT5n
ZXRBbHBoYVNpemUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1JFTkRF
UkJVRkZFUl9ERVBUSF9TSVpFOgorICAgICAgICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+
Z2V0RGVwdGhTaXplKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9SRU5E
RVJCVUZGRVJfU1RFTkNJTF9TSVpFOgorICAgICAgICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZl
ci0+Z2V0U3RlbmNpbFNpemUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdM
X1JFTkRFUkJVRkZFUl9TQU1QTEVTX0FOR0xFOgorICAgICAgICAgICAgKnBhcmFtcyA9IHJlbmRl
cmJ1ZmZlci0+Z2V0U2FtcGxlcygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
fQorfQorCit2b2lkIFF1ZXJ5U2hhZGVyaXYoY29uc3QgU2hhZGVyICpzaGFkZXIsIEdMZW51bSBw
bmFtZSwgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBBU1NFUlQoc2hhZGVyICE9IG51bGxwdHIpOwor
CisgICAgc3dpdGNoIChwbmFtZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfU0hBREVSX1RZUEU6
CisgICAgICAgICAgICAqcGFyYW1zID0gc2hhZGVyLT5nZXRUeXBlKCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIGNhc2UgR0xfREVMRVRFX1NUQVRVUzoKKyAgICAgICAgICAgICpwYXJh
bXMgPSBzaGFkZXItPmlzRmxhZ2dlZEZvckRlbGV0aW9uKCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIGNhc2UgR0xfQ09NUElMRV9TVEFUVVM6CisgICAgICAgICAgICAqcGFyYW1zID0g
c2hhZGVyLT5pc0NvbXBpbGVkKCkgPyBHTF9UUlVFIDogR0xfRkFMU0U7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIGNhc2UgR0xfSU5GT19MT0dfTEVOR1RIOgorICAgICAgICAgICAgKnBh
cmFtcyA9IHNoYWRlci0+Z2V0SW5mb0xvZ0xlbmd0aCgpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBjYXNlIEdMX1NIQURFUl9TT1VSQ0VfTEVOR1RIOgorICAgICAgICAgICAgKnBhcmFt
cyA9IHNoYWRlci0+Z2V0U291cmNlTGVuZ3RoKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIGNhc2UgR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRToKKyAgICAg
ICAgICAgICpwYXJhbXMgPSBzaGFkZXItPmdldFRyYW5zbGF0ZWRTb3VyY2VXaXRoRGVidWdJbmZv
TGVuZ3RoKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit2b2lk
IFF1ZXJ5VGV4UGFyYW1ldGVyZnYoY29uc3QgVGV4dHVyZSAqdGV4dHVyZSwgR0xlbnVtIHBuYW1l
LCBHTGZsb2F0ICpwYXJhbXMpCit7CisgICAgUXVlcnlUZXhQYXJhbWV0ZXJCYXNlKHRleHR1cmUs
IHBuYW1lLCBwYXJhbXMpOworfQorCit2b2lkIFF1ZXJ5VGV4UGFyYW1ldGVyaXYoY29uc3QgVGV4
dHVyZSAqdGV4dHVyZSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQoreworICAgIFF1ZXJ5
VGV4UGFyYW1ldGVyQmFzZSh0ZXh0dXJlLCBwbmFtZSwgcGFyYW1zKTsKK30KKwordm9pZCBRdWVy
eVNhbXBsZXJQYXJhbWV0ZXJmdihjb25zdCBTYW1wbGVyICpzYW1wbGVyLCBHTGVudW0gcG5hbWUs
IEdMZmxvYXQgKnBhcmFtcykKK3sKKyAgICBRdWVyeVNhbXBsZXJQYXJhbWV0ZXJCYXNlKHNhbXBs
ZXIsIHBuYW1lLCBwYXJhbXMpOworfQorCit2b2lkIFF1ZXJ5U2FtcGxlclBhcmFtZXRlcml2KGNv
bnN0IFNhbXBsZXIgKnNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKK3sKKyAg
ICBRdWVyeVNhbXBsZXJQYXJhbWV0ZXJCYXNlKHNhbXBsZXIsIHBuYW1lLCBwYXJhbXMpOworfQor
Cit2b2lkIFF1ZXJ5VmVydGV4QXR0cmliZnYoY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVydGV4QXR0cmliQ3VycmVudFZhbHVl
RGF0YSAmY3VycmVudFZhbHVlRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKQoreworICAg
IFF1ZXJ5VmVydGV4QXR0cmliQmFzZShhdHRyaWIsIGN1cnJlbnRWYWx1ZURhdGEuRmxvYXRWYWx1
ZXMsIHBuYW1lLCBwYXJhbXMpOworfQorCit2b2lkIFF1ZXJ5VmVydGV4QXR0cmliaXYoY29uc3Qg
VmVydGV4QXR0cmlidXRlICZhdHRyaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0YSAmY3VycmVudFZhbHVlRGF0YSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgKnBhcmFtcykKK3sKKyAgICBRdWVyeVZlcnRleEF0dHJpYkJhc2UoYXR0cmliLCBjdXJy
ZW50VmFsdWVEYXRhLkZsb2F0VmFsdWVzLCBwbmFtZSwgcGFyYW1zKTsKK30KKwordm9pZCBRdWVy
eVZlcnRleEF0dHJpYlBvaW50ZXJ2KGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBHTGVu
dW0gcG5hbWUsIEdMdm9pZCAqKnBvaW50ZXIpCit7CisgICAgc3dpdGNoIChwbmFtZSkKKyAgICB7
CisgICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9QT0lOVEVSOgorICAgICAgICAg
ICAgKnBvaW50ZXIgPSBjb25zdF9jYXN0PEdMdm9pZCAqPihhdHRyaWIucG9pbnRlcik7CisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBRdWVyeVZlcnRleEF0
dHJpYklpdihjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0YSAmY3VycmVudFZhbHVl
RGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQoreworICAgIFF1ZXJ5VmVydGV4QXR0cmli
QmFzZShhdHRyaWIsIGN1cnJlbnRWYWx1ZURhdGEuSW50VmFsdWVzLCBwbmFtZSwgcGFyYW1zKTsK
K30KKwordm9pZCBRdWVyeVZlcnRleEF0dHJpYkl1aXYoY29uc3QgVmVydGV4QXR0cmlidXRlICZh
dHRyaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJDdXJy
ZW50VmFsdWVEYXRhICZjdXJyZW50VmFsdWVEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJh
bXMpCit7CisgICAgUXVlcnlWZXJ0ZXhBdHRyaWJCYXNlKGF0dHJpYiwgY3VycmVudFZhbHVlRGF0
YS5VbnNpZ25lZEludFZhbHVlcywgcG5hbWUsIHBhcmFtcyk7Cit9CisKK3ZvaWQgUXVlcnlBY3Rp
dmVVbmlmb3JtQmxvY2tpdihjb25zdCBQcm9ncmFtICpwcm9ncmFtLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBjb25zdCBVbmlmb3JtQmxvY2sgJnVuaWZvcm1C
bG9jayA9IHByb2dyYW0tPmdldFVuaWZvcm1CbG9ja0J5SW5kZXgodW5pZm9ybUJsb2NrSW5kZXgp
OworICAgIHN3aXRjaCAocG5hbWUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOSUZPUk1fQkxP
Q0tfQklORElORzoKKyAgICAgICAgICAgICpwYXJhbXMgPSBDb252ZXJ0VG9HTGludChwcm9ncmFt
LT5nZXRVbmlmb3JtQmxvY2tCaW5kaW5nKHVuaWZvcm1CbG9ja0luZGV4KSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9VTklGT1JNX0JMT0NLX0RBVEFfU0laRToKKyAgICAg
ICAgICAgICpwYXJhbXMgPSBDb252ZXJ0VG9HTGludCh1bmlmb3JtQmxvY2suZGF0YVNpemUpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVU5JRk9STV9CTE9DS19OQU1FX0xF
TkdUSDoKKyAgICAgICAgICAgICpwYXJhbXMgPSBDb252ZXJ0VG9HTGludCh1bmlmb3JtQmxvY2su
bmFtZVdpdGhBcnJheUluZGV4KCkuc2l6ZSgpICsgMSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBHTF9VTklGT1JNX0JMT0NLX0FDVElWRV9VTklGT1JNUzoKKyAgICAgICAgICAg
ICpwYXJhbXMgPSBDb252ZXJ0VG9HTGludCh1bmlmb3JtQmxvY2subWVtYmVyVW5pZm9ybUluZGV4
ZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1VOSUZPUk1f
QkxPQ0tfQUNUSVZFX1VOSUZPUk1fSU5ESUNFUzoKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGJs
b2NrTWVtYmVySW5kZXggPSAwOworICAgICAgICAgICAgICAgICBibG9ja01lbWJlckluZGV4IDwg
dW5pZm9ybUJsb2NrLm1lbWJlclVuaWZvcm1JbmRleGVzLnNpemUoKTsgYmxvY2tNZW1iZXJJbmRl
eCsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHBhcmFtc1tibG9ja01lbWJlcklu
ZGV4XSA9CisgICAgICAgICAgICAgICAgICAgIENvbnZlcnRUb0dMaW50KHVuaWZvcm1CbG9jay5t
ZW1iZXJVbmlmb3JtSW5kZXhlc1tibG9ja01lbWJlckluZGV4XSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9VTklGT1JNX0JMT0NLX1JFRkVSRU5D
RURfQllfVkVSVEVYX1NIQURFUjoKKyAgICAgICAgICAgICpwYXJhbXMgPSBDb252ZXJ0VG9HTGlu
dCh1bmlmb3JtQmxvY2sudmVydGV4U3RhdGljVXNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEdMX1VOSUZPUk1fQkxPQ0tfUkVGRVJFTkNFRF9CWV9GUkFHTUVOVF9TSEFERVI6
CisgICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydFRvR0xpbnQodW5pZm9ybUJsb2NrLmZyYWdt
ZW50U3RhdGljVXNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKwor
dm9pZCBRdWVyeUludGVybmFsRm9ybWF0aXYoY29uc3QgVGV4dHVyZUNhcHMgJmZvcm1hdCwgR0xl
bnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMaW50ICpwYXJhbXMpCit7CisgICAgc3dpdGNo
IChwbmFtZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfTlVNX1NBTVBMRV9DT1VOVFM6CisgICAg
ICAgICAgICBpZiAoYnVmU2l6ZSAhPSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICpwYXJhbXMgPSBzdGF0aWNfY2FzdDxHTGludD4oZm9ybWF0LnNhbXBsZUNvdW50cy5zaXplKCkp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9T
QU1QTEVTOgorICAgICAgICB7CisgICAgICAgICAgICBzaXplX3QgcmV0dXJuQ291bnQgICA9IHN0
ZDo6bWluPHNpemVfdD4oYnVmU2l6ZSwgZm9ybWF0LnNhbXBsZUNvdW50cy5zaXplKCkpOworICAg
ICAgICAgICAgYXV0byBzYW1wbGVSZXZlcnNlSXQgPSBmb3JtYXQuc2FtcGxlQ291bnRzLnJiZWdp
bigpOworICAgICAgICAgICAgZm9yIChzaXplX3Qgc2FtcGxlSW5kZXggPSAwOyBzYW1wbGVJbmRl
eCA8IHJldHVybkNvdW50OyArK3NhbXBsZUluZGV4KQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHBhcmFtc1tzYW1wbGVJbmRleF0gPSAqc2FtcGxlUmV2ZXJzZUl0Kys7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisK
K3ZvaWQgU2V0VGV4UGFyYW1ldGVyZihUZXh0dXJlICp0ZXh0dXJlLCBHTGVudW0gcG5hbWUsIEdM
ZmxvYXQgcGFyYW0pCit7CisgICAgU2V0VGV4UGFyYW1ldGVyQmFzZSh0ZXh0dXJlLCBwbmFtZSwg
JnBhcmFtKTsKK30KKwordm9pZCBTZXRUZXhQYXJhbWV0ZXJmdihUZXh0dXJlICp0ZXh0dXJlLCBH
TGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykKK3sKKyAgICBTZXRUZXhQYXJhbWV0
ZXJCYXNlKHRleHR1cmUsIHBuYW1lLCBwYXJhbXMpOworfQorCit2b2lkIFNldFRleFBhcmFtZXRl
cmkoVGV4dHVyZSAqdGV4dHVyZSwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSkKK3sKKyAgICBT
ZXRUZXhQYXJhbWV0ZXJCYXNlKHRleHR1cmUsIHBuYW1lLCAmcGFyYW0pOworfQorCit2b2lkIFNl
dFRleFBhcmFtZXRlcml2KFRleHR1cmUgKnRleHR1cmUsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xp
bnQgKnBhcmFtcykKK3sKKyAgICBTZXRUZXhQYXJhbWV0ZXJCYXNlKHRleHR1cmUsIHBuYW1lLCBw
YXJhbXMpOworfQorCit2b2lkIFNldFNhbXBsZXJQYXJhbWV0ZXJmKFNhbXBsZXIgKnNhbXBsZXIs
IEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSkKK3sKKyAgICBTZXRTYW1wbGVyUGFyYW1ldGVy
QmFzZShzYW1wbGVyLCBwbmFtZSwgJnBhcmFtKTsKK30KKwordm9pZCBTZXRTYW1wbGVyUGFyYW1l
dGVyZnYoU2FtcGxlciAqc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJh
bXMpCit7CisgICAgU2V0U2FtcGxlclBhcmFtZXRlckJhc2Uoc2FtcGxlciwgcG5hbWUsIHBhcmFt
cyk7Cit9CisKK3ZvaWQgU2V0U2FtcGxlclBhcmFtZXRlcmkoU2FtcGxlciAqc2FtcGxlciwgR0xl
bnVtIHBuYW1lLCBHTGludCBwYXJhbSkKK3sKKyAgICBTZXRTYW1wbGVyUGFyYW1ldGVyQmFzZShz
YW1wbGVyLCBwbmFtZSwgJnBhcmFtKTsKK30KKwordm9pZCBTZXRTYW1wbGVyUGFyYW1ldGVyaXYo
U2FtcGxlciAqc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKQorewor
ICAgIFNldFNhbXBsZXJQYXJhbWV0ZXJCYXNlKHNhbXBsZXIsIHBuYW1lLCBwYXJhbXMpOworfQor
fQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3F1ZXJ5dXRpbHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcXVl
cnl1dGlscy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9xdWVyeXV0aWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3OSBAQAorLy8K
Ky8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vCisKKy8vIHF1ZXJ5dXRpbHMuaDogVXRpbGl0aWVzIGZvciBxdWVyeWluZyB2YWx1
ZXMgZnJvbSBHTCBvYmplY3RzCisKKyNpZm5kZWYgTElCQU5HTEVfUVVFUllVVElMU19IXworI2Rl
ZmluZSBMSUJBTkdMRV9RVUVSWVVUSUxTX0hfCisKKyNpbmNsdWRlICJhbmdsZV9nbC5oIgorI2lu
Y2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisKK25hbWVzcGFjZSBnbAoreworY2xhc3MgQnVm
ZmVyOworY2xhc3MgRnJhbWVidWZmZXI7CitjbGFzcyBQcm9ncmFtOworY2xhc3MgUmVuZGVyYnVm
ZmVyOworY2xhc3MgU2FtcGxlcjsKK2NsYXNzIFNoYWRlcjsKK2NsYXNzIFRleHR1cmU7CitzdHJ1
Y3QgVGV4dHVyZUNhcHM7CitzdHJ1Y3QgVW5pZm9ybUJsb2NrOworc3RydWN0IFZlcnRleEF0dHJp
YnV0ZTsKK3N0cnVjdCBWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhOworCit2b2lkIFF1ZXJ5
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoY29uc3QgRnJhbWVidWZmZXIgKmZyYW1l
YnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBhdHRhY2htZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCAqcGFyYW1zKTsKK3ZvaWQgUXVlcnlCdWZmZXJQYXJhbWV0ZXJpdihjb25zdCBCdWZm
ZXIgKmJ1ZmZlciwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKK3ZvaWQgUXVlcnlCdWZm
ZXJQYXJhbWV0ZXJpNjR2KGNvbnN0IEJ1ZmZlciAqYnVmZmVyLCBHTGVudW0gcG5hbWUsIEdMaW50
NjQgKnBhcmFtcyk7Cit2b2lkIFF1ZXJ5QnVmZmVyUG9pbnRlcnYoY29uc3QgQnVmZmVyICpidWZm
ZXIsIEdMZW51bSBwbmFtZSwgdm9pZCAqKnBhcmFtcyk7Cit2b2lkIFF1ZXJ5UHJvZ3JhbWl2KGNv
bnN0IFByb2dyYW0gKnByb2dyYW0sIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Cit2b2lk
IFF1ZXJ5UmVuZGVyYnVmZmVyaXYoY29uc3QgUmVuZGVyYnVmZmVyICpyZW5kZXJidWZmZXIsIEdM
ZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Cit2b2lkIFF1ZXJ5U2hhZGVyaXYoY29uc3QgU2hh
ZGVyICpzaGFkZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Cit2b2lkIFF1ZXJ5VGV4
UGFyYW1ldGVyZnYoY29uc3QgVGV4dHVyZSAqdGV4dHVyZSwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0
ICpwYXJhbXMpOwordm9pZCBRdWVyeVRleFBhcmFtZXRlcml2KGNvbnN0IFRleHR1cmUgKnRleHR1
cmUsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Cit2b2lkIFF1ZXJ5U2FtcGxlclBhcmFt
ZXRlcmZ2KGNvbnN0IFNhbXBsZXIgKnNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFy
YW1zKTsKK3ZvaWQgUXVlcnlTYW1wbGVyUGFyYW1ldGVyaXYoY29uc3QgU2FtcGxlciAqc2FtcGxl
ciwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKK3ZvaWQgUXVlcnlWZXJ0ZXhBdHRyaWJm
dihjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZjdXJyZW50VmFsdWVEYXRhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGZsb2F0ICpwYXJhbXMpOwordm9pZCBRdWVyeVZlcnRleEF0dHJpYml2KGNvbnN0
IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGEgJmN1cnJlbnRWYWx1ZURhdGEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50ICpwYXJhbXMpOwordm9pZCBRdWVyeVZlcnRleEF0dHJpYlBvaW50ZXJ2KGNvbnN0IFZl
cnRleEF0dHJpYnV0ZSAmYXR0cmliLCBHTGVudW0gcG5hbWUsIEdMdm9pZCAqKnBvaW50ZXIpOwor
dm9pZCBRdWVyeVZlcnRleEF0dHJpYklpdihjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVydGV4QXR0cmliQ3VycmVudFZhbHVl
RGF0YSAmY3VycmVudFZhbHVlRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKK3ZvaWQg
UXVlcnlWZXJ0ZXhBdHRyaWJJdWl2KGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0
YSAmY3VycmVudFZhbHVlRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKTsKKwordm9p
ZCBRdWVyeUFjdGl2ZVVuaWZvcm1CbG9ja2l2KGNvbnN0IFByb2dyYW0gKnByb2dyYW0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKKwordm9pZCBRdWVyeUludGVybmFsRm9y
bWF0aXYoY29uc3QgVGV4dHVyZUNhcHMgJmZvcm1hdCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1
ZlNpemUsIEdMaW50ICpwYXJhbXMpOworCit2b2lkIFNldFRleFBhcmFtZXRlcmYoVGV4dHVyZSAq
dGV4dHVyZSwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKK3ZvaWQgU2V0VGV4UGFyYW1l
dGVyZnYoVGV4dHVyZSAqdGV4dHVyZSwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJh
bXMpOwordm9pZCBTZXRUZXhQYXJhbWV0ZXJpKFRleHR1cmUgKnRleHR1cmUsIEdMZW51bSBwbmFt
ZSwgR0xpbnQgcGFyYW0pOwordm9pZCBTZXRUZXhQYXJhbWV0ZXJpdihUZXh0dXJlICp0ZXh0dXJl
LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOworCit2b2lkIFNldFNhbXBsZXJQ
YXJhbWV0ZXJmKFNhbXBsZXIgKnNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7
Cit2b2lkIFNldFNhbXBsZXJQYXJhbWV0ZXJmdihTYW1wbGVyICpzYW1wbGVyLCBHTGVudW0gcG5h
bWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Cit2b2lkIFNldFNhbXBsZXJQYXJhbWV0ZXJpKFNh
bXBsZXIgKnNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwordm9pZCBTZXRTYW1w
bGVyUGFyYW1ldGVyaXYoU2FtcGxlciAqc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGlu
dCAqcGFyYW1zKTsKK30KKworI2VuZGlmICAvLyBMSUJBTkdMRV9RVUVSWVVUSUxTX0hfCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvQnVmZmVySW1w
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9CdWZmZXJJbXBsLmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9CdWZmZXJJbXBsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDkgKzIzLDEyIEBACiAgIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5CdWZmZXJJbXBs
KCkgeyB9CiAKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBzZXREYXRhKGNvbnN0IHZvaWQqIGRhdGEs
IHNpemVfdCBzaXplLCBHTGVudW0gdXNhZ2UpID0gMDsKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBz
ZXRTdWJEYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBzaXplLCBzaXplX3Qgb2Zmc2V0KSA9
IDA7Ci0gICAgdmlydHVhbCBnbDo6RXJyb3IgY29weVN1YkRhdGEoQnVmZmVySW1wbCogc291cmNl
LCBHTGludHB0ciBzb3VyY2VPZmZzZXQsIEdMaW50cHRyIGRlc3RPZmZzZXQsIEdMc2l6ZWlwdHIg
c2l6ZSkgPSAwOworICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldERhdGEoR0xlbnVtIHRhcmdldCwg
Y29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIEdMZW51bSB1c2FnZSkgICAgID0gMDsKKyAg
ICB2aXJ0dWFsIGdsOjpFcnJvciBzZXRTdWJEYXRhKEdMZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQg
KmRhdGEsIHNpemVfdCBzaXplLCBzaXplX3Qgb2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCBnbDo6
RXJyb3IgY29weVN1YkRhdGEoQnVmZmVySW1wbCAqc291cmNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50cHRyIHNvdXJjZU9mZnNldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludHB0ciBkZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgc2l6ZSkgPSAwOwogICAgIHZpcnR1YWwgZ2w6OkVy
cm9yIG1hcChHTGVudW0gYWNjZXNzLCBHTHZvaWQgKiptYXBQdHIpID0gMDsKICAgICB2aXJ0dWFs
IGdsOjpFcnJvciBtYXBSYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBHTGJpdGZp
ZWxkIGFjY2VzcywgR0x2b2lkICoqbWFwUHRyKSA9IDA7CiAgICAgdmlydHVhbCBnbDo6RXJyb3Ig
dW5tYXAoR0xib29sZWFuICpyZXN1bHQpID0gMDsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9CdWZmZXJJbXBsX21vY2suaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvQnVmZmVySW1w
bF9tb2NrLmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9CdWZmZXJJbXBsX21vY2suaAkod29ya2luZyBjb3B5KQpAQCAt
MjEsOCArMjEsOCBAQAogICBwdWJsaWM6CiAgICAgfk1vY2tCdWZmZXJJbXBsKCkgeyBkZXN0cnVj
dG9yKCk7IH0KIAotICAgIE1PQ0tfTUVUSE9EMyhzZXREYXRhLCBnbDo6RXJyb3IoY29uc3Qgdm9p
ZCosIHNpemVfdCwgR0xlbnVtKSk7Ci0gICAgTU9DS19NRVRIT0QzKHNldFN1YkRhdGEsIGdsOjpF
cnJvcihjb25zdCB2b2lkKiwgc2l6ZV90LCBzaXplX3QpKTsKKyAgICBNT0NLX01FVEhPRDQoc2V0
RGF0YSwgZ2w6OkVycm9yKEdMZW51bSwgY29uc3Qgdm9pZCAqLCBzaXplX3QsIEdMZW51bSkpOwor
ICAgIE1PQ0tfTUVUSE9ENChzZXRTdWJEYXRhLCBnbDo6RXJyb3IoR0xlbnVtLCBjb25zdCB2b2lk
ICosIHNpemVfdCwgc2l6ZV90KSk7CiAgICAgTU9DS19NRVRIT0Q0KGNvcHlTdWJEYXRhLCBnbDo6
RXJyb3IoQnVmZmVySW1wbCAqLCBHTGludHB0ciwgR0xpbnRwdHIsIEdMc2l6ZWlwdHIpKTsKICAg
ICBNT0NLX01FVEhPRDIobWFwLCBnbDo6RXJyb3IoR0xlbnVtLCBHTHZvaWQgKiopKTsKICAgICBN
T0NLX01FVEhPRDQobWFwUmFuZ2UsIGdsOjpFcnJvcihzaXplX3QsIHNpemVfdCwgR0xiaXRmaWVs
ZCwgR0x2b2lkICoqKSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvQ29udGV4dEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9Db250ZXh0SW1wbC5jcHAJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Nv
bnRleHRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExMyBAQAorLy8KKy8vIENv
cHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
Ky8vIENvbnRleHRJbXBsOgorLy8gICBJbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBmdW5jdGlvbmFs
aXR5IGFzc29jaWF0ZWQgd2l0aCBhIEdMIENvbnRleHQuCisvLworCisjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvQ29udGV4dEltcGwuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK0NvbnRleHRJ
bXBsOjpDb250ZXh0SW1wbChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZzdGF0ZSkgOiBtU3RhdGUo
c3RhdGUpCit7Cit9CisKK0NvbnRleHRJbXBsOjp+Q29udGV4dEltcGwoKQoreworfQorCit2b2lk
IENvbnRleHRJbXBsOjpzdGVuY2lsRmlsbFBhdGgoY29uc3QgZ2w6OlBhdGggKnBhdGgsIEdMZW51
bSBmaWxsTW9kZSwgR0x1aW50IG1hc2spCit7CisgICAgVU5SRUFDSEFCTEUoKTsKK30KKwordm9p
ZCBDb250ZXh0SW1wbDo6c3RlbmNpbFN0cm9rZVBhdGgoY29uc3QgZ2w6OlBhdGggKnBhdGgsIEdM
aW50IHJlZmVyZW5jZSwgR0x1aW50IG1hc2spCit7CisgICAgVU5SRUFDSEFCTEUoKTsKK30KKwor
dm9pZCBDb250ZXh0SW1wbDo6Y292ZXJGaWxsUGF0aChjb25zdCBnbDo6UGF0aCAqcGF0aCwgR0xl
bnVtIGNvdmVyTW9kZSkKK3sKKyAgICBVTlJFQUNIQUJMRSgpOworfQorCit2b2lkIENvbnRleHRJ
bXBsOjpjb3ZlclN0cm9rZVBhdGgoY29uc3QgZ2w6OlBhdGggKnBhdGgsIEdMZW51bSBjb3Zlck1v
ZGUpCit7CisgICAgVU5SRUFDSEFCTEUoKTsKK30KKwordm9pZCBDb250ZXh0SW1wbDo6c3RlbmNp
bFRoZW5Db3ZlckZpbGxQYXRoKGNvbnN0IGdsOjpQYXRoICpwYXRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlKQoreworICAg
IFVOUkVBQ0hBQkxFKCk7Cit9CisKK3ZvaWQgQ29udGV4dEltcGw6OnN0ZW5jaWxUaGVuQ292ZXJT
dHJva2VQYXRoKGNvbnN0IGdsOjpQYXRoICpwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlKQoreworICAgIFVO
UkVBQ0hBQkxFKCk7Cit9CisKK3ZvaWQgQ29udGV4dEltcGw6OmNvdmVyRmlsbFBhdGhJbnN0YW5j
ZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNm
b3JtVmFsdWVzKQoreworICAgIFVOUkVBQ0hBQkxFKCk7Cit9CisKK3ZvaWQgQ29udGV4dEltcGw6
OmNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAm
cGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGNvdmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCit7CisgICAgVU5SRUFDSEFC
TEUoKTsKK30KKwordm9pZCBDb250ZXh0SW1wbDo6c3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkKGNv
bnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNm
b3JtVmFsdWVzKQoreworICAgIFVOUkVBQ0hBQkxFKCk7Cit9CisKK3ZvaWQgQ29udGV4dEltcGw6
OnN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+
ICZwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHJlZmVyZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCit7CisgICAg
VU5SRUFDSEFCTEUoKTsKK30KKwordm9pZCBDb250ZXh0SW1wbDo6c3RlbmNpbFRoZW5Db3ZlckZp
bGxQYXRoSW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
Y292ZXJNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBmaWxsTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCit7CisgICAgVU5SRUFDSEFCTEUoKTsKK30KKwordm9pZCBD
b250ZXh0SW1wbDo6c3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWQoY29uc3Qgc3Rk
Ojp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5j
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1W
YWx1ZXMpCit7CisgICAgVU5SRUFDSEFCTEUoKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ4Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvQ29udGV4
dEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvQ29udGV4dEltcGwuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvQ29udGV4dEltcGwuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDE1MyBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIENvbnRleHRJbXBsOgorLy8gICBJ
bXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBmdW5jdGlvbmFsaXR5IGFzc29jaWF0ZWQgd2l0aCBhIEdM
IENvbnRleHQuCisvLworCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0NPTlRFWFRJTVBMX0hf
CisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0NPTlRFWFRJTVBMX0hfCisKKyNpbmNsdWRlIDx2
ZWN0b3I+CisKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorI2luY2x1ZGUgImxpYkFO
R0xFL0NvbnRleHRTdGF0ZS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0dMSW1wbEZh
Y3RvcnkuaCIKKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBQYXRoOworfQorCituYW1lc3BhY2Ug
cngKK3sKK2NsYXNzIENvbnRleHRJbXBsIDogcHVibGljIEdMSW1wbEZhY3RvcnkKK3sKKyAgcHVi
bGljOgorICAgIENvbnRleHRJbXBsKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJnN0YXRlKTsKKyAg
ICB2aXJ0dWFsIH5Db250ZXh0SW1wbCgpOworCisgICAgdmlydHVhbCBnbDo6RXJyb3IgaW5pdGlh
bGl6ZSgpID0gMDsKKworICAgIC8vIEZsdXNoIGFuZCBmaW5pc2guCisgICAgdmlydHVhbCBnbDo6
RXJyb3IgZmx1c2goKSA9IDA7CisgICAgdmlydHVhbCBnbDo6RXJyb3IgZmluaXNoKCkgPSAwOwor
CisgICAgLy8gRHJhd2luZyBtZXRob2RzLgorICAgIHZpcnR1YWwgZ2w6OkVycm9yIGRyYXdBcnJh
eXMoR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50KSA9IDA7CisgICAgdmly
dHVhbCBnbDo6RXJyb3IgZHJhd0FycmF5c0luc3RhbmNlZChHTGVudW0gbW9kZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZpcnN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VDb3VudCkg
PSAwOworCisgICAgdmlydHVhbCBnbDo6RXJyb3IgZHJhd0VsZW1lbnRzKEdMZW51bSBtb2RlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkg
PSAwOworICAgIHZpcnR1YWwgZ2w6OkVycm9yIGRyYXdFbGVtZW50c0luc3RhbmNlZChHTGVudW0g
bW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMdm9pZCAqaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpJbmRleFJhbmdlICZpbmRleFJhbmdlKSA9IDA7Cisg
ICAgdmlydHVhbCBnbDo6RXJyb3IgZHJhd1JhbmdlRWxlbWVudHMoR0xlbnVtIG1vZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBlbmQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmlu
ZGV4UmFuZ2UpID0gMDsKKworICAgIC8vIENIUk9NSVVNX3BhdGhfcmVuZGVyaW5nIHBhdGggZHJh
d2luZyBtZXRob2RzLgorICAgIHZpcnR1YWwgdm9pZCBzdGVuY2lsRmlsbFBhdGgoY29uc3QgZ2w6
OlBhdGggKnBhdGgsIEdMZW51bSBmaWxsTW9kZSwgR0x1aW50IG1hc2spOworICAgIHZpcnR1YWwg
dm9pZCBzdGVuY2lsU3Ryb2tlUGF0aChjb25zdCBnbDo6UGF0aCAqcGF0aCwgR0xpbnQgcmVmZXJl
bmNlLCBHTHVpbnQgbWFzayk7CisgICAgdmlydHVhbCB2b2lkIGNvdmVyRmlsbFBhdGgoY29uc3Qg
Z2w6OlBhdGggKnBhdGgsIEdMZW51bSBjb3Zlck1vZGUpOworICAgIHZpcnR1YWwgdm9pZCBjb3Zl
clN0cm9rZVBhdGgoY29uc3QgZ2w6OlBhdGggKnBhdGgsIEdMZW51bSBjb3Zlck1vZGUpOworICAg
IHZpcnR1YWwgdm9pZCBzdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGgoY29uc3QgZ2w6OlBhdGggKnBh
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmls
bE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
bWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBj
b3Zlck1vZGUpOworCisgICAgdmlydHVhbCB2b2lkIHN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRo
KGNvbnN0IGdsOjpQYXRoICpwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlKTsKKworICAgIHZpcnR1YWwgdm9pZCBj
b3ZlckZpbGxQYXRoSW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRo
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJN
b2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFu
c2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7CisgICAgdmlydHVhbCB2b2lkIGNvdmVyU3Ryb2tl
UGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9y
bVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOworICAgIHZpcnR1YWwgdm9pZCBzdGVuY2lsRmlsbFBh
dGhJbnN0YW5jZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxv
YXQgKnRyYW5zZm9ybVZhbHVlcyk7CisgICAgdmlydHVhbCB2b2lkIHN0ZW5jaWxTdHJva2VQYXRo
SW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9y
bVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7CisgICAgdmlydHVhbCB2b2lkIHN0ZW5jaWxUaGVu
Q292ZXJGaWxsUGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0
aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gY292ZXJNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7CisgICAgdmlydHVhbCB2b2lkIHN0ZW5jaWxUaGVuQ292
ZXJTdHJva2VQYXRoSW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRo
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGNvdmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7CisKKyAgICAvLyBEZXZpY2UgbG9zcwor
ICAgIHZpcnR1YWwgR0xlbnVtIGdldFJlc2V0U3RhdHVzKCkgPSAwOworCisgICAgLy8gVmVuZG9y
IGFuZCBkZXNjcmlwdGlvbiBzdHJpbmdzLgorICAgIHZpcnR1YWwgc3RkOjpzdHJpbmcgZ2V0VmVu
ZG9yU3RyaW5nKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgc3RkOjpzdHJpbmcgZ2V0UmVuZGVy
ZXJEZXNjcmlwdGlvbigpIGNvbnN0ID0gMDsKKworICAgIC8vIERlYnVnIG1hcmtlcnMuCisgICAg
dmlydHVhbCB2b2lkIGluc2VydEV2ZW50TWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFy
ICptYXJrZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHVzaEdyb3VwTWFya2VyKEdMc2l6ZWkg
bGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9wR3Jv
dXBNYXJrZXIoKSA9IDA7CisKKyAgICAvLyBTdGF0ZSBzeW5jIHdpdGggZGlydHkgYml0cy4KKyAg
ICB2aXJ0dWFsIHZvaWQgc3luY1N0YXRlKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGNvbnN0IGds
OjpTdGF0ZTo6RGlydHlCaXRzICZkaXJ0eUJpdHMpID0gMDsKKworICAgIC8vIERpc2pvaW50IHRp
bWVyIHF1ZXJpZXMKKyAgICB2aXJ0dWFsIEdMaW50IGdldEdQVURpc2pvaW50KCkgPSAwOworICAg
IHZpcnR1YWwgR0xpbnQ2NCBnZXRUaW1lc3RhbXAoKSA9IDA7CisKKyAgICAvLyBDb250ZXh0IHN3
aXRjaGluZworICAgIHZpcnR1YWwgdm9pZCBvbk1ha2VDdXJyZW50KGNvbnN0IGdsOjpDb250ZXh0
U3RhdGUgJmRhdGEpID0gMDsKKworICAgIC8vIE5hdGl2ZSBjYXBhYmlsaXRpZXMsIHVubW9kaWZp
ZWQgYnkgZ2w6OkNvbnRleHQuCisgICAgdmlydHVhbCBjb25zdCBnbDo6Q2FwcyAmZ2V0TmF0aXZl
Q2FwcygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IGdsOjpUZXh0dXJlQ2Fwc01hcCAm
Z2V0TmF0aXZlVGV4dHVyZUNhcHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBnbDo6
RXh0ZW5zaW9ucyAmZ2V0TmF0aXZlRXh0ZW5zaW9ucygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGNvbnN0IGdsOjpMaW1pdGF0aW9ucyAmZ2V0TmF0aXZlTGltaXRhdGlvbnMoKSBjb25zdCA9IDA7
CisKKyAgICBjb25zdCBnbDo6Q29udGV4dFN0YXRlICZnZXRDb250ZXh0U3RhdGUoKSB7IHJldHVy
biBtU3RhdGU7IH0KKyAgICBpbnQgZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgY29uc3QgeyByZXR1
cm4gbVN0YXRlLmdldENsaWVudE1ham9yVmVyc2lvbigpOyB9CisgICAgaW50IGdldENsaWVudE1p
bm9yVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1TdGF0ZS5nZXRDbGllbnRNaW5vclZlcnNpb24o
KTsgfQorICAgIGNvbnN0IGdsOjpTdGF0ZSAmZ2V0R0xTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1T
dGF0ZS5nZXRTdGF0ZSgpOyB9CisgICAgY29uc3QgZ2w6OkNhcHMgJmdldENhcHMoKSBjb25zdCB7
IHJldHVybiBtU3RhdGUuZ2V0Q2FwcygpOyB9CisgICAgY29uc3QgZ2w6OlRleHR1cmVDYXBzTWFw
ICZnZXRUZXh0dXJlQ2FwcygpIGNvbnN0IHsgcmV0dXJuIG1TdGF0ZS5nZXRUZXh0dXJlQ2Fwcygp
OyB9CisgICAgY29uc3QgZ2w6OkV4dGVuc2lvbnMgJmdldEV4dGVuc2lvbnMoKSBjb25zdCB7IHJl
dHVybiBtU3RhdGUuZ2V0RXh0ZW5zaW9ucygpOyB9CisgICAgY29uc3QgZ2w6OkxpbWl0YXRpb25z
ICZnZXRMaW1pdGF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1TdGF0ZS5nZXRMaW1pdGF0aW9ucygp
OyB9CisKKyAgcHJvdGVjdGVkOgorICAgIGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJm1TdGF0ZTsK
K307CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVS
X0NPTlRFWFRJTVBMX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvRGlzcGxheUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRGlzcGxheUltcGwuaAkocmV2aXNpb24gMjA4
MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Rp
c3BsYXlJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzLDcgKzEzLDkgQEAKICNpbmNsdWRlICJs
aWJBTkdMRS9DYXBzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvQ29uZmlnLmgiCiAjaW5jbHVkZSAi
bGliQU5HTEUvRXJyb3IuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9SZW5kZXJlci5o
IgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0VHTEltcGxGYWN0b3J5LmgiCisjaW5jbHVk
ZSAibGliQU5HTEUvU3RyZWFtLmgiCisjaW5jbHVkZSAibGliQU5HTEUvVmVyc2lvbi5oIgogCiAj
aW5jbHVkZSA8c2V0PgogI2luY2x1ZGUgPHZlY3Rvcj4KQEAgLTM4LDkgKzQwLDkgQEAKIGNsYXNz
IEltYWdlSW1wbDsKIHN0cnVjdCBDb25maWdEZXNjOwogY2xhc3MgRGV2aWNlSW1wbDsKLWNsYXNz
IFN0cmVhbUltcGw7CitjbGFzcyBTdHJlYW1Qcm9kdWNlckltcGw7CiAKLWNsYXNzIERpc3BsYXlJ
bXBsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCitjbGFzcyBEaXNwbGF5SW1wbCA6IHB1YmxpYyBFR0xJ
bXBsRmFjdG9yeQogewogICBwdWJsaWM6CiAgICAgRGlzcGxheUltcGwoKTsKQEAgLTQ5LDMzICs1
MSwxMCBAQAogICAgIHZpcnR1YWwgZWdsOjpFcnJvciBpbml0aWFsaXplKGVnbDo6RGlzcGxheSAq
ZGlzcGxheSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGUoKSA9IDA7CiAKLSAgICB2
aXJ0dWFsIFN1cmZhY2VJbXBsICpjcmVhdGVXaW5kb3dTdXJmYWNlKGNvbnN0IGVnbDo6Q29uZmln
ICpjb25maWd1cmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykg
PSAwOwotICAgIHZpcnR1YWwgU3VyZmFjZUltcGwgKmNyZWF0ZVBidWZmZXJTdXJmYWNlKGNvbnN0
IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSA9IDA7
Ci0gICAgdmlydHVhbCBTdXJmYWNlSW1wbCAqY3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIo
Y29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIHNoYXJlSGFu
ZGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSA9IDA7Ci0gICAgdmlydHVhbCBT
dXJmYWNlSW1wbCAqY3JlYXRlUGl4bWFwU3VyZmFjZShjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmln
dXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5h
dGl2ZVBpeG1hcFR5cGUgbmF0aXZlUGl4bWFwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpID0gMDsK
LQotICAgIHZpcnR1YWwgSW1hZ2VJbXBsICpjcmVhdGVJbWFnZShFR0xlbnVtIHRhcmdldCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpJbWFnZVNpYmxpbmcgKmJ1ZmZl
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1
dGVNYXAgJmF0dHJpYnMpID0gMDsKLQotICAgIHZpcnR1YWwgZ2w6OkNvbnRleHQgKmNyZWF0ZUNv
bnRleHQoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpDb250ZXh0ICpzaGFyZUNvbnRleHQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAm
YXR0cmlicykgPSAwOwotCi0gICAgdmlydHVhbCBTdHJlYW1JbXBsICpjcmVhdGVTdHJlYW0oY29u
c3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpID0gMDsKLQogICAgIHZpcnR1YWwgZWdsOjpF
cnJvciBtYWtlQ3VycmVudChlZ2w6OlN1cmZhY2UgKmRyYXdTdXJmYWNlLCBlZ2w6OlN1cmZhY2Ug
KnJlYWRTdXJmYWNlLCBnbDo6Q29udGV4dCAqY29udGV4dCkgPSAwOwogCi0gICAgdmlydHVhbCBl
Z2w6OkNvbmZpZ1NldCBnZW5lcmF0ZUNvbmZpZ3MoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBl
Z2w6OkNvbmZpZ1NldCBnZW5lcmF0ZUNvbmZpZ3MoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
aXNEZXZpY2VMb3N0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCB0ZXN0RGV2aWNlTG9z
dCgpID0gMDsKICAgICB2aXJ0dWFsIGVnbDo6RXJyb3IgcmVzdG9yZUxvc3REZXZpY2UoKSA9IDA7
CiAKQEAgLTg5LDcgKzY4LDcgQEAKICAgICB2aXJ0dWFsIGVnbDo6RXJyb3Igd2FpdE5hdGl2ZShF
R0xpbnQgZW5naW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3Vy
ZmFjZSAqZHJhd1N1cmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWds
OjpTdXJmYWNlICpyZWFkU3VyZmFjZSkgY29uc3QgPSAwOwotCisgICAgdmlydHVhbCBnbDo6VmVy
c2lvbiBnZXRNYXhTdXBwb3J0ZWRFU1ZlcnNpb24oKSBjb25zdCAgICAgICAgICAgPSAwOwogICAg
IGNvbnN0IGVnbDo6Q2FwcyAmZ2V0Q2FwcygpIGNvbnN0OwogCiAgICAgdHlwZWRlZiBzdGQ6OnNl
dDxlZ2w6OlN1cmZhY2UqPiBTdXJmYWNlU2V0OwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0VHTEltcGxGYWN0b3J5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0VHTEltcGxGYWN0
b3J5LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL0VHTEltcGxGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3
MCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKy8vIEVHTEltcGxGYWN0b3J5Lmg6CisvLyAgIEZhY3RvcnkgaW50ZXJm
YWNlIGZvciBFR0wgSW1wbCBvYmplY3RzLgorLy8KKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJF
Ul9FR0xJTVBMRkFDVE9SWV9IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9FR0xJTVBMRkFD
VE9SWV9IXworCisjaW5jbHVkZSAibGliQU5HTEUvU3RyZWFtLmgiCisKK25hbWVzcGFjZSBlZ2wK
K3sKK2NsYXNzIEF0dHJpYnV0ZU1hcDsKK3N0cnVjdCBDb25maWc7CitjbGFzcyBJbWFnZVNpYmxp
bmc7CitzdHJ1Y3QgU3VyZmFjZVN0YXRlOworfQorCituYW1lc3BhY2UgZ2wKK3sKK2NsYXNzIENv
bnRleHQ7CitjbGFzcyBDb250ZXh0U3RhdGU7Cit9CisKK25hbWVzcGFjZSByeAoreworY2xhc3Mg
Q29udGV4dEltcGw7CitjbGFzcyBJbWFnZUltcGw7CitjbGFzcyBTdXJmYWNlSW1wbDsKKworY2xh
c3MgRUdMSW1wbEZhY3RvcnkgOiBhbmdsZTo6Tm9uQ29weWFibGUKK3sKKyAgcHVibGljOgorICAg
IEVHTEltcGxGYWN0b3J5KCkge30KKyAgICB2aXJ0dWFsIH5FR0xJbXBsRmFjdG9yeSgpIHt9CisK
KyAgICB2aXJ0dWFsIFN1cmZhY2VJbXBsICpjcmVhdGVXaW5kb3dTdXJmYWNlKGNvbnN0IGVnbDo6
U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5k
b3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBl
Z2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgPSAwOworICAgIHZpcnR1YWwgU3VyZmFjZUltcGwg
KmNyZWF0ZVBidWZmZXJTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNv
bmZpZyAqY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgPSAwOworICAgIHZp
cnR1YWwgU3VyZmFjZUltcGwgKmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNvbnN0IGVn
bDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
R0xDbGllbnRCdWZmZXIgc2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJp
YnMpID0gMDsKKyAgICB2aXJ0dWFsIFN1cmZhY2VJbXBsICpjcmVhdGVQaXhtYXBTdXJmYWNlKGNv
bnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmF0aXZlUGl4bWFwVHlw
ZSBuYXRpdmVQaXhtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgPSAwOworCisgICAgdmlydHVh
bCBJbWFnZUltcGwgKmNyZWF0ZUltYWdlKEVHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlZ2w6OkltYWdlU2libGluZyAqYnVmZmVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmli
cykgPSAwOworCisgICAgdmlydHVhbCBDb250ZXh0SW1wbCAqY3JlYXRlQ29udGV4dChjb25zdCBn
bDo6Q29udGV4dFN0YXRlICZzdGF0ZSkgPSAwOworCisgICAgdmlydHVhbCBTdHJlYW1Qcm9kdWNl
ckltcGwgKmNyZWF0ZVN0cmVhbVByb2R1Y2VyRDNEVGV4dHVyZU5WMTIoCisgICAgICAgIGVnbDo6
U3RyZWFtOjpDb25zdW1lclR5cGUgY29uc3VtZXJUeXBlLAorICAgICAgICBjb25zdCBlZ2w6OkF0
dHJpYnV0ZU1hcCAmYXR0cmlicykgPSAwOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNl
bmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfRUdMSU1QTEZBQ1RPUllfSF8KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9Gb3JtYXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9G
b3JtYXQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9Gb3JtYXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzQg
QEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisvLyBGb3JtYXQ6CisvLyAgIEEgdW5pdmVyc2FsIGRlc2NyaXB0aW9uIG9m
IHRleHR1cmUgc3RvcmFnZS4gQWNyb3NzIG11bHRpcGxlCisvLyAgIHJlbmRlcmVyIGJhY2stZW5k
cywgdGhlcmUgYXJlIGNvbW1vbiBmb3JtYXRzIGFuZCBzb21lIGRpc3RpbmN0CisvLyAgIHBlcm11
dGF0aW9ucywgdGhpcyBlbnVtIGVuY2Fwc3VsYXRlcyB0aGVtIGFsbC4KKworI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL0Zvcm1hdC5oIgorCisjaW5jbHVkZSAiaW1hZ2VfdXRpbC9jb3B5aW1h
Z2UuaCIKKwordXNpbmcgbmFtZXNwYWNlIHJ4OworCituYW1lc3BhY2UgYW5nbGUKK3sKKworbmFt
ZXNwYWNlCit7CisKK2NvbnN0IEZhc3RDb3B5RnVuY3Rpb25NYXAgJkdldEZhc3RDb3B5RnVuY3Rp
b25zTWFwKEZvcm1hdDo6SUQgZm9ybWF0SUQpCit7CisgICAgc3dpdGNoIChmb3JtYXRJRCkKKyAg
ICB7CisgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6QjhHOFI4QThfVU5PUk06CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyBGYXN0Q29weUZ1bmN0aW9uTWFwIGZhc3RDb3B5TWFwOworICAg
ICAgICAgICAgaWYgKGZhc3RDb3B5TWFwLmVtcHR5KCkpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgZmFzdENvcHlNYXBbZ2w6OkZvcm1hdFR5cGUoR0xfUkdCQSwgR0xfVU5TSUdORURf
QllURSldID0gQ29weUJHUkE4VG9SR0JBODsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJl
dHVybiBmYXN0Q29weU1hcDsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgRmFzdENvcHlGdW5jdGlvbk1hcCBlbXB0eU1hcDsKKyAgICAg
ICAgICAgIHJldHVybiBlbXB0eU1hcDsKKyAgICAgICAgfQorICAgIH0KK30KKworfSAgLy8gYW5v
bnltb3VzIG5hbWVzcGFjZQorCitGb3JtYXQ6OkZvcm1hdChJRCBpZCwKKyAgICAgICAgICAgICAg
IEdMZW51bSBnbEZvcm1hdCwKKyAgICAgICAgICAgICAgIEdMZW51bSBmYm9Gb3JtYXQsCisgICAg
ICAgICAgICAgICBNaXBHZW5lcmF0aW9uRnVuY3Rpb24gbWlwR2VuLAorICAgICAgICAgICAgICAg
Q29sb3JSZWFkRnVuY3Rpb24gY29sb3JSZWFkLAorICAgICAgICAgICAgICAgR0xlbnVtIGNvbXBv
bmVudFR5cGUsCisgICAgICAgICAgICAgICBHTHVpbnQgcmVkQml0cywKKyAgICAgICAgICAgICAg
IEdMdWludCBncmVlbkJpdHMsCisgICAgICAgICAgICAgICBHTHVpbnQgYmx1ZUJpdHMsCisgICAg
ICAgICAgICAgICBHTHVpbnQgYWxwaGFCaXRzLAorICAgICAgICAgICAgICAgR0x1aW50IGRlcHRo
Qml0cywKKyAgICAgICAgICAgICAgIEdMdWludCBzdGVuY2lsQml0cykKKyAgICA6IGlkKGlkKSwK
KyAgICAgIGdsSW50ZXJuYWxGb3JtYXQoZ2xGb3JtYXQpLAorICAgICAgZmJvSW1wbGVtZW50YXRp
b25JbnRlcm5hbEZvcm1hdChmYm9Gb3JtYXQpLAorICAgICAgbWlwR2VuZXJhdGlvbkZ1bmN0aW9u
KG1pcEdlbiksCisgICAgICBjb2xvclJlYWRGdW5jdGlvbihjb2xvclJlYWQpLAorICAgICAgZmFz
dENvcHlGdW5jdGlvbnMoR2V0RmFzdENvcHlGdW5jdGlvbnNNYXAoaWQpKSwKKyAgICAgIGNvbXBv
bmVudFR5cGUoY29tcG9uZW50VHlwZSksCisgICAgICByZWRCaXRzKHJlZEJpdHMpLAorICAgICAg
Z3JlZW5CaXRzKGdyZWVuQml0cyksCisgICAgICBibHVlQml0cyhibHVlQml0cyksCisgICAgICBh
bHBoYUJpdHMoYWxwaGFCaXRzKSwKKyAgICAgIGRlcHRoQml0cyhkZXB0aEJpdHMpLAorICAgICAg
c3RlbmNpbEJpdHMoc3RlbmNpbEJpdHMpCit7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmdsZQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Zvcm1h
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9Gb3JtYXQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRm9ybWF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw3MSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorLy8KKy8vIEZvcm1hdDoKKy8vICAgQSB1bml2ZXJzYWwgZGVzY3JpcHRp
b24gb2YgdHlwZWQgR1BVIHN0b3JhZ2UuIEFjcm9zcyBtdWx0aXBsZQorLy8gICByZW5kZXJlciBi
YWNrLWVuZHMsIHRoZXJlIGFyZSBjb21tb24gZm9ybWF0cyBhbmQgc29tZSBkaXN0aW5jdAorLy8g
ICBwZXJtdXRhdGlvbnMsIHRoaXMgZW51bSBlbmNhcHN1bGF0ZXMgdGhlbSBhbGwuIEZvcm1hdHMg
YXBwbHkgdG8KKy8vICAgdGV4dHVyZXMsIGJ1dCBjb3VsZCBhbHNvIGFwcGx5IHRvIGFueSB0eXBl
ZCBkYXRhLgorCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0ZPUk1BVF9IXworI2RlZmluZSBM
SUJBTkdMRV9SRU5ERVJFUl9GT1JNQVRfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL2Zvcm1hdHV0
aWxzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvcmVuZGVyZXJfdXRpbHMuaCIKKwor
bmFtZXNwYWNlIGFuZ2xlCit7CisKK3N0cnVjdCBGb3JtYXQgZmluYWwgOiBhbmdsZTo6Tm9uQ29w
eWFibGUKK3sKKyAgICBlbnVtIGNsYXNzIElEOworCisgICAgRm9ybWF0KElEIGlkLAorICAgICAg
ICAgICBHTGVudW0gZ2xGb3JtYXQsCisgICAgICAgICAgIEdMZW51bSBmYm9Gb3JtYXQsCisgICAg
ICAgICAgIHJ4OjpNaXBHZW5lcmF0aW9uRnVuY3Rpb24gbWlwR2VuLAorICAgICAgICAgICByeDo6
Q29sb3JSZWFkRnVuY3Rpb24gY29sb3JSZWFkLAorICAgICAgICAgICBHTGVudW0gY29tcG9uZW50
VHlwZSwKKyAgICAgICAgICAgR0x1aW50IHJlZEJpdHMsCisgICAgICAgICAgIEdMdWludCBncmVl
bkJpdHMsCisgICAgICAgICAgIEdMdWludCBibHVlQml0cywKKyAgICAgICAgICAgR0x1aW50IGFs
cGhhQml0cywKKyAgICAgICAgICAgR0x1aW50IGRlcHRoQml0cywKKyAgICAgICAgICAgR0x1aW50
IHN0ZW5jaWxCaXRzKTsKKworICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgJkdldChJRCBpZCk7CisK
KyAgICBJRCBpZDsKKworICAgIC8vIFRoZSBjbG9zZXN0IG1hdGNoaW5nIEdMIGludGVybmFsIGZv
cm1hdCBmb3IgdGhlIHN0b3JhZ2UgdGhpcyBmb3JtYXQgdXNlcy4gTm90ZSB0aGF0IHRoaXMKKyAg
ICAvLyBtYXkgYmUgYSBkaWZmZXJlbnQgaW50ZXJuYWwgZm9ybWF0IHRoYW4gdGhlIG9uZSB0aGlz
IEFOR0xFIGZvcm1hdCBpcyB1c2VkIGZvci4KKyAgICBHTGVudW0gZ2xJbnRlcm5hbEZvcm1hdDsK
KworICAgIC8vIFRoZSBmb3JtYXQgd2Ugc2hvdWxkIHJlcG9ydCB0byB0aGUgR0wgbGF5ZXIgd2hl
biBxdWVyeWluZyBpbXBsZW1lbnRhdGlvbiBmb3JtYXRzIGZyb20gYSBGQk8uCisgICAgLy8gVGhp
cyBtaWdodCBub3QgYmUgdGhlIHNhbWUgYXMgdGhlIGdsSW50ZXJuYWxGb3JtYXQsIHNpbmNlIHNv
bWUgRFhHSSBmb3JtYXRzIGRvbid0IGhhdmUKKyAgICAvLyBtYXRjaGluZyBHTCBmb3JtYXQgZW51
bXMsIGxpa2UgQkdSQTQsIEJHUjVBMSBhbmQgQjVHNlI2LgorICAgIEdMZW51bSBmYm9JbXBsZW1l
bnRhdGlvbkludGVybmFsRm9ybWF0OworCisgICAgcng6Ok1pcEdlbmVyYXRpb25GdW5jdGlvbiBt
aXBHZW5lcmF0aW9uRnVuY3Rpb247CisgICAgcng6OkNvbG9yUmVhZEZ1bmN0aW9uIGNvbG9yUmVh
ZEZ1bmN0aW9uOworCisgICAgLy8gQSBtYXAgZnJvbSBhIGdsOjpGb3JtYXRUeXBlIHRvIGEgZmFz
dCBwaXhlbCBjb3B5IGZ1bmN0aW9uIGZvciB0aGlzIGZvcm1hdC4KKyAgICByeDo6RmFzdENvcHlG
dW5jdGlvbk1hcCBmYXN0Q29weUZ1bmN0aW9uczsKKworICAgIEdMZW51bSBjb21wb25lbnRUeXBl
OworCisgICAgR0x1aW50IHJlZEJpdHM7CisgICAgR0x1aW50IGdyZWVuQml0czsKKyAgICBHTHVp
bnQgYmx1ZUJpdHM7CisgICAgR0x1aW50IGFscGhhQml0czsKKyAgICBHTHVpbnQgZGVwdGhCaXRz
OworICAgIEdMdWludCBzdGVuY2lsQml0czsKK307CisKK30gIC8vIG5hbWVzcGFjZSBhbmdsZQor
CisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvRm9ybWF0X0lEX2F1dG9nZW4uaW5sIgorCisj
ZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX0ZPUk1BVF9IXwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdF9JRF9hdXRvZ2VuLmlubAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvRm9ybWF0X0lEX2F1dG9nZW4uaW5sCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9Gb3JtYXRfSURfYXV0b2dlbi5pbmwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzggQEAKKy8vIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9U
IEVESVQuCisvLyBHZW5lcmF0ZWQgYnkgZ2VuX2FuZ2xlX2Zvcm1hdF90YWJsZS5weSB1c2luZyBk
YXRhIGZyb20gYW5nbGVfZm9ybWF0X2RhdGEuanNvbgorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEFOR0xFIGZvcm1h
dCBlbnVtZXJhdGlvbi4KKworbmFtZXNwYWNlIGFuZ2xlCit7CisKK2VudW0gY2xhc3MgRm9ybWF0
OjpJRAoreworICAgIE5PTkUsCisgICAgQTE2X0ZMT0FULAorICAgIEEzMl9GTE9BVCwKKyAgICBB
OF9VTk9STSwKKyAgICBBU1RDXzEweDEwX1NSR0JfQkxPQ0ssCisgICAgQVNUQ18xMHgxMF9VTk9S
TV9CTE9DSywKKyAgICBBU1RDXzEweDVfU1JHQl9CTE9DSywKKyAgICBBU1RDXzEweDVfVU5PUk1f
QkxPQ0ssCisgICAgQVNUQ18xMHg2X1NSR0JfQkxPQ0ssCisgICAgQVNUQ18xMHg2X1VOT1JNX0JM
T0NLLAorICAgIEFTVENfMTB4OF9TUkdCX0JMT0NLLAorICAgIEFTVENfMTB4OF9VTk9STV9CTE9D
SywKKyAgICBBU1RDXzEyeDEwX1NSR0JfQkxPQ0ssCisgICAgQVNUQ18xMngxMF9VTk9STV9CTE9D
SywKKyAgICBBU1RDXzEyeDEyX1NSR0JfQkxPQ0ssCisgICAgQVNUQ18xMngxMl9VTk9STV9CTE9D
SywKKyAgICBBU1RDXzR4NF9TUkdCX0JMT0NLLAorICAgIEFTVENfNHg0X1VOT1JNX0JMT0NLLAor
ICAgIEFTVENfNXg0X1NSR0JfQkxPQ0ssCisgICAgQVNUQ181eDRfVU5PUk1fQkxPQ0ssCisgICAg
QVNUQ181eDVfU1JHQl9CTE9DSywKKyAgICBBU1RDXzV4NV9VTk9STV9CTE9DSywKKyAgICBBU1RD
XzZ4NV9TUkdCX0JMT0NLLAorICAgIEFTVENfNng1X1VOT1JNX0JMT0NLLAorICAgIEFTVENfNng2
X1NSR0JfQkxPQ0ssCisgICAgQVNUQ182eDZfVU5PUk1fQkxPQ0ssCisgICAgQVNUQ184eDVfU1JH
Ql9CTE9DSywKKyAgICBBU1RDXzh4NV9VTk9STV9CTE9DSywKKyAgICBBU1RDXzh4Nl9TUkdCX0JM
T0NLLAorICAgIEFTVENfOHg2X1VOT1JNX0JMT0NLLAorICAgIEFTVENfOHg4X1NSR0JfQkxPQ0ss
CisgICAgQVNUQ184eDhfVU5PUk1fQkxPQ0ssCisgICAgQjRHNFI0QTRfVU5PUk0sCisgICAgQjVH
NVI1QTFfVU5PUk0sCisgICAgQjVHNlI1X1VOT1JNLAorICAgIEI4RzhSOEE4X1VOT1JNLAorICAg
IEI4RzhSOFg4X1VOT1JNLAorICAgIEJDMV9SR0JBX1VOT1JNX0JMT0NLLAorICAgIEJDMV9SR0Jf
VU5PUk1fQkxPQ0ssCisgICAgQkMyX1JHQkFfVU5PUk1fQkxPQ0ssCisgICAgQkMzX1JHQkFfVU5P
Uk1fQkxPQ0ssCisgICAgRDE2X1VOT1JNLAorICAgIEQyNF9VTk9STSwKKyAgICBEMjRfVU5PUk1f
UzhfVUlOVCwKKyAgICBEMzJfRkxPQVQsCisgICAgRDMyX0ZMT0FUX1M4WDI0X1VJTlQsCisgICAg
RDMyX1VOT1JNLAorICAgIEVBQ19SMTFHMTFfU05PUk1fQkxPQ0ssCisgICAgRUFDX1IxMUcxMV9V
Tk9STV9CTE9DSywKKyAgICBFQUNfUjExX1NOT1JNX0JMT0NLLAorICAgIEVBQ19SMTFfVU5PUk1f
QkxPQ0ssCisgICAgRVRDMl9SOEc4QjhBMV9TUkdCX0JMT0NLLAorICAgIEVUQzJfUjhHOEI4QTFf
VU5PUk1fQkxPQ0ssCisgICAgRVRDMl9SOEc4QjhBOF9TUkdCX0JMT0NLLAorICAgIEVUQzJfUjhH
OEI4QThfVU5PUk1fQkxPQ0ssCisgICAgRVRDMl9SOEc4QjhfU1JHQl9CTE9DSywKKyAgICBFVEMy
X1I4RzhCOF9VTk9STV9CTE9DSywKKyAgICBMMTZBMTZfRkxPQVQsCisgICAgTDE2X0ZMT0FULAor
ICAgIEwzMkEzMl9GTE9BVCwKKyAgICBMMzJfRkxPQVQsCisgICAgTDhBOF9VTk9STSwKKyAgICBM
OF9VTk9STSwKKyAgICBSMTBHMTBCMTBBMl9VSU5ULAorICAgIFIxMEcxMEIxMEEyX1VOT1JNLAor
ICAgIFIxMUcxMUIxMF9GTE9BVCwKKyAgICBSMTZHMTZCMTZBMTZfRkxPQVQsCisgICAgUjE2RzE2
QjE2QTE2X1NJTlQsCisgICAgUjE2RzE2QjE2QTE2X1NOT1JNLAorICAgIFIxNkcxNkIxNkExNl9V
SU5ULAorICAgIFIxNkcxNkIxNkExNl9VTk9STSwKKyAgICBSMTZHMTZCMTZfRkxPQVQsCisgICAg
UjE2RzE2QjE2X1NJTlQsCisgICAgUjE2RzE2QjE2X1NOT1JNLAorICAgIFIxNkcxNkIxNl9VSU5U
LAorICAgIFIxNkcxNkIxNl9VTk9STSwKKyAgICBSMTZHMTZfRkxPQVQsCisgICAgUjE2RzE2X1NJ
TlQsCisgICAgUjE2RzE2X1NOT1JNLAorICAgIFIxNkcxNl9VSU5ULAorICAgIFIxNkcxNl9VTk9S
TSwKKyAgICBSMTZfRkxPQVQsCisgICAgUjE2X1NJTlQsCisgICAgUjE2X1NOT1JNLAorICAgIFIx
Nl9VSU5ULAorICAgIFIxNl9VTk9STSwKKyAgICBSMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgUjMy
RzMyQjMyQTMyX1NJTlQsCisgICAgUjMyRzMyQjMyQTMyX1VJTlQsCisgICAgUjMyRzMyQjMyX0ZM
T0FULAorICAgIFIzMkczMkIzMl9TSU5ULAorICAgIFIzMkczMkIzMl9VSU5ULAorICAgIFIzMkcz
Ml9GTE9BVCwKKyAgICBSMzJHMzJfU0lOVCwKKyAgICBSMzJHMzJfVUlOVCwKKyAgICBSMzJfRkxP
QVQsCisgICAgUjMyX1NJTlQsCisgICAgUjMyX1VJTlQsCisgICAgUjRHNEI0QTRfVU5PUk0sCisg
ICAgUjVHNUI1QTFfVU5PUk0sCisgICAgUjVHNkI1X1VOT1JNLAorICAgIFI4RzhCOEE4X1NJTlQs
CisgICAgUjhHOEI4QThfU05PUk0sCisgICAgUjhHOEI4QThfVUlOVCwKKyAgICBSOEc4QjhBOF9V
Tk9STSwKKyAgICBSOEc4QjhBOF9VTk9STV9TUkdCLAorICAgIFI4RzhCOF9TSU5ULAorICAgIFI4
RzhCOF9TTk9STSwKKyAgICBSOEc4QjhfVUlOVCwKKyAgICBSOEc4QjhfVU5PUk0sCisgICAgUjhH
OEI4X1VOT1JNX1NSR0IsCisgICAgUjhHOF9TSU5ULAorICAgIFI4RzhfU05PUk0sCisgICAgUjhH
OF9VSU5ULAorICAgIFI4RzhfVU5PUk0sCisgICAgUjhfU0lOVCwKKyAgICBSOF9TTk9STSwKKyAg
ICBSOF9VSU5ULAorICAgIFI4X1VOT1JNLAorICAgIFI5RzlCOUU1X1NIQVJFREVYUCwKKyAgICBT
OF9VSU5UCit9OworCit9ICAvLyBuYW1lc3BhY2UgYW5nbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9Gb3JtYXRfYXV0b2dlbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Zv
cm1hdF9hdXRvZ2VuLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRm9ybWF0X2F1dG9nZW4uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTM2OSBAQAorLy8gR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVC4KKy8v
IEdlbmVyYXRlZCBieSBnZW5fYW5nbGVfZm9ybWF0X3RhYmxlLnB5IHVzaW5nIGRhdGEgZnJvbSBh
bmdsZV9mb3JtYXRfZGF0YS5qc29uCisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gQU5HTEUgRm9ybWF0IHRhYmxlOgor
Ly8gICBRdWVyaWVzIGZvciB0eXBlZCBmb3JtYXQgaW5mb3JtYXRpb24gZnJvbSB0aGUgQU5HTEUg
Zm9ybWF0IGVudW0uCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9Gb3JtYXQuaCIKKwor
I2luY2x1ZGUgImltYWdlX3V0aWwvY29weWltYWdlLmgiCisjaW5jbHVkZSAiaW1hZ2VfdXRpbC9n
ZW5lcmF0ZW1pcC5oIgorI2luY2x1ZGUgImltYWdlX3V0aWwvbG9hZGltYWdlLmgiCisKK25hbWVz
cGFjZSBhbmdsZQoreworCisvLyBzdGF0aWMKK2NvbnN0IEZvcm1hdCAmRm9ybWF0OjpHZXQoSUQg
aWQpCit7CisgICAgLy8gY2xhbmctZm9ybWF0IG9mZgorICAgIHN3aXRjaCAoaWQpCisgICAgewor
ICAgICAgICBjYXNlIElEOjpBMTZfRkxPQVQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX0FMUEhBMTZGX0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9BTFBIQTE2Rl9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR2VuZXJhdGVNaXA8QTE2Rj4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUmVhZENvbG9yPEExNkYsIEdMZmxvYXQ+LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAsIDAsIDAsIDE2LCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OkEzMl9GTE9BVDoKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpBMzJfRkxPQVQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQUxQSEEzMkZfRVhULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0FMUEhBMzJGX0VYVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxBMzJGPiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8QTMyRiwgR0xmbG9hdD4sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfRkxPQVQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMzIsIDAsIDApOworICAgICAgICAgICAgcmV0
dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6QThfVU5PUk06CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QThfVU5PUk0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQUxQSEE4X0VYVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9BTFBIQThfRVhULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPEE4PiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8QTgsIEdMZmxvYXQ+LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgOCwgMCwgMCk7Cisg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpBU1RD
XzEweDEwX1NSR0JfQkxPQ0s6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBG
b3JtYXQgaW5mbyhJRDo6QVNUQ18xMHgxMF9TUkdCX0JMT0NLLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBf
S0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0FTVENfMTB4MTBfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05F
RF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAs
IDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBJRDo6QVNUQ18xMHgxMF9VTk9STV9CTE9DSzoKKyAgICAgICAgeworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpBU1RDXzEweDEwX1VOT1JNX0JMT0NLLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9B
U1RDXzEweDEwX0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9D
T01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMF9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lH
TkVEX05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwg
MCwgMCwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIElEOjpBU1RDXzEweDVfU1JHQl9CTE9DSzoKKyAgICAgICAgeworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpBU1RDXzEweDVfU1JHQl9CTE9DSywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzEweDVfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIElEOjpBU1RDXzEweDVfVU5PUk1fQkxPQ0s6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QVNUQ18xMHg1X1VO
T1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBS
RVNTRURfUkdCQV9BU1RDXzEweDVfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hSLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBJRDo6QVNUQ18xMHg2X1NSR0JfQkxPQ0s6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QVNUQ18xMHg2X1NSR0Jf
QkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDZfS0hSLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJu
IGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6QVNUQ18xMHg2X1VOT1JNX0JMT0NL
OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkFT
VENfMTB4Nl9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2X0tIUiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2X0tIUiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBp
bmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OkFTVENfMTB4OF9TUkdCX0JMT0NLOgor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkFTVENf
MTB4OF9TUkdCX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OF9LSFIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4
X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAg
ICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OkFTVENfMTB4OF9V
Tk9STV9CTE9DSzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBp
bmZvKElEOjpBU1RDXzEweDhfVU5PUk1fQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OF9LSFIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OF9L
SFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7CisgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpBU1RDXzEyeDEwX1NS
R0JfQkxPQ0s6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5m
byhJRDo6QVNUQ18xMngxMF9TUkdCX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTBfS0hSLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfMTJ4MTBfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJ
WkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAs
IDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJ
RDo6QVNUQ18xMngxMF9VTk9STV9CTE9DSzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IEZvcm1hdCBpbmZvKElEOjpBU1RDXzEyeDEwX1VOT1JNX0JMT0NLLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEw
X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VE
X1JHQkFfQVNUQ18xMngxMF9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1B
TElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwg
MCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IElEOjpBU1RDXzEyeDEyX1NSR0JfQkxPQ0s6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QVNUQ18xMngxMl9TUkdCX0JMT0NLLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FT
VENfMTJ4MTJfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTJfS0hSLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9VTlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBJRDo6QVNUQ18xMngxMl9VTk9STV9CTE9DSzoKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpBU1RDXzEyeDEyX1VOT1JN
X0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNT
RURfUkdCQV9BU1RDXzEyeDEyX0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMl9LSFIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIElEOjpBU1RDXzR4NF9TUkdCX0JMT0NLOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkFTVENfNHg0X1NSR0JfQkxP
Q0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfQVNUQ180eDRfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZv
OworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OkFTVENfNHg0X1VOT1JNX0JMT0NLOgorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkFTVENfNHg0
X1VOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NP
TVBSRVNTRURfUkdCQV9BU1RDXzR4NF9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgSUQ6OkFTVENfNXg0X1NSR0JfQkxPQ0s6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QVNUQ181eDRfU1JHQl9C
TE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDRfS0hSLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6QVNUQ181eDRfVU5PUk1fQkxPQ0s6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QVNUQ181
eDRfVU5PUk1fQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDRfS0hSLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6QVNUQ181eDVfU1JHQl9CTE9DSzoKKyAgICAgICAg
eworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpBU1RDXzV4NV9TUkdC
X0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NV9LSFIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4g
aW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpBU1RDXzV4NV9VTk9STV9CTE9DSzoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpBU1RD
XzV4NV9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDVfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpBU1RDXzZ4NV9TUkdCX0JMT0NLOgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkFTVENfNng1X1NS
R0JfQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1X0tIUiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVy
biBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OkFTVENfNng1X1VOT1JNX0JMT0NL
OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkFT
VENfNng1X1VOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NV9LSFIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZv
OworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OkFTVENfNng2X1NSR0JfQkxPQ0s6CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QVNUQ182eDZf
U1JHQl9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDZfS0hSLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0
dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6QVNUQ182eDZfVU5PUk1fQkxP
Q0s6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6
QVNUQ182eDZfVU5PUk1fQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hSLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6QVNUQ184eDVfU1JHQl9CTE9DSzoKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpBU1RDXzh4
NV9TUkdCX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NV9LSFIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpBU1RDXzh4NV9VTk9STV9C
TE9DSzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElE
OjpBU1RDXzh4NV9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDVfS0hSLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4g
aW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpBU1RDXzh4Nl9TUkdCX0JMT0NLOgor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkFTVENf
OHg2X1NSR0JfQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2X0tI
UiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAg
IHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OkFTVENfOHg2X1VOT1JN
X0JMT0NLOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8o
SUQ6OkFTVENfOHg2X1VOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4Nl9LSFIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVy
biBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OkFTVENfOHg4X1NSR0JfQkxPQ0s6
CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QVNU
Q184eDhfU1JHQl9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDhf
S0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAg
ICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6QVNUQ184eDhfVU5P
Uk1fQkxPQ0s6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5m
byhJRDo6QVNUQ184eDhfVU5PUk1fQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4X0tIUiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0
dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6QjRHNFI0QTRfVU5PUk06Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QjRHNFI0
QTRfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQkdSQTRf
QU5HTEVYLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPEE0UjRHNEI0
PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8QTRSNEc0
QjQsIEdMZmxvYXQ+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VO
U0lHTkVEX05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NCwgNCwgNCwgNCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIElEOjpCNUc1UjVBMV9VTk9STToKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpCNUc1UjVBMV9VTk9STSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9CR1I1X0ExX0FOR0xFWCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0I1X0ExLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPEExUjVHNUI1PiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8QTFSNUc1QjUsIEdMZmxvYXQ+LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNSwgNSwgNSwgMSwgMCwgMCk7
CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpC
NUc2UjVfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQg
aW5mbyhJRDo6QjVHNlI1X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX0JHUjU2NV9BTkdMRVgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfUkdCNTY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVy
YXRlTWlwPEI1RzZSNT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVh
ZENvbG9yPEI1RzZSNSwgR0xmbG9hdD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA1LCA2LCA1LCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OkI4RzhSOEE4X1VOT1JNOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkI4RzhSOEE4X1VOT1JNLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0JHUkE4X0VYVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9CR1JBOF9FWFQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8QjhHOFI4QTg+LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxCOEc4UjhBOCwgR0xmbG9h
dD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9S
TUFMSVpFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LCA4LCA4LCA4
LCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNh
c2UgSUQ6OkI4RzhSOFg4X1VOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgRm9ybWF0IGluZm8oSUQ6OkI4RzhSOFg4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX0JHUkE4X0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9CR1JBOF9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR2VuZXJhdGVNaXA8QjhHOFI4WDg+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFJlYWRDb2xvcjxCOEc4UjhYOCwgR0xmbG9hdD4sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA4LCA4LCA4LCAwLCAwLCAwKTsKKyAgICAgICAgICAg
IHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OkJDMV9SR0JBX1VOT1JN
X0JMT0NLOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8o
SUQ6OkJDMV9SR0JBX1VOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0
dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6QkMxX1JHQl9VTk9STV9CTE9D
SzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpC
QzFfUkdCX1VOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZv
OworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OkJDMl9SR0JBX1VOT1JNX0JMT0NLOgorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkJDMl9SR0JB
X1VOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NP
TVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZv
OworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OkJDM19SR0JBX1VOT1JNX0JMT0NLOgorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkJDM19SR0JB
X1VOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NP
TVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZv
OworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OkQxNl9VTk9STToKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpEMTZfVU5PUk0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfREVQVEhfQ09NUE9ORU5UMTYsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfREVQVEhfQ09NUE9ORU5UMTYsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMTYsIDApOworICAgICAgICAgICAgcmV0
dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6RDI0X1VOT1JNOgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkQyNF9VTk9STSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9ERVBUSF9DT01QT05FTlQy
NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9ERVBUSF9DT01QT05F
TlQyNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAyNCwgMCk7CisgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpEMjRfVU5PUk1f
UzhfVUlOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZv
KElEOjpEMjRfVU5PUk1fUzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9ERVBUSDI0X1NURU5DSUw4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX0RFUFRIMjRfU1RFTkNJTDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVE
X05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwg
MCwgMCwgMjQsIDgpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBJRDo6RDMyX0ZMT0FUOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgRm9ybWF0IGluZm8oSUQ6OkQzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9ERVBUSF9DT01QT05FTlQzMkYsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfREVQVEhfQ09NUE9ORU5UMzJGLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAw
LCAzMiwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIElEOjpEMzJfRkxPQVRfUzhYMjRfVUlOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpEMzJfRkxPQVRfUzhYMjRfVUlOVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9ERVBUSDMyRl9TVEVOQ0lMOCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9ERVBUSDMyRl9TVEVOQ0lMOCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMCwgMCwgMCwgMCwgMzIsIDgpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBJRDo6RDMyX1VOT1JNOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkQzMl9VTk9STSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9ERVBUSF9DT01QT05FTlQzMl9PRVMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfREVQVEhfQ09NUE9ORU5UMzJfT0VTLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDMyLCAwKTsKKyAgICAgICAgICAgIHJl
dHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OkVBQ19SMTFHMTFfU05PUk1f
QkxPQ0s6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJ
RDo6RUFDX1IxMUcxMV9TTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfU0lHTkVEX05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMTEsIDExLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBp
bmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OkVBQ19SMTFHMTFfVU5PUk1fQkxPQ0s6
CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6RUFD
X1IxMUcxMV9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9DT01QUkVTU0VEX1JHMTFfRUFDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX0NPTVBSRVNTRURfUkcxMV9FQUMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lH
TkVEX05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEs
IDExLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgSUQ6OkVBQ19SMTFfU05PUk1fQkxPQ0s6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6RUFDX1IxMV9TTk9STV9CTE9DSywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1NJR05FRF9S
MTFfRUFDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNT
RURfU0lHTkVEX1IxMV9FQUMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1NJR05FRF9OT1JNQUxJWkVE
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLCAwLCAwLCAwLCAwLCAw
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6
OkVBQ19SMTFfVU5PUk1fQkxPQ0s6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBGb3JtYXQgaW5mbyhJRDo6RUFDX1IxMV9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1IxMV9FQUMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SMTFfRUFDLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDExLCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZv
OworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OkVUQzJfUjhHOEI4QTFfU1JHQl9CTE9DSzoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpFVEMy
X1I4RzhCOEExX1NSR0JfQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRI
Uk9VR0hfQUxQSEExX0VUQzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTEla
RUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCwgOCwgOCwgMSwgMCwg
MCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElE
OjpFVEMyX1I4RzhCOEExX1VOT1JNX0JMT0NLOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkVUQzJfUjhHOEI4QTFfVU5PUk1fQkxPQ0ssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNI
VEhST1VHSF9BTFBIQTFfRVRDMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDgsIDgsIDgsIDEsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6RVRDMl9SOEc4QjhBOF9TUkdCX0JMT0NLOgor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkVUQzJf
UjhHOEI4QThfU1JHQl9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA4LCA4LCA4LCA4LCAwLCAwKTsKKyAgICAgICAgICAgIHJl
dHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OkVUQzJfUjhHOEI4QThfVU5P
Uk1fQkxPQ0s6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5m
byhJRDo6RVRDMl9SOEc4QjhBOF9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOCwgOCwgOCwgOCwgMCwgMCk7CisgICAgICAgICAgICByZXR1
cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpFVEMyX1I4RzhCOF9TUkdCX0JM
T0NLOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6
OkVUQzJfUjhHOEI4X1NSR0JfQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfVU5TSUdORURfTk9STUFMSVpFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA4LCA4LCA4LCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgSUQ6OkVUQzJfUjhHOEI4X1VOT1JNX0JMT0NLOgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkVUQzJfUjhHOEI4X1VO
T1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBS
RVNTRURfUkdCOF9FVEMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X0NPTVBSRVNTRURfUkdCOF9FVEMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JN
QUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsIDgsIDgsIDAs
IDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBJRDo6TDE2QTE2X0ZMT0FUOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
Rm9ybWF0IGluZm8oSUQ6OkwxNkExNl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9MVU1JTkFOQ0VfQUxQSEExNkZfRVhULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9FWFQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8TDE2QTE2Rj4sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPEwxNkExNkYsIEdMZmxvYXQ+
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0ZMT0FULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDE2LCAwLCAwKTsKKyAgICAg
ICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OkwxNl9GTE9B
VDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpM
MTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTFVNSU5B
TkNFMTZGX0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9MVU1J
TkFOQ0UxNkZfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVy
YXRlTWlwPEwxNkY+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRD
b2xvcjxMMTZGLCBHTGZsb2F0PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAw
LCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAg
IGNhc2UgSUQ6OkwzMkEzMl9GTE9BVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IEZvcm1hdCBpbmZvKElEOjpMMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfTFVNSU5BTkNFX0FMUEhBMzJGX0VYVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9MVU1JTkFOQ0VfQUxQSEEzMkZfRVhULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPEwzMkEzMkY+LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxMMzJBMzJGLCBHTGZs
b2F0PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9GTE9BVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAzMiwgMCwgMCk7Cisg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpMMzJf
RkxPQVQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJ
RDo6TDMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0xV
TUlOQU5DRTMyRl9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
TFVNSU5BTkNFMzJGX0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
ZW5lcmF0ZU1pcDxMMzJGPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS
ZWFkQ29sb3I8TDMyRiwgR0xmbG9hdD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwg
MCwgMCwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIElEOjpMOEE4X1VOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRm9ybWF0IGluZm8oSUQ6Okw4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfTFVNSU5BTkNFOF9BTFBIQThfRVhULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX0xVTUlOQU5DRThfQUxQSEE4X0VYVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxMOEE4PiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8TDhBOCwgR0xmbG9hdD4sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpF
RCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCA4LCAwLCAw
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6
Okw4X1VOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGlu
Zm8oSUQ6Okw4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X0xVTUlOQU5DRThfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X0xVTUlOQU5DRThfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdl
bmVyYXRlTWlwPEw4PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFk
Q29sb3I8TDgsIEdMZmxvYXQ+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIElEOjpOT05FOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6Ok5PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJu
IGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6UjEwRzEwQjEwQTJfVUlOVDoKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSMTBHMTBC
MTBBMl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQjEw
X0EyVUksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCMTBfQTJV
SSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMTBH
MTBCMTBBMj4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9y
PFIxMEcxMEIxMEEyLCBHTHVpbnQ+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1VOU0lHTkVEX0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxMCwgMTAsIDEwLCAyLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgSUQ6OlIxMEcxMEIxMEEyX1VOT1JNOgorICAgICAgICB7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIxMEcxMEIxMEEyX1VOT1JNLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQjEwX0EyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQjEwX0EyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIxMEcxMEIxMEEyPiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjEwRzEwQjEwQTIsIEdM
ZmxvYXQ+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVE
X05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAsIDEw
LCAxMCwgMiwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIElEOjpSMTFHMTFCMTBfRkxPQVQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjExRzExQjEwX0ZMT0FULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1IxMUZfRzExRl9CMTBGLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1IxMUZfRzExRl9CMTBGLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIxMUcxMUIxMEY+LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMTFHMTFCMTBGLCBHTGZs
b2F0PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9GTE9BVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMSwgMTEsIDEwLCAwLCAwLCAwKTsK
KyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OlIx
NkcxNkIxNkExNl9GTE9BVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZv
cm1hdCBpbmZvKElEOjpSMTZHMTZCMTZBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfUkdCQTE2RiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9SR0JBMTZGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdlbmVyYXRlTWlwPFIxNkcxNkIxNkExNkY+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFJlYWRDb2xvcjxSMTZHMTZCMTZBMTZGLCBHTGZsb2F0PiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxNiwgMTYsIDE2LCAxNiwgMCwgMCk7CisgICAgICAgICAgICByZXR1
cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpSMTZHMTZCMTZBMTZfU0lOVDoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSMTZH
MTZCMTZBMTZfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9S
R0JBMTZJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNkks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjE2RzE2
QjE2QTE2Uz4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9y
PFIxNkcxNkIxNkExNlMsIEdMaW50PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9JTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYsIDE2
LCAxNiwgMTYsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBJRDo6UjE2RzE2QjE2QTE2X1NOT1JNOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIxNkcxNkIxNkExNl9TTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZfU05PUk1fRVhULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNl9TTk9STV9FWFQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjE2RzE2QjE2
QTE2Uz4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIx
NkcxNkIxNkExNlMsIEdMZmxvYXQ+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1NJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDE2LCAxNiwgMTYsIDE2LCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OlIxNkcxNkIxNkExNl9VSU5UOgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIxNkcxNkIxNkExNl9V
SU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNlVJLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNlVJLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIxNkcxNkIxNkExNj4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIxNkcxNkIx
NkExNiwgR0x1aW50PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9V
TlNJR05FRF9JTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYsIDE2
LCAxNiwgMTYsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBJRDo6UjE2RzE2QjE2QTE2X1VOT1JNOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIxNkcxNkIxNkExNl9VTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZfRVhULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNl9FWFQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjE2RzE2QjE2QTE2PiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjE2RzE2QjE2QTE2LCBH
TGZsb2F0PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05F
RF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LCAx
NiwgMTYsIDE2LCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgSUQ6OlIxNkcxNkIxNl9GTE9BVDoKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSMTZHMTZCMTZfRkxPQVQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCMTZGLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1JHQjE2RiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMTZHMTZCMTZGPiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjE2RzE2QjE2RiwgR0xmbG9hdD4sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfRkxPQVQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTYsIDE2LCAxNiwgMCwgMCwgMCk7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpSMTZHMTZCMTZfU0lOVDoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSMTZH
MTZCMTZfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0Ix
NkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCMTZJLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIxNkcxNkIxNlM+
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMTZHMTZC
MTZTLCBHTGludD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfSU5U
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LCAxNiwgMTYsIDAsIDAs
IDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJ
RDo6UjE2RzE2QjE2X1NOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
Rm9ybWF0IGluZm8oSUQ6OlIxNkcxNkIxNl9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9SR0IxNl9TTk9STV9FWFQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfUkdCMTZfU05PUk1fRVhULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIxNkcxNkIxNlM+LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMTZHMTZCMTZTLCBHTGZsb2F0PiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9TSUdORURfTk9STUFMSVpFRCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNiwgMTYsIDE2LCAwLCAwLCAw
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6
OlIxNkcxNkIxNl9VSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9y
bWF0IGluZm8oSUQ6OlIxNkcxNkIxNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1JHQjE2VUksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfUkdCMTZVSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5l
cmF0ZU1pcDxSMTZHMTZCMTY+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJlYWRDb2xvcjxSMTZHMTZCMTYsIEdMdWludD4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDE2LCAxNiwgMTYsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6UjE2RzE2QjE2X1VOT1JNOgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIxNkcxNkIxNl9VTk9S
TSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0IxNl9FWFQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCMTZfRVhULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIxNkcxNkIxNj4sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIxNkcxNkIxNiwg
R0xmbG9hdD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdO
RURfTk9STUFMSVpFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNiwg
MTYsIDE2LCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgSUQ6OlIxNkcxNl9GTE9BVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSMTZHMTZfRkxPQVQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfUkcxNkYsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfUkcxNkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR2VuZXJhdGVNaXA8UjE2RzE2Rj4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUmVhZENvbG9yPFIxNkcxNkYsIEdMZmxvYXQ+LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDE2LCAxNiwgMCwgMCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIElEOjpSMTZHMTZfU0lOVDoKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSMTZHMTZfU0lOVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRzE2SSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9SRzE2SSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMTZHMTZTPiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBSZWFkQ29sb3I8UjE2RzE2UywgR0xpbnQ+LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxNiwgMTYsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6UjE2RzE2X1NOT1JNOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIxNkcxNl9TTk9STSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRzE2X1NOT1JNX0VYVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRzE2X1NOT1JNX0VYVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMTZHMTZTPiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjE2RzE2Uywg
R0xmbG9hdD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfU0lHTkVE
X05PUk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYsIDE2
LCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgSUQ6OlIxNkcxNl9VSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRm9ybWF0IGluZm8oSUQ6OlIxNkcxNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX1JHMTZVSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9SRzE2VUksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R2VuZXJhdGVNaXA8UjE2RzE2PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBSZWFkQ29sb3I8UjE2RzE2LCBHTHVpbnQ+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxNiwgMTYsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6UjE2RzE2X1VOT1JNOgorICAgICAgICB7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIxNkcxNl9VTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRzE2X0VYVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRzE2X0VYVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMTZHMTY+LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMTZHMTYsIEdMZmxvYXQ+LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYsIDE2LCAwLCAwLCAwLCAwKTsK
KyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OlIx
Nl9GTE9BVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZv
KElEOjpSMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
UjE2RiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SMTZGLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIxNkY+LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMTZGLCBHTGZsb2F0
PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9GTE9BVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNiwgMCwgMCwgMCwgMCwgMCk7CisgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpSMTZfU0lO
VDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpS
MTZfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SMTZJLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1IxNkksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjE2Uz4sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIxNlMsIEdMaW50PiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9JTlQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTYsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0
dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6UjE2X1NOT1JNOgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIxNl9TTk9STSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SMTZfU05PUk1fRVhULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1IxNl9TTk9STV9FWFQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjE2Uz4sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIxNlMsIEdMZmxv
YXQ+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1NJR05FRF9OT1JN
QUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LCAwLCAwLCAw
LCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNh
c2UgSUQ6OlIxNl9VSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9y
bWF0IGluZm8oSUQ6OlIxNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1IxNlVJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1Ix
NlVJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIx
Nj4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIxNiwg
R0x1aW50PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05F
RF9JTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYsIDAsIDAsIDAs
IDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBJRDo6UjE2X1VOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9y
bWF0IGluZm8oSUQ6OlIxNl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9SMTZfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X1IxNl9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVN
aXA8UjE2PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8
UjE2LCBHTGZsb2F0PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9V
TlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDE2LCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9
CisgICAgICAgIGNhc2UgSUQ6OlIzMkczMkIzMkEzMl9GTE9BVDoKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSMzJHMzJCMzJBMzJfRkxPQVQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMyRiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJGLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIzMkczMkIzMkEzMkY+LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMzJHMzJCMzJBMzJGLCBH
TGZsb2F0PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9GTE9BVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMiwgMzIsIDMyLCAzMiwgMCwg
MCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElE
OjpSMzJHMzJCMzJBMzJfU0lOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IEZvcm1hdCBpbmZvKElEOjpSMzJHMzJCMzJBMzJfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9SR0JBMzJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1JHQkEzMkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR2VuZXJhdGVNaXA8UjMyRzMyQjMyQTMyUz4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUmVhZENvbG9yPFIzMkczMkIzMkEzMlMsIEdMaW50PiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9JTlQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMzIsIDMyLCAzMiwgMzIsIDAsIDApOworICAgICAgICAgICAgcmV0dXJu
IGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6UjMyRzMyQjMyQTMyX1VJTlQ6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjMyRzMy
QjMyQTMyX1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdC
QTMyVUksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMyVUks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjMyRzMy
QjMyQTMyPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8
UjMyRzMyQjMyQTMyLCBHTHVpbnQ+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1VOU0lHTkVEX0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAzMiwgMzIsIDMyLCAzMiwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIElEOjpSMzJHMzJCMzJfRkxPQVQ6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjMyRzMyQjMyX0ZMT0FULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQjMyRiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0IzMkYsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjMyRzMyQjMyRj4sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIzMkczMkIzMkYsIEdMZmxvYXQ+LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0ZMT0FULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMyLCAzMiwgMzIsIDAsIDAsIDApOworICAgICAg
ICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6UjMyRzMyQjMy
X1NJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJ
RDo6UjMyRzMyQjMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfUkdCMzJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQjMy
SSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMzJH
MzJCMzJTPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8
UjMyRzMyQjMyUywgR0xpbnQ+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMiwgMzIsIDMy
LCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAg
IGNhc2UgSUQ6OlIzMkczMkIzMl9VSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRm9ybWF0IGluZm8oSUQ6OlIzMkczMkIzMl9VSU5ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1JHQjMyVUksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfUkdCMzJVSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHZW5lcmF0ZU1pcDxSMzJHMzJCMzI+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFJlYWRDb2xvcjxSMzJHMzJCMzIsIEdMdWludD4sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMyLCAzMiwgMzIsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0
dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6UjMyRzMyX0ZMT0FUOgorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIzMkczMl9G
TE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRzMyRiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRzMyRiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMzJHMzJGPiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjMyRzMyRiwgR0xmbG9hdD4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfRkxPQVQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzIsIDMyLCAwLCAwLCAwLCAwKTsKKyAgICAg
ICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OlIzMkczMl9T
SU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6
OlIzMkczMl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JH
MzJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHMzJJLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIzMkczMlM+LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMzJHMzJTLCBH
TGludD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfSU5ULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMyLCAzMiwgMCwgMCwgMCwgMCk7Cisg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpSMzJH
MzJfVUlOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZv
KElEOjpSMzJHMzJfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9SRzMyVUksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkczMlVJ
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIzMkcz
Mj4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIzMkcz
MiwgR0x1aW50PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJ
R05FRF9JTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzIsIDMyLCAw
LCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAg
IGNhc2UgSUQ6OlIzMl9GTE9BVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IEZvcm1hdCBpbmZvKElEOjpSMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfUjMyRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9SMzJGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlw
PFIzMkY+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxS
MzJGLCBHTGZsb2F0PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9G
TE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMiwgMCwgMCwgMCwg
MCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IElEOjpSMzJfU0lOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1h
dCBpbmZvKElEOjpSMzJfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9SMzJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1IzMkks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjMyUz4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIzMlMsIEdM
aW50PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9JTlQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzIsIDAsIDAsIDAsIDAsIDApOworICAg
ICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6UjMyX1VJ
TlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6
UjMyX1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjMyVUks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjMyVUksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjMyPiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjMyLCBHTHVpbnQ+LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMiwgMCwgMCwgMCwgMCwgMCk7CisgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpSNEc0QjRB
NF9VTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZv
KElEOjpSNEc0QjRBNF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9SR0JBNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JB
NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSNEc0
QjRBND4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFI0
RzRCNEE0LCBHTGZsb2F0PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9VTlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDQsIDQsIDQsIDQsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBJRDo6UjVHNUI1QTFfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjVHNUI1QTFfVU5PUk0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCNV9BMSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0I1X0ExLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFI1RzVCNUExPiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjVHNUI1QTEsIEdMZmxvYXQ+LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNSwgNSwgNSwgMSwgMCwgMCk7Cisg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpSNUc2
QjVfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5m
byhJRDo6UjVHNkI1X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1JHQjU2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0I1
NjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjVH
NkI1PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjVH
NkI1LCBHTGZsb2F0PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9V
TlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDUsIDYsIDUsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBJRDo6UjhHOEI4QThfU0lOVDoKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSOEc4QjhBOF9TSU5ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4SSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9SR0JBOEksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR2VuZXJhdGVNaXA8UjhHOEI4QThTPiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBSZWFkQ29sb3I8UjhHOEI4QThTLCBHTGludD4sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDgsIDgsIDgsIDgsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6UjhHOEI4QThfU05PUk06CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjhHOEI4QThfU05PUk0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQThfU05PUk0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQThfU05PUk0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjhHOEI4QThTPiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjhHOEI4QThT
LCBHTGZsb2F0PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9TSUdO
RURfTk9STUFMSVpFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LCA4
LCA4LCA4LCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgSUQ6OlI4RzhCOEE4X1VJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjhHOEI4QThfVUlOVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOFVJLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1JHQkE4VUksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR2VuZXJhdGVNaXA8UjhHOEI4QTg+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFJlYWRDb2xvcjxSOEc4QjhBOCwgR0x1aW50PiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOCwgOCwgOCwgOCwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm4g
aW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpSOEc4QjhBOF9VTk9STToKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSOEc4QjhBOF9V
Tk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4QjhBOD4sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFI4RzhCOEE4LCBHTGZsb2F0
PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JN
QUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsIDgsIDgsIDgs
IDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBJRDo6UjhHOEI4QThfVU5PUk1fU1JHQjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSOEc4QjhBOF9VTk9STV9TUkdCLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1NSR0I4X0FMUEhBOCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9TUkdCOF9BTFBIQTgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjhHOEI4QTg+LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSOEc4QjhBOCwgR0xmbG9hdD4sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpF
RCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LCA4LCA4LCA4LCAwLCAw
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6
OlI4RzhCOF9TSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0
IGluZm8oSUQ6OlI4RzhCOF9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1JHQjhJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JH
QjhJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFI4
RzhCOFM+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxS
OEc4QjhTLCBHTGludD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
SU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsIDgsIDgsIDAsIDAs
IDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJ
RDo6UjhHOEI4X1NOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9y
bWF0IGluZm8oSUQ6OlI4RzhCOF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9SR0I4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1JHQjhfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R2VuZXJhdGVNaXA8UjhHOEI4Uz4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUmVhZENvbG9yPFI4RzhCOFMsIEdMZmxvYXQ+LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1NJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDgsIDgsIDgsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6UjhHOEI4X1VJTlQ6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjhHOEI4X1VJTlQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCOFVJLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQjhVSSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4Qjg+LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSOEc4QjgsIEdMdWludD4sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsIDgsIDgsIDAsIDAsIDApOworICAgICAgICAg
ICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6UjhHOEI4X1VOT1JN
OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlI4
RzhCOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0I4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQjgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjhHOEI4PiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjhHOEI4LCBHTGZsb2F0
PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JN
QUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsIDgsIDgsIDAs
IDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBJRDo6UjhHOEI4X1VOT1JNX1NSR0I6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBGb3JtYXQgaW5mbyhJRDo6UjhHOEI4X1VOT1JNX1NSR0IsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfU1JHQjgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfU1JHQjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR2VuZXJhdGVNaXA8UjhHOEI4PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSZWFkQ29sb3I8UjhHOEI4LCBHTGZsb2F0PiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDgsIDgsIDgsIDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJu
IGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6UjhHOF9TSU5UOgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlI4RzhfU0lOVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRzhJLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHOEksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjhHOFM+LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSOEc4UywgR0xpbnQ+LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA4LCA4LCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OlI4RzhfU05PUk06CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjhHOF9TTk9STSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRzhfU05PUk0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkc4X1NOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFI4RzhTPiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjhHOFMsIEdMZmxvYXQ+LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1NJR05FRF9OT1JNQUxJWkVELAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsIDgsIDAsIDAsIDAsIDApOworICAgICAg
ICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6UjhHOF9VSU5U
OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlI4
RzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRzhVSSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRzhVSSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4PiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjhHOCwgR0x1aW50PiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCwgOCwgMCwgMCwgMCwgMCk7CisgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpSOEc4X1VO
T1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6
OlI4RzhfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkc4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHOCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4PiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjhHOCwgR0xmbG9hdD4sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpF
RCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LCA4LCAwLCAwLCAwLCAw
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6
OlI4X1NJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5m
byhJRDo6UjhfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9S
OEksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjhJLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFI4Uz4sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFI4UywgR0xpbnQ+LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0lOVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA4LCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJl
dHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OlI4X1NOT1JNOgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlI4X1NOT1JNLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1I4X1NOT1JNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1I4X1NOT1JNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFI4Uz4sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFI4UywgR0xmbG9hdD4sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfU0lHTkVEX05PUk1BTElaRUQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCwgMCwgMCwgMCwgMCwgMCk7CisgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElEOjpSOF9VSU5U
OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlI4
X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjhVSSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SOFVJLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFI4PiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjgsIEdMdWludD4sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDgsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAgICAg
cmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJRDo6UjhfVU5PUk06CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjhfVU5PUk0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8Ujg+LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJlYWRDb2xvcjxSOCwgR0xmbG9hdD4sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA4LCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIHJl
dHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgSUQ6OlI5RzlCOUU1X1NIQVJFREVY
UDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpS
OUc5QjlFNV9TSEFSRURFWFAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfUkdCOV9FNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0I5
X0U1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFI5
RzlCOUU1PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8
UjlHOUI5RTUsIEdMZmxvYXQ+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDksIDksIDks
IDAsIDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBJRDo6UzhfVUlOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZv
cm1hdCBpbmZvKElEOjpTOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1NURU5DSUxfSU5ERVg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1NURU5DSUxfSU5ERVg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgOCk7
CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorCisgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBub25lSW5m
byhJRDo6Tk9ORSwgR0xfTk9ORSwgR0xfTk9ORSwgbnVsbHB0ciwgbnVsbHB0ciwgR0xfTk9ORSwg
MCwgMCwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDApOworICAg
IHJldHVybiBub25lSW5mbzsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRnJhbWVidWZmZXJBdHRh
Y2htZW50T2JqZWN0SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9GcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3RJbXBsLmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL0ZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdEltcGwuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDM1IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0
SW1wbC5oOgorLy8gICBDb21tb24gYW5jZW5zdG9yIGZvciBhbGwgaW1wbGVtZW50YXRpb25zIG9m
IEZCTyBhdHRhY2hhYmxlLW9iamVjdHMuCisvLyAgIFRoaXMgbWVhbnMgU3VyZmFjZXMsIFRleHR1
cmVzIGFuZCBSZW5kZXJidWZmZXJzLgorLy8KKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9G
UkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9JTVBMX0hfCisjZGVmaW5lIExJQkFOR0xFX1JF
TkRFUkVSX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX0lNUExfSF8KKworI2luY2x1ZGUg
ImxpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5oIgorCituYW1lc3BhY2UgcngKK3sKKwor
Y2xhc3MgRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0SW1wbCA6IGFuZ2xlOjpOb25Db3B5YWJs
ZQoreworICBwdWJsaWM6CisgICAgRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0SW1wbCgpIHt9
CisgICAgdmlydHVhbCB+RnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0SW1wbCgpIHt9CisKKyAg
ICB2aXJ0dWFsIGdsOjpFcnJvciBnZXRBdHRhY2htZW50UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpG
cmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OlRhcmdldCAmdGFyZ2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJBdHRhY2htZW50UmVuZGVy
VGFyZ2V0ICoqcnRPdXQpCisgICAgeworICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgImdldEF0dGFjaG1lbnRSZW5kZXJU
YXJnZXQgbm90IHN1cHBvcnRlZC4iKTsKKyAgICB9Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcngK
KworI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09C
SkVDVF9JTVBMX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvRnJhbWVidWZmZXJJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0ZyYW1lYnVmZmVySW1wbC5oCShyZXZpc2lv
biAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvRnJhbWVidWZmZXJJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIGNs
YXNzIEZyYW1lYnVmZmVySW1wbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6Ci0g
ICAgZXhwbGljaXQgRnJhbWVidWZmZXJJbXBsKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGF0YSAm
ZGF0YSkgOiBtRGF0YShkYXRhKSB7IH0KKyAgICBleHBsaWNpdCBGcmFtZWJ1ZmZlckltcGwoY29u
c3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJnN0YXRlKSA6IG1TdGF0ZShzdGF0ZSkge30KICAgICB2
aXJ0dWFsIH5GcmFtZWJ1ZmZlckltcGwoKSB7IH0KIAogICAgIHZpcnR1YWwgZ2w6OkVycm9yIGRp
c2NhcmQoc2l6ZV90IGNvdW50LCBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKSA9IDA7CkBAIC0z
NSwyMCArMzUsMjAgQEAKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBpbnZhbGlkYXRlKHNpemVfdCBj
b3VudCwgY29uc3QgR0xlbnVtICphdHRhY2htZW50cykgPSAwOwogICAgIHZpcnR1YWwgZ2w6OkVy
cm9yIGludmFsaWRhdGVTdWIoc2l6ZV90IGNvdW50LCBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRz
LCBjb25zdCBnbDo6UmVjdGFuZ2xlICZhcmVhKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGdsOjpFcnJv
ciBjbGVhcihjb25zdCBnbDo6RGF0YSAmZGF0YSwgR0xiaXRmaWVsZCBtYXNrKSA9IDA7Ci0gICAg
dmlydHVhbCBnbDo6RXJyb3IgY2xlYXJCdWZmZXJmdihjb25zdCBnbDo6RGF0YSAmZGF0YSwKKyAg
ICB2aXJ0dWFsIGdsOjpFcnJvciBjbGVhcihDb250ZXh0SW1wbCAqY29udGV4dCwgR0xiaXRmaWVs
ZCBtYXNrKSA9IDA7CisgICAgdmlydHVhbCBnbDo6RXJyb3IgY2xlYXJCdWZmZXJmdihDb250ZXh0
SW1wbCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3
YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9h
dCAqdmFsdWVzKSA9IDA7Ci0gICAgdmlydHVhbCBnbDo6RXJyb3IgY2xlYXJCdWZmZXJ1aXYoY29u
c3QgZ2w6OkRhdGEgJmRhdGEsCisgICAgdmlydHVhbCBnbDo6RXJyb3IgY2xlYXJCdWZmZXJ1aXYo
Q29udGV4dEltcGwgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBkcmF3YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMdWludCAqdmFsdWVzKSA9IDA7Ci0gICAgdmlydHVhbCBnbDo6RXJyb3IgY2xlYXJCdWZm
ZXJpdihjb25zdCBnbDo6RGF0YSAmZGF0YSwKKyAgICB2aXJ0dWFsIGdsOjpFcnJvciBjbGVhckJ1
ZmZlcml2KENvbnRleHRJbXBsICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGRyYXdidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGludCAqdmFsdWVzKSA9IDA7Ci0gICAgdmlydHVhbCBnbDo6RXJyb3IgY2xlYXJC
dWZmZXJmaShjb25zdCBnbDo6RGF0YSAmZGF0YSwKKyAgICB2aXJ0dWFsIGdsOjpFcnJvciBjbGVh
ckJ1ZmZlcmZpKENvbnRleHRJbXBsICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGRyYXdidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGZsb2F0IGRlcHRoLApAQCAtNTYsMTkgKzU2LDI2IEBACiAKICAgICB2aXJ0dWFsIEdM
ZW51bSBnZXRJbXBsZW1lbnRhdGlvbkNvbG9yUmVhZEZvcm1hdCgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIEdMZW51bSBnZXRJbXBsZW1lbnRhdGlvbkNvbG9yUmVhZFR5cGUoKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCBnbDo6RXJyb3IgcmVhZFBpeGVscyhjb25zdCBnbDo6U3RhdGUgJnN0YXRl
LCBjb25zdCBnbDo6UmVjdGFuZ2xlICZhcmVhLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwg
R0x2b2lkICpwaXhlbHMpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGdsOjpFcnJvciByZWFkUGl4
ZWxzKENvbnRleHRJbXBsICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmYXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqcGl4
ZWxzKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBibGl0KGNvbnN0IGdsOjpT
dGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsIGNvbnN0IGdsOjpS
ZWN0YW5nbGUgJmRlc3RBcmVhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVs
ZCBtYXNrLCBHTGVudW0gZmlsdGVyLCBjb25zdCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZUZyYW1l
YnVmZmVyKSA9IDA7CisgICAgdmlydHVhbCBnbDo6RXJyb3IgYmxpdChDb250ZXh0SW1wbCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNv
dXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xl
ICZkZXN0QXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQgbWFzaywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWx0ZXIpID0gMDsKIAogICAgIHZp
cnR1YWwgYm9vbCBjaGVja1N0YXR1cygpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBz
eW5jU3RhdGUoY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykgPSAw
OwogCi0gICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEYXRhICZnZXREYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbURhdGE7IH0KKyAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmZ2V0U3RhdGUo
KSBjb25zdCB7IHJldHVybiBtU3RhdGU7IH0KIAogICBwcm90ZWN0ZWQ6Ci0gICAgY29uc3QgZ2w6
OkZyYW1lYnVmZmVyOjpEYXRhICZtRGF0YTsKKyAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0
ZSAmbVN0YXRlOwogfTsKIAogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL0ZyYW1lYnVmZmVySW1wbF9tb2NrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0ZyYW1lYnVmZmVySW1w
bF9tb2NrLmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9GcmFtZWJ1ZmZlckltcGxfbW9jay5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMCw3ICsyMCw3IEBACiBjbGFzcyBNb2NrRnJhbWVidWZmZXJJbXBsIDogcHVibGljIHJ4
OjpGcmFtZWJ1ZmZlckltcGwKIHsKICAgcHVibGljOgotICAgIE1vY2tGcmFtZWJ1ZmZlckltcGwo
KSA6IHJ4OjpGcmFtZWJ1ZmZlckltcGwoZ2w6OkZyYW1lYnVmZmVyOjpEYXRhKCkpIHt9CisgICAg
TW9ja0ZyYW1lYnVmZmVySW1wbCgpIDogcng6OkZyYW1lYnVmZmVySW1wbChnbDo6RnJhbWVidWZm
ZXJTdGF0ZSgpKSB7fQogICAgIHZpcnR1YWwgfk1vY2tGcmFtZWJ1ZmZlckltcGwoKSB7IGRlc3Ry
b3koKTsgfQogCiAgICAgTU9DS19NRVRIT0QyKGRpc2NhcmQsIGdsOjpFcnJvcihzaXplX3QsIGNv
bnN0IEdMZW51bSAqKSk7CkBAIC0yNywyNSArMjcsMjAgQEAKICAgICBNT0NLX01FVEhPRDIoaW52
YWxpZGF0ZSwgZ2w6OkVycm9yKHNpemVfdCwgY29uc3QgR0xlbnVtICopKTsKICAgICBNT0NLX01F
VEhPRDMoaW52YWxpZGF0ZVN1YiwgZ2w6OkVycm9yKHNpemVfdCwgY29uc3QgR0xlbnVtICosIGNv
bnN0IGdsOjpSZWN0YW5nbGUgJikpOwogCi0gICAgTU9DS19NRVRIT0QyKGNsZWFyLCBnbDo6RXJy
b3IoY29uc3QgZ2w6OkRhdGEgJiwgR0xiaXRmaWVsZCkpOwotICAgIE1PQ0tfTUVUSE9ENChjbGVh
ckJ1ZmZlcmZ2LCBnbDo6RXJyb3IoY29uc3QgZ2w6OkRhdGEgJiwgR0xlbnVtLCBHTGludCwgY29u
c3QgR0xmbG9hdCAqKSk7Ci0gICAgTU9DS19NRVRIT0Q0KGNsZWFyQnVmZmVydWl2LCBnbDo6RXJy
b3IoY29uc3QgZ2w6OkRhdGEgJiwgR0xlbnVtLCBHTGludCwgY29uc3QgR0x1aW50ICopKTsKLSAg
ICBNT0NLX01FVEhPRDQoY2xlYXJCdWZmZXJpdiwgZ2w6OkVycm9yKGNvbnN0IGdsOjpEYXRhICYs
IEdMZW51bSwgR0xpbnQsIGNvbnN0IEdMaW50ICopKTsKLSAgICBNT0NLX01FVEhPRDUoY2xlYXJC
dWZmZXJmaSwgZ2w6OkVycm9yKGNvbnN0IGdsOjpEYXRhICYsIEdMZW51bSwgR0xpbnQsIEdMZmxv
YXQsIEdMaW50KSk7CisgICAgTU9DS19NRVRIT0QyKGNsZWFyLCBnbDo6RXJyb3IoQ29udGV4dElt
cGwgKiwgR0xiaXRmaWVsZCkpOworICAgIE1PQ0tfTUVUSE9ENChjbGVhckJ1ZmZlcmZ2LCBnbDo6
RXJyb3IoQ29udGV4dEltcGwgKiwgR0xlbnVtLCBHTGludCwgY29uc3QgR0xmbG9hdCAqKSk7Cisg
ICAgTU9DS19NRVRIT0Q0KGNsZWFyQnVmZmVydWl2LCBnbDo6RXJyb3IoQ29udGV4dEltcGwgKiwg
R0xlbnVtLCBHTGludCwgY29uc3QgR0x1aW50ICopKTsKKyAgICBNT0NLX01FVEhPRDQoY2xlYXJC
dWZmZXJpdiwgZ2w6OkVycm9yKENvbnRleHRJbXBsICosIEdMZW51bSwgR0xpbnQsIGNvbnN0IEdM
aW50ICopKTsKKyAgICBNT0NLX01FVEhPRDUoY2xlYXJCdWZmZXJmaSwgZ2w6OkVycm9yKENvbnRl
eHRJbXBsICosIEdMZW51bSwgR0xpbnQsIEdMZmxvYXQsIEdMaW50KSk7CiAKICAgICBNT0NLX0NP
TlNUX01FVEhPRDAoZ2V0SW1wbGVtZW50YXRpb25Db2xvclJlYWRGb3JtYXQsIEdMZW51bSgpKTsK
ICAgICBNT0NLX0NPTlNUX01FVEhPRDAoZ2V0SW1wbGVtZW50YXRpb25Db2xvclJlYWRUeXBlLCBH
TGVudW0oKSk7Ci0gICAgTU9DS19DT05TVF9NRVRIT0Q1KAotICAgICAgICByZWFkUGl4ZWxzLAot
ICAgICAgICBnbDo6RXJyb3IoY29uc3QgZ2w6OlN0YXRlICYsIGNvbnN0IGdsOjpSZWN0YW5nbGUg
JiwgR0xlbnVtLCBHTGVudW0sIEdMdm9pZCAqKSk7CisgICAgTU9DS19DT05TVF9NRVRIT0Q1KHJl
YWRQaXhlbHMsCisgICAgICAgICAgICAgICAgICAgICAgIGdsOjpFcnJvcihDb250ZXh0SW1wbCAq
LCBjb25zdCBnbDo6UmVjdGFuZ2xlICYsIEdMZW51bSwgR0xlbnVtLCBHTHZvaWQgKikpOwogCi0g
ICAgTU9DS19NRVRIT0Q2KGJsaXQsCi0gICAgICAgICAgICAgICAgIGdsOjpFcnJvcihjb25zdCBn
bDo6U3RhdGUgJiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5n
bGUgJiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
RnJhbWVidWZmZXIgKikpOworICAgIE1PQ0tfTUVUSE9ENSgKKyAgICAgICAgYmxpdCwKKyAgICAg
ICAgZ2w6OkVycm9yKENvbnRleHRJbXBsICosIGNvbnN0IGdsOjpSZWN0YW5nbGUgJiwgY29uc3Qg
Z2w6OlJlY3RhbmdsZSAmLCBHTGJpdGZpZWxkLCBHTGVudW0pKTsKIAogICAgIE1PQ0tfQ09OU1Rf
TUVUSE9EMChjaGVja1N0YXR1cywgYm9vbCgpKTsKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0dMSW1wbEZhY3RvcnkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvR0xJbXBsRmFj
dG9yeS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9HTEltcGxGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4
OCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKy8vIEdMSW1wbEZhY3RvcnkuaDoKKy8vICAgRmFjdG9yeSBpbnRlcmZh
Y2UgZm9yIE9wZW5HTCBFUyBJbXBsIG9iamVjdHMuCisvLworCisjaWZuZGVmIExJQkFOR0xFX1JF
TkRFUkVSX0dMSU1QTEZBQ1RPUllfSF8KKyNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfR0xJTVBM
RkFDVE9SWV9IXworCisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiYW5nbGVfZ2wuaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlci5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1By
b2dyYW0uaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9TaGFkZXIuaCIKKyNpbmNsdWRlICJsaWJBTkdM
RS9UcmFuc2Zvcm1GZWVkYmFjay5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1ZlcnRleEFycmF5Lmgi
CisKK25hbWVzcGFjZSBnbAoreworY2xhc3MgQ29udGV4dFN0YXRlOworfQorCituYW1lc3BhY2Ug
cngKK3sKK2NsYXNzIEJ1ZmZlckltcGw7CitjbGFzcyBDb21waWxlckltcGw7CitjbGFzcyBDb250
ZXh0SW1wbDsKK2NsYXNzIEZlbmNlTlZJbXBsOworY2xhc3MgRmVuY2VTeW5jSW1wbDsKK2NsYXNz
IEZyYW1lYnVmZmVySW1wbDsKK2NsYXNzIFBhdGhJbXBsOworY2xhc3MgUHJvZ3JhbUltcGw7Citj
bGFzcyBRdWVyeUltcGw7CitjbGFzcyBSZW5kZXJidWZmZXJJbXBsOworY2xhc3MgU2FtcGxlcklt
cGw7CitjbGFzcyBTaGFkZXJJbXBsOworY2xhc3MgVGV4dHVyZUltcGw7CitjbGFzcyBUcmFuc2Zv
cm1GZWVkYmFja0ltcGw7CitjbGFzcyBWZXJ0ZXhBcnJheUltcGw7CisKK2NsYXNzIEdMSW1wbEZh
Y3RvcnkgOiBhbmdsZTo6Tm9uQ29weWFibGUKK3sKKyAgcHVibGljOgorICAgIEdMSW1wbEZhY3Rv
cnkoKSB7fQorICAgIHZpcnR1YWwgfkdMSW1wbEZhY3RvcnkoKSB7fQorCisgICAgLy8gU2hhZGVy
IGNyZWF0aW9uCisgICAgdmlydHVhbCBDb21waWxlckltcGwgKmNyZWF0ZUNvbXBpbGVyKCkgPSAw
OworICAgIHZpcnR1YWwgU2hhZGVySW1wbCAqY3JlYXRlU2hhZGVyKGNvbnN0IGdsOjpTaGFkZXJT
dGF0ZSAmZGF0YSkgPSAwOworICAgIHZpcnR1YWwgUHJvZ3JhbUltcGwgKmNyZWF0ZVByb2dyYW0o
Y29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmZGF0YSkgPSAwOworCisgICAgLy8gRnJhbWVidWZmZXIg
Y3JlYXRpb24KKyAgICB2aXJ0dWFsIEZyYW1lYnVmZmVySW1wbCAqY3JlYXRlRnJhbWVidWZmZXIo
Y29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJmRhdGEpID0gMDsKKworICAgIC8vIFRleHR1cmUg
Y3JlYXRpb24KKyAgICB2aXJ0dWFsIFRleHR1cmVJbXBsICpjcmVhdGVUZXh0dXJlKGNvbnN0IGds
OjpUZXh0dXJlU3RhdGUgJnN0YXRlKSA9IDA7CisKKyAgICAvLyBSZW5kZXJidWZmZXIgY3JlYXRp
b24KKyAgICB2aXJ0dWFsIFJlbmRlcmJ1ZmZlckltcGwgKmNyZWF0ZVJlbmRlcmJ1ZmZlcigpID0g
MDsKKworICAgIC8vIEJ1ZmZlciBjcmVhdGlvbgorICAgIHZpcnR1YWwgQnVmZmVySW1wbCAqY3Jl
YXRlQnVmZmVyKCkgPSAwOworCisgICAgLy8gVmVydGV4IEFycmF5IGNyZWF0aW9uCisgICAgdmly
dHVhbCBWZXJ0ZXhBcnJheUltcGwgKmNyZWF0ZVZlcnRleEFycmF5KGNvbnN0IGdsOjpWZXJ0ZXhB
cnJheVN0YXRlICZkYXRhKSA9IDA7CisKKyAgICAvLyBRdWVyeSBhbmQgRmVuY2UgY3JlYXRpb24K
KyAgICB2aXJ0dWFsIFF1ZXJ5SW1wbCAqY3JlYXRlUXVlcnkoR0xlbnVtIHR5cGUpID0gMDsKKyAg
ICB2aXJ0dWFsIEZlbmNlTlZJbXBsICpjcmVhdGVGZW5jZU5WKCkgPSAwOworICAgIHZpcnR1YWwg
RmVuY2VTeW5jSW1wbCAqY3JlYXRlRmVuY2VTeW5jKCkgPSAwOworCisgICAgLy8gVHJhbnNmb3Jt
IEZlZWRiYWNrIGNyZWF0aW9uCisgICAgdmlydHVhbCBUcmFuc2Zvcm1GZWVkYmFja0ltcGwgKmNy
ZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKAorICAgICAgICBjb25zdCBnbDo6VHJhbnNmb3JtRmVlZGJh
Y2tTdGF0ZSAmc3RhdGUpID0gMDsKKworICAgIC8vIFNhbXBsZXIgb2JqZWN0IGNyZWF0aW9uCisg
ICAgdmlydHVhbCBTYW1wbGVySW1wbCAqY3JlYXRlU2FtcGxlcigpID0gMDsKKworICAgIHZpcnR1
YWwgc3RkOjp2ZWN0b3I8UGF0aEltcGwgKj4gY3JlYXRlUGF0aHMoR0xzaXplaSByYW5nZSkgPSAw
OworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVS
RVJfR0xJTVBMRkFDVE9SWV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL0ltcGxGYWN0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0ltcGxGYWN0b3J5LmgJKHJldmlzaW9u
IDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9JbXBsRmFjdG9yeS5oCShub25leGlzdGVudCkKQEAgLTEsNzUgKzAsMCBAQAotLy8KLS8vIENv
cHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8K
LS8vIEltcGxGYWN0b3J5Lmg6Ci0vLyAgIEZhY3RvcnkgaW50ZXJmYWNlIGZvciBJbXBsIG9iamVj
dHMuCi0vLwotCi0jaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0lNUExGQUNUT1JZX0hfCi0jZGVm
aW5lIExJQkFOR0xFX1JFTkRFUkVSX0lNUExGQUNUT1JZX0hfCi0KLSNpbmNsdWRlICJsaWJBTkdM
RS9GcmFtZWJ1ZmZlci5oIgotI2luY2x1ZGUgImxpYkFOR0xFL1Byb2dyYW0uaCIKLSNpbmNsdWRl
ICJsaWJBTkdMRS9TaGFkZXIuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9WZXJ0ZXhBcnJheS5oIgot
Ci1uYW1lc3BhY2UgcngKLXsKLWNsYXNzIEJ1ZmZlckltcGw7Ci1jbGFzcyBDb21waWxlckltcGw7
Ci1jbGFzcyBGZW5jZU5WSW1wbDsKLWNsYXNzIEZlbmNlU3luY0ltcGw7Ci1jbGFzcyBGcmFtZWJ1
ZmZlckltcGw7Ci1jbGFzcyBQcm9ncmFtSW1wbDsKLWNsYXNzIFF1ZXJ5SW1wbDsKLWNsYXNzIFJl
bmRlcmJ1ZmZlckltcGw7Ci1jbGFzcyBTYW1wbGVySW1wbDsKLWNsYXNzIFNoYWRlckltcGw7Ci1j
bGFzcyBUZXh0dXJlSW1wbDsKLWNsYXNzIFRyYW5zZm9ybUZlZWRiYWNrSW1wbDsKLWNsYXNzIFZl
cnRleEFycmF5SW1wbDsKLWNsYXNzIFN0cmVhbUltcGw7Ci0KLWNsYXNzIEltcGxGYWN0b3J5IDog
YW5nbGU6Ok5vbkNvcHlhYmxlCi17Ci0gIHB1YmxpYzoKLSAgICBJbXBsRmFjdG9yeSgpIHt9Ci0g
ICAgdmlydHVhbCB+SW1wbEZhY3RvcnkoKSB7fQotCi0gICAgLy8gU2hhZGVyIGNyZWF0aW9uCi0g
ICAgdmlydHVhbCBDb21waWxlckltcGwgKmNyZWF0ZUNvbXBpbGVyKCkgPSAwOwotICAgIHZpcnR1
YWwgU2hhZGVySW1wbCAqY3JlYXRlU2hhZGVyKGNvbnN0IGdsOjpTaGFkZXI6OkRhdGEgJmRhdGEp
ID0gMDsKLSAgICB2aXJ0dWFsIFByb2dyYW1JbXBsICpjcmVhdGVQcm9ncmFtKGNvbnN0IGdsOjpQ
cm9ncmFtOjpEYXRhICZkYXRhKSA9IDA7Ci0KLSAgICAvLyBGcmFtZWJ1ZmZlciBjcmVhdGlvbgot
ICAgIHZpcnR1YWwgRnJhbWVidWZmZXJJbXBsICpjcmVhdGVGcmFtZWJ1ZmZlcihjb25zdCBnbDo6
RnJhbWVidWZmZXI6OkRhdGEgJmRhdGEpID0gMDsKLQotICAgIC8vIFRleHR1cmUgY3JlYXRpb24K
LSAgICB2aXJ0dWFsIFRleHR1cmVJbXBsICpjcmVhdGVUZXh0dXJlKEdMZW51bSB0YXJnZXQpID0g
MDsKLQotICAgIC8vIFJlbmRlcmJ1ZmZlciBjcmVhdGlvbgotICAgIHZpcnR1YWwgUmVuZGVyYnVm
ZmVySW1wbCAqY3JlYXRlUmVuZGVyYnVmZmVyKCkgPSAwOwotCi0gICAgLy8gQnVmZmVyIGNyZWF0
aW9uCi0gICAgdmlydHVhbCBCdWZmZXJJbXBsICpjcmVhdGVCdWZmZXIoKSA9IDA7Ci0KLSAgICAv
LyBWZXJ0ZXggQXJyYXkgY3JlYXRpb24KLSAgICB2aXJ0dWFsIFZlcnRleEFycmF5SW1wbCAqY3Jl
YXRlVmVydGV4QXJyYXkoY29uc3QgZ2w6OlZlcnRleEFycmF5OjpEYXRhICZkYXRhKSA9IDA7Ci0K
LSAgICAvLyBRdWVyeSBhbmQgRmVuY2UgY3JlYXRpb24KLSAgICB2aXJ0dWFsIFF1ZXJ5SW1wbCAq
Y3JlYXRlUXVlcnkoR0xlbnVtIHR5cGUpID0gMDsKLSAgICB2aXJ0dWFsIEZlbmNlTlZJbXBsICpj
cmVhdGVGZW5jZU5WKCkgPSAwOwotICAgIHZpcnR1YWwgRmVuY2VTeW5jSW1wbCAqY3JlYXRlRmVu
Y2VTeW5jKCkgPSAwOwotCi0gICAgLy8gVHJhbnNmb3JtIEZlZWRiYWNrIGNyZWF0aW9uCi0gICAg
dmlydHVhbCBUcmFuc2Zvcm1GZWVkYmFja0ltcGwgKmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkg
PSAwOwotCi0gICAgLy8gU2FtcGxlciBvYmplY3QgY3JlYXRpb24KLSAgICB2aXJ0dWFsIFNhbXBs
ZXJJbXBsICpjcmVhdGVTYW1wbGVyKCkgPSAwOwotfTsKLQotfQotCi0jZW5kaWYgLy8gTElCQU5H
TEVfUkVOREVSRVJfSU1QTEZBQ1RPUllfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9JbmRleFJhbmdlQ2FjaGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9JbmRleFJhbmdl
Q2FjaGUuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvSW5kZXhSYW5nZUNhY2hlLmNwcAkobm9uZXhpc3RlbnQpCkBA
IC0xLDExNCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gSW5kZXhSYW5nZUNhY2hlLmNwcDog
RGVmaW5lcyB0aGUgcng6OkluZGV4UmFuZ2VDYWNoZSBjbGFzcyB3aGljaCBzdG9yZXMgaW5mb3Jt
YXRpb24gYWJvdXQKLS8vIHJhbmdlcyBvZiBpbmRpY2VzLgotCi0jaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvSW5kZXhSYW5nZUNhY2hlLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvZm9ybWF0dXRp
bHMuaCIKLQotI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgotCi1uYW1lc3BhY2UgcngKLXsKLQot
dGVtcGxhdGUgPGNsYXNzIEluZGV4VHlwZT4KLXN0YXRpYyBSYW5nZVVJIENvbXB1dGVUeXBlZFJh
bmdlKGNvbnN0IEluZGV4VHlwZSAqaW5kaWNlcywgR0xzaXplaSBjb3VudCkKLXsKLSAgICB1bnNp
Z25lZCBpbnQgbWluSW5kZXggPSBpbmRpY2VzWzBdOwotICAgIHVuc2lnbmVkIGludCBtYXhJbmRl
eCA9IGluZGljZXNbMF07Ci0KLSAgICBmb3IgKEdMc2l6ZWkgaSA9IDE7IGkgPCBjb3VudDsgaSsr
KQotICAgIHsKLSAgICAgICAgaWYgKG1pbkluZGV4ID4gaW5kaWNlc1tpXSkgbWluSW5kZXggPSBp
bmRpY2VzW2ldOwotICAgICAgICBpZiAobWF4SW5kZXggPCBpbmRpY2VzW2ldKSBtYXhJbmRleCA9
IGluZGljZXNbaV07Ci0gICAgfQotCi0gICAgcmV0dXJuIFJhbmdlVUkobWluSW5kZXgsIG1heElu
ZGV4KTsKLX0KLQotUmFuZ2VVSSBJbmRleFJhbmdlQ2FjaGU6OkNvbXB1dGVSYW5nZShHTGVudW0g
dHlwZSwgY29uc3QgR0x2b2lkICppbmRpY2VzLCBHTHNpemVpIGNvdW50KQotewotICAgIHN3aXRj
aCAodHlwZSkKLSAgICB7Ci0gICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6Ci0gICAgICAgIHJl
dHVybiBDb21wdXRlVHlwZWRSYW5nZShzdGF0aWNfY2FzdDxjb25zdCBHTHVieXRlKj4oaW5kaWNl
cyksIGNvdW50KTsKLSAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgotICAgICAgICByZXR1cm4g
Q29tcHV0ZVR5cGVkUmFuZ2Uoc3RhdGljX2Nhc3Q8Y29uc3QgR0x1aW50Kj4oaW5kaWNlcyksIGNv
dW50KTsKLSAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6Ci0gICAgICAgIHJldHVybiBDb21w
dXRlVHlwZWRSYW5nZShzdGF0aWNfY2FzdDxjb25zdCBHTHVzaG9ydCo+KGluZGljZXMpLCBjb3Vu
dCk7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICByZXR1
cm4gUmFuZ2VVSSgpOwotICAgIH0KLX0KLQotdm9pZCBJbmRleFJhbmdlQ2FjaGU6OmFkZFJhbmdl
KEdMZW51bSB0eXBlLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBHTHNpemVpIGNvdW50LCBjb25zdCBS
YW5nZVVJICZyYW5nZSkKLXsKLSAgICBtSW5kZXhSYW5nZUNhY2hlW0luZGV4UmFuZ2UodHlwZSwg
b2Zmc2V0LCBjb3VudCldID0gcmFuZ2U7Ci19Ci0KLXZvaWQgSW5kZXhSYW5nZUNhY2hlOjppbnZh
bGlkYXRlUmFuZ2UodW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IHNpemUpCi17Ci0g
ICAgdW5zaWduZWQgaW50IGludmFsaWRhdGVTdGFydCA9IG9mZnNldDsKLSAgICB1bnNpZ25lZCBp
bnQgaW52YWxpZGF0ZUVuZCA9IG9mZnNldCArIHNpemU7Ci0KLSAgICBJbmRleFJhbmdlTWFwOjpp
dGVyYXRvciBpID0gbUluZGV4UmFuZ2VDYWNoZS5iZWdpbigpOwotICAgIHdoaWxlIChpICE9IG1J
bmRleFJhbmdlQ2FjaGUuZW5kKCkpCi0gICAgewotICAgICAgICB1bnNpZ25lZCBpbnQgcmFuZ2VT
dGFydCA9IGktPmZpcnN0Lm9mZnNldDsKLSAgICAgICAgdW5zaWduZWQgaW50IHJhbmdlRW5kID0g
aS0+Zmlyc3Qub2Zmc2V0ICsgKGdsOjpHZXRUeXBlSW5mbyhpLT5maXJzdC50eXBlKS5ieXRlcyAq
IGktPmZpcnN0LmNvdW50KTsKLQotICAgICAgICBpZiAoaW52YWxpZGF0ZUVuZCA8IHJhbmdlU3Rh
cnQgfHwgaW52YWxpZGF0ZVN0YXJ0ID4gcmFuZ2VFbmQpCi0gICAgICAgIHsKLSAgICAgICAgICAg
ICsraTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1J
bmRleFJhbmdlQ2FjaGUuZXJhc2UoaSsrKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotYm9vbCBJ
bmRleFJhbmdlQ2FjaGU6OmZpbmRSYW5nZShHTGVudW0gdHlwZSwgdW5zaWduZWQgaW50IG9mZnNl
dCwgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFuZ2VV
SSAqb3V0UmFuZ2UpIGNvbnN0Ci17Ci0gICAgSW5kZXhSYW5nZU1hcDo6Y29uc3RfaXRlcmF0b3Ig
aSA9IG1JbmRleFJhbmdlQ2FjaGUuZmluZChJbmRleFJhbmdlKHR5cGUsIG9mZnNldCwgY291bnQp
KTsKLSAgICBpZiAoaSAhPSBtSW5kZXhSYW5nZUNhY2hlLmVuZCgpKQotICAgIHsKLSAgICAgICAg
aWYgKG91dFJhbmdlKSAgICAgICAgKm91dFJhbmdlID0gaS0+c2Vjb25kOwotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgaWYgKG91dFJhbmdlKSAg
ICAgICAgKm91dFJhbmdlID0gUmFuZ2VVSSgwLCAwKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLX0KLQotdm9pZCBJbmRleFJhbmdlQ2FjaGU6OmNsZWFyKCkKLXsKLSAgICBtSW5kZXhS
YW5nZUNhY2hlLmNsZWFyKCk7Ci19Ci0KLUluZGV4UmFuZ2VDYWNoZTo6SW5kZXhSYW5nZTo6SW5k
ZXhSYW5nZSgpCi0gICAgOiB0eXBlKEdMX05PTkUpLCBvZmZzZXQoMCksIGNvdW50KDApCi17Ci19
Ci0KLUluZGV4UmFuZ2VDYWNoZTo6SW5kZXhSYW5nZTo6SW5kZXhSYW5nZShHTGVudW0gdHlwLCBp
bnRwdHJfdCBvZmYsIEdMc2l6ZWkgYykKLSAgICA6IHR5cGUodHlwKSwgb2Zmc2V0KHN0YXRpY19j
YXN0PHVuc2lnbmVkIGludD4ob2ZmKSksIGNvdW50KGMpCi17Ci19Ci0KLWJvb2wgSW5kZXhSYW5n
ZUNhY2hlOjpJbmRleFJhbmdlOjpvcGVyYXRvcjwoY29uc3QgSW5kZXhSYW5nZSYgcmhzKSBjb25z
dAotewotICAgIGlmICh0eXBlICE9IHJocy50eXBlKSByZXR1cm4gdHlwZSA8IHJocy50eXBlOwot
ICAgIGlmIChvZmZzZXQgIT0gcmhzLm9mZnNldCkgcmV0dXJuIG9mZnNldCA8IHJocy5vZmZzZXQ7
Ci0gICAgcmV0dXJuIGNvdW50IDwgcmhzLmNvdW50OwotfQotCi19CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvSW5kZXhSYW5nZUNhY2hlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L0luZGV4UmFuZ2VDYWNoZS5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvSW5kZXhSYW5nZUNhY2hlLmgJKG5vbmV4aXN0
ZW50KQpAQCAtMSw1MyArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Ci0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gSW5kZXhSYW5nZUNhY2hl
Lmg6IERlZmluZXMgdGhlIHJ4OjpJbmRleFJhbmdlQ2FjaGUgY2xhc3Mgd2hpY2ggc3RvcmVzIGlu
Zm9ybWF0aW9uIGFib3V0Ci0vLyByYW5nZXMgb2YgaW5kaWNlcy4KLQotI2lmbmRlZiBMSUJBTkdM
RV9SRU5ERVJFUl9JTkRFWFJBTkdFQ0FDSEVfSF8KLSNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJf
SU5ERVhSQU5HRUNBQ0hFX0hfCi0KLSNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgotI2lu
Y2x1ZGUgImNvbW1vbi9tYXRodXRpbC5oIgotCi0jaW5jbHVkZSAiYW5nbGVfZ2wuaCIKLQotI2lu
Y2x1ZGUgPG1hcD4KLQotbmFtZXNwYWNlIHJ4Ci17Ci0KLWNsYXNzIEluZGV4UmFuZ2VDYWNoZQot
ewotICBwdWJsaWM6Ci0gICAgdm9pZCBhZGRSYW5nZShHTGVudW0gdHlwZSwgdW5zaWduZWQgaW50
IG9mZnNldCwgR0xzaXplaSBjb3VudCwgY29uc3QgUmFuZ2VVSSAmcmFuZ2UpOwotICAgIGJvb2wg
ZmluZFJhbmdlKEdMZW51bSB0eXBlLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBHTHNpemVpIGNvdW50
LCBSYW5nZVVJICpyYW5nZU91dCkgY29uc3Q7Ci0KLSAgICB2b2lkIGludmFsaWRhdGVSYW5nZSh1
bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgc2l6ZSk7Ci0gICAgdm9pZCBjbGVhcigp
OwotCi0gICAgc3RhdGljIFJhbmdlVUkgQ29tcHV0ZVJhbmdlKEdMZW51bSB0eXBlLCBjb25zdCBH
THZvaWQgKmluZGljZXMsIEdMc2l6ZWkgY291bnQpOwotCi0gIHByaXZhdGU6Ci0gICAgc3RydWN0
IEluZGV4UmFuZ2UKLSAgICB7Ci0gICAgICAgIEdMZW51bSB0eXBlOwotICAgICAgICB1bnNpZ25l
ZCBpbnQgb2Zmc2V0OwotICAgICAgICBHTHNpemVpIGNvdW50OwotCi0gICAgICAgIEluZGV4UmFu
Z2UoKTsKLSAgICAgICAgSW5kZXhSYW5nZShHTGVudW0gdHlwZSwgaW50cHRyX3Qgb2Zmc2V0LCBH
THNpemVpIGNvdW50KTsKLQotICAgICAgICBib29sIG9wZXJhdG9yPChjb25zdCBJbmRleFJhbmdl
JiByaHMpIGNvbnN0OwotICAgIH07Ci0KLSAgICB0eXBlZGVmIHN0ZDo6bWFwPEluZGV4UmFuZ2Us
IFJhbmdlVUk+IEluZGV4UmFuZ2VNYXA7Ci0gICAgSW5kZXhSYW5nZU1hcCBtSW5kZXhSYW5nZUNh
Y2hlOwotfTsKLQotfQotCi0jZW5kaWYgLy8gTElCQU5HTEVfUkVOREVSRVJfSU5ERVhSQU5HRUNB
Q0hFX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvUGF0aEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvUGF0aEltcGwuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvUGF0aEltcGwuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDM2IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBQYXRoSW1wbC5o
OiBEZWZpbmVzIHRoZSBQYXRoIGltcGxlbWVudGF0aW9uIGludGVyZmFjZSBmb3IKKy8vIENIUk9N
SVVNX3BhdGhfcmVuZGVyaW5nIHBhdGggb2JqZWN0cy4KKworI2lmbmRlZiBMSUJBTkdMRV9SRU5E
RVJFUl9QQVRISU1QTF9IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9QQVRISU1QTF9IXwor
CisjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgor
I2luY2x1ZGUgImxpYkFOR0xFL0Vycm9yLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBQ
YXRoSW1wbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQoreworICBwdWJsaWM6CisgICAgdmlydHVhbCB+
UGF0aEltcGwoKSB7fQorCisgICAgdmlydHVhbCBnbDo6RXJyb3Igc2V0Q29tbWFuZHMoR0xzaXpl
aSBudW1Db21tYW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THVieXRlICpjb21tYW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIG51bUNvb3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
Y29vcmRUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQg
KmNvb3JkcykgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldFBhdGhQYXJhbWV0ZXIoR0xlbnVt
IHBuYW1lLCBHTGZsb2F0IHZhbHVlKSA9IDA7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcngKKwor
I2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9QQVRISU1QTF9IXwpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1Byb2dyYW1JbXBsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
UHJvZ3JhbUltcGwuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvUHJvZ3JhbUltcGwuY3BwCShub25leGlzdGVudCkK
QEAgLTEsMTU2ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBQcm9ncmFtRDNELmNwcDogRGVm
aW5lcyB0aGUgcng6OlByb2dyYW1EM0QgY2xhc3Mgd2hpY2ggaW1wbGVtZW50cyByeDo6UHJvZ3Jh
bUltcGwuCi0KLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9Qcm9ncmFtSW1wbC5oIgotCi0j
aW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5oIgotCi1uYW1lc3BhY2UgcngKLXsKLQotTGlua1Jl
c3VsdDo6TGlua1Jlc3VsdChib29sIGxpbmtTdWNjZXNzLCBjb25zdCBnbDo6RXJyb3IgJmVycm9y
KQotICAgIDogbGlua1N1Y2Nlc3MobGlua1N1Y2Nlc3MpLAotICAgICAgZXJyb3IoZXJyb3IpCi17
Ci19Ci0KLVByb2dyYW1JbXBsOjp+UHJvZ3JhbUltcGwoKQotewotICAgIC8vIEVuc3VyZSB0aGF0
IHJlc2V0IHdhcyBjYWxsZWQgYnkgdGhlIGluaGVyaXRlZCBjbGFzcyBkdXJpbmcgZGVzdHJ1Y3Rp
b24KLSAgICBBU1NFUlQobVVuaWZvcm1JbmRleC5zaXplKCkgPT0gMCk7Ci19Ci0KLWdsOjpMaW5r
ZWRVbmlmb3JtICpQcm9ncmFtSW1wbDo6Z2V0VW5pZm9ybUJ5TG9jYXRpb24oR0xpbnQgbG9jYXRp
b24pIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGxvY2F0aW9uID49IDAgJiYgc3RhdGljX2Nhc3Q8c2l6
ZV90Pihsb2NhdGlvbikgPCBtVW5pZm9ybUluZGV4LnNpemUoKSk7Ci0gICAgcmV0dXJuIG1Vbmlm
b3Jtc1ttVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5pbmRleF07Ci19Ci0KLWdsOjpMaW5rZWRVbmlm
b3JtICpQcm9ncmFtSW1wbDo6Z2V0VW5pZm9ybUJ5TmFtZShjb25zdCBzdGQ6OnN0cmluZyAmbmFt
ZSkgY29uc3QKLXsKLSAgICBmb3IgKHNpemVfdCB1bmlmb3JtSW5kZXggPSAwOyB1bmlmb3JtSW5k
ZXggPCBtVW5pZm9ybXMuc2l6ZSgpOyB1bmlmb3JtSW5kZXgrKykKLSAgICB7Ci0gICAgICAgIGlm
IChtVW5pZm9ybXNbdW5pZm9ybUluZGV4XS0+bmFtZSA9PSBuYW1lKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gbVVuaWZvcm1zW3VuaWZvcm1JbmRleF07Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICByZXR1cm4gTlVMTDsKLX0KLQotZ2w6OlVuaWZvcm1CbG9jayAqUHJvZ3JhbUltcGw6
OmdldFVuaWZvcm1CbG9ja0J5SW5kZXgoR0x1aW50IGJsb2NrSW5kZXgpIGNvbnN0Ci17Ci0gICAg
QVNTRVJUKGJsb2NrSW5kZXggPCBtVW5pZm9ybUJsb2Nrcy5zaXplKCkpOwotICAgIHJldHVybiBt
VW5pZm9ybUJsb2Nrc1tibG9ja0luZGV4XTsKLX0KLQotR0xpbnQgUHJvZ3JhbUltcGw6OmdldFVu
aWZvcm1Mb2NhdGlvbihjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkgY29uc3QKLXsKLSAgICBzaXpl
X3Qgc3Vic2NyaXB0ID0gR0xfSU5WQUxJRF9JTkRFWDsKLSAgICBzdGQ6OnN0cmluZyBiYXNlTmFt
ZSA9IGdsOjpQYXJzZVVuaWZvcm1OYW1lKG5hbWUsICZzdWJzY3JpcHQpOwotCi0gICAgdW5zaWdu
ZWQgaW50IG51bVVuaWZvcm1zID0gbVVuaWZvcm1JbmRleC5zaXplKCk7Ci0gICAgZm9yICh1bnNp
Z25lZCBpbnQgbG9jYXRpb24gPSAwOyBsb2NhdGlvbiA8IG51bVVuaWZvcm1zOyBsb2NhdGlvbisr
KQotICAgIHsKLSAgICAgICAgaWYgKG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLm5hbWUgPT0gYmFz
ZU5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IGludCBpbmRleCA9IG1Vbmlmb3Jt
SW5kZXhbbG9jYXRpb25dLmluZGV4OwotICAgICAgICAgICAgY29uc3QgYm9vbCBpc0FycmF5ID0g
bVVuaWZvcm1zW2luZGV4XS0+aXNBcnJheSgpOwotCi0gICAgICAgICAgICBpZiAoKGlzQXJyYXkg
JiYgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCA9PSBzdWJzY3JpcHQpIHx8Ci0gICAg
ICAgICAgICAgICAgKHN1YnNjcmlwdCA9PSBHTF9JTlZBTElEX0lOREVYKSkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbG9jYXRpb247Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gLTE7Ci19Ci0KLUdMdWludCBQcm9ncmFtSW1wbDo6
Z2V0VW5pZm9ybUluZGV4KGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25zdAotewotICAgIHNp
emVfdCBzdWJzY3JpcHQgPSBHTF9JTlZBTElEX0lOREVYOwotICAgIHN0ZDo6c3RyaW5nIGJhc2VO
YW1lID0gZ2w6OlBhcnNlVW5pZm9ybU5hbWUobmFtZSwgJnN1YnNjcmlwdCk7Ci0KLSAgICAvLyBU
aGUgYXBwIGlzIG5vdCBhbGxvd2VkIHRvIHNwZWNpZnkgYXJyYXkgaW5kaWNlcyBvdGhlciB0aGFu
IDAgZm9yIGFycmF5cyBvZiBiYXNpYyB0eXBlcwotICAgIGlmIChzdWJzY3JpcHQgIT0gMCAmJiBz
dWJzY3JpcHQgIT0gR0xfSU5WQUxJRF9JTkRFWCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBHTF9J
TlZBTElEX0lOREVYOwotICAgIH0KLQotICAgIHVuc2lnbmVkIGludCBudW1Vbmlmb3JtcyA9IG1V
bmlmb3Jtcy5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaW5kZXggPSAwOyBpbmRleCA8
IG51bVVuaWZvcm1zOyBpbmRleCsrKQotICAgIHsKLSAgICAgICAgaWYgKG1Vbmlmb3Jtc1tpbmRl
eF0tPm5hbWUgPT0gYmFzZU5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtVW5pZm9y
bXNbaW5kZXhdLT5pc0FycmF5KCkgfHwgc3Vic2NyaXB0ID09IEdMX0lOVkFMSURfSU5ERVgpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4OwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIEdMX0lOVkFMSURfSU5ERVg7Ci19Ci0K
LUdMdWludCBQcm9ncmFtSW1wbDo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgoY29uc3Qgc3RkOjpzdHJp
bmcgJm5hbWUpIGNvbnN0Ci17Ci0gICAgc2l6ZV90IHN1YnNjcmlwdCA9IEdMX0lOVkFMSURfSU5E
RVg7Ci0gICAgc3RkOjpzdHJpbmcgYmFzZU5hbWUgPSBnbDo6UGFyc2VVbmlmb3JtTmFtZShuYW1l
LCAmc3Vic2NyaXB0KTsKLQotICAgIHVuc2lnbmVkIGludCBudW1Vbmlmb3JtQmxvY2tzID0gbVVu
aWZvcm1CbG9ja3Muc2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgaW50IGJsb2NrSW5kZXggPSAw
OyBibG9ja0luZGV4IDwgbnVtVW5pZm9ybUJsb2NrczsgYmxvY2tJbmRleCsrKQotICAgIHsKLSAg
ICAgICAgY29uc3QgZ2w6OlVuaWZvcm1CbG9jayAmdW5pZm9ybUJsb2NrID0gKm1Vbmlmb3JtQmxv
Y2tzW2Jsb2NrSW5kZXhdOwotICAgICAgICBpZiAodW5pZm9ybUJsb2NrLm5hbWUgPT0gYmFzZU5h
bWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IGJvb2wgYXJyYXlFbGVtZW50WmVybyA9
IChzdWJzY3JpcHQgPT0gR0xfSU5WQUxJRF9JTkRFWCAmJiB1bmlmb3JtQmxvY2suZWxlbWVudElu
ZGV4ID09IDApOwotICAgICAgICAgICAgaWYgKHN1YnNjcmlwdCA9PSB1bmlmb3JtQmxvY2suZWxl
bWVudEluZGV4IHx8IGFycmF5RWxlbWVudFplcm8pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGJsb2NrSW5kZXg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICByZXR1cm4gR0xfSU5WQUxJRF9JTkRFWDsKLX0KLQotdm9pZCBQcm9ncmFtSW1wbDo6
cmVzZXQoKQotewotICAgIHN0ZDo6ZmlsbChtU2VtYW50aWNJbmRleCwgbVNlbWFudGljSW5kZXgg
KyBBcnJheVNpemUobVNlbWFudGljSW5kZXgpLCAtMSk7Ci0gICAgU2FmZURlbGV0ZUNvbnRhaW5l
cihtVW5pZm9ybXMpOwotICAgIG1Vbmlmb3JtSW5kZXguY2xlYXIoKTsKLSAgICBTYWZlRGVsZXRl
Q29udGFpbmVyKG1Vbmlmb3JtQmxvY2tzKTsKLSAgICBtVHJhbnNmb3JtRmVlZGJhY2tMaW5rZWRW
YXJ5aW5ncy5jbGVhcigpOwotfQotCi12b2lkIFByb2dyYW1JbXBsOjpzZXRTaGFkZXJBdHRyaWJ1
dGUoc2l6ZV90IGluZGV4LCBjb25zdCBzaDo6QXR0cmlidXRlICZhdHRyaWIpCi17Ci0gICAgaWYg
KG1TaGFkZXJBdHRyaWJ1dGVzLnNpemUoKSA8PSBpbmRleCkKLSAgICB7Ci0gICAgICAgIG1TaGFk
ZXJBdHRyaWJ1dGVzLnJlc2l6ZShpbmRleCArIDEpOwotICAgIH0KLSAgICBtU2hhZGVyQXR0cmli
dXRlc1tpbmRleF0gPSBhdHRyaWI7Ci19Ci0KLXZvaWQgUHJvZ3JhbUltcGw6OnNldFNoYWRlckF0
dHJpYnV0ZShzaXplX3QgaW5kZXgsIEdMZW51bSB0eXBlLCBHTGVudW0gcHJlY2lzaW9uLCBjb25z
dCBzdGQ6OnN0cmluZyAmbmFtZSwgR0xpbnQgc2l6ZSwgaW50IGxvY2F0aW9uKQotewotICAgIGlm
IChtU2hhZGVyQXR0cmlidXRlcy5zaXplKCkgPD0gaW5kZXgpCi0gICAgewotICAgICAgICBtU2hh
ZGVyQXR0cmlidXRlcy5yZXNpemUoaW5kZXggKyAxKTsKLSAgICB9Ci0gICAgbVNoYWRlckF0dHJp
YnV0ZXNbaW5kZXhdLnR5cGUgPSB0eXBlOwotICAgIG1TaGFkZXJBdHRyaWJ1dGVzW2luZGV4XS5w
cmVjaXNpb24gPSBwcmVjaXNpb247Ci0gICAgbVNoYWRlckF0dHJpYnV0ZXNbaW5kZXhdLm5hbWUg
PSBuYW1lOwotICAgIG1TaGFkZXJBdHRyaWJ1dGVzW2luZGV4XS5hcnJheVNpemUgPSBzaXplOwot
ICAgIG1TaGFkZXJBdHRyaWJ1dGVzW2luZGV4XS5sb2NhdGlvbiA9IGxvY2F0aW9uOwotfQotCi19
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvUHJv
Z3JhbUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvUHJvZ3JhbUltcGwuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1Byb2dyYW1JbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE0LDEwICsxNCwxNCBAQAogI2luY2x1ZGUgImxpYkFOR0xFL0NvbnN0
YW50cy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1Byb2dyYW0uaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9TaGFkZXIuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9SZW5kZXJlci5oIgogCiAj
aW5jbHVkZSA8bWFwPgogCituYW1lc3BhY2Ugc2gKK3sKK3N0cnVjdCBCbG9ja01lbWJlckluZm87
Cit9CisKIG5hbWVzcGFjZSByeAogewogCkBAIC0zMiw3ICszNiw3IEBACiBjbGFzcyBQcm9ncmFt
SW1wbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6Ci0gICAgUHJvZ3JhbUltcGwo
Y29uc3QgZ2w6OlByb2dyYW06OkRhdGEgJmRhdGEpIDogbURhdGEoZGF0YSkge30KKyAgICBQcm9n
cmFtSW1wbChjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZzdGF0ZSkgOiBtU3RhdGUoc3RhdGUpIHt9
CiAgICAgdmlydHVhbCB+UHJvZ3JhbUltcGwoKSB7fQogCiAgICAgdmlydHVhbCBMaW5rUmVzdWx0
IGxvYWQoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGdsOjpCaW5hcnlJbnB1dFN0cmVhbSAqc3RyZWFt
KSA9IDA7CkBAIC0zOSw3ICs0Myw3IEBACiAgICAgdmlydHVhbCBnbDo6RXJyb3Igc2F2ZShnbDo6
QmluYXJ5T3V0cHV0U3RyZWFtICpzdHJlYW0pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Qmlu
YXJ5UmV0cmlldmFibGVIaW50KGJvb2wgcmV0cmlldmFibGUpID0gMDsKIAotICAgIHZpcnR1YWwg
TGlua1Jlc3VsdCBsaW5rKGNvbnN0IGdsOjpEYXRhICZkYXRhLCBnbDo6SW5mb0xvZyAmaW5mb0xv
ZykgPSAwOworICAgIHZpcnR1YWwgTGlua1Jlc3VsdCBsaW5rKGNvbnN0IGdsOjpDb250ZXh0U3Rh
dGUgJmRhdGEsIGdsOjpJbmZvTG9nICZpbmZvTG9nKSA9IDA7CiAgICAgdmlydHVhbCBHTGJvb2xl
YW4gdmFsaWRhdGUoY29uc3QgZ2w6OkNhcHMgJmNhcHMsIGdsOjpJbmZvTG9nICppbmZvTG9nKSA9
IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0VW5pZm9ybTFmdihHTGludCBsb2NhdGlvbiwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikgPSAwOwpAQCAtNzUsOSArNzksMTUgQEAKICAg
ICAvLyBSZXR1cm5zIGZhbHNlIGZvciBpbmFjdGl2ZSBtZW1iZXJzLgogICAgIHZpcnR1YWwgYm9v
bCBnZXRVbmlmb3JtQmxvY2tNZW1iZXJJbmZvKGNvbnN0IHN0ZDo6c3RyaW5nICZtZW1iZXJVbmlm
b3JtTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaDo6
QmxvY2tNZW1iZXJJbmZvICptZW1iZXJJbmZvT3V0KSBjb25zdCA9IDA7CisgICAgLy8gQ0hST01J
VU1fcGF0aF9yZW5kZXJpbmcKKyAgICAvLyBTZXQgcGFyYW1ldGVycyB0byBjb250cm9sIGZyYWdt
ZW50IHNoYWRlciBpbnB1dCB2YXJpYWJsZSBpbnRlcnBvbGF0aW9uCisgICAgdmlydHVhbCB2b2lk
IHNldFBhdGhGcmFnbWVudElucHV0R2VuKGNvbnN0IHN0ZDo6c3RyaW5nICZpbnB1dE5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBnZW5Nb2RlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBjb21wb25lbnRz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0
ICpjb2VmZnMpID0gMDsKIAogICBwcm90ZWN0ZWQ6Ci0gICAgY29uc3QgZ2w6OlByb2dyYW06OkRh
dGEgJm1EYXRhOworICAgIGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJm1TdGF0ZTsKIH07CiAKIH0K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9Qcm9n
cmFtSW1wbF9tb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL1Byb2dyYW1JbXBsX21vY2suaAkocmV2aXNpb24gMjA4MDIxKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1Byb2dyYW1J
bXBsX21vY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsNyBAQAogY2xhc3MgTW9ja1By
b2dyYW1JbXBsIDogcHVibGljIHJ4OjpQcm9ncmFtSW1wbAogewogICBwdWJsaWM6Ci0gICAgTW9j
a1Byb2dyYW1JbXBsKCkgOiBQcm9ncmFtSW1wbChnbDo6UHJvZ3JhbTo6RGF0YSgpKSB7fQorICAg
IE1vY2tQcm9ncmFtSW1wbCgpIDogUHJvZ3JhbUltcGwoZ2w6OlByb2dyYW1TdGF0ZSgpKSB7fQog
ICAgIHZpcnR1YWwgfk1vY2tQcm9ncmFtSW1wbCgpIHsgZGVzdHJveSgpOyB9CiAKICAgICBNT0NL
X01FVEhPRDIobG9hZCwgTGlua1Jlc3VsdChnbDo6SW5mb0xvZyAmLCBnbDo6QmluYXJ5SW5wdXRT
dHJlYW0gKikpOwpAQCAtMjcsNyArMjcsNyBAQAogICAgIE1PQ0tfTUVUSE9EMShzYXZlLCBnbDo6
RXJyb3IoZ2w6OkJpbmFyeU91dHB1dFN0cmVhbSAqKSk7CiAgICAgTU9DS19NRVRIT0QxKHNldEJp
bmFyeVJldHJpZXZhYmxlSGludCwgdm9pZChib29sKSk7CiAKLSAgICBNT0NLX01FVEhPRDIobGlu
aywgTGlua1Jlc3VsdChjb25zdCBnbDo6RGF0YSAmLCBnbDo6SW5mb0xvZyAmKSk7CisgICAgTU9D
S19NRVRIT0QyKGxpbmssIExpbmtSZXN1bHQoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmLCBnbDo6
SW5mb0xvZyAmKSk7CiAgICAgTU9DS19NRVRIT0QyKHZhbGlkYXRlLCBHTGJvb2xlYW4oY29uc3Qg
Z2w6OkNhcHMgJiwgZ2w6OkluZm9Mb2cgKikpOwogCiAgICAgTU9DS19NRVRIT0QzKHNldFVuaWZv
cm0xZnYsIHZvaWQoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQgKikpOwpAQCAtNTYsNiAr
NTYsOCBAQAogICAgIE1PQ0tfTUVUSE9EMihzZXRVbmlmb3JtQmxvY2tCaW5kaW5nLCB2b2lkKEdM
dWludCwgR0x1aW50KSk7CiAgICAgTU9DS19DT05TVF9NRVRIT0QyKGdldFVuaWZvcm1CbG9ja1Np
emUsIGJvb2woY29uc3Qgc3RkOjpzdHJpbmcgJiwgc2l6ZV90ICopKTsKICAgICBNT0NLX0NPTlNU
X01FVEhPRDIoZ2V0VW5pZm9ybUJsb2NrTWVtYmVySW5mbywgYm9vbChjb25zdCBzdGQ6OnN0cmlu
ZyAmLCBzaDo6QmxvY2tNZW1iZXJJbmZvICopKTsKKyAgICBNT0NLX01FVEhPRDQoc2V0UGF0aEZy
YWdtZW50SW5wdXRHZW4sCisgICAgICAgICAgICAgICAgIHZvaWQoY29uc3Qgc3RkOjpzdHJpbmcg
JiwgR0xlbnVtLCBHTGludCwgY29uc3QgR0xmbG9hdCAqKSk7CiAKICAgICBNT0NLX01FVEhPRDAo
ZGVzdHJveSwgdm9pZCgpKTsKIH07CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvUmVuZGVyYnVmZmVySW1wbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1JlbmRlcmJ1ZmZlcklt
cGwuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvUmVuZGVyYnVmZmVySW1wbC5jcHAJKG5vbmV4aXN0ZW50KQpAQCAt
MSwyMSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gUmVuZGVyYnVmZmVySW1wbC5oOiBJbXBs
ZW1lbnRzIHRoZSBzaGFyZWQgbWV0aG9kcyBvZiB0aGUgYWJzdHJhY3QgY2xhc3MgZ2w6OlJlbmRl
cmJ1ZmZlckltcGwKLQotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1JlbmRlcmJ1ZmZlcklt
cGwuaCIKLQotbmFtZXNwYWNlIHJ4Ci17Ci1SZW5kZXJidWZmZXJJbXBsOjpSZW5kZXJidWZmZXJJ
bXBsKCkKLXsKLX0KLQotUmVuZGVyYnVmZmVySW1wbDo6flJlbmRlcmJ1ZmZlckltcGwoKQotewot
fQotCi19CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvUmVuZGVyYnVmZmVySW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9SZW5kZXJidWZmZXJJbXBsLmgJKHJldmlzaW9uIDIw
ODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9S
ZW5kZXJidWZmZXJJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyLDcgKzEyLDcgQEAKICNpbmNs
dWRlICJhbmdsZV9nbC5oIgogI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvRXJyb3IuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFj
aG1lbnQuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9GcmFtZWJ1ZmZlckF0dGFjaG1l
bnRPYmplY3RJbXBsLmgiCiAKIG5hbWVzcGFjZSBlZ2wKIHsKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9SZW5kZXJlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1JlbmRlcmVy
LmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL1JlbmRlcmVyLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDYyICswLDAg
QEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTItMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIFJlbmRlcmVyLmNwcDogSW1wbGVtZW50cyBFR0wg
ZGVwZW5kZW5jaWVzIGZvciBjcmVhdGluZyBhbmQgZGVzdHJveWluZyBSZW5kZXJlciBpbnN0YW5j
ZXMuCi0KLSNpbmNsdWRlICJjb21tb24vdXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAibGliQU5HTEUv
QXR0cmlidXRlTWFwLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvUmVuZGVyZXIuaCIK
LQotI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KLQotbmFtZXNwYWNlIHJ4Ci17Ci1SZW5kZXJlcjo6
UmVuZGVyZXIoKSA6IG1DYXBzSW5pdGlhbGl6ZWQoZmFsc2UpCi17Ci19Ci0KLVJlbmRlcmVyOjp+
UmVuZGVyZXIoKQotewotfQotCi12b2lkIFJlbmRlcmVyOjplbnN1cmVDYXBzSW5pdGlhbGl6ZWQo
KSBjb25zdAotewotICAgIGlmICghbUNhcHNJbml0aWFsaXplZCkKLSAgICB7Ci0gICAgICAgIGdl
bmVyYXRlQ2FwcygmbUNhcHMsICZtVGV4dHVyZUNhcHMsICZtRXh0ZW5zaW9ucywgJm1MaW1pdGF0
aW9ucyk7Ci0gICAgICAgIG1DYXBzSW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgIH0KLX0KLQotY29u
c3QgZ2w6OkNhcHMgJlJlbmRlcmVyOjpnZXRSZW5kZXJlckNhcHMoKSBjb25zdAotewotICAgIGVu
c3VyZUNhcHNJbml0aWFsaXplZCgpOwotCi0gICAgcmV0dXJuIG1DYXBzOwotfQotCi1jb25zdCBn
bDo6VGV4dHVyZUNhcHNNYXAgJlJlbmRlcmVyOjpnZXRSZW5kZXJlclRleHR1cmVDYXBzKCkgY29u
c3QKLXsKLSAgICBlbnN1cmVDYXBzSW5pdGlhbGl6ZWQoKTsKLQotICAgIHJldHVybiBtVGV4dHVy
ZUNhcHM7Ci19Ci0KLWNvbnN0IGdsOjpFeHRlbnNpb25zICZSZW5kZXJlcjo6Z2V0UmVuZGVyZXJF
eHRlbnNpb25zKCkgY29uc3QKLXsKLSAgICBlbnN1cmVDYXBzSW5pdGlhbGl6ZWQoKTsKLQotICAg
IHJldHVybiBtRXh0ZW5zaW9uczsKLX0KLQotY29uc3QgZ2w6OkxpbWl0YXRpb25zICZSZW5kZXJl
cjo6Z2V0UmVuZGVyZXJMaW1pdGF0aW9ucygpIGNvbnN0Ci17Ci0gICAgZW5zdXJlQ2Fwc0luaXRp
YWxpemVkKCk7Ci0KLSAgICByZXR1cm4gbUxpbWl0YXRpb25zOwotfQotCi19CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvUmVuZGVyZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
UmVuZGVyZXIuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL1JlbmRlcmVyLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMjEg
KzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxMi0yMDE0IFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gUmVuZGVyZXIuaDogRGVmaW5lcyBhIGJh
Y2stZW5kIHNwZWNpZmljIGNsYXNzIHRoYXQgaGlkZXMgdGhlIGRldGFpbHMgb2YgdGhlCi0vLyBp
bXBsZW1lbnRhdGlvbi1zcGVjaWZpYyByZW5kZXJlci4KLQotI2lmbmRlZiBMSUJBTkdMRV9SRU5E
RVJFUl9SRU5ERVJFUl9IXwotI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9SRU5ERVJFUl9IXwot
Ci0jaW5jbHVkZSAibGliQU5HTEUvQ2Fwcy5oIgotI2luY2x1ZGUgImxpYkFOR0xFL0Vycm9yLmgi
Ci0jaW5jbHVkZSAibGliQU5HTEUvRnJhbWVidWZmZXIuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9T
dGF0ZS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL1VuaWZvcm0uaCIKLSNpbmNsdWRlICJsaWJBTkdM
RS9hbmdsZXR5cGVzLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvSW1wbEZhY3Rvcnku
aCIKLSNpbmNsdWRlICJjb21tb24vbWF0aHV0aWwuaCIKLQotI2luY2x1ZGUgPHN0ZGludC5oPgot
Ci0jaW5jbHVkZSA8RUdML2VnbC5oPgotCi1uYW1lc3BhY2UgZWdsCi17Ci1jbGFzcyBBdHRyaWJ1
dGVNYXA7Ci1jbGFzcyBEaXNwbGF5OwotY2xhc3MgU3VyZmFjZTsKLX0KLQotbmFtZXNwYWNlIHJ4
Ci17Ci1zdHJ1Y3QgVHJhbnNsYXRlZEluZGV4RGF0YTsKLXN0cnVjdCBTb3VyY2VJbmRleERhdGE7
Ci1zdHJ1Y3QgV29ya2Fyb3VuZHNEM0Q7Ci1jbGFzcyBEaXNwbGF5SW1wbDsKLQotY2xhc3MgUmVu
ZGVyZXIgOiBwdWJsaWMgSW1wbEZhY3RvcnkKLXsKLSAgcHVibGljOgotICAgIFJlbmRlcmVyKCk7
Ci0gICAgdmlydHVhbCB+UmVuZGVyZXIoKTsKLQotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGZsdXNo
KCkgPSAwOwotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGZpbmlzaCgpID0gMDsKLQotICAgIHZpcnR1
YWwgZ2w6OkVycm9yIGRyYXdBcnJheXMoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIEdMZW51bSBtb2Rl
LCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCkgPSAwOwotICAgIHZpcnR1YWwgZ2w6OkVycm9y
IGRyYXdBcnJheXNJbnN0YW5jZWQoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZpcnN0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VDb3VudCkgPSAwOwot
Ci0gICAgdmlydHVhbCBnbDo6RXJyb3IgZHJhd0VsZW1lbnRzKGNvbnN0IGdsOjpEYXRhICZkYXRh
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpID0gMDsK
LSAgICB2aXJ0dWFsIGdsOjpFcnJvciBkcmF3RWxlbWVudHNJbnN0YW5jZWQoY29uc3QgZ2w6OkRh
dGEgJmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBtb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpID0g
MDsKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBkcmF3UmFuZ2VFbGVtZW50cyhjb25zdCBnbDo6RGF0
YSAmZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
bW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3Rh
cnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGVuZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNl
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5k
ZXhSYW5nZSAmaW5kZXhSYW5nZSkgPSAwOwotCi0gICAgLy8gbG9zdCBkZXZpY2UKLSAgICAvL1RP
RE8oam1hZGlsbCk6IGludmVzdGlnYXRlIGlmIHRoaXMgc3R1ZmYgaXMgbmVjZXNzYXJ5IGluIEdM
Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeURldmljZUxvc3QoKSA9IDA7Ci0gICAgdmlydHVhbCBi
b29sIGlzRGV2aWNlTG9zdCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgdGVzdERldmlj
ZUxvc3QoKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHRlc3REZXZpY2VSZXNldHRhYmxlKCkgPSAw
OwotCi0gICAgdmlydHVhbCBzdGQ6OnN0cmluZyBnZXRWZW5kb3JTdHJpbmcoKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCBzdGQ6OnN0cmluZyBnZXRSZW5kZXJlckRlc2NyaXB0aW9uKCkgY29uc3Qg
PSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGluc2VydEV2ZW50TWFya2VyKEdMc2l6ZWkgbGVuZ3Ro
LCBjb25zdCBjaGFyICptYXJrZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcHVzaEdyb3VwTWFy
a2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgcG9wR3JvdXBNYXJrZXIoKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc3luY1N0YXRl
KGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpTdGF0ZTo6RGlydHlCaXRzICZkaXJ0
eUJpdHMpID0gMDsKLQotICAgIC8vIERpc2pvaW50IHRpbWVyIHF1ZXJpZXMKLSAgICB2aXJ0dWFs
IEdMaW50IGdldEdQVURpc2pvaW50KCkgPSAwOwotICAgIHZpcnR1YWwgR0xpbnQ2NCBnZXRUaW1l
c3RhbXAoKSA9IDA7Ci0KLSAgICAvLyBDb250ZXh0IHN3aXRjaGluZwotICAgIHZpcnR1YWwgdm9p
ZCBvbk1ha2VDdXJyZW50KGNvbnN0IGdsOjpEYXRhICZkYXRhKSA9IDA7Ci0KLSAgICAvLyBSZW5k
ZXJlciBjYXBhYmlsaXRpZXMKLSAgICBjb25zdCBnbDo6Q2FwcyAmZ2V0UmVuZGVyZXJDYXBzKCkg
Y29uc3Q7Ci0gICAgY29uc3QgZ2w6OlRleHR1cmVDYXBzTWFwICZnZXRSZW5kZXJlclRleHR1cmVD
YXBzKCkgY29uc3Q7Ci0gICAgY29uc3QgZ2w6OkV4dGVuc2lvbnMgJmdldFJlbmRlcmVyRXh0ZW5z
aW9ucygpIGNvbnN0OwotICAgIGNvbnN0IGdsOjpMaW1pdGF0aW9ucyAmZ2V0UmVuZGVyZXJMaW1p
dGF0aW9ucygpIGNvbnN0OwotCi0gIHByaXZhdGU6Ci0gICAgdm9pZCBlbnN1cmVDYXBzSW5pdGlh
bGl6ZWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVDYXBzKGdsOjpDYXBzICpv
dXRDYXBzLCBnbDo6VGV4dHVyZUNhcHNNYXAqIG91dFRleHR1cmVDYXBzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2w6OkV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnbDo6TGltaXRhdGlvbnMgKm91dExpbWl0YXRpb25zKSBj
b25zdCA9IDA7Ci0KLSAgICBtdXRhYmxlIGJvb2wgbUNhcHNJbml0aWFsaXplZDsKLSAgICBtdXRh
YmxlIGdsOjpDYXBzIG1DYXBzOwotICAgIG11dGFibGUgZ2w6OlRleHR1cmVDYXBzTWFwIG1UZXh0
dXJlQ2FwczsKLSAgICBtdXRhYmxlIGdsOjpFeHRlbnNpb25zIG1FeHRlbnNpb25zOwotICAgIG11
dGFibGUgZ2w6OkxpbWl0YXRpb25zIG1MaW1pdGF0aW9uczsKLX07Ci0KLX0KLSNlbmRpZiAvLyBM
SUJBTkdMRV9SRU5ERVJFUl9SRU5ERVJFUl9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1NoYWRlckltcGwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvU2hhZGVySW1wbC5oCShy
ZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvU2hhZGVySW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOCwyMSArMTgsMjEgQEAK
IGNsYXNzIFNoYWRlckltcGwgOiBhbmdsZTo6Tm9uQ29weWFibGUKIHsKICAgcHVibGljOgotICAg
IFNoYWRlckltcGwoY29uc3QgZ2w6OlNoYWRlcjo6RGF0YSAmZGF0YSkgOiBtRGF0YShkYXRhKSB7
fQorICAgIFNoYWRlckltcGwoY29uc3QgZ2w6OlNoYWRlclN0YXRlICZkYXRhKSA6IG1EYXRhKGRh
dGEpIHt9CiAgICAgdmlydHVhbCB+U2hhZGVySW1wbCgpIHsgfQogCiAgICAgLy8gUmV0dXJucyBh
ZGRpdGlvbmFsIFNoQ29tcGlsZSBvcHRpb25zLgotICAgIHZpcnR1YWwgaW50IHByZXBhcmVTb3Vy
Y2VBbmRSZXR1cm5PcHRpb25zKHN0ZDo6c3RyaW5nc3RyZWFtICpzb3VyY2VTdHJlYW0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgKnNv
dXJjZVBhdGgpID0gMDsKKyAgICB2aXJ0dWFsIFNoQ29tcGlsZU9wdGlvbnMgcHJlcGFyZVNvdXJj
ZUFuZFJldHVybk9wdGlvbnMoc3RkOjpzdHJpbmdzdHJlYW0gKnNvdXJjZVN0cmVhbSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
OjpzdHJpbmcgKnNvdXJjZVBhdGgpID0gMDsKICAgICAvLyBSZXR1cm5zIHN1Y2Nlc3MgZm9yIGNv
bXBpbGluZyBvbiB0aGUgZHJpdmVyLiBSZXR1cm5zIHN1Y2Nlc3MuCiAgICAgdmlydHVhbCBib29s
IHBvc3RUcmFuc2xhdGVDb21waWxlKGdsOjpDb21waWxlciAqY29tcGlsZXIsIHN0ZDo6c3RyaW5n
ICppbmZvTG9nKSA9IDA7CiAKICAgICB2aXJ0dWFsIHN0ZDo6c3RyaW5nIGdldERlYnVnSW5mbygp
IGNvbnN0ID0gMDsKIAotICAgIGNvbnN0IGdsOjpTaGFkZXI6OkRhdGEgJmdldERhdGEoKSBjb25z
dCB7IHJldHVybiBtRGF0YTsgfQorICAgIGNvbnN0IGdsOjpTaGFkZXJTdGF0ZSAmZ2V0RGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1EYXRhOyB9CiAKICAgcHJvdGVjdGVkOgotICAgIGNvbnN0IGdsOjpT
aGFkZXI6OkRhdGEgJm1EYXRhOworICAgIGNvbnN0IGdsOjpTaGFkZXJTdGF0ZSAmbURhdGE7CiB9
OwogCiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvU3RyZWFtSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9TdHJlYW1JbXBsLmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9TdHJlYW1JbXBsLmgJ
KG5vbmV4aXN0ZW50KQpAQCAtMSwyNSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDE2
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gU3RyZWFt
SW1wbC5oOiBEZWZpbmVzIHRoZSBhYnN0cmFjdCByeDo6U3RyZWFtSW1wbCBjbGFzcy4KLQotI2lm
bmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9TVFJFQU1JTVBMX0hfCi0jZGVmaW5lIExJQkFOR0xFX1JF
TkRFUkVSX1NUUkVBTUlNUExfSF8KLQotI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCi0K
LW5hbWVzcGFjZSByeAotewotCi1jbGFzcyBTdHJlYW1JbXBsIDogYW5nbGU6Ok5vbkNvcHlhYmxl
Ci17Ci0gIHB1YmxpYzoKLSAgICBleHBsaWNpdCBTdHJlYW1JbXBsKCkge30KLSAgICB2aXJ0dWFs
IH5TdHJlYW1JbXBsKCkge30KLX07Ci19ICAvLyBuYW1lc3BhY2UgcngKLQotI2VuZGlmICAvLyBM
SUJBTkdMRV9SRU5ERVJFUl9TVFJFQU1JTVBMX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvU3RyZWFtUHJvZHVjZXJJbXBsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1N0cmVh
bVByb2R1Y2VySW1wbC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9TdHJlYW1Qcm9kdWNlckltcGwuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDM5IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gU3RyZWFtUHJvZHVjZXJJbXBs
Lmg6IERlZmluZXMgdGhlIGFic3RyYWN0IHJ4OjpTdHJlYW1Qcm9kdWNlckltcGwgY2xhc3MuCisK
KyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfU1RSRUFNUFJPRFVDRVJJTVBMX0hfCisjZGVmaW5l
IExJQkFOR0xFX1JFTkRFUkVSX1NUUkVBTVBST0RVQ0VSSU1QTF9IXworCisjaW5jbHVkZSAiY29t
bW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9TdHJlYW0uaCIKKworbmFtZXNw
YWNlIHJ4Cit7CisKK2NsYXNzIFN0cmVhbVByb2R1Y2VySW1wbCA6IGFuZ2xlOjpOb25Db3B5YWJs
ZQoreworICBwdWJsaWM6CisgICAgZXhwbGljaXQgU3RyZWFtUHJvZHVjZXJJbXBsKCkge30KKyAg
ICB2aXJ0dWFsIH5TdHJlYW1Qcm9kdWNlckltcGwoKSB7fQorCisgICAgLy8gVmFsaWRhdGVzIHRo
ZSBhYmlsaXR5IGZvciB0aGUgcHJvZHVjZXIgdG8gYWNjZXB0IGFuIGFyYml0cmFyeSBwb2ludGVy
IHRvIGEgZnJhbWUuIEFsbAorICAgIC8vIHBvaW50ZXJzIHNob3VsZCBiZSB2YWxpZGF0ZWQgdGhy
b3VnaCB0aGlzIGZ1bmN0aW9uIGJlZm9yZSBiZWluZyB1c2VkIHRvIHByb2R1Y2UgYSBmcmFtZS4K
KyAgICB2aXJ0dWFsIGVnbDo6RXJyb3IgdmFsaWRhdGVEM0ROVjEyVGV4dHVyZSh2b2lkICpwb2lu
dGVyKSBjb25zdCA9IDA7CisKKyAgICAvLyBDb25zdHJ1Y3RzIGEgZnJhbWUgZnJvbSBhbiBhcmJp
dHJhcnkgZXh0ZXJuYWwgcG9pbnRlciB0aGF0IHBvaW50cyB0byBwcm9kdWNlciBzcGVjaWZpYyBm
cmFtZQorICAgIC8vIGRhdGEuIFJlcGxhY2VzIHRoZSBpbnRlcm5hbCBmcmFtZSB3aXRoIHRoZSBu
ZXcgb25lLgorICAgIHZpcnR1YWwgdm9pZCBwb3N0RDNETlYxMlRleHR1cmUodm9pZCAqcG9pbnRl
ciwgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnV0ZXMpID0gMDsKKworICAgIC8vIFJl
dHVybnMgYW4gT3BlbkdMIHRleHR1cmUgaW50ZXJwcmV0YXRpb24gb2Ygc29tZSBmcmFtZSBhdHRy
aWJ1dGVzIGZvciB0aGUgcHVycG9zZSBvZgorICAgIC8vIGNvbnN0cnVjdGluZyBhbiBPcGVuR0wg
dGV4dHVyZSBmcm9tIGEgZnJhbWUuIERlcGVuZGluZyBvbiB0aGUgcHJvZHVjZXIgYW5kIGNvbnN1
bWVyLCBzb21lCisgICAgLy8gZnJhbWVzIG1heSBoYXZlIG11bHRpcGxlICJwbGFuZXMiIHdpdGgg
ZGlmZmVyZW50IE9wZW5HTCB0ZXh0dXJlIHJlcHJlc2VudGF0aW9ucy4KKyAgICB2aXJ0dWFsIGVn
bDo6U3RyZWFtOjpHTFRleHR1cmVEZXNjcmlwdGlvbiBnZXRHTEZyYW1lRGVzY3JpcHRpb24oaW50
IHBsYW5lSW5kZXgpID0gMDsKK307Cit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBM
SUJBTkdMRV9SRU5ERVJFUl9TVFJFQU1QUk9EVUNFUklNUExfSF8KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9TdXJmYWNlSW1wbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1N1
cmZhY2VJbXBsLmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1N1cmZhY2VJbXBsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTEsNyArMTEsNyBAQAogbmFtZXNwYWNlIHJ4CiB7CiAKLVN1cmZhY2VJbXBsOjpTdXJmYWNl
SW1wbCgpCitTdXJmYWNlSW1wbDo6U3VyZmFjZUltcGwoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUg
JnN0YXRlKSA6IG1TdGF0ZShzdGF0ZSkKIHsKIH0KIApAQCAtMTksNCArMTksNCBAQAogewogfQog
Ci19Cit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9TdXJmYWNlSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9TdXJmYWNlSW1wbC5oCShyZXZp
c2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvU3VyZmFjZUltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtOSwzNSArOSw0NCBAQAogI2lm
bmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9TVVJGQUNFSU1QTF9IXwogI2RlZmluZSBMSUJBTkdMRV9S
RU5ERVJFUl9TVVJGQUNFSU1QTF9IXwogCisjaW5jbHVkZSA8RUdML2VnbC5oPgorI2luY2x1ZGUg
PEVHTC9lZ2xleHQuaD4KKwogI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvRXJyb3IuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlci5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5oIgorI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL0ZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdEltcGwuaCIKIAorbmFt
ZXNwYWNlIGdsCit7CitjbGFzcyBGcmFtZWJ1ZmZlclN0YXRlOworfQorCiBuYW1lc3BhY2UgZWds
CiB7CiBjbGFzcyBEaXNwbGF5Owogc3RydWN0IENvbmZpZzsKK3N0cnVjdCBTdXJmYWNlU3RhdGU7
CiB9CiAKIG5hbWVzcGFjZSByeAogewotCiBjbGFzcyBGcmFtZWJ1ZmZlckltcGw7CiAKIGNsYXNz
IFN1cmZhY2VJbXBsIDogcHVibGljIEZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdEltcGwKIHsK
ICAgcHVibGljOgotICAgIFN1cmZhY2VJbXBsKCk7CisgICAgU3VyZmFjZUltcGwoY29uc3QgZWds
OjpTdXJmYWNlU3RhdGUgJnN1cmZhY2VTdGF0ZSk7CiAgICAgdmlydHVhbCB+U3VyZmFjZUltcGwo
KTsKIAogICAgIHZpcnR1YWwgZWdsOjpFcnJvciBpbml0aWFsaXplKCkgPSAwOwotICAgIHZpcnR1
YWwgRnJhbWVidWZmZXJJbXBsICpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoY29uc3QgZ2w6OkZy
YW1lYnVmZmVyOjpEYXRhICZkYXRhKSA9IDA7CisgICAgdmlydHVhbCBGcmFtZWJ1ZmZlckltcGwg
KmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3Rh
dGUpID0gMDsKICAgICB2aXJ0dWFsIGVnbDo6RXJyb3Igc3dhcCgpID0gMDsKICAgICB2aXJ0dWFs
IGVnbDo6RXJyb3IgcG9zdFN1YkJ1ZmZlcihFR0xpbnQgeCwgRUdMaW50IHksIEVHTGludCB3aWR0
aCwgRUdMaW50IGhlaWdodCkgPSAwOwogICAgIHZpcnR1YWwgZWdsOjpFcnJvciBxdWVyeVN1cmZh
Y2VQb2ludGVyQU5HTEUoRUdMaW50IGF0dHJpYnV0ZSwgdm9pZCAqKnZhbHVlKSA9IDA7CiAgICAg
dmlydHVhbCBlZ2w6OkVycm9yIGJpbmRUZXhJbWFnZShnbDo6VGV4dHVyZSAqdGV4dHVyZSwgRUdM
aW50IGJ1ZmZlcikgPSAwOwogICAgIHZpcnR1YWwgZWdsOjpFcnJvciByZWxlYXNlVGV4SW1hZ2Uo
RUdMaW50IGJ1ZmZlcikgPSAwOworICAgIHZpcnR1YWwgZWdsOjpFcnJvciBnZXRTeW5jVmFsdWVz
KEVHTHVpbnQ2NEtIUiAqdXN0LCBFR0x1aW50NjRLSFIgKm1zYywgRUdMdWludDY0S0hSICpzYmMp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U3dhcEludGVydmFsKEVHTGludCBpbnRlcnZhbCkg
PSAwOwogCiAgICAgLy8gd2lkdGggYW5kIGhlaWdodCBjYW4gY2hhbmdlIHdpdGggY2xpZW50IHdp
bmRvdyByZXNpemluZwpAQCAtNDYsNiArNTUsOSBAQAogCiAgICAgdmlydHVhbCBFR0xpbnQgaXNQ
b3N0U3ViQnVmZmVyU3VwcG9ydGVkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgRUdMaW50IGdl
dFN3YXBCZWhhdmlvcigpIGNvbnN0ID0gMDsKKworICBwcm90ZWN0ZWQ6CisgICAgY29uc3QgZWds
OjpTdXJmYWNlU3RhdGUgJm1TdGF0ZTsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9UZXh0dXJlSW1wbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1RleHR1cmVJ
bXBsLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvVGV4dHVyZUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTAgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKy8vCisKKy8vIFRleHR1cmVJbXBsLmNwcDogRGVmaW5lcyB0aGUgYWJzdHJh
Y3Qgcng6OlRleHR1cmVJbXBsIGNsYXNzZXMuCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9UZXh0dXJlSW1wbC5oIgorCituYW1lc3BhY2UgcngKK3sKKworVGV4dHVyZUltcGw6OlRleHR1
cmVJbXBsKGNvbnN0IGdsOjpUZXh0dXJlU3RhdGUgJnN0YXRlKSA6IG1TdGF0ZShzdGF0ZSkKK3sK
K30KKworVGV4dHVyZUltcGw6On5UZXh0dXJlSW1wbCgpCit7Cit9CisKK2dsOjpFcnJvciBUZXh0
dXJlSW1wbDo6Y29weVRleHR1cmUoR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tGbGlwWSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1VubXVsdGlwbHlBbHBoYSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlRleHR1cmUgKnNvdXJjZSkKK3sK
KyAgICBVTlJFQUNIQUJMRSgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04sICJDSFJPTUlVTV9jb3B5X3RleHR1cmUgZXhwb3NlZCBidXQgbm90IGltcGxlbWVudGVk
LiIpOworfQorCitnbDo6RXJyb3IgVGV4dHVyZUltcGw6OmNvcHlTdWJUZXh0dXJlKGNvbnN0IGds
OjpPZmZzZXQgJmRlc3RPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrRmxpcFksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tVbm11bHRpcGx5QWxwaGEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpUZXh0dXJl
ICpzb3VyY2UpCit7CisgICAgVU5SRUFDSEFCTEUoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLCAiQ0hST01JVU1fY29weV90ZXh0dXJlIGV4cG9zZWQgYnV0IG5v
dCBpbXBsZW1lbnRlZC4iKTsKK30KKworZ2w6OkVycm9yIFRleHR1cmVJbXBsOjpjb3B5Q29tcHJl
c3NlZFRleHR1cmUoY29uc3QgZ2w6OlRleHR1cmUgKnNvdXJjZSkKK3sKKyAgICBVTlJFQUNIQUJM
RSgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAg
ICAgICAgICAgICAgICAiQ0hST01JVU1fY29weV9jb21wcmVzc2VkX3RleHR1cmUgZXhwb3NlZCBi
dXQgbm90IGltcGxlbWVudGVkLiIpOworfQorfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1RleHR1cmVJbXBsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1RleHR1cmVJbXBsLmgJ
KHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9UZXh0dXJlSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw4ICsxNCwxMCBA
QAogI2luY2x1ZGUgImFuZ2xlX2dsLmgiCiAjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9FcnJvci5oIgotI2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1lYnVm
ZmVyQXR0YWNobWVudC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0ltYWdlSW5kZXguaCIKKyNpbmNs
dWRlICJsaWJBTkdMRS9TdHJlYW0uaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9UZXh0dXJlLmgiCisj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0SW1w
bC5oIgogCiBuYW1lc3BhY2UgZWdsCiB7CkBAIC00MCwxMSArNDIsOSBAQAogY2xhc3MgVGV4dHVy
ZUltcGwgOiBwdWJsaWMgRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0SW1wbAogewogICBwdWJs
aWM6Ci0gICAgVGV4dHVyZUltcGwoKSB7fQotICAgIHZpcnR1YWwgflRleHR1cmVJbXBsKCkge30K
KyAgICBUZXh0dXJlSW1wbChjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZzdGF0ZSk7CisgICAgdmly
dHVhbCB+VGV4dHVyZUltcGwoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRVc2FnZShHTGVudW0g
dXNhZ2UpID0gMDsKLQogICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldEltYWdlKEdMZW51bSB0YXJn
ZXQsIHNpemVfdCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50
cyAmc2l6ZSwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywgY29uc3QgdWlu
dDhfdCAqcGl4ZWxzKSA9IDA7CiAgICAgdmlydHVhbCBnbDo6RXJyb3Igc2V0U3ViSW1hZ2UoR0xl
bnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBnbDo6Qm94ICZhcmVhLCBHTGVudW0gZm9y
bWF0LCBHTGVudW0gdHlwZSwKQEAgLTYwLDE0ICs2MCw0MCBAQAogICAgIHZpcnR1YWwgZ2w6OkVy
cm9yIGNvcHlTdWJJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0IGdsOjpP
ZmZzZXQgJmRlc3RPZmZzZXQsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291
cmNlKSA9IDA7CiAKKyAgICB2aXJ0dWFsIGdsOjpFcnJvciBjb3B5VGV4dHVyZShHTGVudW0gaW50
ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tGbGlwWSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1ByZW11bHRpcGx5
QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tVbm11
bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OlRleHR1cmUgKnNvdXJjZSk7CisgICAgdmlydHVhbCBnbDo6RXJyb3IgY29weVN1YlRleHR1cmUo
Y29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrRmxpcFksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrVW5tdWx0aXBseUFs
cGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpUZXh0
dXJlICpzb3VyY2UpOworCisgICAgdmlydHVhbCBnbDo6RXJyb3IgY29weUNvbXByZXNzZWRUZXh0
dXJlKGNvbnN0IGdsOjpUZXh0dXJlICpzb3VyY2UpOworCiAgICAgdmlydHVhbCBnbDo6RXJyb3Ig
c2V0U3RvcmFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxG
b3JtYXQsIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplKSA9IDA7CiAKICAgICB2aXJ0dWFsIGdsOjpF
cnJvciBzZXRFR0xJbWFnZVRhcmdldChHTGVudW0gdGFyZ2V0LCBlZ2w6OkltYWdlICppbWFnZSkg
PSAwOwogCi0gICAgdmlydHVhbCBnbDo6RXJyb3IgZ2VuZXJhdGVNaXBtYXBzKGNvbnN0IGdsOjpU
ZXh0dXJlU3RhdGUgJnRleHR1cmVTdGF0ZSkgPSAwOworICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNl
dEltYWdlRXh0ZXJuYWwoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVnbDo6U3RyZWFtICpzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OlN0cmVhbTo6R0xUZXh0dXJlRGVzY3JpcHRpb24g
JmRlc2MpID0gMDsKIAorICAgIHZpcnR1YWwgZ2w6OkVycm9yIGdlbmVyYXRlTWlwbWFwKCkgPSAw
OworCisgICAgdmlydHVhbCB2b2lkIHNldEJhc2VMZXZlbChHTHVpbnQgYmFzZUxldmVsKSA9IDA7
CisKICAgICB2aXJ0dWFsIHZvaWQgYmluZFRleEltYWdlKGVnbDo6U3VyZmFjZSAqc3VyZmFjZSkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlVGV4SW1hZ2UoKSA9IDA7CisKKyAgICB2aXJ0
dWFsIHZvaWQgc3luY1N0YXRlKGNvbnN0IGdsOjpUZXh0dXJlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0
cykgPSAwOworCisgIHByb3RlY3RlZDoKKyAgICBjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZtU3Rh
dGU7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvVGV4dHVyZUltcGxfbW9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9UZXh0dXJlSW1wbF9tb2NrLmgJKHJldmlz
aW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9UZXh0dXJlSW1wbF9tb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5LDggKzE5LDggQEAK
IGNsYXNzIE1vY2tUZXh0dXJlSW1wbCA6IHB1YmxpYyBUZXh0dXJlSW1wbAogewogICBwdWJsaWM6
CisgICAgTW9ja1RleHR1cmVJbXBsKCkgOiBUZXh0dXJlSW1wbChnbDo6VGV4dHVyZVN0YXRlKEdM
X1RFWFRVUkVfMkQpKSB7fQogICAgIHZpcnR1YWwgfk1vY2tUZXh0dXJlSW1wbCgpIHsgZGVzdHJ1
Y3RvcigpOyB9Ci0gICAgTU9DS19NRVRIT0QxKHNldFVzYWdlLCB2b2lkKEdMZW51bSkpOwogICAg
IE1PQ0tfTUVUSE9EOChzZXRJbWFnZSwgZ2w6OkVycm9yKEdMZW51bSwgc2l6ZV90LCBHTGVudW0s
IGNvbnN0IGdsOjpFeHRlbnRzICYsIEdMZW51bSwgR0xlbnVtLCBjb25zdCBnbDo6UGl4ZWxVbnBh
Y2tTdGF0ZSAmLCBjb25zdCB1aW50OF90ICopKTsKICAgICBNT0NLX01FVEhPRDcoc2V0U3ViSW1h
Z2UsIGdsOjpFcnJvcihHTGVudW0sIHNpemVfdCwgY29uc3QgZ2w6OkJveCAmLCBHTGVudW0sIEdM
ZW51bSwgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJiwgY29uc3QgdWludDhfdCAqKSk7CiAg
ICAgTU9DS19NRVRIT0Q3KHNldENvbXByZXNzZWRJbWFnZSwgZ2w6OkVycm9yKEdMZW51bSwgc2l6
ZV90LCBHTGVudW0sIGNvbnN0IGdsOjpFeHRlbnRzICYsIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0
YXRlICYsIHNpemVfdCwgY29uc3QgdWludDhfdCAqKSk7CkBAIC0yNywxNCArMjcsMjkgQEAKICAg
ICBNT0NLX01FVEhPRDcoc2V0Q29tcHJlc3NlZFN1YkltYWdlLCBnbDo6RXJyb3IoR0xlbnVtLCBz
aXplX3QsIGNvbnN0IGdsOjpCb3ggJiwgR0xlbnVtLCBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0
ZSAmLCBzaXplX3QsIGNvbnN0IHVpbnQ4X3QgKikpOwogICAgIE1PQ0tfTUVUSE9ENShjb3B5SW1h
Z2UsIGdsOjpFcnJvcihHTGVudW0sIHNpemVfdCwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmLCBHTGVu
dW0sIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqKSk7CiAgICAgTU9DS19NRVRIT0Q1KGNvcHlTdWJJ
bWFnZSwgZ2w6OkVycm9yKEdMZW51bSwgc2l6ZV90LCBjb25zdCBnbDo6T2Zmc2V0ICYsIGNvbnN0
IGdsOjpSZWN0YW5nbGUgJiwgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICopKTsKKyAgICBNT0NLX01F
VEhPRDYoY29weVRleHR1cmUsIGdsOjpFcnJvcihHTGVudW0sIEdMZW51bSwgYm9vbCwgYm9vbCwg
Ym9vbCwgY29uc3QgZ2w6OlRleHR1cmUgKikpOworICAgIE1PQ0tfTUVUSE9ENihjb3B5U3ViVGV4
dHVyZSwKKyAgICAgICAgICAgICAgICAgZ2w6OkVycm9yKGNvbnN0IGdsOjpPZmZzZXQgJiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpUZXh0dXJlICopKTsKKyAgICBNT0NLX01FVEhPRDEoY29weUNvbXBy
ZXNzZWRUZXh0dXJlLCBnbDo6RXJyb3IoY29uc3QgZ2w6OlRleHR1cmUgKnNvdXJjZSkpOwogICAg
IE1PQ0tfTUVUSE9ENChzZXRTdG9yYWdlLCBnbDo6RXJyb3IoR0xlbnVtLCBzaXplX3QsIEdMZW51
bSwgY29uc3QgZ2w6OkV4dGVudHMgJikpOworICAgIE1PQ0tfTUVUSE9EMyhzZXRJbWFnZUV4dGVy
bmFsLAorICAgICAgICAgICAgICAgICBnbDo6RXJyb3IoR0xlbnVtLCBlZ2w6OlN0cmVhbSAqLCBj
b25zdCBlZ2w6OlN0cmVhbTo6R0xUZXh0dXJlRGVzY3JpcHRpb24gJikpOwogICAgIE1PQ0tfTUVU
SE9EMihzZXRFR0xJbWFnZVRhcmdldCwgZ2w6OkVycm9yKEdMZW51bSwgZWdsOjpJbWFnZSAqKSk7
Ci0gICAgTU9DS19NRVRIT0QxKGdlbmVyYXRlTWlwbWFwcywgZ2w6OkVycm9yKGNvbnN0IGdsOjpU
ZXh0dXJlU3RhdGUgJikpOworICAgIE1PQ0tfTUVUSE9EMChnZW5lcmF0ZU1pcG1hcCwgZ2w6OkVy
cm9yKCkpOwogICAgIE1PQ0tfTUVUSE9EMShiaW5kVGV4SW1hZ2UsIHZvaWQoZWdsOjpTdXJmYWNl
ICopKTsKICAgICBNT0NLX01FVEhPRDAocmVsZWFzZVRleEltYWdlLCB2b2lkKHZvaWQpKTsKIAog
ICAgIE1PQ0tfTUVUSE9EMihnZXRBdHRhY2htZW50UmVuZGVyVGFyZ2V0LCBnbDo6RXJyb3IoY29u
c3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICYsIEZyYW1lYnVmZmVyQXR0YWNo
bWVudFJlbmRlclRhcmdldCAqKikpOwogCisgICAgTU9DS19NRVRIT0QxKHNldEJhc2VMZXZlbCwg
dm9pZChHTHVpbnQpKTsKKworICAgIE1PQ0tfTUVUSE9EMShzeW5jU3RhdGUsIHZvaWQoY29uc3Qg
Z2w6OlRleHR1cmU6OkRpcnR5Qml0cyAmKSk7CisKICAgICBNT0NLX01FVEhPRDAoZGVzdHJ1Y3Rv
ciwgdm9pZCgpKTsKIH07CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9UcmFuc2Zvcm1GZWVkYmFja0ltcGwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvVHJhbnNmb3JtRmVlZGJh
Y2tJbXBsLmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9UcmFuc2Zvcm1GZWVkYmFja0ltcGwuaAkod29ya2luZyBjb3B5
KQpAQCAtMTgsNiArMTgsNyBAQAogY2xhc3MgVHJhbnNmb3JtRmVlZGJhY2tJbXBsIDogYW5nbGU6
Ok5vbkNvcHlhYmxlCiB7CiAgIHB1YmxpYzoKKyAgICBUcmFuc2Zvcm1GZWVkYmFja0ltcGwoY29u
c3QgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrU3RhdGUgJnN0YXRlKSA6IG1TdGF0ZShzdGF0ZSkge30K
ICAgICB2aXJ0dWFsIH5UcmFuc2Zvcm1GZWVkYmFja0ltcGwoKSB7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBiZWdpbihHTGVudW0gcHJpbWl0aXZlTW9kZSkgPSAwOwpAQCAtMjcsNiArMjgsOSBAQAog
CiAgICAgdmlydHVhbCB2b2lkIGJpbmRHZW5lcmljQnVmZmVyKGNvbnN0IEJpbmRpbmdQb2ludGVy
PGdsOjpCdWZmZXI+ICZiaW5kaW5nKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJpbmRJbmRleGVk
QnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgT2Zmc2V0QmluZGluZ1BvaW50ZXI8Z2w6OkJ1ZmZl
cj4gJmJpbmRpbmcpID0gMDsKKworICBwcm90ZWN0ZWQ6CisgICAgY29uc3QgZ2w6OlRyYW5zZm9y
bUZlZWRiYWNrU3RhdGUgJm1TdGF0ZTsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9UcmFuc2Zvcm1GZWVkYmFja0ltcGxfbW9jay5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9UcmFuc2Zvcm1GZWVkYmFja0ltcGxfbW9jay5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvVHJhbnNmb3JtRmVl
ZGJhY2tJbXBsX21vY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTksNiArMTksMTAgQEAKIGNsYXNz
IE1vY2tUcmFuc2Zvcm1GZWVkYmFja0ltcGwgOiBwdWJsaWMgVHJhbnNmb3JtRmVlZGJhY2tJbXBs
CiB7CiAgIHB1YmxpYzoKKyAgICBNb2NrVHJhbnNmb3JtRmVlZGJhY2tJbXBsKGNvbnN0IGdsOjpU
cmFuc2Zvcm1GZWVkYmFja1N0YXRlICZzdGF0ZSkKKyAgICAgICAgOiBUcmFuc2Zvcm1GZWVkYmFj
a0ltcGwoc3RhdGUpCisgICAgeworICAgIH0KICAgICB+TW9ja1RyYW5zZm9ybUZlZWRiYWNrSW1w
bCgpIHsgZGVzdHJ1Y3RvcigpOyB9CiAKICAgICBNT0NLX01FVEhPRDEoYmVnaW4sIHZvaWQoR0xl
bnVtIHByaW1pdGl2ZU1vZGUpKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9WZXJ0ZXhBcnJheUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvVmVydGV4QXJyYXlJbXBsLmgJ
KHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9WZXJ0ZXhBcnJheUltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTksMTEgKzE5
LDExIEBACiBjbGFzcyBWZXJ0ZXhBcnJheUltcGwgOiBhbmdsZTo6Tm9uQ29weWFibGUKIHsKICAg
cHVibGljOgotICAgIFZlcnRleEFycmF5SW1wbChjb25zdCBnbDo6VmVydGV4QXJyYXk6OkRhdGEg
JmRhdGEpIDogbURhdGEoZGF0YSkgeyB9CisgICAgVmVydGV4QXJyYXlJbXBsKGNvbnN0IGdsOjpW
ZXJ0ZXhBcnJheVN0YXRlICZkYXRhKSA6IG1EYXRhKGRhdGEpIHt9CiAgICAgdmlydHVhbCB+VmVy
dGV4QXJyYXlJbXBsKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHN5bmNTdGF0ZShjb25zdCBnbDo6
VmVydGV4QXJyYXk6OkRpcnR5Qml0cyAmZGlydHlCaXRzKSB7fQogICBwcm90ZWN0ZWQ6Ci0gICAg
Y29uc3QgZ2w6OlZlcnRleEFycmF5OjpEYXRhICZtRGF0YTsKKyAgICBjb25zdCBnbDo6VmVydGV4
QXJyYXlTdGF0ZSAmbURhdGE7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvV29ya2Fyb3VuZHMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvV29ya2Fyb3VuZHMuaAko
cmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL1dvcmthcm91bmRzLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw3NCArMCwwIEBACi0v
LwotLy8gQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgotLy8KLQotLy8gYW5nbGV0eXBlcy5oOiBXb3JrYXJvdW5kcyBmb3IgZHJpdmVyIGJ1
Z3MgYW5kIG90aGVyIGlzc3Vlcy4KLQotI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9XT1JLQVJP
VU5EU19IXwotI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9XT1JLQVJPVU5EU19IXwotCi0vLyBU
T0RPKGptYWRpbGwsem1vLGdlb2ZmbGFuZyk6IG1ha2UgYSB3b3JrYXJvdW5kcyBsaWJyYXJ5IHRo
YXQgY2FuIG9wZXJhdGUKLS8vIGluZGVwZW5kZW50IG9mIEFOR0xFJ3MgcmVuZGVyZXIuIFdvcmth
cm91bmRzIHNob3VsZCBhbHNvIGJlIGFjY2Vzc2libGUKLS8vIG91dHNpZGUgb2YgdGhlIFJlbmRl
cmVyLgotCi1uYW1lc3BhY2UgcngKLXsKLQotc3RydWN0IEQzRENvbXBpbGVyV29ya2Fyb3VuZHMg
OiBhbmdsZTo6Tm9uQ29weWFibGUKLXsKLSAgICBEM0RDb21waWxlcldvcmthcm91bmRzKCkKLSAg
ICAgICAgOiBza2lwT3B0aW1pemF0aW9uKGZhbHNlKSwKLSAgICAgICAgICB1c2VNYXhPcHRpbWl6
YXRpb24oZmFsc2UpLAotICAgICAgICAgIGVuYWJsZUlFRUVTdHJpY3RuZXNzKGZhbHNlKQotICAg
IHt9Ci0KLSAgICB2b2lkIHJlc2V0KCkKLSAgICB7Ci0gICAgICAgIHNraXBPcHRpbWl6YXRpb24g
PSBmYWxzZTsKLSAgICAgICAgdXNlTWF4T3B0aW1pemF0aW9uID0gZmFsc2U7Ci0gICAgICAgIGVu
YWJsZUlFRUVTdHJpY3RuZXNzID0gZmFsc2U7Ci0gICAgfQotCi0gICAgYm9vbCBza2lwT3B0aW1p
emF0aW9uOwotICAgIGJvb2wgdXNlTWF4T3B0aW1pemF0aW9uOwotCi0gICAgLy8gSUVFRSBzdHJp
Y3RuZXNzIG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIE5BTnMgdG8gd29yay4KLSAgICBib29sIGVu
YWJsZUlFRUVTdHJpY3RuZXNzOwotfTsKLQotc3RydWN0IFdvcmthcm91bmRzCi17Ci0gICAgV29y
a2Fyb3VuZHMoKQotICAgICAgICA6IG1ydFBlcmZXb3JrYXJvdW5kKGZhbHNlKSwKLSAgICAgICAg
ICBzZXREYXRhRmFzdGVyVGhhbkltYWdlVXBsb2FkKGZhbHNlKSwKLSAgICAgICAgICB6ZXJvTWF4
TG9kV29ya2Fyb3VuZChmYWxzZSksCi0gICAgICAgICAgdXNlSW5zdGFuY2VkUG9pbnRTcHJpdGVF
bXVsYXRpb24oZmFsc2UpCi0gICAge30KLQotICAgIC8vIE9uIHNvbWUgc3lzdGVtcywgaGF2aW5n
IGV4dHJhIHJlbmRlcnRhcmdldHMgdGhhbiBuZWNlc3Nhcnkgc2xvd3MgZG93biB0aGUgc2hhZGVy
LgotICAgIC8vIFdlIGNhbiBmaXggdGhpcyBieSBvcHRpbWl6aW5nIHRob3NlIG91dCBvZiB0aGUg
c2hhZGVyLiBBdCB0aGUgc2FtZSB0aW1lLCB3ZSBjYW4KLSAgICAvLyB3b3JrIGFyb3VuZCBhIGJ1
ZyBvbiBzb21lIG5WaWRpYSBkcml2ZXJzIHRoYXQgdGhleSBpZ25vcmUgIm51bGwiIHJlbmRlciB0
YXJnZXRzCi0gICAgLy8gaW4gRDNEMTEsIGJ5IGNvbXBhY3RpbmcgdGhlIGFjdGl2ZSBjb2xvciBh
dHRhY2htZW50cyBsaXN0IHRvIG9taXQgbnVsbCBlbnRyaWVzLgotICAgIGJvb2wgbXJ0UGVyZldv
cmthcm91bmQ7Ci0KLSAgICBib29sIHNldERhdGFGYXN0ZXJUaGFuSW1hZ2VVcGxvYWQ7Ci0KLSAg
ICAvLyBTb21lIHJlbmRlcmVycyBjYW4ndCBkaXNhYmxlIG1pcG1hcHMgb24gYSBtaXBtYXBwZWQg
dGV4dHVyZSAoaS5lLiBzb2xlbHkgc2FtcGxlIGZyb20gbGV2ZWwgemVybywgYW5kIGlnbm9yZSB0
aGUgb3RoZXIgbGV2ZWxzKS4KLSAgICAvLyBEM0QxMSBGZWF0dXJlIExldmVsIDEwKyBkb2VzIHRo
aXMgYnkgc2V0dGluZyBNYXhMT0QgdG8gMC4wZiBpbiB0aGUgU2FtcGxlciBzdGF0ZS4gRDNEOSBz
ZXRzIEQzRFNBTVBfTUlQRklMVEVSIHRvIEQzRFRFWEZfTk9ORS4KLSAgICAvLyBUaGVyZSBpcyBu
byBlcXVpdmFsZW50IHRvIHRoaXMgaW4gRDNEMTEgRmVhdHVyZSBMZXZlbCA5XzMuCi0gICAgLy8g
VGhpcyBjYXVzZXMgcHJvYmxlbXMgd2hlbiAoZm9yIGV4YW1wbGUpIGFuIGFwcGxpY2F0aW9uIGNy
ZWF0ZXMgYSBtaXBtYXBwZWQgdGV4dHVyZTJELCBidXQgc2V0cyBHTF9URVhUVVJFX01JTl9GSUxU
RVIgdG8gR0xfTkVBUkVTVCAoaS5lIGRpc2FibGVzIG1pcG1hcHMpLgotICAgIC8vIFRvIHdvcmsg
YXJvdW5kIHRoaXMsIEQzRDExIEZMOV8zIGhhcyB0byBjcmVhdGUgdHdvIGNvcGllcyBvZiB0aGUg
dGV4dHVyZS4gVGhlIHRleHR1cmVzJyBsZXZlbCB6ZXJvcyBhcmUgaWRlbnRpY2FsLCBidXQgb25s
eSBvbmUgdGV4dHVyZSBoYXMgbWlwcy4KLSAgICBib29sIHplcm9NYXhMb2RXb3JrYXJvdW5kOwot
Ci0gICAgLy8gU29tZSByZW5kZXJlcnMgZG8gbm90IHN1cHBvcnQgR2VvbWV0cnkgU2hhZGVycyBz
byB0aGUgR2VvbWV0cnkgU2hhZGVyLWJhc2VkCi0gICAgLy8gUG9pbnRTcHJpdGUgZW11bGF0aW9u
IHdpbGwgbm90IHdvcmsuCi0gICAgLy8gVG8gd29yayBhcm91bmQgdGhpcywgRDNEMTEgRkw5XzMg
aGFzIHRvIHVzZSBhIGRpZmZlcmVudCBwb2ludHNwcml0ZQotICAgIC8vIGVtdWxhdGlvbiB0aGF0
IGlzIGltcGxlbWVudGVkIHVzaW5nIGluc3RhbmNlZCBxdWFkcy4KLSAgICBib29sIHVzZUluc3Rh
bmNlZFBvaW50U3ByaXRlRW11bGF0aW9uOwotfTsKLQotfQotCi0jZW5kaWYgLy8gTElCQU5HTEVf
UkVOREVSRVJfV09SS0FST1VORFNfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9hbmdsZV9mb3JtYXQucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2FuZ2xlX2Zvcm1hdC5weQko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvYW5nbGVfZm9ybWF0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKyMh
L3Vzci9iaW4vcHl0aG9uCisjIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKyMKKyMgYW5nbGVfZm9ybWF0LnB5OgorIyAgVXRpbHMgZm9yIEFOR0xF
IGZvcm1hdHMuCisKK2ltcG9ydCBqc29uCitpbXBvcnQgb3MKKworZGVmIHJlamVjdF9kdXBsaWNh
dGVfa2V5cyhwYWlycyk6CisgICAgZm91bmRfa2V5cyA9IHt9CisgICAgZm9yIGtleSwgdmFsdWUg
aW4gcGFpcnM6CisgICAgICAgIGlmIGtleSBpbiBmb3VuZF9rZXlzOgorICAgICAgICAgICByYWlz
ZSBWYWx1ZUVycm9yKCJkdXBsaWNhdGUga2V5OiAlciIgJSAoa2V5LCkpCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgIGZvdW5kX2tleXNba2V5XSA9IHZhbHVlCisgICAgcmV0dXJuIGZvdW5kX2tl
eXMKKworZGVmIGxvYWRfanNvbihwYXRoKToKKyAgICB3aXRoIG9wZW4ocGF0aCkgYXMgbWFwX2Zp
bGU6CisgICAgICAgIGZpbGVfZGF0YSA9IG1hcF9maWxlLnJlYWQoKQorICAgICAgICBtYXBfZmls
ZS5jbG9zZSgpCisgICAgICAgIHJldHVybiBqc29uLmxvYWRzKGZpbGVfZGF0YSwgb2JqZWN0X3Bh
aXJzX2hvb2s9cmVqZWN0X2R1cGxpY2F0ZV9rZXlzKQorCitkZWYgbG9hZF9mb3J3YXJkX3RhYmxl
KHBhdGgpOgorICAgIHBhaXJzID0gbG9hZF9qc29uKHBhdGgpCisgICAgcmVqZWN0X2R1cGxpY2F0
ZV9rZXlzKHBhaXJzKQorICAgIHJldHVybiB7IGdsOiBhbmdsZSBmb3IgZ2wsIGFuZ2xlIGluIHBh
aXJzIH0KKworZGVmIGxvYWRfaW52ZXJzZV90YWJsZShwYXRoKToKKyAgICBwYWlycyA9IGxvYWRf
anNvbihwYXRoKQorICAgIHJlamVjdF9kdXBsaWNhdGVfa2V5cyhwYWlycykKKyAgICByZXR1cm4g
eyBhbmdsZTogZ2wgZm9yIGdsLCBhbmdsZSBpbiBwYWlycyB9CisKK2RlZiBsb2FkX3dpdGhfb3Zl
cnJpZGUob3ZlcnJpZGVfcGF0aCk6CisgICAgbWFwX3BhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0
aC5kaXJuYW1lKG9zLnBhdGgucmVhbHBhdGgoX19maWxlX18pKSwgJ2FuZ2xlX2Zvcm1hdF9tYXAu
anNvbicpCisgICAgcmVzdWx0cyA9IGxvYWRfZm9yd2FyZF90YWJsZShtYXBfcGF0aCkKKyAgICBv
dmVycmlkZXMgPSBsb2FkX2pzb24ob3ZlcnJpZGVfcGF0aCkKKworICAgIGZvciBrLCB2IGluIG92
ZXJyaWRlcy5pdGVyaXRlbXMoKToKKyAgICAgICAgcmVzdWx0c1trXSA9IHYKKworICAgIHJldHVy
biByZXN1bHRzCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvYW5nbGVfZm9ybWF0X2RhdGEuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvYW5nbGVfZm9ybWF0X2RhdGEuanNvbgko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvYW5nbGVfZm9ybWF0X2RhdGEuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIx
IEBACit7CisgICJCNUc2UjVfVU5PUk0iOiB7CisgICAgImZib0ltcGxlbWVudGF0aW9uSW50ZXJu
YWxGb3JtYXQiOiAiR0xfUkdCNTY1IgorICB9LAorICAiQjVHNVI1QTFfVU5PUk0iOiB7CisgICAg
ImZib0ltcGxlbWVudGF0aW9uSW50ZXJuYWxGb3JtYXQiOiAiR0xfUkdCNV9BMSIsCisgICAgImNo
YW5uZWxTdHJ1Y3QiOiAiQTFSNUc1QjUiCisgIH0sCisgICJCOEc4UjhYOF9VTk9STSI6IHsKKyAg
ICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9CR1JBOF9FWFQiLAorICAgICJjaGFubmVsU3RydWN0
IjogIkI4RzhSOFg4IgorICB9LAorICAiUjlHOUI5RTVfU0hBUkVERVhQIjogeworICAgICJjb21w
b25lbnRUeXBlIjogICJmbG9hdCIsCisgICAgImNoYW5uZWxTdHJ1Y3QiOiAgIlI5RzlCOUU1Igor
ICB9LAorICAiQjRHNFI0QTRfVU5PUk0iOiB7CisgICAgImZib0ltcGxlbWVudGF0aW9uSW50ZXJu
YWxGb3JtYXQiOiAiR0xfUkdCQTQiLAorICAgICJjaGFubmVsU3RydWN0IjogICJBNFI0RzRCNCIK
KyAgfQorfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2FuZ2xlX2Zvcm1hdF9tYXAuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvYW5nbGVfZm9ybWF0X21hcC5qc29uCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9hbmdsZV9mb3JtYXRfbWFwLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjcgQEAK
K1sKKyAgWyAiR0xfQUxQSEExNkZfRVhUIiwgIkExNl9GTE9BVCIgXSwKKyAgWyAiR0xfQUxQSEEz
MkZfRVhUIiwgIkEzMl9GTE9BVCIgXSwKKyAgWyAiR0xfQUxQSEE4X0VYVCIsICJBOF9VTk9STSIg
XSwKKyAgWyAiR0xfQkdSNTY1X0FOR0xFWCIsICJCNUc2UjVfVU5PUk0iIF0sCisgIFsgIkdMX0JH
UjVfQTFfQU5HTEVYIiwgIkI1RzVSNUExX1VOT1JNIiBdLAorICBbICJHTF9CR1JBNF9BTkdMRVgi
LCAiQjRHNFI0QTRfVU5PUk0iIF0sCisgIFsgIkdMX0JHUkE4X0VYVCIsICJCOEc4UjhBOF9VTk9S
TSIgXSwKKyAgWyAiR0xfQkdSWDhfQU5HTEVYIiwgIkI4RzhSOFg4X1VOT1JNIiBdLAorICBbICJH
TF9DT01QUkVTU0VEX1IxMV9FQUMiLCAiRUFDX1IxMV9VTk9STV9CTE9DSyIgXSwKKyAgWyAiR0xf
Q09NUFJFU1NFRF9SRzExX0VBQyIsICJFQUNfUjExRzExX1VOT1JNX0JMT0NLIiBdLAorICBbICJH
TF9DT01QUkVTU0VEX1JHQjhfRVRDMiIsICJFVEMyX1I4RzhCOF9VTk9STV9CTE9DSyIgXSwKKyAg
WyAiR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiIsICJFVEMyX1I4
RzhCOEExX1VOT1JNX0JMT0NLIiBdLAorICBbICJHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFD
IiwgIkVUQzJfUjhHOEI4QThfVU5PUk1fQkxPQ0siIF0sCisgIFsgIkdMX0NPTVBSRVNTRURfUkdC
QV9TM1RDX0RYVDFfRVhUIiwgIkJDMV9SR0JBX1VOT1JNX0JMT0NLIiBdLAorICBbICJHTF9DT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFIiwgIkJDMl9SR0JBX1VOT1JNX0JMT0NLIiBdLAor
ICBbICJHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFIiwgIkJDM19SR0JBX1VOT1JN
X0JMT0NLIiBdLAorICBbICJHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSIiwgIkFTVENf
NHg0X1VOT1JNX0JMT0NLIiBdLAorICBbICJHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDRfS0hS
IiwgIkFTVENfNXg0X1VOT1JNX0JMT0NLIiBdLAorICBbICJHTF9DT01QUkVTU0VEX1JHQkFfQVNU
Q181eDVfS0hSIiwgIkFTVENfNXg1X1VOT1JNX0JMT0NLIiBdLAorICBbICJHTF9DT01QUkVTU0VE
X1JHQkFfQVNUQ182eDVfS0hSIiwgIkFTVENfNng1X1VOT1JNX0JMT0NLIiBdLAorICBbICJHTF9D
T01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hSIiwgIkFTVENfNng2X1VOT1JNX0JMT0NLIiBdLAor
ICBbICJHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDVfS0hSIiwgIkFTVENfOHg1X1VOT1JNX0JM
T0NLIiBdLAorICBbICJHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDZfS0hSIiwgIkFTVENfOHg2
X1VOT1JNX0JMT0NLIiBdLAorICBbICJHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSIiwg
IkFTVENfOHg4X1VOT1JNX0JMT0NLIiBdLAorICBbICJHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18x
MHg1X0tIUiIsICJBU1RDXzEweDVfVU5PUk1fQkxPQ0siIF0sCisgIFsgIkdMX0NPTVBSRVNTRURf
UkdCQV9BU1RDXzEweDZfS0hSIiwgIkFTVENfMTB4Nl9VTk9STV9CTE9DSyIgXSwKKyAgWyAiR0xf
Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OF9LSFIiLCAiQVNUQ18xMHg4X1VOT1JNX0JMT0NLIiBd
LAorICBbICJHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMF9LSFIiLCAiQVNUQ18xMHgxMF9V
Tk9STV9CTE9DSyIgXSwKKyAgWyAiR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSIiwg
IkFTVENfMTJ4MTBfVU5PUk1fQkxPQ0siIF0sCisgIFsgIkdMX0NPTVBSRVNTRURfUkdCQV9BU1RD
XzEyeDEyX0tIUiIsICJBU1RDXzEyeDEyX1VOT1JNX0JMT0NLIiBdLAorICBbICJHTF9DT01QUkVT
U0VEX1JHQl9TM1RDX0RYVDFfRVhUIiwgIkJDMV9SR0JfVU5PUk1fQkxPQ0siIF0sCisgIFsgIkdM
X0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMiLCAiRUFDX1IxMV9TTk9STV9CTE9DSyIgXSwKKyAg
WyAiR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMiLCAiRUFDX1IxMUcxMV9TTk9STV9CTE9D
SyIgXSwKKyAgWyAiR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSIiwgIkFT
VENfNHg0X1NSR0JfQkxPQ0siIF0sCisgIFsgIkdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FT
VENfNXg0X0tIUiIsICJBU1RDXzV4NF9TUkdCX0JMT0NLIiBdLAorICBbICJHTF9DT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzV4NV9LSFIiLCAiQVNUQ181eDVfU1JHQl9CTE9DSyIgXSwKKyAg
WyAiR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hSIiwgIkFTVENfNng1X1NS
R0JfQkxPQ0siIF0sCisgIFsgIkdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2X0tI
UiIsICJBU1RDXzZ4Nl9TUkdCX0JMT0NLIiBdLAorICBbICJHTF9DT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzh4NV9LSFIiLCAiQVNUQ184eDVfU1JHQl9CTE9DSyIgXSwKKyAgWyAiR0xfQ09N
UFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSIiwgIkFTVENfOHg2X1NSR0JfQkxPQ0si
IF0sCisgIFsgIkdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4X0tIUiIsICJBU1RD
Xzh4OF9TUkdCX0JMT0NLIiBdLAorICBbICJHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RD
XzEweDVfS0hSIiwgIkFTVENfMTB4NV9TUkdCX0JMT0NLIiBdLAorICBbICJHTF9DT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzEweDZfS0hSIiwgIkFTVENfMTB4Nl9TUkdCX0JMT0NLIiBdLAor
ICBbICJHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDhfS0hSIiwgIkFTVENfMTB4
OF9TUkdCX0JMT0NLIiBdLAorICBbICJHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEw
eDEwX0tIUiIsICJBU1RDXzEweDEwX1NSR0JfQkxPQ0siIF0sCisgIFsgIkdMX0NPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0FTVENfMTJ4MTBfS0hSIiwgIkFTVENfMTJ4MTBfU1JHQl9CTE9DSyIgXSwK
KyAgWyAiR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMl9LSFIiLCAiQVNUQ18x
MngxMl9TUkdCX0JMT0NLIiBdLAorICBbICJHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMy
X0VBQyIsICJFVEMyX1I4RzhCOEE4X1NSR0JfQkxPQ0siIF0sCisgIFsgIkdMX0NPTVBSRVNTRURf
U1JHQjhfRVRDMiIsICJFVEMyX1I4RzhCOF9TUkdCX0JMT0NLIiBdLAorICBbICJHTF9DT01QUkVT
U0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiIsICJFVEMyX1I4RzhCOEExX1NSR0Jf
QkxPQ0siIF0sCisgIFsgIkdMX0RFUFRIMjRfU1RFTkNJTDgiLCAiRDI0X1VOT1JNX1M4X1VJTlQi
IF0sCisgIFsgIkdMX0RFUFRIMzJGX1NURU5DSUw4IiwgIkQzMl9GTE9BVF9TOFgyNF9VSU5UIiBd
LAorICBbICJHTF9ERVBUSF9DT01QT05FTlQxNiIsICJEMTZfVU5PUk0iIF0sCisgIFsgIkdMX0RF
UFRIX0NPTVBPTkVOVDI0IiwgIkQyNF9VTk9STSIgXSwKKyAgWyAiR0xfREVQVEhfQ09NUE9ORU5U
MzJGIiwgIkQzMl9GTE9BVCIgXSwKKyAgWyAiR0xfREVQVEhfQ09NUE9ORU5UMzJfT0VTIiwgIkQz
Ml9VTk9STSIgXSwKKyAgWyAiR0xfRVRDMV9SR0I4X09FUyIsICJOT05FIiBdLAorICBbICJHTF9F
VEMxX1JHQjhfTE9TU1lfREVDT0RFX0FOR0xFIiwgIk5PTkUiIF0sCisgIFsgIkdMX0xVTUlOQU5D
RTE2Rl9FWFQiLCAiTDE2X0ZMT0FUIiBdLAorICBbICJHTF9MVU1JTkFOQ0UzMkZfRVhUIiwgIkwz
Ml9GTE9BVCIgXSwKKyAgWyAiR0xfTFVNSU5BTkNFOF9BTFBIQThfRVhUIiwgIkw4QThfVU5PUk0i
IF0sCisgIFsgIkdMX0xVTUlOQU5DRThfRVhUIiwgIkw4X1VOT1JNIiBdLAorICBbICJHTF9MVU1J
TkFOQ0VfQUxQSEExNkZfRVhUIiwgIkwxNkExNl9GTE9BVCIgXSwKKyAgWyAiR0xfTFVNSU5BTkNF
X0FMUEhBMzJGX0VYVCIsICJMMzJBMzJfRkxPQVQiIF0sCisgIFsgIkdMX05PTkUiLCAiTk9ORSIg
XSwKKyAgWyAiR0xfUjExRl9HMTFGX0IxMEYiLCAiUjExRzExQjEwX0ZMT0FUIiBdLAorICBbICJH
TF9SMTZGIiwgIlIxNl9GTE9BVCIgXSwKKyAgWyAiR0xfUjE2SSIsICJSMTZfU0lOVCIgXSwKKyAg
WyAiR0xfUjE2VUkiLCAiUjE2X1VJTlQiIF0sCisgIFsgIkdMX1IzMkYiLCAiUjMyX0ZMT0FUIiBd
LAorICBbICJHTF9SMzJJIiwgIlIzMl9TSU5UIiBdLAorICBbICJHTF9SMzJVSSIsICJSMzJfVUlO
VCIgXSwKKyAgWyAiR0xfUjgiLCAiUjhfVU5PUk0iIF0sCisgIFsgIkdMX1I4SSIsICJSOF9TSU5U
IiBdLAorICBbICJHTF9SOFVJIiwgIlI4X1VJTlQiIF0sCisgIFsgIkdMX1I4X1NOT1JNIiwgIlI4
X1NOT1JNIiBdLAorICBbICJHTF9SRzE2RiIsICJSMTZHMTZfRkxPQVQiIF0sCisgIFsgIkdMX1JH
MTZJIiwgIlIxNkcxNl9TSU5UIiBdLAorICBbICJHTF9SRzE2VUkiLCAiUjE2RzE2X1VJTlQiIF0s
CisgIFsgIkdMX1JHMzJGIiwgIlIzMkczMl9GTE9BVCIgXSwKKyAgWyAiR0xfUkczMkkiLCAiUjMy
RzMyX1NJTlQiIF0sCisgIFsgIkdMX1JHMzJVSSIsICJSMzJHMzJfVUlOVCIgXSwKKyAgWyAiR0xf
Ukc4IiwgIlI4RzhfVU5PUk0iIF0sCisgIFsgIkdMX1JHOEkiLCAiUjhHOF9TSU5UIiBdLAorICBb
ICJHTF9SRzhVSSIsICJSOEc4X1VJTlQiIF0sCisgIFsgIkdMX1JHOF9TTk9STSIsICJSOEc4X1NO
T1JNIiBdLAorICBbICJHTF9SR0IiLCAiUjhHOEI4X1VOT1JNIiBdLAorICBbICJHTF9SR0IxMF9B
MiIsICJSMTBHMTBCMTBBMl9VTk9STSIgXSwKKyAgWyAiR0xfUkdCMTBfQTJVSSIsICJSMTBHMTBC
MTBBMl9VSU5UIiBdLAorICBbICJHTF9SR0IxNkYiLCAiUjE2RzE2QjE2X0ZMT0FUIiBdLAorICBb
ICJHTF9SR0IxNkkiLCAiUjE2RzE2QjE2X1NJTlQiIF0sCisgIFsgIkdMX1JHQjE2VUkiLCAiUjE2
RzE2QjE2X1VJTlQiIF0sCisgIFsgIkdMX1JHQjMyRiIsICJSMzJHMzJCMzJfRkxPQVQiIF0sCisg
IFsgIkdMX1JHQjMySSIsICJSMzJHMzJCMzJfU0lOVCIgXSwKKyAgWyAiR0xfUkdCMzJVSSIsICJS
MzJHMzJCMzJfVUlOVCIgXSwKKyAgWyAiR0xfUkdCNTY1IiwgIlI1RzZCNV9VTk9STSIgXSwKKyAg
WyAiR0xfUkdCNV9BMSIsICJSNUc1QjVBMV9VTk9STSIgXSwKKyAgWyAiR0xfUkdCOCIsICJSOEc4
QjhfVU5PUk0iIF0sCisgIFsgIkdMX1JHQjhJIiwgIlI4RzhCOF9TSU5UIiBdLAorICBbICJHTF9S
R0I4VUkiLCAiUjhHOEI4X1VJTlQiIF0sCisgIFsgIkdMX1JHQjhfU05PUk0iLCAiUjhHOEI4X1NO
T1JNIiBdLAorICBbICJHTF9SR0I5X0U1IiwgIlI5RzlCOUU1X1NIQVJFREVYUCIgXSwKKyAgWyAi
R0xfUkdCQSIsICJSOEc4QjhBOF9VTk9STSIgXSwKKyAgWyAiR0xfUkdCQTE2RiIsICJSMTZHMTZC
MTZBMTZfRkxPQVQiIF0sCisgIFsgIkdMX1JHQkExNkkiLCAiUjE2RzE2QjE2QTE2X1NJTlQiIF0s
CisgIFsgIkdMX1JHQkExNlVJIiwgIlIxNkcxNkIxNkExNl9VSU5UIiBdLAorICBbICJHTF9SR0JB
MzJGIiwgIlIzMkczMkIzMkEzMl9GTE9BVCIgXSwKKyAgWyAiR0xfUkdCQTMySSIsICJSMzJHMzJC
MzJBMzJfU0lOVCIgXSwKKyAgWyAiR0xfUkdCQTMyVUkiLCAiUjMyRzMyQjMyQTMyX1VJTlQiIF0s
CisgIFsgIkdMX1JHQkE0IiwgIlI0RzRCNEE0X1VOT1JNIiBdLAorICBbICJHTF9SR0JBOCIsICJS
OEc4QjhBOF9VTk9STSIgXSwKKyAgWyAiR0xfUkdCQThJIiwgIlI4RzhCOEE4X1NJTlQiIF0sCisg
IFsgIkdMX1JHQkE4VUkiLCAiUjhHOEI4QThfVUlOVCIgXSwKKyAgWyAiR0xfUkdCQThfU05PUk0i
LCAiUjhHOEI4QThfU05PUk0iIF0sCisgIFsgIkdMX1NSR0I4IiwgIlI4RzhCOF9VTk9STV9TUkdC
IiBdLAorICBbICJHTF9TUkdCOF9BTFBIQTgiLCAiUjhHOEI4QThfVU5PUk1fU1JHQiIgXSwKKyAg
WyAiR0xfU1RFTkNJTF9JTkRFWDgiLCAiUzhfVUlOVCIgXSwKKyAgWyAiR0xfUjE2X0VYVCIsICJS
MTZfVU5PUk0iIF0sCisgIFsgIkdMX1JHMTZfRVhUIiwgIlIxNkcxNl9VTk9STSIgXSwKKyAgWyAi
R0xfUkdCMTZfRVhUIiwgIlIxNkcxNkIxNl9VTk9STSIgXSwKKyAgWyAiR0xfUkdCQTE2X0VYVCIs
ICJSMTZHMTZCMTZBMTZfVU5PUk0iIF0sCisgIFsgIkdMX1IxNl9TTk9STV9FWFQiLCAiUjE2X1NO
T1JNIiBdLAorICBbICJHTF9SRzE2X1NOT1JNX0VYVCIsICJSMTZHMTZfU05PUk0iIF0sCisgIFsg
IkdMX1JHQjE2X1NOT1JNX0VYVCIsICJSMTZHMTZCMTZfU05PUk0iIF0sCisgIFsgIkdMX1JHQkEx
Nl9TTk9STV9FWFQiLCAiUjE2RzE2QjE2QTE2X1NOT1JNIiBdCitdCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0J1ZmZlckQzRC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9CdWZmZXJEM0QuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0J1ZmZlckQzRC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQAogICAgIH0KIAogICAgIC8vIENhY2hlIHNpemUgbGlt
aXRpbmc6IENsZWFuLXVwIHRocmVzaG9sZCBpcyBmb3VyIHRpbWVzIHRoZSBiYXNlIGJ1ZmZlciBz
aXplLCB3aXRoIGEgbWluaW11bS4KLSAgICBBU1NFUlQoSXNVbnNpZ25lZE11bHRpcGxpY2F0aW9u
U2FmZShnZXRTaXplKCksIHN0YXRpY19jYXN0PHNpemVfdD4oNHUpKSk7CisgICAgQVNTRVJUKGdl
dFNpemUoKSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLyA0dSk7CiAgICAg
c2l6ZV90IHNpemVUaHJlc2hvbGQgPSBzdGQ6Om1heChnZXRTaXplKCkgKiA0dSwgc3RhdGljX2Nh
c3Q8c2l6ZV90PigweDEwMDB1KSk7CiAKICAgICAvLyBJZiB3ZSdyZSBwYXN0IHRoZSB0aHJlc2hv
bGQsIGNsZWFyIHRoZSBidWZmZXIgY2FjaGUuIE5vdGUgdGhhdCB0aGlzIHdpbGwgcmVsZWFzZSBi
dWZmZXJzCkBAIC0xNzksMTEgKzE3OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsOjpJbmRleFJhbmdlICpvdXRSYW5nZSkKIHsKICAgICBjb25zdCB1aW50OF90ICpk
YXRhID0gbnVsbHB0cjsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBnZXREYXRhKCZkYXRhKTsKLSAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAg
IH0KKyAgICBBTkdMRV9UUlkoZ2V0RGF0YSgmZGF0YSkpOwogCiAgICAgKm91dFJhbmdlID0gZ2w6
OkNvbXB1dGVJbmRleFJhbmdlKHR5cGUsIGRhdGEgKyBvZmZzZXQsIGNvdW50LCBwcmltaXRpdmVS
ZXN0YXJ0RW5hYmxlZCk7CiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0Rpc3Bs
YXlEM0QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvRGlzcGxheUQzRC5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRGlzcGxheUQz
RC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgsNiArOCw4IEBACiAKICNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9kM2QvRGlzcGxheUQzRC5oIgogCisjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgor
CiAjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0NvbmZp
Zy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0Rpc3BsYXkuaCIKQEAgLTE5LDggKzIxLDYgQEAKICNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvU3dhcENoYWluRDNELmgiCiAjaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvZDNkL0RldmljZUQzRC5oIgogCi0jaW5jbHVkZSA8RUdML2VnbGV4
dC5oPgotCiAjaWYgZGVmaW5lZCAoQU5HTEVfRU5BQkxFX0QzRDkpCiAjICAgaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvUmVuZGVyZXI5LmgiCiAjZW5kaWYgLy8gQU5HTEVfRU5B
QkxFX0QzRDkKQEAgLTE2Miw1NSArMTYyLDM0IEBACiB7CiB9CiAKLQotU3VyZmFjZUltcGwgKkRp
c3BsYXlEM0Q6OmNyZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3Vy
YXRpb24sCitTdXJmYWNlSW1wbCAqRGlzcGxheUQzRDo6Y3JlYXRlV2luZG93U3VyZmFjZShjb25z
dCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2ZVdpbmRvd1R5
cGUgd2luZG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiB7CiAgICAgQVNTRVJUKG1SZW5kZXJl
ciAhPSBudWxscHRyKTsKLQotICAgIEVHTGludCB3aWR0aCAgICAgICA9IHN0YXRpY19jYXN0PEVH
TGludD4oYXR0cmlicy5nZXQoRUdMX1dJRFRILCAwKSk7Ci0gICAgRUdMaW50IGhlaWdodCAgICAg
ID0gc3RhdGljX2Nhc3Q8RUdMaW50PihhdHRyaWJzLmdldChFR0xfSEVJR0hULCAwKSk7Ci0gICAg
RUdMaW50IGZpeGVkU2l6ZSAgID0gc3RhdGljX2Nhc3Q8RUdMaW50PihhdHRyaWJzLmdldChFR0xf
RklYRURfU0laRV9BTkdMRSwgRUdMX0ZBTFNFKSk7Ci0gICAgRUdMaW50IG9yaWVudGF0aW9uID0g
c3RhdGljX2Nhc3Q8RUdMaW50PihhdHRyaWJzLmdldChFR0xfU1VSRkFDRV9PUklFTlRBVElPTl9B
TkdMRSwgMCkpOwotICAgIEVHTGludCBkaXJlY3RDb21wb3NpdGlvbiA9Ci0gICAgICAgIHN0YXRp
Y19jYXN0PEVHTGludD4oYXR0cmlicy5nZXQoRUdMX0RJUkVDVF9DT01QT1NJVElPTl9BTkdMRSwg
RUdMX0ZBTFNFKSk7Ci0KLSAgICBpZiAoIWZpeGVkU2l6ZSkKLSAgICB7Ci0gICAgICAgIHdpZHRo
ID0gLTE7Ci0gICAgICAgIGhlaWdodCA9IC0xOwotICAgIH0KLQotICAgIHJldHVybiBTdXJmYWNl
RDNEOjpjcmVhdGVGcm9tV2luZG93KG1SZW5kZXJlciwgbURpc3BsYXksIGNvbmZpZ3VyYXRpb24s
IHdpbmRvdywgZml4ZWRTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRpcmVjdENvbXBvc2l0aW9uLCB3aWR0aCwgaGVpZ2h0LCBvcmllbnRhdGlvbik7CisgICAg
cmV0dXJuIG5ldyBXaW5kb3dTdXJmYWNlRDNEKHN0YXRlLCBtUmVuZGVyZXIsIG1EaXNwbGF5LCBj
b25maWd1cmF0aW9uLCB3aW5kb3csIGF0dHJpYnMpOwogfQogCi1TdXJmYWNlSW1wbCAqRGlzcGxh
eUQzRDo6Y3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRp
b24sCitTdXJmYWNlSW1wbCAqRGlzcGxheUQzRDo6Y3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3Qg
ZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmli
dXRlTWFwICZhdHRyaWJzKQogewogICAgIEFTU0VSVChtUmVuZGVyZXIgIT0gbnVsbHB0cik7Ci0K
LSAgICBFR0xpbnQgd2lkdGggID0gc3RhdGljX2Nhc3Q8RUdMaW50PihhdHRyaWJzLmdldChFR0xf
V0lEVEgsIDApKTsKLSAgICBFR0xpbnQgaGVpZ2h0ID0gc3RhdGljX2Nhc3Q8RUdMaW50PihhdHRy
aWJzLmdldChFR0xfSEVJR0hULCAwKSk7Ci0KLSAgICByZXR1cm4gU3VyZmFjZUQzRDo6Y3JlYXRl
T2Zmc2NyZWVuKG1SZW5kZXJlciwgbURpc3BsYXksIGNvbmZpZ3VyYXRpb24sIG51bGxwdHIsIHdp
ZHRoLCBoZWlnaHQpOworICAgIHJldHVybiBuZXcgUGJ1ZmZlclN1cmZhY2VEM0Qoc3RhdGUsIG1S
ZW5kZXJlciwgbURpc3BsYXksIGNvbmZpZ3VyYXRpb24sIG51bGxwdHIsIGF0dHJpYnMpOwogfQog
Ci1TdXJmYWNlSW1wbCAqRGlzcGxheUQzRDo6Y3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIo
Y29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCitTdXJmYWNlSW1wbCAqRGlzcGxheUQz
RDo6Y3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUg
JnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBz
aGFyZUhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKIHsKICAgICBBU1NF
UlQobVJlbmRlcmVyICE9IG51bGxwdHIpOwotCi0gICAgRUdMaW50IHdpZHRoICA9IHN0YXRpY19j
YXN0PEVHTGludD4oYXR0cmlicy5nZXQoRUdMX1dJRFRILCAwKSk7Ci0gICAgRUdMaW50IGhlaWdo
dCA9IHN0YXRpY19jYXN0PEVHTGludD4oYXR0cmlicy5nZXQoRUdMX0hFSUdIVCwgMCkpOwotCi0g
ICAgcmV0dXJuIFN1cmZhY2VEM0Q6OmNyZWF0ZU9mZnNjcmVlbigKLSAgICAgICAgbVJlbmRlcmVy
LCBtRGlzcGxheSwgY29uZmlndXJhdGlvbiwgc2hhcmVIYW5kbGUsIHdpZHRoLCBoZWlnaHQpOwor
ICAgIHJldHVybiBuZXcgUGJ1ZmZlclN1cmZhY2VEM0Qoc3RhdGUsIG1SZW5kZXJlciwgbURpc3Bs
YXksIGNvbmZpZ3VyYXRpb24sIHNoYXJlSGFuZGxlLCBhdHRyaWJzKTsKIH0KIAotU3VyZmFjZUlt
cGwgKkRpc3BsYXlEM0Q6OmNyZWF0ZVBpeG1hcFN1cmZhY2UoY29uc3QgZWdsOjpDb25maWcgKmNv
bmZpZ3VyYXRpb24sCitTdXJmYWNlSW1wbCAqRGlzcGxheUQzRDo6Y3JlYXRlUGl4bWFwU3VyZmFj
ZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hdGl2ZVBpeG1h
cFR5cGUgbmF0aXZlUGl4bWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiB7CkBAIC0yMzAsMTgg
KzIwOSwxOCBAQAogICAgIHJldHVybiBtUmVuZGVyZXItPmdldEVHTERldmljZShkZXZpY2UpOwog
fQogCi1nbDo6Q29udGV4dCAqRGlzcGxheUQzRDo6Y3JlYXRlQ29udGV4dChjb25zdCBlZ2w6OkNv
bmZpZyAqY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OkNvbnRleHQgKnNoYXJlQ29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQorQ29udGV4dElt
cGwgKkRpc3BsYXlEM0Q6OmNyZWF0ZUNvbnRleHQoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmc3Rh
dGUpCiB7CiAgICAgQVNTRVJUKG1SZW5kZXJlciAhPSBudWxscHRyKTsKLSAgICByZXR1cm4gbmV3
IGdsOjpDb250ZXh0KGNvbmZpZywgc2hhcmVDb250ZXh0LCBtUmVuZGVyZXIsIGF0dHJpYnMpOwor
ICAgIHJldHVybiBtUmVuZGVyZXItPmNyZWF0ZUNvbnRleHQoc3RhdGUpOwogfQogCi1TdHJlYW1J
bXBsICpEaXNwbGF5RDNEOjpjcmVhdGVTdHJlYW0oY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0
dHJpYnMpCitTdHJlYW1Qcm9kdWNlckltcGwgKkRpc3BsYXlEM0Q6OmNyZWF0ZVN0cmVhbVByb2R1
Y2VyRDNEVGV4dHVyZU5WMTIoCisgICAgZWdsOjpTdHJlYW06OkNvbnN1bWVyVHlwZSBjb25zdW1l
clR5cGUsCisgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiB7CiAgICAgQVNT
RVJUKG1SZW5kZXJlciAhPSBudWxscHRyKTsKLSAgICByZXR1cm4gbVJlbmRlcmVyLT5jcmVhdGVT
dHJlYW0oYXR0cmlicyk7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Y3JlYXRlU3RyZWFtUHJvZHVj
ZXJEM0RUZXh0dXJlTlYxMihjb25zdW1lclR5cGUsIGF0dHJpYnMpOwogfQogCiBlZ2w6OkVycm9y
IERpc3BsYXlEM0Q6Om1ha2VDdXJyZW50KGVnbDo6U3VyZmFjZSAqZHJhd1N1cmZhY2UsIGVnbDo6
U3VyZmFjZSAqcmVhZFN1cmZhY2UsIGdsOjpDb250ZXh0ICpjb250ZXh0KQpAQCAtMjUzLDEyICsy
MzIsNyBAQAogewogICAgIEFTU0VSVChtUmVuZGVyZXIgPT0gbnVsbHB0ciAmJiBkaXNwbGF5ICE9
IG51bGxwdHIpOwogICAgIG1EaXNwbGF5ID0gZGlzcGxheTsKLSAgICBlZ2w6OkVycm9yIGVycm9y
ID0gQ3JlYXRlUmVuZGVyZXJEM0QoZGlzcGxheSwgJm1SZW5kZXJlcik7Ci0gICAgaWYgKGVycm9y
LmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Ci0KKyAgICBB
TkdMRV9UUlkoQ3JlYXRlUmVuZGVyZXJEM0QoZGlzcGxheSwgJm1SZW5kZXJlcikpOwogICAgIHJl
dHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKIH0KIApAQCAtMjY3LDE4ICsyNDEsMTIgQEAK
ICAgICBTYWZlRGVsZXRlKG1SZW5kZXJlcik7CiB9CiAKLWVnbDo6Q29uZmlnU2V0IERpc3BsYXlE
M0Q6OmdlbmVyYXRlQ29uZmlncygpIGNvbnN0CitlZ2w6OkNvbmZpZ1NldCBEaXNwbGF5RDNEOjpn
ZW5lcmF0ZUNvbmZpZ3MoKQogewogICAgIEFTU0VSVChtUmVuZGVyZXIgIT0gbnVsbHB0cik7CiAg
ICAgcmV0dXJuIG1SZW5kZXJlci0+Z2VuZXJhdGVDb25maWdzKCk7CiB9CiAKLWJvb2wgRGlzcGxh
eUQzRDo6aXNEZXZpY2VMb3N0KCkgY29uc3QKLXsKLSAgICBBU1NFUlQobVJlbmRlcmVyICE9IG51
bGxwdHIpOwotICAgIHJldHVybiBtUmVuZGVyZXItPmlzRGV2aWNlTG9zdCgpOwotfQotCiBib29s
IERpc3BsYXlEM0Q6OnRlc3REZXZpY2VMb3N0KCkKIHsKICAgICBBU1NFUlQobVJlbmRlcmVyICE9
IG51bGxwdHIpOwpAQCAtMzIwLDcgKzI4OCw3IEBACiAKIGJvb2wgRGlzcGxheUQzRDo6aXNWYWxp
ZE5hdGl2ZVdpbmRvdyhFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdykgY29uc3QKIHsKLSAgICBy
ZXR1cm4gTmF0aXZlV2luZG93Ojppc1ZhbGlkTmF0aXZlV2luZG93KHdpbmRvdyk7CisgICAgcmV0
dXJuIG1SZW5kZXJlci0+aXNWYWxpZE5hdGl2ZVdpbmRvdyh3aW5kb3cpOwogfQogCiB2b2lkIERp
c3BsYXlEM0Q6OmdlbmVyYXRlRXh0ZW5zaW9ucyhlZ2w6OkRpc3BsYXlFeHRlbnNpb25zICpvdXRF
eHRlbnNpb25zKSBjb25zdApAQCAtMzQ0LDEyICszMTIsMTcgQEAKICAgICAvLyBEaXNwbGF5IG11
c3QgYmUgaW5pdGlhbGl6ZWQgdG8gZ2VuZXJhdGUgY2FwcwogICAgIEFTU0VSVChtUmVuZGVyZXIg
IT0gbnVsbHB0cik7CiAKLSAgICBvdXRDYXBzLT50ZXh0dXJlTlBPVCA9IG1SZW5kZXJlci0+Z2V0
UmVuZGVyZXJFeHRlbnNpb25zKCkudGV4dHVyZU5QT1Q7CisgICAgb3V0Q2Fwcy0+dGV4dHVyZU5Q
T1QgPSBtUmVuZGVyZXItPmdldE5hdGl2ZUV4dGVuc2lvbnMoKS50ZXh0dXJlTlBPVDsKIH0KIAog
ZWdsOjpFcnJvciBEaXNwbGF5RDNEOjp3YWl0Q2xpZW50KCkgY29uc3QKIHsKLSAgICAvLyBVbmlt
cGxlbWVudGVkIGFzIGl0IGlzIGEgbm9vcCBvbiBEM0QKKyAgICBmb3IgKGF1dG8gJnN1cmZhY2Ug
OiBnZXRTdXJmYWNlU2V0KCkpCisgICAgeworICAgICAgICBTdXJmYWNlRDNEICpzdXJmYWNlRDNE
ID0gR2V0SW1wbEFzPFN1cmZhY2VEM0Q+KHN1cmZhY2UpOworICAgICAgICBzdXJmYWNlRDNELT5j
aGVja0Zvck91dE9mRGF0ZVN3YXBDaGFpbigpOworICAgIH0KKwogICAgIHJldHVybiBlZ2w6OkVy
cm9yKEVHTF9TVUNDRVNTKTsKIH0KIApAQCAtMzU3LDcgKzMzMCwyNCBAQAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3VyZmFjZSAqZHJhd1N1cmZhY2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpTdXJmYWNlICpyZWFkU3VyZmFjZSkgY29u
c3QKIHsKLSAgICAvLyBVbmltcGxlbWVudGVkIGFzIGl0IGlzIGEgbm9vcCBvbiBEM0QKKyAgICBp
ZiAoZHJhd1N1cmZhY2UgIT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIFN1cmZhY2VEM0QgKmRy
YXdTdXJmYWNlRDNEID0gR2V0SW1wbEFzPFN1cmZhY2VEM0Q+KGRyYXdTdXJmYWNlKTsKKyAgICAg
ICAgZHJhd1N1cmZhY2VEM0QtPmNoZWNrRm9yT3V0T2ZEYXRlU3dhcENoYWluKCk7CisgICAgfQor
CisgICAgaWYgKHJlYWRTdXJmYWNlICE9IG51bGxwdHIpCisgICAgeworICAgICAgICBTdXJmYWNl
RDNEICpyZWFkdXJmYWNlRDNEID0gR2V0SW1wbEFzPFN1cmZhY2VEM0Q+KHJlYWRTdXJmYWNlKTsK
KyAgICAgICAgcmVhZHVyZmFjZUQzRC0+Y2hlY2tGb3JPdXRPZkRhdGVTd2FwQ2hhaW4oKTsKKyAg
ICB9CisKICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CiB9CisKK2dsOjpWZXJz
aW9uIERpc3BsYXlEM0Q6OmdldE1heFN1cHBvcnRlZEVTVmVyc2lvbigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1SZW5kZXJlci0+Z2V0TWF4U3VwcG9ydGVkRVNWZXJzaW9uKCk7CiB9CisKK30gIC8v
IG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9EaXNwbGF5RDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9EaXNwbGF5RDNELmgJKHJldmlzaW9u
IDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvRGlzcGxheUQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxNSArMjUsMTkgQEAKICAg
ICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlKCkgb3ZlcnJpZGU7CiAKICAgICAvLyBTdXJmYWNlIGNy
ZWF0aW9uCi0gICAgU3VyZmFjZUltcGwgKmNyZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgZWdsOjpD
b25maWcgKmNvbmZpZ3VyYXRpb24sCisgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVdpbmRvd1N1cmZh
Y2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmli
dXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKLSAgICBTdXJmYWNlSW1wbCAqY3JlYXRlUGJ1ZmZl
clN1cmZhY2UoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCisgICAgU3VyZmFjZUlt
cGwgKmNyZWF0ZVBidWZmZXJTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcg
KmNvbmZpZ3VyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKLSAgICBTdXJmYWNlSW1w
bCAqY3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoY29uc3QgZWdsOjpDb25maWcgKmNvbmZp
Z3VyYXRpb24sCisgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVy
KGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVu
dEJ1ZmZlciBzaGFyZUhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOwot
ICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQaXhtYXBTdXJmYWNlKGNvbnN0IGVnbDo6Q29uZmlnICpj
b25maWd1cmF0aW9uLAorICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQaXhtYXBTdXJmYWNlKGNvbnN0
IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOYXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1h
cCAmYXR0cmlicykgb3ZlcnJpZGU7CiAKQEAgLTQxLDE3ICs0NSwxNiBAQAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZWdsOjpJbWFnZVNpYmxpbmcgKmJ1ZmZlciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsK
IAotICAgIGdsOjpDb250ZXh0ICpjcmVhdGVDb250ZXh0KGNvbnN0IGVnbDo6Q29uZmlnICpjb25m
aWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkNvbnRleHQgKnNo
YXJlQ29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0
dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CisgICAgQ29udGV4dEltcGwgKmNyZWF0ZUNv
bnRleHQoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmc3RhdGUpIG92ZXJyaWRlOwogCi0gICAgU3Ry
ZWFtSW1wbCAqY3JlYXRlU3RyZWFtKGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBv
dmVycmlkZTsKKyAgICBTdHJlYW1Qcm9kdWNlckltcGwgKmNyZWF0ZVN0cmVhbVByb2R1Y2VyRDNE
VGV4dHVyZU5WMTIoCisgICAgICAgIGVnbDo6U3RyZWFtOjpDb25zdW1lclR5cGUgY29uc3VtZXJU
eXBlLAorICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7
CiAKICAgICBlZ2w6OkVycm9yIG1ha2VDdXJyZW50KGVnbDo6U3VyZmFjZSAqZHJhd1N1cmZhY2Us
IGVnbDo6U3VyZmFjZSAqcmVhZFN1cmZhY2UsIGdsOjpDb250ZXh0ICpjb250ZXh0KSBvdmVycmlk
ZTsKIAotICAgIGVnbDo6Q29uZmlnU2V0IGdlbmVyYXRlQ29uZmlncygpIGNvbnN0IG92ZXJyaWRl
OworICAgIGVnbDo6Q29uZmlnU2V0IGdlbmVyYXRlQ29uZmlncygpIG92ZXJyaWRlOwogCi0gICAg
Ym9vbCBpc0RldmljZUxvc3QoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHRlc3REZXZpY2VM
b3N0KCkgb3ZlcnJpZGU7CiAgICAgZWdsOjpFcnJvciByZXN0b3JlTG9zdERldmljZSgpIG92ZXJy
aWRlOwogCkBAIC02NSw2ICs2OCw3IEBACiAgICAgZWdsOjpFcnJvciB3YWl0TmF0aXZlKEVHTGlu
dCBlbmdpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3VyZmFjZSAqZHJhd1N1
cmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3VyZmFjZSAqcmVhZFN1cmZh
Y2UpIGNvbnN0IG92ZXJyaWRlOworICAgIGdsOjpWZXJzaW9uIGdldE1heFN1cHBvcnRlZEVTVmVy
c2lvbigpIGNvbnN0IG92ZXJyaWRlOwogCiAgIHByaXZhdGU6CiAgICAgdm9pZCBnZW5lcmF0ZUV4
dGVuc2lvbnMoZWdsOjpEaXNwbGF5RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucykgY29uc3Qgb3Zl
cnJpZGU7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL0R5bmFtaWNITFNMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0R5bmFtaWNITFNMLmNwcAkocmV2aXNpb24g
MjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9EeW5hbWljSExTTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMiw4ICs0MDIsOCBAQAog
ICAgIGxpbmtTdHJlYW0gPDwgIn07XG4iOwogfQogCi1ib29sIER5bmFtaWNITFNMOjpnZW5lcmF0
ZVNoYWRlckxpbmtITFNMKGNvbnN0IGdsOjpEYXRhICZkYXRhLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbTo6RGF0YSAmcHJvZ3JhbURh
dGEsCitib29sIER5bmFtaWNITFNMOjpnZW5lcmF0ZVNoYWRlckxpbmtITFNMKGNvbnN0IGdsOjpD
b250ZXh0U3RhdGUgJmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJnByb2dyYW1EYXRhLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQcm9ncmFtRDNETWV0YWRhdGEgJnByb2dy
YW1NZXRhZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVmFyeWluZ1BhY2tpbmcgJnZhcnlpbmdQYWNraW5nLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyAqcGl4ZWxITFNMLApAQCAtNDM0LDkgKzQz
NCw5IEBACiAgICAgaWYgKHVzZUluc3RhbmNlZFBvaW50U3ByaXRlRW11bGF0aW9uKQogICAgIHsK
ICAgICAgICAgdmVydGV4U3RyZWFtIDw8ICJzdGF0aWMgZmxvYXQgbWluUG9pbnRTaXplID0gIgot
ICAgICAgICAgICAgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8aW50PihkYXRhLmNhcHMtPm1pbkFs
aWFzZWRQb2ludFNpemUpIDw8ICIuMGY7XG4iCisgICAgICAgICAgICAgICAgICAgICA8PCBzdGF0
aWNfY2FzdDxpbnQ+KGRhdGEuZ2V0Q2FwcygpLm1pbkFsaWFzZWRQb2ludFNpemUpIDw8ICIuMGY7
XG4iCiAgICAgICAgICAgICAgICAgICAgICA8PCAic3RhdGljIGZsb2F0IG1heFBvaW50U2l6ZSA9
ICIKLSAgICAgICAgICAgICAgICAgICAgIDw8IHN0YXRpY19jYXN0PGludD4oZGF0YS5jYXBzLT5t
YXhBbGlhc2VkUG9pbnRTaXplKSA8PCAiLjBmO1xuIjsKKyAgICAgICAgICAgICAgICAgICAgIDw8
IHN0YXRpY19jYXN0PGludD4oZGF0YS5nZXRDYXBzKCkubWF4QWxpYXNlZFBvaW50U2l6ZSkgPDwg
Ii4wZjtcbiI7CiAgICAgfQogCiAgICAgLy8gQWRkIHN0dWIgc3RyaW5nIHRvIGJlIHJlcGxhY2Vk
IHdoZW4gc2hhZGVyIGlzIGR5bmFtaWNhbGx5IGRlZmluZWQgYnkgaXRzIGxheW91dApAQCAtNzIw
LDcgKzcyMCw5IEBACiAgICAgICAgIEFTU0VSVCghdmFyeWluZy5pc0J1aWx0SW4oKSAmJiAhdmFy
eWluZy5pc1N0cnVjdCgpKTsKIAogICAgICAgICAvLyBEb24ndCByZWZlcmVuY2UgVlMtb25seSB0
cmFuc2Zvcm0gZmVlZGJhY2sgdmFyeWluZ3MgaW4gdGhlIFBTLgotICAgICAgICBpZiAocmVnaXN0
ZXJJbmZvLnBhY2tlZFZhcnlpbmctPnZlcnRleE9ubHkpCisgICAgICAgIC8vIFRPRE86IENvbnNp
ZGVyIHVwZGF0aW5nIHRoZSBmcmFnbWVudCBzaGFkZXIncyB2YXJ5aW5ncyB3aXRoIGEgcGFyYW1l
dGVyIHNpZ25hbGluZyB0aGF0IGEKKyAgICAgICAgLy8gdmFyeWluZyBpcyBvbmx5IHVzZWQgaW4g
dGhlIHZlcnRleCBzaGFkZXIgaW4gTWVyZ2VWYXJ5aW5ncworICAgICAgICBpZiAocGFja2VkVmFy
eWluZy52ZXJ0ZXhPbmx5IHx8ICghdmFyeWluZy5zdGF0aWNVc2UgJiYgIXBhY2tlZFZhcnlpbmcu
aXNTdHJ1Y3RGaWVsZCgpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIHBpeGVs
U3RyZWFtIDw8ICIgICAgIjsKQEAgLTgyNSw4ICs4MjcsOCBAQAogfQogCiBzdGQ6OnN0cmluZyBE
eW5hbWljSExTTDo6Z2VuZXJhdGVHZW9tZXRyeVNoYWRlckhMU0woZ2w6OlByaW1pdGl2ZVR5cGUg
cHJpbWl0aXZlVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6RGF0YSAmZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbTo6RGF0YSAmcHJv
Z3JhbURhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZw
cm9ncmFtRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBib29sIHVzZVZpZXdTY2FsZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmcHJlYW1ibGVT
dHJpbmcpIGNvbnN0CiB7CkBAIC05MDMsMTAgKzkwNSwxMCBAQAogICAgICAgICAgICAgICAgICAg
ICAgICAgIn07XG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCiAgICAgICAgICAgICAg
ICAgICAgICAgICAic3RhdGljIGZsb2F0IG1pblBvaW50U2l6ZSA9ICIKLSAgICAgICAgICAgICAg
ICAgICAgIDw8IHN0YXRpY19jYXN0PGludD4oZGF0YS5jYXBzLT5taW5BbGlhc2VkUG9pbnRTaXpl
KQorICAgICAgICAgICAgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8aW50PihkYXRhLmdldENhcHMo
KS5taW5BbGlhc2VkUG9pbnRTaXplKQogICAgICAgICAgICAgICAgICAgICAgPDwgIi4wZjtcbiIK
ICAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0aWMgZmxvYXQgbWF4UG9pbnRTaXplID0gIgot
ICAgICAgICAgICAgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8aW50PihkYXRhLmNhcHMtPm1heEFs
aWFzZWRQb2ludFNpemUpIDw8ICIuMGY7XG4iCisgICAgICAgICAgICAgICAgICAgICA8PCBzdGF0
aWNfY2FzdDxpbnQ+KGRhdGEuZ2V0Q2FwcygpLm1heEFsaWFzZWRQb2ludFNpemUpIDw8ICIuMGY7
XG4iCiAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iOwogICAgIH0KIApAQCAtMTAyOSw4ICsx
MDMxLDggQEAKICAgICByZXR1cm4gYXR0cmliU3RyaW5nOwogfQogCi12b2lkIER5bmFtaWNITFNM
OjpnZXRQaXhlbFNoYWRlck91dHB1dEtleShjb25zdCBnbDo6RGF0YSAmZGF0YSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQcm9ncmFtOjpEYXRh
ICZwcm9ncmFtRGF0YSwKK3ZvaWQgRHluYW1pY0hMU0w6OmdldFBpeGVsU2hhZGVyT3V0cHV0S2V5
KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9ncmFtRGF0YSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFByb2dyYW1EM0RN
ZXRhZGF0YSAmbWV0YWRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OnZlY3RvcjxQaXhlbFNoYWRlck91dHB1dFZhcmlhYmxlPiAqb3V0UGl4ZWxTaGFk
ZXJLZXkpCiB7CkBAIC0xMDM5LDcgKzEwNDEsNyBAQAogICAgIC8vIC0gd2l0aCBhIDIuMCBjb250
ZXh0LCB0aGUgb3V0cHV0IGNvbG9yIGlzIGJyb2FkY2FzdCB0byBhbGwgY2hhbm5lbHMKICAgICBi
b29sIGJyb2FkY2FzdCA9IG1ldGFkYXRhLnVzZXNCcm9hZGNhc3QoZGF0YSk7CiAgICAgY29uc3Qg
dW5zaWduZWQgaW50IG51bVJlbmRlclRhcmdldHMgPQotICAgICAgICAoYnJvYWRjYXN0IHx8IG1l
dGFkYXRhLnVzZXNNdWx0aXBsZUZyYWdtZW50T3V0cygpID8gZGF0YS5jYXBzLT5tYXhEcmF3QnVm
ZmVycyA6IDEpOworICAgICAgICAoYnJvYWRjYXN0IHx8IG1ldGFkYXRhLnVzZXNNdWx0aXBsZUZy
YWdtZW50T3V0cygpID8gZGF0YS5nZXRDYXBzKCkubWF4RHJhd0J1ZmZlcnMgOiAxKTsKIAogICAg
IGlmIChtZXRhZGF0YS5nZXRNYWpvclNoYWRlclZlcnNpb24oKSA8IDMwMCkKICAgICB7CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0R5bmFt
aWNITFNMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9EeW5hbWljSExTTC5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0R5bmFtaWNITFNM
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKIGNsYXNzIEluZm9Mb2c7CiBzdHJ1
Y3QgVmFyaWFibGVMb2NhdGlvbjsKIHN0cnVjdCBWZXJ0ZXhBdHRyaWJ1dGU7Ci1zdHJ1Y3QgRGF0
YTsKIH0KIAogbmFtZXNwYWNlIHJ4CkBAIC02Miw4ICs2MSw4IEBACiAgICAgICAgIGNvbnN0IHN0
ZDo6dmVjdG9yPFBpeGVsU2hhZGVyT3V0cHV0VmFyaWFibGU+ICZvdXRwdXRWYXJpYWJsZXMsCiAg
ICAgICAgIGJvb2wgdXNlc0ZyYWdEZXB0aCwKICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8R0xl
bnVtPiAmb3V0cHV0TGF5b3V0KSBjb25zdDsKLSAgICBib29sIGdlbmVyYXRlU2hhZGVyTGlua0hM
U0woY29uc3QgZ2w6OkRhdGEgJmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpQcm9ncmFtOjpEYXRhICZwcm9ncmFtRGF0YSwKKyAgICBib29sIGdlbmVyYXRl
U2hhZGVyTGlua0hMU0woY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3JhbURhdGEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFByb2dyYW1EM0RNZXRhZGF0
YSAmcHJvZ3JhbU1ldGFkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBWYXJ5aW5nUGFja2luZyAmdmFyeWluZ1BhY2tpbmcsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6c3RyaW5nICpwaXhlbEhMU0wsCkBAIC03MiwxMyArNzEsMTMgQEAKICAg
ICBzdGQ6OnN0cmluZyBnZW5lcmF0ZUdlb21ldHJ5U2hhZGVyUHJlYW1ibGUoY29uc3QgVmFyeWlu
Z1BhY2tpbmcgJnZhcnlpbmdQYWNraW5nKSBjb25zdDsKIAogICAgIHN0ZDo6c3RyaW5nIGdlbmVy
YXRlR2VvbWV0cnlTaGFkZXJITFNMKGdsOjpQcmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkRhdGEg
JmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OlByb2dyYW06OkRhdGEgJnByb2dyYW1EYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlByb2dyYW1TdGF0
ZSAmcHJvZ3JhbURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgYm9vbCB1c2VWaWV3U2NhbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnByZWFtYmxlU3RyaW5nKSBjb25zdDsK
IAotICAgIHZvaWQgZ2V0UGl4ZWxTaGFkZXJPdXRwdXRLZXkoY29uc3QgZ2w6OkRhdGEgJmRhdGEs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbTo6RGF0
YSAmcHJvZ3JhbURhdGEsCisgICAgdm9pZCBnZXRQaXhlbFNoYWRlck91dHB1dEtleShjb25zdCBn
bDo6Q29udGV4dFN0YXRlICZkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3JhbURhdGEsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBQcm9ncmFtRDNETWV0YWRhdGEgJm1ldGFkYXRhLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8UGl4ZWxTaGFkZXJPdXRwdXRW
YXJpYWJsZT4gKm91dFBpeGVsU2hhZGVyS2V5KTsKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9GcmFtZWJ1ZmZlckQzRC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9GcmFtZWJ1ZmZlckQzRC5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRnJhbWVidWZmZXJEM0QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMyw2ICsxMyw3IEBACiAjaW5jbHVkZSAibGliQU5HTEUvRnJhbWVi
dWZmZXIuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1lbnQuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9TdXJmYWNlLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
Q29udGV4dEltcGwuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyZXJE
M0QuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyYnVmZmVyRDNELmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlclRhcmdldEQzRC5oIgpAQCAt
ODUsNyArODYsNyBAQAogCiB9CiAKLUZyYW1lYnVmZmVyRDNEOjpGcmFtZWJ1ZmZlckQzRChjb25z
dCBnbDo6RnJhbWVidWZmZXI6OkRhdGEgJmRhdGEsIFJlbmRlcmVyRDNEICpyZW5kZXJlcikKK0Zy
YW1lYnVmZmVyRDNEOjpGcmFtZWJ1ZmZlckQzRChjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAm
ZGF0YSwgUmVuZGVyZXJEM0QgKnJlbmRlcmVyKQogICAgIDogRnJhbWVidWZmZXJJbXBsKGRhdGEp
LCBtUmVuZGVyZXIocmVuZGVyZXIpCiB7CiB9CkBAIC05NCwyMCArOTUsMTkgQEAKIHsKIH0KIAot
Z2w6OkVycm9yIEZyYW1lYnVmZmVyRDNEOjpjbGVhcihjb25zdCBnbDo6RGF0YSAmZGF0YSwgR0xi
aXRmaWVsZCBtYXNrKQorZ2w6OkVycm9yIEZyYW1lYnVmZmVyRDNEOjpjbGVhcihDb250ZXh0SW1w
bCAqY29udGV4dCwgR0xiaXRmaWVsZCBtYXNrKQogewotICAgIGNvbnN0IGdsOjpTdGF0ZSAmc3Rh
dGUgPSAqZGF0YS5zdGF0ZTsKLSAgICBDbGVhclBhcmFtZXRlcnMgY2xlYXJQYXJhbXMgPSBHZXRD
bGVhclBhcmFtZXRlcnMoc3RhdGUsIG1hc2spOwotICAgIHJldHVybiBjbGVhcihkYXRhLCBjbGVh
clBhcmFtcyk7CisgICAgQ2xlYXJQYXJhbWV0ZXJzIGNsZWFyUGFyYW1zID0gR2V0Q2xlYXJQYXJh
bWV0ZXJzKGNvbnRleHQtPmdldEdMU3RhdGUoKSwgbWFzayk7CisgICAgcmV0dXJuIGNsZWFySW1w
bChjb250ZXh0LCBjbGVhclBhcmFtcyk7CiB9CiAKLWdsOjpFcnJvciBGcmFtZWJ1ZmZlckQzRDo6
Y2xlYXJCdWZmZXJmdihjb25zdCBnbDo6RGF0YSAmZGF0YSwKK2dsOjpFcnJvciBGcmFtZWJ1ZmZl
ckQzRDo6Y2xlYXJCdWZmZXJmdihDb250ZXh0SW1wbCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYnVmZmVyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWVzKQogewogICAg
IC8vIGdsQ2xlYXJCdWZmZXJmdiBjYW4gYmUgY2FsbGVkIHRvIGNsZWFyIHRoZSBjb2xvciBidWZm
ZXIgb3IgZGVwdGggYnVmZmVyCi0gICAgQ2xlYXJQYXJhbWV0ZXJzIGNsZWFyUGFyYW1zID0gR2V0
Q2xlYXJQYXJhbWV0ZXJzKCpkYXRhLnN0YXRlLCAwKTsKKyAgICBDbGVhclBhcmFtZXRlcnMgY2xl
YXJQYXJhbXMgPSBHZXRDbGVhclBhcmFtZXRlcnMoY29udGV4dC0+Z2V0R0xTdGF0ZSgpLCAwKTsK
IAogICAgIGlmIChidWZmZXIgPT0gR0xfQ09MT1IpCiAgICAgewpAQCAtMTI1LDE2ICsxMjUsMTYg
QEAKICAgICAgICAgY2xlYXJQYXJhbXMuZGVwdGhDbGVhclZhbHVlID0gdmFsdWVzWzBdOwogICAg
IH0KIAotICAgIHJldHVybiBjbGVhcihkYXRhLCBjbGVhclBhcmFtcyk7CisgICAgcmV0dXJuIGNs
ZWFySW1wbChjb250ZXh0LCBjbGVhclBhcmFtcyk7CiB9CiAKLWdsOjpFcnJvciBGcmFtZWJ1ZmZl
ckQzRDo6Y2xlYXJCdWZmZXJ1aXYoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCitnbDo6RXJyb3IgRnJh
bWVidWZmZXJEM0Q6OmNsZWFyQnVmZmVydWl2KENvbnRleHRJbXBsICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYnVmZmVyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVl
cykKIHsKICAgICAvLyBnbENsZWFyQnVmZmVydWl2IGNhbiBvbmx5IGJlIGNhbGxlZCB0byBjbGVh
ciBhIGNvbG9yIGJ1ZmZlcgotICAgIENsZWFyUGFyYW1ldGVycyBjbGVhclBhcmFtcyA9IEdldENs
ZWFyUGFyYW1ldGVycygqZGF0YS5zdGF0ZSwgMCk7CisgICAgQ2xlYXJQYXJhbWV0ZXJzIGNsZWFy
UGFyYW1zID0gR2V0Q2xlYXJQYXJhbWV0ZXJzKGNvbnRleHQtPmdldEdMU3RhdGUoKSwgMCk7CiAg
ICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBBcnJheVNpemUoY2xlYXJQYXJhbXMuY2xl
YXJDb2xvcik7IGkrKykKICAgICB7CiAgICAgICAgIGNsZWFyUGFyYW1zLmNsZWFyQ29sb3JbaV0g
PSAoZHJhd2J1ZmZlciA9PSBzdGF0aWNfY2FzdDxpbnQ+KGkpKTsKQEAgLTE0MiwxNiArMTQyLDE2
IEBACiAgICAgY2xlYXJQYXJhbXMuY29sb3JVSUNsZWFyVmFsdWUgPSBnbDo6Q29sb3JVSSh2YWx1
ZXNbMF0sIHZhbHVlc1sxXSwgdmFsdWVzWzJdLCB2YWx1ZXNbM10pOwogICAgIGNsZWFyUGFyYW1z
LmNvbG9yQ2xlYXJUeXBlID0gR0xfVU5TSUdORURfSU5UOwogCi0gICAgcmV0dXJuIGNsZWFyKGRh
dGEsIGNsZWFyUGFyYW1zKTsKKyAgICByZXR1cm4gY2xlYXJJbXBsKGNvbnRleHQsIGNsZWFyUGFy
YW1zKTsKIH0KIAotZ2w6OkVycm9yIEZyYW1lYnVmZmVyRDNEOjpjbGVhckJ1ZmZlcml2KGNvbnN0
IGdsOjpEYXRhICZkYXRhLAorZ2w6OkVycm9yIEZyYW1lYnVmZmVyRDNEOjpjbGVhckJ1ZmZlcml2
KENvbnRleHRJbXBsICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgZHJhd2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGludCAqdmFsdWVzKQogewogICAgIC8vIGdsQ2xlYXJCdWZmZXJpdiBj
YW4gYmUgY2FsbGVkIHRvIGNsZWFyIHRoZSBjb2xvciBidWZmZXIgb3Igc3RlbmNpbCBidWZmZXIK
LSAgICBDbGVhclBhcmFtZXRlcnMgY2xlYXJQYXJhbXMgPSBHZXRDbGVhclBhcmFtZXRlcnMoKmRh
dGEuc3RhdGUsIDApOworICAgIENsZWFyUGFyYW1ldGVycyBjbGVhclBhcmFtcyA9IEdldENsZWFy
UGFyYW1ldGVycyhjb250ZXh0LT5nZXRHTFN0YXRlKCksIDApOwogCiAgICAgaWYgKGJ1ZmZlciA9
PSBHTF9DT0xPUikKICAgICB7CkBAIC0xNjksMTAgKzE2OSwxMCBAQAogICAgICAgICBjbGVhclBh
cmFtcy5zdGVuY2lsQ2xlYXJWYWx1ZSA9IHZhbHVlc1sxXTsKICAgICB9CiAKLSAgICByZXR1cm4g
Y2xlYXIoZGF0YSwgY2xlYXJQYXJhbXMpOworICAgIHJldHVybiBjbGVhckltcGwoY29udGV4dCwg
Y2xlYXJQYXJhbXMpOwogfQogCi1nbDo6RXJyb3IgRnJhbWVidWZmZXJEM0Q6OmNsZWFyQnVmZmVy
ZmkoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCitnbDo6RXJyb3IgRnJhbWVidWZmZXJEM0Q6OmNsZWFy
QnVmZmVyZmkoQ29udGV4dEltcGwgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZmxvYXQgZGVwdGgsCkBAIC0xNzksMTggKzE3OSwxOCBAQAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHN0ZW5jaWwpCiB7CiAg
ICAgLy8gZ2xDbGVhckJ1ZmZlcmZpIGNhbiBvbmx5IGJlIGNhbGxlZCB0byBjbGVhciBhIGRlcHRo
IHN0ZW5jaWwgYnVmZmVyCi0gICAgQ2xlYXJQYXJhbWV0ZXJzIGNsZWFyUGFyYW1zICAgPSBHZXRD
bGVhclBhcmFtZXRlcnMoKmRhdGEuc3RhdGUsIDApOworICAgIENsZWFyUGFyYW1ldGVycyBjbGVh
clBhcmFtcyAgID0gR2V0Q2xlYXJQYXJhbWV0ZXJzKGNvbnRleHQtPmdldEdMU3RhdGUoKSwgMCk7
CiAgICAgY2xlYXJQYXJhbXMuY2xlYXJEZXB0aCA9IHRydWU7CiAgICAgY2xlYXJQYXJhbXMuZGVw
dGhDbGVhclZhbHVlID0gZGVwdGg7CiAgICAgY2xlYXJQYXJhbXMuY2xlYXJTdGVuY2lsID0gdHJ1
ZTsKICAgICBjbGVhclBhcmFtcy5zdGVuY2lsQ2xlYXJWYWx1ZSA9IHN0ZW5jaWw7CiAKLSAgICBy
ZXR1cm4gY2xlYXIoZGF0YSwgY2xlYXJQYXJhbXMpOworICAgIHJldHVybiBjbGVhckltcGwoY29u
dGV4dCwgY2xlYXJQYXJhbXMpOwogfQogCiBHTGVudW0gRnJhbWVidWZmZXJEM0Q6OmdldEltcGxl
bWVudGF0aW9uQ29sb3JSZWFkRm9ybWF0KCkgY29uc3QKIHsKLSAgICBjb25zdCBnbDo6RnJhbWVi
dWZmZXJBdHRhY2htZW50ICpyZWFkQXR0YWNobWVudCA9IG1EYXRhLmdldFJlYWRBdHRhY2htZW50
KCk7CisgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqcmVhZEF0dGFjaG1lbnQg
PSBtU3RhdGUuZ2V0UmVhZEF0dGFjaG1lbnQoKTsKIAogICAgIGlmIChyZWFkQXR0YWNobWVudCA9
PSBudWxscHRyKQogICAgIHsKQEAgLTIwNywxMiArMjA3LDEyIEBACiAgICAgR0xlbnVtIGltcGxl
bWVudGF0aW9uRm9ybWF0ID0gZ2V0UmVuZGVyVGFyZ2V0SW1wbGVtZW50YXRpb25Gb3JtYXQoYXR0
YWNobWVudFJlbmRlclRhcmdldCk7CiAgICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZpbXBs
ZW1lbnRhdGlvbkZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGltcGxlbWVu
dGF0aW9uRm9ybWF0KTsKIAotICAgIHJldHVybiBpbXBsZW1lbnRhdGlvbkZvcm1hdEluZm8uZm9y
bWF0OworICAgIHJldHVybiBpbXBsZW1lbnRhdGlvbkZvcm1hdEluZm8uZ2V0UmVhZFBpeGVsc0Zv
cm1hdCgpOwogfQogCiBHTGVudW0gRnJhbWVidWZmZXJEM0Q6OmdldEltcGxlbWVudGF0aW9uQ29s
b3JSZWFkVHlwZSgpIGNvbnN0CiB7Ci0gICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVu
dCAqcmVhZEF0dGFjaG1lbnQgPSBtRGF0YS5nZXRSZWFkQXR0YWNobWVudCgpOworICAgIGNvbnN0
IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKnJlYWRBdHRhY2htZW50ID0gbVN0YXRlLmdldFJl
YWRBdHRhY2htZW50KCk7CiAKICAgICBpZiAocmVhZEF0dGFjaG1lbnQgPT0gbnVsbHB0cikKICAg
ICB7CkBAIC0yMjksNDcgKzIyOSw1NyBAQAogICAgIEdMZW51bSBpbXBsZW1lbnRhdGlvbkZvcm1h
dCA9IGdldFJlbmRlclRhcmdldEltcGxlbWVudGF0aW9uRm9ybWF0KGF0dGFjaG1lbnRSZW5kZXJU
YXJnZXQpOwogICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmaW1wbGVtZW50YXRpb25Gb3Jt
YXRJbmZvID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhpbXBsZW1lbnRhdGlvbkZvcm1hdCk7
CiAKLSAgICByZXR1cm4gaW1wbGVtZW50YXRpb25Gb3JtYXRJbmZvLnR5cGU7CisgICAgcmV0dXJu
IGltcGxlbWVudGF0aW9uRm9ybWF0SW5mby5nZXRSZWFkUGl4ZWxzVHlwZSgpOwogfQogCi1nbDo6
RXJyb3IgRnJhbWVidWZmZXJEM0Q6OnJlYWRQaXhlbHMoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwg
Y29uc3QgZ2w6OlJlY3RhbmdsZSAmYXJlYSwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdM
dm9pZCAqcGl4ZWxzKSBjb25zdAorZ2w6OkVycm9yIEZyYW1lYnVmZmVyRDNEOjpyZWFkUGl4ZWxz
KENvbnRleHRJbXBsICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHZvaWQgKnBpeGVscykgY29uc3QKIHsKLSAgICBjb25zdCBnbDo6UGl4ZWxQYWNrU3RhdGUg
JnBhY2tTdGF0ZSA9IHN0YXRlLmdldFBhY2tTdGF0ZSgpOworICAgIGNvbnN0IGdsOjpQaXhlbFBh
Y2tTdGF0ZSAmcGFja1N0YXRlID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFBhY2tTdGF0ZSgp
OwogCiAgICAgR0xlbnVtIHNpemVkSW50ZXJuYWxGb3JtYXQgPSBnbDo6R2V0U2l6ZWRJbnRlcm5h
bEZvcm1hdChmb3JtYXQsIHR5cGUpOwogICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmc2l6
ZWRGb3JtYXRJbmZvID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhzaXplZEludGVybmFsRm9y
bWF0KTsKLSAgICBHTHVpbnQgb3V0cHV0UGl0Y2ggPQotICAgICAgICBzaXplZEZvcm1hdEluZm8u
Y29tcHV0ZVJvd1BpdGNoKHR5cGUsIGFyZWEud2lkdGgsIHBhY2tTdGF0ZS5hbGlnbm1lbnQsIHBh
Y2tTdGF0ZS5yb3dMZW5ndGgpOwotICAgIEdMc2l6ZWkgb3V0cHV0U2tpcEJ5dGVzID0gc2l6ZWRG
b3JtYXRJbmZvLmNvbXB1dGVTa2lwUGl4ZWxzKAotICAgICAgICBvdXRwdXRQaXRjaCwgMCwgMCwg
cGFja1N0YXRlLnNraXBSb3dzLCBwYWNrU3RhdGUuc2tpcFBpeGVscyk7CiAKKyAgICBHTHVpbnQg
b3V0cHV0UGl0Y2ggPSAwOworICAgIEFOR0xFX1RSWV9SRVNVTFQoCisgICAgICAgIHNpemVkRm9y
bWF0SW5mby5jb21wdXRlUm93UGl0Y2godHlwZSwgYXJlYS53aWR0aCwgcGFja1N0YXRlLmFsaWdu
bWVudCwgcGFja1N0YXRlLnJvd0xlbmd0aCksCisgICAgICAgIG91dHB1dFBpdGNoKTsKKyAgICBH
THVpbnQgb3V0cHV0U2tpcEJ5dGVzID0gMDsKKyAgICBBTkdMRV9UUllfUkVTVUxUKHNpemVkRm9y
bWF0SW5mby5jb21wdXRlU2tpcEJ5dGVzKG91dHB1dFBpdGNoLCAwLCBwYWNrU3RhdGUsIGZhbHNl
KSwKKyAgICAgICAgICAgICAgICAgICAgIG91dHB1dFNraXBCeXRlcyk7CisKICAgICByZXR1cm4g
cmVhZFBpeGVsc0ltcGwoYXJlYSwgZm9ybWF0LCB0eXBlLCBvdXRwdXRQaXRjaCwgcGFja1N0YXRl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4X3QgKj4o
cGl4ZWxzKSArIG91dHB1dFNraXBCeXRlcyk7CiB9CiAKLWdsOjpFcnJvciBGcmFtZWJ1ZmZlckQz
RDo6YmxpdChjb25zdCBnbDo6U3RhdGUgJnN0YXRlLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3Vy
Y2VBcmVhLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZkZXN0QXJlYSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGJpdGZpZWxkIG1hc2ssIEdMZW51bSBmaWx0ZXIsIGNvbnN0IGdsOjpG
cmFtZWJ1ZmZlciAqc291cmNlRnJhbWVidWZmZXIpCitnbDo6RXJyb3IgRnJhbWVidWZmZXJEM0Q6
OmJsaXQoQ29udGV4dEltcGwgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZkZXN0QXJlYSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGJpdGZpZWxkIG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGZpbHRlcikKIHsKKyAgICBjb25zdCBhdXRvICZnbFN0YXRlICAgICAg
ICAgICAgICAgICAgICAgID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpOworICAgIGNvbnN0IGdsOjpG
cmFtZWJ1ZmZlciAqc291cmNlRnJhbWVidWZmZXIgPSBnbFN0YXRlLmdldFJlYWRGcmFtZWJ1ZmZl
cigpOwogICAgIGJvb2wgYmxpdFJlbmRlclRhcmdldCA9IGZhbHNlOwotICAgIGlmICgobWFzayAm
IEdMX0NPTE9SX0JVRkZFUl9CSVQpICYmCi0gICAgICAgIHNvdXJjZUZyYW1lYnVmZmVyLT5nZXRS
ZWFkQ29sb3JidWZmZXIoKSAhPSBudWxscHRyICYmCi0gICAgICAgIG1EYXRhLmdldEZpcnN0Q29s
b3JBdHRhY2htZW50KCkgIT0gbnVsbHB0cikKKyAgICBpZiAoKG1hc2sgJiBHTF9DT0xPUl9CVUZG
RVJfQklUKSAmJiBzb3VyY2VGcmFtZWJ1ZmZlci0+Z2V0UmVhZENvbG9yYnVmZmVyKCkgIT0gbnVs
bHB0ciAmJgorICAgICAgICBtU3RhdGUuZ2V0Rmlyc3RDb2xvckF0dGFjaG1lbnQoKSAhPSBudWxs
cHRyKQogICAgIHsKICAgICAgICAgYmxpdFJlbmRlclRhcmdldCA9IHRydWU7CiAgICAgfQogCiAg
ICAgYm9vbCBibGl0U3RlbmNpbCA9IGZhbHNlOwotICAgIGlmICgobWFzayAmIEdMX1NURU5DSUxf
QlVGRkVSX0JJVCkgJiYKLSAgICAgICAgc291cmNlRnJhbWVidWZmZXItPmdldFN0ZW5jaWxidWZm
ZXIoKSAhPSBudWxscHRyICYmCi0gICAgICAgIG1EYXRhLmdldFN0ZW5jaWxBdHRhY2htZW50KCkg
IT0gbnVsbHB0cikKKyAgICBpZiAoKG1hc2sgJiBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpICYmIHNv
dXJjZUZyYW1lYnVmZmVyLT5nZXRTdGVuY2lsYnVmZmVyKCkgIT0gbnVsbHB0ciAmJgorICAgICAg
ICBtU3RhdGUuZ2V0U3RlbmNpbEF0dGFjaG1lbnQoKSAhPSBudWxscHRyKQogICAgIHsKICAgICAg
ICAgYmxpdFN0ZW5jaWwgPSB0cnVlOwogICAgIH0KIAogICAgIGJvb2wgYmxpdERlcHRoID0gZmFs
c2U7Ci0gICAgaWYgKChtYXNrICYgR0xfREVQVEhfQlVGRkVSX0JJVCkgJiYKLSAgICAgICAgc291
cmNlRnJhbWVidWZmZXItPmdldERlcHRoYnVmZmVyKCkgIT0gbnVsbHB0ciAmJgotICAgICAgICBt
RGF0YS5nZXREZXB0aEF0dGFjaG1lbnQoKSAhPSBudWxscHRyKQorICAgIGlmICgobWFzayAmIEdM
X0RFUFRIX0JVRkZFUl9CSVQpICYmIHNvdXJjZUZyYW1lYnVmZmVyLT5nZXREZXB0aGJ1ZmZlcigp
ICE9IG51bGxwdHIgJiYKKyAgICAgICAgbVN0YXRlLmdldERlcHRoQXR0YWNobWVudCgpICE9IG51
bGxwdHIpCiAgICAgewogICAgICAgICBibGl0RGVwdGggPSB0cnVlOwogICAgIH0KQEAgLTI3Niw5
ICsyODYsMTAgQEAKIAogICAgIGlmIChibGl0UmVuZGVyVGFyZ2V0IHx8IGJsaXREZXB0aCB8fCBi
bGl0U3RlbmNpbCkKICAgICB7Ci0gICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgKnNjaXNzb3Ig
PSBzdGF0ZS5pc1NjaXNzb3JUZXN0RW5hYmxlZCgpID8gJnN0YXRlLmdldFNjaXNzb3IoKSA6IE5V
TEw7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGJsaXQoc291cmNlQXJlYSwgZGVzdEFyZWEs
IHNjaXNzb3IsIGJsaXRSZW5kZXJUYXJnZXQsIGJsaXREZXB0aCwgYmxpdFN0ZW5jaWwsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLCBzb3VyY2VGcmFtZWJ1ZmZlcik7Cisg
ICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgKnNjaXNzb3IgPQorICAgICAgICAgICAgZ2xTdGF0
ZS5pc1NjaXNzb3JUZXN0RW5hYmxlZCgpID8gJmdsU3RhdGUuZ2V0U2Npc3NvcigpIDogbnVsbHB0
cjsKKyAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gYmxpdEltcGwoc291cmNlQXJlYSwgZGVzdEFy
ZWEsIHNjaXNzb3IsIGJsaXRSZW5kZXJUYXJnZXQsIGJsaXREZXB0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYmxpdFN0ZW5jaWwsIGZpbHRlciwgc291cmNlRnJhbWVidWZm
ZXIpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gZXJyb3I7CkBAIC0yOTIsMzQgKzMwMywyMCBAQAogewogICAgIC8vIGlmIHdlIGhh
dmUgYm90aCBhIGRlcHRoIGFuZCBzdGVuY2lsIGJ1ZmZlciwgdGhleSBtdXN0IHJlZmVyIHRvIHRo
ZSBzYW1lIG9iamVjdAogICAgIC8vIHNpbmNlIHdlIG9ubHkgc3VwcG9ydCBwYWNrZWRfZGVwdGhf
c3RlbmNpbCBhbmQgbm90IHNlcGFyYXRlIGRlcHRoIGFuZCBzdGVuY2lsCi0gICAgaWYgKG1EYXRh
LmdldERlcHRoQXR0YWNobWVudCgpICE9IG51bGxwdHIgJiYgbURhdGEuZ2V0U3RlbmNpbEF0dGFj
aG1lbnQoKSAhPSBudWxscHRyICYmCi0gICAgICAgIG1EYXRhLmdldERlcHRoU3RlbmNpbEF0dGFj
aG1lbnQoKSA9PSBudWxscHRyKQorICAgIGlmIChtU3RhdGUuZ2V0RGVwdGhBdHRhY2htZW50KCkg
IT0gbnVsbHB0ciAmJiBtU3RhdGUuZ2V0U3RlbmNpbEF0dGFjaG1lbnQoKSAhPSBudWxscHRyICYm
CisgICAgICAgIG1TdGF0ZS5nZXREZXB0aFN0ZW5jaWxBdHRhY2htZW50KCkgPT0gbnVsbHB0cikK
ICAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICAvLyBEM0QxMSBkb2Vz
IG5vdCBhbGxvdyBmb3Igb3ZlcmxhcHBpbmcgUmVuZGVyVGFyZ2V0Vmlld3MsIHNvIGVuc3VyZSB1
bmlxdWVuZXNzCi0gICAgY29uc3QgYXV0byAmY29sb3JBdHRhY2htZW50cyA9IG1EYXRhLmdldENv
bG9yQXR0YWNobWVudHMoKTsKLSAgICBmb3IgKHNpemVfdCBjb2xvckF0dGFjaG1lbnQgPSAwOyBj
b2xvckF0dGFjaG1lbnQgPCBjb2xvckF0dGFjaG1lbnRzLnNpemUoKTsgY29sb3JBdHRhY2htZW50
KyspCisgICAgLy8gRDNEMTEgZG9lcyBub3QgYWxsb3cgZm9yIG92ZXJsYXBwaW5nIFJlbmRlclRh
cmdldFZpZXdzCisgICAgaWYgKCFtU3RhdGUuY29sb3JBdHRhY2htZW50c0FyZVVuaXF1ZUltYWdl
cygpKQogICAgIHsKLSAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAmYXR0
YWNobWVudCA9IGNvbG9yQXR0YWNobWVudHNbY29sb3JBdHRhY2htZW50XTsKLSAgICAgICAgaWYg
KGF0dGFjaG1lbnQuaXNBdHRhY2hlZCgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKHNp
emVfdCBwcmV2Q29sb3JBdHRhY2htZW50ID0gMDsgcHJldkNvbG9yQXR0YWNobWVudCA8IGNvbG9y
QXR0YWNobWVudDsgcHJldkNvbG9yQXR0YWNobWVudCsrKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgJnByZXZBdHRhY2htZW50
ID0gY29sb3JBdHRhY2htZW50c1twcmV2Q29sb3JBdHRhY2htZW50XTsKLSAgICAgICAgICAgICAg
ICBpZiAocHJldkF0dGFjaG1lbnQuaXNBdHRhY2hlZCgpICYmCi0gICAgICAgICAgICAgICAgICAg
IChhdHRhY2htZW50LmlkKCkgPT0gcHJldkF0dGFjaG1lbnQuaWQoKSAmJgotICAgICAgICAgICAg
ICAgICAgICAgYXR0YWNobWVudC50eXBlKCkgPT0gcHJldkF0dGFjaG1lbnQudHlwZSgpKSkKLSAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAogICAgIC8vIEQzRCByZXF1aXJlcyBhbGwgcmVuZGVyIHRhcmdldHMgdG8g
aGF2ZSB0aGUgc2FtZSBkaW1lbnNpb25zLgotICAgIGlmICghbURhdGEuYXR0YWNobWVudHNIYXZl
U2FtZURpbWVuc2lvbnMoKSkKKyAgICBpZiAoIW1TdGF0ZS5hdHRhY2htZW50c0hhdmVTYW1lRGlt
ZW5zaW9ucygpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTM1NCw4
ICszNTEsOCBAQAogICAgIC8vIERvZXMgbm90IGFjdHVhbGx5IGZyZWUgbWVtb3J5CiAgICAgZ2w6
OkF0dGFjaG1lbnRMaXN0IGNvbG9yQXR0YWNobWVudHNGb3JSZW5kZXI7CiAKLSAgICBjb25zdCBh
dXRvICZjb2xvckF0dGFjaG1lbnRzID0gbURhdGEuZ2V0Q29sb3JBdHRhY2htZW50cygpOwotICAg
IGNvbnN0IGF1dG8gJmRyYXdCdWZmZXJTdGF0ZXMgPSBtRGF0YS5nZXREcmF3QnVmZmVyU3RhdGVz
KCk7CisgICAgY29uc3QgYXV0byAmY29sb3JBdHRhY2htZW50cyA9IG1TdGF0ZS5nZXRDb2xvckF0
dGFjaG1lbnRzKCk7CisgICAgY29uc3QgYXV0byAmZHJhd0J1ZmZlclN0YXRlcyA9IG1TdGF0ZS5n
ZXREcmF3QnVmZmVyU3RhdGVzKCk7CiAgICAgY29uc3QgYXV0byAmd29ya2Fyb3VuZHMgICAgICA9
IG1SZW5kZXJlci0+Z2V0V29ya2Fyb3VuZHMoKTsKIAogICAgIGZvciAoc2l6ZV90IGF0dGFjaG1l
bnRJbmRleCA9IDA7IGF0dGFjaG1lbnRJbmRleCA8IGNvbG9yQXR0YWNobWVudHMuc2l6ZSgpOyAr
K2F0dGFjaG1lbnRJbmRleCkKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvRnJhbWVidWZmZXJEM0QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0ZyYW1lYnVmZmVyRDNE
LmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvRnJhbWVidWZmZXJEM0QuaAkod29ya2luZyBjb3B5KQpAQCAtMTIs
NiArMTIsNyBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KICNpbmNsdWRlIDxjc3RkaW50PgogCisjaW5j
bHVkZSAiY29tbW9uL0NvbG9yLmgiCiAjaW5jbHVkZSAiY29tbW9uL09wdGlvbmFsLmgiCiAjaW5j
bHVkZSAibGliQU5HTEUvYW5nbGV0eXBlcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L0ZyYW1lYnVmZmVySW1wbC5oIgpAQCAtNTcsMjMgKzU4LDIzIEBACiBjbGFzcyBGcmFtZWJ1ZmZl
ckQzRCA6IHB1YmxpYyBGcmFtZWJ1ZmZlckltcGwKIHsKICAgcHVibGljOgotICAgIEZyYW1lYnVm
ZmVyRDNEKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGF0YSAmZGF0YSwgUmVuZGVyZXJEM0QgKnJl
bmRlcmVyKTsKKyAgICBGcmFtZWJ1ZmZlckQzRChjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAm
ZGF0YSwgUmVuZGVyZXJEM0QgKnJlbmRlcmVyKTsKICAgICB2aXJ0dWFsIH5GcmFtZWJ1ZmZlckQz
RCgpOwogCi0gICAgZ2w6OkVycm9yIGNsZWFyKGNvbnN0IGdsOjpEYXRhICZkYXRhLCBHTGJpdGZp
ZWxkIG1hc2spIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBjbGVhckJ1ZmZlcmZ2KGNvbnN0IGds
OjpEYXRhICZkYXRhLAorICAgIGdsOjpFcnJvciBjbGVhcihDb250ZXh0SW1wbCAqaW1wbCwgR0xi
aXRmaWVsZCBtYXNrKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgY2xlYXJCdWZmZXJmdihDb250
ZXh0SW1wbCAqaW1wbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYnVmZmVy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWVzKSBvdmVycmlkZTsKLSAg
ICBnbDo6RXJyb3IgY2xlYXJCdWZmZXJ1aXYoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCisgICAgZ2w6
OkVycm9yIGNsZWFyQnVmZmVydWl2KENvbnRleHRJbXBsICppbXBsLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBkcmF3YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THVpbnQgKnZhbHVlcykgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIGNsZWFyQnVmZmVyaXYoY29u
c3QgZ2w6OkRhdGEgJmRhdGEsCisgICAgZ2w6OkVycm9yIGNsZWFyQnVmZmVyaXYoQ29udGV4dElt
cGwgKmltcGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZXMpIG92ZXJyaWRlOwotICAgIGdsOjpF
cnJvciBjbGVhckJ1ZmZlcmZpKGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAgIGdsOjpFcnJvciBj
bGVhckJ1ZmZlcmZpKENvbnRleHRJbXBsICppbXBsLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHJh
d2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGRlcHRoLApAQCAt
ODEsMTAgKzgyLDE3IEBACiAKICAgICBHTGVudW0gZ2V0SW1wbGVtZW50YXRpb25Db2xvclJlYWRG
b3JtYXQoKSBjb25zdCBvdmVycmlkZTsKICAgICBHTGVudW0gZ2V0SW1wbGVtZW50YXRpb25Db2xv
clJlYWRUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIHJlYWRQaXhlbHMoY29u
c3QgZ2w6OlN0YXRlICZzdGF0ZSwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmYXJlYSwgR0xlbnVtIGZv
cm1hdCwgR0xlbnVtIHR5cGUsIEdMdm9pZCAqcGl4ZWxzKSBjb25zdCBvdmVycmlkZTsKKyAgICBn
bDo6RXJyb3IgcmVhZFBpeGVscyhDb250ZXh0SW1wbCAqaW1wbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZhcmVhLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgR0x2b2lkICpwaXhlbHMpIGNvbnN0IG92ZXJyaWRl
OwogCi0gICAgZ2w6OkVycm9yIGJsaXQoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwgY29uc3QgZ2w6
OlJlY3RhbmdsZSAmc291cmNlQXJlYSwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmZGVzdEFyZWEsCi0g
ICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBtYXNrLCBHTGVudW0gZmlsdGVyLCBjb25zdCBn
bDo6RnJhbWVidWZmZXIgKnNvdXJjZUZyYW1lYnVmZmVyKSBvdmVycmlkZTsKKyAgICBnbDo6RXJy
b3IgYmxpdChDb250ZXh0SW1wbCAqaW1wbCwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0
YW5nbGUgJmRlc3RBcmVhLAorICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQgbWFzaywKKyAg
ICAgICAgICAgICAgICAgICBHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKIAogICAgIGJvb2wgY2hl
Y2tTdGF0dXMoKSBjb25zdCBvdmVycmlkZTsKIApAQCAtOTMsNyArMTAxLDcgQEAKICAgICBjb25z
dCBnbDo6QXR0YWNobWVudExpc3QgJmdldENvbG9yQXR0YWNobWVudHNGb3JSZW5kZXIoKSBjb25z
dDsKIAogICBwcml2YXRlOgotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNsZWFyKGNvbnN0IGdsOjpE
YXRhICZkYXRhLCBjb25zdCBDbGVhclBhcmFtZXRlcnMgJmNsZWFyUGFyYW1zKSA9IDA7CisgICAg
dmlydHVhbCBnbDo6RXJyb3IgY2xlYXJJbXBsKENvbnRleHRJbXBsICppbXBsLCBjb25zdCBDbGVh
clBhcmFtZXRlcnMgJmNsZWFyUGFyYW1zKSA9IDA7CiAKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBy
ZWFkUGl4ZWxzSW1wbChjb25zdCBnbDo6UmVjdGFuZ2xlICZhcmVhLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCkBAIC0xMDIsOSArMTEwLDE0IEBA
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsUGFj
a1N0YXRlICZwYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4
X3QgKnBpeGVscykgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBnbDo6RXJyb3IgYmxpdChjb25z
dCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZkZXN0QXJl
YSwgY29uc3QgZ2w6OlJlY3RhbmdsZSAqc2Npc3NvciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgYmxpdFJlbmRlclRhcmdldCwgYm9vbCBibGl0RGVwdGgsIGJvb2wgYmxpdFN0ZW5j
aWwsIEdMZW51bSBmaWx0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
RnJhbWVidWZmZXIgKnNvdXJjZUZyYW1lYnVmZmVyKSA9IDA7CisgICAgdmlydHVhbCBnbDo6RXJy
b3IgYmxpdEltcGwoY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZkZXN0QXJlYSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICpzY2lzc29yLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYmxpdFJlbmRlclRhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGJsaXREZXB0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGJsaXRTdGVuY2lsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBmaWx0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2VGcmFtZWJ1ZmZlcikgPSAwOwogCiAgICAg
dmlydHVhbCBHTGVudW0gZ2V0UmVuZGVyVGFyZ2V0SW1wbGVtZW50YXRpb25Gb3JtYXQoUmVuZGVy
VGFyZ2V0RDNEICpyZW5kZXJUYXJnZXQpIGNvbnN0ID0gMDsKIApJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9ITFNMQ29tcGlsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvSExTTENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9ITFNMQ29tcGlsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzYsNyArMTM2LDggQEAKIAogICAgIGlmICghbUQzRENvbXBpbGVy
TW9kdWxlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwgIk5vIEQzRCBjb21waWxlciBtb2R1bGUgZm91bmQgLSBhYm9ydGluZyFcbiIpOworICAg
ICAgICBFUlIoIkQzRCBjb21waWxlciBtb2R1bGUgbm90IGZvdW5kLiIpOworICAgICAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJEM0QgY29tcGlsZXIgbW9kdWxlIG5vdCBm
b3VuZC4iKTsKICAgICB9CiAKICAgICBtRDNEQ29tcGlsZUZ1bmMgPSByZWludGVycHJldF9jYXN0
PHBEM0RDb21waWxlPihHZXRQcm9jQWRkcmVzcyhtRDNEQ29tcGlsZXJNb2R1bGUsICJEM0RDb21w
aWxlIikpOwpAQCAtMTU1LDcgKzE1Niw3IEBACiAKICAgICBpZiAobUQzRENvbXBpbGVGdW5jID09
IG51bGxwdHIpCiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OLCAiRXJyb3IgZmluZGluZyBEM0RDb21waWxlIGVudHJ5IHBvaW50Iik7CisgICAgICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkVycm9yIGZpbmRpbmcgRDNEQ29t
cGlsZSBlbnRyeSBwb2ludC4iKTsKICAgICB9CiAKICAgICBtSW5pdGlhbGl6ZWQgPSB0cnVlOwpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9J
bWFnZUQzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvSW1hZ2VEM0QuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9JbWFnZUQzRC5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSwxMSBAQAogCiAgICAgdmlydHVhbCBib29sIHJlZGVm
aW5lKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgY29uc3QgZ2w6OkV4dGVu
dHMgJnNpemUsIGJvb2wgZm9yY2VSZWxlYXNlKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGdsOjpFcnJv
ciBsb2FkRGF0YShjb25zdCBnbDo6Qm94ICZhcmVhLCBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0
ZSAmdW5wYWNrLCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqaW5wdXQpID0gMDsKKyAgICB2aXJ0
dWFsIGdsOjpFcnJvciBsb2FkRGF0YShjb25zdCBnbDo6Qm94ICZhcmVhLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBhcHBseVNraXBJbWFnZXMpID0gMDsKICAgICB2aXJ0dWFsIGdsOjpF
cnJvciBsb2FkQ29tcHJlc3NlZERhdGEoY29uc3QgZ2w6OkJveCAmYXJlYSwgY29uc3Qgdm9pZCAq
aW5wdXQpID0gMDsKIAogICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldE1hbmFnZWRTdXJmYWNlMkQo
VGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsIGludCBsZXZlbCkgeyByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsgfTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvTmF0aXZlV2luZG93RDNELmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL05hdGl2ZVdpbmRvd0Qz
RC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9OYXRpdmVXaW5kb3dEM0QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMjMgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBOYXRpdmVXaW5kb3dEM0QuY3BwOiBEZWZp
bmVzIE5hdGl2ZVdpbmRvd0QzRCwgYSBjbGFzcyBmb3IgbWFuYWdpbmcgYW5kIHBlcmZvcm1pbmcg
b3BlcmF0aW9ucyBvbgorLy8gYW4gRUdMTmF0aXZlV2luZG93VHlwZSBmb3IgdGhlIEQzRCByZW5k
ZXJlcnMuCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvTmF0aXZlV2luZG93RDNE
LmgiCisKK25hbWVzcGFjZSByeAoreworCitOYXRpdmVXaW5kb3dEM0Q6Ok5hdGl2ZVdpbmRvd0Qz
RChFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdykgOiBtV2luZG93KHdpbmRvdykKK3sKK30KKwor
TmF0aXZlV2luZG93RDNEOjp+TmF0aXZlV2luZG93RDNEKCkKK3sKK30KKworfSAgLy8gbmFtZXNw
YWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL05hdGl2ZVdpbmRvd0QzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvTmF0aXZlV2luZG93RDNELmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9OYXRpdmVXaW5kb3dEM0QuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM4IEBACisv
LworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKworLy8gTmF0aXZlV2luZG93RDNELmg6IERlZmluZXMgTmF0aXZlV2luZG93
RDNELCBhIGNsYXNzIGZvciBtYW5hZ2luZyBhbmQgcGVyZm9ybWluZyBvcGVyYXRpb25zIG9uIGFu
CisvLyBFR0xOYXRpdmVXaW5kb3dUeXBlIGZvciB0aGUgRDNEIHJlbmRlcmVycy4KKworI2lmbmRl
ZiBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfTkFUSVZFV0lORE9XRDNEX0hfCisjZGVmaW5lIExJQkFO
R0xFX1JFTkRFUkVSX0QzRF9OQVRJVkVXSU5ET1dEM0RfSF8KKworI2luY2x1ZGUgImNvbW1vbi9k
ZWJ1Zy5oIgorI2luY2x1ZGUgImNvbW1vbi9wbGF0Zm9ybS5oIgorCisjaW5jbHVkZSA8RUdML2Vn
bHBsYXRmb3JtLmg+CisjaW5jbHVkZSAibGliQU5HTEUvQ29uZmlnLmgiCisKK25hbWVzcGFjZSBy
eAoreworY2xhc3MgTmF0aXZlV2luZG93RDNEIDogYW5nbGU6Ok5vbkNvcHlhYmxlCit7CisgIHB1
YmxpYzoKKyAgICBOYXRpdmVXaW5kb3dEM0QoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3cpOwor
ICAgIHZpcnR1YWwgfk5hdGl2ZVdpbmRvd0QzRCgpOworCisgICAgdmlydHVhbCBib29sIGluaXRp
YWxpemUoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGdldENsaWVudFJlY3QoTFBSRUNUIHJlY3Qp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNJY29uaWMoKSBjb25zdCA9IDA7CisKKyAg
ICBpbmxpbmUgRUdMTmF0aXZlV2luZG93VHlwZSBnZXROYXRpdmVXaW5kb3coKSBjb25zdCB7IHJl
dHVybiBtV2luZG93OyB9CisKKyAgcHJpdmF0ZToKKyAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIG1X
aW5kb3c7Cit9OworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVO
REVSRVJfRDNEX05BVElWRVdJTkRPV0QzRF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9Qcm9ncmFtRDNELmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1Byb2dy
YW1EM0QuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1Byb2dyYW1EM0QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMyw2ICsxMyw3IEBACiAjaW5jbHVkZSAibGliQU5HTEUvRnJhbWVidWZmZXIuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9Qcm9ncmFtLmgiCisjaW5jbHVkZSAibGliQU5HTEUvVW5pZm9ybS5oIgogI2luY2x1ZGUgImxp
YkFOR0xFL1ZlcnRleEFycmF5LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvZmVhdHVyZXMuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvRHluYW1pY0hMU0wuaCIKQEAgLTM3NiwxNiAr
Mzc3LDE0IEBACiAKIC8vIFByb2dyYW1EM0RNZXRhZGF0YSBJbXBsZW1lbnRhdGlvbgogCi1Qcm9n
cmFtRDNETWV0YWRhdGE6OlByb2dyYW1EM0RNZXRhZGF0YShpbnQgcmVuZGVyZXJNYWpvclNoYWRl
ck1vZGVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJnNoYWRlck1vZGVsU3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCB1c2VzSW5zdGFuY2VkUG9pbnRTcHJpdGVFbXVsYXRpb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVzZXNWaWV3U2NhbGUsCitQ
cm9ncmFtRDNETWV0YWRhdGE6OlByb2dyYW1EM0RNZXRhZGF0YShSZW5kZXJlckQzRCAqcmVuZGVy
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTaGFkZXJE
M0QgKnZlcnRleFNoYWRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFNoYWRlckQzRCAqZnJhZ21lbnRTaGFkZXIpCi0gICAgOiBtUmVuZGVyZXJNYWpvclNo
YWRlck1vZGVsKHJlbmRlcmVyTWFqb3JTaGFkZXJNb2RlbCksCi0gICAgICBtU2hhZGVyTW9kZWxT
dWZmaXgoc2hhZGVyTW9kZWxTdWZmaXgpLAotICAgICAgbVVzZXNJbnN0YW5jZWRQb2ludFNwcml0
ZUVtdWxhdGlvbih1c2VzSW5zdGFuY2VkUG9pbnRTcHJpdGVFbXVsYXRpb24pLAotICAgICAgbVVz
ZXNWaWV3U2NhbGUodXNlc1ZpZXdTY2FsZSksCisgICAgOiBtUmVuZGVyZXJNYWpvclNoYWRlck1v
ZGVsKHJlbmRlcmVyLT5nZXRNYWpvclNoYWRlck1vZGVsKCkpLAorICAgICAgbVNoYWRlck1vZGVs
U3VmZml4KHJlbmRlcmVyLT5nZXRTaGFkZXJNb2RlbFN1ZmZpeCgpKSwKKyAgICAgIG1Vc2VzSW5z
dGFuY2VkUG9pbnRTcHJpdGVFbXVsYXRpb24oCisgICAgICAgICAgcmVuZGVyZXItPmdldFdvcmth
cm91bmRzKCkudXNlSW5zdGFuY2VkUG9pbnRTcHJpdGVFbXVsYXRpb24pLAorICAgICAgbVVzZXNW
aWV3U2NhbGUocmVuZGVyZXItPnByZXNlbnRQYXRoRmFzdEVuYWJsZWQoKSksCiAgICAgICBtVmVy
dGV4U2hhZGVyKHZlcnRleFNoYWRlciksCiAgICAgICBtRnJhZ21lbnRTaGFkZXIoZnJhZ21lbnRT
aGFkZXIpCiB7CkBAIC0zOTYsMTIgKzM5NSwxMiBAQAogICAgIHJldHVybiBtUmVuZGVyZXJNYWpv
clNoYWRlck1vZGVsOwogfQogCi1ib29sIFByb2dyYW1EM0RNZXRhZGF0YTo6dXNlc0Jyb2FkY2Fz
dChjb25zdCBnbDo6RGF0YSAmZGF0YSkgY29uc3QKK2Jvb2wgUHJvZ3JhbUQzRE1ldGFkYXRhOjp1
c2VzQnJvYWRjYXN0KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIChtRnJhZ21lbnRTaGFkZXItPnVzZXNGcmFnQ29sb3IoKSAmJiBkYXRhLmNsaWVudFZl
cnNpb24gPCAzKTsKKyAgICByZXR1cm4gKG1GcmFnbWVudFNoYWRlci0+dXNlc0ZyYWdDb2xvcigp
ICYmIGRhdGEuZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKTsKIH0KIAotYm9vbCBQcm9ncmFt
RDNETWV0YWRhdGE6OnVzZXNGcmFnRGVwdGgoY29uc3QgZ2w6OlByb2dyYW06OkRhdGEgJnByb2dy
YW1EYXRhKSBjb25zdAorYm9vbCBQcm9ncmFtRDNETWV0YWRhdGE6OnVzZXNGcmFnRGVwdGgoKSBj
b25zdAogewogICAgIHJldHVybiBtRnJhZ21lbnRTaGFkZXItPnVzZXNGcmFnRGVwdGgoKTsKIH0K
QEAgLTQyMyw3ICs0MjIsOCBAQAogCiBib29sIFByb2dyYW1EM0RNZXRhZGF0YTo6dXNlc0luc2Vy
dGVkUG9pbnRDb29yZFZhbHVlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIXVzZXNQb2ludFNpemUo
KSAmJiB1c2VzUG9pbnRDb29yZCgpICYmIG1SZW5kZXJlck1ham9yU2hhZGVyTW9kZWwgPj0gNDsK
KyAgICByZXR1cm4gKCF1c2VzUG9pbnRTaXplKCkgfHwgIW1Vc2VzSW5zdGFuY2VkUG9pbnRTcHJp
dGVFbXVsYXRpb24pICYmIHVzZXNQb2ludENvb3JkKCkgJiYKKyAgICAgICAgICAgbVJlbmRlcmVy
TWFqb3JTaGFkZXJNb2RlbCA+PSA0OwogfQogCiBib29sIFByb2dyYW1EM0RNZXRhZGF0YTo6dXNl
c1ZpZXdTY2FsZSgpIGNvbnN0CkBAIC00MzMsMTMgKzQzMywxMiBAQAogCiBib29sIFByb2dyYW1E
M0RNZXRhZGF0YTo6YWRkc1BvaW50Q29vcmRUb1ZlcnRleFNoYWRlcigpIGNvbnN0CiB7Ci0gICAg
Ly8gSW5zdGFuY2VkIFBvaW50U3ByaXRlIGVtdWxhdGlvbiByZXF1aXJlcyB0aGF0IGdsX1BvaW50
Q29vcmQgaXMgcHJlc2VudCBpbiB0aGUgdmVydGV4IHNoYWRlcgorICAgIC8vIFBvaW50U3ByaXRl
IGVtdWxhdGlvbiByZXF1aXJlc3MgdGhhdCBnbF9Qb2ludENvb3JkIGlzIHByZXNlbnQgaW4gdGhl
IHZlcnRleCBzaGFkZXIKICAgICAvLyBWU19PVVRQVVQgc3RydWN0dXJlIHRvIGVuc3VyZSBjb21w
YXRpYmlsaXR5IHdpdGggdGhlIGdlbmVyYXRlZCBQU19JTlBVVCBvZiB0aGUgcGl4ZWwgc2hhZGVy
LgotICAgIC8vIEdlb21ldHJ5U2hhZGVyIFBvaW50U3ByaXRlIGVtdWxhdGlvbiBkb2VzIG5vdCBy
ZXF1aXJlIHRoaXMgYWRkaXRpb25hbCBlbnRyeSBiZWNhdXNlIHRoZQotICAgIC8vIEdTX09VVFBV
VCBvZiB0aGUgR2VvbWV0cnkgc2hhZGVyIGNvbnRhaW5zIHRoZSBwb2ludENvb3JkIHZhbHVlIGFu
ZCBhbHJlYWR5IG1hdGNoZXMgdGhlCi0gICAgLy8gUFNfSU5QVVQgb2YgdGhlIGdlbmVyYXRlZCBw
aXhlbCBzaGFkZXIuIFRoZSBHZW9tZXRyeSBTaGFkZXIgcG9pbnQgc3ByaXRlIGltcGxlbWVudGF0
aW9uIG5lZWRzCi0gICAgLy8gZ2xfUG9pbnRTaXplIHRvIGJlIGluIFZTX09VVFBVVCBhbmQgR1Nf
SU5QVVQuIEluc3RhbmNlZCBwb2ludCBzcHJpdGVzIGRvZXNuJ3QgbmVlZAotICAgIC8vIGdsX1Bv
aW50U2l6ZSBpbiBWU19PVVRQVVQuCisgICAgLy8gRXZlbiB3aXRoIGEgZ2VvbWV0cnkgc2hhZGVy
LCB0aGUgYXBwIGNhbiByZW5kZXIgdHJpYW5nbGVzIG9yIGxpbmVzIGFuZCByZWZlcmVuY2UKKyAg
ICAvLyBnbF9Qb2ludENvb3JkIGluIHRoZSBmcmFnbWVudCBzaGFkZXIsIHJlcXVpcmluZyB1cyB0
byBwcm92aWRlIGEgZHVtbXkgdmFsdWUuIEZvcgorICAgIC8vIHNpbXBsaWNpdHksIHdlIGFsd2F5
cyBhZGQgdGhpcyB0byB0aGUgdmVydGV4IHNoYWRlciB3aGVuIHRoZSBmcmFnbWVudCBzaGFkZXIK
KyAgICAvLyByZWZlcmVuY2VzIGdsX1BvaW50Q29vcmQsIGV2ZW4gaWYgd2UgY291bGQgc2tpcCBp
dCBpbiB0aGUgZ2VvbWV0cnkgc2hhZGVyLgogICAgIHJldHVybiAobVVzZXNJbnN0YW5jZWRQb2lu
dFNwcml0ZUVtdWxhdGlvbiAmJiB1c2VzUG9pbnRDb29yZCgpKSB8fAogICAgICAgICAgICB1c2Vz
SW5zZXJ0ZWRQb2ludENvb3JkVmFsdWUoKTsKIH0KQEAgLTU2MCw4ICs1NTksOCBAQAogCiB1bnNp
Z25lZCBpbnQgUHJvZ3JhbUQzRDo6bUN1cnJlbnRTZXJpYWwgPSAxOwogCi1Qcm9ncmFtRDNEOjpQ
cm9ncmFtRDNEKGNvbnN0IGdsOjpQcm9ncmFtOjpEYXRhICZkYXRhLCBSZW5kZXJlckQzRCAqcmVu
ZGVyZXIpCi0gICAgOiBQcm9ncmFtSW1wbChkYXRhKSwKK1Byb2dyYW1EM0Q6OlByb2dyYW1EM0Qo
Y29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmc3RhdGUsIFJlbmRlcmVyRDNEICpyZW5kZXJlcikKKyAg
ICA6IFByb2dyYW1JbXBsKHN0YXRlKSwKICAgICAgIG1SZW5kZXJlcihyZW5kZXJlciksCiAgICAg
ICBtRHluYW1pY0hMU0woTlVMTCksCiAgICAgICBtR2VvbWV0cnlFeGVjdXRhYmxlcyhnbDo6UFJJ
TUlUSVZFX1RZUEVfTUFYLCBudWxscHRyKSwKQEAgLTc4NCw3ICs3ODMsNyBAQAogICAgICAgICBy
ZXR1cm4gTGlua1Jlc3VsdChmYWxzZSwgZ2w6OkVycm9yKEdMX05PX0VSUk9SKSk7CiAgICAgfQog
Ci0gICAgY29uc3QgYXV0byAmbGlua2VkVW5pZm9ybXMgPSBtRGF0YS5nZXRVbmlmb3JtcygpOwor
ICAgIGNvbnN0IGF1dG8gJmxpbmtlZFVuaWZvcm1zID0gbVN0YXRlLmdldFVuaWZvcm1zKCk7CiAg
ICAgQVNTRVJUKG1EM0RVbmlmb3Jtcy5lbXB0eSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGludCB1
bmlmb3JtSW5kZXggPSAwOyB1bmlmb3JtSW5kZXggPCB1bmlmb3JtQ291bnQ7IHVuaWZvcm1JbmRl
eCsrKQogICAgIHsKQEAgLTg3Myw3ICs4NzIsNyBAQAogCiAgICAgICAgIGdsOjpFcnJvciBlcnJv
ciA9IG1SZW5kZXJlci0+bG9hZEV4ZWN1dGFibGUoCiAgICAgICAgICAgICB2ZXJ0ZXhTaGFkZXJG
dW5jdGlvbiwgdmVydGV4U2hhZGVyU2l6ZSwgU0hBREVSX1ZFUlRFWCwgbVN0cmVhbU91dFZhcnlp
bmdzLAotICAgICAgICAgICAgKG1EYXRhLmdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9kZSgp
ID09IEdMX1NFUEFSQVRFX0FUVFJJQlMpLCAmc2hhZGVyRXhlY3V0YWJsZSk7CisgICAgICAgICAg
ICAobVN0YXRlLmdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9kZSgpID09IEdMX1NFUEFSQVRF
X0FUVFJJQlMpLCAmc2hhZGVyRXhlY3V0YWJsZSk7CiAgICAgICAgIGlmIChlcnJvci5pc0Vycm9y
KCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBMaW5rUmVzdWx0KGZhbHNlLCBlcnJv
cik7CkBAIC05MTIsNyArOTExLDcgQEAKIAogICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBtUmVu
ZGVyZXItPmxvYWRFeGVjdXRhYmxlKAogICAgICAgICAgICAgcGl4ZWxTaGFkZXJGdW5jdGlvbiwg
cGl4ZWxTaGFkZXJTaXplLCBTSEFERVJfUElYRUwsIG1TdHJlYW1PdXRWYXJ5aW5ncywKLSAgICAg
ICAgICAgIChtRGF0YS5nZXRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUoKSA9PSBHTF9TRVBB
UkFURV9BVFRSSUJTKSwgJnNoYWRlckV4ZWN1dGFibGUpOworICAgICAgICAgICAgKG1TdGF0ZS5n
ZXRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUoKSA9PSBHTF9TRVBBUkFURV9BVFRSSUJTKSwg
JnNoYWRlckV4ZWN1dGFibGUpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAg
ICB7CiAgICAgICAgICAgICByZXR1cm4gTGlua1Jlc3VsdChmYWxzZSwgZXJyb3IpOwpAQCAtOTQx
LDcgKzk0MCw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpn
ZW9tZXRyeVNoYWRlckZ1bmN0aW9uID0gYmluYXJ5ICsgc3RyZWFtLT5vZmZzZXQoKTsKLSAgICAg
ICAgYm9vbCBzcGxpdEF0dHJpYnMgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChtRGF0YS5n
ZXRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUoKSA9PSBHTF9TRVBBUkFURV9BVFRSSUJTKTsK
KyAgICAgICAgYm9vbCBzcGxpdEF0dHJpYnMgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICht
U3RhdGUuZ2V0VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlKCkgPT0gR0xfU0VQQVJBVEVfQVRU
UklCUyk7CiAKICAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gbVJlbmRlcmVyLT5sb2FkRXhlY3V0
YWJsZSgKICAgICAgICAgICAgIGdlb21ldHJ5U2hhZGVyRnVuY3Rpb24sIGdlb21ldHJ5U2hhZGVy
U2l6ZSwgU0hBREVSX0dFT01FVFJZLCBtU3RyZWFtT3V0VmFyeWluZ3MsCkBAIC0xMDAzLDggKzEw
MDIsOCBAQAogICAgIGZvciAoY29uc3QgRDNEVW5pZm9ybSAqdW5pZm9ybSA6IG1EM0RVbmlmb3Jt
cykKICAgICB7CiAgICAgICAgIC8vIFR5cGUsIG5hbWUgYW5kIGFycmF5U2l6ZSBhcmUgcmVkdW5k
YW50LCBzbyBhcmVuJ3Qgc3RvcmVkIGluIHRoZSBiaW5hcnkuCi0gICAgICAgIHN0cmVhbS0+d3Jp
dGVJbnQodW5pZm9ybS0+cHNSZWdpc3RlckluZGV4KTsKLSAgICAgICAgc3RyZWFtLT53cml0ZUlu
dCh1bmlmb3JtLT52c1JlZ2lzdGVySW5kZXgpOworICAgICAgICBzdHJlYW0tPndyaXRlSW50T3JO
ZWdPbmUodW5pZm9ybS0+cHNSZWdpc3RlckluZGV4KTsKKyAgICAgICAgc3RyZWFtLT53cml0ZUlu
dE9yTmVnT25lKHVuaWZvcm0tPnZzUmVnaXN0ZXJJbmRleCk7CiAgICAgICAgIHN0cmVhbS0+d3Jp
dGVJbnQodW5pZm9ybS0+cmVnaXN0ZXJDb3VudCk7CiAgICAgICAgIHN0cmVhbS0+d3JpdGVJbnQo
dW5pZm9ybS0+cmVnaXN0ZXJFbGVtZW50KTsKICAgICB9CkBAIC0xMDEyLDggKzEwMTEsOCBAQAog
ICAgIHN0cmVhbS0+d3JpdGVJbnQobUQzRFVuaWZvcm1CbG9ja3Muc2l6ZSgpKTsKICAgICBmb3Ig
KGNvbnN0IEQzRFVuaWZvcm1CbG9jayAmdW5pZm9ybUJsb2NrIDogbUQzRFVuaWZvcm1CbG9ja3Mp
CiAgICAgewotICAgICAgICBzdHJlYW0tPndyaXRlSW50KHVuaWZvcm1CbG9jay5wc1JlZ2lzdGVy
SW5kZXgpOwotICAgICAgICBzdHJlYW0tPndyaXRlSW50KHVuaWZvcm1CbG9jay52c1JlZ2lzdGVy
SW5kZXgpOworICAgICAgICBzdHJlYW0tPndyaXRlSW50T3JOZWdPbmUodW5pZm9ybUJsb2NrLnBz
UmVnaXN0ZXJJbmRleCk7CisgICAgICAgIHN0cmVhbS0+d3JpdGVJbnRPck5lZ09uZSh1bmlmb3Jt
QmxvY2sudnNSZWdpc3RlckluZGV4KTsKICAgICB9CiAKICAgICBzdHJlYW0tPndyaXRlSW50KG1T
dHJlYW1PdXRWYXJ5aW5ncy5zaXplKCkpOwpAQCAtMTA2MCw3ICsxMDU5LDcgQEAKIAogICAgICAg
ICBmb3IgKHNpemVfdCBpbnB1dEluZGV4ID0gMDsgaW5wdXRJbmRleCA8IGlucHV0TGF5b3V0LnNp
emUoKTsgaW5wdXRJbmRleCsrKQogICAgICAgICB7Ci0gICAgICAgICAgICBzdHJlYW0tPndyaXRl
SW50KGlucHV0TGF5b3V0W2lucHV0SW5kZXhdKTsKKyAgICAgICAgICAgIHN0cmVhbS0+d3JpdGVJ
bnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihpbnB1dExheW91dFtpbnB1dEluZGV4XSkpOwog
ICAgICAgICB9CiAKICAgICAgICAgc2l6ZV90IHZlcnRleFNoYWRlclNpemUgPSB2ZXJ0ZXhFeGVj
dXRhYmxlLT5zaGFkZXJFeGVjdXRhYmxlKCktPmdldExlbmd0aCgpOwpAQCAtMTE2MSw3ICsxMTYw
LDcgQEAKIAogICAgIGdsOjpFcnJvciBlcnJvciA9IG1SZW5kZXJlci0+Y29tcGlsZVRvRXhlY3V0
YWJsZSgKICAgICAgICAgKmN1cnJlbnRJbmZvTG9nLCBmaW5hbFBpeGVsSExTTCwgU0hBREVSX1BJ
WEVMLCBtU3RyZWFtT3V0VmFyeWluZ3MsCi0gICAgICAgIChtRGF0YS5nZXRUcmFuc2Zvcm1GZWVk
YmFja0J1ZmZlck1vZGUoKSA9PSBHTF9TRVBBUkFURV9BVFRSSUJTKSwgbVBpeGVsV29ya2Fyb3Vu
ZHMsCisgICAgICAgIChtU3RhdGUuZ2V0VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlKCkgPT0g
R0xfU0VQQVJBVEVfQVRUUklCUyksIG1QaXhlbFdvcmthcm91bmRzLAogICAgICAgICAmcGl4ZWxF
eGVjdXRhYmxlKTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKQEAgLTEyMDAsNyAr
MTE5OSw3IEBACiAKICAgICAvLyBHZW5lcmF0ZSBuZXcgZHluYW1pYyBsYXlvdXQgd2l0aCBhdHRy
aWJ1dGUgY29udmVyc2lvbnMKICAgICBzdGQ6OnN0cmluZyBmaW5hbFZlcnRleEhMU0wgPSBtRHlu
YW1pY0hMU0wtPmdlbmVyYXRlVmVydGV4U2hhZGVyRm9ySW5wdXRMYXlvdXQoCi0gICAgICAgIG1W
ZXJ0ZXhITFNMLCBpbnB1dExheW91dCwgbURhdGEuZ2V0QXR0cmlidXRlcygpKTsKKyAgICAgICAg
bVZlcnRleEhMU0wsIGlucHV0TGF5b3V0LCBtU3RhdGUuZ2V0QXR0cmlidXRlcygpKTsKIAogICAg
IC8vIEdlbmVyYXRlIG5ldyB2ZXJ0ZXggZXhlY3V0YWJsZQogICAgIFNoYWRlckV4ZWN1dGFibGVE
M0QgKnZlcnRleEV4ZWN1dGFibGUgPSBOVUxMOwpAQCAtMTIxMCw3ICsxMjA5LDcgQEAKIAogICAg
IGdsOjpFcnJvciBlcnJvciA9IG1SZW5kZXJlci0+Y29tcGlsZVRvRXhlY3V0YWJsZSgKICAgICAg
ICAgKmN1cnJlbnRJbmZvTG9nLCBmaW5hbFZlcnRleEhMU0wsIFNIQURFUl9WRVJURVgsIG1TdHJl
YW1PdXRWYXJ5aW5ncywKLSAgICAgICAgKG1EYXRhLmdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVy
TW9kZSgpID09IEdMX1NFUEFSQVRFX0FUVFJJQlMpLCBtVmVydGV4V29ya2Fyb3VuZHMsCisgICAg
ICAgIChtU3RhdGUuZ2V0VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlKCkgPT0gR0xfU0VQQVJB
VEVfQVRUUklCUyksIG1WZXJ0ZXhXb3JrYXJvdW5kcywKICAgICAgICAgJnZlcnRleEV4ZWN1dGFi
bGUpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewpAQCAtMTIzMyw3ICsxMjMyLDcg
QEAKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotZ2w6OkVycm9yIFBy
b2dyYW1EM0Q6OmdldEdlb21ldHJ5RXhlY3V0YWJsZUZvclByaW1pdGl2ZVR5cGUoY29uc3QgZ2w6
OkRhdGEgJmRhdGEsCitnbDo6RXJyb3IgUHJvZ3JhbUQzRDo6Z2V0R2VvbWV0cnlFeGVjdXRhYmxl
Rm9yUHJpbWl0aXZlVHlwZShjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGRyYXdNb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2hhZGVyRXhlY3V0YWJsZUQzRCAqKm91dEV4ZWN1dGFibGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
bDo6SW5mb0xvZyAqaW5mb0xvZykKQEAgLTEyNjEsNyArMTI2MCw3IEBACiAgICAgfQogCiAgICAg
c3RkOjpzdHJpbmcgZ2VvbWV0cnlITFNMID0gbUR5bmFtaWNITFNMLT5nZW5lcmF0ZUdlb21ldHJ5
U2hhZGVySExTTCgKLSAgICAgICAgZ2VvbWV0cnlTaGFkZXJUeXBlLCBkYXRhLCBtRGF0YSwgbVJl
bmRlcmVyLT5wcmVzZW50UGF0aEZhc3RFbmFibGVkKCksCisgICAgICAgIGdlb21ldHJ5U2hhZGVy
VHlwZSwgZGF0YSwgbVN0YXRlLCBtUmVuZGVyZXItPnByZXNlbnRQYXRoRmFzdEVuYWJsZWQoKSwK
ICAgICAgICAgbUdlb21ldHJ5U2hhZGVyUHJlYW1ibGUpOwogCiAgICAgZ2w6OkluZm9Mb2cgdGVt
cEluZm9Mb2c7CkBAIC0xMjY5LDcgKzEyNjgsNyBAQAogCiAgICAgZ2w6OkVycm9yIGVycm9yID0g
bVJlbmRlcmVyLT5jb21waWxlVG9FeGVjdXRhYmxlKAogICAgICAgICAqY3VycmVudEluZm9Mb2cs
IGdlb21ldHJ5SExTTCwgU0hBREVSX0dFT01FVFJZLCBtU3RyZWFtT3V0VmFyeWluZ3MsCi0gICAg
ICAgIChtRGF0YS5nZXRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUoKSA9PSBHTF9TRVBBUkFU
RV9BVFRSSUJTKSwgRDNEQ29tcGlsZXJXb3JrYXJvdW5kcygpLAorICAgICAgICAobVN0YXRlLmdl
dFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9kZSgpID09IEdMX1NFUEFSQVRFX0FUVFJJQlMpLCBE
M0RDb21waWxlcldvcmthcm91bmRzKCksCiAgICAgICAgICZtR2VvbWV0cnlFeGVjdXRhYmxlc1tn
ZW9tZXRyeVNoYWRlclR5cGVdKTsKIAogICAgIGlmICghaW5mb0xvZyAmJiBlcnJvci5pc0Vycm9y
KCkpCkBAIC0xMjg2LDEwICsxMjg1LDEwIEBACiAgICAgcmV0dXJuIGVycm9yOwogfQogCi1MaW5r
UmVzdWx0IFByb2dyYW1EM0Q6OmNvbXBpbGVQcm9ncmFtRXhlY3V0YWJsZXMoY29uc3QgZ2w6OkRh
dGEgJmRhdGEsIGdsOjpJbmZvTG9nICZpbmZvTG9nKQorTGlua1Jlc3VsdCBQcm9ncmFtRDNEOjpj
b21waWxlUHJvZ3JhbUV4ZWN1dGFibGVzKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsIGds
OjpJbmZvTG9nICZpbmZvTG9nKQogewogICAgIGNvbnN0IGdsOjpJbnB1dExheW91dCAmZGVmYXVs
dElucHV0TGF5b3V0ID0KLSAgICAgICAgR2V0RGVmYXVsdElucHV0TGF5b3V0RnJvbVNoYWRlciht
RGF0YS5nZXRBdHRhY2hlZFZlcnRleFNoYWRlcigpKTsKKyAgICAgICAgR2V0RGVmYXVsdElucHV0
TGF5b3V0RnJvbVNoYWRlcihtU3RhdGUuZ2V0QXR0YWNoZWRWZXJ0ZXhTaGFkZXIoKSk7CiAgICAg
U2hhZGVyRXhlY3V0YWJsZUQzRCAqZGVmYXVsdFZlcnRleEV4ZWN1dGFibGUgPSBOVUxMOwogICAg
IGdsOjpFcnJvciBlcnJvciA9CiAgICAgICAgIGdldFZlcnRleEV4ZWN1dGFibGVGb3JJbnB1dExh
eW91dChkZWZhdWx0SW5wdXRMYXlvdXQsICZkZWZhdWx0VmVydGV4RXhlY3V0YWJsZSwgJmluZm9M
b2cpOwpAQCAtMTMxNCw3ICsxMzEzLDcgQEAKICAgICAgICAgZ2V0R2VvbWV0cnlFeGVjdXRhYmxl
Rm9yUHJpbWl0aXZlVHlwZShkYXRhLCBHTF9QT0lOVFMsICZwb2ludEdTLCAmaW5mb0xvZyk7CiAg
ICAgfQogCi0gICAgY29uc3QgU2hhZGVyRDNEICp2ZXJ0ZXhTaGFkZXJEM0QgPSBHZXRJbXBsQXM8
U2hhZGVyRDNEPihtRGF0YS5nZXRBdHRhY2hlZFZlcnRleFNoYWRlcigpKTsKKyAgICBjb25zdCBT
aGFkZXJEM0QgKnZlcnRleFNoYWRlckQzRCA9IEdldEltcGxBczxTaGFkZXJEM0Q+KG1TdGF0ZS5n
ZXRBdHRhY2hlZFZlcnRleFNoYWRlcigpKTsKIAogICAgIGlmICh1c2VzR2VvbWV0cnlTaGFkZXIo
R0xfUE9JTlRTKSAmJiBwb2ludEdTKQogICAgIHsKQEAgLTEzMzQsNyArMTMzMyw3IEBACiAgICAg
aWYgKGRlZmF1bHRQaXhlbEV4ZWN1dGFibGUpCiAgICAgewogICAgICAgICBjb25zdCBTaGFkZXJE
M0QgKmZyYWdtZW50U2hhZGVyRDNEID0KLSAgICAgICAgICAgIEdldEltcGxBczxTaGFkZXJEM0Q+
KG1EYXRhLmdldEF0dGFjaGVkRnJhZ21lbnRTaGFkZXIoKSk7CisgICAgICAgICAgICBHZXRJbXBs
QXM8U2hhZGVyRDNEPihtU3RhdGUuZ2V0QXR0YWNoZWRGcmFnbWVudFNoYWRlcigpKTsKICAgICAg
ICAgZnJhZ21lbnRTaGFkZXJEM0QtPmFwcGVuZERlYnVnSW5mbyhkZWZhdWx0UGl4ZWxFeGVjdXRh
YmxlLT5nZXREZWJ1Z0luZm8oKSk7CiAgICAgfQogCkBAIC0xMzQzLDIzICsxMzQyLDIzIEBACiAg
ICAgcmV0dXJuIExpbmtSZXN1bHQobGlua1N1Y2Nlc3MsIGdsOjpFcnJvcihHTF9OT19FUlJPUikp
OwogfQogCi1MaW5rUmVzdWx0IFByb2dyYW1EM0Q6OmxpbmsoY29uc3QgZ2w6OkRhdGEgJmRhdGEs
IGdsOjpJbmZvTG9nICZpbmZvTG9nKQorTGlua1Jlc3VsdCBQcm9ncmFtRDNEOjpsaW5rKGNvbnN0
IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsIGdsOjpJbmZvTG9nICZpbmZvTG9nKQogewogICAgIHJl
c2V0KCk7CiAKLSAgICBjb25zdCBnbDo6U2hhZGVyICp2ZXJ0ZXhTaGFkZXIgICA9IG1EYXRhLmdl
dEF0dGFjaGVkVmVydGV4U2hhZGVyKCk7Ci0gICAgY29uc3QgZ2w6OlNoYWRlciAqZnJhZ21lbnRT
aGFkZXIgPSBtRGF0YS5nZXRBdHRhY2hlZEZyYWdtZW50U2hhZGVyKCk7CisgICAgY29uc3QgZ2w6
OlNoYWRlciAqdmVydGV4U2hhZGVyICAgPSBtU3RhdGUuZ2V0QXR0YWNoZWRWZXJ0ZXhTaGFkZXIo
KTsKKyAgICBjb25zdCBnbDo6U2hhZGVyICpmcmFnbWVudFNoYWRlciA9IG1TdGF0ZS5nZXRBdHRh
Y2hlZEZyYWdtZW50U2hhZGVyKCk7CiAKICAgICBjb25zdCBTaGFkZXJEM0QgKnZlcnRleFNoYWRl
ckQzRCAgID0gR2V0SW1wbEFzPFNoYWRlckQzRD4odmVydGV4U2hhZGVyKTsKICAgICBjb25zdCBT
aGFkZXJEM0QgKmZyYWdtZW50U2hhZGVyRDNEID0gR2V0SW1wbEFzPFNoYWRlckQzRD4oZnJhZ21l
bnRTaGFkZXIpOwogCi0gICAgbVNhbXBsZXJzVlMucmVzaXplKGRhdGEuY2Fwcy0+bWF4VmVydGV4
VGV4dHVyZUltYWdlVW5pdHMpOwotICAgIG1TYW1wbGVyc1BTLnJlc2l6ZShkYXRhLmNhcHMtPm1h
eFRleHR1cmVJbWFnZVVuaXRzKTsKKyAgICBtU2FtcGxlcnNWUy5yZXNpemUoZGF0YS5nZXRDYXBz
KCkubWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMpOworICAgIG1TYW1wbGVyc1BTLnJlc2l6ZShk
YXRhLmdldENhcHMoKS5tYXhUZXh0dXJlSW1hZ2VVbml0cyk7CiAKICAgICB2ZXJ0ZXhTaGFkZXJE
M0QtPmdlbmVyYXRlV29ya2Fyb3VuZHMoJm1WZXJ0ZXhXb3JrYXJvdW5kcyk7CiAgICAgZnJhZ21l
bnRTaGFkZXJEM0QtPmdlbmVyYXRlV29ya2Fyb3VuZHMoJm1QaXhlbFdvcmthcm91bmRzKTsKIAot
ICAgIGlmIChtUmVuZGVyZXItPmdldFJlbmRlcmVyTGltaXRhdGlvbnMoKS5ub0Zyb250RmFjaW5n
U3VwcG9ydCkKKyAgICBpZiAobVJlbmRlcmVyLT5nZXROYXRpdmVMaW1pdGF0aW9ucygpLm5vRnJv
bnRGYWNpbmdTdXBwb3J0KQogICAgIHsKICAgICAgICAgaWYgKGZyYWdtZW50U2hhZGVyRDNELT51
c2VzRnJvbnRGYWNpbmcoKSkKICAgICAgICAgewpAQCAtMTM2OSwyNSArMTM2OCwyMiBAQAogICAg
IH0KIAogICAgIHN0ZDo6dmVjdG9yPFBhY2tlZFZhcnlpbmc+IHBhY2tlZFZhcnlpbmdzID0KLSAg
ICAgICAgTWVyZ2VWYXJ5aW5ncygqdmVydGV4U2hhZGVyLCAqZnJhZ21lbnRTaGFkZXIsIG1EYXRh
LmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ05hbWVzKCkpOworICAgICAgICBNZXJnZVZhcnlp
bmdzKCp2ZXJ0ZXhTaGFkZXIsICpmcmFnbWVudFNoYWRlciwgbVN0YXRlLmdldFRyYW5zZm9ybUZl
ZWRiYWNrVmFyeWluZ05hbWVzKCkpOwogCiAgICAgLy8gTWFwIHRoZSB2YXJ5aW5ncyB0byB0aGUg
cmVnaXN0ZXIgZmlsZQotICAgIFZhcnlpbmdQYWNraW5nIHZhcnlpbmdQYWNraW5nKGRhdGEuY2Fw
cy0+bWF4VmFyeWluZ1ZlY3RvcnMpOworICAgIFZhcnlpbmdQYWNraW5nIHZhcnlpbmdQYWNraW5n
KGRhdGEuZ2V0Q2FwcygpLm1heFZhcnlpbmdWZWN0b3JzKTsKICAgICBpZiAoIXZhcnlpbmdQYWNr
aW5nLnBhY2tWYXJ5aW5ncyhpbmZvTG9nLCBwYWNrZWRWYXJ5aW5ncywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtRGF0YS5nZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdO
YW1lcygpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU3RhdGUuZ2V0
VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nTmFtZXMoKSkpCiAgICAgewogICAgICAgICByZXR1cm4g
TGlua1Jlc3VsdChmYWxzZSwgZ2w6OkVycm9yKEdMX05PX0VSUk9SKSk7CiAgICAgfQogCi0gICAg
UHJvZ3JhbUQzRE1ldGFkYXRhIG1ldGFkYXRhKG1SZW5kZXJlci0+Z2V0TWFqb3JTaGFkZXJNb2Rl
bCgpLCBtUmVuZGVyZXItPmdldFNoYWRlck1vZGVsU3VmZml4KCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVzZXNJbnN0YW5jZWRQb2ludFNwcml0ZUVtdWxhdGlvbigpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUmVuZGVyZXItPnByZXNlbnRQYXRoRmFzdEVu
YWJsZWQoKSwgdmVydGV4U2hhZGVyRDNELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmcmFnbWVudFNoYWRlckQzRCk7CisgICAgUHJvZ3JhbUQzRE1ldGFkYXRhIG1ldGFkYXRhKG1S
ZW5kZXJlciwgdmVydGV4U2hhZGVyRDNELCBmcmFnbWVudFNoYWRlckQzRCk7CiAKICAgICB2YXJ5
aW5nUGFja2luZy5lbmFibGVCdWlsdGlucyhTSEFERVJfVkVSVEVYLCBtZXRhZGF0YSk7CiAgICAg
dmFyeWluZ1BhY2tpbmcuZW5hYmxlQnVpbHRpbnMoU0hBREVSX1BJWEVMLCBtZXRhZGF0YSk7CiAK
LSAgICBpZiAoc3RhdGljX2Nhc3Q8R0x1aW50Pih2YXJ5aW5nUGFja2luZy5nZXRSZWdpc3RlckNv
dW50KCkpID4gZGF0YS5jYXBzLT5tYXhWYXJ5aW5nVmVjdG9ycykKKyAgICBpZiAoc3RhdGljX2Nh
c3Q8R0x1aW50Pih2YXJ5aW5nUGFja2luZy5nZXRSZWdpc3RlckNvdW50KCkpID4gZGF0YS5nZXRD
YXBzKCkubWF4VmFyeWluZ1ZlY3RvcnMpCiAgICAgewogICAgICAgICBpbmZvTG9nIDw8ICJObyB2
YXJ5aW5nIHJlZ2lzdGVycyBsZWZ0IHRvIHN1cHBvcnQgZ2xfRnJhZ0Nvb3JkL2dsX1BvaW50Q29v
cmQiOwogICAgICAgICByZXR1cm4gTGlua1Jlc3VsdChmYWxzZSwgZ2w6OkVycm9yKEdMX05PX0VS
Uk9SKSk7CkBAIC0xMzk3LDEzICsxMzkzLDEzIEBACiAgICAgLy8gV2UgY2FuIGZhaWwgaGVyZSBi
ZWNhdXNlIHdlIHVzZSBvbmUgc2VtYW50aWMgcGVyIEdMU0wgdmFyeWluZy4gRDNEMTEgY2FuIHBh
Y2sgdmFyeWluZ3MKICAgICAvLyBpbnRlbGxpZ2VudGx5LCBidXQgRDNEOSBhc3N1bWVzIG9uZSBz
ZW1hbnRpYyBwZXIgcmVnaXN0ZXIuCiAgICAgaWYgKG1SZW5kZXJlci0+Z2V0UmVuZGVyZXJDbGFz
cygpID09IFJFTkRFUkVSX0QzRDkgJiYKLSAgICAgICAgdmFyeWluZ1BhY2tpbmcuZ2V0TWF4U2Vt
YW50aWNJbmRleCgpID4gZGF0YS5jYXBzLT5tYXhWYXJ5aW5nVmVjdG9ycykKKyAgICAgICAgdmFy
eWluZ1BhY2tpbmcuZ2V0TWF4U2VtYW50aWNJbmRleCgpID4gZGF0YS5nZXRDYXBzKCkubWF4VmFy
eWluZ1ZlY3RvcnMpCiAgICAgewogICAgICAgICBpbmZvTG9nIDw8ICJDYW5ub3QgcGFjayB0aGVz
ZSB2YXJ5aW5ncyBvbiBEM0Q5LiI7CiAgICAgICAgIHJldHVybiBMaW5rUmVzdWx0KGZhbHNlLCBn
bDo6RXJyb3IoR0xfTk9fRVJST1IpKTsKICAgICB9CiAKLSAgICBpZiAoIW1EeW5hbWljSExTTC0+
Z2VuZXJhdGVTaGFkZXJMaW5rSExTTChkYXRhLCBtRGF0YSwgbWV0YWRhdGEsIHZhcnlpbmdQYWNr
aW5nLCAmbVBpeGVsSExTTCwKKyAgICBpZiAoIW1EeW5hbWljSExTTC0+Z2VuZXJhdGVTaGFkZXJM
aW5rSExTTChkYXRhLCBtU3RhdGUsIG1ldGFkYXRhLCB2YXJ5aW5nUGFja2luZywgJm1QaXhlbEhM
U0wsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1WZXJ0
ZXhITFNMKSkKICAgICB7CiAgICAgICAgIHJldHVybiBMaW5rUmVzdWx0KGZhbHNlLCBnbDo6RXJy
b3IoR0xfTk9fRVJST1IpKTsKQEAgLTE0MTAsOCArMTQwNiw4IEBACiAgICAgfQogCiAgICAgbVVz
ZXNQb2ludFNpemUgPSB2ZXJ0ZXhTaGFkZXJEM0QtPnVzZXNQb2ludFNpemUoKTsKLSAgICBtRHlu
YW1pY0hMU0wtPmdldFBpeGVsU2hhZGVyT3V0cHV0S2V5KGRhdGEsIG1EYXRhLCBtZXRhZGF0YSwg
Jm1QaXhlbFNoYWRlcktleSk7Ci0gICAgbVVzZXNGcmFnRGVwdGggPSBtZXRhZGF0YS51c2VzRnJh
Z0RlcHRoKG1EYXRhKTsKKyAgICBtRHluYW1pY0hMU0wtPmdldFBpeGVsU2hhZGVyT3V0cHV0S2V5
KGRhdGEsIG1TdGF0ZSwgbWV0YWRhdGEsICZtUGl4ZWxTaGFkZXJLZXkpOworICAgIG1Vc2VzRnJh
Z0RlcHRoID0gbWV0YWRhdGEudXNlc0ZyYWdEZXB0aCgpOwogCiAgICAgLy8gQ2FjaGUgaWYgd2Ug
dXNlIGZsYXQgc2hhZGluZwogICAgIG1Vc2VzRmxhdEludGVycG9sYXRpb24gPSBmYWxzZTsKQEAg
LTE0MzcsOCArMTQzMywxMyBAQAogICAgIGdhdGhlclRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3Mo
dmFyeWluZ1BhY2tpbmcpOwogCiAgICAgTGlua1Jlc3VsdCByZXN1bHQgPSBjb21waWxlUHJvZ3Jh
bUV4ZWN1dGFibGVzKGRhdGEsIGluZm9Mb2cpOwotICAgIGlmIChyZXN1bHQuZXJyb3IuaXNFcnJv
cigpIHx8ICFyZXN1bHQubGlua1N1Y2Nlc3MpCisgICAgaWYgKHJlc3VsdC5lcnJvci5pc0Vycm9y
KCkpCiAgICAgeworICAgICAgICBpbmZvTG9nIDw8IHJlc3VsdC5lcnJvci5nZXRNZXNzYWdlKCk7
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIGVsc2UgaWYgKCFyZXN1bHQubGlu
a1N1Y2Nlc3MpCisgICAgewogICAgICAgICBpbmZvTG9nIDw8ICJGYWlsZWQgdG8gY3JlYXRlIEQz
RCBzaGFkZXJzLiI7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMTQ1Niw3ICsx
NDU3LDcgQEAKIAogdm9pZCBQcm9ncmFtRDNEOjppbml0VW5pZm9ybUJsb2NrSW5mbygpCiB7Ci0g
ICAgY29uc3QgZ2w6OlNoYWRlciAqdmVydGV4U2hhZGVyID0gbURhdGEuZ2V0QXR0YWNoZWRWZXJ0
ZXhTaGFkZXIoKTsKKyAgICBjb25zdCBnbDo6U2hhZGVyICp2ZXJ0ZXhTaGFkZXIgPSBtU3RhdGUu
Z2V0QXR0YWNoZWRWZXJ0ZXhTaGFkZXIoKTsKIAogICAgIGZvciAoY29uc3Qgc2g6OkludGVyZmFj
ZUJsb2NrICZ2ZXJ0ZXhCbG9jayA6IHZlcnRleFNoYWRlci0+Z2V0SW50ZXJmYWNlQmxvY2tzKCkp
CiAgICAgewpAQCAtMTQ3MCw3ICsxNDcxLDcgQEAKICAgICAgICAgbUJsb2NrRGF0YVNpemVzW3Zl
cnRleEJsb2NrLm5hbWVdID0gZGF0YVNpemU7CiAgICAgfQogCi0gICAgY29uc3QgZ2w6OlNoYWRl
ciAqZnJhZ21lbnRTaGFkZXIgPSBtRGF0YS5nZXRBdHRhY2hlZEZyYWdtZW50U2hhZGVyKCk7Cisg
ICAgY29uc3QgZ2w6OlNoYWRlciAqZnJhZ21lbnRTaGFkZXIgPSBtU3RhdGUuZ2V0QXR0YWNoZWRG
cmFnbWVudFNoYWRlcigpOwogCiAgICAgZm9yIChjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2sgJmZy
YWdtZW50QmxvY2sgOiBmcmFnbWVudFNoYWRlci0+Z2V0SW50ZXJmYWNlQmxvY2tzKCkpCiAgICAg
ewpAQCAtMTQ5MCwxMCArMTQ5MSwxMCBAQAogICAgIG1EM0RVbmlmb3JtQmxvY2tzLmNsZWFyKCk7
CiAKICAgICAvLyBBc3NpZ24gcmVnaXN0ZXJzIGFuZCB1cGRhdGUgc2l6ZXMuCi0gICAgY29uc3Qg
U2hhZGVyRDNEICp2ZXJ0ZXhTaGFkZXJEM0QgICA9IEdldEltcGxBczxTaGFkZXJEM0Q+KG1EYXRh
LmdldEF0dGFjaGVkVmVydGV4U2hhZGVyKCkpOwotICAgIGNvbnN0IFNoYWRlckQzRCAqZnJhZ21l
bnRTaGFkZXJEM0QgPSBHZXRJbXBsQXM8U2hhZGVyRDNEPihtRGF0YS5nZXRBdHRhY2hlZEZyYWdt
ZW50U2hhZGVyKCkpOworICAgIGNvbnN0IFNoYWRlckQzRCAqdmVydGV4U2hhZGVyRDNEICAgPSBH
ZXRJbXBsQXM8U2hhZGVyRDNEPihtU3RhdGUuZ2V0QXR0YWNoZWRWZXJ0ZXhTaGFkZXIoKSk7Cisg
ICAgY29uc3QgU2hhZGVyRDNEICpmcmFnbWVudFNoYWRlckQzRCA9IEdldEltcGxBczxTaGFkZXJE
M0Q+KG1TdGF0ZS5nZXRBdHRhY2hlZEZyYWdtZW50U2hhZGVyKCkpOwogCi0gICAgZm9yIChjb25z
dCBnbDo6VW5pZm9ybUJsb2NrICZ1bmlmb3JtQmxvY2sgOiBtRGF0YS5nZXRVbmlmb3JtQmxvY2tz
KCkpCisgICAgZm9yIChjb25zdCBnbDo6VW5pZm9ybUJsb2NrICZ1bmlmb3JtQmxvY2sgOiBtU3Rh
dGUuZ2V0VW5pZm9ybUJsb2NrcygpKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgaW50IHVuaWZv
cm1CbG9ja0VsZW1lbnQgPSB1bmlmb3JtQmxvY2suaXNBcnJheSA/IHVuaWZvcm1CbG9jay5hcnJh
eUVsZW1lbnQgOiAwOwogCkBAIC0xNTYxLDkgKzE1NjIsOSBAQAogICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfTk9fRVJST1IpOwogfQogCi1nbDo6RXJyb3IgUHJvZ3JhbUQzRDo6YXBwbHlVbmlmb3Jt
QnVmZmVycyhjb25zdCBnbDo6RGF0YSAmZGF0YSkKK2dsOjpFcnJvciBQcm9ncmFtRDNEOjphcHBs
eVVuaWZvcm1CdWZmZXJzKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEpCiB7Ci0gICAgaWYg
KG1EYXRhLmdldFVuaWZvcm1CbG9ja3MoKS5lbXB0eSgpKQorICAgIGlmIChtU3RhdGUuZ2V0VW5p
Zm9ybUJsb2NrcygpLmVtcHR5KCkpCiAgICAgewogICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsKICAgICB9CkBAIC0xNTg0LDcgKzE1ODUsNyBAQAogICAgICAgICAgdW5pZm9y
bUJsb2NrSW5kZXgrKykKICAgICB7CiAgICAgICAgIGNvbnN0IEQzRFVuaWZvcm1CbG9jayAmdW5p
Zm9ybUJsb2NrID0gbUQzRFVuaWZvcm1CbG9ja3NbdW5pZm9ybUJsb2NrSW5kZXhdOwotICAgICAg
ICBHTHVpbnQgYmxvY2tCaW5kaW5nICAgICAgICAgICAgICAgICA9IG1EYXRhLmdldFVuaWZvcm1C
bG9ja0JpbmRpbmcodW5pZm9ybUJsb2NrSW5kZXgpOworICAgICAgICBHTHVpbnQgYmxvY2tCaW5k
aW5nICAgICAgICAgICAgICAgICA9IG1TdGF0ZS5nZXRVbmlmb3JtQmxvY2tCaW5kaW5nKHVuaWZv
cm1CbG9ja0luZGV4KTsKIAogICAgICAgICAvLyBVbm5lY2Vzc2FyeSB0byBhcHBseSBhbiB1bnJl
ZmVyZW5jZWQgc3RhbmRhcmQgb3Igc2hhcmVkIFVCTwogICAgICAgICBpZiAoIXVuaWZvcm1CbG9j
ay52ZXJ0ZXhTdGF0aWNVc2UoKSAmJiAhdW5pZm9ybUJsb2NrLmZyYWdtZW50U3RhdGljVXNlKCkp
CkBAIC0xNTk1LDcgKzE1OTYsNyBAQAogICAgICAgICBpZiAodW5pZm9ybUJsb2NrLnZlcnRleFN0
YXRpY1VzZSgpKQogICAgICAgICB7CiAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcmVnaXN0ZXJJ
bmRleCA9IHVuaWZvcm1CbG9jay52c1JlZ2lzdGVySW5kZXggLSByZXNlcnZlZEJ1ZmZlcnNJblZT
OwotICAgICAgICAgICAgQVNTRVJUKHJlZ2lzdGVySW5kZXggPCBkYXRhLmNhcHMtPm1heFZlcnRl
eFVuaWZvcm1CbG9ja3MpOworICAgICAgICAgICAgQVNTRVJUKHJlZ2lzdGVySW5kZXggPCBkYXRh
LmdldENhcHMoKS5tYXhWZXJ0ZXhVbmlmb3JtQmxvY2tzKTsKIAogICAgICAgICAgICAgaWYgKG1W
ZXJ0ZXhVQk9DYWNoZS5zaXplKCkgPD0gcmVnaXN0ZXJJbmRleCkKICAgICAgICAgICAgIHsKQEAg
LTE2MDksNyArMTYxMCw3IEBACiAgICAgICAgIGlmICh1bmlmb3JtQmxvY2suZnJhZ21lbnRTdGF0
aWNVc2UoKSkKICAgICAgICAgewogICAgICAgICAgICAgdW5zaWduZWQgaW50IHJlZ2lzdGVySW5k
ZXggPSB1bmlmb3JtQmxvY2sucHNSZWdpc3RlckluZGV4IC0gcmVzZXJ2ZWRCdWZmZXJzSW5GUzsK
LSAgICAgICAgICAgIEFTU0VSVChyZWdpc3RlckluZGV4IDwgZGF0YS5jYXBzLT5tYXhGcmFnbWVu
dFVuaWZvcm1CbG9ja3MpOworICAgICAgICAgICAgQVNTRVJUKHJlZ2lzdGVySW5kZXggPCBkYXRh
LmdldENhcHMoKS5tYXhGcmFnbWVudFVuaWZvcm1CbG9ja3MpOwogCiAgICAgICAgICAgICBpZiAo
bUZyYWdtZW50VUJPQ2FjaGUuc2l6ZSgpIDw9IHJlZ2lzdGVySW5kZXgpCiAgICAgICAgICAgICB7
CkBAIC0xNzcyLDcgKzE3NzMsNyBAQAogdm9pZCBQcm9ncmFtRDNEOjpkZWZpbmVVbmlmb3Jtc0Fu
ZEFzc2lnblJlZ2lzdGVycygpCiB7CiAgICAgRDNEVW5pZm9ybU1hcCB1bmlmb3JtTWFwOwotICAg
IGNvbnN0IGdsOjpTaGFkZXIgKnZlcnRleFNoYWRlciA9IG1EYXRhLmdldEF0dGFjaGVkVmVydGV4
U2hhZGVyKCk7CisgICAgY29uc3QgZ2w6OlNoYWRlciAqdmVydGV4U2hhZGVyID0gbVN0YXRlLmdl
dEF0dGFjaGVkVmVydGV4U2hhZGVyKCk7CiAgICAgZm9yIChjb25zdCBzaDo6VW5pZm9ybSAmdmVy
dGV4VW5pZm9ybSA6IHZlcnRleFNoYWRlci0+Z2V0VW5pZm9ybXMoKSkKIAogICAgIHsKQEAgLTE3
ODIsNyArMTc4Myw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBjb25zdCBnbDo6U2hhZGVy
ICpmcmFnbWVudFNoYWRlciA9IG1EYXRhLmdldEF0dGFjaGVkRnJhZ21lbnRTaGFkZXIoKTsKKyAg
ICBjb25zdCBnbDo6U2hhZGVyICpmcmFnbWVudFNoYWRlciA9IG1TdGF0ZS5nZXRBdHRhY2hlZEZy
YWdtZW50U2hhZGVyKCk7CiAgICAgZm9yIChjb25zdCBzaDo6VW5pZm9ybSAmZnJhZ21lbnRVbmlm
b3JtIDogZnJhZ21lbnRTaGFkZXItPmdldFVuaWZvcm1zKCkpCiAgICAgewogICAgICAgICBpZiAo
ZnJhZ21lbnRVbmlmb3JtLnN0YXRpY1VzZSkKQEAgLTE3OTIsNyArMTc5Myw3IEBACiAgICAgfQog
CiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgRDNEVW5pZm9ybSBsaXN0IHRvIG1pcnJvciB0aGUgaW5k
ZXhpbmcgb2YgdGhlIEdMIGxheWVyLgotICAgIGZvciAoY29uc3QgZ2w6OkxpbmtlZFVuaWZvcm0g
JmdsVW5pZm9ybSA6IG1EYXRhLmdldFVuaWZvcm1zKCkpCisgICAgZm9yIChjb25zdCBnbDo6TGlu
a2VkVW5pZm9ybSAmZ2xVbmlmb3JtIDogbVN0YXRlLmdldFVuaWZvcm1zKCkpCiAgICAgewogICAg
ICAgICBpZiAoIWdsVW5pZm9ybS5pc0luRGVmYXVsdEJsb2NrKCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKQEAgLTE5MzYsNyArMTkzNyw3IEBACiAgICAgRDNEVW5pZm9ybSAqdGFyZ2V0VW5pZm9y
bSA9IGdldEQzRFVuaWZvcm1Gcm9tTG9jYXRpb24obG9jYXRpb24pOwogCiAgICAgdW5zaWduZWQg
aW50IGVsZW1lbnRDb3VudCA9IHRhcmdldFVuaWZvcm0tPmVsZW1lbnRDb3VudCgpOwotICAgIHVu
c2lnbmVkIGludCBhcnJheUVsZW1lbnQgPSBtRGF0YS5nZXRVbmlmb3JtTG9jYXRpb25zKClbbG9j
YXRpb25dLmVsZW1lbnQ7CisgICAgdW5zaWduZWQgaW50IGFycmF5RWxlbWVudCA9IG1TdGF0ZS5n
ZXRVbmlmb3JtTG9jYXRpb25zKClbbG9jYXRpb25dLmVsZW1lbnQ7CiAgICAgdW5zaWduZWQgaW50
IGNvdW50ICAgICAgICA9IHN0ZDo6bWluKGVsZW1lbnRDb3VudCAtIGFycmF5RWxlbWVudCwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgaW50Pihjb3VudEluKSk7CiAKICAgICBpZiAodGFyZ2V0VW5pZm9y
bS0+dHlwZSA9PSB0YXJnZXRVbmlmb3JtVHlwZSkKQEAgLTIwMTYsNyArMjAxNyw3IEBACiAgICAg
RDNEVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSA9IGdldEQzRFVuaWZvcm1Gcm9tTG9jYXRpb24obG9j
YXRpb24pOwogCiAgICAgdW5zaWduZWQgaW50IGVsZW1lbnRDb3VudCA9IHRhcmdldFVuaWZvcm0t
PmVsZW1lbnRDb3VudCgpOwotICAgIHVuc2lnbmVkIGludCBhcnJheUVsZW1lbnQgPSBtRGF0YS5n
ZXRVbmlmb3JtTG9jYXRpb25zKClbbG9jYXRpb25dLmVsZW1lbnQ7CisgICAgdW5zaWduZWQgaW50
IGFycmF5RWxlbWVudCA9IG1TdGF0ZS5nZXRVbmlmb3JtTG9jYXRpb25zKClbbG9jYXRpb25dLmVs
ZW1lbnQ7CiAgICAgdW5zaWduZWQgaW50IGNvdW50ICAgICAgICA9IHN0ZDo6bWluKGVsZW1lbnRD
b3VudCAtIGFycmF5RWxlbWVudCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihjb3VudEluKSk7
CiAKICAgICBjb25zdCB1bnNpZ25lZCBpbnQgdGFyZ2V0TWF0cml4U3RyaWRlID0gKDQgKiByb3dz
KTsKQEAgLTIwNzksOCArMjA4MCw4IEBACiB2b2lkIFByb2dyYW1EM0Q6OmFzc2lnblNhbXBsZXJS
ZWdpc3RlcnMoRDNEVW5pZm9ybSAqZDNkVW5pZm9ybSkKIHsKICAgICBBU1NFUlQoZDNkVW5pZm9y
bS0+aXNTYW1wbGVyKCkpOwotICAgIGNvbnN0IFNoYWRlckQzRCAqdmVydGV4U2hhZGVyRDNEICAg
PSBHZXRJbXBsQXM8U2hhZGVyRDNEPihtRGF0YS5nZXRBdHRhY2hlZFZlcnRleFNoYWRlcigpKTsK
LSAgICBjb25zdCBTaGFkZXJEM0QgKmZyYWdtZW50U2hhZGVyRDNEID0gR2V0SW1wbEFzPFNoYWRl
ckQzRD4obURhdGEuZ2V0QXR0YWNoZWRGcmFnbWVudFNoYWRlcigpKTsKKyAgICBjb25zdCBTaGFk
ZXJEM0QgKnZlcnRleFNoYWRlckQzRCAgID0gR2V0SW1wbEFzPFNoYWRlckQzRD4obVN0YXRlLmdl
dEF0dGFjaGVkVmVydGV4U2hhZGVyKCkpOworICAgIGNvbnN0IFNoYWRlckQzRCAqZnJhZ21lbnRT
aGFkZXJEM0QgPSBHZXRJbXBsQXM8U2hhZGVyRDNEPihtU3RhdGUuZ2V0QXR0YWNoZWRGcmFnbWVu
dFNoYWRlcigpKTsKICAgICBBU1NFUlQodmVydGV4U2hhZGVyRDNELT5oYXNVbmlmb3JtKGQzZFVu
aWZvcm0pIHx8IGZyYWdtZW50U2hhZGVyRDNELT5oYXNVbmlmb3JtKGQzZFVuaWZvcm0pKTsKICAg
ICBpZiAodmVydGV4U2hhZGVyRDNELT5oYXNVbmlmb3JtKGQzZFVuaWZvcm0pKQogICAgIHsKQEAg
LTIxNzEsMTEgKzIxNzIsMTEgQEAKIAogdm9pZCBQcm9ncmFtRDNEOjppbml0QXR0cmliTG9jYXRp
b25zVG9EM0RTZW1hbnRpYygpCiB7Ci0gICAgY29uc3QgZ2w6OlNoYWRlciAqdmVydGV4U2hhZGVy
ID0gbURhdGEuZ2V0QXR0YWNoZWRWZXJ0ZXhTaGFkZXIoKTsKKyAgICBjb25zdCBnbDo6U2hhZGVy
ICp2ZXJ0ZXhTaGFkZXIgPSBtU3RhdGUuZ2V0QXR0YWNoZWRWZXJ0ZXhTaGFkZXIoKTsKICAgICBB
U1NFUlQodmVydGV4U2hhZGVyICE9IG51bGxwdHIpOwogCiAgICAgLy8gSW5pdCBzZW1hbnRpYyBp
bmRleAotICAgIGZvciAoY29uc3Qgc2g6OkF0dHJpYnV0ZSAmYXR0cmlidXRlIDogbURhdGEuZ2V0
QXR0cmlidXRlcygpKQorICAgIGZvciAoY29uc3Qgc2g6OkF0dHJpYnV0ZSAmYXR0cmlidXRlIDog
bVN0YXRlLmdldEF0dHJpYnV0ZXMoKSkKICAgICB7CiAgICAgICAgIGludCBkM2RTZW1hbnRpYyA9
IHZlcnRleFNoYWRlci0+Z2V0U2VtYW50aWNJbmRleChhdHRyaWJ1dGUubmFtZSk7CiAgICAgICAg
IGludCByZWdDb3VudCAgICA9IGdsOjpWYXJpYWJsZVJlZ2lzdGVyQ291bnQoYXR0cmlidXRlLnR5
cGUpOwpAQCAtMjE5Miw3ICsyMTkzLDcgQEAKICAgICBtQ2FjaGVkSW5wdXRMYXlvdXQuY2xlYXIo
KTsKICAgICBjb25zdCBhdXRvICZ2ZXJ0ZXhBdHRyaWJ1dGVzID0gc3RhdGUuZ2V0VmVydGV4QXJy
YXkoKS0+Z2V0VmVydGV4QXR0cmlidXRlcygpOwogCi0gICAgZm9yICh1bnNpZ25lZCBpbnQgbG9j
YXRpb25JbmRleCA6IGFuZ2xlOjpJdGVyYXRlQml0U2V0KG1EYXRhLmdldEFjdGl2ZUF0dHJpYkxv
Y2F0aW9uc01hc2soKSkpCisgICAgZm9yICh1bnNpZ25lZCBpbnQgbG9jYXRpb25JbmRleCA6IGFu
Z2xlOjpJdGVyYXRlQml0U2V0KG1TdGF0ZS5nZXRBY3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrKCkp
KQogICAgIHsKICAgICAgICAgaW50IGQzZFNlbWFudGljID0gbUF0dHJpYkxvY2F0aW9uVG9EM0RT
ZW1hbnRpY1tsb2NhdGlvbkluZGV4XTsKIApAQCAtMjIxOSw3ICsyMjIwLDcgQEAKICAgICAvLyBH
YXRoZXIgdGhlIGxpbmtlZCB2YXJ5aW5ncyB0aGF0IGFyZSB1c2VkIGZvciB0cmFuc2Zvcm0gZmVl
ZGJhY2ssIHRoZXkgc2hvdWxkIGFsbCBleGlzdC4KICAgICBtU3RyZWFtT3V0VmFyeWluZ3MuY2xl
YXIoKTsKIAotICAgIGNvbnN0IGF1dG8gJnRmVmFyeWluZ05hbWVzID0gbURhdGEuZ2V0VHJhbnNm
b3JtRmVlZGJhY2tWYXJ5aW5nTmFtZXMoKTsKKyAgICBjb25zdCBhdXRvICZ0ZlZhcnlpbmdOYW1l
cyA9IG1TdGF0ZS5nZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdOYW1lcygpOwogICAgIGZvciAo
dW5zaWduZWQgaW50IG91dHB1dFNsb3QgPSAwOyBvdXRwdXRTbG90IDwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgaW50Pih0ZlZhcnlpbmdOYW1lcy5zaXplKCkpOwogICAgICAgICAgKytvdXRwdXRTbG90
KQogICAgIHsKQEAgLTIyNzYsNyArMjI3Nyw3IEBACiAKIEQzRFVuaWZvcm0gKlByb2dyYW1EM0Q6
OmdldEQzRFVuaWZvcm1Gcm9tTG9jYXRpb24oR0xpbnQgbG9jYXRpb24pCiB7Ci0gICAgcmV0dXJu
IG1EM0RVbmlmb3Jtc1ttRGF0YS5nZXRVbmlmb3JtTG9jYXRpb25zKClbbG9jYXRpb25dLmluZGV4
XTsKKyAgICByZXR1cm4gbUQzRFVuaWZvcm1zW21TdGF0ZS5nZXRVbmlmb3JtTG9jYXRpb25zKClb
bG9jYXRpb25dLmluZGV4XTsKIH0KIAogYm9vbCBQcm9ncmFtRDNEOjpnZXRVbmlmb3JtQmxvY2tT
aXplKGNvbnN0IHN0ZDo6c3RyaW5nICZibG9ja05hbWUsIHNpemVfdCAqc2l6ZU91dCkgY29uc3QK
QEAgLTIzMDgsNCArMjMwOSwxMyBAQAogICAgICptZW1iZXJJbmZvT3V0ID0gaW5mb0l0ZXItPnNl
Y29uZDsKICAgICByZXR1cm4gdHJ1ZTsKIH0KKwordm9pZCBQcm9ncmFtRDNEOjpzZXRQYXRoRnJh
Z21lbnRJbnB1dEdlbihjb25zdCBzdGQ6OnN0cmluZyAmaW5wdXROYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZ2VuTW9kZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY29tcG9uZW50cywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqY29lZmZzKQor
eworICAgIFVOUkVBQ0hBQkxFKCk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9Qcm9ncmFtRDNE
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9Qcm9ncmFtRDNELmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvUHJvZ3JhbUQzRC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NywxOSArOTcsMTYgQEAKICAgICB1bnNpZ25lZCBpbnQgb3V0cHV0U2xv
dDsKIH07CiAKLWNsYXNzIFByb2dyYW1EM0RNZXRhZGF0YSA6IGFuZ2xlOjpOb25Db3B5YWJsZQor
Y2xhc3MgUHJvZ3JhbUQzRE1ldGFkYXRhIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiB7CiAg
IHB1YmxpYzoKLSAgICBQcm9ncmFtRDNETWV0YWRhdGEoaW50IHJlbmRlcmVyTWFqb3JTaGFkZXJN
b2RlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlck1v
ZGVsU3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICBib29sIHVzZXNJbnN0YW5jZWRQb2lu
dFNwcml0ZUVtdWxhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1c2VzVmlld1Nj
YWxlLAorICAgIFByb2dyYW1EM0RNZXRhZGF0YShSZW5kZXJlckQzRCAqcmVuZGVyZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoYWRlckQzRCAqdmVydGV4U2hhZGVyLAogICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBTaGFkZXJEM0QgKmZyYWdtZW50U2hhZGVyKTsKIAogICAg
IGludCBnZXRSZW5kZXJlck1ham9yU2hhZGVyTW9kZWwoKSBjb25zdDsKLSAgICBib29sIHVzZXNC
cm9hZGNhc3QoY29uc3QgZ2w6OkRhdGEgJmRhdGEpIGNvbnN0OwotICAgIGJvb2wgdXNlc0ZyYWdE
ZXB0aChjb25zdCBnbDo6UHJvZ3JhbTo6RGF0YSAmcHJvZ3JhbURhdGEpIGNvbnN0OworICAgIGJv
b2wgdXNlc0Jyb2FkY2FzdChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhKSBjb25zdDsKKyAg
ICBib29sIHVzZXNGcmFnRGVwdGgoKSBjb25zdDsKICAgICBib29sIHVzZXNQb2ludENvb3JkKCkg
Y29uc3Q7CiAgICAgYm9vbCB1c2VzRnJhZ0Nvb3JkKCkgY29uc3Q7CiAgICAgYm9vbCB1c2VzUG9p
bnRTaXplKCkgY29uc3Q7CkBAIC0xMzQsNyArMTMxLDcgQEAKIGNsYXNzIFByb2dyYW1EM0QgOiBw
dWJsaWMgUHJvZ3JhbUltcGwKIHsKICAgcHVibGljOgotICAgIFByb2dyYW1EM0QoY29uc3QgZ2w6
OlByb2dyYW06OkRhdGEgJmRhdGEsIFJlbmRlcmVyRDNEICpyZW5kZXJlcik7CisgICAgUHJvZ3Jh
bUQzRChjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZkYXRhLCBSZW5kZXJlckQzRCAqcmVuZGVyZXIp
OwogICAgIHZpcnR1YWwgflByb2dyYW1EM0QoKTsKIAogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFBp
eGVsU2hhZGVyT3V0cHV0VmFyaWFibGU+ICZnZXRQaXhlbFNoYWRlcktleSgpIHsgcmV0dXJuIG1Q
aXhlbFNoYWRlcktleTsgfQpAQCAtMTYzLDIxICsxNjAsMjUgQEAKICAgICBnbDo6RXJyb3IgZ2V0
VmVydGV4RXhlY3V0YWJsZUZvcklucHV0TGF5b3V0KGNvbnN0IGdsOjpJbnB1dExheW91dCAmaW5w
dXRMYXlvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTaGFkZXJFeGVjdXRhYmxlRDNEICoqb3V0RXhlY3R1YWJsZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpJbmZvTG9nICppbmZvTG9nKTsKLSAg
ICBnbDo6RXJyb3IgZ2V0R2VvbWV0cnlFeGVjdXRhYmxlRm9yUHJpbWl0aXZlVHlwZShjb25zdCBn
bDo6RGF0YSAmZGF0YSwKKyAgICBnbDo6RXJyb3IgZ2V0R2VvbWV0cnlFeGVjdXRhYmxlRm9yUHJp
bWl0aXZlVHlwZShjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkcmF3TW9kZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJF
eGVjdXRhYmxlRDNEICoqb3V0RXhlY3V0YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6SW5mb0xvZyAqaW5mb0xvZyk7CiAKLSAgICBM
aW5rUmVzdWx0IGxpbmsoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIGdsOjpJbmZvTG9nICZpbmZvTG9n
KSBvdmVycmlkZTsKKyAgICBMaW5rUmVzdWx0IGxpbmsoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAm
ZGF0YSwgZ2w6OkluZm9Mb2cgJmluZm9Mb2cpIG92ZXJyaWRlOwogICAgIEdMYm9vbGVhbiB2YWxp
ZGF0ZShjb25zdCBnbDo6Q2FwcyAmY2FwcywgZ2w6OkluZm9Mb2cgKmluZm9Mb2cpIG92ZXJyaWRl
OwogCiAgICAgYm9vbCBnZXRVbmlmb3JtQmxvY2tTaXplKGNvbnN0IHN0ZDo6c3RyaW5nICZibG9j
a05hbWUsIHNpemVfdCAqc2l6ZU91dCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBnZXRVbmlm
b3JtQmxvY2tNZW1iZXJJbmZvKGNvbnN0IHN0ZDo6c3RyaW5nICZtZW1iZXJVbmlmb3JtTmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2g6OkJsb2NrTWVtYmVySW5mbyAq
bWVtYmVySW5mb091dCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRQYXRoRnJhZ21lbnRJ
bnB1dEdlbihjb25zdCBzdGQ6OnN0cmluZyAmaW5wdXROYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGdlbk1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBjb21wb25lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqY29lZmZzKSBvdmVycmlkZTsKIAogICAgIHZvaWQgaW5pdGlhbGl6
ZVVuaWZvcm1TdG9yYWdlKCk7CiAgICAgZ2w6OkVycm9yIGFwcGx5VW5pZm9ybXMoR0xlbnVtIGRy
YXdNb2RlKTsKLSAgICBnbDo6RXJyb3IgYXBwbHlVbmlmb3JtQnVmZmVycyhjb25zdCBnbDo6RGF0
YSAmZGF0YSk7CisgICAgZ2w6OkVycm9yIGFwcGx5VW5pZm9ybUJ1ZmZlcnMoY29uc3QgZ2w6OkNv
bnRleHRTdGF0ZSAmZGF0YSk7CiAgICAgdm9pZCBkaXJ0eUFsbFVuaWZvcm1zKCk7CiAKICAgICB2
b2lkIHNldFVuaWZvcm0xZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
ZmxvYXQgKnYpOwpAQCAtMzQwLDcgKzM0MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRhcmdldFVuaWZvcm1UeXBlKTsKIAotICAgIExpbmtSZXN1bHQgY29tcGlsZVByb2dyYW1F
eGVjdXRhYmxlcyhjb25zdCBnbDo6RGF0YSAmZGF0YSwgZ2w6OkluZm9Mb2cgJmluZm9Mb2cpOwor
ICAgIExpbmtSZXN1bHQgY29tcGlsZVByb2dyYW1FeGVjdXRhYmxlcyhjb25zdCBnbDo6Q29udGV4
dFN0YXRlICZkYXRhLCBnbDo6SW5mb0xvZyAmaW5mb0xvZyk7CiAKICAgICB2b2lkIGdhdGhlclRy
YW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoY29uc3QgVmFyeWluZ1BhY2tpbmcgJnZhcnlpbmdzKTsK
ICAgICBEM0RVbmlmb3JtICpnZXREM0RVbmlmb3JtQnlOYW1lKGNvbnN0IHN0ZDo6c3RyaW5nICZu
YW1lKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvUmVuZGVyYnVmZmVyRDNELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlcmJ1ZmZlckQzRC5jcHAJKHJl
dmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvUmVuZGVyYnVmZmVyRDNELmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyAr
NDgsNyBAQAogICAgIC8vIHRoZSBzcGVjaWZpZWQgc3RvcmFnZS4KICAgICAvLyBCZWNhdXNlIEVT
IDMuMCBhbHJlYWR5IGtub3dzIHRoZSBleGFjdCBudW1iZXIgb2Ygc3VwcG9ydGVkIHNhbXBsZXMs
IGl0IHdvdWxkIGFscmVhZHkgaGF2ZSBiZWVuCiAgICAgLy8gdmFsaWRhdGVkIGFuZCBnZW5lcmF0
ZWQgR0xfSU5WQUxJRF9WQUxVRS4KLSAgICBjb25zdCBnbDo6VGV4dHVyZUNhcHMgJmZvcm1hdENh
cHMgPSBtUmVuZGVyZXItPmdldFJlbmRlcmVyVGV4dHVyZUNhcHMoKS5nZXQoY3JlYXRpb25Gb3Jt
YXQpOworICAgIGNvbnN0IGdsOjpUZXh0dXJlQ2FwcyAmZm9ybWF0Q2FwcyA9IG1SZW5kZXJlci0+
Z2V0TmF0aXZlVGV4dHVyZUNhcHMoKS5nZXQoY3JlYXRpb25Gb3JtYXQpOwogICAgIGlmIChzYW1w
bGVzID4gZm9ybWF0Q2Fwcy5nZXRNYXhTYW1wbGVzKCkpCiAgICAgewogICAgICAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJSZW5kZXJidWZmZXIgZm9ybWF0IGRvZXMgbm90
IHN1cHBvcnQgJXUgc2FtcGxlcywgJXUgaXMgdGhlIG1heGltdW0uIiwKQEAgLTU2LDE5ICs1Niwx
NCBAQAogICAgIH0KIAogICAgIFJlbmRlclRhcmdldEQzRCAqbmV3UlQgPSBOVUxMOwotICAgIGds
OjpFcnJvciBlcnJvciA9Ci0gICAgICAgIG1SZW5kZXJlci0+Y3JlYXRlUmVuZGVyVGFyZ2V0KHN0
YXRpY19jYXN0PGludD4od2lkdGgpLCBzdGF0aWNfY2FzdDxpbnQ+KGhlaWdodCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0aW9uRm9ybWF0LCBzdGF0aWNfY2Fz
dDxHTHNpemVpPihzYW1wbGVzKSwgJm5ld1JUKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkobVJlbmRl
cmVyLT5jcmVhdGVSZW5kZXJUYXJnZXQoc3RhdGljX2Nhc3Q8aW50Pih3aWR0aCksIHN0YXRpY19j
YXN0PGludD4oaGVpZ2h0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3JlYXRpb25Gb3JtYXQsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHNhbXBsZXMpLCAmbmV3
UlQpKTsKIAogICAgIFNhZmVEZWxldGUobVJlbmRlclRhcmdldCk7CiAgICAgbUltYWdlICAgICAg
ICA9IG51bGxwdHI7CiAgICAgbVJlbmRlclRhcmdldCA9IG5ld1JUOwogCi0gICAgcmV0dXJuIGds
OjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGds
OjpFcnJvciBSZW5kZXJidWZmZXJEM0Q6OnNldFN0b3JhZ2VFR0xJbWFnZVRhcmdldChlZ2w6Oklt
YWdlICppbWFnZSkKQEAgLTc2LDcgKzcxLDcgQEAKICAgICBtSW1hZ2UgPSBHZXRJbXBsQXM8RUdM
SW1hZ2VEM0Q+KGltYWdlKTsKICAgICBTYWZlRGVsZXRlKG1SZW5kZXJUYXJnZXQpOwogCi0gICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7
CiB9CiAKIGdsOjpFcnJvciBSZW5kZXJidWZmZXJEM0Q6OmdldFJlbmRlclRhcmdldChSZW5kZXJU
YXJnZXREM0QgKipvdXRSZW5kZXJUYXJnZXQpCkBAIC04OCw3ICs4Myw3IEBACiAgICAgZWxzZQog
ICAgIHsKICAgICAgICAgKm91dFJlbmRlclRhcmdldCA9IG1SZW5kZXJUYXJnZXQ7Ci0gICAgICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJy
b3IoKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyZXJEM0QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyZXJEM0QuY3Bw
CShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL1JlbmRlcmVyRDNELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUsNiAr
MTUsNyBAQAogI2luY2x1ZGUgImxpYkFOR0xFL2Zvcm1hdHV0aWxzLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvRnJhbWVidWZmZXIuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFj
aG1lbnQuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9UZXh0dXJlSW1wbC5oIgogI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9CdWZmZXJEM0QuaCIKICNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9kM2QvRGV2aWNlRDNELmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL0Rpc3BsYXlEM0QuaCIKQEAgLTI4LDIzICsyOSwxMyBAQAogbmFtZXNwYWNlIHJ4CiB7
CiAKLW5hbWVzcGFjZQotewotLy8gSWYgd2UgcmVxdWVzdCBhIHNjcmF0Y2ggYnVmZmVyIHJlcXVl
c3RpbmcgYSBzbWFsbGVyIHNpemUgdGhpcyBtYW55IHRpbWVzLAotLy8gcmVsZWFzZSBhbmQgcmVj
cmVhdGUgdGhlIHNjcmF0Y2ggYnVmZmVyLiBUaGlzIGVuc3VyZXMgd2UgZG9uJ3QgaGF2ZSBhCi0v
LyBkZWdlbmVyYXRlIGNhc2Ugd2hlcmUgd2UgYXJlIHN0dWNrIGhvZ2dpbmcgbWVtb3J5LgotY29u
c3QgaW50IFNjcmF0Y2hNZW1vcnlCdWZmZXJMaWZldGltZSA9IDEwMDA7Ci0KLX0gIC8vIGFub255
bW91cyBuYW1lc3BhY2UKLQogUmVuZGVyZXJEM0Q6OlJlbmRlcmVyRDNEKGVnbDo6RGlzcGxheSAq
ZGlzcGxheSkKICAgICA6IG1EaXNwbGF5KGRpc3BsYXkpLAotICAgICAgbURldmljZUxvc3QoZmFs
c2UpLAotICAgICAgbUFubm90YXRvcihudWxscHRyKSwKICAgICAgIG1QcmVzZW50UGF0aEZhc3RF
bmFibGVkKGZhbHNlKSwKLSAgICAgIG1TY3JhdGNoTWVtb3J5QnVmZmVyUmVzZXRDb3VudGVyKDAp
LAorICAgICAgbUNhcHNJbml0aWFsaXplZChmYWxzZSksCiAgICAgICBtV29ya2Fyb3VuZHNJbml0
aWFsaXplZChmYWxzZSksCi0gICAgICBtRGlzam9pbnQoZmFsc2UpCisgICAgICBtRGlzam9pbnQo
ZmFsc2UpLAorICAgICAgbURldmljZUxvc3QoZmFsc2UpCiB7CiB9CiAKQEAgLTU1LDE5NyArNDYs
MjAgQEAKIAogdm9pZCBSZW5kZXJlckQzRDo6Y2xlYW51cCgpCiB7Ci0gICAgbVNjcmF0Y2hNZW1v
cnlCdWZmZXIucmVzaXplKDApOwogICAgIGZvciAoYXV0byAmaW5jb21wbGV0ZVRleHR1cmUgOiBt
SW5jb21wbGV0ZVRleHR1cmVzKQogICAgIHsKICAgICAgICAgaW5jb21wbGV0ZVRleHR1cmUuc2Vj
b25kLnNldChudWxscHRyKTsKICAgICB9CiAgICAgbUluY29tcGxldGVUZXh0dXJlcy5jbGVhcigp
OwotCi0gICAgaWYgKG1Bbm5vdGF0b3IgIT0gbnVsbHB0cikKLSAgICB7Ci0gICAgICAgIGdsOjpV
bmluaXRpYWxpemVEZWJ1Z0Fubm90YXRpb25zKCk7Ci0gICAgICAgIFNhZmVEZWxldGUobUFubm90
YXRvcik7Ci0gICAgfQogfQogCi1TYW1wbGVySW1wbCAqUmVuZGVyZXJEM0Q6OmNyZWF0ZVNhbXBs
ZXIoKQordW5zaWduZWQgaW50IFJlbmRlcmVyRDNEOjpHZXRCbGVuZFNhbXBsZU1hc2soY29uc3Qg
Z2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwgaW50IHNhbXBsZXMpCiB7Ci0gICAgcmV0dXJuIG5ldyBT
YW1wbGVyRDNEKCk7Ci19Ci0KLWdsOjpFcnJvciBSZW5kZXJlckQzRDo6ZHJhd0FycmF5cyhjb25z
dCBnbDo6RGF0YSAmZGF0YSwgR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50
KQotewotICAgIHJldHVybiBnZW5lcmljRHJhd0FycmF5cyhkYXRhLCBtb2RlLCBmaXJzdCwgY291
bnQsIDApOwotfQotCi1nbDo6RXJyb3IgUmVuZGVyZXJEM0Q6OmRyYXdBcnJheXNJbnN0YW5jZWQo
Y29uc3QgZ2w6OkRhdGEgJmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIG1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgZmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlQ291bnQpCi17Ci0gICAgcmV0dXJuIGdlbmVyaWNE
cmF3QXJyYXlzKGRhdGEsIG1vZGUsIGZpcnN0LCBjb3VudCwgaW5zdGFuY2VDb3VudCk7Ci19Ci0K
LWdsOjpFcnJvciBSZW5kZXJlckQzRDo6ZHJhd0VsZW1lbnRzKGNvbnN0IGdsOjpEYXRhICZkYXRh
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkK
LXsKLSAgICByZXR1cm4gZ2VuZXJpY0RyYXdFbGVtZW50cyhkYXRhLCBtb2RlLCBjb3VudCwgdHlw
ZSwgaW5kaWNlcywgMCwgaW5kZXhSYW5nZSk7Ci19Ci0KLWdsOjpFcnJvciBSZW5kZXJlckQzRDo6
ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKGNvbnN0IGdsOjpEYXRhICZkYXRhLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmlu
ZGljZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGluc3RhbmNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpJbmRleFJhbmdlICZpbmRleFJhbmdlKQotewotICAgIHJldHVybiBnZW5l
cmljRHJhd0VsZW1lbnRzKGRhdGEsIG1vZGUsIGNvdW50LCB0eXBlLCBpbmRpY2VzLCBpbnN0YW5j
ZXMsIGluZGV4UmFuZ2UpOwotfQotCi1nbDo6RXJyb3IgUmVuZGVyZXJEM0Q6OmRyYXdSYW5nZUVs
ZW1lbnRzKGNvbnN0IGdsOjpEYXRhICZkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IHN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgZW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkKLXsKLSAgICBy
ZXR1cm4gZ2VuZXJpY0RyYXdFbGVtZW50cyhkYXRhLCBtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNl
cywgMCwgaW5kZXhSYW5nZSk7Ci19Ci0KLWdsOjpFcnJvciBSZW5kZXJlckQzRDo6Z2VuZXJpY0Ry
YXdFbGVtZW50cyhjb25zdCBnbDo6RGF0YSAmZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5n
ZSAmaW5kZXhSYW5nZSkKLXsKLSAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbSA9IGRhdGEuc3RhdGUt
PmdldFByb2dyYW0oKTsKLSAgICBBU1NFUlQocHJvZ3JhbSAhPSBudWxscHRyKTsKLSAgICBQcm9n
cmFtRDNEICpwcm9ncmFtRDNEID0gR2V0SW1wbEFzPFByb2dyYW1EM0Q+KHByb2dyYW0pOwotICAg
IGJvb2wgdXNlc1BvaW50U2l6ZSAgICAgPSBwcm9ncmFtRDNELT51c2VzUG9pbnRTaXplKCk7Ci0K
LSAgICBwcm9ncmFtRDNELT51cGRhdGVTYW1wbGVyTWFwcGluZygpOwotCi0gICAgQU5HTEVfVFJZ
KGdlbmVyYXRlU3dpenpsZXMoZGF0YSkpOwotCi0gICAgaWYgKCFhcHBseVByaW1pdGl2ZVR5cGUo
bW9kZSwgY291bnQsIHVzZXNQb2ludFNpemUpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7Ci0gICAgfQotCi0gICAgQU5HTEVfVFJZKHVwZGF0ZVN0YXRlKGRhdGEsIG1vZGUp
KTsKLQotICAgIFRyYW5zbGF0ZWRJbmRleERhdGEgaW5kZXhJbmZvOwotICAgIGluZGV4SW5mby5p
bmRleFJhbmdlID0gaW5kZXhSYW5nZTsKLQotICAgIEFOR0xFX1RSWShhcHBseUluZGV4QnVmZmVy
KGRhdGEsIGluZGljZXMsIGNvdW50LCBtb2RlLCB0eXBlLCAmaW5kZXhJbmZvKSk7Ci0KLSAgICBh
cHBseVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVycygqZGF0YS5zdGF0ZSk7Ci0gICAgLy8gVHJhbnNm
b3JtIGZlZWRiYWNrIGlzIG5vdCBhbGxvd2VkIGZvciBEcmF3RWxlbWVudHMsIHRoaXMgZXJyb3Ig
c2hvdWxkIGhhdmUgYmVlbiBjYXVnaHQgYXQgdGhlIEFQSSB2YWxpZGF0aW9uCi0gICAgLy8gbGF5
ZXIuCi0gICAgQVNTRVJUKCFkYXRhLnN0YXRlLT5pc1RyYW5zZm9ybUZlZWRiYWNrQWN0aXZlVW5w
YXVzZWQoKSk7Ci0KLSAgICBzaXplX3QgdmVydGV4Q291bnQgPSBpbmRleEluZm8uaW5kZXhSYW5n
ZS52ZXJ0ZXhDb3VudCgpOwotICAgIEFOR0xFX1RSWShhcHBseVZlcnRleEJ1ZmZlcigqZGF0YS5z
dGF0ZSwgbW9kZSwgc3RhdGljX2Nhc3Q8R0xzaXplaT4oaW5kZXhJbmZvLmluZGV4UmFuZ2Uuc3Rh
cnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHNpemVp
Pih2ZXJ0ZXhDb3VudCksIGluc3RhbmNlcywgJmluZGV4SW5mbykpOwotICAgIEFOR0xFX1RSWShh
cHBseVRleHR1cmVzKGRhdGEpKTsKLSAgICBBTkdMRV9UUlkoYXBwbHlTaGFkZXJzKGRhdGEsIG1v
ZGUpKTsKLSAgICBBTkdMRV9UUlkocHJvZ3JhbUQzRC0+YXBwbHlVbmlmb3JtQnVmZmVycyhkYXRh
KSk7Ci0KLSAgICBpZiAoIXNraXBEcmF3KGRhdGEsIG1vZGUpKQotICAgIHsKLSAgICAgICAgQU5H
TEVfVFJZKGRyYXdFbGVtZW50c0ltcGwoZGF0YSwgaW5kZXhJbmZvLCBtb2RlLCBjb3VudCwgdHlw
ZSwgaW5kaWNlcywgaW5zdGFuY2VzKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGdsOjpOb0Vycm9y
KCk7Ci19Ci0KLWdsOjpFcnJvciBSZW5kZXJlckQzRDo6Z2VuZXJpY0RyYXdBcnJheXMoY29uc3Qg
Z2w6OkRhdGEgJmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBtb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBmaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBpbnN0YW5jZXMpCi17Ci0gICAgZ2w6OlByb2dyYW0gKnByb2dyYW0gPSBkYXRhLnN0YXRl
LT5nZXRQcm9ncmFtKCk7Ci0gICAgQVNTRVJUKHByb2dyYW0gIT0gbnVsbHB0cik7Ci0gICAgUHJv
Z3JhbUQzRCAqcHJvZ3JhbUQzRCA9IEdldEltcGxBczxQcm9ncmFtRDNEPihwcm9ncmFtKTsKLSAg
ICBib29sIHVzZXNQb2ludFNpemUgICAgID0gcHJvZ3JhbUQzRC0+dXNlc1BvaW50U2l6ZSgpOwot
Ci0gICAgcHJvZ3JhbUQzRC0+dXBkYXRlU2FtcGxlck1hcHBpbmcoKTsKLQotICAgIEFOR0xFX1RS
WShnZW5lcmF0ZVN3aXp6bGVzKGRhdGEpKTsKLSAgICBpZiAoIWFwcGx5UHJpbWl0aXZlVHlwZSht
b2RlLCBjb3VudCwgdXNlc1BvaW50U2l6ZSkpCi0gICAgewotICAgICAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKLSAgICB9Ci0KLSAgICBBTkdMRV9UUlkodXBkYXRlU3RhdGUoZGF0YSwgbW9kZSkp
OwotICAgIEFOR0xFX1RSWShhcHBseVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVycygqZGF0YS5zdGF0
ZSkpOwotICAgIEFOR0xFX1RSWShhcHBseVZlcnRleEJ1ZmZlcigqZGF0YS5zdGF0ZSwgbW9kZSwg
Zmlyc3QsIGNvdW50LCBpbnN0YW5jZXMsIG51bGxwdHIpKTsKLSAgICBBTkdMRV9UUlkoYXBwbHlU
ZXh0dXJlcyhkYXRhKSk7Ci0gICAgQU5HTEVfVFJZKGFwcGx5U2hhZGVycyhkYXRhLCBtb2RlKSk7
Ci0gICAgQU5HTEVfVFJZKHByb2dyYW1EM0QtPmFwcGx5VW5pZm9ybUJ1ZmZlcnMoZGF0YSkpOwot
Ci0gICAgaWYgKCFza2lwRHJhdyhkYXRhLCBtb2RlKSkKLSAgICB7Ci0gICAgICAgIEFOR0xFX1RS
WShkcmF3QXJyYXlzSW1wbChkYXRhLCBtb2RlLCBmaXJzdCwgY291bnQsIGluc3RhbmNlcykpOwot
Ci0gICAgICAgIGlmIChkYXRhLnN0YXRlLT5pc1RyYW5zZm9ybUZlZWRiYWNrQWN0aXZlVW5wYXVz
ZWQoKSkKLSAgICAgICAgewotICAgICAgICAgICAgQU5HTEVfVFJZKG1hcmtUcmFuc2Zvcm1GZWVk
YmFja1VzYWdlKGRhdGEpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBnbDo6Tm9F
cnJvcigpOwotfQotCi1nbDo6RXJyb3IgUmVuZGVyZXJEM0Q6OmdlbmVyYXRlU3dpenpsZXMoY29u
c3QgZ2w6OkRhdGEgJmRhdGEsIGdsOjpTYW1wbGVyVHlwZSB0eXBlKQotewotICAgIFByb2dyYW1E
M0QgKnByb2dyYW1EM0QgPSBHZXRJbXBsQXM8UHJvZ3JhbUQzRD4oZGF0YS5zdGF0ZS0+Z2V0UHJv
Z3JhbSgpKTsKLQotICAgIHVuc2lnbmVkIGludCBzYW1wbGVyUmFuZ2UgPSBwcm9ncmFtRDNELT5n
ZXRVc2VkU2FtcGxlclJhbmdlKHR5cGUpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7
IGkgPCBzYW1wbGVyUmFuZ2U7IGkrKykKLSAgICB7Ci0gICAgICAgIEdMZW51bSB0ZXh0dXJlVHlw
ZSA9IHByb2dyYW1EM0QtPmdldFNhbXBsZXJUZXh0dXJlVHlwZSh0eXBlLCBpKTsKLSAgICAgICAg
R0xpbnQgdGV4dHVyZVVuaXQgPSBwcm9ncmFtRDNELT5nZXRTYW1wbGVyTWFwcGluZyh0eXBlLCBp
LCAqZGF0YS5jYXBzKTsKLSAgICAgICAgaWYgKHRleHR1cmVVbml0ICE9IC0xKQotICAgICAgICB7
Ci0gICAgICAgICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSA9IGRhdGEuc3RhdGUtPmdldFNhbXBs
ZXJUZXh0dXJlKHRleHR1cmVVbml0LCB0ZXh0dXJlVHlwZSk7Ci0gICAgICAgICAgICBBU1NFUlQo
dGV4dHVyZSk7Ci0gICAgICAgICAgICBpZiAodGV4dHVyZS0+Z2V0VGV4dHVyZVN0YXRlKCkuc3dp
enpsZVJlcXVpcmVkKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQU5HTEVfVFJZ
KGdlbmVyYXRlU3dpenpsZSh0ZXh0dXJlKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKLX0KLQotZ2w6OkVycm9yIFJlbmRlcmVy
RDNEOjpnZW5lcmF0ZVN3aXp6bGVzKGNvbnN0IGdsOjpEYXRhICZkYXRhKQotewotICAgIEFOR0xF
X1RSWShnZW5lcmF0ZVN3aXp6bGVzKGRhdGEsIGdsOjpTQU1QTEVSX1ZFUlRFWCkpOwotICAgIEFO
R0xFX1RSWShnZW5lcmF0ZVN3aXp6bGVzKGRhdGEsIGdsOjpTQU1QTEVSX1BJWEVMKSk7Ci0gICAg
cmV0dXJuIGdsOjpOb0Vycm9yKCk7Ci19Ci0KLXVuc2lnbmVkIGludCBSZW5kZXJlckQzRDo6R2V0
QmxlbmRTYW1wbGVNYXNrKGNvbnN0IGdsOjpEYXRhICZkYXRhLCBpbnQgc2FtcGxlcykKLXsKKyAg
ICBjb25zdCBhdXRvICZnbFN0YXRlID0gZGF0YS5nZXRTdGF0ZSgpOwogICAgIHVuc2lnbmVkIGlu
dCBtYXNrID0gMDsKLSAgICBpZiAoZGF0YS5zdGF0ZS0+aXNTYW1wbGVDb3ZlcmFnZUVuYWJsZWQo
KSkKKyAgICBpZiAoZ2xTdGF0ZS5pc1NhbXBsZUNvdmVyYWdlRW5hYmxlZCgpKQogICAgIHsKLSAg
ICAgICAgR0xjbGFtcGYgY292ZXJhZ2VWYWx1ZSA9IGRhdGEuc3RhdGUtPmdldFNhbXBsZUNvdmVy
YWdlVmFsdWUoKTsKKyAgICAgICAgR0xjbGFtcGYgY292ZXJhZ2VWYWx1ZSA9IGdsU3RhdGUuZ2V0
U2FtcGxlQ292ZXJhZ2VWYWx1ZSgpOwogICAgICAgICBpZiAoY292ZXJhZ2VWYWx1ZSAhPSAwKQog
ICAgICAgICB7CiAgICAgICAgICAgICBmbG9hdCB0aHJlc2hvbGQgPSAwLjVmOwpAQCAtMjYyLDcg
Kzc2LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgY292ZXJh
Z2VJbnZlcnQgPSBkYXRhLnN0YXRlLT5nZXRTYW1wbGVDb3ZlcmFnZUludmVydCgpOworICAgICAg
ICBib29sIGNvdmVyYWdlSW52ZXJ0ID0gZ2xTdGF0ZS5nZXRTYW1wbGVDb3ZlcmFnZUludmVydCgp
OwogICAgICAgICBpZiAoY292ZXJhZ2VJbnZlcnQpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1h
c2sgPSB+bWFzazsKQEAgLTI3NiwyNiArOTAsMTkgQEAKICAgICByZXR1cm4gbWFzazsKIH0KIAot
Ly8gQXBwbGllcyB0aGUgc2hhZGVycyBhbmQgc2hhZGVyIGNvbnN0YW50cyB0byB0aGUgRGlyZWN0
M0QgZGV2aWNlCi1nbDo6RXJyb3IgUmVuZGVyZXJEM0Q6OmFwcGx5U2hhZGVycyhjb25zdCBnbDo6
RGF0YSAmZGF0YSwgR0xlbnVtIGRyYXdNb2RlKQotewotICAgIGdsOjpQcm9ncmFtICpwcm9ncmFt
ID0gZGF0YS5zdGF0ZS0+Z2V0UHJvZ3JhbSgpOwotICAgIFByb2dyYW1EM0QgKnByb2dyYW1EM0Qg
PSBHZXRJbXBsQXM8UHJvZ3JhbUQzRD4ocHJvZ3JhbSk7Ci0gICAgcHJvZ3JhbUQzRC0+dXBkYXRl
Q2FjaGVkSW5wdXRMYXlvdXQoKmRhdGEuc3RhdGUpOwotCi0gICAgQU5HTEVfVFJZKGFwcGx5U2hh
ZGVyc0ltcGwoZGF0YSwgZHJhd01vZGUpKTsKLQotICAgIHJldHVybiBwcm9ncmFtRDNELT5hcHBs
eVVuaWZvcm1zKGRyYXdNb2RlKTsKLX0KLQogLy8gRm9yIGVhY2ggRGlyZWN0M0Qgc2FtcGxlciBv
ZiBlaXRoZXIgdGhlIHBpeGVsIG9yIHZlcnRleCBzdGFnZSwKIC8vIGxvb2tzIHVwIHRoZSBjb3Jy
ZXNwb25kaW5nIE9wZW5HTCB0ZXh0dXJlIGltYWdlIHVuaXQgYW5kIHRleHR1cmUgdHlwZSwKIC8v
IGFuZCBzZXRzIHRoZSB0ZXh0dXJlIGFuZCBpdHMgYWRkcmVzc2luZy9maWx0ZXJpbmcgc3RhdGUg
KG9yIE5VTEwgd2hlbiBpbmFjdGl2ZSkuCiAvLyBTYW1wbGVyIG1hcHBpbmcgbmVlZHMgdG8gYmUg
dXAtdG8tZGF0ZSBvbiB0aGUgcHJvZ3JhbSBvYmplY3QgYmVmb3JlIHRoaXMgaXMgY2FsbGVkLgot
Z2w6OkVycm9yIFJlbmRlcmVyRDNEOjphcHBseVRleHR1cmVzKGNvbnN0IGdsOjpEYXRhICZkYXRh
LCBnbDo6U2FtcGxlclR5cGUgc2hhZGVyVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlclRleHR1cmVBcnJheSAmZnJhbWVidWZmZXJUZXh0
dXJlcywgc2l6ZV90IGZyYW1lYnVmZmVyVGV4dHVyZUNvdW50KQorZ2w6OkVycm9yIFJlbmRlcmVy
RDNEOjphcHBseVRleHR1cmVzKEdMSW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlNhbXBsZXJUeXBlIHNo
YWRlclR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRnJh
bWVidWZmZXJUZXh0dXJlQXJyYXkgJmZyYW1lYnVmZmVyVGV4dHVyZXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGZyYW1lYnVmZmVyVGV4dHVyZUNvdW50KQog
ewotICAgIFByb2dyYW1EM0QgKnByb2dyYW1EM0QgPSBHZXRJbXBsQXM8UHJvZ3JhbUQzRD4oZGF0
YS5zdGF0ZS0+Z2V0UHJvZ3JhbSgpKTsKKyAgICBjb25zdCBhdXRvICZnbFN0YXRlICAgID0gZGF0
YS5nZXRTdGF0ZSgpOworICAgIGNvbnN0IGF1dG8gJmNhcHMgICAgICAgPSBkYXRhLmdldENhcHMo
KTsKKyAgICBQcm9ncmFtRDNEICpwcm9ncmFtRDNEID0gR2V0SW1wbEFzPFByb2dyYW1EM0Q+KGds
U3RhdGUuZ2V0UHJvZ3JhbSgpKTsKIAogICAgIEFTU0VSVCghcHJvZ3JhbUQzRC0+aXNTYW1wbGVy
TWFwcGluZ0RpcnR5KCkpOwogCkBAIC0zMDMsMTkgKzExMCwxOSBAQAogICAgIGZvciAodW5zaWdu
ZWQgaW50IHNhbXBsZXJJbmRleCA9IDA7IHNhbXBsZXJJbmRleCA8IHNhbXBsZXJSYW5nZTsgc2Ft
cGxlckluZGV4KyspCiAgICAgewogICAgICAgICBHTGVudW0gdGV4dHVyZVR5cGUgPSBwcm9ncmFt
RDNELT5nZXRTYW1wbGVyVGV4dHVyZVR5cGUoc2hhZGVyVHlwZSwgc2FtcGxlckluZGV4KTsKLSAg
ICAgICAgR0xpbnQgdGV4dHVyZVVuaXQgPSBwcm9ncmFtRDNELT5nZXRTYW1wbGVyTWFwcGluZyhz
aGFkZXJUeXBlLCBzYW1wbGVySW5kZXgsICpkYXRhLmNhcHMpOworICAgICAgICBHTGludCB0ZXh0
dXJlVW5pdCAgPSBwcm9ncmFtRDNELT5nZXRTYW1wbGVyTWFwcGluZyhzaGFkZXJUeXBlLCBzYW1w
bGVySW5kZXgsIGNhcHMpOwogICAgICAgICBpZiAodGV4dHVyZVVuaXQgIT0gLTEpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJlID0gZGF0YS5zdGF0ZS0+Z2V0U2Ft
cGxlclRleHR1cmUodGV4dHVyZVVuaXQsIHRleHR1cmVUeXBlKTsKKyAgICAgICAgICAgIGdsOjpU
ZXh0dXJlICp0ZXh0dXJlID0gZ2xTdGF0ZS5nZXRTYW1wbGVyVGV4dHVyZSh0ZXh0dXJlVW5pdCwg
dGV4dHVyZVR5cGUpOwogICAgICAgICAgICAgQVNTRVJUKHRleHR1cmUpOwogCi0gICAgICAgICAg
ICBnbDo6U2FtcGxlciAqc2FtcGxlck9iamVjdCA9IGRhdGEuc3RhdGUtPmdldFNhbXBsZXIodGV4
dHVyZVVuaXQpOworICAgICAgICAgICAgZ2w6OlNhbXBsZXIgKnNhbXBsZXJPYmplY3QgPSBnbFN0
YXRlLmdldFNhbXBsZXIodGV4dHVyZVVuaXQpOwogCiAgICAgICAgICAgICBjb25zdCBnbDo6U2Ft
cGxlclN0YXRlICZzYW1wbGVyU3RhdGUgPQogICAgICAgICAgICAgICAgIHNhbXBsZXJPYmplY3Qg
PyBzYW1wbGVyT2JqZWN0LT5nZXRTYW1wbGVyU3RhdGUoKSA6IHRleHR1cmUtPmdldFNhbXBsZXJT
dGF0ZSgpOwogCiAgICAgICAgICAgICAvLyBUT0RPOiBzdGQ6OmJpbmFyeV9zZWFyY2ggbWF5IGJl
Y29tZSB1bmF2YWlsYWJsZSB1c2luZyBvbGRlciB2ZXJzaW9ucyBvZiBHQ0MKLSAgICAgICAgICAg
IGlmICh0ZXh0dXJlLT5pc1NhbXBsZXJDb21wbGV0ZShzYW1wbGVyU3RhdGUsIGRhdGEpICYmCisg
ICAgICAgICAgICBpZiAodGV4dHVyZS0+Z2V0VGV4dHVyZVN0YXRlKCkuaXNTYW1wbGVyQ29tcGxl
dGUoc2FtcGxlclN0YXRlLCBkYXRhKSAmJgogICAgICAgICAgICAgICAgICFzdGQ6OmJpbmFyeV9z
ZWFyY2goZnJhbWVidWZmZXJUZXh0dXJlcy5iZWdpbigpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZnJhbWVidWZmZXJUZXh0dXJlcy5iZWdpbigpICsgZnJhbWVidWZmZXJU
ZXh0dXJlQ291bnQsIHRleHR1cmUpKQogICAgICAgICAgICAgewpAQCAtMzI1LDcgKzEzMiw3IEBA
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgLy8gVGV4
dHVyZSBpcyBub3Qgc2FtcGxlciBjb21wbGV0ZSBvciBpdCBpcyBpbiB1c2UgYnkgdGhlIGZyYW1l
YnVmZmVyLiAgQmluZCB0aGUgaW5jb21wbGV0ZSB0ZXh0dXJlLgotICAgICAgICAgICAgICAgIGds
OjpUZXh0dXJlICppbmNvbXBsZXRlVGV4dHVyZSA9IGdldEluY29tcGxldGVUZXh0dXJlKHRleHR1
cmVUeXBlKTsKKyAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZSAqaW5jb21wbGV0ZVRleHR1cmUg
PSBnZXRJbmNvbXBsZXRlVGV4dHVyZShpbXBsRmFjdG9yeSwgdGV4dHVyZVR5cGUpOwogCiAgICAg
ICAgICAgICAgICAgQU5HTEVfVFJZKHNldFNhbXBsZXJTdGF0ZShzaGFkZXJUeXBlLCBzYW1wbGVy
SW5kZXgsIGluY29tcGxldGVUZXh0dXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW5jb21wbGV0ZVRleHR1cmUtPmdldFNhbXBsZXJTdGF0ZSgpKSk7CkBAIC0z
NDAsMjYgKzE0NywyOCBAQAogICAgIH0KIAogICAgIC8vIFNldCBhbGwgdGhlIHJlbWFpbmluZyB0
ZXh0dXJlcyB0byBOVUxMCi0gICAgc2l6ZV90IHNhbXBsZXJDb3VudCA9IChzaGFkZXJUeXBlID09
IGdsOjpTQU1QTEVSX1BJWEVMKSA/IGRhdGEuY2Fwcy0+bWF4VGV4dHVyZUltYWdlVW5pdHMKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDogZGF0YS5jYXBzLT5tYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0czsKKyAgICBzaXplX3Qgc2Ft
cGxlckNvdW50ID0gKHNoYWRlclR5cGUgPT0gZ2w6OlNBTVBMRVJfUElYRUwpID8gY2Fwcy5tYXhU
ZXh0dXJlSW1hZ2VVbml0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOiBjYXBzLm1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzOwog
ICAgIGNsZWFyVGV4dHVyZXMoc2hhZGVyVHlwZSwgc2FtcGxlclJhbmdlLCBzYW1wbGVyQ291bnQp
OwogCiAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJvciBSZW5kZXJlckQz
RDo6YXBwbHlUZXh0dXJlcyhjb25zdCBnbDo6RGF0YSAmZGF0YSkKK2dsOjpFcnJvciBSZW5kZXJl
ckQzRDo6YXBwbHlUZXh0dXJlcyhHTEltcGxGYWN0b3J5ICppbXBsRmFjdG9yeSwgY29uc3QgZ2w6
OkNvbnRleHRTdGF0ZSAmZGF0YSkKIHsKICAgICBGcmFtZWJ1ZmZlclRleHR1cmVBcnJheSBmcmFt
ZWJ1ZmZlclRleHR1cmVzOwogICAgIHNpemVfdCBmcmFtZWJ1ZmZlclNlcmlhbENvdW50ID0gZ2V0
Qm91bmRGcmFtZWJ1ZmZlclRleHR1cmVzKGRhdGEsICZmcmFtZWJ1ZmZlclRleHR1cmVzKTsKIAot
ICAgIEFOR0xFX1RSWShhcHBseVRleHR1cmVzKGRhdGEsIGdsOjpTQU1QTEVSX1ZFUlRFWCwgZnJh
bWVidWZmZXJUZXh0dXJlcywgZnJhbWVidWZmZXJTZXJpYWxDb3VudCkpOwotICAgIEFOR0xFX1RS
WShhcHBseVRleHR1cmVzKGRhdGEsIGdsOjpTQU1QTEVSX1BJWEVMLCBmcmFtZWJ1ZmZlclRleHR1
cmVzLCBmcmFtZWJ1ZmZlclNlcmlhbENvdW50KSk7CisgICAgQU5HTEVfVFJZKGFwcGx5VGV4dHVy
ZXMoaW1wbEZhY3RvcnksIGRhdGEsIGdsOjpTQU1QTEVSX1ZFUlRFWCwgZnJhbWVidWZmZXJUZXh0
dXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlclNlcmlhbENvdW50
KSk7CisgICAgQU5HTEVfVFJZKGFwcGx5VGV4dHVyZXMoaW1wbEZhY3RvcnksIGRhdGEsIGdsOjpT
QU1QTEVSX1BJWEVMLCBmcmFtZWJ1ZmZlclRleHR1cmVzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZyYW1lYnVmZmVyU2VyaWFsQ291bnQpKTsKICAgICByZXR1cm4gZ2w6Ok5vRXJyb3Io
KTsKIH0KIAotYm9vbCBSZW5kZXJlckQzRDo6c2tpcERyYXcoY29uc3QgZ2w6OkRhdGEgJmRhdGEs
IEdMZW51bSBkcmF3TW9kZSkKK2Jvb2wgUmVuZGVyZXJEM0Q6OnNraXBEcmF3KGNvbnN0IGdsOjpD
b250ZXh0U3RhdGUgJmRhdGEsIEdMZW51bSBkcmF3TW9kZSkKIHsKLSAgICBjb25zdCBnbDo6U3Rh
dGUgJnN0YXRlID0gKmRhdGEuc3RhdGU7CisgICAgY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSA9IGRh
dGEuZ2V0U3RhdGUoKTsKIAogICAgIGlmIChkcmF3TW9kZSA9PSBHTF9QT0lOVFMpCiAgICAgewpA
QCAtMzg5LDkgKzE5OCw5IEBACiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1nbDo6RXJyb3IgUmVu
ZGVyZXJEM0Q6Om1hcmtUcmFuc2Zvcm1GZWVkYmFja1VzYWdlKGNvbnN0IGdsOjpEYXRhICZkYXRh
KQorZ2w6OkVycm9yIFJlbmRlcmVyRDNEOjptYXJrVHJhbnNmb3JtRmVlZGJhY2tVc2FnZShjb25z
dCBnbDo6Q29udGV4dFN0YXRlICZkYXRhKQogewotICAgIGNvbnN0IGdsOjpUcmFuc2Zvcm1GZWVk
YmFjayAqdHJhbnNmb3JtRmVlZGJhY2sgPSBkYXRhLnN0YXRlLT5nZXRDdXJyZW50VHJhbnNmb3Jt
RmVlZGJhY2soKTsKKyAgICBjb25zdCBnbDo6VHJhbnNmb3JtRmVlZGJhY2sgKnRyYW5zZm9ybUZl
ZWRiYWNrID0gZGF0YS5nZXRTdGF0ZSgpLmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhbnNmb3JtRmVlZGJhY2stPmdldEluZGV4ZWRC
dWZmZXJDb3VudCgpOyBpKyspCiAgICAgewogICAgICAgICBjb25zdCBPZmZzZXRCaW5kaW5nUG9p
bnRlcjxnbDo6QnVmZmVyPiAmYmluZGluZyA9IHRyYW5zZm9ybUZlZWRiYWNrLT5nZXRJbmRleGVk
QnVmZmVyKGkpOwpAQCAtNDA1LDExICsyMTQsMTIgQEAKICAgICByZXR1cm4gZ2w6Ok5vRXJyb3Io
KTsKIH0KIAotc2l6ZV90IFJlbmRlcmVyRDNEOjpnZXRCb3VuZEZyYW1lYnVmZmVyVGV4dHVyZXMo
Y29uc3QgZ2w6OkRhdGEgJmRhdGEsIEZyYW1lYnVmZmVyVGV4dHVyZUFycmF5ICpvdXRUZXh0dXJl
QXJyYXkpCitzaXplX3QgUmVuZGVyZXJEM0Q6OmdldEJvdW5kRnJhbWVidWZmZXJUZXh0dXJlcyhj
b25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJUZXh0dXJlQXJyYXkgKm91dFRleHR1cmVB
cnJheSkKIHsKICAgICBzaXplX3QgdGV4dHVyZUNvdW50ID0gMDsKIAotICAgIGNvbnN0IGdsOjpG
cmFtZWJ1ZmZlciAqZHJhd0ZyYW1lYnVmZmVyID0gZGF0YS5zdGF0ZS0+Z2V0RHJhd0ZyYW1lYnVm
ZmVyKCk7CisgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpkcmF3RnJhbWVidWZmZXIgPSBkYXRh
LmdldFN0YXRlKCkuZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBkcmF3RnJhbWVidWZmZXItPmdldE51bUNvbG9yQnVmZmVycygpOyBpKyspCiAgICAgewog
ICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICphdHRhY2htZW50ID0gZHJh
d0ZyYW1lYnVmZmVyLT5nZXRDb2xvcmJ1ZmZlcihpKTsKQEAgLTQzMCw3ICsyNDAsNyBAQAogICAg
IHJldHVybiB0ZXh0dXJlQ291bnQ7CiB9CiAKLWdsOjpUZXh0dXJlICpSZW5kZXJlckQzRDo6Z2V0
SW5jb21wbGV0ZVRleHR1cmUoR0xlbnVtIHR5cGUpCitnbDo6VGV4dHVyZSAqUmVuZGVyZXJEM0Q6
OmdldEluY29tcGxldGVUZXh0dXJlKEdMSW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LCBHTGVudW0g
dHlwZSkKIHsKICAgICBpZiAobUluY29tcGxldGVUZXh0dXJlcy5maW5kKHR5cGUpID09IG1JbmNv
bXBsZXRlVGV4dHVyZXMuZW5kKCkpCiAgICAgewpAQCAtNDM5LDExICsyNDksMTMgQEAKICAgICAg
ICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgdW5wYWNrKDEsIDApOwogICAgICAgICBjb25z
dCBnbDo6Qm94IGFyZWEoMCwgMCwgMCwgMSwgMSwgMSk7CiAKKyAgICAgICAgLy8gSWYgYSB0ZXh0
dXJlIGlzIGV4dGVybmFsIHVzZSBhIDJEIHRleHR1cmUgZm9yIHRoZSBpbmNvbXBsZXRlIHRleHR1
cmUKKyAgICAgICAgR0xlbnVtIGNyZWF0ZVR5cGUgPSAodHlwZSA9PSBHTF9URVhUVVJFX0VYVEVS
TkFMX09FUykgPyBHTF9URVhUVVJFXzJEIDogdHlwZTsKKwogICAgICAgICAvLyBTa2lwIHRoZSBB
UEkgbGF5ZXIgdG8gYXZvaWQgbmVlZGluZyB0byBwYXNzIHRoZSBDb250ZXh0IGFuZCBtZXNzIHdp
dGggZGlydHkgYml0cy4KICAgICAgICAgZ2w6OlRleHR1cmUgKnQgPQotICAgICAgICAgICAgbmV3
IGdsOjpUZXh0dXJlKGNyZWF0ZVRleHR1cmUodHlwZSksIHN0ZDo6bnVtZXJpY19saW1pdHM8R0x1
aW50Pjo6bWF4KCksIHR5cGUpOwotICAgICAgICB0LT5zZXRTdG9yYWdlKHR5cGUsIDEsIEdMX1JH
QkE4LCBjb2xvclNpemUpOwotCisgICAgICAgICAgICBuZXcgZ2w6OlRleHR1cmUoaW1wbEZhY3Rv
cnksIHN0ZDo6bnVtZXJpY19saW1pdHM8R0x1aW50Pjo6bWF4KCksIGNyZWF0ZVR5cGUpOworICAg
ICAgICB0LT5zZXRTdG9yYWdlKGNyZWF0ZVR5cGUsIDEsIEdMX1JHQkE4LCBjb2xvclNpemUpOwog
ICAgICAgICBpZiAodHlwZSA9PSBHTF9URVhUVVJFX0NVQkVfTUFQKQogICAgICAgICB7CiAgICAg
ICAgICAgICBmb3IgKEdMZW51bSBmYWNlID0gR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9Y
OyBmYWNlIDw9IEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWjsgZmFjZSsrKQpAQCAtNDU0
LDEwICsyNjYsOSBAQAogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAg
ICAgICAgdC0+Z2V0SW1wbGVtZW50YXRpb24oKS0+c2V0U3ViSW1hZ2UodHlwZSwgMCwgYXJlYSwg
R0xfUkdCQTgsIEdMX1VOU0lHTkVEX0JZVEUsIHVucGFjaywKKyAgICAgICAgICAgIHQtPmdldElt
cGxlbWVudGF0aW9uKCktPnNldFN1YkltYWdlKGNyZWF0ZVR5cGUsIDAsIGFyZWEsIEdMX1JHQkE4
LCBHTF9VTlNJR05FRF9CWVRFLCB1bnBhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb2xvcik7CiAgICAgICAgIH0KLQogICAgICAgICBtSW5jb21w
bGV0ZVRleHR1cmVzW3R5cGVdLnNldCh0KTsKICAgICB9CiAKQEAgLTQ2NCwxNCArMjc1LDI5IEBA
CiAgICAgcmV0dXJuIG1JbmNvbXBsZXRlVGV4dHVyZXNbdHlwZV0uZ2V0KCk7CiB9CiAKLWJvb2wg
UmVuZGVyZXJEM0Q6OmlzRGV2aWNlTG9zdCgpIGNvbnN0CitHTGVudW0gUmVuZGVyZXJEM0Q6Omdl
dFJlc2V0U3RhdHVzKCkKIHsKLSAgICByZXR1cm4gbURldmljZUxvc3Q7CisgICAgaWYgKCFtRGV2
aWNlTG9zdCkKKyAgICB7CisgICAgICAgIGlmICh0ZXN0RGV2aWNlTG9zdCgpKQorICAgICAgICB7
CisgICAgICAgICAgICBtRGV2aWNlTG9zdCA9IHRydWU7CisgICAgICAgICAgICBub3RpZnlEZXZp
Y2VMb3N0KCk7CisgICAgICAgICAgICByZXR1cm4gR0xfVU5LTk9XTl9DT05URVhUX1JFU0VUX0VY
VDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gR0xfTk9fRVJST1I7CisgICAgfQorCisgICAg
aWYgKHRlc3REZXZpY2VSZXNldHRhYmxlKCkpCisgICAgeworICAgICAgICByZXR1cm4gR0xfTk9f
RVJST1I7CisgICAgfQorCisgICAgcmV0dXJuIEdMX1VOS05PV05fQ09OVEVYVF9SRVNFVF9FWFQ7
CiB9CiAKIHZvaWQgUmVuZGVyZXJEM0Q6Om5vdGlmeURldmljZUxvc3QoKQogewotICAgIG1EZXZp
Y2VMb3N0ID0gdHJ1ZTsKICAgICBtRGlzcGxheS0+bm90aWZ5RGV2aWNlTG9zdCgpOwogfQogCkBA
IC00ODksNjMgKzMxNSw2IEBACiAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCIiKTsKIH0KIAotZ2w6
OkVycm9yIFJlbmRlcmVyRDNEOjpnZXRTY3JhdGNoTWVtb3J5QnVmZmVyKHNpemVfdCByZXF1ZXN0
ZWRTaXplLCBNZW1vcnlCdWZmZXIgKipidWZmZXJPdXQpCi17Ci0gICAgaWYgKG1TY3JhdGNoTWVt
b3J5QnVmZmVyLnNpemUoKSA9PSByZXF1ZXN0ZWRTaXplKQotICAgIHsKLSAgICAgICAgbVNjcmF0
Y2hNZW1vcnlCdWZmZXJSZXNldENvdW50ZXIgPSBTY3JhdGNoTWVtb3J5QnVmZmVyTGlmZXRpbWU7
Ci0gICAgICAgICpidWZmZXJPdXQgPSAmbVNjcmF0Y2hNZW1vcnlCdWZmZXI7Ci0gICAgICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwotICAgIH0KLQotICAgIGlmIChtU2NyYXRjaE1l
bW9yeUJ1ZmZlci5zaXplKCkgPiByZXF1ZXN0ZWRTaXplKQotICAgIHsKLSAgICAgICAgbVNjcmF0
Y2hNZW1vcnlCdWZmZXJSZXNldENvdW50ZXItLTsKLSAgICB9Ci0KLSAgICBpZiAobVNjcmF0Y2hN
ZW1vcnlCdWZmZXJSZXNldENvdW50ZXIgPD0gMCB8fCBtU2NyYXRjaE1lbW9yeUJ1ZmZlci5zaXpl
KCkgPCByZXF1ZXN0ZWRTaXplKQotICAgIHsKLSAgICAgICAgbVNjcmF0Y2hNZW1vcnlCdWZmZXIu
cmVzaXplKDApOwotICAgICAgICBpZiAoIW1TY3JhdGNoTWVtb3J5QnVmZmVyLnJlc2l6ZShyZXF1
ZXN0ZWRTaXplKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9P
VVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGFsbG9jYXRlIGludGVybmFsIGJ1ZmZlci4iKTsKLSAg
ICAgICAgfQotICAgICAgICBtU2NyYXRjaE1lbW9yeUJ1ZmZlclJlc2V0Q291bnRlciA9IFNjcmF0
Y2hNZW1vcnlCdWZmZXJMaWZldGltZTsKLSAgICB9Ci0KLSAgICBBU1NFUlQobVNjcmF0Y2hNZW1v
cnlCdWZmZXIuc2l6ZSgpID49IHJlcXVlc3RlZFNpemUpOwotCi0gICAgKmJ1ZmZlck91dCA9ICZt
U2NyYXRjaE1lbW9yeUJ1ZmZlcjsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsK
LX0KLQotdm9pZCBSZW5kZXJlckQzRDo6aW5zZXJ0RXZlbnRNYXJrZXIoR0xzaXplaSBsZW5ndGgs
IGNvbnN0IGNoYXIgKm1hcmtlcikKLXsKLSAgICBzdGQ6OnZlY3Rvcjx3Y2hhcl90PiB3Y3N0cmlu
ZyAobGVuZ3RoICsgMSk7Ci0gICAgc2l6ZV90IGNvbnZlcnRlZENoYXJzID0gMDsKLSAgICBlcnJu
b190IGVyciA9IG1ic3Rvd2NzX3MoJmNvbnZlcnRlZENoYXJzLCB3Y3N0cmluZy5kYXRhKCksIGxl
bmd0aCArIDEsIG1hcmtlciwgX1RSVU5DQVRFKTsKLSAgICBpZiAoZXJyID09IDApCi0gICAgewot
ICAgICAgICBnZXRBbm5vdGF0b3IoKS0+c2V0TWFya2VyKHdjc3RyaW5nLmRhdGEoKSk7Ci0gICAg
fQotfQotCi12b2lkIFJlbmRlcmVyRDNEOjpwdXNoR3JvdXBNYXJrZXIoR0xzaXplaSBsZW5ndGgs
IGNvbnN0IGNoYXIgKm1hcmtlcikKLXsKLSAgICBzdGQ6OnZlY3Rvcjx3Y2hhcl90PiB3Y3N0cmlu
ZyhsZW5ndGggKyAxKTsKLSAgICBzaXplX3QgY29udmVydGVkQ2hhcnMgPSAwOwotICAgIGVycm5v
X3QgZXJyID0gbWJzdG93Y3NfcygmY29udmVydGVkQ2hhcnMsIHdjc3RyaW5nLmRhdGEoKSwgbGVu
Z3RoICsgMSwgbWFya2VyLCBfVFJVTkNBVEUpOwotICAgIGlmIChlcnIgPT0gMCkKLSAgICB7Ci0g
ICAgICAgIGdldEFubm90YXRvcigpLT5iZWdpbkV2ZW50KHdjc3RyaW5nLmRhdGEoKSk7Ci0gICAg
fQotfQotCi12b2lkIFJlbmRlcmVyRDNEOjpwb3BHcm91cE1hcmtlcigpCi17Ci0gICAgZ2V0QW5u
b3RhdG9yKCktPmVuZEV2ZW50KCk7Ci19Ci0KIHZvaWQgUmVuZGVyZXJEM0Q6OnNldEdQVURpc2pv
aW50KCkKIHsKICAgICBtRGlzam9pbnQgPSB0cnVlOwpAQCAtNTY3LDIwICszMzYsMzcgQEAKICAg
ICByZXR1cm4gMDsKIH0KIAotdm9pZCBSZW5kZXJlckQzRDo6b25NYWtlQ3VycmVudChjb25zdCBn
bDo6RGF0YSAmZGF0YSkKK3ZvaWQgUmVuZGVyZXJEM0Q6OmVuc3VyZUNhcHNJbml0aWFsaXplZCgp
IGNvbnN0CiB7CisgICAgaWYgKCFtQ2Fwc0luaXRpYWxpemVkKQorICAgIHsKKyAgICAgICAgZ2Vu
ZXJhdGVDYXBzKCZtTmF0aXZlQ2FwcywgJm1OYXRpdmVUZXh0dXJlQ2FwcywgJm1OYXRpdmVFeHRl
bnNpb25zLCAmbU5hdGl2ZUxpbWl0YXRpb25zKTsKKyAgICAgICAgbUNhcHNJbml0aWFsaXplZCA9
IHRydWU7CisgICAgfQogfQogCi12b2lkIFJlbmRlcmVyRDNEOjppbml0aWFsaXplRGVidWdBbm5v
dGF0b3IoKQorY29uc3QgZ2w6OkNhcHMgJlJlbmRlcmVyRDNEOjpnZXROYXRpdmVDYXBzKCkgY29u
c3QKIHsKLSAgICBjcmVhdGVBbm5vdGF0b3IoKTsKLSAgICBBU1NFUlQobUFubm90YXRvcik7Ci0g
ICAgZ2w6OkluaXRpYWxpemVEZWJ1Z0Fubm90YXRpb25zKG1Bbm5vdGF0b3IpOworICAgIGVuc3Vy
ZUNhcHNJbml0aWFsaXplZCgpOworICAgIHJldHVybiBtTmF0aXZlQ2FwczsKIH0KIAotZ2w6OkRl
YnVnQW5ub3RhdG9yICpSZW5kZXJlckQzRDo6Z2V0QW5ub3RhdG9yKCkKK2NvbnN0IGdsOjpUZXh0
dXJlQ2Fwc01hcCAmUmVuZGVyZXJEM0Q6OmdldE5hdGl2ZVRleHR1cmVDYXBzKCkgY29uc3QKIHsK
LSAgICBBU1NFUlQobUFubm90YXRvcik7Ci0gICAgcmV0dXJuIG1Bbm5vdGF0b3I7CisgICAgZW5z
dXJlQ2Fwc0luaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1OYXRpdmVUZXh0dXJlQ2FwczsKIH0K
KworY29uc3QgZ2w6OkV4dGVuc2lvbnMgJlJlbmRlcmVyRDNEOjpnZXROYXRpdmVFeHRlbnNpb25z
KCkgY29uc3QKK3sKKyAgICBlbnN1cmVDYXBzSW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbU5h
dGl2ZUV4dGVuc2lvbnM7Cit9CisKK2NvbnN0IGdsOjpMaW1pdGF0aW9ucyAmUmVuZGVyZXJEM0Q6
OmdldE5hdGl2ZUxpbWl0YXRpb25zKCkgY29uc3QKK3sKKyAgICBlbnN1cmVDYXBzSW5pdGlhbGl6
ZWQoKTsKKyAgICByZXR1cm4gbU5hdGl2ZUxpbWl0YXRpb25zOworfQorCiB9ICAvLyBuYW1lc3Bh
Y2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvUmVuZGVyZXJEM0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlcmVyRDNELmgJKHJldmlzaW9uIDIwODAy
MSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
UmVuZGVyZXJEM0QuaAkod29ya2luZyBjb3B5KQpAQCAtMTEsMTQgKzExLDEzIEBACiAKICNpbmNs
dWRlICJjb21tb24vZGVidWcuaCIKICNpbmNsdWRlICJjb21tb24vTWVtb3J5QnVmZmVyLmgiCi0j
aW5jbHVkZSAibGliQU5HTEUvRGF0YS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHRTdGF0
ZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0RldmljZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL2Zv
cm1hdHV0aWxzLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvUmVuZGVyZXIuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvVmVydGV4RGF0YU1hbmFnZXIuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZm9ybWF0dXRpbHNEM0QuaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9kM2QvV29ya2Fyb3VuZHNEM0QuaCIKLSNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvTmF0aXZlV2luZG93LmgiCisjaW5jbHVkZSAibGliQU5HTEUv
VmVyc2lvbi5oIgogCiAvL0ZJWE1FKGptYWRpbGwpOiBzdGQ6OmFycmF5IGlzIGN1cnJlbnRseSBw
cm9oaWJpdGVkIGJ5IENocm9taXVtIHN0eWxlIGd1aWRlCiAjaW5jbHVkZSA8YXJyYXk+CkBAIC0z
MCw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBnbAogewotY2xhc3MgRGVidWdBbm5vdGF0b3I7Citj
bGFzcyBGcmFtZWJ1ZmZlclN0YXRlOwogY2xhc3MgSW5mb0xvZzsKIGNsYXNzIFRleHR1cmU7CiBz
dHJ1Y3QgTGlua2VkVmFyeWluZzsKQEAgLTM4LDE3ICszNywyMSBAQAogCiBuYW1lc3BhY2UgcngK
IHsKK2NsYXNzIENvbnRleHRJbXBsOwogc3RydWN0IEQzRFVuaWZvcm07CiBzdHJ1Y3QgRDNEVmFy
eWluZzsKIGNsYXNzIERldmljZUQzRDsKIGNsYXNzIEVHTEltYWdlRDNEOworY2xhc3MgRnJhbWVi
dWZmZXJJbXBsOwogY2xhc3MgSW1hZ2VEM0Q7CiBjbGFzcyBJbmRleEJ1ZmZlcjsKK2NsYXNzIE5h
dGl2ZVdpbmRvd0QzRDsKIGNsYXNzIFByb2dyYW1EM0Q7CiBjbGFzcyBSZW5kZXJUYXJnZXREM0Q7
CiBjbGFzcyBTaGFkZXJFeGVjdXRhYmxlRDNEOwogY2xhc3MgU3dhcENoYWluRDNEOwogY2xhc3Mg
VGV4dHVyZVN0b3JhZ2U7CitzdHJ1Y3QgVHJhbnNsYXRlZEluZGV4RGF0YTsKIGNsYXNzIFVuaWZv
cm1TdG9yYWdlRDNEOwogY2xhc3MgVmVydGV4QnVmZmVyOwogCkBAIC03Niw3ICs3OSw3IEBACiB9
OwogCiAvLyBVc2VmdWwgZm9yIHVuaXQgdGVzdGluZwotY2xhc3MgQnVmZmVyRmFjdG9yeUQzRAor
Y2xhc3MgQnVmZmVyRmFjdG9yeUQzRCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6
CiAgICAgQnVmZmVyRmFjdG9yeUQzRCgpIHt9CkBAIC05Niw3ICs5OSw3IEBACiAKIHVzaW5nIEF0
dHJpYkluZGV4QXJyYXkgPSBzdGQ6OmFycmF5PGludCwgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUz47
CiAKLWNsYXNzIFJlbmRlcmVyRDNEIDogcHVibGljIFJlbmRlcmVyLCBwdWJsaWMgQnVmZmVyRmFj
dG9yeUQzRAorY2xhc3MgUmVuZGVyZXJEM0QgOiBwdWJsaWMgQnVmZmVyRmFjdG9yeUQzRAogewog
ICBwdWJsaWM6CiAgICAgZXhwbGljaXQgUmVuZGVyZXJEM0QoZWdsOjpEaXNwbGF5ICpkaXNwbGF5
KTsKQEAgLTEwNCw0MyArMTA3LDEzIEBACiAKICAgICB2aXJ0dWFsIGVnbDo6RXJyb3IgaW5pdGlh
bGl6ZSgpID0gMDsKIAotICAgIHZpcnR1YWwgZWdsOjpDb25maWdTZXQgZ2VuZXJhdGVDb25maWdz
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgZWdsOjpDb25maWdTZXQgZ2VuZXJhdGVDb25maWdz
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZURpc3BsYXlFeHRlbnNpb25zKGVnbDo6
RGlzcGxheUV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMpIGNvbnN0ID0gMDsKIAotICAgIGdsOjpF
cnJvciBkcmF3QXJyYXlzKGNvbnN0IGdsOjpEYXRhICZkYXRhLCBHTGVudW0gbW9kZSwgR0xpbnQg
Zmlyc3QsIEdMc2l6ZWkgY291bnQpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBkcmF3QXJyYXlz
SW5zdGFuY2VkKGNvbnN0IGdsOjpEYXRhICZkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBtb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGZpcnN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5j
ZUNvdW50KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIENvbnRleHRJbXBsICpjcmVhdGVDb250ZXh0
KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJnN0YXRlKSA9IDA7CiAKLSAgICBnbDo6RXJyb3IgZHJh
d0VsZW1lbnRzKGNvbnN0IGdsOjpEYXRhICZkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIG1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkgb3ZlcnJpZGU7Ci0gICAg
Z2w6OkVycm9yIGRyYXdFbGVtZW50c0luc3RhbmNlZChjb25zdCBnbDo6RGF0YSAmZGF0YSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkgb3ZlcnJp
ZGU7Ci0gICAgZ2w6OkVycm9yIGRyYXdSYW5nZUVsZW1lbnRzKGNvbnN0IGdsOjpEYXRhICZkYXRh
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgZW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRp
Y2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5n
ZSAmaW5kZXhSYW5nZSkgb3ZlcnJpZGU7CisgICAgc3RkOjpzdHJpbmcgZ2V0VmVuZG9yU3RyaW5n
KCkgY29uc3Q7CiAKLSAgICBib29sIGlzRGV2aWNlTG9zdCgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHN0ZDo6c3RyaW5nIGdldFZlbmRvclN0cmluZygpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgU2Ft
cGxlckltcGwgKmNyZWF0ZVNhbXBsZXIoKSBvdmVycmlkZTsKLQogICAgIHZpcnR1YWwgaW50IGdl
dE1pbm9yU2hhZGVyTW9kZWwoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBzdGQ6OnN0cmluZyBn
ZXRTaGFkZXJNb2RlbFN1ZmZpeCgpIGNvbnN0ID0gMDsKIApAQCAtMTQ3LDQzICsxMjAsMjggQEAK
ICAgICAvLyBEaXJlY3QzRCBTcGVjaWZpYyBtZXRob2RzCiAgICAgdmlydHVhbCBEZXZpY2VJZGVu
dGlmaWVyIGdldEFkYXB0ZXJJZGVudGlmaWVyKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBT
d2FwQ2hhaW5EM0QgKmNyZWF0ZVN3YXBDaGFpbihOYXRpdmVXaW5kb3cgbmF0aXZlV2luZG93LAor
ICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkTmF0aXZlV2luZG93KEVHTE5hdGl2ZVdpbmRvd1R5cGUg
d2luZG93KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBOYXRpdmVXaW5kb3dEM0QgKmNyZWF0ZU5h
dGl2ZVdpbmRvdyhFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBl
Z2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBTd2Fw
Q2hhaW5EM0QgKmNyZWF0ZVN3YXBDaGFpbihOYXRpdmVXaW5kb3dEM0QgKm5hdGl2ZVdpbmRvdywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRSBzaGFyZUhh
bmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBi
YWNrQnVmZmVyRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGRlcHRoQnVmZmVyRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRUdMaW50IG9yaWVudGF0aW9uKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGds
OjpFcnJvciBnZW5lcmF0ZVN3aXp6bGUoZ2w6OlRleHR1cmUgKnRleHR1cmUpID0gMDsKICAgICB2
aXJ0dWFsIGdsOjpFcnJvciBzZXRTYW1wbGVyU3RhdGUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsIGlu
dCBpbmRleCwgZ2w6OlRleHR1cmUgKnRleHR1cmUsIGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJnNh
bXBsZXIpID0gMDsKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBzZXRUZXh0dXJlKGdsOjpTYW1wbGVy
VHlwZSB0eXBlLCBpbnQgaW5kZXgsIGdsOjpUZXh0dXJlICp0ZXh0dXJlKSA9IDA7CiAKLSAgICB2
aXJ0dWFsIGdsOjpFcnJvciBzZXRVbmlmb3JtQnVmZmVycyhjb25zdCBnbDo6RGF0YSAmZGF0YSwK
KyAgICB2aXJ0dWFsIGdsOjpFcnJvciBzZXRVbmlmb3JtQnVmZmVycyhjb25zdCBnbDo6Q29udGV4
dFN0YXRlICZkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6dmVjdG9yPEdMaW50PiAmdmVydGV4VW5pZm9ybUJ1ZmZlcnMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8R0xpbnQ+ICZm
cmFnbWVudFVuaWZvcm1CdWZmZXJzKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciB1cGRh
dGVTdGF0ZShjb25zdCBnbDo6RGF0YSAmZGF0YSwgR0xlbnVtIGRyYXdNb2RlKSA9IDA7Ci0KLSAg
ICB2aXJ0dWFsIGdsOjpFcnJvciBhcHBseVJlbmRlclRhcmdldChjb25zdCBnbDo6RnJhbWVidWZm
ZXIgKmZyYW1lQnVmZmVyKSA9IDA7CiAgICAgdmlydHVhbCBnbDo6RXJyb3IgYXBwbHlVbmlmb3Jt
cyhjb25zdCBQcm9ncmFtRDNEICZwcm9ncmFtRDNELAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGRyYXdNb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8RDNEVW5pZm9ybSAqPiAmdW5pZm9ybUFycmF5KSA9
IDA7Ci0gICAgdmlydHVhbCBib29sIGFwcGx5UHJpbWl0aXZlVHlwZShHTGVudW0gcHJpbWl0aXZl
VHlwZSwgR0xzaXplaSBlbGVtZW50Q291bnQsIGJvb2wgdXNlc1BvaW50U2l6ZSkgPSAwOwotICAg
IHZpcnR1YWwgZ2w6OkVycm9yIGFwcGx5VmVydGV4QnVmZmVyKGNvbnN0IGdsOjpTdGF0ZSAmc3Rh
dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZmlyc3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGVkSW5kZXhE
YXRhICppbmRleEluZm8pID0gMDsKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBhcHBseUluZGV4QnVm
ZmVyKGNvbnN0IGdsOjpEYXRhICZkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBtb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUcmFuc2xhdGVkSW5kZXhEYXRhICppbmRleEluZm8pID0gMDsKLSAgICB2aXJ0dWFsIGds
OjpFcnJvciBhcHBseVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVycyhjb25zdCBnbDo6U3RhdGUgJnN0
YXRlKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRSZXNlcnZlZFZlcnRleFVu
aWZvcm1WZWN0b3JzKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFJl
c2VydmVkRnJhZ21lbnRVbmlmb3JtVmVjdG9ycygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHVu
c2lnbmVkIGludCBnZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1CdWZmZXJzKCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFJlc2VydmVkRnJhZ21lbnRVbmlmb3JtQnVmZmVy
cygpIGNvbnN0ID0gMDsKIApAQCAtMjAxLDYgKzE1OSwyMSBAQAogICAgIHZpcnR1YWwgZ2w6OkVy
cm9yIGNvcHlJbWFnZTJEQXJyYXkoY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwg
Y29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlUmVjdCwgR0xlbnVtIGRlc3RGb3JtYXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0
T2Zmc2V0LCBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwgR0xpbnQgbGV2ZWwpID0gMDsKIAorICAg
IHZpcnR1YWwgZ2w6OkVycm9yIGNvcHlUZXh0dXJlKGNvbnN0IGdsOjpUZXh0dXJlICpzb3VyY2Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc291cmNlTGV2ZWwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291
cmNlUmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdEZv
cm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0
ICZkZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVT
dG9yYWdlICpzdG9yYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGRlc3RMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFj
a0ZsaXBZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrUHJl
bXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVu
cGFja1VubXVsdGlwbHlBbHBoYSkgPSAwOworICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNvcHlDb21w
cmVzc2VkVGV4dHVyZShjb25zdCBnbDo6VGV4dHVyZSAqc291cmNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzb3VyY2VMZXZlbCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVN0b3JhZ2UgKnN0b3Jh
Z2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRl
c3RMZXZlbCkgPSAwOworCiAgICAgLy8gUmVuZGVyVGFyZ2V0IGNyZWF0aW9uCiAgICAgdmlydHVh
bCBnbDo6RXJyb3IgY3JlYXRlUmVuZGVyVGFyZ2V0KGludCB3aWR0aCwgaW50IGhlaWdodCwgR0xl
bnVtIGZvcm1hdCwgR0xzaXplaSBzYW1wbGVzLCBSZW5kZXJUYXJnZXREM0QgKipvdXRSVCkgPSAw
OwogICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNyZWF0ZVJlbmRlclRhcmdldENvcHkoUmVuZGVyVGFy
Z2V0RDNEICpzb3VyY2UsIFJlbmRlclRhcmdldEQzRCAqKm91dFJUKSA9IDA7CkBAIC0yMjQsMTAg
KzE5NywxNCBAQAogICAgIC8vIEltYWdlIG9wZXJhdGlvbnMKICAgICB2aXJ0dWFsIEltYWdlRDNE
ICpjcmVhdGVJbWFnZSgpID0gMDsKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBnZW5lcmF0ZU1pcG1h
cChJbWFnZUQzRCAqZGVzdCwgSW1hZ2VEM0QgKnNvdXJjZSkgPSAwOwotICAgIHZpcnR1YWwgZ2w6
OkVycm9yIGdlbmVyYXRlTWlwbWFwc1VzaW5nRDNEKFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpU
ZXh0dXJlU3RhdGUgJnRleHR1cmVTdGF0ZSkgPSAwOworICAgIHZpcnR1YWwgZ2w6OkVycm9yIGdl
bmVyYXRlTWlwbWFwVXNpbmdEM0QoVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VGV4dHVyZVN0YXRl
ICZ0ZXh0dXJlU3RhdGUpID0gMDsKICAgICB2aXJ0dWFsIFRleHR1cmVTdG9yYWdlICpjcmVhdGVU
ZXh0dXJlU3RvcmFnZTJEKFN3YXBDaGFpbkQzRCAqc3dhcENoYWluKSA9IDA7Ci0gICAgdmlydHVh
bCBUZXh0dXJlU3RvcmFnZSAqY3JlYXRlVGV4dHVyZVN0b3JhZ2VFR0xJbWFnZShFR0xJbWFnZUQz
RCAqZWdsSW1hZ2UpID0gMDsKKyAgICB2aXJ0dWFsIFRleHR1cmVTdG9yYWdlICpjcmVhdGVUZXh0
dXJlU3RvcmFnZUVHTEltYWdlKEVHTEltYWdlRDNEICplZ2xJbWFnZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlclRhcmdldEQz
RCAqcmVuZGVyVGFyZ2V0RDNEKSA9IDA7CisgICAgdmlydHVhbCBUZXh0dXJlU3RvcmFnZSAqY3Jl
YXRlVGV4dHVyZVN0b3JhZ2VFeHRlcm5hbCgKKyAgICAgICAgZWdsOjpTdHJlYW0gKnN0cmVhbSwK
KyAgICAgICAgY29uc3QgZWdsOjpTdHJlYW06OkdMVGV4dHVyZURlc2NyaXB0aW9uICZkZXNjKSA9
IDA7CiAgICAgdmlydHVhbCBUZXh0dXJlU3RvcmFnZSAqY3JlYXRlVGV4dHVyZVN0b3JhZ2UyRChH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIGJvb2wgcmVuZGVyVGFyZ2V0LCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCwgaW50IGxldmVscywgYm9vbCBoaW50TGV2ZWxaZXJvT25seSkgPSAwOwog
ICAgIHZpcnR1YWwgVGV4dHVyZVN0b3JhZ2UgKmNyZWF0ZVRleHR1cmVTdG9yYWdlQ3ViZShHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIGJvb2wgcmVuZGVyVGFyZ2V0LCBpbnQgc2l6ZSwgaW50IGxldmVs
cywgYm9vbCBoaW50TGV2ZWxaZXJvT25seSkgPSAwOwogICAgIHZpcnR1YWwgVGV4dHVyZVN0b3Jh
Z2UgKmNyZWF0ZVRleHR1cmVTdG9yYWdlM0QoR0xlbnVtIGludGVybmFsZm9ybWF0LCBib29sIHJl
bmRlclRhcmdldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgs
IGludCBsZXZlbHMpID0gMDsKQEAgLTIzOSwyNSArMjE2LDIwIEBACiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RpbmF0aW9uRm9ybWF0LCBH
TGVudW0gc291cmNlUGl4ZWxzVHlwZSwgY29uc3QgZ2w6OkJveCAmZGVzdEFyZWEpID0gMDsKIAog
ICAgIC8vIERldmljZSBsb3N0Ci0gICAgdm9pZCBub3RpZnlEZXZpY2VMb3N0KCkgb3ZlcnJpZGU7
CisgICAgR0xlbnVtIGdldFJlc2V0U3RhdHVzKCk7CisgICAgdm9pZCBub3RpZnlEZXZpY2VMb3N0
KCk7CiAgICAgdmlydHVhbCBib29sIHJlc2V0RGV2aWNlKCkgPSAwOworICAgIHZpcnR1YWwgYm9v
bCB0ZXN0RGV2aWNlTG9zdCgpICAgICAgID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgdGVzdERldmlj
ZVJlc2V0dGFibGUoKSA9IDA7CisKICAgICB2aXJ0dWFsIFJlbmRlcmVyQ2xhc3MgZ2V0UmVuZGVy
ZXJDbGFzcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgKmdldEQzRERldmljZSgpID0g
MDsKIAotICAgIGdsOjpFcnJvciBnZXRTY3JhdGNoTWVtb3J5QnVmZmVyKHNpemVfdCByZXF1ZXN0
ZWRTaXplLCBNZW1vcnlCdWZmZXIgKipidWZmZXJPdXQpOwotCi0gICAgLy8gRVhUX2RlYnVnX21h
cmtlcgotICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNo
YXIgKm1hcmtlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwdXNoR3JvdXBNYXJrZXIoR0xzaXplaSBs
ZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwb3BHcm91cE1h
cmtlcigpIG92ZXJyaWRlOwotCiAgICAgdm9pZCBzZXRHUFVEaXNqb2ludCgpOwogCi0gICAgR0xp
bnQgZ2V0R1BVRGlzam9pbnQoKSBvdmVycmlkZTsKLSAgICBHTGludDY0IGdldFRpbWVzdGFtcCgp
IG92ZXJyaWRlOworICAgIEdMaW50IGdldEdQVURpc2pvaW50KCk7CisgICAgR0xpbnQ2NCBnZXRU
aW1lc3RhbXAoKTsKIAotICAgIHZvaWQgb25NYWtlQ3VycmVudChjb25zdCBnbDo6RGF0YSAmZGF0
YSkgb3ZlcnJpZGU7Ci0KICAgICAvLyBJbiBEM0QxMSwgZmFzdGVyIHRoYW4gY2FsbGluZyBzZXRU
ZXh0dXJlIGEgamlsbGlvbiB0aW1lcwogICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNsZWFyVGV4dHVy
ZXMoZ2w6OlNhbXBsZXJUeXBlIHNhbXBsZXJUeXBlLCBzaXplX3QgcmFuZ2VTdGFydCwgc2l6ZV90
IHJhbmdlRW5kKSA9IDA7CiAKQEAgLTI2Niw4NyArMjM4LDcyIEBACiAgICAgYm9vbCBwcmVzZW50
UGF0aEZhc3RFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbVByZXNlbnRQYXRoRmFzdEVuYWJsZWQ7
IH0KIAogICAgIC8vIFN0cmVhbSBjcmVhdGlvbgotICAgIHZpcnR1YWwgU3RyZWFtSW1wbCAqY3Jl
YXRlU3RyZWFtKGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSA9IDA7CisgICAgdmly
dHVhbCBTdHJlYW1Qcm9kdWNlckltcGwgKmNyZWF0ZVN0cmVhbVByb2R1Y2VyRDNEVGV4dHVyZU5W
MTIoCisgICAgICAgIGVnbDo6U3RyZWFtOjpDb25zdW1lclR5cGUgY29uc3VtZXJUeXBlLAorICAg
ICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgPSAwOwogCisgICAgY29uc3Qg
Z2w6OkNhcHMgJmdldE5hdGl2ZUNhcHMoKSBjb25zdDsKKyAgICBjb25zdCBnbDo6VGV4dHVyZUNh
cHNNYXAgJmdldE5hdGl2ZVRleHR1cmVDYXBzKCkgY29uc3Q7CisgICAgY29uc3QgZ2w6OkV4dGVu
c2lvbnMgJmdldE5hdGl2ZUV4dGVuc2lvbnMoKSBjb25zdDsKKyAgICBjb25zdCBnbDo6TGltaXRh
dGlvbnMgJmdldE5hdGl2ZUxpbWl0YXRpb25zKCkgY29uc3Q7CisKKyAgICAvLyBOZWNlc3Nhcnkg
aGFjayBmb3IgZGVmYXVsdCBmcmFtZWJ1ZmZlcnMgaW4gRDNELgorICAgIHZpcnR1YWwgRnJhbWVi
dWZmZXJJbXBsICpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVy
U3RhdGUgJnN0YXRlKSA9IDA7CisKKyAgICB2aXJ0dWFsIGdsOjpWZXJzaW9uIGdldE1heFN1cHBv
cnRlZEVTVmVyc2lvbigpIGNvbnN0ID0gMDsKKwogICBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBi
b29sIGdldExVSUQoTFVJRCAqYWRhcHRlckx1aWQpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGds
OjpFcnJvciBhcHBseVNoYWRlcnNJbXBsKGNvbnN0IGdsOjpEYXRhICZkYXRhLCBHTGVudW0gZHJh
d01vZGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVDYXBzKGdsOjpDYXBzICpvdXRD
YXBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlRleHR1cmVDYXBzTWFwICpv
dXRUZXh0dXJlQ2FwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpFeHRlbnNp
b25zICpvdXRFeHRlbnNpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6Okxp
bWl0YXRpb25zICpvdXRMaW1pdGF0aW9ucykgY29uc3QgPSAwOwogCiAgICAgdm9pZCBjbGVhbnVw
KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlQW5ub3RhdG9yKCkgPSAwOwotCi0gICAgc3Rh
dGljIHVuc2lnbmVkIGludCBHZXRCbGVuZFNhbXBsZU1hc2soY29uc3QgZ2w6OkRhdGEgJmRhdGEs
IGludCBzYW1wbGVzKTsKKyAgICBzdGF0aWMgdW5zaWduZWQgaW50IEdldEJsZW5kU2FtcGxlTWFz
ayhjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLCBpbnQgc2FtcGxlcyk7CiAgICAgLy8gZGly
dHlQb2ludGVyIGlzIGEgc3BlY2lhbCB2YWx1ZSB0aGF0IHdpbGwgbWFrZSB0aGUgY29tcGFyaXNv
biB3aXRoIGFueSB2YWxpZCBwb2ludGVyIGZhaWwgYW5kIGZvcmNlIHRoZSByZW5kZXJlciB0byBy
ZS1hcHBseSB0aGUgc3RhdGUuCiAKKyAgICBnbDo6RXJyb3IgYXBwbHlUZXh0dXJlcyhHTEltcGxG
YWN0b3J5ICppbXBsRmFjdG9yeSwgY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSk7CisgICAg
Ym9vbCBza2lwRHJhdyhjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLCBHTGVudW0gZHJhd01v
ZGUpOworICAgIGdsOjpFcnJvciBtYXJrVHJhbnNmb3JtRmVlZGJhY2tVc2FnZShjb25zdCBnbDo6
Q29udGV4dFN0YXRlICZkYXRhKTsKKwogICAgIGVnbDo6RGlzcGxheSAqbURpc3BsYXk7Ci0gICAg
Ym9vbCBtRGV2aWNlTG9zdDsKIAotICAgIHZvaWQgaW5pdGlhbGl6ZURlYnVnQW5ub3RhdG9yKCk7
Ci0gICAgZ2w6OkRlYnVnQW5ub3RhdG9yICptQW5ub3RhdG9yOwotCiAgICAgYm9vbCBtUHJlc2Vu
dFBhdGhGYXN0RW5hYmxlZDsKIAogICBwcml2YXRlOgotICAgIGdsOjpFcnJvciBnZW5lcmljRHJh
d0FycmF5cyhjb25zdCBnbDo6RGF0YSAmZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIG1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGZpcnN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcyk7CisgICAg
dm9pZCBlbnN1cmVDYXBzSW5pdGlhbGl6ZWQoKSBjb25zdDsKIAotICAgIGdsOjpFcnJvciBnZW5l
cmljRHJhd0VsZW1lbnRzKGNvbnN0IGdsOjpEYXRhICZkYXRhLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2
b2lkICppbmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
aW5zdGFuY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpJ
bmRleFJhbmdlICZpbmRleFJhbmdlKTsKLQotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGRyYXdBcnJh
eXNJbXBsKGNvbnN0IGdsOjpEYXRhICZkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBtb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHN0YXJ0VmVydGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBpbnN0YW5jZXMpID0gMDsKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBkcmF3RWxlbWVu
dHNJbXBsKGNvbnN0IGdsOjpEYXRhICZkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVHJhbnNsYXRlZEluZGV4RGF0YSAmaW5kZXhJbmZvLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcykgPSAwOwotCi0g
ICAgLy9GSVhNRShqbWFkaWxsKTogc3RkOjphcnJheSBpcyBjdXJyZW50bHkgcHJvaGliaXRlZCBi
eSBDaHJvbWl1bSBzdHlsZSBndWlkZQogICAgIHR5cGVkZWYgc3RkOjphcnJheTxnbDo6VGV4dHVy
ZSosIGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfRlJBTUVCVUZGRVJfQVRUQUNITUVOVFM+IEZyYW1l
YnVmZmVyVGV4dHVyZUFycmF5OwogCi0gICAgZ2w6OkVycm9yIGdlbmVyYXRlU3dpenpsZXMoY29u
c3QgZ2w6OkRhdGEgJmRhdGEsIGdsOjpTYW1wbGVyVHlwZSB0eXBlKTsKLSAgICBnbDo6RXJyb3Ig
Z2VuZXJhdGVTd2l6emxlcyhjb25zdCBnbDo6RGF0YSAmZGF0YSk7CisgICAgZ2w6OkVycm9yIGFw
cGx5VGV4dHVyZXMoR0xJbXBsRmFjdG9yeSAqaW1wbEZhY3RvcnksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnbDo6U2FtcGxlclR5cGUgc2hhZGVyVHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlclRleHR1cmVBcnJheSAmZnJhbWVidWZmZXJU
ZXh0dXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZnJhbWVidWZmZXJU
ZXh0dXJlQ291bnQpOwogCi0gICAgZ2w6OkVycm9yIGFwcGx5U3RhdGUoY29uc3QgZ2w6OkRhdGEg
JmRhdGEsIEdMZW51bSBkcmF3TW9kZSk7Ci0gICAgZ2w6OkVycm9yIGFwcGx5U2hhZGVycyhjb25z
dCBnbDo6RGF0YSAmZGF0YSwgR0xlbnVtIGRyYXdNb2RlKTsKLSAgICBnbDo6RXJyb3IgYXBwbHlU
ZXh0dXJlcyhjb25zdCBnbDo6RGF0YSAmZGF0YSwgZ2w6OlNhbXBsZXJUeXBlIHNoYWRlclR5cGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRnJhbWVidWZmZXJUZXh0dXJlQXJy
YXkgJmZyYW1lYnVmZmVyVGV4dHVyZXMsIHNpemVfdCBmcmFtZWJ1ZmZlclRleHR1cmVDb3VudCk7
Ci0gICAgZ2w6OkVycm9yIGFwcGx5VGV4dHVyZXMoY29uc3QgZ2w6OkRhdGEgJmRhdGEpOworICAg
IHNpemVfdCBnZXRCb3VuZEZyYW1lYnVmZmVyVGV4dHVyZXMoY29uc3QgZ2w6OkNvbnRleHRTdGF0
ZSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lYnVm
ZmVyVGV4dHVyZUFycmF5ICpvdXRUZXh0dXJlQXJyYXkpOworICAgIGdsOjpUZXh0dXJlICpnZXRJ
bmNvbXBsZXRlVGV4dHVyZShHTEltcGxGYWN0b3J5ICppbXBsRmFjdG9yeSwgR0xlbnVtIHR5cGUp
OwogCi0gICAgYm9vbCBza2lwRHJhdyhjb25zdCBnbDo6RGF0YSAmZGF0YSwgR0xlbnVtIGRyYXdN
b2RlKTsKLSAgICBnbDo6RXJyb3IgbWFya1RyYW5zZm9ybUZlZWRiYWNrVXNhZ2UoY29uc3QgZ2w6
OkRhdGEgJmRhdGEpOworICAgIHZpcnR1YWwgV29ya2Fyb3VuZHNEM0QgZ2VuZXJhdGVXb3JrYXJv
dW5kcygpIGNvbnN0ID0gMDsKIAotICAgIHNpemVfdCBnZXRCb3VuZEZyYW1lYnVmZmVyVGV4dHVy
ZXMoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIEZyYW1lYnVmZmVyVGV4dHVyZUFycmF5ICpvdXRUZXh0
dXJlQXJyYXkpOwotICAgIGdsOjpUZXh0dXJlICpnZXRJbmNvbXBsZXRlVGV4dHVyZShHTGVudW0g
dHlwZSk7CisgICAgbXV0YWJsZSBib29sIG1DYXBzSW5pdGlhbGl6ZWQ7CisgICAgbXV0YWJsZSBn
bDo6Q2FwcyBtTmF0aXZlQ2FwczsKKyAgICBtdXRhYmxlIGdsOjpUZXh0dXJlQ2Fwc01hcCBtTmF0
aXZlVGV4dHVyZUNhcHM7CisgICAgbXV0YWJsZSBnbDo6RXh0ZW5zaW9ucyBtTmF0aXZlRXh0ZW5z
aW9uczsKKyAgICBtdXRhYmxlIGdsOjpMaW1pdGF0aW9ucyBtTmF0aXZlTGltaXRhdGlvbnM7CiAK
LSAgICBnbDo6RGVidWdBbm5vdGF0b3IgKmdldEFubm90YXRvcigpOwotCi0gICAgdmlydHVhbCBX
b3JrYXJvdW5kc0QzRCBnZW5lcmF0ZVdvcmthcm91bmRzKCkgY29uc3QgPSAwOwotCiAgICAgZ2w6
OlRleHR1cmVNYXAgbUluY29tcGxldGVUZXh0dXJlczsKLSAgICBNZW1vcnlCdWZmZXIgbVNjcmF0
Y2hNZW1vcnlCdWZmZXI7Ci0gICAgdW5zaWduZWQgaW50IG1TY3JhdGNoTWVtb3J5QnVmZmVyUmVz
ZXRDb3VudGVyOwogCiAgICAgbXV0YWJsZSBib29sIG1Xb3JrYXJvdW5kc0luaXRpYWxpemVkOwog
ICAgIG11dGFibGUgV29ya2Fyb3VuZHNEM0QgbVdvcmthcm91bmRzOwogCiAgICAgYm9vbCBtRGlz
am9pbnQ7CisgICAgYm9vbCBtRGV2aWNlTG9zdDsKIH07CiAKLX0KK30gIC8vIG5hbWVzcGFjZSBy
eAogCiAjZW5kaWYgLy8gTElCQU5HTEVfUkVOREVSRVJfRDNEX1JFTkRFUkVSRDNEX0hfCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1NoYWRl
ckQzRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9TaGFkZXJEM0QuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1NoYWRlckQzRC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDkgKzQwLDMzIEBACiBuYW1lc3BhY2UgcngKIHsKIAot
U2hhZGVyRDNEOjpTaGFkZXJEM0QoY29uc3QgZ2w6OlNoYWRlcjo6RGF0YSAmZGF0YSkgOiBTaGFk
ZXJJbXBsKGRhdGEpCitTaGFkZXJEM0Q6OlNoYWRlckQzRChjb25zdCBnbDo6U2hhZGVyU3RhdGUg
JmRhdGEsIGNvbnN0IFdvcmthcm91bmRzRDNEICZ3b3JrYXJvdW5kcykKKyAgICA6IFNoYWRlcklt
cGwoZGF0YSksIG1BZGRpdGlvbmFsT3B0aW9ucygwKQogewogICAgIHVuY29tcGlsZSgpOworCisg
ICAgaWYgKHdvcmthcm91bmRzLmV4cGFuZEludGVnZXJQb3dFeHByZXNzaW9ucykKKyAgICB7Cisg
ICAgICAgIG1BZGRpdGlvbmFsT3B0aW9ucyB8PSBTSF9FWFBBTkRfU0VMRUNUX0hMU0xfSU5URUdF
Ul9QT1dfRVhQUkVTU0lPTlM7CisgICAgfQorCisgICAgaWYgKHdvcmthcm91bmRzLmdldERpbWVu
c2lvbnNJZ25vcmVzQmFzZUxldmVsKQorICAgIHsKKyAgICAgICAgbUFkZGl0aW9uYWxPcHRpb25z
IHw9IFNIX0hMU0xfR0VUX0RJTUVOU0lPTlNfSUdOT1JFU19CQVNFX0xFVkVMOworICAgIH0KKwor
ICAgIGlmICh3b3JrYXJvdW5kcy5wcmVBZGRUZXhlbEZldGNoT2Zmc2V0cykKKyAgICB7CisgICAg
ICAgIG1BZGRpdGlvbmFsT3B0aW9ucyB8PSBTSF9SRVdSSVRFX1RFWEVMRkVUQ0hPRkZTRVRfVE9f
VEVYRUxGRVRDSDsKKyAgICB9CisgICAgaWYgKHdvcmthcm91bmRzLnJld3JpdGVVbmFyeU1pbnVz
T3BlcmF0b3IpCisgICAgeworICAgICAgICBtQWRkaXRpb25hbE9wdGlvbnMgfD0gU0hfUkVXUklU
RV9JTlRFR0VSX1VOQVJZX01JTlVTX09QRVJBVE9SOworICAgIH0KKyAgICBpZiAod29ya2Fyb3Vu
ZHMuZW11bGF0ZUlzbmFuRmxvYXQpCisgICAgeworICAgICAgICBtQWRkaXRpb25hbE9wdGlvbnMg
fD0gU0hfRU1VTEFURV9JU05BTl9GTE9BVF9GVU5DVElPTjsKKyAgICB9CiB9CiAKIFNoYWRlckQz
RDo6flNoYWRlckQzRCgpCkBAIC0xMTcsMTIgKzE0MSwxMiBAQAogICAgIHJldHVybiBtQ29tcGls
ZXJPdXRwdXRUeXBlOwogfQogCi1pbnQgU2hhZGVyRDNEOjpwcmVwYXJlU291cmNlQW5kUmV0dXJu
T3B0aW9ucyhzdGQ6OnN0cmluZ3N0cmVhbSAqc2hhZGVyU291cmNlU3RyZWFtLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgKnNvdXJjZVBh
dGgpCitTaENvbXBpbGVPcHRpb25zIFNoYWRlckQzRDo6cHJlcGFyZVNvdXJjZUFuZFJldHVybk9w
dGlvbnMoc3RkOjpzdHJpbmdzdHJlYW0gKnNoYWRlclNvdXJjZVN0cmVhbSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmlu
ZyAqc291cmNlUGF0aCkKIHsKICAgICB1bmNvbXBpbGUoKTsKIAotICAgIGludCBhZGRpdGlvbmFs
T3B0aW9ucyA9IDA7CisgICAgU2hDb21waWxlT3B0aW9ucyBhZGRpdGlvbmFsT3B0aW9ucyA9IDA7
CiAKICAgICBjb25zdCBzdGQ6OnN0cmluZyAmc291cmNlID0gbURhdGEuZ2V0U291cmNlKCk7CiAK
QEAgLTEzNSw2ICsxNTksOCBAQAogICAgIH0KICNlbmRpZgogCisgICAgYWRkaXRpb25hbE9wdGlv
bnMgfD0gbUFkZGl0aW9uYWxPcHRpb25zOworCiAgICAgKnNoYWRlclNvdXJjZVN0cmVhbSA8PCBz
b3VyY2U7CiAgICAgcmV0dXJuIGFkZGl0aW9uYWxPcHRpb25zOwogfQpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9TaGFkZXJEM0QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL1NoYWRlckQzRC5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1NoYWRlckQzRC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xOSwxNiArMTksMTcgQEAKIGNsYXNzIFJlbmRlcmVyRDNEOwogc3RydWN0IEQzRENvbXBp
bGVyV29ya2Fyb3VuZHM7CiBzdHJ1Y3QgRDNEVW5pZm9ybTsKK3N0cnVjdCBXb3JrYXJvdW5kc0Qz
RDsKIAogY2xhc3MgU2hhZGVyRDNEIDogcHVibGljIFNoYWRlckltcGwKIHsKICAgcHVibGljOgot
ICAgIFNoYWRlckQzRChjb25zdCBnbDo6U2hhZGVyOjpEYXRhICZkYXRhKTsKKyAgICBTaGFkZXJE
M0QoY29uc3QgZ2w6OlNoYWRlclN0YXRlICZkYXRhLCBjb25zdCBXb3JrYXJvdW5kc0QzRCAmd29y
a2Fyb3VuZHMpOwogICAgIHZpcnR1YWwgflNoYWRlckQzRCgpOwogCiAgICAgLy8gU2hhZGVySW1w
bCBpbXBsZW1lbnRhdGlvbgotICAgIGludCBwcmVwYXJlU291cmNlQW5kUmV0dXJuT3B0aW9ucyhz
dGQ6OnN0cmluZ3N0cmVhbSAqc291cmNlU3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6OnN0cmluZyAqc291cmNlUGF0aCkgb3ZlcnJpZGU7CisgICAgU2hD
b21waWxlT3B0aW9ucyBwcmVwYXJlU291cmNlQW5kUmV0dXJuT3B0aW9ucyhzdGQ6OnN0cmluZ3N0
cmVhbSAqc291cmNlU3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgKnNvdXJjZVBhdGgpIG92ZXJyaWRlOwogICAgIGJv
b2wgcG9zdFRyYW5zbGF0ZUNvbXBpbGUoZ2w6OkNvbXBpbGVyICpjb21waWxlciwgc3RkOjpzdHJp
bmcgKmluZm9Mb2cpIG92ZXJyaWRlOwogICAgIHN0ZDo6c3RyaW5nIGdldERlYnVnSW5mbygpIGNv
bnN0IG92ZXJyaWRlOwogCkBAIC03Niw3ICs3Nyw4IEBACiAgICAgbXV0YWJsZSBzdGQ6OnN0cmlu
ZyBtRGVidWdJbmZvOwogICAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCB1bnNpZ25lZCBpbnQ+IG1V
bmlmb3JtUmVnaXN0ZXJNYXA7CiAgICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHVuc2lnbmVkIGlu
dD4gbUludGVyZmFjZUJsb2NrUmVnaXN0ZXJNYXA7CisgICAgU2hDb21waWxlT3B0aW9ucyBtQWRk
aXRpb25hbE9wdGlvbnM7CiB9OwotfQorfSAgLy8gbmFtZXNwYWNlIHJ4CiAKICNlbmRpZiAgLy8g
TElCQU5HTEVfUkVOREVSRVJfRDNEX1NIQURFUkQzRF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9TdXJmYWNlRDNELmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L1N1cmZhY2VEM0QuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1N1cmZhY2VEM0QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMSw1NyArMjEsMzkgQEAKIG5hbWVzcGFjZSByeAogewogCi1TdXJmYWNlRDNEICpT
dXJmYWNlRDNEOjpjcmVhdGVPZmZzY3JlZW4oUmVuZGVyZXJEM0QgKnJlbmRlcmVyLCBlZ2w6OkRp
c3BsYXkgKmRpc3BsYXksIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcsIEVHTENsaWVudEJ1ZmZl
ciBzaGFyZUhhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
R0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpCi17Ci0gICAgcmV0dXJuIG5ldyBTdXJmYWNlRDNE
KHJlbmRlcmVyLCBkaXNwbGF5LCBjb25maWcsIHdpZHRoLCBoZWlnaHQsIEVHTF9UUlVFLCAwLCBF
R0xfRkFMU0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlSGFuZGxlLCBOVUxMKTsK
LX0KLQotU3VyZmFjZUQzRCAqU3VyZmFjZUQzRDo6Y3JlYXRlRnJvbVdpbmRvdyhSZW5kZXJlckQz
RCAqcmVuZGVyZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVn
bDo6RGlzcGxheSAqZGlzcGxheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBmaXhlZFNpemUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBkaXJlY3RDb21wb3NpdGlv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IHdpZHRo
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgaGVpZ2h0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgb3JpZW50
YXRpb24pCi17Ci0gICAgcmV0dXJuIG5ldyBTdXJmYWNlRDNEKHJlbmRlcmVyLCBkaXNwbGF5LCBj
b25maWcsIHdpZHRoLCBoZWlnaHQsIGZpeGVkU2l6ZSwgb3JpZW50YXRpb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIGRpcmVjdENvbXBvc2l0aW9uLCBzdGF0aWNfY2FzdDxFR0xDbGllbnRC
dWZmZXI+KDApLCB3aW5kb3cpOwotfQotCi1TdXJmYWNlRDNEOjpTdXJmYWNlRDNEKFJlbmRlcmVy
RDNEICpyZW5kZXJlciwKK1N1cmZhY2VEM0Q6OlN1cmZhY2VEM0QoY29uc3QgZWdsOjpTdXJmYWNl
U3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJlckQzRCAqcmVuZGVy
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSwKICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZywKLSAgICAgICAgICAg
ICAgICAgICAgICAgRUdMaW50IHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQg
aGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgZml4ZWRTaXplLAotICAgICAg
ICAgICAgICAgICAgICAgICBFR0xpbnQgb3JpZW50YXRpb24sCi0gICAgICAgICAgICAgICAgICAg
ICAgIEVHTGludCBkaXJlY3RDb21wb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgRUdM
TmF0aXZlV2luZG93VHlwZSB3aW5kb3csCiAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVu
dEJ1ZmZlciBzaGFyZUhhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgRUdMTmF0aXZlV2lu
ZG93VHlwZSB3aW5kb3cpCi0gICAgOiBTdXJmYWNlSW1wbCgpLAorICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKKyAgICA6IFN1cmZhY2VJbXBs
KHN0YXRlKSwKICAgICAgIG1SZW5kZXJlcihyZW5kZXJlciksCiAgICAgICBtRGlzcGxheShkaXNw
bGF5KSwKLSAgICAgIG1GaXhlZFNpemUoZml4ZWRTaXplID09IEVHTF9UUlVFKSwKLSAgICAgIG1P
cmllbnRhdGlvbihvcmllbnRhdGlvbiksCisgICAgICBtRml4ZWRTaXplKHdpbmRvdyA9PSBudWxs
cHRyIHx8IGF0dHJpYnMuZ2V0KEVHTF9GSVhFRF9TSVpFX0FOR0xFLCBFR0xfRkFMU0UpID09IEVH
TF9UUlVFKSwKKyAgICAgIG1PcmllbnRhdGlvbihzdGF0aWNfY2FzdDxFR0xpbnQ+KGF0dHJpYnMu
Z2V0KEVHTF9TVVJGQUNFX09SSUVOVEFUSU9OX0FOR0xFLCAwKSkpLAogICAgICAgbVJlbmRlclRh
cmdldEZvcm1hdChjb25maWctPnJlbmRlclRhcmdldEZvcm1hdCksCiAgICAgICBtRGVwdGhTdGVu
Y2lsRm9ybWF0KGNvbmZpZy0+ZGVwdGhTdGVuY2lsRm9ybWF0KSwKICAgICAgIG1Td2FwQ2hhaW4o
bnVsbHB0ciksCiAgICAgICBtU3dhcEludGVydmFsRGlydHkodHJ1ZSksCi0gICAgICBtTmF0aXZl
V2luZG93KHdpbmRvdywgY29uZmlnLCBkaXJlY3RDb21wb3NpdGlvbiA9PSBFR0xfVFJVRSksCi0g
ICAgICBtV2lkdGgod2lkdGgpLAotICAgICAgbUhlaWdodChoZWlnaHQpLAorICAgICAgbU5hdGl2
ZVdpbmRvdyhyZW5kZXJlci0+Y3JlYXRlTmF0aXZlV2luZG93KHdpbmRvdywgY29uZmlnLCBhdHRy
aWJzKSksCisgICAgICBtV2lkdGgoc3RhdGljX2Nhc3Q8RUdMaW50PihhdHRyaWJzLmdldChFR0xf
V0lEVEgsIDApKSksCisgICAgICBtSGVpZ2h0KHN0YXRpY19jYXN0PEVHTGludD4oYXR0cmlicy5n
ZXQoRUdMX0hFSUdIVCwgMCkpKSwKICAgICAgIG1Td2FwSW50ZXJ2YWwoMSksCiAgICAgICBtU2hh
cmVIYW5kbGUocmVpbnRlcnByZXRfY2FzdDxIQU5ETEUgKj4oc2hhcmVIYW5kbGUpKQogeworICAg
IGlmICh3aW5kb3cgIT0gbnVsbHB0ciAmJiAhbUZpeGVkU2l6ZSkKKyAgICB7CisgICAgICAgIG1X
aWR0aCAgPSAtMTsKKyAgICAgICAgbUhlaWdodCA9IC0xOworICAgIH0KIH0KIAogU3VyZmFjZUQz
RDo6flN1cmZhY2VEM0QoKQogewogICAgIHJlbGVhc2VTd2FwQ2hhaW4oKTsKKyAgICBTYWZlRGVs
ZXRlKG1OYXRpdmVXaW5kb3cpOwogfQogCiB2b2lkIFN1cmZhY2VEM0Q6OnJlbGVhc2VTd2FwQ2hh
aW4oKQpAQCAtODEsOSArNjMsOSBAQAogCiBlZ2w6OkVycm9yIFN1cmZhY2VEM0Q6OmluaXRpYWxp
emUoKQogewotICAgIGlmIChtTmF0aXZlV2luZG93LmdldE5hdGl2ZVdpbmRvdygpKQorICAgIGlm
IChtTmF0aXZlV2luZG93LT5nZXROYXRpdmVXaW5kb3coKSkKICAgICB7Ci0gICAgICAgIGlmICgh
bU5hdGl2ZVdpbmRvdy5pbml0aWFsaXplKCkpCisgICAgICAgIGlmICghbU5hdGl2ZVdpbmRvdy0+
aW5pdGlhbGl6ZSgpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihF
R0xfQkFEX1NVUkZBQ0UpOwogICAgICAgICB9CkBAIC05OCw5ICs4MCw5IEBACiAgICAgcmV0dXJu
IGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwogfQogCi1GcmFtZWJ1ZmZlckltcGwgKlN1cmZhY2VE
M0Q6OmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRhdGEg
JmRhdGEpCitGcmFtZWJ1ZmZlckltcGwgKlN1cmZhY2VEM0Q6OmNyZWF0ZURlZmF1bHRGcmFtZWJ1
ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmZGF0YSkKIHsKLSAgICByZXR1cm4gbVJl
bmRlcmVyLT5jcmVhdGVGcmFtZWJ1ZmZlcihkYXRhKTsKKyAgICByZXR1cm4gbVJlbmRlcmVyLT5j
cmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoZGF0YSk7CiB9CiAKIGVnbDo6RXJyb3IgU3VyZmFjZUQz
RDo6YmluZFRleEltYWdlKGdsOjpUZXh0dXJlICosIEVHTGludCkKQEAgLTExMyw2ICs5NSwxMSBA
QAogICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKIH0KIAorZWdsOjpFcnJvciBT
dXJmYWNlRDNEOjpnZXRTeW5jVmFsdWVzKEVHTHVpbnQ2NEtIUiAqdXN0LCBFR0x1aW50NjRLSFIg
Km1zYywgRUdMdWludDY0S0hSICpzYmMpCit7CisgICAgcmV0dXJuIG1Td2FwQ2hhaW4tPmdldFN5
bmNWYWx1ZXModXN0LCBtc2MsIHNiYyk7Cit9CisKIGVnbDo6RXJyb3IgU3VyZmFjZUQzRDo6cmVz
ZXRTd2FwQ2hhaW4oKQogewogICAgIEFTU0VSVCghbVN3YXBDaGFpbik7CkBAIC0xMjMsNyArMTEw
LDcgQEAKICAgICBpZiAoIW1GaXhlZFNpemUpCiAgICAgewogICAgICAgICBSRUNUIHdpbmRvd1Jl
Y3Q7Ci0gICAgICAgIGlmICghbU5hdGl2ZVdpbmRvdy5nZXRDbGllbnRSZWN0KCZ3aW5kb3dSZWN0
KSkKKyAgICAgICAgaWYgKCFtTmF0aXZlV2luZG93LT5nZXRDbGllbnRSZWN0KCZ3aW5kb3dSZWN0
KSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGZhbHNlKTsKIApAQCAtMjQ3LDExICsy
MzQsMTEgQEAKICAgICBpbnQgY2xpZW50V2lkdGggPSBnZXRXaWR0aCgpOwogICAgIGludCBjbGll
bnRIZWlnaHQgPSBnZXRIZWlnaHQoKTsKICAgICBib29sIHNpemVEaXJ0eSA9IGZhbHNlOwotICAg
IGlmICghbUZpeGVkU2l6ZSAmJiAhbU5hdGl2ZVdpbmRvdy5pc0ljb25pYygpKQorICAgIGlmICgh
bUZpeGVkU2l6ZSAmJiAhbU5hdGl2ZVdpbmRvdy0+aXNJY29uaWMoKSkKICAgICB7CiAgICAgICAg
IC8vIFRoZSB3aW5kb3cgaXMgYXV0b21hdGljYWxseSByZXNpemVkIHRvIDE1MHgyMiB3aGVuIGl0
J3MgbWluaW1pemVkLCBidXQgdGhlIHN3YXBjaGFpbiBzaG91bGRuJ3QgYmUgcmVzaXplZAogICAg
ICAgICAvLyBiZWNhdXNlIHRoYXQncyBub3QgYSB1c2VmdWwgc2l6ZSB0byByZW5kZXIgdG8uCi0g
ICAgICAgIGlmICghbU5hdGl2ZVdpbmRvdy5nZXRDbGllbnRSZWN0KCZjbGllbnQpKQorICAgICAg
ICBpZiAoIW1OYXRpdmVXaW5kb3ctPmdldENsaWVudFJlY3QoJmNsaWVudCkpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIEFTU0VSVChmYWxzZSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0zNTMsNCArMzQwLDM4IEBACiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9
CiAKK1dpbmRvd1N1cmZhY2VEM0Q6OldpbmRvd1N1cmZhY2VEM0QoY29uc3QgZWdsOjpTdXJmYWNl
U3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJl
ckQzRCAqcmVuZGVyZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6
RGlzcGxheSAqZGlzcGxheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZWdsOjpDb25maWcgKmNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQorICAgIDogU3VyZmFj
ZUQzRChzdGF0ZSwgcmVuZGVyZXIsIGRpc3BsYXksIGNvbmZpZywgd2luZG93LCBzdGF0aWNfY2Fz
dDxFR0xDbGllbnRCdWZmZXI+KDApLCBhdHRyaWJzKQorewogfQorCitXaW5kb3dTdXJmYWNlRDNE
Ojp+V2luZG93U3VyZmFjZUQzRCgpCit7Cit9CisKK1BidWZmZXJTdXJmYWNlRDNEOjpQYnVmZmVy
U3VyZmFjZUQzRChjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyZXJEM0QgKnJlbmRlcmVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmln
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBz
aGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBl
Z2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKKyAgICA6IFN1cmZhY2VEM0Qoc3RhdGUsCisgICAg
ICAgICAgICAgICAgIHJlbmRlcmVyLAorICAgICAgICAgICAgICAgICBkaXNwbGF5LAorICAgICAg
ICAgICAgICAgICBjb25maWcsCisgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEVHTE5hdGl2
ZVdpbmRvd1R5cGU+KDApLAorICAgICAgICAgICAgICAgICBzaGFyZUhhbmRsZSwKKyAgICAgICAg
ICAgICAgICAgYXR0cmlicykKK3sKK30KKworUGJ1ZmZlclN1cmZhY2VEM0Q6On5QYnVmZmVyU3Vy
ZmFjZUQzRCgpCit7Cit9CisKK30gIC8vIG5hbWVzcGFjZSByYwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9TdXJmYWNlRDNELmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9TdXJmYWNlRDNELmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvU3VyZmFjZUQzRC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMCw3ICsxMCw3IEBACiAjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9TVVJGQUNF
RDNEX0hfCiAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9TdXJmYWNlSW1wbC5oIgotI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9OYXRpdmVXaW5kb3cuaCIKKyNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvTmF0aXZlV2luZG93RDNELmgiCiAKIG5hbWVzcGFj
ZSBlZ2wKIHsKQEAgLTI1LDIyICsyNSwxMSBAQAogY2xhc3MgU3VyZmFjZUQzRCA6IHB1YmxpYyBT
dXJmYWNlSW1wbAogewogICBwdWJsaWM6Ci0gICAgc3RhdGljIFN1cmZhY2VEM0QgKmNyZWF0ZUZy
b21XaW5kb3coUmVuZGVyZXJEM0QgKnJlbmRlcmVyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2lu
ZG93LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBmaXhl
ZFNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGRp
cmVjdENvbXBvc2l0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVHTGludCB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
R0xpbnQgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVH
TGludCBvcmllbnRhdGlvbik7Ci0gICAgc3RhdGljIFN1cmZhY2VEM0QgKmNyZWF0ZU9mZnNjcmVl
bihSZW5kZXJlckQzRCAqcmVuZGVyZXIsIGVnbDo6RGlzcGxheSAqZGlzcGxheSwgY29uc3QgZWds
OjpDb25maWcgKmNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVHTENsaWVudEJ1ZmZlciBzaGFyZUhhbmRsZSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0
KTsKICAgICB+U3VyZmFjZUQzRCgpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVsZWFzZVN3YXBDaGFp
bigpOwogCiAgICAgZWdsOjpFcnJvciBpbml0aWFsaXplKCkgb3ZlcnJpZGU7Ci0gICAgRnJhbWVi
dWZmZXJJbXBsICpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVy
OjpEYXRhICZkYXRhKSBvdmVycmlkZTsKKyAgICBGcmFtZWJ1ZmZlckltcGwgKmNyZWF0ZURlZmF1
bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUpIG92ZXJyaWRl
OwogCiAgICAgZWdsOjpFcnJvciBzd2FwKCkgb3ZlcnJpZGU7CiAgICAgZWdsOjpFcnJvciBwb3N0
U3ViQnVmZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0
KSBvdmVycmlkZTsKQEAgLTQ3LDYgKzM2LDcgQEAKICAgICBlZ2w6OkVycm9yIHF1ZXJ5U3VyZmFj
ZVBvaW50ZXJBTkdMRShFR0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUpIG92ZXJyaWRlOwog
ICAgIGVnbDo6RXJyb3IgYmluZFRleEltYWdlKGdsOjpUZXh0dXJlICp0ZXh0dXJlLCBFR0xpbnQg
YnVmZmVyKSBvdmVycmlkZTsKICAgICBlZ2w6OkVycm9yIHJlbGVhc2VUZXhJbWFnZShFR0xpbnQg
YnVmZmVyKSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIGdldFN5bmNWYWx1ZXMoRUdMdWludDY0
S0hSICp1c3QsIEVHTHVpbnQ2NEtIUiAqbXNjLCBFR0x1aW50NjRLSFIgKnNiYykgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzZXRTd2FwSW50ZXJ2YWwoRUdMaW50IGludGVydmFsKSBvdmVycmlkZTsKIAog
ICAgIEVHTGludCBnZXRXaWR0aCgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNjYsMTcgKzU2LDE0IEBA
CiAgICAgZ2w6OkVycm9yIGdldEF0dGFjaG1lbnRSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkZyYW1l
YnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJBdHRhY2htZW50UmVuZGVyVGFyZ2V0ICoqcnRP
dXQpIG92ZXJyaWRlOwogCi0gIHByaXZhdGU6Ci0gICAgU3VyZmFjZUQzRChSZW5kZXJlckQzRCAq
cmVuZGVyZXIsCisgIHByb3RlY3RlZDoKKyAgICBTdXJmYWNlRDNEKGNvbnN0IGVnbDo6U3VyZmFj
ZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgIFJlbmRlcmVyRDNEICpyZW5kZXJlciwKICAg
ICAgICAgICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSwKICAgICAgICAgICAgICAgIGNvbnN0
IGVnbDo6Q29uZmlnICpjb25maWcsCi0gICAgICAgICAgICAgICBFR0xpbnQgd2lkdGgsCi0gICAg
ICAgICAgICAgICBFR0xpbnQgaGVpZ2h0LAotICAgICAgICAgICAgICAgRUdMaW50IGZpeGVkU2l6
ZSwKLSAgICAgICAgICAgICAgIEVHTGludCBvcmllbnRhdGlvbiwKLSAgICAgICAgICAgICAgIEVH
TGludCBkaXJlY3RDb21wb3NpdGlvbiwKKyAgICAgICAgICAgICAgIEVHTE5hdGl2ZVdpbmRvd1R5
cGUgd2luZG93LAogICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIHNoYXJlSGFuZGxlLAot
ICAgICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3cpOworICAgICAgICAgICAg
ICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpOwogCiAgICAgZWdsOjpFcnJvciBz
d2FwUmVjdChFR0xpbnQgeCwgRUdMaW50IHksIEVHTGludCB3aWR0aCwgRUdMaW50IGhlaWdodCk7
CiAgICAgZWdsOjpFcnJvciByZXNldFN3YXBDaGFpbihpbnQgYmFja2J1ZmZlcldpZHRoLCBpbnQg
YmFja2J1ZmZlckhlaWdodCk7CkBAIC05NCw3ICs4MSw3IEBACiAgICAgU3dhcENoYWluRDNEICpt
U3dhcENoYWluOwogICAgIGJvb2wgbVN3YXBJbnRlcnZhbERpcnR5OwogCi0gICAgTmF0aXZlV2lu
ZG93IG1OYXRpdmVXaW5kb3c7ICAgLy8gSGFuZGxlciBmb3IgdGhlIFdpbmRvdyB0aGF0IHRoZSBz
dXJmYWNlIGlzIGNyZWF0ZWQgZm9yLgorICAgIE5hdGl2ZVdpbmRvd0QzRCAqbU5hdGl2ZVdpbmRv
dzsgIC8vIEhhbmRsZXIgZm9yIHRoZSBXaW5kb3cgdGhhdCB0aGUgc3VyZmFjZSBpcyBjcmVhdGVk
IGZvci4KICAgICBFR0xpbnQgbVdpZHRoOwogICAgIEVHTGludCBtSGVpZ2h0OwogCkBAIC0xMDMs
NyArOTAsMzAgQEAKICAgICBIQU5ETEUgbVNoYXJlSGFuZGxlOwogfTsKIAorY2xhc3MgV2luZG93
U3VyZmFjZUQzRCA6IHB1YmxpYyBTdXJmYWNlRDNECit7CisgIHB1YmxpYzoKKyAgICBXaW5kb3dT
dXJmYWNlRDNEKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAg
ICAgICAgIFJlbmRlcmVyRDNEICpyZW5kZXJlciwKKyAgICAgICAgICAgICAgICAgICAgIGVnbDo6
RGlzcGxheSAqZGlzcGxheSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmln
ICpjb25maWcsCisgICAgICAgICAgICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRv
dywKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJz
KTsKKyAgICB+V2luZG93U3VyZmFjZUQzRCgpIG92ZXJyaWRlOworfTsKIAotfQorY2xhc3MgUGJ1
ZmZlclN1cmZhY2VEM0QgOiBwdWJsaWMgU3VyZmFjZUQzRAoreworICBwdWJsaWM6CisgICAgUGJ1
ZmZlclN1cmZhY2VEM0QoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAg
ICAgICAgICAgICAgIFJlbmRlcmVyRDNEICpyZW5kZXJlciwKKyAgICAgICAgICAgICAgICAgICAg
ICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXksCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWds
OjpDb25maWcgKmNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIg
c2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVN
YXAgJmF0dHJpYnMpOworICAgIH5QYnVmZmVyU3VyZmFjZUQzRCgpIG92ZXJyaWRlOworfTsKIAor
fSAgLy8gbmFtZXNwYWNlIHJ4CisKICNlbmRpZiAvLyBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfU1VS
RkFDRUQzRF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9Td2FwQ2hhaW5EM0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1N3YXBDaGFpbkQzRC5oCShyZXZpc2lv
biAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL1N3YXBDaGFpbkQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMiwxMyArMTIsMTIgQEAK
IAogI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgogI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKyNpbmNsdWRl
IDxFR0wvZWdsZXh0Lmg+CiAKICNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgogI2luY2x1
ZGUgImNvbW1vbi9wbGF0Zm9ybS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0Vycm9yLmgiCiAKLS8v
IFRPRE86IG1vdmUgb3V0IG9mIEQzRDExCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL05hdGl2ZVdpbmRvdy5oIgotCiAjaWYgIWRlZmluZWQoQU5HTEVfRk9SQ0VfVlNZTkNf
T0ZGKQogI2RlZmluZSBBTkdMRV9GT1JDRV9WU1lOQ19PRkYgMAogI2VuZGlmCkBAIC0zMCw4ICsy
OSwxMCBAQAogY2xhc3MgU3dhcENoYWluRDNEIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiB7CiAgIHB1
YmxpYzoKLSAgICBTd2FwQ2hhaW5EM0Qocng6Ok5hdGl2ZVdpbmRvdyBuYXRpdmVXaW5kb3csIEhB
TkRMRSBzaGFyZUhhbmRsZSwgR0xlbnVtIGJhY2tCdWZmZXJGb3JtYXQsIEdMZW51bSBkZXB0aEJ1
ZmZlckZvcm1hdCkKLSAgICAgICAgOiBtTmF0aXZlV2luZG93KG5hdGl2ZVdpbmRvdyksIG1PZmZz
Y3JlZW5SZW5kZXJUYXJnZXRGb3JtYXQoYmFja0J1ZmZlckZvcm1hdCksIG1EZXB0aEJ1ZmZlckZv
cm1hdChkZXB0aEJ1ZmZlckZvcm1hdCksIG1TaGFyZUhhbmRsZShzaGFyZUhhbmRsZSkKKyAgICBT
d2FwQ2hhaW5EM0QoSEFORExFIHNoYXJlSGFuZGxlLCBHTGVudW0gYmFja0J1ZmZlckZvcm1hdCwg
R0xlbnVtIGRlcHRoQnVmZmVyRm9ybWF0KQorICAgICAgICA6IG1PZmZzY3JlZW5SZW5kZXJUYXJn
ZXRGb3JtYXQoYmFja0J1ZmZlckZvcm1hdCksCisgICAgICAgICAgbURlcHRoQnVmZmVyRm9ybWF0
KGRlcHRoQnVmZmVyRm9ybWF0KSwKKyAgICAgICAgICBtU2hhcmVIYW5kbGUoc2hhcmVIYW5kbGUp
CiAgICAgewogICAgIH0KIApAQCAtNDUsMTQgKzQ2LDE1IEBACiAgICAgdmlydHVhbCBSZW5kZXJU
YXJnZXREM0QgKmdldENvbG9yUmVuZGVyVGFyZ2V0KCkgPSAwOwogICAgIHZpcnR1YWwgUmVuZGVy
VGFyZ2V0RDNEICpnZXREZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQoKSA9IDA7CiAKLSAgICBHTGVu
dW0gR2V0UmVuZGVyVGFyZ2V0SW50ZXJuYWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtT2Zmc2Ny
ZWVuUmVuZGVyVGFyZ2V0Rm9ybWF0OyB9Ci0gICAgR0xlbnVtIEdldERlcHRoQnVmZmVySW50ZXJu
YWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtRGVwdGhCdWZmZXJGb3JtYXQ7IH0KKyAgICBHTGVu
dW0gZ2V0UmVuZGVyVGFyZ2V0SW50ZXJuYWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtT2Zmc2Ny
ZWVuUmVuZGVyVGFyZ2V0Rm9ybWF0OyB9CisgICAgR0xlbnVtIGdldERlcHRoQnVmZmVySW50ZXJu
YWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtRGVwdGhCdWZmZXJGb3JtYXQ7IH0KIAogICAgIEhB
TkRMRSBnZXRTaGFyZUhhbmRsZSgpIHsgcmV0dXJuIG1TaGFyZUhhbmRsZTsgfQogICAgIHZpcnR1
YWwgdm9pZCAqZ2V0S2V5ZWRNdXRleCgpID0gMDsKIAorICAgIHZpcnR1YWwgZWdsOjpFcnJvciBn
ZXRTeW5jVmFsdWVzKEVHTHVpbnQ2NEtIUiAqdXN0LCBFR0x1aW50NjRLSFIgKm1zYywgRUdMdWlu
dDY0S0hSICpzYmMpID0gMDsKKwogICBwcm90ZWN0ZWQ6Ci0gICAgcng6Ok5hdGl2ZVdpbmRvdyBt
TmF0aXZlV2luZG93OyAgLy8gSGFuZGxlciBmb3IgdGhlIFdpbmRvdyB0aGF0IHRoZSBzdXJmYWNl
IGlzIGNyZWF0ZWQgZm9yLgogICAgIGNvbnN0IEdMZW51bSBtT2Zmc2NyZWVuUmVuZGVyVGFyZ2V0
Rm9ybWF0OwogICAgIGNvbnN0IEdMZW51bSBtRGVwdGhCdWZmZXJGb3JtYXQ7CiAKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVGV4dHVyZUQz
RC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9UZXh0dXJlRDNELmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9UZXh0dXJlRDNELmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTIgKzQ2LDcgQEAKICAgICAgICAgQnVmZmVyRDNEICpi
dWZmZXJEM0QgPSBHZXRJbXBsQXM8QnVmZmVyRDNEPihwaXhlbEJ1ZmZlcik7CiAgICAgICAgIEFT
U0VSVChidWZmZXJEM0QpOwogICAgICAgICBjb25zdCB1aW50OF90ICpidWZmZXJEYXRhID0gTlVM
TDsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gYnVmZmVyRDNELT5nZXREYXRhKCZidWZmZXJE
YXRhKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9Ci0KKyAgICAgICAgQU5HTEVfVFJZKGJ1ZmZlckQz
RC0+Z2V0RGF0YSgmYnVmZmVyRGF0YSkpOwogICAgICAgICAqcG9pbnRlck91dCA9IGJ1ZmZlckRh
dGEgKyBvZmZzZXQ7CiAgICAgfQogICAgIGVsc2UKQEAgLTc1LDEyICs3MCwxMyBAQAogCiB9CiAK
LVRleHR1cmVEM0Q6OlRleHR1cmVEM0QoUmVuZGVyZXJEM0QgKnJlbmRlcmVyKQotICAgIDogbVJl
bmRlcmVyKHJlbmRlcmVyKSwKLSAgICAgIG1Vc2FnZShHTF9OT05FKSwKK1RleHR1cmVEM0Q6OlRl
eHR1cmVEM0QoY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmc3RhdGUsIFJlbmRlcmVyRDNEICpyZW5k
ZXJlcikKKyAgICA6IFRleHR1cmVJbXBsKHN0YXRlKSwKKyAgICAgIG1SZW5kZXJlcihyZW5kZXJl
ciksCiAgICAgICBtRGlydHlJbWFnZXModHJ1ZSksCiAgICAgICBtSW1tdXRhYmxlKGZhbHNlKSwK
LSAgICAgIG1UZXhTdG9yYWdlKE5VTEwpCisgICAgICBtVGV4U3RvcmFnZShudWxscHRyKSwKKyAg
ICAgIG1CYXNlTGV2ZWwoMCkKIHsKIH0KIApAQCAtOTEsMjcgKzg3LDM2IEBACiBnbDo6RXJyb3Ig
VGV4dHVyZUQzRDo6Z2V0TmF0aXZlVGV4dHVyZShUZXh0dXJlU3RvcmFnZSAqKm91dFN0b3JhZ2Up
CiB7CiAgICAgLy8gZW5zdXJlIHRoZSB1bmRlcmx5aW5nIHRleHR1cmUgaXMgY3JlYXRlZAotICAg
IGdsOjpFcnJvciBlcnJvciA9IGluaXRpYWxpemVTdG9yYWdlKGZhbHNlKTsKLSAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBB
TkdMRV9UUlkoaW5pdGlhbGl6ZVN0b3JhZ2UoZmFsc2UpKTsKIAogICAgIGlmIChtVGV4U3RvcmFn
ZSkKICAgICB7Ci0gICAgICAgIGVycm9yID0gdXBkYXRlU3RvcmFnZSgpOwotICAgICAgICBpZiAo
ZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0g
ICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKHVwZGF0ZVN0b3JhZ2UoKSk7CiAgICAgfQogCiAg
ICAgQVNTRVJUKG91dFN0b3JhZ2UpOwogCiAgICAgKm91dFN0b3JhZ2UgPSBtVGV4U3RvcmFnZTsK
LSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJy
b3IoKTsKIH0KIAorR0xpbnQgVGV4dHVyZUQzRDo6Z2V0TGV2ZWxaZXJvV2lkdGgoKSBjb25zdAor
eworICAgIEFTU0VSVChnbDo6Q291bnRMZWFkaW5nWmVyb3Moc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGdldEJhc2VMZXZlbFdpZHRoKCkpKSA+IGdldEJhc2VMZXZlbCgpKTsKKyAgICByZXR1cm4gZ2V0
QmFzZUxldmVsV2lkdGgoKSA8PCBtQmFzZUxldmVsOworfQorCitHTGludCBUZXh0dXJlRDNEOjpn
ZXRMZXZlbFplcm9IZWlnaHQoKSBjb25zdAoreworICAgIEFTU0VSVChnbDo6Q291bnRMZWFkaW5n
WmVyb3Moc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdldEJhc2VMZXZlbEhlaWdodCgpKSkgPiBnZXRC
YXNlTGV2ZWwoKSk7CisgICAgcmV0dXJuIGdldEJhc2VMZXZlbEhlaWdodCgpIDw8IG1CYXNlTGV2
ZWw7Cit9CisKK0dMaW50IFRleHR1cmVEM0Q6OmdldExldmVsWmVyb0RlcHRoKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZ2V0QmFzZUxldmVsRGVwdGgoKTsKK30KKwogR0xpbnQgVGV4dHVyZUQzRDo6
Z2V0QmFzZUxldmVsV2lkdGgoKSBjb25zdAogewogICAgIGNvbnN0IEltYWdlRDNEICpiYXNlSW1h
Z2UgPSBnZXRCYXNlTGV2ZWxJbWFnZSgpOwpAQCAtMTc3LDMzICsxODIsMjQgQEAKICAgICAvLyBX
ZSBubyBsb25nZXIgbmVlZCB0aGUgIkdMZW51bSBmb3JtYXQiIHBhcmFtZXRlciB0byBUZXhJbWFn
ZSB0byBkZXRlcm1pbmUgd2hhdCBkYXRhIGZvcm1hdCAicGl4ZWxzIiBjb250YWlucy4KICAgICAv
LyBGcm9tIG91ciBpbWFnZSBpbnRlcm5hbCBmb3JtYXQgd2Uga25vdyBob3cgbWFueSBjaGFubmVs
cyB0byBleHBlY3QsIGFuZCAidHlwZSIgZ2l2ZXMgdGhlIGZvcm1hdCBvZiBwaXhlbCdzIGNvbXBv
bmVudHMuCiAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxEYXRhID0gTlVMTDsKLSAgICBnbDo6RXJy
b3IgZXJyb3IgPSBHZXRVbnBhY2tQb2ludGVyKHVucGFjaywgcGl4ZWxzLCBsYXllck9mZnNldCwg
JnBpeGVsRGF0YSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKEdldFVucGFja1BvaW50ZXIodW5wYWNr
LCBwaXhlbHMsIGxheWVyT2Zmc2V0LCAmcGl4ZWxEYXRhKSk7CiAKICAgICBpZiAocGl4ZWxEYXRh
ICE9IG51bGxwdHIpCiAgICAgewogICAgICAgICBpZiAoc2hvdWxkVXNlU2V0RGF0YShpbWFnZSkp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGVycm9yID0gbVRleFN0b3JhZ2UtPnNldERhdGEoaW5k
ZXgsIGltYWdlLCBOVUxMLCB0eXBlLCB1bnBhY2ssIHBpeGVsRGF0YSk7CisgICAgICAgICAgICBB
TkdMRV9UUlkobVRleFN0b3JhZ2UtPnNldERhdGEoaW5kZXgsIGltYWdlLCBOVUxMLCB0eXBlLCB1
bnBhY2ssIHBpeGVsRGF0YSkpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewog
ICAgICAgICAgICAgZ2w6OkJveCBmdWxsSW1hZ2VBcmVhKDAsIDAsIDAsIGltYWdlLT5nZXRXaWR0
aCgpLCBpbWFnZS0+Z2V0SGVpZ2h0KCksIGltYWdlLT5nZXREZXB0aCgpKTsKLSAgICAgICAgICAg
IGVycm9yID0gaW1hZ2UtPmxvYWREYXRhKGZ1bGxJbWFnZUFyZWEsIHVucGFjaywgdHlwZSwgcGl4
ZWxEYXRhKTsKKyAgICAgICAgICAgIEFOR0xFX1RSWShpbWFnZS0+bG9hZERhdGEoZnVsbEltYWdl
QXJlYSwgdW5wYWNrLCB0eXBlLCBwaXhlbERhdGEsIGluZGV4LmlzM0QoKSkpOwogICAgICAgICB9
CiAKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIGVycm9yOwotICAgICAgICB9Ci0KICAgICAgICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsK
ICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4g
Z2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFRleHR1cmVEM0Q6OnN1YkltYWdlKGNvbnN0
IGdsOjpJbWFnZUluZGV4ICZpbmRleCwgY29uc3QgZ2w6OkJveCAmYXJlYSwgR0xlbnVtIGZvcm1h
dCwgR0xlbnVtIHR5cGUsCkBAIC0yMTEsMTEgKzIwNyw3IEBACiB7CiAgICAgLy8gQ1BVIHJlYWRi
YWNrICYgY29weSB3aGVyZSBkaXJlY3QgR1BVIGNvcHkgaXMgbm90IHN1cHBvcnRlZAogICAgIGNv
bnN0IHVpbnQ4X3QgKnBpeGVsRGF0YSA9IE5VTEw7Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gR2V0
VW5wYWNrUG9pbnRlcih1bnBhY2ssIHBpeGVscywgbGF5ZXJPZmZzZXQsICZwaXhlbERhdGEpOwot
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0g
ICAgfQorICAgIEFOR0xFX1RSWShHZXRVbnBhY2tQb2ludGVyKHVucGFjaywgcGl4ZWxzLCBsYXll
ck9mZnNldCwgJnBpeGVsRGF0YSkpOwogCiAgICAgaWYgKHBpeGVsRGF0YSAhPSBOVUxMKQogICAg
IHsKQEAgLTIyNywxOCArMjE5LDggQEAKICAgICAgICAgICAgIHJldHVybiBtVGV4U3RvcmFnZS0+
c2V0RGF0YShpbmRleCwgaW1hZ2UsICZhcmVhLCB0eXBlLCB1bnBhY2ssIHBpeGVsRGF0YSk7CiAg
ICAgICAgIH0KIAotICAgICAgICBlcnJvciA9IGltYWdlLT5sb2FkRGF0YShhcmVhLCB1bnBhY2ss
IHR5cGUsIHBpeGVsRGF0YSk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQotCi0gICAgICAgIGVycm9y
ID0gY29tbWl0UmVnaW9uKGluZGV4LCBhcmVhKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3Io
KSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9Ci0KKyAg
ICAgICAgQU5HTEVfVFJZKGltYWdlLT5sb2FkRGF0YShhcmVhLCB1bnBhY2ssIHR5cGUsIHBpeGVs
RGF0YSwgaW5kZXguaXMzRCgpKSk7CisgICAgICAgIEFOR0xFX1RSWShjb21taXRSZWdpb24oaW5k
ZXgsIGFyZWEpKTsKICAgICAgICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKICAgICB9CiAKQEAgLTI1
MCwyNiArMjMyLDIzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdHJkaWZmX3QgbGF5ZXJPZmZzZXQpCiB7CisgICAgSW1hZ2VEM0Qg
KmltYWdlID0gZ2V0SW1hZ2UoaW5kZXgpOworICAgIEFTU0VSVChpbWFnZSk7CisKKyAgICBpZiAo
aW1hZ2UtPmdldFdpZHRoKCkgPT0gMCB8fCBpbWFnZS0+Z2V0SGVpZ2h0KCkgPT0gMCB8fCBpbWFn
ZS0+Z2V0RGVwdGgoKSA9PSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7
CisgICAgfQorCiAgICAgLy8gV2Ugbm8gbG9uZ2VyIG5lZWQgdGhlICJHTGVudW0gZm9ybWF0IiBw
YXJhbWV0ZXIgdG8gVGV4SW1hZ2UgdG8gZGV0ZXJtaW5lIHdoYXQgZGF0YSBmb3JtYXQgInBpeGVs
cyIgY29udGFpbnMuCiAgICAgLy8gRnJvbSBvdXIgaW1hZ2UgaW50ZXJuYWwgZm9ybWF0IHdlIGtu
b3cgaG93IG1hbnkgY2hhbm5lbHMgdG8gZXhwZWN0LCBhbmQgInR5cGUiIGdpdmVzIHRoZSBmb3Jt
YXQgb2YgcGl4ZWwncyBjb21wb25lbnRzLgogICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVsRGF0YSA9
IE5VTEw7Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gR2V0VW5wYWNrUG9pbnRlcih1bnBhY2ssIHBp
eGVscywgbGF5ZXJPZmZzZXQsICZwaXhlbERhdGEpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
Ci0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShHZXRV
bnBhY2tQb2ludGVyKHVucGFjaywgcGl4ZWxzLCBsYXllck9mZnNldCwgJnBpeGVsRGF0YSkpOwog
CiAgICAgaWYgKHBpeGVsRGF0YSAhPSBOVUxMKQogICAgIHsKLSAgICAgICAgSW1hZ2VEM0QgKmlt
YWdlID0gZ2V0SW1hZ2UoaW5kZXgpOwotICAgICAgICBBU1NFUlQoaW1hZ2UpOwotCiAgICAgICAg
IGdsOjpCb3ggZnVsbEltYWdlQXJlYSgwLCAwLCAwLCBpbWFnZS0+Z2V0V2lkdGgoKSwgaW1hZ2Ut
PmdldEhlaWdodCgpLCBpbWFnZS0+Z2V0RGVwdGgoKSk7Ci0gICAgICAgIGVycm9yID0gaW1hZ2Ut
PmxvYWRDb21wcmVzc2VkRGF0YShmdWxsSW1hZ2VBcmVhLCBwaXhlbERhdGEpOwotICAgICAgICBp
ZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7
Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKGltYWdlLT5sb2FkQ29tcHJlc3NlZERhdGEo
ZnVsbEltYWdlQXJlYSwgcGl4ZWxEYXRhKSk7CiAKICAgICAgICAgbURpcnR5SW1hZ2VzID0gdHJ1
ZTsKICAgICB9CkBAIC0yODIsMTEgKzI2MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBsYXllck9mZnNldCkKIHsKICAgICBjb25zdCB1aW50
OF90ICpwaXhlbERhdGEgPSBOVUxMOwotICAgIGdsOjpFcnJvciBlcnJvciA9IEdldFVucGFja1Bv
aW50ZXIodW5wYWNrLCBwaXhlbHMsIGxheWVyT2Zmc2V0LCAmcGl4ZWxEYXRhKTsKLSAgICBpZiAo
ZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAg
ICBBTkdMRV9UUlkoR2V0VW5wYWNrUG9pbnRlcih1bnBhY2ssIHBpeGVscywgbGF5ZXJPZmZzZXQs
ICZwaXhlbERhdGEpKTsKIAogICAgIGlmIChwaXhlbERhdGEgIT0gTlVMTCkKICAgICB7CkBAIC0y
OTMsMTEgKzI2OCw3IEBACiAgICAgICAgIEltYWdlRDNEICppbWFnZSA9IGdldEltYWdlKGluZGV4
KTsKICAgICAgICAgQVNTRVJUKGltYWdlKTsKIAotICAgICAgICBlcnJvciA9IGltYWdlLT5sb2Fk
Q29tcHJlc3NlZERhdGEoYXJlYSwgcGl4ZWxEYXRhKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJy
b3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9Cisg
ICAgICAgIEFOR0xFX1RSWShpbWFnZS0+bG9hZENvbXByZXNzZWREYXRhKGFyZWEsIHBpeGVsRGF0
YSkpOwogCiAgICAgICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7CiAgICAgfQpAQCAtMzM0LDE4ICsz
MDUsMTcgQEAKIAogICAgIHVpbnRwdHJfdCBvZmZzZXQgPSByZWludGVycHJldF9jYXN0PHVpbnRw
dHJfdD4ocGl4ZWxzKTsKIAotICAgIGdsOjpFcnJvciBlcnJvciA9IG1SZW5kZXJlci0+ZmFzdENv
cHlCdWZmZXJUb1RleHR1cmUodW5wYWNrLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG9mZnNl
dCksIGRlc3RSZW5kZXJUYXJnZXQsIHNpemVkSW50ZXJuYWxGb3JtYXQsIHR5cGUsIGRlc3RBcmVh
KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9y
OwotICAgIH0KKyAgICBBTkdMRV9UUlkobVJlbmRlcmVyLT5mYXN0Q29weUJ1ZmZlclRvVGV4dHVy
ZSh1bnBhY2ssIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4ob2Zmc2V0KSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0UmVuZGVyVGFyZ2V0LCBz
aXplZEludGVybmFsRm9ybWF0LCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlc3RBcmVhKSk7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogR0xpbnQgVGV4dHVy
ZUQzRDo6Y3JlYXRpb25MZXZlbHMoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6
ZWkgZGVwdGgpIGNvbnN0CiB7Ci0gICAgaWYgKChnbDo6aXNQb3cyKHdpZHRoKSAmJiBnbDo6aXNQ
b3cyKGhlaWdodCkgJiYgZ2w6OmlzUG93MihkZXB0aCkpIHx8IG1SZW5kZXJlci0+Z2V0UmVuZGVy
ZXJFeHRlbnNpb25zKCkudGV4dHVyZU5QT1QpCisgICAgaWYgKChnbDo6aXNQb3cyKHdpZHRoKSAm
JiBnbDo6aXNQb3cyKGhlaWdodCkgJiYgZ2w6OmlzUG93MihkZXB0aCkpIHx8CisgICAgICAgIG1S
ZW5kZXJlci0+Z2V0TmF0aXZlRXh0ZW5zaW9ucygpLnRleHR1cmVOUE9UKQogICAgIHsKICAgICAg
ICAgLy8gTWF4aW11bSBudW1iZXIgb2YgbGV2ZWxzCiAgICAgICAgIHJldHVybiBnbDo6bG9nMihz
dGQ6Om1heChzdGQ6Om1heCh3aWR0aCwgaGVpZ2h0KSwgZGVwdGgpKSArIDE7CkBAIC0zNTcsMTEg
KzMyNyw2IEBACiAgICAgfQogfQogCi1pbnQgVGV4dHVyZUQzRDo6bWlwTGV2ZWxzKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gZ2w6OmxvZzIoc3RkOjptYXgoc3RkOjptYXgoZ2V0QmFzZUxldmVsV2lk
dGgoKSwgZ2V0QmFzZUxldmVsSGVpZ2h0KCkpLCBnZXRCYXNlTGV2ZWxEZXB0aCgpKSkgKyAxOwot
fQotCiBUZXh0dXJlU3RvcmFnZSAqVGV4dHVyZUQzRDo6Z2V0U3RvcmFnZSgpCiB7CiAgICAgQVNT
RVJUKG1UZXhTdG9yYWdlKTsKQEAgLTM3MCw3MiArMzM1LDYwIEBACiAKIEltYWdlRDNEICpUZXh0
dXJlRDNEOjpnZXRCYXNlTGV2ZWxJbWFnZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdldEltYWdl
KGdldEltYWdlSW5kZXgoMCwgMCkpOworICAgIGlmIChtQmFzZUxldmVsID49IGdsOjpJTVBMRU1F
TlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFMpCisgICAgeworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisgICAgcmV0dXJuIGdldEltYWdlKGdldEltYWdlSW5kZXgobUJhc2VMZXZlbCwg
MCkpOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUQzRDo6Z2VuZXJhdGVNaXBtYXBzKGNvbnN0IGds
OjpUZXh0dXJlU3RhdGUgJnRleHR1cmVTdGF0ZSkKK2dsOjpFcnJvciBUZXh0dXJlRDNEOjpzZXRJ
bWFnZUV4dGVybmFsKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlZ2w6OlN0cmVhbSAqc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZWdsOjpTdHJlYW06OkdMVGV4dHVyZURlc2NyaXB0aW9uICZk
ZXNjKQogewotICAgIEdMaW50IG1pcENvdW50ID0gbWlwTGV2ZWxzKCk7CisgICAgLy8gT25seSBl
eHRlcm5hbCBpbWFnZXMgY2FuIGFjY2VwdCBleHRlcm5hbCB0ZXh0dXJlcworICAgIFVOUkVBQ0hB
QkxFKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CiAK
LSAgICBpZiAobWlwQ291bnQgPT0gMSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfTk9fRVJST1IpOyAvLyBuby1vcAotICAgIH0KK2dsOjpFcnJvciBUZXh0dXJlRDNEOjpnZW5l
cmF0ZU1pcG1hcCgpCit7CisgICAgY29uc3QgR0x1aW50IGJhc2VMZXZlbCA9IG1TdGF0ZS5nZXRF
ZmZlY3RpdmVCYXNlTGV2ZWwoKTsKKyAgICBjb25zdCBHTHVpbnQgbWF4TGV2ZWwgPSBtU3RhdGUu
Z2V0TWlwbWFwTWF4TGV2ZWwoKTsKKyAgICBBU1NFUlQobWF4TGV2ZWwgPiBiYXNlTGV2ZWwpOyAg
Ly8gU2hvdWxkIGJlIGNoZWNrZWQgYmVmb3JlIGNhbGxpbmcgdGhpcy4KKyAgICBVTlVTRURfQVNT
RVJUSU9OX1ZBUklBQkxFKGJhc2VMZXZlbCk7CiAKICAgICBpZiAobVRleFN0b3JhZ2UgJiYgbVJl
bmRlcmVyLT5nZXRXb3JrYXJvdW5kcygpLnplcm9NYXhMb2RXb3JrYXJvdW5kKQogICAgIHsKICAg
ICAgICAgLy8gU3dpdGNoIHRvIHVzaW5nIHRoZSBtaXBtYXBwZWQgdGV4dHVyZS4KICAgICAgICAg
VGV4dHVyZVN0b3JhZ2UgKnRleHR1cmVTdG9yYWdlID0gTlVMTDsKLSAgICAgICAgZ2w6OkVycm9y
IGVycm9yID0gZ2V0TmF0aXZlVGV4dHVyZSgmdGV4dHVyZVN0b3JhZ2UpOwotICAgICAgICBpZiAo
ZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0g
ICAgICAgIH0KLQotICAgICAgICBlcnJvciA9IHRleHR1cmVTdG9yYWdlLT51c2VMZXZlbFplcm9X
b3JrYXJvdW5kVGV4dHVyZShmYWxzZSk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBB
TkdMRV9UUlkoZ2V0TmF0aXZlVGV4dHVyZSgmdGV4dHVyZVN0b3JhZ2UpKTsKKyAgICAgICAgQU5H
TEVfVFJZKHRleHR1cmVTdG9yYWdlLT51c2VMZXZlbFplcm9Xb3JrYXJvdW5kVGV4dHVyZShmYWxz
ZSkpOwogICAgIH0KIAogICAgIC8vIFNldCB1cCBwcm9wZXIgbWlwbWFwIGNoYWluIGluIG91ciBJ
bWFnZSBhcnJheS4KLSAgICBpbml0TWlwbWFwc0ltYWdlcygpOworICAgIGluaXRNaXBtYXBJbWFn
ZXMoKTsKIAogICAgIGlmIChtVGV4U3RvcmFnZSAmJiBtVGV4U3RvcmFnZS0+c3VwcG9ydHNOYXRp
dmVNaXBtYXBGdW5jdGlvbigpKQogICAgIHsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gdXBk
YXRlU3RvcmFnZSgpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKHVw
ZGF0ZVN0b3JhZ2UoKSk7CiAKICAgICAgICAgLy8gR2VuZXJhdGUgdGhlIG1pcG1hcCBjaGFpbiB1
c2luZyB0aGUgYWQtaG9jIERpcmVjdFggZnVuY3Rpb24uCi0gICAgICAgIGVycm9yID0gbVJlbmRl
cmVyLT5nZW5lcmF0ZU1pcG1hcHNVc2luZ0QzRChtVGV4U3RvcmFnZSwgdGV4dHVyZVN0YXRlKTsK
LSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIGVycm9yOwotICAgICAgICB9CisgICAgICAgIEFOR0xFX1RSWShtUmVuZGVyZXItPmdlbmVy
YXRlTWlwbWFwVXNpbmdEM0QobVRleFN0b3JhZ2UsIG1TdGF0ZSkpOwogICAgIH0KICAgICBlbHNl
CiAgICAgewogICAgICAgICAvLyBHZW5lcmF0ZSB0aGUgbWlwbWFwIGNoYWluLCBvbmUgbGV2ZWwg
YXQgYSB0aW1lLgotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBnZW5lcmF0ZU1pcG1hcHNVc2lu
Z0ltYWdlcygpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKGdlbmVy
YXRlTWlwbWFwVXNpbmdJbWFnZXMobWF4TGV2ZWwpKTsKICAgICB9CiAKICAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVEM0Q6OmdlbmVyYXRl
TWlwbWFwc1VzaW5nSW1hZ2VzKCkKK2dsOjpFcnJvciBUZXh0dXJlRDNEOjpnZW5lcmF0ZU1pcG1h
cFVzaW5nSW1hZ2VzKGNvbnN0IEdMdWludCBtYXhMZXZlbCkKIHsKLSAgICBHTGludCBtaXBDb3Vu
dCA9IG1pcExldmVscygpOwotCiAgICAgLy8gV2Uga25vdyB0aGF0IGFsbCBsYXllcnMgaGF2ZSB0
aGUgc2FtZSBkaW1lbnNpb24sIGZvciB0aGUgdGV4dHVyZSB0byBiZSBjb21wbGV0ZQotICAgIEdM
aW50IGxheWVyQ291bnQgPSBzdGF0aWNfY2FzdDxHTGludD4oZ2V0TGF5ZXJDb3VudCgwKSk7Cisg
ICAgR0xpbnQgbGF5ZXJDb3VudCA9IHN0YXRpY19jYXN0PEdMaW50PihnZXRMYXllckNvdW50KG1C
YXNlTGV2ZWwpKTsKIAogICAgIC8vIFdoZW4gbWFraW5nIG1pcG1hcHMgd2l0aCB0aGUgc2V0RGF0
YSB3b3JrYXJvdW5kIGVuYWJsZWQsIHRoZSB0ZXh0dXJlIHN0b3JhZ2UgaGFzCiAgICAgLy8gdGhl
IGltYWdlIGRhdGEgYWxyZWFkeS4gRm9yIG5vbi1yZW5kZXItdGFyZ2V0IHN0b3JhZ2UsIHdlIGhh
dmUgdG8gcHVsbCBpdCBvdXQgaW50bwpAQCAtNDQ3LDIzICs0MDAsMTUgQEAKICAgICAgICAgICAg
IC8vIENvcHkgZnJvbSB0aGUgc3RvcmFnZSBtaXAgMCB0byBJbWFnZSBtaXAgMAogICAgICAgICAg
ICAgZm9yIChHTGludCBsYXllciA9IDA7IGxheWVyIDwgbGF5ZXJDb3VudDsgKytsYXllcikKICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbDo6SW1hZ2VJbmRleCBzcmNJbmRleCA9IGdl
dEltYWdlSW5kZXgoMCwgbGF5ZXIpOworICAgICAgICAgICAgICAgIGdsOjpJbWFnZUluZGV4IHNy
Y0luZGV4ID0gZ2V0SW1hZ2VJbmRleChtQmFzZUxldmVsLCBsYXllcik7CiAKICAgICAgICAgICAg
ICAgICBJbWFnZUQzRCAqaW1hZ2UgPSBnZXRJbWFnZShzcmNJbmRleCk7Ci0gICAgICAgICAgICAg
ICAgZ2w6OkVycm9yIGVycm9yID0gaW1hZ2UtPmNvcHlGcm9tVGV4U3RvcmFnZShzcmNJbmRleCwg
bVRleFN0b3JhZ2UpOwotICAgICAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIEFOR0xFX1RSWShpbWFnZS0+Y29weUZyb21UZXhT
dG9yYWdlKHNyY0luZGV4LCBtVGV4U3RvcmFnZSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgZ2w6OkVycm9yIGVycm9yID0g
dXBkYXRlU3RvcmFnZSgpOwotICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAgICB9Cisg
ICAgICAgICAgICBBTkdMRV9UUlkodXBkYXRlU3RvcmFnZSgpKTsKICAgICAgICAgfQogICAgIH0K
IApAQCAtNDc2LDcgKzQyMSw3IEBACiAKICAgICBmb3IgKEdMaW50IGxheWVyID0gMDsgbGF5ZXIg
PCBsYXllckNvdW50OyArK2xheWVyKQogICAgIHsKLSAgICAgICAgZm9yIChHTGludCBtaXAgPSAx
OyBtaXAgPCBtaXBDb3VudDsgKyttaXApCisgICAgICAgIGZvciAoR0x1aW50IG1pcCA9IG1CYXNl
TGV2ZWwgKyAxOyBtaXAgPD0gbWF4TGV2ZWw7ICsrbWlwKQogICAgICAgICB7CiAgICAgICAgICAg
ICBBU1NFUlQoZ2V0TGF5ZXJDb3VudChtaXApID09IGxheWVyQ291bnQpOwogCkBAIC00ODYsMjAg
KzQzMSwxMiBAQAogICAgICAgICAgICAgaWYgKHJlbmRlcmFibGVTdG9yYWdlKQogICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgIC8vIEdQVS1zaWRlIG1pcG1hcHBpbmcKLSAgICAgICAgICAg
ICAgICBnbDo6RXJyb3IgZXJyb3IgPSBtVGV4U3RvcmFnZS0+Z2VuZXJhdGVNaXBtYXAoc291cmNl
SW5kZXgsIGRlc3RJbmRleCk7Ci0gICAgICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkK
LSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgQU5HTEVfVFJZKG1UZXhTdG9yYWdlLT5n
ZW5lcmF0ZU1pcG1hcChzb3VyY2VJbmRleCwgZGVzdEluZGV4KSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgLy8gQ1BVLXNp
ZGUgbWlwbWFwcGluZwotICAgICAgICAgICAgICAgIGdsOjpFcnJvciBlcnJvciA9IG1SZW5kZXJl
ci0+Z2VuZXJhdGVNaXBtYXAoZ2V0SW1hZ2UoZGVzdEluZGV4KSwgZ2V0SW1hZ2Uoc291cmNlSW5k
ZXgpKTsKLSAgICAgICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBBTkdMRV9UUlkobVJlbmRlcmVyLT5nZW5lcmF0ZU1pcG1hcChn
ZXRJbWFnZShkZXN0SW5kZXgpLCBnZXRJbWFnZShzb3VyY2VJbmRleCkpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KQEAgLTUwOSw3ICs0NDYsNyBAQAogICAgICAgICB1cGRhdGVT
dG9yYWdlKCk7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Cisg
ICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGJvb2wgVGV4dHVyZUQzRDo6aXNCYXNlSW1h
Z2VaZXJvU2l6ZSgpIGNvbnN0CkBAIC01MzEsNyArNDY4LDcgQEAKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCi0gICAgaWYgKGJhc2VJbWFnZS0+Z2V0VGFyZ2V0KCkgPT0gR0xfVEVYVFVS
RV8yRF9BUlJBWSAmJiBnZXRMYXllckNvdW50KDApIDw9IDApCisgICAgaWYgKGJhc2VJbWFnZS0+
Z2V0VGFyZ2V0KCkgPT0gR0xfVEVYVFVSRV8yRF9BUlJBWSAmJiBnZXRMYXllckNvdW50KGdldEJh
c2VMZXZlbCgpKSA8PSAwKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAt
NTQxLDExICs0NzgsNyBAQAogCiBnbDo6RXJyb3IgVGV4dHVyZUQzRDo6ZW5zdXJlUmVuZGVyVGFy
Z2V0KCkKIHsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBpbml0aWFsaXplU3RvcmFnZSh0cnVlKTsK
LSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwot
ICAgIH0KKyAgICBBTkdMRV9UUlkoaW5pdGlhbGl6ZVN0b3JhZ2UodHJ1ZSkpOwogCiAgICAgaWYg
KCFpc0Jhc2VJbWFnZVplcm9TaXplKCkpCiAgICAgewpAQCAtNTUzLDEzICs0ODYsOSBAQAogICAg
ICAgICBpZiAoIW1UZXhTdG9yYWdlLT5pc1JlbmRlclRhcmdldCgpKQogICAgICAgICB7CiAgICAg
ICAgICAgICBUZXh0dXJlU3RvcmFnZSAqbmV3UmVuZGVyVGFyZ2V0U3RvcmFnZSA9IE5VTEw7Ci0g
ICAgICAgICAgICBlcnJvciA9IGNyZWF0ZUNvbXBsZXRlU3RvcmFnZSh0cnVlLCAmbmV3UmVuZGVy
VGFyZ2V0U3RvcmFnZSk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIEFOR0xFX1RSWShjcmVhdGVDb21wbGV0ZVN0b3JhZ2UodHJ1ZSwgJm5ld1JlbmRl
clRhcmdldFN0b3JhZ2UpKTsKIAotICAgICAgICAgICAgZXJyb3IgPSBtVGV4U3RvcmFnZS0+Y29w
eVRvU3RvcmFnZShuZXdSZW5kZXJUYXJnZXRTdG9yYWdlKTsKKyAgICAgICAgICAgIGdsOjpFcnJv
ciBlcnJvciA9IG1UZXhTdG9yYWdlLT5jb3B5VG9TdG9yYWdlKG5ld1JlbmRlclRhcmdldFN0b3Jh
Z2UpOwogICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICBTYWZlRGVsZXRlKG5ld1JlbmRlclRhcmdldFN0b3JhZ2UpOwpAQCAtNTc1
LDcgKzUwNCw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogYm9vbCBUZXh0dXJl
RDNEOjpjYW5DcmVhdGVSZW5kZXJUYXJnZXRGb3JJbWFnZShjb25zdCBnbDo6SW1hZ2VJbmRleCAm
aW5kZXgpIGNvbnN0CkBAIC01OTEsMTYgKzUyMCwxMSBAQAogICAgIHsKICAgICAgICAgQVNTRVJU
KGlzVmFsaWRJbmRleChpbmRleCkpOwogICAgICAgICBJbWFnZUQzRCAqaW1hZ2UgPSBnZXRJbWFn
ZShpbmRleCk7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGltYWdlLT5jb3B5VG9TdG9yYWdl
KG1UZXhTdG9yYWdlLCBpbmRleCwgcmVnaW9uKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3Io
KSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9Ci0KKyAg
ICAgICAgQU5HTEVfVFJZKGltYWdlLT5jb3B5VG9TdG9yYWdlKG1UZXhTdG9yYWdlLCBpbmRleCwg
cmVnaW9uKSk7CiAgICAgICAgIGltYWdlLT5tYXJrQ2xlYW4oKTsKICAgICB9CiAKLSAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0K
IAogZ2w6OkVycm9yIFRleHR1cmVEM0Q6OmdldEF0dGFjaG1lbnRSZW5kZXJUYXJnZXQoY29uc3Qg
Z2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQsCkBAIC02MTIsOSArNTM2
LDM3IEBACiAgICAgcmV0dXJuIGVycm9yOwogfQogCi1UZXh0dXJlRDNEXzJEOjpUZXh0dXJlRDNE
XzJEKFJlbmRlcmVyRDNEICpyZW5kZXJlcikKLSAgICA6IFRleHR1cmVEM0QocmVuZGVyZXIpCit2
b2lkIFRleHR1cmVEM0Q6OnNldEJhc2VMZXZlbChHTHVpbnQgYmFzZUxldmVsKQogeworICAgIGNv
bnN0IGludCBvbGRTdG9yYWdlV2lkdGggID0gc3RkOjptYXgoMSwgZ2V0TGV2ZWxaZXJvV2lkdGgo
KSk7CisgICAgY29uc3QgaW50IG9sZFN0b3JhZ2VIZWlnaHQgPSBzdGQ6Om1heCgxLCBnZXRMZXZl
bFplcm9IZWlnaHQoKSk7CisgICAgY29uc3QgaW50IG9sZFN0b3JhZ2VEZXB0aCAgPSBzdGQ6Om1h
eCgxLCBnZXRMZXZlbFplcm9EZXB0aCgpKTsKKyAgICBjb25zdCBpbnQgb2xkU3RvcmFnZUZvcm1h
dCA9IGdldEJhc2VMZXZlbEludGVybmFsRm9ybWF0KCk7CisgICAgbUJhc2VMZXZlbCAgICAgICAg
ICAgICAgICAgPSBiYXNlTGV2ZWw7CisKKyAgICAvLyBXaGVuIHRoZSBiYXNlIGxldmVsIGNoYW5n
ZXMsIHRoZSB0ZXh0dXJlIHN0b3JhZ2UgbWlnaHQgbm90IGJlIHZhbGlkIGFueW1vcmUsIHNpbmNl
IGl0IGNvdWxkCisgICAgLy8gaGF2ZSBiZWVuIGNyZWF0ZWQgYmFzZWQgb24gdGhlIGRpbWVuc2lv
bnMgb2YgdGhlIHByZXZpb3VzIHNwZWNpZmllZCBsZXZlbCByYW5nZS4KKyAgICBjb25zdCBpbnQg
bmV3U3RvcmFnZVdpZHRoICA9IHN0ZDo6bWF4KDEsIGdldExldmVsWmVyb1dpZHRoKCkpOworICAg
IGNvbnN0IGludCBuZXdTdG9yYWdlSGVpZ2h0ID0gc3RkOjptYXgoMSwgZ2V0TGV2ZWxaZXJvSGVp
Z2h0KCkpOworICAgIGNvbnN0IGludCBuZXdTdG9yYWdlRGVwdGggPSBzdGQ6Om1heCgxLCBnZXRM
ZXZlbFplcm9EZXB0aCgpKTsKKyAgICBjb25zdCBpbnQgbmV3U3RvcmFnZUZvcm1hdCA9IGdldEJh
c2VMZXZlbEludGVybmFsRm9ybWF0KCk7CisgICAgaWYgKG1UZXhTdG9yYWdlICYmCisgICAgICAg
IChuZXdTdG9yYWdlV2lkdGggIT0gb2xkU3RvcmFnZVdpZHRoIHx8IG5ld1N0b3JhZ2VIZWlnaHQg
IT0gb2xkU3RvcmFnZUhlaWdodCB8fAorICAgICAgICAgbmV3U3RvcmFnZURlcHRoICE9IG9sZFN0
b3JhZ2VEZXB0aCB8fCBuZXdTdG9yYWdlRm9ybWF0ICE9IG9sZFN0b3JhZ2VGb3JtYXQpKQorICAg
IHsKKyAgICAgICAgbWFya0FsbEltYWdlc0RpcnR5KCk7CisgICAgICAgIFNhZmVEZWxldGUobVRl
eFN0b3JhZ2UpOworICAgIH0KK30KKwordm9pZCBUZXh0dXJlRDNEOjpzeW5jU3RhdGUoY29uc3Qg
Z2w6OlRleHR1cmU6OkRpcnR5Qml0cyAmZGlydHlCaXRzKQoreworICAgIC8vIFRPRE8oZ2VvZmZs
YW5nKTogVXNlIGRpcnR5IGJpdHMKK30KKworVGV4dHVyZUQzRF8yRDo6VGV4dHVyZUQzRF8yRChj
b25zdCBnbDo6VGV4dHVyZVN0YXRlICZzdGF0ZSwgUmVuZGVyZXJEM0QgKnJlbmRlcmVyKQorICAg
IDogVGV4dHVyZUQzRChzdGF0ZSwgcmVuZGVyZXIpCit7CiAgICAgbUVHTEltYWdlVGFyZ2V0ID0g
ZmFsc2U7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RF
WFRVUkVfTEVWRUxTOyArK2kpCiAgICAgewpAQCAtNzEwLDE5ICs2NjIsMTIgQEAKICAgICB7CiAg
ICAgICAgIC8vIFdpbGwgdHJ5IHRvIGNyZWF0ZSBSVCBzdG9yYWdlIGlmIGl0IGRvZXMgbm90IGV4
aXN0CiAgICAgICAgIFJlbmRlclRhcmdldEQzRCAqZGVzdFJlbmRlclRhcmdldCA9IE5VTEw7Ci0g
ICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGdldFJlbmRlclRhcmdldChpbmRleCwgJmRlc3RSZW5k
ZXJUYXJnZXQpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKGdldFJl
bmRlclRhcmdldChpbmRleCwgJmRlc3RSZW5kZXJUYXJnZXQpKTsKIAogICAgICAgICBnbDo6Qm94
IGRlc3RBcmVhKDAsIDAsIDAsIGdldFdpZHRoKGxldmVsKSwgZ2V0SGVpZ2h0KGxldmVsKSwgMSk7
CiAKLSAgICAgICAgZXJyb3IgPSBmYXN0VW5wYWNrUGl4ZWxzKHVucGFjaywgcGl4ZWxzLCBkZXN0
QXJlYSwgc2l6ZWRJbnRlcm5hbEZvcm1hdCwgdHlwZSwgZGVzdFJlbmRlclRhcmdldCk7Ci0gICAg
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBl
cnJvcjsKLSAgICAgICAgfQorICAgICAgICBBTkdMRV9UUlkoZmFzdFVucGFja1BpeGVscyh1bnBh
Y2ssIHBpeGVscywgZGVzdEFyZWEsIHNpemVkSW50ZXJuYWxGb3JtYXQsIHR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RSZW5kZXJUYXJnZXQpKTsKIAogICAgICAg
ICAvLyBFbnN1cmUgd2UgZG9uJ3Qgb3ZlcndyaXRlIG91ciBuZXdseSBpbml0aWFsaXplZCBkYXRh
CiAgICAgICAgIG1JbWFnZUFycmF5W2xldmVsXS0+bWFya0NsZWFuKCk7CkBAIC03MzIsMTQgKzY3
NywxMCBAQAogCiAgICAgaWYgKCFmYXN0VW5wYWNrZWQpCiAgICAgewotICAgICAgICBnbDo6RXJy
b3IgZXJyb3IgPSBzZXRJbWFnZUltcGwoaW5kZXgsIHR5cGUsIHVucGFjaywgcGl4ZWxzLCAwKTsK
LSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIGVycm9yOwotICAgICAgICB9CisgICAgICAgIEFOR0xFX1RSWShzZXRJbWFnZUltcGwoaW5k
ZXgsIHR5cGUsIHVucGFjaywgcGl4ZWxzLCAwKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpF
cnJvciBUZXh0dXJlRDNEXzJEOjpzZXRTdWJJbWFnZShHTGVudW0gdGFyZ2V0LApAQCAtNzU3LDEy
ICs2OTgsNyBAQAogICAgIGlmIChpc0Zhc3RVbnBhY2thYmxlKHVucGFjaywgZ2V0SW50ZXJuYWxG
b3JtYXQobGV2ZWwpKSAmJiBpc0xldmVsQ29tcGxldGUobGV2ZWwpKQogICAgIHsKICAgICAgICAg
UmVuZGVyVGFyZ2V0RDNEICpyZW5kZXJUYXJnZXQgPSBOVUxMOwotICAgICAgICBnbDo6RXJyb3Ig
ZXJyb3IgPSBnZXRSZW5kZXJUYXJnZXQoaW5kZXgsICZyZW5kZXJUYXJnZXQpOwotICAgICAgICBp
ZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7
Ci0gICAgICAgIH0KLQorICAgICAgICBBTkdMRV9UUlkoZ2V0UmVuZGVyVGFyZ2V0KGluZGV4LCAm
cmVuZGVyVGFyZ2V0KSk7CiAgICAgICAgIEFTU0VSVCghbUltYWdlQXJyYXlbbGV2ZWxdLT5pc0Rp
cnR5KCkpOwogCiAgICAgICAgIHJldHVybiBmYXN0VW5wYWNrUGl4ZWxzKHVucGFjaywgcGl4ZWxz
LCBhcmVhLCBnZXRJbnRlcm5hbEZvcm1hdChsZXZlbCksIHR5cGUsIHJlbmRlclRhcmdldCk7CkBA
IC03OTYsMTEgKzczMiw3IEBACiAgICAgQVNTRVJUKHRhcmdldCA9PSBHTF9URVhUVVJFXzJEICYm
IGFyZWEuZGVwdGggPT0gMSAmJiBhcmVhLnogPT0gMCk7CiAKICAgICBnbDo6SW1hZ2VJbmRleCBp
bmRleCA9IGdsOjpJbWFnZUluZGV4OjpNYWtlMkQoc3RhdGljX2Nhc3Q8R0xpbnQ+KGxldmVsKSk7
Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gVGV4dHVyZUQzRDo6c3ViSW1hZ2VDb21wcmVzc2VkKGlu
ZGV4LCBhcmVhLCBmb3JtYXQsIHVucGFjaywgcGl4ZWxzLCAwKTsKLSAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9U
UlkoVGV4dHVyZUQzRDo6c3ViSW1hZ2VDb21wcmVzc2VkKGluZGV4LCBhcmVhLCBmb3JtYXQsIHVu
cGFjaywgcGl4ZWxzLCAwKSk7CiAKICAgICByZXR1cm4gY29tbWl0UmVnaW9uKGluZGV4LCBhcmVh
KTsKIH0KQEAgLTgyNSwzMSArNzU3LDE4IEBACiAgICAgLy8gc28gd2Ugc2hvdWxkIHVzZSB0aGUg
bm9uLXJlbmRlcmluZyBjb3B5IHBhdGguCiAgICAgaWYgKCFjYW5DcmVhdGVSZW5kZXJUYXJnZXRG
b3JJbWFnZShpbmRleCkgfHwgbVJlbmRlcmVyLT5nZXRXb3JrYXJvdW5kcygpLnplcm9NYXhMb2RX
b3JrYXJvdW5kKQogICAgIHsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gbUltYWdlQXJyYXlb
bGV2ZWxdLT5jb3B5RnJvbUZyYW1lYnVmZmVyKGRlc3RPZmZzZXQsIHNvdXJjZUFyZWEsIHNvdXJj
ZSk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBlcnJvcjsKLSAgICAgICAgfQotCisgICAgICAgIEFOR0xFX1RSWShtSW1hZ2VBcnJh
eVtsZXZlbF0tPmNvcHlGcm9tRnJhbWVidWZmZXIoZGVzdE9mZnNldCwgc291cmNlQXJlYSwgc291
cmNlKSk7CiAgICAgICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7CiAgICAgfQogICAgIGVsc2UKICAg
ICB7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGVuc3VyZVJlbmRlclRhcmdldCgpOwotICAg
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
ZXJyb3I7Ci0gICAgICAgIH0KLQorICAgICAgICBBTkdMRV9UUlkoZW5zdXJlUmVuZGVyVGFyZ2V0
KCkpOwogICAgICAgICBtSW1hZ2VBcnJheVtsZXZlbF0tPm1hcmtDbGVhbigpOwogCiAgICAgICAg
IGlmIChzb3VyY2VBcmVhLndpZHRoICE9IDAgJiYgc291cmNlQXJlYS5oZWlnaHQgIT0gMCAmJiBp
c1ZhbGlkTGV2ZWwobGV2ZWwpKQogICAgICAgICB7Ci0gICAgICAgICAgICBlcnJvciA9IG1SZW5k
ZXJlci0+Y29weUltYWdlMkQoc291cmNlLCBzb3VyY2VBcmVhLCBpbnRlcm5hbEZvcm1hdCwgZGVz
dE9mZnNldCwgbVRleFN0b3JhZ2UsIGxldmVsKTsKLSAgICAgICAgICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAg
ICAgICAgICAgfQorICAgICAgICAgICAgQU5HTEVfVFJZKG1SZW5kZXJlci0+Y29weUltYWdlMkQo
c291cmNlLCBzb3VyY2VBcmVhLCBpbnRlcm5hbEZvcm1hdCwgZGVzdE9mZnNldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1UZXhTdG9yYWdlLCBsZXZlbCkp
OwogICAgICAgICB9CiAgICAgfQogCkBAIC04NzQsMzcgKzc5MywxOSBAQAogICAgIC8vIHNvIHdl
IHNob3VsZCB1c2UgdGhlIG5vbi1yZW5kZXJpbmcgY29weSBwYXRoLgogICAgIGlmICghY2FuQ3Jl
YXRlUmVuZGVyVGFyZ2V0Rm9ySW1hZ2UoaW5kZXgpIHx8IG1SZW5kZXJlci0+Z2V0V29ya2Fyb3Vu
ZHMoKS56ZXJvTWF4TG9kV29ya2Fyb3VuZCkKICAgICB7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJv
ciA9IG1JbWFnZUFycmF5W2xldmVsXS0+Y29weUZyb21GcmFtZWJ1ZmZlcihkZXN0T2Zmc2V0LCBz
b3VyY2VBcmVhLCBzb3VyY2UpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KLQorICAgICAgICBBTkdM
RV9UUlkobUltYWdlQXJyYXlbbGV2ZWxdLT5jb3B5RnJvbUZyYW1lYnVmZmVyKGRlc3RPZmZzZXQs
IHNvdXJjZUFyZWEsIHNvdXJjZSkpOwogICAgICAgICBtRGlydHlJbWFnZXMgPSB0cnVlOwogICAg
IH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBlbnN1cmVSZW5k
ZXJUYXJnZXQoKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9CisgICAgICAgIEFOR0xFX1RSWShlbnN1
cmVSZW5kZXJUYXJnZXQoKSk7CiAKICAgICAgICAgaWYgKGlzVmFsaWRMZXZlbChsZXZlbCkpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGVycm9yID0gdXBkYXRlU3RvcmFnZUxldmVsKGxldmVsKTsK
LSAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBlcnJv
ciA9IG1SZW5kZXJlci0+Y29weUltYWdlMkQoc291cmNlLCBzb3VyY2VBcmVhLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpHZXRJbnRlcm5hbEZvcm1hdElu
Zm8oZ2V0QmFzZUxldmVsSW50ZXJuYWxGb3JtYXQoKSkuZm9ybWF0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RPZmZzZXQsIG1UZXhTdG9yYWdlLCBsZXZl
bCk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFO
R0xFX1RSWSh1cGRhdGVTdG9yYWdlTGV2ZWwobGV2ZWwpKTsKKyAgICAgICAgICAgIEFOR0xFX1RS
WShtUmVuZGVyZXItPmNvcHlJbWFnZTJEKAorICAgICAgICAgICAgICAgIHNvdXJjZSwgc291cmNl
QXJlYSwgZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhnZXRCYXNlTGV2ZWxJbnRlcm5hbEZvcm1h
dCgpKS5mb3JtYXQsCisgICAgICAgICAgICAgICAgZGVzdE9mZnNldCwgbVRleFN0b3JhZ2UsIGxl
dmVsKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTkxMSw2ICs4MTIsODMgQEAKICAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAorZ2w6OkVycm9yIFRleHR1cmVEM0RfMkQ6
OmNvcHlUZXh0dXJlKEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIHVucGFja0ZsaXBZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1VubXVsdGlwbHlBbHBoYSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VGV4dHVyZSAqc291cmNlKQor
eworICAgIEdMZW51bSBzb3VyY2VUYXJnZXQgPSBzb3VyY2UtPmdldFRhcmdldCgpOworICAgIEdM
aW50IHNvdXJjZUxldmVsICAgPSAwOworCisgICAgR0xpbnQgZGVzdExldmVsID0gMDsKKworICAg
IEdMZW51bSBzaXplZEludGVybmFsRm9ybWF0ID0gZ2w6OkdldFNpemVkSW50ZXJuYWxGb3JtYXQo
aW50ZXJuYWxGb3JtYXQsIHR5cGUpOworICAgIGdsOjpFeHRlbnRzIHNpemUoc3RhdGljX2Nhc3Q8
aW50Pihzb3VyY2UtPmdldFdpZHRoKHNvdXJjZVRhcmdldCwgc291cmNlTGV2ZWwpKSwKKyAgICAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oc291cmNlLT5nZXRIZWlnaHQoc291cmNl
VGFyZ2V0LCBzb3VyY2VMZXZlbCkpLCAxKTsKKyAgICByZWRlZmluZUltYWdlKGRlc3RMZXZlbCwg
c2l6ZWRJbnRlcm5hbEZvcm1hdCwgc2l6ZSwgZmFsc2UpOworCisgICAgQVNTRVJUKGNhbkNyZWF0
ZVJlbmRlclRhcmdldEZvckltYWdlKGdsOjpJbWFnZUluZGV4OjpNYWtlMkQoZGVzdExldmVsKSkp
OworCisgICAgQU5HTEVfVFJZKGVuc3VyZVJlbmRlclRhcmdldCgpKTsKKyAgICBBU1NFUlQoaXNW
YWxpZExldmVsKGRlc3RMZXZlbCkpOworICAgIEFOR0xFX1RSWSh1cGRhdGVTdG9yYWdlTGV2ZWwo
ZGVzdExldmVsKSk7CisKKyAgICBnbDo6UmVjdGFuZ2xlIHNvdXJjZVJlY3QoMCwgMCwgc2l6ZS53
aWR0aCwgc2l6ZS5oZWlnaHQpOworICAgIGdsOjpPZmZzZXQgZGVzdE9mZnNldCgwLCAwLCAwKTsK
KyAgICBBTkdMRV9UUlkobVJlbmRlcmVyLT5jb3B5VGV4dHVyZShzb3VyY2UsIHNvdXJjZUxldmVs
LCBzb3VyY2VSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpH
ZXRJbnRlcm5hbEZvcm1hdEluZm8oc2l6ZWRJbnRlcm5hbEZvcm1hdCkuZm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RPZmZzZXQsIG1UZXhTdG9yYWdlLCBk
ZXN0TGV2ZWwsIHVucGFja0ZsaXBZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVucGFja1ByZW11bHRpcGx5QWxwaGEsIHVucGFja1VubXVsdGlwbHlBbHBoYSkpOworCisg
ICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CisKK2dsOjpFcnJvciBUZXh0dXJlRDNEXzJEOjpj
b3B5U3ViVGV4dHVyZShjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFy
ZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tG
bGlwWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFj
a1ByZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCB1bnBhY2tVbm11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OlRleHR1cmUgKnNvdXJjZSkKK3sKKyAgICBHTGludCBz
b3VyY2VMZXZlbCA9IDA7CisgICAgR0xpbnQgZGVzdExldmVsICAgPSAwOworCisgICAgQVNTRVJU
KGNhbkNyZWF0ZVJlbmRlclRhcmdldEZvckltYWdlKGdsOjpJbWFnZUluZGV4OjpNYWtlMkQoZGVz
dExldmVsKSkpOworCisgICAgQU5HTEVfVFJZKGVuc3VyZVJlbmRlclRhcmdldCgpKTsKKyAgICBB
U1NFUlQoaXNWYWxpZExldmVsKGRlc3RMZXZlbCkpOworICAgIEFOR0xFX1RSWSh1cGRhdGVTdG9y
YWdlTGV2ZWwoZGVzdExldmVsKSk7CisKKyAgICBBTkdMRV9UUlkobVJlbmRlcmVyLT5jb3B5VGV4
dHVyZShzb3VyY2UsIHNvdXJjZUxldmVsLCBzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oZ2V0QmFzZUxldmVs
SW50ZXJuYWxGb3JtYXQoKSkuZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlc3RPZmZzZXQsIG1UZXhTdG9yYWdlLCBkZXN0TGV2ZWwsIHVucGFja0ZsaXBZLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVucGFja1ByZW11bHRpcGx5QWxw
aGEsIHVucGFja1VubXVsdGlwbHlBbHBoYSkpOworCisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7
Cit9CisKK2dsOjpFcnJvciBUZXh0dXJlRDNEXzJEOjpjb3B5Q29tcHJlc3NlZFRleHR1cmUoY29u
c3QgZ2w6OlRleHR1cmUgKnNvdXJjZSkKK3sKKyAgICBHTGVudW0gc291cmNlVGFyZ2V0ID0gc291
cmNlLT5nZXRUYXJnZXQoKTsKKyAgICBHTGludCBzb3VyY2VMZXZlbCAgID0gMDsKKworICAgIEdM
aW50IGRlc3RMZXZlbCA9IDA7CisKKyAgICBHTGVudW0gc2l6ZWRJbnRlcm5hbEZvcm1hdCA9IHNv
dXJjZS0+Z2V0Rm9ybWF0KHNvdXJjZVRhcmdldCwgc291cmNlTGV2ZWwpLmFzU2l6ZWQoKTsKKyAg
ICBnbDo6RXh0ZW50cyBzaXplKHN0YXRpY19jYXN0PGludD4oc291cmNlLT5nZXRXaWR0aChzb3Vy
Y2VUYXJnZXQsIHNvdXJjZUxldmVsKSksCisgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxpbnQ+KHNvdXJjZS0+Z2V0SGVpZ2h0KHNvdXJjZVRhcmdldCwgc291cmNlTGV2ZWwpKSwgMSk7
CisgICAgcmVkZWZpbmVJbWFnZShkZXN0TGV2ZWwsIHNpemVkSW50ZXJuYWxGb3JtYXQsIHNpemUs
IGZhbHNlKTsKKworICAgIEFOR0xFX1RSWShpbml0aWFsaXplU3RvcmFnZShmYWxzZSkpOworICAg
IEFTU0VSVChtVGV4U3RvcmFnZSk7CisKKyAgICBBTkdMRV9UUlkobVJlbmRlcmVyLT5jb3B5Q29t
cHJlc3NlZFRleHR1cmUoc291cmNlLCBzb3VyY2VMZXZlbCwgbVRleFN0b3JhZ2UsIGRlc3RMZXZl
bCkpOworCisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CisKIGdsOjpFcnJvciBUZXh0dXJl
RDNEXzJEOjpzZXRTdG9yYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbHMsIEdMZW51bSBp
bnRlcm5hbEZvcm1hdCwgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUpCiB7CiAgICAgQVNTRVJUKEdM
X1RFWFRVUkVfMkQgJiYgc2l6ZS5kZXB0aCA9PSAxKTsKQEAgLTkyOSw3ICs5MDcsNyBAQAogICAg
IH0KIAogICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogVmVyaWZ5IHN0b3JhZ2UgY3JlYXRpb24gaGFk
IG5vIGVycm9ycwotICAgIGJvb2wgcmVuZGVyVGFyZ2V0ID0gSXNSZW5kZXJUYXJnZXRVc2FnZSht
VXNhZ2UpOworICAgIGJvb2wgcmVuZGVyVGFyZ2V0ICAgICAgID0gSXNSZW5kZXJUYXJnZXRVc2Fn
ZShtU3RhdGUuZ2V0VXNhZ2UoKSk7CiAgICAgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UgPSBtUmVu
ZGVyZXItPmNyZWF0ZVRleHR1cmVTdG9yYWdlMkQoCiAgICAgICAgIGludGVybmFsRm9ybWF0LCBy
ZW5kZXJUYXJnZXQsIHNpemUud2lkdGgsIHNpemUuaGVpZ2h0LCBzdGF0aWNfY2FzdDxpbnQ+KGxl
dmVscyksIGZhbHNlKTsKIApAQCAtOTQwLDE2ICs5MTgsMTEgQEAKICAgICAgICAgcmV0dXJuIGVy
cm9yOwogICAgIH0KIAotICAgIGVycm9yID0gdXBkYXRlU3RvcmFnZSgpOworICAgIEFOR0xFX1RS
WSh1cGRhdGVTdG9yYWdlKCkpOwogCi0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Ci0KICAgICBtSW1tdXRhYmxlID0gdHJ1ZTsKIAot
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJv
cigpOwogfQogCiB2b2lkIFRleHR1cmVEM0RfMkQ6OmJpbmRUZXhJbWFnZShlZ2w6OlN1cmZhY2Ug
KnN1cmZhY2UpCkBAIC05OTEsOSArOTY0LDkgQEAKICAgICBFR0xJbWFnZUQzRCAqZWdsSW1hZ2Vk
M2QgPSBHZXRJbXBsQXM8RUdMSW1hZ2VEM0Q+KGltYWdlKTsKIAogICAgIC8vIFNldCB0aGUgcHJv
cGVydGllcyBvZiB0aGUgYmFzZSBtaXAgbGV2ZWwgZnJvbSB0aGUgRUdMIGltYWdlCi0gICAgR0xl
bnVtIGludGVybmFsZm9ybWF0ID0gaW1hZ2UtPmdldEludGVybmFsRm9ybWF0KCk7CisgICAgY29u
c3QgYXV0byAmZm9ybWF0ID0gaW1hZ2UtPmdldEZvcm1hdCgpOwogICAgIGdsOjpFeHRlbnRzIHNp
emUoc3RhdGljX2Nhc3Q8aW50PihpbWFnZS0+Z2V0V2lkdGgoKSksIHN0YXRpY19jYXN0PGludD4o
aW1hZ2UtPmdldEhlaWdodCgpKSwgMSk7Ci0gICAgcmVkZWZpbmVJbWFnZSgwLCBpbnRlcm5hbGZv
cm1hdCwgc2l6ZSwgdHJ1ZSk7CisgICAgcmVkZWZpbmVJbWFnZSgwLCBmb3JtYXQuYXNTaXplZCgp
LCBzaXplLCB0cnVlKTsKIAogICAgIC8vIENsZWFyIGFsbCBvdGhlciBpbWFnZXMuCiAgICAgZm9y
IChzaXplX3QgbGV2ZWwgPSAxOyBsZXZlbCA8IEFycmF5U2l6ZShtSW1hZ2VBcnJheSk7IGxldmVs
KyspCkBAIC0xMDA0LDIxICs5NzcsMjYgQEAKICAgICBTYWZlRGVsZXRlKG1UZXhTdG9yYWdlKTsK
ICAgICBtSW1hZ2VBcnJheVswXS0+bWFya0NsZWFuKCk7CiAKLSAgICBtVGV4U3RvcmFnZSAgICAg
PSBtUmVuZGVyZXItPmNyZWF0ZVRleHR1cmVTdG9yYWdlRUdMSW1hZ2UoZWdsSW1hZ2VkM2QpOwor
ICAgIC8vIFBhc3MgaW4gdGhlIFJlbmRlclRhcmdldEQzRCBoZXJlOiBjcmVhdGVUZXh0dXJlU3Rv
cmFnZSBjYW4ndCBnZW5lcmF0ZSBhbiBlcnJvci4KKyAgICBSZW5kZXJUYXJnZXREM0QgKnJlbmRl
clRhcmdldEQzRCA9IG51bGxwdHI7CisgICAgQU5HTEVfVFJZKGVnbEltYWdlZDNkLT5nZXRSZW5k
ZXJUYXJnZXQoJnJlbmRlclRhcmdldEQzRCkpOworCisgICAgbVRleFN0b3JhZ2UgICAgID0gbVJl
bmRlcmVyLT5jcmVhdGVUZXh0dXJlU3RvcmFnZUVHTEltYWdlKGVnbEltYWdlZDNkLCByZW5kZXJU
YXJnZXREM0QpOwogICAgIG1FR0xJbWFnZVRhcmdldCA9IHRydWU7CiAKICAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotdm9pZCBUZXh0dXJlRDNEXzJEOjppbml0TWlwbWFw
c0ltYWdlcygpCit2b2lkIFRleHR1cmVEM0RfMkQ6OmluaXRNaXBtYXBJbWFnZXMoKQogewotICAg
IC8vIFB1cmdlIGFycmF5IGxldmVscyAxIHRocm91Z2ggcSBhbmQgcmVzZXQgdGhlbSB0byByZXBy
ZXNlbnQgdGhlIGdlbmVyYXRlZCBtaXBtYXAgbGV2ZWxzLgotICAgIGludCBsZXZlbENvdW50ID0g
bWlwTGV2ZWxzKCk7Ci0gICAgZm9yIChpbnQgbGV2ZWwgPSAxOyBsZXZlbCA8IGxldmVsQ291bnQ7
IGxldmVsKyspCisgICAgY29uc3QgR0x1aW50IGJhc2VMZXZlbCA9IG1TdGF0ZS5nZXRFZmZlY3Rp
dmVCYXNlTGV2ZWwoKTsKKyAgICBjb25zdCBHTHVpbnQgbWF4TGV2ZWwgID0gbVN0YXRlLmdldE1p
cG1hcE1heExldmVsKCk7CisgICAgLy8gUHVyZ2UgYXJyYXkgbGV2ZWxzIGJhc2VMZXZlbCArIDEg
dGhyb3VnaCBxIGFuZCByZXNldCB0aGVtIHRvIHJlcHJlc2VudCB0aGUgZ2VuZXJhdGVkIG1pcG1h
cAorICAgIC8vIGxldmVscy4KKyAgICBmb3IgKEdMdWludCBsZXZlbCA9IGJhc2VMZXZlbCArIDE7
IGxldmVsIDw9IG1heExldmVsOyBsZXZlbCsrKQogICAgIHsKLSAgICAgICAgZ2w6OkV4dGVudHMg
bGV2ZWxTaXplKHN0ZDo6bWF4KGdldEJhc2VMZXZlbFdpZHRoKCkgPj4gbGV2ZWwsIDEpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXgoZ2V0QmFzZUxldmVsSGVpZ2h0KCkg
Pj4gbGV2ZWwsIDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSk7CisgICAgICAg
IGdsOjpFeHRlbnRzIGxldmVsU2l6ZShzdGQ6Om1heChnZXRMZXZlbFplcm9XaWR0aCgpID4+IGxl
dmVsLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4KGdldExldmVs
WmVyb0hlaWdodCgpID4+IGxldmVsLCAxKSwgMSk7CiAKICAgICAgICAgcmVkZWZpbmVJbWFnZShs
ZXZlbCwgZ2V0QmFzZUxldmVsSW50ZXJuYWxGb3JtYXQoKSwgbGV2ZWxTaXplLCBmYWxzZSk7CiAg
ICAgfQpAQCAtMTAyOSwxOCArMTAwNyw5IEBACiAgICAgQVNTRVJUKCFpbmRleC5oYXNMYXllcigp
KTsKIAogICAgIC8vIGVuc3VyZSB0aGUgdW5kZXJseWluZyB0ZXh0dXJlIGlzIGNyZWF0ZWQKLSAg
ICBnbDo6RXJyb3IgZXJyb3IgPSBlbnN1cmVSZW5kZXJUYXJnZXQoKTsKLSAgICBpZiAoZXJyb3Iu
aXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdM
RV9UUlkoZW5zdXJlUmVuZGVyVGFyZ2V0KCkpOworICAgIEFOR0xFX1RSWSh1cGRhdGVTdG9yYWdl
TGV2ZWwoaW5kZXgubWlwSW5kZXgpKTsKIAotICAgIGVycm9yID0gdXBkYXRlU3RvcmFnZUxldmVs
KGluZGV4Lm1pcEluZGV4KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGVycm9yOwotICAgIH0KLQogICAgIHJldHVybiBtVGV4U3RvcmFnZS0+Z2V0UmVu
ZGVyVGFyZ2V0KGluZGV4LCBvdXRSVCk7CiB9CiAKQEAgLTEwNTYsMTEgKzEwMjUsOSBAQAogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBjb25zdCBJbWFnZUQzRCAqYmFzZUltYWdl
ID0gZ2V0QmFzZUxldmVsSW1hZ2UoKTsKKyAgICBHTHNpemVpIHdpZHRoICA9IGdldExldmVsWmVy
b1dpZHRoKCk7CisgICAgR0xzaXplaSBoZWlnaHQgPSBnZXRMZXZlbFplcm9IZWlnaHQoKTsKIAot
ICAgIEdMc2l6ZWkgd2lkdGggPSBiYXNlSW1hZ2UtPmdldFdpZHRoKCk7Ci0gICAgR0xzaXplaSBo
ZWlnaHQgPSBiYXNlSW1hZ2UtPmdldEhlaWdodCgpOwotCiAgICAgaWYgKHdpZHRoIDw9IDAgfHwg
aGVpZ2h0IDw9IDApCiAgICAgewogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDY3LDE1ICsx
MDM0LDE1IEBACiAgICAgfQogCiAgICAgLy8gVGhlIGJhc2UgaW1hZ2UgbGV2ZWwgaXMgY29tcGxl
dGUgaWYgdGhlIHdpZHRoIGFuZCBoZWlnaHQgYXJlIHBvc2l0aXZlCi0gICAgaWYgKGxldmVsID09
IDApCisgICAgaWYgKGxldmVsID09IHN0YXRpY19jYXN0PGludD4oZ2V0QmFzZUxldmVsKCkpKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgQVNTRVJUKGxldmVsID49
IDEgJiYgbGV2ZWwgPD0gKGludClBcnJheVNpemUobUltYWdlQXJyYXkpICYmIG1JbWFnZUFycmF5
W2xldmVsXSAhPSBOVUxMKTsKKyAgICBBU1NFUlQobGV2ZWwgPj0gMCAmJiBsZXZlbCA8PSAoaW50
KUFycmF5U2l6ZShtSW1hZ2VBcnJheSkgJiYgbUltYWdlQXJyYXlbbGV2ZWxdICE9IG51bGxwdHIp
OwogICAgIEltYWdlRDNEICppbWFnZSA9IG1JbWFnZUFycmF5W2xldmVsXTsKIAotICAgIGlmIChp
bWFnZS0+Z2V0SW50ZXJuYWxGb3JtYXQoKSAhPSBiYXNlSW1hZ2UtPmdldEludGVybmFsRm9ybWF0
KCkpCisgICAgaWYgKGltYWdlLT5nZXRJbnRlcm5hbEZvcm1hdCgpICE9IGdldEJhc2VMZXZlbElu
dGVybmFsRm9ybWF0KCkpCiAgICAgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAt
MTEwOCwyMSArMTA3NSwxNyBAQAogICAgIH0KIAogICAgIC8vIGRvIG5vdCBhdHRlbXB0IHRvIGNy
ZWF0ZSBzdG9yYWdlIGZvciBub25leGlzdGFudCBkYXRhCi0gICAgaWYgKCFpc0xldmVsQ29tcGxl
dGUoMCkpCisgICAgaWYgKCFpc0xldmVsQ29tcGxldGUoZ2V0QmFzZUxldmVsKCkpKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiAgICAgfQogCi0gICAgYm9v
bCBjcmVhdGVSZW5kZXJUYXJnZXQgPSAocmVuZGVyVGFyZ2V0IHx8IElzUmVuZGVyVGFyZ2V0VXNh
Z2UobVVzYWdlKSk7CisgICAgYm9vbCBjcmVhdGVSZW5kZXJUYXJnZXQgPSAocmVuZGVyVGFyZ2V0
IHx8IElzUmVuZGVyVGFyZ2V0VXNhZ2UobVN0YXRlLmdldFVzYWdlKCkpKTsKIAogICAgIFRleHR1
cmVTdG9yYWdlICpzdG9yYWdlID0gTlVMTDsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBjcmVhdGVD
b21wbGV0ZVN0b3JhZ2UoY3JlYXRlUmVuZGVyVGFyZ2V0LCAmc3RvcmFnZSk7Ci0gICAgaWYgKGVy
cm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAg
QU5HTEVfVFJZKGNyZWF0ZUNvbXBsZXRlU3RvcmFnZShjcmVhdGVSZW5kZXJUYXJnZXQsICZzdG9y
YWdlKSk7CiAKLSAgICBlcnJvciA9IHNldENvbXBsZXRlVGV4U3RvcmFnZShzdG9yYWdlKTsKKyAg
ICBnbDo6RXJyb3IgZXJyb3IgPSBzZXRDb21wbGV0ZVRleFN0b3JhZ2Uoc3RvcmFnZSk7CiAgICAg
aWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7CiAgICAgICAgIFNhZmVEZWxldGUoc3RvcmFnZSk7
CkBAIC0xMTMyLDExICsxMDk1LDcgQEAKICAgICBBU1NFUlQobVRleFN0b3JhZ2UpOwogCiAgICAg
Ly8gZmx1c2ggaW1hZ2UgZGF0YSB0byB0aGUgc3RvcmFnZQotICAgIGVycm9yID0gdXBkYXRlU3Rv
cmFnZSgpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4g
ZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWSh1cGRhdGVTdG9yYWdlKCkpOwogCiAgICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CkBAIC0xMTQzLDggKzExMDIsOCBAQAogCiBn
bDo6RXJyb3IgVGV4dHVyZUQzRF8yRDo6Y3JlYXRlQ29tcGxldGVTdG9yYWdlKGJvb2wgcmVuZGVy
VGFyZ2V0LCBUZXh0dXJlU3RvcmFnZSAqKm91dFRleFN0b3JhZ2UpIGNvbnN0CiB7Ci0gICAgR0xz
aXplaSB3aWR0aCA9IGdldEJhc2VMZXZlbFdpZHRoKCk7Ci0gICAgR0xzaXplaSBoZWlnaHQgPSBn
ZXRCYXNlTGV2ZWxIZWlnaHQoKTsKKyAgICBHTHNpemVpIHdpZHRoICAgICAgICAgPSBnZXRMZXZl
bFplcm9XaWR0aCgpOworICAgIEdMc2l6ZWkgaGVpZ2h0ICAgICAgICA9IGdldExldmVsWmVyb0hl
aWdodCgpOwogICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCA9IGdldEJhc2VMZXZlbEludGVybmFs
Rm9ybWF0KCk7CiAKICAgICBBU1NFUlQod2lkdGggPiAwICYmIGhlaWdodCA+IDApOwpAQCAtMTE3
NiwxMSArMTEzNSw3IEBACiAgICAgewogICAgICAgICBmb3IgKGludCBsZXZlbCA9IDA7IGxldmVs
IDwgbmV3Q29tcGxldGVUZXhTdG9yYWdlLT5nZXRMZXZlbENvdW50KCk7IGxldmVsKyspCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGdsOjpFcnJvciBlcnJvciA9IG1JbWFnZUFycmF5W2xldmVsXS0+
c2V0TWFuYWdlZFN1cmZhY2UyRChuZXdDb21wbGV0ZVRleFN0b3JhZ2UsIGxldmVsKTsKLSAgICAg
ICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgQU5HTEVfVFJZKG1J
bWFnZUFycmF5W2xldmVsXS0+c2V0TWFuYWdlZFN1cmZhY2UyRChuZXdDb21wbGV0ZVRleFN0b3Jh
Z2UsIGxldmVsKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTExODksNyArMTE0NCw3IEBACiAK
ICAgICBtRGlydHlJbWFnZXMgPSB0cnVlOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19F
UlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJl
RDNEXzJEOjp1cGRhdGVTdG9yYWdlKCkKQEAgLTEyMDAsMTUgKzExNTUsMTEgQEAKICAgICB7CiAg
ICAgICAgIGlmIChtSW1hZ2VBcnJheVtsZXZlbF0tPmlzRGlydHkoKSAmJiBpc0xldmVsQ29tcGxl
dGUobGV2ZWwpKQogICAgICAgICB7Ci0gICAgICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSB1cGRh
dGVTdG9yYWdlTGV2ZWwobGV2ZWwpOwotICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAg
ICB9CisgICAgICAgICAgICBBTkdMRV9UUlkodXBkYXRlU3RvcmFnZUxldmVsKGxldmVsKSk7CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAg
ICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFRleHR1cmVEM0RfMkQ6OnVw
ZGF0ZVN0b3JhZ2VMZXZlbChpbnQgbGV2ZWwpCkBAIC0xMjIwLDE0ICsxMTcxLDEwIEBACiAgICAg
ewogICAgICAgICBnbDo6SW1hZ2VJbmRleCBpbmRleCA9IGdsOjpJbWFnZUluZGV4OjpNYWtlMkQo
bGV2ZWwpOwogICAgICAgICBnbDo6Qm94IHJlZ2lvbigwLCAwLCAwLCBnZXRXaWR0aChsZXZlbCks
IGdldEhlaWdodChsZXZlbCksIDEpOwotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBjb21taXRS
ZWdpb24oaW5kZXgsIHJlZ2lvbik7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBBTkdM
RV9UUlkoY29tbWl0UmVnaW9uKGluZGV4LCByZWdpb24pKTsKICAgICB9CiAKLSAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAog
dm9pZCBUZXh0dXJlRDNEXzJEOjpyZWRlZmluZUltYWdlKHNpemVfdCBsZXZlbCwKQEAgLTEyMzgs
OCArMTE4NSw4IEBACiAgICAgQVNTRVJUKHNpemUuZGVwdGggPT0gMSk7CiAKICAgICAvLyBJZiB0
aGVyZSBjdXJyZW50bHkgaXMgYSBjb3JyZXNwb25kaW5nIHN0b3JhZ2UgdGV4dHVyZSBpbWFnZSwg
aXQgaGFzIHRoZXNlIHBhcmFtZXRlcnMKLSAgICBjb25zdCBpbnQgc3RvcmFnZVdpZHRoID0gc3Rk
OjptYXgoMSwgZ2V0QmFzZUxldmVsV2lkdGgoKSA+PiBsZXZlbCk7Ci0gICAgY29uc3QgaW50IHN0
b3JhZ2VIZWlnaHQgPSBzdGQ6Om1heCgxLCBnZXRCYXNlTGV2ZWxIZWlnaHQoKSA+PiBsZXZlbCk7
CisgICAgY29uc3QgaW50IHN0b3JhZ2VXaWR0aCAgICAgPSBzdGQ6Om1heCgxLCBnZXRMZXZlbFpl
cm9XaWR0aCgpID4+IGxldmVsKTsKKyAgICBjb25zdCBpbnQgc3RvcmFnZUhlaWdodCAgICA9IHN0
ZDo6bWF4KDEsIGdldExldmVsWmVyb0hlaWdodCgpID4+IGxldmVsKTsKICAgICBjb25zdCBHTGVu
dW0gc3RvcmFnZUZvcm1hdCA9IGdldEJhc2VMZXZlbEludGVybmFsRm9ybWF0KCk7CiAKICAgICBt
SW1hZ2VBcnJheVtsZXZlbF0tPnJlZGVmaW5lKEdMX1RFWFRVUkVfMkQsIGludGVybmFsZm9ybWF0
LCBzaXplLCBmb3JjZVJlbGVhc2UpOwpAQCAtMTI2MSwxMyArMTIwOCw4IEBACiAgICAgICAgICAg
ICBzaXplLmhlaWdodCAhPSBzdG9yYWdlSGVpZ2h0IHx8CiAgICAgICAgICAgICBpbnRlcm5hbGZv
cm1hdCAhPSBzdG9yYWdlRm9ybWF0KSAgIC8vIERpc2NhcmQgbWlzbWF0Y2hlZCBzdG9yYWdlCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZ2w6OklNUExFTUVO
VEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUzsgaSsrKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIG1JbWFnZUFycmF5W2ldLT5tYXJrRGlydHkoKTsKLSAgICAgICAgICAgIH0KLQorICAg
ICAgICAgICAgbWFya0FsbEltYWdlc0RpcnR5KCk7CiAgICAgICAgICAgICBTYWZlRGVsZXRlKG1U
ZXhTdG9yYWdlKTsKLSAgICAgICAgICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTEyOTIsOSArMTIzNCwxOCBAQAogICAgICAgICAgICAgaW5kZXgubWlwSW5k
ZXggPj0gMCAmJiBpbmRleC5taXBJbmRleCA8IG1UZXhTdG9yYWdlLT5nZXRMZXZlbENvdW50KCkp
OwogfQogCi1UZXh0dXJlRDNEX0N1YmU6OlRleHR1cmVEM0RfQ3ViZShSZW5kZXJlckQzRCAqcmVu
ZGVyZXIpCi0gICAgOiBUZXh0dXJlRDNEKHJlbmRlcmVyKQordm9pZCBUZXh0dXJlRDNEXzJEOjpt
YXJrQWxsSW1hZ2VzRGlydHkoKQogeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZ2w6OklN
UExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUzsgaSsrKQorICAgIHsKKyAgICAgICAgbUlt
YWdlQXJyYXlbaV0tPm1hcmtEaXJ0eSgpOworICAgIH0KKyAgICBtRGlydHlJbWFnZXMgPSB0cnVl
OworfQorCitUZXh0dXJlRDNEX0N1YmU6OlRleHR1cmVEM0RfQ3ViZShjb25zdCBnbDo6VGV4dHVy
ZVN0YXRlICZzdGF0ZSwgUmVuZGVyZXJEM0QgKnJlbmRlcmVyKQorICAgIDogVGV4dHVyZUQzRChz
dGF0ZSwgcmVuZGVyZXIpCit7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA2OyBpKyspCiAgICAg
ewogICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVY
VFVSRV9MRVZFTFM7ICsraikKQEAgLTE0MDIsMTIgKzEzNTMsNyBAQAogCiAgICAgZ2w6OkltYWdl
SW5kZXggaW5kZXggPSBnbDo6SW1hZ2VJbmRleDo6TWFrZUN1YmUodGFyZ2V0LCBzdGF0aWNfY2Fz
dDxHTGludD4obGV2ZWwpKTsKIAotICAgIGdsOjpFcnJvciBlcnJvciA9IFRleHR1cmVEM0Q6OnN1
YkltYWdlQ29tcHJlc3NlZChpbmRleCwgYXJlYSwgZm9ybWF0LCB1bnBhY2ssIHBpeGVscywgMCk7
Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsK
LSAgICB9Ci0KKyAgICBBTkdMRV9UUlkoVGV4dHVyZUQzRDo6c3ViSW1hZ2VDb21wcmVzc2VkKGlu
ZGV4LCBhcmVhLCBmb3JtYXQsIHVucGFjaywgcGl4ZWxzLCAwKSk7CiAgICAgcmV0dXJuIGNvbW1p
dFJlZ2lvbihpbmRleCwgYXJlYSk7CiB9CiAKQEAgLTE0MzIsMjMgKzEzNzgsMTMgQEAKICAgICAv
LyBzbyB3ZSBzaG91bGQgdXNlIHRoZSBub24tcmVuZGVyaW5nIGNvcHkgcGF0aC4KICAgICBpZiAo
IWNhbkNyZWF0ZVJlbmRlclRhcmdldEZvckltYWdlKGluZGV4KSB8fCBtUmVuZGVyZXItPmdldFdv
cmthcm91bmRzKCkuemVyb01heExvZFdvcmthcm91bmQpCiAgICAgewotICAgICAgICBnbDo6RXJy
b3IgZXJyb3IgPQotICAgICAgICAgICAgbUltYWdlQXJyYXlbZmFjZUluZGV4XVtsZXZlbF0tPmNv
cHlGcm9tRnJhbWVidWZmZXIoZGVzdE9mZnNldCwgc291cmNlQXJlYSwgc291cmNlKTsKLSAgICAg
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVy
cm9yOwotICAgICAgICB9Ci0KKyAgICAgICAgQU5HTEVfVFJZKAorICAgICAgICAgICAgbUltYWdl
QXJyYXlbZmFjZUluZGV4XVtsZXZlbF0tPmNvcHlGcm9tRnJhbWVidWZmZXIoZGVzdE9mZnNldCwg
c291cmNlQXJlYSwgc291cmNlKSk7CiAgICAgICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7CiAgICAg
fQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGVuc3VyZVJlbmRl
clRhcmdldCgpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KLQorICAgICAgICBBTkdMRV9UUlkoZW5z
dXJlUmVuZGVyVGFyZ2V0KCkpOwogICAgICAgICBtSW1hZ2VBcnJheVtmYWNlSW5kZXhdW2xldmVs
XS0+bWFya0NsZWFuKCk7CiAKICAgICAgICAgQVNTRVJUKHNpemUud2lkdGggPT0gc2l6ZS5oZWln
aHQpOwpAQCAtMTQ1NSwxMSArMTM5MSw4IEBACiAKICAgICAgICAgaWYgKHNpemUud2lkdGggPiAw
ICYmIGlzVmFsaWRGYWNlTGV2ZWwoZmFjZUluZGV4LCBsZXZlbCkpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGVycm9yID0gbVJlbmRlcmVyLT5jb3B5SW1hZ2VDdWJlKHNvdXJjZSwgc291cmNlQXJl
YSwgaW50ZXJuYWxGb3JtYXQsIGRlc3RPZmZzZXQsIG1UZXhTdG9yYWdlLCB0YXJnZXQsIGxldmVs
KTsKLSAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgQU5H
TEVfVFJZKG1SZW5kZXJlci0+Y29weUltYWdlQ3ViZShzb3VyY2UsIHNvdXJjZUFyZWEsIGludGVy
bmFsRm9ybWF0LCBkZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtVGV4U3RvcmFnZSwgdGFyZ2V0LCBsZXZlbCkpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC0xNDkyLDI2ICsxNDI1LDEzIEBACiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0g
ICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGVuc3VyZVJlbmRlclRhcmdldCgpOwotICAgICAgICBp
ZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7
Ci0gICAgICAgIH0KLQorICAgICAgICBBTkdMRV9UUlkoZW5zdXJlUmVuZGVyVGFyZ2V0KCkpOwog
ICAgICAgICBpZiAoaXNWYWxpZEZhY2VMZXZlbChmYWNlSW5kZXgsIGxldmVsKSkKICAgICAgICAg
ewotICAgICAgICAgICAgZXJyb3IgPSB1cGRhdGVTdG9yYWdlRmFjZUxldmVsKGZhY2VJbmRleCwg
bGV2ZWwpOwotICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIGVycm9yID0gbVJlbmRlcmVyLT5jb3B5SW1hZ2VDdWJlKHNvdXJjZSwgc291cmNlQXJlYSwg
Z2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhnZXRCYXNlTGV2ZWxJbnRlcm5hbEZvcm1hdCgpKS5m
b3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0
T2Zmc2V0LCBtVGV4U3RvcmFnZSwgdGFyZ2V0LCBsZXZlbCk7Ci0gICAgICAgICAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJv
cjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFOR0xFX1RSWSh1cGRhdGVTdG9yYWdlRmFj
ZUxldmVsKGZhY2VJbmRleCwgbGV2ZWwpKTsKKyAgICAgICAgICAgIEFOR0xFX1RSWShtUmVuZGVy
ZXItPmNvcHlJbWFnZUN1YmUoCisgICAgICAgICAgICAgICAgc291cmNlLCBzb3VyY2VBcmVhLCBn
bDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGdldEJhc2VMZXZlbEludGVybmFsRm9ybWF0KCkpLmZv
cm1hdCwKKyAgICAgICAgICAgICAgICBkZXN0T2Zmc2V0LCBtVGV4U3RvcmFnZSwgdGFyZ2V0LCBs
ZXZlbCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNTQxLDcgKzE0NjEsNyBAQAogICAgIH0K
IAogICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogVmVyaWZ5IHN0b3JhZ2UgY3JlYXRpb24gaGFkIG5v
IGVycm9ycwotICAgIGJvb2wgcmVuZGVyVGFyZ2V0ID0gSXNSZW5kZXJUYXJnZXRVc2FnZShtVXNh
Z2UpOworICAgIGJvb2wgcmVuZGVyVGFyZ2V0ID0gSXNSZW5kZXJUYXJnZXRVc2FnZShtU3RhdGUu
Z2V0VXNhZ2UoKSk7CiAKICAgICBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSA9IG1SZW5kZXJlci0+
Y3JlYXRlVGV4dHVyZVN0b3JhZ2VDdWJlKAogICAgICAgICBpbnRlcm5hbEZvcm1hdCwgcmVuZGVy
VGFyZ2V0LCBzaXplLndpZHRoLCBzdGF0aWNfY2FzdDxpbnQ+KGxldmVscyksIGZhbHNlKTsKQEAg
LTE1NTMsMTYgKzE0NzMsMTEgQEAKICAgICAgICAgcmV0dXJuIGVycm9yOwogICAgIH0KIAotICAg
IGVycm9yID0gdXBkYXRlU3RvcmFnZSgpOworICAgIEFOR0xFX1RSWSh1cGRhdGVTdG9yYWdlKCkp
OwogCi0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJv
cjsKLSAgICB9Ci0KICAgICBtSW1tdXRhYmxlID0gdHJ1ZTsKIAotICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiAvLyBUZXN0
cyBmb3IgY3ViZSB0ZXh0dXJlIGNvbXBsZXRlbmVzcy4gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rp
b24gMy43LjEwIHBhZ2UgODEuCkBAIC0xNTc5LDcgKzE0OTQsNyBAQAogCiAgICAgZm9yIChpbnQg
ZmFjZUluZGV4ID0gMTsgZmFjZUluZGV4IDwgNjsgZmFjZUluZGV4KyspCiAgICAgewotICAgICAg
ICBjb25zdCBJbWFnZUQzRCAmZmFjZUJhc2VJbWFnZSA9ICptSW1hZ2VBcnJheVtmYWNlSW5kZXhd
WzBdOworICAgICAgICBjb25zdCBJbWFnZUQzRCAmZmFjZUJhc2VJbWFnZSA9ICptSW1hZ2VBcnJh
eVtmYWNlSW5kZXhdW2dldEJhc2VMZXZlbCgpXTsKIAogICAgICAgICBpZiAoZmFjZUJhc2VJbWFn
ZS5nZXRXaWR0aCgpICAgICAgICAgICE9IGJhc2VXaWR0aCAgfHwKICAgICAgICAgICAgIGZhY2VC
YXNlSW1hZ2UuZ2V0SGVpZ2h0KCkgICAgICAgICAhPSBiYXNlSGVpZ2h0IHx8CkBAIC0xNjAyLDE3
ICsxNTE3LDE5IEBACiAgICAgVU5SRUFDSEFCTEUoKTsKIH0KIAotCi12b2lkIFRleHR1cmVEM0Rf
Q3ViZTo6aW5pdE1pcG1hcHNJbWFnZXMoKQordm9pZCBUZXh0dXJlRDNEX0N1YmU6OmluaXRNaXBt
YXBJbWFnZXMoKQogewotICAgIC8vIFB1cmdlIGFycmF5IGxldmVscyAxIHRocm91Z2ggcSBhbmQg
cmVzZXQgdGhlbSB0byByZXByZXNlbnQgdGhlIGdlbmVyYXRlZCBtaXBtYXAgbGV2ZWxzLgotICAg
IGludCBsZXZlbENvdW50ID0gbWlwTGV2ZWxzKCk7CisgICAgY29uc3QgR0x1aW50IGJhc2VMZXZl
bCA9IG1TdGF0ZS5nZXRFZmZlY3RpdmVCYXNlTGV2ZWwoKTsKKyAgICBjb25zdCBHTHVpbnQgbWF4
TGV2ZWwgID0gbVN0YXRlLmdldE1pcG1hcE1heExldmVsKCk7CisgICAgLy8gUHVyZ2UgYXJyYXkg
bGV2ZWxzIGJhc2VMZXZlbCArIDEgdGhyb3VnaCBxIGFuZCByZXNldCB0aGVtIHRvIHJlcHJlc2Vu
dCB0aGUgZ2VuZXJhdGVkIG1pcG1hcAorICAgIC8vIGxldmVscy4KICAgICBmb3IgKGludCBmYWNl
SW5kZXggPSAwOyBmYWNlSW5kZXggPCA2OyBmYWNlSW5kZXgrKykKICAgICB7Ci0gICAgICAgIGZv
ciAoaW50IGxldmVsID0gMTsgbGV2ZWwgPCBsZXZlbENvdW50OyBsZXZlbCsrKQorICAgICAgICBm
b3IgKEdMdWludCBsZXZlbCA9IGJhc2VMZXZlbCArIDE7IGxldmVsIDw9IG1heExldmVsOyBsZXZl
bCsrKQogICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgZmFjZUxldmVsU2l6ZSA9IChzdGQ6Om1h
eChtSW1hZ2VBcnJheVtmYWNlSW5kZXhdWzBdLT5nZXRXaWR0aCgpID4+IGxldmVsLCAxKSk7Ci0g
ICAgICAgICAgICByZWRlZmluZUltYWdlKGZhY2VJbmRleCwgbGV2ZWwsIG1JbWFnZUFycmF5W2Zh
Y2VJbmRleF1bMF0tPmdldEludGVybmFsRm9ybWF0KCksCisgICAgICAgICAgICBpbnQgZmFjZUxl
dmVsU2l6ZSA9CisgICAgICAgICAgICAgICAgKHN0ZDo6bWF4KG1JbWFnZUFycmF5W2ZhY2VJbmRl
eF1bYmFzZUxldmVsXS0+Z2V0V2lkdGgoKSA+PiAobGV2ZWwgLSBiYXNlTGV2ZWwpLCAxKSk7Cisg
ICAgICAgICAgICByZWRlZmluZUltYWdlKGZhY2VJbmRleCwgbGV2ZWwsIG1JbWFnZUFycmF5W2Zh
Y2VJbmRleF1bYmFzZUxldmVsXS0+Z2V0SW50ZXJuYWxGb3JtYXQoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2w6OkV4dGVudHMoZmFjZUxldmVsU2l6ZSwgZmFjZUxldmVsU2l6ZSwgMSkp
OwogICAgICAgICB9CiAgICAgfQpAQCAtMTYyMywxOCArMTU0MCw5IEBACiAgICAgQVNTRVJUKGds
OjpJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KGluZGV4LnR5cGUpKTsKIAogICAgIC8vIGVuc3VyZSB0
aGUgdW5kZXJseWluZyB0ZXh0dXJlIGlzIGNyZWF0ZWQKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBl
bnN1cmVSZW5kZXJUYXJnZXQoKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkoZW5zdXJlUmVuZGVyVGFy
Z2V0KCkpOworICAgIEFOR0xFX1RSWSh1cGRhdGVTdG9yYWdlRmFjZUxldmVsKGluZGV4LmxheWVy
SW5kZXgsIGluZGV4Lm1pcEluZGV4KSk7CiAKLSAgICBlcnJvciA9IHVwZGF0ZVN0b3JhZ2VGYWNl
TGV2ZWwoaW5kZXgubGF5ZXJJbmRleCwgaW5kZXgubWlwSW5kZXgpOwotICAgIGlmIChlcnJvci5p
c0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQotCiAgICAgcmV0
dXJuIG1UZXhTdG9yYWdlLT5nZXRSZW5kZXJUYXJnZXQoaW5kZXgsIG91dFJUKTsKIH0KIApAQCAt
MTY0MywyNSArMTU1MSwyMSBAQAogICAgIC8vIE9ubHkgaW5pdGlhbGl6ZSB0aGUgZmlyc3QgdGlt
ZSB0aGlzIHRleHR1cmUgaXMgdXNlZCBhcyBhIHJlbmRlciB0YXJnZXQgb3Igc2hhZGVyIHJlc291
cmNlCiAgICAgaWYgKG1UZXhTdG9yYWdlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogICAgIH0KIAog
ICAgIC8vIGRvIG5vdCBhdHRlbXB0IHRvIGNyZWF0ZSBzdG9yYWdlIGZvciBub25leGlzdGFudCBk
YXRhCi0gICAgaWYgKCFpc0ZhY2VMZXZlbENvbXBsZXRlKDAsIDApKQorICAgIGlmICghaXNGYWNl
TGV2ZWxDb21wbGV0ZSgwLCBnZXRCYXNlTGV2ZWwoKSkpCiAgICAgewotICAgICAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAg
ICAgfQogCi0gICAgYm9vbCBjcmVhdGVSZW5kZXJUYXJnZXQgPSAocmVuZGVyVGFyZ2V0IHx8IElz
UmVuZGVyVGFyZ2V0VXNhZ2UobVVzYWdlKSk7CisgICAgYm9vbCBjcmVhdGVSZW5kZXJUYXJnZXQg
PSAocmVuZGVyVGFyZ2V0IHx8IElzUmVuZGVyVGFyZ2V0VXNhZ2UobVN0YXRlLmdldFVzYWdlKCkp
KTsKIAogICAgIFRleHR1cmVTdG9yYWdlICpzdG9yYWdlID0gTlVMTDsKLSAgICBnbDo6RXJyb3Ig
ZXJyb3IgPSBjcmVhdGVDb21wbGV0ZVN0b3JhZ2UoY3JlYXRlUmVuZGVyVGFyZ2V0LCAmc3RvcmFn
ZSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJv
cjsKLSAgICB9CisgICAgQU5HTEVfVFJZKGNyZWF0ZUNvbXBsZXRlU3RvcmFnZShjcmVhdGVSZW5k
ZXJUYXJnZXQsICZzdG9yYWdlKSk7CiAKLSAgICBlcnJvciA9IHNldENvbXBsZXRlVGV4U3RvcmFn
ZShzdG9yYWdlKTsKKyAgICBnbDo6RXJyb3IgZXJyb3IgPSBzZXRDb21wbGV0ZVRleFN0b3JhZ2Uo
c3RvcmFnZSk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7CiAgICAgICAgIFNhZmVE
ZWxldGUoc3RvcmFnZSk7CkBAIC0xNjcxLDE4ICsxNTc1LDE0IEBACiAgICAgQVNTRVJUKG1UZXhT
dG9yYWdlKTsKIAogICAgIC8vIGZsdXNoIGltYWdlIGRhdGEgdG8gdGhlIHN0b3JhZ2UKLSAgICBl
cnJvciA9IHVwZGF0ZVN0b3JhZ2UoKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkodXBkYXRlU3RvcmFn
ZSgpKTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBn
bDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZUQzRF9DdWJlOjpjcmVhdGVDb21w
bGV0ZVN0b3JhZ2UoYm9vbCByZW5kZXJUYXJnZXQsIFRleHR1cmVTdG9yYWdlICoqb3V0VGV4U3Rv
cmFnZSkgY29uc3QKIHsKLSAgICBHTHNpemVpIHNpemUgPSBnZXRCYXNlTGV2ZWxXaWR0aCgpOwor
ICAgIEdMc2l6ZWkgc2l6ZSA9IGdldExldmVsWmVyb1dpZHRoKCk7CiAKICAgICBBU1NFUlQoc2l6
ZSA+IDApOwogCkBAIC0xNzE4LDExICsxNjE4LDggQEAKICAgICAgICAgewogICAgICAgICAgICAg
Zm9yIChpbnQgbGV2ZWwgPSAwOyBsZXZlbCA8IG5ld0NvbXBsZXRlVGV4U3RvcmFnZS0+Z2V0TGV2
ZWxDb3VudCgpOyBsZXZlbCsrKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsOjpF
cnJvciBlcnJvciA9IG1JbWFnZUFycmF5W2ZhY2VJbmRleF1bbGV2ZWxdLT5zZXRNYW5hZ2VkU3Vy
ZmFjZUN1YmUobmV3Q29tcGxldGVUZXhTdG9yYWdlLCBmYWNlSW5kZXgsIGxldmVsKTsKLSAgICAg
ICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBBTkdMRV9UUlkobUltYWdlQXJyYXlbZmFjZUluZGV4XVtsZXZlbF0tPnNldE1hbmFn
ZWRTdXJmYWNlQ3ViZSgKKyAgICAgICAgICAgICAgICAgICAgbmV3Q29tcGxldGVUZXhTdG9yYWdl
LCBmYWNlSW5kZXgsIGxldmVsKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBA
IC0xNzQ0LDE2ICsxNjQxLDEyIEBACiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtSW1hZ2VB
cnJheVtmYWNlXVtsZXZlbF0tPmlzRGlydHkoKSAmJiBpc0ZhY2VMZXZlbENvbXBsZXRlKGZhY2Us
IGxldmVsKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbDo6RXJyb3IgZXJyb3Ig
PSB1cGRhdGVTdG9yYWdlRmFjZUxldmVsKGZhY2UsIGxldmVsKTsKLSAgICAgICAgICAgICAgICBp
ZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBBTkdM
RV9UUlkodXBkYXRlU3RvcmFnZUZhY2VMZXZlbChmYWNlLCBsZXZlbCkpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7
CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGJvb2wgVGV4dHVyZUQzRF9DdWJlOjpp
c1ZhbGlkRmFjZUxldmVsKGludCBmYWNlSW5kZXgsIGludCBsZXZlbCkgY29uc3QKQEAgLTE3NjMs
NyArMTY1NiwxMiBAQAogCiBib29sIFRleHR1cmVEM0RfQ3ViZTo6aXNGYWNlTGV2ZWxDb21wbGV0
ZShpbnQgZmFjZUluZGV4LCBpbnQgbGV2ZWwpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGxldmVsID49
IDAgJiYgZmFjZUluZGV4IDwgNiAmJiBsZXZlbCA8IChpbnQpQXJyYXlTaXplKG1JbWFnZUFycmF5
W2ZhY2VJbmRleF0pICYmIG1JbWFnZUFycmF5W2ZhY2VJbmRleF1bbGV2ZWxdICE9IE5VTEwpOwor
ICAgIGlmIChnZXRCYXNlTGV2ZWwoKSA+PSBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVf
TEVWRUxTKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBBU1NFUlQo
bGV2ZWwgPj0gMCAmJiBmYWNlSW5kZXggPCA2ICYmIGxldmVsIDwgKGludClBcnJheVNpemUobUlt
YWdlQXJyYXlbZmFjZUluZGV4XSkgJiYKKyAgICAgICAgICAgbUltYWdlQXJyYXlbZmFjZUluZGV4
XVtsZXZlbF0gIT0gbnVsbHB0cik7CiAKICAgICBpZiAoaXNJbW11dGFibGUoKSkKICAgICB7CkBA
IC0xNzcwLDkgKzE2NjgsOSBAQAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBp
bnQgYmFzZVNpemUgPSBnZXRCYXNlTGV2ZWxXaWR0aCgpOworICAgIGludCBsZXZlbFplcm9TaXpl
ID0gZ2V0TGV2ZWxaZXJvV2lkdGgoKTsKIAotICAgIGlmIChiYXNlU2l6ZSA8PSAwKQorICAgIGlm
IChsZXZlbFplcm9TaXplIDw9IDApCiAgICAgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQpAQCAtMTc5Myw3ICsxNjkxLDcgQEAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIGlmIChmYWNlTGV2ZWxJbWFnZS0+Z2V0V2lkdGgoKSAhPSBzdGQ6Om1heCgxLCBiYXNlU2l6
ZSA+PiBsZXZlbCkpCisgICAgaWYgKGZhY2VMZXZlbEltYWdlLT5nZXRXaWR0aCgpICE9IHN0ZDo6
bWF4KDEsIGxldmVsWmVyb1NpemUgPj4gbGV2ZWwpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KQEAgLTE4MTYsMjEgKzE3MTQsMTcgQEAKICAgICAgICAgR0xlbnVtIGZhY2VU
YXJnZXQgPSBnbDo6TGF5ZXJJbmRleFRvQ3ViZU1hcFRleHR1cmVUYXJnZXQoZmFjZUluZGV4KTsK
ICAgICAgICAgZ2w6OkltYWdlSW5kZXggaW5kZXggPSBnbDo6SW1hZ2VJbmRleDo6TWFrZUN1YmUo
ZmFjZVRhcmdldCwgbGV2ZWwpOwogICAgICAgICBnbDo6Qm94IHJlZ2lvbigwLCAwLCAwLCBpbWFn
ZS0+Z2V0V2lkdGgoKSwgaW1hZ2UtPmdldEhlaWdodCgpLCAxKTsKLSAgICAgICAgZ2w6OkVycm9y
IGVycm9yID0gY29tbWl0UmVnaW9uKGluZGV4LCByZWdpb24pOwotICAgICAgICBpZiAoZXJyb3Iu
aXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAg
IH0KKyAgICAgICAgQU5HTEVfVFJZKGNvbW1pdFJlZ2lvbihpbmRleCwgcmVnaW9uKSk7CiAgICAg
fQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CiB9CiAKIHZvaWQgVGV4dHVyZUQzRF9DdWJlOjpyZWRlZmluZUltYWdlKGludCBm
YWNlSW5kZXgsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIGNvbnN0IGdsOjpF
eHRlbnRzICZzaXplKQogewogICAgIC8vIElmIHRoZXJlIGN1cnJlbnRseSBpcyBhIGNvcnJlc3Bv
bmRpbmcgc3RvcmFnZSB0ZXh0dXJlIGltYWdlLCBpdCBoYXMgdGhlc2UgcGFyYW1ldGVycwotICAg
IGNvbnN0IGludCBzdG9yYWdlV2lkdGggPSBzdGQ6Om1heCgxLCBnZXRCYXNlTGV2ZWxXaWR0aCgp
ID4+IGxldmVsKTsKLSAgICBjb25zdCBpbnQgc3RvcmFnZUhlaWdodCA9IHN0ZDo6bWF4KDEsIGdl
dEJhc2VMZXZlbEhlaWdodCgpID4+IGxldmVsKTsKKyAgICBjb25zdCBpbnQgc3RvcmFnZVdpZHRo
ICAgICA9IHN0ZDo6bWF4KDEsIGdldExldmVsWmVyb1dpZHRoKCkgPj4gbGV2ZWwpOworICAgIGNv
bnN0IGludCBzdG9yYWdlSGVpZ2h0ICAgID0gc3RkOjptYXgoMSwgZ2V0TGV2ZWxaZXJvSGVpZ2h0
KCkgPj4gbGV2ZWwpOwogICAgIGNvbnN0IEdMZW51bSBzdG9yYWdlRm9ybWF0ID0gZ2V0QmFzZUxl
dmVsSW50ZXJuYWxGb3JtYXQoKTsKIAogICAgIG1JbWFnZUFycmF5W2ZhY2VJbmRleF1bbGV2ZWxd
LT5yZWRlZmluZShHTF9URVhUVVJFX0NVQkVfTUFQLCBpbnRlcm5hbGZvcm1hdCwgc2l6ZSwgZmFs
c2UpOwpAQCAtMTg0NCwxNyArMTczOCw4IEBACiAgICAgICAgICAgICBzaXplLmhlaWdodCAhPSBz
dG9yYWdlSGVpZ2h0IHx8CiAgICAgICAgICAgICBpbnRlcm5hbGZvcm1hdCAhPSBzdG9yYWdlRm9y
bWF0KSAgIC8vIERpc2NhcmQgbWlzbWF0Y2hlZCBzdG9yYWdlCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGZvciAoaW50IGRpcnR5TGV2ZWwgPSAwOyBkaXJ0eUxldmVsIDwgZ2w6OklNUExFTUVOVEFU
SU9OX01BWF9URVhUVVJFX0xFVkVMUzsgZGlydHlMZXZlbCsrKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGZvciAoaW50IGRpcnR5RmFjZSA9IDA7IGRpcnR5RmFjZSA8IDY7IGRpcnR5
RmFjZSsrKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgbUltYWdlQXJy
YXlbZGlydHlGYWNlXVtkaXJ0eUxldmVsXS0+bWFya0RpcnR5KCk7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotCisgICAgICAgICAgICBtYXJrQWxsSW1hZ2VzRGlydHkoKTsKICAg
ICAgICAgICAgIFNhZmVEZWxldGUobVRleFN0b3JhZ2UpOwotCi0gICAgICAgICAgICBtRGlydHlJ
bWFnZXMgPSB0cnVlOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTg3Niw5ICsxNzYxLDIxIEBA
CiAgICAgICAgICAgICBpbmRleC5taXBJbmRleCA+PSAwICYmIGluZGV4Lm1pcEluZGV4IDwgbVRl
eFN0b3JhZ2UtPmdldExldmVsQ291bnQoKSk7CiB9CiAKLVRleHR1cmVEM0RfM0Q6OlRleHR1cmVE
M0RfM0QoUmVuZGVyZXJEM0QgKnJlbmRlcmVyKQotICAgIDogVGV4dHVyZUQzRChyZW5kZXJlcikK
K3ZvaWQgVGV4dHVyZUQzRF9DdWJlOjptYXJrQWxsSW1hZ2VzRGlydHkoKQogeworICAgIGZvciAo
aW50IGRpcnR5TGV2ZWwgPSAwOyBkaXJ0eUxldmVsIDwgZ2w6OklNUExFTUVOVEFUSU9OX01BWF9U
RVhUVVJFX0xFVkVMUzsgZGlydHlMZXZlbCsrKQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgZGly
dHlGYWNlID0gMDsgZGlydHlGYWNlIDwgNjsgZGlydHlGYWNlKyspCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1JbWFnZUFycmF5W2RpcnR5RmFjZV1bZGlydHlMZXZlbF0tPm1hcmtEaXJ0eSgpOwor
ICAgICAgICB9CisgICAgfQorICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7Cit9CisKK1RleHR1cmVE
M0RfM0Q6OlRleHR1cmVEM0RfM0QoY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmc3RhdGUsIFJlbmRl
cmVyRDNEICpyZW5kZXJlcikKKyAgICA6IFRleHR1cmVEM0Qoc3RhdGUsIHJlbmRlcmVyKQorewog
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZ2w6OklNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xF
VkVMUzsgKytpKQogICAgIHsKICAgICAgICAgbUltYWdlQXJyYXlbaV0gPSByZW5kZXJlci0+Y3Jl
YXRlSW1hZ2UoKTsKQEAgLTE5ODIsMjMgKzE4NzksMTYgQEAKICAgICBnbDo6SW1hZ2VJbmRleCBp
bmRleCA9IGdsOjpJbWFnZUluZGV4OjpNYWtlM0QobGV2ZWwpOwogCiAgICAgLy8gQXR0ZW1wdCBh
IGZhc3QgZ3B1IGNvcHkgb2YgdGhlIHBpeGVsIGRhdGEgdG8gdGhlIHN1cmZhY2UgaWYgdGhlIGFw
cCBib3VuZCBhbiB1bnBhY2sgYnVmZmVyCi0gICAgaWYgKGlzRmFzdFVucGFja2FibGUodW5wYWNr
LCBzaXplZEludGVybmFsRm9ybWF0KSAmJiAhc2l6ZS5lbXB0eSgpKQorICAgIGlmIChpc0Zhc3RV
bnBhY2thYmxlKHVucGFjaywgc2l6ZWRJbnRlcm5hbEZvcm1hdCkgJiYgIXNpemUuZW1wdHkoKSAm
JiBpc0xldmVsQ29tcGxldGUobGV2ZWwpKQogICAgIHsKICAgICAgICAgLy8gV2lsbCB0cnkgdG8g
Y3JlYXRlIFJUIHN0b3JhZ2UgaWYgaXQgZG9lcyBub3QgZXhpc3QKICAgICAgICAgUmVuZGVyVGFy
Z2V0RDNEICpkZXN0UmVuZGVyVGFyZ2V0ID0gTlVMTDsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9y
ID0gZ2V0UmVuZGVyVGFyZ2V0KGluZGV4LCAmZGVzdFJlbmRlclRhcmdldCk7Ci0gICAgICAgIGlm
IChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsK
LSAgICAgICAgfQorICAgICAgICBBTkdMRV9UUlkoZ2V0UmVuZGVyVGFyZ2V0KGluZGV4LCAmZGVz
dFJlbmRlclRhcmdldCkpOwogCiAgICAgICAgIGdsOjpCb3ggZGVzdEFyZWEoMCwgMCwgMCwgZ2V0
V2lkdGgobGV2ZWwpLCBnZXRIZWlnaHQobGV2ZWwpLCBnZXREZXB0aChsZXZlbCkpOwogCi0gICAg
ICAgIGVycm9yID0gZmFzdFVucGFja1BpeGVscyh1bnBhY2ssIHBpeGVscywgZGVzdEFyZWEsIHNp
emVkSW50ZXJuYWxGb3JtYXQsIHR5cGUsIGRlc3RSZW5kZXJUYXJnZXQpOwotICAgICAgICBpZiAo
ZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0g
ICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKGZhc3RVbnBhY2tQaXhlbHModW5wYWNrLCBwaXhl
bHMsIGRlc3RBcmVhLCBzaXplZEludGVybmFsRm9ybWF0LCB0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZXN0UmVuZGVyVGFyZ2V0KSk7CiAKICAgICAgICAgLy8gRW5z
dXJlIHdlIGRvbid0IG92ZXJ3cml0ZSBvdXIgbmV3bHkgaW5pdGlhbGl6ZWQgZGF0YQogICAgICAg
ICBtSW1hZ2VBcnJheVtsZXZlbF0tPm1hcmtDbGVhbigpOwpAQCAtMjAwOCwxMSArMTg5OCw3IEBA
CiAKICAgICBpZiAoIWZhc3RVbnBhY2tlZCkKICAgICB7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJv
ciA9IHNldEltYWdlSW1wbChpbmRleCwgdHlwZSwgdW5wYWNrLCBwaXhlbHMsIDApOwotICAgICAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJy
b3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKHNldEltYWdlSW1wbChpbmRleCwgdHlw
ZSwgdW5wYWNrLCBwaXhlbHMsIDApKTsKICAgICB9CiAKICAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsKQEAgLTIwMzIsMTUgKzE5MTgsMTAgQEAKICAgICBnbDo6SW1hZ2VJbmRleCBp
bmRleCA9IGdsOjpJbWFnZUluZGV4OjpNYWtlM0QobGV2ZWwpOwogCiAgICAgLy8gQXR0ZW1wdCBh
IGZhc3QgZ3B1IGNvcHkgb2YgdGhlIHBpeGVsIGRhdGEgdG8gdGhlIHN1cmZhY2UgaWYgdGhlIGFw
cCBib3VuZCBhbiB1bnBhY2sgYnVmZmVyCi0gICAgaWYgKGlzRmFzdFVucGFja2FibGUodW5wYWNr
LCBnZXRJbnRlcm5hbEZvcm1hdChsZXZlbCkpKQorICAgIGlmIChpc0Zhc3RVbnBhY2thYmxlKHVu
cGFjaywgZ2V0SW50ZXJuYWxGb3JtYXQobGV2ZWwpKSAmJiBpc0xldmVsQ29tcGxldGUobGV2ZWwp
KQogICAgIHsKICAgICAgICAgUmVuZGVyVGFyZ2V0RDNEICpkZXN0UmVuZGVyVGFyZ2V0ID0gTlVM
TDsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gZ2V0UmVuZGVyVGFyZ2V0KGluZGV4LCAmZGVz
dFJlbmRlclRhcmdldCk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQotCisgICAgICAgIEFOR0xFX1RS
WShnZXRSZW5kZXJUYXJnZXQoaW5kZXgsICZkZXN0UmVuZGVyVGFyZ2V0KSk7CiAgICAgICAgIEFT
U0VSVCghbUltYWdlQXJyYXlbbGV2ZWxdLT5pc0RpcnR5KCkpOwogCiAgICAgICAgIHJldHVybiBm
YXN0VW5wYWNrUGl4ZWxzKHVucGFjaywgcGl4ZWxzLCBhcmVhLCBnZXRJbnRlcm5hbEZvcm1hdChs
ZXZlbCksIHR5cGUsIGRlc3RSZW5kZXJUYXJnZXQpOwpAQCAtMjA3NSwxMiArMTk1Niw3IEBACiAg
ICAgQVNTRVJUKHRhcmdldCA9PSBHTF9URVhUVVJFXzNEKTsKIAogICAgIGdsOjpJbWFnZUluZGV4
IGluZGV4ID0gZ2w6OkltYWdlSW5kZXg6Ok1ha2UzRChzdGF0aWNfY2FzdDxHTGludD4obGV2ZWwp
KTsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBUZXh0dXJlRDNEOjpzdWJJbWFnZUNvbXByZXNzZWQo
aW5kZXgsIGFyZWEsIGZvcm1hdCwgdW5wYWNrLCBwaXhlbHMsIDApOwotICAgIGlmIChlcnJvci5p
c0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQotCisgICAgQU5H
TEVfVFJZKFRleHR1cmVEM0Q6OnN1YkltYWdlQ29tcHJlc3NlZChpbmRleCwgYXJlYSwgZm9ybWF0
LCB1bnBhY2ssIHBpeGVscywgMCkpOwogICAgIHJldHVybiBjb21taXRSZWdpb24oaW5kZXgsIGFy
ZWEpOwogfQogCkBAIC0yMTA0LDM3ICsxOTgwLDE4IEBACiAKICAgICBpZiAoY2FuQ3JlYXRlUmVu
ZGVyVGFyZ2V0Rm9ySW1hZ2UoaW5kZXgpKQogICAgIHsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9y
ID0gbUltYWdlQXJyYXlbbGV2ZWxdLT5jb3B5RnJvbUZyYW1lYnVmZmVyKGRlc3RPZmZzZXQsIHNv
dXJjZUFyZWEsIHNvdXJjZSk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQotCisgICAgICAgIEFOR0xF
X1RSWShtSW1hZ2VBcnJheVtsZXZlbF0tPmNvcHlGcm9tRnJhbWVidWZmZXIoZGVzdE9mZnNldCwg
c291cmNlQXJlYSwgc291cmNlKSk7CiAgICAgICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7CiAgICAg
fQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGVuc3VyZVJlbmRl
clRhcmdldCgpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KLQorICAgICAgICBBTkdMRV9UUlkoZW5z
dXJlUmVuZGVyVGFyZ2V0KCkpOwogICAgICAgICBpZiAoaXNWYWxpZExldmVsKGxldmVsKSkKICAg
ICAgICAgewotICAgICAgICAgICAgZXJyb3IgPSB1cGRhdGVTdG9yYWdlTGV2ZWwobGV2ZWwpOwot
ICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGVycm9y
ID0gbVJlbmRlcmVyLT5jb3B5SW1hZ2UzRChzb3VyY2UsIHNvdXJjZUFyZWEsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkdldEludGVybmFsRm9ybWF0SW5m
byhnZXRCYXNlTGV2ZWxJbnRlcm5hbEZvcm1hdCgpKS5mb3JtYXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdE9mZnNldCwgbVRleFN0b3JhZ2UsIGxldmVs
KTsKLSAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgQU5H
TEVfVFJZKHVwZGF0ZVN0b3JhZ2VMZXZlbChsZXZlbCkpOworICAgICAgICAgICAgQU5HTEVfVFJZ
KG1SZW5kZXJlci0+Y29weUltYWdlM0QoCisgICAgICAgICAgICAgICAgc291cmNlLCBzb3VyY2VB
cmVhLCBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGdldEJhc2VMZXZlbEludGVybmFsRm9ybWF0
KCkpLmZvcm1hdCwKKyAgICAgICAgICAgICAgICBkZXN0T2Zmc2V0LCBtVGV4U3RvcmFnZSwgbGV2
ZWwpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjE1OSw3ICsyMDE2LDcgQEAKICAgICB9CiAK
ICAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IFZlcmlmeSBzdG9yYWdlIGNyZWF0aW9uIGhhZCBubyBl
cnJvcnMKLSAgICBib29sIHJlbmRlclRhcmdldCA9IElzUmVuZGVyVGFyZ2V0VXNhZ2UobVVzYWdl
KTsKKyAgICBib29sIHJlbmRlclRhcmdldCA9IElzUmVuZGVyVGFyZ2V0VXNhZ2UobVN0YXRlLmdl
dFVzYWdlKCkpOwogICAgIFRleHR1cmVTdG9yYWdlICpzdG9yYWdlID0KICAgICAgICAgbVJlbmRl
cmVyLT5jcmVhdGVUZXh0dXJlU3RvcmFnZTNEKGludGVybmFsRm9ybWF0LCByZW5kZXJUYXJnZXQs
IHNpemUud2lkdGgsIHNpemUuaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZS5kZXB0aCwgc3RhdGljX2Nhc3Q8aW50PihsZXZlbHMpKTsKQEAgLTIx
NzEsMTYgKzIwMjgsMTEgQEAKICAgICAgICAgcmV0dXJuIGVycm9yOwogICAgIH0KIAotICAgIGVy
cm9yID0gdXBkYXRlU3RvcmFnZSgpOworICAgIEFOR0xFX1RSWSh1cGRhdGVTdG9yYWdlKCkpOwog
Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsK
LSAgICB9Ci0KICAgICBtSW1tdXRhYmxlID0gdHJ1ZTsKIAotICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiB2b2lkIFRleHR1
cmVEM0RfM0Q6OmJpbmRUZXhJbWFnZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpCkBAIC0yMTkzLDE2
ICsyMDQ1LDE3IEBACiAgICAgVU5SRUFDSEFCTEUoKTsKIH0KIAotCi12b2lkIFRleHR1cmVEM0Rf
M0Q6OmluaXRNaXBtYXBzSW1hZ2VzKCkKK3ZvaWQgVGV4dHVyZUQzRF8zRDo6aW5pdE1pcG1hcElt
YWdlcygpCiB7Ci0gICAgLy8gUHVyZ2UgYXJyYXkgbGV2ZWxzIDEgdGhyb3VnaCBxIGFuZCByZXNl
dCB0aGVtIHRvIHJlcHJlc2VudCB0aGUgZ2VuZXJhdGVkIG1pcG1hcCBsZXZlbHMuCi0gICAgaW50
IGxldmVsQ291bnQgPSBtaXBMZXZlbHMoKTsKLSAgICBmb3IgKGludCBsZXZlbCA9IDE7IGxldmVs
IDwgbGV2ZWxDb3VudDsgbGV2ZWwrKykKKyAgICBjb25zdCBHTHVpbnQgYmFzZUxldmVsID0gbVN0
YXRlLmdldEVmZmVjdGl2ZUJhc2VMZXZlbCgpOworICAgIGNvbnN0IEdMdWludCBtYXhMZXZlbCAg
PSBtU3RhdGUuZ2V0TWlwbWFwTWF4TGV2ZWwoKTsKKyAgICAvLyBQdXJnZSBhcnJheSBsZXZlbHMg
YmFzZUxldmVsICsgMSB0aHJvdWdoIHEgYW5kIHJlc2V0IHRoZW0gdG8gcmVwcmVzZW50IHRoZSBn
ZW5lcmF0ZWQgbWlwbWFwCisgICAgLy8gbGV2ZWxzLgorICAgIGZvciAoR0x1aW50IGxldmVsID0g
YmFzZUxldmVsICsgMTsgbGV2ZWwgPD0gbWF4TGV2ZWw7IGxldmVsKyspCiAgICAgewotICAgICAg
ICBnbDo6RXh0ZW50cyBsZXZlbFNpemUoc3RkOjptYXgoZ2V0QmFzZUxldmVsV2lkdGgoKSA+PiBs
ZXZlbCwgMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1heChnZXRCYXNl
TGV2ZWxIZWlnaHQoKSA+PiBsZXZlbCwgMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6Om1heChnZXRCYXNlTGV2ZWxEZXB0aCgpID4+IGxldmVsLCAxKSk7CisgICAgICAgIGds
OjpFeHRlbnRzIGxldmVsU2l6ZShzdGQ6Om1heChnZXRMZXZlbFplcm9XaWR0aCgpID4+IGxldmVs
LCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4KGdldExldmVsWmVy
b0hlaWdodCgpID4+IGxldmVsLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6bWF4KGdldExldmVsWmVyb0RlcHRoKCkgPj4gbGV2ZWwsIDEpKTsKICAgICAgICAgcmVkZWZp
bmVJbWFnZShsZXZlbCwgZ2V0QmFzZUxldmVsSW50ZXJuYWxGb3JtYXQoKSwgbGV2ZWxTaXplKTsK
ICAgICB9CiB9CkBAIC0yMjEwLDI3ICsyMDYzLDE1IEBACiBnbDo6RXJyb3IgVGV4dHVyZUQzRF8z
RDo6Z2V0UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwgUmVuZGVyVGFy
Z2V0RDNEICoqb3V0UlQpCiB7CiAgICAgLy8gZW5zdXJlIHRoZSB1bmRlcmx5aW5nIHRleHR1cmUg
aXMgY3JlYXRlZAotICAgIGdsOjpFcnJvciBlcnJvciA9IGVuc3VyZVJlbmRlclRhcmdldCgpOwot
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0g
ICAgfQorICAgIEFOR0xFX1RSWShlbnN1cmVSZW5kZXJUYXJnZXQoKSk7CiAKICAgICBpZiAoaW5k
ZXguaGFzTGF5ZXIoKSkKICAgICB7Ci0gICAgICAgIGVycm9yID0gdXBkYXRlU3RvcmFnZSgpOwot
ICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKHVwZGF0ZVN0b3JhZ2UoKSk7
CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGVycm9yID0gdXBkYXRlU3RvcmFnZUxl
dmVsKGluZGV4Lm1pcEluZGV4KTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9CisgICAgICAgIEFOR0xF
X1RSWSh1cGRhdGVTdG9yYWdlTGV2ZWwoaW5kZXgubWlwSW5kZXgpKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gbVRleFN0b3JhZ2UtPmdldFJlbmRlclRhcmdldChpbmRleCwgb3V0UlQpOwpAQCAtMjI0
NSwyMSArMjA4NiwxNyBAQAogICAgIH0KIAogICAgIC8vIGRvIG5vdCBhdHRlbXB0IHRvIGNyZWF0
ZSBzdG9yYWdlIGZvciBub25leGlzdGFudCBkYXRhCi0gICAgaWYgKCFpc0xldmVsQ29tcGxldGUo
MCkpCisgICAgaWYgKCFpc0xldmVsQ29tcGxldGUoZ2V0QmFzZUxldmVsKCkpKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiAgICAgfQogCi0gICAgYm9vbCBj
cmVhdGVSZW5kZXJUYXJnZXQgPSAocmVuZGVyVGFyZ2V0IHx8IElzUmVuZGVyVGFyZ2V0VXNhZ2Uo
bVVzYWdlKSk7CisgICAgYm9vbCBjcmVhdGVSZW5kZXJUYXJnZXQgPSAocmVuZGVyVGFyZ2V0IHx8
IElzUmVuZGVyVGFyZ2V0VXNhZ2UobVN0YXRlLmdldFVzYWdlKCkpKTsKIAogICAgIFRleHR1cmVT
dG9yYWdlICpzdG9yYWdlID0gTlVMTDsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBjcmVhdGVDb21w
bGV0ZVN0b3JhZ2UoY3JlYXRlUmVuZGVyVGFyZ2V0LCAmc3RvcmFnZSk7Ci0gICAgaWYgKGVycm9y
LmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5H
TEVfVFJZKGNyZWF0ZUNvbXBsZXRlU3RvcmFnZShjcmVhdGVSZW5kZXJUYXJnZXQsICZzdG9yYWdl
KSk7CiAKLSAgICBlcnJvciA9IHNldENvbXBsZXRlVGV4U3RvcmFnZShzdG9yYWdlKTsKKyAgICBn
bDo6RXJyb3IgZXJyb3IgPSBzZXRDb21wbGV0ZVRleFN0b3JhZ2Uoc3RvcmFnZSk7CiAgICAgaWYg
KGVycm9yLmlzRXJyb3IoKSkKICAgICB7CiAgICAgICAgIFNhZmVEZWxldGUoc3RvcmFnZSk7CkBA
IC0yMjY5LDIwICsyMTA2LDE2IEBACiAgICAgQVNTRVJUKG1UZXhTdG9yYWdlKTsKIAogICAgIC8v
IGZsdXNoIGltYWdlIGRhdGEgdG8gdGhlIHN0b3JhZ2UKLSAgICBlcnJvciA9IHVwZGF0ZVN0b3Jh
Z2UoKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVy
cm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkodXBkYXRlU3RvcmFnZSgpKTsKIAotICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQog
CiBnbDo6RXJyb3IgVGV4dHVyZUQzRF8zRDo6Y3JlYXRlQ29tcGxldGVTdG9yYWdlKGJvb2wgcmVu
ZGVyVGFyZ2V0LCBUZXh0dXJlU3RvcmFnZSAqKm91dFN0b3JhZ2UpIGNvbnN0CiB7Ci0gICAgR0xz
aXplaSB3aWR0aCA9IGdldEJhc2VMZXZlbFdpZHRoKCk7Ci0gICAgR0xzaXplaSBoZWlnaHQgPSBn
ZXRCYXNlTGV2ZWxIZWlnaHQoKTsKLSAgICBHTHNpemVpIGRlcHRoID0gZ2V0QmFzZUxldmVsRGVw
dGgoKTsKKyAgICBHTHNpemVpIHdpZHRoICAgICAgICAgPSBnZXRMZXZlbFplcm9XaWR0aCgpOwor
ICAgIEdMc2l6ZWkgaGVpZ2h0ICAgICAgICA9IGdldExldmVsWmVyb0hlaWdodCgpOworICAgIEdM
c2l6ZWkgZGVwdGggICAgICAgICA9IGdldExldmVsWmVyb0RlcHRoKCk7CiAgICAgR0xlbnVtIGlu
dGVybmFsRm9ybWF0ID0gZ2V0QmFzZUxldmVsSW50ZXJuYWxGb3JtYXQoKTsKIAogICAgIEFTU0VS
VCh3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCAmJiBkZXB0aCA+IDApOwpAQCAtMjMwNSw3ICsyMTM4
LDcgQEAKICAgICAvLyBXZSBkbyBub3Qgc3VwcG9ydCBtYW5hZ2VkIDNEIHN0b3JhZ2UsIGFzIHRo
YXQgaXMgRDNEOS9FUzItb25seQogICAgIEFTU0VSVCghbVRleFN0b3JhZ2UtPmlzTWFuYWdlZCgp
KTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZUQzRF8zRDo6dXBkYXRlU3RvcmFnZSgp
CkBAIC0yMzE2LDE1ICsyMTQ5LDExIEBACiAgICAgewogICAgICAgICBpZiAobUltYWdlQXJyYXlb
bGV2ZWxdLT5pc0RpcnR5KCkgJiYgaXNMZXZlbENvbXBsZXRlKGxldmVsKSkKICAgICAgICAgewot
ICAgICAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gdXBkYXRlU3RvcmFnZUxldmVsKGxldmVsKTsK
LSAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgQU5HTEVf
VFJZKHVwZGF0ZVN0b3JhZ2VMZXZlbChsZXZlbCkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7
CiB9CiAKIGJvb2wgVGV4dHVyZUQzRF8zRDo6aXNWYWxpZExldmVsKGludCBsZXZlbCkgY29uc3QK
QEAgLTIzNDEsOSArMjE3MCw5IEBACiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAg
IEdMc2l6ZWkgd2lkdGggPSBnZXRCYXNlTGV2ZWxXaWR0aCgpOwotICAgIEdMc2l6ZWkgaGVpZ2h0
ID0gZ2V0QmFzZUxldmVsSGVpZ2h0KCk7Ci0gICAgR0xzaXplaSBkZXB0aCA9IGdldEJhc2VMZXZl
bERlcHRoKCk7CisgICAgR0xzaXplaSB3aWR0aCAgPSBnZXRMZXZlbFplcm9XaWR0aCgpOworICAg
IEdMc2l6ZWkgaGVpZ2h0ID0gZ2V0TGV2ZWxaZXJvSGVpZ2h0KCk7CisgICAgR0xzaXplaSBkZXB0
aCAgPSBnZXRMZXZlbFplcm9EZXB0aCgpOwogCiAgICAgaWYgKHdpZHRoIDw9IDAgfHwgaGVpZ2h0
IDw9IDAgfHwgZGVwdGggPD0gMCkKICAgICB7CkBAIC0yMzUwLDcgKzIxNzksNyBAQAogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKGxldmVsID09IDApCisgICAgaWYgKGxl
dmVsID09IHN0YXRpY19jYXN0PGludD4oZ2V0QmFzZUxldmVsKCkpKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjM5NCwyOCArMjIyMywyNCBAQAogICAgIHsKICAgICAg
ICAgZ2w6OkltYWdlSW5kZXggaW5kZXggPSBnbDo6SW1hZ2VJbmRleDo6TWFrZTNEKGxldmVsKTsK
ICAgICAgICAgZ2w6OkJveCByZWdpb24oMCwgMCwgMCwgZ2V0V2lkdGgobGV2ZWwpLCBnZXRIZWln
aHQobGV2ZWwpLCBnZXREZXB0aChsZXZlbCkpOwotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBj
b21taXRSZWdpb24oaW5kZXgsIHJlZ2lvbik7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgICAg
ICBBTkdMRV9UUlkoY29tbWl0UmVnaW9uKGluZGV4LCByZWdpb24pKTsKICAgICB9CiAKLSAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
IH0KIAogdm9pZCBUZXh0dXJlRDNEXzNEOjpyZWRlZmluZUltYWdlKEdMaW50IGxldmVsLCBHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplKQogewogICAgIC8vIElm
IHRoZXJlIGN1cnJlbnRseSBpcyBhIGNvcnJlc3BvbmRpbmcgc3RvcmFnZSB0ZXh0dXJlIGltYWdl
LCBpdCBoYXMgdGhlc2UgcGFyYW1ldGVycwotICAgIGNvbnN0IGludCBzdG9yYWdlV2lkdGggPSBz
dGQ6Om1heCgxLCBnZXRCYXNlTGV2ZWxXaWR0aCgpID4+IGxldmVsKTsKLSAgICBjb25zdCBpbnQg
c3RvcmFnZUhlaWdodCA9IHN0ZDo6bWF4KDEsIGdldEJhc2VMZXZlbEhlaWdodCgpID4+IGxldmVs
KTsKLSAgICBjb25zdCBpbnQgc3RvcmFnZURlcHRoID0gc3RkOjptYXgoMSwgZ2V0QmFzZUxldmVs
RGVwdGgoKSA+PiBsZXZlbCk7Ci0gICAgY29uc3QgR0xlbnVtIHN0b3JhZ2VGb3JtYXQgPSBnZXRC
YXNlTGV2ZWxJbnRlcm5hbEZvcm1hdCgpOworICAgIGNvbnN0IGludCBzdG9yYWdlV2lkdGggID0g
c3RkOjptYXgoMSwgZ2V0TGV2ZWxaZXJvV2lkdGgoKSA+PiBsZXZlbCk7CisgICAgY29uc3QgaW50
IHN0b3JhZ2VIZWlnaHQgPSBzdGQ6Om1heCgxLCBnZXRMZXZlbFplcm9IZWlnaHQoKSA+PiBsZXZl
bCk7CisgICAgY29uc3QgaW50IHN0b3JhZ2VEZXB0aCAgPSBzdGQ6Om1heCgxLCBnZXRMZXZlbFpl
cm9EZXB0aCgpID4+IGxldmVsKTsKIAogICAgIG1JbWFnZUFycmF5W2xldmVsXS0+cmVkZWZpbmUo
R0xfVEVYVFVSRV8zRCwgaW50ZXJuYWxmb3JtYXQsIHNpemUsIGZhbHNlKTsKIAogICAgIGlmICht
VGV4U3RvcmFnZSkKICAgICB7CisgICAgICAgIGNvbnN0IEdMZW51bSBzdG9yYWdlRm9ybWF0ID0g
Z2V0QmFzZUxldmVsSW50ZXJuYWxGb3JtYXQoKTsKICAgICAgICAgY29uc3QgaW50IHN0b3JhZ2VM
ZXZlbHMgPSBtVGV4U3RvcmFnZS0+Z2V0TGV2ZWxDb3VudCgpOwogCiAgICAgICAgIGlmICgobGV2
ZWwgPj0gc3RvcmFnZUxldmVscyAmJiBzdG9yYWdlTGV2ZWxzICE9IDApIHx8CkBAIC0yNDI0LDEz
ICsyMjQ5LDggQEAKICAgICAgICAgICAgIHNpemUuZGVwdGggIT0gc3RvcmFnZURlcHRoIHx8CiAg
ICAgICAgICAgICBpbnRlcm5hbGZvcm1hdCAhPSBzdG9yYWdlRm9ybWF0KSAgIC8vIERpc2NhcmQg
bWlzbWF0Y2hlZCBzdG9yYWdlCiAgICAgICAgIHsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgZ2w6OklNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUzsgaSsrKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIG1JbWFnZUFycmF5W2ldLT5tYXJrRGlydHkoKTsKLSAg
ICAgICAgICAgIH0KLQorICAgICAgICAgICAgbWFya0FsbEltYWdlc0RpcnR5KCk7CiAgICAgICAg
ICAgICBTYWZlRGVsZXRlKG1UZXhTdG9yYWdlKTsKLSAgICAgICAgICAgIG1EaXJ0eUltYWdlcyA9
IHRydWU7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0yNDUzLDkgKzIyNzMsMjQgQEAKICAgICAg
ICAgICAgIGluZGV4Lm1pcEluZGV4ID49IDAgJiYgaW5kZXgubWlwSW5kZXggPCBtVGV4U3RvcmFn
ZS0+Z2V0TGV2ZWxDb3VudCgpKTsKIH0KIAotVGV4dHVyZUQzRF8yREFycmF5OjpUZXh0dXJlRDNE
XzJEQXJyYXkoUmVuZGVyZXJEM0QgKnJlbmRlcmVyKQotICAgIDogVGV4dHVyZUQzRChyZW5kZXJl
cikKK3ZvaWQgVGV4dHVyZUQzRF8zRDo6bWFya0FsbEltYWdlc0RpcnR5KCkKIHsKKyAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFM7IGkr
KykKKyAgICB7CisgICAgICAgIG1JbWFnZUFycmF5W2ldLT5tYXJrRGlydHkoKTsKKyAgICB9Cisg
ICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKK30KKworR0xpbnQgVGV4dHVyZUQzRF8zRDo6Z2V0TGV2
ZWxaZXJvRGVwdGgoKSBjb25zdAoreworICAgIEFTU0VSVChnbDo6Q291bnRMZWFkaW5nWmVyb3Mo
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdldEJhc2VMZXZlbERlcHRoKCkpKSA+IGdldEJhc2VMZXZl
bCgpKTsKKyAgICByZXR1cm4gZ2V0QmFzZUxldmVsRGVwdGgoKSA8PCBnZXRCYXNlTGV2ZWwoKTsK
K30KKworVGV4dHVyZUQzRF8yREFycmF5OjpUZXh0dXJlRDNEXzJEQXJyYXkoY29uc3QgZ2w6OlRl
eHR1cmVTdGF0ZSAmc3RhdGUsIFJlbmRlcmVyRDNEICpyZW5kZXJlcikKKyAgICA6IFRleHR1cmVE
M0Qoc3RhdGUsIHJlbmRlcmVyKQorewogICAgIGZvciAoaW50IGxldmVsID0gMDsgbGV2ZWwgPCBn
bDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTOyArK2xldmVsKQogICAgIHsKICAg
ICAgICAgbUxheWVyQ291bnRzW2xldmVsXSA9IDA7CkBAIC0yNTM4LDIxICsyMzczLDE5IEBACiAg
ICAgcmVkZWZpbmVJbWFnZShsZXZlbCwgc2l6ZWRJbnRlcm5hbEZvcm1hdCwgc2l6ZSk7CiAKICAg
ICBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxG
b3JtYXRJbmZvKHNpemVkSW50ZXJuYWxGb3JtYXQpOwotICAgIEdMc2l6ZWkgaW5wdXREZXB0aFBp
dGNoID0gZm9ybWF0SW5mby5jb21wdXRlRGVwdGhQaXRjaCgKLSAgICAgICAgdHlwZSwgc2l6ZS53
aWR0aCwgc2l6ZS5oZWlnaHQsIHVucGFjay5hbGlnbm1lbnQsIHVucGFjay5yb3dMZW5ndGgsIHVu
cGFjay5pbWFnZUhlaWdodCk7CisgICAgR0xzaXplaSBpbnB1dERlcHRoUGl0Y2ggICAgICAgICAg
ICAgID0gMDsKKyAgICBBTkdMRV9UUllfUkVTVUxUKGZvcm1hdEluZm8uY29tcHV0ZURlcHRoUGl0
Y2godHlwZSwgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQsIHVucGFjay5hbGlnbm1lbnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVucGFjay5yb3dM
ZW5ndGgsIHVucGFjay5pbWFnZUhlaWdodCksCisgICAgICAgICAgICAgICAgICAgICBpbnB1dERl
cHRoUGl0Y2gpOwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplLmRlcHRoOyBpKyspCiAg
ICAgewogICAgICAgICBjb25zdCBwdHJkaWZmX3QgbGF5ZXJPZmZzZXQgPSAoaW5wdXREZXB0aFBp
dGNoICogaSk7CiAgICAgICAgIGdsOjpJbWFnZUluZGV4IGluZGV4ID0gZ2w6OkltYWdlSW5kZXg6
Ok1ha2UyREFycmF5KGxldmVsLCBpKTsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gc2V0SW1h
Z2VJbXBsKGluZGV4LCB0eXBlLCB1bnBhY2ssIHBpeGVscywgbGF5ZXJPZmZzZXQpOwotICAgICAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJy
b3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKHNldEltYWdlSW1wbChpbmRleCwgdHlw
ZSwgdW5wYWNrLCBwaXhlbHMsIGxheWVyT2Zmc2V0KSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGds
OjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGds
OjpFcnJvciBUZXh0dXJlRDNEXzJEQXJyYXk6OnNldFN1YkltYWdlKEdMZW51bSB0YXJnZXQsCkBA
IC0yNTY2LDggKzIzOTksMTAgQEAKICAgICBBU1NFUlQodGFyZ2V0ID09IEdMX1RFWFRVUkVfMkRf
QVJSQVkpOwogICAgIEdMaW50IGxldmVsICAgICAgICAgICAgICAgICAgICAgICAgICA9IHN0YXRp
Y19jYXN0PEdMaW50PihpbWFnZUxldmVsKTsKICAgICBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQg
JmZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGdldEludGVybmFsRm9ybWF0
KGxldmVsKSk7Ci0gICAgR0xzaXplaSBpbnB1dERlcHRoUGl0Y2ggPSBmb3JtYXRJbmZvLmNvbXB1
dGVEZXB0aFBpdGNoKAotICAgICAgICB0eXBlLCBhcmVhLndpZHRoLCBhcmVhLmhlaWdodCwgdW5w
YWNrLmFsaWdubWVudCwgdW5wYWNrLnJvd0xlbmd0aCwgdW5wYWNrLmltYWdlSGVpZ2h0KTsKKyAg
ICBHTHNpemVpIGlucHV0RGVwdGhQaXRjaCAgICAgICAgICAgICAgPSAwOworICAgIEFOR0xFX1RS
WV9SRVNVTFQoZm9ybWF0SW5mby5jb21wdXRlRGVwdGhQaXRjaCh0eXBlLCBhcmVhLndpZHRoLCBh
cmVhLmhlaWdodCwgdW5wYWNrLmFsaWdubWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5wYWNrLnJvd0xlbmd0aCwgdW5wYWNrLmltYWdlSGVp
Z2h0KSwKKyAgICAgICAgICAgICAgICAgICAgIGlucHV0RGVwdGhQaXRjaCk7CiAKICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGFyZWEuZGVwdGg7IGkrKykKICAgICB7CkBAIC0yNTc3LDE0ICsyNDEy
LDExIEBACiAgICAgICAgIGdsOjpCb3ggbGF5ZXJBcmVhKGFyZWEueCwgYXJlYS55LCAwLCBhcmVh
LndpZHRoLCBhcmVhLmhlaWdodCwgMSk7CiAKICAgICAgICAgZ2w6OkltYWdlSW5kZXggaW5kZXgg
PSBnbDo6SW1hZ2VJbmRleDo6TWFrZTJEQXJyYXkobGV2ZWwsIGxheWVyKTsKLSAgICAgICAgZ2w6
OkVycm9yIGVycm9yID0gVGV4dHVyZUQzRDo6c3ViSW1hZ2UoaW5kZXgsIGxheWVyQXJlYSwgZm9y
bWF0LCB0eXBlLCB1bnBhY2ssIHBpeGVscywgbGF5ZXJPZmZzZXQpOwotICAgICAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAg
ICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKAorICAgICAgICAgICAgVGV4dHVyZUQzRDo6c3ViSW1h
Z2UoaW5kZXgsIGxheWVyQXJlYSwgZm9ybWF0LCB0eXBlLCB1bnBhY2ssIHBpeGVscywgbGF5ZXJP
ZmZzZXQpKTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAg
ICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFRleHR1cmVEM0RfMkRBcnJh
eTo6c2V0Q29tcHJlc3NlZEltYWdlKEdMZW51bSB0YXJnZXQsCkBAIC0yNjAyLDggKzI0MzQsMTAg
QEAKICAgICByZWRlZmluZUltYWdlKGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgc2l6ZSk7CiAKICAg
ICBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxG
b3JtYXRJbmZvKGludGVybmFsRm9ybWF0KTsKLSAgICBHTHNpemVpIGlucHV0RGVwdGhQaXRjaCA9
Ci0gICAgICAgIGZvcm1hdEluZm8uY29tcHV0ZURlcHRoUGl0Y2goR0xfVU5TSUdORURfQllURSwg
c2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQsIDEsIDAsIDApOworICAgIEdMc2l6ZWkgaW5wdXREZXB0
aFBpdGNoICAgICAgICAgICAgICA9IDA7CisgICAgQU5HTEVfVFJZX1JFU1VMVCgKKyAgICAgICAg
Zm9ybWF0SW5mby5jb21wdXRlRGVwdGhQaXRjaChHTF9VTlNJR05FRF9CWVRFLCBzaXplLndpZHRo
LCBzaXplLmhlaWdodCwgMSwgMCwgMCksCisgICAgICAgIGlucHV0RGVwdGhQaXRjaCk7CiAKICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IHNpemUuZGVwdGg7IGkrKykKICAgICB7CkBAIC0yNjEwLDE0
ICsyNDQ0LDEwIEBACiAgICAgICAgIGNvbnN0IHB0cmRpZmZfdCBsYXllck9mZnNldCA9IChpbnB1
dERlcHRoUGl0Y2ggKiBpKTsKIAogICAgICAgICBnbDo6SW1hZ2VJbmRleCBpbmRleCA9IGdsOjpJ
bWFnZUluZGV4OjpNYWtlMkRBcnJheShsZXZlbCwgaSk7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJv
ciA9IHNldENvbXByZXNzZWRJbWFnZUltcGwoaW5kZXgsIHVucGFjaywgcGl4ZWxzLCBsYXllck9m
ZnNldCk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBBTkdMRV9UUlkoc2V0Q29tcHJl
c3NlZEltYWdlSW1wbChpbmRleCwgdW5wYWNrLCBwaXhlbHMsIGxheWVyT2Zmc2V0KSk7CiAgICAg
fQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlRDNEXzJEQXJyYXk6OnNldENvbXByZXNz
ZWRTdWJJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0IGdsOjpCb3ggJmFy
ZWEsIEdMZW51bSBmb3JtYXQsCkBAIC0yNjI2LDggKzI0NTYsMTAgQEAKICAgICBBU1NFUlQodGFy
Z2V0ID09IEdMX1RFWFRVUkVfMkRfQVJSQVkpOwogCiAgICAgY29uc3QgZ2w6OkludGVybmFsRm9y
bWF0ICZmb3JtYXRJbmZvID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhmb3JtYXQpOwotICAg
IEdMc2l6ZWkgaW5wdXREZXB0aFBpdGNoID0KLSAgICAgICAgZm9ybWF0SW5mby5jb21wdXRlRGVw
dGhQaXRjaChHTF9VTlNJR05FRF9CWVRFLCBhcmVhLndpZHRoLCBhcmVhLmhlaWdodCwgMSwgMCwg
MCk7CisgICAgR0xzaXplaSBpbnB1dERlcHRoUGl0Y2ggICAgICAgICAgICAgID0gMDsKKyAgICBB
TkdMRV9UUllfUkVTVUxUKAorICAgICAgICBmb3JtYXRJbmZvLmNvbXB1dGVEZXB0aFBpdGNoKEdM
X1VOU0lHTkVEX0JZVEUsIGFyZWEud2lkdGgsIGFyZWEuaGVpZ2h0LCAxLCAwLCAwKSwKKyAgICAg
ICAgaW5wdXREZXB0aFBpdGNoKTsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJlYS5kZXB0
aDsgaSsrKQogICAgIHsKQEAgLTI2MzcsMTcgKzI0NjksOSBAQAogICAgICAgICBnbDo6Qm94IGxh
eWVyQXJlYShhcmVhLngsIGFyZWEueSwgMCwgYXJlYS53aWR0aCwgYXJlYS5oZWlnaHQsIDEpOwog
CiAgICAgICAgIGdsOjpJbWFnZUluZGV4IGluZGV4ID0gZ2w6OkltYWdlSW5kZXg6Ok1ha2UyREFy
cmF5KHN0YXRpY19jYXN0PEdMaW50PihsZXZlbCksIGxheWVyKTsKLSAgICAgICAgZ2w6OkVycm9y
IGVycm9yID0gVGV4dHVyZUQzRDo6c3ViSW1hZ2VDb21wcmVzc2VkKGluZGV4LCBsYXllckFyZWEs
IGZvcm1hdCwgdW5wYWNrLCBwaXhlbHMsIGxheWVyT2Zmc2V0KTsKLSAgICAgICAgaWYgKGVycm9y
LmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZXJyb3IgPSBjb21taXRSZWdpb24oaW5kZXgsIGxheWVyQXJlYSk7Ci0g
ICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBBTkdMRV9UUlkoCisgICAgICAgICAgICBUZXh0
dXJlRDNEOjpzdWJJbWFnZUNvbXByZXNzZWQoaW5kZXgsIGxheWVyQXJlYSwgZm9ybWF0LCB1bnBh
Y2ssIHBpeGVscywgbGF5ZXJPZmZzZXQpKTsKKyAgICAgICAgQU5HTEVfVFJZKGNvbW1pdFJlZ2lv
bihpbmRleCwgbGF5ZXJBcmVhKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9O
T19FUlJPUik7CkBAIC0yNjc0LDM3ICsyNDk4LDIxIEBACiAgICAgaWYgKGNhbkNyZWF0ZVJlbmRl
clRhcmdldEZvckltYWdlKGluZGV4KSkKICAgICB7CiAgICAgICAgIGdsOjpPZmZzZXQgZGVzdExh
eWVyT2Zmc2V0KGRlc3RPZmZzZXQueCwgZGVzdE9mZnNldC55LCAwKTsKLSAgICAgICAgZ2w6OkVy
cm9yIGVycm9yID0gbUltYWdlQXJyYXlbbGV2ZWxdW2Rlc3RPZmZzZXQuel0tPmNvcHlGcm9tRnJh
bWVidWZmZXIoZGVzdExheWVyT2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VB
cmVhLCBzb3VyY2UpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KLQorICAgICAgICBBTkdMRV9UUlko
bUltYWdlQXJyYXlbbGV2ZWxdW2Rlc3RPZmZzZXQuel0tPmNvcHlGcm9tRnJhbWVidWZmZXIoZGVz
dExheWVyT2Zmc2V0LCBzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlKSk7CiAgICAg
ICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAg
IGdsOjpFcnJvciBlcnJvciA9IGVuc3VyZVJlbmRlclRhcmdldCgpOwotICAgICAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAg
ICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKGVuc3VyZVJlbmRlclRhcmdldCgpKTsKIAogICAgICAg
ICBpZiAoaXNWYWxpZExldmVsKGxldmVsKSkKICAgICAgICAgewotICAgICAgICAgICAgZXJyb3Ig
PSB1cGRhdGVTdG9yYWdlTGV2ZWwobGV2ZWwpOwotICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJy
b3IoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIGVycm9yID0gbVJlbmRlcmVyLT5jb3B5SW1hZ2UyREFy
cmF5KHNvdXJjZSwgc291cmNlQXJlYSwgZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhnZXRJbnRl
cm5hbEZvcm1hdCgwKSkuZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVzdE9mZnNldCwgbVRleFN0b3JhZ2UsIGxldmVsKTsKLSAgICAgICAg
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIGVycm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgQU5HTEVfVFJZKHVwZGF0
ZVN0b3JhZ2VMZXZlbChsZXZlbCkpOworICAgICAgICAgICAgQU5HTEVfVFJZKG1SZW5kZXJlci0+
Y29weUltYWdlMkRBcnJheSgKKyAgICAgICAgICAgICAgICBzb3VyY2UsIHNvdXJjZUFyZWEsCisg
ICAgICAgICAgICAgICAgZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhnZXRJbnRlcm5hbEZvcm1h
dChnZXRCYXNlTGV2ZWwoKSkpLmZvcm1hdCwgZGVzdE9mZnNldCwKKyAgICAgICAgICAgICAgICBt
VGV4U3RvcmFnZSwgbGV2ZWwpKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX05PX0VSUk9SKTsKQEAgLTI3MzgsNyArMjU0Niw3IEBACiAgICAgfQogCiAgICAgLy8g
VE9ETyhnZW9mZmxhbmcpOiBWZXJpZnkgc3RvcmFnZSBjcmVhdGlvbiBoYWQgbm8gZXJyb3JzCi0g
ICAgYm9vbCByZW5kZXJUYXJnZXQgPSBJc1JlbmRlclRhcmdldFVzYWdlKG1Vc2FnZSk7CisgICAg
Ym9vbCByZW5kZXJUYXJnZXQgPSBJc1JlbmRlclRhcmdldFVzYWdlKG1TdGF0ZS5nZXRVc2FnZSgp
KTsKICAgICBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSA9CiAgICAgICAgIG1SZW5kZXJlci0+Y3Jl
YXRlVGV4dHVyZVN0b3JhZ2UyREFycmF5KGludGVybmFsRm9ybWF0LCByZW5kZXJUYXJnZXQsIHNp
emUud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemUuaGVpZ2h0LCBzaXplLmRlcHRoLCBzdGF0aWNfY2FzdDxpbnQ+KGxldmVscykpOwpAQCAt
Mjc1MCwxNiArMjU1OCwxMSBAQAogICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgfQogCi0gICAg
ZXJyb3IgPSB1cGRhdGVTdG9yYWdlKCk7CisgICAgQU5HTEVfVFJZKHVwZGF0ZVN0b3JhZ2UoKSk7
CiAKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9y
OwotICAgIH0KLQogICAgIG1JbW11dGFibGUgPSB0cnVlOwogCi0gICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIHZvaWQgVGV4
dHVyZUQzRF8yREFycmF5OjpiaW5kVGV4SW1hZ2UoZWdsOjpTdXJmYWNlICpzdXJmYWNlKQpAQCAt
Mjc3MiwxOCArMjU3NSwyMCBAQAogICAgIFVOUkVBQ0hBQkxFKCk7CiB9CiAKLQotdm9pZCBUZXh0
dXJlRDNEXzJEQXJyYXk6OmluaXRNaXBtYXBzSW1hZ2VzKCkKK3ZvaWQgVGV4dHVyZUQzRF8yREFy
cmF5Ojppbml0TWlwbWFwSW1hZ2VzKCkKIHsKLSAgICBpbnQgYmFzZVdpZHRoID0gZ2V0QmFzZUxl
dmVsV2lkdGgoKTsKLSAgICBpbnQgYmFzZUhlaWdodCA9IGdldEJhc2VMZXZlbEhlaWdodCgpOwot
ICAgIGludCBiYXNlRGVwdGggPSBnZXRMYXllckNvdW50KDApOworICAgIGNvbnN0IEdMdWludCBi
YXNlTGV2ZWwgPSBtU3RhdGUuZ2V0RWZmZWN0aXZlQmFzZUxldmVsKCk7CisgICAgY29uc3QgR0x1
aW50IG1heExldmVsICA9IG1TdGF0ZS5nZXRNaXBtYXBNYXhMZXZlbCgpOworICAgIGludCBiYXNl
V2lkdGggICAgID0gZ2V0TGV2ZWxaZXJvV2lkdGgoKTsKKyAgICBpbnQgYmFzZUhlaWdodCAgICA9
IGdldExldmVsWmVyb0hlaWdodCgpOworICAgIGludCBiYXNlRGVwdGggICAgID0gZ2V0TGF5ZXJD
b3VudChnZXRCYXNlTGV2ZWwoKSk7CiAgICAgR0xlbnVtIGJhc2VGb3JtYXQgPSBnZXRCYXNlTGV2
ZWxJbnRlcm5hbEZvcm1hdCgpOwogCi0gICAgLy8gUHVyZ2UgYXJyYXkgbGV2ZWxzIDEgdGhyb3Vn
aCBxIGFuZCByZXNldCB0aGVtIHRvIHJlcHJlc2VudCB0aGUgZ2VuZXJhdGVkIG1pcG1hcCBsZXZl
bHMuCi0gICAgaW50IGxldmVsQ291bnQgPSBtaXBMZXZlbHMoKTsKLSAgICBmb3IgKGludCBsZXZl
bCA9IDE7IGxldmVsIDwgbGV2ZWxDb3VudDsgbGV2ZWwrKykKKyAgICAvLyBQdXJnZSBhcnJheSBs
ZXZlbHMgYmFzZUxldmVsICsgMSB0aHJvdWdoIHEgYW5kIHJlc2V0IHRoZW0gdG8gcmVwcmVzZW50
IHRoZSBnZW5lcmF0ZWQgbWlwbWFwCisgICAgLy8gbGV2ZWxzLgorICAgIGZvciAoR0x1aW50IGxl
dmVsID0gYmFzZUxldmVsICsgMXU7IGxldmVsIDw9IG1heExldmVsOyBsZXZlbCsrKQogICAgIHsK
KyAgICAgICAgQVNTRVJUKChiYXNlV2lkdGggPj4gbGV2ZWwpID4gMCB8fCAoYmFzZUhlaWdodCA+
PiBsZXZlbCkgPiAwKTsKICAgICAgICAgZ2w6OkV4dGVudHMgbGV2ZWxMYXllclNpemUoc3RkOjpt
YXgoYmFzZVdpZHRoID4+IGxldmVsLCAxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjptYXgoYmFzZUhlaWdodCA+PiBsZXZlbCwgMSksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJhc2VEZXB0aCk7CkBAIC0yNzk0LDE4ICsyNTk5LDggQEAKIGds
OjpFcnJvciBUZXh0dXJlRDNEXzJEQXJyYXk6OmdldFJlbmRlclRhcmdldChjb25zdCBnbDo6SW1h
Z2VJbmRleCAmaW5kZXgsIFJlbmRlclRhcmdldEQzRCAqKm91dFJUKQogewogICAgIC8vIGVuc3Vy
ZSB0aGUgdW5kZXJseWluZyB0ZXh0dXJlIGlzIGNyZWF0ZWQKLSAgICBnbDo6RXJyb3IgZXJyb3Ig
PSBlbnN1cmVSZW5kZXJUYXJnZXQoKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KLQotICAgIGVycm9yID0gdXBkYXRlU3RvcmFn
ZUxldmVsKGluZGV4Lm1pcEluZGV4KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KLQorICAgIEFOR0xFX1RSWShlbnN1cmVSZW5k
ZXJUYXJnZXQoKSk7CisgICAgQU5HTEVfVFJZKHVwZGF0ZVN0b3JhZ2VMZXZlbChpbmRleC5taXBJ
bmRleCkpOwogICAgIHJldHVybiBtVGV4U3RvcmFnZS0+Z2V0UmVuZGVyVGFyZ2V0KGluZGV4LCBv
dXRSVCk7CiB9CiAKQEAgLTI4MTQsMjUgKzI2MDksMjEgQEAKICAgICAvLyBPbmx5IGluaXRpYWxp
emUgdGhlIGZpcnN0IHRpbWUgdGhpcyB0ZXh0dXJlIGlzIHVzZWQgYXMgYSByZW5kZXIgdGFyZ2V0
IG9yIHNoYWRlciByZXNvdXJjZQogICAgIGlmIChtVGV4U3RvcmFnZSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJy
b3IoKTsKICAgICB9CiAKICAgICAvLyBkbyBub3QgYXR0ZW1wdCB0byBjcmVhdGUgc3RvcmFnZSBm
b3Igbm9uZXhpc3RhbnQgZGF0YQotICAgIGlmICghaXNMZXZlbENvbXBsZXRlKDApKQorICAgIGlm
ICghaXNMZXZlbENvbXBsZXRlKGdldEJhc2VMZXZlbCgpKSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
ICAgICB9CiAKLSAgICBib29sIGNyZWF0ZVJlbmRlclRhcmdldCA9IChyZW5kZXJUYXJnZXQgfHwg
SXNSZW5kZXJUYXJnZXRVc2FnZShtVXNhZ2UpKTsKKyAgICBib29sIGNyZWF0ZVJlbmRlclRhcmdl
dCA9IChyZW5kZXJUYXJnZXQgfHwgSXNSZW5kZXJUYXJnZXRVc2FnZShtU3RhdGUuZ2V0VXNhZ2Uo
KSkpOwogCi0gICAgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UgPSBOVUxMOwotICAgIGdsOjpFcnJv
ciBlcnJvciA9IGNyZWF0ZUNvbXBsZXRlU3RvcmFnZShjcmVhdGVSZW5kZXJUYXJnZXQsICZzdG9y
YWdlKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVy
cm9yOwotICAgIH0KKyAgICBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSA9IG51bGxwdHI7CisgICAg
QU5HTEVfVFJZKGNyZWF0ZUNvbXBsZXRlU3RvcmFnZShjcmVhdGVSZW5kZXJUYXJnZXQsICZzdG9y
YWdlKSk7CiAKLSAgICBlcnJvciA9IHNldENvbXBsZXRlVGV4U3RvcmFnZShzdG9yYWdlKTsKKyAg
ICBnbDo6RXJyb3IgZXJyb3IgPSBzZXRDb21wbGV0ZVRleFN0b3JhZ2Uoc3RvcmFnZSk7CiAgICAg
aWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7CiAgICAgICAgIFNhZmVEZWxldGUoc3RvcmFnZSk7
CkBAIC0yODQyLDIwICsyNjMzLDE2IEBACiAgICAgQVNTRVJUKG1UZXhTdG9yYWdlKTsKIAogICAg
IC8vIGZsdXNoIGltYWdlIGRhdGEgdG8gdGhlIHN0b3JhZ2UKLSAgICBlcnJvciA9IHVwZGF0ZVN0
b3JhZ2UoKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkodXBkYXRlU3RvcmFnZSgpKTsKIAotICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwog
fQogCiBnbDo6RXJyb3IgVGV4dHVyZUQzRF8yREFycmF5OjpjcmVhdGVDb21wbGV0ZVN0b3JhZ2Uo
Ym9vbCByZW5kZXJUYXJnZXQsIFRleHR1cmVTdG9yYWdlICoqb3V0U3RvcmFnZSkgY29uc3QKIHsK
LSAgICBHTHNpemVpIHdpZHRoID0gZ2V0QmFzZUxldmVsV2lkdGgoKTsKLSAgICBHTHNpemVpIGhl
aWdodCA9IGdldEJhc2VMZXZlbEhlaWdodCgpOwotICAgIEdMc2l6ZWkgZGVwdGggPSBnZXRMYXll
ckNvdW50KDApOworICAgIEdMc2l6ZWkgd2lkdGggICAgICAgICA9IGdldExldmVsWmVyb1dpZHRo
KCk7CisgICAgR0xzaXplaSBoZWlnaHQgICAgICAgID0gZ2V0TGV2ZWxaZXJvSGVpZ2h0KCk7Cisg
ICAgR0xzaXplaSBkZXB0aCAgICAgICAgID0gZ2V0TGF5ZXJDb3VudChnZXRCYXNlTGV2ZWwoKSk7
CiAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0ID0gZ2V0QmFzZUxldmVsSW50ZXJuYWxGb3JtYXQo
KTsKIAogICAgIEFTU0VSVCh3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCAmJiBkZXB0aCA+IDApOwpA
QCAtMjg2Niw3ICsyNjUzLDcgQEAKICAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IFZlcmlmeSBzdG9y
YWdlIGNyZWF0aW9uIHN1Y2NlZWRzCiAgICAgKm91dFN0b3JhZ2UgPSBtUmVuZGVyZXItPmNyZWF0
ZVRleHR1cmVTdG9yYWdlMkRBcnJheShpbnRlcm5hbEZvcm1hdCwgcmVuZGVyVGFyZ2V0LCB3aWR0
aCwgaGVpZ2h0LCBkZXB0aCwgbGV2ZWxzKTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9f
RVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVy
ZUQzRF8yREFycmF5OjpzZXRDb21wbGV0ZVRleFN0b3JhZ2UoVGV4dHVyZVN0b3JhZ2UgKm5ld0Nv
bXBsZXRlVGV4U3RvcmFnZSkKQEAgLTI4NzgsNyArMjY2NSw3IEBACiAgICAgLy8gV2UgZG8gbm90
IHN1cHBvcnQgbWFuYWdlZCAyRCBhcnJheSBzdG9yYWdlLCBhcyBtYW5hZ2VkIHN0b3JhZ2UgaXMg
RVMyL0QzRDkgb25seQogICAgIEFTU0VSVCghbVRleFN0b3JhZ2UtPmlzTWFuYWdlZCgpKTsKIAot
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJv
cigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZUQzRF8yREFycmF5Ojp1cGRhdGVTdG9yYWdlKCkK
QEAgLTI4ODksMTUgKzI2NzYsMTEgQEAKICAgICB7CiAgICAgICAgIGlmIChpc0xldmVsQ29tcGxl
dGUobGV2ZWwpKQogICAgICAgICB7Ci0gICAgICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSB1cGRh
dGVTdG9yYWdlTGV2ZWwobGV2ZWwpOwotICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAg
ICB9CisgICAgICAgICAgICBBTkdMRV9UUlkodXBkYXRlU3RvcmFnZUxldmVsKGxldmVsKSk7CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAg
ICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogYm9vbCBUZXh0dXJlRDNEXzJEQXJyYXk6Omlz
VmFsaWRMZXZlbChpbnQgbGV2ZWwpIGNvbnN0CkBAIC0yOTE0LDIxICsyNjk3LDI5IEBACiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIEdMc2l6ZWkgd2lkdGggPSBnZXRCYXNlTGV2
ZWxXaWR0aCgpOwotICAgIEdMc2l6ZWkgaGVpZ2h0ID0gZ2V0QmFzZUxldmVsSGVpZ2h0KCk7Ci0g
ICAgR0xzaXplaSBsYXllcnMgPSBnZXRMYXllckNvdW50KDApOworICAgIEdMc2l6ZWkgd2lkdGgg
ID0gZ2V0TGV2ZWxaZXJvV2lkdGgoKTsKKyAgICBHTHNpemVpIGhlaWdodCA9IGdldExldmVsWmVy
b0hlaWdodCgpOwogCi0gICAgaWYgKHdpZHRoIDw9IDAgfHwgaGVpZ2h0IDw9IDAgfHwgbGF5ZXJz
IDw9IDApCisgICAgaWYgKHdpZHRoIDw9IDAgfHwgaGVpZ2h0IDw9IDApCiAgICAgewogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKGxldmVsID09IDApCisgICAgLy8gTGF5
ZXJzIGNoZWNrIG5lZWRzIHRvIGhhcHBlbiBhZnRlciB0aGUgYWJvdmUgY2hlY2tzLCBvdGhlcndp
c2Ugb3V0LW9mLXJhbmdlIGJhc2UgbGV2ZWwgbWF5IGJlCisgICAgLy8gcXVlcmllZC4KKyAgICBH
THNpemVpIGxheWVycyA9IGdldExheWVyQ291bnQoZ2V0QmFzZUxldmVsKCkpOworCisgICAgaWYg
KGxheWVycyA8PSAwKQogICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IGlmIChsZXZlbCA9PSBzdGF0aWNfY2FzdDxpbnQ+KGdldEJhc2VMZXZlbCgpKSkKKyAgICB7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmIChnZXRJbnRlcm5hbEZvcm1hdChs
ZXZlbCkgIT0gZ2V0SW50ZXJuYWxGb3JtYXQoMCkpCisgICAgaWYgKGdldEludGVybmFsRm9ybWF0
KGxldmVsKSAhPSBnZXRJbnRlcm5hbEZvcm1hdChnZXRCYXNlTGV2ZWwoKSkpCiAgICAgewogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMjk2OCwxMSArMjc1OSw3IEBACiAgICAgICAg
IHsKICAgICAgICAgICAgIGdsOjpJbWFnZUluZGV4IGluZGV4ID0gZ2w6OkltYWdlSW5kZXg6Ok1h
a2UyREFycmF5KGxldmVsLCBsYXllcik7CiAgICAgICAgICAgICBnbDo6Qm94IHJlZ2lvbigwLCAw
LCAwLCBnZXRXaWR0aChsZXZlbCksIGdldEhlaWdodChsZXZlbCksIDEpOwotICAgICAgICAgICAg
Z2w6OkVycm9yIGVycm9yID0gY29tbWl0UmVnaW9uKGluZGV4LCByZWdpb24pOwotICAgICAgICAg
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZXJyb3I7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBBTkdMRV9UUlkoY29tbWl0
UmVnaW9uKGluZGV4LCByZWdpb24pKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjk5NiwxMCAr
Mjc4MywxNCBAQAogdm9pZCBUZXh0dXJlRDNEXzJEQXJyYXk6OnJlZGVmaW5lSW1hZ2UoR0xpbnQg
bGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUpCiB7
CiAgICAgLy8gSWYgdGhlcmUgY3VycmVudGx5IGlzIGEgY29ycmVzcG9uZGluZyBzdG9yYWdlIHRl
eHR1cmUgaW1hZ2UsIGl0IGhhcyB0aGVzZSBwYXJhbWV0ZXJzCi0gICAgY29uc3QgaW50IHN0b3Jh
Z2VXaWR0aCA9IHN0ZDo6bWF4KDEsIGdldEJhc2VMZXZlbFdpZHRoKCkgPj4gbGV2ZWwpOwotICAg
IGNvbnN0IGludCBzdG9yYWdlSGVpZ2h0ID0gc3RkOjptYXgoMSwgZ2V0QmFzZUxldmVsSGVpZ2h0
KCkgPj4gbGV2ZWwpOwotICAgIGNvbnN0IGludCBzdG9yYWdlRGVwdGggPSBnZXRMYXllckNvdW50
KDApOwotICAgIGNvbnN0IEdMZW51bSBzdG9yYWdlRm9ybWF0ID0gZ2V0QmFzZUxldmVsSW50ZXJu
YWxGb3JtYXQoKTsKKyAgICBjb25zdCBpbnQgc3RvcmFnZVdpZHRoICA9IHN0ZDo6bWF4KDEsIGdl
dExldmVsWmVyb1dpZHRoKCkgPj4gbGV2ZWwpOworICAgIGNvbnN0IGludCBzdG9yYWdlSGVpZ2h0
ID0gc3RkOjptYXgoMSwgZ2V0TGV2ZWxaZXJvSGVpZ2h0KCkgPj4gbGV2ZWwpOworICAgIGNvbnN0
IEdMdWludCBiYXNlTGV2ZWwgID0gZ2V0QmFzZUxldmVsKCk7CisgICAgaW50IHN0b3JhZ2VEZXB0
aCA9IDA7CisgICAgaWYgKGJhc2VMZXZlbCA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVS
RV9MRVZFTFMpCisgICAgeworICAgICAgICBzdG9yYWdlRGVwdGggPSBnZXRMYXllckNvdW50KGJh
c2VMZXZlbCk7CisgICAgfQogCiAgICAgLy8gT25seSByZWFsbG9jYXRlIHRoZSBsYXllcnMgaWYg
dGhlIHNpemUgZG9lc24ndCBtYXRjaAogICAgIGlmIChzaXplLmRlcHRoICE9IG1MYXllckNvdW50
c1tsZXZlbF0pCkBAIC0zMDMyLDYgKzI4MjMsNyBAQAogCiAgICAgaWYgKG1UZXhTdG9yYWdlKQog
ICAgIHsKKyAgICAgICAgY29uc3QgR0xlbnVtIHN0b3JhZ2VGb3JtYXQgPSBnZXRCYXNlTGV2ZWxJ
bnRlcm5hbEZvcm1hdCgpOwogICAgICAgICBjb25zdCBpbnQgc3RvcmFnZUxldmVscyA9IG1UZXhT
dG9yYWdlLT5nZXRMZXZlbENvdW50KCk7CiAKICAgICAgICAgaWYgKChsZXZlbCA+PSBzdG9yYWdl
TGV2ZWxzICYmIHN0b3JhZ2VMZXZlbHMgIT0gMCkgfHwKQEAgLTMwNDAsMTcgKzI4MzIsOCBAQAog
ICAgICAgICAgICAgc2l6ZS5kZXB0aCAhPSBzdG9yYWdlRGVwdGggfHwKICAgICAgICAgICAgIGlu
dGVybmFsZm9ybWF0ICE9IHN0b3JhZ2VGb3JtYXQpICAgLy8gRGlzY2FyZCBtaXNtYXRjaGVkIHN0
b3JhZ2UKICAgICAgICAgewotICAgICAgICAgICAgZm9yIChpbnQgZGlydHlMZXZlbCA9IDA7IGRp
cnR5TGV2ZWwgPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTOyBkaXJ0eUxl
dmVsKyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQgZGlydHlMYXll
ciA9IDA7IGRpcnR5TGF5ZXIgPCBtTGF5ZXJDb3VudHNbZGlydHlMZXZlbF07IGRpcnR5TGF5ZXIr
KykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIG1JbWFnZUFycmF5W2Rp
cnR5TGV2ZWxdW2RpcnR5TGF5ZXJdLT5tYXJrRGlydHkoKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGRlbGV0ZSBtVGV4U3RvcmFnZTsKLSAgICAgICAg
ICAgIG1UZXhTdG9yYWdlID0gTlVMTDsKLSAgICAgICAgICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7
CisgICAgICAgICAgICBtYXJrQWxsSW1hZ2VzRGlydHkoKTsKKyAgICAgICAgICAgIFNhZmVEZWxl
dGUobVRleFN0b3JhZ2UpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMzA4Myw0ICsyODY2LDIy
MSBAQAogICAgIHJldHVybiAoIWluZGV4Lmhhc0xheWVyKCkgfHwgKGluZGV4LmxheWVySW5kZXgg
Pj0gMCAmJiBpbmRleC5sYXllckluZGV4IDwgbUxheWVyQ291bnRzW2luZGV4Lm1pcEluZGV4XSkp
OwogfQogCit2b2lkIFRleHR1cmVEM0RfMkRBcnJheTo6bWFya0FsbEltYWdlc0RpcnR5KCkKK3sK
KyAgICBmb3IgKGludCBkaXJ0eUxldmVsID0gMDsgZGlydHlMZXZlbCA8IGdsOjpJTVBMRU1FTlRB
VElPTl9NQVhfVEVYVFVSRV9MRVZFTFM7IGRpcnR5TGV2ZWwrKykKKyAgICB7CisgICAgICAgIGZv
ciAoaW50IGRpcnR5TGF5ZXIgPSAwOyBkaXJ0eUxheWVyIDwgbUxheWVyQ291bnRzW2RpcnR5TGV2
ZWxdOyBkaXJ0eUxheWVyKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIG1JbWFnZUFycmF5W2Rp
cnR5TGV2ZWxdW2RpcnR5TGF5ZXJdLT5tYXJrRGlydHkoKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBtRGlydHlJbWFnZXMgPSB0cnVlOwogfQorCitUZXh0dXJlRDNEX0V4dGVybmFsOjpUZXh0dXJl
RDNEX0V4dGVybmFsKGNvbnN0IGdsOjpUZXh0dXJlU3RhdGUgJnN0YXRlLCBSZW5kZXJlckQzRCAq
cmVuZGVyZXIpCisgICAgOiBUZXh0dXJlRDNEKHN0YXRlLCByZW5kZXJlcikKK3sKK30KKworVGV4
dHVyZUQzRF9FeHRlcm5hbDo6flRleHR1cmVEM0RfRXh0ZXJuYWwoKQoreworICAgIFNhZmVEZWxl
dGUobVRleFN0b3JhZ2UpOworfQorCitJbWFnZUQzRCAqVGV4dHVyZUQzRF9FeHRlcm5hbDo6Z2V0
SW1hZ2UoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4KSBjb25zdAoreworICAgIFVOUkVBQ0hB
QkxFKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0dMc2l6ZWkgVGV4dHVyZUQzRF9FeHRl
cm5hbDo6Z2V0TGF5ZXJDb3VudChpbnQgbGV2ZWwpIGNvbnN0Cit7CisgICAgcmV0dXJuIDE7Cit9
CisKK2dsOjpFcnJvciBUZXh0dXJlRDNEX0V4dGVybmFsOjpzZXRJbWFnZShHTGVudW0gdGFyZ2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZUxl
dmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRl
cm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKQoreworICAgIC8vIElt
YWdlIHNldHRpbmcgaXMgbm90IHN1cHBvcnRlZCBmb3IgZXh0ZXJuYWwgaW1hZ2VzCisgICAgVU5S
RUFDSEFCTEUoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
K30KKworZ2w6OkVycm9yIFRleHR1cmVEM0RfRXh0ZXJuYWw6OnNldFN1YkltYWdlKEdMZW51bSB0
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGltYWdlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OkJveCAmYXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKQor
eworICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBUZXh0dXJlRDNEX0V4dGVybmFsOjpzZXRDb21wcmVz
c2VkSW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGltYWdlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OkV4dGVudHMgJnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZVNpemUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHVpbnQ4X3QgKnBpeGVscykKK3sKKyAgICBVTlJFQUNIQUJMRSgpOworICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgVGV4dHVyZUQzRF9F
eHRlcm5hbDo6c2V0Q29tcHJlc3NlZFN1YkltYWdlKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OkJveCAmYXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVu
cGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGltYWdlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKQoreworICAgIFVOUkVBQ0hB
QkxFKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisK
K2dsOjpFcnJvciBUZXh0dXJlRDNEX0V4dGVybmFsOjpjb3B5SW1hZ2UoR0xlbnVtIHRhcmdldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGltYWdlTGV2
ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpS
ZWN0YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2UpCit7CisgICAgVU5S
RUFDSEFCTEUoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
K30KKworZ2w6OkVycm9yIFRleHR1cmVEM0RfRXh0ZXJuYWw6OmNvcHlTdWJJbWFnZShHTGVudW0g
dGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgaW1hZ2VMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1l
YnVmZmVyICpzb3VyY2UpCit7CisgICAgVU5SRUFDSEFCTEUoKTsKKyAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIFRleHR1cmVEM0RfRXh0
ZXJuYWw6OnNldFN0b3JhZ2UoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSkKK3sK
KyAgICBVTlJFQUNIQUJMRSgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOworfQorCitnbDo6RXJyb3IgVGV4dHVyZUQzRF9FeHRlcm5hbDo6c2V0SW1hZ2VFeHRl
cm5hbChHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWdsOjpTdHJlYW0gKnN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6U3RyZWFtOjpHTFRleHR1cmVEZXNj
cmlwdGlvbiAmZGVzYykKK3sKKyAgICBBU1NFUlQodGFyZ2V0ID09IEdMX1RFWFRVUkVfRVhURVJO
QUxfT0VTKTsKKworICAgIFNhZmVEZWxldGUobVRleFN0b3JhZ2UpOworCisgICAgLy8gSWYgdGhl
IHN0cmVhbSBpcyBudWxsLCB0aGUgZXh0ZXJuYWwgaW1hZ2UgaXMgdW5ib3VuZCBhbmQgd2UgcmVs
ZWFzZSB0aGUgc3RvcmFnZQorICAgIGlmIChzdHJlYW0gIT0gbnVsbHB0cikKKyAgICB7CisgICAg
ICAgIG1UZXhTdG9yYWdlID0gbVJlbmRlcmVyLT5jcmVhdGVUZXh0dXJlU3RvcmFnZUV4dGVybmFs
KHN0cmVhbSwgZGVzYyk7CisgICAgfQorCisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJP
Uik7Cit9CisKK3ZvaWQgVGV4dHVyZUQzRF9FeHRlcm5hbDo6YmluZFRleEltYWdlKGVnbDo6U3Vy
ZmFjZSAqc3VyZmFjZSkKK3sKKyAgICBVTlJFQUNIQUJMRSgpOworfQorCit2b2lkIFRleHR1cmVE
M0RfRXh0ZXJuYWw6OnJlbGVhc2VUZXhJbWFnZSgpCit7CisgICAgVU5SRUFDSEFCTEUoKTsKK30K
KworZ2w6OkVycm9yIFRleHR1cmVEM0RfRXh0ZXJuYWw6OnNldEVHTEltYWdlVGFyZ2V0KEdMZW51
bSB0YXJnZXQsIGVnbDo6SW1hZ2UgKmltYWdlKQoreworICAgIEVHTEltYWdlRDNEICplZ2xJbWFn
ZWQzZCA9IEdldEltcGxBczxFR0xJbWFnZUQzRD4oaW1hZ2UpOworCisgICAgLy8gUGFzcyBpbiB0
aGUgUmVuZGVyVGFyZ2V0RDNEIGhlcmU6IGNyZWF0ZVRleHR1cmVTdG9yYWdlIGNhbid0IGdlbmVy
YXRlIGFuIGVycm9yLgorICAgIFJlbmRlclRhcmdldEQzRCAqcmVuZGVyVGFyZ2V0RDNEID0gbnVs
bHB0cjsKKyAgICBBTkdMRV9UUlkoZWdsSW1hZ2VkM2QtPmdldFJlbmRlclRhcmdldCgmcmVuZGVy
VGFyZ2V0RDNEKSk7CisKKyAgICBTYWZlRGVsZXRlKG1UZXhTdG9yYWdlKTsKKyAgICBtVGV4U3Rv
cmFnZSA9IG1SZW5kZXJlci0+Y3JlYXRlVGV4dHVyZVN0b3JhZ2VFR0xJbWFnZShlZ2xJbWFnZWQz
ZCwgcmVuZGVyVGFyZ2V0RDNEKTsKKworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworfQorCit2
b2lkIFRleHR1cmVEM0RfRXh0ZXJuYWw6OmluaXRNaXBtYXBJbWFnZXMoKQoreworICAgIFVOUkVB
Q0hBQkxFKCk7Cit9CisKK2dsOjpFcnJvciBUZXh0dXJlRDNEX0V4dGVybmFsOjpnZXRSZW5kZXJU
YXJnZXQoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4LCBSZW5kZXJUYXJnZXREM0QgKipvdXRS
VCkKK3sKKyAgICBVTlJFQUNIQUJMRSgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOworfQorCitib29sIFRleHR1cmVEM0RfRXh0ZXJuYWw6OmlzSW1hZ2VDb21w
bGV0ZShjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgpIGNvbnN0Cit7CisgICAgcmV0dXJuIChp
bmRleC5taXBJbmRleCA9PSAwKSA/IChtVGV4U3RvcmFnZSAhPSBudWxscHRyKSA6IGZhbHNlOwor
fQorCitnbDo6RXJyb3IgVGV4dHVyZUQzRF9FeHRlcm5hbDo6aW5pdGlhbGl6ZVN0b3JhZ2UoYm9v
bCByZW5kZXJUYXJnZXQpCit7CisgICAgLy8gVGV4dHVyZSBzdG9yYWdlIGlzIGNyZWF0ZWQgd2hl
biBhbiBleHRlcm5hbCBpbWFnZSBpcyBib3VuZAorICAgIEFTU0VSVChtVGV4U3RvcmFnZSk7Cisg
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Cit9CisKK2dsOjpFcnJvciBUZXh0dXJl
RDNEX0V4dGVybmFsOjpjcmVhdGVDb21wbGV0ZVN0b3JhZ2UoYm9vbCByZW5kZXJUYXJnZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1
cmVTdG9yYWdlICoqb3V0VGV4U3RvcmFnZSkgY29uc3QKK3sKKyAgICBVTlJFQUNIQUJMRSgpOwor
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworfQorCitnbDo6RXJyb3IgVGV4dHVy
ZUQzRF9FeHRlcm5hbDo6c2V0Q29tcGxldGVUZXhTdG9yYWdlKFRleHR1cmVTdG9yYWdlICpuZXdD
b21wbGV0ZVRleFN0b3JhZ2UpCit7CisgICAgVU5SRUFDSEFCTEUoKTsKKyAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX05PX0VSUk9SKTsKK30KKworZ2w6OkVycm9yIFRleHR1cmVEM0RfRXh0ZXJuYWw6
OnVwZGF0ZVN0b3JhZ2UoKQoreworICAgIC8vIFRleHR1cmUgc3RvcmFnZSBkb2VzIG5vdCBuZWVk
IHRvIGJlIHVwZGF0ZWQgc2luY2UgaXQgaXMgYWxyZWFkeSBsb2FkZWQgd2l0aCB0aGUgbGF0ZXN0
CisgICAgLy8gZXh0ZXJuYWwgaW1hZ2UKKyAgICBBU1NFUlQobVRleFN0b3JhZ2UpOworICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworfQorCitnbDo6SW1hZ2VJbmRleEl0ZXJhdG9y
IFRleHR1cmVEM0RfRXh0ZXJuYWw6OmltYWdlSXRlcmF0b3IoKSBjb25zdAoreworICAgIHJldHVy
biBnbDo6SW1hZ2VJbmRleEl0ZXJhdG9yOjpNYWtlMkQoMCwgbVRleFN0b3JhZ2UtPmdldExldmVs
Q291bnQoKSk7Cit9CisKK2dsOjpJbWFnZUluZGV4IFRleHR1cmVEM0RfRXh0ZXJuYWw6OmdldElt
YWdlSW5kZXgoR0xpbnQgbWlwLCBHTGludCAvKmxheWVyKi8pIGNvbnN0Cit7CisgICAgLy8gImxh
eWVyIiBkb2VzIG5vdCBhcHBseSB0byAyRCBUZXh0dXJlcy4KKyAgICByZXR1cm4gZ2w6OkltYWdl
SW5kZXg6Ok1ha2UyRChtaXApOworfQorCitib29sIFRleHR1cmVEM0RfRXh0ZXJuYWw6OmlzVmFs
aWRJbmRleChjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IChtVGV4U3RvcmFnZSAmJiBpbmRleC50eXBlID09IEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTICYm
IGluZGV4Lm1pcEluZGV4ID09IDApOworfQorCit2b2lkIFRleHR1cmVEM0RfRXh0ZXJuYWw6Om1h
cmtBbGxJbWFnZXNEaXJ0eSgpCit7CisgICAgVU5SRUFDSEFCTEUoKTsKK30KK30gIC8vIG5hbWVz
cGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9UZXh0dXJlRDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9UZXh0dXJlRDNELmgJKHJldmlzaW9uIDIwODAy
MSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
VGV4dHVyZUQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw2ICsxMiw3IEBACiAjaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvVGV4dHVyZUltcGwuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9hbmds
ZXR5cGVzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvQ29uc3RhbnRzLmgiCisjaW5jbHVkZSAibGli
QU5HTEUvU3RyZWFtLmgiCiAKIG5hbWVzcGFjZSBnbAogewpAQCAtMjksMTIgKzMwLDExIEBACiBj
bGFzcyBUZXh0dXJlRDNEIDogcHVibGljIFRleHR1cmVJbXBsCiB7CiAgIHB1YmxpYzoKLSAgICBU
ZXh0dXJlRDNEKFJlbmRlcmVyRDNEICpyZW5kZXJlcik7CisgICAgVGV4dHVyZUQzRChjb25zdCBn
bDo6VGV4dHVyZVN0YXRlICZkYXRhLCBSZW5kZXJlckQzRCAqcmVuZGVyZXIpOwogICAgIHZpcnR1
YWwgflRleHR1cmVEM0QoKTsKIAogICAgIGdsOjpFcnJvciBnZXROYXRpdmVUZXh0dXJlKFRleHR1
cmVTdG9yYWdlICoqb3V0U3RvcmFnZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VXNhZ2UoR0xl
bnVtIHVzYWdlKSB7IG1Vc2FnZSA9IHVzYWdlOyB9CiAgICAgYm9vbCBoYXNEaXJ0eUltYWdlcygp
IGNvbnN0IHsgcmV0dXJuIG1EaXJ0eUltYWdlczsgfQogICAgIHZvaWQgcmVzZXREaXJ0eSgpIHsg
bURpcnR5SW1hZ2VzID0gZmFsc2U7IH0KIApAQCAtNDMsNyArNDMsNiBAQAogCiAgICAgR0xpbnQg
Z2V0QmFzZUxldmVsV2lkdGgoKSBjb25zdDsKICAgICBHTGludCBnZXRCYXNlTGV2ZWxIZWlnaHQo
KSBjb25zdDsKLSAgICBHTGludCBnZXRCYXNlTGV2ZWxEZXB0aCgpIGNvbnN0OwogICAgIEdMZW51
bSBnZXRCYXNlTGV2ZWxJbnRlcm5hbEZvcm1hdCgpIGNvbnN0OwogCiAgICAgYm9vbCBpc0ltbXV0
YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1JbW11dGFibGU7IH0KQEAgLTU4LDcgKzU3LDEwIEBACiAg
ICAgdmlydHVhbCBnbDo6SW1hZ2VJbmRleCBnZXRJbWFnZUluZGV4KEdMaW50IG1pcCwgR0xpbnQg
bGF5ZXIpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZEluZGV4KGNvbnN0IGds
OjpJbWFnZUluZGV4ICZpbmRleCkgY29uc3QgPSAwOwogCi0gICAgZ2w6OkVycm9yIGdlbmVyYXRl
TWlwbWFwcyhjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZ0ZXh0dXJlU3RhdGUpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldEltYWdlRXh0ZXJuYWwoR0xlbnVtIHRhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3RyZWFtICpzdHJlYW0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OlN0cmVh
bTo6R0xUZXh0dXJlRGVzY3JpcHRpb24gJmRlc2MpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBn
ZW5lcmF0ZU1pcG1hcCgpIG92ZXJyaWRlOwogICAgIFRleHR1cmVTdG9yYWdlICpnZXRTdG9yYWdl
KCk7CiAgICAgSW1hZ2VEM0QgKmdldEJhc2VMZXZlbEltYWdlKCkgY29uc3Q7CiAKQEAgLTY1LDYg
KzY3LDEwIEBACiAgICAgZ2w6OkVycm9yIGdldEF0dGFjaG1lbnRSZW5kZXJUYXJnZXQoY29uc3Qg
Z2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJBdHRhY2htZW50UmVuZGVyVGFy
Z2V0ICoqcnRPdXQpIG92ZXJyaWRlOwogCisgICAgdm9pZCBzZXRCYXNlTGV2ZWwoR0x1aW50IGJh
c2VMZXZlbCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHN5bmNTdGF0ZShjb25zdCBnbDo6VGV4dHVy
ZTo6RGlydHlCaXRzICZkaXJ0eUJpdHMpIG92ZXJyaWRlOworCiAgIHByb3RlY3RlZDoKICAgICBn
bDo6RXJyb3Igc2V0SW1hZ2VJbXBsKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLApAQCAtODMsOSArODksMTIgQEAKICAg
ICBnbDo6RXJyb3IgZmFzdFVucGFja1BpeGVscyhjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAm
dW5wYWNrLCBjb25zdCB1aW50OF90ICpwaXhlbHMsIGNvbnN0IGdsOjpCb3ggJmRlc3RBcmVhLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzaXplZEludGVybmFsRm9ybWF0
LCBHTGVudW0gdHlwZSwgUmVuZGVyVGFyZ2V0RDNEICpkZXN0UmVuZGVyVGFyZ2V0KTsKIAorICAg
IEdMaW50IGdldExldmVsWmVyb1dpZHRoKCkgY29uc3Q7CisgICAgR0xpbnQgZ2V0TGV2ZWxaZXJv
SGVpZ2h0KCkgY29uc3Q7CisgICAgdmlydHVhbCBHTGludCBnZXRMZXZlbFplcm9EZXB0aCgpIGNv
bnN0OworCiAgICAgR0xpbnQgY3JlYXRpb25MZXZlbHMoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQsIEdMc2l6ZWkgZGVwdGgpIGNvbnN0OwotICAgIGludCBtaXBMZXZlbHMoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIHZvaWQgaW5pdE1pcG1hcHNJbWFnZXMoKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGluaXRNaXBtYXBJbWFnZXMoKSA9IDA7CiAgICAgYm9vbCBpc0Jhc2VJbWFnZVplcm9TaXpl
KCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzSW1hZ2VDb21wbGV0ZShjb25zdCBnbDo6SW1h
Z2VJbmRleCAmaW5kZXgpIGNvbnN0ID0gMDsKIApAQCAtOTYsMTAgKzEwNSwxNCBAQAogICAgIHZp
cnR1YWwgZ2w6OkVycm9yIHNldENvbXBsZXRlVGV4U3RvcmFnZShUZXh0dXJlU3RvcmFnZSAqbmV3
Q29tcGxldGVUZXhTdG9yYWdlKSA9IDA7CiAgICAgZ2w6OkVycm9yIGNvbW1pdFJlZ2lvbihjb25z
dCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsIGNvbnN0IGdsOjpCb3ggJnJlZ2lvbik7CiAKKyAgICBH
THVpbnQgZ2V0QmFzZUxldmVsKCkgY29uc3QgeyByZXR1cm4gbUJhc2VMZXZlbDsgfTsKKworICAg
IHZpcnR1YWwgdm9pZCBtYXJrQWxsSW1hZ2VzRGlydHkoKSA9IDA7CisKKyAgICBHTGludCBnZXRC
YXNlTGV2ZWxEZXB0aCgpIGNvbnN0OworCiAgICAgUmVuZGVyZXJEM0QgKm1SZW5kZXJlcjsKIAot
ICAgIEdMZW51bSBtVXNhZ2U7Ci0KICAgICBib29sIG1EaXJ0eUltYWdlczsKIAogICAgIGJvb2wg
bUltbXV0YWJsZTsKQEAgLTExMiwxMyArMTI1LDE1IEBACiAKICAgICBib29sIHNob3VsZFVzZVNl
dERhdGEoY29uc3QgSW1hZ2VEM0QgKmltYWdlKSBjb25zdDsKIAotICAgIGdsOjpFcnJvciBnZW5l
cmF0ZU1pcG1hcHNVc2luZ0ltYWdlcygpOworICAgIGdsOjpFcnJvciBnZW5lcmF0ZU1pcG1hcFVz
aW5nSW1hZ2VzKGNvbnN0IEdMdWludCBtYXhMZXZlbCk7CisKKyAgICBHTHVpbnQgbUJhc2VMZXZl
bDsKIH07CiAKIGNsYXNzIFRleHR1cmVEM0RfMkQgOiBwdWJsaWMgVGV4dHVyZUQzRAogewogICBw
dWJsaWM6Ci0gICAgVGV4dHVyZUQzRF8yRChSZW5kZXJlckQzRCAqcmVuZGVyZXIpOworICAgIFRl
eHR1cmVEM0RfMkQoY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmZGF0YSwgUmVuZGVyZXJEM0QgKnJl
bmRlcmVyKTsKICAgICB2aXJ0dWFsIH5UZXh0dXJlRDNEXzJEKCk7CiAKICAgICB2aXJ0dWFsIElt
YWdlRDNEICpnZXRJbWFnZShpbnQgbGV2ZWwsIGludCBsYXllcikgY29uc3Q7CkBAIC0xNDUsNiAr
MTYwLDIwIEBACiAgICAgZ2w6OkVycm9yIGNvcHlTdWJJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXpl
X3QgbGV2ZWwsIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsIGNvbnN0IGdsOjpSZWN0YW5n
bGUgJnNvdXJjZUFyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJh
bWVidWZmZXIgKnNvdXJjZSkgb3ZlcnJpZGU7CiAKKyAgICBnbDo6RXJyb3IgY29weVRleHR1cmUo
R0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tGbGlwWSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1VubXVsdGlwbHlBbHBoYSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlRleHR1cmUgKnNvdXJjZSkgb3ZlcnJpZGU7Cisg
ICAgZ2w6OkVycm9yIGNvcHlTdWJUZXh0dXJlKGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJj
ZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrRmxpcFksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tVbm11bHRpcGx5QWxwaGEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpUZXh0dXJlICpzb3VyY2Up
IG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBjb3B5Q29tcHJlc3NlZFRleHR1cmUoY29uc3QgZ2w6
OlRleHR1cmUgKnNvdXJjZSkgb3ZlcnJpZGU7CisKICAgICBnbDo6RXJyb3Igc2V0U3RvcmFnZShH
TGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIGNvbnN0
IGdsOjpFeHRlbnRzICZzaXplKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBiaW5kVGV4
SW1hZ2UoZWdsOjpTdXJmYWNlICpzdXJmYWNlKTsKQEAgLTE1OCw2ICsxODcsOSBAQAogICAgIHZp
cnR1YWwgZ2w6OkltYWdlSW5kZXggZ2V0SW1hZ2VJbmRleChHTGludCBtaXAsIEdMaW50IGxheWVy
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZEluZGV4KGNvbnN0IGdsOjpJbWFnZUlu
ZGV4ICZpbmRleCkgY29uc3Q7CiAKKyAgcHJvdGVjdGVkOgorICAgIHZvaWQgbWFya0FsbEltYWdl
c0RpcnR5KCkgb3ZlcnJpZGU7CisKICAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBp
bml0aWFsaXplU3RvcmFnZShib29sIHJlbmRlclRhcmdldCk7CiAgICAgdmlydHVhbCBnbDo6RXJy
b3IgY3JlYXRlQ29tcGxldGVTdG9yYWdlKGJvb2wgcmVuZGVyVGFyZ2V0LCBUZXh0dXJlU3RvcmFn
ZSAqKm91dFRleFN0b3JhZ2UpIGNvbnN0OwpAQCAtMTY0LDcgKzE5Niw3IEBACiAgICAgdmlydHVh
bCBnbDo6RXJyb3Igc2V0Q29tcGxldGVUZXhTdG9yYWdlKFRleHR1cmVTdG9yYWdlICpuZXdDb21w
bGV0ZVRleFN0b3JhZ2UpOwogCiAgICAgdmlydHVhbCBnbDo6RXJyb3IgdXBkYXRlU3RvcmFnZSgp
OwotICAgIHZpcnR1YWwgdm9pZCBpbml0TWlwbWFwc0ltYWdlcygpOworICAgIHZpcnR1YWwgdm9p
ZCBpbml0TWlwbWFwSW1hZ2VzKCk7CiAKICAgICBib29sIGlzVmFsaWRMZXZlbChpbnQgbGV2ZWwp
IGNvbnN0OwogICAgIGJvb2wgaXNMZXZlbENvbXBsZXRlKGludCBsZXZlbCkgY29uc3Q7CkBAIC0x
ODQsNyArMjE2LDcgQEAKIGNsYXNzIFRleHR1cmVEM0RfQ3ViZSA6IHB1YmxpYyBUZXh0dXJlRDNE
CiB7CiAgIHB1YmxpYzoKLSAgICBUZXh0dXJlRDNEX0N1YmUoUmVuZGVyZXJEM0QgKnJlbmRlcmVy
KTsKKyAgICBUZXh0dXJlRDNEX0N1YmUoY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmZGF0YSwgUmVu
ZGVyZXJEM0QgKnJlbmRlcmVyKTsKICAgICB2aXJ0dWFsIH5UZXh0dXJlRDNEX0N1YmUoKTsKIAog
ICAgIHZpcnR1YWwgSW1hZ2VEM0QgKmdldEltYWdlKGludCBsZXZlbCwgaW50IGxheWVyKSBjb25z
dDsKQEAgLTE5Myw3ICsyMjUsNiBAQAogCiAgICAgdmlydHVhbCBib29sIGhhc0RpcnR5SW1hZ2Vz
KCkgY29uc3QgeyByZXR1cm4gbURpcnR5SW1hZ2VzOyB9CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0
RGlydHkoKSB7IG1EaXJ0eUltYWdlcyA9IGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFVz
YWdlKEdMZW51bSB1c2FnZSkgeyBtVXNhZ2UgPSB1c2FnZTsgfQogCiAgICAgR0xlbnVtIGdldElu
dGVybmFsRm9ybWF0KEdMaW50IGxldmVsLCBHTGludCBsYXllcikgY29uc3Q7CiAgICAgYm9vbCBp
c0RlcHRoKEdMaW50IGxldmVsLCBHTGludCBsYXllcikgY29uc3Q7CkBAIC0yMjYsNiArMjU3LDkg
QEAKICAgICB2aXJ0dWFsIGdsOjpJbWFnZUluZGV4IGdldEltYWdlSW5kZXgoR0xpbnQgbWlwLCBH
TGludCBsYXllcikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzVmFsaWRJbmRleChjb25zdCBn
bDo6SW1hZ2VJbmRleCAmaW5kZXgpIGNvbnN0OwogCisgIHByb3RlY3RlZDoKKyAgICB2b2lkIG1h
cmtBbGxJbWFnZXNEaXJ0eSgpIG92ZXJyaWRlOworCiAgIHByaXZhdGU6CiAgICAgdmlydHVhbCBn
bDo6RXJyb3IgaW5pdGlhbGl6ZVN0b3JhZ2UoYm9vbCByZW5kZXJUYXJnZXQpOwogICAgIHZpcnR1
YWwgZ2w6OkVycm9yIGNyZWF0ZUNvbXBsZXRlU3RvcmFnZShib29sIHJlbmRlclRhcmdldCwgVGV4
dHVyZVN0b3JhZ2UgKipvdXRUZXhTdG9yYWdlKSBjb25zdDsKQEAgLTIzMiw3ICsyNjYsNyBAQAog
ICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldENvbXBsZXRlVGV4U3RvcmFnZShUZXh0dXJlU3RvcmFn
ZSAqbmV3Q29tcGxldGVUZXhTdG9yYWdlKTsKIAogICAgIHZpcnR1YWwgZ2w6OkVycm9yIHVwZGF0
ZVN0b3JhZ2UoKTsKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdE1pcG1hcHNJbWFnZXMoKTsKKyAgICB2
b2lkIGluaXRNaXBtYXBJbWFnZXMoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNWYWxpZEZhY2VM
ZXZlbChpbnQgZmFjZUluZGV4LCBpbnQgbGV2ZWwpIGNvbnN0OwogICAgIGJvb2wgaXNGYWNlTGV2
ZWxDb21wbGV0ZShpbnQgZmFjZUluZGV4LCBpbnQgbGV2ZWwpIGNvbnN0OwpAQCAtMjQ4LDcgKzI4
Miw3IEBACiBjbGFzcyBUZXh0dXJlRDNEXzNEIDogcHVibGljIFRleHR1cmVEM0QKIHsKICAgcHVi
bGljOgotICAgIFRleHR1cmVEM0RfM0QoUmVuZGVyZXJEM0QgKnJlbmRlcmVyKTsKKyAgICBUZXh0
dXJlRDNEXzNEKGNvbnN0IGdsOjpUZXh0dXJlU3RhdGUgJmRhdGEsIFJlbmRlcmVyRDNEICpyZW5k
ZXJlcik7CiAgICAgdmlydHVhbCB+VGV4dHVyZUQzRF8zRCgpOwogCiAgICAgdmlydHVhbCBJbWFn
ZUQzRCAqZ2V0SW1hZ2UoaW50IGxldmVsLCBpbnQgbGF5ZXIpIGNvbnN0OwpAQCAtMjg5LDYgKzMy
MywxMCBAQAogICAgIHZpcnR1YWwgZ2w6OkltYWdlSW5kZXggZ2V0SW1hZ2VJbmRleChHTGludCBt
aXAsIEdMaW50IGxheWVyKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZEluZGV4KGNv
bnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCkgY29uc3Q7CiAKKyAgcHJvdGVjdGVkOgorICAgIHZv
aWQgbWFya0FsbEltYWdlc0RpcnR5KCkgb3ZlcnJpZGU7CisgICAgR0xpbnQgZ2V0TGV2ZWxaZXJv
RGVwdGgoKSBjb25zdCBvdmVycmlkZTsKKwogICBwcml2YXRlOgogICAgIHZpcnR1YWwgZ2w6OkVy
cm9yIGluaXRpYWxpemVTdG9yYWdlKGJvb2wgcmVuZGVyVGFyZ2V0KTsKICAgICB2aXJ0dWFsIGds
OjpFcnJvciBjcmVhdGVDb21wbGV0ZVN0b3JhZ2UoYm9vbCByZW5kZXJUYXJnZXQsIFRleHR1cmVT
dG9yYWdlICoqb3V0U3RvcmFnZSkgY29uc3Q7CkBAIC0yOTUsNyArMzMzLDcgQEAKICAgICB2aXJ0
dWFsIGdsOjpFcnJvciBzZXRDb21wbGV0ZVRleFN0b3JhZ2UoVGV4dHVyZVN0b3JhZ2UgKm5ld0Nv
bXBsZXRlVGV4U3RvcmFnZSk7CiAKICAgICB2aXJ0dWFsIGdsOjpFcnJvciB1cGRhdGVTdG9yYWdl
KCk7Ci0gICAgdmlydHVhbCB2b2lkIGluaXRNaXBtYXBzSW1hZ2VzKCk7CisgICAgdm9pZCBpbml0
TWlwbWFwSW1hZ2VzKCkgb3ZlcnJpZGU7CiAKICAgICBib29sIGlzVmFsaWRMZXZlbChpbnQgbGV2
ZWwpIGNvbnN0OwogICAgIGJvb2wgaXNMZXZlbENvbXBsZXRlKGludCBsZXZlbCkgY29uc3Q7CkBA
IC0zMTAsNyArMzQ4LDcgQEAKIGNsYXNzIFRleHR1cmVEM0RfMkRBcnJheSA6IHB1YmxpYyBUZXh0
dXJlRDNECiB7CiAgIHB1YmxpYzoKLSAgICBUZXh0dXJlRDNEXzJEQXJyYXkoUmVuZGVyZXJEM0Qg
KnJlbmRlcmVyKTsKKyAgICBUZXh0dXJlRDNEXzJEQXJyYXkoY29uc3QgZ2w6OlRleHR1cmVTdGF0
ZSAmZGF0YSwgUmVuZGVyZXJEM0QgKnJlbmRlcmVyKTsKICAgICB2aXJ0dWFsIH5UZXh0dXJlRDNE
XzJEQXJyYXkoKTsKIAogICAgIHZpcnR1YWwgSW1hZ2VEM0QgKmdldEltYWdlKGludCBsZXZlbCwg
aW50IGxheWVyKSBjb25zdDsKQEAgLTM1MCw2ICszODgsOSBAQAogICAgIHZpcnR1YWwgZ2w6Oklt
YWdlSW5kZXggZ2V0SW1hZ2VJbmRleChHTGludCBtaXAsIEdMaW50IGxheWVyKSBjb25zdDsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNWYWxpZEluZGV4KGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCkg
Y29uc3Q7CiAKKyAgcHJvdGVjdGVkOgorICAgIHZvaWQgbWFya0FsbEltYWdlc0RpcnR5KCkgb3Zl
cnJpZGU7CisKICAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBpbml0aWFsaXplU3Rv
cmFnZShib29sIHJlbmRlclRhcmdldCk7CiAgICAgdmlydHVhbCBnbDo6RXJyb3IgY3JlYXRlQ29t
cGxldGVTdG9yYWdlKGJvb2wgcmVuZGVyVGFyZ2V0LCBUZXh0dXJlU3RvcmFnZSAqKm91dFN0b3Jh
Z2UpIGNvbnN0OwpAQCAtMzU2LDcgKzM5Nyw3IEBACiAgICAgdmlydHVhbCBnbDo6RXJyb3Igc2V0
Q29tcGxldGVUZXhTdG9yYWdlKFRleHR1cmVTdG9yYWdlICpuZXdDb21wbGV0ZVRleFN0b3JhZ2Up
OwogCiAgICAgdmlydHVhbCBnbDo6RXJyb3IgdXBkYXRlU3RvcmFnZSgpOwotICAgIHZpcnR1YWwg
dm9pZCBpbml0TWlwbWFwc0ltYWdlcygpOworICAgIHZvaWQgaW5pdE1pcG1hcEltYWdlcygpIG92
ZXJyaWRlOwogCiAgICAgYm9vbCBpc1ZhbGlkTGV2ZWwoaW50IGxldmVsKSBjb25zdDsKICAgICBi
b29sIGlzTGV2ZWxDb21wbGV0ZShpbnQgbGV2ZWwpIGNvbnN0OwpAQCAtMzc0LDYgKzQxNSw5MSBA
QAogICAgIEltYWdlRDNEICoqbUltYWdlQXJyYXlbZ2w6OklNUExFTUVOVEFUSU9OX01BWF9URVhU
VVJFX0xFVkVMU107CiB9OwogCitjbGFzcyBUZXh0dXJlRDNEX0V4dGVybmFsIDogcHVibGljIFRl
eHR1cmVEM0QKK3sKKyAgcHVibGljOgorICAgIFRleHR1cmVEM0RfRXh0ZXJuYWwoY29uc3QgZ2w6
OlRleHR1cmVTdGF0ZSAmZGF0YSwgUmVuZGVyZXJEM0QgKnJlbmRlcmVyKTsKKyAgICB+VGV4dHVy
ZUQzRF9FeHRlcm5hbCgpIG92ZXJyaWRlOworCisgICAgSW1hZ2VEM0QgKmdldEltYWdlKGNvbnN0
IGdsOjpJbWFnZUluZGV4ICZpbmRleCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgR0xzaXplaSBnZXRM
YXllckNvdW50KGludCBsZXZlbCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJyb3Igc2V0
SW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVs
LAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLAorICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVu
cGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVy
cmlkZTsKKyAgICBnbDo6RXJyb3Igc2V0U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6Qm94ICZhcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
Zm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsK
KworICAgIGdsOjpFcnJvciBzZXRDb21wcmVzc2VkSW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZVNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJy
aWRlOworICAgIGdsOjpFcnJvciBzZXRDb21wcmVzc2VkU3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmFyZWEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVu
cGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZVNp
emUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpw
aXhlbHMpIG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIGNvcHlJbWFnZShHTGVudW0gdGFyZ2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3Ig
Y29weVN1YkltYWdlKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0
ICZkZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3Rh
bmdsZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpG
cmFtZWJ1ZmZlciAqc291cmNlKSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBzZXRTdG9yYWdl
KEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVscywK
KyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUpIG92ZXJyaWRlOworCisg
ICAgZ2w6OkVycm9yIHNldEltYWdlRXh0ZXJuYWwoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlZ2w6OlN0cmVhbSAqc3RyZWFtLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6U3RyZWFtOjpHTFRleHR1cmVEZXNjcmlwdGlvbiAm
ZGVzYykgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGJpbmRUZXhJbWFnZShlZ2w6OlN1cmZhY2UgKnN1
cmZhY2UpIG92ZXJyaWRlOworICAgIHZvaWQgcmVsZWFzZVRleEltYWdlKCkgb3ZlcnJpZGU7CisK
KyAgICBnbDo6RXJyb3Igc2V0RUdMSW1hZ2VUYXJnZXQoR0xlbnVtIHRhcmdldCwgZWdsOjpJbWFn
ZSAqaW1hZ2UpIG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIGdldFJlbmRlclRhcmdldChjb25z
dCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsIFJlbmRlclRhcmdldEQzRCAqKm91dFJUKSBvdmVycmlk
ZTsKKworICAgIGdsOjpJbWFnZUluZGV4SXRlcmF0b3IgaW1hZ2VJdGVyYXRvcigpIGNvbnN0IG92
ZXJyaWRlOworICAgIGdsOjpJbWFnZUluZGV4IGdldEltYWdlSW5kZXgoR0xpbnQgbWlwLCBHTGlu
dCBsYXllcikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1ZhbGlkSW5kZXgoY29uc3QgZ2w6
OkltYWdlSW5kZXggJmluZGV4KSBjb25zdCBvdmVycmlkZTsKKworICBwcm90ZWN0ZWQ6CisgICAg
dm9pZCBtYXJrQWxsSW1hZ2VzRGlydHkoKSBvdmVycmlkZTsKKworICBwcml2YXRlOgorICAgIGds
OjpFcnJvciBpbml0aWFsaXplU3RvcmFnZShib29sIHJlbmRlclRhcmdldCkgb3ZlcnJpZGU7Cisg
ICAgZ2w6OkVycm9yIGNyZWF0ZUNvbXBsZXRlU3RvcmFnZShib29sIHJlbmRlclRhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVTdG9yYWdlICoqb3V0VGV4
U3RvcmFnZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHNldENvbXBsZXRlVGV4U3Rv
cmFnZShUZXh0dXJlU3RvcmFnZSAqbmV3Q29tcGxldGVUZXhTdG9yYWdlKSBvdmVycmlkZTsKKwor
ICAgIGdsOjpFcnJvciB1cGRhdGVTdG9yYWdlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBpbml0TWlw
bWFwSW1hZ2VzKCkgb3ZlcnJpZGU7CisKKyAgICBib29sIGlzSW1hZ2VDb21wbGV0ZShjb25zdCBn
bDo6SW1hZ2VJbmRleCAmaW5kZXgpIGNvbnN0IG92ZXJyaWRlOworfTsKIH0KIAogI2VuZGlmIC8v
IExJQkFOR0xFX1JFTkRFUkVSX0QzRF9URVhUVVJFRDNEX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1RleHR1cmVTdG9yYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL1RleHR1cmVTdG9yYWdlLmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9UZXh0dXJlU3RvcmFnZS5j
cHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwzOSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAy
MDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0v
LyBUZXh0dXJlU3RvcmFnZS5jcHA6IFNoYXJlZCBtZW1iZXJzIG9mIGFic3RyYWN0IHJ4OjpUZXh0
dXJlU3RvcmFnZSBjbGFzcy4KLQotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9UZXh0
dXJlU3RvcmFnZS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9UZXh0dXJlRDNE
LmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlclRhcmdldEQzRC5oIgot
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1JlbmRlcmVyLmgiCi0jaW5jbHVkZSAibGliQU5H
TEUvUmVuZGVyYnVmZmVyLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvVGV4dHVyZS5oIgotCi0jaW5j
bHVkZSAiY29tbW9uL2RlYnVnLmgiCi0jaW5jbHVkZSAiY29tbW9uL21hdGh1dGlsLmgiCi0KLW5h
bWVzcGFjZSByeAotewotCi1UZXh0dXJlU3RvcmFnZTo6VGV4dHVyZVN0b3JhZ2UoKQotICAgIDog
bUZpcnN0UmVuZGVyVGFyZ2V0U2VyaWFsKDApLAotICAgICAgbVJlbmRlclRhcmdldFNlcmlhbHNM
YXllclN0cmlkZSgwKQote30KLQotdm9pZCBUZXh0dXJlU3RvcmFnZTo6aW5pdGlhbGl6ZVNlcmlh
bHModW5zaWduZWQgaW50IHJ0U2VyaWFsc1RvUmVzZXJ2ZSwgdW5zaWduZWQgaW50IHJ0U2VyaWFs
c0xheWVyU3RyaWRlKQotewotICAgIG1GaXJzdFJlbmRlclRhcmdldFNlcmlhbCA9IFJlbmRlclRh
cmdldEQzRDo6aXNzdWVTZXJpYWxzKHJ0U2VyaWFsc1RvUmVzZXJ2ZSk7Ci0gICAgbVJlbmRlclRh
cmdldFNlcmlhbHNMYXllclN0cmlkZSA9IHJ0U2VyaWFsc0xheWVyU3RyaWRlOwotfQotCi11bnNp
Z25lZCBpbnQgVGV4dHVyZVN0b3JhZ2U6OmdldFJlbmRlclRhcmdldFNlcmlhbChjb25zdCBnbDo6
SW1hZ2VJbmRleCAmaW5kZXgpIGNvbnN0Ci17Ci0gICAgdW5zaWduZWQgaW50IGxheWVyT2Zmc2V0
ID0gKGluZGV4Lmhhc0xheWVyKCkgPyAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihpbmRleC5s
YXllckluZGV4KSAqIG1SZW5kZXJUYXJnZXRTZXJpYWxzTGF5ZXJTdHJpZGUpIDogMCk7Ci0gICAg
cmV0dXJuIG1GaXJzdFJlbmRlclRhcmdldFNlcmlhbCArIHN0YXRpY19jYXN0PHVuc2lnbmVkIGlu
dD4oaW5kZXgubWlwSW5kZXgpICsgbGF5ZXJPZmZzZXQ7Ci19Ci0KLX0KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVHJhbnNmb3JtRmVlZGJh
Y2tEM0QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvVHJhbnNmb3JtRmVlZGJhY2tEM0QuY3BwCShyZXZpc2lvbiAyMDgw
MjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L1RyYW5zZm9ybUZlZWRiYWNrRDNELmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ2ICswLDAgQEAK
LS8vCi0vLyBDb3B5cmlnaHQgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KLS8vCi0KLS8vIFRyYW5zZm9ybUZlZWRiYWNrRDNELmNwcCBpcyBhIG5vLW9wIGltcGxl
bWVudGF0aW9uIGZvciBib3RoIHRoZSBEM0Q5IGFuZCBEM0QxMSByZW5kZXJlcnMuCi0KLSNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvVHJhbnNmb3JtRmVlZGJhY2tEM0QuaCIKLQotbmFt
ZXNwYWNlIHJ4Ci17Ci0KLVRyYW5zZm9ybUZlZWRiYWNrRDNEOjpUcmFuc2Zvcm1GZWVkYmFja0Qz
RCgpCi17Ci19Ci0KLVRyYW5zZm9ybUZlZWRiYWNrRDNEOjp+VHJhbnNmb3JtRmVlZGJhY2tEM0Qo
KQotewotfQotCi12b2lkIFRyYW5zZm9ybUZlZWRiYWNrRDNEOjpiZWdpbihHTGVudW0gcHJpbWl0
aXZlTW9kZSkKLXsKLX0KLQotdm9pZCBUcmFuc2Zvcm1GZWVkYmFja0QzRDo6ZW5kKCkKLXsKLX0K
LQotdm9pZCBUcmFuc2Zvcm1GZWVkYmFja0QzRDo6cGF1c2UoKQotewotfQotCi12b2lkIFRyYW5z
Zm9ybUZlZWRiYWNrRDNEOjpyZXN1bWUoKQotewotfQotCi12b2lkIFRyYW5zZm9ybUZlZWRiYWNr
RDNEOjpiaW5kR2VuZXJpY0J1ZmZlcihjb25zdCBCaW5kaW5nUG9pbnRlcjxnbDo6QnVmZmVyPiAm
YmluZGluZykKLXsKLX0KLQotdm9pZCBUcmFuc2Zvcm1GZWVkYmFja0QzRDo6YmluZEluZGV4ZWRC
dWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBPZmZzZXRCaW5kaW5nUG9pbnRlcjxnbDo6QnVmZmVy
PiAmYmluZGluZykKLXsKLX0KLQotfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9UcmFuc2Zvcm1GZWVkYmFja0QzRC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVHJh
bnNmb3JtRmVlZGJhY2tEM0QuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9UcmFuc2Zvcm1GZWVkYmFja0QzRC5o
CShub25leGlzdGVudCkKQEAgLTEsMzUgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE0IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gVHJhbnNmb3Jt
RmVlZGJhY2tEM0QuaDogSW1wbGVtZW50cyB0aGUgYWJzdHJhY3Qgcng6OlRyYW5zZm9ybUZlZWRi
YWNrSW1wbCBjbGFzcy4KLQotI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfVFJBTlNGT1JN
RkVFREJBQ0tEM0RfSF8KLSNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfRDNEX1RSQU5TRk9STUZF
RURCQUNLRDNEX0hfCi0KLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9UcmFuc2Zvcm1GZWVk
YmFja0ltcGwuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgiCi0KLW5hbWVzcGFj
ZSByeAotewotCi1jbGFzcyBUcmFuc2Zvcm1GZWVkYmFja0QzRCA6IHB1YmxpYyBUcmFuc2Zvcm1G
ZWVkYmFja0ltcGwKLXsKLSAgcHVibGljOgotICAgIFRyYW5zZm9ybUZlZWRiYWNrRDNEKCk7Ci0g
ICAgdmlydHVhbCB+VHJhbnNmb3JtRmVlZGJhY2tEM0QoKTsKLQotICAgIHZvaWQgYmVnaW4oR0xl
bnVtIHByaW1pdGl2ZU1vZGUpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5kKCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBwYXVzZSgpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVzdW1lKCkgb3ZlcnJpZGU7Ci0K
LSAgICB2b2lkIGJpbmRHZW5lcmljQnVmZmVyKGNvbnN0IEJpbmRpbmdQb2ludGVyPGdsOjpCdWZm
ZXI+ICZiaW5kaW5nKSBvdmVycmlkZTsKLSAgICB2b2lkIGJpbmRJbmRleGVkQnVmZmVyKHNpemVf
dCBpbmRleCwgY29uc3QgT2Zmc2V0QmluZGluZ1BvaW50ZXI8Z2w6OkJ1ZmZlcj4gJmJpbmRpbmcp
IG92ZXJyaWRlOwotfTsKLQotfQotCi0jZW5kaWYgLy8gTElCQU5HTEVfUkVOREVSRVJfRDNEX1RS
QU5TRk9STUZFRURCQUNLRDNEX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL1ZhcnlpbmdQYWNraW5nLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1ZhcnlpbmdQ
YWNraW5nLmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9WYXJ5aW5nUGFja2luZy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2NywzMyArMjY3LDM3IEBACiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCisgICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKICAgICAgICAgZm9yIChjb25zdCBQYWNr
ZWRWYXJ5aW5nICZwYWNrZWRWYXJ5aW5nIDogcGFja2VkVmFyeWluZ3MpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGNvbnN0IGF1dG8gJnZhcnlpbmcgPSAqcGFja2VkVmFyeWluZy52YXJ5aW5nOwog
CiAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdHJhbnNmb3JtIGZlZWRiYWNrIHZhcnlpbmdzIGFy
ZW4ndCBvcHRpbWl6ZWQgb3V0LgotICAgICAgICAgICAgaWYgKHVuaXF1ZVZhcnlpbmdOYW1lcy5j
b3VudCh0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdOYW1lKSA9PSAwKQorICAgICAgICAgICAgaWYg
KHVuaXF1ZVZhcnlpbmdOYW1lcy5jb3VudCh0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdOYW1lKSA+
IDApCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwot
ICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdOYW1lID09IHZhcnlp
bmcubmFtZSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcGFj
a1ZhcnlpbmcocGFja2VkVmFyeWluZykpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGluZm9Mb2cgPDwgIkNvdWxkIG5vdCBwYWNrIHZhcnlpbmcgIiA8PCB2
YXJ5aW5nLm5hbWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgZm91
bmQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgaWYgKCFmb3VuZCkKKyAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1G
ZWVkYmFja1ZhcnlpbmdOYW1lID09IHZhcnlpbmcubmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBpZiAoIXBhY2tWYXJ5aW5nKHBhY2tlZFZhcnlpbmcpKQogICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaW5mb0xvZyA8PCAiVHJhbnNmb3JtIGZlZWRiYWNr
IHZhcnlpbmcgIiA8PCB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdOYW1lCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPDwgIiBkb2VzIG5vdCBleGlzdCBpbiB0aGUgdmVydGV4IHNoYWRlci4i
OworICAgICAgICAgICAgICAgICAgICBpbmZvTG9nIDw8ICJDb3VsZCBub3QgcGFjayB2YXJ5aW5n
ICIgPDwgdmFyeWluZy5uYW1lOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOworICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CisKKyAgICAgICAgaWYg
KCFmb3VuZCkKKyAgICAgICAgeworICAgICAgICAgICAgaW5mb0xvZyA8PCAiVHJhbnNmb3JtIGZl
ZWRiYWNrIHZhcnlpbmcgIiA8PCB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdOYW1lCisgICAgICAg
ICAgICAgICAgICAgIDw8ICIgZG9lcyBub3QgZXhpc3QgaW4gdGhlIHZlcnRleCBzaGFkZXIuIjsK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIC8vIFNv
cnQgdGhlIHBhY2tlZCByZWdpc3RlciBsaXN0CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1ZlcnRleEJ1ZmZlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9WZXJ0
ZXhCdWZmZXIuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1ZlcnRleEJ1ZmZlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE2MCw3ICsxNjAsOSBAQAogICAgIEFOR0xFX1RSWV9SRVNVTFQoZ2V0U3BhY2VSZXF1
aXJlZChhdHRyaWIsIGNvdW50LCBpbnN0YW5jZXMpLCBzcGFjZVJlcXVpcmVkKTsKIAogICAgIC8v
IFByb3RlY3QgYWdhaW5zdCBpbnRlZ2VyIG92ZXJmbG93Ci0gICAgaWYgKCFJc1Vuc2lnbmVkQWRk
aXRpb25TYWZlKG1Xcml0ZVBvc2l0aW9uLCBzcGFjZVJlcXVpcmVkKSkKKyAgICBhbmdsZTo6Q2hl
Y2tlZE51bWVyaWM8dW5zaWduZWQgaW50PiBjaGVja2VkUG9zaXRpb24obVdyaXRlUG9zaXRpb24p
OworICAgIGNoZWNrZWRQb3NpdGlvbiArPSBzcGFjZVJlcXVpcmVkOworICAgIGlmICghY2hlY2tl
ZFBvc2l0aW9uLklzVmFsaWQoKSkKICAgICB7CiAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
T1VUX09GX01FTU9SWSwgIkludGVybmFsIGVycm9yLCBuZXcgdmVydGV4IGJ1ZmZlciB3cml0ZSBw
b3NpdGlvbiB3b3VsZCBvdmVyZmxvdy4iKTsKICAgICB9CkBAIC0xODksMTEgKzE5MSwxMSBAQAog
ICAgIEFOR0xFX1RSWV9SRVNVTFQobUZhY3RvcnktPmdldFZlcnRleFNwYWNlUmVxdWlyZWQoYXR0
cmliLCBjb3VudCwgaW5zdGFuY2VzKSwgcmVxdWlyZWRTcGFjZSk7CiAKICAgICAvLyBBbGlnbiB0
byAxNi1ieXRlIGJvdW5kYXJ5Ci0gICAgdW5zaWduZWQgaW50IGFsaWduZWRSZXF1aXJlZFNwYWNl
ID0gcm91bmRVcChyZXF1aXJlZFNwYWNlLCAxNnUpOworICAgIGF1dG8gYWxpZ25lZFJlcXVpcmVk
U3BhY2UgPSByeDo6Q2hlY2tlZFJvdW5kVXAocmVxdWlyZWRTcGFjZSwgMTZ1KTsKKyAgICBhbGln
bmVkUmVxdWlyZWRTcGFjZSArPSBtUmVzZXJ2ZWRTcGFjZTsKIAogICAgIC8vIFByb3RlY3QgYWdh
aW5zdCBpbnRlZ2VyIG92ZXJmbG93Ci0gICAgaWYgKCFJc1Vuc2lnbmVkQWRkaXRpb25TYWZlKG1S
ZXNlcnZlZFNwYWNlLCBhbGlnbmVkUmVxdWlyZWRTcGFjZSkgfHwKLSAgICAgICAgYWxpZ25lZFJl
cXVpcmVkU3BhY2UgPCByZXF1aXJlZFNwYWNlKQorICAgIGlmICghYWxpZ25lZFJlcXVpcmVkU3Bh
Y2UuSXNWYWxpZCgpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0Zf
TUVNT1JZLAogICAgICAgICAgICAgICAgICAgICAgICAgICJVbmFibGUgdG8gcmVzZXJ2ZSAldSBl
eHRyYSBieXRlcyBpbiBpbnRlcm5hbCB2ZXJ0ZXggYnVmZmVyLCAiCkBAIC0yMDEsNyArMjAzLDcg
QEAKICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFNwYWNlKTsKICAgICB9CiAKLSAg
ICBtUmVzZXJ2ZWRTcGFjZSArPSBhbGlnbmVkUmVxdWlyZWRTcGFjZTsKKyAgICBtUmVzZXJ2ZWRT
cGFjZSA9IGFsaWduZWRSZXF1aXJlZFNwYWNlLlZhbHVlT3JEaWUoKTsKIAogICAgIHJldHVybiBn
bDo6Tm9FcnJvcigpOwogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9WZXJ0ZXhEYXRhTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9WZXJ0ZXhEYXRh
TWFuYWdlci5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVmVydGV4RGF0YU1hbmFnZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMCw2ICsyMCw4IEBACiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNk
L1JlbmRlcmVyRDNELmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1ZlcnRleEJ1
ZmZlci5oIgogCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKIG5hbWVzcGFjZSByeAogewogbmFt
ZXNwYWNlCkBAIC0xMTgsMjcgKzEyMCwxNiBAQAogCiBnbDo6RXJyb3JPclJlc3VsdDx1bnNpZ25l
ZCBpbnQ+IFRyYW5zbGF0ZWRBdHRyaWJ1dGU6OmNvbXB1dGVPZmZzZXQoR0xpbnQgc3RhcnRWZXJ0
ZXgpIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgaW50IG9mZnNldCA9IGJhc2VPZmZzZXQ7Ci0gICAg
aWYgKHVzZXNGaXJzdFZlcnRleE9mZnNldCkKKyAgICBpZiAoIXVzZXNGaXJzdFZlcnRleE9mZnNl
dCkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGludCBzdGFydFZlcnRleFVuc2lnbmVkID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgaW50PihzdGFydFZlcnRleCk7CisgICAgICAgIHJldHVybiBiYXNl
T2Zmc2V0OworICAgIH0KIAotICAgICAgICBpZiAoIUlzVW5zaWduZWRNdWx0aXBsaWNhdGlvblNh
ZmUoc3RyaWRlLCBzdGFydFZlcnRleFVuc2lnbmVkKSkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIk11bHRpcGxpY2F0aW9uIG92ZXJmbG93IGluIFRyYW5zbGF0ZWRBdHRyaWJ1
dGU6OmNvbXB1dGVPZmZzZXQiKTsKLSAgICAgICAgfQorICAgIENoZWNrZWROdW1lcmljPHVuc2ln
bmVkIGludD4gb2Zmc2V0OwogCi0gICAgICAgIHVuc2lnbmVkIGludCBzdHJpZGVPZmZzZXQgPSBz
dHJpZGUgKiBzdGFydFZlcnRleFVuc2lnbmVkOwotICAgICAgICBpZiAoIUlzVW5zaWduZWRBZGRp
dGlvblNhZmUob2Zmc2V0LCBzdHJpZGVPZmZzZXQpKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiQWRkaXRpb24gb3ZlcmZsb3cgaW4gVHJhbnNsYXRlZEF0dHJpYnV0ZTo6Y29t
cHV0ZU9mZnNldCIpOwotICAgICAgICB9Ci0KLSAgICAgICAgb2Zmc2V0ICs9IHN0cmlkZU9mZnNl
dDsKLSAgICB9Ci0gICAgcmV0dXJuIG9mZnNldDsKKyAgICBvZmZzZXQgPSBiYXNlT2Zmc2V0ICsg
c3RyaWRlICogc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihzdGFydFZlcnRleCk7CisgICAgQU5H
TEVfVFJZX0NIRUNLRURfTUFUSChvZmZzZXQpOworICAgIHJldHVybiBvZmZzZXQuVmFsdWVPckRp
ZSgpOwogfQogCiBWZXJ0ZXhTdG9yYWdlVHlwZSBDbGFzc2lmeUF0dHJpYnV0ZVN0b3JhZ2UoY29u
c3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliKQpAQCAtMzUxLDcgKzM0MiwxMCBAQAogCiAg
ICAgVmVydGV4QnVmZmVyICp2ZXJ0ZXhCdWZmZXIgPSBzdGF0aWNCdWZmZXItPmdldFZlcnRleEJ1
ZmZlcigpOwogCi0gICAgaWYgKCFJc1Vuc2lnbmVkQWRkaXRpb25TYWZlKHN0cmVhbU9mZnNldCwg
Zmlyc3RFbGVtZW50T2Zmc2V0KSkKKyAgICBDaGVja2VkTnVtZXJpYzx1bnNpZ25lZCBpbnQ+IGNo
ZWNrZWRPZmZzZXQoc3RyZWFtT2Zmc2V0KTsKKyAgICBjaGVja2VkT2Zmc2V0ICs9IGZpcnN0RWxl
bWVudE9mZnNldDsKKworICAgIGlmICghY2hlY2tlZE9mZnNldC5Jc1ZhbGlkKCkpCiAgICAgewog
ICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICJJbnRlZ2VyIG92ZXJmbG93IGluIFZlcnRleERhdGFNYW5hZ2VyOjpT
dG9yZVN0YXRpY0F0dHJpYiIpOwpAQCAtMzc1LDcgKzM2OSw3IEBACiAgICAgR0xzaXplaSBpbnN0
YW5jZXMpCiB7CiAgICAgLy8gSW5zdGFudGlhdGluZyB0aGlzIGNsYXNzIHdpbGwgZW5zdXJlIHRo
ZSBzdHJlYW1pbmcgYnVmZmVyIGlzIG5ldmVyIGxlZnQgbWFwcGVkLgotICAgIGNsYXNzIFN0cmVh
bWluZ0J1ZmZlclVubWFwcGVyIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCisgICAgY2xhc3Mg
U3RyZWFtaW5nQnVmZmVyVW5tYXBwZXIgZmluYWwgOiBOb25Db3B5YWJsZQogICAgIHsKICAgICAg
IHB1YmxpYzoKICAgICAgICAgU3RyZWFtaW5nQnVmZmVyVW5tYXBwZXIoU3RyZWFtaW5nVmVydGV4
QnVmZmVySW50ZXJmYWNlICpzdHJlYW1pbmdCdWZmZXIpCkBAIC0zOTMsNyArMzg3LDcgQEAKICAg
ICBTdHJlYW1pbmdCdWZmZXJVbm1hcHBlciBsb2NhbFVubWFwcGVyKG1TdHJlYW1pbmdCdWZmZXIp
OwogCiAgICAgLy8gUmVzZXJ2ZSB0aGUgcmVxdWlyZWQgc3BhY2UgZm9yIHRoZSBkeW5hbWljIGJ1
ZmZlcnMuCi0gICAgZm9yIChhdXRvIGF0dHJpYkluZGV4IDogYW5nbGU6Okl0ZXJhdGVCaXRTZXQo
ZHluYW1pY0F0dHJpYnNNYXNrKSkKKyAgICBmb3IgKGF1dG8gYXR0cmliSW5kZXggOiBJdGVyYXRl
Qml0U2V0KGR5bmFtaWNBdHRyaWJzTWFzaykpCiAgICAgewogICAgICAgICBjb25zdCBhdXRvICZk
eW5hbWljQXR0cmliID0gKCp0cmFuc2xhdGVkQXR0cmlicylbYXR0cmliSW5kZXhdOwogICAgICAg
ICBBTkdMRV9UUlkocmVzZXJ2ZVNwYWNlRm9yQXR0cmliKGR5bmFtaWNBdHRyaWIsIGNvdW50LCBp
bnN0YW5jZXMpKTsKQEAgLTQwMCw3ICszOTQsNyBAQAogICAgIH0KIAogICAgIC8vIFN0b3JlIGR5
bmFtaWMgYXR0cmlidXRlcwotICAgIGZvciAoYXV0byBhdHRyaWJJbmRleCA6IGFuZ2xlOjpJdGVy
YXRlQml0U2V0KGR5bmFtaWNBdHRyaWJzTWFzaykpCisgICAgZm9yIChhdXRvIGF0dHJpYkluZGV4
IDogSXRlcmF0ZUJpdFNldChkeW5hbWljQXR0cmlic01hc2spKQogICAgIHsKICAgICAgICAgYXV0
byAqZHluYW1pY0F0dHJpYiA9ICYoKnRyYW5zbGF0ZWRBdHRyaWJzKVthdHRyaWJJbmRleF07CiAg
ICAgICAgIEFOR0xFX1RSWShzdG9yZUR5bmFtaWNBdHRyaWIoZHluYW1pY0F0dHJpYiwgc3RhcnQs
IGNvdW50LCBpbnN0YW5jZXMpKTsKQEAgLTQxNCw3ICs0MDgsNyBAQAogICAgIGNvbnN0IGdsOjpB
dHRyaWJ1dGVzTWFzayAmZHluYW1pY0F0dHJpYnNNYXNrLAogICAgIEdMc2l6ZWkgY291bnQpCiB7
Ci0gICAgZm9yIChhdXRvIGF0dHJpYkluZGV4IDogYW5nbGU6Okl0ZXJhdGVCaXRTZXQoZHluYW1p
Y0F0dHJpYnNNYXNrKSkKKyAgICBmb3IgKGF1dG8gYXR0cmliSW5kZXggOiBJdGVyYXRlQml0U2V0
KGR5bmFtaWNBdHRyaWJzTWFzaykpCiAgICAgewogICAgICAgICBjb25zdCBhdXRvICZkeW5hbWlj
QXR0cmliID0gdHJhbnNsYXRlZEF0dHJpYnNbYXR0cmliSW5kZXhdOwogICAgICAgICBnbDo6QnVm
ZmVyICpidWZmZXIgPSBkeW5hbWljQXR0cmliLmF0dHJpYnV0ZS0+YnVmZmVyLmdldCgpOwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9Xb3Jr
YXJvdW5kc0QzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvV29ya2Fyb3VuZHNEM0QuaAkocmV2aXNpb24gMjA4MDIxKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9Xb3Jr
YXJvdW5kc0QzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNywzNSArMTcsMjIgQEAKIHsKIHN0cnVj
dCBEM0RDb21waWxlcldvcmthcm91bmRzCiB7Ci0gICAgRDNEQ29tcGlsZXJXb3JrYXJvdW5kcygp
Ci0gICAgICAgIDogc2tpcE9wdGltaXphdGlvbihmYWxzZSksIHVzZU1heE9wdGltaXphdGlvbihm
YWxzZSksIGVuYWJsZUlFRUVTdHJpY3RuZXNzKGZhbHNlKQotICAgIHsKLSAgICB9CisgICAgYm9v
bCBza2lwT3B0aW1pemF0aW9uICAgPSBmYWxzZTsKKyAgICBib29sIHVzZU1heE9wdGltaXphdGlv
biA9IGZhbHNlOwogCi0gICAgYm9vbCBza2lwT3B0aW1pemF0aW9uOwotICAgIGJvb2wgdXNlTWF4
T3B0aW1pemF0aW9uOwotCiAgICAgLy8gSUVFRSBzdHJpY3RuZXNzIG5lZWRzIHRvIGJlIGVuYWJs
ZWQgZm9yIE5BTnMgdG8gd29yay4KLSAgICBib29sIGVuYWJsZUlFRUVTdHJpY3RuZXNzOworICAg
IGJvb2wgZW5hYmxlSUVFRVN0cmljdG5lc3MgPSBmYWxzZTsKIH07CiAKIHN0cnVjdCBXb3JrYXJv
dW5kc0QzRAogewotICAgIFdvcmthcm91bmRzRDNEKCkKLSAgICAgICAgOiBtcnRQZXJmV29ya2Fy
b3VuZChmYWxzZSksCi0gICAgICAgICAgc2V0RGF0YUZhc3RlclRoYW5JbWFnZVVwbG9hZChmYWxz
ZSksCi0gICAgICAgICAgemVyb01heExvZFdvcmthcm91bmQoZmFsc2UpLAotICAgICAgICAgIHVz
ZUluc3RhbmNlZFBvaW50U3ByaXRlRW11bGF0aW9uKGZhbHNlKQotICAgIHsKLSAgICB9Ci0KICAg
ICAvLyBPbiBzb21lIHN5c3RlbXMsIGhhdmluZyBleHRyYSByZW5kZXJ0YXJnZXRzIHRoYW4gbmVj
ZXNzYXJ5IHNsb3dzIGRvd24gdGhlIHNoYWRlci4KICAgICAvLyBXZSBjYW4gZml4IHRoaXMgYnkg
b3B0aW1pemluZyB0aG9zZSBvdXQgb2YgdGhlIHNoYWRlci4gQXQgdGhlIHNhbWUgdGltZSwgd2Ug
Y2FuCiAgICAgLy8gd29yayBhcm91bmQgYSBidWcgb24gc29tZSBuVmlkaWEgZHJpdmVycyB0aGF0
IHRoZXkgaWdub3JlICJudWxsIiByZW5kZXIgdGFyZ2V0cwogICAgIC8vIGluIEQzRDExLCBieSBj
b21wYWN0aW5nIHRoZSBhY3RpdmUgY29sb3IgYXR0YWNobWVudHMgbGlzdCB0byBvbWl0IG51bGwg
ZW50cmllcy4KLSAgICBib29sIG1ydFBlcmZXb3JrYXJvdW5kOworICAgIGJvb2wgbXJ0UGVyZldv
cmthcm91bmQgPSBmYWxzZTsKIAotICAgIGJvb2wgc2V0RGF0YUZhc3RlclRoYW5JbWFnZVVwbG9h
ZDsKKyAgICBib29sIHNldERhdGFGYXN0ZXJUaGFuSW1hZ2VVcGxvYWQgPSBmYWxzZTsKIAogICAg
IC8vIFNvbWUgcmVuZGVyZXJzIGNhbid0IGRpc2FibGUgbWlwbWFwcyBvbiBhIG1pcG1hcHBlZCB0
ZXh0dXJlIChpLmUuIHNvbGVseSBzYW1wbGUgZnJvbSBsZXZlbAogICAgIC8vIHplcm8sIGFuZCBp
Z25vcmUgdGhlIG90aGVyIGxldmVscykuIEQzRDExIEZlYXR1cmUgTGV2ZWwgMTArIGRvZXMgdGhp
cyBieSBzZXR0aW5nIE1heExPRCB0bwpAQCAtNTQsMTMgKzQxLDYxIEBACiAgICAgLy8gYXBwbGlj
YXRpb24gY3JlYXRlcyBhIG1pcG1hcHBlZCB0ZXh0dXJlMkQsIGJ1dCBzZXRzIEdMX1RFWFRVUkVf
TUlOX0ZJTFRFUiB0byBHTF9ORUFSRVNUCiAgICAgLy8gKGkuZSBkaXNhYmxlcyBtaXBtYXBzKS4g
VG8gd29yayBhcm91bmQgdGhpcywgRDNEMTEgRkw5XzMgaGFzIHRvIGNyZWF0ZSB0d28gY29waWVz
IG9mIHRoZQogICAgIC8vIHRleHR1cmUuIFRoZSB0ZXh0dXJlcycgbGV2ZWwgemVyb3MgYXJlIGlk
ZW50aWNhbCwgYnV0IG9ubHkgb25lIHRleHR1cmUgaGFzIG1pcHMuCi0gICAgYm9vbCB6ZXJvTWF4
TG9kV29ya2Fyb3VuZDsKKyAgICBib29sIHplcm9NYXhMb2RXb3JrYXJvdW5kID0gZmFsc2U7CiAK
ICAgICAvLyBTb21lIHJlbmRlcmVycyBkbyBub3Qgc3VwcG9ydCBHZW9tZXRyeSBTaGFkZXJzIHNv
IHRoZSBHZW9tZXRyeSBTaGFkZXItYmFzZWQgUG9pbnRTcHJpdGUKICAgICAvLyBlbXVsYXRpb24g
d2lsbCBub3Qgd29yay4gVG8gd29yayBhcm91bmQgdGhpcywgRDNEMTEgRkw5XzMgaGFzIHRvIHVz
ZSBhIGRpZmZlcmVudCBwb2ludHNwcml0ZQogICAgIC8vIGVtdWxhdGlvbiB0aGF0IGlzIGltcGxl
bWVudGVkIHVzaW5nIGluc3RhbmNlZCBxdWFkcy4KLSAgICBib29sIHVzZUluc3RhbmNlZFBvaW50
U3ByaXRlRW11bGF0aW9uOworICAgIGJvb2wgdXNlSW5zdGFuY2VkUG9pbnRTcHJpdGVFbXVsYXRp
b24gPSBmYWxzZTsKKworICAgIC8vIEEgYnVnIGZpeGVkIGluIE5WSURJQSBkcml2ZXIgdmVyc2lv
biAzNDcuODggPCB4IDw9IDM2OC44MSB0cmlnZ2VycyBhIFREUiB3aGVuIHVzaW5nCisgICAgLy8g
Q29weVN1YnJlc291cmNlUmVnaW9uIGZyb20gYSBzdGFnaW5nIHRleHR1cmUgdG8gYSBkZXB0aC9z
dGVuY2lsIGluIEQzRDExLiBUaGUgd29ya2Fyb3VuZAorICAgIC8vIGlzIHRvIHVzZSBVcGRhdGVT
dWJyZXNvdXJjZSB0byB0cmlnZ2VyIGFuIGV4dHJhIGNvcHkuIFdlIGRpc2FibGUgdGhpcyB3b3Jr
YXJvdW5kIG9uIG5ld2VyCisgICAgLy8gTlZJRElBIGRyaXZlciB2ZXJzaW9ucyBiZWNhdXNlIG9m
IGEgc2Vjb25kIGRyaXZlciBidWcgcHJlc2VudCB3aXRoIHRoZSB3b3JrYXJvdW5kIGVuYWJsZWQu
CisgICAgLy8gKFNlZTogaHR0cDovL2FuZ2xlYnVnLmNvbS8xNDUyKQorICAgIGJvb2wgZGVwdGhT
dGVuY2lsQmxpdEV4dHJhQ29weSA9IGZhbHNlOworCisgICAgLy8gVGhlIEhMU0wgb3B0aW1pemVy
IGhhcyBhIGJ1ZyB3aXRoIG9wdGltaXppbmcgInBvdyIgaW4gY2VydGFpbiBpbnRlZ2VyLXZhbHVl
ZCBleHByZXNzaW9ucy4KKyAgICAvLyBXZSBjYW4gd29yayBhcm91bmQgdGhpcyBieSBleHBhbmRp
bmcgdGhlIHBvdyBpbnRvIGEgc2VyaWVzIG9mIG11bHRpcGxpZXMgaWYgd2UncmUgcnVubmluZwor
ICAgIC8vIHVuZGVyIHRoZSBhZmZlY3RlZCBjb21waWxlci4KKyAgICBib29sIGV4cGFuZEludGVn
ZXJQb3dFeHByZXNzaW9ucyA9IGZhbHNlOworCisgICAgLy8gTlZJRElBIGRyaXZlcnMgc29tZXRp
bWVzIHdyaXRlIG91dC1vZi1vcmRlciByZXN1bHRzIHRvIFN0cmVhbU91dCBidWZmZXJzIHdoZW4g
dHJhbnNmb3JtCisgICAgLy8gZmVlZGJhY2sgaXMgdXNlZCB0byByZXBlYXRlZGx5IHdyaXRlIHRv
IHRoZSBzYW1lIGJ1ZmZlciBwb3NpdGlvbnMuCisgICAgYm9vbCBmbHVzaEFmdGVyRW5kaW5nVHJh
bnNmb3JtRmVlZGJhY2sgPSBmYWxzZTsKKworICAgIC8vIFNvbWUgZHJpdmVycyAoTlZJRElBKSBk
byBub3QgdGFrZSBpbnRvIGFjY291bnQgdGhlIGJhc2UgbGV2ZWwgb2YgdGhlIHRleHR1cmUgaW4g
dGhlIHJlc3VsdHMKKyAgICAvLyBvZiB0aGUgSExTTCBHZXREaW1lbnNpb25zIGJ1aWx0aW4uCisg
ICAgYm9vbCBnZXREaW1lbnNpb25zSWdub3Jlc0Jhc2VMZXZlbCA9IGZhbHNlOworCisgICAgLy8g
T24gc29tZSBJbnRlbCBkcml2ZXJzLCBITFNMJ3MgZnVuY3Rpb24gdGV4dHVyZS5Mb2FkIHJldHVy
bnMgMCB3aGVuIHRoZSBwYXJhbWV0ZXIgTG9jYXRpb24KKyAgICAvLyBpcyBuZWdhdGl2ZSwgZXZl
biBpZiB0aGUgc3VtIG9mIE9mZnNldCBhbmQgTG9jYXRpb24gaXMgaW4gcmFuZ2UuIFRoaXMgbWF5
IGNhdXNlIGVycm9ycyB3aGVuCisgICAgLy8gdHJhbnNsYXRpbmcgR0xTTCdzIGZ1bmN0aW9uIHRl
eGVsRmV0Y2hPZmZzZXQgaW50byB0ZXh0dXJlLkxvYWQsIGFzIGl0IGlzIHZhbGlkIGZvcgorICAg
IC8vIHRleGVsRmV0Y2hPZmZzZXQgdG8gdXNlIG5lZ2F0aXZlIHRleHR1cmUgY29vcmRpbmF0ZXMg
YXMgaXRzIHBhcmFtZXRlciBQIHdoZW4gdGhlIHN1bSBvZiBQCisgICAgLy8gYW5kIE9mZnNldCBp
cyBpbiByYW5nZS4gVG8gd29yayBhcm91bmQgdGhpcywgd2UgdHJhbnNsYXRlIHRleGVsRmV0Y2hP
ZmZzZXQgaW50byB0ZXhlbEZldGNoCisgICAgLy8gYnkgYWRkaW5nIE9mZnNldCBkaXJlY3RseSB0
byBMb2NhdGlvbiBiZWZvcmUgcmVhZGluZyB0aGUgdGV4dHVyZS4KKyAgICBib29sIHByZUFkZFRl
eGVsRmV0Y2hPZmZzZXRzID0gZmFsc2U7CisKKyAgICAvLyBPbiBzb21lIEFNRCBkcml2ZXJzLCAx
eDEgYW5kIDJ4MiBtaXBzIG9mIGRlcHRoL3N0ZW5jaWwgdGV4dHVyZXMgYXJlbid0IHNhbXBsZWQg
Y29ycmVjdGx5LgorICAgIC8vIFdlIGNhbiB3b3JrIGFyb3VuZCB0aGlzIGJ1ZyBieSBkb2luZyBh
biBpbnRlcm5hbCBibGl0IHRvIGEgdGVtcG9yYXJ5IHNpbmdsZS1jaGFubmVsIHRleHR1cmUKKyAg
ICAvLyBiZWZvcmUgd2Ugc2FtcGxlLgorICAgIGJvb2wgZW11bGF0ZVRpbnlTdGVuY2lsVGV4dHVy
ZXMgPSBmYWxzZTsKKworICAgIC8vIEluIEludGVsIGRyaXZlciwgdGhlIGRhdGEgd2l0aCBmb3Jt
YXQgRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNIHdpbGwgYmUgcGFyc2VkIGluY29ycmVjdGx5Lgor
ICAgIC8vIFRoaXMgd29ya2Fyb3VkIHdpbGwgZGlzYWJsZSBCNUc2UjUgc3VwcG9ydCB3aGVuIGl0
J3MgSW50ZWwgZHJpdmVyLiBCeSBkZWZhdWx0LCBpdCB3aWxsIHVzZQorICAgIC8vIFI4RzhCOEE4
IGZvcm1hdC4KKyAgICBib29sIGRpc2FibGVCNUc2UjVTdXBwb3J0ID0gZmFsc2U7CisKKyAgICAv
LyBPbiBzb21lIEludGVsIGRyaXZlcnMsIGV2YWx1YXRpbmcgdW5hcnkgbWludXMgb3BlcmF0b3Ig
b24gaW50ZWdlciBtYXkgZ2V0IHdyb25nIGFuc3dlciBpbgorICAgIC8vIHZlcnRleCBzaGFkZXJz
LiBUbyB3b3JrIGFyb3VuZCB0aGlzIGJ1Zywgd2UgdHJhbnNsYXRlIC0oaW50KSBpbnRvIH4oaW50
KSsxLgorICAgIGJvb2wgcmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvciA9IGZhbHNlOworCisgICAg
Ly8gT24gc29tZSBJbnRlbCBkcml2ZXJzLCB1c2luZyBpc25hbigpIG9uIGhpZ2hwIGZsb2F0IHdp
bGwgZ2V0IHdyb25nIGFuc3dlci4gVG8gd29yayBhcm91bmQKKyAgICAvLyB0aGlzIGJ1Zywgd2Ug
dXNlIGFuIGV4cHJlc3Npb24gdG8gZW11bGF0ZSBmdW5jdGlvbiBpc25hbigpLiBUcmFja2luZyBi
dWc6CisgICAgLy8gaHR0cHM6Ly9jcmJ1Zy5jb20vNjUwNTQ3CisgICAgYm9vbCBlbXVsYXRlSXNu
YW5GbG9hdCA9IGZhbHNlOwogfTsKLX0KIAorfSAgLy8gbmFtZXNwYWNlIHJ4CisKICNlbmRpZiAg
Ly8gTElCQU5HTEVfUkVOREVSRVJfRDNEX1dPUktBUk9VTkRTRDNEX0hfCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2NvcHlpbWFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9jb3B5aW1hZ2UuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2NvcHlpbWFnZS5jcHAJKG5vbmV4
aXN0ZW50KQpAQCAtMSwyMiArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gY29weWltYWdlLmNw
cDogRGVmaW5lcyBpbWFnZSBjb3B5aW5nIGZ1bmN0aW9ucwotCi0jaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZDNkL2NvcHlpbWFnZS5oIgotCi1uYW1lc3BhY2UgcngKLXsKLQotdm9pZCBDb3B5
QkdSQThUb1JHQkE4KGNvbnN0IHVpbnQ4X3QgKnNvdXJjZSwgdWludDhfdCAqZGVzdCkKLXsKLSAg
ICB1aW50MzJfdCBhcmdiID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihzb3Vy
Y2UpOwotICAgICpyZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oZGVzdCkgPSAoYXJnYiAmIDB4
RkYwMEZGMDApIHwgICAgICAgLy8gS2VlcCBhbHBoYSBhbmQgZ3JlZW4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFyZ2IgJiAweDAwRkYwMDAwKSA+PiAxNiB8IC8v
IE1vdmUgcmVkIHRvIGJsdWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGFyZ2IgJiAweDAwMDAwMEZGKSA8PCAxNjsgIC8vIE1vdmUgYmx1ZSB0byByZWQKLX0KLQot
fQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9jb3B5aW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2NvcHlpbWFnZS5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2NvcHlpbWFn
ZS5oCShub25leGlzdGVudCkKQEAgLTEsMzUgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykg
MjAxMy0yMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQot
Ly8gY29weWltYWdlLmg6IERlZmluZXMgaW1hZ2UgY29weWluZyBmdW5jdGlvbnMKLQotI2lmbmRl
ZiBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfQ09QWUlNQUdFX0hfCi0jZGVmaW5lIExJQkFOR0xFX1JF
TkRFUkVSX0QzRF9DT1BZSU1BR0VfSF8KLQotI2luY2x1ZGUgImNvbW1vbi9tYXRodXRpbC5oIgot
I2luY2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMuaCIKLQotI2luY2x1ZGUgPHN0ZGludC5oPgot
Ci1uYW1lc3BhY2UgcngKLXsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIHNvdXJjZVR5cGUsIHR5cGVu
YW1lIGNvbG9yRGF0YVR5cGU+Ci12b2lkIFJlYWRDb2xvcihjb25zdCB1aW50OF90ICpzb3VyY2Us
IHVpbnQ4X3QgKmRlc3QpOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgZGVzdFR5cGUsIHR5cGVuYW1l
IGNvbG9yRGF0YVR5cGU+Ci12b2lkIFdyaXRlQ29sb3IoY29uc3QgdWludDhfdCAqc291cmNlLCB1
aW50OF90ICpkZXN0KTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIHNvdXJjZVR5cGUsIHR5cGVuYW1l
IGRlc3RUeXBlLCB0eXBlbmFtZSBjb2xvckRhdGFUeXBlPgotdm9pZCBDb3B5UGl4ZWwoY29uc3Qg
dWludDhfdCAqc291cmNlLCB1aW50OF90ICpkZXN0KTsKLQotdm9pZCBDb3B5QkdSQThUb1JHQkE4
KGNvbnN0IHVpbnQ4X3QgKnNvdXJjZSwgdWludDhfdCAqZGVzdCk7Ci0KLX0KLQotI2luY2x1ZGUg
ImNvcHlpbWFnZS5pbmwiCi0KLSNlbmRpZiAvLyBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfQ09QWUlN
QUdFX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2NvcHlpbWFnZS5pbmwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9jb3B5aW1hZ2UuaW5sCShyZXZpc2lvbiAyMDgw
MjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2NvcHlpbWFnZS5pbmwJKG5vbmV4aXN0ZW50KQpAQCAtMSwzMiArMCwwIEBACi0vLwotLy8gQ29w
eXJpZ2h0IChjKSAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgot
Ly8KLQotLy8gY29weWltYWdlLmlubDogRGVmaW5lcyBpbWFnZSBjb3B5aW5nIGZ1bmN0aW9ucwot
Ci1uYW1lc3BhY2UgcngKLXsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIHNvdXJjZVR5cGUsIHR5cGVu
YW1lIGNvbG9yRGF0YVR5cGU+Ci1pbmxpbmUgdm9pZCBSZWFkQ29sb3IoY29uc3QgdWludDhfdCAq
c291cmNlLCB1aW50OF90ICpkZXN0KQotewotICAgIHNvdXJjZVR5cGU6OnJlYWRDb2xvcihyZWlu
dGVycHJldF9jYXN0PGdsOjpDb2xvcjxjb2xvckRhdGFUeXBlPio+KGRlc3QpLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IHNvdXJjZVR5cGUqPihzb3VyY2UpKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVu
YW1lIGRlc3RUeXBlLCB0eXBlbmFtZSBjb2xvckRhdGFUeXBlPgotaW5saW5lIHZvaWQgV3JpdGVD
b2xvcihjb25zdCB1aW50OF90ICpzb3VyY2UsIHVpbnQ4X3QgKmRlc3QpCi17Ci0gICAgZGVzdFR5
cGU6OndyaXRlQ29sb3IocmVpbnRlcnByZXRfY2FzdDxkZXN0VHlwZSo+KGRlc3QpLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IGdsOjpDb2xvcjxjb2xvckRhdGFUeXBlPio+KHNvdXJjZSkpOwotfQot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgc291cmNlVHlwZSwgdHlwZW5hbWUgZGVzdFR5cGUsIHR5cGVu
YW1lIGNvbG9yRGF0YVR5cGU+Ci1pbmxpbmUgdm9pZCBDb3B5UGl4ZWwoY29uc3QgdWludDhfdCAq
c291cmNlLCB1aW50OF90ICpkZXN0KQotewotICAgIGNvbG9yRGF0YVR5cGUgdGVtcDsKLSAgICBS
ZWFkQ29sb3I8c291cmNlVHlwZSwgY29sb3JEYXRhVHlwZT4oc291cmNlLCAmdGVtcCk7Ci0gICAg
V3JpdGVDb2xvcjxkZXN0VHlwZSwgY29sb3JEYXRhVHlwZT4oJnRlbXAsIGRlc3QpOwotfQotCi19
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL0JsaXQxMS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9CbGl0MTEuY3BwCShyZXZpc2lvbiAyMDgw
MjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL0JsaXQxMS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyLDE2ICsxMiwyOSBAQAogCiAj
aW5jbHVkZSAibGliQU5HTEUvZm9ybWF0dXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvUmVuZGVyZXIxMS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9SZW5kZXJUYXJnZXQxMS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL2Zvcm1hdHV0aWxzMTEuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfdGFibGUuaCIKICNpbmNsdWRlICJ0aGlyZF9wYXJ0
eS90cmFjZV9ldmVudC90cmFjZV9ldmVudC5oIgogCituYW1lc3BhY2UgcngKK3sKKworbmFtZXNw
YWNlCit7CisKKy8vIEluY2x1ZGUgaW5saW5lIHNoYWRlcnMgaW4gdGhlIGFub255bW91cyBuYW1l
c3BhY2UgdG8gbWFrZSBzdXJlIG5vIHN5bWJvbHMgYXJlIGV4cG9ydGVkCiAjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2gyZDEx
dnMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21w
aWxlZC9wYXNzdGhyb3VnaGRlcHRoMmQxMXBzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2JhMmQxMXBzLmgiCisj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFz
c3Rocm91Z2hyZ2JhcHJlbXVsdGlwbHkyZDExcHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYmF1bm11bHRpcGx5
MmQxMXBzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMv
Y29tcGlsZWQvcGFzc3Rocm91Z2hyZ2JhMmR1aTExcHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYmEyZGkxMXBz
LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGls
ZWQvcGFzc3Rocm91Z2hyZ2IyZDExcHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYnByZW11bHRpcGx5MmQxMXBz
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGls
ZWQvcGFzc3Rocm91Z2hyZ2J1bm11bHRpcGx5MmQxMXBzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2IyZHVpMTFw
cy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBp
bGVkL3Bhc3N0aHJvdWdocmdiMmRpMTFwcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmcyZDExcHMuaCIKQEAgLTUw
LDYgKzYzLDExIEBACiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRl
cnMvY29tcGlsZWQvcGFzc3Rocm91Z2hsdW0zZDExcHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaGx1bWFscGhhM2Qx
MXBzLmgiCiAKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9j
b21waWxlZC9yZXNvbHZlZGVwdGgxMV9wcy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Jlc29sdmVkZXB0aHN0ZW5jaWwxMV9wcy5oIgor
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Jl
c29sdmVkZXB0aHN0ZW5jaWwxMV92cy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Jlc29sdmVzdGVuY2lsMTFfcHMuaCIKKwogI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3N3aXp6bGVm
MmRwcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2Nv
bXBpbGVkL3N3aXp6bGVpMmRwcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9zaGFkZXJzL2NvbXBpbGVkL3N3aXp6bGV1aTJkcHMuaCIKQEAgLTYwLDYzICs3OCwzMjQg
QEAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxl
ZC9zd2l6emxlaTJkYXJyYXlwcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9zaGFkZXJzL2NvbXBpbGVkL3N3aXp6bGV1aTJkYXJyYXlwcy5oIgogCi1uYW1lc3BhY2Ug
cngKK3ZvaWQgU3RyZXRjaGVkQmxpdE5lYXJlc3RfUm93QnlSb3coY29uc3QgZ2w6OkJveCAmc291
cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJv
eCAmZGVzdEFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpSZWN0YW5nbGUgJmNsaXBwZWREZXN0QXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNvdXJjZVNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VSb3dQaXRjaCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRlc3RSb3dQaXRjaCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHBpeGVsU2l6ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqc291cmNlRGF0YSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqZGVzdERhdGEpCiB7
CisgICAgaW50IHNyY0hlaWdodFN1Yk9uZSA9IChzb3VyY2VBcmVhLmhlaWdodCAtIDEpOworICAg
IHNpemVfdCBjb3B5U2l6ZSAgICAgPSBwaXhlbFNpemUgKiBkZXN0QXJlYS53aWR0aDsKKyAgICBz
aXplX3Qgc3JjT2Zmc2V0ICAgID0gc291cmNlQXJlYS54ICogcGl4ZWxTaXplOworICAgIHNpemVf
dCBkZXN0T2Zmc2V0ICAgPSBkZXN0QXJlYS54ICogcGl4ZWxTaXplOwogCi1uYW1lc3BhY2UKKyAg
ICBmb3IgKGludCB5ID0gY2xpcHBlZERlc3RBcmVhLnk7IHkgPCBjbGlwcGVkRGVzdEFyZWEueSAr
IGNsaXBwZWREZXN0QXJlYS5oZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIGZsb2F0IHlQZXJj
ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHkgLSBkZXN0QXJlYS55KSAvIChkZXN0QXJlYS5oZWlnaHQg
LSAxKTsKKworICAgICAgICAvLyBJbnRlcnBvbGF0ZSB1c2luZyB0aGUgb3JpZ2luYWwgc291cmNl
IHJlY3RhbmdsZSB0byBkZXRlcm1pbmUgd2hpY2ggcm93IHRvIHNhbXBsZSBmcm9tCisgICAgICAg
IC8vIHdoaWxlIGNsYW1waW5nIHRvIHRoZSBlZGdlcworICAgICAgICB1bnNpZ25lZCBpbnQgcmVh
ZFJvdyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oCisgICAgICAgICAgICBnbDo6Y2xhbXAo
c291cmNlQXJlYS55ICsgZmxvb3IoeVBlcmMgKiBzcmNIZWlnaHRTdWJPbmUgKyAwLjVmKSwgMCwg
c3JjSGVpZ2h0U3ViT25lKSk7CisgICAgICAgIHVuc2lnbmVkIGludCB3cml0ZVJvdyA9IHk7CisK
KyAgICAgICAgY29uc3QgdWludDhfdCAqc291cmNlUm93ID0gc291cmNlRGF0YSArIHJlYWRSb3cg
KiBzb3VyY2VSb3dQaXRjaCArIHNyY09mZnNldDsKKyAgICAgICAgdWludDhfdCAqZGVzdFJvdyAg
ICAgICAgID0gZGVzdERhdGEgKyB3cml0ZVJvdyAqIGRlc3RSb3dQaXRjaCArIGRlc3RPZmZzZXQ7
CisgICAgICAgIG1lbWNweShkZXN0Um93LCBzb3VyY2VSb3csIGNvcHlTaXplKTsKKyAgICB9Cit9
CisKK3ZvaWQgU3RyZXRjaGVkQmxpdE5lYXJlc3RfUGl4ZWxCeVBpeGVsKGNvbnN0IGdsOjpCb3gg
JnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6Qm94ICZkZXN0QXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmNsaXBwZWREZXN0QXJlYSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzb3VyY2VTaXplLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJj
ZVJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IGRlc3RSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB0cmRpZmZfdCByZWFkT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHRyZGlmZl90IHdyaXRlT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGNvcHlTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IHNyY1BpeGVsU3RyaWRlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlc3RQaXhlbFN0cmlkZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNvdXJjZURhdGEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpkZXN0RGF0YSkK
IHsKKyAgICBhdXRvIHhNYXggPSBjbGlwcGVkRGVzdEFyZWEueCArIGNsaXBwZWREZXN0QXJlYS53
aWR0aDsKKyAgICBhdXRvIHlNYXggPSBjbGlwcGVkRGVzdEFyZWEueSArIGNsaXBwZWREZXN0QXJl
YS5oZWlnaHQ7CiAKLURYR0lfRk9STUFUIEdldFRleHR1cmVGb3JtYXQoSUQzRDExUmVzb3VyY2Ug
KnJlc291cmNlKQorICAgIGZvciAoaW50IHdyaXRlUm93ID0gY2xpcHBlZERlc3RBcmVhLnk7IHdy
aXRlUm93IDwgeU1heDsgd3JpdGVSb3crKykKKyAgICB7CisgICAgICAgIC8vIEludGVycG9sYXRl
IHVzaW5nIHRoZSBvcmlnaW5hbCBzb3VyY2UgcmVjdGFuZ2xlIHRvIGRldGVybWluZSB3aGljaCBy
b3cgdG8gc2FtcGxlIGZyb20KKyAgICAgICAgLy8gd2hpbGUgY2xhbXBpbmcgdG8gdGhlIGVkZ2Vz
CisgICAgICAgIGZsb2F0IHlQZXJjICAgID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHdyaXRlUm93IC0g
ZGVzdEFyZWEueSkgLyAoZGVzdEFyZWEuaGVpZ2h0IC0gMSk7CisgICAgICAgIGZsb2F0IHlSb3Vu
ZGVkID0gZmxvb3IoeVBlcmMgKiAoc291cmNlQXJlYS5oZWlnaHQgLSAxKSArIDAuNWYpOworICAg
ICAgICB1bnNpZ25lZCBpbnQgcmVhZFJvdyA9CisgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBpbnQ+KGdsOjpjbGFtcChzb3VyY2VBcmVhLnkgKyB5Um91bmRlZCwgMCwgc291cmNlU2l6
ZS5oZWlnaHQgLSAxKSk7CisKKyAgICAgICAgZm9yIChpbnQgd3JpdGVDb2x1bW4gPSBjbGlwcGVk
RGVzdEFyZWEueDsgd3JpdGVDb2x1bW4gPCB4TWF4OyB3cml0ZUNvbHVtbisrKQorICAgICAgICB7
CisgICAgICAgICAgICAvLyBJbnRlcnBvbGF0ZSB0aGUgb3JpZ2luYWwgc291cmNlIHJlY3Rhbmds
ZSB0byBkZXRlcm1pbmUgd2hpY2ggY29sdW1uIHRvIHNhbXBsZQorICAgICAgICAgICAgLy8gZnJv
bSB3aGlsZSBjbGFtcGluZyB0byB0aGUgZWRnZXMKKyAgICAgICAgICAgIGZsb2F0IHhQZXJjICAg
ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHdyaXRlQ29sdW1uIC0gZGVzdEFyZWEueCkgLyAoZGVzdEFy
ZWEud2lkdGggLSAxKTsKKyAgICAgICAgICAgIGZsb2F0IHhSb3VuZGVkID0gZmxvb3IoeFBlcmMg
KiAoc291cmNlQXJlYS53aWR0aCAtIDEpICsgMC41Zik7CisgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgcmVhZENvbHVtbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oCisgICAgICAgICAgICAg
ICAgZ2w6OmNsYW1wKHNvdXJjZUFyZWEueCArIHhSb3VuZGVkLCAwLCBzb3VyY2VTaXplLmhlaWdo
dCAtIDEpKTsKKworICAgICAgICAgICAgY29uc3QgdWludDhfdCAqc291cmNlUGl4ZWwgPQorICAg
ICAgICAgICAgICAgIHNvdXJjZURhdGEgKyByZWFkUm93ICogc291cmNlUm93UGl0Y2ggKyByZWFk
Q29sdW1uICogc3JjUGl4ZWxTdHJpZGUgKyByZWFkT2Zmc2V0OworCisgICAgICAgICAgICB1aW50
OF90ICpkZXN0UGl4ZWwgPQorICAgICAgICAgICAgICAgIGRlc3REYXRhICsgd3JpdGVSb3cgKiBk
ZXN0Um93UGl0Y2ggKyB3cml0ZUNvbHVtbiAqIGRlc3RQaXhlbFN0cmlkZSArIHdyaXRlT2Zmc2V0
OworCisgICAgICAgICAgICBtZW1jcHkoZGVzdFBpeGVsLCBzb3VyY2VQaXhlbCwgY29weVNpemUp
OworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFN0cmV0Y2hlZEJsaXROZWFyZXN0KGNvbnN0
IGdsOjpCb3ggJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpCb3ggJmRlc3RBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVj
dGFuZ2xlICZjbGlwUmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4
dGVudHMgJnNvdXJjZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCBzb3VyY2VSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IGRlc3RSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHJlYWRP
ZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCB3cml0ZU9mZnNldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNvcHlTaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3Qgc3JjUGl4ZWxTdHJpZGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBkZXN0UGl4ZWxTdHJpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHVpbnQ4X3QgKnNvdXJjZURhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQ4X3QgKmRlc3REYXRhKQogewotICAgIElEM0QxMVRleHR1cmUyRCAqdGV4dHVyZSA9IGQzZDEx
OjpEeW5hbWljQ2FzdENvbU9iamVjdDxJRDNEMTFUZXh0dXJlMkQ+KHJlc291cmNlKTsKLSAgICBp
ZiAoIXRleHR1cmUpCisgICAgZ2w6OlJlY3RhbmdsZSBjbGlwcGVkRGVzdEFyZWEoZGVzdEFyZWEu
eCwgZGVzdEFyZWEueSwgZGVzdEFyZWEud2lkdGgsIGRlc3RBcmVhLmhlaWdodCk7CisgICAgZ2w6
OkNsaXBSZWN0YW5nbGUoY2xpcHBlZERlc3RBcmVhLCBjbGlwUmVjdCwgJmNsaXBwZWREZXN0QXJl
YSk7CisKKyAgICAvLyBEZXRlcm1pbmUgaWYgZW50aXJlIHJvd3MgY2FuIGJlIGNvcGllZCBhdCBv
bmNlIGluc3RlYWQgb2YgZWFjaCBpbmRpdmlkdWFsIHBpeGVsLiBUaGVyZQorICAgIC8vIG11c3Qg
YmUgbm8gb3V0IG9mIGJvdW5kcyBsb29rdXBzLCB3aG9sZSByb3dzIGNvcGllcywgYW5kIG5vIHNj
YWxlLgorICAgIGlmIChzb3VyY2VBcmVhLndpZHRoID09IGNsaXBwZWREZXN0QXJlYS53aWR0aCAm
JiBzb3VyY2VBcmVhLnggPj0gMCAmJgorICAgICAgICBzb3VyY2VBcmVhLnggKyBzb3VyY2VBcmVh
LndpZHRoIDw9IHNvdXJjZVNpemUud2lkdGggJiYgY29weVNpemUgPT0gc3JjUGl4ZWxTdHJpZGUg
JiYKKyAgICAgICAgY29weVNpemUgPT0gZGVzdFBpeGVsU3RyaWRlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIERYR0lfRk9STUFUX1VOS05PV047CisgICAgICAgIFN0cmV0Y2hlZEJsaXROZWFyZXN0
X1Jvd0J5Um93KHNvdXJjZUFyZWEsIGRlc3RBcmVhLCBjbGlwcGVkRGVzdEFyZWEsIHNvdXJjZVNp
emUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVJvd1BpdGNo
LCBkZXN0Um93UGl0Y2gsIHNyY1BpeGVsU3RyaWRlLCBzb3VyY2VEYXRhLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0RGF0YSk7CiAgICAgfQorICAgIGVsc2UKKyAg
ICB7CisgICAgICAgIFN0cmV0Y2hlZEJsaXROZWFyZXN0X1BpeGVsQnlQaXhlbChzb3VyY2VBcmVh
LCBkZXN0QXJlYSwgY2xpcHBlZERlc3RBcmVhLCBzb3VyY2VTaXplLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlUm93UGl0Y2gsIGRlc3RSb3dQaXRjaCwg
cmVhZE9mZnNldCwgd3JpdGVPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb3B5U2l6ZSwgc3JjUGl4ZWxTdHJpZGUsIGRlc3RQaXhlbFN0cmlkZSwgc291
cmNlRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RE
YXRhKTsKKyAgICB9Cit9CiAKLSAgICBEM0QxMV9URVhUVVJFMkRfREVTQyBkZXNjOwotICAgIHRl
eHR1cmUtPkdldERlc2MoJmRlc2MpOwordXNpbmcgRGVwdGhTdGVuY2lsTG9hZGVyID0gdm9pZChj
b25zdCBmbG9hdCAqLCB1aW50OF90ICopOwogCi0gICAgU2FmZVJlbGVhc2UodGV4dHVyZSk7Cit2
b2lkIExvYWREZXB0aDE2KGNvbnN0IGZsb2F0ICpzb3VyY2UsIHVpbnQ4X3QgKmRlc3QpCit7Cisg
ICAgdWludDMyX3QgY29udmVydGVkRGVwdGggPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8MTYsIHVp
bnQzMl90Pihzb3VyY2VbMF0pOworICAgIG1lbWNweShkZXN0LCAmY29udmVydGVkRGVwdGgsIDJ1
KTsKK30KIAotICAgIHJldHVybiBkZXNjLkZvcm1hdDsKK3ZvaWQgTG9hZERlcHRoMjQoY29uc3Qg
ZmxvYXQgKnNvdXJjZSwgdWludDhfdCAqZGVzdCkKK3sKKyAgICB1aW50MzJfdCBjb252ZXJ0ZWRE
ZXB0aCA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDwyNCwgdWludDMyX3Q+KHNvdXJjZVswXSk7Cisg
ICAgbWVtY3B5KGRlc3QsICZjb252ZXJ0ZWREZXB0aCwgM3UpOwogfQogCi1JRDNEMTFSZXNvdXJj
ZSAqQ3JlYXRlU3RhZ2luZ1RleHR1cmUoSUQzRDExRGV2aWNlICpkZXZpY2UsIElEM0QxMURldmlj
ZUNvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SUQzRDExUmVzb3VyY2UgKnNvdXJjZSwgdW5zaWduZWQgaW50IHN1YnJlc291cmNlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLCB1
bnNpZ25lZCBpbnQgY3B1QWNjZXNzRmxhZ3MpCit2b2lkIExvYWRTdGVuY2lsSGVscGVyKGNvbnN0
IGZsb2F0ICpzb3VyY2UsIHVpbnQ4X3QgKmRlc3QpCiB7Ci0gICAgRDNEMTFfVEVYVFVSRTJEX0RF
U0Mgc3RhZ2luZ0Rlc2M7Ci0gICAgc3RhZ2luZ0Rlc2MuV2lkdGggPSBzaXplLndpZHRoOwotICAg
IHN0YWdpbmdEZXNjLkhlaWdodCA9IHNpemUuaGVpZ2h0OwotICAgIHN0YWdpbmdEZXNjLk1pcExl
dmVscyA9IDE7Ci0gICAgc3RhZ2luZ0Rlc2MuQXJyYXlTaXplID0gMTsKLSAgICBzdGFnaW5nRGVz
Yy5Gb3JtYXQgPSBHZXRUZXh0dXJlRm9ybWF0KHNvdXJjZSk7Ci0gICAgc3RhZ2luZ0Rlc2MuU2Ft
cGxlRGVzYy5Db3VudCA9IDE7Ci0gICAgc3RhZ2luZ0Rlc2MuU2FtcGxlRGVzYy5RdWFsaXR5ID0g
MDsKLSAgICBzdGFnaW5nRGVzYy5Vc2FnZSA9IEQzRDExX1VTQUdFX1NUQUdJTkc7Ci0gICAgc3Rh
Z2luZ0Rlc2MuQ1BVQWNjZXNzRmxhZ3MgPSBjcHVBY2Nlc3NGbGFnczsKLSAgICBzdGFnaW5nRGVz
Yy5NaXNjRmxhZ3MgPSAwOwotICAgIHN0YWdpbmdEZXNjLkJpbmRGbGFncyA9IDA7CisgICAgdWlu
dDMyX3QgY29udmVydGVkU3RlbmNpbCA9IGdsOjpnZXRTaGlmdGVkRGF0YTw4LCAwPihzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oc291cmNlWzFdKSk7CisgICAgbWVtY3B5KGRlc3QsICZjb252ZXJ0ZWRT
dGVuY2lsLCAxdSk7Cit9CiAKLSAgICBJRDNEMTFUZXh0dXJlMkQgKnN0YWdpbmdUZXh0dXJlID0g
bnVsbHB0cjsKLSAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlVGV4dHVyZTJEKCZz
dGFnaW5nRGVzYywgbnVsbHB0ciwgJnN0YWdpbmdUZXh0dXJlKTsKLSAgICBpZiAoRkFJTEVEKHJl
c3VsdCkpCit2b2lkIExvYWRTdGVuY2lsOChjb25zdCBmbG9hdCAqc291cmNlLCB1aW50OF90ICpk
ZXN0KQoreworICAgIC8vIFNURU5DSUxfSU5ERVg4IGlzIGltcGxlbWVudGVkIHdpdGggRDI0Uzgs
IHdpdGggdGhlIGRlcHRoIGJpdHMgdW51c2VkLiBXcml0ZXMgemVybyBmb3Igc2FmZXR5LgorICAg
IGZsb2F0IHplcm8gPSAwLjBmOworICAgIExvYWREZXB0aDI0KCZ6ZXJvLCAmZGVzdFswXSk7Cisg
ICAgTG9hZFN0ZW5jaWxIZWxwZXIoc291cmNlLCAmZGVzdFszXSk7Cit9CisKK3ZvaWQgTG9hZERl
cHRoMjRTdGVuY2lsOChjb25zdCBmbG9hdCAqc291cmNlLCB1aW50OF90ICpkZXN0KQoreworICAg
IExvYWREZXB0aDI0KHNvdXJjZSwgJmRlc3RbMF0pOworICAgIExvYWRTdGVuY2lsSGVscGVyKHNv
dXJjZSwgJmRlc3RbM10pOworfQorCit2b2lkIExvYWREZXB0aDMyRihjb25zdCBmbG9hdCAqc291
cmNlLCB1aW50OF90ICpkZXN0KQoreworICAgIG1lbWNweShkZXN0LCBzb3VyY2UsIHNpemVvZihm
bG9hdCkpOworfQorCit2b2lkIExvYWREZXB0aDMyRlN0ZW5jaWw4KGNvbnN0IGZsb2F0ICpzb3Vy
Y2UsIHVpbnQ4X3QgKmRlc3QpCit7CisgICAgTG9hZERlcHRoMzJGKHNvdXJjZSwgJmRlc3RbMF0p
OworICAgIExvYWRTdGVuY2lsSGVscGVyKHNvdXJjZSwgJmRlc3RbNF0pOworfQorCit0ZW1wbGF0
ZSA8RGVwdGhTdGVuY2lsTG9hZGVyIGxvYWRlcj4KK3ZvaWQgQ29weURlcHRoU3RlbmNpbChjb25z
dCBnbDo6Qm94ICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpC
b3ggJmRlc3RBcmVhLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUg
JmNsaXBwZWREZXN0QXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50
cyAmc291cmNlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNl
Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRlc3RSb3dQaXRj
aCwKKyAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3QgcmVhZE9mZnNldCwKKyAgICAgICAg
ICAgICAgICAgICAgICBwdHJkaWZmX3Qgd3JpdGVPZmZzZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGNvcHlTaXplLAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzcmNQaXhl
bFN0cmlkZSwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVzdFBpeGVsU3RyaWRlLAor
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNvdXJjZURhdGEsCisgICAgICAg
ICAgICAgICAgICAgICAgdWludDhfdCAqZGVzdERhdGEpCit7CisgICAgLy8gTm8gc3RyZXRjaGlu
ZyBvciBzdWJyZWdpb25zIGFyZSBzdXBwb3J0ZWQsIG9ubHkgZnVsbCBibGl0cy4KKyAgICBBU1NF
UlQoc291cmNlQXJlYSA9PSBkZXN0QXJlYSk7CisgICAgQVNTRVJUKHNvdXJjZVNpemUud2lkdGgg
PT0gc291cmNlQXJlYS53aWR0aCAmJiBzb3VyY2VTaXplLmhlaWdodCA9PSBzb3VyY2VBcmVhLmhl
aWdodCAmJgorICAgICAgICAgICBzb3VyY2VTaXplLmRlcHRoID09IDEpOworICAgIEFTU0VSVChj
bGlwcGVkRGVzdEFyZWEud2lkdGggPT0gc291cmNlU2l6ZS53aWR0aCAmJgorICAgICAgICAgICBj
bGlwcGVkRGVzdEFyZWEuaGVpZ2h0ID09IHNvdXJjZVNpemUuaGVpZ2h0KTsKKyAgICBBU1NFUlQo
cmVhZE9mZnNldCA9PSAwICYmIHdyaXRlT2Zmc2V0ID09IDApOworICAgIEFTU0VSVChkZXN0QXJl
YS54ID09IDAgJiYgZGVzdEFyZWEueSA9PSAwKTsKKworICAgIGZvciAoaW50IHJvdyA9IDA7IHJv
dyA8IGRlc3RBcmVhLmhlaWdodDsgKytyb3cpCiAgICAgewotICAgICAgICBFUlIoIkZhaWxlZCB0
byBjcmVhdGUgc3RhZ2luZyB0ZXh0dXJlIGZvciBkZXB0aCBzdGVuY2lsIGJsaXQuIEhSRVNVTFQ6
IDB4JVguIiwgcmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGZvciAo
aW50IGNvbHVtbiA9IDA7IGNvbHVtbiA8IGRlc3RBcmVhLndpZHRoOyArK2NvbHVtbikKKyAgICAg
ICAgeworICAgICAgICAgICAgcHRyZGlmZl90IG9mZnNldCAgICAgICAgID0gcm93ICogc291cmNl
Um93UGl0Y2ggKyBjb2x1bW4gKiBzcmNQaXhlbFN0cmlkZTsKKyAgICAgICAgICAgIGNvbnN0IGZs
b2F0ICpzb3VyY2VQaXhlbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQgKj4oc291cmNl
RGF0YSArIG9mZnNldCk7CisKKyAgICAgICAgICAgIHVpbnQ4X3QgKmRlc3RQaXhlbCA9IGRlc3RE
YXRhICsgcm93ICogZGVzdFJvd1BpdGNoICsgY29sdW1uICogZGVzdFBpeGVsU3RyaWRlOworCisg
ICAgICAgICAgICBsb2FkZXIoc291cmNlUGl4ZWwsIGRlc3RQaXhlbCk7CisgICAgICAgIH0KICAg
ICB9Cit9CiAKLSAgICBjb250ZXh0LT5Db3B5U3VicmVzb3VyY2VSZWdpb24oc3RhZ2luZ1RleHR1
cmUsIDAsIDAsIDAsIDAsIHNvdXJjZSwgc3VicmVzb3VyY2UsIG51bGxwdHIpOwordm9pZCBEZXB0
aDMyRlN0ZW5jaWw4VG9EZXB0aDMyRihjb25zdCBmbG9hdCAqc291cmNlLCBmbG9hdCAqZGVzdCkK
K3sKKyAgICAqZGVzdCA9ICpzb3VyY2U7Cit9CiAKLSAgICByZXR1cm4gc3RhZ2luZ1RleHR1cmU7
Cit2b2lkIERlcHRoMjRTdGVuY2lsOFRvRGVwdGgzMkYoY29uc3QgdWludDMyX3QgKnNvdXJjZSwg
ZmxvYXQgKmRlc3QpCit7CisgICAgdWludDMyX3Qgbm9ybURlcHRoID0gc291cmNlWzBdICYgMHgw
MEZGRkZGRjsKKyAgICBmbG9hdCBmbG9hdERlcHRoICAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQ8
MjQ+KG5vcm1EZXB0aCk7CisgICAgKmRlc3QgICAgICAgICAgICAgID0gZmxvYXREZXB0aDsKIH0K
IAotaW5saW5lIHZvaWQgR2VuZXJhdGVWZXJ0ZXhDb29yZHMoY29uc3QgZ2w6OkJveCAmc291cmNl
QXJlYSwgY29uc3QgZ2w6OkV4dGVudHMgJnNvdXJjZVNpemUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZkZXN0QXJlYSwgY29uc3QgZ2w6OkV4dGVudHMg
JmRlc3RTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgKngxLCBm
bG9hdCAqeTEsIGZsb2F0ICp4MiwgZmxvYXQgKnkyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmxvYXQgKnUxLCBmbG9hdCAqdjEsIGZsb2F0ICp1MiwgZmxvYXQgKnYyKQordm9p
ZCBCbGl0RDI0UzhUb0QzMkYoY29uc3QgZ2w6OkJveCAmc291cmNlQXJlYSwKKyAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmRlc3RBcmVhLAorICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OlJlY3RhbmdsZSAmY2xpcHBlZERlc3RBcmVhLAorICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OkV4dGVudHMgJnNvdXJjZVNpemUsCisgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgc291cmNlUm93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgZGVzdFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHJlYWRP
ZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgd3JpdGVPZmZzZXQsCisgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgY29weVNpemUsCisgICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgc3JjUGl4ZWxTdHJpZGUsCisgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVzdFBp
eGVsU3RyaWRlLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqc291cmNlRGF0
YSwKKyAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmRlc3REYXRhKQogeworICAgIC8vIE5v
IHN0cmV0Y2hpbmcgb3Igc3VicmVnaW9ucyBhcmUgc3VwcG9ydGVkLCBvbmx5IGZ1bGwgYmxpdHMu
CisgICAgQVNTRVJUKHNvdXJjZUFyZWEgPT0gZGVzdEFyZWEpOworICAgIEFTU0VSVChzb3VyY2VT
aXplLndpZHRoID09IHNvdXJjZUFyZWEud2lkdGggJiYgc291cmNlU2l6ZS5oZWlnaHQgPT0gc291
cmNlQXJlYS5oZWlnaHQgJiYKKyAgICAgICAgICAgc291cmNlU2l6ZS5kZXB0aCA9PSAxKTsKKyAg
ICBBU1NFUlQoY2xpcHBlZERlc3RBcmVhLndpZHRoID09IHNvdXJjZVNpemUud2lkdGggJiYKKyAg
ICAgICAgICAgY2xpcHBlZERlc3RBcmVhLmhlaWdodCA9PSBzb3VyY2VTaXplLmhlaWdodCk7Cisg
ICAgQVNTRVJUKHJlYWRPZmZzZXQgPT0gMCAmJiB3cml0ZU9mZnNldCA9PSAwKTsKKyAgICBBU1NF
UlQoZGVzdEFyZWEueCA9PSAwICYmIGRlc3RBcmVhLnkgPT0gMCk7CisKKyAgICBmb3IgKGludCBy
b3cgPSAwOyByb3cgPCBkZXN0QXJlYS5oZWlnaHQ7ICsrcm93KQorICAgIHsKKyAgICAgICAgZm9y
IChpbnQgY29sdW1uID0gMDsgY29sdW1uIDwgZGVzdEFyZWEud2lkdGg7ICsrY29sdW1uKQorICAg
ICAgICB7CisgICAgICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0ICAgICAgICAgICAgPSByb3cgKiBz
b3VyY2VSb3dQaXRjaCArIGNvbHVtbiAqIHNyY1BpeGVsU3RyaWRlOworICAgICAgICAgICAgY29u
c3QgdWludDMyX3QgKnNvdXJjZVBpeGVsID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJf
dCAqPihzb3VyY2VEYXRhICsgb2Zmc2V0KTsKKworICAgICAgICAgICAgZmxvYXQgKmRlc3RQaXhl
bCA9CisgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxmbG9hdCAqPihkZXN0RGF0YSAr
IHJvdyAqIGRlc3RSb3dQaXRjaCArIGNvbHVtbiAqIGRlc3RQaXhlbFN0cmlkZSk7CisKKyAgICAg
ICAgICAgIERlcHRoMjRTdGVuY2lsOFRvRGVwdGgzMkYoc291cmNlUGl4ZWwsIGRlc3RQaXhlbCk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgQmxpdEQzMkZTOFRvRDMyRihjb25zdCBnbDo6
Qm94ICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmRl
c3RBcmVhLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmNsaXBw
ZWREZXN0QXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc291
cmNlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlUm93UGl0
Y2gsCisgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRlc3RSb3dQaXRjaCwKKyAg
ICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3QgcmVhZE9mZnNldCwKKyAgICAgICAgICAgICAg
ICAgICAgICBwdHJkaWZmX3Qgd3JpdGVPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGNvcHlTaXplLAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzcmNQaXhlbFN0cmlk
ZSwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVzdFBpeGVsU3RyaWRlLAorICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNvdXJjZURhdGEsCisgICAgICAgICAgICAg
ICAgICAgICAgdWludDhfdCAqZGVzdERhdGEpCit7CisgICAgLy8gTm8gc3RyZXRjaGluZyBvciBz
dWJyZWdpb25zIGFyZSBzdXBwb3J0ZWQsIG9ubHkgZnVsbCBibGl0cy4KKyAgICBBU1NFUlQoc291
cmNlQXJlYSA9PSBkZXN0QXJlYSk7CisgICAgQVNTRVJUKHNvdXJjZVNpemUud2lkdGggPT0gc291
cmNlQXJlYS53aWR0aCAmJiBzb3VyY2VTaXplLmhlaWdodCA9PSBzb3VyY2VBcmVhLmhlaWdodCAm
JgorICAgICAgICAgICBzb3VyY2VTaXplLmRlcHRoID09IDEpOworICAgIEFTU0VSVChjbGlwcGVk
RGVzdEFyZWEud2lkdGggPT0gc291cmNlU2l6ZS53aWR0aCAmJgorICAgICAgICAgICBjbGlwcGVk
RGVzdEFyZWEuaGVpZ2h0ID09IHNvdXJjZVNpemUuaGVpZ2h0KTsKKyAgICBBU1NFUlQocmVhZE9m
ZnNldCA9PSAwICYmIHdyaXRlT2Zmc2V0ID09IDApOworICAgIEFTU0VSVChkZXN0QXJlYS54ID09
IDAgJiYgZGVzdEFyZWEueSA9PSAwKTsKKworICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IGRl
c3RBcmVhLmhlaWdodDsgKytyb3cpCisgICAgeworICAgICAgICBmb3IgKGludCBjb2x1bW4gPSAw
OyBjb2x1bW4gPCBkZXN0QXJlYS53aWR0aDsgKytjb2x1bW4pCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHB0cmRpZmZfdCBvZmZzZXQgICAgICAgICA9IHJvdyAqIHNvdXJjZVJvd1BpdGNoICsgY29s
dW1uICogc3JjUGl4ZWxTdHJpZGU7CisgICAgICAgICAgICBjb25zdCBmbG9hdCAqc291cmNlUGl4
ZWwgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0ICo+KHNvdXJjZURhdGEgKyBvZmZzZXQp
OworICAgICAgICAgICAgZmxvYXQgKmRlc3RQaXhlbCA9CisgICAgICAgICAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDxmbG9hdCAqPihkZXN0RGF0YSArIHJvdyAqIGRlc3RSb3dQaXRjaCArIGNvbHVt
biAqIGRlc3RQaXhlbFN0cmlkZSk7CisKKyAgICAgICAgICAgIERlcHRoMzJGU3RlbmNpbDhUb0Rl
cHRoMzJGKHNvdXJjZVBpeGVsLCBkZXN0UGl4ZWwpOworICAgICAgICB9CisgICAgfQorfQorCitC
bGl0MTE6OkJsaXRDb252ZXJ0RnVuY3Rpb24gKkdldENvcHlEZXB0aFN0ZW5jaWxGdW5jdGlvbihH
TGVudW0gaW50ZXJuYWxGb3JtYXQpCit7CisgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAg
ICB7CisgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMTY6CisgICAgICAgICAgICByZXR1
cm4gJkNvcHlEZXB0aFN0ZW5jaWw8TG9hZERlcHRoMTY+OworICAgICAgICBjYXNlIEdMX0RFUFRI
X0NPTVBPTkVOVDI0OgorICAgICAgICAgICAgcmV0dXJuICZDb3B5RGVwdGhTdGVuY2lsPExvYWRE
ZXB0aDI0PjsKKyAgICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQzMkY6CisgICAgICAgICAg
ICByZXR1cm4gJkNvcHlEZXB0aFN0ZW5jaWw8TG9hZERlcHRoMzJGPjsKKyAgICAgICAgY2FzZSBH
TF9TVEVOQ0lMX0lOREVYODoKKyAgICAgICAgICAgIHJldHVybiAmQ29weURlcHRoU3RlbmNpbDxM
b2FkU3RlbmNpbDg+OworICAgICAgICBjYXNlIEdMX0RFUFRIMjRfU1RFTkNJTDg6CisgICAgICAg
ICAgICByZXR1cm4gJkNvcHlEZXB0aFN0ZW5jaWw8TG9hZERlcHRoMjRTdGVuY2lsOD47CisgICAg
ICAgIGNhc2UgR0xfREVQVEgzMkZfU1RFTkNJTDg6CisgICAgICAgICAgICByZXR1cm4gJkNvcHlE
ZXB0aFN0ZW5jaWw8TG9hZERlcHRoMzJGU3RlbmNpbDg+OworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KK30KKworaW5saW5lIHZvaWQgR2VuZXJhdGVWZXJ0ZXhDb29yZHMoY29uc3QgZ2w6OkJveCAm
c291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpF
eHRlbnRzICZzb3VyY2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OkJveCAmZGVzdEFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6RXh0ZW50cyAmZGVzdFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmbG9hdCAqeDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCAq
eTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCAqeDIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCAqeTIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbG9hdCAqdTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbG9hdCAqdjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCAqdTIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCAqdjIpCit7CiAgICAgKngx
ID0gKGRlc3RBcmVhLnggLyBmbG9hdChkZXN0U2l6ZS53aWR0aCkpICogMi4wZiAtIDEuMGY7CiAg
ICAgKnkxID0gKChkZXN0U2l6ZS5oZWlnaHQgLSBkZXN0QXJlYS55IC0gZGVzdEFyZWEuaGVpZ2h0
KSAvIGZsb2F0KGRlc3RTaXplLmhlaWdodCkpICogMi4wZiAtIDEuMGY7CiAgICAgKngyID0gKChk
ZXN0QXJlYS54ICsgZGVzdEFyZWEud2lkdGgpIC8gZmxvYXQoZGVzdFNpemUud2lkdGgpKSAqIDIu
MGYgLSAxLjBmOwpAQCAtMTI4LDE1ICs0MDcsMjEgQEAKICAgICAqdjIgPSAoc291cmNlQXJlYS55
ICsgc291cmNlQXJlYS5oZWlnaHQpIC8gZmxvYXQoc291cmNlU2l6ZS5oZWlnaHQpOwogfQogCi12
b2lkIFdyaXRlMkRWZXJ0aWNlcyhjb25zdCBnbDo6Qm94ICZzb3VyY2VBcmVhLCBjb25zdCBnbDo6
RXh0ZW50cyAmc291cmNlU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3gg
JmRlc3RBcmVhLCBjb25zdCBnbDo6RXh0ZW50cyAmZGVzdFNpemUsCi0gICAgICAgICAgICAgICAg
ICAgICB2b2lkICpvdXRWZXJ0aWNlcywgdW5zaWduZWQgaW50ICpvdXRTdHJpZGUsIHVuc2lnbmVk
IGludCAqb3V0VmVydGV4Q291bnQsCit2b2lkIFdyaXRlMkRWZXJ0aWNlcyhjb25zdCBnbDo6Qm94
ICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNv
dXJjZVNpemUsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZkZXN0QXJlYSwK
KyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZkZXN0U2l6ZSwKKyAgICAg
ICAgICAgICAgICAgICAgIHZvaWQgKm91dFZlcnRpY2VzLAorICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50ICpvdXRTdHJpZGUsCisgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgKm91dFZlcnRleENvdW50LAogICAgICAgICAgICAgICAgICAgICAgRDNEMTFfUFJJTUlUSVZF
X1RPUE9MT0dZICpvdXRUb3BvbG9neSkKIHsKICAgICBmbG9hdCB4MSwgeTEsIHgyLCB5MiwgdTEs
IHYxLCB1MiwgdjI7Ci0gICAgR2VuZXJhdGVWZXJ0ZXhDb29yZHMoc291cmNlQXJlYSwgc291cmNl
U2l6ZSwgZGVzdEFyZWEsIGRlc3RTaXplLCAmeDEsICZ5MSwgJngyLCAmeTIsICZ1MSwgJnYxLCAm
dTIsICZ2Mik7CisgICAgR2VuZXJhdGVWZXJ0ZXhDb29yZHMoc291cmNlQXJlYSwgc291cmNlU2l6
ZSwgZGVzdEFyZWEsIGRlc3RTaXplLCAmeDEsICZ5MSwgJngyLCAmeTIsICZ1MSwgJnYxLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICZ1MiwgJnYyKTsKIAotICAgIGQzZDExOjpQb3NpdGlvblRl
eENvb3JkVmVydGV4ICp2ZXJ0aWNlcyA9IHN0YXRpY19jYXN0PGQzZDExOjpQb3NpdGlvblRleENv
b3JkVmVydGV4Kj4ob3V0VmVydGljZXMpOworICAgIGQzZDExOjpQb3NpdGlvblRleENvb3JkVmVy
dGV4ICp2ZXJ0aWNlcyA9CisgICAgICAgIHN0YXRpY19jYXN0PGQzZDExOjpQb3NpdGlvblRleENv
b3JkVmVydGV4ICo+KG91dFZlcnRpY2VzKTsKIAogICAgIGQzZDExOjpTZXRQb3NpdGlvblRleENv
b3JkVmVydGV4KCZ2ZXJ0aWNlc1swXSwgeDEsIHkxLCB1MSwgdjIpOwogICAgIGQzZDExOjpTZXRQ
b3NpdGlvblRleENvb3JkVmVydGV4KCZ2ZXJ0aWNlc1sxXSwgeDEsIHkyLCB1MSwgdjEpOwpAQCAt
MTQzLDIyICs0MjgsMjggQEAKICAgICBkM2QxMTo6U2V0UG9zaXRpb25UZXhDb29yZFZlcnRleCgm
dmVydGljZXNbMl0sIHgyLCB5MSwgdTIsIHYyKTsKICAgICBkM2QxMTo6U2V0UG9zaXRpb25UZXhD
b29yZFZlcnRleCgmdmVydGljZXNbM10sIHgyLCB5MiwgdTIsIHYxKTsKIAotICAgICpvdXRTdHJp
ZGUgPSBzaXplb2YoZDNkMTE6OlBvc2l0aW9uVGV4Q29vcmRWZXJ0ZXgpOworICAgICpvdXRTdHJp
ZGUgICAgICA9IHNpemVvZihkM2QxMTo6UG9zaXRpb25UZXhDb29yZFZlcnRleCk7CiAgICAgKm91
dFZlcnRleENvdW50ID0gNDsKLSAgICAqb3V0VG9wb2xvZ3kgPSBEM0RfUFJJTUlUSVZFX1RPUE9M
T0dZX1RSSUFOR0xFU1RSSVA7CisgICAgKm91dFRvcG9sb2d5ICAgID0gRDNEX1BSSU1JVElWRV9U
T1BPTE9HWV9UUklBTkdMRVNUUklQOwogfQogCi12b2lkIFdyaXRlM0RWZXJ0aWNlcyhjb25zdCBn
bDo6Qm94ICZzb3VyY2VBcmVhLCBjb25zdCBnbDo6RXh0ZW50cyAmc291cmNlU2l6ZSwKLSAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmRlc3RBcmVhLCBjb25zdCBnbDo6RXh0ZW50
cyAmZGVzdFNpemUsCi0gICAgICAgICAgICAgICAgICAgICB2b2lkICpvdXRWZXJ0aWNlcywgdW5z
aWduZWQgaW50ICpvdXRTdHJpZGUsIHVuc2lnbmVkIGludCAqb3V0VmVydGV4Q291bnQsCit2b2lk
IFdyaXRlM0RWZXJ0aWNlcyhjb25zdCBnbDo6Qm94ICZzb3VyY2VBcmVhLAorICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNvdXJjZVNpemUsCisgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6Qm94ICZkZXN0QXJlYSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpFeHRlbnRzICZkZXN0U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgIHZvaWQgKm91dFZl
cnRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpvdXRTdHJpZGUsCisg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKm91dFZlcnRleENvdW50LAogICAgICAg
ICAgICAgICAgICAgICAgRDNEMTFfUFJJTUlUSVZFX1RPUE9MT0dZICpvdXRUb3BvbG9neSkKIHsK
ICAgICBBU1NFUlQoc291cmNlU2l6ZS5kZXB0aCA+IDAgJiYgZGVzdFNpemUuZGVwdGggPiAwKTsK
IAogICAgIGZsb2F0IHgxLCB5MSwgeDIsIHkyLCB1MSwgdjEsIHUyLCB2MjsKLSAgICBHZW5lcmF0
ZVZlcnRleENvb3Jkcyhzb3VyY2VBcmVhLCBzb3VyY2VTaXplLCBkZXN0QXJlYSwgZGVzdFNpemUs
ICZ4MSwgJnkxLCAmeDIsICZ5MiwgJnUxLCAmdjEsICZ1MiwgJnYyKTsKKyAgICBHZW5lcmF0ZVZl
cnRleENvb3Jkcyhzb3VyY2VBcmVhLCBzb3VyY2VTaXplLCBkZXN0QXJlYSwgZGVzdFNpemUsICZ4
MSwgJnkxLCAmeDIsICZ5MiwgJnUxLCAmdjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgJnUy
LCAmdjIpOwogCi0gICAgZDNkMTE6OlBvc2l0aW9uTGF5ZXJUZXhDb29yZDNEVmVydGV4ICp2ZXJ0
aWNlcyA9IHN0YXRpY19jYXN0PGQzZDExOjpQb3NpdGlvbkxheWVyVGV4Q29vcmQzRFZlcnRleCo+
KG91dFZlcnRpY2VzKTsKKyAgICBkM2QxMTo6UG9zaXRpb25MYXllclRleENvb3JkM0RWZXJ0ZXgg
KnZlcnRpY2VzID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8ZDNkMTE6OlBvc2l0aW9uTGF5ZXJUZXhD
b29yZDNEVmVydGV4ICo+KG91dFZlcnRpY2VzKTsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
ZGVzdFNpemUuZGVwdGg7IGkrKykKICAgICB7CkBAIC0xNzMsMjQgKzQ2NCwzOCBAQAogICAgICAg
ICBkM2QxMTo6U2V0UG9zaXRpb25MYXllclRleENvb3JkM0RWZXJ0ZXgoJnZlcnRpY2VzW2kgKiA2
ICsgNV0sIHgyLCB5MSwgaSwgdTIsIHYyLCByZWFkRGVwdGgpOwogICAgIH0KIAotICAgICpvdXRT
dHJpZGUgPSBzaXplb2YoZDNkMTE6OlBvc2l0aW9uTGF5ZXJUZXhDb29yZDNEVmVydGV4KTsKKyAg
ICAqb3V0U3RyaWRlICAgICAgPSBzaXplb2YoZDNkMTE6OlBvc2l0aW9uTGF5ZXJUZXhDb29yZDNE
VmVydGV4KTsKICAgICAqb3V0VmVydGV4Q291bnQgPSBkZXN0U2l6ZS5kZXB0aCAqIDY7Ci0gICAg
Km91dFRvcG9sb2d5ID0gRDNEX1BSSU1JVElWRV9UT1BPTE9HWV9UUklBTkdMRUxJU1Q7CisgICAg
Km91dFRvcG9sb2d5ICAgID0gRDNEX1BSSU1JVElWRV9UT1BPTE9HWV9UUklBTkdMRUxJU1Q7CiB9
CiAKLWlubGluZSB1bnNpZ25lZCBpbnQgR2V0U3dpenpsZUluZGV4KEdMZW51bSBzd2l6emxlKQor
dW5zaWduZWQgaW50IEdldFN3aXp6bGVJbmRleChHTGVudW0gc3dpenpsZSkKIHsKICAgICB1bnNp
Z25lZCBpbnQgY29sb3JJbmRleCA9IDA7CiAKICAgICBzd2l0Y2ggKHN3aXp6bGUpCiAgICAgewot
ICAgICAgY2FzZSBHTF9SRUQ6ICAgY29sb3JJbmRleCA9IDA7IGJyZWFrOwotICAgICAgY2FzZSBH
TF9HUkVFTjogY29sb3JJbmRleCA9IDE7IGJyZWFrOwotICAgICAgY2FzZSBHTF9CTFVFOiAgY29s
b3JJbmRleCA9IDI7IGJyZWFrOwotICAgICAgY2FzZSBHTF9BTFBIQTogY29sb3JJbmRleCA9IDM7
IGJyZWFrOwotICAgICAgY2FzZSBHTF9aRVJPOiAgY29sb3JJbmRleCA9IDQ7IGJyZWFrOwotICAg
ICAgY2FzZSBHTF9PTkU6ICAgY29sb3JJbmRleCA9IDU7IGJyZWFrOwotICAgICAgZGVmYXVsdDog
ICAgICAgVU5SRUFDSEFCTEUoKTsgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1JFRDoKKyAgICAg
ICAgICAgIGNvbG9ySW5kZXggPSAwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
R0xfR1JFRU46CisgICAgICAgICAgICBjb2xvckluZGV4ID0gMTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEdMX0JMVUU6CisgICAgICAgICAgICBjb2xvckluZGV4ID0gMjsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX0FMUEhBOgorICAgICAgICAgICAgY29s
b3JJbmRleCA9IDM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9aRVJPOgor
ICAgICAgICAgICAgY29sb3JJbmRleCA9IDQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBHTF9PTkU6CisgICAgICAgICAgICBjb2xvckluZGV4ID0gNTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIHJldHVybiBjb2xvckluZGV4OwpAQCAtMjEzLDIx
ICs1MTgsMzMgQEAKICAgICByZXR1cm4gZGVzYzsKIH0KIAotRDNEMTFfSU5QVVRfRUxFTUVOVF9E
RVNDIHF1YWQyRExheW91dFtdID0KLXsKLSAgICB7ICJQT1NJVElPTiIsIDAsIERYR0lfRk9STUFU
X1IzMkczMl9GTE9BVCwgMCwgMCwgRDNEMTFfSU5QVVRfUEVSX1ZFUlRFWF9EQVRBLCAwIH0sCi0g
ICAgeyAiVEVYQ09PUkQiLCAwLCBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQsIDAsIDgsIEQzRDEx
X0lOUFVUX1BFUl9WRVJURVhfREFUQSwgMCB9LAorRDNEMTFfSU5QVVRfRUxFTUVOVF9ERVNDIHF1
YWQyRExheW91dFtdID0geworICAgIHsiUE9TSVRJT04iLCAwLCBEWEdJX0ZPUk1BVF9SMzJHMzJf
RkxPQVQsIDAsIDAsIEQzRDExX0lOUFVUX1BFUl9WRVJURVhfREFUQSwgMH0sCisgICAgeyJURVhD
T09SRCIsIDAsIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwgMCwgOCwgRDNEMTFfSU5QVVRfUEVS
X1ZFUlRFWF9EQVRBLCAwfSwKIH07CiAKLUQzRDExX0lOUFVUX0VMRU1FTlRfREVTQyBxdWFkM0RM
YXlvdXRbXSA9Ci17Ci0gICAgeyAiUE9TSVRJT04iLCAwLCBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxP
QVQsIDAsIDAsIEQzRDExX0lOUFVUX1BFUl9WRVJURVhfREFUQSwgMCB9LAotICAgIHsgIkxBWUVS
IiwgMCwgRFhHSV9GT1JNQVRfUjMyX1VJTlQsIDAsIDgsIEQzRDExX0lOUFVUX1BFUl9WRVJURVhf
REFUQSwgMCB9LAotICAgIHsgIlRFWENPT1JEIiwgMCwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZM
T0FULCAwLCAxMiwgRDNEMTFfSU5QVVRfUEVSX1ZFUlRFWF9EQVRBLCAwIH0sCitEM0QxMV9JTlBV
VF9FTEVNRU5UX0RFU0MgcXVhZDNETGF5b3V0W10gPSB7CisgICAgeyJQT1NJVElPTiIsIDAsIERY
R0lfRk9STUFUX1IzMkczMl9GTE9BVCwgMCwgMCwgRDNEMTFfSU5QVVRfUEVSX1ZFUlRFWF9EQVRB
LCAwfSwKKyAgICB7IkxBWUVSIiwgMCwgRFhHSV9GT1JNQVRfUjMyX1VJTlQsIDAsIDgsIEQzRDEx
X0lOUFVUX1BFUl9WRVJURVhfREFUQSwgMH0sCisgICAgeyJURVhDT09SRCIsIDAsIERYR0lfRk9S
TUFUX1IzMkczMkIzMl9GTE9BVCwgMCwgMTIsIEQzRDExX0lOUFVUX1BFUl9WRVJURVhfREFUQSwg
MH0sCiB9OwogCi19IC8vIG5hbWVzcGFjZQorRFhHSV9GT1JNQVQgR2V0U3RlbmNpbFNSVkZvcm1h
dChjb25zdCBkM2QxMTo6Rm9ybWF0ICZmb3JtYXRTZXQpCit7CisgICAgc3dpdGNoIChmb3JtYXRT
ZXQudGV4Rm9ybWF0KQorICAgIHsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHOFgyNF9U
WVBFTEVTUzoKKyAgICAgICAgICAgIHJldHVybiBEWEdJX0ZPUk1BVF9YMzJfVFlQRUxFU1NfRzhY
MjRfVUlOVDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMjRHOF9UWVBFTEVTUzoKKyAgICAg
ICAgICAgIHJldHVybiBEWEdJX0ZPUk1BVF9YMjRfVFlQRUxFU1NfRzhfVUlOVDsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4g
RFhHSV9GT1JNQVRfVU5LTk9XTjsKKyAgICB9Cit9CiAKK30gIC8vIG5hbWVzcGFjZQorCiBCbGl0
MTE6OkJsaXQxMShSZW5kZXJlcjExICpyZW5kZXJlcikKICAgICA6IG1SZW5kZXJlcihyZW5kZXJl
ciksCiAgICAgICBtUmVzb3VyY2VzSW5pdGlhbGl6ZWQoZmFsc2UpLApAQCAtMjU0LDcgKzU3MSwx
OSBAQAogICAgICAgbVF1YWQzRFZTKGdfVlNfUGFzc3Rocm91Z2gzRCwgQXJyYXlTaXplKGdfVlNf
UGFzc3Rocm91Z2gzRCksICJCbGl0MTEgM0QgdmVydGV4IHNoYWRlciIpLAogICAgICAgbVF1YWQz
REdTKGdfR1NfUGFzc3Rocm91Z2gzRCwgQXJyYXlTaXplKGdfR1NfUGFzc3Rocm91Z2gzRCksICJC
bGl0MTEgM0QgZ2VvbWV0cnkgc2hhZGVyIiksCiAgICAgICBtQWxwaGFNYXNrQmxlbmRTdGF0ZShH
ZXRBbHBoYU1hc2tCbGVuZFN0YXRlRGVzYygpLCAiQmxpdDExIEFscGhhIE1hc2sgQmxlbmQiKSwK
LSAgICAgIG1Td2l6emxlQ0IobnVsbHB0cikKKyAgICAgIG1Td2l6emxlQ0IobnVsbHB0ciksCisg
ICAgICBtUmVzb2x2ZURlcHRoU3RlbmNpbFZTKGdfVlNfUmVzb2x2ZURlcHRoU3RlbmNpbCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlTaXplKGdfVlNfUmVzb2x2ZURlcHRoU3Rl
bmNpbCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCbGl0MTE6Om1SZXNvbHZlRGVw
dGhTdGVuY2lsVlMiKSwKKyAgICAgIG1SZXNvbHZlRGVwdGhQUyhnX1BTX1Jlc29sdmVEZXB0aCwg
QXJyYXlTaXplKGdfUFNfUmVzb2x2ZURlcHRoKSwgIkJsaXQxMTo6bVJlc29sdmVEZXB0aFBTIiks
CisgICAgICBtUmVzb2x2ZURlcHRoU3RlbmNpbFBTKGdfUFNfUmVzb2x2ZURlcHRoU3RlbmNpbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlTaXplKGdfUFNfUmVzb2x2ZURlcHRo
U3RlbmNpbCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCbGl0MTE6Om1SZXNvbHZl
RGVwdGhTdGVuY2lsUFMiKSwKKyAgICAgIG1SZXNvbHZlU3RlbmNpbFBTKGdfUFNfUmVzb2x2ZVN0
ZW5jaWwsCisgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVNpemUoZ19QU19SZXNvbHZlU3Rl
bmNpbCksCisgICAgICAgICAgICAgICAgICAgICAgICAiQmxpdDExOjptUmVzb2x2ZVN0ZW5jaWxQ
UyIpLAorICAgICAgbVN0ZW5jaWxTUlYobnVsbHB0ciksCisgICAgICBtUmVzb2x2ZWREZXB0aFN0
ZW5jaWxSVFZpZXcobnVsbHB0cikKIHsKIH0KIApAQCAtMjcxLDYgKzYwMCw3IEBACiAgICAgbVF1
YWQzREdTLnJlbGVhc2UoKTsKIAogICAgIGNsZWFyU2hhZGVyTWFwKCk7CisgICAgcmVsZWFzZVJl
c29sdmVEZXB0aFN0ZW5jaWxSZXNvdXJjZXMoKTsKIH0KIAogZ2w6OkVycm9yIEJsaXQxMTo6aW5p
dFJlc291cmNlcygpCkBAIC0yODksMTEgKzYxOSwxMSBAQAogICAgIHZiRGVzYy5CeXRlV2lkdGgg
PQogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHN0ZDo6bWF4KHNpemVvZihkM2Qx
MTo6UG9zaXRpb25MYXllclRleENvb3JkM0RWZXJ0ZXgpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihkM2QxMTo6UG9zaXRpb25UZXhDb29yZFZlcnRl
eCkpICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2ICogbVJlbmRlcmVyLT5n
ZXRSZW5kZXJlckNhcHMoKS5tYXgzRFRleHR1cmVTaXplKTsKLSAgICB2YkRlc2MuVXNhZ2UgPSBE
M0QxMV9VU0FHRV9EWU5BTUlDOwotICAgIHZiRGVzYy5CaW5kRmxhZ3MgPSBEM0QxMV9CSU5EX1ZF
UlRFWF9CVUZGRVI7Ci0gICAgdmJEZXNjLkNQVUFjY2Vzc0ZsYWdzID0gRDNEMTFfQ1BVX0FDQ0VT
U19XUklURTsKLSAgICB2YkRlc2MuTWlzY0ZsYWdzID0gMDsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA2ICogbVJlbmRlcmVyLT5nZXROYXRpdmVDYXBzKCkubWF4M0RUZXh0dXJl
U2l6ZSk7CisgICAgdmJEZXNjLlVzYWdlICAgICAgICAgICAgICAgPSBEM0QxMV9VU0FHRV9EWU5B
TUlDOworICAgIHZiRGVzYy5CaW5kRmxhZ3MgICAgICAgICAgID0gRDNEMTFfQklORF9WRVJURVhf
QlVGRkVSOworICAgIHZiRGVzYy5DUFVBY2Nlc3NGbGFncyAgICAgID0gRDNEMTFfQ1BVX0FDQ0VT
U19XUklURTsKKyAgICB2YkRlc2MuTWlzY0ZsYWdzICAgICAgICAgICA9IDA7CiAgICAgdmJEZXNj
LlN0cnVjdHVyZUJ5dGVTdHJpZGUgPSAwOwogCiAgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVC
dWZmZXIoJnZiRGVzYywgbnVsbHB0ciwgJm1WZXJ0ZXhCdWZmZXIpOwpAQCAtMzA3LDE5ICs2Mzcs
MTkgQEAKICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1WZXJ0ZXhCdWZmZXIsICJCbGl0MTEgdmVy
dGV4IGJ1ZmZlciIpOwogCiAgICAgRDNEMTFfU0FNUExFUl9ERVNDIHBvaW50U2FtcGxlckRlc2M7
Ci0gICAgcG9pbnRTYW1wbGVyRGVzYy5GaWx0ZXIgPSBEM0QxMV9GSUxURVJfTUlOX01BR19QT0lO
VF9NSVBfTElORUFSOwotICAgIHBvaW50U2FtcGxlckRlc2MuQWRkcmVzc1UgPSBEM0QxMV9URVhU
VVJFX0FERFJFU1NfQ0xBTVA7Ci0gICAgcG9pbnRTYW1wbGVyRGVzYy5BZGRyZXNzViA9IEQzRDEx
X1RFWFRVUkVfQUREUkVTU19DTEFNUDsKLSAgICBwb2ludFNhbXBsZXJEZXNjLkFkZHJlc3NXID0g
RDNEMTFfVEVYVFVSRV9BRERSRVNTX0NMQU1QOwotICAgIHBvaW50U2FtcGxlckRlc2MuTWlwTE9E
QmlhcyA9IDAuMGY7Ci0gICAgcG9pbnRTYW1wbGVyRGVzYy5NYXhBbmlzb3Ryb3B5ID0gMDsKKyAg
ICBwb2ludFNhbXBsZXJEZXNjLkZpbHRlciAgICAgICAgID0gRDNEMTFfRklMVEVSX01JTl9NQUdf
UE9JTlRfTUlQX0xJTkVBUjsKKyAgICBwb2ludFNhbXBsZXJEZXNjLkFkZHJlc3NVICAgICAgID0g
RDNEMTFfVEVYVFVSRV9BRERSRVNTX0NMQU1QOworICAgIHBvaW50U2FtcGxlckRlc2MuQWRkcmVz
c1YgICAgICAgPSBEM0QxMV9URVhUVVJFX0FERFJFU1NfQ0xBTVA7CisgICAgcG9pbnRTYW1wbGVy
RGVzYy5BZGRyZXNzVyAgICAgICA9IEQzRDExX1RFWFRVUkVfQUREUkVTU19DTEFNUDsKKyAgICBw
b2ludFNhbXBsZXJEZXNjLk1pcExPREJpYXMgICAgID0gMC4wZjsKKyAgICBwb2ludFNhbXBsZXJE
ZXNjLk1heEFuaXNvdHJvcHkgID0gMDsKICAgICBwb2ludFNhbXBsZXJEZXNjLkNvbXBhcmlzb25G
dW5jID0gRDNEMTFfQ09NUEFSSVNPTl9ORVZFUjsKICAgICBwb2ludFNhbXBsZXJEZXNjLkJvcmRl
ckNvbG9yWzBdID0gMC4wZjsKICAgICBwb2ludFNhbXBsZXJEZXNjLkJvcmRlckNvbG9yWzFdID0g
MC4wZjsKICAgICBwb2ludFNhbXBsZXJEZXNjLkJvcmRlckNvbG9yWzJdID0gMC4wZjsKICAgICBw
b2ludFNhbXBsZXJEZXNjLkJvcmRlckNvbG9yWzNdID0gMC4wZjsKLSAgICBwb2ludFNhbXBsZXJE
ZXNjLk1pbkxPRCA9IDAuMGY7Ci0gICAgcG9pbnRTYW1wbGVyRGVzYy5NYXhMT0QgPSBGTFRfTUFY
OworICAgIHBvaW50U2FtcGxlckRlc2MuTWluTE9EICAgICAgICAgPSAwLjBmOworICAgIHBvaW50
U2FtcGxlckRlc2MuTWF4TE9EICAgICAgICAgPSBGTFRfTUFYOwogCiAgICAgcmVzdWx0ID0gZGV2
aWNlLT5DcmVhdGVTYW1wbGVyU3RhdGUoJnBvaW50U2FtcGxlckRlc2MsICZtUG9pbnRTYW1wbGVy
KTsKICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwpAQCAtMzMyLDE5ICs2NjIsMTkgQEAK
ICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1Qb2ludFNhbXBsZXIsICJCbGl0MTEgcG9pbnQgc2Ft
cGxlciIpOwogCiAgICAgRDNEMTFfU0FNUExFUl9ERVNDIGxpbmVhclNhbXBsZXJEZXNjOwotICAg
IGxpbmVhclNhbXBsZXJEZXNjLkZpbHRlciA9IEQzRDExX0ZJTFRFUl9NSU5fTUFHX01JUF9MSU5F
QVI7Ci0gICAgbGluZWFyU2FtcGxlckRlc2MuQWRkcmVzc1UgPSBEM0QxMV9URVhUVVJFX0FERFJF
U1NfQ0xBTVA7Ci0gICAgbGluZWFyU2FtcGxlckRlc2MuQWRkcmVzc1YgPSBEM0QxMV9URVhUVVJF
X0FERFJFU1NfQ0xBTVA7Ci0gICAgbGluZWFyU2FtcGxlckRlc2MuQWRkcmVzc1cgPSBEM0QxMV9U
RVhUVVJFX0FERFJFU1NfQ0xBTVA7Ci0gICAgbGluZWFyU2FtcGxlckRlc2MuTWlwTE9EQmlhcyA9
IDAuMGY7Ci0gICAgbGluZWFyU2FtcGxlckRlc2MuTWF4QW5pc290cm9weSA9IDA7CisgICAgbGlu
ZWFyU2FtcGxlckRlc2MuRmlsdGVyICAgICAgICAgPSBEM0QxMV9GSUxURVJfTUlOX01BR19NSVBf
TElORUFSOworICAgIGxpbmVhclNhbXBsZXJEZXNjLkFkZHJlc3NVICAgICAgID0gRDNEMTFfVEVY
VFVSRV9BRERSRVNTX0NMQU1QOworICAgIGxpbmVhclNhbXBsZXJEZXNjLkFkZHJlc3NWICAgICAg
ID0gRDNEMTFfVEVYVFVSRV9BRERSRVNTX0NMQU1QOworICAgIGxpbmVhclNhbXBsZXJEZXNjLkFk
ZHJlc3NXICAgICAgID0gRDNEMTFfVEVYVFVSRV9BRERSRVNTX0NMQU1QOworICAgIGxpbmVhclNh
bXBsZXJEZXNjLk1pcExPREJpYXMgICAgID0gMC4wZjsKKyAgICBsaW5lYXJTYW1wbGVyRGVzYy5N
YXhBbmlzb3Ryb3B5ICA9IDA7CiAgICAgbGluZWFyU2FtcGxlckRlc2MuQ29tcGFyaXNvbkZ1bmMg
PSBEM0QxMV9DT01QQVJJU09OX05FVkVSOwogICAgIGxpbmVhclNhbXBsZXJEZXNjLkJvcmRlckNv
bG9yWzBdID0gMC4wZjsKICAgICBsaW5lYXJTYW1wbGVyRGVzYy5Cb3JkZXJDb2xvclsxXSA9IDAu
MGY7CiAgICAgbGluZWFyU2FtcGxlckRlc2MuQm9yZGVyQ29sb3JbMl0gPSAwLjBmOwogICAgIGxp
bmVhclNhbXBsZXJEZXNjLkJvcmRlckNvbG9yWzNdID0gMC4wZjsKLSAgICBsaW5lYXJTYW1wbGVy
RGVzYy5NaW5MT0QgPSAwLjBmOwotICAgIGxpbmVhclNhbXBsZXJEZXNjLk1heExPRCA9IEZMVF9N
QVg7CisgICAgbGluZWFyU2FtcGxlckRlc2MuTWluTE9EICAgICAgICAgPSAwLjBmOworICAgIGxp
bmVhclNhbXBsZXJEZXNjLk1heExPRCAgICAgICAgID0gRkxUX01BWDsKIAogICAgIHJlc3VsdCA9
IGRldmljZS0+Q3JlYXRlU2FtcGxlclN0YXRlKCZsaW5lYXJTYW1wbGVyRGVzYywgJm1MaW5lYXJT
YW1wbGVyKTsKICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwpAQCAtMzU4LDE0ICs2ODgs
MTQgQEAKIAogICAgIC8vIFVzZSBhIHJhc3Rlcml6ZXIgc3RhdGUgdGhhdCB3aWxsIG5vdCBjdWxs
IHNvIHRoYXQgaW52ZXJ0ZWQgcXVhZHMgd2lsbCBub3QgYmUgY3VsbGVkCiAgICAgRDNEMTFfUkFT
VEVSSVpFUl9ERVNDIHJhc3RlckRlc2M7Ci0gICAgcmFzdGVyRGVzYy5GaWxsTW9kZSA9IEQzRDEx
X0ZJTExfU09MSUQ7Ci0gICAgcmFzdGVyRGVzYy5DdWxsTW9kZSA9IEQzRDExX0NVTExfTk9ORTsK
KyAgICByYXN0ZXJEZXNjLkZpbGxNb2RlICAgICAgICAgICAgICA9IEQzRDExX0ZJTExfU09MSUQ7
CisgICAgcmFzdGVyRGVzYy5DdWxsTW9kZSAgICAgICAgICAgICAgPSBEM0QxMV9DVUxMX05PTkU7
CiAgICAgcmFzdGVyRGVzYy5Gcm9udENvdW50ZXJDbG9ja3dpc2UgPSBGQUxTRTsKLSAgICByYXN0
ZXJEZXNjLkRlcHRoQmlhcyA9IDA7Ci0gICAgcmFzdGVyRGVzYy5TbG9wZVNjYWxlZERlcHRoQmlh
cyA9IDAuMGY7Ci0gICAgcmFzdGVyRGVzYy5EZXB0aEJpYXNDbGFtcCA9IDAuMGY7Ci0gICAgcmFz
dGVyRGVzYy5EZXB0aENsaXBFbmFibGUgPSBUUlVFOwotICAgIHJhc3RlckRlc2MuTXVsdGlzYW1w
bGVFbmFibGUgPSBGQUxTRTsKKyAgICByYXN0ZXJEZXNjLkRlcHRoQmlhcyAgICAgICAgICAgICA9
IDA7CisgICAgcmFzdGVyRGVzYy5TbG9wZVNjYWxlZERlcHRoQmlhcyAgPSAwLjBmOworICAgIHJh
c3RlckRlc2MuRGVwdGhCaWFzQ2xhbXAgICAgICAgID0gMC4wZjsKKyAgICByYXN0ZXJEZXNjLkRl
cHRoQ2xpcEVuYWJsZSAgICAgICA9IFRSVUU7CisgICAgcmFzdGVyRGVzYy5NdWx0aXNhbXBsZUVu
YWJsZSAgICAgPSBGQUxTRTsKICAgICByYXN0ZXJEZXNjLkFudGlhbGlhc2VkTGluZUVuYWJsZSA9
IEZBTFNFOwogCiAgICAgcmFzdGVyRGVzYy5TY2lzc29yRW5hYmxlID0gVFJVRTsKQEAgLTM5Mywy
MCArNzIzLDIwIEBACiAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtU2Npc3NvckRpc2FibGVkUmFz
dGVyaXplclN0YXRlLCAiQmxpdDExIG5vIHNjaXNzb3JpbmcgcmFzdGVyaXplciBzdGF0ZSIpOwog
CiAgICAgRDNEMTFfREVQVEhfU1RFTkNJTF9ERVNDIGRlcHRoU3RlbmNpbERlc2M7Ci0gICAgZGVw
dGhTdGVuY2lsRGVzYy5EZXB0aEVuYWJsZSA9IHRydWU7Ci0gICAgZGVwdGhTdGVuY2lsRGVzYy5E
ZXB0aFdyaXRlTWFzayA9IEQzRDExX0RFUFRIX1dSSVRFX01BU0tfQUxMOwotICAgIGRlcHRoU3Rl
bmNpbERlc2MuRGVwdGhGdW5jID0gRDNEMTFfQ09NUEFSSVNPTl9BTFdBWVM7Ci0gICAgZGVwdGhT
dGVuY2lsRGVzYy5TdGVuY2lsRW5hYmxlID0gRkFMU0U7Ci0gICAgZGVwdGhTdGVuY2lsRGVzYy5T
dGVuY2lsUmVhZE1hc2sgPSBEM0QxMV9ERUZBVUxUX1NURU5DSUxfUkVBRF9NQVNLOwotICAgIGRl
cHRoU3RlbmNpbERlc2MuU3RlbmNpbFdyaXRlTWFzayA9IEQzRDExX0RFRkFVTFRfU1RFTkNJTF9X
UklURV9NQVNLOwotICAgIGRlcHRoU3RlbmNpbERlc2MuRnJvbnRGYWNlLlN0ZW5jaWxGYWlsT3Ag
PSBEM0QxMV9TVEVOQ0lMX09QX0tFRVA7CisgICAgZGVwdGhTdGVuY2lsRGVzYy5EZXB0aEVuYWJs
ZSAgICAgICAgICAgICAgICAgID0gdHJ1ZTsKKyAgICBkZXB0aFN0ZW5jaWxEZXNjLkRlcHRoV3Jp
dGVNYXNrICAgICAgICAgICAgICAgPSBEM0QxMV9ERVBUSF9XUklURV9NQVNLX0FMTDsKKyAgICBk
ZXB0aFN0ZW5jaWxEZXNjLkRlcHRoRnVuYyAgICAgICAgICAgICAgICAgICAgPSBEM0QxMV9DT01Q
QVJJU09OX0FMV0FZUzsKKyAgICBkZXB0aFN0ZW5jaWxEZXNjLlN0ZW5jaWxFbmFibGUgICAgICAg
ICAgICAgICAgPSBGQUxTRTsKKyAgICBkZXB0aFN0ZW5jaWxEZXNjLlN0ZW5jaWxSZWFkTWFzayAg
ICAgICAgICAgICAgPSBEM0QxMV9ERUZBVUxUX1NURU5DSUxfUkVBRF9NQVNLOworICAgIGRlcHRo
U3RlbmNpbERlc2MuU3RlbmNpbFdyaXRlTWFzayAgICAgICAgICAgICA9IEQzRDExX0RFRkFVTFRf
U1RFTkNJTF9XUklURV9NQVNLOworICAgIGRlcHRoU3RlbmNpbERlc2MuRnJvbnRGYWNlLlN0ZW5j
aWxGYWlsT3AgICAgICA9IEQzRDExX1NURU5DSUxfT1BfS0VFUDsKICAgICBkZXB0aFN0ZW5jaWxE
ZXNjLkZyb250RmFjZS5TdGVuY2lsRGVwdGhGYWlsT3AgPSBEM0QxMV9TVEVOQ0lMX09QX0tFRVA7
Ci0gICAgZGVwdGhTdGVuY2lsRGVzYy5Gcm9udEZhY2UuU3RlbmNpbFBhc3NPcCA9IEQzRDExX1NU
RU5DSUxfT1BfS0VFUDsKLSAgICBkZXB0aFN0ZW5jaWxEZXNjLkZyb250RmFjZS5TdGVuY2lsRnVu
YyA9IEQzRDExX0NPTVBBUklTT05fQUxXQVlTOwotICAgIGRlcHRoU3RlbmNpbERlc2MuQmFja0Zh
Y2UuU3RlbmNpbEZhaWxPcCA9IEQzRDExX1NURU5DSUxfT1BfS0VFUDsKLSAgICBkZXB0aFN0ZW5j
aWxEZXNjLkJhY2tGYWNlLlN0ZW5jaWxEZXB0aEZhaWxPcCA9IEQzRDExX1NURU5DSUxfT1BfS0VF
UDsKLSAgICBkZXB0aFN0ZW5jaWxEZXNjLkJhY2tGYWNlLlN0ZW5jaWxQYXNzT3AgPSBEM0QxMV9T
VEVOQ0lMX09QX0tFRVA7Ci0gICAgZGVwdGhTdGVuY2lsRGVzYy5CYWNrRmFjZS5TdGVuY2lsRnVu
YyA9IEQzRDExX0NPTVBBUklTT05fQUxXQVlTOworICAgIGRlcHRoU3RlbmNpbERlc2MuRnJvbnRG
YWNlLlN0ZW5jaWxQYXNzT3AgICAgICA9IEQzRDExX1NURU5DSUxfT1BfS0VFUDsKKyAgICBkZXB0
aFN0ZW5jaWxEZXNjLkZyb250RmFjZS5TdGVuY2lsRnVuYyAgICAgICAgPSBEM0QxMV9DT01QQVJJ
U09OX0FMV0FZUzsKKyAgICBkZXB0aFN0ZW5jaWxEZXNjLkJhY2tGYWNlLlN0ZW5jaWxGYWlsT3Ag
ICAgICAgPSBEM0QxMV9TVEVOQ0lMX09QX0tFRVA7CisgICAgZGVwdGhTdGVuY2lsRGVzYy5CYWNr
RmFjZS5TdGVuY2lsRGVwdGhGYWlsT3AgID0gRDNEMTFfU1RFTkNJTF9PUF9LRUVQOworICAgIGRl
cHRoU3RlbmNpbERlc2MuQmFja0ZhY2UuU3RlbmNpbFBhc3NPcCAgICAgICA9IEQzRDExX1NURU5D
SUxfT1BfS0VFUDsKKyAgICBkZXB0aFN0ZW5jaWxEZXNjLkJhY2tGYWNlLlN0ZW5jaWxGdW5jICAg
ICAgICAgPSBEM0QxMV9DT01QQVJJU09OX0FMV0FZUzsKIAogICAgIHJlc3VsdCA9IGRldmljZS0+
Q3JlYXRlRGVwdGhTdGVuY2lsU3RhdGUoJmRlcHRoU3RlbmNpbERlc2MsICZtRGVwdGhTdGVuY2ls
U3RhdGUpOwogICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CkBAIC00MTksMTEgKzc0OSwx
MSBAQAogICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobURlcHRoU3RlbmNpbFN0YXRlLCAiQmxpdDEx
IGRlcHRoIHN0ZW5jaWwgc3RhdGUiKTsKIAogICAgIEQzRDExX0JVRkZFUl9ERVNDIHN3aXp6bGVC
dWZmZXJEZXNjOwotICAgIHN3aXp6bGVCdWZmZXJEZXNjLkJ5dGVXaWR0aCA9IHNpemVvZih1bnNp
Z25lZCBpbnQpICogNDsKLSAgICBzd2l6emxlQnVmZmVyRGVzYy5Vc2FnZSA9IEQzRDExX1VTQUdF
X0RZTkFNSUM7Ci0gICAgc3dpenpsZUJ1ZmZlckRlc2MuQmluZEZsYWdzID0gRDNEMTFfQklORF9D
T05TVEFOVF9CVUZGRVI7Ci0gICAgc3dpenpsZUJ1ZmZlckRlc2MuQ1BVQWNjZXNzRmxhZ3MgPSBE
M0QxMV9DUFVfQUNDRVNTX1dSSVRFOwotICAgIHN3aXp6bGVCdWZmZXJEZXNjLk1pc2NGbGFncyA9
IDA7CisgICAgc3dpenpsZUJ1ZmZlckRlc2MuQnl0ZVdpZHRoICAgICAgICAgICA9IHNpemVvZih1
bnNpZ25lZCBpbnQpICogNDsKKyAgICBzd2l6emxlQnVmZmVyRGVzYy5Vc2FnZSAgICAgICAgICAg
ICAgID0gRDNEMTFfVVNBR0VfRFlOQU1JQzsKKyAgICBzd2l6emxlQnVmZmVyRGVzYy5CaW5kRmxh
Z3MgICAgICAgICAgID0gRDNEMTFfQklORF9DT05TVEFOVF9CVUZGRVI7CisgICAgc3dpenpsZUJ1
ZmZlckRlc2MuQ1BVQWNjZXNzRmxhZ3MgICAgICA9IEQzRDExX0NQVV9BQ0NFU1NfV1JJVEU7Cisg
ICAgc3dpenpsZUJ1ZmZlckRlc2MuTWlzY0ZsYWdzICAgICAgICAgICA9IDA7CiAgICAgc3dpenps
ZUJ1ZmZlckRlc2MuU3RydWN0dXJlQnl0ZVN0cmlkZSA9IDA7CiAKICAgICByZXN1bHQgPSBkZXZp
Y2UtPkNyZWF0ZUJ1ZmZlcigmc3dpenpsZUJ1ZmZlckRlc2MsIG51bGxwdHIsICZtU3dpenpsZUNC
KTsKQEAgLTQ1NSwyMSArNzg1LDMxIEBACiB9CiAKIC8vIHN0YXRpYwotQmxpdDExOjpCbGl0U2hh
ZGVyVHlwZSBCbGl0MTE6OkdldEJsaXRTaGFkZXJUeXBlKEdMZW51bSBkZXN0aW5hdGlvbkZvcm1h
dCwgYm9vbCBpc1NpZ25lZCwgU2hhZGVyRGltZW5zaW9uIGRpbWVuc2lvbikKK0JsaXQxMTo6Qmxp
dFNoYWRlclR5cGUgQmxpdDExOjpHZXRCbGl0U2hhZGVyVHlwZShHTGVudW0gZGVzdGluYXRpb25G
b3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBpc1NpZ25lZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIHVucGFja1ByZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tVbm11bHRpcGx5QWxwaGEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVy
RGltZW5zaW9uIGRpbWVuc2lvbikKIHsKICAgICBpZiAoZGltZW5zaW9uID09IFNIQURFUl8zRCkK
ICAgICB7CisgICAgICAgIEFTU0VSVCghdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSAmJiAhdW5wYWNr
VW5tdWx0aXBseUFscGhhKTsKKwogICAgICAgICBpZiAoaXNTaWduZWQpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHN3aXRjaCAoZGVzdGluYXRpb25Gb3JtYXQpCiAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgIGNhc2UgR0xfUkdCQV9JTlRFR0VSOiByZXR1cm4gQkxJVFNIQURFUl8zRF9SR0JB
STsKLSAgICAgICAgICAgICAgY2FzZSBHTF9SR0JfSU5URUdFUjogIHJldHVybiBCTElUU0hBREVS
XzNEX1JHQkk7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfUkdfSU5URUdFUjogICByZXR1cm4gQkxJ
VFNIQURFUl8zRF9SR0k7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfUkVEX0lOVEVHRVI6ICByZXR1
cm4gQkxJVFNIQURFUl8zRF9SSTsKLSAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
ICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgICAgIHJldHVybiBCTElUU0hBREVSX0lO
VkFMSUQ7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9SR0JBX0lOVEVHRVI6CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBCTElUU0hBREVSXzNEX1JHQkFJOworICAgICAgICAgICAgICAgIGNh
c2UgR0xfUkdCX0lOVEVHRVI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBCTElUU0hBREVS
XzNEX1JHQkk7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9SR19JTlRFR0VSOgorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gQkxJVFNIQURFUl8zRF9SR0k7CisgICAgICAgICAgICAgICAgY2Fz
ZSBHTF9SRURfSU5URUdFUjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJMSVRTSEFERVJf
M0RfUkk7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgVU5S
RUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJMSVRTSEFERVJfSU5WQUxJ
RDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlCkBAIC00NzYsMTA4ICs4
MTYsMTcyIEBACiAgICAgICAgIHsKICAgICAgICAgICAgIHN3aXRjaCAoZGVzdGluYXRpb25Gb3Jt
YXQpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfUkdCQTogICAgICAgICAg
ICAgcmV0dXJuIEJMSVRTSEFERVJfM0RfUkdCQUY7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfUkdC
QV9JTlRFR0VSOiAgICAgcmV0dXJuIEJMSVRTSEFERVJfM0RfUkdCQVVJOwotICAgICAgICAgICAg
ICBjYXNlIEdMX0JHUkFfRVhUOiAgICAgICAgIHJldHVybiBCTElUU0hBREVSXzNEX0JHUkFGOwot
ICAgICAgICAgICAgICBjYXNlIEdMX1JHQjogICAgICAgICAgICAgIHJldHVybiBCTElUU0hBREVS
XzNEX1JHQkY7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfUkdCX0lOVEVHRVI6ICAgICAgcmV0dXJu
IEJMSVRTSEFERVJfM0RfUkdCVUk7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfUkc6ICAgICAgICAg
ICAgICAgcmV0dXJuIEJMSVRTSEFERVJfM0RfUkdGOwotICAgICAgICAgICAgICBjYXNlIEdMX1JH
X0lOVEVHRVI6ICAgICAgIHJldHVybiBCTElUU0hBREVSXzNEX1JHVUk7Ci0gICAgICAgICAgICAg
IGNhc2UgR0xfUkVEOiAgICAgICAgICAgICAgcmV0dXJuIEJMSVRTSEFERVJfM0RfUkY7Ci0gICAg
ICAgICAgICAgIGNhc2UgR0xfUkVEX0lOVEVHRVI6ICAgICAgcmV0dXJuIEJMSVRTSEFERVJfM0Rf
UlVJOwotICAgICAgICAgICAgICBjYXNlIEdMX0FMUEhBOiAgICAgICAgICAgIHJldHVybiBCTElU
U0hBREVSXzNEX0FMUEhBOwotICAgICAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRTogICAgICAg
IHJldHVybiBCTElUU0hBREVSXzNEX0xVTUE7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfTFVNSU5B
TkNFX0FMUEhBOiAgcmV0dXJuIEJMSVRTSEFERVJfM0RfTFVNQUFMUEhBOwotICAgICAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIEJMSVRTSEFERVJfSU5WQUxJRDsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1JH
QkE6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBCTElUU0hBREVSXzNEX1JHQkFGOworICAg
ICAgICAgICAgICAgIGNhc2UgR0xfUkdCQV9JTlRFR0VSOgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gQkxJVFNIQURFUl8zRF9SR0JBVUk7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9CR1JB
X0VYVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJMSVRTSEFERVJfM0RfQkdSQUY7Cisg
ICAgICAgICAgICAgICAgY2FzZSBHTF9SR0I6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBC
TElUU0hBREVSXzNEX1JHQkY7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9SR0JfSU5URUdFUjoK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJMSVRTSEFERVJfM0RfUkdCVUk7CisgICAgICAg
ICAgICAgICAgY2FzZSBHTF9SRzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJMSVRTSEFE
RVJfM0RfUkdGOworICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdfSU5URUdFUjoKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEJMSVRTSEFERVJfM0RfUkdVSTsKKyAgICAgICAgICAgICAgICBj
YXNlIEdMX1JFRDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJMSVRTSEFERVJfM0RfUkY7
CisgICAgICAgICAgICAgICAgY2FzZSBHTF9SRURfSU5URUdFUjoKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEJMSVRTSEFERVJfM0RfUlVJOworICAgICAgICAgICAgICAgIGNhc2UgR0xfQUxQ
SEE6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBCTElUU0hBREVSXzNEX0FMUEhBOworICAg
ICAgICAgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFOgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gQkxJVFNIQURFUl8zRF9MVU1BOworICAgICAgICAgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNF
X0FMUEhBOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQkxJVFNIQURFUl8zRF9MVU1BQUxQ
SEE7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJMSVRTSEFERVJfSU5WQUxJRDsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIGlmIChpc1NpZ25lZCkK
ICAgICB7CisgICAgICAgIEFTU0VSVCghdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSAmJiAhdW5wYWNr
VW5tdWx0aXBseUFscGhhKTsKKwogICAgICAgICBzd2l0Y2ggKGRlc3RpbmF0aW9uRm9ybWF0KQog
ICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9SR0JBX0lOVEVHRVI6IHJldHVybiBCTElUU0hB
REVSXzJEX1JHQkFJOwotICAgICAgICAgIGNhc2UgR0xfUkdCX0lOVEVHRVI6ICByZXR1cm4gQkxJ
VFNIQURFUl8yRF9SR0JJOwotICAgICAgICAgIGNhc2UgR0xfUkdfSU5URUdFUjogICByZXR1cm4g
QkxJVFNIQURFUl8yRF9SR0k7Ci0gICAgICAgICAgY2FzZSBHTF9SRURfSU5URUdFUjogIHJldHVy
biBCTElUU0hBREVSXzJEX1JJOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBVTlJF
QUNIQUJMRSgpOwotICAgICAgICAgICAgcmV0dXJuIEJMSVRTSEFERVJfSU5WQUxJRDsKKyAgICAg
ICAgICAgIGNhc2UgR0xfUkdCQV9JTlRFR0VSOgorICAgICAgICAgICAgICAgIHJldHVybiBCTElU
U0hBREVSXzJEX1JHQkFJOworICAgICAgICAgICAgY2FzZSBHTF9SR0JfSU5URUdFUjoKKyAgICAg
ICAgICAgICAgICByZXR1cm4gQkxJVFNIQURFUl8yRF9SR0JJOworICAgICAgICAgICAgY2FzZSBH
TF9SR19JTlRFR0VSOgorICAgICAgICAgICAgICAgIHJldHVybiBCTElUU0hBREVSXzJEX1JHSTsK
KyAgICAgICAgICAgIGNhc2UgR0xfUkVEX0lOVEVHRVI6CisgICAgICAgICAgICAgICAgcmV0dXJu
IEJMSVRTSEFERVJfMkRfUkk7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEJMSVRTSEFERVJfSU5WQUxJ
RDsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBzd2l0Y2ggKGRl
c3RpbmF0aW9uRm9ybWF0KQorICAgICAgICBpZiAodW5wYWNrUHJlbXVsdGlwbHlBbHBoYSAhPSB1
bnBhY2tVbm11bHRpcGx5QWxwaGEpCiAgICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX1JHQkE6
ICAgICAgICAgICAgIHJldHVybiBCTElUU0hBREVSXzJEX1JHQkFGOwotICAgICAgICAgIGNhc2Ug
R0xfUkdCQV9JTlRFR0VSOiAgICAgcmV0dXJuIEJMSVRTSEFERVJfMkRfUkdCQVVJOwotICAgICAg
ICAgIGNhc2UgR0xfQkdSQV9FWFQ6ICAgICAgICAgcmV0dXJuIEJMSVRTSEFERVJfMkRfQkdSQUY7
Ci0gICAgICAgICAgY2FzZSBHTF9SR0I6ICAgICAgICAgICAgICByZXR1cm4gQkxJVFNIQURFUl8y
RF9SR0JGOwotICAgICAgICAgIGNhc2UgR0xfUkdCX0lOVEVHRVI6ICAgICAgcmV0dXJuIEJMSVRT
SEFERVJfMkRfUkdCVUk7Ci0gICAgICAgICAgY2FzZSBHTF9SRzogICAgICAgICAgICAgICByZXR1
cm4gQkxJVFNIQURFUl8yRF9SR0Y7Ci0gICAgICAgICAgY2FzZSBHTF9SR19JTlRFR0VSOiAgICAg
ICByZXR1cm4gQkxJVFNIQURFUl8yRF9SR1VJOwotICAgICAgICAgIGNhc2UgR0xfUkVEOiAgICAg
ICAgICAgICAgcmV0dXJuIEJMSVRTSEFERVJfMkRfUkY7Ci0gICAgICAgICAgY2FzZSBHTF9SRURf
SU5URUdFUjogICAgICByZXR1cm4gQkxJVFNIQURFUl8yRF9SVUk7Ci0gICAgICAgICAgY2FzZSBH
TF9BTFBIQTogICAgICAgICAgICByZXR1cm4gQkxJVFNIQURFUl8yRF9BTFBIQTsKLSAgICAgICAg
ICBjYXNlIEdMX0xVTUlOQU5DRTogICAgICAgIHJldHVybiBCTElUU0hBREVSXzJEX0xVTUE7Ci0g
ICAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6ICByZXR1cm4gQkxJVFNIQURFUl8yRF9M
VU1BQUxQSEE7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
Ci0gICAgICAgICAgICByZXR1cm4gQkxJVFNIQURFUl9JTlZBTElEOworICAgICAgICAgICAgc3dp
dGNoIChkZXN0aW5hdGlvbkZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBj
YXNlIEdMX1JHQkE6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bnBhY2tQcmVtdWx0aXBs
eUFscGhhID8gQkxJVFNIQURFUl8yRF9SR0JBRl9QUkVNVUxUSVBMWQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEJMSVRTSEFERVJfMkRfUkdCQUZf
VU5NVUxUSVBMWTsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0JHUkFfRVhUOgorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSA/IEJMSVRTSEFERVJfMkRf
QkdSQUZfUFJFTVVMVElQTFkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiBCTElUU0hBREVSXzJEX0JHUkFGX1VOTVVMVElQTFk7CisgICAgICAgICAg
ICAgICAgY2FzZSBHTF9SR0I6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bnBhY2tQcmVt
dWx0aXBseUFscGhhID8gQkxJVFNIQURFUl8yRF9SR0JGX1BSRU1VTFRJUExZCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogQkxJVFNIQURFUl8yRF9S
R0JGX1VOTVVMVElQTFk7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJMSVRTSEFE
RVJfSU5WQUxJRDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBlbHNlCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZGVzdGluYXRpb25Gb3JtYXQpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9SR0JBOgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gQkxJVFNIQURFUl8yRF9SR0JBRjsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQkFf
SU5URUdFUjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJMSVRTSEFERVJfMkRfUkdCQVVJ
OworICAgICAgICAgICAgICAgIGNhc2UgR0xfQkdSQV9FWFQ6CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBCTElUU0hBREVSXzJEX0JHUkFGOworICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdC
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQkxJVFNIQURFUl8yRF9SR0JGOworICAgICAg
ICAgICAgICAgIGNhc2UgR0xfUkdCX0lOVEVHRVI6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBCTElUU0hBREVSXzJEX1JHQlVJOworICAgICAgICAgICAgICAgIGNhc2UgR0xfUkc6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBCTElUU0hBREVSXzJEX1JHRjsKKyAgICAgICAgICAgICAg
ICBjYXNlIEdMX1JHX0lOVEVHRVI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBCTElUU0hB
REVSXzJEX1JHVUk7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9SRUQ6CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBCTElUU0hBREVSXzJEX1JGOworICAgICAgICAgICAgICAgIGNhc2UgR0xf
UkVEX0lOVEVHRVI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBCTElUU0hBREVSXzJEX1JV
STsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0FMUEhBOgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gQkxJVFNIQURFUl8yRF9BTFBIQTsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0xVTUlO
QU5DRToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJMSVRTSEFERVJfMkRfTFVNQTsKKyAg
ICAgICAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQToKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEJMSVRTSEFERVJfMkRfTFVNQUFMUEhBOworICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBCTElUU0hBREVSX0lOVkFMSUQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
ICAgICB9CiB9CiAKIC8vIHN0YXRpYwotQmxpdDExOjpTd2l6emxlU2hhZGVyVHlwZSBCbGl0MTE6
OkdldFN3aXp6bGVTaGFkZXJUeXBlKEdMZW51bSB0eXBlLCBEM0QxMV9TUlZfRElNRU5TSU9OIGRp
bWVuc2lvbmFsaXR5KQorQmxpdDExOjpTd2l6emxlU2hhZGVyVHlwZSBCbGl0MTE6OkdldFN3aXp6
bGVTaGFkZXJUeXBlKEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDExX1NSVl9ESU1FTlNJT04gZGltZW5zaW9uYWxp
dHkpCiB7CiAgICAgc3dpdGNoIChkaW1lbnNpb25hbGl0eSkKICAgICB7Ci0gICAgICBjYXNlIEQz
RDExX1NSVl9ESU1FTlNJT05fVEVYVFVSRTJEOgotICAgICAgICBzd2l0Y2ggKHR5cGUpCi0gICAg
ICAgIHsKLSAgICAgICAgICBjYXNlIEdMX0ZMT0FUOiAgICAgICAgcmV0dXJuIFNXSVpaTEVTSEFE
RVJfMkRfRkxPQVQ7Ci0gICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6IHJldHVybiBTV0la
WkxFU0hBREVSXzJEX1VJTlQ7Ci0gICAgICAgICAgY2FzZSBHTF9JTlQ6ICAgICAgICAgIHJldHVy
biBTV0laWkxFU0hBREVSXzJEX0lOVDsKLSAgICAgICAgICBkZWZhdWx0OgorICAgICAgICBjYXNl
IEQzRDExX1NSVl9ESU1FTlNJT05fVEVYVFVSRTJEOgorICAgICAgICAgICAgc3dpdGNoICh0eXBl
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBTV0laWkxFU0hBREVSXzJEX0ZMT0FUOworICAgICAgICAgICAg
ICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gU1dJ
WlpMRVNIQURFUl8yRF9VSU5UOworICAgICAgICAgICAgICAgIGNhc2UgR0xfSU5UOgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gU1dJWlpMRVNIQURFUl8yRF9JTlQ7CisgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFNXSVpaTEVTSEFERVJfSU5WQUxJRDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgY2FzZSBEM0QxMV9TUlZfRElNRU5TSU9OX1RFWFRVUkVDVUJFOgorICAgICAgICAg
ICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgR0xf
RkxPQVQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTV0laWkxFU0hBREVSX0NVQkVfRkxP
QVQ7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBTV0laWkxFU0hBREVSX0NVQkVfVUlOVDsKKyAgICAgICAgICAgICAgICBj
YXNlIEdMX0lOVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNXSVpaTEVTSEFERVJfQ1VC
RV9JTlQ7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgVU5S
RUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNXSVpaTEVTSEFERVJfSU5W
QUxJRDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgY2FzZSBEM0QxMV9TUlZfRElNRU5TSU9OX1RF
WFRVUkUzRDoKKyAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBjYXNlIEdMX0ZMT0FUOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gU1dJ
WlpMRVNIQURFUl8zRF9GTE9BVDsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lO
VDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNXSVpaTEVTSEFERVJfM0RfVUlOVDsKKyAg
ICAgICAgICAgICAgICBjYXNlIEdMX0lOVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNX
SVpaTEVTSEFERVJfM0RfSU5UOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTV0la
WkxFU0hBREVSX0lOVkFMSUQ7CisgICAgICAgICAgICB9CisgICAgICAgIGNhc2UgRDNEMTFfU1JW
X0RJTUVOU0lPTl9URVhUVVJFMkRBUlJBWToKKyAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0ZMT0FUOgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gU1dJWlpMRVNIQURFUl9BUlJBWV9GTE9BVDsKKyAgICAgICAgICAgICAg
ICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNXSVpa
TEVTSEFERVJfQVJSQVlfVUlOVDsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0lOVDoKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFNXSVpaTEVTSEFERVJfQVJSQVlfSU5UOworICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBTV0laWkxFU0hBREVSX0lOVkFMSUQ7CisgICAgICAgICAg
ICB9CisgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAg
ICAgICAgcmV0dXJuIFNXSVpaTEVTSEFERVJfSU5WQUxJRDsKLSAgICAgICAgfQotICAgICAgY2Fz
ZSBEM0QxMV9TUlZfRElNRU5TSU9OX1RFWFRVUkVDVUJFOgotICAgICAgICBzd2l0Y2ggKHR5cGUp
Ci0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX0ZMT0FUOiAgICAgICAgcmV0dXJuIFNXSVpa
TEVTSEFERVJfQ1VCRV9GTE9BVDsKLSAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDogcmV0
dXJuIFNXSVpaTEVTSEFERVJfQ1VCRV9VSU5UOwotICAgICAgICAgIGNhc2UgR0xfSU5UOiAgICAg
ICAgICByZXR1cm4gU1dJWlpMRVNIQURFUl9DVUJFX0lOVDsKLSAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgIHJldHVybiBTV0laWkxFU0hB
REVSX0lOVkFMSUQ7Ci0gICAgICAgIH0KLSAgICAgIGNhc2UgRDNEMTFfU1JWX0RJTUVOU0lPTl9U
RVhUVVJFM0Q6Ci0gICAgICAgIHN3aXRjaCAodHlwZSkKLSAgICAgICAgewotICAgICAgICAgIGNh
c2UgR0xfRkxPQVQ6ICAgICAgICByZXR1cm4gU1dJWlpMRVNIQURFUl8zRF9GTE9BVDsKLSAgICAg
ICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDogcmV0dXJuIFNXSVpaTEVTSEFERVJfM0RfVUlOVDsK
LSAgICAgICAgICBjYXNlIEdMX0lOVDogICAgICAgICAgcmV0dXJuIFNXSVpaTEVTSEFERVJfM0Rf
SU5UOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAg
ICAgICAgICAgcmV0dXJuIFNXSVpaTEVTSEFERVJfSU5WQUxJRDsKLSAgICAgICAgfQotICAgICAg
Y2FzZSBEM0QxMV9TUlZfRElNRU5TSU9OX1RFWFRVUkUyREFSUkFZOgotICAgICAgICBzd2l0Y2gg
KHR5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX0ZMT0FUOiAgICAgICAgcmV0dXJu
IFNXSVpaTEVTSEFERVJfQVJSQVlfRkxPQVQ7Ci0gICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9J
TlQ6IHJldHVybiBTV0laWkxFU0hBREVSX0FSUkFZX1VJTlQ7Ci0gICAgICAgICAgY2FzZSBHTF9J
TlQ6ICAgICAgICAgIHJldHVybiBTV0laWkxFU0hBREVSX0FSUkFZX0lOVDsKLSAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgIHJldHVybiBT
V0laWkxFU0hBREVSX0lOVkFMSUQ7Ci0gICAgICAgIH0KLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
IFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgIHJldHVybiBTV0laWkxFU0hBREVSX0lOVkFMSUQ7CiAg
ICAgfQogfQogCkBAIC01ODgsMTcgKzk5MiwxNyBAQAogCiAgICAgaWYgKHNoYWRlci5kaW1lbnNp
b24gPT0gU0hBREVSXzJEKQogICAgIHsKLSAgICAgICAgc3VwcG9ydC5pbnB1dExheW91dCA9IG1R
dWFkMkRJTC5yZXNvbHZlKGRldmljZSk7Ci0gICAgICAgIHN1cHBvcnQudmVydGV4U2hhZGVyID0g
bVF1YWQyRFZTLnJlc29sdmUoZGV2aWNlKTsKLSAgICAgICAgc3VwcG9ydC5nZW9tZXRyeVNoYWRl
ciA9IG51bGxwdHI7CisgICAgICAgIHN1cHBvcnQuaW5wdXRMYXlvdXQgICAgICAgICA9IG1RdWFk
MkRJTC5yZXNvbHZlKGRldmljZSk7CisgICAgICAgIHN1cHBvcnQudmVydGV4U2hhZGVyICAgICAg
ICA9IG1RdWFkMkRWUy5yZXNvbHZlKGRldmljZSk7CisgICAgICAgIHN1cHBvcnQuZ2VvbWV0cnlT
aGFkZXIgICAgICA9IG51bGxwdHI7CiAgICAgICAgIHN1cHBvcnQudmVydGV4V3JpdGVGdW5jdGlv
biA9IFdyaXRlMkRWZXJ0aWNlczsKICAgICB9CiAgICAgZWxzZQogICAgIHsKICAgICAgICAgQVNT
RVJUKHNoYWRlci5kaW1lbnNpb24gPT0gU0hBREVSXzNEKTsKLSAgICAgICAgc3VwcG9ydC5pbnB1
dExheW91dCA9IG1RdWFkM0RJTC5yZXNvbHZlKGRldmljZSk7Ci0gICAgICAgIHN1cHBvcnQudmVy
dGV4U2hhZGVyID0gbVF1YWQzRFZTLnJlc29sdmUoZGV2aWNlKTsKLSAgICAgICAgc3VwcG9ydC5n
ZW9tZXRyeVNoYWRlciA9IG1RdWFkM0RHUy5yZXNvbHZlKGRldmljZSk7CisgICAgICAgIHN1cHBv
cnQuaW5wdXRMYXlvdXQgICAgICAgICA9IG1RdWFkM0RJTC5yZXNvbHZlKGRldmljZSk7CisgICAg
ICAgIHN1cHBvcnQudmVydGV4U2hhZGVyICAgICAgICA9IG1RdWFkM0RWUy5yZXNvbHZlKGRldmlj
ZSk7CisgICAgICAgIHN1cHBvcnQuZ2VvbWV0cnlTaGFkZXIgICAgICA9IG1RdWFkM0RHUy5yZXNv
bHZlKGRldmljZSk7CiAgICAgICAgIHN1cHBvcnQudmVydGV4V3JpdGVGdW5jdGlvbiA9IFdyaXRl
M0RWZXJ0aWNlczsKICAgICB9CiAKQEAgLTYwOCwxNiArMTAxMiw5IEBACiBnbDo6RXJyb3IgQmxp
dDExOjpzd2l6emxlVGV4dHVyZShJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNvdXJjZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKmRl
c3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAm
c2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzd2l6emxlUmVk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHN3aXp6bGVHcmVlbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzd2l6emxlQmx1ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzd2l6emxlQWxwaGEpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6U3dpenpsZVN0YXRlICZzd2l6
emxlVGFyZ2V0KQogewotICAgIGdsOjpFcnJvciBlcnJvciA9IGluaXRSZXNvdXJjZXMoKTsKLSAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAg
IH0KKyAgICBBTkdMRV9UUlkoaW5pdFJlc291cmNlcygpKTsKIAogICAgIEhSRVNVTFQgcmVzdWx0
OwogICAgIElEM0QxMURldmljZUNvbnRleHQgKmRldmljZUNvbnRleHQgPSBtUmVuZGVyZXItPmdl
dERldmljZUNvbnRleHQoKTsKQEAgLTYyNSw4ICsxMDIyLDcgQEAKICAgICBEM0QxMV9TSEFERVJf
UkVTT1VSQ0VfVklFV19ERVNDIHNvdXJjZVNSVkRlc2M7CiAgICAgc291cmNlLT5HZXREZXNjKCZz
b3VyY2VTUlZEZXNjKTsKIAotICAgIGNvbnN0IGQzZDExOjpEWEdJRm9ybWF0ICZkeGdpRm9ybWF0
SW5mbyA9IGQzZDExOjpHZXREWEdJRm9ybWF0SW5mbyhzb3VyY2VTUlZEZXNjLkZvcm1hdCk7Ci0g
ICAgR0xlbnVtIGNvbXBvbmVudFR5cGUgPSBkeGdpRm9ybWF0SW5mby5jb21wb25lbnRUeXBlOwor
ICAgIEdMZW51bSBjb21wb25lbnRUeXBlID0gZDNkMTE6OkdldENvbXBvbmVudFR5cGUoc291cmNl
U1JWRGVzYy5Gb3JtYXQpOwogICAgIGlmIChjb21wb25lbnRUeXBlID09IEdMX05PTkUpCiAgICAg
ewogICAgICAgICAvLyBXZSdyZSBzd2l6emxpbmcgdGhlIGRlcHRoIGNvbXBvbmVudCBvZiBhIGRl
cHRoLXN0ZW5jaWwgdGV4dHVyZS4KQEAgLTY0NywyOCArMTA0MywyNCBAQAogICAgIEdMZW51bSBz
aGFkZXJUeXBlID0gR0xfTk9ORTsKICAgICBzd2l0Y2ggKGNvbXBvbmVudFR5cGUpCiAgICAgewot
ICAgICAgY2FzZSBHTF9VTlNJR05FRF9OT1JNQUxJWkVEOgotICAgICAgY2FzZSBHTF9TSUdORURf
Tk9STUFMSVpFRDoKLSAgICAgIGNhc2UgR0xfRkxPQVQ6Ci0gICAgICAgIHNoYWRlclR5cGUgPSBH
TF9GTE9BVDsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX0lOVDoKLSAgICAgICAgc2hh
ZGVyVHlwZSA9IEdMX0lOVDsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1VOU0lHTkVE
X0lOVDoKLSAgICAgICAgc2hhZGVyVHlwZSA9IEdMX1VOU0lHTkVEX0lOVDsKLSAgICAgICAgYnJl
YWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9OT1JNQUxJWkVEOgorICAgICAgICBjYXNlIEdM
X1NJR05FRF9OT1JNQUxJWkVEOgorICAgICAgICBjYXNlIEdMX0ZMT0FUOgorICAgICAgICAgICAg
c2hhZGVyVHlwZSA9IEdMX0ZMT0FUOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
R0xfSU5UOgorICAgICAgICAgICAgc2hhZGVyVHlwZSA9IEdMX0lOVDsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKKyAgICAgICAgICAgIHNoYWRlclR5
cGUgPSBHTF9VTlNJR05FRF9JTlQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBicmVhazsKICAgICB9
CiAKICAgICBjb25zdCBTaGFkZXIgKnNoYWRlciA9IG51bGxwdHI7Ci0gICAgZXJyb3IgPSBnZXRT
d2l6emxlU2hhZGVyKHNoYWRlclR5cGUsIHNvdXJjZVNSVkRlc2MuVmlld0RpbWVuc2lvbiwgJnNo
YWRlcik7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBl
cnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKGdldFN3aXp6bGVTaGFkZXIoc2hhZGVyVHlwZSwg
c291cmNlU1JWRGVzYy5WaWV3RGltZW5zaW9uLCAmc2hhZGVyKSk7CiAKICAgICAvLyBTZXQgdmVy
dGljZXMKICAgICBEM0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwcGVkUmVzb3VyY2U7CkBAIC02
NzUsMTggKzEwNjcsMjEgQEAKICAgICByZXN1bHQgPSBkZXZpY2VDb250ZXh0LT5NYXAobVZlcnRl
eEJ1ZmZlciwgMCwgRDNEMTFfTUFQX1dSSVRFX0RJU0NBUkQsIDAsICZtYXBwZWRSZXNvdXJjZSk7
CiAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIG1hcCBpbnRlcm5hbCB2ZXJ0ZXggYnVmZmVy
IGZvciBzd2l6emxlLCBIUkVTVUxUOiAweCVYLiIsIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiRmFp
bGVkIHRvIG1hcCBpbnRlcm5hbCB2ZXJ0ZXggYnVmZmVyIGZvciBzd2l6emxlLCBIUkVTVUxUOiAw
eCVYLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KTsKICAgICB9CiAKICAgICBj
b25zdCBTaGFkZXJTdXBwb3J0ICZzdXBwb3J0ID0gZ2V0U2hhZGVyU3VwcG9ydCgqc2hhZGVyKTsK
IAotICAgIFVJTlQgc3RyaWRlID0gMDsKLSAgICBVSU5UIHN0YXJ0SWR4ID0gMDsKKyAgICBVSU5U
IHN0cmlkZSAgICA9IDA7CisgICAgVUlOVCBzdGFydElkeCAgPSAwOwogICAgIFVJTlQgZHJhd0Nv
dW50ID0gMDsKICAgICBEM0QxMV9QUklNSVRJVkVfVE9QT0xPR1kgdG9wb2xvZ3k7CiAKICAgICBn
bDo6Qm94IGFyZWEoMCwgMCwgMCwgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQsIHNpemUuZGVwdGgp
OwotICAgIHN1cHBvcnQudmVydGV4V3JpdGVGdW5jdGlvbihhcmVhLCBzaXplLCBhcmVhLCBzaXpl
LCBtYXBwZWRSZXNvdXJjZS5wRGF0YSwgJnN0cmlkZSwgJmRyYXdDb3VudCwgJnRvcG9sb2d5KTsK
KyAgICBzdXBwb3J0LnZlcnRleFdyaXRlRnVuY3Rpb24oYXJlYSwgc2l6ZSwgYXJlYSwgc2l6ZSwg
bWFwcGVkUmVzb3VyY2UucERhdGEsICZzdHJpZGUsICZkcmF3Q291bnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZ0b3BvbG9neSk7CiAKICAgICBkZXZpY2VDb250ZXh0LT5Vbm1h
cChtVmVydGV4QnVmZmVyLCAwKTsKIApAQCAtNjk0LDE0ICsxMDg5LDE2IEBACiAgICAgcmVzdWx0
ID0gZGV2aWNlQ29udGV4dC0+TWFwKG1Td2l6emxlQ0IsIDAsIEQzRDExX01BUF9XUklURV9ESVND
QVJELCAwLCAmbWFwcGVkUmVzb3VyY2UpOwogICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBt
YXAgaW50ZXJuYWwgY29uc3RhbnQgYnVmZmVyIGZvciBzd2l6emxlLCBIUkVTVUxUOiAweCVYLiIs
IHJlc3VsdCk7CisgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIG1hcCBpbnRlcm5hbCBjb25zdGFudCBi
dWZmZXIgZm9yIHN3aXp6bGUsIEhSRVNVTFQ6IDB4JVguIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICByZXN1bHQpOwogICAgIH0KIAotICAgIHVuc2lnbmVkIGludCAqc3dpenpsZUluZGljZXMg
PSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGludCo+KG1hcHBlZFJlc291cmNlLnBEYXRhKTsK
LSAgICBzd2l6emxlSW5kaWNlc1swXSA9IEdldFN3aXp6bGVJbmRleChzd2l6emxlUmVkKTsKLSAg
ICBzd2l6emxlSW5kaWNlc1sxXSA9IEdldFN3aXp6bGVJbmRleChzd2l6emxlR3JlZW4pOwotICAg
IHN3aXp6bGVJbmRpY2VzWzJdID0gR2V0U3dpenpsZUluZGV4KHN3aXp6bGVCbHVlKTsKLSAgICBz
d2l6emxlSW5kaWNlc1szXSA9IEdldFN3aXp6bGVJbmRleChzd2l6emxlQWxwaGEpOworICAgIHVu
c2lnbmVkIGludCAqc3dpenpsZUluZGljZXMgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGlu
dCAqPihtYXBwZWRSZXNvdXJjZS5wRGF0YSk7CisgICAgc3dpenpsZUluZGljZXNbMF0gICAgICAg
ICAgICA9IEdldFN3aXp6bGVJbmRleChzd2l6emxlVGFyZ2V0LnN3aXp6bGVSZWQpOworICAgIHN3
aXp6bGVJbmRpY2VzWzFdICAgICAgICAgICAgPSBHZXRTd2l6emxlSW5kZXgoc3dpenpsZVRhcmdl
dC5zd2l6emxlR3JlZW4pOworICAgIHN3aXp6bGVJbmRpY2VzWzJdICAgICAgICAgICAgPSBHZXRT
d2l6emxlSW5kZXgoc3dpenpsZVRhcmdldC5zd2l6emxlQmx1ZSk7CisgICAgc3dpenpsZUluZGlj
ZXNbM10gICAgICAgICAgICA9IEdldFN3aXp6bGVJbmRleChzd2l6emxlVGFyZ2V0LnN3aXp6bGVB
bHBoYSk7CiAKICAgICBkZXZpY2VDb250ZXh0LT5Vbm1hcChtU3dpenpsZUNCLCAwKTsKIApAQCAt
NzM1LDggKzExMzIsOCBAQAogICAgIEQzRDExX1ZJRVdQT1JUIHZpZXdwb3J0OwogICAgIHZpZXdw
b3J0LlRvcExlZnRYID0gMDsKICAgICB2aWV3cG9ydC5Ub3BMZWZ0WSA9IDA7Ci0gICAgdmlld3Bv
cnQuV2lkdGggPSBzdGF0aWNfY2FzdDxGTE9BVD4oc2l6ZS53aWR0aCk7Ci0gICAgdmlld3BvcnQu
SGVpZ2h0ID0gc3RhdGljX2Nhc3Q8RkxPQVQ+KHNpemUuaGVpZ2h0KTsKKyAgICB2aWV3cG9ydC5X
aWR0aCAgICA9IHN0YXRpY19jYXN0PEZMT0FUPihzaXplLndpZHRoKTsKKyAgICB2aWV3cG9ydC5I
ZWlnaHQgICA9IHN0YXRpY19jYXN0PEZMT0FUPihzaXplLmhlaWdodCk7CiAgICAgdmlld3BvcnQu
TWluRGVwdGggPSAwLjBmOwogICAgIHZpZXdwb3J0Lk1heERlcHRoID0gMS4wZjsKICAgICBkZXZp
Y2VDb250ZXh0LT5SU1NldFZpZXdwb3J0cygxLCAmdmlld3BvcnQpOwpAQCAtNzUzLDcgKzExNTAs
NyBAQAogICAgIC8vIFVuYmluZCB0ZXh0dXJlcyBhbmQgcmVuZGVyIHRhcmdldHMgYW5kIHZlcnRl
eCBidWZmZXIKICAgICBzdGF0ZU1hbmFnZXItPnNldFNoYWRlclJlc291cmNlKGdsOjpTQU1QTEVS
X1BJWEVMLCAwLCBudWxscHRyKTsKIAotICAgIFVJTlQgemVybyA9IDA7CisgICAgVUlOVCB6ZXJv
ICAgICAgICAgICAgICAgICAgICAgID0gMDsKICAgICBJRDNEMTFCdWZmZXIgKmNvbnN0IG51bGxC
dWZmZXIgPSBudWxscHRyOwogICAgIGRldmljZUNvbnRleHQtPklBU2V0VmVydGV4QnVmZmVycygw
LCAxLCAmbnVsbEJ1ZmZlciwgJnplcm8sICZ6ZXJvKTsKIApAQCAtNzcxLDEzICsxMTY4LDExIEBA
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICpzY2lz
c29yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RGb3JtYXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsdGVyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBtYXNrT2ZmQWxwaGEpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIG1hc2tPZmZBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgdW5wYWNrVW5tdWx0aXBseUFscGhhKQogewotICAgIGdsOjpFcnJvciBlcnJv
ciA9IGluaXRSZXNvdXJjZXMoKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkoaW5pdFJlc291cmNlcygp
KTsKIAogICAgIEhSRVNVTFQgcmVzdWx0OwogICAgIElEM0QxMURldmljZUNvbnRleHQgKmRldmlj
ZUNvbnRleHQgPSBtUmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKTsKQEAgLTc4NywyMSArMTE4
MiwxOCBAQAogICAgIEQzRDExX1NIQURFUl9SRVNPVVJDRV9WSUVXX0RFU0Mgc291cmNlU1JWRGVz
YzsKICAgICBzb3VyY2UtPkdldERlc2MoJnNvdXJjZVNSVkRlc2MpOwogCi0gICAgY29uc3QgZDNk
MTE6OkRYR0lGb3JtYXQgJmR4Z2lGb3JtYXRJbmZvID0gZDNkMTE6OkdldERYR0lGb3JtYXRJbmZv
KHNvdXJjZVNSVkRlc2MuRm9ybWF0KTsKLSAgICBHTGVudW0gY29tcG9uZW50VHlwZSAgICAgICAg
ICAgICAgICAgICAgPSBkeGdpRm9ybWF0SW5mby5jb21wb25lbnRUeXBlOworICAgIEdMZW51bSBj
b21wb25lbnRUeXBlID0gZDNkMTE6OkdldENvbXBvbmVudFR5cGUoc291cmNlU1JWRGVzYy5Gb3Jt
YXQpOwogCiAgICAgQVNTRVJUKGNvbXBvbmVudFR5cGUgIT0gR0xfTk9ORSk7CiAgICAgQVNTRVJU
KGNvbXBvbmVudFR5cGUgIT0gR0xfU0lHTkVEX05PUk1BTElaRUQpOwogICAgIGJvb2wgaXNTaWdu
ZWQgPSAoY29tcG9uZW50VHlwZSA9PSBHTF9JTlQpOwogCi0gICAgU2hhZGVyRGltZW5zaW9uIGRp
bWVuc2lvbiA9IChzb3VyY2VTUlZEZXNjLlZpZXdEaW1lbnNpb24gPT0gRDNEMTFfU1JWX0RJTUVO
U0lPTl9URVhUVVJFM0QpID8gU0hBREVSXzNEIDogU0hBREVSXzJEOworICAgIFNoYWRlckRpbWVu
c2lvbiBkaW1lbnNpb24gPQorICAgICAgICAoc291cmNlU1JWRGVzYy5WaWV3RGltZW5zaW9uID09
IEQzRDExX1NSVl9ESU1FTlNJT05fVEVYVFVSRTNEKSA/IFNIQURFUl8zRCA6IFNIQURFUl8yRDsK
IAogICAgIGNvbnN0IFNoYWRlciAqc2hhZGVyID0gbnVsbHB0cjsKLSAgICBlcnJvciA9IGdldEJs
aXRTaGFkZXIoZGVzdEZvcm1hdCwgaXNTaWduZWQsIGRpbWVuc2lvbiwgJnNoYWRlcik7Ci0gICAg
aWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9
CisgICAgQU5HTEVfVFJZKGdldEJsaXRTaGFkZXIoZGVzdEZvcm1hdCwgaXNTaWduZWQsIHVucGFj
a1ByZW11bHRpcGx5QWxwaGEsIHVucGFja1VubXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkaW1lbnNpb24sICZzaGFkZXIpKTsKIAogICAgIGNvbnN0IFNoYWRlclN1
cHBvcnQgJnN1cHBvcnQgPSBnZXRTaGFkZXJTdXBwb3J0KCpzaGFkZXIpOwogCkBAIC04MTAsMTEg
KzEyMDIsMTMgQEAKICAgICByZXN1bHQgPSBkZXZpY2VDb250ZXh0LT5NYXAobVZlcnRleEJ1ZmZl
ciwgMCwgRDNEMTFfTUFQX1dSSVRFX0RJU0NBUkQsIDAsICZtYXBwZWRSZXNvdXJjZSk7CiAgICAg
aWYgKEZBSUxFRChyZXN1bHQpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9P
VVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIG1hcCBpbnRlcm5hbCB2ZXJ0ZXggYnVmZmVyIGZvciB0
ZXh0dXJlIGNvcHksIEhSRVNVTFQ6IDB4JVguIiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGds
OjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLAorICAgICAgICAgICAgICAgICAgICAgICAgICJGYWls
ZWQgdG8gbWFwIGludGVybmFsIHZlcnRleCBidWZmZXIgZm9yIHRleHR1cmUgY29weSwgSFJFU1VM
VDogMHglWC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCk7CiAgICAgfQogCi0g
ICAgVUlOVCBzdHJpZGUgPSAwOwotICAgIFVJTlQgc3RhcnRJZHggPSAwOworICAgIFVJTlQgc3Ry
aWRlICAgID0gMDsKKyAgICBVSU5UIHN0YXJ0SWR4ICA9IDA7CiAgICAgVUlOVCBkcmF3Q291bnQg
PSAwOwogICAgIEQzRDExX1BSSU1JVElWRV9UT1BPTE9HWSB0b3BvbG9neTsKIApAQCAtODQyLDkg
KzEyMzYsOSBAQAogICAgIGlmIChzY2lzc29yKQogICAgIHsKICAgICAgICAgRDNEMTFfUkVDVCBz
Y2lzc29yUmVjdDsKLSAgICAgICAgc2Npc3NvclJlY3QubGVmdCA9IHNjaXNzb3ItPng7Ci0gICAg
ICAgIHNjaXNzb3JSZWN0LnJpZ2h0ID0gc2Npc3Nvci0+eCArIHNjaXNzb3ItPndpZHRoOwotICAg
ICAgICBzY2lzc29yUmVjdC50b3AgPSBzY2lzc29yLT55OworICAgICAgICBzY2lzc29yUmVjdC5s
ZWZ0ICAgPSBzY2lzc29yLT54OworICAgICAgICBzY2lzc29yUmVjdC5yaWdodCAgPSBzY2lzc29y
LT54ICsgc2Npc3Nvci0+d2lkdGg7CisgICAgICAgIHNjaXNzb3JSZWN0LnRvcCAgICA9IHNjaXNz
b3ItPnk7CiAgICAgICAgIHNjaXNzb3JSZWN0LmJvdHRvbSA9IHNjaXNzb3ItPnkgKyBzY2lzc29y
LT5oZWlnaHQ7CiAKICAgICAgICAgZGV2aWNlQ29udGV4dC0+UlNTZXRTY2lzc29yUmVjdHMoMSwg
JnNjaXNzb3JSZWN0KTsKQEAgLTg3NCw4ICsxMjY4LDggQEAKICAgICBEM0QxMV9WSUVXUE9SVCB2
aWV3cG9ydDsKICAgICB2aWV3cG9ydC5Ub3BMZWZ0WCA9IDA7CiAgICAgdmlld3BvcnQuVG9wTGVm
dFkgPSAwOwotICAgIHZpZXdwb3J0LldpZHRoID0gc3RhdGljX2Nhc3Q8RkxPQVQ+KGRlc3RTaXpl
LndpZHRoKTsKLSAgICB2aWV3cG9ydC5IZWlnaHQgPSBzdGF0aWNfY2FzdDxGTE9BVD4oZGVzdFNp
emUuaGVpZ2h0KTsKKyAgICB2aWV3cG9ydC5XaWR0aCAgICA9IHN0YXRpY19jYXN0PEZMT0FUPihk
ZXN0U2l6ZS53aWR0aCk7CisgICAgdmlld3BvcnQuSGVpZ2h0ICAgPSBzdGF0aWNfY2FzdDxGTE9B
VD4oZGVzdFNpemUuaGVpZ2h0KTsKICAgICB2aWV3cG9ydC5NaW5EZXB0aCA9IDAuMGY7CiAgICAg
dmlld3BvcnQuTWF4RGVwdGggPSAxLjBmOwogICAgIGRldmljZUNvbnRleHQtPlJTU2V0Vmlld3Bv
cnRzKDEsICZ2aWV3cG9ydCk7CkBAIC04ODcsMTIgKzEyODEsMTYgQEAKICAgICBJRDNEMTFTYW1w
bGVyU3RhdGUgKnNhbXBsZXIgPSBudWxscHRyOwogICAgIHN3aXRjaCAoZmlsdGVyKQogICAgIHsK
LSAgICAgIGNhc2UgR0xfTkVBUkVTVDogc2FtcGxlciA9IG1Qb2ludFNhbXBsZXI7ICBicmVhazsK
LSAgICAgIGNhc2UgR0xfTElORUFSOiAgc2FtcGxlciA9IG1MaW5lYXJTYW1wbGVyOyBicmVhazsK
KyAgICAgICAgY2FzZSBHTF9ORUFSRVNUOgorICAgICAgICAgICAgc2FtcGxlciA9IG1Qb2ludFNh
bXBsZXI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9MSU5FQVI6CisgICAg
ICAgICAgICBzYW1wbGVyID0gbUxpbmVhclNhbXBsZXI7CisgICAgICAgICAgICBicmVhazsKIAot
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgcmV0dXJuIGds
OjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiSW50ZXJuYWwgZXJyb3IsIHVua25vd24gYmxpdCBm
aWx0ZXIgbW9kZS4iKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CisgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJJbnRl
cm5hbCBlcnJvciwgdW5rbm93biBibGl0IGZpbHRlciBtb2RlLiIpOwogICAgIH0KICAgICBkZXZp
Y2VDb250ZXh0LT5QU1NldFNhbXBsZXJzKDAsIDEsICZzYW1wbGVyKTsKIApAQCAtOTAyLDMzICsx
MzAwLDM4IEBACiAgICAgLy8gVW5iaW5kIHRleHR1cmVzIGFuZCByZW5kZXIgdGFyZ2V0cyBhbmQg
dmVydGV4IGJ1ZmZlcgogICAgIHN0YXRlTWFuYWdlci0+c2V0U2hhZGVyUmVzb3VyY2UoZ2w6OlNB
TVBMRVJfUElYRUwsIDAsIG51bGxwdHIpOwogCi0gICAgVUlOVCB6ZXJvID0gMDsKKyAgICBVSU5U
IHplcm8gICAgICAgICAgICAgICAgICAgICAgPSAwOwogICAgIElEM0QxMUJ1ZmZlciAqY29uc3Qg
bnVsbEJ1ZmZlciA9IG51bGxwdHI7CiAgICAgZGV2aWNlQ29udGV4dC0+SUFTZXRWZXJ0ZXhCdWZm
ZXJzKDAsIDEsICZudWxsQnVmZmVyLCAmemVybywgJnplcm8pOwogCiAgICAgbVJlbmRlcmVyLT5t
YXJrQWxsU3RhdGVEaXJ0eSgpOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7
CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJvciBCbGl0MTE6OmNvcHlT
dGVuY2lsKElEM0QxMVJlc291cmNlICpzb3VyY2UsIHVuc2lnbmVkIGludCBzb3VyY2VTdWJyZXNv
dXJjZSwgY29uc3QgZ2w6OkJveCAmc291cmNlQXJlYSwgY29uc3QgZ2w6OkV4dGVudHMgJnNvdXJj
ZVNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFSZXNvdXJjZSAqZGVz
dCwgdW5zaWduZWQgaW50IGRlc3RTdWJyZXNvdXJjZSwgY29uc3QgZ2w6OkJveCAmZGVzdEFyZWEs
IGNvbnN0IGdsOjpFeHRlbnRzICZkZXN0U2l6ZSwKK2dsOjpFcnJvciBCbGl0MTE6OmNvcHlTdGVu
Y2lsKGNvbnN0IFRleHR1cmVIZWxwZXIxMSAmc291cmNlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZVN1YnJlc291cmNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzb3VyY2VTaXplLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGV4dHVyZUhlbHBlcjExICZkZXN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRlc3RTdWJyZXNvdXJjZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmRlc3RBcmVhLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJmRlc3RTaXplLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAqc2Npc3Nv
cikKIHsKLSAgICByZXR1cm4gY29weURlcHRoU3RlbmNpbChzb3VyY2UsIHNvdXJjZVN1YnJlc291
cmNlLCBzb3VyY2VBcmVhLCBzb3VyY2VTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlc3QsIGRlc3RTdWJyZXNvdXJjZSwgZGVzdEFyZWEsIGRlc3RTaXplLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNjaXNzb3IsIHRydWUpOworICAgIHJldHVybiBjb3B5RGVwdGhTdGVu
Y2lsSW1wbChzb3VyY2UsIHNvdXJjZVN1YnJlc291cmNlLCBzb3VyY2VBcmVhLCBzb3VyY2VTaXpl
LCBkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0U3VicmVzb3VyY2Us
IGRlc3RBcmVhLCBkZXN0U2l6ZSwgc2Npc3NvciwgdHJ1ZSk7CiB9CiAKLWdsOjpFcnJvciBCbGl0
MTE6OmNvcHlEZXB0aChJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNvdXJjZSwgY29uc3QgZ2w6
OkJveCAmc291cmNlQXJlYSwgY29uc3QgZ2w6OkV4dGVudHMgJnNvdXJjZVNpemUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSUQzRDExRGVwdGhTdGVuY2lsVmlldyAqZGVzdCwgY29uc3Qg
Z2w6OkJveCAmZGVzdEFyZWEsIGNvbnN0IGdsOjpFeHRlbnRzICZkZXN0U2l6ZSwKK2dsOjpFcnJv
ciBCbGl0MTE6OmNvcHlEZXB0aChJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNvdXJjZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZzb3VyY2VBcmVhLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzb3VyY2VTaXplLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMURlcHRoU3RlbmNpbFZpZXcgKmRlc3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmZGVzdEFyZWEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJmRlc3RTaXplLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgKnNjaXNzb3Ip
CiB7Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gaW5pdFJlc291cmNlcygpOwotICAgIGlmIChlcnJv
ci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFO
R0xFX1RSWShpbml0UmVzb3VyY2VzKCkpOwogCiAgICAgSFJFU1VMVCByZXN1bHQ7CiAgICAgSUQz
RDExRGV2aWNlQ29udGV4dCAqZGV2aWNlQ29udGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29u
dGV4dCgpOwpAQCAtOTM4LDE2ICsxMzQxLDE4IEBACiAgICAgcmVzdWx0ID0gZGV2aWNlQ29udGV4
dC0+TWFwKG1WZXJ0ZXhCdWZmZXIsIDAsIEQzRDExX01BUF9XUklURV9ESVNDQVJELCAwLCAmbWFw
cGVkUmVzb3VyY2UpOwogICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBtYXAgaW50ZXJuYWwg
dmVydGV4IGJ1ZmZlciBmb3IgdGV4dHVyZSBjb3B5LCBIUkVTVUxUOiAweCVYLiIsIHJlc3VsdCk7
CisgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAiRmFpbGVkIHRvIG1hcCBpbnRlcm5hbCB2ZXJ0ZXggYnVmZmVyIGZvciB0
ZXh0dXJlIGNvcHksIEhSRVNVTFQ6IDB4JVguIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQpOwogICAgIH0KIAotICAgIFVJTlQgc3RyaWRlID0gMDsKLSAgICBVSU5UIHN0YXJ0SWR4
ID0gMDsKKyAgICBVSU5UIHN0cmlkZSAgICA9IDA7CisgICAgVUlOVCBzdGFydElkeCAgPSAwOwog
ICAgIFVJTlQgZHJhd0NvdW50ID0gMDsKICAgICBEM0QxMV9QUklNSVRJVkVfVE9QT0xPR1kgdG9w
b2xvZ3k7CiAKLSAgICBXcml0ZTJEVmVydGljZXMoc291cmNlQXJlYSwgc291cmNlU2l6ZSwgZGVz
dEFyZWEsIGRlc3RTaXplLCBtYXBwZWRSZXNvdXJjZS5wRGF0YSwKLSAgICAgICAgICAgICAgICAg
ICAgJnN0cmlkZSwgJmRyYXdDb3VudCwgJnRvcG9sb2d5KTsKKyAgICBXcml0ZTJEVmVydGljZXMo
c291cmNlQXJlYSwgc291cmNlU2l6ZSwgZGVzdEFyZWEsIGRlc3RTaXplLCBtYXBwZWRSZXNvdXJj
ZS5wRGF0YSwgJnN0cmlkZSwKKyAgICAgICAgICAgICAgICAgICAgJmRyYXdDb3VudCwgJnRvcG9s
b2d5KTsKIAogICAgIGRldmljZUNvbnRleHQtPlVubWFwKG1WZXJ0ZXhCdWZmZXIsIDApOwogCkBA
IC05NjEsOSArMTM2Niw5IEBACiAgICAgaWYgKHNjaXNzb3IpCiAgICAgewogICAgICAgICBEM0Qx
MV9SRUNUIHNjaXNzb3JSZWN0OwotICAgICAgICBzY2lzc29yUmVjdC5sZWZ0ID0gc2Npc3Nvci0+
eDsKLSAgICAgICAgc2Npc3NvclJlY3QucmlnaHQgPSBzY2lzc29yLT54ICsgc2Npc3Nvci0+d2lk
dGg7Ci0gICAgICAgIHNjaXNzb3JSZWN0LnRvcCA9IHNjaXNzb3ItPnk7CisgICAgICAgIHNjaXNz
b3JSZWN0LmxlZnQgICA9IHNjaXNzb3ItPng7CisgICAgICAgIHNjaXNzb3JSZWN0LnJpZ2h0ICA9
IHNjaXNzb3ItPnggKyBzY2lzc29yLT53aWR0aDsKKyAgICAgICAgc2Npc3NvclJlY3QudG9wICAg
ID0gc2Npc3Nvci0+eTsKICAgICAgICAgc2Npc3NvclJlY3QuYm90dG9tID0gc2Npc3Nvci0+eSAr
IHNjaXNzb3ItPmhlaWdodDsKIAogICAgICAgICBkZXZpY2VDb250ZXh0LT5SU1NldFNjaXNzb3JS
ZWN0cygxLCAmc2Npc3NvclJlY3QpOwpAQCAtOTc0LDcgKzEzNzksNyBAQAogICAgICAgICBkZXZp
Y2VDb250ZXh0LT5SU1NldFN0YXRlKG1TY2lzc29yRGlzYWJsZWRSYXN0ZXJpemVyU3RhdGUpOwog
ICAgIH0KIAotICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2Uo
KTsKKyAgICBJRDNEMTFEZXZpY2UgKmRldmljZSAgICAgICAgID0gbVJlbmRlcmVyLT5nZXREZXZp
Y2UoKTsKICAgICBJRDNEMTFWZXJ0ZXhTaGFkZXIgKnF1YWQyRFZTID0gbVF1YWQyRFZTLnJlc29s
dmUoZGV2aWNlKTsKICAgICBpZiAocXVhZDJEVlMgPT0gbnVsbHB0cikKICAgICB7CkBAIC0xMDAw
LDggKzE0MDUsOCBAQAogICAgIEQzRDExX1ZJRVdQT1JUIHZpZXdwb3J0OwogICAgIHZpZXdwb3J0
LlRvcExlZnRYID0gMDsKICAgICB2aWV3cG9ydC5Ub3BMZWZ0WSA9IDA7Ci0gICAgdmlld3BvcnQu
V2lkdGggPSBzdGF0aWNfY2FzdDxGTE9BVD4oZGVzdFNpemUud2lkdGgpOwotICAgIHZpZXdwb3J0
LkhlaWdodCA9IHN0YXRpY19jYXN0PEZMT0FUPihkZXN0U2l6ZS5oZWlnaHQpOworICAgIHZpZXdw
b3J0LldpZHRoICAgID0gc3RhdGljX2Nhc3Q8RkxPQVQ+KGRlc3RTaXplLndpZHRoKTsKKyAgICB2
aWV3cG9ydC5IZWlnaHQgICA9IHN0YXRpY19jYXN0PEZMT0FUPihkZXN0U2l6ZS5oZWlnaHQpOwog
ICAgIHZpZXdwb3J0Lk1pbkRlcHRoID0gMC4wZjsKICAgICB2aWV3cG9ydC5NYXhEZXB0aCA9IDEu
MGY7CiAgICAgZGV2aWNlQ29udGV4dC0+UlNTZXRWaWV3cG9ydHMoMSwgJnZpZXdwb3J0KTsKQEAg
LTEwMTgsNyArMTQyMyw3IEBACiAgICAgLy8gVW5iaW5kIHRleHR1cmVzIGFuZCByZW5kZXIgdGFy
Z2V0cyBhbmQgdmVydGV4IGJ1ZmZlcgogICAgIHN0YXRlTWFuYWdlci0+c2V0U2hhZGVyUmVzb3Vy
Y2UoZ2w6OlNBTVBMRVJfUElYRUwsIDAsIG51bGxwdHIpOwogCi0gICAgVUlOVCB6ZXJvID0gMDsK
KyAgICBVSU5UIHplcm8gICAgICAgICAgICAgICAgICAgICAgPSAwOwogICAgIElEM0QxMUJ1ZmZl
ciAqY29uc3QgbnVsbEJ1ZmZlciA9IG51bGxwdHI7CiAgICAgZGV2aWNlQ29udGV4dC0+SUFTZXRW
ZXJ0ZXhCdWZmZXJzKDAsIDEsICZudWxsQnVmZmVyLCAmemVybywgJnplcm8pOwogCkBAIC0xMDI3
LDU2ICsxNDMyLDUxIEBACiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAK
LWdsOjpFcnJvciBCbGl0MTE6OmNvcHlEZXB0aFN0ZW5jaWwoSUQzRDExUmVzb3VyY2UgKnNvdXJj
ZSwgdW5zaWduZWQgaW50IHNvdXJjZVN1YnJlc291cmNlLCBjb25zdCBnbDo6Qm94ICZzb3VyY2VB
cmVhLCBjb25zdCBnbDo6RXh0ZW50cyAmc291cmNlU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSUQzRDExUmVzb3VyY2UgKmRlc3QsIHVuc2lnbmVkIGludCBkZXN0U3Vi
cmVzb3VyY2UsIGNvbnN0IGdsOjpCb3ggJmRlc3RBcmVhLCBjb25zdCBnbDo6RXh0ZW50cyAmZGVz
dFNpemUsCitnbDo6RXJyb3IgQmxpdDExOjpjb3B5RGVwdGhTdGVuY2lsKGNvbnN0IFRleHR1cmVI
ZWxwZXIxMSAmc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgc291cmNlU3VicmVzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpCb3ggJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzb3VyY2VTaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXh0dXJlSGVscGVyMTEgJmRlc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkZXN0U3VicmVzb3Vy
Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmRl
c3RBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0
ZW50cyAmZGVzdFNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpSZWN0YW5nbGUgKnNjaXNzb3IpCiB7Ci0gICAgcmV0dXJuIGNvcHlEZXB0aFN0ZW5jaWwo
c291cmNlLCBzb3VyY2VTdWJyZXNvdXJjZSwgc291cmNlQXJlYSwgc291cmNlU2l6ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZXN0LCBkZXN0U3VicmVzb3VyY2UsIGRlc3RBcmVhLCBk
ZXN0U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lzc29yLCBmYWxzZSk7Cisg
ICAgcmV0dXJuIGNvcHlEZXB0aFN0ZW5jaWxJbXBsKHNvdXJjZSwgc291cmNlU3VicmVzb3VyY2Us
IHNvdXJjZUFyZWEsIHNvdXJjZVNpemUsIGRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlc3RTdWJyZXNvdXJjZSwgZGVzdEFyZWEsIGRlc3RTaXplLCBzY2lzc29yLCBmYWxz
ZSk7CiB9CiAKLWdsOjpFcnJvciBCbGl0MTE6OmNvcHlEZXB0aFN0ZW5jaWwoSUQzRDExUmVzb3Vy
Y2UgKnNvdXJjZSwgdW5zaWduZWQgaW50IHNvdXJjZVN1YnJlc291cmNlLCBjb25zdCBnbDo6Qm94
ICZzb3VyY2VBcmVhLCBjb25zdCBnbDo6RXh0ZW50cyAmc291cmNlU2l6ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSUQzRDExUmVzb3VyY2UgKmRlc3QsIHVuc2lnbmVkIGlu
dCBkZXN0U3VicmVzb3VyY2UsIGNvbnN0IGdsOjpCb3ggJmRlc3RBcmVhLCBjb25zdCBnbDo6RXh0
ZW50cyAmZGVzdFNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpSZWN0YW5nbGUgKnNjaXNzb3IsIGJvb2wgc3RlbmNpbE9ubHkpCitnbDo6RXJyb3IgQmxp
dDExOjpjb3B5RGVwdGhTdGVuY2lsSW1wbChjb25zdCBUZXh0dXJlSGVscGVyMTEgJnNvdXJjZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzb3Vy
Y2VTdWJyZXNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpCb3ggJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc291cmNlU2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRleHR1cmVIZWxwZXIxMSAmZGVzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkZXN0U3VicmVz
b3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
Qm94ICZkZXN0QXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpFeHRlbnRzICZkZXN0U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgKnNjaXNzb3IsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIHN0ZW5jaWxPbmx5KQogewotICAgIGdsOjpFcnJv
ciBlcnJvciA9IGluaXRSZXNvdXJjZXMoKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBhdXRvIHNyY0RYR0lGb3JtYXQg
ICAgICAgICA9IHNvdXJjZS5nZXRGb3JtYXQoKTsKKyAgICBjb25zdCBhdXRvICZzcmNTaXplSW5m
byAgICA9IGQzZDExOjpHZXREWEdJRm9ybWF0U2l6ZUluZm8oc3JjRFhHSUZvcm1hdCk7CisgICAg
dW5zaWduZWQgaW50IHNyY1BpeGVsU2l6ZSAgPSBzcmNTaXplSW5mby5waXhlbEJ5dGVzOworICAg
IHVuc2lnbmVkIGludCBjb3B5T2Zmc2V0ICAgID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgY29weVNp
emUgICAgICA9IHNyY1BpeGVsU2l6ZTsKKyAgICBhdXRvIGRlc3REWEdJRm9ybWF0ICAgICAgICA9
IGRlc3QuZ2V0Rm9ybWF0KCk7CisgICAgY29uc3QgYXV0byAmZGVzdFNpemVJbmZvICAgPSBkM2Qx
MTo6R2V0RFhHSUZvcm1hdFNpemVJbmZvKGRlc3REWEdJRm9ybWF0KTsKKyAgICB1bnNpZ25lZCBp
bnQgZGVzdFBpeGVsU2l6ZSA9IGRlc3RTaXplSW5mby5waXhlbEJ5dGVzOwogCi0gICAgSUQzRDEx
RGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwotICAgIElEM0QxMURldmlj
ZUNvbnRleHQgKmRldmljZUNvbnRleHQgPSBtUmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKTsK
KyAgICBBU1NFUlQoc3JjRFhHSUZvcm1hdCA9PSBkZXN0RFhHSUZvcm1hdCB8fCBkZXN0RFhHSUZv
cm1hdCA9PSBEWEdJX0ZPUk1BVF9SMzJfVFlQRUxFU1MpOwogCi0gICAgSUQzRDExUmVzb3VyY2Ug
KnNvdXJjZVN0YWdpbmcgPSBDcmVhdGVTdGFnaW5nVGV4dHVyZShkZXZpY2UsIGRldmljZUNvbnRl
eHQsIHNvdXJjZSwgc291cmNlU3VicmVzb3VyY2UsIHNvdXJjZVNpemUsIEQzRDExX0NQVV9BQ0NF
U1NfUkVBRCk7Ci0gICAgLy8gSEFDSzogQ3JlYXRlIHRoZSBkZXN0aW5hdGlvbiBzdGFnaW5nIGJ1
ZmZlciBhcyBhIHJlYWQvd3JpdGUgdGV4dHVyZSBzbyBJRDNEMTFEZXZpY0NvbnRleHQ6OlVwZGF0
ZVN1YnJlc291cmNlIGNhbiBiZSBjYWxsZWQKLSAgICAvLyAgICAgICB1c2luZyBpdCdzIG1hcHBl
ZCBkYXRhIGFzIGEgc291cmNlCi0gICAgSUQzRDExUmVzb3VyY2UgKmRlc3RTdGFnaW5nID0gQ3Jl
YXRlU3RhZ2luZ1RleHR1cmUoZGV2aWNlLCBkZXZpY2VDb250ZXh0LCBkZXN0LCBkZXN0U3VicmVz
b3VyY2UsIGRlc3RTaXplLCBEM0QxMV9DUFVfQUNDRVNTX1JFQUQgfCBEM0QxMV9DUFVfQUNDRVNT
X1dSSVRFKTsKLQotICAgIGlmICghc291cmNlU3RhZ2luZyB8fCAhZGVzdFN0YWdpbmcpCi0gICAg
ewotICAgICAgICBTYWZlUmVsZWFzZShzb3VyY2VTdGFnaW5nKTsKLSAgICAgICAgU2FmZVJlbGVh
c2UoZGVzdFN0YWdpbmcpOwotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1P
UlksICJGYWlsZWQgdG8gY3JlYXRlIGludGVybmFsIHN0YWdpbmcgdGV4dHVyZXMgZm9yIGRlcHRo
IHN0ZW5jaWwgYmxpdC4iKTsKLSAgICB9Ci0KLSAgICBEWEdJX0ZPUk1BVCBmb3JtYXQgPSBHZXRU
ZXh0dXJlRm9ybWF0KHNvdXJjZSk7Ci0gICAgQVNTRVJUKGZvcm1hdCA9PSBHZXRUZXh0dXJlRm9y
bWF0KGRlc3QpKTsKLQotICAgIGNvbnN0IGQzZDExOjpEWEdJRm9ybWF0U2l6ZSAmZHhnaUZvcm1h
dFNpemVJbmZvID0gZDNkMTE6OkdldERYR0lGb3JtYXRTaXplSW5mbyhmb3JtYXQpOwotICAgIHVu
c2lnbmVkIGludCBwaXhlbFNpemUgICAgICAgICAgICAgICAgICAgICAgICAgID0gZHhnaUZvcm1h
dFNpemVJbmZvLnBpeGVsQnl0ZXM7Ci0gICAgdW5zaWduZWQgaW50IGNvcHlPZmZzZXQgPSAwOwot
ICAgIHVuc2lnbmVkIGludCBjb3B5U2l6ZSA9IHBpeGVsU2l6ZTsKICAgICBpZiAoc3RlbmNpbE9u
bHkpCiAgICAgewotICAgICAgICBjb25zdCBkM2QxMTo6RFhHSUZvcm1hdCAmZHhnaUZvcm1hdElu
Zm8gPSBkM2QxMTo6R2V0RFhHSUZvcm1hdEluZm8oZm9ybWF0KTsKKyAgICAgICAgY29uc3QgYXV0
byAmc3JjRm9ybWF0ID0gc291cmNlLmdldEZvcm1hdFNldCgpLmZvcm1hdDsKIAogICAgICAgICAv
LyBTdGVuY2lsIGNoYW5uZWwgc2hvdWxkIGJlIHJpZ2h0IGFmdGVyIHRoZSBkZXB0aCBjaGFubmVs
LiBTb21lIHZpZXdzIHRvIGRlcHRoL3N0ZW5jaWwKICAgICAgICAgLy8gcmVzb3VyY2VzIGhhdmUg
cmVkIGNoYW5uZWwgZm9yIGRlcHRoLCBpbiB3aGljaCBjYXNlIHRoZSBkZXB0aCBjaGFubmVsIGJp
dCB3aWR0aCBpcyBpbgogICAgICAgICAvLyByZWRCaXRzLgotICAgICAgICBBU1NFUlQoKGR4Z2lG
b3JtYXRJbmZvLnJlZEJpdHMgIT0gMCkgIT0gKGR4Z2lGb3JtYXRJbmZvLmRlcHRoQml0cyAhPSAw
KSk7Ci0gICAgICAgIEdMdWludCBkZXB0aEJpdHMgPSBkeGdpRm9ybWF0SW5mby5yZWRCaXRzICsg
ZHhnaUZvcm1hdEluZm8uZGVwdGhCaXRzOworICAgICAgICBBU1NFUlQoKHNyY0Zvcm1hdC5yZWRC
aXRzICE9IDApICE9IChzcmNGb3JtYXQuZGVwdGhCaXRzICE9IDApKTsKKyAgICAgICAgR0x1aW50
IGRlcHRoQml0cyA9IHNyY0Zvcm1hdC5yZWRCaXRzICsgc3JjRm9ybWF0LmRlcHRoQml0czsKICAg
ICAgICAgLy8gS25vd24gZm9ybWF0cyBoYXZlIGVpdGhlciAyNCBvciAzMiBiaXRzIG9mIGRlcHRo
LgogICAgICAgICBBU1NFUlQoZGVwdGhCaXRzID09IDI0IHx8IGRlcHRoQml0cyA9PSAzMik7CiAg
ICAgICAgIGNvcHlPZmZzZXQgPSBkZXB0aEJpdHMgLyA4OwpAQCAtMTA4NSwxMjMgKzE0ODUsMTc0
IEBACiAgICAgICAgIGNvcHlTaXplID0gMTsKICAgICB9CiAKKyAgICBpZiAoc3JjRFhHSUZvcm1h
dCAhPSBkZXN0RFhHSUZvcm1hdCkKKyAgICB7CisgICAgICAgIGlmIChzcmNEWEdJRm9ybWF0ID09
IERYR0lfRk9STUFUX1IyNEc4X1RZUEVMRVNTKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NF
UlQoc291cmNlQXJlYSA9PSBkZXN0QXJlYSAmJiBzb3VyY2VTaXplID09IGRlc3RTaXplICYmIHNj
aXNzb3IgPT0gbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gY29weUFuZENvbnZlcnQoc291
cmNlLCBzb3VyY2VTdWJyZXNvdXJjZSwgc291cmNlQXJlYSwgc291cmNlU2l6ZSwgZGVzdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0U3VicmVzb3VyY2UsIGRlc3RBcmVh
LCBkZXN0U2l6ZSwgc2Npc3NvciwgY29weU9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb3B5T2Zmc2V0LCBjb3B5U2l6ZSwgc3JjUGl4ZWxTaXplLCBkZXN0UGl4ZWxT
aXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJsaXREMjRTOFRvRDMyRik7
CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHNyY0RYR0lGb3JtYXQgPT0gRFhHSV9GT1JNQVRf
UjMyRzhYMjRfVFlQRUxFU1MpOworICAgICAgICByZXR1cm4gY29weUFuZENvbnZlcnQoc291cmNl
LCBzb3VyY2VTdWJyZXNvdXJjZSwgc291cmNlQXJlYSwgc291cmNlU2l6ZSwgZGVzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RTdWJyZXNvdXJjZSwgZGVzdEFyZWEsIGRlc3RT
aXplLCBzY2lzc29yLCBjb3B5T2Zmc2V0LCBjb3B5T2Zmc2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29weVNpemUsIHNyY1BpeGVsU2l6ZSwgZGVzdFBpeGVsU2l6ZSwgQmxpdEQz
MkZTOFRvRDMyRik7CisgICAgfQorCisgICAgcmV0dXJuIGNvcHlBbmRDb252ZXJ0KHNvdXJjZSwg
c291cmNlU3VicmVzb3VyY2UsIHNvdXJjZUFyZWEsIHNvdXJjZVNpemUsIGRlc3QsIGRlc3RTdWJy
ZXNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdEFyZWEsIGRlc3RTaXplLCBz
Y2lzc29yLCBjb3B5T2Zmc2V0LCBjb3B5T2Zmc2V0LCBjb3B5U2l6ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3JjUGl4ZWxTaXplLCBkZXN0UGl4ZWxTaXplLCBTdHJldGNoZWRCbGl0TmVh
cmVzdCk7Cit9CisKK2dsOjpFcnJvciBCbGl0MTE6OmNvcHlBbmRDb252ZXJ0SW1wbChjb25zdCBU
ZXh0dXJlSGVscGVyMTEgJnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgc291cmNlU3VicmVzb3VyY2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmc291cmNlQXJlYSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc291cmNlU2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXh0dXJlSGVscGVy
MTEgJmRlc3RTdGFnaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpCb3ggJmRlc3RBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpFeHRlbnRzICZkZXN0U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICpzY2lzc29yLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZWFkT2Zmc2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB3cml0ZU9mZnNldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY29weVNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNyY1BpeGVsU3RyaWRlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXN0UGl4ZWxTdHJpZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmxpdENvbnZlcnRGdW5jdGlvbiAqY29u
dmVydEZ1bmN0aW9uKQoreworICAgIEFOR0xFX1RSWShpbml0UmVzb3VyY2VzKCkpOworCisgICAg
SUQzRDExRGV2aWNlICpkZXZpY2UgICAgICAgICAgICAgICA9IG1SZW5kZXJlci0+Z2V0RGV2aWNl
KCk7CisgICAgSUQzRDExRGV2aWNlQ29udGV4dCAqZGV2aWNlQ29udGV4dCA9IG1SZW5kZXJlci0+
Z2V0RGV2aWNlQ29udGV4dCgpOworCisgICAgVGV4dHVyZUhlbHBlcjExIHNvdXJjZVN0YWdpbmc7
CisgICAgQU5HTEVfVFJZX1JFU1VMVChDcmVhdGVTdGFnaW5nVGV4dHVyZShHTF9URVhUVVJFXzJE
LCBzb3VyY2UuZ2V0Rm9ybWF0U2V0KCksIHNvdXJjZVNpemUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTdGFnaW5nQWNjZXNzOjpSRUFELCBkZXZpY2UpLAorICAg
ICAgICAgICAgICAgICAgICAgc291cmNlU3RhZ2luZyk7CisKKyAgICBkZXZpY2VDb250ZXh0LT5D
b3B5U3VicmVzb3VyY2VSZWdpb24oc291cmNlU3RhZ2luZy5nZXRSZXNvdXJjZSgpLCAwLCAwLCAw
LCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UuZ2V0
UmVzb3VyY2UoKSwgc291cmNlU3VicmVzb3VyY2UsIG51bGxwdHIpOworCiAgICAgRDNEMTFfTUFQ
UEVEX1NVQlJFU09VUkNFIHNvdXJjZU1hcHBpbmc7Ci0gICAgSFJFU1VMVCByZXN1bHQgPSBkZXZp
Y2VDb250ZXh0LT5NYXAoc291cmNlU3RhZ2luZywgMCwgRDNEMTFfTUFQX1JFQUQsIDAsICZzb3Vy
Y2VNYXBwaW5nKTsKKyAgICBIUkVTVUxUIHJlc3VsdCA9CisgICAgICAgIGRldmljZUNvbnRleHQt
Pk1hcChzb3VyY2VTdGFnaW5nLmdldFJlc291cmNlKCksIDAsIEQzRDExX01BUF9SRUFELCAwLCAm
c291cmNlTWFwcGluZyk7CiAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgIHsKLSAgICAgICAg
U2FmZVJlbGVhc2Uoc291cmNlU3RhZ2luZyk7Ci0gICAgICAgIFNhZmVSZWxlYXNlKGRlc3RTdGFn
aW5nKTsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVk
IHRvIG1hcCBpbnRlcm5hbCBzb3VyY2Ugc3RhZ2luZyB0ZXh0dXJlIGZvciBkZXB0aCBzdGVuY2ls
IGJsaXQsIEhSRVNVTFQ6IDB4JVguIiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGdsOjpFcnJv
cigKKyAgICAgICAgICAgIEdMX09VVF9PRl9NRU1PUlksCisgICAgICAgICAgICAiRmFpbGVkIHRv
IG1hcCBpbnRlcm5hbCBzb3VyY2Ugc3RhZ2luZyB0ZXh0dXJlIGZvciBkZXB0aCBzdGVuY2lsIGJs
aXQsIEhSRVNVTFQ6IDB4JVguIiwKKyAgICAgICAgICAgIHJlc3VsdCk7CiAgICAgfQogCiAgICAg
RDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIGRlc3RNYXBwaW5nOwotICAgIHJlc3VsdCA9IGRldmlj
ZUNvbnRleHQtPk1hcChkZXN0U3RhZ2luZywgMCwgRDNEMTFfTUFQX1dSSVRFLCAwLCAmZGVzdE1h
cHBpbmcpOworICAgIHJlc3VsdCA9IGRldmljZUNvbnRleHQtPk1hcChkZXN0U3RhZ2luZy5nZXRS
ZXNvdXJjZSgpLCAwLCBEM0QxMV9NQVBfV1JJVEUsIDAsICZkZXN0TWFwcGluZyk7CiAgICAgaWYg
KEZBSUxFRChyZXN1bHQpKQogICAgIHsKLSAgICAgICAgZGV2aWNlQ29udGV4dC0+VW5tYXAoc291
cmNlU3RhZ2luZywgMCk7Ci0gICAgICAgIFNhZmVSZWxlYXNlKHNvdXJjZVN0YWdpbmcpOwotICAg
ICAgICBTYWZlUmVsZWFzZShkZXN0U3RhZ2luZyk7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBtYXAgaW50ZXJuYWwgZGVzdGluYXRpb24gc3Rh
Z2luZyB0ZXh0dXJlIGZvciBkZXB0aCBzdGVuY2lsIGJsaXQsIEhSRVNVTFQ6IDB4JVguIiwgcmVz
dWx0KTsKKyAgICAgICAgZGV2aWNlQ29udGV4dC0+VW5tYXAoc291cmNlU3RhZ2luZy5nZXRSZXNv
dXJjZSgpLCAwKTsKKyAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gbWFwIGludGVybmFsIGRlc3RpbmF0
aW9uIHN0YWdpbmcgdGV4dHVyZSBmb3IgZGVwdGggc3RlbmNpbCAiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgImJsaXQsIEhSRVNVTFQ6IDB4JVguIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHQpOwogICAgIH0KIAotICAgIGdsOjpSZWN0YW5nbGUgY2xpcHBlZERlc3RBcmVhKGRl
c3RBcmVhLngsIGRlc3RBcmVhLnksIGRlc3RBcmVhLndpZHRoLCBkZXN0QXJlYS5oZWlnaHQpOwot
CiAgICAgLy8gQ2xpcCBkZXN0IGFyZWEgdG8gdGhlIGRlc3RpbmF0aW9uIHNpemUKLSAgICBnbDo6
Q2xpcFJlY3RhbmdsZShjbGlwcGVkRGVzdEFyZWEsIGdsOjpSZWN0YW5nbGUoMCwgMCwgZGVzdFNp
emUud2lkdGgsIGRlc3RTaXplLmhlaWdodCksICZjbGlwcGVkRGVzdEFyZWEpOworICAgIGdsOjpS
ZWN0YW5nbGUgY2xpcFJlY3QgPSBnbDo6UmVjdGFuZ2xlKDAsIDAsIGRlc3RTaXplLndpZHRoLCBk
ZXN0U2l6ZS5oZWlnaHQpOwogCiAgICAgLy8gQ2xpcCBkZXN0IGFyZWEgdG8gdGhlIHNjaXNzb3IK
ICAgICBpZiAoc2Npc3NvcikKICAgICB7Ci0gICAgICAgIGdsOjpDbGlwUmVjdGFuZ2xlKGNsaXBw
ZWREZXN0QXJlYSwgKnNjaXNzb3IsICZjbGlwcGVkRGVzdEFyZWEpOworICAgICAgICBnbDo6Q2xp
cFJlY3RhbmdsZShjbGlwUmVjdCwgKnNjaXNzb3IsICZjbGlwUmVjdCk7CiAgICAgfQogCi0gICAg
Ly8gRGV0ZXJtaW5lIGlmIGVudGlyZSByb3dzIGNhbiBiZSBjb3BpZWQgYXQgb25jZSBpbnN0ZWFk
IG9mIGVhY2ggaW5kaXZpZHVhbCBwaXhlbCwgcmVxdWlyZXMgdGhhdCB0aGVyZSBpcwotICAgIC8v
IG5vIG91dCBvZiBib3VuZHMgbG9va3VwcyByZXF1aXJlZCwgdGhlIGVudGlyZSBwaXhlbCBpcyBj
b3BpZWQgYW5kIG5vIHN0cmV0Y2hpbmcKLSAgICBib29sIHdob2xlUm93Q29weSA9IHNvdXJjZUFy
ZWEud2lkdGggPT0gY2xpcHBlZERlc3RBcmVhLndpZHRoICYmCi0gICAgICAgICAgICAgICAgICAg
ICAgICBzb3VyY2VBcmVhLnggPj0gMCAmJiBzb3VyY2VBcmVhLnggKyBzb3VyY2VBcmVhLndpZHRo
IDw9IHNvdXJjZVNpemUud2lkdGggJiYKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlTaXpl
ID09IHBpeGVsU2l6ZTsKKyAgICBjb252ZXJ0RnVuY3Rpb24oc291cmNlQXJlYSwgZGVzdEFyZWEs
IGNsaXBSZWN0LCBzb3VyY2VTaXplLCBzb3VyY2VNYXBwaW5nLlJvd1BpdGNoLAorICAgICAgICAg
ICAgICAgICAgICBkZXN0TWFwcGluZy5Sb3dQaXRjaCwgcmVhZE9mZnNldCwgd3JpdGVPZmZzZXQs
IGNvcHlTaXplLCBzcmNQaXhlbFN0cmlkZSwKKyAgICAgICAgICAgICAgICAgICAgZGVzdFBpeGVs
U3RyaWRlLCBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90ICo+KHNvdXJjZU1hcHBpbmcucERhdGEp
LAorICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50OF90ICo+KGRlc3RNYXBwaW5n
LnBEYXRhKSk7CiAKLSAgICBmb3IgKGludCB5ID0gY2xpcHBlZERlc3RBcmVhLnk7IHkgPCBjbGlw
cGVkRGVzdEFyZWEueSArIGNsaXBwZWREZXN0QXJlYS5oZWlnaHQ7IHkrKykKLSAgICB7Ci0gICAg
ICAgIGZsb2F0IHlQZXJjID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHkgLSBkZXN0QXJlYS55KSAvIChk
ZXN0QXJlYS5oZWlnaHQgLSAxKTsKKyAgICBkZXZpY2VDb250ZXh0LT5Vbm1hcChzb3VyY2VTdGFn
aW5nLmdldFJlc291cmNlKCksIDApOworICAgIGRldmljZUNvbnRleHQtPlVubWFwKGRlc3RTdGFn
aW5nLmdldFJlc291cmNlKCksIDApOwogCi0gICAgICAgIC8vIEludGVycG9sYXRlIHVzaW5nIHRo
ZSBvcmlnaW5hbCBzb3VyY2UgcmVjdGFuZ2xlIHRvIGRldGVybWluZSB3aGljaCByb3cgdG8gc2Ft
cGxlIGZyb20gd2hpbGUgY2xhbXBpbmcgdG8gdGhlIGVkZ2VzCi0gICAgICAgIHVuc2lnbmVkIGlu
dCByZWFkUm93ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihnbDo6Y2xhbXAoc291cmNlQXJl
YS55ICsgZmxvb3IoeVBlcmMgKiAoc291cmNlQXJlYS5oZWlnaHQgLSAxKSArIDAuNWYpLCAwLCBz
b3VyY2VTaXplLmhlaWdodCAtIDEpKTsKLSAgICAgICAgdW5zaWduZWQgaW50IHdyaXRlUm93ID0g
eTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKK30KIAotICAgICAgICBpZiAod2hvbGVSb3dD
b3B5KQotICAgICAgICB7Ci0gICAgICAgICAgICB2b2lkICpzb3VyY2VSb3cgPSByZWludGVycHJl
dF9jYXN0PGNoYXIqPihzb3VyY2VNYXBwaW5nLnBEYXRhKSArCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWFkUm93ICogc291cmNlTWFwcGluZy5Sb3dQaXRjaCArCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzb3VyY2VBcmVhLnggKiBwaXhlbFNpemU7CitnbDo6RXJyb3Ig
QmxpdDExOjpjb3B5QW5kQ29udmVydChjb25zdCBUZXh0dXJlSGVscGVyMTEgJnNvdXJjZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VTdWJyZXNv
dXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJnNv
dXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0
ZW50cyAmc291cmNlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRleHR1cmVIZWxwZXIxMSAmZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBkZXN0U3VicmVzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6Qm94ICZkZXN0QXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZkZXN0U2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgKnNjaXNzb3IsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVhZE9mZnNldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCB3cml0ZU9mZnNldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBjb3B5U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBzcmNQaXhlbFN0cmlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBkZXN0UGl4ZWxTdHJpZGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBCbGl0Q29udmVydEZ1bmN0aW9uICpjb252ZXJ0RnVuY3Rpb24pCit7CisgICAg
QU5HTEVfVFJZKGluaXRSZXNvdXJjZXMoKSk7CiAKLSAgICAgICAgICAgIHZvaWQgKmRlc3RSb3cg
PSByZWludGVycHJldF9jYXN0PGNoYXIqPihkZXN0TWFwcGluZy5wRGF0YSkgKwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdyaXRlUm93ICogZGVzdE1hcHBpbmcuUm93UGl0Y2ggKwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RBcmVhLnggKiBwaXhlbFNpemU7CisgICAgSUQz
RDExRGV2aWNlICpkZXZpY2UgICAgICAgICAgICAgICA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7
CisgICAgSUQzRDExRGV2aWNlQ29udGV4dCAqZGV2aWNlQ29udGV4dCA9IG1SZW5kZXJlci0+Z2V0
RGV2aWNlQ29udGV4dCgpOwogCi0gICAgICAgICAgICBtZW1jcHkoZGVzdFJvdywgc291cmNlUm93
LCBwaXhlbFNpemUgKiBkZXN0QXJlYS53aWR0aCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQot
ICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKGludCB4ID0gY2xpcHBlZERlc3RBcmVhLng7IHgg
PCBjbGlwcGVkRGVzdEFyZWEueCArIGNsaXBwZWREZXN0QXJlYS53aWR0aDsgeCsrKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGZsb2F0IHhQZXJjID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHggLSBkZXN0QXJlYS54KSAvIChkZXN0QXJlYS53aWR0aCAtIDEpOworICAgIC8vIEhBQ0s6IENy
ZWF0ZSB0aGUgZGVzdGluYXRpb24gc3RhZ2luZyBidWZmZXIgYXMgYSByZWFkL3dyaXRlIHRleHR1
cmUgc28KKyAgICAvLyBJRDNEMTFEZXZpY0NvbnRleHQ6OlVwZGF0ZVN1YnJlc291cmNlIGNhbiBi
ZSBjYWxsZWQKKyAgICAvLyAgICAgICB1c2luZyBpdCdzIG1hcHBlZCBkYXRhIGFzIGEgc291cmNl
CisgICAgVGV4dHVyZUhlbHBlcjExIGRlc3RTdGFnaW5nOworICAgIEFOR0xFX1RSWV9SRVNVTFQo
Q3JlYXRlU3RhZ2luZ1RleHR1cmUoR0xfVEVYVFVSRV8yRCwgZGVzdC5nZXRGb3JtYXRTZXQoKSwg
ZGVzdFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFn
aW5nQWNjZXNzOjpSRUFEX1dSSVRFLCBkZXZpY2UpLAorICAgICAgICAgICAgICAgICAgICAgZGVz
dFN0YWdpbmcpOwogCi0gICAgICAgICAgICAgICAgLy8gSW50ZXJwb2xhdGUgdGhlIG9yaWdpbmFs
IHNvdXJjZSByZWN0YW5nbGUgdG8gZGV0ZXJtaW5lIHdoaWNoIGNvbHVtbiB0byBzYW1wbGUgZnJv
bSB3aGlsZSBjbGFtcGluZyB0byB0aGUgZWRnZXMKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgcmVhZENvbHVtbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oZ2w6OmNsYW1wKHNvdXJj
ZUFyZWEueCArIGZsb29yKHhQZXJjICogKHNvdXJjZUFyZWEud2lkdGggLSAxKSArIDAuNWYpLCAw
LCBzb3VyY2VTaXplLndpZHRoIC0gMSkpOwotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB3
cml0ZUNvbHVtbiA9IHg7CisgICAgZGV2aWNlQ29udGV4dC0+Q29weVN1YnJlc291cmNlUmVnaW9u
KGRlc3RTdGFnaW5nLmdldFJlc291cmNlKCksIDAsIDAsIDAsIDAsIGRlc3QuZ2V0UmVzb3VyY2Uo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFN1YnJlc291
cmNlLCBudWxscHRyKTsKIAotICAgICAgICAgICAgICAgIHZvaWQgKnNvdXJjZVBpeGVsID0gcmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4oc291cmNlTWFwcGluZy5wRGF0YSkgKwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVhZFJvdyAqIHNvdXJjZU1hcHBpbmcuUm93UGl0Y2gg
KwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZENvbHVtbiAqIHBpeGVs
U2l6ZSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5T2Zmc2V0Owor
ICAgIGNvcHlBbmRDb252ZXJ0SW1wbChzb3VyY2UsIHNvdXJjZVN1YnJlc291cmNlLCBzb3VyY2VB
cmVhLCBzb3VyY2VTaXplLCBkZXN0U3RhZ2luZywgZGVzdEFyZWEsCisgICAgICAgICAgICAgICAg
ICAgICAgIGRlc3RTaXplLCBzY2lzc29yLCByZWFkT2Zmc2V0LCB3cml0ZU9mZnNldCwgY29weVNp
emUsIHNyY1BpeGVsU3RyaWRlLAorICAgICAgICAgICAgICAgICAgICAgICBkZXN0UGl4ZWxTdHJp
ZGUsIGNvbnZlcnRGdW5jdGlvbik7CiAKLSAgICAgICAgICAgICAgICB2b2lkICpkZXN0UGl4ZWwg
PSByZWludGVycHJldF9jYXN0PGNoYXIqPihkZXN0TWFwcGluZy5wRGF0YSkgKwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlUm93ICogZGVzdE1hcHBpbmcuUm93UGl0Y2gg
KwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlQ29sdW1uICogcGl4ZWxT
aXplICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5T2Zmc2V0OwotCi0g
ICAgICAgICAgICAgICAgbWVtY3B5KGRlc3RQaXhlbCwgc291cmNlUGl4ZWwsIGNvcHlTaXplKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgIC8vIFdvcmsgYXJvdW5kIHRpbWVvdXRzL1RE
UnMgaW4gb2xkZXIgTlZJRElBIGRyaXZlcnMuCisgICAgaWYgKG1SZW5kZXJlci0+Z2V0V29ya2Fy
b3VuZHMoKS5kZXB0aFN0ZW5jaWxCbGl0RXh0cmFDb3B5KQorICAgIHsKKyAgICAgICAgRDNEMTFf
TUFQUEVEX1NVQlJFU09VUkNFIG1hcHBlZDsKKyAgICAgICAgZGV2aWNlQ29udGV4dC0+TWFwKGRl
c3RTdGFnaW5nLmdldFJlc291cmNlKCksIDAsIEQzRDExX01BUF9SRUFELCAwLCAmbWFwcGVkKTsK
KyAgICAgICAgZGV2aWNlQ29udGV4dC0+VXBkYXRlU3VicmVzb3VyY2UoZGVzdC5nZXRSZXNvdXJj
ZSgpLCBkZXN0U3VicmVzb3VyY2UsIG51bGxwdHIsIG1hcHBlZC5wRGF0YSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGVkLlJvd1BpdGNoLCBtYXBwZWQuRGVw
dGhQaXRjaCk7CisgICAgICAgIGRldmljZUNvbnRleHQtPlVubWFwKGRlc3RTdGFnaW5nLmdldFJl
c291cmNlKCksIDApOwogICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBkZXZpY2VDb250
ZXh0LT5Db3B5U3VicmVzb3VyY2VSZWdpb24oZGVzdC5nZXRSZXNvdXJjZSgpLCBkZXN0U3VicmVz
b3VyY2UsIDAsIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkZXN0U3RhZ2luZy5nZXRSZXNvdXJjZSgpLCAwLCBudWxscHRyKTsKKyAgICB9CiAKLSAg
ICAvLyBIQUNLOiBVc2UgSUQzRDExRGV2aWNDb250ZXh0OjpVcGRhdGVTdWJyZXNvdXJjZSB3aGlj
aCBjYXVzZXMgYW4gZXh0cmEgY29weSBjb21wYXJlZCB0byBJRDNEMTFEZXZpY0NvbnRleHQ6OkNv
cHlTdWJyZXNvdXJjZVJlZ2lvbgotICAgIC8vICAgICAgIGFjY29yZGluZyB0byBNU0ROLgotICAg
IGRldmljZUNvbnRleHQtPlVwZGF0ZVN1YnJlc291cmNlKGRlc3QsIGRlc3RTdWJyZXNvdXJjZSwg
bnVsbHB0ciwgZGVzdE1hcHBpbmcucERhdGEsIGRlc3RNYXBwaW5nLlJvd1BpdGNoLCBkZXN0TWFw
cGluZy5EZXB0aFBpdGNoKTsKLQotICAgIGRldmljZUNvbnRleHQtPlVubWFwKHNvdXJjZVN0YWdp
bmcsIDApOwotICAgIGRldmljZUNvbnRleHQtPlVubWFwKGRlc3RTdGFnaW5nLCAwKTsKLQotICAg
IC8vIFRPRE86IERldGVybWluZSB3aHkgdGhpcyBjYWxsIHRvIElEM0QxMURldmljQ29udGV4dDo6
Q29weVN1YnJlc291cmNlUmVnaW9uIGNhdXNlcyBhIFREUiB0aW1lb3V0IG9uIHNvbWUKLSAgICAv
LyAgICAgICBzeXN0ZW1zIHdoZW4gY2FsbGVkIHJlcGVhdGVkbHkuCi0gICAgLy8gZGV2aWNlQ29u
dGV4dC0+Q29weVN1YnJlc291cmNlUmVnaW9uKGRlc3QsIGRlc3RTdWJyZXNvdXJjZSwgMCwgMCwg
MCwgZGVzdFN0YWdpbmcsIDAsIG51bGxwdHIpOwotCi0gICAgU2FmZVJlbGVhc2Uoc291cmNlU3Rh
Z2luZyk7Ci0gICAgU2FmZVJlbGVhc2UoZGVzdFN0YWdpbmcpOwotCi0gICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLXZvaWQg
QmxpdDExOjphZGRCbGl0U2hhZGVyVG9NYXAoQmxpdFNoYWRlclR5cGUgYmxpdFNoYWRlclR5cGUs
IFNoYWRlckRpbWVuc2lvbiBkaW1lbnNpb24sIElEM0QxMVBpeGVsU2hhZGVyICpwcykKK3ZvaWQg
QmxpdDExOjphZGRCbGl0U2hhZGVyVG9NYXAoQmxpdFNoYWRlclR5cGUgYmxpdFNoYWRlclR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlckRpbWVuc2lvbiBkaW1lbnNp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMVBpeGVsU2hhZGVyICpw
cykKIHsKICAgICBBU1NFUlQobUJsaXRTaGFkZXJNYXAuZmluZChibGl0U2hhZGVyVHlwZSkgPT0g
bUJsaXRTaGFkZXJNYXAuZW5kKCkpOwogICAgIEFTU0VSVChwcyk7CiAKICAgICBTaGFkZXIgc2hh
ZGVyOwotICAgIHNoYWRlci5kaW1lbnNpb24gPSBkaW1lbnNpb247CisgICAgc2hhZGVyLmRpbWVu
c2lvbiAgID0gZGltZW5zaW9uOwogICAgIHNoYWRlci5waXhlbFNoYWRlciA9IHBzOwogCiAgICAg
bUJsaXRTaGFkZXJNYXBbYmxpdFNoYWRlclR5cGVdID0gc2hhZGVyOwogfQogCi12b2lkIEJsaXQx
MTo6YWRkU3dpenpsZVNoYWRlclRvTWFwKFN3aXp6bGVTaGFkZXJUeXBlIHN3aXp6bGVTaGFkZXJU
eXBlLCBTaGFkZXJEaW1lbnNpb24gZGltZW5zaW9uLCBJRDNEMTFQaXhlbFNoYWRlciAqcHMpCit2
b2lkIEJsaXQxMTo6YWRkU3dpenpsZVNoYWRlclRvTWFwKFN3aXp6bGVTaGFkZXJUeXBlIHN3aXp6
bGVTaGFkZXJUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJE
aW1lbnNpb24gZGltZW5zaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
RDNEMTFQaXhlbFNoYWRlciAqcHMpCiB7CiAgICAgQVNTRVJUKG1Td2l6emxlU2hhZGVyTWFwLmZp
bmQoc3dpenpsZVNoYWRlclR5cGUpID09IG1Td2l6emxlU2hhZGVyTWFwLmVuZCgpKTsKICAgICBB
U1NFUlQocHMpOwogCiAgICAgU2hhZGVyIHNoYWRlcjsKLSAgICBzaGFkZXIuZGltZW5zaW9uID0g
ZGltZW5zaW9uOworICAgIHNoYWRlci5kaW1lbnNpb24gICA9IGRpbWVuc2lvbjsKICAgICBzaGFk
ZXIucGl4ZWxTaGFkZXIgPSBwczsKIAogICAgIG1Td2l6emxlU2hhZGVyTWFwW3N3aXp6bGVTaGFk
ZXJUeXBlXSA9IHNoYWRlcjsKQEAgLTEyMjIsOSArMTY3MywxNSBAQAogICAgIG1Td2l6emxlU2hh
ZGVyTWFwLmNsZWFyKCk7CiB9CiAKLWdsOjpFcnJvciBCbGl0MTE6OmdldEJsaXRTaGFkZXIoR0xl
bnVtIGRlc3RGb3JtYXQsIGJvb2wgaXNTaWduZWQsIFNoYWRlckRpbWVuc2lvbiBkaW1lbnNpb24s
IGNvbnN0IFNoYWRlciAqKnNoYWRlcikKK2dsOjpFcnJvciBCbGl0MTE6OmdldEJsaXRTaGFkZXIo
R0xlbnVtIGRlc3RGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aXNTaWduZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrUHJl
bXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBh
Y2tVbm11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRl
ckRpbWVuc2lvbiBkaW1lbnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFNoYWRlciAqKnNoYWRlcikKIHsKLSAgICBCbGl0U2hhZGVyVHlwZSBibGl0U2hhZGVyVHlw
ZSA9IEdldEJsaXRTaGFkZXJUeXBlKGRlc3RGb3JtYXQsIGlzU2lnbmVkLCBkaW1lbnNpb24pOwor
ICAgIEJsaXRTaGFkZXJUeXBlIGJsaXRTaGFkZXJUeXBlID0gR2V0QmxpdFNoYWRlclR5cGUoZGVz
dEZvcm1hdCwgaXNTaWduZWQsIHVucGFja1ByZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnBhY2tVbm11bHRpcGx5
QWxwaGEsIGRpbWVuc2lvbik7CiAKICAgICBpZiAoYmxpdFNoYWRlclR5cGUgPT0gQkxJVFNIQURF
Ul9JTlZBTElEKQogICAgIHsKQEAgLTEyNDQsMTA1ICsxNzAxLDE5OSBAQAogCiAgICAgc3dpdGNo
IChibGl0U2hhZGVyVHlwZSkKICAgICB7Ci0gICAgICBjYXNlIEJMSVRTSEFERVJfMkRfUkdCQUY6
Ci0gICAgICAgIGFkZEJsaXRTaGFkZXJUb01hcChibGl0U2hhZGVyVHlwZSwgU0hBREVSXzJELCBk
M2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJHQkEyRCwgIkJsaXQxMSAy
RCBSR0JBIHBpeGVsIHNoYWRlciIpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEJMSVRT
SEFERVJfMkRfQkdSQUY6Ci0gICAgICAgIGFkZEJsaXRTaGFkZXJUb01hcChibGl0U2hhZGVyVHlw
ZSwgU0hBREVSXzJELCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJH
QkEyRCwgIkJsaXQxMSAyRCBCR1JBIHBpeGVsIHNoYWRlciIpKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgICBjYXNlIEJMSVRTSEFERVJfMkRfUkdCRjoKLSAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFw
KGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfMkQsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BT
X1Bhc3N0aHJvdWdoUkdCMkQsICJCbGl0MTEgMkQgUkdCIHBpeGVsIHNoYWRlciIpKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgICBjYXNlIEJMSVRTSEFERVJfMkRfUkdGOgotICAgICAgICBhZGRCbGl0
U2hhZGVyVG9NYXAoYmxpdFNoYWRlclR5cGUsIFNIQURFUl8yRCwgZDNkMTE6OkNvbXBpbGVQUyhk
ZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSRzJELCAiQmxpdDExIDJEIFJHIHBpeGVsIHNoYWRlciIp
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEJMSVRTSEFERVJfMkRfUkY6Ci0gICAgICAg
IGFkZEJsaXRTaGFkZXJUb01hcChibGl0U2hhZGVyVHlwZSwgU0hBREVSXzJELCBkM2QxMTo6Q29t
cGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFIyRCwgIkJsaXQxMSAyRCBSIHBpeGVsIHNo
YWRlciIpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEJMSVRTSEFERVJfMkRfQUxQSEE6
Ci0gICAgICAgIGFkZEJsaXRTaGFkZXJUb01hcChibGl0U2hhZGVyVHlwZSwgU0hBREVSXzJELCBk
M2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJHQkEyRCwgIkJsaXQxMSAy
RCBhbHBoYSBwaXhlbCBzaGFkZXIiKSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBCTElU
U0hBREVSXzJEX0xVTUE6Ci0gICAgICAgIGFkZEJsaXRTaGFkZXJUb01hcChibGl0U2hhZGVyVHlw
ZSwgU0hBREVSXzJELCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaEx1
bTJELCAiQmxpdDExIDJEIGx1bSBwaXhlbCBzaGFkZXIiKSk7Ci0gICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSBCTElUU0hBREVSXzJEX0xVTUFBTFBIQToKLSAgICAgICAgYWRkQmxpdFNoYWRlclRv
TWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfMkQsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBn
X1BTX1Bhc3N0aHJvdWdoTHVtQWxwaGEyRCwgIkJsaXQxMSAyRCBsdW1pbmFuY2UgYWxwaGEgcGl4
ZWwgc2hhZGVyIikpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgQkxJVFNIQURFUl8yRF9S
R0JBVUk6Ci0gICAgICAgIGFkZEJsaXRTaGFkZXJUb01hcChibGl0U2hhZGVyVHlwZSwgU0hBREVS
XzJELCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJHQkEyRFVJLCAi
QmxpdDExIDJEIFJHQkEgVUkgcGl4ZWwgc2hhZGVyIikpOwotICAgICAgICBicmVhazsKLSAgICAg
IGNhc2UgQkxJVFNIQURFUl8yRF9SR0JBSToKLSAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFwKGJs
aXRTaGFkZXJUeXBlLCBTSEFERVJfMkQsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bh
c3N0aHJvdWdoUkdCQTJESSwgIkJsaXQxMSAyRCBSR0JBIEkgcGl4ZWwgc2hhZGVyIikpOwotICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgQkxJVFNIQURFUl8yRF9SR0JVSToKLSAgICAgICAgYWRk
QmxpdFNoYWRlclRvTWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfMkQsIGQzZDExOjpDb21waWxl
UFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUkdCMkRVSSwgIkJsaXQxMSAyRCBSR0IgVUkgcGl4
ZWwgc2hhZGVyIikpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgQkxJVFNIQURFUl8yRF9S
R0JJOgotICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRlclR5cGUsIFNIQURFUl8y
RCwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSR0IyREksICJCbGl0
MTEgMkQgUkdCIEkgcGl4ZWwgc2hhZGVyIikpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ug
QkxJVFNIQURFUl8yRF9SR1VJOgotICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRl
clR5cGUsIFNIQURFUl8yRCwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91
Z2hSRzJEVUksICJCbGl0MTEgMkQgUkcgVUkgcGl4ZWwgc2hhZGVyIikpOwotICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgQkxJVFNIQURFUl8yRF9SR0k6Ci0gICAgICAgIGFkZEJsaXRTaGFkZXJU
b01hcChibGl0U2hhZGVyVHlwZSwgU0hBREVSXzJELCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwg
Z19QU19QYXNzdGhyb3VnaFJHMkRJLCAiQmxpdDExIDJEIFJHIEkgcGl4ZWwgc2hhZGVyIikpOwot
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgQkxJVFNIQURFUl8yRF9SVUk6Ci0gICAgICAgIGFk
ZEJsaXRTaGFkZXJUb01hcChibGl0U2hhZGVyVHlwZSwgU0hBREVSXzJELCBkM2QxMTo6Q29tcGls
ZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFIyRFVJLCAiQmxpdDExIDJEIFIgVUkgcGl4ZWwg
c2hhZGVyIikpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgQkxJVFNIQURFUl8yRF9SSToK
LSAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfMkQsIGQz
ZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUjJESSwgIkJsaXQxMSAyRCBS
IEkgcGl4ZWwgc2hhZGVyIikpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgQkxJVFNIQURF
Ul8zRF9SR0JBRjoKLSAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFwKGJsaXRTaGFkZXJUeXBlLCBT
SEFERVJfM0QsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUkdCQTNE
LCAiQmxpdDExIDNEIFJHQkEgcGl4ZWwgc2hhZGVyIikpOwotICAgICAgICBicmVhazsKLSAgICAg
IGNhc2UgQkxJVFNIQURFUl8zRF9SR0JBVUk6Ci0gICAgICAgIGFkZEJsaXRTaGFkZXJUb01hcChi
bGl0U2hhZGVyVHlwZSwgU0hBREVSXzNELCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19Q
YXNzdGhyb3VnaFJHQkEzRFVJLCAiQmxpdDExIDNEIFVJIFJHQkEgcGl4ZWwgc2hhZGVyIikpOwot
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgQkxJVFNIQURFUl8zRF9SR0JBSToKLSAgICAgICAg
YWRkQmxpdFNoYWRlclRvTWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfM0QsIGQzZDExOjpDb21w
aWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUkdCQTNESSwgIkJsaXQxMSAzRCBJIFJHQkEg
cGl4ZWwgc2hhZGVyIikpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgQkxJVFNIQURFUl8z
RF9CR1JBRjoKLSAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFE
RVJfM0QsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUkdCQTNELCAi
QmxpdDExIDNEIEJHUkEgcGl4ZWwgc2hhZGVyIikpOwotICAgICAgICBicmVhazsKLSAgICAgIGNh
c2UgQkxJVFNIQURFUl8zRF9SR0JGOgotICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAoYmxpdFNo
YWRlclR5cGUsIFNIQURFUl8zRCwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Ro
cm91Z2hSR0IzRCwgIkJsaXQxMSAzRCBSR0IgcGl4ZWwgc2hhZGVyIikpOwotICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgQkxJVFNIQURFUl8zRF9SR0JVSToKLSAgICAgICAgYWRkQmxpdFNoYWRl
clRvTWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfM0QsIGQzZDExOjpDb21waWxlUFMoZGV2aWNl
LCBnX1BTX1Bhc3N0aHJvdWdoUkdCM0RVSSwgIkJsaXQxMSAzRCBSR0IgVUkgcGl4ZWwgc2hhZGVy
IikpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgQkxJVFNIQURFUl8zRF9SR0JJOgotICAg
ICAgICBhZGRCbGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRlclR5cGUsIFNIQURFUl8zRCwgZDNkMTE6
OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSR0IzREksICJCbGl0MTEgM0QgUkdC
IEkgcGl4ZWwgc2hhZGVyIikpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgQkxJVFNIQURF
Ul8zRF9SR0Y6Ci0gICAgICAgIGFkZEJsaXRTaGFkZXJUb01hcChibGl0U2hhZGVyVHlwZSwgU0hB
REVSXzNELCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJHM0QsICJC
bGl0MTEgM0QgUkcgcGl4ZWwgc2hhZGVyIikpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ug
QkxJVFNIQURFUl8zRF9SR1VJOgotICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRl
clR5cGUsIFNIQURFUl8zRCwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91
Z2hSRzNEVUksICJCbGl0MTEgM0QgUkcgVUkgcGl4ZWwgc2hhZGVyIikpOwotICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgQkxJVFNIQURFUl8zRF9SR0k6Ci0gICAgICAgIGFkZEJsaXRTaGFkZXJU
b01hcChibGl0U2hhZGVyVHlwZSwgU0hBREVSXzNELCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwg
Z19QU19QYXNzdGhyb3VnaFJHM0RJLCAiQmxpdDExIDNEIFJHIEkgcGl4ZWwgc2hhZGVyIikpOwot
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgQkxJVFNIQURFUl8zRF9SRjoKLSAgICAgICAgYWRk
QmxpdFNoYWRlclRvTWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfM0QsIGQzZDExOjpDb21waWxl
UFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUjNELCAiQmxpdDExIDNEIFIgcGl4ZWwgc2hhZGVy
IikpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgQkxJVFNIQURFUl8zRF9SVUk6Ci0gICAg
ICAgIGFkZEJsaXRTaGFkZXJUb01hcChibGl0U2hhZGVyVHlwZSwgU0hBREVSXzNELCBkM2QxMTo6
Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFIzRFVJLCAiQmxpdDExIDNEIFIgVUkg
cGl4ZWwgc2hhZGVyIikpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgQkxJVFNIQURFUl8z
RF9SSToKLSAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFERVJf
M0QsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUjNESSwgIkJsaXQx
MSAzRCBSIEkgcGl4ZWwgc2hhZGVyIikpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgQkxJ
VFNIQURFUl8zRF9BTFBIQToKLSAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFwKGJsaXRTaGFkZXJU
eXBlLCBTSEFERVJfM0QsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdo
UkdCQTNELCAiQmxpdDExIDNEIGFscGhhIHBpeGVsIHNoYWRlciIpKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgICBjYXNlIEJMSVRTSEFERVJfM0RfTFVNQToKLSAgICAgICAgYWRkQmxpdFNoYWRlclRv
TWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfM0QsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBn
X1BTX1Bhc3N0aHJvdWdoTHVtM0QsICJCbGl0MTEgM0QgbHVtaW5hbmNlIHBpeGVsIHNoYWRlciIp
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEJMSVRTSEFERVJfM0RfTFVNQUFMUEhBOgot
ICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRlclR5cGUsIFNIQURFUl8zRCwgZDNk
MTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hMdW1BbHBoYTNELCAiQmxpdDEx
IDNEIGx1bWluYW5jZSBhbHBoYSBwaXhlbCBzaGFkZXIiKSk7Ci0gICAgICAgIGJyZWFrOwotICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkludGVybmFsIGVycm9yIik7CisgICAgICAgIGNh
c2UgQkxJVFNIQURFUl8yRF9SR0JBRjoKKyAgICAgICAgICAgIGFkZEJsaXRTaGFkZXJUb01hcCgK
KyAgICAgICAgICAgICAgICBibGl0U2hhZGVyVHlwZSwgU0hBREVSXzJELAorICAgICAgICAgICAg
ICAgIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUkdCQTJELCAiQmxp
dDExIDJEIFJHQkEgcGl4ZWwgc2hhZGVyIikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgQkxJVFNIQURFUl8yRF9SR0JBRl9QUkVNVUxUSVBMWToKKyAgICAgICAgICAgIGFkZEJs
aXRTaGFkZXJUb01hcChibGl0U2hhZGVyVHlwZSwgU0hBREVSXzJELAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdo
UkdCQVByZW11bHRpcGx5MkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiQmxpdDExIDJEIFJHQkEgcHJlbXVsdGlwbHkgcGl4ZWwgc2hhZGVyIikpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQkxJVFNIQURFUl8yRF9SR0JBRl9VTk1V
TFRJUExZOgorICAgICAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFwKGJsaXRTaGFkZXJUeXBlLCBT
SEFERVJfMkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDNkMTE6OkNvbXBpbGVQ
UyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSR0JBVW5tdWx0aXBseTJELAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJsaXQxMSAyRCBSR0JBIHVubXVs
dGlwbHkgcGl4ZWwgc2hhZGVyIikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
QkxJVFNIQURFUl8yRF9CR1JBRjoKKyAgICAgICAgICAgIGFkZEJsaXRTaGFkZXJUb01hcCgKKyAg
ICAgICAgICAgICAgICBibGl0U2hhZGVyVHlwZSwgU0hBREVSXzJELAorICAgICAgICAgICAgICAg
IGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUkdCQTJELCAiQmxpdDEx
IDJEIEJHUkEgcGl4ZWwgc2hhZGVyIikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgQkxJVFNIQURFUl8yRF9CR1JBRl9QUkVNVUxUSVBMWToKKyAgICAgICAgICAgIGFkZEJsaXRT
aGFkZXJUb01hcChibGl0U2hhZGVyVHlwZSwgU0hBREVSXzJELAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUkdC
QVByZW11bHRpcGx5MkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiQmxpdDExIDJEIEJHUkEgcHJlbXVsdGlwbHkgcGl4ZWwgc2hhZGVyIikpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQkxJVFNIQURFUl8yRF9CR1JBRl9VTk1VTFRJ
UExZOgorICAgICAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFE
RVJfMkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDNkMTE6OkNvbXBpbGVQUyhk
ZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSR0JBVW5tdWx0aXBseTJELAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJsaXQxMSAyRCBCR1JBIHVubXVsdGlw
bHkgcGl4ZWwgc2hhZGVyIikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQkxJ
VFNIQURFUl8yRF9SR0JGOgorICAgICAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFwKAorICAgICAg
ICAgICAgICAgIGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfMkQsCisgICAgICAgICAgICAgICAgZDNk
MTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSR0IyRCwgIkJsaXQxMSAyRCBS
R0IgcGl4ZWwgc2hhZGVyIikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQkxJ
VFNIQURFUl8yRF9SR0JGX1BSRU1VTFRJUExZOgorICAgICAgICAgICAgYWRkQmxpdFNoYWRlclRv
TWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfMkQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSR0JQcmVtdWx0
aXBseTJELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IkJsaXQxMSAyRCBSR0IgcHJlbXVsdGlwbHkgcGl4ZWwgc2hhZGVyIikpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQkxJVFNIQURFUl8yRF9SR0JGX1VOTVVMVElQTFk6CisgICAg
ICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRlclR5cGUsIFNIQURFUl8yRCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19Q
U19QYXNzdGhyb3VnaFJHQlVubXVsdGlwbHkyRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJCbGl0MTEgMkQgUkdCIHVubXVsdGlwbHkgcGl4ZWwgc2hh
ZGVyIikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQkxJVFNIQURFUl8yRF9S
R0Y6CisgICAgICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAoCisgICAgICAgICAgICAgICAgYmxp
dFNoYWRlclR5cGUsIFNIQURFUl8yRCwKKyAgICAgICAgICAgICAgICBkM2QxMTo6Q29tcGlsZVBT
KGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJHMkQsICJCbGl0MTEgMkQgUkcgcGl4ZWwgc2hhZGVy
IikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQkxJVFNIQURFUl8yRF9SRjoK
KyAgICAgICAgICAgIGFkZEJsaXRTaGFkZXJUb01hcCgKKyAgICAgICAgICAgICAgICBibGl0U2hh
ZGVyVHlwZSwgU0hBREVSXzJELAorICAgICAgICAgICAgICAgIGQzZDExOjpDb21waWxlUFMoZGV2
aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUjJELCAiQmxpdDExIDJEIFIgcGl4ZWwgc2hhZGVyIikpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQkxJVFNIQURFUl8yRF9BTFBIQToKKyAg
ICAgICAgICAgIGFkZEJsaXRTaGFkZXJUb01hcCgKKyAgICAgICAgICAgICAgICBibGl0U2hhZGVy
VHlwZSwgU0hBREVSXzJELAorICAgICAgICAgICAgICAgIGQzZDExOjpDb21waWxlUFMoZGV2aWNl
LCBnX1BTX1Bhc3N0aHJvdWdoUkdCQTJELCAiQmxpdDExIDJEIGFscGhhIHBpeGVsIHNoYWRlciIp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJMSVRTSEFERVJfMkRfTFVNQToK
KyAgICAgICAgICAgIGFkZEJsaXRTaGFkZXJUb01hcCgKKyAgICAgICAgICAgICAgICBibGl0U2hh
ZGVyVHlwZSwgU0hBREVSXzJELAorICAgICAgICAgICAgICAgIGQzZDExOjpDb21waWxlUFMoZGV2
aWNlLCBnX1BTX1Bhc3N0aHJvdWdoTHVtMkQsICJCbGl0MTEgMkQgbHVtIHBpeGVsIHNoYWRlciIp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJMSVRTSEFERVJfMkRfTFVNQUFM
UEhBOgorICAgICAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFE
RVJfMkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDNkMTE6OkNvbXBpbGVQUyhk
ZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hMdW1BbHBoYTJELAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJsaXQxMSAyRCBsdW1pbmFuY2UgYWxwaGEgcGl4
ZWwgc2hhZGVyIikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQkxJVFNIQURF
Ul8yRF9SR0JBVUk6CisgICAgICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRlclR5
cGUsIFNIQURFUl8yRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkM2QxMTo6Q29t
cGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJHQkEyRFVJLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJsaXQxMSAyRCBSR0JBIFVJIHBpeGVs
IHNoYWRlciIpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJMSVRTSEFERVJf
MkRfUkdCQUk6CisgICAgICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAoCisgICAgICAgICAgICAg
ICAgYmxpdFNoYWRlclR5cGUsIFNIQURFUl8yRCwKKyAgICAgICAgICAgICAgICBkM2QxMTo6Q29t
cGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJHQkEyREksICJCbGl0MTEgMkQgUkdCQSBJ
IHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJMSVRT
SEFERVJfMkRfUkdCVUk6CisgICAgICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAoCisgICAgICAg
ICAgICAgICAgYmxpdFNoYWRlclR5cGUsIFNIQURFUl8yRCwKKyAgICAgICAgICAgICAgICBkM2Qx
MTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJHQjJEVUksICJCbGl0MTEgMkQg
UkdCIFVJIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEJMSVRTSEFERVJfMkRfUkdCSToKKyAgICAgICAgICAgIGFkZEJsaXRTaGFkZXJUb01hcCgKKyAg
ICAgICAgICAgICAgICBibGl0U2hhZGVyVHlwZSwgU0hBREVSXzJELAorICAgICAgICAgICAgICAg
IGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUkdCMkRJLCAiQmxpdDEx
IDJEIFJHQiBJIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEJMSVRTSEFERVJfMkRfUkdVSToKKyAgICAgICAgICAgIGFkZEJsaXRTaGFkZXJUb01hcCgK
KyAgICAgICAgICAgICAgICBibGl0U2hhZGVyVHlwZSwgU0hBREVSXzJELAorICAgICAgICAgICAg
ICAgIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUkcyRFVJLCAiQmxp
dDExIDJEIFJHIFVJIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEJMSVRTSEFERVJfMkRfUkdJOgorICAgICAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFw
KAorICAgICAgICAgICAgICAgIGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfMkQsCisgICAgICAgICAg
ICAgICAgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSRzJESSwgIkJs
aXQxMSAyRCBSRyBJIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEJMSVRTSEFERVJfMkRfUlVJOgorICAgICAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFw
KAorICAgICAgICAgICAgICAgIGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfMkQsCisgICAgICAgICAg
ICAgICAgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSMkRVSSwgIkJs
aXQxMSAyRCBSIFVJIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEJMSVRTSEFERVJfMkRfUkk6CisgICAgICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAo
CisgICAgICAgICAgICAgICAgYmxpdFNoYWRlclR5cGUsIFNIQURFUl8yRCwKKyAgICAgICAgICAg
ICAgICBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFIyREksICJCbGl0
MTEgMkQgUiBJIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEJMSVRTSEFERVJfM0RfUkdCQUY6CisgICAgICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAo
CisgICAgICAgICAgICAgICAgYmxpdFNoYWRlclR5cGUsIFNIQURFUl8zRCwKKyAgICAgICAgICAg
ICAgICBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJHQkEzRCwgIkJs
aXQxMSAzRCBSR0JBIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEJMSVRTSEFERVJfM0RfUkdCQVVJOgorICAgICAgICAgICAgYWRkQmxpdFNoYWRlclRv
TWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfM0QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSR0JBM0RVSSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCbGl0MTEg
M0QgVUkgUkdCQSBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBCTElUU0hBREVSXzNEX1JHQkFJOgorICAgICAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFw
KAorICAgICAgICAgICAgICAgIGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfM0QsCisgICAgICAgICAg
ICAgICAgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSR0JBM0RJLCAi
QmxpdDExIDNEIEkgUkdCQSBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBCTElUU0hBREVSXzNEX0JHUkFGOgorICAgICAgICAgICAgYWRkQmxpdFNoYWRl
clRvTWFwKAorICAgICAgICAgICAgICAgIGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfM0QsCisgICAg
ICAgICAgICAgICAgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSR0JB
M0QsICJCbGl0MTEgM0QgQkdSQSBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBCTElUU0hBREVSXzNEX1JHQkY6CisgICAgICAgICAgICBhZGRCbGl0U2hh
ZGVyVG9NYXAoCisgICAgICAgICAgICAgICAgYmxpdFNoYWRlclR5cGUsIFNIQURFUl8zRCwKKyAg
ICAgICAgICAgICAgICBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJH
QjNELCAiQmxpdDExIDNEIFJHQiBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBCTElUU0hBREVSXzNEX1JHQlVJOgorICAgICAgICAgICAgYWRkQmxpdFNo
YWRlclRvTWFwKAorICAgICAgICAgICAgICAgIGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfM0QsCisg
ICAgICAgICAgICAgICAgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hS
R0IzRFVJLCAiQmxpdDExIDNEIFJHQiBVSSBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBCTElUU0hBREVSXzNEX1JHQkk6CisgICAgICAgICAgICBhZGRC
bGl0U2hhZGVyVG9NYXAoCisgICAgICAgICAgICAgICAgYmxpdFNoYWRlclR5cGUsIFNIQURFUl8z
RCwKKyAgICAgICAgICAgICAgICBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhy
b3VnaFJHQjNESSwgIkJsaXQxMSAzRCBSR0IgSSBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBCTElUU0hBREVSXzNEX1JHRjoKKyAgICAgICAgICAgIGFk
ZEJsaXRTaGFkZXJUb01hcCgKKyAgICAgICAgICAgICAgICBibGl0U2hhZGVyVHlwZSwgU0hBREVS
XzNELAorICAgICAgICAgICAgICAgIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0
aHJvdWdoUkczRCwgIkJsaXQxMSAzRCBSRyBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBCTElUU0hBREVSXzNEX1JHVUk6CisgICAgICAgICAgICBhZGRC
bGl0U2hhZGVyVG9NYXAoCisgICAgICAgICAgICAgICAgYmxpdFNoYWRlclR5cGUsIFNIQURFUl8z
RCwKKyAgICAgICAgICAgICAgICBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhy
b3VnaFJHM0RVSSwgIkJsaXQxMSAzRCBSRyBVSSBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBCTElUU0hBREVSXzNEX1JHSToKKyAgICAgICAgICAgIGFk
ZEJsaXRTaGFkZXJUb01hcCgKKyAgICAgICAgICAgICAgICBibGl0U2hhZGVyVHlwZSwgU0hBREVS
XzNELAorICAgICAgICAgICAgICAgIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0
aHJvdWdoUkczREksICJCbGl0MTEgM0QgUkcgSSBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBCTElUU0hBREVSXzNEX1JGOgorICAgICAgICAgICAgYWRk
QmxpdFNoYWRlclRvTWFwKAorICAgICAgICAgICAgICAgIGJsaXRTaGFkZXJUeXBlLCBTSEFERVJf
M0QsCisgICAgICAgICAgICAgICAgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Ro
cm91Z2hSM0QsICJCbGl0MTEgM0QgUiBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBCTElUU0hBREVSXzNEX1JVSToKKyAgICAgICAgICAgIGFkZEJsaXRT
aGFkZXJUb01hcCgKKyAgICAgICAgICAgICAgICBibGl0U2hhZGVyVHlwZSwgU0hBREVSXzNELAor
ICAgICAgICAgICAgICAgIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdo
UjNEVUksICJCbGl0MTEgM0QgUiBVSSBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBCTElUU0hBREVSXzNEX1JJOgorICAgICAgICAgICAgYWRkQmxpdFNo
YWRlclRvTWFwKAorICAgICAgICAgICAgICAgIGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfM0QsCisg
ICAgICAgICAgICAgICAgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hS
M0RJLCAiQmxpdDExIDNEIFIgSSBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBCTElUU0hBREVSXzNEX0FMUEhBOgorICAgICAgICAgICAgYWRkQmxpdFNo
YWRlclRvTWFwKAorICAgICAgICAgICAgICAgIGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfM0QsCisg
ICAgICAgICAgICAgICAgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hS
R0JBM0QsICJCbGl0MTEgM0QgYWxwaGEgcGl4ZWwgc2hhZGVyIikpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgQkxJVFNIQURFUl8zRF9MVU1BOgorICAgICAgICAgICAgYWRkQmxp
dFNoYWRlclRvTWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfM0QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hM
dW0zRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJC
bGl0MTEgM0QgbHVtaW5hbmNlIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEJMSVRTSEFERVJfM0RfTFVNQUFMUEhBOgorICAgICAgICAgICAgYWRkQmxp
dFNoYWRlclRvTWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfM0QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hM
dW1BbHBoYTNELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkJsaXQxMSAzRCBsdW1pbmFuY2UgYWxwaGEgcGl4ZWwgc2hhZGVyIikpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkludGVy
bmFsIGVycm9yIik7CiAgICAgfQogCiAgICAgYmxpdFNoYWRlckl0ID0gbUJsaXRTaGFkZXJNYXAu
ZmluZChibGl0U2hhZGVyVHlwZSk7CkBAIC0xMzUxLDcgKzE5MDIsOSBAQAogICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi1nbDo6RXJyb3IgQmxpdDExOjpnZXRTd2l6emxl
U2hhZGVyKEdMZW51bSB0eXBlLCBEM0QxMV9TUlZfRElNRU5TSU9OIHZpZXdEaW1lbnNpb24sIGNv
bnN0IFNoYWRlciAqKnNoYWRlcikKK2dsOjpFcnJvciBCbGl0MTE6OmdldFN3aXp6bGVTaGFkZXIo
R0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDExX1NS
Vl9ESU1FTlNJT04gdmlld0RpbWVuc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgU2hhZGVyICoqc2hhZGVyKQogewogICAgIFN3aXp6bGVTaGFkZXJUeXBlIHN3
aXp6bGVTaGFkZXJUeXBlID0gR2V0U3dpenpsZVNoYWRlclR5cGUodHlwZSwgdmlld0RpbWVuc2lv
bik7CiAKQEAgLTEzNzQsNTEgKzE5MjcsMzA4IEBACiAKICAgICBzd2l0Y2ggKHN3aXp6bGVTaGFk
ZXJUeXBlKQogICAgIHsKLSAgICAgIGNhc2UgU1dJWlpMRVNIQURFUl8yRF9GTE9BVDoKLSAgICAg
ICAgYWRkU3dpenpsZVNoYWRlclRvTWFwKHN3aXp6bGVTaGFkZXJUeXBlLCBTSEFERVJfMkQsIGQz
ZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1N3aXp6bGVGMkQsICJCbGl0MTEgMkQgRiBzd2l6
emxlIHBpeGVsIHNoYWRlciIpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIFNXSVpaTEVT
SEFERVJfMkRfVUlOVDoKLSAgICAgICAgYWRkU3dpenpsZVNoYWRlclRvTWFwKHN3aXp6bGVTaGFk
ZXJUeXBlLCBTSEFERVJfMkQsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1N3aXp6bGVV
STJELCAiQmxpdDExIDJEIFVJIHN3aXp6bGUgcGl4ZWwgc2hhZGVyIikpOwotICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgU1dJWlpMRVNIQURFUl8yRF9JTlQ6Ci0gICAgICAgIGFkZFN3aXp6bGVT
aGFkZXJUb01hcChzd2l6emxlU2hhZGVyVHlwZSwgU0hBREVSXzJELCBkM2QxMTo6Q29tcGlsZVBT
KGRldmljZSwgZ19QU19Td2l6emxlSTJELCAiQmxpdDExIDJEIEkgc3dpenpsZSBwaXhlbCBzaGFk
ZXIiKSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBTV0laWkxFU0hBREVSX0NVQkVfRkxP
QVQ6Ci0gICAgICAgIGFkZFN3aXp6bGVTaGFkZXJUb01hcChzd2l6emxlU2hhZGVyVHlwZSwgU0hB
REVSXzNELCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19Td2l6emxlRjJEQXJyYXksICJC
bGl0MTEgMkQgQ3ViZSBGIHN3aXp6bGUgcGl4ZWwgc2hhZGVyIikpOwotICAgICAgICBicmVhazsK
LSAgICAgIGNhc2UgU1dJWlpMRVNIQURFUl9DVUJFX1VJTlQ6Ci0gICAgICAgIGFkZFN3aXp6bGVT
aGFkZXJUb01hcChzd2l6emxlU2hhZGVyVHlwZSwgU0hBREVSXzNELCBkM2QxMTo6Q29tcGlsZVBT
KGRldmljZSwgZ19QU19Td2l6emxlVUkyREFycmF5LCAiQmxpdDExIDJEIEN1YmUgVUkgc3dpenps
ZSBwaXhlbCBzaGFkZXIiKSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBTV0laWkxFU0hB
REVSX0NVQkVfSU5UOgotICAgICAgICBhZGRTd2l6emxlU2hhZGVyVG9NYXAoc3dpenpsZVNoYWRl
clR5cGUsIFNIQURFUl8zRCwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfU3dpenpsZUky
REFycmF5LCAiQmxpdDExIDJEIEN1YmUgSSBzd2l6emxlIHBpeGVsIHNoYWRlciIpKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgICBjYXNlIFNXSVpaTEVTSEFERVJfM0RfRkxPQVQ6Ci0gICAgICAgIGFk
ZFN3aXp6bGVTaGFkZXJUb01hcChzd2l6emxlU2hhZGVyVHlwZSwgU0hBREVSXzNELCBkM2QxMTo6
Q29tcGlsZVBTKGRldmljZSwgZ19QU19Td2l6emxlRjNELCAiQmxpdDExIDNEIEYgc3dpenpsZSBw
aXhlbCBzaGFkZXIiKSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBTV0laWkxFU0hBREVS
XzNEX1VJTlQ6Ci0gICAgICAgIGFkZFN3aXp6bGVTaGFkZXJUb01hcChzd2l6emxlU2hhZGVyVHlw
ZSwgU0hBREVSXzNELCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19Td2l6emxlVUkzRCwg
IkJsaXQxMSAzRCBVSSBzd2l6emxlIHBpeGVsIHNoYWRlciIpKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgICBjYXNlIFNXSVpaTEVTSEFERVJfM0RfSU5UOgotICAgICAgICBhZGRTd2l6emxlU2hhZGVy
VG9NYXAoc3dpenpsZVNoYWRlclR5cGUsIFNIQURFUl8zRCwgZDNkMTE6OkNvbXBpbGVQUyhkZXZp
Y2UsIGdfUFNfU3dpenpsZUkzRCwgIkJsaXQxMSAzRCBJIHN3aXp6bGUgcGl4ZWwgc2hhZGVyIikp
OwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgU1dJWlpMRVNIQURFUl9BUlJBWV9GTE9BVDoK
LSAgICAgICAgYWRkU3dpenpsZVNoYWRlclRvTWFwKHN3aXp6bGVTaGFkZXJUeXBlLCBTSEFERVJf
M0QsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1N3aXp6bGVGMkRBcnJheSwgIkJsaXQx
MSAyRCBBcnJheSBGIHN3aXp6bGUgcGl4ZWwgc2hhZGVyIikpOwotICAgICAgICBicmVhazsKLSAg
ICAgIGNhc2UgU1dJWlpMRVNIQURFUl9BUlJBWV9VSU5UOgotICAgICAgICBhZGRTd2l6emxlU2hh
ZGVyVG9NYXAoc3dpenpsZVNoYWRlclR5cGUsIFNIQURFUl8zRCwgZDNkMTE6OkNvbXBpbGVQUyhk
ZXZpY2UsIGdfUFNfU3dpenpsZVVJMkRBcnJheSwgIkJsaXQxMSAyRCBBcnJheSBVSSBzd2l6emxl
IHBpeGVsIHNoYWRlciIpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIFNXSVpaTEVTSEFE
RVJfQVJSQVlfSU5UOgotICAgICAgICBhZGRTd2l6emxlU2hhZGVyVG9NYXAoc3dpenpsZVNoYWRl
clR5cGUsIFNIQURFUl8zRCwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfU3dpenpsZUky
REFycmF5LCAiQmxpdDExIDJEIEFycmF5IEkgc3dpenpsZSBwaXhlbCBzaGFkZXIiKSk7Ci0gICAg
ICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAg
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkludGVybmFsIGVycm9y
Iik7CisgICAgICAgIGNhc2UgU1dJWlpMRVNIQURFUl8yRF9GTE9BVDoKKyAgICAgICAgICAgIGFk
ZFN3aXp6bGVTaGFkZXJUb01hcCgKKyAgICAgICAgICAgICAgICBzd2l6emxlU2hhZGVyVHlwZSwg
U0hBREVSXzJELAorICAgICAgICAgICAgICAgIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BT
X1N3aXp6bGVGMkQsICJCbGl0MTEgMkQgRiBzd2l6emxlIHBpeGVsIHNoYWRlciIpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNXSVpaTEVTSEFERVJfMkRfVUlOVDoKKyAgICAg
ICAgICAgIGFkZFN3aXp6bGVTaGFkZXJUb01hcCgKKyAgICAgICAgICAgICAgICBzd2l6emxlU2hh
ZGVyVHlwZSwgU0hBREVSXzJELAorICAgICAgICAgICAgICAgIGQzZDExOjpDb21waWxlUFMoZGV2
aWNlLCBnX1BTX1N3aXp6bGVVSTJELCAiQmxpdDExIDJEIFVJIHN3aXp6bGUgcGl4ZWwgc2hhZGVy
IikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1dJWlpMRVNIQURFUl8yRF9J
TlQ6CisgICAgICAgICAgICBhZGRTd2l6emxlU2hhZGVyVG9NYXAoCisgICAgICAgICAgICAgICAg
c3dpenpsZVNoYWRlclR5cGUsIFNIQURFUl8yRCwKKyAgICAgICAgICAgICAgICBkM2QxMTo6Q29t
cGlsZVBTKGRldmljZSwgZ19QU19Td2l6emxlSTJELCAiQmxpdDExIDJEIEkgc3dpenpsZSBwaXhl
bCBzaGFkZXIiKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTV0laWkxFU0hB
REVSX0NVQkVfRkxPQVQ6CisgICAgICAgICAgICBhZGRTd2l6emxlU2hhZGVyVG9NYXAoc3dpenps
ZVNoYWRlclR5cGUsIFNIQURFUl8zRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19Td2l6emxlRjJEQXJyYXksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmxpdDExIDJEIEN1
YmUgRiBzd2l6emxlIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFNXSVpaTEVTSEFERVJfQ1VCRV9VSU5UOgorICAgICAgICAgICAgYWRkU3dpenpsZVNo
YWRlclRvTWFwKHN3aXp6bGVTaGFkZXJUeXBlLCBTSEFERVJfM0QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfU3dpenpsZVVJ
MkRBcnJheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJCbGl0MTEgMkQgQ3ViZSBVSSBzd2l6emxlIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFNXSVpaTEVTSEFERVJfQ1VCRV9JTlQ6CisgICAgICAg
ICAgICBhZGRTd2l6emxlU2hhZGVyVG9NYXAoc3dpenpsZVNoYWRlclR5cGUsIFNIQURFUl8zRCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkM2QxMTo6Q29tcGlsZVBTKGRldmlj
ZSwgZ19QU19Td2l6emxlSTJEQXJyYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiQmxpdDExIDJEIEN1YmUgSSBzd2l6emxlIHBpeGVsIHNoYWRl
ciIpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNXSVpaTEVTSEFERVJfM0Rf
RkxPQVQ6CisgICAgICAgICAgICBhZGRTd2l6emxlU2hhZGVyVG9NYXAoCisgICAgICAgICAgICAg
ICAgc3dpenpsZVNoYWRlclR5cGUsIFNIQURFUl8zRCwKKyAgICAgICAgICAgICAgICBkM2QxMTo6
Q29tcGlsZVBTKGRldmljZSwgZ19QU19Td2l6emxlRjNELCAiQmxpdDExIDNEIEYgc3dpenpsZSBw
aXhlbCBzaGFkZXIiKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTV0laWkxF
U0hBREVSXzNEX1VJTlQ6CisgICAgICAgICAgICBhZGRTd2l6emxlU2hhZGVyVG9NYXAoCisgICAg
ICAgICAgICAgICAgc3dpenpsZVNoYWRlclR5cGUsIFNIQURFUl8zRCwKKyAgICAgICAgICAgICAg
ICBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19Td2l6emxlVUkzRCwgIkJsaXQxMSAzRCBV
SSBzd2l6emxlIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFNXSVpaTEVTSEFERVJfM0RfSU5UOgorICAgICAgICAgICAgYWRkU3dpenpsZVNoYWRlclRv
TWFwKAorICAgICAgICAgICAgICAgIHN3aXp6bGVTaGFkZXJUeXBlLCBTSEFERVJfM0QsCisgICAg
ICAgICAgICAgICAgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfU3dpenpsZUkzRCwgIkJs
aXQxMSAzRCBJIHN3aXp6bGUgcGl4ZWwgc2hhZGVyIikpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgU1dJWlpMRVNIQURFUl9BUlJBWV9GTE9BVDoKKyAgICAgICAgICAgIGFkZFN3
aXp6bGVTaGFkZXJUb01hcChzd2l6emxlU2hhZGVyVHlwZSwgU0hBREVSXzNELAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1N3
aXp6bGVGMkRBcnJheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJCbGl0MTEgMkQgQXJyYXkgRiBzd2l6emxlIHBpeGVsIHNoYWRlciIpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNXSVpaTEVTSEFERVJfQVJSQVlfVUlOVDoK
KyAgICAgICAgICAgIGFkZFN3aXp6bGVTaGFkZXJUb01hcChzd2l6emxlU2hhZGVyVHlwZSwgU0hB
REVSXzNELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQzZDExOjpDb21waWxl
UFMoZGV2aWNlLCBnX1BTX1N3aXp6bGVVSTJEQXJyYXksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmxpdDExIDJEIEFycmF5IFVJIHN3aXp6bGUg
cGl4ZWwgc2hhZGVyIikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1dJWlpM
RVNIQURFUl9BUlJBWV9JTlQ6CisgICAgICAgICAgICBhZGRTd2l6emxlU2hhZGVyVG9NYXAoc3dp
enpsZVNoYWRlclR5cGUsIFNIQURFUl8zRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19Td2l6emxlSTJEQXJyYXksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmxpdDExIDJE
IEFycmF5IEkgc3dpenpsZSBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiSW50ZXJuYWwgZXJyb3IiKTsK
ICAgICB9CiAKICAgICBzd2l6emxlU2hhZGVySXQgPSBtU3dpenpsZVNoYWRlck1hcC5maW5kKHN3
aXp6bGVTaGFkZXJUeXBlKTsKICAgICBBU1NFUlQoc3dpenpsZVNoYWRlckl0ICE9IG1Td2l6emxl
U2hhZGVyTWFwLmVuZCgpKTsKICAgICAqc2hhZGVyID0gJnN3aXp6bGVTaGFkZXJJdC0+c2Vjb25k
OwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9F
cnJvcigpOwogfQogCitnbDo6RXJyb3JPclJlc3VsdDxUZXh0dXJlSGVscGVyMTE+IEJsaXQxMTo6
cmVzb2x2ZURlcHRoKFJlbmRlclRhcmdldDExICpkZXB0aCkKK3sKKyAgICBjb25zdCBhdXRvICZl
eHRlbnRzICAgICAgICAgID0gZGVwdGgtPmdldEV4dGVudHMoKTsKKyAgICBJRDNEMTFEZXZpY2Ug
KmRldmljZSAgICAgICAgID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKyAgICBJRDNEMTFEZXZp
Y2VDb250ZXh0ICpjb250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CisKKyAg
ICBBTkdMRV9UUlkoaW5pdFJlc29sdmVEZXB0aFN0ZW5jaWwoZXh0ZW50cykpOworCisgICAgLy8g
Tm90aWZ5IHRoZSBSZW5kZXJlciB0aGF0IGFsbCBzdGF0ZSBzaG91bGQgYmUgaW52YWxpZGF0ZWQu
CisgICAgbVJlbmRlcmVyLT5tYXJrQWxsU3RhdGVEaXJ0eSgpOworCisgICAgLy8gQXBwbHkgdGhl
IG5lY2Vzc2FyeSBzdGF0ZSBjaGFuZ2VzIHRvIHRoZSBEM0QxMSBpbW1lZGlhdGUgZGV2aWNlIGNv
bnRleHQuCisgICAgY29udGV4dC0+SUFTZXRJbnB1dExheW91dChudWxscHRyKTsKKyAgICBjb250
ZXh0LT5JQVNldFByaW1pdGl2ZVRvcG9sb2d5KEQzRDExX1BSSU1JVElWRV9UT1BPTE9HWV9UUklB
TkdMRUxJU1QpOworICAgIGNvbnRleHQtPlZTU2V0U2hhZGVyKG1SZXNvbHZlRGVwdGhTdGVuY2ls
VlMucmVzb2x2ZShkZXZpY2UpLCBudWxscHRyLCAwKTsKKyAgICBjb250ZXh0LT5HU1NldFNoYWRl
cihudWxscHRyLCBudWxscHRyLCAwKTsKKyAgICBjb250ZXh0LT5SU1NldFN0YXRlKG51bGxwdHIp
OworICAgIGNvbnRleHQtPk9NU2V0RGVwdGhTdGVuY2lsU3RhdGUobnVsbHB0ciwgMHhGRkZGRkZG
Rik7CisgICAgY29udGV4dC0+T01TZXRSZW5kZXJUYXJnZXRzKDEsICZtUmVzb2x2ZWREZXB0aFN0
ZW5jaWxSVFZpZXcsIG51bGxwdHIpOworICAgIGNvbnRleHQtPk9NU2V0QmxlbmRTdGF0ZShudWxs
cHRyLCBudWxscHRyLCAweEZGRkZGRkYpOworCisgICAgLy8gU2V0IHRoZSB2aWV3cG9ydAorICAg
IEQzRDExX1ZJRVdQT1JUIHZpZXdwb3J0OworICAgIHZpZXdwb3J0LlRvcExlZnRYID0gMDsKKyAg
ICB2aWV3cG9ydC5Ub3BMZWZ0WSA9IDA7CisgICAgdmlld3BvcnQuV2lkdGggICAgPSBzdGF0aWNf
Y2FzdDxGTE9BVD4oZXh0ZW50cy53aWR0aCk7CisgICAgdmlld3BvcnQuSGVpZ2h0ICAgPSBzdGF0
aWNfY2FzdDxGTE9BVD4oZXh0ZW50cy5oZWlnaHQpOworICAgIHZpZXdwb3J0Lk1pbkRlcHRoID0g
MC4wZjsKKyAgICB2aWV3cG9ydC5NYXhEZXB0aCA9IDEuMGY7CisgICAgY29udGV4dC0+UlNTZXRW
aWV3cG9ydHMoMSwgJnZpZXdwb3J0KTsKKworICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAq
cGl4ZWxWaWV3c1tdID0ge2RlcHRoLT5nZXRTaGFkZXJSZXNvdXJjZVZpZXcoKX07CisKKyAgICBj
b250ZXh0LT5QU1NldFNoYWRlclJlc291cmNlcygwLCAxLCBwaXhlbFZpZXdzKTsKKworICAgIGNv
bnRleHQtPlBTU2V0U2hhZGVyKG1SZXNvbHZlRGVwdGhQUy5yZXNvbHZlKGRldmljZSksIG51bGxw
dHIsIDApOworCisgICAgLy8gVHJpZ2dlciB0aGUgYmxpdCBvbiB0aGUgR1BVLgorICAgIGNvbnRl
eHQtPkRyYXcoNiwgMCk7CisKKyAgICBnbDo6Qm94IGNvcHlCb3goMCwgMCwgMCwgZXh0ZW50cy53
aWR0aCwgZXh0ZW50cy5oZWlnaHQsIDEpOworCisgICAgY29uc3QgYXV0byAmY29weUZ1bmN0aW9u
ID0gR2V0Q29weURlcHRoU3RlbmNpbEZ1bmN0aW9uKGRlcHRoLT5nZXRJbnRlcm5hbEZvcm1hdCgp
KTsKKyAgICBjb25zdCBhdXRvICZkc0Zvcm1hdFNldCAgPSBkZXB0aC0+Z2V0Rm9ybWF0U2V0KCk7
CisgICAgY29uc3QgYXV0byAmZHNEeGdpSW5mbyAgID0gZDNkMTE6OkdldERYR0lGb3JtYXRTaXpl
SW5mbyhkc0Zvcm1hdFNldC50ZXhGb3JtYXQpOworCisgICAgSUQzRDExVGV4dHVyZTJEICpkZXN0
VGV4ID0gbnVsbHB0cjsKKworICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIGRlc3REZXNjOworICAg
IGRlc3REZXNjLldpZHRoICAgICAgICAgICAgICA9IGV4dGVudHMud2lkdGg7CisgICAgZGVzdERl
c2MuSGVpZ2h0ICAgICAgICAgICAgID0gZXh0ZW50cy5oZWlnaHQ7CisgICAgZGVzdERlc2MuTWlw
TGV2ZWxzICAgICAgICAgID0gMTsKKyAgICBkZXN0RGVzYy5BcnJheVNpemUgICAgICAgICAgPSAx
OworICAgIGRlc3REZXNjLkZvcm1hdCAgICAgICAgICAgICA9IGRzRm9ybWF0U2V0LnRleEZvcm1h
dDsKKyAgICBkZXN0RGVzYy5TYW1wbGVEZXNjLkNvdW50ICAgPSAxOworICAgIGRlc3REZXNjLlNh
bXBsZURlc2MuUXVhbGl0eSA9IDA7CisgICAgZGVzdERlc2MuVXNhZ2UgICAgICAgICAgICAgID0g
RDNEMTFfVVNBR0VfREVGQVVMVDsKKyAgICBkZXN0RGVzYy5CaW5kRmxhZ3MgICAgICAgICAgPSBE
M0QxMV9CSU5EX1NIQURFUl9SRVNPVVJDRTsKKyAgICBkZXN0RGVzYy5DUFVBY2Nlc3NGbGFncyAg
ICAgPSAwOworICAgIGRlc3REZXNjLk1pc2NGbGFncyAgICAgICAgICA9IDA7CisKKyAgICBIUkVT
VUxUIGhyID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJmRlc3REZXNjLCBudWxscHRyLCAmZGVz
dFRleCk7CisgICAgaWYgKEZBSUxFRChocikpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX09VVF9PRl9NRU1PUlksICJFcnJvciBjcmVhdGluZyBkZXB0aCByZXNvbHZlIGRlc3Qg
dGV4dHVyZS4iKTsKKyAgICB9CisgICAgZDNkMTE6OlNldERlYnVnTmFtZShkZXN0VGV4LCAicmVz
b2x2ZURlcHRoRGVzdCIpOworCisgICAgVGV4dHVyZUhlbHBlcjExIGRlc3QgPSBUZXh0dXJlSGVs
cGVyMTE6Ok1ha2VBbmRQb3NzZXNzMkQoZGVzdFRleCwgZGVwdGgtPmdldEZvcm1hdFNldCgpKTsK
KyAgICBBTkdMRV9UUlkoY29weUFuZENvbnZlcnQobVJlc29sdmVkRGVwdGhTdGVuY2lsLCAwLCBj
b3B5Qm94LCBleHRlbnRzLCBkZXN0LCAwLCBjb3B5Qm94LCBleHRlbnRzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxscHRyLCAwLCAwLCAwLCA4LCBkc0R4Z2lJbmZvLnBpeGVsQnl0
ZXMsIGNvcHlGdW5jdGlvbikpOworICAgIHJldHVybiBkZXN0OwogfQorCitnbDo6RXJyb3IgQmxp
dDExOjppbml0UmVzb2x2ZURlcHRoU3RlbmNpbChjb25zdCBnbDo6RXh0ZW50cyAmZXh0ZW50cykK
K3sKKyAgICAvLyBDaGVjayBpZiB3ZSBuZWVkIHRvIHJlY3JlYXRlIGRlcHRoIHN0ZW5jaWwgdmll
dworICAgIGlmIChtUmVzb2x2ZWREZXB0aFN0ZW5jaWwudmFsaWQoKSAmJiBleHRlbnRzID09IG1S
ZXNvbHZlZERlcHRoU3RlbmNpbC5nZXRFeHRlbnRzKCkpCisgICAgeworICAgICAgICByZXR1cm4g
Z2w6Ok5vRXJyb3IoKTsKKyAgICB9CisKKyAgICBpZiAobVJlc29sdmVkRGVwdGhTdGVuY2lsLnZh
bGlkKCkpCisgICAgeworICAgICAgICByZWxlYXNlUmVzb2x2ZURlcHRoU3RlbmNpbFJlc291cmNl
cygpOworICAgIH0KKworICAgIGNvbnN0IGF1dG8gJmZvcm1hdFNldCA9IGQzZDExOjpGb3JtYXQ6
OkdldChHTF9SRzMyRiwgbVJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpKTsKKwor
ICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIHRleHR1cmVEZXNjOworICAgIHRleHR1cmVEZXNjLldp
ZHRoICAgICAgICAgICAgICA9IGV4dGVudHMud2lkdGg7CisgICAgdGV4dHVyZURlc2MuSGVpZ2h0
ICAgICAgICAgICAgID0gZXh0ZW50cy5oZWlnaHQ7CisgICAgdGV4dHVyZURlc2MuTWlwTGV2ZWxz
ICAgICAgICAgID0gMTsKKyAgICB0ZXh0dXJlRGVzYy5BcnJheVNpemUgICAgICAgICAgPSAxOwor
ICAgIHRleHR1cmVEZXNjLkZvcm1hdCAgICAgICAgICAgICA9IGZvcm1hdFNldC50ZXhGb3JtYXQ7
CisgICAgdGV4dHVyZURlc2MuU2FtcGxlRGVzYy5Db3VudCAgID0gMTsKKyAgICB0ZXh0dXJlRGVz
Yy5TYW1wbGVEZXNjLlF1YWxpdHkgPSAwOworICAgIHRleHR1cmVEZXNjLlVzYWdlICAgICAgICAg
ICAgICA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7CisgICAgdGV4dHVyZURlc2MuQmluZEZsYWdzICAg
ICAgICAgID0gRDNEMTFfQklORF9SRU5ERVJfVEFSR0VUOworICAgIHRleHR1cmVEZXNjLkNQVUFj
Y2Vzc0ZsYWdzICAgICA9IDA7CisgICAgdGV4dHVyZURlc2MuTWlzY0ZsYWdzICAgICAgICAgID0g
MDsKKworICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsK
KworICAgIElEM0QxMVRleHR1cmUyRCAqcmVzb2x2ZWREZXB0aFN0ZW5jaWwgPSBudWxscHRyOwor
ICAgIEhSRVNVTFQgaHIgPSBkZXZpY2UtPkNyZWF0ZVRleHR1cmUyRCgmdGV4dHVyZURlc2MsIG51
bGxwdHIsICZyZXNvbHZlZERlcHRoU3RlbmNpbCk7CisgICAgaWYgKEZBSUxFRChocikpCisgICAg
eworICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8g
YWxsb2NhdGUgcmVzb2x2ZWQgZGVwdGggc3RlbmNpbCB0ZXh0dXJlIik7CisgICAgfQorICAgIGQz
ZDExOjpTZXREZWJ1Z05hbWUocmVzb2x2ZWREZXB0aFN0ZW5jaWwsICJCbGl0MTE6Om1SZXNvbHZl
ZERlcHRoU3RlbmNpbCIpOworCisgICAgQVNTRVJUKG1SZXNvbHZlZERlcHRoU3RlbmNpbFJUVmll
dyA9PSBudWxscHRyKTsKKyAgICBociA9CisgICAgICAgIGRldmljZS0+Q3JlYXRlUmVuZGVyVGFy
Z2V0VmlldyhyZXNvbHZlZERlcHRoU3RlbmNpbCwgbnVsbHB0ciwgJm1SZXNvbHZlZERlcHRoU3Rl
bmNpbFJUVmlldyk7CisgICAgaWYgKEZBSUxFRChocikpCisgICAgeworICAgICAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgIkZh
aWxlZCB0byBhbGxvY2F0ZSBCbGl0MTE6Om1SZXNvbHZlZERlcHRoU3RlbmNpbFJUVmlldyIpOwor
ICAgIH0KKyAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1SZXNvbHZlZERlcHRoU3RlbmNpbFJUVmll
dywgIkJsaXQxMTo6bVJlc29sdmVkRGVwdGhTdGVuY2lsUlRWaWV3Iik7CisKKyAgICBtUmVzb2x2
ZWREZXB0aFN0ZW5jaWwgPSBUZXh0dXJlSGVscGVyMTE6Ok1ha2VBbmRQb3NzZXNzMkQocmVzb2x2
ZWREZXB0aFN0ZW5jaWwsIGZvcm1hdFNldCk7CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
K30KKworZ2w6OkVycm9yT3JSZXN1bHQ8VGV4dHVyZUhlbHBlcjExPiBCbGl0MTE6OnJlc29sdmVT
dGVuY2lsKFJlbmRlclRhcmdldDExICpkZXB0aFN0ZW5jaWwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhbHNvRGVwdGgpCit7
CisgICAgY29uc3QgYXV0byAmZXh0ZW50cyA9IGRlcHRoU3RlbmNpbC0+Z2V0RXh0ZW50cygpOwor
CisgICAgQU5HTEVfVFJZKGluaXRSZXNvbHZlRGVwdGhTdGVuY2lsKGV4dGVudHMpKTsKKworICAg
IElEM0QxMURldmljZSAqZGV2aWNlICAgICAgICAgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwor
ICAgIElEM0QxMURldmljZUNvbnRleHQgKmNvbnRleHQgPSBtUmVuZGVyZXItPmdldERldmljZUNv
bnRleHQoKTsKKworICAgIElEM0QxMVJlc291cmNlICpzdGVuY2lsUmVzb3VyY2UgPSBkZXB0aFN0
ZW5jaWwtPmdldFRleHR1cmUoKTsKKworICAgIC8vIENoZWNrIGlmIHdlIG5lZWQgdG8gcmUtY3Jl
YXRlIHRoZSBzdGVuY2lsIFNSVi4KKyAgICBpZiAobVN0ZW5jaWxTUlYpCisgICAgeworICAgICAg
ICBJRDNEMTFSZXNvdXJjZSAqcHJpb3JSZXNvdXJjZSA9IG51bGxwdHI7CisgICAgICAgIG1TdGVu
Y2lsU1JWLT5HZXRSZXNvdXJjZSgmcHJpb3JSZXNvdXJjZSk7CisKKyAgICAgICAgaWYgKHN0ZW5j
aWxSZXNvdXJjZSAhPSBwcmlvclJlc291cmNlKQorICAgICAgICB7CisgICAgICAgICAgICBTYWZl
UmVsZWFzZShtU3RlbmNpbFNSVik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIW1TdGVu
Y2lsU1JWKQorICAgIHsKKyAgICAgICAgRDNEMTFfU0hBREVSX1JFU09VUkNFX1ZJRVdfREVTQyBz
clZpZXdEZXNjOworICAgICAgICBzclZpZXdEZXNjLkZvcm1hdCAgICAgICAgPSBHZXRTdGVuY2ls
U1JWRm9ybWF0KGRlcHRoU3RlbmNpbC0+Z2V0Rm9ybWF0U2V0KCkpOworICAgICAgICBzclZpZXdE
ZXNjLlZpZXdEaW1lbnNpb24gPSBEM0QxMV9TUlZfRElNRU5TSU9OX1RFWFRVUkUyRE1TOworCisg
ICAgICAgIEhSRVNVTFQgaHIgPSBkZXZpY2UtPkNyZWF0ZVNoYWRlclJlc291cmNlVmlldyhzdGVu
Y2lsUmVzb3VyY2UsICZzclZpZXdEZXNjLCAmbVN0ZW5jaWxTUlYpOworICAgICAgICBpZiAoRkFJ
TEVEKGhyKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRf
T0ZfTUVNT1JZLCAiRXJyb3IgY3JlYXRpbmcgQmxpdDExIHN0ZW5jaWwgU1JWIik7CisgICAgICAg
IH0KKyAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtU3RlbmNpbFNSViwgIkJsaXQxMTo6bVN0
ZW5jaWxTUlYiKTsKKyAgICB9CisKKyAgICAvLyBOb3RpZnkgdGhlIFJlbmRlcmVyIHRoYXQgYWxs
IHN0YXRlIHNob3VsZCBiZSBpbnZhbGlkYXRlZC4KKyAgICBtUmVuZGVyZXItPm1hcmtBbGxTdGF0
ZURpcnR5KCk7CisKKyAgICAvLyBBcHBseSB0aGUgbmVjZXNzYXJ5IHN0YXRlIGNoYW5nZXMgdG8g
dGhlIEQzRDExIGltbWVkaWF0ZSBkZXZpY2UgY29udGV4dC4KKyAgICBjb250ZXh0LT5JQVNldElu
cHV0TGF5b3V0KG51bGxwdHIpOworICAgIGNvbnRleHQtPklBU2V0UHJpbWl0aXZlVG9wb2xvZ3ko
RDNEMTFfUFJJTUlUSVZFX1RPUE9MT0dZX1RSSUFOR0xFTElTVCk7CisgICAgY29udGV4dC0+VlNT
ZXRTaGFkZXIobVJlc29sdmVEZXB0aFN0ZW5jaWxWUy5yZXNvbHZlKGRldmljZSksIG51bGxwdHIs
IDApOworICAgIGNvbnRleHQtPkdTU2V0U2hhZGVyKG51bGxwdHIsIG51bGxwdHIsIDApOworICAg
IGNvbnRleHQtPlJTU2V0U3RhdGUobnVsbHB0cik7CisgICAgY29udGV4dC0+T01TZXREZXB0aFN0
ZW5jaWxTdGF0ZShudWxscHRyLCAweEZGRkZGRkZGKTsKKyAgICBjb250ZXh0LT5PTVNldFJlbmRl
clRhcmdldHMoMSwgJm1SZXNvbHZlZERlcHRoU3RlbmNpbFJUVmlldywgbnVsbHB0cik7CisgICAg
Y29udGV4dC0+T01TZXRCbGVuZFN0YXRlKG51bGxwdHIsIG51bGxwdHIsIDB4RkZGRkZGRik7CisK
KyAgICAvLyBTZXQgdGhlIHZpZXdwb3J0CisgICAgRDNEMTFfVklFV1BPUlQgdmlld3BvcnQ7Cisg
ICAgdmlld3BvcnQuVG9wTGVmdFggPSAwOworICAgIHZpZXdwb3J0LlRvcExlZnRZID0gMDsKKyAg
ICB2aWV3cG9ydC5XaWR0aCAgICA9IHN0YXRpY19jYXN0PEZMT0FUPihleHRlbnRzLndpZHRoKTsK
KyAgICB2aWV3cG9ydC5IZWlnaHQgICA9IHN0YXRpY19jYXN0PEZMT0FUPihleHRlbnRzLmhlaWdo
dCk7CisgICAgdmlld3BvcnQuTWluRGVwdGggPSAwLjBmOworICAgIHZpZXdwb3J0Lk1heERlcHRo
ID0gMS4wZjsKKyAgICBjb250ZXh0LT5SU1NldFZpZXdwb3J0cygxLCAmdmlld3BvcnQpOworCisg
ICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpwaXhlbFZpZXdzW10gPSB7CisgICAgICAgIGRl
cHRoU3RlbmNpbC0+Z2V0U2hhZGVyUmVzb3VyY2VWaWV3KCksIG1TdGVuY2lsU1JWLAorICAgIH07
CisKKyAgICBjb250ZXh0LT5QU1NldFNoYWRlclJlc291cmNlcygwLCAyLCBwaXhlbFZpZXdzKTsK
KworICAgIC8vIFJlc29sdmluZyB0aGUgZGVwdGggYnVmZmVyIHdvcmtzIGJ5IHNhbXBsaW5nIHRo
ZSBkZXB0aCBpbiB0aGUgc2hhZGVyIHVzaW5nIGEgU1JWLCB0aGVuCisgICAgLy8gd3JpdGluZyB0
byB0aGUgcmVzb2x2ZWQgZGVwdGggYnVmZmVyIHVzaW5nIFNWX0RlcHRoLiBXZSBjYW4ndCB1c2Ug
dGhpcyBtZXRob2QgZm9yIHN0ZW5jaWwKKyAgICAvLyBiZWNhdXNlIFNWX1N0ZW5jaWxSZWYgaXNu
J3Qgc3VwcG9ydGVkIHVudGlsIEhMU0wgNS4xL0QzRDExLjMuCisgICAgaWYgKGFsc29EZXB0aCkK
KyAgICB7CisgICAgICAgIGNvbnRleHQtPlBTU2V0U2hhZGVyKG1SZXNvbHZlRGVwdGhTdGVuY2ls
UFMucmVzb2x2ZShkZXZpY2UpLCBudWxscHRyLCAwKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgY29udGV4dC0+UFNTZXRTaGFkZXIobVJlc29sdmVTdGVuY2lsUFMucmVzb2x2ZShk
ZXZpY2UpLCBudWxscHRyLCAwKTsKKyAgICB9CisKKyAgICAvLyBUcmlnZ2VyIHRoZSBibGl0IG9u
IHRoZSBHUFUuCisgICAgY29udGV4dC0+RHJhdyg2LCAwKTsKKworICAgIGdsOjpCb3ggY29weUJv
eCgwLCAwLCAwLCBleHRlbnRzLndpZHRoLCBleHRlbnRzLmhlaWdodCwgMSk7CisKKyAgICBUZXh0
dXJlSGVscGVyMTEgZGVzdDsKKyAgICBBTkdMRV9UUllfUkVTVUxUKENyZWF0ZVN0YWdpbmdUZXh0
dXJlKEdMX1RFWFRVUkVfMkQsIGRlcHRoU3RlbmNpbC0+Z2V0Rm9ybWF0U2V0KCksIGV4dGVudHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFnaW5nQWNjZXNz
OjpSRUFEX1dSSVRFLCBkZXZpY2UpLAorICAgICAgICAgICAgICAgICAgICAgZGVzdCk7CisKKyAg
ICBjb25zdCBhdXRvICZjb3B5RnVuY3Rpb24gPSBHZXRDb3B5RGVwdGhTdGVuY2lsRnVuY3Rpb24o
ZGVwdGhTdGVuY2lsLT5nZXRJbnRlcm5hbEZvcm1hdCgpKTsKKyAgICBjb25zdCBhdXRvICZkc0Zv
cm1hdFNldCAgPSBkZXB0aFN0ZW5jaWwtPmdldEZvcm1hdFNldCgpOworICAgIGNvbnN0IGF1dG8g
JmRzRHhnaUluZm8gICA9IGQzZDExOjpHZXREWEdJRm9ybWF0U2l6ZUluZm8oZHNGb3JtYXRTZXQu
dGV4Rm9ybWF0KTsKKworICAgIEFOR0xFX1RSWShjb3B5QW5kQ29udmVydEltcGwobVJlc29sdmVk
RGVwdGhTdGVuY2lsLCAwLCBjb3B5Qm94LCBleHRlbnRzLCBkZXN0LCBjb3B5Qm94LCBleHRlbnRz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgMCwgMCwgMCwgOHUs
IGRzRHhnaUluZm8ucGl4ZWxCeXRlcywgY29weUZ1bmN0aW9uKSk7CisKKyAgICAvLyBSZXR1cm4g
dGhlIHJlc29sdmVkIGRlcHRoIHRleHR1cmUsIHdoaWNoIHRoZSBjYWxsZXIgbXVzdCBSZWxlYXNl
LgorICAgIHJldHVybiBkZXN0OworfQorCit2b2lkIEJsaXQxMTo6cmVsZWFzZVJlc29sdmVEZXB0
aFN0ZW5jaWxSZXNvdXJjZXMoKQoreworICAgIFNhZmVSZWxlYXNlKG1TdGVuY2lsU1JWKTsKKyAg
ICBTYWZlUmVsZWFzZShtUmVzb2x2ZWREZXB0aFN0ZW5jaWxSVFZpZXcpOworfQorCit9ICAvLyBu
YW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvQmxpdDExLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9CbGl0MTEuaAkocmV2aXNp
b24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9CbGl0MTEuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsMTAgQEAK
ICAgICBleHBsaWNpdCBCbGl0MTEoUmVuZGVyZXIxMSAqcmVuZGVyZXIpOwogICAgIH5CbGl0MTEo
KTsKIAotICAgIGdsOjpFcnJvciBzd2l6emxlVGV4dHVyZShJRDNEMTFTaGFkZXJSZXNvdXJjZVZp
ZXcgKnNvdXJjZSwgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqZGVzdCwgY29uc3QgZ2w6OkV4dGVu
dHMgJnNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzd2l6emxlUmVk
LCBHTGVudW0gc3dpenpsZUdyZWVuLCBHTGVudW0gc3dpenpsZUJsdWUsIEdMZW51bSBzd2l6emxl
QWxwaGEpOworICAgIGdsOjpFcnJvciBzd2l6emxlVGV4dHVyZShJRDNEMTFTaGFkZXJSZXNvdXJj
ZVZpZXcgKnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUQzRDExUmVuZGVy
VGFyZ2V0VmlldyAqZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OkV4dGVudHMgJnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpT
d2l6emxlU3RhdGUgJnN3aXp6bGVUYXJnZXQpOwogCiAgICAgZ2w6OkVycm9yIGNvcHlUZXh0dXJl
KElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc291cmNlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6Qm94ICZzb3VyY2VBcmVhLApAQCAtMzgsMjcgKzQwLDY5IEBACiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgKnNjaXNzb3IsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0Rm9ybWF0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gZmlsdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IG1hc2tPZmZBbHBoYSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbWFza09mZkFs
cGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1ByZW11bHRpcGx5QWxw
aGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrVW5tdWx0aXBseUFscGhh
KTsKIAotICAgIGdsOjpFcnJvciBjb3B5U3RlbmNpbChJRDNEMTFSZXNvdXJjZSAqc291cmNlLCB1
bnNpZ25lZCBpbnQgc291cmNlU3VicmVzb3VyY2UsIGNvbnN0IGdsOjpCb3ggJnNvdXJjZUFyZWEs
IGNvbnN0IGdsOjpFeHRlbnRzICZzb3VyY2VTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICBJRDNEMTFSZXNvdXJjZSAqZGVzdCwgdW5zaWduZWQgaW50IGRlc3RTdWJyZXNvdXJjZSwgY29u
c3QgZ2w6OkJveCAmZGVzdEFyZWEsIGNvbnN0IGdsOjpFeHRlbnRzICZkZXN0U2l6ZSwKKyAgICBn
bDo6RXJyb3IgY29weVN0ZW5jaWwoY29uc3QgVGV4dHVyZUhlbHBlcjExICZzb3VyY2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VTdWJyZXNvdXJjZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmc291cmNlQXJlYSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNvdXJjZVNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRleHR1cmVIZWxwZXIxMSAmZGVzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRlc3RTdWJyZXNvdXJjZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmZGVzdEFyZWEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZkZXN0U2l6ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAqc2Npc3Nvcik7CiAKLSAgICBnbDo6
RXJyb3IgY29weURlcHRoKElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc291cmNlLCBjb25zdCBn
bDo6Qm94ICZzb3VyY2VBcmVhLCBjb25zdCBnbDo6RXh0ZW50cyAmc291cmNlU2l6ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIElEM0QxMURlcHRoU3RlbmNpbFZpZXcgKmRlc3QsIGNvbnN0IGds
OjpCb3ggJmRlc3RBcmVhLCBjb25zdCBnbDo6RXh0ZW50cyAmZGVzdFNpemUsCisgICAgZ2w6OkVy
cm9yIGNvcHlEZXB0aChJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNvdXJjZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc291cmNlU2l6ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIElEM0QxMURlcHRoU3RlbmNpbFZpZXcgKmRlc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6Qm94ICZkZXN0QXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpFeHRlbnRzICZkZXN0U2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpSZWN0YW5nbGUgKnNjaXNzb3IpOwogCi0gICAgZ2w6OkVycm9yIGNvcHlEZXB0aFN0
ZW5jaWwoSUQzRDExUmVzb3VyY2UgKnNvdXJjZSwgdW5zaWduZWQgaW50IHNvdXJjZVN1YnJlc291
cmNlLCBjb25zdCBnbDo6Qm94ICZzb3VyY2VBcmVhLCBjb25zdCBnbDo6RXh0ZW50cyAmc291cmNl
U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFSZXNvdXJjZSAqZGVz
dCwgdW5zaWduZWQgaW50IGRlc3RTdWJyZXNvdXJjZSwgY29uc3QgZ2w6OkJveCAmZGVzdEFyZWEs
IGNvbnN0IGdsOjpFeHRlbnRzICZkZXN0U2l6ZSwKKyAgICBnbDo6RXJyb3IgY29weURlcHRoU3Rl
bmNpbChjb25zdCBUZXh0dXJlSGVscGVyMTEgJnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlU3VicmVzb3VyY2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmc291cmNlQXJlYSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc291cmNlU2l6ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXh0dXJlSGVscGVyMTEgJmRlc3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRlc3RTdWJyZXNvdXJj
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZkZXN0QXJl
YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmZGVz
dFNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3Rhbmds
ZSAqc2Npc3Nvcik7CiAKKyAgICBnbDo6RXJyb3JPclJlc3VsdDxUZXh0dXJlSGVscGVyMTE+IHJl
c29sdmVEZXB0aChSZW5kZXJUYXJnZXQxMSAqZGVwdGgpOworCisgICAgZ2w6OkVycm9yT3JSZXN1
bHQ8VGV4dHVyZUhlbHBlcjExPiByZXNvbHZlU3RlbmNpbChSZW5kZXJUYXJnZXQxMSAqZGVwdGhT
dGVuY2lsLCBib29sIGFsc29EZXB0aCk7CisKKyAgICB1c2luZyBCbGl0Q29udmVydEZ1bmN0aW9u
ID0gdm9pZChjb25zdCBnbDo6Qm94ICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmRlc3RBcmVhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmNsaXBSZWN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzb3Vy
Y2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCBzb3VyY2VSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgZGVzdFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB0cmRpZmZfdCByZWFkT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB0cmRpZmZfdCB3cml0ZU9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgY29weVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IHNyY1BpeGVsU3RyaWRlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBkZXN0UGl4ZWxTdHJpZGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqc291cmNlRGF0YSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpkZXN0RGF0YSk7CisKICAgcHJp
dmF0ZToKICAgICBlbnVtIEJsaXRTaGFkZXJUeXBlCiAgICAgewogICAgICAgICBCTElUU0hBREVS
X0lOVkFMSUQsCiAgICAgICAgIEJMSVRTSEFERVJfMkRfUkdCQUYsCisgICAgICAgIEJMSVRTSEFE
RVJfMkRfUkdCQUZfUFJFTVVMVElQTFksCisgICAgICAgIEJMSVRTSEFERVJfMkRfUkdCQUZfVU5N
VUxUSVBMWSwKICAgICAgICAgQkxJVFNIQURFUl8yRF9CR1JBRiwKKyAgICAgICAgQkxJVFNIQURF
Ul8yRF9CR1JBRl9QUkVNVUxUSVBMWSwKKyAgICAgICAgQkxJVFNIQURFUl8yRF9CR1JBRl9VTk1V
TFRJUExZLAogICAgICAgICBCTElUU0hBREVSXzJEX1JHQkYsCisgICAgICAgIEJMSVRTSEFERVJf
MkRfUkdCRl9QUkVNVUxUSVBMWSwKKyAgICAgICAgQkxJVFNIQURFUl8yRF9SR0JGX1VOTVVMVElQ
TFksCiAgICAgICAgIEJMSVRTSEFERVJfMkRfUkdGLAogICAgICAgICBCTElUU0hBREVSXzJEX1JG
LAogICAgICAgICBCTElUU0hBREVSXzJEX0FMUEhBLApAQCAtMTA3LDkgKzE1MSwxMyBAQAogICAg
ICAgICBTV0laWkxFU0hBREVSX0FSUkFZX0lOVCwKICAgICB9OwogCi0gICAgdHlwZWRlZiB2b2lk
ICgqV3JpdGVWZXJ0ZXhGdW5jdGlvbikoY29uc3QgZ2w6OkJveCAmc291cmNlQXJlYSwgY29uc3Qg
Z2w6OkV4dGVudHMgJnNvdXJjZVNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OkJveCAmZGVzdEFyZWEsIGNvbnN0IGdsOjpFeHRlbnRzICZkZXN0
U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpvdXRW
ZXJ0aWNlcywgdW5zaWduZWQgaW50ICpvdXRTdHJpZGUsIHVuc2lnbmVkIGludCAqb3V0VmVydGV4
Q291bnQsCisgICAgdHlwZWRlZiB2b2lkICgqV3JpdGVWZXJ0ZXhGdW5jdGlvbikoY29uc3QgZ2w6
OkJveCAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6RXh0ZW50cyAmc291cmNlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZkZXN0QXJlYSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmZGVzdFNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqb3V0VmVydGljZXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpv
dXRTdHJpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50ICpvdXRWZXJ0ZXhDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEM0QxMV9QUklNSVRJVkVfVE9QT0xPR1kgKm91dFRvcG9sb2d5KTsKIAogICAgIGVu
dW0gU2hhZGVyRGltZW5zaW9uCkBAIC0xMzcsMjEgKzE4NSw3NiBAQAogCiAgICAgU2hhZGVyU3Vw
cG9ydCBnZXRTaGFkZXJTdXBwb3J0KGNvbnN0IFNoYWRlciAmc2hhZGVyKTsKIAotICAgIHN0YXRp
YyBCbGl0U2hhZGVyVHlwZSBHZXRCbGl0U2hhZGVyVHlwZShHTGVudW0gZGVzdGluYXRpb25Gb3Jt
YXQsIGJvb2wgaXNTaWduZWQsIFNoYWRlckRpbWVuc2lvbiBkaW1lbnNpb24pOworICAgIHN0YXRp
YyBCbGl0U2hhZGVyVHlwZSBHZXRCbGl0U2hhZGVyVHlwZShHTGVudW0gZGVzdGluYXRpb25Gb3Jt
YXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNT
aWduZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
dW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCB1bnBhY2tVbm11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlckRpbWVuc2lvbiBkaW1lbnNpb24pOwog
ICAgIHN0YXRpYyBTd2l6emxlU2hhZGVyVHlwZSBHZXRTd2l6emxlU2hhZGVyVHlwZShHTGVudW0g
dHlwZSwgRDNEMTFfU1JWX0RJTUVOU0lPTiBkaW1lbnNpb25hbGl0eSk7CiAKLSAgICBnbDo6RXJy
b3IgY29weURlcHRoU3RlbmNpbChJRDNEMTFSZXNvdXJjZSAqc291cmNlLCB1bnNpZ25lZCBpbnQg
c291cmNlU3VicmVzb3VyY2UsIGNvbnN0IGdsOjpCb3ggJnNvdXJjZUFyZWEsIGNvbnN0IGdsOjpF
eHRlbnRzICZzb3VyY2VTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0Qx
MVJlc291cmNlICpkZXN0LCB1bnNpZ25lZCBpbnQgZGVzdFN1YnJlc291cmNlLCBjb25zdCBnbDo6
Qm94ICZkZXN0QXJlYSwgY29uc3QgZ2w6OkV4dGVudHMgJmRlc3RTaXplLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgKnNjaXNzb3IsIGJvb2wgc3Rl
bmNpbE9ubHkpOworICAgIGdsOjpFcnJvciBjb3B5RGVwdGhTdGVuY2lsSW1wbChjb25zdCBUZXh0
dXJlSGVscGVyMTEgJnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IHNvdXJjZVN1YnJlc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc291cmNlU2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGV4dHVyZUhlbHBlcjExICZkZXN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGVzdFN1YnJl
c291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94
ICZkZXN0QXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OkV4dGVudHMgJmRlc3RTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6UmVjdGFuZ2xlICpzY2lzc29yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIHN0ZW5jaWxPbmx5KTsKIAotICAgIHZvaWQgYWRkQmxpdFNoYWRlclRvTWFw
KEJsaXRTaGFkZXJUeXBlIGJsaXRTaGFkZXJUeXBlLCBTaGFkZXJEaW1lbnNpb24gZGltZW5zaW9u
LCBJRDNEMTFQaXhlbFNoYWRlciAqcHMpOworICAgIGdsOjpFcnJvciBjb3B5QW5kQ29udmVydElt
cGwoY29uc3QgVGV4dHVyZUhlbHBlcjExICZzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlU3VicmVzb3VyY2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZzb3VyY2VBcmVhLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNvdXJjZVNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXh0dXJlSGVscGVyMTEgJmRl
c3RTdGFnaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJv
eCAmZGVzdEFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
RXh0ZW50cyAmZGVzdFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6UmVjdGFuZ2xlICpzY2lzc29yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IHJlYWRPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgd3JpdGVPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgY29weVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc3Jj
UGl4ZWxTdHJpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVz
dFBpeGVsU3RyaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmxpdENvbnZl
cnRGdW5jdGlvbiAqY29udmVydEZ1bmN0aW9uKTsKIAotICAgIGdsOjpFcnJvciBnZXRCbGl0U2hh
ZGVyKEdMZW51bSBkZXN0Rm9ybWF0LCBib29sIGlzU2lnbmVkLCBTaGFkZXJEaW1lbnNpb24gZGlt
ZW5zaW9uLCBjb25zdCBTaGFkZXIgKipzaGFkZXJPdXQpOwotICAgIGdsOjpFcnJvciBnZXRTd2l6
emxlU2hhZGVyKEdMZW51bSB0eXBlLCBEM0QxMV9TUlZfRElNRU5TSU9OIHZpZXdEaW1lbnNpb24s
IGNvbnN0IFNoYWRlciAqKnNoYWRlck91dCk7CisgICAgZ2w6OkVycm9yIGNvcHlBbmRDb252ZXJ0
KGNvbnN0IFRleHR1cmVIZWxwZXIxMSAmc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgc291cmNlU3VicmVzb3VyY2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzb3VyY2VTaXplLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUZXh0dXJlSGVscGVyMTEgJmRlc3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkZXN0U3VicmVzb3VyY2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmRlc3RBcmVhLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmZGVzdFNpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgKnNjaXNzb3IsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZWFkT2Zmc2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3Qgd3JpdGVPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBjb3B5U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IHNyY1BpeGVsU3RyaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
ZGVzdFBpeGVsU3RyaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCbGl0Q29udmVy
dEZ1bmN0aW9uICpjb252ZXJ0RnVuY3Rpb24pOwogCi0gICAgdm9pZCBhZGRTd2l6emxlU2hhZGVy
VG9NYXAoU3dpenpsZVNoYWRlclR5cGUgc3dpenpsZVNoYWRlclR5cGUsIFNoYWRlckRpbWVuc2lv
biBkaW1lbnNpb24sIElEM0QxMVBpeGVsU2hhZGVyICpwcyk7CisgICAgdm9pZCBhZGRCbGl0U2hh
ZGVyVG9NYXAoQmxpdFNoYWRlclR5cGUgYmxpdFNoYWRlclR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2hhZGVyRGltZW5zaW9uIGRpbWVuc2lvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJRDNEMTFQaXhlbFNoYWRlciAqcHMpOwogCisgICAgZ2w6OkVycm9yIGdldEJs
aXRTaGFkZXIoR0xlbnVtIGRlc3RGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBpc1NpZ25lZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1By
ZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tV
bm11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyRGltZW5z
aW9uIGRpbWVuc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTaGFkZXIg
KipzaGFkZXJPdXQpOworICAgIGdsOjpFcnJvciBnZXRTd2l6emxlU2hhZGVyKEdMZW51bSB0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDExX1NSVl9ESU1FTlNJT04gdmll
d0RpbWVuc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTaGFkZXIg
KipzaGFkZXJPdXQpOworCisgICAgdm9pZCBhZGRTd2l6emxlU2hhZGVyVG9NYXAoU3dpenpsZVNo
YWRlclR5cGUgc3dpenpsZVNoYWRlclR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2hhZGVyRGltZW5zaW9uIGRpbWVuc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJRDNEMTFQaXhlbFNoYWRlciAqcHMpOworCiAgICAgdm9pZCBjbGVhclNoYWRlck1hcCgp
OworICAgIHZvaWQgcmVsZWFzZVJlc29sdmVEZXB0aFN0ZW5jaWxSZXNvdXJjZXMoKTsKKyAgICBn
bDo6RXJyb3IgaW5pdFJlc29sdmVEZXB0aFN0ZW5jaWwoY29uc3QgZ2w6OkV4dGVudHMgJmV4dGVu
dHMpOwogCiAgICAgUmVuZGVyZXIxMSAqbVJlbmRlcmVyOwogCkBAIC0xNzcsOCArMjgwLDE2IEBA
CiAgICAgZDNkMTE6OkxhenlCbGVuZFN0YXRlIG1BbHBoYU1hc2tCbGVuZFN0YXRlOwogCiAgICAg
SUQzRDExQnVmZmVyICptU3dpenpsZUNCOworCisgICAgZDNkMTE6OkxhenlTaGFkZXI8SUQzRDEx
VmVydGV4U2hhZGVyPiBtUmVzb2x2ZURlcHRoU3RlbmNpbFZTOworICAgIGQzZDExOjpMYXp5U2hh
ZGVyPElEM0QxMVBpeGVsU2hhZGVyPiBtUmVzb2x2ZURlcHRoUFM7CisgICAgZDNkMTE6OkxhenlT
aGFkZXI8SUQzRDExUGl4ZWxTaGFkZXI+IG1SZXNvbHZlRGVwdGhTdGVuY2lsUFM7CisgICAgZDNk
MTE6OkxhenlTaGFkZXI8SUQzRDExUGl4ZWxTaGFkZXI+IG1SZXNvbHZlU3RlbmNpbFBTOworICAg
IElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqbVN0ZW5jaWxTUlY7CisgICAgVGV4dHVyZUhlbHBl
cjExIG1SZXNvbHZlZERlcHRoU3RlbmNpbDsKKyAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpt
UmVzb2x2ZWREZXB0aFN0ZW5jaWxSVFZpZXc7CiB9OwogCi19Cit9ICAvLyBuYW1lc3BhY2UgcngK
IAotI2VuZGlmICAgLy8gTElCQU5HTEVfUkVOREVSRVJfRDNEX0QzRDExX0JMSVQxMV9IXworI2Vu
ZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfQkxJVDExX0hfCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0J1ZmZl
cjExLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL0J1ZmZlcjExLmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9C
dWZmZXIxMS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlIDxt
ZW1vcnk+CiAKICNpbmNsdWRlICJjb21tb24vTWVtb3J5QnVmZmVyLmgiCisjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvcmVuZGVyZXJfdXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvSW5kZXhEYXRhTWFuYWdlci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2QzZC9WZXJ0ZXhEYXRhTWFuYWdlci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9SZW5kZXJlcjExLmgiCkBAIC0zOSwzMSArNDAsMTAgQEAKIAogfSAgLy8gYW5vbnlt
b3VzIG5hbWVzcGFjZQogCi1QYWNrUGl4ZWxzUGFyYW1zOjpQYWNrUGl4ZWxzUGFyYW1zKCkKLSAg
ICA6IGZvcm1hdChHTF9OT05FKSwgdHlwZShHTF9OT05FKSwgb3V0cHV0UGl0Y2goMCksIHBhY2tC
dWZmZXIobnVsbHB0ciksIG9mZnNldCgwKQotewotfQotCi1QYWNrUGl4ZWxzUGFyYW1zOjpQYWNr
UGl4ZWxzUGFyYW1zKGNvbnN0IGdsOjpSZWN0YW5nbGUgJmFyZWFJbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdEluLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZUluLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgb3V0cHV0UGl0Y2hJbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsUGFja1N0YXRlICZwYWNrSW4sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBvZmZzZXRJbikKLSAgICA6IGFyZWEo
YXJlYUluKSwKLSAgICAgIGZvcm1hdChmb3JtYXRJbiksCi0gICAgICB0eXBlKHR5cGVJbiksCi0g
ICAgICBvdXRwdXRQaXRjaChvdXRwdXRQaXRjaEluKSwKLSAgICAgIHBhY2tCdWZmZXIocGFja0lu
LnBpeGVsQnVmZmVyLmdldCgpKSwKLSAgICAgIHBhY2socGFja0luLmFsaWdubWVudCwgcGFja0lu
LnJldmVyc2VSb3dPcmRlciksCi0gICAgICBvZmZzZXQob2Zmc2V0SW4pCi17Ci19Ci0KIG5hbWVz
cGFjZSBnbF9kM2QxMQogewogCi1EM0QxMV9NQVAgR2V0RDNETWFwVHlwZUZyb21CaXRzKEdMYml0
ZmllbGQgYWNjZXNzKQorRDNEMTFfTUFQIEdldEQzRE1hcFR5cGVGcm9tQml0cyhCdWZmZXJVc2Fn
ZSB1c2FnZSwgR0xiaXRmaWVsZCBhY2Nlc3MpCiB7CiAgICAgYm9vbCByZWFkQml0ICA9ICgoYWNj
ZXNzICYgR0xfTUFQX1JFQURfQklUKSAhPSAwKTsKICAgICBib29sIHdyaXRlQml0ID0gKChhY2Nl
c3MgJiBHTF9NQVBfV1JJVEVfQklUKSAhPSAwKTsKQEAgLTc5LDcgKzU5LDggQEAKICAgICB9CiAg
ICAgZWxzZSBpZiAod3JpdGVCaXQgJiYgIXJlYWRCaXQpCiAgICAgewotICAgICAgICByZXR1cm4g
RDNEMTFfTUFQX1dSSVRFOworICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIHVuaWZvcm0gc3Rv
cmFnZSAtIHdlIG9ubHkgYWxsb3cgZnVsbCBidWZmZXIgdXBkYXRlcy4KKyAgICAgICAgcmV0dXJu
IHVzYWdlID09IEJVRkZFUl9VU0FHRV9VTklGT1JNID8gRDNEMTFfTUFQX1dSSVRFX0RJU0NBUkQg
OiBEM0QxMV9NQVBfV1JJVEU7CiAgICAgfQogICAgIGVsc2UgaWYgKHdyaXRlQml0ICYmIHJlYWRC
aXQpCiAgICAgewpAQCAtMTA4LDcgKzg5LDcgQEAKICAgICBzaXplX3QgZ2V0U2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1CdWZmZXJTaXplOyB9CiAgICAgdm9pZCBzZXREYXRhUmV2aXNpb24oRGF0YVJl
dmlzaW9uIHJldikgeyBtUmV2aXNpb24gPSByZXY7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc01h
cHBhYmxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01hcHBhYmxlKEdMYml0Zmll
bGQgYWNjZXNzKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGdsOjpFcnJvck9yUmVzdWx0PENv
cHlSZXN1bHQ+IGNvcHlGcm9tU3RvcmFnZShCdWZmZXJTdG9yYWdlICpzb3VyY2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IHNvdXJjZU9mZnNldCwKQEAgLTEzOCwxMCArMTE5LDEyIEBACiBjbGFzcyBCdWZmZXIxMTo6TmF0
aXZlU3RvcmFnZSA6IHB1YmxpYyBCdWZmZXIxMTo6QnVmZmVyU3RvcmFnZQogewogICBwdWJsaWM6
Ci0gICAgTmF0aXZlU3RvcmFnZShSZW5kZXJlcjExICpyZW5kZXJlciwgQnVmZmVyVXNhZ2UgdXNh
Z2UsIGNvbnN0IE5vdGlmaWNhdGlvblNldCAqb25TdG9yYWdlQ2hhbmdlZCk7CisgICAgTmF0aXZl
U3RvcmFnZShSZW5kZXJlcjExICpyZW5kZXJlciwKKyAgICAgICAgICAgICAgICAgIEJ1ZmZlclVz
YWdlIHVzYWdlLAorICAgICAgICAgICAgICAgICAgY29uc3QgYW5nbGU6OkJyb2FkY2FzdENoYW5u
ZWwgKm9uU3RvcmFnZUNoYW5nZWQpOwogICAgIH5OYXRpdmVTdG9yYWdlKCkgb3ZlcnJpZGU7CiAK
LSAgICBib29sIGlzTWFwcGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtVXNhZ2UgPT0g
QlVGRkVSX1VTQUdFX1NUQUdJTkc7IH0KKyAgICBib29sIGlzTWFwcGFibGUoR0xiaXRmaWVsZCBh
Y2Nlc3MpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgSUQzRDExQnVmZmVyICpnZXROYXRpdmVTdG9y
YWdlKCkgY29uc3QgeyByZXR1cm4gbU5hdGl2ZVN0b3JhZ2U7IH0KICAgICBnbDo6RXJyb3JPclJl
c3VsdDxDb3B5UmVzdWx0PiBjb3B5RnJvbVN0b3JhZ2UoQnVmZmVyU3RvcmFnZSAqc291cmNlLApA
QCAtMTU2LDE0ICsxMzksMTggQEAKICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKiptYXBQb2lu
dGVyT3V0KSBvdmVycmlkZTsKICAgICB2b2lkIHVubWFwKCkgb3ZlcnJpZGU7CiAKKyAgICBnbDo6
RXJyb3JPclJlc3VsdDxJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKj4gZ2V0U1JWRm9yRm9ybWF0
KERYR0lfRk9STUFUIHNydkZvcm1hdCk7CisKICAgcHJpdmF0ZToKLSAgICBzdGF0aWMgdm9pZCBm
aWxsQnVmZmVyRGVzYyhEM0QxMV9CVUZGRVJfREVTQyAqYnVmZmVyRGVzYywKKyAgICBzdGF0aWMg
dm9pZCBGaWxsQnVmZmVyRGVzYyhEM0QxMV9CVUZGRVJfREVTQyAqYnVmZmVyRGVzYywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJlcjExICpyZW5kZXJlciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJVc2FnZSB1c2FnZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYnVmZmVyU2l6ZSk7CisgICAgdm9pZCBjbGVh
clNSVnMoKTsKIAogICAgIElEM0QxMUJ1ZmZlciAqbU5hdGl2ZVN0b3JhZ2U7Ci0gICAgY29uc3Qg
Tm90aWZpY2F0aW9uU2V0ICptT25TdG9yYWdlQ2hhbmdlZDsKKyAgICBjb25zdCBhbmdsZTo6QnJv
YWRjYXN0Q2hhbm5lbCAqbU9uU3RvcmFnZUNoYW5nZWQ7CisgICAgc3RkOjptYXA8RFhHSV9GT1JN
QVQsIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqPiBtQnVmZmVyUmVzb3VyY2VWaWV3czsKIH07
CiAKIC8vIEEgZW11bGF0ZWQgaW5kZXhlZCBidWZmZXIgc3RvcmFnZSByZXByZXNlbnRzIGFuIHVu
ZGVybHlpbmcgRDNEMTEgYnVmZmVyIGZvciBkYXRhCkBAIC0xNzUsNyArMTYyLDcgQEAKICAgICBF
bXVsYXRlZEluZGV4ZWRTdG9yYWdlKFJlbmRlcmVyMTEgKnJlbmRlcmVyKTsKICAgICB+RW11bGF0
ZWRJbmRleGVkU3RvcmFnZSgpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBpc01hcHBhYmxlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNNYXBwYWJsZShHTGJpdGZp
ZWxkIGFjY2VzcykgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgZ2w6OkVy
cm9yT3JSZXN1bHQ8SUQzRDExQnVmZmVyICo+IGdldE5hdGl2ZVN0b3JhZ2UoU291cmNlSW5kZXhE
YXRhICppbmRleEluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVHJhbnNsYXRlZEF0dHJpYnV0ZSAmYXR0cmlidXRlLApAQCAt
MjA4LDcgKzE5NSw3IEBACiAgICAgZXhwbGljaXQgUGFja1N0b3JhZ2UoUmVuZGVyZXIxMSAqcmVu
ZGVyZXIpOwogICAgIH5QYWNrU3RvcmFnZSgpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBpc01hcHBh
YmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNNYXBwYWJs
ZShHTGJpdGZpZWxkIGFjY2VzcykgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IGdsOjpFcnJvck9yUmVzdWx0PENvcHlSZXN1bHQ+IGNvcHlGcm9tU3RvcmFnZShCdWZmZXJTdG9y
YWdlICpzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBzb3VyY2VPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLApAQCAtMjQzLDcgKzIzMCw3IEBACiAg
ICAgZXhwbGljaXQgU3lzdGVtTWVtb3J5U3RvcmFnZShSZW5kZXJlcjExICpyZW5kZXJlcik7CiAg
ICAgflN5c3RlbU1lbW9yeVN0b3JhZ2UoKSBvdmVycmlkZSB7fQogCi0gICAgYm9vbCBpc01hcHBh
YmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNNYXBwYWJs
ZShHTGJpdGZpZWxkIGFjY2VzcykgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IGdsOjpFcnJvck9yUmVzdWx0PENvcHlSZXN1bHQ+IGNvcHlGcm9tU3RvcmFnZShCdWZmZXJTdG9y
YWdlICpzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBzb3VyY2VPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLApAQCAtMjY3LDEwICsyNTQsMTEgQEAK
ICAgICAgIG1SZW5kZXJlcihyZW5kZXJlciksCiAgICAgICBtU2l6ZSgwKSwKICAgICAgIG1NYXBw
ZWRTdG9yYWdlKG51bGxwdHIpLAotICAgICAgbUJ1ZmZlclN0b3JhZ2VzKEJVRkZFUl9VU0FHRV9D
T1VOVCwgbnVsbHB0ciksCisgICAgICBtQnVmZmVyU3RvcmFnZXMoe30pLAorICAgICAgbURlYWxs
b2NUaHJlc2hvbGRzKHt9KSwKKyAgICAgIG1JZGxlbmVzcyh7fSksCiAgICAgICBtQ29uc3RhbnRC
dWZmZXJTdG9yYWdlQWRkaXRpb25hbFNpemUoMCksCi0gICAgICBtTWF4Q29uc3RhbnRCdWZmZXJM
cnVDb3VudCgwKSwKLSAgICAgIG1SZWFkVXNhZ2VDb3VudCgwKQorICAgICAgbU1heENvbnN0YW50
QnVmZmVyTHJ1Q291bnQoMCkKIHsKIH0KIApAQCAtMjg5LDEwICsyNzcsMTAgQEAKICAgICBtUmVu
ZGVyZXItPm9uQnVmZmVyRGVsZXRlKHRoaXMpOwogfQogCi1nbDo6RXJyb3IgQnVmZmVyMTE6OnNl
dERhdGEoY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIEdMZW51bSB1c2FnZSkKK2dsOjpF
cnJvciBCdWZmZXIxMTo6c2V0RGF0YShHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkICpkYXRhLCBz
aXplX3Qgc2l6ZSwgR0xlbnVtIHVzYWdlKQogewogICAgIHVwZGF0ZUQzREJ1ZmZlclVzYWdlKHVz
YWdlKTsKLSAgICBBTkdMRV9UUlkoc2V0U3ViRGF0YShkYXRhLCBzaXplLCAwKSk7CisgICAgQU5H
TEVfVFJZKHNldFN1YkRhdGEodGFyZ2V0LCBkYXRhLCBzaXplLCAwKSk7CiAgICAgcmV0dXJuIGds
OjpOb0Vycm9yKCk7CiB9CiAKQEAgLTMwMSw4ICsyODksNiBAQAogICAgIFN5c3RlbU1lbW9yeVN0
b3JhZ2UgKnN5c3RlbU1lbW9yeVN0b3JhZ2UgPSBudWxscHRyOwogICAgIEFOR0xFX1RSWV9SRVNV
TFQoZ2V0U3lzdGVtTWVtb3J5U3RvcmFnZSgpLCBzeXN0ZW1NZW1vcnlTdG9yYWdlKTsKIAotICAg
IG1SZWFkVXNhZ2VDb3VudCA9IDA7Ci0KICAgICBBU1NFUlQoc3lzdGVtTWVtb3J5U3RvcmFnZS0+
Z2V0U2l6ZSgpID49IG1TaXplKTsKIAogICAgICpvdXREYXRhID0gc3lzdGVtTWVtb3J5U3RvcmFn
ZS0+Z2V0U3lzdGVtQ29weSgpLT5kYXRhKCk7CkBAIC0zMTYsNyArMzAyLDcgQEAKICAgICByZXR1
cm4gR2V0QXM8U3lzdGVtTWVtb3J5U3RvcmFnZT4oc3RvcmFnZSk7CiB9CiAKLWdsOjpFcnJvciBC
dWZmZXIxMTo6c2V0U3ViRGF0YShjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgc2l6ZV90
IG9mZnNldCkKK2dsOjpFcnJvciBCdWZmZXIxMTo6c2V0U3ViRGF0YShHTGVudW0gdGFyZ2V0LCBj
b25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG9mZnNldCkKIHsKICAgICBzaXpl
X3QgcmVxdWlyZWRTaXplID0gc2l6ZSArIG9mZnNldDsKIApAQCAtMzIzLDEwICszMDksMTQgQEAK
ICAgICBpZiAoZGF0YSAmJiBzaXplID4gMCkKICAgICB7CiAgICAgICAgIC8vIFVzZSBzeXN0ZW0g
bWVtb3J5IHN0b3JhZ2UgZm9yIGR5bmFtaWMgYnVmZmVycy4KLQorICAgICAgICAvLyBUcnkgdXNp
bmcgYSBjb25zdGFudCBzdG9yYWdlIGZvciBjb25zdGFudCBidWZmZXJzCiAgICAgICAgIEJ1ZmZl
clN0b3JhZ2UgKndyaXRlQnVmZmVyID0gbnVsbHB0cjsKLSAgICAgICAgaWYgKHN1cHBvcnRzRGly
ZWN0QmluZGluZygpKQorICAgICAgICBpZiAodGFyZ2V0ID09IEdMX1VOSUZPUk1fQlVGRkVSICYm
IG9mZnNldCA9PSAwICYmIHNpemUgPj0gbVNpemUpCiAgICAgICAgIHsKKyAgICAgICAgICAgIEFO
R0xFX1RSWV9SRVNVTFQoZ2V0QnVmZmVyU3RvcmFnZShCVUZGRVJfVVNBR0VfVU5JRk9STSksIHdy
aXRlQnVmZmVyKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzdXBwb3J0c0RpcmVjdEJp
bmRpbmcoKSkKKyAgICAgICAgewogICAgICAgICAgICAgQU5HTEVfVFJZX1JFU1VMVChnZXRTdGFn
aW5nU3RvcmFnZSgpLCB3cml0ZUJ1ZmZlcik7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQpAQCAt
MzgwLDExICszNzAsMTIgQEAKIAogICAgIC8vIElmIGNvcHlpbmcgdG8vZnJvbSBhIHBpeGVsIHBh
Y2sgYnVmZmVyLCB3ZSBtdXN0IGhhdmUgYSBzdGFnaW5nIG9yCiAgICAgLy8gcGFjayBidWZmZXIg
cGFydG5lciwgYmVjYXVzZSBvdGhlciBuYXRpdmUgYnVmZmVycyBjYW4ndCBiZSBtYXBwZWQKLSAg
ICBpZiAoY29weURlc3QtPmdldFVzYWdlKCkgPT0gQlVGRkVSX1VTQUdFX1BJWEVMX1BBQ0sgJiYg
IWNvcHlTb3VyY2UtPmlzTWFwcGFibGUoKSkKKyAgICBpZiAoY29weURlc3QtPmdldFVzYWdlKCkg
PT0gQlVGRkVSX1VTQUdFX1BJWEVMX1BBQ0sgJiYgIWNvcHlTb3VyY2UtPmlzTWFwcGFibGUoR0xf
TUFQX1JFQURfQklUKSkKICAgICB7CiAgICAgICAgIEFOR0xFX1RSWV9SRVNVTFQoc291cmNlQnVm
ZmVyLT5nZXRTdGFnaW5nU3RvcmFnZSgpLCBjb3B5U291cmNlKTsKICAgICB9Ci0gICAgZWxzZSBp
ZiAoY29weVNvdXJjZS0+Z2V0VXNhZ2UoKSA9PSBCVUZGRVJfVVNBR0VfUElYRUxfUEFDSyAmJiAh
Y29weURlc3QtPmlzTWFwcGFibGUoKSkKKyAgICBlbHNlIGlmIChjb3B5U291cmNlLT5nZXRVc2Fn
ZSgpID09IEJVRkZFUl9VU0FHRV9QSVhFTF9QQUNLICYmCisgICAgICAgICAgICAgIWNvcHlEZXN0
LT5pc01hcHBhYmxlKEdMX01BUF9XUklURV9CSVQpKQogICAgIHsKICAgICAgICAgQU5HTEVfVFJZ
X1JFU1VMVChnZXRTdGFnaW5nU3RvcmFnZSgpLCBjb3B5RGVzdCk7CiAgICAgfQpAQCAtNDkxLDIx
ICs0ODIsNDAgQEAKICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIEJ1
ZmZlcjExOjptYXJrQnVmZmVyVXNhZ2UoKQordm9pZCBCdWZmZXIxMTo6dXBkYXRlRGVhbGxvY1Ro
cmVzaG9sZChCdWZmZXJVc2FnZSB1c2FnZSkKIHsKLSAgICBtUmVhZFVzYWdlQ291bnQrKzsKKyAg
ICAvLyBUaGUgZm9sbG93aW5nIHN0cmF0ZWd5IHdhcyB0dW5lZCBvbiB0aGUgT29ydCBvbmxpbmUg
YmVuY2htYXJrIChodHRwOi8vb29ydG9ubGluZS5nbC8pCisgICAgLy8gYXMgd2VsbCBhcyBhIGN1
c3RvbSBtaWNyb2JlbmNobWFyayAoSW5kZXhDb252ZXJzaW9uUGVyZlRlc3QuUnVuL2luZGV4X3Jh
bmdlX2QzZDExKQogCi0gICAgLy8gRnJlZSB0aGUgc3lzdGVtIG1lbW9yeSBzdG9yYWdlIGlmIHdl
IGRlY2lkZSBpdCBpc24ndCBiZWluZyB1c2VkIHZlcnkgb2Z0ZW4uCi0gICAgY29uc3QgdW5zaWdu
ZWQgaW50IHVzYWdlTGltaXQgPSA1OworICAgIC8vIEZpcnN0IHJlYWRiYWNrOiA4IHVubW9kaWZp
ZWQgdXNlcyBiZWZvcmUgd2UgZnJlZSBidWZmZXIgbWVtb3J5LgorICAgIC8vIEFmdGVyIHRoYXQs
IGRvdWJsZSB0aGUgdGhyZXNob2xkIGVhY2ggdGltZSB1bnRpbCB3ZSByZWFjaCB0aGUgbWF4Lgor
ICAgIGlmIChtRGVhbGxvY1RocmVzaG9sZHNbdXNhZ2VdID09IDApCisgICAgeworICAgICAgICBt
RGVhbGxvY1RocmVzaG9sZHNbdXNhZ2VdID0gODsKKyAgICB9CisgICAgZWxzZSBpZiAobURlYWxs
b2NUaHJlc2hvbGRzW3VzYWdlXSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pjo6
bWF4KCkgLyAydSkKKyAgICB7CisgICAgICAgIG1EZWFsbG9jVGhyZXNob2xkc1t1c2FnZV0gKj0g
MnU7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1EZWFsbG9jVGhyZXNob2xkc1t1
c2FnZV0gPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGludD46Om1heCgpOworICAgIH0K
K30KIAotICAgIEJ1ZmZlclN0b3JhZ2UgKiZzeXNNZW1Vc2FnZSA9IG1CdWZmZXJTdG9yYWdlc1tC
VUZGRVJfVVNBR0VfU1lTVEVNX01FTU9SWV07Ci0gICAgaWYgKG1SZWFkVXNhZ2VDb3VudCA+IHVz
YWdlTGltaXQgJiYgc3lzTWVtVXNhZ2UgIT0gbnVsbHB0cikKKy8vIEZyZWUgdGhlIHN0b3JhZ2Ug
aWYgd2UgZGVjaWRlIGl0IGlzbid0IGJlaW5nIHVzZWQgdmVyeSBvZnRlbi4KK2dsOjpFcnJvciBC
dWZmZXIxMTo6Y2hlY2tGb3JEZWFsbG9jYXRpb24oQnVmZmVyVXNhZ2UgdXNhZ2UpCit7CisgICAg
bUlkbGVuZXNzW3VzYWdlXSsrOworCisgICAgQnVmZmVyU3RvcmFnZSAqJnN0b3JhZ2UgPSBtQnVm
ZmVyU3RvcmFnZXNbdXNhZ2VdOworICAgIGlmIChzdG9yYWdlICE9IG51bGxwdHIgJiYgbUlkbGVu
ZXNzW3VzYWdlXSA+IG1EZWFsbG9jVGhyZXNob2xkc1t1c2FnZV0pCiAgICAgewogICAgICAgICBC
dWZmZXJTdG9yYWdlICpsYXRlc3RTdG9yYWdlID0gbnVsbHB0cjsKICAgICAgICAgQU5HTEVfVFJZ
X1JFU1VMVChnZXRMYXRlc3RCdWZmZXJTdG9yYWdlKCksIGxhdGVzdFN0b3JhZ2UpOwotICAgICAg
ICBpZiAobGF0ZXN0U3RvcmFnZSAhPSBzeXNNZW1Vc2FnZSkKKyAgICAgICAgaWYgKGxhdGVzdFN0
b3JhZ2UgIT0gc3RvcmFnZSkKICAgICAgICAgewotICAgICAgICAgICAgU2FmZURlbGV0ZShzeXNN
ZW1Vc2FnZSk7CisgICAgICAgICAgICBTYWZlRGVsZXRlKHN0b3JhZ2UpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC01MTIsMTAgKzUyMiwyNSBAQAogICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwog
fQogCitnbDo6RXJyb3IgQnVmZmVyMTE6Om1hcmtCdWZmZXJVc2FnZShCdWZmZXJVc2FnZSB1c2Fn
ZSkKK3sKKyAgICBtSWRsZW5lc3NbdXNhZ2VdID0gMDsKKworICAgIGlmICh1c2FnZSAhPSBCVUZG
RVJfVVNBR0VfU1lTVEVNX01FTU9SWSkKKyAgICB7CisgICAgICAgIEFOR0xFX1RSWShjaGVja0Zv
ckRlYWxsb2NhdGlvbihCVUZGRVJfVVNBR0VfU1lTVEVNX01FTU9SWSkpOworICAgIH0KKworICAg
IGlmICh1c2FnZSAhPSBCVUZGRVJfVVNBR0VfU1RBR0lORykKKyAgICB7CisgICAgICAgIEFOR0xF
X1RSWShjaGVja0ZvckRlYWxsb2NhdGlvbihCVUZGRVJfVVNBR0VfU1RBR0lORykpOworICAgIH0K
KworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworfQorCiBnbDo6RXJyb3JPclJlc3VsdDxJRDNE
MTFCdWZmZXIgKj4gQnVmZmVyMTE6OmdldEJ1ZmZlcihCdWZmZXJVc2FnZSB1c2FnZSkKIHsKLSAg
ICBBTkdMRV9UUlkobWFya0J1ZmZlclVzYWdlKCkpOwotCiAgICAgQnVmZmVyU3RvcmFnZSAqc3Rv
cmFnZSA9IG51bGxwdHI7CiAgICAgQU5HTEVfVFJZX1JFU1VMVChnZXRCdWZmZXJTdG9yYWdlKHVz
YWdlKSwgc3RvcmFnZSk7CiAgICAgcmV0dXJuIEdldEFzPE5hdGl2ZVN0b3JhZ2U+KHN0b3JhZ2Up
LT5nZXROYXRpdmVTdG9yYWdlKCk7CkBAIC01MjgsOCArNTUzLDYgQEAKIHsKICAgICBBU1NFUlQo
aW5kZXhJbmZvKTsKIAotICAgIEFOR0xFX1RSWShtYXJrQnVmZmVyVXNhZ2UoKSk7Ci0KICAgICBC
dWZmZXJTdG9yYWdlICp1bnR5cGVkU3RvcmFnZSA9IG51bGxwdHI7CiAgICAgQU5HTEVfVFJZX1JF
U1VMVChnZXRCdWZmZXJTdG9yYWdlKEJVRkZFUl9VU0FHRV9FTVVMQVRFRF9JTkRFWEVEX1ZFUlRF
WCksIHVudHlwZWRTdG9yYWdlKTsKIApAQCAtNTQ0LDExICs1NjcsOSBAQAogCiBnbDo6RXJyb3JP
clJlc3VsdDxJRDNEMTFCdWZmZXIgKj4gQnVmZmVyMTE6OmdldENvbnN0YW50QnVmZmVyUmFuZ2Uo
R0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIHNpemUpCiB7Ci0gICAgQU5HTEVfVFJZKG1hcmtC
dWZmZXJVc2FnZSgpKTsKLQogICAgIEJ1ZmZlclN0b3JhZ2UgKmJ1ZmZlclN0b3JhZ2UgPSBudWxs
cHRyOwogCi0gICAgaWYgKG9mZnNldCA9PSAwKQorICAgIGlmIChvZmZzZXQgPT0gMCB8fCBtUmVu
ZGVyZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCkuc3VwcG9ydHNDb25zdGFudEJ1ZmZlck9m
ZnNldHMpCiAgICAgewogICAgICAgICBBTkdMRV9UUllfUkVTVUxUKGdldEJ1ZmZlclN0b3JhZ2Uo
QlVGRkVSX1VTQUdFX1VOSUZPUk0pLCBidWZmZXJTdG9yYWdlKTsKICAgICB9CkBAIC01NjQsNDIg
KzU4NSw4IEBACiB7CiAgICAgQnVmZmVyU3RvcmFnZSAqc3RvcmFnZSA9IG51bGxwdHI7CiAgICAg
QU5HTEVfVFJZX1JFU1VMVChnZXRCdWZmZXJTdG9yYWdlKEJVRkZFUl9VU0FHRV9QSVhFTF9VTlBB
Q0spLCBzdG9yYWdlKTsKLSAgICBJRDNEMTFCdWZmZXIgKmJ1ZmZlciA9IEdldEFzPE5hdGl2ZVN0
b3JhZ2U+KHN0b3JhZ2UpLT5nZXROYXRpdmVTdG9yYWdlKCk7Ci0KLSAgICBhdXRvIGJ1ZmZlclNS
Vkl0ID0gbUJ1ZmZlclJlc291cmNlVmlld3MuZmluZChzcnZGb3JtYXQpOwotCi0gICAgaWYgKGJ1
ZmZlclNSVkl0ICE9IG1CdWZmZXJSZXNvdXJjZVZpZXdzLmVuZCgpKQotICAgIHsKLSAgICAgICAg
aWYgKGJ1ZmZlclNSVkl0LT5zZWNvbmQuZmlyc3QgPT0gYnVmZmVyKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gYnVmZmVyU1JWSXQtPnNlY29uZC5zZWNvbmQ7Ci0gICAgICAgIH0KLSAg
ICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBUaGUgdW5kZXJseWluZyBidWZm
ZXIgaGFzIGNoYW5nZWQgc2luY2UgdGhlIFNSViB3YXMgY3JlYXRlZDogcmVjcmVhdGUgdGhlIFNS
Vi4KLSAgICAgICAgICAgIFNhZmVSZWxlYXNlKGJ1ZmZlclNSVkl0LT5zZWNvbmQuc2Vjb25kKTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIElEM0QxMURldmljZSAqZGV2aWNlICAgICAgICAgICAg
ICAgID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKLSAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZp
ZXcgKmJ1ZmZlclNSViA9IG51bGxwdHI7Ci0KLSAgICBjb25zdCBkM2QxMTo6RFhHSUZvcm1hdFNp
emUgJmR4Z2lGb3JtYXRJbmZvID0gZDNkMTE6OkdldERYR0lGb3JtYXRTaXplSW5mbyhzcnZGb3Jt
YXQpOwotCi0gICAgRDNEMTFfU0hBREVSX1JFU09VUkNFX1ZJRVdfREVTQyBidWZmZXJTUlZEZXNj
OwotICAgIGJ1ZmZlclNSVkRlc2MuQnVmZmVyLkVsZW1lbnRPZmZzZXQgPSAwOwotICAgIGJ1ZmZl
clNSVkRlc2MuQnVmZmVyLkVsZW1lbnRXaWR0aCA9Ci0gICAgICAgIHN0YXRpY19jYXN0PHVuc2ln
bmVkIGludD4obVNpemUpIC8gZHhnaUZvcm1hdEluZm8ucGl4ZWxCeXRlczsKLSAgICBidWZmZXJT
UlZEZXNjLlZpZXdEaW1lbnNpb24gICAgICAgID0gRDNEMTFfU1JWX0RJTUVOU0lPTl9CVUZGRVI7
Ci0gICAgYnVmZmVyU1JWRGVzYy5Gb3JtYXQgICAgICAgICAgICAgICA9IHNydkZvcm1hdDsKLQot
ICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVTaGFkZXJSZXNvdXJjZVZpZXcoYnVm
ZmVyLCAmYnVmZmVyU1JWRGVzYywgJmJ1ZmZlclNSVik7Ci0gICAgVU5VU0VEX0FTU0VSVElPTl9W
QVJJQUJMRShyZXN1bHQpOwotICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7Ci0KLSAgICBt
QnVmZmVyUmVzb3VyY2VWaWV3c1tzcnZGb3JtYXRdID0gQnVmZmVyU1JWUGFpcihidWZmZXIsIGJ1
ZmZlclNSVik7Ci0KLSAgICByZXR1cm4gYnVmZmVyU1JWOworICAgIE5hdGl2ZVN0b3JhZ2UgKm5h
dGl2ZVN0b3JhZ2UgPSBHZXRBczxOYXRpdmVTdG9yYWdlPihzdG9yYWdlKTsKKyAgICByZXR1cm4g
bmF0aXZlU3RvcmFnZS0+Z2V0U1JWRm9yRm9ybWF0KHNydkZvcm1hdCk7CiB9CiAKIGdsOjpFcnJv
ciBCdWZmZXIxMTo6cGFja1BpeGVscyhjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICZy
ZWFkQXR0YWNobWVudCwKQEAgLTY0OCwxMiArNjM1LDE0IEBACiAgICAgfQogCiAgICAgQU5HTEVf
VFJZKHVwZGF0ZUJ1ZmZlclN0b3JhZ2UobmV3U3RvcmFnZSwgMCwgbVNpemUpKTsKKyAgICBBTkdM
RV9UUlkobWFya0J1ZmZlclVzYWdlKHVzYWdlKSk7CiAKICAgICByZXR1cm4gbmV3U3RvcmFnZTsK
IH0KIAotQnVmZmVyMTE6OkJ1ZmZlclN0b3JhZ2UgKkJ1ZmZlcjExOjphbGxvY2F0ZVN0b3JhZ2Uo
QnVmZmVyVXNhZ2UgdXNhZ2UpIGNvbnN0CitCdWZmZXIxMTo6QnVmZmVyU3RvcmFnZSAqQnVmZmVy
MTE6OmFsbG9jYXRlU3RvcmFnZShCdWZmZXJVc2FnZSB1c2FnZSkKIHsKKyAgICB1cGRhdGVEZWFs
bG9jVGhyZXNob2xkKHVzYWdlKTsKICAgICBzd2l0Y2ggKHVzYWdlKQogICAgIHsKICAgICAgICAg
Y2FzZSBCVUZGRVJfVVNBR0VfUElYRUxfUEFDSzoKQEAgLTY2Myw3ICs2NTIsNyBAQAogICAgICAg
ICBjYXNlIEJVRkZFUl9VU0FHRV9FTVVMQVRFRF9JTkRFWEVEX1ZFUlRFWDoKICAgICAgICAgICAg
IHJldHVybiBuZXcgRW11bGF0ZWRJbmRleGVkU3RvcmFnZShtUmVuZGVyZXIpOwogICAgICAgICBj
YXNlIEJVRkZFUl9VU0FHRV9WRVJURVhfT1JfVFJBTlNGT1JNX0ZFRURCQUNLOgotICAgICAgICAg
ICAgcmV0dXJuIG5ldyBOYXRpdmVTdG9yYWdlKG1SZW5kZXJlciwgdXNhZ2UsICZtRGlyZWN0QnVm
ZmVyRGlydHlDYWxsYmFja3MpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVTdG9yYWdl
KG1SZW5kZXJlciwgdXNhZ2UsICZtRGlyZWN0QnJvYWRjYXN0Q2hhbm5lbCk7CiAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZVN0b3JhZ2UobVJlbmRlcmVyLCB1
c2FnZSwgbnVsbHB0cik7CiAgICAgfQpAQCAtNzI0LDYgKzcxMyw3IEBACiAgICAgfQogCiAgICAg
QU5HTEVfVFJZKHVwZGF0ZUJ1ZmZlclN0b3JhZ2UobmV3U3RvcmFnZSwgb2Zmc2V0LCBzaXplKSk7
CisgICAgQU5HTEVfVFJZKG1hcmtCdWZmZXJVc2FnZShCVUZGRVJfVVNBR0VfVU5JRk9STSkpOwog
ICAgIHJldHVybiBuZXdTdG9yYWdlOwogfQogCkBAIC03NDEsNyArNzMxLDcgQEAKICAgICAgICAg
Ly8gZGF0YSBkaXJlY3RseS4gSWYgd2UncmUgYWxyZWFkeSB1c2luZyBhIHN0YWdpbmcgYnVmZmVy
IHdlJ3JlIGZpbmUuCiAgICAgICAgIGlmIChsYXRlc3RCdWZmZXItPmdldFVzYWdlKCkgIT0gQlVG
RkVSX1VTQUdFX1NUQUdJTkcgJiYKICAgICAgICAgICAgIHN0b3JhZ2UtPmdldFVzYWdlKCkgIT0g
QlVGRkVSX1VTQUdFX1NUQUdJTkcgJiYKLSAgICAgICAgICAgICghbGF0ZXN0QnVmZmVyLT5pc01h
cHBhYmxlKCkgfHwgIXN0b3JhZ2UtPmlzTWFwcGFibGUoKSkpCisgICAgICAgICAgICAoIWxhdGVz
dEJ1ZmZlci0+aXNNYXBwYWJsZShHTF9NQVBfUkVBRF9CSVQpIHx8ICFzdG9yYWdlLT5pc01hcHBh
YmxlKEdMX01BUF9XUklURV9CSVQpKSkKICAgICAgICAgewogICAgICAgICAgICAgTmF0aXZlU3Rv
cmFnZSAqc3RhZ2luZ0J1ZmZlciA9IG51bGxwdHI7CiAgICAgICAgICAgICBBTkdMRV9UUllfUkVT
VUxUKGdldFN0YWdpbmdTdG9yYWdlKCksIHN0YWdpbmdCdWZmZXIpOwpAQCAtODE5LDcgKzgwOSw3
IEBACiAgICAgQnVmZmVyRDNEOjppbml0aWFsaXplU3RhdGljRGF0YSgpOwogCiAgICAgLy8gTm90
aWZ5IHdoZW4gc3RhdGljIGRhdGEgY2hhbmdlcy4KLSAgICBtU3RhdGljQnVmZmVyRGlydHlDYWxs
YmFja3Muc2lnbmFsKCk7CisgICAgbVN0YXRpY0Jyb2FkY2FzdENoYW5uZWwuc2lnbmFsKCk7CiB9
CiAKIHZvaWQgQnVmZmVyMTE6OmludmFsaWRhdGVTdGF0aWNEYXRhKCkKQEAgLTgyNywyOSArODE3
LDIxIEBACiAgICAgQnVmZmVyRDNEOjppbnZhbGlkYXRlU3RhdGljRGF0YSgpOwogCiAgICAgLy8g
Tm90aWZ5IHdoZW4gc3RhdGljIGRhdGEgY2hhbmdlcy4KLSAgICBtU3RhdGljQnVmZmVyRGlydHlD
YWxsYmFja3Muc2lnbmFsKCk7CisgICAgbVN0YXRpY0Jyb2FkY2FzdENoYW5uZWwuc2lnbmFsKCk7
CiB9CiAKLXZvaWQgQnVmZmVyMTE6OmFkZFN0YXRpY0J1ZmZlckRpcnR5Q2FsbGJhY2soY29uc3Qg
Tm90aWZpY2F0aW9uQ2FsbGJhY2sgKmNhbGxiYWNrKQorYW5nbGU6OkJyb2FkY2FzdENoYW5uZWwg
KkJ1ZmZlcjExOjpnZXRTdGF0aWNCcm9hZGNhc3RDaGFubmVsKCkKIHsKLSAgICBtU3RhdGljQnVm
ZmVyRGlydHlDYWxsYmFja3MuYWRkKGNhbGxiYWNrKTsKKyAgICByZXR1cm4gJm1TdGF0aWNCcm9h
ZGNhc3RDaGFubmVsOwogfQogCi12b2lkIEJ1ZmZlcjExOjpyZW1vdmVTdGF0aWNCdWZmZXJEaXJ0
eUNhbGxiYWNrKGNvbnN0IE5vdGlmaWNhdGlvbkNhbGxiYWNrICpjYWxsYmFjaykKK2FuZ2xlOjpC
cm9hZGNhc3RDaGFubmVsICpCdWZmZXIxMTo6Z2V0RGlyZWN0QnJvYWRjYXN0Q2hhbm5lbCgpCiB7
Ci0gICAgbVN0YXRpY0J1ZmZlckRpcnR5Q2FsbGJhY2tzLnJlbW92ZShjYWxsYmFjayk7CisgICAg
cmV0dXJuICZtRGlyZWN0QnJvYWRjYXN0Q2hhbm5lbDsKIH0KIAotdm9pZCBCdWZmZXIxMTo6YWRk
RGlyZWN0QnVmZmVyRGlydHlDYWxsYmFjayhjb25zdCBOb3RpZmljYXRpb25DYWxsYmFjayAqY2Fs
bGJhY2spCi17Ci0gICAgbURpcmVjdEJ1ZmZlckRpcnR5Q2FsbGJhY2tzLmFkZChjYWxsYmFjayk7
Ci19CisvLyBCdWZmZXIxMTo6QnVmZmVyU3RvcmFnZSBpbXBsZW1lbnRhdGlvbgogCi12b2lkIEJ1
ZmZlcjExOjpyZW1vdmVEaXJlY3RCdWZmZXJEaXJ0eUNhbGxiYWNrKGNvbnN0IE5vdGlmaWNhdGlv
bkNhbGxiYWNrICpjYWxsYmFjaykKLXsKLSAgICBtRGlyZWN0QnVmZmVyRGlydHlDYWxsYmFja3Mu
cmVtb3ZlKGNhbGxiYWNrKTsKLX0KLQogQnVmZmVyMTE6OkJ1ZmZlclN0b3JhZ2U6OkJ1ZmZlclN0
b3JhZ2UoUmVuZGVyZXIxMSAqcmVuZGVyZXIsIEJ1ZmZlclVzYWdlIHVzYWdlKQogICAgIDogbVJl
bmRlcmVyKHJlbmRlcmVyKSwgbVJldmlzaW9uKDApLCBtVXNhZ2UodXNhZ2UpLCBtQnVmZmVyU2l6
ZSgwKQogewpAQCAtODU3LDcgKzgzOSw3IEBACiAKIGdsOjpFcnJvciBCdWZmZXIxMTo6QnVmZmVy
U3RvcmFnZTo6c2V0RGF0YShjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3Qgb2Zmc2V0LCBzaXpl
X3Qgc2l6ZSkKIHsKLSAgICBBU1NFUlQoaXNNYXBwYWJsZSgpKTsKKyAgICBBU1NFUlQoaXNNYXBw
YWJsZShHTF9NQVBfV1JJVEVfQklUKSk7CiAKICAgICB1aW50OF90ICp3cml0ZVBvaW50ZXIgPSBu
dWxscHRyOwogICAgIEFOR0xFX1RSWShtYXAob2Zmc2V0LCBzaXplLCBHTF9NQVBfV1JJVEVfQklU
LCAmd3JpdGVQb2ludGVyKSk7CkBAIC04NjksOSArODUxLDExIEBACiAgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CiB9CiAKKy8vIEJ1ZmZlcjExOjpOYXRpdmVTdG9yYWdlIGltcGxlbWVudGF0aW9u
CisKIEJ1ZmZlcjExOjpOYXRpdmVTdG9yYWdlOjpOYXRpdmVTdG9yYWdlKFJlbmRlcmVyMTEgKnJl
bmRlcmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyVXNh
Z2UgdXNhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBO
b3RpZmljYXRpb25TZXQgKm9uU3RvcmFnZUNoYW5nZWQpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBhbmdsZTo6QnJvYWRjYXN0Q2hhbm5lbCAqb25TdG9yYWdl
Q2hhbmdlZCkKICAgICA6IEJ1ZmZlclN0b3JhZ2UocmVuZGVyZXIsIHVzYWdlKSwgbU5hdGl2ZVN0
b3JhZ2UobnVsbHB0ciksIG1PblN0b3JhZ2VDaGFuZ2VkKG9uU3RvcmFnZUNoYW5nZWQpCiB7CiB9
CkBAIC04NzksOCArODYzLDIwIEBACiBCdWZmZXIxMTo6TmF0aXZlU3RvcmFnZTo6fk5hdGl2ZVN0
b3JhZ2UoKQogewogICAgIFNhZmVSZWxlYXNlKG1OYXRpdmVTdG9yYWdlKTsKKyAgICBjbGVhclNS
VnMoKTsKIH0KIAorYm9vbCBCdWZmZXIxMTo6TmF0aXZlU3RvcmFnZTo6aXNNYXBwYWJsZShHTGJp
dGZpZWxkIGFjY2VzcykgY29uc3QKK3sKKyAgICBpZiAoKGFjY2VzcyAmIEdMX01BUF9SRUFEX0JJ
VCkgIT0gMCkKKyAgICB7CisgICAgICAgIC8vIFJlYWQgaXMgbW9yZSBleGNsdXNpdmUgdGhhbiB3
cml0ZSBtYXBwYWJpbGl0eS4KKyAgICAgICAgcmV0dXJuIChtVXNhZ2UgPT0gQlVGRkVSX1VTQUdF
X1NUQUdJTkcpOworICAgIH0KKyAgICBBU1NFUlQoKGFjY2VzcyAmIEdMX01BUF9XUklURV9CSVQp
ICE9IDApOworICAgIHJldHVybiAobVVzYWdlID09IEJVRkZFUl9VU0FHRV9TVEFHSU5HIHx8IG1V
c2FnZSA9PSBCVUZGRVJfVVNBR0VfVU5JRk9STSk7Cit9CisKIC8vIFJldHVybnMgdHJ1ZSBpZiBp
dCByZWNyZWF0ZXMgdGhlIGRpcmVjdCBidWZmZXIKIGdsOjpFcnJvck9yUmVzdWx0PENvcHlSZXN1
bHQ+IEJ1ZmZlcjExOjpOYXRpdmVTdG9yYWdlOjpjb3B5RnJvbVN0b3JhZ2UoQnVmZmVyU3RvcmFn
ZSAqc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc291cmNlT2Zmc2V0LApAQCAtODkzLDM4
ICs4ODksMzUgQEAKICAgICBib29sIGNyZWF0ZUJ1ZmZlciAgID0gIW1OYXRpdmVTdG9yYWdlIHx8
IG1CdWZmZXJTaXplIDwgcmVxdWlyZWRTaXplOwogCiAgICAgLy8gKFJlKWluaXRpYWxpemUgRDNE
IGJ1ZmZlciBpZiBuZWVkZWQKKyAgICBib29sIHByZXNlcnZlRGF0YSA9IChkZXN0T2Zmc2V0ID4g
MCk7CiAgICAgaWYgKGNyZWF0ZUJ1ZmZlcikKICAgICB7Ci0gICAgICAgIGJvb2wgcHJlc2VydmVE
YXRhID0gKGRlc3RPZmZzZXQgPiAwKTsKICAgICAgICAgcmVzaXplKHJlcXVpcmVkU2l6ZSwgcHJl
c2VydmVEYXRhKTsKICAgICB9CiAKKyAgICBzaXplX3QgY2xhbXBlZFNpemUgPSBzaXplOworICAg
IGlmIChtVXNhZ2UgPT0gQlVGRkVSX1VTQUdFX1VOSUZPUk0pCisgICAgeworICAgICAgICBjbGFt
cGVkU2l6ZSA9IHN0ZDo6bWluKGNsYW1wZWRTaXplLCBtQnVmZmVyU2l6ZSAtIGRlc3RPZmZzZXQp
OworICAgIH0KKwogICAgIGlmIChzb3VyY2UtPmdldFVzYWdlKCkgPT0gQlVGRkVSX1VTQUdFX1BJ
WEVMX1BBQ0sgfHwKICAgICAgICAgc291cmNlLT5nZXRVc2FnZSgpID09IEJVRkZFUl9VU0FHRV9T
WVNURU1fTUVNT1JZKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHNvdXJjZS0+aXNNYXBwYWJsZSgp
KTsKKyAgICAgICAgQVNTRVJUKHNvdXJjZS0+aXNNYXBwYWJsZShHTF9NQVBfUkVBRF9CSVQpICYm
IGlzTWFwcGFibGUoR0xfTUFQX1dSSVRFX0JJVCkpOwogCisgICAgICAgIC8vIFVuaWZvcm0gYnVm
ZmVycyBtdXN0IGJlIG1hcHBlZCB3aXRoIHdyaXRlL2Rpc2NhcmQuCisgICAgICAgIEFTU0VSVCgh
KHByZXNlcnZlRGF0YSAmJiBtVXNhZ2UgPT0gQlVGRkVSX1VTQUdFX1VOSUZPUk0pKTsKKwogICAg
ICAgICB1aW50OF90ICpzb3VyY2VQb2ludGVyID0gbnVsbHB0cjsKLSAgICAgICAgQU5HTEVfVFJZ
KHNvdXJjZS0+bWFwKHNvdXJjZU9mZnNldCwgc2l6ZSwgR0xfTUFQX1JFQURfQklULCAmc291cmNl
UG9pbnRlcikpOworICAgICAgICBBTkdMRV9UUlkoc291cmNlLT5tYXAoc291cmNlT2Zmc2V0LCBj
bGFtcGVkU2l6ZSwgR0xfTUFQX1JFQURfQklULCAmc291cmNlUG9pbnRlcikpOwogCi0gICAgICAg
IEQzRDExX01BUFBFRF9TVUJSRVNPVVJDRSBtYXBwZWRSZXNvdXJjZTsKLSAgICAgICAgSFJFU1VM
VCBociA9IGNvbnRleHQtPk1hcChtTmF0aXZlU3RvcmFnZSwgMCwgRDNEMTFfTUFQX1dSSVRFLCAw
LCAmbWFwcGVkUmVzb3VyY2UpOwotICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSk7Ci0gICAg
ICAgIGlmIChGQUlMRUQoaHIpKQotICAgICAgICB7Ci0gICAgICAgICAgICBzb3VyY2UtPnVubWFw
KCk7Ci0gICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKAotICAgICAgICAgICAgICAgIEdMX09V
VF9PRl9NRU1PUlksCi0gICAgICAgICAgICAgICAgIkZhaWxlZCB0byBtYXAgbmF0aXZlIHN0b3Jh
Z2UgaW4gQnVmZmVyMTE6Ok5hdGl2ZVN0b3JhZ2U6OmNvcHlGcm9tU3RvcmFnZSIpOwotICAgICAg
ICB9CisgICAgICAgIHVpbnQ4X3QgKmRlc3RQb2ludGVyID0gbnVsbHB0cjsKKyAgICAgICAgQU5H
TEVfVFJZKG1hcChkZXN0T2Zmc2V0LCBjbGFtcGVkU2l6ZSwgR0xfTUFQX1dSSVRFX0JJVCwgJmRl
c3RQb2ludGVyKSk7CiAKLSAgICAgICAgdWludDhfdCAqZGVzdFBvaW50ZXIgPSBzdGF0aWNfY2Fz
dDx1aW50OF90ICo+KG1hcHBlZFJlc291cmNlLnBEYXRhKSArIGRlc3RPZmZzZXQ7CisgICAgICAg
IG1lbWNweShkZXN0UG9pbnRlciwgc291cmNlUG9pbnRlciwgY2xhbXBlZFNpemUpOwogCi0gICAg
ICAgIC8vIE9mZnNldCBib3VuZHMgYXJlIHZhbGlkYXRlZCBhdCB0aGUgQVBJIGxheWVyCi0gICAg
ICAgIEFTU0VSVChzb3VyY2VPZmZzZXQgKyBzaXplIDw9IGRlc3RPZmZzZXQgKyBtQnVmZmVyU2l6
ZSk7Ci0gICAgICAgIG1lbWNweShkZXN0UG9pbnRlciwgc291cmNlUG9pbnRlciwgc2l6ZSk7Ci0K
LSAgICAgICAgY29udGV4dC0+VW5tYXAobU5hdGl2ZVN0b3JhZ2UsIDApOworICAgICAgICB1bm1h
cCgpOwogICAgICAgICBzb3VyY2UtPnVubWFwKCk7CiAgICAgfQogICAgIGVsc2UKQEAgLTkzMSw3
ICs5MjQsNyBAQAogICAgIHsKICAgICAgICAgRDNEMTFfQk9YIHNyY0JveDsKICAgICAgICAgc3Jj
Qm94LmxlZnQgICA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc291cmNlT2Zmc2V0KTsKLSAg
ICAgICAgc3JjQm94LnJpZ2h0ICA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc291cmNlT2Zm
c2V0ICsgc2l6ZSk7CisgICAgICAgIHNyY0JveC5yaWdodCAgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBpbnQ+KHNvdXJjZU9mZnNldCArIGNsYW1wZWRTaXplKTsKICAgICAgICAgc3JjQm94LnRvcCAg
ICA9IDA7CiAgICAgICAgIHNyY0JveC5ib3R0b20gPSAxOwogICAgICAgICBzcmNCb3guZnJvbnQg
ID0gMDsKQEAgLTk1Miw3ICs5NDUsNyBAQAogICAgIElEM0QxMURldmljZUNvbnRleHQgKmNvbnRl
eHQgPSBtUmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKTsKIAogICAgIEQzRDExX0JVRkZFUl9E
RVNDIGJ1ZmZlckRlc2M7Ci0gICAgZmlsbEJ1ZmZlckRlc2MoJmJ1ZmZlckRlc2MsIG1SZW5kZXJl
ciwgbVVzYWdlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHNpemUpKTsKKyAgICBGaWxsQnVm
ZmVyRGVzYygmYnVmZmVyRGVzYywgbVJlbmRlcmVyLCBtVXNhZ2UsIHN0YXRpY19jYXN0PHVuc2ln
bmVkIGludD4oc2l6ZSkpOwogCiAgICAgSUQzRDExQnVmZmVyICpuZXdCdWZmZXI7CiAgICAgSFJF
U1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZUJ1ZmZlcigmYnVmZmVyRGVzYywgbnVsbHB0ciwg
Jm5ld0J1ZmZlcik7CkBAIC05ODcsNiArOTgwLDkgQEAKIAogICAgIG1CdWZmZXJTaXplID0gYnVm
ZmVyRGVzYy5CeXRlV2lkdGg7CiAKKyAgICAvLyBGcmVlIHRoZSBTUlZzLgorICAgIGNsZWFyU1JW
cygpOworCiAgICAgLy8gTm90aWZ5IHRoYXQgdGhlIHN0b3JhZ2UgaGFzIGNoYW5nZWQuCiAgICAg
aWYgKG1PblN0b3JhZ2VDaGFuZ2VkKQogICAgIHsKQEAgLTk5Niw3ICs5OTIsOCBAQAogICAgIHJl
dHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi12b2lkIEJ1ZmZlcjExOjpOYXRpdmVTdG9yYWdlOjpm
aWxsQnVmZmVyRGVzYyhEM0QxMV9CVUZGRVJfREVTQyAqYnVmZmVyRGVzYywKKy8vIHN0YXRpYwor
dm9pZCBCdWZmZXIxMTo6TmF0aXZlU3RvcmFnZTo6RmlsbEJ1ZmZlckRlc2MoRDNEMTFfQlVGRkVS
X0RFU0MgKmJ1ZmZlckRlc2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSZW5kZXJlcjExICpyZW5kZXJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEJ1ZmZlclVzYWdlIHVzYWdlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGJ1ZmZlclNpemUpCkBAIC0x
MDQ1LDkgKzEwNDIsMTIgQEAKICAgICAgICAgICAgIC8vIENvbnN0YW50IGJ1ZmZlcnMgbXVzdCBi
ZSBvZiBhIGxpbWl0ZWQgc2l6ZSwgYW5kIGFsaWduZWQgdG8gMTYgYnl0ZSBib3VuZGFyaWVzCiAg
ICAgICAgICAgICAvLyBGb3Igb3VyIHB1cnBvc2VzIHdlIGlnbm9yZSBhbnkgYnVmZmVyIGRhdGEg
cGFzdCB0aGUgbWF4aW11bSBjb25zdGFudCBidWZmZXIgc2l6ZQogICAgICAgICAgICAgYnVmZmVy
RGVzYy0+Qnl0ZVdpZHRoID0gcm91bmRVcChidWZmZXJEZXNjLT5CeXRlV2lkdGgsIDE2dSk7CisK
KyAgICAgICAgICAgIC8vIE5vdGU6IGl0IHNlZW1zIHRoYXQgRDNEMTEgYWxsb3dzIGxhcmdlciBi
dWZmZXJzIG9uIHNvbWUgcGxhdGZvcm1zLCBidXQgbm90IGFsbC4KKyAgICAgICAgICAgIC8vIChX
aW5kb3dzIDEwIHNlZW1zIHRvIGFsbG93IGxhcmdlciBjb25zdGFudCBidWZmZXJzLCBidXQgbm90
IFdpbmRvd3MgNykKICAgICAgICAgICAgIGJ1ZmZlckRlc2MtPkJ5dGVXaWR0aCA9CiAgICAgICAg
ICAgICAgICAgc3RkOjptaW48VUlOVD4oYnVmZmVyRGVzYy0+Qnl0ZVdpZHRoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PFVJTlQ+KHJlbmRlcmVyLT5nZXRSZW5k
ZXJlckNhcHMoKS5tYXhVbmlmb3JtQmxvY2tTaXplKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8VUlOVD4ocmVuZGVyZXItPmdldE5hdGl2ZUNhcHMoKS5tYXhV
bmlmb3JtQmxvY2tTaXplKSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBkZWZhdWx0
OgpAQCAtMTA2MCwxMSArMTA2MCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xiaXRmaWVsZCBhY2Nlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50OF90ICoqbWFwUG9pbnRlck91dCkKIHsKLSAgICBBU1NFUlQobVVzYWdl
ID09IEJVRkZFUl9VU0FHRV9TVEFHSU5HKTsKKyAgICBBU1NFUlQoaXNNYXBwYWJsZShhY2Nlc3Mp
KTsKIAogICAgIEQzRDExX01BUFBFRF9TVUJSRVNPVVJDRSBtYXBwZWRSZXNvdXJjZTsKICAgICBJ
RDNEMTFEZXZpY2VDb250ZXh0ICpjb250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0
KCk7Ci0gICAgRDNEMTFfTUFQIGQzZE1hcFR5cGUgICAgICAgICA9IGdsX2QzZDExOjpHZXREM0RN
YXBUeXBlRnJvbUJpdHMoYWNjZXNzKTsKKyAgICBEM0QxMV9NQVAgZDNkTWFwVHlwZSAgICAgICAg
ID0gZ2xfZDNkMTE6OkdldEQzRE1hcFR5cGVGcm9tQml0cyhtVXNhZ2UsIGFjY2Vzcyk7CiAgICAg
VUlOVCBkM2RNYXBGbGFnICAgICAgICAgICAgICA9ICgoYWNjZXNzICYgR0xfTUFQX1VOU1lOQ0hS
T05JWkVEX0JJVCkgIT0gMCA/IEQzRDExX01BUF9GTEFHX0RPX05PVF9XQUlUIDogMCk7CiAKICAg
ICBIUkVTVUxUIHJlc3VsdCA9IGNvbnRleHQtPk1hcChtTmF0aXZlU3RvcmFnZSwgMCwgZDNkTWFw
VHlwZSwgZDNkTWFwRmxhZywgJm1hcHBlZFJlc291cmNlKTsKQEAgLTEwODEsMTEgKzEwODEsNTYg
QEAKIAogdm9pZCBCdWZmZXIxMTo6TmF0aXZlU3RvcmFnZTo6dW5tYXAoKQogewotICAgIEFTU0VS
VChtVXNhZ2UgPT0gQlVGRkVSX1VTQUdFX1NUQUdJTkcpOworICAgIEFTU0VSVChpc01hcHBhYmxl
KEdMX01BUF9XUklURV9CSVQpIHx8IGlzTWFwcGFibGUoR0xfTUFQX1JFQURfQklUKSk7CiAgICAg
SUQzRDExRGV2aWNlQ29udGV4dCAqY29udGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4
dCgpOwogICAgIGNvbnRleHQtPlVubWFwKG1OYXRpdmVTdG9yYWdlLCAwKTsKIH0KIAorZ2w6OkVy
cm9yT3JSZXN1bHQ8SUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICo+IEJ1ZmZlcjExOjpOYXRpdmVT
dG9yYWdlOjpnZXRTUlZGb3JGb3JtYXQoCisgICAgRFhHSV9GT1JNQVQgc3J2Rm9ybWF0KQorewor
ICAgIGF1dG8gYnVmZmVyU1JWSXQgPSBtQnVmZmVyUmVzb3VyY2VWaWV3cy5maW5kKHNydkZvcm1h
dCk7CisKKyAgICBpZiAoYnVmZmVyU1JWSXQgIT0gbUJ1ZmZlclJlc291cmNlVmlld3MuZW5kKCkp
CisgICAgeworICAgICAgICByZXR1cm4gYnVmZmVyU1JWSXQtPnNlY29uZDsKKyAgICB9CisKKyAg
ICBJRDNEMTFEZXZpY2UgKmRldmljZSAgICAgICAgICAgICAgICA9IG1SZW5kZXJlci0+Z2V0RGV2
aWNlKCk7CisgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpidWZmZXJTUlYgPSBudWxscHRy
OworCisgICAgY29uc3QgZDNkMTE6OkRYR0lGb3JtYXRTaXplICZkeGdpRm9ybWF0SW5mbyA9IGQz
ZDExOjpHZXREWEdJRm9ybWF0U2l6ZUluZm8oc3J2Rm9ybWF0KTsKKworICAgIEQzRDExX1NIQURF
Ul9SRVNPVVJDRV9WSUVXX0RFU0MgYnVmZmVyU1JWRGVzYzsKKyAgICBidWZmZXJTUlZEZXNjLkJ1
ZmZlci5FbGVtZW50T2Zmc2V0ID0gMDsKKyAgICBidWZmZXJTUlZEZXNjLkJ1ZmZlci5FbGVtZW50
V2lkdGggID0gc3RhdGljX2Nhc3Q8VUlOVD4obUJ1ZmZlclNpemUpIC8gZHhnaUZvcm1hdEluZm8u
cGl4ZWxCeXRlczsKKyAgICBidWZmZXJTUlZEZXNjLlZpZXdEaW1lbnNpb24gICAgICAgID0gRDNE
MTFfU1JWX0RJTUVOU0lPTl9CVUZGRVI7CisgICAgYnVmZmVyU1JWRGVzYy5Gb3JtYXQgICAgICAg
ICAgICAgICA9IHNydkZvcm1hdDsKKworICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVh
dGVTaGFkZXJSZXNvdXJjZVZpZXcobU5hdGl2ZVN0b3JhZ2UsICZidWZmZXJTUlZEZXNjLCAmYnVm
ZmVyU1JWKTsKKyAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgIGlmIChGQUlMRUQo
cmVzdWx0KSkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9S
WSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiRXJyb3IgY3JlYXRpbmcgYnVmZmVyIFNSViBp
biBCdWZmZXIxMTo6TmF0aXZlU3RvcmFnZTo6Z2V0U1JWRm9yRm9ybWF0Iik7CisgICAgfQorCisg
ICAgbUJ1ZmZlclJlc291cmNlVmlld3Nbc3J2Rm9ybWF0XSA9IGJ1ZmZlclNSVjsKKworICAgIHJl
dHVybiBidWZmZXJTUlY7Cit9CisKK3ZvaWQgQnVmZmVyMTE6Ok5hdGl2ZVN0b3JhZ2U6OmNsZWFy
U1JWcygpCit7CisgICAgZm9yIChhdXRvICZzcnYgOiBtQnVmZmVyUmVzb3VyY2VWaWV3cykKKyAg
ICB7CisgICAgICAgIFNhZmVSZWxlYXNlKHNydi5zZWNvbmQpOworICAgIH0KKyAgICBtQnVmZmVy
UmVzb3VyY2VWaWV3cy5jbGVhcigpOworfQorCisvLyBCdWZmZXIxMTo6RW11bGF0ZWRJbmRleFN0
b3JhZ2UgaW1wbGVtZW50YXRpb24KKwogQnVmZmVyMTE6OkVtdWxhdGVkSW5kZXhlZFN0b3JhZ2U6
OkVtdWxhdGVkSW5kZXhlZFN0b3JhZ2UoUmVuZGVyZXIxMSAqcmVuZGVyZXIpCiAgICAgOiBCdWZm
ZXJTdG9yYWdlKHJlbmRlcmVyLCBCVUZGRVJfVVNBR0VfRU1VTEFURURfSU5ERVhFRF9WRVJURVgp
LCBtTmF0aXZlU3RvcmFnZShudWxscHRyKQogewpAQCAtMTIyMCw3ICsxMjY1LDcgQEAKICAgICBz
aXplX3Qgc2l6ZSwKICAgICBzaXplX3QgZGVzdE9mZnNldCkKIHsKLSAgICBBU1NFUlQoc291cmNl
LT5pc01hcHBhYmxlKCkpOworICAgIEFTU0VSVChzb3VyY2UtPmlzTWFwcGFibGUoR0xfTUFQX1JF
QURfQklUKSk7CiAgICAgdWludDhfdCAqc291cmNlRGF0YSA9IG51bGxwdHI7CiAgICAgQU5HTEVf
VFJZKHNvdXJjZS0+bWFwKHNvdXJjZU9mZnNldCwgc2l6ZSwgR0xfTUFQX1JFQURfQklULCAmc291
cmNlRGF0YSkpOwogICAgIEFTU0VSVChkZXN0T2Zmc2V0ICsgc2l6ZSA8PSBtTWVtb3J5QnVmZmVy
LnNpemUoKSk7CkBAIC0xMjU4LDYgKzEzMDMsOCBAQAogICAgIC8vIE5vLW9wCiB9CiAKKy8vIEJ1
ZmZlcjExOjpQYWNrU3RvcmFnZSBpbXBsZW1lbnRhdGlvbgorCiBCdWZmZXIxMTo6UGFja1N0b3Jh
Z2U6OlBhY2tTdG9yYWdlKFJlbmRlcmVyMTEgKnJlbmRlcmVyKQogICAgIDogQnVmZmVyU3RvcmFn
ZShyZW5kZXJlciwgQlVGRkVSX1VTQUdFX1BJWEVMX1BBQ0spLCBtU3RhZ2luZ1RleHR1cmUoKSwg
bURhdGFNb2RpZmllZChmYWxzZSkKIHsKQEAgLTEyNzIsOSArMTMxOSwxNiBAQAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVzdE9mZnNldCkKIHsKLSAgICAv
LyBXZSBjb3B5IHRocm91Z2ggYSBzdGFnaW5nIGJ1ZmZlciB3aGVuIGRyYXdpbmcgd2l0aCBhIHBh
Y2sgYnVmZmVyLAotICAgIC8vIG9yIGZvciBvdGhlciBjYXNlcyB3aGVyZSB3ZSBhY2Nlc3MgdGhl
IHBhY2sgYnVmZmVyCi0gICAgVU5SRUFDSEFCTEUoKTsKKyAgICBBTkdMRV9UUlkoZmx1c2hRdWV1
ZWRQYWNrQ29tbWFuZCgpKTsKKworICAgIC8vIFdlIGNvcHkgdGhyb3VnaCBhIHN0YWdpbmcgYnVm
ZmVyIHdoZW4gZHJhd2luZyB3aXRoIGEgcGFjayBidWZmZXIsIG9yIGZvciBvdGhlciBjYXNlcyB3
aGVyZSB3ZQorICAgIC8vIGFjY2VzcyB0aGUgcGFjayBidWZmZXIKKyAgICBBU1NFUlQoc291cmNl
LT5pc01hcHBhYmxlKEdMX01BUF9SRUFEX0JJVCkgJiYgc291cmNlLT5nZXRVc2FnZSgpID09IEJV
RkZFUl9VU0FHRV9TVEFHSU5HKTsKKyAgICB1aW50OF90ICpzb3VyY2VEYXRhID0gbnVsbHB0cjsK
KyAgICBBTkdMRV9UUlkoc291cmNlLT5tYXAoc291cmNlT2Zmc2V0LCBzaXplLCBHTF9NQVBfUkVB
RF9CSVQsICZzb3VyY2VEYXRhKSk7CisgICAgQVNTRVJUKGRlc3RPZmZzZXQgKyBzaXplIDw9IG1N
ZW1vcnlCdWZmZXIuc2l6ZSgpKTsKKyAgICBtZW1jcHkobU1lbW9yeUJ1ZmZlci5kYXRhKCkgKyBk
ZXN0T2Zmc2V0LCBzb3VyY2VEYXRhLCBzaXplKTsKKyAgICBzb3VyY2UtPnVubWFwKCk7CiAgICAg
cmV0dXJuIENvcHlSZXN1bHQ6Ok5PVF9SRUNSRUFURUQ7CiB9CiAKQEAgLTEzMjksNyArMTM4Myw3
IEBACiAKICAgICB1bnNpZ25lZCBpbnQgc3JjU3VicmVzb3VyY2UgPSByZW5kZXJUYXJnZXQtPmdl
dFN1YnJlc291cmNlSW5kZXgoKTsKICAgICBUZXh0dXJlSGVscGVyMTEgc3JjVGV4dHVyZSA9Ci0g
ICAgICAgIFRleHR1cmVIZWxwZXIxMTo6TWFrZUFuZFJlZmVyZW5jZShyZW5kZXJUYXJnZXRSZXNv
dXJjZSwgcmVuZGVyVGFyZ2V0LT5nZXRBTkdMRUZvcm1hdCgpKTsKKyAgICAgICAgVGV4dHVyZUhl
bHBlcjExOjpNYWtlQW5kUmVmZXJlbmNlKHJlbmRlclRhcmdldFJlc291cmNlLCByZW5kZXJUYXJn
ZXQtPmdldEZvcm1hdFNldCgpKTsKIAogICAgIG1RdWV1ZWRQYWNrQ29tbWFuZC5yZXNldChuZXcg
UGFja1BpeGVsc1BhcmFtcyhwYXJhbXMpKTsKIApAQCAtMTMzNywxMCArMTM5MSwxMCBAQAogICAg
IGlmICghbVN0YWdpbmdUZXh0dXJlLmdldFJlc291cmNlKCkgfHwgbVN0YWdpbmdUZXh0dXJlLmdl
dEZvcm1hdCgpICE9IHNyY1RleHR1cmUuZ2V0Rm9ybWF0KCkgfHwKICAgICAgICAgbVN0YWdpbmdU
ZXh0dXJlLmdldEV4dGVudHMoKSAhPSBzcmNUZXh0dXJlU2l6ZSkKICAgICB7Ci0gICAgICAgIEFO
R0xFX1RSWV9SRVNVTFQoQ3JlYXRlU3RhZ2luZ1RleHR1cmUoc3JjVGV4dHVyZS5nZXRUZXh0dXJl
VHlwZSgpLCBzcmNUZXh0dXJlLmdldEZvcm1hdCgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNyY1RleHR1cmUuZ2V0QU5HTEVGb3JtYXQoKSwgc3JjVGV4
dHVyZVNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bVJlbmRlcmVyLT5nZXREZXZpY2UoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgbVN0YWdp
bmdUZXh0dXJlKTsKKyAgICAgICAgQU5HTEVfVFJZX1JFU1VMVCgKKyAgICAgICAgICAgIENyZWF0
ZVN0YWdpbmdUZXh0dXJlKHNyY1RleHR1cmUuZ2V0VGV4dHVyZVR5cGUoKSwgc3JjVGV4dHVyZS5n
ZXRGb3JtYXRTZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1RleHR1
cmVTaXplLCBTdGFnaW5nQWNjZXNzOjpSRUFELCBtUmVuZGVyZXItPmdldERldmljZSgpKSwKKyAg
ICAgICAgICAgIG1TdGFnaW5nVGV4dHVyZSk7CiAgICAgfQogCiAgICAgLy8gUmVhZFBpeGVscyBm
cm9tIG11bHRpc2FtcGxlZCBGQk9zIGlzbid0IHN1cHBvcnRlZCBpbiBjdXJyZW50IEdMCkBAIC0x
MzgyLDYgKzE0MzYsOCBAQAogICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCisvLyBCdWZm
ZXIxMTo6U3lzdGVtTWVtb3J5U3RvcmFnZSBpbXBsZW1lbnRhdGlvbgorCiBCdWZmZXIxMTo6U3lz
dGVtTWVtb3J5U3RvcmFnZTo6U3lzdGVtTWVtb3J5U3RvcmFnZShSZW5kZXJlcjExICpyZW5kZXJl
cikKICAgICA6IEJ1ZmZlcjExOjpCdWZmZXJTdG9yYWdlKHJlbmRlcmVyLCBCVUZGRVJfVVNBR0Vf
U1lTVEVNX01FTU9SWSkKIHsKQEAgLTEzOTIsNyArMTQ0OCw3IEBACiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVzdE9mZnNldCkK
IHsKLSAgICBBU1NFUlQoc291cmNlLT5pc01hcHBhYmxlKCkpOworICAgIEFTU0VSVChzb3VyY2Ut
PmlzTWFwcGFibGUoR0xfTUFQX1JFQURfQklUKSk7CiAgICAgdWludDhfdCAqc291cmNlRGF0YSA9
IG51bGxwdHI7CiAgICAgQU5HTEVfVFJZKHNvdXJjZS0+bWFwKHNvdXJjZU9mZnNldCwgc2l6ZSwg
R0xfTUFQX1JFQURfQklULCAmc291cmNlRGF0YSkpOwogICAgIEFTU0VSVChkZXN0T2Zmc2V0ICsg
c2l6ZSA8PSBtU3lzdGVtQ29weS5zaXplKCkpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9CdWZmZXIxMS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvQnVmZmVyMTEuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9CdWZmZXIxMS5oCSh3b3JraW5nIGNv
cHkpCkBAIC05LDExICs5LDEyIEBACiAjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9EM0Qx
MV9CVUZGRVIxMV9IXwogI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfQlVGRkVS
MTFfSF8KIAorI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPG1hcD4KIAogI2luY2x1ZGUgImxp
YkFOR0xFL2FuZ2xldHlwZXMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvQnVm
ZmVyRDNELmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVy
MTFfdXRpbHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9zaWduYWxfdXRpbHMuaCIKIAogbmFtZXNw
YWNlIGdsCiB7CkBAIC0yMiw2ICsyMyw3IEBACiAKIG5hbWVzcGFjZSByeAogeworc3RydWN0IFBh
Y2tQaXhlbHNQYXJhbXM7CiBjbGFzcyBSZW5kZXJlcjExOwogc3RydWN0IFNvdXJjZUluZGV4RGF0
YTsKIHN0cnVjdCBUcmFuc2xhdGVkQXR0cmlidXRlOwpAQCAtNDAsMjEgKzQyLDYgQEAKICAgICBC
VUZGRVJfVVNBR0VfQ09VTlQsCiB9OwogCi1zdHJ1Y3QgUGFja1BpeGVsc1BhcmFtcwotewotICAg
IFBhY2tQaXhlbHNQYXJhbXMoKTsKLSAgICBQYWNrUGl4ZWxzUGFyYW1zKGNvbnN0IGdsOjpSZWN0
YW5nbGUgJmFyZWEsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHVpbnQgb3V0cHV0UGl0
Y2gsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxQYWNrU3RhdGUgJnBhY2ss
IHB0cmRpZmZfdCBvZmZzZXQpOwotCi0gICAgZ2w6OlJlY3RhbmdsZSBhcmVhOwotICAgIEdMZW51
bSBmb3JtYXQ7Ci0gICAgR0xlbnVtIHR5cGU7Ci0gICAgR0x1aW50IG91dHB1dFBpdGNoOwotICAg
IGdsOjpCdWZmZXIgKnBhY2tCdWZmZXI7Ci0gICAgZ2w6OlBpeGVsUGFja1N0YXRlIHBhY2s7Ci0g
ICAgcHRyZGlmZl90IG9mZnNldDsKLX07Ci0KIHR5cGVkZWYgc2l6ZV90IERhdGFSZXZpc2lvbjsK
IAogY2xhc3MgQnVmZmVyMTEgOiBwdWJsaWMgQnVmZmVyRDNECkBAIC04Miw4ICs2OSw4IEBACiAg
ICAgdm9pZCBpbnZhbGlkYXRlU3RhdGljRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgLy8gQnVmZmVy
SW1wbCBpbXBsZW1lbnRhdGlvbgotICAgIGdsOjpFcnJvciBzZXREYXRhKGNvbnN0IHZvaWQgKmRh
dGEsIHNpemVfdCBzaXplLCBHTGVudW0gdXNhZ2UpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBz
ZXRTdWJEYXRhKGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCBzaXplX3Qgb2Zmc2V0KSBv
dmVycmlkZTsKKyAgICBnbDo6RXJyb3Igc2V0RGF0YShHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lk
ICpkYXRhLCBzaXplX3Qgc2l6ZSwgR0xlbnVtIHVzYWdlKSBvdmVycmlkZTsKKyAgICBnbDo6RXJy
b3Igc2V0U3ViRGF0YShHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6
ZSwgc2l6ZV90IG9mZnNldCkgb3ZlcnJpZGU7CiAgICAgZ2w6OkVycm9yIGNvcHlTdWJEYXRhKEJ1
ZmZlckltcGwgKnNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgc291
cmNlT2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBkZXN0T2Zmc2V0
LApAQCAtOTMsMTUgKzgwLDEyIEBACiAgICAgZ2w6OkVycm9yIHVubWFwKEdMYm9vbGVhbiAqcmVz
dWx0KSBvdmVycmlkZTsKICAgICBnbDo6RXJyb3IgbWFya1RyYW5zZm9ybUZlZWRiYWNrVXNhZ2Uo
KSBvdmVycmlkZTsKIAotICAgIC8vIFdlIHVzZSB0d28gc2V0IG9mIGRpcnR5IGNhbGxiYWNrcyBm
b3IgdHdvIGV2ZW50cy4gU3RhdGljIGJ1ZmZlcnMgYXJlIG1hcmtlZCBkaXJ0eSB3aGVuZXZlcgot
ICAgIC8vIHRoZSBkYXRhIGlzIGNoYW5nZWQsIGJlY2F1c2UgdGhleSBtdXN0IGJlIHJlLXRyYW5z
bGF0ZWQuIERpcmVjdCBidWZmZXJzIG9ubHkgbmVlZCB0byBiZQorICAgIC8vIFdlIHVzZSB0d28g
c2V0IG9mIGRpcnR5IGV2ZW50cy4gU3RhdGljIGJ1ZmZlcnMgYXJlIG1hcmtlZCBkaXJ0eSB3aGVu
ZXZlcgorICAgIC8vIGRhdGEgY2hhbmdlcywgYmVjYXVzZSB0aGV5IG11c3QgYmUgcmUtdHJhbnNs
YXRlZC4gRGlyZWN0IGJ1ZmZlcnMgb25seSBuZWVkIHRvIGJlCiAgICAgLy8gdXBkYXRlZCB3aGVu
IHRoZSB1bmRlcmx5aW5nIElEM0QxMUJ1ZmZlciBwb2ludGVyIGNoYW5nZXMgLSBob3BlZnVsbHkg
ZmFyIGxlc3Mgb2Z0ZW4uCi0gICAgdm9pZCBhZGRTdGF0aWNCdWZmZXJEaXJ0eUNhbGxiYWNrKGNv
bnN0IE5vdGlmaWNhdGlvbkNhbGxiYWNrICpjYWxsYmFjayk7Ci0gICAgdm9pZCByZW1vdmVTdGF0
aWNCdWZmZXJEaXJ0eUNhbGxiYWNrKGNvbnN0IE5vdGlmaWNhdGlvbkNhbGxiYWNrICpjYWxsYmFj
ayk7CisgICAgYW5nbGU6OkJyb2FkY2FzdENoYW5uZWwgKmdldFN0YXRpY0Jyb2FkY2FzdENoYW5u
ZWwoKTsKKyAgICBhbmdsZTo6QnJvYWRjYXN0Q2hhbm5lbCAqZ2V0RGlyZWN0QnJvYWRjYXN0Q2hh
bm5lbCgpOwogCi0gICAgdm9pZCBhZGREaXJlY3RCdWZmZXJEaXJ0eUNhbGxiYWNrKGNvbnN0IE5v
dGlmaWNhdGlvbkNhbGxiYWNrICpjYWxsYmFjayk7Ci0gICAgdm9pZCByZW1vdmVEaXJlY3RCdWZm
ZXJEaXJ0eUNhbGxiYWNrKGNvbnN0IE5vdGlmaWNhdGlvbkNhbGxiYWNrICpjYWxsYmFjayk7Ci0K
ICAgcHJpdmF0ZToKICAgICBjbGFzcyBCdWZmZXJTdG9yYWdlOwogICAgIGNsYXNzIEVtdWxhdGVk
SW5kZXhlZFN0b3JhZ2U7CkBAIC0xMTcsNyArMTAxLDcgQEAKICAgICAgICAgdW5zaWduZWQgaW50
IGxydUNvdW50OwogICAgIH07CiAKLSAgICBnbDo6RXJyb3IgbWFya0J1ZmZlclVzYWdlKCk7Cisg
ICAgZ2w6OkVycm9yIG1hcmtCdWZmZXJVc2FnZShCdWZmZXJVc2FnZSB1c2FnZSk7CiAgICAgZ2w6
OkVycm9yT3JSZXN1bHQ8TmF0aXZlU3RvcmFnZSAqPiBnZXRTdGFnaW5nU3RvcmFnZSgpOwogICAg
IGdsOjpFcnJvck9yUmVzdWx0PFBhY2tTdG9yYWdlICo+IGdldFBhY2tTdG9yYWdlKCk7CiAgICAg
Z2w6OkVycm9yT3JSZXN1bHQ8U3lzdGVtTWVtb3J5U3RvcmFnZSAqPiBnZXRTeXN0ZW1NZW1vcnlT
dG9yYWdlKCk7CkBAIC0xMjksMTUgKzExMywyMyBAQAogICAgIGdsOjpFcnJvck9yUmVzdWx0PEJ1
ZmZlclN0b3JhZ2UgKj4gZ2V0Q29uc3RhbnRCdWZmZXJSYW5nZVN0b3JhZ2UoR0xpbnRwdHIgb2Zm
c2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplKTsKIAotICAgIEJ1ZmZlclN0b3JhZ2Ug
KmFsbG9jYXRlU3RvcmFnZShCdWZmZXJVc2FnZSB1c2FnZSkgY29uc3Q7CisgICAgQnVmZmVyU3Rv
cmFnZSAqYWxsb2NhdGVTdG9yYWdlKEJ1ZmZlclVzYWdlIHVzYWdlKTsKKyAgICB2b2lkIHVwZGF0
ZURlYWxsb2NUaHJlc2hvbGQoQnVmZmVyVXNhZ2UgdXNhZ2UpOwogCisgICAgLy8gRnJlZSB0aGUg
c3RvcmFnZSBpZiB3ZSBkZWNpZGUgaXQgaXNuJ3QgYmVpbmcgdXNlZCB2ZXJ5IG9mdGVuLgorICAg
IGdsOjpFcnJvciBjaGVja0ZvckRlYWxsb2NhdGlvbihCdWZmZXJVc2FnZSB1c2FnZSk7CisKICAg
ICBSZW5kZXJlcjExICptUmVuZGVyZXI7CiAgICAgc2l6ZV90IG1TaXplOwogCiAgICAgQnVmZmVy
U3RvcmFnZSAqbU1hcHBlZFN0b3JhZ2U7CiAKLSAgICBzdGQ6OnZlY3RvcjxCdWZmZXJTdG9yYWdl
ICo+IG1CdWZmZXJTdG9yYWdlczsKKyAgICBzdGQ6OmFycmF5PEJ1ZmZlclN0b3JhZ2UgKiwgQlVG
RkVSX1VTQUdFX0NPVU5UPiBtQnVmZmVyU3RvcmFnZXM7CiAKKyAgICAvLyBUaGVzZSB0d28gYXJy
YXlzIGFyZSB1c2VkIHRvIHRyYWNrIHdoZW4gdG8gZnJlZSB1bnVzZWQgc3RvcmFnZS4KKyAgICBz
dGQ6OmFycmF5PHVuc2lnbmVkIGludCwgQlVGRkVSX1VTQUdFX0NPVU5UPiBtRGVhbGxvY1RocmVz
aG9sZHM7CisgICAgc3RkOjphcnJheTx1bnNpZ25lZCBpbnQsIEJVRkZFUl9VU0FHRV9DT1VOVD4g
bUlkbGVuZXNzOworCiAgICAgLy8gQ2FjaGUgb2YgRDNEMTEgY29uc3RhbnQgYnVmZmVyIGZvciBz
cGVjaWZpYyByYW5nZXMgb2YgYnVmZmVyIGRhdGEuCiAgICAgLy8gVGhpcyBpcyB1c2VkIHRvIGVt
dWxhdGUgVUJPIHJhbmdlcyBvbiAxMS4wIGRldmljZXMuCiAgICAgLy8gQ29uc3RhbnQgYnVmZmVy
cyBhcmUgaW5kZXhlZCBieSB0aGVyZSBzdGFydCBvZmZzZXQuCkBAIC0xNDYsMTMgKzEzOCw4IEBA
CiAgICAgc2l6ZV90IG1Db25zdGFudEJ1ZmZlclN0b3JhZ2VBZGRpdGlvbmFsU2l6ZTsKICAgICB1
bnNpZ25lZCBpbnQgbU1heENvbnN0YW50QnVmZmVyTHJ1Q291bnQ7CiAKLSAgICB0eXBlZGVmIHN0
ZDo6cGFpcjxJRDNEMTFCdWZmZXIgKiwgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICo+IEJ1ZmZl
clNSVlBhaXI7Ci0gICAgc3RkOjptYXA8RFhHSV9GT1JNQVQsIEJ1ZmZlclNSVlBhaXI+IG1CdWZm
ZXJSZXNvdXJjZVZpZXdzOwotCi0gICAgdW5zaWduZWQgaW50IG1SZWFkVXNhZ2VDb3VudDsKLQot
ICAgIE5vdGlmaWNhdGlvblNldCBtU3RhdGljQnVmZmVyRGlydHlDYWxsYmFja3M7Ci0gICAgTm90
aWZpY2F0aW9uU2V0IG1EaXJlY3RCdWZmZXJEaXJ0eUNhbGxiYWNrczsKKyAgICBhbmdsZTo6QnJv
YWRjYXN0Q2hhbm5lbCBtU3RhdGljQnJvYWRjYXN0Q2hhbm5lbDsKKyAgICBhbmdsZTo6QnJvYWRj
YXN0Q2hhbm5lbCBtRGlyZWN0QnJvYWRjYXN0Q2hhbm5lbDsKIH07CiAKIH0gIC8vIG5hbWVzcGFj
ZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9DbGVhcjExLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0NsZWFyMTEuY3BwCShyZXZpc2lv
biAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL0NsZWFyMTEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNyArMTk2LDgg
QEAKICAgICBTYWZlUmVsZWFzZShtUmFzdGVyaXplclN0YXRlKTsKIH0KIAotZ2w6OkVycm9yIENs
ZWFyMTE6OmNsZWFyRnJhbWVidWZmZXIoY29uc3QgQ2xlYXJQYXJhbWV0ZXJzICZjbGVhclBhcmFt
cywgY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEYXRhICZmYm9EYXRhKQorZ2w6OkVycm9yIENsZWFy
MTE6OmNsZWFyRnJhbWVidWZmZXIoY29uc3QgQ2xlYXJQYXJhbWV0ZXJzICZjbGVhclBhcmFtcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZl
clN0YXRlICZmYm9EYXRhKQogewogICAgIGNvbnN0IGF1dG8gJmNvbG9yQXR0YWNobWVudHMgPSBm
Ym9EYXRhLmdldENvbG9yQXR0YWNobWVudHMoKTsKICAgICBjb25zdCBhdXRvICZkcmF3QnVmZmVy
U3RhdGVzID0gZmJvRGF0YS5nZXREcmF3QnVmZmVyU3RhdGVzKCk7CkBAIC0yNzQsMjMgKzI3NSwy
MCBAQAogICAgICAgICAgICAgZHJhd0J1ZmZlclN0YXRlc1tjb2xvckF0dGFjaG1lbnRJbmRleF0g
IT0gR0xfTk9ORSkKICAgICAgICAgewogICAgICAgICAgICAgUmVuZGVyVGFyZ2V0MTEgKnJlbmRl
clRhcmdldCA9IG51bGxwdHI7Ci0gICAgICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBhdHRhY2ht
ZW50LmdldFJlbmRlclRhcmdldCgmcmVuZGVyVGFyZ2V0KTsKLSAgICAgICAgICAgIGlmIChlcnJv
ci5pc0Vycm9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9y
OwotICAgICAgICAgICAgfQorICAgICAgICAgICAgQU5HTEVfVFJZKGF0dGFjaG1lbnQuZ2V0UmVu
ZGVyVGFyZ2V0KCZyZW5kZXJUYXJnZXQpKTsKIAotICAgICAgICAgICAgY29uc3QgZ2w6OkludGVy
bmFsRm9ybWF0ICZmb3JtYXRJbmZvID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhhdHRhY2ht
ZW50LmdldEludGVybmFsRm9ybWF0KCkpOworICAgICAgICAgICAgY29uc3QgZ2w6OkludGVybmFs
Rm9ybWF0ICZmb3JtYXRJbmZvID0gKmF0dGFjaG1lbnQuZ2V0Rm9ybWF0KCkuaW5mbzsKIAogICAg
ICAgICAgICAgaWYgKGNsZWFyUGFyYW1zLmNvbG9yQ2xlYXJUeXBlID09IEdMX0ZMT0FUICYmCi0g
ICAgICAgICAgICAgICAgIShmb3JtYXRJbmZvLmNvbXBvbmVudFR5cGUgPT0gR0xfRkxPQVQgfHwg
Zm9ybWF0SW5mby5jb21wb25lbnRUeXBlID09IEdMX1VOU0lHTkVEX05PUk1BTElaRUQgfHwgZm9y
bWF0SW5mby5jb21wb25lbnRUeXBlID09IEdMX1NJR05FRF9OT1JNQUxJWkVEKSkKKyAgICAgICAg
ICAgICAgICAhKGZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9GTE9BVCB8fAorICAgICAg
ICAgICAgICAgICAgZm9ybWF0SW5mby5jb21wb25lbnRUeXBlID09IEdMX1VOU0lHTkVEX05PUk1B
TElaRUQgfHwKKyAgICAgICAgICAgICAgICAgIGZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBH
TF9TSUdORURfTk9STUFMSVpFRCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgRVJS
KAotICAgICAgICAgICAgICAgICAgICAiSXQgaXMgdW5kZWZpbmVkIGJlaGF2aW91ciB0byBjbGVh
ciBhIHJlbmRlciBidWZmZXIgd2hpY2ggaXMgbm90IG5vcm1hbGl6ZWQgIgorICAgICAgICAgICAg
ICAgIEVSUigiSXQgaXMgdW5kZWZpbmVkIGJlaGF2aW91ciB0byBjbGVhciBhIHJlbmRlciBidWZm
ZXIgd2hpY2ggaXMgbm90IG5vcm1hbGl6ZWQgIgogICAgICAgICAgICAgICAgICAgICAiZml4ZWQg
cG9pbnQgb3IgZmxvYXRpbmctIgogICAgICAgICAgICAgICAgICAgICAicG9pbnQgdG8gZmxvYXRp
bmcgcG9pbnQgdmFsdWVzIChjb2xvciBhdHRhY2htZW50ICV1IGhhcyBpbnRlcm5hbCBmb3JtYXQg
IgogICAgICAgICAgICAgICAgICAgICAiMHglWCkuIiwKLSAgICAgICAgICAgICAgICAgICAgY29s
b3JBdHRhY2htZW50SW5kZXgsIGF0dGFjaG1lbnQuZ2V0SW50ZXJuYWxGb3JtYXQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGNvbG9yQXR0YWNobWVudEluZGV4LCBhdHRhY2htZW50LmdldEZvcm1h
dCgpLmFzU2l6ZWQoKSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICgoZm9ybWF0
SW5mby5yZWRCaXRzID09IDAgfHwgIWNsZWFyUGFyYW1zLmNvbG9yTWFza1JlZCkgJiYKQEAgLTMw
MSwxMCArMjk5LDEyIEBACiAgICAgICAgICAgICAgICAgLy8gRXZlcnkgY2hhbm5lbCBlaXRoZXIg
ZG9lcyBub3QgZXhpc3QgaW4gdGhlIHJlbmRlciB0YXJnZXQgb3IgaXMgbWFza2VkIG91dAogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBp
ZiAoKCEobVJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpLnN1cHBvcnRzQ2xlYXJW
aWV3KSAmJiBuZWVkU2Npc3NvcmVkQ2xlYXIpIHx8IGNsZWFyUGFyYW1zLmNvbG9yQ2xlYXJUeXBl
ICE9IEdMX0ZMT0FUIHx8Ci0gICAgICAgICAgICAgICAgICAgICAoZm9ybWF0SW5mby5yZWRCaXRz
ICAgPiAwICYmICFjbGVhclBhcmFtcy5jb2xvck1hc2tSZWQpICAgfHwKKyAgICAgICAgICAgIGVs
c2UgaWYgKCghKG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKS5zdXBwb3J0c0Ns
ZWFyVmlldykgJiYKKyAgICAgICAgICAgICAgICAgICAgICBuZWVkU2Npc3NvcmVkQ2xlYXIpIHx8
CisgICAgICAgICAgICAgICAgICAgICBjbGVhclBhcmFtcy5jb2xvckNsZWFyVHlwZSAhPSBHTF9G
TE9BVCB8fAorICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdEluZm8ucmVkQml0cyA+IDAgJiYg
IWNsZWFyUGFyYW1zLmNvbG9yTWFza1JlZCkgfHwKICAgICAgICAgICAgICAgICAgICAgIChmb3Jt
YXRJbmZvLmdyZWVuQml0cyA+IDAgJiYgIWNsZWFyUGFyYW1zLmNvbG9yTWFza0dyZWVuKSB8fAot
ICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdEluZm8uYmx1ZUJpdHMgID4gMCAmJiAhY2xlYXJQ
YXJhbXMuY29sb3JNYXNrQmx1ZSkgfHwKKyAgICAgICAgICAgICAgICAgICAgIChmb3JtYXRJbmZv
LmJsdWVCaXRzID4gMCAmJiAhY2xlYXJQYXJhbXMuY29sb3JNYXNrQmx1ZSkgfHwKICAgICAgICAg
ICAgICAgICAgICAgIChmb3JtYXRJbmZvLmFscGhhQml0cyA+IDAgJiYgIWNsZWFyUGFyYW1zLmNv
bG9yTWFza0FscGhhKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAvLyBBIG1hc2tl
ZCBjbGVhciBpcyByZXF1aXJlZCwgb3IgYSBzY2lzc29yZWQgY2xlYXIgaXMgcmVxdWlyZWQgYW5k
IElEM0QxMURldmljZUNvbnRleHQxOjpDbGVhclZpZXcgaXMgdW5hdmFpbGFibGUKQEAgLTMyNywy
MCArMzI3LDI2IEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VU
X09GX01FTU9SWSwgIkludGVybmFsIHJlbmRlciB0YXJnZXQgdmlldyBwb2ludGVyIHVuZXhwZWN0
ZWRseSBudWxsLiIpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGNvbnN0
IGF1dG8gJmR4Z2lGb3JtYXRJbmZvID0gZDNkMTE6OkdldERYR0lGb3JtYXRJbmZvKAotICAgICAg
ICAgICAgICAgICAgICBkM2QxMTo6R2V0QU5HTEVGb3JtYXRTZXQocmVuZGVyVGFyZ2V0LT5nZXRB
TkdMRUZvcm1hdCgpKS5ydHZGb3JtYXQpOworICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8gJm5h
dGl2ZUZvcm1hdCA9IHJlbmRlclRhcmdldC0+Z2V0Rm9ybWF0U2V0KCkuZm9ybWF0OwogCiAgICAg
ICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGFjdHVhbCBmb3JtYXQgaGFzIGEgY2hhbm5lbCB0
aGF0IHRoZSBpbnRlcm5hbCBmb3JtYXQgZG9lcyBub3QgYW5kIHNldCB0aGVtIHRvIHRoZQogICAg
ICAgICAgICAgICAgIC8vIGRlZmF1bHQgdmFsdWVzCi0gICAgICAgICAgICAgICAgZmxvYXQgY2xl
YXJWYWx1ZXNbNF0gPQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgKChm
b3JtYXRJbmZvLnJlZEJpdHMgICA9PSAwICYmIGR4Z2lGb3JtYXRJbmZvLnJlZEJpdHMgICA+IDAp
ID8gMC4wZiA6IGNsZWFyUGFyYW1zLmNvbG9yRkNsZWFyVmFsdWUucmVkKSwKLSAgICAgICAgICAg
ICAgICAgICAgKChmb3JtYXRJbmZvLmdyZWVuQml0cyA9PSAwICYmIGR4Z2lGb3JtYXRJbmZvLmdy
ZWVuQml0cyA+IDApID8gMC4wZiA6IGNsZWFyUGFyYW1zLmNvbG9yRkNsZWFyVmFsdWUuZ3JlZW4p
LAotICAgICAgICAgICAgICAgICAgICAoKGZvcm1hdEluZm8uYmx1ZUJpdHMgID09IDAgJiYgZHhn
aUZvcm1hdEluZm8uYmx1ZUJpdHMgID4gMCkgPyAwLjBmIDogY2xlYXJQYXJhbXMuY29sb3JGQ2xl
YXJWYWx1ZS5ibHVlKSwKLSAgICAgICAgICAgICAgICAgICAgKChmb3JtYXRJbmZvLmFscGhhQml0
cyA9PSAwICYmIGR4Z2lGb3JtYXRJbmZvLmFscGhhQml0cyA+IDApID8gMS4wZiA6IGNsZWFyUGFy
YW1zLmNvbG9yRkNsZWFyVmFsdWUuYWxwaGEpLAorICAgICAgICAgICAgICAgIGZsb2F0IGNsZWFy
VmFsdWVzWzRdID0geworICAgICAgICAgICAgICAgICAgICAoKGZvcm1hdEluZm8ucmVkQml0cyA9
PSAwICYmIG5hdGl2ZUZvcm1hdC5yZWRCaXRzID4gMCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICA/IDAuMGYKKyAgICAgICAgICAgICAgICAgICAgICAgICA6IGNsZWFyUGFyYW1zLmNvbG9yRkNs
ZWFyVmFsdWUucmVkKSwKKyAgICAgICAgICAgICAgICAgICAgKChmb3JtYXRJbmZvLmdyZWVuQml0
cyA9PSAwICYmIG5hdGl2ZUZvcm1hdC5ncmVlbkJpdHMgPiAwKQorICAgICAgICAgICAgICAgICAg
ICAgICAgID8gMC4wZgorICAgICAgICAgICAgICAgICAgICAgICAgIDogY2xlYXJQYXJhbXMuY29s
b3JGQ2xlYXJWYWx1ZS5ncmVlbiksCisgICAgICAgICAgICAgICAgICAgICgoZm9ybWF0SW5mby5i
bHVlQml0cyA9PSAwICYmIG5hdGl2ZUZvcm1hdC5ibHVlQml0cyA+IDApCisgICAgICAgICAgICAg
ICAgICAgICAgICAgPyAwLjBmCisgICAgICAgICAgICAgICAgICAgICAgICAgOiBjbGVhclBhcmFt
cy5jb2xvckZDbGVhclZhbHVlLmJsdWUpLAorICAgICAgICAgICAgICAgICAgICAoKGZvcm1hdElu
Zm8uYWxwaGFCaXRzID09IDAgJiYgbmF0aXZlRm9ybWF0LmFscGhhQml0cyA+IDApCisgICAgICAg
ICAgICAgICAgICAgICAgICAgPyAxLjBmCisgICAgICAgICAgICAgICAgICAgICAgICAgOiBjbGVh
clBhcmFtcy5jb2xvckZDbGVhclZhbHVlLmFscGhhKSwKICAgICAgICAgICAgICAgICB9OwogCi0g
ICAgICAgICAgICAgICAgaWYgKGR4Z2lGb3JtYXRJbmZvLmFscGhhQml0cyA9PSAxKQorICAgICAg
ICAgICAgICAgIGlmIChmb3JtYXRJbmZvLmFscGhhQml0cyA9PSAxKQogICAgICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICAgICAgLy8gU29tZSBkcml2ZXJzIGRvIG5vdCBjb3JyZWN0bHkg
aGFuZGxlIGNhbGxpbmcgQ2xlYXIoKSBvbiBhIGZvcm1hdCB3aXRoIDEtYml0IGFscGhhLgogICAg
ICAgICAgICAgICAgICAgICAvLyBUaGV5IGNhbiBpbmNvcnJlY3RseSByb3VuZCBhbGwgbm9uLXpl
cm8gdmFsdWVzIHVwIHRvIDEuMGYuIE5vdGUgdGhhdCBXQVJQIGRvZXMgbm90IGRvIHRoaXMuCkBA
IC0zNzUsMTYgKzM4MSwxMiBAQAogICAgICAgICBBU1NFUlQoYXR0YWNobWVudCAhPSBudWxscHRy
KTsKIAogICAgICAgICBSZW5kZXJUYXJnZXQxMSAqcmVuZGVyVGFyZ2V0ID0gbnVsbHB0cjsKLSAg
ICAgICAgZ2w6OkVycm9yIGVycm9yID0gYXR0YWNobWVudC0+Z2V0UmVuZGVyVGFyZ2V0KCZyZW5k
ZXJUYXJnZXQpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKGF0dGFj
aG1lbnQtPmdldFJlbmRlclRhcmdldCgmcmVuZGVyVGFyZ2V0KSk7CiAKLSAgICAgICAgY29uc3Qg
YXV0byAmZHhnaUZvcm1hdEluZm8gPSBkM2QxMTo6R2V0RFhHSUZvcm1hdEluZm8oCi0gICAgICAg
ICAgICBkM2QxMTo6R2V0QU5HTEVGb3JtYXRTZXQocmVuZGVyVGFyZ2V0LT5nZXRBTkdMRUZvcm1h
dCgpKS5kc3ZGb3JtYXQpOworICAgICAgICBjb25zdCBhdXRvICZuYXRpdmVGb3JtYXQgPSByZW5k
ZXJUYXJnZXQtPmdldEZvcm1hdFNldCgpLmZvcm1hdDsKIAotICAgICAgICB1bnNpZ25lZCBpbnQg
c3RlbmNpbFVubWFza2VkID0gKHN0ZW5jaWxBdHRhY2htZW50ICE9IG51bGxwdHIpID8gKDEgPDwg
ZHhnaUZvcm1hdEluZm8uc3RlbmNpbEJpdHMpIC0gMSA6IDA7CisgICAgICAgIHVuc2lnbmVkIGlu
dCBzdGVuY2lsVW5tYXNrZWQgPQorICAgICAgICAgICAgKHN0ZW5jaWxBdHRhY2htZW50ICE9IG51
bGxwdHIpID8gKDEgPDwgbmF0aXZlRm9ybWF0LnN0ZW5jaWxCaXRzKSAtIDEgOiAwOwogICAgICAg
ICBib29sIG5lZWRNYXNrZWRTdGVuY2lsQ2xlYXIgPSBjbGVhclBhcmFtcy5jbGVhclN0ZW5jaWwg
JiYgKGNsZWFyUGFyYW1zLnN0ZW5jaWxXcml0ZU1hc2sgJiBzdGVuY2lsVW5tYXNrZWQpICE9IHN0
ZW5jaWxVbm1hc2tlZDsKIAogICAgICAgICBpZiAobmVlZFNjaXNzb3JlZENsZWFyIHx8IG5lZWRN
YXNrZWRTdGVuY2lsQ2xlYXIpCkBAIC00MDgsMTI5ICs0MTAsMTM5IEBACiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBpZiAobWFza2VkQ2xlYXJSZW5kZXJUYXJnZXRzLnNpemUoKSA+IDAgfHwgbWFz
a2VkQ2xlYXJEZXB0aFN0ZW5jaWwpCisgICAgaWYgKG1hc2tlZENsZWFyUmVuZGVyVGFyZ2V0cy5l
bXB0eSgpICYmICFtYXNrZWRDbGVhckRlcHRoU3RlbmNpbCkKICAgICB7Ci0gICAgICAgIC8vIFRv
IGNsZWFyIHRoZSByZW5kZXIgdGFyZ2V0cyBhbmQgZGVwdGggc3RlbmNpbCBpbiBvbmUgcGFzczoK
LSAgICAgICAgLy8KLSAgICAgICAgLy8gUmVuZGVyIGEgcXVhZCBjbGlwcGVkIHRvIHRoZSBzY2lz
c29yIHJlY3RhbmdsZSB3aGljaCBkcmF3cyB0aGUgY2xlYXIgY29sb3IgYW5kIGEgYmxlbmQKLSAg
ICAgICAgLy8gc3RhdGUgdGhhdCB3aWxsIHBlcmZvcm0gdGhlIHJlcXVpcmVkIGNvbG9yIG1hc2tp
bmcuCi0gICAgICAgIC8vCi0gICAgICAgIC8vIFRoZSBxdWFkJ3MgZGVwdGggaXMgZXF1YWwgdG8g
dGhlIGRlcHRoIGNsZWFyIHZhbHVlIHdpdGggYSBkZXB0aCBzdGVuY2lsIHN0YXRlIHRoYXQKLSAg
ICAgICAgLy8gd2lsbCBlbmFibGUgb3IgZGlzYWJsZSBkZXB0aCB0ZXN0L3dyaXRlcyBpZiB0aGUg
ZGVwdGggYnVmZmVyIHNob3VsZCBiZSBjbGVhcmVkIG9yIG5vdC4KLSAgICAgICAgLy8KLSAgICAg
ICAgLy8gVGhlIHJhc3Rlcml6ZXIgc3RhdGUncyBzdGVuY2lsIGlzIHNldCB0byBhbHdheXMgcGFz
cyBvciBmYWlsIGJhc2VkIG9uIGlmIHRoZSBzdGVuY2lsCi0gICAgICAgIC8vIHNob3VsZCBiZSBj
bGVhcmVkIG9yIG5vdCB3aXRoIGEgc3RlbmNpbCB3cml0ZSBtYXNrIG9mIHRoZSBzdGVuY2lsIGNs
ZWFyIHZhbHVlLgotICAgICAgICAvLwotICAgICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotICAgICAgICAvLwotICAgICAgICAvLyBMdWNraWx5LCB0aGUgZ2wgc3BlYyAoRVMg
My4wLjIgcGcgMTgzKSBzdGF0ZXMgdGhhdCB0aGUgcmVzdWx0cyBvZiBjbGVhcmluZyBhIHJlbmRl
ci0KLSAgICAgICAgLy8gYnVmZmVyIHRoYXQgaXMgbm90IG5vcm1hbGl6ZWQgZml4ZWQgcG9pbnQg
b3IgZmxvYXRpbmcgcG9pbnQgd2l0aCBmbG9hdGluZyBwb2ludCB2YWx1ZXMKLSAgICAgICAgLy8g
YXJlIHVuZGVmaW5lZCBzbyB3ZSBjYW4ganVzdCB3cml0ZSBmbG9hdHMgdG8gdGhlbSBhbmQgRDNE
MTEgd2lsbCBiaXQgY2FzdCB0aGVtIHRvCi0gICAgICAgIC8vIGludGVnZXJzLgotICAgICAgICAv
LwotICAgICAgICAvLyBBbHNvLCB3ZSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IGF0dGVtcHRp
bmcgdG8gY2xlYXIgYSBub3JtYWxpemVkIGZpeGVkL2Zsb2F0aW5nIHBvaW50Ci0gICAgICAgIC8v
IGJ1ZmZlciB3aXRoIGludGVnZXIgdmFsdWVzIGJlY2F1c2UgdGhlcmUgaXMgbm8gZ2wgQVBJIGNh
bGwgd2hpY2ggd291bGQgYWxsb3cgaXQsCi0gICAgICAgIC8vIGdsQ2xlYXJCdWZmZXIqIGNhbGxz
IG9ubHkgY2xlYXIgYSBzaW5nbGUgcmVuZGVyYnVmZmVyIGF0IGEgdGltZSB3aGljaCBpcyB2ZXJp
ZmllZCB0bwotICAgICAgICAvLyBiZSBhIGNvbXBhdGlibGUgY2xlYXIgdHlwZS4KKyAgICAgICAg
cmV0dXJuIGdsOjpOb0Vycm9yKCk7CisgICAgfQogCi0gICAgICAgIC8vIEJpbmQgYWxsIHRoZSBy
ZW5kZXIgdGFyZ2V0cyB3aGljaCBuZWVkIGNsZWFyaW5nCi0gICAgICAgIEFTU0VSVChtYXNrZWRD
bGVhclJlbmRlclRhcmdldHMuc2l6ZSgpIDw9IG1SZW5kZXJlci0+Z2V0UmVuZGVyZXJDYXBzKCku
bWF4RHJhd0J1ZmZlcnMpOwotICAgICAgICBzdGQ6OnZlY3RvcjxJRDNEMTFSZW5kZXJUYXJnZXRW
aWV3Kj4gcnR2cyhtYXNrZWRDbGVhclJlbmRlclRhcmdldHMuc2l6ZSgpKTsKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBtYXNrZWRDbGVhclJlbmRlclRhcmdldHMuc2l6ZSgp
OyBpKyspCisgICAgLy8gVG8gY2xlYXIgdGhlIHJlbmRlciB0YXJnZXRzIGFuZCBkZXB0aCBzdGVu
Y2lsIGluIG9uZSBwYXNzOgorICAgIC8vCisgICAgLy8gUmVuZGVyIGEgcXVhZCBjbGlwcGVkIHRv
IHRoZSBzY2lzc29yIHJlY3RhbmdsZSB3aGljaCBkcmF3cyB0aGUgY2xlYXIgY29sb3IgYW5kIGEg
YmxlbmQKKyAgICAvLyBzdGF0ZSB0aGF0IHdpbGwgcGVyZm9ybSB0aGUgcmVxdWlyZWQgY29sb3Ig
bWFza2luZy4KKyAgICAvLworICAgIC8vIFRoZSBxdWFkJ3MgZGVwdGggaXMgZXF1YWwgdG8gdGhl
IGRlcHRoIGNsZWFyIHZhbHVlIHdpdGggYSBkZXB0aCBzdGVuY2lsIHN0YXRlIHRoYXQKKyAgICAv
LyB3aWxsIGVuYWJsZSBvciBkaXNhYmxlIGRlcHRoIHRlc3Qvd3JpdGVzIGlmIHRoZSBkZXB0aCBi
dWZmZXIgc2hvdWxkIGJlIGNsZWFyZWQgb3Igbm90LgorICAgIC8vCisgICAgLy8gVGhlIHJhc3Rl
cml6ZXIgc3RhdGUncyBzdGVuY2lsIGlzIHNldCB0byBhbHdheXMgcGFzcyBvciBmYWlsIGJhc2Vk
IG9uIGlmIHRoZSBzdGVuY2lsCisgICAgLy8gc2hvdWxkIGJlIGNsZWFyZWQgb3Igbm90IHdpdGgg
YSBzdGVuY2lsIHdyaXRlIG1hc2sgb2YgdGhlIHN0ZW5jaWwgY2xlYXIgdmFsdWUuCisgICAgLy8K
KyAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vCisgICAgLy8gTHVj
a2lseSwgdGhlIGdsIHNwZWMgKEVTIDMuMC4yIHBnIDE4Mykgc3RhdGVzIHRoYXQgdGhlIHJlc3Vs
dHMgb2YgY2xlYXJpbmcgYSByZW5kZXItCisgICAgLy8gYnVmZmVyIHRoYXQgaXMgbm90IG5vcm1h
bGl6ZWQgZml4ZWQgcG9pbnQgb3IgZmxvYXRpbmcgcG9pbnQgd2l0aCBmbG9hdGluZyBwb2ludCB2
YWx1ZXMKKyAgICAvLyBhcmUgdW5kZWZpbmVkIHNvIHdlIGNhbiBqdXN0IHdyaXRlIGZsb2F0cyB0
byB0aGVtIGFuZCBEM0QxMSB3aWxsIGJpdCBjYXN0IHRoZW0gdG8KKyAgICAvLyBpbnRlZ2Vycy4K
KyAgICAvLworICAgIC8vIEFsc28sIHdlIGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgYXR0ZW1w
dGluZyB0byBjbGVhciBhIG5vcm1hbGl6ZWQgZml4ZWQvZmxvYXRpbmcgcG9pbnQKKyAgICAvLyBi
dWZmZXIgd2l0aCBpbnRlZ2VyIHZhbHVlcyBiZWNhdXNlIHRoZXJlIGlzIG5vIGdsIEFQSSBjYWxs
IHdoaWNoIHdvdWxkIGFsbG93IGl0LAorICAgIC8vIGdsQ2xlYXJCdWZmZXIqIGNhbGxzIG9ubHkg
Y2xlYXIgYSBzaW5nbGUgcmVuZGVyYnVmZmVyIGF0IGEgdGltZSB3aGljaCBpcyB2ZXJpZmllZCB0
bworICAgIC8vIGJlIGEgY29tcGF0aWJsZSBjbGVhciB0eXBlLgorCisgICAgLy8gQmluZCBhbGwg
dGhlIHJlbmRlciB0YXJnZXRzIHdoaWNoIG5lZWQgY2xlYXJpbmcKKyAgICBBU1NFUlQobWFza2Vk
Q2xlYXJSZW5kZXJUYXJnZXRzLnNpemUoKSA8PSBtUmVuZGVyZXItPmdldE5hdGl2ZUNhcHMoKS5t
YXhEcmF3QnVmZmVycyk7CisgICAgc3RkOjp2ZWN0b3I8SUQzRDExUmVuZGVyVGFyZ2V0VmlldyAq
PiBydHZzKG1hc2tlZENsZWFyUmVuZGVyVGFyZ2V0cy5zaXplKCkpOworICAgIGZvciAodW5zaWdu
ZWQgaW50IGkgPSAwOyBpIDwgbWFza2VkQ2xlYXJSZW5kZXJUYXJnZXRzLnNpemUoKTsgaSsrKQor
ICAgIHsKKyAgICAgICAgUmVuZGVyVGFyZ2V0MTEgKnJlbmRlclRhcmdldCA9IG1hc2tlZENsZWFy
UmVuZGVyVGFyZ2V0c1tpXS5yZW5kZXJUYXJnZXQ7CisgICAgICAgIElEM0QxMVJlbmRlclRhcmdl
dFZpZXcgKnJ0diAgPSByZW5kZXJUYXJnZXQtPmdldFJlbmRlclRhcmdldFZpZXcoKTsKKyAgICAg
ICAgaWYgKCFydHYpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFJlbmRlclRhcmdldDExICpyZW5k
ZXJUYXJnZXQgPSBtYXNrZWRDbGVhclJlbmRlclRhcmdldHNbaV0ucmVuZGVyVGFyZ2V0OwotICAg
ICAgICAgICAgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqcnR2ID0gcmVuZGVyVGFyZ2V0LT5nZXRS
ZW5kZXJUYXJnZXRWaWV3KCk7Ci0gICAgICAgICAgICBpZiAoIXJ0dikKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJJbnRl
cm5hbCByZW5kZXIgdGFyZ2V0IHZpZXcgcG9pbnRlciB1bmV4cGVjdGVkbHkgbnVsbC4iKTsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgcnR2c1tpXSA9IHJ0djsKKyAgICAgICAgICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkludGVybmFsIHJlbmRlciB0YXJnZXQgdmlldyBwb2ludGVyIHVuZXhwZWN0ZWRseSBu
dWxsLiIpOwogICAgICAgICB9Ci0gICAgICAgIElEM0QxMURlcHRoU3RlbmNpbFZpZXcgKmRzdiA9
IG1hc2tlZENsZWFyRGVwdGhTdGVuY2lsID8gbWFza2VkQ2xlYXJEZXB0aFN0ZW5jaWwtPmdldERl
cHRoU3RlbmNpbFZpZXcoKSA6IG51bGxwdHI7CiAKLSAgICAgICAgSUQzRDExQmxlbmRTdGF0ZSAq
YmxlbmRTdGF0ZSA9IGdldEJsZW5kU3RhdGUobWFza2VkQ2xlYXJSZW5kZXJUYXJnZXRzKTsKLSAg
ICAgICAgY29uc3QgRkxPQVQgYmxlbmRGYWN0b3JzWzRdID0geyAxLjBmLCAxLjBmLCAxLjBmLCAx
LjBmIH07Ci0gICAgICAgIGNvbnN0IFVJTlQgc2FtcGxlTWFzayA9IDB4RkZGRkZGRkY7CisgICAg
ICAgIHJ0dnNbaV0gPSBydHY7CisgICAgfQorICAgIElEM0QxMURlcHRoU3RlbmNpbFZpZXcgKmRz
diA9CisgICAgICAgIG1hc2tlZENsZWFyRGVwdGhTdGVuY2lsID8gbWFza2VkQ2xlYXJEZXB0aFN0
ZW5jaWwtPmdldERlcHRoU3RlbmNpbFZpZXcoKSA6IG51bGxwdHI7CiAKLSAgICAgICAgSUQzRDEx
RGVwdGhTdGVuY2lsU3RhdGUgKmRzU3RhdGUgPSBnZXREZXB0aFN0ZW5jaWxTdGF0ZShjbGVhclBh
cmFtcyk7Ci0gICAgICAgIGNvbnN0IFVJTlQgc3RlbmNpbENsZWFyID0gY2xlYXJQYXJhbXMuc3Rl
bmNpbENsZWFyVmFsdWUgJiAweEZGOworICAgIElEM0QxMUJsZW5kU3RhdGUgKmJsZW5kU3RhdGUg
PSBnZXRCbGVuZFN0YXRlKG1hc2tlZENsZWFyUmVuZGVyVGFyZ2V0cyk7CisgICAgY29uc3QgRkxP
QVQgYmxlbmRGYWN0b3JzWzRdICA9IHsxLjBmLCAxLjBmLCAxLjBmLCAxLjBmfTsKKyAgICBjb25z
dCBVSU5UIHNhbXBsZU1hc2sgICAgICAgID0gMHhGRkZGRkZGRjsKIAotICAgICAgICAvLyBTZXQg
dGhlIHZlcnRpY2VzCi0gICAgICAgIFVJTlQgdmVydGV4U3RyaWRlID0gMDsKLSAgICAgICAgY29u
c3QgVUlOVCBzdGFydElkeCA9IDA7Ci0gICAgICAgIENsZWFyU2hhZGVyICpzaGFkZXIgPSBudWxs
cHRyOwotICAgICAgICBEM0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwcGVkUmVzb3VyY2U7Ci0g
ICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlQ29udGV4dC0+TWFwKG1WZXJ0ZXhCdWZmZXIs
IDAsIEQzRDExX01BUF9XUklURV9ESVNDQVJELCAwLCAmbWFwcGVkUmVzb3VyY2UpOwotICAgICAg
ICBpZiAoRkFJTEVEKHJlc3VsdCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBtYXAgaW50ZXJuYWwgbWFza2VkIGNs
ZWFyIHZlcnRleCBidWZmZXIsIEhSRVNVTFQ6IDB4JVguIiwgcmVzdWx0KTsKLSAgICAgICAgfQor
ICAgIElEM0QxMURlcHRoU3RlbmNpbFN0YXRlICpkc1N0YXRlID0gZ2V0RGVwdGhTdGVuY2lsU3Rh
dGUoY2xlYXJQYXJhbXMpOworICAgIGNvbnN0IFVJTlQgc3RlbmNpbENsZWFyICAgICAgICAgID0g
Y2xlYXJQYXJhbXMuc3RlbmNpbENsZWFyVmFsdWUgJiAweEZGOwogCi0gICAgICAgIGNvbnN0IGds
OjpSZWN0YW5nbGUgKnNjaXNzb3JQdHIgPSBjbGVhclBhcmFtcy5zY2lzc29yRW5hYmxlZCA/ICZj
bGVhclBhcmFtcy5zY2lzc29yIDogbnVsbHB0cjsKLSAgICAgICAgc3dpdGNoIChjbGVhclBhcmFt
cy5jb2xvckNsZWFyVHlwZSkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6Ci0g
ICAgICAgICAgICBBcHBseVZlcnRpY2VzKGZyYW1lYnVmZmVyU2l6ZSwgc2Npc3NvclB0ciwgY2xl
YXJQYXJhbXMuY29sb3JGQ2xlYXJWYWx1ZSwgY2xlYXJQYXJhbXMuZGVwdGhDbGVhclZhbHVlLCBt
YXBwZWRSZXNvdXJjZS5wRGF0YSk7CisgICAgLy8gU2V0IHRoZSB2ZXJ0aWNlcworICAgIFVJTlQg
dmVydGV4U3RyaWRlICAgPSAwOworICAgIGNvbnN0IFVJTlQgc3RhcnRJZHggPSAwOworICAgIENs
ZWFyU2hhZGVyICpzaGFkZXIgPSBudWxscHRyOworICAgIEQzRDExX01BUFBFRF9TVUJSRVNPVVJD
RSBtYXBwZWRSZXNvdXJjZTsKKyAgICBIUkVTVUxUIHJlc3VsdCA9CisgICAgICAgIGRldmljZUNv
bnRleHQtPk1hcChtVmVydGV4QnVmZmVyLCAwLCBEM0QxMV9NQVBfV1JJVEVfRElTQ0FSRCwgMCwg
Jm1hcHBlZFJlc291cmNlKTsKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAgICAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIkZhaWxlZCB0byBtYXAgaW50ZXJuYWwgbWFza2VkIGNsZWFyIHZlcnRleCBidWZmZXIs
IEhSRVNVTFQ6IDB4JVguIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpOworICAg
IH0KKworICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgKnNjaXNzb3JQdHIgPSBjbGVhclBhcmFtcy5z
Y2lzc29yRW5hYmxlZCA/ICZjbGVhclBhcmFtcy5zY2lzc29yIDogbnVsbHB0cjsKKyAgICBzd2l0
Y2ggKGNsZWFyUGFyYW1zLmNvbG9yQ2xlYXJUeXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9G
TE9BVDoKKyAgICAgICAgICAgIEFwcGx5VmVydGljZXMoZnJhbWVidWZmZXJTaXplLCBzY2lzc29y
UHRyLCBjbGVhclBhcmFtcy5jb2xvckZDbGVhclZhbHVlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBjbGVhclBhcmFtcy5kZXB0aENsZWFyVmFsdWUsIG1hcHBlZFJlc291cmNlLnBEYXRhKTsK
ICAgICAgICAgICAgIHZlcnRleFN0cmlkZSA9IHNpemVvZihkM2QxMTo6UG9zaXRpb25EZXB0aENv
bG9yVmVydGV4PGZsb2F0Pik7Ci0gICAgICAgICAgICBzaGFkZXIgPSBtRmxvYXRDbGVhclNoYWRl
cjsKKyAgICAgICAgICAgIHNoYWRlciAgICAgICA9IG1GbG9hdENsZWFyU2hhZGVyOwogICAgICAg
ICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKLSAgICAgICAg
ICAgIEFwcGx5VmVydGljZXMoZnJhbWVidWZmZXJTaXplLCBzY2lzc29yUHRyLCBjbGVhclBhcmFt
cy5jb2xvclVJQ2xlYXJWYWx1ZSwgY2xlYXJQYXJhbXMuZGVwdGhDbGVhclZhbHVlLCBtYXBwZWRS
ZXNvdXJjZS5wRGF0YSk7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgorICAgICAgICAg
ICAgQXBwbHlWZXJ0aWNlcyhmcmFtZWJ1ZmZlclNpemUsIHNjaXNzb3JQdHIsIGNsZWFyUGFyYW1z
LmNvbG9yVUlDbGVhclZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclBhcmFt
cy5kZXB0aENsZWFyVmFsdWUsIG1hcHBlZFJlc291cmNlLnBEYXRhKTsKICAgICAgICAgICAgIHZl
cnRleFN0cmlkZSA9IHNpemVvZihkM2QxMTo6UG9zaXRpb25EZXB0aENvbG9yVmVydGV4PHVuc2ln
bmVkIGludD4pOwotICAgICAgICAgICAgc2hhZGVyID0gbVVpbnRDbGVhclNoYWRlcjsKKyAgICAg
ICAgICAgIHNoYWRlciAgICAgICA9IG1VaW50Q2xlYXJTaGFkZXI7CiAgICAgICAgICAgICBicmVh
azsKIAotICAgICAgICAgIGNhc2UgR0xfSU5UOgotICAgICAgICAgICAgQXBwbHlWZXJ0aWNlcyhm
cmFtZWJ1ZmZlclNpemUsIHNjaXNzb3JQdHIsIGNsZWFyUGFyYW1zLmNvbG9ySUNsZWFyVmFsdWUs
IGNsZWFyUGFyYW1zLmRlcHRoQ2xlYXJWYWx1ZSwgbWFwcGVkUmVzb3VyY2UucERhdGEpOworICAg
ICAgICBjYXNlIEdMX0lOVDoKKyAgICAgICAgICAgIEFwcGx5VmVydGljZXMoZnJhbWVidWZmZXJT
aXplLCBzY2lzc29yUHRyLCBjbGVhclBhcmFtcy5jb2xvcklDbGVhclZhbHVlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBjbGVhclBhcmFtcy5kZXB0aENsZWFyVmFsdWUsIG1hcHBlZFJlc291
cmNlLnBEYXRhKTsKICAgICAgICAgICAgIHZlcnRleFN0cmlkZSA9IHNpemVvZihkM2QxMTo6UG9z
aXRpb25EZXB0aENvbG9yVmVydGV4PGludD4pOwotICAgICAgICAgICAgc2hhZGVyID0gbUludENs
ZWFyU2hhZGVyOworICAgICAgICAgICAgc2hhZGVyICAgICAgID0gbUludENsZWFyU2hhZGVyOwog
ICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBkZWZhdWx0OgorICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9CisgICAgfQogCi0gICAgICAgIGRldmljZUNvbnRleHQtPlVubWFwKG1WZXJ0ZXhCdWZmZXIs
IDApOworICAgIGRldmljZUNvbnRleHQtPlVubWFwKG1WZXJ0ZXhCdWZmZXIsIDApOwogCi0gICAg
ICAgIC8vIFNldCB0aGUgdmlld3BvcnQgdG8gYmUgdGhlIHNhbWUgc2l6ZSBhcyB0aGUgZnJhbWVi
dWZmZXIKLSAgICAgICAgRDNEMTFfVklFV1BPUlQgdmlld3BvcnQ7Ci0gICAgICAgIHZpZXdwb3J0
LlRvcExlZnRYID0gMDsKLSAgICAgICAgdmlld3BvcnQuVG9wTGVmdFkgPSAwOwotICAgICAgICB2
aWV3cG9ydC5XaWR0aCA9IHN0YXRpY19jYXN0PEZMT0FUPihmcmFtZWJ1ZmZlclNpemUud2lkdGgp
OwotICAgICAgICB2aWV3cG9ydC5IZWlnaHQgPSBzdGF0aWNfY2FzdDxGTE9BVD4oZnJhbWVidWZm
ZXJTaXplLmhlaWdodCk7Ci0gICAgICAgIHZpZXdwb3J0Lk1pbkRlcHRoID0gMDsKLSAgICAgICAg
dmlld3BvcnQuTWF4RGVwdGggPSAxOwotICAgICAgICBkZXZpY2VDb250ZXh0LT5SU1NldFZpZXdw
b3J0cygxLCAmdmlld3BvcnQpOworICAgIC8vIFNldCB0aGUgdmlld3BvcnQgdG8gYmUgdGhlIHNh
bWUgc2l6ZSBhcyB0aGUgZnJhbWVidWZmZXIKKyAgICBEM0QxMV9WSUVXUE9SVCB2aWV3cG9ydDsK
KyAgICB2aWV3cG9ydC5Ub3BMZWZ0WCA9IDA7CisgICAgdmlld3BvcnQuVG9wTGVmdFkgPSAwOwor
ICAgIHZpZXdwb3J0LldpZHRoICAgID0gc3RhdGljX2Nhc3Q8RkxPQVQ+KGZyYW1lYnVmZmVyU2l6
ZS53aWR0aCk7CisgICAgdmlld3BvcnQuSGVpZ2h0ICAgPSBzdGF0aWNfY2FzdDxGTE9BVD4oZnJh
bWVidWZmZXJTaXplLmhlaWdodCk7CisgICAgdmlld3BvcnQuTWluRGVwdGggPSAwOworICAgIHZp
ZXdwb3J0Lk1heERlcHRoID0gMTsKKyAgICBkZXZpY2VDb250ZXh0LT5SU1NldFZpZXdwb3J0cygx
LCAmdmlld3BvcnQpOwogCi0gICAgICAgIC8vIEFwcGx5IHN0YXRlCi0gICAgICAgIGRldmljZUNv
bnRleHQtPk9NU2V0QmxlbmRTdGF0ZShibGVuZFN0YXRlLCBibGVuZEZhY3RvcnMsIHNhbXBsZU1h
c2spOwotICAgICAgICBkZXZpY2VDb250ZXh0LT5PTVNldERlcHRoU3RlbmNpbFN0YXRlKGRzU3Rh
dGUsIHN0ZW5jaWxDbGVhcik7Ci0gICAgICAgIGRldmljZUNvbnRleHQtPlJTU2V0U3RhdGUobVJh
c3Rlcml6ZXJTdGF0ZSk7CisgICAgLy8gQXBwbHkgc3RhdGUKKyAgICBkZXZpY2VDb250ZXh0LT5P
TVNldEJsZW5kU3RhdGUoYmxlbmRTdGF0ZSwgYmxlbmRGYWN0b3JzLCBzYW1wbGVNYXNrKTsKKyAg
ICBkZXZpY2VDb250ZXh0LT5PTVNldERlcHRoU3RlbmNpbFN0YXRlKGRzU3RhdGUsIHN0ZW5jaWxD
bGVhcik7CisgICAgZGV2aWNlQ29udGV4dC0+UlNTZXRTdGF0ZShtUmFzdGVyaXplclN0YXRlKTsK
IAotICAgICAgICAvLyBBcHBseSBzaGFkZXJzCi0gICAgICAgIGRldmljZUNvbnRleHQtPklBU2V0
SW5wdXRMYXlvdXQoc2hhZGVyLT5pbnB1dExheW91dC0+cmVzb2x2ZShkZXZpY2UpKTsKLSAgICAg
ICAgZGV2aWNlQ29udGV4dC0+VlNTZXRTaGFkZXIoc2hhZGVyLT52ZXJ0ZXhTaGFkZXIucmVzb2x2
ZShkZXZpY2UpLCBudWxscHRyLCAwKTsKLSAgICAgICAgZGV2aWNlQ29udGV4dC0+UFNTZXRTaGFk
ZXIoc2hhZGVyLT5waXhlbFNoYWRlci5yZXNvbHZlKGRldmljZSksIG51bGxwdHIsIDApOwotICAg
ICAgICBkZXZpY2VDb250ZXh0LT5HU1NldFNoYWRlcihudWxscHRyLCBudWxscHRyLCAwKTsKKyAg
ICAvLyBBcHBseSBzaGFkZXJzCisgICAgZGV2aWNlQ29udGV4dC0+SUFTZXRJbnB1dExheW91dChz
aGFkZXItPmlucHV0TGF5b3V0LT5yZXNvbHZlKGRldmljZSkpOworICAgIGRldmljZUNvbnRleHQt
PlZTU2V0U2hhZGVyKHNoYWRlci0+dmVydGV4U2hhZGVyLnJlc29sdmUoZGV2aWNlKSwgbnVsbHB0
ciwgMCk7CisgICAgZGV2aWNlQ29udGV4dC0+UFNTZXRTaGFkZXIoc2hhZGVyLT5waXhlbFNoYWRl
ci5yZXNvbHZlKGRldmljZSksIG51bGxwdHIsIDApOworICAgIGRldmljZUNvbnRleHQtPkdTU2V0
U2hhZGVyKG51bGxwdHIsIG51bGxwdHIsIDApOwogCi0gICAgICAgIC8vIEFwcGx5IHZlcnRleCBi
dWZmZXIKLSAgICAgICAgZGV2aWNlQ29udGV4dC0+SUFTZXRWZXJ0ZXhCdWZmZXJzKDAsIDEsICZt
VmVydGV4QnVmZmVyLCAmdmVydGV4U3RyaWRlLCAmc3RhcnRJZHgpOwotICAgICAgICBkZXZpY2VD
b250ZXh0LT5JQVNldFByaW1pdGl2ZVRvcG9sb2d5KEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfVFJJ
QU5HTEVTVFJJUCk7CisgICAgLy8gQXBwbHkgdmVydGV4IGJ1ZmZlcgorICAgIGRldmljZUNvbnRl
eHQtPklBU2V0VmVydGV4QnVmZmVycygwLCAxLCAmbVZlcnRleEJ1ZmZlciwgJnZlcnRleFN0cmlk
ZSwgJnN0YXJ0SWR4KTsKKyAgICBkZXZpY2VDb250ZXh0LT5JQVNldFByaW1pdGl2ZVRvcG9sb2d5
KEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfVFJJQU5HTEVTVFJJUCk7CiAKLSAgICAgICAgLy8gQXBw
bHkgcmVuZGVyIHRhcmdldHMKLSAgICAgICAgbVJlbmRlcmVyLT5nZXRTdGF0ZU1hbmFnZXIoKS0+
c2V0T25lVGltZVJlbmRlclRhcmdldHMocnR2cywgZHN2KTsKKyAgICAvLyBBcHBseSByZW5kZXIg
dGFyZ2V0cworICAgIG1SZW5kZXJlci0+Z2V0U3RhdGVNYW5hZ2VyKCktPnNldE9uZVRpbWVSZW5k
ZXJUYXJnZXRzKHJ0dnMsIGRzdik7CiAKLSAgICAgICAgLy8gRHJhdyB0aGUgY2xlYXIgcXVhZAot
ICAgICAgICBkZXZpY2VDb250ZXh0LT5EcmF3KDQsIDApOworICAgIC8vIERyYXcgdGhlIGNsZWFy
IHF1YWQKKyAgICBkZXZpY2VDb250ZXh0LT5EcmF3KDQsIDApOwogCi0gICAgICAgIC8vIENsZWFu
IHVwCi0gICAgICAgIG1SZW5kZXJlci0+bWFya0FsbFN0YXRlRGlydHkoKTsKLSAgICB9CisgICAg
Ly8gQ2xlYW4gdXAKKyAgICBtUmVuZGVyZXItPm1hcmtBbGxTdGF0ZURpcnR5KCk7CiAKLSAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
IH0KIAogSUQzRDExQmxlbmRTdGF0ZSAqQ2xlYXIxMTo6Z2V0QmxlbmRTdGF0ZShjb25zdCBzdGQ6
OnZlY3RvcjxNYXNrZWRSZW5kZXJUYXJnZXQ+JiBydHMpCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0NsZWFyMTEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL0NsZWFyMTEuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9DbGVhcjExLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDcgKzMwLDggQEAKICAgICB+Q2xlYXIxMSgpOwogCiAgICAgLy8gQ2xlYXJz
IHRoZSBmcmFtZWJ1ZmZlciB3aXRoIHRoZSBzdXBwbGllZCBjbGVhciBwYXJhbWV0ZXJzLCBhc3N1
bWVzIHRoYXQgdGhlIGZyYW1lYnVmZmVyIGlzIGN1cnJlbnRseSBhcHBsaWVkLgotICAgIGdsOjpF
cnJvciBjbGVhckZyYW1lYnVmZmVyKGNvbnN0IENsZWFyUGFyYW1ldGVycyAmY2xlYXJQYXJhbXMs
IGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGF0YSAmZmJvRGF0YSk7CisgICAgZ2w6OkVycm9yIGNs
ZWFyRnJhbWVidWZmZXIoY29uc3QgQ2xlYXJQYXJhbWV0ZXJzICZjbGVhclBhcmFtcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmZmJv
RGF0YSk7CiAKICAgcHJpdmF0ZToKICAgICBzdHJ1Y3QgTWFza2VkUmVuZGVyVGFyZ2V0CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L0NvbnRleHQxMS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Db250ZXh0MTEuY3BwCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvQ29udGV4dDExLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI3MCBAQAorLy8KKy8v
IENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKy8vIENvbnRleHQxMToKKy8vICAgRDNEMTEtc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSBhc3Nv
Y2lhdGVkIHdpdGggYSBHTCBDb250ZXh0LgorLy8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9Db250ZXh0MTEuaCIKKworI2luY2x1ZGUgImNvbW1vbi9zdHJpbmdfdXRp
bHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvQ29tcGlsZXJEM0QuaCIKKyNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvU2hhZGVyRDNELmgiCisjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZDNkL1Byb2dyYW1EM0QuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvUmVuZGVyYnVmZmVyRDNELmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
ZDNkL1NhbXBsZXJEM0QuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvVGV4dHVy
ZUQzRC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9CdWZmZXIxMS5o
IgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9GZW5jZTExLmgiCisjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ZyYW1lYnVmZmVyMTEuaCIKKyNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyZXIxMS5oIgorI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdGF0ZU1hbmFnZXIxMS5oIgorI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9UcmFuc2Zvcm1GZWVkYmFjazExLmgiCisjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEFycmF5MTEuaCIKKworbmFt
ZXNwYWNlIHJ4Cit7CisKK0NvbnRleHQxMTo6Q29udGV4dDExKGNvbnN0IGdsOjpDb250ZXh0U3Rh
dGUgJnN0YXRlLCBSZW5kZXJlcjExICpyZW5kZXJlcikKKyAgICA6IENvbnRleHRJbXBsKHN0YXRl
KSwgbVJlbmRlcmVyKHJlbmRlcmVyKQoreworfQorCitDb250ZXh0MTE6On5Db250ZXh0MTEoKQor
eworfQorCitnbDo6RXJyb3IgQ29udGV4dDExOjppbml0aWFsaXplKCkKK3sKKyAgICByZXR1cm4g
Z2w6Ok5vRXJyb3IoKTsKK30KKworQ29tcGlsZXJJbXBsICpDb250ZXh0MTE6OmNyZWF0ZUNvbXBp
bGVyKCkKK3sKKyAgICBpZiAobVJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpLmZl
YXR1cmVMZXZlbCA8PSBEM0RfRkVBVFVSRV9MRVZFTF85XzMpCisgICAgeworICAgICAgICByZXR1
cm4gbmV3IENvbXBpbGVyRDNEKFNIX0hMU0xfNF8wX0ZMOV8zX09VVFBVVCk7CisgICAgfQorICAg
IGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgQ29tcGlsZXJEM0QoU0hfSExTTF80XzFf
T1VUUFVUKTsKKyAgICB9Cit9CisKK1NoYWRlckltcGwgKkNvbnRleHQxMTo6Y3JlYXRlU2hhZGVy
KGNvbnN0IGdsOjpTaGFkZXJTdGF0ZSAmZGF0YSkKK3sKKyAgICByZXR1cm4gbmV3IFNoYWRlckQz
RChkYXRhLCBtUmVuZGVyZXItPmdldFdvcmthcm91bmRzKCkpOworfQorCitQcm9ncmFtSW1wbCAq
Q29udGV4dDExOjpjcmVhdGVQcm9ncmFtKGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJmRhdGEpCit7
CisgICAgcmV0dXJuIG5ldyBQcm9ncmFtRDNEKGRhdGEsIG1SZW5kZXJlcik7Cit9CisKK0ZyYW1l
YnVmZmVySW1wbCAqQ29udGV4dDExOjpjcmVhdGVGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVi
dWZmZXJTdGF0ZSAmZGF0YSkKK3sKKyAgICByZXR1cm4gbmV3IEZyYW1lYnVmZmVyMTEoZGF0YSwg
bVJlbmRlcmVyKTsKK30KKworVGV4dHVyZUltcGwgKkNvbnRleHQxMTo6Y3JlYXRlVGV4dHVyZShj
b25zdCBnbDo6VGV4dHVyZVN0YXRlICZzdGF0ZSkKK3sKKyAgICBzd2l0Y2ggKHN0YXRlLmdldFRh
cmdldCgpKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFXzJEOgorICAgICAgICAgICAg
cmV0dXJuIG5ldyBUZXh0dXJlRDNEXzJEKHN0YXRlLCBtUmVuZGVyZXIpOworICAgICAgICBjYXNl
IEdMX1RFWFRVUkVfQ1VCRV9NQVA6CisgICAgICAgICAgICByZXR1cm4gbmV3IFRleHR1cmVEM0Rf
Q3ViZShzdGF0ZSwgbVJlbmRlcmVyKTsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFXzNEOgorICAg
ICAgICAgICAgcmV0dXJuIG5ldyBUZXh0dXJlRDNEXzNEKHN0YXRlLCBtUmVuZGVyZXIpOworICAg
ICAgICBjYXNlIEdMX1RFWFRVUkVfMkRfQVJSQVk6CisgICAgICAgICAgICByZXR1cm4gbmV3IFRl
eHR1cmVEM0RfMkRBcnJheShzdGF0ZSwgbVJlbmRlcmVyKTsKKyAgICAgICAgY2FzZSBHTF9URVhU
VVJFX0VYVEVSTkFMX09FUzoKKyAgICAgICAgICAgIHJldHVybiBuZXcgVGV4dHVyZUQzRF9FeHRl
cm5hbChzdGF0ZSwgbVJlbmRlcmVyKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlbmRlcmJ1
ZmZlckltcGwgKkNvbnRleHQxMTo6Y3JlYXRlUmVuZGVyYnVmZmVyKCkKK3sKKyAgICByZXR1cm4g
bmV3IFJlbmRlcmJ1ZmZlckQzRChtUmVuZGVyZXIpOworfQorCitCdWZmZXJJbXBsICpDb250ZXh0
MTE6OmNyZWF0ZUJ1ZmZlcigpCit7CisgICAgQnVmZmVyMTEgKmJ1ZmZlciA9IG5ldyBCdWZmZXIx
MShtUmVuZGVyZXIpOworICAgIG1SZW5kZXJlci0+b25CdWZmZXJDcmVhdGUoYnVmZmVyKTsKKyAg
ICByZXR1cm4gYnVmZmVyOworfQorCitWZXJ0ZXhBcnJheUltcGwgKkNvbnRleHQxMTo6Y3JlYXRl
VmVydGV4QXJyYXkoY29uc3QgZ2w6OlZlcnRleEFycmF5U3RhdGUgJmRhdGEpCit7CisgICAgcmV0
dXJuIG5ldyBWZXJ0ZXhBcnJheTExKGRhdGEpOworfQorCitRdWVyeUltcGwgKkNvbnRleHQxMTo6
Y3JlYXRlUXVlcnkoR0xlbnVtIHR5cGUpCit7CisgICAgcmV0dXJuIG5ldyBRdWVyeTExKG1SZW5k
ZXJlciwgdHlwZSk7Cit9CisKK0ZlbmNlTlZJbXBsICpDb250ZXh0MTE6OmNyZWF0ZUZlbmNlTlYo
KQoreworICAgIHJldHVybiBuZXcgRmVuY2VOVjExKG1SZW5kZXJlcik7Cit9CisKK0ZlbmNlU3lu
Y0ltcGwgKkNvbnRleHQxMTo6Y3JlYXRlRmVuY2VTeW5jKCkKK3sKKyAgICByZXR1cm4gbmV3IEZl
bmNlU3luYzExKG1SZW5kZXJlcik7Cit9CisKK1RyYW5zZm9ybUZlZWRiYWNrSW1wbCAqQ29udGV4
dDExOjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjayhjb25zdCBnbDo6VHJhbnNmb3JtRmVlZGJhY2tT
dGF0ZSAmc3RhdGUpCit7CisgICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1GZWVkYmFjazExKHN0YXRl
LCBtUmVuZGVyZXIpOworfQorCitTYW1wbGVySW1wbCAqQ29udGV4dDExOjpjcmVhdGVTYW1wbGVy
KCkKK3sKKyAgICByZXR1cm4gbmV3IFNhbXBsZXJEM0QoKTsKK30KKworc3RkOjp2ZWN0b3I8UGF0
aEltcGwgKj4gQ29udGV4dDExOjpjcmVhdGVQYXRocyhHTHNpemVpKQoreworICAgIHJldHVybiBz
dGQ6OnZlY3RvcjxQYXRoSW1wbCAqPigpOworfQorCitnbDo6RXJyb3IgQ29udGV4dDExOjpmbHVz
aCgpCit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Zmx1c2goKTsKK30KKworZ2w6OkVycm9yIENv
bnRleHQxMTo6ZmluaXNoKCkKK3sKKyAgICByZXR1cm4gbVJlbmRlcmVyLT5maW5pc2goKTsKK30K
KworZ2w6OkVycm9yIENvbnRleHQxMTo6ZHJhd0FycmF5cyhHTGVudW0gbW9kZSwgR0xpbnQgZmly
c3QsIEdMc2l6ZWkgY291bnQpCit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2VuZXJpY0RyYXdB
cnJheXModGhpcywgbW9kZSwgZmlyc3QsIGNvdW50LCAwKTsKK30KKworZ2w6OkVycm9yIENvbnRl
eHQxMTo6ZHJhd0FycmF5c0luc3RhbmNlZChHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZmlyc3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VDb3VudCkKK3sKKyAgICByZXR1
cm4gbVJlbmRlcmVyLT5nZW5lcmljRHJhd0FycmF5cyh0aGlzLCBtb2RlLCBmaXJzdCwgY291bnQs
IGluc3RhbmNlQ291bnQpOworfQorCitnbDo6RXJyb3IgQ29udGV4dDExOjpkcmF3RWxlbWVudHMo
R0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBj
b3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmlu
ZGV4UmFuZ2UpCit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2VuZXJpY0RyYXdFbGVtZW50cyh0
aGlzLCBtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgMCwgaW5kZXhSYW5nZSk7Cit9CisKK2ds
OjpFcnJvciBDb250ZXh0MTE6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHTGVudW0gbW9kZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAq
aW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGluc3RhbmNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkKK3sKKyAgICByZXR1cm4gbVJlbmRl
cmVyLT5nZW5lcmljRHJhd0VsZW1lbnRzKHRoaXMsIG1vZGUsIGNvdW50LCB0eXBlLCBpbmRpY2Vz
LCBpbnN0YW5jZXMsIGluZGV4UmFuZ2UpOworfQorCitnbDo6RXJyb3IgQ29udGV4dDExOjpkcmF3
UmFuZ2VFbGVtZW50cyhHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTHZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkKK3sKKyAgICByZXR1cm4gbVJlbmRl
cmVyLT5nZW5lcmljRHJhd0VsZW1lbnRzKHRoaXMsIG1vZGUsIGNvdW50LCB0eXBlLCBpbmRpY2Vz
LCAwLCBpbmRleFJhbmdlKTsKK30KKworR0xlbnVtIENvbnRleHQxMTo6Z2V0UmVzZXRTdGF0dXMo
KQoreworICAgIHJldHVybiBtUmVuZGVyZXItPmdldFJlc2V0U3RhdHVzKCk7Cit9CisKK3N0ZDo6
c3RyaW5nIENvbnRleHQxMTo6Z2V0VmVuZG9yU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bVJlbmRlcmVyLT5nZXRWZW5kb3JTdHJpbmcoKTsKK30KKworc3RkOjpzdHJpbmcgQ29udGV4dDEx
OjpnZXRSZW5kZXJlckRlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVJlbmRlcmVy
LT5nZXRSZW5kZXJlckRlc2NyaXB0aW9uKCk7Cit9CisKK3ZvaWQgQ29udGV4dDExOjppbnNlcnRF
dmVudE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKQoreworICAgIGF1
dG8gb3B0aW9uYWxTdHJpbmcgPSBhbmdsZTo6V2lkZW5TdHJpbmcoc3RhdGljX2Nhc3Q8c2l6ZV90
PihsZW5ndGgpLCBtYXJrZXIpOworICAgIGlmIChvcHRpb25hbFN0cmluZy52YWxpZCgpKQorICAg
IHsKKyAgICAgICAgbVJlbmRlcmVyLT5nZXRBbm5vdGF0b3IoKS0+c2V0TWFya2VyKG9wdGlvbmFs
U3RyaW5nLnZhbHVlKCkuZGF0YSgpKTsKKyAgICB9Cit9CisKK3ZvaWQgQ29udGV4dDExOjpwdXNo
R3JvdXBNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikKK3sKKyAgICBh
dXRvIG9wdGlvbmFsU3RyaW5nID0gYW5nbGU6OldpZGVuU3RyaW5nKHN0YXRpY19jYXN0PHNpemVf
dD4obGVuZ3RoKSwgbWFya2VyKTsKKyAgICBpZiAob3B0aW9uYWxTdHJpbmcudmFsaWQoKSkKKyAg
ICB7CisgICAgICAgIG1SZW5kZXJlci0+Z2V0QW5ub3RhdG9yKCktPmJlZ2luRXZlbnQob3B0aW9u
YWxTdHJpbmcudmFsdWUoKS5kYXRhKCkpOworICAgIH0KK30KKwordm9pZCBDb250ZXh0MTE6OnBv
cEdyb3VwTWFya2VyKCkKK3sKKyAgICBtUmVuZGVyZXItPmdldEFubm90YXRvcigpLT5lbmRFdmVu
dCgpOworfQorCit2b2lkIENvbnRleHQxMTo6c3luY1N0YXRlKGNvbnN0IGdsOjpTdGF0ZSAmc3Rh
dGUsIGNvbnN0IGdsOjpTdGF0ZTo6RGlydHlCaXRzICZkaXJ0eUJpdHMpCit7CisgICAgbVJlbmRl
cmVyLT5nZXRTdGF0ZU1hbmFnZXIoKS0+c3luY1N0YXRlKHN0YXRlLCBkaXJ0eUJpdHMpOworfQor
CitHTGludCBDb250ZXh0MTE6OmdldEdQVURpc2pvaW50KCkKK3sKKyAgICByZXR1cm4gbVJlbmRl
cmVyLT5nZXRHUFVEaXNqb2ludCgpOworfQorCitHTGludDY0IENvbnRleHQxMTo6Z2V0VGltZXN0
YW1wKCkKK3sKKyAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXRUaW1lc3RhbXAoKTsKK30KKwordm9p
ZCBDb250ZXh0MTE6Om9uTWFrZUN1cnJlbnQoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSkK
K3sKKyAgICBtUmVuZGVyZXItPmdldFN0YXRlTWFuYWdlcigpLT5vbk1ha2VDdXJyZW50KGRhdGEp
OworfQorCitjb25zdCBnbDo6Q2FwcyAmQ29udGV4dDExOjpnZXROYXRpdmVDYXBzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXROYXRpdmVDYXBzKCk7Cit9CisKK2NvbnN0IGds
OjpUZXh0dXJlQ2Fwc01hcCAmQ29udGV4dDExOjpnZXROYXRpdmVUZXh0dXJlQ2FwcygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0TmF0aXZlVGV4dHVyZUNhcHMoKTsKK30KKwor
Y29uc3QgZ2w6OkV4dGVuc2lvbnMgJkNvbnRleHQxMTo6Z2V0TmF0aXZlRXh0ZW5zaW9ucygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0TmF0aXZlRXh0ZW5zaW9ucygpOworfQor
Citjb25zdCBnbDo6TGltaXRhdGlvbnMgJkNvbnRleHQxMTo6Z2V0TmF0aXZlTGltaXRhdGlvbnMo
KSBjb25zdAoreworICAgIHJldHVybiBtUmVuZGVyZXItPmdldE5hdGl2ZUxpbWl0YXRpb25zKCk7
Cit9CisKK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Db250ZXh0MTEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L0NvbnRleHQxMS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQ29udGV4dDExLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMjggQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBDb250ZXh0MTE6CisvLyAgIEQzRDExLXNw
ZWNpZmljIGZ1bmN0aW9uYWxpdHkgYXNzb2NpYXRlZCB3aXRoIGEgR0wgQ29udGV4dC4KKy8vCisK
KyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfRDNEX0QzRDExX0NPTlRFWFQxMV9IXworI2RlZmlu
ZSBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfQ09OVEVYVDExX0hfCisKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9Db250ZXh0SW1wbC5oIgorCituYW1lc3BhY2UgcngKK3sKK2NsYXNz
IFJlbmRlcmVyMTE7CisKK2NsYXNzIENvbnRleHQxMSA6IHB1YmxpYyBDb250ZXh0SW1wbAorewor
ICBwdWJsaWM6CisgICAgQ29udGV4dDExKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJnN0YXRlLCBS
ZW5kZXJlcjExICpyZW5kZXJlcik7CisgICAgfkNvbnRleHQxMSgpIG92ZXJyaWRlOworCisgICAg
Z2w6OkVycm9yIGluaXRpYWxpemUoKSBvdmVycmlkZTsKKworICAgIC8vIFNoYWRlciBjcmVhdGlv
bgorICAgIENvbXBpbGVySW1wbCAqY3JlYXRlQ29tcGlsZXIoKSBvdmVycmlkZTsKKyAgICBTaGFk
ZXJJbXBsICpjcmVhdGVTaGFkZXIoY29uc3QgZ2w6OlNoYWRlclN0YXRlICZkYXRhKSBvdmVycmlk
ZTsKKyAgICBQcm9ncmFtSW1wbCAqY3JlYXRlUHJvZ3JhbShjb25zdCBnbDo6UHJvZ3JhbVN0YXRl
ICZkYXRhKSBvdmVycmlkZTsKKworICAgIC8vIEZyYW1lYnVmZmVyIGNyZWF0aW9uCisgICAgRnJh
bWVidWZmZXJJbXBsICpjcmVhdGVGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0
ZSAmZGF0YSkgb3ZlcnJpZGU7CisKKyAgICAvLyBUZXh0dXJlIGNyZWF0aW9uCisgICAgVGV4dHVy
ZUltcGwgKmNyZWF0ZVRleHR1cmUoY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmc3RhdGUpIG92ZXJy
aWRlOworCisgICAgLy8gUmVuZGVyYnVmZmVyIGNyZWF0aW9uCisgICAgUmVuZGVyYnVmZmVySW1w
bCAqY3JlYXRlUmVuZGVyYnVmZmVyKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBCdWZmZXIgY3JlYXRp
b24KKyAgICBCdWZmZXJJbXBsICpjcmVhdGVCdWZmZXIoKSBvdmVycmlkZTsKKworICAgIC8vIFZl
cnRleCBBcnJheSBjcmVhdGlvbgorICAgIFZlcnRleEFycmF5SW1wbCAqY3JlYXRlVmVydGV4QXJy
YXkoY29uc3QgZ2w6OlZlcnRleEFycmF5U3RhdGUgJmRhdGEpIG92ZXJyaWRlOworCisgICAgLy8g
UXVlcnkgYW5kIEZlbmNlIGNyZWF0aW9uCisgICAgUXVlcnlJbXBsICpjcmVhdGVRdWVyeShHTGVu
dW0gdHlwZSkgb3ZlcnJpZGU7CisgICAgRmVuY2VOVkltcGwgKmNyZWF0ZUZlbmNlTlYoKSBvdmVy
cmlkZTsKKyAgICBGZW5jZVN5bmNJbXBsICpjcmVhdGVGZW5jZVN5bmMoKSBvdmVycmlkZTsKKwor
ICAgIC8vIFRyYW5zZm9ybSBGZWVkYmFjayBjcmVhdGlvbgorICAgIFRyYW5zZm9ybUZlZWRiYWNr
SW1wbCAqY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soCisgICAgICAgIGNvbnN0IGdsOjpUcmFuc2Zv
cm1GZWVkYmFja1N0YXRlICZzdGF0ZSkgb3ZlcnJpZGU7CisKKyAgICAvLyBTYW1wbGVyIG9iamVj
dCBjcmVhdGlvbgorICAgIFNhbXBsZXJJbXBsICpjcmVhdGVTYW1wbGVyKCkgb3ZlcnJpZGU7CisK
KyAgICAvLyBQYXRoIG9iamVjdCBjcmVhdGlvbi4KKyAgICBzdGQ6OnZlY3RvcjxQYXRoSW1wbCAq
PiBjcmVhdGVQYXRocyhHTHNpemVpKSBvdmVycmlkZTsKKworICAgIC8vIEZsdXNoIGFuZCBmaW5p
c2guCisgICAgZ2w6OkVycm9yIGZsdXNoKCkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGZpbmlz
aCgpIG92ZXJyaWRlOworCisgICAgLy8gRHJhd2luZyBtZXRob2RzLgorICAgIGdsOjpFcnJvciBk
cmF3QXJyYXlzKEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCkgb3ZlcnJp
ZGU7CisgICAgZ2w6OkVycm9yIGRyYXdBcnJheXNJbnN0YW5jZWQoR0xlbnVtIG1vZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZmlyc3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlQ291bnQpIG92ZXJyaWRlOworCisgICAgZ2w6
OkVycm9yIGRyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpJbmRleFJhbmdlICZpbmRleFJhbmdl
KSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdMZW51bSBt
b2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5k
ZXhSYW5nZSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGRyYXdSYW5nZUVsZW1lbnRzKEdMZW51
bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBlbmQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpJbmRleFJhbmdlICZpbmRleFJhbmdlKSBvdmVycmlkZTsKKworICAgIC8vIERldmlj
ZSBsb3NzCisgICAgR0xlbnVtIGdldFJlc2V0U3RhdHVzKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBW
ZW5kb3IgYW5kIGRlc2NyaXB0aW9uIHN0cmluZ3MuCisgICAgc3RkOjpzdHJpbmcgZ2V0VmVuZG9y
U3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpzdHJpbmcgZ2V0UmVuZGVyZXJEZXNj
cmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOworCisgICAgLy8gRGVidWcgbWFya2Vycy4KKyAgICB2
b2lkIGluc2VydEV2ZW50TWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIp
IG92ZXJyaWRlOworICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25z
dCBjaGFyICptYXJrZXIpIG92ZXJyaWRlOworICAgIHZvaWQgcG9wR3JvdXBNYXJrZXIoKSBvdmVy
cmlkZTsKKworICAgIC8vIFN0YXRlIHN5bmMgd2l0aCBkaXJ0eSBiaXRzLgorICAgIHZvaWQgc3lu
Y1N0YXRlKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpTdGF0ZTo6RGlydHlCaXRz
ICZkaXJ0eUJpdHMpIG92ZXJyaWRlOworCisgICAgLy8gRGlzam9pbnQgdGltZXIgcXVlcmllcwor
ICAgIEdMaW50IGdldEdQVURpc2pvaW50KCkgb3ZlcnJpZGU7CisgICAgR0xpbnQ2NCBnZXRUaW1l
c3RhbXAoKSBvdmVycmlkZTsKKworICAgIC8vIENvbnRleHQgc3dpdGNoaW5nCisgICAgdm9pZCBv
bk1ha2VDdXJyZW50KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEpIG92ZXJyaWRlOworCisg
ICAgLy8gQ2FwcyBxdWVyaWVzCisgICAgY29uc3QgZ2w6OkNhcHMgJmdldE5hdGl2ZUNhcHMoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBnbDo6VGV4dHVyZUNhcHNNYXAgJmdldE5hdGl2ZVRl
eHR1cmVDYXBzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgZ2w6OkV4dGVuc2lvbnMgJmdl
dE5hdGl2ZUV4dGVuc2lvbnMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBnbDo6TGltaXRh
dGlvbnMgJmdldE5hdGl2ZUxpbWl0YXRpb25zKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBSZW5k
ZXJlcjExICpnZXRSZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1SZW5kZXJlcjsgfQorCisgIHBy
aXZhdGU6CisgICAgUmVuZGVyZXIxMSAqbVJlbmRlcmVyOworfTsKKworfSAgLy8gbmFtZXNwYWNl
IHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfRDNEX0QzRDExX0NPTlRFWFQxMV9I
XwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9EZWJ1Z0Fubm90YXRvcjExLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0RlYnVnQW5ub3RhdG9y
MTEuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0RlYnVnQW5ub3RhdG9yMTEuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02OCw3ICs2OCw3IEBACiBib29sIERlYnVnQW5ub3RhdG9yMTE6OmdldFN0YXR1
cygpCiB7CiAjaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfV0lORE9XU19TVE9SRSkKLSNpZiAoTlRE
RElfVkVSU0lPTiA9PSBOVERESV9XSU4xMCkKKyAgICBzdGF0aWNfYXNzZXJ0KE5URERJX1ZFUlNJ
T04gPj0gTlRERElfV0lOMTAsICJHZXRTdGF0dXMgb25seSB3b3JrcyBvbiBXaW4xMCBhbmQgYWJv
dmUiKTsKICAgICBpbml0aWFsaXplRGV2aWNlKCk7CiAKICAgICBpZiAobVVzZXJEZWZpbmVkQW5u
b3RhdGlvbiAhPSBudWxscHRyKQpAQCAtNzcsMzkgKzc3LDcgQEAKICAgICB9CiAKICAgICByZXR1
cm4gdHJ1ZTsgIC8vIERlZmF1bHQgaWYgaW5pdGlhbGl6ZURldmljZSgpIGZhaWxlZAotI2VsaWYg
ZGVmaW5lZChfREVCVUcpCi0gICAgc3RhdGljIGJvb2wgdW5kZXJDYXB0dXJlID0gdHJ1ZTsKLQot
ICAgIC8vIElEM0RVc2VyRGVmaW5lZEFubm90YXRpb246OkdldFN0YXR1cyBkb2Vzbid0IHdvcmsg
d2l0aCB0aGUgR3JhcGhpY3MgRGlhZ25vc3RpY3MgdG9vbHMgaW4KLSAgICAvLyBXaW5kb3dzIDgu
MS9WaXN1YWwgU3R1ZGlvIDIwMTMuIFdlIGNhbiB1c2UgSURYR3JhcGhpY3NBbmFseXNpcywgdGhv
dWdoLgotICAgIC8vIFRoZSBjYWxsIHRvIEdldERlYnVnSW50ZXJmYWNlMSBvbmx5IHN1Y2NlZWRz
IGlmIHRoZSBhcHAgaXMgdW5kZXIgY2FwdHVyZS4KLSAgICAvLyBUaGlzIHNob3VsZCBvbmx5IGJl
IGNhbGxlZCBpbiBERUJVRyBtb2RlLgotICAgIC8vIElmIGFuIGFwcCBsaW5rcyBhZ2FpbnN0IERY
R0lHZXREZWJ1Z0ludGVyZmFjZTEgaW4gcmVsZWFzZSBtb2RlIHRoZW4gaXQgd2lsbCBmYWlsIFdp
bmRvd3MKLSAgICAvLyBTdG9yZSBpbmdlc3Rpb24gY2hlY2tzLgotCi0gICAgLy8gQ2FjaGUgdGhl
IHJlc3VsdCB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBjYWxscyB0byBEWEdJR2V0RGVidWdJbnRl
cmZhY2UxCi0gICAgc3RhdGljIGJvb2wgdHJpZWRJRFhHcmFwaGljc0FuYWx5c2lzID0gZmFsc2U7
Ci0KLSAgICBpZiAoIXRyaWVkSURYR3JhcGhpY3NBbmFseXNpcykKLSAgICB7Ci0gICAgICAgIElE
WEdyYXBoaWNzQW5hbHlzaXMgKmdyYXBoaWNzQW5hbHlzaXMgPSBudWxscHRyOwotCi0gICAgICAg
IEhSRVNVTFQgcmVzdWx0ID0gRFhHSUdldERlYnVnSW50ZXJmYWNlMSgwLCBJSURfUFBWX0FSR1Mo
JmdyYXBoaWNzQW5hbHlzaXMpKTsKLSAgICAgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQpKQotICAg
ICAgICB7Ci0gICAgICAgICAgICB1bmRlckNhcHR1cmUgPSAoZ3JhcGhpY3NBbmFseXNpcyAhPSBu
dWxscHRyKTsKLSAgICAgICAgfQotCi0gICAgICAgIFNhZmVSZWxlYXNlKGdyYXBoaWNzQW5hbHlz
aXMpOwotICAgICAgICB0cmllZElEWEdyYXBoaWNzQW5hbHlzaXMgPSB0cnVlOwotICAgIH0KLQot
ICAgIHJldHVybiB1bmRlckNhcHR1cmU7CiAjZWxzZQotICAgIC8vIFdlIGNhbid0IGRldGVjdCBH
ZXRTdGF0dXMoKSBvbiByZWxlYXNlIFdpblJUIDguMSBidWlsZHMsIHNvIGFsd2F5cyByZXR1cm4g
dHJ1ZS4KLSAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZiAgLy8gKE5URERJX1ZFUlNJT04gPT0gTlRE
RElfV0lOMTApIG9yIF9ERUJVRwotI2Vsc2UKICAgICAvLyBXZSBjYW4ndCBkZXRlY3QgR2V0U3Rh
dHVzKCkgb24gZGVza3RvcCBBTkdMRSBidWlsZHMgc28gYWx3YXlzIHJldHVybiB0cnVlLgogICAg
IHJldHVybiB0cnVlOwogI2VuZGlmICAvLyBBTkdMRV9FTkFCTEVfV0lORE9XU19TVE9SRQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9GZW5jZTExLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ZlbmNlMTEuY3BwCShyZXZpc2lvbiAyMDgwMjEp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL0ZlbmNlMTEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw2ICsxNCw4IEBACiBuYW1lc3Bh
Y2UgcngKIHsKIAorc3RhdGljIGNvbnN0IGludCBrRGV2aWNlTG9zdENoZWNrUGVyaW9kID0gNjQ7
CisKIC8vCiAvLyBUZW1wbGF0ZSBoZWxwZXJzIGZvciBzZXQgYW5kIHRlc3Qgb3BlcmF0aW9ucy4K
IC8vCkBAIC01MCwxMCArNTIsNiBAQAogICAgIHsKICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGdldCBxdWVyeSBkYXRhLCByZXN1bHQ6IDB4JVgu
IiwgcmVzdWx0KTsKICAgICB9Ci0gICAgZWxzZSBpZiAoZmVuY2UtPm1SZW5kZXJlci0+aXNEZXZp
Y2VMb3N0KCkpCi0gICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1P
UlksICJEZXZpY2Ugd2FzIGxvc3Qgd2hpbGUgcXVlcnlpbmcgcmVzdWx0IG9mIGFuIGV2ZW50IHF1
ZXJ5LiIpOwotICAgIH0KIAogICAgIEFTU0VSVChyZXN1bHQgPT0gU19PSyB8fCByZXN1bHQgPT0g
U19GQUxTRSk7CiAgICAgKm91dEZpbmlzaGVkID0gKChyZXN1bHQgPT0gU19PSykgPyBHTF9UUlVF
IDogR0xfRkFMU0UpOwpAQCAtODksMTggKzg3LDIzIEBACiBnbDo6RXJyb3IgRmVuY2VOVjExOjpm
aW5pc2goKQogewogICAgIEdMYm9vbGVhbiBmaW5pc2hlZCA9IEdMX0ZBTFNFOworCisgICAgaW50
IGxvb3BDb3VudCA9IDA7CiAgICAgd2hpbGUgKGZpbmlzaGVkICE9IEdMX1RSVUUpCiAgICAgewot
ICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBGZW5jZVRlc3RIZWxwZXIodGhpcywgdHJ1ZSwgJmZp
bmlzaGVkKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICAgICAgbG9vcENvdW50
Kys7CisgICAgICAgIEFOR0xFX1RSWShGZW5jZVRlc3RIZWxwZXIodGhpcywgdHJ1ZSwgJmZpbmlz
aGVkKSk7CisKKyAgICAgICAgaWYgKGxvb3BDb3VudCAlIGtEZXZpY2VMb3N0Q2hlY2tQZXJpb2Qg
PT0gMCAmJiBtUmVuZGVyZXItPnRlc3REZXZpY2VMb3N0KCkpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09G
X01FTU9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRldmljZSB3YXMgbG9zdCB3
aGlsZSBxdWVyeWluZyByZXN1bHQgb2YgYW4gZXZlbnQgcXVlcnkuIik7CiAgICAgICAgIH0KIAog
ICAgICAgICBTY2hlZHVsZVlpZWxkKCk7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIC8vCkBAIC0xNzYs
OCArMTc5LDEwIEBACiAgICAgTE9OR0xPTkcgdGltZW91dEluU2Vjb25kcyA9IHN0YXRpY19jYXN0
PExPTkdMT05HPih0aW1lb3V0KSAqIHN0YXRpY19jYXN0PExPTkdMT05HPigxMDAwMDAwbGwpOwog
ICAgIExPTkdMT05HIGVuZENvdW50ZXIgPSBjdXJyZW50Q291bnRlci5RdWFkUGFydCArIG1Db3Vu
dGVyRnJlcXVlbmN5ICogdGltZW91dEluU2Vjb25kczsKIAorICAgIGludCBsb29wQ291bnQgPSAw
OwogICAgIHdoaWxlIChjdXJyZW50Q291bnRlci5RdWFkUGFydCA8IGVuZENvdW50ZXIgJiYgIXJl
c3VsdCkKICAgICB7CisgICAgICAgIGxvb3BDb3VudCsrOwogICAgICAgICBTY2hlZHVsZVlpZWxk
KCk7CiAgICAgICAgIHN1Y2Nlc3MgPSBRdWVyeVBlcmZvcm1hbmNlQ291bnRlcigmY3VycmVudENv
dW50ZXIpOwogICAgICAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKHN1Y2Nlc3MpOwpAQCAt
MTg5LDYgKzE5NCwxMyBAQAogICAgICAgICAgICAgKm91dFJlc3VsdCA9IEdMX1dBSVRfRkFJTEVE
OwogICAgICAgICAgICAgcmV0dXJuIGVycm9yOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKChs
b29wQ291bnQgJSBrRGV2aWNlTG9zdENoZWNrUGVyaW9kKSA9PSAwICYmIG1SZW5kZXJlci0+dGVz
dERldmljZUxvc3QoKSkKKyAgICAgICAgeworICAgICAgICAgICAgKm91dFJlc3VsdCA9IEdMX1dB
SVRfRkFJTEVEOworICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGV2aWNlIHdhcyBsb3N0IHdoaWxlIHF1
ZXJ5aW5nIHJlc3VsdCBvZiBhbiBldmVudCBxdWVyeS4iKTsKKyAgICAgICAgfQogICAgIH0KIAog
ICAgIGlmIChjdXJyZW50Q291bnRlci5RdWFkUGFydCA+PSBlbmRDb3VudGVyKQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9GcmFt
ZWJ1ZmZlcjExLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ZyYW1lYnVmZmVyMTEuY3BwCShyZXZpc2lvbiAy
MDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL0ZyYW1lYnVmZmVyMTEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwxMiArMjIs
MTQgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1lbnQuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9UZXh0dXJlLmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKwogbmFt
ZXNwYWNlIHJ4CiB7CiAKIG5hbWVzcGFjZQogewotZ2w6OkVycm9yIEludmFsaWRhdGVBdHRhY2ht
ZW50U3dpenpsZXMoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqYXR0YWNobWVudCkK
K2dsOjpFcnJvciBNYXJrQXR0YWNobWVudHNEaXJ0eShjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRh
Y2htZW50ICphdHRhY2htZW50KQogewogICAgIGlmIChhdHRhY2htZW50ICYmIGF0dGFjaG1lbnQt
PnR5cGUoKSA9PSBHTF9URVhUVVJFKQogICAgIHsKQEAgLTM2LDExICszOCw3IEBACiAgICAgICAg
IFRleHR1cmVEM0QgKnRleHR1cmVEM0QgPSBHZXRJbXBsQXM8VGV4dHVyZUQzRD4odGV4dHVyZSk7
CiAKICAgICAgICAgVGV4dHVyZVN0b3JhZ2UgKnRleFN0b3JhZ2UgPSBudWxscHRyOwotICAgICAg
ICBnbDo6RXJyb3IgZXJyb3IgPSB0ZXh0dXJlRDNELT5nZXROYXRpdmVUZXh0dXJlKCZ0ZXhTdG9y
YWdlKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9CisgICAgICAgIEFOR0xFX1RSWSh0ZXh0dXJlRDNE
LT5nZXROYXRpdmVUZXh0dXJlKCZ0ZXhTdG9yYWdlKSk7CiAKICAgICAgICAgaWYgKHRleFN0b3Jh
Z2UpCiAgICAgICAgIHsKQEAgLTQ3LDE2ICs0NSwxNiBAQAogICAgICAgICAgICAgVGV4dHVyZVN0
b3JhZ2UxMSAqdGV4U3RvcmFnZTExID0gR2V0QXM8VGV4dHVyZVN0b3JhZ2UxMT4odGV4U3RvcmFn
ZSk7CiAgICAgICAgICAgICBBU1NFUlQodGV4U3RvcmFnZTExKTsKIAotICAgICAgICAgICAgdGV4
U3RvcmFnZTExLT5pbnZhbGlkYXRlU3dpenpsZUNhY2hlTGV2ZWwoYXR0YWNobWVudC0+bWlwTGV2
ZWwoKSk7CisgICAgICAgICAgICB0ZXhTdG9yYWdlMTEtPm1hcmtMZXZlbERpcnR5KGF0dGFjaG1l
bnQtPm1pcExldmVsKCkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIHZvaWQgVXBk
YXRlQ2FjaGVkUmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmF0
dGFjaG1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJUYXJnZXQxMSAq
JmNhY2hlZFJlbmRlclRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IE5vdGlmaWNhdGlvbkNhbGxiYWNrICZjYWxsYmFja0Z1bmMpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDaGFubmVsQmluZGluZyAqY2hhbm5lbEJpbmRpbmcpCiB7CiAgICAgUmVuZGVy
VGFyZ2V0MTEgKm5ld1JlbmRlclRhcmdldCA9IG51bGxwdHI7CiAgICAgaWYgKGF0dGFjaG1lbnQp
CkBAIC02NSw5MSArNjMsNTMgQEAKICAgICB9CiAgICAgaWYgKG5ld1JlbmRlclRhcmdldCAhPSBj
YWNoZWRSZW5kZXJUYXJnZXQpCiAgICAgewotICAgICAgICBpZiAoY2FjaGVkUmVuZGVyVGFyZ2V0
KQotICAgICAgICB7Ci0gICAgICAgICAgICBjYWNoZWRSZW5kZXJUYXJnZXQtPnJlbW92ZURpcnR5
Q2FsbGJhY2soJmNhbGxiYWNrRnVuYyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobmV3UmVu
ZGVyVGFyZ2V0KQotICAgICAgICB7Ci0gICAgICAgICAgICBuZXdSZW5kZXJUYXJnZXQtPmFkZERp
cnR5Q2FsbGJhY2soJmNhbGxiYWNrRnVuYyk7Ci0gICAgICAgIH0KLQorICAgICAgICBhdXRvIGNo
YW5uZWwgPSAobmV3UmVuZGVyVGFyZ2V0ID8gbmV3UmVuZGVyVGFyZ2V0LT5nZXRCcm9hZGNhc3RD
aGFubmVsKCkgOiBudWxscHRyKTsKKyAgICAgICAgY2hhbm5lbEJpbmRpbmctPmJpbmQoY2hhbm5l
bCk7CiAgICAgICAgIGNhY2hlZFJlbmRlclRhcmdldCA9IG5ld1JlbmRlclRhcmdldDsKICAgICB9
CiB9CiB9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKLUZyYW1lYnVmZmVyMTE6OkZyYW1lYnVm
ZmVyMTEoY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEYXRhICZkYXRhLCBSZW5kZXJlcjExICpyZW5k
ZXJlcikKLSAgICA6IEZyYW1lYnVmZmVyRDNEKGRhdGEsIHJlbmRlcmVyKSwgbVJlbmRlcmVyKHJl
bmRlcmVyKSwgbUNhY2hlZERlcHRoU3RlbmNpbFJlbmRlclRhcmdldChudWxscHRyKQorRnJhbWVi
dWZmZXIxMTo6RnJhbWVidWZmZXIxMShjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmZGF0YSwg
UmVuZGVyZXIxMSAqcmVuZGVyZXIpCisgICAgOiBGcmFtZWJ1ZmZlckQzRChkYXRhLCByZW5kZXJl
ciksCisgICAgICBtUmVuZGVyZXIocmVuZGVyZXIpLAorICAgICAgbUNhY2hlZERlcHRoU3RlbmNp
bFJlbmRlclRhcmdldChudWxscHRyKSwKKyAgICAgIG1EZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXRE
aXJ0eSh0aGlzLCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRT
KQogewogICAgIEFTU0VSVChtUmVuZGVyZXIgIT0gbnVsbHB0cik7CiAgICAgbUNhY2hlZENvbG9y
UmVuZGVyVGFyZ2V0cy5maWxsKG51bGxwdHIpOwogICAgIGZvciAoc2l6ZV90IGNvbG9ySW5kZXgg
PSAwOyBjb2xvckluZGV4IDwgZGF0YS5nZXRDb2xvckF0dGFjaG1lbnRzKCkuc2l6ZSgpOyArK2Nv
bG9ySW5kZXgpCiAgICAgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0gW3RoaXMsIGNvbG9ySW5k
ZXhdKCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy0+bWFya0NvbG9yUmVuZGVyVGFyZ2V0
RGlydHkoY29sb3JJbmRleCk7Ci0gICAgICAgIH07Ci0gICAgICAgIG1Db2xvclJlbmRlclRhcmdl
dHNEaXJ0eS5wdXNoX2JhY2soY2FsbGJhY2spOworICAgICAgICBtQ29sb3JSZW5kZXJUYXJnZXRz
RGlydHkucHVzaF9iYWNrKAorICAgICAgICAgICAgQ2hhbm5lbEJpbmRpbmcodGhpcywgc3RhdGlj
X2Nhc3Q8U2lnbmFsVG9rZW4+KGNvbG9ySW5kZXgpKSk7CiAgICAgfQotICAgIG1EZXB0aFN0ZW5j
aWxSZW5kZXJUYXJnZXREaXJ0eSA9IFt0aGlzXSgpCi0gICAgewotICAgICAgICB0aGlzLT5tYXJr
RGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0RGlydHkoKTsKLSAgICB9OwogfQogCiBGcmFtZWJ1ZmZl
cjExOjp+RnJhbWVidWZmZXIxMSgpCiB7Ci0gICAgZm9yIChzaXplX3QgY29sb3JJbmRleCA9IDA7
IGNvbG9ySW5kZXggPCBtQ2FjaGVkQ29sb3JSZW5kZXJUYXJnZXRzLnNpemUoKTsgKytjb2xvcklu
ZGV4KQotICAgIHsKLSAgICAgICAgYXV0byAqY29sb3JSZW5kZXJUYXJnZXQgPSBtQ2FjaGVkQ29s
b3JSZW5kZXJUYXJnZXRzW2NvbG9ySW5kZXhdOwotICAgICAgICBpZiAoY29sb3JSZW5kZXJUYXJn
ZXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbG9yUmVuZGVyVGFyZ2V0LT5yZW1vdmVEaXJ0
eUNhbGxiYWNrKCZtQ29sb3JSZW5kZXJUYXJnZXRzRGlydHlbY29sb3JJbmRleF0pOwotICAgICAg
ICB9Ci0gICAgfQotICAgIGlmIChtQ2FjaGVkRGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0KQotICAg
IHsKLSAgICAgICAgbUNhY2hlZERlcHRoU3RlbmNpbFJlbmRlclRhcmdldC0+cmVtb3ZlRGlydHlD
YWxsYmFjaygmbURlcHRoU3RlbmNpbFJlbmRlclRhcmdldERpcnR5KTsKLSAgICB9CiB9CiAKLWds
OjpFcnJvciBGcmFtZWJ1ZmZlcjExOjppbnZhbGlkYXRlU3dpenpsZXMoKSBjb25zdAorZ2w6OkVy
cm9yIEZyYW1lYnVmZmVyMTE6Om1hcmtBdHRhY2htZW50c0RpcnR5KCkgY29uc3QKIHsKLSAgICBm
b3IgKGNvbnN0IGF1dG8gJmNvbG9yQXR0YWNobWVudCA6IG1EYXRhLmdldENvbG9yQXR0YWNobWVu
dHMoKSkKKyAgICBmb3IgKGNvbnN0IGF1dG8gJmNvbG9yQXR0YWNobWVudCA6IG1TdGF0ZS5nZXRD
b2xvckF0dGFjaG1lbnRzKCkpCiAgICAgewogICAgICAgICBpZiAoY29sb3JBdHRhY2htZW50Lmlz
QXR0YWNoZWQoKSkKICAgICAgICAgewotICAgICAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gSW52
YWxpZGF0ZUF0dGFjaG1lbnRTd2l6emxlcygmY29sb3JBdHRhY2htZW50KTsKLSAgICAgICAgICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIGVycm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgQU5HTEVfVFJZKE1hcmtBdHRh
Y2htZW50c0RpcnR5KCZjb2xvckF0dGFjaG1lbnQpKTsKICAgICAgICAgfQogICAgIH0KIAotICAg
IGdsOjpFcnJvciBlcnJvciA9IEludmFsaWRhdGVBdHRhY2htZW50U3dpenpsZXMobURhdGEuZ2V0
RGVwdGhBdHRhY2htZW50KCkpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAg
ICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShNYXJrQXR0YWNobWVudHNE
aXJ0eShtU3RhdGUuZ2V0RGVwdGhBdHRhY2htZW50KCkpKTsKKyAgICBBTkdMRV9UUlkoTWFya0F0
dGFjaG1lbnRzRGlydHkobVN0YXRlLmdldFN0ZW5jaWxBdHRhY2htZW50KCkpKTsKIAotICAgIGVy
cm9yID0gSW52YWxpZGF0ZUF0dGFjaG1lbnRTd2l6emxlcyhtRGF0YS5nZXRTdGVuY2lsQXR0YWNo
bWVudCgpKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGVycm9yOwotICAgIH0KLQotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAg
IHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgRnJhbWVidWZmZXIxMTo6Y2xl
YXIoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIGNvbnN0IENsZWFyUGFyYW1ldGVycyAmY2xlYXJQYXJh
bXMpCitnbDo6RXJyb3IgRnJhbWVidWZmZXIxMTo6Y2xlYXJJbXBsKENvbnRleHRJbXBsICpjb250
ZXh0LCBjb25zdCBDbGVhclBhcmFtZXRlcnMgJmNsZWFyUGFyYW1zKQogewogICAgIENsZWFyMTEg
KmNsZWFyZXIgPSBtUmVuZGVyZXItPmdldENsZWFyZXIoKTsKLSAgICBnbDo6RXJyb3IgZXJyb3Io
R0xfTk9fRVJST1IpOwogCi0gICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqY29s
b3JBdHRhY2htZW50ID0gbURhdGEuZ2V0Rmlyc3RDb2xvckF0dGFjaG1lbnQoKTsKKyAgICBjb25z
dCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICpjb2xvckF0dGFjaG1lbnQgPSBtU3RhdGUuZ2V0
Rmlyc3RDb2xvckF0dGFjaG1lbnQoKTsKICAgICBpZiAoY2xlYXJQYXJhbXMuc2Npc3NvckVuYWJs
ZWQgPT0gdHJ1ZSAmJiBjb2xvckF0dGFjaG1lbnQgIT0gbnVsbHB0ciAmJgogICAgICAgICBVc2VQ
cmVzZW50UGF0aEZhc3QobVJlbmRlcmVyLCBjb2xvckF0dGFjaG1lbnQpKQogICAgIHsKQEAgLTE2
MSwyNSArMTIxLDE2IEBACiAgICAgICAgIHByZXNlbnRQYXRoRmFzdENsZWFyUGFyYW1zLnNjaXNz
b3IueSAgICAgICA9IGZyYW1lYnVmZmVyU2l6ZS5oZWlnaHQgLQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZW50UGF0aEZhc3RDbGVhclBhcmFtcy5z
Y2lzc29yLnkgLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcmVzZW50UGF0aEZhc3RDbGVhclBhcmFtcy5zY2lzc29yLmhlaWdodDsKLSAgICAgICAgZXJy
b3IgPSBjbGVhcmVyLT5jbGVhckZyYW1lYnVmZmVyKHByZXNlbnRQYXRoRmFzdENsZWFyUGFyYW1z
LCBtRGF0YSk7CisgICAgICAgIEFOR0xFX1RSWShjbGVhcmVyLT5jbGVhckZyYW1lYnVmZmVyKHBy
ZXNlbnRQYXRoRmFzdENsZWFyUGFyYW1zLCBtU3RhdGUpKTsKICAgICB9CiAgICAgZWxzZQogICAg
IHsKLSAgICAgICAgZXJyb3IgPSBjbGVhcmVyLT5jbGVhckZyYW1lYnVmZmVyKGNsZWFyUGFyYW1z
LCBtRGF0YSk7CisgICAgICAgIEFOR0xFX1RSWShjbGVhcmVyLT5jbGVhckZyYW1lYnVmZmVyKGNs
ZWFyUGFyYW1zLCBtU3RhdGUpKTsKICAgICB9CiAKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkobWFya0F0
dGFjaG1lbnRzRGlydHkoKSk7CiAKLSAgICBlcnJvciA9IGludmFsaWRhdGVTd2l6emxlcygpOwot
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0g
ICAgfQotCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGds
OjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBGcmFtZWJ1ZmZlcjExOjppbnZhbGlkYXRlKHNp
emVfdCBjb3VudCwgY29uc3QgR0xlbnVtICphdHRhY2htZW50cykKQEAgLTE5OSw3ICsxNTAsNyBA
QAogICAgIGlmICghZGV2aWNlQ29udGV4dDEpCiAgICAgewogICAgICAgICAvLyBEaXNjYXJkVmll
dygpIGlzIG9ubHkgc3VwcG9ydGVkIG9uIElEM0QxMURldmljZUNvbnRleHQxCi0gICAgICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3Io
KTsKICAgICB9CiAKICAgICBib29sIGZvdW5kRGVwdGggPSBmYWxzZTsKQEAgLTIyOCwzNyArMTc5
LDEwIEBACiAgICAgICAgICAgICAgICAgQVNTRVJUKChhdHRhY2htZW50c1tpXSA+PSBHTF9DT0xP
Ul9BVFRBQ0hNRU5UMCAmJiBhdHRhY2htZW50c1tpXSA8PSBHTF9DT0xPUl9BVFRBQ0hNRU5UMTUp
IHx8CiAgICAgICAgICAgICAgICAgICAgICAgIChhdHRhY2htZW50c1tpXSA9PSBHTF9DT0xPUikp
OwogCi0gICAgICAgICAgICAgICAgUmVuZGVyVGFyZ2V0MTEgKnJlbmRlclRhcmdldCA9IG51bGxw
dHI7Ci0gICAgICAgICAgICAgICAgSUQzRDExVmlldyAqY29sb3JWaWV3ID0gbnVsbHB0cjsKLSAg
ICAgICAgICAgICAgICBnbDo6RXJyb3IgZXJyb3IoR0xfTk9fRVJST1IpOwotICAgICAgICAgICAg
ICAgIHNpemVfdCBjb2xvckF0dGFjaG1lbnRJRCA9IDA7Ci0KLSAgICAgICAgICAgICAgICBpZiAo
YXR0YWNobWVudHNbaV0gPT0gR0xfQ09MT1IpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICBjb2xvckF0dGFjaG1lbnRJRCA9IDA7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IGNvbG9yQXR0YWNobWVudElEID0gYXR0YWNobWVudHNbaV0gLSBHTF9DT0xPUl9BVFRBQ0hNRU5U
MDsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAobURhdGEuZ2V0Q29s
b3JBdHRhY2htZW50KHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oY29sb3JBdHRhY2htZW50SUQp
KSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGVycm9yID0gbURhdGEu
Z2V0Q29sb3JBdHRhY2htZW50KHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oY29sb3JBdHRhY2ht
ZW50SUQpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmdldFJlbmRlclRhcmdl
dCgmcmVuZGVyVGFyZ2V0KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3Io
KSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGVycm9yOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgY29s
b3JWaWV3ID0gcmVuZGVyVGFyZ2V0LT5nZXRSZW5kZXJUYXJnZXRWaWV3KCk7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgaWYgKGNvbG9yVmlldyAhPSBudWxscHRyKQotICAgICAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDb250ZXh0MS0+RGlzY2FyZFZpZXco
Y29sb3JWaWV3KTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQor
ICAgICAgICAgICAgICAgIHNpemVfdCBjb2xvckluZGV4ID0KKyAgICAgICAgICAgICAgICAgICAg
KGF0dGFjaG1lbnRzW2ldID09IEdMX0NPTE9SID8gMHUgOiAoYXR0YWNobWVudHNbaV0gLSBHTF9D
T0xPUl9BVFRBQ0hNRU5UMCkpOworICAgICAgICAgICAgICAgIGF1dG8gY29sb3JBdHRhY2htZW50
ID0gbVN0YXRlLmdldENvbG9yQXR0YWNobWVudChjb2xvckluZGV4KTsKKyAgICAgICAgICAgICAg
ICBBTkdMRV9UUlkoaW52YWxpZGF0ZUF0dGFjaG1lbnQoY29sb3JBdHRhY2htZW50KSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTI3NSw3ICsx
OTksNyBAQAogICAgICAgICBkaXNjYXJkRGVwdGggPSBmb3VuZERlcHRoOwogCiAgICAgICAgIC8v
IERvbid0IGJvdGhlciBkaXNjYXJkaW5nIHRoZSBzdGVuY2lsIGJ1ZmZlciBpZiB0aGUgZGVwdGgg
YnVmZmVyIHdpbGwgYWxyZWFkeSBkbyBpdAotICAgICAgICBkaXNjYXJkU3RlbmNpbCA9IGZvdW5k
U3RlbmNpbCAmJiAoIWRpc2NhcmREZXB0aCB8fCBtRGF0YS5nZXREZXB0aEF0dGFjaG1lbnQoKSA9
PSBudWxscHRyKTsKKyAgICAgICAgZGlzY2FyZFN0ZW5jaWwgPSBmb3VuZFN0ZW5jaWwgJiYgKCFk
aXNjYXJkRGVwdGggfHwgbVN0YXRlLmdldERlcHRoQXR0YWNobWVudCgpID09IG51bGxwdHIpOwog
ICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtMjgzLDU5ICsyMDcsNDggQEAKICAgICAgICAgLy8g
YXR0YWNobWVudHMgbGlzdCBkb2VzIG5vdCBpbmNsdWRlIERFUFRIX1NURU5DSUxfQVRUQUNITUVO
VCBvciBib3RoIERFUFRIX0FUVEFDSE1FTlQgYW5kCiAgICAgICAgIC8vIFNURU5DSUxfQVRUQUNI
TUVOVCwgdGhlbiBvbmx5IHRoZSBzcGVjaWZpZWQgcG9ydGlvbiBvZiBldmVyeSBwaXhlbCBpbiB0
aGUgc3VicmVnaW9uIG9mIHBpeGVscwogICAgICAgICAvLyBvZiB0aGUgREVQVEhfU1RFTkNJTCBi
dWZmZXIgbWF5IGJlIGludmFsaWRhdGVkLCBhbmQgdGhlIG90aGVyIHBvcnRpb24gbXVzdCBiZSBw
cmVzZXJ2ZWQuCi0gICAgICAgIGRpc2NhcmREZXB0aCA9IChmb3VuZERlcHRoICYmIGZvdW5kU3Rl
bmNpbCkgfHwgKGZvdW5kRGVwdGggJiYgKG1EYXRhLmdldFN0ZW5jaWxBdHRhY2htZW50KCkgPT0g
bnVsbHB0cikpOwotICAgICAgICBkaXNjYXJkU3RlbmNpbCA9IChmb3VuZFN0ZW5jaWwgJiYgKG1E
YXRhLmdldERlcHRoQXR0YWNobWVudCgpID09IG51bGxwdHIpKTsKKyAgICAgICAgZGlzY2FyZERl
cHRoID0gKGZvdW5kRGVwdGggJiYgZm91bmRTdGVuY2lsKSB8fAorICAgICAgICAgICAgICAgICAg
ICAgICAoZm91bmREZXB0aCAmJiAobVN0YXRlLmdldFN0ZW5jaWxBdHRhY2htZW50KCkgPT0gbnVs
bHB0cikpOworICAgICAgICBkaXNjYXJkU3RlbmNpbCA9IChmb3VuZFN0ZW5jaWwgJiYgKG1TdGF0
ZS5nZXREZXB0aEF0dGFjaG1lbnQoKSA9PSBudWxscHRyKSk7CiAgICAgfQogCi0gICAgaWYgKGRp
c2NhcmREZXB0aCAmJiBtRGF0YS5nZXREZXB0aEF0dGFjaG1lbnQoKSkKKyAgICBpZiAoZGlzY2Fy
ZERlcHRoICYmIG1TdGF0ZS5nZXREZXB0aEF0dGFjaG1lbnQoKSkKICAgICB7Ci0gICAgICAgIFJl
bmRlclRhcmdldDExICpyZW5kZXJUYXJnZXQgPSBudWxscHRyOwotICAgICAgICBJRDNEMTFWaWV3
ICpkZXB0aFZpZXcgPSBudWxscHRyOwotICAgICAgICBnbDo6RXJyb3IgZXJyb3IoR0xfTk9fRVJS
T1IpOwotCi0gICAgICAgIGVycm9yID0gbURhdGEuZ2V0RGVwdGhBdHRhY2htZW50KCktPmdldFJl
bmRlclRhcmdldCgmcmVuZGVyVGFyZ2V0KTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9Ci0KLSAgICAg
ICAgZGVwdGhWaWV3ID0gcmVuZGVyVGFyZ2V0LT5nZXREZXB0aFN0ZW5jaWxWaWV3KCk7Ci0KLSAg
ICAgICAgaWYgKGRlcHRoVmlldyAhPSBudWxscHRyKQotICAgICAgICB7Ci0gICAgICAgICAgICBk
ZXZpY2VDb250ZXh0MS0+RGlzY2FyZFZpZXcoZGVwdGhWaWV3KTsKLSAgICAgICAgfQorICAgICAg
ICBBTkdMRV9UUlkoaW52YWxpZGF0ZUF0dGFjaG1lbnQobVN0YXRlLmdldERlcHRoQXR0YWNobWVu
dCgpKSk7CiAgICAgfQogCi0gICAgaWYgKGRpc2NhcmRTdGVuY2lsICYmIG1EYXRhLmdldFN0ZW5j
aWxBdHRhY2htZW50KCkpCisgICAgaWYgKGRpc2NhcmRTdGVuY2lsICYmIG1TdGF0ZS5nZXRTdGVu
Y2lsQXR0YWNobWVudCgpKQogICAgIHsKLSAgICAgICAgUmVuZGVyVGFyZ2V0MTEgKnJlbmRlclRh
cmdldCA9IG51bGxwdHI7Ci0gICAgICAgIElEM0QxMVZpZXcgKnN0ZW5jaWxWaWV3ID0gbnVsbHB0
cjsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yKEdMX05PX0VSUk9SKTsKLQotICAgICAgICBlcnJv
ciA9IG1EYXRhLmdldFN0ZW5jaWxBdHRhY2htZW50KCktPmdldFJlbmRlclRhcmdldCgmcmVuZGVy
VGFyZ2V0KTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RlbmNpbFZpZXcgPSBy
ZW5kZXJUYXJnZXQtPmdldERlcHRoU3RlbmNpbFZpZXcoKTsKLQotICAgICAgICBpZiAoc3RlbmNp
bFZpZXcgIT0gbnVsbHB0cikKLSAgICAgICAgewotICAgICAgICAgICAgZGV2aWNlQ29udGV4dDEt
PkRpc2NhcmRWaWV3KHN0ZW5jaWxWaWV3KTsKLSAgICAgICAgfQorICAgICAgICBBTkdMRV9UUlko
aW52YWxpZGF0ZUF0dGFjaG1lbnQobVN0YXRlLmdldFN0ZW5jaWxBdHRhY2htZW50KCkpKTsKICAg
ICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6
Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIEZyYW1lYnVmZmVyMTE6OmludmFsaWRhdGVTdWIo
c2l6ZV90LCBjb25zdCBHTGVudW0gKiwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmKQogewogICAgIC8v
IEEgbm8tb3AgaW1wbGVtZW50YXRpb24gY29uZm9ybXMgdG8gdGhlIHNwZWMsIHNvIGRvbid0IGNh
bGwgVU5JTVBMRU1FTlRFRCgpCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Cisg
ICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKK2dsOjpFcnJvciBGcmFtZWJ1ZmZlcjExOjpp
bnZhbGlkYXRlQXR0YWNobWVudChjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICphdHRh
Y2htZW50KSBjb25zdAoreworICAgIElEM0QxMURldmljZUNvbnRleHQxICpkZXZpY2VDb250ZXh0
MSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dDFJZlN1cHBvcnRlZCgpOworICAgIEFTU0VS
VChkZXZpY2VDb250ZXh0MSk7CisgICAgQVNTRVJUKGF0dGFjaG1lbnQgJiYgYXR0YWNobWVudC0+
aXNBdHRhY2hlZCgpKTsKKworICAgIFJlbmRlclRhcmdldDExICpyZW5kZXJUYXJnZXQgPSBudWxs
cHRyOworICAgIEFOR0xFX1RSWShhdHRhY2htZW50LT5nZXRSZW5kZXJUYXJnZXQoJnJlbmRlclRh
cmdldCkpOworICAgIElEM0QxMVZpZXcgKnZpZXcgPSByZW5kZXJUYXJnZXQtPmdldFJlbmRlclRh
cmdldFZpZXcoKTsKKworICAgIGlmICh2aWV3ICE9IG51bGxwdHIpCisgICAgeworICAgICAgICBk
ZXZpY2VDb250ZXh0MS0+RGlzY2FyZFZpZXcodmlldyk7CisgICAgfQorCisgICAgcmV0dXJuIGds
OjpOb0Vycm9yKCk7Cit9CisKIGdsOjpFcnJvciBGcmFtZWJ1ZmZlcjExOjpyZWFkUGl4ZWxzSW1w
bChjb25zdCBnbDo6UmVjdGFuZ2xlICZhcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHR5cGUsCkBAIC0zNDMsMTkgKzI1NiwxMiBAQAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFBhY2tTdGF0ZSAm
cGFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpw
aXhlbHMpIGNvbnN0CiB7Ci0gICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqcmVh
ZEF0dGFjaG1lbnQgPSBtRGF0YS5nZXRSZWFkQXR0YWNobWVudCgpOworICAgIGNvbnN0IGdsOjpG
cmFtZWJ1ZmZlckF0dGFjaG1lbnQgKnJlYWRBdHRhY2htZW50ID0gbVN0YXRlLmdldFJlYWRBdHRh
Y2htZW50KCk7CiAgICAgQVNTRVJUKHJlYWRBdHRhY2htZW50KTsKIAogICAgIGdsOjpCdWZmZXIg
KnBhY2tCdWZmZXIgPSBwYWNrLnBpeGVsQnVmZmVyLmdldCgpOwogICAgIGlmIChwYWNrQnVmZmVy
ICE9IG51bGxwdHIpCiAgICAgewotICAgICAgICBpZiAocGFjay5yb3dMZW5ndGggIT0gMCB8fCBw
YWNrLnNraXBSb3dzICE9IDAgfHwgcGFjay5za2lwUGl4ZWxzICE9IDApCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmlt
cGxlbWVudGVkIHBpeGVsIHN0b3JlIHBhcmFtZXRlcnMgaW4gcmVhZFBpeGVsc0ltcGwiKTsKLSAg
ICAgICAgfQotCiAgICAgICAgIEJ1ZmZlcjExICpwYWNrQnVmZmVyU3RvcmFnZSA9IEdldEltcGxB
czxCdWZmZXIxMT4ocGFja0J1ZmZlcik7CiAgICAgICAgIFBhY2tQaXhlbHNQYXJhbXMgcGFja1Bh
cmFtcyhhcmVhLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PEdMdWludD4ob3V0cHV0UGl0Y2gp
LCBwYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDxwdHJkaWZmX3Q+KHBpeGVscykpOwpAQCAtMzY3LDkgKzI3MywxNCBAQAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+KG91dHB1
dFBpdGNoKSwgcGFjaywgcGl4ZWxzKTsKIH0KIAotZ2w6OkVycm9yIEZyYW1lYnVmZmVyMTE6OmJs
aXQoY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwgY29uc3QgZ2w6OlJlY3RhbmdsZSAm
ZGVzdEFyZWEsIGNvbnN0IGdsOjpSZWN0YW5nbGUgKnNjaXNzb3IsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGJsaXRSZW5kZXJUYXJnZXQsIGJvb2wgYmxpdERlcHRoLCBib29s
IGJsaXRTdGVuY2lsLCBHTGVudW0gZmlsdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2VGcmFtZWJ1ZmZlcikKK2dsOjpFcnJvciBG
cmFtZWJ1ZmZlcjExOjpibGl0SW1wbChjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRl
c3RBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0
YW5nbGUgKnNjaXNzb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBi
bGl0UmVuZGVyVGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
YmxpdERlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYmxpdFN0
ZW5jaWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbHRlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIg
KnNvdXJjZUZyYW1lYnVmZmVyKQogewogICAgIGlmIChibGl0UmVuZGVyVGFyZ2V0KQogICAgIHsK
QEAgLTM3NywxNSArMjg4LDExIEBACiAgICAgICAgIEFTU0VSVChyZWFkQnVmZmVyKTsKIAogICAg
ICAgICBSZW5kZXJUYXJnZXREM0QgKnJlYWRSZW5kZXJUYXJnZXQgPSBudWxscHRyOwotICAgICAg
ICBnbDo6RXJyb3IgZXJyb3IgPSByZWFkQnVmZmVyLT5nZXRSZW5kZXJUYXJnZXQoJnJlYWRSZW5k
ZXJUYXJnZXQpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKHJlYWRC
dWZmZXItPmdldFJlbmRlclRhcmdldCgmcmVhZFJlbmRlclRhcmdldCkpOwogICAgICAgICBBU1NF
UlQocmVhZFJlbmRlclRhcmdldCk7CiAKLSAgICAgICAgY29uc3QgYXV0byAmY29sb3JBdHRhY2ht
ZW50cyA9IG1EYXRhLmdldENvbG9yQXR0YWNobWVudHMoKTsKLSAgICAgICAgY29uc3QgYXV0byAm
ZHJhd0J1ZmZlclN0YXRlcyA9IG1EYXRhLmdldERyYXdCdWZmZXJTdGF0ZXMoKTsKKyAgICAgICAg
Y29uc3QgYXV0byAmY29sb3JBdHRhY2htZW50cyA9IG1TdGF0ZS5nZXRDb2xvckF0dGFjaG1lbnRz
KCk7CisgICAgICAgIGNvbnN0IGF1dG8gJmRyYXdCdWZmZXJTdGF0ZXMgPSBtU3RhdGUuZ2V0RHJh
d0J1ZmZlclN0YXRlcygpOwogCiAgICAgICAgIGZvciAoc2l6ZV90IGNvbG9yQXR0YWNobWVudCA9
IDA7IGNvbG9yQXR0YWNobWVudCA8IGNvbG9yQXR0YWNobWVudHMuc2l6ZSgpOyBjb2xvckF0dGFj
aG1lbnQrKykKICAgICAgICAgewpAQCAtMzk1LDExICszMDIsNyBAQAogICAgICAgICAgICAgICAg
IGRyYXdCdWZmZXJTdGF0ZXNbY29sb3JBdHRhY2htZW50XSAhPSBHTF9OT05FKQogICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgIFJlbmRlclRhcmdldEQzRCAqZHJhd1JlbmRlclRhcmdldCA9
IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgZXJyb3IgPSBkcmF3QnVmZmVyLmdldFJlbmRlclRh
cmdldCgmZHJhd1JlbmRlclRhcmdldCk7Ci0gICAgICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJy
b3IoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJv
cjsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgQU5HTEVfVFJZKGRyYXdCdWZm
ZXIuZ2V0UmVuZGVyVGFyZ2V0KCZkcmF3UmVuZGVyVGFyZ2V0KSk7CiAgICAgICAgICAgICAgICAg
QVNTRVJUKGRyYXdSZW5kZXJUYXJnZXQpOwogCiAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCBp
bnZlcnRDb2xvclNvdXJjZSAgID0gVXNlUHJlc2VudFBhdGhGYXN0KG1SZW5kZXJlciwgcmVhZEJ1
ZmZlcik7CkBAIC00MjAsMTMgKzMyMyw5IEBACiAgICAgICAgICAgICAgICAgICAgIGFjdHVhbERl
c3RBcmVhLmhlaWdodCAgICAgICAgICAgICAgPSAtZGVzdEFyZWEuaGVpZ2h0OwogICAgICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGVycm9yID0gbVJlbmRlcmVyLT5ibGl0UmVuZGVy
YnVmZmVyUmVjdChhY3R1YWxTb3VyY2VBcmVhLCBhY3R1YWxEZXN0QXJlYSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZFJlbmRlclRh
cmdldCwgZHJhd1JlbmRlclRhcmdldCwgZmlsdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lzc29yLCBibGl0UmVuZGVyVGFyZ2V0
LCBmYWxzZSwgZmFsc2UpOwotICAgICAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIEFOR0xFX1RSWShtUmVuZGVyZXItPmJsaXRS
ZW5kZXJidWZmZXJSZWN0KAorICAgICAgICAgICAgICAgICAgICBhY3R1YWxTb3VyY2VBcmVhLCBh
Y3R1YWxEZXN0QXJlYSwgcmVhZFJlbmRlclRhcmdldCwgZHJhd1JlbmRlclRhcmdldCwgZmlsdGVy
LAorICAgICAgICAgICAgICAgICAgICBzY2lzc29yLCBibGl0UmVuZGVyVGFyZ2V0LCBmYWxzZSwg
ZmFsc2UpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTQzNyw1OCArMzM2
LDQyIEBACiAgICAgICAgIEFTU0VSVChyZWFkQnVmZmVyKTsKIAogICAgICAgICBSZW5kZXJUYXJn
ZXREM0QgKnJlYWRSZW5kZXJUYXJnZXQgPSBudWxscHRyOwotICAgICAgICBnbDo6RXJyb3IgZXJy
b3IgPSByZWFkQnVmZmVyLT5nZXRSZW5kZXJUYXJnZXQoJnJlYWRSZW5kZXJUYXJnZXQpOwotICAg
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
ZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKHJlYWRCdWZmZXItPmdldFJlbmRl
clRhcmdldCgmcmVhZFJlbmRlclRhcmdldCkpOwogICAgICAgICBBU1NFUlQocmVhZFJlbmRlclRh
cmdldCk7CiAKLSAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqZHJhd0J1
ZmZlciA9IG1EYXRhLmdldERlcHRoT3JTdGVuY2lsQXR0YWNobWVudCgpOworICAgICAgICBjb25z
dCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICpkcmF3QnVmZmVyID0gbVN0YXRlLmdldERlcHRo
T3JTdGVuY2lsQXR0YWNobWVudCgpOwogICAgICAgICBBU1NFUlQoZHJhd0J1ZmZlcik7CiAKICAg
ICAgICAgUmVuZGVyVGFyZ2V0RDNEICpkcmF3UmVuZGVyVGFyZ2V0ID0gbnVsbHB0cjsKLSAgICAg
ICAgZXJyb3IgPSBkcmF3QnVmZmVyLT5nZXRSZW5kZXJUYXJnZXQoJmRyYXdSZW5kZXJUYXJnZXQp
OwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKGRyYXdCdWZmZXItPmdl
dFJlbmRlclRhcmdldCgmZHJhd1JlbmRlclRhcmdldCkpOwogICAgICAgICBBU1NFUlQoZHJhd1Jl
bmRlclRhcmdldCk7CiAKLSAgICAgICAgZXJyb3IgPSBtUmVuZGVyZXItPmJsaXRSZW5kZXJidWZm
ZXJSZWN0KHNvdXJjZUFyZWEsIGRlc3RBcmVhLCByZWFkUmVuZGVyVGFyZ2V0LCBkcmF3UmVuZGVy
VGFyZ2V0LCBmaWx0ZXIsIHNjaXNzb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmYWxzZSwgYmxpdERlcHRoLCBibGl0U3RlbmNpbCk7Ci0gICAgICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJv
cjsKLSAgICAgICAgfQorICAgICAgICBBTkdMRV9UUlkobVJlbmRlcmVyLT5ibGl0UmVuZGVyYnVm
ZmVyUmVjdChzb3VyY2VBcmVhLCBkZXN0QXJlYSwgcmVhZFJlbmRlclRhcmdldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd1JlbmRlclRhcmdl
dCwgZmlsdGVyLCBzY2lzc29yLCBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYmxpdERlcHRoLCBibGl0U3RlbmNpbCkpOwogICAgIH0KIAot
ICAgIGdsOjpFcnJvciBlcnJvciA9IGludmFsaWRhdGVTd2l6emxlcygpOwotICAgIGlmIChlcnJv
ci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQotCi0gICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgQU5HTEVfVFJZKG1hcmtBdHRhY2ht
ZW50c0RpcnR5KCkpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBHTGVudW0gRnJh
bWVidWZmZXIxMTo6Z2V0UmVuZGVyVGFyZ2V0SW1wbGVtZW50YXRpb25Gb3JtYXQoUmVuZGVyVGFy
Z2V0RDNEICpyZW5kZXJUYXJnZXQpIGNvbnN0CiB7CiAgICAgUmVuZGVyVGFyZ2V0MTEgKnJlbmRl
clRhcmdldDExID0gR2V0QXM8UmVuZGVyVGFyZ2V0MTE+KHJlbmRlclRhcmdldCk7Ci0gICAgcmV0
dXJuIGQzZDExOjpHZXRBTkdMRUZvcm1hdFNldChyZW5kZXJUYXJnZXQxMS0+Z2V0QU5HTEVGb3Jt
YXQoKSkuZ2xJbnRlcm5hbEZvcm1hdDsKKyAgICByZXR1cm4gcmVuZGVyVGFyZ2V0MTEtPmdldEZv
cm1hdFNldCgpLmZvcm1hdC5mYm9JbXBsZW1lbnRhdGlvbkludGVybmFsRm9ybWF0OwogfQogCiB2
b2lkIEZyYW1lYnVmZmVyMTE6OnVwZGF0ZUNvbG9yUmVuZGVyVGFyZ2V0KHNpemVfdCBjb2xvcklu
ZGV4KQogewotICAgIFVwZGF0ZUNhY2hlZFJlbmRlclRhcmdldChtRGF0YS5nZXRDb2xvckF0dGFj
aG1lbnQoY29sb3JJbmRleCksCisgICAgVXBkYXRlQ2FjaGVkUmVuZGVyVGFyZ2V0KG1TdGF0ZS5n
ZXRDb2xvckF0dGFjaG1lbnQoY29sb3JJbmRleCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1DYWNoZWRDb2xvclJlbmRlclRhcmdldHNbY29sb3JJbmRleF0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1Db2xvclJlbmRlclRhcmdldHNEaXJ0eVtjb2xvckluZGV4XSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtQ29sb3JSZW5kZXJUYXJnZXRzRGlydHlbY29s
b3JJbmRleF0pOwogfQogCiB2b2lkIEZyYW1lYnVmZmVyMTE6OnVwZGF0ZURlcHRoU3RlbmNpbFJl
bmRlclRhcmdldCgpCiB7Ci0gICAgVXBkYXRlQ2FjaGVkUmVuZGVyVGFyZ2V0KG1EYXRhLmdldERl
cHRoT3JTdGVuY2lsQXR0YWNobWVudCgpLCBtQ2FjaGVkRGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0
RGlydHkpOworICAgIFVwZGF0ZUNhY2hlZFJlbmRlclRhcmdldChtU3RhdGUuZ2V0RGVwdGhPclN0
ZW5jaWxBdHRhY2htZW50KCksIG1DYWNoZWREZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZtRGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0RGlydHkp
OwogfQogCiB2b2lkIEZyYW1lYnVmZmVyMTE6OnN5bmNTdGF0ZShjb25zdCBnbDo6RnJhbWVidWZm
ZXI6OkRpcnR5Qml0cyAmZGlydHlCaXRzKQpAQCAtNDk4LDcgKzM4MSw3IEBACiAgICAgY29uc3Qg
YXV0byAmbWVyZ2VkRGlydHlCaXRzID0gZGlydHlCaXRzIHwgbUludGVybmFsRGlydHlCaXRzOwog
ICAgIG1JbnRlcm5hbERpcnR5Qml0cy5yZXNldCgpOwogCi0gICAgZm9yIChhdXRvIGRpcnR5Qml0
IDogYW5nbGU6Okl0ZXJhdGVCaXRTZXQobWVyZ2VkRGlydHlCaXRzKSkKKyAgICBmb3IgKGF1dG8g
ZGlydHlCaXQgOiBJdGVyYXRlQml0U2V0KG1lcmdlZERpcnR5Qml0cykpCiAgICAgewogICAgICAg
ICBzd2l0Y2ggKGRpcnR5Qml0KQogICAgICAgICB7CkBAIC01MjcsMjggKzQxMCwyOSBAQAogICAg
IEZyYW1lYnVmZmVyRDNEOjpzeW5jU3RhdGUoZGlydHlCaXRzKTsKIH0KIAotdm9pZCBGcmFtZWJ1
ZmZlcjExOjptYXJrQ29sb3JSZW5kZXJUYXJnZXREaXJ0eShzaXplX3QgY29sb3JJbmRleCkKK3Zv
aWQgRnJhbWVidWZmZXIxMTo6c2lnbmFsKFNpZ25hbFRva2VuIHRva2VuKQogewotICAgIG1JbnRl
cm5hbERpcnR5Qml0cy5zZXQoZ2w6OkZyYW1lYnVmZmVyOjpESVJUWV9CSVRfQ09MT1JfQVRUQUNI
TUVOVF8wICsgY29sb3JJbmRleCk7Ci0gICAgbUNhY2hlZENvbG9yUmVuZGVyVGFyZ2V0c1tjb2xv
ckluZGV4XSA9IG51bGxwdHI7CisgICAgaWYgKHRva2VuID09IGdsOjpJTVBMRU1FTlRBVElPTl9N
QVhfRlJBTUVCVUZGRVJfQVRUQUNITUVOVFMpCisgICAgeworICAgICAgICAvLyBTdGVuY2lsIGlz
IHJlZHVuZGFudCBpbiB0aGlzIGNhc2UuCisgICAgICAgIG1JbnRlcm5hbERpcnR5Qml0cy5zZXQo
Z2w6OkZyYW1lYnVmZmVyOjpESVJUWV9CSVRfREVQVEhfQVRUQUNITUVOVCk7CisgICAgICAgIG1D
YWNoZWREZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQgPSBudWxscHRyOworICAgIH0KKyAgICBlbHNl
CisgICAgeworICAgICAgICBtSW50ZXJuYWxEaXJ0eUJpdHMuc2V0KGdsOjpGcmFtZWJ1ZmZlcjo6
RElSVFlfQklUX0NPTE9SX0FUVEFDSE1FTlRfMCArIHRva2VuKTsKKyAgICAgICAgbUNhY2hlZENv
bG9yUmVuZGVyVGFyZ2V0c1t0b2tlbl0gPSBudWxscHRyOworICAgIH0KIH0KIAotdm9pZCBGcmFt
ZWJ1ZmZlcjExOjptYXJrRGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0RGlydHkoKQotewotICAgIC8v
IFN0ZW5jaWwgaXMgcmVkdW5kYW50IGluIHRoaXMgY2FzZS4KLSAgICBtSW50ZXJuYWxEaXJ0eUJp
dHMuc2V0KGdsOjpGcmFtZWJ1ZmZlcjo6RElSVFlfQklUX0RFUFRIX0FUVEFDSE1FTlQpOwotICAg
IG1DYWNoZWREZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQgPSBudWxscHRyOwotfQotCiBib29sIEZy
YW1lYnVmZmVyMTE6Omhhc0FueUludGVybmFsRGlydHlCaXQoKSBjb25zdAogewogICAgIHJldHVy
biBtSW50ZXJuYWxEaXJ0eUJpdHMuYW55KCk7CiB9CiAKLXZvaWQgRnJhbWVidWZmZXIxMTo6c3lu
Y0ludGVybmFsU3RhdGUoKSBjb25zdAordm9pZCBGcmFtZWJ1ZmZlcjExOjpzeW5jSW50ZXJuYWxT
dGF0ZSgpCiB7Ci0gICAgLy8gVE9ETyhqbWFkaWxsKTogQ2xlYW4gdXAgdGhpcyBoYWNrLgotICAg
IGNvbnN0X2Nhc3Q8RnJhbWVidWZmZXIxMSAqPih0aGlzKS0+c3luY1N0YXRlKGdsOjpGcmFtZWJ1
ZmZlcjo6RGlydHlCaXRzKCkpOworICAgIHN5bmNTdGF0ZShnbDo6RnJhbWVidWZmZXI6OkRpcnR5
Qml0cygpKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ZyYW1lYnVmZmVyMTEuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL0ZyYW1lYnVmZmVyMTEuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9GcmFtZWJ1
ZmZlcjExLmgJKHdvcmtpbmcgY29weSkKQEAgLTExLDE1ICsxMSwxNiBAQAogCiAjaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvZDNkL0ZyYW1lYnVmZmVyRDNELmgiCiAjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFfdXRpbHMuaCIKKyNpbmNsdWRlICJsaWJB
TkdMRS9zaWduYWxfdXRpbHMuaCIKIAogbmFtZXNwYWNlIHJ4CiB7CiBjbGFzcyBSZW5kZXJlcjEx
OwogCi1jbGFzcyBGcmFtZWJ1ZmZlcjExIDogcHVibGljIEZyYW1lYnVmZmVyRDNECitjbGFzcyBG
cmFtZWJ1ZmZlcjExIDogcHVibGljIEZyYW1lYnVmZmVyRDNELCBwdWJsaWMgYW5nbGU6OlNpZ25h
bFJlY2VpdmVyCiB7CiAgIHB1YmxpYzoKLSAgICBGcmFtZWJ1ZmZlcjExKGNvbnN0IGdsOjpGcmFt
ZWJ1ZmZlcjo6RGF0YSAmZGF0YSwgUmVuZGVyZXIxMSAqcmVuZGVyZXIpOworICAgIEZyYW1lYnVm
ZmVyMTEoY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJmRhdGEsIFJlbmRlcmVyMTEgKnJlbmRl
cmVyKTsKICAgICB2aXJ0dWFsIH5GcmFtZWJ1ZmZlcjExKCk7CiAKICAgICBnbDo6RXJyb3IgZGlz
Y2FyZChzaXplX3QgY291bnQsIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpIG92ZXJyaWRlOwpA
QCAtMjcsNyArMjgsNyBAQAogICAgIGdsOjpFcnJvciBpbnZhbGlkYXRlU3ViKHNpemVfdCBjb3Vu
dCwgY29uc3QgR0xlbnVtICphdHRhY2htZW50cywgY29uc3QgZ2w6OlJlY3RhbmdsZSAmYXJlYSkg
b3ZlcnJpZGU7CiAKICAgICAvLyBJbnZhbGlkYXRlIHRoZSBjYWNoZWQgc3dpenpsZXMgb2YgYWxs
IGJvdW5kIHRleHR1cmUgYXR0YWNobWVudHMuCi0gICAgZ2w6OkVycm9yIGludmFsaWRhdGVTd2l6
emxlcygpIGNvbnN0OworICAgIGdsOjpFcnJvciBtYXJrQXR0YWNobWVudHNEaXJ0eSgpIGNvbnN0
OwogCiAgICAgdm9pZCBzeW5jU3RhdGUoY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEaXJ0eUJpdHMg
JmRpcnR5Qml0cykgb3ZlcnJpZGU7CiAKQEAgLTQwLDE1ICs0MSwxMyBAQAogICAgICAgICByZXR1
cm4gbUNhY2hlZERlcHRoU3RlbmNpbFJlbmRlclRhcmdldDsKICAgICB9CiAKLSAgICB2b2lkIG1h
cmtDb2xvclJlbmRlclRhcmdldERpcnR5KHNpemVfdCBjb2xvckluZGV4KTsKLSAgICB2b2lkIG1h
cmtEZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXREaXJ0eSgpOwotCiAgICAgYm9vbCBoYXNBbnlJbnRl
cm5hbERpcnR5Qml0KCkgY29uc3Q7Ci0gICAgLy8gVE9ETyhqbWFkaWxsKTogbWFrZSB0aGlzIG5v
bi1jb25zdAotICAgIHZvaWQgc3luY0ludGVybmFsU3RhdGUoKSBjb25zdDsKKyAgICB2b2lkIHN5
bmNJbnRlcm5hbFN0YXRlKCk7CiAKKyAgICB2b2lkIHNpZ25hbChhbmdsZTo6U2lnbmFsVG9rZW4g
dG9rZW4pIG92ZXJyaWRlOworCiAgIHByaXZhdGU6Ci0gICAgZ2w6OkVycm9yIGNsZWFyKGNvbnN0
IGdsOjpEYXRhICZkYXRhLCBjb25zdCBDbGVhclBhcmFtZXRlcnMgJmNsZWFyUGFyYW1zKSBvdmVy
cmlkZTsKKyAgICBnbDo6RXJyb3IgY2xlYXJJbXBsKENvbnRleHRJbXBsICpjb250ZXh0LCBjb25z
dCBDbGVhclBhcmFtZXRlcnMgJmNsZWFyUGFyYW1zKSBvdmVycmlkZTsKIAogICAgIGdsOjpFcnJv
ciByZWFkUGl4ZWxzSW1wbChjb25zdCBnbDo6UmVjdGFuZ2xlICZhcmVhLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LApAQCAtNTcsMTEgKzU2LDE3IEBACiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFBhY2tTdGF0ZSAmcGFjaywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcGl4ZWxzKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIGdsOjpFcnJvciBibGl0KGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFy
ZWEsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRlc3RBcmVhLCBjb25zdCBnbDo6UmVjdGFuZ2xlICpz
Y2lzc29yLAotICAgICAgICAgICAgICAgICAgIGJvb2wgYmxpdFJlbmRlclRhcmdldCwgYm9vbCBi
bGl0RGVwdGgsIGJvb2wgYmxpdFN0ZW5jaWwsIEdMZW51bSBmaWx0ZXIsCi0gICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2VGcmFtZWJ1ZmZlcikgb3ZlcnJpZGU7
CisgICAgZ2w6OkVycm9yIGJsaXRJbXBsKGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEs
CisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRlc3RBcmVhLAor
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICpzY2lzc29yLAorICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGJsaXRSZW5kZXJUYXJnZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgYmxpdERlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICBib29sIGJs
aXRTdGVuY2lsLAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsdGVyLAorICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZUZyYW1lYnVmZmVy
KSBvdmVycmlkZTsKIAogICAgIGdsOjpFcnJvciBpbnZhbGlkYXRlQmFzZShzaXplX3QgY291bnQs
IGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMsIGJvb2wgdXNlRVhUQmVoYXZpb3IpIGNvbnN0Owor
ICAgIGdsOjpFcnJvciBpbnZhbGlkYXRlQXR0YWNobWVudChjb25zdCBnbDo6RnJhbWVidWZmZXJB
dHRhY2htZW50ICphdHRhY2htZW50KSBjb25zdDsKIAogICAgIEdMZW51bSBnZXRSZW5kZXJUYXJn
ZXRJbXBsZW1lbnRhdGlvbkZvcm1hdChSZW5kZXJUYXJnZXREM0QgKnJlbmRlclRhcmdldCkgY29u
c3Qgb3ZlcnJpZGU7CiAKQEAgLTcyLDggKzc3LDggQEAKICAgICBSZW5kZXJUYXJnZXRBcnJheSBt
Q2FjaGVkQ29sb3JSZW5kZXJUYXJnZXRzOwogICAgIFJlbmRlclRhcmdldDExICptQ2FjaGVkRGVw
dGhTdGVuY2lsUmVuZGVyVGFyZ2V0OwogCi0gICAgc3RkOjp2ZWN0b3I8Tm90aWZpY2F0aW9uQ2Fs
bGJhY2s+IG1Db2xvclJlbmRlclRhcmdldHNEaXJ0eTsKLSAgICBOb3RpZmljYXRpb25DYWxsYmFj
ayBtRGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0RGlydHk7CisgICAgc3RkOjp2ZWN0b3I8YW5nbGU6
OkNoYW5uZWxCaW5kaW5nPiBtQ29sb3JSZW5kZXJUYXJnZXRzRGlydHk7CisgICAgYW5nbGU6OkNo
YW5uZWxCaW5kaW5nIG1EZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXREaXJ0eTsKIAogICAgIGdsOjpG
cmFtZWJ1ZmZlcjo6RGlydHlCaXRzIG1JbnRlcm5hbERpcnR5Qml0czsKIH07CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ltYWdl
MTEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvSW1hZ2UxMS5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvSW1h
Z2UxMS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDE0ICs1MCwxMCBAQAogICAgIEFTU0VSVChz
cmMtPmdldEhlaWdodCgpID09IDEgfHwgc3JjLT5nZXRIZWlnaHQoKSAvIDIgPT0gZGVzdC0+Z2V0
SGVpZ2h0KCkpOwogCiAgICAgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIGRlc3RNYXBwZWQ7Ci0g
ICAgZ2w6OkVycm9yIGVycm9yID0gZGVzdC0+bWFwKEQzRDExX01BUF9XUklURSwgJmRlc3RNYXBw
ZWQpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJy
b3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShkZXN0LT5tYXAoRDNEMTFfTUFQX1dSSVRFLCAmZGVz
dE1hcHBlZCkpOwogCiAgICAgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIHNyY01hcHBlZDsKLSAg
ICBlcnJvciA9IHNyYy0+bWFwKEQzRDExX01BUF9SRUFELCAmc3JjTWFwcGVkKTsKKyAgICBnbDo6
RXJyb3IgZXJyb3IgPSBzcmMtPm1hcChEM0QxMV9NQVBfUkVBRCwgJnNyY01hcHBlZCk7CiAgICAg
aWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7CiAgICAgICAgIGRlc3QtPnVubWFwKCk7CkBAIC02
Nyw4ICs2Myw4IEBACiAgICAgY29uc3QgdWludDhfdCAqc291cmNlRGF0YSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNyY01hcHBlZC5wRGF0YSk7CiAgICAgdWludDhfdCAqZGVz
dERhdGEgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkZXN0TWFwcGVkLnBEYXRhKTsKIAot
ICAgIGF1dG8gbWlwR2VuZXJhdGlvbkZ1bmN0aW9uID0gZDNkMTE6OkdldFRleHR1cmVGb3JtYXRJ
bmZvKHNyYy0+Z2V0SW50ZXJuYWxGb3JtYXQoKSwgcmVuZGVyZXJDYXBzKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXRTZXQtPm1pcEdlbmVyYXRpb25GdW5jdGlv
bjsKKyAgICBhdXRvIG1pcEdlbmVyYXRpb25GdW5jdGlvbiA9CisgICAgICAgIGQzZDExOjpGb3Jt
YXQ6OkdldChzcmMtPmdldEludGVybmFsRm9ybWF0KCksIHJlbmRlcmVyQ2FwcykuZm9ybWF0Lm1p
cEdlbmVyYXRpb25GdW5jdGlvbjsKICAgICBtaXBHZW5lcmF0aW9uRnVuY3Rpb24oc3JjLT5nZXRX
aWR0aCgpLCBzcmMtPmdldEhlaWdodCgpLCBzcmMtPmdldERlcHRoKCksIHNvdXJjZURhdGEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNyY01hcHBlZC5Sb3dQaXRjaCwgc3JjTWFwcGVkLkRl
cHRoUGl0Y2gsIGRlc3REYXRhLCBkZXN0TWFwcGVkLlJvd1BpdGNoLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZXN0TWFwcGVkLkRlcHRoUGl0Y2gpOwpAQCAtNzgsNyArNzQsNyBAQAogCiAg
ICAgZGVzdC0+bWFya0RpcnR5KCk7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9S
KTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogYm9vbCBJbWFnZTExOjppc0RpcnR5
KCkgY29uc3QKQEAgLTkwLDcgKzg2LDcgQEAKICAgICBpZiAobURpcnR5ICYmICFtU3RhZ2luZ1Rl
eHR1cmUgJiYgIW1SZWNvdmVyRnJvbVN0b3JhZ2UpCiAgICAgewogICAgICAgICBjb25zdCBSZW5k
ZXJlcjExRGV2aWNlQ2FwcyAmZGV2aWNlQ2FwcyA9IG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURl
dmljZUNhcHMoKTsKLSAgICAgICAgY29uc3QgYXV0byAmZm9ybWF0SW5mbyA9IGQzZDExOjpHZXRU
ZXh0dXJlRm9ybWF0SW5mbyhtSW50ZXJuYWxGb3JtYXQsIGRldmljZUNhcHMpOworICAgICAgICBj
b25zdCBhdXRvICZmb3JtYXRJbmZvICAgICAgICAgICAgICAgICA9IGQzZDExOjpGb3JtYXQ6Okdl
dChtSW50ZXJuYWxGb3JtYXQsIGRldmljZUNhcHMpOwogICAgICAgICBpZiAoZm9ybWF0SW5mby5k
YXRhSW5pdGlhbGl6ZXJGdW5jdGlvbiA9PSBudWxscHRyKQogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xMTMsMjcgKzEwOSwxNSBAQAogICAgIGlmIChhdHRlbXB0VG9S
ZWxlYXNlU3RhZ2luZ1RleHR1cmUpCiAgICAgewogICAgICAgICAvLyBJZiBhbm90aGVyIGltYWdl
IGlzIHJlbHlpbmcgb24gdGhpcyBTdG9yYWdlIGZvciBpdHMgZGF0YSwgdGhlbiB3ZSBtdXN0IGxl
dCBpdCByZWNvdmVyIGl0cyBkYXRhIGJlZm9yZSB3ZSBvdmVyd3JpdGUgaXQuCi0gICAgICAgIGds
OjpFcnJvciBlcnJvciA9IHN0b3JhZ2UxMS0+cmVsZWFzZUFzc29jaWF0ZWRJbWFnZShpbmRleCwg
dGhpcyk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBBTkdMRV9UUlkoc3RvcmFnZTEx
LT5yZWxlYXNlQXNzb2NpYXRlZEltYWdlKGluZGV4LCB0aGlzKSk7CiAgICAgfQogCiAgICAgSUQz
RDExUmVzb3VyY2UgKnN0YWdpbmdUZXh0dXJlID0gTlVMTDsKICAgICB1bnNpZ25lZCBpbnQgc3Rh
Z2luZ1N1YnJlc291cmNlSW5kZXggPSAwOwotICAgIGdsOjpFcnJvciBlcnJvciA9IGdldFN0YWdp
bmdUZXh0dXJlKCZzdGFnaW5nVGV4dHVyZSwgJnN0YWdpbmdTdWJyZXNvdXJjZUluZGV4KTsKLSAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAg
IH0KKyAgICBBTkdMRV9UUlkoZ2V0U3RhZ2luZ1RleHR1cmUoJnN0YWdpbmdUZXh0dXJlLCAmc3Rh
Z2luZ1N1YnJlc291cmNlSW5kZXgpKTsKKyAgICBBTkdMRV9UUlkoCisgICAgICAgIHN0b3JhZ2Ux
MS0+dXBkYXRlU3VicmVzb3VyY2VMZXZlbChzdGFnaW5nVGV4dHVyZSwgc3RhZ2luZ1N1YnJlc291
cmNlSW5kZXgsIGluZGV4LCByZWdpb24pKTsKIAotICAgIGVycm9yID0gc3RvcmFnZTExLT51cGRh
dGVTdWJyZXNvdXJjZUxldmVsKHN0YWdpbmdUZXh0dXJlLCBzdGFnaW5nU3VicmVzb3VyY2VJbmRl
eCwgaW5kZXgsIHJlZ2lvbik7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBlcnJvcjsKLSAgICB9Ci0KICAgICAvLyBPbmNlIHRoZSBpbWFnZSBkYXRhIGhh
cyBiZWVuIGNvcGllZCBpbnRvIHRoZSBTdG9yYWdlLCB3ZSBjYW4gcmVsZWFzZSBpdCBsb2NhbGx5
LgogICAgIGlmIChhdHRlbXB0VG9SZWxlYXNlU3RhZ2luZ1RleHR1cmUpCiAgICAgewpAQCAtMTQ0
LDcgKzEyOCw3IEBACiAgICAgICAgIG1Bc3NvY2lhdGVkSW1hZ2VJbmRleCA9IGluZGV4OwogICAg
IH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOwogfQogCiBib29sIEltYWdlMTE6OmlzQXNzb2NpYXRlZFN0b3JhZ2VWYWxpZChU
ZXh0dXJlU3RvcmFnZTExKiB0ZXh0dXJlU3RvcmFnZSkgY29uc3QKQEAgLTE1NiwxMSArMTQwLDcg
QEAKIHsKICAgICBpZiAobVJlY292ZXJGcm9tU3RvcmFnZSkKICAgICB7Ci0gICAgICAgIGdsOjpF
cnJvciBlcnJvciA9IGNyZWF0ZVN0YWdpbmdUZXh0dXJlKCk7Ci0gICAgICAgIGlmIChlcnJvci5p
c0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAg
fQorICAgICAgICBBTkdMRV9UUlkoY3JlYXRlU3RhZ2luZ1RleHR1cmUoKSk7CiAKICAgICAgICAg
Ym9vbCB0ZXh0dXJlU3RvcmFnZUNvcnJlY3QgPSBtQXNzb2NpYXRlZFN0b3JhZ2UtPmlzQXNzb2Np
YXRlZEltYWdlVmFsaWQobUFzc29jaWF0ZWRJbWFnZUluZGV4LCB0aGlzKTsKIApAQCAtMTcyLDEy
ICsxNTIsOCBAQAogICAgICAgICB7CiAgICAgICAgICAgICAvLyBDb3B5U3ViUmVzb3VyY2UgZnJv
bSB0aGUgU3RvcmFnZSB0byB0aGUgU3RhZ2luZyB0ZXh0dXJlCiAgICAgICAgICAgICBnbDo6Qm94
IHJlZ2lvbigwLCAwLCAwLCBtV2lkdGgsIG1IZWlnaHQsIG1EZXB0aCk7Ci0gICAgICAgICAgICBl
cnJvciA9IG1Bc3NvY2lhdGVkU3RvcmFnZS0+Y29weVN1YnJlc291cmNlTGV2ZWwobVN0YWdpbmdU
ZXh0dXJlLCBtU3RhZ2luZ1N1YnJlc291cmNlLCBtQXNzb2NpYXRlZEltYWdlSW5kZXgsIHJlZ2lv
bik7Ci0gICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgICAgIH0KLQorICAgICAgICAgICAg
QU5HTEVfVFJZKG1Bc3NvY2lhdGVkU3RvcmFnZS0+Y29weVN1YnJlc291cmNlTGV2ZWwobVN0YWdp
bmdUZXh0dXJlLCBtU3RhZ2luZ1N1YnJlc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUFzc29jaWF0ZWRJbWFnZUlu
ZGV4LCByZWdpb24pKTsKICAgICAgICAgICAgIG1SZWNvdmVyZWRGcm9tU3RvcmFnZUNvdW50ICs9
IDE7CiAgICAgICAgIH0KIApAQCAtMTg1LDcgKzE2MSw3IEBACiAgICAgICAgIGRpc2Fzc29jaWF0
ZVN0b3JhZ2UoKTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsK
KyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogdm9pZCBJbWFnZTExOjpkaXNhc3NvY2lh
dGVTdG9yYWdlKCkKQEAgLTIyMCwxMCArMTk2LDEwIEBACiAgICAgICAgIG1UYXJnZXQgPSB0YXJn
ZXQ7CiAKICAgICAgICAgLy8gY29tcHV0ZSB0aGUgZDNkIGZvcm1hdCB0aGF0IHdpbGwgYmUgdXNl
ZAotICAgICAgICBjb25zdCBkM2QxMTo6VGV4dHVyZUZvcm1hdCAmZm9ybWF0SW5mbyA9Ci0gICAg
ICAgICAgICBkM2QxMTo6R2V0VGV4dHVyZUZvcm1hdEluZm8oaW50ZXJuYWxmb3JtYXQsIG1SZW5k
ZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKSk7Ci0gICAgICAgIG1EWEdJRm9ybWF0ID0g
Zm9ybWF0SW5mby5mb3JtYXRTZXQtPnRleEZvcm1hdDsKLSAgICAgICAgbVJlbmRlcmFibGUgPSAo
Zm9ybWF0SW5mby5mb3JtYXRTZXQtPnJ0dkZvcm1hdCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dOKTsK
KyAgICAgICAgY29uc3QgZDNkMTE6OkZvcm1hdCAmZm9ybWF0SW5mbyA9CisgICAgICAgICAgICBk
M2QxMTo6Rm9ybWF0OjpHZXQoaW50ZXJuYWxmb3JtYXQsIG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIx
MURldmljZUNhcHMoKSk7CisgICAgICAgIG1EWEdJRm9ybWF0ID0gZm9ybWF0SW5mby50ZXhGb3Jt
YXQ7CisgICAgICAgIG1SZW5kZXJhYmxlID0gKGZvcm1hdEluZm8ucnR2Rm9ybWF0ICE9IERYR0lf
Rk9STUFUX1VOS05PV04pOwogCiAgICAgICAgIHJlbGVhc2VTdGFnaW5nVGV4dHVyZSgpOwogICAg
ICAgICBtRGlydHkgPSAoZm9ybWF0SW5mby5kYXRhSW5pdGlhbGl6ZXJGdW5jdGlvbiAhPSBOVUxM
KTsKQEAgLTI0NSwyNyArMjIxLDM0IEBACiAKIC8vIFN0b3JlIHRoZSBwaXhlbCByZWN0YW5nbGUg
ZGVzaWduYXRlZCBieSB4b2Zmc2V0LHlvZmZzZXQsd2lkdGgsaGVpZ2h0IHdpdGggcGl4ZWxzIHN0
b3JlZCBhcyBmb3JtYXQvdHlwZSBhdCBpbnB1dAogLy8gaW50byB0aGUgdGFyZ2V0IHBpeGVsIHJl
Y3RhbmdsZS4KLWdsOjpFcnJvciBJbWFnZTExOjpsb2FkRGF0YShjb25zdCBnbDo6Qm94ICZhcmVh
LCBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBHTGVudW0gdHlwZSwgY29uc3Qg
dm9pZCAqaW5wdXQpCitnbDo6RXJyb3IgSW1hZ2UxMTo6bG9hZERhdGEoY29uc3QgZ2w6OkJveCAm
YXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tT
dGF0ZSAmdW5wYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmlucHV0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgYXBwbHlTa2lwSW1hZ2VzKQogewogICAgIGNvbnN0IGds
OjpJbnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8o
bUludGVybmFsRm9ybWF0KTsKLSAgICBHTHNpemVpIGlucHV0Um93UGl0Y2ggPSBmb3JtYXRJbmZv
LmNvbXB1dGVSb3dQaXRjaCh0eXBlLCBhcmVhLndpZHRoLCB1bnBhY2suYWxpZ25tZW50LCB1bnBh
Y2sucm93TGVuZ3RoKTsKLSAgICBHTHNpemVpIGlucHV0RGVwdGhQaXRjaCA9IGZvcm1hdEluZm8u
Y29tcHV0ZURlcHRoUGl0Y2goCi0gICAgICAgIHR5cGUsIGFyZWEud2lkdGgsIGFyZWEuaGVpZ2h0
LCB1bnBhY2suYWxpZ25tZW50LCB1bnBhY2sucm93TGVuZ3RoLCB1bnBhY2suaW1hZ2VIZWlnaHQp
OwotICAgIEdMc2l6ZWkgaW5wdXRTa2lwQnl0ZXMgPSBmb3JtYXRJbmZvLmNvbXB1dGVTa2lwUGl4
ZWxzKAotICAgICAgICBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gsIHVucGFjay5za2lw
SW1hZ2VzLCB1bnBhY2suc2tpcFJvd3MsIHVucGFjay5za2lwUGl4ZWxzKTsKKyAgICBHTHVpbnQg
aW5wdXRSb3dQaXRjaCAgICAgICAgICAgICAgICAgPSAwOworICAgIEFOR0xFX1RSWV9SRVNVTFQo
CisgICAgICAgIGZvcm1hdEluZm8uY29tcHV0ZVJvd1BpdGNoKHR5cGUsIGFyZWEud2lkdGgsIHVu
cGFjay5hbGlnbm1lbnQsIHVucGFjay5yb3dMZW5ndGgpLAorICAgICAgICBpbnB1dFJvd1BpdGNo
KTsKKyAgICBHTHVpbnQgaW5wdXREZXB0aFBpdGNoID0gMDsKKyAgICBBTkdMRV9UUllfUkVTVUxU
KGZvcm1hdEluZm8uY29tcHV0ZURlcHRoUGl0Y2goYXJlYS5oZWlnaHQsIHVucGFjay5pbWFnZUhl
aWdodCwgaW5wdXRSb3dQaXRjaCksCisgICAgICAgICAgICAgICAgICAgICBpbnB1dERlcHRoUGl0
Y2gpOworICAgIEdMdWludCBpbnB1dFNraXBCeXRlcyA9IDA7CisgICAgQU5HTEVfVFJZX1JFU1VM
VCgKKyAgICAgICAgZm9ybWF0SW5mby5jb21wdXRlU2tpcEJ5dGVzKGlucHV0Um93UGl0Y2gsIGlu
cHV0RGVwdGhQaXRjaCwgdW5wYWNrLCBhcHBseVNraXBJbWFnZXMpLAorICAgICAgICBpbnB1dFNr
aXBCeXRlcyk7CiAKICAgICBjb25zdCBkM2QxMTo6RFhHSUZvcm1hdFNpemUgJmR4Z2lGb3JtYXRJ
bmZvID0gZDNkMTE6OkdldERYR0lGb3JtYXRTaXplSW5mbyhtRFhHSUZvcm1hdCk7CiAgICAgR0x1
aW50IG91dHB1dFBpeGVsU2l6ZSA9IGR4Z2lGb3JtYXRJbmZvLnBpeGVsQnl0ZXM7CiAKLSAgICBj
b25zdCBkM2QxMTo6VGV4dHVyZUZvcm1hdCAmZDNkRm9ybWF0SW5mbyA9IGQzZDExOjpHZXRUZXh0
dXJlRm9ybWF0SW5mbyhtSW50ZXJuYWxGb3JtYXQsIG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURl
dmljZUNhcHMoKSk7Ci0gICAgTG9hZEltYWdlRnVuY3Rpb24gbG9hZEZ1bmN0aW9uID0gZDNkRm9y
bWF0SW5mby5sb2FkRnVuY3Rpb25zLmF0KHR5cGUpLmxvYWRGdW5jdGlvbjsKKyAgICBjb25zdCBk
M2QxMTo6Rm9ybWF0ICZkM2RGb3JtYXRJbmZvID0KKyAgICAgICAgZDNkMTE6OkZvcm1hdDo6R2V0
KG1JbnRlcm5hbEZvcm1hdCwgbVJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpKTsK
KyAgICBMb2FkSW1hZ2VGdW5jdGlvbiBsb2FkRnVuY3Rpb24gPSBkM2RGb3JtYXRJbmZvLmxvYWRG
dW5jdGlvbnModHlwZSkubG9hZEZ1bmN0aW9uOwogCiAgICAgRDNEMTFfTUFQUEVEX1NVQlJFU09V
UkNFIG1hcHBlZEltYWdlOwotICAgIGdsOjpFcnJvciBlcnJvciA9IG1hcChEM0QxMV9NQVBfV1JJ
VEUsICZtYXBwZWRJbWFnZSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKG1hcChEM0QxMV9NQVBfV1JJ
VEUsICZtYXBwZWRJbWFnZSkpOwogCiAgICAgdWludDhfdCAqb2Zmc2V0TWFwcGVkRGF0YSA9IChy
ZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihtYXBwZWRJbWFnZS5wRGF0YSkgKyAoYXJlYS55ICog
bWFwcGVkSW1hZ2UuUm93UGl0Y2ggKyBhcmVhLnggKiBvdXRwdXRQaXhlbFNpemUgKyBhcmVhLnog
KiBtYXBwZWRJbWFnZS5EZXB0aFBpdGNoKSk7CiAgICAgbG9hZEZ1bmN0aW9uKGFyZWEud2lkdGgs
IGFyZWEuaGVpZ2h0LCBhcmVhLmRlcHRoLApAQCAtMjc0LDE1ICsyNTcsMTYgQEAKIAogICAgIHVu
bWFwKCk7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4g
Z2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIEltYWdlMTE6OmxvYWRDb21wcmVzc2VkRGF0
YShjb25zdCBnbDo6Qm94ICZhcmVhLCBjb25zdCB2b2lkICppbnB1dCkKIHsKICAgICBjb25zdCBn
bDo6SW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZv
KG1JbnRlcm5hbEZvcm1hdCk7Ci0gICAgR0xzaXplaSBpbnB1dFJvd1BpdGNoID0gZm9ybWF0SW5m
by5jb21wdXRlUm93UGl0Y2goR0xfVU5TSUdORURfQllURSwgYXJlYS53aWR0aCwgMSwgMCk7Ci0g
ICAgR0xzaXplaSBpbnB1dERlcHRoUGl0Y2ggPQotICAgICAgICBmb3JtYXRJbmZvLmNvbXB1dGVE
ZXB0aFBpdGNoKEdMX1VOU0lHTkVEX0JZVEUsIGFyZWEud2lkdGgsIGFyZWEuaGVpZ2h0LCAxLCAw
LCAwKTsKKyAgICBHTHNpemVpIGlucHV0Um93UGl0Y2ggICAgICAgICAgICAgICAgPSAwOworICAg
IEFOR0xFX1RSWV9SRVNVTFQoZm9ybWF0SW5mby5jb21wdXRlUm93UGl0Y2goR0xfVU5TSUdORURf
QllURSwgYXJlYS53aWR0aCwgMSwgMCksIGlucHV0Um93UGl0Y2gpOworICAgIEdMc2l6ZWkgaW5w
dXREZXB0aFBpdGNoID0gMDsKKyAgICBBTkdMRV9UUllfUkVTVUxUKGZvcm1hdEluZm8uY29tcHV0
ZURlcHRoUGl0Y2goYXJlYS5oZWlnaHQsIDAsIGlucHV0Um93UGl0Y2gpLCBpbnB1dERlcHRoUGl0
Y2gpOwogCiAgICAgY29uc3QgZDNkMTE6OkRYR0lGb3JtYXRTaXplICZkeGdpRm9ybWF0SW5mbyA9
IGQzZDExOjpHZXREWEdJRm9ybWF0U2l6ZUluZm8obURYR0lGb3JtYXQpOwogICAgIEdMdWludCBv
dXRwdXRQaXhlbFNpemUgPSBkeGdpRm9ybWF0SW5mby5waXhlbEJ5dGVzOwpAQCAtMjkyLDE1ICsy
NzYsMTIgQEAKICAgICBBU1NFUlQoYXJlYS54ICUgb3V0cHV0QmxvY2tXaWR0aCA9PSAwKTsKICAg
ICBBU1NFUlQoYXJlYS55ICUgb3V0cHV0QmxvY2tIZWlnaHQgPT0gMCk7CiAKLSAgICBjb25zdCBk
M2QxMTo6VGV4dHVyZUZvcm1hdCAmZDNkRm9ybWF0SW5mbyA9IGQzZDExOjpHZXRUZXh0dXJlRm9y
bWF0SW5mbyhtSW50ZXJuYWxGb3JtYXQsIG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNh
cHMoKSk7Ci0gICAgTG9hZEltYWdlRnVuY3Rpb24gbG9hZEZ1bmN0aW9uID0gZDNkRm9ybWF0SW5m
by5sb2FkRnVuY3Rpb25zLmF0KEdMX1VOU0lHTkVEX0JZVEUpLmxvYWRGdW5jdGlvbjsKKyAgICBj
b25zdCBkM2QxMTo6Rm9ybWF0ICZkM2RGb3JtYXRJbmZvID0KKyAgICAgICAgZDNkMTE6OkZvcm1h
dDo6R2V0KG1JbnRlcm5hbEZvcm1hdCwgbVJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2Fw
cygpKTsKKyAgICBMb2FkSW1hZ2VGdW5jdGlvbiBsb2FkRnVuY3Rpb24gPSBkM2RGb3JtYXRJbmZv
LmxvYWRGdW5jdGlvbnMoR0xfVU5TSUdORURfQllURSkubG9hZEZ1bmN0aW9uOwogCiAgICAgRDNE
MTFfTUFQUEVEX1NVQlJFU09VUkNFIG1hcHBlZEltYWdlOwotICAgIGdsOjpFcnJvciBlcnJvciA9
IG1hcChEM0QxMV9NQVBfV1JJVEUsICZtYXBwZWRJbWFnZSk7Ci0gICAgaWYgKGVycm9yLmlzRXJy
b3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZ
KG1hcChEM0QxMV9NQVBfV1JJVEUsICZtYXBwZWRJbWFnZSkpOwogCiAgICAgdWludDhfdCogb2Zm
c2V0TWFwcGVkRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG1hcHBlZEltYWdlLnBE
YXRhKSArICgoYXJlYS55IC8gb3V0cHV0QmxvY2tIZWlnaHQpICogbWFwcGVkSW1hZ2UuUm93UGl0
Y2ggKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGFyZWEueCAvIG91dHB1dEJsb2NrV2lkdGgpICogb3V0
cHV0UGl4ZWxTaXplICsKQEAgLTMxMiw3ICsyOTMsNyBAQAogCiAgICAgdW5tYXAoKTsKIAotICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigp
OwogfQogCiBnbDo6RXJyb3IgSW1hZ2UxMTo6Y29weUZyb21UZXhTdG9yYWdlKGNvbnN0IGdsOjpJ
bWFnZUluZGV4ICZpbWFnZUluZGV4LCBUZXh0dXJlU3RvcmFnZSAqc291cmNlKQpAQCAtMzIwLDE1
ICszMDEsMTEgQEAKICAgICBUZXh0dXJlU3RvcmFnZTExICpzdG9yYWdlMTEgPSBHZXRBczxUZXh0
dXJlU3RvcmFnZTExPihzb3VyY2UpOwogCiAgICAgSUQzRDExUmVzb3VyY2UgKnJlc291cmNlID0g
bnVsbHB0cjsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBzdG9yYWdlMTEtPmdldFJlc291cmNlKCZy
ZXNvdXJjZSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKHN0b3JhZ2UxMS0+Z2V0UmVzb3VyY2UoJnJl
c291cmNlKSk7CiAKICAgICBVSU5UIHN1YnJlc291cmNlSW5kZXggICAgICAgICA9IHN0b3JhZ2Ux
MS0+Z2V0U3VicmVzb3VyY2VJbmRleChpbWFnZUluZGV4KTsKICAgICBUZXh0dXJlSGVscGVyMTEg
dGV4dHVyZUhlbHBlciA9Ci0gICAgICAgIFRleHR1cmVIZWxwZXIxMTo6TWFrZUFuZFJlZmVyZW5j
ZShyZXNvdXJjZSwgc3RvcmFnZTExLT5nZXRBTkdMRUZvcm1hdCgpKTsKKyAgICAgICAgVGV4dHVy
ZUhlbHBlcjExOjpNYWtlQW5kUmVmZXJlbmNlKHJlc291cmNlLCBzdG9yYWdlMTEtPmdldEZvcm1h
dFNldCgpKTsKIAogICAgIGdsOjpCb3ggc291cmNlQm94KDAsIDAsIDAsIG1XaWR0aCwgbUhlaWdo
dCwgbURlcHRoKTsKICAgICByZXR1cm4gY29weVdpdGhvdXRDb252ZXJzaW9uKGdsOjpPZmZzZXQo
KSwgc291cmNlQm94LCB0ZXh0dXJlSGVscGVyLCBzdWJyZXNvdXJjZUluZGV4KTsKQEAgLTM0MSwy
MyArMzE4LDIwIEBACiAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqc3JjQXR0
YWNobWVudCA9IHNvdXJjZUZCTy0+Z2V0UmVhZENvbG9yYnVmZmVyKCk7CiAgICAgQVNTRVJUKHNy
Y0F0dGFjaG1lbnQpOwogCi0gICAgY29uc3QgYXV0byAmZDNkMTFGb3JtYXQgPSBkM2QxMTo6R2V0
VGV4dHVyZUZvcm1hdEluZm8oc3JjQXR0YWNobWVudC0+Z2V0SW50ZXJuYWxGb3JtYXQoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
UmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCkpOworICAgIEdMZW51bSBzb3VyY2VJ
bnRlcm5hbEZvcm1hdCA9IHNyY0F0dGFjaG1lbnQtPmdldEZvcm1hdCgpLmFzU2l6ZWQoKTsKKyAg
ICBjb25zdCBhdXRvICZkM2QxMUZvcm1hdCA9CisgICAgICAgIGQzZDExOjpGb3JtYXQ6OkdldChz
b3VyY2VJbnRlcm5hbEZvcm1hdCwgbVJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2Fwcygp
KTsKIAotICAgIGlmIChkM2QxMUZvcm1hdC5mb3JtYXRTZXQtPnRleEZvcm1hdCA9PSBtRFhHSUZv
cm1hdCkKKyAgICBpZiAoZDNkMTFGb3JtYXQudGV4Rm9ybWF0ID09IG1EWEdJRm9ybWF0ICYmIHNv
dXJjZUludGVybmFsRm9ybWF0ID09IG1JbnRlcm5hbEZvcm1hdCkKICAgICB7CiAgICAgICAgIFJl
bmRlclRhcmdldEQzRCAqcmVuZGVyVGFyZ2V0ID0gbnVsbHB0cjsKLSAgICAgICAgZ2w6OkVycm9y
IGVycm9yID0gc3JjQXR0YWNobWVudC0+Z2V0UmVuZGVyVGFyZ2V0KCZyZW5kZXJUYXJnZXQpOwot
ICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKHNyY0F0dGFjaG1lbnQtPmdl
dFJlbmRlclRhcmdldCgmcmVuZGVyVGFyZ2V0KSk7CiAKICAgICAgICAgUmVuZGVyVGFyZ2V0MTEg
KnJ0MTEgPSBHZXRBczxSZW5kZXJUYXJnZXQxMT4ocmVuZGVyVGFyZ2V0KTsKICAgICAgICAgQVNT
RVJUKHJ0MTEtPmdldFRleHR1cmUoKSk7CiAKICAgICAgICAgVGV4dHVyZUhlbHBlcjExIHRleHR1
cmVIZWxwZXIgPQotICAgICAgICAgICAgVGV4dHVyZUhlbHBlcjExOjpNYWtlQW5kUmVmZXJlbmNl
KHJ0MTEtPmdldFRleHR1cmUoKSwgcnQxMS0+Z2V0QU5HTEVGb3JtYXQoKSk7CisgICAgICAgICAg
ICBUZXh0dXJlSGVscGVyMTE6Ok1ha2VBbmRSZWZlcmVuY2UocnQxMS0+Z2V0VGV4dHVyZSgpLCBy
dDExLT5nZXRGb3JtYXRTZXQoKSk7CiAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VTdWJSZXNv
dXJjZSA9IHJ0MTEtPmdldFN1YnJlc291cmNlSW5kZXgoKTsKIAogICAgICAgICBnbDo6Qm94IHNv
dXJjZUJveChzb3VyY2VBcmVhLngsIHNvdXJjZUFyZWEueSwgMCwgc291cmNlQXJlYS53aWR0aCwg
c291cmNlQXJlYS5oZWlnaHQsIDEpOwpAQCAtMzY3LDExICszNDEsNyBAQAogICAgIC8vIFRoaXMg
Zm9ybWF0IHJlcXVpcmVzIGNvbnZlcnNpb24sIHNvIHdlIG11c3QgY29weSB0aGUgdGV4dHVyZSB0
byBzdGFnaW5nIGFuZCBtYW51YWxseSBjb252ZXJ0CiAgICAgLy8gdmlhIHJlYWRQaXhlbHMKICAg
ICBEM0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwcGVkSW1hZ2U7Ci0gICAgZ2w6OkVycm9yIGVy
cm9yID0gbWFwKEQzRDExX01BUF9XUklURSwgJm1hcHBlZEltYWdlKTsKLSAgICBpZiAoZXJyb3Iu
aXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdM
RV9UUlkobWFwKEQzRDExX01BUF9XUklURSwgJm1hcHBlZEltYWdlKSk7CiAKICAgICAvLyBkZXRl
cm1pbmUgdGhlIG9mZnNldCBjb29yZGluYXRlIGludG8gdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlcgog
ICAgIGNvbnN0IGF1dG8gJmR4Z2lGb3JtYXRJbmZvID0gZDNkMTE6OkdldERYR0lGb3JtYXRTaXpl
SW5mbyhtRFhHSUZvcm1hdCk7CkBAIC0zODEsMTIgKzM1MSwzNCBAQAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXBwZWRJbWFnZS5Sb3dQaXRjaCAqIGRlc3RPZmZzZXQueSArIHJvd09mZnNl
dCArCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RPZmZzZXQueiAqIG1hcHBlZEltYWdl
LkRlcHRoUGl0Y2g7CiAKLSAgICBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8g
PSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKG1JbnRlcm5hbEZvcm1hdCk7CisgICAgY29uc3Qg
Z2w6OkludGVybmFsRm9ybWF0ICZkZXN0Rm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZvcm1h
dEluZm8obUludGVybmFsRm9ybWF0KTsKKyAgICBjb25zdCBhdXRvICZkZXN0RDNEMTFGb3JtYXQg
PQorICAgICAgICBkM2QxMTo6Rm9ybWF0OjpHZXQobUludGVybmFsRm9ybWF0LCBtUmVuZGVyZXIt
PmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCkpOwogCi0gICAgZXJyb3IgPSBtUmVuZGVyZXItPnJl
YWRGcm9tQXR0YWNobWVudCgqc3JjQXR0YWNobWVudCwgc291cmNlQXJlYSwgZm9ybWF0SW5mby5m
b3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRJ
bmZvLnR5cGUsIG1hcHBlZEltYWdlLlJvd1BpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2w6OlBpeGVsUGFja1N0YXRlKCksIGRhdGFPZmZzZXQpOworICAg
IGF1dG8gbG9hZEZ1bmN0aW9uID0gZGVzdEQzRDExRm9ybWF0LmxvYWRGdW5jdGlvbnMoZGVzdEZv
cm1hdEluZm8udHlwZSk7CisgICAgZ2w6OkVycm9yIGVycm9yICAgPSBnbDo6Tm9FcnJvcigpOwor
ICAgIGlmIChsb2FkRnVuY3Rpb24ucmVxdWlyZXNDb252ZXJzaW9uKQorICAgIHsKKyAgICAgICAg
c2l6ZV90IGJ1ZmZlclNpemUgPSBkZXN0Rm9ybWF0SW5mby5waXhlbEJ5dGVzICogc291cmNlQXJl
YS53aWR0aCAqIHNvdXJjZUFyZWEuaGVpZ2h0OworICAgICAgICBNZW1vcnlCdWZmZXIgKm1lbW9y
eUJ1ZmZlciA9IG51bGxwdHI7CisgICAgICAgIG1SZW5kZXJlci0+Z2V0U2NyYXRjaE1lbW9yeUJ1
ZmZlcihidWZmZXJTaXplLCAmbWVtb3J5QnVmZmVyKTsKKyAgICAgICAgR0x1aW50IG1lbW9yeUJ1
ZmZlclJvd1BpdGNoID0gZGVzdEZvcm1hdEluZm8ucGl4ZWxCeXRlcyAqIHNvdXJjZUFyZWEud2lk
dGg7CiAKKyAgICAgICAgZXJyb3IgPSBtUmVuZGVyZXItPnJlYWRGcm9tQXR0YWNobWVudCgqc3Jj
QXR0YWNobWVudCwgc291cmNlQXJlYSwgZGVzdEZvcm1hdEluZm8uZm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RGb3JtYXRJbmZvLnR5cGUs
IG1lbW9yeUJ1ZmZlclJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdsOjpQaXhlbFBhY2tTdGF0ZSgpLCBtZW1vcnlCdWZmZXItPmRhdGEoKSk7
CisKKyAgICAgICAgbG9hZEZ1bmN0aW9uLmxvYWRGdW5jdGlvbihzb3VyY2VBcmVhLndpZHRoLCBz
b3VyY2VBcmVhLmhlaWdodCwgMSwgbWVtb3J5QnVmZmVyLT5kYXRhKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWVtb3J5QnVmZmVyUm93UGl0Y2gsIDAsIGRhdGFPZmZzZXQs
IG1hcHBlZEltYWdlLlJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1hcHBlZEltYWdlLkRlcHRoUGl0Y2gpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAg
ICBlcnJvciA9IG1SZW5kZXJlci0+cmVhZEZyb21BdHRhY2htZW50KCpzcmNBdHRhY2htZW50LCBz
b3VyY2VBcmVhLCBkZXN0Rm9ybWF0SW5mby5mb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGVzdEZvcm1hdEluZm8udHlwZSwgbWFwcGVkSW1hZ2Uu
Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2w6OlBpeGVsUGFja1N0YXRlKCksIGRhdGFPZmZzZXQpOworICAgIH0KKwogICAgIHVubWFwKCk7
CiAgICAgbURpcnR5ID0gdHJ1ZTsKIApAQCAtNDAxLDExICszOTMsNyBAQAogICAgIC8vIE5vIGNv
bnZlcnNpb24gbmVlZGVkLS0gdXNlIGNvcHliYWNrIGZhc3RwYXRoCiAgICAgSUQzRDExUmVzb3Vy
Y2UgKnN0YWdpbmdUZXh0dXJlICAgICAgID0gbnVsbHB0cjsKICAgICB1bnNpZ25lZCBpbnQgc3Rh
Z2luZ1N1YnJlc291cmNlSW5kZXggPSAwOwotICAgIGdsOjpFcnJvciBlcnJvciA9IGdldFN0YWdp
bmdUZXh0dXJlKCZzdGFnaW5nVGV4dHVyZSwgJnN0YWdpbmdTdWJyZXNvdXJjZUluZGV4KTsKLSAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAg
IH0KKyAgICBBTkdMRV9UUlkoZ2V0U3RhZ2luZ1RleHR1cmUoJnN0YWdpbmdUZXh0dXJlLCAmc3Rh
Z2luZ1N1YnJlc291cmNlSW5kZXgpKTsKIAogICAgIElEM0QxMURldmljZSAqZGV2aWNlICAgICAg
ICAgICAgICAgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwogICAgIElEM0QxMURldmljZUNvbnRl
eHQgKmRldmljZUNvbnRleHQgPSBtUmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKTsKQEAgLTQ3
MCwyMCArNDU4LDE2IEBACiAgICAgfQogCiAgICAgbURpcnR5ID0gdHJ1ZTsKLSAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAog
Z2w6OkVycm9yIEltYWdlMTE6OmdldFN0YWdpbmdUZXh0dXJlKElEM0QxMVJlc291cmNlICoqb3V0
U3RhZ2luZ1RleHR1cmUsIHVuc2lnbmVkIGludCAqb3V0U3VicmVzb3VyY2VJbmRleCkKIHsKLSAg
ICBnbDo6RXJyb3IgZXJyb3IgPSBjcmVhdGVTdGFnaW5nVGV4dHVyZSgpOwotICAgIGlmIChlcnJv
ci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFO
R0xFX1RSWShjcmVhdGVTdGFnaW5nVGV4dHVyZSgpKTsKIAogICAgICpvdXRTdGFnaW5nVGV4dHVy
ZSA9IG1TdGFnaW5nVGV4dHVyZTsKICAgICAqb3V0U3VicmVzb3VyY2VJbmRleCA9IG1TdGFnaW5n
U3VicmVzb3VyY2U7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0
dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIHZvaWQgSW1hZ2UxMTo6cmVsZWFzZVN0YWdpbmdUZXh0
dXJlKCkKQEAgLTUyNyw3ICs1MTEsOCBAQAogICAgICAgICBkZXNjLkNQVUFjY2Vzc0ZsYWdzID0g
RDNEMTFfQ1BVX0FDQ0VTU19SRUFEIHwgRDNEMTFfQ1BVX0FDQ0VTU19XUklURTsKICAgICAgICAg
ZGVzYy5NaXNjRmxhZ3MgPSAwOwogCi0gICAgICAgIGlmIChkM2QxMTo6R2V0VGV4dHVyZUZvcm1h
dEluZm8obUludGVybmFsRm9ybWF0LCBtUmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBz
KCkpLmRhdGFJbml0aWFsaXplckZ1bmN0aW9uICE9IE5VTEwpCisgICAgICAgIGlmIChkM2QxMTo6
Rm9ybWF0OjpHZXQobUludGVybmFsRm9ybWF0LCBtUmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZp
Y2VDYXBzKCkpCisgICAgICAgICAgICAgICAgLmRhdGFJbml0aWFsaXplckZ1bmN0aW9uICE9IE5V
TEwpCiAgICAgICAgIHsKICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPEQzRDExX1NVQlJFU09VUkNF
X0RBVEE+IGluaXRpYWxEYXRhOwogICAgICAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8
QllURT4+IHRleHR1cmVEYXRhOwpAQCAtNTY3LDcgKzU1Miw4IEBACiAgICAgICAgIGRlc2MuQ1BV
QWNjZXNzRmxhZ3MgPSBEM0QxMV9DUFVfQUNDRVNTX1JFQUQgfCBEM0QxMV9DUFVfQUNDRVNTX1dS
SVRFOwogICAgICAgICBkZXNjLk1pc2NGbGFncyA9IDA7CiAKLSAgICAgICAgaWYgKGQzZDExOjpH
ZXRUZXh0dXJlRm9ybWF0SW5mbyhtSW50ZXJuYWxGb3JtYXQsIG1SZW5kZXJlci0+Z2V0UmVuZGVy
ZXIxMURldmljZUNhcHMoKSkuZGF0YUluaXRpYWxpemVyRnVuY3Rpb24gIT0gTlVMTCkKKyAgICAg
ICAgaWYgKGQzZDExOjpGb3JtYXQ6OkdldChtSW50ZXJuYWxGb3JtYXQsIG1SZW5kZXJlci0+Z2V0
UmVuZGVyZXIxMURldmljZUNhcHMoKSkKKyAgICAgICAgICAgICAgICAuZGF0YUluaXRpYWxpemVy
RnVuY3Rpb24gIT0gTlVMTCkKICAgICAgICAgewogICAgICAgICAgICAgc3RkOjp2ZWN0b3I8RDNE
MTFfU1VCUkVTT1VSQ0VfREFUQT4gaW5pdGlhbERhdGE7CiAgICAgICAgICAgICBzdGQ6OnZlY3Rv
cjxzdGQ6OnZlY3RvcjxCWVRFPj4gdGV4dHVyZURhdGE7CkBAIC02MDIsMTkgKzU4OCwxMSBAQAog
Z2w6OkVycm9yIEltYWdlMTE6Om1hcChEM0QxMV9NQVAgbWFwVHlwZSwgRDNEMTFfTUFQUEVEX1NV
QlJFU09VUkNFICptYXApCiB7CiAgICAgLy8gV2UgbXVzdCByZWNvdmVyIGZyb20gdGhlIFRleHR1
cmVTdG9yYWdlIGlmIG5lY2Vzc2FyeSwgZXZlbiBmb3IgRDNEMTFfTUFQX1dSSVRFLgotICAgIGds
OjpFcnJvciBlcnJvciA9IHJlY292ZXJGcm9tQXNzb2NpYXRlZFN0b3JhZ2UoKTsKLSAgICBpZiAo
ZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAg
ICBBTkdMRV9UUlkocmVjb3ZlckZyb21Bc3NvY2lhdGVkU3RvcmFnZSgpKTsKIAogICAgIElEM0Qx
MVJlc291cmNlICpzdGFnaW5nVGV4dHVyZSA9IE5VTEw7CiAgICAgdW5zaWduZWQgaW50IHN1YnJl
c291cmNlSW5kZXggPSAwOwotICAgIGVycm9yID0gZ2V0U3RhZ2luZ1RleHR1cmUoJnN0YWdpbmdU
ZXh0dXJlLCAmc3VicmVzb3VyY2VJbmRleCk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKGdldFN0YWdp
bmdUZXh0dXJlKCZzdGFnaW5nVGV4dHVyZSwgJnN1YnJlc291cmNlSW5kZXgpKTsKIAogICAgIElE
M0QxMURldmljZUNvbnRleHQgKmRldmljZUNvbnRleHQgPSBtUmVuZGVyZXItPmdldERldmljZUNv
bnRleHQoKTsKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9JbWFnZTExLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9JbWFnZTExLmgJKHJldmlz
aW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvSW1hZ2UxMS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw4ICs0NSwxMiBA
QAogCiAgICAgRFhHSV9GT1JNQVQgZ2V0RFhHSUZvcm1hdCgpIGNvbnN0OwogCi0gICAgdmlydHVh
bCBnbDo6RXJyb3IgbG9hZERhdGEoY29uc3QgZ2w6OkJveCAmYXJlYSwgY29uc3QgZ2w6OlBpeGVs
VW5wYWNrU3RhdGUgJnVucGFjaywgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKmlucHV0KTsKLSAg
ICB2aXJ0dWFsIGdsOjpFcnJvciBsb2FkQ29tcHJlc3NlZERhdGEoY29uc3QgZ2w6OkJveCAmYXJl
YSwgY29uc3Qgdm9pZCAqaW5wdXQpOworICAgIGdsOjpFcnJvciBsb2FkRGF0YShjb25zdCBnbDo6
Qm94ICZhcmVhLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tT
dGF0ZSAmdW5wYWNrLAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgYXBwbHlTa2lwSW1hZ2VzKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgbG9hZENv
bXByZXNzZWREYXRhKGNvbnN0IGdsOjpCb3ggJmFyZWEsIGNvbnN0IHZvaWQgKmlucHV0KSBvdmVy
cmlkZTsKIAogICAgIGdsOjpFcnJvciBjb3B5RnJvbVRleFN0b3JhZ2UoY29uc3QgZ2w6OkltYWdl
SW5kZXggJmltYWdlSW5kZXgsIFRleHR1cmVTdG9yYWdlICpzb3VyY2UpIG92ZXJyaWRlOwogICAg
IGdsOjpFcnJvciBjb3B5RnJvbUZyYW1lYnVmZmVyKGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZz
ZXQsCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL0lucHV0TGF5b3V0Q2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvSW5wdXRMYXlvdXRD
YWNoZS5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvSW5wdXRMYXlvdXRDYWNoZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzLDYgKzEzLDcgQEAKICNpbmNsdWRlICJjb21tb24vdXRpbGl0aWVzLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvUHJvZ3JhbS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1ZlcnRl
eEF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1ZlcnRleEFycmF5LmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL0luZGV4RGF0YU1hbmFnZXIuaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9kM2QvUHJvZ3JhbUQzRC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9WZXJ0ZXhEYXRhTWFuYWdlci5oIgpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9OYXRpdmVXaW5kb3cuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL05hdGl2ZVdpbmRvdy5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL05hdGl2ZVdpbmRv
dy5oCShub25leGlzdGVudCkKQEAgLTEsOTEgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykg
MjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIE5h
dGl2ZVdpbmRvdy5oOiBEZWZpbmVzIE5hdGl2ZVdpbmRvdywgYSBjbGFzcyBmb3IgbWFuYWdpbmcg
YW5kCi0vLyBwZXJmb3JtaW5nIG9wZXJhdGlvbnMgb24gYW4gRUdMTmF0aXZlV2luZG93VHlwZS4K
LS8vIEl0IGlzIHVzZWQgZm9yIEhXTkQgKERlc2t0b3AgV2luZG93cykgYW5kIElJbnNwZWN0YWJs
ZSBvYmplY3RzCi0vLyhXaW5kb3dzIFN0b3JlIEFwcGxpY2F0aW9ucykuCi0KLSNpZm5kZWYgTElC
QU5HTEVfUkVOREVSRVJfRDNEX0QzRDExX05BVElWRVdJTkRPV19IXwotI2RlZmluZSBMSUJBTkdM
RV9SRU5ERVJFUl9EM0RfRDNEMTFfTkFUSVZFV0lORE9XX0hfCi0KLSNpbmNsdWRlICJjb21tb24v
ZGVidWcuaCIKLSNpbmNsdWRlICJjb21tb24vcGxhdGZvcm0uaCIKLQotI2luY2x1ZGUgPEVHTC9l
Z2xwbGF0Zm9ybS5oPgotI2luY2x1ZGUgImxpYkFOR0xFL0NvbmZpZy5oIgotCi0vLyBEWEdJU3dh
cENoYWluIGFuZCBEWEdJRmFjdG9yeSBhcmUgdHlwZWRlZidkIHRvIHNwZWNpZmljIHJlcXVpcmVk
Ci0vLyB0eXBlcy4gVGhlIEhXTkQgTmF0aXZlV2luZG93IGltcGxlbWVudGF0aW9uIHJlcXVpcmVz
IElEWEdJU3dhcENoYWluCi0vLyBhbmQgSURYR0lGYWN0b3J5IGFuZCB0aGUgV2luZG93cyBTdG9y
ZSBOYXRpdmVXaW5kb3cKLS8vIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIElEWEdJU3dhcENoYWlu
MSBhbmQgSURYR0lGYWN0b3J5Mi4KLSNpZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9XSU5ET1dTX1NU
T1JFKQotdHlwZWRlZiBJRFhHSVN3YXBDaGFpbjEgRFhHSVN3YXBDaGFpbjsKLXR5cGVkZWYgSURY
R0lGYWN0b3J5MiBEWEdJRmFjdG9yeTsKLQotI2luY2x1ZGUgPHdybC5oPgotI2luY2x1ZGUgPHdy
bC93cmFwcGVycy9jb3Jld3JhcHBlcnMuaD4KLSNpbmNsdWRlIDx3aW5kb3dzLmFwcGxpY2F0aW9u
bW9kZWwuY29yZS5oPgotI2luY2x1ZGUgPG1lbW9yeT4KLQotbmFtZXNwYWNlIHJ4Ci17Ci1jbGFz
cyBJbnNwZWN0YWJsZU5hdGl2ZVdpbmRvdzsKLX0KLQotdXNpbmcgbmFtZXNwYWNlIE1pY3Jvc29m
dDo6V1JMOwotdXNpbmcgbmFtZXNwYWNlIE1pY3Jvc29mdDo6V1JMOjpXcmFwcGVyczsKLQotI2Vs
c2UKLXR5cGVkZWYgSURYR0lTd2FwQ2hhaW4gRFhHSVN3YXBDaGFpbjsKLXR5cGVkZWYgSURYR0lG
YWN0b3J5IERYR0lGYWN0b3J5OwotI2VuZGlmCi0KLXR5cGVkZWYgaW50ZXJmYWNlIElEQ29tcG9z
aXRpb25EZXZpY2UgSURDb21wb3NpdGlvbkRldmljZTsKLXR5cGVkZWYgaW50ZXJmYWNlIElEQ29t
cG9zaXRpb25UYXJnZXQgSURDb21wb3NpdGlvblRhcmdldDsKLXR5cGVkZWYgaW50ZXJmYWNlIElE
Q29tcG9zaXRpb25WaXN1YWwgSURDb21wb3NpdGlvblZpc3VhbDsKLQotbmFtZXNwYWNlIHJ4Ci17
Ci0KLWNsYXNzIE5hdGl2ZVdpbmRvdwotewotICBwdWJsaWM6Ci0gICAgZXhwbGljaXQgTmF0aXZl
V2luZG93KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGRpcmVjdENvbXBvc2l0aW9uKTsKLQotICAgIH5OYXRpdmVXaW5kb3coKTsKLSAgICBi
b29sIGluaXRpYWxpemUoKTsKLSAgICBib29sIGdldENsaWVudFJlY3QoTFBSRUNUIHJlY3QpOwot
ICAgIGJvb2wgaXNJY29uaWMoKTsKLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkTmF0aXZlV2luZG93
KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KTsKLQotICAgIEhSRVNVTFQgY3JlYXRlU3dhcENo
YWluKElEM0QxMURldmljZSogZGV2aWNlLCBEWEdJRmFjdG9yeSogZmFjdG9yeSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVCBmb3JtYXQsIFVJTlQgd2lkdGgsIFVJTlQg
aGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lTd2FwQ2hhaW4qKiBzd2Fw
Q2hhaW4pOwotCi0gICAgaW5saW5lIEVHTE5hdGl2ZVdpbmRvd1R5cGUgZ2V0TmF0aXZlV2luZG93
KCkgY29uc3QgeyByZXR1cm4gbVdpbmRvdzsgfQotCi0gICAgdm9pZCBjb21taXRDaGFuZ2UoKTsK
LQotICBwcml2YXRlOgotICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgbVdpbmRvdzsKLQotICAgIGJv
b2wgbURpcmVjdENvbXBvc2l0aW9uOwotICAgIElEQ29tcG9zaXRpb25EZXZpY2UgKm1EZXZpY2U7
Ci0gICAgSURDb21wb3NpdGlvblRhcmdldCAqbUNvbXBvc2l0aW9uVGFyZ2V0OwotICAgIElEQ29t
cG9zaXRpb25WaXN1YWwgKm1WaXN1YWw7Ci0gICAgY29uc3QgZWdsOjpDb25maWcgKm1Db25maWc7
Ci0jaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfV0lORE9XU19TVE9SRSkKLSAgICBzdGQ6OnNoYXJl
ZF9wdHI8SW5zcGVjdGFibGVOYXRpdmVXaW5kb3c+IG1JbXBsOwotI2VuZGlmCi0KLX07Ci0KLX0K
LQotI2VuZGlmIC8vIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9EM0QxMV9OQVRJVkVXSU5ET1dfSF8K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvTmF0aXZlV2luZG93MTEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL05hdGl2ZVdpbmRvdzExLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9OYXRpdmVXaW5kb3cxMS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MzcgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBOYXRpdmVXaW5kb3cxMS5oOiBEZWZpbmVzIE5hdGl2
ZVdpbmRvdzExLCBhIGNsYXNzIGZvciBtYW5hZ2luZyBhbmQgcGVyZm9ybWluZyBvcGVyYXRpb25z
IG9uIGFuCisvLyBFR0xOYXRpdmVXaW5kb3dUeXBlIGZvciB0aGUgRDNEMTEgcmVuZGVyZXIuCisK
KyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfRDNEX0QzRDExX05BVElWRVdJTkRPVzExX0hfCisj
ZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9EM0QxMV9OQVRJVkVXSU5ET1cxMV9IXworCisj
aW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisjaW5jbHVkZSAiY29tbW9uL3BsYXRmb3JtLmgiCisK
KyNpbmNsdWRlICJsaWJBTkdMRS9Db25maWcuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvTmF0aXZlV2luZG93RDNELmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBOYXRp
dmVXaW5kb3cxMSA6IHB1YmxpYyBOYXRpdmVXaW5kb3dEM0QKK3sKKyAgcHVibGljOgorICAgIE5h
dGl2ZVdpbmRvdzExKEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KSA6IE5hdGl2ZVdpbmRvd0Qz
RCh3aW5kb3cpIHt9CisKKyAgICB2aXJ0dWFsIEhSRVNVTFQgY3JlYXRlU3dhcENoYWluKElEM0Qx
MURldmljZSAqZGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSURY
R0lGYWN0b3J5ICpmYWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVQgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VUlOVCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQgaGVp
Z2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSURYR0lTd2FwQ2hhaW4g
Kipzd2FwQ2hhaW4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q2hhbmdlKCkgPSAwOwor
fTsKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX0Qz
RF9EM0QxMV9OQVRJVkVXSU5ET1cxMV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9QaXhlbFRyYW5zZmVyMTEuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvUGl4ZWxUcmFuc2ZlcjExLmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9QaXhlbFRy
YW5zZmVyMTEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsOCArMTk2LDkgQEAKICAgICBHTGVu
dW0gdW5zaXplZEZvcm1hdCA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oZGVzdGluYXRpb25G
b3JtYXQpLmZvcm1hdDsKICAgICBHTGVudW0gc291cmNlRm9ybWF0ID0gZ2w6OkdldFNpemVkSW50
ZXJuYWxGb3JtYXQodW5zaXplZEZvcm1hdCwgc291cmNlUGl4ZWxzVHlwZSk7CiAKLSAgICBjb25z
dCBkM2QxMTo6VGV4dHVyZUZvcm1hdCAmc291cmNlRm9ybWF0SW5mbyA9IGQzZDExOjpHZXRUZXh0
dXJlRm9ybWF0SW5mbyhzb3VyY2VGb3JtYXQsIG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmlj
ZUNhcHMoKSk7Ci0gICAgRFhHSV9GT1JNQVQgc3J2Rm9ybWF0ID0gc291cmNlRm9ybWF0SW5mby5m
b3JtYXRTZXQtPnNydkZvcm1hdDsKKyAgICBjb25zdCBkM2QxMTo6Rm9ybWF0ICZzb3VyY2VGb3Jt
YXRJbmZvID0KKyAgICAgICAgZDNkMTE6OkZvcm1hdDo6R2V0KHNvdXJjZUZvcm1hdCwgbVJlbmRl
cmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpKTsKKyAgICBEWEdJX0ZPUk1BVCBzcnZGb3Jt
YXQgPSBzb3VyY2VGb3JtYXRJbmZvLnNydkZvcm1hdDsKICAgICBBU1NFUlQoc3J2Rm9ybWF0ICE9
IERYR0lfRk9STUFUX1VOS05PV04pOwogICAgIEJ1ZmZlcjExICpidWZmZXJTdG9yYWdlMTEgPSBH
ZXRBczxCdWZmZXIxMT4oc291cmNlQnVmZmVyLmdldEltcGxlbWVudGF0aW9uKCkpOwogICAgIElE
M0QxMVNoYWRlclJlc291cmNlVmlldyAqYnVmZmVyU1JWID0gbnVsbHB0cjsKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUXVlcnkx
MS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9RdWVyeTExLmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9RdWVy
eTExLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNywxMiArNywxMyBAQAogLy8gUXVlcnkxMS5jcHA6
IERlZmluZXMgdGhlIHJ4OjpRdWVyeTExIGNsYXNzIHdoaWNoIGltcGxlbWVudHMgcng6OlF1ZXJ5
SW1wbC4KIAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9RdWVyeTExLmgi
CisKKyNpbmNsdWRlIDxHTEVTMi9nbDJleHQuaD4KKworI2luY2x1ZGUgImNvbW1vbi91dGlsaXRp
ZXMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyZXIxMS5o
IgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxz
LmgiCi0jaW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5oIgogCi0jaW5jbHVkZSA8R0xFUzIvZ2wy
ZXh0Lmg+Ci0KIG5hbWVzcGFjZQogewogCkBAIC0zMyw2ICszNCw5IEBACiAgICAgICAgIGNhc2Ug
R0xfVElNRVNUQU1QX0VYVDoKICAgICAgICAgICAgIHJldHVybiBuZXdSZXN1bHQ7CiAKKyAgICAg
ICAgY2FzZSBHTF9DT01NQU5EU19DT01QTEVURURfQ0hST01JVU06CisgICAgICAgICAgICByZXR1
cm4gbmV3UmVzdWx0OworCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBVTlJFQUNIQUJM
RSgpOwogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC05MiwxNyArOTYsMTEgQEAKIGdsOjpFcnJv
ciBRdWVyeTExOjpnZXRSZXN1bHRCYXNlKFQgKnBhcmFtcykKIHsKICAgICBBU1NFUlQobUFjdGl2
ZVF1ZXJ5LT5xdWVyeSA9PSBudWxscHRyKTsKLQotICAgIGdsOjpFcnJvciBlcnJvciA9IGZsdXNo
KHRydWUpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4g
ZXJyb3I7Ci0gICAgfQotCisgICAgQU5HTEVfVFJZKGZsdXNoKHRydWUpKTsKICAgICBBU1NFUlQo
bVBlbmRpbmdRdWVyaWVzLmVtcHR5KCkpOwogICAgICpwYXJhbXMgPSBzdGF0aWNfY2FzdDxUPiht
UmVzdWx0U3VtKTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJl
dHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgUXVlcnkxMTo6Z2V0UmVzdWx0KEdM
aW50ICpwYXJhbXMpCkBAIC0xMjcsMTQgKzEyNSwxMCBAQAogCiBnbDo6RXJyb3IgUXVlcnkxMTo6
aXNSZXN1bHRBdmFpbGFibGUoYm9vbCAqYXZhaWxhYmxlKQogewotICAgIGdsOjpFcnJvciBlcnJv
ciA9IGZsdXNoKGZhbHNlKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkoZmx1c2goZmFsc2UpKTsKIAog
ICAgICphdmFpbGFibGUgPSBtUGVuZGluZ1F1ZXJpZXMuZW1wdHkoKTsKLSAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6
OkVycm9yIFF1ZXJ5MTE6OnBhdXNlKCkKQEAgLTE0Miw5ICsxMzYsMTAgQEAKICAgICBpZiAobUFj
dGl2ZVF1ZXJ5LT5xdWVyeSAhPSBudWxscHRyKQogICAgIHsKICAgICAgICAgSUQzRDExRGV2aWNl
Q29udGV4dCAqY29udGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpOworICAgICAg
ICBHTGVudW0gcXVlcnlUeXBlICAgICAgICAgICAgID0gZ2V0VHlwZSgpOwogCiAgICAgICAgIC8v
IElmIHdlIGFyZSBkb2luZyB0aW1lIGVsYXBzZWQgcXVlcnkgdGhlIGVuZCB0aW1lc3RhbXAKLSAg
ICAgICAgaWYgKGdldFR5cGUoKSA9PSBHTF9USU1FX0VMQVBTRURfRVhUKQorICAgICAgICBpZiAo
cXVlcnlUeXBlID09IEdMX1RJTUVfRUxBUFNFRF9FWFQpCiAgICAgICAgIHsKICAgICAgICAgICAg
IGNvbnRleHQtPkVuZChtQWN0aXZlUXVlcnktPmVuZFRpbWVzdGFtcCk7CiAgICAgICAgIH0KQEAg
LTE2MiwxNCArMTU3LDEzIEBACiB7CiAgICAgaWYgKG1BY3RpdmVRdWVyeS0+cXVlcnkgPT0gbnVs
bHB0cikKICAgICB7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGZsdXNoKGZhbHNlKTsKLSAg
ICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IGVycm9yOwotICAgICAgICB9CisgICAgICAgIEFOR0xFX1RSWShmbHVzaChmYWxzZSkpOwogCisg
ICAgICAgIEdMZW51bSBxdWVyeVR5cGUgICAgICAgICA9IGdldFR5cGUoKTsKKyAgICAgICAgRDNE
MTFfUVVFUlkgZDNkUXVlcnlUeXBlID0gZ2xfZDNkMTE6OkNvbnZlcnRRdWVyeVR5cGUocXVlcnlU
eXBlKTsKKwogICAgICAgICBEM0QxMV9RVUVSWV9ERVNDIHF1ZXJ5RGVzYzsKLSAgICAgICAgcXVl
cnlEZXNjLlF1ZXJ5ICAgICA9IGdsX2QzZDExOjpDb252ZXJ0UXVlcnlUeXBlKGdldFR5cGUoKSk7
CisgICAgICAgIHF1ZXJ5RGVzYy5RdWVyeSAgICAgPSBkM2RRdWVyeVR5cGU7CiAgICAgICAgIHF1
ZXJ5RGVzYy5NaXNjRmxhZ3MgPSAwOwogCiAgICAgICAgIElEM0QxMURldmljZSAqZGV2aWNlID0g
bVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKQEAgLTE4Miw3ICsxNzYsNyBAQAogICAgICAgICB9CiAK
ICAgICAgICAgLy8gSWYgd2UgYXJlIGRvaW5nIHRpbWUgZWxhcHNlZCB3ZSBhbHNvIG5lZWQgYSBx
dWVyeSB0byBhY3R1YWxseSBxdWVyeSB0aGUgdGltZXN0YW1wCi0gICAgICAgIGlmIChnZXRUeXBl
KCkgPT0gR0xfVElNRV9FTEFQU0VEX0VYVCkKKyAgICAgICAgaWYgKHF1ZXJ5VHlwZSA9PSBHTF9U
SU1FX0VMQVBTRURfRVhUKQogICAgICAgICB7CiAgICAgICAgICAgICBEM0QxMV9RVUVSWV9ERVND
IGRlc2M7CiAgICAgICAgICAgICBkZXNjLlF1ZXJ5ICAgICA9IEQzRDExX1FVRVJZX1RJTUVTVEFN
UDsKQEAgLTIwMywxMCArMTk3LDEzIEBACiAKICAgICAgICAgSUQzRDExRGV2aWNlQ29udGV4dCAq
Y29udGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpOwogCi0gICAgICAgIGNvbnRl
eHQtPkJlZ2luKG1BY3RpdmVRdWVyeS0+cXVlcnkpOworICAgICAgICBpZiAoZDNkUXVlcnlUeXBl
ICE9IEQzRDExX1FVRVJZX0VWRU5UKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5C
ZWdpbihtQWN0aXZlUXVlcnktPnF1ZXJ5KTsKKyAgICAgICAgfQogCiAgICAgICAgIC8vIElmIHdl
IGFyZSBkb2luZyB0aW1lIGVsYXBzZWQsIHF1ZXJ5IHRoZSBiZWdpbiB0aW1lc3RhbXAKLSAgICAg
ICAgaWYgKGdldFR5cGUoKSA9PSBHTF9USU1FX0VMQVBTRURfRVhUKQorICAgICAgICBpZiAocXVl
cnlUeXBlID09IEdMX1RJTUVfRUxBUFNFRF9FWFQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNv
bnRleHQtPkVuZChtQWN0aXZlUXVlcnktPmJlZ2luVGltZXN0YW1wKTsKICAgICAgICAgfQpAQCAt
MjIzLDExICsyMjAsNyBAQAogCiAgICAgICAgIGRvCiAgICAgICAgIHsKLSAgICAgICAgICAgIGds
OjpFcnJvciBlcnJvciA9IHRlc3RRdWVyeShxdWVyeSk7Ci0gICAgICAgICAgICBpZiAoZXJyb3Iu
aXNFcnJvcigpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsK
LSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFOR0xFX1RSWSh0ZXN0UXVlcnkocXVlcnkpKTsK
ICAgICAgICAgICAgIGlmICghcXVlcnktPmZpbmlzaGVkICYmICFmb3JjZSkKICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKQEAgLTIz
OCw3ICsyMzEsNyBAQAogICAgICAgICBtUGVuZGluZ1F1ZXJpZXMucG9wX2Zyb250KCk7CiAgICAg
fQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBRdWVyeTExOjp0ZXN0UXVlcnkoUXVlcnlTdGF0ZSAq
cXVlcnlTdGF0ZSkKQEAgLTMzMSw5ICszMjQsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFVJTlQ2NCkg
PT0gc2l6ZW9mKHVuc2lnbmVkIGxvbmcgbG9uZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJEM0QgVUlOVDY0IGlzbid0IDY0IGJpdHMiKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChyeDo6SXNVbnNpZ25lZE11bHRpcGxpY2F0aW9uU2FmZShlbmRUaW1lIC0g
YmVnaW5UaW1lLCAxMDAwMDAwMDAwdWxsKSkKKworICAgICAgICAgICAgICAgICAgICAgICAgYW5n
bGU6OkNoZWNrZWROdW1lcmljPFVJTlQ2ND4gY2hlY2tlZFRpbWUoZW5kVGltZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBjaGVja2VkVGltZSAtPSBiZWdpblRpbWU7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjaGVja2VkVGltZSAqPSAxMDAwMDAwMDAwdWxsOworICAgICAgICAgICAgICAg
ICAgICAgICAgY2hlY2tlZFRpbWUgLz0gdGltZVN0YXRzLkZyZXF1ZW5jeTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChjaGVja2VkVGltZS5Jc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbVJlc3VsdCA9ICgoZW5kVGlt
ZSAtIGJlZ2luVGltZSkgKiAxMDAwMDAwMDAwdWxsKSAvIHRpbWVTdGF0cy5GcmVxdWVuY3k7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbVJlc3VsdCA9IGNoZWNrZWRUaW1lLlZhbHVlT3JE
aWUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHsKQEAgLTM1OCw2ICszNTYsMjggQEAKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICBjYXNlIEdMX0NP
TU1BTkRTX0NPTVBMRVRFRF9DSFJPTUlVTToKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQocXVlcnlTdGF0ZS0+cXVlcnkpOworICAgICAgICAgICAgICAgIEJPT0wgY29tcGxl
dGVkID0gMDsKKyAgICAgICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQtPkdldERhdGEocXVlcnlTdGF0ZS0+cXVlcnksICZjb21wbGV0ZWQsIHNp
emVvZihjb21wbGV0ZWQpLCAwKTsKKyAgICAgICAgICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX09VVF9PRl9NRU1PUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IkZhaWxlZCB0byBnZXQgdGhlIGRhdGEgb2YgYW4gaW50ZXJuYWwgcXVlcnksIHJlc3VsdDogMHgl
WC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCk7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBTX09LKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcXVlcnlTdGF0ZS0+ZmluaXNoZWQg
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY29tcGxldGVkID09IFRSVUUpOwor
ICAgICAgICAgICAgICAgICAgICBtUmVzdWx0ID0gKGNvbXBsZXRlZCA9PSBUUlVFKSA/IEdMX1RS
VUUgOiBHTF9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKKwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgVU5SRUFDSEFCTEUo
KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzcwLDcgKzM5MCw3IEBACiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6
Ok5vRXJyb3IoKTsKIH0KIAotfQorfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclN0YXRl
Q2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyU3RhdGVDYWNoZS5jcHAJKHJldmlzaW9uIDIw
ODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvUmVuZGVyU3RhdGVDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzNiw3ICs0
MzYsOCBAQAogICAgICAgICBzYW1wbGVyRGVzYy5BZGRyZXNzViA9IGdsX2QzZDExOjpDb252ZXJ0
VGV4dHVyZVdyYXAoc2FtcGxlclN0YXRlLndyYXBUKTsKICAgICAgICAgc2FtcGxlckRlc2MuQWRk
cmVzc1cgPSBnbF9kM2QxMTo6Q29udmVydFRleHR1cmVXcmFwKHNhbXBsZXJTdGF0ZS53cmFwUik7
CiAgICAgICAgIHNhbXBsZXJEZXNjLk1pcExPREJpYXMgPSAwOwotICAgICAgICBzYW1wbGVyRGVz
Yy5NYXhBbmlzb3Ryb3B5ID0gc3RhdGljX2Nhc3Q8VUlOVD4oc2FtcGxlclN0YXRlLm1heEFuaXNv
dHJvcHkpOworICAgICAgICBzYW1wbGVyRGVzYy5NYXhBbmlzb3Ryb3B5ID0KKyAgICAgICAgICAg
IGdsX2QzZDExOjpDb252ZXJ0TWF4QW5pc290cm9weShzYW1wbGVyU3RhdGUubWF4QW5pc290cm9w
eSwgbURldmljZS0+R2V0RmVhdHVyZUxldmVsKCkpOwogICAgICAgICBzYW1wbGVyRGVzYy5Db21w
YXJpc29uRnVuYyA9IGdsX2QzZDExOjpDb252ZXJ0Q29tcGFyaXNvbihzYW1wbGVyU3RhdGUuY29t
cGFyZUZ1bmMpOwogICAgICAgICBzYW1wbGVyRGVzYy5Cb3JkZXJDb2xvclswXSA9IDAuMGY7CiAg
ICAgICAgIHNhbXBsZXJEZXNjLkJvcmRlckNvbG9yWzFdID0gMC4wZjsKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyVGFy
Z2V0MTEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyVGFyZ2V0MTEuY3BwCShyZXZpc2lvbiAyMDgw
MjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL1JlbmRlclRhcmdldDExLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgsOCArMTgsMTAg
QEAKIG5hbWVzcGFjZSByeAogewogCi1zdGF0aWMgYm9vbCBnZXRUZXh0dXJlUHJvcGVydGllcyhJ
RDNEMTFSZXNvdXJjZSAqcmVzb3VyY2UsIHVuc2lnbmVkIGludCAqbWlwTGV2ZWxzLCB1bnNpZ25l
ZCBpbnQgKnNhbXBsZXMpCituYW1lc3BhY2UKIHsKK2Jvb2wgR2V0VGV4dHVyZVByb3BlcnRpZXMo
SUQzRDExUmVzb3VyY2UgKnJlc291cmNlLCB1bnNpZ25lZCBpbnQgKm1pcExldmVscywgdW5zaWdu
ZWQgaW50ICpzYW1wbGVzKQorewogICAgIElEM0QxMVRleHR1cmUxRCAqdGV4dHVyZTFEID0gZDNk
MTE6OkR5bmFtaWNDYXN0Q29tT2JqZWN0PElEM0QxMVRleHR1cmUxRD4ocmVzb3VyY2UpOwogICAg
IGlmICh0ZXh0dXJlMUQpCiAgICAgewpAQCAtNjIsNyArNjQsNyBAQAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotc3RhdGljIHVuc2lnbmVkIGludCBnZXRSVFZTdWJyZXNvdXJjZUluZGV4KElEM0Qx
MVJlc291cmNlICpyZXNvdXJjZSwgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqdmlldykKK3Vuc2ln
bmVkIGludCBHZXRSVFZTdWJyZXNvdXJjZUluZGV4KElEM0QxMVJlc291cmNlICpyZXNvdXJjZSwg
SUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqdmlldykKIHsKICAgICBEM0QxMV9SRU5ERVJfVEFSR0VU
X1ZJRVdfREVTQyBydHZEZXNjOwogICAgIHZpZXctPkdldERlc2MoJnJ0dkRlc2MpOwpAQCAtNzIs
NTggKzc0LDU4IEBACiAKICAgICBzd2l0Y2ggKHJ0dkRlc2MuVmlld0RpbWVuc2lvbikKICAgICB7
Ci0gICAgICBjYXNlIEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTFEOgotICAgICAgICBtaXBT
bGljZSA9IHJ0dkRlc2MuVGV4dHVyZTFELk1pcFNsaWNlOwotICAgICAgICBhcnJheVNsaWNlID0g
MDsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRDNEMTFfUlRWX0RJTUVOU0lPTl9URVhU
VVJFMUQ6CisgICAgICAgICAgICBtaXBTbGljZSAgID0gcnR2RGVzYy5UZXh0dXJlMUQuTWlwU2xp
Y2U7CisgICAgICAgICAgICBhcnJheVNsaWNlID0gMDsKKyAgICAgICAgICAgIGJyZWFrOwogCi0g
ICAgICBjYXNlIEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTFEQVJSQVk6Ci0gICAgICAgIG1p
cFNsaWNlID0gcnR2RGVzYy5UZXh0dXJlMURBcnJheS5NaXBTbGljZTsKLSAgICAgICAgYXJyYXlT
bGljZSA9IHJ0dkRlc2MuVGV4dHVyZTFEQXJyYXkuRmlyc3RBcnJheVNsaWNlOwotICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBEM0QxMV9SVFZfRElNRU5TSU9OX1RFWFRVUkUxREFSUkFZOgor
ICAgICAgICAgICAgbWlwU2xpY2UgICA9IHJ0dkRlc2MuVGV4dHVyZTFEQXJyYXkuTWlwU2xpY2U7
CisgICAgICAgICAgICBhcnJheVNsaWNlID0gcnR2RGVzYy5UZXh0dXJlMURBcnJheS5GaXJzdEFy
cmF5U2xpY2U7CisgICAgICAgICAgICBicmVhazsKIAotICAgICAgY2FzZSBEM0QxMV9SVFZfRElN
RU5TSU9OX1RFWFRVUkUyRDoKLSAgICAgICAgbWlwU2xpY2UgPSBydHZEZXNjLlRleHR1cmUyRC5N
aXBTbGljZTsKLSAgICAgICAgYXJyYXlTbGljZSA9IDA7Ci0gICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTJEOgorICAgICAgICAgICAgbWlwU2xp
Y2UgICA9IHJ0dkRlc2MuVGV4dHVyZTJELk1pcFNsaWNlOworICAgICAgICAgICAgYXJyYXlTbGlj
ZSA9IDA7CisgICAgICAgICAgICBicmVhazsKIAotICAgICAgY2FzZSBEM0QxMV9SVFZfRElNRU5T
SU9OX1RFWFRVUkUyREFSUkFZOgotICAgICAgICBtaXBTbGljZSA9IHJ0dkRlc2MuVGV4dHVyZTJE
QXJyYXkuTWlwU2xpY2U7Ci0gICAgICAgIGFycmF5U2xpY2UgPSBydHZEZXNjLlRleHR1cmUyREFy
cmF5LkZpcnN0QXJyYXlTbGljZTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRDNEMTFf
UlRWX0RJTUVOU0lPTl9URVhUVVJFMkRBUlJBWToKKyAgICAgICAgICAgIG1pcFNsaWNlICAgPSBy
dHZEZXNjLlRleHR1cmUyREFycmF5Lk1pcFNsaWNlOworICAgICAgICAgICAgYXJyYXlTbGljZSA9
IHJ0dkRlc2MuVGV4dHVyZTJEQXJyYXkuRmlyc3RBcnJheVNsaWNlOworICAgICAgICAgICAgYnJl
YWs7CiAKLSAgICAgIGNhc2UgRDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJFMkRNUzoKLSAgICAg
ICAgbWlwU2xpY2UgPSAwOwotICAgICAgICBhcnJheVNsaWNlID0gMDsKLSAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgRDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJFMkRNUzoKKyAgICAgICAg
ICAgIG1pcFNsaWNlICAgPSAwOworICAgICAgICAgICAgYXJyYXlTbGljZSA9IDA7CisgICAgICAg
ICAgICBicmVhazsKIAotICAgICAgY2FzZSBEM0QxMV9SVFZfRElNRU5TSU9OX1RFWFRVUkUyRE1T
QVJSQVk6Ci0gICAgICAgIG1pcFNsaWNlID0gMDsKLSAgICAgICAgYXJyYXlTbGljZSA9IHJ0dkRl
c2MuVGV4dHVyZTJETVNBcnJheS5GaXJzdEFycmF5U2xpY2U7Ci0gICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTJETVNBUlJBWToKKyAgICAgICAg
ICAgIG1pcFNsaWNlICAgPSAwOworICAgICAgICAgICAgYXJyYXlTbGljZSA9IHJ0dkRlc2MuVGV4
dHVyZTJETVNBcnJheS5GaXJzdEFycmF5U2xpY2U7CisgICAgICAgICAgICBicmVhazsKIAotICAg
ICAgY2FzZSBEM0QxMV9SVFZfRElNRU5TSU9OX1RFWFRVUkUzRDoKLSAgICAgICAgbWlwU2xpY2Ug
PSBydHZEZXNjLlRleHR1cmUzRC5NaXBTbGljZTsKLSAgICAgICAgYXJyYXlTbGljZSA9IDA7Ci0g
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTNE
OgorICAgICAgICAgICAgbWlwU2xpY2UgICA9IHJ0dkRlc2MuVGV4dHVyZTNELk1pcFNsaWNlOwor
ICAgICAgICAgICAgYXJyYXlTbGljZSA9IDA7CisgICAgICAgICAgICBicmVhazsKIAotICAgICAg
Y2FzZSBEM0QxMV9SVFZfRElNRU5TSU9OX1VOS05PV046Ci0gICAgICBjYXNlIEQzRDExX1JUVl9E
SU1FTlNJT05fQlVGRkVSOgotICAgICAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEQzRDExX1JUVl9ESU1FTlNJT05fVU5LTk9XTjoKKyAgICAgICAgY2Fz
ZSBEM0QxMV9SVFZfRElNRU5TSU9OX0JVRkZFUjoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQo
KTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICBkZWZhdWx0OgotICAgICAgICBVTlJFQUNI
QUJMRSgpOwotICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBicmVhazsKICAgICB9CiAKICAgICB1bnNpZ25lZCBp
bnQgbWlwTGV2ZWxzLCBzYW1wbGVzOwotICAgIGdldFRleHR1cmVQcm9wZXJ0aWVzKHJlc291cmNl
LCAgJm1pcExldmVscywgJnNhbXBsZXMpOworICAgIEdldFRleHR1cmVQcm9wZXJ0aWVzKHJlc291
cmNlLCAmbWlwTGV2ZWxzLCAmc2FtcGxlcyk7CiAKICAgICByZXR1cm4gRDNEMTFDYWxjU3VicmVz
b3VyY2UobWlwU2xpY2UsIGFycmF5U2xpY2UsIG1pcExldmVscyk7CiB9CiAKLXN0YXRpYyB1bnNp
Z25lZCBpbnQgZ2V0RFNWU3VicmVzb3VyY2VJbmRleChJRDNEMTFSZXNvdXJjZSAqcmVzb3VyY2Us
IElEM0QxMURlcHRoU3RlbmNpbFZpZXcgKnZpZXcpCit1bnNpZ25lZCBpbnQgR2V0RFNWU3VicmVz
b3VyY2VJbmRleChJRDNEMTFSZXNvdXJjZSAqcmVzb3VyY2UsIElEM0QxMURlcHRoU3RlbmNpbFZp
ZXcgKnZpZXcpCiB7CiAgICAgRDNEMTFfREVQVEhfU1RFTkNJTF9WSUVXX0RFU0MgZHN2RGVzYzsK
ICAgICB2aWV3LT5HZXREZXNjKCZkc3ZEZXNjKTsKQEAgLTEzMyw3NiArMTM1LDgwIEBACiAKICAg
ICBzd2l0Y2ggKGRzdkRlc2MuVmlld0RpbWVuc2lvbikKICAgICB7Ci0gICAgICBjYXNlIEQzRDEx
X0RTVl9ESU1FTlNJT05fVEVYVFVSRTFEOgotICAgICAgICBtaXBTbGljZSA9IGRzdkRlc2MuVGV4
dHVyZTFELk1pcFNsaWNlOwotICAgICAgICBhcnJheVNsaWNlID0gMDsKLSAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgRDNEMTFfRFNWX0RJTUVOU0lPTl9URVhUVVJFMUQ6CisgICAgICAgICAg
ICBtaXBTbGljZSAgID0gZHN2RGVzYy5UZXh0dXJlMUQuTWlwU2xpY2U7CisgICAgICAgICAgICBh
cnJheVNsaWNlID0gMDsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICBjYXNlIEQzRDExX0RT
Vl9ESU1FTlNJT05fVEVYVFVSRTFEQVJSQVk6Ci0gICAgICAgIG1pcFNsaWNlID0gZHN2RGVzYy5U
ZXh0dXJlMURBcnJheS5NaXBTbGljZTsKLSAgICAgICAgYXJyYXlTbGljZSA9IGRzdkRlc2MuVGV4
dHVyZTFEQXJyYXkuRmlyc3RBcnJheVNsaWNlOwotICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBEM0QxMV9EU1ZfRElNRU5TSU9OX1RFWFRVUkUxREFSUkFZOgorICAgICAgICAgICAgbWlwU2xp
Y2UgICA9IGRzdkRlc2MuVGV4dHVyZTFEQXJyYXkuTWlwU2xpY2U7CisgICAgICAgICAgICBhcnJh
eVNsaWNlID0gZHN2RGVzYy5UZXh0dXJlMURBcnJheS5GaXJzdEFycmF5U2xpY2U7CisgICAgICAg
ICAgICBicmVhazsKIAotICAgICAgY2FzZSBEM0QxMV9EU1ZfRElNRU5TSU9OX1RFWFRVUkUyRDoK
LSAgICAgICAgbWlwU2xpY2UgPSBkc3ZEZXNjLlRleHR1cmUyRC5NaXBTbGljZTsKLSAgICAgICAg
YXJyYXlTbGljZSA9IDA7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEQzRDExX0RTVl9E
SU1FTlNJT05fVEVYVFVSRTJEOgorICAgICAgICAgICAgbWlwU2xpY2UgICA9IGRzdkRlc2MuVGV4
dHVyZTJELk1pcFNsaWNlOworICAgICAgICAgICAgYXJyYXlTbGljZSA9IDA7CisgICAgICAgICAg
ICBicmVhazsKIAotICAgICAgY2FzZSBEM0QxMV9EU1ZfRElNRU5TSU9OX1RFWFRVUkUyREFSUkFZ
OgotICAgICAgICBtaXBTbGljZSA9IGRzdkRlc2MuVGV4dHVyZTJEQXJyYXkuTWlwU2xpY2U7Ci0g
ICAgICAgIGFycmF5U2xpY2UgPSBkc3ZEZXNjLlRleHR1cmUyREFycmF5LkZpcnN0QXJyYXlTbGlj
ZTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRDNEMTFfRFNWX0RJTUVOU0lPTl9URVhU
VVJFMkRBUlJBWToKKyAgICAgICAgICAgIG1pcFNsaWNlICAgPSBkc3ZEZXNjLlRleHR1cmUyREFy
cmF5Lk1pcFNsaWNlOworICAgICAgICAgICAgYXJyYXlTbGljZSA9IGRzdkRlc2MuVGV4dHVyZTJE
QXJyYXkuRmlyc3RBcnJheVNsaWNlOworICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgIGNhc2Ug
RDNEMTFfRFNWX0RJTUVOU0lPTl9URVhUVVJFMkRNUzoKLSAgICAgICAgbWlwU2xpY2UgPSAwOwot
ICAgICAgICBhcnJheVNsaWNlID0gMDsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRDNE
MTFfRFNWX0RJTUVOU0lPTl9URVhUVVJFMkRNUzoKKyAgICAgICAgICAgIG1pcFNsaWNlICAgPSAw
OworICAgICAgICAgICAgYXJyYXlTbGljZSA9IDA7CisgICAgICAgICAgICBicmVhazsKIAotICAg
ICAgY2FzZSBEM0QxMV9EU1ZfRElNRU5TSU9OX1RFWFRVUkUyRE1TQVJSQVk6Ci0gICAgICAgIG1p
cFNsaWNlID0gMDsKLSAgICAgICAgYXJyYXlTbGljZSA9IGRzdkRlc2MuVGV4dHVyZTJETVNBcnJh
eS5GaXJzdEFycmF5U2xpY2U7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEQzRDExX0RT
Vl9ESU1FTlNJT05fVEVYVFVSRTJETVNBUlJBWToKKyAgICAgICAgICAgIG1pcFNsaWNlICAgPSAw
OworICAgICAgICAgICAgYXJyYXlTbGljZSA9IGRzdkRlc2MuVGV4dHVyZTJETVNBcnJheS5GaXJz
dEFycmF5U2xpY2U7CisgICAgICAgICAgICBicmVhazsKIAotICAgICAgY2FzZSBEM0QxMV9EU1Zf
RElNRU5TSU9OX1VOS05PV046Ci0gICAgICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgRDNEMTFfRFNWX0RJTUVOU0lPTl9VTktOT1dOOgorICAgICAgICAg
ICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgIH0K
IAogICAgIHVuc2lnbmVkIGludCBtaXBMZXZlbHMsIHNhbXBsZXM7Ci0gICAgZ2V0VGV4dHVyZVBy
b3BlcnRpZXMocmVzb3VyY2UsICZtaXBMZXZlbHMsICZzYW1wbGVzKTsKKyAgICBHZXRUZXh0dXJl
UHJvcGVydGllcyhyZXNvdXJjZSwgJm1pcExldmVscywgJnNhbXBsZXMpOwogCiAgICAgcmV0dXJu
IEQzRDExQ2FsY1N1YnJlc291cmNlKG1pcFNsaWNlLCBhcnJheVNsaWNlLCBtaXBMZXZlbHMpOwog
fQogCi1SZW5kZXJUYXJnZXQxMTo6UmVuZGVyVGFyZ2V0MTEoZDNkMTE6OkFOR0xFRm9ybWF0IGFu
Z2xlRm9ybWF0KSA6IG1BTkdMRUZvcm1hdChhbmdsZUZvcm1hdCkKK0dMZW51bSBHZXRTdXJmYWNl
UlRGb3JtYXQoYm9vbCBkZXB0aCwgU3dhcENoYWluMTEgKnN3YXBDaGFpbikKIHsKKyAgICByZXR1
cm4gKGRlcHRoID8gc3dhcENoYWluLT5nZXREZXB0aEJ1ZmZlckludGVybmFsRm9ybWF0KCkKKyAg
ICAgICAgICAgICAgICAgIDogc3dhcENoYWluLT5nZXRSZW5kZXJUYXJnZXRJbnRlcm5hbEZvcm1h
dCgpKTsKIH0KIAotUmVuZGVyVGFyZ2V0MTE6On5SZW5kZXJUYXJnZXQxMSgpCitjb25zdCBkM2Qx
MTo6Rm9ybWF0ICZHZXRTdXJmYWNlRm9ybWF0U2V0KGJvb2wgZGVwdGgsIFN3YXBDaGFpbjExICpz
d2FwQ2hhaW4sIFJlbmRlcmVyMTEgKnJlbmRlcmVyKQogewotICAgIHNpZ25hbERpcnR5KCk7Cisg
ICAgcmV0dXJuIGQzZDExOjpGb3JtYXQ6OkdldChHZXRTdXJmYWNlUlRGb3JtYXQoZGVwdGgsIHN3
YXBDaGFpbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJlci0+Z2V0UmVu
ZGVyZXIxMURldmljZUNhcHMoKSk7CiB9CiAKLXZvaWQgUmVuZGVyVGFyZ2V0MTE6OmFkZERpcnR5
Q2FsbGJhY2soY29uc3QgTm90aWZpY2F0aW9uQ2FsbGJhY2sgKmNhbGxiYWNrKQorfSAgLy8gYW5v
bnltb3VzIG5hbWVzcGFjZQorCitSZW5kZXJUYXJnZXQxMTo6UmVuZGVyVGFyZ2V0MTEoY29uc3Qg
ZDNkMTE6OkZvcm1hdCAmZm9ybWF0U2V0KSA6IG1Gb3JtYXRTZXQoZm9ybWF0U2V0KQogewotICAg
IG1EaXJ0eUNhbGxiYWNrcy5hZGQoY2FsbGJhY2spOwogfQogCi12b2lkIFJlbmRlclRhcmdldDEx
OjpyZW1vdmVEaXJ0eUNhbGxiYWNrKGNvbnN0IE5vdGlmaWNhdGlvbkNhbGxiYWNrICpjYWxsYmFj
aykKK1JlbmRlclRhcmdldDExOjp+UmVuZGVyVGFyZ2V0MTEoKQogewotICAgIG1EaXJ0eUNhbGxi
YWNrcy5yZW1vdmUoY2FsbGJhY2spOworICAgIHNpZ25hbERpcnR5KCk7CiB9CiAKIHZvaWQgUmVu
ZGVyVGFyZ2V0MTE6OnNpZ25hbERpcnR5KCkKIHsKLSAgICBtRGlydHlDYWxsYmFja3Muc2lnbmFs
KCk7CisgICAgbUJyb2FkY2FzdENoYW5uZWwuc2lnbmFsKCk7CiAKLSAgICAvLyBDbGVhciB0aGUg
c2lnbmFsIGxpc3QuIFdlIGNhbid0IGRvIHRoaXMgaW4gdGhlIGNhbGxiYWNrIGJlY2F1c2UgaXQg
bXV0YXRlcyB0aGUgaXRlcmF0b3IuCi0gICAgbURpcnR5Q2FsbGJhY2tzLmNsZWFyKCk7CisgICAg
Ly8gQ2xlYXIgdGhlIGxpc3QuIFdlIGNhbid0IGRvIHRoaXMgaW4gdGhlIHJlY2VpdmVyIGJlY2F1
c2UgaXQgd291bGQgbXV0YXRlIGR1cmluZyBpdGVyYXRpb24uCisgICAgbUJyb2FkY2FzdENoYW5u
ZWwucmVzZXQoKTsKIH0KIAogVGV4dHVyZVJlbmRlclRhcmdldDExOjpUZXh0dXJlUmVuZGVyVGFy
Z2V0MTEoSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqcnR2LApAQCAtMjEwLDEyICsyMTYsMTIgQEAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMVNoYWRl
clJlc291cmNlVmlldyAqc3J2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpibGl0U1JWLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDNkMTE6OkFOR0xF
Rm9ybWF0IGFuZ2xlRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZDNkMTE6OkZvcm1hdCAmZm9ybWF0U2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxl
cykKLSAgICA6IFJlbmRlclRhcmdldDExKGFuZ2xlRm9ybWF0KSwKKyAgICA6IFJlbmRlclRhcmdl
dDExKGZvcm1hdFNldCksCiAgICAgICBtV2lkdGgod2lkdGgpLAogICAgICAgbUhlaWdodChoZWln
aHQpLAogICAgICAgbURlcHRoKGRlcHRoKSwKQEAgLTI1MCw5ICsyNTYsOSBAQAogCiAgICAgaWYg
KG1SZW5kZXJUYXJnZXQgJiYgbVRleHR1cmUpCiAgICAgewotICAgICAgICBtU3VicmVzb3VyY2VJ
bmRleCA9IGdldFJUVlN1YnJlc291cmNlSW5kZXgobVRleHR1cmUsIG1SZW5kZXJUYXJnZXQpOwor
ICAgICAgICBtU3VicmVzb3VyY2VJbmRleCA9IEdldFJUVlN1YnJlc291cmNlSW5kZXgobVRleHR1
cmUsIG1SZW5kZXJUYXJnZXQpOwogICAgIH0KLSAgICBBU1NFUlQobUFOR0xFRm9ybWF0ICE9IGQz
ZDExOjpBTkdMRV9GT1JNQVRfTk9ORSB8fCBtV2lkdGggPT0gMCB8fCBtSGVpZ2h0ID09IDApOwor
ICAgIEFTU0VSVChtRm9ybWF0U2V0LmZvcm1hdC5pZCAhPSBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9O
RSB8fCBtV2lkdGggPT0gMCB8fCBtSGVpZ2h0ID09IDApOwogfQogCiBUZXh0dXJlUmVuZGVyVGFy
Z2V0MTE6OlRleHR1cmVSZW5kZXJUYXJnZXQxMShJRDNEMTFEZXB0aFN0ZW5jaWxWaWV3ICpkc3Ys
CkBAIC0yNTksMTIgKzI2NSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSUQzRDExUmVzb3VyY2UgKnJlc291cmNlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzcnYs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50
ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkM2QxMTo6QU5HTEVGb3JtYXQgYW5nbGVGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkM2QxMTo6Rm9ybWF0ICZmb3JtYXRTZXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRo
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBo
ZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGRlcHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBzYW1wbGVzKQotICAgIDogUmVuZGVyVGFyZ2V0MTEoYW5nbGVGb3JtYXQpLAorICAg
IDogUmVuZGVyVGFyZ2V0MTEoZm9ybWF0U2V0KSwKICAgICAgIG1XaWR0aCh3aWR0aCksCiAgICAg
ICBtSGVpZ2h0KGhlaWdodCksCiAgICAgICBtRGVwdGgoZGVwdGgpLApAQCAtMjk0LDkgKzMwMCw5
IEBACiAKICAgICBpZiAobURlcHRoU3RlbmNpbCAmJiBtVGV4dHVyZSkKICAgICB7Ci0gICAgICAg
IG1TdWJyZXNvdXJjZUluZGV4ID0gZ2V0RFNWU3VicmVzb3VyY2VJbmRleChtVGV4dHVyZSwgbURl
cHRoU3RlbmNpbCk7CisgICAgICAgIG1TdWJyZXNvdXJjZUluZGV4ID0gR2V0RFNWU3VicmVzb3Vy
Y2VJbmRleChtVGV4dHVyZSwgbURlcHRoU3RlbmNpbCk7CiAgICAgfQotICAgIEFTU0VSVChtQU5H
TEVGb3JtYXQgIT0gZDNkMTE6OkFOR0xFX0ZPUk1BVF9OT05FIHx8IG1XaWR0aCA9PSAwIHx8IG1I
ZWlnaHQgPT0gMCk7CisgICAgQVNTRVJUKG1Gb3JtYXRTZXQuZm9ybWF0LmlkICE9IGFuZ2xlOjpG
b3JtYXQ6OklEOjpOT05FIHx8IG1XaWR0aCA9PSAwIHx8IG1IZWlnaHQgPT0gMCk7CiB9CiAKIFRl
eHR1cmVSZW5kZXJUYXJnZXQxMTo6flRleHR1cmVSZW5kZXJUYXJnZXQxMSgpCkBAIC0zNjYsMTYg
KzM3MiwxMSBAQAogU3VyZmFjZVJlbmRlclRhcmdldDExOjpTdXJmYWNlUmVuZGVyVGFyZ2V0MTEo
U3dhcENoYWluMTEgKnN3YXBDaGFpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJlbmRlcmVyMTEgKnJlbmRlcmVyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZXB0aCkKLSAgICA6IFJlbmRlclRhcmdldDEx
KGQzZDExOjpBTkdMRV9GT1JNQVRfTk9ORSksICAvLyBmb3JtYXQgd2lsbCBiZSBkZXRlcm1pbmVk
IGluIGNvbnN0cnVjdG9yIGJvZHkKKyAgICA6IFJlbmRlclRhcmdldDExKEdldFN1cmZhY2VGb3Jt
YXRTZXQoZGVwdGgsIHN3YXBDaGFpbiwgcmVuZGVyZXIpKSwKICAgICAgIG1Td2FwQ2hhaW4oc3dh
cENoYWluKSwKLSAgICAgIG1SZW5kZXJlcihyZW5kZXJlciksCiAgICAgICBtRGVwdGgoZGVwdGgp
CiB7CiAgICAgQVNTRVJUKG1Td2FwQ2hhaW4pOwotCi0gICAgbUFOR0xFRm9ybWF0ID0gZDNkMTE6
OkdldFRleHR1cmVGb3JtYXRJbmZvKGdldEludGVybmFsRm9ybWF0SW50ZXJuYWwoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVJlbmRlcmVyLT5nZXRS
ZW5kZXJlcjExRGV2aWNlQ2FwcygpKQotICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0U2V0
LT5mb3JtYXQ7CiB9CiAKIFN1cmZhY2VSZW5kZXJUYXJnZXQxMTo6flN1cmZhY2VSZW5kZXJUYXJn
ZXQxMSgpCkBAIC0zOTksMTQgKzQwMCw5IEBACiAKIEdMZW51bSBTdXJmYWNlUmVuZGVyVGFyZ2V0
MTE6OmdldEludGVybmFsRm9ybWF0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gZ2V0SW50ZXJuYWxG
b3JtYXRJbnRlcm5hbCgpOworICAgIHJldHVybiBHZXRTdXJmYWNlUlRGb3JtYXQobURlcHRoLCBt
U3dhcENoYWluKTsKIH0KIAotR0xlbnVtIFN1cmZhY2VSZW5kZXJUYXJnZXQxMTo6Z2V0SW50ZXJu
YWxGb3JtYXRJbnRlcm5hbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChtRGVwdGggPyBtU3dhcENo
YWluLT5HZXREZXB0aEJ1ZmZlckludGVybmFsRm9ybWF0KCkgOiBtU3dhcENoYWluLT5HZXRSZW5k
ZXJUYXJnZXRJbnRlcm5hbEZvcm1hdCgpKTsKLX0KLQogR0xzaXplaSBTdXJmYWNlUmVuZGVyVGFy
Z2V0MTE6OmdldFNhbXBsZXMoKSBjb25zdAogewogICAgIC8vIE91ciBFR0wgc3VyZmFjZXMgZG8g
bm90IHN1cHBvcnQgbXVsdGlzYW1wbGluZy4KQEAgLTQ0NSw0ICs0NDEsNCBAQAogICAgIHJldHVy
biAwOwogfQogCi19Cit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyVGFyZ2V0MTEuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL1JlbmRlclRhcmdldDExLmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVy
VGFyZ2V0MTEuaAkod29ya2luZyBjb3B5KQpAQCAtMTEsMTAgKzExLDEwIEBACiAjZGVmaW5lIExJ
QkFOR0xFX1JFTkRFUkVSX0QzRF9EM0QxMV9SRU5ERVJUQVJHRVQxMV9IXwogCiAjaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlclRhcmdldEQzRC5oIgorCiAjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlLmgiCisjaW5jbHVk
ZSAibGliQU5HTEUvc2lnbmFsX3V0aWxzLmgiCiAKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvcmVuZGVyZXIxMV91dGlscy5oIgotCiBuYW1lc3BhY2UgcngKIHsKIGNsYXNz
IFN3YXBDaGFpbjExOwpAQCAtMjMsNyArMjMsNyBAQAogY2xhc3MgUmVuZGVyVGFyZ2V0MTEgOiBw
dWJsaWMgUmVuZGVyVGFyZ2V0RDNECiB7CiAgIHB1YmxpYzoKLSAgICBSZW5kZXJUYXJnZXQxMShk
M2QxMTo6QU5HTEVGb3JtYXQgYW5nbGVGb3JtYXQpOworICAgIFJlbmRlclRhcmdldDExKGNvbnN0
IGQzZDExOjpGb3JtYXQgJmZvcm1hdFNldCk7CiAgICAgdmlydHVhbCB+UmVuZGVyVGFyZ2V0MTEo
KTsKIAogICAgIHZpcnR1YWwgSUQzRDExUmVzb3VyY2UgKmdldFRleHR1cmUoKSBjb25zdCA9IDA7
CkBAIC0zNCwxNSArMzQsMTQgQEAKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFN1YnJl
c291cmNlSW5kZXgoKSBjb25zdCA9IDA7CiAKLSAgICB2b2lkIGFkZERpcnR5Q2FsbGJhY2soY29u
c3QgTm90aWZpY2F0aW9uQ2FsbGJhY2sgKmNhbGxiYWNrKTsKLSAgICB2b2lkIHJlbW92ZURpcnR5
Q2FsbGJhY2soY29uc3QgTm90aWZpY2F0aW9uQ2FsbGJhY2sgKmNhbGxiYWNrKTsKICAgICB2b2lk
IHNpZ25hbERpcnR5KCkgb3ZlcnJpZGU7CisgICAgYW5nbGU6OkJyb2FkY2FzdENoYW5uZWwgKmdl
dEJyb2FkY2FzdENoYW5uZWwoKSB7IHJldHVybiAmbUJyb2FkY2FzdENoYW5uZWw7IH0KIAotICAg
IGQzZDExOjpBTkdMRUZvcm1hdCBnZXRBTkdMRUZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1BTkdM
RUZvcm1hdDsgfQorICAgIGNvbnN0IGQzZDExOjpGb3JtYXQgJmdldEZvcm1hdFNldCgpIGNvbnN0
IHsgcmV0dXJuIG1Gb3JtYXRTZXQ7IH0KIAogICBwcm90ZWN0ZWQ6Ci0gICAgTm90aWZpY2F0aW9u
U2V0IG1EaXJ0eUNhbGxiYWNrczsKLSAgICBkM2QxMTo6QU5HTEVGb3JtYXQgbUFOR0xFRm9ybWF0
OworICAgIGFuZ2xlOjpCcm9hZGNhc3RDaGFubmVsIG1Ccm9hZGNhc3RDaGFubmVsOworICAgIGNv
bnN0IGQzZDExOjpGb3JtYXQgJm1Gb3JtYXRTZXQ7CiB9OwogCiBjbGFzcyBUZXh0dXJlUmVuZGVy
VGFyZ2V0MTEgOiBwdWJsaWMgUmVuZGVyVGFyZ2V0MTEKQEAgLTU0LDcgKzUzLDcgQEAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzcnYsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqYmxpdFNSViwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICBkM2QxMTo6QU5HTEVGb3JtYXQgYW5nbGVGb3JtYXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGQzZDExOjpGb3JtYXQgJmZvcm1hdFNldCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgZGVwdGgsCkBAIC02Myw3ICs2Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIElE
M0QxMVJlc291cmNlICpyZXNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgSUQzRDEx
U2hhZGVyUmVzb3VyY2VWaWV3ICpzcnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZDNkMTE6OkFOR0xF
Rm9ybWF0IGFuZ2xlRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkM2Qx
MTo6Rm9ybWF0ICZmb3JtYXRTZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
d2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRlcHRoLApAQCAtMTIzLDE1ICsxMjIsMTAgQEAK
ICAgICB1bnNpZ25lZCBpbnQgZ2V0U3VicmVzb3VyY2VJbmRleCgpIGNvbnN0IG92ZXJyaWRlOwog
CiAgIHByaXZhdGU6Ci0gICAgLy8gVGhlIGludGVybmFsIHZlcnNpb25zIG9mIHRoZSBmdW5jdGlv
bnMgYXJlIG5lZWRlZCBzbyB0aGF0IHRoZXkgY2FuIGJlIHNhZmVseSBjYWxsZWQKLSAgICAvLyBm
cm9tIHRoZSBjb25zdHJ1Y3Rvci4KLSAgICBHTGVudW0gZ2V0SW50ZXJuYWxGb3JtYXRJbnRlcm5h
bCgpIGNvbnN0OwotCiAgICAgU3dhcENoYWluMTEgKm1Td2FwQ2hhaW47Ci0gICAgUmVuZGVyZXIx
MSAqbVJlbmRlcmVyOwogICAgIGJvb2wgbURlcHRoOwogfTsKIAotfQorfSAgLy8gbmFtZXNwYWNl
IHJ4CiAKICNlbmRpZiAvLyBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfUkVOREVSVEFSR0VU
MTFfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvUmVuZGVyZXIxMS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmNwcAko
cmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOSw2
ICs5LDcgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyZXIx
MS5oIgogCiAjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgorI2luY2x1ZGUgPGlvbWFuaXA+CiAjaW5j
bHVkZSA8c3N0cmVhbT4KICNpbmNsdWRlIDx2ZXJzaW9uaGVscGVycy5oPgogCkBAIC0yMSwxMCAr
MjIsMTMgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1lbnQuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9oaXN0b2dyYW1fbWFjcm9zLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
UHJvZ3JhbS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3JlbmRlcmVyX3V0aWxzLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL0NvbXBpbGVyRDNELmgiCisjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL0Rpc3BsYXlEM0QuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvQmxpdDExLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL0J1ZmZlcjExLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL0NsZWFyMTEuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
Q29udGV4dDExLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lf
c3VwcG9ydF90YWJsZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9G
ZW5jZTExLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2Zvcm1hdHV0
aWxzMTEuaCIKQEAgLTM2LDEwICs0MCwxMSBAQAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL1JlbmRlclRhcmdldDExLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL1NoYWRlckV4ZWN1dGFibGUxMS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9TdHJlYW0xMS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9TdHJlYW1Qcm9kdWNlck5WMTIuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvU3dhcENoYWluMTEuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfdGFibGUuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvVGV4dHVyZVN0b3JhZ2UxMS5oIgorI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9UcmFuc2Zvcm1GZWVkYmFjazExLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1RyaW0xMS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9WZXJ0ZXhBcnJheTExLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL1ZlcnRleEJ1ZmZlcjExLmgiCkBAIC01MiwxMiArNTcsMTcgQEAKICNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvU2hhZGVyRDNELmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZDNkL1N1cmZhY2VEM0QuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvVGV4dHVyZUQzRC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9U
cmFuc2Zvcm1GZWVkYmFja0QzRC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9W
ZXJ0ZXhEYXRhTWFuYWdlci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1N0YXRlLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvU3VyZmFjZS5oIgogI2luY2x1ZGUgInRoaXJkX3BhcnR5L3RyYWNlX2V2ZW50
L3RyYWNlX2V2ZW50LmgiCiAKKyNpZmRlZiBBTkdMRV9FTkFCTEVfV0lORE9XU19TVE9SRQorI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW5ydC9OYXRpdmVXaW5kb3cxMVdp
blJULmgiCisjZWxzZQorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW4z
Mi9OYXRpdmVXaW5kb3cxMVdpbjMyLmgiCisjZW5kaWYKKwogLy8gSW5jbHVkZSB0aGUgRDNEOSBk
ZWJ1ZyBhbm5vdGF0b3IgaGVhZGVyIGZvciB1c2UgYnkgdGhlIGRlc2t0b3AgRDNEMTEgcmVuZGVy
ZXIKIC8vIGJlY2F1c2UgdGhlIEQzRDExIGludGVyZmFjZSBtZXRob2QgSUQzRFVzZXJEZWZpbmVk
QW5ub3RhdGlvbjo6R2V0U3RhdHVzCiAvLyBkb2Vzbid0IHdvcmsgd2l0aCB0aGUgR3JhcGhpY3Mg
RGlhZ25vc3RpY3MgdG9vbHMgaW4gVmlzdWFsIFN0dWRpbyAyMDEzLgpAQCAtMzc4LDYgKzM4OCwx
MSBAQAogICAgIH0KIH0KIAorLy8gSWYgd2UgcmVxdWVzdCBhIHNjcmF0Y2ggYnVmZmVyIHJlcXVl
c3RpbmcgYSBzbWFsbGVyIHNpemUgdGhpcyBtYW55IHRpbWVzLAorLy8gcmVsZWFzZSBhbmQgcmVj
cmVhdGUgdGhlIHNjcmF0Y2ggYnVmZmVyLiBUaGlzIGVuc3VyZXMgd2UgZG9uJ3QgaGF2ZSBhCisv
LyBkZWdlbmVyYXRlIGNhc2Ugd2hlcmUgd2UgYXJlIHN0dWNrIGhvZ2dpbmcgbWVtb3J5LgorY29u
c3QgaW50IFNjcmF0Y2hNZW1vcnlCdWZmZXJMaWZldGltZSA9IDEwMDA7CisKIH0gIC8vIGFub255
bW91cyBuYW1lc3BhY2UKIAogUmVuZGVyZXIxMTo6UmVuZGVyZXIxMShlZ2w6OkRpc3BsYXkgKmRp
c3BsYXkpCkBAIC0zODUsNyArNDAwLDkgQEAKICAgICAgIG1TdGF0ZUNhY2hlKHRoaXMpLAogICAg
ICAgbVN0YXRlTWFuYWdlcih0aGlzKSwKICAgICAgIG1MYXN0SGlzdG9ncmFtVXBkYXRlVGltZShB
TkdMRVBsYXRmb3JtQ3VycmVudCgpLT5tb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSksCi0g
ICAgICBtRGVidWcobnVsbHB0cikKKyAgICAgIG1EZWJ1ZyhudWxscHRyKSwKKyAgICAgIG1TY3Jh
dGNoTWVtb3J5QnVmZmVyUmVzZXRDb3VudGVyKDApLAorICAgICAgbUFubm90YXRvcihudWxscHRy
KQogewogICAgIG1WZXJ0ZXhEYXRhTWFuYWdlciA9IE5VTEw7CiAgICAgbUluZGV4RGF0YU1hbmFn
ZXIgPSBOVUxMOwpAQCAtNDI5LDcgKzQ0Niw3IEBACiAgICAgbUFwcGxpZWRHZW9tZXRyeVNoYWRl
ciA9IE5VTEw7CiAgICAgbUFwcGxpZWRQaXhlbFNoYWRlciA9IE5VTEw7CiAKLSAgICBtQXBwbGll
ZE51bVhGQkJpbmRpbmdzID0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSk7CisgICAgbUFwcGxpZWRU
Rk9iamVjdCA9IGFuZ2xlOjpEaXJ0eVBvaW50ZXI7CiAKICAgICBaZXJvTWVtb3J5KCZtQWRhcHRl
ckRlc2NyaXB0aW9uLCBzaXplb2YobUFkYXB0ZXJEZXNjcmlwdGlvbikpOwogCkBAIC01MDcsNyAr
NTI0LDE4IEBACiAgICAgICAgIG1QcmVzZW50UGF0aEZhc3RFbmFibGVkID0gZmFsc2U7CiAgICAg
fQogCi0gICAgaW5pdGlhbGl6ZURlYnVnQW5ub3RhdG9yKCk7CisvLyBUaGUgRDNEMTEgcmVuZGVy
ZXIgbXVzdCBjaG9vc2UgdGhlIEQzRDkgZGVidWcgYW5ub3RhdG9yIGJlY2F1c2UgdGhlIEQzRDEx
IGludGVyZmFjZQorLy8gbWV0aG9kIElEM0RVc2VyRGVmaW5lZEFubm90YXRpb246OkdldFN0YXR1
cyBvbiBkZXNrdG9wIGJ1aWxkcyBkb2Vzbid0IHdvcmsgd2l0aCB0aGUgR3JhcGhpY3MKKy8vIERp
YWdub3N0aWNzIHRvb2xzIGluIFZpc3VhbCBTdHVkaW8gMjAxMy4KKy8vIFRoZSBEM0Q5IGFubm90
YXRvciB3b3JrcyBwcm9wZXJseSBmb3IgYm90aCBEM0QxMSBhbmQgRDNEOS4KKy8vIEluY29ycmVj
dCBzdGF0dXMgcmVwb3J0aW5nIGNhbiBjYXVzZSBBTkdMRSB0byBsb2cgdW5uZWNlc3NhcnkgZGVi
dWcgZXZlbnRzLgorI2lmZGVmIEFOR0xFX0VOQUJMRV9EM0Q5CisgICAgbUFubm90YXRvciA9IG5l
dyBEZWJ1Z0Fubm90YXRvcjkoKTsKKyNlbHNlCisgICAgbUFubm90YXRvciA9IG5ldyBEZWJ1Z0Fu
bm90YXRvcjExKCk7CisjZW5kaWYKKyAgICBBU1NFUlQobUFubm90YXRvcik7CisgICAgZ2w6Oklu
aXRpYWxpemVEZWJ1Z0Fubm90YXRpb25zKG1Bbm5vdGF0b3IpOwogfQogCiBSZW5kZXJlcjExOjp+
UmVuZGVyZXIxMSgpCkBAIC01MjMsMTEgKzU1MSw3IEBACiB7CiAgICAgSFJFU1VMVCByZXN1bHQg
PSBTX09LOwogCi0gICAgZWdsOjpFcnJvciBlcnJvciA9IGluaXRpYWxpemVEM0REZXZpY2UoKTsK
LSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwot
ICAgIH0KKyAgICBBTkdMRV9UUlkoaW5pdGlhbGl6ZUQzRERldmljZSgpKTsKIAogI2lmICFkZWZp
bmVkKEFOR0xFX0VOQUJMRV9XSU5ET1dTX1NUT1JFKQogI2lmICFBTkdMRV9TS0lQX0RYR0lfMV8y
X0NIRUNLCkBAIC03NDksMTEgKzc3Myw3IEBACiAgICAgewogICAgICAgICAvLyBXZSBzaG91bGQg
dXNlIHRoZSBpbnB1dHRlZCBEM0QxMSBkZXZpY2UgaW5zdGVhZAogICAgICAgICB2b2lkICpkZXZp
Y2UgICAgID0gbnVsbHB0cjsKLSAgICAgICAgZWdsOjpFcnJvciBlcnJvciA9IG1FR0xEZXZpY2Ut
PmdldERldmljZSgmZGV2aWNlKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9CisgICAgICAgIEFOR0xF
X1RSWShtRUdMRGV2aWNlLT5nZXREZXZpY2UoJmRldmljZSkpOwogCiAgICAgICAgIElEM0QxMURl
dmljZSAqZDNkRGV2aWNlID0gcmVpbnRlcnByZXRfY2FzdDxJRDNEMTFEZXZpY2UgKj4oZGV2aWNl
KTsKICAgICAgICAgaWYgKEZBSUxFRChkM2REZXZpY2UtPkdldERldmljZVJlbW92ZWRSZWFzb24o
KSkpCkBAIC04MTgsNyArODM4LDcgQEAKICAgICBBU1NFUlQoIW1QaXhlbFRyYW5zZmVyKTsKICAg
ICBtUGl4ZWxUcmFuc2ZlciA9IG5ldyBQaXhlbFRyYW5zZmVyMTEodGhpcyk7CiAKLSAgICBjb25z
dCBnbDo6Q2FwcyAmcmVuZGVyZXJDYXBzID0gZ2V0UmVuZGVyZXJDYXBzKCk7CisgICAgY29uc3Qg
Z2w6OkNhcHMgJnJlbmRlcmVyQ2FwcyA9IGdldE5hdGl2ZUNhcHMoKTsKIAogICAgIG1TdGF0ZU1h
bmFnZXIuaW5pdGlhbGl6ZShyZW5kZXJlckNhcHMpOwogCkBAIC04NTcsNiArODc3LDE4IEBACiB7
CiAgICAgSFJFU1VMVCBociA9IFNfT0s7CiAKKyAgICBMQVJHRV9JTlRFR0VSIHZlcnNpb247Cisg
ICAgaHIgPSBtRHhnaUFkYXB0ZXItPkNoZWNrSW50ZXJmYWNlU3VwcG9ydChfX3V1aWRvZihJRFhH
SURldmljZSksICZ2ZXJzaW9uKTsKKyAgICBpZiAoRkFJTEVEKGhyKSkKKyAgICB7CisgICAgICAg
IG1SZW5kZXJlcjExRGV2aWNlQ2Fwcy5kcml2ZXJWZXJzaW9uLnJlc2V0KCk7CisgICAgICAgIEVS
UigiRXJyb3IgcXVlcnlpbmcgZHJpdmVyIHZlcnNpb24gZnJvbSBEWEdJIEFkYXB0ZXIuIik7Cisg
ICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1SZW5kZXJlcjExRGV2aWNlQ2Fwcy5kcml2
ZXJWZXJzaW9uID0gdmVyc2lvbjsKKyAgICB9CisKICAgICBpZiAobURldmljZUNvbnRleHQxKQog
ICAgIHsKICAgICAgICAgRDNEMTFfRkVBVFVSRV9EQVRBX0QzRDExX09QVElPTlMgZDNkMTFPcHRp
b25zOwpAQCAtODY4LDExICs5MDAsMTkgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIGhyID0g
bURldmljZS0+Q2hlY2tGb3JtYXRTdXBwb3J0KERYR0lfRk9STUFUX0I1RzZSNV9VTk9STSwgJiht
UmVuZGVyZXIxMURldmljZUNhcHMuQjVHNlI1c3VwcG9ydCkpOwotICAgIGlmIChGQUlMRUQoaHIp
KQorICAgIGlmIChnZXRXb3JrYXJvdW5kcygpLmRpc2FibGVCNUc2UjVTdXBwb3J0KQogICAgIHsK
ICAgICAgICAgbVJlbmRlcmVyMTFEZXZpY2VDYXBzLkI1RzZSNXN1cHBvcnQgPSAwOwogICAgIH0K
KyAgICBlbHNlCisgICAgeworICAgICAgICBociA9IG1EZXZpY2UtPkNoZWNrRm9ybWF0U3VwcG9y
dChEWEdJX0ZPUk1BVF9CNUc2UjVfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICYobVJlbmRlcmVyMTFEZXZpY2VDYXBzLkI1RzZSNXN1cHBvcnQpKTsKKyAg
ICAgICAgaWYgKEZBSUxFRChocikpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1SZW5kZXJlcjEx
RGV2aWNlQ2Fwcy5CNUc2UjVzdXBwb3J0ID0gMDsKKyAgICAgICAgfQorICAgIH0KIAogICAgIGhy
ID0gbURldmljZS0+Q2hlY2tGb3JtYXRTdXBwb3J0KERYR0lfRk9STUFUX0I0RzRSNEE0X1VOT1JN
LCAmKG1SZW5kZXJlcjExRGV2aWNlQ2Fwcy5CNEc0UjRBNHN1cHBvcnQpKTsKICAgICBpZiAoRkFJ
TEVEKGhyKSkKQEAgLTg5MSw3ICs5MzEsNyBAQAogICAgIFNhZmVSZWxlYXNlKGR4Z2lBZGFwdGVy
Mik7CiB9CiAKLWVnbDo6Q29uZmlnU2V0IFJlbmRlcmVyMTE6OmdlbmVyYXRlQ29uZmlncygpIGNv
bnN0CitlZ2w6OkNvbmZpZ1NldCBSZW5kZXJlcjExOjpnZW5lcmF0ZUNvbmZpZ3MoKQogewogICAg
IHN0ZDo6dmVjdG9yPEdMZW51bT4gY29sb3JCdWZmZXJGb3JtYXRzOwogCkBAIC05MTksOCArOTU5
LDggQEAKICAgICAgICAgR0xfREVQVEhfQ09NUE9ORU5UMTYsCiAgICAgfTsKIAotICAgIGNvbnN0
IGdsOjpDYXBzICZyZW5kZXJlckNhcHMgPSBnZXRSZW5kZXJlckNhcHMoKTsKLSAgICBjb25zdCBn
bDo6VGV4dHVyZUNhcHNNYXAgJnJlbmRlcmVyVGV4dHVyZUNhcHMgPSBnZXRSZW5kZXJlclRleHR1
cmVDYXBzKCk7CisgICAgY29uc3QgZ2w6OkNhcHMgJnJlbmRlcmVyQ2FwcyAgICAgICAgICAgICAg
ICAgID0gZ2V0TmF0aXZlQ2FwcygpOworICAgIGNvbnN0IGdsOjpUZXh0dXJlQ2Fwc01hcCAmcmVu
ZGVyZXJUZXh0dXJlQ2FwcyA9IGdldE5hdGl2ZVRleHR1cmVDYXBzKCk7CiAKICAgICBjb25zdCBF
R0xpbnQgb3B0aW1hbFN1cmZhY2VPcmllbnRhdGlvbiA9CiAgICAgICAgIG1QcmVzZW50UGF0aEZh
c3RFbmFibGVkID8gMCA6IEVHTF9TVVJGQUNFX09SSUVOVEFUSU9OX0lOVkVSVF9ZX0FOR0xFOwpA
QCAtOTQ4LDYgKzk4OCw3IEBACiAgICAgICAgICAgICAgICAgZ2w6OkdldEludGVybmFsRm9ybWF0
SW5mbyhjb2xvckJ1ZmZlckludGVybmFsRm9ybWF0KTsKICAgICAgICAgICAgIGNvbnN0IGdsOjpJ
bnRlcm5hbEZvcm1hdCAmZGVwdGhTdGVuY2lsQnVmZmVyRm9ybWF0SW5mbyA9CiAgICAgICAgICAg
ICAgICAgZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhkZXB0aFN0ZW5jaWxCdWZmZXJJbnRlcm5h
bEZvcm1hdCk7CisgICAgICAgICAgICBjb25zdCBnbDo6VmVyc2lvbiAmbWF4VmVyc2lvbiA9IGdl
dE1heFN1cHBvcnRlZEVTVmVyc2lvbigpOwogCiAgICAgICAgICAgICBlZ2w6OkNvbmZpZyBjb25m
aWc7CiAgICAgICAgICAgICBjb25maWcucmVuZGVyVGFyZ2V0Rm9ybWF0ID0gY29sb3JCdWZmZXJJ
bnRlcm5hbEZvcm1hdDsKQEAgLTk2NSwxNSArMTAwNiwyMiBAQAogICAgICAgICAgICAgY29uZmln
LmNvbG9yQnVmZmVyVHlwZSA9IEVHTF9SR0JfQlVGRkVSOwogICAgICAgICAgICAgY29uZmlnLmNv
bmZpZ0NhdmVhdCAgICA9IEVHTF9OT05FOwogICAgICAgICAgICAgY29uZmlnLmNvbmZpZ0lEICAg
ICAgICA9IHN0YXRpY19jYXN0PEVHTGludD4oY29uZmlncy5zaXplKCkgKyAxKTsKLSAgICAgICAg
ICAgIC8vIENhbiBvbmx5IHN1cHBvcnQgYSBjb25mb3JtYW50IEVTMiB3aXRoIGZlYXR1cmUgbGV2
ZWwgZ3JlYXRlciB0aGFuIDEwLjAuCi0gICAgICAgICAgICBjb25maWcuY29uZm9ybWFudCA9ICht
UmVuZGVyZXIxMURldmljZUNhcHMuZmVhdHVyZUxldmVsID49IEQzRF9GRUFUVVJFX0xFVkVMXzEw
XzApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IChFR0xfT1BFTkdMX0VT
Ml9CSVQgfCBFR0xfT1BFTkdMX0VTM19CSVRfS0hSKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiAwOwogCiAgICAgICAgICAgICAvLyBQcmVzZW50UGF0aEZhc3QgbWF5IG5v
dCBiZSBjb25mb3JtYW50Ci0gICAgICAgICAgICBpZiAobVByZXNlbnRQYXRoRmFzdEVuYWJsZWQp
CisgICAgICAgICAgICBjb25maWcuY29uZm9ybWFudCA9IDA7CisgICAgICAgICAgICBpZiAoIW1Q
cmVzZW50UGF0aEZhc3RFbmFibGVkKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNv
bmZpZy5jb25mb3JtYW50ID0gMDsKKyAgICAgICAgICAgICAgICAvLyBDYW4gb25seSBzdXBwb3J0
IGEgY29uZm9ybWFudCBFUzIgd2l0aCBmZWF0dXJlIGxldmVsIGdyZWF0ZXIgdGhhbiAxMC4wLgor
ICAgICAgICAgICAgICAgIGlmIChtUmVuZGVyZXIxMURldmljZUNhcHMuZmVhdHVyZUxldmVsID49
IEQzRF9GRUFUVVJFX0xFVkVMXzEwXzApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBjb25maWcuY29uZm9ybWFudCB8PSBFR0xfT1BFTkdMX0VTMl9CSVQ7CisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gV2UgY2FuIG9ubHkgc3VwcG9ydCBjb25m
b3JtYW50IEVTMyBvbiBGTCAxMC4xKworICAgICAgICAgICAgICAgIGlmIChtYXhWZXJzaW9uLm1h
am9yID49IDMpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb25maWcu
Y29uZm9ybWFudCB8PSBFR0xfT1BFTkdMX0VTM19CSVRfS0hSOworICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgY29uZmlnLmRlcHRoU2l6ZSAgICAgICAgID0g
ZGVwdGhTdGVuY2lsQnVmZmVyRm9ybWF0SW5mby5kZXB0aEJpdHM7CkBAIC05ODcsMTEgKzEwMzUs
MTQgQEAKICAgICAgICAgICAgIGNvbmZpZy5uYXRpdmVSZW5kZXJhYmxlICA9IEVHTF9GQUxTRTsK
ICAgICAgICAgICAgIGNvbmZpZy5uYXRpdmVWaXN1YWxJRCAgICA9IDA7CiAgICAgICAgICAgICBj
b25maWcubmF0aXZlVmlzdWFsVHlwZSAgPSBFR0xfTk9ORTsKLSAgICAgICAgICAgIC8vIENhbid0
IHN1cHBvcnQgRVMzIGF0IGFsbCB3aXRob3V0IGZlYXR1cmUgbGV2ZWwgMTAuMAotICAgICAgICAg
ICAgY29uZmlnLnJlbmRlcmFibGVUeXBlID0KLSAgICAgICAgICAgICAgICBFR0xfT1BFTkdMX0VT
Ml9CSVQgfCAoKG1SZW5kZXJlcjExRGV2aWNlQ2Fwcy5mZWF0dXJlTGV2ZWwgPj0gRDNEX0ZFQVRV
UkVfTEVWRUxfMTBfMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID8gRUdMX09QRU5HTF9FUzNfQklUX0tIUgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiAwKTsKKworICAgICAgICAgICAgLy8gQ2FuJ3Qgc3VwcG9ydCBFUzMgYXQg
YWxsIHdpdGhvdXQgZmVhdHVyZSBsZXZlbCAxMC4xCisgICAgICAgICAgICBjb25maWcucmVuZGVy
YWJsZVR5cGUgPSBFR0xfT1BFTkdMX0VTMl9CSVQ7CisgICAgICAgICAgICBpZiAobWF4VmVyc2lv
bi5tYWpvciA+PSAzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbmZpZy5yZW5k
ZXJhYmxlVHlwZSB8PSBFR0xfT1BFTkdMX0VTM19CSVRfS0hSOworICAgICAgICAgICAgfQorCiAg
ICAgICAgICAgICBjb25maWcuc2FtcGxlQnVmZmVycyAgICAgICAgID0gMDsgIC8vIEZJWE1FOiBl
bnVtZXJhdGUgbXVsdGktc2FtcGxpbmcKICAgICAgICAgICAgIGNvbmZpZy5zYW1wbGVzICAgICAg
ICAgICAgICAgPSAwOwogICAgICAgICAgICAgY29uZmlnLnN0ZW5jaWxTaXplICAgICAgICAgICA9
IGRlcHRoU3RlbmNpbEJ1ZmZlckZvcm1hdEluZm8uc3RlbmNpbEJpdHM7CkBAIC0xMDMwLDEyICsx
MDgxLDggQEAKICAgICAvLyBEM0QxMSBkb2VzIG5vdCBzdXBwb3J0IHByZXNlbnQgd2l0aCBkaXJ0
eSByZWN0YW5nbGVzIHVudGlsIERYR0kgMS4yLgogICAgIG91dEV4dGVuc2lvbnMtPnBvc3RTdWJC
dWZmZXIgPSBtUmVuZGVyZXIxMURldmljZUNhcHMuc3VwcG9ydHNEWEdJMV8yOwogCi0gICAgb3V0
RXh0ZW5zaW9ucy0+Y3JlYXRlQ29udGV4dCA9IHRydWU7Ci0KICAgICBvdXRFeHRlbnNpb25zLT5k
ZXZpY2VRdWVyeSA9IHRydWU7CiAKLSAgICBvdXRFeHRlbnNpb25zLT5jcmVhdGVDb250ZXh0Tm9F
cnJvciA9IHRydWU7Ci0KICAgICBvdXRFeHRlbnNpb25zLT5pbWFnZSAgICAgICAgICAgICAgICAg
PSB0cnVlOwogICAgIG91dEV4dGVuc2lvbnMtPmltYWdlQmFzZSAgICAgICAgICAgICA9IHRydWU7
CiAgICAgb3V0RXh0ZW5zaW9ucy0+Z2xUZXh0dXJlMkRJbWFnZSAgICAgID0gdHJ1ZTsKQEAgLTEw
NDIsMTAgKzEwODksMjAgQEAKICAgICBvdXRFeHRlbnNpb25zLT5nbFRleHR1cmVDdWJlbWFwSW1h
Z2UgPSB0cnVlOwogICAgIG91dEV4dGVuc2lvbnMtPmdsUmVuZGVyYnVmZmVySW1hZ2UgICA9IHRy
dWU7CiAKLSAgICBvdXRFeHRlbnNpb25zLT5zdHJlYW0gPSB0cnVlOworICAgIG91dEV4dGVuc2lv
bnMtPnN0cmVhbSAgICAgICAgICAgICAgICAgICAgID0gdHJ1ZTsKKyAgICBvdXRFeHRlbnNpb25z
LT5zdHJlYW1Db25zdW1lckdMVGV4dHVyZSAgICA9IHRydWU7CisgICAgb3V0RXh0ZW5zaW9ucy0+
c3RyZWFtQ29uc3VtZXJHTFRleHR1cmVZVVYgPSB0cnVlOworICAgIC8vIE5vdCBhbGwgRDNEMTEg
ZGV2aWNlcyBzdXBwb3J0IE5WMTIgdGV4dHVyZXMKKyAgICBpZiAoZ2V0TlYxMlRleHR1cmVTdXBw
b3J0KCkpCisgICAgeworICAgICAgICBvdXRFeHRlbnNpb25zLT5zdHJlYW1Qcm9kdWNlckQzRFRl
eHR1cmVOVjEyID0gdHJ1ZTsKKyAgICB9CiAKICAgICBvdXRFeHRlbnNpb25zLT5mbGV4aWJsZVN1
cmZhY2VDb21wYXRpYmlsaXR5ID0gdHJ1ZTsKICAgICBvdXRFeHRlbnNpb25zLT5kaXJlY3RDb21w
b3NpdGlvbiAgICAgICAgICAgID0gISFtRENvbXBNb2R1bGU7CisKKyAgICAvLyBnZXRTeW5jVmFs
dWVzIHJlcXVpcmVzIGRpcmVjdCBjb21wb3NpdGlvbi4KKyAgICBvdXRFeHRlbnNpb25zLT5nZXRT
eW5jVmFsdWVzID0gb3V0RXh0ZW5zaW9ucy0+ZGlyZWN0Q29tcG9zaXRpb247CiB9CiAKIGdsOjpF
cnJvciBSZW5kZXJlcjExOjpmbHVzaCgpCkBAIC0xMDczLDExICsxMTMwLDE1IEBACiAgICAgfQog
CiAgICAgbURldmljZUNvbnRleHQtPkVuZChtU3luY1F1ZXJ5KTsKLSAgICBtRGV2aWNlQ29udGV4
dC0+Rmx1c2goKTsKIAorICAgIHVuc2lnbmVkIGludCBhdHRlbXB0ID0gMDsKICAgICBkbwogICAg
IHsKLSAgICAgICAgcmVzdWx0ID0gbURldmljZUNvbnRleHQtPkdldERhdGEobVN5bmNRdWVyeSwg
TlVMTCwgMCwgRDNEMTFfQVNZTkNfR0VUREFUQV9ET05PVEZMVVNIKTsKKyAgICAgICAgdW5zaWdu
ZWQgaW50IGZsdXNoRnJlcXVlbmN5ID0gMTAwOworICAgICAgICBVSU5UIGZsYWdzID0gKGF0dGVt
cHQgJSBmbHVzaEZyZXF1ZW5jeSA9PSAwKSA/IDAgOiBEM0QxMV9BU1lOQ19HRVREQVRBX0RPTk9U
RkxVU0g7CisgICAgICAgIGF0dGVtcHQrKzsKKworICAgICAgICByZXN1bHQgPSBtRGV2aWNlQ29u
dGV4dC0+R2V0RGF0YShtU3luY1F1ZXJ5LCBOVUxMLCAwLCBmbGFncyk7CiAgICAgICAgIGlmIChG
QUlMRUQocmVzdWx0KSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGdldCBldmVudCBxdWVyeSBkYXRhLCByZXN1bHQ6
IDB4JVguIiwgcmVzdWx0KTsKQEAgLTEwOTcsMjggKzExNTgsMzkgQEAKICAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotU3dhcENoYWluRDNEICpSZW5kZXJlcjExOjpjcmVh
dGVTd2FwQ2hhaW4oTmF0aXZlV2luZG93IG5hdGl2ZVdpbmRvdywKK2Jvb2wgUmVuZGVyZXIxMTo6
aXNWYWxpZE5hdGl2ZVdpbmRvdyhFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdykgY29uc3QKK3sK
KyNpZmRlZiBBTkdMRV9FTkFCTEVfV0lORE9XU19TVE9SRQorICAgIHJldHVybiBOYXRpdmVXaW5k
b3cxMVdpblJUOjpJc1ZhbGlkTmF0aXZlV2luZG93KHdpbmRvdyk7CisjZWxzZQorICAgIHJldHVy
biBOYXRpdmVXaW5kb3cxMVdpbjMyOjpJc1ZhbGlkTmF0aXZlV2luZG93KHdpbmRvdyk7CisjZW5k
aWYKK30KKworTmF0aXZlV2luZG93RDNEICpSZW5kZXJlcjExOjpjcmVhdGVOYXRpdmVXaW5kb3co
RUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1
dGVNYXAgJmF0dHJpYnMpIGNvbnN0Cit7CisjaWZkZWYgQU5HTEVfRU5BQkxFX1dJTkRPV1NfU1RP
UkUKKyAgICBVTlVTRURfVkFSSUFCTEUoYXR0cmlicyk7CisgICAgcmV0dXJuIG5ldyBOYXRpdmVX
aW5kb3cxMVdpblJUKHdpbmRvdywgY29uZmlnLT5hbHBoYVNpemUgPiAwKTsKKyNlbHNlCisgICAg
cmV0dXJuIG5ldyBOYXRpdmVXaW5kb3cxMVdpbjMyKAorICAgICAgICB3aW5kb3csIGNvbmZpZy0+
YWxwaGFTaXplID4gMCwKKyAgICAgICAgYXR0cmlicy5nZXQoRUdMX0RJUkVDVF9DT01QT1NJVElP
Tl9BTkdMRSwgRUdMX0ZBTFNFKSA9PSBFR0xfVFJVRSk7CisjZW5kaWYKK30KKworU3dhcENoYWlu
RDNEICpSZW5kZXJlcjExOjpjcmVhdGVTd2FwQ2hhaW4oTmF0aXZlV2luZG93RDNEICpuYXRpdmVX
aW5kb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEUg
c2hhcmVIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gYmFja0J1ZmZlckZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBkZXB0aEJ1ZmZlckZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBvcmllbnRhdGlvbikKIHsKLSAgICByZXR1cm4g
bmV3IFN3YXBDaGFpbjExKHRoaXMsIG5hdGl2ZVdpbmRvdywgc2hhcmVIYW5kbGUsIGJhY2tCdWZm
ZXJGb3JtYXQsIGRlcHRoQnVmZmVyRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3JpZW50YXRpb24pOworICAgIHJldHVybiBuZXcgU3dhcENoYWluMTEodGhpcywgR2V0QXM8TmF0
aXZlV2luZG93MTE+KG5hdGl2ZVdpbmRvdyksIHNoYXJlSGFuZGxlLCBiYWNrQnVmZmVyRm9ybWF0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGhCdWZmZXJGb3JtYXQsIG9yaWVudGF0
aW9uKTsKIH0KIAotQ29tcGlsZXJJbXBsICpSZW5kZXJlcjExOjpjcmVhdGVDb21waWxlcigpCi17
Ci0gICAgaWYgKG1SZW5kZXJlcjExRGV2aWNlQ2Fwcy5mZWF0dXJlTGV2ZWwgPD0gRDNEX0ZFQVRV
UkVfTEVWRUxfOV8zKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBDb21waWxlckQzRChTSF9I
TFNMXzRfMF9GTDlfM19PVVRQVVQpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBy
ZXR1cm4gbmV3IENvbXBpbGVyRDNEKFNIX0hMU0xfNF8xX09VVFBVVCk7Ci0gICAgfQotfQotCiB2
b2lkICpSZW5kZXJlcjExOjpnZXREM0REZXZpY2UoKQogewogICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PHZvaWQqPihtRGV2aWNlKTsKQEAgLTExMzIsMjkgKzEyMDQsNDkgQEAKICAgICAgICAg
QVNTRVJUKHRleHR1cmVEM0QpOwogCiAgICAgICAgIFRleHR1cmVTdG9yYWdlICp0ZXhTdG9yYWdl
ID0gbnVsbHB0cjsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gdGV4dHVyZUQzRC0+Z2V0TmF0
aXZlVGV4dHVyZSgmdGV4U3RvcmFnZSk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBB
TkdMRV9UUlkodGV4dHVyZUQzRC0+Z2V0TmF0aXZlVGV4dHVyZSgmdGV4U3RvcmFnZSkpOwogCiAg
ICAgICAgIGlmICh0ZXhTdG9yYWdlKQogICAgICAgICB7CiAgICAgICAgICAgICBUZXh0dXJlU3Rv
cmFnZTExICpzdG9yYWdlMTEgPSBHZXRBczxUZXh0dXJlU3RvcmFnZTExPih0ZXhTdG9yYWdlKTsK
ICAgICAgICAgICAgIGNvbnN0IGdsOjpUZXh0dXJlU3RhdGUgJnRleHR1cmVTdGF0ZSA9IHRleHR1
cmUtPmdldFRleHR1cmVTdGF0ZSgpOwotICAgICAgICAgICAgZXJyb3IgPQotICAgICAgICAgICAg
ICAgIHN0b3JhZ2UxMS0+Z2VuZXJhdGVTd2l6emxlcyh0ZXh0dXJlU3RhdGUuc3dpenpsZVJlZCwg
dGV4dHVyZVN0YXRlLnN3aXp6bGVHcmVlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGV4dHVyZVN0YXRlLnN3aXp6bGVCbHVlLCB0ZXh0dXJlU3RhdGUuc3dp
enpsZUFscGhhKTsKLSAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgICAgICAg
ICBBTkdMRV9UUlkoc3RvcmFnZTExLT5nZW5lcmF0ZVN3aXp6bGVzKHRleHR1cmVTdGF0ZS5nZXRT
d2l6emxlU3RhdGUoKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9OT19FUlJPUik7Cit9CisKK2dsOjpFcnJvciBSZW5kZXJlcjExOjpnZW5lcmF0ZVN3aXp6
bGVzKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsIGdsOjpTYW1wbGVyVHlwZSB0eXBlKQor
eworICAgIFByb2dyYW1EM0QgKnByb2dyYW1EM0QgPSBHZXRJbXBsQXM8UHJvZ3JhbUQzRD4oZGF0
YS5nZXRTdGF0ZSgpLmdldFByb2dyYW0oKSk7CisKKyAgICB1bnNpZ25lZCBpbnQgc2FtcGxlclJh
bmdlID0gcHJvZ3JhbUQzRC0+Z2V0VXNlZFNhbXBsZXJSYW5nZSh0eXBlKTsKKworICAgIGZvciAo
dW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc2FtcGxlclJhbmdlOyBpKyspCisgICAgeworICAgICAg
ICBHTGVudW0gdGV4dHVyZVR5cGUgPSBwcm9ncmFtRDNELT5nZXRTYW1wbGVyVGV4dHVyZVR5cGUo
dHlwZSwgaSk7CisgICAgICAgIEdMaW50IHRleHR1cmVVbml0ICA9IHByb2dyYW1EM0QtPmdldFNh
bXBsZXJNYXBwaW5nKHR5cGUsIGksIGRhdGEuZ2V0Q2FwcygpKTsKKyAgICAgICAgaWYgKHRleHR1
cmVVbml0ICE9IC0xKQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6VGV4dHVyZSAqdGV4dHVy
ZSA9IGRhdGEuZ2V0U3RhdGUoKS5nZXRTYW1wbGVyVGV4dHVyZSh0ZXh0dXJlVW5pdCwgdGV4dHVy
ZVR5cGUpOworICAgICAgICAgICAgQVNTRVJUKHRleHR1cmUpOworICAgICAgICAgICAgaWYgKHRl
eHR1cmUtPmdldFRleHR1cmVTdGF0ZSgpLnN3aXp6bGVSZXF1aXJlZCgpKQogICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgICAgICBBTkdMRV9U
UlkoZ2VuZXJhdGVTd2l6emxlKHRleHR1cmUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBn
bDo6Tm9FcnJvcigpOwogfQogCitnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Z2VuZXJhdGVTd2l6emxl
cyhjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhKQoreworICAgIEFOR0xFX1RSWShnZW5lcmF0
ZVN3aXp6bGVzKGRhdGEsIGdsOjpTQU1QTEVSX1ZFUlRFWCkpOworICAgIEFOR0xFX1RSWShnZW5l
cmF0ZVN3aXp6bGVzKGRhdGEsIGdsOjpTQU1QTEVSX1BJWEVMKSk7CisgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7Cit9CiBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6c2V0U2FtcGxlclN0YXRlKGdsOjpT
YW1wbGVyVHlwZSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpUZXh0
dXJlICp0ZXh0dXJlLApAQCAtMTE2NCwxMSArMTI1Niw3IEBACiAgICAgVGV4dHVyZUQzRCAqdGV4
dHVyZUQzRCA9IEdldEltcGxBczxUZXh0dXJlRDNEPih0ZXh0dXJlKTsKIAogICAgIFRleHR1cmVT
dG9yYWdlICpzdG9yYWdlID0gbnVsbHB0cjsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSB0ZXh0dXJl
RDNELT5nZXROYXRpdmVUZXh0dXJlKCZzdG9yYWdlKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigp
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkodGV4
dHVyZUQzRC0+Z2V0TmF0aXZlVGV4dHVyZSgmc3RvcmFnZSkpOwogCiAgICAgLy8gU3RvcmFnZSBz
aG91bGQgZXhpc3QsIHRleHR1cmUgc2hvdWxkIGJlIGNvbXBsZXRlCiAgICAgQVNTRVJUKHN0b3Jh
Z2UpOwpAQCAtMTE4MCwxNyArMTI2OCwxMyBAQAogCiAgICAgaWYgKHR5cGUgPT0gZ2w6OlNBTVBM
RVJfUElYRUwpCiAgICAgewotICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50
PihpbmRleCkgPCBnZXRSZW5kZXJlckNhcHMoKS5tYXhUZXh0dXJlSW1hZ2VVbml0cyk7CisgICAg
ICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGluZGV4KSA8IGdldE5hdGl2ZUNh
cHMoKS5tYXhUZXh0dXJlSW1hZ2VVbml0cyk7CiAKICAgICAgICAgaWYgKG1Gb3JjZVNldFBpeGVs
U2FtcGxlclN0YXRlc1tpbmRleF0gfHwKICAgICAgICAgICAgIG1lbWNtcCgmc2FtcGxlclN0YXRl
LCAmbUN1clBpeGVsU2FtcGxlclN0YXRlc1tpbmRleF0sIHNpemVvZihnbDo6U2FtcGxlclN0YXRl
KSkgIT0gMCkKICAgICAgICAgewogICAgICAgICAgICAgSUQzRDExU2FtcGxlclN0YXRlICpkeFNh
bXBsZXJTdGF0ZSA9IE5VTEw7Ci0gICAgICAgICAgICBlcnJvciA9IG1TdGF0ZUNhY2hlLmdldFNh
bXBsZXJTdGF0ZShzYW1wbGVyU3RhdGUsICZkeFNhbXBsZXJTdGF0ZSk7Ci0gICAgICAgICAgICBp
ZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVy
biBlcnJvcjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFOR0xFX1RSWShtU3RhdGVDYWNo
ZS5nZXRTYW1wbGVyU3RhdGUoc2FtcGxlclN0YXRlLCAmZHhTYW1wbGVyU3RhdGUpKTsKIAogICAg
ICAgICAgICAgQVNTRVJUKGR4U2FtcGxlclN0YXRlICE9IE5VTEwpOwogICAgICAgICAgICAgbURl
dmljZUNvbnRleHQtPlBTU2V0U2FtcGxlcnMoaW5kZXgsIDEsICZkeFNhbXBsZXJTdGF0ZSk7CkBA
IC0xMjA0LDE3ICsxMjg4LDEzIEBACiAgICAgfQogICAgIGVsc2UgaWYgKHR5cGUgPT0gZ2w6OlNB
TVBMRVJfVkVSVEVYKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVuc2lnbmVk
IGludD4oaW5kZXgpIDwgZ2V0UmVuZGVyZXJDYXBzKCkubWF4VmVydGV4VGV4dHVyZUltYWdlVW5p
dHMpOworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihpbmRleCkgPCBn
ZXROYXRpdmVDYXBzKCkubWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMpOwogCiAgICAgICAgIGlm
IChtRm9yY2VTZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzW2luZGV4XSB8fAogICAgICAgICAgICAgbWVt
Y21wKCZzYW1wbGVyU3RhdGUsICZtQ3VyVmVydGV4U2FtcGxlclN0YXRlc1tpbmRleF0sIHNpemVv
ZihnbDo6U2FtcGxlclN0YXRlKSkgIT0gMCkKICAgICAgICAgewogICAgICAgICAgICAgSUQzRDEx
U2FtcGxlclN0YXRlICpkeFNhbXBsZXJTdGF0ZSA9IE5VTEw7Ci0gICAgICAgICAgICBlcnJvciA9
IG1TdGF0ZUNhY2hlLmdldFNhbXBsZXJTdGF0ZShzYW1wbGVyU3RhdGUsICZkeFNhbXBsZXJTdGF0
ZSk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFO
R0xFX1RSWShtU3RhdGVDYWNoZS5nZXRTYW1wbGVyU3RhdGUoc2FtcGxlclN0YXRlLCAmZHhTYW1w
bGVyU3RhdGUpKTsKIAogICAgICAgICAgICAgQVNTRVJUKGR4U2FtcGxlclN0YXRlICE9IE5VTEwp
OwogICAgICAgICAgICAgbURldmljZUNvbnRleHQtPlZTU2V0U2FtcGxlcnMoaW5kZXgsIDEsICZk
eFNhbXBsZXJTdGF0ZSk7CkBAIC0xMjMxLDcgKzEzMTEsNyBAQAogICAgIEFTU0VSVChtZXRhZGF0
YSAhPSBudWxscHRyKTsKICAgICBtZXRhZGF0YS0+dXBkYXRlKGluZGV4LCAqdGV4dHVyZSk7CiAK
LSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJy
b3IoKTsKIH0KIAogZ2w6OkVycm9yIFJlbmRlcmVyMTE6OnNldFRleHR1cmUoZ2w6OlNhbXBsZXJU
eXBlIHR5cGUsIGludCBpbmRleCwgZ2w6OlRleHR1cmUgKnRleHR1cmUpCkBAIC0xMjQzLDExICsx
MzIzLDcgQEAKICAgICAgICAgVGV4dHVyZUQzRCAqdGV4dHVyZUltcGwgPSBHZXRJbXBsQXM8VGV4
dHVyZUQzRD4odGV4dHVyZSk7CiAKICAgICAgICAgVGV4dHVyZVN0b3JhZ2UgKnRleFN0b3JhZ2Ug
PSBudWxscHRyOwotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSB0ZXh0dXJlSW1wbC0+Z2V0TmF0
aXZlVGV4dHVyZSgmdGV4U3RvcmFnZSk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBB
TkdMRV9UUlkodGV4dHVyZUltcGwtPmdldE5hdGl2ZVRleHR1cmUoJnRleFN0b3JhZ2UpKTsKIAog
ICAgICAgICAvLyBUZXh0dXJlIHNob3VsZCBiZSBjb21wbGV0ZSBhbmQgaGF2ZSBhIHN0b3JhZ2UK
ICAgICAgICAgQVNTRVJUKHRleFN0b3JhZ2UpOwpAQCAtMTI1NCwxNiArMTMzMCw4IEBACiAKICAg
ICAgICAgVGV4dHVyZVN0b3JhZ2UxMSAqc3RvcmFnZTExID0gR2V0QXM8VGV4dHVyZVN0b3JhZ2Ux
MT4odGV4U3RvcmFnZSk7CiAKLSAgICAgICAgLy8gTWFrZSBzdXJlIHRvIGFkZCB0aGUgbGV2ZWwg
b2Zmc2V0IGZvciBvdXIgdGlueSBjb21wcmVzc2VkIHRleHR1cmUgd29ya2Fyb3VuZAotICAgICAg
ICBnbDo6VGV4dHVyZVN0YXRlIHRleHR1cmVTdGF0ZSA9IHRleHR1cmUtPmdldFRleHR1cmVTdGF0
ZSgpOwotICAgICAgICB0ZXh0dXJlU3RhdGUuYmFzZUxldmVsICs9IHN0b3JhZ2UxMS0+Z2V0VG9w
TGV2ZWwoKTsKKyAgICAgICAgQU5HTEVfVFJZKHN0b3JhZ2UxMS0+Z2V0U1JWKHRleHR1cmUtPmdl
dFRleHR1cmVTdGF0ZSgpLCAmdGV4dHVyZVNSVikpOwogCi0gICAgICAgIGVycm9yID0gc3RvcmFn
ZTExLT5nZXRTUlYodGV4dHVyZVN0YXRlLCAmdGV4dHVyZVNSVik7Ci0gICAgICAgIGlmIChlcnJv
ci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAg
ICAgfQotCiAgICAgICAgIC8vIElmIHdlIGdldCBOVUxMIGJhY2sgZnJvbSBnZXRTUlYgaGVyZSwg
c29tZXRoaW5nIHdlbnQgd3JvbmcgaW4gdGhlIHRleHR1cmUgY2xhc3MgYW5kIHdlJ3JlIHVuZXhw
ZWN0ZWRseQogICAgICAgICAvLyBtaXNzaW5nIHRoZSBzaGFkZXIgcmVzb3VyY2UgdmlldwogICAg
ICAgICBBU1NFUlQodGV4dHVyZVNSViAhPSBOVUxMKTsKQEAgLTEyNzEsOCArMTMzOSwxMCBAQAog
ICAgICAgICB0ZXh0dXJlSW1wbC0+cmVzZXREaXJ0eSgpOwogICAgIH0KIAotICAgIEFTU0VSVCgo
dHlwZSA9PSBnbDo6U0FNUExFUl9QSVhFTCAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGlu
ZGV4KSA8IGdldFJlbmRlcmVyQ2FwcygpLm1heFRleHR1cmVJbWFnZVVuaXRzKSB8fAotICAgICAg
ICAgICAodHlwZSA9PSBnbDo6U0FNUExFUl9WRVJURVggJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQg
aW50PihpbmRleCkgPCBnZXRSZW5kZXJlckNhcHMoKS5tYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0
cykpOworICAgIEFTU0VSVCgodHlwZSA9PSBnbDo6U0FNUExFUl9QSVhFTCAmJgorICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihpbmRleCkgPCBnZXROYXRpdmVDYXBzKCkubWF4
VGV4dHVyZUltYWdlVW5pdHMpIHx8CisgICAgICAgICAgICh0eXBlID09IGdsOjpTQU1QTEVSX1ZF
UlRFWCAmJgorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihpbmRleCkgPCBn
ZXROYXRpdmVDYXBzKCkubWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMpKTsKIAogICAgIG1TdGF0
ZU1hbmFnZXIuc2V0U2hhZGVyUmVzb3VyY2UodHlwZSwgaW5kZXgsIHRleHR1cmVTUlYpOwogCkBA
IC0xMjc5LDcgKzEzNDksNyBAQAogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwog
fQogCi1nbDo6RXJyb3IgUmVuZGVyZXIxMTo6c2V0VW5pZm9ybUJ1ZmZlcnMoY29uc3QgZ2w6OkRh
dGEgJmRhdGEsCitnbDo6RXJyb3IgUmVuZGVyZXIxMTo6c2V0VW5pZm9ybUJ1ZmZlcnMoY29uc3Qg
Z2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxHTGludD4gJnZlcnRleFVuaWZvcm1CdWZmZXJzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9y
PEdMaW50PiAmZnJhZ21lbnRVbmlmb3JtQnVmZmVycykKIHsKQEAgLTEyOTMsNjUgKzEzNjMsNTIg
QEAKICAgICAgICAgfQogCiAgICAgICAgIGNvbnN0IE9mZnNldEJpbmRpbmdQb2ludGVyPGdsOjpC
dWZmZXI+ICZ1bmlmb3JtQnVmZmVyID0KLSAgICAgICAgICAgIGRhdGEuc3RhdGUtPmdldEluZGV4
ZWRVbmlmb3JtQnVmZmVyKGJpbmRpbmcpOworICAgICAgICAgICAgZGF0YS5nZXRTdGF0ZSgpLmdl
dEluZGV4ZWRVbmlmb3JtQnVmZmVyKGJpbmRpbmcpOwogICAgICAgICBHTGludHB0ciB1bmlmb3Jt
QnVmZmVyT2Zmc2V0ID0gdW5pZm9ybUJ1ZmZlci5nZXRPZmZzZXQoKTsKICAgICAgICAgR0xzaXpl
aXB0ciB1bmlmb3JtQnVmZmVyU2l6ZSA9IHVuaWZvcm1CdWZmZXIuZ2V0U2l6ZSgpOwogCi0gICAg
ICAgIGlmICh1bmlmb3JtQnVmZmVyLmdldCgpICE9IG51bGxwdHIpCisgICAgICAgIGlmICh1bmlm
b3JtQnVmZmVyLmdldCgpID09IG51bGxwdHIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEJ1ZmZl
cjExICpidWZmZXJTdG9yYWdlID0gR2V0SW1wbEFzPEJ1ZmZlcjExPih1bmlmb3JtQnVmZmVyLmdl
dCgpKTsKLSAgICAgICAgICAgIElEM0QxMUJ1ZmZlciAqY29uc3RhbnRCdWZmZXI7CisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAobVJlbmRlcmVyMTFE
ZXZpY2VDYXBzLnN1cHBvcnRzQ29uc3RhbnRCdWZmZXJPZmZzZXRzKQorICAgICAgICBCdWZmZXIx
MSAqYnVmZmVyU3RvcmFnZSAgICAgID0gR2V0SW1wbEFzPEJ1ZmZlcjExPih1bmlmb3JtQnVmZmVy
LmdldCgpKTsKKyAgICAgICAgSUQzRDExQnVmZmVyICpjb25zdGFudEJ1ZmZlciA9IG51bGxwdHI7
CisKKyAgICAgICAgQU5HTEVfVFJZX1JFU1VMVCgKKyAgICAgICAgICAgIGJ1ZmZlclN0b3JhZ2Ut
PmdldENvbnN0YW50QnVmZmVyUmFuZ2UodW5pZm9ybUJ1ZmZlck9mZnNldCwgdW5pZm9ybUJ1ZmZl
clNpemUpLAorICAgICAgICAgICAgY29uc3RhbnRCdWZmZXIpOworCisgICAgICAgIGlmICghY29u
c3RhbnRCdWZmZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
T1VUX09GX01FTU9SWSwgIkVycm9yIHJldHJpZXZpbmcgY29uc3RhbnQgYnVmZmVyIik7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAobUN1cnJlbnRDb25zdGFudEJ1ZmZlclZTW3VuaWZvcm1CdWZm
ZXJJbmRleF0gIT0gYnVmZmVyU3RvcmFnZS0+Z2V0U2VyaWFsKCkgfHwKKyAgICAgICAgICAgIG1D
dXJyZW50Q29uc3RhbnRCdWZmZXJWU09mZnNldFt1bmlmb3JtQnVmZmVySW5kZXhdICE9IHVuaWZv
cm1CdWZmZXJPZmZzZXQgfHwKKyAgICAgICAgICAgIG1DdXJyZW50Q29uc3RhbnRCdWZmZXJWU1Np
emVbdW5pZm9ybUJ1ZmZlckluZGV4XSAhPSB1bmlmb3JtQnVmZmVyU2l6ZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKG1SZW5kZXJlcjExRGV2aWNlQ2Fwcy5zdXBwb3J0c0NvbnN0YW50QnVm
ZmVyT2Zmc2V0cyAmJiB1bmlmb3JtQnVmZmVyU2l6ZSAhPSAwKQogICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGF1dG8gYnVmZmVyT3JFcnJvciA9IGJ1ZmZlclN0b3JhZ2UtPmdldEJ1ZmZl
cihCVUZGRVJfVVNBR0VfVU5JRk9STSk7Ci0gICAgICAgICAgICAgICAgaWYgKGJ1ZmZlck9yRXJy
b3IuaXNFcnJvcigpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGJ1ZmZlck9yRXJyb3IuZ2V0RXJyb3IoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgY29uc3RhbnRCdWZmZXIgPSBidWZmZXJPckVycm9yLmdldFJlc3VsdCgpOworICAg
ICAgICAgICAgICAgIFVJTlQgZmlyc3RDb25zdGFudCA9IDAsIG51bUNvbnN0YW50cyA9IDA7Cisg
ICAgICAgICAgICAgICAgQ2FsY3VsYXRlQ29uc3RhbnRCdWZmZXJQYXJhbXModW5pZm9ybUJ1ZmZl
ck9mZnNldCwgdW5pZm9ybUJ1ZmZlclNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJmZpcnN0Q29uc3RhbnQsICZudW1Db25zdGFudHMpOworICAgICAg
ICAgICAgICAgIG1EZXZpY2VDb250ZXh0MS0+VlNTZXRDb25zdGFudEJ1ZmZlcnMxKAorICAgICAg
ICAgICAgICAgICAgICBnZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1CdWZmZXJzKCkgKworICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pih1bmlmb3JtQnVmZmVy
SW5kZXgpLAorICAgICAgICAgICAgICAgICAgICAxLCAmY29uc3RhbnRCdWZmZXIsICZmaXJzdENv
bnN0YW50LCAmbnVtQ29uc3RhbnRzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlck9yRXJyb3IgPQotICAg
ICAgICAgICAgICAgICAgICBidWZmZXJTdG9yYWdlLT5nZXRDb25zdGFudEJ1ZmZlclJhbmdlKHVu
aWZvcm1CdWZmZXJPZmZzZXQsIHVuaWZvcm1CdWZmZXJTaXplKTsKLSAgICAgICAgICAgICAgICBp
ZiAoYnVmZmVyT3JFcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gYnVmZmVyT3JFcnJvci5nZXRFcnJvcigpOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBjb25zdGFudEJ1ZmZlciA9IGJ1ZmZlck9yRXJyb3IuZ2V0
UmVzdWx0KCk7CisgICAgICAgICAgICAgICAgbURldmljZUNvbnRleHQtPlZTU2V0Q29uc3RhbnRC
dWZmZXJzKAorICAgICAgICAgICAgICAgICAgICBnZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1CdWZm
ZXJzKCkgKworICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50
Pih1bmlmb3JtQnVmZmVySW5kZXgpLAorICAgICAgICAgICAgICAgICAgICAxLCAmY29uc3RhbnRC
dWZmZXIpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoIWNvbnN0YW50QnVmZmVy
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VU
X09GX01FTU9SWSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChtQ3VycmVudENv
bnN0YW50QnVmZmVyVlNbdW5pZm9ybUJ1ZmZlckluZGV4XSAhPSBidWZmZXJTdG9yYWdlLT5nZXRT
ZXJpYWwoKSB8fAotICAgICAgICAgICAgICAgIG1DdXJyZW50Q29uc3RhbnRCdWZmZXJWU09mZnNl
dFt1bmlmb3JtQnVmZmVySW5kZXhdICE9IHVuaWZvcm1CdWZmZXJPZmZzZXQgfHwKLSAgICAgICAg
ICAgICAgICBtQ3VycmVudENvbnN0YW50QnVmZmVyVlNTaXplW3VuaWZvcm1CdWZmZXJJbmRleF0g
IT0gdW5pZm9ybUJ1ZmZlclNpemUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYg
KG1SZW5kZXJlcjExRGV2aWNlQ2Fwcy5zdXBwb3J0c0NvbnN0YW50QnVmZmVyT2Zmc2V0cyAmJiB1
bmlmb3JtQnVmZmVyU2l6ZSAhPSAwKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgVUlOVCBmaXJzdENvbnN0YW50ID0gMCwgbnVtQ29uc3RhbnRzID0gMDsKLSAgICAgICAg
ICAgICAgICAgICAgQ2FsY3VsYXRlQ29uc3RhbnRCdWZmZXJQYXJhbXModW5pZm9ybUJ1ZmZlck9m
ZnNldCwgdW5pZm9ybUJ1ZmZlclNpemUsICZmaXJzdENvbnN0YW50LCAmbnVtQ29uc3RhbnRzKTsK
LSAgICAgICAgICAgICAgICAgICAgbURldmljZUNvbnRleHQxLT5WU1NldENvbnN0YW50QnVmZmVy
czEoCi0gICAgICAgICAgICAgICAgICAgICAgICBnZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1CdWZm
ZXJzKCkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVk
IGludD4odW5pZm9ybUJ1ZmZlckluZGV4KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIDEsICZj
b25zdGFudEJ1ZmZlciwgJmZpcnN0Q29uc3RhbnQsICZudW1Db25zdGFudHMpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICBtRGV2aWNlQ29udGV4dC0+VlNTZXRDb25zdGFudEJ1ZmZlcnMoCi0gICAg
ICAgICAgICAgICAgICAgICAgICBnZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1CdWZmZXJzKCkgKwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4odW5p
Zm9ybUJ1ZmZlckluZGV4KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIDEsICZjb25zdGFudEJ1
ZmZlcik7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgbUN1cnJlbnRDb25z
dGFudEJ1ZmZlclZTW3VuaWZvcm1CdWZmZXJJbmRleF0gPSBidWZmZXJTdG9yYWdlLT5nZXRTZXJp
YWwoKTsKLSAgICAgICAgICAgICAgICBtQ3VycmVudENvbnN0YW50QnVmZmVyVlNPZmZzZXRbdW5p
Zm9ybUJ1ZmZlckluZGV4XSA9IHVuaWZvcm1CdWZmZXJPZmZzZXQ7Ci0gICAgICAgICAgICAgICAg
bUN1cnJlbnRDb25zdGFudEJ1ZmZlclZTU2l6ZVt1bmlmb3JtQnVmZmVySW5kZXhdID0gdW5pZm9y
bUJ1ZmZlclNpemU7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBtQ3VycmVudENvbnN0YW50
QnVmZmVyVlNbdW5pZm9ybUJ1ZmZlckluZGV4XSAgICAgICA9IGJ1ZmZlclN0b3JhZ2UtPmdldFNl
cmlhbCgpOworICAgICAgICAgICAgbUN1cnJlbnRDb25zdGFudEJ1ZmZlclZTT2Zmc2V0W3VuaWZv
cm1CdWZmZXJJbmRleF0gPSB1bmlmb3JtQnVmZmVyT2Zmc2V0OworICAgICAgICAgICAgbUN1cnJl
bnRDb25zdGFudEJ1ZmZlclZTU2l6ZVt1bmlmb3JtQnVmZmVySW5kZXhdICAgPSB1bmlmb3JtQnVm
ZmVyU2l6ZTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTM2NSwxMjUgKzE0MjIsOTcgQEAKICAg
ICAgICAgfQogCiAgICAgICAgIGNvbnN0IE9mZnNldEJpbmRpbmdQb2ludGVyPGdsOjpCdWZmZXI+
ICZ1bmlmb3JtQnVmZmVyID0KLSAgICAgICAgICAgIGRhdGEuc3RhdGUtPmdldEluZGV4ZWRVbmlm
b3JtQnVmZmVyKGJpbmRpbmcpOworICAgICAgICAgICAgZGF0YS5nZXRTdGF0ZSgpLmdldEluZGV4
ZWRVbmlmb3JtQnVmZmVyKGJpbmRpbmcpOwogICAgICAgICBHTGludHB0ciB1bmlmb3JtQnVmZmVy
T2Zmc2V0ID0gdW5pZm9ybUJ1ZmZlci5nZXRPZmZzZXQoKTsKICAgICAgICAgR0xzaXplaXB0ciB1
bmlmb3JtQnVmZmVyU2l6ZSA9IHVuaWZvcm1CdWZmZXIuZ2V0U2l6ZSgpOwogCi0gICAgICAgIGlm
ICh1bmlmb3JtQnVmZmVyLmdldCgpICE9IG51bGxwdHIpCisgICAgICAgIGlmICh1bmlmb3JtQnVm
ZmVyLmdldCgpID09IG51bGxwdHIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEJ1ZmZlcjExICpi
dWZmZXJTdG9yYWdlID0gR2V0SW1wbEFzPEJ1ZmZlcjExPih1bmlmb3JtQnVmZmVyLmdldCgpKTsK
LSAgICAgICAgICAgIElEM0QxMUJ1ZmZlciAqY29uc3RhbnRCdWZmZXI7CisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAobVJlbmRlcmVyMTFEZXZpY2VD
YXBzLnN1cHBvcnRzQ29uc3RhbnRCdWZmZXJPZmZzZXRzKQorICAgICAgICBCdWZmZXIxMSAqYnVm
ZmVyU3RvcmFnZSAgICAgID0gR2V0SW1wbEFzPEJ1ZmZlcjExPih1bmlmb3JtQnVmZmVyLmdldCgp
KTsKKyAgICAgICAgSUQzRDExQnVmZmVyICpjb25zdGFudEJ1ZmZlciA9IG51bGxwdHI7CisKKyAg
ICAgICAgQU5HTEVfVFJZX1JFU1VMVCgKKyAgICAgICAgICAgIGJ1ZmZlclN0b3JhZ2UtPmdldENv
bnN0YW50QnVmZmVyUmFuZ2UodW5pZm9ybUJ1ZmZlck9mZnNldCwgdW5pZm9ybUJ1ZmZlclNpemUp
LAorICAgICAgICAgICAgY29uc3RhbnRCdWZmZXIpOworCisgICAgICAgIGlmICghY29uc3RhbnRC
dWZmZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09G
X01FTU9SWSwgIkVycm9yIHJldHJpZXZpbmcgY29uc3RhbnQgYnVmZmVyIik7CisgICAgICAgIH0K
KworICAgICAgICBpZiAobUN1cnJlbnRDb25zdGFudEJ1ZmZlclBTW3VuaWZvcm1CdWZmZXJJbmRl
eF0gIT0gYnVmZmVyU3RvcmFnZS0+Z2V0U2VyaWFsKCkgfHwKKyAgICAgICAgICAgIG1DdXJyZW50
Q29uc3RhbnRCdWZmZXJQU09mZnNldFt1bmlmb3JtQnVmZmVySW5kZXhdICE9IHVuaWZvcm1CdWZm
ZXJPZmZzZXQgfHwKKyAgICAgICAgICAgIG1DdXJyZW50Q29uc3RhbnRCdWZmZXJQU1NpemVbdW5p
Zm9ybUJ1ZmZlckluZGV4XSAhPSB1bmlmb3JtQnVmZmVyU2l6ZSkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKG1SZW5kZXJlcjExRGV2aWNlQ2Fwcy5zdXBwb3J0c0NvbnN0YW50QnVmZmVyT2Zm
c2V0cyAmJiB1bmlmb3JtQnVmZmVyU2l6ZSAhPSAwKQogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGF1dG8gYnVmZmVyT3JFcnJvciA9IGJ1ZmZlclN0b3JhZ2UtPmdldEJ1ZmZlcihCVUZG
RVJfVVNBR0VfVU5JRk9STSk7Ci0gICAgICAgICAgICAgICAgaWYgKGJ1ZmZlck9yRXJyb3IuaXNF
cnJvcigpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1
ZmZlck9yRXJyb3IuZ2V0RXJyb3IoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgY29uc3RhbnRCdWZmZXIgPSBidWZmZXJPckVycm9yLmdldFJlc3VsdCgpOworICAgICAgICAg
ICAgICAgIFVJTlQgZmlyc3RDb25zdGFudCA9IDAsIG51bUNvbnN0YW50cyA9IDA7CisgICAgICAg
ICAgICAgICAgQ2FsY3VsYXRlQ29uc3RhbnRCdWZmZXJQYXJhbXModW5pZm9ybUJ1ZmZlck9mZnNl
dCwgdW5pZm9ybUJ1ZmZlclNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJmZpcnN0Q29uc3RhbnQsICZudW1Db25zdGFudHMpOworICAgICAgICAgICAg
ICAgIG1EZXZpY2VDb250ZXh0MS0+UFNTZXRDb25zdGFudEJ1ZmZlcnMxKAorICAgICAgICAgICAg
ICAgICAgICBnZXRSZXNlcnZlZEZyYWdtZW50VW5pZm9ybUJ1ZmZlcnMoKSArCisgICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHVuaWZvcm1CdWZmZXJJbmRl
eCksCisgICAgICAgICAgICAgICAgICAgIDEsICZjb25zdGFudEJ1ZmZlciwgJmZpcnN0Q29uc3Rh
bnQsICZudW1Db25zdGFudHMpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVyT3JFcnJvciA9Ci0gICAgICAg
ICAgICAgICAgICAgIGJ1ZmZlclN0b3JhZ2UtPmdldENvbnN0YW50QnVmZmVyUmFuZ2UodW5pZm9y
bUJ1ZmZlck9mZnNldCwgdW5pZm9ybUJ1ZmZlclNpemUpOwotICAgICAgICAgICAgICAgIGlmIChi
dWZmZXJPckVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBidWZmZXJPckVycm9yLmdldEVycm9yKCk7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGNvbnN0YW50QnVmZmVyID0gYnVmZmVyT3JFcnJvci5nZXRSZXN1
bHQoKTsKKyAgICAgICAgICAgICAgICBtRGV2aWNlQ29udGV4dC0+UFNTZXRDb25zdGFudEJ1ZmZl
cnMoCisgICAgICAgICAgICAgICAgICAgIGdldFJlc2VydmVkRnJhZ21lbnRVbmlmb3JtQnVmZmVy
cygpICsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4o
dW5pZm9ybUJ1ZmZlckluZGV4KSwKKyAgICAgICAgICAgICAgICAgICAgMSwgJmNvbnN0YW50QnVm
ZmVyKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCFjb25zdGFudEJ1ZmZlcikK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9P
Rl9NRU1PUlkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAobUN1cnJlbnRDb25z
dGFudEJ1ZmZlclBTW3VuaWZvcm1CdWZmZXJJbmRleF0gIT0gYnVmZmVyU3RvcmFnZS0+Z2V0U2Vy
aWFsKCkgfHwKLSAgICAgICAgICAgICAgICBtQ3VycmVudENvbnN0YW50QnVmZmVyUFNPZmZzZXRb
dW5pZm9ybUJ1ZmZlckluZGV4XSAhPSB1bmlmb3JtQnVmZmVyT2Zmc2V0IHx8Ci0gICAgICAgICAg
ICAgICAgbUN1cnJlbnRDb25zdGFudEJ1ZmZlclBTU2l6ZVt1bmlmb3JtQnVmZmVySW5kZXhdICE9
IHVuaWZvcm1CdWZmZXJTaXplKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICht
UmVuZGVyZXIxMURldmljZUNhcHMuc3VwcG9ydHNDb25zdGFudEJ1ZmZlck9mZnNldHMgJiYgdW5p
Zm9ybUJ1ZmZlclNpemUgIT0gMCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgIFVJTlQgZmlyc3RDb25zdGFudCA9IDAsIG51bUNvbnN0YW50cyA9IDA7Ci0gICAgICAgICAg
ICAgICAgICAgIENhbGN1bGF0ZUNvbnN0YW50QnVmZmVyUGFyYW1zKHVuaWZvcm1CdWZmZXJPZmZz
ZXQsIHVuaWZvcm1CdWZmZXJTaXplLCAmZmlyc3RDb25zdGFudCwgJm51bUNvbnN0YW50cyk7Ci0g
ICAgICAgICAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0MS0+UFNTZXRDb25zdGFudEJ1ZmZlcnMx
KAotICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UmVzZXJ2ZWRGcmFnbWVudFVuaWZvcm1CdWZm
ZXJzKCkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVk
IGludD4odW5pZm9ybUJ1ZmZlckluZGV4KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIDEsICZj
b25zdGFudEJ1ZmZlciwgJmZpcnN0Q29uc3RhbnQsICZudW1Db25zdGFudHMpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICBtRGV2aWNlQ29udGV4dC0+UFNTZXRDb25zdGFudEJ1ZmZlcnMoCi0gICAg
ICAgICAgICAgICAgICAgICAgICBnZXRSZXNlcnZlZEZyYWdtZW50VW5pZm9ybUJ1ZmZlcnMoKSAr
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pih1
bmlmb3JtQnVmZmVySW5kZXgpLAotICAgICAgICAgICAgICAgICAgICAgICAgMSwgJmNvbnN0YW50
QnVmZmVyKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBtQ3VycmVudENv
bnN0YW50QnVmZmVyUFNbdW5pZm9ybUJ1ZmZlckluZGV4XSA9IGJ1ZmZlclN0b3JhZ2UtPmdldFNl
cmlhbCgpOwotICAgICAgICAgICAgICAgIG1DdXJyZW50Q29uc3RhbnRCdWZmZXJQU09mZnNldFt1
bmlmb3JtQnVmZmVySW5kZXhdID0gdW5pZm9ybUJ1ZmZlck9mZnNldDsKLSAgICAgICAgICAgICAg
ICBtQ3VycmVudENvbnN0YW50QnVmZmVyUFNTaXplW3VuaWZvcm1CdWZmZXJJbmRleF0gPSB1bmlm
b3JtQnVmZmVyU2l6ZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1DdXJyZW50Q29uc3Rh
bnRCdWZmZXJQU1t1bmlmb3JtQnVmZmVySW5kZXhdICAgICAgID0gYnVmZmVyU3RvcmFnZS0+Z2V0
U2VyaWFsKCk7CisgICAgICAgICAgICBtQ3VycmVudENvbnN0YW50QnVmZmVyUFNPZmZzZXRbdW5p
Zm9ybUJ1ZmZlckluZGV4XSA9IHVuaWZvcm1CdWZmZXJPZmZzZXQ7CisgICAgICAgICAgICBtQ3Vy
cmVudENvbnN0YW50QnVmZmVyUFNTaXplW3VuaWZvcm1CdWZmZXJJbmRleF0gICA9IHVuaWZvcm1C
dWZmZXJTaXplOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9O
T19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJvciBSZW5k
ZXJlcjExOjp1cGRhdGVTdGF0ZShjb25zdCBnbDo6RGF0YSAmZGF0YSwgR0xlbnVtIGRyYXdNb2Rl
KQorZ2w6OkVycm9yIFJlbmRlcmVyMTE6OnVwZGF0ZVN0YXRlKGNvbnN0IGdsOjpDb250ZXh0U3Rh
dGUgJmRhdGEsIEdMZW51bSBkcmF3TW9kZSkKIHsKKyAgICBjb25zdCBhdXRvICZnbFN0YXRlID0g
ZGF0YS5nZXRTdGF0ZSgpOworCiAgICAgLy8gQXBwbGllcyB0aGUgcmVuZGVyIHRhcmdldCBzdXJm
YWNlLCBkZXB0aCBzdGVuY2lsIHN1cmZhY2UsIHZpZXdwb3J0IHJlY3RhbmdsZSBhbmQKICAgICAv
LyBzY2lzc29yIHJlY3RhbmdsZSB0byB0aGUgcmVuZGVyZXIKLSAgICBjb25zdCBnbDo6RnJhbWVi
dWZmZXIgKmZyYW1lYnVmZmVyT2JqZWN0ID0gZGF0YS5zdGF0ZS0+Z2V0RHJhd0ZyYW1lYnVmZmVy
KCk7Ci0gICAgQVNTRVJUKGZyYW1lYnVmZmVyT2JqZWN0ICYmIGZyYW1lYnVmZmVyT2JqZWN0LT5j
aGVja1N0YXR1cyhkYXRhKSA9PSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSk7Ci0gICAgZ2w6OkVy
cm9yIGVycm9yID0gYXBwbHlSZW5kZXJUYXJnZXQoZnJhbWVidWZmZXJPYmplY3QpOwotICAgIGlm
IChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQor
ICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBnbFN0YXRlLmdldERyYXdGcmFtZWJ1
ZmZlcigpOworICAgIEFTU0VSVChmcmFtZWJ1ZmZlciAmJiAhZnJhbWVidWZmZXItPmhhc0FueURp
cnR5Qml0KCkgJiYgZnJhbWVidWZmZXItPmNvbXBsZXRlKGRhdGEpKTsKKyAgICBBTkdMRV9UUlko
YXBwbHlSZW5kZXJUYXJnZXQoZnJhbWVidWZmZXIpKTsKIAogICAgIC8vIFNldCB0aGUgcHJlc2Vu
dCBwYXRoIHN0YXRlCi0gICAgY29uc3QgYm9vbCBwcmVzZW50UGF0aEZhc3RBY3RpdmUgPQotICAg
ICAgICBVc2VQcmVzZW50UGF0aEZhc3QodGhpcywgZnJhbWVidWZmZXJPYmplY3QtPmdldEZpcnN0
Q29sb3JidWZmZXIoKSk7Ci0gICAgbVN0YXRlTWFuYWdlci51cGRhdGVQcmVzZW50UGF0aChwcmVz
ZW50UGF0aEZhc3RBY3RpdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
cmFtZWJ1ZmZlck9iamVjdC0+Z2V0Rmlyc3RDb2xvcmJ1ZmZlcigpKTsKKyAgICBhdXRvIGZpcnN0
Q29sb3JBdHRhY2htZW50ICAgICAgICA9IGZyYW1lYnVmZmVyLT5nZXRGaXJzdENvbG9yYnVmZmVy
KCk7CisgICAgY29uc3QgYm9vbCBwcmVzZW50UGF0aEZhc3RBY3RpdmUgPSBVc2VQcmVzZW50UGF0
aEZhc3QodGhpcywgZmlyc3RDb2xvckF0dGFjaG1lbnQpOworICAgIG1TdGF0ZU1hbmFnZXIudXBk
YXRlUHJlc2VudFBhdGgocHJlc2VudFBhdGhGYXN0QWN0aXZlLCBmaXJzdENvbG9yQXR0YWNobWVu
dCk7CiAKICAgICAvLyBTZXR0aW5nIHZpZXdwb3J0IHN0YXRlCi0gICAgbVN0YXRlTWFuYWdlci5z
ZXRWaWV3cG9ydChkYXRhLmNhcHMsIGRhdGEuc3RhdGUtPmdldFZpZXdwb3J0KCksIGRhdGEuc3Rh
dGUtPmdldE5lYXJQbGFuZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5z
dGF0ZS0+Z2V0RmFyUGxhbmUoKSk7CisgICAgbVN0YXRlTWFuYWdlci5zZXRWaWV3cG9ydCgmZGF0
YS5nZXRDYXBzKCksIGdsU3RhdGUuZ2V0Vmlld3BvcnQoKSwgZ2xTdGF0ZS5nZXROZWFyUGxhbmUo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsU3RhdGUuZ2V0RmFyUGxhbmUoKSk7
CiAKICAgICAvLyBTZXR0aW5nIHNjaXNzb3Igc3RhdGUKLSAgICBtU3RhdGVNYW5hZ2VyLnNldFNj
aXNzb3JSZWN0YW5nbGUoZGF0YS5zdGF0ZS0+Z2V0U2Npc3NvcigpLCBkYXRhLnN0YXRlLT5pc1Nj
aXNzb3JUZXN0RW5hYmxlZCgpKTsKKyAgICBtU3RhdGVNYW5hZ2VyLnNldFNjaXNzb3JSZWN0YW5n
bGUoZ2xTdGF0ZS5nZXRTY2lzc29yKCksIGdsU3RhdGUuaXNTY2lzc29yVGVzdEVuYWJsZWQoKSk7
CiAKICAgICAvLyBBcHBseWluZyByYXN0ZXJpemVyIHN0YXRlIHRvIEQzRDExIGRldmljZQotICAg
IGludCBzYW1wbGVzICAgICAgICAgICAgICAgICAgICA9IGZyYW1lYnVmZmVyT2JqZWN0LT5nZXRT
YW1wbGVzKGRhdGEpOwotICAgIGdsOjpSYXN0ZXJpemVyU3RhdGUgcmFzdGVyaXplciA9IGRhdGEu
c3RhdGUtPmdldFJhc3Rlcml6ZXJTdGF0ZSgpOworICAgIGludCBzYW1wbGVzICAgICAgICAgICAg
ICAgICAgICA9IGZyYW1lYnVmZmVyLT5nZXRTYW1wbGVzKGRhdGEpOworICAgIGdsOjpSYXN0ZXJp
emVyU3RhdGUgcmFzdGVyaXplciA9IGdsU3RhdGUuZ2V0UmFzdGVyaXplclN0YXRlKCk7CiAgICAg
cmFzdGVyaXplci5wb2ludERyYXdNb2RlICAgICAgID0gKGRyYXdNb2RlID09IEdMX1BPSU5UUyk7
CiAgICAgcmFzdGVyaXplci5tdWx0aVNhbXBsZSAgICAgICAgID0gKHNhbXBsZXMgIT0gMCk7CiAK
LSAgICBlcnJvciA9IG1TdGF0ZU1hbmFnZXIuc2V0UmFzdGVyaXplclN0YXRlKHJhc3Rlcml6ZXIp
OwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7
Ci0gICAgfQorICAgIEFOR0xFX1RSWShtU3RhdGVNYW5hZ2VyLnNldFJhc3Rlcml6ZXJTdGF0ZShy
YXN0ZXJpemVyKSk7CiAKICAgICAvLyBTZXR0aW5nIGJsZW5kIHN0YXRlCiAgICAgdW5zaWduZWQg
aW50IG1hc2sgPSBHZXRCbGVuZFNhbXBsZU1hc2soZGF0YSwgc2FtcGxlcyk7Ci0gICAgZXJyb3Ig
PSBtU3RhdGVNYW5hZ2VyLnNldEJsZW5kU3RhdGUoZnJhbWVidWZmZXJPYmplY3QsIGRhdGEuc3Rh
dGUtPmdldEJsZW5kU3RhdGUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhLnN0YXRlLT5nZXRCbGVuZENvbG9yKCksIG1hc2spOwotICAgIGlmIChlcnJvci5p
c0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xF
X1RSWShtU3RhdGVNYW5hZ2VyLnNldEJsZW5kU3RhdGUoZnJhbWVidWZmZXIsIGdsU3RhdGUuZ2V0
QmxlbmRTdGF0ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2xTdGF0ZS5nZXRCbGVuZENvbG9yKCksIG1hc2spKTsKIAogICAgIC8vIFNldHRpbmcgZGVwdGgg
c3RlbmNpbCBzdGF0ZQotICAgIGVycm9yID0gbVN0YXRlTWFuYWdlci5zZXREZXB0aFN0ZW5jaWxT
dGF0ZSgqZGF0YS5zdGF0ZSk7Ci0gICAgcmV0dXJuIGVycm9yOwotfQorICAgIEFOR0xFX1RSWSht
U3RhdGVNYW5hZ2VyLnNldERlcHRoU3RlbmNpbFN0YXRlKGdsU3RhdGUpKTsKIAotdm9pZCBSZW5k
ZXJlcjExOjpzeW5jU3RhdGUoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwgY29uc3QgZ2w6OlN0YXRl
OjpEaXJ0eUJpdHMgJmJpdG1hc2spCi17Ci0gICAgbVN0YXRlTWFuYWdlci5zeW5jU3RhdGUoc3Rh
dGUsIGJpdG1hc2spOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBib29sIFJlbmRl
cmVyMTE6OmFwcGx5UHJpbWl0aXZlVHlwZShHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgYm9v
bCB1c2VzUG9pbnRTaXplKQpAQCAtMTUyNCw3ICsxNTUzLDcgQEAKICAgICByZXR1cm4gY291bnQg
Pj0gbWluQ291bnQ7CiB9CiAKLWdsOjpFcnJvciBSZW5kZXJlcjExOjphcHBseVJlbmRlclRhcmdl
dChjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyKQorZ2w6OkVycm9yIFJlbmRlcmVy
MTE6OmFwcGx5UmVuZGVyVGFyZ2V0KGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIpCiB7CiAg
ICAgcmV0dXJuIG1TdGF0ZU1hbmFnZXIuc3luY0ZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsKIH0K
QEAgLTE1MzksMTggKzE1NjgsMTAgQEAKICAgICBjb25zdCBhdXRvICZ2ZXJ0ZXhBcnJheSA9IHN0
YXRlLmdldFZlcnRleEFycmF5KCk7CiAgICAgYXV0byAqdmVydGV4QXJyYXkxMSAgICAgPSBHZXRJ
bXBsQXM8VmVydGV4QXJyYXkxMT4odmVydGV4QXJyYXkpOwogCi0gICAgZ2w6OkVycm9yIGVycm9y
ID0gdmVydGV4QXJyYXkxMS0+dXBkYXRlRGlydHlBbmREeW5hbWljQXR0cmlicyhtVmVydGV4RGF0
YU1hbmFnZXIsIHN0YXRlLCBmaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCBpbnN0YW5jZXMpOwotICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAg
fQorICAgIEFOR0xFX1RSWSh2ZXJ0ZXhBcnJheTExLT51cGRhdGVEaXJ0eUFuZER5bmFtaWNBdHRy
aWJzKG1WZXJ0ZXhEYXRhTWFuYWdlciwgc3RhdGUsIGZpcnN0LCBjb3VudCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZXMp
KTsKIAotICAgIGVycm9yID0gbVN0YXRlTWFuYWdlci51cGRhdGVDdXJyZW50VmFsdWVBdHRyaWJz
KHN0YXRlLCBtVmVydGV4RGF0YU1hbmFnZXIpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0g
ICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShtU3RhdGVN
YW5hZ2VyLnVwZGF0ZUN1cnJlbnRWYWx1ZUF0dHJpYnMoc3RhdGUsIG1WZXJ0ZXhEYXRhTWFuYWdl
cikpOwogCiAgICAgLy8gSWYgaW5kZXggaW5mb3JtYXRpb24gaXMgcGFzc2VkLCBtYXJrIGl0IHdp
dGggdGhlIGN1cnJlbnQgY2hhbmdlZCBzdGF0dXMuCiAgICAgaWYgKGluZGV4SW5mbykKQEAgLTE1
ODAsNyArMTYwMSw3IEBACiAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJv
ciBSZW5kZXJlcjExOjphcHBseUluZGV4QnVmZmVyKGNvbnN0IGdsOjpEYXRhICZkYXRhLAorZ2w6
OkVycm9yIFJlbmRlcmVyMTE6OmFwcGx5SW5kZXhCdWZmZXIoY29uc3QgZ2w6OkNvbnRleHRTdGF0
ZSAmZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
dm9pZCAqaW5kaWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gbW9kZSwKQEAgLTE1ODcsMjggKzE2MDgsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVHJhbnNsYXRlZEluZGV4RGF0YSAqaW5kZXhJbmZvKQogewotICAgIGdsOjpW
ZXJ0ZXhBcnJheSAqdmFvICAgICAgICAgICA9IGRhdGEuc3RhdGUtPmdldFZlcnRleEFycmF5KCk7
CisgICAgY29uc3QgYXV0byAmZ2xTdGF0ZSAgICAgICAgICAgID0gZGF0YS5nZXRTdGF0ZSgpOwor
ICAgIGdsOjpWZXJ0ZXhBcnJheSAqdmFvICAgICAgICAgICA9IGdsU3RhdGUuZ2V0VmVydGV4QXJy
YXkoKTsKICAgICBnbDo6QnVmZmVyICplbGVtZW50QXJyYXlCdWZmZXIgPSB2YW8tPmdldEVsZW1l
bnRBcnJheUJ1ZmZlcigpLmdldCgpOwotICAgIGdsOjpFcnJvciBlcnJvciA9Ci0gICAgICAgIG1J
bmRleERhdGFNYW5hZ2VyLT5wcmVwYXJlSW5kZXhEYXRhKHR5cGUsIGNvdW50LCBlbGVtZW50QXJy
YXlCdWZmZXIsIGluZGljZXMsIGluZGV4SW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YS5zdGF0ZS0+aXNQcmltaXRpdmVSZXN0YXJ0RW5hYmxlZCgp
KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9y
OwotICAgIH0KKyAgICBBTkdMRV9UUlkobUluZGV4RGF0YU1hbmFnZXItPnByZXBhcmVJbmRleERh
dGEodHlwZSwgY291bnQsIGVsZW1lbnRBcnJheUJ1ZmZlciwgaW5kaWNlcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbmZvLCBnbFN0YXRl
LmlzUHJpbWl0aXZlUmVzdGFydEVuYWJsZWQoKSkpOwogCi0gICAgSUQzRDExQnVmZmVyICpidWZm
ZXIgPSBOVUxMOworICAgIElEM0QxMUJ1ZmZlciAqYnVmZmVyID0gbnVsbHB0cjsKICAgICBEWEdJ
X0ZPUk1BVCBidWZmZXJGb3JtYXQgPSAoaW5kZXhJbmZvLT5pbmRleFR5cGUgPT0gR0xfVU5TSUdO
RURfSU5UKSA/IERYR0lfRk9STUFUX1IzMl9VSU5UIDogRFhHSV9GT1JNQVRfUjE2X1VJTlQ7CiAK
ICAgICBpZiAoaW5kZXhJbmZvLT5zdG9yYWdlKQogICAgIHsKICAgICAgICAgQnVmZmVyMTEgKnN0
b3JhZ2UgPSBHZXRBczxCdWZmZXIxMT4oaW5kZXhJbmZvLT5zdG9yYWdlKTsKLSAgICAgICAgYXV0
byBpbmRleE9yRXJyb3IgPSBzdG9yYWdlLT5nZXRCdWZmZXIoQlVGRkVSX1VTQUdFX0lOREVYKTsK
LSAgICAgICAgaWYgKGluZGV4T3JFcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBpbmRleE9yRXJyb3IuZ2V0RXJyb3IoKTsKLSAgICAgICAgfQotICAgICAgICBi
dWZmZXIgPSBpbmRleE9yRXJyb3IuZ2V0UmVzdWx0KCk7CisgICAgICAgIEFOR0xFX1RSWV9SRVNV
TFQoc3RvcmFnZS0+Z2V0QnVmZmVyKEJVRkZFUl9VU0FHRV9JTkRFWCksIGJ1ZmZlcik7CiAgICAg
fQogICAgIGVsc2UKICAgICB7CkBAIC0xNjI3LDkwICsxNjM5LDU1IEBACiAgICAgICAgIG1BcHBs
aWVkSUJDaGFuZ2VkID0gdHJ1ZTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05P
X0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIFJlbmRl
cmVyMTE6OmFwcGx5VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzKGNvbnN0IGdsOjpTdGF0ZSAmc3Rh
dGUpCitnbDo6RXJyb3IgUmVuZGVyZXIxMTo6YXBwbHlUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnMo
Y29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSkKIHsKLSAgICBzaXplX3QgbnVtWEZCQmluZGlu
Z3MgPSAwOwotICAgIGJvb2wgcmVxdWlyZXNVcGRhdGUgPSBmYWxzZTsKKyAgICBjb25zdCBhdXRv
ICZzdGF0ZSA9IGRhdGEuZ2V0U3RhdGUoKTsKIAotICAgIGlmIChzdGF0ZS5pc1RyYW5zZm9ybUZl
ZWRiYWNrQWN0aXZlVW5wYXVzZWQoKSkKKyAgICAvLyBJZiB0cmFuc2Zvcm0gZmVlZGJhY2sgaXMg
bm90IGFjdGl2ZSwgdW5iaW5kIGFsbCBidWZmZXJzCisgICAgaWYgKCFzdGF0ZS5pc1RyYW5zZm9y
bUZlZWRiYWNrQWN0aXZlVW5wYXVzZWQoKSkKICAgICB7Ci0gICAgICAgIGNvbnN0IGdsOjpUcmFu
c2Zvcm1GZWVkYmFjayAqdHJhbnNmb3JtRmVlZGJhY2sgPSBzdGF0ZS5nZXRDdXJyZW50VHJhbnNm
b3JtRmVlZGJhY2soKTsKLSAgICAgICAgbnVtWEZCQmluZGluZ3MgPSB0cmFuc2Zvcm1GZWVkYmFj
ay0+Z2V0SW5kZXhlZEJ1ZmZlckNvdW50KCk7Ci0gICAgICAgIEFTU0VSVChudW1YRkJCaW5kaW5n
cyA8PSBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJTKTsK
LQotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVhGQkJpbmRpbmdzOyBpKyspCisg
ICAgICAgIGlmIChtQXBwbGllZFRGT2JqZWN0ICE9IDApCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnN0IE9mZnNldEJpbmRpbmdQb2ludGVyPGdsOjpCdWZmZXI+ICZiaW5kaW5nID0gdHJhbnNm
b3JtRmVlZGJhY2stPmdldEluZGV4ZWRCdWZmZXIoaSk7Ci0KLSAgICAgICAgICAgIElEM0QxMUJ1
ZmZlciAqZDNkQnVmZmVyID0gbnVsbHB0cjsKLSAgICAgICAgICAgIGlmIChiaW5kaW5nLmdldCgp
ICE9IG51bGxwdHIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQnVmZmVyMTEgKnN0
b3JhZ2UgPSBHZXRJbXBsQXM8QnVmZmVyMTE+KGJpbmRpbmcuZ2V0KCkpOwotICAgICAgICAgICAg
ICAgIGF1dG8gYnVmZmVyT3JFcnJvciA9IHN0b3JhZ2UtPmdldEJ1ZmZlcihCVUZGRVJfVVNBR0Vf
VkVSVEVYX09SX1RSQU5TRk9STV9GRUVEQkFDSyk7Ci0gICAgICAgICAgICAgICAgaWYgKGJ1ZmZl
ck9yRXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGJ1ZmZlck9yRXJyb3IuZ2V0RXJyb3IoKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgZDNkQnVmZmVyID0gYnVmZmVyT3JFcnJvci5nZXRSZXN1bHQoKTsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gVE9ETzogbUFwcGxpZWRURkJ1ZmZlcnMgYW5k
IGZyaWVuZHMgc2hvdWxkIGFsc28gYmUga2VwdCBpbiBhIHZlY3Rvci4KLSAgICAgICAgICAgIGlm
IChkM2RCdWZmZXIgIT0gbUFwcGxpZWRURkJ1ZmZlcnNbaV0gfHwgYmluZGluZy5nZXRPZmZzZXQo
KSAhPSBtQXBwbGllZFRGT2Zmc2V0c1tpXSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICByZXF1aXJlc1VwZGF0ZSA9IHRydWU7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBtRGV2
aWNlQ29udGV4dC0+U09TZXRUYXJnZXRzKDAsIG51bGxwdHIsIG51bGxwdHIpOworICAgICAgICAg
ICAgbUFwcGxpZWRURk9iamVjdCA9IDA7CiAgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CiAgICAgfQogCi0gICAgaWYgKHJlcXVpcmVzVXBkYXRlIHx8IG51bVhGQkJpbmRp
bmdzICE9IG1BcHBsaWVkTnVtWEZCQmluZGluZ3MpCisgICAgZ2w6OlRyYW5zZm9ybUZlZWRiYWNr
ICp0cmFuc2Zvcm1GZWVkYmFjayA9IHN0YXRlLmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygp
OworICAgIFRyYW5zZm9ybUZlZWRiYWNrMTEgKnRyYW5zZm9ybUZlZWRiYWNrMTEgPSBHZXRJbXBs
QXM8VHJhbnNmb3JtRmVlZGJhY2sxMT4odHJhbnNmb3JtRmVlZGJhY2spOworICAgIHVpbnRwdHJf
dCB0cmFuc2Zvcm1GZWVkYmFja0lkICAgICAgICAgICAgPSByZWludGVycHJldF9jYXN0PHVpbnRw
dHJfdD4odHJhbnNmb3JtRmVlZGJhY2sxMSk7CisgICAgaWYgKG1BcHBsaWVkVEZPYmplY3QgPT0g
dHJhbnNmb3JtRmVlZGJhY2tJZCAmJiAhdHJhbnNmb3JtRmVlZGJhY2sxMS0+aXNEaXJ0eSgpKQog
ICAgIHsKLSAgICAgICAgY29uc3QgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrICp0cmFuc2Zvcm1GZWVk
YmFjayA9IHN0YXRlLmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpOwotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG51bVhGQkJpbmRpbmdzOyArK2kpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnN0IE9mZnNldEJpbmRpbmdQb2ludGVyPGdsOjpCdWZmZXI+ICZiaW5kaW5nID0g
dHJhbnNmb3JtRmVlZGJhY2stPmdldEluZGV4ZWRCdWZmZXIoaSk7Ci0gICAgICAgICAgICBpZiAo
YmluZGluZy5nZXQoKSAhPSBudWxscHRyKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IEJ1ZmZlcjExICpzdG9yYWdlID0gR2V0SW1wbEFzPEJ1ZmZlcjExPihiaW5kaW5nLmdldCgpKTsK
LSAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlck9yRXJyb3IgPSBzdG9yYWdlLT5nZXRCdWZmZXIo
QlVGRkVSX1VTQUdFX1ZFUlRFWF9PUl9UUkFOU0ZPUk1fRkVFREJBQ0spOwotICAgICAgICAgICAg
ICAgIGlmIChidWZmZXJPckVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBidWZmZXJPckVycm9yLmdldEVycm9yKCk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIElEM0QxMUJ1ZmZlciAqZDNkQnVmZmVyID0gYnVm
ZmVyT3JFcnJvci5nZXRSZXN1bHQoKTsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cisg
ICAgfQogCi0gICAgICAgICAgICAgICAgbUN1cnJlbnREM0RPZmZzZXRzW2ldID0gKG1BcHBsaWVk
VEZCdWZmZXJzW2ldICE9IGQzZEJ1ZmZlciB8fCBtQXBwbGllZFRGT2Zmc2V0c1tpXSAhPSBiaW5k
aW5nLmdldE9mZnNldCgpKSA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8VUlOVD4oYmluZGluZy5nZXRPZmZzZXQoKSkgOiAtMTsKLSAgICAgICAg
ICAgICAgICBtQXBwbGllZFRGQnVmZmVyc1tpXSA9IGQzZEJ1ZmZlcjsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtQXBwbGll
ZFRGQnVmZmVyc1tpXSAgPSBudWxscHRyOwotICAgICAgICAgICAgICAgIG1DdXJyZW50RDNET2Zm
c2V0c1tpXSA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtQXBwbGllZFRGT2Zmc2V0
c1tpXSA9IGJpbmRpbmcuZ2V0T2Zmc2V0KCk7Ci0gICAgICAgIH0KKyAgICBjb25zdCBzdGQ6OnZl
Y3RvcjxJRDNEMTFCdWZmZXIgKj4gKnNvQnVmZmVycyA9IG51bGxwdHI7CisgICAgQU5HTEVfVFJZ
X1JFU1VMVCh0cmFuc2Zvcm1GZWVkYmFjazExLT5nZXRTT0J1ZmZlcnMoKSwgc29CdWZmZXJzKTsK
KyAgICBjb25zdCBzdGQ6OnZlY3RvcjxVSU5UPiAmc29PZmZzZXRzID0gdHJhbnNmb3JtRmVlZGJh
Y2sxMS0+Z2V0U09CdWZmZXJPZmZzZXRzKCk7CiAKLSAgICAgICAgbUFwcGxpZWROdW1YRkJCaW5k
aW5ncyA9IG51bVhGQkJpbmRpbmdzOworICAgIG1EZXZpY2VDb250ZXh0LT5TT1NldFRhcmdldHMo
dHJhbnNmb3JtRmVlZGJhY2sxMS0+Z2V0TnVtU09CdWZmZXJzKCksIHNvQnVmZmVycy0+ZGF0YSgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29PZmZzZXRzLmRhdGEoKSk7CiAK
LSAgICAgICAgbURldmljZUNvbnRleHQtPlNPU2V0VGFyZ2V0cyhzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBpbnQ+KG51bVhGQkJpbmRpbmdzKSwgbUFwcGxpZWRURkJ1ZmZlcnMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbUN1cnJlbnREM0RPZmZzZXRzKTsKLSAgICB9CisgICAg
bUFwcGxpZWRURk9iamVjdCA9IHRyYW5zZm9ybUZlZWRiYWNrSWQ7CisgICAgdHJhbnNmb3JtRmVl
ZGJhY2sxMS0+b25BcHBseSgpOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7
CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJvciBSZW5kZXJlcjExOjpk
cmF3QXJyYXlzSW1wbChjb25zdCBnbDo6RGF0YSAmZGF0YSwKK2dsOjpFcnJvciBSZW5kZXJlcjEx
OjpkcmF3QXJyYXlzSW1wbChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHN0YXJ0VmVydGV4LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMpCiB7Ci0gICAgUHJvZ3JhbUQzRCAq
cHJvZ3JhbUQzRCA9IEdldEltcGxBczxQcm9ncmFtRDNEPihkYXRhLnN0YXRlLT5nZXRQcm9ncmFt
KCkpOworICAgIGNvbnN0IGF1dG8gJmdsU3RhdGUgICAgPSBkYXRhLmdldFN0YXRlKCk7CisgICAg
UHJvZ3JhbUQzRCAqcHJvZ3JhbUQzRCA9IEdldEltcGxBczxQcm9ncmFtRDNEPihnbFN0YXRlLmdl
dFByb2dyYW0oKSk7CiAKLSAgICBpZiAocHJvZ3JhbUQzRC0+dXNlc0dlb21ldHJ5U2hhZGVyKG1v
ZGUpICYmIGRhdGEuc3RhdGUtPmlzVHJhbnNmb3JtRmVlZGJhY2tBY3RpdmVVbnBhdXNlZCgpKQor
ICAgIGlmIChwcm9ncmFtRDNELT51c2VzR2VvbWV0cnlTaGFkZXIobW9kZSkgJiYgZ2xTdGF0ZS5p
c1RyYW5zZm9ybUZlZWRiYWNrQWN0aXZlVW5wYXVzZWQoKSkKICAgICB7CiAgICAgICAgIC8vIFNp
bmNlIHdlIHVzZSBhIGdlb21ldHJ5IGlmLWFuZC1vbmx5LWlmIHdlIHJld3JpdGUgdmVydGV4IHN0
cmVhbXMsIHRyYW5zZm9ybSBmZWVkYmFjawogICAgICAgICAvLyB3b24ndCBnZXQgdGhlIGNvcnJl
Y3Qgb3V0cHV0LiBUbyB3b3JrIGFyb3VuZCB0aGlzLCBkcmF3IHdpdGggKm9ubHkqIHRoZSBzdHJl
YW0gb3V0CkBAIC0xNzI4LDE0ICsxNzA1LDExIEBACiAgICAgICAgIH0KIAogICAgICAgICByeDo6
U2hhZGVyRXhlY3V0YWJsZUQzRCAqcGl4ZWxFeGUgPSBudWxscHRyOwotICAgICAgICBnbDo6RXJy
b3IgZXJyb3IgPSBwcm9ncmFtRDNELT5nZXRQaXhlbEV4ZWN1dGFibGVGb3JGcmFtZWJ1ZmZlcihk
YXRhLnN0YXRlLT5nZXREcmF3RnJhbWVidWZmZXIoKSwgJnBpeGVsRXhlKTsKLSAgICAgICAgaWYg
KGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwot
ICAgICAgICB9CisgICAgICAgIEFOR0xFX1RSWSgKKyAgICAgICAgICAgIHByb2dyYW1EM0QtPmdl
dFBpeGVsRXhlY3V0YWJsZUZvckZyYW1lYnVmZmVyKGdsU3RhdGUuZ2V0RHJhd0ZyYW1lYnVmZmVy
KCksICZwaXhlbEV4ZSkpOwogCiAgICAgICAgIC8vIFNraXAgdGhlIGRyYXcgY2FsbCBpZiByYXN0
ZXJpemVyIGRpc2NhcmQgaXMgZW5hYmxlZCAob3Igbm8gZnJhZ21lbnQgc2hhZGVyKS4KLSAgICAg
ICAgaWYgKCFwaXhlbEV4ZSB8fCBkYXRhLnN0YXRlLT5nZXRSYXN0ZXJpemVyU3RhdGUoKS5yYXN0
ZXJpemVyRGlzY2FyZCkKKyAgICAgICAgaWYgKCFwaXhlbEV4ZSB8fCBnbFN0YXRlLmdldFJhc3Rl
cml6ZXJTdGF0ZSgpLnJhc3Rlcml6ZXJEaXNjYXJkKQogICAgICAgICB7CiAgICAgICAgICAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKICAgICAgICAgfQpAQCAtMTc0NiwxMiArMTcy
MCw4IEBACiAKICAgICAgICAgLy8gUmV0cmlldmUgdGhlIGdlb21ldHJ5IHNoYWRlci4KICAgICAg
ICAgcng6OlNoYWRlckV4ZWN1dGFibGVEM0QgKmdlb21ldHJ5RXhlID0gbnVsbHB0cjsKLSAgICAg
ICAgZXJyb3IgPQotICAgICAgICAgICAgcHJvZ3JhbUQzRC0+Z2V0R2VvbWV0cnlFeGVjdXRhYmxl
Rm9yUHJpbWl0aXZlVHlwZShkYXRhLCBtb2RlLCAmZ2VvbWV0cnlFeGUsIG51bGxwdHIpOwotICAg
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
ZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKAorICAgICAgICAgICAgcHJvZ3Jh
bUQzRC0+Z2V0R2VvbWV0cnlFeGVjdXRhYmxlRm9yUHJpbWl0aXZlVHlwZShkYXRhLCBtb2RlLCAm
Z2VvbWV0cnlFeGUsIG51bGxwdHIpKTsKIAogICAgICAgICBJRDNEMTFHZW9tZXRyeVNoYWRlciAq
Z2VvbWV0cnlTaGFkZXIgPQogICAgICAgICAgICAgKGdlb21ldHJ5RXhlID8gR2V0QXM8U2hhZGVy
RXhlY3V0YWJsZTExPihnZW9tZXRyeUV4ZSktPmdldEdlb21ldHJ5U2hhZGVyKCkgOiBOVUxMKTsK
QEAgLTE3OTcsMTMgKzE3NjcsOCBAQAogICAgICAgICAgICAgLy8gb2Zmc2V0cy4KICAgICAgICAg
ICAgIGZvciAoR0xzaXplaSBpID0gMDsgaSA8IGluc3RhbmNlczsgaSsrKQogICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGdsOjpFcnJvciBlcnJvciA9Ci0gICAgICAgICAgICAgICAgICAg
IG1JbnB1dExheW91dENhY2hlLnVwZGF0ZVZlcnRleE9mZnNldHNGb3JQb2ludFNwcml0ZXNFbXVs
YXRpb24oc3RhcnRWZXJ0ZXgsIGkpOwotICAgICAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9y
KCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7
Ci0gICAgICAgICAgICAgICAgfQotCisgICAgICAgICAgICAgICAgQU5HTEVfVFJZKAorICAgICAg
ICAgICAgICAgICAgICBtSW5wdXRMYXlvdXRDYWNoZS51cGRhdGVWZXJ0ZXhPZmZzZXRzRm9yUG9p
bnRTcHJpdGVzRW11bGF0aW9uKHN0YXJ0VmVydGV4LCBpKSk7CiAgICAgICAgICAgICAgICAgbURl
dmljZUNvbnRleHQtPkRyYXdJbmRleGVkSW5zdGFuY2VkKDYsIGNvdW50LCAwLCAwLCAwKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTgyOCw3ICsxNzkzLDcgQEAKICAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmRyYXdF
bGVtZW50c0ltcGwoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCitnbDo6RXJyb3IgUmVuZGVyZXIxMTo6
ZHJhd0VsZW1lbnRzSW1wbChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHJhbnNsYXRlZEluZGV4RGF0YSAm
aW5kZXhJbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LApAQCAtMTg0OCw3ICsxODEzLDcgQEAKICAgICAgICAgcmV0dXJuIGRyYXdUcmlhbmdsZUZh
bihkYXRhLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgbWluSW5kZXgsIGluc3RhbmNlcyk7CiAgICAg
fQogCi0gICAgY29uc3QgUHJvZ3JhbUQzRCAqcHJvZ3JhbUQzRCA9IEdldEltcGxBczxQcm9ncmFt
RDNEPihkYXRhLnN0YXRlLT5nZXRQcm9ncmFtKCkpOworICAgIGNvbnN0IFByb2dyYW1EM0QgKnBy
b2dyYW1EM0QgPSBHZXRJbXBsQXM8UHJvZ3JhbUQzRD4oZGF0YS5nZXRTdGF0ZSgpLmdldFByb2dy
YW0oKSk7CiAgICAgaWYgKGluc3RhbmNlcyA+IDApCiAgICAgewogICAgICAgICBpZiAobW9kZSA9
PSBHTF9QT0lOVFMgJiYgcHJvZ3JhbUQzRC0+dXNlc0luc3RhbmNlZFBvaW50U3ByaXRlRW11bGF0
aW9uKCkpCkBAIC0xODY0LDEzICsxODI5LDggQEAKICAgICAgICAgICAgIC8vIG9mZnNldHMuCiAg
ICAgICAgICAgICBmb3IgKEdMc2l6ZWkgaSA9IDA7IGkgPCBpbnN0YW5jZXM7IGkrKykKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPQotICAgICAgICAgICAg
ICAgICAgICBtSW5wdXRMYXlvdXRDYWNoZS51cGRhdGVWZXJ0ZXhPZmZzZXRzRm9yUG9pbnRTcHJp
dGVzRW11bGF0aW9uKG1pbkluZGV4LCBpKTsKLSAgICAgICAgICAgICAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVy
cm9yOwotICAgICAgICAgICAgICAgIH0KLQorICAgICAgICAgICAgICAgIEFOR0xFX1RSWSgKKyAg
ICAgICAgICAgICAgICAgICAgbUlucHV0TGF5b3V0Q2FjaGUudXBkYXRlVmVydGV4T2Zmc2V0c0Zv
clBvaW50U3ByaXRlc0VtdWxhdGlvbihtaW5JbmRleCwgaSkpOwogICAgICAgICAgICAgICAgIG1E
ZXZpY2VDb250ZXh0LT5EcmF3SW5kZXhlZEluc3RhbmNlZCg2LCBlbGVtZW50c1RvUmVuZGVyLCAw
LCAwLCAwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTkwMyw3ICsxODYzLDcgQEAK
ICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotZ2w6OkVycm9yIFJlbmRl
cmVyMTE6OmRyYXdMaW5lTG9vcChjb25zdCBnbDo6RGF0YSAmZGF0YSwKK2dsOjpFcnJvciBSZW5k
ZXJlcjExOjpkcmF3TGluZUxvb3AoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kZXhQb2ludGVyLApAQCAtMTkxMCw3ICsx
ODcwLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHJhbnNs
YXRlZEluZGV4RGF0YSAqaW5kZXhJbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgaW5zdGFuY2VzKQogewotICAgIGdsOjpWZXJ0ZXhBcnJheSAqdmFvICAgICAgICAg
ICA9IGRhdGEuc3RhdGUtPmdldFZlcnRleEFycmF5KCk7CisgICAgY29uc3QgYXV0byAmZ2xTdGF0
ZSAgICAgICAgICAgID0gZGF0YS5nZXRTdGF0ZSgpOworICAgIGdsOjpWZXJ0ZXhBcnJheSAqdmFv
ICAgICAgICAgICA9IGdsU3RhdGUuZ2V0VmVydGV4QXJyYXkoKTsKICAgICBnbDo6QnVmZmVyICpl
bGVtZW50QXJyYXlCdWZmZXIgPSB2YW8tPmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpLmdldCgpOwog
CiAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzID0gaW5kZXhQb2ludGVyOwpAQCAtMTkyMiwxMSAr
MTg4Myw3IEBACiAgICAgICAgIGludHB0cl90IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50
cHRyX3Q+KGluZGljZXMpOwogCiAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmJ1ZmZlckRhdGEgPSBO
VUxMOwotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBzdG9yYWdlLT5nZXREYXRhKCZidWZmZXJE
YXRhKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9CisgICAgICAgIEFOR0xFX1RSWShzdG9yYWdlLT5n
ZXREYXRhKCZidWZmZXJEYXRhKSk7CiAKICAgICAgICAgaW5kaWNlcyA9IGJ1ZmZlckRhdGEgKyBv
ZmZzZXQ7CiAgICAgfQpAQCAtMTk1MSwzMyArMTkwOCwyMSBAQAogICAgIH0KIAogICAgIEdldExp
bmVMb29wSW5kaWNlcyhpbmRpY2VzLCB0eXBlLCBzdGF0aWNfY2FzdDxHTHVpbnQ+KGNvdW50KSwK
LSAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5zdGF0ZS0+aXNQcmltaXRpdmVSZXN0YXJ0RW5h
YmxlZCgpLCAmbVNjcmF0Y2hJbmRleERhdGFCdWZmZXIpOworICAgICAgICAgICAgICAgICAgICAg
ICBnbFN0YXRlLmlzUHJpbWl0aXZlUmVzdGFydEVuYWJsZWQoKSwgJm1TY3JhdGNoSW5kZXhEYXRh
QnVmZmVyKTsKIAogICAgIHVuc2lnbmVkIGludCBzcGFjZU5lZWRlZCA9CiAgICAgICAgIHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGludD4oc2l6ZW9mKEdMdWludCkgKiBtU2NyYXRjaEluZGV4RGF0YUJ1
ZmZlci5zaXplKCkpOwotICAgIGdsOjpFcnJvciBlcnJvciA9IG1MaW5lTG9vcElCLT5yZXNlcnZl
QnVmZmVyU3BhY2Uoc3BhY2VOZWVkZWQsIEdMX1VOU0lHTkVEX0lOVCk7Ci0gICAgaWYgKGVycm9y
LmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5H
TEVfVFJZKG1MaW5lTG9vcElCLT5yZXNlcnZlQnVmZmVyU3BhY2Uoc3BhY2VOZWVkZWQsIEdMX1VO
U0lHTkVEX0lOVCkpOwogCiAgICAgdm9pZCogbWFwcGVkTWVtb3J5ID0gTlVMTDsKICAgICB1bnNp
Z25lZCBpbnQgb2Zmc2V0OwotICAgIGVycm9yID0gbUxpbmVMb29wSUItPm1hcEJ1ZmZlcihzcGFj
ZU5lZWRlZCwgJm1hcHBlZE1lbW9yeSwgJm9mZnNldCk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3Io
KSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKG1M
aW5lTG9vcElCLT5tYXBCdWZmZXIoc3BhY2VOZWVkZWQsICZtYXBwZWRNZW1vcnksICZvZmZzZXQp
KTsKIAogICAgIC8vIENvcHkgb3ZlciB0aGUgY29udmVydGVkIGluZGV4IGRhdGEuCiAgICAgbWVt
Y3B5KG1hcHBlZE1lbW9yeSwgJm1TY3JhdGNoSW5kZXhEYXRhQnVmZmVyWzBdLAogICAgICAgICAg
ICBzaXplb2YoR0x1aW50KSAqIG1TY3JhdGNoSW5kZXhEYXRhQnVmZmVyLnNpemUoKSk7CiAKLSAg
ICBlcnJvciA9IG1MaW5lTG9vcElCLT51bm1hcEJ1ZmZlcigpOwotICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RS
WShtTGluZUxvb3BJQi0+dW5tYXBCdWZmZXIoKSk7CiAKICAgICBJbmRleEJ1ZmZlcjExICppbmRl
eEJ1ZmZlciA9IEdldEFzPEluZGV4QnVmZmVyMTE+KG1MaW5lTG9vcElCLT5nZXRJbmRleEJ1ZmZl
cigpKTsKICAgICBJRDNEMTFCdWZmZXIgKmQzZEluZGV4QnVmZmVyID0gaW5kZXhCdWZmZXItPmdl
dEJ1ZmZlcigpOwpAQCAtMjAwNCwxMCArMTk0OSwxMCBAQAogICAgICAgICBtRGV2aWNlQ29udGV4
dC0+RHJhd0luZGV4ZWQoaW5kZXhDb3VudCwgMCwgYmFzZVZlcnRleExvY2F0aW9uKTsKICAgICB9
CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmRyYXdUcmlhbmdsZUZhbihjb25z
dCBnbDo6RGF0YSAmZGF0YSwKK2dsOjpFcnJvciBSZW5kZXJlcjExOjpkcmF3VHJpYW5nbGVGYW4o
Y29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKQEAgLTIwMTQsNyArMTk1OSw3IEBACiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtaW5JbmRleCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluc3RhbmNlcykKIHsKLSAgICBnbDo6VmVy
dGV4QXJyYXkgKnZhbyAgICAgICAgICAgPSBkYXRhLnN0YXRlLT5nZXRWZXJ0ZXhBcnJheSgpOwor
ICAgIGdsOjpWZXJ0ZXhBcnJheSAqdmFvICAgICAgICAgICA9IGRhdGEuZ2V0U3RhdGUoKS5nZXRW
ZXJ0ZXhBcnJheSgpOwogICAgIGdsOjpCdWZmZXIgKmVsZW1lbnRBcnJheUJ1ZmZlciA9IHZhby0+
Z2V0RWxlbWVudEFycmF5QnVmZmVyKCkuZ2V0KCk7CiAKICAgICBjb25zdCBHTHZvaWQgKmluZGV4
UG9pbnRlciA9IGluZGljZXM7CkBAIC0yMDI2LDExICsxOTcxLDcgQEAKICAgICAgICAgaW50cHRy
X3Qgb2Zmc2V0ID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5kaWNlcyk7CiAKICAgICAg
ICAgY29uc3QgdWludDhfdCAqYnVmZmVyRGF0YSA9IE5VTEw7Ci0gICAgICAgIGdsOjpFcnJvciBl
cnJvciA9IHN0b3JhZ2UtPmdldERhdGEoJmJ1ZmZlckRhdGEpOwotICAgICAgICBpZiAoZXJyb3Iu
aXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAg
IH0KKyAgICAgICAgQU5HTEVfVFJZKHN0b3JhZ2UtPmdldERhdGEoJmJ1ZmZlckRhdGEpKTsKIAog
ICAgICAgICBpbmRleFBvaW50ZXIgPSBidWZmZXJEYXRhICsgb2Zmc2V0OwogICAgIH0KQEAgLTIw
NTYsMzIgKzE5OTcsMjAgQEAKICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVN
T1JZLCAiRmFpbGVkIHRvIGNyZWF0ZSBhIHNjcmF0Y2ggaW5kZXggYnVmZmVyIGZvciBHTF9UUklB
TkdMRV9GQU4sIHRvbyBtYW55IGluZGljZXMgcmVxdWlyZWQuIik7CiAgICAgfQogCi0gICAgR2V0
VHJpRmFuSW5kaWNlcyhpbmRleFBvaW50ZXIsIHR5cGUsIGNvdW50LCBkYXRhLnN0YXRlLT5pc1By
aW1pdGl2ZVJlc3RhcnRFbmFibGVkKCksCisgICAgR2V0VHJpRmFuSW5kaWNlcyhpbmRleFBvaW50
ZXIsIHR5cGUsIGNvdW50LCBkYXRhLmdldFN0YXRlKCkuaXNQcmltaXRpdmVSZXN0YXJ0RW5hYmxl
ZCgpLAogICAgICAgICAgICAgICAgICAgICAgJm1TY3JhdGNoSW5kZXhEYXRhQnVmZmVyKTsKIAog
ICAgIGNvbnN0IHVuc2lnbmVkIGludCBzcGFjZU5lZWRlZCA9CiAgICAgICAgIHN0YXRpY19jYXN0
PHVuc2lnbmVkIGludD4obVNjcmF0Y2hJbmRleERhdGFCdWZmZXIuc2l6ZSgpICogc2l6ZW9mKHVu
c2lnbmVkIGludCkpOwotICAgIGdsOjpFcnJvciBlcnJvciA9IG1UcmlhbmdsZUZhbklCLT5yZXNl
cnZlQnVmZmVyU3BhY2Uoc3BhY2VOZWVkZWQsIEdMX1VOU0lHTkVEX0lOVCk7Ci0gICAgaWYgKGVy
cm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAg
QU5HTEVfVFJZKG1UcmlhbmdsZUZhbklCLT5yZXNlcnZlQnVmZmVyU3BhY2Uoc3BhY2VOZWVkZWQs
IEdMX1VOU0lHTkVEX0lOVCkpOwogCiAgICAgdm9pZCAqbWFwcGVkTWVtb3J5ID0gbnVsbHB0cjsK
ICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0OwotICAgIGVycm9yID0gbVRyaWFuZ2xlRmFuSUItPm1h
cEJ1ZmZlcihzcGFjZU5lZWRlZCwgJm1hcHBlZE1lbW9yeSwgJm9mZnNldCk7Ci0gICAgaWYgKGVy
cm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAg
QU5HTEVfVFJZKG1UcmlhbmdsZUZhbklCLT5tYXBCdWZmZXIoc3BhY2VOZWVkZWQsICZtYXBwZWRN
ZW1vcnksICZvZmZzZXQpKTsKIAogICAgIG1lbWNweShtYXBwZWRNZW1vcnksICZtU2NyYXRjaElu
ZGV4RGF0YUJ1ZmZlclswXSwgc3BhY2VOZWVkZWQpOwogCi0gICAgZXJyb3IgPSBtVHJpYW5nbGVG
YW5JQi0+dW5tYXBCdWZmZXIoKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkobVRyaWFuZ2xlRmFuSUIt
PnVubWFwQnVmZmVyKCkpOwogCiAgICAgSW5kZXhCdWZmZXIxMSAqaW5kZXhCdWZmZXIgPSBHZXRB
czxJbmRleEJ1ZmZlcjExPihtVHJpYW5nbGVGYW5JQi0+Z2V0SW5kZXhCdWZmZXIoKSk7CiAgICAg
SUQzRDExQnVmZmVyICpkM2RJbmRleEJ1ZmZlciA9IGluZGV4QnVmZmVyLT5nZXRCdWZmZXIoKTsK
QEAgLTIxMDcsNTYgKzIwMzYsNTAgQEAKICAgICAgICAgbURldmljZUNvbnRleHQtPkRyYXdJbmRl
eGVkKGluZGV4Q291bnQsIDAsIC1taW5JbmRleCk7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpF
cnJvciBSZW5kZXJlcjExOjphcHBseVNoYWRlcnNJbXBsKGNvbnN0IGdsOjpEYXRhICZkYXRhLCBH
TGVudW0gZHJhd01vZGUpCitnbDo6RXJyb3IgUmVuZGVyZXIxMTo6YXBwbHlTaGFkZXJzKGNvbnN0
IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsIEdMZW51bSBkcmF3TW9kZSkKIHsKLSAgICBQcm9ncmFt
RDNEICpwcm9ncmFtRDNEICA9IEdldEltcGxBczxQcm9ncmFtRDNEPihkYXRhLnN0YXRlLT5nZXRQ
cm9ncmFtKCkpOworICAgIGNvbnN0IGF1dG8gJmdsU3RhdGUgICAgPSBkYXRhLmdldFN0YXRlKCk7
CisgICAgUHJvZ3JhbUQzRCAqcHJvZ3JhbUQzRCA9IEdldEltcGxBczxQcm9ncmFtRDNEPihnbFN0
YXRlLmdldFByb2dyYW0oKSk7CisgICAgcHJvZ3JhbUQzRC0+dXBkYXRlQ2FjaGVkSW5wdXRMYXlv
dXQoZ2xTdGF0ZSk7CisKICAgICBjb25zdCBhdXRvICZpbnB1dExheW91dCA9IHByb2dyYW1EM0Qt
PmdldENhY2hlZElucHV0TGF5b3V0KCk7CiAKLSAgICBTaGFkZXJFeGVjdXRhYmxlRDNEICp2ZXJ0
ZXhFeGUgPSBOVUxMOwotICAgIGdsOjpFcnJvciBlcnJvciA9IHByb2dyYW1EM0QtPmdldFZlcnRl
eEV4ZWN1dGFibGVGb3JJbnB1dExheW91dChpbnB1dExheW91dCwgJnZlcnRleEV4ZSwgbnVsbHB0
cik7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJv
cjsKLSAgICB9CisgICAgU2hhZGVyRXhlY3V0YWJsZUQzRCAqdmVydGV4RXhlID0gbnVsbHB0cjsK
KyAgICBBTkdMRV9UUlkocHJvZ3JhbUQzRC0+Z2V0VmVydGV4RXhlY3V0YWJsZUZvcklucHV0TGF5
b3V0KGlucHV0TGF5b3V0LCAmdmVydGV4RXhlLCBudWxscHRyKSk7CiAKLSAgICBjb25zdCBnbDo6
RnJhbWVidWZmZXIgKmRyYXdGcmFtZWJ1ZmZlciA9IGRhdGEuc3RhdGUtPmdldERyYXdGcmFtZWJ1
ZmZlcigpOwotICAgIFNoYWRlckV4ZWN1dGFibGVEM0QgKnBpeGVsRXhlID0gTlVMTDsKLSAgICBl
cnJvciA9IHByb2dyYW1EM0QtPmdldFBpeGVsRXhlY3V0YWJsZUZvckZyYW1lYnVmZmVyKGRyYXdG
cmFtZWJ1ZmZlciwgJnBpeGVsRXhlKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIg
KmRyYXdGcmFtZWJ1ZmZlciA9IGdsU3RhdGUuZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7CisgICAgU2hh
ZGVyRXhlY3V0YWJsZUQzRCAqcGl4ZWxFeGUgICAgICAgICAgPSBudWxscHRyOworICAgIEFOR0xF
X1RSWShwcm9ncmFtRDNELT5nZXRQaXhlbEV4ZWN1dGFibGVGb3JGcmFtZWJ1ZmZlcihkcmF3RnJh
bWVidWZmZXIsICZwaXhlbEV4ZSkpOwogCiAgICAgU2hhZGVyRXhlY3V0YWJsZUQzRCAqZ2VvbWV0
cnlFeGUgPSBudWxscHRyOwotICAgIGVycm9yID0KLSAgICAgICAgcHJvZ3JhbUQzRC0+Z2V0R2Vv
bWV0cnlFeGVjdXRhYmxlRm9yUHJpbWl0aXZlVHlwZShkYXRhLCBkcmF3TW9kZSwgJmdlb21ldHJ5
RXhlLCBudWxscHRyKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkoCisgICAgICAgIHByb2dyYW1EM0Qt
PmdldEdlb21ldHJ5RXhlY3V0YWJsZUZvclByaW1pdGl2ZVR5cGUoZGF0YSwgZHJhd01vZGUsICZn
ZW9tZXRyeUV4ZSwgbnVsbHB0cikpOwogCi0gICAgSUQzRDExVmVydGV4U2hhZGVyICp2ZXJ0ZXhT
aGFkZXIgPSAodmVydGV4RXhlID8gR2V0QXM8U2hhZGVyRXhlY3V0YWJsZTExPih2ZXJ0ZXhFeGUp
LT5nZXRWZXJ0ZXhTaGFkZXIoKSA6IE5VTEwpOworICAgIElEM0QxMVZlcnRleFNoYWRlciAqdmVy
dGV4U2hhZGVyID0KKyAgICAgICAgKHZlcnRleEV4ZSA/IEdldEFzPFNoYWRlckV4ZWN1dGFibGUx
MT4odmVydGV4RXhlKS0+Z2V0VmVydGV4U2hhZGVyKCkgOiBudWxscHRyKTsKIAotICAgIElEM0Qx
MVBpeGVsU2hhZGVyICpwaXhlbFNoYWRlciA9IE5VTEw7CisgICAgSUQzRDExUGl4ZWxTaGFkZXIg
KnBpeGVsU2hhZGVyID0gbnVsbHB0cjsKICAgICAvLyBTa2lwIHBpeGVsIHNoYWRlciBpZiB3ZSdy
ZSBkb2luZyByYXN0ZXJpemVyIGRpc2NhcmQuCi0gICAgYm9vbCByYXN0ZXJpemVyRGlzY2FyZCA9
IGRhdGEuc3RhdGUtPmdldFJhc3Rlcml6ZXJTdGF0ZSgpLnJhc3Rlcml6ZXJEaXNjYXJkOworICAg
IGJvb2wgcmFzdGVyaXplckRpc2NhcmQgPSBnbFN0YXRlLmdldFJhc3Rlcml6ZXJTdGF0ZSgpLnJh
c3Rlcml6ZXJEaXNjYXJkOwogICAgIGlmICghcmFzdGVyaXplckRpc2NhcmQpCiAgICAgewotICAg
ICAgICBwaXhlbFNoYWRlciA9IChwaXhlbEV4ZSA/IEdldEFzPFNoYWRlckV4ZWN1dGFibGUxMT4o
cGl4ZWxFeGUpLT5nZXRQaXhlbFNoYWRlcigpIDogTlVMTCk7CisgICAgICAgIHBpeGVsU2hhZGVy
ID0gKHBpeGVsRXhlID8gR2V0QXM8U2hhZGVyRXhlY3V0YWJsZTExPihwaXhlbEV4ZSktPmdldFBp
eGVsU2hhZGVyKCkgOiBudWxscHRyKTsKICAgICB9CiAKLSAgICBJRDNEMTFHZW9tZXRyeVNoYWRl
ciAqZ2VvbWV0cnlTaGFkZXIgPSBOVUxMOwotICAgIGJvb2wgdHJhbnNmb3JtRmVlZGJhY2tBY3Rp
dmUgPSBkYXRhLnN0YXRlLT5pc1RyYW5zZm9ybUZlZWRiYWNrQWN0aXZlVW5wYXVzZWQoKTsKKyAg
ICBJRDNEMTFHZW9tZXRyeVNoYWRlciAqZ2VvbWV0cnlTaGFkZXIgPSBudWxscHRyOworICAgIGJv
b2wgdHJhbnNmb3JtRmVlZGJhY2tBY3RpdmUgICAgICAgICA9IGdsU3RhdGUuaXNUcmFuc2Zvcm1G
ZWVkYmFja0FjdGl2ZVVucGF1c2VkKCk7CiAgICAgaWYgKHRyYW5zZm9ybUZlZWRiYWNrQWN0aXZl
KQogICAgIHsKLSAgICAgICAgZ2VvbWV0cnlTaGFkZXIgPSAodmVydGV4RXhlID8gR2V0QXM8U2hh
ZGVyRXhlY3V0YWJsZTExPih2ZXJ0ZXhFeGUpLT5nZXRTdHJlYW1PdXRTaGFkZXIoKSA6IE5VTEwp
OworICAgICAgICBnZW9tZXRyeVNoYWRlciA9CisgICAgICAgICAgICAodmVydGV4RXhlID8gR2V0
QXM8U2hhZGVyRXhlY3V0YWJsZTExPih2ZXJ0ZXhFeGUpLT5nZXRTdHJlYW1PdXRTaGFkZXIoKSA6
IG51bGxwdHIpOwogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBnZW9tZXRyeVNoYWRl
ciA9IChnZW9tZXRyeUV4ZSA/IEdldEFzPFNoYWRlckV4ZWN1dGFibGUxMT4oZ2VvbWV0cnlFeGUp
LT5nZXRHZW9tZXRyeVNoYWRlcigpIDogTlVMTCk7CisgICAgICAgIGdlb21ldHJ5U2hhZGVyID0K
KyAgICAgICAgICAgIChnZW9tZXRyeUV4ZSA/IEdldEFzPFNoYWRlckV4ZWN1dGFibGUxMT4oZ2Vv
bWV0cnlFeGUpLT5nZXRHZW9tZXRyeVNoYWRlcigpIDogbnVsbHB0cik7CiAgICAgfQogCiAgICAg
Ym9vbCBkaXJ0eVVuaWZvcm1zID0gZmFsc2U7CkBAIC0yMTYzLDcgKzIwODYsNyBAQAogCiAgICAg
aWYgKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2ZXJ0ZXhTaGFkZXIpICE9IG1BcHBsaWVk
VmVydGV4U2hhZGVyKQogICAgIHsKLSAgICAgICAgbURldmljZUNvbnRleHQtPlZTU2V0U2hhZGVy
KHZlcnRleFNoYWRlciwgTlVMTCwgMCk7CisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5WU1NldFNo
YWRlcih2ZXJ0ZXhTaGFkZXIsIG51bGxwdHIsIDApOwogICAgICAgICBtQXBwbGllZFZlcnRleFNo
YWRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2ZXJ0ZXhTaGFkZXIpOwogICAgICAg
ICBkaXJ0eVVuaWZvcm1zID0gdHJ1ZTsKICAgICB9CkBAIC0yMTcwLDcgKzIwOTMsNyBAQAogCiAg
ICAgaWYgKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihnZW9tZXRyeVNoYWRlcikgIT0gbUFw
cGxpZWRHZW9tZXRyeVNoYWRlcikKICAgICB7Ci0gICAgICAgIG1EZXZpY2VDb250ZXh0LT5HU1Nl
dFNoYWRlcihnZW9tZXRyeVNoYWRlciwgTlVMTCwgMCk7CisgICAgICAgIG1EZXZpY2VDb250ZXh0
LT5HU1NldFNoYWRlcihnZW9tZXRyeVNoYWRlciwgbnVsbHB0ciwgMCk7CiAgICAgICAgIG1BcHBs
aWVkR2VvbWV0cnlTaGFkZXIgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZ2VvbWV0cnlT
aGFkZXIpOwogICAgICAgICBkaXJ0eVVuaWZvcm1zID0gdHJ1ZTsKICAgICB9CkBAIC0yMTc3LDcg
KzIxMDAsNyBAQAogCiAgICAgaWYgKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihwaXhlbFNo
YWRlcikgIT0gbUFwcGxpZWRQaXhlbFNoYWRlcikKICAgICB7Ci0gICAgICAgIG1EZXZpY2VDb250
ZXh0LT5QU1NldFNoYWRlcihwaXhlbFNoYWRlciwgTlVMTCwgMCk7CisgICAgICAgIG1EZXZpY2VD
b250ZXh0LT5QU1NldFNoYWRlcihwaXhlbFNoYWRlciwgbnVsbHB0ciwgMCk7CiAgICAgICAgIG1B
cHBsaWVkUGl4ZWxTaGFkZXIgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocGl4ZWxTaGFk
ZXIpOwogICAgICAgICBkaXJ0eVVuaWZvcm1zID0gdHJ1ZTsKICAgICB9CkBAIC0yMTg3LDcgKzIx
MTAsNyBAQAogICAgICAgICBwcm9ncmFtRDNELT5kaXJ0eUFsbFVuaWZvcm1zKCk7CiAgICAgfQog
Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIHByb2dyYW1E
M0QtPmFwcGx5VW5pZm9ybXMoZHJhd01vZGUpOwogfQogCiBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6
YXBwbHlVbmlmb3Jtcyhjb25zdCBQcm9ncmFtRDNEICZwcm9ncmFtRDNELApAQCAtMjM3MSw4ICsy
Mjk0LDggQEAKIAogdm9pZCBSZW5kZXJlcjExOjpTYW1wbGVyTWV0YWRhdGFEM0QxMTo6dXBkYXRl
KHVuc2lnbmVkIGludCBzYW1wbGVySW5kZXgsIGNvbnN0IGdsOjpUZXh0dXJlICZ0ZXh0dXJlKQog
ewotICAgIHVuc2lnbmVkIGludCBiYXNlTGV2ZWwgPSB0ZXh0dXJlLmdldEJhc2VMZXZlbCgpOwot
ICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCA9IHRleHR1cmUuZ2V0SW50ZXJuYWxGb3JtYXQodGV4
dHVyZS5nZXRUYXJnZXQoKSwgdGV4dHVyZS5nZXRCYXNlTGV2ZWwoKSk7CisgICAgdW5zaWduZWQg
aW50IGJhc2VMZXZlbCA9IHRleHR1cmUuZ2V0VGV4dHVyZVN0YXRlKCkuZ2V0RWZmZWN0aXZlQmFz
ZUxldmVsKCk7CisgICAgR0xlbnVtIHNpemVkRm9ybWF0ICAgICA9IHRleHR1cmUuZ2V0Rm9ybWF0
KHRleHR1cmUuZ2V0VGFyZ2V0KCksIGJhc2VMZXZlbCkuYXNTaXplZCgpOwogICAgIGlmIChtU2Ft
cGxlck1ldGFkYXRhW3NhbXBsZXJJbmRleF0uYmFzZUxldmVsICE9IHN0YXRpY19jYXN0PGludD4o
YmFzZUxldmVsKSkKICAgICB7CiAgICAgICAgIG1TYW1wbGVyTWV0YWRhdGFbc2FtcGxlckluZGV4
XS5iYXNlTGV2ZWwgPSBzdGF0aWNfY2FzdDxpbnQ+KGJhc2VMZXZlbCk7CkBAIC0yMzg1LDcgKzIz
MDgsNyBAQAogICAgIGJvb2wgbmVlZEludGVnZXJUZXh0dXJlTWV0YWRhdGEgPSBmYWxzZTsKICAg
ICAvLyBpbnRlcm5hbEZvcm1hdEJpdHMgPT0gMCBtZWFucyBhIDMyLWJpdCB0ZXh0dXJlIGluIHRo
ZSBjYXNlIG9mIGludGVnZXIgdGV4dHVyZXMuCiAgICAgaW50IGludGVybmFsRm9ybWF0Qml0cyA9
IDA7Ci0gICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAgICBzd2l0Y2ggKHNpemVkRm9ybWF0
KQogICAgIHsKICAgICAgICAgY2FzZSBHTF9SR0JBMzJJOgogICAgICAgICBjYXNlIEdMX1JHQkEz
MlVJOgpAQCAtMjUyNCwxNCArMjQ0Nyw4IEBACiAgICAgbUFwcGxpZWRHZW9tZXRyeVNoYWRlciA9
IGFuZ2xlOjpEaXJ0eVBvaW50ZXI7CiAgICAgbUFwcGxpZWRQaXhlbFNoYWRlciAgICA9IGFuZ2xl
OjpEaXJ0eVBvaW50ZXI7CiAKLSAgICBtQXBwbGllZE51bVhGQkJpbmRpbmdzID0gc3RhdGljX2Nh
c3Q8c2l6ZV90PigtMSk7CisgICAgbUFwcGxpZWRURk9iamVjdCA9IGFuZ2xlOjpEaXJ0eVBvaW50
ZXI7CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhf
VFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUlM7IGkrKykKLSAgICB7Ci0gICAgICAgIG1BcHBsaWVk
VEZCdWZmZXJzW2ldID0gTlVMTDsKLSAgICAgICAgbUFwcGxpZWRURk9mZnNldHNbaV0gPSAwOwot
ICAgIH0KLQogICAgIG1lbXNldCgmbUFwcGxpZWRWZXJ0ZXhDb25zdGFudHMsIDAsIHNpemVvZihk
eF9WZXJ0ZXhDb25zdGFudHMxMSkpOwogICAgIG1lbXNldCgmbUFwcGxpZWRQaXhlbENvbnN0YW50
cywgMCwgc2l6ZW9mKGR4X1BpeGVsQ29uc3RhbnRzMTEpKTsKIApAQCAtMjU3OSw2ICsyNDk2LDEx
IEBACiB7CiAgICAgYm9vbCBpc0xvc3QgPSBmYWxzZTsKIAorICAgIGlmICghbURldmljZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIC8vIEdldFJlbW92ZWRSZWFz
b24gaXMgdXNlZCB0byB0ZXN0IGlmIHRoZSBkZXZpY2UgaXMgcmVtb3ZlZAogICAgIEhSRVNVTFQg
cmVzdWx0ID0gbURldmljZS0+R2V0RGV2aWNlUmVtb3ZlZFJlYXNvbigpOwogICAgIGlzTG9zdCA9
IGQzZDExOjppc0RldmljZUxvc3RFcnJvcihyZXN1bHQpOwpAQCAtMjU4NSwxOCArMjUwNyw3IEBA
CiAKICAgICBpZiAoaXNMb3N0KQogICAgIHsKLSAgICAgICAgLy8gTG9nIGVycm9yIGlmIHRoaXMg
aXMgYSBuZXcgZGV2aWNlIGxvc3QgZXZlbnQKLSAgICAgICAgaWYgKG1EZXZpY2VMb3N0ID09IGZh
bHNlKQotICAgICAgICB7Ci0gICAgICAgICAgICBFUlIoIlRoZSBEM0QxMSBkZXZpY2Ugd2FzIHJl
bW92ZWQ6IDB4JTA4WCIsIHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBlbnN1cmUg
d2Ugbm90ZSB0aGUgZGV2aWNlIGxvc3MgLS0KLSAgICAgICAgLy8gd2UnbGwgcHJvYmFibHkgZ2V0
IHRoaXMgZG9uZSBhZ2FpbiBieSBub3RpZnlEZXZpY2VMb3N0Ci0gICAgICAgIC8vIGJ1dCBiZXN0
IHRvIHJlbWVtYmVyIGl0IQotICAgICAgICAvLyBOb3RlIHRoYXQgd2UgZG9uJ3Qgd2FudCB0byBj
bGVhciB0aGUgZGV2aWNlIGxvc3Mgc3RhdHVzIGhlcmUKLSAgICAgICAgLy8gLS0gdGhpcyBuZWVk
cyB0byBiZSBkb25lIGJ5IHJlc2V0RGV2aWNlCi0gICAgICAgIG1EZXZpY2VMb3N0ID0gdHJ1ZTsK
KyAgICAgICAgRVJSKCJUaGUgRDNEMTEgZGV2aWNlIHdhcyByZW1vdmVkOiAweCUwOFgiLCByZXN1
bHQpOwogICAgIH0KIAogICAgIHJldHVybiBpc0xvc3Q7CkBAIC0yNjQyLDYgKzI1NTMsMTQgQEAK
IHsKICAgICBSZW5kZXJlckQzRDo6Y2xlYW51cCgpOwogCisgICAgbVNjcmF0Y2hNZW1vcnlCdWZm
ZXIucmVzaXplKDApOworCisgICAgaWYgKG1Bbm5vdGF0b3IgIT0gbnVsbHB0cikKKyAgICB7Cisg
ICAgICAgIGdsOjpVbmluaXRpYWxpemVEZWJ1Z0Fubm90YXRpb25zKCk7CisgICAgICAgIFNhZmVE
ZWxldGUobUFubm90YXRvcik7CisgICAgfQorCiAgICAgcmVsZWFzZURldmljZVJlc291cmNlcygp
OwogCiAgICAgaWYgKCFtQ3JlYXRlZFdpdGhEZXZpY2VFWFQpCkBAIC0yNzAxLDggKzI2MjAsNiBA
QAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgbURldmljZUxvc3QgPSBmYWxz
ZTsKLQogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNzg3LDcgKzI3MDQsNyBAQAogCiAgICAg
Ly8gV2Ugb25seSBjdXJyZW50bHkgc3VwcG9ydCBzaGFyZSBoYW5kbGVzIHdpdGggQkdSQSBzdXJm
YWNlcywgYmVjYXVzZQogICAgIC8vIGNocm9tZSBuZWVkcyBCR1JBLiBPbmNlIGNocm9tZSBmaXhl
cyB0aGlzLCB3ZSBzaG91bGQgYWx3YXlzIHN1cHBvcnQgdGhlbS4KLSAgICBpZiAoIWdldFJlbmRl
cmVyRXh0ZW5zaW9ucygpLnRleHR1cmVGb3JtYXRCR1JBODg4OCkKKyAgICBpZiAoIWdldE5hdGl2
ZUV4dGVuc2lvbnMoKS50ZXh0dXJlRm9ybWF0QkdSQTg4ODgpCiAgICAgewogICAgICAgICBtU3Vw
cG9ydHNTaGFyZUhhbmRsZXMgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjg0
Nyw2ICsyNzY0LDE4IEBACiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgUmVuZGVyZXIxMTo6
Z2V0TlYxMlRleHR1cmVTdXBwb3J0KCkgY29uc3QKK3sKKyAgICBIUkVTVUxUIHJlc3VsdDsKKyAg
ICBVSU5UIGZvcm1hdFN1cHBvcnQ7CisgICAgcmVzdWx0ID0gbURldmljZS0+Q2hlY2tGb3JtYXRT
dXBwb3J0KERYR0lfRk9STUFUX05WMTIsICZmb3JtYXRTdXBwb3J0KTsKKyAgICBpZiAocmVzdWx0
ID09IEVfRkFJTCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0
dXJuIChmb3JtYXRTdXBwb3J0ICYgRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRTJEKSAhPSAw
OworfQorCiBpbnQgUmVuZGVyZXIxMTo6Z2V0TWFqb3JTaGFkZXJNb2RlbCgpIGNvbnN0CiB7CiAg
ICAgc3dpdGNoIChtUmVuZGVyZXIxMURldmljZUNhcHMuZmVhdHVyZUxldmVsKQpAQCAtMjg5NCwz
NSArMjgyMywyMiBAQAogICAgIHJldHVybiBtV29ya2Fyb3VuZHM7CiB9CiAKLWdsOjpFcnJvciBS
ZW5kZXJlcjExOjpjb3B5SW1hZ2UyRChjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVy
LCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zm
c2V0LCBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwgR0xpbnQgbGV2ZWwpCitnbDo6RXJyb3IgUmVu
ZGVyZXIxMTo6Y29weUltYWdlSW50ZXJuYWwoY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1
ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
UmVjdGFuZ2xlICZzb3VyY2VSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyVGFyZ2V0RDNEICpkZXN0UmVuZGVyVGFyZ2V0
KQogewotICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmNvbG9yYnVmZmVyID0g
ZnJhbWVidWZmZXItPmdldFJlYWRDb2xvcmJ1ZmZlcigpOwotICAgIEFTU0VSVChjb2xvcmJ1ZmZl
cik7CisgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqY29sb3JBdHRhY2htZW50
ID0gZnJhbWVidWZmZXItPmdldFJlYWRDb2xvcmJ1ZmZlcigpOworICAgIEFTU0VSVChjb2xvckF0
dGFjaG1lbnQpOwogCi0gICAgUmVuZGVyVGFyZ2V0MTEgKnNvdXJjZVJlbmRlclRhcmdldCA9IE5V
TEw7Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gY29sb3JidWZmZXItPmdldFJlbmRlclRhcmdldCgm
c291cmNlUmVuZGVyVGFyZ2V0KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBSZW5kZXJUYXJnZXQxMSAqc291cmNlUmVu
ZGVyVGFyZ2V0ID0gbnVsbHB0cjsKKyAgICBBTkdMRV9UUlkoY29sb3JBdHRhY2htZW50LT5nZXRS
ZW5kZXJUYXJnZXQoJnNvdXJjZVJlbmRlclRhcmdldCkpOwogICAgIEFTU0VSVChzb3VyY2VSZW5k
ZXJUYXJnZXQpOwogCiAgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzb3VyY2UgPSBzb3Vy
Y2VSZW5kZXJUYXJnZXQtPmdldEJsaXRTaGFkZXJSZXNvdXJjZVZpZXcoKTsKICAgICBBU1NFUlQo
c291cmNlKTsKIAotICAgIFRleHR1cmVTdG9yYWdlMTFfMkQgKnN0b3JhZ2UxMSA9IEdldEFzPFRl
eHR1cmVTdG9yYWdlMTFfMkQ+KHN0b3JhZ2UpOwotICAgIEFTU0VSVChzdG9yYWdlMTEpOwotCi0g
ICAgZ2w6OkltYWdlSW5kZXggaW5kZXggPSBnbDo6SW1hZ2VJbmRleDo6TWFrZTJEKGxldmVsKTsK
LSAgICBSZW5kZXJUYXJnZXREM0QgKmRlc3RSZW5kZXJUYXJnZXQgPSBOVUxMOwotICAgIGVycm9y
ID0gc3RvcmFnZTExLT5nZXRSZW5kZXJUYXJnZXQoaW5kZXgsICZkZXN0UmVuZGVyVGFyZ2V0KTsK
LSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwot
ICAgIH0KLSAgICBBU1NFUlQoZGVzdFJlbmRlclRhcmdldCk7Ci0KICAgICBJRDNEMTFSZW5kZXJU
YXJnZXRWaWV3ICpkZXN0ID0gR2V0QXM8UmVuZGVyVGFyZ2V0MTE+KGRlc3RSZW5kZXJUYXJnZXQp
LT5nZXRSZW5kZXJUYXJnZXRWaWV3KCk7CiAgICAgQVNTRVJUKGRlc3QpOwogCkBAIC0yOTI5LDcg
KzI4NDUsNyBAQAogICAgIGdsOjpCb3ggc291cmNlQXJlYShzb3VyY2VSZWN0LngsIHNvdXJjZVJl
Y3QueSwgMCwgc291cmNlUmVjdC53aWR0aCwgc291cmNlUmVjdC5oZWlnaHQsIDEpOwogICAgIGds
OjpFeHRlbnRzIHNvdXJjZVNpemUoc291cmNlUmVuZGVyVGFyZ2V0LT5nZXRXaWR0aCgpLCBzb3Vy
Y2VSZW5kZXJUYXJnZXQtPmdldEhlaWdodCgpLCAxKTsKIAotICAgIGNvbnN0IGJvb2wgaW52ZXJ0
U291cmNlID0gVXNlUHJlc2VudFBhdGhGYXN0KHRoaXMsIGNvbG9yYnVmZmVyKTsKKyAgICBjb25z
dCBib29sIGludmVydFNvdXJjZSA9IFVzZVByZXNlbnRQYXRoRmFzdCh0aGlzLCBjb2xvckF0dGFj
aG1lbnQpOwogICAgIGlmIChpbnZlcnRTb3VyY2UpCiAgICAgewogICAgICAgICBzb3VyY2VBcmVh
LnkgICAgICA9IHNvdXJjZVNpemUuaGVpZ2h0IC0gc291cmNlUmVjdC55OwpAQCAtMjkzOSwxODgg
KzI4NTUsMjIwIEBACiAgICAgZ2w6OkJveCBkZXN0QXJlYShkZXN0T2Zmc2V0LngsIGRlc3RPZmZz
ZXQueSwgMCwgc291cmNlUmVjdC53aWR0aCwgc291cmNlUmVjdC5oZWlnaHQsIDEpOwogICAgIGds
OjpFeHRlbnRzIGRlc3RTaXplKGRlc3RSZW5kZXJUYXJnZXQtPmdldFdpZHRoKCksIGRlc3RSZW5k
ZXJUYXJnZXQtPmdldEhlaWdodCgpLCAxKTsKIAotICAgIC8vIFVzZSBuZWFyZXN0IGZpbHRlcmlu
ZyBiZWNhdXNlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gYXJlIHRoZSBzYW1lIHNpemUgZm9yIHRo
ZSBkaXJlY3QKLSAgICAvLyBjb3B5Ci0gICAgZXJyb3IgPSBtQmxpdC0+Y29weVRleHR1cmUoc291
cmNlLCBzb3VyY2VBcmVhLCBzb3VyY2VTaXplLCBkZXN0LCBkZXN0QXJlYSwgZGVzdFNpemUsIE5V
TEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdEZvcm1hdCwgR0xfTkVBUkVT
VCwgZmFsc2UpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1
cm4gZXJyb3I7Ci0gICAgfQorICAgIC8vIFVzZSBuZWFyZXN0IGZpbHRlcmluZyBiZWNhdXNlIHNv
dXJjZSBhbmQgZGVzdGluYXRpb24gYXJlIHRoZSBzYW1lIHNpemUgZm9yIHRoZSBkaXJlY3QgY29w
eS4KKyAgICAvLyBDb252ZXJ0IHRvIHRoZSB1bnNpemVkIGZvcm1hdCBiZWZvcmUgY2FsbGluZyBj
b3B5VGV4dHVyZS4KKyAgICBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJmludGVybmFsRm9ybWF0
ID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhkZXN0Rm9ybWF0KTsKKyAgICBBTkdMRV9UUlko
bUJsaXQtPmNvcHlUZXh0dXJlKHNvdXJjZSwgc291cmNlQXJlYSwgc291cmNlU2l6ZSwgZGVzdCwg
ZGVzdEFyZWEsIGRlc3RTaXplLCBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50ZXJuYWxGb3JtYXQuZm9ybWF0LCBHTF9ORUFSRVNULCBmYWxzZSwgZmFsc2UsIGZh
bHNlKSk7CiAKLSAgICBzdG9yYWdlMTEtPmludmFsaWRhdGVTd2l6emxlQ2FjaGVMZXZlbChsZXZl
bCk7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX05PX0VSUk9SKTsKK2dsOjpFcnJvciBSZW5kZXJlcjExOjpjb3B5SW1hZ2UyRChjb25zdCBn
bDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZVJlY3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RGb3JtYXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCkKK3sKKyAgICBUZXh0dXJlU3Rv
cmFnZTExXzJEICpzdG9yYWdlMTEgPSBHZXRBczxUZXh0dXJlU3RvcmFnZTExXzJEPihzdG9yYWdl
KTsKKyAgICBBU1NFUlQoc3RvcmFnZTExKTsKKworICAgIGdsOjpJbWFnZUluZGV4IGluZGV4ICAg
ICAgICAgICAgICA9IGdsOjpJbWFnZUluZGV4OjpNYWtlMkQobGV2ZWwpOworICAgIFJlbmRlclRh
cmdldEQzRCAqZGVzdFJlbmRlclRhcmdldCA9IG51bGxwdHI7CisgICAgQU5HTEVfVFJZKHN0b3Jh
Z2UxMS0+Z2V0UmVuZGVyVGFyZ2V0KGluZGV4LCAmZGVzdFJlbmRlclRhcmdldCkpOworICAgIEFT
U0VSVChkZXN0UmVuZGVyVGFyZ2V0KTsKKworICAgIEFOR0xFX1RSWShjb3B5SW1hZ2VJbnRlcm5h
bChmcmFtZWJ1ZmZlciwgc291cmNlUmVjdCwgZGVzdEZvcm1hdCwgZGVzdE9mZnNldCwgZGVzdFJl
bmRlclRhcmdldCkpOworCisgICAgc3RvcmFnZTExLT5tYXJrTGV2ZWxEaXJ0eShsZXZlbCk7CisK
KyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmNv
cHlJbWFnZUN1YmUoY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwgY29uc3QgZ2w6
OlJlY3RhbmdsZSAmc291cmNlUmVjdCwgR0xlbnVtIGRlc3RGb3JtYXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LCBUZXh0
dXJlU3RvcmFnZSAqc3RvcmFnZSwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwpCiB7Ci0gICAg
Y29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqY29sb3JidWZmZXIgPSBmcmFtZWJ1ZmZl
ci0+Z2V0UmVhZENvbG9yYnVmZmVyKCk7Ci0gICAgQVNTRVJUKGNvbG9yYnVmZmVyKTsKKyAgICBU
ZXh0dXJlU3RvcmFnZTExX0N1YmUgKnN0b3JhZ2UxMSA9IEdldEFzPFRleHR1cmVTdG9yYWdlMTFf
Q3ViZT4oc3RvcmFnZSk7CisgICAgQVNTRVJUKHN0b3JhZ2UxMSk7CiAKLSAgICBSZW5kZXJUYXJn
ZXQxMSAqc291cmNlUmVuZGVyVGFyZ2V0ID0gTlVMTDsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBj
b2xvcmJ1ZmZlci0+Z2V0UmVuZGVyVGFyZ2V0KCZzb3VyY2VSZW5kZXJUYXJnZXQpOwotICAgIGlm
IChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQot
ICAgIEFTU0VSVChzb3VyY2VSZW5kZXJUYXJnZXQpOworICAgIGdsOjpJbWFnZUluZGV4IGluZGV4
ID0gZ2w6OkltYWdlSW5kZXg6Ok1ha2VDdWJlKHRhcmdldCwgbGV2ZWwpOworICAgIFJlbmRlclRh
cmdldEQzRCAqZGVzdFJlbmRlclRhcmdldCA9IG51bGxwdHI7CisgICAgQU5HTEVfVFJZKHN0b3Jh
Z2UxMS0+Z2V0UmVuZGVyVGFyZ2V0KGluZGV4LCAmZGVzdFJlbmRlclRhcmdldCkpOworICAgIEFT
U0VSVChkZXN0UmVuZGVyVGFyZ2V0KTsKIAotICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAq
c291cmNlID0gc291cmNlUmVuZGVyVGFyZ2V0LT5nZXRCbGl0U2hhZGVyUmVzb3VyY2VWaWV3KCk7
Ci0gICAgQVNTRVJUKHNvdXJjZSk7CisgICAgQU5HTEVfVFJZKGNvcHlJbWFnZUludGVybmFsKGZy
YW1lYnVmZmVyLCBzb3VyY2VSZWN0LCBkZXN0Rm9ybWF0LCBkZXN0T2Zmc2V0LCBkZXN0UmVuZGVy
VGFyZ2V0KSk7CiAKLSAgICBUZXh0dXJlU3RvcmFnZTExX0N1YmUgKnN0b3JhZ2UxMSA9IEdldEFz
PFRleHR1cmVTdG9yYWdlMTFfQ3ViZT4oc3RvcmFnZSk7CisgICAgc3RvcmFnZTExLT5tYXJrTGV2
ZWxEaXJ0eShsZXZlbCk7CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKK30KKworZ2w6OkVy
cm9yIFJlbmRlcmVyMTE6OmNvcHlJbWFnZTNEKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVi
dWZmZXIsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRl
c3RPZmZzZXQsIFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLCBHTGludCBsZXZlbCkKK3sKKyAgICBU
ZXh0dXJlU3RvcmFnZTExXzNEICpzdG9yYWdlMTEgPSBHZXRBczxUZXh0dXJlU3RvcmFnZTExXzNE
PihzdG9yYWdlKTsKICAgICBBU1NFUlQoc3RvcmFnZTExKTsKIAotICAgIGdsOjpJbWFnZUluZGV4
IGluZGV4ID0gZ2w6OkltYWdlSW5kZXg6Ok1ha2VDdWJlKHRhcmdldCwgbGV2ZWwpOwotICAgIFJl
bmRlclRhcmdldEQzRCAqZGVzdFJlbmRlclRhcmdldCA9IE5VTEw7Ci0gICAgZXJyb3IgPSBzdG9y
YWdlMTEtPmdldFJlbmRlclRhcmdldChpbmRleCwgJmRlc3RSZW5kZXJUYXJnZXQpOwotICAgIGlm
IChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQor
ICAgIGdsOjpJbWFnZUluZGV4IGluZGV4ID0gZ2w6OkltYWdlSW5kZXg6Ok1ha2UzRChsZXZlbCwg
ZGVzdE9mZnNldC56KTsKKyAgICBSZW5kZXJUYXJnZXREM0QgKmRlc3RSZW5kZXJUYXJnZXQgPSBu
dWxscHRyOworICAgIEFOR0xFX1RSWShzdG9yYWdlMTEtPmdldFJlbmRlclRhcmdldChpbmRleCwg
JmRlc3RSZW5kZXJUYXJnZXQpKTsKICAgICBBU1NFUlQoZGVzdFJlbmRlclRhcmdldCk7CiAKLSAg
ICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpkZXN0ID0gR2V0QXM8UmVuZGVyVGFyZ2V0MTE+KGRl
c3RSZW5kZXJUYXJnZXQpLT5nZXRSZW5kZXJUYXJnZXRWaWV3KCk7Ci0gICAgQVNTRVJUKGRlc3Qp
OworICAgIEFOR0xFX1RSWShjb3B5SW1hZ2VJbnRlcm5hbChmcmFtZWJ1ZmZlciwgc291cmNlUmVj
dCwgZGVzdEZvcm1hdCwgZGVzdE9mZnNldCwgZGVzdFJlbmRlclRhcmdldCkpOwogCi0gICAgZ2w6
OkJveCBzb3VyY2VBcmVhKHNvdXJjZVJlY3QueCwgc291cmNlUmVjdC55LCAwLCBzb3VyY2VSZWN0
LndpZHRoLCBzb3VyY2VSZWN0LmhlaWdodCwgMSk7Ci0gICAgZ2w6OkV4dGVudHMgc291cmNlU2l6
ZShzb3VyY2VSZW5kZXJUYXJnZXQtPmdldFdpZHRoKCksIHNvdXJjZVJlbmRlclRhcmdldC0+Z2V0
SGVpZ2h0KCksIDEpOworICAgIHN0b3JhZ2UxMS0+bWFya0xldmVsRGlydHkobGV2ZWwpOwogCi0g
ICAgY29uc3QgYm9vbCBpbnZlcnRTb3VyY2UgPSBVc2VQcmVzZW50UGF0aEZhc3QodGhpcywgY29s
b3JidWZmZXIpOwotICAgIGlmIChpbnZlcnRTb3VyY2UpCi0gICAgewotICAgICAgICBzb3VyY2VB
cmVhLnkgICAgICA9IHNvdXJjZVNpemUuaGVpZ2h0IC0gc291cmNlUmVjdC55OwotICAgICAgICBz
b3VyY2VBcmVhLmhlaWdodCA9IC1zb3VyY2VBcmVhLmhlaWdodDsKLSAgICB9CisgICAgcmV0dXJu
IGdsOjpOb0Vycm9yKCk7Cit9CiAKLSAgICBnbDo6Qm94IGRlc3RBcmVhKGRlc3RPZmZzZXQueCwg
ZGVzdE9mZnNldC55LCAwLCBzb3VyY2VSZWN0LndpZHRoLCBzb3VyY2VSZWN0LmhlaWdodCwgMSk7
Ci0gICAgZ2w6OkV4dGVudHMgZGVzdFNpemUoZGVzdFJlbmRlclRhcmdldC0+Z2V0V2lkdGgoKSwg
ZGVzdFJlbmRlclRhcmdldC0+Z2V0SGVpZ2h0KCksIDEpOworZ2w6OkVycm9yIFJlbmRlcmVyMTE6
OmNvcHlJbWFnZTJEQXJyYXkoY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwgY29u
c3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlUmVjdCwgR0xlbnVtIGRlc3RGb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zm
c2V0LCBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwgR0xpbnQgbGV2ZWwpCit7CisgICAgVGV4dHVy
ZVN0b3JhZ2UxMV8yREFycmF5ICpzdG9yYWdlMTEgPSBHZXRBczxUZXh0dXJlU3RvcmFnZTExXzJE
QXJyYXk+KHN0b3JhZ2UpOworICAgIEFTU0VSVChzdG9yYWdlMTEpOwogCi0gICAgLy8gVXNlIG5l
YXJlc3QgZmlsdGVyaW5nIGJlY2F1c2Ugc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhcmUgdGhlIHNh
bWUgc2l6ZSBmb3IgdGhlIGRpcmVjdAotICAgIC8vIGNvcHkKLSAgICBlcnJvciA9IG1CbGl0LT5j
b3B5VGV4dHVyZShzb3VyY2UsIHNvdXJjZUFyZWEsIHNvdXJjZVNpemUsIGRlc3QsIGRlc3RBcmVh
LCBkZXN0U2l6ZSwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0Rm9y
bWF0LCBHTF9ORUFSRVNULCBmYWxzZSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgZ2w6OkltYWdlSW5kZXggaW5kZXgg
PSBnbDo6SW1hZ2VJbmRleDo6TWFrZTJEQXJyYXkobGV2ZWwsIGRlc3RPZmZzZXQueik7CisgICAg
UmVuZGVyVGFyZ2V0RDNEICpkZXN0UmVuZGVyVGFyZ2V0ID0gbnVsbHB0cjsKKyAgICBBTkdMRV9U
Ulkoc3RvcmFnZTExLT5nZXRSZW5kZXJUYXJnZXQoaW5kZXgsICZkZXN0UmVuZGVyVGFyZ2V0KSk7
CisgICAgQVNTRVJUKGRlc3RSZW5kZXJUYXJnZXQpOwogCi0gICAgc3RvcmFnZTExLT5pbnZhbGlk
YXRlU3dpenpsZUNhY2hlTGV2ZWwobGV2ZWwpOworICAgIEFOR0xFX1RSWShjb3B5SW1hZ2VJbnRl
cm5hbChmcmFtZWJ1ZmZlciwgc291cmNlUmVjdCwgZGVzdEZvcm1hdCwgZGVzdE9mZnNldCwgZGVz
dFJlbmRlclRhcmdldCkpOworICAgIHN0b3JhZ2UxMS0+bWFya0xldmVsRGlydHkobGV2ZWwpOwog
Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vy
cm9yKCk7CiB9CiAKLWdsOjpFcnJvciBSZW5kZXJlcjExOjpjb3B5SW1hZ2UzRChjb25zdCBnbDo6
RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VSZWN0
LCBHTGVudW0gZGVzdEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LCBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwgR0xp
bnQgbGV2ZWwpCitnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Y29weVRleHR1cmUoY29uc3QgZ2w6OlRl
eHR1cmUgKnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBz
b3VyY2VMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
UmVjdGFuZ2xlICZzb3VyY2VSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgZGVzdExldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgdW5wYWNrRmxpcFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgdW5wYWNrVW5tdWx0aXBseUFscGhhKQogewotICAgIGNvbnN0IGdsOjpGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnQgKmNvbG9yYnVmZmVyID0gZnJhbWVidWZmZXItPmdldFJlYWRDb2xv
cmJ1ZmZlcigpOwotICAgIEFTU0VSVChjb2xvcmJ1ZmZlcik7CisgICAgY29uc3QgVGV4dHVyZUQz
RCAqc291cmNlRDNEID0gR2V0SW1wbEFzPFRleHR1cmVEM0Q+KHNvdXJjZSk7CiAKLSAgICBSZW5k
ZXJUYXJnZXQxMSAqc291cmNlUmVuZGVyVGFyZ2V0ID0gTlVMTDsKLSAgICBnbDo6RXJyb3IgZXJy
b3IgPSBjb2xvcmJ1ZmZlci0+Z2V0UmVuZGVyVGFyZ2V0KCZzb3VyY2VSZW5kZXJUYXJnZXQpOwot
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgVGV4dHVyZVN0b3JhZ2UgKnNvdXJjZVN0b3Jh
Z2UgPSBudWxscHRyOworICAgIEFOR0xFX1RSWShjb25zdF9jYXN0PFRleHR1cmVEM0QgKj4oc291
cmNlRDNEKS0+Z2V0TmF0aXZlVGV4dHVyZSgmc291cmNlU3RvcmFnZSkpOworCisgICAgVGV4dHVy
ZVN0b3JhZ2UxMV8yRCAqc291cmNlU3RvcmFnZTExID0gR2V0QXM8VGV4dHVyZVN0b3JhZ2UxMV8y
RD4oc291cmNlU3RvcmFnZSk7CisgICAgQVNTRVJUKHNvdXJjZVN0b3JhZ2UxMSk7CisKKyAgICBU
ZXh0dXJlU3RvcmFnZTExXzJEICpkZXN0U3RvcmFnZTExID0gR2V0QXM8VGV4dHVyZVN0b3JhZ2Ux
MV8yRD4oc3RvcmFnZSk7CisgICAgQVNTRVJUKGRlc3RTdG9yYWdlMTEpOworCisgICAgLy8gQ2hl
Y2sgZm9yIGZhc3QgcGF0aCB3aGVyZSBhIENvcHlTdWJyZXNvdXJjZVJlZ2lvbiBjYW4gYmUgdXNl
ZC4KKyAgICBpZiAodW5wYWNrUHJlbXVsdGlwbHlBbHBoYSA9PSB1bnBhY2tVbm11bHRpcGx5QWxw
aGEgJiYgIXVucGFja0ZsaXBZICYmCisgICAgICAgIHNvdXJjZVN0b3JhZ2UxMS0+Z2V0Rm9ybWF0
U2V0KCkudGV4Rm9ybWF0ID09IGRlc3RTdG9yYWdlMTEtPmdldEZvcm1hdFNldCgpLnRleEZvcm1h
dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Ci0gICAgQVNTRVJUKHNvdXJj
ZVJlbmRlclRhcmdldCk7CisgICAgICAgIElEM0QxMVJlc291cmNlICpzb3VyY2VSZXNvdXJjZSA9
IG51bGxwdHI7CisgICAgICAgIEFOR0xFX1RSWShzb3VyY2VTdG9yYWdlMTEtPmdldFJlc291cmNl
KCZzb3VyY2VSZXNvdXJjZSkpOwogCi0gICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzb3Vy
Y2UgPSBzb3VyY2VSZW5kZXJUYXJnZXQtPmdldEJsaXRTaGFkZXJSZXNvdXJjZVZpZXcoKTsKLSAg
ICBBU1NFUlQoc291cmNlKTsKKyAgICAgICAgZ2w6OkltYWdlSW5kZXggc291cmNlSW5kZXggPSBn
bDo6SW1hZ2VJbmRleDo6TWFrZTJEKHNvdXJjZUxldmVsKTsKKyAgICAgICAgVUlOVCBzb3VyY2VT
dWJyZXNvdXJjZSAgICAgPSBzb3VyY2VTdG9yYWdlMTEtPmdldFN1YnJlc291cmNlSW5kZXgoc291
cmNlSW5kZXgpOwogCi0gICAgVGV4dHVyZVN0b3JhZ2UxMV8zRCAqc3RvcmFnZTExID0gR2V0QXM8
VGV4dHVyZVN0b3JhZ2UxMV8zRD4oc3RvcmFnZSk7Ci0gICAgQVNTRVJUKHN0b3JhZ2UxMSk7Cisg
ICAgICAgIElEM0QxMVJlc291cmNlICpkZXN0UmVzb3VyY2UgPSBudWxscHRyOworICAgICAgICBB
TkdMRV9UUlkoZGVzdFN0b3JhZ2UxMS0+Z2V0UmVzb3VyY2UoJmRlc3RSZXNvdXJjZSkpOwogCi0g
ICAgZ2w6OkltYWdlSW5kZXggaW5kZXggPSBnbDo6SW1hZ2VJbmRleDo6TWFrZTNEKGxldmVsLCBk
ZXN0T2Zmc2V0LnopOwotICAgIFJlbmRlclRhcmdldEQzRCAqZGVzdFJlbmRlclRhcmdldCA9IE5V
TEw7Ci0gICAgZXJyb3IgPSBzdG9yYWdlMTEtPmdldFJlbmRlclRhcmdldChpbmRleCwgJmRlc3RS
ZW5kZXJUYXJnZXQpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgICAgIGdsOjpJbWFn
ZUluZGV4IGRlc3RJbmRleCA9IGdsOjpJbWFnZUluZGV4OjpNYWtlMkQoZGVzdExldmVsKTsKKyAg
ICAgICAgVUlOVCBkZXN0U3VicmVzb3VyY2UgICAgID0gZGVzdFN0b3JhZ2UxMS0+Z2V0U3VicmVz
b3VyY2VJbmRleChkZXN0SW5kZXgpOworCisgICAgICAgIEQzRDExX0JPWCBzb3VyY2VCb3h7Cisg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxVSU5UPihzb3VyY2VSZWN0LngpLAorICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8VUlOVD4oc291cmNlUmVjdC55KSwKKyAgICAgICAgICAgIDB1LAorICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8VUlOVD4oc291cmNlUmVjdC54ICsgc291cmNlUmVjdC53aWR0aCks
CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxVSU5UPihzb3VyY2VSZWN0LnkgKyBzb3VyY2VSZWN0
LmhlaWdodCksCisgICAgICAgICAgICAxdSwKKyAgICAgICAgfTsKKworICAgICAgICBtRGV2aWNl
Q29udGV4dC0+Q29weVN1YnJlc291cmNlUmVnaW9uKGRlc3RSZXNvdXJjZSwgZGVzdFN1YnJlc291
cmNlLCBkZXN0T2Zmc2V0LngsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGVzdE9mZnNldC55LCBkZXN0T2Zmc2V0LnosIHNvdXJjZVJlc291cmNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVN1YnJlc291
cmNlLCAmc291cmNlQm94KTsKKyAgICB9CisgICAgZWxzZQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGVycm9yOwotICAgIH0KLSAgICBBU1NFUlQoZGVzdFJlbmRlclRhcmdldCk7CisgICAgICAgIElE
M0QxMVNoYWRlclJlc291cmNlVmlldyAqc291cmNlU1JWID0gbnVsbHB0cjsKKyAgICAgICAgQU5H
TEVfVFJZKHNvdXJjZVN0b3JhZ2UxMS0+Z2V0U1JWTGV2ZWxzKHNvdXJjZUxldmVsLCBzb3VyY2VM
ZXZlbCwgJnNvdXJjZVNSVikpOwogCi0gICAgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqZGVzdCA9
IEdldEFzPFJlbmRlclRhcmdldDExPihkZXN0UmVuZGVyVGFyZ2V0KS0+Z2V0UmVuZGVyVGFyZ2V0
VmlldygpOwotICAgIEFTU0VSVChkZXN0KTsKKyAgICAgICAgZ2w6OkltYWdlSW5kZXggZGVzdElu
ZGV4ICAgICAgICAgICAgID0gZ2w6OkltYWdlSW5kZXg6Ok1ha2UyRChkZXN0TGV2ZWwpOworICAg
ICAgICBSZW5kZXJUYXJnZXREM0QgKmRlc3RSZW5kZXJUYXJnZXREM0QgPSBudWxscHRyOworICAg
ICAgICBBTkdMRV9UUlkoZGVzdFN0b3JhZ2UxMS0+Z2V0UmVuZGVyVGFyZ2V0KGRlc3RJbmRleCwg
JmRlc3RSZW5kZXJUYXJnZXREM0QpKTsKIAotICAgIGdsOjpCb3ggc291cmNlQXJlYShzb3VyY2VS
ZWN0LngsIHNvdXJjZVJlY3QueSwgMCwgc291cmNlUmVjdC53aWR0aCwgc291cmNlUmVjdC5oZWln
aHQsIDEpOwotICAgIGdsOjpFeHRlbnRzIHNvdXJjZVNpemUoc291cmNlUmVuZGVyVGFyZ2V0LT5n
ZXRXaWR0aCgpLCBzb3VyY2VSZW5kZXJUYXJnZXQtPmdldEhlaWdodCgpLCAxKTsKKyAgICAgICAg
UmVuZGVyVGFyZ2V0MTEgKmRlc3RSZW5kZXJUYXJnZXQxMSA9IEdldEFzPFJlbmRlclRhcmdldDEx
PihkZXN0UmVuZGVyVGFyZ2V0RDNEKTsKIAotICAgIGdsOjpCb3ggZGVzdEFyZWEoZGVzdE9mZnNl
dC54LCBkZXN0T2Zmc2V0LnksIDAsIHNvdXJjZVJlY3Qud2lkdGgsIHNvdXJjZVJlY3QuaGVpZ2h0
LCAxKTsKLSAgICBnbDo6RXh0ZW50cyBkZXN0U2l6ZShkZXN0UmVuZGVyVGFyZ2V0LT5nZXRXaWR0
aCgpLCBkZXN0UmVuZGVyVGFyZ2V0LT5nZXRIZWlnaHQoKSwgMSk7CisgICAgICAgIElEM0QxMVJl
bmRlclRhcmdldFZpZXcgKmRlc3RSVFYgPSBkZXN0UmVuZGVyVGFyZ2V0MTEtPmdldFJlbmRlclRh
cmdldFZpZXcoKTsKKyAgICAgICAgQVNTRVJUKGRlc3RSVFYpOwogCi0gICAgLy8gVXNlIG5lYXJl
c3QgZmlsdGVyaW5nIGJlY2F1c2Ugc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhcmUgdGhlIHNhbWUg
c2l6ZSBmb3IgdGhlIGRpcmVjdAotICAgIC8vIGNvcHkKLSAgICBlcnJvciA9IG1CbGl0LT5jb3B5
VGV4dHVyZShzb3VyY2UsIHNvdXJjZUFyZWEsIHNvdXJjZVNpemUsIGRlc3QsIGRlc3RBcmVhLCBk
ZXN0U2l6ZSwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0Rm9ybWF0
LCBHTF9ORUFSRVNULCBmYWxzZSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgZ2w6OkJveCBzb3VyY2VBcmVhKHNvdXJjZVJl
Y3QueCwgc291cmNlUmVjdC55LCAwLCBzb3VyY2VSZWN0LndpZHRoLCBzb3VyY2VSZWN0LmhlaWdo
dCwgMSk7CisgICAgICAgIGdsOjpFeHRlbnRzIHNvdXJjZVNpemUoCisgICAgICAgICAgICBzdGF0
aWNfY2FzdDxpbnQ+KHNvdXJjZS0+Z2V0V2lkdGgoc291cmNlLT5nZXRUYXJnZXQoKSwgc291cmNl
TGV2ZWwpKSwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oc291cmNlLT5nZXRIZWlnaHQo
c291cmNlLT5nZXRUYXJnZXQoKSwgc291cmNlTGV2ZWwpKSwgMSk7CisgICAgICAgIGlmICh1bnBh
Y2tGbGlwWSkKKyAgICAgICAgeworICAgICAgICAgICAgc291cmNlQXJlYS55ICAgICAgPSBzb3Vy
Y2VTaXplLmhlaWdodCAtIHNvdXJjZVJlY3QueTsKKyAgICAgICAgICAgIHNvdXJjZUFyZWEuaGVp
Z2h0ID0gLXNvdXJjZUFyZWEuaGVpZ2h0OworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkJveCBk
ZXN0QXJlYShkZXN0T2Zmc2V0LngsIGRlc3RPZmZzZXQueSwgMCwgc291cmNlUmVjdC53aWR0aCwg
c291cmNlUmVjdC5oZWlnaHQsIDEpOworICAgICAgICBnbDo6RXh0ZW50cyBkZXN0U2l6ZShkZXN0
UmVuZGVyVGFyZ2V0MTEtPmdldFdpZHRoKCksIGRlc3RSZW5kZXJUYXJnZXQxMS0+Z2V0SGVpZ2h0
KCksIDEpOworCisgICAgICAgIC8vIFVzZSBuZWFyZXN0IGZpbHRlcmluZyBiZWNhdXNlIHNvdXJj
ZSBhbmQgZGVzdGluYXRpb24gYXJlIHRoZSBzYW1lIHNpemUgZm9yIHRoZSBkaXJlY3QKKyAgICAg
ICAgLy8gY29weQorICAgICAgICBBTkdMRV9UUlkobUJsaXQtPmNvcHlUZXh0dXJlKHNvdXJjZVNS
Viwgc291cmNlQXJlYSwgc291cmNlU2l6ZSwgZGVzdFJUViwgZGVzdEFyZWEsIGRlc3RTaXplLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIGRlc3RGb3JtYXQs
IEdMX05FQVJFU1QsIGZhbHNlLCB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVucGFja1VubXVsdGlwbHlBbHBoYSkpOwogICAgIH0K
IAotICAgIHN0b3JhZ2UxMS0+aW52YWxpZGF0ZVN3aXp6bGVDYWNoZUxldmVsKGxldmVsKTsKKyAg
ICBkZXN0U3RvcmFnZTExLT5tYXJrTGV2ZWxEaXJ0eShkZXN0TGV2ZWwpOwogCi0gICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAK
LWdsOjpFcnJvciBSZW5kZXJlcjExOjpjb3B5SW1hZ2UyREFycmF5KGNvbnN0IGdsOjpGcmFtZWJ1
ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZVJlY3QsIEdMZW51
bSBkZXN0Rm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsIEdMaW50
IGxldmVsKQorZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmNvcHlDb21wcmVzc2VkVGV4dHVyZShjb25z
dCBnbDo6VGV4dHVyZSAqc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBzb3VyY2VMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRlc3RMZXZlbCkKIHsKLSAgICBj
b25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICpjb2xvcmJ1ZmZlciA9IGZyYW1lYnVmZmVy
LT5nZXRSZWFkQ29sb3JidWZmZXIoKTsKLSAgICBBU1NFUlQoY29sb3JidWZmZXIpOworICAgIFRl
eHR1cmVTdG9yYWdlMTFfMkQgKmRlc3RTdG9yYWdlMTEgPSBHZXRBczxUZXh0dXJlU3RvcmFnZTEx
XzJEPihzdG9yYWdlKTsKKyAgICBBU1NFUlQoZGVzdFN0b3JhZ2UxMSk7CiAKLSAgICBSZW5kZXJU
YXJnZXQxMSAqc291cmNlUmVuZGVyVGFyZ2V0ID0gTlVMTDsKLSAgICBnbDo6RXJyb3IgZXJyb3Ig
PSBjb2xvcmJ1ZmZlci0+Z2V0UmVuZGVyVGFyZ2V0KCZzb3VyY2VSZW5kZXJUYXJnZXQpOwotICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAg
fQotICAgIEFTU0VSVChzb3VyY2VSZW5kZXJUYXJnZXQpOworICAgIElEM0QxMVJlc291cmNlICpk
ZXN0UmVzb3VyY2UgPSBudWxscHRyOworICAgIEFOR0xFX1RSWShkZXN0U3RvcmFnZTExLT5nZXRS
ZXNvdXJjZSgmZGVzdFJlc291cmNlKSk7CiAKLSAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcg
KnNvdXJjZSA9IHNvdXJjZVJlbmRlclRhcmdldC0+Z2V0QmxpdFNoYWRlclJlc291cmNlVmlldygp
OwotICAgIEFTU0VSVChzb3VyY2UpOworICAgIGdsOjpJbWFnZUluZGV4IGRlc3RJbmRleCA9IGds
OjpJbWFnZUluZGV4OjpNYWtlMkQoZGVzdExldmVsKTsKKyAgICBVSU5UIGRlc3RTdWJyZXNvdXJj
ZSAgICAgPSBkZXN0U3RvcmFnZTExLT5nZXRTdWJyZXNvdXJjZUluZGV4KGRlc3RJbmRleCk7CiAK
LSAgICBUZXh0dXJlU3RvcmFnZTExXzJEQXJyYXkgKnN0b3JhZ2UxMSA9IEdldEFzPFRleHR1cmVT
dG9yYWdlMTFfMkRBcnJheT4oc3RvcmFnZSk7Ci0gICAgQVNTRVJUKHN0b3JhZ2UxMSk7CisgICAg
VGV4dHVyZUQzRCAqc291cmNlRDNEID0gR2V0SW1wbEFzPFRleHR1cmVEM0Q+KHNvdXJjZSk7Cisg
ICAgQVNTRVJUKHNvdXJjZUQzRCk7CiAKLSAgICBnbDo6SW1hZ2VJbmRleCBpbmRleCA9IGdsOjpJ
bWFnZUluZGV4OjpNYWtlMkRBcnJheShsZXZlbCwgZGVzdE9mZnNldC56KTsKLSAgICBSZW5kZXJU
YXJnZXREM0QgKmRlc3RSZW5kZXJUYXJnZXQgPSBOVUxMOwotICAgIGVycm9yID0gc3RvcmFnZTEx
LT5nZXRSZW5kZXJUYXJnZXQoaW5kZXgsICZkZXN0UmVuZGVyVGFyZ2V0KTsKLSAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KLSAgICBB
U1NFUlQoZGVzdFJlbmRlclRhcmdldCk7CisgICAgVGV4dHVyZVN0b3JhZ2UgKnNvdXJjZVN0b3Jh
Z2UgPSBudWxscHRyOworICAgIEFOR0xFX1RSWShzb3VyY2VEM0QtPmdldE5hdGl2ZVRleHR1cmUo
JnNvdXJjZVN0b3JhZ2UpKTsKIAotICAgIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKmRlc3QgPSBH
ZXRBczxSZW5kZXJUYXJnZXQxMT4oZGVzdFJlbmRlclRhcmdldCktPmdldFJlbmRlclRhcmdldFZp
ZXcoKTsKLSAgICBBU1NFUlQoZGVzdCk7CisgICAgVGV4dHVyZVN0b3JhZ2UxMV8yRCAqc291cmNl
U3RvcmFnZTExID0gR2V0QXM8VGV4dHVyZVN0b3JhZ2UxMV8yRD4oc291cmNlU3RvcmFnZSk7Cisg
ICAgQVNTRVJUKHNvdXJjZVN0b3JhZ2UxMSk7CiAKLSAgICBnbDo6Qm94IHNvdXJjZUFyZWEoc291
cmNlUmVjdC54LCBzb3VyY2VSZWN0LnksIDAsIHNvdXJjZVJlY3Qud2lkdGgsIHNvdXJjZVJlY3Qu
aGVpZ2h0LCAxKTsKLSAgICBnbDo6RXh0ZW50cyBzb3VyY2VTaXplKHNvdXJjZVJlbmRlclRhcmdl
dC0+Z2V0V2lkdGgoKSwgc291cmNlUmVuZGVyVGFyZ2V0LT5nZXRIZWlnaHQoKSwgMSk7CisgICAg
SUQzRDExUmVzb3VyY2UgKnNvdXJjZVJlc291cmNlID0gbnVsbHB0cjsKKyAgICBBTkdMRV9UUlko
c291cmNlU3RvcmFnZTExLT5nZXRSZXNvdXJjZSgmc291cmNlUmVzb3VyY2UpKTsKIAotICAgIGds
OjpCb3ggZGVzdEFyZWEoZGVzdE9mZnNldC54LCBkZXN0T2Zmc2V0LnksIDAsIHNvdXJjZVJlY3Qu
d2lkdGgsIHNvdXJjZVJlY3QuaGVpZ2h0LCAxKTsKLSAgICBnbDo6RXh0ZW50cyBkZXN0U2l6ZShk
ZXN0UmVuZGVyVGFyZ2V0LT5nZXRXaWR0aCgpLCBkZXN0UmVuZGVyVGFyZ2V0LT5nZXRIZWlnaHQo
KSwgMSk7CisgICAgZ2w6OkltYWdlSW5kZXggc291cmNlSW5kZXggPSBnbDo6SW1hZ2VJbmRleDo6
TWFrZTJEKHNvdXJjZUxldmVsKTsKKyAgICBVSU5UIHNvdXJjZVN1YnJlc291cmNlICAgICA9IHNv
dXJjZVN0b3JhZ2UxMS0+Z2V0U3VicmVzb3VyY2VJbmRleChzb3VyY2VJbmRleCk7CiAKLSAgICAv
LyBVc2UgbmVhcmVzdCBmaWx0ZXJpbmcgYmVjYXVzZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFy
ZSB0aGUgc2FtZSBzaXplIGZvciB0aGUgZGlyZWN0Ci0gICAgLy8gY29weQotICAgIGVycm9yID0g
bUJsaXQtPmNvcHlUZXh0dXJlKHNvdXJjZSwgc291cmNlQXJlYSwgc291cmNlU2l6ZSwgZGVzdCwg
ZGVzdEFyZWEsIGRlc3RTaXplLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlc3RGb3JtYXQsIEdMX05FQVJFU1QsIGZhbHNlKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigp
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBtRGV2aWNlQ29udGV4
dC0+Q29weVN1YnJlc291cmNlUmVnaW9uKGRlc3RSZXNvdXJjZSwgZGVzdFN1YnJlc291cmNlLCAw
LCAwLCAwLCBzb3VyY2VSZXNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNvdXJjZVN1YnJlc291cmNlLCBudWxscHRyKTsKIAotICAgIHN0b3JhZ2UxMS0+
aW52YWxpZGF0ZVN3aXp6bGVDYWNoZUxldmVsKGxldmVsKTsKLQotICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJy
b3IgUmVuZGVyZXIxMTo6Y3JlYXRlUmVuZGVyVGFyZ2V0KGludCB3aWR0aCwgaW50IGhlaWdodCwg
R0xlbnVtIGZvcm1hdCwgR0xzaXplaSBzYW1wbGVzLCBSZW5kZXJUYXJnZXREM0QgKipvdXRSVCkK
IHsKLSAgICBjb25zdCBkM2QxMTo6VGV4dHVyZUZvcm1hdCAmZm9ybWF0SW5mbyA9IGQzZDExOjpH
ZXRUZXh0dXJlRm9ybWF0SW5mbyhmb3JtYXQsIG1SZW5kZXJlcjExRGV2aWNlQ2Fwcyk7CisgICAg
Y29uc3QgZDNkMTE6OkZvcm1hdCAmZm9ybWF0SW5mbyA9IGQzZDExOjpGb3JtYXQ6OkdldChmb3Jt
YXQsIG1SZW5kZXJlcjExRGV2aWNlQ2Fwcyk7CiAKLSAgICBjb25zdCBnbDo6VGV4dHVyZUNhcHMg
JnRleHR1cmVDYXBzID0gZ2V0UmVuZGVyZXJUZXh0dXJlQ2FwcygpLmdldChmb3JtYXQpOworICAg
IGNvbnN0IGdsOjpUZXh0dXJlQ2FwcyAmdGV4dHVyZUNhcHMgPSBnZXROYXRpdmVUZXh0dXJlQ2Fw
cygpLmdldChmb3JtYXQpOwogICAgIEdMdWludCBzdXBwb3J0ZWRTYW1wbGVzID0gdGV4dHVyZUNh
cHMuZ2V0TmVhcmVzdFNhbXBsZXMoc2FtcGxlcyk7CiAKICAgICBpZiAod2lkdGggPiAwICYmIGhl
aWdodCA+IDApCkBAIC0zMTMxLDcgKzMwNzksNyBAQAogICAgICAgICBkZXNjLkhlaWdodCA9IGhl
aWdodDsKICAgICAgICAgZGVzYy5NaXBMZXZlbHMgPSAxOwogICAgICAgICBkZXNjLkFycmF5U2l6
ZSA9IDE7Ci0gICAgICAgIGRlc2MuRm9ybWF0ICAgICAgICAgICAgID0gZm9ybWF0SW5mby5mb3Jt
YXRTZXQtPnRleEZvcm1hdDsKKyAgICAgICAgZGVzYy5Gb3JtYXQgICAgICAgICAgICAgPSBmb3Jt
YXRJbmZvLnRleEZvcm1hdDsKICAgICAgICAgZGVzYy5TYW1wbGVEZXNjLkNvdW50ID0gKHN1cHBv
cnRlZFNhbXBsZXMgPT0gMCkgPyAxIDogc3VwcG9ydGVkU2FtcGxlczsKICAgICAgICAgZGVzYy5T
YW1wbGVEZXNjLlF1YWxpdHkgPSAwOwogICAgICAgICBkZXNjLlVzYWdlID0gRDNEMTFfVVNBR0Vf
REVGQVVMVDsKQEAgLTMxNDIsMTYgKzMwOTAsOSBAQAogICAgICAgICAvLyB3ZSdsbCBmbGFnIGl0
IHRvIGFsbG93IGJpbmRpbmcgdGhhdCB3YXkuIFNoYWRlciByZXNvdXJjZSB2aWV3cyBhcmUgYSBs
aXR0bGUKICAgICAgICAgLy8gbW9yZSBjb21wbGljYXRlZC4KICAgICAgICAgYm9vbCBiaW5kUlRW
ID0gZmFsc2UsIGJpbmREU1YgPSBmYWxzZSwgYmluZFNSViA9IGZhbHNlOwotICAgICAgICBiaW5k
UlRWID0gKGZvcm1hdEluZm8uZm9ybWF0U2V0LT5ydHZGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5L
Tk9XTik7Ci0gICAgICAgIGJpbmREU1YgPSAoZm9ybWF0SW5mby5mb3JtYXRTZXQtPmRzdkZvcm1h
dCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dOKTsKLSAgICAgICAgaWYgKGZvcm1hdEluZm8uZm9ybWF0
U2V0LT5zcnZGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTikKLSAgICAgICAgewotICAgICAg
ICAgICAgLy8gTXVsdGlzYW1wbGUgdGFyZ2V0cyBmbGFnZ2VkIGZvciBiaW5kaW5nIGFzIGRlcHRo
IHN0ZW5jaWwgY2Fubm90IGFsc28gYmUKLSAgICAgICAgICAgIC8vIGZsYWdnZWQgZm9yIGJpbmRp
bmcgYXMgU1JWLCBzbyBtYWtlIGNlcnRhaW4gbm90IHRvIGFkZCB0aGUgU1JWIGZsYWcgZm9yCi0g
ICAgICAgICAgICAvLyB0aGVzZSB0YXJnZXRzLgotICAgICAgICAgICAgYmluZFNSViA9ICEoZm9y
bWF0SW5mby5mb3JtYXRTZXQtPmRzdkZvcm1hdCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dOICYmCi0g
ICAgICAgICAgICAgICAgICAgICAgICBkZXNjLlNhbXBsZURlc2MuQ291bnQgPiAxKTsKLSAgICAg
ICAgfQorICAgICAgICBiaW5kUlRWID0gKGZvcm1hdEluZm8ucnR2Rm9ybWF0ICE9IERYR0lfRk9S
TUFUX1VOS05PV04pOworICAgICAgICBiaW5kRFNWID0gKGZvcm1hdEluZm8uZHN2Rm9ybWF0ICE9
IERYR0lfRk9STUFUX1VOS05PV04pOworICAgICAgICBiaW5kU1JWID0gKGZvcm1hdEluZm8uc3J2
Rm9ybWF0ICE9IERYR0lfRk9STUFUX1VOS05PV04pOwogCiAgICAgICAgIGRlc2MuQmluZEZsYWdz
ID0gKGJpbmRSVFYgPyBEM0QxMV9CSU5EX1JFTkRFUl9UQVJHRVQgICA6IDApIHwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAoYmluZERTViA/IEQzRDExX0JJTkRfREVQVEhfU1RFTkNJTCAgIDog
MCkgfApAQCAtMzE3Myw3ICszMTE0LDcgQEAKICAgICAgICAgaWYgKGJpbmRTUlYpCiAgICAgICAg
IHsKICAgICAgICAgICAgIEQzRDExX1NIQURFUl9SRVNPVVJDRV9WSUVXX0RFU0Mgc3J2RGVzYzsK
LSAgICAgICAgICAgIHNydkRlc2MuRm9ybWF0ICAgICAgICAgICAgICAgICAgICA9IGZvcm1hdElu
Zm8uZm9ybWF0U2V0LT5zcnZGb3JtYXQ7CisgICAgICAgICAgICBzcnZEZXNjLkZvcm1hdCA9IGZv
cm1hdEluZm8uc3J2Rm9ybWF0OwogICAgICAgICAgICAgc3J2RGVzYy5WaWV3RGltZW5zaW9uID0g
KHN1cHBvcnRlZFNhbXBsZXMgPT0gMCkgPyBEM0QxMV9TUlZfRElNRU5TSU9OX1RFWFRVUkUyRCA6
IEQzRDExX1NSVl9ESU1FTlNJT05fVEVYVFVSRTJETVM7CiAgICAgICAgICAgICBzcnZEZXNjLlRl
eHR1cmUyRC5Nb3N0RGV0YWlsZWRNaXAgPSAwOwogICAgICAgICAgICAgc3J2RGVzYy5UZXh0dXJl
MkQuTWlwTGV2ZWxzID0gMTsKQEAgLTMxODYsMTAgKzMxMjcsMTAgQEAKICAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8gY3JlYXRlIHJl
bmRlciB0YXJnZXQgc2hhZGVyIHJlc291cmNlIHZpZXcsIHJlc3VsdDogMHglWC4iLCByZXN1bHQp
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoZm9ybWF0SW5mby5mb3JtYXRTZXQt
PmJsaXRTUlZGb3JtYXQgIT0gZm9ybWF0SW5mby5mb3JtYXRTZXQtPnNydkZvcm1hdCkKKyAgICAg
ICAgICAgIGlmIChmb3JtYXRJbmZvLmJsaXRTUlZGb3JtYXQgIT0gZm9ybWF0SW5mby5zcnZGb3Jt
YXQpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgRDNEMTFfU0hBREVSX1JFU09VUkNF
X1ZJRVdfREVTQyBibGl0U1JWRGVzYzsKLSAgICAgICAgICAgICAgICBibGl0U1JWRGVzYy5Gb3Jt
YXQgICAgICAgID0gZm9ybWF0SW5mby5mb3JtYXRTZXQtPmJsaXRTUlZGb3JtYXQ7CisgICAgICAg
ICAgICAgICAgYmxpdFNSVkRlc2MuRm9ybWF0ICAgICAgICA9IGZvcm1hdEluZm8uYmxpdFNSVkZv
cm1hdDsKICAgICAgICAgICAgICAgICBibGl0U1JWRGVzYy5WaWV3RGltZW5zaW9uID0gKHN1cHBv
cnRlZFNhbXBsZXMgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID8gRDNEMTFfU1JWX0RJTUVOU0lPTl9URVhUVVJFMkQKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogRDNEMTFfU1JWX0RJTUVOU0lPTl9U
RVhUVVJFMkRNUzsKQEAgLTMyMTgsNyArMzE1OSw3IEBACiAgICAgICAgIGlmIChiaW5kRFNWKQog
ICAgICAgICB7CiAgICAgICAgICAgICBEM0QxMV9ERVBUSF9TVEVOQ0lMX1ZJRVdfREVTQyBkc3ZE
ZXNjOwotICAgICAgICAgICAgZHN2RGVzYy5Gb3JtYXQgICAgICAgICAgICAgPSBmb3JtYXRJbmZv
LmZvcm1hdFNldC0+ZHN2Rm9ybWF0OworICAgICAgICAgICAgZHN2RGVzYy5Gb3JtYXQgPSBmb3Jt
YXRJbmZvLmRzdkZvcm1hdDsKICAgICAgICAgICAgIGRzdkRlc2MuVmlld0RpbWVuc2lvbiA9IChz
dXBwb3J0ZWRTYW1wbGVzID09IDApID8gRDNEMTFfRFNWX0RJTUVOU0lPTl9URVhUVVJFMkQgOiBE
M0QxMV9EU1ZfRElNRU5TSU9OX1RFWFRVUkUyRE1TOwogICAgICAgICAgICAgZHN2RGVzYy5UZXh0
dXJlMkQuTWlwU2xpY2UgPSAwOwogICAgICAgICAgICAgZHN2RGVzYy5GbGFncyA9IDA7CkBAIC0z
MjM0LDkgKzMxNzUsOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VU
X09GX01FTU9SWSwgIkZhaWxlZCB0byBjcmVhdGUgcmVuZGVyIHRhcmdldCBkZXB0aCBzdGVuY2ls
IHZpZXcsIHJlc3VsdDogMHglWC4iLCByZXN1bHQpOwogICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICAqb3V0UlQgPQotICAgICAgICAgICAgICAgIG5ldyBUZXh0dXJlUmVuZGVyVGFyZ2V0MTEo
ZHN2LCB0ZXh0dXJlLCBzcnYsIGZvcm1hdCwgZm9ybWF0SW5mby5mb3JtYXRTZXQtPmZvcm1hdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQs
IDEsIHN1cHBvcnRlZFNhbXBsZXMpOworICAgICAgICAgICAgKm91dFJUID0gbmV3IFRleHR1cmVS
ZW5kZXJUYXJnZXQxMShkc3YsIHRleHR1cmUsIHNydiwgZm9ybWF0LCBmb3JtYXRJbmZvLCB3aWR0
aCwgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxLCBzdXBwb3J0ZWRTYW1wbGVzKTsKIAogICAgICAgICAgICAgU2FmZVJlbGVhc2UoZHN2KTsK
ICAgICAgICAgfQpAQCAtMzI0Myw3ICszMTgzLDcgQEAKICAgICAgICAgZWxzZSBpZiAoYmluZFJU
VikKICAgICAgICAgewogICAgICAgICAgICAgRDNEMTFfUkVOREVSX1RBUkdFVF9WSUVXX0RFU0Mg
cnR2RGVzYzsKLSAgICAgICAgICAgIHJ0dkRlc2MuRm9ybWF0ICAgICAgICAgICAgID0gZm9ybWF0
SW5mby5mb3JtYXRTZXQtPnJ0dkZvcm1hdDsKKyAgICAgICAgICAgIHJ0dkRlc2MuRm9ybWF0ID0g
Zm9ybWF0SW5mby5ydHZGb3JtYXQ7CiAgICAgICAgICAgICBydHZEZXNjLlZpZXdEaW1lbnNpb24g
PSAoc3VwcG9ydGVkU2FtcGxlcyA9PSAwKSA/IEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTJE
IDogRDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJFMkRNUzsKICAgICAgICAgICAgIHJ0dkRlc2Mu
VGV4dHVyZTJELk1pcFNsaWNlID0gMDsKIApAQCAtMzI2NCw5ICszMjA0LDggQEAKICAgICAgICAg
ICAgICAgICBtRGV2aWNlQ29udGV4dC0+Q2xlYXJSZW5kZXJUYXJnZXRWaWV3KHJ0diwgY2xlYXJW
YWx1ZXMpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAqb3V0UlQgPSBuZXcgVGV4dHVy
ZVJlbmRlclRhcmdldDExKHJ0diwgdGV4dHVyZSwgc3J2LCBibGl0U1JWLCBmb3JtYXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdEluZm8uZm9y
bWF0U2V0LT5mb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDEsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZFNhbXBsZXMpOworICAgICAgICAgICAg
Km91dFJUID0gbmV3IFRleHR1cmVSZW5kZXJUYXJnZXQxMShydHYsIHRleHR1cmUsIHNydiwgYmxp
dFNSViwgZm9ybWF0LCBmb3JtYXRJbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0LCAxLCBzdXBwb3J0ZWRTYW1wbGVzKTsKIAog
ICAgICAgICAgICAgU2FmZVJlbGVhc2UocnR2KTsKICAgICAgICAgfQpAQCAtMzI4MSw5ICszMjIw
LDkgQEAKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgKm91dFJUID0gbmV3IFRleHR1
cmVSZW5kZXJUYXJnZXQxMShzdGF0aWNfY2FzdDxJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICo+KG51
bGxwdHIpLCBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIsIG51bGxwdHIsIGZvcm1hdCwgZDNkMTE6OkFOR0xFX0ZPUk1BVF9OT05FLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQs
IDEsIHN1cHBvcnRlZFNhbXBsZXMpOworICAgICAgICAqb3V0UlQgPSBuZXcgVGV4dHVyZVJlbmRl
clRhcmdldDExKAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SUQzRDExUmVuZGVyVGFyZ2V0Vmll
dyAqPihudWxscHRyKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgZm9ybWF0LAorICAgICAg
ICAgICAgZDNkMTE6OkZvcm1hdDo6R2V0KEdMX05PTkUsIG1SZW5kZXJlcjExRGV2aWNlQ2Fwcyks
IHdpZHRoLCBoZWlnaHQsIDEsIHN1cHBvcnRlZFNhbXBsZXMpOwogICAgIH0KIAogICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwpAQCAtMzI5NCwxMiArMzIzMyw4IEBACiAgICAgQVNT
RVJUKHNvdXJjZSAhPSBudWxscHRyKTsKIAogICAgIFJlbmRlclRhcmdldEQzRCAqbmV3UlQgPSBu
dWxscHRyOwotICAgIGdsOjpFcnJvciBlcnJvciA9IGNyZWF0ZVJlbmRlclRhcmdldChzb3VyY2Ut
PmdldFdpZHRoKCksIHNvdXJjZS0+Z2V0SGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNvdXJjZS0+Z2V0SW50ZXJuYWxGb3JtYXQoKSwgc291cmNlLT5n
ZXRTYW1wbGVzKCksICZuZXdSVCk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKGNyZWF0ZVJlbmRlclRh
cmdldChzb3VyY2UtPmdldFdpZHRoKCksIHNvdXJjZS0+Z2V0SGVpZ2h0KCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UtPmdldEludGVybmFsRm9ybWF0KCksIHNvdXJj
ZS0+Z2V0U2FtcGxlcygpLCAmbmV3UlQpKTsKIAogICAgIFJlbmRlclRhcmdldDExICpzb3VyY2Ux
MSA9IEdldEFzPFJlbmRlclRhcmdldDExPihzb3VyY2UpOwogICAgIFJlbmRlclRhcmdldDExICpk
ZXN0MTEgICA9IEdldEFzPFJlbmRlclRhcmdldDExPihuZXdSVCk7CkBAIC0zMzExLDIxICszMjQ2
LDYgQEAKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotRnJhbWVidWZm
ZXJJbXBsICpSZW5kZXJlcjExOjpjcmVhdGVGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZm
ZXI6OkRhdGEgJmRhdGEpCi17Ci0gICAgcmV0dXJuIG5ldyBGcmFtZWJ1ZmZlcjExKGRhdGEsIHRo
aXMpOwotfQotCi1TaGFkZXJJbXBsICpSZW5kZXJlcjExOjpjcmVhdGVTaGFkZXIoY29uc3QgZ2w6
OlNoYWRlcjo6RGF0YSAmZGF0YSkKLXsKLSAgICByZXR1cm4gbmV3IFNoYWRlckQzRChkYXRhKTsK
LX0KLQotUHJvZ3JhbUltcGwgKlJlbmRlcmVyMTE6OmNyZWF0ZVByb2dyYW0oY29uc3QgZ2w6OlBy
b2dyYW06OkRhdGEgJmRhdGEpCi17Ci0gICAgcmV0dXJuIG5ldyBQcm9ncmFtRDNEKGRhdGEsIHRo
aXMpOwotfQotCiBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6bG9hZEV4ZWN1dGFibGUoY29uc3Qgdm9p
ZCAqZnVuY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJUeXBl
IHR5cGUsCkBAIC0zNDc2LDExICszMzk2LDggQEAKIAogICAgIElEM0RCbG9iICpiaW5hcnkgPSBO
VUxMOwogICAgIHN0ZDo6c3RyaW5nIGRlYnVnSW5mbzsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBt
Q29tcGlsZXIuY29tcGlsZVRvQmluYXJ5KGluZm9Mb2csIHNoYWRlckhMU0wsIHByb2ZpbGUsIGNv
bmZpZ3MsIGxvb3BNYWNyb3MsICZiaW5hcnksICZkZWJ1Z0luZm8pOwotICAgIGlmIChlcnJvci5p
c0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xF
X1RSWShtQ29tcGlsZXIuY29tcGlsZVRvQmluYXJ5KGluZm9Mb2csIHNoYWRlckhMU0wsIHByb2Zp
bGUsIGNvbmZpZ3MsIGxvb3BNYWNyb3MsICZiaW5hcnksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJmRlYnVnSW5mbykpOwogCiAgICAgLy8gSXQncyBwb3NzaWJsZSB0
aGF0IGJpbmFyeSBpcyBOVUxMIGlmIHRoZSBjb21waWxlciBmYWlsZWQgaW4gYWxsIGNvbmZpZ3Vy
YXRpb25zLiAgU2V0IHRoZSBleGVjdXRhYmxlIHRvIE5VTEwKICAgICAvLyBhbmQgcmV0dXJuIEdM
X05PX0VSUk9SIHRvIHNpZ25pZnkgdGhhdCB0aGVyZSB3YXMgYSBsaW5rIGVycm9yIGJ1dCB0aGUg
aW50ZXJuYWwgc3RhdGUgaXMgc3RpbGwgT0suCkBAIC0zNDkwLDggKzM0MDcsOCBAQAogICAgICAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKICAgICB9CiAKLSAgICBlcnJvciA9IGxv
YWRFeGVjdXRhYmxlKGJpbmFyeS0+R2V0QnVmZmVyUG9pbnRlcigpLCBiaW5hcnktPkdldEJ1ZmZl
clNpemUoKSwgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbU91dFZhcnlp
bmdzLCBzZXBhcmF0ZWRPdXRwdXRCdWZmZXJzLCBvdXRFeGVjdHVhYmxlKTsKKyAgICBnbDo6RXJy
b3IgZXJyb3IgPSBsb2FkRXhlY3V0YWJsZShiaW5hcnktPkdldEJ1ZmZlclBvaW50ZXIoKSwgYmlu
YXJ5LT5HZXRCdWZmZXJTaXplKCksIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RyZWFtT3V0VmFyeWluZ3MsIHNlcGFyYXRlZE91dHB1dEJ1ZmZlcnMsIG91dEV4
ZWN0dWFibGUpOwogCiAgICAgU2FmZVJlbGVhc2UoYmluYXJ5KTsKICAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQpAQCAtMzUwNCw3ICszNDIxLDcgQEAKICAgICAgICAgKCpvdXRFeGVjdHVhYmxlKS0+
YXBwZW5kRGVidWdJbmZvKGRlYnVnSW5mbyk7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIFVuaWZvcm1T
dG9yYWdlRDNEICpSZW5kZXJlcjExOjpjcmVhdGVVbmlmb3JtU3RvcmFnZShzaXplX3Qgc3RvcmFn
ZVNpemUpCkBAIC0zNTIyLDQ5ICszNDM5LDIwIEBACiAgICAgcmV0dXJuIG5ldyBJbmRleEJ1ZmZl
cjExKHRoaXMpOwogfQogCi1CdWZmZXJJbXBsICpSZW5kZXJlcjExOjpjcmVhdGVCdWZmZXIoKQor
U3RyZWFtUHJvZHVjZXJJbXBsICpSZW5kZXJlcjExOjpjcmVhdGVTdHJlYW1Qcm9kdWNlckQzRFRl
eHR1cmVOVjEyKAorICAgIGVnbDo6U3RyZWFtOjpDb25zdW1lclR5cGUgY29uc3VtZXJUeXBlLAor
ICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQogewotICAgIEJ1ZmZlcjExICpi
dWZmZXIgPSBuZXcgQnVmZmVyMTEodGhpcyk7Ci0gICAgbUFsaXZlQnVmZmVycy5pbnNlcnQoYnVm
ZmVyKTsKLSAgICByZXR1cm4gYnVmZmVyOworICAgIHJldHVybiBuZXcgU3RyZWFtUHJvZHVjZXJO
VjEyKHRoaXMpOwogfQogCi1WZXJ0ZXhBcnJheUltcGwgKlJlbmRlcmVyMTE6OmNyZWF0ZVZlcnRl
eEFycmF5KGNvbnN0IGdsOjpWZXJ0ZXhBcnJheTo6RGF0YSAmZGF0YSkKLXsKLSAgICByZXR1cm4g
bmV3IFZlcnRleEFycmF5MTEoZGF0YSk7Ci19Ci0KLVF1ZXJ5SW1wbCAqUmVuZGVyZXIxMTo6Y3Jl
YXRlUXVlcnkoR0xlbnVtIHR5cGUpCi17Ci0gICAgcmV0dXJuIG5ldyBRdWVyeTExKHRoaXMsIHR5
cGUpOwotfQotCi1GZW5jZU5WSW1wbCAqUmVuZGVyZXIxMTo6Y3JlYXRlRmVuY2VOVigpCi17Ci0g
ICAgcmV0dXJuIG5ldyBGZW5jZU5WMTEodGhpcyk7Ci19Ci0KLUZlbmNlU3luY0ltcGwgKlJlbmRl
cmVyMTE6OmNyZWF0ZUZlbmNlU3luYygpCi17Ci0gICAgcmV0dXJuIG5ldyBGZW5jZVN5bmMxMSh0
aGlzKTsKLX0KLQotVHJhbnNmb3JtRmVlZGJhY2tJbXBsKiBSZW5kZXJlcjExOjpjcmVhdGVUcmFu
c2Zvcm1GZWVkYmFjaygpCi17Ci0gICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1GZWVkYmFja0QzRCgp
OwotfQotCi1TdHJlYW1JbXBsICpSZW5kZXJlcjExOjpjcmVhdGVTdHJlYW0oY29uc3QgZWdsOjpB
dHRyaWJ1dGVNYXAgJmF0dHJpYnMpCi17Ci0gICAgcmV0dXJuIG5ldyBTdHJlYW0xMSh0aGlzKTsK
LX0KLQogYm9vbCBSZW5kZXJlcjExOjpzdXBwb3J0c0Zhc3RDb3B5QnVmZmVyVG9UZXh0dXJlKEdM
ZW51bSBpbnRlcm5hbEZvcm1hdCkgY29uc3QKIHsKLSAgICBBU1NFUlQoZ2V0UmVuZGVyZXJFeHRl
bnNpb25zKCkucGl4ZWxCdWZmZXJPYmplY3QpOworICAgIEFTU0VSVChnZXROYXRpdmVFeHRlbnNp
b25zKCkucGl4ZWxCdWZmZXJPYmplY3QpOwogCiAgICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0
ICZpbnRlcm5hbEZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGludGVybmFs
Rm9ybWF0KTsKLSAgICBjb25zdCBkM2QxMTo6VGV4dHVyZUZvcm1hdCAmZDNkMTFGb3JtYXRJbmZv
ID0gZDNkMTE6OkdldFRleHR1cmVGb3JtYXRJbmZvKGludGVybmFsRm9ybWF0LCBtUmVuZGVyZXIx
MURldmljZUNhcHMpOworICAgIGNvbnN0IGQzZDExOjpGb3JtYXQgJmQzZDExRm9ybWF0SW5mbyA9
CisgICAgICAgIGQzZDExOjpGb3JtYXQ6OkdldChpbnRlcm5hbEZvcm1hdCwgbVJlbmRlcmVyMTFE
ZXZpY2VDYXBzKTsKIAogICAgIC8vIHNSR0IgZm9ybWF0cyBkbyBub3Qgd29yayB3aXRoIEQzRDEx
IGJ1ZmZlciBTUlZzCiAgICAgaWYgKGludGVybmFsRm9ybWF0SW5mby5jb2xvckVuY29kaW5nID09
IEdMX1NSR0IpCkBAIC0zNTczLDcgKzM0NjEsNyBAQAogICAgIH0KIAogICAgIC8vIFdlIGNhbm5v
dCBzdXBwb3J0IGRpcmVjdCBjb3BpZXMgdG8gbm9uLWNvbG9yLXJlbmRlcmFibGUgZm9ybWF0cwot
ICAgIGlmIChkM2QxMUZvcm1hdEluZm8uZm9ybWF0U2V0LT5ydHZGb3JtYXQgPT0gRFhHSV9GT1JN
QVRfVU5LTk9XTikKKyAgICBpZiAoZDNkMTFGb3JtYXRJbmZvLnJ0dkZvcm1hdCA9PSBEWEdJX0ZP
Uk1BVF9VTktOT1dOKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTM1
ODUsMTEgKzM0NzMsMjMgQEAKICAgICB9CiAKICAgICAvLyBXZSBkb24ndCBzdXBwb3J0IGZvcm1h
dHMgd2hpY2ggd2UgY2FuJ3QgcmVwcmVzZW50IHdpdGhvdXQgY29udmVyc2lvbgotICAgIGlmIChk
M2QxMUZvcm1hdEluZm8uZm9ybWF0U2V0LT5nbEludGVybmFsRm9ybWF0ICE9IGludGVybmFsRm9y
bWF0KQorICAgIGlmIChkM2QxMUZvcm1hdEluZm8uZm9ybWF0LmdsSW50ZXJuYWxGb3JtYXQgIT0g
aW50ZXJuYWxGb3JtYXQpCiAgICAgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisg
ICAgLy8gQnVmZmVyIFNSViBjcmVhdGlvbiBmb3IgdGhpcyBmb3JtYXQgd2FzIG5vdCB3b3JraW5n
IG9uIFdpbmRvd3MgMTAuCisgICAgaWYgKGQzZDExRm9ybWF0SW5mby50ZXhGb3JtYXQgPT0gRFhH
SV9GT1JNQVRfQjVHNVI1QTFfVU5PUk0pCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgLy8gVGhpcyBmb3JtYXQgaXMgbm90IHN1cHBvcnRlZCBhcyBhIGJ1ZmZlciBT
UlYuCisgICAgaWYgKGQzZDExRm9ybWF0SW5mby50ZXhGb3JtYXQgPT0gRFhHSV9GT1JNQVRfQThf
VU5PUk0pCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTM2MTIsOCArMzUxMiw4IEBACiAgICAgcmV0dXJuIEltYWdlMTE6Omdl
bmVyYXRlTWlwbWFwKGRlc3QxMSwgc3JjMTEsIG1SZW5kZXJlcjExRGV2aWNlQ2Fwcyk7CiB9CiAK
LWdsOjpFcnJvciBSZW5kZXJlcjExOjpnZW5lcmF0ZU1pcG1hcHNVc2luZ0QzRChUZXh0dXJlU3Rv
cmFnZSAqc3RvcmFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZ0ZXh0dXJlU3RhdGUpCitnbDo6RXJyb3IgUmVu
ZGVyZXIxMTo6Z2VuZXJhdGVNaXBtYXBVc2luZ0QzRChUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpU
ZXh0dXJlU3RhdGUgJnRleHR1cmVTdGF0ZSkKIHsKICAgICBUZXh0dXJlU3RvcmFnZTExICpzdG9y
YWdlMTEgPSBHZXRBczxUZXh0dXJlU3RvcmFnZTExPihzdG9yYWdlKTsKIApAQCAtMzYyMSwxNSAr
MzUyMSwxMiBAQAogICAgIEFTU0VSVChzdG9yYWdlMTEtPnN1cHBvcnRzTmF0aXZlTWlwbWFwRnVu
Y3Rpb24oKSk7CiAKICAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNydjsKLSAgICBnbDo6
RXJyb3IgZXJyb3IgPSBzdG9yYWdlMTEtPmdldFNSVkxldmVscyh0ZXh0dXJlU3RhdGUuYmFzZUxl
dmVsLCB0ZXh0dXJlU3RhdGUubWF4TGV2ZWwsICZzcnYpOwotICAgIGlmIChlcnJvci5pc0Vycm9y
KCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShz
dG9yYWdlMTEtPmdldFNSVkxldmVscyh0ZXh0dXJlU3RhdGUuZ2V0RWZmZWN0aXZlQmFzZUxldmVs
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmVTdGF0ZS5n
ZXRFZmZlY3RpdmVNYXhMZXZlbCgpLCAmc3J2KSk7CiAKICAgICBtRGV2aWNlQ29udGV4dC0+R2Vu
ZXJhdGVNaXBzKHNydik7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAg
ICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogVGV4dHVyZVN0b3JhZ2UgKlJlbmRlcmVyMTE6
OmNyZWF0ZVRleHR1cmVTdG9yYWdlMkQoU3dhcENoYWluRDNEICpzd2FwQ2hhaW4pCkBAIC0zNjM4
LDExICszNTM1LDE5IEBACiAgICAgcmV0dXJuIG5ldyBUZXh0dXJlU3RvcmFnZTExXzJEKHRoaXMs
IHN3YXBDaGFpbjExKTsKIH0KIAotVGV4dHVyZVN0b3JhZ2UgKlJlbmRlcmVyMTE6OmNyZWF0ZVRl
eHR1cmVTdG9yYWdlRUdMSW1hZ2UoRUdMSW1hZ2VEM0QgKmVnbEltYWdlKQorVGV4dHVyZVN0b3Jh
Z2UgKlJlbmRlcmVyMTE6OmNyZWF0ZVRleHR1cmVTdG9yYWdlRUdMSW1hZ2UoRUdMSW1hZ2VEM0Qg
KmVnbEltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUmVuZGVyVGFyZ2V0RDNEICpyZW5kZXJUYXJnZXREM0QpCiB7Ci0gICAgcmV0
dXJuIG5ldyBUZXh0dXJlU3RvcmFnZTExX0VHTEltYWdlKHRoaXMsIGVnbEltYWdlKTsKKyAgICBy
ZXR1cm4gbmV3IFRleHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2UodGhpcywgZWdsSW1hZ2UsIEdldEFz
PFJlbmRlclRhcmdldDExPihyZW5kZXJUYXJnZXREM0QpKTsKIH0KIAorVGV4dHVyZVN0b3JhZ2Ug
KlJlbmRlcmVyMTE6OmNyZWF0ZVRleHR1cmVTdG9yYWdlRXh0ZXJuYWwoCisgICAgZWdsOjpTdHJl
YW0gKnN0cmVhbSwKKyAgICBjb25zdCBlZ2w6OlN0cmVhbTo6R0xUZXh0dXJlRGVzY3JpcHRpb24g
JmRlc2MpCit7CisgICAgcmV0dXJuIG5ldyBUZXh0dXJlU3RvcmFnZTExX0V4dGVybmFsKHRoaXMs
IHN0cmVhbSwgZGVzYyk7Cit9CisKIFRleHR1cmVTdG9yYWdlICpSZW5kZXJlcjExOjpjcmVhdGVU
ZXh0dXJlU3RvcmFnZTJEKEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgYm9vbCByZW5kZXJUYXJnZXQs
IEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBpbnQgbGV2ZWxzLCBib29sIGhpbnRMZXZl
bFplcm9Pbmx5KQogewogICAgIHJldHVybiBuZXcgVGV4dHVyZVN0b3JhZ2UxMV8yRCh0aGlzLCBp
bnRlcm5hbGZvcm1hdCwgcmVuZGVyVGFyZ2V0LCB3aWR0aCwgaGVpZ2h0LCBsZXZlbHMsIGhpbnRM
ZXZlbFplcm9Pbmx5KTsKQEAgLTM2NjMsMjcgKzM1NjgsNiBAQAogICAgIHJldHVybiBuZXcgVGV4
dHVyZVN0b3JhZ2UxMV8yREFycmF5KHRoaXMsIGludGVybmFsZm9ybWF0LCByZW5kZXJUYXJnZXQs
IHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBsZXZlbHMpOwogfQogCi1UZXh0dXJlSW1wbCAqUmVuZGVy
ZXIxMTo6Y3JlYXRlVGV4dHVyZShHTGVudW0gdGFyZ2V0KQotewotICAgIHN3aXRjaCh0YXJnZXQp
Ci0gICAgewotICAgICAgY2FzZSBHTF9URVhUVVJFXzJEOiByZXR1cm4gbmV3IFRleHR1cmVEM0Rf
MkQodGhpcyk7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVA6IHJldHVybiBuZXcgVGV4
dHVyZUQzRF9DdWJlKHRoaXMpOwotICAgICAgY2FzZSBHTF9URVhUVVJFXzNEOiByZXR1cm4gbmV3
IFRleHR1cmVEM0RfM0QodGhpcyk7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfMkRfQVJSQVk6IHJl
dHVybiBuZXcgVGV4dHVyZUQzRF8yREFycmF5KHRoaXMpOwotICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gTlVMTDsKLX0KLQotUmVuZGVy
YnVmZmVySW1wbCAqUmVuZGVyZXIxMTo6Y3JlYXRlUmVuZGVyYnVmZmVyKCkKLXsKLSAgICBSZW5k
ZXJidWZmZXJEM0QgKnJlbmRlcmJ1ZmZlciA9IG5ldyBSZW5kZXJidWZmZXJEM0QodGhpcyk7Ci0g
ICAgcmV0dXJuIHJlbmRlcmJ1ZmZlcjsKLX0KLQogZ2w6OkVycm9yIFJlbmRlcmVyMTE6OnJlYWRG
cm9tQXR0YWNobWVudChjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICZzcmNBdHRhY2ht
ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZm9ybWF0LApAQCAtMzY5OCwxNyArMzU4MiwxMyBAQAogICAgIGNvbnN0
IGJvb2wgaW52ZXJ0VGV4dHVyZSA9IFVzZVByZXNlbnRQYXRoRmFzdCh0aGlzLCAmc3JjQXR0YWNo
bWVudCk7CiAKICAgICBSZW5kZXJUYXJnZXREM0QgKnJlbmRlclRhcmdldCA9IG51bGxwdHI7Ci0g
ICAgZ2w6OkVycm9yIGVycm9yID0gc3JjQXR0YWNobWVudC5nZXRSZW5kZXJUYXJnZXQoJnJlbmRl
clRhcmdldCk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKHNyY0F0dGFjaG1lbnQuZ2V0UmVuZGVyVGFy
Z2V0KCZyZW5kZXJUYXJnZXQpKTsKIAogICAgIFJlbmRlclRhcmdldDExICpydDExID0gR2V0QXM8
UmVuZGVyVGFyZ2V0MTE+KHJlbmRlclRhcmdldCk7CiAgICAgQVNTRVJUKHJ0MTEtPmdldFRleHR1
cmUoKSk7CiAKICAgICBUZXh0dXJlSGVscGVyMTEgdGV4dHVyZUhlbHBlciA9Ci0gICAgICAgIFRl
eHR1cmVIZWxwZXIxMTo6TWFrZUFuZFJlZmVyZW5jZShydDExLT5nZXRUZXh0dXJlKCksIHJ0MTEt
PmdldEFOR0xFRm9ybWF0KCkpOworICAgICAgICBUZXh0dXJlSGVscGVyMTE6Ok1ha2VBbmRSZWZl
cmVuY2UocnQxMS0+Z2V0VGV4dHVyZSgpLCBydDExLT5nZXRGb3JtYXRTZXQoKSk7CiAgICAgdW5z
aWduZWQgaW50IHNvdXJjZVN1YlJlc291cmNlID0gcnQxMS0+Z2V0U3VicmVzb3VyY2VJbmRleCgp
OwogCiAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnRleFNpemUgPSB0ZXh0dXJlSGVscGVyLmdldEV4
dGVudHMoKTsKQEAgLTM3MzYsMTkgKzM2MTYsMTYgQEAKICAgICBpZiAoc2FmZUFyZWEud2lkdGgg
PT0gMCB8fCBzYWZlQXJlYS5oZWlnaHQgPT0gMCkKICAgICB7CiAgICAgICAgIC8vIG5vIHdvcmsg
dG8gZG8KLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJl
dHVybiBnbDo6Tm9FcnJvcigpOwogICAgIH0KIAogICAgIGdsOjpFeHRlbnRzIHNhZmVTaXplKHNh
ZmVBcmVhLndpZHRoLCBzYWZlQXJlYS5oZWlnaHQsIDEpOwotICAgIGF1dG8gZXJyb3JPclJlc3Vs
dCA9Ci0gICAgICAgIENyZWF0ZVN0YWdpbmdUZXh0dXJlKHRleHR1cmVIZWxwZXIuZ2V0VGV4dHVy
ZVR5cGUoKSwgdGV4dHVyZUhlbHBlci5nZXRGb3JtYXQoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGV4dHVyZUhlbHBlci5nZXRBTkdMRUZvcm1hdCgpLCBzYWZlU2l6ZSwgbURldmlj
ZSk7Ci0gICAgaWYgKGVycm9yT3JSZXN1bHQuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGVycm9yT3JSZXN1bHQuZ2V0RXJyb3IoKTsKLSAgICB9CisgICAgVGV4dHVyZUhlbHBlcjEx
IHN0YWdpbmdIZWxwZXI7CisgICAgQU5HTEVfVFJZX1JFU1VMVCgKKyAgICAgICAgQ3JlYXRlU3Rh
Z2luZ1RleHR1cmUodGV4dHVyZUhlbHBlci5nZXRUZXh0dXJlVHlwZSgpLCB0ZXh0dXJlSGVscGVy
LmdldEZvcm1hdFNldCgpLCBzYWZlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U3RhZ2luZ0FjY2Vzczo6UkVBRCwgbURldmljZSksCisgICAgICAgIHN0YWdpbmdIZWxwZXIpOwog
Ci0gICAgVGV4dHVyZUhlbHBlcjExIHN0YWdpbmdIZWxwZXIoZXJyb3JPclJlc3VsdC5nZXRSZXN1
bHQoKSk7CiAgICAgVGV4dHVyZUhlbHBlcjExIHJlc29sdmVkVGV4dHVyZUhlbHBlcjsKIAogICAg
IC8vICJzcmNUZXh0dXJlIiB1c3VhbGx5IHBvaW50cyB0byB0aGUgc291cmNlIHRleHR1cmUuCkBA
IC0zNzgzLDcgKzM2NjAsNyBAQAogICAgICAgICBtRGV2aWNlQ29udGV4dC0+UmVzb2x2ZVN1YnJl
c291cmNlKHJlc29sdmVUZXgyRCwgMCwgdGV4dHVyZUhlbHBlci5nZXRUZXh0dXJlMkQoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VTdWJSZXNvdXJj
ZSwgdGV4dHVyZUhlbHBlci5nZXRGb3JtYXQoKSk7CiAgICAgICAgIHJlc29sdmVkVGV4dHVyZUhl
bHBlciA9Ci0gICAgICAgICAgICBUZXh0dXJlSGVscGVyMTE6Ok1ha2VBbmRSZWZlcmVuY2UocmVz
b2x2ZVRleDJELCB0ZXh0dXJlSGVscGVyLmdldEFOR0xFRm9ybWF0KCkpOworICAgICAgICAgICAg
VGV4dHVyZUhlbHBlcjExOjpNYWtlQW5kUmVmZXJlbmNlKHJlc29sdmVUZXgyRCwgdGV4dHVyZUhl
bHBlci5nZXRGb3JtYXRTZXQoKSk7CiAKICAgICAgICAgc291cmNlU3ViUmVzb3VyY2UgPSAwOwog
ICAgICAgICBzcmNUZXh0dXJlICAgICAgICA9ICZyZXNvbHZlZFRleHR1cmVIZWxwZXI7CkBAIC0z
ODA2LDMwICszNjgzLDI3IEBACiAgICAgbURldmljZUNvbnRleHQtPkNvcHlTdWJyZXNvdXJjZVJl
Z2lvbihzdGFnaW5nSGVscGVyLmdldFJlc291cmNlKCksIDAsIDAsIDAsIDAsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNUZXh0dXJlLT5nZXRSZXNvdXJjZSgp
LCBzb3VyY2VTdWJSZXNvdXJjZSwgJnNyY0JveCk7CiAKLSAgICBpZiAoaW52ZXJ0VGV4dHVyZSkK
KyAgICBpZiAoIWludmVydFRleHR1cmUpCiAgICAgewotICAgICAgICBnbDo6UGl4ZWxQYWNrU3Rh
dGUgaW52ZXJ0VGV4dHVyZVBhY2s7CisgICAgICAgIFBhY2tQaXhlbHNQYXJhbXMgcGFja1BhcmFt
cyhzYWZlQXJlYSwgZm9ybWF0LCB0eXBlLCBvdXRwdXRQaXRjaCwgcGFjaywgMCk7CisgICAgICAg
IHJldHVybiBwYWNrUGl4ZWxzKHN0YWdpbmdIZWxwZXIsIHBhY2tQYXJhbXMsIHBpeGVsc091dCk7
CisgICAgfQogCi0gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBQaXhlbFBhY2tTdGF0ZSB3aXRoIHJl
dmVyc2VkIHJvdyBvcmRlci4gTm90ZSB0aGF0IHdlIGNhbid0IGp1c3QgYXNzaWduCi0gICAgICAg
IC8vICdpbnZlcnRUZXh0dXJlUGFjaycgdG8gYmUgJ3BhY2snIChvciBtZW1jcHkpIHNpbmNlIHRo
YXQgYnJlYWtzIHRoZSByZWYgY291bnRpbmcvb2JqZWN0Ci0gICAgICAgIC8vIHRyYWNraW5nIGlu
IHRoZSAncGl4ZWxCdWZmZXInIG1lbWJlcnMsIGNhdXNpbmcgbGVha3MuIEluc3RlYWQgd2UgbXVz
dCB1c2UKLSAgICAgICAgLy8gcGl4ZWxCdWZmZXIuc2V0KCkgdHdpY2UsIHdoaWNoIHBlcmZvcm1z
IHRoZSBhZGRSZWYvcmVsZWFzZSBjb3JyZWN0bHkKLSAgICAgICAgaW52ZXJ0VGV4dHVyZVBhY2su
YWxpZ25tZW50ID0gcGFjay5hbGlnbm1lbnQ7Ci0gICAgICAgIGludmVydFRleHR1cmVQYWNrLnBp
eGVsQnVmZmVyLnNldChwYWNrLnBpeGVsQnVmZmVyLmdldCgpKTsKLSAgICAgICAgaW52ZXJ0VGV4
dHVyZVBhY2sucmV2ZXJzZVJvd09yZGVyID0gIXBhY2sucmV2ZXJzZVJvd09yZGVyOworICAgIGds
OjpQaXhlbFBhY2tTdGF0ZSBpbnZlcnRUZXh0dXJlUGFjazsKIAotICAgICAgICBQYWNrUGl4ZWxz
UGFyYW1zIHBhY2tQYXJhbXMoc2FmZUFyZWEsIGZvcm1hdCwgdHlwZSwgb3V0cHV0UGl0Y2gsIGlu
dmVydFRleHR1cmVQYWNrLCAwKTsKLSAgICAgICAgZXJyb3IgPSBwYWNrUGl4ZWxzKHN0YWdpbmdI
ZWxwZXIsIHBhY2tQYXJhbXMsIHBpeGVsc091dCk7CisgICAgLy8gQ3JlYXRlIGEgbmV3IFBpeGVs
UGFja1N0YXRlIHdpdGggcmV2ZXJzZWQgcm93IG9yZGVyLiBOb3RlIHRoYXQgd2UgY2FuJ3QganVz
dCBhc3NpZ24KKyAgICAvLyAnaW52ZXJ0VGV4dHVyZVBhY2snIHRvIGJlICdwYWNrJyAob3IgbWVt
Y3B5KSBzaW5jZSB0aGF0IGJyZWFrcyB0aGUgcmVmIGNvdW50aW5nL29iamVjdAorICAgIC8vIHRy
YWNraW5nIGluIHRoZSAncGl4ZWxCdWZmZXInIG1lbWJlcnMsIGNhdXNpbmcgbGVha3MuIEluc3Rl
YWQgd2UgbXVzdCB1c2UKKyAgICAvLyBwaXhlbEJ1ZmZlci5zZXQoKSB0d2ljZSwgd2hpY2ggcGVy
Zm9ybXMgdGhlIGFkZFJlZi9yZWxlYXNlIGNvcnJlY3RseQorICAgIGludmVydFRleHR1cmVQYWNr
LmFsaWdubWVudCA9IHBhY2suYWxpZ25tZW50OworICAgIGludmVydFRleHR1cmVQYWNrLnBpeGVs
QnVmZmVyLnNldChwYWNrLnBpeGVsQnVmZmVyLmdldCgpKTsKKyAgICBpbnZlcnRUZXh0dXJlUGFj
ay5yZXZlcnNlUm93T3JkZXIgPSAhcGFjay5yZXZlcnNlUm93T3JkZXI7CiAKLSAgICAgICAgaW52
ZXJ0VGV4dHVyZVBhY2sucGl4ZWxCdWZmZXIuc2V0KG51bGxwdHIpOwotCi0gICAgICAgIHJldHVy
biBlcnJvcjsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgUGFja1BpeGVsc1BhcmFt
cyBwYWNrUGFyYW1zKHNhZmVBcmVhLCBmb3JtYXQsIHR5cGUsIG91dHB1dFBpdGNoLCBwYWNrLCAw
KTsKLSAgICAgICAgcmV0dXJuIHBhY2tQaXhlbHMoc3RhZ2luZ0hlbHBlciwgcGFja1BhcmFtcywg
cGl4ZWxzT3V0KTsKLSAgICB9CisgICAgUGFja1BpeGVsc1BhcmFtcyBwYWNrUGFyYW1zKHNhZmVB
cmVhLCBmb3JtYXQsIHR5cGUsIG91dHB1dFBpdGNoLCBpbnZlcnRUZXh0dXJlUGFjaywgMCk7Cisg
ICAgZ2w6OkVycm9yIGVycm9yID0gcGFja1BpeGVscyhzdGFnaW5nSGVscGVyLCBwYWNrUGFyYW1z
LCBwaXhlbHNPdXQpOworICAgIGludmVydFRleHR1cmVQYWNrLnBpeGVsQnVmZmVyLnNldChudWxs
cHRyKTsKKyAgICBBTkdMRV9UUlkoZXJyb3IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwog
fQogCiBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6cGFja1BpeGVscyhjb25zdCBUZXh0dXJlSGVscGVy
MTEgJnRleHR1cmVIZWxwZXIsCkBAIC0zODQ2LDgwICszNzIwLDE0IEBACiAgICAgICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBtYXAgaW50ZXJuYWwgdGV4
dHVyZSBmb3IgcmVhZGluZywgcmVzdWx0OiAweCVYLiIsIGhyKTsKICAgICB9CiAKLSAgICB1aW50
OF90ICpzb3VyY2U7Ci0gICAgaW50IGlucHV0UGl0Y2g7Ci0gICAgaWYgKHBhcmFtcy5wYWNrLnJl
dmVyc2VSb3dPcmRlcikKLSAgICB7Ci0gICAgICAgIHNvdXJjZSA9IHN0YXRpY19jYXN0PHVpbnQ4
X3QqPihtYXBwaW5nLnBEYXRhKSArIG1hcHBpbmcuUm93UGl0Y2ggKiAocGFyYW1zLmFyZWEuaGVp
Z2h0IC0gMSk7Ci0gICAgICAgIGlucHV0UGl0Y2ggPSAtc3RhdGljX2Nhc3Q8aW50PihtYXBwaW5n
LlJvd1BpdGNoKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgc291cmNlID0gc3Rh
dGljX2Nhc3Q8dWludDhfdCo+KG1hcHBpbmcucERhdGEpOwotICAgICAgICBpbnB1dFBpdGNoID0g
c3RhdGljX2Nhc3Q8aW50PihtYXBwaW5nLlJvd1BpdGNoKTsKLSAgICB9CisgICAgdWludDhfdCAq
c291cmNlID0gc3RhdGljX2Nhc3Q8dWludDhfdCAqPihtYXBwaW5nLnBEYXRhKTsKKyAgICBpbnQg
aW5wdXRQaXRjaCAgPSBzdGF0aWNfY2FzdDxpbnQ+KG1hcHBpbmcuUm93UGl0Y2gpOwogCi0gICAg
Y29uc3QgYXV0byAmYW5nbGVGb3JtYXRJbmZvID0gZDNkMTE6OkdldEFOR0xFRm9ybWF0U2V0KHRl
eHR1cmVIZWxwZXIuZ2V0QU5HTEVGb3JtYXQoKSk7Ci0gICAgY29uc3QgZ2w6OkludGVybmFsRm9y
bWF0ICZzb3VyY2VGb3JtYXRJbmZvID0KLSAgICAgICAgZ2w6OkdldEludGVybmFsRm9ybWF0SW5m
byhhbmdsZUZvcm1hdEluZm8uZ2xJbnRlcm5hbEZvcm1hdCk7Ci0gICAgaWYgKHNvdXJjZUZvcm1h
dEluZm8uZm9ybWF0ID09IHBhcmFtcy5mb3JtYXQgJiYgc291cmNlRm9ybWF0SW5mby50eXBlID09
IHBhcmFtcy50eXBlKQotICAgIHsKLSAgICAgICAgdWludDhfdCAqZGVzdCA9IHBpeGVsc091dCAr
IHBhcmFtcy5vZmZzZXQ7Ci0gICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgcGFyYW1zLmFyZWEu
aGVpZ2h0OyB5KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1lbWNweShkZXN0ICsgeSAqIHBh
cmFtcy5vdXRwdXRQaXRjaCwgc291cmNlICsgeSAqIGlucHV0UGl0Y2gsIHBhcmFtcy5hcmVhLndp
ZHRoICogc291cmNlRm9ybWF0SW5mby5waXhlbEJ5dGVzKTsKLSAgICAgICAgfQotICAgIH0KLSAg
ICBlbHNlCi0gICAgewotICAgICAgICBjb25zdCBkM2QxMTo6RFhHSUZvcm1hdCAmZHhnaUZvcm1h
dEluZm8gPQotICAgICAgICAgICAgZDNkMTE6OkdldERYR0lGb3JtYXRJbmZvKHRleHR1cmVIZWxw
ZXIuZ2V0Rm9ybWF0KCkpOwotICAgICAgICBDb2xvckNvcHlGdW5jdGlvbiBmYXN0Q29weUZ1bmMg
PQotICAgICAgICAgICAgZHhnaUZvcm1hdEluZm8uZ2V0RmFzdENvcHlGdW5jdGlvbihwYXJhbXMu
Zm9ybWF0LCBwYXJhbXMudHlwZSk7Ci0gICAgICAgIEdMZW51bSBzaXplZERlc3RJbnRlcm5hbEZv
cm1hdCA9IGdsOjpHZXRTaXplZEludGVybmFsRm9ybWF0KHBhcmFtcy5mb3JtYXQsIHBhcmFtcy50
eXBlKTsKLSAgICAgICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZkZXN0Rm9ybWF0SW5mbyA9
IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oc2l6ZWREZXN0SW50ZXJuYWxGb3JtYXQpOworICAg
IGNvbnN0IGF1dG8gJmZvcm1hdEluZm8gPSB0ZXh0dXJlSGVscGVyLmdldEZvcm1hdFNldCgpOwor
ICAgIEFTU0VSVChmb3JtYXRJbmZvLmZvcm1hdC5nbEludGVybmFsRm9ybWF0ICE9IEdMX05PTkUp
OwogCi0gICAgICAgIGlmIChmYXN0Q29weUZ1bmMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8v
IEZhc3QgY29weSBpcyBwb3NzaWJsZSB0aHJvdWdoIHNvbWUgc3BlY2lhbCBmdW5jdGlvbgotICAg
ICAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBwYXJhbXMuYXJlYS5oZWlnaHQ7IHkrKykKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHBhcmFtcy5h
cmVhLndpZHRoOyB4KyspCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB1
aW50OF90ICpkZXN0ID0gcGl4ZWxzT3V0ICsgcGFyYW1zLm9mZnNldCArIHkgKiBwYXJhbXMub3V0
cHV0UGl0Y2ggKyB4ICogZGVzdEZvcm1hdEluZm8ucGl4ZWxCeXRlczsKLSAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdWludDhfdCAqc3JjID0gc291cmNlICsgeSAqIGlucHV0UGl0Y2ggKyB4ICog
c291cmNlRm9ybWF0SW5mby5waXhlbEJ5dGVzOworICAgIFBhY2tQaXhlbHMocGFyYW1zLCBmb3Jt
YXRJbmZvLmZvcm1hdCwgaW5wdXRQaXRjaCwgc291cmNlLCBwaXhlbHNPdXQpOwogCi0gICAgICAg
ICAgICAgICAgICAgIGZhc3RDb3B5RnVuYyhzcmMsIGRlc3QpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIENvbG9yUmVhZEZ1bmN0aW9uIGNvbG9yUmVhZEZ1bmN0aW9uICAgPSBhbmdsZUZvcm1h
dEluZm8uY29sb3JSZWFkRnVuY3Rpb247Ci0gICAgICAgICAgICBDb2xvcldyaXRlRnVuY3Rpb24g
Y29sb3JXcml0ZUZ1bmN0aW9uID0gR2V0Q29sb3JXcml0ZUZ1bmN0aW9uKHBhcmFtcy5mb3JtYXQs
IHBhcmFtcy50eXBlKTsKLQotICAgICAgICAgICAgdWludDhfdCB0ZW1wWzE2XTsgLy8gTWF4aW11
bSBzaXplIG9mIGFueSBDb2xvcjxUPiB0eXBlIHVzZWQuCi0gICAgICAgICAgICBzdGF0aWNfYXNz
ZXJ0KHNpemVvZih0ZW1wKSA+PSBzaXplb2YoZ2w6OkNvbG9yRikgICYmCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVvZih0ZW1wKSA+PSBzaXplb2YoZ2w6OkNvbG9yVUkpICYmCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0ZW1wKSA+PSBzaXplb2YoZ2w6OkNvbG9ySSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICJVbmV4cGVjdGVkIHNpemUgb2YgZ2w6OkNvbG9y
IHN0cnVjdC4iKTsKLQotICAgICAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBwYXJhbXMuYXJl
YS5oZWlnaHQ7IHkrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmb3IgKGludCB4
ID0gMDsgeCA8IHBhcmFtcy5hcmVhLndpZHRoOyB4KyspCi0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICB1aW50OF90ICpkZXN0ID0gcGl4ZWxzT3V0ICsgcGFyYW1zLm9mZnNl
dCArIHkgKiBwYXJhbXMub3V0cHV0UGl0Y2ggKyB4ICogZGVzdEZvcm1hdEluZm8ucGl4ZWxCeXRl
czsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqc3JjID0gc291cmNlICsgeSAq
IGlucHV0UGl0Y2ggKyB4ICogc291cmNlRm9ybWF0SW5mby5waXhlbEJ5dGVzOwotCi0gICAgICAg
ICAgICAgICAgICAgIC8vIHJlYWRGdW5jIGFuZCB3cml0ZUZ1bmMgd2lsbCBiZSB1c2luZyB0aGUg
c2FtZSB0eXBlIG9mIGNvbG9yLCBDb3B5VGV4SW1hZ2UKLSAgICAgICAgICAgICAgICAgICAgLy8g
d2lsbCBub3QgYWxsb3cgdGhlIGNvcHkgb3RoZXJ3aXNlLgotICAgICAgICAgICAgICAgICAgICBj
b2xvclJlYWRGdW5jdGlvbihzcmMsIHRlbXApOwotICAgICAgICAgICAgICAgICAgICBjb2xvcldy
aXRlRnVuY3Rpb24odGVtcCwgZGVzdCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgfQotCiAgICAgbURldmljZUNvbnRleHQtPlVubWFwKHJlYWRSZXNv
dXJjZSwgMCk7CiAKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKQEAgLTM5NDEs
NDkgKzM3NDksNTcgQEAKICAgICBBU1NFUlQoY29sb3JCbGl0ICE9IChkZXB0aEJsaXQgfHwgc3Rl
bmNpbEJsaXQpKTsKIAogICAgIFJlbmRlclRhcmdldDExICpkcmF3UmVuZGVyVGFyZ2V0MTEgPSBH
ZXRBczxSZW5kZXJUYXJnZXQxMT4oZHJhd1JlbmRlclRhcmdldCk7Ci0gICAgaWYgKCFkcmF3UmVu
ZGVyVGFyZ2V0KQorICAgIGlmICghZHJhd1JlbmRlclRhcmdldDExKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIHJldHJpZXZlIHRo
ZSBpbnRlcm5hbCBkcmF3IHJlbmRlciB0YXJnZXQgZnJvbSB0aGUgZHJhdyBmcmFtZWJ1ZmZlci4i
KTsKICAgICB9CiAKLSAgICBJRDNEMTFSZXNvdXJjZSAqZHJhd1RleHR1cmUgPSBkcmF3UmVuZGVy
VGFyZ2V0MTEtPmdldFRleHR1cmUoKTsKKyAgICBUZXh0dXJlSGVscGVyMTEgZHJhd1RleHR1cmUg
PSBUZXh0dXJlSGVscGVyMTE6Ok1ha2VBbmRSZWZlcmVuY2UoCisgICAgICAgIGRyYXdSZW5kZXJU
YXJnZXQxMS0+Z2V0VGV4dHVyZSgpLCBkcmF3UmVuZGVyVGFyZ2V0MTEtPmdldEZvcm1hdFNldCgp
KTsKICAgICB1bnNpZ25lZCBpbnQgZHJhd1N1YnJlc291cmNlID0gZHJhd1JlbmRlclRhcmdldDEx
LT5nZXRTdWJyZXNvdXJjZUluZGV4KCk7CiAgICAgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqZHJh
d1JUViA9IGRyYXdSZW5kZXJUYXJnZXQxMS0+Z2V0UmVuZGVyVGFyZ2V0VmlldygpOwogICAgIElE
M0QxMURlcHRoU3RlbmNpbFZpZXcgKmRyYXdEU1YgPSBkcmF3UmVuZGVyVGFyZ2V0MTEtPmdldERl
cHRoU3RlbmNpbFZpZXcoKTsKIAogICAgIFJlbmRlclRhcmdldDExICpyZWFkUmVuZGVyVGFyZ2V0
MTEgPSBHZXRBczxSZW5kZXJUYXJnZXQxMT4ocmVhZFJlbmRlclRhcmdldCk7Ci0gICAgaWYgKCFy
ZWFkUmVuZGVyVGFyZ2V0KQorICAgIGlmICghcmVhZFJlbmRlclRhcmdldDExKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIHJldHJp
ZXZlIHRoZSBpbnRlcm5hbCByZWFkIHJlbmRlciB0YXJnZXQgZnJvbSB0aGUgcmVhZCBmcmFtZWJ1
ZmZlci4iKTsKICAgICB9CiAKLSAgICBJRDNEMTFSZXNvdXJjZSAqcmVhZFRleHR1cmUgPSBOVUxM
OwotICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqcmVhZFNSViA9IE5VTEw7CisgICAgVGV4
dHVyZUhlbHBlcjExIHJlYWRUZXh0dXJlOwogICAgIHVuc2lnbmVkIGludCByZWFkU3VicmVzb3Vy
Y2UgPSAwOwotICAgIGlmIChyZWFkUmVuZGVyVGFyZ2V0LT5nZXRTYW1wbGVzKCkgPiAwKQorICAg
IElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqcmVhZFNSViA9IG51bGxwdHI7CisKKyAgICBpZiAo
cmVhZFJlbmRlclRhcmdldC0+Z2V0U2FtcGxlcygpID4gMSkKICAgICB7Ci0gICAgICAgIElEM0Qx
MVJlc291cmNlICp1bnJlc29sdmVkUmVzb3VyY2UgPSByZWFkUmVuZGVyVGFyZ2V0MTEtPmdldFRl
eHR1cmUoKTsKLSAgICAgICAgSUQzRDExVGV4dHVyZTJEICp1bnJlc29sdmVkVGV4dHVyZSA9IGQz
ZDExOjpEeW5hbWljQ2FzdENvbU9iamVjdDxJRDNEMTFUZXh0dXJlMkQ+KHVucmVzb2x2ZWRSZXNv
dXJjZSk7CisgICAgICAgIGF1dG8gcmVhZFJUMTEgPSBHZXRBczxSZW5kZXJUYXJnZXQxMT4ocmVh
ZFJlbmRlclRhcmdldCk7CisgICAgICAgIEFOR0xFX1RSWV9SRVNVTFQocmVzb2x2ZU11bHRpc2Ft
cGxlZFRleHR1cmUocmVhZFJUMTEsIGRlcHRoQmxpdCwgc3RlbmNpbEJsaXQpLCByZWFkVGV4dHVy
ZSk7CiAKLSAgICAgICAgaWYgKHVucmVzb2x2ZWRUZXh0dXJlKQorICAgICAgICBpZiAoIXN0ZW5j
aWxCbGl0KQogICAgICAgICB7Ci0gICAgICAgICAgICByZWFkVGV4dHVyZSA9IHJlc29sdmVNdWx0
aXNhbXBsZWRUZXh0dXJlKHVucmVzb2x2ZWRUZXh0dXJlLCByZWFkUmVuZGVyVGFyZ2V0MTEtPmdl
dFN1YnJlc291cmNlSW5kZXgoKSk7Ci0gICAgICAgICAgICByZWFkU3VicmVzb3VyY2UgPSAwOwor
ICAgICAgICAgICAgY29uc3QgYXV0byAmcmVhZEZvcm1hdFNldCA9IHJlYWRUZXh0dXJlLmdldEZv
cm1hdFNldCgpOwogCi0gICAgICAgICAgICBTYWZlUmVsZWFzZSh1bnJlc29sdmVkVGV4dHVyZSk7
CisgICAgICAgICAgICBEM0QxMV9TSEFERVJfUkVTT1VSQ0VfVklFV19ERVNDIHZpZXdEZXNjOwor
ICAgICAgICAgICAgdmlld0Rlc2MuRm9ybWF0ICAgICAgICAgICAgICAgICAgICA9IHJlYWRGb3Jt
YXRTZXQuc3J2Rm9ybWF0OworICAgICAgICAgICAgdmlld0Rlc2MuVmlld0RpbWVuc2lvbiAgICAg
ICAgICAgICA9IEQzRDExX1NSVl9ESU1FTlNJT05fVEVYVFVSRTJEOworICAgICAgICAgICAgdmll
d0Rlc2MuVGV4dHVyZTJELk1pcExldmVscyAgICAgICA9IDE7CisgICAgICAgICAgICB2aWV3RGVz
Yy5UZXh0dXJlMkQuTW9zdERldGFpbGVkTWlwID0gMDsKIAotICAgICAgICAgICAgSFJFU1VMVCBo
cmVzdWx0ID0gbURldmljZS0+Q3JlYXRlU2hhZGVyUmVzb3VyY2VWaWV3KHJlYWRUZXh0dXJlLCBO
VUxMLCAmcmVhZFNSVik7CisgICAgICAgICAgICBIUkVTVUxUIGhyZXN1bHQgPQorICAgICAgICAg
ICAgICAgIG1EZXZpY2UtPkNyZWF0ZVNoYWRlclJlc291cmNlVmlldyhyZWFkVGV4dHVyZS5nZXRS
ZXNvdXJjZSgpLCAmdmlld0Rlc2MsICZyZWFkU1JWKTsKICAgICAgICAgICAgIGlmIChGQUlMRUQo
aHJlc3VsdCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgU2FmZVJlbGVhc2UocmVh
ZFRleHR1cmUpOwotICAgICAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01F
TU9SWSwgIkZhaWxlZCB0byBjcmVhdGUgc2hhZGVyIHJlc291cmNlIHZpZXcgdG8gcmVzb2x2ZSBt
dWx0aXNhbXBsZWQgZnJhbWVidWZmZXIuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpF
cnJvcigKKyAgICAgICAgICAgICAgICAgICAgR0xfT1VUX09GX01FTU9SWSwKKyAgICAgICAgICAg
ICAgICAgICAgIlJlbmRlcmVyMTE6OmJsaXRSZW5kZXJidWZmZXJSZWN0OiBGYWlsZWQgdG8gY3Jl
YXRlIHRlbXBvcmFyeSBTUlYuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAg
ICAgZWxzZQogICAgIHsKLSAgICAgICAgcmVhZFRleHR1cmUgPSByZWFkUmVuZGVyVGFyZ2V0MTEt
PmdldFRleHR1cmUoKTsKLSAgICAgICAgcmVhZFRleHR1cmUtPkFkZFJlZigpOworICAgICAgICBB
U1NFUlQocmVhZFJlbmRlclRhcmdldDExKTsKKyAgICAgICAgcmVhZFRleHR1cmUgPSBUZXh0dXJl
SGVscGVyMTE6Ok1ha2VBbmRSZWZlcmVuY2UocmVhZFJlbmRlclRhcmdldDExLT5nZXRUZXh0dXJl
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlYWRSZW5kZXJUYXJnZXQxMS0+Z2V0Rm9ybWF0U2V0KCkpOwogICAgICAgICByZWFkU3Vi
cmVzb3VyY2UgPSByZWFkUmVuZGVyVGFyZ2V0MTEtPmdldFN1YnJlc291cmNlSW5kZXgoKTsKICAg
ICAgICAgcmVhZFNSViA9IHJlYWRSZW5kZXJUYXJnZXQxMS0+Z2V0QmxpdFNoYWRlclJlc291cmNl
VmlldygpOwogICAgICAgICBpZiAocmVhZFNSViA9PSBudWxscHRyKQpAQCAtMzk5MSwxOCArMzgw
NywxNSBAQAogICAgICAgICAgICAgQVNTRVJUKGRlcHRoQmxpdCB8fCBzdGVuY2lsQmxpdCk7CiAg
ICAgICAgICAgICByZWFkU1JWID0gcmVhZFJlbmRlclRhcmdldDExLT5nZXRTaGFkZXJSZXNvdXJj
ZVZpZXcoKTsKICAgICAgICAgfQorICAgICAgICBBU1NFUlQocmVhZFNSVik7CiAgICAgICAgIHJl
YWRTUlYtPkFkZFJlZigpOwogICAgIH0KIAotICAgIGlmICghcmVhZFRleHR1cmUgfHwgIXJlYWRT
UlYpCi0gICAgewotICAgICAgICBTYWZlUmVsZWFzZShyZWFkVGV4dHVyZSk7Ci0gICAgICAgIFNh
ZmVSZWxlYXNlKHJlYWRTUlYpOwotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9N
RU1PUlksICJGYWlsZWQgdG8gcmV0cmlldmUgdGhlIGludGVybmFsIHJlYWQgcmVuZGVyIHRhcmdl
dCB2aWV3IGZyb20gdGhlIHJlYWQgcmVuZGVyIHRhcmdldC4iKTsKLSAgICB9CisgICAgLy8gU3Rl
bmNpbCBibGl0cyBkb24ndCB1c2Ugc2hhZGVycy4KKyAgICBBU1NFUlQocmVhZFNSViB8fCBzdGVu
Y2lsQmxpdCk7CiAKLSAgICBnbDo6RXh0ZW50cyByZWFkU2l6ZShyZWFkUmVuZGVyVGFyZ2V0LT5n
ZXRXaWR0aCgpLCByZWFkUmVuZGVyVGFyZ2V0LT5nZXRIZWlnaHQoKSwgMSk7Ci0gICAgZ2w6OkV4
dGVudHMgZHJhd1NpemUoZHJhd1JlbmRlclRhcmdldC0+Z2V0V2lkdGgoKSwgZHJhd1JlbmRlclRh
cmdldC0+Z2V0SGVpZ2h0KCksIDEpOworICAgIGNvbnN0IGdsOjpFeHRlbnRzIHJlYWRTaXplKHJl
YWRSZW5kZXJUYXJnZXQtPmdldFdpZHRoKCksIHJlYWRSZW5kZXJUYXJnZXQtPmdldEhlaWdodCgp
LCAxKTsKKyAgICBjb25zdCBnbDo6RXh0ZW50cyBkcmF3U2l6ZShkcmF3UmVuZGVyVGFyZ2V0LT5n
ZXRXaWR0aCgpLCBkcmF3UmVuZGVyVGFyZ2V0LT5nZXRIZWlnaHQoKSwgMSk7CiAKICAgICAvLyBG
cm9tIHRoZSBzcGVjOgogICAgIC8vICJUaGUgYWN0dWFsIHJlZ2lvbiB0YWtlbiBmcm9tIHRoZSBy
ZWFkIGZyYW1lYnVmZmVyIGlzIGxpbWl0ZWQgdG8gdGhlIGludGVyc2VjdGlvbiBvZiB0aGUKQEAg
LTQwNjQsMjYgKzM4NzcsMjUgQEAKICAgICAgICAgZHJhd1JlY3QuaGVpZ2h0ICs9IGRyYXdPZmZz
ZXQ7CiAgICAgfQogCi0gICAgYm9vbCBzY2lzc29yTmVlZGVkID0gc2Npc3NvciAmJiBnbDo6Q2xp
cFJlY3RhbmdsZShkcmF3UmVjdCwgKnNjaXNzb3IsIE5VTEwpOworICAgIGJvb2wgc2Npc3Nvck5l
ZWRlZCA9IHNjaXNzb3IgJiYgZ2w6OkNsaXBSZWN0YW5nbGUoZHJhd1JlY3QsICpzY2lzc29yLCBu
dWxscHRyKTsKIAogICAgIGNvbnN0IGF1dG8gJmRlc3RGb3JtYXRJbmZvID0gZ2w6OkdldEludGVy
bmFsRm9ybWF0SW5mbyhkcmF3UmVuZGVyVGFyZ2V0LT5nZXRJbnRlcm5hbEZvcm1hdCgpKTsKICAg
ICBjb25zdCBhdXRvICZzcmNGb3JtYXRJbmZvICA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8o
cmVhZFJlbmRlclRhcmdldC0+Z2V0SW50ZXJuYWxGb3JtYXQoKSk7Ci0gICAgY29uc3QgYXV0byAm
Zm9ybWF0U2V0ICAgICAgICAgICAgPSBkM2QxMTo6R2V0QU5HTEVGb3JtYXRTZXQoZHJhd1JlbmRl
clRhcmdldDExLT5nZXRBTkdMRUZvcm1hdCgpKTsKLSAgICBjb25zdCBEWEdJX0ZPUk1BVCBkcmF3
RFhHSUZvcm1hdCA9IGNvbG9yQmxpdCA/IGZvcm1hdFNldC5ydHZGb3JtYXQgOiBmb3JtYXRTZXQu
ZHN2Rm9ybWF0OwotICAgIGNvbnN0IGF1dG8gJmR4Z2lGb3JtYXRJbmZvICAgICAgID0gZDNkMTE6
OkdldERYR0lGb3JtYXRJbmZvKGRyYXdEWEdJRm9ybWF0KTsKKyAgICBjb25zdCBhdXRvICZmb3Jt
YXRTZXQgICAgICA9IGRyYXdSZW5kZXJUYXJnZXQxMS0+Z2V0Rm9ybWF0U2V0KCk7CisgICAgY29u
c3QgYXV0byAmbmF0aXZlRm9ybWF0ICAgPSBmb3JtYXRTZXQuZm9ybWF0OwogCiAgICAgLy8gU29t
ZSBibGl0cyByZXF1aXJlIG1hc2tpbmcgb2ZmIGVtdWxhdGVkIHRleHR1cmUgY2hhbm5lbHMuIGVn
OiBmcm9tIFJHQkE4IHRvIFJHQjgsIHdlCiAgICAgLy8gZW11bGF0ZSBSR0I4IHdpdGggUkdCQTgs
IHNvIHdlIG5lZWQgdG8gbWFzayBvZmYgdGhlIGFscGhhIGNoYW5uZWwgd2hlbiB3ZSBjb3B5Lgog
CiAgICAgZ2w6OkNvbG9yPGJvb2w+IGNvbG9yTWFzazsKLSAgICBjb2xvck1hc2sucmVkID0gKHNy
Y0Zvcm1hdEluZm8ucmVkQml0cyA+IDApICYmIChkZXN0Rm9ybWF0SW5mby5yZWRCaXRzID09IDAp
ICYmCi0gICAgICAgICAgICAgICAgICAgIChkeGdpRm9ybWF0SW5mby5yZWRCaXRzID4gMCk7Cisg
ICAgY29sb3JNYXNrLnJlZCA9CisgICAgICAgIChzcmNGb3JtYXRJbmZvLnJlZEJpdHMgPiAwKSAm
JiAoZGVzdEZvcm1hdEluZm8ucmVkQml0cyA9PSAwKSAmJiAobmF0aXZlRm9ybWF0LnJlZEJpdHMg
PiAwKTsKICAgICBjb2xvck1hc2suZ3JlZW4gPSAoc3JjRm9ybWF0SW5mby5ncmVlbkJpdHMgPiAw
KSAmJiAoZGVzdEZvcm1hdEluZm8uZ3JlZW5CaXRzID09IDApICYmCi0gICAgICAgICAgICAgICAg
ICAgICAgKGR4Z2lGb3JtYXRJbmZvLmdyZWVuQml0cyA+IDApOworICAgICAgICAgICAgICAgICAg
ICAgIChuYXRpdmVGb3JtYXQuZ3JlZW5CaXRzID4gMCk7CiAgICAgY29sb3JNYXNrLmJsdWUgPSAo
c3JjRm9ybWF0SW5mby5ibHVlQml0cyA+IDApICYmIChkZXN0Rm9ybWF0SW5mby5ibHVlQml0cyA9
PSAwKSAmJgotICAgICAgICAgICAgICAgICAgICAgKGR4Z2lGb3JtYXRJbmZvLmJsdWVCaXRzID4g
MCk7CisgICAgICAgICAgICAgICAgICAgICAobmF0aXZlRm9ybWF0LmJsdWVCaXRzID4gMCk7CiAg
ICAgY29sb3JNYXNrLmFscGhhID0gKHNyY0Zvcm1hdEluZm8uYWxwaGFCaXRzID4gMCkgJiYgKGRl
c3RGb3JtYXRJbmZvLmFscGhhQml0cyA9PSAwKSAmJgotICAgICAgICAgICAgICAgICAgICAgIChk
eGdpRm9ybWF0SW5mby5hbHBoYUJpdHMgPiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAobmF0
aXZlRm9ybWF0LmFscGhhQml0cyA+IDApOwogCiAgICAgLy8gV2Ugb25seSBjdXJyZW50bHkgc3Vw
cG9ydCBtYXNraW5nIG9mZiB0aGUgYWxwaGEgY2hhbm5lbC4KICAgICBib29sIGNvbG9yTWFza2lu
Z05lZWRlZCA9IGNvbG9yTWFzay5hbHBoYTsKQEAgLTQxMDQsMTEgKzM5MTYsMTEgQEAKICAgICAg
ICAgICAgICAgICAgICAgICAgZHJhd1JlY3QueCA8IDAgfHwgZHJhd1JlY3QueCArIGRyYXdSZWN0
LndpZHRoID4gZHJhd1NpemUud2lkdGggfHwKICAgICAgICAgICAgICAgICAgICAgICAgZHJhd1Jl
Y3QueSA8IDAgfHwgZHJhd1JlY3QueSArIGRyYXdSZWN0LmhlaWdodCA+IGRyYXdTaXplLmhlaWdo
dDsKIAotICAgIGJvb2wgcGFydGlhbERTQmxpdCA9IChkeGdpRm9ybWF0SW5mby5kZXB0aEJpdHMg
PiAwICYmIGRlcHRoQmxpdCkgIT0gKGR4Z2lGb3JtYXRJbmZvLnN0ZW5jaWxCaXRzID4gMCAmJiBz
dGVuY2lsQmxpdCk7CisgICAgYm9vbCBwYXJ0aWFsRFNCbGl0ID0KKyAgICAgICAgKG5hdGl2ZUZv
cm1hdC5kZXB0aEJpdHMgPiAwICYmIGRlcHRoQmxpdCkgIT0gKG5hdGl2ZUZvcm1hdC5zdGVuY2ls
Qml0cyA+IDAgJiYgc3RlbmNpbEJsaXQpOwogCi0gICAgZ2w6OkVycm9yIHJlc3VsdChHTF9OT19F
UlJPUik7Ci0KLSAgICBpZiAocmVhZFJlbmRlclRhcmdldDExLT5nZXRBTkdMRUZvcm1hdCgpID09
IGRyYXdSZW5kZXJUYXJnZXQxMS0+Z2V0QU5HTEVGb3JtYXQoKSAmJgorICAgIGlmIChyZWFkUmVu
ZGVyVGFyZ2V0MTEtPmdldEZvcm1hdFNldCgpLmZvcm1hdC5pZCA9PQorICAgICAgICAgICAgZHJh
d1JlbmRlclRhcmdldDExLT5nZXRGb3JtYXRTZXQoKS5mb3JtYXQuaWQgJiYKICAgICAgICAgIXN0
cmV0Y2hSZXF1aXJlZCAmJiAhb3V0T2ZCb3VuZHMgJiYgIWZsaXBSZXF1aXJlZCAmJiAhcGFydGlh
bERTQmxpdCAmJgogICAgICAgICAhY29sb3JNYXNraW5nTmVlZGVkICYmICghKGRlcHRoQmxpdCB8
fCBzdGVuY2lsQmxpdCkgfHwgd2hvbGVCdWZmZXJDb3B5KSkKICAgICB7CkBAIC00MTUwLDExICsz
OTYyLDExIEBACiAKICAgICAgICAgLy8gRDNEMTEgbmVlZHMgZGVwdGgtc3RlbmNpbCBDb3B5U3Vi
cmVzb3VyY2VSZWdpb25zIHRvIGhhdmUgYSBOVUxMIHBTcmNCb3gKICAgICAgICAgLy8gV2UgYWxz
byByZXF1aXJlIGNvbXBsZXRlIGZyYW1lYnVmZmVyIGNvcGllcyBmb3IgZGVwdGgtc3RlbmNpbCBi
bGl0LgotICAgICAgICBEM0QxMV9CT1ggKnBTcmNCb3ggPSB3aG9sZUJ1ZmZlckNvcHkgPyBOVUxM
IDogJnJlYWRCb3g7CisgICAgICAgIEQzRDExX0JPWCAqcFNyY0JveCA9IHdob2xlQnVmZmVyQ29w
eSA/IG51bGxwdHIgOiAmcmVhZEJveDsKIAotICAgICAgICBtRGV2aWNlQ29udGV4dC0+Q29weVN1
YnJlc291cmNlUmVnaW9uKGRyYXdUZXh0dXJlLCBkcmF3U3VicmVzb3VyY2UsIGRzdFgsIGRzdFks
IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZFRl
eHR1cmUsIHJlYWRTdWJyZXNvdXJjZSwgcFNyY0JveCk7Ci0gICAgICAgIHJlc3VsdCA9IGdsOjpF
cnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5Db3B5U3VicmVzb3Vy
Y2VSZWdpb24oZHJhd1RleHR1cmUuZ2V0UmVzb3VyY2UoKSwgZHJhd1N1YnJlc291cmNlLCBkc3RY
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdFksIDAs
IHJlYWRUZXh0dXJlLmdldFJlc291cmNlKCksIHJlYWRTdWJyZXNvdXJjZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwU3JjQm94KTsKICAgICB9CiAgICAg
ZWxzZQogICAgIHsKQEAgLTQxNjMsMzQgKzM5NzUsMzYgQEAKIAogICAgICAgICBpZiAoZGVwdGhC
bGl0ICYmIHN0ZW5jaWxCbGl0KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQgPSBtQmxp
dC0+Y29weURlcHRoU3RlbmNpbChyZWFkVGV4dHVyZSwgcmVhZFN1YnJlc291cmNlLCByZWFkQXJl
YSwgcmVhZFNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkcmF3VGV4dHVyZSwgZHJhd1N1YnJlc291cmNlLCBkcmF3QXJlYSwgZHJhd1NpemUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lzc29yKTsKKyAgICAg
ICAgICAgIEFOR0xFX1RSWShtQmxpdC0+Y29weURlcHRoU3RlbmNpbChyZWFkVGV4dHVyZSwgcmVh
ZFN1YnJlc291cmNlLCByZWFkQXJlYSwgcmVhZFNpemUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZHJhd1RleHR1cmUsIGRyYXdTdWJyZXNvdXJjZSwgZHJh
d0FyZWEsIGRyYXdTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNjaXNzb3IpKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChkZXB0aEJsaXQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IG1CbGl0LT5jb3B5RGVwdGgocmVhZFNS
ViwgcmVhZEFyZWEsIHJlYWRTaXplLCBkcmF3RFNWLCBkcmF3QXJlYSwgZHJhd1NpemUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaXNzb3IpOworICAgICAgICAgICAg
QVNTRVJUKHJlYWRTUlYpOworICAgICAgICAgICAgQU5HTEVfVFJZKG1CbGl0LT5jb3B5RGVwdGgo
cmVhZFNSViwgcmVhZEFyZWEsIHJlYWRTaXplLCBkcmF3RFNWLCBkcmF3QXJlYSwgZHJhd1NpemUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lzc29yKSk7CiAgICAg
ICAgIH0KICAgICAgICAgZWxzZSBpZiAoc3RlbmNpbEJsaXQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJlc3VsdCA9IG1CbGl0LT5jb3B5U3RlbmNpbChyZWFkVGV4dHVyZSwgcmVhZFN1YnJlc291
cmNlLCByZWFkQXJlYSwgcmVhZFNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZHJhd1RleHR1cmUsIGRyYXdTdWJyZXNvdXJjZSwgZHJhd0FyZWEsIGRyYXdTaXpl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaXNzb3IpOworICAg
ICAgICAgICAgQU5HTEVfVFJZKG1CbGl0LT5jb3B5U3RlbmNpbChyZWFkVGV4dHVyZSwgcmVhZFN1
YnJlc291cmNlLCByZWFkQXJlYSwgcmVhZFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRyYXdUZXh0dXJlLCBkcmF3U3VicmVzb3VyY2UsIGRyYXdBcmVhLCBk
cmF3U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Npc3Nv
cikpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewogICAgICAgICAgICAgLy8g
V2UgZG9uJ3QgY3VycmVudGx5IHN1cHBvcnQgbWFza2luZyBvZmYgYW55IG90aGVyIGNoYW5uZWwg
dGhhbiBhbHBoYQogICAgICAgICAgICAgYm9vbCBtYXNrT2ZmQWxwaGEgPSBjb2xvck1hc2tpbmdO
ZWVkZWQgJiYgY29sb3JNYXNrLmFscGhhOwotICAgICAgICAgICAgcmVzdWx0ID0gbUJsaXQtPmNv
cHlUZXh0dXJlKHJlYWRTUlYsIHJlYWRBcmVhLCByZWFkU2l6ZSwgZHJhd1JUViwgZHJhd0FyZWEs
IGRyYXdTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaXNz
b3IsIGRlc3RGb3JtYXRJbmZvLmZvcm1hdCwgZmlsdGVyLCBtYXNrT2ZmQWxwaGEpOworICAgICAg
ICAgICAgQVNTRVJUKHJlYWRTUlYpOworICAgICAgICAgICAgQU5HTEVfVFJZKG1CbGl0LT5jb3B5
VGV4dHVyZShyZWFkU1JWLCByZWFkQXJlYSwgcmVhZFNpemUsIGRyYXdSVFYsIGRyYXdBcmVhLCBk
cmF3U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Npc3Nv
ciwgZGVzdEZvcm1hdEluZm8uZm9ybWF0LCBmaWx0ZXIsIG1hc2tPZmZBbHBoYSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIGZhbHNlKSk7CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBTYWZlUmVsZWFzZShyZWFkVGV4dHVyZSk7CiAgICAgU2FmZVJlbGVh
c2UocmVhZFNSVik7CiAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBnbDo6Tm9FcnJv
cigpOwogfQogCiBib29sIFJlbmRlcmVyMTE6OmlzRVMzQ2FwYWJsZSgpIGNvbnN0CkBAIC00MjI4
LDUyICs0MDQyLDU3IEBACiAgICAgfQogfQogCi12b2lkIFJlbmRlcmVyMTE6Om9uQnVmZmVyRGVs
ZXRlKGNvbnN0IEJ1ZmZlcjExICpkZWxldGVkKQordm9pZCBSZW5kZXJlcjExOjpvbkJ1ZmZlckNy
ZWF0ZShjb25zdCBCdWZmZXIxMSAqY3JlYXRlZCkKIHsKLSAgICBtQWxpdmVCdWZmZXJzLmVyYXNl
KGRlbGV0ZWQpOworICAgIG1BbGl2ZUJ1ZmZlcnMuaW5zZXJ0KGNyZWF0ZWQpOwogfQogCi12b2lk
IFJlbmRlcmVyMTE6Om9uTWFrZUN1cnJlbnQoY29uc3QgZ2w6OkRhdGEgJmRhdGEpCit2b2lkIFJl
bmRlcmVyMTE6Om9uQnVmZmVyRGVsZXRlKGNvbnN0IEJ1ZmZlcjExICpkZWxldGVkKQogewotICAg
IG1TdGF0ZU1hbmFnZXIub25NYWtlQ3VycmVudChkYXRhKTsKKyAgICBtQWxpdmVCdWZmZXJzLmVy
YXNlKGRlbGV0ZWQpOwogfQogCi1JRDNEMTFUZXh0dXJlMkQgKlJlbmRlcmVyMTE6OnJlc29sdmVN
dWx0aXNhbXBsZWRUZXh0dXJlKElEM0QxMVRleHR1cmUyRCAqc291cmNlLCB1bnNpZ25lZCBpbnQg
c3VicmVzb3VyY2UpCitnbDo6RXJyb3JPclJlc3VsdDxUZXh0dXJlSGVscGVyMTE+CitSZW5kZXJl
cjExOjpyZXNvbHZlTXVsdGlzYW1wbGVkVGV4dHVyZShSZW5kZXJUYXJnZXQxMSAqcmVuZGVyVGFy
Z2V0LCBib29sIGRlcHRoLCBib29sIHN0ZW5jaWwpCiB7Ci0gICAgRDNEMTFfVEVYVFVSRTJEX0RF
U0MgdGV4dHVyZURlc2M7Ci0gICAgc291cmNlLT5HZXREZXNjKCZ0ZXh0dXJlRGVzYyk7CisgICAg
aWYgKGRlcHRoICYmICFzdGVuY2lsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1CbGl0LT5yZXNv
bHZlRGVwdGgocmVuZGVyVGFyZ2V0KTsKKyAgICB9CiAKLSAgICBpZiAodGV4dHVyZURlc2MuU2Ft
cGxlRGVzYy5Db3VudCA+IDEpCisgICAgaWYgKHN0ZW5jaWwpCiAgICAgewotICAgICAgICBEM0Qx
MV9URVhUVVJFMkRfREVTQyByZXNvbHZlRGVzYzsKLSAgICAgICAgcmVzb2x2ZURlc2MuV2lkdGgg
PSB0ZXh0dXJlRGVzYy5XaWR0aDsKLSAgICAgICAgcmVzb2x2ZURlc2MuSGVpZ2h0ID0gdGV4dHVy
ZURlc2MuSGVpZ2h0OwotICAgICAgICByZXNvbHZlRGVzYy5NaXBMZXZlbHMgPSAxOwotICAgICAg
ICByZXNvbHZlRGVzYy5BcnJheVNpemUgPSAxOwotICAgICAgICByZXNvbHZlRGVzYy5Gb3JtYXQg
PSB0ZXh0dXJlRGVzYy5Gb3JtYXQ7Ci0gICAgICAgIHJlc29sdmVEZXNjLlNhbXBsZURlc2MuQ291
bnQgPSAxOwotICAgICAgICByZXNvbHZlRGVzYy5TYW1wbGVEZXNjLlF1YWxpdHkgPSAwOwotICAg
ICAgICByZXNvbHZlRGVzYy5Vc2FnZSA9IHRleHR1cmVEZXNjLlVzYWdlOwotICAgICAgICByZXNv
bHZlRGVzYy5CaW5kRmxhZ3MgPSB0ZXh0dXJlRGVzYy5CaW5kRmxhZ3M7Ci0gICAgICAgIHJlc29s
dmVEZXNjLkNQVUFjY2Vzc0ZsYWdzID0gMDsKLSAgICAgICAgcmVzb2x2ZURlc2MuTWlzY0ZsYWdz
ID0gMDsKKyAgICAgICAgcmV0dXJuIG1CbGl0LT5yZXNvbHZlU3RlbmNpbChyZW5kZXJUYXJnZXQs
IGRlcHRoKTsKKyAgICB9CiAKLSAgICAgICAgSUQzRDExVGV4dHVyZTJEICpyZXNvbHZlVGV4dHVy
ZSA9IE5VTEw7Ci0gICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlVGV4dHVy
ZTJEKCZyZXNvbHZlRGVzYywgTlVMTCwgJnJlc29sdmVUZXh0dXJlKTsKLSAgICAgICAgaWYgKEZB
SUxFRChyZXN1bHQpKQotICAgICAgICB7Ci0gICAgICAgICAgICBFUlIoIkZhaWxlZCB0byBjcmVh
dGUgYSBtdWx0aXNhbXBsZSByZXNvbHZlIHRleHR1cmUsIEhSRVNVTFQ6IDB4JVguIiwgcmVzdWx0
KTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CisgICAgY29uc3QgYXV0byAm
Zm9ybWF0U2V0ID0gcmVuZGVyVGFyZ2V0LT5nZXRGb3JtYXRTZXQoKTsKIAotICAgICAgICBtRGV2
aWNlQ29udGV4dC0+UmVzb2x2ZVN1YnJlc291cmNlKHJlc29sdmVUZXh0dXJlLCAwLCBzb3VyY2Us
IHN1YnJlc291cmNlLCB0ZXh0dXJlRGVzYy5Gb3JtYXQpOwotICAgICAgICByZXR1cm4gcmVzb2x2
ZVRleHR1cmU7Ci0gICAgfQotICAgIGVsc2UKKyAgICBBU1NFUlQocmVuZGVyVGFyZ2V0LT5nZXRT
YW1wbGVzKCkgPiAxKTsKKworICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIHJlc29sdmVEZXNjOwor
ICAgIHJlc29sdmVEZXNjLldpZHRoICAgICAgICAgICAgICA9IHJlbmRlclRhcmdldC0+Z2V0V2lk
dGgoKTsKKyAgICByZXNvbHZlRGVzYy5IZWlnaHQgICAgICAgICAgICAgPSByZW5kZXJUYXJnZXQt
PmdldEhlaWdodCgpOworICAgIHJlc29sdmVEZXNjLk1pcExldmVscyAgICAgICAgICA9IDE7Cisg
ICAgcmVzb2x2ZURlc2MuQXJyYXlTaXplICAgICAgICAgID0gMTsKKyAgICByZXNvbHZlRGVzYy5G
b3JtYXQgICAgICAgICAgICAgPSBmb3JtYXRTZXQudGV4Rm9ybWF0OworICAgIHJlc29sdmVEZXNj
LlNhbXBsZURlc2MuQ291bnQgICA9IDE7CisgICAgcmVzb2x2ZURlc2MuU2FtcGxlRGVzYy5RdWFs
aXR5ID0gMDsKKyAgICByZXNvbHZlRGVzYy5Vc2FnZSAgICAgICAgICAgICAgPSBEM0QxMV9VU0FH
RV9ERUZBVUxUOworICAgIHJlc29sdmVEZXNjLkJpbmRGbGFncyAgICAgICAgICA9IEQzRDExX0JJ
TkRfU0hBREVSX1JFU09VUkNFOworICAgIHJlc29sdmVEZXNjLkNQVUFjY2Vzc0ZsYWdzICAgICA9
IDA7CisgICAgcmVzb2x2ZURlc2MuTWlzY0ZsYWdzICAgICAgICAgID0gMDsKKworICAgIElEM0Qx
MVRleHR1cmUyRCAqcmVzb2x2ZVRleHR1cmUgPSBudWxscHRyOworICAgIEhSRVNVTFQgcmVzdWx0
ID0gbURldmljZS0+Q3JlYXRlVGV4dHVyZTJEKCZyZXNvbHZlRGVzYywgbnVsbHB0ciwgJnJlc29s
dmVUZXh0dXJlKTsKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgewotICAgICAgICBzb3Vy
Y2UtPkFkZFJlZigpOwotICAgICAgICByZXR1cm4gc291cmNlOworICAgICAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxl
ZCB0byBjcmVhdGUgYSBtdWx0aXNhbXBsZSByZXNvbHZlIHRleHR1cmUsIEhSRVNVTFQ6IDB4JVgu
IiwgcmVzdWx0KTsKICAgICB9CisKKyAgICBtRGV2aWNlQ29udGV4dC0+UmVzb2x2ZVN1YnJlc291
cmNlKHJlc29sdmVUZXh0dXJlLCAwLCByZW5kZXJUYXJnZXQtPmdldFRleHR1cmUoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclRhcmdldC0+Z2V0U3VicmVz
b3VyY2VJbmRleCgpLCBmb3JtYXRTZXQudGV4Rm9ybWF0KTsKKyAgICByZXR1cm4gVGV4dHVyZUhl
bHBlcjExOjpNYWtlQW5kUG9zc2VzczJEKHJlc29sdmVUZXh0dXJlLCByZW5kZXJUYXJnZXQtPmdl
dEZvcm1hdFNldCgpKTsKIH0KIAogYm9vbCBSZW5kZXJlcjExOjpnZXRMVUlEKExVSUQgKmFkYXB0
ZXJMdWlkKSBjb25zdApAQCAtNDMwMyw3ICs0MTIyLDkgQEAKIAogR0xlbnVtIFJlbmRlcmVyMTE6
OmdldFZlcnRleENvbXBvbmVudFR5cGUoZ2w6OlZlcnRleEZvcm1hdFR5cGUgdmVydGV4Rm9ybWF0
VHlwZSkgY29uc3QKIHsKLSAgICByZXR1cm4gZDNkMTE6OkdldERYR0lGb3JtYXRJbmZvKGQzZDEx
OjpHZXRWZXJ0ZXhGb3JtYXRJbmZvKHZlcnRleEZvcm1hdFR5cGUsIG1SZW5kZXJlcjExRGV2aWNl
Q2Fwcy5mZWF0dXJlTGV2ZWwpLm5hdGl2ZUZvcm1hdCkuY29tcG9uZW50VHlwZTsKKyAgICBjb25z
dCBhdXRvICZmb3JtYXQgPQorICAgICAgICBkM2QxMTo6R2V0VmVydGV4Rm9ybWF0SW5mbyh2ZXJ0
ZXhGb3JtYXRUeXBlLCBtUmVuZGVyZXIxMURldmljZUNhcHMuZmVhdHVyZUxldmVsKTsKKyAgICBy
ZXR1cm4gZDNkMTE6OkdldENvbXBvbmVudFR5cGUoZm9ybWF0Lm5hdGl2ZUZvcm1hdCk7CiB9CiAK
IGdsOjpFcnJvck9yUmVzdWx0PHVuc2lnbmVkIGludD4gUmVuZGVyZXIxMTo6Z2V0VmVydGV4U3Bh
Y2VSZXF1aXJlZCgKQEAgLTQzNTEsMjMgKzQxNzIsOSBAQAogCiBXb3JrYXJvdW5kc0QzRCBSZW5k
ZXJlcjExOjpnZW5lcmF0ZVdvcmthcm91bmRzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZDNkMTE6
OkdlbmVyYXRlV29ya2Fyb3VuZHMobVJlbmRlcmVyMTFEZXZpY2VDYXBzLmZlYXR1cmVMZXZlbCk7
CisgICAgcmV0dXJuIGQzZDExOjpHZW5lcmF0ZVdvcmthcm91bmRzKG1SZW5kZXJlcjExRGV2aWNl
Q2FwcywgbUFkYXB0ZXJEZXNjcmlwdGlvbik7CiB9CiAKLXZvaWQgUmVuZGVyZXIxMTo6Y3JlYXRl
QW5ub3RhdG9yKCkKLXsKLSAgICAvLyBUaGUgRDNEMTEgcmVuZGVyZXIgbXVzdCBjaG9vc2UgdGhl
IEQzRDkgZGVidWcgYW5ub3RhdG9yIGJlY2F1c2UgdGhlIEQzRDExIGludGVyZmFjZQotICAgIC8v
IG1ldGhvZCBJRDNEVXNlckRlZmluZWRBbm5vdGF0aW9uOjpHZXRTdGF0dXMgb24gZGVza3RvcCBi
dWlsZHMgZG9lc24ndCB3b3JrIHdpdGggdGhlIEdyYXBoaWNzCi0gICAgLy8gRGlhZ25vc3RpY3Mg
dG9vbHMgaW4gVmlzdWFsIFN0dWRpbyAyMDEzLgotICAgIC8vIFRoZSBEM0Q5IGFubm90YXRvciB3
b3JrcyBwcm9wZXJseSBmb3IgYm90aCBEM0QxMSBhbmQgRDNEOS4KLSAgICAvLyBJbmNvcnJlY3Qg
c3RhdHVzIHJlcG9ydGluZyBjYW4gY2F1c2UgQU5HTEUgdG8gbG9nIHVubmVjZXNzYXJ5IGRlYnVn
IGV2ZW50cy4KLSNpZmRlZiBBTkdMRV9FTkFCTEVfRDNEOQotICAgIG1Bbm5vdGF0b3IgPSBuZXcg
RGVidWdBbm5vdGF0b3I5KCk7Ci0jZWxzZQotICAgIG1Bbm5vdGF0b3IgPSBuZXcgRGVidWdBbm5v
dGF0b3IxMSgpOwotI2VuZGlmCi19Ci0KIGdsOjpFcnJvciBSZW5kZXJlcjExOjpjbGVhclRleHR1
cmVzKGdsOjpTYW1wbGVyVHlwZSBzYW1wbGVyVHlwZSwgc2l6ZV90IHJhbmdlU3RhcnQsIHNpemVf
dCByYW5nZUVuZCkKIHsKICAgICByZXR1cm4gbVN0YXRlTWFuYWdlci5jbGVhclRleHR1cmVzKHNh
bXBsZXJUeXBlLCByYW5nZVN0YXJ0LCByYW5nZUVuZCk7CkBAIC00MzkzLDQgKzQyMDAsMTQ2IEBA
CiAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwogfQogCitDb250ZXh0SW1wbCAq
UmVuZGVyZXIxMTo6Y3JlYXRlQ29udGV4dChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZzdGF0ZSkK
K3sKKyAgICByZXR1cm4gbmV3IENvbnRleHQxMShzdGF0ZSwgdGhpcyk7Cit9CisKK2dsOjpFcnJv
ciBSZW5kZXJlcjExOjpnZW5lcmljRHJhd0VsZW1lbnRzKENvbnRleHQxMSAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRp
Y2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBp
bnN0YW5jZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkKK3sKKyAgICBjb25zdCBhdXRvICZkYXRhICAg
ICA9IGNvbnRleHQtPmdldENvbnRleHRTdGF0ZSgpOworICAgIGNvbnN0IGF1dG8gJmdsU3RhdGUg
ID0gZGF0YS5nZXRTdGF0ZSgpOworICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtID0gZ2xTdGF0ZS5n
ZXRQcm9ncmFtKCk7CisgICAgQVNTRVJUKHByb2dyYW0gIT0gbnVsbHB0cik7CisgICAgUHJvZ3Jh
bUQzRCAqcHJvZ3JhbUQzRCA9IEdldEltcGxBczxQcm9ncmFtRDNEPihwcm9ncmFtKTsKKyAgICBi
b29sIHVzZXNQb2ludFNpemUgICAgID0gcHJvZ3JhbUQzRC0+dXNlc1BvaW50U2l6ZSgpOworCisg
ICAgcHJvZ3JhbUQzRC0+dXBkYXRlU2FtcGxlck1hcHBpbmcoKTsKKworICAgIEFOR0xFX1RSWShn
ZW5lcmF0ZVN3aXp6bGVzKGRhdGEpKTsKKworICAgIGlmICghYXBwbHlQcmltaXRpdmVUeXBlKG1v
ZGUsIGNvdW50LCB1c2VzUG9pbnRTaXplKSkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6Tm9F
cnJvcigpOworICAgIH0KKworICAgIEFOR0xFX1RSWSh1cGRhdGVTdGF0ZShkYXRhLCBtb2RlKSk7
CisKKyAgICBUcmFuc2xhdGVkSW5kZXhEYXRhIGluZGV4SW5mbzsKKyAgICBpbmRleEluZm8uaW5k
ZXhSYW5nZSA9IGluZGV4UmFuZ2U7CisKKyAgICBBTkdMRV9UUlkoYXBwbHlJbmRleEJ1ZmZlcihk
YXRhLCBpbmRpY2VzLCBjb3VudCwgbW9kZSwgdHlwZSwgJmluZGV4SW5mbykpOworCisgICAgYXBw
bHlUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnMoZGF0YSk7CisgICAgLy8gVHJhbnNmb3JtIGZlZWRi
YWNrIGlzIG5vdCBhbGxvd2VkIGZvciBEcmF3RWxlbWVudHMsIHRoaXMgZXJyb3Igc2hvdWxkIGhh
dmUgYmVlbiBjYXVnaHQgYXQgdGhlCisgICAgLy8gQVBJIHZhbGlkYXRpb24gbGF5ZXIuCisgICAg
QVNTRVJUKCFnbFN0YXRlLmlzVHJhbnNmb3JtRmVlZGJhY2tBY3RpdmVVbnBhdXNlZCgpKTsKKwor
ICAgIHNpemVfdCB2ZXJ0ZXhDb3VudCA9IGluZGV4SW5mby5pbmRleFJhbmdlLnZlcnRleENvdW50
KCk7CisgICAgQU5HTEVfVFJZKGFwcGx5VmVydGV4QnVmZmVyKGdsU3RhdGUsIG1vZGUsIHN0YXRp
Y19jYXN0PEdMc2l6ZWk+KGluZGV4SW5mby5pbmRleFJhbmdlLnN0YXJ0KSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0xzaXplaT4odmVydGV4Q291bnQpLCBp
bnN0YW5jZXMsICZpbmRleEluZm8pKTsKKyAgICBBTkdMRV9UUlkoYXBwbHlUZXh0dXJlcyhjb250
ZXh0LCBkYXRhKSk7CisgICAgQU5HTEVfVFJZKGFwcGx5U2hhZGVycyhkYXRhLCBtb2RlKSk7Cisg
ICAgQU5HTEVfVFJZKHByb2dyYW1EM0QtPmFwcGx5VW5pZm9ybUJ1ZmZlcnMoZGF0YSkpOworCisg
ICAgaWYgKCFza2lwRHJhdyhkYXRhLCBtb2RlKSkKKyAgICB7CisgICAgICAgIEFOR0xFX1RSWShk
cmF3RWxlbWVudHNJbXBsKGRhdGEsIGluZGV4SW5mbywgbW9kZSwgY291bnQsIHR5cGUsIGluZGlj
ZXMsIGluc3RhbmNlcykpOworICAgIH0KKworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworfQor
CitnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Z2VuZXJpY0RyYXdBcnJheXMoQ29udGV4dDExICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2Rl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZpcnN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMp
Cit7CisgICAgY29uc3QgYXV0byAmZGF0YSAgICAgPSBjb250ZXh0LT5nZXRDb250ZXh0U3RhdGUo
KTsKKyAgICBjb25zdCBhdXRvICZnbFN0YXRlICA9IGRhdGEuZ2V0U3RhdGUoKTsKKyAgICBnbDo6
UHJvZ3JhbSAqcHJvZ3JhbSA9IGdsU3RhdGUuZ2V0UHJvZ3JhbSgpOworICAgIEFTU0VSVChwcm9n
cmFtICE9IG51bGxwdHIpOworICAgIFByb2dyYW1EM0QgKnByb2dyYW1EM0QgPSBHZXRJbXBsQXM8
UHJvZ3JhbUQzRD4ocHJvZ3JhbSk7CisgICAgYm9vbCB1c2VzUG9pbnRTaXplICAgICA9IHByb2dy
YW1EM0QtPnVzZXNQb2ludFNpemUoKTsKKworICAgIHByb2dyYW1EM0QtPnVwZGF0ZVNhbXBsZXJN
YXBwaW5nKCk7CisKKyAgICBBTkdMRV9UUlkoZ2VuZXJhdGVTd2l6emxlcyhkYXRhKSk7CisgICAg
aWYgKCFhcHBseVByaW1pdGl2ZVR5cGUobW9kZSwgY291bnQsIHVzZXNQb2ludFNpemUpKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CisgICAgfQorCisgICAgQU5HTEVfVFJZ
KHVwZGF0ZVN0YXRlKGRhdGEsIG1vZGUpKTsKKyAgICBBTkdMRV9UUlkoYXBwbHlUcmFuc2Zvcm1G
ZWVkYmFja0J1ZmZlcnMoZGF0YSkpOworICAgIEFOR0xFX1RSWShhcHBseVZlcnRleEJ1ZmZlcihn
bFN0YXRlLCBtb2RlLCBmaXJzdCwgY291bnQsIGluc3RhbmNlcywgbnVsbHB0cikpOworICAgIEFO
R0xFX1RSWShhcHBseVRleHR1cmVzKGNvbnRleHQsIGRhdGEpKTsKKyAgICBBTkdMRV9UUlkoYXBw
bHlTaGFkZXJzKGRhdGEsIG1vZGUpKTsKKyAgICBBTkdMRV9UUlkocHJvZ3JhbUQzRC0+YXBwbHlV
bmlmb3JtQnVmZmVycyhkYXRhKSk7CisKKyAgICBpZiAoIXNraXBEcmF3KGRhdGEsIG1vZGUpKQor
ICAgIHsKKyAgICAgICAgQU5HTEVfVFJZKGRyYXdBcnJheXNJbXBsKGRhdGEsIG1vZGUsIGZpcnN0
LCBjb3VudCwgaW5zdGFuY2VzKSk7CisKKyAgICAgICAgaWYgKGdsU3RhdGUuaXNUcmFuc2Zvcm1G
ZWVkYmFja0FjdGl2ZVVucGF1c2VkKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFOR0xFX1RS
WShtYXJrVHJhbnNmb3JtRmVlZGJhY2tVc2FnZShkYXRhKSk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKK30KKworRnJhbWVidWZmZXJJbXBsICpSZW5kZXJl
cjExOjpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUg
JnN0YXRlKQoreworICAgIHJldHVybiBuZXcgRnJhbWVidWZmZXIxMShzdGF0ZSwgdGhpcyk7Cit9
CisKK2dsOjpFcnJvciBSZW5kZXJlcjExOjpnZXRTY3JhdGNoTWVtb3J5QnVmZmVyKHNpemVfdCBy
ZXF1ZXN0ZWRTaXplLCBNZW1vcnlCdWZmZXIgKipidWZmZXJPdXQpCit7CisgICAgaWYgKG1TY3Jh
dGNoTWVtb3J5QnVmZmVyLnNpemUoKSA9PSByZXF1ZXN0ZWRTaXplKQorICAgIHsKKyAgICAgICAg
bVNjcmF0Y2hNZW1vcnlCdWZmZXJSZXNldENvdW50ZXIgPSBTY3JhdGNoTWVtb3J5QnVmZmVyTGlm
ZXRpbWU7CisgICAgICAgICpidWZmZXJPdXQgPSAmbVNjcmF0Y2hNZW1vcnlCdWZmZXI7CisgICAg
ICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworICAgIH0KKworICAgIGlmIChtU2NyYXRjaE1lbW9y
eUJ1ZmZlci5zaXplKCkgPiByZXF1ZXN0ZWRTaXplKQorICAgIHsKKyAgICAgICAgbVNjcmF0Y2hN
ZW1vcnlCdWZmZXJSZXNldENvdW50ZXItLTsKKyAgICB9CisKKyAgICBpZiAobVNjcmF0Y2hNZW1v
cnlCdWZmZXJSZXNldENvdW50ZXIgPD0gMCB8fCBtU2NyYXRjaE1lbW9yeUJ1ZmZlci5zaXplKCkg
PCByZXF1ZXN0ZWRTaXplKQorICAgIHsKKyAgICAgICAgbVNjcmF0Y2hNZW1vcnlCdWZmZXIucmVz
aXplKDApOworICAgICAgICBpZiAoIW1TY3JhdGNoTWVtb3J5QnVmZmVyLnJlc2l6ZShyZXF1ZXN0
ZWRTaXplKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRf
T0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGFsbG9jYXRlIGludGVybmFsIGJ1ZmZlci4iKTsKKyAgICAg
ICAgfQorICAgICAgICBtU2NyYXRjaE1lbW9yeUJ1ZmZlclJlc2V0Q291bnRlciA9IFNjcmF0Y2hN
ZW1vcnlCdWZmZXJMaWZldGltZTsKKyAgICB9CisKKyAgICBBU1NFUlQobVNjcmF0Y2hNZW1vcnlC
dWZmZXIuc2l6ZSgpID49IHJlcXVlc3RlZFNpemUpOworCisgICAgKmJ1ZmZlck91dCA9ICZtU2Ny
YXRjaE1lbW9yeUJ1ZmZlcjsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKK30KKworZ2w6OlZl
cnNpb24gUmVuZGVyZXIxMTo6Z2V0TWF4U3VwcG9ydGVkRVNWZXJzaW9uKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZ2w6OlZlcnNpb24oZDNkMTFfZ2w6OkdldE1heGltdW1DbGllbnRWZXJzaW9uKG1S
ZW5kZXJlcjExRGV2aWNlQ2Fwcy5mZWF0dXJlTGV2ZWwpLCAwKTsKK30KKworZ2w6OkRlYnVnQW5u
b3RhdG9yICpSZW5kZXJlcjExOjpnZXRBbm5vdGF0b3IoKQoreworICAgIHJldHVybiBtQW5ub3Rh
dG9yOworfQorCiB9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyZXIxMS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvUmVuZGVyZXIxMS5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlcmVyMTEuaAkod29y
a2luZyBjb3B5KQpAQCAtMzEsMTcgKzMxLDE3IEBACiAKIG5hbWVzcGFjZSByeAogewotCi1jbGFz
cyBWZXJ0ZXhEYXRhTWFuYWdlcjsKLWNsYXNzIEluZGV4RGF0YU1hbmFnZXI7Ci1jbGFzcyBTdHJl
YW1pbmdJbmRleEJ1ZmZlckludGVyZmFjZTsKIGNsYXNzIEJsaXQxMTsKIGNsYXNzIEJ1ZmZlcjEx
OwogY2xhc3MgQ2xlYXIxMTsKK2NsYXNzIENvbnRleHQxMTsKK2NsYXNzIEluZGV4RGF0YU1hbmFn
ZXI7CitzdHJ1Y3QgUGFja1BpeGVsc1BhcmFtczsKIGNsYXNzIFBpeGVsVHJhbnNmZXIxMTsKIGNs
YXNzIFJlbmRlclRhcmdldDExOworY2xhc3MgU3RyZWFtaW5nSW5kZXhCdWZmZXJJbnRlcmZhY2U7
CiBjbGFzcyBUcmltMTE7Ci1zdHJ1Y3QgUGFja1BpeGVsc1BhcmFtczsKK2NsYXNzIFZlcnRleERh
dGFNYW5hZ2VyOwogCiBzdHJ1Y3QgUmVuZGVyZXIxMURldmljZUNhcHMKIHsKQEAgLTUyLDYgKzUy
LDcgQEAKICAgICBVSU5UIEI1RzZSNXN1cHBvcnQ7ICAgICAgICAgICAgICAgICAvLyBCaXRmaWVs
ZCBvZiBEM0QxMV9GT1JNQVRfU1VQUE9SVCB2YWx1ZXMgZm9yIERYR0lfRk9STUFUX0I1RzZSNV9V
Tk9STQogICAgIFVJTlQgQjRHNFI0QTRzdXBwb3J0OyAgICAgICAgICAgICAgIC8vIEJpdGZpZWxk
IG9mIEQzRDExX0ZPUk1BVF9TVVBQT1JUIHZhbHVlcyBmb3IgRFhHSV9GT1JNQVRfQjRHNFI0QTRf
VU5PUk0KICAgICBVSU5UIEI1RzVSNUExc3VwcG9ydDsgICAgICAgICAgICAgICAvLyBCaXRmaWVs
ZCBvZiBEM0QxMV9GT1JNQVRfU1VQUE9SVCB2YWx1ZXMgZm9yIERYR0lfRk9STUFUX0I1RzVSNUEx
X1VOT1JNCisgICAgT3B0aW9uYWw8TEFSR0VfSU5URUdFUj4gZHJpdmVyVmVyc2lvbjsgIC8vIEZv
dXItcGFydCBkcml2ZXIgdmVyc2lvbiBudW1iZXIuCiB9OwogCiBlbnVtCkBAIC0xMDUsOTAgKzEw
NiwxMjggQEAKICAgICB2aXJ0dWFsIH5SZW5kZXJlcjExKCk7CiAKICAgICBlZ2w6OkVycm9yIGlu
aXRpYWxpemUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVzZXREZXZpY2UoKTsKKyAg
ICBib29sIHJlc2V0RGV2aWNlKCkgb3ZlcnJpZGU7CiAKLSAgICBlZ2w6OkNvbmZpZ1NldCBnZW5l
cmF0ZUNvbmZpZ3MoKSBjb25zdCBvdmVycmlkZTsKKyAgICBlZ2w6OkNvbmZpZ1NldCBnZW5lcmF0
ZUNvbmZpZ3MoKSBvdmVycmlkZTsKICAgICB2b2lkIGdlbmVyYXRlRGlzcGxheUV4dGVuc2lvbnMo
ZWdsOjpEaXNwbGF5RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucykgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICBnbDo6RXJyb3IgZmx1c2goKSBvdmVycmlkZTsKLSAgICBnbDo6RXJyb3IgZmluaXNoKCkg
b3ZlcnJpZGU7CisgICAgQ29udGV4dEltcGwgKmNyZWF0ZUNvbnRleHQoY29uc3QgZ2w6OkNvbnRl
eHRTdGF0ZSAmc3RhdGUpIG92ZXJyaWRlOwogCi0gICAgU3dhcENoYWluRDNEICpjcmVhdGVTd2Fw
Q2hhaW4oTmF0aXZlV2luZG93IG5hdGl2ZVdpbmRvdywKKyAgICBnbDo6RXJyb3IgZmx1c2goKTsK
KyAgICBnbDo6RXJyb3IgZmluaXNoKCk7CisKKyAgICBib29sIGlzVmFsaWROYXRpdmVXaW5kb3co
RUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3cpIGNvbnN0IG92ZXJyaWRlOworICAgIE5hdGl2ZVdp
bmRvd0QzRCAqY3JlYXRlTmF0aXZlV2luZG93KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmln
ICpjb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
ZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIGNvbnN0IG92ZXJyaWRlOworCisgICAgU3dhcENo
YWluRDNEICpjcmVhdGVTd2FwQ2hhaW4oTmF0aXZlV2luZG93RDNEICpuYXRpdmVXaW5kb3csCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFIHNoYXJlSGFuZGxlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBiYWNrQnVmZmVyRm9ybWF0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXB0aEJ1ZmZlckZvcm1h
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgb3JpZW50YXRpb24p
IG92ZXJyaWRlOwogCi0gICAgQ29tcGlsZXJJbXBsICpjcmVhdGVDb21waWxlcigpIG92ZXJyaWRl
OworICAgIGdsOjpFcnJvciBzZXRTYW1wbGVyU3RhdGUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJnNhbXBsZXIpIG92ZXJyaWRlOworICAg
IGdsOjpFcnJvciBzZXRUZXh0dXJlKGdsOjpTYW1wbGVyVHlwZSB0eXBlLCBpbnQgaW5kZXgsIGds
OjpUZXh0dXJlICp0ZXh0dXJlKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGdl
bmVyYXRlU3dpenpsZShnbDo6VGV4dHVyZSAqdGV4dHVyZSk7Ci0gICAgdmlydHVhbCBnbDo6RXJy
b3Igc2V0U2FtcGxlclN0YXRlKGdsOjpTYW1wbGVyVHlwZSB0eXBlLCBpbnQgaW5kZXgsIGdsOjpU
ZXh0dXJlICp0ZXh0dXJlLCBjb25zdCBnbDo6U2FtcGxlclN0YXRlICZzYW1wbGVyKTsKLSAgICB2
aXJ0dWFsIGdsOjpFcnJvciBzZXRUZXh0dXJlKGdsOjpTYW1wbGVyVHlwZSB0eXBlLCBpbnQgaW5k
ZXgsIGdsOjpUZXh0dXJlICp0ZXh0dXJlKTsKLQotICAgIGdsOjpFcnJvciBzZXRVbmlmb3JtQnVm
ZmVycyhjb25zdCBnbDo6RGF0YSAmZGF0YSwKKyAgICBnbDo6RXJyb3Igc2V0VW5pZm9ybUJ1ZmZl
cnMoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8R0xpbnQ+ICZ2ZXJ0ZXhVbmlmb3JtQnVmZmVycywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8R0xpbnQ+
ICZmcmFnbWVudFVuaWZvcm1CdWZmZXJzKSBvdmVycmlkZTsKIAotICAgIGdsOjpFcnJvciB1cGRh
dGVTdGF0ZShjb25zdCBnbDo6RGF0YSAmZGF0YSwgR0xlbnVtIGRyYXdNb2RlKSBvdmVycmlkZTsK
KyAgICBnbDo6RXJyb3IgdXBkYXRlU3RhdGUoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwg
R0xlbnVtIGRyYXdNb2RlKTsKIAotICAgIHZpcnR1YWwgYm9vbCBhcHBseVByaW1pdGl2ZVR5cGUo
R0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIGJvb2wgdXNlc1BvaW50U2l6ZSk7Ci0gICAgZ2w6
OkVycm9yIGFwcGx5UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVCdWZm
ZXIpIG92ZXJyaWRlOworICAgIGJvb2wgYXBwbHlQcmltaXRpdmVUeXBlKEdMZW51bSBtb2RlLCBH
THNpemVpIGNvdW50LCBib29sIHVzZXNQb2ludFNpemUpOworICAgIGdsOjpFcnJvciBhcHBseVJl
bmRlclRhcmdldChnbDo6RnJhbWVidWZmZXIgKmZyYW1lQnVmZmVyKTsKICAgICBnbDo6RXJyb3Ig
YXBwbHlVbmlmb3Jtcyhjb25zdCBQcm9ncmFtRDNEICZwcm9ncmFtRDNELAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBkcmF3TW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnZlY3RvcjxEM0RVbmlmb3JtICo+ICZ1bmlmb3JtQXJyYXkpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGFwcGx5VmVydGV4QnVmZmVyKGNvbnN0IGdsOjpT
dGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIG1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
Zmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBj
b3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGlu
c3RhbmNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xh
dGVkSW5kZXhEYXRhICppbmRleEluZm8pOwotICAgIGdsOjpFcnJvciBhcHBseUluZGV4QnVmZmVy
KGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAgIGdsOjpFcnJvciBhcHBseVZlcnRleEJ1ZmZlcihj
b25zdCBnbDo6U3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZmlyc3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGVkSW5kZXhEYXRhICppbmRleEluZm8pOworICAg
IGdsOjpFcnJvciBhcHBseUluZGV4QnVmZmVyKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJh
bnNsYXRlZEluZGV4RGF0YSAqaW5kZXhJbmZvKSBvdmVycmlkZTsKLSAgICBnbDo6RXJyb3IgYXBw
bHlUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnMoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSkgb3ZlcnJp
ZGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRlZEluZGV4RGF0YSAq
aW5kZXhJbmZvKTsKKyAgICBnbDo6RXJyb3IgYXBwbHlUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnMo
Y29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSk7CiAKICAgICAvLyBsb3N0IGRldmljZQogICAg
IGJvb2wgdGVzdERldmljZUxvc3QoKSBvdmVycmlkZTsKICAgICBib29sIHRlc3REZXZpY2VSZXNl
dHRhYmxlKCkgb3ZlcnJpZGU7CiAKLSAgICBzdGQ6OnN0cmluZyBnZXRSZW5kZXJlckRlc2NyaXB0
aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpzdHJpbmcgZ2V0UmVuZGVyZXJEZXNjcmlw
dGlvbigpIGNvbnN0OwogICAgIERldmljZUlkZW50aWZpZXIgZ2V0QWRhcHRlcklkZW50aWZpZXIo
KSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFJlc2VydmVk
VmVydGV4VW5pZm9ybVZlY3RvcnMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBn
ZXRSZXNlcnZlZEZyYWdtZW50VW5pZm9ybVZlY3RvcnMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHVu
c2lnbmVkIGludCBnZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1CdWZmZXJzKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0UmVzZXJ2ZWRGcmFnbWVudFVuaWZvcm1CdWZmZXJzKCkg
Y29uc3Q7CisgICAgdW5zaWduZWQgaW50IGdldFJlc2VydmVkVmVydGV4VW5pZm9ybVZlY3RvcnMo
KSBjb25zdDsKKyAgICB1bnNpZ25lZCBpbnQgZ2V0UmVzZXJ2ZWRGcmFnbWVudFVuaWZvcm1WZWN0
b3JzKCkgY29uc3Q7CisgICAgdW5zaWduZWQgaW50IGdldFJlc2VydmVkVmVydGV4VW5pZm9ybUJ1
ZmZlcnMoKSBjb25zdCBvdmVycmlkZTsKKyAgICB1bnNpZ25lZCBpbnQgZ2V0UmVzZXJ2ZWRGcmFn
bWVudFVuaWZvcm1CdWZmZXJzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIGdldFNoYXJl
SGFuZGxlU3VwcG9ydCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBpbnQgZ2V0TWFqb3JTaGFkZXJN
b2RlbCgpIGNvbnN0OworICAgIGJvb2wgZ2V0TlYxMlRleHR1cmVTdXBwb3J0KCkgY29uc3Q7CisK
KyAgICBpbnQgZ2V0TWFqb3JTaGFkZXJNb2RlbCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGludCBn
ZXRNaW5vclNoYWRlck1vZGVsKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc3RkOjpzdHJpbmcgZ2V0
U2hhZGVyTW9kZWxTdWZmaXgoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIFBpeGVsIG9wZXJh
dGlvbnMKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBjb3B5SW1hZ2UyRChjb25zdCBnbDo6RnJhbWVi
dWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VSZWN0LCBHTGVu
dW0gZGVzdEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LCBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwgR0xpbnQgbGV2
ZWwpOwotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNvcHlJbWFnZUN1YmUoY29uc3QgZ2w6OkZyYW1l
YnVmZmVyICpmcmFtZWJ1ZmZlciwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlUmVjdCwgR0xl
bnVtIGRlc3RGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LCBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwgR0xlbnVt
IHRhcmdldCwgR0xpbnQgbGV2ZWwpOwotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNvcHlJbWFnZTNE
KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0YW5nbGUg
JnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsIFRleHR1cmVTdG9yYWdlICpz
dG9yYWdlLCBHTGludCBsZXZlbCk7Ci0gICAgdmlydHVhbCBnbDo6RXJyb3IgY29weUltYWdlMkRB
cnJheShjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBnbDo6UmVjdGFu
Z2xlICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsIFRleHR1cmVT
dG9yYWdlICpzdG9yYWdlLCBHTGludCBsZXZlbCk7CisgICAgZ2w6OkVycm9yIGNvcHlJbWFnZTJE
KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZVJlY3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBU
ZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bGV2ZWwpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBjb3B5SW1hZ2VDdWJlKGNvbnN0IGdsOjpG
cmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlUmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZGVzdEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1
cmVTdG9yYWdlICpzdG9yYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwpIG92ZXJyaWRl
OworICAgIGdsOjpFcnJvciBjb3B5SW1hZ2UzRChjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1l
YnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZz
b3VyY2VSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdEZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsKSBvdmVycmlkZTsKKyAgICBnbDo6RXJy
b3IgY29weUltYWdlMkRBcnJheShjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJj
ZVJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RGb3JtYXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9m
ZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlU3RvcmFnZSAqc3Rv
cmFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCkgb3ZlcnJp
ZGU7CiAKKyAgICBnbDo6RXJyb3IgY29weVRleHR1cmUoY29uc3QgZ2w6OlRleHR1cmUgKnNvdXJj
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc291cmNlTGV2ZWwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZVJlY3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgZGVzdExldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVu
cGFja0ZsaXBZLAorICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1ByZW11bHRp
cGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrVW5tdWx0aXBs
eUFscGhhKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgY29weUNvbXByZXNzZWRUZXh0dXJlKGNv
bnN0IGdsOjpUZXh0dXJlICpzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBzb3VyY2VMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgZGVzdExldmVsKSBvdmVycmlkZTsKKwogICAgIC8vIFJlbmRlclRhcmdl
dCBjcmVhdGlvbgotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNyZWF0ZVJlbmRlclRhcmdldChpbnQg
d2lkdGgsIGludCBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgc2FtcGxlcywgUmVuZGVy
VGFyZ2V0RDNEICoqb3V0UlQpOworICAgIGdsOjpFcnJvciBjcmVhdGVSZW5kZXJUYXJnZXQoaW50
IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGhlaWdodCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSZW5kZXJUYXJnZXREM0QgKipvdXRSVCkgb3ZlcnJpZGU7CiAgICAg
Z2w6OkVycm9yIGNyZWF0ZVJlbmRlclRhcmdldENvcHkoUmVuZGVyVGFyZ2V0RDNEICpzb3VyY2Us
IFJlbmRlclRhcmdldEQzRCAqKm91dFJUKSBvdmVycmlkZTsKIAotICAgIC8vIEZyYW1lYnVmZmVy
IGNyZWF0aW9uCi0gICAgRnJhbWVidWZmZXJJbXBsICpjcmVhdGVGcmFtZWJ1ZmZlcihjb25zdCBn
bDo6RnJhbWVidWZmZXI6OkRhdGEgJmRhdGEpIG92ZXJyaWRlOwotCi0gICAgLy8gU2hhZGVyIGNy
ZWF0aW9uCi0gICAgU2hhZGVySW1wbCAqY3JlYXRlU2hhZGVyKGNvbnN0IGdsOjpTaGFkZXI6OkRh
dGEgJmRhdGEpIG92ZXJyaWRlOwotICAgIFByb2dyYW1JbXBsICpjcmVhdGVQcm9ncmFtKGNvbnN0
IGdsOjpQcm9ncmFtOjpEYXRhICZkYXRhKSBvdmVycmlkZTsKLQogICAgIC8vIFNoYWRlciBvcGVy
YXRpb25zCiAgICAgZ2w6OkVycm9yIGxvYWRFeGVjdXRhYmxlKGNvbnN0IHZvaWQgKmZ1bmN0aW9u
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLApAQCAtMjA2LDQx
ICsyNDUsNDcgQEAKICAgICBVbmlmb3JtU3RvcmFnZUQzRCAqY3JlYXRlVW5pZm9ybVN0b3JhZ2Uo
c2l6ZV90IHN0b3JhZ2VTaXplKSBvdmVycmlkZTsKIAogICAgIC8vIEltYWdlIG9wZXJhdGlvbnMK
LSAgICB2aXJ0dWFsIEltYWdlRDNEICpjcmVhdGVJbWFnZSgpOworICAgIEltYWdlRDNEICpjcmVh
dGVJbWFnZSgpIG92ZXJyaWRlOwogICAgIGdsOjpFcnJvciBnZW5lcmF0ZU1pcG1hcChJbWFnZUQz
RCAqZGVzdCwgSW1hZ2VEM0QgKnNvdXJjZSkgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIGdlbmVy
YXRlTWlwbWFwc1VzaW5nRDNEKFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZ0ZXh0dXJl
U3RhdGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgVGV4dHVyZVN0b3JhZ2UgKmNyZWF0ZVRleHR1
cmVTdG9yYWdlMkQoU3dhcENoYWluRDNEICpzd2FwQ2hhaW4pOwotICAgIFRleHR1cmVTdG9yYWdl
ICpjcmVhdGVUZXh0dXJlU3RvcmFnZUVHTEltYWdlKEVHTEltYWdlRDNEICplZ2xJbWFnZSkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBUZXh0dXJlU3RvcmFnZSAqY3JlYXRlVGV4dHVyZVN0b3JhZ2Uy
RChHTGVudW0gaW50ZXJuYWxmb3JtYXQsIGJvb2wgcmVuZGVyVGFyZ2V0LCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwgaW50IGxldmVscywgYm9vbCBoaW50TGV2ZWxaZXJvT25seSk7Ci0g
ICAgdmlydHVhbCBUZXh0dXJlU3RvcmFnZSAqY3JlYXRlVGV4dHVyZVN0b3JhZ2VDdWJlKEdMZW51
bSBpbnRlcm5hbGZvcm1hdCwgYm9vbCByZW5kZXJUYXJnZXQsIGludCBzaXplLCBpbnQgbGV2ZWxz
LCBib29sIGhpbnRMZXZlbFplcm9Pbmx5KTsKLSAgICB2aXJ0dWFsIFRleHR1cmVTdG9yYWdlICpj
cmVhdGVUZXh0dXJlU3RvcmFnZTNEKEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgYm9vbCByZW5kZXJU
YXJnZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBpbnQg
bGV2ZWxzKTsKLSAgICB2aXJ0dWFsIFRleHR1cmVTdG9yYWdlICpjcmVhdGVUZXh0dXJlU3RvcmFn
ZTJEQXJyYXkoR0xlbnVtIGludGVybmFsZm9ybWF0LCBib29sIHJlbmRlclRhcmdldCwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIGludCBsZXZlbHMpOworICAg
IGdsOjpFcnJvciBnZW5lcmF0ZU1pcG1hcFVzaW5nRDNEKFRleHR1cmVTdG9yYWdlICpzdG9yYWdl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpUZXh0dXJl
U3RhdGUgJnRleHR1cmVTdGF0ZSkgb3ZlcnJpZGU7CisgICAgVGV4dHVyZVN0b3JhZ2UgKmNyZWF0
ZVRleHR1cmVTdG9yYWdlMkQoU3dhcENoYWluRDNEICpzd2FwQ2hhaW4pIG92ZXJyaWRlOworICAg
IFRleHR1cmVTdG9yYWdlICpjcmVhdGVUZXh0dXJlU3RvcmFnZUVHTEltYWdlKEVHTEltYWdlRDNE
ICplZ2xJbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSZW5kZXJUYXJnZXREM0QgKnJlbmRlclRhcmdldEQzRCkgb3ZlcnJpZGU7CisgICAgVGV4
dHVyZVN0b3JhZ2UgKmNyZWF0ZVRleHR1cmVTdG9yYWdlRXh0ZXJuYWwoCisgICAgICAgIGVnbDo6
U3RyZWFtICpzdHJlYW0sCisgICAgICAgIGNvbnN0IGVnbDo6U3RyZWFtOjpHTFRleHR1cmVEZXNj
cmlwdGlvbiAmZGVzYykgb3ZlcnJpZGU7CisgICAgVGV4dHVyZVN0b3JhZ2UgKmNyZWF0ZVRleHR1
cmVTdG9yYWdlMkQoR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVuZGVyVGFyZ2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxldmVscywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGhpbnRMZXZlbFplcm9Pbmx5KSBv
dmVycmlkZTsKKyAgICBUZXh0dXJlU3RvcmFnZSAqY3JlYXRlVGV4dHVyZVN0b3JhZ2VDdWJlKEdM
ZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgcmVuZGVyVGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgbGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBoaW50TGV2ZWxaZXJvT25seSkgb3ZlcnJpZGU7CisgICAg
VGV4dHVyZVN0b3JhZ2UgKmNyZWF0ZVRleHR1cmVTdG9yYWdlM0QoR0xlbnVtIGludGVybmFsZm9y
bWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVu
ZGVyVGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgbGV2ZWxzKSBvdmVycmlkZTsKKyAgICBUZXh0dXJlU3RvcmFnZSAqY3JlYXRlVGV4
dHVyZVN0b3JhZ2UyREFycmF5KEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVuZGVyVGFyZ2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBsZXZlbHMpIG92ZXJyaWRlOwogCi0gICAgLy8gVGV4dHVyZSBjcmVhdGlv
bgotICAgIHZpcnR1YWwgVGV4dHVyZUltcGwgKmNyZWF0ZVRleHR1cmUoR0xlbnVtIHRhcmdldCk7
CisgICAgVmVydGV4QnVmZmVyICpjcmVhdGVWZXJ0ZXhCdWZmZXIoKSBvdmVycmlkZTsKKyAgICBJ
bmRleEJ1ZmZlciAqY3JlYXRlSW5kZXhCdWZmZXIoKSBvdmVycmlkZTsKIAotICAgIC8vIFJlbmRl
cmJ1ZmZlciBjcmVhdGlvbgotICAgIHZpcnR1YWwgUmVuZGVyYnVmZmVySW1wbCAqY3JlYXRlUmVu
ZGVyYnVmZmVyKCk7Ci0KLSAgICAvLyBCdWZmZXIgY3JlYXRpb24KLSAgICB2aXJ0dWFsIEJ1ZmZl
ckltcGwgKmNyZWF0ZUJ1ZmZlcigpOwotICAgIHZpcnR1YWwgVmVydGV4QnVmZmVyICpjcmVhdGVW
ZXJ0ZXhCdWZmZXIoKTsKLSAgICB2aXJ0dWFsIEluZGV4QnVmZmVyICpjcmVhdGVJbmRleEJ1ZmZl
cigpOwotCi0gICAgLy8gVmVydGV4IEFycmF5IGNyZWF0aW9uCi0gICAgVmVydGV4QXJyYXlJbXBs
ICpjcmVhdGVWZXJ0ZXhBcnJheShjb25zdCBnbDo6VmVydGV4QXJyYXk6OkRhdGEgJmRhdGEpIG92
ZXJyaWRlOwotCi0gICAgLy8gUXVlcnkgYW5kIEZlbmNlIGNyZWF0aW9uCi0gICAgdmlydHVhbCBR
dWVyeUltcGwgKmNyZWF0ZVF1ZXJ5KEdMZW51bSB0eXBlKTsKLSAgICB2aXJ0dWFsIEZlbmNlTlZJ
bXBsICpjcmVhdGVGZW5jZU5WKCk7Ci0gICAgdmlydHVhbCBGZW5jZVN5bmNJbXBsICpjcmVhdGVG
ZW5jZVN5bmMoKTsKLQotICAgIC8vIFRyYW5zZm9ybSBGZWVkYmFjayBjcmVhdGlvbgotICAgIHZp
cnR1YWwgVHJhbnNmb3JtRmVlZGJhY2tJbXBsKiBjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpOwot
CiAgICAgLy8gU3RyZWFtIENyZWF0aW9uCi0gICAgU3RyZWFtSW1wbCAqY3JlYXRlU3RyZWFtKGNv
bnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKKyAgICBTdHJlYW1Qcm9k
dWNlckltcGwgKmNyZWF0ZVN0cmVhbVByb2R1Y2VyRDNEVGV4dHVyZU5WMTIoCisgICAgICAgIGVn
bDo6U3RyZWFtOjpDb25zdW1lclR5cGUgY29uc3VtZXJUeXBlLAorICAgICAgICBjb25zdCBlZ2w6
OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CiAKICAgICAvLyBEM0QxMS1yZW5kZXJl
ciBzcGVjaWZpYyBtZXRob2RzCiAgICAgSUQzRDExRGV2aWNlICpnZXREZXZpY2UoKSB7IHJldHVy
biBtRGV2aWNlOyB9CkBAIC0yNDcsMTcgKzI5MiwyMiBAQAogICAgIHZvaWQgKmdldEQzRERldmlj
ZSgpIG92ZXJyaWRlOwogICAgIElEM0QxMURldmljZUNvbnRleHQgKmdldERldmljZUNvbnRleHQo
KSB7IHJldHVybiBtRGV2aWNlQ29udGV4dDsgfTsKICAgICBJRDNEMTFEZXZpY2VDb250ZXh0MSAq
Z2V0RGV2aWNlQ29udGV4dDFJZlN1cHBvcnRlZCgpIHsgcmV0dXJuIG1EZXZpY2VDb250ZXh0MTsg
fTsKLSAgICBEWEdJRmFjdG9yeSAqZ2V0RHhnaUZhY3RvcnkoKSB7IHJldHVybiBtRHhnaUZhY3Rv
cnk7IH07CisgICAgSURYR0lGYWN0b3J5ICpnZXREeGdpRmFjdG9yeSgpIHsgcmV0dXJuIG1EeGdp
RmFjdG9yeTsgfTsKIAogICAgIFJlbmRlclN0YXRlQ2FjaGUgJmdldFN0YXRlQ2FjaGUoKSB7IHJl
dHVybiBtU3RhdGVDYWNoZTsgfQogCiAgICAgQmxpdDExICpnZXRCbGl0dGVyKCkgeyByZXR1cm4g
bUJsaXQ7IH0KICAgICBDbGVhcjExICpnZXRDbGVhcmVyKCkgeyByZXR1cm4gbUNsZWFyOyB9Cisg
ICAgZ2w6OkRlYnVnQW5ub3RhdG9yICpnZXRBbm5vdGF0b3IoKTsKIAogICAgIC8vIEJ1ZmZlci10
by10ZXh0dXJlIGFuZCBUZXh0dXJlLXRvLWJ1ZmZlciBjb3BpZXMKLSAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNGYXN0Q29weUJ1ZmZlclRvVGV4dHVyZShHTGVudW0gaW50ZXJuYWxGb3JtYXQpIGNv
bnN0OwotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGZhc3RDb3B5QnVmZmVyVG9UZXh0dXJlKGNvbnN0
IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssIHVuc2lnbmVkIGludCBvZmZzZXQsIFJlbmRl
clRhcmdldEQzRCAqZGVzdFJlbmRlclRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdGluYXRpb25Gb3JtYXQsIEdMZW51bSBzb3Vy
Y2VQaXhlbHNUeXBlLCBjb25zdCBnbDo6Qm94ICZkZXN0QXJlYSk7CisgICAgYm9vbCBzdXBwb3J0
c0Zhc3RDb3B5QnVmZmVyVG9UZXh0dXJlKEdMZW51bSBpbnRlcm5hbEZvcm1hdCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgZ2w6OkVycm9yIGZhc3RDb3B5QnVmZmVyVG9UZXh0dXJlKGNvbnN0IGdsOjpQ
aXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFJlbmRlclRhcmdldEQzRCAqZGVzdFJlbmRlclRhcmdldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RpbmF0aW9uRm9ybWF0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc291cmNlUGl4ZWxzVHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAm
ZGVzdEFyZWEpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBtYXJrQWxsU3RhdGVEaXJ0eSgpOwogICAg
IGdsOjpFcnJvciBwYWNrUGl4ZWxzKGNvbnN0IFRleHR1cmVIZWxwZXIxMSAmdGV4dHVyZUhlbHBl
ciwKQEAgLTI5MSwzMSArMzQxLDQ4IEBACiAgICAgU3RhdGVNYW5hZ2VyMTEgKmdldFN0YXRlTWFu
YWdlcigpIHsgcmV0dXJuICZtU3RhdGVNYW5hZ2VyOyB9CiAKICAgICB2b2lkIG9uU3dhcCgpOwor
ICAgIHZvaWQgb25CdWZmZXJDcmVhdGUoY29uc3QgQnVmZmVyMTEgKmNyZWF0ZWQpOwogICAgIHZv
aWQgb25CdWZmZXJEZWxldGUoY29uc3QgQnVmZmVyMTEgKmRlbGV0ZWQpOwotICAgIHZvaWQgb25N
YWtlQ3VycmVudChjb25zdCBnbDo6RGF0YSAmZGF0YSkgb3ZlcnJpZGU7CiAKICAgICBlZ2w6OkVy
cm9yIGdldEVHTERldmljZShEZXZpY2VJbXBsICoqZGV2aWNlKSBvdmVycmlkZTsKIAorICAgIGds
OjpFcnJvciBnZW5lcmljRHJhd0FycmF5cyhDb250ZXh0MTEgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBmaXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBp
bnN0YW5jZXMpOworCisgICAgZ2w6OkVycm9yIGdlbmVyaWNEcmF3RWxlbWVudHMoQ29udGV4dDEx
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2Rl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpJbmRleFJhbmdlICZpbmRleFJhbmdlKTsKKwor
ICAgIC8vIE5lY2Vzc2FyeSBoYWNrIGZvciBkZWZhdWx0IGZyYW1lYnVmZmVycyBpbiBEM0QuCisg
ICAgRnJhbWVidWZmZXJJbXBsICpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoY29uc3QgZ2w6OkZy
YW1lYnVmZmVyU3RhdGUgJnN0YXRlKSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBnZXRTY3Jh
dGNoTWVtb3J5QnVmZmVyKHNpemVfdCByZXF1ZXN0ZWRTaXplLCBNZW1vcnlCdWZmZXIgKipidWZm
ZXJPdXQpOworCisgICAgZ2w6OlZlcnNpb24gZ2V0TWF4U3VwcG9ydGVkRVNWZXJzaW9uKCkgY29u
c3Qgb3ZlcnJpZGU7CisKICAgcHJvdGVjdGVkOgotICAgIHZvaWQgY3JlYXRlQW5ub3RhdG9yKCkg
b3ZlcnJpZGU7CiAgICAgZ2w6OkVycm9yIGNsZWFyVGV4dHVyZXMoZ2w6OlNhbXBsZXJUeXBlIHNh
bXBsZXJUeXBlLCBzaXplX3QgcmFuZ2VTdGFydCwgc2l6ZV90IHJhbmdlRW5kKSBvdmVycmlkZTsK
LSAgICBnbDo6RXJyb3IgYXBwbHlTaGFkZXJzSW1wbChjb25zdCBnbDo6RGF0YSAmZGF0YSwgR0xl
bnVtIGRyYXdNb2RlKSBvdmVycmlkZTsKIAotICAgIHZvaWQgc3luY1N0YXRlKGNvbnN0IGdsOjpT
dGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpTdGF0ZTo6RGlydHlCaXRzICZiaXRtYXNrKSBvdmVycmlk
ZTsKLQogICBwcml2YXRlOgotICAgIGdsOjpFcnJvciBkcmF3QXJyYXlzSW1wbChjb25zdCBnbDo6
RGF0YSAmZGF0YSwKKyAgICBnbDo6RXJyb3IgZHJhd0FycmF5c0ltcGwoY29uc3QgZ2w6OkNvbnRl
eHRTdGF0ZSAmZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHN0YXJ0VmVydGV4LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcykgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIGRy
YXdFbGVtZW50c0ltcGwoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzKTsKKyAgICBnbDo6RXJyb3IgZHJhd0VsZW1lbnRz
SW1wbChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFRyYW5zbGF0ZWRJbmRleERhdGEgJmluZGV4SW5mbywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9p
ZCAqaW5kaWNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3Rh
bmNlcykgb3ZlcnJpZGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBp
bnN0YW5jZXMpOwogCiAgICAgdm9pZCBnZW5lcmF0ZUNhcHMoZ2w6OkNhcHMgKm91dENhcHMsIGds
OjpUZXh0dXJlQ2Fwc01hcCAqb3V0VGV4dHVyZUNhcHMsCiAgICAgICAgICAgICAgICAgICAgICAg
Z2w6OkV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMsCkBAIC0zMjMsMTMgKzM5MCwxMyBAQAogCiAg
ICAgV29ya2Fyb3VuZHNEM0QgZ2VuZXJhdGVXb3JrYXJvdW5kcygpIGNvbnN0IG92ZXJyaWRlOwog
Ci0gICAgZ2w6OkVycm9yIGRyYXdMaW5lTG9vcChjb25zdCBnbDo6RGF0YSAmZGF0YSwKKyAgICBn
bDo6RXJyb3IgZHJhd0xpbmVMb29wKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THZvaWQgKmluZGljZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUcmFuc2xh
dGVkSW5kZXhEYXRhICppbmRleEluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
aW5zdGFuY2VzKTsKLSAgICBnbDo6RXJyb3IgZHJhd1RyaWFuZ2xlRmFuKGNvbnN0IGdsOjpEYXRh
ICZkYXRhLAorICAgIGdsOjpFcnJvciBkcmF3VHJpYW5nbGVGYW4oY29uc3QgZ2w6OkNvbnRleHRT
dGF0ZSAmZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKQEAgLTMzNiw4ICs0MDMs
MTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtaW5JbmRleCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnN0YW5jZXMpOwogCi0gICAgSUQzRDExVGV4
dHVyZTJEICpyZXNvbHZlTXVsdGlzYW1wbGVkVGV4dHVyZShJRDNEMTFUZXh0dXJlMkQgKnNvdXJj
ZSwgdW5zaWduZWQgaW50IHN1YnJlc291cmNlKTsKKyAgICBnbDo6RXJyb3IgYXBwbHlTaGFkZXJz
KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsIEdMZW51bSBkcmF3TW9kZSk7CisgICAgZ2w6
OkVycm9yIGdlbmVyYXRlU3dpenpsZShnbDo6VGV4dHVyZSAqdGV4dHVyZSk7CisgICAgZ2w6OkVy
cm9yIGdlbmVyYXRlU3dpenpsZXMoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwgZ2w6OlNh
bXBsZXJUeXBlIHR5cGUpOworICAgIGdsOjpFcnJvciBnZW5lcmF0ZVN3aXp6bGVzKGNvbnN0IGds
OjpDb250ZXh0U3RhdGUgJmRhdGEpOwogCisgICAgZ2w6OkVycm9yT3JSZXN1bHQ8VGV4dHVyZUhl
bHBlcjExPiByZXNvbHZlTXVsdGlzYW1wbGVkVGV4dHVyZShSZW5kZXJUYXJnZXQxMSAqcmVuZGVy
VGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3RlbmNpbCk7CisK
ICAgICB2b2lkIHBvcHVsYXRlUmVuZGVyZXIxMURldmljZUNhcHMoKTsKIAogICAgIHZvaWQgdXBk
YXRlSGlzdG9ncmFtcygpOwpAQCAtMzc4LDYgKzQ1MiwxMiBAQAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2FtcGxlck1ldGFkYXRhUmVmZXJlbmNlZEJ5dGVz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFCdWZmZXIgKmRy
aXZlckNvbnN0YW50QnVmZmVyKTsKIAorICAgIGdsOjpFcnJvciBjb3B5SW1hZ2VJbnRlcm5hbChj
b25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VSZWN0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdEZvcm1hdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVuZGVyVGFyZ2V0RDNEICpkZXN0UmVuZGVyVGFyZ2V0KTsK
KwogICAgIEhNT0RVTEUgbUQzZDExTW9kdWxlOwogICAgIEhNT0RVTEUgbUR4Z2lNb2R1bGU7CiAg
ICAgSE1PRFVMRSBtRENvbXBNb2R1bGU7CkBAIC00MTYsMTUgKzQ5Niw3IEBACiAgICAgYm9vbCBt
QXBwbGllZElCQ2hhbmdlZDsKIAogICAgIC8vIEN1cnJlbnRseSBhcHBsaWVkIHRyYW5zZm9ybSBm
ZWVkYmFjayBidWZmZXJzCi0gICAgc2l6ZV90IG1BcHBsaWVkTnVtWEZCQmluZGluZ3M7Ci0gICAg
SUQzRDExQnVmZmVyICptQXBwbGllZFRGQnVmZmVyc1tnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RS
QU5TRk9STV9GRUVEQkFDS19CVUZGRVJTXTsgLy8gVHJhY2tzIHRoZSBjdXJyZW50IEQzRCBidWZm
ZXJzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gdXNlIGZvciBzdHJlYW1v
dXQKLSAgICBHTGludHB0ciBtQXBwbGllZFRGT2Zmc2V0c1tnbDo6SU1QTEVNRU5UQVRJT05fTUFY
X1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJTXTsgLy8gVHJhY2tzIHRoZSBjdXJyZW50IEdMLXNw
ZWNpZmllZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidWZmZXIgb2Zmc2V0cyB0byB0
cmFuc2Zvcm0gZmVlZGJhY2sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnVmZmVycwot
ICAgIFVJTlQgbUN1cnJlbnREM0RPZmZzZXRzW2dsOjpJTVBMRU1FTlRBVElPTl9NQVhfVFJBTlNG
T1JNX0ZFRURCQUNLX0JVRkZFUlNdOyAgLy8gVHJhY2tzIHRoZSBEM0QgYnVmZmVyIG9mZnNldHMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBtYXkgZGlmZmVyIGZyb20gR0xzLCBk
dWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGRpZmZlcmVudCBhcHBlbmQgYmVoYXZp
b3IKKyAgICB1aW50cHRyX3QgbUFwcGxpZWRURk9iamVjdDsKIAogICAgIC8vIEN1cnJlbnRseSBh
cHBsaWVkIHNoYWRlcnMKICAgICB1aW50cHRyX3QgbUFwcGxpZWRWZXJ0ZXhTaGFkZXI7CkBAIC00
ODIsMTMgKzU1NCwxOCBAQAogICAgIElEWEdJQWRhcHRlciAqbUR4Z2lBZGFwdGVyOwogICAgIERY
R0lfQURBUFRFUl9ERVNDIG1BZGFwdGVyRGVzY3JpcHRpb247CiAgICAgY2hhciBtRGVzY3JpcHRp
b25bMTI4XTsKLSAgICBEWEdJRmFjdG9yeSAqbUR4Z2lGYWN0b3J5OworICAgIElEWEdJRmFjdG9y
eSAqbUR4Z2lGYWN0b3J5OwogICAgIElEM0QxMURlYnVnICptRGVidWc7CiAKICAgICBzdGQ6OnZl
Y3RvcjxHTHVpbnQ+IG1TY3JhdGNoSW5kZXhEYXRhQnVmZmVyOwogCisgICAgTWVtb3J5QnVmZmVy
IG1TY3JhdGNoTWVtb3J5QnVmZmVyOworICAgIHVuc2lnbmVkIGludCBtU2NyYXRjaE1lbW9yeUJ1
ZmZlclJlc2V0Q291bnRlcjsKKworICAgIGdsOjpEZWJ1Z0Fubm90YXRvciAqbUFubm90YXRvcjsK
KwogICAgIG11dGFibGUgT3B0aW9uYWw8Ym9vbD4gbVN1cHBvcnRzU2hhcmVIYW5kbGVzOwogfTsK
IAotfQorfSAgLy8gbmFtZXNwYWNlIHJ4CiAjZW5kaWYgLy8gTElCQU5HTEVfUkVOREVSRVJfRDNE
X0QzRDExX1JFTkRFUkVSMTFfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RhdGVNYW5hZ2VyMTEuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvU3RhdGVNYW5hZ2VyMTEuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0YXRlTWFuYWdlcjEx
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEsNiArMTEsNyBAQAogI2luY2x1ZGUgImNvbW1vbi9C
aXRTZXRJdGVyYXRvci5oIgogI2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKICNpbmNsdWRl
ICJsaWJBTkdMRS9RdWVyeS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1ZlcnRleEFycmF5LmgiCiAj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ZyYW1lYnVmZmVyMTEuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyZXIxMS5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJUYXJnZXQxMS5oIgpAQCAtMjMs
NyArMjQsNyBAQAogYm9vbCBJbWFnZUluZGV4Q29uZmxpY3RzV2l0aFNSVihjb25zdCBnbDo6SW1h
Z2VJbmRleCAmaW5kZXgsIEQzRDExX1NIQURFUl9SRVNPVVJDRV9WSUVXX0RFU0MgZGVzYykKIHsK
ICAgICB1bnNpZ25lZCBtaXBMZXZlbCAgID0gaW5kZXgubWlwSW5kZXg7Ci0gICAgdW5zaWduZWQg
bGF5ZXJJbmRleCA9IGluZGV4LmxheWVySW5kZXg7CisgICAgR0xpbnQgbGF5ZXJJbmRleCAgICA9
IGluZGV4LmxheWVySW5kZXg7CiAgICAgR0xlbnVtIHR5cGUgICAgICAgICA9IGluZGV4LnR5cGU7
CiAKICAgICBzd2l0Y2ggKGRlc2MuVmlld0RpbWVuc2lvbikKQEAgLTMwLDggKzMxLDkgQEAKICAg
ICB7CiAgICAgICAgIGNhc2UgRDNEMTFfU1JWX0RJTUVOU0lPTl9URVhUVVJFMkQ6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHVuc2lnbmVkIG1heFNydk1pcCA9IGRlc2MuVGV4dHVyZTJELk1pcExl
dmVscyArIGRlc2MuVGV4dHVyZTJELk1vc3REZXRhaWxlZE1pcDsKLSAgICAgICAgICAgIG1heFNy
dk1pcCAgICAgICAgICA9IChkZXNjLlRleHR1cmUyRC5NaXBMZXZlbHMgPT0gLTEpID8gSU5UX01B
WCA6IG1heFNydk1pcDsKKyAgICAgICAgICAgIGJvb2wgYWxsTGV2ZWxzICAgICAgICAgPSAoZGVz
Yy5UZXh0dXJlMkQuTWlwTGV2ZWxzID09IHN0ZDo6bnVtZXJpY19saW1pdHM8VUlOVD46Om1heCgp
KTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBtYXhTcnZNaXAgPSBkZXNjLlRleHR1cmUyRC5N
aXBMZXZlbHMgKyBkZXNjLlRleHR1cmUyRC5Nb3N0RGV0YWlsZWRNaXA7CisgICAgICAgICAgICBt
YXhTcnZNaXAgICAgICAgICAgICAgID0gYWxsTGV2ZWxzID8gSU5UX01BWCA6IG1heFNydk1pcDsK
IAogICAgICAgICAgICAgdW5zaWduZWQgbWlwTWluID0gaW5kZXgubWlwSW5kZXg7CiAgICAgICAg
ICAgICB1bnNpZ25lZCBtaXBNYXggPSAobGF5ZXJJbmRleCA9PSAtMSkgPyBJTlRfTUFYIDogbGF5
ZXJJbmRleDsKQEAgLTQzLDkgKzQ1LDEwIEBACiAKICAgICAgICAgY2FzZSBEM0QxMV9TUlZfRElN
RU5TSU9OX1RFWFRVUkUyREFSUkFZOgogICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBt
YXhTcnZNaXAgPQorICAgICAgICAgICAgYm9vbCBhbGxMZXZlbHMgPSAoZGVzYy5UZXh0dXJlMkRB
cnJheS5NaXBMZXZlbHMgPT0gc3RkOjpudW1lcmljX2xpbWl0czxVSU5UPjo6bWF4KCkpOworICAg
ICAgICAgICAgdW5zaWduZWQgaW50IG1heFNydk1pcCA9CiAgICAgICAgICAgICAgICAgZGVzYy5U
ZXh0dXJlMkRBcnJheS5NaXBMZXZlbHMgKyBkZXNjLlRleHR1cmUyREFycmF5Lk1vc3REZXRhaWxl
ZE1pcDsKLSAgICAgICAgICAgIG1heFNydk1pcCA9IChkZXNjLlRleHR1cmUyREFycmF5Lk1pcExl
dmVscyA9PSAtMSkgPyBJTlRfTUFYIDogbWF4U3J2TWlwOworICAgICAgICAgICAgbWF4U3J2TWlw
ID0gYWxsTGV2ZWxzID8gSU5UX01BWCA6IG1heFNydk1pcDsKIAogICAgICAgICAgICAgdW5zaWdu
ZWQgbWF4U2xpY2UgPSBkZXNjLlRleHR1cmUyREFycmF5LkZpcnN0QXJyYXlTbGljZSArIGRlc2Mu
VGV4dHVyZTJEQXJyYXkuQXJyYXlTaXplOwogCkBAIC01MiwxMyArNTUsMTUgQEAKICAgICAgICAg
ICAgIC8vIEN1YmUgbWFwcyBjYW4gYmUgbWFwcGVkIHRvIFRleHR1cmUyREFycmF5IFNSVnMKICAg
ICAgICAgICAgIHJldHVybiAodHlwZSA9PSBHTF9URVhUVVJFXzJEX0FSUkFZIHx8IGdsOjpJc0N1
YmVNYXBUZXh0dXJlVGFyZ2V0KHR5cGUpKSAmJgogICAgICAgICAgICAgICAgICAgIGRlc2MuVGV4
dHVyZTJEQXJyYXkuTW9zdERldGFpbGVkTWlwIDw9IG1pcExldmVsICYmIG1pcExldmVsIDwgbWF4
U3J2TWlwICYmCi0gICAgICAgICAgICAgICAgICAgZGVzYy5UZXh0dXJlMkRBcnJheS5GaXJzdEFy
cmF5U2xpY2UgPD0gbGF5ZXJJbmRleCAmJiBsYXllckluZGV4IDwgbWF4U2xpY2U7CisgICAgICAg
ICAgICAgICAgICAgZGVzYy5UZXh0dXJlMkRBcnJheS5GaXJzdEFycmF5U2xpY2UgPD0gc3RhdGlj
X2Nhc3Q8VUlOVD4obGF5ZXJJbmRleCkgJiYKKyAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxVSU5UPihsYXllckluZGV4KSA8IG1heFNsaWNlOwogICAgICAgICB9CiAKICAgICAgICAgY2Fz
ZSBEM0QxMV9TUlZfRElNRU5TSU9OX1RFWFRVUkVDVUJFOgogICAgICAgICB7Ci0gICAgICAgICAg
ICB1bnNpZ25lZCBtYXhTcnZNaXAgPSBkZXNjLlRleHR1cmVDdWJlLk1pcExldmVscyArIGRlc2Mu
VGV4dHVyZUN1YmUuTW9zdERldGFpbGVkTWlwOwotICAgICAgICAgICAgbWF4U3J2TWlwICAgICAg
ICAgID0gKGRlc2MuVGV4dHVyZUN1YmUuTWlwTGV2ZWxzID09IC0xKSA/IElOVF9NQVggOiBtYXhT
cnZNaXA7CisgICAgICAgICAgICBib29sIGFsbExldmVscyA9IChkZXNjLlRleHR1cmVDdWJlLk1p
cExldmVscyA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPFVJTlQ+OjptYXgoKSk7CisgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgbWF4U3J2TWlwID0gZGVzYy5UZXh0dXJlQ3ViZS5NaXBMZXZlbHMgKyBk
ZXNjLlRleHR1cmVDdWJlLk1vc3REZXRhaWxlZE1pcDsKKyAgICAgICAgICAgIG1heFNydk1pcCAg
ICAgICAgICAgICAgPSBhbGxMZXZlbHMgPyBJTlRfTUFYIDogbWF4U3J2TWlwOwogCiAgICAgICAg
ICAgICByZXR1cm4gZ2w6OklzQ3ViZU1hcFRleHR1cmVUYXJnZXQodHlwZSkgJiYKICAgICAgICAg
ICAgICAgICAgICBkZXNjLlRleHR1cmVDdWJlLk1vc3REZXRhaWxlZE1pcCA8PSBtaXBMZXZlbCAm
JiBtaXBMZXZlbCA8IG1heFNydk1pcDsKQEAgLTY2LDggKzcxLDkgQEAKIAogICAgICAgICBjYXNl
IEQzRDExX1NSVl9ESU1FTlNJT05fVEVYVFVSRTNEOgogICAgICAgICB7Ci0gICAgICAgICAgICB1
bnNpZ25lZCBtYXhTcnZNaXAgPSBkZXNjLlRleHR1cmUzRC5NaXBMZXZlbHMgKyBkZXNjLlRleHR1
cmUzRC5Nb3N0RGV0YWlsZWRNaXA7Ci0gICAgICAgICAgICBtYXhTcnZNaXAgICAgICAgICAgPSAo
ZGVzYy5UZXh0dXJlM0QuTWlwTGV2ZWxzID09IC0xKSA/IElOVF9NQVggOiBtYXhTcnZNaXA7Cisg
ICAgICAgICAgICBib29sIGFsbExldmVscyAgICAgICAgID0gKGRlc2MuVGV4dHVyZTNELk1pcExl
dmVscyA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPFVJTlQ+OjptYXgoKSk7CisgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgbWF4U3J2TWlwID0gZGVzYy5UZXh0dXJlM0QuTWlwTGV2ZWxzICsgZGVzYy5U
ZXh0dXJlM0QuTW9zdERldGFpbGVkTWlwOworICAgICAgICAgICAgbWF4U3J2TWlwICAgICAgICAg
ICAgICA9IGFsbExldmVscyA/IElOVF9NQVggOiBtYXhTcnZNaXA7CiAKICAgICAgICAgICAgIHJl
dHVybiB0eXBlID09IEdMX1RFWFRVUkVfM0QgJiYgZGVzYy5UZXh0dXJlM0QuTW9zdERldGFpbGVk
TWlwIDw9IG1pcExldmVsICYmCiAgICAgICAgICAgICAgICAgICAgbWlwTGV2ZWwgPCBtYXhTcnZN
aXA7CkBAIC0xMzAsNyArMTM2LDggQEAKIH0KIAogc3RhdGljIGNvbnN0IEdMZW51bSBRdWVyeVR5
cGVzW10gPSB7R0xfQU5ZX1NBTVBMRVNfUEFTU0VELCBHTF9BTllfU0FNUExFU19QQVNTRURfQ09O
U0VSVkFUSVZFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVFJBTlNG
T1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFTiwgR0xfVElNRV9FTEFQU0VEX0VYVH07Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tf
UFJJTUlUSVZFU19XUklUVEVOLCBHTF9USU1FX0VMQVBTRURfRVhULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfQ09NTUFORFNfQ09NUExFVEVEX0NIUk9NSVVNfTsKIAog
U3RhdGVNYW5hZ2VyMTE6OlN0YXRlTWFuYWdlcjExKFJlbmRlcmVyMTEgKnJlbmRlcmVyKQogICAg
IDogbVJlbmRlcmVyKHJlbmRlcmVyKSwKQEAgLTQ4NSwxNiArNDkyLDExIEBACiB7CiAgICAgaWYg
KCFtQmxlbmRTdGF0ZUlzRGlydHkgJiYgc2FtcGxlTWFzayA9PSBtQ3VyU2FtcGxlTWFzaykKICAg
ICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICByZXR1
cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiAKICAgICBJRDNEMTFCbGVuZFN0YXRlICpkeEJsZW5k
U3RhdGUgPSBudWxscHRyOwotICAgIGdsOjpFcnJvciBlcnJvciA9Ci0gICAgICAgIG1SZW5kZXJl
ci0+Z2V0U3RhdGVDYWNoZSgpLmdldEJsZW5kU3RhdGUoZnJhbWVidWZmZXIsIGJsZW5kU3RhdGUs
ICZkeEJsZW5kU3RhdGUpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAg
ICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShtUmVuZGVyZXItPmdldFN0YXRl
Q2FjaGUoKS5nZXRCbGVuZFN0YXRlKGZyYW1lYnVmZmVyLCBibGVuZFN0YXRlLCAmZHhCbGVuZFN0
YXRlKSk7CiAKICAgICBBU1NFUlQoZHhCbGVuZFN0YXRlICE9IG51bGxwdHIpOwogCkBAIC01MjUs
NyArNTI3LDcgQEAKIAogICAgIG1CbGVuZFN0YXRlSXNEaXJ0eSA9IGZhbHNlOwogCi0gICAgcmV0
dXJuIGVycm9yOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgU3Rh
dGVNYW5hZ2VyMTE6OnNldERlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0
ZSkKQEAgLTU0NSw3ICs1NDcsNyBAQAogICAgICAgICBkaXNhYmxlRGVwdGggPT0gbUN1ckRpc2Fi
bGVEZXB0aC52YWx1ZSgpICYmIG1DdXJEaXNhYmxlU3RlbmNpbC52YWxpZCgpICYmCiAgICAgICAg
IGRpc2FibGVTdGVuY2lsID09IG1DdXJEaXNhYmxlU3RlbmNpbC52YWx1ZSgpKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOwogICAgIH0KIAogICAgIGNvbnN0IGF1dG8gJmRlcHRoU3RlbmNpbFN0YXRlID0g
Z2xTdGF0ZS5nZXREZXB0aFN0ZW5jaWxTdGF0ZSgpOwpAQCAtNTY1LDEyICs1NjcsOCBAQAogICAg
ICAgICAgICAoZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbEJhY2tNYXNrICYgbWF4U3RlbmNpbCkp
OwogCiAgICAgSUQzRDExRGVwdGhTdGVuY2lsU3RhdGUgKmR4RGVwdGhTdGVuY2lsU3RhdGUgPSBO
VUxMOwotICAgIGdsOjpFcnJvciBlcnJvciA9IG1SZW5kZXJlci0+Z2V0U3RhdGVDYWNoZSgpLmdl
dERlcHRoU3RlbmNpbFN0YXRlKAotICAgICAgICBkZXB0aFN0ZW5jaWxTdGF0ZSwgZGlzYWJsZURl
cHRoLCBkaXNhYmxlU3RlbmNpbCwgJmR4RGVwdGhTdGVuY2lsU3RhdGUpOwotICAgIGlmIChlcnJv
ci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFO
R0xFX1RSWShtUmVuZGVyZXItPmdldFN0YXRlQ2FjaGUoKS5nZXREZXB0aFN0ZW5jaWxTdGF0ZSgK
KyAgICAgICAgZGVwdGhTdGVuY2lsU3RhdGUsIGRpc2FibGVEZXB0aCwgZGlzYWJsZVN0ZW5jaWws
ICZkeERlcHRoU3RlbmNpbFN0YXRlKSk7CiAKICAgICBBU1NFUlQoZHhEZXB0aFN0ZW5jaWxTdGF0
ZSk7CiAKQEAgLTU5NCw3ICs1OTIsNyBAQAogCiAgICAgbURlcHRoU3RlbmNpbFN0YXRlSXNEaXJ0
eSA9IGZhbHNlOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0
dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBTdGF0ZU1hbmFnZXIxMTo6c2V0UmFz
dGVyaXplclN0YXRlKGNvbnN0IGdsOjpSYXN0ZXJpemVyU3RhdGUgJnJhc3RlclN0YXRlKQpAQCAt
NjAzLDExICs2MDEsMTAgQEAKICAgICBpZiAoIW1SYXN0ZXJpemVyU3RhdGVJc0RpcnR5ICYmIHJh
c3RlclN0YXRlLnBvaW50RHJhd01vZGUgPT0gbUN1clJhc3RlclN0YXRlLnBvaW50RHJhd01vZGUg
JiYKICAgICAgICAgcmFzdGVyU3RhdGUubXVsdGlTYW1wbGUgPT0gbUN1clJhc3RlclN0YXRlLm11
bHRpU2FtcGxlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7
CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogICAgIH0KIAogICAgIElEM0QxMVJhc3Rl
cml6ZXJTdGF0ZSAqZHhSYXN0ZXJTdGF0ZSA9IG51bGxwdHI7Ci0gICAgZ2w6OkVycm9yIGVycm9y
KEdMX05PX0VSUk9SKTsKIAogICAgIGlmIChtQ3VyUHJlc2VudFBhdGhGYXN0RW5hYmxlZCkKICAg
ICB7CkBAIC02MjYsMjYgKzYyMywyMSBAQAogICAgICAgICAgICAgbW9kaWZpZWRSYXN0ZXJTdGF0
ZS5mcm9udEZhY2UgPSBHTF9DQ1c7CiAgICAgICAgIH0KIAotICAgICAgICBlcnJvciA9IG1SZW5k
ZXJlci0+Z2V0U3RhdGVDYWNoZSgpLmdldFJhc3Rlcml6ZXJTdGF0ZShtb2RpZmllZFJhc3RlclN0
YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtQ3VyU2Npc3NvckVuYWJsZWQsICZkeFJhc3RlclN0YXRlKTsKKyAgICAgICAg
QU5HTEVfVFJZKG1SZW5kZXJlci0+Z2V0U3RhdGVDYWNoZSgpLmdldFJhc3Rlcml6ZXJTdGF0ZSgK
KyAgICAgICAgICAgIG1vZGlmaWVkUmFzdGVyU3RhdGUsIG1DdXJTY2lzc29yRW5hYmxlZCwgJmR4
UmFzdGVyU3RhdGUpKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgZXJyb3IgPSBt
UmVuZGVyZXItPmdldFN0YXRlQ2FjaGUoKS5nZXRSYXN0ZXJpemVyU3RhdGUocmFzdGVyU3RhdGUs
IG1DdXJTY2lzc29yRW5hYmxlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmR4UmFzdGVyU3RhdGUpOworICAgICAgICBBTkdM
RV9UUlkobVJlbmRlcmVyLT5nZXRTdGF0ZUNhY2hlKCkuZ2V0UmFzdGVyaXplclN0YXRlKHJhc3Rl
clN0YXRlLCBtQ3VyU2Npc3NvckVuYWJsZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmR4UmFzdGVyU3RhdGUpKTsKICAg
ICB9CiAKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVy
cm9yOwotICAgIH0KLQogICAgIG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpLT5SU1NldFN0
YXRlKGR4UmFzdGVyU3RhdGUpOwogCiAgICAgbUN1clJhc3RlclN0YXRlICAgICAgICAgPSByYXN0
ZXJTdGF0ZTsKICAgICBtUmFzdGVyaXplclN0YXRlSXNEaXJ0eSA9IGZhbHNlOwogCi0gICAgcmV0
dXJuIGVycm9yOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiB2b2lkIFN0YXRlTWFu
YWdlcjExOjpzZXRTY2lzc29yUmVjdGFuZ2xlKGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNjaXNzb3Is
IGJvb2wgZW5hYmxlZCkKQEAgLTgzOSw5ICs4MzEsOSBAQAogICAgIG1DdXJyZW50UXVlcmllcy5l
cmFzZShxdWVyeSk7CiB9CiAKLWdsOjpFcnJvciBTdGF0ZU1hbmFnZXIxMTo6b25NYWtlQ3VycmVu
dChjb25zdCBnbDo6RGF0YSAmZGF0YSkKK2dsOjpFcnJvciBTdGF0ZU1hbmFnZXIxMTo6b25NYWtl
Q3VycmVudChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhKQogewotICAgIGNvbnN0IGdsOjpT
dGF0ZSAmc3RhdGUgPSAqZGF0YS5zdGF0ZTsKKyAgICBjb25zdCBnbDo6U3RhdGUgJnN0YXRlID0g
ZGF0YS5nZXRTdGF0ZSgpOwogCiAgICAgZm9yIChRdWVyeTExICpxdWVyeSA6IG1DdXJyZW50UXVl
cmllcykKICAgICB7CkBAIC04NjAsNyArODUyLDcgQEAKICAgICAgICAgfQogICAgIH0KIAotICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigp
OwogfQogCiB2b2lkIFN0YXRlTWFuYWdlcjExOjpzZXRTaGFkZXJSZXNvdXJjZShnbDo6U2FtcGxl
clR5cGUgc2hhZGVyVHlwZSwKQEAgLTg5NCw3ICs4ODYsNyBAQAogewogICAgIGlmIChyYW5nZVN0
YXJ0ID09IHJhbmdlRW5kKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19F
UlJPUik7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogICAgIH0KIAogICAgIGF1dG8g
JmN1cnJlbnRTUlZzID0gKHNhbXBsZXJUeXBlID09IGdsOjpTQU1QTEVSX1ZFUlRFWCA/IG1DdXJW
ZXJ0ZXhTUlZzIDogbUN1clBpeGVsU1JWcyk7CkBAIC05MDQsNyArODk2LDcgQEAKIAogICAgIGlm
IChjbGVhclJhbmdlLmVtcHR5KCkpCiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogCiAgICAg
YXV0byBkZXZpY2VDb250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CkBAIC05
MjYsNyArOTE4LDcgQEAKICAgICAgICAgY3VycmVudFNSVnMudXBkYXRlKHNhbXBsZXJJbmRleCwg
bnVsbHB0cik7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Cisg
ICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIHZvaWQgU3RhdGVNYW5hZ2VyMTE6OnVuc2V0
Q29uZmxpY3RpbmdTUlZzKGdsOjpTYW1wbGVyVHlwZSBzYW1wbGVyVHlwZSwKQEAgLTk3OSwxNCAr
OTcxLDEwIEBACiAgICAgbUN1cnJlbnRWYWx1ZUF0dHJpYnMuY2xlYXIoKTsKIH0KIAotZ2w6OkVy
cm9yIFN0YXRlTWFuYWdlcjExOjpzeW5jRnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVy
ICpmcmFtZWJ1ZmZlcikKK2dsOjpFcnJvciBTdGF0ZU1hbmFnZXIxMTo6c3luY0ZyYW1lYnVmZmVy
KGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIpCiB7Ci0gICAgY29uc3QgRnJhbWVidWZmZXIx
MSAqZnJhbWVidWZmZXIxMSA9IEdldEltcGxBczxGcmFtZWJ1ZmZlcjExPihmcmFtZWJ1ZmZlcik7
Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gZnJhbWVidWZmZXIxMS0+aW52YWxpZGF0ZVN3aXp6bGVz
KCk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJv
cjsKLSAgICB9CisgICAgRnJhbWVidWZmZXIxMSAqZnJhbWVidWZmZXIxMSA9IEdldEltcGxBczxG
cmFtZWJ1ZmZlcjExPihmcmFtZWJ1ZmZlcik7CisgICAgQU5HTEVfVFJZKGZyYW1lYnVmZmVyMTEt
Pm1hcmtBdHRhY2htZW50c0RpcnR5KCkpOwogCiAgICAgaWYgKGZyYW1lYnVmZmVyMTEtPmhhc0Fu
eUludGVybmFsRGlydHlCaXQoKSkKICAgICB7CkBAIC05OTYsNyArOTg0LDcgQEAKIAogICAgIGlm
ICghbVJlbmRlclRhcmdldElzRGlydHkpCiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX05PX0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogCiAg
ICAgbVJlbmRlclRhcmdldElzRGlydHkgPSBmYWxzZTsKQEAgLTEwMTAsNyArOTk4LDcgQEAKICAg
ICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUgPSBmcmFtZWJ1ZmZlci0+Z2V0Rmlyc3RDb2xv
cmJ1ZmZlcigpLT5nZXRTaXplKCk7CiAgICAgICAgIGlmIChzaXplLndpZHRoID09IDAgfHwgc2l6
ZS5oZWlnaHQgPT0gMCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9OT19FUlJPUik7CisgICAgICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICAgICAg
fQogICAgIH0KIApAQCAtMTA4Myw3ICsxMDcxLDcgQEAKICAgICB9CiAKICAgICAvLyBUT0RPKGpt
YWRpbGwpOiBVc2UgY29udGV4dCBjYXBzPwotICAgIFVJTlQgZHJhd0J1ZmZlcnMgPSBtUmVuZGVy
ZXItPmdldFJlbmRlcmVyQ2FwcygpLm1heERyYXdCdWZmZXJzOworICAgIFVJTlQgZHJhd0J1ZmZl
cnMgPSBtUmVuZGVyZXItPmdldE5hdGl2ZUNhcHMoKS5tYXhEcmF3QnVmZmVyczsKIAogICAgIC8v
IEFwcGx5IHRoZSByZW5kZXIgdGFyZ2V0IGFuZCBkZXB0aCBzdGVuY2lsCiAgICAgbVJlbmRlcmVy
LT5nZXREZXZpY2VDb250ZXh0KCktPk9NU2V0UmVuZGVyVGFyZ2V0cyhkcmF3QnVmZmVycywgZnJh
bWVidWZmZXJSVFZzLmRhdGEoKSwKQEAgLTEwOTQsNyArMTA4Miw3IEBACiAKICAgICBzZXRWaWV3
cG9ydEJvdW5kcyhyZW5kZXJUYXJnZXRXaWR0aCwgcmVuZGVyVGFyZ2V0SGVpZ2h0KTsKIAotICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigp
OwogfQogCiBnbDo6RXJyb3IgU3RhdGVNYW5hZ2VyMTE6OnVwZGF0ZUN1cnJlbnRWYWx1ZUF0dHJp
YnMoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwKQEAgLTExMTcsMTUgKzExMDUsMTEgQEAKICAgICAg
ICAgY3VycmVudFZhbHVlQXR0cmliLT5jdXJyZW50VmFsdWVUeXBlID0gY3VycmVudFZhbHVlLlR5
cGU7CiAgICAgICAgIGN1cnJlbnRWYWx1ZUF0dHJpYi0+YXR0cmlidXRlICAgICAgICA9ICZ2ZXJ0
ZXhBdHRyaWJ1dGVzW2F0dHJpYkluZGV4XTsKIAotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSB2
ZXJ0ZXhEYXRhTWFuYWdlci0+c3RvcmVDdXJyZW50VmFsdWUoY3VycmVudFZhbHVlLCBjdXJyZW50
VmFsdWVBdHRyaWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxzaXplX3Q+KGF0dHJpYkluZGV4KSk7Ci0g
ICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBBTkdMRV9UUlkodmVydGV4RGF0YU1hbmFnZXIt
PnN0b3JlQ3VycmVudFZhbHVlKGN1cnJlbnRWYWx1ZSwgY3VycmVudFZhbHVlQXR0cmliLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PHNpemVfdD4oYXR0cmliSW5kZXgpKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGNvbnN0
IHN0ZDo6dmVjdG9yPFRyYW5zbGF0ZWRBdHRyaWJ1dGU+ICZTdGF0ZU1hbmFnZXIxMTo6Z2V0Q3Vy
cmVudFZhbHVlQXR0cmlicygpIGNvbnN0CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0YXRlTWFuYWdlcjExLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9TdGF0ZU1hbmFnZXIxMS5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0YXRlTWFuYWdlcjEx
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyLDcgKzEyLDcgQEAKICNpbmNsdWRlIDxhcnJheT4KIAog
I2luY2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9EYXRh
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dFN0YXRlLmgiCiAjaW5jbHVkZSAibGliQU5H
TEUvU3RhdGUuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVy
U3RhdGVDYWNoZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5k
ZXJlcjExX3V0aWxzLmgiCkBAIC03Nyw3ICs3Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNydik7CiAgICAgZ2w6OkVycm9yIGNsZWFy
VGV4dHVyZXMoZ2w6OlNhbXBsZXJUeXBlIHNhbXBsZXJUeXBlLCBzaXplX3QgcmFuZ2VTdGFydCwg
c2l6ZV90IHJhbmdlRW5kKTsKIAotICAgIGdsOjpFcnJvciBzeW5jRnJhbWVidWZmZXIoY29uc3Qg
Z2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlcik7CisgICAgZ2w6OkVycm9yIHN5bmNGcmFtZWJ1
ZmZlcihnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyKTsKIAogICAgIHZvaWQgaW52YWxpZGF0
ZVJlbmRlclRhcmdldCgpOwogICAgIHZvaWQgaW52YWxpZGF0ZUJvdW5kVmlld3MoKTsKQEAgLTkw
LDcgKzkwLDcgQEAKIAogICAgIHZvaWQgb25CZWdpblF1ZXJ5KFF1ZXJ5MTEgKnF1ZXJ5KTsKICAg
ICB2b2lkIG9uRGVsZXRlUXVlcnlPYmplY3QoUXVlcnkxMSAqcXVlcnkpOwotICAgIGdsOjpFcnJv
ciBvbk1ha2VDdXJyZW50KGNvbnN0IGdsOjpEYXRhICZkYXRhKTsKKyAgICBnbDo6RXJyb3Igb25N
YWtlQ3VycmVudChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhKTsKIAogICAgIGdsOjpFcnJv
ciB1cGRhdGVDdXJyZW50VmFsdWVBdHRyaWJzKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVydGV4RGF0YU1hbmFnZXIgKnZl
cnRleERhdGFNYW5hZ2VyKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RyZWFtMTEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RyZWFt
MTEuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0cmVhbTExLmNwcAkobm9uZXhpc3RlbnQpCkBA
IC0xLDI2ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBTdHJlYW0xMS5jcHA6IERlZmluZXMg
dGhlIHJ4OjpTdHJlYW0xMSBjbGFzcyB3aGljaCBpbXBsZW1lbnRzIHJ4OjpTdHJlYW1JbXBsLgot
Ci0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0cmVhbTExLmgiCi0KLSNp
bmNsdWRlICJjb21tb24vdXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL1JlbmRlcmVyMTEuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvcmVuZGVyZXIxMV91dGlscy5oIgotCi1uYW1lc3BhY2UgcngKLXsKLQotU3RyZWFtMTE6
OlN0cmVhbTExKFJlbmRlcmVyMTEgKnJlbmRlcmVyKSA6IG1SZW5kZXJlcihyZW5kZXJlcikKLXsK
LSAgICBVTlVTRURfVkFSSUFCTEUobVJlbmRlcmVyKTsKLX0KLQotU3RyZWFtMTE6On5TdHJlYW0x
MSgpCi17Ci19Ci19ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RyZWFtMTEuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL1N0cmVhbTExLmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RyZWFtMTEuaAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDI5ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
LS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBTdHJlYW0xMS5oOiBEZWZp
bmVzIHRoZSByeDo6U3RyZWFtMTEgY2xhc3Mgd2hpY2ggaW1wbGVtZW50cyByeDo6U3RyZWFtSW1w
bC4KLQotI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfU1RSRUFNMTFfSF8KLSNk
ZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfRDNEX0QzRDExX1NUUkVBTTExX0hfCi0KLSNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9TdHJlYW1JbXBsLmgiCi0KLW5hbWVzcGFjZSByeAotewotY2xh
c3MgUmVuZGVyZXIxMTsKLQotY2xhc3MgU3RyZWFtMTEgOiBwdWJsaWMgU3RyZWFtSW1wbAotewot
ICBwdWJsaWM6Ci0gICAgU3RyZWFtMTEoUmVuZGVyZXIxMSAqcmVuZGVyZXIpOwotICAgIH5TdHJl
YW0xMSgpIG92ZXJyaWRlOwotCi0gIHByaXZhdGU6Ci0gICAgUmVuZGVyZXIxMSAqbVJlbmRlcmVy
OwotfTsKLX0gIC8vIG5hbWVzcGFjZSByeAotCi0jZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVS
X0QzRF9EM0QxMV9TVFJFQU0xMV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdHJlYW1Qcm9kdWNlck5WMTIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvU3RyZWFtUHJvZHVjZXJOVjEyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0cmVhbVBy
b2R1Y2VyTlYxMi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDIgQEAKKy8vCisvLyBD
b3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisvLworCisvLyBTdHJlYW1Qcm9kdWNlck5WMTIuY3BwOiBJbXBsZW1lbnRzIHRoZSBzdHJlYW0g
cHJvZHVjZXIgZm9yIE5WMTIgdGV4dHVyZXMKKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9TdHJlYW1Qcm9kdWNlck5WMTIuaCIKKworI2luY2x1ZGUgImNvbW1vbi91dGls
aXRpZXMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyZXIx
MS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0
aWxzLmgiCisKK25hbWVzcGFjZSByeAoreworCitTdHJlYW1Qcm9kdWNlck5WMTI6OlN0cmVhbVBy
b2R1Y2VyTlYxMihSZW5kZXJlcjExICpyZW5kZXJlcikKKyAgICA6IG1SZW5kZXJlcihyZW5kZXJl
ciksIG1UZXh0dXJlKG51bGxwdHIpLCBtQXJyYXlTbGljZSgwKSwgbVRleHR1cmVXaWR0aCgwKSwg
bVRleHR1cmVIZWlnaHQoMCkKK3sKK30KKworU3RyZWFtUHJvZHVjZXJOVjEyOjp+U3RyZWFtUHJv
ZHVjZXJOVjEyKCkKK3sKKyAgICBTYWZlUmVsZWFzZShtVGV4dHVyZSk7Cit9CisKK2VnbDo6RXJy
b3IgU3RyZWFtUHJvZHVjZXJOVjEyOjp2YWxpZGF0ZUQzRE5WMTJUZXh0dXJlKHZvaWQgKnBvaW50
ZXIpIGNvbnN0Cit7CisgICAgSUQzRDExVGV4dHVyZTJEICp0ZXh0dXJlRDNEID0gc3RhdGljX2Nh
c3Q8SUQzRDExVGV4dHVyZTJEICo+KHBvaW50ZXIpOworCisgICAgLy8gQ2hlY2sgdGhhdCB0aGUg
dGV4dHVyZSBvcmlnaW5hdGVkIGZyb20gb3VyIGRldmljZQorICAgIElEM0QxMURldmljZSAqZGV2
aWNlOworICAgIHRleHR1cmVEM0QtPkdldERldmljZSgmZGV2aWNlKTsKKyAgICBpZiAoZGV2aWNl
ICE9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCkpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjpF
cnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgIlRleHR1cmUgbm90IGNyZWF0ZWQgb24gQU5HTEUgRDNE
IGRldmljZSIpOworICAgIH0KKworICAgIC8vIEdldCB0aGUgZGVzY3JpcHRpb24gYW5kIHZhbGlk
YXRlIGl0CisgICAgRDNEMTFfVEVYVFVSRTJEX0RFU0MgZGVzYzsKKyAgICB0ZXh0dXJlRDNELT5H
ZXREZXNjKCZkZXNjKTsKKyAgICBpZiAoZGVzYy5Gb3JtYXQgIT0gRFhHSV9GT1JNQVRfTlYxMikK
KyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfUEFSQU1FVEVSLCAiVGV4
dHVyZSBmb3JtYXQgbm90IERYR0lfRk9STUFUX05WMTIiKTsKKyAgICB9CisgICAgaWYgKGRlc2Mu
V2lkdGggPCAxIHx8IGRlc2MuSGVpZ2h0IDwgMSkKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6
OkVycm9yKEVHTF9CQURfUEFSQU1FVEVSLCAiVGV4dHVyZSBpcyBvZiBzaXplIDAiKTsKKyAgICB9
CisgICAgaWYgKChkZXNjLldpZHRoICUgMikgIT0gMCB8fCAoZGVzYy5IZWlnaHQgJSAyKSAhPSAw
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsICJU
ZXh0dXJlIGRpbWVuc2lvbnMgYXJlIG5vdCBldmVuIik7CisgICAgfQorICAgIHJldHVybiBlZ2w6
OkVycm9yKEVHTF9TVUNDRVNTKTsKK30KKwordm9pZCBTdHJlYW1Qcm9kdWNlck5WMTI6OnBvc3RE
M0ROVjEyVGV4dHVyZSh2b2lkICpwb2ludGVyLCBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0
cmlidXRlcykKK3sKKyAgICBBU1NFUlQocG9pbnRlciAhPSBudWxscHRyKTsKKyAgICBJRDNEMTFU
ZXh0dXJlMkQgKnRleHR1cmVEM0QgPSBzdGF0aWNfY2FzdDxJRDNEMTFUZXh0dXJlMkQgKj4ocG9p
bnRlcik7CisKKyAgICAvLyBDaGVjayB0aGF0IHRoZSB0ZXh0dXJlIG9yaWdpbmF0ZWQgZnJvbSBv
dXIgZGV2aWNlCisgICAgSUQzRDExRGV2aWNlICpkZXZpY2U7CisgICAgdGV4dHVyZUQzRC0+R2V0
RGV2aWNlKCZkZXZpY2UpOworCisgICAgLy8gR2V0IHRoZSBkZXNjcmlwdGlvbgorICAgIEQzRDEx
X1RFWFRVUkUyRF9ERVNDIGRlc2M7CisgICAgdGV4dHVyZUQzRC0+R2V0RGVzYygmZGVzYyk7CisK
KyAgICAvLyBSZWxlYXNlIHRoZSBwcmV2aW91cyB0ZXh0dXJlIGlmIHRoZXJlIGlzIG9uZQorICAg
IFNhZmVSZWxlYXNlKG1UZXh0dXJlKTsKKworICAgIG1UZXh0dXJlID0gdGV4dHVyZUQzRDsKKyAg
ICBtVGV4dHVyZS0+QWRkUmVmKCk7CisgICAgbVRleHR1cmVXaWR0aCAgPSBkZXNjLldpZHRoOwor
ICAgIG1UZXh0dXJlSGVpZ2h0ID0gZGVzYy5IZWlnaHQ7CisgICAgbUFycmF5U2xpY2UgICAgPSBz
dGF0aWNfY2FzdDxVSU5UPihhdHRyaWJ1dGVzLmdldChFR0xfRDNEX1RFWFRVUkVfU1VCUkVTT1VS
Q0VfSURfQU5HTEUsIDApKTsKK30KKworZWdsOjpTdHJlYW06OkdMVGV4dHVyZURlc2NyaXB0aW9u
IFN0cmVhbVByb2R1Y2VyTlYxMjo6Z2V0R0xGcmFtZURlc2NyaXB0aW9uKGludCBwbGFuZUluZGV4
KQoreworICAgIC8vIFRoZSBVViBwbGFuZSBvZiBOVjEyIHRleHR1cmVzIGhhcyBoYWxmIHRoZSB3
aWR0aC9oZWlnaHQgb2YgdGhlIFkgcGxhbmUKKyAgICBlZ2w6OlN0cmVhbTo6R0xUZXh0dXJlRGVz
Y3JpcHRpb24gZGVzYzsKKyAgICBkZXNjLndpZHRoICAgICAgICAgID0gKHBsYW5lSW5kZXggPT0g
MCkgPyBtVGV4dHVyZVdpZHRoIDogKG1UZXh0dXJlV2lkdGggLyAyKTsKKyAgICBkZXNjLmhlaWdo
dCAgICAgICAgID0gKHBsYW5lSW5kZXggPT0gMCkgPyBtVGV4dHVyZUhlaWdodCA6IChtVGV4dHVy
ZUhlaWdodCAvIDIpOworICAgIGRlc2MuaW50ZXJuYWxGb3JtYXQgPSAocGxhbmVJbmRleCA9PSAw
KSA/IEdMX1I4IDogR0xfUkc4OworICAgIGRlc2MubWlwTGV2ZWxzICAgICAgPSAwOworICAgIHJl
dHVybiBkZXNjOworfQorCitJRDNEMTFUZXh0dXJlMkQgKlN0cmVhbVByb2R1Y2VyTlYxMjo6Z2V0
RDNEVGV4dHVyZSgpCit7CisgICAgcmV0dXJuIG1UZXh0dXJlOworfQorCitVSU5UIFN0cmVhbVBy
b2R1Y2VyTlYxMjo6Z2V0QXJyYXlTbGljZSgpCit7CisgICAgcmV0dXJuIG1BcnJheVNsaWNlOwor
fQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RyZWFtUHJvZHVjZXJOVjEyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9TdHJlYW1Qcm9kdWNlck5WMTIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0cmVhbVByb2R1
Y2VyTlYxMi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8vCisvLyBDb3B5cmln
aHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLwor
CisvLyBTdHJlYW1Qcm9kdWNlck5WMTIuaDogSW50ZXJmYWNlIGZvciBhIE5WMTIgdGV4dHVyZSBz
dHJlYW0gcHJvZHVjZXIKKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfU1RS
RUFNMTFfSF8KKyNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfRDNEX0QzRDExX1NUUkVBTTExX0hf
CisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9TdHJlYW1Qcm9kdWNlckltcGwuaCIKKwor
bmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJlcjExOworCitjbGFzcyBTdHJlYW1Qcm9kdWNl
ck5WMTIgOiBwdWJsaWMgU3RyZWFtUHJvZHVjZXJJbXBsCit7CisgIHB1YmxpYzoKKyAgICBTdHJl
YW1Qcm9kdWNlck5WMTIoUmVuZGVyZXIxMSAqcmVuZGVyZXIpOworICAgIH5TdHJlYW1Qcm9kdWNl
ck5WMTIoKSBvdmVycmlkZTsKKworICAgIGVnbDo6RXJyb3IgdmFsaWRhdGVEM0ROVjEyVGV4dHVy
ZSh2b2lkICpwb2ludGVyKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHBvc3REM0ROVjEyVGV4
dHVyZSh2b2lkICpwb2ludGVyLCBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlidXRlcykg
b3ZlcnJpZGU7CisgICAgZWdsOjpTdHJlYW06OkdMVGV4dHVyZURlc2NyaXB0aW9uIGdldEdMRnJh
bWVEZXNjcmlwdGlvbihpbnQgcGxhbmVJbmRleCkgb3ZlcnJpZGU7CisKKyAgICAvLyBHZXRzIGEg
cG9pbnRlciB0byB0aGUgaW50ZXJuYWwgRDNEIHRleHR1cmUKKyAgICBJRDNEMTFUZXh0dXJlMkQg
KmdldEQzRFRleHR1cmUoKTsKKworICAgIC8vIEdldHMgdGhlIHNsaWNlIGluZGV4IGZvciB0aGUg
RDNEIHRleHR1cmUgdGhhdCB0aGUgZnJhbWUgaXMgaW4KKyAgICBVSU5UIGdldEFycmF5U2xpY2Uo
KTsKKworICBwcml2YXRlOgorICAgIFJlbmRlcmVyMTEgKm1SZW5kZXJlcjsKKworICAgIElEM0Qx
MVRleHR1cmUyRCAqbVRleHR1cmU7CisgICAgVUlOVCBtQXJyYXlTbGljZTsKKyAgICBVSU5UIG1U
ZXh0dXJlV2lkdGg7CisgICAgVUlOVCBtVGV4dHVyZUhlaWdodDsKK307Cit9ICAvLyBuYW1lc3Bh
Y2UgcngKKworI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfU1RSRUFNMTFf
SF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvU3dhcENoYWluMTEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3dhcENoYWluMTEuY3BwCShy
ZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL1N3YXBDaGFpbjExLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIs
NyArMTIsNyBAQAogCiAjaW5jbHVkZSAibGliQU5HTEUvZmVhdHVyZXMuaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZm9ybWF0dXRpbHMxMS5oIgotI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9OYXRpdmVXaW5kb3cuaCIKKyNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvTmF0aXZlV2luZG93MTEuaCIKICNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyZXIxMS5oIgogI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlLmgiCkBAIC0zMywyMiAr
MzMsMjggQEAKIAogbmFtZXNwYWNlCiB7Ci1ib29sIE5lZWRzT2Zmc2NyZWVuVGV4dHVyZShSZW5k
ZXJlcjExICpyZW5kZXJlciwgTmF0aXZlV2luZG93IG5hdGl2ZVdpbmRvdywgRUdMaW50IG9yaWVu
dGF0aW9uKQorLy8gVG8gYXZvaWQgb3ZlcmZsb3cgaW4gUVBDIHRvIE1pY3Jvc2Vjb25kcyBjYWxj
dWxhdGlvbnMsIHNpbmNlIHdlIG11bHRpcGx5CisvLyBieSBrTWljcm9zZWNvbmRzUGVyU2Vjb25k
LCB0aGVuIHRoZSBRUEMgdmFsdWUgc2hvdWxkIG5vdCBleGNlZWQKKy8vICgyXjYzIC0gMSkgLyAx
RTYuIElmIGl0IGV4Y2VlZHMgdGhhdCB0aHJlc2hvbGQsIHdlIGRpdmlkZSB0aGVuIG11bHRpcGx5
Lgorc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IGtRUENPdmVyZmxvd1RocmVzaG9sZCAgPSAweDg2
MzdCRDA1QUY3Oworc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IGtNaWNyb3NlY29uZHNQZXJTZWNv
bmQgPSAxMDAwMDAwOworCitib29sIE5lZWRzT2Zmc2NyZWVuVGV4dHVyZShSZW5kZXJlcjExICpy
ZW5kZXJlciwgTmF0aXZlV2luZG93MTEgKm5hdGl2ZVdpbmRvdywgRUdMaW50IG9yaWVudGF0aW9u
KQogewogICAgIC8vIFdlIGRvbid0IG5lZWQgYW4gb2Zmc2NyZWVuIHRleHR1cmUgaWYgZWl0aGVy
IG9yaWVudGF0aW9uID0gSU5WRVJUX1ksCiAgICAgLy8gb3IgcHJlc2VudCBwYXRoIGZhc3QgaXMg
ZW5hYmxlZCBhbmQgd2UncmUgbm90IHJlbmRlcmluZyBvbnRvIGFuIG9mZnNjcmVlbiBzdXJmYWNl
LgogICAgIHJldHVybiBvcmllbnRhdGlvbiAhPSBFR0xfU1VSRkFDRV9PUklFTlRBVElPTl9JTlZF
UlRfWV9BTkdMRSAmJgotICAgICAgICAgICAhKHJlbmRlcmVyLT5wcmVzZW50UGF0aEZhc3RFbmFi
bGVkKCkgJiYgbmF0aXZlV2luZG93LmdldE5hdGl2ZVdpbmRvdygpKTsKKyAgICAgICAgICAgIShy
ZW5kZXJlci0+cHJlc2VudFBhdGhGYXN0RW5hYmxlZCgpICYmIG5hdGl2ZVdpbmRvdy0+Z2V0TmF0
aXZlV2luZG93KCkpOwogfQogfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCiBTd2FwQ2hhaW4x
MTo6U3dhcENoYWluMTEoUmVuZGVyZXIxMSAqcmVuZGVyZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgTmF0aXZlV2luZG93IG5hdGl2ZVdpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBOYXRpdmVXaW5kb3cxMSAqbmF0aXZlV2luZG93LAogICAgICAgICAgICAgICAgICAgICAgICAg
IEhBTkRMRSBzaGFyZUhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYmFj
a0J1ZmZlckZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVwdGhCdWZm
ZXJGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IG9yaWVudGF0aW9uKQot
ICAgIDogU3dhcENoYWluRDNEKG5hdGl2ZVdpbmRvdywgc2hhcmVIYW5kbGUsIGJhY2tCdWZmZXJG
b3JtYXQsIGRlcHRoQnVmZmVyRm9ybWF0KSwKKyAgICA6IFN3YXBDaGFpbkQzRChzaGFyZUhhbmRs
ZSwgYmFja0J1ZmZlckZvcm1hdCwgZGVwdGhCdWZmZXJGb3JtYXQpLAogICAgICAgbVJlbmRlcmVy
KHJlbmRlcmVyKSwKICAgICAgIG1XaWR0aCgtMSksCiAgICAgICBtSGVpZ2h0KC0xKSwKQEAgLTU2
LDYgKzYyLDcgQEAKICAgICAgIG1BcHBDcmVhdGVkU2hhcmVIYW5kbGUobVNoYXJlSGFuZGxlICE9
IG51bGxwdHIpLAogICAgICAgbVN3YXBJbnRlcnZhbCgwKSwKICAgICAgIG1QYXNzVGhyb3VnaFJl
c291cmNlc0luaXQoZmFsc2UpLAorICAgICAgbU5hdGl2ZVdpbmRvdyhuYXRpdmVXaW5kb3cpLAog
ICAgICAgbUZpcnN0U3dhcCh0cnVlKSwKICAgICAgIG1Td2FwQ2hhaW4obnVsbHB0ciksCiAgICAg
ICBtU3dhcENoYWluMShudWxscHRyKSwKQEAgLTgxLDYgKzg4LDE0IEBACiB7CiAgICAgLy8gU2Fu
aXR5IGNoZWNrIHRoYXQgaWYgcHJlc2VudCBwYXRoIGZhc3QgaXMgYWN0aXZlIHRoZW4gd2UncmUg
dXNpbmcgdGhlIGRlZmF1bHQgb3JpZW50YXRpb24KICAgICBBU1NFUlQoIW1SZW5kZXJlci0+cHJl
c2VudFBhdGhGYXN0RW5hYmxlZCgpIHx8IG9yaWVudGF0aW9uID09IDApOworCisgICAgLy8gR2V0
IHRoZSBwZXJmb3JtYW5jZSBjb3VudGVyCisgICAgTEFSR0VfSU5URUdFUiBjb3VudGVyRnJlcWVu
Y3kgPSB7fTsKKyAgICBCT09MIHN1Y2Nlc3MgICAgICAgICAgICAgICAgICA9IFF1ZXJ5UGVyZm9y
bWFuY2VGcmVxdWVuY3koJmNvdW50ZXJGcmVxZW5jeSk7CisgICAgVU5VU0VEX0FTU0VSVElPTl9W
QVJJQUJMRShzdWNjZXNzKTsKKyAgICBBU1NFUlQoc3VjY2Vzcyk7CisKKyAgICBtUVBDRnJlcXVl
bmN5ID0gY291bnRlckZyZXFlbmN5LlF1YWRQYXJ0OwogfQogCiBTd2FwQ2hhaW4xMTo6flN3YXBD
aGFpbjExKCkKQEAgLTE3Niw3ICsxOTEsOCBAQAogCiAgICAgcmVsZWFzZU9mZnNjcmVlbkNvbG9y
QnVmZmVyKCk7CiAKLSAgICBjb25zdCBkM2QxMTo6VGV4dHVyZUZvcm1hdCAmYmFja2J1ZmZlckZv
cm1hdEluZm8gPSBkM2QxMTo6R2V0VGV4dHVyZUZvcm1hdEluZm8obU9mZnNjcmVlblJlbmRlclRh
cmdldEZvcm1hdCwgbVJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpKTsKKyAgICBj
b25zdCBkM2QxMTo6Rm9ybWF0ICZiYWNrYnVmZmVyRm9ybWF0SW5mbyA9CisgICAgICAgIGQzZDEx
OjpGb3JtYXQ6OkdldChtT2Zmc2NyZWVuUmVuZGVyVGFyZ2V0Rm9ybWF0LCBtUmVuZGVyZXItPmdl
dFJlbmRlcmVyMTFEZXZpY2VDYXBzKCkpOwogCiAgICAgLy8gSWYgdGhlIGFwcCBwYXNzZWQgaW4g
YSBzaGFyZSBoYW5kbGUsIG9wZW4gdGhlIHJlc291cmNlCiAgICAgLy8gU2VlIEVHTF9BTkdMRV9k
M2Rfc2hhcmVfaGFuZGxlX2NsaWVudF9idWZmZXIKQEAgLTIwOCw3ICsyMjQsNyBAQAogCiAgICAg
ICAgIGlmIChvZmZzY3JlZW5UZXh0dXJlRGVzYy5XaWR0aCAhPSAoVUlOVCliYWNrYnVmZmVyV2lk
dGggfHwKICAgICAgICAgICAgIG9mZnNjcmVlblRleHR1cmVEZXNjLkhlaWdodCAhPSAoVUlOVCli
YWNrYnVmZmVySGVpZ2h0IHx8Ci0gICAgICAgICAgICBvZmZzY3JlZW5UZXh0dXJlRGVzYy5Gb3Jt
YXQgIT0gYmFja2J1ZmZlckZvcm1hdEluZm8uZm9ybWF0U2V0LT50ZXhGb3JtYXQgfHwKKyAgICAg
ICAgICAgIG9mZnNjcmVlblRleHR1cmVEZXNjLkZvcm1hdCAhPSBiYWNrYnVmZmVyRm9ybWF0SW5m
by50ZXhGb3JtYXQgfHwKICAgICAgICAgICAgIG9mZnNjcmVlblRleHR1cmVEZXNjLk1pcExldmVs
cyAhPSAxIHx8IG9mZnNjcmVlblRleHR1cmVEZXNjLkFycmF5U2l6ZSAhPSAxKQogICAgICAgICB7
CiAgICAgICAgICAgICBFUlIoIkludmFsaWQgdGV4dHVyZSBwYXJhbWV0ZXJzIGluIHRoZSBzaGFy
ZWQgb2Zmc2NyZWVuIHRleHR1cmUgcGJ1ZmZlciIpOwpAQCAtMjE4LDEyICsyMzQsMTMgQEAKICAg
ICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgY29uc3QgYm9vbCB1c2VTaGFyZWRSZXNvdXJj
ZSA9ICFtTmF0aXZlV2luZG93LmdldE5hdGl2ZVdpbmRvdygpICYmIG1SZW5kZXJlci0+Z2V0U2hh
cmVIYW5kbGVTdXBwb3J0KCk7CisgICAgICAgIGNvbnN0IGJvb2wgdXNlU2hhcmVkUmVzb3VyY2Ug
PQorICAgICAgICAgICAgIW1OYXRpdmVXaW5kb3ctPmdldE5hdGl2ZVdpbmRvdygpICYmIG1SZW5k
ZXJlci0+Z2V0U2hhcmVIYW5kbGVTdXBwb3J0KCk7CiAKICAgICAgICAgRDNEMTFfVEVYVFVSRTJE
X0RFU0Mgb2Zmc2NyZWVuVGV4dHVyZURlc2MgPSB7MH07CiAgICAgICAgIG9mZnNjcmVlblRleHR1
cmVEZXNjLldpZHRoID0gYmFja2J1ZmZlcldpZHRoOwogICAgICAgICBvZmZzY3JlZW5UZXh0dXJl
RGVzYy5IZWlnaHQgPSBiYWNrYnVmZmVySGVpZ2h0OwotICAgICAgICBvZmZzY3JlZW5UZXh0dXJl
RGVzYy5Gb3JtYXQgICAgICAgICAgICAgICA9IGJhY2tidWZmZXJGb3JtYXRJbmZvLmZvcm1hdFNl
dC0+dGV4Rm9ybWF0OworICAgICAgICBvZmZzY3JlZW5UZXh0dXJlRGVzYy5Gb3JtYXQgICAgICAg
ICAgICAgICA9IGJhY2tidWZmZXJGb3JtYXRJbmZvLnRleEZvcm1hdDsKICAgICAgICAgb2Zmc2Ny
ZWVuVGV4dHVyZURlc2MuTWlwTGV2ZWxzID0gMTsKICAgICAgICAgb2Zmc2NyZWVuVGV4dHVyZURl
c2MuQXJyYXlTaXplID0gMTsKICAgICAgICAgb2Zmc2NyZWVuVGV4dHVyZURlc2MuU2FtcGxlRGVz
Yy5Db3VudCA9IDE7CkBAIC0yODEsNyArMjk4LDcgQEAKICAgICBtS2V5ZWRNdXRleCA9IGQzZDEx
OjpEeW5hbWljQ2FzdENvbU9iamVjdDxJRFhHSUtleWVkTXV0ZXg+KG1PZmZzY3JlZW5UZXh0dXJl
KTsKIAogICAgIEQzRDExX1JFTkRFUl9UQVJHRVRfVklFV19ERVNDIG9mZnNjcmVlblJUVkRlc2M7
Ci0gICAgb2Zmc2NyZWVuUlRWRGVzYy5Gb3JtYXQgICAgICAgICAgICAgPSBiYWNrYnVmZmVyRm9y
bWF0SW5mby5mb3JtYXRTZXQtPnJ0dkZvcm1hdDsKKyAgICBvZmZzY3JlZW5SVFZEZXNjLkZvcm1h
dCAgICAgICAgICAgICA9IGJhY2tidWZmZXJGb3JtYXRJbmZvLnJ0dkZvcm1hdDsKICAgICBvZmZz
Y3JlZW5SVFZEZXNjLlZpZXdEaW1lbnNpb24gPSBEM0QxMV9SVFZfRElNRU5TSU9OX1RFWFRVUkUy
RDsKICAgICBvZmZzY3JlZW5SVFZEZXNjLlRleHR1cmUyRC5NaXBTbGljZSA9IDA7CiAKQEAgLTI5
MCw3ICszMDcsNyBAQAogICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobU9mZnNjcmVlblJUVmlldywg
Ik9mZnNjcmVlbiBiYWNrIGJ1ZmZlciByZW5kZXIgdGFyZ2V0Iik7CiAKICAgICBEM0QxMV9TSEFE
RVJfUkVTT1VSQ0VfVklFV19ERVNDIG9mZnNjcmVlblNSVkRlc2M7Ci0gICAgb2Zmc2NyZWVuU1JW
RGVzYy5Gb3JtYXQgICAgICAgICAgICAgICAgICAgID0gYmFja2J1ZmZlckZvcm1hdEluZm8uZm9y
bWF0U2V0LT5zcnZGb3JtYXQ7CisgICAgb2Zmc2NyZWVuU1JWRGVzYy5Gb3JtYXQgICAgICAgICAg
ICAgICAgICAgID0gYmFja2J1ZmZlckZvcm1hdEluZm8uc3J2Rm9ybWF0OwogICAgIG9mZnNjcmVl
blNSVkRlc2MuVmlld0RpbWVuc2lvbiA9IEQzRDExX1NSVl9ESU1FTlNJT05fVEVYVFVSRTJEOwog
ICAgIG9mZnNjcmVlblNSVkRlc2MuVGV4dHVyZTJELk1vc3REZXRhaWxlZE1pcCA9IDA7CiAgICAg
b2Zmc2NyZWVuU1JWRGVzYy5UZXh0dXJlMkQuTWlwTGV2ZWxzID0gc3RhdGljX2Nhc3Q8VUlOVD4o
LTEpOwpAQCAtMzMxLDEzICszNDgsMTMgQEAKIAogICAgIGlmIChtRGVwdGhCdWZmZXJGb3JtYXQg
IT0gR0xfTk9ORSkKICAgICB7Ci0gICAgICAgIGNvbnN0IGQzZDExOjpUZXh0dXJlRm9ybWF0ICZk
ZXB0aEJ1ZmZlckZvcm1hdEluZm8gPQotICAgICAgICAgICAgZDNkMTE6OkdldFRleHR1cmVGb3Jt
YXRJbmZvKG1EZXB0aEJ1ZmZlckZvcm1hdCwgbVJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNl
Q2FwcygpKTsKKyAgICAgICAgY29uc3QgZDNkMTE6OkZvcm1hdCAmZGVwdGhCdWZmZXJGb3JtYXRJ
bmZvID0KKyAgICAgICAgICAgIGQzZDExOjpGb3JtYXQ6OkdldChtRGVwdGhCdWZmZXJGb3JtYXQs
IG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKSk7CiAKICAgICAgICAgRDNEMTFf
VEVYVFVSRTJEX0RFU0MgZGVwdGhTdGVuY2lsVGV4dHVyZURlc2M7CiAgICAgICAgIGRlcHRoU3Rl
bmNpbFRleHR1cmVEZXNjLldpZHRoID0gYmFja2J1ZmZlcldpZHRoOwogICAgICAgICBkZXB0aFN0
ZW5jaWxUZXh0dXJlRGVzYy5IZWlnaHQgPSBiYWNrYnVmZmVySGVpZ2h0OwotICAgICAgICBkZXB0
aFN0ZW5jaWxUZXh0dXJlRGVzYy5Gb3JtYXQgICAgICAgICAgICAgPSBkZXB0aEJ1ZmZlckZvcm1h
dEluZm8uZm9ybWF0U2V0LT50ZXhGb3JtYXQ7CisgICAgICAgIGRlcHRoU3RlbmNpbFRleHR1cmVE
ZXNjLkZvcm1hdCAgICAgICAgICAgICA9IGRlcHRoQnVmZmVyRm9ybWF0SW5mby50ZXhGb3JtYXQ7
CiAgICAgICAgIGRlcHRoU3RlbmNpbFRleHR1cmVEZXNjLk1pcExldmVscyA9IDE7CiAgICAgICAg
IGRlcHRoU3RlbmNpbFRleHR1cmVEZXNjLkFycmF5U2l6ZSA9IDE7CiAgICAgICAgIGRlcHRoU3Rl
bmNpbFRleHR1cmVEZXNjLlNhbXBsZURlc2MuQ291bnQgPSAxOwpAQCAtMzQ1LDcgKzM2Miw3IEBA
CiAgICAgICAgIGRlcHRoU3RlbmNpbFRleHR1cmVEZXNjLlVzYWdlID0gRDNEMTFfVVNBR0VfREVG
QVVMVDsKICAgICAgICAgZGVwdGhTdGVuY2lsVGV4dHVyZURlc2MuQmluZEZsYWdzID0gRDNEMTFf
QklORF9ERVBUSF9TVEVOQ0lMOwogCi0gICAgICAgIGlmIChkZXB0aEJ1ZmZlckZvcm1hdEluZm8u
Zm9ybWF0U2V0LT5zcnZGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTikKKyAgICAgICAgaWYg
KGRlcHRoQnVmZmVyRm9ybWF0SW5mby5zcnZGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTikK
ICAgICAgICAgewogICAgICAgICAgICAgZGVwdGhTdGVuY2lsVGV4dHVyZURlc2MuQmluZEZsYWdz
IHw9IEQzRDExX0JJTkRfU0hBREVSX1JFU09VUkNFOwogICAgICAgICB9CkBAIC0zNzMsNyArMzkw
LDcgQEAKICAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtRGVwdGhTdGVuY2lsVGV4dHVyZSwg
Ik9mZnNjcmVlbiBkZXB0aCBzdGVuY2lsIHRleHR1cmUiKTsKIAogICAgICAgICBEM0QxMV9ERVBU
SF9TVEVOQ0lMX1ZJRVdfREVTQyBkZXB0aFN0ZW5jaWxEZXNjOwotICAgICAgICBkZXB0aFN0ZW5j
aWxEZXNjLkZvcm1hdCAgICAgICAgICAgICA9IGRlcHRoQnVmZmVyRm9ybWF0SW5mby5mb3JtYXRT
ZXQtPmRzdkZvcm1hdDsKKyAgICAgICAgZGVwdGhTdGVuY2lsRGVzYy5Gb3JtYXQgICAgICAgICAg
ICAgPSBkZXB0aEJ1ZmZlckZvcm1hdEluZm8uZHN2Rm9ybWF0OwogICAgICAgICBkZXB0aFN0ZW5j
aWxEZXNjLlZpZXdEaW1lbnNpb24gPSBEM0QxMV9EU1ZfRElNRU5TSU9OX1RFWFRVUkUyRDsKICAg
ICAgICAgZGVwdGhTdGVuY2lsRGVzYy5GbGFncyA9IDA7CiAgICAgICAgIGRlcHRoU3RlbmNpbERl
c2MuVGV4dHVyZTJELk1pcFNsaWNlID0gMDsKQEAgLTM4MiwxMCArMzk5LDEwIEBACiAgICAgICAg
IEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CiAgICAgICAgIGQzZDExOjpTZXREZWJ1Z05hbWUo
bURlcHRoU3RlbmNpbERTVmlldywgIk9mZnNjcmVlbiBkZXB0aCBzdGVuY2lsIHZpZXciKTsKIAot
ICAgICAgICBpZiAoZGVwdGhCdWZmZXJGb3JtYXRJbmZvLmZvcm1hdFNldC0+c3J2Rm9ybWF0ICE9
IERYR0lfRk9STUFUX1VOS05PV04pCisgICAgICAgIGlmIChkZXB0aEJ1ZmZlckZvcm1hdEluZm8u
c3J2Rm9ybWF0ICE9IERYR0lfRk9STUFUX1VOS05PV04pCiAgICAgICAgIHsKICAgICAgICAgICAg
IEQzRDExX1NIQURFUl9SRVNPVVJDRV9WSUVXX0RFU0MgZGVwdGhTdGVuY2lsU1JWRGVzYzsKLSAg
ICAgICAgICAgIGRlcHRoU3RlbmNpbFNSVkRlc2MuRm9ybWF0ICAgICAgICAgICAgICAgICAgICA9
IGRlcHRoQnVmZmVyRm9ybWF0SW5mby5mb3JtYXRTZXQtPnNydkZvcm1hdDsKKyAgICAgICAgICAg
IGRlcHRoU3RlbmNpbFNSVkRlc2MuRm9ybWF0ICAgICAgICAgICAgICAgICAgICA9IGRlcHRoQnVm
ZmVyRm9ybWF0SW5mby5zcnZGb3JtYXQ7CiAgICAgICAgICAgICBkZXB0aFN0ZW5jaWxTUlZEZXNj
LlZpZXdEaW1lbnNpb24gPSBEM0QxMV9TUlZfRElNRU5TSU9OX1RFWFRVUkUyRDsKICAgICAgICAg
ICAgIGRlcHRoU3RlbmNpbFNSVkRlc2MuVGV4dHVyZTJELk1vc3REZXRhaWxlZE1pcCA9IDA7CiAg
ICAgICAgICAgICBkZXB0aFN0ZW5jaWxTUlZEZXNjLlRleHR1cmUyRC5NaXBMZXZlbHMgPSBzdGF0
aWNfY2FzdDxVSU5UPigtMSk7CkBAIC00ODcsNyArNTA0LDcgQEAKICAgICByZXR1cm4gKG1PZmZz
Y3JlZW5SZW5kZXJUYXJnZXRGb3JtYXQgPT0gR0xfQkdSQThfRVhUKSA/IERYR0lfRk9STUFUX0I4
RzhSOEE4X1VOT1JNIDogRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk07CiB9CiAKLUVHTGludCBT
d2FwQ2hhaW4xMTo6cmVzZXQoaW50IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZmZXJIZWln
aHQsIEVHTGludCBzd2FwSW50ZXJ2YWwpCitFR0xpbnQgU3dhcENoYWluMTE6OnJlc2V0KEVHTGlu
dCBiYWNrYnVmZmVyV2lkdGgsIEVHTGludCBiYWNrYnVmZmVySGVpZ2h0LCBFR0xpbnQgc3dhcElu
dGVydmFsKQogewogICAgIG1Td2FwSW50ZXJ2YWwgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+
KHN3YXBJbnRlcnZhbCk7CiAgICAgaWYgKG1Td2FwSW50ZXJ2YWwgPiA0KQpAQCAtNTI1LDExICs1
NDIsMTEgQEAKICAgICAgICAgcmV0dXJuIEVHTF9TVUNDRVNTOwogICAgIH0KIAotICAgIGlmICht
TmF0aXZlV2luZG93LmdldE5hdGl2ZVdpbmRvdygpKQorICAgIGlmIChtTmF0aXZlV2luZG93LT5n
ZXROYXRpdmVXaW5kb3coKSkKICAgICB7Ci0gICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbU5hdGl2
ZVdpbmRvdy5jcmVhdGVTd2FwQ2hhaW4oZGV2aWNlLCBtUmVuZGVyZXItPmdldER4Z2lGYWN0b3J5
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFN3
YXBDaGFpbk5hdGl2ZUZvcm1hdCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBiYWNrYnVmZmVyV2lkdGgsIGJhY2tidWZmZXJIZWlnaHQsICZtU3dhcENo
YWluKTsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtTmF0aXZlV2luZG93LT5jcmVhdGVTd2Fw
Q2hhaW4oZGV2aWNlLCBtUmVuZGVyZXItPmdldER4Z2lGYWN0b3J5KCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFN3YXBDaGFpbk5h
dGl2ZUZvcm1hdCgpLCBiYWNrYnVmZmVyV2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tidWZmZXJIZWlnaHQsICZtU3dhcENo
YWluKTsKIAogICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgICAgIHsKQEAgLTgzNCw3
ICs4NTEsNyBAQAogICAgICAgICBFUlIoIlByZXNlbnQgZmFpbGVkIHdpdGggZXJyb3IgY29kZSAw
eCUwOFgiLCByZXN1bHQpOwogICAgIH0KIAotICAgIG1OYXRpdmVXaW5kb3cuY29tbWl0Q2hhbmdl
KCk7CisgICAgbU5hdGl2ZVdpbmRvdy0+Y29tbWl0Q2hhbmdlKCk7CiAKICAgICByZXR1cm4gRUdM
X1NVQ0NFU1M7CiB9CkBAIC04NzQsNCArODkxLDQxIEBACiAgICAgLy8gcG9zc2libHkgc2hvdWxk
IHVzZSB0aGlzIG1ldGhvZCBpbnN0ZWFkIG9mIHJlc2V0CiB9CiAKK2VnbDo6RXJyb3IgU3dhcENo
YWluMTE6OmdldFN5bmNWYWx1ZXMoRUdMdWludDY0S0hSICp1c3QsIEVHTHVpbnQ2NEtIUiAqbXNj
LCBFR0x1aW50NjRLSFIgKnNiYykKK3sKKyAgICBEWEdJX0ZSQU1FX1NUQVRJU1RJQ1Mgc3RhdHMg
PSB7fTsKKyAgICBIUkVTVUxUIHJlc3VsdCAgICAgICAgICAgICAgPSBtU3dhcENoYWluLT5HZXRG
cmFtZVN0YXRpc3RpY3MoJnN0YXRzKTsKKworICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICB7
CisgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfQUxMT0MsICJGYWlsZWQgdG8gZ2V0
IGZyYW1lIHN0YXRpc3RpY3MsIHJlc3VsdDogMHglWCIsIHJlc3VsdCk7CisgICAgfQorCisgICAg
Ly8gQ29udmVyc2lvbiBmcm9tIERYR0lfRlJBTUVfU1RBVElTVElDUyB0byB0aGUgb3V0cHV0IHZh
bHVlczoKKyAgICAvLyBzdGF0cy5TeW5jUmVmcmVzaENvdW50IC0+IG1zYworICAgIC8vIHN0YXRz
LlByZXNlbnRDb3VudCAtPiBzYmMKKyAgICAvLyBzdGF0cy5TeW5jUVBDVGltZSAtPiB1c3Qgd2l0
aCBjb252ZXJzaW9uIHRvIG1pY3Jvc2Vjb25kcyB2aWEgUXVlcnlQZXJmb3JtYW5jZUZyZXF1ZW5j
eQorICAgICptc2MgPSBzdGF0cy5TeW5jUmVmcmVzaENvdW50OworICAgICpzYmMgPSBzdGF0cy5Q
cmVzZW50Q291bnQ7CisKKyAgICBMT05HTE9ORyBzeW5jUVBDVmFsdWUgPSBzdGF0cy5TeW5jUVBD
VGltZS5RdWFkUGFydDsKKyAgICAvLyBJZiB0aGUgUVBDIFZhbHVlIGlzIGJlbG93IHRoZSBvdmVy
ZmxvdyB0aHJlc2hvbGQsIHdlIHByb2NlZWQgd2l0aAorICAgIC8vIHNpbXBsZSBtdWx0aXBseSBh
bmQgZGl2aWRlLgorICAgIGlmIChzeW5jUVBDVmFsdWUgPCBrUVBDT3ZlcmZsb3dUaHJlc2hvbGQp
CisgICAgeworICAgICAgICAqdXN0ID0gc3luY1FQQ1ZhbHVlICoga01pY3Jvc2Vjb25kc1BlclNl
Y29uZCAvIG1RUENGcmVxdWVuY3k7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIC8v
IE90aGVyd2lzZSwgY2FsY3VsYXRlIG1pY3Jvc2Vjb25kcyBpbiBhIHJvdW5kIGFib3V0IG1hbm5l
ciB0byBhdm9pZAorICAgICAgICAvLyBvdmVyZmxvdyBhbmQgcHJlY2lzaW9uIGlzc3Vlcy4KKyAg
ICAgICAgaW50NjRfdCB3aG9sZVNlY29uZHMgID0gc3luY1FQQ1ZhbHVlIC8gbVFQQ0ZyZXF1ZW5j
eTsKKyAgICAgICAgaW50NjRfdCBsZWZ0b3ZlclRpY2tzID0gc3luY1FQQ1ZhbHVlIC0gKHdob2xl
U2Vjb25kcyAqIG1RUENGcmVxdWVuY3kpOworICAgICAgICAqdXN0ICAgICAgICAgICAgICAgICAg
PSB3aG9sZVNlY29uZHMgKiBrTWljcm9zZWNvbmRzUGVyU2Vjb25kICsKKyAgICAgICAgICAgICAg
IGxlZnRvdmVyVGlja3MgKiBrTWljcm9zZWNvbmRzUGVyU2Vjb25kIC8gbVFQQ0ZyZXF1ZW5jeTsK
KyAgICB9CisKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CiB9CisKK30gIC8v
IG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9Td2FwQ2hhaW4xMS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3dhcENoYWlu
MTEuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Td2FwQ2hhaW4xMS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNiwxMiArMTYsMTMgQEAKIG5hbWVzcGFjZSByeAogewogY2xhc3MgUmVuZGVyZXIxMTsKK2Ns
YXNzIE5hdGl2ZVdpbmRvdzExOwogCi1jbGFzcyBTd2FwQ2hhaW4xMSA6IHB1YmxpYyBTd2FwQ2hh
aW5EM0QKK2NsYXNzIFN3YXBDaGFpbjExIGZpbmFsIDogcHVibGljIFN3YXBDaGFpbkQzRAogewog
ICBwdWJsaWM6CiAgICAgU3dhcENoYWluMTEoUmVuZGVyZXIxMSAqcmVuZGVyZXIsCi0gICAgICAg
ICAgICAgICAgTmF0aXZlV2luZG93IG5hdGl2ZVdpbmRvdywKKyAgICAgICAgICAgICAgICBOYXRp
dmVXaW5kb3cxMSAqbmF0aXZlV2luZG93LAogICAgICAgICAgICAgICAgIEhBTkRMRSBzaGFyZUhh
bmRsZSwKICAgICAgICAgICAgICAgICBHTGVudW0gYmFja0J1ZmZlckZvcm1hdCwKICAgICAgICAg
ICAgICAgICBHTGVudW0gZGVwdGhCdWZmZXJGb3JtYXQsCkBAIC0yOSwyNSArMzAsMjcgQEAKICAg
ICB2aXJ0dWFsIH5Td2FwQ2hhaW4xMSgpOwogCiAgICAgRUdMaW50IHJlc2l6ZShFR0xpbnQgYmFj
a2J1ZmZlcldpZHRoLCBFR0xpbnQgYmFja2J1ZmZlckhlaWdodCk7Ci0gICAgdmlydHVhbCBFR0xp
bnQgcmVzZXQoRUdMaW50IGJhY2tidWZmZXJXaWR0aCwgRUdMaW50IGJhY2tidWZmZXJIZWlnaHQs
IEVHTGludCBzd2FwSW50ZXJ2YWwpOwotICAgIHZpcnR1YWwgRUdMaW50IHN3YXBSZWN0KEVHTGlu
dCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KTsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVjcmVhdGUoKTsKKyAgICBFR0xpbnQgcmVzZXQoRUdMaW50IGJhY2tidWZmZXJXaWR0
aCwgRUdMaW50IGJhY2tidWZmZXJIZWlnaHQsIEVHTGludCBzd2FwSW50ZXJ2YWwpIG92ZXJyaWRl
OworICAgIEVHTGludCBzd2FwUmVjdChFR0xpbnQgeCwgRUdMaW50IHksIEVHTGludCB3aWR0aCwg
RUdMaW50IGhlaWdodCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZWNyZWF0ZSgpIG92ZXJyaWRlOwog
CiAgICAgUmVuZGVyVGFyZ2V0RDNEICpnZXRDb2xvclJlbmRlclRhcmdldCgpIG92ZXJyaWRlIHsg
cmV0dXJuICZtQ29sb3JSZW5kZXJUYXJnZXQ7IH0KICAgICBSZW5kZXJUYXJnZXREM0QgKmdldERl
cHRoU3RlbmNpbFJlbmRlclRhcmdldCgpIG92ZXJyaWRlIHsgcmV0dXJuICZtRGVwdGhTdGVuY2ls
UmVuZGVyVGFyZ2V0OyB9CiAKLSAgICB2aXJ0dWFsIElEM0QxMVRleHR1cmUyRCAqZ2V0T2Zmc2Ny
ZWVuVGV4dHVyZSgpOwotICAgIHZpcnR1YWwgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqZ2V0UmVu
ZGVyVGFyZ2V0KCk7Ci0gICAgdmlydHVhbCBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKmdldFJl
bmRlclRhcmdldFNoYWRlclJlc291cmNlKCk7CisgICAgSUQzRDExVGV4dHVyZTJEICpnZXRPZmZz
Y3JlZW5UZXh0dXJlKCk7CisgICAgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqZ2V0UmVuZGVyVGFy
Z2V0KCk7CisgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpnZXRSZW5kZXJUYXJnZXRTaGFk
ZXJSZXNvdXJjZSgpOwogCi0gICAgdmlydHVhbCBJRDNEMTFUZXh0dXJlMkQgKmdldERlcHRoU3Rl
bmNpbFRleHR1cmUoKTsKLSAgICB2aXJ0dWFsIElEM0QxMURlcHRoU3RlbmNpbFZpZXcgKmdldERl
cHRoU3RlbmNpbCgpOwotICAgIHZpcnR1YWwgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpnZXRE
ZXB0aFN0ZW5jaWxTaGFkZXJSZXNvdXJjZSgpOworICAgIElEM0QxMVRleHR1cmUyRCAqZ2V0RGVw
dGhTdGVuY2lsVGV4dHVyZSgpOworICAgIElEM0QxMURlcHRoU3RlbmNpbFZpZXcgKmdldERlcHRo
U3RlbmNpbCgpOworICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqZ2V0RGVwdGhTdGVuY2ls
U2hhZGVyUmVzb3VyY2UoKTsKIAogICAgIEVHTGludCBnZXRXaWR0aCgpIGNvbnN0IHsgcmV0dXJu
IG1XaWR0aDsgfQogICAgIEVHTGludCBnZXRIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtSGVpZ2h0
OyB9CiAgICAgdm9pZCAqZ2V0S2V5ZWRNdXRleCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1LZXllZE11
dGV4OyB9CiAKKyAgICBlZ2w6OkVycm9yIGdldFN5bmNWYWx1ZXMoRUdMdWludDY0S0hSICp1c3Qs
IEVHTHVpbnQ2NEtIUiAqbXNjLCBFR0x1aW50NjRLSFIgKnNiYykgb3ZlcnJpZGU7CisKICAgcHJp
dmF0ZToKICAgICB2b2lkIHJlbGVhc2UoKTsKICAgICB2b2lkIGluaXRQYXNzVGhyb3VnaFJlc291
cmNlcygpOwpAQCAtNzEsOCArNzQsMTAgQEAKICAgICB1bnNpZ25lZCBpbnQgbVN3YXBJbnRlcnZh
bDsKICAgICBib29sIG1QYXNzVGhyb3VnaFJlc291cmNlc0luaXQ7CiAKKyAgICBOYXRpdmVXaW5k
b3cxMSAqbU5hdGl2ZVdpbmRvdzsgIC8vIEhhbmRsZXIgZm9yIHRoZSBXaW5kb3cgdGhhdCB0aGUg
c3VyZmFjZSBpcyBjcmVhdGVkIGZvci4KKwogICAgIGJvb2wgbUZpcnN0U3dhcDsKLSAgICBEWEdJ
U3dhcENoYWluICptU3dhcENoYWluOworICAgIElEWEdJU3dhcENoYWluICptU3dhcENoYWluOwog
ICAgIElEWEdJU3dhcENoYWluMSAqbVN3YXBDaGFpbjE7CiAgICAgSURYR0lLZXllZE11dGV4ICpt
S2V5ZWRNdXRleDsKIApAQCAtOTgsNyArMTAzLDkgQEAKIAogICAgIFN1cmZhY2VSZW5kZXJUYXJn
ZXQxMSBtQ29sb3JSZW5kZXJUYXJnZXQ7CiAgICAgU3VyZmFjZVJlbmRlclRhcmdldDExIG1EZXB0
aFN0ZW5jaWxSZW5kZXJUYXJnZXQ7CisKKyAgICBMT05HTE9ORyBtUVBDRnJlcXVlbmN5OwogfTsK
IAotfQorfSAgLy8gbmFtZXNwYWNlIHJ4CiAjZW5kaWYgLy8gTElCQU5HTEVfUkVOREVSRVJfRDNE
X0QzRDExX1NXQVBDSEFJTjExX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1RleHR1cmVTdG9yYWdlMTEuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvVGV4dHVyZVN0b3JhZ2UxMS5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVGV4dHVyZVN0
b3JhZ2UxMS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyZXIxMS5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxzLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclRhcmdldDExLmgiCisjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0cmVhbVByb2R1Y2VyTlYxMi5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Td2FwQ2hhaW4xMS5oIgogI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZS5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9FR0xJbWFnZUQzRC5oIgpAQCAtMzAsNTQgKzMxLDI5
IEBACiBuYW1lc3BhY2UgcngKIHsKIAotVGV4dHVyZVN0b3JhZ2UxMTo6U3dpenpsZUNhY2hlVmFs
dWU6OlN3aXp6bGVDYWNoZVZhbHVlKCkKLSAgICA6IHN3aXp6bGVSZWQoR0xfSU5WQUxJRF9JTkRF
WCksCi0gICAgICBzd2l6emxlR3JlZW4oR0xfSU5WQUxJRF9JTkRFWCksCi0gICAgICBzd2l6emxl
Qmx1ZShHTF9JTlZBTElEX0lOREVYKSwKLSAgICAgIHN3aXp6bGVBbHBoYShHTF9JTlZBTElEX0lO
REVYKQorVGV4dHVyZVN0b3JhZ2UxMTo6U1JWS2V5OjpTUlZLZXkoaW50IGJhc2VMZXZlbCwgaW50
IG1pcExldmVscywgYm9vbCBzd2l6emxlLCBib29sIGRyb3BTdGVuY2lsKQorICAgIDogYmFzZUxl
dmVsKGJhc2VMZXZlbCksIG1pcExldmVscyhtaXBMZXZlbHMpLCBzd2l6emxlKHN3aXp6bGUpLCBk
cm9wU3RlbmNpbChkcm9wU3RlbmNpbCkKIHsKIH0KIAotVGV4dHVyZVN0b3JhZ2UxMTo6U3dpenps
ZUNhY2hlVmFsdWU6OlN3aXp6bGVDYWNoZVZhbHVlKEdMZW51bSByZWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGdyZWVuLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBibHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBhbHBoYSkKLSAgICA6IHN3aXp6bGVSZWQocmVkKSwgc3dpenpsZUdy
ZWVuKGdyZWVuKSwgc3dpenpsZUJsdWUoYmx1ZSksIHN3aXp6bGVBbHBoYShhbHBoYSkKLXsKLX0K
LQotYm9vbCBUZXh0dXJlU3RvcmFnZTExOjpTd2l6emxlQ2FjaGVWYWx1ZTo6b3BlcmF0b3I9PShj
b25zdCBTd2l6emxlQ2FjaGVWYWx1ZSAmb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN3aXp6
bGVSZWQgPT0gb3RoZXIuc3dpenpsZVJlZCAmJiBzd2l6emxlR3JlZW4gPT0gb3RoZXIuc3dpenps
ZUdyZWVuICYmCi0gICAgICAgICAgIHN3aXp6bGVCbHVlID09IG90aGVyLnN3aXp6bGVCbHVlICYm
IHN3aXp6bGVBbHBoYSA9PSBvdGhlci5zd2l6emxlQWxwaGE7Ci19Ci0KLWJvb2wgVGV4dHVyZVN0
b3JhZ2UxMTo6U3dpenpsZUNhY2hlVmFsdWU6Om9wZXJhdG9yIT0oY29uc3QgU3dpenpsZUNhY2hl
VmFsdWUgJm90aGVyKSBjb25zdAotewotICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLX0K
LQotVGV4dHVyZVN0b3JhZ2UxMTo6U1JWS2V5OjpTUlZLZXkoaW50IGJhc2VMZXZlbCwgaW50IG1p
cExldmVscywgYm9vbCBzd2l6emxlKQotICAgIDogYmFzZUxldmVsKGJhc2VMZXZlbCksIG1pcExl
dmVscyhtaXBMZXZlbHMpLCBzd2l6emxlKHN3aXp6bGUpCi17Ci19Ci0KIGJvb2wgVGV4dHVyZVN0
b3JhZ2UxMTo6U1JWS2V5OjpvcGVyYXRvcjwoY29uc3QgU1JWS2V5ICZyaHMpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6dGllKGJhc2VMZXZlbCwgbWlwTGV2ZWxzLCBzd2l6emxlKSA8Ci0gICAg
ICAgICAgIHN0ZDo6dGllKHJocy5iYXNlTGV2ZWwsIHJocy5taXBMZXZlbHMsIHJocy5zd2l6emxl
KTsKKyAgICByZXR1cm4gc3RkOjp0aWUoYmFzZUxldmVsLCBtaXBMZXZlbHMsIHN3aXp6bGUsIGRy
b3BTdGVuY2lsKSA8CisgICAgICAgICAgIHN0ZDo6dGllKHJocy5iYXNlTGV2ZWwsIHJocy5taXBM
ZXZlbHMsIHJocy5zd2l6emxlLCByaHMuZHJvcFN0ZW5jaWwpOwogfQogCi1UZXh0dXJlU3RvcmFn
ZTExOjpUZXh0dXJlU3RvcmFnZTExKFJlbmRlcmVyMTEgKnJlbmRlcmVyLCBVSU5UIGJpbmRGbGFn
cywgVUlOVCBtaXNjRmxhZ3MpCitUZXh0dXJlU3RvcmFnZTExOjpUZXh0dXJlU3RvcmFnZTExKFJl
bmRlcmVyMTEgKnJlbmRlcmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
SU5UIGJpbmRGbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVCBt
aXNjRmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRl
cm5hbEZvcm1hdCkKICAgICA6IG1SZW5kZXJlcihyZW5kZXJlciksCiAgICAgICBtVG9wTGV2ZWwo
MCksCiAgICAgICBtTWlwTGV2ZWxzKDApLAotICAgICAgbUludGVybmFsRm9ybWF0KEdMX05PTkUp
LAotICAgICAgbVRleHR1cmVGb3JtYXRTZXQobnVsbHB0ciksCi0gICAgICBtU3dpenpsZUZvcm1h
dFNldChudWxscHRyKSwKKyAgICAgIG1Gb3JtYXRJbmZvKGQzZDExOjpGb3JtYXQ6OkdldChpbnRl
cm5hbEZvcm1hdCwgbVJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpKSksCiAgICAg
ICBtVGV4dHVyZVdpZHRoKDApLAogICAgICAgbVRleHR1cmVIZWlnaHQoMCksCiAgICAgICBtVGV4
dHVyZURlcHRoKDApLAorICAgICAgbURyb3BTdGVuY2lsVGV4dHVyZShudWxscHRyKSwKICAgICAg
IG1CaW5kRmxhZ3MoYmluZEZsYWdzKSwKICAgICAgIG1NaXNjRmxhZ3MobWlzY0ZsYWdzKQogewpA
QCAtOTgsNiArNzQsNyBAQAogICAgICAgICBTYWZlUmVsZWFzZShpLT5zZWNvbmQpOwogICAgIH0K
ICAgICBtU3J2Q2FjaGUuY2xlYXIoKTsKKyAgICBTYWZlUmVsZWFzZShtRHJvcFN0ZW5jaWxUZXh0
dXJlKTsKIH0KIAogRFdPUkQgVGV4dHVyZVN0b3JhZ2UxMTo6R2V0VGV4dHVyZUJpbmRGbGFncyhH
TGVudW0gaW50ZXJuYWxGb3JtYXQsCkBAIC0xMDYsMTcgKzgzLDE2IEBACiB7CiAgICAgVUlOVCBi
aW5kRmxhZ3MgPSAwOwogCi0gICAgY29uc3QgZDNkMTE6OlRleHR1cmVGb3JtYXQgJmZvcm1hdElu
Zm8gPQotICAgICAgICBkM2QxMTo6R2V0VGV4dHVyZUZvcm1hdEluZm8oaW50ZXJuYWxGb3JtYXQs
IHJlbmRlcmVyMTFEZXZpY2VDYXBzKTsKLSAgICBpZiAoZm9ybWF0SW5mby5mb3JtYXRTZXQtPnNy
dkZvcm1hdCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dOKQorICAgIGNvbnN0IGQzZDExOjpGb3JtYXQg
JmZvcm1hdEluZm8gPSBkM2QxMTo6Rm9ybWF0OjpHZXQoaW50ZXJuYWxGb3JtYXQsIHJlbmRlcmVy
MTFEZXZpY2VDYXBzKTsKKyAgICBpZiAoZm9ybWF0SW5mby5zcnZGb3JtYXQgIT0gRFhHSV9GT1JN
QVRfVU5LTk9XTikKICAgICB7CiAgICAgICAgIGJpbmRGbGFncyB8PSBEM0QxMV9CSU5EX1NIQURF
Ul9SRVNPVVJDRTsKICAgICB9Ci0gICAgaWYgKGZvcm1hdEluZm8uZm9ybWF0U2V0LT5kc3ZGb3Jt
YXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTikKKyAgICBpZiAoZm9ybWF0SW5mby5kc3ZGb3JtYXQg
IT0gRFhHSV9GT1JNQVRfVU5LTk9XTikKICAgICB7CiAgICAgICAgIGJpbmRGbGFncyB8PSBEM0Qx
MV9CSU5EX0RFUFRIX1NURU5DSUw7CiAgICAgfQotICAgIGlmIChmb3JtYXRJbmZvLmZvcm1hdFNl
dC0+cnR2Rm9ybWF0ICE9IERYR0lfRk9STUFUX1VOS05PV04gJiYgcmVuZGVyVGFyZ2V0KQorICAg
IGlmIChmb3JtYXRJbmZvLnJ0dkZvcm1hdCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dOICYmIHJlbmRl
clRhcmdldCkKICAgICB7CiAgICAgICAgIGJpbmRGbGFncyB8PSBEM0QxMV9CSU5EX1JFTkRFUl9U
QVJHRVQ7CiAgICAgfQpAQCAtMTMxLDE0ICsxMDcsMTAgQEAKIHsKICAgICBVSU5UIG1pc2NGbGFn
cyA9IDA7CiAKLSAgICBjb25zdCBkM2QxMTo6VGV4dHVyZUZvcm1hdCAmZm9ybWF0SW5mbyA9Ci0g
ICAgICAgIGQzZDExOjpHZXRUZXh0dXJlRm9ybWF0SW5mbyhpbnRlcm5hbEZvcm1hdCwgcmVuZGVy
ZXIxMURldmljZUNhcHMpOworICAgIGNvbnN0IGQzZDExOjpGb3JtYXQgJmZvcm1hdEluZm8gPSBk
M2QxMTo6Rm9ybWF0OjpHZXQoaW50ZXJuYWxGb3JtYXQsIHJlbmRlcmVyMTFEZXZpY2VDYXBzKTsK
ICAgICBpZiAocmVuZGVyVGFyZ2V0ICYmIGxldmVscyA+IDEpCiAgICAgewotICAgICAgICBjb25z
dCBkM2QxMTo6RFhHSUZvcm1hdCAmZHhnaUZvcm1hdEluZm8gPQotICAgICAgICAgICAgZDNkMTE6
OkdldERYR0lGb3JtYXRJbmZvKGZvcm1hdEluZm8uZm9ybWF0U2V0LT50ZXhGb3JtYXQpOwotCi0g
ICAgICAgIGlmIChkeGdpRm9ybWF0SW5mby5uYXRpdmVNaXBtYXBTdXBwb3J0KHJlbmRlcmVyMTFE
ZXZpY2VDYXBzLmZlYXR1cmVMZXZlbCkpCisgICAgICAgIGlmIChkM2QxMTo6U3VwcG9ydHNNaXBH
ZW4oZm9ybWF0SW5mby50ZXhGb3JtYXQsIHJlbmRlcmVyMTFEZXZpY2VDYXBzLmZlYXR1cmVMZXZl
bCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1pc2NGbGFncyB8PSBEM0QxMV9SRVNPVVJDRV9N
SVNDX0dFTkVSQVRFX01JUFM7CiAgICAgICAgIH0KQEAgLTE1OSw2ICsxMzEsOCBAQAogCiBpbnQg
VGV4dHVyZVN0b3JhZ2UxMTo6Z2V0VG9wTGV2ZWwoKSBjb25zdAogeworICAgIC8vIEFwcGx5aW5n
IHRvcCBsZXZlbCBpcyBtZWFudCB0byBiZSBlbmNhcHN1bGF0ZWQgaW5zaWRlIFRleHR1cmVTdG9y
YWdlMTEuCisgICAgVU5SRUFDSEFCTEUoKTsKICAgICByZXR1cm4gbVRvcExldmVsOwogfQogCkBA
IC0yMDksMTMgKzE4MywxNiBAQAogZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTE6OmdldFNSVihj
b25zdCBnbDo6VGV4dHVyZVN0YXRlICZ0ZXh0dXJlU3RhdGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqKm91dFNSVikKIHsKKyAg
ICAvLyBNYWtlIHN1cmUgdG8gYWRkIHRoZSBsZXZlbCBvZmZzZXQgZm9yIG91ciB0aW55IGNvbXBy
ZXNzZWQgdGV4dHVyZSB3b3JrYXJvdW5kCisgICAgY29uc3QgR0x1aW50IGVmZmVjdGl2ZUJhc2VM
ZXZlbCA9IHRleHR1cmVTdGF0ZS5nZXRFZmZlY3RpdmVCYXNlTGV2ZWwoKTsKICAgICBib29sIHN3
aXp6bGVSZXF1aXJlZCAgID0gdGV4dHVyZVN0YXRlLnN3aXp6bGVSZXF1aXJlZCgpOwotICAgIGJv
b2wgbWlwbWFwcGluZyAgICAgICAgPSBnbDo6SXNNaXBtYXBGaWx0ZXJlZCh0ZXh0dXJlU3RhdGUu
c2FtcGxlclN0YXRlKTsKLSAgICB1bnNpZ25lZCBpbnQgbWlwTGV2ZWxzID0gbWlwbWFwcGluZyA/
ICh0ZXh0dXJlU3RhdGUubWF4TGV2ZWwgLSB0ZXh0dXJlU3RhdGUuYmFzZUxldmVsICsgMSkgOiAx
OworICAgIGJvb2wgbWlwbWFwcGluZyA9IGdsOjpJc01pcG1hcEZpbHRlcmVkKHRleHR1cmVTdGF0
ZS5nZXRTYW1wbGVyU3RhdGUoKSk7CisgICAgdW5zaWduZWQgaW50IG1pcExldmVscyA9CisgICAg
ICAgIG1pcG1hcHBpbmcgPyAodGV4dHVyZVN0YXRlLmdldEVmZmVjdGl2ZU1heExldmVsKCkgLSBl
ZmZlY3RpdmVCYXNlTGV2ZWwgKyAxKSA6IDE7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhlcmUncyAn
bWlwTGV2ZWxzJyBtaXBtYXAgbGV2ZWxzIGJlbG93IHRoZSBiYXNlIGxldmVsIChvZmZzZXQgYnkg
dGhlIHRvcCBsZXZlbCwKICAgICAvLyB3aGljaCBjb3JyZXNwb25kcyB0byBHTCBsZXZlbCAwKQot
ICAgIG1pcExldmVscyA9IHN0ZDo6bWluKG1pcExldmVscywgbU1pcExldmVscyAtIG1Ub3BMZXZl
bCAtIHRleHR1cmVTdGF0ZS5iYXNlTGV2ZWwpOworICAgIG1pcExldmVscyA9IHN0ZDo6bWluKG1p
cExldmVscywgbU1pcExldmVscyAtIG1Ub3BMZXZlbCAtIGVmZmVjdGl2ZUJhc2VMZXZlbCk7CiAK
ICAgICBpZiAobVJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpLmZlYXR1cmVMZXZl
bCA8PSBEM0RfRkVBVFVSRV9MRVZFTF85XzMpCiAgICAgewpAQCAtMjI2LDU4ICsyMDMsNzQgQEAK
ICAgICBpZiAobVJlbmRlcmVyLT5nZXRXb3JrYXJvdW5kcygpLnplcm9NYXhMb2RXb3JrYXJvdW5k
KQogICAgIHsKICAgICAgICAgLy8gV2UgbXVzdCBlbnN1cmUgdGhhdCB0aGUgbGV2ZWwgemVybyB0
ZXh0dXJlIGlzIGluIHN5bmMgd2l0aCBtaXBwZWQgdGV4dHVyZS4KLSAgICAgICAgZ2w6OkVycm9y
IGVycm9yID0gdXNlTGV2ZWxaZXJvV29ya2Fyb3VuZFRleHR1cmUobWlwTGV2ZWxzID09IDEpOwot
ICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKHVzZUxldmVsWmVyb1dvcmth
cm91bmRUZXh0dXJlKG1pcExldmVscyA9PSAxKSk7CiAgICAgfQogCiAgICAgaWYgKHN3aXp6bGVS
ZXF1aXJlZCkKICAgICB7Ci0gICAgICAgIHZlcmlmeVN3aXp6bGVFeGlzdHModGV4dHVyZVN0YXRl
LnN3aXp6bGVSZWQsIHRleHR1cmVTdGF0ZS5zd2l6emxlR3JlZW4sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGV4dHVyZVN0YXRlLnN3aXp6bGVCbHVlLCB0ZXh0dXJlU3RhdGUuc3dpenps
ZUFscGhhKTsKKyAgICAgICAgdmVyaWZ5U3dpenpsZUV4aXN0cyh0ZXh0dXJlU3RhdGUuZ2V0U3dp
enpsZVN0YXRlKCkpOwogICAgIH0KIAotICAgIFNSVktleSBrZXkodGV4dHVyZVN0YXRlLmJhc2VM
ZXZlbCwgbWlwTGV2ZWxzLCBzd2l6emxlUmVxdWlyZWQpOworICAgIC8vIFdlIGRyb3AgdGhlIHN0
ZW5jaWwgd2hlbiBzYW1wbGluZyBmcm9tIHRoZSBTUlYgaWYgdGhyZWUgY29uZGl0aW9ucyBob2xk
OgorICAgIC8vIDEuIHRoZSBkcm9wIHN0ZW5jaWwgd29ya2Fyb3VuZCBpcyBlbmFibGVkLgorICAg
IGJvb2wgd29ya2Fyb3VuZCA9IG1SZW5kZXJlci0+Z2V0V29ya2Fyb3VuZHMoKS5lbXVsYXRlVGlu
eVN0ZW5jaWxUZXh0dXJlczsKKyAgICAvLyAyLiB0aGlzIGlzIGEgc3RlbmNpbCB0ZXh0dXJlLgor
ICAgIGJvb2wgaGFzU3RlbmNpbCA9IChtRm9ybWF0SW5mby5mb3JtYXQuc3RlbmNpbEJpdHMgPiAw
KTsKKyAgICAvLyAzLiB0aGUgdGV4dHVyZSBoYXMgYSAxeDEgb3IgMngyIG1pcC4KKyAgICBib29s
IGhhc1NtYWxsTWlwcyA9IChnZXRMZXZlbFdpZHRoKG1NaXBMZXZlbHMgLSAxKSA8PSAyIHx8IGdl
dExldmVsSGVpZ2h0KG1NaXBMZXZlbHMgLSAxKSA8PSAyKTsKKworICAgIGJvb2wgdXNlRHJvcFN0
ZW5jaWwgPSAod29ya2Fyb3VuZCAmJiBoYXNTdGVuY2lsICYmIGhhc1NtYWxsTWlwcyk7CisgICAg
aWYgKHVzZURyb3BTdGVuY2lsKQorICAgIHsKKyAgICAgICAgLy8gRW5zdXJlIGRyb3AgdGV4dHVy
ZSBnZXRzIHJlLWNyZWF0ZWQsIGlmIFNSViBpcyBjYWNoZWQuCisgICAgICAgIEFOR0xFX1RSWShj
cmVhdGVEcm9wU3RlbmNpbFRleHR1cmUoKSk7CisgICAgfQorCisgICAgU1JWS2V5IGtleShlZmZl
Y3RpdmVCYXNlTGV2ZWwsIG1pcExldmVscywgc3dpenpsZVJlcXVpcmVkLCB1c2VEcm9wU3RlbmNp
bCk7CisgICAgQU5HTEVfVFJZKGdldENhY2hlZE9yQ3JlYXRlU1JWKGtleSwgb3V0U1JWKSk7CisK
KyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKK30KKworZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdl
MTE6OmdldENhY2hlZE9yQ3JlYXRlU1JWKGNvbnN0IFNSVktleSAma2V5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMVNoYWRlclJlc291cmNl
VmlldyAqKm91dFNSVikKK3sKICAgICBhdXRvIGl0ZXIgPSBtU3J2Q2FjaGUuZmluZChrZXkpOwog
ICAgIGlmIChpdGVyICE9IG1TcnZDYWNoZS5lbmQoKSkKICAgICB7CiAgICAgICAgICpvdXRTUlYg
PSBpdGVyLT5zZWNvbmQ7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwor
ICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiAKICAgICBJRDNEMTFSZXNvdXJj
ZSAqdGV4dHVyZSA9IG51bGxwdHI7Ci0gICAgaWYgKHN3aXp6bGVSZXF1aXJlZCkKKyAgICBEWEdJ
X0ZPUk1BVCBmb3JtYXQgICAgICA9IERYR0lfRk9STUFUX1VOS05PV047CisKKyAgICBpZiAoa2V5
LnN3aXp6bGUpCiAgICAgewotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBnZXRTd2l6emxlVGV4
dHVyZSgmdGV4dHVyZSk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBBU1NFUlQoIWtl
eS5kcm9wU3RlbmNpbCB8fCBtRm9ybWF0SW5mby5zd2l6emxlLmZvcm1hdC5zdGVuY2lsQml0cyA9
PSAwKTsKKyAgICAgICAgQU5HTEVfVFJZKGdldFN3aXp6bGVUZXh0dXJlKCZ0ZXh0dXJlKSk7Cisg
ICAgICAgIGZvcm1hdCA9IG1Gb3JtYXRJbmZvLnN3aXp6bGUuc3J2Rm9ybWF0OwogICAgIH0KKyAg
ICBlbHNlIGlmIChrZXkuZHJvcFN0ZW5jaWwpCisgICAgeworICAgICAgICBBU1NFUlQobURyb3BT
dGVuY2lsVGV4dHVyZSk7CisgICAgICAgIHRleHR1cmUgPSBtRHJvcFN0ZW5jaWxUZXh0dXJlOwor
ICAgICAgICBmb3JtYXQgID0gRFhHSV9GT1JNQVRfUjMyX0ZMT0FUOworICAgIH0KICAgICBlbHNl
CiAgICAgewotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBnZXRSZXNvdXJjZSgmdGV4dHVyZSk7
Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBBTkdMRV9UUlkoZ2V0UmVzb3VyY2UoJnRl
eHR1cmUpKTsKKyAgICAgICAgZm9ybWF0ID0gbUZvcm1hdEluZm8uc3J2Rm9ybWF0OwogICAgIH0K
IAogICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc3J2ID0gbnVsbHB0cjsKLSAgICBEWEdJ
X0ZPUk1BVCBmb3JtYXQgPQotICAgICAgICAoc3dpenpsZVJlcXVpcmVkID8gbVN3aXp6bGVGb3Jt
YXRTZXQtPnNydkZvcm1hdCA6IG1UZXh0dXJlRm9ybWF0U2V0LT5zcnZGb3JtYXQpOwotICAgIGds
OjpFcnJvciBlcnJvciA9IGNyZWF0ZVNSVih0ZXh0dXJlU3RhdGUuYmFzZUxldmVsLCBtaXBMZXZl
bHMsIGZvcm1hdCwgdGV4dHVyZSwgJnNydik7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CiAKKyAgICBBTkdMRV9UUlkoY3JlYXRl
U1JWKGtleS5iYXNlTGV2ZWwsIGtleS5taXBMZXZlbHMsIGZvcm1hdCwgdGV4dHVyZSwgJnNydikp
OworCiAgICAgbVNydkNhY2hlLmluc2VydChzdGQ6Om1ha2VfcGFpcihrZXksIHNydikpOwogICAg
ICpvdXRTUlYgPSBzcnY7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAg
ICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTE6
OmdldFNSVkxldmVsKGludCBtaXBMZXZlbCwKQEAgLTI5Miw4ICsyODUsNyBAQAogICAgIGlmICgh
bGV2ZWxTUlZzW21pcExldmVsXSkKICAgICB7CiAgICAgICAgIC8vIE9ubHkgY3JlYXRlIGEgZGlm
ZmVyZW50IFNSViBmb3IgYmxpdCBpZiBibGl0IGZvcm1hdCBpcyBkaWZmZXJlbnQgZnJvbSByZWd1
bGFyIHNydiBmb3JtYXQKLSAgICAgICAgaWYgKG90aGVyTGV2ZWxTUlZzW21pcExldmVsXSAmJgot
ICAgICAgICAgICAgbVRleHR1cmVGb3JtYXRTZXQtPnNydkZvcm1hdCA9PSBtVGV4dHVyZUZvcm1h
dFNldC0+YmxpdFNSVkZvcm1hdCkKKyAgICAgICAgaWYgKG90aGVyTGV2ZWxTUlZzW21pcExldmVs
XSAmJiBtRm9ybWF0SW5mby5zcnZGb3JtYXQgPT0gbUZvcm1hdEluZm8uYmxpdFNSVkZvcm1hdCkK
ICAgICAgICAgewogICAgICAgICAgICAgbGV2ZWxTUlZzW21pcExldmVsXSA9IG90aGVyTGV2ZWxT
UlZzW21pcExldmVsXTsKICAgICAgICAgICAgIGxldmVsU1JWc1ttaXBMZXZlbF0tPkFkZFJlZigp
OwpAQCAtMzAxLDI1ICsyOTMsMTcgQEAKICAgICAgICAgZWxzZQogICAgICAgICB7CiAgICAgICAg
ICAgICBJRDNEMTFSZXNvdXJjZSAqcmVzb3VyY2UgPSBudWxscHRyOwotICAgICAgICAgICAgZ2w6
OkVycm9yIGVycm9yID0gZ2V0UmVzb3VyY2UoJnJlc291cmNlKTsKLSAgICAgICAgICAgIGlmIChl
cnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVy
cm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgQU5HTEVfVFJZKGdldFJlc291cmNlKCZy
ZXNvdXJjZSkpOwogCiAgICAgICAgICAgICBEWEdJX0ZPUk1BVCByZXNvdXJjZUZvcm1hdCA9Ci0g
ICAgICAgICAgICAgICAgYmxpdFNSViA/IG1UZXh0dXJlRm9ybWF0U2V0LT5ibGl0U1JWRm9ybWF0
IDogbVRleHR1cmVGb3JtYXRTZXQtPnNydkZvcm1hdDsKLSAgICAgICAgICAgIGVycm9yID0gY3Jl
YXRlU1JWKG1pcExldmVsLCAxLCByZXNvdXJjZUZvcm1hdCwgcmVzb3VyY2UsICZsZXZlbFNSVnNb
bWlwTGV2ZWxdKTsKLSAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGJsaXRTUlYgPyBtRm9ybWF0SW5mby5ibGl0U1JWRm9ybWF0IDogbUZvcm1hdElu
Zm8uc3J2Rm9ybWF0OworICAgICAgICAgICAgQU5HTEVfVFJZKGNyZWF0ZVNSVihtaXBMZXZlbCwg
MSwgcmVzb3VyY2VGb3JtYXQsIHJlc291cmNlLCAmbGV2ZWxTUlZzW21pcExldmVsXSkpOwogICAg
ICAgICB9CiAgICAgfQogCiAgICAgKm91dFNSViA9IGxldmVsU1JWc1ttaXBMZXZlbF07CiAKLSAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3Io
KTsKIH0KIAogZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTE6OmdldFNSVkxldmVscyhHTGludCBi
YXNlTGV2ZWwsCkBAIC0zNDAsNTIgKzMyNCwyNCBAQAogICAgIGlmIChtUmVuZGVyZXItPmdldFdv
cmthcm91bmRzKCkuemVyb01heExvZFdvcmthcm91bmQpCiAgICAgewogICAgICAgICAvLyBXZSBt
dXN0IGVuc3VyZSB0aGF0IHRoZSBsZXZlbCB6ZXJvIHRleHR1cmUgaXMgaW4gc3luYyB3aXRoIG1p
cHBlZCB0ZXh0dXJlLgotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSB1c2VMZXZlbFplcm9Xb3Jr
YXJvdW5kVGV4dHVyZShtaXBMZXZlbHMgPT0gMSk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9y
KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAg
ICAgICBBTkdMRV9UUlkodXNlTGV2ZWxaZXJvV29ya2Fyb3VuZFRleHR1cmUobWlwTGV2ZWxzID09
IDEpKTsKICAgICB9CiAKLSAgICBTUlZLZXkga2V5KGJhc2VMZXZlbCwgbWlwTGV2ZWxzLCBmYWxz
ZSk7Ci0gICAgYXV0byBpdGVyID0gbVNydkNhY2hlLmZpbmQoa2V5KTsKLSAgICBpZiAoaXRlciAh
PSBtU3J2Q2FjaGUuZW5kKCkpCi0gICAgewotICAgICAgICAqb3V0U1JWID0gaXRlci0+c2Vjb25k
OwotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKLSAgICB9CisgICAgLy8g
VE9ETyhqbWFkaWxsKTogQXNzZXJ0IHdlIGRvbid0IG5lZWQgdG8gZHJvcCBzdGVuY2lsLgogCi0g
ICAgSUQzRDExUmVzb3VyY2UgKnRleHR1cmUgPSBudWxscHRyOwotICAgIGdsOjpFcnJvciBlcnJv
ciA9IGdldFJlc291cmNlKCZ0ZXh0dXJlKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBTUlZLZXkga2V5KGJhc2VMZXZl
bCwgbWlwTGV2ZWxzLCBmYWxzZSwgZmFsc2UpOworICAgIEFOR0xFX1RSWShnZXRDYWNoZWRPckNy
ZWF0ZVNSVihrZXksIG91dFNSVikpOwogCi0gICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpz
cnYgPSBudWxscHRyOwotICAgIGVycm9yID0gY3JlYXRlU1JWKGJhc2VMZXZlbCwgbWlwTGV2ZWxz
LCBtVGV4dHVyZUZvcm1hdFNldC0+c3J2Rm9ybWF0LCB0ZXh0dXJlLCAmc3J2KTsKLSAgICBpZiAo
ZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KLQot
ICAgIG1TcnZDYWNoZVtrZXldID0gc3J2OwotICAgICpvdXRTUlYgICAgICAgID0gc3J2OwotCi0g
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9y
KCk7CiB9CiAKLWQzZDExOjpBTkdMRUZvcm1hdCBUZXh0dXJlU3RvcmFnZTExOjpnZXRBTkdMRUZv
cm1hdCgpIGNvbnN0Citjb25zdCBkM2QxMTo6Rm9ybWF0ICZUZXh0dXJlU3RvcmFnZTExOjpnZXRG
b3JtYXRTZXQoKSBjb25zdAogewotICAgIHJldHVybiBtVGV4dHVyZUZvcm1hdFNldC0+Zm9ybWF0
OworICAgIHJldHVybiBtRm9ybWF0SW5mbzsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdl
MTE6OmdlbmVyYXRlU3dpenpsZXMoR0xlbnVtIHN3aXp6bGVSZWQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3dpenpsZUdyZWVuLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHN3aXp6bGVCbHVl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHN3
aXp6bGVBbHBoYSkKK2dsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExOjpnZW5lcmF0ZVN3aXp6bGVz
KGNvbnN0IGdsOjpTd2l6emxlU3RhdGUgJnN3aXp6bGVUYXJnZXQpCiB7Ci0gICAgU3dpenpsZUNh
Y2hlVmFsdWUgc3dpenpsZVRhcmdldChzd2l6emxlUmVkLCBzd2l6emxlR3JlZW4sIHN3aXp6bGVC
bHVlLCBzd2l6emxlQWxwaGEpOwogICAgIGZvciAoaW50IGxldmVsID0gMDsgbGV2ZWwgPCBnZXRM
ZXZlbENvdW50KCk7IGxldmVsKyspCiAgICAgewogICAgICAgICAvLyBDaGVjayBpZiB0aGUgc3dp
enpsZSBmb3IgdGhpcyBsZXZlbCBpcyBvdXQgb2YgZGF0ZQpAQCAtMzkzLDUzICszNDksNDEgQEAK
ICAgICAgICAgewogICAgICAgICAgICAgLy8gTmVlZCB0byByZS1yZW5kZXIgdGhlIHN3aXp6bGUg
Zm9yIHRoaXMgbGV2ZWwKICAgICAgICAgICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc291
cmNlU1JWID0gbnVsbHB0cjsKLSAgICAgICAgICAgIGdsOjpFcnJvciBlcnJvciAgICAgICAgICAg
ICAgICAgICAgID0gZ2V0U1JWTGV2ZWwobGV2ZWwsIHRydWUsICZzb3VyY2VTUlYpOworICAgICAg
ICAgICAgQU5HTEVfVFJZKGdldFNSVkxldmVsKGxldmVsLCB0cnVlLCAmc291cmNlU1JWKSk7CiAK
LSAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgfQotCiAgICAgICAgICAgICBJRDNE
MTFSZW5kZXJUYXJnZXRWaWV3ICpkZXN0UlRWID0gbnVsbHB0cjsKLSAgICAgICAgICAgIGVycm9y
ID0gZ2V0U3dpenpsZVJlbmRlclRhcmdldChsZXZlbCwgJmRlc3RSVFYpOwotICAgICAgICAgICAg
aWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gZXJyb3I7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBBTkdMRV9UUlkoZ2V0U3dpenps
ZVJlbmRlclRhcmdldChsZXZlbCwgJmRlc3RSVFYpKTsKIAogICAgICAgICAgICAgZ2w6OkV4dGVu
dHMgc2l6ZShnZXRMZXZlbFdpZHRoKGxldmVsKSwgZ2V0TGV2ZWxIZWlnaHQobGV2ZWwpLCBnZXRM
ZXZlbERlcHRoKGxldmVsKSk7CiAKICAgICAgICAgICAgIEJsaXQxMSAqYmxpdHRlciA9IG1SZW5k
ZXJlci0+Z2V0QmxpdHRlcigpOwogCi0gICAgICAgICAgICBlcnJvciA9IGJsaXR0ZXItPnN3aXp6
bGVUZXh0dXJlKHNvdXJjZVNSViwgZGVzdFJUViwgc2l6ZSwgc3dpenpsZVJlZCwgc3dpenpsZUdy
ZWVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l6emxl
Qmx1ZSwgc3dpenpsZUFscGhhKTsKLSAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAg
fQorICAgICAgICAgICAgQU5HTEVfVFJZKGJsaXR0ZXItPnN3aXp6bGVUZXh0dXJlKHNvdXJjZVNS
ViwgZGVzdFJUViwgc2l6ZSwgc3dpenpsZVRhcmdldCkpOwogCiAgICAgICAgICAgICBtU3dpenps
ZUNhY2hlW2xldmVsXSA9IHN3aXp6bGVUYXJnZXQ7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
IH0KIAotdm9pZCBUZXh0dXJlU3RvcmFnZTExOjppbnZhbGlkYXRlU3dpenpsZUNhY2hlTGV2ZWwo
aW50IG1pcExldmVsKQordm9pZCBUZXh0dXJlU3RvcmFnZTExOjptYXJrTGV2ZWxEaXJ0eShpbnQg
bWlwTGV2ZWwpCiB7CiAgICAgaWYgKG1pcExldmVsID49IDAgJiYgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgaW50PihtaXBMZXZlbCkgPCBBcnJheVNpemUobVN3aXp6bGVDYWNoZSkpCiAgICAgewotICAg
ICAgICAvLyBUaGUgZGVmYXVsdCBjb25zdHJ1Y3RvciBvZiBTd2l6emxlQ2FjaGVWYWx1ZSBoYXMg
R0xfTk9ORSBmb3IgYWxsIGNoYW5uZWxzIHdoaWNoIGlzIG5vdCBhCi0gICAgICAgIC8vIHZhbGlk
IHN3aXp6bGUgY29tYmluYXRpb24KLSAgICAgICAgbVN3aXp6bGVDYWNoZVttaXBMZXZlbF0gPSBT
d2l6emxlQ2FjaGVWYWx1ZSgpOworICAgICAgICAvLyBUaGUgZGVmYXVsdCBjb25zdHJ1Y3RvciBv
ZiBTd2l6emxlU3RhdGUgaGFzIEdMX0lOVkFMSURfSU5ERVggZm9yIGFsbCBjaGFubmVscyB3aGlj
aCBpcworICAgICAgICAvLyBub3QgYSB2YWxpZCBzd2l6emxlIGNvbWJpbmF0aW9uCisgICAgICAg
IG1Td2l6emxlQ2FjaGVbbWlwTGV2ZWxdID0gZ2w6OlN3aXp6bGVTdGF0ZSgpOwogICAgIH0KKwor
ICAgIFNhZmVSZWxlYXNlKG1Ecm9wU3RlbmNpbFRleHR1cmUpOwogfQogCi12b2lkIFRleHR1cmVT
dG9yYWdlMTE6OmludmFsaWRhdGVTd2l6emxlQ2FjaGUoKQordm9pZCBUZXh0dXJlU3RvcmFnZTEx
OjptYXJrRGlydHkoKQogewogICAgIGZvciAodW5zaWduZWQgaW50IG1pcExldmVsID0gMDsgbWlw
TGV2ZWwgPCBBcnJheVNpemUobVN3aXp6bGVDYWNoZSk7IG1pcExldmVsKyspCiAgICAgewotICAg
ICAgICBpbnZhbGlkYXRlU3dpenpsZUNhY2hlTGV2ZWwobWlwTGV2ZWwpOworICAgICAgICBtYXJr
TGV2ZWxEaXJ0eShtaXBMZXZlbCk7CiAgICAgfQogfQogCkBAIC00NTIsNyArMzk2LDcgQEAKIAog
ICAgIGNvbnN0IEdMaW50IGxldmVsID0gaW5kZXgubWlwSW5kZXg7CiAKLSAgICBpbnZhbGlkYXRl
U3dpenpsZUNhY2hlTGV2ZWwobGV2ZWwpOworICAgIG1hcmtMZXZlbERpcnR5KGxldmVsKTsKIAog
ICAgIGdsOjpFeHRlbnRzIHRleFNpemUoZ2V0TGV2ZWxXaWR0aChsZXZlbCksIGdldExldmVsSGVp
Z2h0KGxldmVsKSwgZ2V0TGV2ZWxEZXB0aChsZXZlbCkpOwogCkBAIC00NjEsNTcgKzQwNSw0OSBA
QAogICAgICAgICAgICAgICAgICAgICBjb3B5QXJlYS5kZXB0aCA9PSB0ZXhTaXplLmRlcHRoOwog
CiAgICAgSUQzRDExUmVzb3VyY2UgKmRzdFRleHR1cmUgPSBudWxscHRyOwotICAgIGdsOjpFcnJv
ciBlcnJvcihHTF9OT19FUlJPUik7CiAKICAgICAvLyBJZiB0aGUgemVyby1MT0Qgd29ya2Fyb3Vu
ZCBpcyBhY3RpdmUgYW5kIHdlIHdhbnQgdG8gdXBkYXRlIGEgbGV2ZWwgZ3JlYXRlciB0aGFuIHpl
cm8sIHRoZW4gd2UKICAgICAvLyBzaG91bGQgdXBkYXRlIHRoZSBtaXBtYXBwZWQgdGV4dHVyZSwg
ZXZlbiBpZiBtYXBtYXBzIGFyZSBjdXJyZW50bHkgZGlzYWJsZWQuCiAgICAgaWYgKGluZGV4Lm1p
cEluZGV4ID4gMCAmJiBtUmVuZGVyZXItPmdldFdvcmthcm91bmRzKCkuemVyb01heExvZFdvcmth
cm91bmQpCiAgICAgewotICAgICAgICBlcnJvciA9IGdldE1pcHBlZFJlc291cmNlKCZkc3RUZXh0
dXJlKTsKKyAgICAgICAgQU5HTEVfVFJZKGdldE1pcHBlZFJlc291cmNlKCZkc3RUZXh0dXJlKSk7
CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGVycm9yID0gZ2V0UmVzb3VyY2UoJmRz
dFRleHR1cmUpOworICAgICAgICBBTkdMRV9UUlkoZ2V0UmVzb3VyY2UoJmRzdFRleHR1cmUpKTsK
ICAgICB9CiAKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGVycm9yOwotICAgIH0KLQogICAgIHVuc2lnbmVkIGludCBkc3RTdWJyZXNvdXJjZSA9IGdldFN1
YnJlc291cmNlSW5kZXgoaW5kZXgpOwogCiAgICAgQVNTRVJUKGRzdFRleHR1cmUpOwogCiAgICAg
Y29uc3QgZDNkMTE6OkRYR0lGb3JtYXRTaXplICZkeGdpRm9ybWF0U2l6ZUluZm8gPQotICAgICAg
ICBkM2QxMTo6R2V0RFhHSUZvcm1hdFNpemVJbmZvKG1UZXh0dXJlRm9ybWF0U2V0LT50ZXhGb3Jt
YXQpOwotICAgIGlmICghZnVsbENvcHkgJiYgbVRleHR1cmVGb3JtYXRTZXQtPmRzdkZvcm1hdCAh
PSBEWEdJX0ZPUk1BVF9VTktOT1dOKQorICAgICAgICBkM2QxMTo6R2V0RFhHSUZvcm1hdFNpemVJ
bmZvKG1Gb3JtYXRJbmZvLnRleEZvcm1hdCk7CisgICAgaWYgKCFmdWxsQ29weSAmJiBtRm9ybWF0
SW5mby5kc3ZGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTikKICAgICB7CiAgICAgICAgIC8v
IENvcHlTdWJyZXNvdXJjZVJlZ2lvbiBjYW5ub3QgY29weSBwYXJ0aWFsIGRlcHRoIHN0ZW5jaWxz
LCB1c2UgdGhlIGJsaXR0ZXIgaW5zdGVhZAogICAgICAgICBCbGl0MTEgKmJsaXR0ZXIgPSBtUmVu
ZGVyZXItPmdldEJsaXR0ZXIoKTsKLQotICAgICAgICByZXR1cm4gYmxpdHRlci0+Y29weURlcHRo
U3RlbmNpbChzcmNUZXh0dXJlLCBzb3VyY2VTdWJyZXNvdXJjZSwgY29weUFyZWEsIHRleFNpemUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdFRleHR1cmUsIGRz
dFN1YnJlc291cmNlLCBjb3B5QXJlYSwgdGV4U2l6ZSwgbnVsbHB0cik7CisgICAgICAgIFRleHR1
cmVIZWxwZXIxMSBzb3VyY2UgPSBUZXh0dXJlSGVscGVyMTE6Ok1ha2VBbmRSZWZlcmVuY2Uoc3Jj
VGV4dHVyZSwgZ2V0Rm9ybWF0U2V0KCkpOworICAgICAgICBUZXh0dXJlSGVscGVyMTEgZGVzdCAg
ID0gVGV4dHVyZUhlbHBlcjExOjpNYWtlQW5kUmVmZXJlbmNlKGRzdFRleHR1cmUsIGdldEZvcm1h
dFNldCgpKTsKKyAgICAgICAgcmV0dXJuIGJsaXR0ZXItPmNvcHlEZXB0aFN0ZW5jaWwoc291cmNl
LCBzb3VyY2VTdWJyZXNvdXJjZSwgY29weUFyZWEsIHRleFNpemUsIGRlc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdFN1YnJlc291cmNlLCBjb3B5QXJlYSwg
dGV4U2l6ZSwgbnVsbHB0cik7CiAgICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIEQzRDEx
X0JPWCBzcmNCb3g7Ci0gICAgICAgIHNyY0JveC5sZWZ0ID0gY29weUFyZWEueDsKLSAgICAgICAg
c3JjQm94LnRvcCA9IGNvcHlBcmVhLnk7Ci0gICAgICAgIHNyY0JveC5yaWdodCA9Ci0gICAgICAg
ICAgICBjb3B5QXJlYS54ICsgcm91bmRVcChzdGF0aWNfY2FzdDxVSU5UPihjb3B5QXJlYS53aWR0
aCksIGR4Z2lGb3JtYXRTaXplSW5mby5ibG9ja1dpZHRoKTsKLSAgICAgICAgc3JjQm94LmJvdHRv
bSA9IGNvcHlBcmVhLnkgKwotICAgICAgICAgICAgICAgICAgICAgICAgcm91bmRVcChzdGF0aWNf
Y2FzdDxVSU5UPihjb3B5QXJlYS5oZWlnaHQpLCBkeGdpRm9ybWF0U2l6ZUluZm8uYmxvY2tIZWln
aHQpOwotICAgICAgICBzcmNCb3guZnJvbnQgPSBjb3B5QXJlYS56OwotICAgICAgICBzcmNCb3gu
YmFjayAgPSBjb3B5QXJlYS56ICsgY29weUFyZWEuZGVwdGg7CiAKLSAgICAgICAgSUQzRDExRGV2
aWNlQ29udGV4dCAqY29udGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpOworICAg
IEQzRDExX0JPWCBzcmNCb3g7CisgICAgc3JjQm94LmxlZnQgPSBjb3B5QXJlYS54OworICAgIHNy
Y0JveC50b3AgID0gY29weUFyZWEueTsKKyAgICBzcmNCb3gucmlnaHQgPQorICAgICAgICBjb3B5
QXJlYS54ICsgcm91bmRVcChzdGF0aWNfY2FzdDxVSU5UPihjb3B5QXJlYS53aWR0aCksIGR4Z2lG
b3JtYXRTaXplSW5mby5ibG9ja1dpZHRoKTsKKyAgICBzcmNCb3guYm90dG9tID0KKyAgICAgICAg
Y29weUFyZWEueSArIHJvdW5kVXAoc3RhdGljX2Nhc3Q8VUlOVD4oY29weUFyZWEuaGVpZ2h0KSwg
ZHhnaUZvcm1hdFNpemVJbmZvLmJsb2NrSGVpZ2h0KTsKKyAgICBzcmNCb3guZnJvbnQgPSBjb3B5
QXJlYS56OworICAgIHNyY0JveC5iYWNrICA9IGNvcHlBcmVhLnogKyBjb3B5QXJlYS5kZXB0aDsK
IAotICAgICAgICBjb250ZXh0LT5Db3B5U3VicmVzb3VyY2VSZWdpb24oZHN0VGV4dHVyZSwgZHN0
U3VicmVzb3VyY2UsIGNvcHlBcmVhLngsIGNvcHlBcmVhLnksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb3B5QXJlYS56LCBzcmNUZXh0dXJlLCBzb3VyY2VTdWJyZXNv
dXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxDb3B5ID8g
bnVsbHB0ciA6ICZzcmNCb3gpOwotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9S
KTsKLSAgICB9CisgICAgSUQzRDExRGV2aWNlQ29udGV4dCAqY29udGV4dCA9IG1SZW5kZXJlci0+
Z2V0RGV2aWNlQ29udGV4dCgpOworCisgICAgY29udGV4dC0+Q29weVN1YnJlc291cmNlUmVnaW9u
KGRzdFRleHR1cmUsIGRzdFN1YnJlc291cmNlLCBjb3B5QXJlYS54LCBjb3B5QXJlYS55LCBjb3B5
QXJlYS56LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNUZXh0dXJlLCBz
b3VyY2VTdWJyZXNvdXJjZSwgZnVsbENvcHkgPyBudWxscHRyIDogJnNyY0JveCk7CisgICAgcmV0
dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExOjpjb3B5
U3VicmVzb3VyY2VMZXZlbChJRDNEMTFSZXNvdXJjZSAqZHN0VGV4dHVyZSwKQEAgLTUyMiwyNCAr
NDU4LDE4IEBACiAgICAgQVNTRVJUKGRzdFRleHR1cmUpOwogCiAgICAgSUQzRDExUmVzb3VyY2Ug
KnNyY1RleHR1cmUgPSBudWxscHRyOwotICAgIGdsOjpFcnJvciBlcnJvcihHTF9OT19FUlJPUik7
CiAKICAgICAvLyBJZiB0aGUgemVyby1MT0Qgd29ya2Fyb3VuZCBpcyBhY3RpdmUgYW5kIHdlIHdh
bnQgdG8gdXBkYXRlIGEgbGV2ZWwgZ3JlYXRlciB0aGFuIHplcm8sIHRoZW4gd2UKICAgICAvLyBz
aG91bGQgdXBkYXRlIHRoZSBtaXBtYXBwZWQgdGV4dHVyZSwgZXZlbiBpZiBtYXBtYXBzIGFyZSBj
dXJyZW50bHkgZGlzYWJsZWQuCiAgICAgaWYgKGluZGV4Lm1pcEluZGV4ID4gMCAmJiBtUmVuZGVy
ZXItPmdldFdvcmthcm91bmRzKCkuemVyb01heExvZFdvcmthcm91bmQpCiAgICAgewotICAgICAg
ICBlcnJvciA9IGdldE1pcHBlZFJlc291cmNlKCZzcmNUZXh0dXJlKTsKKyAgICAgICAgQU5HTEVf
VFJZKGdldE1pcHBlZFJlc291cmNlKCZzcmNUZXh0dXJlKSk7CiAgICAgfQogICAgIGVsc2UKICAg
ICB7Ci0gICAgICAgIGVycm9yID0gZ2V0UmVzb3VyY2UoJnNyY1RleHR1cmUpOworICAgICAgICBB
TkdMRV9UUlkoZ2V0UmVzb3VyY2UoJnNyY1RleHR1cmUpKTsKICAgICB9CiAKLSAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KLQogICAg
IEFTU0VSVChzcmNUZXh0dXJlKTsKIAogICAgIHVuc2lnbmVkIGludCBzcmNTdWJyZXNvdXJjZSA9
IGdldFN1YnJlc291cmNlSW5kZXgoaW5kZXgpOwpAQCAtNTU1LDcgKzQ4NSw3IEBACiAgICAgICAg
IC8vIEhvd2V2ZXIsIEQzRDEwTGV2ZWw5IGRvZXNuJ3QgYWx3YXlzIHBlcmZvcm0gQ29weVN1YnJl
c291cmNlUmVnaW9uIGNvcnJlY3RseSB1bmxlc3MgdGhlCiAgICAgICAgIC8vIHNvdXJjZSBib3gg
aXMgc3BlY2lmaWVkLiBUaGlzIGlzIG9rYXksIHNpbmNlIHdlIGRvbid0IHBlcmZvcm0gQ29weVN1
YnJlc291cmNlUmVnaW9uIG9uCiAgICAgICAgIC8vIGRlcHRoL3N0ZW5jaWwgdGV4dHVyZXMgb24g
OV8zLgotICAgICAgICBBU1NFUlQobVRleHR1cmVGb3JtYXRTZXQtPmRzdkZvcm1hdCA9PSBEWEdJ
X0ZPUk1BVF9VTktOT1dOKTsKKyAgICAgICAgQVNTRVJUKG1Gb3JtYXRJbmZvLmRzdkZvcm1hdCA9
PSBEWEdJX0ZPUk1BVF9VTktOT1dOKTsKICAgICAgICAgc3JjQm94LmxlZnQgICA9IHJlZ2lvbi54
OwogICAgICAgICBzcmNCb3gucmlnaHQgID0gcmVnaW9uLnggKyByZWdpb24ud2lkdGg7CiAgICAg
ICAgIHNyY0JveC50b3AgICAgPSByZWdpb24ueTsKQEAgLTU3NiwyMSArNTA2LDEzIEBACiB7CiAg
ICAgQVNTRVJUKHNvdXJjZUluZGV4LmxheWVySW5kZXggPT0gZGVzdEluZGV4LmxheWVySW5kZXgp
OwogCi0gICAgaW52YWxpZGF0ZVN3aXp6bGVDYWNoZUxldmVsKGRlc3RJbmRleC5taXBJbmRleCk7
CisgICAgbWFya0xldmVsRGlydHkoZGVzdEluZGV4Lm1pcEluZGV4KTsKIAogICAgIFJlbmRlclRh
cmdldEQzRCAqc291cmNlID0gbnVsbHB0cjsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBnZXRSZW5k
ZXJUYXJnZXQoc291cmNlSW5kZXgsICZzb3VyY2UpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
Ci0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShnZXRS
ZW5kZXJUYXJnZXQoc291cmNlSW5kZXgsICZzb3VyY2UpKTsKIAogICAgIFJlbmRlclRhcmdldEQz
RCAqZGVzdCA9IG51bGxwdHI7Ci0gICAgZXJyb3IgPSBnZXRSZW5kZXJUYXJnZXQoZGVzdEluZGV4
LCAmZGVzdCk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKGdldFJlbmRlclRhcmdldChkZXN0SW5kZXgs
ICZkZXN0KSk7CiAKICAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNvdXJjZVNSViA9CiAg
ICAgICAgIEdldEFzPFJlbmRlclRhcmdldDExPihzb3VyY2UpLT5nZXRCbGl0U2hhZGVyUmVzb3Vy
Y2VWaWV3KCk7CkBAIC02MDMsMjYgKzUyNSwyMyBAQAogICAgIGdsOjpFeHRlbnRzIGRlc3RTaXpl
KGRlc3QtPmdldFdpZHRoKCksIGRlc3QtPmdldEhlaWdodCgpLCBkZXN0LT5nZXREZXB0aCgpKTsK
IAogICAgIEJsaXQxMSAqYmxpdHRlciA9IG1SZW5kZXJlci0+Z2V0QmxpdHRlcigpOwotICAgIHJl
dHVybiBibGl0dGVyLT5jb3B5VGV4dHVyZSgKLSAgICAgICAgc291cmNlU1JWLCBzb3VyY2VBcmVh
LCBzb3VyY2VTaXplLCBkZXN0UlRWLCBkZXN0QXJlYSwgZGVzdFNpemUsIG51bGxwdHIsCi0gICAg
ICAgIGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oc291cmNlLT5nZXRJbnRlcm5hbEZvcm1hdCgp
KS5mb3JtYXQsIEdMX0xJTkVBUiwgZmFsc2UpOworICAgIHJldHVybiBibGl0dGVyLT5jb3B5VGV4
dHVyZShzb3VyY2VTUlYsIHNvdXJjZUFyZWEsIHNvdXJjZVNpemUsIGRlc3RSVFYsIGRlc3RBcmVh
LCBkZXN0U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhz
b3VyY2UtPmdldEludGVybmFsRm9ybWF0KCkpLmZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfTElORUFSLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKIH0KIAotdm9pZCBU
ZXh0dXJlU3RvcmFnZTExOjp2ZXJpZnlTd2l6emxlRXhpc3RzKEdMZW51bSBzd2l6emxlUmVkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzd2l6emxl
R3JlZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHN3aXp6bGVCbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBzd2l6emxlQWxwaGEpCit2b2lkIFRleHR1cmVTdG9yYWdlMTE6OnZlcmlmeVN3aXp6
bGVFeGlzdHMoY29uc3QgZ2w6OlN3aXp6bGVTdGF0ZSAmc3dpenpsZVN0YXRlKQogewotICAgIFN3
aXp6bGVDYWNoZVZhbHVlIHN3aXp6bGVUYXJnZXQoc3dpenpsZVJlZCwgc3dpenpsZUdyZWVuLCBz
d2l6emxlQmx1ZSwgc3dpenpsZUFscGhhKTsKICAgICBmb3IgKHVuc2lnbmVkIGludCBsZXZlbCA9
IDA7IGxldmVsIDwgbU1pcExldmVsczsgbGV2ZWwrKykKICAgICB7Ci0gICAgICAgIEFTU0VSVCht
U3dpenpsZUNhY2hlW2xldmVsXSA9PSBzd2l6emxlVGFyZ2V0KTsKKyAgICAgICAgQVNTRVJUKG1T
d2l6emxlQ2FjaGVbbGV2ZWxdID09IHN3aXp6bGVTdGF0ZSk7CiAgICAgfQogfQogCiB2b2lkIFRl
eHR1cmVTdG9yYWdlMTE6OmNsZWFyU1JWQ2FjaGUoKQogewotICAgIGludmFsaWRhdGVTd2l6emxl
Q2FjaGUoKTsKKyAgICBtYXJrRGlydHkoKTsKIAogICAgIGF1dG8gaXRlciA9IG1TcnZDYWNoZS5i
ZWdpbigpOwogICAgIHdoaWxlIChpdGVyICE9IG1TcnZDYWNoZS5lbmQoKSkKQEAgLTY1MCwyNiAr
NTY5LDE4IEBACiAgICAgQVNTRVJUKGRlc3RTdG9yYWdlKTsKIAogICAgIElEM0QxMVJlc291cmNl
ICpzb3VyY2VSZXNvdWNlID0gbnVsbHB0cjsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBnZXRSZXNv
dXJjZSgmc291cmNlUmVzb3VjZSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKGdldFJlc291cmNlKCZz
b3VyY2VSZXNvdWNlKSk7CiAKICAgICBUZXh0dXJlU3RvcmFnZTExICpkZXN0MTEgICAgID0gR2V0
QXM8VGV4dHVyZVN0b3JhZ2UxMT4oZGVzdFN0b3JhZ2UpOwogICAgIElEM0QxMVJlc291cmNlICpk
ZXN0UmVzb3VyY2UgPSBudWxscHRyOwotICAgIGVycm9yID0gZGVzdDExLT5nZXRSZXNvdXJjZSgm
ZGVzdFJlc291cmNlKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkoZGVzdDExLT5nZXRSZXNvdXJjZSgm
ZGVzdFJlc291cmNlKSk7CiAKICAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICppbW1lZGlhdGVDb250
ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CiAgICAgaW1tZWRpYXRlQ29udGV4
dC0+Q29weVJlc291cmNlKGRlc3RSZXNvdXJjZSwgc291cmNlUmVzb3VjZSk7CiAKLSAgICBkZXN0
MTEtPmludmFsaWRhdGVTd2l6emxlQ2FjaGUoKTsKKyAgICBkZXN0MTEtPm1hcmtEaXJ0eSgpOwog
Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vy
cm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExOjpzZXREYXRhKGNvbnN0IGds
OjpJbWFnZUluZGV4ICZpbmRleCwKQEAgLTY4MSwxMiArNTkyLDEwIEBACiB7CiAgICAgQVNTRVJU
KCFpbWFnZS0+aXNEaXJ0eSgpKTsKIAorICAgIG1hcmtMZXZlbERpcnR5KGluZGV4Lm1pcEluZGV4
KTsKKwogICAgIElEM0QxMVJlc291cmNlICpyZXNvdXJjZSA9IG51bGxwdHI7Ci0gICAgZ2w6OkVy
cm9yIGVycm9yID0gZ2V0UmVzb3VyY2UoJnJlc291cmNlKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJv
cigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlko
Z2V0UmVzb3VyY2UoJnJlc291cmNlKSk7CiAgICAgQVNTRVJUKHJlc291cmNlKTsKIAogICAgIFVJ
TlQgZGVzdFN1YnJlc291cmNlID0gZ2V0U3VicmVzb3VyY2VJbmRleChpbmRleCk7CkBAIC03MDgs
MTcgKzYxNywyMiBAQAogICAgIGNvbnN0IGludCB3aWR0aCAgPSBkZXN0Qm94ID8gZGVzdEJveC0+
d2lkdGggOiBzdGF0aWNfY2FzdDxpbnQ+KGltYWdlLT5nZXRXaWR0aCgpKTsKICAgICBjb25zdCBp
bnQgaGVpZ2h0ID0gZGVzdEJveCA/IGRlc3RCb3gtPmhlaWdodCA6IHN0YXRpY19jYXN0PGludD4o
aW1hZ2UtPmdldEhlaWdodCgpKTsKICAgICBjb25zdCBpbnQgZGVwdGggPSBkZXN0Qm94ID8gZGVz
dEJveC0+ZGVwdGggOiBzdGF0aWNfY2FzdDxpbnQ+KGltYWdlLT5nZXREZXB0aCgpKTsKLSAgICBj
b25zdCBVSU5UIHNyY1Jvd1BpdGNoID0KLSAgICAgICAgaW50ZXJuYWxGb3JtYXRJbmZvLmNvbXB1
dGVSb3dQaXRjaCh0eXBlLCB3aWR0aCwgdW5wYWNrLmFsaWdubWVudCwgdW5wYWNrLnJvd0xlbmd0
aCk7Ci0gICAgY29uc3QgVUlOVCBzcmNEZXB0aFBpdGNoID0gaW50ZXJuYWxGb3JtYXRJbmZvLmNv
bXB1dGVEZXB0aFBpdGNoKAotICAgICAgICB0eXBlLCB3aWR0aCwgaGVpZ2h0LCB1bnBhY2suYWxp
Z25tZW50LCB1bnBhY2sucm93TGVuZ3RoLCB1bnBhY2suaW1hZ2VIZWlnaHQpOwotICAgIGNvbnN0
IEdMc2l6ZWkgc3JjU2tpcEJ5dGVzID0gaW50ZXJuYWxGb3JtYXRJbmZvLmNvbXB1dGVTa2lwUGl4
ZWxzKAotICAgICAgICBzcmNSb3dQaXRjaCwgc3JjRGVwdGhQaXRjaCwgdW5wYWNrLnNraXBJbWFn
ZXMsIHVucGFjay5za2lwUm93cywgdW5wYWNrLnNraXBQaXhlbHMpOworICAgIEdMdWludCBzcmNS
b3dQaXRjaCA9IDA7CisgICAgQU5HTEVfVFJZX1JFU1VMVCgKKyAgICAgICAgaW50ZXJuYWxGb3Jt
YXRJbmZvLmNvbXB1dGVSb3dQaXRjaCh0eXBlLCB3aWR0aCwgdW5wYWNrLmFsaWdubWVudCwgdW5w
YWNrLnJvd0xlbmd0aCksCisgICAgICAgIHNyY1Jvd1BpdGNoKTsKKyAgICBHTHVpbnQgc3JjRGVw
dGhQaXRjaCA9IDA7CisgICAgQU5HTEVfVFJZX1JFU1VMVChpbnRlcm5hbEZvcm1hdEluZm8uY29t
cHV0ZURlcHRoUGl0Y2goaGVpZ2h0LCB1bnBhY2suaW1hZ2VIZWlnaHQsIHNyY1Jvd1BpdGNoKSwK
KyAgICAgICAgICAgICAgICAgICAgIHNyY0RlcHRoUGl0Y2gpOworICAgIEdMdWludCBzcmNTa2lw
Qnl0ZXMgPSAwOworICAgIEFOR0xFX1RSWV9SRVNVTFQoCisgICAgICAgIGludGVybmFsRm9ybWF0
SW5mby5jb21wdXRlU2tpcEJ5dGVzKHNyY1Jvd1BpdGNoLCBzcmNEZXB0aFBpdGNoLCB1bnBhY2ss
IGluZGV4LmlzM0QoKSksCisgICAgICAgIHNyY1NraXBCeXRlcyk7CiAKLSAgICBjb25zdCBkM2Qx
MTo6VGV4dHVyZUZvcm1hdCAmZDNkMTFGb3JtYXQgPSBkM2QxMTo6R2V0VGV4dHVyZUZvcm1hdElu
Zm8oCi0gICAgICAgIGltYWdlLT5nZXRJbnRlcm5hbEZvcm1hdCgpLCBtUmVuZGVyZXItPmdldFJl
bmRlcmVyMTFEZXZpY2VDYXBzKCkpOworICAgIGNvbnN0IGQzZDExOjpGb3JtYXQgJmQzZDExRm9y
bWF0ID0KKyAgICAgICAgZDNkMTE6OkZvcm1hdDo6R2V0KGltYWdlLT5nZXRJbnRlcm5hbEZvcm1h
dCgpLCBtUmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCkpOwogICAgIGNvbnN0IGQz
ZDExOjpEWEdJRm9ybWF0U2l6ZSAmZHhnaUZvcm1hdEluZm8gPQotICAgICAgICBkM2QxMTo6R2V0
RFhHSUZvcm1hdFNpemVJbmZvKGQzZDExRm9ybWF0LmZvcm1hdFNldC0+dGV4Rm9ybWF0KTsKKyAg
ICAgICAgZDNkMTE6OkdldERYR0lGb3JtYXRTaXplSW5mbyhkM2QxMUZvcm1hdC50ZXhGb3JtYXQp
OwogCiAgICAgY29uc3Qgc2l6ZV90IG91dHB1dFBpeGVsU2l6ZSA9IGR4Z2lGb3JtYXRJbmZvLnBp
eGVsQnl0ZXM7CiAKQEAgLTcyOSwxNSArNjQzLDEwIEBACiAgICAgTWVtb3J5QnVmZmVyICpjb252
ZXJzaW9uQnVmZmVyID0gbnVsbHB0cjsKICAgICBjb25zdCB1aW50OF90ICpkYXRhICAgICAgICAg
ICAgPSBudWxscHRyOwogCi0gICAgZDNkMTE6OkxvYWRJbWFnZUZ1bmN0aW9uSW5mbyBsb2FkRnVu
Y3Rpb25JbmZvID0gZDNkMTFGb3JtYXQubG9hZEZ1bmN0aW9ucy5hdCh0eXBlKTsKKyAgICBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8gbG9hZEZ1bmN0aW9uSW5mbyA9IGQzZDExRm9ybWF0LmxvYWRGdW5j
dGlvbnModHlwZSk7CiAgICAgaWYgKGxvYWRGdW5jdGlvbkluZm8ucmVxdWlyZXNDb252ZXJzaW9u
KQogICAgIHsKLSAgICAgICAgZXJyb3IgPSBtUmVuZGVyZXItPmdldFNjcmF0Y2hNZW1vcnlCdWZm
ZXIobmVlZGVkU2l6ZSwgJmNvbnZlcnNpb25CdWZmZXIpOwotICAgICAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0K
LQorICAgICAgICBBTkdMRV9UUlkobVJlbmRlcmVyLT5nZXRTY3JhdGNoTWVtb3J5QnVmZmVyKG5l
ZWRlZFNpemUsICZjb252ZXJzaW9uQnVmZmVyKSk7CiAgICAgICAgIGxvYWRGdW5jdGlvbkluZm8u
bG9hZEZ1bmN0aW9uKHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBwaXhlbERhdGEgKyBzcmNTa2lwQnl0
ZXMsIHNyY1Jvd1BpdGNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
cmNEZXB0aFBpdGNoLCBjb252ZXJzaW9uQnVmZmVyLT5kYXRhKCksIGJ1ZmZlclJvd1BpdGNoLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJEZXB0aFBpdGNoKTsK
QEAgLTc3MywxMSArNjgyLDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJ1ZmZlclJvd1BpdGNoLCBidWZmZXJEZXB0aFBpdGNoKTsKICAgICB9CiAKLSAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3Io
KTsKIH0KIAorZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTE6OmNyZWF0ZURyb3BTdGVuY2lsVGV4
dHVyZSgpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sICJEcm9wIHN0ZW5jaWwgdGV4dHVyZSBub3QgaW1wbGVtZW50ZWQu
Iik7Cit9CisKIFRleHR1cmVTdG9yYWdlMTFfMkQ6OlRleHR1cmVTdG9yYWdlMTFfMkQoUmVuZGVy
ZXIxMSAqcmVuZGVyZXIsIFN3YXBDaGFpbjExICpzd2FwY2hhaW4pCi0gICAgOiBUZXh0dXJlU3Rv
cmFnZTExKHJlbmRlcmVyLCBEM0QxMV9CSU5EX1JFTkRFUl9UQVJHRVQgfCBEM0QxMV9CSU5EX1NI
QURFUl9SRVNPVVJDRSwgMCksCisgICAgOiBUZXh0dXJlU3RvcmFnZTExKHJlbmRlcmVyLAorICAg
ICAgICAgICAgICAgICAgICAgICBEM0QxMV9CSU5EX1JFTkRFUl9UQVJHRVQgfCBEM0QxMV9CSU5E
X1NIQURFUl9SRVNPVVJDRSwKKyAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgc3dhcGNoYWluLT5nZXRSZW5kZXJUYXJnZXRJbnRlcm5hbEZvcm1hdCgpKSwK
ICAgICAgIG1UZXh0dXJlKHN3YXBjaGFpbi0+Z2V0T2Zmc2NyZWVuVGV4dHVyZSgpKSwKICAgICAg
IG1MZXZlbFplcm9UZXh0dXJlKG51bGxwdHIpLAogICAgICAgbUxldmVsWmVyb1JlbmRlclRhcmdl
dChudWxscHRyKSwKQEAgLTgwMCwxMyArNzE4LDYgQEAKICAgICBtVGV4dHVyZUhlaWdodCA9IHRl
eERlc2MuSGVpZ2h0OwogICAgIG1UZXh0dXJlRGVwdGggID0gMTsKICAgICBtSGFzS2V5ZWRNdXRl
eCA9ICh0ZXhEZXNjLk1pc2NGbGFncyAmIEQzRDExX1JFU09VUkNFX01JU0NfU0hBUkVEX0tFWUVE
TVVURVgpICE9IDA7Ci0KLSAgICBtSW50ZXJuYWxGb3JtYXQgPSBzd2FwY2hhaW4tPkdldFJlbmRl
clRhcmdldEludGVybmFsRm9ybWF0KCk7Ci0KLSAgICBjb25zdCBhdXRvICZmb3JtYXRJbmZvID0K
LSAgICAgICAgZDNkMTE6OkdldFRleHR1cmVGb3JtYXRJbmZvKG1JbnRlcm5hbEZvcm1hdCwgbVJl
bmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpKTsKLSAgICBtVGV4dHVyZUZvcm1hdFNl
dCA9IGZvcm1hdEluZm8uZm9ybWF0U2V0OwotICAgIG1Td2l6emxlRm9ybWF0U2V0ID0gZm9ybWF0
SW5mby5zd2l6emxlRm9ybWF0U2V0OwogfQogCiBUZXh0dXJlU3RvcmFnZTExXzJEOjpUZXh0dXJl
U3RvcmFnZTExXzJEKFJlbmRlcmVyMTEgKnJlbmRlcmVyLApAQCAtODIyLDcgKzczMyw4IEBACiAg
ICAgICAgICAgR2V0VGV4dHVyZU1pc2NGbGFncyhpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyVGFyZ2V0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGV2ZWxzKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsZXZlbHMpLAorICAgICAgICAgIGludGVybmFsZm9ybWF0KSwKICAgICAgIG1UZXh0dXJlKG51
bGxwdHIpLAogICAgICAgbUhhc0tleWVkTXV0ZXgoZmFsc2UpLAogICAgICAgbUxldmVsWmVyb1Rl
eHR1cmUobnVsbHB0ciksCkBAIC04MzcsMTQgKzc0OSw3IEBACiAgICAgICAgIG1Td2l6emxlUmVu
ZGVyVGFyZ2V0c1tpXSA9IG51bGxwdHI7CiAgICAgfQogCi0gICAgbUludGVybmFsRm9ybWF0ID0g
aW50ZXJuYWxmb3JtYXQ7Ci0KLSAgICBjb25zdCBkM2QxMTo6VGV4dHVyZUZvcm1hdCAmZm9ybWF0
SW5mbyA9Ci0gICAgICAgIGQzZDExOjpHZXRUZXh0dXJlRm9ybWF0SW5mbyhpbnRlcm5hbGZvcm1h
dCwgcmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCkpOwotICAgIG1UZXh0dXJlRm9y
bWF0U2V0ID0gZm9ybWF0SW5mby5mb3JtYXRTZXQ7Ci0gICAgbVN3aXp6bGVGb3JtYXRTZXQgPSBm
b3JtYXRJbmZvLnN3aXp6bGVGb3JtYXRTZXQ7Ci0KLSAgICBkM2QxMTo6TWFrZVZhbGlkU2l6ZShm
YWxzZSwgbVRleHR1cmVGb3JtYXRTZXQtPnRleEZvcm1hdCwgJndpZHRoLCAmaGVpZ2h0LCAmbVRv
cExldmVsKTsKKyAgICBkM2QxMTo6TWFrZVZhbGlkU2l6ZShmYWxzZSwgbUZvcm1hdEluZm8udGV4
Rm9ybWF0LCAmd2lkdGgsICZoZWlnaHQsICZtVG9wTGV2ZWwpOwogICAgIG1NaXBMZXZlbHMgICAg
ID0gbVRvcExldmVsICsgbGV2ZWxzOwogICAgIG1UZXh0dXJlV2lkdGggID0gd2lkdGg7CiAgICAg
bVRleHR1cmVIZWlnaHQgPSBoZWlnaHQ7CkBAIC04NzEsNiArNzc2LDcgQEAKICAgICAgICAgICAg
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICAgICAgLy8gVE9ETzogRmluZCBhIHdheSB0byByZXBvcnQgdGhpcyBiYWNrIHRvIHRoZSBj
b250ZXh0CisgICAgICAgICAgICAgICAgICAgIEVSUigiRXJyb3IgaW5pdGlhbGl6YXRpb24gdGV4
dHVyZSBzdG9yYWdlOiAleCIsIGVycm9yLmdldENvZGUoKSk7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC05MDksMTggKzgxNSwxMCBAQAogICAgICAgICAv
LyBjb3JyZXNwb25kaW5nIHRleHR1cmVzIGluIGRlc3RTdG9yYWdlLgogICAgICAgICBpZiAobVRl
eHR1cmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGRlc3QxMS0+
dXNlTGV2ZWxaZXJvV29ya2Fyb3VuZFRleHR1cmUoZmFsc2UpOwotICAgICAgICAgICAgaWYgKGVy
cm9yLmlzRXJyb3IoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJy
b3I7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBBTkdMRV9UUlkoZGVzdDExLT51c2VMZXZl
bFplcm9Xb3JrYXJvdW5kVGV4dHVyZShmYWxzZSkpOwogCiAgICAgICAgICAgICBJRDNEMTFSZXNv
dXJjZSAqZGVzdFJlc291cmNlID0gbnVsbHB0cjsKLSAgICAgICAgICAgIGVycm9yID0gZGVzdDEx
LT5nZXRSZXNvdXJjZSgmZGVzdFJlc291cmNlKTsKLSAgICAgICAgICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAg
ICAgICAgICAgfQorICAgICAgICAgICAgQU5HTEVfVFJZKGRlc3QxMS0+Z2V0UmVzb3VyY2UoJmRl
c3RSZXNvdXJjZSkpOwogCiAgICAgICAgICAgICBpbW1lZGlhdGVDb250ZXh0LT5Db3B5UmVzb3Vy
Y2UoZGVzdFJlc291cmNlLCBtVGV4dHVyZSk7CiAgICAgICAgIH0KQEAgLTkyNyw0NSArODI1LDI3
IEBACiAKICAgICAgICAgaWYgKG1MZXZlbFplcm9UZXh0dXJlKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBnbDo6RXJyb3IgZXJyb3IgPSBkZXN0MTEtPnVzZUxldmVsWmVyb1dvcmthcm91bmRUZXh0
dXJlKHRydWUpOwotICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAgICB9CisgICAgICAg
ICAgICBBTkdMRV9UUlkoZGVzdDExLT51c2VMZXZlbFplcm9Xb3JrYXJvdW5kVGV4dHVyZSh0cnVl
KSk7CiAKICAgICAgICAgICAgIElEM0QxMVJlc291cmNlICpkZXN0UmVzb3VyY2UgPSBudWxscHRy
OwotICAgICAgICAgICAgZXJyb3IgPSBkZXN0MTEtPmdldFJlc291cmNlKCZkZXN0UmVzb3VyY2Up
OwotICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBBTkdM
RV9UUlkoZGVzdDExLT5nZXRSZXNvdXJjZSgmZGVzdFJlc291cmNlKSk7CiAKICAgICAgICAgICAg
IGltbWVkaWF0ZUNvbnRleHQtPkNvcHlSZXNvdXJjZShkZXN0UmVzb3VyY2UsIG1MZXZlbFplcm9U
ZXh0dXJlKTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJS
T1IpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9Ci0gICAgZWxzZQotICAg
IHsKLSAgICAgICAgSUQzRDExUmVzb3VyY2UgKnNvdXJjZVJlc291Y2UgPSBudWxscHRyOwotICAg
ICAgICBnbDo6RXJyb3IgZXJyb3IgPSBnZXRSZXNvdXJjZSgmc291cmNlUmVzb3VjZSk7Ci0gICAg
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBl
cnJvcjsKLSAgICAgICAgfQogCi0gICAgICAgIElEM0QxMVJlc291cmNlICpkZXN0UmVzb3VyY2Ug
PSBudWxscHRyOwotICAgICAgICBlcnJvciA9IGRlc3QxMS0+Z2V0UmVzb3VyY2UoJmRlc3RSZXNv
dXJjZSk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgIElEM0QxMVJlc291cmNlICpzb3VyY2VS
ZXNvdWNlID0gbnVsbHB0cjsKKyAgICBBTkdMRV9UUlkoZ2V0UmVzb3VyY2UoJnNvdXJjZVJlc291
Y2UpKTsKIAotICAgICAgICBpbW1lZGlhdGVDb250ZXh0LT5Db3B5UmVzb3VyY2UoZGVzdFJlc291
cmNlLCBzb3VyY2VSZXNvdWNlKTsKLSAgICAgICAgZGVzdDExLT5pbnZhbGlkYXRlU3dpenpsZUNh
Y2hlKCk7Ci0gICAgfQorICAgIElEM0QxMVJlc291cmNlICpkZXN0UmVzb3VyY2UgPSBudWxscHRy
OworICAgIEFOR0xFX1RSWShkZXN0MTEtPmdldFJlc291cmNlKCZkZXN0UmVzb3VyY2UpKTsKIAot
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIGltbWVkaWF0ZUNvbnRleHQt
PkNvcHlSZXNvdXJjZShkZXN0UmVzb3VyY2UsIHNvdXJjZVJlc291Y2UpOworICAgIGRlc3QxMS0+
bWFya0RpcnR5KCk7CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9y
IFRleHR1cmVTdG9yYWdlMTFfMkQ6OnVzZUxldmVsWmVyb1dvcmthcm91bmRUZXh0dXJlKGJvb2wg
dXNlTGV2ZWxaZXJvVGV4dHVyZSkKQEAgLTk3NiwxMSArODU2LDcgQEAKICAgICB7CiAgICAgICAg
IGlmICghbVVzZUxldmVsWmVyb1RleHR1cmUgJiYgbVRleHR1cmUpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGVuc3VyZVRleHR1cmVFeGlzdHMoMSk7Ci0gICAgICAg
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IHJldHVybiBlcnJvcjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFOR0xFX1RSWShlbnN1
cmVUZXh0dXJlRXhpc3RzKDEpKTsKIAogICAgICAgICAgICAgLy8gUHVsbCBkYXRhIGJhY2sgZnJv
bSB0aGUgbWlwcGVkIHRleHR1cmUgaWYgbmVjZXNzYXJ5LgogICAgICAgICAgICAgQVNTRVJUKG1M
ZXZlbFplcm9UZXh0dXJlKTsKQEAgLTk5NCwxMSArODcwLDcgQEAKICAgICB7CiAgICAgICAgIGlm
IChtVXNlTGV2ZWxaZXJvVGV4dHVyZSAmJiBtTGV2ZWxaZXJvVGV4dHVyZSkKICAgICAgICAgewot
ICAgICAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gZW5zdXJlVGV4dHVyZUV4aXN0cyhtTWlwTGV2
ZWxzKTsKLSAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAg
QU5HTEVfVFJZKGVuc3VyZVRleHR1cmVFeGlzdHMobU1pcExldmVscykpOwogCiAgICAgICAgICAg
ICAvLyBQdWxsIGRhdGEgYmFjayBmcm9tIHRoZSBsZXZlbCB6ZXJvIHRleHR1cmUgaWYgbmVjZXNz
YXJ5LgogICAgICAgICAgICAgQVNTRVJUKG1UZXh0dXJlKTsKQEAgLTEwMjUsNyArODk3LDcgQEAK
ICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwor
ICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiB2b2lkIFRleHR1cmVTdG9yYWdlMTFfMkQ6
OmFzc29jaWF0ZUltYWdlKEltYWdlMTEgKmltYWdlLCBjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5k
ZXgpCkBAIC0xMDk4LDE2ICs5NzAsMTIgQEAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAvLyBGb3JjZSB0aGUgaW1hZ2UgdG8gcmVjb3ZlciBmcm9tIHN0b3JhZ2UgYmVmb3JlIGl0cyBk
YXRhIGlzIG92ZXJ3cml0dGVuLgogICAgICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCByZXNldCBt
QXNzb2NpYXRlZEltYWdlc1tsZXZlbF0gdG8gbnVsbHB0ciB0b28uCi0gICAgICAgICAgICAgICAg
Z2w6OkVycm9yIGVycm9yID0gbUFzc29jaWF0ZWRJbWFnZXNbbGV2ZWxdLT5yZWNvdmVyRnJvbUFz
c29jaWF0ZWRTdG9yYWdlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkK
LSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgQU5HTEVfVFJZKG1Bc3NvY2lhdGVkSW1h
Z2VzW2xldmVsXS0+cmVjb3ZlckZyb21Bc3NvY2lhdGVkU3RvcmFnZSgpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1Ip
OworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZVN0b3Jh
Z2UxMV8yRDo6Z2V0UmVzb3VyY2UoSUQzRDExUmVzb3VyY2UgKipvdXRSZXNvdXJjZSkKQEAgLTEx
MTQsMjYgKzk4MiwxNiBAQAogewogICAgIGlmIChtVXNlTGV2ZWxaZXJvVGV4dHVyZSAmJiBtTWlw
TGV2ZWxzID4gMSkKICAgICB7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGVuc3VyZVRleHR1
cmVFeGlzdHMoMSk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBBTkdMRV9UUlkoZW5z
dXJlVGV4dHVyZUV4aXN0cygxKSk7CiAKICAgICAgICAgKm91dFJlc291cmNlID0gbUxldmVsWmVy
b1RleHR1cmU7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAg
ICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAg
Z2w6OkVycm9yIGVycm9yID0gZW5zdXJlVGV4dHVyZUV4aXN0cyhtTWlwTGV2ZWxzKTsKLSAgICAg
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVy
cm9yOwotICAgICAgICB9CiAKLSAgICAgICAgKm91dFJlc291cmNlID0gbVRleHR1cmU7Ci0gICAg
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwotICAgIH0KKyAgICBBTkdMRV9UUlko
ZW5zdXJlVGV4dHVyZUV4aXN0cyhtTWlwTGV2ZWxzKSk7CisKKyAgICAqb3V0UmVzb3VyY2UgPSBt
VGV4dHVyZTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFRleHR1
cmVTdG9yYWdlMTFfMkQ6OmdldE1pcHBlZFJlc291cmNlKElEM0QxMVJlc291cmNlICoqb3V0UmVz
b3VyY2UpCkBAIC0xMTQxLDE0ICs5OTksMTAgQEAKICAgICAvLyBUaGlzIHNob3VsZG4ndCBiZSBj
YWxsZWQgdW5sZXNzIHRoZSB6ZXJvIG1heCBMT0Qgd29ya2Fyb3VuZCBpcyBhY3RpdmUuCiAgICAg
QVNTRVJUKG1SZW5kZXJlci0+Z2V0V29ya2Fyb3VuZHMoKS56ZXJvTWF4TG9kV29ya2Fyb3VuZCk7
CiAKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBlbnN1cmVUZXh0dXJlRXhpc3RzKG1NaXBMZXZlbHMp
OwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7
Ci0gICAgfQorICAgIEFOR0xFX1RSWShlbnN1cmVUZXh0dXJlRXhpc3RzKG1NaXBMZXZlbHMpKTsK
IAogICAgICpvdXRSZXNvdXJjZSA9IG1UZXh0dXJlOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
Tk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4
dHVyZVN0b3JhZ2UxMV8yRDo6ZW5zdXJlVGV4dHVyZUV4aXN0cyhpbnQgbWlwTGV2ZWxzKQpAQCAt
MTE3Miw3ICsxMDI2LDcgQEAKICAgICAgICAgZGVzYy5IZWlnaHQgICAgICAgICAgICAgPSBtVGV4
dHVyZUhlaWdodDsKICAgICAgICAgZGVzYy5NaXBMZXZlbHMgICAgICAgICAgPSBtaXBMZXZlbHM7
CiAgICAgICAgIGRlc2MuQXJyYXlTaXplICAgICAgICAgID0gMTsKLSAgICAgICAgZGVzYy5Gb3Jt
YXQgICAgICAgICAgICAgPSBtVGV4dHVyZUZvcm1hdFNldC0+dGV4Rm9ybWF0OworICAgICAgICBk
ZXNjLkZvcm1hdCAgICAgICAgICAgICA9IG1Gb3JtYXRJbmZvLnRleEZvcm1hdDsKICAgICAgICAg
ZGVzYy5TYW1wbGVEZXNjLkNvdW50ICAgPSAxOwogICAgICAgICBkZXNjLlNhbXBsZURlc2MuUXVh
bGl0eSA9IDA7CiAgICAgICAgIGRlc2MuVXNhZ2UgICAgICAgICAgICAgID0gRDNEMTFfVVNBR0Vf
REVGQVVMVDsKQEAgLTEyMjIsMjkgKzEwNzYsMTcgQEAKICAgICBpZiAobVJlbmRlclRhcmdldFts
ZXZlbF0pCiAgICAgewogICAgICAgICAqb3V0UlQgPSBtUmVuZGVyVGFyZ2V0W2xldmVsXTsKLSAg
ICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOwogICAgIH0KIAogICAgIElEM0QxMVJlc291cmNlICp0ZXh0dXJlID0gbnVsbHB0
cjsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBnZXRSZXNvdXJjZSgmdGV4dHVyZSk7Ci0gICAgaWYg
KGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Cisg
ICAgQU5HTEVfVFJZKGdldFJlc291cmNlKCZ0ZXh0dXJlKSk7CiAKICAgICBJRDNEMTFTaGFkZXJS
ZXNvdXJjZVZpZXcgKnNydiA9IG51bGxwdHI7Ci0gICAgZXJyb3IgPSBnZXRTUlZMZXZlbChsZXZl
bCwgZmFsc2UsICZzcnYpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAg
ICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShnZXRTUlZMZXZlbChsZXZlbCwg
ZmFsc2UsICZzcnYpKTsKIAogICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqYmxpdFNSViA9
IG51bGxwdHI7Ci0gICAgZXJyb3IgPSBnZXRTUlZMZXZlbChsZXZlbCwgdHJ1ZSwgJmJsaXRTUlYp
OwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7
Ci0gICAgfQorICAgIEFOR0xFX1RSWShnZXRTUlZMZXZlbChsZXZlbCwgdHJ1ZSwgJmJsaXRTUlYp
KTsKIAogICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsK
IApAQCAtMTI1Myw3ICsxMDk1LDcgQEAKICAgICAgICAgaWYgKCFtTGV2ZWxaZXJvUmVuZGVyVGFy
Z2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBEM0QxMV9SRU5ERVJfVEFSR0VUX1ZJRVdfREVT
QyBydHZEZXNjOwotICAgICAgICAgICAgcnR2RGVzYy5Gb3JtYXQgICAgICAgICAgICAgPSBtVGV4
dHVyZUZvcm1hdFNldC0+cnR2Rm9ybWF0OworICAgICAgICAgICAgcnR2RGVzYy5Gb3JtYXQgICAg
ICAgICAgICAgPSBtRm9ybWF0SW5mby5ydHZGb3JtYXQ7CiAgICAgICAgICAgICBydHZEZXNjLlZp
ZXdEaW1lbnNpb24gICAgICA9IEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTJEOwogICAgICAg
ICAgICAgcnR2RGVzYy5UZXh0dXJlMkQuTWlwU2xpY2UgPSBtVG9wTGV2ZWwgKyBsZXZlbDsKIApA
QCAtMTI3MCw4ICsxMTEyLDggQEAKICAgICAgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0
KSk7CiAKICAgICAgICAgICAgIG1MZXZlbFplcm9SZW5kZXJUYXJnZXQgPSBuZXcgVGV4dHVyZVJl
bmRlclRhcmdldDExKAotICAgICAgICAgICAgICAgIHJ0diwgbUxldmVsWmVyb1RleHR1cmUsIG51
bGxwdHIsIG51bGxwdHIsIG1JbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICBtVGV4dHVy
ZUZvcm1hdFNldC0+Zm9ybWF0LCBnZXRMZXZlbFdpZHRoKGxldmVsKSwgZ2V0TGV2ZWxIZWlnaHQo
bGV2ZWwpLCAxLCAwKTsKKyAgICAgICAgICAgICAgICBydHYsIG1MZXZlbFplcm9UZXh0dXJlLCBu
dWxscHRyLCBudWxscHRyLCBtRm9ybWF0SW5mby5pbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAg
ICAgICBnZXRGb3JtYXRTZXQoKSwgZ2V0TGV2ZWxXaWR0aChsZXZlbCksIGdldExldmVsSGVpZ2h0
KGxldmVsKSwgMSwgMCk7CiAKICAgICAgICAgICAgIC8vIFJlbmRlclRhcmdldCB3aWxsIHRha2Ug
b3duZXJzaGlwIG9mIHRoZXNlIHJlc291cmNlcwogICAgICAgICAgICAgU2FmZVJlbGVhc2UocnR2
KTsKQEAgLTEyNzgsMTMgKzExMjAsMTMgQEAKICAgICAgICAgfQogCiAgICAgICAgICpvdXRSVCA9
IG1MZXZlbFplcm9SZW5kZXJUYXJnZXQ7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9f
RVJST1IpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiAKLSAgICBpZiAo
bVRleHR1cmVGb3JtYXRTZXQtPnJ0dkZvcm1hdCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dOKQorICAg
IGlmIChtRm9ybWF0SW5mby5ydHZGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTikKICAgICB7
CiAgICAgICAgIEQzRDExX1JFTkRFUl9UQVJHRVRfVklFV19ERVNDIHJ0dkRlc2M7Ci0gICAgICAg
IHJ0dkRlc2MuRm9ybWF0ICAgICAgICAgICAgID0gbVRleHR1cmVGb3JtYXRTZXQtPnJ0dkZvcm1h
dDsKKyAgICAgICAgcnR2RGVzYy5Gb3JtYXQgICAgICAgICAgICAgPSBtRm9ybWF0SW5mby5ydHZG
b3JtYXQ7CiAgICAgICAgIHJ0dkRlc2MuVmlld0RpbWVuc2lvbiAgICAgID0gRDNEMTFfUlRWX0RJ
TUVOU0lPTl9URVhUVVJFMkQ7CiAgICAgICAgIHJ0dkRlc2MuVGV4dHVyZTJELk1pcFNsaWNlID0g
bVRvcExldmVsICsgbGV2ZWw7CiAKQEAgLTEzMDEsNyArMTE0Myw3IEBACiAgICAgICAgIH0KIAog
ICAgICAgICBtUmVuZGVyVGFyZ2V0W2xldmVsXSA9IG5ldyBUZXh0dXJlUmVuZGVyVGFyZ2V0MTEo
Ci0gICAgICAgICAgICBydHYsIHRleHR1cmUsIHNydiwgYmxpdFNSViwgbUludGVybmFsRm9ybWF0
LCBtVGV4dHVyZUZvcm1hdFNldC0+Zm9ybWF0LAorICAgICAgICAgICAgcnR2LCB0ZXh0dXJlLCBz
cnYsIGJsaXRTUlYsIG1Gb3JtYXRJbmZvLmludGVybmFsRm9ybWF0LCBnZXRGb3JtYXRTZXQoKSwK
ICAgICAgICAgICAgIGdldExldmVsV2lkdGgobGV2ZWwpLCBnZXRMZXZlbEhlaWdodChsZXZlbCks
IDEsIDApOwogCiAgICAgICAgIC8vIFJlbmRlclRhcmdldCB3aWxsIHRha2Ugb3duZXJzaGlwIG9m
IHRoZXNlIHJlc291cmNlcwpAQCAtMTMxMSwxMCArMTE1MywxMCBAQAogICAgICAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX05PX0VSUk9SKTsKICAgICB9CiAKLSAgICBBU1NFUlQobVRleHR1cmVGb3Jt
YXRTZXQtPmRzdkZvcm1hdCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dOKTsKKyAgICBBU1NFUlQobUZv
cm1hdEluZm8uZHN2Rm9ybWF0ICE9IERYR0lfRk9STUFUX1VOS05PV04pOwogCiAgICAgRDNEMTFf
REVQVEhfU1RFTkNJTF9WSUVXX0RFU0MgZHN2RGVzYzsKLSAgICBkc3ZEZXNjLkZvcm1hdCAgICAg
ICAgICAgICA9IG1UZXh0dXJlRm9ybWF0U2V0LT5kc3ZGb3JtYXQ7CisgICAgZHN2RGVzYy5Gb3Jt
YXQgICAgICAgICAgICAgPSBtRm9ybWF0SW5mby5kc3ZGb3JtYXQ7CiAgICAgZHN2RGVzYy5WaWV3
RGltZW5zaW9uICAgICAgPSBEM0QxMV9EU1ZfRElNRU5TSU9OX1RFWFRVUkUyRDsKICAgICBkc3ZE
ZXNjLlRleHR1cmUyRC5NaXBTbGljZSA9IG1Ub3BMZXZlbCArIGxldmVsOwogICAgIGRzdkRlc2Mu
RmxhZ3MgICAgICAgICAgICAgID0gMDsKQEAgLTEzMzIsNyArMTE3NCw3IEBACiAgICAgfQogCiAg
ICAgbVJlbmRlclRhcmdldFtsZXZlbF0gPQotICAgICAgICBuZXcgVGV4dHVyZVJlbmRlclRhcmdl
dDExKGRzdiwgdGV4dHVyZSwgc3J2LCBtSW50ZXJuYWxGb3JtYXQsIG1UZXh0dXJlRm9ybWF0U2V0
LT5mb3JtYXQsCisgICAgICAgIG5ldyBUZXh0dXJlUmVuZGVyVGFyZ2V0MTEoZHN2LCB0ZXh0dXJl
LCBzcnYsIG1Gb3JtYXRJbmZvLmludGVybmFsRm9ybWF0LCBnZXRGb3JtYXRTZXQoKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMZXZlbFdpZHRoKGxldmVsKSwgZ2V0TGV2
ZWxIZWlnaHQobGV2ZWwpLCAxLCAwKTsKIAogICAgIC8vIFJlbmRlclRhcmdldCB3aWxsIHRha2Ug
b3duZXJzaGlwIG9mIHRoZXNlIHJlc291cmNlcwpAQCAtMTMzOSw3ICsxMTgxLDcgQEAKICAgICBT
YWZlUmVsZWFzZShkc3YpOwogCiAgICAgKm91dFJUID0gbVJlbmRlclRhcmdldFtsZXZlbF07Ci0g
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9y
KCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExXzJEOjpjcmVhdGVTUlYoaW50IGJh
c2VMZXZlbCwKQEAgLTE0MDcsNyArMTI0OSw3IEBACiAgICAgICAgIGRlc2MuSGVpZ2h0ICAgICAg
ICAgICAgID0gbVRleHR1cmVIZWlnaHQ7CiAgICAgICAgIGRlc2MuTWlwTGV2ZWxzICAgICAgICAg
ID0gbU1pcExldmVsczsKICAgICAgICAgZGVzYy5BcnJheVNpemUgICAgICAgICAgPSAxOwotICAg
ICAgICBkZXNjLkZvcm1hdCAgICAgICAgICAgICA9IG1Td2l6emxlRm9ybWF0U2V0LT50ZXhGb3Jt
YXQ7CisgICAgICAgIGRlc2MuRm9ybWF0ICAgICAgICAgICAgID0gbUZvcm1hdEluZm8uc3dpenps
ZS50ZXhGb3JtYXQ7CiAgICAgICAgIGRlc2MuU2FtcGxlRGVzYy5Db3VudCAgID0gMTsKICAgICAg
ICAgZGVzYy5TYW1wbGVEZXNjLlF1YWxpdHkgPSAwOwogICAgICAgICBkZXNjLlVzYWdlICAgICAg
ICAgICAgICA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7CkBAIC0xNDM5LDE2ICsxMjgxLDEyIEBACiAg
ICAgaWYgKCFtU3dpenpsZVJlbmRlclRhcmdldHNbbWlwTGV2ZWxdKQogICAgIHsKICAgICAgICAg
SUQzRDExUmVzb3VyY2UgKnN3aXp6bGVUZXh0dXJlID0gbnVsbHB0cjsKLSAgICAgICAgZ2w6OkVy
cm9yIGVycm9yID0gZ2V0U3dpenpsZVRleHR1cmUoJnN3aXp6bGVUZXh0dXJlKTsKLSAgICAgICAg
aWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9y
OwotICAgICAgICB9CisgICAgICAgIEFOR0xFX1RSWShnZXRTd2l6emxlVGV4dHVyZSgmc3dpenps
ZVRleHR1cmUpKTsKIAogICAgICAgICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+
Z2V0RGV2aWNlKCk7CiAKICAgICAgICAgRDNEMTFfUkVOREVSX1RBUkdFVF9WSUVXX0RFU0MgcnR2
RGVzYzsKLSAgICAgICAgcnR2RGVzYy5Gb3JtYXQgICAgICAgICAgICAgPSBtU3dpenpsZUZvcm1h
dFNldC0+cnR2Rm9ybWF0OworICAgICAgICBydHZEZXNjLkZvcm1hdCAgICAgICAgICAgICA9IG1G
b3JtYXRJbmZvLnN3aXp6bGUucnR2Rm9ybWF0OwogICAgICAgICBydHZEZXNjLlZpZXdEaW1lbnNp
b24gICAgICA9IEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTJEOwogICAgICAgICBydHZEZXNj
LlRleHR1cmUyRC5NaXBTbGljZSA9IG1Ub3BMZXZlbCArIG1pcExldmVsOwogCkBAIC0xNDY1LDI4
ICsxMzAzLDIwOCBAQAogICAgIH0KIAogICAgICpvdXRSVFYgPSBtU3dpenpsZVJlbmRlclRhcmdl
dHNbbWlwTGV2ZWxdOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworfQorCitnbDo6RXJyb3Ig
VGV4dHVyZVN0b3JhZ2UxMV8yRDo6Y3JlYXRlRHJvcFN0ZW5jaWxUZXh0dXJlKCkKK3sKKyAgICBp
ZiAobURyb3BTdGVuY2lsVGV4dHVyZSkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJv
cigpOworICAgIH0KKworICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIGRyb3BEZXNjID0ge307Cisg
ICAgZHJvcERlc2MuQXJyYXlTaXplICAgICAgICAgICAgPSAxOworICAgIGRyb3BEZXNjLkJpbmRG
bGFncyAgICAgICAgICAgID0gRDNEMTFfQklORF9TSEFERVJfUkVTT1VSQ0UgfCBEM0QxMV9CSU5E
X0RFUFRIX1NURU5DSUw7CisgICAgZHJvcERlc2MuQ1BVQWNjZXNzRmxhZ3MgICAgICAgPSAwOwor
ICAgIGRyb3BEZXNjLkZvcm1hdCAgICAgICAgICAgICAgID0gRFhHSV9GT1JNQVRfUjMyX1RZUEVM
RVNTOworICAgIGRyb3BEZXNjLkhlaWdodCAgICAgICAgICAgICAgID0gbVRleHR1cmVIZWlnaHQ7
CisgICAgZHJvcERlc2MuTWlwTGV2ZWxzICAgICAgICAgICAgPSBtTWlwTGV2ZWxzOworICAgIGRy
b3BEZXNjLk1pc2NGbGFncyAgICAgICAgICAgID0gMDsKKyAgICBkcm9wRGVzYy5TYW1wbGVEZXNj
LkNvdW50ICAgICA9IDE7CisgICAgZHJvcERlc2MuU2FtcGxlRGVzYy5RdWFsaXR5ICAgPSAwOwor
ICAgIGRyb3BEZXNjLlVzYWdlICAgICAgICAgICAgICAgID0gRDNEMTFfVVNBR0VfREVGQVVMVDsK
KyAgICBkcm9wRGVzYy5XaWR0aCAgICAgICAgICAgICAgICA9IG1UZXh0dXJlV2lkdGg7CisKKyAg
ICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisKKyAgICBI
UkVTVUxUIGhyID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJmRyb3BEZXNjLCBudWxscHRyLCAm
bURyb3BTdGVuY2lsVGV4dHVyZSk7CisgICAgaWYgKEZBSUxFRChocikpCisgICAgeworICAgICAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRXJyb3IgY3JlYXRpbmcg
ZHJvcCBzdGVuY2lsIHRleHR1cmUuIik7CisgICAgfQorICAgIGQzZDExOjpTZXREZWJ1Z05hbWUo
bURyb3BTdGVuY2lsVGV4dHVyZSwgIlRleFN0b3JhZ2UyRC5Ecm9wU3RlbmNpbCIpOworCisgICAg
QU5HTEVfVFJZKGluaXREcm9wU3RlbmNpbFRleHR1cmUoZ2w6OkltYWdlSW5kZXhJdGVyYXRvcjo6
TWFrZTJEKDAsIG1NaXBMZXZlbHMpKSk7CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKK30K
KworVGV4dHVyZVN0b3JhZ2UxMV9FeHRlcm5hbDo6VGV4dHVyZVN0b3JhZ2UxMV9FeHRlcm5hbCgK
KyAgICBSZW5kZXJlcjExICpyZW5kZXJlciwKKyAgICBlZ2w6OlN0cmVhbSAqc3RyZWFtLAorICAg
IGNvbnN0IGVnbDo6U3RyZWFtOjpHTFRleHR1cmVEZXNjcmlwdGlvbiAmZ2xEZXNjKQorICAgIDog
VGV4dHVyZVN0b3JhZ2UxMShyZW5kZXJlciwgRDNEMTFfQklORF9TSEFERVJfUkVTT1VSQ0UsIDAs
IGdsRGVzYy5pbnRlcm5hbEZvcm1hdCkKK3sKKyAgICBBU1NFUlQoc3RyZWFtLT5nZXRQcm9kdWNl
clR5cGUoKSA9PSBlZ2w6OlN0cmVhbTo6UHJvZHVjZXJUeXBlOjpEM0QxMVRleHR1cmVOVjEyKTsK
KyAgICBTdHJlYW1Qcm9kdWNlck5WMTIgKnByb2R1Y2VyID0gc3RhdGljX2Nhc3Q8U3RyZWFtUHJv
ZHVjZXJOVjEyICo+KHN0cmVhbS0+Z2V0SW1wbGVtZW50YXRpb24oKSk7CisgICAgbVRleHR1cmUg
ICAgICAgICAgICAgICAgICAgICA9IHByb2R1Y2VyLT5nZXREM0RUZXh0dXJlKCk7CisgICAgbVN1
YnJlc291cmNlSW5kZXggPSBwcm9kdWNlci0+Z2V0QXJyYXlTbGljZSgpOworICAgIG1UZXh0dXJl
LT5BZGRSZWYoKTsKKyAgICBtTWlwTGV2ZWxzID0gMTsKKworICAgIEQzRDExX1RFWFRVUkUyRF9E
RVNDIGRlc2M7CisgICAgbVRleHR1cmUtPkdldERlc2MoJmRlc2MpOworICAgIG1UZXh0dXJlV2lk
dGggICA9IGRlc2MuV2lkdGg7CisgICAgbVRleHR1cmVIZWlnaHQgID0gZGVzYy5IZWlnaHQ7Cisg
ICAgbVRleHR1cmVEZXB0aCAgID0gMTsKKyAgICBtSGFzS2V5ZWRNdXRleCA9IChkZXNjLk1pc2NG
bGFncyAmIEQzRDExX1JFU09VUkNFX01JU0NfU0hBUkVEX0tFWUVETVVURVgpICE9IDA7Cit9CisK
K1RleHR1cmVTdG9yYWdlMTFfRXh0ZXJuYWw6On5UZXh0dXJlU3RvcmFnZTExX0V4dGVybmFsKCkK
K3sKKyAgICBTYWZlUmVsZWFzZShtVGV4dHVyZSk7CisgICAgaWYgKG1IYXNLZXllZE11dGV4KQor
ICAgIHsKKyAgICAgICAgLy8gSWYgdGhlIGtleWVkIG11dGV4IGlzIHJlbGVhc2VkIHRoYXQgd2ls
bCB1bmJpbmQgaXQgYW5kIGNhdXNlIHRoZSBzdGF0ZSBjYWNoZSB0byBiZWNvbWUKKyAgICAgICAg
Ly8gZGVzeW5jaHJvbml6ZWQuCisgICAgICAgIG1SZW5kZXJlci0+Z2V0U3RhdGVNYW5hZ2VyKCkt
PmludmFsaWRhdGVCb3VuZFZpZXdzKCk7CisgICAgfQorfQorCitnbDo6RXJyb3IgVGV4dHVyZVN0
b3JhZ2UxMV9FeHRlcm5hbDo6Y29weVRvU3RvcmFnZShUZXh0dXJlU3RvcmFnZSAqZGVzdFN0b3Jh
Z2UpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwor
fQorCit2b2lkIFRleHR1cmVTdG9yYWdlMTFfRXh0ZXJuYWw6OmFzc29jaWF0ZUltYWdlKEltYWdl
MTEgKmltYWdlLCBjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgpCit7CisgICAgQVNTRVJUKGlu
ZGV4Lm1pcEluZGV4ID09IDApOworICAgIG1Bc3NvY2lhdGVkSW1hZ2UgPSBpbWFnZTsKK30KKwor
Ym9vbCBUZXh0dXJlU3RvcmFnZTExX0V4dGVybmFsOjppc0Fzc29jaWF0ZWRJbWFnZVZhbGlkKGNv
bnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBJbWFnZTExICpleHBlY3RlZEltYWdlKQoreworICAg
IHJldHVybiAoaW5kZXgubWlwSW5kZXggPT0gMCAmJiBtQXNzb2NpYXRlZEltYWdlID09IGV4cGVj
dGVkSW1hZ2UpOworfQorCit2b2lkIFRleHR1cmVTdG9yYWdlMTFfRXh0ZXJuYWw6OmRpc2Fzc29j
aWF0ZUltYWdlKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2UxMSAqZXhwZWN0ZWRJbWFnZSkK
K3sKKyAgICBBU1NFUlQoaW5kZXgubWlwSW5kZXggPT0gMCk7CisgICAgQVNTRVJUKG1Bc3NvY2lh
dGVkSW1hZ2UgPT0gZXhwZWN0ZWRJbWFnZSk7CisgICAgbUFzc29jaWF0ZWRJbWFnZSA9IG51bGxw
dHI7Cit9CisKK2dsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExX0V4dGVybmFsOjpyZWxlYXNlQXNz
b2NpYXRlZEltYWdlKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEltYWdlMTEgKmlu
Y29taW5nSW1hZ2UpCit7CisgICAgQVNTRVJUKGluZGV4Lm1pcEluZGV4ID09IDApOworCisgICAg
aWYgKG1Bc3NvY2lhdGVkSW1hZ2UgIT0gbnVsbHB0ciAmJiBtQXNzb2NpYXRlZEltYWdlICE9IGlu
Y29taW5nSW1hZ2UpCisgICAgeworICAgICAgICBib29sIGltYWdlQXNzb2NpYXRpb25Db3JyZWN0
ID0gbUFzc29jaWF0ZWRJbWFnZS0+aXNBc3NvY2lhdGVkU3RvcmFnZVZhbGlkKHRoaXMpOworICAg
ICAgICBBU1NFUlQoaW1hZ2VBc3NvY2lhdGlvbkNvcnJlY3QpOworCisgICAgICAgIGlmIChpbWFn
ZUFzc29jaWF0aW9uQ29ycmVjdCkKKyAgICAgICAgeworICAgICAgICAgICAgQU5HTEVfVFJZKG1B
c3NvY2lhdGVkSW1hZ2UtPnJlY292ZXJGcm9tQXNzb2NpYXRlZFN0b3JhZ2UoKSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKK30KKworZ2w6OkVycm9yIFRl
eHR1cmVTdG9yYWdlMTFfRXh0ZXJuYWw6OmdldFJlc291cmNlKElEM0QxMVJlc291cmNlICoqb3V0
UmVzb3VyY2UpCit7CisgICAgKm91dFJlc291cmNlID0gbVRleHR1cmU7CiAgICAgcmV0dXJuIGds
OjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKLVRleHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2U6OlRl
eHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2UoUmVuZGVyZXIxMSAqcmVuZGVyZXIsIEVHTEltYWdlRDNE
ICplZ2xJbWFnZSkKLSAgICA6IFRleHR1cmVTdG9yYWdlMTEocmVuZGVyZXIsIEQzRDExX0JJTkRf
UkVOREVSX1RBUkdFVCB8IEQzRDExX0JJTkRfU0hBREVSX1JFU09VUkNFLCAwKSwKK2dsOjpFcnJv
ciBUZXh0dXJlU3RvcmFnZTExX0V4dGVybmFsOjpnZXRNaXBwZWRSZXNvdXJjZShJRDNEMTFSZXNv
dXJjZSAqKm91dFJlc291cmNlKQoreworICAgICpvdXRSZXNvdXJjZSA9IG1UZXh0dXJlOworICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworfQorCitnbDo6RXJyb3IgVGV4dHVyZVN0
b3JhZ2UxMV9FeHRlcm5hbDo6Z2V0UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpJbWFnZUluZGV4ICZp
bmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUmVuZGVyVGFyZ2V0RDNEICoqb3V0UlQpCit7CisgICAgLy8gUmVuZGVyIHRhcmdldHMgYXJl
IG5vdCBzdXBwb3J0ZWQgZm9yIGV4dGVybmFsIHRleHR1cmVzCisgICAgVU5SRUFDSEFCTEUoKTsK
KyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVy
cm9yIFRleHR1cmVTdG9yYWdlMTFfRXh0ZXJuYWw6OmNyZWF0ZVNSVihpbnQgYmFzZUxldmVsLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWlwTGV2
ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIElEM0QxMVJlc291cmNlICp0ZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKipvdXRTUlYp
IGNvbnN0Cit7CisgICAgLy8gU2luY2UgZXh0ZXJuYWwgdGV4dHVyZXMgYXJlIHRyZWF0ZXMgYXMg
bm9uLW1pcG1hcHBlZCB0ZXh0dXJlcywgd2UgaWdub3JlIG1pcG1hcCBsZXZlbHMgYW5kCisgICAg
Ly8gdXNlIHRoZSBzcGVjaWZpZWQgc3VicmVzb3VyY2UgSUQgdGhlIHN0b3JhZ2Ugd2FzIGNyZWF0
ZWQgd2l0aC4KKyAgICBBU1NFUlQobWlwTGV2ZWxzID09IDEpOworICAgIEFTU0VSVChvdXRTUlYp
OworCisgICAgRDNEMTFfU0hBREVSX1JFU09VUkNFX1ZJRVdfREVTQyBzcnZEZXNjOworICAgIHNy
dkRlc2MuRm9ybWF0ICAgICAgICA9IGZvcm1hdDsKKyAgICBzcnZEZXNjLlZpZXdEaW1lbnNpb24g
PSBEM0QxMV9TUlZfRElNRU5TSU9OX1RFWFRVUkUyREFSUkFZOworICAgIC8vIHN1YnJlc291cmNl
IGluZGV4IGlzIGVxdWFsIHRvIHRoZSBtaXAgbGV2ZWwgZm9yIDJEIHRleHR1cmVzCisgICAgc3J2
RGVzYy5UZXh0dXJlMkRBcnJheS5Nb3N0RGV0YWlsZWRNaXAgPSAwOworICAgIHNydkRlc2MuVGV4
dHVyZTJEQXJyYXkuTWlwTGV2ZWxzICAgICAgID0gMTsKKyAgICBzcnZEZXNjLlRleHR1cmUyREFy
cmF5LkZpcnN0QXJyYXlTbGljZSA9IG1TdWJyZXNvdXJjZUluZGV4OworICAgIHNydkRlc2MuVGV4
dHVyZTJEQXJyYXkuQXJyYXlTaXplICAgICAgID0gMTsKKworICAgIElEM0QxMVJlc291cmNlICpz
cnZUZXh0dXJlID0gdGV4dHVyZTsKKworICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRl
cmVyLT5nZXREZXZpY2UoKTsKKyAgICBIUkVTVUxUIHJlc3VsdCAgICAgICA9IGRldmljZS0+Q3Jl
YXRlU2hhZGVyUmVzb3VyY2VWaWV3KHNydlRleHR1cmUsICZzcnZEZXNjLCBvdXRTUlYpOworCisg
ICAgQVNTRVJUKHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZIHx8IFNVQ0NFRURFRChyZXN1bHQpKTsK
KyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX09VVF9PRl9NRU1PUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBj
cmVhdGUgaW50ZXJuYWwgdGV4dHVyZSBzdG9yYWdlIFNSViwgcmVzdWx0OiAweCVYLiIsIHJlc3Vs
dCk7CisgICAgfQorCisgICAgZDNkMTE6OlNldERlYnVnTmFtZSgqb3V0U1JWLCAiVGV4U3RvcmFn
ZTJELlNSViIpOworCisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CisKK2dsOjpFcnJvciBU
ZXh0dXJlU3RvcmFnZTExX0V4dGVybmFsOjpnZXRTd2l6emxlVGV4dHVyZShJRDNEMTFSZXNvdXJj
ZSAqKm91dFRleHR1cmUpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgVGV4dHVyZVN0b3Jh
Z2UxMV9FeHRlcm5hbDo6Z2V0U3dpenpsZVJlbmRlclRhcmdldChpbnQgbWlwTGV2ZWwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
RDNEMTFSZW5kZXJUYXJnZXRWaWV3ICoqb3V0UlRWKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsK
KyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworVGV4dHVy
ZVN0b3JhZ2UxMV9FR0xJbWFnZTo6VGV4dHVyZVN0b3JhZ2UxMV9FR0xJbWFnZShSZW5kZXJlcjEx
ICpyZW5kZXJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRUdMSW1hZ2VEM0QgKmVnbEltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJUYXJnZXQxMSAqcmVuZGVyVGFyZ2V0
MTEpCisgICAgOiBUZXh0dXJlU3RvcmFnZTExKHJlbmRlcmVyLAorICAgICAgICAgICAgICAgICAg
ICAgICBEM0QxMV9CSU5EX1JFTkRFUl9UQVJHRVQgfCBEM0QxMV9CSU5EX1NIQURFUl9SRVNPVVJD
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgcmVu
ZGVyVGFyZ2V0MTEtPmdldEludGVybmFsRm9ybWF0KCkpLAogICAgICAgbUltYWdlKGVnbEltYWdl
KSwKICAgICAgIG1DdXJyZW50UmVuZGVyVGFyZ2V0KDApLAogICAgICAgbVN3aXp6bGVUZXh0dXJl
KG51bGxwdHIpLAogICAgICAgbVN3aXp6bGVSZW5kZXJUYXJnZXRzKGdsOjpJTVBMRU1FTlRBVElP
Tl9NQVhfVEVYVFVSRV9MRVZFTFMsIG51bGxwdHIpCiB7Ci0gICAgUmVuZGVyVGFyZ2V0RDNEICpy
ZW5kZXJUYXJnZXREM0QgPSBudWxscHRyOwotICAgIG1JbWFnZS0+Z2V0UmVuZGVyVGFyZ2V0KCZy
ZW5kZXJUYXJnZXREM0QpOwotICAgIFJlbmRlclRhcmdldDExICpyZW5kZXJUYXJnZXQxMSA9IEdl
dEFzPFJlbmRlclRhcmdldDExPihyZW5kZXJUYXJnZXREM0QpOwotICAgIG1DdXJyZW50UmVuZGVy
VGFyZ2V0ICAgICAgICAgICA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihyZW5kZXJUYXJn
ZXQxMSk7CisgICAgbUN1cnJlbnRSZW5kZXJUYXJnZXQgPSByZWludGVycHJldF9jYXN0PHVpbnRw
dHJfdD4ocmVuZGVyVGFyZ2V0MTEpOwogCiAgICAgbU1pcExldmVscyAgICAgID0gMTsKLSAgICBt
VGV4dHVyZUZvcm1hdFNldCA9ICZkM2QxMTo6R2V0QU5HTEVGb3JtYXRTZXQocmVuZGVyVGFyZ2V0
MTEtPmdldEFOR0xFRm9ybWF0KCkpOwotICAgIG1Td2l6emxlRm9ybWF0U2V0ID0gJmQzZDExOjpH
ZXRBTkdMRUZvcm1hdFNldChtVGV4dHVyZUZvcm1hdFNldC0+c3dpenpsZUZvcm1hdCk7CiAgICAg
bVRleHR1cmVXaWR0aCAgID0gcmVuZGVyVGFyZ2V0MTEtPmdldFdpZHRoKCk7CiAgICAgbVRleHR1
cmVIZWlnaHQgID0gcmVuZGVyVGFyZ2V0MTEtPmdldEhlaWdodCgpOwogICAgIG1UZXh0dXJlRGVw
dGggICA9IDE7Ci0gICAgbUludGVybmFsRm9ybWF0ID0gcmVuZGVyVGFyZ2V0MTEtPmdldEludGVy
bmFsRm9ybWF0KCk7CiB9CiAKIFRleHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2U6On5UZXh0dXJlU3Rv
cmFnZTExX0VHTEltYWdlKCkKQEAgLTE1MDAsMzIgKzE1MTgsMTggQEAKIAogZ2w6OkVycm9yIFRl
eHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2U6OmdldFJlc291cmNlKElEM0QxMVJlc291cmNlICoqb3V0
UmVzb3VyY2UpCiB7Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gY2hlY2tGb3JVcGRhdGVkUmVuZGVy
VGFyZ2V0KCk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKGNoZWNrRm9yVXBkYXRlZFJlbmRlclRhcmdl
dCgpKTsKIAogICAgIFJlbmRlclRhcmdldDExICpyZW5kZXJUYXJnZXQxMSA9IG51bGxwdHI7Ci0g
ICAgZXJyb3IgPSBnZXRJbWFnZVJlbmRlclRhcmdldCgmcmVuZGVyVGFyZ2V0MTEpOwotICAgIGlm
IChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQot
CisgICAgQU5HTEVfVFJZKGdldEltYWdlUmVuZGVyVGFyZ2V0KCZyZW5kZXJUYXJnZXQxMSkpOwog
ICAgICpvdXRSZXNvdXJjZSA9IHJlbmRlclRhcmdldDExLT5nZXRUZXh0dXJlKCk7Ci0gICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9
CiAKIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExX0VHTEltYWdlOjpnZXRTUlYoY29uc3QgZ2w6
OlRleHR1cmVTdGF0ZSAmdGV4dHVyZVN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKipvdXRTUlYpCiB7Ci0g
ICAgZ2w6OkVycm9yIGVycm9yID0gY2hlY2tGb3JVcGRhdGVkUmVuZGVyVGFyZ2V0KCk7Ci0gICAg
aWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9
Ci0KKyAgICBBTkdMRV9UUlkoY2hlY2tGb3JVcGRhdGVkUmVuZGVyVGFyZ2V0KCkpOwogICAgIHJl
dHVybiBUZXh0dXJlU3RvcmFnZTExOjpnZXRTUlYodGV4dHVyZVN0YXRlLCBvdXRTUlYpOwogfQog
CkBAIC0xNTQ0LDExICsxNTQ4LDcgQEAKICAgICBBU1NFUlQoaW5kZXgubWlwSW5kZXggPT0gMCk7
CiAgICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRShpbmRleCk7CiAKLSAgICBnbDo6RXJyb3Ig
ZXJyb3IgPSBjaGVja0ZvclVwZGF0ZWRSZW5kZXJUYXJnZXQoKTsKLSAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9U
UlkoY2hlY2tGb3JVcGRhdGVkUmVuZGVyVGFyZ2V0KCkpOwogCiAgICAgcmV0dXJuIG1JbWFnZS0+
Z2V0UmVuZGVyVGFyZ2V0KG91dFJUKTsKIH0KQEAgLTE1NTYsMjcgKzE1NTYsMTkgQEAKIGdsOjpF
cnJvciBUZXh0dXJlU3RvcmFnZTExX0VHTEltYWdlOjpjb3B5VG9TdG9yYWdlKFRleHR1cmVTdG9y
YWdlICpkZXN0U3RvcmFnZSkKIHsKICAgICBJRDNEMTFSZXNvdXJjZSAqc291cmNlUmVzb3VjZSA9
IG51bGxwdHI7Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gZ2V0UmVzb3VyY2UoJnNvdXJjZVJlc291
Y2UpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJy
b3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShnZXRSZXNvdXJjZSgmc291cmNlUmVzb3VjZSkpOwog
CiAgICAgQVNTRVJUKGRlc3RTdG9yYWdlKTsKICAgICBUZXh0dXJlU3RvcmFnZTExXzJEICpkZXN0
MTEgID0gR2V0QXM8VGV4dHVyZVN0b3JhZ2UxMV8yRD4oZGVzdFN0b3JhZ2UpOwogICAgIElEM0Qx
MVJlc291cmNlICpkZXN0UmVzb3VyY2UgPSBudWxscHRyOwotICAgIGVycm9yID0gZGVzdDExLT5n
ZXRSZXNvdXJjZSgmZGVzdFJlc291cmNlKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkoZGVzdDExLT5n
ZXRSZXNvdXJjZSgmZGVzdFJlc291cmNlKSk7CiAKICAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpp
bW1lZGlhdGVDb250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CiAgICAgaW1t
ZWRpYXRlQ29udGV4dC0+Q29weVJlc291cmNlKGRlc3RSZXNvdXJjZSwgc291cmNlUmVzb3VjZSk7
CiAKLSAgICBkZXN0MTEtPmludmFsaWRhdGVTd2l6emxlQ2FjaGUoKTsKKyAgICBkZXN0MTEtPm1h
cmtEaXJ0eSgpOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0
dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIHZvaWQgVGV4dHVyZVN0b3JhZ2UxMV9FR0xJbWFnZTo6
YXNzb2NpYXRlSW1hZ2UoSW1hZ2UxMSAqLCBjb25zdCBnbDo6SW1hZ2VJbmRleCAmKQpAQCAtMTYx
Niw3ICsxNjA4LDcgQEAKICAgICAgICAgZGVzYy5IZWlnaHQgICAgICAgICAgICAgPSBtVGV4dHVy
ZUhlaWdodDsKICAgICAgICAgZGVzYy5NaXBMZXZlbHMgICAgICAgICAgPSBtTWlwTGV2ZWxzOwog
ICAgICAgICBkZXNjLkFycmF5U2l6ZSAgICAgICAgICA9IDE7Ci0gICAgICAgIGRlc2MuRm9ybWF0
ICAgICAgICAgICAgID0gbVN3aXp6bGVGb3JtYXRTZXQtPnRleEZvcm1hdDsKKyAgICAgICAgZGVz
Yy5Gb3JtYXQgICAgICAgICAgICAgPSBtRm9ybWF0SW5mby5zd2l6emxlLnRleEZvcm1hdDsKICAg
ICAgICAgZGVzYy5TYW1wbGVEZXNjLkNvdW50ICAgPSAxOwogICAgICAgICBkZXNjLlNhbXBsZURl
c2MuUXVhbGl0eSA9IDA7CiAgICAgICAgIGRlc2MuVXNhZ2UgICAgICAgICAgICAgID0gRDNEMTFf
VVNBR0VfREVGQVVMVDsKQEAgLTE2NDksMTYgKzE2NDEsMTIgQEAKICAgICBpZiAoIW1Td2l6emxl
UmVuZGVyVGFyZ2V0c1ttaXBMZXZlbF0pCiAgICAgewogICAgICAgICBJRDNEMTFSZXNvdXJjZSAq
c3dpenpsZVRleHR1cmUgPSBudWxscHRyOwotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBnZXRT
d2l6emxlVGV4dHVyZSgmc3dpenpsZVRleHR1cmUpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJv
cigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KKyAg
ICAgICAgQU5HTEVfVFJZKGdldFN3aXp6bGVUZXh0dXJlKCZzd2l6emxlVGV4dHVyZSkpOwogCiAg
ICAgICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKIAog
ICAgICAgICBEM0QxMV9SRU5ERVJfVEFSR0VUX1ZJRVdfREVTQyBydHZEZXNjOwotICAgICAgICBy
dHZEZXNjLkZvcm1hdCAgICAgICAgICAgICA9IG1Td2l6emxlRm9ybWF0U2V0LT5ydHZGb3JtYXQ7
CisgICAgICAgIHJ0dkRlc2MuRm9ybWF0ICAgICAgICAgICAgID0gbUZvcm1hdEluZm8uc3dpenps
ZS5ydHZGb3JtYXQ7CiAgICAgICAgIHJ0dkRlc2MuVmlld0RpbWVuc2lvbiAgICAgID0gRDNEMTFf
UlRWX0RJTUVOU0lPTl9URVhUVVJFMkQ7CiAgICAgICAgIHJ0dkRlc2MuVGV4dHVyZTJELk1pcFNs
aWNlID0gbVRvcExldmVsICsgbWlwTGV2ZWw7CiAKQEAgLTE2NzUsMTcgKzE2NjMsMTMgQEAKICAg
ICB9CiAKICAgICAqb3V0UlRWID0gbVN3aXp6bGVSZW5kZXJUYXJnZXRzW21pcExldmVsXTsKLSAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3Io
KTsKIH0KIAogZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2U6OmNoZWNrRm9yVXBk
YXRlZFJlbmRlclRhcmdldCgpCiB7CiAgICAgUmVuZGVyVGFyZ2V0MTEgKnJlbmRlclRhcmdldDEx
ID0gbnVsbHB0cjsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBnZXRJbWFnZVJlbmRlclRhcmdldCgm
cmVuZGVyVGFyZ2V0MTEpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAg
ICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShnZXRJbWFnZVJlbmRlclRhcmdl
dCgmcmVuZGVyVGFyZ2V0MTEpKTsKIAogICAgIGlmIChtQ3VycmVudFJlbmRlclRhcmdldCAhPSBy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocmVuZGVyVGFyZ2V0MTEpKQogICAgIHsKQEAgLTE2
OTMsNyArMTY3Nyw3IEBACiAgICAgICAgIG1DdXJyZW50UmVuZGVyVGFyZ2V0ID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KHJlbmRlclRhcmdldDExKTsKICAgICB9CiAKLSAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAog
Z2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2U6OmNyZWF0ZVNSVihpbnQgYmFzZUxl
dmVsLApAQCAtMTczMiwxMSArMTcxNiw3IEBACiAgICAgZWxzZQogICAgIHsKICAgICAgICAgUmVu
ZGVyVGFyZ2V0MTEgKnJlbmRlclRhcmdldCA9IG51bGxwdHI7Ci0gICAgICAgIGdsOjpFcnJvciBl
cnJvciA9IGdldEltYWdlUmVuZGVyVGFyZ2V0KCZyZW5kZXJUYXJnZXQpOwotICAgICAgICBpZiAo
ZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0g
ICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKGdldEltYWdlUmVuZGVyVGFyZ2V0KCZyZW5kZXJU
YXJnZXQpKTsKIAogICAgICAgICBBU1NFUlQodGV4dHVyZSA9PSByZW5kZXJUYXJnZXQtPmdldFRl
eHR1cmUoKSk7CiAKQEAgLTE3NTAsMTQgKzE3MzAsOSBAQAogZ2w6OkVycm9yIFRleHR1cmVTdG9y
YWdlMTFfRUdMSW1hZ2U6OmdldEltYWdlUmVuZGVyVGFyZ2V0KFJlbmRlclRhcmdldDExICoqb3V0
UlQpIGNvbnN0CiB7CiAgICAgUmVuZGVyVGFyZ2V0RDNEICpyZW5kZXJUYXJnZXREM0QgPSBudWxs
cHRyOwotICAgIGdsOjpFcnJvciBlcnJvciA9IG1JbWFnZS0+Z2V0UmVuZGVyVGFyZ2V0KCZyZW5k
ZXJUYXJnZXREM0QpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICBy
ZXR1cm4gZXJyb3I7Ci0gICAgfQotCisgICAgQU5HTEVfVFJZKG1JbWFnZS0+Z2V0UmVuZGVyVGFy
Z2V0KCZyZW5kZXJUYXJnZXREM0QpKTsKICAgICAqb3V0UlQgPSBHZXRBczxSZW5kZXJUYXJnZXQx
MT4ocmVuZGVyVGFyZ2V0RDNEKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsK
KyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogVGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjpU
ZXh0dXJlU3RvcmFnZTExX0N1YmUoUmVuZGVyZXIxMSAqcmVuZGVyZXIsCkBAIC0xNzcyLDcgKzE3
NDcsOCBAQAogICAgICAgICAgIEdldFRleHR1cmVNaXNjRmxhZ3MoaW50ZXJuYWxmb3JtYXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmlj
ZUNhcHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclRhcmdldCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscykpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGV2ZWxzKSwKKyAgICAgICAgICBpbnRlcm5hbGZvcm1hdCksCiAgICAgICBt
VGV4dHVyZShudWxscHRyKSwKICAgICAgIG1MZXZlbFplcm9UZXh0dXJlKG51bGxwdHIpLAogICAg
ICAgbVVzZUxldmVsWmVyb1RleHR1cmUoaGludExldmVsWmVyb09ubHkgJiYgbGV2ZWxzID4gMSks
CkBAIC0xNzkzLDE2ICsxNzY5LDkgQEAKICAgICAgICAgbUxldmVsWmVyb1JlbmRlclRhcmdldFtm
YWNlXSA9IG51bGxwdHI7CiAgICAgfQogCi0gICAgbUludGVybmFsRm9ybWF0ID0gaW50ZXJuYWxm
b3JtYXQ7Ci0KLSAgICBjb25zdCBkM2QxMTo6VGV4dHVyZUZvcm1hdCAmZm9ybWF0SW5mbyA9Ci0g
ICAgICAgIGQzZDExOjpHZXRUZXh0dXJlRm9ybWF0SW5mbyhpbnRlcm5hbGZvcm1hdCwgcmVuZGVy
ZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCkpOwotICAgIG1UZXh0dXJlRm9ybWF0U2V0ID0g
Zm9ybWF0SW5mby5mb3JtYXRTZXQ7Ci0gICAgbVN3aXp6bGVGb3JtYXRTZXQgPSBmb3JtYXRJbmZv
LnN3aXp6bGVGb3JtYXRTZXQ7Ci0KICAgICAvLyBhZGp1c3Qgc2l6ZSBpZiBuZWVkZWQgZm9yIGNv
bXByZXNzZWQgdGV4dHVyZXMKICAgICBpbnQgaGVpZ2h0ID0gc2l6ZTsKLSAgICBkM2QxMTo6TWFr
ZVZhbGlkU2l6ZShmYWxzZSwgbVRleHR1cmVGb3JtYXRTZXQtPnRleEZvcm1hdCwgJnNpemUsICZo
ZWlnaHQsICZtVG9wTGV2ZWwpOworICAgIGQzZDExOjpNYWtlVmFsaWRTaXplKGZhbHNlLCBtRm9y
bWF0SW5mby50ZXhGb3JtYXQsICZzaXplLCAmaGVpZ2h0LCAmbVRvcExldmVsKTsKIAogICAgIG1N
aXBMZXZlbHMgICAgID0gbVRvcExldmVsICsgbGV2ZWxzOwogICAgIG1UZXh0dXJlV2lkdGggID0g
c2l6ZTsKQEAgLTE4ODgsMTggKzE4NTcsMTAgQEAKICAgICAgICAgLy8gY29ycmVzcG9uZGluZyB0
ZXh0dXJlcyBpbiBkZXN0U3RvcmFnZS4KICAgICAgICAgaWYgKG1UZXh0dXJlKQogICAgICAgICB7
Ci0gICAgICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBkZXN0MTEtPnVzZUxldmVsWmVyb1dvcmth
cm91bmRUZXh0dXJlKGZhbHNlKTsKLSAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAg
fQorICAgICAgICAgICAgQU5HTEVfVFJZKGRlc3QxMS0+dXNlTGV2ZWxaZXJvV29ya2Fyb3VuZFRl
eHR1cmUoZmFsc2UpKTsKIAogICAgICAgICAgICAgSUQzRDExUmVzb3VyY2UgKmRlc3RSZXNvdXJj
ZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICBlcnJvciA9IGRlc3QxMS0+Z2V0UmVzb3VyY2UoJmRl
c3RSZXNvdXJjZSk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIEFOR0xFX1RSWShkZXN0MTEtPmdldFJlc291cmNlKCZkZXN0UmVzb3VyY2UpKTsKIAog
ICAgICAgICAgICAgaW1tZWRpYXRlQ29udGV4dC0+Q29weVJlc291cmNlKGRlc3RSZXNvdXJjZSwg
bVRleHR1cmUpOwogICAgICAgICB9CkBAIC0xOTA2LDE4ICsxODY3LDEwIEBACiAKICAgICAgICAg
aWYgKG1MZXZlbFplcm9UZXh0dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICBnbDo6RXJyb3Ig
ZXJyb3IgPSBkZXN0MTEtPnVzZUxldmVsWmVyb1dvcmthcm91bmRUZXh0dXJlKHRydWUpOwotICAg
ICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBBTkdMRV9UUlko
ZGVzdDExLT51c2VMZXZlbFplcm9Xb3JrYXJvdW5kVGV4dHVyZSh0cnVlKSk7CiAKICAgICAgICAg
ICAgIElEM0QxMVJlc291cmNlICpkZXN0UmVzb3VyY2UgPSBudWxscHRyOwotICAgICAgICAgICAg
ZXJyb3IgPSBkZXN0MTEtPmdldFJlc291cmNlKCZkZXN0UmVzb3VyY2UpOwotICAgICAgICAgICAg
aWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gZXJyb3I7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBBTkdMRV9UUlkoZGVzdDExLT5n
ZXRSZXNvdXJjZSgmZGVzdFJlc291cmNlKSk7CiAKICAgICAgICAgICAgIGltbWVkaWF0ZUNvbnRl
eHQtPkNvcHlSZXNvdXJjZShkZXN0UmVzb3VyY2UsIG1MZXZlbFplcm9UZXh0dXJlKTsKICAgICAg
ICAgfQpAQCAtMTkyNSwyNiArMTg3OCwxOCBAQAogICAgIGVsc2UKICAgICB7CiAgICAgICAgIElE
M0QxMVJlc291cmNlICpzb3VyY2VSZXNvdWNlID0gbnVsbHB0cjsKLSAgICAgICAgZ2w6OkVycm9y
IGVycm9yID0gZ2V0UmVzb3VyY2UoJnNvdXJjZVJlc291Y2UpOwotICAgICAgICBpZiAoZXJyb3Iu
aXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAg
IH0KKyAgICAgICAgQU5HTEVfVFJZKGdldFJlc291cmNlKCZzb3VyY2VSZXNvdWNlKSk7CiAKICAg
ICAgICAgSUQzRDExUmVzb3VyY2UgKmRlc3RSZXNvdXJjZSA9IG51bGxwdHI7Ci0gICAgICAgIGVy
cm9yID0gZGVzdDExLT5nZXRSZXNvdXJjZSgmZGVzdFJlc291cmNlKTsKLSAgICAgICAgaWYgKGVy
cm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAg
ICAgICB9CisgICAgICAgIEFOR0xFX1RSWShkZXN0MTEtPmdldFJlc291cmNlKCZkZXN0UmVzb3Vy
Y2UpKTsKIAogICAgICAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICppbW1lZGlhdGVDb250ZXh0ID0g
bVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CiAgICAgICAgIGltbWVkaWF0ZUNvbnRleHQt
PkNvcHlSZXNvdXJjZShkZXN0UmVzb3VyY2UsIHNvdXJjZVJlc291Y2UpOwogICAgIH0KIAotICAg
IGRlc3QxMS0+aW52YWxpZGF0ZVN3aXp6bGVDYWNoZSgpOworICAgIGRlc3QxMS0+bWFya0RpcnR5
KCk7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6
Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfQ3ViZTo6dXNlTGV2
ZWxaZXJvV29ya2Fyb3VuZFRleHR1cmUoYm9vbCB1c2VMZXZlbFplcm9UZXh0dXJlKQpAQCAtMTk1
MywxMSArMTg5OCw3IEBACiAgICAgewogICAgICAgICBpZiAoIW1Vc2VMZXZlbFplcm9UZXh0dXJl
ICYmIG1UZXh0dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBl
bnN1cmVUZXh0dXJlRXhpc3RzKDEpOwotICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAg
ICB9CisgICAgICAgICAgICBBTkdMRV9UUlkoZW5zdXJlVGV4dHVyZUV4aXN0cygxKSk7CiAKICAg
ICAgICAgICAgIC8vIFB1bGwgZGF0YSBiYWNrIGZyb20gdGhlIG1pcHBlZCB0ZXh0dXJlIGlmIG5l
Y2Vzc2FyeS4KICAgICAgICAgICAgIEFTU0VSVChtTGV2ZWxaZXJvVGV4dHVyZSk7CkBAIC0xOTc2
LDExICsxOTE3LDcgQEAKICAgICB7CiAgICAgICAgIGlmIChtVXNlTGV2ZWxaZXJvVGV4dHVyZSAm
JiBtTGV2ZWxaZXJvVGV4dHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgZ2w6OkVycm9yIGVy
cm9yID0gZW5zdXJlVGV4dHVyZUV4aXN0cyhtTWlwTGV2ZWxzKTsKLSAgICAgICAgICAgIGlmIChl
cnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVy
cm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgQU5HTEVfVFJZKGVuc3VyZVRleHR1cmVF
eGlzdHMobU1pcExldmVscykpOwogCiAgICAgICAgICAgICAvLyBQdWxsIGRhdGEgYmFjayBmcm9t
IHRoZSBsZXZlbCB6ZXJvIHRleHR1cmUgaWYgbmVjZXNzYXJ5LgogICAgICAgICAgICAgQVNTRVJU
KG1UZXh0dXJlKTsKQEAgLTE5OTYsNyArMTkzMyw3IEBACiAgICAgICAgIG1Vc2VMZXZlbFplcm9U
ZXh0dXJlID0gZmFsc2U7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJP
Uik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIHZvaWQgVGV4dHVyZVN0b3JhZ2Ux
MV9DdWJlOjphc3NvY2lhdGVJbWFnZShJbWFnZTExICppbWFnZSwgY29uc3QgZ2w6OkltYWdlSW5k
ZXggJmluZGV4KQpAQCAtMjAwNSwxMSArMTk0MiwxMSBAQAogICAgIGNvbnN0IEdMaW50IGxheWVy
VGFyZ2V0ID0gaW5kZXgubGF5ZXJJbmRleDsKIAogICAgIEFTU0VSVCgwIDw9IGxldmVsICYmIGxl
dmVsIDwgZ2w6OklNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUyk7Ci0gICAgQVNTRVJU
KDAgPD0gbGF5ZXJUYXJnZXQgJiYgbGF5ZXJUYXJnZXQgPCBDVUJFX0ZBQ0VfQ09VTlQpOworICAg
IEFTU0VSVCgwIDw9IGxheWVyVGFyZ2V0ICYmIGxheWVyVGFyZ2V0IDwgc3RhdGljX2Nhc3Q8R0xp
bnQ+KENVQkVfRkFDRV9DT1VOVCkpOwogCiAgICAgaWYgKDAgPD0gbGV2ZWwgJiYgbGV2ZWwgPCBn
bDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTKQogICAgIHsKLSAgICAgICAgaWYg
KDAgPD0gbGF5ZXJUYXJnZXQgJiYgbGF5ZXJUYXJnZXQgPCBDVUJFX0ZBQ0VfQ09VTlQpCisgICAg
ICAgIGlmICgwIDw9IGxheWVyVGFyZ2V0ICYmIGxheWVyVGFyZ2V0IDwgc3RhdGljX2Nhc3Q8R0xp
bnQ+KENVQkVfRkFDRV9DT1VOVCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1Bc3NvY2lhdGVk
SW1hZ2VzW2xheWVyVGFyZ2V0XVtsZXZlbF0gPSBpbWFnZTsKICAgICAgICAgfQpAQCAtMjAyNCw3
ICsxOTYxLDcgQEAKIAogICAgIGlmICgwIDw9IGxldmVsICYmIGxldmVsIDwgZ2w6OklNUExFTUVO
VEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUykKICAgICB7Ci0gICAgICAgIGlmICgwIDw9IGxheWVy
VGFyZ2V0ICYmIGxheWVyVGFyZ2V0IDwgQ1VCRV9GQUNFX0NPVU5UKQorICAgICAgICBpZiAoMCA8
PSBsYXllclRhcmdldCAmJiBsYXllclRhcmdldCA8IHN0YXRpY19jYXN0PEdMaW50PihDVUJFX0ZB
Q0VfQ09VTlQpKQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBUaGlzIHZhbGlkYXRpb24gY2hl
Y2sgc2hvdWxkIG5ldmVyIHJldHVybiBmYWxzZS4gSXQgbWVhbnMgdGhlIEltYWdlL1RleHR1cmVT
dG9yYWdlCiAgICAgICAgICAgICAvLyBhc3NvY2lhdGlvbiBpcyBicm9rZW4uCkBAIC0yMDQ0LDEx
ICsxOTgxLDExIEBACiAgICAgY29uc3QgR0xpbnQgbGF5ZXJUYXJnZXQgPSBpbmRleC5sYXllcklu
ZGV4OwogCiAgICAgQVNTRVJUKDAgPD0gbGV2ZWwgJiYgbGV2ZWwgPCBnbDo6SU1QTEVNRU5UQVRJ
T05fTUFYX1RFWFRVUkVfTEVWRUxTKTsKLSAgICBBU1NFUlQoMCA8PSBsYXllclRhcmdldCAmJiBs
YXllclRhcmdldCA8IENVQkVfRkFDRV9DT1VOVCk7CisgICAgQVNTRVJUKDAgPD0gbGF5ZXJUYXJn
ZXQgJiYgbGF5ZXJUYXJnZXQgPCBzdGF0aWNfY2FzdDxHTGludD4oQ1VCRV9GQUNFX0NPVU5UKSk7
CiAKICAgICBpZiAoMCA8PSBsZXZlbCAmJiBsZXZlbCA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhf
VEVYVFVSRV9MRVZFTFMpCiAgICAgewotICAgICAgICBpZiAoMCA8PSBsYXllclRhcmdldCAmJiBs
YXllclRhcmdldCA8IENVQkVfRkFDRV9DT1VOVCkKKyAgICAgICAgaWYgKDAgPD0gbGF5ZXJUYXJn
ZXQgJiYgbGF5ZXJUYXJnZXQgPCBzdGF0aWNfY2FzdDxHTGludD4oQ1VCRV9GQUNFX0NPVU5UKSkK
ICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1Bc3NvY2lhdGVkSW1hZ2VzW2xheWVyVGFy
Z2V0XVtsZXZlbF0gPT0gZXhwZWN0ZWRJbWFnZSk7CiAKQEAgLTIwNjksMTEgKzIwMDYsMTEgQEAK
ICAgICBjb25zdCBHTGludCBsYXllclRhcmdldCA9IGluZGV4LmxheWVySW5kZXg7CiAKICAgICBB
U1NFUlQoMCA8PSBsZXZlbCAmJiBsZXZlbCA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVS
RV9MRVZFTFMpOwotICAgIEFTU0VSVCgwIDw9IGxheWVyVGFyZ2V0ICYmIGxheWVyVGFyZ2V0IDwg
Q1VCRV9GQUNFX0NPVU5UKTsKKyAgICBBU1NFUlQoMCA8PSBsYXllclRhcmdldCAmJiBsYXllclRh
cmdldCA8IHN0YXRpY19jYXN0PEdMaW50PihDVUJFX0ZBQ0VfQ09VTlQpKTsKIAogICAgIGlmICgo
MCA8PSBsZXZlbCAmJiBsZXZlbCA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZF
TFMpKQogICAgIHsKLSAgICAgICAgaWYgKDAgPD0gbGF5ZXJUYXJnZXQgJiYgbGF5ZXJUYXJnZXQg
PCBDVUJFX0ZBQ0VfQ09VTlQpCisgICAgICAgIGlmICgwIDw9IGxheWVyVGFyZ2V0ICYmIGxheWVy
VGFyZ2V0IDwgc3RhdGljX2Nhc3Q8R0xpbnQ+KENVQkVfRkFDRV9DT1VOVCkpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gbGV0IHRoZSBvbGQgSW1hZ2UgcmVjb3ZlciBpdHMg
ZGF0YSwgaWYgaXQgaXMgYWxzbyB0aGUgaW5jb21pbmcgSW1hZ2UuCiAgICAgICAgICAgICBpZiAo
bUFzc29jaWF0ZWRJbWFnZXNbbGF5ZXJUYXJnZXRdW2xldmVsXSAhPSBudWxscHRyICYmCkBAIC0y
MDg5LDE4ICsyMDI2LDE0IEBACiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg
ICAvLyBGb3JjZSB0aGUgaW1hZ2UgdG8gcmVjb3ZlciBmcm9tIHN0b3JhZ2UgYmVmb3JlIGl0cyBk
YXRhIGlzIG92ZXJ3cml0dGVuLgogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgcmVz
ZXQgbUFzc29jaWF0ZWRJbWFnZXNbbGV2ZWxdIHRvIG51bGxwdHIgdG9vLgotICAgICAgICAgICAg
ICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPQotICAgICAgICAgICAgICAgICAgICAgICAgbUFzc29j
aWF0ZWRJbWFnZXNbbGF5ZXJUYXJnZXRdW2xldmVsXS0+cmVjb3ZlckZyb21Bc3NvY2lhdGVkU3Rv
cmFnZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgQU5HTEVfVFJZKAorICAg
ICAgICAgICAgICAgICAgICAgICAgbUFzc29jaWF0ZWRJbWFnZXNbbGF5ZXJUYXJnZXRdW2xldmVs
XS0+cmVjb3ZlckZyb21Bc3NvY2lhdGVkU3RvcmFnZSgpKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFRl
eHR1cmVTdG9yYWdlMTFfQ3ViZTo6Z2V0UmVzb3VyY2UoSUQzRDExUmVzb3VyY2UgKipvdXRSZXNv
dXJjZSkKQEAgLTIxMDcsMjUgKzIwNDAsMTUgQEAKIHsKICAgICBpZiAobVVzZUxldmVsWmVyb1Rl
eHR1cmUgJiYgbU1pcExldmVscyA+IDEpCiAgICAgewotICAgICAgICBnbDo6RXJyb3IgZXJyb3Ig
PSBlbnN1cmVUZXh0dXJlRXhpc3RzKDEpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KLQorICAgICAg
ICBBTkdMRV9UUlkoZW5zdXJlVGV4dHVyZUV4aXN0cygxKSk7CiAgICAgICAgICpvdXRSZXNvdXJj
ZSA9IG1MZXZlbFplcm9UZXh0dXJlOwotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VS
Uk9SKTsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogICAgIGVsc2UKICAg
ICB7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGVuc3VyZVRleHR1cmVFeGlzdHMobU1pcExl
dmVscyk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQotCisgICAgICAgIEFOR0xFX1RSWShlbnN1cmVU
ZXh0dXJlRXhpc3RzKG1NaXBMZXZlbHMpKTsKICAgICAgICAgKm91dFJlc291cmNlID0gbVRleHR1
cmU7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICByZXR1
cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiB9CiAKQEAgLTIxMzQsMTQgKzIwNTcsOSBAQAogICAg
IC8vIFRoaXMgc2hvdWxkbid0IGJlIGNhbGxlZCB1bmxlc3MgdGhlIHplcm8gbWF4IExPRCB3b3Jr
YXJvdW5kIGlzIGFjdGl2ZS4KICAgICBBU1NFUlQobVJlbmRlcmVyLT5nZXRXb3JrYXJvdW5kcygp
Lnplcm9NYXhMb2RXb3JrYXJvdW5kKTsKIAotICAgIGdsOjpFcnJvciBlcnJvciA9IGVuc3VyZVRl
eHR1cmVFeGlzdHMobU1pcExldmVscyk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Ci0KKyAgICBBTkdMRV9UUlkoZW5zdXJlVGV4
dHVyZUV4aXN0cyhtTWlwTGV2ZWxzKSk7CiAgICAgKm91dFJlc291cmNlID0gbVRleHR1cmU7Ci0g
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9y
KCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExX0N1YmU6OmVuc3VyZVRleHR1cmVF
eGlzdHMoaW50IG1pcExldmVscykKQEAgLTIxNjUsNyArMjA4Myw3IEBACiAgICAgICAgIGRlc2Mu
SGVpZ2h0ICAgICAgICAgICAgID0gbVRleHR1cmVIZWlnaHQ7CiAgICAgICAgIGRlc2MuTWlwTGV2
ZWxzICAgICAgICAgID0gbWlwTGV2ZWxzOwogICAgICAgICBkZXNjLkFycmF5U2l6ZSAgICAgICAg
ICA9IENVQkVfRkFDRV9DT1VOVDsKLSAgICAgICAgZGVzYy5Gb3JtYXQgICAgICAgICAgICAgPSBt
VGV4dHVyZUZvcm1hdFNldC0+dGV4Rm9ybWF0OworICAgICAgICBkZXNjLkZvcm1hdCAgICAgICAg
ICAgICA9IG1Gb3JtYXRJbmZvLnRleEZvcm1hdDsKICAgICAgICAgZGVzYy5TYW1wbGVEZXNjLkNv
dW50ICAgPSAxOwogICAgICAgICBkZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7CiAgICAgICAg
IGRlc2MuVXNhZ2UgICAgICAgICAgICAgID0gRDNEMTFfVVNBR0VfREVGQVVMVDsKQEAgLTIxOTIs
NyArMjExMCw3IEBACiAgICAgICAgIGQzZDExOjpTZXREZWJ1Z05hbWUoKm91dHB1dFRleHR1cmUs
ICJUZXhTdG9yYWdlQ3ViZS5UZXh0dXJlIik7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJv
ciBUZXh0dXJlU3RvcmFnZTExX0N1YmU6OmNyZWF0ZVJlbmRlclRhcmdldFNSVihJRDNEMTFSZXNv
dXJjZSAqdGV4dHVyZSwKQEAgLTIyMzgsNyArMjE1Niw3IEBACiAgICAgY29uc3QgaW50IGxldmVs
ICAgICA9IGluZGV4Lm1pcEluZGV4OwogCiAgICAgQVNTRVJUKGxldmVsID49IDAgJiYgbGV2ZWwg
PCBnZXRMZXZlbENvdW50KCkpOwotICAgIEFTU0VSVChmYWNlSW5kZXggPj0gMCAmJiBmYWNlSW5k
ZXggPCBDVUJFX0ZBQ0VfQ09VTlQpOworICAgIEFTU0VSVChmYWNlSW5kZXggPj0gMCAmJiBmYWNl
SW5kZXggPCBzdGF0aWNfY2FzdDxHTGludD4oQ1VCRV9GQUNFX0NPVU5UKSk7CiAKICAgICBpZiAo
IW1SZW5kZXJUYXJnZXRbZmFjZUluZGV4XVtsZXZlbF0pCiAgICAgewpAQCAtMjI0NiwxMSArMjE2
NCw3IEBACiAgICAgICAgIEhSRVNVTFQgcmVzdWx0OwogCiAgICAgICAgIElEM0QxMVJlc291cmNl
ICp0ZXh0dXJlID0gbnVsbHB0cjsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gZ2V0UmVzb3Vy
Y2UoJnRleHR1cmUpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKGdl
dFJlc291cmNlKCZ0ZXh0dXJlKSk7CiAKICAgICAgICAgaWYgKG1Vc2VMZXZlbFplcm9UZXh0dXJl
KQogICAgICAgICB7CkBAIC0yMjU3LDcgKzIxNzEsNyBAQAogICAgICAgICAgICAgaWYgKCFtTGV2
ZWxaZXJvUmVuZGVyVGFyZ2V0W2ZhY2VJbmRleF0pCiAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgRDNEMTFfUkVOREVSX1RBUkdFVF9WSUVXX0RFU0MgcnR2RGVzYzsKLSAgICAgICAgICAg
ICAgICBydHZEZXNjLkZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICA9IG1UZXh0dXJlRm9y
bWF0U2V0LT5ydHZGb3JtYXQ7CisgICAgICAgICAgICAgICAgcnR2RGVzYy5Gb3JtYXQgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBtRm9ybWF0SW5mby5ydHZGb3JtYXQ7CiAgICAgICAgICAgICAg
ICAgcnR2RGVzYy5WaWV3RGltZW5zaW9uICAgICAgICAgICAgICAgICAgPSBEM0QxMV9SVFZfRElN
RU5TSU9OX1RFWFRVUkUyREFSUkFZOwogICAgICAgICAgICAgICAgIHJ0dkRlc2MuVGV4dHVyZTJE
QXJyYXkuTWlwU2xpY2UgICAgICAgID0gbVRvcExldmVsICsgbGV2ZWw7CiAgICAgICAgICAgICAg
ICAgcnR2RGVzYy5UZXh0dXJlMkRBcnJheS5GaXJzdEFycmF5U2xpY2UgPSBmYWNlSW5kZXg7CkBA
IC0yMjc2LDggKzIxOTAsOCBAQAogICAgICAgICAgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVz
dWx0KSk7CiAKICAgICAgICAgICAgICAgICBtTGV2ZWxaZXJvUmVuZGVyVGFyZ2V0W2ZhY2VJbmRl
eF0gPSBuZXcgVGV4dHVyZVJlbmRlclRhcmdldDExKAotICAgICAgICAgICAgICAgICAgICBydHYs
IG1MZXZlbFplcm9UZXh0dXJlLCBudWxscHRyLCBudWxscHRyLCBtSW50ZXJuYWxGb3JtYXQsCi0g
ICAgICAgICAgICAgICAgICAgIG1UZXh0dXJlRm9ybWF0U2V0LT5mb3JtYXQsIGdldExldmVsV2lk
dGgobGV2ZWwpLCBnZXRMZXZlbEhlaWdodChsZXZlbCksIDEsIDApOworICAgICAgICAgICAgICAg
ICAgICBydHYsIG1MZXZlbFplcm9UZXh0dXJlLCBudWxscHRyLCBudWxscHRyLCBtRm9ybWF0SW5m
by5pbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgZ2V0Rm9ybWF0U2V0KCksIGdl
dExldmVsV2lkdGgobGV2ZWwpLCBnZXRMZXZlbEhlaWdodChsZXZlbCksIDEsIDApOwogCiAgICAg
ICAgICAgICAgICAgLy8gUmVuZGVyVGFyZ2V0IHdpbGwgdGFrZSBvd25lcnNoaXAgb2YgdGhlc2Ug
cmVzb3VyY2VzCiAgICAgICAgICAgICAgICAgU2FmZVJlbGVhc2UocnR2KTsKQEAgLTIyODksMTYg
KzIyMDMsMTIgQEAKICAgICAgICAgfQogCiAgICAgICAgIElEM0QxMVNoYWRlclJlc291cmNlVmll
dyAqc3J2ID0gbnVsbHB0cjsKLSAgICAgICAgZXJyb3IgPSBjcmVhdGVSZW5kZXJUYXJnZXRTUlYo
dGV4dHVyZSwgaW5kZXgsIG1UZXh0dXJlRm9ybWF0U2V0LT5zcnZGb3JtYXQsICZzcnYpOwotICAg
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
ZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKGNyZWF0ZVJlbmRlclRhcmdldFNS
Vih0ZXh0dXJlLCBpbmRleCwgbUZvcm1hdEluZm8uc3J2Rm9ybWF0LCAmc3J2KSk7CiAgICAgICAg
IElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqYmxpdFNSViA9IG51bGxwdHI7Ci0gICAgICAgIGlm
IChtVGV4dHVyZUZvcm1hdFNldC0+YmxpdFNSVkZvcm1hdCAhPSBtVGV4dHVyZUZvcm1hdFNldC0+
c3J2Rm9ybWF0KQorICAgICAgICBpZiAobUZvcm1hdEluZm8uYmxpdFNSVkZvcm1hdCAhPSBtRm9y
bWF0SW5mby5zcnZGb3JtYXQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGVycm9yID0KLSAgICAg
ICAgICAgICAgICBjcmVhdGVSZW5kZXJUYXJnZXRTUlYodGV4dHVyZSwgaW5kZXgsIG1UZXh0dXJl
Rm9ybWF0U2V0LT5ibGl0U1JWRm9ybWF0LCAmYmxpdFNSVik7CisgICAgICAgICAgICBnbDo6RXJy
b3IgZXJyb3IgPQorICAgICAgICAgICAgICAgIGNyZWF0ZVJlbmRlclRhcmdldFNSVih0ZXh0dXJl
LCBpbmRleCwgbUZvcm1hdEluZm8uYmxpdFNSVkZvcm1hdCwgJmJsaXRTUlYpOwogICAgICAgICAg
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBT
YWZlUmVsZWFzZShzcnYpOwpAQCAtMjMxMywxMCArMjIyMywxMCBAQAogCiAgICAgICAgIGQzZDEx
OjpTZXREZWJ1Z05hbWUoc3J2LCAiVGV4U3RvcmFnZUN1YmUuUmVuZGVyVGFyZ2V0U1JWIik7CiAK
LSAgICAgICAgaWYgKG1UZXh0dXJlRm9ybWF0U2V0LT5ydHZGb3JtYXQgIT0gRFhHSV9GT1JNQVRf
VU5LTk9XTikKKyAgICAgICAgaWYgKG1Gb3JtYXRJbmZvLnJ0dkZvcm1hdCAhPSBEWEdJX0ZPUk1B
VF9VTktOT1dOKQogICAgICAgICB7CiAgICAgICAgICAgICBEM0QxMV9SRU5ERVJfVEFSR0VUX1ZJ
RVdfREVTQyBydHZEZXNjOwotICAgICAgICAgICAgcnR2RGVzYy5Gb3JtYXQgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBtVGV4dHVyZUZvcm1hdFNldC0+cnR2Rm9ybWF0OworICAgICAgICAgICAg
cnR2RGVzYy5Gb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgPSBtRm9ybWF0SW5mby5ydHZG
b3JtYXQ7CiAgICAgICAgICAgICBydHZEZXNjLlZpZXdEaW1lbnNpb24gICAgICAgICAgICAgICAg
ICA9IEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTJEQVJSQVk7CiAgICAgICAgICAgICBydHZE
ZXNjLlRleHR1cmUyREFycmF5Lk1pcFNsaWNlICAgICAgICA9IG1Ub3BMZXZlbCArIGxldmVsOwog
ICAgICAgICAgICAgcnR2RGVzYy5UZXh0dXJlMkRBcnJheS5GaXJzdEFycmF5U2xpY2UgPSBmYWNl
SW5kZXg7CkBAIC0yMzM5LDcgKzIyNDksNyBAQAogICAgICAgICAgICAgZDNkMTE6OlNldERlYnVn
TmFtZShydHYsICJUZXhTdG9yYWdlQ3ViZS5SZW5kZXJUYXJnZXRSVFYiKTsKIAogICAgICAgICAg
ICAgbVJlbmRlclRhcmdldFtmYWNlSW5kZXhdW2xldmVsXSA9IG5ldyBUZXh0dXJlUmVuZGVyVGFy
Z2V0MTEoCi0gICAgICAgICAgICAgICAgcnR2LCB0ZXh0dXJlLCBzcnYsIGJsaXRTUlYsIG1JbnRl
cm5hbEZvcm1hdCwgbVRleHR1cmVGb3JtYXRTZXQtPmZvcm1hdCwKKyAgICAgICAgICAgICAgICBy
dHYsIHRleHR1cmUsIHNydiwgYmxpdFNSViwgbUZvcm1hdEluZm8uaW50ZXJuYWxGb3JtYXQsIGdl
dEZvcm1hdFNldCgpLAogICAgICAgICAgICAgICAgIGdldExldmVsV2lkdGgobGV2ZWwpLCBnZXRM
ZXZlbEhlaWdodChsZXZlbCksIDEsIDApOwogCiAgICAgICAgICAgICAvLyBSZW5kZXJUYXJnZXQg
d2lsbCB0YWtlIG93bmVyc2hpcCBvZiB0aGVzZSByZXNvdXJjZXMKQEAgLTIzNDcsMTAgKzIyNTcs
MTAgQEAKICAgICAgICAgICAgIFNhZmVSZWxlYXNlKHNydik7CiAgICAgICAgICAgICBTYWZlUmVs
ZWFzZShibGl0U1JWKTsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChtVGV4dHVyZUZvcm1h
dFNldC0+ZHN2Rm9ybWF0ICE9IERYR0lfRk9STUFUX1VOS05PV04pCisgICAgICAgIGVsc2UgaWYg
KG1Gb3JtYXRJbmZvLmRzdkZvcm1hdCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dOKQogICAgICAgICB7
CiAgICAgICAgICAgICBEM0QxMV9ERVBUSF9TVEVOQ0lMX1ZJRVdfREVTQyBkc3ZEZXNjOwotICAg
ICAgICAgICAgZHN2RGVzYy5Gb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgPSBtVGV4dHVy
ZUZvcm1hdFNldC0+ZHN2Rm9ybWF0OworICAgICAgICAgICAgZHN2RGVzYy5Gb3JtYXQgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBtRm9ybWF0SW5mby5kc3ZGb3JtYXQ7CiAgICAgICAgICAgICBk
c3ZEZXNjLlZpZXdEaW1lbnNpb24gICAgICAgICAgICAgICAgICA9IEQzRDExX0RTVl9ESU1FTlNJ
T05fVEVYVFVSRTJEQVJSQVk7CiAgICAgICAgICAgICBkc3ZEZXNjLkZsYWdzICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IDA7CiAgICAgICAgICAgICBkc3ZEZXNjLlRleHR1cmUyREFycmF5Lk1p
cFNsaWNlICAgICAgICA9IG1Ub3BMZXZlbCArIGxldmVsOwpAQCAtMjM3NCw3ICsyMjg0LDcgQEAK
ICAgICAgICAgICAgIGQzZDExOjpTZXREZWJ1Z05hbWUoZHN2LCAiVGV4U3RvcmFnZUN1YmUuUmVu
ZGVyVGFyZ2V0RFNWIik7CiAKICAgICAgICAgICAgIG1SZW5kZXJUYXJnZXRbZmFjZUluZGV4XVts
ZXZlbF0gPSBuZXcgVGV4dHVyZVJlbmRlclRhcmdldDExKAotICAgICAgICAgICAgICAgIGRzdiwg
dGV4dHVyZSwgc3J2LCBtSW50ZXJuYWxGb3JtYXQsIG1UZXh0dXJlRm9ybWF0U2V0LT5mb3JtYXQs
IGdldExldmVsV2lkdGgobGV2ZWwpLAorICAgICAgICAgICAgICAgIGRzdiwgdGV4dHVyZSwgc3J2
LCBtRm9ybWF0SW5mby5pbnRlcm5hbEZvcm1hdCwgZ2V0Rm9ybWF0U2V0KCksIGdldExldmVsV2lk
dGgobGV2ZWwpLAogICAgICAgICAgICAgICAgIGdldExldmVsSGVpZ2h0KGxldmVsKSwgMSwgMCk7
CiAKICAgICAgICAgICAgIC8vIFJlbmRlclRhcmdldCB3aWxsIHRha2Ugb3duZXJzaGlwIG9mIHRo
ZXNlIHJlc291cmNlcwpAQCAtMjQwNiw4ICsyMzE2LDggQEAKIAogICAgIC8vIFVubm9ybWFsaXpl
ZCBpbnRlZ2VyIGN1YmUgbWFwcyBhcmUgbm90IHN1cHBvcnRlZCBieSBEWDExOyB3ZSBlbXVsYXRl
IHRoZW0gYXMgYW4gYXJyYXkgb2Ygc2l4CiAgICAgLy8gMkQgdGV4dHVyZXMKLSAgICBjb25zdCBk
M2QxMTo6RFhHSUZvcm1hdCAmZHhnaUZvcm1hdEluZm8gPSBkM2QxMTo6R2V0RFhHSUZvcm1hdElu
Zm8oZm9ybWF0KTsKLSAgICBpZiAoZHhnaUZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9J
TlQgfHwgZHhnaUZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9VTlNJR05FRF9JTlQpCisg
ICAgY29uc3QgR0xlbnVtIGNvbXBvbmVudFR5cGUgPSBkM2QxMTo6R2V0Q29tcG9uZW50VHlwZShm
b3JtYXQpOworICAgIGlmIChjb21wb25lbnRUeXBlID09IEdMX0lOVCB8fCBjb21wb25lbnRUeXBl
ID09IEdMX1VOU0lHTkVEX0lOVCkKICAgICB7CiAgICAgICAgIHNydkRlc2MuVmlld0RpbWVuc2lv
biAgICAgICAgICAgICAgICAgID0gRDNEMTFfU1JWX0RJTUVOU0lPTl9URVhUVVJFMkRBUlJBWTsK
ICAgICAgICAgc3J2RGVzYy5UZXh0dXJlMkRBcnJheS5Nb3N0RGV0YWlsZWRNaXAgPSBtVG9wTGV2
ZWwgKyBiYXNlTGV2ZWw7CkBAIC0yNDczLDcgKzIzODMsNyBAQAogICAgICAgICBkZXNjLkhlaWdo
dCAgICAgICAgICAgICA9IG1UZXh0dXJlSGVpZ2h0OwogICAgICAgICBkZXNjLk1pcExldmVscyAg
ICAgICAgICA9IG1NaXBMZXZlbHM7CiAgICAgICAgIGRlc2MuQXJyYXlTaXplICAgICAgICAgID0g
Q1VCRV9GQUNFX0NPVU5UOwotICAgICAgICBkZXNjLkZvcm1hdCAgICAgICAgICAgICA9IG1Td2l6
emxlRm9ybWF0U2V0LT50ZXhGb3JtYXQ7CisgICAgICAgIGRlc2MuRm9ybWF0ICAgICAgICAgICAg
ID0gbUZvcm1hdEluZm8uc3dpenpsZS50ZXhGb3JtYXQ7CiAgICAgICAgIGRlc2MuU2FtcGxlRGVz
Yy5Db3VudCAgID0gMTsKICAgICAgICAgZGVzYy5TYW1wbGVEZXNjLlF1YWxpdHkgPSAwOwogICAg
ICAgICBkZXNjLlVzYWdlICAgICAgICAgICAgICA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7CkBAIC0y
NTA2LDE2ICsyNDE2LDEyIEBACiAgICAgaWYgKCFtU3dpenpsZVJlbmRlclRhcmdldHNbbWlwTGV2
ZWxdKQogICAgIHsKICAgICAgICAgSUQzRDExUmVzb3VyY2UgKnN3aXp6bGVUZXh0dXJlID0gbnVs
bHB0cjsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gZ2V0U3dpenpsZVRleHR1cmUoJnN3aXp6
bGVUZXh0dXJlKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9CisgICAgICAgIEFOR0xFX1RSWShnZXRT
d2l6emxlVGV4dHVyZSgmc3dpenpsZVRleHR1cmUpKTsKIAogICAgICAgICBJRDNEMTFEZXZpY2Ug
KmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CiAKICAgICAgICAgRDNEMTFfUkVOREVS
X1RBUkdFVF9WSUVXX0RFU0MgcnR2RGVzYzsKLSAgICAgICAgcnR2RGVzYy5Gb3JtYXQgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBtU3dpenpsZUZvcm1hdFNldC0+cnR2Rm9ybWF0OworICAgICAg
ICBydHZEZXNjLkZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICA9IG1Gb3JtYXRJbmZvLnN3
aXp6bGUucnR2Rm9ybWF0OwogICAgICAgICBydHZEZXNjLlZpZXdEaW1lbnNpb24gICAgICAgICAg
ICAgICAgICA9IEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTJEQVJSQVk7CiAgICAgICAgIHJ0
dkRlc2MuVGV4dHVyZTJEQXJyYXkuTWlwU2xpY2UgICAgICAgID0gbVRvcExldmVsICsgbWlwTGV2
ZWw7CiAgICAgICAgIHJ0dkRlc2MuVGV4dHVyZTJEQXJyYXkuRmlyc3RBcnJheVNsaWNlID0gMDsK
QEAgLTI1MzQsOSArMjQ0MCw2OSBAQAogICAgIH0KIAogICAgICpvdXRSVFYgPSBtU3dpenpsZVJl
bmRlclRhcmdldHNbbWlwTGV2ZWxdOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1Ip
OworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCitnbDo6RXJyb3IgVGV4dHVyZVN0b3Jh
Z2UxMTo6aW5pdERyb3BTdGVuY2lsVGV4dHVyZShjb25zdCBnbDo6SW1hZ2VJbmRleEl0ZXJhdG9y
ICZpdCkKK3sKKyAgICBJRDNEMTFSZXNvdXJjZSAqcmVzb3VyY2UgPSBudWxscHRyOworICAgIEFO
R0xFX1RSWShnZXRSZXNvdXJjZSgmcmVzb3VyY2UpKTsKKyAgICBUZXh0dXJlSGVscGVyMTEgc291
cmNlVGV4dHVyZSA9IFRleHR1cmVIZWxwZXIxMTo6TWFrZUFuZFJlZmVyZW5jZShyZXNvdXJjZSwg
bUZvcm1hdEluZm8pOworICAgIFRleHR1cmVIZWxwZXIxMSBkZXN0VGV4dHVyZSAgID0gVGV4dHVy
ZUhlbHBlcjExOjpNYWtlQW5kUmVmZXJlbmNlKAorICAgICAgICBtRHJvcFN0ZW5jaWxUZXh0dXJl
LAorICAgICAgICBkM2QxMTo6Rm9ybWF0OjpHZXQoR0xfREVQVEhfQ09NUE9ORU5UMzJGLCBtUmVu
ZGVyZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCkpKTsKKworICAgIGdsOjpJbWFnZUluZGV4
SXRlcmF0b3IgaXRDb3B5ID0gaXQ7CisKKyAgICB3aGlsZSAoaXRDb3B5Lmhhc05leHQoKSkKKyAg
ICB7CisgICAgICAgIGdsOjpJbWFnZUluZGV4IGluZGV4ID0gaXRDb3B5Lm5leHQoKTsKKyAgICAg
ICAgZ2w6OkJveCB3aG9sZUFyZWEoMCwgMCwgMCwgZ2V0TGV2ZWxXaWR0aChpbmRleC5taXBJbmRl
eCksIGdldExldmVsSGVpZ2h0KGluZGV4Lm1pcEluZGV4KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgMSk7CisgICAgICAgIGdsOjpFeHRlbnRzIHdob2xlU2l6ZSh3aG9sZUFyZWEud2lkdGgs
IHdob2xlQXJlYS5oZWlnaHQsIDEpOworICAgICAgICBVSU5UIHN1YnJlc291cmNlID0gZ2V0U3Vi
cmVzb3VyY2VJbmRleChpbmRleCk7CisgICAgICAgIEFOR0xFX1RSWShtUmVuZGVyZXItPmdldEJs
aXR0ZXIoKS0+Y29weURlcHRoU3RlbmNpbChzb3VyY2VUZXh0dXJlLCBzdWJyZXNvdXJjZSwgd2hv
bGVBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2hvbGVTaXplLCBkZXN0VGV4dHVyZSwgc3VicmVzb3VyY2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aG9s
ZUFyZWEsIHdob2xlU2l6ZSwgbnVsbHB0cikpOworICAgIH0KKworICAgIHJldHVybiBnbDo6Tm9F
cnJvcigpOworfQorCitnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjpjcmVhdGVEcm9w
U3RlbmNpbFRleHR1cmUoKQoreworICAgIGlmIChtRHJvcFN0ZW5jaWxUZXh0dXJlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CisgICAgfQorCisgICAgRDNEMTFfVEVYVFVS
RTJEX0RFU0MgZHJvcERlc2MgPSB7fTsKKyAgICBkcm9wRGVzYy5BcnJheVNpemUgICAgICAgICAg
ICA9IDY7CisgICAgZHJvcERlc2MuQmluZEZsYWdzICAgICAgICAgICAgPSBEM0QxMV9CSU5EX1NI
QURFUl9SRVNPVVJDRSB8IEQzRDExX0JJTkRfREVQVEhfU1RFTkNJTDsKKyAgICBkcm9wRGVzYy5D
UFVBY2Nlc3NGbGFncyAgICAgICA9IDA7CisgICAgZHJvcERlc2MuRm9ybWF0ICAgICAgICAgICAg
ICAgPSBEWEdJX0ZPUk1BVF9SMzJfVFlQRUxFU1M7CisgICAgZHJvcERlc2MuSGVpZ2h0ICAgICAg
ICAgICAgICAgPSBtVGV4dHVyZUhlaWdodDsKKyAgICBkcm9wRGVzYy5NaXBMZXZlbHMgICAgICAg
ICAgICA9IG1NaXBMZXZlbHM7CisgICAgZHJvcERlc2MuTWlzY0ZsYWdzICAgICAgICAgICAgPSBE
M0QxMV9SRVNPVVJDRV9NSVNDX1RFWFRVUkVDVUJFOworICAgIGRyb3BEZXNjLlNhbXBsZURlc2Mu
Q291bnQgICAgID0gMTsKKyAgICBkcm9wRGVzYy5TYW1wbGVEZXNjLlF1YWxpdHkgICA9IDA7Cisg
ICAgZHJvcERlc2MuVXNhZ2UgICAgICAgICAgICAgICAgPSBEM0QxMV9VU0FHRV9ERUZBVUxUOwor
ICAgIGRyb3BEZXNjLldpZHRoICAgICAgICAgICAgICAgID0gbVRleHR1cmVXaWR0aDsKKworICAg
IElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAgIEhS
RVNVTFQgaHIgPSBkZXZpY2UtPkNyZWF0ZVRleHR1cmUyRCgmZHJvcERlc2MsIG51bGxwdHIsICZt
RHJvcFN0ZW5jaWxUZXh0dXJlKTsKKyAgICBpZiAoRkFJTEVEKGhyKSkKKyAgICB7CisgICAgICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFcnJvciBjcmVhdGluZyBk
cm9wIHN0ZW5jaWwgdGV4dHVyZS4iKTsKKyAgICB9CisgICAgZDNkMTE6OlNldERlYnVnTmFtZSht
RHJvcFN0ZW5jaWxUZXh0dXJlLCAiVGV4U3RvcmFnZUN1YmUuRHJvcFN0ZW5jaWwiKTsKKworICAg
IEFOR0xFX1RSWShpbml0RHJvcFN0ZW5jaWxUZXh0dXJlKGdsOjpJbWFnZUluZGV4SXRlcmF0b3I6
Ok1ha2VDdWJlKDAsIG1NaXBMZXZlbHMpKSk7CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
K30KKwogVGV4dHVyZVN0b3JhZ2UxMV8zRDo6VGV4dHVyZVN0b3JhZ2UxMV8zRChSZW5kZXJlcjEx
ICpyZW5kZXJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIHJlbmRlclRhcmdldCwKQEAgLTI1NTAsNyArMjUxNiw4IEBACiAgICAgICAgICAg
R2V0VGV4dHVyZU1pc2NGbGFncyhpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVuZGVyVGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGV2ZWxzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyks
CisgICAgICAgICAgaW50ZXJuYWxmb3JtYXQpCiB7CiAgICAgbVRleHR1cmUgICAgICAgID0gbnVs
bHB0cjsKICAgICBtU3dpenpsZVRleHR1cmUgPSBudWxscHRyOwpAQCAtMjU2MiwxNSArMjUyOSw4
IEBACiAgICAgICAgIG1Td2l6emxlUmVuZGVyVGFyZ2V0c1tpXSA9IG51bGxwdHI7CiAgICAgfQog
Ci0gICAgbUludGVybmFsRm9ybWF0ID0gaW50ZXJuYWxmb3JtYXQ7Ci0KLSAgICBjb25zdCBkM2Qx
MTo6VGV4dHVyZUZvcm1hdCAmZm9ybWF0SW5mbyA9Ci0gICAgICAgIGQzZDExOjpHZXRUZXh0dXJl
Rm9ybWF0SW5mbyhpbnRlcm5hbGZvcm1hdCwgcmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZpY2VD
YXBzKCkpOwotICAgIG1UZXh0dXJlRm9ybWF0U2V0ID0gZm9ybWF0SW5mby5mb3JtYXRTZXQ7Ci0g
ICAgbVN3aXp6bGVGb3JtYXRTZXQgPSBmb3JtYXRJbmZvLnN3aXp6bGVGb3JtYXRTZXQ7Ci0KICAg
ICAvLyBhZGp1c3Qgc2l6ZSBpZiBuZWVkZWQgZm9yIGNvbXByZXNzZWQgdGV4dHVyZXMKLSAgICBk
M2QxMTo6TWFrZVZhbGlkU2l6ZShmYWxzZSwgbVRleHR1cmVGb3JtYXRTZXQtPnRleEZvcm1hdCwg
JndpZHRoLCAmaGVpZ2h0LCAmbVRvcExldmVsKTsKKyAgICBkM2QxMTo6TWFrZVZhbGlkU2l6ZShm
YWxzZSwgbUZvcm1hdEluZm8udGV4Rm9ybWF0LCAmd2lkdGgsICZoZWlnaHQsICZtVG9wTGV2ZWwp
OwogCiAgICAgbU1pcExldmVscyAgICAgPSBtVG9wTGV2ZWwgKyBsZXZlbHM7CiAgICAgbVRleHR1
cmVXaWR0aCAgPSB3aWR0aDsKQEAgLTI2ODMsMTYgKzI2NDMsMTIgQEAKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAvLyBGb3JjZSB0aGUgaW1hZ2UgdG8gcmVjb3ZlciBmcm9tIHN0b3Jh
Z2UgYmVmb3JlIGl0cyBkYXRhIGlzIG92ZXJ3cml0dGVuLgogICAgICAgICAgICAgICAgIC8vIFRo
aXMgd2lsbCByZXNldCBtQXNzb2NpYXRlZEltYWdlc1tsZXZlbF0gdG8gbnVsbHB0ciB0b28uCi0g
ICAgICAgICAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gbUFzc29jaWF0ZWRJbWFnZXNbbGV2ZWxd
LT5yZWNvdmVyRnJvbUFzc29jaWF0ZWRTdG9yYWdlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGVy
cm9yLmlzRXJyb3IoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBlcnJvcjsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgQU5HTEVfVFJZ
KG1Bc3NvY2lhdGVkSW1hZ2VzW2xldmVsXS0+cmVjb3ZlckZyb21Bc3NvY2lhdGVkU3RvcmFnZSgp
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJy
b3IgVGV4dHVyZVN0b3JhZ2UxMV8zRDo6Z2V0UmVzb3VyY2UoSUQzRDExUmVzb3VyY2UgKipvdXRS
ZXNvdXJjZSkKQEAgLTI3MTAsNyArMjY2Niw3IEBACiAgICAgICAgIGRlc2MuSGVpZ2h0ICAgICAg
ICAgPSBtVGV4dHVyZUhlaWdodDsKICAgICAgICAgZGVzYy5EZXB0aCAgICAgICAgICA9IG1UZXh0
dXJlRGVwdGg7CiAgICAgICAgIGRlc2MuTWlwTGV2ZWxzICAgICAgPSBtTWlwTGV2ZWxzOwotICAg
ICAgICBkZXNjLkZvcm1hdCAgICAgICAgID0gbVRleHR1cmVGb3JtYXRTZXQtPnRleEZvcm1hdDsK
KyAgICAgICAgZGVzYy5Gb3JtYXQgICAgICAgICA9IG1Gb3JtYXRJbmZvLnRleEZvcm1hdDsKICAg
ICAgICAgZGVzYy5Vc2FnZSAgICAgICAgICA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7CiAgICAgICAg
IGRlc2MuQmluZEZsYWdzICAgICAgPSBnZXRCaW5kRmxhZ3MoKTsKICAgICAgICAgZGVzYy5DUFVB
Y2Nlc3NGbGFncyA9IDA7CkBAIC0yNzczLDcgKzI3MjksNyBAQAogICAgIGNvbnN0IGludCBtaXBM
ZXZlbCA9IGluZGV4Lm1pcEluZGV4OwogICAgIEFTU0VSVChtaXBMZXZlbCA+PSAwICYmIG1pcExl
dmVsIDwgZ2V0TGV2ZWxDb3VudCgpKTsKIAotICAgIEFTU0VSVChtVGV4dHVyZUZvcm1hdFNldC0+
cnR2Rm9ybWF0ICE9IERYR0lfRk9STUFUX1VOS05PV04pOworICAgIEFTU0VSVChtRm9ybWF0SW5m
by5ydHZGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTik7CiAKICAgICBpZiAoIWluZGV4Lmhh
c0xheWVyKCkpCiAgICAgewpAQCAtMjc4MCwzMCArMjczNiwxOCBAQAogICAgICAgICBpZiAoIW1M
ZXZlbFJlbmRlclRhcmdldHNbbWlwTGV2ZWxdKQogICAgICAgICB7CiAgICAgICAgICAgICBJRDNE
MTFSZXNvdXJjZSAqdGV4dHVyZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICBnbDo6RXJyb3IgZXJy
b3IgPSBnZXRSZXNvdXJjZSgmdGV4dHVyZSk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJv
cigpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIEFOR0xFX1RSWShnZXRSZXNvdXJjZSgmdGV4dHVyZSkpOwog
CiAgICAgICAgICAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNydiA9IG51bGxwdHI7Ci0g
ICAgICAgICAgICBlcnJvciA9IGdldFNSVkxldmVsKG1pcExldmVsLCBmYWxzZSwgJnNydik7Ci0g
ICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFOR0xFX1RS
WShnZXRTUlZMZXZlbChtaXBMZXZlbCwgZmFsc2UsICZzcnYpKTsKIAogICAgICAgICAgICAgSUQz
RDExU2hhZGVyUmVzb3VyY2VWaWV3ICpibGl0U1JWID0gbnVsbHB0cjsKLSAgICAgICAgICAgIGVy
cm9yID0gZ2V0U1JWTGV2ZWwobWlwTGV2ZWwsIHRydWUsICZibGl0U1JWKTsKLSAgICAgICAgICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIGVycm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgQU5HTEVfVFJZKGdldFNSVkxl
dmVsKG1pcExldmVsLCB0cnVlLCAmYmxpdFNSVikpOwogCiAgICAgICAgICAgICBJRDNEMTFEZXZp
Y2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CiAKICAgICAgICAgICAgIEQzRDEx
X1JFTkRFUl9UQVJHRVRfVklFV19ERVNDIHJ0dkRlc2M7Ci0gICAgICAgICAgICBydHZEZXNjLkZv
cm1hdCAgICAgICAgICAgICAgICA9IG1UZXh0dXJlRm9ybWF0U2V0LT5ydHZGb3JtYXQ7CisgICAg
ICAgICAgICBydHZEZXNjLkZvcm1hdCAgICAgICAgICAgICAgICA9IG1Gb3JtYXRJbmZvLnJ0dkZv
cm1hdDsKICAgICAgICAgICAgIHJ0dkRlc2MuVmlld0RpbWVuc2lvbiAgICAgICAgID0gRDNEMTFf
UlRWX0RJTUVOU0lPTl9URVhUVVJFM0Q7CiAgICAgICAgICAgICBydHZEZXNjLlRleHR1cmUzRC5N
aXBTbGljZSAgICA9IG1Ub3BMZXZlbCArIG1pcExldmVsOwogICAgICAgICAgICAgcnR2RGVzYy5U
ZXh0dXJlM0QuRmlyc3RXU2xpY2UgPSAwOwpAQCAtMjgyNiw3ICsyNzcwLDcgQEAKICAgICAgICAg
ICAgIGQzZDExOjpTZXREZWJ1Z05hbWUocnR2LCAiVGV4U3RvcmFnZTNELlJUViIpOwogCiAgICAg
ICAgICAgICBtTGV2ZWxSZW5kZXJUYXJnZXRzW21pcExldmVsXSA9IG5ldyBUZXh0dXJlUmVuZGVy
VGFyZ2V0MTEoCi0gICAgICAgICAgICAgICAgcnR2LCB0ZXh0dXJlLCBzcnYsIGJsaXRTUlYsIG1J
bnRlcm5hbEZvcm1hdCwgbVRleHR1cmVGb3JtYXRTZXQtPmZvcm1hdCwKKyAgICAgICAgICAgICAg
ICBydHYsIHRleHR1cmUsIHNydiwgYmxpdFNSViwgbUZvcm1hdEluZm8uaW50ZXJuYWxGb3JtYXQs
IGdldEZvcm1hdFNldCgpLAogICAgICAgICAgICAgICAgIGdldExldmVsV2lkdGgobWlwTGV2ZWwp
LCBnZXRMZXZlbEhlaWdodChtaXBMZXZlbCksIGdldExldmVsRGVwdGgobWlwTGV2ZWwpLCAwKTsK
IAogICAgICAgICAgICAgLy8gUmVuZGVyVGFyZ2V0IHdpbGwgdGFrZSBvd25lcnNoaXAgb2YgdGhl
c2UgcmVzb3VyY2VzCkBAIC0yODQ4LDExICsyNzkyLDcgQEAKICAgICAgICAgICAgIEhSRVNVTFQg
cmVzdWx0OwogCiAgICAgICAgICAgICBJRDNEMTFSZXNvdXJjZSAqdGV4dHVyZSA9IG51bGxwdHI7
Ci0gICAgICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBnZXRSZXNvdXJjZSgmdGV4dHVyZSk7Ci0g
ICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFOR0xFX1RS
WShnZXRSZXNvdXJjZSgmdGV4dHVyZSkpOwogCiAgICAgICAgICAgICAvLyBUT0RPLCB3aGF0IGtp
bmQgb2YgU1JWIGlzIGV4cGVjdGVkIGhlcmU/CiAgICAgICAgICAgICBJRDNEMTFTaGFkZXJSZXNv
dXJjZVZpZXcgKnNydiA9IG51bGxwdHI7CkBAIC0yODU5LDcgKzI3OTksNyBAQAogICAgICAgICAg
ICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpibGl0U1JWID0gbnVsbHB0cjsKIAogICAgICAg
ICAgICAgRDNEMTFfUkVOREVSX1RBUkdFVF9WSUVXX0RFU0MgcnR2RGVzYzsKLSAgICAgICAgICAg
IHJ0dkRlc2MuRm9ybWF0ICAgICAgICAgICAgICAgID0gbVRleHR1cmVGb3JtYXRTZXQtPnJ0dkZv
cm1hdDsKKyAgICAgICAgICAgIHJ0dkRlc2MuRm9ybWF0ICAgICAgICAgICAgICAgID0gbUZvcm1h
dEluZm8ucnR2Rm9ybWF0OwogICAgICAgICAgICAgcnR2RGVzYy5WaWV3RGltZW5zaW9uICAgICAg
ICAgPSBEM0QxMV9SVFZfRElNRU5TSU9OX1RFWFRVUkUzRDsKICAgICAgICAgICAgIHJ0dkRlc2Mu
VGV4dHVyZTNELk1pcFNsaWNlICAgID0gbVRvcExldmVsICsgbWlwTGV2ZWw7CiAgICAgICAgICAg
ICBydHZEZXNjLlRleHR1cmUzRC5GaXJzdFdTbGljZSA9IGxheWVyOwpAQCAtMjg4Myw3ICsyODIz
LDcgQEAKICAgICAgICAgICAgIGQzZDExOjpTZXREZWJ1Z05hbWUocnR2LCAiVGV4U3RvcmFnZTNE
LkxheWVyUlRWIik7CiAKICAgICAgICAgICAgIG1MZXZlbExheWVyUmVuZGVyVGFyZ2V0c1trZXld
ID0gbmV3IFRleHR1cmVSZW5kZXJUYXJnZXQxMSgKLSAgICAgICAgICAgICAgICBydHYsIHRleHR1
cmUsIHNydiwgYmxpdFNSViwgbUludGVybmFsRm9ybWF0LCBtVGV4dHVyZUZvcm1hdFNldC0+Zm9y
bWF0LAorICAgICAgICAgICAgICAgIHJ0diwgdGV4dHVyZSwgc3J2LCBibGl0U1JWLCBtRm9ybWF0
SW5mby5pbnRlcm5hbEZvcm1hdCwgZ2V0Rm9ybWF0U2V0KCksCiAgICAgICAgICAgICAgICAgZ2V0
TGV2ZWxXaWR0aChtaXBMZXZlbCksIGdldExldmVsSGVpZ2h0KG1pcExldmVsKSwgMSwgMCk7CiAK
ICAgICAgICAgICAgIC8vIFJlbmRlclRhcmdldCB3aWxsIHRha2Ugb3duZXJzaGlwIG9mIHRoZXNl
IHJlc291cmNlcwpAQCAtMjg5Miw3ICsyODMyLDcgQEAKIAogICAgICAgICBBU1NFUlQob3V0UlQp
OwogICAgICAgICAqb3V0UlQgPSBtTGV2ZWxMYXllclJlbmRlclRhcmdldHNba2V5XTsKLSAgICAg
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6Tm9F
cnJvcigpOwogICAgIH0KIH0KIApAQCAtMjkwOSw3ICsyODQ5LDcgQEAKICAgICAgICAgZGVzYy5I
ZWlnaHQgICAgICAgICA9IG1UZXh0dXJlSGVpZ2h0OwogICAgICAgICBkZXNjLkRlcHRoICAgICAg
ICAgID0gbVRleHR1cmVEZXB0aDsKICAgICAgICAgZGVzYy5NaXBMZXZlbHMgICAgICA9IG1NaXBM
ZXZlbHM7Ci0gICAgICAgIGRlc2MuRm9ybWF0ICAgICAgICAgPSBtU3dpenpsZUZvcm1hdFNldC0+
dGV4Rm9ybWF0OworICAgICAgICBkZXNjLkZvcm1hdCAgICAgICAgID0gbUZvcm1hdEluZm8uc3dp
enpsZS50ZXhGb3JtYXQ7CiAgICAgICAgIGRlc2MuVXNhZ2UgICAgICAgICAgPSBEM0QxMV9VU0FH
RV9ERUZBVUxUOwogICAgICAgICBkZXNjLkJpbmRGbGFncyAgICAgID0gRDNEMTFfQklORF9TSEFE
RVJfUkVTT1VSQ0UgfCBEM0QxMV9CSU5EX1JFTkRFUl9UQVJHRVQ7CiAgICAgICAgIGRlc2MuQ1BV
QWNjZXNzRmxhZ3MgPSAwOwpAQCAtMjkzOSwxNiArMjg3OSwxMiBAQAogICAgIGlmICghbVN3aXp6
bGVSZW5kZXJUYXJnZXRzW21pcExldmVsXSkKICAgICB7CiAgICAgICAgIElEM0QxMVJlc291cmNl
ICpzd2l6emxlVGV4dHVyZSA9IG51bGxwdHI7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGdl
dFN3aXp6bGVUZXh0dXJlKCZzd2l6emxlVGV4dHVyZSk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQor
ICAgICAgICBBTkdMRV9UUlkoZ2V0U3dpenpsZVRleHR1cmUoJnN3aXp6bGVUZXh0dXJlKSk7CiAK
ICAgICAgICAgSUQzRDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwog
CiAgICAgICAgIEQzRDExX1JFTkRFUl9UQVJHRVRfVklFV19ERVNDIHJ0dkRlc2M7Ci0gICAgICAg
IHJ0dkRlc2MuRm9ybWF0ICAgICAgICAgICAgICAgID0gbVN3aXp6bGVGb3JtYXRTZXQtPnJ0dkZv
cm1hdDsKKyAgICAgICAgcnR2RGVzYy5Gb3JtYXQgICAgICAgICAgICAgICAgPSBtRm9ybWF0SW5m
by5zd2l6emxlLnJ0dkZvcm1hdDsKICAgICAgICAgcnR2RGVzYy5WaWV3RGltZW5zaW9uICAgICAg
ICAgPSBEM0QxMV9SVFZfRElNRU5TSU9OX1RFWFRVUkUzRDsKICAgICAgICAgcnR2RGVzYy5UZXh0
dXJlM0QuTWlwU2xpY2UgICAgPSBtVG9wTGV2ZWwgKyBtaXBMZXZlbDsKICAgICAgICAgcnR2RGVz
Yy5UZXh0dXJlM0QuRmlyc3RXU2xpY2UgPSAwOwpAQCAtMjk4NSw3ICsyOTIxLDggQEAKICAgICAg
ICAgICBHZXRUZXh0dXJlTWlzY0ZsYWdzKGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJUYXJnZXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsZXZlbHMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2
ZWxzKSwKKyAgICAgICAgICBpbnRlcm5hbGZvcm1hdCkKIHsKICAgICBtVGV4dHVyZSAgICAgICAg
PSBudWxscHRyOwogICAgIG1Td2l6emxlVGV4dHVyZSA9IG51bGxwdHI7CkBAIC0yOTk1LDE1ICsy
OTMyLDggQEAKICAgICAgICAgbVN3aXp6bGVSZW5kZXJUYXJnZXRzW2xldmVsXSA9IG51bGxwdHI7
CiAgICAgfQogCi0gICAgbUludGVybmFsRm9ybWF0ID0gaW50ZXJuYWxmb3JtYXQ7Ci0KLSAgICBj
b25zdCBkM2QxMTo6VGV4dHVyZUZvcm1hdCAmZm9ybWF0SW5mbyA9Ci0gICAgICAgIGQzZDExOjpH
ZXRUZXh0dXJlRm9ybWF0SW5mbyhpbnRlcm5hbGZvcm1hdCwgcmVuZGVyZXItPmdldFJlbmRlcmVy
MTFEZXZpY2VDYXBzKCkpOwotICAgIG1UZXh0dXJlRm9ybWF0U2V0ID0gZm9ybWF0SW5mby5mb3Jt
YXRTZXQ7Ci0gICAgbVN3aXp6bGVGb3JtYXRTZXQgPSBmb3JtYXRJbmZvLnN3aXp6bGVGb3JtYXRT
ZXQ7Ci0KICAgICAvLyBhZGp1c3Qgc2l6ZSBpZiBuZWVkZWQgZm9yIGNvbXByZXNzZWQgdGV4dHVy
ZXMKLSAgICBkM2QxMTo6TWFrZVZhbGlkU2l6ZShmYWxzZSwgbVRleHR1cmVGb3JtYXRTZXQtPnRl
eEZvcm1hdCwgJndpZHRoLCAmaGVpZ2h0LCAmbVRvcExldmVsKTsKKyAgICBkM2QxMTo6TWFrZVZh
bGlkU2l6ZShmYWxzZSwgbUZvcm1hdEluZm8udGV4Rm9ybWF0LCAmd2lkdGgsICZoZWlnaHQsICZt
VG9wTGV2ZWwpOwogCiAgICAgbU1pcExldmVscyAgICAgPSBtVG9wTGV2ZWwgKyBsZXZlbHM7CiAg
ICAgbVRleHR1cmVXaWR0aCAgPSB3aWR0aDsKQEAgLTMxMTcsMTYgKzMwNDcsMTIgQEAKICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAvLyBGb3JjZSB0aGUgaW1hZ2UgdG8gcmVjb3ZlciBm
cm9tIHN0b3JhZ2UgYmVmb3JlIGl0cyBkYXRhIGlzIG92ZXJ3cml0dGVuLgogICAgICAgICAgICAg
ICAgIC8vIFRoaXMgd2lsbCByZXNldCBtQXNzb2NpYXRlZEltYWdlc1tsZXZlbF0gdG8gbnVsbHB0
ciB0b28uCi0gICAgICAgICAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gbUFzc29jaWF0ZWRJbWFn
ZXNba2V5XS0+cmVjb3ZlckZyb21Bc3NvY2lhdGVkU3RvcmFnZSgpOwotICAgICAgICAgICAgICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIEFO
R0xFX1RSWShtQXNzb2NpYXRlZEltYWdlc1trZXldLT5yZWNvdmVyRnJvbUFzc29jaWF0ZWRTdG9y
YWdlKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGds
OjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGds
OjpFcnJvciBUZXh0dXJlU3RvcmFnZTExXzJEQXJyYXk6OmdldFJlc291cmNlKElEM0QxMVJlc291
cmNlICoqb3V0UmVzb3VyY2UpCkBAIC0zMTQ0LDcgKzMwNzAsNyBAQAogICAgICAgICBkZXNjLkhl
aWdodCAgICAgICAgICAgICA9IG1UZXh0dXJlSGVpZ2h0OwogICAgICAgICBkZXNjLk1pcExldmVs
cyAgICAgICAgICA9IG1NaXBMZXZlbHM7CiAgICAgICAgIGRlc2MuQXJyYXlTaXplICAgICAgICAg
ID0gbVRleHR1cmVEZXB0aDsKLSAgICAgICAgZGVzYy5Gb3JtYXQgICAgICAgICAgICAgPSBtVGV4
dHVyZUZvcm1hdFNldC0+dGV4Rm9ybWF0OworICAgICAgICBkZXNjLkZvcm1hdCAgICAgICAgICAg
ICA9IG1Gb3JtYXRJbmZvLnRleEZvcm1hdDsKICAgICAgICAgZGVzYy5TYW1wbGVEZXNjLkNvdW50
ICAgPSAxOwogICAgICAgICBkZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7CiAgICAgICAgIGRl
c2MuVXNhZ2UgICAgICAgICAgICAgID0gRDNEMTFfVVNBR0VfREVGQVVMVDsKQEAgLTMyNDksMjIg
KzMxNzUsMTQgQEAKICAgICAgICAgSFJFU1VMVCByZXN1bHQ7CiAKICAgICAgICAgSUQzRDExUmVz
b3VyY2UgKnRleHR1cmUgPSBudWxscHRyOwotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBnZXRS
ZXNvdXJjZSgmdGV4dHVyZSk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBBTkdMRV9U
UlkoZ2V0UmVzb3VyY2UoJnRleHR1cmUpKTsKICAgICAgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VW
aWV3ICpzcnY7Ci0gICAgICAgIGVycm9yID0gY3JlYXRlUmVuZGVyVGFyZ2V0U1JWKHRleHR1cmUs
IGluZGV4LCBtVGV4dHVyZUZvcm1hdFNldC0+c3J2Rm9ybWF0LCAmc3J2KTsKLSAgICAgICAgaWYg
KGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwot
ICAgICAgICB9CisgICAgICAgIEFOR0xFX1RSWShjcmVhdGVSZW5kZXJUYXJnZXRTUlYodGV4dHVy
ZSwgaW5kZXgsIG1Gb3JtYXRJbmZvLnNydkZvcm1hdCwgJnNydikpOwogICAgICAgICBJRDNEMTFT
aGFkZXJSZXNvdXJjZVZpZXcgKmJsaXRTUlY7Ci0gICAgICAgIGlmIChtVGV4dHVyZUZvcm1hdFNl
dC0+YmxpdFNSVkZvcm1hdCAhPSBtVGV4dHVyZUZvcm1hdFNldC0+c3J2Rm9ybWF0KQorICAgICAg
ICBpZiAobUZvcm1hdEluZm8uYmxpdFNSVkZvcm1hdCAhPSBtRm9ybWF0SW5mby5zcnZGb3JtYXQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGVycm9yID0KLSAgICAgICAgICAgICAgICBjcmVhdGVS
ZW5kZXJUYXJnZXRTUlYodGV4dHVyZSwgaW5kZXgsIG1UZXh0dXJlRm9ybWF0U2V0LT5ibGl0U1JW
Rm9ybWF0LCAmYmxpdFNSVik7CisgICAgICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPQorICAgICAg
ICAgICAgICAgIGNyZWF0ZVJlbmRlclRhcmdldFNSVih0ZXh0dXJlLCBpbmRleCwgbUZvcm1hdElu
Zm8uYmxpdFNSVkZvcm1hdCwgJmJsaXRTUlYpOwogICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJy
b3IoKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBTYWZlUmVsZWFzZShzcnYpOwpA
QCAtMzI3OSwxMCArMzE5NywxMCBAQAogCiAgICAgICAgIGQzZDExOjpTZXREZWJ1Z05hbWUoc3J2
LCAiVGV4U3RvcmFnZTJEQXJyYXkuUmVuZGVyVGFyZ2V0U1JWIik7CiAKLSAgICAgICAgaWYgKG1U
ZXh0dXJlRm9ybWF0U2V0LT5ydHZGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTikKKyAgICAg
ICAgaWYgKG1Gb3JtYXRJbmZvLnJ0dkZvcm1hdCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dOKQogICAg
ICAgICB7CiAgICAgICAgICAgICBEM0QxMV9SRU5ERVJfVEFSR0VUX1ZJRVdfREVTQyBydHZEZXNj
OwotICAgICAgICAgICAgcnR2RGVzYy5Gb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgPSBt
VGV4dHVyZUZvcm1hdFNldC0+cnR2Rm9ybWF0OworICAgICAgICAgICAgcnR2RGVzYy5Gb3JtYXQg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBtRm9ybWF0SW5mby5ydHZGb3JtYXQ7CiAgICAgICAg
ICAgICBydHZEZXNjLlZpZXdEaW1lbnNpb24gICAgICAgICAgICAgICAgICA9IEQzRDExX1JUVl9E
SU1FTlNJT05fVEVYVFVSRTJEQVJSQVk7CiAgICAgICAgICAgICBydHZEZXNjLlRleHR1cmUyREFy
cmF5Lk1pcFNsaWNlICAgICAgICA9IG1Ub3BMZXZlbCArIG1pcExldmVsOwogICAgICAgICAgICAg
cnR2RGVzYy5UZXh0dXJlMkRBcnJheS5GaXJzdEFycmF5U2xpY2UgPSBsYXllcjsKQEAgLTMzMDUs
NyArMzIyMyw3IEBACiAgICAgICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKHJ0diwgIlRleFN0
b3JhZ2UyREFycmF5LlJlbmRlclRhcmdldFJUViIpOwogCiAgICAgICAgICAgICBtUmVuZGVyVGFy
Z2V0c1trZXldID0gbmV3IFRleHR1cmVSZW5kZXJUYXJnZXQxMSgKLSAgICAgICAgICAgICAgICBy
dHYsIHRleHR1cmUsIHNydiwgYmxpdFNSViwgbUludGVybmFsRm9ybWF0LCBtVGV4dHVyZUZvcm1h
dFNldC0+Zm9ybWF0LAorICAgICAgICAgICAgICAgIHJ0diwgdGV4dHVyZSwgc3J2LCBibGl0U1JW
LCBtRm9ybWF0SW5mby5pbnRlcm5hbEZvcm1hdCwgZ2V0Rm9ybWF0U2V0KCksCiAgICAgICAgICAg
ICAgICAgZ2V0TGV2ZWxXaWR0aChtaXBMZXZlbCksIGdldExldmVsSGVpZ2h0KG1pcExldmVsKSwg
MSwgMCk7CiAKICAgICAgICAgICAgIC8vIFJlbmRlclRhcmdldCB3aWxsIHRha2Ugb3duZXJzaGlw
IG9mIHRoZXNlIHJlc291cmNlcwpAQCAtMzMxNSwxMCArMzIzMywxMCBAQAogICAgICAgICB9CiAg
ICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKG1UZXh0dXJlRm9ybWF0
U2V0LT5kc3ZGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTik7CisgICAgICAgICAgICBBU1NF
UlQobUZvcm1hdEluZm8uZHN2Rm9ybWF0ICE9IERYR0lfRk9STUFUX1VOS05PV04pOwogCiAgICAg
ICAgICAgICBEM0QxMV9ERVBUSF9TVEVOQ0lMX1ZJRVdfREVTQyBkc3ZEZXNjOwotICAgICAgICAg
ICAgZHN2RGVzYy5Gb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgPSBtVGV4dHVyZUZvcm1h
dFNldC0+ZHN2Rm9ybWF0OworICAgICAgICAgICAgZHN2RGVzYy5Gb3JtYXQgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBtRm9ybWF0SW5mby5kc3ZGb3JtYXQ7CiAgICAgICAgICAgICBkc3ZEZXNj
LlZpZXdEaW1lbnNpb24gICAgICAgICAgICAgICAgICA9IEQzRDExX0RTVl9ESU1FTlNJT05fVEVY
VFVSRTJEQVJSQVk7CiAgICAgICAgICAgICBkc3ZEZXNjLlRleHR1cmUyREFycmF5Lk1pcFNsaWNl
ICAgICAgICA9IG1Ub3BMZXZlbCArIG1pcExldmVsOwogICAgICAgICAgICAgZHN2RGVzYy5UZXh0
dXJlMkRBcnJheS5GaXJzdEFycmF5U2xpY2UgPSBsYXllcjsKQEAgLTMzNDAsNyArMzI1OCw3IEBA
CiAgICAgICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKGRzdiwgIlRleFN0b3JhZ2UyREFycmF5
LlJlbmRlclRhcmdldERTViIpOwogCiAgICAgICAgICAgICBtUmVuZGVyVGFyZ2V0c1trZXldID0g
bmV3IFRleHR1cmVSZW5kZXJUYXJnZXQxMSgKLSAgICAgICAgICAgICAgICBkc3YsIHRleHR1cmUs
IHNydiwgbUludGVybmFsRm9ybWF0LCBtVGV4dHVyZUZvcm1hdFNldC0+Zm9ybWF0LAorICAgICAg
ICAgICAgICAgIGRzdiwgdGV4dHVyZSwgc3J2LCBtRm9ybWF0SW5mby5pbnRlcm5hbEZvcm1hdCwg
Z2V0Rm9ybWF0U2V0KCksCiAgICAgICAgICAgICAgICAgZ2V0TGV2ZWxXaWR0aChtaXBMZXZlbCks
IGdldExldmVsSGVpZ2h0KG1pcExldmVsKSwgMSwgMCk7CiAKICAgICAgICAgICAgIC8vIFJlbmRl
clRhcmdldCB3aWxsIHRha2Ugb3duZXJzaGlwIG9mIHRoZXNlIHJlc291cmNlcwpAQCAtMzM1Miw3
ICszMjcwLDcgQEAKIAogICAgIEFTU0VSVChvdXRSVCk7CiAgICAgKm91dFJUID0gbVJlbmRlclRh
cmdldHNba2V5XTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1
cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfMkRBcnJh
eTo6Z2V0U3dpenpsZVRleHR1cmUoSUQzRDExUmVzb3VyY2UgKipvdXRUZXh0dXJlKQpAQCAtMzM2
Niw3ICszMjg0LDcgQEAKICAgICAgICAgZGVzYy5IZWlnaHQgICAgICAgICAgICAgPSBtVGV4dHVy
ZUhlaWdodDsKICAgICAgICAgZGVzYy5NaXBMZXZlbHMgICAgICAgICAgPSBtTWlwTGV2ZWxzOwog
ICAgICAgICBkZXNjLkFycmF5U2l6ZSAgICAgICAgICA9IG1UZXh0dXJlRGVwdGg7Ci0gICAgICAg
IGRlc2MuRm9ybWF0ICAgICAgICAgICAgID0gbVN3aXp6bGVGb3JtYXRTZXQtPnRleEZvcm1hdDsK
KyAgICAgICAgZGVzYy5Gb3JtYXQgICAgICAgICAgICAgPSBtRm9ybWF0SW5mby5zd2l6emxlLnRl
eEZvcm1hdDsKICAgICAgICAgZGVzYy5TYW1wbGVEZXNjLkNvdW50ICAgPSAxOwogICAgICAgICBk
ZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7CiAgICAgICAgIGRlc2MuVXNhZ2UgICAgICAgICAg
ICAgID0gRDNEMTFfVVNBR0VfREVGQVVMVDsKQEAgLTMzOTksMTYgKzMzMTcsMTIgQEAKICAgICBp
ZiAoIW1Td2l6emxlUmVuZGVyVGFyZ2V0c1ttaXBMZXZlbF0pCiAgICAgewogICAgICAgICBJRDNE
MTFSZXNvdXJjZSAqc3dpenpsZVRleHR1cmUgPSBudWxscHRyOwotICAgICAgICBnbDo6RXJyb3Ig
ZXJyb3IgPSBnZXRTd2l6emxlVGV4dHVyZSgmc3dpenpsZVRleHR1cmUpOwotICAgICAgICBpZiAo
ZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0g
ICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKGdldFN3aXp6bGVUZXh0dXJlKCZzd2l6emxlVGV4
dHVyZSkpOwogCiAgICAgICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXRE
ZXZpY2UoKTsKIAogICAgICAgICBEM0QxMV9SRU5ERVJfVEFSR0VUX1ZJRVdfREVTQyBydHZEZXNj
OwotICAgICAgICBydHZEZXNjLkZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICA9IG1Td2l6
emxlRm9ybWF0U2V0LT5ydHZGb3JtYXQ7CisgICAgICAgIHJ0dkRlc2MuRm9ybWF0ICAgICAgICAg
ICAgICAgICAgICAgICAgID0gbUZvcm1hdEluZm8uc3dpenpsZS5ydHZGb3JtYXQ7CiAgICAgICAg
IHJ0dkRlc2MuVmlld0RpbWVuc2lvbiAgICAgICAgICAgICAgICAgID0gRDNEMTFfUlRWX0RJTUVO
U0lPTl9URVhUVVJFMkRBUlJBWTsKICAgICAgICAgcnR2RGVzYy5UZXh0dXJlMkRBcnJheS5NaXBT
bGljZSAgICAgICAgPSBtVG9wTGV2ZWwgKyBtaXBMZXZlbDsKICAgICAgICAgcnR2RGVzYy5UZXh0
dXJlMkRBcnJheS5GaXJzdEFycmF5U2xpY2UgPSAwOwpAQCAtMzQyNyw2ICszMzQxLDQ0IEBACiAg
ICAgfQogCiAgICAgKm91dFJUViA9IG1Td2l6emxlUmVuZGVyVGFyZ2V0c1ttaXBMZXZlbF07Ci0g
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9y
KCk7CiB9CisKK2dsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExXzJEQXJyYXk6OmNyZWF0ZURyb3BT
dGVuY2lsVGV4dHVyZSgpCit7CisgICAgaWYgKG1Ecm9wU3RlbmNpbFRleHR1cmUpCisgICAgewor
ICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKKyAgICB9CisKKyAgICBEM0QxMV9URVhUVVJF
MkRfREVTQyBkcm9wRGVzYyA9IHt9OworICAgIGRyb3BEZXNjLkFycmF5U2l6ZSAgICAgICAgICAg
ID0gbVRleHR1cmVEZXB0aDsKKyAgICBkcm9wRGVzYy5CaW5kRmxhZ3MgICAgICAgICAgICA9IEQz
RDExX0JJTkRfU0hBREVSX1JFU09VUkNFIHwgRDNEMTFfQklORF9ERVBUSF9TVEVOQ0lMOworICAg
IGRyb3BEZXNjLkNQVUFjY2Vzc0ZsYWdzICAgICAgID0gMDsKKyAgICBkcm9wRGVzYy5Gb3JtYXQg
ICAgICAgICAgICAgICA9IERYR0lfRk9STUFUX1IzMl9UWVBFTEVTUzsKKyAgICBkcm9wRGVzYy5I
ZWlnaHQgICAgICAgICAgICAgICA9IG1UZXh0dXJlSGVpZ2h0OworICAgIGRyb3BEZXNjLk1pcExl
dmVscyAgICAgICAgICAgID0gbU1pcExldmVsczsKKyAgICBkcm9wRGVzYy5NaXNjRmxhZ3MgICAg
ICAgICAgICA9IDA7CisgICAgZHJvcERlc2MuU2FtcGxlRGVzYy5Db3VudCAgICAgPSAxOworICAg
IGRyb3BEZXNjLlNhbXBsZURlc2MuUXVhbGl0eSAgID0gMDsKKyAgICBkcm9wRGVzYy5Vc2FnZSAg
ICAgICAgICAgICAgICA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7CisgICAgZHJvcERlc2MuV2lkdGgg
ICAgICAgICAgICAgICAgPSBtVGV4dHVyZVdpZHRoOworCisgICAgSUQzRDExRGV2aWNlICpkZXZp
Y2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOworCisgICAgSFJFU1VMVCBociA9IGRldmljZS0+
Q3JlYXRlVGV4dHVyZTJEKCZkcm9wRGVzYywgbnVsbHB0ciwgJm1Ecm9wU3RlbmNpbFRleHR1cmUp
OworICAgIGlmIChGQUlMRUQoaHIpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTiwgIkVycm9yIGNyZWF0aW5nIGRyb3Agc3RlbmNpbCB0ZXh0dXJl
LiIpOworICAgIH0KKyAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1Ecm9wU3RlbmNpbFRleHR1cmUs
ICJUZXhTdG9yYWdlMkRBcnJheS5Ecm9wU3RlbmNpbCIpOworCisgICAgc3RkOjp2ZWN0b3I8R0xz
aXplaT4gbGF5ZXJDb3VudHMobU1pcExldmVscywgbVRleHR1cmVEZXB0aCk7CisKKyAgICBBTkdM
RV9UUlkoaW5pdERyb3BTdGVuY2lsVGV4dHVyZSgKKyAgICAgICAgZ2w6OkltYWdlSW5kZXhJdGVy
YXRvcjo6TWFrZTJEQXJyYXkoMCwgbU1pcExldmVscywgbGF5ZXJDb3VudHMuZGF0YSgpKSkpOwor
CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSByeApJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9UZXh0dXJlU3RvcmFnZTExLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9UZXh0dXJlU3RvcmFnZTExLmgJKHJl
dmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvVGV4dHVyZVN0b3JhZ2UxMS5oCSh3b3JraW5nIGNvcHkpCkBAIC01
OCw5ICs1OCw5IEBACiAgICAgdmlydHVhbCBpbnQgZ2V0TGV2ZWxDb3VudCgpIGNvbnN0OwogICAg
IHZpcnR1YWwgVUlOVCBnZXRTdWJyZXNvdXJjZUluZGV4KGNvbnN0IGdsOjpJbWFnZUluZGV4ICZp
bmRleCkgY29uc3Q7CiAKLSAgICBnbDo6RXJyb3IgZ2VuZXJhdGVTd2l6emxlcyhHTGVudW0gc3dp
enpsZVJlZCwgR0xlbnVtIHN3aXp6bGVHcmVlbiwgR0xlbnVtIHN3aXp6bGVCbHVlLCBHTGVudW0g
c3dpenpsZUFscGhhKTsKLSAgICB2b2lkIGludmFsaWRhdGVTd2l6emxlQ2FjaGVMZXZlbChpbnQg
bWlwTGV2ZWwpOwotICAgIHZvaWQgaW52YWxpZGF0ZVN3aXp6bGVDYWNoZSgpOworICAgIGdsOjpF
cnJvciBnZW5lcmF0ZVN3aXp6bGVzKGNvbnN0IGdsOjpTd2l6emxlU3RhdGUgJnN3aXp6bGVUYXJn
ZXQpOworICAgIHZvaWQgbWFya0xldmVsRGlydHkoaW50IG1pcExldmVsKTsKKyAgICB2b2lkIG1h
cmtEaXJ0eSgpOwogCiAgICAgZ2w6OkVycm9yIHVwZGF0ZVN1YnJlc291cmNlTGV2ZWwoSUQzRDEx
UmVzb3VyY2UgKnRleHR1cmUsIHVuc2lnbmVkIGludCBzb3VyY2VTdWJyZXNvdXJjZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5k
ZXgsIGNvbnN0IGdsOjpCb3ggJmNvcHlBcmVhKTsKQEAgLTc5LDEwICs3OSwxMCBAQAogCiAgICAg
Z2w6OkVycm9yIGdldFNSVkxldmVscyhHTGludCBiYXNlTGV2ZWwsIEdMaW50IG1heExldmVsLCBJ
RDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKipvdXRTUlYpOwogCi0gICAgZDNkMTE6OkFOR0xFRm9y
bWF0IGdldEFOR0xFRm9ybWF0KCkgY29uc3Q7CisgICAgY29uc3QgZDNkMTE6OkZvcm1hdCAmZ2V0
Rm9ybWF0U2V0KCkgY29uc3Q7CiAKICAgcHJvdGVjdGVkOgotICAgIFRleHR1cmVTdG9yYWdlMTEo
UmVuZGVyZXIxMSAqcmVuZGVyZXIsIFVJTlQgYmluZEZsYWdzLCBVSU5UIG1pc2NGbGFncyk7Cisg
ICAgVGV4dHVyZVN0b3JhZ2UxMShSZW5kZXJlcjExICpyZW5kZXJlciwgVUlOVCBiaW5kRmxhZ3Ms
IFVJTlQgbWlzY0ZsYWdzLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQpOwogICAgIGludCBnZXRMZXZl
bFdpZHRoKGludCBtaXBMZXZlbCkgY29uc3Q7CiAgICAgaW50IGdldExldmVsSGVpZ2h0KGludCBt
aXBMZXZlbCkgY29uc3Q7CiAgICAgaW50IGdldExldmVsRGVwdGgoaW50IG1pcExldmVsKSBjb25z
dDsKQEAgLTk0LDEwICs5NCwxNSBAQAogICAgIHZpcnR1YWwgZ2w6OkVycm9yIGdldFN3aXp6bGVS
ZW5kZXJUYXJnZXQoaW50IG1pcExldmVsLCBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICoqb3V0UlRW
KSA9IDA7CiAgICAgZ2w6OkVycm9yIGdldFNSVkxldmVsKGludCBtaXBMZXZlbCwgYm9vbCBibGl0
U1JWLCBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKipvdXRTUlYpOwogCisgICAgLy8gR2V0IGEg
dmVyc2lvbiBvZiBhIGRlcHRoIHRleHR1cmUgd2l0aCBvbmx5IGRlcHRoIGluZm9ybWF0aW9uLCBu
b3Qgc3RlbmNpbC4KKyAgICB2aXJ0dWFsIGdsOjpFcnJvciBjcmVhdGVEcm9wU3RlbmNpbFRleHR1
cmUoKTsKKyAgICBnbDo6RXJyb3IgaW5pdERyb3BTdGVuY2lsVGV4dHVyZShjb25zdCBnbDo6SW1h
Z2VJbmRleEl0ZXJhdG9yICZpdCk7CisKKyAgICAvLyBUaGUgYmFzZUxldmVsIHBhcmFtZXRlciBz
aG91bGQgKm5vdCogaGF2ZSBtVG9wTGV2ZWwgYXBwbGllZC4KICAgICB2aXJ0dWFsIGdsOjpFcnJv
ciBjcmVhdGVTUlYoaW50IGJhc2VMZXZlbCwgaW50IG1pcExldmVscywgRFhHSV9GT1JNQVQgZm9y
bWF0LCBJRDNEMTFSZXNvdXJjZSAqdGV4dHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICoqb3V0U1JWKSBjb25zdCA9IDA7CiAKLSAg
ICB2b2lkIHZlcmlmeVN3aXp6bGVFeGlzdHMoR0xlbnVtIHN3aXp6bGVSZWQsIEdMZW51bSBzd2l6
emxlR3JlZW4sIEdMZW51bSBzd2l6emxlQmx1ZSwgR0xlbnVtIHN3aXp6bGVBbHBoYSk7CisgICAg
dm9pZCB2ZXJpZnlTd2l6emxlRXhpc3RzKGNvbnN0IGdsOjpTd2l6emxlU3RhdGUgJnN3aXp6bGVT
dGF0ZSk7CiAKICAgICAvLyBDbGVhciBhbGwgY2FjaGVkIG5vbi1zd2l6emxlIFNSVnMgYW5kIGlu
dmFsaWRhdGUgdGhlIHN3aXp6bGUgY2FjaGUuCiAgICAgdm9pZCBjbGVhclNSVkNhY2hlKCk7CkBA
IC0xMDYsMjggKzExMSwxNCBAQAogICAgIGludCBtVG9wTGV2ZWw7CiAgICAgdW5zaWduZWQgaW50
IG1NaXBMZXZlbHM7CiAKLSAgICBHTGVudW0gbUludGVybmFsRm9ybWF0OwotICAgIGNvbnN0IGQz
ZDExOjpBTkdMRUZvcm1hdFNldCAqbVRleHR1cmVGb3JtYXRTZXQ7Ci0gICAgY29uc3QgZDNkMTE6
OkFOR0xFRm9ybWF0U2V0ICptU3dpenpsZUZvcm1hdFNldDsKKyAgICBjb25zdCBkM2QxMTo6Rm9y
bWF0ICZtRm9ybWF0SW5mbzsKICAgICB1bnNpZ25lZCBpbnQgbVRleHR1cmVXaWR0aDsKICAgICB1
bnNpZ25lZCBpbnQgbVRleHR1cmVIZWlnaHQ7CiAgICAgdW5zaWduZWQgaW50IG1UZXh0dXJlRGVw
dGg7CiAKLSAgICBzdHJ1Y3QgU3dpenpsZUNhY2hlVmFsdWUKLSAgICB7Ci0gICAgICAgIEdMZW51
bSBzd2l6emxlUmVkOwotICAgICAgICBHTGVudW0gc3dpenpsZUdyZWVuOwotICAgICAgICBHTGVu
dW0gc3dpenpsZUJsdWU7Ci0gICAgICAgIEdMZW51bSBzd2l6emxlQWxwaGE7CisgICAgZ2w6OlN3
aXp6bGVTdGF0ZSBtU3dpenpsZUNhY2hlW2dsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9M
RVZFTFNdOworICAgIElEM0QxMVRleHR1cmUyRCAqbURyb3BTdGVuY2lsVGV4dHVyZTsKIAotICAg
ICAgICBTd2l6emxlQ2FjaGVWYWx1ZSgpOwotICAgICAgICBTd2l6emxlQ2FjaGVWYWx1ZShHTGVu
dW0gcmVkLCBHTGVudW0gZ3JlZW4sIEdMZW51bSBibHVlLCBHTGVudW0gYWxwaGEpOwotCi0gICAg
ICAgIGJvb2wgb3BlcmF0b3IgPT0oY29uc3QgU3dpenpsZUNhY2hlVmFsdWUgJm90aGVyKSBjb25z
dDsKLSAgICAgICAgYm9vbCBvcGVyYXRvciAhPShjb25zdCBTd2l6emxlQ2FjaGVWYWx1ZSAmb3Ro
ZXIpIGNvbnN0OwotICAgIH07Ci0gICAgU3dpenpsZUNhY2hlVmFsdWUgbVN3aXp6bGVDYWNoZVtn
bDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTXTsKLQogICBwcml2YXRlOgogICAg
IGNvbnN0IFVJTlQgbUJpbmRGbGFnczsKICAgICBjb25zdCBVSU5UIG1NaXNjRmxhZ3M7CkBAIC0x
MzQsMTYgKzEyNSwxOSBAQAogCiAgICAgc3RydWN0IFNSVktleQogICAgIHsKLSAgICAgICAgU1JW
S2V5KGludCBiYXNlTGV2ZWwgPSAwLCBpbnQgbWlwTGV2ZWxzID0gMCwgYm9vbCBzd2l6emxlID0g
ZmFsc2UpOworICAgICAgICBTUlZLZXkoaW50IGJhc2VMZXZlbCwgaW50IG1pcExldmVscywgYm9v
bCBzd2l6emxlLCBib29sIGRyb3BTdGVuY2lsKTsKIAogICAgICAgICBib29sIG9wZXJhdG9yPChj
b25zdCBTUlZLZXkgJnJocykgY29uc3Q7CiAKLSAgICAgICAgaW50IGJhc2VMZXZlbDsKLSAgICAg
ICAgaW50IG1pcExldmVsczsKLSAgICAgICAgYm9vbCBzd2l6emxlOworICAgICAgICBpbnQgYmFz
ZUxldmVsICAgID0gMDsgIC8vIFdpdGhvdXQgbVRvcExldmVsIGFwcGxpZWQuCisgICAgICAgIGlu
dCBtaXBMZXZlbHMgICAgPSAwOworICAgICAgICBib29sIHN3aXp6bGUgICAgID0gZmFsc2U7Cisg
ICAgICAgIGJvb2wgZHJvcFN0ZW5jaWwgPSBmYWxzZTsKICAgICB9OwogICAgIHR5cGVkZWYgc3Rk
OjptYXA8U1JWS2V5LCBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKj4gU1JWQ2FjaGU7CiAKKyAg
ICBnbDo6RXJyb3IgZ2V0Q2FjaGVkT3JDcmVhdGVTUlYoY29uc3QgU1JWS2V5ICZrZXksIElEM0Qx
MVNoYWRlclJlc291cmNlVmlldyAqKm91dFNSVik7CisKICAgICBTUlZDYWNoZSBtU3J2Q2FjaGU7
CiAgICAgc3RkOjphcnJheTxJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKiwgZ2w6OklNUExFTUVO
VEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUz4gbUxldmVsU1JWczsKICAgICBzdGQ6OmFycmF5PElE
M0QxMVNoYWRlclJlc291cmNlVmlldyAqLCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVf
TEVWRUxTPiBtTGV2ZWxCbGl0U1JWczsKQEAgLTE1NCwzMCArMTQ4LDM1IEBACiAgIHB1YmxpYzoK
ICAgICBUZXh0dXJlU3RvcmFnZTExXzJEKFJlbmRlcmVyMTEgKnJlbmRlcmVyLCBTd2FwQ2hhaW4x
MSAqc3dhcGNoYWluKTsKICAgICBUZXh0dXJlU3RvcmFnZTExXzJEKFJlbmRlcmVyMTEgKnJlbmRl
cmVyLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIGJvb2wgcmVuZGVyVGFyZ2V0LCBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCwgaW50IGxldmVscywgYm9vbCBoaW50TGV2ZWxaZXJvT25seSA9
IGZhbHNlKTsKLSAgICB2aXJ0dWFsIH5UZXh0dXJlU3RvcmFnZTExXzJEKCk7CisgICAgflRleHR1
cmVTdG9yYWdlMTFfMkQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGdldFJl
c291cmNlKElEM0QxMVJlc291cmNlICoqb3V0UmVzb3VyY2UpOwotICAgIHZpcnR1YWwgZ2w6OkVy
cm9yIGdldE1pcHBlZFJlc291cmNlKElEM0QxMVJlc291cmNlICoqb3V0UmVzb3VyY2UpOwotICAg
IHZpcnR1YWwgZ2w6OkVycm9yIGdldFJlbmRlclRhcmdldChjb25zdCBnbDo6SW1hZ2VJbmRleCAm
aW5kZXgsIFJlbmRlclRhcmdldEQzRCAqKm91dFJUKTsKKyAgICBnbDo6RXJyb3IgZ2V0UmVzb3Vy
Y2UoSUQzRDExUmVzb3VyY2UgKipvdXRSZXNvdXJjZSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9y
IGdldE1pcHBlZFJlc291cmNlKElEM0QxMVJlc291cmNlICoqb3V0UmVzb3VyY2UpIG92ZXJyaWRl
OworICAgIGdsOjpFcnJvciBnZXRSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkltYWdlSW5kZXggJmlu
ZGV4LCBSZW5kZXJUYXJnZXREM0QgKipvdXRSVCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGds
OjpFcnJvciBjb3B5VG9TdG9yYWdlKFRleHR1cmVTdG9yYWdlICpkZXN0U3RvcmFnZSk7CisgICAg
Z2w6OkVycm9yIGNvcHlUb1N0b3JhZ2UoVGV4dHVyZVN0b3JhZ2UgKmRlc3RTdG9yYWdlKSBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBhc3NvY2lhdGVJbWFnZShJbWFnZTExKiBpbWFnZSwg
Y29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzYXNzb2Np
YXRlSW1hZ2UoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4LCBJbWFnZTExKiBleHBlY3RlZElt
YWdlKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNBc3NvY2lhdGVkSW1hZ2VWYWxpZChjb25zdCBnbDo6
SW1hZ2VJbmRleCAmaW5kZXgsIEltYWdlMTEqIGV4cGVjdGVkSW1hZ2UpOwotICAgIHZpcnR1YWwg
Z2w6OkVycm9yIHJlbGVhc2VBc3NvY2lhdGVkSW1hZ2UoY29uc3QgZ2w6OkltYWdlSW5kZXggJmlu
ZGV4LCBJbWFnZTExKiBpbmNvbWluZ0ltYWdlKTsKKyAgICB2b2lkIGFzc29jaWF0ZUltYWdlKElt
YWdlMTEgKmltYWdlLCBjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlzYXNzb2NpYXRlSW1hZ2UoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4LCBJbWFn
ZTExICpleHBlY3RlZEltYWdlKSBvdmVycmlkZTsKKyAgICBib29sIGlzQXNzb2NpYXRlZEltYWdl
VmFsaWQoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4LCBJbWFnZTExICpleHBlY3RlZEltYWdl
KSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgcmVsZWFzZUFzc29jaWF0ZWRJbWFnZShjb25zdCBn
bDo6SW1hZ2VJbmRleCAmaW5kZXgsIEltYWdlMTEgKmluY29taW5nSW1hZ2UpIG92ZXJyaWRlOwog
Ci0gICAgdmlydHVhbCBnbDo6RXJyb3IgdXNlTGV2ZWxaZXJvV29ya2Fyb3VuZFRleHR1cmUoYm9v
bCB1c2VMZXZlbFplcm9UZXh0dXJlKTsKKyAgICBnbDo6RXJyb3IgdXNlTGV2ZWxaZXJvV29ya2Fy
b3VuZFRleHR1cmUoYm9vbCB1c2VMZXZlbFplcm9UZXh0dXJlKSBvdmVycmlkZTsKIAogICBwcm90
ZWN0ZWQ6Ci0gICAgdmlydHVhbCBnbDo6RXJyb3IgZ2V0U3dpenpsZVRleHR1cmUoSUQzRDExUmVz
b3VyY2UgKipvdXRUZXh0dXJlKTsKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBnZXRTd2l6emxlUmVu
ZGVyVGFyZ2V0KGludCBtaXBMZXZlbCwgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqKm91dFJUVik7
CisgICAgZ2w6OkVycm9yIGdldFN3aXp6bGVUZXh0dXJlKElEM0QxMVJlc291cmNlICoqb3V0VGV4
dHVyZSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGdldFN3aXp6bGVSZW5kZXJUYXJnZXQoaW50
IG1pcExldmVsLCBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICoqb3V0UlRWKSBvdmVycmlkZTsKIAor
ICAgIGdsOjpFcnJvciBjcmVhdGVEcm9wU3RlbmNpbFRleHR1cmUoKSBvdmVycmlkZTsKKwogICAg
IGdsOjpFcnJvciBlbnN1cmVUZXh0dXJlRXhpc3RzKGludCBtaXBMZXZlbHMpOwogCiAgIHByaXZh
dGU6Ci0gICAgdmlydHVhbCBnbDo6RXJyb3IgY3JlYXRlU1JWKGludCBiYXNlTGV2ZWwsIGludCBt
aXBMZXZlbHMsIERYR0lfRk9STUFUIGZvcm1hdCwgSUQzRDExUmVzb3VyY2UgKnRleHR1cmUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAq
Km91dFNSVikgY29uc3Q7CisgICAgZ2w6OkVycm9yIGNyZWF0ZVNSVihpbnQgYmFzZUxldmVsLAor
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1pcExldmVscywKKyAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIElEM0Qx
MVJlc291cmNlICp0ZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgSUQzRDExU2hhZGVy
UmVzb3VyY2VWaWV3ICoqb3V0U1JWKSBjb25zdCBvdmVycmlkZTsKIAogICAgIElEM0QxMVRleHR1
cmUyRCAqbVRleHR1cmU7CiAgICAgUmVuZGVyVGFyZ2V0MTEgKm1SZW5kZXJUYXJnZXRbZ2w6OklN
UExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMU107CkBAIC0yMDMsMTAgKzIwMiw0OSBAQAog
ICAgIEltYWdlMTEgKm1Bc3NvY2lhdGVkSW1hZ2VzW2dsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVY
VFVSRV9MRVZFTFNdOwogfTsKIAorY2xhc3MgVGV4dHVyZVN0b3JhZ2UxMV9FeHRlcm5hbCA6IHB1
YmxpYyBUZXh0dXJlU3RvcmFnZTExCit7CisgIHB1YmxpYzoKKyAgICBUZXh0dXJlU3RvcmFnZTEx
X0V4dGVybmFsKFJlbmRlcmVyMTEgKnJlbmRlcmVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZWdsOjpTdHJlYW0gKnN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGVnbDo6U3RyZWFtOjpHTFRleHR1cmVEZXNjcmlwdGlvbiAmZ2xEZXNjKTsKKyAgICB+
VGV4dHVyZVN0b3JhZ2UxMV9FeHRlcm5hbCgpIG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIGdl
dFJlc291cmNlKElEM0QxMVJlc291cmNlICoqb3V0UmVzb3VyY2UpIG92ZXJyaWRlOworICAgIGds
OjpFcnJvciBnZXRNaXBwZWRSZXNvdXJjZShJRDNEMTFSZXNvdXJjZSAqKm91dFJlc291cmNlKSBv
dmVycmlkZTsKKyAgICBnbDo6RXJyb3IgZ2V0UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpJbWFnZUlu
ZGV4ICZpbmRleCwgUmVuZGVyVGFyZ2V0RDNEICoqb3V0UlQpIG92ZXJyaWRlOworCisgICAgZ2w6
OkVycm9yIGNvcHlUb1N0b3JhZ2UoVGV4dHVyZVN0b3JhZ2UgKmRlc3RTdG9yYWdlKSBvdmVycmlk
ZTsKKworICAgIHZvaWQgYXNzb2NpYXRlSW1hZ2UoSW1hZ2UxMSAqaW1hZ2UsIGNvbnN0IGdsOjpJ
bWFnZUluZGV4ICZpbmRleCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNhc3NvY2lhdGVJbWFnZShj
b25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsIEltYWdlMTEgKmV4cGVjdGVkSW1hZ2UpIG92ZXJy
aWRlOworICAgIGJvb2wgaXNBc3NvY2lhdGVkSW1hZ2VWYWxpZChjb25zdCBnbDo6SW1hZ2VJbmRl
eCAmaW5kZXgsIEltYWdlMTEgKmV4cGVjdGVkSW1hZ2UpIG92ZXJyaWRlOworICAgIGdsOjpFcnJv
ciByZWxlYXNlQXNzb2NpYXRlZEltYWdlKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwgSW1h
Z2UxMSAqaW5jb21pbmdJbWFnZSkgb3ZlcnJpZGU7CisKKyAgcHJvdGVjdGVkOgorICAgIGdsOjpF
cnJvciBnZXRTd2l6emxlVGV4dHVyZShJRDNEMTFSZXNvdXJjZSAqKm91dFRleHR1cmUpIG92ZXJy
aWRlOworICAgIGdsOjpFcnJvciBnZXRTd2l6emxlUmVuZGVyVGFyZ2V0KGludCBtaXBMZXZlbCwg
SUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqKm91dFJUVikgb3ZlcnJpZGU7CisKKyAgcHJpdmF0ZToK
KyAgICBnbDo6RXJyb3IgY3JlYXRlU1JWKGludCBiYXNlTGV2ZWwsCisgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgbWlwTGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVQgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgSUQzRDExUmVzb3VyY2UgKnRleHR1
cmUsCisgICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKipv
dXRTUlYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgSUQzRDExVGV4dHVyZTJEICptVGV4dHVyZTsK
KyAgICBpbnQgbVN1YnJlc291cmNlSW5kZXg7CisgICAgYm9vbCBtSGFzS2V5ZWRNdXRleDsKKwor
ICAgIEltYWdlMTEgKm1Bc3NvY2lhdGVkSW1hZ2U7Cit9OworCiBjbGFzcyBUZXh0dXJlU3RvcmFn
ZTExX0VHTEltYWdlIGZpbmFsIDogcHVibGljIFRleHR1cmVTdG9yYWdlMTEKIHsKICAgcHVibGlj
OgotICAgIFRleHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2UoUmVuZGVyZXIxMSAqcmVuZGVyZXIsIEVH
TEltYWdlRDNEICplZ2xJbWFnZSk7CisgICAgVGV4dHVyZVN0b3JhZ2UxMV9FR0xJbWFnZShSZW5k
ZXJlcjExICpyZW5kZXJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTEltYWdl
RDNEICplZ2xJbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlclRhcmdl
dDExICpyZW5kZXJUYXJnZXQxMSk7CiAgICAgflRleHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2UoKSBv
dmVycmlkZTsKIAogICAgIGdsOjpFcnJvciBnZXRSZXNvdXJjZShJRDNEMTFSZXNvdXJjZSAqKm91
dFJlc291cmNlKSBvdmVycmlkZTsKQEAgLTI3NCw2ICszMTIsOCBAQAogICAgIHZpcnR1YWwgZ2w6
OkVycm9yIGdldFN3aXp6bGVUZXh0dXJlKElEM0QxMVJlc291cmNlICoqb3V0VGV4dHVyZSk7CiAg
ICAgdmlydHVhbCBnbDo6RXJyb3IgZ2V0U3dpenpsZVJlbmRlclRhcmdldChpbnQgbWlwTGV2ZWws
IElEM0QxMVJlbmRlclRhcmdldFZpZXcgKipvdXRSVFYpOwogCisgICAgZ2w6OkVycm9yIGNyZWF0
ZURyb3BTdGVuY2lsVGV4dHVyZSgpIG92ZXJyaWRlOworCiAgICAgZ2w6OkVycm9yIGVuc3VyZVRl
eHR1cmVFeGlzdHMoaW50IG1pcExldmVscyk7CiAKICAgcHJpdmF0ZToKQEAgLTM1Nyw2ICszOTcs
OCBAQAogICAgIHZpcnR1YWwgZ2w6OkVycm9yIGdldFN3aXp6bGVUZXh0dXJlKElEM0QxMVJlc291
cmNlICoqb3V0VGV4dHVyZSk7CiAgICAgdmlydHVhbCBnbDo6RXJyb3IgZ2V0U3dpenpsZVJlbmRl
clRhcmdldChpbnQgbWlwTGV2ZWwsIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKipvdXRSVFYpOwog
CisgICAgZ2w6OkVycm9yIGNyZWF0ZURyb3BTdGVuY2lsVGV4dHVyZSgpIG92ZXJyaWRlOworCiAg
IHByaXZhdGU6CiAgICAgdmlydHVhbCBnbDo6RXJyb3IgY3JlYXRlU1JWKGludCBiYXNlTGV2ZWws
IGludCBtaXBMZXZlbHMsIERYR0lfRk9STUFUIGZvcm1hdCwgSUQzRDExUmVzb3VyY2UgKnRleHR1
cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMVNoYWRlclJlc291cmNl
VmlldyAqKm91dFNSVikgY29uc3Q7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1RyYW5zZm9ybUZlZWRiYWNrMTEuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvVHJhbnNmb3JtRmVlZGJhY2sxMS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9UcmFuc2Zv
cm1GZWVkYmFjazExLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwMiBAQAorLy8KKy8v
IENvcHlyaWdodCAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKworLy8gVHJhbnNmb3JtRmVlZGJhY2tEM0QuY3BwIGlzIGEgbm8tb3AgaW1wbGVtZW50YXRp
b24gZm9yIGJvdGggdGhlIEQzRDkgYW5kIEQzRDExIHJlbmRlcmVycy4KKworI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9UcmFuc2Zvcm1GZWVkYmFjazExLmgiCisKKyNpbmNs
dWRlICJsaWJBTkdMRS9CdWZmZXIuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvQnVmZmVyMTEuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
UmVuZGVyZXIxMS5oIgorCituYW1lc3BhY2UgcngKK3sKKworVHJhbnNmb3JtRmVlZGJhY2sxMTo6
VHJhbnNmb3JtRmVlZGJhY2sxMShjb25zdCBnbDo6VHJhbnNmb3JtRmVlZGJhY2tTdGF0ZSAmc3Rh
dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlcmVyMTEg
KnJlbmRlcmVyKQorICAgIDogVHJhbnNmb3JtRmVlZGJhY2tJbXBsKHN0YXRlKSwKKyAgICAgIG1S
ZW5kZXJlcihyZW5kZXJlciksCisgICAgICBtSXNEaXJ0eSh0cnVlKSwKKyAgICAgIG1CdWZmZXJz
KHN0YXRlLmdldEluZGV4ZWRCdWZmZXJzKCkuc2l6ZSgpLCBudWxscHRyKSwKKyAgICAgIG1CdWZm
ZXJPZmZzZXRzKHN0YXRlLmdldEluZGV4ZWRCdWZmZXJzKCkuc2l6ZSgpLCAwKQoreworfQorCitU
cmFuc2Zvcm1GZWVkYmFjazExOjp+VHJhbnNmb3JtRmVlZGJhY2sxMSgpCit7Cit9CisKK3ZvaWQg
VHJhbnNmb3JtRmVlZGJhY2sxMTo6YmVnaW4oR0xlbnVtIHByaW1pdGl2ZU1vZGUpCit7Cit9CisK
K3ZvaWQgVHJhbnNmb3JtRmVlZGJhY2sxMTo6ZW5kKCkKK3sKKyAgICBpZiAobVJlbmRlcmVyLT5n
ZXRXb3JrYXJvdW5kcygpLmZsdXNoQWZ0ZXJFbmRpbmdUcmFuc2Zvcm1GZWVkYmFjaykKKyAgICB7
CisgICAgICAgIG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpLT5GbHVzaCgpOworICAgIH0K
K30KKwordm9pZCBUcmFuc2Zvcm1GZWVkYmFjazExOjpwYXVzZSgpCit7Cit9CisKK3ZvaWQgVHJh
bnNmb3JtRmVlZGJhY2sxMTo6cmVzdW1lKCkKK3sKK30KKwordm9pZCBUcmFuc2Zvcm1GZWVkYmFj
azExOjpiaW5kR2VuZXJpY0J1ZmZlcihjb25zdCBCaW5kaW5nUG9pbnRlcjxnbDo6QnVmZmVyPiAm
YmluZGluZykKK3sKK30KKwordm9pZCBUcmFuc2Zvcm1GZWVkYmFjazExOjpiaW5kSW5kZXhlZEJ1
ZmZlcihzaXplX3QgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IE9mZnNldEJpbmRpbmdQb2ludGVyPGdsOjpCdWZmZXI+ICZiaW5kaW5nKQor
eworICAgIG1Jc0RpcnR5ICAgICAgICAgICAgICA9IHRydWU7CisgICAgbUJ1ZmZlck9mZnNldHNb
aW5kZXhdID0gc3RhdGljX2Nhc3Q8VUlOVD4oYmluZGluZy5nZXRPZmZzZXQoKSk7Cit9CisKK3Zv
aWQgVHJhbnNmb3JtRmVlZGJhY2sxMTo6b25BcHBseSgpCit7CisgICAgbUlzRGlydHkgPSBmYWxz
ZTsKKworICAgIC8vIENoYW5nZSBhbGwgYnVmZmVyIG9mZnNldHMgdG8gLTEgc28gdGhhdCBpZiBh
bnkgb2YgdGhlbSBuZWVkIHRvIGJlIHJlLWFwcGxpZWQsIHRoZSBhcmUgc2V0IHRvCisgICAgLy8g
YXBwZW5kCisgICAgc3RkOjpmaWxsKG1CdWZmZXJPZmZzZXRzLmJlZ2luKCksIG1CdWZmZXJPZmZz
ZXRzLmVuZCgpLCAtMSk7Cit9CisKK2Jvb2wgVHJhbnNmb3JtRmVlZGJhY2sxMTo6aXNEaXJ0eSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1Jc0RpcnR5OworfQorCitVSU5UIFRyYW5zZm9ybUZlZWRi
YWNrMTE6OmdldE51bVNPQnVmZmVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFVJTlQ+KG1CdWZmZXJzLnNpemUoKSk7Cit9CisKK2dsOjpFcnJvck9yUmVzdWx0PGNvbnN0IHN0
ZDo6dmVjdG9yPElEM0QxMUJ1ZmZlciAqPiAqPiBUcmFuc2Zvcm1GZWVkYmFjazExOjpnZXRTT0J1
ZmZlcnMoKQoreworICAgIGZvciAoc2l6ZV90IGJpbmRpbmdJZHggPSAwOyBiaW5kaW5nSWR4IDwg
bUJ1ZmZlcnMuc2l6ZSgpOyBiaW5kaW5nSWR4KyspCisgICAgeworICAgICAgICBjb25zdCBhdXRv
ICZiaW5kaW5nID0gbVN0YXRlLmdldEluZGV4ZWRCdWZmZXIoYmluZGluZ0lkeCk7CisgICAgICAg
IGlmIChiaW5kaW5nLmdldCgpICE9IG51bGxwdHIpCisgICAgICAgIHsKKyAgICAgICAgICAgIEJ1
ZmZlcjExICpzdG9yYWdlID0gR2V0SW1wbEFzPEJ1ZmZlcjExPihiaW5kaW5nLmdldCgpKTsKKyAg
ICAgICAgICAgIEFOR0xFX1RSWV9SRVNVTFQoc3RvcmFnZS0+Z2V0QnVmZmVyKEJVRkZFUl9VU0FH
RV9WRVJURVhfT1JfVFJBTlNGT1JNX0ZFRURCQUNLKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbUJ1ZmZlcnNbYmluZGluZ0lkeF0pOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0
dXJuICZtQnVmZmVyczsKK30KKworY29uc3Qgc3RkOjp2ZWN0b3I8VUlOVD4gJlRyYW5zZm9ybUZl
ZWRiYWNrMTE6OmdldFNPQnVmZmVyT2Zmc2V0cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1CdWZm
ZXJPZmZzZXRzOworfQorfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1RyYW5zZm9ybUZlZWRiYWNr
MTEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL1RyYW5zZm9ybUZlZWRiYWNrMTEuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L1RyYW5zZm9ybUZlZWRiYWNrMTEuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU0IEBACisv
LworLy8gQ29weXJpZ2h0IDIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworCisvLyBUcmFuc2Zvcm1GZWVkYmFjazExLmg6IEltcGxlbWVudHMgdGhlIGFic3Ry
YWN0IHJ4OjpUcmFuc2Zvcm1GZWVkYmFja0ltcGwgY2xhc3MuCisKKyNpZm5kZWYgTElCQU5HTEVf
UkVOREVSRVJfRDNEX0QzRDExX1RSQU5TRk9STUZFRURCQUNLMTFfSF8KKyNkZWZpbmUgTElCQU5H
TEVfUkVOREVSRVJfRDNEX0QzRDExX1RSQU5TRk9STUZFRURCQUNLMTFfSF8KKworI2luY2x1ZGUg
ImNvbW1vbi9wbGF0Zm9ybS5oIgorCisjaW5jbHVkZSAibGliQU5HTEUvYW5nbGV0eXBlcy5oIgor
I2luY2x1ZGUgImxpYkFOR0xFL0Vycm9yLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
VHJhbnNmb3JtRmVlZGJhY2tJbXBsLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBSZW5k
ZXJlcjExOworCitjbGFzcyBUcmFuc2Zvcm1GZWVkYmFjazExIDogcHVibGljIFRyYW5zZm9ybUZl
ZWRiYWNrSW1wbAoreworICBwdWJsaWM6CisgICAgVHJhbnNmb3JtRmVlZGJhY2sxMShjb25zdCBn
bDo6VHJhbnNmb3JtRmVlZGJhY2tTdGF0ZSAmc3RhdGUsIFJlbmRlcmVyMTEgKnJlbmRlcmVyKTsK
KyAgICB+VHJhbnNmb3JtRmVlZGJhY2sxMSgpIG92ZXJyaWRlOworCisgICAgdm9pZCBiZWdpbihH
TGVudW0gcHJpbWl0aXZlTW9kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBlbmQoKSBvdmVycmlkZTsK
KyAgICB2b2lkIHBhdXNlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZXN1bWUoKSBvdmVycmlkZTsK
KworICAgIHZvaWQgYmluZEdlbmVyaWNCdWZmZXIoY29uc3QgQmluZGluZ1BvaW50ZXI8Z2w6OkJ1
ZmZlcj4gJmJpbmRpbmcpIG92ZXJyaWRlOworICAgIHZvaWQgYmluZEluZGV4ZWRCdWZmZXIoc2l6
ZV90IGluZGV4LCBjb25zdCBPZmZzZXRCaW5kaW5nUG9pbnRlcjxnbDo6QnVmZmVyPiAmYmluZGlu
Zykgb3ZlcnJpZGU7CisKKyAgICB2b2lkIG9uQXBwbHkoKTsKKworICAgIGJvb2wgaXNEaXJ0eSgp
IGNvbnN0OworCisgICAgVUlOVCBnZXROdW1TT0J1ZmZlcnMoKSBjb25zdDsKKyAgICBnbDo6RXJy
b3JPclJlc3VsdDxjb25zdCBzdGQ6OnZlY3RvcjxJRDNEMTFCdWZmZXIgKj4gKj4gZ2V0U09CdWZm
ZXJzKCk7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8VUlOVD4gJmdldFNPQnVmZmVyT2Zmc2V0cygp
IGNvbnN0OworCisgIHByaXZhdGU6CisgICAgUmVuZGVyZXIxMSAqbVJlbmRlcmVyOworCisgICAg
Ym9vbCBtSXNEaXJ0eTsKKyAgICBzdGQ6OnZlY3RvcjxJRDNEMTFCdWZmZXIgKj4gbUJ1ZmZlcnM7
CisgICAgc3RkOjp2ZWN0b3I8VUlOVD4gbUJ1ZmZlck9mZnNldHM7Cit9OworfSAgLy8gbmFtZXNw
YWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfRDNEX0QzRDExX1RSQU5TRk9S
TUZFRURCQUNLMTFfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvVHJpbTExLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1RyaW0xMS5jcHAJ
KHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvVHJpbTExLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEsOSAr
MTEsMTUgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvcmVuZGVyZXIx
MV91dGlscy5oIgogCiAjaWYgZGVmaW5lZCAoQU5HTEVfRU5BQkxFX1dJTkRPV1NfU1RPUkUpCi11
c2luZyBuYW1lc3BhY2UgQUJJOjpXaW5kb3dzOjpGb3VuZGF0aW9uOworI2luY2x1ZGUgPHdybC5o
PgorI2luY2x1ZGUgPHdybC93cmFwcGVycy9jb3Jld3JhcHBlcnMuaD4KKyNpbmNsdWRlIDx3aW5k
b3dzLmFwcGxpY2F0aW9ubW9kZWwuY29yZS5oPgordXNpbmcgbmFtZXNwYWNlIE1pY3Jvc29mdDo6
V1JMOwordXNpbmcgbmFtZXNwYWNlIE1pY3Jvc29mdDo6V1JMOjpXcmFwcGVyczsKIHVzaW5nIG5h
bWVzcGFjZSBBQkk6OldpbmRvd3M6OkFwcGxpY2F0aW9uTW9kZWw7CiB1c2luZyBuYW1lc3BhY2Ug
QUJJOjpXaW5kb3dzOjpBcHBsaWNhdGlvbk1vZGVsOjpDb3JlOwordXNpbmcgbmFtZXNwYWNlIEFC
STo6V2luZG93czo6Rm91bmRhdGlvbjsKK3VzaW5nIG5hbWVzcGFjZSBBQkk6OldpbmRvd3M6OkZv
dW5kYXRpb246OkNvbGxlY3Rpb25zOwogI2VuZGlmCiAKIG5hbWVzcGFjZSByeApAQCAtNDEsNyAr
NDcsNiBAQAogCiAjaWYgZGVmaW5lZCAoQU5HTEVfRU5BQkxFX1dJTkRPV1NfU1RPUkUpCiAgICAg
SUQzRDExRGV2aWNlKiBkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwotICAgIC8vIElE
WEdJRGV2aWNlMyBpcyBvbmx5IHN1cHBvcnRlZCBvbiBXaW5kb3dzIDguMSBhbmQgV2luZG93cyBQ
aG9uZSA4LjEgYW5kIGFib3ZlLgogICAgIElEWEdJRGV2aWNlMyAqZHhnaURldmljZTMgPSBkM2Qx
MTo6RHluYW1pY0Nhc3RDb21PYmplY3Q8SURYR0lEZXZpY2UzPihkZXZpY2UpOwogICAgIGlmIChk
eGdpRGV2aWNlMykKICAgICB7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEFycmF5MTEuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
VmVydGV4QXJyYXkxMS5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVmVydGV4QXJyYXkxMS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyLDYgKzEyLDggQEAKICNpbmNsdWRlICJjb21tb24vQml0U2V0
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQnVmZmVy
MTEuaCIKIAordXNpbmcgbmFtZXNwYWNlIGFuZ2xlOworCiBuYW1lc3BhY2UgcngKIHsKIApAQCAt
MzcsNyArMzksNyBAQAogfQogfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi1WZXJ0ZXhBcnJh
eTExOjpWZXJ0ZXhBcnJheTExKGNvbnN0IGdsOjpWZXJ0ZXhBcnJheTo6RGF0YSAmZGF0YSkKK1Zl
cnRleEFycmF5MTE6OlZlcnRleEFycmF5MTEoY29uc3QgZ2w6OlZlcnRleEFycmF5U3RhdGUgJmRh
dGEpCiAgICAgOiBWZXJ0ZXhBcnJheUltcGwoZGF0YSksCiAgICAgICBtQXR0cmlidXRlU3RvcmFn
ZVR5cGVzKGRhdGEuZ2V0VmVydGV4QXR0cmlidXRlcygpLnNpemUoKSwgVmVydGV4U3RvcmFnZVR5
cGU6OkNVUlJFTlRfVkFMVUUpLAogICAgICAgbVRyYW5zbGF0ZWRBdHRyaWJzKGRhdGEuZ2V0VmVy
dGV4QXR0cmlidXRlcygpLnNpemUoKSksCkBAIC00NSwxMSArNDcsNyBAQAogewogICAgIGZvciAo
c2l6ZV90IGF0dHJpYkluZGV4ID0gMDsgYXR0cmliSW5kZXggPCBtQ3VycmVudEJ1ZmZlcnMuc2l6
ZSgpOyArK2F0dHJpYkluZGV4KQogICAgIHsKLSAgICAgICAgYXV0byBjYWxsYmFjayA9IFt0aGlz
LCBhdHRyaWJJbmRleF0oKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLT5tYXJrQnVmZmVy
RGF0YURpcnR5KGF0dHJpYkluZGV4KTsKLSAgICAgICAgfTsKLSAgICAgICAgbU9uQnVmZmVyRGF0
YURpcnR5LnB1c2hfYmFjayhjYWxsYmFjayk7CisgICAgICAgIG1PbkJ1ZmZlckRhdGFEaXJ0eS5w
dXNoX2JhY2soQ2hhbm5lbEJpbmRpbmcodGhpcywgc3RhdGljX2Nhc3Q8U2lnbmFsVG9rZW4+KGF0
dHJpYkluZGV4KSkpOwogICAgIH0KIH0KIApAQCAtNTksNyArNTcsNiBAQAogICAgIHsKICAgICAg
ICAgaWYgKG1DdXJyZW50QnVmZmVyc1thdHRyaWJJbmRleF0uZ2V0KCkpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHVubGlua0J1ZmZlcihhdHRyaWJJbmRleCwgbUF0dHJpYnV0ZVN0b3JhZ2VUeXBl
c1thdHRyaWJJbmRleF0pOwogICAgICAgICAgICAgbUN1cnJlbnRCdWZmZXJzW2F0dHJpYkluZGV4
XS5zZXQobnVsbHB0cik7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTYsMjIgKzExMywyMyBAQAog
ICAgIHsKICAgICAgICAgLy8gTm90ZSB0aGF0IGZvciBzdGF0aWMgY2FsbGJhY2tzLCBwcm9tb3Rp
b24gdG8gYSBzdGF0aWMgYnVmZmVyIGZyb20gYSBkeW5hbWljIGJ1ZmZlciBtZWFucwogICAgICAg
ICAvLyB3ZSBuZWVkIHRvIHRhZyBkeW5hbWljIGJ1ZmZlcnMgd2l0aCBzdGF0aWMgY2FsbGJhY2tz
LgotICAgICAgICBpZiAob2xkQnVmZmVyMTEgIT0gbnVsbHB0cikKLSAgICAgICAgewotICAgICAg
ICAgICAgdW5saW5rQnVmZmVyKGF0dHJpYkluZGV4LCBvbGRTdG9yYWdlVHlwZSk7Ci0gICAgICAg
IH0KKyAgICAgICAgQnJvYWRjYXN0Q2hhbm5lbCAqbmV3Q2hhbm5lbCA9IG51bGxwdHI7CiAgICAg
ICAgIGlmIChuZXdCdWZmZXIxMSAhPSBudWxscHRyKQogICAgICAgICB7Ci0gICAgICAgICAgICBp
ZiAobmV3U3RvcmFnZVR5cGUgPT0gVmVydGV4U3RvcmFnZVR5cGU6OkRJUkVDVCkKKyAgICAgICAg
ICAgIHN3aXRjaCAobmV3U3RvcmFnZVR5cGUpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgbmV3QnVmZmVyMTEtPmFkZERpcmVjdEJ1ZmZlckRpcnR5Q2FsbGJhY2soJm1PbkJ1ZmZlckRh
dGFEaXJ0eVthdHRyaWJJbmRleF0pOworICAgICAgICAgICAgICAgIGNhc2UgVmVydGV4U3RvcmFn
ZVR5cGU6OkRJUkVDVDoKKyAgICAgICAgICAgICAgICAgICAgbmV3Q2hhbm5lbCA9IG5ld0J1ZmZl
cjExLT5nZXREaXJlY3RCcm9hZGNhc3RDaGFubmVsKCk7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVmVydGV4U3RvcmFnZVR5cGU6OlNUQVRJQzoKKyAg
ICAgICAgICAgICAgICBjYXNlIFZlcnRleFN0b3JhZ2VUeXBlOjpEWU5BTUlDOgorICAgICAgICAg
ICAgICAgICAgICBuZXdDaGFubmVsID0gbmV3QnVmZmVyMTEtPmdldFN0YXRpY0Jyb2FkY2FzdENo
YW5uZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBlbHNlIGlmIChuZXdTdG9yYWdlVHlwZSA9PSBWZXJ0ZXhTdG9yYWdlVHlwZTo6U1RBVElD
IHx8Ci0gICAgICAgICAgICAgICAgICAgICBuZXdTdG9yYWdlVHlwZSA9PSBWZXJ0ZXhTdG9yYWdl
VHlwZTo6RFlOQU1JQykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBuZXdCdWZmZXIx
MS0+YWRkU3RhdGljQnVmZmVyRGlydHlDYWxsYmFjaygmbU9uQnVmZmVyRGF0YURpcnR5W2F0dHJp
YkluZGV4XSk7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgbU9uQnVmZmVyRGF0
YURpcnR5W2F0dHJpYkluZGV4XS5iaW5kKG5ld0NoYW5uZWwpOwogICAgICAgICBtQ3VycmVudEJ1
ZmZlcnNbYXR0cmliSW5kZXhdID0gYXR0cmliLmJ1ZmZlcjsKICAgICB9CiB9CkBAIC0xODQsMTIg
KzE4Miw4IEBACiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNh
c2UgVmVydGV4U3RvcmFnZVR5cGU6OlNUQVRJQzoKICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgIGF1dG8gZXJyb3IgPQotICAgICAgICAgICAgICAgICAgICAgICAgVmVydGV4
RGF0YU1hbmFnZXI6OlN0b3JlU3RhdGljQXR0cmliKHRyYW5zbGF0ZWRBdHRyaWIsIGNvdW50LCBp
bnN0YW5jZXMpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAg
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7
Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgQU5HTEVfVFJZKAor
ICAgICAgICAgICAgICAgICAgICAgICAgVmVydGV4RGF0YU1hbmFnZXI6OlN0b3JlU3RhdGljQXR0
cmliKHRyYW5zbGF0ZWRBdHRyaWIsIGNvdW50LCBpbnN0YW5jZXMpKTsKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNhc2UgVmVy
dGV4U3RvcmFnZVR5cGU6OkNVUlJFTlRfVkFMVUU6CkBAIC0yMzAsMTIgKzIyNCwxMiBAQAogICAg
IHJldHVybiBtVHJhbnNsYXRlZEF0dHJpYnM7CiB9CiAKLXZvaWQgVmVydGV4QXJyYXkxMTo6bWFy
a0J1ZmZlckRhdGFEaXJ0eShzaXplX3QgYXR0cmliSW5kZXgpCit2b2lkIFZlcnRleEFycmF5MTE6
OnNpZ25hbChTaWduYWxUb2tlbiB0b2tlbikKIHsKLSAgICBBU1NFUlQobUF0dHJpYnV0ZVN0b3Jh
Z2VUeXBlc1thdHRyaWJJbmRleF0gIT0gVmVydGV4U3RvcmFnZVR5cGU6OkNVUlJFTlRfVkFMVUUp
OworICAgIEFTU0VSVChtQXR0cmlidXRlU3RvcmFnZVR5cGVzW3Rva2VuXSAhPSBWZXJ0ZXhTdG9y
YWdlVHlwZTo6Q1VSUkVOVF9WQUxVRSk7CiAKICAgICAvLyBUaGlzIGNhbiBjaGFuZ2UgYSBidWZm
ZXIncyBzdG9yYWdlLCB3ZSdsbCBuZWVkIHRvIHJlLWNoZWNrLgotICAgIG1BdHRyaWJzVG9VcGRh
dGUuc2V0KGF0dHJpYkluZGV4KTsKKyAgICBtQXR0cmlic1RvVXBkYXRlLnNldCh0b2tlbik7CiB9
CiAKIHZvaWQgVmVydGV4QXJyYXkxMTo6Y2xlYXJEaXJ0eUFuZFByb21vdGVEeW5hbWljQXR0cmli
cyhjb25zdCBnbDo6U3RhdGUgJnN0YXRlLCBHTHNpemVpIGNvdW50KQpAQCAtMjQ4LDE4ICsyNDIs
NCBAQAogICAgIGF1dG8gYWN0aXZlRHluYW1pY0F0dHJpYnMgPSAobUR5bmFtaWNBdHRyaWJzTWFz
ayAmIGFjdGl2ZUxvY2F0aW9ucyk7CiAgICAgVmVydGV4RGF0YU1hbmFnZXI6OlByb21vdGVEeW5h
bWljQXR0cmlicyhtVHJhbnNsYXRlZEF0dHJpYnMsIGFjdGl2ZUR5bmFtaWNBdHRyaWJzLCBjb3Vu
dCk7CiB9Ci0KLXZvaWQgVmVydGV4QXJyYXkxMTo6dW5saW5rQnVmZmVyKHNpemVfdCBhdHRyaWJJ
bmRleCwgVmVydGV4U3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUpCi17Ci0gICAgQnVmZmVyMTEgKmJ1
ZmZlciA9IEdldEltcGxBczxCdWZmZXIxMT4obUN1cnJlbnRCdWZmZXJzW2F0dHJpYkluZGV4XS5n
ZXQoKSk7Ci0gICAgaWYgKHN0b3JhZ2VUeXBlID09IFZlcnRleFN0b3JhZ2VUeXBlOjpESVJFQ1Qp
Ci0gICAgewotICAgICAgICBidWZmZXItPnJlbW92ZURpcmVjdEJ1ZmZlckRpcnR5Q2FsbGJhY2so
Jm1PbkJ1ZmZlckRhdGFEaXJ0eVthdHRyaWJJbmRleF0pOwotICAgIH0KLSAgICBlbHNlIGlmIChz
dG9yYWdlVHlwZSA9PSBWZXJ0ZXhTdG9yYWdlVHlwZTo6U1RBVElDIHx8IHN0b3JhZ2VUeXBlID09
IFZlcnRleFN0b3JhZ2VUeXBlOjpEWU5BTUlDKQotICAgIHsKLSAgICAgICAgYnVmZmVyLT5yZW1v
dmVTdGF0aWNCdWZmZXJEaXJ0eUNhbGxiYWNrKCZtT25CdWZmZXJEYXRhRGlydHlbYXR0cmliSW5k
ZXhdKTsKLSAgICB9Ci19Ci0KIH0gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9WZXJ0ZXhBcnJheTEx
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9WZXJ0ZXhBcnJheTExLmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVmVy
dGV4QXJyYXkxMS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMSwxNSArMTEsMTYgQEAKIAogI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1ZlcnRleEFycmF5SW1wbC5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmgiCisjaW5jbHVkZSAibGliQU5HTEUv
c2lnbmFsX3V0aWxzLmgiCiAKIG5hbWVzcGFjZSByeAogewogY2xhc3MgUmVuZGVyZXIxMTsKIAot
Y2xhc3MgVmVydGV4QXJyYXkxMSA6IHB1YmxpYyBWZXJ0ZXhBcnJheUltcGwKK2NsYXNzIFZlcnRl
eEFycmF5MTEgOiBwdWJsaWMgVmVydGV4QXJyYXlJbXBsLCBwdWJsaWMgYW5nbGU6OlNpZ25hbFJl
Y2VpdmVyCiB7CiAgIHB1YmxpYzoKLSAgICBWZXJ0ZXhBcnJheTExKGNvbnN0IGdsOjpWZXJ0ZXhB
cnJheTo6RGF0YSAmZGF0YSk7CisgICAgVmVydGV4QXJyYXkxMShjb25zdCBnbDo6VmVydGV4QXJy
YXlTdGF0ZSAmZGF0YSk7CiAgICAgflZlcnRleEFycmF5MTEoKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgc3luY1N0YXRlKGNvbnN0IGdsOjpWZXJ0ZXhBcnJheTo6RGlydHlCaXRzICZkaXJ0eUJpdHMp
IG92ZXJyaWRlOwpAQCAtMzIsMTAgKzMzLDExIEBACiAKICAgICBjb25zdCBzdGQ6OnZlY3RvcjxU
cmFuc2xhdGVkQXR0cmlidXRlPiAmZ2V0VHJhbnNsYXRlZEF0dHJpYnMoKSBjb25zdDsKIAorICAg
IC8vIFNpZ25hbFJlY2VpdmVyIGltcGxlbWVudGF0aW9uCisgICAgdm9pZCBzaWduYWwoYW5nbGU6
OlNpZ25hbFRva2VuIHRva2VuKSBvdmVycmlkZTsKKwogICBwcml2YXRlOgogICAgIHZvaWQgdXBk
YXRlVmVydGV4QXR0cmliU3RvcmFnZShzaXplX3QgYXR0cmliSW5kZXgpOwotICAgIHZvaWQgbWFy
a0J1ZmZlckRhdGFEaXJ0eShzaXplX3QgYXR0cmliSW5kZXgpOwotICAgIHZvaWQgdW5saW5rQnVm
ZmVyKHNpemVfdCBhdHRyaWJJbmRleCwgVmVydGV4U3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUpOwog
CiAgICAgc3RkOjp2ZWN0b3I8VmVydGV4U3RvcmFnZVR5cGU+IG1BdHRyaWJ1dGVTdG9yYWdlVHlw
ZXM7CiAgICAgc3RkOjp2ZWN0b3I8VHJhbnNsYXRlZEF0dHJpYnV0ZT4gbVRyYW5zbGF0ZWRBdHRy
aWJzOwpAQCAtNTIsNyArNTQsNyBAQAogICAgIC8vIFdlIG5lZWQgdG8ga2VlcCBhIHNhZmUgcG9p
bnRlciB0byB0aGUgQnVmZmVyIHNvIHdlIGNhbiBhdHRhY2ggdGhlIGNvcnJlY3QgZGlydHkgY2Fs
bGJhY2tzLgogICAgIHN0ZDo6dmVjdG9yPEJpbmRpbmdQb2ludGVyPGdsOjpCdWZmZXI+PiBtQ3Vy
cmVudEJ1ZmZlcnM7CiAKLSAgICBzdGQ6OnZlY3RvcjxOb3RpZmljYXRpb25DYWxsYmFjaz4gbU9u
QnVmZmVyRGF0YURpcnR5OworICAgIHN0ZDo6dmVjdG9yPGFuZ2xlOjpDaGFubmVsQmluZGluZz4g
bU9uQnVmZmVyRGF0YURpcnR5OwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRl
eEJ1ZmZlcjExLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEJ1ZmZlcjExLmNwcAkocmV2aXNpb24g
MjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9WZXJ0ZXhCdWZmZXIxMS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCwxMSAr
MTIwLDcgQEAKICAgICBpbnQgaW5wdXRTdHJpZGUgPSBzdGF0aWNfY2FzdDxpbnQ+KENvbXB1dGVW
ZXJ0ZXhBdHRyaWJ1dGVTdHJpZGUoYXR0cmliKSk7CiAKICAgICAvLyBUaGlzIHdpbGwgbWFwIHRo
ZSByZXNvdXJjZSBpZiBpdCBpc24ndCBhbHJlYWR5IG1hcHBlZC4KLSAgICBnbDo6RXJyb3IgZXJy
b3IgPSBtYXBSZXNvdXJjZSgpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAg
ICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShtYXBSZXNvdXJjZSgpKTsK
IAogICAgIHVpbnQ4X3QgKm91dHB1dCA9IG1NYXBwZWRSZXNvdXJjZURhdGEgKyBvZmZzZXQ7CiAK
QEAgLTE0MSw3ICsxMzcsNyBAQAogICAgIEFTU0VSVCh2ZXJ0ZXhGb3JtYXRJbmZvLmNvcHlGdW5j
dGlvbiAhPSBOVUxMKTsKICAgICB2ZXJ0ZXhGb3JtYXRJbmZvLmNvcHlGdW5jdGlvbihpbnB1dCwg
aW5wdXRTdHJpZGUsIGNvdW50LCBvdXRwdXQpOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9O
T19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIHVuc2lnbmVkIGludCBW
ZXJ0ZXhCdWZmZXIxMTo6Z2V0QnVmZmVyU2l6ZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfZm9ybWF0X2Rh
dGEuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfZm9ybWF0X2RhdGEuanNvbgkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL2R4Z2lfZm9ybWF0X2RhdGEuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExOCBA
QAoreworICAgICJVTktOT1dOIjogIk5PTkUiLAorICAgICJSMzJHMzJCMzJBMzJfVFlQRUxFU1Mi
OiAiIiwKKyAgICAiUjMyRzMyQjMyQTMyX0ZMT0FUIjogIiIsCisgICAgIlIzMkczMkIzMkEzMl9V
SU5UIjogIiIsCisgICAgIlIzMkczMkIzMkEzMl9TSU5UIjogIiIsCisgICAgIlIzMkczMkIzMl9U
WVBFTEVTUyI6ICIiLAorICAgICJSMzJHMzJCMzJfRkxPQVQiOiAiIiwKKyAgICAiUjMyRzMyQjMy
X1VJTlQiOiAiIiwKKyAgICAiUjMyRzMyQjMyX1NJTlQiOiAiIiwKKyAgICAiUjE2RzE2QjE2QTE2
X1RZUEVMRVNTIjogIiIsCisgICAgIlIxNkcxNkIxNkExNl9GTE9BVCI6ICIiLAorICAgICJSMTZH
MTZCMTZBMTZfVU5PUk0iOiAiIiwKKyAgICAiUjE2RzE2QjE2QTE2X1VJTlQiOiAiIiwKKyAgICAi
UjE2RzE2QjE2QTE2X1NOT1JNIjogIiIsCisgICAgIlIxNkcxNkIxNkExNl9TSU5UIjogIiIsCisg
ICAgIlIzMkczMl9UWVBFTEVTUyI6ICIiLAorICAgICJSMzJHMzJfRkxPQVQiOiAiIiwKKyAgICAi
UjMyRzMyX1VJTlQiOiAiIiwKKyAgICAiUjMyRzMyX1NJTlQiOiAiIiwKKyAgICAiUjMyRzhYMjRf
VFlQRUxFU1MiOiAiIiwKKyAgICAiRDMyX0ZMT0FUX1M4WDI0X1VJTlQiOiAiIiwKKyAgICAiUjMy
X0ZMT0FUX1g4WDI0X1RZUEVMRVNTIjogIiIsCisgICAgIlgzMl9UWVBFTEVTU19HOFgyNF9VSU5U
IjogIiIsCisgICAgIlIxMEcxMEIxMEEyX1RZUEVMRVNTIjogIiIsCisgICAgIlIxMEcxMEIxMEEy
X1VOT1JNIjogIiIsCisgICAgIlIxMEcxMEIxMEEyX1VJTlQiOiAiIiwKKyAgICAiUjExRzExQjEw
X0ZMT0FUIjogIiIsCisgICAgIlI4RzhCOEE4X1RZUEVMRVNTIjogIiIsCisgICAgIlI4RzhCOEE4
X1VOT1JNIjogIiIsCisgICAgIlI4RzhCOEE4X1VOT1JNX1NSR0IiOiAiIiwKKyAgICAiUjhHOEI4
QThfVUlOVCI6ICIiLAorICAgICJSOEc4QjhBOF9TTk9STSI6ICIiLAorICAgICJSOEc4QjhBOF9T
SU5UIjogIiIsCisgICAgIlIxNkcxNl9UWVBFTEVTUyI6ICIiLAorICAgICJSMTZHMTZfRkxPQVQi
OiAiIiwKKyAgICAiUjE2RzE2X1VOT1JNIjogIiIsCisgICAgIlIxNkcxNl9VSU5UIjogIiIsCisg
ICAgIlIxNkcxNl9TTk9STSI6ICIiLAorICAgICJSMTZHMTZfU0lOVCI6ICIiLAorICAgICJSMzJf
VFlQRUxFU1MiOiAiIiwKKyAgICAiRDMyX0ZMT0FUIjogIiIsCisgICAgIlIzMl9GTE9BVCI6ICIi
LAorICAgICJSMzJfVUlOVCI6ICIiLAorICAgICJSMzJfU0lOVCI6ICIiLAorICAgICJSMjRHOF9U
WVBFTEVTUyI6ICIiLAorICAgICJEMjRfVU5PUk1fUzhfVUlOVCI6ICIiLAorICAgICJSMjRfVU5P
Uk1fWDhfVFlQRUxFU1MiOiAiIiwKKyAgICAiWDI0X1RZUEVMRVNTX0c4X1VJTlQiOiAiIiwKKyAg
ICAiUjhHOF9UWVBFTEVTUyI6ICIiLAorICAgICJSOEc4X1VOT1JNIjogIiIsCisgICAgIlI4Rzhf
VUlOVCI6ICIiLAorICAgICJSOEc4X1NOT1JNIjogIiIsCisgICAgIlI4RzhfU0lOVCI6ICIiLAor
ICAgICJSMTZfVFlQRUxFU1MiOiAiIiwKKyAgICAiUjE2X0ZMT0FUIjogIiIsCisgICAgIkQxNl9V
Tk9STSI6ICIiLAorICAgICJSMTZfVU5PUk0iOiAiIiwKKyAgICAiUjE2X1VJTlQiOiAiIiwKKyAg
ICAiUjE2X1NOT1JNIjogIiIsCisgICAgIlIxNl9TSU5UIjogIiIsCisgICAgIlI4X1RZUEVMRVNT
IjogIiIsCisgICAgIlI4X1VOT1JNIjogIiIsCisgICAgIlI4X1VJTlQiOiAiIiwKKyAgICAiUjhf
U05PUk0iOiAiIiwKKyAgICAiUjhfU0lOVCI6ICIiLAorICAgICJBOF9VTk9STSI6ICIiLAorICAg
ICJSMV9VTk9STSI6ICIiLAorICAgICJSOUc5QjlFNV9TSEFSRURFWFAiOiAiIiwKKyAgICAiUjhH
OF9COEc4X1VOT1JNIjogIiIsCisgICAgIkc4UjhfRzhCOF9VTk9STSI6ICIiLAorICAgICJCQzFf
VFlQRUxFU1MiOiAiIiwKKyAgICAiQkMxX1VOT1JNIjogIkJDMV9SR0JBX1VOT1JNX0JMT0NLIiwK
KyAgICAiQkMxX1VOT1JNX1NSR0IiOiAiIiwKKyAgICAiQkMyX1RZUEVMRVNTIjogIiIsCisgICAg
IkJDMl9VTk9STSI6ICJCQzJfUkdCQV9VTk9STV9CTE9DSyIsCisgICAgIkJDMl9VTk9STV9TUkdC
IjogIiIsCisgICAgIkJDM19UWVBFTEVTUyI6ICIiLAorICAgICJCQzNfVU5PUk0iOiAiQkMzX1JH
QkFfVU5PUk1fQkxPQ0siLAorICAgICJCQzNfVU5PUk1fU1JHQiI6ICIiLAorICAgICJCQzRfVFlQ
RUxFU1MiOiAiIiwKKyAgICAiQkM0X1VOT1JNIjogIiIsCisgICAgIkJDNF9TTk9STSI6ICIiLAor
ICAgICJCQzVfVFlQRUxFU1MiOiAiIiwKKyAgICAiQkM1X1VOT1JNIjogIiIsCisgICAgIkJDNV9T
Tk9STSI6ICIiLAorICAgICJCNUc2UjVfVU5PUk0iOiAiIiwKKyAgICAiQjVHNVI1QTFfVU5PUk0i
OiAiIiwKKyAgICAiQjhHOFI4QThfVU5PUk0iOiAiIiwKKyAgICAiQjhHOFI4WDhfVU5PUk0iOiAi
IiwKKyAgICAiUjEwRzEwQjEwX1hSX0JJQVNfQTJfVU5PUk0iOiAiIiwKKyAgICAiQjhHOFI4QThf
VFlQRUxFU1MiOiAiIiwKKyAgICAiQjhHOFI4QThfVU5PUk1fU1JHQiI6ICIiLAorICAgICJCOEc4
UjhYOF9UWVBFTEVTUyI6ICIiLAorICAgICJCOEc4UjhYOF9VTk9STV9TUkdCIjogIiIsCisgICAg
IkJDNkhfVFlQRUxFU1MiOiAiIiwKKyAgICAiQkM2SF9VRjE2IjogIiIsCisgICAgIkJDNkhfU0Yx
NiI6ICIiLAorICAgICJCQzdfVFlQRUxFU1MiOiAiIiwKKyAgICAiQkM3X1VOT1JNIjogIiIsCisg
ICAgIkJDN19VTk9STV9TUkdCIjogIiIsCisgICAgIkFZVVYiOiAiIiwKKyAgICAiWTQxMCI6ICIi
LAorICAgICJZNDE2IjogIiIsCisgICAgIk5WMTIiOiAiIiwKKyAgICAiUDAxMCI6ICIiLAorICAg
ICJQMDE2IjogIiIsCisgICAgIjQyMF9PUEFRVUUiOiAiIiwKKyAgICAiWVVZMiI6ICIiLAorICAg
ICJZMjEwIjogIiIsCisgICAgIlkyMTYiOiAiIiwKKyAgICAiTlYxMSI6ICIiLAorICAgICJBSTQ0
IjogIiIsCisgICAgIklBNDQiOiAiIiwKKyAgICAiUDgiOiAiIiwKKyAgICAiQThQOCI6ICIiLAor
ICAgICJCNEc0UjRBNF9VTk9STSI6ICIiCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfZm9ybWF0X21hcF9hdXRvZ2Vu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfZm9ybWF0X21hcF9hdXRvZ2VuLmNwcAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL2R4Z2lfZm9ybWF0X21hcF9hdXRvZ2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDUxNiBAQAorLy8gR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVC4KKy8vIEdlbmVyYXRl
ZCBieSBnZW5fZHhnaV9mb3JtYXRfdGFibGUucHkgdXNpbmcgZGF0YSBmcm9tIGR4Z2lfZm9ybWF0
X2RhdGEuanNvbi4KKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBEWEdJIGZvcm1hdCBpbmZvOgorLy8gICBEZXRlcm1p
bmluZyBtZXRhZGF0YSBhYm91dCBhIERYR0kgZm9ybWF0LgorCisjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvRm9ybWF0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNl
IHJ4Cit7CisKK25hbWVzcGFjZSBkM2QxMQoreworCitHTGVudW0gR2V0Q29tcG9uZW50VHlwZShE
WEdJX0ZPUk1BVCBkeGdpRm9ybWF0KQoreworICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKKyAgICB7
CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfNDIwX09QQVFVRToKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0E4UDg6CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9BOF9VTk9STToKKyAgICAgICAgICAgIHJldHVybiBHTF9V
TlNJR05FRF9OT1JNQUxJWkVEOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0FJNDQ6CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9BWVVWOgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjRHNFI0QTRfVU5PUk06CisgICAg
ICAgICAgICByZXR1cm4gR0xfVU5TSUdORURfTk9STUFMSVpFRDsKKyAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9CNUc1UjVBMV9VTk9STToKKyAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9O
T1JNQUxJWkVEOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I1RzZSNV9VTk9STToKKyAgICAg
ICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9OT1JNQUxJWkVEOworICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX0I4RzhSOEE4X1RZUEVMRVNTOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk06CisgICAgICAgICAgICByZXR1cm4gR0xfVU5T
SUdORURfTk9STUFMSVpFRDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9S
TV9TUkdCOgorICAgICAgICAgICAgcmV0dXJuIEdMX1VOU0lHTkVEX05PUk1BTElaRUQ7CisgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4WDhfVFlQRUxFU1M6CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9COEc4UjhYOF9VTk9STToKKyAgICAgICAgICAg
IHJldHVybiBHTF9VTlNJR05FRF9OT1JNQUxJWkVEOworICAgICAgICBjYXNlIERYR0lfRk9STUFU
X0I4RzhSOFg4X1VOT1JNX1NSR0I6CisgICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURfTk9S
TUFMSVpFRDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzFfVFlQRUxFU1M6CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzFfVU5PUk06CisgICAgICAg
ICAgICByZXR1cm4gR0xfVU5TSUdORURfTk9STUFMSVpFRDsKKyAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9CQzFfVU5PUk1fU1JHQjoKKyAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9OT1JN
QUxJWkVEOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMl9UWVBFTEVTUzoKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMl9VTk9STToKKyAgICAgICAg
ICAgIHJldHVybiBHTF9VTlNJR05FRF9OT1JNQUxJWkVEOworICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX0JDMl9VTk9STV9TUkdCOgorICAgICAgICAgICAgcmV0dXJuIEdMX1VOU0lHTkVEX05PUk1B
TElaRUQ7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMzX1RZUEVMRVNTOgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMzX1VOT1JNOgorICAgICAgICAg
ICAgcmV0dXJuIEdMX1VOU0lHTkVEX05PUk1BTElaRUQ7CisgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfQkMzX1VOT1JNX1NSR0I6CisgICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURfTk9STUFM
SVpFRDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzRfU05PUk06CisgICAgICAgICAgICBy
ZXR1cm4gR0xfU0lHTkVEX05PUk1BTElaRUQ7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM0
X1RZUEVMRVNTOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
QkM0X1VOT1JNOgorICAgICAgICAgICAgcmV0dXJuIEdMX1VOU0lHTkVEX05PUk1BTElaRUQ7Cisg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM1X1NOT1JNOgorICAgICAgICAgICAgcmV0dXJuIEdM
X1NJR05FRF9OT1JNQUxJWkVEOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNV9UWVBFTEVT
UzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNV9VTk9S
TToKKyAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9OT1JNQUxJWkVEOworICAgICAgICBj
YXNlIERYR0lfRk9STUFUX0JDNkhfU0YxNjoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIERYR0lfRk9STUFUX0JDNkhfVFlQRUxFU1M6CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzZIX1VGMTY6CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzdfVFlQRUxFU1M6CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzdfVU5PUk06CisgICAgICAgICAgICByZXR1cm4gR0xf
VU5TSUdORURfTk9STUFMSVpFRDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzdfVU5PUk1f
U1JHQjoKKyAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9OT1JNQUxJWkVEOworICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX0QxNl9VTk9STToKKyAgICAgICAgICAgIHJldHVybiBHTF9VTlNJ
R05FRF9OT1JNQUxJWkVEOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0QyNF9VTk9STV9TOF9V
SU5UOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfRDMyX0ZM
T0FUOgorICAgICAgICAgICAgcmV0dXJuIEdMX0ZMT0FUOworICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX0QzMl9GTE9BVF9TOFgyNF9VSU5UOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfRzhSOF9HOEI4X1VOT1JNOgorICAgICAgICAgICAgcmV0dXJuIEdMX1VO
U0lHTkVEX05PUk1BTElaRUQ7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfSUE0NDoKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX05WMTE6CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9OVjEyOgorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUDAxMDoKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX1AwMTY6CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9QODoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1RZUEVMRVNTOgorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVUlOVDoKKyAgICAgICAgICAgIHJl
dHVybiBHTF9VTlNJR05FRF9JTlQ7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjEwRzEwQjEw
QTJfVU5PUk06CisgICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURfTk9STUFMSVpFRDsKKyAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBfWFJfQklBU19BMl9VTk9STToKKyAgICAg
ICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9OT1JNQUxJWkVEOworICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX1IxMUcxMUIxMF9GTE9BVDoKKyAgICAgICAgICAgIHJldHVybiBHTF9GTE9BVDsKKyAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQ6CisgICAgICAgICAgICBy
ZXR1cm4gR0xfRkxPQVQ7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJ
TlQ6CisgICAgICAgICAgICByZXR1cm4gR0xfSU5UOworICAgICAgICBjYXNlIERYR0lfRk9STUFU
X1IxNkcxNkIxNkExNl9TTk9STToKKyAgICAgICAgICAgIHJldHVybiBHTF9TSUdORURfTk9STUFM
SVpFRDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVFlQRUxFU1M6Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZf
VUlOVDoKKyAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9JTlQ7CisgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNOgorICAgICAgICAgICAgcmV0dXJuIEdMX1VO
U0lHTkVEX05PUk1BTElaRUQ7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2X0ZMT0FU
OgorICAgICAgICAgICAgcmV0dXJuIEdMX0ZMT0FUOworICAgICAgICBjYXNlIERYR0lfRk9STUFU
X1IxNkcxNl9TSU5UOgorICAgICAgICAgICAgcmV0dXJuIEdMX0lOVDsKKyAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9SMTZHMTZfU05PUk06CisgICAgICAgICAgICByZXR1cm4gR0xfU0lHTkVEX05P
Uk1BTElaRUQ7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2X1RZUEVMRVNTOgorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2X1VJTlQ6Cisg
ICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURfSU5UOworICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX1IxNkcxNl9VTk9STToKKyAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9OT1JNQUxJ
WkVEOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNl9GTE9BVDoKKyAgICAgICAgICAgIHJl
dHVybiBHTF9GTE9BVDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfU0lOVDoKKyAgICAg
ICAgICAgIHJldHVybiBHTF9JTlQ7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2X1NOT1JN
OgorICAgICAgICAgICAgcmV0dXJuIEdMX1NJR05FRF9OT1JNQUxJWkVEOworICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1IxNl9UWVBFTEVTUzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIERYR0lfRk9STUFUX1IxNl9VSU5UOgorICAgICAgICAgICAgcmV0dXJuIEdMX1VOU0lHTkVE
X0lOVDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfVU5PUk06CisgICAgICAgICAgICBy
ZXR1cm4gR0xfVU5TSUdORURfTk9STUFMSVpFRDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9S
MV9VTk9STToKKyAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9OT1JNQUxJWkVEOworICAg
ICAgICBjYXNlIERYR0lfRk9STUFUX1IyNEc4X1RZUEVMRVNTOgorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjI0X1VOT1JNX1g4X1RZUEVMRVNTOgorICAgICAg
ICAgICAgcmV0dXJuIEdMX1VOU0lHTkVEX05PUk1BTElaRUQ7CisgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FUOgorICAgICAgICAgICAgcmV0dXJuIEdMX0ZMT0FUOwor
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5UOgorICAgICAgICAgICAg
cmV0dXJuIEdMX0lOVDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVFlQ
RUxFU1M6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJH
MzJCMzJBMzJfVUlOVDoKKyAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9JTlQ7CisgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FUOgorICAgICAgICAgICAgcmV0dXJu
IEdMX0ZMT0FUOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMl9TSU5UOgorICAg
ICAgICAgICAgcmV0dXJuIEdMX0lOVDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJC
MzJfVFlQRUxFU1M6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SMzJHMzJCMzJfVUlOVDoKKyAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9JTlQ7Cisg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FUOgorICAgICAgICAgICAgcmV0dXJu
IEdMX0ZMT0FUOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMl9TSU5UOgorICAgICAg
ICAgICAgcmV0dXJuIEdMX0lOVDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJfVFlQ
RUxFU1M6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJH
MzJfVUlOVDoKKyAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9JTlQ7CisgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfUjMyRzhYMjRfVFlQRUxFU1M6CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJfRkxPQVQ6CisgICAgICAgICAgICByZXR1cm4gR0xf
RkxPQVQ7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyX0ZMT0FUX1g4WDI0X1RZUEVMRVNT
OgorICAgICAgICAgICAgcmV0dXJuIEdMX0ZMT0FUOworICAgICAgICBjYXNlIERYR0lfRk9STUFU
X1IzMl9TSU5UOgorICAgICAgICAgICAgcmV0dXJuIEdMX0lOVDsKKyAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9SMzJfVFlQRUxFU1M6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9SMzJfVUlOVDoKKyAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9JTlQ7
CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfU0lOVDoKKyAgICAgICAgICAgIHJl
dHVybiBHTF9JTlQ7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfU05PUk06Cisg
ICAgICAgICAgICByZXR1cm4gR0xfU0lHTkVEX05PUk1BTElaRUQ7CisgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjhHOEI4QThfVFlQRUxFU1M6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5UOgorICAgICAgICAgICAgcmV0dXJuIEdMX1VO
U0lHTkVEX0lOVDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STToKKyAg
ICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9OT1JNQUxJWkVEOworICAgICAgICBjYXNlIERY
R0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0I6CisgICAgICAgICAgICByZXR1cm4gR0xfVU5T
SUdORURfTk9STUFMSVpFRDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4X0I4RzhfVU5P
Uk06CisgICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURfTk9STUFMSVpFRDsKKyAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SOEc4X1NJTlQ6CisgICAgICAgICAgICByZXR1cm4gR0xfSU5UOwor
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfU05PUk06CisgICAgICAgICAgICByZXR1cm4g
R0xfU0lHTkVEX05PUk1BTElaRUQ7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9UWVBF
TEVTUzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4Rzhf
VUlOVDoKKyAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9JTlQ7CisgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjhHOF9VTk9STToKKyAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9O
T1JNQUxJWkVEOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4X1NJTlQ6CisgICAgICAgICAg
ICByZXR1cm4gR0xfSU5UOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4X1NOT1JNOgorICAg
ICAgICAgICAgcmV0dXJuIEdMX1NJR05FRF9OT1JNQUxJWkVEOworICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX1I4X1RZUEVMRVNTOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjhfVUlOVDoKKyAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9JTlQ7Cisg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhfVU5PUk06CisgICAgICAgICAgICByZXR1cm4gR0xf
VU5TSUdORURfTk9STUFMSVpFRDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOUc5QjlFNV9T
SEFSRURFWFA6CisgICAgICAgICAgICByZXR1cm4gR0xfRkxPQVQ7CisgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfVU5LTk9XTjoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX1gyNF9UWVBFTEVTU19HOF9VSU5UOgorICAgICAgICAgICAgcmV0dXJuIEdMX1VOU0lH
TkVEX0lOVDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9YMzJfVFlQRUxFU1NfRzhYMjRfVUlO
VDoKKyAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9JTlQ7CisgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfWTIxMDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX1kyMTY6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9Z
NDEwOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfWTQxNjoK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1lVWTI6CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgcmV0dXJuIEdMX05PTkU7Cit9CisKK30gIC8v
IG5hbWVzcGFjZSBkM2QxMQorCituYW1lc3BhY2UgZDNkMTFfYW5nbGUKK3sKKworY29uc3QgRm9y
bWF0ICZHZXRGb3JtYXQoRFhHSV9GT1JNQVQgZHhnaUZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGR4
Z2lGb3JtYXQpCisgICAgeworICAgICAgICBjYXNlIERYR0lfRk9STUFUXzQyMF9PUEFRVUU6Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9BOFA4OgorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQThfVU5PUk06CisgICAgICAg
ICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6QThfVU5PUk0pOworICAgICAgICBj
YXNlIERYR0lfRk9STUFUX0FJNDQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9BWVVWOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfQjRHNFI0QTRfVU5PUk06CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9y
bWF0OjpJRDo6QjRHNFI0QTRfVU5PUk0pOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I1RzVS
NUExX1VOT1JNOgorICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1hdDo6SUQ6OkI1
RzVSNUExX1VOT1JNKTsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CNUc2UjVfVU5PUk06Cisg
ICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6QjVHNlI1X1VOT1JNKTsK
KyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9COEc4UjhBOF9UWVBFTEVTUzoKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNOgorICAgICAg
ICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1hdDo6SUQ6OkI4RzhSOEE4X1VOT1JNKTsKKyAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STV9TUkdCOgorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4WDhfVFlQRUxFU1M6CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9COEc4UjhYOF9VTk9STToK
KyAgICAgICAgICAgIHJldHVybiBGb3JtYXQ6OkdldChGb3JtYXQ6OklEOjpCOEc4UjhYOF9VTk9S
TSk7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4WDhfVU5PUk1fU1JHQjoKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMV9UWVBFTEVTUzoKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMV9VTk9STToKKyAg
ICAgICAgICAgIHJldHVybiBGb3JtYXQ6OkdldChGb3JtYXQ6OklEOjpCQzFfUkdCQV9VTk9STV9C
TE9DSyk7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMxX1VOT1JNX1NSR0I6CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzJfVFlQRUxFU1M6CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzJfVU5PUk06CisgICAg
ICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6QkMyX1JHQkFfVU5PUk1fQkxP
Q0spOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMl9VTk9STV9TUkdCOgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMzX1RZUEVMRVNTOgorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMzX1VOT1JNOgorICAgICAg
ICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1hdDo6SUQ6OkJDM19SR0JBX1VOT1JNX0JMT0NL
KTsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzNfVU5PUk1fU1JHQjoKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNF9TTk9STToKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNF9UWVBFTEVTUzoKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNF9VTk9STToKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNV9TTk9STToKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNV9UWVBFTEVTUzoKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNV9VTk9STToKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNkhfU0YxNjoKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNkhfVFlQRUxFU1M6Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzZIX1VGMTY6Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzdfVFlQRUxFU1M6
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzdfVU5PUk06
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzdfVU5PUk1f
U1JHQjoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0QxNl9V
Tk9STToKKyAgICAgICAgICAgIHJldHVybiBGb3JtYXQ6OkdldChGb3JtYXQ6OklEOjpEMTZfVU5P
Uk0pOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5UOgorICAgICAg
ICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1hdDo6SUQ6OkQyNF9VTk9STV9TOF9VSU5UKTsK
KyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMzJfRkxPQVQ6CisgICAgICAgICAgICByZXR1cm4g
Rm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6RDMyX0ZMT0FUKTsKKyAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9EMzJfRkxPQVRfUzhYMjRfVUlOVDoKKyAgICAgICAgICAgIHJldHVybiBGb3JtYXQ6Okdl
dChGb3JtYXQ6OklEOjpEMzJfRkxPQVRfUzhYMjRfVUlOVCk7CisgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfRzhSOF9HOEI4X1VOT1JNOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfSUE0NDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX05WMTE6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9OVjEyOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUDAx
MDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1AwMTY6Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9QODoKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1RZUEVMRVNT
OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjEwRzEwQjEw
QTJfVUlOVDoKKyAgICAgICAgICAgIHJldHVybiBGb3JtYXQ6OkdldChGb3JtYXQ6OklEOjpSMTBH
MTBCMTBBMl9VSU5UKTsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VTk9S
TToKKyAgICAgICAgICAgIHJldHVybiBGb3JtYXQ6OkdldChGb3JtYXQ6OklEOjpSMTBHMTBCMTBB
Ml9VTk9STSk7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjEwRzEwQjEwX1hSX0JJQVNfQTJf
VU5PUk06CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTFH
MTFCMTBfRkxPQVQ6CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6
UjExRzExQjEwX0ZMT0FUKTsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZf
RkxPQVQ6CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6UjE2RzE2
QjE2QTE2X0ZMT0FUKTsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lO
VDoKKyAgICAgICAgICAgIHJldHVybiBGb3JtYXQ6OkdldChGb3JtYXQ6OklEOjpSMTZHMTZCMTZB
MTZfU0lOVCk7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NOT1JNOgor
ICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1hdDo6SUQ6OlIxNkcxNkIxNkExNl9T
Tk9STSk7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1RZUEVMRVNTOgor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2
X1VJTlQ6CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6UjE2RzE2
QjE2QTE2X1VJTlQpOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VTk9S
TToKKyAgICAgICAgICAgIHJldHVybiBGb3JtYXQ6OkdldChGb3JtYXQ6OklEOjpSMTZHMTZCMTZB
MTZfVU5PUk0pOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNl9GTE9BVDoKKyAgICAg
ICAgICAgIHJldHVybiBGb3JtYXQ6OkdldChGb3JtYXQ6OklEOjpSMTZHMTZfRkxPQVQpOworICAg
ICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNl9TSU5UOgorICAgICAgICAgICAgcmV0dXJuIEZv
cm1hdDo6R2V0KEZvcm1hdDo6SUQ6OlIxNkcxNl9TSU5UKTsKKyAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9SMTZHMTZfU05PUk06CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0
OjpJRDo6UjE2RzE2X1NOT1JNKTsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZfVFlQ
RUxFU1M6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZH
MTZfVUlOVDoKKyAgICAgICAgICAgIHJldHVybiBGb3JtYXQ6OkdldChGb3JtYXQ6OklEOjpSMTZH
MTZfVUlOVCk7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2X1VOT1JNOgorICAgICAg
ICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1hdDo6SUQ6OlIxNkcxNl9VTk9STSk7CisgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2X0ZMT0FUOgorICAgICAgICAgICAgcmV0dXJuIEZvcm1h
dDo6R2V0KEZvcm1hdDo6SUQ6OlIxNl9GTE9BVCk7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjE2X1NJTlQ6CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6UjE2
X1NJTlQpOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNl9TTk9STToKKyAgICAgICAgICAg
IHJldHVybiBGb3JtYXQ6OkdldChGb3JtYXQ6OklEOjpSMTZfU05PUk0pOworICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1IxNl9UWVBFTEVTUzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIERYR0lfRk9STUFUX1IxNl9VSU5UOgorICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0
KEZvcm1hdDo6SUQ6OlIxNl9VSU5UKTsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfVU5P
Uk06CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6UjE2X1VOT1JN
KTsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMV9VTk9STToKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IyNEc4X1RZUEVMRVNTOgorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjI0X1VOT1JNX1g4X1RZUEVMRVNTOgor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMy
X0ZMT0FUOgorICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1hdDo6SUQ6OlIzMkcz
MkIzMkEzMl9GTE9BVCk7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1NJ
TlQ6CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6UjMyRzMyQjMy
QTMyX1NJTlQpOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9UWVBFTEVT
UzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIz
MkEzMl9VSU5UOgorICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1hdDo6SUQ6OlIz
MkczMkIzMkEzMl9VSU5UKTsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfRkxP
QVQ6CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6UjMyRzMyQjMy
X0ZMT0FUKTsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfU0lOVDoKKyAgICAg
ICAgICAgIHJldHVybiBGb3JtYXQ6OkdldChGb3JtYXQ6OklEOjpSMzJHMzJCMzJfU0lOVCk7Cisg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX1RZUEVMRVNTOgorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX1VJTlQ6CisgICAgICAg
ICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6UjMyRzMyQjMyX1VJTlQpOworICAg
ICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVDoKKyAgICAgICAgICAgIHJldHVybiBG
b3JtYXQ6OkdldChGb3JtYXQ6OklEOjpSMzJHMzJfRkxPQVQpOworICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX1IzMkczMl9TSU5UOgorICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1h
dDo6SUQ6OlIzMkczMl9TSU5UKTsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJfVFlQ
RUxFU1M6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJH
MzJfVUlOVDoKKyAgICAgICAgICAgIHJldHVybiBGb3JtYXQ6OkdldChGb3JtYXQ6OklEOjpSMzJH
MzJfVUlOVCk7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzhYMjRfVFlQRUxFU1M6Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJfRkxPQVQ6Cisg
ICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6UjMyX0ZMT0FUKTsKKyAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJfRkxPQVRfWDhYMjRfVFlQRUxFU1M6CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJfU0lOVDoKKyAgICAgICAg
ICAgIHJldHVybiBGb3JtYXQ6OkdldChGb3JtYXQ6OklEOjpSMzJfU0lOVCk7CisgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfUjMyX1RZUEVMRVNTOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfUjMyX1VJTlQ6CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpH
ZXQoRm9ybWF0OjpJRDo6UjMyX1VJTlQpOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhC
OEE4X1NJTlQ6CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6UjhH
OEI4QThfU0lOVCk7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfU05PUk06Cisg
ICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6UjhHOEI4QThfU05PUk0p
OworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1RZUEVMRVNTOgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVDoKKyAgICAg
ICAgICAgIHJldHVybiBGb3JtYXQ6OkdldChGb3JtYXQ6OklEOjpSOEc4QjhBOF9VSU5UKTsKKyAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STToKKyAgICAgICAgICAgIHJldHVy
biBGb3JtYXQ6OkdldChGb3JtYXQ6OklEOjpSOEc4QjhBOF9VTk9STSk7CisgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQjoKKyAgICAgICAgICAgIHJldHVybiBGb3Jt
YXQ6OkdldChGb3JtYXQ6OklEOjpSOEc4QjhBOF9VTk9STV9TUkdCKTsKKyAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9SOEc4X0I4RzhfVU5PUk06CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SOEc4X1NJTlQ6CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpH
ZXQoRm9ybWF0OjpJRDo6UjhHOF9TSU5UKTsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4
X1NOT1JNOgorICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1hdDo6SUQ6OlI4Rzhf
U05PUk0pOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfVFlQRUxFU1M6CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4X1VJTlQ6CisgICAgICAg
ICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6UjhHOF9VSU5UKTsKKyAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SOEc4X1VOT1JNOgorICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6
R2V0KEZvcm1hdDo6SUQ6OlI4RzhfVU5PUk0pOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4
X1NJTlQ6CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6UjhfU0lO
VCk7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhfU05PUk06CisgICAgICAgICAgICByZXR1
cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6UjhfU05PUk0pOworICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX1I4X1RZUEVMRVNTOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjhfVUlOVDoKKyAgICAgICAgICAgIHJldHVybiBGb3JtYXQ6OkdldChGb3JtYXQ6
OklEOjpSOF9VSU5UKTsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOF9VTk9STToKKyAgICAg
ICAgICAgIHJldHVybiBGb3JtYXQ6OkdldChGb3JtYXQ6OklEOjpSOF9VTk9STSk7CisgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfUjlHOUI5RTVfU0hBUkVERVhQOgorICAgICAgICAgICAgcmV0dXJu
IEZvcm1hdDo6R2V0KEZvcm1hdDo6SUQ6OlI5RzlCOUU1X1NIQVJFREVYUCk7CisgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfVU5LTk9XTjoKKyAgICAgICAgICAgIHJldHVybiBGb3JtYXQ6OkdldChG
b3JtYXQ6OklEOjpOT05FKTsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9YMjRfVFlQRUxFU1Nf
RzhfVUlOVDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1gz
Ml9UWVBFTEVTU19HOFgyNF9VSU5UOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfWTIxMDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX1kyMTY6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9ZNDEwOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfWTQx
NjoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1lVWTI6Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgIH0KKworICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1h
dDo6SUQ6Ok5PTkUpOworfQorCit9ICAvLyBuYW1lc3BhY2UgZDNkMTFfYW5nbGUKKworfSAgLy8g
bmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfc3VwcG9ydF9kYXRhLmpzb24KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9k
eGdpX3N1cHBvcnRfZGF0YS5qc29uCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfc3VwcG9ydF9k
YXRhLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTgsNyArOCw4IEBACiAgICAgICAic2hhZGVyU2Ft
cGxlIjogIm5ldmVyIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11
bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAg
ICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIi
CiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1RZUEVMRVNTIjoKICAgICB7
CkBAIC0xOCw3ICsxOSw4IEBACiAgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKICAgICAg
ICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIi
LAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAi
bmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9G
T1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FUIjoKICAgICB7CkBAIC0yOCwyNyArMzAsMzAgQEAKICAg
ICAgICJzaGFkZXJTYW1wbGUiOiAiMTBfMGNoZWNrMTBfMWFsd2F5cyIsCiAgICAgICAicmVuZGVy
VGFyZ2V0IjogImFsd2F5cyIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCi0gICAg
ICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIs
CisgICAgICAibWlwQXV0b0dlbiI6ICJhbHdheXMiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRf
UjMyRzMyQjMyQTMyX1VJTlQiOgogICAgIHsKLSAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwK
LSAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdh
eXMiLAorICAgICAgInRleHR1cmUyRCI6ICIxMF8wIiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAiMTBf
MCIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiMTBfMCIsCiAgICAgICAic2hhZGVyU2FtcGxlIjog
Im5ldmVyIiwKLSAgICAgICJyZW5kZXJUYXJnZXQiOiAiYWx3YXlzIiwKKyAgICAgICJyZW5kZXJU
YXJnZXQiOiAiMTBfMCIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCi0gICAgICAi
ZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisg
ICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9SMzJH
MzJCMzJBMzJfU0lOVCI6CiAgICAgewotICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAotICAg
ICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAotICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIs
CisgICAgICAidGV4dHVyZTJEIjogIjEwXzAiLAorICAgICAgInRleHR1cmUzRCI6ICIxMF8wIiwK
KyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICIxMF8wIiwKICAgICAgICJzaGFkZXJTYW1wbGUiOiAibmV2
ZXIiLAotICAgICAgInJlbmRlclRhcmdldCI6ICJhbHdheXMiLAorICAgICAgInJlbmRlclRhcmdl
dCI6ICIxMF8wIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwKLSAgICAgICJkZXB0
aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAg
ICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1IzMkczMkIz
Ml9UWVBFTEVTUyI6CiAgICAgewpAQCAtNTgsNyArNjMsOCBAQAogICAgICAgInNoYWRlclNhbXBs
ZSI6ICJuZXZlciIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0
aXNhbXBsZVJUIjogIm5ldmVyIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAg
ICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgog
ICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVCI6CiAgICAgewpAQCAtNjgs
NyArNzQsOCBAQAogICAgICAgInNoYWRlclNhbXBsZSI6ICIxMV8wY2hlY2siLAogICAgICAgInJl
bmRlclRhcmdldCI6ICJjaGVjayIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCi0g
ICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZl
ciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1B
VF9SMzJHMzJCMzJfVUlOVCI6CiAgICAgewpAQCAtNzgsNyArODUsOCBAQAogICAgICAgInNoYWRl
clNhbXBsZSI6ICJuZXZlciIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogImNoZWNrIiwKICAgICAg
ICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIi
CisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5l
dmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1IzMkczMkIzMl9TSU5UIjoKICAgICB7CkBA
IC04OCw3ICs5Niw4IEBACiAgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKICAgICAgICJy
ZW5kZXJUYXJnZXQiOiAiY2hlY2siLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAot
ICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2
ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JN
QVRfUjE2RzE2QjE2QTE2X1RZUEVMRVNTIjoKICAgICB7CkBAIC05OCw3ICsxMDcsOCBAQAogICAg
ICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVy
IiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwi
OiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRv
R2VuIjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9B
VCI6CiAgICAgewpAQCAtMTA1LDEwICsxMTUsMTEgQEAKICAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3
YXlzIiwKICAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKICAgICAgICJ0ZXh0dXJlQ3ViZSI6
ICJhbHdheXMiLAotICAgICAgInNoYWRlclNhbXBsZSI6ICIxMF8wIiwKKyAgICAgICJzaGFkZXJT
YW1wbGUiOiAiOV8zY2hlY2tfMTBfMGFsd2F5cyIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogImFs
d2F5cyIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCi0gICAgICAiZGVwdGhTdGVu
Y2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlw
QXV0b0dlbiI6ICJhbHdheXMiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2
X1VOT1JNIjoKICAgICB7CkBAIC0xMTUsNDAgKzEyNiw0NCBAQAogICAgICAgInRleHR1cmUyRCI6
ICJhbHdheXMiLAogICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAogICAgICAgInRleHR1cmVD
dWJlIjogImFsd2F5cyIsCi0gICAgICAic2hhZGVyU2FtcGxlIjogIjEwXzAiLAorICAgICAgInNo
YWRlclNhbXBsZSI6ICJhbHdheXMiLAogICAgICAgInJlbmRlclRhcmdldCI6ICJhbHdheXMiLAog
ICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJu
ZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4i
OiAiYWx3YXlzIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5UIjoK
ICAgICB7Ci0gICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCi0gICAgICAidGV4dHVyZTNEIjog
ImFsd2F5cyIsCi0gICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJl
MkQiOiAiMTBfMCIsCisgICAgICAidGV4dHVyZTNEIjogIjEwXzAiLAorICAgICAgInRleHR1cmVD
dWJlIjogIjEwXzAiLAogICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCi0gICAgICAicmVu
ZGVyVGFyZ2V0IjogImFsd2F5cyIsCisgICAgICAicmVuZGVyVGFyZ2V0IjogIjEwXzAiLAogICAg
ICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZl
ciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAi
bmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NOT1JNIjoKICAg
ICB7Ci0gICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCi0gICAgICAidGV4dHVyZTNEIjogImFs
d2F5cyIsCi0gICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlMkQi
OiAiMTBfMCIsCisgICAgICAidGV4dHVyZTNEIjogIjEwXzAiLAorICAgICAgInRleHR1cmVDdWJl
IjogIjEwXzAiLAogICAgICAgInNoYWRlclNhbXBsZSI6ICIxMF8wIiwKLSAgICAgICJyZW5kZXJU
YXJnZXQiOiAiYWx3YXlzIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAiMTBfMCIsCiAgICAgICAi
bXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgor
ICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICIxMF8w
IgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5UIjoKICAgICB7Ci0g
ICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCi0gICAgICAidGV4dHVyZTNEIjogImFsd2F5cyIs
Ci0gICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlMkQiOiAiMTBf
MCIsCisgICAgICAidGV4dHVyZTNEIjogIjEwXzAiLAorICAgICAgInRleHR1cmVDdWJlIjogIjEw
XzAiLAogICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCi0gICAgICAicmVuZGVyVGFyZ2V0
IjogImFsd2F5cyIsCisgICAgICAicmVuZGVyVGFyZ2V0IjogIjEwXzAiLAogICAgICAgIm11bHRp
c2FtcGxlUlQiOiAiY2hlY2siLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAg
ICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAg
ICAgfSwKICAgICAiRFhHSV9GT1JNQVRfUjMyRzMyX1RZUEVMRVNTIjoKICAgICB7CkBAIC0xNTgs
NyArMTczLDggQEAKICAgICAgICJzaGFkZXJTYW1wbGUiOiAibmV2ZXIiLAogICAgICAgInJlbmRl
clRhcmdldCI6ICJuZXZlciIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIsCi0gICAg
ICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIs
CisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9S
MzJHMzJfRkxPQVQiOgogICAgIHsKQEAgLTE2OCwzNyArMTg0LDQxIEBACiAgICAgICAic2hhZGVy
U2FtcGxlIjogIjEwXzBjaGVjazEwXzFhbHdheXMiLAogICAgICAgInJlbmRlclRhcmdldCI6ICJh
bHdheXMiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAotICAgICAgImRlcHRoU3Rl
bmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1p
cEF1dG9HZW4iOiAiMTBfMCIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9SMzJHMzJfVUlOVCI6
CiAgICAgewotICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAotICAgICAgInRleHR1cmUzRCI6
ICJhbHdheXMiLAotICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAidGV4dHVy
ZTJEIjogIjEwXzAiLAorICAgICAgInRleHR1cmUzRCI6ICIxMF8wIiwKKyAgICAgICJ0ZXh0dXJl
Q3ViZSI6ICIxMF8wIiwKICAgICAgICJzaGFkZXJTYW1wbGUiOiAibmV2ZXIiLAotICAgICAgInJl
bmRlclRhcmdldCI6ICJhbHdheXMiLAorICAgICAgInJlbmRlclRhcmdldCI6ICIxMF8wIiwKICAg
ICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2
ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjog
Im5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1IzMkczMl9TSU5UIjoKICAgICB7Ci0g
ICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCi0gICAgICAidGV4dHVyZTNEIjogImFsd2F5cyIs
Ci0gICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlMkQiOiAiMTBf
MCIsCisgICAgICAidGV4dHVyZTNEIjogIjEwXzAiLAorICAgICAgInRleHR1cmVDdWJlIjogIjEw
XzAiLAogICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCi0gICAgICAicmVuZGVyVGFyZ2V0
IjogImFsd2F5cyIsCisgICAgICAicmVuZGVyVGFyZ2V0IjogIjEwXzAiLAogICAgICAgIm11bHRp
c2FtcGxlUlQiOiAiY2hlY2siLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAg
ICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAg
ICAgfSwKICAgICAiRFhHSV9GT1JNQVRfUjMyRzhYMjRfVFlQRUxFU1MiOgogICAgIHsKLSAgICAg
ICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlMkQiOiAiMTBfMCIsCiAgICAg
ICAidGV4dHVyZTNEIjogIm5ldmVyIiwKLSAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAor
ICAgICAgInRleHR1cmVDdWJlIjogIjEwXzAiLAogICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZl
ciIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0aXNhbXBsZVJU
IjogIm5ldmVyIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhT
dGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAg
ICAgIkRYR0lfRk9STUFUX0QzMl9GTE9BVF9TOFgyNF9VSU5UIjoKICAgICB7CkBAIC0yMDgsNyAr
MjI4LDggQEAKICAgICAgICJzaGFkZXJTYW1wbGUiOiAibmV2ZXIiLAogICAgICAgInJlbmRlclRh
cmdldCI6ICJuZXZlciIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCi0gICAgICAi
ZGVwdGhTdGVuY2lsIjogImFsd2F5cyIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAiMTBfMCIsCisg
ICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9SMzJf
RkxPQVRfWDhYMjRfVFlQRUxFU1MiOgogICAgIHsKQEAgLTIxOCw3ICsyMzksOCBAQAogICAgICAg
InNoYWRlclNhbXBsZSI6ICIxMF8wY2hlY2sxMF8xYWx3YXlzIiwKICAgICAgICJyZW5kZXJUYXJn
ZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAotICAgICAgImRl
cHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAg
ICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfWDMyX1RZ
UEVMRVNTX0c4WDI0X1VJTlQiOgogICAgIHsKQEAgLTIyOCw0NyArMjUwLDUyIEBACiAgICAgICAi
c2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAog
ICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJu
ZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4i
OiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVFlQRUxFU1Mi
OgogICAgIHsKLSAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0dXJlM0Qi
OiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAorICAgICAgInRleHR1
cmUyRCI6ICIxMF8wIiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAiMTBfMCIsCisgICAgICAidGV4dHVy
ZUN1YmUiOiAiMTBfMCIsCiAgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKICAgICAgICJy
ZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAot
ICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2
ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JN
QVRfUjEwRzEwQjEwQTJfVU5PUk0iOgogICAgIHsKLSAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlz
IiwKLSAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJh
bHdheXMiLAorICAgICAgInRleHR1cmUyRCI6ICIxMF8wIiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAi
MTBfMCIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiMTBfMCIsCiAgICAgICAic2hhZGVyU2FtcGxl
IjogIjEwXzAiLAotICAgICAgInJlbmRlclRhcmdldCI6ICJhbHdheXMiLAorICAgICAgInJlbmRl
clRhcmdldCI6ICIxMF8wIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwKLSAgICAg
ICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwK
KyAgICAgICJtaXBBdXRvR2VuIjogIjEwXzAiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfUjEw
RzEwQjEwQTJfVUlOVCI6CiAgICAgewotICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAotICAg
ICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAotICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIs
CisgICAgICAidGV4dHVyZTJEIjogIjEwXzAiLAorICAgICAgInRleHR1cmUzRCI6ICIxMF8wIiwK
KyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICIxMF8wIiwKICAgICAgICJzaGFkZXJTYW1wbGUiOiAibmV2
ZXIiLAotICAgICAgInJlbmRlclRhcmdldCI6ICJhbHdheXMiLAorICAgICAgInJlbmRlclRhcmdl
dCI6ICIxMF8wIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwKLSAgICAgICJkZXB0
aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAg
ICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1IxMUcxMUIx
MF9GTE9BVCI6CiAgICAgewotICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAotICAgICAgInRl
eHR1cmUzRCI6ICJhbHdheXMiLAotICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIsCisgICAg
ICAidGV4dHVyZTJEIjogIjEwXzAiLAorICAgICAgInRleHR1cmUzRCI6ICIxMF8wIiwKKyAgICAg
ICJ0ZXh0dXJlQ3ViZSI6ICIxMF8wIiwKICAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTBfMCIsCi0g
ICAgICAicmVuZGVyVGFyZ2V0IjogImFsd2F5cyIsCisgICAgICAicmVuZGVyVGFyZ2V0IjogIjEw
XzAiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAotICAgICAgImRlcHRoU3RlbmNp
bCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1
dG9HZW4iOiAiMTBfMCIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9UWVBFTEVT
UyI6CiAgICAgewpAQCAtMjc4LDcgKzMwNSw4IEBACiAgICAgICAic2hhZGVyU2FtcGxlIjogIm5l
dmVyIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRpc2FtcGxl
UlQiOiAibmV2ZXIiLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0
aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwK
ICAgICAiRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0iOgogICAgIHsKQEAgLTI4NSwxMCArMzEz
LDExIEBACiAgICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCiAgICAgICAidGV4dHVyZTNEIjog
ImFsd2F5cyIsCiAgICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKLSAgICAgICJzaGFkZXJT
YW1wbGUiOiAiMTBfMCIsCisgICAgICAic2hhZGVyU2FtcGxlIjogImFsd2F5cyIsCiAgICAgICAi
cmVuZGVyVGFyZ2V0IjogImFsd2F5cyIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIs
Ci0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJu
ZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJhbHdheXMiCiAgICAgfSwKICAgICAiRFhHSV9G
T1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiI6CiAgICAgewpAQCAtMjk1LDIwICszMjQsMjIgQEAK
ICAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKICAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlz
IiwKICAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAotICAgICAgInNoYWRlclNhbXBsZSI6
ICIxMF8wIiwKKyAgICAgICJzaGFkZXJTYW1wbGUiOiAiYWx3YXlzIiwKICAgICAgICJyZW5kZXJU
YXJnZXQiOiAiYWx3YXlzIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwKLSAgICAg
ICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwK
KyAgICAgICJtaXBBdXRvR2VuIjogImFsd2F5cyIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9S
OEc4QjhBOF9VSU5UIjoKICAgICB7Ci0gICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCi0gICAg
ICAidGV4dHVyZTNEIjogImFsd2F5cyIsCi0gICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwK
KyAgICAgICJ0ZXh0dXJlMkQiOiAiMTBfMCIsCisgICAgICAidGV4dHVyZTNEIjogIjEwXzAiLAor
ICAgICAgInRleHR1cmVDdWJlIjogIjEwXzAiLAogICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZl
ciIsCi0gICAgICAicmVuZGVyVGFyZ2V0IjogImFsd2F5cyIsCisgICAgICAicmVuZGVyVGFyZ2V0
IjogIjEwXzAiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAotICAgICAgImRlcHRo
U3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAg
Im1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfUjhHOEI4QThf
U05PUk0iOgogICAgIHsKQEAgLTMxNSwyMCArMzQ2LDIyIEBACiAgICAgICAidGV4dHVyZTJEIjog
ImFsd2F5cyIsCiAgICAgICAidGV4dHVyZTNEIjogImFsd2F5cyIsCiAgICAgICAidGV4dHVyZUN1
YmUiOiAiYWx3YXlzIiwKLSAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTBfMCIsCisgICAgICAic2hh
ZGVyU2FtcGxlIjogImFsd2F5cyIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogImFsd2F5cyIsCiAg
ICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5l
dmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6
ICIxMF8wIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1I4RzhCOEE4X1NJTlQiOgogICAgIHsK
LSAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlz
IiwKLSAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUyRCI6ICIx
MF8wIiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAiMTBfMCIsCisgICAgICAidGV4dHVyZUN1YmUiOiAi
MTBfMCIsCiAgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKLSAgICAgICJyZW5kZXJUYXJn
ZXQiOiAiYWx3YXlzIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAiMTBfMCIsCiAgICAgICAibXVs
dGlzYW1wbGVSVCI6ICJjaGVjayIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAg
ICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIK
ICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9SMTZHMTZfVFlQRUxFU1MiOgogICAgIHsKQEAgLTMz
OCw3ICszNzEsOCBAQAogICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCiAgICAgICAicmVu
ZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKLSAg
ICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVy
IiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFU
X1IxNkcxNl9GTE9BVCI6CiAgICAgewpAQCAtMzQ4LDcgKzM4Miw4IEBACiAgICAgICAic2hhZGVy
U2FtcGxlIjogIjEwXzAiLAogICAgICAgInJlbmRlclRhcmdldCI6ICJhbHdheXMiLAogICAgICAg
Im11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIK
KyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAiYWx3
YXlzIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1IxNkcxNl9VTk9STSI6CiAgICAgewpAQCAt
MzU1LDIwICszOTAsMjIgQEAKICAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKICAgICAgICJ0
ZXh0dXJlM0QiOiAiYWx3YXlzIiwKICAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAotICAg
ICAgInNoYWRlclNhbXBsZSI6ICIxMF8wIiwKKyAgICAgICJzaGFkZXJTYW1wbGUiOiAiYWx3YXlz
IiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAiYWx3YXlzIiwKICAgICAgICJtdWx0aXNhbXBsZVJU
IjogImNoZWNrIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhT
dGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogImFsd2F5cyIKICAgICB9LAog
ICAgICJEWEdJX0ZPUk1BVF9SMTZHMTZfVUlOVCI6CiAgICAgewotICAgICAgInRleHR1cmUyRCI6
ICJhbHdheXMiLAotICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAotICAgICAgInRleHR1cmVD
dWJlIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZTJEIjogIjEwXzAiLAorICAgICAgInRleHR1
cmUzRCI6ICIxMF8wIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICIxMF8wIiwKICAgICAgICJzaGFk
ZXJTYW1wbGUiOiAibmV2ZXIiLAotICAgICAgInJlbmRlclRhcmdldCI6ICJhbHdheXMiLAorICAg
ICAgInJlbmRlclRhcmdldCI6ICIxMF8wIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNr
IiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjog
Im5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lf
Rk9STUFUX1IxNkcxNl9TTk9STSI6CiAgICAgewpAQCAtMzc1LDMwICs0MTIsMzMgQEAKICAgICAg
ICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKICAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKICAg
ICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAotICAgICAgInNoYWRlclNhbXBsZSI6ICIxMF8w
IiwKKyAgICAgICJzaGFkZXJTYW1wbGUiOiAiYWx3YXlzIiwKICAgICAgICJyZW5kZXJUYXJnZXQi
OiAiYWx3YXlzIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwKLSAgICAgICJkZXB0
aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAg
ICJtaXBBdXRvR2VuIjogIjEwXzAiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfUjE2RzE2X1NJ
TlQiOgogICAgIHsKLSAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0dXJl
M0QiOiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAorICAgICAgInRl
eHR1cmUyRCI6ICIxMF8wIiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAiMTBfMCIsCisgICAgICAidGV4
dHVyZUN1YmUiOiAiMTBfMCIsCiAgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKLSAgICAg
ICJyZW5kZXJUYXJnZXQiOiAiYWx3YXlzIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAiMTBfMCIs
CiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjog
Im5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dl
biI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9SMzJfVFlQRUxFU1MiOgogICAg
IHsKLSAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3
YXlzIiwKLSAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUyRCI6
ICIxMF8wIiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAiMTBfMCIsCisgICAgICAidGV4dHVyZUN1YmUi
OiAiMTBfMCIsCiAgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKICAgICAgICJyZW5kZXJU
YXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAotICAgICAg
ImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAor
ICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfRDMy
X0ZMT0FUIjoKICAgICB7CkBAIC00MDgsNyArNDQ4LDggQEAKICAgICAgICJzaGFkZXJTYW1wbGUi
OiAibmV2ZXIiLAogICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIsCiAgICAgICAibXVsdGlz
YW1wbGVSVCI6ICJjaGVjayIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogImFsd2F5cyIKKyAgICAg
ICJkZXB0aFN0ZW5jaWwiOiAiMTBfMCIsCisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAg
ICB9LAogICAgICJEWEdJX0ZPUk1BVF9SMzJfRkxPQVQiOgogICAgIHsKQEAgLTQxOCwyNyArNDU5
LDMwIEBACiAgICAgICAic2hhZGVyU2FtcGxlIjogIjEwXzBjaGVjazEwXzFhbHdheXMiLAogICAg
ICAgInJlbmRlclRhcmdldCI6ICJhbHdheXMiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hl
Y2siLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwi
OiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAiYWx3YXlzIgogICAgIH0sCiAgICAgIkRY
R0lfRk9STUFUX1IzMl9VSU5UIjoKICAgICB7Ci0gICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIs
Ci0gICAgICAidGV4dHVyZTNEIjogImFsd2F5cyIsCi0gICAgICAidGV4dHVyZUN1YmUiOiAiYWx3
YXlzIiwKKyAgICAgICJ0ZXh0dXJlMkQiOiAiMTBfMCIsCisgICAgICAidGV4dHVyZTNEIjogIjEw
XzAiLAorICAgICAgInRleHR1cmVDdWJlIjogIjEwXzAiLAogICAgICAgInNoYWRlclNhbXBsZSI6
ICJuZXZlciIsCi0gICAgICAicmVuZGVyVGFyZ2V0IjogImFsd2F5cyIsCisgICAgICAicmVuZGVy
VGFyZ2V0IjogIjEwXzAiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAotICAgICAg
ImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAor
ICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfUjMy
X1NJTlQiOgogICAgIHsKLSAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0
dXJlM0QiOiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAorICAgICAg
InRleHR1cmUyRCI6ICIxMF8wIiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAiMTBfMCIsCisgICAgICAi
dGV4dHVyZUN1YmUiOiAiMTBfMCIsCiAgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKLSAg
ICAgICJyZW5kZXJUYXJnZXQiOiAiYWx3YXlzIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAiMTBf
MCIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCi0gICAgICAiZGVwdGhTdGVuY2ls
IjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0
b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9SMjRHOF9UWVBFTEVTUyI6
CiAgICAgewpAQCAtNDQ4LDcgKzQ5Miw4IEBACiAgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVy
IiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRpc2FtcGxlUlQi
OiAibmV2ZXIiLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0
ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAg
ICAiRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQiOgogICAgIHsKQEAgLTQ2OCw3ICs1MTMs
OCBAQAogICAgICAgInNoYWRlclNhbXBsZSI6ICIxMF8wY2hlY2sxMF8xYWx3YXlzIiwKICAgICAg
ICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIi
LAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAi
bmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9G
T1JNQVRfWDI0X1RZUEVMRVNTX0c4X1VJTlQiOgogICAgIHsKQEAgLTQ3OCw3ICs1MjQsOCBAQAog
ICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5l
dmVyIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKLSAgICAgICJkZXB0aFN0ZW5j
aWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBB
dXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1I4RzhfVFlQRUxFU1Mi
OgogICAgIHsKQEAgLTQ4OCw0NyArNTM1LDUyIEBACiAgICAgICAic2hhZGVyU2FtcGxlIjogIm5l
dmVyIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRpc2FtcGxl
UlQiOiAibmV2ZXIiLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0
aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwK
ICAgICAiRFhHSV9GT1JNQVRfUjhHOF9VTk9STSI6CiAgICAgewotICAgICAgInRleHR1cmUyRCI6
ICJhbHdheXMiLAotICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAotICAgICAgInRleHR1cmVD
dWJlIjogImFsd2F5cyIsCi0gICAgICAic2hhZGVyU2FtcGxlIjogIjEwXzAiLAotICAgICAgInJl
bmRlclRhcmdldCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUyRCI6ICIxMF8wIiwKKyAgICAg
ICJ0ZXh0dXJlM0QiOiAiMTBfMCIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiMTBfMCIsCisgICAg
ICAic2hhZGVyU2FtcGxlIjogIjlfM2NoZWNrXzEwXzBhbHdheXMiLAorICAgICAgInJlbmRlclRh
cmdldCI6ICI5XzNjaGVja18xMF8wYWx3YXlzIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogImNo
ZWNrIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2ls
IjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIjEwXzAiCiAgICAgfSwKICAgICAiRFhH
SV9GT1JNQVRfUjhHOF9VSU5UIjoKICAgICB7Ci0gICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIs
Ci0gICAgICAidGV4dHVyZTNEIjogImFsd2F5cyIsCi0gICAgICAidGV4dHVyZUN1YmUiOiAiYWx3
YXlzIiwKKyAgICAgICJ0ZXh0dXJlMkQiOiAiMTBfMCIsCisgICAgICAidGV4dHVyZTNEIjogIjEw
XzAiLAorICAgICAgInRleHR1cmVDdWJlIjogIjEwXzAiLAogICAgICAgInNoYWRlclNhbXBsZSI6
ICJuZXZlciIsCi0gICAgICAicmVuZGVyVGFyZ2V0IjogImFsd2F5cyIsCisgICAgICAicmVuZGVy
VGFyZ2V0IjogIjEwXzAiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAotICAgICAg
ImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAor
ICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfUjhH
OF9TTk9STSI6CiAgICAgewogICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAotICAgICAgInRl
eHR1cmUzRCI6ICJhbHdheXMiLAotICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIsCi0gICAg
ICAic2hhZGVyU2FtcGxlIjogIjEwXzAiLAotICAgICAgInJlbmRlclRhcmdldCI6ICJhbHdheXMi
LAorICAgICAgInRleHR1cmUzRCI6ICIxMF8wIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICIxMF8w
IiwKKyAgICAgICJzaGFkZXJTYW1wbGUiOiAiYWx3YXlzIiwKKyAgICAgICJyZW5kZXJUYXJnZXQi
OiAiMTBfMCIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCi0gICAgICAiZGVwdGhT
dGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAi
bWlwQXV0b0dlbiI6ICIxMF8wIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1I4RzhfU0lOVCI6
CiAgICAgewotICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAotICAgICAgInRleHR1cmUzRCI6
ICJhbHdheXMiLAotICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAidGV4dHVy
ZTJEIjogIjEwXzAiLAorICAgICAgInRleHR1cmUzRCI6ICIxMF8wIiwKKyAgICAgICJ0ZXh0dXJl
Q3ViZSI6ICIxMF8wIiwKICAgICAgICJzaGFkZXJTYW1wbGUiOiAibmV2ZXIiLAotICAgICAgInJl
bmRlclRhcmdldCI6ICJhbHdheXMiLAorICAgICAgInJlbmRlclRhcmdldCI6ICIxMF8wIiwKICAg
ICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2
ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjog
Im5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1IxNl9UWVBFTEVTUyI6CiAgICAgewpA
QCAtNTM4LDE3ICs1OTAsMTkgQEAKICAgICAgICJzaGFkZXJTYW1wbGUiOiAibmV2ZXIiLAogICAg
ICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZl
ciIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6
ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJ
X0ZPUk1BVF9SMTZfRkxPQVQiOgogICAgIHsKLSAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwK
LSAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdh
eXMiLAorICAgICAgInRleHR1cmUyRCI6ICIxMF8wIiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAiMTBf
MCIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiMTBfMCIsCiAgICAgICAic2hhZGVyU2FtcGxlIjog
IjEwXzAiLAotICAgICAgInJlbmRlclRhcmdldCI6ICJhbHdheXMiLAorICAgICAgInJlbmRlclRh
cmdldCI6ICIxMF8wIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwKLSAgICAgICJk
ZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAg
ICAgICJtaXBBdXRvR2VuIjogIjEwXzAiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfRDE2X1VO
T1JNIjoKICAgICB7CkBAIC01NTgsNyArNjEyLDggQEAKICAgICAgICJzaGFkZXJTYW1wbGUiOiAi
bmV2ZXIiLAogICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIsCiAgICAgICAibXVsdGlzYW1w
bGVSVCI6ICJjaGVjayIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogImFsd2F5cyIKKyAgICAgICJk
ZXB0aFN0ZW5jaWwiOiAiYWx3YXlzIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAg
IH0sCiAgICAgIkRYR0lfRk9STUFUX1IxNl9VTk9STSI6CiAgICAgewpAQCAtNTY1LDQwICs2MjAs
NDQgQEAKICAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKICAgICAgICJ0ZXh0dXJlM0QiOiAi
YWx3YXlzIiwKICAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAotICAgICAgInNoYWRlclNh
bXBsZSI6ICIxMF8wIiwKLSAgICAgICJyZW5kZXJUYXJnZXQiOiAiYWx3YXlzIiwKKyAgICAgICJz
aGFkZXJTYW1wbGUiOiAiYWx3YXlzIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAiMTBfMCIsCiAg
ICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5l
dmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6
ICIxMF8wIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1IxNl9VSU5UIjoKICAgICB7Ci0gICAg
ICAidGV4dHVyZTJEIjogImFsd2F5cyIsCi0gICAgICAidGV4dHVyZTNEIjogImFsd2F5cyIsCi0g
ICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlMkQiOiAiMTBfMCIs
CisgICAgICAidGV4dHVyZTNEIjogIjEwXzAiLAorICAgICAgInRleHR1cmVDdWJlIjogIjEwXzAi
LAogICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCi0gICAgICAicmVuZGVyVGFyZ2V0Ijog
ImFsd2F5cyIsCisgICAgICAicmVuZGVyVGFyZ2V0IjogIjEwXzAiLAogICAgICAgIm11bHRpc2Ft
cGxlUlQiOiAiY2hlY2siLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJk
ZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAg
fSwKICAgICAiRFhHSV9GT1JNQVRfUjE2X1NOT1JNIjoKICAgICB7Ci0gICAgICAidGV4dHVyZTJE
IjogImFsd2F5cyIsCi0gICAgICAidGV4dHVyZTNEIjogImFsd2F5cyIsCi0gICAgICAidGV4dHVy
ZUN1YmUiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlMkQiOiAiMTBfMCIsCisgICAgICAidGV4
dHVyZTNEIjogIjEwXzAiLAorICAgICAgInRleHR1cmVDdWJlIjogIjEwXzAiLAogICAgICAgInNo
YWRlclNhbXBsZSI6ICIxMF8wIiwKLSAgICAgICJyZW5kZXJUYXJnZXQiOiAiYWx3YXlzIiwKKyAg
ICAgICJyZW5kZXJUYXJnZXQiOiAiMTBfMCIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVj
ayIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6
ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICIxMF8wIgogICAgIH0sCiAgICAgIkRYR0lf
Rk9STUFUX1IxNl9TSU5UIjoKICAgICB7Ci0gICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCi0g
ICAgICAidGV4dHVyZTNEIjogImFsd2F5cyIsCi0gICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlz
IiwKKyAgICAgICJ0ZXh0dXJlMkQiOiAiMTBfMCIsCisgICAgICAidGV4dHVyZTNEIjogIjEwXzAi
LAorICAgICAgInRleHR1cmVDdWJlIjogIjEwXzAiLAogICAgICAgInNoYWRlclNhbXBsZSI6ICJu
ZXZlciIsCi0gICAgICAicmVuZGVyVGFyZ2V0IjogImFsd2F5cyIsCisgICAgICAicmVuZGVyVGFy
Z2V0IjogIjEwXzAiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAotICAgICAgImRl
cHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAg
ICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfUjhfVFlQ
RUxFU1MiOgogICAgIHsKQEAgLTYwOCw3ICs2NjcsOCBAQAogICAgICAgInNoYWRlclNhbXBsZSI6
ICJuZXZlciIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0aXNh
bXBsZVJUIjogIm5ldmVyIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAi
ZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAg
IH0sCiAgICAgIkRYR0lfRk9STUFUX1I4X1VOT1JNIjoKICAgICB7CkBAIC02MTUsNDAgKzY3NSw0
NCBAQAogICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAogICAgICAgInRleHR1cmUzRCI6ICJh
bHdheXMiLAogICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIsCi0gICAgICAic2hhZGVyU2Ft
cGxlIjogIjEwXzAiLAotICAgICAgInJlbmRlclRhcmdldCI6ICJhbHdheXMiLAorICAgICAgInNo
YWRlclNhbXBsZSI6ICJhbHdheXMiLAorICAgICAgInJlbmRlclRhcmdldCI6ICI5XzNjaGVja18x
MF8wYWx3YXlzIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwKLSAgICAgICJkZXB0
aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAg
ICJtaXBBdXRvR2VuIjogIjEwXzAiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfUjhfVUlOVCI6
CiAgICAgewotICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAotICAgICAgInRleHR1cmUzRCI6
ICJhbHdheXMiLAotICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAidGV4dHVy
ZTJEIjogIjEwXzAiLAorICAgICAgInRleHR1cmUzRCI6ICIxMF8wIiwKKyAgICAgICJ0ZXh0dXJl
Q3ViZSI6ICIxMF8wIiwKICAgICAgICJzaGFkZXJTYW1wbGUiOiAibmV2ZXIiLAotICAgICAgInJl
bmRlclRhcmdldCI6ICJhbHdheXMiLAorICAgICAgInJlbmRlclRhcmdldCI6ICIxMF8wIiwKICAg
ICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2
ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjog
Im5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX1I4X1NOT1JNIjoKICAgICB7Ci0gICAg
ICAidGV4dHVyZTJEIjogImFsd2F5cyIsCi0gICAgICAidGV4dHVyZTNEIjogImFsd2F5cyIsCi0g
ICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlMkQiOiAiMTBfMCIs
CisgICAgICAidGV4dHVyZTNEIjogIjEwXzAiLAorICAgICAgInRleHR1cmVDdWJlIjogIjEwXzAi
LAogICAgICAgInNoYWRlclNhbXBsZSI6ICIxMF8wIiwKLSAgICAgICJyZW5kZXJUYXJnZXQiOiAi
YWx3YXlzIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAiMTBfMCIsCiAgICAgICAibXVsdGlzYW1w
bGVSVCI6ICJjaGVjayIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRl
cHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICIxMF8wIgogICAgIH0s
CiAgICAgIkRYR0lfRk9STUFUX1I4X1NJTlQiOgogICAgIHsKLSAgICAgICJ0ZXh0dXJlMkQiOiAi
YWx3YXlzIiwKLSAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0dXJlQ3Vi
ZSI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUyRCI6ICIxMF8wIiwKKyAgICAgICJ0ZXh0dXJl
M0QiOiAiMTBfMCIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiMTBfMCIsCiAgICAgICAic2hhZGVy
U2FtcGxlIjogIm5ldmVyIiwKLSAgICAgICJyZW5kZXJUYXJnZXQiOiAiYWx3YXlzIiwKKyAgICAg
ICJyZW5kZXJUYXJnZXQiOiAiMTBfMCIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIs
Ci0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJu
ZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZP
Uk1BVF9BOF9VTk9STSI6CiAgICAgewpAQCAtNjU4LDcgKzcyMiw4IEBACiAgICAgICAic2hhZGVy
U2FtcGxlIjogIjEwXzAiLAogICAgICAgInJlbmRlclRhcmdldCI6ICJhbHdheXMiLAogICAgICAg
Im11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIK
KyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAiMTBf
MCIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9SMV9VTk9STSI6CiAgICAgewpAQCAtNjY4LDE3
ICs3MzMsMTkgQEAKICAgICAgICJzaGFkZXJTYW1wbGUiOiAibmV2ZXIiLAogICAgICAgInJlbmRl
clRhcmdldCI6ICJuZXZlciIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIsCi0gICAg
ICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIs
CisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9S
OUc5QjlFNV9TSEFSRURFWFAiOgogICAgIHsKLSAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwK
LSAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdh
eXMiLAorICAgICAgInRleHR1cmUyRCI6ICIxMF8wIiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAiMTBf
MCIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiMTBfMCIsCiAgICAgICAic2hhZGVyU2FtcGxlIjog
IjEwXzAiLAogICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIsCiAgICAgICAibXVsdGlzYW1w
bGVSVCI6ICJuZXZlciIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRl
cHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9
LAogICAgICJEWEdJX0ZPUk1BVF9SOEc4X0I4RzhfVU5PUk0iOgogICAgIHsKQEAgLTY4OCw3ICs3
NTUsOCBAQAogICAgICAgInNoYWRlclNhbXBsZSI6ICIxMF8wIiwKICAgICAgICJyZW5kZXJUYXJn
ZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAotICAgICAgImRl
cHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAg
ICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfRzhSOF9H
OEI4X1VOT1JNIjoKICAgICB7CkBAIC02OTgsNyArNzY2LDggQEAKICAgICAgICJzaGFkZXJTYW1w
bGUiOiAiMTBfMCIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0
aXNhbXBsZVJUIjogIm5ldmVyIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAg
ICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgog
ICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX0JDMV9UWVBFTEVTUyI6CiAgICAgewpAQCAtNzA4LDcg
Kzc3Nyw4IEBACiAgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKICAgICAgICJyZW5kZXJU
YXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAotICAgICAg
ImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAor
ICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfQkMx
X1VOT1JNIjoKICAgICB7CkBAIC03MTUsMTAgKzc4NSwxMSBAQAogICAgICAgInRleHR1cmUyRCI6
ICJhbHdheXMiLAogICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAogICAgICAgInRleHR1cmVD
dWJlIjogImFsd2F5cyIsCi0gICAgICAic2hhZGVyU2FtcGxlIjogIjEwXzAiLAorICAgICAgInNo
YWRlclNhbXBsZSI6ICJhbHdheXMiLAogICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIsCiAg
ICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5l
dmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6
ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9CQzFfVU5PUk1fU1JHQiI6CiAgICAg
ewpAQCAtNzI4LDcgKzc5OSw4IEBACiAgICAgICAic2hhZGVyU2FtcGxlIjogIjEwXzAiLAogICAg
ICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZl
ciIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6
ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJ
X0ZPUk1BVF9CQzJfVFlQRUxFU1MiOgogICAgIHsKQEAgLTczOCw3ICs4MTAsOCBAQAogICAgICAg
InNoYWRlclNhbXBsZSI6ICJuZXZlciIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwK
ICAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAi
bmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2Vu
IjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX0JDMl9VTk9STSI6CiAgICAgewpA
QCAtNzQ1LDEwICs4MTgsMTEgQEAKICAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKICAgICAg
ICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKICAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAot
ICAgICAgInNoYWRlclNhbXBsZSI6ICIxMF8wIiwKKyAgICAgICJzaGFkZXJTYW1wbGUiOiAiYWx3
YXlzIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRpc2FtcGxl
UlQiOiAibmV2ZXIiLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0
aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwK
ICAgICAiRFhHSV9GT1JNQVRfQkMyX1VOT1JNX1NSR0IiOgogICAgIHsKQEAgLTc1OCw3ICs4MzIs
OCBAQAogICAgICAgInNoYWRlclNhbXBsZSI6ICIxMF8wIiwKICAgICAgICJyZW5kZXJUYXJnZXQi
OiAibmV2ZXIiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAotICAgICAgImRlcHRo
U3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAg
Im1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfQkMzX1RZUEVM
RVNTIjoKICAgICB7CkBAIC03NjgsNyArODQzLDggQEAKICAgICAgICJzaGFkZXJTYW1wbGUiOiAi
bmV2ZXIiLAogICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIsCiAgICAgICAibXVsdGlzYW1w
bGVSVCI6ICJuZXZlciIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRl
cHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9
LAogICAgICJEWEdJX0ZPUk1BVF9CQzNfVU5PUk0iOgogICAgIHsKQEAgLTc3NSwxMCArODUxLDEx
IEBACiAgICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCiAgICAgICAidGV4dHVyZTNEIjogImFs
d2F5cyIsCiAgICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKLSAgICAgICJzaGFkZXJTYW1w
bGUiOiAiMTBfMCIsCisgICAgICAic2hhZGVyU2FtcGxlIjogImFsd2F5cyIsCiAgICAgICAicmVu
ZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKLSAg
ICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVy
IiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFU
X0JDM19VTk9STV9TUkdCIjoKICAgICB7CkBAIC03ODgsNyArODY1LDggQEAKICAgICAgICJzaGFk
ZXJTYW1wbGUiOiAiMTBfMCIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAg
ICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIi
CisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5l
dmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX0JDNF9UWVBFTEVTUyI6CiAgICAgewpAQCAt
Nzk4LDcgKzg3Niw4IEBACiAgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKICAgICAgICJy
ZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAot
ICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2
ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JN
QVRfQkM0X1VOT1JNIjoKICAgICB7CkBAIC04MDgsNyArODg3LDggQEAKICAgICAgICJzaGFkZXJT
YW1wbGUiOiAiMTBfMCIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJt
dWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisg
ICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVy
IgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX0JDNF9TTk9STSI6CiAgICAgewpAQCAtODE4LDcg
Kzg5OCw4IEBACiAgICAgICAic2hhZGVyU2FtcGxlIjogIjEwXzAiLAogICAgICAgInJlbmRlclRh
cmdldCI6ICJuZXZlciIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIsCi0gICAgICAi
ZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisg
ICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9CQzVf
VFlQRUxFU1MiOgogICAgIHsKQEAgLTgyOCw3ICs5MDksOCBAQAogICAgICAgInNoYWRlclNhbXBs
ZSI6ICJuZXZlciIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0
aXNhbXBsZVJUIjogIm5ldmVyIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAg
ICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgog
ICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX0JDNV9VTk9STSI6CiAgICAgewpAQCAtODM4LDcgKzky
MCw4IEBACiAgICAgICAic2hhZGVyU2FtcGxlIjogIjEwXzAiLAogICAgICAgInJlbmRlclRhcmdl
dCI6ICJuZXZlciIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIsCi0gICAgICAiZGVw
dGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAg
ICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9CQzVfU05P
Uk0iOgogICAgIHsKQEAgLTg0OCw3ICs5MzEsOCBAQAogICAgICAgInNoYWRlclNhbXBsZSI6ICIx
MF8wIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRpc2FtcGxl
UlQiOiAibmV2ZXIiLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0
aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwK
ICAgICAiRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNIjoKICAgICB7CkBAIC04NTgsNyArOTQyLDgg
QEAKICAgICAgICJzaGFkZXJTYW1wbGUiOiAiZHhnaTFfMiIsCiAgICAgICAicmVuZGVyVGFyZ2V0
IjogImR4Z2kxXzIiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAotICAgICAgImRl
cHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAg
ICAgIm1pcEF1dG9HZW4iOiAiZHhnaTFfMiIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9CNUc1
UjVBMV9VTk9STSI6CiAgICAgewpAQCAtODY4LDcgKzk1Myw4IEBACiAgICAgICAic2hhZGVyU2Ft
cGxlIjogImR4Z2kxXzIiLAogICAgICAgInJlbmRlclRhcmdldCI6ICJjaGVjayIsCiAgICAgICAi
bXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgor
ICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJkeGdp
MV8yIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNIjoKICAgICB7CkBA
IC04NzUsMTAgKzk2MSwxMSBAQAogICAgICAgInRleHR1cmUyRCI6ICJjaGVjayIsCiAgICAgICAi
dGV4dHVyZTNEIjogImNoZWNrIiwKICAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJjaGVjayIsCi0gICAg
ICAic2hhZGVyU2FtcGxlIjogIjEwXzBjaGVjazExXzBhbHdheXMiLAotICAgICAgInJlbmRlclRh
cmdldCI6ICIxMF8wY2hlY2sxMV8wYWx3YXlzIiwKKyAgICAgICJzaGFkZXJTYW1wbGUiOiAiOV8z
YWx3YXlzXzEwXzBjaGVjazExXzBhbHdheXMiLAorICAgICAgInJlbmRlclRhcmdldCI6ICI5XzNh
bHdheXNfMTBfMGNoZWNrMTFfMGFsd2F5cyIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVj
ayIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6
ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJhbHdheXMiCiAgICAgfSwKICAgICAiRFhH
SV9GT1JNQVRfQjhHOFI4WDhfVU5PUk0iOgogICAgIHsKQEAgLTg4OCw3ICs5NzUsOCBAQAogICAg
ICAgInNoYWRlclNhbXBsZSI6ICIxMF8wY2hlY2sxMV8wYWx3YXlzIiwKICAgICAgICJyZW5kZXJU
YXJnZXQiOiAiMTFfMCIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCi0gICAgICAi
ZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisg
ICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9SMTBH
MTBCMTBfWFJfQklBU19BMl9VTk9STSI6CiAgICAgewpAQCAtODk4LDcgKzk4Niw4IEBACiAgICAg
ICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIi
LAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAotICAgICAgImRlcHRoU3RlbmNpbCI6
ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9H
ZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfQjhHOFI4QThfVFlQRUxFU1Mi
OgogICAgIHsKQEAgLTkwOCw3ICs5OTcsOCBAQAogICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZl
ciIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0aXNhbXBsZVJU
IjogIm5ldmVyIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhT
dGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAg
ICAgIkRYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNX1NSR0IiOgogICAgIHsKQEAgLTkxOCw3ICsx
MDA4LDggQEAKICAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTBfMGNoZWNrMTFfMGFsd2F5cyIsCiAg
ICAgICAicmVuZGVyVGFyZ2V0IjogIjExXzAiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hl
Y2siLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwi
OiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhH
SV9GT1JNQVRfQjhHOFI4WDhfVFlQRUxFU1MiOgogICAgIHsKQEAgLTkyOCw3ICsxMDE5LDggQEAK
ICAgICAgICJzaGFkZXJTYW1wbGUiOiAibmV2ZXIiLAogICAgICAgInJlbmRlclRhcmdldCI6ICJu
ZXZlciIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIsCi0gICAgICAiZGVwdGhTdGVu
Y2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlw
QXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9COEc4UjhYOF9VTk9S
TV9TUkdCIjoKICAgICB7CkBAIC05MzgsNyArMTAzMCw4IEBACiAgICAgICAic2hhZGVyU2FtcGxl
IjogIjEwXzBjaGVjazExXzBhbHdheXMiLAogICAgICAgInJlbmRlclRhcmdldCI6ICIxMV8wIiwK
ICAgICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAi
bmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2Vu
IjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX0JDNkhfVFlQRUxFU1MiOgogICAg
IHsKQEAgLTk0OCw3ICsxMDQxLDggQEAKICAgICAgICJzaGFkZXJTYW1wbGUiOiAibmV2ZXIiLAog
ICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJu
ZXZlciIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNp
bCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJE
WEdJX0ZPUk1BVF9CQzZIX1VGMTYiOgogICAgIHsKQEAgLTk1OCw3ICsxMDUyLDggQEAKICAgICAg
ICJzaGFkZXJTYW1wbGUiOiAiMTFfMCIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwK
ICAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAi
bmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2Vu
IjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX0JDNkhfU0YxNiI6CiAgICAgewpA
QCAtOTY4LDcgKzEwNjMsOCBAQAogICAgICAgInNoYWRlclNhbXBsZSI6ICIxMV8wIiwKICAgICAg
ICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIi
LAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAi
bmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9G
T1JNQVRfQkM3X1RZUEVMRVNTIjoKICAgICB7CkBAIC05NzgsNyArMTA3NCw4IEBACiAgICAgICAi
c2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAog
ICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJu
ZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4i
OiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfQkM3X1VOT1JNIjoKICAgICB7CkBA
IC05ODgsNyArMTA4NSw4IEBACiAgICAgICAic2hhZGVyU2FtcGxlIjogIjExXzAiLAogICAgICAg
InJlbmRlclRhcmdldCI6ICJuZXZlciIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIs
Ci0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJu
ZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZP
Uk1BVF9CQzdfVU5PUk1fU1JHQiI6CiAgICAgewpAQCAtOTk4LDcgKzEwOTYsOCBAQAogICAgICAg
InNoYWRlclNhbXBsZSI6ICIxMV8wIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAog
ICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJu
ZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4i
OiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfQVlVViI6CiAgICAgewpAQCAtMTAw
OCw3ICsxMTA3LDggQEAKICAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTFfMSIsCiAgICAgICAicmVu
ZGVyVGFyZ2V0IjogIjExXzEiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAotICAg
ICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIi
LAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRf
WTQxMCI6CiAgICAgewpAQCAtMTAxOCw3ICsxMTE4LDggQEAKICAgICAgICJzaGFkZXJTYW1wbGUi
OiAiMTFfMSIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0aXNh
bXBsZVJUIjogIm5ldmVyIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAi
ZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAg
IH0sCiAgICAgIkRYR0lfRk9STUFUX1k0MTYiOgogICAgIHsKQEAgLTEwMjgsNyArMTEyOSw4IEBA
CiAgICAgICAic2hhZGVyU2FtcGxlIjogIjExXzEiLAogICAgICAgInJlbmRlclRhcmdldCI6ICJu
ZXZlciIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIsCi0gICAgICAiZGVwdGhTdGVu
Y2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlw
QXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9OVjEyIjoKICAgICB7
CkBAIC0xMDM4LDcgKzExNDAsOCBAQAogICAgICAgInNoYWRlclNhbXBsZSI6ICIxMV8xIiwKICAg
ICAgICJyZW5kZXJUYXJnZXQiOiAiMTFfMSIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVj
ayIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6
ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJ
X0ZPUk1BVF9QMDEwIjoKICAgICB7CkBAIC0xMDQ4LDcgKzExNTEsOCBAQAogICAgICAgInNoYWRl
clNhbXBsZSI6ICIxMV8xIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAiMTFfMSIsCiAgICAgICAi
bXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCi0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgor
ICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZl
ciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9QMDE2IjoKICAgICB7CkBAIC0xMDU4LDcgKzEx
NjIsOCBAQAogICAgICAgInNoYWRlclNhbXBsZSI6ICIxMV8xIiwKICAgICAgICJyZW5kZXJUYXJn
ZXQiOiAiMTFfMSIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCi0gICAgICAiZGVw
dGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAg
ICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF80MjBfT1BB
UVVFIjoKICAgICB7CkBAIC0xMDY4LDcgKzExNzMsOCBAQAogICAgICAgInNoYWRlclNhbXBsZSI6
ICJuZXZlciIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0aXNh
bXBsZVJUIjogIm5ldmVyIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAi
ZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAg
IH0sCiAgICAgIkRYR0lfRk9STUFUX1lVWTIiOgogICAgIHsKQEAgLTEwNzgsNyArMTE4NCw4IEBA
CiAgICAgICAic2hhZGVyU2FtcGxlIjogIjExXzEiLAogICAgICAgInJlbmRlclRhcmdldCI6ICJu
ZXZlciIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIsCi0gICAgICAiZGVwdGhTdGVu
Y2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlw
QXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9ZMjEwIjoKICAgICB7
CkBAIC0xMDg4LDcgKzExOTUsOCBAQAogICAgICAgInNoYWRlclNhbXBsZSI6ICIxMV8xIiwKICAg
ICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2
ZXIiLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwi
OiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwKICAgICAiRFhH
SV9GT1JNQVRfWTIxNiI6CiAgICAgewpAQCAtMTA5OCw3ICsxMjA2LDggQEAKICAgICAgICJzaGFk
ZXJTYW1wbGUiOiAiMTFfMSIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAg
ICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIi
CisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5l
dmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX05WMTEiOgogICAgIHsKQEAgLTExMDgsNyAr
MTIxNyw4IEBACiAgICAgICAic2hhZGVyU2FtcGxlIjogIjExXzEiLAogICAgICAgInJlbmRlclRh
cmdldCI6ICIxMV8xIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwKLSAgICAgICJk
ZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAg
ICAgICJtaXBBdXRvR2VuIjogIm5ldmVyIgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX0FJNDQi
OgogICAgIHsKQEAgLTExMTgsNyArMTIyOCw4IEBACiAgICAgICAic2hhZGVyU2FtcGxlIjogIm5l
dmVyIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRpc2FtcGxl
UlQiOiAibmV2ZXIiLAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0
aFN0ZW5jaWwiOiAibmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAibmV2ZXIiCiAgICAgfSwK
ICAgICAiRFhHSV9GT1JNQVRfSUE0NCI6CiAgICAgewpAQCAtMTEyOCw3ICsxMjM5LDggQEAKICAg
ICAgICJzaGFkZXJTYW1wbGUiOiAibmV2ZXIiLAogICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZl
ciIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIsCi0gICAgICAiZGVwdGhTdGVuY2ls
IjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCisgICAgICAibWlwQXV0
b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9QOCI6CiAgICAgewpAQCAt
MTEzOCw3ICsxMjUwLDggQEAKICAgICAgICJzaGFkZXJTYW1wbGUiOiAibmV2ZXIiLAogICAgICAg
InJlbmRlclRhcmdldCI6ICJuZXZlciIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIs
Ci0gICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgICAgImRlcHRoU3RlbmNpbCI6ICJu
ZXZlciIsCisgICAgICAibWlwQXV0b0dlbiI6ICJuZXZlciIKICAgICB9LAogICAgICJEWEdJX0ZP
Uk1BVF9BOFA4IjoKICAgICB7CkBAIC0xMTQ4LDcgKzEyNjEsOCBAQAogICAgICAgInNoYWRlclNh
bXBsZSI6ICJuZXZlciIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJt
dWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKLSAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisg
ICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIiwKKyAgICAgICJtaXBBdXRvR2VuIjogIm5ldmVy
IgogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX0I0RzRSNEE0X1VOT1JNIjoKICAgICB7CkBAIC0x
MTU4LDcgKzEyNzIsOCBAQAogICAgICAgInNoYWRlclNhbXBsZSI6ICJkeGdpMV8yIiwKICAgICAg
ICJyZW5kZXJUYXJnZXQiOiAiY2hlY2siLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2si
LAotICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAi
bmV2ZXIiLAorICAgICAgIm1pcEF1dG9HZW4iOiAiZHhnaTFfMiIKICAgICB9CiAgIH0KIF0KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvZHhnaV9zdXBwb3J0X3RhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfc3VwcG9ydF90YWJs
ZS5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9zdXBwb3J0X3RhYmxlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2RlZmluZSBGX1JUIEQzRDExX0ZPUk1BVF9TVVBQ
T1JUX1JFTkRFUl9UQVJHRVQKICNkZWZpbmUgRl9NUyBEM0QxMV9GT1JNQVRfU1VQUE9SVF9NVUxU
SVNBTVBMRV9SRU5ERVJUQVJHRVQKICNkZWZpbmUgRl9EUyBEM0QxMV9GT1JNQVRfU1VQUE9SVF9E
RVBUSF9TVEVOQ0lMCisjZGVmaW5lIEZfTUlQR0VOIEQzRDExX0ZPUk1BVF9TVVBQT1JUX01JUF9B
VVRPR0VOCiAKIG5hbWVzcGFjZQogewpAQCAtMzIsMTk5ICszMywxOTggQEAKIAogY29uc3QgRFhH
SVN1cHBvcnQgJkdldERlZmF1bHRTdXBwb3J0KCkKIHsKLSAgICBzdGF0aWMgVUlOVCBBbGxTdXBw
b3J0RmxhZ3MgPSBEM0QxMV9GT1JNQVRfU1VQUE9SVF9URVhUVVJFMkQgfAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEQzRDExX0ZPUk1BVF9TVVBQT1JUX1RFWFRVUkUzRCB8Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVY
VFVSRUNVQkUgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDExX0ZPUk1B
VF9TVVBQT1JUX1NIQURFUl9TQU1QTEUgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEQzRDExX0ZPUk1BVF9TVVBQT1JUX1JFTkRFUl9UQVJHRVQgfAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEQzRDExX0ZPUk1BVF9TVVBQT1JUX01VTFRJU0FNUExFX1JFTkRF
UlRBUkdFVCB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEMTFfRk9STUFU
X1NVUFBPUlRfREVQVEhfU1RFTkNJTDsKKyAgICBzdGF0aWMgVUlOVCBBbGxTdXBwb3J0RmxhZ3Mg
PQorICAgICAgICBEM0QxMV9GT1JNQVRfU1VQUE9SVF9URVhUVVJFMkQgfCBEM0QxMV9GT1JNQVRf
U1VQUE9SVF9URVhUVVJFM0QgfAorICAgICAgICBEM0QxMV9GT1JNQVRfU1VQUE9SVF9URVhUVVJF
Q1VCRSB8IEQzRDExX0ZPUk1BVF9TVVBQT1JUX1NIQURFUl9TQU1QTEUgfAorICAgICAgICBEM0Qx
MV9GT1JNQVRfU1VQUE9SVF9SRU5ERVJfVEFSR0VUIHwgRDNEMTFfRk9STUFUX1NVUFBPUlRfTVVM
VElTQU1QTEVfUkVOREVSVEFSR0VUIHwKKyAgICAgICAgRDNEMTFfRk9STUFUX1NVUFBPUlRfREVQ
VEhfU1RFTkNJTCB8IEQzRDExX0ZPUk1BVF9TVVBQT1JUX01JUF9BVVRPR0VOOwogICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBkZWZhdWx0U3VwcG9ydCgwLCAwLCBBbGxTdXBwb3J0RmxhZ3Mp
OwogICAgIHJldHVybiBkZWZhdWx0U3VwcG9ydDsKIH0KIAotY29uc3QgRFhHSVN1cHBvcnQgJkdl
dERYR0lTdXBwb3J0XzEwXzAoRFhHSV9GT1JNQVQgZHhnaUZvcm1hdCkKK2NvbnN0IERYR0lTdXBw
b3J0ICZHZXREWEdJU3VwcG9ydF85XzMoRFhHSV9GT1JNQVQgZHhnaUZvcm1hdCkKIHsKKyAgICAv
LyBjbGFuZy1mb3JtYXQgb2ZmCiAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQogICAgIHsKICAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF80MjBfT1BBUVVFOgogICAgICAgICB7Ci0gICAgICAgICAgICBz
dGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZf
RFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTUlQ
R0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5m
bzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0E4UDg6CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNE
IHwgRl9DVUJFIHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAg
ICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQThf
VU5PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBp
bmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwg
Rl9DVUJFIHwgRl9SVCwgRl9EUywgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0FJNDQ6CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9D
VUJFIHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RT
IHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJl
dHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQVlVVjoKICAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8y
RCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9SVCB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9D
VUJFIHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX01TKTsKICAgICAgICAg
ICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjRH
NFI0QTRfVU5PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMgfCBG
X1JUKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBG
XzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9EUywgRl9NUyB8IEZfUlQpOwog
ICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9CNUc1UjVBMV9VTk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUywg
Rl9NUyB8IEZfUlQpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX0RTLCBGX01TIHwg
Rl9SVCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNl
IERYR0lfRk9STUFUX0I1RzZSNV9VTk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9T
QU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwg
Rl9EUywgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOEE4X1RZUEVMRVNTOgogICAgICAgICB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NUyB8IEZfUlQg
fCBGX1NBTVBMRSwgRl8yRCB8IEZfM0QgfCBGX0NVQkUpOworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBG
X1NBTVBMRSwgRl8yRCB8IEZfM0QgfCBGX0NVQkUpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STToKICAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9E
UywgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFKTsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfTUlQR0VOIHwgRl9SVCB8IEZf
U0FNUExFLCBGX0RTLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTVMpOwogICAgICAgICAgICAg
cmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9COEc4UjhB
OF9VTk9STV9TUkdCOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbygwLCBGX0RTLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTVMgfCBGX1NBTVBM
RSk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwg
Rl9NSVBHRU4sIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NUyk7CiAgICAgICAgICAgICByZXR1
cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOFg4X1RZ
UEVMRVNTOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbygwLCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgRl8yRCB8IEZfM0QgfCBGX0NV
QkUpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8
IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgRl8yRCB8IEZfM0QgfCBGX0NVQkUp
OwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9COEc4UjhYOF9VTk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUywgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01T
IHwgRl9TQU1QTEUpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
MCwgRl9EUyB8IEZfTUlQR0VOLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTVMpOwogICAgICAg
ICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9C
OEc4UjhYOF9VTk9STV9TUkdCOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTVMgfCBG
X1NBTVBMRSk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBG
X0RTIHwgRl9NSVBHRU4sIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NUyk7CiAgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMV9U
WVBFTEVTUzoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExF
LCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBG
XzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAw
KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfQkMxX1VOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwg
Rl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9N
UyB8IEZfUlQsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzFfVU5PUk1fU1JHQjoKICAgICAgICAgewotICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBG
X1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4g
fCBGX01TIHwgRl9SVCwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMl9UWVBFTEVTUzoKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUs
IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBH
RU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZv
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMyX1VOT1JNOgogICAgICAg
ICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8z
RCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBG
X1NBTVBMRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDApOwogICAgICAgICAgICAg
cmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzJfVU5P
Uk1fU1JHQjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JU
LCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBG
XzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7CiAgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JD
M19UWVBFTEVTUzoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBw
b3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FN
UExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQg
fCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExF
LCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfQkMzX1VOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RT
IHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTUlQR0VOIHwg
Rl9NUyB8IEZfUlQsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzNfVU5PUk1fU1JHQjoKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBH
RU4gfCBGX01TIHwgRl9SVCwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAg
fQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNF9TTk9STToKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBH
RU4gfCBGX01TIHwgRl9SVCwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAg
fQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNF9UWVBFTEVTUzoKICAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9N
SVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM0X1VOT1JNOgogICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwg
Rl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUs
IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKICAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM1X1NOT1JNOgogICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwg
Rl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUs
IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKICAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM1X1RZUEVMRVNTOgog
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJE
IHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAg
ICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9C
QzVfVU5PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01TIHwgRl9S
VCwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwg
Rl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDApOwogICAgICAg
ICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9C
QzZIX1NGMTY6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKDAsIEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7
CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX0JDNkhfVFlQRUxFU1M6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01J
UEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzZIX1VGMTY6CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMg
fCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbygwLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDN19UWVBF
TEVTUzoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oMCwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZf
UlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDN19VTk9STToKICAgICAgICAgewotICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTVMgfCBGX1JULCAw
KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBG
X01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM3X1VOT1JNX1NSR0I6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBG
X01TIHwgRl9SVCwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
bygwLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7CiAgICAgICAgICAgICByZXR1
cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0QxNl9VTk9STToK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfQ1VCRSB8IEZfRFMsIEZfM0QgfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VCRSB8IEZfRFMs
IEZfM0QgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0QyNF9VTk9S
TV9TOF9VSU5UOgpAQCAtMjM0LDExMiArMjM0LDExMiBAQAogICAgICAgICB9CiAgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfRDMyX0ZMT0FUOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl9DVUJFIHwgRl9EUywgRl8zRCB8IEZfUlQg
fCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbyhGXzJEIHwgRl9DVUJFLCBGXzNEIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZf
TVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9EMzJfRkxPQVRfUzhYMjRfVUlOVDoKICAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VCRSB8IEZfRFMsIEZfM0Qg
fCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VCRSwgRl8zRCB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FN
UExFLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfRzhSOF9HOEI4X1VOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZf
U0FNUExFLCBGX0RTIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01JUEdFTiB8
IEZfTVMgfCBGX1JULCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfSUE0NDoKICAgICAgICAgewotICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RT
IHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdF
TiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9OVjExOgogICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfRFMgfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RT
IHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJu
IGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9OVjEyOgogICAgICAg
ICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwg
Rl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX0RTIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOwogICAgICAgICAgICAg
cmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9QMDEwOgog
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBG
XzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBG
X0NVQkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOwogICAgICAg
ICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9Q
MDE2OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
bygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMp
OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZf
M0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOwog
ICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9QODoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NB
TVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBG
XzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9T
QU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9UWVBFTEVTUzoKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUs
IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwg
Rl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VSU5UOgogICAgICAgICB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8
IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX1IxMEcxMEIxMEEyX1VOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBM
RSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
bygwLCBGX0RTLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjEwRzEwQjEwX1hSX0JJQVNfQTJfVU5PUk06CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfQ1VC
RSB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCBGXzJEIHwgRl8zRCk7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0NVQkUgfCBGX0RTIHwgRl9N
SVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCBGXzJEIHwgRl8zRCk7CiAgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxMUcx
MUIxMF9GTE9BVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBw
b3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZf
TVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUywg
Rl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVDoKICAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JU
IHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQsIEZfRFMs
IEZfTVMgfCBGX1NBTVBMRSk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5UOgogICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9N
Uyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERY
R0lfRk9STUFUX1IxNkcxNkIxNkExNl9TTk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwg
Rl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBw
b3J0IGluZm8oMCwgRl9EUywgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9UWVBFTEVTUzoKICAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8
IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJF
LCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAg
ICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2
RzE2QjE2QTE2X1VJTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfU0FNUExF
LCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZf
RFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZv
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JN
OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhG
XzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VC
RSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKICAgICAgICAgICAg
IHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2
X0ZMT0FUOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9SVCwgRl9EUywgRl9NUyk7CiAgICAgICAgICAgICByZXR1
cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNl9TSU5U
OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhG
XzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4g
fCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNl9TTk9STToKQEAgLTM0OSwxNTcgKzM0OSwx
NTcgQEAKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNl9UWVBFTEVT
UzoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwg
Rl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjE2RzE2X1VJTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfU0FNUExF
LCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZf
RFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZv
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2X1VOT1JNOgogICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwg
Rl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZf
TUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKICAgICAgICAgICAgIHJldHVy
biBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2X0ZMT0FUOgog
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJE
IHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTLCBGX01TKTsKICAgICAg
ICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjE2X1NJTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfU0FNUExFLCBGX01T
KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBG
X01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2X1NOT1JNOgogICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTLCBGX01TKTsKICAgICAgICAgICAgIHJldHVy
biBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2X1RZUEVMRVNT
OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhG
XzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBG
X0NVQkUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SMTZfVUlOVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBw
b3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZf
TVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8
IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfVU5PUk06CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwg
Rl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUs
IEZfRFMsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9SMV9VTk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9T
QU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1Iy
NEc4X1RZUEVMRVNTOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbyhGXzJEIHwgRl9DVUJFLCBGXzNEIHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9T
QU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfQ1VCRSwgRl8zRCB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1Q
TEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9SMjRfVU5PUk1fWDhfVFlQRUxFU1M6CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUsIEZfM0QgfCBG
X0RTIHwgRl9NUyB8IEZfUlQsIEZfU0FNUExFKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUsIEZfM0QgfCBGX0RTIHwgRl9NSVBHRU4gfCBG
X01TIHwgRl9SVCwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVDoKICAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUgfCBGX1JULCBGX0RTLCBGX01TIHwgRl9TQU1QTEUpOworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZf
UlQsIEZfRFMsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVDoKICAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMp
OwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9SMzJHMzJCMzJBMzJfVFlQRUxFU1M6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwg
Rl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9N
UyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5UOgogICAgICAg
ICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8z
RCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBM
RSwgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBj
YXNlIERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVDoKICAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMs
IEZfTVMgfCBGX1JUKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZv
KEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4sIEZfTVMgfCBGX1JUKTsKICAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjMyRzMyQjMyX1NJTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9TQU1QTEUsIEZf
TVMgfCBGX1JUKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZf
MkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyB8IEZf
UlQpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9SMzJHMzJCMzJfVFlQRUxFU1M6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwg
Rl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9N
UyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMl9VSU5UOgogICAgICAgICB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8
IEZfQ1VCRSwgRl9EUyB8IEZfU0FNUExFLCBGX01TIHwgRl9SVCk7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZf
TUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMgfCBGX1JUKTsKICAgICAgICAgICAgIHJldHVybiBpbmZv
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FUOgogICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwg
Rl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMsIEZfTVMgfCBGX1NBTVBMRSk7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZf
UlQsIEZfRFMsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJfU0lOVDoKICAgICAgICAgewotICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBG
X1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMpOwogICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SMzJHMzJfVFlQRUxFU1M6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NUyB8IEZfUlQg
fCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
byhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBG
X1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX1IzMkczMl9VSU5UOgogICAgICAgICB7Ci0gICAgICAgICAgICBz
dGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQs
IEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1Iz
Mkc4WDI0X1RZUEVMRVNTOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbyhGXzJEIHwgRl9DVUJFLCBGXzNEIHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwg
Rl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
MCwgRl8zRCB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwog
ICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9SMzJfRkxPQVQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUywgRl9NUyB8IEZf
U0FNUExFKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQg
fCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1JULCBGX0RTLCBGX01TKTsKICAgICAgICAg
ICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMy
X0ZMT0FUX1g4WDI0X1RZUEVMRVNTOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl9DVUJFLCBGXzNEIHwgRl9EUyB8IEZfTVMgfCBG
X1JULCBGX1NBTVBMRSk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
byhGXzJEIHwgRl9DVUJFLCBGXzNEIHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDAp
OwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9SMzJfU0lOVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1Q
TEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwg
Rl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJfVFlQRUxFU1M6CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQg
fCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4g
fCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyX1VJTlQ6CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwg
Rl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBG
X01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjhHOEI4QThfU0lOVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RT
IHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMpOwogICAgICAgICAgICAg
cmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhB
OF9TTk9STToKQEAgLTUwOSwxMjIgKzUwOSwxMjIgQEAKICAgICAgICAgfQogICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1I4RzhCOEE4X1RZUEVMRVNTOgogICAgICAgICB7Ci0gICAgICAgICAgICBz
dGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8
IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01JUEdFTiB8IEZf
TVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5UOgogICAgICAgICB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwg
Rl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBG
X1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExF
LCBGX0RTLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQjoKICAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZf
UlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfQjhHOF9VTk9STToKICAgICAg
ICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZf
M0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBG
X0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5m
bzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfU0lOVDoKICAgICAg
ICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZf
M0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1Q
TEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SOEc4X1NOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBG
X1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbyhGXzJEIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJu
IGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4X1RZUEVMRVNT
OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhG
XzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBG
X0NVQkUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SOEc4X1VJTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfU0FNUExFLCBG
X01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMg
fCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9VTk9STToKICAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0Qg
fCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUywgRl9NUyB8IEZfUlQgfCBGX1NBTVBM
RSk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERY
R0lfRk9STUFUX1I4X1NJTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfU0FN
UExFLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAs
IEZfRFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhfU05PUk06CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBG
XzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMsIEZfTVMpOwogICAgICAgICAg
ICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOF9U
WVBFTEVTUzoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExF
LCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBG
XzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAw
KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjhfVUlOVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1Q
TEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwg
Rl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOF9VTk9STToKICAgICAg
ICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZf
M0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NB
TVBMRSwgRl9EUywgRl9NUyB8IEZfUlQpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOUc5QjlFNV9TSEFSRURFWFA6CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBG
XzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4gfCBG
X01TIHwgRl9SVCwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIERYR0lfRk9STUFUX1VOS05PV046CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9E
UyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NSVBH
RU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZv
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfWDI0X1RZUEVMRVNTX0c4X1VJ
TlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZv
KEZfMkQgfCBGX0NVQkUsIEZfM0QgfCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl9DVUJF
LCBGXzNEIHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX1gzMl9UWVBFTEVTU19HOFgyNF9VSU5UOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl9DVUJFLCBGXzNEIHwgRl9EUyB8IEZf
TVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VCRSwgRl8zRCB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMg
fCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9ZMjEwOgogICAgICAgICB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8
IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZf
TUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4g
aW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1kyMTY6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBG
XzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NV
QkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAg
ICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
WTQxMDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBM
RSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJE
IHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1Q
TEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9ZNDE2OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01TIHwg
Rl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8
IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAg
fQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1lVWTI6CiAgICAgICAgIHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwg
Rl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9N
SVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAKQEAgLTYzMiwxOTAgKzYzMiwxOTIgQEAKICAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7CiAgICAgICAgICAgICByZXR1cm4gR2V0RGVmYXVsdFN1cHBvcnQoKTsKICAg
ICB9CisgICAgLy8gY2xhbmctZm9ybWF0IG9uCiB9CiAKLWNvbnN0IERYR0lTdXBwb3J0ICZHZXRE
WEdJU3VwcG9ydF8xMF8xKERYR0lfRk9STUFUIGR4Z2lGb3JtYXQpCitjb25zdCBEWEdJU3VwcG9y
dCAmR2V0RFhHSVN1cHBvcnRfMTBfMChEWEdJX0ZPUk1BVCBkeGdpRm9ybWF0KQogeworICAgIC8v
IGNsYW5nLWZvcm1hdCBvZmYKICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCiAgICAgewogICAgICAg
ICBjYXNlIERYR0lfRk9STUFUXzQyMF9PUEFRVUU6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9E
UyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NSVBH
RU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZv
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQThQODoKICAgICAgICAgewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0Qg
fCBGX0NVQkUgfCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8
IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAg
ICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9BOF9V
Tk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBG
X0NVQkUgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CiAgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0FJ
NDQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZv
KDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUs
IDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8
IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExF
LCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfQVlVVjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9SVCB8IEZf
U0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZv
KDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FN
UExFLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfQjRHNFI0QTRfVU5PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9T
QU1QTEUsIEZfRFMsIEZfTVMgfCBGX1JUKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwg
Rl9EUywgRl9NUyB8IEZfUlQpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CNUc1UjVBMV9VTk9STToKICAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyB8IEZfUlQpOworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZf
U0FNUExFLCBGX0RTLCBGX01TIHwgRl9SVCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I1RzZSNV9VTk9STToKICAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0Qg
fCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdF
TiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5m
bzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOEE4X1RZUEVMRVNT
OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygw
LCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgRl8yRCB8IEZfM0QgfCBGX0NVQkUpOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTUlQ
R0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgRl8yRCB8IEZfM0QgfCBGX0NVQkUpOwogICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9COEc4UjhBOF9VTk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oMCwgRl9EUywgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01TIHwgRl9S
VCB8IEZfU0FNUExFKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZv
KEZfTUlQR0VOLCBGX0RTLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTVMgfCBGX1JUIHwgRl9T
QU1QTEUpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STV9TUkdCOgogICAgICAgICB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTLCBGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfTVMgfCBGX1NBTVBMRSk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4sIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9N
UyB8IEZfU0FNUExFKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4WDhfVFlQRUxFU1M6CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01TIHwgRl9S
VCB8IEZfU0FNUExFLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSk7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8
IEZfU0FNUExFLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSk7CiAgICAgICAgICAgICByZXR1cm4gaW5m
bzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOFg4X1VOT1JNOgog
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBG
X0RTLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTVMgfCBGX1NBTVBMRSk7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4sIEZfMkQg
fCBGXzNEIHwgRl9DVUJFIHwgRl9NUyB8IEZfU0FNUExFKTsKICAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4WDhfVU5PUk1f
U1JHQjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oMCwgRl9EUywgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01TIHwgRl9TQU1QTEUpOworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VO
LCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTVMgfCBGX1NBTVBMRSk7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMV9UWVBF
TEVTUzoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAw
KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNE
IHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsK
ICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfQkMxX1VOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9N
UyB8IEZfUlQsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8
IEZfUlQsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9CQzFfVU5PUk1fU1JHQjoKICAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NB
TVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBG
X01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMyX1RZUEVMRVNTOgogICAgICAgICB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8
IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMg
fCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0
dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzJfVU5PUk06
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZf
MkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7CiAgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFU
X0JDMl9VTk9STV9TUkdCOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9N
UyB8IEZfUlQsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8
IEZfUlQsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9CQzNfVFlQRUxFU1M6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwg
Rl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9N
UyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDM19VTk9STToKICAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUs
IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKICAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMzX1VOT1JNX1NSR0I6
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZf
MkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7CiAgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFU
X0JDNF9TTk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBw
b3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBG
X1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQg
fCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JU
LCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfQkM0X1RZUEVMRVNTOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMg
fCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBw
b3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBG
X1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzRfVU5PUk06CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwg
Rl9TQU1QTEUsIEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RT
IHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNV9TTk9STToKICAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0Qg
fCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9T
QU1QTEUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKICAgICAgICAgICAgIHJl
dHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM1X1RZUEVM
RVNTOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
byhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDAp
OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0Qg
fCBGX0NVQkUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwog
ICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9CQzVfVU5PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01T
IHwgRl9SVCwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhG
XzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwg
Rl9SVCwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBj
YXNlIERYR0lfRk9STUFUX0JDNkhfU0YxNjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01JUEdFTiB8
IEZfTVMgfCBGX1JULCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM2SF9UWVBFTEVTUzoKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTVMgfCBGX1JU
IHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oMCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFU
X0JDNkhfVUYxNjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBw
b3J0IGluZm8oMCwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAw
KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfQkM3X1RZUEVMRVNTOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9N
SVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM3X1VOT1JNOgogICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RT
IHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDApOwogICAgICAgICAgICAg
cmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzdfVU5P
Uk1fU1JHQjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oMCwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsK
ICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfRDE2X1VOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbyhGXzJEIHwgRl9DVUJFIHwgRl9EUywgRl8zRCB8IEZfUlQgfCBGX1NBTVBM
RSwgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJE
IHwgRl9DVUJFIHwgRl9EUywgRl8zRCB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX01T
KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQ6CkBAIC04MjUsMzk3ICs4MjcsOTkwIEBACiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMzJfRkxPQVQ6CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUgfCBG
X0RTLCBGXzNEIHwgRl9SVCB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUgfCBGX0RTLCBGXzNEIHwgRl9NSVBH
RU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMzJfRkxPQVRfUzhYMjRfVUlOVDoK
ICAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfQ1VCRSB8IEZfRFMsIEZfM0QgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9N
Uyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERY
R0lfRk9STUFUX0c4UjhfRzhCOF9VTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwg
Rl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9JQTQ0OgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8z
RCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDAp
OworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9OVjExOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdFTiB8IEZf
UlQgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX05WMTI6CisgICAgICAgIHsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwg
Rl9EUyB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHJl
dHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUDAxMDoKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8y
RCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZf
TVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9QMDE2OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdFTiB8
IEZfUlQgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1A4OgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8
IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAg
ICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTBH
MTBCMTBBMl9UWVBFTEVTUzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01JUEdFTiB8IEZf
TVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VSU5UOgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8z
RCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKKyAg
ICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjEwRzEwQjEwQTJfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1JU
IHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBfWFJfQklBU19BMl9VTk9S
TToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
MCwgRl9DVUJFIHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgRl8y
RCB8IEZfM0QpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SMTFHMTFCMTBfRkxPQVQ6CisgICAgICAgIHsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9N
SVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJu
IGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZf
RkxPQVQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBp
bmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZf
RFMsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVDoKKyAgICAgICAgeworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBG
X1JULCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICByZXR1
cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkEx
Nl9TTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwg
Rl9EUywgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9UWVBFTEVTUzoKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAg
ICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9S
MTZHMTZCMTZBMTZfVUlOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9NSVBH
RU4gfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VTk9STToKKyAgICAgICAg
eworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0Qg
fCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFU
X1IxNkcxNl9GTE9BVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NB
TVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNl9TSU5UOgorICAgICAgICB7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8
IEZfUlQsIEZfRFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHJl
dHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2X1NO
T1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
byhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RT
LCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfUjE2RzE2X1RZUEVMRVNTOgorICAgICAgICB7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8
IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICByZXR1
cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNl9VSU5U
OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhG
XzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBG
X01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjE2RzE2X1VOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQR0VOIHwg
Rl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2X0ZMT0FUOgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAg
ICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjE2X1NJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9T
QU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfU05PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBH
RU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfVFlQRUxFU1M6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQg
fCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExF
LCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjE2X1VJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZf
TUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfVU5PUk06CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9D
VUJFIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAg
ICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMV9V
Tk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oRl8yRCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7Cisg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX1IyNEc4X1RZUEVMRVNTOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl9DVUJFLCBGXzNEIHwgRl9EUyB8IEZfTUlQR0VOIHwg
Rl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IyNF9VTk9STV9YOF9UWVBFTEVTUzoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfQ1VCRSwgRl8zRCB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCBGX1NBTVBM
RSk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERY
R0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdF
TiB8IEZfUlQsIEZfRFMsIEZfTVMgfCBGX1NBTVBMRSk7CisgICAgICAgICAgICByZXR1cm4gaW5m
bzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5U
OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhG
XzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBG
X01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1RZUEVMRVNTOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9E
UyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIz
MkEzMl9VSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX01JUEdFTiB8IEZf
U0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FUOgorICAgICAgICB7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwg
Rl9EUyB8IEZfTUlQR0VOLCBGX01TIHwgRl9SVCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMl9TSU5UOgorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwg
Rl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMgfCBGX1JUKTsK
KyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfUjMyRzMyQjMyX1RZUEVMRVNTOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQ
R0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5m
bzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMl9VSU5UOgor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJE
IHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMgfCBGX1JU
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjMyRzMyX0ZMT0FUOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9S
VCwgRl9EUywgRl9NUyB8IEZfU0FNUExFKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyX1NJTlQ6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwg
Rl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAg
ICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9S
MzJHMzJfVFlQRUxFU1M6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01T
IHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyX1VJTlQ6CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9D
VUJFIHwgRl9SVCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAg
ICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJH
OFgyNF9UWVBFTEVTUzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VCRSwgRl8zRCB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMg
fCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJfRkxPQVQ6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJF
IHwgRl9NSVBHRU4gfCBGX1JULCBGX0RTLCBGX01TIHwgRl9TQU1QTEUpOworICAgICAgICAgICAg
cmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJfRkxP
QVRfWDhYMjRfVFlQRUxFU1M6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUsIEZfM0QgfCBGX0RTIHwgRl9NSVBHRU4gfCBG
X01TIHwgRl9SVCwgRl9TQU1QTEUpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJfU0lOVDoKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX1JULCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMl9UWVBF
TEVTUzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwg
Rl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJfVUlOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBG
X0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5m
bzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1NJTlQ6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQg
fCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMp
OworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9SOEc4QjhBOF9TTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZf
UlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1RZUEVMRVNTOgorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwg
Rl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwg
MCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERY
R0lfRk9STUFUX1I4RzhCOEE4X1VJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8
IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STToKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZf
M0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7Cisg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX1I4RzhCOEE4X1VOT1JNX1NSR0I6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBG
X1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4X0I4RzhfVU5PUk06CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBG
XzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAw
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjhHOF9TSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX01J
UEdFTiB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9TTk9STToKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4Rzhf
VFlQRUxFU1M6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9S
VCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9VSU5UOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZf
UlQsIEZfRFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVy
biBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9VTk9STToK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9N
Uyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERY
R0lfRk9STUFUX1I4X1NJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfTUlQ
R0VOIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOF9TTk9STToKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4X1RZUEVM
RVNTOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
byhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBG
X1NBTVBMRSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX1I4X1VJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9E
UyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOF9VTk9STToKKyAgICAgICAg
eworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0Qg
fCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFU
X1I5RzlCOUU1X1NIQVJFREVYUDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8
IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9VTktOT1dOOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwor
ICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9YMjRfVFlQRUxFU1NfRzhfVUlOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VCRSwgRl8zRCB8IEZfRFMgfCBGX01J
UEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9YMzJfVFlQRUxFU1NfRzhY
MjRfVUlOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oRl8yRCB8IEZfQ1VCRSwgRl8zRCB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JU
IHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9ZMjEwOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMg
fCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0
dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9ZMjE2OgorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJE
IHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1Q
TEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9ZNDEwOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdF
TiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9ZNDE2OgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwor
ICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9ZVVkyOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMg
fCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAg
IH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAg
ICAgICAgIHJldHVybiBHZXREZWZhdWx0U3VwcG9ydCgpOworICAgIH0KKyAgICAvLyBjbGFuZy1m
b3JtYXQgb24KK30KKworY29uc3QgRFhHSVN1cHBvcnQgJkdldERYR0lTdXBwb3J0XzEwXzEoRFhH
SV9GT1JNQVQgZHhnaUZvcm1hdCkKK3sKKyAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgICAgc3dp
dGNoIChkeGdpRm9ybWF0KQorICAgIHsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF80MjBfT1BB
UVVFOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
bygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JU
IHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9BOFA4OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMg
fCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0
dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9BOF9VTk9STToK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9N
Uyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERY
R0lfRk9STUFUX0FJNDQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTUlQR0VOIHwg
Rl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0FZVVY6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9D
VUJFIHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAg
ICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjRH
NFI0QTRfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9E
UywgRl9NUyB8IEZfUlQpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CNUc1UjVBMV9VTk9STToKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX0RTLCBGX01TIHwgRl9SVCk7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I1RzZSNV9V
Tk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9E
UywgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIERYR0lfRk9STUFUX0I4RzhSOEE4X1RZUEVMRVNTOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01T
IHwgRl9SVCB8IEZfU0FNUExFLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSk7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOEE4
X1VOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbyhGX01JUEdFTiwgRl9EUywgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01TIHwgRl9SVCB8
IEZfU0FNUExFKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk1fU1JHQjoKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VOLCBG
XzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTVMgfCBGX1NBTVBMRSk7CisgICAgICAgICAgICByZXR1
cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOFg4X1RZ
UEVMRVNTOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbygwLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCBGXzJEIHwg
Rl8zRCB8IEZfQ1VCRSk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOFg4X1VOT1JNOgorICAgICAgICB7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4sIEZf
MkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NUyB8IEZfU0FNUExFKTsKKyAgICAgICAgICAgIHJldHVy
biBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4WDhfVU5P
Uk1fU1JHQjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VOLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTVMgfCBG
X1NBTVBMRSk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIERYR0lfRk9STUFUX0JDMV9UWVBFTEVTUzoKKyAgICAgICAgeworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBG
X01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0dXJu
IGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzFfVU5PUk06Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQg
fCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JU
LCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfQkMxX1VOT1JNX1NSR0I6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUs
IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHJldHVybiBp
bmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMyX1RZUEVMRVNTOgor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJE
IHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBM
RSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IERYR0lfRk9STUFUX0JDMl9VTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9E
UyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzJfVU5PUk1fU1JHQjoKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8
IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQs
IDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9CQzNfVFlQRUxFU1M6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBH
RU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZv
OworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMzX1VOT1JNOgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8z
RCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7
CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX0JDM19VTk9STV9TUkdCOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RT
IHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNF9TTk9STToKKyAgICAgICAg
eworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0Qg
fCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDApOwor
ICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9CQzRfVFlQRUxFU1M6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBG
X01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM0X1VOT1JNOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7CisgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFU
X0JDNV9TTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBw
b3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTUlQR0VO
IHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzVfVFlQRUxFU1M6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJF
LCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAg
ICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM1
X1VOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NSVBHRU4gfCBG
X01TIHwgRl9SVCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIERYR0lfRk9STUFUX0JDNkhfU0YxNjoKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8
IEZfUlQsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9CQzZIX1RZUEVMRVNTOgorICAgICAgICB7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwg
Rl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9
CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM2SF9VRjE2OgorICAgICAgICB7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4gfCBG
X01TIHwgRl9SVCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIERYR0lfRk9STUFUX0JDN19UWVBFTEVTUzoKKyAgICAgICAgeworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9N
UyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDN19VTk9STToKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VO
IHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzdfVU5PUk1fU1JHQjoKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VO
IHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMTZfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUgfCBGX0RTLCBG
XzNEIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0
dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1f
UzhfVUlOVDoKKyAgICAgICAgewogICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oRl8yRCB8IEZfQ1VCRSB8IEZfRFMsIEZfM0QgfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMp
OwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9EMzJfRkxPQVQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUgfCBGX0RTLCBGXzNEIHwgRl9NSVBHRU4gfCBG
X1JUIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMzJfRkxPQVRfUzhYMjRfVUlOVDoKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZf
Q1VCRSB8IEZfRFMsIEZfM0QgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9NUyk7Cisg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX0c4UjhfRzhCOF9VTk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8
IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBp
bmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01JUEdFTiB8IEZf
TVMgfCBGX1JULCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfSUE0NDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwg
Rl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdFTiB8
IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9OVjExOgogICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfRFMgfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwg
Rl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9OVjEyOgogICAgICAgICB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8z
RCB8IEZfQ1VCRSB8IEZfRFMgfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBG
X0RTIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0
dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9QMDEwOgogICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJE
IHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NV
QkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOwogICAgICAgICAg
ICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9QMDE2
OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygw
LCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0Qg
fCBGX0NVQkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOwogICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9QODoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBM
RSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJE
IHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1Q
TEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9UWVBFTEVTUzoKICAgICAgICAgewotICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZf
RFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4g
fCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVUlOVDoKICAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8
IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBG
X1JULCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAgICAgICByZXR1
cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxMEcxMEIxMEEy
X1VOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKICAgICAg
ICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjEwRzEwQjEwX1hSX0JJQVNfQTJfVU5PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfQ1VCRSB8IEZfRFMgfCBGX01TIHwgRl9SVCB8
IEZfU0FNUExFLCBGXzJEIHwgRl8zRCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbygwLCBGX0NVQkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZf
U0FNUExFLCBGXzJEIHwgRl8zRCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAg
fQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxMUcxMUIxMF9GTE9BVDoKICAgICAgICAgewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBG
X0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8
IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVDoK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIx
NkExNl9TSU5UOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9N
Uyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8z
RCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKICAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjE2RzE2QjE2QTE2X1NOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBM
RSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
byhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RT
LCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1RZUEVMRVNTOgogICAgICAgICB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwg
Rl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01JUEdF
TiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVDoK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX1JULCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIx
NkExNl9VTk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBw
b3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZf
TVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZf
M0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CiAg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX1IxNkcxNl9GTE9BVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZf
RFMsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9N
Uyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERY
R0lfRk9STUFUX1IxNkcxNl9TSU5UOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBG
X1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
byhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX01JUEdFTiB8IEZfU0FNUExF
LCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfUjE2RzE2X1NOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBG
X1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExF
LCBGX0RTLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2X1RZUEVMRVNTOgogICAgICAgICB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwg
Rl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01JUEdF
TiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZfVUlOVDoKICAgICAg
ICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZf
M0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JU
LCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4g
aW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNl9VTk9STToK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNl9GTE9B
VDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CiAgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNl9T
SU5UOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
byhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfUlQsIEZfRFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKICAgICAgICAg
ICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2
X1NOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKICAgICAg
ICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjE2X1RZUEVMRVNTOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9T
QU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1Q
TEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9SMTZfVUlOVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwg
Rl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBM
RSwgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBj
YXNlIERYR0lfRk9STUFUX1IxNl9VTk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9T
QU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwg
Rl9EUywgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX1IxX1VOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJELCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NB
TVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJE
LCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAg
ICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjI0
RzhfVFlQRUxFU1M6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUsIEZfM0QgfCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NB
TVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJE
IHwgRl9DVUJFLCBGXzNEIHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBM
RSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1IyNF9VTk9STV9YOF9UWVBFTEVTUzoKICAgICAgICAgewotICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VCRSB8IEZfU0FNUExF
LCBGXzNEIHwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl8zRCB8IEZfRFMg
fCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FUOgog
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJE
IHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8
IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKICAgICAgICAgICAgIHJl
dHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMy
QTMyX1NJTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfU0FNUExFLCBGX01T
KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNE
IHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMpOwogICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SMzJHMzJCMzJBMzJfVFlQRUxFU1M6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NUyB8
IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZf
UlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5UOgogICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMg
fCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FUOgogICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwg
Rl8zRCB8IEZfQ1VCRSwgRl9EUywgRl9NUyB8IEZfUlQpOworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01JUEdF
TiwgRl9NUyB8IEZfUlQpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfU0lOVDoKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUs
IEZfRFMgfCBGX1NBTVBMRSwgRl9NUyB8IEZfUlQpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01JUEdFTiB8
IEZfU0FNUExFLCBGX01TIHwgRl9SVCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMl9UWVBFTEVTUzoKICAgICAg
ICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZf
M0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBG
X0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAg
IHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMy
QjMyX1VJTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMgfCBGX1JU
KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNE
IHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyB8IEZfUlQpOwogICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SMzJHMzJfRkxPQVQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RT
LCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQg
fCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMp
OwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9SMzJHMzJfU0lOVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9T
QU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwg
Rl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1IzMkczMl9UWVBFTEVTUzoKICAgICAgICAgewotICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBG
X01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01T
IHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyX1VJTlQ6CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9D
VUJFIHwgRl9SVCwgRl9EUyB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8
IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHOFgyNF9UWVBFTEVTUzoKICAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8
IEZfQ1VCRSwgRl8zRCB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUsIEZfM0Qg
fCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAg
ICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMy
X0ZMT0FUOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKICAgICAg
ICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjMyX0ZMT0FUX1g4WDI0X1RZUEVMRVNTOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfM0QgfCBG
X0RTIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBw
b3J0IGluZm8oRl8yRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGXzNEIHwgRl9EUyB8IEZfTUlQR0VO
IHwgRl9NUyB8IEZfUlQsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJfU0lOVDoKICAgICAgICAgewotICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBG
X1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9NSVBH
RU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAg
fQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMl9UWVBFTEVTUzoKICAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9N
SVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyX1VJTlQ6CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBG
XzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9S
VCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJu
IGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5U
OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhG
XzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VC
RSB8IEZfUlQsIEZfRFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKICAgICAgICAgICAg
IHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4
QThfU05PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01T
KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNE
IHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOwogICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SOEc4QjhBOF9UWVBFTEVTUzoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9S
VCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBp
bmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8
IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVDoKICAgICAgICAgewotICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBG
X1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9NSVBH
RU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAg
fQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNOgogICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQR0VOIHwg
Rl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQjoK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfQjhH
OF9VTk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JU
LCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBG
XzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAw
KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjhHOF9TSU5UOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NB
TVBMRSwgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhG
XzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBG
X01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjhHOF9TTk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1Q
TEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9E
UywgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBj
YXNlIERYR0lfRk9STUFUX1I4RzhfVFlQRUxFU1M6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwg
Rl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9N
UyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfVUlOVDoKICAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwg
Rl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfVU5PUk06CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwg
Rl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4g
fCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOF9TSU5UOgogICAgICAgICB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZf
RFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZv
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhfU05PUk06CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNE
IHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBH
RU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOF9UWVBFTEVTUzoKICAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8
IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJF
LCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAg
ICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhf
VUlOVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBG
X0NVQkUgfCBGX1JULCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4
X1VOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKICAgICAg
ICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjlHOUI5RTVfU0hBUkVERVhQOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwg
Rl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9N
UyB8IEZfUlQsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9VTktOT1dOOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMg
fCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTUlQR0VO
IHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1gyNF9UWVBFTEVTU19HOF9VSU5U
OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhG
XzJEIHwgRl9DVUJFLCBGXzNEIHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VCRSwg
Rl8zRCB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9YMzJfVFlQRUxFU1NfRzhYMjRfVUlOVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VCRSwgRl8zRCB8IEZfRFMgfCBGX01T
IHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUsIEZfM0QgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwg
Rl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfWTIxMDoKICAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBG
X0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01J
UEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9ZMjE2OgogICAgICAgICB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8z
RCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJF
IHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1k0
MTA6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZv
KDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUs
IDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8
IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExF
LCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfWTQxNjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NUyB8IEZf
UlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBG
X1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9ZVVkyOgogICAgICAgICB7Ci0gICAgICAgICAgICBz
dGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZf
RFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTUlQ
R0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5m
bzsKICAgICAgICAgfQogCkBAIC0xMjIzLDE5MCArMTgxOCwxOTIgQEAKICAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7CiAgICAgICAgICAgICByZXR1cm4gR2V0RGVmYXVsdFN1cHBvcnQoKTsKICAg
ICB9CisgICAgLy8gY2xhbmctZm9ybWF0IG9uCiB9CiAKIGNvbnN0IERYR0lTdXBwb3J0ICZHZXRE
WEdJU3VwcG9ydF8xMV8wKERYR0lfRk9STUFUIGR4Z2lGb3JtYXQpCiB7CisgICAgLy8gY2xhbmct
Zm9ybWF0IG9mZgogICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKICAgICB7CiAgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfNDIwX09QQVFVRToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9N
UyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdFTiB8IEZf
TVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9BOFA4OgogICAgICAgICB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VC
RSB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8
IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1
cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0E4X1VOT1JNOgog
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJE
IHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8
IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKICAgICAgICAgICAgIHJl
dHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQUk0NDoKICAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8y
RCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwog
ICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9BWVVWOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX1JUIHwgRl9TQU1QTEUs
IEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8y
RCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZf
TVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9CNEc0UjRBNF9VTk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwg
Rl9EUywgRl9NUyB8IEZfUlQpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX0RTLCBG
X01TIHwgRl9SVCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX0I1RzVSNUExX1VOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZf
U0FNUExFLCBGX0RTLCBGX01TIHwgRl9SVCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9TQU1QTEUs
IEZfRFMsIEZfTVMgfCBGX1JUKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNOgogICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VC
RSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9S
VCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4QThfVFlQRUxFU1M6CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMg
fCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSk7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4gfCBG
X01TIHwgRl9SVCB8IEZfU0FNUExFLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSk7CiAgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhS
OEE4X1VOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbyhGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9N
Uyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGX01JUEdFTiB8
IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01TKTsKICAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfQjhHOFI4QThfVU5PUk1fU1JHQjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oRl9SVCB8IEZfU0FNUExFLCBGX0RTIHwgRl9NSVBHRU4sIEZfMkQgfCBGXzNEIHwgRl9DVUJF
IHwgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBj
YXNlIERYR0lfRk9STUFUX0I4RzhSOFg4X1RZUEVMRVNTOgogICAgICAgICB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBG
X1NBTVBMRSwgRl8yRCB8IEZfM0QgfCBGX0NVQkUpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NB
TVBMRSwgRl8yRCB8IEZfM0QgfCBGX0NVQkUpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9COEc4UjhYOF9VTk9STToKICAgICAg
ICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl9SVCB8IEZf
U0FNUExFLCBGX0RTLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTVMpOworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl9SVCB8IEZfU0FNUExFLCBGX0RTIHwgRl9N
SVBHRU4sIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4g
aW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOFg4X1VOT1JN
X1NSR0I6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBp
bmZvKEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01TKTsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfUlQgfCBGX1NBTVBM
RSwgRl9EUyB8IEZfTUlQR0VOLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTVMpOwogICAgICAg
ICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9C
QzFfVFlQRUxFU1M6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NB
TVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJE
IHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBM
RSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNl
IERYR0lfRk9STUFUX0JDMV9VTk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9E
UyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01JUEdFTiB8
IEZfTVMgfCBGX1JULCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMxX1VOT1JNX1NSR0I6CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJF
IHwgRl9TQU1QTEUsIEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBG
X0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5m
bzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMl9UWVBFTEVTUzoKICAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8
IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJF
LCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAg
ICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMy
X1VOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NUyB8IEZfUlQs
IDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZf
M0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDAp
OwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9CQzJfVU5PUk1fU1JHQjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9E
UyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01JUEdFTiB8
IEZfTVMgfCBGX1JULCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMzX1RZUEVMRVNTOgogICAgICAgICB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwg
Rl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01JUEdF
TiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzNfVU5PUk06CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNE
IHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZf
U0FNUExFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDM19VTk9S
TV9TUkdCOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NUyB8IEZfUlQs
IDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZf
M0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDAp
OwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9CQzRfU05PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBG
X01TIHwgRl9SVCwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
byhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01T
IHwgRl9SVCwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX0JDNF9UWVBFTEVTUzoKICAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMg
fCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBG
X01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM0X1VOT1JNOgogICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBM
RSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDApOwogICAgICAgICAgICAgcmV0dXJu
IGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzVfU05PUk06CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQg
fCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VC
RSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7CiAgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JD
NV9UWVBFTEVTUzoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBw
b3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FN
UExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQg
fCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExF
LCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfQkM1X1VOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RT
IHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTUlQR0VOIHwg
Rl9NUyB8IEZfUlQsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzZIX1NGMTY6CiAgICAgICAgIHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9T
QU1QTEUsIEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwg
Rl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNkhfVFlQRUxFU1M6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNE
IHwgRl9DVUJFLCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9E
UyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNkhfVUYx
NjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwg
Rl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKICAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfQkM3X1RZUEVMRVNTOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBGX1JUIHwg
Rl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9T
QU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9CQzdfVU5PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUs
IEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NSVBH
RU4gfCBGX01TIHwgRl9SVCwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAg
fQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDN19VTk9STV9TUkdCOgogICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBM
RSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDApOwogICAgICAgICAgICAgcmV0dXJu
IGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMTZfVU5PUk06CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQg
fCBGX0NVQkUgfCBGX0RTLCBGXzNEIHwgRl9SVCB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUgfCBGX0RTLCBG
XzNEIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0
dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1f
UzhfVUlOVDoKQEAgLTE0MTYsMzk3ICsyMDEzLDM5NyBAQAogICAgICAgICB9CiAgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfRDMyX0ZMT0FUOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl9DVUJFIHwgRl9EUywgRl8zRCB8IEZfUlQg
fCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbyhGXzJEIHwgRl9DVUJFIHwgRl9EUywgRl8zRCB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FN
UExFLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfRDMyX0ZMT0FUX1M4WDI0X1VJTlQ6CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUgfCBGX0RT
LCBGXzNEIHwgRl9SVCB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUgfCBGX0RTLCBGXzNEIHwgRl9NSVBHRU4g
fCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9HOFI4X0c4QjhfVU5PUk06CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNE
IHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZf
U0FNUExFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0lBNDQ6CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZf
MkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0Qg
fCBGX0NVQkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsK
ICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfTlYxMToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBw
b3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9SVCB8IEZfU0FNUExF
LCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZf
MkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBG
X01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfTlYxMjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9SVCB8IEZf
U0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZv
KDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FN
UExFLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfUDAxMDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9S
VCB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9SVCB8
IEZfU0FNUExFLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUDAxNjoKICAgICAgICAgewotICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RT
IHwgRl9SVCB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTUlQR0VOIHwg
Rl9SVCB8IEZfU0FNUExFLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUDg6CiAgICAgICAgIHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwg
Rl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9N
SVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVFlQ
RUxFU1M6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBp
bmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwg
MCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8z
RCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7
CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX1IxMEcxMEIxMEEyX1VJTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8
IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBp
bmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1Q
TEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VTk9STToKICAgICAgICAgewotICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBG
X1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQgfCBG
X1NBTVBMRSwgRl9EUywgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAg
fQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxMEcxMEIxMF9YUl9CSUFTX0EyX1VOT1JNOgog
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBG
X0NVQkUgfCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgRl8yRCB8IEZfM0QpOworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9DVUJFIHwgRl9EUyB8
IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgRl8yRCB8IEZfM0QpOwogICAgICAg
ICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9S
MTFHMTFCMTBfRkxPQVQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RT
LCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQg
fCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMp
OwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZf
U0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUs
IEZfRFMsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVDoKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9N
SVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TTk9STToKICAgICAg
ICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZf
M0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01J
UEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4g
aW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9U
WVBFTEVTUzoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExF
LCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBG
XzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAw
KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9E
UyB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9T
QU1QTEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk06CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJF
IHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1JU
IHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZfRkxPQVQ6CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwg
Rl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4g
fCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZfU0lOVDoKICAgICAg
ICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZf
M0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JU
LCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4g
aW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNl9TTk9STToK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNl9U
WVBFTEVTUzoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExF
LCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBG
XzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAw
KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjE2RzE2X1VJTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZf
U0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZv
KEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUs
IEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9SMTZHMTZfVU5PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZf
U0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUs
IEZfRFMsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfRkxPQVQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8
IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1Q
TEUsIEZfRFMsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfU0lOVDoKICAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JU
LCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9NSVBHRU4g
fCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNl9TTk9STToKICAgICAgICAgewotICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBG
X1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQgfCBG
X1NBTVBMRSwgRl9EUywgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAg
fQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNl9UWVBFTEVTUzoKICAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9N
SVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2X1VJTlQ6CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBG
XzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9S
VCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJu
IGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfVU5PUk06CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQg
fCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwg
Rl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOwogICAgICAgICAgICAgcmV0
dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMV9VTk9STToK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9D
VUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAg
ICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjI0RzhfVFlQRUxFU1M6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUsIEZfM0QgfCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBG
X1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhG
XzJEIHwgRl9DVUJFLCBGXzNEIHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NB
TVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBj
YXNlIERYR0lfRk9STUFUX1IyNF9VTk9STV9YOF9UWVBFTEVTUzoKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VCRSB8IEZfU0FN
UExFLCBGXzNEIHwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl8zRCB8IEZf
RFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZv
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FU
OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhG
XzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VC
RSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKICAgICAgICAgICAg
IHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMy
QjMyQTMyX1NJTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfU0FNUExFLCBG
X01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBG
XzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMpOwog
ICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9SMzJHMzJCMzJBMzJfVFlQRUxFU1M6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9N
UyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8
IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAg
fQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5UOgogICAgICAgICB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZf
RFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZv
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FUOgog
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJE
IHwgRl8zRCB8IEZfQ1VCRSwgRl9EUywgRl9NUyB8IEZfUlQpOworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01J
UEdFTiwgRl9NUyB8IEZfUlQpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfU0lOVDoKICAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyB8IEZfUlQpOworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01JUEdF
TiB8IEZfU0FNUExFLCBGX01TIHwgRl9SVCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMl9UWVBFTEVTUzoKICAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8
IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJF
LCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAg
ICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMy
RzMyQjMyX1VJTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMgfCBG
X1JUKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBG
XzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyB8IEZfUlQpOwog
ICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9SMzJHMzJfRkxPQVQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBG
X0RTLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZf
MkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZf
TVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9SMzJHMzJfU0lOVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwg
Rl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBM
RSwgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBj
YXNlIERYR0lfRk9STUFUX1IzMkczMl9UWVBFTEVTUzoKICAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMg
fCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBG
X01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyX1VJTlQ6CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwg
Rl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9E
UyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHOFgyNF9UWVBFTEVTUzoK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfQ1VCRSwgRl8zRCB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUsIEZf
M0QgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAg
ICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjMyX0ZMT0FUOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9N
Uyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8z
RCB8IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKICAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjMyX0ZMT0FUX1g4WDI0X1RZUEVMRVNTOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfM0Qg
fCBGX0RTIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGXzNEIHwgRl9EUyB8IEZfTUlQ
R0VOIHwgRl9NUyB8IEZfUlQsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJfU0lOVDoKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9N
SVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMl9UWVBFTEVTUzoKICAgICAgICAgewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBG
X0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwg
Rl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVy
biBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyX1VJTlQ6CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQg
fCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwg
Rl9SVCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9TQU1QTEUsIEZfTVMpOwogICAgICAgICAgICAgcmV0
dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9T
SU5UOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
byhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfUlQsIEZfRFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKICAgICAgICAg
ICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhH
OEI4QThfU05PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBG
X01TKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBG
XzNEIHwgRl9DVUJFIHwgRl9NSVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOwog
ICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9SOEc4QjhBOF9UWVBFTEVTUzoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwg
Rl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9S
VCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVDoKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9N
SVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNOgogICAgICAgICB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTUlQR0VO
IHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZv
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JH
QjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CiAgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4Rzhf
QjhHOF9VTk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBw
b3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBG
X1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQg
fCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JU
LCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjhHOF9TSU5UOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBG
X1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
byhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX01JUEdFTiB8IEZfU0FNUExF
LCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfUjhHOF9TTk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9T
QU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01JUEdFTiB8IEZfUlQgfCBGX1NBTVBMRSwg
Rl9EUywgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX1I4RzhfVFlQRUxFU1M6CiAgICAgICAgIHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RT
IHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwg
Rl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfVUlOVDoKICAgICAgICAgewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBG
X0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RT
IHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfVU5PUk06CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNE
IHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NSVBH
RU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOF9TSU5UOgogICAgICAg
ICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8z
RCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQs
IEZfRFMgfCBGX01JUEdFTiB8IEZfU0FNUExFLCBGX01TKTsKICAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhfU05PUk06CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBG
XzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9N
SVBHRU4gfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOwogICAgICAgICAgICAgcmV0dXJu
IGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOF9UWVBFTEVTUzoK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9D
VUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAg
ICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjhfVUlOVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMp
OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0Qg
fCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9NSVBHRU4gfCBGX1NBTVBMRSwgRl9NUyk7CiAgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFU
X1I4X1VOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9N
Uyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8z
RCB8IEZfQ1VCRSB8IEZfTUlQR0VOIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKICAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjlHOUI5RTVfU0hBUkVERVhQOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RT
IHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTUlQR0VOIHwg
Rl9NUyB8IEZfUlQsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9VTktOT1dOOgogICAgICAgICB7Ci0gICAgICAgICAgICBz
dGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZf
RFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTUlQ
R0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5m
bzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1gyNF9UWVBFTEVTU19HOF9V
SU5UOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
byhGXzJEIHwgRl9DVUJFLCBGXzNEIHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDAp
OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VC
RSwgRl8zRCB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwog
ICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9YMzJfVFlQRUxFU1NfRzhYMjRfVUlOVDoKICAgICAgICAgewotICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VCRSwgRl8zRCB8IEZfRFMgfCBG
X01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUsIEZfM0QgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX01T
IHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfWTIxMDoKICAgICAgICAgewotICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBG
X01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJu
IGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9ZMjE2OgogICAgICAg
ICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwg
Rl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9D
VUJFIHwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFU
X1k0MTA6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBp
bmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1Q
TEUsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8y
RCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZfU0FN
UExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfWTQxNjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NUyB8
IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMg
fCBGX1JUIHwgRl9TQU1QTEUsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9ZVVkyOgogICAgICAgICB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8
IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZf
TUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4g
aW5mbzsKICAgICAgICAgfQogCkBAIC0xODE0LDYgKzI0MTEsNyBAQAogICAgICAgICAgICAgVU5S
RUFDSEFCTEUoKTsKICAgICAgICAgICAgIHJldHVybiBHZXREZWZhdWx0U3VwcG9ydCgpOwogICAg
IH0KKyAgICAvLyBjbGFuZy1mb3JtYXQgb24KIH0KIAogfQpAQCAtMTgyNSwxMSArMjQyMywxNCBA
QAogI3VuZGVmIEZfUlQKICN1bmRlZiBGX01TCiAjdW5kZWYgRl9EUworI3VuZGVmIEZfTUlQR0VO
CiAKIGNvbnN0IERYR0lTdXBwb3J0ICZHZXREWEdJU3VwcG9ydChEWEdJX0ZPUk1BVCBkeGdpRm9y
bWF0LCBEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCiB7CiAgICAgc3dpdGNoIChmZWF0
dXJlTGV2ZWwpCiAgICAgeworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKKyAg
ICAgICAgICAgIHJldHVybiBHZXREWEdJU3VwcG9ydF85XzMoZHhnaUZvcm1hdCk7CiAgICAgICAg
IGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDoKICAgICAgICAgICAgIHJldHVybiBHZXREWEdJ
U3VwcG9ydF8xMF8wKGR4Z2lGb3JtYXQpOwogICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVM
XzEwXzE6CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL2Zvcm1hdHV0aWxzMTEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZm9ybWF0dXRpbHMx
MS5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZm9ybWF0dXRpbHMxMS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTksMTQgKzksMTUgQEAKIAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9mb3JtYXR1dGlsczExLmgiCiAKKyNpbmNsdWRlICJpbWFnZV91dGlsL2NvcHlpbWFnZS5o
IgorI2luY2x1ZGUgImltYWdlX3V0aWwvZ2VuZXJhdGVtaXAuaCIKKyNpbmNsdWRlICJpbWFnZV91
dGlsL2xvYWRpbWFnZS5oIgorCiAjaW5jbHVkZSAibGliQU5HTEUvZm9ybWF0dXRpbHMuaCIKLSNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvY29weWltYWdlLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2NvcHl2ZXJ0ZXguaCIKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9zdXBwb3J0X3RhYmxlLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFfdXRpbHMuaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyZXIxMS5oIgotI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2QzZC9nZW5lcmF0ZW1pcC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL2QzZC9sb2FkaW1hZ2UuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9SZW5kZXJl
ci5oIgogCiBuYW1lc3BhY2UgcngKIHsKQEAgLTI0LDM3MyArMjUsMTMgQEAKIG5hbWVzcGFjZSBk
M2QxMQogewogCi1zdHJ1Y3QgRDNEMTFGYXN0Q29weUZvcm1hdAorYm9vbCBTdXBwb3J0c01pcEdl
bihEWEdJX0ZPUk1BVCBkeGdpRm9ybWF0LCBEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwp
CiB7Ci0gICAgR0xlbnVtIGRlc3RGb3JtYXQ7Ci0gICAgR0xlbnVtIGRlc3RUeXBlOwotICAgIENv
bG9yQ29weUZ1bmN0aW9uIGNvcHlGdW5jdGlvbjsKLQotICAgIEQzRDExRmFzdENvcHlGb3JtYXQo
R0xlbnVtIGRlc3RGb3JtYXQsIEdMZW51bSBkZXN0VHlwZSwgQ29sb3JDb3B5RnVuY3Rpb24gY29w
eUZ1bmN0aW9uKQotICAgICAgICA6IGRlc3RGb3JtYXQoZGVzdEZvcm1hdCksIGRlc3RUeXBlKGRl
c3RUeXBlKSwgY29weUZ1bmN0aW9uKGNvcHlGdW5jdGlvbikKLSAgICB7IH0KLQotICAgIGJvb2wg
b3BlcmF0b3I8KGNvbnN0IEQzRDExRmFzdENvcHlGb3JtYXQmIG90aGVyKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1lbWNtcCh0aGlzLCAmb3RoZXIsIHNpemVvZihEM0QxMUZhc3RDb3B5
Rm9ybWF0KSkgPCAwOwotICAgIH0KLX07Ci0KLXR5cGVkZWYgc3RkOjptdWx0aW1hcDxEWEdJX0ZP
Uk1BVCwgRDNEMTFGYXN0Q29weUZvcm1hdD4gRDNEMTFGYXN0Q29weU1hcDsKLQotc3RhdGljIEQz
RDExRmFzdENvcHlNYXAgQnVpbGRGYXN0Q29weU1hcCgpCi17Ci0gICAgRDNEMTFGYXN0Q29weU1h
cCBtYXA7Ci0KLSAgICBtYXAuaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKERYR0lfRk9STUFUX0I4RzhS
OEE4X1VOT1JNLCBEM0QxMUZhc3RDb3B5Rm9ybWF0KEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUs
IENvcHlCR1JBOFRvUkdCQTgpKSk7Ci0KLSAgICByZXR1cm4gbWFwOworICAgIGNvbnN0IGF1dG8g
JnN1cHBvcnQgPSBHZXREWEdJU3VwcG9ydChkeGdpRm9ybWF0LCBmZWF0dXJlTGV2ZWwpOworICAg
IEFTU0VSVCgoc3VwcG9ydC5vcHRpb25hbGx5U3VwcG9ydGVkRmxhZ3MgJiBEM0QxMV9GT1JNQVRf
U1VQUE9SVF9NSVBfQVVUT0dFTikgPT0gMCk7CisgICAgcmV0dXJuICgoc3VwcG9ydC5hbHdheXNT
dXBwb3J0ZWRGbGFncyAmIEQzRDExX0ZPUk1BVF9TVVBQT1JUX01JUF9BVVRPR0VOKSAhPSAwKTsK
IH0KIAotc3RydWN0IERYR0lDb2xvckZvcm1hdEluZm8KLXsKLSAgICBzaXplX3QgcmVkQml0czsK
LSAgICBzaXplX3QgZ3JlZW5CaXRzOwotICAgIHNpemVfdCBibHVlQml0czsKLQotICAgIHNpemVf
dCBsdW1pbmFuY2VCaXRzOwotCi0gICAgc2l6ZV90IGFscGhhQml0czsKLSAgICBzaXplX3Qgc2hh
cmVkQml0czsKLX07Ci0KLXR5cGVkZWYgc3RkOjptYXA8RFhHSV9GT1JNQVQsIERYR0lDb2xvckZv
cm1hdEluZm8+IENvbG9yRm9ybWF0SW5mb01hcDsKLXR5cGVkZWYgc3RkOjpwYWlyPERYR0lfRk9S
TUFULCBEWEdJQ29sb3JGb3JtYXRJbmZvPiBDb2xvckZvcm1hdEluZm9QYWlyOwotCi1zdGF0aWMg
aW5saW5lIHZvaWQgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbyhDb2xvckZvcm1hdEluZm9NYXAg
Km1hcCwgRFhHSV9GT1JNQVQgZm9ybWF0LCBzaXplX3QgcmVkQml0cywgc2l6ZV90IGdyZWVuQml0
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBi
bHVlQml0cywgc2l6ZV90IGFscGhhQml0cywgc2l6ZV90IHNoYXJlZEJpdHMpCi17Ci0gICAgRFhH
SUNvbG9yRm9ybWF0SW5mbyBpbmZvOwotICAgIGluZm8ucmVkQml0cyA9IHJlZEJpdHM7Ci0gICAg
aW5mby5ncmVlbkJpdHMgPSBncmVlbkJpdHM7Ci0gICAgaW5mby5ibHVlQml0cyA9IGJsdWVCaXRz
OwotICAgIGluZm8uYWxwaGFCaXRzID0gYWxwaGFCaXRzOwotICAgIGluZm8uc2hhcmVkQml0cyA9
IHNoYXJlZEJpdHM7Ci0KLSAgICBtYXAtPmluc2VydChzdGQ6Om1ha2VfcGFpcihmb3JtYXQsIGlu
Zm8pKTsKLX0KLQotc3RhdGljIENvbG9yRm9ybWF0SW5mb01hcCBCdWlsZENvbG9yRm9ybWF0SW5m
b01hcCgpCi17Ci0gICAgQ29sb3JGb3JtYXRJbmZvTWFwIG1hcDsKLQotICAgIC8vIGNsYW5nLWZv
cm1hdCBvZmYKLSAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEWEdJIGZvcm1h
dCAgICAgICAgICAgICAgICAgICAgICAgICB8IFIgfCBHIHwgQiB8IEEgfCBTIHwKLSAgICBJbnNl
cnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX0E4X1VOT1JNLCAgICAgICAg
ICAgICAgICAgIDAsICAwLCAgMCwgIDgsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJ
bmZvKCZtYXAsIERYR0lfRk9STUFUX1I4X1VOT1JNLCAgICAgICAgICAgICAgICAgIDgsICAwLCAg
MCwgIDAsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9S
TUFUX1I4RzhfVU5PUk0sICAgICAgICAgICAgICAgIDgsICA4LCAgMCwgIDAsICAwKTsKLSAgICBJ
bnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JN
LCAgICAgICAgICAgIDgsICA4LCAgOCwgIDgsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3Jt
YXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsICAgICAgIDgsICA4
LCAgOCwgIDgsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lf
Rk9STUFUX0I4RzhSOEE4X1VOT1JNLCAgICAgICAgICAgIDgsICA4LCAgOCwgIDgsICAwKTsKLSAg
ICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1IxNl9VTk9STSwg
ICAgICAgICAgICAgICAgMTYsICAwLCAgMCwgIDAsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JG
b3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1IxNkcxNl9VTk9STSwgICAgICAgICAgICAgMTYs
IDE2LCAgMCwgIDAsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERY
R0lfRk9STUFUX1IxNkcxNkIxNkExNl9VTk9STSwgICAgICAgMTYsIDE2LCAxNiwgMTYsICAwKTsK
LQotICAgIEluc2VydERYR0lDb2xvckZvcm1hdEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfUjhfU05P
Uk0sICAgICAgICAgICAgICAgICAgOCwgIDAsICAwLCAgMCwgIDApOwotICAgIEluc2VydERYR0lD
b2xvckZvcm1hdEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfUjhHOF9TTk9STSwgICAgICAgICAgICAg
ICAgOCwgIDgsICAwLCAgMCwgIDApOwotICAgIEluc2VydERYR0lDb2xvckZvcm1hdEluZm8oJm1h
cCwgRFhHSV9GT1JNQVRfUjhHOEI4QThfU05PUk0sICAgICAgICAgICAgOCwgIDgsICA4LCAgOCwg
IDApOwotICAgIEluc2VydERYR0lDb2xvckZvcm1hdEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfUjE2
X1NOT1JNLCAgICAgICAgICAgICAgICAxNiwgIDAsICAwLCAgMCwgIDApOwotICAgIEluc2VydERY
R0lDb2xvckZvcm1hdEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfUjE2RzE2X1NOT1JNLCAgICAgICAg
ICAgICAxNiwgMTYsICAwLCAgMCwgIDApOwotICAgIEluc2VydERYR0lDb2xvckZvcm1hdEluZm8o
Jm1hcCwgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NOT1JNLCAgICAgICAxNiwgMTYsIDE2LCAx
NiwgIDApOwotCi0gICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZPUk1B
VF9SOF9VSU5ULCAgICAgICAgICAgICAgICAgICA4LCAgMCwgIDAsICAwLCAgMCk7Ci0gICAgSW5z
ZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9SMTZfVUlOVCwgICAgICAg
ICAgICAgICAgIDE2LCAgMCwgIDAsICAwLCAgMCk7Ci0gICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0
SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9SMzJfVUlOVCwgICAgICAgICAgICAgICAgIDMyLCAgMCwg
IDAsICAwLCAgMCk7Ci0gICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZP
Uk1BVF9SOEc4X1VJTlQsICAgICAgICAgICAgICAgICA4LCAgOCwgIDAsICAwLCAgMCk7Ci0gICAg
SW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9SMTZHMTZfVUlOVCwg
ICAgICAgICAgICAgIDE2LCAxNiwgIDAsICAwLCAgMCk7Ci0gICAgSW5zZXJ0RFhHSUNvbG9yRm9y
bWF0SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9SMzJHMzJfVUlOVCwgICAgICAgICAgICAgIDMyLCAz
MiwgIDAsICAwLCAgMCk7Ci0gICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbygmbWFwLCBEWEdJ
X0ZPUk1BVF9SMzJHMzJCMzJfVUlOVCwgICAgICAgICAgIDMyLCAzMiwgMzIsICAwLCAgMCk7Ci0g
ICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9V
SU5ULCAgICAgICAgICAgICA4LCAgOCwgIDgsICA4LCAgMCk7Ci0gICAgSW5zZXJ0RFhHSUNvbG9y
Rm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVCwgICAgICAgIDE2
LCAxNiwgMTYsIDE2LCAgMCk7Ci0gICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbygmbWFwLCBE
WEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVCwgICAgICAgIDMyLCAzMiwgMzIsIDMyLCAgMCk7
Ci0KLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1I4X1NJ
TlQsICAgICAgICAgICAgICAgICAgIDgsICAwLCAgMCwgIDAsICAwKTsKLSAgICBJbnNlcnREWEdJ
Q29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1IxNl9TSU5ULCAgICAgICAgICAgICAg
ICAgMTYsICAwLCAgMCwgIDAsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZt
YXAsIERYR0lfRk9STUFUX1IzMl9TSU5ULCAgICAgICAgICAgICAgICAgMzIsICAwLCAgMCwgIDAs
ICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1I4
RzhfU0lOVCwgICAgICAgICAgICAgICAgIDgsICA4LCAgMCwgIDAsICAwKTsKLSAgICBJbnNlcnRE
WEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1IxNkcxNl9TSU5ULCAgICAgICAg
ICAgICAgMTYsIDE2LCAgMCwgIDAsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZv
KCZtYXAsIERYR0lfRk9STUFUX1IzMkczMl9TSU5ULCAgICAgICAgICAgICAgMzIsIDMyLCAgMCwg
IDAsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFU
X1IzMkczMkIzMl9TSU5ULCAgICAgICAgICAgMzIsIDMyLCAzMiwgIDAsICAwKTsKLSAgICBJbnNl
cnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1I4RzhCOEE4X1NJTlQsICAg
ICAgICAgICAgIDgsICA4LCAgOCwgIDgsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJ
bmZvKCZtYXAsIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5ULCAgICAgICAgMTYsIDE2LCAx
NiwgMTYsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9S
TUFUX1IzMkczMkIzMkEzMl9TSU5ULCAgICAgICAgMzIsIDMyLCAzMiwgMzIsICAwKTsKLQotICAg
IEluc2VydERYR0lDb2xvckZvcm1hdEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJf
VFlQRUxFU1MsICAgICAxMCwgMTAsIDEwLCAgMiwgIDApOwotICAgIEluc2VydERYR0lDb2xvckZv
cm1hdEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVU5PUk0sICAgICAgICAxMCwg
MTAsIDEwLCAgMiwgIDApOwotICAgIEluc2VydERYR0lDb2xvckZvcm1hdEluZm8oJm1hcCwgRFhH
SV9GT1JNQVRfUjEwRzEwQjEwQTJfVUlOVCwgICAgICAgICAxMCwgMTAsIDEwLCAgMiwgIDApOwot
Ci0gICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9SMTZfRkxP
QVQsICAgICAgICAgICAgICAgIDE2LCAgMCwgIDAsICAwLCAgMCk7Ci0gICAgSW5zZXJ0RFhHSUNv
bG9yRm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9SMTZHMTZfRkxPQVQsICAgICAgICAgICAg
IDE2LCAxNiwgIDAsICAwLCAgMCk7Ci0gICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbygmbWFw
LCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsICAgICAgIDE2LCAxNiwgMTYsIDE2LCAg
MCk7Ci0KLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1Iz
Ml9GTE9BVCwgICAgICAgICAgICAgICAgMzIsICAwLCAgMCwgIDAsICAwKTsKLSAgICBJbnNlcnRE
WEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwgICAgICAg
ICAgICAgMzIsIDMyLCAgMCwgIDAsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZv
KCZtYXAsIERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVCwgICAgICAgICAgMzIsIDMyLCAzMiwg
IDAsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFU
X1IzMkczMkIzMkEzMl9GTE9BVCwgICAgICAgMzIsIDMyLCAzMiwgMzIsICAwKTsKLQotICAgIElu
c2VydERYR0lDb2xvckZvcm1hdEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfUjlHOUI5RTVfU0hBUkVE
RVhQLCAgICAgICAgOSwgIDksICA5LCAgMCwgIDUpOwotICAgIEluc2VydERYR0lDb2xvckZvcm1h
dEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfUjExRzExQjEwX0ZMT0FULCAgICAgICAgICAxMSwgMTEs
IDEwLCAgMCwgIDApOwotCi0gICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbygmbWFwLCBEWEdJ
X0ZPUk1BVF9CNUc2UjVfVU5PUk0sICAgICAgICAgICAgICA1LCAgNiwgIDUsICAwLCAgMCk7Ci0g
ICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9CNEc0UjRBNF9V
Tk9STSwgICAgICAgICAgICA0LCAgNCwgIDQsICA0LCAgMCk7Ci0gICAgSW5zZXJ0RFhHSUNvbG9y
Rm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9CNUc1UjVBMV9VTk9STSwgICAgICAgICAgICA1
LCAgNSwgIDUsICAxLCAgMCk7Ci0KLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAs
IERYR0lfRk9STUFUX1I4X1RZUEVMRVNTLCAgICAgICAgICAgICAgIDgsICAwLCAgMCwgIDAsICAw
KTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1IxNl9U
WVBFTEVTUywgICAgICAgICAgICAgMTYsICAwLCAgMCwgIDAsICAwKTsKLSAgICBJbnNlcnREWEdJ
Q29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1IzMl9UWVBFTEVTUywgICAgICAgICAg
ICAgMzIsICAwLCAgMCwgIDAsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZt
YXAsIERYR0lfRk9STUFUX1I4RzhfVFlQRUxFU1MsICAgICAgICAgICAgIDgsICA4LCAgMCwgIDAs
ICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1Ix
NkcxNl9UWVBFTEVTUywgICAgICAgICAgMTYsIDE2LCAgMCwgIDAsICAwKTsKLSAgICBJbnNlcnRE
WEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1IzMkczMl9UWVBFTEVTUywgICAg
ICAgICAgMzIsIDMyLCAgMCwgIDAsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZv
KCZtYXAsIERYR0lfRk9STUFUX1IzMkczMkIzMl9UWVBFTEVTUywgICAgICAgMzIsIDMyLCAzMiwg
IDAsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFU
X1I4RzhCOEE4X1RZUEVMRVNTLCAgICAgICAgIDgsICA4LCAgOCwgIDgsICAwKTsKLSAgICBJbnNl
cnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9UWVBF
TEVTUywgICAgMTYsIDE2LCAxNiwgMTYsICAwKTsKLSAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJ
bmZvKCZtYXAsIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9UWVBFTEVTUywgICAgMzIsIDMyLCAz
MiwgMzIsICAwKTsKLQotICAgIEluc2VydERYR0lDb2xvckZvcm1hdEluZm8oJm1hcCwgRFhHSV9G
T1JNQVRfUjI0RzhfVFlQRUxFU1MsICAgICAgICAgICAyNCwgIDgsICAwLCAgMCwgIDApOwotICAg
IEluc2VydERYR0lDb2xvckZvcm1hdEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfUjI0X1VOT1JNX1g4
X1RZUEVMRVNTLCAgICAyNCwgIDAsICAwLCAgMCwgIDApOwotICAgIEluc2VydERYR0lDb2xvckZv
cm1hdEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfUjMyRzhYMjRfVFlQRUxFU1MsICAgICAgICAzMiwg
IDgsICAwLCAgMCwgIDApOwotICAgIEluc2VydERYR0lDb2xvckZvcm1hdEluZm8oJm1hcCwgRFhH
SV9GT1JNQVRfUjMyX0ZMT0FUX1g4WDI0X1RZUEVMRVNTLCAzMiwgIDAsICAwLCAgMCwgIDApOwot
ICAgIC8vIGNsYW5nLWZvcm1hdCBvbgotCi0gICAgcmV0dXJuIG1hcDsKLX0KLQotc3RydWN0IERY
R0lEZXB0aFN0ZW5jaWxJbmZvCi17Ci0gICAgdW5zaWduZWQgaW50IGRlcHRoQml0czsKLSAgICB1
bnNpZ25lZCBpbnQgc3RlbmNpbEJpdHM7Ci19OwotCi10eXBlZGVmIHN0ZDo6bWFwPERYR0lfRk9S
TUFULCBEWEdJRGVwdGhTdGVuY2lsSW5mbz4gRGVwdGhTdGVuY2lsSW5mb01hcDsKLXR5cGVkZWYg
c3RkOjpwYWlyPERYR0lfRk9STUFULCBEWEdJRGVwdGhTdGVuY2lsSW5mbz4gRGVwdGhTdGVuY2ls
SW5mb1BhaXI7Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBJbnNlcnREWEdJRGVwdGhTdGVuY2lsSW5m
byhEZXB0aFN0ZW5jaWxJbmZvTWFwICptYXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVQgZm9ybWF0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkZXB0aEJpdHMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHN0
ZW5jaWxCaXRzKQotewotICAgIERYR0lEZXB0aFN0ZW5jaWxJbmZvIGluZm87Ci0gICAgaW5mby5k
ZXB0aEJpdHMgPSBkZXB0aEJpdHM7Ci0gICAgaW5mby5zdGVuY2lsQml0cyA9IHN0ZW5jaWxCaXRz
OwotCi0gICAgbWFwLT5pbnNlcnQoc3RkOjptYWtlX3BhaXIoZm9ybWF0LCBpbmZvKSk7Ci19Ci0K
LXN0YXRpYyBEZXB0aFN0ZW5jaWxJbmZvTWFwIEJ1aWxkRGVwdGhTdGVuY2lsSW5mb01hcCgpCi17
Ci0gICAgRGVwdGhTdGVuY2lsSW5mb01hcCBtYXA7Ci0KLSAgICAvLyBjbGFuZy1mb3JtYXQgb2Zm
Ci0gICAgSW5zZXJ0RFhHSURlcHRoU3RlbmNpbEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfRDE2X1VO
T1JNLCAgICAgICAgICAgICAgICAxNiwgMCk7Ci0gICAgSW5zZXJ0RFhHSURlcHRoU3RlbmNpbElu
Zm8oJm1hcCwgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQsICAgICAgICAyNCwgOCk7Ci0g
ICAgSW5zZXJ0RFhHSURlcHRoU3RlbmNpbEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfRDMyX0ZMT0FU
LCAgICAgICAgICAgICAgICAzMiwgMCk7Ci0gICAgSW5zZXJ0RFhHSURlcHRoU3RlbmNpbEluZm8o
Jm1hcCwgRFhHSV9GT1JNQVRfRDMyX0ZMT0FUX1M4WDI0X1VJTlQsICAgICAzMiwgOCk7Ci0gICAg
Ly8gY2xhbmctZm9ybWF0IG9uCi0KLSAgICByZXR1cm4gbWFwOwotfQotCi10eXBlZGVmIHN0ZDo6
bWFwPERYR0lfRk9STUFULCBEWEdJRm9ybWF0PiBEWEdJRm9ybWF0SW5mb01hcDsKLQotRFhHSUZv
cm1hdDo6RFhHSUZvcm1hdCgpCi0gICAgOiByZWRCaXRzKDApLAotICAgICAgZ3JlZW5CaXRzKDAp
LAotICAgICAgYmx1ZUJpdHMoMCksCi0gICAgICBhbHBoYUJpdHMoMCksCi0gICAgICBzaGFyZWRC
aXRzKDApLAotICAgICAgZGVwdGhCaXRzKDApLAotICAgICAgc3RlbmNpbEJpdHMoMCksCi0gICAg
ICBjb21wb25lbnRUeXBlKEdMX05PTkUpLAotICAgICAgZmFzdENvcHlGdW5jdGlvbnMoKSwKLSAg
ICAgIG5hdGl2ZU1pcG1hcFN1cHBvcnQoTlVMTCkKLXsKLX0KLQotc3RhdGljIGJvb2wgTmV2ZXJT
dXBwb3J0ZWQoRDNEX0ZFQVRVUkVfTEVWRUwpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi10
ZW1wbGF0ZSA8RDNEX0ZFQVRVUkVfTEVWRUwgcmVxdWlyZWRGZWF0dXJlTGV2ZWw+Ci1zdGF0aWMg
Ym9vbCBSZXF1aXJlc0ZlYXR1cmVMZXZlbChEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwp
Ci17Ci0gICAgcmV0dXJuIGZlYXR1cmVMZXZlbCA+PSByZXF1aXJlZEZlYXR1cmVMZXZlbDsKLX0K
LQotQ29sb3JDb3B5RnVuY3Rpb24gRFhHSUZvcm1hdDo6Z2V0RmFzdENvcHlGdW5jdGlvbihHTGVu
dW0gZm9ybWF0LCBHTGVudW0gdHlwZSkgY29uc3QKLXsKLSAgICBGYXN0Q29weUZ1bmN0aW9uTWFw
Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gZmFzdENvcHlGdW5jdGlvbnMuZmluZChzdGQ6Om1ha2Vf
cGFpcihmb3JtYXQsIHR5cGUpKTsKLSAgICByZXR1cm4gKGl0ZXIgIT0gZmFzdENvcHlGdW5jdGlv
bnMuZW5kKCkpID8gaXRlci0+c2Vjb25kIDogTlVMTDsKLX0KLQotdm9pZCBBZGREWEdJRm9ybWF0
KERYR0lGb3JtYXRJbmZvTWFwICptYXAsCi0gICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVQg
ZHhnaUZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICBHTGVudW0gY29tcG9uZW50VHlwZSwKLSAg
ICAgICAgICAgICAgICAgICBOYXRpdmVNaXBtYXBHZW5lcmF0aW9uU3VwcG9ydEZ1bmN0aW9uIG5h
dGl2ZU1pcG1hcFN1cHBvcnQpCi17Ci0gICAgRFhHSUZvcm1hdCBpbmZvOwotCi0gICAgc3RhdGlj
IGNvbnN0IENvbG9yRm9ybWF0SW5mb01hcCBjb2xvckluZm9NYXAgPSBCdWlsZENvbG9yRm9ybWF0
SW5mb01hcCgpOwotICAgIENvbG9yRm9ybWF0SW5mb01hcDo6Y29uc3RfaXRlcmF0b3IgY29sb3JJ
bmZvSXRlciA9IGNvbG9ySW5mb01hcC5maW5kKGR4Z2lGb3JtYXQpOwotICAgIGlmIChjb2xvcklu
Zm9JdGVyICE9IGNvbG9ySW5mb01hcC5lbmQoKSkKLSAgICB7Ci0gICAgICAgIGNvbnN0IERYR0lD
b2xvckZvcm1hdEluZm8gJmNvbG9ySW5mbyA9IGNvbG9ySW5mb0l0ZXItPnNlY29uZDsKLSAgICAg
ICAgaW5mby5yZWRCaXRzICAgICAgICAgICAgICAgICAgICAgICAgID0gc3RhdGljX2Nhc3Q8R0x1
aW50Pihjb2xvckluZm8ucmVkQml0cyk7Ci0gICAgICAgIGluZm8uZ3JlZW5CaXRzICAgICAgICAg
ICAgICAgICAgICAgICA9IHN0YXRpY19jYXN0PEdMdWludD4oY29sb3JJbmZvLmdyZWVuQml0cyk7
Ci0gICAgICAgIGluZm8uYmx1ZUJpdHMgICAgICAgICAgICAgICAgICAgICAgICA9IHN0YXRpY19j
YXN0PEdMdWludD4oY29sb3JJbmZvLmJsdWVCaXRzKTsKLSAgICAgICAgaW5mby5hbHBoYUJpdHMg
ICAgICAgICAgICAgICAgICAgICAgID0gc3RhdGljX2Nhc3Q8R0x1aW50Pihjb2xvckluZm8uYWxw
aGFCaXRzKTsKLSAgICAgICAgaW5mby5zaGFyZWRCaXRzICAgICAgICAgICAgICAgICAgICAgID0g
c3RhdGljX2Nhc3Q8R0x1aW50Pihjb2xvckluZm8uc2hhcmVkQml0cyk7Ci0gICAgfQotCi0gICAg
c3RhdGljIGNvbnN0IERlcHRoU3RlbmNpbEluZm9NYXAgZHNJbmZvTWFwID0gQnVpbGREZXB0aFN0
ZW5jaWxJbmZvTWFwKCk7Ci0gICAgRGVwdGhTdGVuY2lsSW5mb01hcDo6Y29uc3RfaXRlcmF0b3Ig
ZHNJbmZvSXRlciA9IGRzSW5mb01hcC5maW5kKGR4Z2lGb3JtYXQpOwotICAgIGlmIChkc0luZm9J
dGVyICE9IGRzSW5mb01hcC5lbmQoKSkKLSAgICB7Ci0gICAgICAgIGNvbnN0IERYR0lEZXB0aFN0
ZW5jaWxJbmZvICZkc0luZm8gPSBkc0luZm9JdGVyLT5zZWNvbmQ7Ci0gICAgICAgIGluZm8uZGVw
dGhCaXRzID0gZHNJbmZvLmRlcHRoQml0czsKLSAgICAgICAgaW5mby5zdGVuY2lsQml0cyA9IGRz
SW5mby5zdGVuY2lsQml0czsKLSAgICB9Ci0KLSAgICBpbmZvLmNvbXBvbmVudFR5cGUgPSBjb21w
b25lbnRUeXBlOwotCi0gICAgc3RhdGljIGNvbnN0IEQzRDExRmFzdENvcHlNYXAgZmFzdENvcHlN
YXAgPSBCdWlsZEZhc3RDb3B5TWFwKCk7Ci0gICAgc3RkOjpwYWlyPEQzRDExRmFzdENvcHlNYXA6
OmNvbnN0X2l0ZXJhdG9yLCBEM0QxMUZhc3RDb3B5TWFwOjpjb25zdF9pdGVyYXRvcj4gZmFzdENv
cHlJdGVyID0gZmFzdENvcHlNYXAuZXF1YWxfcmFuZ2UoZHhnaUZvcm1hdCk7Ci0gICAgZm9yIChE
M0QxMUZhc3RDb3B5TWFwOjpjb25zdF9pdGVyYXRvciBpID0gZmFzdENvcHlJdGVyLmZpcnN0OyBp
ICE9IGZhc3RDb3B5SXRlci5zZWNvbmQ7IGkrKykKLSAgICB7Ci0gICAgICAgIGluZm8uZmFzdENv
cHlGdW5jdGlvbnMuaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKHN0ZDo6bWFrZV9wYWlyKGktPnNlY29u
ZC5kZXN0Rm9ybWF0LCBpLT5zZWNvbmQuZGVzdFR5cGUpLCBpLT5zZWNvbmQuY29weUZ1bmN0aW9u
KSk7Ci0gICAgfQotCi0gICAgaW5mby5uYXRpdmVNaXBtYXBTdXBwb3J0ID0gbmF0aXZlTWlwbWFw
U3VwcG9ydDsKLQotICAgIG1hcC0+aW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKGR4Z2lGb3JtYXQsIGlu
Zm8pKTsKLX0KLQotLy8gQSBtYXAgdG8gZGV0ZXJtaW5lIHRoZSBjb2xvciByZWFkIGZ1bmN0aW9u
IGFuZCBtaXBtYXAgZ2VuZXJhdGlvbiBmdW5jdGlvbiBvZiBhIGdpdmVuIERYR0kgZm9ybWF0Ci1z
dGF0aWMgRFhHSUZvcm1hdEluZm9NYXAgQnVpbGREWEdJRm9ybWF0SW5mb01hcCgpCi17Ci0gICAg
RFhHSUZvcm1hdEluZm9NYXAgbWFwOwotCi0gICAgLy8gY2xhbmctZm9ybWF0IG9mZgotICAgIC8v
ICAgICAgICAgICAgICAgIHwgRFhHSSBmb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBD
b21wb25lbnQgVHlwZSAgICAgICAgfCBDb2xvciByZWFkIGZ1bmN0aW9uICAgICAgICAgICAgICB8
IE5hdGl2ZSBtaXBtYXAgZnVuY3Rpb24KLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9S
TUFUX1VOS05PV04sICAgICAgICAgICAgICAgICAgR0xfTk9ORSwgICAgICAgICAgICAgICAgTmV2
ZXJTdXBwb3J0ZWQpOwotCi0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9BOF9V
Tk9STSwgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIFJlcXVpcmVzRmVh
dHVyZUxldmVsPEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA+KTsKLSAgICBBZGREWEdJRm9ybWF0KCZt
YXAsIERYR0lfRk9STUFUX1I4X1VOT1JNLCAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9S
TUFMSVpFRCwgUmVxdWlyZXNGZWF0dXJlTGV2ZWw8RDNEX0ZFQVRVUkVfTEVWRUxfMTBfMD4pOwot
ICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjE2X1VOT1JNLCAgICAgICAgICAg
ICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkRFhH
SUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SOEc4X1VOT1JNLCAgICAgICAgICAgICAgIEdMX1VO
U0lHTkVEX05PUk1BTElaRUQsIFJlcXVpcmVzRmVhdHVyZUxldmVsPEQzRF9GRUFUVVJFX0xFVkVM
XzEwXzA+KTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IxNkcxNl9VTk9S
TSwgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgTmV2ZXJTdXBwb3J0ZWQpOwot
ICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sICAgICAg
ICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBSZXF1aXJlc0ZlYXR1cmVMZXZlbDxEM0RfRkVB
VFVSRV9MRVZFTF85XzE+KTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1I4
RzhCOEE4X1VOT1JNX1NSR0IsICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgUmVxdWlyZXNG
ZWF0dXJlTGV2ZWw8RDNEX0ZFQVRVUkVfTEVWRUxfOV8xPik7Ci0gICAgQWRkRFhHSUZvcm1hdCgm
bWFwLCBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwgICAgICAgICAgIEdMX1VOU0lHTkVEX05P
Uk1BTElaRUQsIFJlcXVpcmVzRmVhdHVyZUxldmVsPEQzRF9GRUFUVVJFX0xFVkVMXzlfMT4pOwot
ICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNLCAg
ICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBOZXZlclN1cHBvcnRlZCk7Ci0KLSAgICBBZGRE
WEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1I4X1NOT1JNLCAgICAgICAgICAgICAgICAgR0xf
U0lHTkVEX05PUk1BTElaRUQsICAgUmVxdWlyZXNGZWF0dXJlTGV2ZWw8RDNEX0ZFQVRVUkVfTEVW
RUxfMTBfMD4pOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjE2X1NOT1JN
LCAgICAgICAgICAgICAgICBHTF9TSUdORURfTk9STUFMSVpFRCwgICBOZXZlclN1cHBvcnRlZCk7
Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SOEc4X1NOT1JNLCAgICAgICAg
ICAgICAgIEdMX1NJR05FRF9OT1JNQUxJWkVELCAgIFJlcXVpcmVzRmVhdHVyZUxldmVsPEQzRF9G
RUFUVVJFX0xFVkVMXzEwXzA+KTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFU
X1IxNkcxNl9TTk9STSwgICAgICAgICAgICAgR0xfU0lHTkVEX05PUk1BTElaRUQsICAgTmV2ZXJT
dXBwb3J0ZWQpOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjhHOEI4QThf
U05PUk0sICAgICAgICAgICBHTF9TSUdORURfTk9STUFMSVpFRCwgICBSZXF1aXJlc0ZlYXR1cmVM
ZXZlbDxEM0RfRkVBVFVSRV9MRVZFTF8xMF8wPik7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBE
WEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU05PUk0sICAgICAgIEdMX1NJR05FRF9OT1JNQUxJWkVE
LCAgIE5ldmVyU3VwcG9ydGVkKTsKLQotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JN
QVRfUjhfVUlOVCwgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICBOZXZl
clN1cHBvcnRlZCk7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SMTZfVUlO
VCwgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgIE5ldmVyU3VwcG9ydGVk
KTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IzMl9VSU5ULCAgICAgICAg
ICAgICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFk
ZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjhHOF9VSU5ULCAgICAgICAgICAgICAgICBH
TF9VTlNJR05FRF9JTlQsICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkRFhHSUZvcm1h
dCgmbWFwLCBEWEdJX0ZPUk1BVF9SMTZHMTZfVUlOVCwgICAgICAgICAgICAgIEdMX1VOU0lHTkVE
X0lOVCwgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERY
R0lfRk9STUFUX1IzMkczMl9VSU5ULCAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAg
ICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRf
UjMyRzMyQjMyX1VJTlQsICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICBOZXZlclN1
cHBvcnRlZCk7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9V
SU5ULCAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsK
LSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5ULCAg
ICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZERY
R0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQsICAgICAgICBHTF9V
TlNJR05FRF9JTlQsICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0KLSAgICBBZGREWEdJRm9ybWF0
KCZtYXAsIERYR0lfRk9STUFUX1I4X1NJTlQsICAgICAgICAgICAgICAgICAgR0xfSU5ULCAgICAg
ICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhH
SV9GT1JNQVRfUjE2X1NJTlQsICAgICAgICAgICAgICAgICBHTF9JTlQsICAgICAgICAgICAgICAg
ICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9S
MzJfU0lOVCwgICAgICAgICAgICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgIE5ldmVyU3Vw
cG9ydGVkKTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1I4RzhfU0lOVCwg
ICAgICAgICAgICAgICAgR0xfSU5ULCAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwot
ICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQsICAgICAgICAg
ICAgICBHTF9JTlQsICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkRFhH
SUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SMzJHMzJfU0lOVCwgICAgICAgICAgICAgIEdMX0lO
VCwgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGREWEdJRm9ybWF0KCZt
YXAsIERYR0lfRk9STUFUX1IzMkczMkIzMl9TSU5ULCAgICAgICAgICAgR0xfSU5ULCAgICAgICAg
ICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9G
T1JNQVRfUjhHOEI4QThfU0lOVCwgICAgICAgICAgICBHTF9JTlQsICAgICAgICAgICAgICAgICBO
ZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SMTZH
MTZCMTZBMTZfU0lOVCwgICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9y
dGVkKTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9T
SU5ULCAgICAgICAgR0xfSU5ULCAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotCi0g
ICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9UWVBFTEVTUywg
ICAgIEdMX05PTkUsICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGREWEdJ
Rm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VOT1JNLCAgICAgICAgR0xfVU5T
SUdORURfTk9STUFMSVpFRCwgUmVxdWlyZXNGZWF0dXJlTGV2ZWw8RDNEX0ZFQVRVUkVfTEVWRUxf
MTBfMD4pOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJf
VUlOVCwgICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0K
LSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IxNl9GTE9BVCwgICAgICAgICAg
ICAgICAgR0xfRkxPQVQsICAgICAgICAgICAgICAgUmVxdWlyZXNGZWF0dXJlTGV2ZWw8RDNEX0ZF
QVRVUkVfTEVWRUxfMTBfMD4pOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRf
UjE2RzE2X0ZMT0FULCAgICAgICAgICAgICBHTF9GTE9BVCwgICAgICAgICAgICAgICBSZXF1aXJl
c0ZlYXR1cmVMZXZlbDxEM0RfRkVBVFVSRV9MRVZFTF85XzI+KTsKLSAgICBBZGREWEdJRm9ybWF0
KCZtYXAsIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwgICAgICAgR0xfRkxPQVQsICAg
ICAgICAgICAgICAgUmVxdWlyZXNGZWF0dXJlTGV2ZWw8RDNEX0ZFQVRVUkVfTEVWRUxfOV8yPik7
Ci0KLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IzMl9GTE9BVCwgICAgICAg
ICAgICAgICAgR0xfRkxPQVQsICAgICAgICAgICAgICAgUmVxdWlyZXNGZWF0dXJlTGV2ZWw8RDNE
X0ZFQVRVUkVfTEVWRUxfOV8yPik7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1B
VF9SMzJHMzJfRkxPQVQsICAgICAgICAgICAgIEdMX0ZMT0FULCAgICAgICAgICAgICAgIFJlcXVp
cmVzRmVhdHVyZUxldmVsPEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA+KTsKLSAgICBBZGREWEdJRm9y
bWF0KCZtYXAsIERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVCwgICAgICAgICAgR0xfRkxPQVQs
ICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwg
RFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULCAgICAgICBHTF9GTE9BVCwgICAgICAgICAg
ICAgICBSZXF1aXJlc0ZlYXR1cmVMZXZlbDxEM0RfRkVBVFVSRV9MRVZFTF85XzM+KTsKLQotICAg
IEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjlHOUI5RTVfU0hBUkVERVhQLCAgICAg
ICBHTF9GTE9BVCwgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkRFhHSUZv
cm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SMTFHMTFCMTBfRkxPQVQsICAgICAgICAgIEdMX0ZMT0FU
LCAgICAgICAgICAgICAgIFJlcXVpcmVzRmVhdHVyZUxldmVsPEQzRF9GRUFUVVJFX0xFVkVMXzEw
XzA+KTsKLQotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjhfVFlQRUxFU1Ms
ICAgICAgICAgICAgICBHTF9OT05FLCAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0g
ICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SMTZfVFlQRUxFU1MsICAgICAgICAg
ICAgIEdMX05PTkUsICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGREWEdJ
Rm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IzMl9UWVBFTEVTUywgICAgICAgICAgICAgR0xfTk9O
RSwgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZERYR0lGb3JtYXQoJm1h
cCwgRFhHSV9GT1JNQVRfUjhHOF9UWVBFTEVTUywgICAgICAgICAgICBHTF9OT05FLCAgICAgICAg
ICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZP
Uk1BVF9SMTZHMTZfVFlQRUxFU1MsICAgICAgICAgIEdMX05PTkUsICAgICAgICAgICAgICAgIE5l
dmVyU3VwcG9ydGVkKTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IzMkcz
Ml9UWVBFTEVTUywgICAgICAgICAgR0xfTk9ORSwgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0
ZWQpOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjhHOF9UWVBFTEVTUywg
ICAgICAgICAgICBHTF9OT05FLCAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAg
QWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SMTZHMTZfVFlQRUxFU1MsICAgICAgICAg
IEdMX05PTkUsICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGREWEdJRm9y
bWF0KCZtYXAsIERYR0lfRk9STUFUX1IzMkczMl9UWVBFTEVTUywgICAgICAgICAgR0xfTk9ORSwg
ICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwg
RFhHSV9GT1JNQVRfUjMyRzMyQjMyX1RZUEVMRVNTLCAgICAgICBHTF9OT05FLCAgICAgICAgICAg
ICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1B
VF9SOEc4QjhBOF9UWVBFTEVTUywgICAgICAgIEdMX05PTkUsICAgICAgICAgICAgICAgIE5ldmVy
U3VwcG9ydGVkKTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IxNkcxNkIx
NkExNl9UWVBFTEVTUywgICAgR0xfTk9ORSwgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQp
OwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1RZUEVM
RVNTLCAgICBHTF9OT05FLCAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0KLSAgICBB
ZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IyNEc4X1RZUEVMRVNTLCAgICAgICAgICAg
R0xfTk9ORSwgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZERYR0lGb3Jt
YXQoJm1hcCwgRFhHSV9GT1JNQVRfUjI0X1VOT1JNX1g4X1RZUEVMRVNTLCAgICBHTF9OT05FLCAg
ICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBE
WEdJX0ZPUk1BVF9SMzJHOFgyNF9UWVBFTEVTUywgICAgICAgIEdMX05PTkUsICAgICAgICAgICAg
ICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFU
X1IzMl9GTE9BVF9YOFgyNF9UWVBFTEVTUywgR0xfTk9ORSwgICAgICAgICAgICAgICAgTmV2ZXJT
dXBwb3J0ZWQpOwotCi0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9EMTZfVU5P
Uk0sICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIE5ldmVyU3VwcG9ydGVk
KTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5U
LCAgICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFk
ZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfRDMyX0ZMT0FUX1M4WDI0X1VJTlQsICAgICBH
TF9VTlNJR05FRF9JTlQsICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkRFhHSUZvcm1h
dCgmbWFwLCBEWEdJX0ZPUk1BVF9EMzJfRkxPQVQsICAgICAgICAgICAgICAgIEdMX0ZMT0FULCAg
ICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKLQotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwg
RFhHSV9GT1JNQVRfQkMxX1VOT1JNLCAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJ
WkVELCBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1B
VF9CQzJfVU5PUk0sICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIE5ldmVy
U3VwcG9ydGVkKTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX0JDM19VTk9S
TSwgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgTmV2ZXJTdXBwb3J0ZWQp
OwotCi0gICAgLy8gQjVHNlI1IGluIEQzRDExIGlzIHRyZWF0ZWQgdGhlIHNhbWUgYXMgUjVHNkI1
IGluIEQzRDksIHNvIHJldXNlIHRoZSBSNUc2QjUgZnVuY3Rpb25zIHVzZWQgYnkgdGhlIEQzRDkg
cmVuZGVyZXIuCi0gICAgLy8gVGhlIHNhbWUgYXBwbGllcyB0byBCNEc0UjRBNCBhbmQgQjVHNVI1
QTEgd2l0aCBBNFI0RzRCNCBhbmQgQTFSNUc1QjUgcmVzcGVjdGl2ZWx5LgotICAgIEFkZERYR0lG
b3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNLCAgICAgICAgICAgICBHTF9VTlNJ
R05FRF9OT1JNQUxJWkVELCBSZXF1aXJlc0ZlYXR1cmVMZXZlbDxEM0RfRkVBVFVSRV9MRVZFTF85
XzE+KTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX0I0RzRSNEE0X1VOT1JN
LCAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgTmV2ZXJTdXBwb3J0ZWQpOwotICAg
IEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfQjVHNVI1QTFfVU5PUk0sICAgICAgICAg
ICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBOZXZlclN1cHBvcnRlZCk7Ci0gICAgLy8gY2xhbmct
Zm9ybWF0IG9uCi0KLSAgICByZXR1cm4gbWFwOwotfQotCi1jb25zdCBEWEdJRm9ybWF0ICZHZXRE
WEdJRm9ybWF0SW5mbyhEWEdJX0ZPUk1BVCBmb3JtYXQpCi17Ci0gICAgc3RhdGljIGNvbnN0IERY
R0lGb3JtYXRJbmZvTWFwIGluZm9NYXAgPSBCdWlsZERYR0lGb3JtYXRJbmZvTWFwKCk7Ci0gICAg
RFhHSUZvcm1hdEluZm9NYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBpbmZvTWFwLmZpbmQoZm9y
bWF0KTsKLSAgICBpZiAoaXRlciAhPSBpbmZvTWFwLmVuZCgpKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGl0ZXItPnNlY29uZDsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgc3RhdGlj
IERYR0lGb3JtYXQgZGVmYXVsdEluZm87Ci0gICAgICAgIHJldHVybiBkZWZhdWx0SW5mbzsKLSAg
ICB9Ci19Ci0KIERYR0lGb3JtYXRTaXplOjpEWEdJRm9ybWF0U2l6ZShHTHVpbnQgcGl4ZWxCaXRz
LCBHTHVpbnQgYmxvY2tXaWR0aCwgR0x1aW50IGJsb2NrSGVpZ2h0KQogICAgIDogcGl4ZWxCeXRl
cyhwaXhlbEJpdHMgLyA4KSwgYmxvY2tXaWR0aChibG9ja1dpZHRoKSwgYmxvY2tIZWlnaHQoYmxv
Y2tIZWlnaHQpCiB7CkBAIC0xMTkzLDYgKzgzNCw2IEBACiAgICAgfQogfQogCi19Cit9ICAvLyBu
YW1lc3BhY2UgZDNkMTEKIAotfQorfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2Zvcm1hdHV0aWxz
MTEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL2Zvcm1hdHV0aWxzMTEuaAkocmV2aXNpb24gMjA4MDIxKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9m
b3JtYXR1dGlsczExLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRl
ICJjb21tb24vcGxhdGZvcm0uaCIKICNpbmNsdWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgiCiAj
aW5jbHVkZSAibGliQU5HTEUvZm9ybWF0dXRpbHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9yZW5kZXJlcl91dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9m
b3JtYXR1dGlsc0QzRC5oIgogCiBuYW1lc3BhY2UgcngKQEAgLTI0LDM3ICsyNSwxMiBAQAogbmFt
ZXNwYWNlIGQzZDExCiB7CiAKLXR5cGVkZWYgc3RkOjptYXA8c3RkOjpwYWlyPEdMZW51bSwgR0xl
bnVtPiwgQ29sb3JDb3B5RnVuY3Rpb24+IEZhc3RDb3B5RnVuY3Rpb25NYXA7Ci10eXBlZGVmIGJv
b2wgKCpOYXRpdmVNaXBtYXBHZW5lcmF0aW9uU3VwcG9ydEZ1bmN0aW9uKShEM0RfRkVBVFVSRV9M
RVZFTCk7Ci0KLXN0cnVjdCBEWEdJRm9ybWF0Ci17Ci0gICAgRFhHSUZvcm1hdCgpOwotCi0gICAg
R0x1aW50IHJlZEJpdHM7Ci0gICAgR0x1aW50IGdyZWVuQml0czsKLSAgICBHTHVpbnQgYmx1ZUJp
dHM7Ci0gICAgR0x1aW50IGFscGhhQml0czsKLSAgICBHTHVpbnQgc2hhcmVkQml0czsKLQotICAg
IEdMdWludCBkZXB0aEJpdHM7Ci0gICAgR0x1aW50IHN0ZW5jaWxCaXRzOwotCi0gICAgR0xlbnVt
IGNvbXBvbmVudFR5cGU7Ci0KLSAgICBGYXN0Q29weUZ1bmN0aW9uTWFwIGZhc3RDb3B5RnVuY3Rp
b25zOwotCi0gICAgTmF0aXZlTWlwbWFwR2VuZXJhdGlvblN1cHBvcnRGdW5jdGlvbiBuYXRpdmVN
aXBtYXBTdXBwb3J0OwotCi0gICAgQ29sb3JDb3B5RnVuY3Rpb24gZ2V0RmFzdENvcHlGdW5jdGlv
bihHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSkgY29uc3Q7Ci19OwotCi0vLyBUaGlzIHN0cnVj
dHVyZSBpcyBwcm9ibGVtYXRpYyBiZWNhdXNlIGEgcmVzb3VyY2UgaXMgYXNzb2NpYXRlZCB3aXRo
IG11bHRpcGxlIERYR0kgZm9ybWF0cy4KLS8vIEZvciBleGFtcGxlLCBhIHRleHR1cmUgbWlnaHQg
YmUgc3RvcmVkIGFzIERYR0lfRk9STUFUX1IxNl9UWVBFTEVTUyBidXQgc3RvcmUgaW50ZWdlciBj
b21wb25lbnRzLAorLy8gQSB0ZXh0dXJlIG1pZ2h0IGJlIHN0b3JlZCBhcyBEWEdJX0ZPUk1BVF9S
MTZfVFlQRUxFU1MgYnV0IHN0b3JlIGludGVnZXIgY29tcG9uZW50cywKIC8vIHdoaWNoIGFyZSBh
Y2Nlc3NlZCB0aHJvdWdoIGFuIERYR0lfRk9STUFUX1IxNl9TSU5UIHZpZXcuIEl0J3MgZWFzeSB0
byB3cml0ZSBjb2RlIHdoaWNoIHF1ZXJpZXMKIC8vIGluZm9ybWF0aW9uIGFib3V0IHRoZSB3cm9u
ZyBmb3JtYXQuIFRoZXJlZm9yZSwgdXNlIG9mIHRoaXMgc2hvdWxkIGJlIGF2b2lkZWQgd2hlcmUg
cG9zc2libGUuCi1jb25zdCBEWEdJRm9ybWF0ICZHZXREWEdJRm9ybWF0SW5mbyhEWEdJX0ZPUk1B
VCBmb3JtYXQpOwogCitib29sIFN1cHBvcnRzTWlwR2VuKERYR0lfRk9STUFUIGR4Z2lGb3JtYXQs
IEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCk7CisKIHN0cnVjdCBEWEdJRm9ybWF0U2l6
ZQogewogICAgIERYR0lGb3JtYXRTaXplKEdMdWludCBwaXhlbEJpdHMsIEdMdWludCBibG9ja1dp
ZHRoLCBHTHVpbnQgYmxvY2tIZWlnaHQpOwpAQCAtNzksNiArNTUsOSBAQAogY29uc3QgVmVydGV4
Rm9ybWF0ICZHZXRWZXJ0ZXhGb3JtYXRJbmZvKGdsOjpWZXJ0ZXhGb3JtYXRUeXBlIHZlcnRleEZv
cm1hdFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEX0ZF
QVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKTsKIAorLy8gQXV0by1nZW5lcmF0ZWQgaW4gZHhnaV9m
b3JtYXRfbWFwX2F1dG9nZW4uY3BwLgorR0xlbnVtIEdldENvbXBvbmVudFR5cGUoRFhHSV9GT1JN
QVQgZHhnaUZvcm1hdCk7CisKIH0gIC8vIG5hbWVzcGFjZSBkM2QxMQogCiB9ICAvLyBuYW1lc3Bh
Y2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvZ2VuX2R4Z2lfZm9ybWF0X3RhYmxlLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZ2VuX2R4
Z2lfZm9ybWF0X3RhYmxlLnB5CShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZ2VuX2R4Z2lfZm9ybWF0X3RhYmxl
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTM0IEBACisjIS91c3IvYmluL3B5dGhvbgor
IyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisj
CisjIGdlbl9keGdpX2Zvcm1hdF90YWJsZS5weToKKyMgIENvZGUgZ2VuZXJhdGlvbiBmb3IgRFhH
SSBmb3JtYXQgbWFwLgorCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRlCitpbXBvcnQgc3lzCisK
K3N5cy5wYXRoLmFwcGVuZCgnLi4vLi4nKQoraW1wb3J0IGFuZ2xlX2Zvcm1hdAorCit0ZW1wbGF0
ZV9jcHAgPSAiIiIvLyBHRU5FUkFURUQgRklMRSAtIERPIE5PVCBFRElULgorLy8gR2VuZXJhdGVk
IGJ5IHtzY3JpcHRfbmFtZX0gdXNpbmcgZGF0YSBmcm9tIHtkYXRhX3NvdXJjZV9uYW1lfS4KKy8v
CisvLyBDb3B5cmlnaHQge2NvcHlyaWdodF95ZWFyfSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisvLyBEWEdJIGZvcm1hdCBpbmZvOgorLy8gICBEZXRlcm1pbmlu
ZyBtZXRhZGF0YSBhYm91dCBhIERYR0kgZm9ybWF0LgorCisjaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvRm9ybWF0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNlIHJ4
Cit7eworCituYW1lc3BhY2UgZDNkMTEKK3t7CisKK0dMZW51bSBHZXRDb21wb25lbnRUeXBlKERY
R0lfRk9STUFUIGR4Z2lGb3JtYXQpCit7eworICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKKyAgICB7
ewore2NvbXBvbmVudF90eXBlX2Nhc2VzfSAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJy
ZWFrOworICAgIH19CisKKyAgICBVTlJFQUNIQUJMRSgpOworICAgIHJldHVybiBHTF9OT05FOwor
fX0KKworfX0gIC8vIG5hbWVzcGFjZSBkM2QxMQorCituYW1lc3BhY2UgZDNkMTFfYW5nbGUKK3t7
CisKK2NvbnN0IEZvcm1hdCAmR2V0Rm9ybWF0KERYR0lfRk9STUFUIGR4Z2lGb3JtYXQpCit7ewor
ICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKKyAgICB7ewore2Zvcm1hdF9jYXNlc30gICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICB9fQorCisgICAgVU5SRUFDSEFCTEUoKTsK
KyAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6Tk9ORSk7Cit9fQorCit9fSAgLy8g
bmFtZXNwYWNlIGQzZDExX2FuZ2xlCisKK319ICAvLyBuYW1lc3BhY2UgcngKKyIiIgorCit0ZW1w
bGF0ZV9mb3JtYXRfY2FzZSA9ICIiIiAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF97ZHhnaV9mb3Jt
YXR9OgorICAgICAgICAgICAgcmV0dXJuIHtyZXN1bHR9OworIiIiCisKK3RlbXBsYXRlX3VuZGVm
aW5lZF9jYXNlID0gIiIiICAgICAgICBjYXNlIERYR0lfRk9STUFUX3tkeGdpX2Zvcm1hdH06Cisg
ICAgICAgICAgICBicmVhazsKKyIiIgorCitkZWYgZm9ybWF0X2Nhc2UoZHhnaV9mb3JtYXQsIHJl
c3VsdCk6CisgICAgcmV0dXJuIHRlbXBsYXRlX2Zvcm1hdF9jYXNlLmZvcm1hdCgKKyAgICAgICAg
ZHhnaV9mb3JtYXQgPSBkeGdpX2Zvcm1hdCwKKyAgICAgICAgcmVzdWx0ID0gcmVzdWx0KQorCitk
ZWYgdW5kZWZpbmVkX2Nhc2UoZHhnaV9mb3JtYXQpOgorICAgIHJldHVybiB0ZW1wbGF0ZV91bmRl
ZmluZWRfY2FzZS5mb3JtYXQoZHhnaV9mb3JtYXQgPSBkeGdpX2Zvcm1hdCkKKworY29tcG9uZW50
X2Nhc2VzID0gIiIKK2Zvcm1hdF9jYXNlcyA9ICIiCisKK2lucHV0X2RhdGEgPSAnZHhnaV9mb3Jt
YXRfZGF0YS5qc29uJworCitkeGdpX21hcCA9IGFuZ2xlX2Zvcm1hdC5sb2FkX2pzb24oaW5wdXRf
ZGF0YSkKKwordHlwZXMgPSB7CisgICAgJ1NOT1JNJzogJ0dMX1NJR05FRF9OT1JNQUxJWkVEJywK
KyAgICAnVU5PUk0nOiAnR0xfVU5TSUdORURfTk9STUFMSVpFRCcsCisgICAgJ1NJTlQnOiAnR0xf
SU5UJywKKyAgICAnVUlOVCc6ICdHTF9VTlNJR05FRF9JTlQnLAorICAgICdGTE9BVCc6ICdHTF9G
TE9BVCcsCisgICAgJ1NIQVJFREVYUCc6ICdHTF9GTE9BVCcKK30KKworYW5nbGVfdG9fZ2wgPSBh
bmdsZV9mb3JtYXQubG9hZF9pbnZlcnNlX3RhYmxlKCcuLi8uLi9hbmdsZV9mb3JtYXRfbWFwLmpz
b24nKQorYWxsX2FuZ2xlID0gYW5nbGVfdG9fZ2wua2V5cygpCisKK2ZvciBkeGdpX2Zvcm1hdCwg
YW5nbGVfZm9ybWF0IGluIHNvcnRlZChkeGdpX21hcC5pdGVyaXRlbXMoKSk6CisKKyAgICBmb3Vu
ZCA9IFtjdHlwZSBpbiBkeGdpX2Zvcm1hdCBmb3IgY3R5cGUgaW4gdHlwZXMua2V5cygpXQorICAg
IGNvdW50ID0gcmVkdWNlKChsYW1iZGEgYSwgYjogaW50KGEpICsgaW50KGIpKSwgZm91bmQpCisK
KyAgICBjb21wb25lbnRfdHlwZSA9ICdHTF9OT05FJworCisgICAgaWYgY291bnQgPT0gMToKKyAg
ICAgICAgZ2x0eXBlID0gbmV4dChnbHR5cGUgZm9yIGN0eXBlLCBnbHR5cGUgaW4gdHlwZXMuaXRl
cml0ZW1zKCkgaWYgY3R5cGUgaW4gZHhnaV9mb3JtYXQpCisgICAgICAgIGNvbXBvbmVudF9jYXNl
cyArPSBmb3JtYXRfY2FzZShkeGdpX2Zvcm1hdCwgZ2x0eXBlKQorICAgIGVsc2U6CisgICAgICAg
IGNvbXBvbmVudF9jYXNlcyArPSB1bmRlZmluZWRfY2FzZShkeGdpX2Zvcm1hdCkKKworICAgIGlm
IGFuZ2xlX2Zvcm1hdCA9PSAiIjoKKyAgICAgICAgYW5nbGVfZm9ybWF0ID0gZHhnaV9mb3JtYXQK
KworICAgIGlmIGFuZ2xlX2Zvcm1hdCBpbiBhbGxfYW5nbGU6CisgICAgICAgIGFuZ2xlX2Zvcm1h
dCA9ICJGb3JtYXQ6OkdldChGb3JtYXQ6OklEOjoiICsgYW5nbGVfZm9ybWF0ICsgIikiCisgICAg
ICAgIGZvcm1hdF9jYXNlcyArPSBmb3JtYXRfY2FzZShkeGdpX2Zvcm1hdCwgYW5nbGVfZm9ybWF0
KQorICAgIGVsc2U6CisgICAgICAgIGZvcm1hdF9jYXNlcyArPSB1bmRlZmluZWRfY2FzZShkeGdp
X2Zvcm1hdCkKKword2l0aCBvcGVuKCdkeGdpX2Zvcm1hdF9tYXBfYXV0b2dlbi5jcHAnLCAnd3Qn
KSBhcyBvdXRfZmlsZToKKyAgICBvdXRwdXRfY3BwID0gdGVtcGxhdGVfY3BwLmZvcm1hdCgKKyAg
ICAgICAgc2NyaXB0X25hbWUgPSBzeXMuYXJndlswXSwKKyAgICAgICAgZGF0YV9zb3VyY2VfbmFt
ZSA9IGlucHV0X2RhdGEsCisgICAgICAgIGNvcHlyaWdodF95ZWFyID0gZGF0ZS50b2RheSgpLnll
YXIsCisgICAgICAgIGNvbXBvbmVudF90eXBlX2Nhc2VzID0gY29tcG9uZW50X2Nhc2VzLAorICAg
ICAgICBmb3JtYXRfY2FzZXMgPSBmb3JtYXRfY2FzZXMpCisgICAgb3V0X2ZpbGUud3JpdGUob3V0
cHV0X2NwcCkKKyAgICBvdXRfZmlsZS5jbG9zZSgpCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2dlbl9keGdpX3N1cHBvcnRfdGFi
bGVzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvZ2VuX2R4Z2lfc3VwcG9ydF90YWJsZXMucHkJKHJldmlzaW9u
IDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvZ2VuX2R4Z2lfc3VwcG9ydF90YWJsZXMucHkJKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDYgKzQ2LDcgQEAKICNkZWZpbmUge3ByZWZpeH1SVCBEM0QxMV9GT1JNQVRfU1VQUE9SVF9S
RU5ERVJfVEFSR0VUCiAjZGVmaW5lIHtwcmVmaXh9TVMgRDNEMTFfRk9STUFUX1NVUFBPUlRfTVVM
VElTQU1QTEVfUkVOREVSVEFSR0VUCiAjZGVmaW5lIHtwcmVmaXh9RFMgRDNEMTFfRk9STUFUX1NV
UFBPUlRfREVQVEhfU1RFTkNJTAorI2RlZmluZSB7cHJlZml4fU1JUEdFTiBEM0QxMV9GT1JNQVRf
U1VQUE9SVF9NSVBfQVVUT0dFTgogCiBuYW1lc3BhY2UKIHt7CkBAIC01MiwxOSArNTMsMzEgQEAK
IAogY29uc3QgRFhHSVN1cHBvcnQgJkdldERlZmF1bHRTdXBwb3J0KCkKIHt7Ci0gICAgc3RhdGlj
IFVJTlQgQWxsU3VwcG9ydEZsYWdzID0gRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRTJEIHwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0QxMV9GT1JNQVRfU1VQUE9SVF9U
RVhUVVJFM0QgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDExX0ZPUk1B
VF9TVVBQT1JUX1RFWFRVUkVDVUJFIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEM0QxMV9GT1JNQVRfU1VQUE9SVF9TSEFERVJfU0FNUExFIHwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEM0QxMV9GT1JNQVRfU1VQUE9SVF9SRU5ERVJfVEFSR0VUIHwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0QxMV9GT1JNQVRfU1VQUE9SVF9NVUxU
SVNBTVBMRV9SRU5ERVJUQVJHRVQgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEQzRDExX0ZPUk1BVF9TVVBQT1JUX0RFUFRIX1NURU5DSUw7CisgICAgc3RhdGljIFVJTlQgQWxs
U3VwcG9ydEZsYWdzID0KKyAgICAgICAgRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRTJEIHwg
RDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRTNEIHwKKyAgICAgICAgRDNEMTFfRk9STUFUX1NV
UFBPUlRfVEVYVFVSRUNVQkUgfCBEM0QxMV9GT1JNQVRfU1VQUE9SVF9TSEFERVJfU0FNUExFIHwK
KyAgICAgICAgRDNEMTFfRk9STUFUX1NVUFBPUlRfUkVOREVSX1RBUkdFVCB8IEQzRDExX0ZPUk1B
VF9TVVBQT1JUX01VTFRJU0FNUExFX1JFTkRFUlRBUkdFVCB8CisgICAgICAgIEQzRDExX0ZPUk1B
VF9TVVBQT1JUX0RFUFRIX1NURU5DSUwgfCBEM0QxMV9GT1JNQVRfU1VQUE9SVF9NSVBfQVVUT0dF
TjsKICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgZGVmYXVsdFN1cHBvcnQoMCwgMCwgQWxs
U3VwcG9ydEZsYWdzKTsKICAgICByZXR1cm4gZGVmYXVsdFN1cHBvcnQ7CiB9fQogCitjb25zdCBE
WEdJU3VwcG9ydCAmR2V0RFhHSVN1cHBvcnRfOV8zKERYR0lfRk9STUFUIGR4Z2lGb3JtYXQpCit7
eworICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCisgICAg
e3sKK3t0YWJsZV9kYXRhXzlfM30KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gR2V0RGVmYXVsdFN1cHBvcnQoKTsKKyAgICB9
fQorICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorfX0KKwogY29uc3QgRFhHSVN1cHBvcnQgJkdldERY
R0lTdXBwb3J0XzEwXzAoRFhHSV9GT1JNQVQgZHhnaUZvcm1hdCkKIHt7CisgICAgLy8gY2xhbmct
Zm9ybWF0IG9mZgogICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKICAgICB7ewoge3RhYmxlX2RhdGFf
MTBfMH0KQEAgLTcyLDEwICs4NSwxMiBAQAogICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAg
ICAgICAgICAgIHJldHVybiBHZXREZWZhdWx0U3VwcG9ydCgpOwogICAgIH19CisgICAgLy8gY2xh
bmctZm9ybWF0IG9uCiB9fQogCiBjb25zdCBEWEdJU3VwcG9ydCAmR2V0RFhHSVN1cHBvcnRfMTBf
MShEWEdJX0ZPUk1BVCBkeGdpRm9ybWF0KQoge3sKKyAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCiAg
ICAgc3dpdGNoIChkeGdpRm9ybWF0KQogICAgIHt7CiB7dGFibGVfZGF0YV8xMF8xfQpAQCAtODMs
MTAgKzk4LDEyIEBACiAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAgICAgICAgcmV0
dXJuIEdldERlZmF1bHRTdXBwb3J0KCk7CiAgICAgfX0KKyAgICAvLyBjbGFuZy1mb3JtYXQgb24K
IH19CiAKIGNvbnN0IERYR0lTdXBwb3J0ICZHZXREWEdJU3VwcG9ydF8xMV8wKERYR0lfRk9STUFU
IGR4Z2lGb3JtYXQpCiB7eworICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKICAgICBzd2l0Y2ggKGR4
Z2lGb3JtYXQpCiAgICAge3sKIHt0YWJsZV9kYXRhXzExXzB9CkBAIC05NCw2ICsxMTEsNyBAQAog
ICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgICAgIHJldHVybiBHZXREZWZhdWx0
U3VwcG9ydCgpOwogICAgIH19CisgICAgLy8gY2xhbmctZm9ybWF0IG9uCiB9fQogCiB9fQpAQCAt
MTA1LDExICsxMjMsMTQgQEAKICN1bmRlZiB7cHJlZml4fVJUCiAjdW5kZWYge3ByZWZpeH1NUwog
I3VuZGVmIHtwcmVmaXh9RFMKKyN1bmRlZiB7cHJlZml4fU1JUEdFTgogCiBjb25zdCBEWEdJU3Vw
cG9ydCAmR2V0RFhHSVN1cHBvcnQoRFhHSV9GT1JNQVQgZHhnaUZvcm1hdCwgRDNEX0ZFQVRVUkVf
TEVWRUwgZmVhdHVyZUxldmVsKQoge3sKICAgICBzd2l0Y2ggKGZlYXR1cmVMZXZlbCkKICAgICB7
eworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKKyAgICAgICAgICAgIHJldHVy
biBHZXREWEdJU3VwcG9ydF85XzMoZHhnaUZvcm1hdCk7CiAgICAgICAgIGNhc2UgRDNEX0ZFQVRV
UkVfTEVWRUxfMTBfMDoKICAgICAgICAgICAgIHJldHVybiBHZXREWEdJU3VwcG9ydF8xMF8wKGR4
Z2lGb3JtYXQpOwogICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CkBAIC0xMjks
NyArMTUwLDcgQEAKIHRhYmxlX2luaXQgPSAiIgogCiBkZWYgZG9fZm9ybWF0KGZvcm1hdF9kYXRh
KToKLSAgICB0YWJsZV9kYXRhID0geycxMF8wJzogJycsICcxMF8xJzogJycsICcxMV8wJzogJyd9
CisgICAgdGFibGVfZGF0YSA9IHsnOV8zJzogJycsICcxMF8wJzogJycsICcxMF8xJzogJycsICcx
MV8wJzogJyd9CiAKICAgICBqc29uX2ZsYWdfdG9fZDNkID0gewogICAgICAgICAndGV4dHVyZTJE
JzogbWFjcm9fcHJlZml4ICsgJzJEJywKQEAgLTEzOCw3ICsxNTksOCBAQAogICAgICAgICAnc2hh
ZGVyU2FtcGxlJzogbWFjcm9fcHJlZml4ICsgJ1NBTVBMRScsCiAgICAgICAgICdyZW5kZXJUYXJn
ZXQnOiBtYWNyb19wcmVmaXggKyAnUlQnLAogICAgICAgICAnbXVsdGlzYW1wbGVSVCc6IG1hY3Jv
X3ByZWZpeCArICdNUycsCi0gICAgICAgICdkZXB0aFN0ZW5jaWwnOiBtYWNyb19wcmVmaXggKyAn
RFMnCisgICAgICAgICdkZXB0aFN0ZW5jaWwnOiBtYWNyb19wcmVmaXggKyAnRFMnLAorICAgICAg
ICAnbWlwQXV0b0dlbic6IG1hY3JvX3ByZWZpeCArICdNSVBHRU4nCiAgICAgfQogCiAgICAgZm9y
IGZvcm1hdF9uYW1lLCBmb3JtYXRfc3VwcG9ydCBpbiBzb3J0ZWQoZm9ybWF0X2RhdGEuaXRlcml0
ZW1zKCkpOgpAQCAtMTQ2LDYgKzE2OCw5IEBACiAgICAgICAgIGFsd2F5c19zdXBwb3J0ZWQgPSBz
ZXQoKQogICAgICAgICBuZXZlcl9zdXBwb3J0ZWQgPSBzZXQoKQogICAgICAgICBvcHRpb25hbGx5
X3N1cHBvcnRlZCA9IHNldCgpCisgICAgICAgIGZsXzlfM19zdXBwb3J0ZWQgPSBzZXQoKQorICAg
ICAgICBmbF85XzNfY2hlY2sgPSBzZXQoKQorICAgICAgICBmbF8xMF8wX3N1cHBvcnRlZCA9IHNl
dCgpCiAgICAgICAgIGZsXzEwXzFfc3VwcG9ydGVkID0gc2V0KCkKICAgICAgICAgZmxfMTFfMF9z
dXBwb3J0ZWQgPSBzZXQoKQogICAgICAgICBmbF8xMV8wX2NoZWNrID0gc2V0KCkKQEAgLTE2Myw4
ICsxODgsNyBAQAogICAgICAgICAgICAgZWxpZiBzdXBwb3J0ID09ICduZXZlcic6CiAgICAgICAg
ICAgICAgICAgbmV2ZXJfc3VwcG9ydGVkLnVwZGF0ZShkM2RfZmxhZykKICAgICAgICAgICAgIGVs
aWYgc3VwcG9ydCA9PSAnMTBfMCc6Ci0gICAgICAgICAgICAgICAgIyBUT0RPKGptYWRpbGwpOiBG
TCA5XzMgaGFuZGxpbmcKLSAgICAgICAgICAgICAgICBhbHdheXNfc3VwcG9ydGVkLnVwZGF0ZShk
M2RfZmxhZykKKyAgICAgICAgICAgICAgICBmbF8xMF8wX3N1cHBvcnRlZC51cGRhdGUoZDNkX2Zs
YWcpCiAgICAgICAgICAgICBlbGlmIHN1cHBvcnQgPT0gJzEwXzEnOgogICAgICAgICAgICAgICAg
IGZsXzEwXzFfc3VwcG9ydGVkLnVwZGF0ZShkM2RfZmxhZykKICAgICAgICAgICAgIGVsaWYgc3Vw
cG9ydCA9PSAnMTFfMCc6CkBAIC0xODEsMjEgKzIwNSwzMyBAQAogICAgICAgICAgICAgICAgIGZs
XzEwXzBfY2hlY2tfMTFfMF9zdXBwb3J0ZWQudXBkYXRlKGQzZF9mbGFnKQogICAgICAgICAgICAg
ZWxpZiBzdXBwb3J0ID09ICcxMV8wY2hlY2snOgogICAgICAgICAgICAgICAgIGZsXzExXzBfY2hl
Y2sudXBkYXRlKGQzZF9mbGFnKQorICAgICAgICAgICAgZWxpZiBzdXBwb3J0ID09ICc5XzNhbHdh
eXNfMTBfMGNoZWNrMTFfMGFsd2F5cyc6CisgICAgICAgICAgICAgICAgZmxfOV8zX3N1cHBvcnRl
ZC51cGRhdGUoZDNkX2ZsYWcpCisgICAgICAgICAgICAgICAgZmxfMTBfMF9jaGVja18xMV8wX3N1
cHBvcnRlZC51cGRhdGUoZDNkX2ZsYWcpCisgICAgICAgICAgICBlbGlmIHN1cHBvcnQgPT0gJzlf
M2NoZWNrXzEwXzBhbHdheXMnOgorICAgICAgICAgICAgICAgIGZsXzlfM19jaGVjay51cGRhdGUo
ZDNkX2ZsYWcpCisgICAgICAgICAgICAgICAgZmxfMTBfMF9zdXBwb3J0ZWQudXBkYXRlKGQzZF9m
bGFnKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBwcmludCgiRGF0YSBzcGVj
aWZpY2F0aW9uIGVycm9yOiAiICsgc3VwcG9ydCkKICAgICAgICAgICAgICAgICBzeXMuZXhpdCgx
KQogCi0gICAgICAgIGZvciBmZWF0dXJlX2xldmVsIGluIFsnMTBfMCcsICcxMF8xJywgJzExXzAn
XToKKyAgICAgICAgZm9yIGZlYXR1cmVfbGV2ZWwgaW4gWyc5XzMnLCAnMTBfMCcsICcxMF8xJywg
JzExXzAnXToKICAgICAgICAgICAgIGFsd2F5c19mb3JfZmwgPSBhbHdheXNfc3VwcG9ydGVkCiAg
ICAgICAgICAgICBvcHRpb25hbF9mb3JfZmwgPSBvcHRpb25hbGx5X3N1cHBvcnRlZAotICAgICAg
ICAgICAgaWYgZmVhdHVyZV9sZXZlbCA9PSAnMTBfMCc6CisgICAgICAgICAgICBpZiBmZWF0dXJl
X2xldmVsID09ICc5XzMnOgorICAgICAgICAgICAgICAgIGFsd2F5c19mb3JfZmwgPSBmbF85XzNf
c3VwcG9ydGVkLnVuaW9uKGFsd2F5c19mb3JfZmwpCisgICAgICAgICAgICAgICAgb3B0aW9uYWxf
Zm9yX2ZsID0gZmxfOV8zX2NoZWNrLnVuaW9uKG9wdGlvbmFsX2Zvcl9mbCkKKyAgICAgICAgICAg
IGVsaWYgZmVhdHVyZV9sZXZlbCA9PSAnMTBfMCc6CisgICAgICAgICAgICAgICAgYWx3YXlzX2Zv
cl9mbCA9IGZsXzEwXzBfc3VwcG9ydGVkLnVuaW9uKGFsd2F5c19mb3JfZmwpCiAgICAgICAgICAg
ICAgICAgb3B0aW9uYWxfZm9yX2ZsID0gZmxfMTBfMF9jaGVja18xMF8xX3N1cHBvcnRlZC51bmlv
bihvcHRpb25hbF9mb3JfZmwpCiAgICAgICAgICAgICAgICAgb3B0aW9uYWxfZm9yX2ZsID0gZmxf
MTBfMF9jaGVja18xMV8wX3N1cHBvcnRlZC51bmlvbihvcHRpb25hbF9mb3JfZmwpCi0gICAgICAg
ICAgICBpZiBmZWF0dXJlX2xldmVsID09ICcxMF8xJzoKKyAgICAgICAgICAgIGVsaWYgZmVhdHVy
ZV9sZXZlbCA9PSAnMTBfMSc6CisgICAgICAgICAgICAgICAgYWx3YXlzX2Zvcl9mbCA9IGZsXzEw
XzBfc3VwcG9ydGVkLnVuaW9uKGFsd2F5c19mb3JfZmwpCiAgICAgICAgICAgICAgICAgYWx3YXlz
X2Zvcl9mbCA9IGZsXzEwXzFfc3VwcG9ydGVkLnVuaW9uKGFsd2F5c19mb3JfZmwpCiAgICAgICAg
ICAgICAgICAgYWx3YXlzX2Zvcl9mbCA9IGZsXzEwXzBfY2hlY2tfMTBfMV9zdXBwb3J0ZWQudW5p
b24oYWx3YXlzX2Zvcl9mbCkKICAgICAgICAgICAgICAgICBvcHRpb25hbF9mb3JfZmwgPSBmbF8x
MF8wX2NoZWNrXzExXzBfc3VwcG9ydGVkLnVuaW9uKG9wdGlvbmFsX2Zvcl9mbCkKICAgICAgICAg
ICAgIGVsaWYgZmVhdHVyZV9sZXZlbCA9PSAnMTFfMCc6CisgICAgICAgICAgICAgICAgYWx3YXlz
X2Zvcl9mbCA9IGZsXzEwXzBfc3VwcG9ydGVkLnVuaW9uKGFsd2F5c19mb3JfZmwpCiAgICAgICAg
ICAgICAgICAgYWx3YXlzX2Zvcl9mbCA9IGZsXzEwXzBfY2hlY2tfMTBfMV9zdXBwb3J0ZWQudW5p
b24oYWx3YXlzX2Zvcl9mbCkKICAgICAgICAgICAgICAgICBhbHdheXNfZm9yX2ZsID0gZmxfMTBf
MF9jaGVja18xMV8wX3N1cHBvcnRlZC51bmlvbihhbHdheXNfZm9yX2ZsKQogICAgICAgICAgICAg
ICAgIGFsd2F5c19mb3JfZmwgPSBmbF8xMF8xX3N1cHBvcnRlZC51bmlvbihhbHdheXNfZm9yX2Zs
KQpAQCAtMjE4LDcgKzI1NCw4IEBACiAgICAgcmV0dXJuIHRhYmxlX2RhdGEKIAogZGVmIGpvaW5f
dGFibGVfZGF0YSh0YWJsZV9kYXRhXzEsIHRhYmxlX2RhdGFfMik6Ci0gICAgcmV0dXJuIHsnMTBf
MCc6IHRhYmxlX2RhdGFfMVsnMTBfMCddICsgdGFibGVfZGF0YV8yWycxMF8wJ10sCisgICAgcmV0
dXJuIHsnOV8zJzogIHRhYmxlX2RhdGFfMVsnOV8zJ10gICsgdGFibGVfZGF0YV8yWyc5XzMnXSwK
KyAgICAgICAgICAgICcxMF8wJzogdGFibGVfZGF0YV8xWycxMF8wJ10gKyB0YWJsZV9kYXRhXzJb
JzEwXzAnXSwKICAgICAgICAgICAgICcxMF8xJzogdGFibGVfZGF0YV8xWycxMF8xJ10gKyB0YWJs
ZV9kYXRhXzJbJzEwXzEnXSwKICAgICAgICAgICAgICcxMV8wJzogdGFibGVfZGF0YV8xWycxMV8w
J10gKyB0YWJsZV9kYXRhXzJbJzExXzAnXX0KIApAQCAtMjI3LDEyICsyNjQsMTMgQEAKICAgICBk
eGdpX2ZpbGUuY2xvc2UoKQogICAgIGpzb25fZGF0YSA9IGpzb24ubG9hZHMoZmlsZV9kYXRhKQog
Ci0gICAgdGFibGVfZGF0YSA9IHsnMTBfMCc6ICcnLCAnMTBfMSc6ICcnLCAnMTFfMCc6ICcnfQor
ICAgIHRhYmxlX2RhdGEgPSB7JzlfMyc6ICcnLCAnMTBfMCc6ICcnLCAnMTBfMSc6ICcnLCAnMTFf
MCc6ICcnfQogCiAgICAgZm9yIGZvcm1hdF9kYXRhIGluIGpzb25fZGF0YToKICAgICAgICAgdGFi
bGVfZGF0YSA9IGpvaW5fdGFibGVfZGF0YSh0YWJsZV9kYXRhLCBkb19mb3JtYXQoZm9ybWF0X2Rh
dGEpKQogCiAgICAgb3V0X2RhdGEgPSB0ZW1wbGF0ZS5mb3JtYXQocHJlZml4PW1hY3JvX3ByZWZp
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9kYXRhXzlfMz10YWJsZV9k
YXRhWyc5XzMnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9kYXRhXzEw
XzA9dGFibGVfZGF0YVsnMTBfMCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRh
YmxlX2RhdGFfMTBfMT10YWJsZV9kYXRhWycxMF8xJ10sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGFibGVfZGF0YV8xMV8wPXRhYmxlX2RhdGFbJzExXzAnXSkKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZ2VuX2xv
YWRfZnVuY3Rpb25zX3RhYmxlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZ2VuX2xvYWRfZnVuY3Rpb25zX3Rh
YmxlLnB5CShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2dlbl9sb2FkX2Z1bmN0aW9uc190YWJsZS5weQko
bm9uZXhpc3RlbnQpCkBAIC0xLDE5OSArMCwwIEBACi0jIS91c3IvYmluL3B5dGhvbgotIyBDb3B5
cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCi0jIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0jCi0jIGdl
bl9sb2FkX2Z1bmN0aW9uc190YWJsZS5weToKLSMgIENvZGUgZ2VuZXJhdGlvbiBmb3IgdGhlIGxv
YWQgZnVuY3Rpb24gdGFibGVzIHVzZWQgZm9yIHRleHR1cmUgZm9ybWF0cwotIwotCi1pbXBvcnQg
anNvbgotCi10ZW1wbGF0ZSA9ICIiIi8vIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQuCi0v
LyBHZW5lcmF0ZWQgYnkgZ2VuX2xvYWRfZnVuY3Rpb25zX3RhYmxlLnB5IHVzaW5nIGRhdGEgZnJv
bSBsb2FkX2Z1bmN0aW9uc19kYXRhLmpzb24KLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBsb2FkX2Z1bmN0aW9uc190
YWJsZToKLS8vICAgQ29udGFpbnMgdGhlIEdldExvYWRGdW5jdGlvbnNNYXAgZm9yIHRleHR1cmVf
Zm9ybWF0X3V0aWwuaAotLy8KLQotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9sb2FkX2Z1bmN0aW9uc190YWJsZS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9mb3JtYXR1dGlsczExLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2xvYWRpbWFnZS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9sb2Fk
aW1hZ2VfZXRjLmgiCi0KLW5hbWVzcGFjZSByeAote3sKLQotbmFtZXNwYWNlIGQzZDExCi17ewot
Ci1uYW1lc3BhY2UKLXt7Ci0KLS8vIEVTMyBpbWFnZSBsb2FkaW5nIGZ1bmN0aW9ucyB2YXJ5IGJh
c2VkIG9uOgotLy8gICAgLSB0aGUgR0wgaW50ZXJuYWwgZm9ybWF0IChzdXBwbGllZCB0byBnbFRl
eCpJbWFnZSpEKQotLy8gICAgLSB0aGUgR0wgZGF0YSB0eXBlIGdpdmVuIChzdXBwbGllZCB0byBn
bFRleCpJbWFnZSpEKQotLy8gICAgLSB0aGUgdGFyZ2V0IERYR0lfRk9STUFUIHRoYXQgdGhlIGlt
YWdlIHdpbGwgYmUgbG9hZGVkIGludG8gKHdoaWNoIGlzIGNob3NlbiBiYXNlZCBvbiB0aGUgRDNE
Ci0vLyAgICBkZXZpY2UncyBjYXBhYmlsaXRpZXMpCi0vLyBUaGlzIG1hcCB0eXBlIGRldGVybWlu
ZXMgd2hpY2ggbG9hZGluZyBmdW5jdGlvbiB0byB1c2UsIGJhc2VkIG9uIHRoZXNlIHRocmVlIHBh
cmFtZXRlcnMuCi0vLyBTb3VyY2UgZm9ybWF0cyBhbmQgdHlwZXMgYXJlIHRha2VuIGZyb20gVGFi
bGVzIDMuMiBhbmQgMy4zIG9mIHRoZSBFUyAzIHNwZWMuCi12b2lkIFVuaW1wbGVtZW50ZWRMb2Fk
RnVuY3Rpb24oc2l6ZV90IHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRo
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKLXt7Ci0gICAgVU5JTVBM
RU1FTlRFRCgpOwotfX0KLQotdm9pZCBVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbihzaXplX3Qgd2lk
dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
OF90ICpvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRS
b3dQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRo
UGl0Y2gpCi17ewotICAgIFVOUkVBQ0hBQkxFKCk7Ci19fQotCi19fSAgLy8gbmFtZXNwYWNlCi0K
LS8vIFRPRE8gd2UgY2FuIHJlcGxhY2UgdGhlc2UgbWFwcyB3aXRoIG1vcmUgZ2VuZXJhdGVkIGNv
ZGUKLWNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiAmR2V0TG9h
ZEZ1bmN0aW9uc01hcChHTGVudW0ge2ludGVybmFsX2Zvcm1hdH0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVQge2R4Z2lfZm9ybWF0fSkKLXt7Ci0gICAgLy8gY2xhbmctZm9ybWF0IG9mZgotICAgIHN3
aXRjaCAoe2ludGVybmFsX2Zvcm1hdH0pCi0gICAge3sKLXtkYXRhfQotICAgICAgICBkZWZhdWx0
OgotICAgICAgICB7ewotICAgICAgICAgICAgc3RhdGljIHN0ZDo6bWFwPEdMZW51bSwgTG9hZElt
YWdlRnVuY3Rpb25JbmZvPiBlbXB0eUxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICByZXR1
cm4gZW1wdHlMb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICB9fQotICAgIH19Ci0gICAgLy8gY2xh
bmctZm9ybWF0IG9uCi0KLX19ICAvLyBHZXRMb2FkRnVuY3Rpb25zTWFwCi0KLX19ICAvLyBuYW1l
c3BhY2UgZDNkMTEKLQotfX0gIC8vIG5hbWVzcGFjZSByeAotIiIiCi0KLWludGVybmFsX2Zvcm1h
dF9wYXJhbSA9ICdpbnRlcm5hbEZvcm1hdCcKLWR4Z2lfZm9ybWF0X3BhcmFtID0gJ2R4Z2lGb3Jt
YXQnCi1keGdpX2Zvcm1hdF91bmtub3duID0gIkRYR0lfRk9STUFUX1VOS05PV04iCi0KLWRlZiBn
ZXRfZnVuY3Rpb25fbWFwc19zdHJpbmcodHlwZXN0ciwgZnVuY3Rpb24sIHJlcXVpcmVzQ29udmVy
c2lvbik6Ci0gICAgcmV0dXJuICcgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwWycgKyB0
eXBlc3RyICsgJ10gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oJyArIGZ1bmN0aW9uICsgJywgJyAr
IHJlcXVpcmVzQ29udmVyc2lvbiArICcpO1xuJwotCi1kZWYgZ2V0X3Vua25vd25fZm9ybWF0X3N0
cmluZyhkeGdpX3RvX3R5cGVfbWFwLCBkeGdpX3Vua25vd25fc3RyaW5nKToKLSAgICAgaWYgZHhn
aV91bmtub3duX3N0cmluZyBub3QgaW4gZHhnaV90b190eXBlX21hcDoKLSAgICAgICAgcmV0dXJu
ICcnCi0KLSAgICAgdGFibGVfZGF0YSA9ICcnCi0KLSAgICAgZm9yIHVua25vd25fdHlwZV9mdW5j
dGlvbiBpbiBkeGdpX3RvX3R5cGVfbWFwW2R4Z2lfdW5rbm93bl9zdHJpbmddOgotICAgICAgICB0
YWJsZV9kYXRhICs9IGdldF9mdW5jdGlvbl9tYXBzX3N0cmluZyh1bmtub3duX3R5cGVfZnVuY3Rp
b25bJ3R5cGUnXSwgdW5rbm93bl90eXBlX2Z1bmN0aW9uWydsb2FkRnVuY3Rpb24nXSwgJ3RydWUn
KQotCi0gICAgIHJldHVybiB0YWJsZV9kYXRhCi0KLSMgTWFraW5nIG1hcCBmcm9tIGR4Z2kgdG8g
dHlwZSBtYXAgZm9yIGEgcGFydGljdWxhciBpbnRlcm5hbEZvcm1hdAotZGVmIGNyZWF0ZV9keGdp
X3RvX3R5cGVfbWFwKGRzdCwganNvbl9kYXRhLCBpbnRlcm5hbF9mb3JtYXRfc3RyKToKLSAgICBm
b3IgdHlwZV9pdGVtIGluIHNvcnRlZChqc29uX2RhdGFbaW50ZXJuYWxfZm9ybWF0X3N0cl0uaXRl
cml0ZW1zKCkpOgotICAgICAgICBmb3IgZW50cnlfaW5fdHlwZV9pdGVtIGluIHR5cGVfaXRlbVsx
XToKLSAgICAgICAgICAgIGR4Z2lfZm9ybWF0X3N0ciA9IGVudHJ5X2luX3R5cGVfaXRlbVsnZHhn
aUZvcm1hdCddCi0KLSAgICAgICAgICAgIGlmIGR4Z2lfZm9ybWF0X3N0ciBub3QgaW4gZHN0Ogot
ICAgICAgICAgICAgICAgIGRzdFtkeGdpX2Zvcm1hdF9zdHJdID0gW10KLQotICAgICAgICAgICAg
dHlwZV9keGdpX2xvYWRfZnVuY3Rpb24gPSBlbnRyeV9pbl90eXBlX2l0ZW0uY29weSgpOwotICAg
ICAgICAgICAgdHlwZV9keGdpX2xvYWRfZnVuY3Rpb25bJ3R5cGUnXSA9IHR5cGVfaXRlbVswXQot
ICAgICAgICAgICAgZHN0W2R4Z2lfZm9ybWF0X3N0cl0uYXBwZW5kKHR5cGVfZHhnaV9sb2FkX2Z1
bmN0aW9uKQotCi1kZWYgZ2V0X2xvYWRfZnVuY3Rpb25fbWFwX3NuaXBwZXQoaW5zZXJ0X21hcF9z
dHJpbmcpOgotICAgIGxvYWRfZnVuY3Rpb25fbWFwX3NuaXBwZXQgPSAnJwotICAgIGxvYWRfZnVu
Y3Rpb25fbWFwX3NuaXBwZXQgKz0gJyAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0
ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0g
W10oKSB7XG4nCi0gICAgbG9hZF9mdW5jdGlvbl9tYXBfc25pcHBldCArPSAnICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRN
YXA7XG4nCi0gICAgbG9hZF9mdW5jdGlvbl9tYXBfc25pcHBldCArPSBpbnNlcnRfbWFwX3N0cmlu
ZwotICAgIGxvYWRfZnVuY3Rpb25fbWFwX3NuaXBwZXQgKz0gJyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBsb2FkTWFwO1xuJwotICAgIGxvYWRfZnVuY3Rpb25fbWFwX3NuaXBwZXQgKz0g
JyAgICAgICAgICAgICAgICAgICAgfSgpO1xuXG4nCi0gICAgbG9hZF9mdW5jdGlvbl9tYXBfc25p
cHBldCArPSAnICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDtcbicK
LQotICAgIHJldHVybiBsb2FkX2Z1bmN0aW9uX21hcF9zbmlwcGV0Ci0KLWRlZiBwYXJzZV9qc29u
X2ludG9fc3dpdGNoX3N0cmluZyhqc29uX2RhdGEpOgotICAgIHRhYmxlX2RhdGEgPSAnJwotICAg
IGZvciBpbnRlcm5hbF9mb3JtYXRfaXRlbSBpbiBzb3J0ZWQoanNvbl9kYXRhLml0ZXJpdGVtcygp
KToKLSAgICAgICAgaW50ZXJuYWxfZm9ybWF0X3N0ciA9IGludGVybmFsX2Zvcm1hdF9pdGVtWzBd
Ci0gICAgICAgIHRhYmxlX2RhdGEgKz0gJyAgICAgICAgY2FzZSAnICsgaW50ZXJuYWxfZm9ybWF0
X3N0ciArICc6XG4nCi0gICAgICAgIHRhYmxlX2RhdGEgKz0gJyAgICAgICAge1xuJwotICAgICAg
ICB0YWJsZV9kYXRhICs9ICcgICAgICAgICAgICBzd2l0Y2ggKCcgKyBkeGdpX2Zvcm1hdF9wYXJh
bSArICcpXG4nCi0gICAgICAgIHRhYmxlX2RhdGEgKz0gJyAgICAgICAgICAgIHtcbicKLQotICAg
ICAgICBkeGdpX3RvX3R5cGVfbWFwID0ge307Ci0gICAgICAgIGNyZWF0ZV9keGdpX3RvX3R5cGVf
bWFwKGR4Z2lfdG9fdHlwZV9tYXAsIGpzb25fZGF0YSwgaW50ZXJuYWxfZm9ybWF0X3N0cikKLQot
ICAgICAgICBkeGdpX3Vua25vd25fc3RyID0gZ2V0X3Vua25vd25fZm9ybWF0X3N0cmluZyhkeGdp
X3RvX3R5cGVfbWFwLCBkeGdpX2Zvcm1hdF91bmtub3duKTsKLQotICAgICAgICBmb3IgZHhnaV9m
b3JtYXRfaXRlbSBpbiBzb3J0ZWQoZHhnaV90b190eXBlX21hcC5pdGVyaXRlbXMoKSk6Ci0gICAg
ICAgICAgICBkeGdpX2Zvcm1hdF9zdHIgPSBkeGdpX2Zvcm1hdF9pdGVtWzBdCi0KLSAgICAgICAg
ICAgICMgTWFpbiBjYXNlIHN0YXRlbWVudHMKLSAgICAgICAgICAgIHRhYmxlX2RhdGEgKz0gJyAg
ICAgICAgICAgICAgICBjYXNlICcgKyBkeGdpX2Zvcm1hdF9zdHIgKyAnOlxuJwotICAgICAgICAg
ICAgdGFibGVfZGF0YSArPSAnICAgICAgICAgICAgICAgIHtcbicKLSAgICAgICAgICAgIGluc2Vy
dF9tYXBfc3RyaW5nID0gJycKLSAgICAgICAgICAgIHR5cGVzX2FscmVhZHlfaW5fbG9hZG1hcCA9
IHNldCgpCi0gICAgICAgICAgICBmb3IgdHlwZV9mdW5jdGlvbiBpbiBzb3J0ZWQoZHhnaV9mb3Jt
YXRfaXRlbVsxXSk6Ci0gICAgICAgICAgICAgICAgaW5zZXJ0X21hcF9zdHJpbmcgKz0gZ2V0X2Z1
bmN0aW9uX21hcHNfc3RyaW5nKHR5cGVfZnVuY3Rpb25bJ3R5cGUnXSwgdHlwZV9mdW5jdGlvblsn
bG9hZEZ1bmN0aW9uJ10sIHR5cGVfZnVuY3Rpb25bJ3JlcXVpcmVzQ29udmVyc2lvbiddKQotICAg
ICAgICAgICAgICAgIHR5cGVzX2FscmVhZHlfaW5fbG9hZG1hcC5hZGQodHlwZV9mdW5jdGlvblsn
dHlwZSddKQotCi0gICAgICAgICAgICAjIERYR0lfRk9STUFUX1VOS05PV04gYWRkIG9ucwotICAg
ICAgICAgICAgaWYgZHhnaV9mb3JtYXRfdW5rbm93biBpbiBkeGdpX3RvX3R5cGVfbWFwOgotICAg
ICAgICAgICAgICAgIGZvciB1bmtub3duX3R5cGVfZnVuY3Rpb24gaW4gZHhnaV90b190eXBlX21h
cFtkeGdpX2Zvcm1hdF91bmtub3duXToKLSAgICAgICAgICAgICAgICAgICAgIyBDaGVjayB0aGF0
IGl0J3Mgbm90IGFscmVhZHkgaW4gdGhlIGxvYWRtYXAgc28gaXQgZG9lc24ndCBvdmVycmlkZSB0
aGUgdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgaWYgdW5rbm93bl90eXBlX2Z1bmN0aW9uWyd0
eXBlJ10gbm90IGluIHR5cGVzX2FscmVhZHlfaW5fbG9hZG1hcDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGluc2VydF9tYXBfc3RyaW5nICs9IGdldF9mdW5jdGlvbl9tYXBzX3N0cmluZyh1bmtu
b3duX3R5cGVfZnVuY3Rpb25bJ3R5cGUnXSwgdW5rbm93bl90eXBlX2Z1bmN0aW9uWydsb2FkRnVu
Y3Rpb24nXSwgJ3RydWUnKQotCi0gICAgICAgICAgICB0YWJsZV9kYXRhICs9IGdldF9sb2FkX2Z1
bmN0aW9uX21hcF9zbmlwcGV0KGluc2VydF9tYXBfc3RyaW5nKQotICAgICAgICAgICAgdGFibGVf
ZGF0YSArPSAnICAgICAgICAgICAgICAgIH1cbicKLQotICAgICAgICB0YWJsZV9kYXRhICs9ICcg
ICAgICAgICAgICAgICAgZGVmYXVsdDpcbicKLQotICAgICAgICBpZiBkeGdpX3Vua25vd25fc3Ry
OgotICAgICAgICAgICAgdGFibGVfZGF0YSArPSAnICAgICAgICAgICAgICAgIHtcbicKLSAgICAg
ICAgICAgIHRhYmxlX2RhdGEgKz0gZ2V0X2xvYWRfZnVuY3Rpb25fbWFwX3NuaXBwZXQoZHhnaV91
bmtub3duX3N0cikKLSAgICAgICAgICAgIHRhYmxlX2RhdGEgKz0gJyAgICAgICAgICAgICAgICB9
XG4nCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAgICAg
ICAgICAgICAgIGJyZWFrO1xuJwotICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAgICAgICB9
XG4nCi0gICAgICAgIHRhYmxlX2RhdGEgKz0gJyAgICAgICAgfVxuJwotCi0gICAgcmV0dXJuIHRh
YmxlX2RhdGEKLQotd2l0aCBvcGVuKCdsb2FkX2Z1bmN0aW9uc19kYXRhLmpzb24nKSBhcyBmdW5j
dGlvbnNfanNvbl9maWxlOgotICAgIGZ1bmN0aW9uc19kYXRhID0gZnVuY3Rpb25zX2pzb25fZmls
ZS5yZWFkKCk7Ci0gICAgZnVuY3Rpb25zX2pzb25fZmlsZS5jbG9zZSgpCi0gICAganNvbl9kYXRh
ID0ganNvbi5sb2FkcyhmdW5jdGlvbnNfZGF0YSkKLQotICAgIHRhYmxlX2RhdGEgPSBwYXJzZV9q
c29uX2ludG9fc3dpdGNoX3N0cmluZyhqc29uX2RhdGEpCi0gICAgb3V0cHV0ID0gdGVtcGxhdGUu
Zm9ybWF0KGludGVybmFsX2Zvcm1hdCA9IGludGVybmFsX2Zvcm1hdF9wYXJhbSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZHhnaV9mb3JtYXQgPSBkeGdpX2Zvcm1hdF9wYXJhbSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT10YWJsZV9kYXRhKQotCi0gICAgd2l0aCBv
cGVuKCdsb2FkX2Z1bmN0aW9uc190YWJsZV9hdXRvZ2VuLmNwcCcsICd3dCcpIGFzIG91dF9maWxl
OgotICAgICAgICBvdXRfZmlsZS53cml0ZShvdXRwdXQpCi0gICAgICAgIG91dF9maWxlLmNsb3Nl
KCkKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvZ2VuX3RleHR1cmVfZm9ybWF0X3RhYmxlLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZ2VuX3Rl
eHR1cmVfZm9ybWF0X3RhYmxlLnB5CShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2dlbl90ZXh0dXJlX2Zv
cm1hdF90YWJsZS5weQkod29ya2luZyBjb3B5KQpAQCAtNywzOSArNywyMSBAQAogIyAgQ29kZSBn
ZW5lcmF0aW9uIGZvciB0ZXh0dXJlIGZvcm1hdCBtYXAKICMKIAorZnJvbSBkYXRldGltZSBpbXBv
cnQgZGF0ZQogaW1wb3J0IGpzb24KIGltcG9ydCBtYXRoCiBpbXBvcnQgcHByaW50CitpbXBvcnQg
b3MKIGltcG9ydCByZQoraW1wb3J0IHN5cwogCi10ZW1wbGF0ZV90ZXh0dXJlX2Zvcm1hdF90YWJs
ZV9hdXRvZ2VuX2ggPSAiIiIvLyBHRU5FUkFURUQgRklMRSAtIERPIE5PVCBFRElULgotLy8gR2Vu
ZXJhdGVkIGJ5IGdlbl90ZXh0dXJlX2Zvcm1hdF90YWJsZS5weSB1c2luZyBkYXRhIGZyb20gdGV4
dHVyZV9mb3JtYXRfZGF0YS5qc29uCi0vLwotLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLworc3lzLnBhdGguYXBwZW5kKCcuLi8uLicp
CitpbXBvcnQgYW5nbGVfZm9ybWF0CiAKLW5hbWVzcGFjZSByeAote3sKLQotbmFtZXNwYWNlIGQz
ZDExCi17ewotCi1lbnVtIEFOR0xFRm9ybWF0Ci17ewote2FuZ2xlX2Zvcm1hdF9lbnVtfQotfX07
Ci0KLX19ICAvLyBuYW1lc3BhY2UgZDNkMTEKLQotfX0gIC8vIG5hbWVzcGFjZSByeAotIiIiCi0K
IHRlbXBsYXRlX3RleHR1cmVfZm9ybWF0X3RhYmxlX2F1dG9nZW5fY3BwID0gIiIiLy8gR0VORVJB
VEVEIEZJTEUgLSBETyBOT1QgRURJVC4KIC8vIEdlbmVyYXRlZCBieSBnZW5fdGV4dHVyZV9mb3Jt
YXRfdGFibGUucHkgdXNpbmcgZGF0YSBmcm9tIHRleHR1cmVfZm9ybWF0X2RhdGEuanNvbgogLy8K
LS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQge2NvcHlyaWdodF95ZWFyfSBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC00OSwxMyArMzEsMTYgQEAKIAogI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZS5oIgog
CisjaW5jbHVkZSAiaW1hZ2VfdXRpbC9jb3B5aW1hZ2UuaCIKKyNpbmNsdWRlICJpbWFnZV91dGls
L2dlbmVyYXRlbWlwLmgiCisjaW5jbHVkZSAiaW1hZ2VfdXRpbC9sb2FkaW1hZ2UuaCIKKwogI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9mb3JtYXR1dGlsczExLmgiCi0jaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2xvYWRfZnVuY3Rpb25zX3RhYmxlLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFfdXRpbHMu
aCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvY29weWltYWdlLmgiCi0jaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2dlbmVyYXRlbWlwLmgiCi0jaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvZDNkL2xvYWRpbWFnZS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZV91dGlscy5oIgogCit1c2luZyBuYW1lc3Bh
Y2UgYW5nbGU7CisKIG5hbWVzcGFjZSByeAoge3sKIApAQCAtNjIsMTQwICs0NywxMSBAQAogbmFt
ZXNwYWNlIGQzZDExCiB7ewogCi1uYW1lc3BhY2UKKy8vIHN0YXRpYworY29uc3QgRm9ybWF0ICZG
b3JtYXQ6OkdldChHTGVudW0gaW50ZXJuYWxGb3JtYXQsIGNvbnN0IFJlbmRlcmVyMTFEZXZpY2VD
YXBzICZkZXZpY2VDYXBzKQoge3sKLQotdHlwZWRlZiBib29sICgqRm9ybWF0U3VwcG9ydEZ1bmN0
aW9uKShjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmKTsKLQotYm9vbCBPbmx5RkwxMFBsdXMo
Y29uc3QgUmVuZGVyZXIxMURldmljZUNhcHMgJmRldmljZUNhcHMpCi17ewotICAgIHJldHVybiAo
ZGV2aWNlQ2Fwcy5mZWF0dXJlTGV2ZWwgPj0gRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMCk7Ci19fQot
Ci1ib29sIE9ubHlGTDlfMyhjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmZGV2aWNlQ2FwcykK
LXt7Ci0gICAgcmV0dXJuIChkZXZpY2VDYXBzLmZlYXR1cmVMZXZlbCA9PSBEM0RfRkVBVFVSRV9M
RVZFTF85XzMpOwotfX0KLQotdGVtcGxhdGUgPERYR0lfRk9STUFUIGZvcm1hdCwgYm9vbCByZXF1
aXJlU3VwcG9ydD4KLWJvb2wgU3VwcG9ydHNGb3JtYXQoY29uc3QgUmVuZGVyZXIxMURldmljZUNh
cHMgJmRldmljZUNhcHMpCi17ewotICAgIC8vIE11c3Qgc3VwcG9ydCB0ZXh0dXJlLCBTUlYgYW5k
IFJUViBzdXBwb3J0Ci0gICAgVUlOVCBtdXN0U3VwcG9ydCA9IEQzRDExX0ZPUk1BVF9TVVBQT1JU
X1RFWFRVUkUyRCB8IEQzRDExX0ZPUk1BVF9TVVBQT1JUX1RFWFRVUkVDVUJFIHwKLSAgICAgICAg
ICAgICAgICAgICAgICAgRDNEMTFfRk9STUFUX1NVUFBPUlRfU0hBREVSX1NBTVBMRSB8IEQzRDEx
X0ZPUk1BVF9TVVBQT1JUX01JUCB8Ci0gICAgICAgICAgICAgICAgICAgICAgIEQzRDExX0ZPUk1B
VF9TVVBQT1JUX1JFTkRFUl9UQVJHRVQ7Ci0KLSAgICBpZiAoZDNkMTFfZ2w6OkdldE1heGltdW1D
bGllbnRWZXJzaW9uKGRldmljZUNhcHMuZmVhdHVyZUxldmVsKSA+IDIpCi0gICAge3sKLSAgICAg
ICAgbXVzdFN1cHBvcnQgfD0gRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRTNEOwotICAgIH19
Ci0KLSAgICBib29sIGZ1bGxTdXBwb3J0ID0gZmFsc2U7Ci0gICAgaWYgKGZvcm1hdCA9PSBEWEdJ
X0ZPUk1BVF9CNUc2UjVfVU5PUk0pCi0gICAge3sKLSAgICAgICAgLy8gQWxsIGhhcmR3YXJlIHRo
YXQgc3VwcG9ydHMgRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNIHNob3VsZCBzdXBwb3J0IGF1dG9n
ZW4gbWlwbWFwcywgYnV0Ci0gICAgICAgIC8vIGNoZWNrIGFueXdheS4KLSAgICAgICAgbXVzdFN1
cHBvcnQgfD0gRDNEMTFfRk9STUFUX1NVUFBPUlRfTUlQX0FVVE9HRU47Ci0gICAgICAgIGZ1bGxT
dXBwb3J0ID0gKChkZXZpY2VDYXBzLkI1RzZSNXN1cHBvcnQgJiBtdXN0U3VwcG9ydCkgPT0gbXVz
dFN1cHBvcnQpOwotICAgIH19Ci0gICAgZWxzZSBpZiAoZm9ybWF0ID09IERYR0lfRk9STUFUX0I0
RzRSNEE0X1VOT1JNKQotICAgIHt7Ci0gICAgICAgIGZ1bGxTdXBwb3J0ID0gKChkZXZpY2VDYXBz
LkI0RzRSNEE0c3VwcG9ydCAmIG11c3RTdXBwb3J0KSA9PSBtdXN0U3VwcG9ydCk7Ci0gICAgfX0K
LSAgICBlbHNlIGlmIChmb3JtYXQgPT0gRFhHSV9GT1JNQVRfQjVHNVI1QTFfVU5PUk0pCi0gICAg
e3sKLSAgICAgICAgZnVsbFN1cHBvcnQgPSAoKGRldmljZUNhcHMuQjVHNVI1QTFzdXBwb3J0ICYg
bXVzdFN1cHBvcnQpID09IG11c3RTdXBwb3J0KTsKLSAgICB9fQotICAgIGVsc2UKLSAgICB7ewot
ICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfX0KLQot
ICAgIC8vIFRoaXMgJ1N1cHBvcnRzRm9ybWF0JyBmdW5jdGlvbiBpcyB1c2VkIGJ5IGluZGl2aWR1
YWwgZW50cmllcyBpbiB0aGUgRDNEMTEgRm9ybWF0IE1hcCBiZWxvdywKLSAgICAvLyB3aGljaCBt
YXBzIEdMIGZvcm1hdHMgdG8gRFhHSSBmb3JtYXRzLgotICAgIGlmIChyZXF1aXJlU3VwcG9ydCkK
LSAgICB7ewotICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgQU5HTEUgd291bGQgbGlrZSB0byB1
c2UgdGhlIGVudHJ5IGluIHRoZSBtYXAgaWYgdGhlIGlucHV0dGVkIERYR0kgZm9ybWF0Ci0gICAg
ICAgIC8vICpJUyogc3VwcG9ydGVkLgotICAgICAgICAvLyBlLmcuIHRoZSBlbnRyeSBtaWdodCBt
YXAgR0xfUkdCNV9BMSB0byBEWEdJX0ZPUk1BVF9CNUc1UjVBMSwgd2hpY2ggc2hvdWxkIG9ubHkg
YmUgdXNlZCBpZgotICAgICAgICAvLyBEWEdJX0ZPUk1BVF9CNUc1UjVBMSBpcyBzdXBwb3J0ZWQu
Ci0gICAgICAgIC8vIEluIHRoaXMgY2FzZSwgd2Ugc2hvdWxkIG9ubHkgcmV0dXJuICd0cnVlJyBp
ZiB0aGUgZm9ybWF0ICpJUyogc3VwcG9ydGVkLgotICAgICAgICByZXR1cm4gZnVsbFN1cHBvcnQ7
Ci0gICAgfX0KLSAgICBlbHNlCi0gICAge3sKLSAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IEFO
R0xFIHdvdWxkIGxpa2UgdG8gdXNlIHRoZSBlbnRyeSBpbiB0aGUgbWFwIGlmIHRoZSBpbnB1dHRl
ZCBEWEdJIGZvcm1hdAotICAgICAgICAvLyAqSVNOJ1QqIHN1cHBvcnRlZC4KLSAgICAgICAgLy8g
VGhpcyBtaWdodCBiZSBhIGZhbGxiYWNrIGVudHJ5LiBlLmcuIGZvciBBTkdMRSB0byB1c2UgRFhH
SV9GT1JNQVRfUjhHOEI4QThfVU5PUk0gaWYKLSAgICAgICAgLy8gRFhHSV9GT1JNQVRfQjVHNVI1
QTEgaXNuJ3Qgc3VwcG9ydGVkLgotICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIHdlIHNob3VsZCBv
bmx5IHJldHVybiAndHJ1ZScgaWYgdGhlIGZvcm1hdCAqSVNOJ1QqIHN1cHBvcnRlZC4KLSAgICAg
ICAgcmV0dXJuICFmdWxsU3VwcG9ydDsKLSAgICB9fQotfX0KLQotLy8gRW5kIEZvcm1hdCBTdXBw
b3J0IEZ1bmN0aW9ucwotfX0gIC8vIG5hbWVzcGFjZQotCi1BTkdMRUZvcm1hdFNldDo6QU5HTEVG
b3JtYXRTZXQoKQotICAgIDogZm9ybWF0KEFOR0xFX0ZPUk1BVF9OT05FKSwKLSAgICAgIGdsSW50
ZXJuYWxGb3JtYXQoR0xfTk9ORSksCi0gICAgICB0ZXhGb3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9X
TiksCi0gICAgICBzcnZGb3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiksCi0gICAgICBydHZGb3Jt
YXQoRFhHSV9GT1JNQVRfVU5LTk9XTiksCi0gICAgICBkc3ZGb3JtYXQoRFhHSV9GT1JNQVRfVU5L
Tk9XTiksCi0gICAgICBibGl0U1JWRm9ybWF0KERYR0lfRk9STUFUX1VOS05PV04pLAotICAgICAg
c3dpenpsZUZvcm1hdChBTkdMRV9GT1JNQVRfTk9ORSksCi0gICAgICBtaXBHZW5lcmF0aW9uRnVu
Y3Rpb24obnVsbHB0ciksCi0gICAgICBjb2xvclJlYWRGdW5jdGlvbihudWxscHRyKQote3sKLX19
Ci0KLS8vIEZvciBzaXplZCBHTCBpbnRlcm5hbCBmb3JtYXRzLCB0aGVyZSBhcmUgc2V2ZXJhbCBw
b3NzaWJsZSBjb3JyZXNwb25kaW5nIEQzRDExIGZvcm1hdHMgZGVwZW5kaW5nCi0vLyBvbiBkZXZp
Y2UgY2FwYWJpbGl0aWVzLgotLy8gVGhpcyBmdW5jdGlvbiBhbGxvd3MgcXVlcnlpbmcgZm9yIHRo
ZSBEWEdJIHRleHR1cmUgZm9ybWF0cyB0byB1c2UgZm9yIHRleHR1cmVzLCBTUlZzLCBSVFZzIGFu
ZAotLy8gRFNWcyBnaXZlbiBhIEdMIGludGVybmFsIGZvcm1hdC4KLVRleHR1cmVGb3JtYXQ6OlRl
eHR1cmVGb3JtYXQoR0xlbnVtIGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBBTkdMRUZvcm1hdCBhbmdsZUZvcm1hdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSW5pdGlhbGl6ZVRleHR1cmVEYXRhRnVuY3Rpb24gaW50ZXJuYWxGb3JtYXRJ
bml0aWFsaXplcikKLSAgICA6IGRhdGFJbml0aWFsaXplckZ1bmN0aW9uKGludGVybmFsRm9ybWF0
SW5pdGlhbGl6ZXIpCi17ewotICAgIGZvcm1hdFNldCAgICAgICAgPSAmR2V0QU5HTEVGb3JtYXRT
ZXQoYW5nbGVGb3JtYXQpOwotICAgIHN3aXp6bGVGb3JtYXRTZXQgPSAmR2V0QU5HTEVGb3JtYXRT
ZXQoZm9ybWF0U2V0LT5zd2l6emxlRm9ybWF0KTsKLQotICAgIC8vIEdhdGhlciBhbGwgdGhlIGxv
YWQgZnVuY3Rpb25zIGZvciB0aGlzIGludGVybmFsIGZvcm1hdAotICAgIGxvYWRGdW5jdGlvbnMg
PSBHZXRMb2FkRnVuY3Rpb25zTWFwKGludGVybmFsRm9ybWF0LCBmb3JtYXRTZXQtPnRleEZvcm1h
dCk7Ci0KLSAgICBBU1NFUlQobG9hZEZ1bmN0aW9ucy5zaXplKCkgIT0gMCB8fCBpbnRlcm5hbEZv
cm1hdCA9PSBHTF9OT05FKTsKLX19Ci0KLUFOR0xFRm9ybWF0U2V0OjpBTkdMRUZvcm1hdFNldChB
TkdMRUZvcm1hdCBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGdsSW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVQgdGV4Rm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUIHNydkZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VCBydHZGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVQg
ZHN2Rm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUIGJs
aXRTUlZGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVGb3JtYXQg
c3dpenpsZUZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaXBHZW5lcmF0
aW9uRnVuY3Rpb24gbWlwR2VuZXJhdGlvbkZ1bmN0aW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENvbG9yUmVhZEZ1bmN0aW9uIGNvbG9yUmVhZEZ1bmN0aW9uKQotICAgIDogZm9y
bWF0KGZvcm1hdCksCi0gICAgICBnbEludGVybmFsRm9ybWF0KGdsSW50ZXJuYWxGb3JtYXQpLAot
ICAgICAgdGV4Rm9ybWF0KHRleEZvcm1hdCksCi0gICAgICBzcnZGb3JtYXQoc3J2Rm9ybWF0KSwK
LSAgICAgIHJ0dkZvcm1hdChydHZGb3JtYXQpLAotICAgICAgZHN2Rm9ybWF0KGRzdkZvcm1hdCks
Ci0gICAgICBibGl0U1JWRm9ybWF0KGJsaXRTUlZGb3JtYXQpLAotICAgICAgc3dpenpsZUZvcm1h
dChzd2l6emxlRm9ybWF0KSwKLSAgICAgIG1pcEdlbmVyYXRpb25GdW5jdGlvbihtaXBHZW5lcmF0
aW9uRnVuY3Rpb24pLAotICAgICAgY29sb3JSZWFkRnVuY3Rpb24oY29sb3JSZWFkRnVuY3Rpb24p
Ci17ewotfX0KLQotY29uc3QgQU5HTEVGb3JtYXRTZXQgJkdldEFOR0xFRm9ybWF0U2V0KEFOR0xF
Rm9ybWF0IGFuZ2xlRm9ybWF0KQote3sKICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCi0gICAgc3dp
dGNoIChhbmdsZUZvcm1hdCkKKyAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQogICAgIHt7CiB7
YW5nbGVfZm9ybWF0X2luZm9fY2FzZXN9CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yMDQsMjYgKzYw
LDEwIEBACiAgICAgLy8gY2xhbmctZm9ybWF0IG9uCiAKICAgICBVTlJFQUNIQUJMRSgpOwotICAg
IHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBkZWZhdWx0SW5mbzsKKyAgICBzdGF0aWMgY29u
c3QgRm9ybWF0IGRlZmF1bHRJbmZvOwogICAgIHJldHVybiBkZWZhdWx0SW5mbzsKIH19CiAKLWNv
bnN0IFRleHR1cmVGb3JtYXQgJkdldFRleHR1cmVGb3JtYXRJbmZvKEdMZW51bSBpbnRlcm5hbEZv
cm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJl
bmRlcmVyMTFEZXZpY2VDYXBzICZyZW5kZXJlcjExRGV2aWNlQ2FwcykKLXt7Ci0gICAgLy8gY2xh
bmctZm9ybWF0IG9mZgotICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCi0gICAge3sKLXt0ZXh0
dXJlX2Zvcm1hdF9pbmZvX2Nhc2VzfQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgfX0KLSAgICAvLyBjbGFuZy1mb3JtYXQgb24KLQotICAgIHN0YXRpYyBjb25zdCBU
ZXh0dXJlRm9ybWF0IGRlZmF1bHRJbmZvKEdMX05PTkUsIEFOR0xFX0ZPUk1BVF9OT05FLCBudWxs
cHRyKTsKLSAgICByZXR1cm4gZGVmYXVsdEluZm87Ci19fSAgLy8gR2V0VGV4dHVyZUZvcm1hdElu
Zm8KLQogfX0gIC8vIG5hbWVzcGFjZSBkM2QxMQogCiB9fSAgLy8gbmFtZXNwYWNlIHJ4CkBAIC0y
NzksMTAgKzExOSwxNCBAQAogICAgICAgICAgICAgaW50ZXJuYWxfZm9ybWF0X2luaXRpYWxpemVy
ID0gJ0luaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVieXRlLCAweDAwLCAweDAwLCAweDAwLCAw
eDAxPicKICAgICAgICAgZWxpZiBhbmdsZV9mb3JtYXRbJ2NvbXBvbmVudFR5cGUnXSA9PSAndW5v
cm0nIGFuZCBhbmdsZV9mb3JtYXRbJ2JpdHMnXVsncmVkJ10gPT0gODoKICAgICAgICAgICAgIGlu
dGVybmFsX2Zvcm1hdF9pbml0aWFsaXplciA9ICdJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1
Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRj4nCisgICAgICAgIGVsaWYgYW5nbGVfZm9ybWF0
Wydjb21wb25lbnRUeXBlJ10gPT0gJ3Vub3JtJyBhbmQgYW5nbGVfZm9ybWF0WydiaXRzJ11bJ3Jl
ZCddID09IDE2OgorICAgICAgICAgICAgaW50ZXJuYWxfZm9ybWF0X2luaXRpYWxpemVyID0gJ0lu
aXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVieXRlLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAw
eEZGRkY+JwogICAgICAgICBlbGlmIGFuZ2xlX2Zvcm1hdFsnY29tcG9uZW50VHlwZSddID09ICdp
bnQnIGFuZCBhbmdsZV9mb3JtYXRbJ2JpdHMnXVsncmVkJ10gPT0gODoKICAgICAgICAgICAgIGlu
dGVybmFsX2Zvcm1hdF9pbml0aWFsaXplciA9ICdJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0xi
eXRlLCAweDAwLCAweDAwLCAweDAwLCAweDAxPicKICAgICAgICAgZWxpZiBhbmdsZV9mb3JtYXRb
J2NvbXBvbmVudFR5cGUnXSA9PSAnc25vcm0nIGFuZCBhbmdsZV9mb3JtYXRbJ2JpdHMnXVsncmVk
J10gPT0gODoKICAgICAgICAgICAgIGludGVybmFsX2Zvcm1hdF9pbml0aWFsaXplciA9ICdJbml0
aWFsaXplNENvbXBvbmVudERhdGE8R0xieXRlLCAweDAwLCAweDAwLCAweDAwLCAweDdGPicKKyAg
ICAgICAgZWxpZiBhbmdsZV9mb3JtYXRbJ2NvbXBvbmVudFR5cGUnXSA9PSAnc25vcm0nIGFuZCBh
bmdsZV9mb3JtYXRbJ2JpdHMnXVsncmVkJ10gPT0gMTY6CisgICAgICAgICAgICBpbnRlcm5hbF9m
b3JtYXRfaW5pdGlhbGl6ZXIgPSAnSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMdXNob3J0LCAw
eDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDdGRkY+JwogICAgICAgICBlbGlmIGFuZ2xlX2Zvcm1h
dFsnY29tcG9uZW50VHlwZSddID09ICdmbG9hdCcgYW5kIGFuZ2xlX2Zvcm1hdFsnYml0cyddWydy
ZWQnXSA9PSAxNjoKICAgICAgICAgICAgIGludGVybmFsX2Zvcm1hdF9pbml0aWFsaXplciA9ICdJ
bml0aWFsaXplNENvbXBvbmVudERhdGE8R0xoYWxmLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCBn
bDo6RmxvYXQxNk9uZT4nCiAgICAgICAgIGVsaWYgYW5nbGVfZm9ybWF0Wydjb21wb25lbnRUeXBl
J10gPT0gJ3VpbnQnIGFuZCBhbmdsZV9mb3JtYXRbJ2JpdHMnXVsncmVkJ10gPT0gMTY6CkBAIC0z
MDAsOSArMTQ0LDExIEBACiAKICAgICByZXR1cm4gaW50ZXJuYWxfZm9ybWF0X2luaXRpYWxpemVy
CiAKLWRlZiBnZXRfc3dpenpsZV9mb3JtYXRfaWQoYW5nbGVfZm9ybWF0X2lkLCBhbmdsZV9mb3Jt
YXQpOgotICAgIGlmIGFuZ2xlX2Zvcm1hdF9pZCA9PSAnQU5HTEVfRk9STUFUX05PTkUnOgotICAg
ICAgICByZXR1cm4gJ0FOR0xFX0ZPUk1BVF9OT05FJworZGVmIGdldF9zd2l6emxlX2Zvcm1hdF9p
ZChpbnRlcm5hbF9mb3JtYXQsIGFuZ2xlX2Zvcm1hdCk6CisgICAgYW5nbGVfZm9ybWF0X2lkID0g
YW5nbGVfZm9ybWF0WyJmb3JtYXROYW1lIl0KKyAgICBpZiAoaW50ZXJuYWxfZm9ybWF0ID09ICdH
TF9OT05FJykgb3IgKGFuZ2xlX2Zvcm1hdF9pZCA9PSAnTk9ORScpOgorICAgICAgICByZXR1cm4g
J0dMX05PTkUnCisKICAgICBlbGlmICdzd2l6emxlRm9ybWF0JyBpbiBhbmdsZV9mb3JtYXQ6CiAg
ICAgICAgICMgRm9yIHNvbWUgc3BlY2lhbCBmb3JtYXRzIGxpa2UgY29tcHJlc3NlZCBmb3JtYXRz
IHRoYXQgZG9uJ3QgaGF2ZSBhIGNsZWFybHkgZGVmaW5lZCBudW1iZXIKICAgICAgICAgIyBvZiBi
aXRzIHBlciBjaGFubmVsLCBzd2l6emxlIGZvcm1hdCBuZWVkcyB0byBiZSBzcGVjaWZpZWQgbWFu
dWFsbHkuCkBAIC0zMDksNyArMTU1LDcgQEAKICAgICAgICAgcmV0dXJuIGFuZ2xlX2Zvcm1hdFsn
c3dpenpsZUZvcm1hdCddCiAKICAgICBpZiAnYml0cycgbm90IGluIGFuZ2xlX2Zvcm1hdDoKLSAg
ICAgICAgcmFpc2UgVmFsdWVFcnJvcignbm8gYml0cyBpbmZvcm1hdGlvbiBmb3IgZGV0ZXJtaW5p
bmcgc3dpenpsZWZvcm1hdCBmb3IgZm9ybWF0OiAnICsgYW5nbGVfZm9ybWF0X2lkKQorICAgICAg
ICByYWlzZSBWYWx1ZUVycm9yKCdubyBiaXRzIGluZm9ybWF0aW9uIGZvciBkZXRlcm1pbmluZyBz
d2l6emxlZm9ybWF0IGZvciBmb3JtYXQ6ICcgKyBpbnRlcm5hbF9mb3JtYXQpCiAKICAgICBiaXRz
ID0gYW5nbGVfZm9ybWF0WydiaXRzJ10KICAgICBtYXhfY29tcG9uZW50X2JpdHMgPSBtYXgoYml0
cy5pdGVydmFsdWVzKCkpCkBAIC0zMTgsNyArMTY0LDcgQEAKICAgICAjIFRoZSBmb3JtYXQgaXRz
ZWxmIGNhbiBiZSB1c2VkIGZvciBzd2l6emxlcyBpZiBpdCBjYW4gYmUgYWNjZXNzZWQgYXMgYSBy
ZW5kZXIgdGFyZ2V0IGFuZAogICAgICMgc2FtcGxlZCBhbmQgdGhlIGJpdCBjb3VudCBmb3IgYWxs
IDQgY2hhbm5lbHMgaXMgdGhlIHNhbWUuCiAgICAgaWYgInJ0dkZvcm1hdCIgaW4gYW5nbGVfZm9y
bWF0IGFuZCAic3J2Rm9ybWF0IiBpbiBhbmdsZV9mb3JtYXQgYW5kIG5vdCBjaGFubmVsc19kaWZm
ZXJlbnQgYW5kIGxlbihhbmdsZV9mb3JtYXRbJ2NoYW5uZWxzJ10pID09IDQ6Ci0gICAgICAgIHJl
dHVybiBhbmdsZV9mb3JtYXRfaWQKKyAgICAgICAgcmV0dXJuIGFuZ2xlX2Zvcm1hdFsiZ2xJbnRl
cm5hbEZvcm1hdCJdIGlmICJnbEludGVybmFsRm9ybWF0IiBpbiBhbmdsZV9mb3JtYXQgZWxzZSBp
bnRlcm5hbF9mb3JtYXQKIAogICAgIGIgPSBpbnQobWF0aC5jZWlsKGZsb2F0KG1heF9jb21wb25l
bnRfYml0cykgLyA4KSAqIDgpCiAKQEAgLTMyNiwxNzEgKzE3MiwxNjggQEAKICAgICAjIGRlZmlu
ZWQgY29tcG9uZW50IHR5cGUuCiAgICAgaWYgYW5nbGVfZm9ybWF0WydjaGFubmVscyddLmZpbmQo
J2QnKSA+PSAwOgogICAgICAgICBpZiBiID09IDI0IG9yIGIgPT0gMzI6Ci0gICAgICAgICAgICBy
ZXR1cm4gJ0FOR0xFX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQnCisgICAgICAgICAgICByZXR1
cm4gJ0dMX1JHQkEzMkYnCiAgICAgICAgIGlmIGIgPT0gMTY6Ci0gICAgICAgICAgICByZXR1cm4g
J0FOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk0nCisgICAgICAgICAgICByZXR1cm4gJ0dM
X1JHQkExNl9FWFQnCiAKICAgICBpZiBiID09IDI0OgotICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KCd1bmV4cGVjdGVkIDI0LWJpdCBmb3JtYXQgd2hlbiBkZXRlcm1pbmluZyBzd2l6emxlZm9ybWF0
IGZvciBmb3JtYXQ6ICcgKyBhbmdsZV9mb3JtYXRfaWQpCisgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoJ3VuZXhwZWN0ZWQgMjQtYml0IGZvcm1hdCB3aGVuIGRldGVybWluaW5nIHN3aXp6bGVmb3Jt
YXQgZm9yIGZvcm1hdDogJyArIGludGVybmFsX2Zvcm1hdCkKIAogICAgIGlmICdjb21wb25lbnRU
eXBlJyBub3QgaW4gYW5nbGVfZm9ybWF0OgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdubyBj
b21wb25lbnQgdHlwZSBpbmZvcm1hdGlvbiBmb3IgZGV0ZXJtaW5pbmcgc3dpenpsZWZvcm1hdCBm
b3IgZm9ybWF0OiAnICsgYW5nbGVfZm9ybWF0X2lkKQorICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KCdubyBjb21wb25lbnQgdHlwZSBpbmZvcm1hdGlvbiBmb3IgZGV0ZXJtaW5pbmcgc3dpenpsZWZv
cm1hdCBmb3IgZm9ybWF0OiAnICsgaW50ZXJuYWxfZm9ybWF0KQogCiAgICAgY29tcG9uZW50X3R5
cGUgPSBhbmdsZV9mb3JtYXRbJ2NvbXBvbmVudFR5cGUnXQorCisgICAgc3dpenpsZSA9ICJHTF9S
R0JBIiArIHN0cihiKQorCiAgICAgaWYgY29tcG9uZW50X3R5cGUgPT0gJ3VpbnQnOgotICAgICAg
ICByZXR1cm4gJ0FOR0xFX0ZPUk1BVF9Se31He31Ce31Be31fVUlOVCcuZm9ybWF0KGIsIGIsIGIs
IGIpCisgICAgICAgIHN3aXp6bGUgKz0gIkkiCiAgICAgZWxpZiBjb21wb25lbnRfdHlwZSA9PSAn
aW50JzoKLSAgICAgICAgcmV0dXJuICdBTkdMRV9GT1JNQVRfUnt9R3t9Qnt9QXt9X1NJTlQnLmZv
cm1hdChiLCBiLCBiLCBiKQorICAgICAgICBzd2l6emxlICs9ICJJIgogICAgIGVsaWYgY29tcG9u
ZW50X3R5cGUgPT0gJ3Vub3JtJzoKLSAgICAgICAgcmV0dXJuICdBTkdMRV9GT1JNQVRfUnt9R3t9
Qnt9QXt9X1VOT1JNJy5mb3JtYXQoYiwgYiwgYiwgYikKKyAgICAgICAgaWYgKGIgPT0gMTYpOgor
ICAgICAgICAgICAgc3dpenpsZSArPSAiX0VYVCIKICAgICBlbGlmIGNvbXBvbmVudF90eXBlID09
ICdzbm9ybSc6Ci0gICAgICAgIHJldHVybiAnQU5HTEVfRk9STUFUX1J7fUd7fUJ7fUF7fV9TTk9S
TScuZm9ybWF0KGIsIGIsIGIsIGIpCisgICAgICAgIHN3aXp6bGUgKz0gIl9TTk9STSIKKyAgICAg
ICAgaWYgKGIgPT0gMTYpOgorICAgICAgICAgICAgc3dpenpsZSArPSAiX0VYVCIKICAgICBlbGlm
IGNvbXBvbmVudF90eXBlID09ICdmbG9hdCc6Ci0gICAgICAgIHJldHVybiAnQU5HTEVfRk9STUFU
X1J7fUd7fUJ7fUF7fV9GTE9BVCcuZm9ybWF0KGIsIGIsIGIsIGIpCisgICAgICAgIHN3aXp6bGUg
Kz0gIkYiCisgICAgICAgIGlmIChiID09IDE2KToKKyAgICAgICAgICAgIHN3aXp6bGUgKz0gIl9F
WFQiCiAgICAgZWxzZToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignY291bGQgbm90IGRldGVy
bWluZSBzd2l6emxlZm9ybWF0IGJhc2VkIG9uIGNvbXBvbmVudFR5cGUgZm9yIGZvcm1hdDogJyAr
IGFuZ2xlX2Zvcm1hdF9pZCkKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignY291bGQgbm90IGRl
dGVybWluZSBzd2l6emxlZm9ybWF0IGJhc2VkIG9uIGNvbXBvbmVudFR5cGUgZm9yIGZvcm1hdDog
JyArIGludGVybmFsX2Zvcm1hdCkKIAotZGVmIGdldF90ZXh0dXJlX2Zvcm1hdF9pdGVtKGlkeCwg
aW50ZXJuYWxfZm9ybWF0LCByZXF1aXJlbWVudHNfZm4sIGFuZ2xlX2Zvcm1hdF9pZCwgYW5nbGVf
Zm9ybWF0KToKLSAgICB0YWJsZV9kYXRhID0gJyc7CisgICAgcmV0dXJuIHN3aXp6bGUKIAotICAg
IGludGVybmFsX2Zvcm1hdF9pbml0aWFsaXplciA9IGdldF9pbnRlcm5hbF9mb3JtYXRfaW5pdGlh
bGl6ZXIoaW50ZXJuYWxfZm9ybWF0LCBhbmdsZV9mb3JtYXQpCitkZWYgZ2V0X2JsaXRfc3J2X2Zv
cm1hdChhbmdsZV9mb3JtYXQpOgorICAgIGlmICdjaGFubmVscycgbm90IGluIGFuZ2xlX2Zvcm1h
dDoKKyAgICAgICAgcmV0dXJuICdEWEdJX0ZPUk1BVF9VTktOT1dOJworICAgIGlmICdyJyBpbiBh
bmdsZV9mb3JtYXRbJ2NoYW5uZWxzJ10gYW5kIGFuZ2xlX2Zvcm1hdFsnY29tcG9uZW50VHlwZSdd
IGluIFsnaW50JywgJ3VpbnQnXToKKyAgICAgICAgcmV0dXJuIGFuZ2xlX2Zvcm1hdFsncnR2Rm9y
bWF0J10KIAotICAgIGluZGVudCA9ICcgICAgICAgICAgICAnCi0gICAgaWYgcmVxdWlyZW1lbnRz
X2ZuICE9IE5vbmU6Ci0gICAgICAgIGlmIGlkeCA9PSAwOgotICAgICAgICAgICAgdGFibGVfZGF0
YSArPSAnICAgICAgICAgICAgaWYgKCcgKyByZXF1aXJlbWVudHNfZm4gKyAnKHJlbmRlcmVyMTFE
ZXZpY2VDYXBzKSlcbicKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRhYmxlX2RhdGEgKz0g
JyAgICAgICAgICAgIGVsc2UgaWYgKCcgKyByZXF1aXJlbWVudHNfZm4gKyAnKHJlbmRlcmVyMTFE
ZXZpY2VDYXBzKSlcbicKLSAgICAgICAgdGFibGVfZGF0YSArPSAnICAgICAgICAgICAge1xuJwot
ICAgICAgICBpbmRlbnQgKz0gJyAgICAnCisgICAgcmV0dXJuIGFuZ2xlX2Zvcm1hdFsic3J2Rm9y
bWF0Il0gaWYgInNydkZvcm1hdCIgaW4gYW5nbGVfZm9ybWF0IGVsc2UgIkRYR0lfRk9STUFUX1VO
S05PV04iCiAKLSAgICB0YWJsZV9kYXRhICs9IGluZGVudCArICdzdGF0aWMgY29uc3QgVGV4dHVy
ZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LFxuJwotICAgIHRhYmxlX2RhdGEg
Kz0gaW5kZW50ICsgJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAr
IGFuZ2xlX2Zvcm1hdF9pZCArICcsXG4nCi0gICAgdGFibGVfZGF0YSArPSBpbmRlbnQgKyAnICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICsgaW50ZXJuYWxfZm9ybWF0
X2luaXRpYWxpemVyICsgJyk7XG4nCi0gICAgdGFibGVfZGF0YSArPSBpbmRlbnQgKyAncmV0dXJu
IHRleHR1cmVGb3JtYXQ7XG4nCiAKLSAgICBpZiByZXF1aXJlbWVudHNfZm4gIT0gTm9uZToKLSAg
ICAgICAgdGFibGVfZGF0YSArPSAnICAgICAgICAgICAgfVxuJworZm9ybWF0X2VudHJ5X3RlbXBs
YXRlID0gIiIie3NwYWNlfXt7Cit7c3BhY2V9ICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyh7
aW50ZXJuYWxGb3JtYXR9LAore3NwYWNlfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5n
bGU6OkZvcm1hdDo6SUQ6Ontmb3JtYXROYW1lfSwKK3tzcGFjZX0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHt0ZXhGb3JtYXR9LAore3NwYWNlfSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAge3NydkZvcm1hdH0sCit7c3BhY2V9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cnR2
Rm9ybWF0fSwKK3tzcGFjZX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkc3ZGb3JtYXR9
LAore3NwYWNlfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2JsaXRTUlZGb3JtYXR9LAor
e3NwYWNlfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N3aXp6bGVGb3JtYXR9LAore3Nw
YWNlfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2luaXRpYWxpemVyfSwKK3tzcGFjZX0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOwore3NwYWNlfSAgICByZXR1
cm4gaW5mbzsKK3tzcGFjZX19fQorIiIiCiAKLSAgICByZXR1cm4gdGFibGVfZGF0YQorc3BsaXRf
Zm9ybWF0X2VudHJ5X3RlbXBsYXRlID0gIiIie3NwYWNlfSAgICB7Y29uZGl0aW9ufQore3NwYWNl
fSAgICB7ewore3NwYWNlfSAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKHtpbnRlcm5h
bEZvcm1hdH0sCit7c3BhY2V9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6
OkZvcm1hdDo6SUQ6Ontmb3JtYXROYW1lfSwKK3tzcGFjZX0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7dGV4Rm9ybWF0fSwKK3tzcGFjZX0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7c3J2Rm9ybWF0fSwKK3tzcGFjZX0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB7cnR2Rm9ybWF0fSwKK3tzcGFjZX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7ZHN2Rm9ybWF0fSwKK3tzcGFjZX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
YmxpdFNSVkZvcm1hdH0sCit7c3BhY2V9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
e3N3aXp6bGVGb3JtYXR9LAore3NwYWNlfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHtpbml0aWFsaXplcn0sCit7c3BhY2V9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGV2aWNlQ2Fwcyk7Cit7c3BhY2V9ICAgICAgICByZXR1cm4gaW5mbzsKK3tzcGFjZX0gICAgfX0K
KyIiIgogCi1kZWYgcGFyc2VfanNvbl9pbnRvX3N3aXRjaF90ZXh0dXJlX2Zvcm1hdF9zdHJpbmco
anNvbl9tYXAsIGpzb25fZGF0YSk6Ci0gICAgdGFibGVfZGF0YSA9ICcnCi0gICAgYW5nbGVfZm9y
bWF0X21hcCA9IHt9CitkZWYganNvbl90b190YWJsZV9kYXRhKGludGVybmFsX2Zvcm1hdCwgZm9y
bWF0X25hbWUsIHByZWZpeCwganNvbik6CiAKLSAgICBmb3IgaW50ZXJuYWxfZm9ybWF0X2l0ZW0g
aW4gc29ydGVkKGpzb25fbWFwLml0ZXJpdGVtcygpKToKLSAgICAgICAgaW50ZXJuYWxfZm9ybWF0
ID0gaW50ZXJuYWxfZm9ybWF0X2l0ZW1bMF0KLSAgICAgICAgdGFibGVfZGF0YSArPSAnICAgICAg
ICBjYXNlICcgKyBpbnRlcm5hbF9mb3JtYXQgKyAnOlxuJwotICAgICAgICB0YWJsZV9kYXRhICs9
ICcgICAgICAgIHtcbicKKyAgICB0YWJsZV9kYXRhID0gIiIKIAotICAgICAgICBpZiBpc2luc3Rh
bmNlKGpzb25fbWFwW2ludGVybmFsX2Zvcm1hdF0sIGJhc2VzdHJpbmcpOgotICAgICAgICAgICAg
YW5nbGVfZm9ybWF0X2lkID0ganNvbl9tYXBbaW50ZXJuYWxfZm9ybWF0XQotICAgICAgICAgICAg
dGFibGVfZGF0YSArPSBnZXRfdGV4dHVyZV9mb3JtYXRfaXRlbSgwLCBpbnRlcm5hbF9mb3JtYXQs
IE5vbmUsIGFuZ2xlX2Zvcm1hdF9pZCwganNvbl9kYXRhW2FuZ2xlX2Zvcm1hdF9pZF0pCisgICAg
cGFyc2VkID0geworICAgICAgICAic3BhY2UiOiAiICAgICAgICAiLAorICAgICAgICAiaW50ZXJu
YWxGb3JtYXQiOiBpbnRlcm5hbF9mb3JtYXQsCisgICAgICAgICJmb3JtYXROYW1lIjogZm9ybWF0
X25hbWUsCisgICAgICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfVU5LTk9XTiIsCisgICAg
ICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfVU5LTk9XTiIsCisgICAgICAgICJydHZGb3Jt
YXQiOiAiRFhHSV9GT1JNQVRfVU5LTk9XTiIsCisgICAgICAgICJkc3ZGb3JtYXQiOiAiRFhHSV9G
T1JNQVRfVU5LTk9XTiIsCisgICAgICAgICJjb25kaXRpb24iOiBwcmVmaXgsCisgICAgfQorCisg
ICAgZm9yIGssIHYgaW4ganNvbi5pdGVyaXRlbXMoKToKKyAgICAgICAgcGFyc2VkW2tdID0gdgor
CisgICAgIyBEZXJpdmVkIHZhbHVlcy4KKyAgICBwYXJzZWRbImJsaXRTUlZGb3JtYXQiXSA9IGdl
dF9ibGl0X3Nydl9mb3JtYXQocGFyc2VkKQorICAgIHBhcnNlZFsic3dpenpsZUZvcm1hdCJdID0g
Z2V0X3N3aXp6bGVfZm9ybWF0X2lkKGludGVybmFsX2Zvcm1hdCwgcGFyc2VkKQorICAgIHBhcnNl
ZFsiaW5pdGlhbGl6ZXIiXSAgID0gZ2V0X2ludGVybmFsX2Zvcm1hdF9pbml0aWFsaXplcihpbnRl
cm5hbF9mb3JtYXQsIGpzb24pCisKKyAgICBpZiBsZW4ocHJlZml4KSA+IDA6CisgICAgICAgIHJl
dHVybiBzcGxpdF9mb3JtYXRfZW50cnlfdGVtcGxhdGUuZm9ybWF0KCoqcGFyc2VkKQorICAgIGVs
c2U6CisgICAgICAgIHJldHVybiBmb3JtYXRfZW50cnlfdGVtcGxhdGUuZm9ybWF0KCoqcGFyc2Vk
KQorCitkZWYgcGFyc2VfanNvbl9hbmdsZV9mb3JtYXRfY2FzZShmb3JtYXRfbmFtZSwgYW5nbGVf
Zm9ybWF0LCBqc29uX2RhdGEpOgorICAgIHN1cHBvcnRlZF9jYXNlID0ge30KKyAgICB1bnN1cHBv
cnRlZF9jYXNlID0ge30KKyAgICBzdXBwb3J0X3Rlc3QgPSBOb25lCisgICAgZmFsbGJhY2sgPSBO
b25lCisKKyAgICBmb3IgaywgdiBpbiBhbmdsZV9mb3JtYXQuaXRlcml0ZW1zKCk6CisgICAgICAg
IGlmIGsgPT0gIkZMMTBQbHVzIjoKKyAgICAgICAgICAgIGFzc2VydCBzdXBwb3J0X3Rlc3QgaXMg
Tm9uZQorICAgICAgICAgICAgc3VwcG9ydF90ZXN0ID0gIk9ubHlGTDEwUGx1cyhkZXZpY2VDYXBz
KSIKKyAgICAgICAgICAgIGZvciBrMiwgdjIgaW4gdi5pdGVyaXRlbXMoKToKKyAgICAgICAgICAg
ICAgICBzdXBwb3J0ZWRfY2FzZVtrMl0gPSB2MgorICAgICAgICBlbGlmIGsgPT0gIkZMOV8zIjoK
KyAgICAgICAgICAgIHNwbGl0ID0gVHJ1ZQorICAgICAgICAgICAgZm9yIGsyLCB2MiBpbiB2Lml0
ZXJpdGVtcygpOgorICAgICAgICAgICAgICAgIHVuc3VwcG9ydGVkX2Nhc2VbazJdID0gdjIKKyAg
ICAgICAgZWxpZiBrID09ICJzdXBwb3J0VGVzdCI6CisgICAgICAgICAgICBhc3NlcnQgc3VwcG9y
dF90ZXN0IGlzIE5vbmUKKyAgICAgICAgICAgIHN1cHBvcnRfdGVzdCA9IHYKKyAgICAgICAgZWxp
ZiBrID09ICJmYWxsYmFja0Zvcm1hdCI6CisgICAgICAgICAgICBmYWxsYmFjayA9IHYKICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIGZvciBpZHgsIHJlcXVpcmVtZW50c19tYXAgaW4gZW51bWVy
YXRlKHNvcnRlZChqc29uX21hcFtpbnRlcm5hbF9mb3JtYXRdLml0ZXJpdGVtcygpKSk6Ci0gICAg
ICAgICAgICAgICAgYW5nbGVfZm9ybWF0X2lkID0gcmVxdWlyZW1lbnRzX21hcFsxXQotICAgICAg
ICAgICAgICAgIHRhYmxlX2RhdGEgKz0gZ2V0X3RleHR1cmVfZm9ybWF0X2l0ZW0oaWR4LCBpbnRl
cm5hbF9mb3JtYXQsIHJlcXVpcmVtZW50c19tYXBbMF0sIGFuZ2xlX2Zvcm1hdF9pZCwganNvbl9k
YXRhW2FuZ2xlX2Zvcm1hdF9pZF0pCi0gICAgICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAg
ICAgICBlbHNlXG4nCi0gICAgICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAgICAgICB7XG4n
Ci0gICAgICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAgICAgICAgICAgYnJlYWs7XG4nCi0g
ICAgICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAgICAgICB9XG4nCisgICAgICAgICAgICBz
dXBwb3J0ZWRfY2FzZVtrXSA9IHYKKyAgICAgICAgICAgIHVuc3VwcG9ydGVkX2Nhc2Vba10gPSB2
CiAKLSAgICAgICAgdGFibGVfZGF0YSArPSAnICAgICAgICB9XG4nCisgICAgaWYgZmFsbGJhY2sg
IT0gTm9uZToKKyAgICAgICAgdW5zdXBwb3J0ZWRfY2FzZSwgXywgXyA9IHBhcnNlX2pzb25fYW5n
bGVfZm9ybWF0X2Nhc2UoCisgICAgICAgICAgICBmYWxsYmFjaywganNvbl9kYXRhW2ZhbGxiYWNr
XSwganNvbl9kYXRhKQorICAgICAgICB1bnN1cHBvcnRlZF9jYXNlWyJmb3JtYXROYW1lIl0gPSBm
YWxsYmFjawogCi0gICAgcmV0dXJuIHRhYmxlX2RhdGEKKyAgICBpZiBzdXBwb3J0X3Rlc3QgIT0g
Tm9uZToKKyAgICAgICAgcmV0dXJuIHN1cHBvcnRlZF9jYXNlLCB1bnN1cHBvcnRlZF9jYXNlLCBz
dXBwb3J0X3Rlc3QKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gc3VwcG9ydGVkX2Nhc2UsIE5v
bmUsIE5vbmUKIAotZGVmIGdldF9jaGFubmVsX3N0cnVjdChhbmdsZV9mb3JtYXQpOgotICAgIGlm
ICdiaXRzJyBub3QgaW4gYW5nbGVfZm9ybWF0OgotICAgICAgICByZXR1cm4gTm9uZQotICAgIGJp
dHMgPSBhbmdsZV9mb3JtYXRbJ2JpdHMnXQotICAgIGlmICdkZXB0aCcgaW4gYml0cyBvciAnc3Rl
bmNpbCcgaW4gYml0czoKLSAgICAgICAgcmV0dXJuIE5vbmUKK2RlZiBwYXJzZV9qc29uX2ludG9f
c3dpdGNoX2FuZ2xlX2Zvcm1hdF9zdHJpbmcoanNvbl9tYXAsIGpzb25fZGF0YSk6CisgICAgdGFi
bGVfZGF0YSA9ICcnCiAKLSAgICBpZiAnY2hhbm5lbFN0cnVjdCcgaW4gYW5nbGVfZm9ybWF0Ogot
ICAgICAgICByZXR1cm4gYW5nbGVfZm9ybWF0WydjaGFubmVsU3RydWN0J10KKyAgICBmb3IgaW50
ZXJuYWxfZm9ybWF0LCBmb3JtYXRfbmFtZSBpbiBzb3J0ZWQoanNvbl9tYXAuaXRlcml0ZW1zKCkp
OgogCi0gICAgc3RydWN0X25hbWUgPSAnJwotICAgIGZvciBjaGFubmVsIGluIGFuZ2xlX2Zvcm1h
dFsnY2hhbm5lbHMnXToKLSAgICAgICAgaWYgY2hhbm5lbCA9PSAncic6Ci0gICAgICAgICAgICBz
dHJ1Y3RfbmFtZSArPSAnUnt9Jy5mb3JtYXQoYml0c1sncmVkJ10pCi0gICAgICAgIGlmIGNoYW5u
ZWwgPT0gJ2cnOgotICAgICAgICAgICAgc3RydWN0X25hbWUgKz0gJ0d7fScuZm9ybWF0KGJpdHNb
J2dyZWVuJ10pCi0gICAgICAgIGlmIGNoYW5uZWwgPT0gJ2InOgotICAgICAgICAgICAgc3RydWN0
X25hbWUgKz0gJ0J7fScuZm9ybWF0KGJpdHNbJ2JsdWUnXSkKLSAgICAgICAgaWYgY2hhbm5lbCA9
PSAnYSc6Ci0gICAgICAgICAgICBzdHJ1Y3RfbmFtZSArPSAnQXt9Jy5mb3JtYXQoYml0c1snYWxw
aGEnXSkKLSAgICBpZiBhbmdsZV9mb3JtYXRbJ2NvbXBvbmVudFR5cGUnXSA9PSAnZmxvYXQnOgot
ICAgICAgICBzdHJ1Y3RfbmFtZSArPSAnRicKLSAgICBpZiBhbmdsZV9mb3JtYXRbJ2NvbXBvbmVu
dFR5cGUnXSA9PSAnaW50JyBvciBhbmdsZV9mb3JtYXRbJ2NvbXBvbmVudFR5cGUnXSA9PSAnc25v
cm0nOgotICAgICAgICBzdHJ1Y3RfbmFtZSArPSAnUycKLSAgICByZXR1cm4gc3RydWN0X25hbWUK
KyAgICAgICAgaWYgZm9ybWF0X25hbWUgbm90IGluIGpzb25fZGF0YToKKyAgICAgICAgICAgIGNv
bnRpbnVlCiAKLWRlZiBnZXRfbWlwX2dlbmVyYXRpb25fZnVuY3Rpb24oYW5nbGVfZm9ybWF0KToK
LSAgICBjaGFubmVsX3N0cnVjdCA9IGdldF9jaGFubmVsX3N0cnVjdChhbmdsZV9mb3JtYXQpCi0g
ICAgaWYgY2hhbm5lbF9zdHJ1Y3QgPT0gTm9uZToKLSAgICAgICAgcmV0dXJuICdudWxscHRyJwot
ICAgIHJldHVybiAnR2VuZXJhdGVNaXA8JyArIGNoYW5uZWxfc3RydWN0ICsgJz4nCisgICAgICAg
IGFuZ2xlX2Zvcm1hdCA9IGpzb25fZGF0YVtmb3JtYXRfbmFtZV0KIAotZGVmIGdldF9jb2xvcl9y
ZWFkX2Z1bmN0aW9uKGFuZ2xlX2Zvcm1hdCk6Ci0gICAgY2hhbm5lbF9zdHJ1Y3QgPSBnZXRfY2hh
bm5lbF9zdHJ1Y3QoYW5nbGVfZm9ybWF0KQotICAgIGlmIGNoYW5uZWxfc3RydWN0ID09IE5vbmU6
Ci0gICAgICAgIHJldHVybiAnbnVsbHB0cicKLSAgICBjb21wb25lbnRfdHlwZV9tYXAgPSB7Ci0g
ICAgICAgICd1aW50JzogJ0dMdWludCcsCi0gICAgICAgICdpbnQnOiAnR0xpbnQnLAotICAgICAg
ICAndW5vcm0nOiAnR0xmbG9hdCcsCi0gICAgICAgICdzbm9ybSc6ICdHTGZsb2F0JywKLSAgICAg
ICAgJ2Zsb2F0JzogJ0dMZmxvYXQnCi0gICAgfQotICAgIHJldHVybiAnUmVhZENvbG9yPCcgKyBj
aGFubmVsX3N0cnVjdCArICcsICcrIGNvbXBvbmVudF90eXBlX21hcFthbmdsZV9mb3JtYXRbJ2Nv
bXBvbmVudFR5cGUnXV0gKyAnPicKKyAgICAgICAgc3VwcG9ydGVkX2Nhc2UsIHVuc3VwcG9ydGVk
X2Nhc2UsIHN1cHBvcnRfdGVzdCA9IHBhcnNlX2pzb25fYW5nbGVfZm9ybWF0X2Nhc2UoCisgICAg
ICAgICAgICBmb3JtYXRfbmFtZSwgYW5nbGVfZm9ybWF0LCBqc29uX2RhdGEpCiAKLWRlZiBnZXRf
YmxpdF9zcnZfZm9ybWF0KGFuZ2xlX2Zvcm1hdCk6Ci0gICAgaWYgJ2NoYW5uZWxzJyBub3QgaW4g
YW5nbGVfZm9ybWF0OgotICAgICAgICByZXR1cm4gJ0RYR0lfRk9STUFUX1VOS05PV04nCi0gICAg
aWYgJ3InIGluIGFuZ2xlX2Zvcm1hdFsnY2hhbm5lbHMnXSBhbmQgYW5nbGVfZm9ybWF0Wydjb21w
b25lbnRUeXBlJ10gaW4gWydpbnQnLCAndWludCddOgotICAgICAgICByZXR1cm4gYW5nbGVfZm9y
bWF0WydydHZGb3JtYXQnXQorICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAgIGNhc2UgJyAr
IGludGVybmFsX2Zvcm1hdCArICc6XG4nCiAKLSAgICByZXR1cm4gYW5nbGVfZm9ybWF0WyJzcnZG
b3JtYXQiXSBpZiAic3J2Rm9ybWF0IiBpbiBhbmdsZV9mb3JtYXQgZWxzZSAiRFhHSV9GT1JNQVRf
VU5LTk9XTiIKKyAgICAgICAgaWYgc3VwcG9ydF90ZXN0ICE9IE5vbmU6CisgICAgICAgICAgICB0
YWJsZV9kYXRhICs9ICIgICAgICAgIHtcbiIKKyAgICAgICAgICAgIHRhYmxlX2RhdGEgKz0ganNv
bl90b190YWJsZV9kYXRhKGludGVybmFsX2Zvcm1hdCwgZm9ybWF0X25hbWUsICJpZiAoIiArIHN1
cHBvcnRfdGVzdCArICIpIiwgc3VwcG9ydGVkX2Nhc2UpCisgICAgICAgICAgICB0YWJsZV9kYXRh
ICs9IGpzb25fdG9fdGFibGVfZGF0YShpbnRlcm5hbF9mb3JtYXQsIGZvcm1hdF9uYW1lLCAiZWxz
ZSIsIHVuc3VwcG9ydGVkX2Nhc2UpCisgICAgICAgICAgICB0YWJsZV9kYXRhICs9ICIgICAgICAg
IH1cbiIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRhYmxlX2RhdGEgKz0ganNvbl90b190
YWJsZV9kYXRhKGludGVybmFsX2Zvcm1hdCwgZm9ybWF0X25hbWUsICIiLCBzdXBwb3J0ZWRfY2Fz
ZSkKIAotZGVmIHBhcnNlX2pzb25faW50b19zd2l0Y2hfYW5nbGVfZm9ybWF0X3N0cmluZyhqc29u
X2RhdGEpOgotICAgIHRhYmxlX2RhdGEgPSAnJwotICAgIGZvciBhbmdsZV9mb3JtYXRfaXRlbSBp
biBzb3J0ZWQoanNvbl9kYXRhLml0ZXJpdGVtcygpKToKLSAgICAgICAgdGFibGVfZGF0YSArPSAn
ICAgICAgICBjYXNlICcgKyBhbmdsZV9mb3JtYXRfaXRlbVswXSArICc6XG4nCi0gICAgICAgIGFu
Z2xlX2Zvcm1hdCA9IGFuZ2xlX2Zvcm1hdF9pdGVtWzFdCi0gICAgICAgIGdsX2ludGVybmFsX2Zv
cm1hdCA9IGFuZ2xlX2Zvcm1hdFsiZ2xJbnRlcm5hbEZvcm1hdCJdIGlmICJnbEludGVybmFsRm9y
bWF0IiBpbiBhbmdsZV9mb3JtYXQgZWxzZSAiR0xfTk9ORSIKLSAgICAgICAgdGV4X2Zvcm1hdCA9
IGFuZ2xlX2Zvcm1hdFsidGV4Rm9ybWF0Il0gaWYgInRleEZvcm1hdCIgaW4gYW5nbGVfZm9ybWF0
IGVsc2UgIkRYR0lfRk9STUFUX1VOS05PV04iCi0gICAgICAgIHNydl9mb3JtYXQgPSBhbmdsZV9m
b3JtYXRbInNydkZvcm1hdCJdIGlmICJzcnZGb3JtYXQiIGluIGFuZ2xlX2Zvcm1hdCBlbHNlICJE
WEdJX0ZPUk1BVF9VTktOT1dOIgotICAgICAgICBydHZfZm9ybWF0ID0gYW5nbGVfZm9ybWF0WyJy
dHZGb3JtYXQiXSBpZiAicnR2Rm9ybWF0IiBpbiBhbmdsZV9mb3JtYXQgZWxzZSAiRFhHSV9GT1JN
QVRfVU5LTk9XTiIKLSAgICAgICAgZHN2X2Zvcm1hdCA9IGFuZ2xlX2Zvcm1hdFsiZHN2Rm9ybWF0
Il0gaWYgImRzdkZvcm1hdCIgaW4gYW5nbGVfZm9ybWF0IGVsc2UgIkRYR0lfRk9STUFUX1VOS05P
V04iCi0gICAgICAgIGJsaXRfc3J2X2Zvcm1hdCA9IGdldF9ibGl0X3Nydl9mb3JtYXQoYW5nbGVf
Zm9ybWF0KQotICAgICAgICBzd2l6emxlX2Zvcm1hdCA9IGdldF9zd2l6emxlX2Zvcm1hdF9pZChh
bmdsZV9mb3JtYXRfaXRlbVswXSwgYW5nbGVfZm9ybWF0KQotICAgICAgICBtaXBfZ2VuZXJhdGlv
bl9mdW5jdGlvbiA9IGdldF9taXBfZ2VuZXJhdGlvbl9mdW5jdGlvbihhbmdsZV9mb3JtYXQpCi0g
ICAgICAgIGNvbG9yX3JlYWRfZnVuY3Rpb24gPSBnZXRfY29sb3JfcmVhZF9mdW5jdGlvbihhbmds
ZV9mb3JtYXQpCi0gICAgICAgIHRhYmxlX2RhdGEgKz0gJyAgICAgICAge1xuJwotICAgICAgICB0
YWJsZV9kYXRhICs9ICcgICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9y
bWF0SW5mbygnICsgYW5nbGVfZm9ybWF0X2l0ZW1bMF0gKyAnLFxuJwotICAgICAgICB0YWJsZV9k
YXRhICs9ICcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnICsgZ2xfaW50ZXJuYWxfZm9ybWF0ICsgJyxcbicKLSAgICAgICAgdGFibGVfZGF0YSArPSAn
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyArIHRl
eF9mb3JtYXQgKyAnLFxuJwotICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICsgc3J2X2Zvcm1hdCArICcsXG4n
Ci0gICAgICAgIHRhYmxlX2RhdGEgKz0gJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICcgKyBydHZfZm9ybWF0ICsgJyxcbicKLSAgICAgICAgdGFibGVf
ZGF0YSArPSAnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJyArIGRzdl9mb3JtYXQgKyAnLFxuJwotICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICsgYmxpdF9zcnZf
Zm9ybWF0ICsgJyxcbicKLSAgICAgICAgdGFibGVfZGF0YSArPSAnICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyArIHN3aXp6bGVfZm9ybWF0ICsgJyxc
bicKLSAgICAgICAgdGFibGVfZGF0YSArPSAnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJyArIG1pcF9nZW5lcmF0aW9uX2Z1bmN0aW9uICsgJyxcbicK
LSAgICAgICAgdGFibGVfZGF0YSArPSAnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJyArIGNvbG9yX3JlYWRfZnVuY3Rpb24gKyAnKTtcbicKLSAgICAg
ICAgdGFibGVfZGF0YSArPSAnICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87XG4nCi0gICAg
ICAgIHRhYmxlX2RhdGEgKz0gJyAgICAgICAgfVxuJwogICAgIHJldHVybiB0YWJsZV9kYXRhCiAK
LWRlZiBwYXJzZV9qc29uX2ludG9fYW5nbGVfZm9ybWF0X2VudW1fc3RyaW5nKGpzb25fZGF0YSk6
Ci0gICAgZW51bV9kYXRhID0gJycKLSAgICBpbmRleCA9IDAKLSAgICBmb3IgYW5nbGVfZm9ybWF0
X2l0ZW0gaW4gc29ydGVkKGpzb25fZGF0YS5pdGVyaXRlbXMoKSk6Ci0gICAgICAgIGlmIGluZGV4
ID4gMDoKLSAgICAgICAgICAgIGVudW1fZGF0YSArPSAnLFxuJwotICAgICAgICBlbnVtX2RhdGEg
Kz0gJyAgICAnICsgYW5nbGVfZm9ybWF0X2l0ZW1bMF0KLSAgICAgICAgaW5kZXggKz0gMQotICAg
IHJldHVybiBlbnVtX2RhdGEKLQogZGVmIHJlamVjdF9kdXBsaWNhdGVfa2V5cyhwYWlycyk6CiAg
ICAgZm91bmRfa2V5cyA9IHt9CiAgICAgZm9yIGtleSwgdmFsdWUgaW4gcGFpcnM6CkBAIC01MDAs
MjYgKzM0MywxNyBAQAogICAgICAgICAgICBmb3VuZF9rZXlzW2tleV0gPSB2YWx1ZQogICAgIHJl
dHVybiBmb3VuZF9rZXlzCiAKLXdpdGggb3BlbigndGV4dHVyZV9mb3JtYXRfbWFwLmpzb24nKSBh
cyB0ZXh0dXJlX2Zvcm1hdF9tYXBfZmlsZToKLSAgICB3aXRoIG9wZW4oJ3RleHR1cmVfZm9ybWF0
X2RhdGEuanNvbicpIGFzIHRleHR1cmVfZm9ybWF0X2pzb25fZmlsZToKLSAgICAgICAgdGV4dHVy
ZV9mb3JtYXRfbWFwID0gdGV4dHVyZV9mb3JtYXRfbWFwX2ZpbGUucmVhZCgpCi0gICAgICAgIHRl
eHR1cmVfZm9ybWF0X2RhdGEgPSB0ZXh0dXJlX2Zvcm1hdF9qc29uX2ZpbGUucmVhZCgpCi0gICAg
ICAgIHRleHR1cmVfZm9ybWF0X21hcF9maWxlLmNsb3NlKCkKLSAgICAgICAgdGV4dHVyZV9mb3Jt
YXRfanNvbl9maWxlLmNsb3NlKCkKLSAgICAgICAganNvbl9tYXAgPSBqc29uLmxvYWRzKHRleHR1
cmVfZm9ybWF0X21hcCwgb2JqZWN0X3BhaXJzX2hvb2s9cmVqZWN0X2R1cGxpY2F0ZV9rZXlzKQot
ICAgICAgICBqc29uX2RhdGEgPSBqc29uLmxvYWRzKHRleHR1cmVfZm9ybWF0X2RhdGEsIG9iamVj
dF9wYWlyc19ob29rPXJlamVjdF9kdXBsaWNhdGVfa2V5cykKK2pzb25fbWFwID0gYW5nbGVfZm9y
bWF0LmxvYWRfd2l0aF9vdmVycmlkZShvcy5wYXRoLmFic3BhdGgoJ3RleHR1cmVfZm9ybWF0X21h
cC5qc29uJykpCiAKLSAgICAgICAgdGV4dHVyZV9mb3JtYXRfY2FzZXMgPSBwYXJzZV9qc29uX2lu
dG9fc3dpdGNoX3RleHR1cmVfZm9ybWF0X3N0cmluZyhqc29uX21hcCwganNvbl9kYXRhKQotICAg
ICAgICBhbmdsZV9mb3JtYXRfY2FzZXMgPSBwYXJzZV9qc29uX2ludG9fc3dpdGNoX2FuZ2xlX2Zv
cm1hdF9zdHJpbmcoanNvbl9kYXRhKQotICAgICAgICBvdXRwdXRfY3BwID0gdGVtcGxhdGVfdGV4
dHVyZV9mb3JtYXRfdGFibGVfYXV0b2dlbl9jcHAuZm9ybWF0KAotICAgICAgICAgICAgdGV4dHVy
ZV9mb3JtYXRfaW5mb19jYXNlcz10ZXh0dXJlX2Zvcm1hdF9jYXNlcywKLSAgICAgICAgICAgIGFu
Z2xlX2Zvcm1hdF9pbmZvX2Nhc2VzPWFuZ2xlX2Zvcm1hdF9jYXNlcykKLSAgICAgICAgd2l0aCBv
cGVuKCd0ZXh0dXJlX2Zvcm1hdF90YWJsZV9hdXRvZ2VuLmNwcCcsICd3dCcpIGFzIG91dF9maWxl
OgotICAgICAgICAgICAgb3V0X2ZpbGUud3JpdGUob3V0cHV0X2NwcCkKLSAgICAgICAgICAgIG91
dF9maWxlLmNsb3NlKCkKK3dpdGggb3BlbigndGV4dHVyZV9mb3JtYXRfZGF0YS5qc29uJykgYXMg
dGV4dHVyZV9mb3JtYXRfanNvbl9maWxlOgorICAgIHRleHR1cmVfZm9ybWF0X2RhdGEgPSB0ZXh0
dXJlX2Zvcm1hdF9qc29uX2ZpbGUucmVhZCgpCisgICAgdGV4dHVyZV9mb3JtYXRfanNvbl9maWxl
LmNsb3NlKCkKKyAgICBqc29uX2RhdGEgPSBqc29uLmxvYWRzKHRleHR1cmVfZm9ybWF0X2RhdGEs
IG9iamVjdF9wYWlyc19ob29rPWFuZ2xlX2Zvcm1hdC5yZWplY3RfZHVwbGljYXRlX2tleXMpCiAK
LSAgICAgICAgZW51bV9kYXRhID0gcGFyc2VfanNvbl9pbnRvX2FuZ2xlX2Zvcm1hdF9lbnVtX3N0
cmluZyhqc29uX2RhdGEpCi0gICAgICAgIG91dHB1dF9oID0gdGVtcGxhdGVfdGV4dHVyZV9mb3Jt
YXRfdGFibGVfYXV0b2dlbl9oLmZvcm1hdChhbmdsZV9mb3JtYXRfZW51bT1lbnVtX2RhdGEpCi0g
ICAgICAgIHdpdGggb3BlbigndGV4dHVyZV9mb3JtYXRfdGFibGVfYXV0b2dlbi5oJywgJ3d0Jykg
YXMgb3V0X2ZpbGU6Ci0gICAgICAgICAgICBvdXRfZmlsZS53cml0ZShvdXRwdXRfaCkKLSAgICAg
ICAgICAgIG91dF9maWxlLmNsb3NlKCkKKyAgICBhbmdsZV9mb3JtYXRfY2FzZXMgPSBwYXJzZV9q
c29uX2ludG9fc3dpdGNoX2FuZ2xlX2Zvcm1hdF9zdHJpbmcoanNvbl9tYXAsIGpzb25fZGF0YSkK
KyAgICBvdXRwdXRfY3BwID0gdGVtcGxhdGVfdGV4dHVyZV9mb3JtYXRfdGFibGVfYXV0b2dlbl9j
cHAuZm9ybWF0KAorICAgICAgICBjb3B5cmlnaHRfeWVhcj1kYXRlLnRvZGF5KCkueWVhciwKKyAg
ICAgICAgYW5nbGVfZm9ybWF0X2luZm9fY2FzZXM9YW5nbGVfZm9ybWF0X2Nhc2VzKQorICAgIHdp
dGggb3BlbigndGV4dHVyZV9mb3JtYXRfdGFibGVfYXV0b2dlbi5jcHAnLCAnd3QnKSBhcyBvdXRf
ZmlsZToKKyAgICAgICAgb3V0X2ZpbGUud3JpdGUob3V0cHV0X2NwcCkKKyAgICAgICAgb3V0X2Zp
bGUuY2xvc2UoKQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9sb2FkX2Z1bmN0aW9uc19kYXRhLmpzb24KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9s
b2FkX2Z1bmN0aW9uc19kYXRhLmpzb24JKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvbG9hZF9mdW5jdGlv
bnNfZGF0YS5qc29uCShub25leGlzdGVudCkKQEAgLTEsMTExNiArMCwwIEBACi17Ci0gICJHTF9S
RzhfU05PUk0iOiB7Ci0gICAgIkdMX0JZVEUiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVu
Y3Rpb24iOiAiTG9hZFRvTmF0aXZlPEdMYnl0ZSwyPiIsCi0gICAgICAgICJkeGdpRm9ybWF0Ijog
IkRYR0lfRk9STUFUX1I4RzhfU05PUk0iLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjog
ImZhbHNlIgotICAgICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX1NSR0I4IjogewotICAgICJHTF9V
TlNJR05FRF9CWVRFIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRU
b05hdGl2ZTNUbzQ8R0x1Ynl0ZSwweEZGPiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lf
Rk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IiLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9u
IjogInRydWUiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfUkdCQThJIjogewotICAgICJH
TF9CWVRFIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2
ZTxHTGJ5dGUsND4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4QjhB
OF9TSU5UIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIKLSAgICAgIH0K
LSAgICBdCi0gIH0sCi0gICJHTF9SOF9TTk9STSI6IHsKLSAgICAiR0xfQllURSI6IFsKLSAgICAg
IHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0xieXRlLDE+IiwKLSAg
ICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhfU05PUk0iLAotICAgICAgICAicmVx
dWlyZXNDb252ZXJzaW9uIjogImZhbHNlIgotICAgICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX1JH
QkE4X1NOT1JNIjogewotICAgICJHTF9CWVRFIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1
bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxHTGJ5dGUsND4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6
ICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TTk9STSIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNp
b24iOiAiZmFsc2UiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfUjE2SSI6IHsKLSAgICAi
R0xfU0hPUlQiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0
aXZlPEdMc2hvcnQsMT4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZf
U0lOVCIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAiZmFsc2UiCi0gICAgICB9Ci0g
ICAgXQotICB9LAotICAiR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMiOiB7Ci0g
ICAgIkdMX1VOU0lHTkVEX0JZVEUiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24i
OiAiTG9hZEVUQzJTUkdCQThUb1NSR0JBOCIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lf
Rk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IiLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9u
IjogInRydWUiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfQ09NUFJFU1NFRF9SR0I4X1BV
TkNIVEhST1VHSF9BTFBIQTFfRVRDMiI6IHsKLSAgICAiR0xfVU5TSUdORURfQllURSI6IFsKLSAg
ICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkRVRDMlJHQjhBMVRvUkdCQTgiLAot
ICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSIsCi0gICAg
ICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0g
ICJHTF9SR0IzMlVJIjogewotICAgICJHTF9VTlNJR05FRF9JTlQiOiBbCi0gICAgICB7Ci0gICAg
ICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlM1RvNDxHTHVpbnQsMHgwMDAwMDAwMT4i
LAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVCIs
Ci0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdCi0g
IH0sCi0gICJHTF9BTFBIQTMyRl9FWFQiOiB7Ci0gICAgIkdMX0ZMT0FUIjogWwotICAgICAgewot
ICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRBMzJGVG9SR0JBMzJGIiwKLSAgICAgICAgImR4
Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfVU5LTk9XTiIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZl
cnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9SMTZVSSI6IHsKLSAg
ICAiR0xfVU5TSUdORURfU0hPUlQiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24i
OiAiTG9hZFRvTmF0aXZlPEdMdXNob3J0LDE+IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhH
SV9GT1JNQVRfUjE2X1VJTlQiLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogImZhbHNl
IgotICAgICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX1JHQjlfRTUiOiB7Ci0gICAgIkdMX0hBTEZf
RkxPQVQiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFJHQjE2RlRv
UkdCOUU1IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjlHOUI5RTVfU0hB
UkVERVhQIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQot
ICAgIF0sCi0gICAgIkdMX1VOU0lHTkVEX0lOVF81XzlfOV85X1JFViI6IFsKLSAgICAgIHsKLSAg
ICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0x1aW50LDE+IiwKLSAgICAgICAg
ImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjlHOUI5RTVfU0hBUkVERVhQIiwKLSAgICAgICAg
InJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIKLSAgICAgIH0KLSAgICBdLAotICAgICJHTF9G
TE9BVCI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkUkdCMzJGVG9S
R0I5RTUiLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOUc5QjlFNV9TSEFS
RURFWFAiLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0g
ICAgXSwKLSAgICAiR0xfSEFMRl9GTE9BVF9PRVMiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2Fk
RnVuY3Rpb24iOiAiTG9hZFJHQjE2RlRvUkdCOUU1IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAi
RFhHSV9GT1JNQVRfUjlHOUI5RTVfU0hBUkVERVhQIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVy
c2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX0NPTVBSRVNTRURfUjEx
X0VBQyI6IHsKLSAgICAiR0xfVU5TSUdORURfQllURSI6IFsKLSAgICAgIHsKLSAgICAgICAgImxv
YWRGdW5jdGlvbiI6ICJMb2FkRUFDUjExVG9SOCIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRY
R0lfRk9STUFUX1I4X1VOT1JNIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVl
IgotICAgICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX1JHQkEzMlVJIjogewotICAgICJHTF9VTlNJ
R05FRF9JTlQiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0
aXZlPEdMdWludCw0PiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IzMkcz
MkIzMkEzMl9VSU5UIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIKLSAg
ICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9SRzhVSSI6IHsKLSAgICAiR0xfVU5TSUdORURfQllU
RSI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0x1
Ynl0ZSwyPiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhfVUlOVCIs
Ci0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAiZmFsc2UiCi0gICAgICB9Ci0gICAgXQot
ICB9LAotICAiR0xfTFVNSU5BTkNFMzJGX0VYVCI6IHsKLSAgICAiR0xfRkxPQVQiOiBbCi0gICAg
ICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZEwzMkZUb1JHQkEzMkYiLAotICAgICAg
ICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9VTktOT1dOIiwKLSAgICAgICAgInJlcXVpcmVz
Q29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX0NPTVBSRVNT
RURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyIjogewotICAgICJHTF9VTlNJR05FRF9C
WVRFIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRFVEMyU1JHQjhB
MVRvUkdCQTgiLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9V
Tk9STV9TUkdCIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAg
fQotICAgIF0KLSAgfSwKLSAgIkdMX1IxNkYiOiB7Ci0gICAgIkdMX0hBTEZfRkxPQVQiOiBbCi0g
ICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlPEdMaGFsZiwxPiIs
Ci0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNl9GTE9BVCIsCi0gICAgICAg
ICJyZXF1aXJlc0NvbnZlcnNpb24iOiAiZmFsc2UiCi0gICAgICB9Ci0gICAgXSwKLSAgICAiR0xf
RkxPQVQiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZDMyRlRvMTZG
PDE+IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2X0ZMT0FUIiwKLSAg
ICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAgIF0sCi0gICAg
IkdMX0hBTEZfRkxPQVRfT0VTIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjog
IkxvYWRUb05hdGl2ZTxHTGhhbGYsMT4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZP
Uk1BVF9SMTZfRkxPQVQiLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogImZhbHNlIgot
ICAgICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX1JHQkE4VUkiOiB7Ci0gICAgIkdMX1VOU0lHTkVE
X0JZVEUiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZl
PEdMdWJ5dGUsND4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4QjhB
OF9VSU5UIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIKLSAgICAgIH0K
LSAgICBdCi0gIH0sCi0gICJHTF9CR1JBNF9BTkdMRVgiOiB7Ci0gICAgIkdMX1VOU0lHTkVEX1NI
T1JUXzRfNF80XzRfUkVWX0VYVCI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6
ICJMb2FkUkdCQTRUb1JHQkE4IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRf
VU5LTk9XTiIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0K
LSAgICBdLAotICAgICJHTF9VTlNJR05FRF9CWVRFIjogWwotICAgICAgewotICAgICAgICAibG9h
ZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxHTHVieXRlLDQ+IiwKLSAgICAgICAgImR4Z2lGb3Jt
YXQiOiAiRFhHSV9GT1JNQVRfVU5LTk9XTiIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24i
OiAiZmFsc2UiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfUkdCQTE2RiI6IHsKLSAgICAi
R0xfSEFMRl9GTE9BVCI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2Fk
VG9OYXRpdmU8R0xoYWxmLDQ+IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRf
UjE2RzE2QjE2QTE2X0ZMT0FUIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxz
ZSIKLSAgICAgIH0KLSAgICBdLAotICAgICJHTF9GTE9BVCI6IFsKLSAgICAgIHsKLSAgICAgICAg
ImxvYWRGdW5jdGlvbiI6ICJMb2FkMzJGVG8xNkY8ND4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6
ICJEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQiLAotICAgICAgICAicmVxdWlyZXNDb252
ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAgXSwKLSAgICAiR0xfSEFMRl9GTE9BVF9PRVMi
OiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlPEdMaGFs
Ziw0PiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9G
TE9BVCIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAiZmFsc2UiCi0gICAgICB9Ci0g
ICAgXQotICB9LAotICAiR0xfTFVNSU5BTkNFOF9FWFQiOiB7Ci0gICAgIkdMX1VOU0lHTkVEX0JZ
VEUiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZEw4VG9SR0JBOCIs
Ci0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1VOS05PV04iLAotICAgICAgICAi
cmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xf
Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRSI6IHsKLSAgICAiR0xfVU5TSUdORURfQllU
RSI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkQ29tcHJlc3NlZFRv
TmF0aXZlPDQsNCwxNj4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9VTktO
T1dOIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAg
IF0KLSAgfSwKLSAgIkdMX1JHQiI6IHsKLSAgICAiR0xfVU5TSUdORURfQllURSI6IFsKLSAgICAg
IHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiIsCi0g
ICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1VOS05PV04iLAotICAgICAgICAicmVx
dWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAgXSwKLSAgICAiR0xfVU5TSUdO
RURfU0hPUlRfNV82XzUiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiVW5y
ZWFjaGFibGVMb2FkRnVuY3Rpb24iLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1B
VF9VTktOT1dOIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAg
fQotICAgIF0KLSAgfSwKLSAgIkdMX1JHQjVfQTEiOiB7Ci0gICAgIkdMX1VOU0lHTkVEX0lOVF8y
XzEwXzEwXzEwX1JFViI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2Fk
UkdCMTBBMlRvUkdCQTgiLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4
QjhBOF9VTk9STSIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAg
IH0KLSAgICBdLAotICAgICJHTF9VTlNJR05FRF9CWVRFIjogWwotICAgICAgewotICAgICAgICAi
bG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxHTHVieXRlLDQ+IiwKLSAgICAgICAgImR4Z2lG
b3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0iLAotICAgICAgICAicmVxdWlyZXND
b252ZXJzaW9uIjogImZhbHNlIgotICAgICAgfQotICAgIF0sCi0gICAgIkdMX1VOU0lHTkVEX1NI
T1JUXzVfNV81XzEiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFJH
QjVBMVRvUkdCQTgiLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4QjhB
OF9VTk9STSIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0s
Ci0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFJHQjVBMVRvQTFSR0I1IiwK
LSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfQjVHNVI1QTFfVU5PUk0iLAotICAg
ICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAgXQotICB9LAot
ICAiR0xfUkdCMTZVSSI6IHsKLSAgICAiR0xfVU5TSUdORURfU0hPUlQiOiBbCi0gICAgICB7Ci0g
ICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlM1RvNDxHTHVzaG9ydCwweDAwMDE+
IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQi
LAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAgXQot
ICB9LAotICAiR0xfQkdSQV9FWFQiOiB7Ci0gICAgIkdMX1VOU0lHTkVEX0JZVEUiOiBbCi0gICAg
ICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24iLAot
ICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9VTktOT1dOIiwKLSAgICAgICAgInJl
cXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX0NP
TVBSRVNTRURfUkdCOF9FVEMyIjogewotICAgICJHTF9VTlNJR05FRF9CWVRFIjogWwotICAgICAg
ewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRFVEMyUkdCOFRvUkdCQTgiLAotICAgICAg
ICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSIsCi0gICAgICAgICJy
ZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9S
R0JBMzJGIjogewotICAgICJHTF9GTE9BVCI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5j
dGlvbiI6ICJMb2FkVG9OYXRpdmU8R0xmbG9hdCw0PiIsCi0gICAgICAgICJkeGdpRm9ybWF0Ijog
IkRYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZl
cnNpb24iOiAiZmFsc2UiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfUkdCQTMySSI6IHsK
LSAgICAiR0xfSU5UIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRU
b05hdGl2ZTxHTGludCw0PiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1Iz
MkczMkIzMkEzMl9TSU5UIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIK
LSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9MVU1JTkFOQ0U4X0FMUEhBOF9FWFQiOiB7Ci0g
ICAgIkdMX1VOU0lHTkVEX0JZVEUiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24i
OiAiTG9hZExBOFRvUkdCQTgiLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9V
TktOT1dOIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQot
ICAgIF0KLSAgfSwKLSAgIkdMX1JHOCI6IHsKLSAgICAiR0xfVU5TSUdORURfQllURSI6IFsKLSAg
ICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0x1Ynl0ZSwyPiIs
Ci0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhfVU5PUk0iLAotICAgICAg
ICAicmVxdWlyZXNDb252ZXJzaW9uIjogImZhbHNlIgotICAgICAgfQotICAgIF0KLSAgfSwKLSAg
IkdMX1JHQjEwX0EyIjogewotICAgICJHTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYiOiBb
Ci0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlPEdMdWludCwx
PiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VOT1JN
IiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIKLSAgICAgIH0KLSAgICBd
Ci0gIH0sCi0gICJHTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQyI6IHsKLSAgICAiR0xfVU5T
SUdORURfQllURSI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkRUFD
UkcxMVNUb1JHOCIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhfU05P
Uk0iLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAg
XQotICB9LAotICAiR0xfREVQVEhfQ09NUE9ORU5UMTYiOiB7Ci0gICAgIkdMX1VOU0lHTkVEX0lO
VCI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkUjMyVG9SMTYiLAot
ICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZfVFlQRUxFU1MiLAotICAgICAg
ICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAgXSwKLSAgICAiR0xf
VU5TSUdORURfU0hPUlQiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9h
ZFRvTmF0aXZlPEdMdXNob3J0LDE+IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JN
QVRfUjE2X1RZUEVMRVNTIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIK
LSAgICAgIH0sCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZl
PEdMdXNob3J0LDE+IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfRDE2X1VO
T1JNIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIKLSAgICAgIH0KLSAg
ICBdCi0gIH0sCi0gICJHTF9SR0IzMkkiOiB7Ci0gICAgIkdMX0lOVCI6IFsKLSAgICAgIHsKLSAg
ICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmUzVG80PEdMaW50LDB4MDAwMDAwMDE+
IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1NJTlQi
LAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAgXQot
ICB9LAotICAiR0xfUjgiOiB7Ci0gICAgIkdMX1VOU0lHTkVEX0JZVEUiOiBbCi0gICAgICB7Ci0g
ICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlPEdMdWJ5dGUsMT4iLAotICAgICAg
ICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOF9VTk9STSIsCi0gICAgICAgICJyZXF1aXJl
c0NvbnZlcnNpb24iOiAiZmFsc2UiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfUkdCMzJG
IjogewotICAgICJHTF9GTE9BVCI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6
ICJMb2FkVG9OYXRpdmUzVG80PEdMZmxvYXQsZ2w6OkZsb2F0MzJPbmU+IiwKLSAgICAgICAgImR4
Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FUIiwKLSAgICAgICAgInJl
cXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX1Ix
MUZfRzExRl9CMTBGIjogewotICAgICJHTF9VTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWIjog
WwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxHTHVpbnQs
MT4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTFHMTFCMTBfRkxPQVQi
LAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogImZhbHNlIgotICAgICAgfQotICAgIF0s
Ci0gICAgIkdMX0hBTEZfRkxPQVQiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24i
OiAiTG9hZFJHQjE2RlRvUkcxMUIxMEYiLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZP
Uk1BVF9SMTFHMTFCMTBfRkxPQVQiLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRy
dWUiCi0gICAgICB9Ci0gICAgXSwKLSAgICAiR0xfRkxPQVQiOiBbCi0gICAgICB7Ci0gICAgICAg
ICJsb2FkRnVuY3Rpb24iOiAiTG9hZFJHQjMyRlRvUkcxMUIxMEYiLAotICAgICAgICAiZHhnaUZv
cm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTFHMTFCMTBfRkxPQVQiLAotICAgICAgICAicmVxdWlyZXND
b252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAgXSwKLSAgICAiR0xfSEFMRl9GTE9BVF9P
RVMiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFJHQjE2RlRvUkcx
MUIxMEYiLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTFHMTFCMTBfRkxP
QVQiLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAg
XQotICB9LAotICAiR0xfUkdCOCI6IHsKLSAgICAiR0xfVU5TSUdORURfQllURSI6IFsKLSAgICAg
IHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmUzVG80PEdMdWJ5dGUsMHhG
Rj4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSIs
Ci0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdCi0g
IH0sCi0gICJHTF9MVU1JTkFOQ0VfQUxQSEEiOiB7Ci0gICAgIkdMX0hBTEZfRkxPQVQiOiBbCi0g
ICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZExBMTZGVG9SR0JBMTZGIiwKLSAg
ICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FUIiwKLSAg
ICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAgIF0sCi0gICAg
IkdMX1VOU0lHTkVEX0JZVEUiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAi
VW5yZWFjaGFibGVMb2FkRnVuY3Rpb24iLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZP
Uk1BVF9VTktOT1dOIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAg
ICAgfQotICAgIF0sCi0gICAgIkdMX0ZMT0FUIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1
bmN0aW9uIjogIkxvYWRMQTMyRlRvUkdCQTMyRiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRY
R0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNp
b24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdLAotICAgICJHTF9IQUxGX0ZMT0FUX09FUyI6IFsK
LSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkTEExNkZUb1JHQkExNkYiLAot
ICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQiLAot
ICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAgXQotICB9
LAotICAiR0xfUkdCQTE2SSI6IHsKLSAgICAiR0xfU0hPUlQiOiBbCi0gICAgICB7Ci0gICAgICAg
ICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlPEdMc2hvcnQsND4iLAotICAgICAgICAiZHhn
aUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVCIsCi0gICAgICAgICJyZXF1
aXJlc0NvbnZlcnNpb24iOiAiZmFsc2UiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfUjhJ
IjogewotICAgICJHTF9CWVRFIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjog
IkxvYWRUb05hdGl2ZTxHTGJ5dGUsMT4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZP
Uk1BVF9SOF9TSU5UIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIKLSAg
ICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9SR0I4X1NOT1JNIjogewotICAgICJHTF9CWVRFIjog
WwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTNUbzQ8R0xi
eXRlLDB4N0Y+IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOEI4QThf
U05PUk0iLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0g
ICAgXQotICB9LAotICAiR0xfUkczMkYiOiB7Ci0gICAgIkdMX0ZMT0FUIjogWwotICAgICAgewot
ICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxHTGZsb2F0LDI+IiwKLSAgICAg
ICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FUIiwKLSAgICAgICAgInJl
cXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9E
RVBUSF9DT01QT05FTlQzMkYiOiB7Ci0gICAgIkdMX0ZMT0FUIjogWwotICAgICAgewotICAgICAg
ICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxHTGZsb2F0LDE+IiwKLSAgICAgICAgImR4
Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjMyX1RZUEVMRVNTIiwKLSAgICAgICAgInJlcXVpcmVz
Q29udmVyc2lvbiI6ICJmYWxzZSIKLSAgICAgIH0sCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVu
Y3Rpb24iOiAiVW5pbXBsZW1lbnRlZExvYWRGdW5jdGlvbiIsCi0gICAgICAgICJkeGdpRm9ybWF0
IjogIkRYR0lfRk9STUFUX1VOS05PV04iLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjog
InRydWUiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfUkczMkkiOiB7Ci0gICAgIkdMX0lO
VCI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0xp
bnQsMj4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMzJHMzJfU0lOVCIs
Ci0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAiZmFsc2UiCi0gICAgICB9Ci0gICAgXQot
ICB9LAotICAiR0xfQUxQSEE4X0VYVCI6IHsKLSAgICAiR0xfVU5TSUdORURfQllURSI6IFsKLSAg
ICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0x1Ynl0ZSwxPiIs
Ci0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX0E4X1VOT1JNIiwKLSAgICAgICAg
InJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIKLSAgICAgIH0sCi0gICAgICB7Ci0gICAgICAg
ICJsb2FkRnVuY3Rpb24iOiAiTG9hZEE4VG9SR0JBOCIsCi0gICAgICAgICJkeGdpRm9ybWF0Ijog
IkRYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lv
biI6ICJ0cnVlIgotICAgICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX1JHMzJVSSI6IHsKLSAgICAi
R0xfVU5TSUdORURfSU5UIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxv
YWRUb05hdGl2ZTxHTHVpbnQsMj4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1B
VF9SMzJHMzJfVUlOVCIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAiZmFsc2UiCi0g
ICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfUkdCQTE2VUkiOiB7Ci0gICAgIkdMX1VOU0lHTkVE
X1NIT1JUIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2
ZTxHTHVzaG9ydCw0PiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcx
NkIxNkExNl9VSU5UIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIKLSAg
ICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDIjogewot
ICAgICJHTF9VTlNJR05FRF9CWVRFIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9u
IjogIkxvYWRFVEMyUkdCQThUb1JHQkE4IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9G
T1JNQVRfUjhHOEI4QThfVU5PUk0iLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRy
dWUiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfUkdCOEkiOiB7Ci0gICAgIkdMX0JZVEUi
OiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlM1RvNDxH
TGJ5dGUsMHgwMT4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4QjhB
OF9TSU5UIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQot
ICAgIF0KLSAgfSwKLSAgIkdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMiI6IHsKLSAgICAiR0xfVU5T
SUdORURfQllURSI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkRVRD
MlNSR0I4VG9SR0JBOCIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhC
OEE4X1VOT1JNX1NSR0IiLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0g
ICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfREVQVEgzMkZfU1RFTkNJTDgiOiB7Ci0gICAgIkdM
X0ZMT0FUXzMyX1VOU0lHTkVEX0lOVF8yNF84X1JFViI6IFsKLSAgICAgIHsKLSAgICAgICAgImxv
YWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0x1aW50LDI+IiwKLSAgICAgICAgImR4Z2lGb3Jt
YXQiOiAiRFhHSV9GT1JNQVRfUjMyRzhYMjRfVFlQRUxFU1MiLAotICAgICAgICAicmVxdWlyZXND
b252ZXJzaW9uIjogImZhbHNlIgotICAgICAgfSwKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5j
dGlvbiI6ICJVbmltcGxlbWVudGVkTG9hZEZ1bmN0aW9uIiwKLSAgICAgICAgImR4Z2lGb3JtYXQi
OiAiRFhHSV9GT1JNQVRfVU5LTk9XTiIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAi
dHJ1ZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9SRzhJIjogewotICAgICJHTF9CWVRF
IjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxHTGJ5
dGUsMj4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4X1NJTlQiLAot
ICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogImZhbHNlIgotICAgICAgfQotICAgIF0KLSAg
fSwKLSAgIkdMX1IzMlVJIjogewotICAgICJHTF9VTlNJR05FRF9JTlQiOiBbCi0gICAgICB7Ci0g
ICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlPEdMdWludCwxPiIsCi0gICAgICAg
ICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IzMl9VSU5UIiwKLSAgICAgICAgInJlcXVpcmVz
Q29udmVyc2lvbiI6ICJmYWxzZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9CR1I1X0Ex
X0FOR0xFWCI6IHsKLSAgICAiR0xfVU5TSUdORURfQllURSI6IFsKLSAgICAgIHsKLSAgICAgICAg
ImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0x1Ynl0ZSw0PiIsCi0gICAgICAgICJkeGdp
Rm9ybWF0IjogIkRYR0lfRk9STUFUX1VOS05PV04iLAotICAgICAgICAicmVxdWlyZXNDb252ZXJz
aW9uIjogImZhbHNlIgotICAgICAgfQotICAgIF0sCi0gICAgIkdMX1VOU0lHTkVEX1NIT1JUXzFf
NV81XzVfUkVWX0VYVCI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2Fk
UkdCNUExVG9SR0JBOCIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1VOS05P
V04iLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAg
XQotICB9LAotICAiR0xfQ09NUFJFU1NFRF9SRzExX0VBQyI6IHsKLSAgICAiR0xfVU5TSUdORURf
QllURSI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkRUFDUkcxMVRv
Ukc4IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOF9VTk9STSIsCi0g
ICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdCi0gIH0s
Ci0gICJHTF9TUkdCOF9BTFBIQTgiOiB7Ci0gICAgIkdMX1VOU0lHTkVEX0JZVEUiOiBbCi0gICAg
ICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlPEdMdWJ5dGUsND4iLAot
ICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCIiwK
LSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIKLSAgICAgIH0KLSAgICBdCi0g
IH0sCi0gICJHTF9MVU1JTkFOQ0VfQUxQSEExNkZfRVhUIjogewotICAgICJHTF9IQUxGX0ZMT0FU
IjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRMQTE2RlRvUkdCQTE2
RiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1VOS05PV04iLAotICAgICAg
ICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAgXSwKLSAgICAiR0xf
SEFMRl9GTE9BVF9PRVMiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9h
ZExBMTZGVG9SR0JBMTZGIiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfVU5L
Tk9XTiIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAg
ICBdCi0gIH0sCi0gICJHTF9SR0JBIjogewotICAgICJHTF9VTlNJR05FRF9CWVRFIjogWwotICAg
ICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIlVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uIiwK
LSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfVU5LTk9XTiIsCi0gICAgICAgICJy
ZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdLAotICAgICJHTF9VTlNJ
R05FRF9TSE9SVF80XzRfNF80IjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjog
IlVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uIiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9G
T1JNQVRfVU5LTk9XTiIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAg
ICAgIH0KLSAgICBdLAotICAgICJHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xIjogWwotICAgICAg
ewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIlVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uIiwKLSAg
ICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfVU5LTk9XTiIsCi0gICAgICAgICJyZXF1
aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9ERVBU
SDI0X1NURU5DSUw4IjogewotICAgICJHTF9VTlNJR05FRF9JTlRfMjRfOCI6IFsKLSAgICAgIHsK
LSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkUjMyVG9SMjRHOCIsCi0gICAgICAgICJkeGdp
Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IyNEc4X1RZUEVMRVNTIiwKLSAgICAgICAgInJlcXVpcmVz
Q29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfSwKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5j
dGlvbiI6ICJMb2FkUjMyVG9SMjRHOCIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9S
TUFUX0QyNF9VTk9STV9TOF9VSU5UIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0
cnVlIgotICAgICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX1JHQjE2SSI6IHsKLSAgICAiR0xfU0hP
UlQiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlM1Rv
NDxHTHNob3J0LDB4MDAwMT4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9S
MTZHMTZCMTZBMTZfU0lOVCIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIK
LSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9SOFVJIjogewotICAgICJHTF9VTlNJR05FRF9C
WVRFIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxH
THVieXRlLDE+IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhfVUlOVCIs
Ci0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAiZmFsc2UiCi0gICAgICB9Ci0gICAgXQot
ICB9LAotICAiR0xfQUxQSEEiOiB7Ci0gICAgIkdMX0hBTEZfRkxPQVQiOiBbCi0gICAgICB7Ci0g
ICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZEExNkZUb1JHQkExNkYiLAotICAgICAgICAiZHhn
aUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQiLAotICAgICAgICAicmVx
dWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAgXSwKLSAgICAiR0xfVU5TSUdO
RURfQllURSI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJVbnJlYWNoYWJs
ZUxvYWRGdW5jdGlvbiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1VOS05P
V04iLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAg
XSwKLSAgICAiR0xfRkxPQVQiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAi
TG9hZEEzMkZUb1JHQkEzMkYiLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9S
MzJHMzJCMzJBMzJfRkxPQVQiLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUi
Ci0gICAgICB9Ci0gICAgXSwKLSAgICAiR0xfSEFMRl9GTE9BVF9PRVMiOiBbCi0gICAgICB7Ci0g
ICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZEExNkZUb1JHQkExNkYiLAotICAgICAgICAiZHhn
aUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQiLAotICAgICAgICAicmVx
dWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfUkdC
MTZGIjogewotICAgICJHTF9IQUxGX0ZMT0FUIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1
bmN0aW9uIjogIkxvYWRUb05hdGl2ZTNUbzQ8R0xoYWxmLGdsOjpGbG9hdDE2T25lPiIsCi0gICAg
ICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCIsCi0gICAg
ICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdLAotICAgICJH
TF9GTE9BVCI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkUkdCMzJG
VG9SR0JBMTZGIiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2RzE2QjE2
QTE2X0ZMT0FUIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAg
fQotICAgIF0sCi0gICAgIkdMX0hBTEZfRkxPQVRfT0VTIjogWwotICAgICAgewotICAgICAgICAi
bG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTNUbzQ8R0xoYWxmLGdsOjpGbG9hdDE2T25lPiIs
Ci0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCIs
Ci0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdCi0g
IH0sCi0gICJHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDIjogewotICAgICJHTF9VTlNJR05F
RF9CWVRFIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRFQUNSMTFT
VG9SOCIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1I4X1NOT1JNIiwKLSAg
ICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAgIF0KLSAgfSwK
LSAgIkdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQiOiB7Ci0gICAgIkdMX1VOU0lHTkVE
X0JZVEUiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZENvbXByZXNz
ZWRUb05hdGl2ZTw0LDQsOD4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9V
TktOT1dOIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQot
ICAgIF0KLSAgfSwKLSAgIkdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUIjogewotICAg
ICJHTF9VTlNJR05FRF9CWVRFIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjog
IkxvYWRDb21wcmVzc2VkVG9OYXRpdmU8NCw0LDg+IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAi
RFhHSV9GT1JNQVRfVU5LTk9XTiIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1
ZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9TVEVOQ0lMX0lOREVYOCI6IHsKLSAgICAi
RFhHSV9GT1JNQVRfUjI0RzhfVFlQRUxFU1MiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVu
Y3Rpb24iOiAiVW5pbXBsZW1lbnRlZExvYWRGdW5jdGlvbiIsCi0gICAgICAgICJkeGdpRm9ybWF0
IjogIkRYR0lfRk9STUFUX1VOS05PV04iLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjog
InRydWUiCi0gICAgICB9Ci0gICAgXSwKLSAgICAiRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJ
TlQiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiVW5pbXBsZW1lbnRlZExv
YWRGdW5jdGlvbiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1VOS05PV04i
LAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAgXQot
ICB9LAotICAiR0xfTFVNSU5BTkNFX0FMUEhBMzJGX0VYVCI6IHsKLSAgICAiR0xfRkxPQVQiOiBb
Ci0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZExBMzJGVG9SR0JBMzJGIiwK
LSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfVU5LTk9XTiIsCi0gICAgICAgICJy
ZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9S
R0I4VUkiOiB7Ci0gICAgIkdMX1VOU0lHTkVEX0JZVEUiOiBbCi0gICAgICB7Ci0gICAgICAgICJs
b2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlM1RvNDxHTHVieXRlLDB4MDE+IiwKLSAgICAgICAg
ImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVCIsCi0gICAgICAgICJyZXF1
aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9ERVBU
SF9DT01QT05FTlQyNCI6IHsKLSAgICAiR0xfVU5TSUdORURfSU5UIjogWwotICAgICAgewotICAg
ICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRSMzJUb1IyNEc4IiwKLSAgICAgICAgImR4Z2lGb3Jt
YXQiOiAiRFhHSV9GT1JNQVRfUjI0RzhfVFlQRUxFU1MiLAotICAgICAgICAicmVxdWlyZXNDb252
ZXJzaW9uIjogInRydWUiCi0gICAgICB9LAotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9u
IjogIkxvYWRSMzJUb1IyNEc4IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRf
RDI0X1VOT1JNX1M4X1VJTlQiLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUi
Ci0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfUjMySSI6IHsKLSAgICAiR0xfSU5UIjogWwot
ICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxHTGludCwxPiIs
Ci0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IzMl9TSU5UIiwKLSAgICAgICAg
InJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJH
TF9ERVBUSF9DT01QT05FTlQzMl9PRVMiOiB7Ci0gICAgIkdMX1VOU0lHTkVEX0lOVCI6IFsKLSAg
ICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkUjMyVG9SMjRHOCIsCi0gICAgICAg
ICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1VOS05PV04iLAotICAgICAgICAicmVxdWlyZXND
b252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfUjMyRiI6IHsK
LSAgICAiR0xfRkxPQVQiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9h
ZFRvTmF0aXZlPEdMZmxvYXQsMT4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1B
VF9SMzJfRkxPQVQiLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogImZhbHNlIgotICAg
ICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX1JHMTZGIjogewotICAgICJHTF9IQUxGX0ZMT0FUIjog
WwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxHTGhhbGYs
Mj4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZHMTZfRkxPQVQiLAot
ICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogImZhbHNlIgotICAgICAgfQotICAgIF0sCi0g
ICAgIkdMX0ZMT0FUIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWQz
MkZUbzE2RjwyPiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcxNl9G
TE9BVCIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAg
ICBdLAotICAgICJHTF9IQUxGX0ZMT0FUX09FUyI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRG
dW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0xoYWxmLDI+IiwKLSAgICAgICAgImR4Z2lGb3JtYXQi
OiAiRFhHSV9GT1JNQVRfUjE2RzE2X0ZMT0FUIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lv
biI6ICJmYWxzZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9SR0I1NjUiOiB7Ci0gICAg
IkdMX1VOU0lHTkVEX0JZVEUiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAi
TG9hZFRvTmF0aXZlM1RvNDxHTHVieXRlLDB4RkY+IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAi
RFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0iLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9u
IjogInRydWUiCi0gICAgICB9Ci0gICAgXSwKLSAgICAiR0xfVU5TSUdORURfU0hPUlRfNV82XzUi
OiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFI1RzZCNVRvUkdCQTgi
LAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSIsCi0g
ICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0sCi0gICAgICB7Ci0g
ICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlPEdMdXNob3J0LDE+IiwKLSAgICAg
ICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNIiwKLSAgICAgICAgInJl
cXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9M
VU1JTkFOQ0UxNkZfRVhUIjogewotICAgICJHTF9IQUxGX0ZMT0FUIjogWwotICAgICAgewotICAg
ICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRMMTZGVG9SR0JBMTZGIiwKLSAgICAgICAgImR4Z2lG
b3JtYXQiOiAiRFhHSV9GT1JNQVRfVU5LTk9XTiIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNp
b24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdLAotICAgICJHTF9IQUxGX0ZMT0FUX09FUyI6IFsK
LSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkTDE2RlRvUkdCQTE2RiIsCi0g
ICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1VOS05PV04iLAotICAgICAgICAicmVx
dWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfUkcx
NlVJIjogewotICAgICJHTF9VTlNJR05FRF9TSE9SVCI6IFsKLSAgICAgIHsKLSAgICAgICAgImxv
YWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0x1c2hvcnQsMj4iLAotICAgICAgICAiZHhnaUZv
cm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZHMTZfVUlOVCIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZl
cnNpb24iOiAiZmFsc2UiCi0gICAgICB9Ci0gICAgXQotICB9LAotICAiR0xfQ09NUFJFU1NFRF9S
R0JBX1MzVENfRFhUM19BTkdMRSI6IHsKLSAgICAiR0xfVU5TSUdORURfQllURSI6IFsKLSAgICAg
IHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkQ29tcHJlc3NlZFRvTmF0aXZlPDQsNCwx
Nj4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9VTktOT1dOIiwKLSAgICAg
ICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAgIF0KLSAgfSwKLSAg
IkdMX1JHMTZJIjogewotICAgICJHTF9TSE9SVCI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRG
dW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0xzaG9ydCwyPiIsCi0gICAgICAgICJkeGdpRm9ybWF0
IjogIkRYR0lfRk9STUFUX1IxNkcxNl9TSU5UIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lv
biI6ICJmYWxzZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9CR1JBOF9FWFQiOiB7Ci0g
ICAgIkdMX1VOU0lHTkVEX0JZVEUiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24i
OiAiTG9hZFRvTmF0aXZlPEdMdWJ5dGUsND4iLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJ
X0ZPUk1BVF9VTktOT1dOIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIK
LSAgICAgIH0KLSAgICBdCi0gIH0sCi0gICJHTF9BTFBIQTE2Rl9FWFQiOiB7Ci0gICAgIkdMX0hB
TEZfRkxPQVQiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZEExNkZU
b1JHQkExNkYiLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9VTktOT1dOIiwK
LSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAgIF0sCi0g
ICAgIkdMX0hBTEZfRkxPQVRfT0VTIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9u
IjogIkxvYWRBMTZGVG9SR0JBMTZGIiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JN
QVRfVU5LTk9XTiIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAg
IH0KLSAgICBdCi0gIH0sCi0gICJHTF9SR0JBNCI6IHsKLSAgICAiR0xfVU5TSUdORURfQllURSI6
IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0x1Ynl0
ZSw0PiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JN
IiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIKLSAgICAgIH0KLSAgICBd
LAotICAgICJHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80IjogWwotICAgICAgewotICAgICAgICAi
bG9hZEZ1bmN0aW9uIjogIkxvYWRSR0JBNFRvUkdCQTgiLAotICAgICAgICAiZHhnaUZvcm1hdCI6
ICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNp
b24iOiAidHJ1ZSIKLSAgICAgIH0sCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAi
TG9hZFJHQkE0VG9BUkdCNCIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX0I0
RzRSNEE0X1VOT1JNIiwKLSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAg
ICAgfQotICAgIF0KLSAgfSwKLSAgIkdMX1JHQkE4IjogewotICAgICJHTF9VTlNJR05FRF9CWVRF
IjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxHTHVi
eXRlLDQ+IiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5P
Uk0iLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogImZhbHNlIgotICAgICAgfQotICAg
IF0KLSAgfSwKLSAgIkdMX0xVTUlOQU5DRSI6IHsKLSAgICAiR0xfSEFMRl9GTE9BVCI6IFsKLSAg
ICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkTDE2RlRvUkdCQTE2RiIsCi0gICAg
ICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCIsCi0gICAg
ICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdLAotICAgICJH
TF9VTlNJR05FRF9CWVRFIjogWwotICAgICAgewotICAgICAgICAibG9hZEZ1bmN0aW9uIjogIlVu
cmVhY2hhYmxlTG9hZEZ1bmN0aW9uIiwKLSAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JN
QVRfVU5LTk9XTiIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAg
IH0KLSAgICBdLAotICAgICJHTF9GTE9BVCI6IFsKLSAgICAgIHsKLSAgICAgICAgImxvYWRGdW5j
dGlvbiI6ICJMb2FkTDMyRlRvUkdCQTMyRiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lf
Rk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCIsCi0gICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24i
OiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdLAotICAgICJHTF9IQUxGX0ZMT0FUX09FUyI6IFsKLSAg
ICAgIHsKLSAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkTDE2RlRvUkdCQTE2RiIsCi0gICAg
ICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCIsCi0gICAg
ICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKLSAgICAgIH0KLSAgICBdCi0gIH0sCi0g
ICJHTF9SR0IxMF9BMlVJIjogewotICAgICJHTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYi
OiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlPEdMdWlu
dCwxPiIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VJ
TlQiLAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogImZhbHNlIgotICAgICAgfQotICAg
IF0KLSAgfSwKLSAgIkdMX0VUQzFfUkdCOF9PRVMiOiB7Ci0gICAgIkdMX1VOU0lHTkVEX0JZVEUi
OiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZEVUQzFSR0I4VG9SR0JB
OCIsCi0gICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNIiwK
LSAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgotICAgICAgfQotICAgIF0KLSAg
fSwKLSAgIkdMX0VUQzFfUkdCOF9MT1NTWV9ERUNPREVfQU5HTEUiOiB7Ci0gICAgIkdMX1VOU0lH
TkVEX0JZVEUiOiBbCi0gICAgICB7Ci0gICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZEVUQzFS
R0I4VG9CQzEiLAotICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9CQzFfVU5PUk0i
LAotICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCi0gICAgICB9Ci0gICAgXQot
ICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9sb2FkX2Z1bmN0aW9uc190
YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvbG9hZF9mdW5jdGlvbnNfdGFibGUuaAkocmV2aXNpb24gMjA4
MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9sb2FkX2Z1bmN0aW9uc190YWJsZS5oCShub25leGlzdGVudCkKQEAgLTEsMzEgKzAs
MCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgotLy8KLS8vIGxvYWRfZnVuY3Rpb25zX3RhYmxlOgotLy8gICBDb250YWlucyBs
b2FkIGZ1bmN0aW9ucyB0YWJsZSBkZXBlbmRpbmcgb24gaW50ZXJuYWwgZm9ybWF0IGFuZCBkeGdp
IGZvcm1hdAotLy8KLQotI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfTE9BREZV
TkNUSU9OU1RBQkxFX0hfCi0jZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9EM0QxMV9MT0FE
RlVOQ1RJT05TVEFCTEVfSF8KLQotI2luY2x1ZGUgPG1hcD4KLQotI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlLmgiCi0KLW5hbWVzcGFjZSByeAot
ewotCi1uYW1lc3BhY2UgZDNkMTEKLXsKLQotY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8+ICZHZXRMb2FkRnVuY3Rpb25zTWFwKEdMZW51bSBpbnRlcm5hbEZvcm1h
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVCBkeGdpRm9ybWF0KTsKLQotfSAgLy8gbmFtZXNwYWNl
IGQzZDExCi0KLX0gIC8vIG5hbWVzcGFjZSByeAotCi0jZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRF
UkVSX0QzRF9EM0QxMV9MT0FERlVOQ1RJT05TVEFCTEVfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvbG9hZF9mdW5jdGlvbnNf
dGFibGVfYXV0b2dlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9sb2FkX2Z1bmN0aW9uc190YWJsZV9hdXRv
Z2VuLmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9sb2FkX2Z1bmN0aW9uc190YWJsZV9hdXRvZ2Vu
LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDIwOTggKzAsMCBAQAotLy8gR0VORVJBVEVEIEZJTEUg
LSBETyBOT1QgRURJVC4KLS8vIEdlbmVyYXRlZCBieSBnZW5fbG9hZF9mdW5jdGlvbnNfdGFibGUu
cHkgdXNpbmcgZGF0YSBmcm9tIGxvYWRfZnVuY3Rpb25zX2RhdGEuanNvbgotLy8KLS8vIENvcHly
aWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8v
IGxvYWRfZnVuY3Rpb25zX3RhYmxlOgotLy8gICBDb250YWlucyB0aGUgR2V0TG9hZEZ1bmN0aW9u
c01hcCBmb3IgdGV4dHVyZV9mb3JtYXRfdXRpbC5oCi0vLwotCi0jaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL2xvYWRfZnVuY3Rpb25zX3RhYmxlLmgiCi0jaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2Zvcm1hdHV0aWxzMTEuaCIKLSNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfdGFibGUuaCIKLSNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvbG9hZGltYWdlLmgiCi0jaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZDNkL2xvYWRpbWFnZV9ldGMuaCIKLQotbmFtZXNwYWNlIHJ4Ci17Ci0KLW5hbWVz
cGFjZSBkM2QxMQotewotCi1uYW1lc3BhY2UKLXsKLQotLy8gRVMzIGltYWdlIGxvYWRpbmcgZnVu
Y3Rpb25zIHZhcnkgYmFzZWQgb246Ci0vLyAgICAtIHRoZSBHTCBpbnRlcm5hbCBmb3JtYXQgKHN1
cHBsaWVkIHRvIGdsVGV4KkltYWdlKkQpCi0vLyAgICAtIHRoZSBHTCBkYXRhIHR5cGUgZ2l2ZW4g
KHN1cHBsaWVkIHRvIGdsVGV4KkltYWdlKkQpCi0vLyAgICAtIHRoZSB0YXJnZXQgRFhHSV9GT1JN
QVQgdGhhdCB0aGUgaW1hZ2Ugd2lsbCBiZSBsb2FkZWQgaW50byAod2hpY2ggaXMgY2hvc2VuIGJh
c2VkIG9uIHRoZSBEM0QKLS8vICAgIGRldmljZSdzIGNhcGFiaWxpdGllcykKLS8vIFRoaXMgbWFw
IHR5cGUgZGV0ZXJtaW5lcyB3aGljaCBsb2FkaW5nIGZ1bmN0aW9uIHRvIHVzZSwgYmFzZWQgb24g
dGhlc2UgdGhyZWUgcGFyYW1ldGVycy4KLS8vIFNvdXJjZSBmb3JtYXRzIGFuZCB0eXBlcyBhcmUg
dGFrZW4gZnJvbSBUYWJsZXMgMy4yIGFuZCAzLjMgb2YgdGhlIEVTIDMgc3BlYy4KLXZvaWQgVW5p
bXBsZW1lbnRlZExvYWRGdW5jdGlvbihzaXplX3Qgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlu
dDhfdCAqaW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0
Um93UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVw
dGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQot
ewotICAgIFVOSU1QTEVNRU5URUQoKTsKLX0KLQotdm9pZCBVbnJlYWNoYWJsZUxvYWRGdW5jdGlv
bihzaXplX3Qgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWln
aHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50OF90ICpvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBvdXRwdXRSb3dQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IG91dHB1dERlcHRoUGl0Y2gpCi17Ci0gICAgVU5SRUFDSEFCTEUoKTsKLX0KLQotfSAgLy8gbmFt
ZXNwYWNlCi0KLS8vIFRPRE8gd2UgY2FuIHJlcGxhY2UgdGhlc2UgbWFwcyB3aXRoIG1vcmUgZ2Vu
ZXJhdGVkIGNvZGUKLWNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZv
PiAmR2V0TG9hZEZ1bmN0aW9uc01hcChHTGVudW0gaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVQgZHhnaUZvcm1hdCkKLXsKLSAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCi0gICAg
c3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKLSAgICB7Ci0gICAgICAgIGNhc2UgR0xfQUxQSEE6Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVDoKLSAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1h
cDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX0hB
TEZfRkxPQVRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRBMTZGVG9SR0JBMTZGLCB0cnVl
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfSEFMRl9GTE9BVF9PRVNdID0g
TG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRBMTZGVG9SR0JBMTZGLCB0cnVlKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQ6
Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3Rk
OjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBb
XSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdl
RnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtH
TF9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZEEzMkZUb1JHQkEzMkYsIHRydWUp
OwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExv
YWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAg
fSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1VOS05PV046
Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3Rk
OjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBb
XSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdl
RnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtH
TF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRG
dW5jdGlvbiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsK
LSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBs
b2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0
IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFw
ID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRN
YXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVM
b2FkRnVuY3Rpb24sIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRN
YXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9BTFBIQTE2Rl9FWFQ6Ci0gICAgICAgIHsKLSAgICAg
ICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX1VOS05PV046Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlv
bkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAg
ICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9IQUxGX0ZMT0FUXSA9IExvYWRJbWFnZUZ1bmN0
aW9uSW5mbyhMb2FkQTE2RlRvUkdCQTE2RiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBsb2FkTWFwW0dMX0hBTEZfRkxPQVRfT0VTXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2Fk
QTE2RlRvUkdCQTE2RiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9h
ZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rp
b25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0s
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGxvYWRNYXBbR0xfSEFMRl9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZEExNkZU
b1JHQkExNkYsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9IQUxG
X0ZMT0FUX09FU10gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZEExNkZUb1JHQkExNkYsIHRy
dWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAg
ICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9u
c01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBHTF9BTFBIQTMyRl9FWFQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAo
ZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX1VOS05PV046Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0
aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5j
dGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51
bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAg
ICAgbG9hZE1hcFtHTF9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZEEzMkZUb1JH
QkEzMkYsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0g
ICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9h
ZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBz
dGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9
IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFw
W0dMX0ZMT0FUXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkQTMyRlRvUkdCQTMyRiwgdHJ1
ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAg
ICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25z
TWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAg
ICBjYXNlIEdMX0FMUEhBOF9FWFQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZHhn
aUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFU
X0E4X1VOT1JNOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rp
b25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0s
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRv
TmF0aXZlPEdMdWJ5dGUsMT4sIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk06Ci0gICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2Fk
TWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkQThUb1JHQkE4LCB0cnVlKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0K
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfQkdSNV9BMV9B
TkdMRVg6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1VOS05PV046Ci0gICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8
R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rp
b25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJ
R05FRF9TSE9SVF8xXzVfNV81X1JFVl9FWFRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRS
R0I1QTFUb1JHQkE4LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xf
VU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdWJ5
dGUsND4sIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwot
ICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxv
YWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
c3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAg
PSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZElt
YWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1h
cFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8
R0x1Ynl0ZSw0PiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VO
U0lHTkVEX1NIT1JUXzFfNV81XzVfUkVWX0VYVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9h
ZFJHQjVBMVRvUkdCQTgsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxv
YWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9CR1JBNF9BTkdMRVg6Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBjYXNlIERYR0lfRk9STUFUX1VOS05PV046Ci0gICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAg
ICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80X1JF
Vl9FWFRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRSR0JBNFRvUkdCQTgsIHRydWUpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1Ynl0ZSw0PiwgZmFsc2UpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0o
KTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRN
YXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVdID0g
TG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTHVieXRlLDQ+LCB0cnVlKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF9S
RVZfRVhUXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkUkdCQTRUb1JHQkE4LCB0cnVlKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAg
ICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgR0xfQkdSQThfRVhUOgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3Jt
YXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9VTktO
T1dOOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0
IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFw
ID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRN
YXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZl
PEdMdWJ5dGUsND4sIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2Fk
TWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMg
Y29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlv
bnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwg
TG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAg
bG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9O
YXRpdmU8R0x1Ynl0ZSw0PiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX0JHUkFfRVhUOgotICAgICAgICB7Ci0gICAg
ICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9VTktOT1dOOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rp
b25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1
bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZElt
YWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7
Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfQ09N
UFJFU1NFRF9SMTFfRUFDOgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3Jt
YXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOF9V
Tk9STToKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01h
cCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2Fk
TWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRFQUNSMTFU
b1I4LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAg
ICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRG
dW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SRzExX0VBQzoKLSAgICAgICAgewotICAgICAgICAg
ICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfUjhHOF9VTk9STToKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9u
SW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZEltYWdlRnVu
Y3Rpb25JbmZvKExvYWRFQUNSRzExVG9SRzgsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQjhfRVRD
MjoKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk06Ci0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjpt
YXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVu
Y3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9V
TlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkRVRDMlJHQjhUb1JHQkE4
LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAg
ICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5j
dGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMjoKLSAg
ICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk06Ci0gICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xl
bnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25J
bmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05F
RF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkRVRDMlJHQjhBMVRvUkdCQTgsIHRy
dWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAg
ICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9u
c01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDOgotICAgICAgICB7Ci0gICAgICAgICAg
ICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STToKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0
aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZEltYWdl
RnVuY3Rpb25JbmZvKExvYWRFVEMyUkdCQThUb1JHQkE4LCB0cnVlKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9S
R0JBX1MzVENfRFhUMV9FWFQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZv
cm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1VO
S05PV046Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29u
c3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNN
YXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9h
ZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9h
ZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkQ29tcHJl
c3NlZFRvTmF0aXZlPDQsNCw4PiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
c3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2Fk
RnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxH
TGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8o
TG9hZENvbXByZXNzZWRUb05hdGl2ZTw0LDQsOD4sIHRydWUpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQzX0FOR0xFOgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lG
b3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9V
TktOT1dOOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNv
bnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25z
TWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxv
YWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZENvbXBy
ZXNzZWRUb05hdGl2ZTw0LDQsMTY+LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxv
YWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFw
PEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAg
ICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5m
byhMb2FkQ29tcHJlc3NlZFRvTmF0aXZlPDQsNCwxNj4sIHRydWUpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VE
X1JHQkFfUzNUQ19EWFQ1X0FOR0xFOgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4
Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9VTktOT1dOOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rp
b25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0s
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZENv
bXByZXNzZWRUb05hdGl2ZTw0LDQsMTY+LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+
IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAg
ICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9u
SW5mbyhMb2FkQ29tcHJlc3NlZFRvTmF0aXZlPDQsNCwxNj4sIHRydWUpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9DT01QUkVT
U0VEX1JHQl9TM1RDX0RYVDFfRVhUOgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4
Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9VTktOT1dOOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rp
b25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0s
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZENv
bXByZXNzZWRUb05hdGl2ZTw0LDQsOD4sIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4g
bG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpt
YXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25J
bmZvKExvYWRDb21wcmVzc2VkVG9OYXRpdmU8NCw0LDg+LCB0cnVlKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfQ09NUFJFU1NF
RF9TSUdORURfUjExX0VBQzoKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9y
bWF0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhf
U05PUk06Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29u
c3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNN
YXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9h
ZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9h
ZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkRUFDUjEx
U1RvUjgsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0g
ICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9h
ZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQzoKLSAgICAgICAgewot
ICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9TTk9STToKLSAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9h
ZEltYWdlRnVuY3Rpb25JbmZvKExvYWRFQUNSRzExU1RvUkc4LCB0cnVlKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0K
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfQ09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfRVRDMl9FQUM6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAo
ZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX1I4RzhCOEE4X1VOT1JNX1NSR0I6Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAg
ICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0
aW9uSW5mbyhMb2FkRVRDMlNSR0JBOFRvU1JHQkE4LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdC
OF9FVEMyOgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9S
TV9TUkdCOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNv
bnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25z
TWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxv
YWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZEVUQzJT
UkdCOFRvUkdCQTgsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRN
YXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBI
QTFfRVRDMjoKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5P
Uk1fU1JHQjoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9u
c01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBs
b2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRFVEMy
U1JHQjhBMVRvUkdCQTgsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxv
YWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9ERVBUSDI0X1NURU5DSUw4OgotICAgICAgICB7Ci0g
ICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVDoKLSAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxv
YWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0lOVF8y
NF84XSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkUjMyVG9SMjRHOCwgdHJ1ZSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAg
fSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IyNEc4X1RZ
UEVMRVNTOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNv
bnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25z
TWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxv
YWRNYXBbR0xfVU5TSUdORURfSU5UXzI0XzhdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRS
MzJUb1IyNEc4LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFw
OwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgR0xfREVQVEgzMkZfU1RFTkNJTDg6Ci0gICAgICAgIHsKLSAgICAg
ICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX1IzMkc4WDI0X1RZUEVMRVNTOgotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZElt
YWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1h
cDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfRkxPQVRfMzJfVU5TSUdORURf
SU5UXzI0XzhfUkVWXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1aW50
LDI+LCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAg
ICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2Fk
RnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYXNlIERY
R0lfRk9STUFUX1VOS05PV046Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxv
YWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFw
PEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAg
ICAgICAgICAgbG9hZE1hcFtHTF9GTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVZdID0gTG9h
ZEltYWdlRnVuY3Rpb25JbmZvKFVuaW1wbGVtZW50ZWRMb2FkRnVuY3Rpb24sIHRydWUpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAg
IH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxv
YWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX0ZMT0FUXzMyX1VOU0lH
TkVEX0lOVF8yNF84X1JFVl0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5pbXBsZW1lbnRlZExv
YWRGdW5jdGlvbiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1h
cDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDE2OgotICAgICAgICB7Ci0g
ICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMTZfVU5PUk06Ci0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwot
ICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9TSE9SVF0gPSBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdXNob3J0LDE+LCBmYWxzZSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAg
fSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNl9UWVBF
TEVTUzoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01h
cCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2Fk
TWFwW0dMX1VOU0lHTkVEX0lOVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFIzMlRvUjE2
LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfU0hP
UlRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTHVzaG9ydCwxPiwgZmFs
c2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAg
ICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9u
c01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBHTF9ERVBUSF9DT01QT05FTlQyNDoKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNo
IChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQ6Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAg
ICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9JTlRdID0gTG9hZEltYWdlRnVuY3Rp
b25JbmZvKExvYWRSMzJUb1IyNEc4LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjI0RzhfVFlQRUxFU1M6Ci0gICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBs
b2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9JTlRd
ID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRSMzJUb1IyNEc4LCB0cnVlKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7
Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfREVQVEhf
Q09NUE9ORU5UMzJGOgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJfVFlQ
RUxFU1M6Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29u
c3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNN
YXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9h
ZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9h
ZE1hcFtHTF9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMZmxv
YXQsMT4sIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwot
ICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxv
YWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfVU5LTk9XTjoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4g
bG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpt
YXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBsb2FkTWFwW0dMX0ZMT0FUXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbmlt
cGxlbWVudGVkTG9hZEZ1bmN0aW9uLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxv
YWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFw
PEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAg
ICAgICAgICAgbG9hZE1hcFtHTF9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5pbXBs
ZW1lbnRlZExvYWRGdW5jdGlvbiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUzoK
LSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfVU5LTk9XTjoKLSAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0s
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+
IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0lO
VF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFIzMlRvUjI0RzgsIHRydWUpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0o
KTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRN
YXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0lOVF0gPSBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFIzMlRvUjI0RzgsIHRydWUpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9FVEMxX1JH
QjhfTE9TU1lfREVDT0RFX0FOR0xFOgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4
Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9CQzFfVU5PUk06Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0
aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5j
dGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51
bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAg
ICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2Fk
RVRDMVJHQjhUb0JDMSwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9h
ZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgICAgICBjYXNlIEdMX0VUQzFfUkdCOF9PRVM6Ci0gICAgICAgIHsKLSAgICAg
ICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNOgotICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdl
RnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8oTG9hZEVUQzFSR0I4VG9SR0JBOCwgdHJ1ZSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwot
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX0xVTUlOQU5D
RToKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FU
OgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0
ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0g
W10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBb
R0xfSEFMRl9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZEwxNkZUb1JHQkExNkYs
IHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9IQUxGX0ZMT0FUX09F
U10gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZEwxNkZUb1JHQkExNkYsIHRydWUpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwot
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9G
TE9BVDoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01h
cCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2Fk
TWFwW0dMX0ZMT0FUXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkTDMyRlRvUkdCQTMyRiwg
dHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVd
ID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAg
ICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfVU5L
Tk9XTjoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01h
cCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2Fk
TWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxl
TG9hZEZ1bmN0aW9uLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2Fk
TWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMg
Y29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlv
bnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwg
TG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAg
bG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNo
YWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRTE2Rl9FWFQ6Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1VOS05PV046Ci0gICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFw
OwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9IQUxGX0ZMT0FUXSA9IExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbyhMb2FkTDE2RlRvUkdCQTE2RiwgdHJ1ZSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBsb2FkTWFwW0dMX0hBTEZfRkxPQVRfT0VTXSA9IExvYWRJbWFnZUZ1bmN0aW9u
SW5mbyhMb2FkTDE2RlRvUkdCQTE2RiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBs
b2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1h
cDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGxvYWRNYXBbR0xfSEFMRl9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8o
TG9hZEwxNkZUb1JHQkExNkYsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1h
cFtHTF9IQUxGX0ZMT0FUX09FU10gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZEwxNkZUb1JH
QkExNkYsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0g
ICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9h
ZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0UzMkZfRVhUOgotICAgICAgICB7Ci0gICAgICAg
ICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9VTktOT1dOOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25J
bmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfRkxPQVRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZv
KExvYWRMMzJGVG9SR0JBMzJGLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBz
dGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRG
dW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdM
ZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAg
ICAgICAgbG9hZE1hcFtHTF9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZEwzMkZU
b1JHQkEzMkYsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7
Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U4X0FMUEhBOF9FWFQ6Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX1VOS05PV046Ci0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwot
ICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbyhMb2FkTEE4VG9SR0JBOCwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rp
b25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8oTG9hZExBOFRvUkdCQTgsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U4X0VYVDoK
LSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfVU5LTk9XTjoKLSAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0s
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+
IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZ
VEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRMOFRvUkdCQTgsIHRydWUpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0o
KTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRN
YXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVdID0g
TG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRMOFRvUkdCQTgsIHRydWUpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9MVU1JTkFO
Q0VfQUxQSEE6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkEx
Nl9GTE9BVDoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9u
c01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBs
b2FkTWFwW0dMX0hBTEZfRkxPQVRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRMQTE2RlRv
UkdCQTE2RiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX0hBTEZf
RkxPQVRfT0VTXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkTEExNkZUb1JHQkExNkYsIHRy
dWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAg
ICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkcz
MkIzMkEzMl9GTE9BVDoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1
bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xl
bnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBsb2FkTWFwW0dMX0ZMT0FUXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkTEEzMkZU
b1JHQkEzMkYsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJ
R05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlv
biwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAg
ICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVu
Y3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX1VOS05PV046Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBz
dGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRG
dW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdM
ZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAg
ICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhV
bnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBs
b2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1h
cDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEEx
NkZfRVhUOgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9VTktOT1dOOgotICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFw
PEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0
aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfSEFM
Rl9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZExBMTZGVG9SR0JBMTZGLCB0cnVl
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfSEFMRl9GTE9BVF9PRVNdID0g
TG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRMQTE2RlRvUkdCQTE2RiwgdHJ1ZSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgp
OwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZElt
YWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1h
cDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfSEFMRl9GTE9BVF0gPSBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8oTG9hZExBMTZGVG9SR0JBMTZGLCB0cnVlKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGxvYWRNYXBbR0xfSEFMRl9GTE9BVF9PRVNdID0gTG9hZEltYWdlRnVuY3Rp
b25JbmZvKExvYWRMQTE2RlRvUkdCQTE2RiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQTMy
Rl9FWFQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1VOS05PV046Ci0gICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8
R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rp
b25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9GTE9B
VF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZExBMzJGVG9SR0JBMzJGLCB0cnVlKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAg
ICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBs
b2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9GTE9BVF0gPSBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8oTG9hZExBMzJGVG9SR0JBMzJGLCB0cnVlKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0K
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfUjExRl9H
MTFGX0IxMEY6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxMUcxMUIxMF9G
TE9BVDoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01h
cCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2Fk
TWFwW0dMX0hBTEZfRkxPQVRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRSR0IxNkZUb1JH
MTFCMTBGLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfSEFMRl9G
TE9BVF9PRVNdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRSR0IxNkZUb1JHMTFCMTBGLCB0
cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfRkxPQVRdID0gTG9hZElt
YWdlRnVuY3Rpb25JbmZvKExvYWRSR0IzMkZUb1JHMTFCMTBGLCB0cnVlKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFVl0gPSBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdWludCwxPiwgZmFsc2UpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAg
IH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9S
MTZGOgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfRkxPQVQ6Ci0gICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8
R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rp
b25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9GTE9B
VF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZDMyRlRvMTZGPDE+LCB0cnVlKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfSEFMRl9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMaGFsZiwxPiwgZmFsc2UpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgbG9hZE1hcFtHTF9IQUxGX0ZMT0FUX09FU10gPSBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8oTG9hZFRvTmF0aXZlPEdMaGFsZiwxPiwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9SMTZJOgotICAgICAgICB7Ci0g
ICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfU0lOVDoKLSAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1
bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1NIT1JUXSA9IExvYWRJbWFnZUZ1bmN0
aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0xzaG9ydCwxPiwgZmFsc2UpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9SMTZVSToKLSAgICAg
ICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2X1VJTlQ6Ci0gICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2Fk
TWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9TSE9SVF0g
PSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdXNob3J0LDE+LCBmYWxzZSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAg
ICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFw
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXNl
IEdMX1IzMkY6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMl9GTE9BVDoK
LSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6
Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtd
KCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dM
X0ZMT0FUXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0xmbG9hdCwxPiwg
ZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAg
ICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0
aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBHTF9SMzJJOgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3Jt
YXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJf
U0lOVDoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01h
cCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2Fk
TWFwW0dMX0lOVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMaW50LDE+
LCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAg
ICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVu
Y3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
ICAgICBjYXNlIEdMX1IzMlVJOgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lG
b3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9S
MzJfVUlOVDoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9u
c01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBs
b2FkTWFwW0dMX1VOU0lHTkVEX0lOVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0
aXZlPEdMdWludCwxPiwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxv
YWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9SODoKLSAgICAgICAgewotICAgICAgICAgICAgc3dp
dGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjhfVU5PUk06Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxv
YWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFw
PEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAg
ICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5m
byhMb2FkVG9OYXRpdmU8R0x1Ynl0ZSwxPiwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9SOEk6Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBjYXNlIERYR0lfRk9STUFUX1I4X1NJTlQ6Ci0gICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAg
ICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9u
SW5mbyhMb2FkVG9OYXRpdmU8R0xieXRlLDE+LCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX1I4VUk6Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4X1VJTlQ6Ci0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwot
ICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1Ynl0ZSwxPiwgZmFsc2UpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0o
KTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9SOF9T
Tk9STToKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhfU05PUk06Ci0gICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8
R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rp
b25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9CWVRF
XSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0xieXRlLDE+LCBmYWxzZSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAg
ICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFw
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXNl
IEdMX1JHMTZGOgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZfRkxP
QVQ6Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
c3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAg
PSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZElt
YWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1h
cFtHTF9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZDMyRlRvMTZGPDI+LCB0cnVl
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfSEFMRl9GTE9BVF0gPSBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMaGFsZiwyPiwgZmFsc2UpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9IQUxGX0ZMT0FUX09FU10gPSBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMaGFsZiwyPiwgZmFsc2UpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9SRzE2SToKLSAg
ICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQ6Ci0gICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVt
LCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZv
PiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9TSE9SVF0gPSBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMc2hvcnQsMj4sIGZhbHNlKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAg
ICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xf
UkcxNlVJOgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZfVUlOVDoK
LSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6
Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtd
KCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dM
X1VOU0lHTkVEX1NIT1JUXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1
c2hvcnQsMj4sIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFw
OwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgR0xfUkczMkY6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRj
aCAoZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX1IzMkczMl9GTE9BVDoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4g
bG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpt
YXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBsb2FkTWFwW0dMX0ZMT0FUXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2Fk
VG9OYXRpdmU8R0xmbG9hdCwyPiwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9SRzMySToKLSAgICAgICAgewotICAgICAg
ICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyX1NJTlQ6Ci0gICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAg
ICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9JTlRdID0gTG9hZEltYWdlRnVuY3Rpb25J
bmZvKExvYWRUb05hdGl2ZTxHTGludCwyPiwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9SRzMyVUk6Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMl9VSU5UOgotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZElt
YWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1h
cDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfSU5UXSA9IExv
YWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1aW50LDI+LCBmYWxzZSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAg
fSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX1JH
ODoKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9VTk9STToKLSAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxH
TGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlv
bkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lH
TkVEX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTHVieXRlLDI+
LCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAg
ICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVu
Y3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
ICAgICBjYXNlIEdMX1JHOEk6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZv
cm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4
RzhfU0lOVDoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9u
c01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBs
b2FkTWFwW0dMX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTGJ5
dGUsMj4sIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwot
ICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxv
YWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgR0xfUkc4VUk6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAo
ZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX1I4RzhfVUlOVDoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1
bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xl
bnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExv
YWRUb05hdGl2ZTxHTHVieXRlLDI+LCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX1JHOF9TTk9STToKLSAgICAgICAgewot
ICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9TTk9STToKLSAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX0JZVEVdID0gTG9hZEltYWdlRnVu
Y3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTGJ5dGUsMj4sIGZhbHNlKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfUkdCOgotICAgICAg
ICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9VTktOT1dOOgotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZElt
YWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1h
cDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9TSE9SVF81XzZfNV0gPSBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAg
IH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxv
YWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVd
ID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfU0hPUlRfNV82XzVd
ID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAg
ICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgR0xfUkdCMTBfQTI6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1h
dCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxMEcx
MEIxMEEyX1VOT1JNOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVu
Y3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVu
dW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGxvYWRNYXBbR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWXSA9IExvYWRJbWFnZUZ1
bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1aW50LDE+LCBmYWxzZSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX1JHQjEwX0EyVUk6
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VJTlQ6Ci0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjpt
YXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVu
Y3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9V
TlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVZdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRU
b05hdGl2ZTxHTHVpbnQsMT4sIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfUkdCMTZGOgotICAgICAgICB7Ci0gICAgICAg
ICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQ6Ci0gICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFw
OwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9GTE9BVF0gPSBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8oTG9hZFJHQjMyRlRvUkdCQTE2RiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBsb2FkTWFwW0dMX0hBTEZfRkxPQVRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExv
YWRUb05hdGl2ZTNUbzQ8R0xoYWxmLGdsOjpGbG9hdDE2T25lPiwgdHJ1ZSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBsb2FkTWFwW0dMX0hBTEZfRkxPQVRfT0VTXSA9IExvYWRJbWFnZUZ1bmN0
aW9uSW5mbyhMb2FkVG9OYXRpdmUzVG80PEdMaGFsZixnbDo6RmxvYXQxNk9uZT4sIHRydWUpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAg
ICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBH
TF9SR0IxNkk6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkEx
Nl9TSU5UOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNv
bnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25z
TWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxv
YWRNYXBbR0xfU0hPUlRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTNUbzQ8
R0xzaG9ydCwweDAwMDE+LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBs
b2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfUkdCMTZVSToKLSAgICAgICAgewotICAgICAgICAg
ICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQ6Ci0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwot
ICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9TSE9SVF0gPSBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlM1RvNDxHTHVzaG9ydCwweDAwMDE+LCB0cnVl
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAg
ICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNN
YXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgR0xfUkdCMzJGOgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJC
MzJBMzJfRkxPQVQ6Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0
aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5j
dGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51
bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAg
ICAgbG9hZE1hcFtHTF9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZl
M1RvNDxHTGZsb2F0LGdsOjpGbG9hdDMyT25lPiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX1JHQjMySToKLSAgICAgICAg
ewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1NJTlQ6Ci0gICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVt
LCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZv
PiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9JTlRdID0gTG9h
ZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTNUbzQ8R0xpbnQsMHgwMDAwMDAwMT4sIHRy
dWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAg
ICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9u
c01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBHTF9SR0IzMlVJOgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3Jt
YXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJH
MzJCMzJBMzJfVUlOVDoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1
bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xl
bnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0lOVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9h
ZFRvTmF0aXZlM1RvNDxHTHVpbnQsMHgwMDAwMDAwMT4sIHRydWUpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9SR0I1NjU6Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I1RzZSNV9VTk9STToKLSAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0s
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+
IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX1NI
T1JUXzVfNl81XSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1c2hvcnQs
MT4sIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAg
ICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRG
dW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjhHOEI4QThfVU5PUk06Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAg
ICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9TSE9SVF81XzZfNV0gPSBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8oTG9hZFI1RzZCNVRvUkdCQTgsIHRydWUpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5m
byhMb2FkVG9OYXRpdmUzVG80PEdMdWJ5dGUsMHhGRj4sIHRydWUpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9SR0I1X0ExOgotICAg
ICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CNUc1UjVBMV9VTk9STToKLSAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVu
dW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVE
X1NIT1JUXzVfNV81XzFdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRSR0I1QTFUb0ExUkdC
NSwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAg
ICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVu
Y3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX1I4RzhCOEE4X1VOT1JNOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZv
PiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWXSA9IExv
YWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkUkdCMTBBMlRvUkdCQTgsIHRydWUpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xXSA9IExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbyhMb2FkUkdCNUExVG9SR0JBOCwgdHJ1ZSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25J
bmZvKExvYWRUb05hdGl2ZTxHTHVieXRlLDQ+LCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX1JHQjg6Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNOgotICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9h
ZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9h
ZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0g
PSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlM1RvNDxHTHVieXRlLDB4RkY+LCB0
cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAg
ICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlv
bnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgR0xfUkdCOEk6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1h
dCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhC
OEE4X1NJTlQ6Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMg
Y29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlv
bnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwg
TG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAg
bG9hZE1hcFtHTF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmUzVG80
PEdMYnl0ZSwweDAxPiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9h
ZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgICAgICBjYXNlIEdMX1JHQjhVSToKLSAgICAgICAgewotICAgICAgICAgICAg
c3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVDoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9u
SW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZEltYWdlRnVu
Y3Rpb25JbmZvKExvYWRUb05hdGl2ZTNUbzQ8R0x1Ynl0ZSwweDAxPiwgdHJ1ZSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgp
OwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX1JHQjhf
U05PUk06Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1NOT1JN
OgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0
ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0g
W10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBb
R0xfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlM1RvNDxHTGJ5dGUs
MHg3Rj4sIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0g
ICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9h
ZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBHTF9SR0I5X0U1OgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2gg
KGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9SOUc5QjlFNV9TSEFSRURFWFA6Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAg
ICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9IQUxGX0ZMT0FUXSA9IExvYWRJbWFnZUZ1bmN0aW9u
SW5mbyhMb2FkUkdCMTZGVG9SR0I5RTUsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAg
bG9hZE1hcFtHTF9IQUxGX0ZMT0FUX09FU10gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFJH
QjE2RlRvUkdCOUU1LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xf
RkxPQVRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRSR0IzMkZUb1JHQjlFNSwgdHJ1ZSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0lOVF81XzlfOV85
X1JFVl0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdWludCwxPiwgZmFs
c2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAg
ICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9u
c01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBHTF9SR0JBOgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9VTktOT1dO
OgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0
ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0g
W10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBb
R0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2Fk
RnVuY3Rpb24sIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJ
R05FRF9TSE9SVF80XzRfNF80XSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxv
YWRGdW5jdGlvbiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VO
U0lHTkVEX1NIT1JUXzVfNV81XzFdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxl
TG9hZEZ1bmN0aW9uLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2Fk
TWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMg
Y29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlv
bnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwg
TG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAg
bG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNo
YWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFw
W0dMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVh
Y2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRN
YXBbR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5y
ZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9SR0JBMTZGOgotICAgICAgICB7Ci0g
ICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQ6Ci0gICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBs
b2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9GTE9BVF0gPSBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8oTG9hZDMyRlRvMTZGPDQ+LCB0cnVlKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGxvYWRNYXBbR0xfSEFMRl9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8o
TG9hZFRvTmF0aXZlPEdMaGFsZiw0PiwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAgICAg
bG9hZE1hcFtHTF9IQUxGX0ZMT0FUX09FU10gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRv
TmF0aXZlPEdMaGFsZiw0PiwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9SR0JBMTZJOgotICAgICAgICB7Ci0gICAgICAg
ICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVDoKLSAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1NIT1JUXSA9IExvYWRJbWFnZUZ1
bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0xzaG9ydCw0PiwgZmFsc2UpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9SR0JBMTZVSToK
LSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQ6Ci0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjpt
YXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVu
Y3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9V
TlNJR05FRF9TSE9SVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdXNo
b3J0LDQ+LCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsK
LSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBs
b2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgICBjYXNlIEdMX1JHQkEzMkY6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRj
aCAoZHhnaUZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVDoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9u
SW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX0ZMT0FUXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5m
byhMb2FkVG9OYXRpdmU8R0xmbG9hdCw0PiwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9SR0JBMzJJOgotICAgICAgICB7
Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVDoKLSAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0s
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+
IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX0lOVF0gPSBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMaW50LDQ+LCBmYWxzZSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgp
OwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX1JHQkEz
MlVJOgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlO
VDoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBz
dGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9
IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFw
W0dMX1VOU0lHTkVEX0lOVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdM
dWludCw0PiwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7
Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBHTF9SR0JBNDoKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNo
IChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfQjRHNFI0QTRfVU5PUk06Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+
IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAg
ICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80XSA9IExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbyhMb2FkUkdCQTRUb0FSR0I0LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk06Ci0gICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8
R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rp
b25JbmZvPiBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJ
R05FRF9TSE9SVF80XzRfNF80XSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkUkdCQTRUb1JH
QkE4LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURf
QllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdWJ5dGUsND4sIGZh
bHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAg
ICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlv
bnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgR0xfUkdCQTg6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1h
dCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhC
OEE4X1VOT1JNOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rp
b25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0s
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRv
TmF0aXZlPEdMdWJ5dGUsND4sIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBsb2FkTWFwOwotICAgICAgICAgICAgICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfUkdCQThJOgotICAgICAgICB7Ci0gICAgICAg
ICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5UOgotICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVu
Y3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlv
bkluZm8oTG9hZFRvTmF0aXZlPEdMYnl0ZSw0PiwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9SR0JBOFVJOgotICAgICAg
ICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5UOgotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwg
TG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4g
bG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllU
RV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdWJ5dGUsND4sIGZhbHNl
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOwotICAgICAgICAgICAg
ICAgICAgICB9KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNN
YXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgR0xfUkdCQThfU05PUk06Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZv
cm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4
RzhCOEE4X1NOT1JNOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVu
Y3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVu
dW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGxvYWRNYXBbR0xfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZl
PEdMYnl0ZSw0PiwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRN
YXA7Ci0gICAgICAgICAgICAgICAgICAgIH0oKTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbG9hZEZ1bmN0aW9uc01hcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBHTF9TUkdCODoKLSAgICAgICAgewotICAgICAgICAgICAgc3dp
dGNoIChkeGdpRm9ybWF0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQjoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0
aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZEltYWdl
RnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTNUbzQ8R0x1Ynl0ZSwweEZGPiwgdHJ1ZSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAg
fSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX1NS
R0I4X0FMUEhBODoKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThf
VU5PUk1fU1JHQjoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0
aW9uc01hcCA9IFtdKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVt
LCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRU
b05hdGl2ZTxHTHVieXRlLDQ+LCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX1NURU5DSUxfSU5ERVg4OgotICAgICAgICB7
Ci0gICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9VTktOT1dOOgotICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdl
RnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4
X1VJTlRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVuaW1wbGVtZW50ZWRMb2FkRnVuY3Rpb24s
IHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtEWEdJX0ZPUk1BVF9SMjRH
OF9UWVBFTEVTU10gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5pbXBsZW1lbnRlZExvYWRGdW5j
dGlvbiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKLSAg
ICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2Fk
RnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0
ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0g
W10oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBb
RFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVu
aW1wbGVtZW50ZWRMb2FkRnVuY3Rpb24sIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAg
bG9hZE1hcFtEWEdJX0ZPUk1BVF9SMjRHOF9UWVBFTEVTU10gPSBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8oVW5pbXBsZW1lbnRlZExvYWRGdW5jdGlvbiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbG9hZE1hcDsKLSAgICAgICAgICAgICAgICAgICAgfSgpOwotCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5m
bz4gZW1wdHlMb2FkRnVuY3Rpb25zTWFwOwotICAgICAgICAgICAgcmV0dXJuIGVtcHR5TG9hZEZ1
bmN0aW9uc01hcDsKLSAgICAgICAgfQotICAgIH0KLSAgICAvLyBjbGFuZy1mb3JtYXQgb24KLQot
fSAgLy8gR2V0TG9hZEZ1bmN0aW9uc01hcAotCi19ICAvLyBuYW1lc3BhY2UgZDNkMTEKLQotfSAg
Ly8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFfdXRpbHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
cmVuZGVyZXIxMV91dGlscy5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvcmVuZGVyZXIxMV91dGls
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDIxMyArMjYsOCBAQAogbmFtZXNwYWNlIHJ4CiB7
CiAKLW5hbWVzcGFjZSBnbF9kM2QxMQotewotCi1EM0QxMV9CTEVORCBDb252ZXJ0QmxlbmRGdW5j
KEdMZW51bSBnbEJsZW5kLCBib29sIGlzQWxwaGEpCi17Ci0gICAgRDNEMTFfQkxFTkQgZDNkQmxl
bmQgPSBEM0QxMV9CTEVORF9aRVJPOwotCi0gICAgc3dpdGNoIChnbEJsZW5kKQotICAgIHsKLSAg
ICAgIGNhc2UgR0xfWkVSTzogICAgICAgICAgICAgICAgICAgICBkM2RCbGVuZCA9IEQzRDExX0JM
RU5EX1pFUk87ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9PTkU6ICAgICAg
ICAgICAgICAgICAgICAgIGQzZEJsZW5kID0gRDNEMTFfQkxFTkRfT05FOyAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1NSQ19DT0xPUjogICAgICAgICAgICAgICAgZDNkQmxl
bmQgPSAoaXNBbHBoYSA/IEQzRDExX0JMRU5EX1NSQ19BTFBIQSA6IEQzRDExX0JMRU5EX1NSQ19D
T0xPUik7ICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfT05FX01JTlVTX1NSQ19DT0xP
UjogICAgICBkM2RCbGVuZCA9IChpc0FscGhhID8gRDNEMTFfQkxFTkRfSU5WX1NSQ19BTFBIQSA6
IEQzRDExX0JMRU5EX0lOVl9TUkNfQ09MT1IpOyAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9EU1Rf
Q09MT1I6ICAgICAgICAgICAgICAgIGQzZEJsZW5kID0gKGlzQWxwaGEgPyBEM0QxMV9CTEVORF9E
RVNUX0FMUEhBIDogRDNEMTFfQkxFTkRfREVTVF9DT0xPUik7ICAgICAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEdMX09ORV9NSU5VU19EU1RfQ09MT1I6ICAgICAgZDNkQmxlbmQgPSAoaXNBbHBoYSA/
IEQzRDExX0JMRU5EX0lOVl9ERVNUX0FMUEhBIDogRDNEMTFfQkxFTkRfSU5WX0RFU1RfQ09MT1Ip
OyBicmVhazsKLSAgICAgIGNhc2UgR0xfU1JDX0FMUEhBOiAgICAgICAgICAgICAgICBkM2RCbGVu
ZCA9IEQzRDExX0JMRU5EX1NSQ19BTFBIQTsgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBH
TF9PTkVfTUlOVVNfU1JDX0FMUEhBOiAgICAgIGQzZEJsZW5kID0gRDNEMTFfQkxFTkRfSU5WX1NS
Q19BTFBIQTsgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX0RTVF9BTFBIQTogICAgICAgICAg
ICAgICAgZDNkQmxlbmQgPSBEM0QxMV9CTEVORF9ERVNUX0FMUEhBOyAgICAgICAgICBicmVhazsK
LSAgICAgIGNhc2UgR0xfT05FX01JTlVTX0RTVF9BTFBIQTogICAgICBkM2RCbGVuZCA9IEQzRDEx
X0JMRU5EX0lOVl9ERVNUX0FMUEhBOyAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9DT05TVEFO
VF9DT0xPUjogICAgICAgICAgIGQzZEJsZW5kID0gRDNEMTFfQkxFTkRfQkxFTkRfRkFDVE9SOyAg
ICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUjogZDNk
QmxlbmQgPSBEM0QxMV9CTEVORF9JTlZfQkxFTkRfRkFDVE9SOyAgICBicmVhazsKLSAgICAgIGNh
c2UgR0xfQ09OU1RBTlRfQUxQSEE6ICAgICAgICAgICBkM2RCbGVuZCA9IEQzRDExX0JMRU5EX0JM
RU5EX0ZBQ1RPUjsgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfQ09OU1RB
TlRfQUxQSEE6IGQzZEJsZW5kID0gRDNEMTFfQkxFTkRfSU5WX0JMRU5EX0ZBQ1RPUjsgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEdMX1NSQ19BTFBIQV9TQVRVUkFURTogICAgICAgZDNkQmxlbmQgPSBE
M0QxMV9CTEVORF9TUkNfQUxQSEFfU0FUOyAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6IFVO
UkVBQ0hBQkxFKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGQzZEJsZW5kOwotfQotCi1EM0QxMV9C
TEVORF9PUCBDb252ZXJ0QmxlbmRPcChHTGVudW0gZ2xCbGVuZE9wKQotewotICAgIEQzRDExX0JM
RU5EX09QIGQzZEJsZW5kT3AgPSBEM0QxMV9CTEVORF9PUF9BREQ7Ci0KLSAgICBzd2l0Y2ggKGds
QmxlbmRPcCkKLSAgICB7Ci0gICAgICBjYXNlIEdMX0ZVTkNfQUREOiAgICAgICAgICAgICAgZDNk
QmxlbmRPcCA9IEQzRDExX0JMRU5EX09QX0FERDsgICAgICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBHTF9GVU5DX1NVQlRSQUNUOiAgICAgICAgIGQzZEJsZW5kT3AgPSBEM0QxMV9CTEVORF9PUF9T
VUJUUkFDVDsgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNU
OiBkM2RCbGVuZE9wID0gRDNEMTFfQkxFTkRfT1BfUkVWX1NVQlRSQUNUOyAgYnJlYWs7Ci0gICAg
ICBjYXNlIEdMX01JTjogICAgICAgICAgICAgICAgICAgZDNkQmxlbmRPcCA9IEQzRDExX0JMRU5E
X09QX01JTjsgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9NQVg6ICAgICAgICAgICAg
ICAgICAgIGQzZEJsZW5kT3AgPSBEM0QxMV9CTEVORF9PUF9NQVg7ICAgICAgICAgICBicmVhazsK
LSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGQzZEJs
ZW5kT3A7Ci19Ci0KLVVJTlQ4IENvbnZlcnRDb2xvck1hc2soYm9vbCByZWQsIGJvb2wgZ3JlZW4s
IGJvb2wgYmx1ZSwgYm9vbCBhbHBoYSkKLXsKLSAgICBVSU5UOCBtYXNrID0gMDsKLSAgICBpZiAo
cmVkKQotICAgIHsKLSAgICAgICAgbWFzayB8PSBEM0QxMV9DT0xPUl9XUklURV9FTkFCTEVfUkVE
OwotICAgIH0KLSAgICBpZiAoZ3JlZW4pCi0gICAgewotICAgICAgICBtYXNrIHw9IEQzRDExX0NP
TE9SX1dSSVRFX0VOQUJMRV9HUkVFTjsKLSAgICB9Ci0gICAgaWYgKGJsdWUpCi0gICAgewotICAg
ICAgICBtYXNrIHw9IEQzRDExX0NPTE9SX1dSSVRFX0VOQUJMRV9CTFVFOwotICAgIH0KLSAgICBp
ZiAoYWxwaGEpCi0gICAgewotICAgICAgICBtYXNrIHw9IEQzRDExX0NPTE9SX1dSSVRFX0VOQUJM
RV9BTFBIQTsKLSAgICB9Ci0gICAgcmV0dXJuIG1hc2s7Ci19Ci0KLUQzRDExX0NVTExfTU9ERSBD
b252ZXJ0Q3VsbE1vZGUoYm9vbCBjdWxsRW5hYmxlZCwgR0xlbnVtIGN1bGxNb2RlKQotewotICAg
IEQzRDExX0NVTExfTU9ERSBjdWxsID0gRDNEMTFfQ1VMTF9OT05FOwotCi0gICAgaWYgKGN1bGxF
bmFibGVkKQotICAgIHsKLSAgICAgICAgc3dpdGNoIChjdWxsTW9kZSkKLSAgICAgICAgewotICAg
ICAgICAgIGNhc2UgR0xfRlJPTlQ6ICAgICAgICAgICAgY3VsbCA9IEQzRDExX0NVTExfRlJPTlQ7
ICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfQkFDSzogICAgICAgICAgICAgY3VsbCA9IEQz
RDExX0NVTExfQkFDSzsgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfRlJPTlRfQU5EX0JB
Q0s6ICAgY3VsbCA9IEQzRDExX0NVTExfTk9ORTsgICAgIGJyZWFrOwotICAgICAgICAgIGRlZmF1
bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAg
ICAgICAgY3VsbCA9IEQzRDExX0NVTExfTk9ORTsKLSAgICB9Ci0KLSAgICByZXR1cm4gY3VsbDsK
LX0KLQotRDNEMTFfQ09NUEFSSVNPTl9GVU5DIENvbnZlcnRDb21wYXJpc29uKEdMZW51bSBjb21w
YXJpc29uKQotewotICAgIEQzRDExX0NPTVBBUklTT05fRlVOQyBkM2RDb21wID0gRDNEMTFfQ09N
UEFSSVNPTl9ORVZFUjsKLSAgICBzd2l0Y2ggKGNvbXBhcmlzb24pCi0gICAgewotICAgICAgY2Fz
ZSBHTF9ORVZFUjogICAgZDNkQ29tcCA9IEQzRDExX0NPTVBBUklTT05fTkVWRVI7ICAgICAgICAg
ICBicmVhazsKLSAgICAgIGNhc2UgR0xfQUxXQVlTOiAgIGQzZENvbXAgPSBEM0QxMV9DT01QQVJJ
U09OX0FMV0FZUzsgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX0xFU1M6ICAgICBkM2RD
b21wID0gRDNEMTFfQ09NUEFSSVNPTl9MRVNTOyAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBHTF9MRVFVQUw6ICAgZDNkQ29tcCA9IEQzRDExX0NPTVBBUklTT05fTEVTU19FUVVBTDsgICAg
ICBicmVhazsKLSAgICAgIGNhc2UgR0xfRVFVQUw6ICAgIGQzZENvbXAgPSBEM0QxMV9DT01QQVJJ
U09OX0VRVUFMOyAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX0dSRUFURVI6ICBkM2RD
b21wID0gRDNEMTFfQ09NUEFSSVNPTl9HUkVBVEVSOyAgICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBHTF9HRVFVQUw6ICAgZDNkQ29tcCA9IEQzRDExX0NPTVBBUklTT05fR1JFQVRFUl9FUVVBTDsg
ICBicmVhazsKLSAgICAgIGNhc2UgR0xfTk9URVFVQUw6IGQzZENvbXAgPSBEM0QxMV9DT01QQVJJ
U09OX05PVF9FUVVBTDsgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgp
OwotICAgIH0KLQotICAgIHJldHVybiBkM2RDb21wOwotfQotCi1EM0QxMV9ERVBUSF9XUklURV9N
QVNLIENvbnZlcnREZXB0aE1hc2soYm9vbCBkZXB0aFdyaXRlRW5hYmxlZCkKLXsKLSAgICByZXR1
cm4gZGVwdGhXcml0ZUVuYWJsZWQgPyBEM0QxMV9ERVBUSF9XUklURV9NQVNLX0FMTCA6IEQzRDEx
X0RFUFRIX1dSSVRFX01BU0tfWkVSTzsKLX0KLQotVUlOVDggQ29udmVydFN0ZW5jaWxNYXNrKEdM
dWludCBzdGVuY2lsbWFzaykKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VUlOVDg+KHN0ZW5j
aWxtYXNrKTsKLX0KLQotRDNEMTFfU1RFTkNJTF9PUCBDb252ZXJ0U3RlbmNpbE9wKEdMZW51bSBz
dGVuY2lsT3ApCi17Ci0gICAgRDNEMTFfU1RFTkNJTF9PUCBkM2RTdGVuY2lsT3AgPSBEM0QxMV9T
VEVOQ0lMX09QX0tFRVA7Ci0KLSAgICBzd2l0Y2ggKHN0ZW5jaWxPcCkKLSAgICB7Ci0gICAgICBj
YXNlIEdMX1pFUk86ICAgICAgZDNkU3RlbmNpbE9wID0gRDNEMTFfU1RFTkNJTF9PUF9aRVJPOyAg
ICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9LRUVQOiAgICAgIGQzZFN0ZW5jaWxPcCA9IEQzRDEx
X1NURU5DSUxfT1BfS0VFUDsgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfUkVQTEFDRTogICBk
M2RTdGVuY2lsT3AgPSBEM0QxMV9TVEVOQ0lMX09QX1JFUExBQ0U7ICAgYnJlYWs7Ci0gICAgICBj
YXNlIEdMX0lOQ1I6ICAgICAgZDNkU3RlbmNpbE9wID0gRDNEMTFfU1RFTkNJTF9PUF9JTkNSX1NB
VDsgIGJyZWFrOwotICAgICAgY2FzZSBHTF9ERUNSOiAgICAgIGQzZFN0ZW5jaWxPcCA9IEQzRDEx
X1NURU5DSUxfT1BfREVDUl9TQVQ7ICBicmVhazsKLSAgICAgIGNhc2UgR0xfSU5WRVJUOiAgICBk
M2RTdGVuY2lsT3AgPSBEM0QxMV9TVEVOQ0lMX09QX0lOVkVSVDsgICAgYnJlYWs7Ci0gICAgICBj
YXNlIEdMX0lOQ1JfV1JBUDogZDNkU3RlbmNpbE9wID0gRDNEMTFfU1RFTkNJTF9PUF9JTkNSOyAg
ICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9ERUNSX1dSQVA6IGQzZFN0ZW5jaWxPcCA9IEQzRDEx
X1NURU5DSUxfT1BfREVDUjsgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxF
KCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGQzZFN0ZW5jaWxPcDsKLX0KLQotRDNEMTFfRklMVEVS
IENvbnZlcnRGaWx0ZXIoR0xlbnVtIG1pbkZpbHRlciwgR0xlbnVtIG1hZ0ZpbHRlciwgZmxvYXQg
bWF4QW5pc290cm9weSwgR0xlbnVtIGNvbXBhcmlzb25Nb2RlKQotewotICAgIGJvb2wgY29tcGFy
aXNvbiA9IGNvbXBhcmlzb25Nb2RlICE9IEdMX05PTkU7Ci0KLSAgICBpZiAobWF4QW5pc290cm9w
eSA+IDEuMGYpCi0gICAgewotICAgICAgICByZXR1cm4gRDNEMTFfRU5DT0RFX0FOSVNPVFJPUElD
X0ZJTFRFUihzdGF0aWNfY2FzdDxEM0QxMV9DT01QQVJJU09OX0ZVTkM+KGNvbXBhcmlzb24pKTsK
LSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgRDNEMTFfRklMVEVSX1RZUEUgZHhNaW4g
PSBEM0QxMV9GSUxURVJfVFlQRV9QT0lOVDsKLSAgICAgICAgRDNEMTFfRklMVEVSX1RZUEUgZHhN
aXAgPSBEM0QxMV9GSUxURVJfVFlQRV9QT0lOVDsKLSAgICAgICAgc3dpdGNoIChtaW5GaWx0ZXIp
Ci0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX05FQVJFU1Q6ICAgICAgICAgICAgICAgIGR4
TWluID0gRDNEMTFfRklMVEVSX1RZUEVfUE9JTlQ7ICBkeE1pcCA9IEQzRDExX0ZJTFRFUl9UWVBF
X1BPSU5UOyAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9MSU5FQVI6ICAgICAgICAgICAgICAg
ICBkeE1pbiA9IEQzRDExX0ZJTFRFUl9UWVBFX0xJTkVBUjsgZHhNaXAgPSBEM0QxMV9GSUxURVJf
VFlQRV9QT0lOVDsgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfTkVBUkVTVF9NSVBNQVBfTkVB
UkVTVDogZHhNaW4gPSBEM0QxMV9GSUxURVJfVFlQRV9QT0lOVDsgIGR4TWlwID0gRDNEMTFfRklM
VEVSX1RZUEVfUE9JTlQ7ICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX0xJTkVBUl9NSVBNQVBf
TkVBUkVTVDogIGR4TWluID0gRDNEMTFfRklMVEVSX1RZUEVfTElORUFSOyBkeE1pcCA9IEQzRDEx
X0ZJTFRFUl9UWVBFX1BPSU5UOyAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9ORUFSRVNUX01J
UE1BUF9MSU5FQVI6ICBkeE1pbiA9IEQzRDExX0ZJTFRFUl9UWVBFX1BPSU5UOyAgZHhNaXAgPSBE
M0QxMV9GSUxURVJfVFlQRV9MSU5FQVI7IGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfTElORUFS
X01JUE1BUF9MSU5FQVI6ICAgZHhNaW4gPSBEM0QxMV9GSUxURVJfVFlQRV9MSU5FQVI7IGR4TWlw
ID0gRDNEMTFfRklMVEVSX1RZUEVfTElORUFSOyBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OiAg
ICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBEM0QxMV9GSUxURVJfVFlQRSBkeE1hZyA9IEQzRDExX0ZJTFRFUl9UWVBFX1BPSU5UOwotICAg
ICAgICBzd2l0Y2ggKG1hZ0ZpbHRlcikKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfTkVB
UkVTVDogZHhNYWcgPSBEM0QxMV9GSUxURVJfVFlQRV9QT0lOVDsgIGJyZWFrOwotICAgICAgICAg
IGNhc2UgR0xfTElORUFSOiAgZHhNYWcgPSBEM0QxMV9GSUxURVJfVFlQRV9MSU5FQVI7IGJyZWFr
OwotICAgICAgICAgIGRlZmF1bHQ6ICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHJldHVybiBEM0QxMV9FTkNPREVfQkFTSUNfRklMVEVSKGR4TWluLCBkeE1hZywg
ZHhNaXAsIHN0YXRpY19jYXN0PEQzRDExX0NPTVBBUklTT05fRlVOQz4oY29tcGFyaXNvbikpOwot
ICAgIH0KLX0KLQotRDNEMTFfVEVYVFVSRV9BRERSRVNTX01PREUgQ29udmVydFRleHR1cmVXcmFw
KEdMZW51bSB3cmFwKQotewotICAgIHN3aXRjaCAod3JhcCkKLSAgICB7Ci0gICAgICBjYXNlIEdM
X1JFUEVBVDogICAgICAgICAgcmV0dXJuIEQzRDExX1RFWFRVUkVfQUREUkVTU19XUkFQOwotICAg
ICAgY2FzZSBHTF9DTEFNUF9UT19FREdFOiAgIHJldHVybiBEM0QxMV9URVhUVVJFX0FERFJFU1Nf
Q0xBTVA7Ci0gICAgICBjYXNlIEdMX01JUlJPUkVEX1JFUEVBVDogcmV0dXJuIEQzRDExX1RFWFRV
UkVfQUREUkVTU19NSVJST1I7Ci0gICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gRDNEMTFfVEVYVFVSRV9BRERSRVNTX1dSQVA7
Ci19Ci0KLUQzRDExX1FVRVJZIENvbnZlcnRRdWVyeVR5cGUoR0xlbnVtIHF1ZXJ5VHlwZSkKLXsK
LSAgICBzd2l0Y2ggKHF1ZXJ5VHlwZSkKLSAgICB7Ci0gICAgICBjYXNlIEdMX0FOWV9TQU1QTEVT
X1BBU1NFRF9FWFQ6Ci0gICAgICBjYXNlIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJ
VkVfRVhUOiAgIHJldHVybiBEM0QxMV9RVUVSWV9PQ0NMVVNJT047Ci0gICAgICBjYXNlIEdMX1RS
QU5TRk9STV9GRUVEQkFDS19QUklNSVRJVkVTX1dSSVRURU46IHJldHVybiBEM0QxMV9RVUVSWV9T
T19TVEFUSVNUSUNTOwotICAgICAgY2FzZSBHTF9USU1FX0VMQVBTRURfRVhUOgotICAgICAgICAg
IC8vIFR3byBpbnRlcm5hbCBxdWVyaWVzIGFyZSBhbHNvIGNyZWF0ZWQgZm9yIGJlZ2luL2VuZCB0
aW1lc3RhbXBzCi0gICAgICAgICAgcmV0dXJuIEQzRDExX1FVRVJZX1RJTUVTVEFNUF9ESVNKT0lO
VDsKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEQzRDExX1FVRVJZX0VWRU5UOwotICAgIH0KLX0KLQotfSAgLy8gbmFtZXNwYWNlIGds
X2QzZDExCi0KIG5hbWVzcGFjZSBkM2QxMV9nbAogewotCiBuYW1lc3BhY2UKIHsKIApAQCAtMjQx
LDggKzM2LDcgQEAKIHsKICAgcHVibGljOgogICAgIERYR0lTdXBwb3J0SGVscGVyKElEM0QxMURl
dmljZSAqZGV2aWNlLCBEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCi0gICAgICAgIDog
bURldmljZShkZXZpY2UpLAotICAgICAgICAgIG1GZWF0dXJlTGV2ZWwoZmVhdHVyZUxldmVsKQor
ICAgICAgICA6IG1EZXZpY2UoZGV2aWNlKSwgbUZlYXR1cmVMZXZlbChmZWF0dXJlTGV2ZWwpCiAg
ICAgewogICAgIH0KIApAQCAtMjc3LDc0ICs3MSwxNSBAQAogICAgIEQzRF9GRUFUVVJFX0xFVkVM
IG1GZWF0dXJlTGV2ZWw7CiB9OwogCi19IC8vIGFub255bW91cyBuYW1lc3BhY2UKLQotdW5zaWdu
ZWQgaW50IEdldFJlc2VydmVkVmVydGV4VW5pZm9ybVZlY3RvcnMoRDNEX0ZFQVRVUkVfTEVWRUwg
ZmVhdHVyZUxldmVsKQorZ2w6OlRleHR1cmVDYXBzIEdlbmVyYXRlVGV4dHVyZUZvcm1hdENhcHMo
R0xpbnQgbWF4Q2xpZW50VmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIElEM0QxMURldmljZSAqZGV2aWNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVuZGVyZXIxMURldmljZUNhcHMgJnJl
bmRlcmVyMTFEZXZpY2VDYXBzKQogewotICAgIHN3aXRjaCAoZmVhdHVyZUxldmVsKQotICAgIHsK
LSAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8xOgotICAgICAgICBjYXNlIEQzRF9G
RUFUVVJFX0xFVkVMXzExXzA6Ci0gICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToK
LSAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOgotICAgICAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzM6Ci0gICAgICAgIGNhc2Ug
RDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgotICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlf
MToKLSAgICAgICAgICAgIHJldHVybiAzOyAgLy8gZHhfVmlld0FkanVzdCwgZHhfVmlld0Nvb3Jk
cyBhbmQgZHhfVmlld1NjYWxlCi0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci19Ci0KLXVuc2lnbmVkIGlu
dCBHZXRSZXNlcnZlZEZyYWdtZW50VW5pZm9ybVZlY3RvcnMoRDNEX0ZFQVRVUkVfTEVWRUwgZmVh
dHVyZUxldmVsKQotewotICAgIHN3aXRjaCAoZmVhdHVyZUxldmVsKQotICAgIHsKLSAgICAgICAg
Y2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8xOgotICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xF
VkVMXzExXzA6Ci0gICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKLSAgICAgICAg
Y2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOgotICAgICAgICAgICAgcmV0dXJuIDA7Ci0KLSAg
ICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzM6Ci0gICAgICAgIGNhc2UgRDNEX0ZFQVRV
UkVfTEVWRUxfOV8yOgotICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMToKLSAgICAg
ICAgICAgIHJldHVybiAzOwotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotfQotCi1HTGludCBHZXRNYXhp
bXVtQ2xpZW50VmVyc2lvbihEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCi17Ci0gICAg
c3dpdGNoIChmZWF0dXJlTGV2ZWwpCi0gICAgewotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZF
TF8xMV8xOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOgotICAgICAgY2FzZSBE
M0RfRkVBVFVSRV9MRVZFTF8xMF8xOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8w
OiByZXR1cm4gMzsKLQotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzM6Ci0gICAgICBj
YXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMjoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxf
OV8xOiAgcmV0dXJuIDI7Ci0KLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgcmV0
dXJuIDA7Ci0gICAgfQotfQotCi1zdGF0aWMgZ2w6OlRleHR1cmVDYXBzIEdlbmVyYXRlVGV4dHVy
ZUZvcm1hdENhcHMoR0xpbnQgbWF4Q2xpZW50VmVyc2lvbiwgR0xlbnVtIGludGVybmFsRm9ybWF0
LCBJRDNEMTFEZXZpY2UgKmRldmljZSwgY29uc3QgUmVuZGVyZXIxMURldmljZUNhcHMgJnJlbmRl
cmVyMTFEZXZpY2VDYXBzKQotewogICAgIGdsOjpUZXh0dXJlQ2FwcyB0ZXh0dXJlQ2FwczsKIAog
ICAgIERYR0lTdXBwb3J0SGVscGVyIHN1cHBvcnQoZGV2aWNlLCByZW5kZXJlcjExRGV2aWNlQ2Fw
cy5mZWF0dXJlTGV2ZWwpOwotICAgIGNvbnN0IGQzZDExOjpUZXh0dXJlRm9ybWF0ICZmb3JtYXRJ
bmZvID0KLSAgICAgICAgZDNkMTE6OkdldFRleHR1cmVGb3JtYXRJbmZvKGludGVybmFsRm9ybWF0
LCByZW5kZXJlcjExRGV2aWNlQ2Fwcyk7CisgICAgY29uc3QgZDNkMTE6OkZvcm1hdCAmZm9ybWF0
SW5mbyA9IGQzZDExOjpGb3JtYXQ6OkdldChpbnRlcm5hbEZvcm1hdCwgcmVuZGVyZXIxMURldmlj
ZUNhcHMpOwogCiAgICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZpbnRlcm5hbEZvcm1hdElu
Zm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGludGVybmFsRm9ybWF0KTsKIApAQCAtMzU4
LDIxICs5MywyMSBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgdGV4dHVyZUNhcHMudGV4dHVy
YWJsZSA9IHN1cHBvcnQucXVlcnkoZm9ybWF0SW5mby5mb3JtYXRTZXQtPnRleEZvcm1hdCwgdGV4
U3VwcG9ydE1hc2spOworICAgIHRleHR1cmVDYXBzLnRleHR1cmFibGUgPSBzdXBwb3J0LnF1ZXJ5
KGZvcm1hdEluZm8udGV4Rm9ybWF0LCB0ZXhTdXBwb3J0TWFzayk7CiAgICAgdGV4dHVyZUNhcHMu
ZmlsdGVyYWJsZSA9Ci0gICAgICAgIHN1cHBvcnQucXVlcnkoZm9ybWF0SW5mby5mb3JtYXRTZXQt
PnNydkZvcm1hdCwgRDNEMTFfRk9STUFUX1NVUFBPUlRfU0hBREVSX1NBTVBMRSk7CisgICAgICAg
IHN1cHBvcnQucXVlcnkoZm9ybWF0SW5mby5zcnZGb3JtYXQsIEQzRDExX0ZPUk1BVF9TVVBQT1JU
X1NIQURFUl9TQU1QTEUpOwogICAgIHRleHR1cmVDYXBzLnJlbmRlcmFibGUgPQotICAgICAgICAo
c3VwcG9ydC5xdWVyeShmb3JtYXRJbmZvLmZvcm1hdFNldC0+cnR2Rm9ybWF0LCBEM0QxMV9GT1JN
QVRfU1VQUE9SVF9SRU5ERVJfVEFSR0VUKSkgfHwKLSAgICAgICAgKHN1cHBvcnQucXVlcnkoZm9y
bWF0SW5mby5mb3JtYXRTZXQtPmRzdkZvcm1hdCwgRDNEMTFfRk9STUFUX1NVUFBPUlRfREVQVEhf
U1RFTkNJTCkpOworICAgICAgICAoc3VwcG9ydC5xdWVyeShmb3JtYXRJbmZvLnJ0dkZvcm1hdCwg
RDNEMTFfRk9STUFUX1NVUFBPUlRfUkVOREVSX1RBUkdFVCkpIHx8CisgICAgICAgIChzdXBwb3J0
LnF1ZXJ5KGZvcm1hdEluZm8uZHN2Rm9ybWF0LCBEM0QxMV9GT1JNQVRfU1VQUE9SVF9ERVBUSF9T
VEVOQ0lMKSk7CiAKICAgICBEWEdJX0ZPUk1BVCByZW5kZXJGb3JtYXQgPSBEWEdJX0ZPUk1BVF9V
TktOT1dOOwotICAgIGlmIChmb3JtYXRJbmZvLmZvcm1hdFNldC0+ZHN2Rm9ybWF0ICE9IERYR0lf
Rk9STUFUX1VOS05PV04pCisgICAgaWYgKGZvcm1hdEluZm8uZHN2Rm9ybWF0ICE9IERYR0lfRk9S
TUFUX1VOS05PV04pCiAgICAgewotICAgICAgICByZW5kZXJGb3JtYXQgPSBmb3JtYXRJbmZvLmZv
cm1hdFNldC0+ZHN2Rm9ybWF0OworICAgICAgICByZW5kZXJGb3JtYXQgPSBmb3JtYXRJbmZvLmRz
dkZvcm1hdDsKICAgICB9Ci0gICAgZWxzZSBpZiAoZm9ybWF0SW5mby5mb3JtYXRTZXQtPnJ0dkZv
cm1hdCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dOKQorICAgIGVsc2UgaWYgKGZvcm1hdEluZm8ucnR2
Rm9ybWF0ICE9IERYR0lfRk9STUFUX1VOS05PV04pCiAgICAgewotICAgICAgICByZW5kZXJGb3Jt
YXQgPSBmb3JtYXRJbmZvLmZvcm1hdFNldC0+cnR2Rm9ybWF0OworICAgICAgICByZW5kZXJGb3Jt
YXQgPSBmb3JtYXRJbmZvLnJ0dkZvcm1hdDsKICAgICB9CiAgICAgaWYgKHJlbmRlckZvcm1hdCAh
PSBEWEdJX0ZPUk1BVF9VTktOT1dOICYmCiAgICAgICAgIHN1cHBvcnQucXVlcnkocmVuZGVyRm9y
bWF0LCBEM0QxMV9GT1JNQVRfU1VQUE9SVF9NVUxUSVNBTVBMRV9SRU5ERVJUQVJHRVQpKQpAQCAt
NDAwLDMxNCArMTM1LDQwNyBAQAogICAgIHJldHVybiB0ZXh0dXJlQ2FwczsKIH0KIAotc3RhdGlj
IGJvb2wgR2V0TlBPVFRleHR1cmVTdXBwb3J0KEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZl
bCkKK2Jvb2wgR2V0TlBPVFRleHR1cmVTdXBwb3J0KEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVM
ZXZlbCkKIHsKICAgICBzd2l0Y2ggKGZlYXR1cmVMZXZlbCkKICAgICB7Ci0gICAgICBjYXNlIEQz
RF9GRUFUVVJFX0xFVkVMXzExXzE6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6
Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6Ci0gICAgICBjYXNlIEQzRF9GRUFU
VVJFX0xFVkVMXzEwXzA6IHJldHVybiB0cnVlOworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xF
VkVMXzExXzE6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDoKKyAgICAgICAg
Y2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xF
VkVMXzEwXzA6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICAvLyBGcm9tIGh0
dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvZmY0
NzY4NzYuYXNweAotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzM6Ci0gICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzlfMjoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8x
OiAgcmV0dXJuIGZhbHNlOworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKKyAg
ICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRV
UkVfTEVWRUxfOV8xOgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICBkZWZhdWx0
OiBVTlJFQUNIQUJMRSgpOyAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogfQogCi1zdGF0aWMgZmxvYXQgR2V0TWF4aW11bUFuaXNvdHJvcHkoRDNEX0ZFQVRVUkVfTEVW
RUwgZmVhdHVyZUxldmVsKQorZmxvYXQgR2V0TWF4aW11bUFuaXNvdHJvcHkoRDNEX0ZFQVRVUkVf
TEVWRUwgZmVhdHVyZUxldmVsKQogewogICAgIHN3aXRjaCAoZmVhdHVyZUxldmVsKQogICAgIHsK
LSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRV
UkVfTEVWRUxfMTFfMDogcmV0dXJuIEQzRDExX01BWF9NQVhBTklTT1RST1BZOworICAgICAgICBj
YXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVW
RUxfMTFfMDoKKyAgICAgICAgICAgIHJldHVybiBEM0QxMV9NQVhfTUFYQU5JU09UUk9QWTsKIAot
ICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgotICAgICAgY2FzZSBEM0RfRkVBVFVS
RV9MRVZFTF8xMF8wOiByZXR1cm4gRDNEMTBfTUFYX01BWEFOSVNPVFJPUFk7CisgICAgICAgIGNh
c2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZF
TF8xMF8wOgorICAgICAgICAgICAgcmV0dXJuIEQzRDEwX01BWF9NQVhBTklTT1RST1BZOwogCiAg
ICAgICAgIC8vIEZyb20gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dp
bmRvd3MvZGVza3RvcC9mZjQ3Njg3Ni5hc3B4Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVM
XzlfMzoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8yOiAgcmV0dXJuIDE2OworICAg
ICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVS
RV9MRVZFTF85XzI6CisgICAgICAgICAgICByZXR1cm4gMTY7CiAKLSAgICAgIGNhc2UgRDNEX0ZF
QVRVUkVfTEVWRUxfOV8xOiAgcmV0dXJuIEQzRF9GTDlfMV9ERUZBVUxUX01BWF9BTklTT1RST1BZ
OworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMToKKyAgICAgICAgICAgIHJldHVy
biBEM0RfRkw5XzFfREVGQVVMVF9NQVhfQU5JU09UUk9QWTsKIAotICAgICAgZGVmYXVsdDogVU5S
RUFDSEFCTEUoKTsgICAgICByZXR1cm4gMDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CiB9CiAKLXN0YXRp
YyBib29sIEdldE9jY2x1c2lvblF1ZXJ5U3VwcG9ydChEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJl
TGV2ZWwpCitib29sIEdldE9jY2x1c2lvblF1ZXJ5U3VwcG9ydChEM0RfRkVBVFVSRV9MRVZFTCBm
ZWF0dXJlTGV2ZWwpCiB7CiAgICAgc3dpdGNoIChmZWF0dXJlTGV2ZWwpCiAgICAgewotICAgICAg
Y2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8xOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZF
TF8xMV8wOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgotICAgICAgY2FzZSBE
M0RfRkVBVFVSRV9MRVZFTF8xMF8wOiByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSBEM0RfRkVB
VFVSRV9MRVZFTF8xMV8xOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6Cisg
ICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKKyAgICAgICAgY2FzZSBEM0RfRkVB
VFVSRV9MRVZFTF8xMF8wOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgLy8g
RnJvbSBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNr
dG9wL2ZmNDc2MTUwLmFzcHggSUQzRDExRGV2aWNlOjpDcmVhdGVRdWVyeQotICAgICAgY2FzZSBE
M0RfRkVBVFVSRV9MRVZFTF85XzM6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMjog
IHJldHVybiB0cnVlOwotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6ICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIC8vIEZyb20gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9s
aWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9mZjQ3NjE1MC5hc3B4CisgICAgICAgIC8vIElEM0QxMURl
dmljZTo6Q3JlYXRlUXVlcnkKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzM6Cisg
ICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8xOgorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBHZXRFdmVudFF1
ZXJ5U3VwcG9ydChEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCitib29sIEdldEV2ZW50
UXVlcnlTdXBwb3J0KEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKIHsKLSAgICAvLyBG
cm9tIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0
b3AvZmY0NzYxNTAuYXNweCBJRDNEMTFEZXZpY2U6OkNyZWF0ZVF1ZXJ5CisgICAgLy8gRnJvbSBo
dHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2Zm
NDc2MTUwLmFzcHgKKyAgICAvLyBJRDNEMTFEZXZpY2U6OkNyZWF0ZVF1ZXJ5CiAKICAgICBzd2l0
Y2ggKGZlYXR1cmVMZXZlbCkKICAgICB7Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEx
XzE6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6Ci0gICAgICBjYXNlIEQzRF9G
RUFUVVJFX0xFVkVMXzEwXzE6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6Ci0g
ICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfOV8yOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6ICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8xOgorICAgICAgICBjYXNlIEQz
RF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBf
MToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOgorICAgICAgICBjYXNlIEQz
RF9GRUFUVVJFX0xFVkVMXzlfMzoKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6
CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8xOgorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9CiAKLXN0YXRpYyBib29sIEdldEluc3RhbmNpbmdT
dXBwb3J0KEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKK2Jvb2wgR2V0SW5zdGFuY2lu
Z1N1cHBvcnQoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQogewotICAgIC8vIEZyb20g
aHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9m
ZjQ3NjE1MC5hc3B4IElEM0QxMURldmljZTo6Q3JlYXRlSW5wdXRMYXlvdXQKKyAgICAvLyBGcm9t
IGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3Av
ZmY0NzYxNTAuYXNweAorICAgIC8vIElEM0QxMURldmljZTo6Q3JlYXRlSW5wdXRMYXlvdXQKIAog
ICAgIHN3aXRjaCAoZmVhdHVyZUxldmVsKQogICAgIHsKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfMTFfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDoKLSAgICAgIGNh
c2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxf
MTBfMDogcmV0dXJuIHRydWU7CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToK
KyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOgorICAgICAgICBjYXNlIEQzRF9G
RUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDoK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAvLyBGZWF0dXJlIExldmVsIDlfMyBz
dXBwb3J0cyBpbnN0YW5jaW5nLCBidXQgc2xvdCAwIGluIHRoZSBpbnB1dCBsYXlvdXQgbXVzdCBu
b3QgYmUgaW5zdGFuY2VkLgotICAgICAgLy8gRDNEOSBoYXMgYSBzaW1pbGFyIHJlc3RyaWN0aW9u
LCB3aGVyZSBzdHJlYW0gMCBtdXN0IG5vdCBiZSBpbnN0YW5jZWQuCi0gICAgICAvLyBUaGlzIHJl
c3RyaWN0aW9uIGNhbiBiZSB3b3JrZWQgYXJvdW5kIGJ5IHJlbWFwcGluZyBhbnkgbm9uLWluc3Rh
bmNlZCBzbG90IHRvIHNsb3QgMC4KLSAgICAgIC8vIFRoaXMgd29ya3MgYmVjYXVzZSBITFNMIHVz
ZXMgc2hhZGVyIHNlbWFudGljcyB0byBtYXRjaCB0aGUgdmVydGV4IGlucHV0cyB0byB0aGUgZWxl
bWVudHMgaW4gdGhlIGlucHV0IGxheW91dCwgcmF0aGVyIHRoYW4gdGhlIHNsb3RzLgotICAgICAg
Ly8gTm90ZSB0aGF0IHdlIG9ubHkgc3VwcG9ydCBpbnN0YW5jaW5nIHZpYSBBTkdMRV9pbnN0YW5j
ZWRfYXJyYXkgb24gOV8zLCBzaW5jZSA5XzMgZG9lc24ndCBzdXBwb3J0IE9wZW5HTCBFUyAzLjAK
LSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOiAgcmV0dXJuIHRydWU7CisgICAgICAg
IC8vIEZlYXR1cmUgTGV2ZWwgOV8zIHN1cHBvcnRzIGluc3RhbmNpbmcsIGJ1dCBzbG90IDAgaW4g
dGhlIGlucHV0IGxheW91dCBtdXN0IG5vdCBiZQorICAgICAgICAvLyBpbnN0YW5jZWQuCisgICAg
ICAgIC8vIEQzRDkgaGFzIGEgc2ltaWxhciByZXN0cmljdGlvbiwgd2hlcmUgc3RyZWFtIDAgbXVz
dCBub3QgYmUgaW5zdGFuY2VkLgorICAgICAgICAvLyBUaGlzIHJlc3RyaWN0aW9uIGNhbiBiZSB3
b3JrZWQgYXJvdW5kIGJ5IHJlbWFwcGluZyBhbnkgbm9uLWluc3RhbmNlZCBzbG90IHRvIHNsb3QK
KyAgICAgICAgLy8gMC4KKyAgICAgICAgLy8gVGhpcyB3b3JrcyBiZWNhdXNlIEhMU0wgdXNlcyBz
aGFkZXIgc2VtYW50aWNzIHRvIG1hdGNoIHRoZSB2ZXJ0ZXggaW5wdXRzIHRvIHRoZQorICAgICAg
ICAvLyBlbGVtZW50cyBpbiB0aGUgaW5wdXQgbGF5b3V0LCByYXRoZXIgdGhhbiB0aGUgc2xvdHMu
CisgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBvbmx5IHN1cHBvcnQgaW5zdGFuY2luZyB2aWEgQU5H
TEVfaW5zdGFuY2VkX2FycmF5IG9uIDlfMywgc2luY2UgOV8zCisgICAgICAgIC8vIGRvZXNuJ3Qg
c3VwcG9ydCBPcGVuR0wgRVMgMy4wCisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8z
OgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVW
RUxfOV8yOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6ICByZXR1cm4gZmFsc2U7
CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgorICAgICAgICBjYXNlIEQzRF9G
RUFUVVJFX0xFVkVMXzlfMToKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgZGVm
YXVsdDogVU5SRUFDSEFCTEUoKTsgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIH0KIAotc3RhdGljIGJvb2wgR2V0RnJhbWVidWZmZXJNdWx0aXNhbXBsZVN1cHBvcnQo
RDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQorYm9vbCBHZXRGcmFtZWJ1ZmZlck11bHRp
c2FtcGxlU3VwcG9ydChEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCiB7CiAgICAgc3dp
dGNoIChmZWF0dXJlTGV2ZWwpCiAgICAgewotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8x
MV8xOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOgotICAgICAgY2FzZSBEM0Rf
RkVBVFVSRV9MRVZFTF8xMF8xOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOiBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8xOgorICAgICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfMTBfMToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOgorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgot
ICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJF
X0xFVkVMXzlfMTogIHJldHVybiBmYWxzZTsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZF
TF85XzM6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgorICAgICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzlfMToKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
ICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIH0KIAotc3RhdGljIGJvb2wgR2V0RnJhbWVidWZmZXJCbGl0U3VwcG9ydChE
M0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCitib29sIEdldEZyYW1lYnVmZmVyQmxpdFN1
cHBvcnQoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQogewogICAgIHN3aXRjaCAoZmVh
dHVyZUxldmVsKQogICAgIHsKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKLSAg
ICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfMTBfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDogcmV0dXJuIHRy
dWU7CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKKyAgICAgICAgY2FzZSBE
M0RfRkVBVFVSRV9MRVZFTF8xMV8wOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEw
XzE6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDoKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogCi0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKLSAgICAgIGNh
c2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85
XzE6ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgor
ICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMjoKKyAgICAgICAgY2FzZSBEM0RfRkVB
VFVSRV9MRVZFTF85XzE6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgIGRlZmF1
bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiB9CiAKLXN0YXRpYyBib29sIEdldERlcml2YXRpdmVJbnN0cnVjdGlvblN1cHBvcnQoRDNE
X0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQorYm9vbCBHZXREZXJpdmF0aXZlSW5zdHJ1Y3Rp
b25TdXBwb3J0KEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKIHsKLSAgICAvLyBodHRw
Oi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2JiNTA5
NTg4LmFzcHggc3RhdGVzIHRoYXQgc2hhZGVyIG1vZGVsCisgICAgLy8gaHR0cDovL21zZG4ubWlj
cm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9iYjUwOTU4OC5hc3B4IHN0
YXRlcyB0aGF0CisgICAgLy8gc2hhZGVyIG1vZGVsCiAgICAgLy8gcHNfMl94IGlzIHJlcXVpcmVk
IGZvciB0aGUgZGR4IChhbmQgb3RoZXIgZGVyaXZhdGl2ZSBmdW5jdGlvbnMpLgogCi0gICAgLy8g
aHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9m
ZjQ3Njg3Ni5hc3B4IHN0YXRlcyB0aGF0IGZlYXR1cmUgbGV2ZWwKKyAgICAvLyBodHRwOi8vbXNk
bi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2ZmNDc2ODc2LmFz
cHggc3RhdGVzIHRoYXQKKyAgICAvLyBmZWF0dXJlIGxldmVsCiAgICAgLy8gOS4zIHN1cHBvcnRz
IHNoYWRlciBtb2RlbCBwc18yX3guCiAKICAgICBzd2l0Y2ggKGZlYXR1cmVMZXZlbCkKICAgICB7
Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6Ci0gICAgICBjYXNlIEQzRF9GRUFU
VVJFX0xFVkVMXzExXzA6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6Ci0gICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xF
VkVMXzlfMzogIHJldHVybiB0cnVlOwotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6
Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMTogIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8xOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJF
X0xFVkVMXzExXzA6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKKyAgICAg
ICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJF
X0xFVkVMXzlfMzoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBjYXNlIEQzRF9G
RUFUVVJFX0xFVkVMXzlfMjoKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9CiAKLXN0YXRpYyBi
b29sIEdldFNoYWRlclRleHR1cmVMT0RTdXBwb3J0KEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVM
ZXZlbCkKK2Jvb2wgR2V0U2hhZGVyVGV4dHVyZUxPRFN1cHBvcnQoRDNEX0ZFQVRVUkVfTEVWRUwg
ZmVhdHVyZUxldmVsKQogewogICAgIHN3aXRjaCAoZmVhdHVyZUxldmVsKQogICAgIHsKLSAgICAg
IGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVW
RUxfMTFfMDoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKLSAgICAgIGNhc2Ug
RDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDogcmV0dXJuIHRydWU7CisgICAgICAgIGNhc2UgRDNEX0ZF
QVRVUkVfTEVWRUxfMTFfMToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOgor
ICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICAgIGNhc2UgRDNEX0ZF
QVRVUkVfTEVWRUxfMTBfMDoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8y
OgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6ICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJF
X0xFVkVMXzlfMjoKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUo
KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9CiAKLXN0YXRpYyBzaXplX3Qg
R2V0TWF4aW11bVNpbXVsdGFuZW91c1JlbmRlclRhcmdldHMoRDNEX0ZFQVRVUkVfTEVWRUwgZmVh
dHVyZUxldmVsKQorc2l6ZV90IEdldE1heGltdW1TaW11bHRhbmVvdXNSZW5kZXJUYXJnZXRzKEQz
RF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKIHsKLSAgICAvLyBGcm9tIGh0dHA6Ly9tc2Ru
Lm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvZmY0NzYxNTAuYXNw
eCBJRDNEMTFEZXZpY2U6OkNyZWF0ZUlucHV0TGF5b3V0CisgICAgLy8gRnJvbSBodHRwOi8vbXNk
bi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2ZmNDc2MTUwLmFz
cHgKKyAgICAvLyBJRDNEMTFEZXZpY2U6OkNyZWF0ZUlucHV0TGF5b3V0CiAKICAgICBzd2l0Y2gg
KGZlYXR1cmVMZXZlbCkKICAgICB7Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6
Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6IHJldHVybiBEM0QxMV9TSU1VTFRB
TkVPVVNfUkVOREVSX1RBUkdFVF9DT1VOVDsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZF
TF8xMV8xOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICAgICAg
ICByZXR1cm4gRDNEMTFfU0lNVUxUQU5FT1VTX1JFTkRFUl9UQVJHRVRfQ09VTlQ7CiAKLSAgICAg
IGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVW
RUxfMTBfMDogcmV0dXJuIEQzRDEwX1NJTVVMVEFORU9VU19SRU5ERVJfVEFSR0VUX0NPVU5UOwor
ICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICAgIGNhc2UgRDNEX0ZF
QVRVUkVfTEVWRUxfMTBfMDoKKyAgICAgICAgICAgIHJldHVybiBEM0QxMF9TSU1VTFRBTkVPVVNf
UkVOREVSX1RBUkdFVF9DT1VOVDsKIAotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzM6
ICByZXR1cm4gRDNEX0ZMOV8zX1NJTVVMVEFORU9VU19SRU5ERVJfVEFSR0VUX0NPVU5UOwotICAg
ICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xF
VkVMXzlfMTogIHJldHVybiBEM0RfRkw5XzFfU0lNVUxUQU5FT1VTX1JFTkRFUl9UQVJHRVRfQ09V
TlQ7CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgorICAgICAgICAgICAgcmV0
dXJuIEQzRF9GTDlfM19TSU1VTFRBTkVPVVNfUkVOREVSX1RBUkdFVF9DT1VOVDsKKyAgICAgICAg
Y2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVW
RUxfOV8xOgorICAgICAgICAgICAgcmV0dXJuIEQzRF9GTDlfMV9TSU1VTFRBTkVPVVNfUkVOREVS
X1RBUkdFVF9DT1VOVDsKIAotICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgICAgICByZXR1
cm4gMDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAg
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiB9CiAKLXN0YXRpYyBzaXplX3QgR2V0TWF4aW11bTJE
VGV4dHVyZVNpemUoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQorc2l6ZV90IEdldE1h
eGltdW0yRFRleHR1cmVTaXplKEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKIHsKICAg
ICBzd2l0Y2ggKGZlYXR1cmVMZXZlbCkKICAgICB7Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xF
VkVMXzExXzE6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6IHJldHVybiBEM0Qx
MV9SRVFfVEVYVFVSRTJEX1VfT1JfVl9ESU1FTlNJT047CisgICAgICAgIGNhc2UgRDNEX0ZFQVRV
UkVfTEVWRUxfMTFfMToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOgorICAg
ICAgICAgICAgcmV0dXJuIEQzRDExX1JFUV9URVhUVVJFMkRfVV9PUl9WX0RJTUVOU0lPTjsKIAot
ICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgotICAgICAgY2FzZSBEM0RfRkVBVFVS
RV9MRVZFTF8xMF8wOiByZXR1cm4gRDNEMTBfUkVRX1RFWFRVUkUyRF9VX09SX1ZfRElNRU5TSU9O
OworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICAgIGNhc2UgRDNE
X0ZFQVRVUkVfTEVWRUxfMTBfMDoKKyAgICAgICAgICAgIHJldHVybiBEM0QxMF9SRVFfVEVYVFVS
RTJEX1VfT1JfVl9ESU1FTlNJT047CiAKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8z
OiAgcmV0dXJuIEQzRF9GTDlfM19SRVFfVEVYVFVSRTJEX1VfT1JfVl9ESU1FTlNJT047Ci0gICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMjoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVW
RUxfOV8xOiAgcmV0dXJuIEQzRF9GTDlfMV9SRVFfVEVYVFVSRTJEX1VfT1JfVl9ESU1FTlNJT047
CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgorICAgICAgICAgICAgcmV0dXJu
IEQzRF9GTDlfM19SRVFfVEVYVFVSRTJEX1VfT1JfVl9ESU1FTlNJT047CisgICAgICAgIGNhc2Ug
RDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlf
MToKKyAgICAgICAgICAgIHJldHVybiBEM0RfRkw5XzFfUkVRX1RFWFRVUkUyRF9VX09SX1ZfRElN
RU5TSU9OOwogCi0gICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyAgICAgIHJldHVybiAwOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIH0KIAotc3RhdGljIHNpemVfdCBHZXRNYXhpbXVtQ3ViZU1hcFRl
eHR1cmVTaXplKEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKK3NpemVfdCBHZXRNYXhp
bXVtQ3ViZU1hcFRleHR1cmVTaXplKEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKIHsK
ICAgICBzd2l0Y2ggKGZlYXR1cmVMZXZlbCkKICAgICB7Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJF
X0xFVkVMXzExXzE6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6IHJldHVybiBE
M0QxMV9SRVFfVEVYVFVSRUNVQkVfRElNRU5TSU9OOworICAgICAgICBjYXNlIEQzRF9GRUFUVVJF
X0xFVkVMXzExXzE6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDoKKyAgICAg
ICAgICAgIHJldHVybiBEM0QxMV9SRVFfVEVYVFVSRUNVQkVfRElNRU5TSU9OOwogCi0gICAgICBj
YXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVM
XzEwXzA6IHJldHVybiBEM0QxMF9SRVFfVEVYVFVSRUNVQkVfRElNRU5TSU9OOworICAgICAgICBj
YXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVW
RUxfMTBfMDoKKyAgICAgICAgICAgIHJldHVybiBEM0QxMF9SRVFfVEVYVFVSRUNVQkVfRElNRU5T
SU9OOwogCi0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzogIHJldHVybiBEM0RfRkw5
XzNfUkVRX1RFWFRVUkVDVUJFX0RJTUVOU0lPTjsKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVW
RUxfOV8yOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6ICByZXR1cm4gRDNEX0ZM
OV8xX1JFUV9URVhUVVJFQ1VCRV9ESU1FTlNJT047CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfOV8zOgorICAgICAgICAgICAgcmV0dXJuIEQzRF9GTDlfM19SRVFfVEVYVFVSRUNVQkVf
RElNRU5TSU9OOworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMjoKKyAgICAgICAg
Y2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6CisgICAgICAgICAgICByZXR1cm4gRDNEX0ZMOV8x
X1JFUV9URVhUVVJFQ1VCRV9ESU1FTlNJT047CiAKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxF
KCk7ICAgICAgcmV0dXJuIDA7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQogCi1zdGF0aWMgc2l6ZV90
IEdldE1heGltdW0yRFRleHR1cmVBcnJheVNpemUoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxl
dmVsKQorc2l6ZV90IEdldE1heGltdW0yRFRleHR1cmVBcnJheVNpemUoRDNEX0ZFQVRVUkVfTEVW
RUwgZmVhdHVyZUxldmVsKQogewogICAgIHN3aXRjaCAoZmVhdHVyZUxldmVsKQogICAgIHsKLSAg
ICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfMTFfMDogcmV0dXJuIEQzRDExX1JFUV9URVhUVVJFMkRfQVJSQVlfQVhJU19ESU1FTlNJ
T047CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKKyAgICAgICAgY2FzZSBE
M0RfRkVBVFVSRV9MRVZFTF8xMV8wOgorICAgICAgICAgICAgcmV0dXJuIEQzRDExX1JFUV9URVhU
VVJFMkRfQVJSQVlfQVhJU19ESU1FTlNJT047CiAKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVW
RUxfMTBfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDogcmV0dXJuIEQzRDEw
X1JFUV9URVhUVVJFMkRfQVJSQVlfQVhJU19ESU1FTlNJT047CisgICAgICAgIGNhc2UgRDNEX0ZF
QVRVUkVfTEVWRUxfMTBfMToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOgor
ICAgICAgICAgICAgcmV0dXJuIEQzRDEwX1JFUV9URVhUVVJFMkRfQVJSQVlfQVhJU19ESU1FTlNJ
T047CiAKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgotICAgICAgY2FzZSBEM0Rf
RkVBVFVSRV9MRVZFTF85XzI6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMTogIHJl
dHVybiAwOworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKKyAgICAgICAgY2Fz
ZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxf
OV8xOgorICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxF
KCk7ICAgICAgcmV0dXJuIDA7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQogCi1zdGF0aWMgc2l6ZV90
IEdldE1heGltdW0zRFRleHR1cmVTaXplKEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkK
K3NpemVfdCBHZXRNYXhpbXVtM0RUZXh0dXJlU2l6ZShEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJl
TGV2ZWwpCiB7CiAgICAgc3dpdGNoIChmZWF0dXJlTGV2ZWwpCiAgICAgewotICAgICAgY2FzZSBE
M0RfRkVBVFVSRV9MRVZFTF8xMV8xOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8w
OiByZXR1cm4gRDNEMTFfUkVRX1RFWFRVUkUzRF9VX1ZfT1JfV19ESU1FTlNJT047CisgICAgICAg
IGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF8xMV8wOgorICAgICAgICAgICAgcmV0dXJuIEQzRDExX1JFUV9URVhUVVJFM0RfVV9WX09S
X1dfRElNRU5TSU9OOwogCi0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6Ci0gICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6IHJldHVybiBEM0QxMF9SRVFfVEVYVFVSRTNE
X1VfVl9PUl9XX0RJTUVOU0lPTjsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8x
OgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6CisgICAgICAgICAgICByZXR1
cm4gRDNEMTBfUkVRX1RFWFRVUkUzRF9VX1ZfT1JfV19ESU1FTlNJT047CiAKLSAgICAgIGNhc2Ug
RDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6
Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMTogIHJldHVybiBEM0RfRkw5XzFfUkVR
X1RFWFRVUkUzRF9VX1ZfT1JfV19ESU1FTlNJT047CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfOV8zOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMjoKKyAgICAgICAg
Y2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6CisgICAgICAgICAgICByZXR1cm4gRDNEX0ZMOV8x
X1JFUV9URVhUVVJFM0RfVV9WX09SX1dfRElNRU5TSU9OOwogCi0gICAgICBkZWZhdWx0OiBVTlJF
QUNIQUJMRSgpOyAgICAgIHJldHVybiAwOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
VU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KIH0KIAotc3RhdGlj
IHNpemVfdCBHZXRNYXhpbXVtVmlld3BvcnRTaXplKEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVM
ZXZlbCkKK3NpemVfdCBHZXRNYXhpbXVtVmlld3BvcnRTaXplKEQzRF9GRUFUVVJFX0xFVkVMIGZl
YXR1cmVMZXZlbCkKIHsKICAgICBzd2l0Y2ggKGZlYXR1cmVMZXZlbCkKICAgICB7Ci0gICAgICBj
YXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVM
XzExXzA6IHJldHVybiBEM0QxMV9WSUVXUE9SVF9CT1VORFNfTUFYOworICAgICAgICBjYXNlIEQz
RF9GRUFUVVJFX0xFVkVMXzExXzE6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFf
MDoKKyAgICAgICAgICAgIHJldHVybiBEM0QxMV9WSUVXUE9SVF9CT1VORFNfTUFYOwogCi0gICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xF
VkVMXzEwXzA6IHJldHVybiBEM0QxMF9WSUVXUE9SVF9CT1VORFNfTUFYOworICAgICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxf
MTBfMDoKKyAgICAgICAgICAgIHJldHVybiBEM0QxMF9WSUVXUE9SVF9CT1VORFNfTUFYOwogCi0g
ICAgICAvLyBObyBjb25zdGFudHMgZm9yIEQzRDExIEZlYXR1cmUgTGV2ZWwgOSB2aWV3cG9ydCBz
aXplIGxpbWl0cywgdXNlIHRoZSBtYXhpbXVtIHRleHR1cmUgc2l6ZXMKLSAgICAgIGNhc2UgRDNE
X0ZFQVRVUkVfTEVWRUxfOV8zOiAgcmV0dXJuIEQzRF9GTDlfM19SRVFfVEVYVFVSRTJEX1VfT1Jf
Vl9ESU1FTlNJT047Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMjoKLSAgICAgIGNh
c2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8xOiAgcmV0dXJuIEQzRF9GTDlfMV9SRVFfVEVYVFVSRTJE
X1VfT1JfVl9ESU1FTlNJT047CisgICAgICAgIC8vIE5vIGNvbnN0YW50cyBmb3IgRDNEMTEgRmVh
dHVyZSBMZXZlbCA5IHZpZXdwb3J0IHNpemUgbGltaXRzLCB1c2UgdGhlIG1heGltdW0KKyAgICAg
ICAgLy8gdGV4dHVyZSBzaXplcworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoK
KyAgICAgICAgICAgIHJldHVybiBEM0RfRkw5XzNfUkVRX1RFWFRVUkUyRF9VX09SX1ZfRElNRU5T
SU9OOworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMjoKKyAgICAgICAgY2FzZSBE
M0RfRkVBVFVSRV9MRVZFTF85XzE6CisgICAgICAgICAgICByZXR1cm4gRDNEX0ZMOV8xX1JFUV9U
RVhUVVJFMkRfVV9PUl9WX0RJTUVOU0lPTjsKIAotICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUo
KTsgICAgICByZXR1cm4gMDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hB
QkxFKCk7CisgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CiB9CiAKLXN0YXRpYyBzaXplX3Qg
R2V0TWF4aW11bURyYXdJbmRleGVkSW5kZXhDb3VudChEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJl
TGV2ZWwpCitzaXplX3QgR2V0TWF4aW11bURyYXdJbmRleGVkSW5kZXhDb3VudChEM0RfRkVBVFVS
RV9MRVZFTCBmZWF0dXJlTGV2ZWwpCiB7Ci0gICAgLy8gRDNEMTEgYWxsb3dzIHVwIHRvIDJeMzIg
ZWxlbWVudHMsIGJ1dCB3ZSByZXBvcnQgbWF4IHNpZ25lZCBpbnQgZm9yIGNvbnZlbmllbmNlIHNp
bmNlIHRoYXQncyB3aGF0J3MKKyAgICAvLyBEM0QxMSBhbGxvd3MgdXAgdG8gMl4zMiBlbGVtZW50
cywgYnV0IHdlIHJlcG9ydCBtYXggc2lnbmVkIGludCBmb3IgY29udmVuaWVuY2Ugc2luY2UKKyAg
ICAvLyB0aGF0J3Mgd2hhdCdzCiAgICAgLy8gcmV0dXJuZWQgZnJvbSBnbEdldEludGVnZXIKLSAg
ICBzdGF0aWNfYXNzZXJ0KEQzRDExX1JFUV9EUkFXSU5ERVhFRF9JTkRFWF9DT1VOVF8yX1RPX0VY
UCA9PSAzMiwgIlVuZXhwZWN0ZWQgRDNEMTEgY29uc3RhbnQgdmFsdWUuIik7Ci0gICAgc3RhdGlj
X2Fzc2VydChEM0QxMF9SRVFfRFJBV0lOREVYRURfSU5ERVhfQ09VTlRfMl9UT19FWFAgPT0gMzIs
ICJVbmV4cGVjdGVkIEQzRDExIGNvbnN0YW50IHZhbHVlLiIpOworICAgIHN0YXRpY19hc3NlcnQo
RDNEMTFfUkVRX0RSQVdJTkRFWEVEX0lOREVYX0NPVU5UXzJfVE9fRVhQID09IDMyLAorICAgICAg
ICAgICAgICAgICAgIlVuZXhwZWN0ZWQgRDNEMTEgY29uc3RhbnQgdmFsdWUuIik7CisgICAgc3Rh
dGljX2Fzc2VydChEM0QxMF9SRVFfRFJBV0lOREVYRURfSU5ERVhfQ09VTlRfMl9UT19FWFAgPT0g
MzIsCisgICAgICAgICAgICAgICAgICAiVW5leHBlY3RlZCBEM0QxMSBjb25zdGFudCB2YWx1ZS4i
KTsKIAogICAgIHN3aXRjaCAoZmVhdHVyZUxldmVsKQogICAgIHsKLSAgICAgIGNhc2UgRDNEX0ZF
QVRVUkVfTEVWRUxfMTFfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDoKLSAg
ICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfMTBfMDogcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8R0xpbnQ+OjptYXgoKTsKKyAg
ICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8xOgorICAgICAgICBjYXNlIEQzRF9GRUFU
VVJFX0xFVkVMXzExXzA6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKKyAg
ICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOgorICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVtZXJpY19saW1pdHM8R0xpbnQ+OjptYXgoKTsKIAotICAgICAgY2FzZSBEM0RfRkVBVFVS
RV9MRVZFTF85XzM6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMjogIHJldHVybiBE
M0RfRkw5XzJfSUFfUFJJTUlUSVZFX01BWF9DT1VOVDsKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfOV8xOiAgcmV0dXJuIEQzRF9GTDlfMV9JQV9QUklNSVRJVkVfTUFYX0NPVU5UOworICAg
ICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVS
RV9MRVZFTF85XzI6CisgICAgICAgICAgICByZXR1cm4gRDNEX0ZMOV8yX0lBX1BSSU1JVElWRV9N
QVhfQ09VTlQ7CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8xOgorICAgICAgICAg
ICAgcmV0dXJuIEQzRF9GTDlfMV9JQV9QUklNSVRJVkVfTUFYX0NPVU5UOwogCi0gICAgICBkZWZh
dWx0OiBVTlJFQUNIQUJMRSgpOyAgICAgIHJldHVybiAwOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KIH0K
IAotc3RhdGljIHNpemVfdCBHZXRNYXhpbXVtRHJhd1ZlcnRleENvdW50KEQzRF9GRUFUVVJFX0xF
VkVMIGZlYXR1cmVMZXZlbCkKK3NpemVfdCBHZXRNYXhpbXVtRHJhd1ZlcnRleENvdW50KEQzRF9G
RUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKIHsKLSAgICAvLyBEM0QxMSBhbGxvd3MgdXAgdG8g
Ml4zMiBlbGVtZW50cywgYnV0IHdlIHJlcG9ydCBtYXggc2lnbmVkIGludCBmb3IgY29udmVuaWVu
Y2Ugc2luY2UgdGhhdCdzIHdoYXQncworICAgIC8vIEQzRDExIGFsbG93cyB1cCB0byAyXjMyIGVs
ZW1lbnRzLCBidXQgd2UgcmVwb3J0IG1heCBzaWduZWQgaW50IGZvciBjb252ZW5pZW5jZSBzaW5j
ZQorICAgIC8vIHRoYXQncyB3aGF0J3MKICAgICAvLyByZXR1cm5lZCBmcm9tIGdsR2V0SW50ZWdl
cgogICAgIHN0YXRpY19hc3NlcnQoRDNEMTFfUkVRX0RSQVdfVkVSVEVYX0NPVU5UXzJfVE9fRVhQ
ID09IDMyLCAiVW5leHBlY3RlZCBEM0QxMSBjb25zdGFudCB2YWx1ZS4iKTsKICAgICBzdGF0aWNf
YXNzZXJ0KEQzRDEwX1JFUV9EUkFXX1ZFUlRFWF9DT1VOVF8yX1RPX0VYUCA9PSAzMiwgIlVuZXhw
ZWN0ZWQgRDNEMTEgY29uc3RhbnQgdmFsdWUuIik7CkBAIC03MTQsMjc1ICs1NDIsMzQzIEBACiAK
ICAgICBzd2l0Y2ggKGZlYXR1cmVMZXZlbCkKICAgICB7Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJF
X0xFVkVMXzExXzE6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6Ci0gICAgICBj
YXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVM
XzEwXzA6IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPEdMaW50Pjo6bWF4KCk7CisgICAgICAg
IGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF8xMV8wOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICAg
IGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDoKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bWVyaWNfbGltaXRzPEdMaW50Pjo6bWF4KCk7CiAKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVW
RUxfOV8zOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6ICByZXR1cm4gRDNEX0ZM
OV8yX0lBX1BSSU1JVElWRV9NQVhfQ09VTlQ7Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVM
XzlfMTogIHJldHVybiBEM0RfRkw5XzFfSUFfUFJJTUlUSVZFX01BWF9DT1VOVDsKKyAgICAgICAg
Y2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzM6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVW
RUxfOV8yOgorICAgICAgICAgICAgcmV0dXJuIEQzRF9GTDlfMl9JQV9QUklNSVRJVkVfTUFYX0NP
VU5UOworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMToKKyAgICAgICAgICAgIHJl
dHVybiBEM0RfRkw5XzFfSUFfUFJJTUlUSVZFX01BWF9DT1VOVDsKIAotICAgICAgZGVmYXVsdDog
VU5SRUFDSEFCTEUoKTsgICAgICByZXR1cm4gMDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CiB9CiAKLXN0
YXRpYyBzaXplX3QgR2V0TWF4aW11bVZlcnRleElucHV0U2xvdHMoRDNEX0ZFQVRVUkVfTEVWRUwg
ZmVhdHVyZUxldmVsKQorc2l6ZV90IEdldE1heGltdW1WZXJ0ZXhJbnB1dFNsb3RzKEQzRF9GRUFU
VVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKIHsKICAgICBzd2l0Y2ggKGZlYXR1cmVMZXZlbCkKICAg
ICB7Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6Ci0gICAgICBjYXNlIEQzRF9G
RUFUVVJFX0xFVkVMXzExXzA6IHJldHVybiBEM0QxMV9TVEFOREFSRF9WRVJURVhfRUxFTUVOVF9D
T1VOVDsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8xOgorICAgICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICAgICAgICByZXR1cm4gRDNEMTFfU1RBTkRB
UkRfVkVSVEVYX0VMRU1FTlRfQ09VTlQ7CiAKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxf
MTBfMTogcmV0dXJuIEQzRDEwXzFfU1RBTkRBUkRfVkVSVEVYX0VMRU1FTlRfQ09VTlQ7Ci0gICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6IHJldHVybiBEM0QxMF9TVEFOREFSRF9WRVJU
RVhfRUxFTUVOVF9DT1VOVDsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgor
ICAgICAgICAgICAgcmV0dXJuIEQzRDEwXzFfU1RBTkRBUkRfVkVSVEVYX0VMRU1FTlRfQ09VTlQ7
CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDoKKyAgICAgICAgICAgIHJldHVy
biBEM0QxMF9TVEFOREFSRF9WRVJURVhfRUxFTUVOVF9DT1VOVDsKIAotICAgICAgLy8gRnJvbSBo
dHRwOi8vaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVz
a3RvcC9mZjQ3Njg3Ni5hc3B4ICJNYXggSW5wdXQgU2xvdHMiCi0gICAgICBjYXNlIEQzRF9GRUFU
VVJFX0xFVkVMXzlfMzoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgotICAgICAg
Y2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6ICByZXR1cm4gMTY7CisgICAgICAgIC8vIEZyb20g
aHR0cDovL2h0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rl
c2t0b3AvZmY0NzY4NzYuYXNweAorICAgICAgICAvLyAiTWF4IElucHV0IFNsb3RzIgorICAgICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF85XzI6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8xOgorICAgICAgICAg
ICAgcmV0dXJuIDE2OwogCi0gICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyAgICAgIHJldHVy
biAwOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIH0KIAotc3RhdGljIHNpemVfdCBHZXRNYXhpbXVtVmVy
dGV4VW5pZm9ybVZlY3RvcnMoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQorc2l6ZV90
IEdldE1heGltdW1WZXJ0ZXhVbmlmb3JtVmVjdG9ycyhEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJl
TGV2ZWwpCiB7Ci0gICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBSZW1vdmUgaGFyZC1jb2RlZCBsaW1p
dCBvbmNlIHRoZSBnbC11bmlmb3JtLWFycmF5cyB0ZXN0IGNhbiBwYXNzCiAgICAgc3dpdGNoIChm
ZWF0dXJlTGV2ZWwpCiAgICAgewotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8xOgot
ICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOiByZXR1cm4gMTAyNDsgLy8gRDNEMTFf
UkVRX0NPTlNUQU5UX0JVRkZFUl9FTEVNRU5UX0NPVU5UOworICAgICAgICBjYXNlIEQzRF9GRUFU
VVJFX0xFVkVMXzExXzE6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDoKKyAg
ICAgICAgICAgIHJldHVybiBEM0QxMV9SRVFfQ09OU1RBTlRfQlVGRkVSX0VMRU1FTlRfQ09VTlQ7
CiAKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKLSAgICAgIGNhc2UgRDNEX0ZF
QVRVUkVfTEVWRUxfMTBfMDogcmV0dXJuIDEwMjQ7IC8vIEQzRDEwX1JFUV9DT05TVEFOVF9CVUZG
RVJfRUxFTUVOVF9DT1VOVDsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgor
ICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6CisgICAgICAgICAgICByZXR1cm4g
RDNEMTBfUkVRX0NPTlNUQU5UX0JVRkZFUl9FTEVNRU5UX0NPVU5UOwogCi0gICAgICAvLyBGcm9t
IGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3Av
ZmY0NzYxNDkuYXNweCBJRDNEMTFEZXZpY2VDb250ZXh0OjpWU1NldENvbnN0YW50QnVmZmVycwot
ICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzM6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJF
X0xFVkVMXzlfMjoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8xOgotICAgICAgICAg
IHJldHVybiAyNTUgLSBkM2QxMV9nbDo6R2V0UmVzZXJ2ZWRWZXJ0ZXhVbmlmb3JtVmVjdG9ycyhm
ZWF0dXJlTGV2ZWwpOworICAgICAgICAvLyBGcm9tIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20v
ZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvZmY0NzYxNDkuYXNweAorICAgICAgICAvLyBJ
RDNEMTFEZXZpY2VDb250ZXh0OjpWU1NldENvbnN0YW50QnVmZmVycworICAgICAgICBjYXNlIEQz
RF9GRUFUVVJFX0xFVkVMXzlfMzoKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6
CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8xOgorICAgICAgICAgICAgcmV0dXJu
IDI1NSAtIGQzZDExX2dsOjpHZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1WZWN0b3JzKGZlYXR1cmVM
ZXZlbCk7CiAKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQogfQogCi1zdGF0aWMgc2l6ZV90IEdldE1heGltdW1WZXJ0ZXhVbmlm
b3JtQmxvY2tzKEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKK3NpemVfdCBHZXRNYXhp
bXVtVmVydGV4VW5pZm9ybUJsb2NrcyhEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCiB7
CiAgICAgc3dpdGNoIChmZWF0dXJlTGV2ZWwpCiAgICAgewotICAgICAgY2FzZSBEM0RfRkVBVFVS
RV9MRVZFTF8xMV8xOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOgotICAgICAg
ICAgIHJldHVybiBEM0QxMV9DT01NT05TSEFERVJfQ09OU1RBTlRfQlVGRkVSX0FQSV9TTE9UX0NP
VU5UIC0KLSAgICAgICAgICAgICAgICAgZDNkMTE6OlJFU0VSVkVEX0NPTlNUQU5UX0JVRkZFUl9T
TE9UX0NPVU5UOworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6CisgICAgICAg
IGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDoKKyAgICAgICAgICAgIHJldHVybiBEM0QxMV9D
T01NT05TSEFERVJfQ09OU1RBTlRfQlVGRkVSX0FQSV9TTE9UX0NPVU5UIC0KKyAgICAgICAgICAg
ICAgICAgICBkM2QxMTo6UkVTRVJWRURfQ09OU1RBTlRfQlVGRkVSX1NMT1RfQ09VTlQ7CiAKLSAg
ICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfMTBfMDoKLSAgICAgICAgICByZXR1cm4gRDNEMTBfQ09NTU9OU0hBREVSX0NPTlNUQU5U
X0JVRkZFUl9BUElfU0xPVF9DT1VOVCAtCi0gICAgICAgICAgICAgICAgIGQzZDExOjpSRVNFUlZF
RF9DT05TVEFOVF9CVUZGRVJfU0xPVF9DT1VOVDsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF8xMF8xOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6CisgICAgICAg
ICAgICByZXR1cm4gRDNEMTBfQ09NTU9OU0hBREVSX0NPTlNUQU5UX0JVRkZFUl9BUElfU0xPVF9D
T1VOVCAtCisgICAgICAgICAgICAgICAgICAgZDNkMTE6OlJFU0VSVkVEX0NPTlNUQU5UX0JVRkZF
Ul9TTE9UX0NPVU5UOwogCi0gICAgICAvLyBVbmlmb3JtIGJsb2NrcyBub3Qgc3VwcG9ydGVkIG9u
IEQzRDExIEZlYXR1cmUgTGV2ZWwgOQotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzM6
Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMjoKLSAgICAgIGNhc2UgRDNEX0ZFQVRV
UkVfTEVWRUxfOV8xOiAgcmV0dXJuIDA7CisgICAgICAgIC8vIFVuaWZvcm0gYmxvY2tzIG5vdCBz
dXBwb3J0ZWQgb24gRDNEMTEgRmVhdHVyZSBMZXZlbCA5CisgICAgICAgIGNhc2UgRDNEX0ZFQVRV
UkVfTEVWRUxfOV8zOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMjoKKyAgICAg
ICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6CisgICAgICAgICAgICByZXR1cm4gMDsKIAot
ICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgICAgICByZXR1cm4gMDsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiB9CiAKLXN0YXRpYyBzaXplX3QgR2V0UmVzZXJ2ZWRWZXJ0ZXhPdXRwdXRWZWN0b3Jz
KEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKK3NpemVfdCBHZXRSZXNlcnZlZFZlcnRl
eE91dHB1dFZlY3RvcnMoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQogewotICAgIC8v
IEFjY29yZGluZyB0byBUaGUgT3BlbkdMIEVTIFNoYWRpbmcgTGFuZ3VhZ2Ugc3BlY2lmaWNhdGlv
bnMgCisgICAgLy8gQWNjb3JkaW5nIHRvIFRoZSBPcGVuR0wgRVMgU2hhZGluZyBMYW5ndWFnZSBz
cGVjaWZpY2F0aW9ucwogICAgIC8vIChMYW5ndWFnZSBWZXJzaW9uIDEuMDAgc2VjdGlvbiAxMC4x
NiwgTGFuZ3VhZ2UgVmVyc2lvbiAzLjEwIHNlY3Rpb24gMTIuMjEpCiAgICAgLy8gYnVpbHQtaW4g
c3BlY2lhbCB2YXJpYWJsZXMgKGUuZy4gZ2xfRnJhZ0Nvb3JkLCBvciBnbF9Qb2ludENvb3JkKQot
ICAgIC8vIHdoaWNoIGFyZSBzdGF0aWNhbGx5IHVzZWQgaW4gdGhlIHNoYWRlciBzaG91bGQgYmUg
aW5jbHVkZWQgaW4gdGhlIHZhcmlhYmxlIHBhY2tpbmcgYWxnb3JpdGhtLgorICAgIC8vIHdoaWNo
IGFyZSBzdGF0aWNhbGx5IHVzZWQgaW4gdGhlIHNoYWRlciBzaG91bGQgYmUgaW5jbHVkZWQgaW4g
dGhlIHZhcmlhYmxlIHBhY2tpbmcKKyAgICAvLyBhbGdvcml0aG0uCiAgICAgLy8gVGhlcmVmb3Jl
LCB3ZSBzaG91bGQgbm90IHJlc2VydmUgb3V0cHV0IHZlY3RvcnMgZm9yIHRoZW0uCiAKICAgICBz
d2l0Y2ggKGZlYXR1cmVMZXZlbCkKICAgICB7Ci0gICAgICAvLyBXZSBtdXN0IHJlc2VydmUgb25l
IG91dHB1dCB2ZWN0b3IgZm9yIGR4X1Bvc2l0aW9uLgotICAgICAgLy8gV2UgYWxzbyByZXNlcnZl
IG9uZSBmb3IgZ2xfUG9zaXRpb24sIHdoaWNoIHdlIHVuY29uZGl0aW9uYWxseSBvdXRwdXQgb24g
RmVhdHVyZSBMZXZlbHMgMTBfMCssCi0gICAgICAvLyBldmVuIGlmIGl0J3MgdW51c2VkIGluIHRo
ZSBzaGFkZXIgKGUuZy4gZm9yIHRyYW5zZm9ybSBmZWVkYmFjaykuIFRPRE86IFRoaXMgY291bGQg
YmUgaW1wcm92ZWQuCi0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6Ci0gICAgICBj
YXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVM
XzEwXzE6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6IHJldHVybiAyOworICAg
ICAgICAvLyBXZSBtdXN0IHJlc2VydmUgb25lIG91dHB1dCB2ZWN0b3IgZm9yIGR4X1Bvc2l0aW9u
LgorICAgICAgICAvLyBXZSBhbHNvIHJlc2VydmUgb25lIGZvciBnbF9Qb3NpdGlvbiwgd2hpY2gg
d2UgdW5jb25kaXRpb25hbGx5IG91dHB1dCBvbiBGZWF0dXJlCisgICAgICAgIC8vIExldmVscyAx
MF8wKywKKyAgICAgICAgLy8gZXZlbiBpZiBpdCdzIHVudXNlZCBpbiB0aGUgc2hhZGVyIChlLmcu
IGZvciB0cmFuc2Zvcm0gZmVlZGJhY2spLiBUT0RPOiBUaGlzIGNvdWxkCisgICAgICAgIC8vIGJl
IGltcHJvdmVkLgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6CisgICAgICAg
IGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDoKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF8xMF8xOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6CisgICAgICAg
ICAgICByZXR1cm4gMjsKIAotICAgICAgLy8gSnVzdCByZXNlcnZlIGR4X1Bvc2l0aW9uIG9uIEZl
YXR1cmUgTGV2ZWwgOSwgc2luY2Ugd2UgZG9uJ3QgZXZlciBuZWVkIHRvIG91dHB1dCBnbF9Qb3Np
dGlvbi4KLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgotICAgICAgY2FzZSBEM0Rf
RkVBVFVSRV9MRVZFTF85XzI6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMTogIHJl
dHVybiAxOworICAgICAgICAvLyBKdXN0IHJlc2VydmUgZHhfUG9zaXRpb24gb24gRmVhdHVyZSBM
ZXZlbCA5LCBzaW5jZSB3ZSBkb24ndCBldmVyIG5lZWQgdG8gb3V0cHV0CisgICAgICAgIC8vIGds
X1Bvc2l0aW9uLgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKKyAgICAgICAg
Y2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVW
RUxfOV8xOgorICAgICAgICAgICAgcmV0dXJuIDE7CiAKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hB
QkxFKCk7ICAgICAgcmV0dXJuIDA7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJF
QUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotCi0gICAgcmV0dXJuIDE7
CiB9CiAKLXN0YXRpYyBzaXplX3QgR2V0TWF4aW11bVZlcnRleE91dHB1dFZlY3RvcnMoRDNEX0ZF
QVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQorc2l6ZV90IEdldE1heGltdW1WZXJ0ZXhPdXRwdXRW
ZWN0b3JzKEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKIHsKLSAgICBzdGF0aWNfYXNz
ZXJ0KGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVkFSWUlOR19WRUNUT1JTID09IEQzRDExX1ZTX09V
VFBVVF9SRUdJU1RFUl9DT1VOVCwgIlVuZXhwZWN0ZWQgRDNEMTEgY29uc3RhbnQgdmFsdWUuIik7
CisgICAgc3RhdGljX2Fzc2VydChnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1ZBUllJTkdfVkVDVE9S
UyA9PSBEM0QxMV9WU19PVVRQVVRfUkVHSVNURVJfQ09VTlQsCisgICAgICAgICAgICAgICAgICAi
VW5leHBlY3RlZCBEM0QxMSBjb25zdGFudCB2YWx1ZS4iKTsKIAogICAgIHN3aXRjaCAoZmVhdHVy
ZUxldmVsKQogICAgIHsKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKLSAgICAg
IGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDogcmV0dXJuIEQzRDExX1ZTX09VVFBVVF9SRUdJ
U1RFUl9DT1VOVCAtIEdldFJlc2VydmVkVmVydGV4T3V0cHV0VmVjdG9ycyhmZWF0dXJlTGV2ZWwp
OworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6CisgICAgICAgIGNhc2UgRDNE
X0ZFQVRVUkVfTEVWRUxfMTFfMDoKKyAgICAgICAgICAgIHJldHVybiBEM0QxMV9WU19PVVRQVVRf
UkVHSVNURVJfQ09VTlQgLSBHZXRSZXNlcnZlZFZlcnRleE91dHB1dFZlY3RvcnMoZmVhdHVyZUxl
dmVsKTsKIAotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOiByZXR1cm4gRDNEMTBf
MV9WU19PVVRQVVRfUkVHSVNURVJfQ09VTlQgLSBHZXRSZXNlcnZlZFZlcnRleE91dHB1dFZlY3Rv
cnMoZmVhdHVyZUxldmVsKTsKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDogcmV0
dXJuIEQzRDEwX1ZTX09VVFBVVF9SRUdJU1RFUl9DT1VOVCAtIEdldFJlc2VydmVkVmVydGV4T3V0
cHV0VmVjdG9ycyhmZWF0dXJlTGV2ZWwpOworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVM
XzEwXzE6CisgICAgICAgICAgICByZXR1cm4gRDNEMTBfMV9WU19PVVRQVVRfUkVHSVNURVJfQ09V
TlQgLSBHZXRSZXNlcnZlZFZlcnRleE91dHB1dFZlY3RvcnMoZmVhdHVyZUxldmVsKTsKKyAgICAg
ICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOgorICAgICAgICAgICAgcmV0dXJuIEQzRDEw
X1ZTX09VVFBVVF9SRUdJU1RFUl9DT1VOVCAtIEdldFJlc2VydmVkVmVydGV4T3V0cHV0VmVjdG9y
cyhmZWF0dXJlTGV2ZWwpOwogCi0gICAgICAvLyBVc2UgU2hhZGVyIE1vZGVsIDIuWCBsaW1pdHMK
LSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgotICAgICAgY2FzZSBEM0RfRkVBVFVS
RV9MRVZFTF85XzI6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMTogIHJldHVybiA4
IC0gR2V0UmVzZXJ2ZWRWZXJ0ZXhPdXRwdXRWZWN0b3JzKGZlYXR1cmVMZXZlbCk7CisgICAgICAg
IC8vIFVzZSBTaGFkZXIgTW9kZWwgMi5YIGxpbWl0cworICAgICAgICBjYXNlIEQzRF9GRUFUVVJF
X0xFVkVMXzlfMzoKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6CisgICAgICAg
IGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8xOgorICAgICAgICAgICAgcmV0dXJuIDggLSBHZXRS
ZXNlcnZlZFZlcnRleE91dHB1dFZlY3RvcnMoZmVhdHVyZUxldmVsKTsKIAotICAgICAgZGVmYXVs
dDogVU5SRUFDSEFCTEUoKTsgICAgICByZXR1cm4gMDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CiB9CiAK
LXN0YXRpYyBzaXplX3QgR2V0TWF4aW11bVZlcnRleFRleHR1cmVVbml0cyhEM0RfRkVBVFVSRV9M
RVZFTCBmZWF0dXJlTGV2ZWwpCitzaXplX3QgR2V0TWF4aW11bVZlcnRleFRleHR1cmVVbml0cyhE
M0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCiB7CiAgICAgc3dpdGNoIChmZWF0dXJlTGV2
ZWwpCiAgICAgewotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8xOgotICAgICAgY2Fz
ZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOiByZXR1cm4gRDNEMTFfQ09NTU9OU0hBREVSX1NBTVBM
RVJfU0xPVF9DT1VOVDsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8xOgorICAg
ICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICAgICAgICByZXR1cm4gRDNE
MTFfQ09NTU9OU0hBREVSX1NBTVBMRVJfU0xPVF9DT1VOVDsKIAotICAgICAgY2FzZSBEM0RfRkVB
VFVSRV9MRVZFTF8xMF8xOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOiByZXR1
cm4gRDNEMTBfQ09NTU9OU0hBREVSX1NBTVBMRVJfU0xPVF9DT1VOVDsKKyAgICAgICAgY2FzZSBE
M0RfRkVBVFVSRV9MRVZFTF8xMF8xOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEw
XzA6CisgICAgICAgICAgICByZXR1cm4gRDNEMTBfQ09NTU9OU0hBREVSX1NBTVBMRVJfU0xPVF9D
T1VOVDsKIAotICAgICAgLy8gVmVydGV4IHRleHR1cmVzIG5vdCBzdXBwb3J0ZWQgb24gRDNEMTEg
RmVhdHVyZSBMZXZlbCA5IGFjY29yZGluZyB0bwotICAgICAgLy8gaHR0cDovL21zZG4ubWljcm9z
b2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9mZjQ3NjE0OS5hc3B4Ci0gICAg
ICAvLyBJRDNEMTFEZXZpY2VDb250ZXh0OjpWU1NldFNhbXBsZXJzIGFuZCBJRDNEMTFEZXZpY2VD
b250ZXh0OjpWU1NldFNoYWRlclJlc291cmNlcwotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZF
TF85XzM6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMjoKLSAgICAgIGNhc2UgRDNE
X0ZFQVRVUkVfTEVWRUxfOV8xOiAgcmV0dXJuIDA7CisgICAgICAgIC8vIFZlcnRleCB0ZXh0dXJl
cyBub3Qgc3VwcG9ydGVkIG9uIEQzRDExIEZlYXR1cmUgTGV2ZWwgOSBhY2NvcmRpbmcgdG8KKyAg
ICAgICAgLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3Mv
ZGVza3RvcC9mZjQ3NjE0OS5hc3B4CisgICAgICAgIC8vIElEM0QxMURldmljZUNvbnRleHQ6OlZT
U2V0U2FtcGxlcnMgYW5kIElEM0QxMURldmljZUNvbnRleHQ6OlZTU2V0U2hhZGVyUmVzb3VyY2Vz
CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgorICAgICAgICBjYXNlIEQzRF9G
RUFUVVJFX0xFVkVMXzlfMjoKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6Cisg
ICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CiB9CiAKLXN0YXRpYyBzaXplX3QgR2V0TWF4
aW11bVBpeGVsVW5pZm9ybVZlY3RvcnMoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQor
c2l6ZV90IEdldE1heGltdW1QaXhlbFVuaWZvcm1WZWN0b3JzKEQzRF9GRUFUVVJFX0xFVkVMIGZl
YXR1cmVMZXZlbCkKIHsKICAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IFJlbW92ZSBoYXJkLWNvZGVk
IGxpbWl0IG9uY2UgdGhlIGdsLXVuaWZvcm0tYXJyYXlzIHRlc3QgY2FuIHBhc3MKICAgICBzd2l0
Y2ggKGZlYXR1cmVMZXZlbCkKICAgICB7Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEx
XzE6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6IHJldHVybiAxMDI0OyAvLyBE
M0QxMV9SRVFfQ09OU1RBTlRfQlVGRkVSX0VMRU1FTlRfQ09VTlQ7CisgICAgICAgIGNhc2UgRDNE
X0ZFQVRVUkVfTEVWRUxfMTFfMToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8w
OgorICAgICAgICAgICAgcmV0dXJuIDEwMjQ7ICAvLyBEM0QxMV9SRVFfQ09OU1RBTlRfQlVGRkVS
X0VMRU1FTlRfQ09VTlQ7CiAKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKLSAg
ICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDogcmV0dXJuIDEwMjQ7IC8vIEQzRDEwX1JF
UV9DT05TVEFOVF9CVUZGRVJfRUxFTUVOVF9DT1VOVDsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVS
RV9MRVZFTF8xMF8xOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6CisgICAg
ICAgICAgICByZXR1cm4gMTAyNDsgIC8vIEQzRDEwX1JFUV9DT05TVEFOVF9CVUZGRVJfRUxFTUVO
VF9DT1VOVDsKIAotICAgICAgLy8gRnJvbSBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVz
L2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2ZmNDc2MTQ5LmFzcHggSUQzRDExRGV2aWNlQ29udGV4
dDo6UFNTZXRDb25zdGFudEJ1ZmZlcnMKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8z
OgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6Ci0gICAgICBjYXNlIEQzRF9GRUFU
VVJFX0xFVkVMXzlfMToKLSAgICAgICAgICByZXR1cm4gMzIgLSBkM2QxMV9nbDo6R2V0UmVzZXJ2
ZWRGcmFnbWVudFVuaWZvcm1WZWN0b3JzKGZlYXR1cmVMZXZlbCk7CisgICAgICAgIC8vIEZyb20g
aHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9m
ZjQ3NjE0OS5hc3B4CisgICAgICAgIC8vIElEM0QxMURldmljZUNvbnRleHQ6OlBTU2V0Q29uc3Rh
bnRCdWZmZXJzCisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgorICAgICAgICBj
YXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMjoKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZF
TF85XzE6CisgICAgICAgICAgICByZXR1cm4gMzIgLSBkM2QxMV9nbDo6R2V0UmVzZXJ2ZWRGcmFn
bWVudFVuaWZvcm1WZWN0b3JzKGZlYXR1cmVMZXZlbCk7CiAKLSAgICAgIGRlZmF1bHQ6IFVOUkVB
Q0hBQkxFKCk7ICAgICAgcmV0dXJuIDA7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQogCi1zdGF0aWMg
c2l6ZV90IEdldE1heGltdW1QaXhlbFVuaWZvcm1CbG9ja3MoRDNEX0ZFQVRVUkVfTEVWRUwgZmVh
dHVyZUxldmVsKQorc2l6ZV90IEdldE1heGltdW1QaXhlbFVuaWZvcm1CbG9ja3MoRDNEX0ZFQVRV
UkVfTEVWRUwgZmVhdHVyZUxldmVsKQogewogICAgIHN3aXRjaCAoZmVhdHVyZUxldmVsKQogICAg
IHsKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKLSAgICAgIGNhc2UgRDNEX0ZF
QVRVUkVfTEVWRUxfMTFfMDoKLSAgICAgICAgICByZXR1cm4gRDNEMTFfQ09NTU9OU0hBREVSX0NP
TlNUQU5UX0JVRkZFUl9BUElfU0xPVF9DT1VOVCAtCi0gICAgICAgICAgICAgICAgIGQzZDExOjpS
RVNFUlZFRF9DT05TVEFOVF9CVUZGRVJfU0xPVF9DT1VOVDsKKyAgICAgICAgY2FzZSBEM0RfRkVB
VFVSRV9MRVZFTF8xMV8xOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6Cisg
ICAgICAgICAgICByZXR1cm4gRDNEMTFfQ09NTU9OU0hBREVSX0NPTlNUQU5UX0JVRkZFUl9BUElf
U0xPVF9DT1VOVCAtCisgICAgICAgICAgICAgICAgICAgZDNkMTE6OlJFU0VSVkVEX0NPTlNUQU5U
X0JVRkZFUl9TTE9UX0NPVU5UOwogCi0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6
Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6Ci0gICAgICAgICAgcmV0dXJuIEQz
RDEwX0NPTU1PTlNIQURFUl9DT05TVEFOVF9CVUZGRVJfQVBJX1NMT1RfQ09VTlQgLQotICAgICAg
ICAgICAgICAgICBkM2QxMTo6UkVTRVJWRURfQ09OU1RBTlRfQlVGRkVSX1NMT1RfQ09VTlQ7Cisg
ICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKKyAgICAgICAgY2FzZSBEM0RfRkVB
VFVSRV9MRVZFTF8xMF8wOgorICAgICAgICAgICAgcmV0dXJuIEQzRDEwX0NPTU1PTlNIQURFUl9D
T05TVEFOVF9CVUZGRVJfQVBJX1NMT1RfQ09VTlQgLQorICAgICAgICAgICAgICAgICAgIGQzZDEx
OjpSRVNFUlZFRF9DT05TVEFOVF9CVUZGRVJfU0xPVF9DT1VOVDsKIAotICAgICAgLy8gVW5pZm9y
bSBibG9ja3Mgbm90IHN1cHBvcnRlZCBvbiBEM0QxMSBGZWF0dXJlIExldmVsIDkKLSAgICAgIGNh
c2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85
XzI6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMTogIHJldHVybiAwOworICAgICAg
ICAvLyBVbmlmb3JtIGJsb2NrcyBub3Qgc3VwcG9ydGVkIG9uIEQzRDExIEZlYXR1cmUgTGV2ZWwg
OQorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKKyAgICAgICAgY2FzZSBEM0Rf
RkVBVFVSRV9MRVZFTF85XzI6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8xOgor
ICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OworICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQogCi1zdGF0aWMgc2l6ZV90IEdldE1h
eGltdW1QaXhlbElucHV0VmVjdG9ycyhEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCitz
aXplX3QgR2V0TWF4aW11bVBpeGVsSW5wdXRWZWN0b3JzKEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1
cmVMZXZlbCkKIHsKICAgICBzd2l0Y2ggKGZlYXR1cmVMZXZlbCkKICAgICB7Ci0gICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEx
XzA6IHJldHVybiBEM0QxMV9QU19JTlBVVF9SRUdJU1RFUl9DT1VOVCAtIEdldFJlc2VydmVkVmVy
dGV4T3V0cHV0VmVjdG9ycyhmZWF0dXJlTGV2ZWwpOworICAgICAgICBjYXNlIEQzRF9GRUFUVVJF
X0xFVkVMXzExXzE6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDoKKyAgICAg
ICAgICAgIHJldHVybiBEM0QxMV9QU19JTlBVVF9SRUdJU1RFUl9DT1VOVCAtIEdldFJlc2VydmVk
VmVydGV4T3V0cHV0VmVjdG9ycyhmZWF0dXJlTGV2ZWwpOwogCi0gICAgICBjYXNlIEQzRF9GRUFU
VVJFX0xFVkVMXzEwXzE6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6IHJldHVy
biBEM0QxMF9QU19JTlBVVF9SRUdJU1RFUl9DT1VOVCAtIEdldFJlc2VydmVkVmVydGV4T3V0cHV0
VmVjdG9ycyhmZWF0dXJlTGV2ZWwpOworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEw
XzE6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDoKKyAgICAgICAgICAgIHJl
dHVybiBEM0QxMF9QU19JTlBVVF9SRUdJU1RFUl9DT1VOVCAtIEdldFJlc2VydmVkVmVydGV4T3V0
cHV0VmVjdG9ycyhmZWF0dXJlTGV2ZWwpOwogCi0gICAgICAvLyBVc2UgU2hhZGVyIE1vZGVsIDIu
WCBsaW1pdHMKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOiAgcmV0dXJuIDggLSBH
ZXRSZXNlcnZlZFZlcnRleE91dHB1dFZlY3RvcnMoZmVhdHVyZUxldmVsKTsKLSAgICAgIGNhc2Ug
RDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6
ICByZXR1cm4gOCAtIEdldFJlc2VydmVkVmVydGV4T3V0cHV0VmVjdG9ycyhmZWF0dXJlTGV2ZWwp
OworICAgICAgICAvLyBVc2UgU2hhZGVyIE1vZGVsIDIuWCBsaW1pdHMKKyAgICAgICAgY2FzZSBE
M0RfRkVBVFVSRV9MRVZFTF85XzM6CisgICAgICAgICAgICByZXR1cm4gOCAtIEdldFJlc2VydmVk
VmVydGV4T3V0cHV0VmVjdG9ycyhmZWF0dXJlTGV2ZWwpOworICAgICAgICBjYXNlIEQzRF9GRUFU
VVJFX0xFVkVMXzlfMjoKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6CisgICAg
ICAgICAgICByZXR1cm4gOCAtIEdldFJlc2VydmVkVmVydGV4T3V0cHV0VmVjdG9ycyhmZWF0dXJl
TGV2ZWwpOwogCi0gICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyAgICAgIHJldHVybiAwOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIH0KIAotc3RhdGljIHNpemVfdCBHZXRNYXhpbXVtUGl4ZWxUZXh0
dXJlVW5pdHMoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQorc2l6ZV90IEdldE1heGlt
dW1QaXhlbFRleHR1cmVVbml0cyhEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCiB7CiAg
ICAgc3dpdGNoIChmZWF0dXJlTGV2ZWwpCiAgICAgewotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF8xMV8xOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOiByZXR1cm4gRDNE
MTFfQ09NTU9OU0hBREVSX1NBTVBMRVJfU0xPVF9DT1VOVDsKKyAgICAgICAgY2FzZSBEM0RfRkVB
VFVSRV9MRVZFTF8xMV8xOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6Cisg
ICAgICAgICAgICByZXR1cm4gRDNEMTFfQ09NTU9OU0hBREVSX1NBTVBMRVJfU0xPVF9DT1VOVDsK
IAotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgotICAgICAgY2FzZSBEM0RfRkVB
VFVSRV9MRVZFTF8xMF8wOiByZXR1cm4gRDNEMTBfQ09NTU9OU0hBREVSX1NBTVBMRVJfU0xPVF9D
T1VOVDsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgorICAgICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6CisgICAgICAgICAgICByZXR1cm4gRDNEMTBfQ09NTU9O
U0hBREVSX1NBTVBMRVJfU0xPVF9DT1VOVDsKIAotICAgICAgLy8gaHR0cDovL21zZG4ubWljcm9z
b2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9mZjQ3NjE0OS5hc3B4IElEM0Qx
MURldmljZUNvbnRleHQ6OlBTU2V0U2hhZGVyUmVzb3VyY2VzCi0gICAgICBjYXNlIEQzRF9GRUFU
VVJFX0xFVkVMXzlfMzoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgotICAgICAg
Y2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6ICByZXR1cm4gMTY7CisgICAgICAgIC8vIGh0dHA6
Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvZmY0NzYx
NDkuYXNweAorICAgICAgICAvLyBJRDNEMTFEZXZpY2VDb250ZXh0OjpQU1NldFNoYWRlclJlc291
cmNlcworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKKyAgICAgICAgY2FzZSBE
M0RfRkVBVFVSRV9MRVZFTF85XzI6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8x
OgorICAgICAgICAgICAgcmV0dXJuIDE2OwogCi0gICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgp
OyAgICAgIHJldHVybiAwOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KIH0KIAotc3RhdGljIGludCBHZXRN
aW5pbXVtVGV4ZWxPZmZzZXQoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQoraW50IEdl
dE1pbmltdW1UZXhlbE9mZnNldChEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCiB7CiAg
ICAgc3dpdGNoIChmZWF0dXJlTGV2ZWwpCiAgICAgewotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF8xMV8xOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOiByZXR1cm4gRDNE
MTFfQ09NTU9OU0hBREVSX1RFWEVMX09GRlNFVF9NQVhfTkVHQVRJVkU7CisgICAgICAgIGNhc2Ug
RDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8x
MV8wOgorICAgICAgICAgICAgcmV0dXJuIEQzRDExX0NPTU1PTlNIQURFUl9URVhFTF9PRkZTRVRf
TUFYX05FR0FUSVZFOwogCi0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6Ci0gICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6IHJldHVybiBEM0QxMF9DT01NT05TSEFERVJf
VEVYRUxfT0ZGU0VUX01BWF9ORUdBVElWRTsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZF
TF8xMF8xOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6CisgICAgICAgICAg
ICByZXR1cm4gRDNEMTBfQ09NTU9OU0hBREVSX1RFWEVMX09GRlNFVF9NQVhfTkVHQVRJVkU7CiAK
LSAgICAgIC8vIFNhbXBsaW5nIGZ1bmN0aW9ucyB3aXRoIG9mZnNldHMgYXJlIG5vdCBhdmFpbGFi
bGUgYmVsb3cgc2hhZGVyIG1vZGVsIDQuMC4KLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxf
OV8zOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6Ci0gICAgICBjYXNlIEQzRF9G
RUFUVVJFX0xFVkVMXzlfMTogIHJldHVybiAwOworICAgICAgICAvLyBTYW1wbGluZyBmdW5jdGlv
bnMgd2l0aCBvZmZzZXRzIGFyZSBub3QgYXZhaWxhYmxlIGJlbG93IHNoYWRlciBtb2RlbCA0LjAu
CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgorICAgICAgICBjYXNlIEQzRF9G
RUFUVVJFX0xFVkVMXzlfMjoKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6Cisg
ICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CiB9CiAKLXN0YXRpYyBpbnQgR2V0TWF4aW11
bVRleGVsT2Zmc2V0KEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKK2ludCBHZXRNYXhp
bXVtVGV4ZWxPZmZzZXQoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQogewogICAgIHN3
aXRjaCAoZmVhdHVyZUxldmVsKQogICAgIHsKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxf
MTFfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDogcmV0dXJuIEQzRDExX0NP
TU1PTlNIQURFUl9URVhFTF9PRkZTRVRfTUFYX1BPU0lUSVZFOwotICAgICAgY2FzZSBEM0RfRkVB
VFVSRV9MRVZFTF8xMF8xOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOiByZXR1
cm4gRDNEMTFfQ09NTU9OU0hBREVSX1RFWEVMX09GRlNFVF9NQVhfUE9TSVRJVkU7CisgICAgICAg
IGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF8xMV8wOgorICAgICAgICAgICAgcmV0dXJuIEQzRDExX0NPTU1PTlNIQURFUl9URVhFTF9P
RkZTRVRfTUFYX1BPU0lUSVZFOworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6
CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDoKKyAgICAgICAgICAgIHJldHVy
biBEM0QxMV9DT01NT05TSEFERVJfVEVYRUxfT0ZGU0VUX01BWF9QT1NJVElWRTsKIAotICAgICAg
Ly8gU2FtcGxpbmcgZnVuY3Rpb25zIHdpdGggb2Zmc2V0cyBhcmUgbm90IGF2YWlsYWJsZSBiZWxv
dyBzaGFkZXIgbW9kZWwgNC4wLgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzM6Ci0g
ICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMjoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfOV8xOiAgcmV0dXJuIDA7CisgICAgICAgIC8vIFNhbXBsaW5nIGZ1bmN0aW9ucyB3aXRo
IG9mZnNldHMgYXJlIG5vdCBhdmFpbGFibGUgYmVsb3cgc2hhZGVyIG1vZGVsIDQuMC4KKyAgICAg
ICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzM6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfOV8yOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMToKKyAgICAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyAgICAgIHJldHVy
biAwOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIH0KIAotc3RhdGljIHNpemVfdCBHZXRNYXhpbXVtQ29u
c3RhbnRCdWZmZXJTaXplKEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKK3NpemVfdCBH
ZXRNYXhpbXVtQ29uc3RhbnRCdWZmZXJTaXplKEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZl
bCkKIHsKLSAgICAvLyBSZXR1cm5zIGEgc2l6ZV90IGRlc3BpdGUgdGhlIGxpbWl0IGJlaW5nIGEg
R0x1aW50NjQgYmVjYXVzZSBzaXplX3QgaXMgdGhlIG1heGltdW0gc2l6ZSBvZgorICAgIC8vIFJl
dHVybnMgYSBzaXplX3QgZGVzcGl0ZSB0aGUgbGltaXQgYmVpbmcgYSBHTHVpbnQ2NCBiZWNhdXNl
IHNpemVfdCBpcyB0aGUgbWF4aW11bQorICAgIC8vIHNpemUgb2YKICAgICAvLyBhbnkgYnVmZmVy
IHRoYXQgY291bGQgYmUgYWxsb2NhdGVkLgogCiAgICAgY29uc3Qgc2l6ZV90IGJ5dGVzUGVyQ29t
cG9uZW50ID0gNCAqIHNpemVvZihmbG9hdCk7CkBAIC05ODksNzggKzg4NSwxNjQgQEAKIAogICAg
IHN3aXRjaCAoZmVhdHVyZUxldmVsKQogICAgIHsKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVW
RUxfMTFfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDogcmV0dXJuIEQzRDEx
X1JFUV9DT05TVEFOVF9CVUZGRVJfRUxFTUVOVF9DT1VOVCAqIGJ5dGVzUGVyQ29tcG9uZW50Owor
ICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6CisgICAgICAgIGNhc2UgRDNEX0ZF
QVRVUkVfTEVWRUxfMTFfMDoKKyAgICAgICAgICAgIHJldHVybiBEM0QxMV9SRVFfQ09OU1RBTlRf
QlVGRkVSX0VMRU1FTlRfQ09VTlQgKiBieXRlc1BlckNvbXBvbmVudDsKIAotICAgICAgY2FzZSBE
M0RfRkVBVFVSRV9MRVZFTF8xMF8xOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8w
OiByZXR1cm4gRDNEMTBfUkVRX0NPTlNUQU5UX0JVRkZFUl9FTEVNRU5UX0NPVU5UICogYnl0ZXNQ
ZXJDb21wb25lbnQ7CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKKyAgICAg
ICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOgorICAgICAgICAgICAgcmV0dXJuIEQzRDEw
X1JFUV9DT05TVEFOVF9CVUZGRVJfRUxFTUVOVF9DT1VOVCAqIGJ5dGVzUGVyQ29tcG9uZW50Owog
Ci0gICAgICAvLyBMaW1pdHMgZnJvbSBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xp
YnJhcnkvd2luZG93cy9kZXNrdG9wL2ZmNDc2NTAxLmFzcHggcmVtYXJrcyBzZWN0aW9uCi0gICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVW
RUxfOV8yOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6ICByZXR1cm4gNDA5NiAq
IGJ5dGVzUGVyQ29tcG9uZW50OworICAgICAgICAvLyBMaW1pdHMgZnJvbSBodHRwOi8vbXNkbi5t
aWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2ZmNDc2NTAxLmFzcHgK
KyAgICAgICAgLy8gcmVtYXJrcyBzZWN0aW9uCisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVW
RUxfOV8zOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMjoKKyAgICAgICAgY2Fz
ZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6CisgICAgICAgICAgICByZXR1cm4gNDA5NiAqIGJ5dGVz
UGVyQ29tcG9uZW50OwogCi0gICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyAgICAgIHJldHVy
biAwOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIH0KIAotc3RhdGljIHNpemVfdCBHZXRNYXhpbXVtU3Ry
ZWFtT3V0cHV0QnVmZmVycyhEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCitzaXplX3Qg
R2V0TWF4aW11bVN0cmVhbU91dHB1dEJ1ZmZlcnMoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxl
dmVsKQogewogICAgIHN3aXRjaCAoZmVhdHVyZUxldmVsKQogICAgIHsKLSAgICAgIGNhc2UgRDNE
X0ZFQVRVUkVfTEVWRUxfMTFfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDog
cmV0dXJuIEQzRDExX1NPX0JVRkZFUl9TTE9UX0NPVU5UOworICAgICAgICBjYXNlIEQzRF9GRUFU
VVJFX0xFVkVMXzExXzE6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDoKKyAg
ICAgICAgICAgIHJldHVybiBEM0QxMV9TT19CVUZGRVJfU0xPVF9DT1VOVDsKIAotICAgICAgY2Fz
ZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOiByZXR1cm4gRDNEMTBfMV9TT19CVUZGRVJfU0xPVF9D
T1VOVDsKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDogcmV0dXJuIEQzRDEwX1NP
X0JVRkZFUl9TTE9UX0NPVU5UOworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6
CisgICAgICAgICAgICByZXR1cm4gRDNEMTBfMV9TT19CVUZGRVJfU0xPVF9DT1VOVDsKKyAgICAg
ICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOgorICAgICAgICAgICAgcmV0dXJuIEQzRDEw
X1NPX0JVRkZFUl9TTE9UX0NPVU5UOwogCi0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlf
MzoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgotICAgICAgY2FzZSBEM0RfRkVB
VFVSRV9MRVZFTF85XzE6ICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZF
TF85XzM6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgorICAgICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzlfMToKKyAgICAgICAgICAgIHJldHVybiAwOwogCi0gICAgICBk
ZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyAgICAgIHJldHVybiAwOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0K
IH0KIAotc3RhdGljIHNpemVfdCBHZXRNYXhpbXVtU3RyZWFtT3V0cHV0SW50ZXJsZWF2ZWRDb21w
b25lbnRzKEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKK3NpemVfdCBHZXRNYXhpbXVt
U3RyZWFtT3V0cHV0SW50ZXJsZWF2ZWRDb21wb25lbnRzKEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1
cmVMZXZlbCkKIHsKICAgICBzd2l0Y2ggKGZlYXR1cmVMZXZlbCkKICAgICB7Ci0gICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEx
XzA6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKKyAgICAgICAgY2FzZSBE
M0RfRkVBVFVSRV9MRVZFTF8xMV8wOgogCi0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEw
XzE6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6IHJldHVybiBHZXRNYXhpbXVt
VmVydGV4T3V0cHV0VmVjdG9ycyhmZWF0dXJlTGV2ZWwpICogNDsKKyAgICAgICAgY2FzZSBEM0Rf
RkVBVFVSRV9MRVZFTF8xMF8xOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6
CisgICAgICAgICAgICByZXR1cm4gR2V0TWF4aW11bVZlcnRleE91dHB1dFZlY3RvcnMoZmVhdHVy
ZUxldmVsKSAqIDQ7CiAKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgotICAgICAg
Y2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVM
XzlfMTogIHJldHVybiAwOworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKKyAg
ICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzI6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRV
UkVfTEVWRUxfOV8xOgorICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgIGRlZmF1bHQ6IFVO
UkVBQ0hBQkxFKCk7ICAgICAgcmV0dXJuIDA7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQogCi1zdGF0
aWMgc2l6ZV90IEdldE1heGltdW1TdHJlYW1PdXRwdXRTZXBhcmF0ZUNvbXBvbmVudHMoRDNEX0ZF
QVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQorc2l6ZV90IEdldE1heGltdW1TdHJlYW1PdXRwdXRT
ZXBhcmF0ZUNvbXBvbmVudHMoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQogewogICAg
IHN3aXRjaCAoZmVhdHVyZUxldmVsKQogICAgIHsKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVW
RUxfMTFfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDogcmV0dXJuIEdldE1h
eGltdW1TdHJlYW1PdXRwdXRJbnRlcmxlYXZlZENvbXBvbmVudHMoZmVhdHVyZUxldmVsKSAvCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRNYXhpbXVtU3RyZWFt
T3V0cHV0QnVmZmVycyhmZWF0dXJlTGV2ZWwpOworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xF
VkVMXzExXzE6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDoKKyAgICAgICAg
ICAgIHJldHVybiBHZXRNYXhpbXVtU3RyZWFtT3V0cHV0SW50ZXJsZWF2ZWRDb21wb25lbnRzKGZl
YXR1cmVMZXZlbCkgLworICAgICAgICAgICAgICAgICAgIEdldE1heGltdW1TdHJlYW1PdXRwdXRC
dWZmZXJzKGZlYXR1cmVMZXZlbCk7CiAKKyAgICAgICAgLy8gRDNEIDEwIGFuZCAxMC4xIG9ubHkg
YWxsb3cgb25lIG91dHB1dCBwZXIgb3V0cHV0IHNsb3QgaWYgYW4gb3V0cHV0IHNsb3Qgb3RoZXIK
KyAgICAgICAgLy8gdGhhbiB6ZXJvIGlzIHVzZWQuCisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfMTBfMToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOgorICAgICAg
ICAgICAgcmV0dXJuIDQ7CiAKLSAgICAgIC8vIEQzRCAxMCBhbmQgMTAuMSBvbmx5IGFsbG93IG9u
ZSBvdXRwdXQgcGVyIG91dHB1dCBzbG90IGlmIGFuIG91dHB1dCBzbG90IG90aGVyIHRoYW4gemVy
byBpcyB1c2VkLgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgotICAgICAgY2Fz
ZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOiByZXR1cm4gNDsKKyAgICAgICAgY2FzZSBEM0RfRkVB
VFVSRV9MRVZFTF85XzM6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgorICAg
ICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMToKKyAgICAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKLSAgICAgIGNhc2UgRDNEX0ZFQVRV
UkVfTEVWRUxfOV8yOgotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6ICByZXR1cm4g
MDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICB9Cit9CiAKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7
ICAgICAgcmV0dXJuIDA7Cit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK3Vuc2lnbmVkIGlu
dCBHZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1WZWN0b3JzKEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1
cmVMZXZlbCkKK3sKKyAgICBzd2l0Y2ggKGZlYXR1cmVMZXZlbCkKKyAgICB7CisgICAgICAgIGNh
c2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZF
TF8xMV8wOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICAgIGNh
c2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDoKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAg
ICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJF
X0xFVkVMXzlfMjoKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6CisgICAgICAg
ICAgICByZXR1cm4gMzsgIC8vIGR4X1ZpZXdBZGp1c3QsIGR4X1ZpZXdDb29yZHMgYW5kIGR4X1Zp
ZXdTY2FsZQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQogCit1bnNpZ25lZCBpbnQgR2V0UmVzZXJ2
ZWRGcmFnbWVudFVuaWZvcm1WZWN0b3JzKEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkK
K3sKKyAgICBzd2l0Y2ggKGZlYXR1cmVMZXZlbCkKKyAgICB7CisgICAgICAgIGNhc2UgRDNEX0ZF
QVRVUkVfTEVWRUxfMTFfMToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOgor
ICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICAgIGNhc2UgRDNEX0ZF
QVRVUkVfTEVWRUxfMTBfMDoKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGNhc2Ug
RDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlf
MjoKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6CisgICAgICAgICAgICByZXR1
cm4gMzsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICAgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworR0xpbnQgR2V0TWF4aW11bUNsaWVudFZl
cnNpb24oRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQoreworICAgIHN3aXRjaCAoZmVh
dHVyZUxldmVsKQorICAgIHsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8xOgor
ICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICAgIGNhc2UgRDNEX0ZF
QVRVUkVfTEVWRUxfMTBfMToKKyAgICAgICAgICAgIHJldHVybiAzOworCisgICAgICAgIGNhc2Ug
RDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDoKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85
XzM6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgorICAgICAgICBjYXNlIEQz
RF9GRUFUVVJFX0xFVkVMXzlfMToKKyAgICAgICAgICAgIHJldHVybiAyOworCisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorfQorCiB2b2lkIEdlbmVyYXRlQ2FwcyhJRDNEMTFEZXZpY2UgKmRldmljZSwgSUQz
RDExRGV2aWNlQ29udGV4dCAqZGV2aWNlQ29udGV4dCwgY29uc3QgUmVuZGVyZXIxMURldmljZUNh
cHMgJnJlbmRlcmVyMTFEZXZpY2VDYXBzLCBnbDo6Q2FwcyAqY2FwcywKICAgICAgICAgICAgICAg
ICAgIGdsOjpUZXh0dXJlQ2Fwc01hcCAqdGV4dHVyZUNhcHNNYXAsIGdsOjpFeHRlbnNpb25zICpl
eHRlbnNpb25zLCBnbDo6TGltaXRhdGlvbnMgKmxpbWl0YXRpb25zKQogewpAQCAtMTIyOSwxMSAr
MTIxMSwxNSBAQAogICAgIGV4dGVuc2lvbnMtPmZib1JlbmRlck1pcG1hcCA9IGZhbHNlOwogICAg
IGV4dGVuc2lvbnMtPmRlYnVnTWFya2VyID0gdHJ1ZTsKICAgICBleHRlbnNpb25zLT5lZ2xJbWFn
ZSAgICAgICAgICAgICAgICAgPSB0cnVlOworICAgIGV4dGVuc2lvbnMtPmVnbEltYWdlRXh0ZXJu
YWwgICAgICAgICAgPSB0cnVlOworICAgIGV4dGVuc2lvbnMtPmVnbEltYWdlRXh0ZXJuYWxFc3Ns
MyAgICAgPSB0cnVlOworICAgIGV4dGVuc2lvbnMtPmVnbFN0cmVhbUNvbnN1bWVyRXh0ZXJuYWwg
PSB0cnVlOwogICAgIGV4dGVuc2lvbnMtPnVucGFja1N1YmltYWdlICAgICAgICAgICA9IHRydWU7
CiAgICAgZXh0ZW5zaW9ucy0+cGFja1N1YmltYWdlICAgICAgICAgICAgID0gdHJ1ZTsKLSAgICBl
eHRlbnNpb25zLT52ZXJ0ZXhBcnJheU9iamVjdCAgICAgICAgPSB0cnVlOwotICAgIGV4dGVuc2lv
bnMtPm5vRXJyb3IgICAgICAgICAgICAgICAgICA9IHRydWU7CiAgICAgZXh0ZW5zaW9ucy0+bG9z
c3lFVENEZWNvZGUgICAgICAgICAgID0gdHJ1ZTsKKyAgICBleHRlbnNpb25zLT5zeW5jUXVlcnkg
ICAgICAgICAgICAgICAgID0gR2V0RXZlbnRRdWVyeVN1cHBvcnQoZmVhdHVyZUxldmVsKTsKKyAg
ICBleHRlbnNpb25zLT5jb3B5VGV4dHVyZSAgICAgICAgICAgICAgID0gdHJ1ZTsKKyAgICBleHRl
bnNpb25zLT5jb3B5Q29tcHJlc3NlZFRleHR1cmUgICAgID0gdHJ1ZTsKIAogICAgIC8vIEQzRDEx
IEZlYXR1cmUgTGV2ZWwgMTBfMCsgdXNlcyBTVl9Jc0Zyb250RmFjZSBpbiBITFNMIHRvIGVtdWxh
dGUgZ2xfRnJvbnRGYWNpbmcuCiAgICAgLy8gRDNEMTEgRmVhdHVyZSBMZXZlbCA5XzMgZG9lc24n
dCBzdXBwb3J0IFNWX0lzRnJvbnRGYWNlLCBhbmQgaGFzIG5vIGVxdWl2YWxlbnQsIHNvIGNhbid0
IHN1cHBvcnQgZ2xfRnJvbnRGYWNpbmcuCkBAIC0xMjY1LDYgKzEyNTEsMzM2IEBACiAKIH0gIC8v
IG5hbWVzcGFjZSBkM2QxMV9nbAogCituYW1lc3BhY2UgZ2xfZDNkMTEKK3sKKworRDNEMTFfQkxF
TkQgQ29udmVydEJsZW5kRnVuYyhHTGVudW0gZ2xCbGVuZCwgYm9vbCBpc0FscGhhKQoreworICAg
IEQzRDExX0JMRU5EIGQzZEJsZW5kID0gRDNEMTFfQkxFTkRfWkVSTzsKKworICAgIHN3aXRjaCAo
Z2xCbGVuZCkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfWkVSTzoKKyAgICAgICAgICAgIGQzZEJs
ZW5kID0gRDNEMTFfQkxFTkRfWkVSTzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEdMX09ORToKKyAgICAgICAgICAgIGQzZEJsZW5kID0gRDNEMTFfQkxFTkRfT05FOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfU1JDX0NPTE9SOgorICAgICAgICAgICAgZDNk
QmxlbmQgPSAoaXNBbHBoYSA/IEQzRDExX0JMRU5EX1NSQ19BTFBIQSA6IEQzRDExX0JMRU5EX1NS
Q19DT0xPUik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNf
U1JDX0NPTE9SOgorICAgICAgICAgICAgZDNkQmxlbmQgPSAoaXNBbHBoYSA/IEQzRDExX0JMRU5E
X0lOVl9TUkNfQUxQSEEgOiBEM0QxMV9CTEVORF9JTlZfU1JDX0NPTE9SKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEdMX0RTVF9DT0xPUjoKKyAgICAgICAgICAgIGQzZEJsZW5k
ID0gKGlzQWxwaGEgPyBEM0QxMV9CTEVORF9ERVNUX0FMUEhBIDogRDNEMTFfQkxFTkRfREVTVF9D
T0xPUik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfRFNU
X0NPTE9SOgorICAgICAgICAgICAgZDNkQmxlbmQgPSAoaXNBbHBoYSA/IEQzRDExX0JMRU5EX0lO
Vl9ERVNUX0FMUEhBIDogRDNEMTFfQkxFTkRfSU5WX0RFU1RfQ09MT1IpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgR0xfU1JDX0FMUEhBOgorICAgICAgICAgICAgZDNkQmxlbmQg
PSBEM0QxMV9CTEVORF9TUkNfQUxQSEE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBHTF9PTkVfTUlOVVNfU1JDX0FMUEhBOgorICAgICAgICAgICAgZDNkQmxlbmQgPSBEM0QxMV9C
TEVORF9JTlZfU1JDX0FMUEhBOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xf
RFNUX0FMUEhBOgorICAgICAgICAgICAgZDNkQmxlbmQgPSBEM0QxMV9CTEVORF9ERVNUX0FMUEhB
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0RTVF9BTFBI
QToKKyAgICAgICAgICAgIGQzZEJsZW5kID0gRDNEMTFfQkxFTkRfSU5WX0RFU1RfQUxQSEE7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9DT05TVEFOVF9DT0xPUjoKKyAgICAg
ICAgICAgIGQzZEJsZW5kID0gRDNEMTFfQkxFTkRfQkxFTkRfRkFDVE9SOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SOgorICAgICAg
ICAgICAgZDNkQmxlbmQgPSBEM0QxMV9CTEVORF9JTlZfQkxFTkRfRkFDVE9SOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfQ09OU1RBTlRfQUxQSEE6CisgICAgICAgICAgICBk
M2RCbGVuZCA9IEQzRDExX0JMRU5EX0JMRU5EX0ZBQ1RPUjsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQToKKyAgICAgICAgICAgIGQz
ZEJsZW5kID0gRDNEMTFfQkxFTkRfSU5WX0JMRU5EX0ZBQ1RPUjsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEdMX1NSQ19BTFBIQV9TQVRVUkFURToKKyAgICAgICAgICAgIGQzZEJs
ZW5kID0gRDNEMTFfQkxFTkRfU1JDX0FMUEhBX1NBVDsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gZDNkQmxlbmQ7Cit9CisKK0QzRDExX0JMRU5EX09QIENvbnZlcnRCbGVuZE9wKEdMZW51
bSBnbEJsZW5kT3ApCit7CisgICAgRDNEMTFfQkxFTkRfT1AgZDNkQmxlbmRPcCA9IEQzRDExX0JM
RU5EX09QX0FERDsKKworICAgIHN3aXRjaCAoZ2xCbGVuZE9wKQorICAgIHsKKyAgICAgICAgY2Fz
ZSBHTF9GVU5DX0FERDoKKyAgICAgICAgICAgIGQzZEJsZW5kT3AgPSBEM0QxMV9CTEVORF9PUF9B
REQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9GVU5DX1NVQlRSQUNUOgor
ICAgICAgICAgICAgZDNkQmxlbmRPcCA9IEQzRDExX0JMRU5EX09QX1NVQlRSQUNUOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUOgorICAg
ICAgICAgICAgZDNkQmxlbmRPcCA9IEQzRDExX0JMRU5EX09QX1JFVl9TVUJUUkFDVDsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX01JTjoKKyAgICAgICAgICAgIGQzZEJsZW5k
T3AgPSBEM0QxMV9CTEVORF9PUF9NSU47CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBHTF9NQVg6CisgICAgICAgICAgICBkM2RCbGVuZE9wID0gRDNEMTFfQkxFTkRfT1BfTUFYOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgIH0KKworICAgIHJldHVybiBkM2RCbGVuZE9wOworfQorCitVSU5UOCBDb252
ZXJ0Q29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUsIGJvb2wgYWxwaGEp
Cit7CisgICAgVUlOVDggbWFzayA9IDA7CisgICAgaWYgKHJlZCkKKyAgICB7CisgICAgICAgIG1h
c2sgfD0gRDNEMTFfQ09MT1JfV1JJVEVfRU5BQkxFX1JFRDsKKyAgICB9CisgICAgaWYgKGdyZWVu
KQorICAgIHsKKyAgICAgICAgbWFzayB8PSBEM0QxMV9DT0xPUl9XUklURV9FTkFCTEVfR1JFRU47
CisgICAgfQorICAgIGlmIChibHVlKQorICAgIHsKKyAgICAgICAgbWFzayB8PSBEM0QxMV9DT0xP
Ul9XUklURV9FTkFCTEVfQkxVRTsKKyAgICB9CisgICAgaWYgKGFscGhhKQorICAgIHsKKyAgICAg
ICAgbWFzayB8PSBEM0QxMV9DT0xPUl9XUklURV9FTkFCTEVfQUxQSEE7CisgICAgfQorICAgIHJl
dHVybiBtYXNrOworfQorCitEM0QxMV9DVUxMX01PREUgQ29udmVydEN1bGxNb2RlKGJvb2wgY3Vs
bEVuYWJsZWQsIEdMZW51bSBjdWxsTW9kZSkKK3sKKyAgICBEM0QxMV9DVUxMX01PREUgY3VsbCA9
IEQzRDExX0NVTExfTk9ORTsKKworICAgIGlmIChjdWxsRW5hYmxlZCkKKyAgICB7CisgICAgICAg
IHN3aXRjaCAoY3VsbE1vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgR0xfRlJPTlQ6
CisgICAgICAgICAgICAgICAgY3VsbCA9IEQzRDExX0NVTExfRlJPTlQ7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdMX0JBQ0s6CisgICAgICAgICAgICAgICAgY3Vs
bCA9IEQzRDExX0NVTExfQkFDSzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgR0xfRlJPTlRfQU5EX0JBQ0s6CisgICAgICAgICAgICAgICAgY3VsbCA9IEQzRDExX0NV
TExfTk9ORTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNl
CisgICAgeworICAgICAgICBjdWxsID0gRDNEMTFfQ1VMTF9OT05FOworICAgIH0KKworICAgIHJl
dHVybiBjdWxsOworfQorCitEM0QxMV9DT01QQVJJU09OX0ZVTkMgQ29udmVydENvbXBhcmlzb24o
R0xlbnVtIGNvbXBhcmlzb24pCit7CisgICAgRDNEMTFfQ09NUEFSSVNPTl9GVU5DIGQzZENvbXAg
PSBEM0QxMV9DT01QQVJJU09OX05FVkVSOworICAgIHN3aXRjaCAoY29tcGFyaXNvbikKKyAgICB7
CisgICAgICAgIGNhc2UgR0xfTkVWRVI6CisgICAgICAgICAgICBkM2RDb21wID0gRDNEMTFfQ09N
UEFSSVNPTl9ORVZFUjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX0FMV0FZ
UzoKKyAgICAgICAgICAgIGQzZENvbXAgPSBEM0QxMV9DT01QQVJJU09OX0FMV0FZUzsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX0xFU1M6CisgICAgICAgICAgICBkM2RDb21w
ID0gRDNEMTFfQ09NUEFSSVNPTl9MRVNTOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgR0xfTEVRVUFMOgorICAgICAgICAgICAgZDNkQ29tcCA9IEQzRDExX0NPTVBBUklTT05fTEVT
U19FUVVBTDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX0VRVUFMOgorICAg
ICAgICAgICAgZDNkQ29tcCA9IEQzRDExX0NPTVBBUklTT05fRVFVQUw7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBHTF9HUkVBVEVSOgorICAgICAgICAgICAgZDNkQ29tcCA9IEQz
RDExX0NPTVBBUklTT05fR1JFQVRFUjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEdMX0dFUVVBTDoKKyAgICAgICAgICAgIGQzZENvbXAgPSBEM0QxMV9DT01QQVJJU09OX0dSRUFU
RVJfRVFVQUw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9OT1RFUVVBTDoK
KyAgICAgICAgICAgIGQzZENvbXAgPSBEM0QxMV9DT01QQVJJU09OX05PVF9FUVVBTDsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUo
KTsKKyAgICB9CisKKyAgICByZXR1cm4gZDNkQ29tcDsKK30KKworRDNEMTFfREVQVEhfV1JJVEVf
TUFTSyBDb252ZXJ0RGVwdGhNYXNrKGJvb2wgZGVwdGhXcml0ZUVuYWJsZWQpCit7CisgICAgcmV0
dXJuIGRlcHRoV3JpdGVFbmFibGVkID8gRDNEMTFfREVQVEhfV1JJVEVfTUFTS19BTEwgOiBEM0Qx
MV9ERVBUSF9XUklURV9NQVNLX1pFUk87Cit9CisKK1VJTlQ4IENvbnZlcnRTdGVuY2lsTWFzayhH
THVpbnQgc3RlbmNpbG1hc2spCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFVJTlQ4PihzdGVu
Y2lsbWFzayk7Cit9CisKK0QzRDExX1NURU5DSUxfT1AgQ29udmVydFN0ZW5jaWxPcChHTGVudW0g
c3RlbmNpbE9wKQoreworICAgIEQzRDExX1NURU5DSUxfT1AgZDNkU3RlbmNpbE9wID0gRDNEMTFf
U1RFTkNJTF9PUF9LRUVQOworCisgICAgc3dpdGNoIChzdGVuY2lsT3ApCisgICAgeworICAgICAg
ICBjYXNlIEdMX1pFUk86CisgICAgICAgICAgICBkM2RTdGVuY2lsT3AgPSBEM0QxMV9TVEVOQ0lM
X09QX1pFUk87CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9LRUVQOgorICAg
ICAgICAgICAgZDNkU3RlbmNpbE9wID0gRDNEMTFfU1RFTkNJTF9PUF9LRUVQOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfUkVQTEFDRToKKyAgICAgICAgICAgIGQzZFN0ZW5j
aWxPcCA9IEQzRDExX1NURU5DSUxfT1BfUkVQTEFDRTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEdMX0lOQ1I6CisgICAgICAgICAgICBkM2RTdGVuY2lsT3AgPSBEM0QxMV9TVEVO
Q0lMX09QX0lOQ1JfU0FUOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfREVD
UjoKKyAgICAgICAgICAgIGQzZFN0ZW5jaWxPcCA9IEQzRDExX1NURU5DSUxfT1BfREVDUl9TQVQ7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9JTlZFUlQ6CisgICAgICAgICAg
ICBkM2RTdGVuY2lsT3AgPSBEM0QxMV9TVEVOQ0lMX09QX0lOVkVSVDsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEdMX0lOQ1JfV1JBUDoKKyAgICAgICAgICAgIGQzZFN0ZW5jaWxP
cCA9IEQzRDExX1NURU5DSUxfT1BfSU5DUjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEdMX0RFQ1JfV1JBUDoKKyAgICAgICAgICAgIGQzZFN0ZW5jaWxPcCA9IEQzRDExX1NURU5D
SUxfT1BfREVDUjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gZDNkU3RlbmNpbE9wOwor
fQorCitEM0QxMV9GSUxURVIgQ29udmVydEZpbHRlcihHTGVudW0gbWluRmlsdGVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1hZ0ZpbHRlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsb2F0IG1heEFuaXNvdHJvcHksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gY29tcGFyaXNvbk1vZGUpCit7CisgICAgYm9vbCBjb21wYXJpc29uID0gY29tcGFy
aXNvbk1vZGUgIT0gR0xfTk9ORTsKKworICAgIGlmIChtYXhBbmlzb3Ryb3B5ID4gMS4wZikKKyAg
ICB7CisgICAgICAgIHJldHVybiBEM0QxMV9FTkNPREVfQU5JU09UUk9QSUNfRklMVEVSKHN0YXRp
Y19jYXN0PEQzRDExX0NPTVBBUklTT05fRlVOQz4oY29tcGFyaXNvbikpOworICAgIH0KKyAgICBl
bHNlCisgICAgeworICAgICAgICBEM0QxMV9GSUxURVJfVFlQRSBkeE1pbiA9IEQzRDExX0ZJTFRF
Ul9UWVBFX1BPSU5UOworICAgICAgICBEM0QxMV9GSUxURVJfVFlQRSBkeE1pcCA9IEQzRDExX0ZJ
TFRFUl9UWVBFX1BPSU5UOworICAgICAgICBzd2l0Y2ggKG1pbkZpbHRlcikKKyAgICAgICAgewor
ICAgICAgICAgICAgY2FzZSBHTF9ORUFSRVNUOgorICAgICAgICAgICAgICAgIGR4TWluID0gRDNE
MTFfRklMVEVSX1RZUEVfUE9JTlQ7CisgICAgICAgICAgICAgICAgZHhNaXAgPSBEM0QxMV9GSUxU
RVJfVFlQRV9QT0lOVDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
R0xfTElORUFSOgorICAgICAgICAgICAgICAgIGR4TWluID0gRDNEMTFfRklMVEVSX1RZUEVfTElO
RUFSOworICAgICAgICAgICAgICAgIGR4TWlwID0gRDNEMTFfRklMVEVSX1RZUEVfUE9JTlQ7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdMX05FQVJFU1RfTUlQTUFQ
X05FQVJFU1Q6CisgICAgICAgICAgICAgICAgZHhNaW4gPSBEM0QxMV9GSUxURVJfVFlQRV9QT0lO
VDsKKyAgICAgICAgICAgICAgICBkeE1pcCA9IEQzRDExX0ZJTFRFUl9UWVBFX1BPSU5UOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBHTF9MSU5FQVJfTUlQTUFQX05F
QVJFU1Q6CisgICAgICAgICAgICAgICAgZHhNaW4gPSBEM0QxMV9GSUxURVJfVFlQRV9MSU5FQVI7
CisgICAgICAgICAgICAgICAgZHhNaXAgPSBEM0QxMV9GSUxURVJfVFlQRV9QT0lOVDsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgR0xfTkVBUkVTVF9NSVBNQVBfTElO
RUFSOgorICAgICAgICAgICAgICAgIGR4TWluID0gRDNEMTFfRklMVEVSX1RZUEVfUE9JTlQ7Cisg
ICAgICAgICAgICAgICAgZHhNaXAgPSBEM0QxMV9GSUxURVJfVFlQRV9MSU5FQVI7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdMX0xJTkVBUl9NSVBNQVBfTElORUFS
OgorICAgICAgICAgICAgICAgIGR4TWluID0gRDNEMTFfRklMVEVSX1RZUEVfTElORUFSOworICAg
ICAgICAgICAgICAgIGR4TWlwID0gRDNEMTFfRklMVEVSX1RZUEVfTElORUFSOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBVTlJF
QUNIQUJMRSgpOworICAgICAgICB9CisKKyAgICAgICAgRDNEMTFfRklMVEVSX1RZUEUgZHhNYWcg
PSBEM0QxMV9GSUxURVJfVFlQRV9QT0lOVDsKKyAgICAgICAgc3dpdGNoIChtYWdGaWx0ZXIpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgR0xfTkVBUkVTVDoKKyAgICAgICAgICAgICAgICBk
eE1hZyA9IEQzRDExX0ZJTFRFUl9UWVBFX1BPSU5UOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBHTF9MSU5FQVI6CisgICAgICAgICAgICAgICAgZHhNYWcgPSBEM0Qx
MV9GSUxURVJfVFlQRV9MSU5FQVI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gRDNEMTFfRU5DT0RFX0JBU0lDX0ZJTFRFUihkeE1pbiwgZHhNYWcsIGR4
TWlwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxEM0QxMV9DT01QQVJJU09OX0ZVTkM+KGNvbXBhcmlzb24pKTsKKyAgICB9Cit9CisKK0QzRDEx
X1RFWFRVUkVfQUREUkVTU19NT0RFIENvbnZlcnRUZXh0dXJlV3JhcChHTGVudW0gd3JhcCkKK3sK
KyAgICBzd2l0Y2ggKHdyYXApCisgICAgeworICAgICAgICBjYXNlIEdMX1JFUEVBVDoKKyAgICAg
ICAgICAgIHJldHVybiBEM0QxMV9URVhUVVJFX0FERFJFU1NfV1JBUDsKKyAgICAgICAgY2FzZSBH
TF9DTEFNUF9UT19FREdFOgorICAgICAgICAgICAgcmV0dXJuIEQzRDExX1RFWFRVUkVfQUREUkVT
U19DTEFNUDsKKyAgICAgICAgY2FzZSBHTF9NSVJST1JFRF9SRVBFQVQ6CisgICAgICAgICAgICBy
ZXR1cm4gRDNEMTFfVEVYVFVSRV9BRERSRVNTX01JUlJPUjsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0dXJuIEQzRDExX1RFWFRV
UkVfQUREUkVTU19XUkFQOworfQorCitVSU5UIENvbnZlcnRNYXhBbmlzb3Ryb3B5KGZsb2F0IG1h
eEFuaXNvdHJvcHksIEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKK3sKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8VUlOVD4oc3RkOjptaW4obWF4QW5pc290cm9weSwgZDNkMTFfZ2w6Okdl
dE1heGltdW1Bbmlzb3Ryb3B5KGZlYXR1cmVMZXZlbCkpKTsKK30KKworRDNEMTFfUVVFUlkgQ29u
dmVydFF1ZXJ5VHlwZShHTGVudW0gcXVlcnlUeXBlKQoreworICAgIHN3aXRjaCAocXVlcnlUeXBl
KQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9BTllfU0FNUExFU19QQVNTRURfRVhUOgorICAgICAg
ICBjYXNlIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkVfRVhUOgorICAgICAgICAg
ICAgcmV0dXJuIEQzRDExX1FVRVJZX09DQ0xVU0lPTjsKKyAgICAgICAgY2FzZSBHTF9UUkFOU0ZP
Uk1fRkVFREJBQ0tfUFJJTUlUSVZFU19XUklUVEVOOgorICAgICAgICAgICAgcmV0dXJuIEQzRDEx
X1FVRVJZX1NPX1NUQVRJU1RJQ1M7CisgICAgICAgIGNhc2UgR0xfVElNRV9FTEFQU0VEX0VYVDoK
KyAgICAgICAgICAgIC8vIFR3byBpbnRlcm5hbCBxdWVyaWVzIGFyZSBhbHNvIGNyZWF0ZWQgZm9y
IGJlZ2luL2VuZCB0aW1lc3RhbXBzCisgICAgICAgICAgICByZXR1cm4gRDNEMTFfUVVFUllfVElN
RVNUQU1QX0RJU0pPSU5UOworICAgICAgICBjYXNlIEdMX0NPTU1BTkRTX0NPTVBMRVRFRF9DSFJP
TUlVTToKKyAgICAgICAgICAgIHJldHVybiBEM0QxMV9RVUVSWV9FVkVOVDsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gRDNE
MTFfUVVFUllfRVZFTlQ7CisgICAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UgZ2xfZDNkMTEKKwog
bmFtZXNwYWNlIGQzZDExCiB7CiAKQEAgLTEzNjIsMTEgKzE2NzgsMTEgQEAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8RDNEMTFfU1VCUkVTT1VSQ0VfREFUQT4g
Km91dFN1YnJlc291cmNlRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
Ojp2ZWN0b3I8c3RkOjp2ZWN0b3I8QllURT4+ICpvdXREYXRhKQogewotICAgIGNvbnN0IGQzZDEx
OjpUZXh0dXJlRm9ybWF0ICZkM2RGb3JtYXRJbmZvID0gZDNkMTE6OkdldFRleHR1cmVGb3JtYXRJ
bmZvKGludGVybmFsRm9ybWF0LCByZW5kZXJlcjExRGV2aWNlQ2Fwcyk7CisgICAgY29uc3QgZDNk
MTE6OkZvcm1hdCAmZDNkRm9ybWF0SW5mbyA9IGQzZDExOjpGb3JtYXQ6OkdldChpbnRlcm5hbEZv
cm1hdCwgcmVuZGVyZXIxMURldmljZUNhcHMpOwogICAgIEFTU0VSVChkM2RGb3JtYXRJbmZvLmRh
dGFJbml0aWFsaXplckZ1bmN0aW9uICE9IE5VTEwpOwogCiAgICAgY29uc3QgZDNkMTE6OkRYR0lG
b3JtYXRTaXplICZkeGdpRm9ybWF0SW5mbyA9Ci0gICAgICAgIGQzZDExOjpHZXREWEdJRm9ybWF0
U2l6ZUluZm8oZDNkRm9ybWF0SW5mby5mb3JtYXRTZXQtPnRleEZvcm1hdCk7CisgICAgICAgIGQz
ZDExOjpHZXREWEdJRm9ybWF0U2l6ZUluZm8oZDNkRm9ybWF0SW5mby50ZXhGb3JtYXQpOwogCiAg
ICAgb3V0U3VicmVzb3VyY2VEYXRhLT5yZXNpemUobWlwTGV2ZWxzKTsKICAgICBvdXREYXRhLT5y
ZXNpemUobWlwTGV2ZWxzKTsKQEAgLTE1MDEsMTMgKzE4MTcsNDggQEAKICAgICByZXR1cm4gbVJl
c291cmNlOwogfQogCi1Xb3JrYXJvdW5kc0QzRCBHZW5lcmF0ZVdvcmthcm91bmRzKEQzRF9GRUFU
VVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKK1dvcmthcm91bmRzRDNEIEdlbmVyYXRlV29ya2Fyb3Vu
ZHMoY29uc3QgUmVuZGVyZXIxMURldmljZUNhcHMgJmRldmljZUNhcHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IERYR0lfQURBUFRFUl9ERVNDICZhZGFwdGVyRGVz
YykKIHsKKyAgICBib29sIGlzOV8zID0gKGRldmljZUNhcHMuZmVhdHVyZUxldmVsIDw9IEQzRF9G
RUFUVVJFX0xFVkVMXzlfMyk7CisKICAgICBXb3JrYXJvdW5kc0QzRCB3b3JrYXJvdW5kczsKICAg
ICB3b3JrYXJvdW5kcy5tcnRQZXJmV29ya2Fyb3VuZCA9IHRydWU7CiAgICAgd29ya2Fyb3VuZHMu
c2V0RGF0YUZhc3RlclRoYW5JbWFnZVVwbG9hZCA9IHRydWU7Ci0gICAgd29ya2Fyb3VuZHMuemVy
b01heExvZFdvcmthcm91bmQgPSAoZmVhdHVyZUxldmVsIDw9IEQzRF9GRUFUVVJFX0xFVkVMXzlf
Myk7Ci0gICAgd29ya2Fyb3VuZHMudXNlSW5zdGFuY2VkUG9pbnRTcHJpdGVFbXVsYXRpb24gPSAo
ZmVhdHVyZUxldmVsIDw9IEQzRF9GRUFUVVJFX0xFVkVMXzlfMyk7CisgICAgd29ya2Fyb3VuZHMu
emVyb01heExvZFdvcmthcm91bmQgICAgICAgICAgICAgPSBpczlfMzsKKyAgICB3b3JrYXJvdW5k
cy51c2VJbnN0YW5jZWRQb2ludFNwcml0ZUVtdWxhdGlvbiA9IGlzOV8zOworCisgICAgLy8gVE9E
TyhqbWFkaWxsKTogTmFycm93IHByb2JsZW1hdGljIGRyaXZlciByYW5nZS4KKyAgICBpZiAoYWRh
cHRlckRlc2MuVmVuZG9ySWQgPT0gVkVORE9SX0lEX05WSURJQSkKKyAgICB7CisgICAgICAgIGlm
IChkZXZpY2VDYXBzLmRyaXZlclZlcnNpb24udmFsaWQoKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgV09SRCBwYXJ0MSA9IEhJV09SRChkZXZpY2VDYXBzLmRyaXZlclZlcnNpb24udmFsdWUoKS5M
b3dQYXJ0KTsKKyAgICAgICAgICAgIFdPUkQgcGFydDIgPSBMT1dPUkQoZGV2aWNlQ2Fwcy5kcml2
ZXJWZXJzaW9uLnZhbHVlKCkuTG93UGFydCk7CisKKyAgICAgICAgICAgIC8vIERpc2FibGUgdGhl
IHdvcmthcm91bmQgdG8gZml4IGEgc2Vjb25kIGRyaXZlciBidWcgb24gbmV3ZXIgTlZJRElBLgor
ICAgICAgICAgICAgd29ya2Fyb3VuZHMuZGVwdGhTdGVuY2lsQmxpdEV4dHJhQ29weSA9IChwYXJ0
MSA8PSAxM3UgJiYgcGFydDIgPCA2ODgxKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHdvcmthcm91bmRzLmRlcHRoU3RlbmNpbEJsaXRFeHRyYUNvcHkg
PSB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gVE9ETyhqbWFkaWxsKTogRGlzYWJs
ZSB3b3JrYXJvdW5kIHdoZW4gd2UgaGF2ZSBhIGZpeGVkIGNvbXBpbGVyIERMTC4KKyAgICB3b3Jr
YXJvdW5kcy5leHBhbmRJbnRlZ2VyUG93RXhwcmVzc2lvbnMgPSB0cnVlOworCisgICAgd29ya2Fy
b3VuZHMuZmx1c2hBZnRlckVuZGluZ1RyYW5zZm9ybUZlZWRiYWNrID0gKGFkYXB0ZXJEZXNjLlZl
bmRvcklkID09IFZFTkRPUl9JRF9OVklESUEpOworICAgIHdvcmthcm91bmRzLmdldERpbWVuc2lv
bnNJZ25vcmVzQmFzZUxldmVsICAgICA9IChhZGFwdGVyRGVzYy5WZW5kb3JJZCA9PSBWRU5ET1Jf
SURfTlZJRElBKTsKKworICAgIHdvcmthcm91bmRzLnByZUFkZFRleGVsRmV0Y2hPZmZzZXRzID0g
KGFkYXB0ZXJEZXNjLlZlbmRvcklkID09IFZFTkRPUl9JRF9JTlRFTCk7CisgICAgd29ya2Fyb3Vu
ZHMuZGlzYWJsZUI1RzZSNVN1cHBvcnQgICAgPSAoYWRhcHRlckRlc2MuVmVuZG9ySWQgPT0gVkVO
RE9SX0lEX0lOVEVMKTsKKyAgICB3b3JrYXJvdW5kcy5yZXdyaXRlVW5hcnlNaW51c09wZXJhdG9y
ID0gKGFkYXB0ZXJEZXNjLlZlbmRvcklkID09IFZFTkRPUl9JRF9JTlRFTCk7CisgICAgd29ya2Fy
b3VuZHMuZW11bGF0ZUlzbmFuRmxvYXQgICAgICAgICA9IChhZGFwdGVyRGVzYy5WZW5kb3JJZCA9
PSBWRU5ET1JfSURfSU5URUwpOworCisgICAgLy8gVE9ETyhqbWFkaWxsKTogRGlzYWJsZSB3aGVu
IHdlIGhhdmUgYSBmaXhlZCBkcml2ZXIgdmVyc2lvbi4KKyAgICB3b3JrYXJvdW5kcy5lbXVsYXRl
VGlueVN0ZW5jaWxUZXh0dXJlcyA9IChhZGFwdGVyRGVzYy5WZW5kb3JJZCA9PSBWRU5ET1JfSURf
QU1EKTsKKwogICAgIHJldHVybiB3b3JrYXJvdW5kczsKIH0KIApAQCAtMTUyNiw3ICsxODc3LDcg
QEAKIFRleHR1cmVIZWxwZXIxMTo6VGV4dHVyZUhlbHBlcjExKCkKICAgICA6IG1UZXh0dXJlVHlw
ZShHTF9OT05FKSwKICAgICAgIG1Gb3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiksCi0gICAgICBt
QU5HTEVGb3JtYXQoZDNkMTE6OkFOR0xFX0ZPUk1BVF9OT05FKSwKKyAgICAgIG1Gb3JtYXRTZXQo
bnVsbHB0ciksCiAgICAgICBtU2FtcGxlQ291bnQoMCksCiAgICAgICBtVGV4dHVyZTJEKG51bGxw
dHIpLAogICAgICAgbVRleHR1cmUzRChudWxscHRyKQpAQCAtMTUzNyw3ICsxODg4LDcgQEAKICAg
ICA6IG1UZXh0dXJlVHlwZSh0b0NvcHkubVRleHR1cmVUeXBlKSwKICAgICAgIG1FeHRlbnRzKHRv
Q29weS5tRXh0ZW50cyksCiAgICAgICBtRm9ybWF0KHRvQ29weS5tRm9ybWF0KSwKLSAgICAgIG1B
TkdMRUZvcm1hdCh0b0NvcHkubUFOR0xFRm9ybWF0KSwKKyAgICAgIG1Gb3JtYXRTZXQodG9Db3B5
Lm1Gb3JtYXRTZXQpLAogICAgICAgbVNhbXBsZUNvdW50KHRvQ29weS5tU2FtcGxlQ291bnQpLAog
ICAgICAgbVRleHR1cmUyRCh0b0NvcHkubVRleHR1cmUyRCksCiAgICAgICBtVGV4dHVyZTNEKHRv
Q29weS5tVGV4dHVyZTNEKQpAQCAtMTU0NywxMCArMTg5OCwxMCBAQAogCiAvLyBzdGF0aWMKIFRl
eHR1cmVIZWxwZXIxMSBUZXh0dXJlSGVscGVyMTE6Ok1ha2VBbmRSZWZlcmVuY2UoSUQzRDExUmVz
b3VyY2UgKmdlbmVyaWNSZXNvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZDNkMTE6OkFOR0xFRm9ybWF0IGFuZ2xlRm9ybWF0KQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkM2QxMTo6
Rm9ybWF0ICZmb3JtYXRTZXQpCiB7CiAgICAgVGV4dHVyZUhlbHBlcjExIG5ld0hlbHBlcjsKLSAg
ICBuZXdIZWxwZXIubUFOR0xFRm9ybWF0ID0gYW5nbGVGb3JtYXQ7CisgICAgbmV3SGVscGVyLm1G
b3JtYXRTZXQgICA9ICZmb3JtYXRTZXQ7CiAgICAgbmV3SGVscGVyLm1UZXh0dXJlMkQgICA9IGQz
ZDExOjpEeW5hbWljQ2FzdENvbU9iamVjdDxJRDNEMTFUZXh0dXJlMkQ+KGdlbmVyaWNSZXNvdXJj
ZSk7CiAgICAgbmV3SGVscGVyLm1UZXh0dXJlM0QgICA9IGQzZDExOjpEeW5hbWljQ2FzdENvbU9i
amVjdDxJRDNEMTFUZXh0dXJlM0Q+KGdlbmVyaWNSZXNvdXJjZSk7CiAgICAgbmV3SGVscGVyLm1U
ZXh0dXJlVHlwZSA9IG5ld0hlbHBlci5tVGV4dHVyZTJEID8gR0xfVEVYVFVSRV8yRCA6IEdMX1RF
WFRVUkVfM0Q7CkBAIC0xNTYwLDEwICsxOTExLDEwIEBACiAKIC8vIHN0YXRpYwogVGV4dHVyZUhl
bHBlcjExIFRleHR1cmVIZWxwZXIxMTo6TWFrZUFuZFBvc3Nlc3MyRChJRDNEMTFUZXh0dXJlMkQg
KnRleFRvT3duLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkM2QxMTo6QU5HTEVGb3JtYXQgYW5nbGVGb3JtYXQpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGQzZDExOjpGb3JtYXQgJmZvcm1h
dFNldCkKIHsKICAgICBUZXh0dXJlSGVscGVyMTEgbmV3SGVscGVyOwotICAgIG5ld0hlbHBlci5t
QU5HTEVGb3JtYXQgPSBhbmdsZUZvcm1hdDsKKyAgICBuZXdIZWxwZXIubUZvcm1hdFNldCAgID0g
JmZvcm1hdFNldDsKICAgICBuZXdIZWxwZXIubVRleHR1cmUyRCAgID0gdGV4VG9Pd247CiAgICAg
bmV3SGVscGVyLm1UZXh0dXJlVHlwZSA9IEdMX1RFWFRVUkVfMkQ7CiAgICAgbmV3SGVscGVyLmlu
aXREZXNjKCk7CkBAIC0xNTcyLDEwICsxOTIzLDEwIEBACiAKIC8vIHN0YXRpYwogVGV4dHVyZUhl
bHBlcjExIFRleHR1cmVIZWxwZXIxMTo6TWFrZUFuZFBvc3Nlc3MzRChJRDNEMTFUZXh0dXJlM0Qg
KnRleFRvT3duLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkM2QxMTo6QU5HTEVGb3JtYXQgYW5nbGVGb3JtYXQpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGQzZDExOjpGb3JtYXQgJmZvcm1h
dFNldCkKIHsKICAgICBUZXh0dXJlSGVscGVyMTEgbmV3SGVscGVyOwotICAgIG5ld0hlbHBlci5t
QU5HTEVGb3JtYXQgPSBhbmdsZUZvcm1hdDsKKyAgICBuZXdIZWxwZXIubUZvcm1hdFNldCAgID0g
JmZvcm1hdFNldDsKICAgICBuZXdIZWxwZXIubVRleHR1cmUzRCAgID0gdGV4VG9Pd247CiAgICAg
bmV3SGVscGVyLm1UZXh0dXJlVHlwZSA9IEdMX1RFWFRVUkVfM0Q7CiAgICAgbmV3SGVscGVyLmlu
aXREZXNjKCk7CkBAIC0xNjA4LDcgKzE5NTksNyBAQAogICAgICAgICBtRm9ybWF0ICAgICAgICAg
PSBkZXNjM0QuRm9ybWF0OwogICAgICAgICBtU2FtcGxlQ291bnQgICAgPSAxOwogICAgIH0KLSAg
ICBBU1NFUlQobUZvcm1hdCA9PSBkM2QxMTo6R2V0QU5HTEVGb3JtYXRTZXQobUFOR0xFRm9ybWF0
KS50ZXhGb3JtYXQpOworICAgIEFTU0VSVChtRm9ybWF0U2V0ICYmIG1Gb3JtYXQgPT0gbUZvcm1h
dFNldC0+dGV4Rm9ybWF0KTsKIH0KIAogVGV4dHVyZUhlbHBlcjExOjp+VGV4dHVyZUhlbHBlcjEx
KCkKQEAgLTE2MzEsMTAgKzE5ODIsMTAgQEAKICAgICBtVGV4dHVyZVR5cGUgPSB0ZXh0dXJlLm1U
ZXh0dXJlVHlwZTsKICAgICBtRXh0ZW50cyAgICAgPSB0ZXh0dXJlLm1FeHRlbnRzOwogICAgIG1G
b3JtYXQgICAgICA9IHRleHR1cmUubUZvcm1hdDsKLSAgICBtQU5HTEVGb3JtYXQgPSB0ZXh0dXJl
Lm1BTkdMRUZvcm1hdDsKKyAgICBtRm9ybWF0U2V0ICAgPSB0ZXh0dXJlLm1Gb3JtYXRTZXQ7CiAg
ICAgbVNhbXBsZUNvdW50ID0gdGV4dHVyZS5tU2FtcGxlQ291bnQ7CiAgICAgbVRleHR1cmUyRCAg
ID0gdGV4dHVyZS5tVGV4dHVyZTJEOwotICAgIG1UZXh0dXJlM0QgPSB0ZXh0dXJlLm1UZXh0dXJl
M0Q7CisgICAgbVRleHR1cmUzRCAgID0gdGV4dHVyZS5tVGV4dHVyZTNEOwogICAgIHRleHR1cmUu
cmVzZXQoKTsKICAgICByZXR1cm4gKnRoaXM7CiB9CkBAIC0xNjQ0LDE1ICsxOTk1LDIxIEBACiAg
ICAgbVRleHR1cmVUeXBlID0gR0xfTk9ORTsKICAgICBtRXh0ZW50cyAgICAgPSBnbDo6RXh0ZW50
cygpOwogICAgIG1Gb3JtYXQgICAgICA9IERYR0lfRk9STUFUX1VOS05PV047CisgICAgbUZvcm1h
dFNldCAgID0gbnVsbHB0cjsKICAgICBtU2FtcGxlQ291bnQgPSAwOwogICAgIG1UZXh0dXJlMkQg
ICA9IG51bGxwdHI7CiAgICAgbVRleHR1cmUzRCAgID0gbnVsbHB0cjsKIH0KIAorYm9vbCBUZXh0
dXJlSGVscGVyMTE6OnZhbGlkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKG1UZXh0dXJlVHlwZSAh
PSBHTF9OT05FKTsKK30KKwogZ2w6OkVycm9yT3JSZXN1bHQ8VGV4dHVyZUhlbHBlcjExPiBDcmVh
dGVTdGFnaW5nVGV4dHVyZShHTGVudW0gdGV4dHVyZVR5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUIGR4Z2lGb3Jt
YXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGQzZDExOjpBTkdMRUZvcm1hdCBhbmdsZUZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZDNkMTE6OkZvcm1hdCAm
Zm9ybWF0U2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhZ2luZ0FjY2VzcyByZWFkQW5k
V3JpdGVBY2Nlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIElEM0QxMURldmljZSAqZGV2aWNlKQogewogICAgIGlmICh0ZXh0dXJlVHlw
ZSA9PSBHTF9URVhUVVJFXzJEKQpAQCAtMTY2Miw3ICsyMDE5LDcgQEAKICAgICAgICAgc3RhZ2lu
Z0Rlc2MuSGVpZ2h0ICAgICAgICAgICAgID0gc2l6ZS5oZWlnaHQ7CiAgICAgICAgIHN0YWdpbmdE
ZXNjLk1pcExldmVscyAgICAgICAgICA9IDE7CiAgICAgICAgIHN0YWdpbmdEZXNjLkFycmF5U2l6
ZSAgICAgICAgICA9IDE7Ci0gICAgICAgIHN0YWdpbmdEZXNjLkZvcm1hdCAgICAgICAgICAgICA9
IGR4Z2lGb3JtYXQ7CisgICAgICAgIHN0YWdpbmdEZXNjLkZvcm1hdCAgICAgICAgICAgICA9IGZv
cm1hdFNldC50ZXhGb3JtYXQ7CiAgICAgICAgIHN0YWdpbmdEZXNjLlNhbXBsZURlc2MuQ291bnQg
ICA9IDE7CiAgICAgICAgIHN0YWdpbmdEZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7CiAgICAg
ICAgIHN0YWdpbmdEZXNjLlVzYWdlICAgICAgICAgICAgICA9IEQzRDExX1VTQUdFX1NUQUdJTkc7
CkBAIC0xNjcwLDYgKzIwMjcsMTEgQEAKICAgICAgICAgc3RhZ2luZ0Rlc2MuQ1BVQWNjZXNzRmxh
Z3MgICAgID0gRDNEMTFfQ1BVX0FDQ0VTU19SRUFEOwogICAgICAgICBzdGFnaW5nRGVzYy5NaXNj
RmxhZ3MgICAgICAgICAgPSAwOwogCisgICAgICAgIGlmIChyZWFkQW5kV3JpdGVBY2Nlc3MgPT0g
U3RhZ2luZ0FjY2Vzczo6UkVBRF9XUklURSkKKyAgICAgICAgeworICAgICAgICAgICAgc3RhZ2lu
Z0Rlc2MuQ1BVQWNjZXNzRmxhZ3MgfD0gRDNEMTFfQ1BVX0FDQ0VTU19XUklURTsKKyAgICAgICAg
fQorCiAgICAgICAgIElEM0QxMVRleHR1cmUyRCAqc3RhZ2luZ1RleCA9IG51bGxwdHI7CiAgICAg
ICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJnN0YWdpbmdEZXNj
LCBudWxscHRyLCAmc3RhZ2luZ1RleCk7CiAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKQEAg
LTE2NzgsNyArMjA0MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCk7
CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gVGV4dHVyZUhlbHBlcjExOjpNYWtlQW5kUG9z
c2VzczJEKHN0YWdpbmdUZXgsIGFuZ2xlRm9ybWF0KTsKKyAgICAgICAgcmV0dXJuIFRleHR1cmVI
ZWxwZXIxMTo6TWFrZUFuZFBvc3Nlc3MyRChzdGFnaW5nVGV4LCBmb3JtYXRTZXQpOwogICAgIH0K
ICAgICBBU1NFUlQodGV4dHVyZVR5cGUgPT0gR0xfVEVYVFVSRV8zRCk7CiAKQEAgLTE2ODcsNyAr
MjA0OSw3IEBACiAgICAgc3RhZ2luZ0Rlc2MuSGVpZ2h0ICAgICAgICAgPSBzaXplLmhlaWdodDsK
ICAgICBzdGFnaW5nRGVzYy5EZXB0aCAgICAgICAgICA9IDE7CiAgICAgc3RhZ2luZ0Rlc2MuTWlw
TGV2ZWxzICAgICAgPSAxOwotICAgIHN0YWdpbmdEZXNjLkZvcm1hdCAgICAgICAgID0gZHhnaUZv
cm1hdDsKKyAgICBzdGFnaW5nRGVzYy5Gb3JtYXQgICAgICAgICA9IGZvcm1hdFNldC50ZXhGb3Jt
YXQ7CiAgICAgc3RhZ2luZ0Rlc2MuVXNhZ2UgICAgICAgICAgPSBEM0QxMV9VU0FHRV9TVEFHSU5H
OwogICAgIHN0YWdpbmdEZXNjLkJpbmRGbGFncyAgICAgID0gMDsKICAgICBzdGFnaW5nRGVzYy5D
UFVBY2Nlc3NGbGFncyA9IEQzRDExX0NQVV9BQ0NFU1NfUkVBRDsKQEAgLTE3MDEsNyArMjA2Myw3
IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KTsKICAgICB9CiAKLSAgICByZXR1
cm4gVGV4dHVyZUhlbHBlcjExOjpNYWtlQW5kUG9zc2VzczNEKHN0YWdpbmdUZXgsIGFuZ2xlRm9y
bWF0KTsKKyAgICByZXR1cm4gVGV4dHVyZUhlbHBlcjExOjpNYWtlQW5kUG9zc2VzczNEKHN0YWdp
bmdUZXgsIGZvcm1hdFNldCk7CiB9CiAKIGJvb2wgVXNlUHJlc2VudFBhdGhGYXN0KGNvbnN0IFJl
bmRlcmVyMTEgKnJlbmRlcmVyLApAQCAtMTcxNiw0MCArMjA3OCw0IEBACiAgICAgICAgICAgICBy
ZW5kZXJlci0+cHJlc2VudFBhdGhGYXN0RW5hYmxlZCgpKTsKIH0KIAotTm90aWZpY2F0aW9uU2V0
OjpOb3RpZmljYXRpb25TZXQoKQotewotfQotCi1Ob3RpZmljYXRpb25TZXQ6On5Ob3RpZmljYXRp
b25TZXQoKQotewotfQotCi12b2lkIE5vdGlmaWNhdGlvblNldDo6YWRkKGNvbnN0IE5vdGlmaWNh
dGlvbkNhbGxiYWNrICpjYWxsYmFjaykKLXsKLSAgICBBU1NFUlQobUNhbGxiYWNrcy5jb3VudChj
YWxsYmFjaykgPT0gMCk7Ci0gICAgbUNhbGxiYWNrcy5pbnNlcnQoY2FsbGJhY2spOwotfQotCi12
b2lkIE5vdGlmaWNhdGlvblNldDo6cmVtb3ZlKGNvbnN0IE5vdGlmaWNhdGlvbkNhbGxiYWNrICpj
YWxsYmFjaykKLXsKLSAgICBBU1NFUlQobUNhbGxiYWNrcy5jb3VudChjYWxsYmFjaykgPT0gMSk7
Ci0gICAgbUNhbGxiYWNrcy5lcmFzZShjYWxsYmFjayk7Ci19Ci0KLXZvaWQgTm90aWZpY2F0aW9u
U2V0OjpzaWduYWwoKSBjb25zdAotewotICAgIGlmIChtQ2FsbGJhY2tzLmVtcHR5KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGZvciAoY29uc3QgYXV0byAqY2FsbGJhY2sgOiBtQ2FsbGJhY2tz
KQotICAgIHsKLSAgICAgICAgKCpjYWxsYmFjaykoKTsKLSAgICB9Ci19Ci0KLXZvaWQgTm90aWZp
Y2F0aW9uU2V0OjpjbGVhcigpCi17Ci0gICAgbUNhbGxiYWNrcy5jbGVhcigpOwotfQotCiB9ICAv
LyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvcmVuZGVyZXIxMV91dGlscy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvcmVu
ZGVyZXIxMV91dGlscy5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFfdXRpbHMuaAko
d29ya2luZyBjb3B5KQpAQCAtMTQsNyArMTQsOCBAQAogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAj
aW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSAibGliQU5HTEUvYW5nbGV0eXBlcy5oIgorI2lu
Y2x1ZGUgImNvbW1vbi9Db2xvci5oIgorCiAjaW5jbHVkZSAibGliQU5HTEUvQ2Fwcy5oIgogI2lu
Y2x1ZGUgImxpYkFOR0xFL0Vycm9yLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlLmgiCkBAIC01MSw2ICs1Miw3IEBACiAKIEQzRDEx
X0ZJTFRFUiBDb252ZXJ0RmlsdGVyKEdMZW51bSBtaW5GaWx0ZXIsIEdMZW51bSBtYWdGaWx0ZXIs
IGZsb2F0IG1heEFuaXNvdHJvcHksIEdMZW51bSBjb21wYXJpc29uTW9kZSk7CiBEM0QxMV9URVhU
VVJFX0FERFJFU1NfTU9ERSBDb252ZXJ0VGV4dHVyZVdyYXAoR0xlbnVtIHdyYXApOworVUlOVCBD
b252ZXJ0TWF4QW5pc290cm9weShmbG9hdCBtYXhBbmlzb3Ryb3B5LCBEM0RfRkVBVFVSRV9MRVZF
TCBmZWF0dXJlTGV2ZWwpOwogCiBEM0QxMV9RVUVSWSBDb252ZXJ0UXVlcnlUeXBlKEdMZW51bSBx
dWVyeVR5cGUpOwogCkBAIC0zNDUsNyArMzQ3LDggQEAKICAgICB9CiB9CiAKLVdvcmthcm91bmRz
RDNEIEdlbmVyYXRlV29ya2Fyb3VuZHMoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKTsK
K1dvcmthcm91bmRzRDNEIEdlbmVyYXRlV29ya2Fyb3VuZHMoY29uc3QgUmVuZGVyZXIxMURldmlj
ZUNhcHMgJmRldmljZUNhcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IERYR0lfQURBUFRFUl9ERVNDICZhZGFwdGVyRGVzYyk7CiAKIGVudW0gUmVzZXJ2ZWRDb25z
dGFudEJ1ZmZlclNsb3QKIHsKQEAgLTM2OCwyMCArMzcxLDIxIEBACiAgICAgVGV4dHVyZUhlbHBl
cjExICZvcGVyYXRvcj0oVGV4dHVyZUhlbHBlcjExICYmdGV4dHVyZSk7CiAKICAgICBzdGF0aWMg
VGV4dHVyZUhlbHBlcjExIE1ha2VBbmRSZWZlcmVuY2UoSUQzRDExUmVzb3VyY2UgKmdlbmVyaWNS
ZXNvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDNk
MTE6OkFOR0xFRm9ybWF0IGFuZ2xlRm9ybWF0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZDNkMTE6OkZvcm1hdCAmZm9ybWF0U2V0KTsKICAgICBz
dGF0aWMgVGV4dHVyZUhlbHBlcjExIE1ha2VBbmRQb3NzZXNzMkQoSUQzRDExVGV4dHVyZTJEICp0
ZXhUb093biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDNk
MTE6OkFOR0xFRm9ybWF0IGFuZ2xlRm9ybWF0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZDNkMTE6OkZvcm1hdCAmZm9ybWF0U2V0KTsKICAgICBz
dGF0aWMgVGV4dHVyZUhlbHBlcjExIE1ha2VBbmRQb3NzZXNzM0QoSUQzRDExVGV4dHVyZTNEICp0
ZXhUb093biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDNk
MTE6OkFOR0xFRm9ybWF0IGFuZ2xlRm9ybWF0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZDNkMTE6OkZvcm1hdCAmZm9ybWF0U2V0KTsKIAogICAg
IEdMZW51bSBnZXRUZXh0dXJlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1UZXh0dXJlVHlwZTsgfQog
ICAgIGdsOjpFeHRlbnRzIGdldEV4dGVudHMoKSBjb25zdCB7IHJldHVybiBtRXh0ZW50czsgfQog
ICAgIERYR0lfRk9STUFUIGdldEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1Gb3JtYXQ7IH0KLSAg
ICBkM2QxMTo6QU5HTEVGb3JtYXQgZ2V0QU5HTEVGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtQU5H
TEVGb3JtYXQ7IH0KKyAgICBjb25zdCBkM2QxMTo6Rm9ybWF0ICZnZXRGb3JtYXRTZXQoKSBjb25z
dCB7IHJldHVybiAqbUZvcm1hdFNldDsgfQogICAgIGludCBnZXRTYW1wbGVDb3VudCgpIGNvbnN0
IHsgcmV0dXJuIG1TYW1wbGVDb3VudDsgfQogICAgIElEM0QxMVRleHR1cmUyRCAqZ2V0VGV4dHVy
ZTJEKCkgY29uc3QgeyByZXR1cm4gbVRleHR1cmUyRDsgfQogICAgIElEM0QxMVRleHR1cmUzRCAq
Z2V0VGV4dHVyZTNEKCkgY29uc3QgeyByZXR1cm4gbVRleHR1cmUzRDsgfQogICAgIElEM0QxMVJl
c291cmNlICpnZXRSZXNvdXJjZSgpIGNvbnN0OworICAgIGJvb2wgdmFsaWQoKSBjb25zdDsKIAog
ICBwcml2YXRlOgogICAgIHZvaWQgcmVzZXQoKTsKQEAgLTM5MCwzNyArMzk0LDI2IEBACiAgICAg
R0xlbnVtIG1UZXh0dXJlVHlwZTsKICAgICBnbDo6RXh0ZW50cyBtRXh0ZW50czsKICAgICBEWEdJ
X0ZPUk1BVCBtRm9ybWF0OwotICAgIGQzZDExOjpBTkdMRUZvcm1hdCBtQU5HTEVGb3JtYXQ7Cisg
ICAgY29uc3QgZDNkMTE6OkZvcm1hdCAqbUZvcm1hdFNldDsKICAgICBpbnQgbVNhbXBsZUNvdW50
OwogICAgIElEM0QxMVRleHR1cmUyRCAqbVRleHR1cmUyRDsKICAgICBJRDNEMTFUZXh0dXJlM0Qg
Km1UZXh0dXJlM0Q7CiB9OwogCitlbnVtIGNsYXNzIFN0YWdpbmdBY2Nlc3MKK3sKKyAgICBSRUFE
LAorICAgIFJFQURfV1JJVEUsCit9OworCiBnbDo6RXJyb3JPclJlc3VsdDxUZXh0dXJlSGVscGVy
MTE+IENyZWF0ZVN0YWdpbmdUZXh0dXJlKEdMZW51bSB0ZXh0dXJlVHlwZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVQg
ZHhnaUZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZDNkMTE6OkFOR0xFRm9ybWF0IGFuZ2xlRm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkM2QxMTo6
Rm9ybWF0ICZmb3JtYXRTZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFnaW5nQWNjZXNz
IHJlYWRBbmRXcml0ZUFjY2VzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSUQzRDExRGV2aWNlICpkZXZpY2UpOwogCiBib29sIFVzZVBy
ZXNlbnRQYXRoRmFzdChjb25zdCBSZW5kZXJlcjExICpyZW5kZXJlciwgY29uc3QgZ2w6OkZyYW1l
YnVmZmVyQXR0YWNobWVudCAqY29sb3JidWZmZXIpOwogCi11c2luZyBOb3RpZmljYXRpb25DYWxs
YmFjayA9IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPjsKLQotY2xhc3MgTm90aWZpY2F0aW9uU2V0IGZp
bmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCi17Ci0gIHB1YmxpYzoKLSAgICBOb3RpZmljYXRpb25T
ZXQoKTsKLSAgICB+Tm90aWZpY2F0aW9uU2V0KCk7Ci0KLSAgICB2b2lkIGFkZChjb25zdCBOb3Rp
ZmljYXRpb25DYWxsYmFjayAqY2FsbGJhY2spOwotICAgIHZvaWQgcmVtb3ZlKGNvbnN0IE5vdGlm
aWNhdGlvbkNhbGxiYWNrICpjYWxsYmFjayk7Ci0gICAgdm9pZCBzaWduYWwoKSBjb25zdDsKLSAg
ICB2b2lkIGNsZWFyKCk7Ci0KLSAgcHJpdmF0ZToKLSAgICBzdGQ6OnNldDxjb25zdCBOb3RpZmlj
YXRpb25DYWxsYmFjayAqPiBtQ2FsbGJhY2tzOwotfTsKLQogfSAgLy8gbmFtZXNwYWNlIHJ4CiAK
ICNlbmRpZiAvLyBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfUkVOREVSRVIxMV9VVElMU19I
XwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9zaGFkZXJzL1Bhc3N0aHJvdWdoMkQxMS5obHNsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVy
cy9QYXNzdGhyb3VnaDJEMTEuaGxzbAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL1Bhc3N0
aHJvdWdoMkQxMS5obHNsCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSwyMyBAQAogICAgIHJl
dHVybiBUZXh0dXJlRi5TYW1wbGUoU2FtcGxlciwgaW5UZXhDb29yZCkucmdiYTsKIH0KIAorZmxv
YXQ0IFBTX1Bhc3N0aHJvdWdoUkdCQVByZW11bHRpcGx5MkQoaW4gZmxvYXQ0IGluUG9zaXRpb24g
OiBTVl9QT1NJVElPTiwgaW4gZmxvYXQyIGluVGV4Q29vcmQgOiBURVhDT09SRDApIDogU1ZfVEFS
R0VUMAoreworICAgIGZsb2F0NCBjb2xvciA9IFRleHR1cmVGLlNhbXBsZShTYW1wbGVyLCBpblRl
eENvb3JkKS5yZ2JhOworICAgIGNvbG9yLnJnYiAqPSBjb2xvci5hOworICAgIHJldHVybiBjb2xv
cjsKK30KKworZmxvYXQ0IFBTX1Bhc3N0aHJvdWdoUkdCQVVubXVsdGlwbHkyRChpbiBmbG9hdDQg
aW5Qb3NpdGlvbiA6IFNWX1BPU0lUSU9OLCBpbiBmbG9hdDIgaW5UZXhDb29yZCA6IFRFWENPT1JE
MCkgOiBTVl9UQVJHRVQwCit7CisgICAgZmxvYXQ0IGNvbG9yID0gVGV4dHVyZUYuU2FtcGxlKFNh
bXBsZXIsIGluVGV4Q29vcmQpLnJnYmE7CisgICAgaWYgKGNvbG9yLmEgPiAwLjBmKQorICAgIHsK
KyAgICAgICAgY29sb3IucmdiIC89IGNvbG9yLmE7CisgICAgfQorICAgIHJldHVybiBjb2xvcjsK
K30KKwogdWludDQgUFNfUGFzc3Rocm91Z2hSR0JBMkRVSShpbiBmbG9hdDQgaW5Qb3NpdGlvbiA6
IFNWX1BPU0lUSU9OLCBpbiBmbG9hdDIgaW5UZXhDb29yZCA6IFRFWENPT1JEMCkgOiBTVl9UQVJH
RVQwCiB7CiAgICAgdWludDIgc2l6ZTsKQEAgLTQyLDYgKzU5LDIzIEBACiAgICAgcmV0dXJuIGZs
b2F0NChUZXh0dXJlRi5TYW1wbGUoU2FtcGxlciwgaW5UZXhDb29yZCkucmdiLCAxLjBmKTsKIH0K
IAorZmxvYXQ0IFBTX1Bhc3N0aHJvdWdoUkdCUHJlbXVsdGlwbHkyRChpbiBmbG9hdDQgaW5Qb3Np
dGlvbiA6IFNWX1BPU0lUSU9OLCBpbiBmbG9hdDIgaW5UZXhDb29yZCA6IFRFWENPT1JEMCkgOiBT
Vl9UQVJHRVQwCit7CisgICAgZmxvYXQ0IGNvbG9yID0gVGV4dHVyZUYuU2FtcGxlKFNhbXBsZXIs
IGluVGV4Q29vcmQpLnJnYmE7CisgICAgY29sb3IucmdiICo9IGNvbG9yLmE7CisgICAgcmV0dXJu
IGNvbG9yOworfQorCitmbG9hdDQgUFNfUGFzc3Rocm91Z2hSR0JVbm11bHRpcGx5MkQoaW4gZmxv
YXQ0IGluUG9zaXRpb24gOiBTVl9QT1NJVElPTiwgaW4gZmxvYXQyIGluVGV4Q29vcmQgOiBURVhD
T09SRDApIDogU1ZfVEFSR0VUMAoreworICAgIGZsb2F0NCBjb2xvciA9IFRleHR1cmVGLlNhbXBs
ZShTYW1wbGVyLCBpblRleENvb3JkKS5yZ2JhOworICAgIGlmIChjb2xvci5hID4gMC4wZikKKyAg
ICB7CisgICAgICAgIGNvbG9yLnJnYiAvPSBjb2xvci5hOworICAgIH0KKyAgICByZXR1cm4gY29s
b3I7Cit9CisKIHVpbnQ0IFBTX1Bhc3N0aHJvdWdoUkdCMkRVSShpbiBmbG9hdDQgaW5Qb3NpdGlv
biA6IFNWX1BPU0lUSU9OLCBpbiBmbG9hdDIgaW5UZXhDb29yZCA6IFRFWENPT1JEMCkgOiBTVl9U
QVJHRVQwCiB7CiAgICAgdWludDIgc2l6ZTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9SZXNvbHZlRGVwdGhTdGVu
Y2lsLmhsc2wKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL1Jlc29sdmVEZXB0aFN0ZW5jaWwuaGxzbAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvUmVzb2x2ZURlcHRoU3RlbmNpbC5obHNsCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKK3N0YXRpYyBjb25zdCBmbG9hdDIgZ19Db3JuZXJzWzZd
ID0KK3sKKyAgICBmbG9hdDIoLTEuMGYsICAxLjBmKSwKKyAgICBmbG9hdDIoIDEuMGYsIC0xLjBm
KSwKKyAgICBmbG9hdDIoLTEuMGYsIC0xLjBmKSwKKyAgICBmbG9hdDIoLTEuMGYsICAxLjBmKSwK
KyAgICBmbG9hdDIoIDEuMGYsICAxLjBmKSwKKyAgICBmbG9hdDIoIDEuMGYsIC0xLjBmKSwKK307
CisKK3ZvaWQgVlNfUmVzb2x2ZURlcHRoU3RlbmNpbChpbiB1aW50IGlkIDogU1ZfVmVydGV4SUQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgIG91dCBmbG9hdDIgdGV4Q29vcmQgOiBURVhD
T09SRDApCit7CisgICAgZmxvYXQyIGNvcm5lciA9IGdfQ29ybmVyc1tpZF07CisgICAgcG9zaXRp
b24gPSBmbG9hdDQoY29ybmVyLngsIGNvcm5lci55LCAwLjBmLCAxLjBmKTsKKyAgICB0ZXhDb29y
ZCA9IGZsb2F0MigoY29ybmVyLnggKyAxLjBmKSAqIDAuNWYsICgtY29ybmVyLnkgKyAxLjBmKSAq
IDAuNWYpOworfQorCitUZXh0dXJlMkRNUzxmbG9hdD4gRGVwdGggICA6IHJlZ2lzdGVyKHQwKTsK
K1RleHR1cmUyRE1TPHVpbnQyPiBTdGVuY2lsIDogcmVnaXN0ZXIodDEpOworCit2b2lkIFBTX1Jl
c29sdmVEZXB0aChpbiBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgIGluIGZsb2F0MiB0ZXhDb29yZCA6IFRFWENPT1JEMCwKKyAgICAgICAgICAgICAg
ICAgICAgIG91dCBmbG9hdCBkZXB0aCA6IFNWX1RhcmdldDApCit7CisgICAgLy8gTVMgc2FtcGxl
cnMgbXVzdCB1c2UgTG9hZAorICAgIHVpbnQgd2lkdGgsIGhlaWdodCwgc2FtcGxlczsKKyAgICBE
ZXB0aC5HZXREaW1lbnNpb25zKHdpZHRoLCBoZWlnaHQsIHNhbXBsZXMpOworICAgIHVpbnQyIGNv
b3JkID0gdWludDIodGV4Q29vcmQueCAqIGZsb2F0KHdpZHRoKSwgdGV4Q29vcmQueSAqIGZsb2F0
KGhlaWdodCkpOworICAgIGRlcHRoID0gRGVwdGguTG9hZChjb29yZCwgMCkucjsKK30KKwordm9p
ZCBQU19SZXNvbHZlRGVwdGhTdGVuY2lsKGluIGZsb2F0NCBwb3NpdGlvbiA6IFNWX1Bvc2l0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGZsb2F0MiB0ZXhDb29yZCA6IFRFWENP
T1JEMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgZmxvYXQyIGRlcHRoU3RlbmNp
bCA6IFNWX1RhcmdldDApCit7CisgICAgLy8gTVMgc2FtcGxlcnMgbXVzdCB1c2UgTG9hZAorICAg
IHVpbnQgd2lkdGgsIGhlaWdodCwgc2FtcGxlczsKKyAgICBEZXB0aC5HZXREaW1lbnNpb25zKHdp
ZHRoLCBoZWlnaHQsIHNhbXBsZXMpOworICAgIHVpbnQyIGNvb3JkID0gdWludDIodGV4Q29vcmQu
eCAqIGZsb2F0KHdpZHRoKSwgdGV4Q29vcmQueSAqIGZsb2F0KGhlaWdodCkpOworICAgIGRlcHRo
U3RlbmNpbC5yID0gRGVwdGguTG9hZChjb29yZCwgMCkucjsKKyAgICBkZXB0aFN0ZW5jaWwuZyA9
IGZsb2F0KFN0ZW5jaWwuTG9hZChjb29yZCwgMCkuZyk7Cit9CisKK3ZvaWQgUFNfUmVzb2x2ZVN0
ZW5jaWwoaW4gZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgIGluIGZsb2F0MiB0ZXhDb29yZCA6IFRFWENPT1JEMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgb3V0IGZsb2F0MiBzdGVuY2lsIDogU1ZfVGFyZ2V0MCkKK3sKKyAgICAvLyBNUyBzYW1w
bGVycyBtdXN0IHVzZSBMb2FkCisgICAgdWludCB3aWR0aCwgaGVpZ2h0LCBzYW1wbGVzOworICAg
IFN0ZW5jaWwuR2V0RGltZW5zaW9ucyh3aWR0aCwgaGVpZ2h0LCBzYW1wbGVzKTsKKyAgICB1aW50
MiBjb29yZCA9IHVpbnQyKHRleENvb3JkLnggKiBmbG9hdCh3aWR0aCksIHRleENvb3JkLnkgKiBm
bG9hdChoZWlnaHQpKTsKKyAgICBzdGVuY2lsLnIgPSAwLjBmOworICAgIHN0ZW5jaWwuZyA9IGZs
b2F0KFN0ZW5jaWwuTG9hZChjb29yZCwgMCkuZyk7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQv
cGFzc3Rocm91Z2hyZ2JhcHJlbXVsdGlwbHkyZDExcHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMv
Y29tcGlsZWQvcGFzc3Rocm91Z2hyZ2JhcHJlbXVsdGlwbHkyZDExcHMuaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2JhcHJlbXVsdGlwbHkyZDExcHMuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwMSBAQAorI2lmIDANCisvLw0KKy8vIEdlbmVyYXRl
ZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDYuMy45NjAwLjE2Mzg0DQor
Ly8NCisvLw0KKy8vIFJlc291cmNlIEJpbmRpbmdzOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFR5cGUgIEZvcm1hdCAgICAgICAgIERpbSBTbG90IEVsZW1l
bnRzDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0gLS0tLS0t
LSAtLS0tLS0tLS0tLSAtLS0tIC0tLS0tLS0tDQorLy8gU2FtcGxlciAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNhbXBsZXIgICAgICBOQSAgICAgICAgICBOQSAgICAwICAgICAgICAxDQorLy8g
VGV4dHVyZUYgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUgIGZsb2F0NCAgICAgICAg
ICAyZCAgICAwICAgICAgICAxDQorLy8NCisvLw0KKy8vDQorLy8gSW5wdXQgc2lnbmF0dXJlOg0K
Ky8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1Zh
bHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0t
IC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQorLy8gU1ZfUE9TSVRJT04gICAgICAg
ICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgICAgUE9TICAgZmxvYXQgICAgICAgDQorLy8gVEVY
Q09PUkQgICAgICAgICAgICAgICAgIDAgICB4eSAgICAgICAgICAxICAgICBOT05FICAgZmxvYXQg
ICB4eSAgDQorLy8NCisvLw0KKy8vIE91dHB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAg
ICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVz
ZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0t
LS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgMCAgIHh5encg
ICAgICAgIDAgICBUQVJHRVQgICBmbG9hdCAgIHh5encNCisvLw0KKy8vDQorLy8gU2FtcGxlci9S
ZXNvdXJjZSB0byBEWDkgc2hhZGVyIHNhbXBsZXIgbWFwcGluZ3M6DQorLy8NCisvLyBUYXJnZXQg
U2FtcGxlciBTb3VyY2UgU2FtcGxlciAgU291cmNlIFJlc291cmNlDQorLy8gLS0tLS0tLS0tLS0t
LS0gLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0NCisvLyBzMCAgICAgICAgICAgICBz
MCAgICAgICAgICAgICAgdDAgICAgICAgICAgICAgICANCisvLw0KKy8vDQorLy8gTGV2ZWw5IHNo
YWRlciBieXRlY29kZToNCisvLw0KKyAgICBwc18yX3gNCisgICAgZGNsIHQwLnh5DQorICAgIGRj
bF8yZCBzMA0KKyAgICB0ZXhsZCByMCwgdDAsIHMwDQorICAgIG11bCByMC54eXosIHIwLncsIHIw
DQorICAgIG1vdiBvQzAsIHIwDQorDQorLy8gYXBwcm94aW1hdGVseSAzIGluc3RydWN0aW9uIHNs
b3RzIHVzZWQgKDEgdGV4dHVyZSwgMiBhcml0aG1ldGljKQ0KK3BzXzRfMA0KK2RjbF9zYW1wbGVy
IHMwLCBtb2RlX2RlZmF1bHQNCitkY2xfcmVzb3VyY2VfdGV4dHVyZTJkIChmbG9hdCxmbG9hdCxm
bG9hdCxmbG9hdCkgdDANCitkY2xfaW5wdXRfcHMgbGluZWFyIHYxLnh5DQorZGNsX291dHB1dCBv
MC54eXp3DQorZGNsX3RlbXBzIDENCitzYW1wbGUgcjAueHl6dywgdjEueHl4eCwgdDAueHl6dywg
czANCittdWwgbzAueHl6LCByMC53d3d3LCByMC54eXp4DQorbW92IG8wLncsIHIwLncNCityZXQg
DQorLy8gQXBwcm94aW1hdGVseSA0IGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisjZW5kaWYNCisN
Citjb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hSR0JBUHJlbXVsdGlwbHkyRFtdID0gew0KKyAg
ICA2OCwgIDg4LCAgNjYsICA2NywgIDEzOSwgMjU0LCA4NCwgIDI0MSwgMjAyLCAzMywgIDEzMiwg
MjIxLCAxMjMsIDE5LCAgMjQxLCAxODIsIDc1LCAgMTU1LCAxNzcsDQorICAgIDExNSwgMSwgICAw
LCAgIDAsICAgMCwgICA4LCAgIDMsICAgMCwgICAwLCAgIDYsICAgMCwgICAwLCAgIDAsICAgNTYs
ICAwLCAgIDAsICAgMCwgICAxODAsIDAsDQorICAgIDAsICAgMCwgICA4OCwgIDEsICAgMCwgICAw
LCAgIDIxMiwgMSwgICAwLCAgIDAsICAgMTI0LCAyLCAgIDAsICAgMCwgICAyMTIsIDIsICAgMCwg
ICAwLCAgIDY1LA0KKyAgICAxMTEsIDExMCwgNTcsICAxMTYsIDAsICAgMCwgICAwLCAgIDExNiwg
MCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDI1NSwgMjU1LCA3NiwgIDAsICAgMCwgICAwLA0KKyAg
ICA0MCwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA0MCwgIDAsICAgMCwgICAwLCAgIDQwLCAg
MCwgICAwLCAgIDAsICAgNDAsICAwLCAgIDEsICAgMCwgICAzNiwNCisgICAgMCwgICAwLCAgIDAs
ICAgNDAsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAyLCAgIDI1NSwgMjU1LCAzMSwg
IDAsICAgMCwgICAyLCAgIDAsICAgMCwNCisgICAgMCwgICAxMjgsIDAsICAgMCwgICAzLCAgIDE3
NiwgMzEsICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgICAxNDQsIDAsICAgOCwgICAxNSwg
IDE2MCwgNjYsDQorICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAxNSwgIDEyOCwgMCwgICAw
LCAgIDIyOCwgMTc2LCAwLCAgIDgsICAgMjI4LCAxNjAsIDUsICAgMCwgICAwLCAgIDMsDQorICAg
IDAsICAgMCwgICA3LCAgIDEyOCwgMCwgICAwLCAgIDI1NSwgMTI4LCAwLCAgIDAsICAgMjI4LCAx
MjgsIDEsICAgMCwgICAwLCAgIDIsICAgMCwgICA4LCAgIDE1LA0KKyAgICAxMjgsIDAsICAgMCwg
ICAyMjgsIDEyOCwgMjU1LCAyNTUsIDAsICAgMCwgICA4MywgIDcyLCAgNjgsICA4MiwgIDE1Niwg
MCwgICAwLCAgIDAsICAgNjQsICAwLA0KKyAgICAwLCAgIDAsICAgMzksICAwLCAgIDAsICAgMCwg
ICA5MCwgIDAsICAgMCwgICAzLCAgIDAsICAgOTYsICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICA4OCwNCisgICAgMjQsICAwLCAgIDQsICAgMCwgICAxMTIsIDE2LCAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDg1LCAgODUsICAwLCAgIDAsICAgOTgsICAxNiwgIDAsICAgMywNCisgICAg
NTAsICAxNiwgIDE2LCAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDEwMSwgMCwgICAwLCAgIDMs
ICAgMjQyLCAzMiwgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwNCisgICAgMCwgICAxMDQsIDAsICAg
MCwgICAyLCAgIDEsICAgMCwgICAwLCAgIDAsICAgNjksICAwLCAgIDAsICAgOSwgICAyNDIsIDAs
ICAgMTYsICAwLCAgIDAsICAgMCwNCisgICAgMCwgICAwLCAgIDcwLCAgMTYsICAxNiwgIDAsICAg
MSwgICAwLCAgIDAsICAgMCwgICA3MCwgIDEyNiwgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwNCisgICAgOTYsICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA1NiwgIDAsICAg
MCwgICA3LCAgIDExNCwgMzIsICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwNCisgICAgMjQ2
LCAxNSwgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDcwLCAgMiwgICAxNiwgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICA1NCwgIDAsICAgMCwNCisgICAgNSwgICAxMzAsIDMyLCAgMTYs
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNTgsICAwLCAgIDE2LCAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDYyLCAgMCwNCisgICAgMCwgICAxLCAgIDgzLCAgODQsICA2NSwgIDg0LCAgMTE2
LCAwLCAgIDAsICAgMCwgICA0LCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAg
MCwNCisgICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwNCisgICAgMSwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwNCisgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwNCisgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwN
CisgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwNCisgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgODIsICA2
OCwgIDY5LCAgNzAsICAxNjAsIDAsICAgMCwNCisgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgICAyOCwgIDAsICAgMCwgICAw
LCAgIDAsICAgNCwNCisgICAgMjU1LCAyNTUsIDAsICAgMSwgICAwLCAgIDAsICAgMTA5LCAwLCAg
IDAsICAgMCwgICA5MiwgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsICAgMCwNCisg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwNCisgICAgMSwgICAwLCAgIDAs
ICAgMCwgICAxMDAsIDAsICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsICAgNSwgICAwLCAg
IDAsICAgMCwgICA0LCAgIDAsICAgMCwNCisgICAgMCwgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDAs
ICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAxMywgIDAsICAgMCwgICAwLCAg
IDgzLCAgOTcsDQorICAgIDEwOSwgMTEyLCAxMDgsIDEwMSwgMTE0LCAwLCAgIDg0LCAgMTAxLCAx
MjAsIDExNiwgMTE3LCAxMTQsIDEwMSwgNzAsICAwLCAgIDc3LCAgMTA1LCA5OSwgIDExNCwNCisg
ICAgMTExLCAxMTUsIDExMSwgMTAyLCAxMTYsIDMyLCAgNDAsICA4MiwgIDQxLCAgMzIsICA3Miwg
IDc2LCAgODMsICA3NiwgIDMyLCAgODMsICAxMDQsIDk3LCAgMTAwLA0KKyAgICAxMDEsIDExNCwg
MzIsICA2NywgIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4LCAxMDEsIDExNCwgMzIsICA1NCwgIDQ2
LCAgNTEsICA0NiwgIDU3LCAgNTQsICA0OCwNCisgICAgNDgsICA0NiwgIDQ5LCAgNTQsICA1MSwg
IDU2LCAgNTIsICAwLCAgIDE3MSwgNzMsICA4MywgIDcxLCAgNzgsICA4MCwgIDAsICAgMCwgICAw
LCAgIDIsICAgMCwNCisgICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsICAgNTYsICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMywNCisg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAxNSwgIDAsICAgMCwgICAwLCAg
IDY4LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwNCisgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMywgICAzLCAg
IDAsICAgMCwgICA4MywgIDg2LCAgOTUsDQorICAgIDgwLCAgNzksICA4MywgIDczLCAgODQsICA3
MywgIDc5LCAgNzgsICAwLCAgIDg0LCAgNjksICA4OCwgIDY3LCAgNzksICA3OSwgIDgyLCAgNjgs
ICAwLCAgIDE3MSwNCisgICAgMTcxLCAxNzEsIDc5LCAgODMsICA3MSwgIDc4LCAgNDQsICAwLCAg
IDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsICAgMzIsDQor
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAzLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDE1LCAgMCwgICAw
LCAgIDAsICAgODMsICA4NiwgIDk1LCAgODQsICA2NSwgIDgyLCAgNzEsICA2OSwgIDg0LCAgMCwg
ICAxNzEsIDE3MX07DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiYXVubXVs
dGlwbHkyZDExcHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hy
Z2JhdW5tdWx0aXBseTJkMTFwcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9w
YXNzdGhyb3VnaHJnYmF1bm11bHRpcGx5MmQxMXBzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMTAgQEAKKyNpZiAwDQorLy8NCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNM
IFNoYWRlciBDb21waWxlciA2LjMuOTYwMC4xNjM4NA0KKy8vDQorLy8NCisvLyBSZXNvdXJjZSBC
aW5kaW5nczoNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
eXBlICBGb3JtYXQgICAgICAgICBEaW0gU2xvdCBFbGVtZW50cw0KKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tLS0tLS0gLS0tLSAtLS0t
LS0tLQ0KKy8vIFNhbXBsZXIgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVyICAgICAg
TkEgICAgICAgICAgTkEgICAgMCAgICAgICAgMQ0KKy8vIFRleHR1cmVGICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXh0dXJlICBmbG9hdDQgICAgICAgICAgMmQgICAgMCAgICAgICAgMQ0KKy8v
DQorLy8NCisvLw0KKy8vIElucHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAg
ICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0t
LS0tIC0tLS0tLQ0KKy8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAg
MCAgICAgIFBPUyAgIGZsb2F0ICAgICAgIA0KKy8vIFRFWENPT1JEICAgICAgICAgICAgICAgICAw
ICAgeHkgICAgICAgICAgMSAgICAgTk9ORSAgIGZsb2F0ICAgeHkgIA0KKy8vDQorLy8NCisvLyBP
dXRwdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBN
YXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQorLy8g
U1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VUICAgZmxv
YXQgICB4eXp3DQorLy8NCisvLw0KKy8vIFNhbXBsZXIvUmVzb3VyY2UgdG8gRFg5IHNoYWRlciBz
YW1wbGVyIG1hcHBpbmdzOg0KKy8vDQorLy8gVGFyZ2V0IFNhbXBsZXIgU291cmNlIFNhbXBsZXIg
IFNvdXJjZSBSZXNvdXJjZQ0KKy8vIC0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLSAtLS0t
LS0tLS0tLS0tLS0tDQorLy8gczAgICAgICAgICAgICAgczAgICAgICAgICAgICAgIHQwICAgICAg
ICAgICAgICAgDQorLy8NCisvLw0KKy8vIExldmVsOSBzaGFkZXIgYnl0ZWNvZGU6DQorLy8NCisg
ICAgcHNfMl94DQorICAgIGRjbCB0MC54eQ0KKyAgICBkY2xfMmQgczANCisgICAgdGV4bGQgcjAs
IHQwLCBzMA0KKyAgICByY3AgcjEudywgcjAudw0KKyAgICBtdWwgcjEueHl6LCByMCwgcjEudw0K
KyAgICBjbXAgcjAueHl6LCAtcjAudywgcjAsIHIxDQorICAgIG1vdiBvQzAsIHIwDQorDQorLy8g
YXBwcm94aW1hdGVseSA1IGluc3RydWN0aW9uIHNsb3RzIHVzZWQgKDEgdGV4dHVyZSwgNCBhcml0
aG1ldGljKQ0KK3BzXzRfMA0KK2RjbF9zYW1wbGVyIHMwLCBtb2RlX2RlZmF1bHQNCitkY2xfcmVz
b3VyY2VfdGV4dHVyZTJkIChmbG9hdCxmbG9hdCxmbG9hdCxmbG9hdCkgdDANCitkY2xfaW5wdXRf
cHMgbGluZWFyIHYxLnh5DQorZGNsX291dHB1dCBvMC54eXp3DQorZGNsX3RlbXBzIDINCitzYW1w
bGUgcjAueHl6dywgdjEueHl4eCwgdDAueHl6dywgczANCitsdCByMS54LCBsKDAuMDAwMDAwKSwg
cjAudw0KK2RpdiByMS55encsIHIwLnh4eXosIHIwLnd3d3cNCittb3ZjIG8wLnh5eiwgcjEueHh4
eCwgcjEueXp3eSwgcjAueHl6eA0KK21vdiBvMC53LCByMC53DQorcmV0IA0KKy8vIEFwcHJveGlt
YXRlbHkgNiBpbnN0cnVjdGlvbiBzbG90cyB1c2VkDQorI2VuZGlmDQorDQorY29uc3QgQllURSBn
X1BTX1Bhc3N0aHJvdWdoUkdCQVVubXVsdGlwbHkyRFtdID0gew0KKyAgICA2OCwgIDg4LCAgNjYs
ICA2NywgIDE4MCwgODcsICA0MywgIDExMSwgMjU1LCAxMzUsIDI4LCAgMjI0LCA0MiwgIDg1LCAg
MTk3LCAxNiwgIDE3LCAgMTcyLCAxNzYsDQorICAgIDcwLCAgMSwgICAwLCAgIDAsICAgMCwgICAx
MDQsIDMsICAgMCwgICAwLCAgIDYsICAgMCwgICAwLCAgIDAsICAgNTYsICAwLCAgIDAsICAgMCwg
ICAyMTIsIDAsDQorICAgIDAsICAgMCwgICAxODQsIDEsICAgMCwgICAwLCAgIDUyLCAgMiwgICAw
LCAgIDAsICAgMjIwLCAyLCAgIDAsICAgMCwgICA1MiwgIDMsICAgMCwgICAwLCAgIDY1LA0KKyAg
ICAxMTEsIDExMCwgNTcsICAxNDgsIDAsICAgMCwgICAwLCAgIDE0OCwgMCwgICAwLCAgIDAsICAg
MCwgICAyLCAgIDI1NSwgMjU1LCAxMDgsIDAsICAgMCwgICAwLA0KKyAgICA0MCwgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICA0MCwgIDAsICAgMCwgICAwLCAgIDQwLCAgMCwgICAwLCAgIDAsICAg
NDAsICAwLCAgIDEsICAgMCwgICAzNiwNCisgICAgMCwgICAwLCAgIDAsICAgNDAsICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMSwgICAyLCAgIDI1NSwgMjU1LCAzMSwgIDAsICAgMCwgICAyLCAg
IDAsICAgMCwNCisgICAgMCwgICAxMjgsIDAsICAgMCwgICAzLCAgIDE3NiwgMzEsICAwLCAgIDAs
ICAgMiwgICAwLCAgIDAsICAgMCwgICAxNDQsIDAsICAgOCwgICAxNSwgIDE2MCwgNjYsDQorICAg
IDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAxNSwgIDEyOCwgMCwgICAwLCAgIDIyOCwgMTc2LCAw
LCAgIDgsICAgMjI4LCAxNjAsIDYsICAgMCwgICAwLCAgIDIsDQorICAgIDEsICAgMCwgICA4LCAg
IDEyOCwgMCwgICAwLCAgIDI1NSwgMTI4LCA1LCAgIDAsICAgMCwgICAzLCAgIDEsICAgMCwgICA3
LCAgIDEyOCwgMCwgICAwLCAgIDIyOCwNCisgICAgMTI4LCAxLCAgIDAsICAgMjU1LCAxMjgsIDg4
LCAgMCwgICAwLCAgIDQsICAgMCwgICAwLCAgIDcsICAgMTI4LCAwLCAgIDAsICAgMjU1LCAxMjks
IDAsICAgMCwNCisgICAgMjI4LCAxMjgsIDEsICAgMCwgICAyMjgsIDEyOCwgMSwgICAwLCAgIDAs
ICAgMiwgICAwLCAgIDgsICAgMTUsICAxMjgsIDAsICAgMCwgICAyMjgsIDEyOCwgMjU1LA0KKyAg
ICAyNTUsIDAsICAgMCwgICA4MywgIDcyLCAgNjgsICA4MiwgIDIyMCwgMCwgICAwLCAgIDAsICAg
NjQsICAwLCAgIDAsICAgMCwgICA1NSwgIDAsICAgMCwgICAwLA0KKyAgICA5MCwgIDAsICAgMCwg
ICAzLCAgIDAsICAgOTYsICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA4OCwgIDI0LCAg
MCwgICA0LCAgIDAsICAgMTEyLCAxNiwNCisgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDg1
LCAgODUsICAwLCAgIDAsICAgOTgsICAxNiwgIDAsICAgMywgICA1MCwgIDE2LCAgMTYsICAwLCAg
IDEsICAgMCwNCisgICAgMCwgICAwLCAgIDEwMSwgMCwgICAwLCAgIDMsICAgMjQyLCAzMiwgIDE2
LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEwNCwgMCwgICAwLCAgIDIsICAgMiwNCisgICAg
MCwgICAwLCAgIDAsICAgNjksICAwLCAgIDAsICAgOSwgICAyNDIsIDAsICAgMTYsICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgNzAsICAxNiwgIDE2LCAgMCwNCisgICAgMSwgICAwLCAgIDAsICAg
MCwgICA3MCwgIDEyNiwgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA5NiwgIDE2
LCAgMCwgICAwLCAgIDAsICAgMCwNCisgICAgMCwgICA0OSwgIDAsICAgMCwgICA3LCAgIDE4LCAg
MCwgICAxNiwgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAxLCAgIDY0LCAgMCwgICAwLCAgIDAs
ICAgMCwNCisgICAgMCwgICAwLCAgIDU4LCAgMCwgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAxNCwgIDAsICAgMCwgICA3LCAgIDIyNiwgMCwgICAxNiwgIDAsICAgMSwNCisgICAgMCwg
ICAwLCAgIDAsICAgNiwgICA5LCAgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDI0Niwg
MTUsICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwNCisgICAgNTUsICAwLCAgIDAsICAgOSwg
ICAxMTQsIDMyLCAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNiwgICAwLCAgIDE2LCAg
MCwgICAxLCAgIDAsICAgMCwNCisgICAgMCwgICAxNTAsIDcsICAgMTYsICAwLCAgIDEsICAgMCwg
ICAwLCAgIDAsICAgNzAsICAyLCAgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDU0LCAg
MCwNCisgICAgMCwgICA1LCAgIDEzMCwgMzIsICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICA1OCwgIDAsICAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNjIsDQorICAgIDAsICAg
MCwgICAxLCAgIDgzLCAgODQsICA2NSwgIDg0LCAgMTE2LCAwLCAgIDAsICAgMCwgICA2LCAgIDAs
ICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MiwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
DQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAg
MCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgODIsICA2OCwgIDY5LCAgNzAsICAxNjAsIDAsDQor
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMiwg
ICAwLCAgIDAsICAgMCwgICAyOCwgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDQsICAgMjU1LCAy
NTUsIDAsICAgMSwgICAwLCAgIDAsICAgMTA5LCAwLCAgIDAsICAgMCwgICA5MiwgIDAsICAgMCwg
ICAwLCAgIDMsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwg
ICAwLCAgIDAsDQorICAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAxMDAsIDAsICAgMCwgICAw
LCAgIDIsICAgMCwgICAwLCAgIDAsICAgNSwgICAwLCAgIDAsICAgMCwgICA0LCAgIDAsDQorICAg
IDAsICAgMCwgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAw
LCAgIDAsICAgMCwgICAxMywgIDAsICAgMCwgICAwLCAgIDgzLA0KKyAgICA5NywgIDEwOSwgMTEy
LCAxMDgsIDEwMSwgMTE0LCAwLCAgIDg0LCAgMTAxLCAxMjAsIDExNiwgMTE3LCAxMTQsIDEwMSwg
NzAsICAwLCAgIDc3LCAgMTA1LCA5OSwNCisgICAgMTE0LCAxMTEsIDExNSwgMTExLCAxMDIsIDEx
NiwgMzIsICA0MCwgIDgyLCAgNDEsICAzMiwgIDcyLCAgNzYsICA4MywgIDc2LCAgMzIsICA4Mywg
IDEwNCwgOTcsDQorICAgIDEwMCwgMTAxLCAxMTQsIDMyLCAgNjcsICAxMTEsIDEwOSwgMTEyLCAx
MDUsIDEwOCwgMTAxLCAxMTQsIDMyLCAgNTQsICA0NiwgIDUxLCAgNDYsICA1NywgIDU0LA0KKyAg
ICA0OCwgIDQ4LCAgNDYsICA0OSwgIDU0LCAgNTEsICA1NiwgIDUyLCAgMCwgICAxNzEsIDczLCAg
ODMsICA3MSwgIDc4LCAgODAsICAwLCAgIDAsICAgMCwgICAyLA0KKyAgICAwLCAgIDAsICAgMCwg
ICA4LCAgIDAsICAgMCwgICAwLCAgIDU2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAxLCAgIDAsICAgMCwgICAwLA0KKyAgICAzLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMTUsICAwLCAgIDAsICAgMCwgICA2OCwgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwg
ICAxLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMywgICAwLCAgIDAsICAgODMsICA4NiwNCisgICAg
OTUsICA4MCwgIDc5LCAgODMsICA3MywgIDg0LCAgNzMsICA3OSwgIDc4LCAgMCwgICA4NCwgIDY5
LCAgODgsICA2NywgIDc5LCAgNzksICA4MiwgIDY4LCAgMCwNCisgICAgMTcxLCAxNzEsIDE3MSwg
NzksICA4MywgIDcxLCAgNzgsICA0NCwgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAs
ICAgOCwgICAwLCAgIDAsICAgMCwNCisgICAgMzIsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwNCisgICAgMCwgICAxNSwgIDAsICAgMCwgICAwLCAgIDgzLCAgODYsICA5NSwgIDg0LCAg
NjUsICA4MiwgIDcxLCAgNjksICA4NCwgIDAsICAgMTcxLCAxNzF9Ow0KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9j
b21waWxlZC9wYXNzdGhyb3VnaHJnYnByZW11bHRpcGx5MmQxMXBzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9z
aGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdicHJlbXVsdGlwbHkyZDExcHMuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2JwcmVtdWx0aXBseTJkMTFw
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAxIEBACisjaWYgMA0KKy8vDQorLy8gR2Vu
ZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYz
ODQNCisvLw0KKy8vDQorLy8gUmVzb3VyY2UgQmluZGluZ3M6DQorLy8NCisvLyBOYW1lICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgRm9ybWF0ICAgICAgICAgRGltIFNsb3Qg
RWxlbWVudHMNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAt
LS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0tLS0tLS0NCisvLyBTYW1wbGVyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2FtcGxlciAgICAgIE5BICAgICAgICAgIE5BICAgIDAgICAgICAgIDEN
CisvLyBUZXh0dXJlRiAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSAgZmxvYXQ0ICAg
ICAgICAgIDJkICAgIDAgICAgICAgIDENCisvLw0KKy8vDQorLy8NCisvLyBJbnB1dCBzaWduYXR1
cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIg
U3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAt
LS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9QT1NJVElPTiAg
ICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAgICAgICANCisv
LyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5ICAgICAgICAgIDEgICAgIE5PTkUgICBm
bG9hdCAgIHh5ICANCisvLw0KKy8vDQorLy8gT3V0cHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5h
bWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0
ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAt
LS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAwICAg
eHl6dyAgICAgICAgMCAgIFRBUkdFVCAgIGZsb2F0ICAgeHl6dw0KKy8vDQorLy8NCisvLyBTYW1w
bGVyL1Jlc291cmNlIHRvIERYOSBzaGFkZXIgc2FtcGxlciBtYXBwaW5nczoNCisvLw0KKy8vIFRh
cmdldCBTYW1wbGVyIFNvdXJjZSBTYW1wbGVyICBTb3VyY2UgUmVzb3VyY2UNCisvLyAtLS0tLS0t
LS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIHMwICAgICAgICAg
ICAgIHMwICAgICAgICAgICAgICB0MCAgICAgICAgICAgICAgIA0KKy8vDQorLy8NCisvLyBMZXZl
bDkgc2hhZGVyIGJ5dGVjb2RlOg0KKy8vDQorICAgIHBzXzJfeA0KKyAgICBkY2wgdDAueHkNCisg
ICAgZGNsXzJkIHMwDQorICAgIHRleGxkIHIwLCB0MCwgczANCisgICAgbXVsIHIwLnh5eiwgcjAu
dywgcjANCisgICAgbW92IG9DMCwgcjANCisNCisvLyBhcHByb3hpbWF0ZWx5IDMgaW5zdHJ1Y3Rp
b24gc2xvdHMgdXNlZCAoMSB0ZXh0dXJlLCAyIGFyaXRobWV0aWMpDQorcHNfNF8wDQorZGNsX3Nh
bXBsZXIgczAsIG1vZGVfZGVmYXVsdA0KK2RjbF9yZXNvdXJjZV90ZXh0dXJlMmQgKGZsb2F0LGZs
b2F0LGZsb2F0LGZsb2F0KSB0MA0KK2RjbF9pbnB1dF9wcyBsaW5lYXIgdjEueHkNCitkY2xfb3V0
cHV0IG8wLnh5encNCitkY2xfdGVtcHMgMQ0KK3NhbXBsZSByMC54eXp3LCB2MS54eXh4LCB0MC54
eXp3LCBzMA0KK211bCBvMC54eXosIHIwLnd3d3csIHIwLnh5engNCittb3YgbzAudywgcjAudw0K
K3JldCANCisvLyBBcHByb3hpbWF0ZWx5IDQgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZA0KKyNlbmRp
Zg0KKw0KK2NvbnN0IEJZVEUgZ19QU19QYXNzdGhyb3VnaFJHQlByZW11bHRpcGx5MkRbXSA9IHsN
CisgICAgNjgsICA4OCwgIDY2LCAgNjcsICAxMzksIDI1NCwgODQsICAyNDEsIDIwMiwgMzMsICAx
MzIsIDIyMSwgMTIzLCAxOSwgIDI0MSwgMTgyLCA3NSwgIDE1NSwgMTc3LA0KKyAgICAxMTUsIDEs
ICAgMCwgICAwLCAgIDAsICAgOCwgICAzLCAgIDAsICAgMCwgICA2LCAgIDAsICAgMCwgICAwLCAg
IDU2LCAgMCwgICAwLCAgIDAsICAgMTgwLCAwLA0KKyAgICAwLCAgIDAsICAgODgsICAxLCAgIDAs
ICAgMCwgICAyMTIsIDEsICAgMCwgICAwLCAgIDEyNCwgMiwgICAwLCAgIDAsICAgMjEyLCAyLCAg
IDAsICAgMCwgICA2NSwNCisgICAgMTExLCAxMTAsIDU3LCAgMTE2LCAwLCAgIDAsICAgMCwgICAx
MTYsIDAsICAgMCwgICAwLCAgIDAsICAgMiwgICAyNTUsIDI1NSwgNzYsICAwLCAgIDAsICAgMCwN
CisgICAgNDAsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNDAsICAwLCAgIDAsICAgMCwgICA0
MCwgIDAsICAgMCwgICAwLCAgIDQwLCAgMCwgICAxLCAgIDAsICAgMzYsDQorICAgIDAsICAgMCwg
ICAwLCAgIDQwLCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMiwgICAyNTUsIDI1NSwg
MzEsICAwLCAgIDAsICAgMiwgICAwLCAgIDAsDQorICAgIDAsICAgMTI4LCAwLCAgIDAsICAgMywg
ICAxNzYsIDMxLCAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsICAgMTQ0LCAwLCAgIDgsICAg
MTUsICAxNjAsIDY2LA0KKyAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMTUsICAxMjgsIDAs
ICAgMCwgICAyMjgsIDE3NiwgMCwgICA4LCAgIDIyOCwgMTYwLCA1LCAgIDAsICAgMCwgICAzLA0K
KyAgICAwLCAgIDAsICAgNywgICAxMjgsIDAsICAgMCwgICAyNTUsIDEyOCwgMCwgICAwLCAgIDIy
OCwgMTI4LCAxLCAgIDAsICAgMCwgICAyLCAgIDAsICAgOCwgICAxNSwNCisgICAgMTI4LCAwLCAg
IDAsICAgMjI4LCAxMjgsIDI1NSwgMjU1LCAwLCAgIDAsICAgODMsICA3MiwgIDY4LCAgODIsICAx
NTYsIDAsICAgMCwgICAwLCAgIDY0LCAgMCwNCisgICAgMCwgICAwLCAgIDM5LCAgMCwgICAwLCAg
IDAsICAgOTAsICAwLCAgIDAsICAgMywgICAwLCAgIDk2LCAgMTYsICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgODgsDQorICAgIDI0LCAgMCwgICA0LCAgIDAsICAgMTEyLCAxNiwgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICA4NSwgIDg1LCAgMCwgICAwLCAgIDk4LCAgMTYsICAwLCAgIDMsDQor
ICAgIDUwLCAgMTYsICAxNiwgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAxMDEsIDAsICAgMCwg
ICAzLCAgIDI0MiwgMzIsICAxNiwgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMTA0LCAw
LCAgIDAsICAgMiwgICAxLCAgIDAsICAgMCwgICAwLCAgIDY5LCAgMCwgICAwLCAgIDksICAgMjQy
LCAwLCAgIDE2LCAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICA3MCwgIDE2LCAgMTYsICAw
LCAgIDEsICAgMCwgICAwLCAgIDAsICAgNzAsICAxMjYsIDE2LCAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsDQorICAgIDk2LCAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNTYsICAw
LCAgIDAsICAgNywgICAxMTQsIDMyLCAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAg
IDI0NiwgMTUsICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA3MCwgIDIsICAgMTYsICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgNTQsICAwLCAgIDAsDQorICAgIDUsICAgMTMwLCAzMiwg
IDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDU4LCAgMCwgICAxNiwgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICA2MiwgIDAsDQorICAgIDAsICAgMSwgICA4MywgIDg0LCAgNjUsICA4NCwg
IDExNiwgMCwgICAwLCAgIDAsICAgNCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAw
LCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDEs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDgy
LCAgNjgsICA2OSwgIDcwLCAgMTYwLCAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsICAgMjgsICAwLCAgIDAs
ICAgMCwgICAwLCAgIDQsDQorICAgIDI1NSwgMjU1LCAwLCAgIDEsICAgMCwgICAwLCAgIDEwOSwg
MCwgICAwLCAgIDAsICAgOTIsICAwLCAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCAgIDAs
DQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsDQorICAgIDEsICAgMCwg
ICAwLCAgIDAsICAgMTAwLCAwLCAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAgIDUsICAg
MCwgICAwLCAgIDAsICAgNCwgICAwLCAgIDAsDQorICAgIDAsICAgMjU1LCAyNTUsIDI1NSwgMjU1
LCAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMTMsICAwLCAgIDAsICAg
MCwgICA4MywgIDk3LA0KKyAgICAxMDksIDExMiwgMTA4LCAxMDEsIDExNCwgMCwgICA4NCwgIDEw
MSwgMTIwLCAxMTYsIDExNywgMTE0LCAxMDEsIDcwLCAgMCwgICA3NywgIDEwNSwgOTksICAxMTQs
DQorICAgIDExMSwgMTE1LCAxMTEsIDEwMiwgMTE2LCAzMiwgIDQwLCAgODIsICA0MSwgIDMyLCAg
NzIsICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCAgMTA0LCA5NywgIDEwMCwNCisgICAgMTAxLCAx
MTQsIDMyLCAgNjcsICAxMTEsIDEwOSwgMTEyLCAxMDUsIDEwOCwgMTAxLCAxMTQsIDMyLCAgNTQs
ICA0NiwgIDUxLCAgNDYsICA1NywgIDU0LCAgNDgsDQorICAgIDQ4LCAgNDYsICA0OSwgIDU0LCAg
NTEsICA1NiwgIDUyLCAgMCwgICAxNzEsIDczLCAgODMsICA3MSwgIDc4LCAgODAsICAwLCAgIDAs
ICAgMCwgICAyLCAgIDAsDQorICAgIDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCAgIDU2LCAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDMs
DQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMTUsICAwLCAgIDAsICAg
MCwgICA2OCwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDMsICAg
MywgICAwLCAgIDAsICAgODMsICA4NiwgIDk1LA0KKyAgICA4MCwgIDc5LCAgODMsICA3MywgIDg0
LCAgNzMsICA3OSwgIDc4LCAgMCwgICA4NCwgIDY5LCAgODgsICA2NywgIDc5LCAgNzksICA4Miwg
IDY4LCAgMCwgICAxNzEsDQorICAgIDE3MSwgMTcxLCA3OSwgIDgzLCAgNzEsICA3OCwgIDQ0LCAg
MCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCAgIDMy
LA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLA0KKyAgICAxNSwgIDAs
ICAgMCwgICAwLCAgIDgzLCAgODYsICA5NSwgIDg0LCAgNjUsICA4MiwgIDcxLCAgNjksICA4NCwg
IDAsICAgMTcxLCAxNzF9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYnVu
bXVsdGlwbHkyZDExcHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91
Z2hyZ2J1bm11bHRpcGx5MmQxMXBzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVk
L3Bhc3N0aHJvdWdocmdidW5tdWx0aXBseTJkMTFwcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTEwIEBACisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExT
TCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQNCisvLw0KKy8vDQorLy8gUmVzb3VyY2Ug
QmluZGluZ3M6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VHlwZSAgRm9ybWF0ICAgICAgICAgRGltIFNsb3QgRWxlbWVudHMNCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0t
LS0tLS0NCisvLyBTYW1wbGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlciAgICAg
IE5BICAgICAgICAgIE5BICAgIDAgICAgICAgIDENCisvLyBUZXh0dXJlRiAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGV4dHVyZSAgZmxvYXQ0ICAgICAgICAgIDJkICAgIDAgICAgICAgIDENCisv
Lw0KKy8vDQorLy8NCisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAg
ICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0t
LS0tLSAtLS0tLS0NCisvLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAg
IDAgICAgICBQT1MgICBmbG9hdCAgICAgICANCisvLyBURVhDT09SRCAgICAgICAgICAgICAgICAg
MCAgIHh5ICAgICAgICAgIDEgICAgIE5PTkUgICBmbG9hdCAgIHh5ICANCisvLw0KKy8vDQorLy8g
T3V0cHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAg
TWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8v
IFNWX1RBUkdFVCAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgIGZs
b2F0ICAgeHl6dw0KKy8vDQorLy8NCisvLyBTYW1wbGVyL1Jlc291cmNlIHRvIERYOSBzaGFkZXIg
c2FtcGxlciBtYXBwaW5nczoNCisvLw0KKy8vIFRhcmdldCBTYW1wbGVyIFNvdXJjZSBTYW1wbGVy
ICBTb3VyY2UgUmVzb3VyY2UNCisvLyAtLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0gLS0t
LS0tLS0tLS0tLS0tLQ0KKy8vIHMwICAgICAgICAgICAgIHMwICAgICAgICAgICAgICB0MCAgICAg
ICAgICAgICAgIA0KKy8vDQorLy8NCisvLyBMZXZlbDkgc2hhZGVyIGJ5dGVjb2RlOg0KKy8vDQor
ICAgIHBzXzJfeA0KKyAgICBkY2wgdDAueHkNCisgICAgZGNsXzJkIHMwDQorICAgIHRleGxkIHIw
LCB0MCwgczANCisgICAgcmNwIHIxLncsIHIwLncNCisgICAgbXVsIHIxLnh5eiwgcjAsIHIxLncN
CisgICAgY21wIHIwLnh5eiwgLXIwLncsIHIwLCByMQ0KKyAgICBtb3Ygb0MwLCByMA0KKw0KKy8v
IGFwcHJveGltYXRlbHkgNSBpbnN0cnVjdGlvbiBzbG90cyB1c2VkICgxIHRleHR1cmUsIDQgYXJp
dGhtZXRpYykNCitwc180XzANCitkY2xfc2FtcGxlciBzMCwgbW9kZV9kZWZhdWx0DQorZGNsX3Jl
c291cmNlX3RleHR1cmUyZCAoZmxvYXQsZmxvYXQsZmxvYXQsZmxvYXQpIHQwDQorZGNsX2lucHV0
X3BzIGxpbmVhciB2MS54eQ0KK2RjbF9vdXRwdXQgbzAueHl6dw0KK2RjbF90ZW1wcyAyDQorc2Ft
cGxlIHIwLnh5encsIHYxLnh5eHgsIHQwLnh5encsIHMwDQorbHQgcjEueCwgbCgwLjAwMDAwMCks
IHIwLncNCitkaXYgcjEueXp3LCByMC54eHl6LCByMC53d3d3DQorbW92YyBvMC54eXosIHIxLnh4
eHgsIHIxLnl6d3ksIHIwLnh5engNCittb3YgbzAudywgcjAudw0KK3JldCANCisvLyBBcHByb3hp
bWF0ZWx5IDYgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZA0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUg
Z19QU19QYXNzdGhyb3VnaFJHQlVubXVsdGlwbHkyRFtdID0gew0KKyAgICA2OCwgIDg4LCAgNjYs
ICA2NywgIDE4MCwgODcsICA0MywgIDExMSwgMjU1LCAxMzUsIDI4LCAgMjI0LCA0MiwgIDg1LCAg
MTk3LCAxNiwgIDE3LCAgMTcyLCAxNzYsDQorICAgIDcwLCAgMSwgICAwLCAgIDAsICAgMCwgICAx
MDQsIDMsICAgMCwgICAwLCAgIDYsICAgMCwgICAwLCAgIDAsICAgNTYsICAwLCAgIDAsICAgMCwg
ICAyMTIsIDAsDQorICAgIDAsICAgMCwgICAxODQsIDEsICAgMCwgICAwLCAgIDUyLCAgMiwgICAw
LCAgIDAsICAgMjIwLCAyLCAgIDAsICAgMCwgICA1MiwgIDMsICAgMCwgICAwLCAgIDY1LA0KKyAg
ICAxMTEsIDExMCwgNTcsICAxNDgsIDAsICAgMCwgICAwLCAgIDE0OCwgMCwgICAwLCAgIDAsICAg
MCwgICAyLCAgIDI1NSwgMjU1LCAxMDgsIDAsICAgMCwgICAwLA0KKyAgICA0MCwgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICA0MCwgIDAsICAgMCwgICAwLCAgIDQwLCAgMCwgICAwLCAgIDAsICAg
NDAsICAwLCAgIDEsICAgMCwgICAzNiwNCisgICAgMCwgICAwLCAgIDAsICAgNDAsICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMSwgICAyLCAgIDI1NSwgMjU1LCAzMSwgIDAsICAgMCwgICAyLCAg
IDAsICAgMCwNCisgICAgMCwgICAxMjgsIDAsICAgMCwgICAzLCAgIDE3NiwgMzEsICAwLCAgIDAs
ICAgMiwgICAwLCAgIDAsICAgMCwgICAxNDQsIDAsICAgOCwgICAxNSwgIDE2MCwgNjYsDQorICAg
IDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAxNSwgIDEyOCwgMCwgICAwLCAgIDIyOCwgMTc2LCAw
LCAgIDgsICAgMjI4LCAxNjAsIDYsICAgMCwgICAwLCAgIDIsDQorICAgIDEsICAgMCwgICA4LCAg
IDEyOCwgMCwgICAwLCAgIDI1NSwgMTI4LCA1LCAgIDAsICAgMCwgICAzLCAgIDEsICAgMCwgICA3
LCAgIDEyOCwgMCwgICAwLCAgIDIyOCwNCisgICAgMTI4LCAxLCAgIDAsICAgMjU1LCAxMjgsIDg4
LCAgMCwgICAwLCAgIDQsICAgMCwgICAwLCAgIDcsICAgMTI4LCAwLCAgIDAsICAgMjU1LCAxMjks
IDAsICAgMCwNCisgICAgMjI4LCAxMjgsIDEsICAgMCwgICAyMjgsIDEyOCwgMSwgICAwLCAgIDAs
ICAgMiwgICAwLCAgIDgsICAgMTUsICAxMjgsIDAsICAgMCwgICAyMjgsIDEyOCwgMjU1LA0KKyAg
ICAyNTUsIDAsICAgMCwgICA4MywgIDcyLCAgNjgsICA4MiwgIDIyMCwgMCwgICAwLCAgIDAsICAg
NjQsICAwLCAgIDAsICAgMCwgICA1NSwgIDAsICAgMCwgICAwLA0KKyAgICA5MCwgIDAsICAgMCwg
ICAzLCAgIDAsICAgOTYsICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA4OCwgIDI0LCAg
MCwgICA0LCAgIDAsICAgMTEyLCAxNiwNCisgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDg1
LCAgODUsICAwLCAgIDAsICAgOTgsICAxNiwgIDAsICAgMywgICA1MCwgIDE2LCAgMTYsICAwLCAg
IDEsICAgMCwNCisgICAgMCwgICAwLCAgIDEwMSwgMCwgICAwLCAgIDMsICAgMjQyLCAzMiwgIDE2
LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEwNCwgMCwgICAwLCAgIDIsICAgMiwNCisgICAg
MCwgICAwLCAgIDAsICAgNjksICAwLCAgIDAsICAgOSwgICAyNDIsIDAsICAgMTYsICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgNzAsICAxNiwgIDE2LCAgMCwNCisgICAgMSwgICAwLCAgIDAsICAg
MCwgICA3MCwgIDEyNiwgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA5NiwgIDE2
LCAgMCwgICAwLCAgIDAsICAgMCwNCisgICAgMCwgICA0OSwgIDAsICAgMCwgICA3LCAgIDE4LCAg
MCwgICAxNiwgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAxLCAgIDY0LCAgMCwgICAwLCAgIDAs
ICAgMCwNCisgICAgMCwgICAwLCAgIDU4LCAgMCwgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAxNCwgIDAsICAgMCwgICA3LCAgIDIyNiwgMCwgICAxNiwgIDAsICAgMSwNCisgICAgMCwg
ICAwLCAgIDAsICAgNiwgICA5LCAgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDI0Niwg
MTUsICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwNCisgICAgNTUsICAwLCAgIDAsICAgOSwg
ICAxMTQsIDMyLCAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNiwgICAwLCAgIDE2LCAg
MCwgICAxLCAgIDAsICAgMCwNCisgICAgMCwgICAxNTAsIDcsICAgMTYsICAwLCAgIDEsICAgMCwg
ICAwLCAgIDAsICAgNzAsICAyLCAgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDU0LCAg
MCwNCisgICAgMCwgICA1LCAgIDEzMCwgMzIsICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICA1OCwgIDAsICAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNjIsDQorICAgIDAsICAg
MCwgICAxLCAgIDgzLCAgODQsICA2NSwgIDg0LCAgMTE2LCAwLCAgIDAsICAgMCwgICA2LCAgIDAs
ICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MiwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
DQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAg
MCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgODIsICA2OCwgIDY5LCAgNzAsICAxNjAsIDAsDQor
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMiwg
ICAwLCAgIDAsICAgMCwgICAyOCwgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDQsICAgMjU1LCAy
NTUsIDAsICAgMSwgICAwLCAgIDAsICAgMTA5LCAwLCAgIDAsICAgMCwgICA5MiwgIDAsICAgMCwg
ICAwLCAgIDMsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwg
ICAwLCAgIDAsDQorICAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAxMDAsIDAsICAgMCwgICAw
LCAgIDIsICAgMCwgICAwLCAgIDAsICAgNSwgICAwLCAgIDAsICAgMCwgICA0LCAgIDAsDQorICAg
IDAsICAgMCwgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAw
LCAgIDAsICAgMCwgICAxMywgIDAsICAgMCwgICAwLCAgIDgzLA0KKyAgICA5NywgIDEwOSwgMTEy
LCAxMDgsIDEwMSwgMTE0LCAwLCAgIDg0LCAgMTAxLCAxMjAsIDExNiwgMTE3LCAxMTQsIDEwMSwg
NzAsICAwLCAgIDc3LCAgMTA1LCA5OSwNCisgICAgMTE0LCAxMTEsIDExNSwgMTExLCAxMDIsIDEx
NiwgMzIsICA0MCwgIDgyLCAgNDEsICAzMiwgIDcyLCAgNzYsICA4MywgIDc2LCAgMzIsICA4Mywg
IDEwNCwgOTcsDQorICAgIDEwMCwgMTAxLCAxMTQsIDMyLCAgNjcsICAxMTEsIDEwOSwgMTEyLCAx
MDUsIDEwOCwgMTAxLCAxMTQsIDMyLCAgNTQsICA0NiwgIDUxLCAgNDYsICA1NywgIDU0LA0KKyAg
ICA0OCwgIDQ4LCAgNDYsICA0OSwgIDU0LCAgNTEsICA1NiwgIDUyLCAgMCwgICAxNzEsIDczLCAg
ODMsICA3MSwgIDc4LCAgODAsICAwLCAgIDAsICAgMCwgICAyLA0KKyAgICAwLCAgIDAsICAgMCwg
ICA4LCAgIDAsICAgMCwgICAwLCAgIDU2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAxLCAgIDAsICAgMCwgICAwLA0KKyAgICAzLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMTUsICAwLCAgIDAsICAgMCwgICA2OCwgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwg
ICAxLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMywgICAwLCAgIDAsICAgODMsICA4NiwNCisgICAg
OTUsICA4MCwgIDc5LCAgODMsICA3MywgIDg0LCAgNzMsICA3OSwgIDc4LCAgMCwgICA4NCwgIDY5
LCAgODgsICA2NywgIDc5LCAgNzksICA4MiwgIDY4LCAgMCwNCisgICAgMTcxLCAxNzEsIDE3MSwg
NzksICA4MywgIDcxLCAgNzgsICA0NCwgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAs
ICAgOCwgICAwLCAgIDAsICAgMCwNCisgICAgMzIsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwNCisgICAgMCwgICAxNSwgIDAsICAgMCwgICAwLCAgIDgzLCAgODYsICA5NSwgIDg0LCAg
NjUsICA4MiwgIDcxLCAgNjksICA4NCwgIDAsICAgMTcxLCAxNzF9Ow0KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9j
b21waWxlZC9yZXNvbHZlZGVwdGgxMV9wcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxl
ZC9yZXNvbHZlZGVwdGgxMV9wcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9y
ZXNvbHZlZGVwdGgxMV9wcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODIgQEAKKyNpZiAw
DQorLy8NCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxl
ciA2LjMuOTYwMC4xNjM4NA0KKy8vDQorLy8NCisvLyBSZXNvdXJjZSBCaW5kaW5nczoNCisvLw0K
Ky8vIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICBGb3JtYXQgICAg
ICAgICBEaW0gU2xvdCBFbGVtZW50cw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSAtLS0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tLS0tLS0gLS0tLSAtLS0tLS0tLQ0KKy8vIERlcHRo
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlICAgZmxvYXQgICAgICAgIDJkTVMg
ICAgMCAgICAgICAgMQ0KKy8vDQorLy8NCisvLw0KKy8vIElucHV0IHNpZ25hdHVyZToNCisvLw0K
Ky8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAg
Rm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0t
LS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1Bvc2l0aW9uICAgICAgICAgICAg
ICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgICAgIA0KKy8vIFRFWENPT1JE
ICAgICAgICAgICAgICAgICAwICAgeHkgICAgICAgICAgMSAgICAgTk9ORSAgIGZsb2F0ICAgeHkg
IA0KKy8vDQorLy8NCisvLyBPdXRwdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAg
ICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQor
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0t
LS0tLS0gLS0tLS0tDQorLy8gU1ZfVGFyZ2V0ICAgICAgICAgICAgICAgIDAgICB4ICAgICAgICAg
ICAwICAgVEFSR0VUICAgZmxvYXQgICB4ICAgDQorLy8NCitwc180XzENCitkY2xfZ2xvYmFsRmxh
Z3MgcmVmYWN0b3JpbmdBbGxvd2VkDQorZGNsX3Jlc291cmNlX3RleHR1cmUyZG1zKDApIChmbG9h
dCxmbG9hdCxmbG9hdCxmbG9hdCkgdDANCitkY2xfaW5wdXRfcHMgbGluZWFyIHYxLnh5DQorZGNs
X291dHB1dCBvMC54DQorZGNsX3RlbXBzIDENCityZXNpbmZvX3VpbnQgcjAueHksIGwoMCksIHQw
Lnh5encNCit1dG9mIHIwLnh5LCByMC54eXh4DQorbXVsIHIwLnh5LCByMC54eXh4LCB2MS54eXh4
DQorZnRvdSByMC54eSwgcjAueHl4eA0KK21vdiByMC56dywgbCgwLDAsMCwwKQ0KK2xkbXMgcjAu
eCwgcjAueHl6dywgdDAueHl6dywgbCgwKQ0KK21vdiBvMC54LCByMC54DQorcmV0IA0KKy8vIEFw
cHJveGltYXRlbHkgOCBpbnN0cnVjdGlvbiBzbG90cyB1c2VkDQorI2VuZGlmDQorDQorY29uc3Qg
QllURSBnX1BTX1Jlc29sdmVEZXB0aFtdID0gew0KKyAgICA2OCwgIDg4LCAgNjYsICA2NywgIDIw
NSwgMjE5LCAxOTEsIDIwMSwgMTAzLCAxMzQsIDI0MywgNzYsICAxMSwgOTEsICAyMywgIDE4Miwg
NDIsICA4LCAgIDE3LA0KKyAgICAxNzMsIDEsICAgMCwgICAwLCAgIDAsICAgMTg0LCAyLCAgIDAs
ICAgMCwgICA1LCAgIDAsICAgMCwgICAwLCAgNTIsICAwLCAgIDAsICAgMCwgICAxNzYsIDAsDQor
ICAgIDAsICAgMCwgICA4LCAgIDEsICAgMCwgICAwLCAgIDYwLCAgMSwgICAwLCAgIDAsICAgNjAs
ICAyLCAgIDAsICAwLCAgIDgyLCAgNjgsICA2OSwgIDcwLCAgMTE2LA0KKyAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgMCwg
ICAwLCAgIDI4LCAgMCwgICAwLCAgIDAsDQorICAgIDEsICAgNCwgICAyNTUsIDI1NSwgMCwgICAx
LCAgIDAsICAgMCwgICA2NiwgIDAsICAgMCwgICAwLCAgIDYwLCAwLCAgIDAsICAgMCwgICAyLCAg
IDAsICAgMCwNCisgICAgMCwgICA1LCAgIDAsICAgMCwgICAwLCAgIDYsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLA0KKyAgICAw
LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICA2OCwgIDEwMSwgMTEyLCAxMTYsIDEwNCwgMCwg
ICA3NywgMTA1LCA5OSwgIDExNCwgMTExLCAxMTUsIDExMSwNCisgICAgMTAyLCAxMTYsIDMyLCAg
NDAsICA4MiwgIDQxLCAgMzIsICA3MiwgIDc2LCAgODMsICA3NiwgIDMyLCAgODMsIDEwNCwgOTcs
ICAxMDAsIDEwMSwgMTE0LCAzMiwNCisgICAgNjcsICAxMTEsIDEwOSwgMTEyLCAxMDUsIDEwOCwg
MTAxLCAxMTQsIDMyLCAgNTQsICA0NiwgIDUxLCAgNDYsIDU3LCAgNTQsICA0OCwgIDQ4LCAgNDYs
ICA0OSwNCisgICAgNTQsICA1MSwgIDU2LCAgNTIsICAwLCAgIDczLCAgODMsICA3MSwgIDc4LCAg
ODAsICAwLCAgIDAsICAgMCwgIDIsICAgMCwgICAwLCAgIDAsICAgOCwgICAwLA0KKyAgICAwLCAg
IDAsICAgNTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAw
LCAgMCwgICAzLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDE1LCAg
MCwgICAwLCAgIDAsICAgNjgsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwNCisgICAgMywgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAw
LCAgIDMsICAgMywgICAwLCAgIDAsICAgODMsIDg2LCAgOTUsICA4MCwgIDExMSwgMTE1LCAxMDUs
DQorICAgIDExNiwgMTA1LCAxMTEsIDExMCwgMCwgICA4NCwgIDY5LCAgODgsICA2NywgIDc5LCAg
NzksICA4MiwgIDY4LCAwLCAgIDE3MSwgMTcxLCAxNzEsIDc5LCAgODMsDQorICAgIDcxLCAgNzgs
ICA0NCwgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgOCwgICAwLCAgIDAsICAw
LCAgIDMyLCAgMCwgICAwLCAgIDAsICAgMCwNCisgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgIDAsICAgMCwgICAxLCAgIDE0
LCAgMCwgICAwLA0KKyAgICA4MywgIDg2LCAgOTUsICA4NCwgIDk3LCAgMTE0LCAxMDMsIDEwMSwg
MTE2LCAwLCAgIDE3MSwgMTcxLCA4MywgNzIsICA2OCwgIDgyLCAgMjQ4LCAwLCAgIDAsDQorICAg
IDAsICAgNjUsICAwLCAgIDAsICAgMCwgICA2MiwgIDAsICAgMCwgICAwLCAgIDEwNiwgOCwgICAw
LCAgIDEsICA4OCwgIDMyLCAgMCwgICA0LCAgIDAsICAgMTEyLA0KKyAgICAxNiwgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICA4NSwgIDg1LCAgMCwgICAwLCAgIDk4LCAgMTYsICAwLCAgMywgICA1
MCwgIDE2LCAgMTYsICAwLCAgIDEsDQorICAgIDAsICAgMCwgICAwLCAgIDEwMSwgMCwgICAwLCAg
IDMsICAgMTgsICAzMiwgIDE2LCAgMCwgICAwLCAgIDAsICAwLCAgIDAsICAgMTA0LCAwLCAgIDAs
ICAgMiwNCisgICAgMSwgICAwLCAgIDAsICAgMCwgICA2MSwgIDE2LCAgMCwgICA3LCAgIDUwLCAg
MCwgICAxNiwgIDAsICAgMCwgIDAsICAgMCwgICAwLCAgIDEsICAgNjQsICAwLA0KKyAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgNzAsICAxMjYsIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgODYsICAwLCAgIDAsICAgNSwgICA1MCwgIDAsDQorICAgIDE2LCAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDcwLCAgMCwgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAwLCAgIDU2LCAgMCwg
ICAwLCAgIDcsICAgNTAsDQorICAgIDAsICAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
NzAsICAwLCAgIDE2LCAgMCwgICAwLCAgIDAsICAwLCAgIDAsICAgNzAsICAxNiwgIDE2LCAgMCwN
CisgICAgMSwgICAwLCAgIDAsICAgMCwgICAyOCwgIDAsICAgMCwgICA1LCAgIDUwLCAgMCwgICAx
NiwgIDAsICAgMCwgIDAsICAgMCwgICAwLCAgIDcwLCAgMCwgICAxNiwNCisgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDU0LCAgMCwgICAwLCAgIDgsICAgMTk0LCAwLCAgIDE2LCAgMCwgIDAs
ICAgMCwgICAwLCAgIDAsICAgMiwgICA2NCwNCisgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICA0NiwNCisgICAgMCwgICAwLCAgIDksICAgMTgsICAwLCAgIDE2LCAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDcwLCAgMTQsIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLA0KKyAg
ICA3MCwgIDEyNiwgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICA2NCwgIDAsICAg
MCwgICAwLCAgMCwgICAwLCAgIDAsICAgNTQsICAwLCAgIDAsDQorICAgIDUsICAgMTgsICAzMiwg
IDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEwLCAgMCwgICAxNiwgIDAsICAwLCAgIDAs
ICAgMCwgICAwLCAgIDYyLCAgMCwNCisgICAgMCwgICAxLCAgIDgzLCAgODQsICA2NSwgIDg0LCAg
MTE2LCAwLCAgIDAsICAgMCwgICA4LCAgIDAsICAgMCwgIDAsICAgMSwgICAwLCAgIDAsICAgMCwg
ICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDEsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwNCisgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgIDEsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDIsDQor
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwNCisgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDB9Ow0KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hh
ZGVycy9jb21waWxlZC9yZXNvbHZlZGVwdGhzdGVuY2lsMTFfcHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3No
YWRlcnMvY29tcGlsZWQvcmVzb2x2ZWRlcHRoc3RlbmNpbDExX3BzLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9zaGFkZXJzL2NvbXBpbGVkL3Jlc29sdmVkZXB0aHN0ZW5jaWwxMV9wcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsOTIgQEAKKyNpZiAwDQorLy8NCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9z
b2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA2LjMuOTYwMC4xNjM4NA0KKy8vDQorLy8NCisv
LyBSZXNvdXJjZSBCaW5kaW5nczoNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUeXBlICBGb3JtYXQgICAgICAgICBEaW0gU2xvdCBFbGVtZW50cw0KKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tLS0t
LS0gLS0tLSAtLS0tLS0tLQ0KKy8vIERlcHRoICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXh0dXJlICAgZmxvYXQgICAgICAgIDJkTVMgICAgMCAgICAgICAgMQ0KKy8vIFN0ZW5jaWwgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlICAgdWludDIgICAgICAgIDJkTVMgICAgMSAg
ICAgICAgMQ0KKy8vDQorLy8NCisvLw0KKy8vIElucHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5h
bWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0
ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAt
LS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1Bvc2l0aW9uICAgICAgICAgICAgICAwICAg
eHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgICAgIA0KKy8vIFRFWENPT1JEICAgICAg
ICAgICAgICAgICAwICAgeHkgICAgICAgICAgMSAgICAgTk9ORSAgIGZsb2F0ICAgeHkgIA0KKy8v
DQorLy8NCisvLyBPdXRwdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAg
ICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0g
LS0tLS0tDQorLy8gU1ZfVGFyZ2V0ICAgICAgICAgICAgICAgIDAgICB4eSAgICAgICAgICAwICAg
VEFSR0VUICAgZmxvYXQgICB4eSAgDQorLy8NCitwc180XzENCitkY2xfZ2xvYmFsRmxhZ3MgcmVm
YWN0b3JpbmdBbGxvd2VkDQorZGNsX3Jlc291cmNlX3RleHR1cmUyZG1zKDApIChmbG9hdCxmbG9h
dCxmbG9hdCxmbG9hdCkgdDANCitkY2xfcmVzb3VyY2VfdGV4dHVyZTJkbXMoMCkgKHVpbnQsdWlu
dCx1aW50LHVpbnQpIHQxDQorZGNsX2lucHV0X3BzIGxpbmVhciB2MS54eQ0KK2RjbF9vdXRwdXQg
bzAueHkNCitkY2xfdGVtcHMgMQ0KK3Jlc2luZm9fdWludCByMC54eSwgbCgwKSwgdDAueHl6dw0K
K3V0b2YgcjAueHksIHIwLnh5eHgNCittdWwgcjAueHksIHIwLnh5eHgsIHYxLnh5eHgNCitmdG91
IHIwLnh5LCByMC54eXh4DQorbW92IHIwLnp3LCBsKDAsMCwwLDApDQorbGRtcyByMC56LCByMC54
eXp3LCB0MS54enl3LCBsKDApDQorbGRtcyByMC54LCByMC54eXd3LCB0MC54eXp3LCBsKDApDQor
bW92IG8wLngsIHIwLngNCit1dG9mIG8wLnksIHIwLnoNCityZXQgDQorLy8gQXBwcm94aW1hdGVs
eSAxMCBpbnN0cnVjdGlvbiBzbG90cyB1c2VkDQorI2VuZGlmDQorDQorY29uc3QgQllURSBnX1BT
X1Jlc29sdmVEZXB0aFN0ZW5jaWxbXSA9IHsNCisgICAgNjgsICA4OCwgIDY2LCAgNjcsICAyMjks
IDE5MSwgMjU0LCAxMiwgIDEwLCAgMTksICAxODEsIDE2MiwgMjIyLCAyMDMsIDI0NCwgMTQ2LCAx
MDQsIDIyNiwgMTk1LA0KKyAgICAxNzcsIDEsICAgMCwgICAwLCAgIDAsICAgNDAsICAzLCAgIDAs
ICAgMCwgICA1LCAgIDAsICAgMCwgICAwLCAgIDUyLCAgMCwgICAwLCAgIDAsICAgMjE2LCAwLA0K
KyAgICAwLCAgIDAsICAgNDgsICAxLCAgIDAsICAgMCwgICAxMDAsIDEsICAgMCwgICAwLCAgIDE3
MiwgMiwgICAwLCAgIDAsICAgODIsICA2OCwgIDY5LCAgNzAsICAxNTYsDQorICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsICAg
MCwgICAwLCAgIDI4LCAgMCwgICAwLCAgIDAsDQorICAgIDEsICAgNCwgICAyNTUsIDI1NSwgMCwg
ICAxLCAgIDAsICAgMCwgICAxMDYsIDAsICAgMCwgICAwLCAgIDkyLCAgMCwgICAwLCAgIDAsICAg
MiwgICAwLCAgIDAsDQorICAgIDAsICAgNSwgICAwLCAgIDAsICAgMCwgICA2LCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsDQor
ICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDk4LCAgMCwgICAwLCAgIDAsICAgMiwg
ICAwLCAgIDAsICAgMCwgICA0LCAgIDAsICAgMCwgICAwLCAgIDYsDQorICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwg
ICAwLCAgIDUsICAgMCwgICAwLCAgIDAsDQorICAgIDY4LCAgMTAxLCAxMTIsIDExNiwgMTA0LCAw
LCAgIDgzLCAgMTE2LCAxMDEsIDExMCwgOTksICAxMDUsIDEwOCwgMCwgICA3NywgIDEwNSwgOTks
ICAxMTQsIDExMSwNCisgICAgMTE1LCAxMTEsIDEwMiwgMTE2LCAzMiwgIDQwLCAgODIsICA0MSwg
IDMyLCAgNzIsICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCAgMTA0LCA5NywgIDEwMCwgMTAxLA0K
KyAgICAxMTQsIDMyLCAgNjcsICAxMTEsIDEwOSwgMTEyLCAxMDUsIDEwOCwgMTAxLCAxMTQsIDMy
LCAgNTQsICA0NiwgIDUxLCAgNDYsICA1NywgIDU0LCAgNDgsICA0OCwNCisgICAgNDYsICA0OSwg
IDU0LCAgNTEsICA1NiwgIDUyLCAgMCwgICA3MywgIDgzLCAgNzEsICA3OCwgIDgwLCAgMCwgICAw
LCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwNCisgICAgOCwgICAwLCAgIDAsICAgMCwgICA1Niwg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAz
LCAgIDAsICAgMCwNCisgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDE1LCAgMCwgICAwLCAg
IDAsICAgNjgsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwNCisg
ICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAzLCAg
IDMsICAgMCwgICAwLCAgIDgzLCAgODYsICA5NSwgIDgwLCAgMTExLA0KKyAgICAxMTUsIDEwNSwg
MTE2LCAxMDUsIDExMSwgMTEwLCAwLCAgIDg0LCAgNjksICA4OCwgIDY3LCAgNzksICA3OSwgIDgy
LCAgNjgsICAwLCAgIDE3MSwgMTcxLCAxNzEsDQorICAgIDc5LCAgODMsICA3MSwgIDc4LCAgNDQs
ICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsICAg
MzIsICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDMsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAzLCAgIDEyLA0K
KyAgICAwLCAgIDAsICAgODMsICA4NiwgIDk1LCAgODQsICA5NywgIDExNCwgMTAzLCAxMDEsIDEx
NiwgMCwgICAxNzEsIDE3MSwgODMsICA3MiwgIDY4LCAgODIsICA2NCwNCisgICAgMSwgICAwLCAg
IDAsICAgNjUsICAwLCAgIDAsICAgMCwgICA4MCwgIDAsICAgMCwgICAwLCAgIDEwNiwgOCwgICAw
LCAgIDEsICAgODgsICAzMiwgIDAsICAgNCwNCisgICAgMCwgICAxMTIsIDE2LCAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDg1LCAgODUsICAwLCAgIDAsICAgODgsICAzMiwgIDAsICAgNCwgICAw
LCAgIDExMiwgMTYsDQorICAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICA2OCwgIDY4LCAgMCwg
ICAwLCAgIDk4LCAgMTYsICAwLCAgIDMsICAgNTAsICAxNiwgIDE2LCAgMCwgICAxLCAgIDAsDQor
ICAgIDAsICAgMCwgICAxMDEsIDAsICAgMCwgICAzLCAgIDUwLCAgMzIsICAxNiwgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAxMDQsIDAsICAgMCwgICAyLCAgIDEsDQorICAgIDAsICAgMCwgICAw
LCAgIDYxLCAgMTYsICAwLCAgIDcsICAgNTAsICAwLCAgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDEsICAgNjQsICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgNzAsICAx
MjYsIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDg2LCAgMCwgICAwLCAgIDUsICAgNTAs
ICAwLCAgIDE2LA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNzAsICAwLCAgIDE2LCAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDU2LCAgMCwgICAwLCAgIDcsICAgNTAsICAwLA0KKyAg
ICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA3MCwgIDAsICAgMTYsICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgNzAsICAxNiwgIDE2LCAgMCwgICAxLA0KKyAgICAwLCAgIDAsICAgMCwg
ICAyOCwgIDAsICAgMCwgICA1LCAgIDUwLCAgMCwgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICA3MCwgIDAsICAgMTYsICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDU0LCAgMCwg
ICAwLCAgIDgsICAgMTk0LCAwLCAgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAg
NjQsICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNDYsICAwLA0KKyAgICAw
LCAgIDksICAgNjYsICAwLCAgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDcwLCAgMTQs
ICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAxMzQsDQorICAgIDEyNSwgMTYsICAwLCAg
IDEsICAgMCwgICAwLCAgIDAsICAgMSwgICA2NCwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDQ2LCAgMCwgICAwLCAgIDksDQorICAgIDE4LCAgMCwgICAxNiwgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICA3MCwgIDE1LCAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNzAsICAx
MjYsIDE2LA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICA2NCwgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDU0LCAgMCwgICAwLCAgIDUsICAgMTgsICAzMiwNCisgICAg
MTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMTAsICAwLCAgIDE2LCAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDg2LCAgMCwgICAwLCAgIDUsICAgMzQsDQorICAgIDMyLCAgMTYsICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgNDIsICAwLCAgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDYyLCAgMCwgICAwLCAgIDEsDQorICAgIDgzLCAgODQsICA2NSwgIDg0LCAgMTE2LCAwLCAg
IDAsICAgMCwgICAxMCwgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsDQorICAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsDQorICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCAg
IDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDB9Ow0KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVy
cy9jb21waWxlZC9yZXNvbHZlZGVwdGhzdGVuY2lsMTFfdnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRl
cnMvY29tcGlsZWQvcmVzb2x2ZWRlcHRoc3RlbmNpbDExX3ZzLmgJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9z
aGFkZXJzL2NvbXBpbGVkL3Jlc29sdmVkZXB0aHN0ZW5jaWwxMV92cy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsODQgQEAKKyNpZiAwDQorLy8NCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0
IChSKSBITFNMIFNoYWRlciBDb21waWxlciA2LjMuOTYwMC4xNjM4NA0KKy8vDQorLy8NCisvLw0K
Ky8vIElucHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4
ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0K
Ky8vIFNWX1ZlcnRleElEICAgICAgICAgICAgICAwICAgeCAgICAgICAgICAgMCAgIFZFUlRJRCAg
ICB1aW50ICAgeCAgIA0KKy8vDQorLy8NCisvLyBPdXRwdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8g
TmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3Jt
YXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0t
IC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQorLy8gU1ZfUG9zaXRpb24gICAgICAgICAgICAgIDAg
ICB4eXp3ICAgICAgICAwICAgICAgUE9TICAgZmxvYXQgICB4eXp3DQorLy8gVEVYQ09PUkQgICAg
ICAgICAgICAgICAgIDAgICB4eSAgICAgICAgICAxICAgICBOT05FICAgZmxvYXQgICB4eSAgDQor
Ly8NCit2c180XzENCitkY2xfZ2xvYmFsRmxhZ3MgcmVmYWN0b3JpbmdBbGxvd2VkDQorZGNsX2lt
bWVkaWF0ZUNvbnN0YW50QnVmZmVyIHsgeyAtMS4wMDAwMDAsIDEuMDAwMDAwLCAwLCAwfSwNCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IDEuMDAwMDAwLCAtMS4wMDAwMDAsIDAsIDB9
LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgLTEuMDAwMDAwLCAtMS4wMDAwMDAs
IDAsIDB9LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgLTEuMDAwMDAwLCAxLjAw
MDAwMCwgMCwgMH0sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAxLjAwMDAwMCwg
MS4wMDAwMDAsIDAsIDB9LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgMS4wMDAw
MDAsIC0xLjAwMDAwMCwgMCwgMH0gfQ0KK2RjbF9pbnB1dF9zZ3YgdjAueCwgdmVydGV4X2lkDQor
ZGNsX291dHB1dF9zaXYgbzAueHl6dywgcG9zaXRpb24NCitkY2xfb3V0cHV0IG8xLnh5DQorZGNs
X3RlbXBzIDENCittb3YgbzAuencsIGwoMCwwLDAsMS4wMDAwMDApDQorbW92IHIwLngsIHYwLngN
Cittb3YgbzAueHksIGljYltyMC54ICsgMF0ueHl4eA0KK2FkZCByMC55LCBsKDEuMDAwMDAwKSwg
aWNiW3IwLnggKyAwXS54DQorYWRkIHIwLngsIGwoMS4wMDAwMDApLCAtaWNiW3IwLnggKyAwXS55
DQorbXVsIG8xLnh5LCByMC55eHl5LCBsKDAuNTAwMDAwLCAwLjUwMDAwMCwgMC4wMDAwMDAsIDAu
MDAwMDAwKQ0KK3JldCANCisvLyBBcHByb3hpbWF0ZWx5IDcgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNl
ZA0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUgZ19WU19SZXNvbHZlRGVwdGhTdGVuY2lsW10gPSB7
DQorICAgIDY4LCAgODgsICA2NiwgIDY3LCAgMjA1LCAxNSwgIDEwMywgNzAsICAyMDIsIDIzNSwg
MTk1LCA5OCwgIDI1NSwgODIsICA4NCwgIDIzOSwgMTMwLCA2LCAgIDEyLA0KKyAgICAxMDQsIDEs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICA1LCAgIDAsICAgMCwgICAwLCAg
IDUyLCAgMCwgICAwLCAgIDAsICAgMTQwLCAwLA0KKyAgICAwLCAgIDAsICAgMTkyLCAwLCAgIDAs
ICAgMCwgICAyNCwgIDEsICAgMCwgICAwLCAgIDEzMiwgMiwgICAwLCAgIDAsICAgODIsICA2OCwg
IDY5LCAgNzAsICA4MCwNCisgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMjgsICAwLCAgIDAsICAgMCwN
CisgICAgMSwgICA0LCAgIDI1NCwgMjU1LCAwLCAgIDEsICAgMCwgICAwLCAgIDI4LCAgMCwgICAw
LCAgIDAsICAgNzcsICAxMDUsIDk5LCAgMTE0LCAxMTEsIDExNSwgMTExLA0KKyAgICAxMDIsIDEx
NiwgMzIsICA0MCwgIDgyLCAgNDEsICAzMiwgIDcyLCAgNzYsICA4MywgIDc2LCAgMzIsICA4Mywg
IDEwNCwgOTcsICAxMDAsIDEwMSwgMTE0LCAzMiwNCisgICAgNjcsICAxMTEsIDEwOSwgMTEyLCAx
MDUsIDEwOCwgMTAxLCAxMTQsIDMyLCAgNTQsICA0NiwgIDUxLCAgNDYsICA1NywgIDU0LCAgNDgs
ICA0OCwgIDQ2LCAgNDksDQorICAgIDU0LCAgNTEsICA1NiwgIDUyLCAgMCwgICAxNzEsIDE3MSwg
NzMsICA4MywgIDcxLCAgNzgsICA0NCwgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAs
DQorICAgIDgsICAgMCwgICAwLCAgIDAsICAgMzIsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDYsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsDQorICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAxLCAgIDEsICAgMCwgICAwLCAgIDgzLCAgODYsICA5NSwgIDg2LCAg
MTAxLCAxMTQsIDExNiwgMTAxLCAxMjAsIDczLA0KKyAgICA2OCwgIDAsICAgNzksICA4MywgIDcx
LCAgNzgsICA4MCwgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsICAgOCwgICAwLCAg
IDAsICAgMCwgICA1NiwNCisgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAx
LCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwN
CisgICAgMTUsICAwLCAgIDAsICAgMCwgICA2OCwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwNCisgICAgMCwgICAxLCAg
IDAsICAgMCwgICAwLCAgIDMsICAgMTIsICAwLCAgIDAsICAgODMsICA4NiwgIDk1LCAgODAsICAx
MTEsIDExNSwgMTA1LCAxMTYsIDEwNSwgMTExLA0KKyAgICAxMTAsIDAsICAgODQsICA2OSwgIDg4
LCAgNjcsICA3OSwgIDc5LCAgODIsICA2OCwgIDAsICAgMTcxLCAxNzEsIDE3MSwgODMsICA3Miwg
IDY4LCAgODIsICAxMDAsDQorICAgIDEsICAgMCwgICAwLCAgIDY1LCAgMCwgICAxLCAgIDAsICAg
ODksICAwLCAgIDAsICAgMCwgICAxMDYsIDgsICAgMCwgICAxLCAgIDUzLCAgMjQsICAwLCAgIDAs
DQorICAgIDI2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEyOCwgMTkxLCAwLCAgIDAsICAg
MTI4LCA2MywgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwg
ICAwLCAgIDEyOCwgNjMsICAwLCAgIDAsICAgMTI4LCAxOTEsIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDEyOCwgMTkxLCAwLCAgIDAsICAgMTI4
LCAxOTEsIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MTI4LCAxOTEsIDAsDQorICAgIDAsICAgMTI4LCA2MywgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMTI4LCA2MywgIDAsICAgMCwgICAxMjgsIDYzLA0K
KyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEy
OCwgNjMsICAwLCAgIDAsICAgMTI4LCAxOTEsIDAsICAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgOTYsICAwLCAgIDAsICAgNCwgICAxOCwgIDE2LCAgMTYsICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgNiwgICAwLA0KKyAgICAwLCAgIDAsICAgMTAzLCAwLCAgIDAsICAg
NCwgICAyNDIsIDMyLCAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAs
ICAgMCwgICAxMDEsDQorICAgIDAsICAgMCwgICAzLCAgIDUwLCAgMzIsICAxNiwgIDAsICAgMSwg
ICAwLCAgIDAsICAgMCwgICAxMDQsIDAsICAgMCwgICAyLCAgIDEsICAgMCwgICAwLCAgIDAsDQor
ICAgIDU0LCAgMCwgICAwLCAgIDgsICAgMTk0LCAzMiwgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDIsICAgNjQsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAxMjgsIDYzLCAgNTQs
ICAwLCAgIDAsICAgNSwgICAxOCwgIDAsDQorICAgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDEwLCAgMTYsICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA1NCwgIDAsICAgMCwg
ICA2LCAgIDUwLA0KKyAgICAzMiwgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDcwLCAg
MTQ0LCAxNDQsIDAsICAgMTAsICAwLCAgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLA0KKyAg
ICAwLCAgIDAsICAgMCwgICA4LCAgIDM0LCAgMCwgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAxLCAgIDY0LCAgMCwgICAwLCAgIDAsICAgMCwgICAxMjgsDQorICAgIDYzLCAgMTAsICAx
NDQsIDE0NCwgMCwgICAxMCwgIDAsICAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgOSwgICAxOCwgIDAsDQorICAgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDEsICAgNjQsICAwLCAgIDAsICAgMCwgICAwLCAgIDEyOCwgNjMsICAyNiwgIDE0NCwgMTQ0
LCAxMjgsIDY1LA0KKyAgICAwLCAgIDAsICAgMCwgICAxMCwgIDAsICAgMTYsICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgNTYsICAwLCAgIDAsICAgMTAsICA1MCwgIDMyLCAgMTYsICAwLA0KKyAg
ICAxLCAgIDAsICAgMCwgICAwLCAgIDIyLCAgNSwgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAyLCAgIDY0LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLA0KKyAgICA2MywgIDAsICAgMCwg
ICAwLCAgIDYzLCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDYyLCAg
MCwgICAwLCAgIDEsICAgODMsICA4NCwNCisgICAgNjUsICA4NCwgIDExNiwgMCwgICAwLCAgIDAs
ICAgNywgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDYsICAgMCwgICAwLCAg
IDAsICAgMywNCisgICAgMCwgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwNCisgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwNCisgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwNCisgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwNCisgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwNCisgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwfTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGls
ZWQvcmVzb2x2ZXN0ZW5jaWwxMV9wcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9y
ZXNvbHZlc3RlbmNpbDExX3BzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Jl
c29sdmVzdGVuY2lsMTFfcHMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg0IEBACisjaWYg
MA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGls
ZXIgNi4zLjk2MDAuMTYzODQNCisvLw0KKy8vDQorLy8gUmVzb3VyY2UgQmluZGluZ3M6DQorLy8N
CisvLyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgRm9ybWF0ICAg
ICAgICAgRGltIFNsb3QgRWxlbWVudHMNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0tLS0tLS0NCisvLyBTdGVu
Y2lsICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSAgIHVpbnQyICAgICAgICAyZE1T
ICAgIDEgICAgICAgIDENCisvLw0KKy8vDQorLy8NCisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8N
CisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUg
IEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0t
LS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9Qb3NpdGlvbiAgICAgICAgICAg
ICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAgICAgICANCisvLyBURVhDT09S
RCAgICAgICAgICAgICAgICAgMCAgIHh5ICAgICAgICAgIDEgICAgIE5PTkUgICBmbG9hdCAgIHh5
ICANCisvLw0KKy8vDQorLy8gT3V0cHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAg
ICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0K
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAt
LS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1RhcmdldCAgICAgICAgICAgICAgICAwICAgeHkgICAgICAg
ICAgMCAgIFRBUkdFVCAgIGZsb2F0ICAgeHkgIA0KKy8vDQorcHNfNF8xDQorZGNsX2dsb2JhbEZs
YWdzIHJlZmFjdG9yaW5nQWxsb3dlZA0KK2RjbF9yZXNvdXJjZV90ZXh0dXJlMmRtcygwKSAodWlu
dCx1aW50LHVpbnQsdWludCkgdDENCitkY2xfaW5wdXRfcHMgbGluZWFyIHYxLnh5DQorZGNsX291
dHB1dCBvMC54eQ0KK2RjbF90ZW1wcyAxDQorcmVzaW5mb191aW50IHIwLnh5LCBsKDApLCB0MS54
eXp3DQordXRvZiByMC54eSwgcjAueHl4eA0KK211bCByMC54eSwgcjAueHl4eCwgdjEueHl4eA0K
K2Z0b3UgcjAueHksIHIwLnh5eHgNCittb3YgcjAuencsIGwoMCwwLDAsMCkNCitsZG1zIHIwLngs
IHIwLnh5encsIHQxLnl4encsIGwoMCkNCit1dG9mIG8wLnksIHIwLngNCittb3YgbzAueCwgbCgw
KQ0KK3JldCANCisvLyBBcHByb3hpbWF0ZWx5IDkgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZA0KKyNl
bmRpZg0KKw0KK2NvbnN0IEJZVEUgZ19QU19SZXNvbHZlU3RlbmNpbFtdID0gew0KKyAgICA2OCwg
IDg4LCAgNjYsICA2NywgIDEyMiwgMjksICAzNCwgIDE0NiwgMjU0LCAyMDMsIDE3NSwgOTcsICAx
NTEsIDI1NCwgMjU1LCAxOTAsIDkxLCA0MCwgIDU1LA0KKyAgICAxMTgsIDEsICAgMCwgICAwLCAg
IDAsICAgMjA4LCAyLCAgIDAsICAgMCwgICA1LCAgIDAsICAgMCwgICAwLCAgIDUyLCAgMCwgICAw
LCAgIDAsICAxODAsIDAsDQorICAgIDAsICAgMCwgICAxMiwgIDEsICAgMCwgICAwLCAgIDY0LCAg
MSwgICAwLCAgIDAsICAgODQsICAyLCAgIDAsICAgMCwgICA4MiwgIDY4LCAgNjksIDcwLCAgMTIw
LA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAyOCwgIDAsICAwLCAgIDAsDQorICAgIDEsICAgNCwg
ICAyNTUsIDI1NSwgMCwgICAxLCAgIDAsICAgMCwgICA2OCwgIDAsICAgMCwgICAwLCAgIDYwLCAg
MCwgICAwLCAgIDAsICAgMiwgIDAsICAgMCwNCisgICAgMCwgICA0LCAgIDAsICAgMCwgICAwLCAg
IDYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAw
LCAgMSwgICAwLA0KKyAgICAwLCAgIDAsICAgNSwgICAwLCAgIDAsICAgMCwgICA4MywgIDExNiwg
MTAxLCAxMTAsIDk5LCAgMTA1LCAxMDgsIDAsICAgNzcsICAxMDUsIDk5LCAxMTQsIDExMSwNCisg
ICAgMTE1LCAxMTEsIDEwMiwgMTE2LCAzMiwgIDQwLCAgODIsICA0MSwgIDMyLCAgNzIsICA3Niwg
IDgzLCAgNzYsICAzMiwgIDgzLCAgMTA0LCA5NywgMTAwLCAxMDEsDQorICAgIDExNCwgMzIsICA2
NywgIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4LCAxMDEsIDExNCwgMzIsICA1NCwgIDQ2LCAgNTEs
ICA0NiwgIDU3LCAgNTQsIDQ4LCAgNDgsDQorICAgIDQ2LCAgNDksICA1NCwgIDUxLCAgNTYsICA1
MiwgIDAsICAgMTcxLCAxNzEsIDczLCAgODMsICA3MSwgIDc4LCAgODAsICAwLCAgIDAsICAgMCwg
IDIsICAgMCwNCisgICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsICAgNTYsICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgMCwgICAzLA0KKyAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDE1LCAgMCwgICAwLCAgIDAsICAgNjgs
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMywgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMywgICAwLCAg
IDAsICAgODMsIDg2LCAgOTUsDQorICAgIDgwLCAgMTExLCAxMTUsIDEwNSwgMTE2LCAxMDUsIDEx
MSwgMTEwLCAwLCAgIDg0LCAgNjksICA4OCwgIDY3LCAgNzksICA3OSwgIDgyLCAgNjgsIDAsICAg
MTcxLA0KKyAgICAxNzEsIDE3MSwgNzksICA4MywgIDcxLCAgNzgsICA0NCwgIDAsICAgMCwgICAw
LCAgIDEsICAgMCwgICAwLCAgIDAsICAgOCwgICAwLCAgIDAsICAwLCAgIDMyLA0KKyAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMywgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAwLCAgIDAsDQorICAgIDMsICAgMTIsICAwLCAgIDAsICAg
ODMsICA4NiwgIDk1LCAgODQsICA5NywgIDExNCwgMTAzLCAxMDEsIDExNiwgMCwgICAxNzEsIDE3
MSwgODMsIDcyLCAgNjgsDQorICAgIDgyLCAgMTIsICAxLCAgIDAsICAgMCwgICA2NSwgIDAsICAg
MCwgICAwLCAgIDY3LCAgMCwgICAwLCAgIDAsICAgMTA2LCA4LCAgIDAsICAgMSwgIDg4LCAgMzIs
DQorICAgIDAsICAgNCwgICAwLCAgIDExMiwgMTYsICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAg
NjgsICA2OCwgIDAsICAgMCwgICA5OCwgIDE2LCAgMCwgIDMsICAgNTAsDQorICAgIDE2LCAgMTYs
ICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMTAxLCAwLCAgIDAsICAgMywgICA1MCwgIDMyLCAg
MTYsICAwLCAgIDAsICAgMCwgIDAsICAgMCwNCisgICAgMTA0LCAwLCAgIDAsICAgMiwgICAxLCAg
IDAsICAgMCwgICAwLCAgIDYxLCAgMTYsICAwLCAgIDcsICAgNTAsICAwLCAgIDE2LCAgMCwgICAw
LCAgMCwgICAwLA0KKyAgICAwLCAgIDEsICAgNjQsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICA3MCwgIDEyNiwgMTYsICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICA4NiwgIDAsDQorICAg
IDAsICAgNSwgICA1MCwgIDAsICAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNzAsICAw
LCAgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgIDAsICAgNTYsDQorICAgIDAsICAgMCwgICA3LCAg
IDUwLCAgMCwgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA3MCwgIDAsICAgMTYsICAw
LCAgIDAsICAgMCwgIDAsICAgMCwNCisgICAgNzAsICAxNiwgIDE2LCAgMCwgICAxLCAgIDAsICAg
MCwgICAwLCAgIDI4LCAgMCwgICAwLCAgIDUsICAgNTAsICAwLCAgIDE2LCAgMCwgICAwLCAgMCwg
ICAwLA0KKyAgICAwLCAgIDcwLCAgMCwgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA1
NCwgIDAsICAgMCwgICA4LCAgIDE5NCwgMCwgICAxNiwgIDAsICAwLCAgIDAsDQorICAgIDAsICAg
MCwgICAyLCAgIDY0LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgIDAsICAgMCwNCisgICAgMCwgICAwLCAgIDAsICAgNDYsICAw
LCAgIDAsICAgOSwgICAxOCwgIDAsICAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNzAs
ICAxNCwgMTYsICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDIyLCAgMTI2LCAxNiwgIDAs
ICAgMSwgICAwLCAgIDAsICAgMCwgICAxLCAgIDY0LCAgMCwgICAwLCAgIDAsICAwLCAgIDAsDQor
ICAgIDAsICAgODYsICAwLCAgIDAsICAgNSwgICAzNCwgIDMyLCAgMTYsICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMTAsICAwLCAgIDE2LCAgMCwgIDAsICAgMCwNCisgICAgMCwgICAwLCAgIDU0
LCAgMCwgICAwLCAgIDUsICAgMTgsICAzMiwgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDEsICAgNjQsICAwLCAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICA2MiwgIDAsICAgMCwg
ICAxLCAgIDgzLCAgODQsICA2NSwgIDg0LCAgMTE2LCAwLCAgIDAsICAgMCwgICA5LCAgIDAsICAw
LCAgIDAsDQorICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAg
IDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgIDAsICAgMCwNCisgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAwLCAgIDEsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgIDAsICAgMCwN
CisgICAgMCwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDB9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9nZW5lcmF0ZV9zaGFkZXJzLmJhdAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL3NoYWRlcnMvZ2VuZXJhdGVfc2hhZGVycy5iYXQJKHJldmlzaW9uIDIwODAyMSkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvc2hhZGVycy9nZW5lcmF0ZV9zaGFkZXJzLmJhdAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyAr
MjAsNyBAQAogKQ0KIA0KIDo6IFNoYWRlcnMgZm9yIE9wZW5HTCBFUyAyLjAgYW5kIE9wZW5HTCBF
UyAzLjArDQotOjogICAgICAgICAgICAgIHwgSW5wdXQgZmlsZSAgICAgICAgICB8IEVudHJ5IHBv
aW50ICAgICAgICAgICB8IFR5cGUgICAgICAgICAgICB8IE91dHB1dCBmaWxlICAgICAgICAgICAg
ICAgICAgICAgICAgfCBEZWJ1ZyB8DQorOjogICAgICAgICAgICAgIHwgSW5wdXQgZmlsZSAgICAg
ICAgIHwgRW50cnkgcG9pbnQgICAgICAgICAgICB8IFR5cGUgICAgICAgICAgICB8IE91dHB1dCBm
aWxlICAgICAgICAgICAgICAgICAgICAgICAgfCBEZWJ1ZyB8DQogY2FsbDpCdWlsZFNoYWRlciBQ
YXNzdGhyb3VnaDJEMTEuaGxzbCBWU19QYXNzdGhyb3VnaDJEICAgICAgICAgdnNfNF8wX2xldmVs
XzlfMyAgY29tcGlsZWRccGFzc3Rocm91Z2gyZDExdnMuaCAgICAgICAgICVkZWJ1ZyUNCiBjYWxs
OkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoMkQxMS5obHNsIFBTX1Bhc3N0aHJvdWdoUkdCQTJEICAg
ICBwc180XzBfbGV2ZWxfOV8zICBjb21waWxlZFxwYXNzdGhyb3VnaHJnYmEyZDExcHMuaCAgICAg
JWRlYnVnJQ0KIGNhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gyRDExLmhsc2wgUFNfUGFzc3Ro
cm91Z2hSR0IyRCAgICAgIHBzXzRfMF9sZXZlbF85XzMgIGNvbXBpbGVkXHBhc3N0aHJvdWdocmdi
MmQxMXBzLmggICAgICAlZGVidWclDQpAQCAtMjksNiArMjksMTEgQEAKIGNhbGw6QnVpbGRTaGFk
ZXIgUGFzc3Rocm91Z2gyRDExLmhsc2wgUFNfUGFzc3Rocm91Z2hMdW0yRCAgICAgIHBzXzRfMF9s
ZXZlbF85XzMgIGNvbXBpbGVkXHBhc3N0aHJvdWdobHVtMmQxMXBzLmggICAgICAlZGVidWclDQog
Y2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDJEMTEuaGxzbCBQU19QYXNzdGhyb3VnaEx1bUFs
cGhhMkQgcHNfNF8wX2xldmVsXzlfMyAgY29tcGlsZWRccGFzc3Rocm91Z2hsdW1hbHBoYTJkMTFw
cy5oICVkZWJ1ZyUNCiANCitjYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoMkQxMS5obHNsIFBT
X1Bhc3N0aHJvdWdoUkdCQVByZW11bHRpcGx5MkQgcHNfNF8wX2xldmVsXzlfMyBjb21waWxlZFxw
YXNzdGhyb3VnaHJnYmFwcmVtdWx0aXBseTJkMTFwcy5oICVkZWJ1ZyUNCitjYWxsOkJ1aWxkU2hh
ZGVyIFBhc3N0aHJvdWdoMkQxMS5obHNsIFBTX1Bhc3N0aHJvdWdoUkdCQVVubXVsdGlwbHkyRCAg
cHNfNF8wX2xldmVsXzlfMyBjb21waWxlZFxwYXNzdGhyb3VnaHJnYmF1bm11bHRpcGx5MmQxMXBz
LmggICVkZWJ1ZyUNCitjYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoMkQxMS5obHNsIFBTX1Bh
c3N0aHJvdWdoUkdCUHJlbXVsdGlwbHkyRCAgcHNfNF8wX2xldmVsXzlfMyBjb21waWxlZFxwYXNz
dGhyb3VnaHJnYnByZW11bHRpcGx5MmQxMXBzLmggICVkZWJ1ZyUNCitjYWxsOkJ1aWxkU2hhZGVy
IFBhc3N0aHJvdWdoMkQxMS5obHNsIFBTX1Bhc3N0aHJvdWdoUkdCVW5tdWx0aXBseTJEICAgcHNf
NF8wX2xldmVsXzlfMyBjb21waWxlZFxwYXNzdGhyb3VnaHJnYnVubXVsdGlwbHkyZDExcHMuaCAg
ICVkZWJ1ZyUNCisNCiBjYWxsOkJ1aWxkU2hhZGVyIENsZWFyMTEuaGxzbCAgICAgICAgIFZTX0Ns
ZWFyRmxvYXQgICAgICAgICAgICB2c180XzBfbGV2ZWxfOV8zICBjb21waWxlZFxjbGVhcmZsb2F0
MTF2cy5oICAgICAgICAgICAgJWRlYnVnJQ0KIGNhbGw6QnVpbGRTaGFkZXIgQ2xlYXIxMS5obHNs
ICAgICAgICAgUFNfQ2xlYXJGbG9hdF9GTDkgICAgICAgIHBzXzRfMF9sZXZlbF85XzMgIGNvbXBp
bGVkXGNsZWFyZmxvYXQxMV9mbDlwcy5oICAgICAgICAlZGVidWclDQogY2FsbDpCdWlsZFNoYWRl
ciBDbGVhcjExLmhsc2wgICAgICAgICBQU19DbGVhckZsb2F0ICAgICAgICAgICAgcHNfNF8wICAg
ICAgICAgICAgY29tcGlsZWRcY2xlYXJmbG9hdDExcHMuaCAgICAgICAgICAgICVkZWJ1ZyUNCkBA
IC0zNSw1OCArNDAsNjIgQEAKIA0KIA0KIDo6IFNoYWRlcnMgZm9yIE9wZW5HTCBFUyAzLjArIG9u
bHkNCi06OiAgICAgICAgICAgICAgfCBJbnB1dCBmaWxlICAgICAgICAgIHwgRW50cnkgcG9pbnQg
ICAgICAgICAgIHwgVHlwZSAgICAgICAgICAgIHwgT3V0cHV0IGZpbGUgICAgICAgICAgICAgICAg
ICAgICAgICB8IERlYnVnIHwNCi1jYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoMkQxMS5obHNs
IFBTX1Bhc3N0aHJvdWdoRGVwdGgyRCAgICBwc180XzAgICAgICAgICAgICBjb21waWxlZFxwYXNz
dGhyb3VnaGRlcHRoMmQxMXBzLmggICAgJWRlYnVnJQ0KLWNhbGw6QnVpbGRTaGFkZXIgUGFzc3Ro
cm91Z2gyRDExLmhsc2wgUFNfUGFzc3Rocm91Z2hSR0JBMkRVSSAgIHBzXzRfMCAgICAgICAgICAg
IGNvbXBpbGVkXHBhc3N0aHJvdWdocmdiYTJkdWkxMXBzLmggICAlZGVidWclDQotY2FsbDpCdWls
ZFNoYWRlciBQYXNzdGhyb3VnaDJEMTEuaGxzbCBQU19QYXNzdGhyb3VnaFJHQkEyREkgICAgcHNf
NF8wICAgICAgICAgICAgY29tcGlsZWRccGFzc3Rocm91Z2hyZ2JhMmRpMTFwcy5oICAgICVkZWJ1
ZyUNCi1jYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoMkQxMS5obHNsIFBTX1Bhc3N0aHJvdWdo
UkdCMkRVSSAgICBwc180XzAgICAgICAgICAgICBjb21waWxlZFxwYXNzdGhyb3VnaHJnYjJkdWkx
MXBzLmggICAgJWRlYnVnJQ0KLWNhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gyRDExLmhsc2wg
UFNfUGFzc3Rocm91Z2hSR0IyREkgICAgIHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXHBhc3N0
aHJvdWdocmdiMmRpMTFwcy5oICAgICAlZGVidWclDQotY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhy
b3VnaDJEMTEuaGxzbCBQU19QYXNzdGhyb3VnaFJHMkRVSSAgICAgcHNfNF8wICAgICAgICAgICAg
Y29tcGlsZWRccGFzc3Rocm91Z2hyZzJkdWkxMXBzLmggICAgICVkZWJ1ZyUNCi1jYWxsOkJ1aWxk
U2hhZGVyIFBhc3N0aHJvdWdoMkQxMS5obHNsIFBTX1Bhc3N0aHJvdWdoUkcyREkgICAgICBwc180
XzAgICAgICAgICAgICBjb21waWxlZFxwYXNzdGhyb3VnaHJnMmRpMTFwcy5oICAgICAgJWRlYnVn
JQ0KLWNhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gyRDExLmhsc2wgUFNfUGFzc3Rocm91Z2hS
MkRVSSAgICAgIHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXHBhc3N0aHJvdWdocjJkdWkxMXBz
LmggICAgICAlZGVidWclDQotY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDJEMTEuaGxzbCBQ
U19QYXNzdGhyb3VnaFIyREkgICAgICAgcHNfNF8wICAgICAgICAgICAgY29tcGlsZWRccGFzc3Ro
cm91Z2hyMmRpMTFwcy5oICAgICAgICVkZWJ1ZyUNCis6OiAgICAgICAgICAgICAgfCBJbnB1dCBm
aWxlICAgICAgICAgICAgICAgfCBFbnRyeSBwb2ludCAgICAgICAgICAgIHwgVHlwZSAgIHwgT3V0
cHV0IGZpbGUgICAgICAgICAgICAgICAgICAgICAgICB8IERlYnVnIHwNCitjYWxsOkJ1aWxkU2hh
ZGVyIFBhc3N0aHJvdWdoMkQxMS5obHNsICAgICAgIFBTX1Bhc3N0aHJvdWdoRGVwdGgyRCAgICBw
c180XzAgICBjb21waWxlZFxwYXNzdGhyb3VnaGRlcHRoMmQxMXBzLmggICAgJWRlYnVnJQ0KK2Nh
bGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gyRDExLmhsc2wgICAgICAgUFNfUGFzc3Rocm91Z2hS
R0JBMkRVSSAgIHBzXzRfMCAgIGNvbXBpbGVkXHBhc3N0aHJvdWdocmdiYTJkdWkxMXBzLmggICAl
ZGVidWclDQorY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDJEMTEuaGxzbCAgICAgICBQU19Q
YXNzdGhyb3VnaFJHQkEyREkgICAgcHNfNF8wICAgY29tcGlsZWRccGFzc3Rocm91Z2hyZ2JhMmRp
MTFwcy5oICAgICVkZWJ1ZyUNCitjYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoMkQxMS5obHNs
ICAgICAgIFBTX1Bhc3N0aHJvdWdoUkdCMkRVSSAgICBwc180XzAgICBjb21waWxlZFxwYXNzdGhy
b3VnaHJnYjJkdWkxMXBzLmggICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91
Z2gyRDExLmhsc2wgICAgICAgUFNfUGFzc3Rocm91Z2hSR0IyREkgICAgIHBzXzRfMCAgIGNvbXBp
bGVkXHBhc3N0aHJvdWdocmdiMmRpMTFwcy5oICAgICAlZGVidWclDQorY2FsbDpCdWlsZFNoYWRl
ciBQYXNzdGhyb3VnaDJEMTEuaGxzbCAgICAgICBQU19QYXNzdGhyb3VnaFJHMkRVSSAgICAgcHNf
NF8wICAgY29tcGlsZWRccGFzc3Rocm91Z2hyZzJkdWkxMXBzLmggICAgICVkZWJ1ZyUNCitjYWxs
OkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoMkQxMS5obHNsICAgICAgIFBTX1Bhc3N0aHJvdWdoUkcy
REkgICAgICBwc180XzAgICBjb21waWxlZFxwYXNzdGhyb3VnaHJnMmRpMTFwcy5oICAgICAgJWRl
YnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gyRDExLmhsc2wgICAgICAgUFNfUGFz
c3Rocm91Z2hSMkRVSSAgICAgIHBzXzRfMCAgIGNvbXBpbGVkXHBhc3N0aHJvdWdocjJkdWkxMXBz
LmggICAgICAlZGVidWclDQorY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDJEMTEuaGxzbCAg
ICAgICBQU19QYXNzdGhyb3VnaFIyREkgICAgICAgcHNfNF8wICAgY29tcGlsZWRccGFzc3Rocm91
Z2hyMmRpMTFwcy5oICAgICAgICVkZWJ1ZyUNCiANCitjYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJv
dWdoM0QxMS5obHNsICAgICAgIFZTX1Bhc3N0aHJvdWdoM0QgICAgICAgICB2c180XzAgICBjb21w
aWxlZFxwYXNzdGhyb3VnaDNkMTF2cy5oICAgICAgICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFk
ZXIgUGFzc3Rocm91Z2gzRDExLmhsc2wgICAgICAgR1NfUGFzc3Rocm91Z2gzRCAgICAgICAgIGdz
XzRfMCAgIGNvbXBpbGVkXHBhc3N0aHJvdWdoM2QxMWdzLmggICAgICAgICAlZGVidWclDQorY2Fs
bDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDNEMTEuaGxzbCAgICAgICBQU19QYXNzdGhyb3VnaFJH
QkEzRCAgICAgcHNfNF8wICAgY29tcGlsZWRccGFzc3Rocm91Z2hyZ2JhM2QxMXBzLmggICAgICVk
ZWJ1ZyUNCitjYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoM0QxMS5obHNsICAgICAgIFBTX1Bh
c3N0aHJvdWdoUkdCQTNEVUkgICBwc180XzAgICBjb21waWxlZFxwYXNzdGhyb3VnaHJnYmEzZHVp
MTFwcy5oICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gzRDExLmhsc2wg
ICAgICAgUFNfUGFzc3Rocm91Z2hSR0JBM0RJICAgIHBzXzRfMCAgIGNvbXBpbGVkXHBhc3N0aHJv
dWdocmdiYTNkaTExcHMuaCAgICAlZGVidWclDQorY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3Vn
aDNEMTEuaGxzbCAgICAgICBQU19QYXNzdGhyb3VnaFJHQjNEICAgICAgcHNfNF8wICAgY29tcGls
ZWRccGFzc3Rocm91Z2hyZ2IzZDExcHMuaCAgICAgICVkZWJ1ZyUNCitjYWxsOkJ1aWxkU2hhZGVy
IFBhc3N0aHJvdWdoM0QxMS5obHNsICAgICAgIFBTX1Bhc3N0aHJvdWdoUkdCM0RVSSAgICBwc180
XzAgICBjb21waWxlZFxwYXNzdGhyb3VnaHJnYjNkdWkxMXBzLmggICAgJWRlYnVnJQ0KK2NhbGw6
QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gzRDExLmhsc2wgICAgICAgUFNfUGFzc3Rocm91Z2hSR0Iz
REkgICAgIHBzXzRfMCAgIGNvbXBpbGVkXHBhc3N0aHJvdWdocmdiM2RpMTFwcy5oICAgICAlZGVi
dWclDQorY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDNEMTEuaGxzbCAgICAgICBQU19QYXNz
dGhyb3VnaFJHM0QgICAgICAgcHNfNF8wICAgY29tcGlsZWRccGFzc3Rocm91Z2hyZzNkMTFwcy5o
ICAgICAgICVkZWJ1ZyUNCitjYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoM0QxMS5obHNsICAg
ICAgIFBTX1Bhc3N0aHJvdWdoUkczRFVJICAgICBwc180XzAgICBjb21waWxlZFxwYXNzdGhyb3Vn
aHJnM2R1aTExcHMuaCAgICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gz
RDExLmhsc2wgICAgICAgUFNfUGFzc3Rocm91Z2hSRzNESSAgICAgIHBzXzRfMCAgIGNvbXBpbGVk
XHBhc3N0aHJvdWdocmczZGkxMXBzLmggICAgICAlZGVidWclDQorY2FsbDpCdWlsZFNoYWRlciBQ
YXNzdGhyb3VnaDNEMTEuaGxzbCAgICAgICBQU19QYXNzdGhyb3VnaFIzRCAgICAgICAgcHNfNF8w
ICAgY29tcGlsZWRccGFzc3Rocm91Z2hyM2QxMXBzLmggICAgICAgICVkZWJ1ZyUNCitjYWxsOkJ1
aWxkU2hhZGVyIFBhc3N0aHJvdWdoM0QxMS5obHNsICAgICAgIFBTX1Bhc3N0aHJvdWdoUjNEVUkg
ICAgICBwc180XzAgICBjb21waWxlZFxwYXNzdGhyb3VnaHIzZHVpMTFwcy5oICAgICAgJWRlYnVn
JQ0KK2NhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gzRDExLmhsc2wgICAgICAgUFNfUGFzc3Ro
cm91Z2hSM0RJICAgICAgIHBzXzRfMCAgIGNvbXBpbGVkXHBhc3N0aHJvdWdocjNkaTExcHMuaCAg
ICAgICAlZGVidWclDQorY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDNEMTEuaGxzbCAgICAg
ICBQU19QYXNzdGhyb3VnaEx1bTNEICAgICAgcHNfNF8wICAgY29tcGlsZWRccGFzc3Rocm91Z2hs
dW0zZDExcHMuaCAgICAgICVkZWJ1ZyUNCitjYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoM0Qx
MS5obHNsICAgICAgIFBTX1Bhc3N0aHJvdWdoTHVtQWxwaGEzRCBwc180XzAgICBjb21waWxlZFxw
YXNzdGhyb3VnaGx1bWFscGhhM2QxMXBzLmggJWRlYnVnJQ0KIA0KLWNhbGw6QnVpbGRTaGFkZXIg
UGFzc3Rocm91Z2gzRDExLmhsc2wgVlNfUGFzc3Rocm91Z2gzRCAgICAgICAgIHZzXzRfMCAgICAg
ICAgICAgIGNvbXBpbGVkXHBhc3N0aHJvdWdoM2QxMXZzLmggICAgICAgICAlZGVidWclDQotY2Fs
bDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDNEMTEuaGxzbCBHU19QYXNzdGhyb3VnaDNEICAgICAg
ICAgZ3NfNF8wICAgICAgICAgICAgY29tcGlsZWRccGFzc3Rocm91Z2gzZDExZ3MuaCAgICAgICAg
ICVkZWJ1ZyUNCi1jYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoM0QxMS5obHNsIFBTX1Bhc3N0
aHJvdWdoUkdCQTNEICAgICBwc180XzAgICAgICAgICAgICBjb21waWxlZFxwYXNzdGhyb3VnaHJn
YmEzZDExcHMuaCAgICAgJWRlYnVnJQ0KLWNhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gzRDEx
Lmhsc2wgUFNfUGFzc3Rocm91Z2hSR0JBM0RVSSAgIHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVk
XHBhc3N0aHJvdWdocmdiYTNkdWkxMXBzLmggICAlZGVidWclDQotY2FsbDpCdWlsZFNoYWRlciBQ
YXNzdGhyb3VnaDNEMTEuaGxzbCBQU19QYXNzdGhyb3VnaFJHQkEzREkgICAgcHNfNF8wICAgICAg
ICAgICAgY29tcGlsZWRccGFzc3Rocm91Z2hyZ2JhM2RpMTFwcy5oICAgICVkZWJ1ZyUNCi1jYWxs
OkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoM0QxMS5obHNsIFBTX1Bhc3N0aHJvdWdoUkdCM0QgICAg
ICBwc180XzAgICAgICAgICAgICBjb21waWxlZFxwYXNzdGhyb3VnaHJnYjNkMTFwcy5oICAgICAg
JWRlYnVnJQ0KLWNhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gzRDExLmhsc2wgUFNfUGFzc3Ro
cm91Z2hSR0IzRFVJICAgIHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXHBhc3N0aHJvdWdocmdi
M2R1aTExcHMuaCAgICAlZGVidWclDQotY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDNEMTEu
aGxzbCBQU19QYXNzdGhyb3VnaFJHQjNESSAgICAgcHNfNF8wICAgICAgICAgICAgY29tcGlsZWRc
cGFzc3Rocm91Z2hyZ2IzZGkxMXBzLmggICAgICVkZWJ1ZyUNCi1jYWxsOkJ1aWxkU2hhZGVyIFBh
c3N0aHJvdWdoM0QxMS5obHNsIFBTX1Bhc3N0aHJvdWdoUkczRCAgICAgICBwc180XzAgICAgICAg
ICAgICBjb21waWxlZFxwYXNzdGhyb3VnaHJnM2QxMXBzLmggICAgICAgJWRlYnVnJQ0KLWNhbGw6
QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gzRDExLmhsc2wgUFNfUGFzc3Rocm91Z2hSRzNEVUkgICAg
IHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXHBhc3N0aHJvdWdocmczZHVpMTFwcy5oICAgICAl
ZGVidWclDQotY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDNEMTEuaGxzbCBQU19QYXNzdGhy
b3VnaFJHM0RJICAgICAgcHNfNF8wICAgICAgICAgICAgY29tcGlsZWRccGFzc3Rocm91Z2hyZzNk
aTExcHMuaCAgICAgICVkZWJ1ZyUNCi1jYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoM0QxMS5o
bHNsIFBTX1Bhc3N0aHJvdWdoUjNEICAgICAgICBwc180XzAgICAgICAgICAgICBjb21waWxlZFxw
YXNzdGhyb3VnaHIzZDExcHMuaCAgICAgICAgJWRlYnVnJQ0KLWNhbGw6QnVpbGRTaGFkZXIgUGFz
c3Rocm91Z2gzRDExLmhsc2wgUFNfUGFzc3Rocm91Z2hSM0RVSSAgICAgIHBzXzRfMCAgICAgICAg
ICAgIGNvbXBpbGVkXHBhc3N0aHJvdWdocjNkdWkxMXBzLmggICAgICAlZGVidWclDQotY2FsbDpC
dWlsZFNoYWRlciBQYXNzdGhyb3VnaDNEMTEuaGxzbCBQU19QYXNzdGhyb3VnaFIzREkgICAgICAg
cHNfNF8wICAgICAgICAgICAgY29tcGlsZWRccGFzc3Rocm91Z2hyM2RpMTFwcy5oICAgICAgICVk
ZWJ1ZyUNCi1jYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoM0QxMS5obHNsIFBTX1Bhc3N0aHJv
dWdoTHVtM0QgICAgICBwc180XzAgICAgICAgICAgICBjb21waWxlZFxwYXNzdGhyb3VnaGx1bTNk
MTFwcy5oICAgICAgJWRlYnVnJQ0KLWNhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gzRDExLmhs
c2wgUFNfUGFzc3Rocm91Z2hMdW1BbHBoYTNEIHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXHBh
c3N0aHJvdWdobHVtYWxwaGEzZDExcHMuaCAlZGVidWclDQorY2FsbDpCdWlsZFNoYWRlciBTd2l6
emxlMTEuaGxzbCAgICAgICAgICAgICBQU19Td2l6emxlRjJEICAgICAgICAgICAgcHNfNF8wICAg
Y29tcGlsZWRcc3dpenpsZWYyZHBzLmggICAgICAgICAgICAgICVkZWJ1ZyUNCitjYWxsOkJ1aWxk
U2hhZGVyIFN3aXp6bGUxMS5obHNsICAgICAgICAgICAgIFBTX1N3aXp6bGVJMkQgICAgICAgICAg
ICBwc180XzAgICBjb21waWxlZFxzd2l6emxlaTJkcHMuaCAgICAgICAgICAgICAgJWRlYnVnJQ0K
K2NhbGw6QnVpbGRTaGFkZXIgU3dpenpsZTExLmhsc2wgICAgICAgICAgICAgUFNfU3dpenpsZVVJ
MkQgICAgICAgICAgIHBzXzRfMCAgIGNvbXBpbGVkXHN3aXp6bGV1aTJkcHMuaCAgICAgICAgICAg
ICAlZGVidWclDQogDQotY2FsbDpCdWlsZFNoYWRlciBTd2l6emxlMTEuaGxzbCAgICAgICBQU19T
d2l6emxlRjJEICAgICAgICAgICAgcHNfNF8wICAgICAgICAgICAgY29tcGlsZWRcc3dpenpsZWYy
ZHBzLmggICAgICAgICAgICAgICVkZWJ1ZyUNCi1jYWxsOkJ1aWxkU2hhZGVyIFN3aXp6bGUxMS5o
bHNsICAgICAgIFBTX1N3aXp6bGVJMkQgICAgICAgICAgICBwc180XzAgICAgICAgICAgICBjb21w
aWxlZFxzd2l6emxlaTJkcHMuaCAgICAgICAgICAgICAgJWRlYnVnJQ0KLWNhbGw6QnVpbGRTaGFk
ZXIgU3dpenpsZTExLmhsc2wgICAgICAgUFNfU3dpenpsZVVJMkQgICAgICAgICAgIHBzXzRfMCAg
ICAgICAgICAgIGNvbXBpbGVkXHN3aXp6bGV1aTJkcHMuaCAgICAgICAgICAgICAlZGVidWclDQor
Y2FsbDpCdWlsZFNoYWRlciBTd2l6emxlMTEuaGxzbCAgICAgICAgICAgICBQU19Td2l6emxlRjNE
ICAgICAgICAgICAgcHNfNF8wICAgY29tcGlsZWRcc3dpenpsZWYzZHBzLmggICAgICAgICAgICAg
ICVkZWJ1ZyUNCitjYWxsOkJ1aWxkU2hhZGVyIFN3aXp6bGUxMS5obHNsICAgICAgICAgICAgIFBT
X1N3aXp6bGVJM0QgICAgICAgICAgICBwc180XzAgICBjb21waWxlZFxzd2l6emxlaTNkcHMuaCAg
ICAgICAgICAgICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgU3dpenpsZTExLmhsc2wgICAg
ICAgICAgICAgUFNfU3dpenpsZVVJM0QgICAgICAgICAgIHBzXzRfMCAgIGNvbXBpbGVkXHN3aXp6
bGV1aTNkcHMuaCAgICAgICAgICAgICAlZGVidWclDQogDQotY2FsbDpCdWlsZFNoYWRlciBTd2l6
emxlMTEuaGxzbCAgICAgICBQU19Td2l6emxlRjNEICAgICAgICAgICAgcHNfNF8wICAgICAgICAg
ICAgY29tcGlsZWRcc3dpenpsZWYzZHBzLmggICAgICAgICAgICAgICVkZWJ1ZyUNCi1jYWxsOkJ1
aWxkU2hhZGVyIFN3aXp6bGUxMS5obHNsICAgICAgIFBTX1N3aXp6bGVJM0QgICAgICAgICAgICBw
c180XzAgICAgICAgICAgICBjb21waWxlZFxzd2l6emxlaTNkcHMuaCAgICAgICAgICAgICAgJWRl
YnVnJQ0KLWNhbGw6QnVpbGRTaGFkZXIgU3dpenpsZTExLmhsc2wgICAgICAgUFNfU3dpenpsZVVJ
M0QgICAgICAgICAgIHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXHN3aXp6bGV1aTNkcHMuaCAg
ICAgICAgICAgICAlZGVidWclDQorY2FsbDpCdWlsZFNoYWRlciBTd2l6emxlMTEuaGxzbCAgICAg
ICAgICAgICBQU19Td2l6emxlRjJEQXJyYXkgICAgICAgcHNfNF8wICAgY29tcGlsZWRcc3dpenps
ZWYyZGFycmF5cHMuaCAgICAgICAgICVkZWJ1ZyUNCitjYWxsOkJ1aWxkU2hhZGVyIFN3aXp6bGUx
MS5obHNsICAgICAgICAgICAgIFBTX1N3aXp6bGVJMkRBcnJheSAgICAgICBwc180XzAgICBjb21w
aWxlZFxzd2l6emxlaTJkYXJyYXlwcy5oICAgICAgICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFk
ZXIgU3dpenpsZTExLmhsc2wgICAgICAgICAgICAgUFNfU3dpenpsZVVJMkRBcnJheSAgICAgIHBz
XzRfMCAgIGNvbXBpbGVkXHN3aXp6bGV1aTJkYXJyYXlwcy5oICAgICAgICAlZGVidWclDQogDQot
Y2FsbDpCdWlsZFNoYWRlciBTd2l6emxlMTEuaGxzbCAgICAgICBQU19Td2l6emxlRjJEQXJyYXkg
ICAgICAgcHNfNF8wICAgICAgICAgICAgY29tcGlsZWRcc3dpenpsZWYyZGFycmF5cHMuaCAgICAg
ICAgICVkZWJ1ZyUNCi1jYWxsOkJ1aWxkU2hhZGVyIFN3aXp6bGUxMS5obHNsICAgICAgIFBTX1N3
aXp6bGVJMkRBcnJheSAgICAgICBwc180XzAgICAgICAgICAgICBjb21waWxlZFxzd2l6emxlaTJk
YXJyYXlwcy5oICAgICAgICAgJWRlYnVnJQ0KLWNhbGw6QnVpbGRTaGFkZXIgU3dpenpsZTExLmhs
c2wgICAgICAgUFNfU3dpenpsZVVJMkRBcnJheSAgICAgIHBzXzRfMCAgICAgICAgICAgIGNvbXBp
bGVkXHN3aXp6bGV1aTJkYXJyYXlwcy5oICAgICAgICAlZGVidWclDQorY2FsbDpCdWlsZFNoYWRl
ciBDbGVhcjExLmhsc2wgICAgICAgICAgICAgICBWU19DbGVhclVpbnQgICAgICAgICAgICAgdnNf
NF8wICAgY29tcGlsZWRcY2xlYXJ1aW50MTF2cy5oICAgICAgICAgICAgICVkZWJ1ZyUNCitjYWxs
OkJ1aWxkU2hhZGVyIENsZWFyMTEuaGxzbCAgICAgICAgICAgICAgIFBTX0NsZWFyVWludCAgICAg
ICAgICAgICBwc180XzAgICBjb21waWxlZFxjbGVhcnVpbnQxMXBzLmggICAgICAgICAgICAgJWRl
YnVnJQ0KIA0KLWNhbGw6QnVpbGRTaGFkZXIgQ2xlYXIxMS5obHNsICAgICAgICAgVlNfQ2xlYXJV
aW50ICAgICAgICAgICAgIHZzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXGNsZWFydWludDExdnMu
aCAgICAgICAgICAgICAlZGVidWclDQotY2FsbDpCdWlsZFNoYWRlciBDbGVhcjExLmhsc2wgICAg
ICAgICBQU19DbGVhclVpbnQgICAgICAgICAgICAgcHNfNF8wICAgICAgICAgICAgY29tcGlsZWRc
Y2xlYXJ1aW50MTFwcy5oICAgICAgICAgICAgICVkZWJ1ZyUNCitjYWxsOkJ1aWxkU2hhZGVyIENs
ZWFyMTEuaGxzbCAgICAgICAgICAgICAgIFZTX0NsZWFyU2ludCAgICAgICAgICAgICB2c180XzAg
ICBjb21waWxlZFxjbGVhcnNpbnQxMXZzLmggICAgICAgICAgICAgJWRlYnVnJQ0KK2NhbGw6QnVp
bGRTaGFkZXIgQ2xlYXIxMS5obHNsICAgICAgICAgICAgICAgUFNfQ2xlYXJTaW50ICAgICAgICAg
ICAgIHBzXzRfMCAgIGNvbXBpbGVkXGNsZWFyc2ludDExcHMuaCAgICAgICAgICAgICAlZGVidWcl
DQogDQotY2FsbDpCdWlsZFNoYWRlciBDbGVhcjExLmhsc2wgICAgICAgICBWU19DbGVhclNpbnQg
ICAgICAgICAgICAgdnNfNF8wICAgICAgICAgICAgY29tcGlsZWRcY2xlYXJzaW50MTF2cy5oICAg
ICAgICAgICAgICVkZWJ1ZyUNCi1jYWxsOkJ1aWxkU2hhZGVyIENsZWFyMTEuaGxzbCAgICAgICAg
IFBTX0NsZWFyU2ludCAgICAgICAgICAgICBwc180XzAgICAgICAgICAgICBjb21waWxlZFxjbGVh
cnNpbnQxMXBzLmggICAgICAgICAgICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgQnVmZmVy
VG9UZXh0dXJlMTEuaGxzbCAgICAgVlNfQnVmZmVyVG9UZXh0dXJlICAgICAgIHZzXzRfMCAgIGNv
bXBpbGVkL2J1ZmZlcnRvdGV4dHVyZTExX3ZzLmggICAgICAlZGVidWclDQorY2FsbDpCdWlsZFNo
YWRlciBCdWZmZXJUb1RleHR1cmUxMS5obHNsICAgICBHU19CdWZmZXJUb1RleHR1cmUgICAgICAg
Z3NfNF8wICAgY29tcGlsZWQvYnVmZmVydG90ZXh0dXJlMTFfZ3MuaCAgICAgICVkZWJ1ZyUNCitj
YWxsOkJ1aWxkU2hhZGVyIEJ1ZmZlclRvVGV4dHVyZTExLmhsc2wgICAgIFBTX0J1ZmZlclRvVGV4
dHVyZV80RiAgICBwc180XzAgICBjb21waWxlZC9idWZmZXJ0b3RleHR1cmUxMV9wc180Zi5oICAg
JWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgQnVmZmVyVG9UZXh0dXJlMTEuaGxzbCAgICAgUFNf
QnVmZmVyVG9UZXh0dXJlXzRJICAgIHBzXzRfMCAgIGNvbXBpbGVkL2J1ZmZlcnRvdGV4dHVyZTEx
X3BzXzRpLmggICAlZGVidWclDQorY2FsbDpCdWlsZFNoYWRlciBCdWZmZXJUb1RleHR1cmUxMS5o
bHNsICAgICBQU19CdWZmZXJUb1RleHR1cmVfNFVJICAgcHNfNF8wICAgY29tcGlsZWQvYnVmZmVy
dG90ZXh0dXJlMTFfcHNfNHVpLmggICVkZWJ1ZyUNCiANCi1jYWxsOkJ1aWxkU2hhZGVyIEJ1ZmZl
clRvVGV4dHVyZTExLmhsc2wgIFZTX0J1ZmZlclRvVGV4dHVyZSAgICAgICAgdnNfNF8wICAgICAg
ICBjb21waWxlZC9idWZmZXJ0b3RleHR1cmUxMV92cy5oICAgICAgJWRlYnVnJQ0KLWNhbGw6QnVp
bGRTaGFkZXIgQnVmZmVyVG9UZXh0dXJlMTEuaGxzbCAgR1NfQnVmZmVyVG9UZXh0dXJlICAgICAg
ICBnc180XzAgICAgICAgIGNvbXBpbGVkL2J1ZmZlcnRvdGV4dHVyZTExX2dzLmggICAgICAlZGVi
dWclDQotY2FsbDpCdWlsZFNoYWRlciBCdWZmZXJUb1RleHR1cmUxMS5obHNsICBQU19CdWZmZXJU
b1RleHR1cmVfNEYgICAgIHBzXzRfMCAgICAgICAgY29tcGlsZWQvYnVmZmVydG90ZXh0dXJlMTFf
cHNfNGYuaCAgICVkZWJ1ZyUNCi1jYWxsOkJ1aWxkU2hhZGVyIEJ1ZmZlclRvVGV4dHVyZTExLmhs
c2wgIFBTX0J1ZmZlclRvVGV4dHVyZV80SSAgICAgcHNfNF8wICAgICAgICBjb21waWxlZC9idWZm
ZXJ0b3RleHR1cmUxMV9wc180aS5oICAgJWRlYnVnJQ0KLWNhbGw6QnVpbGRTaGFkZXIgQnVmZmVy
VG9UZXh0dXJlMTEuaGxzbCAgUFNfQnVmZmVyVG9UZXh0dXJlXzRVSSAgICBwc180XzAgICAgICAg
IGNvbXBpbGVkL2J1ZmZlcnRvdGV4dHVyZTExX3BzXzR1aS5oICAlZGVidWclDQorY2FsbDpCdWls
ZFNoYWRlciBSZXNvbHZlRGVwdGhTdGVuY2lsLmhsc2wgICBWU19SZXNvbHZlRGVwdGhTdGVuY2ls
ICAgdnNfNF8xICAgY29tcGlsZWQvcmVzb2x2ZWRlcHRoc3RlbmNpbDExX3ZzLmggICVkZWJ1ZyUN
CitjYWxsOkJ1aWxkU2hhZGVyIFJlc29sdmVEZXB0aFN0ZW5jaWwuaGxzbCAgIFBTX1Jlc29sdmVE
ZXB0aCAgICAgICAgICBwc180XzEgICBjb21waWxlZC9yZXNvbHZlZGVwdGgxMV9wcy5oICAgICAg
ICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgUmVzb2x2ZURlcHRoU3RlbmNpbC5obHNsICAg
UFNfUmVzb2x2ZURlcHRoU3RlbmNpbCAgIHBzXzRfMSAgIGNvbXBpbGVkL3Jlc29sdmVkZXB0aHN0
ZW5jaWwxMV9wcy5oICAlZGVidWclDQorY2FsbDpCdWlsZFNoYWRlciBSZXNvbHZlRGVwdGhTdGVu
Y2lsLmhsc2wgICBQU19SZXNvbHZlU3RlbmNpbCAgICAgICAgcHNfNF8xICAgY29tcGlsZWQvcmVz
b2x2ZXN0ZW5jaWwxMV9wcy5oICAgICAgICVkZWJ1ZyUNCiANCiBlY2hvLg0KIA0KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4
dHVyZV9mb3JtYXRfZGF0YS5qc29uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfZGF0YS5q
c29uCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X2RhdGEuanNvbgkod29ya2lu
ZyBjb3B5KQpAQCAtMSw4ICsxLDcgQEAKIHsKLSAgIkFOR0xFX0ZPUk1BVF9OT05FIjogewotCisg
ICJOT05FIjogewogICB9LAotICAiQU5HTEVfRk9STUFUX0E4X1VOT1JNIjogeworICAiQThfVU5P
Uk0iOiB7CiAgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9BOF9VTk9STSIsCiAgICAgInNy
dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9BOF9VTk9STSIsCiAgICAgInJ0dkZvcm1hdCI6ICJEWEdJ
X0ZPUk1BVF9BOF9VTk9STSIsCkBAIC05LDkgKzgsMTAgQEAKICAgICAiY2hhbm5lbHMiOiAiYSIs
CiAgICAgImNvbXBvbmVudFR5cGUiOiAidW5vcm0iLAogICAgICJiaXRzIjogeyAiYWxwaGEiOiA4
IH0sCi0gICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfQUxQSEE4X0VYVCIKKyAgICAic3VwcG9y
dFRlc3QiOiAiT25seUZMMTBQbHVzKGRldmljZUNhcHMpIiwKKyAgICAiZmFsbGJhY2tGb3JtYXQi
OiAiUjhHOEI4QThfVU5PUk0iCiAgIH0sCi0gICJBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk0i
OiB7CisgICJSOEc4QjhBOF9VTk9STSI6IHsKICAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFU
X1I4RzhCOEE4X1VOT1JNIiwKICAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhCOEE4
X1VOT1JNIiwKICAgICAicnR2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNIiwK
QEAgLTIwLDE1ICsyMCwxNiBAQAogICAgICJiaXRzIjogeyAicmVkIjogOCwgImdyZWVuIjogOCwg
ImJsdWUiOiA4LCAiYWxwaGEiOiA4IH0sCiAgICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfUkdC
QTgiCiAgIH0sCi0gICJBTkdMRV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNIjogeworICAiUjE2
RzE2QjE2QTE2X1VOT1JNIjogewogICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2RzE2
QjE2QTE2X1VOT1JNIiwKICAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcxNkIxNkEx
Nl9VTk9STSIsCiAgICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5P
Uk0iLAogICAgICJjaGFubmVscyI6ICJyZ2JhIiwKICAgICAiY29tcG9uZW50VHlwZSI6ICJ1bm9y
bSIsCi0gICAgImJpdHMiOiB7ICJyZWQiOiAxNiwgImdyZWVuIjogMTYsICJibHVlIjogMTYsICJh
bHBoYSI6IDE2IH0KKyAgICAiYml0cyI6IHsgInJlZCI6IDE2LCAiZ3JlZW4iOiAxNiwgImJsdWUi
OiAxNiwgImFscGhhIjogMTYgfSwKKyAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9SR0JBMTZf
RVhUIgogICB9LAotICAiQU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCI6IHsKKyAgIlIx
NkcxNkIxNkExNl9GTE9BVCI6IHsKICAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcx
NkIxNkExNl9GTE9BVCIsCiAgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZHMTZCMTZB
MTZfRkxPQVQiLAogICAgICJydHZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZM
T0FUIiwKQEAgLTM3LDcgKzM4LDcgQEAKICAgICAiYml0cyI6IHsgInJlZCI6IDE2LCAiZ3JlZW4i
OiAxNiwgImJsdWUiOiAxNiwgImFscGhhIjogMTYgfSwKICAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6
ICJHTF9SR0JBMTZGIgogICB9LAotICAiQU5HTEVfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCI6
IHsKKyAgIlIzMkczMkIzMkEzMl9GTE9BVCI6IHsKICAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9S
TUFUX1IzMkczMkIzMkEzMl9GTE9BVCIsCiAgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9S
MzJHMzJCMzJBMzJfRkxPQVQiLAogICAgICJydHZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjMyRzMy
QjMyQTMyX0ZMT0FUIiwKQEAgLTQ2LDcgKzQ3LDcgQEAKICAgICAiYml0cyI6IHsgInJlZCI6IDMy
LCAiZ3JlZW4iOiAzMiwgImJsdWUiOiAzMiwgImFscGhhIjogMzIgfSwKICAgICAiZ2xJbnRlcm5h
bEZvcm1hdCI6ICJHTF9SR0JBMzJGIgogICB9LAotICAiQU5HTEVfRk9STUFUX0I4RzhSOEE4X1VO
T1JNIjogeworICAiQjhHOFI4QThfVU5PUk0iOiB7CiAgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZP
Uk1BVF9COEc4UjhBOF9VTk9STSIsCiAgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9COEc4
UjhBOF9VTk9STSIsCiAgICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9S
TSIsCkBAIC01NSw3OCArNTYsNTIgQEAKICAgICAiYml0cyI6IHsgInJlZCI6IDgsICJncmVlbiI6
IDgsICJibHVlIjogOCwgImFscGhhIjogOCB9LAogICAgICJnbEludGVybmFsRm9ybWF0IjogIkdM
X0JHUkE4X0VYVCIKICAgfSwKLSAgIkFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9OT05SRU5E
RVJBQkxFIjogewotICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0i
LAotICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0iLAorICAiQkMx
X1JHQkFfVU5PUk1fQkxPQ0siOiB7CisgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9CQzFf
VU5PUk0iLAorICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfQkMxX1VOT1JNIiwKICAgICAi
Y2hhbm5lbHMiOiAicmdiYSIsCiAgICAgImNvbXBvbmVudFR5cGUiOiAidW5vcm0iLAotICAgICJi
aXRzIjogeyAicmVkIjogOCwgImdyZWVuIjogOCwgImJsdWUiOiA4LCAiYWxwaGEiOiA4IH0sCi0g
ICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfUkdCQTgiCisgICAgInN3aXp6bGVGb3JtYXQiOiAi
R0xfUkdCQTgiLAorICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX0NPTVBSRVNTRURfUkdCQV9T
M1RDX0RYVDFfRVhUIgogICB9LAotICAiQU5HTEVfRk9STUFUX0JDMV9VTk9STSI6IHsKKyAgIkJD
MV9SR0JfVU5PUk1fQkxPQ0siOiB7CiAgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9CQzFf
VU5PUk0iLAogICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfQkMxX1VOT1JNIiwKICAgICAi
Y2hhbm5lbHMiOiAicmdiYSIsCiAgICAgImNvbXBvbmVudFR5cGUiOiAidW5vcm0iLAotICAgICJz
d2l6emxlRm9ybWF0IjogIkFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSIsCisgICAgInN3aXp6
bGVGb3JtYXQiOiAiR0xfUkdCQTgiLAogICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX0NPTVBS
RVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUIgogICB9LAotICAiQU5HTEVfRk9STUFUX0JDMl9VTk9S
TSI6IHsKKyAgIkJDMl9SR0JBX1VOT1JNX0JMT0NLIjogewogICAgICJ0ZXhGb3JtYXQiOiAiRFhH
SV9GT1JNQVRfQkMyX1VOT1JNIiwKICAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX0JDMl9V
Tk9STSIsCiAgICAgImNoYW5uZWxzIjogInJnYmEiLAogICAgICJjb21wb25lbnRUeXBlIjogInVu
b3JtIiwKLSAgICAic3dpenpsZUZvcm1hdCI6ICJBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk0i
LAorICAgICJzd2l6emxlRm9ybWF0IjogIkdMX1JHQkE4IiwKICAgICAiZ2xJbnRlcm5hbEZvcm1h
dCI6ICJHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFIgogICB9LAotICAiQU5HTEVf
Rk9STUFUX0JDM19VTk9STSI6IHsKKyAgIkJDM19SR0JBX1VOT1JNX0JMT0NLIjogewogICAgICJ0
ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfQkMzX1VOT1JNIiwKICAgICAic3J2Rm9ybWF0IjogIkRY
R0lfRk9STUFUX0JDM19VTk9STSIsCiAgICAgImNoYW5uZWxzIjogInJnYmEiLAogICAgICJjb21w
b25lbnRUeXBlIjogInVub3JtIiwKLSAgICAic3dpenpsZUZvcm1hdCI6ICJBTkdMRV9GT1JNQVRf
UjhHOEI4QThfVU5PUk0iLAorICAgICJzd2l6emxlRm9ybWF0IjogIkdMX1JHQkE4IiwKICAgICAi
Z2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFIgog
ICB9LAotICAiQU5HTEVfRk9STUFUX1I4X1NOT1JNX05PTlJFTkRFUkFCTEUiOiB7Ci0gICAgInRl
eEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOF9TTk9STSIsCi0gICAgInNydkZvcm1hdCI6ICJEWEdJ
X0ZPUk1BVF9SOF9TTk9STSIsCi0gICAgImNoYW5uZWxzIjogInIiLAotICAgICJjb21wb25lbnRU
eXBlIjogInNub3JtIiwKLSAgICAiYml0cyI6IHsgInJlZCI6IDggfSwKLSAgICAiZ2xJbnRlcm5h
bEZvcm1hdCI6ICJHTF9SOF9TTk9STSIKLSAgfSwKLSAgIkFOR0xFX0ZPUk1BVF9SOEc4X1NOT1JN
X05PTlJFTkRFUkFCTEUiOiB7Ci0gICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4X1NO
T1JNIiwKLSAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhfU05PUk0iLAotICAgICJj
aGFubmVscyI6ICJyZyIsCi0gICAgImNvbXBvbmVudFR5cGUiOiAic25vcm0iLAotICAgICJiaXRz
IjogeyAicmVkIjogOCwgImdyZWVuIjogOCB9LAotICAgICJnbEludGVybmFsRm9ybWF0IjogIkdM
X1JHOF9TTk9STSIKLSAgfSwKLSAgIkFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCX05P
TlJFTkRFUkFCTEUiOiB7Ci0gICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9V
Tk9STV9TUkdCIiwKLSAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JN
X1NSR0IiLAotICAgICJjaGFubmVscyI6ICJyZ2JhIiwKLSAgICAiY29tcG9uZW50VHlwZSI6ICJ1
bm9ybSIsCi0gICAgImJpdHMiOiB7ICJyZWQiOiA4LCAiZ3JlZW4iOiA4LCAiYmx1ZSI6IDgsICJh
bHBoYSI6IDggfSwKLSAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9TUkdCOF9BTFBIQTgiCi0g
IH0sCi0gICJBTkdMRV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlRfRkwxMCI6IHsKLSAgICAidGV4
Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IyNEc4X1RZUEVMRVNTIiwKLSAgICAic3J2Rm9ybWF0Ijog
IkRYR0lfRk9STUFUX1IyNF9VTk9STV9YOF9UWVBFTEVTUyIsCisgICJEMjRfVU5PUk1fUzhfVUlO
VCI6IHsKKyAgICAiRkwxMFBsdXMiOiB7CisgICAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFU
X1IyNEc4X1RZUEVMRVNTIiwKKyAgICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjI0X1VO
T1JNX1g4X1RZUEVMRVNTIgorICAgIH0sCisgICAgIkZMOV8zIjogeworICAgICAgInRleEZvcm1h
dCI6ICJEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCIKKyAgICB9LAogICAgICJkc3ZGb3Jt
YXQiOiAiRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQiLAogICAgICJjaGFubmVscyI6ICJk
cyIsCiAgICAgImJpdHMiOiB7ICJkZXB0aCI6IDI0LCAic3RlbmNpbCI6IDggfSwKICAgICAiZ2xJ
bnRlcm5hbEZvcm1hdCI6ICJHTF9ERVBUSDI0X1NURU5DSUw4X09FUyIKICAgfSwKLSAgIkFOR0xF
X0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVF9GTDlfMyI6IHsKLSAgICAidGV4Rm9ybWF0IjogIkRY
R0lfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5UIiwKLSAgICAiZHN2Rm9ybWF0IjogIkRYR0lfRk9S
TUFUX0QyNF9VTk9STV9TOF9VSU5UIiwKLSAgICAiY2hhbm5lbHMiOiAiZHMiLAotICAgICJiaXRz
IjogeyAiZGVwdGgiOiAyNCwgInN0ZW5jaWwiOiA4IH0sCi0gICAgImdsSW50ZXJuYWxGb3JtYXQi
OiAiR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVMiCi0gIH0sCi0gICJBTkdMRV9GT1JNQVRfRDMyX0ZM
T0FUX1M4WDI0X1VJTlRfRkwxMCI6IHsKKyAgIkQzMl9GTE9BVF9TOFgyNF9VSU5UIjogewogICAg
ICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjMyRzhYMjRfVFlQRUxFU1MiLAogICAgICJzcnZG
b3JtYXQiOiAiRFhHSV9GT1JNQVRfUjMyX0ZMT0FUX1g4WDI0X1RZUEVMRVNTIiwKICAgICAiZHN2
Rm9ybWF0IjogIkRYR0lfRk9STUFUX0QzMl9GTE9BVF9TOFgyNF9VSU5UIiwKQEAgLTEzNCw5ICsx
MDksMTQgQEAKICAgICAiYml0cyI6IHsgImRlcHRoIjogMzIsICJzdGVuY2lsIjogOCB9LAogICAg
ICJnbEludGVybmFsRm9ybWF0IjogIkdMX0RFUFRIMzJGX1NURU5DSUw4IgogICB9LAotICAiQU5H
TEVfRk9STUFUX0QxNl9VTk9STV9GTDEwIjogewotICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JN
QVRfUjE2X1RZUEVMRVNTIiwKLSAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNl9VTk9S
TSIsCisgICJEMTZfVU5PUk0iOiB7CisgICAgIkZMMTBQbHVzIjogeworICAgICAgInRleEZvcm1h
dCI6ICJEWEdJX0ZPUk1BVF9SMTZfVFlQRUxFU1MiLAorICAgICAgInNydkZvcm1hdCI6ICJEWEdJ
X0ZPUk1BVF9SMTZfVU5PUk0iCisgICAgfSwKKyAgICAiRkw5XzMiOiB7CisgICAgICAidGV4Rm9y
bWF0IjogIkRYR0lfRk9STUFUX0QxNl9VTk9STSIKKyAgICB9LAogICAgICJkc3ZGb3JtYXQiOiAi
RFhHSV9GT1JNQVRfRDE2X1VOT1JNIiwKICAgICAiY2hhbm5lbHMiOiAiZCIsCiAgICAgImNvbXBv
bmVudFR5cGUiOiAidW5vcm0iLApAQCAtMTQzLDE1ICsxMjMsNyBAQAogICAgICJiaXRzIjogeyAi
ZGVwdGgiOiAxNiB9LAogICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX0RFUFRIX0NPTVBPTkVO
VDE2IgogICB9LAotICAiQU5HTEVfRk9STUFUX0QxNl9VTk9STV9GTDlfMyI6IHsKLSAgICAidGV4
Rm9ybWF0IjogIkRYR0lfRk9STUFUX0QxNl9VTk9STSIsCi0gICAgImRzdkZvcm1hdCI6ICJEWEdJ
X0ZPUk1BVF9EMTZfVU5PUk0iLAotICAgICJjaGFubmVscyI6ICJkIiwKLSAgICAiY29tcG9uZW50
VHlwZSI6ICJ1bm9ybSIsCi0gICAgImJpdHMiOiB7ICJkZXB0aCI6IDE2IH0sCi0gICAgImdsSW50
ZXJuYWxGb3JtYXQiOiAiR0xfREVQVEhfQ09NUE9ORU5UMTYiCi0gIH0sCi0gICJBTkdMRV9GT1JN
QVRfRDMyX0ZMT0FUIjogeworICAiRDMyX0ZMT0FUIjogewogICAgICJ0ZXhGb3JtYXQiOiAiRFhH
SV9GT1JNQVRfUjMyX1RZUEVMRVNTIiwKICAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1Iz
Ml9GTE9BVCIsCiAgICAgImRzdkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9EMzJfRkxPQVQiLApAQCAt
MTYwLDcgKzEzMiw3IEBACiAgICAgImJpdHMiOiB7ICJkZXB0aCI6IDMyIH0sCiAgICAgImdsSW50
ZXJuYWxGb3JtYXQiOiAiR0xfREVQVEhfQ09NUE9ORU5UMzJGIgogICB9LAotICAiQU5HTEVfRk9S
TUFUX1IxMUcxMUIxMF9GTE9BVCI6IHsKKyAgIlIxMUcxMUIxMF9GTE9BVCI6IHsKICAgICAidGV4
Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxMUcxMUIxMF9GTE9BVCIsCiAgICAgInNydkZvcm1hdCI6
ICJEWEdJX0ZPUk1BVF9SMTFHMTFCMTBfRkxPQVQiLAogICAgICJydHZGb3JtYXQiOiAiRFhHSV9G
T1JNQVRfUjExRzExQjEwX0ZMT0FUIiwKQEAgLTE2OSw3ICsxNDEsNyBAQAogICAgICJiaXRzIjog
eyAicmVkIjogMTEsICJncmVlbiI6IDExLCAiYmx1ZSI6IDEwIH0sCiAgICAgImdsSW50ZXJuYWxG
b3JtYXQiOiAiR0xfUjExRl9HMTFGX0IxMEYiCiAgIH0sCi0gICJBTkdMRV9GT1JNQVRfUjE2X0ZM
T0FUIjogeworICAiUjE2X0ZMT0FUIjogewogICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRf
UjE2X0ZMT0FUIiwKICAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNl9GTE9BVCIsCiAg
ICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZfRkxPQVQiLApAQCAtMTc4LDcgKzE1MCw3
IEBACiAgICAgImJpdHMiOiB7ICJyZWQiOiAxNiB9LAogICAgICJnbEludGVybmFsRm9ybWF0Ijog
IkdMX1IxNkYiCiAgIH0sCi0gICJBTkdMRV9GT1JNQVRfUjE2X1NJTlQiOiB7CisgICJSMTZfU0lO
VCI6IHsKICAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNl9TSU5UIiwKICAgICAic3J2
Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNl9TSU5UIiwKICAgICAicnR2Rm9ybWF0IjogIkRYR0lf
Rk9STUFUX1IxNl9TSU5UIiwKQEAgLTE4Nyw3ICsxNTksNyBAQAogICAgICJiaXRzIjogeyAicmVk
IjogMTYgfSwKICAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9SMTZJIgogICB9LAotICAiQU5H
TEVfRk9STUFUX1IxNl9VSU5UIjogeworICAiUjE2X1VJTlQiOiB7CiAgICAgInRleEZvcm1hdCI6
ICJEWEdJX0ZPUk1BVF9SMTZfVUlOVCIsCiAgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9S
MTZfVUlOVCIsCiAgICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZfVUlOVCIsCkBAIC0x
OTYsNyArMTY4LDcgQEAKICAgICAiYml0cyI6IHsgInJlZCI6IDE2IH0sCiAgICAgImdsSW50ZXJu
YWxGb3JtYXQiOiAiR0xfUjE2VUkiCiAgIH0sCi0gICJBTkdMRV9GT1JNQVRfUjMyX0ZMT0FUIjog
eworICAiUjMyX0ZMT0FUIjogewogICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjMyX0ZM
T0FUIiwKICAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IzMl9GTE9BVCIsCiAgICAgInJ0
dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMzJfRkxPQVQiLApAQCAtMjA1LDcgKzE3Nyw3IEBACiAg
ICAgImJpdHMiOiB7ICJyZWQiOiAzMiB9LAogICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX1Iz
MkYiCiAgIH0sCi0gICJBTkdMRV9GT1JNQVRfUjMyX1NJTlQiOiB7CisgICJSMzJfU0lOVCI6IHsK
ICAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IzMl9TSU5UIiwKICAgICAic3J2Rm9ybWF0
IjogIkRYR0lfRk9STUFUX1IzMl9TSU5UIiwKICAgICAicnR2Rm9ybWF0IjogIkRYR0lfRk9STUFU
X1IzMl9TSU5UIiwKQEAgLTIxNCw3ICsxODYsNyBAQAogICAgICJiaXRzIjogeyAicmVkIjogMzIg
fSwKICAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9SMzJJIgogICB9LAotICAiQU5HTEVfRk9S
TUFUX1IzMl9VSU5UIjogeworICAiUjMyX1VJTlQiOiB7CiAgICAgInRleEZvcm1hdCI6ICJEWEdJ
X0ZPUk1BVF9SMzJfVUlOVCIsCiAgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMzJfVUlO
VCIsCiAgICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMzJfVUlOVCIsCkBAIC0yMjMsMTcg
KzE5NSw5IEBACiAgICAgImJpdHMiOiB7ICJyZWQiOiAzMiB9LAogICAgICJnbEludGVybmFsRm9y
bWF0IjogIkdMX1IzMlVJIgogICB9LAotICAiQU5HTEVfRk9STUFUX1I4X1VOT1JNX05PTlJFTkRF
UkFCTEUiOiB7CisgICJSOF9VTk9STSI6IHsKICAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFU
X1I4X1VOT1JNIiwKICAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4X1VOT1JNIiwKLSAg
ICAiY2hhbm5lbHMiOiAiciIsCi0gICAgImNvbXBvbmVudFR5cGUiOiAidW5vcm0iLAotICAgICJi
aXRzIjogeyAicmVkIjogOCB9LAotICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX1I4IgotICB9
LAotICAiQU5HTEVfRk9STUFUX1I4X1VOT1JNIjogewotICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9G
T1JNQVRfUjhfVU5PUk0iLAotICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhfVU5PUk0i
LAogICAgICJydHZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhfVU5PUk0iLAogICAgICJjaGFubmVs
cyI6ICJyIiwKICAgICAiY29tcG9uZW50VHlwZSI6ICJ1bm9ybSIsCkBAIC0yNDAsNyArMjA0LDcg
QEAKICAgICAiYml0cyI6IHsgInJlZCI6IDggfSwKICAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJH
TF9SOCIKICAgfSwKLSAgIkFOR0xFX0ZPUk1BVF9SOF9TSU5UIjogeworICAiUjhfU0lOVCI6IHsK
ICAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4X1NJTlQiLAogICAgICJzcnZGb3JtYXQi
OiAiRFhHSV9GT1JNQVRfUjhfU0lOVCIsCiAgICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9S
OF9TSU5UIiwKQEAgLTI0OSw3ICsyMTMsNyBAQAogICAgICJiaXRzIjogeyAicmVkIjogOCB9LAog
ICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX1I4SSIKICAgfSwKLSAgIkFOR0xFX0ZPUk1BVF9S
OF9VSU5UIjogeworICAiUjhfVUlOVCI6IHsKICAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFU
X1I4X1VJTlQiLAogICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhfVUlOVCIsCiAgICAg
InJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOF9VSU5UIiwKQEAgLTI1OCw3ICsyMjIsNyBAQAog
ICAgICJiaXRzIjogeyAicmVkIjogOCB9LAogICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX1I4
VUkiCiAgIH0sCi0gICJBTkdMRV9GT1JNQVRfUjhfU05PUk0iOiB7CisgICJSOF9TTk9STSI6IHsK
ICAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4X1NOT1JNIiwKICAgICAic3J2Rm9ybWF0
IjogIkRYR0lfRk9STUFUX1I4X1NOT1JNIiwKICAgICAiY2hhbm5lbHMiOiAiciIsCkBAIC0yNjYs
NyArMjMwLDcgQEAKICAgICAiYml0cyI6IHsgInJlZCI6IDggfSwKICAgICAiZ2xJbnRlcm5hbEZv
cm1hdCI6ICJHTF9SOF9TTk9STSIKICAgfSwKLSAgIkFOR0xFX0ZPUk1BVF9SMTZHMTZfRkxPQVQi
OiB7CisgICJSMTZHMTZfRkxPQVQiOiB7CiAgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9S
MTZHMTZfRkxPQVQiLAogICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2RzE2X0ZMT0FU
IiwKICAgICAicnR2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcxNl9GTE9BVCIsCkBAIC0yNzUs
NyArMjM5LDcgQEAKICAgICAiYml0cyI6IHsgInJlZCI6IDE2LCAiZ3JlZW4iOiAxNiB9LAogICAg
ICJnbEludGVybmFsRm9ybWF0IjogIkdMX1JHMTZGIgogICB9LAotICAiQU5HTEVfRk9STUFUX1Ix
NkcxNl9TSU5UIjogeworICAiUjE2RzE2X1NJTlQiOiB7CiAgICAgInRleEZvcm1hdCI6ICJEWEdJ
X0ZPUk1BVF9SMTZHMTZfU0lOVCIsCiAgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZH
MTZfU0lOVCIsCiAgICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZHMTZfU0lOVCIsCkBA
IC0yODQsNyArMjQ4LDcgQEAKICAgICAiYml0cyI6IHsgInJlZCI6IDE2LCAiZ3JlZW4iOiAxNiB9
LAogICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX1JHMTZJIgogICB9LAotICAiQU5HTEVfRk9S
TUFUX1IxNkcxNl9VSU5UIjogeworICAiUjE2RzE2X1VJTlQiOiB7CiAgICAgInRleEZvcm1hdCI6
ICJEWEdJX0ZPUk1BVF9SMTZHMTZfVUlOVCIsCiAgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1B
VF9SMTZHMTZfVUlOVCIsCiAgICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZHMTZfVUlO
VCIsCkBAIC0yOTMsNyArMjU3LDcgQEAKICAgICAiYml0cyI6IHsgInJlZCI6IDE2LCAiZ3JlZW4i
OiAxNiB9LAogICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX1JHMTZVSSIKICAgfSwKLSAgIkFO
R0xFX0ZPUk1BVF9SMzJHMzJfRkxPQVQiOiB7CisgICJSMzJHMzJfRkxPQVQiOiB7CiAgICAgInRl
eEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQiLAogICAgICJzcnZGb3JtYXQiOiAi
RFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FUIiwKICAgICAicnR2Rm9ybWF0IjogIkRYR0lfRk9STUFU
X1IzMkczMl9GTE9BVCIsCkBAIC0zMDIsNyArMjY2LDcgQEAKICAgICAiYml0cyI6IHsgInJlZCI6
IDMyLCAiZ3JlZW4iOiAzMiB9LAogICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX1JHMzJGIgog
ICB9LAotICAiQU5HTEVfRk9STUFUX1IzMkczMl9TSU5UIjogeworICAiUjMyRzMyX1NJTlQiOiB7
CiAgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMzJHMzJfU0lOVCIsCiAgICAgInNydkZv
cm1hdCI6ICJEWEdJX0ZPUk1BVF9SMzJHMzJfU0lOVCIsCiAgICAgInJ0dkZvcm1hdCI6ICJEWEdJ
X0ZPUk1BVF9SMzJHMzJfU0lOVCIsCkBAIC0zMTEsNyArMjc1LDcgQEAKICAgICAiYml0cyI6IHsg
InJlZCI6IDMyLCAiZ3JlZW4iOiAzMiB9LAogICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX1JH
MzJJIgogICB9LAotICAiQU5HTEVfRk9STUFUX1IzMkczMl9VSU5UIjogeworICAiUjMyRzMyX1VJ
TlQiOiB7CiAgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMzJHMzJfVUlOVCIsCiAgICAg
InNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMzJHMzJfVUlOVCIsCiAgICAgInJ0dkZvcm1hdCI6
ICJEWEdJX0ZPUk1BVF9SMzJHMzJfVUlOVCIsCkBAIC0zMjAsNyArMjg0LDcgQEAKICAgICAiYml0
cyI6IHsgInJlZCI6IDMyLCAiZ3JlZW4iOiAzMiB9LAogICAgICJnbEludGVybmFsRm9ybWF0Ijog
IkdMX1JHMzJVSSIKICAgfSwKLSAgIkFOR0xFX0ZPUk1BVF9SOEc4X1VOT1JNIjogeworICAiUjhH
OF9VTk9STSI6IHsKICAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhfVU5PUk0iLAog
ICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOF9VTk9STSIsCiAgICAgInJ0dkZvcm1h
dCI6ICJEWEdJX0ZPUk1BVF9SOEc4X1VOT1JNIiwKQEAgLTMyOSwxNSArMjkzLDcgQEAKICAgICAi
Yml0cyI6IHsgInJlZCI6IDgsICJncmVlbiI6IDggfSwKICAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6
ICJHTF9SRzgiCiAgIH0sCi0gICJBTkdMRV9GT1JNQVRfUjhHOF9VTk9STV9OT05SRU5ERVJBQkxF
IjogewotICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOF9VTk9STSIsCi0gICAgInNy
dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4X1VOT1JNIiwKLSAgICAiY2hhbm5lbHMiOiAicmci
LAotICAgICJjb21wb25lbnRUeXBlIjogInVub3JtIiwKLSAgICAiYml0cyI6IHsgInJlZCI6IDgs
ICJncmVlbiI6IDggfSwKLSAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9SRzgiCi0gIH0sCi0g
ICJBTkdMRV9GT1JNQVRfUjhHOF9TSU5UIjogeworICAiUjhHOF9TSU5UIjogewogICAgICJ0ZXhG
b3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOF9TSU5UIiwKICAgICAic3J2Rm9ybWF0IjogIkRYR0lf
Rk9STUFUX1I4RzhfU0lOVCIsCiAgICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4X1NJ
TlQiLApAQCAtMzQ2LDcgKzMwMiw3IEBACiAgICAgImJpdHMiOiB7ICJyZWQiOiA4LCAiZ3JlZW4i
OiA4IH0sCiAgICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfUkc4SSIKICAgfSwKLSAgIkFOR0xF
X0ZPUk1BVF9SOEc4X1VJTlQiOiB7CisgICJSOEc4X1VJTlQiOiB7CiAgICAgInRleEZvcm1hdCI6
ICJEWEdJX0ZPUk1BVF9SOEc4X1VJTlQiLAogICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRf
UjhHOF9VSU5UIiwKICAgICAicnR2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhfVUlOVCIsCkBA
IC0zNTUsNyArMzExLDcgQEAKICAgICAiYml0cyI6IHsgInJlZCI6IDgsICJncmVlbiI6IDggfSwK
ICAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9SRzhVSSIKICAgfSwKLSAgIkFOR0xFX0ZPUk1B
VF9SOEc4X1NOT1JNIjogeworICAiUjhHOF9TTk9STSI6IHsKICAgICAidGV4Rm9ybWF0IjogIkRY
R0lfRk9STUFUX1I4RzhfU05PUk0iLAogICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhH
OF9TTk9STSIsCiAgICAgImNoYW5uZWxzIjogInJnIiwKQEAgLTM2Myw3ICszMTksNyBAQAogICAg
ICJiaXRzIjogeyAicmVkIjogOCwgImdyZWVuIjogOCB9LAogICAgICJnbEludGVybmFsRm9ybWF0
IjogIkdMX1JHOF9TTk9STSIKICAgfSwKLSAgIkFOR0xFX0ZPUk1BVF9SMTBHMTBCMTBBMl9VTk9S
TSI6IHsKKyAgIlIxMEcxMEIxMEEyX1VOT1JNIjogewogICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9G
T1JNQVRfUjEwRzEwQjEwQTJfVU5PUk0iLAogICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRf
UjEwRzEwQjEwQTJfVU5PUk0iLAogICAgICJydHZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjEwRzEw
QjEwQTJfVU5PUk0iLApAQCAtMzcyLDcgKzMyOCw3IEBACiAgICAgImJpdHMiOiB7ICJyZWQiOiAx
MCwgImdyZWVuIjogMTAsICJibHVlIjogMTAsICJhbHBoYSI6IDIgfSwKICAgICAiZ2xJbnRlcm5h
bEZvcm1hdCI6ICJHTF9SR0IxMF9BMiIKICAgfSwKLSAgIkFOR0xFX0ZPUk1BVF9SMTBHMTBCMTBB
Ml9VSU5UIjogeworICAiUjEwRzEwQjEwQTJfVUlOVCI6IHsKICAgICAidGV4Rm9ybWF0IjogIkRY
R0lfRk9STUFUX1IxMEcxMEIxMEEyX1VJTlQiLAogICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JN
QVRfUjEwRzEwQjEwQTJfVUlOVCIsCiAgICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTBH
MTBCMTBBMl9VSU5UIiwKQEAgLTM4MSw3ICszMzcsNyBAQAogICAgICJiaXRzIjogeyAicmVkIjog
MTAsICJncmVlbiI6IDEwLCAiYmx1ZSI6IDEwLCAiYWxwaGEiOiAyIH0sCiAgICAgImdsSW50ZXJu
YWxGb3JtYXQiOiAiR0xfUkdCMTBfQTJVSSIKICAgfSwKLSAgIkFOR0xFX0ZPUk1BVF9SMTZHMTZC
MTZBMTZfU0lOVCI6IHsKKyAgIlIxNkcxNkIxNkExNl9TSU5UIjogewogICAgICJ0ZXhGb3JtYXQi
OiAiRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQiLAogICAgICJzcnZGb3JtYXQiOiAiRFhH
SV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQiLAogICAgICJydHZGb3JtYXQiOiAiRFhHSV9GT1JN
QVRfUjE2RzE2QjE2QTE2X1NJTlQiLApAQCAtMzkwLDcgKzM0Niw3IEBACiAgICAgImJpdHMiOiB7
ICJyZWQiOiAxNiwgImdyZWVuIjogMTYsICJibHVlIjogMTYsICJhbHBoYSI6IDE2IH0sCiAgICAg
ImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfUkdCQTE2SSIKICAgfSwKLSAgIkFOR0xFX0ZPUk1BVF9S
MTZHMTZCMTZBMTZfVUlOVCI6IHsKKyAgIlIxNkcxNkIxNkExNl9VSU5UIjogewogICAgICJ0ZXhG
b3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQiLAogICAgICJzcnZGb3JtYXQi
OiAiRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQiLAogICAgICJydHZGb3JtYXQiOiAiRFhH
SV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQiLApAQCAtMzk5LDcgKzM1NSw3IEBACiAgICAgImJp
dHMiOiB7ICJyZWQiOiAxNiwgImdyZWVuIjogMTYsICJibHVlIjogMTYsICJhbHBoYSI6IDE2IH0s
CiAgICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfUkdCQTE2VUkiCiAgIH0sCi0gICJBTkdMRV9G
T1JNQVRfUjMyRzMyQjMyQTMyX1NJTlQiOiB7CisgICJSMzJHMzJCMzJBMzJfU0lOVCI6IHsKICAg
ICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5UIiwKICAgICAic3J2
Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5UIiwKICAgICAicnR2Rm9ybWF0
IjogIkRYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5UIiwKQEAgLTQwOCw3ICszNjQsNyBAQAog
ICAgICJiaXRzIjogeyAicmVkIjogMzIsICJncmVlbiI6IDMyLCAiYmx1ZSI6IDMyLCAiYWxwaGEi
OiAzMiB9LAogICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX1JHQkEzMkkiCiAgIH0sCi0gICJB
TkdMRV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQiOiB7CisgICJSMzJHMzJCMzJBMzJfVUlOVCI6
IHsKICAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5UIiwKICAg
ICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5UIiwKICAgICAicnR2
Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5UIiwKQEAgLTQxNyw3ICszNzMs
NyBAQAogICAgICJiaXRzIjogeyAicmVkIjogMzIsICJncmVlbiI6IDMyLCAiYmx1ZSI6IDMyLCAi
YWxwaGEiOiAzMiB9LAogICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX1JHQkEzMlVJIgogICB9
LAotICAiQU5HTEVfRk9STUFUX0I1RzZSNV9VTk9STSI6IHsKKyAgIkI1RzZSNV9VTk9STSI6IHsK
ICAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX0I1RzZSNV9VTk9STSIsCiAgICAgInNydkZv
cm1hdCI6ICJEWEdJX0ZPUk1BVF9CNUc2UjVfVU5PUk0iLAogICAgICJydHZGb3JtYXQiOiAiRFhH
SV9GT1JNQVRfQjVHNlI1X1VOT1JNIiwKQEAgLTQyNCwxMCArMzgwLDEwIEBACiAgICAgImNoYW5u
ZWxzIjogImJnciIsCiAgICAgImNvbXBvbmVudFR5cGUiOiAgInVub3JtIiwKICAgICAiYml0cyI6
IHsgInJlZCI6IDUsICJncmVlbiI6IDYsICJibHVlIjogNSB9LAotICAgICJnbEludGVybmFsRm9y
bWF0IjogIkdMX1JHQjU2NSIsCi0gICAgImNoYW5uZWxTdHJ1Y3QiOiAiUjVHNkI1IgorICAgICJz
dXBwb3J0VGVzdCI6ICJTdXBwb3J0c0Zvcm1hdChEWEdJX0ZPUk1BVF9CNUc2UjVfVU5PUk0sIGRl
dmljZUNhcHMpIiwKKyAgICAiZmFsbGJhY2tGb3JtYXQiOiAiUjhHOEI4QThfVU5PUk0iCiAgIH0s
Ci0gICJBTkdMRV9GT1JNQVRfQjVHNVI1QTFfVU5PUk0iOiB7CisgICJCNUc1UjVBMV9VTk9STSI6
IHsKICAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX0I1RzVSNUExX1VOT1JNIiwKICAgICAi
c3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX0I1RzVSNUExX1VOT1JNIiwKICAgICAicnR2Rm9ybWF0
IjogIkRYR0lfRk9STUFUX0I1RzVSNUExX1VOT1JNIiwKQEAgLTQzNCwxMCArMzkwLDEwIEBACiAg
ICAgImNoYW5uZWxzIjogImJncmEiLAogICAgICJjb21wb25lbnRUeXBlIjogInVub3JtIiwKICAg
ICAiYml0cyI6IHsgInJlZCI6IDUsICJncmVlbiI6IDUsICJibHVlIjogNSwgImFscGhhIjogMSB9
LAotICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX1JHQjVfQTEiLAotICAgICJjaGFubmVsU3Ry
dWN0IjogIkExUjVHNUI1IgorICAgICJzdXBwb3J0VGVzdCI6ICJTdXBwb3J0c0Zvcm1hdChEWEdJ
X0ZPUk1BVF9CNUc1UjVBMV9VTk9STSwgZGV2aWNlQ2FwcykiLAorICAgICJmYWxsYmFja0Zvcm1h
dCI6ICJSOEc4QjhBOF9VTk9STSIKICAgfSwKLSAgIkFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9TSU5U
IjogeworICAiUjhHOEI4QThfU0lOVCI6IHsKICAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFU
X1I4RzhCOEE4X1NJTlQiLAogICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOEI4QThf
U0lOVCIsCiAgICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5UIiwKQEAg
LTQ0Niw3ICs0MDIsNyBAQAogICAgICJiaXRzIjogeyAicmVkIjogOCwgImdyZWVuIjogOCwgImJs
dWUiOiA4LCAiYWxwaGEiOiA4IH0sCiAgICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfUkdCQThJ
IgogICB9LAotICAiQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VJTlQiOiB7CisgICJSOEc4QjhBOF9V
SU5UIjogewogICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVCIsCiAg
ICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5UIiwKICAgICAicnR2Rm9y
bWF0IjogIkRYR0lfRk9STUFUX1I4RzhCOEE4X1VJTlQiLApAQCAtNDU1LDcgKzQxMSw3IEBACiAg
ICAgImJpdHMiOiB7ICJyZWQiOiA4LCAiZ3JlZW4iOiA4LCAiYmx1ZSI6IDgsICJhbHBoYSI6IDgg
fSwKICAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9SR0JBOFVJIgogICB9LAotICAiQU5HTEVf
Rk9STUFUX1I4RzhCOEE4X1NOT1JNIjogeworICAiUjhHOEI4QThfU05PUk0iOiB7CiAgICAgInRl
eEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TTk9STSIsCiAgICAgInNydkZvcm1hdCI6
ICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TTk9STSIsCiAgICAgImNoYW5uZWxzIjogInJnYmEiLApA
QCAtNDYzLDE2ICs0MTksMTQgQEAKICAgICAiYml0cyI6IHsgInJlZCI6IDgsICJncmVlbiI6IDgs
ICJibHVlIjogOCwgImFscGhhIjogOCB9LAogICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX1JH
QkE4X1NOT1JNIgogICB9LAotICAiQU5HTEVfRk9STUFUX1I5RzlCOUU1X1NIQVJFREVYUCI6IHsK
KyAgIlI5RzlCOUU1X1NIQVJFREVYUCI6IHsKICAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFU
X1I5RzlCOUU1X1NIQVJFREVYUCIsCiAgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOUc5
QjlFNV9TSEFSRURFWFAiLAogICAgICJjaGFubmVscyI6ICJyZ2IiLAogICAgICJjb21wb25lbnRU
eXBlIjogICJmbG9hdCIsCi0gICAgImJpdHMiOiB7ICJyZWQiOiA5LCAiZ3JlZW4iOiA5LCAiYmx1
ZSI6IDksICJzaGFyZWQiOiA1IH0sCi0gICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfUkdCOV9F
NSIsCi0gICAgImNoYW5uZWxTdHJ1Y3QiOiAgIlI5RzlCOUU1IgorICAgICJiaXRzIjogeyAicmVk
IjogOSwgImdyZWVuIjogOSwgImJsdWUiOiA5LCAic2hhcmVkIjogNSB9CiAgIH0sCi0gICJBTkdM
RV9GT1JNQVRfQjRHNFI0QTRfVU5PUk0iOiB7CisgICJCNEc0UjRBNF9VTk9STSI6IHsKICAgICAi
dGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX0I0RzRSNEE0X1VOT1JNIiwKICAgICAic3J2Rm9ybWF0
IjogIkRYR0lfRk9STUFUX0I0RzRSNEE0X1VOT1JNIiwKICAgICAicnR2Rm9ybWF0IjogIkRYR0lf
Rk9STUFUX0I0RzRSNEE0X1VOT1JNIiwKQEAgLTQ3OSwxMCArNDMzLDEwIEBACiAgICAgImNoYW5u
ZWxzIjogImJncmEiLAogICAgICJjb21wb25lbnRUeXBlIjogICJ1bm9ybSIsCiAgICAgImJpdHMi
OiB7ICJyZWQiOiA0LCAiZ3JlZW4iOiA0LCAiYmx1ZSI6IDQsICJhbHBoYSI6IDQgfSwKLSAgICAi
Z2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9SR0JBNCIsCi0gICAgImNoYW5uZWxTdHJ1Y3QiOiAgIkE0
UjRHNEI0IgorICAgICJzdXBwb3J0VGVzdCI6ICJTdXBwb3J0c0Zvcm1hdChEWEdJX0ZPUk1BVF9C
NEc0UjRBNF9VTk9STSwgZGV2aWNlQ2FwcykiLAorICAgICJmYWxsYmFja0Zvcm1hdCI6ICJSOEc4
QjhBOF9VTk9STSIKICAgfSwKLSAgIkFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCIjog
eworICAiUjhHOEI4QThfVU5PUk1fU1JHQiI6IHsKICAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9S
TUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IiLAogICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRf
UjhHOEI4QThfVU5PUk1fU1JHQiIsCiAgICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4
QjhBOF9VTk9STV9TUkdCIiwKQEAgLTQ5MSwxMiArNDQ1LDQ2IEBACiAgICAgImJpdHMiOiB7ICJy
ZWQiOiA4LCAiZ3JlZW4iOiA4LCAiYmx1ZSI6IDgsICJhbHBoYSI6IDggfSwKICAgICAiZ2xJbnRl
cm5hbEZvcm1hdCI6ICJHTF9TUkdCOF9BTFBIQTgiCiAgIH0sCi0gICJBTkdMRV9GT1JNQVRfWDI0
X1RZUEVMRVNTX0c4X1VJTlQiOiB7Ci0gICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMjRH
OF9UWVBFTEVTUyIsCi0gICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9YMjRfVFlQRUxFU1Nf
RzhfVUlOVCIsCi0gICAgImRzdkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlO
VCIsCi0gICAgImNoYW5uZWxzIjogImRzIiwKLSAgICAiYml0cyI6IHsgImRlcHRoIjogMjQsICJz
dGVuY2lsIjogOCB9LAotICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX0RFUFRIMjRfU1RFTkNJ
TDhfT0VTIgorICAiUjE2X1VOT1JNIjogeworICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRf
UjE2X1VOT1JNIiwKKyAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNl9VTk9STSIsCisg
ICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZfVU5PUk0iLAorICAgICJjaGFubmVscyI6
ICJyIiwKKyAgICAiY29tcG9uZW50VHlwZSI6ICJ1bm9ybSIsCisgICAgImJpdHMiOiB7ICJyZWQi
OiAxNiB9LAorICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX1IxNl9FWFQiCisgIH0sCisgICJS
MTZHMTZfVU5PUk0iOiB7CisgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZHMTZfVU5P
Uk0iLAorICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2RzE2X1VOT1JNIiwKKyAgICAi
cnR2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcxNl9VTk9STSIsCisgICAgImNoYW5uZWxzIjog
InJnIiwKKyAgICAiY29tcG9uZW50VHlwZSI6ICJ1bm9ybSIsCisgICAgImJpdHMiOiB7ICJyZWQi
OiAxNiwgImdyZWVuIjogMTYgfSwKKyAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9SRzE2X0VY
VCIKKyAgfSwKKyAgIlIxNl9TTk9STSI6IHsKKyAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFU
X1IxNl9TTk9STSIsCisgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZfU05PUk0iLAor
ICAgICJjaGFubmVscyI6ICJyIiwKKyAgICAiY29tcG9uZW50VHlwZSI6ICJzbm9ybSIsCisgICAg
ImJpdHMiOiB7ICJyZWQiOiAxNiB9LAorICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX1IxNl9T
Tk9STV9FWFQiCisgIH0sCisgICJSMTZHMTZfU05PUk0iOiB7CisgICAgInRleEZvcm1hdCI6ICJE
WEdJX0ZPUk1BVF9SMTZHMTZfU05PUk0iLAorICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRf
UjE2RzE2X1NOT1JNIiwKKyAgICAiY2hhbm5lbHMiOiAicmciLAorICAgICJjb21wb25lbnRUeXBl
IjogInNub3JtIiwKKyAgICAiYml0cyI6IHsgInJlZCI6IDE2LCAiZ3JlZW4iOiAxNiB9LAorICAg
ICJnbEludGVybmFsRm9ybWF0IjogIkdMX1JHMTZfU05PUk1fRVhUIgorICB9LAorICAiUjE2RzE2
QjE2QTE2X1NOT1JNIjogeworICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2RzE2QjE2
QTE2X1NOT1JNIiwKKyAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9T
Tk9STSIsCisgICAgImNoYW5uZWxzIjogInJnYmEiLAorICAgICJjb21wb25lbnRUeXBlIjogInNu
b3JtIiwKKyAgICAiYml0cyI6IHsgInJlZCI6IDE2LCAiZ3JlZW4iOiAxNiwgImJsdWUiOiAxNiwg
ImFscGhhIjogMTYgfSwKKyAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9SR0JBMTZfU05PUk1f
RVhUIgogICB9CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X21hcC5qc29uCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
dGV4dHVyZV9mb3JtYXRfbWFwLmpzb24JKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3Jt
YXRfbWFwLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTEsMTQ4ICsxLDc0IEBACiB7Ci0gICJHTF9B
TFBIQSI6IHsKLSAgICAiT25seUZMMTBQbHVzIjogIkFOR0xFX0ZPUk1BVF9BOF9VTk9STSIsCi0g
ICAgIk9ubHlGTDlfMyI6ICJBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk0iCi0gIH0sCi0gICJH
TF9BTFBIQTE2Rl9FWFQiOiAiQU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCIsCi0gICJH
TF9BTFBIQTMyRl9FWFQiOiAiQU5HTEVfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCIsCi0gICJH
TF9BTFBIQThfRVhUIjogewotICAgICJPbmx5RkwxMFBsdXMiOiAiQU5HTEVfRk9STUFUX0E4X1VO
T1JNIiwKLSAgICAiT25seUZMOV8zIjogIkFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSIKLSAg
fSwKLSAgIkdMX0JHUjVfQTFfQU5HTEVYIjogIkFOR0xFX0ZPUk1BVF9COEc4UjhBOF9VTk9STSIs
Ci0gICJHTF9CR1JBNF9BTkdMRVgiOiAiQU5HTEVfRk9STUFUX0I4RzhSOEE4X1VOT1JNIiwKLSAg
IkdMX0JHUkE4X0VYVCI6ICJBTkdMRV9GT1JNQVRfQjhHOFI4QThfVU5PUk0iLAotICAiR0xfQkdS
QV9FWFQiOiAiQU5HTEVfRk9STUFUX0I4RzhSOEE4X1VOT1JNIiwKLSAgIkdMX0NPTVBSRVNTRURf
UjExX0VBQyI6IHsKLSAgICAiT25seUZMMTBQbHVzIjogIkFOR0xFX0ZPUk1BVF9SOF9VTk9STV9O
T05SRU5ERVJBQkxFIgotICB9LAotICAiR0xfQ09NUFJFU1NFRF9SRzExX0VBQyI6IHsKLSAgICAi
T25seUZMMTBQbHVzIjogIkFOR0xFX0ZPUk1BVF9SOEc4X1VOT1JNX05PTlJFTkRFUkFCTEUiCi0g
IH0sCi0gICJHTF9DT01QUkVTU0VEX1JHQjhfRVRDMiI6IHsKLSAgICAiT25seUZMMTBQbHVzIjog
IkFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9OT05SRU5ERVJBQkxFIgotICB9LAotICAiR0xf
Q09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiI6IHsKLSAgICAiT25seUZM
MTBQbHVzIjogIkFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9OT05SRU5ERVJBQkxFIgotICB9
LAotICAiR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQyI6IHsKLSAgICAiT25seUZMMTBQbHVz
IjogIkFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9OT05SRU5ERVJBQkxFIgotICB9LAotICAi
R0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQiOiAiQU5HTEVfRk9STUFUX0JDMV9VTk9S
TSIsCi0gICJHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFIjogIkFOR0xFX0ZPUk1B
VF9CQzJfVU5PUk0iLAotICAiR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRSI6ICJB
TkdMRV9GT1JNQVRfQkMzX1VOT1JNIiwKLSAgIkdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9F
WFQiOiAiQU5HTEVfRk9STUFUX0JDMV9VTk9STSIsCi0gICJHTF9DT01QUkVTU0VEX1NJR05FRF9S
MTFfRUFDIjogewotICAgICJPbmx5RkwxMFBsdXMiOiAiQU5HTEVfRk9STUFUX1I4X1NOT1JNX05P
TlJFTkRFUkFCTEUiCi0gIH0sCi0gICJHTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQyI6IHsK
LSAgICAiT25seUZMMTBQbHVzIjogIkFOR0xFX0ZPUk1BVF9SOEc4X1NOT1JNX05PTlJFTkRFUkFC
TEUiCi0gIH0sCi0gICJHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQyI6IHsKLSAg
ICAiT25seUZMMTBQbHVzIjogIkFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCX05PTlJF
TkRFUkFCTEUiCi0gIH0sCi0gICJHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIiOiB7Ci0gICAgIk9u
bHlGTDEwUGx1cyI6ICJBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQl9OT05SRU5ERVJB
QkxFIgotICB9LAotICAiR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VU
QzIiOiB7Ci0gICAgIk9ubHlGTDEwUGx1cyI6ICJBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk1f
U1JHQl9OT05SRU5ERVJBQkxFIgotICB9LAotICAiR0xfREVQVEgyNF9TVEVOQ0lMOCI6IHsKLSAg
ICAiT25seUZMMTBQbHVzIjogIkFOR0xFX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVF9GTDEwIiwK
LSAgICAiT25seUZMOV8zIjogIkFOR0xFX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVF9GTDlfMyIK
LSAgfSwKLSAgIkdMX0RFUFRIMzJGX1NURU5DSUw4IjogewotICAgICJPbmx5RkwxMFBsdXMiOiAi
QU5HTEVfRk9STUFUX0QzMl9GTE9BVF9TOFgyNF9VSU5UX0ZMMTAiLAotICAgICJPbmx5Rkw5XzMi
OiAiQU5HTEVfRk9STUFUX05PTkUiCi0gIH0sCi0gICJHTF9ERVBUSF9DT01QT05FTlQxNiI6IHsK
LSAgICAiT25seUZMMTBQbHVzIjogIkFOR0xFX0ZPUk1BVF9EMTZfVU5PUk1fRkwxMCIsCi0gICAg
Ik9ubHlGTDlfMyI6ICJBTkdMRV9GT1JNQVRfRDE2X1VOT1JNX0ZMOV8zIgotICB9LAotICAiR0xf
REVQVEhfQ09NUE9ORU5UMjQiOiB7Ci0gICAgIk9ubHlGTDEwUGx1cyI6ICJBTkdMRV9GT1JNQVRf
RDI0X1VOT1JNX1M4X1VJTlRfRkwxMCIsCi0gICAgIk9ubHlGTDlfMyI6ICJBTkdMRV9GT1JNQVRf
RDI0X1VOT1JNX1M4X1VJTlRfRkw5XzMiCi0gIH0sCi0gICJHTF9ERVBUSF9DT01QT05FTlQzMkYi
OiB7Ci0gICAgIk9ubHlGTDEwUGx1cyI6ICJBTkdMRV9GT1JNQVRfRDMyX0ZMT0FUIiwKLSAgICAi
T25seUZMOV8zIjogIkFOR0xFX0ZPUk1BVF9OT05FIgotICB9LAotICAiR0xfREVQVEhfQ09NUE9O
RU5UMzJfT0VTIjogewotICAgICJPbmx5RkwxMFBsdXMiOiAiQU5HTEVfRk9STUFUX0QyNF9VTk9S
TV9TOF9VSU5UX0ZMMTAiCi0gIH0sCi0gICJHTF9FVEMxX1JHQjhfT0VTIjogIkFOR0xFX0ZPUk1B
VF9SOEc4QjhBOF9VTk9STV9OT05SRU5ERVJBQkxFIiwKLSAgIkdMX0VUQzFfUkdCOF9MT1NTWV9E
RUNPREVfQU5HTEUiOiAiQU5HTEVfRk9STUFUX0JDMV9VTk9STSIsCi0gICJHTF9MVU1JTkFOQ0Ui
OiAiQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNIiwKLSAgIkdMX0xVTUlOQU5DRTE2Rl9FWFQi
OiAiQU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCIsCi0gICJHTF9MVU1JTkFOQ0UzMkZf
RVhUIjogIkFOR0xFX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQiLAotICAiR0xfTFVNSU5BTkNF
OF9BTFBIQThfRVhUIjogIkFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSIsCi0gICJHTF9MVU1J
TkFOQ0U4X0VYVCI6ICJBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk0iLAotICAiR0xfTFVNSU5B
TkNFX0FMUEhBIjogIkFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSIsCi0gICJHTF9MVU1JTkFO
Q0VfQUxQSEExNkZfRVhUIjogIkFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQiLAotICAi
R0xfTFVNSU5BTkNFX0FMUEhBMzJGX0VYVCI6ICJBTkdMRV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZM
T0FUIiwKLSAgIkdMX05PTkUiOiAiQU5HTEVfRk9STUFUX05PTkUiLAotICAiR0xfUjExRl9HMTFG
X0IxMEYiOiAiQU5HTEVfRk9STUFUX1IxMUcxMUIxMF9GTE9BVCIsCi0gICJHTF9SMTZGIjogIkFO
R0xFX0ZPUk1BVF9SMTZfRkxPQVQiLAotICAiR0xfUjE2SSI6ICJBTkdMRV9GT1JNQVRfUjE2X1NJ
TlQiLAotICAiR0xfUjE2VUkiOiAiQU5HTEVfRk9STUFUX1IxNl9VSU5UIiwKLSAgIkdMX1IzMkYi
OiAiQU5HTEVfRk9STUFUX1IzMl9GTE9BVCIsCi0gICJHTF9SMzJJIjogIkFOR0xFX0ZPUk1BVF9S
MzJfU0lOVCIsCi0gICJHTF9SMzJVSSI6ICJBTkdMRV9GT1JNQVRfUjMyX1VJTlQiLAotICAiR0xf
UjgiOiAiQU5HTEVfRk9STUFUX1I4X1VOT1JNIiwKLSAgIkdMX1I4SSI6ICJBTkdMRV9GT1JNQVRf
UjhfU0lOVCIsCi0gICJHTF9SOFVJIjogIkFOR0xFX0ZPUk1BVF9SOF9VSU5UIiwKLSAgIkdMX1I4
X1NOT1JNIjogIkFOR0xFX0ZPUk1BVF9SOF9TTk9STSIsCi0gICJHTF9SRzE2RiI6ICJBTkdMRV9G
T1JNQVRfUjE2RzE2X0ZMT0FUIiwKLSAgIkdMX1JHMTZJIjogIkFOR0xFX0ZPUk1BVF9SMTZHMTZf
U0lOVCIsCi0gICJHTF9SRzE2VUkiOiAiQU5HTEVfRk9STUFUX1IxNkcxNl9VSU5UIiwKLSAgIkdM
X1JHMzJGIjogIkFOR0xFX0ZPUk1BVF9SMzJHMzJfRkxPQVQiLAotICAiR0xfUkczMkkiOiAiQU5H
TEVfRk9STUFUX1IzMkczMl9TSU5UIiwKLSAgIkdMX1JHMzJVSSI6ICJBTkdMRV9GT1JNQVRfUjMy
RzMyX1VJTlQiLAotICAiR0xfUkc4IjogIkFOR0xFX0ZPUk1BVF9SOEc4X1VOT1JNIiwKLSAgIkdM
X1JHOEkiOiAiQU5HTEVfRk9STUFUX1I4RzhfU0lOVCIsCi0gICJHTF9SRzhVSSI6ICJBTkdMRV9G
T1JNQVRfUjhHOF9VSU5UIiwKLSAgIkdMX1JHOF9TTk9STSI6ICJBTkdMRV9GT1JNQVRfUjhHOF9T
Tk9STSIsCi0gICJHTF9SR0IiOiAiQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNIiwKLSAgIkdM
X1JHQjEwX0EyIjogIkFOR0xFX0ZPUk1BVF9SMTBHMTBCMTBBMl9VTk9STSIsCi0gICJHTF9SR0Ix
MF9BMlVJIjogIkFOR0xFX0ZPUk1BVF9SMTBHMTBCMTBBMl9VSU5UIiwKLSAgIkdMX1JHQjE2RiI6
ICJBTkdMRV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FUIiwKLSAgIkdMX1JHQjE2SSI6ICJBTkdM
RV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQiLAotICAiR0xfUkdCMTZVSSI6ICJBTkdMRV9GT1JN
QVRfUjE2RzE2QjE2QTE2X1VJTlQiLAotICAiR0xfUkdCMzJGIjogIkFOR0xFX0ZPUk1BVF9SMzJH
MzJCMzJBMzJfRkxPQVQiLAotICAiR0xfUkdCMzJJIjogIkFOR0xFX0ZPUk1BVF9SMzJHMzJCMzJB
MzJfU0lOVCIsCi0gICJHTF9SR0IzMlVJIjogIkFOR0xFX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlO
VCIsCi0gICJHTF9SR0I1NjUiOiB7Ci0gICAgIlN1cHBvcnRzRm9ybWF0PERYR0lfRk9STUFUX0I1
RzZSNV9VTk9STSxmYWxzZT4iOiAiQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNIiwKLSAgICAi
U3VwcG9ydHNGb3JtYXQ8RFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNLHRydWU+IjogIkFOR0xFX0ZP
Uk1BVF9CNUc2UjVfVU5PUk0iCi0gIH0sCi0gICJHTF9SR0I1X0ExIjogewotICAgICJTdXBwb3J0
c0Zvcm1hdDxEWEdJX0ZPUk1BVF9CNUc1UjVBMV9VTk9STSxmYWxzZT4iOiAiQU5HTEVfRk9STUFU
X1I4RzhCOEE4X1VOT1JNIiwKLSAgICAiU3VwcG9ydHNGb3JtYXQ8RFhHSV9GT1JNQVRfQjVHNVI1
QTFfVU5PUk0sdHJ1ZT4iOiAiQU5HTEVfRk9STUFUX0I1RzVSNUExX1VOT1JNIgotICB9LAotICAi
R0xfUkdCOCI6ICJBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk0iLAotICAiR0xfUkdCOEkiOiAi
QU5HTEVfRk9STUFUX1I4RzhCOEE4X1NJTlQiLAotICAiR0xfUkdCOFVJIjogIkFOR0xFX0ZPUk1B
VF9SOEc4QjhBOF9VSU5UIiwKLSAgIkdMX1JHQjhfU05PUk0iOiAiQU5HTEVfRk9STUFUX1I4RzhC
OEE4X1NOT1JNIiwKLSAgIkdMX1JHQjlfRTUiOiAiQU5HTEVfRk9STUFUX1I5RzlCOUU1X1NIQVJF
REVYUCIsCi0gICJHTF9SR0JBIjogIkFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSIsCi0gICJH
TF9SR0JBMTZGIjogIkFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQiLAotICAiR0xfUkdC
QTE2SSI6ICJBTkdMRV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQiLAotICAiR0xfUkdCQTE2VUki
OiAiQU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5UIiwKLSAgIkdMX1JHQkEzMkYiOiAiQU5H
TEVfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCIsCi0gICJHTF9SR0JBMzJJIjogIkFOR0xFX0ZP
Uk1BVF9SMzJHMzJCMzJBMzJfU0lOVCIsCi0gICJHTF9SR0JBMzJVSSI6ICJBTkdMRV9GT1JNQVRf
UjMyRzMyQjMyQTMyX1VJTlQiLAotICAiR0xfUkdCQTQiOiB7Ci0gICAgIlN1cHBvcnRzRm9ybWF0
PERYR0lfRk9STUFUX0I0RzRSNEE0X1VOT1JNLGZhbHNlPiI6ICJBTkdMRV9GT1JNQVRfUjhHOEI4
QThfVU5PUk0iLAotICAgICJTdXBwb3J0c0Zvcm1hdDxEWEdJX0ZPUk1BVF9CNEc0UjRBNF9VTk9S
TSx0cnVlPiI6ICJBTkdMRV9GT1JNQVRfQjRHNFI0QTRfVU5PUk0iCi0gIH0sCi0gICJHTF9SR0JB
OCI6ICJBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk0iLAotICAiR0xfUkdCQThJIjogIkFOR0xF
X0ZPUk1BVF9SOEc4QjhBOF9TSU5UIiwKLSAgIkdMX1JHQkE4VUkiOiAiQU5HTEVfRk9STUFUX1I4
RzhCOEE4X1VJTlQiLAotICAiR0xfUkdCQThfU05PUk0iOiAiQU5HTEVfRk9STUFUX1I4RzhCOEE4
X1NOT1JNIiwKLSAgIkdMX1NSR0I4IjogIkFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdC
X05PTlJFTkRFUkFCTEUiLAotICAiR0xfU1JHQjhfQUxQSEE4IjogIkFOR0xFX0ZPUk1BVF9SOEc4
QjhBOF9VTk9STV9TUkdCIiwKLSAgIkdMX1NURU5DSUxfSU5ERVg4IjogewotICAgICJPbmx5Rkwx
MFBsdXMiOiAiQU5HTEVfRk9STUFUX1gyNF9UWVBFTEVTU19HOF9VSU5UIiwKLSAgICAiT25seUZM
OV8zIjogIkFOR0xFX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVF9GTDlfMyIKLSAgfQorICAiR0xf
QUxQSEExNkZfRVhUIjogIlIxNkcxNkIxNkExNl9GTE9BVCIsCisgICJHTF9BTFBIQTMyRl9FWFQi
OiAiUjMyRzMyQjMyQTMyX0ZMT0FUIiwKKyAgIkdMX0JHUjVfQTFfQU5HTEVYIjogIkI4RzhSOEE4
X1VOT1JNIiwKKyAgIkdMX0JHUkE0X0FOR0xFWCI6ICJCOEc4UjhBOF9VTk9STSIsCisgICJHTF9D
T01QUkVTU0VEX1IxMV9FQUMiOiAiUjhfVU5PUk0iLAorICAiR0xfQ09NUFJFU1NFRF9SRzExX0VB
QyI6ICJSOEc4X1VOT1JNIiwKKyAgIkdMX0NPTVBSRVNTRURfUkdCOF9FVEMyIjogIlI4RzhCOEE4
X1VOT1JNIiwKKyAgIkdMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIi
OiAiUjhHOEI4QThfVU5PUk0iLAorICAiR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQyI6ICJS
OEc4QjhBOF9VTk9STSIsCisgICJHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSIjogIk5P
TkUiLAorICAiR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUiI6ICJOT05FIiwKKyAgIkdM
X0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFIiOiAiTk9ORSIsCisgICJHTF9DT01QUkVTU0VE
X1JHQkFfQVNUQ182eDVfS0hSIjogIk5PTkUiLAorICAiR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENf
Nng2X0tIUiI6ICJOT05FIiwKKyAgIkdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFIiOiAi
Tk9ORSIsCisgICJHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDZfS0hSIjogIk5PTkUiLAorICAi
R0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4X0tIUiI6ICJOT05FIiwKKyAgIkdMX0NPTVBSRVNT
RURfUkdCQV9BU1RDXzEweDVfS0hSIjogIk5PTkUiLAorICAiR0xfQ09NUFJFU1NFRF9SR0JBX0FT
VENfMTB4Nl9LSFIiOiAiTk9ORSIsCisgICJHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tI
UiI6ICJOT05FIiwKKyAgIkdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUiI6ICJOT05F
IiwKKyAgIkdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwX0tIUiI6ICJOT05FIiwKKyAgIkdM
X0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUiI6ICJOT05FIiwKKyAgIkdMX0NPTVBSRVNT
RURfUkdCX1MzVENfRFhUMV9FWFQiOiAiQkMxX1JHQl9VTk9STV9CTE9DSyIsCisgICJHTF9DT01Q
UkVTU0VEX1NJR05FRF9SMTFfRUFDIjogIlI4X1NOT1JNIiwKKyAgIkdMX0NPTVBSRVNTRURfU0lH
TkVEX1JHMTFfRUFDIjogIlI4RzhfU05PUk0iLAorICAiR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ180eDRfS0hSIjogIk5PTkUiLAorICAiR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
QVNUQ181eDRfS0hSIjogIk5PTkUiLAorICAiR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNU
Q181eDVfS0hSIjogIk5PTkUiLAorICAiR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182
eDVfS0hSIjogIk5PTkUiLAorICAiR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDZf
S0hSIjogIk5PTkUiLAorICAiR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hS
IjogIk5PTkUiLAorICAiR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSIjog
Ik5PTkUiLAorICAiR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDhfS0hSIjogIk5P
TkUiLAorICAiR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1X0tIUiI6ICJOT05F
IiwKKyAgIkdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4Nl9LSFIiOiAiTk9ORSIs
CisgICJHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDhfS0hSIjogIk5PTkUiLAor
ICAiR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFIiOiAiTk9ORSIsCisg
ICJHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tIUiI6ICJOT05FIiwKKyAg
IkdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTJfS0hSIjogIk5PTkUiLAorICAi
R0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMiOiAiUjhHOEI4QThfVU5PUk1fU1JH
QiIsCisgICJHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIiOiAiUjhHOEI4QThfVU5PUk1fU1JHQiIs
CisgICJHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiI6ICJSOEc4
QjhBOF9VTk9STV9TUkdCIiwKKyAgIkdMX0RFUFRIX0NPTVBPTkVOVDI0IjogIkQyNF9VTk9STV9T
OF9VSU5UIiwKKyAgIkdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUyI6ICJEMjRfVU5PUk1fUzhfVUlO
VCIsCisgICJHTF9FVEMxX1JHQjhfT0VTIjogIlI4RzhCOEE4X1VOT1JNIiwKKyAgIkdMX0VUQzFf
UkdCOF9MT1NTWV9ERUNPREVfQU5HTEUiOiAiQkMxX1JHQl9VTk9STV9CTE9DSyIsCisgICJHTF9M
VU1JTkFOQ0UxNkZfRVhUIjogIlIxNkcxNkIxNkExNl9GTE9BVCIsCisgICJHTF9MVU1JTkFOQ0Uz
MkZfRVhUIjogIlIzMkczMkIzMkEzMl9GTE9BVCIsCisgICJHTF9MVU1JTkFOQ0U4X0FMUEhBOF9F
WFQiOiAiUjhHOEI4QThfVU5PUk0iLAorICAiR0xfTFVNSU5BTkNFOF9FWFQiOiAiUjhHOEI4QThf
VU5PUk0iLAorICAiR0xfTFVNSU5BTkNFX0FMUEhBMTZGX0VYVCI6ICJSMTZHMTZCMTZBMTZfRkxP
QVQiLAorICAiR0xfTFVNSU5BTkNFX0FMUEhBMzJGX0VYVCI6ICJSMzJHMzJCMzJBMzJfRkxPQVQi
LAorICAiR0xfUkdCIjogIlI4RzhCOEE4X1VOT1JNIiwKKyAgIkdMX1JHQjE2RiI6ICJSMTZHMTZC
MTZBMTZfRkxPQVQiLAorICAiR0xfUkdCMTZJIjogIlIxNkcxNkIxNkExNl9TSU5UIiwKKyAgIkdM
X1JHQjE2VUkiOiAiUjE2RzE2QjE2QTE2X1VJTlQiLAorICAiR0xfUkdCNTY1IjogIkI1RzZSNV9V
Tk9STSIsCisgICJHTF9SR0I1X0ExIjogIkI1RzVSNUExX1VOT1JNIiwKKyAgIkdMX1JHQjgiOiAi
UjhHOEI4QThfVU5PUk0iLAorICAiR0xfUkdCOEkiOiAiUjhHOEI4QThfU0lOVCIsCisgICJHTF9S
R0I4VUkiOiAiUjhHOEI4QThfVUlOVCIsCisgICJHTF9SR0I4X1NOT1JNIjogIlI4RzhCOEE4X1NO
T1JNIiwKKyAgIkdMX1JHQkE0IjogIkI0RzRSNEE0X1VOT1JNIiwKKyAgIkdMX1NSR0I4IjogIlI4
RzhCOEE4X1VOT1JNX1NSR0IiLAorICAiR0xfU1RFTkNJTF9JTkRFWDgiOiAiRDI0X1VOT1JNX1M4
X1VJTlQiLAorICAiR0xfUkdCMTZfRVhUIjogIlIxNkcxNkIxNkExNl9VTk9STSIsCisgICJHTF9S
R0JBMTZfRVhUIjogIlIxNkcxNkIxNkExNl9VTk9STSIsCisgICJHTF9SR0IxNl9TTk9STV9FWFQi
OiAiUjE2RzE2QjE2QTE2X1NOT1JNIiwKKyAgIkdMX1JHQjMyRiI6ICJSMzJHMzJCMzJBMzJfRkxP
QVQiLAorICAiR0xfUkdCMzJJIjogIlIzMkczMkIzMkEzMl9TSU5UIiwKKyAgIkdMX1JHQjMyVUki
OiAiUjMyRzMyQjMyQTMyX1VJTlQiCiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3Rl
eHR1cmVfZm9ybWF0X3RhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACisv
LworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworLy8gSGVscGVyIHJvdXRpbmVzIGZvciB0aGUgRDNEMTEgdGV4dHVyZSBmb3JtYXQg
dGFibGUuCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9m
b3JtYXRfdGFibGUuaCIKKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2xvYWRfZnVuY3Rp
b25zX3RhYmxlLmgiCisKK25hbWVzcGFjZSByeAoreworCituYW1lc3BhY2UgZDNkMTEKK3sKKwor
Rm9ybWF0OjpGb3JtYXQoKQorICAgIDogaW50ZXJuYWxGb3JtYXQoR0xfTk9ORSksCisgICAgICBm
b3JtYXQoYW5nbGU6OkZvcm1hdDo6R2V0KGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FKSksCisgICAg
ICB0ZXhGb3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiksCisgICAgICBzcnZGb3JtYXQoRFhHSV9G
T1JNQVRfVU5LTk9XTiksCisgICAgICBydHZGb3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiksCisg
ICAgICBkc3ZGb3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiksCisgICAgICBibGl0U1JWRm9ybWF0
KERYR0lfRk9STUFUX1VOS05PV04pLAorICAgICAgc3dpenpsZSgqdGhpcyksCisgICAgICBkYXRh
SW5pdGlhbGl6ZXJGdW5jdGlvbihudWxscHRyKQoreworfQorCitGb3JtYXQ6OkZvcm1hdChHTGVu
dW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRCBmb3Jt
YXRJRCwKKyAgICAgICAgICAgICAgIERYR0lfRk9STUFUIHRleEZvcm1hdCwKKyAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUIHNydkZvcm1hdCwKKyAgICAgICAgICAgICAgIERYR0lfRk9STUFUIHJ0
dkZvcm1hdCwKKyAgICAgICAgICAgICAgIERYR0lfRk9STUFUIGRzdkZvcm1hdCwKKyAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUIGJsaXRTUlZGb3JtYXQsCisgICAgICAgICAgICAgICBHTGVudW0g
c3dpenpsZUZvcm1hdCwKKyAgICAgICAgICAgICAgIEluaXRpYWxpemVUZXh0dXJlRGF0YUZ1bmN0
aW9uIGludGVybmFsRm9ybWF0SW5pdGlhbGl6ZXIsCisgICAgICAgICAgICAgICBjb25zdCBSZW5k
ZXJlcjExRGV2aWNlQ2FwcyAmZGV2aWNlQ2FwcykKKyAgICA6IGludGVybmFsRm9ybWF0KGludGVy
bmFsRm9ybWF0KSwKKyAgICAgIGZvcm1hdChhbmdsZTo6Rm9ybWF0OjpHZXQoZm9ybWF0SUQpKSwK
KyAgICAgIHRleEZvcm1hdCh0ZXhGb3JtYXQpLAorICAgICAgc3J2Rm9ybWF0KHNydkZvcm1hdCks
CisgICAgICBydHZGb3JtYXQocnR2Rm9ybWF0KSwKKyAgICAgIGRzdkZvcm1hdChkc3ZGb3JtYXQp
LAorICAgICAgYmxpdFNSVkZvcm1hdChibGl0U1JWRm9ybWF0KSwKKyAgICAgIHN3aXp6bGUoc3dp
enpsZUZvcm1hdCA9PSBpbnRlcm5hbEZvcm1hdCA/ICp0aGlzIDogRm9ybWF0OjpHZXQoc3dpenps
ZUZvcm1hdCwgZGV2aWNlQ2FwcykpLAorICAgICAgZGF0YUluaXRpYWxpemVyRnVuY3Rpb24oaW50
ZXJuYWxGb3JtYXRJbml0aWFsaXplciksCisgICAgICBsb2FkRnVuY3Rpb25zKEdldExvYWRGdW5j
dGlvbnNNYXAoaW50ZXJuYWxGb3JtYXQsIGZvcm1hdElEKSkKK3sKK30KKworfSAgLy8gbmFtZXNw
YWNlIGQzZDExCisKK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJs
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfdGFibGUuaAkocmV2aXNpb24gMjA4MDIx
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw4ICsxNCw5
IEBACiAKICNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgogI2luY2x1ZGUgImNvbW1vbi9w
bGF0Zm9ybS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdC5oIgorI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3JlbmRlcmVyX3V0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvZDNkL2Zvcm1hdHV0aWxzRDNELmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlX2F1dG9nZW4uaCIKIAogbmFtZXNw
YWNlIHJ4CiB7CkBAIC0yNSw0MCArMjYsMjkgQEAKIG5hbWVzcGFjZSBkM2QxMQogewogCi1zdHJ1
Y3QgTG9hZEltYWdlRnVuY3Rpb25JbmZvCisvLyBGb3Igc2l6ZWQgR0wgaW50ZXJuYWwgZm9ybWF0
cywgdGhlcmUgYXJlIHNldmVyYWwgcG9zc2libGUgY29ycmVzcG9uZGluZyBEM0QxMSBmb3JtYXRz
IGRlcGVuZGluZworLy8gb24gZGV2aWNlIGNhcGFiaWxpdGllcy4KKy8vIFRoaXMgc3RydWN0dXJl
IGFsbG93cyBxdWVyeWluZyBmb3IgdGhlIERYR0kgdGV4dHVyZSBmb3JtYXRzIHRvIHVzZSBmb3Ig
dGV4dHVyZXMsIFNSVnMsIFJUVnMgYW5kCisvLyBEU1ZzIGdpdmVuIGEgR0wgaW50ZXJuYWwgZm9y
bWF0Lgorc3RydWN0IEZvcm1hdCBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogewotICAgIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbygpIDogbG9hZEZ1bmN0aW9uKG51bGxwdHIpLCByZXF1aXJlc0Nv
bnZlcnNpb24oZmFsc2UpIHt9Ci0gICAgTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRJbWFnZUZ1
bmN0aW9uIGxvYWRGdW5jdGlvbiwgYm9vbCByZXF1aXJlc0NvbnZlcnNpb24pCi0gICAgICAgIDog
bG9hZEZ1bmN0aW9uKGxvYWRGdW5jdGlvbiksIHJlcXVpcmVzQ29udmVyc2lvbihyZXF1aXJlc0Nv
bnZlcnNpb24pCi0gICAgewotICAgIH0KKyAgICBGb3JtYXQoKTsKKyAgICBGb3JtYXQoR0xlbnVt
IGludGVybmFsRm9ybWF0LAorICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRCBmb3JtYXRJRCwK
KyAgICAgICAgICAgRFhHSV9GT1JNQVQgdGV4Rm9ybWF0LAorICAgICAgICAgICBEWEdJX0ZPUk1B
VCBzcnZGb3JtYXQsCisgICAgICAgICAgIERYR0lfRk9STUFUIHJ0dkZvcm1hdCwKKyAgICAgICAg
ICAgRFhHSV9GT1JNQVQgZHN2Rm9ybWF0LAorICAgICAgICAgICBEWEdJX0ZPUk1BVCBibGl0U1JW
Rm9ybWF0LAorICAgICAgICAgICBHTGVudW0gc3dpenpsZUZvcm1hdCwKKyAgICAgICAgICAgSW5p
dGlhbGl6ZVRleHR1cmVEYXRhRnVuY3Rpb24gaW50ZXJuYWxGb3JtYXRJbml0aWFsaXplciwKKyAg
ICAgICAgICAgY29uc3QgUmVuZGVyZXIxMURldmljZUNhcHMgJmRldmljZUNhcHMpOwogCi0gICAg
TG9hZEltYWdlRnVuY3Rpb24gbG9hZEZ1bmN0aW9uOwotICAgIGJvb2wgcmVxdWlyZXNDb252ZXJz
aW9uOwotfTsKKyAgICBzdGF0aWMgY29uc3QgRm9ybWF0ICZHZXQoR0xlbnVtIGludGVybmFsRm9y
bWF0LCBjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmZGV2aWNlQ2Fwcyk7CiAKLXN0cnVjdCBB
TkdMRUZvcm1hdFNldAotewotICAgIEFOR0xFRm9ybWF0U2V0KCk7Ci0gICAgQU5HTEVGb3JtYXRT
ZXQoQU5HTEVGb3JtYXQgZm9ybWF0LAotICAgICAgICAgICAgICAgICAgIEdMZW51bSBnbEludGVy
bmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUIHRleEZvcm1hdCwKLSAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVCBzcnZGb3JtYXQsCi0gICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVQgcnR2Rm9ybWF0LAotICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
IGRzdkZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVCBibGl0U1JWRm9ybWF0
LAotICAgICAgICAgICAgICAgICAgIEFOR0xFRm9ybWF0IHN3aXp6bGVGb3JtYXQsCi0gICAgICAg
ICAgICAgICAgICAgTWlwR2VuZXJhdGlvbkZ1bmN0aW9uIG1pcEdlbmVyYXRpb25GdW5jdGlvbiwK
LSAgICAgICAgICAgICAgICAgICBDb2xvclJlYWRGdW5jdGlvbiBjb2xvclJlYWRGdW5jdGlvbik7
Ci0gICAgQU5HTEVGb3JtYXRTZXQoY29uc3QgQU5HTEVGb3JtYXRTZXQgJikgPSBkZWZhdWx0Owot
ICAgIEFOR0xFRm9ybWF0U2V0ICZvcGVyYXRvcj0oY29uc3QgQU5HTEVGb3JtYXRTZXQgJikgPSBk
ZWZhdWx0OworICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdDsKKyAgICBjb25zdCBhbmdsZTo6Rm9y
bWF0ICZmb3JtYXQ7CiAKLSAgICBBTkdMRUZvcm1hdCBmb3JtYXQ7Ci0KLSAgICAvLyBUaGUgY2xv
c2VzdCBtYXRjaGluZyBHTCBpbnRlcm5hbCBmb3JtYXQgZm9yIHRoZSBEWEdJIGZvcm1hdHMgdGhp
cyBmb3JtYXQgdXNlcy4gTm90ZSB0aGF0IHRoaXMKLSAgICAvLyBtYXkgYmUgYSBkaWZmZXJlbnQg
aW50ZXJuYWwgZm9ybWF0IHRoYW4gdGhlIG9uZSB0aGlzIEFOR0xFIGZvcm1hdCBpcyB1c2VkIGZv
ci4KLSAgICBHTGVudW0gZ2xJbnRlcm5hbEZvcm1hdDsKLQogICAgIERYR0lfRk9STUFUIHRleEZv
cm1hdDsKICAgICBEWEdJX0ZPUk1BVCBzcnZGb3JtYXQ7CiAgICAgRFhHSV9GT1JNQVQgcnR2Rm9y
bWF0OwpAQCAtNjYsMzIgKzU2LDEzIEBACiAKICAgICBEWEdJX0ZPUk1BVCBibGl0U1JWRm9ybWF0
OwogCi0gICAgQU5HTEVGb3JtYXQgc3dpenpsZUZvcm1hdDsKKyAgICBjb25zdCBGb3JtYXQgJnN3
aXp6bGU7CiAKLSAgICBNaXBHZW5lcmF0aW9uRnVuY3Rpb24gbWlwR2VuZXJhdGlvbkZ1bmN0aW9u
OwotICAgIENvbG9yUmVhZEZ1bmN0aW9uIGNvbG9yUmVhZEZ1bmN0aW9uOwotfTsKLQotc3RydWN0
IFRleHR1cmVGb3JtYXQgOiBwdWJsaWMgYW5nbGU6Ok5vbkNvcHlhYmxlCi17Ci0gICAgVGV4dHVy
ZUZvcm1hdChHTGVudW0gaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICBjb25zdCBB
TkdMRUZvcm1hdCBhbmdsZUZvcm1hdCwKLSAgICAgICAgICAgICAgICAgIEluaXRpYWxpemVUZXh0
dXJlRGF0YUZ1bmN0aW9uIGludGVybmFsRm9ybWF0SW5pdGlhbGl6ZXIpOwotCi0gICAgY29uc3Qg
QU5HTEVGb3JtYXRTZXQgKmZvcm1hdFNldDsKLSAgICBjb25zdCBBTkdMRUZvcm1hdFNldCAqc3dp
enpsZUZvcm1hdFNldDsKLQogICAgIEluaXRpYWxpemVUZXh0dXJlRGF0YUZ1bmN0aW9uIGRhdGFJ
bml0aWFsaXplckZ1bmN0aW9uOwotICAgIHR5cGVkZWYgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8+IExvYWRGdW5jdGlvbk1hcDsKIAogICAgIExvYWRGdW5jdGlvbk1hcCBs
b2FkRnVuY3Rpb25zOwogfTsKIAotY29uc3QgQU5HTEVGb3JtYXRTZXQgJkdldEFOR0xFRm9ybWF0
U2V0KEFOR0xFRm9ybWF0IGFuZ2xlRm9ybWF0KTsKLQotY29uc3QgVGV4dHVyZUZvcm1hdCAmR2V0
VGV4dHVyZUZvcm1hdEluZm8oR0xlbnVtIGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVuZGVyZXIxMURldmljZUNhcHMgJnJl
bmRlcmVyMTFEZXZpY2VDYXBzKTsKLQogfSAgLy8gbmFtZXNwYWNlIGQzZDExCiAKIH0gIC8vIG5h
bWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZV9hdXRvZ2VuLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlX2F1dG9nZW4uY3BwCShyZXZpc2lvbiAyMDgwMjEp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlX2F1dG9nZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDcgKzEsNyBAQAogLy8gR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVC4KIC8vIEdlbmVyYXRl
ZCBieSBnZW5fdGV4dHVyZV9mb3JtYXRfdGFibGUucHkgdXNpbmcgZGF0YSBmcm9tIHRleHR1cmVf
Zm9ybWF0X2RhdGEuanNvbgogLy8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0xMSwxMyArMTEsMTYgQEAK
IAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90
YWJsZS5oIgogCisjaW5jbHVkZSAiaW1hZ2VfdXRpbC9jb3B5aW1hZ2UuaCIKKyNpbmNsdWRlICJp
bWFnZV91dGlsL2dlbmVyYXRlbWlwLmgiCisjaW5jbHVkZSAiaW1hZ2VfdXRpbC9sb2FkaW1hZ2Uu
aCIKKwogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9mb3JtYXR1dGlsczEx
LmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2xvYWRfZnVuY3Rpb25z
X3RhYmxlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVy
MTFfdXRpbHMuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvY29weWltYWdlLmgi
Ci0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2dlbmVyYXRlbWlwLmgiCi0jaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2xvYWRpbWFnZS5oIgorI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZV91dGlscy5oIgogCit1c2lu
ZyBuYW1lc3BhY2UgYW5nbGU7CisKIG5hbWVzcGFjZSByeAogewogCkBAIC0yNCwxODM2ICsyNywx
OTE2IEBACiBuYW1lc3BhY2UgZDNkMTEKIHsKIAotbmFtZXNwYWNlCisvLyBzdGF0aWMKK2NvbnN0
IEZvcm1hdCAmRm9ybWF0OjpHZXQoR0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBSZW5kZXJl
cjExRGV2aWNlQ2FwcyAmZGV2aWNlQ2FwcykKIHsKLQotdHlwZWRlZiBib29sICgqRm9ybWF0U3Vw
cG9ydEZ1bmN0aW9uKShjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmKTsKLQotYm9vbCBPbmx5
RkwxMFBsdXMoY29uc3QgUmVuZGVyZXIxMURldmljZUNhcHMgJmRldmljZUNhcHMpCi17Ci0gICAg
cmV0dXJuIChkZXZpY2VDYXBzLmZlYXR1cmVMZXZlbCA+PSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8w
KTsKLX0KLQotYm9vbCBPbmx5Rkw5XzMoY29uc3QgUmVuZGVyZXIxMURldmljZUNhcHMgJmRldmlj
ZUNhcHMpCi17Ci0gICAgcmV0dXJuIChkZXZpY2VDYXBzLmZlYXR1cmVMZXZlbCA9PSBEM0RfRkVB
VFVSRV9MRVZFTF85XzMpOwotfQotCi10ZW1wbGF0ZSA8RFhHSV9GT1JNQVQgZm9ybWF0LCBib29s
IHJlcXVpcmVTdXBwb3J0PgotYm9vbCBTdXBwb3J0c0Zvcm1hdChjb25zdCBSZW5kZXJlcjExRGV2
aWNlQ2FwcyAmZGV2aWNlQ2FwcykKLXsKLSAgICAvLyBNdXN0IHN1cHBvcnQgdGV4dHVyZSwgU1JW
IGFuZCBSVFYgc3VwcG9ydAotICAgIFVJTlQgbXVzdFN1cHBvcnQgPSBEM0QxMV9GT1JNQVRfU1VQ
UE9SVF9URVhUVVJFMkQgfCBEM0QxMV9GT1JNQVRfU1VQUE9SVF9URVhUVVJFQ1VCRSB8Ci0gICAg
ICAgICAgICAgICAgICAgICAgIEQzRDExX0ZPUk1BVF9TVVBQT1JUX1NIQURFUl9TQU1QTEUgfCBE
M0QxMV9GT1JNQVRfU1VQUE9SVF9NSVAgfAotICAgICAgICAgICAgICAgICAgICAgICBEM0QxMV9G
T1JNQVRfU1VQUE9SVF9SRU5ERVJfVEFSR0VUOwotCi0gICAgaWYgKGQzZDExX2dsOjpHZXRNYXhp
bXVtQ2xpZW50VmVyc2lvbihkZXZpY2VDYXBzLmZlYXR1cmVMZXZlbCkgPiAyKQotICAgIHsKLSAg
ICAgICAgbXVzdFN1cHBvcnQgfD0gRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRTNEOwotICAg
IH0KLQotICAgIGJvb2wgZnVsbFN1cHBvcnQgPSBmYWxzZTsKLSAgICBpZiAoZm9ybWF0ID09IERY
R0lfRk9STUFUX0I1RzZSNV9VTk9STSkKLSAgICB7Ci0gICAgICAgIC8vIEFsbCBoYXJkd2FyZSB0
aGF0IHN1cHBvcnRzIERYR0lfRk9STUFUX0I1RzZSNV9VTk9STSBzaG91bGQgc3VwcG9ydCBhdXRv
Z2VuIG1pcG1hcHMsIGJ1dAotICAgICAgICAvLyBjaGVjayBhbnl3YXkuCi0gICAgICAgIG11c3RT
dXBwb3J0IHw9IEQzRDExX0ZPUk1BVF9TVVBQT1JUX01JUF9BVVRPR0VOOwotICAgICAgICBmdWxs
U3VwcG9ydCA9ICgoZGV2aWNlQ2Fwcy5CNUc2UjVzdXBwb3J0ICYgbXVzdFN1cHBvcnQpID09IG11
c3RTdXBwb3J0KTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoZm9ybWF0ID09IERYR0lfRk9STUFUX0I0
RzRSNEE0X1VOT1JNKQotICAgIHsKLSAgICAgICAgZnVsbFN1cHBvcnQgPSAoKGRldmljZUNhcHMu
QjRHNFI0QTRzdXBwb3J0ICYgbXVzdFN1cHBvcnQpID09IG11c3RTdXBwb3J0KTsKLSAgICB9Ci0g
ICAgZWxzZSBpZiAoZm9ybWF0ID09IERYR0lfRk9STUFUX0I1RzVSNUExX1VOT1JNKQotICAgIHsK
LSAgICAgICAgZnVsbFN1cHBvcnQgPSAoKGRldmljZUNhcHMuQjVHNVI1QTFzdXBwb3J0ICYgbXVz
dFN1cHBvcnQpID09IG11c3RTdXBwb3J0KTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8v
IFRoaXMgJ1N1cHBvcnRzRm9ybWF0JyBmdW5jdGlvbiBpcyB1c2VkIGJ5IGluZGl2aWR1YWwgZW50
cmllcyBpbiB0aGUgRDNEMTEgRm9ybWF0IE1hcCBiZWxvdywKLSAgICAvLyB3aGljaCBtYXBzIEdM
IGZvcm1hdHMgdG8gRFhHSSBmb3JtYXRzLgotICAgIGlmIChyZXF1aXJlU3VwcG9ydCkKLSAgICB7
Ci0gICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCBBTkdMRSB3b3VsZCBsaWtlIHRvIHVzZSB0aGUg
ZW50cnkgaW4gdGhlIG1hcCBpZiB0aGUgaW5wdXR0ZWQgRFhHSSBmb3JtYXQKLSAgICAgICAgLy8g
KklTKiBzdXBwb3J0ZWQuCi0gICAgICAgIC8vIGUuZy4gdGhlIGVudHJ5IG1pZ2h0IG1hcCBHTF9S
R0I1X0ExIHRvIERYR0lfRk9STUFUX0I1RzVSNUExLCB3aGljaCBzaG91bGQgb25seSBiZSB1c2Vk
IGlmCi0gICAgICAgIC8vIERYR0lfRk9STUFUX0I1RzVSNUExIGlzIHN1cHBvcnRlZC4KLSAgICAg
ICAgLy8gSW4gdGhpcyBjYXNlLCB3ZSBzaG91bGQgb25seSByZXR1cm4gJ3RydWUnIGlmIHRoZSBm
b3JtYXQgKklTKiBzdXBwb3J0ZWQuCi0gICAgICAgIHJldHVybiBmdWxsU3VwcG9ydDsKLSAgICB9
Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IEFOR0xFIHdvdWxk
IGxpa2UgdG8gdXNlIHRoZSBlbnRyeSBpbiB0aGUgbWFwIGlmIHRoZSBpbnB1dHRlZCBEWEdJIGZv
cm1hdAotICAgICAgICAvLyAqSVNOJ1QqIHN1cHBvcnRlZC4KLSAgICAgICAgLy8gVGhpcyBtaWdo
dCBiZSBhIGZhbGxiYWNrIGVudHJ5LiBlLmcuIGZvciBBTkdMRSB0byB1c2UgRFhHSV9GT1JNQVRf
UjhHOEI4QThfVU5PUk0gaWYKLSAgICAgICAgLy8gRFhHSV9GT1JNQVRfQjVHNVI1QTEgaXNuJ3Qg
c3VwcG9ydGVkLgotICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIHdlIHNob3VsZCBvbmx5IHJldHVy
biAndHJ1ZScgaWYgdGhlIGZvcm1hdCAqSVNOJ1QqIHN1cHBvcnRlZC4KLSAgICAgICAgcmV0dXJu
ICFmdWxsU3VwcG9ydDsKLSAgICB9Ci19Ci0KLS8vIEVuZCBGb3JtYXQgU3VwcG9ydCBGdW5jdGlv
bnMKLX0gIC8vIG5hbWVzcGFjZQotCi1BTkdMRUZvcm1hdFNldDo6QU5HTEVGb3JtYXRTZXQoKQot
ICAgIDogZm9ybWF0KEFOR0xFX0ZPUk1BVF9OT05FKSwKLSAgICAgIGdsSW50ZXJuYWxGb3JtYXQo
R0xfTk9ORSksCi0gICAgICB0ZXhGb3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiksCi0gICAgICBz
cnZGb3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiksCi0gICAgICBydHZGb3JtYXQoRFhHSV9GT1JN
QVRfVU5LTk9XTiksCi0gICAgICBkc3ZGb3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiksCi0gICAg
ICBibGl0U1JWRm9ybWF0KERYR0lfRk9STUFUX1VOS05PV04pLAotICAgICAgc3dpenpsZUZvcm1h
dChBTkdMRV9GT1JNQVRfTk9ORSksCi0gICAgICBtaXBHZW5lcmF0aW9uRnVuY3Rpb24obnVsbHB0
ciksCi0gICAgICBjb2xvclJlYWRGdW5jdGlvbihudWxscHRyKQotewotfQotCi0vLyBGb3Igc2l6
ZWQgR0wgaW50ZXJuYWwgZm9ybWF0cywgdGhlcmUgYXJlIHNldmVyYWwgcG9zc2libGUgY29ycmVz
cG9uZGluZyBEM0QxMSBmb3JtYXRzIGRlcGVuZGluZwotLy8gb24gZGV2aWNlIGNhcGFiaWxpdGll
cy4KLS8vIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHF1ZXJ5aW5nIGZvciB0aGUgRFhHSSB0ZXh0dXJl
IGZvcm1hdHMgdG8gdXNlIGZvciB0ZXh0dXJlcywgU1JWcywgUlRWcyBhbmQKLS8vIERTVnMgZ2l2
ZW4gYSBHTCBpbnRlcm5hbCBmb3JtYXQuCi1UZXh0dXJlRm9ybWF0OjpUZXh0dXJlRm9ybWF0KEdM
ZW51bSBpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
QU5HTEVGb3JtYXQgYW5nbGVGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIElu
aXRpYWxpemVUZXh0dXJlRGF0YUZ1bmN0aW9uIGludGVybmFsRm9ybWF0SW5pdGlhbGl6ZXIpCi0g
ICAgOiBkYXRhSW5pdGlhbGl6ZXJGdW5jdGlvbihpbnRlcm5hbEZvcm1hdEluaXRpYWxpemVyKQot
ewotICAgIGZvcm1hdFNldCAgICAgICAgPSAmR2V0QU5HTEVGb3JtYXRTZXQoYW5nbGVGb3JtYXQp
OwotICAgIHN3aXp6bGVGb3JtYXRTZXQgPSAmR2V0QU5HTEVGb3JtYXRTZXQoZm9ybWF0U2V0LT5z
d2l6emxlRm9ybWF0KTsKLQotICAgIC8vIEdhdGhlciBhbGwgdGhlIGxvYWQgZnVuY3Rpb25zIGZv
ciB0aGlzIGludGVybmFsIGZvcm1hdAotICAgIGxvYWRGdW5jdGlvbnMgPSBHZXRMb2FkRnVuY3Rp
b25zTWFwKGludGVybmFsRm9ybWF0LCBmb3JtYXRTZXQtPnRleEZvcm1hdCk7Ci0KLSAgICBBU1NF
UlQobG9hZEZ1bmN0aW9ucy5zaXplKCkgIT0gMCB8fCBpbnRlcm5hbEZvcm1hdCA9PSBHTF9OT05F
KTsKLX0KLQotQU5HTEVGb3JtYXRTZXQ6OkFOR0xFRm9ybWF0U2V0KEFOR0xFRm9ybWF0IGZvcm1h
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZ2xJbnRlcm5hbEZvcm1h
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVCB0ZXhGb3JtYXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVQgc3J2Rm9ybWF0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUIHJ0dkZvcm1hdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVCBkc3ZGb3JtYXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVQgYmxpdFNSVkZvcm1hdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRUZvcm1hdCBzd2l6emxlRm9ybWF0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pcEdlbmVyYXRpb25GdW5jdGlvbiBtaXBH
ZW5lcmF0aW9uRnVuY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3JS
ZWFkRnVuY3Rpb24gY29sb3JSZWFkRnVuY3Rpb24pCi0gICAgOiBmb3JtYXQoZm9ybWF0KSwKLSAg
ICAgIGdsSW50ZXJuYWxGb3JtYXQoZ2xJbnRlcm5hbEZvcm1hdCksCi0gICAgICB0ZXhGb3JtYXQo
dGV4Rm9ybWF0KSwKLSAgICAgIHNydkZvcm1hdChzcnZGb3JtYXQpLAotICAgICAgcnR2Rm9ybWF0
KHJ0dkZvcm1hdCksCi0gICAgICBkc3ZGb3JtYXQoZHN2Rm9ybWF0KSwKLSAgICAgIGJsaXRTUlZG
b3JtYXQoYmxpdFNSVkZvcm1hdCksCi0gICAgICBzd2l6emxlRm9ybWF0KHN3aXp6bGVGb3JtYXQp
LAotICAgICAgbWlwR2VuZXJhdGlvbkZ1bmN0aW9uKG1pcEdlbmVyYXRpb25GdW5jdGlvbiksCi0g
ICAgICBjb2xvclJlYWRGdW5jdGlvbihjb2xvclJlYWRGdW5jdGlvbikKLXsKLX0KLQotY29uc3Qg
QU5HTEVGb3JtYXRTZXQgJkdldEFOR0xFRm9ybWF0U2V0KEFOR0xFRm9ybWF0IGFuZ2xlRm9ybWF0
KQotewogICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKLSAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQor
ICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCiAgICAgewotICAgICAgICBjYXNlIEFOR0xFX0ZP
Uk1BVF9BOF9VTk9STToKKyAgICAgICAgY2FzZSBHTF9BTFBIQTE2Rl9FWFQ6CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xF
X0ZPUk1BVF9BOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX0FMUEhBOF9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9BOF9VTk9STSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0E4X1VO
T1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfQThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQThfVU5PUk0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9G
T1JNQVRfUjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxBOD4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8QTgsIEdMZmxvYXQ+KTsKLSAg
ICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZv
cm1hdCBpbmZvKEdMX0FMUEhBMTZGX0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9B
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZH
MTZCMTZBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNkYsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9
Ci0gICAgICAgIGNhc2UgQU5HTEVfRk9STUFUX0I0RzRSNEE0X1VOT1JNOgorICAgICAgICBjYXNl
IEdMX0FMUEhBMzJGX0VYVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFO
R0xFRm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX0I0RzRSNEE0X1VOT1JNLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9CNEc0UjRBNF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I0RzRSNEE0X1VOT1JNLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjRH
NFI0QTRfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjRHNFI0QTRfVU5PUk0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JN
QVRfQjRHNFI0QTRfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxBNFI0RzRCND4sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8QTRSNEc0QjQsIEdMZmxv
YXQ+KTsKLSAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IEZvcm1hdCBpbmZvKEdMX0FMUEhBMzJGX0VYVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjMyRzMyQjMyQTMyX0ZMT0FULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIz
MkEzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEzMkYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwog
ICAgICAgICB9Ci0gICAgICAgIGNhc2UgQU5HTEVfRk9STUFUX0I1RzVSNUExX1VOT1JNOgorICAg
ICAgICBjYXNlIEdMX0FMUEhBOF9FWFQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9CNUc1UjVBMV9VTk9S
TSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X1JHQjVfQTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9CNUc1UjVBMV9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I1RzVSNUExX1VOT1JNLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfQjVHNVI1QTFfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjVHNVI1QTFfVU5P
Uk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
TkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxBMVI1RzVCNT4sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8QTFSNUc1
QjUsIEdMZmxvYXQ+KTsKLSAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOworICAgICAgICAg
ICAgaWYgKE9ubHlGTDEwUGx1cyhkZXZpY2VDYXBzKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQUxQSEE4X0VYVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkE4X1VO
T1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9BOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfQThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX0E4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9BOF9VTk9STSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgICAgIHJldHVybiBpbmZvOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9BTFBIQThfRVhULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4
QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhC
OEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9S
R0JBOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAg
ICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfQjVHNlI1X1VOT1JNOgorICAgICAgICBjYXNlIEdMX0JH
UjU2NV9BTkdMRVg6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZv
cm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9CNUc2UjVfVU5PUk0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0I1NjUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9CNUc2UjVfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNUc2UjVfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNUc2UjVfVU5PUk0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VO
T1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R2VuZXJhdGVNaXA8UjVHNkI1PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSNUc2QjUsIEdMZmxvYXQ+KTsKLSAgICAgICAgICAg
IHJldHVybiBmb3JtYXRJbmZvOworICAgICAgICAgICAgaWYgKFN1cHBvcnRzRm9ybWF0KERYR0lf
Rk9STUFUX0I1RzZSNV9VTk9STSwgZGV2aWNlQ2FwcykpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0JHUjU2NV9BTkdMRVgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpC
NUc2UjVfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX0I1RzZSNV9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNUc2UjVfVU5PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I1RzZSNV9V
Tk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAg
ICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhH
TF9CR1I1NjVfQU5HTEVYLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9V
Tk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGluZm87Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfQjhHOFI4
QThfVU5PUk06CisgICAgICAgIGNhc2UgR0xfQkdSNV9BMV9BTkdMRVg6CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZP
Uk1BVF9COEc4UjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX0JHUkE4X0VYVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfQjhHOFI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9COEc4UjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPEI4
RzhSOEE4PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJlYWRDb2xvcjxCOEc4UjhBOCwgR0xmbG9hdD4pOwotICAgICAgICAgICAgcmV0dXJuIGZv
cm1hdEluZm87CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQkdSNV9B
MV9BTkdMRVgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZv
cm1hdDo6SUQ6OkI4RzhSOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjhHOFI4QThf
VU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQkdSQThfRVhU
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQotICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9CQzFfVU5P
Uk06CisgICAgICAgIGNhc2UgR0xfQkdSQTRfQU5HTEVYOgogICAgICAgICB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfQkMx
X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzFfVU5PUk0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9CQzFfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JD
MV9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgIHJl
dHVybiBmb3JtYXRJbmZvOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdM
X0JHUkE0X0FOR0xFWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmds
ZTo6Rm9ybWF0OjpJRDo6QjhHOFI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9COEc4
UjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9CR1JB
OF9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAg
ICAgIHJldHVybiBpbmZvOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQU5HTEVfRk9STUFUX0JD
Ml9VTk9STToKKyAgICAgICAgY2FzZSBHTF9CR1JBOF9FWFQ6CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9C
QzJfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMyX1VOT1JN
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfQkMyX1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9CQzJfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAg
ICByZXR1cm4gZm9ybWF0SW5mbzsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5m
byhHTF9CR1JBOF9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5n
bGU6OkZvcm1hdDo6SUQ6OkI4RzhSOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JN
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjhH
OFI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQkdS
QThfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQotICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9C
QzNfVU5PUk06CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SMTFfRUFDOgogICAgICAgICB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdM
RV9GT1JNQVRfQkMzX1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X0JDM19VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX0JDM19VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktO
T1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfQkMzX1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwot
ICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
Rm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SMTFfRUFDLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOF9VTk9STSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9VTk9STSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9VTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9VTk9STSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4X1VOT1JN
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5m
bzsKICAgICAgICAgfQotICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9EMTZfVU5PUk1fRkwxMDoK
KyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHMTFfRUFDOgogICAgICAgICB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRf
RDE2X1VOT1JNX0ZMMTAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9ERVBUSF9DT01QT05FTlQxNiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9UWVBFTEVTUywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1IxNl9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMTZfVU5PUk0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
MTZfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBTkdMRV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAg
ICAgcmV0dXJuIGZvcm1hdEluZm87CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGlu
Zm8oR0xfQ09NUFJFU1NFRF9SRzExX0VBQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOF9VTk9STSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1VOT1JNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfVU5PUk0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9VTk9STSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfVU5P
Uk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQU5HTEVfRk9STUFUX0QxNl9VTk9STV9GTDlf
MzoKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQjhfRVRDMjoKICAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9S
TUFUX0QxNl9VTk9STV9GTDlfMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX0RFUFRIX0NPTVBPTkVOVDE2LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfRDE2X1VOT1JNLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMTZfVU5PUk0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAg
IHJldHVybiBmb3JtYXRJbmZvOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZv
KEdMX0NPTVBSRVNTRURfUkdCOF9FVEMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9S
TSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4
QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1JHQkE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRp
YWxpemU0Q29tcG9uZW50RGF0YTxHTHVieXRlLCAweDAwLCAweDAwLCAweDAwLCAweEZGPiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAg
ICAgIHJldHVybiBpbmZvOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQU5HTEVfRk9STUFUX0Qy
NF9VTk9STV9TOF9VSU5UX0ZMMTA6CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0I4X1BV
TkNIVEhST1VHSF9BTFBIQTFfRVRDMjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNv
bnN0IEFOR0xFRm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX0QyNF9VTk9STV9TOF9V
SU5UX0ZMMTAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9ERVBUSDI0X1NURU5DSUw4X09FUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IyNEc4X1RZUEVMRVNTLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjI0X1VOT1JNX1g4X1RZUEVMRVNTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0QyNF9VTk9S
TV9TOF9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjI0X1VOT1JNX1g4X1RZUEVMRVNTLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IzMkczMkIz
MkEzMl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfUkdCOF9QVU5D
SFRIUk9VR0hfQUxQSEExX0VUQzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4
X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfUkdCQTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6
ZTRDb21wb25lbnREYXRhPEdMdWJ5dGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkY+LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAg
cmV0dXJuIGluZm87CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfRDI0X1VO
T1JNX1M4X1VJTlRfRkw5XzM6CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMy
X0VBQzoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0U2V0
IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5UX0ZMOV8zLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfREVQVEgyNF9T
VEVOQ0lMOF9PRVMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVf
Rk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybiBm
b3JtYXRJbmZvOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBS
RVNTRURfUkdCQThfRVRDMl9FQUMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4
X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfUkdCQTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAg
ICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQU5HTEVfRk9STUFU
X0QzMl9GTE9BVDoKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMF9L
SFI6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBm
b3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9EMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9ERVBUSF9DT01QT05FTlQzMkYsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SMzJfVFlQRUxFU1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
RDMyX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6
Tk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
Tk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAg
ICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfRDMy
X0ZMT0FUX1M4WDI0X1VJTlRfRkwxMDoKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFf
QVNUQ18xMHg1X0tIUjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xF
Rm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX0QzMl9GTE9BVF9TOFgyNF9VSU5UX0ZM
MTAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9ERVBUSDMyRl9TVEVOQ0lMOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkc4WDI0X1RZUEVMRVNTLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMy
X0ZMT0FUX1g4WDI0X1RZUEVMRVNTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0QzMl9GTE9BVF9T
OFgyNF9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjMyX0ZMT0FUX1g4WDI0X1RZUEVMRVNTLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IzMkcz
MkIzMkEzMl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfUkdCQV9B
U1RDXzEweDVfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xl
OjpGb3JtYXQ6OklEOjpOT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fw
cyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQotICAgICAgICBjYXNlIEFO
R0xFX0ZPUk1BVF9OT05FOgorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEw
eDZfS0hSOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRT
ZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfTk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFO
R0xFX0ZPUk1BVF9OT05FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JB
X0FTVENfMTB4Nl9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5n
bGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VD
YXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
QU5HTEVfRk9STUFUX1IxMEcxMEIxMEEyX1VJTlQ6CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NF
RF9SR0JBX0FTVENfMTB4OF9LSFI6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9SMTBHMTBCMTBBMl9VSU5U
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
UkdCMTBfQTJVSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VJTlQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9V
SU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTBH
MTBCMTBBMl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5ULAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjEwRzEwQjEw
QTI+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmVhZENvbG9yPFIxMEcxMEIxMEEyLCBHTHVpbnQ+KTsKLSAgICAgICAgICAgIHJldHVybiBmb3Jt
YXRJbmZvOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNT
RURfUkdCQV9BU1RDXzEweDhfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQotICAgICAg
ICBjYXNlIEFOR0xFX0ZPUk1BVF9SMTBHMTBCMTBBMl9VTk9STToKKyAgICAgICAgY2FzZSBHTF9D
T01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMF9LSFI6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9SMTBHMTBC
MTBBMl9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX1JHQjEwX0EyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVU5PUk0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTBH
MTBCMTBBMl9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VOT1JNLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1IxMEcxMEIxMEEyX1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9VTk9STSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRl
TWlwPFIxMEcxMEIxMEEyPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJlYWRDb2xvcjxSMTBHMTBCMTBBMiwgR0xmbG9hdD4pOwotICAgICAgICAg
ICAgcmV0dXJuIGZvcm1hdEluZm87CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGlu
Zm8oR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQotICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9SMTFHMTFCMTBfRkxPQVQ6CisgICAg
ICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTJfS0hSOgogICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9G
T1JNQVRfUjExRzExQjEwX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfUjExRl9HMTFGX0IxMEYsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTFHMTFCMTBfRkxP
QVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMTFHMTFCMTBfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTFHMTFCMTBfRkxPQVQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjExRzExQjEwX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9G
TE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdlbmVyYXRlTWlwPFIxMUcxMUIxMEY+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIxMUcxMUIxMEYsIEdMZmxvYXQ+KTsKLSAg
ICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZv
cm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZM
T0FUOgorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NF9LSFI6CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZv
KEFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZGLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2
QTE2X0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2
X0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1B
VF9SMTZHMTZCMTZBMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMTZHMTZCMTZBMTZGPiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMTZHMTZC
MTZBMTZGLCBHTGZsb2F0Pik7Ci0gICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180
eDRfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3Jt
YXQ6OklEOjpOT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7Cisg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQotICAgICAgICBjYXNlIEFOR0xFX0ZP
Uk1BVF9SMTZHMTZCMTZBMTZfU0lOVDoKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFf
QVNUQ181eDRfS0hSOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVG
b3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZJ
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1IxNkcxNkIxNkExNl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkEx
Nl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjE2RzE2QjE2QTE2Uz4s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFk
Q29sb3I8UjE2RzE2QjE2QTE2UywgR0xpbnQ+KTsKLSAgICAgICAgICAgIHJldHVybiBmb3JtYXRJ
bmZvOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURf
UkdCQV9BU1RDXzV4NF9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZp
Y2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9Ci0gICAgICAgIGNh
c2UgQU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5UOgorICAgICAgICBjYXNlIEdMX0NPTVBS
RVNTRURfUkdCQV9BU1RDXzV4NV9LSFI6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZf
VUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1JHQkExNlVJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZB
MTZfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IxNkcxNkIxNkExNl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5ULAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjE2
RzE2QjE2QTE2PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJlYWRDb2xvcjxSMTZHMTZCMTZBMTYsIEdMdWludD4pOwotICAgICAgICAgICAgcmV0
dXJuIGZvcm1hdEluZm87CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xf
Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg1X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0K
LSAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNOgorICAgICAgICBj
YXNlIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NV9LSFI6CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9S
MTZHMTZCMTZBMTZfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9OT05FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjE2RzE2QjE2QTE2X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5P
Uk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
ZW5lcmF0ZU1pcDxSMTZHMTZCMTZBMTY+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIxNkcxNkIxNkExNiwgR0xmbG9hdD4pOwot
ICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
Rm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfUjE2RzE2X0ZMT0FUOgor
ICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4Nl9LSFI6CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xF
X0ZPUk1BVF9SMTZHMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9SRzE2RiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNl9GTE9BVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1Ix
NkcxNl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1IxNkcxNl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
MTZHMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBTkdMRV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjE2RzE2Rj4s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFk
Q29sb3I8UjE2RzE2RiwgR0xmbG9hdD4pOwotICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JB
X0FTVENfNng2X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmds
ZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNh
cHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBB
TkdMRV9GT1JNQVRfUjE2RzE2X1NJTlQ6CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JB
X0FTVENfOHg1X0tIUjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xF
Rm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX1IxNkcxNl9TSU5ULAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkcxNkksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SMTZHMTZfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJ
TlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
ZW5lcmF0ZU1pcDxSMTZHMTZTPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMTZHMTZTLCBHTGludD4pOwotICAgICAgICAgICAg
cmV0dXJuIGZvcm1hdEluZm87CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8o
R0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAg
IH0KLSAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfUjE2RzE2X1VJTlQ6CisgICAgICAgIGNhc2Ug
R0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUjoKICAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX1IxNkcx
Nl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfUkcxNlVJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfVUlOVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1IxNkcxNl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNl9VSU5ULAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9S
TUFUX1IxNkcxNkIxNkExNl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjE2RzE2PiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMTZHMTYsIEdMdWlu
dD4pOwotICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0
dXJuIGluZm87CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfUjE2X0ZMT0FU
OgorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OF9LSFI6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFO
R0xFX0ZPUk1BVF9SMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9SMTZGLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X0ZMT0FULAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X0ZM
T0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjE2X0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9GTE9BVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xF
X0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMTZGPiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMTZGLCBHTGZs
b2F0Pik7Ci0gICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05F
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05F
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQotICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9SMTZfU0lO
VDoKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKICAgICAg
ICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZvcm1hdEluZm8o
QU5HTEVfRk9STUFUX1IxNl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfUjE2SSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9TSU5ULAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X1NJ
TlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMTZfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfU0lOVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZP
Uk1BVF9SMTZHMTZCMTZBMTZfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIxNlM+LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIxNlMsIEdMaW50Pik7
Ci0gICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6QkMxX1JHQkFf
VU5PUk1fQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfQkMxX1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX0JDMV9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfQkMxX1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1JHQkE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fw
cyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQotICAgICAgICBjYXNlIEFO
R0xFX0ZPUk1BVF9SMTZfVUlOVDoKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNU
Q19EWFQzX0FOR0xFOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVG
b3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfUjE2X1VJTlQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SMTZVSSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1Ix
Nl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjE2X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfVUlOVCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SMTZfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIxNj4s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFk
Q29sb3I8UjE2LCBHTHVpbnQ+KTsKLSAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfUkdCQV9TM1RD
X0RYVDNfQU5HTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6
OkZvcm1hdDo6SUQ6OkJDMl9SR0JBX1VOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDMl9VTk9STSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzJfVU5PUk0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDMl9VTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAg
ICAgIH0KLSAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FUOgorICAg
ICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xF
X0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJGLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZM
T0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FU
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMzJH
MzJCMzJBMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMzJHMzJCMzJBMzJGPiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMzJHMzJCMzJBMzJG
LCBHTGZsb2F0Pik7Ci0gICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FO
R0xFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6
OklEOjpCQzNfUkdCQV9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9CQzNfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMzX1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzNfVU5PUk0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgQU5HTEVfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5UOgorICAgICAgICBjYXNl
IEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6CiAgICAgICAgIHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9SMzJH
MzJCMzJBMzJfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1JHQkEzMkksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1Iz
MkczMkIzMkEzMl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1NJTlQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjMyRzMyQjMyQTMyX1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjMyRzMyQjMyQTMyX1NJTlQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0
ZU1pcDxSMzJHMzJCMzJBMzJTPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMzJHMzJCMzJBMzJTLCBHTGludD4pOwotICAgICAg
ICAgICAgcmV0dXJuIGZvcm1hdEluZm87CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0
IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6QkMxX1JHQl9VTk9STV9CTE9D
SywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzFf
VU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
QkMxX1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9CQzFfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfUkdCQTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAg
ICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQU5HTEVfRk9STUFU
X1IzMkczMkIzMkEzMl9VSU5UOgorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU0lHTkVEX1Ix
MV9FQUM6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNl
dCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEzMlVJLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjMyRzMyQjMyQTMyX1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1Iz
MkczMkIzMkEzMl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5U
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5H
TEVfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjMyRzMyQjMyQTMyPiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxS
MzJHMzJCMzJBMzIsIEdMdWludD4pOwotICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9TSUdORURf
UjExX0VBQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9y
bWF0OjpJRDo6UjhfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjhfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjhfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1I4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1JHQkE4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQotICAgICAg
ICBjYXNlIEFOR0xFX0ZPUk1BVF9SMzJHMzJfRkxPQVQ6CisgICAgICAgIGNhc2UgR0xfQ09NUFJF
U1NFRF9TSUdORURfUkcxMV9FQUM6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9SMzJHMzJfRkxPQVQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRzMy
RiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1IzMkczMl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkcz
Ml9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjMy
RzMyQjMyQTMyX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjMyRzMyRj4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjMyRzMyRiwgR0xmbG9hdD4p
OwotICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhfU05PUk0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9T
Tk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
OEc4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SOEc4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1JHQkE4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7
CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQotICAgICAgICBjYXNlIEFOR0xF
X0ZPUk1BVF9SMzJHMzJfU0lOVDoKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzEweDEwX0tIUjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IEFOR0xFRm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX1IzMkczMl9TSU5ULAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkczMkks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SMzJHMzJfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMl9TSU5ULAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX1NJ
TlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX1NJTlQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjMyRzMyQjMy
QTMyX1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHZW5lcmF0ZU1pcDxSMzJHMzJTPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMzJHMzJTLCBHTGludD4pOwotICAgICAg
ICAgICAgcmV0dXJuIGZvcm1hdEluZm87CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0
IGluZm8oR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVy
biBpbmZvOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQU5HTEVfRk9STUFUX1IzMkczMl9VSU5U
OgorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFI6
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3Jt
YXRJbmZvKEFOR0xFX0ZPUk1BVF9SMzJHMzJfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHMzJVSSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMl9VSU5U
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjMyRzMyX1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJfVUlOVCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SMzJHMzJfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIz
MkczMj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBSZWFkQ29sb3I8UjMyRzMyLCBHTHVpbnQ+KTsKLSAgICAgICAgICAgIHJldHVybiBmb3JtYXRJ
bmZvOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgQU5HTEVfRk9STUFUX1IzMl9GTE9BVDoKKyAgICAgICAgY2FzZSBHTF9DT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDZfS0hSOgogICAgICAgICB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfUjMy
X0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfUjMyRiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1IzMl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMl9GTE9BVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1Iz
Ml9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfRkxPQVQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjMyRzMy
QjMyQTMyX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR2VuZXJhdGVNaXA8UjMyRj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjMyRiwgR0xmbG9hdD4pOwotICAgICAg
ICAgICAgcmV0dXJuIGZvcm1hdEluZm87CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0
IGluZm8oR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktO
T1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VO
S05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJu
IGluZm87CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfUjMyX1NJTlQ6Cisg
ICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUjoKICAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZvcm1hdElu
Zm8oQU5HTEVfRk9STUFUX1IzMl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfUjMySSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMl9TSU5ULAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMy
X1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SMzJfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfU0lOVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xF
X0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIzMlM+LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIzMlMsIEdMaW50
Pik7Ci0gICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDhfS0hS
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklE
OjpOT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQotICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9S
MzJfVUlOVDoKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEy
eDEwX0tIUjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0
U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX1IzMl9VSU5ULAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjMyVUksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfVUlO
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1IzMl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX1VJTlQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjMyX1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBTkdMRV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMzI+LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9y
PFIzMiwgR0x1aW50Pik7Ci0gICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9B
U1RDXzEyeDEwX0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmds
ZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNh
cHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBB
TkdMRV9GT1JNQVRfUjhHOEI4QThfU0lOVDoKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NS
R0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tIUjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX1I4RzhCOEE4X1NJ
TlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9SR0JBOEksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfU0lOVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1I4RzhCOEE4X1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfU0lOVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xF
X0ZPUk1BVF9SOEc4QjhBOF9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjhHOEI4QThTPiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSOEc4QjhBOFMs
IEdMaW50Pik7Ci0gICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEy
eDEyX0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9y
bWF0OjpJRDo6Tk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
cHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOwor
ICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBBTkdMRV9G
T1JNQVRfUjhHOEI4QThfU05PUk06CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9B
TFBIQThfQVNUQ180eDRfS0hSOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
QU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfUjhHOEI4QThfU05PUk0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JB
OF9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfU05PUk0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1NOT1JNLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9S
TUFUX1I4RzhCOEE4X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjhHOEI4QThTPiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSOEc4QjhBOFMsIEdM
ZmxvYXQ+KTsKLSAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0
X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0
OjpJRDo6Tk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBBTkdMRV9GT1JN
QVRfUjhHOEI4QThfVUlOVDoKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhB
OF9BU1RDXzV4NF9LSFI6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdM
RUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQThVSSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1I4RzhCOEE4X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4
QThfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4
RzhCOEE4X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4QjhBOD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjhHOEI4QTgsIEdMdWludD4pOwot
ICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
Rm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDRfS0hSLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05F
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05F
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQotICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9SOEc4QjhB
OF9VTk9STToKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4
NV9LSFI6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNl
dCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhH
OEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JN
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4
X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR2VuZXJhdGVNaXA8UjhHOEI4QTg+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFI4RzhCOEE4LCBHTGZsb2F0Pik7Ci0gICAg
ICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3Jt
YXQgaW5mbyhHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NV9LSFIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVy
biBpbmZvOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VO
T1JNX05PTlJFTkRFUkFCTEU6CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ182eDVfS0hSOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5H
TEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fTk9OUkVO
REVSQUJMRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1JHQkE4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9S
TSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdM
RV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4QjhBOD4sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjhHOEI4QTgs
IEdMZmxvYXQ+KTsKLSAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
Nng1X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9y
bWF0OjpJRDo6Tk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
cHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOwor
ICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBBTkdMRV9G
T1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQjoKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NS
R0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFI6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9S
TV9TUkdCLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfU1JHQjhfQUxQSEE4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4
RzhCOEE4X1VOT1JNX1NSR0IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk1f
U1JHQiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdlbmVyYXRlTWlwPFI4RzhCOEE4PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSOEc4QjhBOCwgR0xmbG9hdD4pOwotICAgICAg
ICAgICAgcmV0dXJuIGZvcm1hdEluZm87CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0
IGluZm8oR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDZfS0hSLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4g
aW5mbzsKICAgICAgICAgfQotICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9S
TV9TUkdCX05PTlJFTkRFUkFCTEU6CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9B
TFBIQThfQVNUQ184eDVfS0hSOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
QU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JH
Ql9OT05SRU5ERVJBQkxFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfU1JHQjhfQUxQSEE4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0
ZU1pcDxSOEc4QjhBOD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSZWFkQ29sb3I8UjhHOEI4QTgsIEdMZmxvYXQ+KTsKLSAgICAgICAgICAgIHJl
dHVybiBmb3JtYXRJbmZvOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdM
X0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CiAg
ICAgICAgIH0KLSAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfUjhHOF9TSU5UOgorICAgICAgICBj
YXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2X0tIUjoKICAgICAgICAgewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVf
Rk9STUFUX1I4RzhfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1JHOEksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1NJTlQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1NJTlQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SOEc4X1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9TSU5ULAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9S
TUFUX1I4RzhCOEE4X1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4Uz4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjhHOFMsIEdMaW50Pik7Ci0g
ICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBG
b3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4Nl9LSFIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktO
T1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VO
S05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJl
dHVybiBpbmZvOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQU5HTEVfRk9STUFUX1I4RzhfU05P
Uk06CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDhfS0hS
OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9y
bWF0SW5mbyhBTkdMRV9GT1JNQVRfUjhHOF9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHOF9TTk9STSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfU05P
Uk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SOEc4X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SOEc4X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1NOT1JNLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjhHOFM+LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENv
bG9yPFI4RzhTLCBHTGZsb2F0Pik7Ci0gICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzh4OF9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZp
Y2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9Ci0gICAgICAgIGNh
c2UgQU5HTEVfRk9STUFUX1I4RzhfU05PUk1fTk9OUkVOREVSQUJMRToKLSAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9S
TUFUX1I4RzhfU05PUk1fTk9OUkVOREVSQUJMRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHOF9TTk9STSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfU05PUk0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SOEc4X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SOEc4X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1NOT1JNLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjhHOFM+LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9y
PFI4RzhTLCBHTGZsb2F0Pik7Ci0gICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9SOEc4X1VJTlQ6Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZP
Uk1BVF9SOEc4X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9SRzhVSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfVUlOVCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfVUlOVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1I4RzhfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1VJTlQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JN
QVRfUjhHOEI4QThfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFI4Rzg+LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFI4RzgsIEdMdWludD4pOwotICAg
ICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBTkdM
RV9GT1JNQVRfUjhHOF9VTk9STToKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IEFOR0xFRm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX1I4RzhfVU5PUk0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRzgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SOEc4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfVU5PUk0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVy
YXRlTWlwPFI4Rzg+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUmVhZENvbG9yPFI4RzgsIEdMZmxvYXQ+KTsKLSAgICAgICAgICAgIHJldHVybiBm
b3JtYXRJbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQU5HTEVfRk9STUFUX1I4RzhfVU5P
Uk1fTk9OUkVOREVSQUJMRToKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFO
R0xFRm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX1I4RzhfVU5PUk1fTk9OUkVOREVS
QUJMRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1JHOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1I4RzhfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1VOT1JNLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1VOT1JNLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4
X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR2VuZXJhdGVNaXA8UjhHOD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjhHOCwgR0xmbG9hdD4pOwotICAgICAgICAgICAg
cmV0dXJuIGZvcm1hdEluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRf
UjhfU0lOVDoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0
U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX1I4X1NJTlQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SOEksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9TSU5ULAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjhfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1I4X1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhf
U0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjhTPiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSOFMsIEdMaW50
Pik7Ci0gICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIEFOR0xFX0ZPUk1BVF9SOF9TTk9STToKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX1I4X1NOT1JNLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjhf
U05PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SOF9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4X1NOT1JNLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9TTk9STSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVy
YXRlTWlwPFI4Uz4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSZWFkQ29sb3I8UjhTLCBHTGZsb2F0Pik7Ci0gICAgICAgICAgICByZXR1cm4gZm9y
bWF0SW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9SOF9TTk9STV9O
T05SRU5ERVJBQkxFOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVG
b3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfUjhfU05PUk1fTk9OUkVOREVSQUJMRSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1I4
X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjhfU05PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9TTk9STSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfU05PUk0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhHOEI4QThfU05PUk0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5l
cmF0ZU1pcDxSOFM+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUmVhZENvbG9yPFI4UywgR0xmbG9hdD4pOwotICAgICAgICAgICAgcmV0dXJuIGZv
cm1hdEluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfUjhfVUlOVDoK
LSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZvcm1h
dEluZm8oQU5HTEVfRk9STUFUX1I4X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9SOFVJLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfVUlOVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4
X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SOF9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4X1VJTlQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9G
T1JNQVRfUjhHOEI4QThfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFI4PiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSOCwgR0x1aW50Pik7Ci0gICAg
ICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEFOR0xF
X0ZPUk1BVF9SOF9VTk9STToKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFO
R0xFRm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX1I4X1VOT1JNLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
OF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1I4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfVU5PUk0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjhfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSOD4sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29s
b3I8UjgsIEdMZmxvYXQ+KTsKLSAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgQU5HTEVfRk9STUFUX1I4X1VOT1JNX05PTlJFTkRFUkFCTEU6Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJ
bmZvKEFOR0xFX0ZPUk1BVF9SOF9VTk9STV9OT05SRU5ERVJBQkxFLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9VTk9S
TSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1I4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFI4PiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSOCwg
R0xmbG9hdD4pOwotICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87Ci0gICAgICAgIH0KLSAg
ICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfUjlHOUI5RTVfU0hBUkVERVhQOgotICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9G
T1JNQVRfUjlHOUI5RTVfU0hBUkVERVhQLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfUkdCOV9FNSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I5RzlCOUU1X1NIQVJFREVY
UCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1I5RzlCOUU1X1NIQVJFREVYUCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktO
T1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjlHOUI5RTVfU0hBUkVERVhQLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9B
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdl
bmVyYXRlTWlwPFI5RzlCOUU1PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSOUc5QjlFNSwgR0xmbG9hdD4pOwotICAgICAgICAg
ICAgcmV0dXJuIGZvcm1hdEluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBTkdMRV9GT1JN
QVRfWDI0X1RZUEVMRVNTX0c4X1VJTlQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9YMjRfVFlQRUxFU1Nf
RzhfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjI0RzhfVFlQRUxFU1MsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9YMjRfVFlQRUxFU1NfRzhfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1f
UzhfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1gyNF9UWVBFTEVTU19HOF9VSU5ULAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IzMkczMkIzMkEz
Ml9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICAv
LyBjbGFuZy1mb3JtYXQgb24KLQotICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgc3RhdGljIGNvbnN0
IEFOR0xFRm9ybWF0U2V0IGRlZmF1bHRJbmZvOwotICAgIHJldHVybiBkZWZhdWx0SW5mbzsKLX0K
LQotY29uc3QgVGV4dHVyZUZvcm1hdCAmR2V0VGV4dHVyZUZvcm1hdEluZm8oR0xlbnVtIGludGVy
bmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgUmVuZGVyZXIxMURldmljZUNhcHMgJnJlbmRlcmVyMTFEZXZpY2VDYXBzKQotewotICAgIC8v
IGNsYW5nLWZvcm1hdCBvZmYKLSAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQotICAgIHsKLSAg
ICAgICAgY2FzZSBHTF9BTFBIQToKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKE9ubHlGTDEw
UGx1cyhyZW5kZXJlcjExRGV2aWNlQ2FwcykpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1h
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFOR0xFX0ZPUk1BVF9BOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAgICAgICAgIHJl
dHVybiB0ZXh0dXJlRm9ybWF0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAo
T25seUZMOV8zKHJlbmRlcmVyMTFEZXZpY2VDYXBzKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFs
Rm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9BTFBIQTE2Rl9FWFQ6Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50
ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAg
ICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9B
TFBIQTMyRl9FWFQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJl
Rm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMzJHMzJCMzJB
MzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxwdHIpOwotICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBHTF9BTFBIQThfRVhUOgotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoT25seUZMMTBQbHVzKHJlbmRlcmVyMTFEZXZpY2VDYXBzKSkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0
KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX0E4X1VOT1JNLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBlbHNlIGlmIChPbmx5Rkw5XzMocmVuZGVyZXIxMURldmljZUNhcHMpKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVG
b3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
cHRyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX0JHUjVfQTFfQU5H
TEVYOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0
ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfQjhHOFI4QThfVU5PUk0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIpOwotICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBHTF9CR1JBNF9BTkdMRVg6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1B
VF9COEc4UjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1h
dDsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX0JHUkE4X0VYVDoKLSAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5h
bEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQU5HTEVfRk9STUFUX0I4RzhSOEE4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgIHJl
dHVybiB0ZXh0dXJlRm9ybWF0OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfQkdSQV9FWFQ6
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1
cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7
Ci0gICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIEdMX0NPTVBSRVNTRURfUjExX0VBQzoKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKE9u
bHlGTDEwUGx1cyhyZW5kZXJlcjExRGV2aWNlQ2FwcykpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5h
bEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOF9VTk9STV9OT05SRU5ERVJBQkxFLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHMTFf
RUFDOgotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoT25seUZMMTBQbHVzKHJlbmRlcmVyMTFE
ZXZpY2VDYXBzKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
VGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFU
X1I4RzhfVU5PUk1fTk9OUkVOREVSQUJMRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAgICAgICAgIHJl
dHVybiB0ZXh0dXJlRm9ybWF0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzI6Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmIChPbmx5RkwxMFBsdXMocmVuZGVyZXIxMURldmljZUNhcHMpKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1
cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fTk9O
UkVOREVSQUJMRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVieXRlLCAweDAwLCAweDAw
LCAweDAwLCAweEZGPik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9D
T01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyOgotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAoT25seUZMMTBQbHVzKHJlbmRlcmVyMTFEZXZpY2VDYXBzKSkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJl
Rm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNX05PTlJF
TkRFUkFCTEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgwMCwg
MHgwMCwgMHhGRj4pOwotICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfQ09N
UFJFU1NFRF9SR0JBOF9FVEMyX0VBQzoKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKE9ubHlG
TDEwUGx1cyhyZW5kZXJlcjExRGV2aWNlQ2FwcykpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZv
cm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9OT05SRU5ERVJBQkxFLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
cik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQxX0VYVDoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRl
eHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX0JDMV9V
Tk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0cik7Ci0gICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU6Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3Jt
YXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9CQzJfVU5PUk0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAg
ICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9DT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9G
T1JNQVRfQkMzX1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0
OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VY
VDoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4
dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX0JDMV9VTk9STSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0g
ICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKLSAgICAgICAgfQotICAgICAgICBjYXNl
IEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUM6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
IChPbmx5RkwxMFBsdXMocmVuZGVyZXIxMURldmljZUNhcHMpKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50
ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhfU05PUk1fTk9OUkVOREVSQUJMRSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIpOwotICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9T
SUdORURfUkcxMV9FQUM6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChPbmx5RkwxMFBsdXMo
cmVuZGVyZXIxMURldmljZUNhcHMpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
TkdMRV9GT1JNQVRfUjhHOF9TTk9STV9OT05SRU5ERVJBQkxFLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9F
VEMyX0VBQzoKICAgICAgICAgewotICAgICAgICAgICAgaWYgKE9ubHlGTDEwUGx1cyhyZW5kZXJl
cjExRGV2aWNlQ2FwcykpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNv
bnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZP
Uk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCX05PTlJFTkRFUkFCTEUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9FVEMyX0VBQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk1fU1JHQiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdC
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhC
OEE4X1VOT1JNX1NSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfU1JHQjhfQUxQSEE4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMjoKICAgICAgICAg
ewotICAgICAgICAgICAgaWYgKE9ubHlGTDEwUGx1cyhyZW5kZXJlcjExRGV2aWNlQ2FwcykpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQg
dGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9S
TV9TUkdCX05PTlJFTkRFUkFCTEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwg
MHgwMCwgMHgwMCwgMHgwMCwgMHhGRj4pOwotICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0dXJl
Rm9ybWF0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5P
Uk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SOEc4QjhBOF9VTk9STV9TUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VO
T1JNX1NSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfU1JHQjhf
QUxQSEE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0
Q29tcG9uZW50RGF0YTxHTHVieXRlLCAweDAwLCAweDAwLCAweDAwLCAweEZGPiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJl
dHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9Q
VU5DSFRIUk9VR0hfQUxQSEExX0VUQzI6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChPbmx5
RkwxMFBsdXMocmVuZGVyZXIxMURldmljZUNhcHMpKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxG
b3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQl9OT05SRU5ERVJBQkxFLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGlu
Zm8oR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4
X1VOT1JNX1NSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhB
OF9VTk9STV9TUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1NS
R0I4X0FMUEhBOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9ERVBUSDI0
X1NURU5DSUw4OgogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoT25seUZMMTBQbHVzKHJlbmRl
cmVyMTFEZXZpY2VDYXBzKSkKKyAgICAgICAgICAgIGlmIChPbmx5RkwxMFBsdXMoZGV2aWNlQ2Fw
cykpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVG
b3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9EMjRfVU5P
Uk1fUzhfVUlOVF9GTDEwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1
cmVGb3JtYXQ7CisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0RF
UFRIMjRfU1RFTkNJTDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFuZ2xlOjpGb3JtYXQ6OklEOjpEMjRfVU5PUk1fUzhfVUlOVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjI0RzhfVFlQRUxFU1MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IyNF9VTk9S
TV9YOF9UWVBFTEVTUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IyNF9VTk9STV9YOF9UWVBFTEVTUywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMyRiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChP
bmx5Rkw5XzMocmVuZGVyZXIxMURldmljZUNhcHMpKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxG
b3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBTkdMRV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlRfRkw5XzMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKLSAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfREVQVEgyNF9TVEVOQ0lM
OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1h
dDo6SUQ6OkQyNF9VTk9STV9TOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfRDI0X1VO
T1JNX1M4X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1JHQkEzMkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmlj
ZUNhcHMpOworICAgICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgR0xfREVQVEgzMkZfU1RFTkNJTDg6CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGlmIChPbmx5RkwxMFBsdXMocmVuZGVyZXIxMURldmljZUNhcHMpKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1
cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfRDMyX0ZMT0FUX1M4WDI0X1VJ
TlRfRkwxMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoT25seUZMOV8zKHJlbmRlcmVy
MTFEZXZpY2VDYXBzKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgY29u
c3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9S
TUFUX05PTkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1h
dDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBGb3JtYXQgaW5mbyhHTF9ERVBUSDMyRl9TVEVOQ0lMOCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6RDMyX0ZMT0FUX1M4WDI0X1VJTlQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzhY
MjRfVFlQRUxFU1MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjMyX0ZMT0FUX1g4WDI0X1RZUEVMRVNTLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfRDMyX0ZMT0FUX1M4WDI0X1VJTlQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX0ZMT0FUX1g4WDI0
X1RZUEVMRVNTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEz
MkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAg
IHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5U
MTY6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChPbmx5RkwxMFBsdXMocmVuZGVyZXIxMURl
dmljZUNhcHMpKQorICAgICAgICAgICAgaWYgKE9ubHlGTDEwUGx1cyhkZXZpY2VDYXBzKSkKICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0
ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX0QxNl9VTk9STV9GTDEw
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAg
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0RFUFRIX0NPTVBPTkVOVDE2
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0
OjpJRDo6RDE2X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SMTZfVFlQRUxFU1MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfRDE2X1VOT1JNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfVU5PUk0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNl9FWFQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBp
ZiAoT25seUZMOV8zKHJlbmRlcmVyMTFEZXZpY2VDYXBzKSkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVy
bmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQU5HTEVfRk9STUFUX0QxNl9VTk9STV9GTDlfMywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAg
ICAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OwotICAgICAgICAgICAgfQogICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9ERVBUSF9DT01QT05FTlQxNiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6
SUQ6OkQxNl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfRDE2X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMTZfVU5PUk0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNl9FWFQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgICAg
IHJldHVybiBpbmZvOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xf
REVQVEhfQ09NUE9ORU5UMjQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChPbmx5RkwxMFBs
dXMocmVuZGVyZXIxMURldmljZUNhcHMpKQorICAgICAgICAgICAgaWYgKE9ubHlGTDEwUGx1cyhk
ZXZpY2VDYXBzKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
VGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFU
X0QyNF9VTk9STV9TOF9VSU5UX0ZMMTAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGlu
Zm8oR0xfREVQVEhfQ09NUE9ORU5UMjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpEMjRfVU5PUk1fUzhfVUlOVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjI0RzhfVFlQRUxF
U1MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IyNF9VTk9STV9YOF9UWVBFTEVTUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IyNF9VTk9STV9YOF9U
WVBFTEVTUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdC
QTMyRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBl
bHNlIGlmIChPbmx5Rkw5XzMocmVuZGVyZXIxMURldmljZUNhcHMpKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQo
aW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlRfRkw5XzMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKLSAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfREVQVEhf
Q09NUE9ORU5UMjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFu
Z2xlOjpGb3JtYXQ6OklEOjpEMjRfVU5PUk1fUzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VO
S05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX0QyNF9VTk9STV9TOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9SR0JBMzJGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDMyRjoKICAg
ICAgICAgewotICAgICAgICAgICAgaWYgKE9ubHlGTDEwUGx1cyhyZW5kZXJlcjExRGV2aWNlQ2Fw
cykpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVG
b3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9EMzJfRkxP
QVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKE9ubHlGTDlfMyhyZW5kZXJlcjExRGV2
aWNlQ2FwcykpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRl
eHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9O
T05FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9y
bWF0IGluZm8oR0xfREVQVEhfQ09NUE9ORU5UMzJGLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpEMzJfRkxPQVQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX1RZUEVMRVNTLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMl9GTE9BVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0QzMl9GTE9B
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJf
RkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMyRiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0
dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQzMl9P
RVM6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChPbmx5RkwxMFBsdXMocmVuZGVyZXIxMURl
dmljZUNhcHMpKQorICAgICAgICAgICAgaWYgKE9ubHlGTDEwUGx1cyhkZXZpY2VDYXBzKSkKICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0
ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX0QyNF9VTk9STV9TOF9V
SU5UX0ZMMTAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1h
dDsKKyAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfREVQVEhfQ09N
UE9ORU5UMzJfT0VTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
bmdsZTo6Rm9ybWF0OjpJRDo6RDI0X1VOT1JNX1M4X1VJTlQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IyNEc4X1RZUEVMRVNTLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMjRfVU5PUk1f
WDhfVFlQRUxFU1MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMjRfVU5PUk1fWDhfVFlQRUxFU1MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEzMkYsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAg
ICAgIHJldHVybiBpbmZvOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBGb3JtYXQgaW5mbyhHTF9ERVBUSF9DT01QT05FTlQzMl9PRVMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpEMjRfVU5PUk1f
UzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5ULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJGLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBj
YXNlIEdMX0VUQzFfUkdCOF9MT1NTWV9ERUNPREVfQU5HTEU6CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3Jt
YXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFOR0xFX0ZPUk1BVF9CQzFfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAgICAgcmV0dXJuIHRleHR1
cmVGb3JtYXQ7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfRVRDMV9S
R0I4X0xPU1NZX0RFQ09ERV9BTkdMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6QkMxX1JHQl9VTk9STV9CTE9DSywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzFfVU5PUk0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMxX1VOT1JNLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzFfVU5P
Uk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfRVRDMV9SR0I4X09FUzoKICAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChp
bnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNX05PTlJFTkRFUkFCTEUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRp
YWxpemU0Q29tcG9uZW50RGF0YTxHTHVieXRlLCAweDAwLCAweDAwLCAweDAwLCAweEZGPik7Ci0g
ICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBGb3JtYXQgaW5mbyhHTF9FVEMxX1JHQjhfT0VTLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4QjhBOF9VTk9STSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhB
OF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1JHQkE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVieXRlLCAweDAwLCAweDAwLCAweDAwLCAweEZG
PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfTFVNSU5B
TkNFOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0
ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRp
YWxpemU0Q29tcG9uZW50RGF0YTxHTHVieXRlLCAweDAwLCAweDAwLCAweDAwLCAweEZGPik7Ci0g
ICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKLSAgICAgICAgfQogICAgICAgICBjYXNl
IEdMX0xVTUlOQU5DRTE2Rl9FWFQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9S
MTZHMTZCMTZBMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTGhhbGYsIDB4MDAwMCwg
MHgwMDAwLCAweDAwMDAsIGdsOjpGbG9hdDE2T25lPik7Ci0gICAgICAgICAgICByZXR1cm4gdGV4
dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9MVU1J
TkFOQ0UxNkZfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xl
OjpGb3JtYXQ6OklEOjpSMTZHMTZCMTZBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9B
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZH
MTZCMTZBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfUkdCQTE2RiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0xoYWxmLCAweDAwMDAsIDB4MDAwMCwgMHgw
MDAwLCBnbDo6RmxvYXQxNk9uZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIEdMX0xVTUlOQU5DRTMyRl9FWFQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xF
X0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTGZsb2F0
LCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCBnbDo6RmxvYXQzMk9uZT4pOwot
ICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgRm9ybWF0IGluZm8oR0xfTFVNSU5BTkNFMzJGX0VYVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjMyRzMyQjMyQTMyX0ZMT0FULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIz
MkEzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEzMkYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMZmxv
YXQsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIGdsOjpGbG9hdDMyT25lPiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAg
ICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNF
OF9BTFBIQThfRVhUOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVy
ZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhHOEI4QThf
VU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIpOwotICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfTFVNSU5BTkNFOF9BTFBIQThfRVhULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpS
OEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRThfRVhUOgogICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFs
Rm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxH
THVieXRlLCAweDAwLCAweDAwLCAweDAwLCAweEZGPik7Ci0gICAgICAgICAgICByZXR1cm4gdGV4
dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9MVU1J
TkFOQ0U4X0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6
Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhB
OF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVu
dERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRj4sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5m
bzsKICAgICAgICAgfQotICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQToKLSAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChp
bnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAg
ICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OwotICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfTFVN
SU5BTkNFX0FMUEhBMTZGX0VYVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1Ix
NkcxNkIxNkExNl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1h
dDsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9MVU1JTkFOQ0VfQUxQ
SEExNkZfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpG
b3JtYXQ6OklEOjpSMTZHMTZCMTZBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZC
MTZBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfUkdCQTE2RiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNh
cHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBH
TF9MVU1JTkFOQ0VfQUxQSEEzMkZfRVhUOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMg
Y29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JN
QVRfUjMyRzMyQjMyQTMyX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0dXJl
Rm9ybWF0OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0xVTUlOQU5D
RV9BTFBIQTMyRl9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5n
bGU6OkZvcm1hdDo6SUQ6OlIzMkczMkIzMkEzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZM
T0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1Iz
MkczMkIzMkEzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9SR0JBMzJGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2
aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBj
YXNlIEdMX05PTkU6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJl
Rm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9OT05FLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRy
KTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IEZvcm1hdCBpbmZvKEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgR0xfUjExRl9HMTFGX0IxMEY6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xF
X0ZPUk1BVF9SMTFHMTFCMTBfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAgICAgcmV0dXJuIHRleHR1
cmVGb3JtYXQ7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUjExRl9H
MTFGX0IxMEYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZv
cm1hdDo6SUQ6OlIxMUcxMUIxMF9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SMTFHMTFCMTBfRkxPQVQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjExRzExQjEwX0ZMT0FULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxMUcxMUIxMF9GTE9BVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxMUcx
MUIxMF9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JB
MTZGX0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAg
ICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SMTZGOgogICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9y
bWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjE2X0ZMT0FULAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAg
ICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1h
dCBpbmZvKEdMX1IxNkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5n
bGU6OkZvcm1hdDo6SUQ6OlIxNl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9GTE9BVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9GTE9BVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZGX0VYVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBHTF9SMTZJOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9G
T1JNQVRfUjE2X1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUjE2SSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2X1NJTlQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X1NJ
TlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2
X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjE2X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SMTZfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9S
R0JBMTZJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1IxNlVJOgogICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9y
bWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjE2X1VJTlQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAg
ICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0
IGluZm8oR0xfUjE2VUksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5n
bGU6OkZvcm1hdDo6SUQ6OlIxNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1IxNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X1VJTlQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2SSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBHTF9SMTZfRVhUOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgRm9ybWF0IGluZm8oR0xfUjE2X0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2X1VOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9VTk9STSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfVU5PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X1VOT1JNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X1VOT1JNLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNl9FWFQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBp
bmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUjE2X1NOT1JNX0VYVDoKKyAgICAgICAg
eworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1IxNl9TTk9STV9FWFQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6
OlIxNl9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SMTZfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjE2X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SMTZfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfUkdCQTE2X1NOT1JNX0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBHTF9SMzJGOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4
dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjMyX0ZM
T0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1IzMkYsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIzMl9GTE9BVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfRkxPQVQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMl9GTE9B
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktO
T1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1Iz
Ml9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJG
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1IzMkk6CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50
ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMzJfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICByZXR1
cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhH
TF9SMzJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3Jt
YXQ6OklEOjpSMzJfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMzJfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SMzJfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SMzJfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1IzMl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1JHQkEzMkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZp
Y2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgR0xfUjMyVUk6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJl
Rm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMzJfVUlOVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0cik7Ci0gICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SMzJVSSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjMyX1VJTlQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX1VJTlQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX1VJTlQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX1VJTlQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfVUlOVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJJLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5m
bzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1I4OgogICAgICAgICB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
TkdMRV9GT1JNQVRfUjhfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVG
b3JtYXQ7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUjgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4X1VO
T1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4
X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1I4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1I4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjhfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfUkdCQTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAg
ICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUjhJOgogICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9y
bWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhfU0lOVCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAg
ICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQg
aW5mbyhHTF9SOEksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6
OkZvcm1hdDo6SUQ6OlI4X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjhfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SOF9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1I4X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1JHQkE4SSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmlj
ZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBHTF9SOFVJOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZv
cm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhfVUlOVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
cik7Ci0gICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SOFVJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOF9VSU5ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4X1VJTlQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfVUlOVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9VSU5ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfVUlOVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOEksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgR0xfUjhfU05PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xF
X0ZPUk1BVF9SOF9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1h
dDsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SOF9TTk9STSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Ujhf
U05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjhfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjhfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1I4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1JHQkE4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7
CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JH
MTZGOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0
ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjE2RzE2X0ZMT0FULAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRy
KTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHMTZGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMTZHMTZfRkxPQVQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X0ZMT0FULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNl9GTE9BVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZf
RkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SMTZHMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
UkdCQTE2Rl9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkcxNkk6
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1
cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMTZHMTZfU0lOVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0g
ICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBGb3JtYXQgaW5mbyhHTF9SRzE2SSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2RzE2X1NJTlQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZf
U0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZJLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1
cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHMTZVSToKICAgICAgICAgewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRl
cm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQU5HTEVfRk9STUFUX1IxNkcxNl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgIHJl
dHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZv
KEdMX1JHMTZVSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6
Rm9ybWF0OjpJRDo6UjE2RzE2X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1VJTlQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1VJTlQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfVUlOVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZJLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHMTZfRVhUOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUkcxNl9FWFQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNl9VTk9STSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfVU5P
Uk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2
RzE2X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1IxNkcxNl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1IxNkcxNl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9SR0JBMTZfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNl
Q2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IEdMX1JHMTZfU05PUk1fRVhUOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
Rm9ybWF0IGluZm8oR0xfUkcxNl9TTk9STV9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNl9TTk9STSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfU05PUk0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1NOT1JN
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
MTZHMTZfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdC
QTE2X1NOT1JNX0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
cHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOwor
ICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SRzMy
RjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4
dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IzMkczMl9GTE9BVCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7
Ci0gICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBGb3JtYXQgaW5mbyhHTF9SRzMyRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjMyRzMyX0ZMT0FULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX0ZM
T0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VO
S05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjMyRzMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JH
QkEzMkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAg
ICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkczMkk6CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3Jt
YXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMzJHMzJfU0lOVCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAg
ICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3Jt
YXQgaW5mbyhHTF9SRzMySSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
bmdsZTo6Rm9ybWF0OjpJRDo6UjMyRzMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX1NJTlQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX1NJTlQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJfU0lOVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJJLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5m
bzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHMzJVSToKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZv
cm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQU5HTEVfRk9STUFUX1IzMkczMl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybiB0
ZXh0dXJlRm9ybWF0OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JH
MzJVSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0
OjpJRDo6UjMyRzMyX1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjMyRzMyX1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX1VJTlQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJfVUlOVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJJLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAg
fQogICAgICAgICBjYXNlIEdMX1JHODoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNv
bnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFU
X1I4RzhfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUkc4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4X1VOT1JNLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfVU5P
Uk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhH
OF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SOEc4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjhHOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9SR0JBOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SRzhJOgog
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJl
Rm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhHOF9TSU5ULAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAg
ICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZv
cm1hdCBpbmZvKEdMX1JHOEksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9TSU5ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfU0lOVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfU0lOVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOEksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgR0xfUkc4VUk6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZP
Uk1BVF9SOEc4X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUkc4VUksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhfVUlO
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4
X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjhHOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1I4RzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1I4RzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9SR0JBOEksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkc4X1NO
T1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0
ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhHOF9TTk9STSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7
Ci0gICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBGb3JtYXQgaW5mbyhHTF9SRzhfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhfU05PUk0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9TTk9STSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1NOT1JNLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1NO
T1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4X1NOT1JN
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHQjoKICAgICAgICAgewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRl
cm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERh
dGE8R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRj4pOwotICAgICAgICAgICAgcmV0dXJu
IHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xf
UkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6
OklEOjpSOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JN
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxH
THVieXRlLCAweDAwLCAweDAwLCAweDAwLCAweEZGPiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkdCMTBfQTI6CiAgICAgICAgIHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFO
R0xFX0ZPUk1BVF9SMTBHMTBCMTBBMl9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICByZXR1cm4g
dGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9S
R0IxMF9BMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9y
bWF0OjpJRDo6UjEwRzEwQjEwQTJfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVU5PUk0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVU5PUk0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJf
VU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SMTBHMTBCMTBBMl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9SR0JBMTZfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7
CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JH
QjEwX0EyVUk6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9y
bWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMTBHMTBCMTBBMl9V
SU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHQjEwX0EyVUksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxMEcxMEIxMEEyX1VJ
TlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjEw
RzEwQjEwQTJfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SMTBHMTBCMTBBMl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VJTlQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNkksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkdCMTZGOgogICAgICAgICB7Ci0gICAgICAgICAgICBz
dGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdM
RV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0xoYWxm
LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCBnbDo6RmxvYXQxNk9uZT4pOwotICAgICAgICAgICAg
cmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGlu
Zm8oR0xfUkdCMTZGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xl
OjpGb3JtYXQ6OklEOjpSMTZHMTZCMTZBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9B
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZH
MTZCMTZBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfUkdCQTE2RiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0xoYWxmLCAweDAwMDAsIDB4MDAwMCwgMHgw
MDAwLCBnbDo6RmxvYXQxNk9uZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIEdMX1JHQjE2SToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1Ix
NkcxNkIxNkExNl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0xzaG9ydCwgMHgwMDAwLCAw
eDAwMDAsIDB4MDAwMCwgMHgwMDAxPik7Ci0gICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1h
dDsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0IxNkksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcx
NkIxNkExNl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1IxNkcxNkIxNkExNl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2
X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2SSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVu
dERhdGE8R0xzaG9ydCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAxPiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJl
dHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkdCMTZVSToKICAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChp
bnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5ULAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBv
bmVudERhdGE8R0x1c2hvcnQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMT4pOwotICAg
ICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
Rm9ybWF0IGluZm8oR0xfUkdCMTZVSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2X1VJTlQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2
QTE2X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjE2RzE2QjE2QTE2X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9SR0JBMTZVSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1c2hvcnQsIDB4MDAwMCwgMHgw
MDAwLCAweDAwMDAsIDB4MDAwMT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQorICAg
ICAgICBjYXNlIEdMX1JHQjE2X0VYVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IEZvcm1hdCBpbmZvKEdMX1JHQjE2X0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2X1VOT1JNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9V
Tk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
MTZHMTZCMTZBMTZfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNl9FWFQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMdWJ5dGUs
IDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4RkZGRj4sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHQjE2X1NOT1JNX0VYVDoKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHQjE2X1NOT1JNX0VYVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2
RzE2QjE2QTE2X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1IxNkcxNkIxNkExNl9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU05PUk0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TTk9S
TSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZfU05PUk1f
RVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29t
cG9uZW50RGF0YTxHTHVzaG9ydCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg3RkZGPiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAg
ICAgIHJldHVybiBpbmZvOworICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkdCMzJGOgogICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9y
bWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXpl
NENvbXBvbmVudERhdGE8R0xmbG9hdCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAw
MCwgZ2w6OkZsb2F0MzJPbmU+KTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0Owor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHQjMyRiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjMyRzMyQjMy
QTMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMy
X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEzMkYs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25l
bnREYXRhPEdMZmxvYXQsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIGdsOjpG
bG9hdDMyT25lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VD
YXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
R0xfUkdCMzJJOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZv
cm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjMyRzMyQjMyQTMy
X1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTGludCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAw
MCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMT4pOwotICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVG
b3JtYXQ7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUkdCMzJJLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpS
MzJHMzJCMzJBMzJfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIz
MkEzMl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEz
MkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21w
b25lbnREYXRhPEdMaW50LCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAw
MDAwMDAxPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBz
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xf
UkdCMzJVSToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3Jt
YXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IzMkczMkIzMkEzMl9V
SU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1aW50LCAweDAwMDAwMDAwLCAweDAwMDAwMDAw
LCAweDAwMDAwMDAwLCAweDAwMDAwMDAxPik7Ci0gICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZv
cm1hdDsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0IzMlVJLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpS
MzJHMzJCMzJBMzJfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIz
MkEzMl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEz
MlVJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29t
cG9uZW50RGF0YTxHTHVpbnQsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4
MDAwMDAwMDE+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNh
cHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBH
TF9SR0I1NjU6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChTdXBwb3J0c0Zvcm1hdDxEWEdJ
X0ZPUk1BVF9CNUc2UjVfVU5PUk0sZmFsc2U+KHJlbmRlcmVyMTFEZXZpY2VDYXBzKSkKKyAgICAg
ICAgICAgIGlmIChTdXBwb3J0c0Zvcm1hdChEWEdJX0ZPUk1BVF9CNUc2UjVfVU5PUk0sIGRldmlj
ZUNhcHMpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0
dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhH
OEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgw
MCwgMHgwMCwgMHhGRj4pOwotICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0Owor
ICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0I1NjUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpC
NUc2UjVfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX0I1RzZSNV9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNUc2UjVfVU5PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I1RzZSNV9V
Tk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBp
ZiAoU3VwcG9ydHNGb3JtYXQ8RFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNLHRydWU+KHJlbmRlcmVy
MTFEZXZpY2VDYXBzKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgY29u
c3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9S
TUFUX0I1RzZSNV9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0
dXJlRm9ybWF0OwotICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBG
b3JtYXQgaW5mbyhHTF9SR0I1NjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhC
OEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwg
MHgwMCwgMHgwMCwgMHgwMCwgMHhGRj4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkdCNV9BMToKICAgICAgICAg
ewotICAgICAgICAgICAgaWYgKFN1cHBvcnRzRm9ybWF0PERYR0lfRk9STUFUX0I1RzVSNUExX1VO
T1JNLGZhbHNlPihyZW5kZXJlcjExRGV2aWNlQ2FwcykpCisgICAgICAgICAgICBpZiAoU3VwcG9y
dHNGb3JtYXQoRFhHSV9GT1JNQVRfQjVHNVI1QTFfVU5PUk0sIGRldmljZUNhcHMpKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1
cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUkdCNV9BMSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkI1RzVSNUEx
X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9CNUc1UjVBMV9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfQjVHNVI1QTFfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I1RzVSNUExX1VOT1JNLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNUc1UjVB
MV9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdC
QTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAg
ICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxz
ZSBpZiAoU3VwcG9ydHNGb3JtYXQ8RFhHSV9GT1JNQVRfQjVHNVI1QTFfVU5PUk0sdHJ1ZT4ocmVu
ZGVyZXIxMURldmljZUNhcHMpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdM
RV9GT1JNQVRfQjVHNVI1QTFfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gdGV4dHVyZUZvcm1hdDsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRm9ybWF0IGluZm8oR0xfUkdCNV9BMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VOT1JNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9V
Tk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgICAgIHJl
dHVybiBpbmZvOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkdC
ODoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4
dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFs
aXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRj4pOwotICAg
ICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
Rm9ybWF0IGluZm8oR0xfUkdCOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThf
VU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9SR0JBOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXpl
NENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRj4sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHQjhJOgogICAgICAgICB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGlu
dGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhHOEI4QThfU0lOVCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnRE
YXRhPEdMYnl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMT4pOwotICAgICAgICAgICAgcmV0dXJu
IHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xf
UkdCOEksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1h
dDo6SUQ6OlI4RzhCOEE4X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1NJTlQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5ULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4SSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0xi
eXRlLCAweDAwLCAweDAwLCAweDAwLCAweDAxPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgR0xfUkdCOFVJOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9G
T1JNQVRfUjhHOEI4QThfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMdWJ5dGUsIDB4MDAs
IDB4MDAsIDB4MDAsIDB4MDE+KTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0Owor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHQjhVSSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThf
VUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
OEc4QjhBOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1I4RzhCOEE4X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VJTlQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQThVSSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgw
MCwgMHgwMCwgMHgwMT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2
aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBj
YXNlIEdMX1JHQjhfU05PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBU
ZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4
QjhBOF9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMYnl0ZSwgMHgwMCwgMHgwMCwgMHgw
MCwgMHg3Rj4pOwotICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUkdCOF9TTk9STSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfU05PUk0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4
QThfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjhHOEI4QThfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1JHQkE4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTGJ5dGUsIDB4MDAsIDB4MDAsIDB4
MDAsIDB4N0Y+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNh
cHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBH
TF9SR0I5X0U1OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZv
cm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjlHOUI5RTVfU0hB
UkVERVhQLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHQjlfRTUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI5RzlCOUU1X1NIQVJF
REVYUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
OUc5QjlFNV9TSEFSRURFWFAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjlHOUI5RTVfU0hBUkVERVhQLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOUc5QjlFNV9TSEFSRURFWFAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2Rl9FWFQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkdCQToKICAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5H
TEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0
dXJlRm9ybWF0OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHQkEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6
OlI4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkdCQTE2RjoKICAgICAgICAgewotICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1h
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICByZXR1
cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhH
TF9SR0JBMTZGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpG
b3JtYXQ6OklEOjpSMTZHMTZCMTZBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZC
MTZBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfUkdCQTE2RiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNh
cHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBH
TF9SR0JBMTZJOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZv
cm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjE2RzE2QjE2QTE2
X1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIpOwotICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUkdCQTE2SSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2X1NJ
TlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2
RzE2QjE2QTE2X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZJLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHQkExNlVJOgogICAgICAgICB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9y
bWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBTkdMRV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAgICAgcmV0
dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8o
R0xfUkdCQTE2VUksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6
OkZvcm1hdDo6SUQ6OlIxNkcxNkIxNkExNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5ULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIx
NkExNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfUkdCQTE2VUksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBz
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CisgICAgICAgIGNhc2UgR0xf
UkdCQTE2X0VYVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBp
bmZvKEdMX1JHQkExNl9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNkIxNkExNl9VTk9STSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2
X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IxNkcxNkIxNkExNl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9SR0JBMTZfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIEdMX1JHQkExNl9TTk9STV9FWFQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0JBMTZfU05PUk1fRVhULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMTZHMTZCMTZBMTZf
U05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjE2RzE2QjE2QTE2X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NOT1JNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNl9TTk9STV9FWFQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBp
bmZvOworICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkdCQTMyRjoKICAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5h
bEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQU5HTEVfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAg
ICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQg
aW5mbyhHTF9SR0JBMzJGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFu
Z2xlOjpGb3JtYXQ6OklEOjpSMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9G
TE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
MzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfUkdCQTMyRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
dmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBHTF9SR0JBMzJJOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4
dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjMyRzMy
QjMyQTMyX1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUkdCQTMySSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjMyRzMyQjMy
QTMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjMyRzMyQjMyQTMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1NJTlQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lO
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJJLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4g
aW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHQkEzMlVJOgogICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVy
bmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBTkdMRV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAg
ICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0
IGluZm8oR0xfUkdCQTMyVUksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5nbGU6OkZvcm1hdDo6SUQ6OlIzMkczMkIzMkEzMl9VSU5ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9V
SU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1Iz
MkczMkIzMkEzMl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfUkdCQTMyVUksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZp
Y2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgR0xfUkdCQTQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChTdXBwb3J0c0Zvcm1hdDxE
WEdJX0ZPUk1BVF9CNEc0UjRBNF9VTk9STSxmYWxzZT4ocmVuZGVyZXIxMURldmljZUNhcHMpKQor
ICAgICAgICAgICAgaWYgKFN1cHBvcnRzRm9ybWF0KERYR0lfRk9STUFUX0I0RzRSNEE0X1VOT1JN
LCBkZXZpY2VDYXBzKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgY29u
c3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9S
TUFUX1I4RzhCOEE4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRl
eHR1cmVGb3JtYXQ7CisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdM
X1JHQkE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6
Rm9ybWF0OjpJRDo6QjRHNFI0QTRfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX0I0RzRSNEE0X1VOT1JNLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNEc0UjRBNF9VTk9STSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjRHNFI0
QTRfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX0I0RzRSNEE0X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9SR0JBNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChTdXBwb3J0c0Zvcm1hdDxEWEdJX0ZPUk1BVF9CNEc0
UjRBNF9VTk9STSx0cnVlPihyZW5kZXJlcjExRGV2aWNlQ2FwcykpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChp
bnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9CNEc0UjRBNF9VTk9STSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwot
ICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OwotICAgICAgICAgICAgfQogICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0JBNCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhC
OEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4
QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
UkdCQTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgR0xfUkdCQTg6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9S
OEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0JBOCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThf
VU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBHTF9SR0JBOEk6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1B
VF9SOEc4QjhBOF9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0
OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHQkE4SSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4
QThfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SOEc4QjhBOF9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1I4RzhCOEE4X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1NJTlQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQThJLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIEdMX1JHQkE4VUk6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1B
VF9SOEc4QjhBOF9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0
OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHQkE4VUksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhC
OEE4X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjhHOEI4QThfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4VUksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgR0xfUkdCQThfU05PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xF
X0ZPUk1BVF9SOEc4QjhBOF9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICByZXR1cm4gdGV4dHVy
ZUZvcm1hdDsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0JBOF9T
Tk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0
OjpJRDo6UjhHOEI4QThfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfU05PUk0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1NOT1JNLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4X1NOT1JNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5m
bzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1NSR0I4OgogICAgICAgICB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9y
bWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQl9OT05SRU5ERVJBQkxFLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXpl
NENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRj4pOwotICAgICAg
ICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9y
bWF0IGluZm8oR0xfU1JHQjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VOT1JNX1NSR0IsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9V
Tk9STV9TUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1NSR0I4X0FMUEhBOCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgw
MCwgMHgwMCwgMHgwMCwgMHhGRj4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIEdMX1NSR0I4X0FMUEhBODoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9S
TUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAgICAgcmV0dXJuIHRleHR1
cmVGb3JtYXQ7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfU1JHQjhf
QUxQSEE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3Jt
YXQ6OklEOjpSOEc4QjhBOF9VTk9STV9TUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhB
OF9VTk9STV9TUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9TUkdCOF9BTFBIQTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgR0xfU1RFTkNJTF9JTkRFWDg6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChPbmx5
RkwxMFBsdXMocmVuZGVyZXIxMURldmljZUNhcHMpKQorICAgICAgICAgICAgaWYgKE9ubHlGTDEw
UGx1cyhkZXZpY2VDYXBzKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVf
Rk9STUFUX1gyNF9UWVBFTEVTU19HOF9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1h
dCBpbmZvKEdMX1NURU5DSUxfSU5ERVg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6RDI0X1VOT1JNX1M4X1VJTlQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IyNEc4X1RZUEVM
RVNTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SMjRfVU5PUk1fWDhfVFlQRUxFU1MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5ULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMjRfVU5PUk1fWDhf
VFlQRUxFU1MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JH
QkEzMkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
ZWxzZSBpZiAoT25seUZMOV8zKHJlbmRlcmVyMTFEZXZpY2VDYXBzKSkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0
KGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5UX0ZMOV8zLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7Ci0gICAgICAg
ICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1NURU5D
SUxfSU5ERVg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmds
ZTo6Rm9ybWF0OjpJRDo6RDI0X1VOT1JNX1M4X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktO
T1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9EMjRfVU5PUk1fUzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfUkdCQTMyRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIApAQCAtMTg2Miw5ICsxOTQ1LDEwIEBACiAgICAgfQogICAgIC8vIGNs
YW5nLWZvcm1hdCBvbgogCi0gICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgZGVmYXVsdElu
Zm8oR0xfTk9ORSwgQU5HTEVfRk9STUFUX05PTkUsIG51bGxwdHIpOworICAgIFVOUkVBQ0hBQkxF
KCk7CisgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBkZWZhdWx0SW5mbzsKICAgICByZXR1cm4gZGVm
YXVsdEluZm87Ci19ICAvLyBHZXRUZXh0dXJlRm9ybWF0SW5mbworfQogCiB9ICAvLyBuYW1lc3Bh
Y2UgZDNkMTEKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZV9hdXRvZ2VuLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZV9hdXRvZ2VuLmgJKHJldmlzaW9uIDIwODAyMSkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
dGV4dHVyZV9mb3JtYXRfdGFibGVfYXV0b2dlbi5oCShub25leGlzdGVudCkKQEAgLTEsNzkgKzAs
MCBAQAotLy8gR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVC4KLS8vIEdlbmVyYXRlZCBieSBn
ZW5fdGV4dHVyZV9mb3JtYXRfdGFibGUucHkgdXNpbmcgZGF0YSBmcm9tIHRleHR1cmVfZm9ybWF0
X2RhdGEuanNvbgotLy8KLS8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgotLy8KLQotbmFtZXNwYWNlIHJ4Ci17Ci0KLW5hbWVzcGFjZSBkM2Qx
MQotewotCi1lbnVtIEFOR0xFRm9ybWF0Ci17Ci0gICAgQU5HTEVfRk9STUFUX0E4X1VOT1JNLAot
ICAgIEFOR0xFX0ZPUk1BVF9CNEc0UjRBNF9VTk9STSwKLSAgICBBTkdMRV9GT1JNQVRfQjVHNVI1
QTFfVU5PUk0sCi0gICAgQU5HTEVfRk9STUFUX0I1RzZSNV9VTk9STSwKLSAgICBBTkdMRV9GT1JN
QVRfQjhHOFI4QThfVU5PUk0sCi0gICAgQU5HTEVfRk9STUFUX0JDMV9VTk9STSwKLSAgICBBTkdM
RV9GT1JNQVRfQkMyX1VOT1JNLAotICAgIEFOR0xFX0ZPUk1BVF9CQzNfVU5PUk0sCi0gICAgQU5H
TEVfRk9STUFUX0QxNl9VTk9STV9GTDEwLAotICAgIEFOR0xFX0ZPUk1BVF9EMTZfVU5PUk1fRkw5
XzMsCi0gICAgQU5HTEVfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5UX0ZMMTAsCi0gICAgQU5HTEVf
Rk9STUFUX0QyNF9VTk9STV9TOF9VSU5UX0ZMOV8zLAotICAgIEFOR0xFX0ZPUk1BVF9EMzJfRkxP
QVQsCi0gICAgQU5HTEVfRk9STUFUX0QzMl9GTE9BVF9TOFgyNF9VSU5UX0ZMMTAsCi0gICAgQU5H
TEVfRk9STUFUX05PTkUsCi0gICAgQU5HTEVfRk9STUFUX1IxMEcxMEIxMEEyX1VJTlQsCi0gICAg
QU5HTEVfRk9STUFUX1IxMEcxMEIxMEEyX1VOT1JNLAotICAgIEFOR0xFX0ZPUk1BVF9SMTFHMTFC
MTBfRkxPQVQsCi0gICAgQU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKLSAgICBBTkdM
RV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQsCi0gICAgQU5HTEVfRk9STUFUX1IxNkcxNkIxNkEx
Nl9VSU5ULAotICAgIEFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk0sCi0gICAgQU5HTEVf
Rk9STUFUX1IxNkcxNl9GTE9BVCwKLSAgICBBTkdMRV9GT1JNQVRfUjE2RzE2X1NJTlQsCi0gICAg
QU5HTEVfRk9STUFUX1IxNkcxNl9VSU5ULAotICAgIEFOR0xFX0ZPUk1BVF9SMTZfRkxPQVQsCi0g
ICAgQU5HTEVfRk9STUFUX1IxNl9TSU5ULAotICAgIEFOR0xFX0ZPUk1BVF9SMTZfVUlOVCwKLSAg
ICBBTkdMRV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAotICAgIEFOR0xFX0ZPUk1BVF9SMzJH
MzJCMzJBMzJfU0lOVCwKLSAgICBBTkdMRV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQsCi0gICAg
QU5HTEVfRk9STUFUX1IzMkczMl9GTE9BVCwKLSAgICBBTkdMRV9GT1JNQVRfUjMyRzMyX1NJTlQs
Ci0gICAgQU5HTEVfRk9STUFUX1IzMkczMl9VSU5ULAotICAgIEFOR0xFX0ZPUk1BVF9SMzJfRkxP
QVQsCi0gICAgQU5HTEVfRk9STUFUX1IzMl9TSU5ULAotICAgIEFOR0xFX0ZPUk1BVF9SMzJfVUlO
VCwKLSAgICBBTkdMRV9GT1JNQVRfUjhHOEI4QThfU0lOVCwKLSAgICBBTkdMRV9GT1JNQVRfUjhH
OEI4QThfU05PUk0sCi0gICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VJTlQsCi0gICAgQU5HTEVf
Rk9STUFUX1I4RzhCOEE4X1VOT1JNLAotICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9O
T05SRU5ERVJBQkxFLAotICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAotICAg
IEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCX05PTlJFTkRFUkFCTEUsCi0gICAgQU5H
TEVfRk9STUFUX1I4RzhfU0lOVCwKLSAgICBBTkdMRV9GT1JNQVRfUjhHOF9TTk9STSwKLSAgICBB
TkdMRV9GT1JNQVRfUjhHOF9TTk9STV9OT05SRU5ERVJBQkxFLAotICAgIEFOR0xFX0ZPUk1BVF9S
OEc4X1VJTlQsCi0gICAgQU5HTEVfRk9STUFUX1I4RzhfVU5PUk0sCi0gICAgQU5HTEVfRk9STUFU
X1I4RzhfVU5PUk1fTk9OUkVOREVSQUJMRSwKLSAgICBBTkdMRV9GT1JNQVRfUjhfU0lOVCwKLSAg
ICBBTkdMRV9GT1JNQVRfUjhfU05PUk0sCi0gICAgQU5HTEVfRk9STUFUX1I4X1NOT1JNX05PTlJF
TkRFUkFCTEUsCi0gICAgQU5HTEVfRk9STUFUX1I4X1VJTlQsCi0gICAgQU5HTEVfRk9STUFUX1I4
X1VOT1JNLAotICAgIEFOR0xFX0ZPUk1BVF9SOF9VTk9STV9OT05SRU5ERVJBQkxFLAotICAgIEFO
R0xFX0ZPUk1BVF9SOUc5QjlFNV9TSEFSRURFWFAsCi0gICAgQU5HTEVfRk9STUFUX1gyNF9UWVBF
TEVTU19HOF9VSU5UCi19OwotCi19ICAvLyBuYW1lc3BhY2UgZDNkMTEKLQotfSAgLy8gbmFtZXNw
YWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlX3V0aWxzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90
ZXh0dXJlX2Zvcm1hdF90YWJsZV91dGlscy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3Jt
YXRfdGFibGVfdXRpbHMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc3IEBACisvLworLy8g
Q29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworLy8gSGVscGVyIHJvdXRpbmVzIGZvciB0aGUgRDNEMTEgdGV4dHVyZSBmb3JtYXQgdGFibGUu
CisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfRDNEX0QzRDExX1RFWFRVUkVfRk9STUFUX1RB
QkxFX1VUSUxTX0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9EM0QxMV9URVhUVVJF
X0ZPUk1BVF9UQUJMRV9VVElMU19IXworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL1JlbmRlcmVyMTEuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK25hbWVzcGFjZSBkM2Qx
MQoreworCit1c2luZyBGb3JtYXRTdXBwb3J0RnVuY3Rpb24gPSBib29sICgqKShjb25zdCBSZW5k
ZXJlcjExRGV2aWNlQ2FwcyAmKTsKKworaW5saW5lIGJvb2wgT25seUZMMTBQbHVzKGNvbnN0IFJl
bmRlcmVyMTFEZXZpY2VDYXBzICZkZXZpY2VDYXBzKQoreworICAgIHJldHVybiAoZGV2aWNlQ2Fw
cy5mZWF0dXJlTGV2ZWwgPj0gRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMCk7Cit9CisKK2lubGluZSBi
b29sIE9ubHlGTDlfMyhjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmZGV2aWNlQ2FwcykKK3sK
KyAgICByZXR1cm4gKGRldmljZUNhcHMuZmVhdHVyZUxldmVsID09IEQzRF9GRUFUVVJFX0xFVkVM
XzlfMyk7Cit9CisKK2lubGluZSBib29sIFN1cHBvcnRzRm9ybWF0KERYR0lfRk9STUFUIGZvcm1h
dCwgY29uc3QgUmVuZGVyZXIxMURldmljZUNhcHMgJmRldmljZUNhcHMpCit7CisgICAgLy8gTXVz
dCBzdXBwb3J0IHRleHR1cmUsIFNSViBhbmQgUlRWIHN1cHBvcnQKKyAgICBVSU5UIG11c3RTdXBw
b3J0ID0gRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRTJEIHwgRDNEMTFfRk9STUFUX1NVUFBP
UlRfVEVYVFVSRUNVQkUgfAorICAgICAgICAgICAgICAgICAgICAgICBEM0QxMV9GT1JNQVRfU1VQ
UE9SVF9TSEFERVJfU0FNUExFIHwgRDNEMTFfRk9STUFUX1NVUFBPUlRfTUlQIHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgRDNEMTFfRk9STUFUX1NVUFBPUlRfUkVOREVSX1RBUkdFVDsKKworICAg
IGlmIChkM2QxMV9nbDo6R2V0TWF4aW11bUNsaWVudFZlcnNpb24oZGV2aWNlQ2Fwcy5mZWF0dXJl
TGV2ZWwpID4gMikKKyAgICB7CisgICAgICAgIG11c3RTdXBwb3J0IHw9IEQzRDExX0ZPUk1BVF9T
VVBQT1JUX1RFWFRVUkUzRDsKKyAgICB9CisKKyAgICBib29sIGZ1bGxTdXBwb3J0ID0gZmFsc2U7
CisgICAgaWYgKGZvcm1hdCA9PSBEWEdJX0ZPUk1BVF9CNUc2UjVfVU5PUk0pCisgICAgeworICAg
ICAgICAvLyBBbGwgaGFyZHdhcmUgdGhhdCBzdXBwb3J0cyBEWEdJX0ZPUk1BVF9CNUc2UjVfVU5P
Uk0gc2hvdWxkIHN1cHBvcnQgYXV0b2dlbiBtaXBtYXBzLCBidXQKKyAgICAgICAgLy8gY2hlY2sg
YW55d2F5LgorICAgICAgICBtdXN0U3VwcG9ydCB8PSBEM0QxMV9GT1JNQVRfU1VQUE9SVF9NSVBf
QVVUT0dFTjsKKyAgICAgICAgZnVsbFN1cHBvcnQgPSAoKGRldmljZUNhcHMuQjVHNlI1c3VwcG9y
dCAmIG11c3RTdXBwb3J0KSA9PSBtdXN0U3VwcG9ydCk7CisgICAgfQorICAgIGVsc2UgaWYgKGZv
cm1hdCA9PSBEWEdJX0ZPUk1BVF9CNEc0UjRBNF9VTk9STSkKKyAgICB7CisgICAgICAgIGZ1bGxT
dXBwb3J0ID0gKChkZXZpY2VDYXBzLkI0RzRSNEE0c3VwcG9ydCAmIG11c3RTdXBwb3J0KSA9PSBt
dXN0U3VwcG9ydCk7CisgICAgfQorICAgIGVsc2UgaWYgKGZvcm1hdCA9PSBEWEdJX0ZPUk1BVF9C
NUc1UjVBMV9VTk9STSkKKyAgICB7CisgICAgICAgIGZ1bGxTdXBwb3J0ID0gKChkZXZpY2VDYXBz
LkI1RzVSNUExc3VwcG9ydCAmIG11c3RTdXBwb3J0KSA9PSBtdXN0U3VwcG9ydCk7CisgICAgfQor
ICAgIGVsc2UKKyAgICB7CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICAvLyBUaGlzIG1lYW5zIHRoYXQgQU5HTEUgd291bGQgbGlrZSB0
byB1c2UgdGhlIGVudHJ5IGluIHRoZSBtYXAgaWYgdGhlIGlucHV0dGVkIERYR0kgZm9ybWF0Cisg
ICAgLy8gKklTKiBzdXBwb3J0ZWQuCisgICAgLy8gZS5nLiB0aGUgZW50cnkgbWlnaHQgbWFwIEdM
X1JHQjVfQTEgdG8gRFhHSV9GT1JNQVRfQjVHNVI1QTEsIHdoaWNoIHNob3VsZCBvbmx5IGJlIHVz
ZWQgaWYKKyAgICAvLyBEWEdJX0ZPUk1BVF9CNUc1UjVBMSBpcyBzdXBwb3J0ZWQuCisgICAgLy8g
SW4gdGhpcyBjYXNlLCB3ZSBzaG91bGQgb25seSByZXR1cm4gJ3RydWUnIGlmIHRoZSBmb3JtYXQg
KklTKiBzdXBwb3J0ZWQuCisgICAgcmV0dXJuIGZ1bGxTdXBwb3J0OworfQorCit9ICAvLyBuYW1l
c3BhY2UgZDNkMTEKKworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVf
UkVOREVSRVJfRDNEX0QzRDExX1RFWFRVUkVfRk9STUFUX1RBQkxFX1VUSUxTX0hfCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dp
bjMyL05hdGl2ZVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW4zMi9OYXRpdmVXaW5kb3cuY3Bw
CShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbjMyL05hdGl2ZVdpbmRvdy5jcHAJKG5vbmV4aXN0ZW50
KQpAQCAtMSwyMDIgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxNCBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQot
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIE5hdGl2ZVdpbmRvdy5jcHA6
IEhhbmRsZXIgZm9yIG1hbmFnaW5nIEhXTkQgbmF0aXZlIHdpbmRvdyB0eXBlcy4KLQotI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9OYXRpdmVXaW5kb3cuaCIKLSNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvcmVuZGVyZXIxMV91dGlscy5oIgotCi0jaW5j
bHVkZSAiY29tbW9uL2RlYnVnLmgiCi0KLSNpbmNsdWRlIDxpbml0Z3VpZC5oPgotI2luY2x1ZGUg
PGRjb21wLmg+Ci0KLW5hbWVzcGFjZSByeAotewotCi1OYXRpdmVXaW5kb3c6Ok5hdGl2ZVdpbmRv
dyhFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGRpcmVjdENvbXBvc2l0aW9uKQotICAgIDogbVdpbmRvdyh3aW5kb3cpLAotICAgICAgbURp
cmVjdENvbXBvc2l0aW9uKGRpcmVjdENvbXBvc2l0aW9uKSwKLSAgICAgIG1EZXZpY2UobnVsbHB0
ciksCi0gICAgICBtQ29tcG9zaXRpb25UYXJnZXQobnVsbHB0ciksCi0gICAgICBtVmlzdWFsKG51
bGxwdHIpLAotICAgICAgbUNvbmZpZyhjb25maWcpCi17Ci19Ci0KLU5hdGl2ZVdpbmRvdzo6fk5h
dGl2ZVdpbmRvdygpCi17Ci0gICAgU2FmZVJlbGVhc2UobUNvbXBvc2l0aW9uVGFyZ2V0KTsKLSAg
ICBTYWZlUmVsZWFzZShtRGV2aWNlKTsKLSAgICBTYWZlUmVsZWFzZShtVmlzdWFsKTsKLX0KLQot
Ym9vbCBOYXRpdmVXaW5kb3c6OmluaXRpYWxpemUoKQotewotICAgIHJldHVybiB0cnVlOwotfQot
Ci1ib29sIE5hdGl2ZVdpbmRvdzo6Z2V0Q2xpZW50UmVjdChMUFJFQ1QgcmVjdCkKLXsKLSAgICBy
ZXR1cm4gR2V0Q2xpZW50UmVjdChtV2luZG93LCByZWN0KSA9PSBUUlVFOwotfQotCi1ib29sIE5h
dGl2ZVdpbmRvdzo6aXNJY29uaWMoKQotewotICAgIHJldHVybiBJc0ljb25pYyhtV2luZG93KSA9
PSBUUlVFOwotfQotCi1ib29sIE5hdGl2ZVdpbmRvdzo6aXNWYWxpZE5hdGl2ZVdpbmRvdyhFR0xO
YXRpdmVXaW5kb3dUeXBlIHdpbmRvdykKLXsKLSAgICByZXR1cm4gSXNXaW5kb3cod2luZG93KSA9
PSBUUlVFOwotfQotCi1IUkVTVUxUIE5hdGl2ZVdpbmRvdzo6Y3JlYXRlU3dhcENoYWluKElEM0Qx
MURldmljZSogZGV2aWNlLCBEWEdJRmFjdG9yeSogZmFjdG9yeSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVQgZm9ybWF0LCB1bnNpZ25lZCBpbnQgd2lk
dGgsIHVuc2lnbmVkIGludCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lTd2FwQ2hhaW4qKiBzd2FwQ2hhaW4pCi17Ci0gICAgaWYgKGRldmljZSA9PSBO
VUxMIHx8IGZhY3RvcnkgPT0gTlVMTCB8fCBzd2FwQ2hhaW4gPT0gTlVMTCB8fCB3aWR0aCA9PSAw
IHx8IGhlaWdodCA9PSAwKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEVfSU5WQUxJREFSRzsKLSAg
ICB9Ci0KLSAgICBpZiAobURpcmVjdENvbXBvc2l0aW9uKQotICAgIHsKLSAgICAgICAgSE1PRFVM
RSBkY29tcCA9IDo6R2V0TW9kdWxlSGFuZGxlKFRFWFQoImRjb21wLmRsbCIpKTsKLSAgICAgICAg
aWYgKCFkY29tcCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEVfSU5WQUxJREFSRzsK
LSAgICAgICAgfQotCi0gICAgICAgIHR5cGVkZWYgSFJFU1VMVChXSU5BUEkgKiBQRk5fRENPTVBP
U0lUSU9OX0NSRUFURV9ERVZJQ0UpKAotICAgICAgICAgICAgSURYR0lEZXZpY2UgKiBkeGdpRGV2
aWNlLCBSRUZJSUQgaWlkLCB2b2lkICoqZGNvbXBvc2l0aW9uRGV2aWNlKTsKLSAgICAgICAgUEZO
X0RDT01QT1NJVElPTl9DUkVBVEVfREVWSUNFIGNyZWF0ZURDb21wID0KLSAgICAgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8UEZOX0RDT01QT1NJVElPTl9DUkVBVEVfREVWSUNFPigKLSAgICAgICAg
ICAgICAgICBHZXRQcm9jQWRkcmVzcyhkY29tcCwgIkRDb21wb3NpdGlvbkNyZWF0ZURldmljZSIp
KTsKLSAgICAgICAgaWYgKCFjcmVhdGVEQ29tcCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIEVfSU5WQUxJREFSRzsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghbURldmljZSkKLSAg
ICAgICAgewotICAgICAgICAgICAgSURYR0lEZXZpY2UgKmR4Z2lEZXZpY2UgPSBkM2QxMTo6RHlu
YW1pY0Nhc3RDb21PYmplY3Q8SURYR0lEZXZpY2U+KGRldmljZSk7Ci0gICAgICAgICAgICBIUkVT
VUxUIHJlc3VsdCA9IGNyZWF0ZURDb21wKGR4Z2lEZXZpY2UsIF9fdXVpZG9mKElEQ29tcG9zaXRp
b25EZXZpY2UpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWlu
dGVycHJldF9jYXN0PHZvaWQgKio+KCZtRGV2aWNlKSk7Ci0gICAgICAgICAgICBTYWZlUmVsZWFz
ZShkeGdpRGV2aWNlKTsKLQotICAgICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoIW1Db21wb3NpdGlvblRhcmdldCkKLSAgICAgICAgewot
ICAgICAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVUYXJnZXRGb3JId25k
KG1XaW5kb3csIFRSVUUsICZtQ29tcG9zaXRpb25UYXJnZXQpOwotICAgICAgICAgICAgaWYgKEZB
SUxFRChyZXN1bHQpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIW1WaXN1YWwpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlVmlz
dWFsKCZtVmlzdWFsKTsKLSAgICAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0KLSAgICAgICAgSURYR0lGYWN0b3J5MiAqZmFjdG9yeTIgICAgICAgICAgICAgPSBk
M2QxMTo6RHluYW1pY0Nhc3RDb21PYmplY3Q8SURYR0lGYWN0b3J5Mj4oZmFjdG9yeSk7Ci0gICAg
ICAgIERYR0lfU1dBUF9DSEFJTl9ERVNDMSBzd2FwQ2hhaW5EZXNjID0gezB9OwotICAgICAgICBz
d2FwQ2hhaW5EZXNjLldpZHRoICAgICAgICAgICAgICAgICA9IHdpZHRoOwotICAgICAgICBzd2Fw
Q2hhaW5EZXNjLkhlaWdodCAgICAgICAgICAgICAgICA9IGhlaWdodDsKLSAgICAgICAgc3dhcENo
YWluRGVzYy5Gb3JtYXQgICAgICAgICAgICAgICAgPSBmb3JtYXQ7Ci0gICAgICAgIHN3YXBDaGFp
bkRlc2MuU3RlcmVvICAgICAgICAgICAgICAgID0gRkFMU0U7Ci0gICAgICAgIHN3YXBDaGFpbkRl
c2MuU2FtcGxlRGVzYy5Db3VudCAgICAgID0gMTsKLSAgICAgICAgc3dhcENoYWluRGVzYy5TYW1w
bGVEZXNjLlF1YWxpdHkgICAgPSAwOwotICAgICAgICBzd2FwQ2hhaW5EZXNjLkJ1ZmZlclVzYWdl
ID0KLSAgICAgICAgICAgIERYR0lfVVNBR0VfUkVOREVSX1RBUkdFVF9PVVRQVVQgfCBEWEdJX1VT
QUdFX0JBQ0tfQlVGRkVSIHwgRFhHSV9VU0FHRV9TSEFERVJfSU5QVVQ7Ci0gICAgICAgIHN3YXBD
aGFpbkRlc2MuQnVmZmVyQ291bnQgICAgICAgICAgID0gMjsKLSAgICAgICAgc3dhcENoYWluRGVz
Yy5TY2FsaW5nICAgICAgICAgICAgICAgPSBEWEdJX1NDQUxJTkdfU1RSRVRDSDsKLSAgICAgICAg
c3dhcENoYWluRGVzYy5Td2FwRWZmZWN0ID0gRFhHSV9TV0FQX0VGRkVDVF9GTElQX1NFUVVFTlRJ
QUw7Ci0gICAgICAgIHN3YXBDaGFpbkRlc2MuQWxwaGFNb2RlID0KLSAgICAgICAgICAgIG1Db25m
aWctPmFscGhhU2l6ZSA9PSAwID8gRFhHSV9BTFBIQV9NT0RFX0lHTk9SRSA6IERYR0lfQUxQSEFf
TU9ERV9QUkVNVUxUSVBMSUVEOwotICAgICAgICBzd2FwQ2hhaW5EZXNjLkZsYWdzICAgICAgICAg
PSAwOwotICAgICAgICBJRFhHSVN3YXBDaGFpbjEgKnN3YXBDaGFpbjEgPSBudWxscHRyOwotICAg
ICAgICBIUkVTVUxUIHJlc3VsdCA9Ci0gICAgICAgICAgICBmYWN0b3J5Mi0+Q3JlYXRlU3dhcENo
YWluRm9yQ29tcG9zaXRpb24oZGV2aWNlLCAmc3dhcENoYWluRGVzYywgbnVsbHB0ciwgJnN3YXBD
aGFpbjEpOwotICAgICAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgICpzd2FwQ2hhaW4gPSBzdGF0aWNfY2FzdDxEWEdJU3dhcENoYWluICo+KHN3YXBDaGFp
bjEpOwotICAgICAgICB9Ci0gICAgICAgIG1WaXN1YWwtPlNldENvbnRlbnQoc3dhcENoYWluMSk7
Ci0gICAgICAgIG1Db21wb3NpdGlvblRhcmdldC0+U2V0Um9vdChtVmlzdWFsKTsKLSAgICAgICAg
U2FmZVJlbGVhc2UoZmFjdG9yeTIpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQot
ICAgIC8vIFVzZSBJRFhHSUZhY3RvcnkyOjpDcmVhdGVTd2FwQ2hhaW5Gb3JId25kIGlmIERYR0kg
MS4yIGlzIGF2YWlsYWJsZSB0byBjcmVhdGUgYSBEWEdJX1NXQVBfRUZGRUNUX1NFUVVFTlRJQUwg
c3dhcCBjaGFpbi4KLSAgICBJRFhHSUZhY3RvcnkyICpmYWN0b3J5MiA9IGQzZDExOjpEeW5hbWlj
Q2FzdENvbU9iamVjdDxJRFhHSUZhY3RvcnkyPihmYWN0b3J5KTsKLSAgICBpZiAoZmFjdG9yeTIg
IT0gbnVsbHB0cikKLSAgICB7Ci0gICAgICAgIERYR0lfU1dBUF9DSEFJTl9ERVNDMSBzd2FwQ2hh
aW5EZXNjID0geyAwIH07Ci0gICAgICAgIHN3YXBDaGFpbkRlc2MuV2lkdGggPSB3aWR0aDsKLSAg
ICAgICAgc3dhcENoYWluRGVzYy5IZWlnaHQgPSBoZWlnaHQ7Ci0gICAgICAgIHN3YXBDaGFpbkRl
c2MuRm9ybWF0ID0gZm9ybWF0OwotICAgICAgICBzd2FwQ2hhaW5EZXNjLlN0ZXJlbyA9IEZBTFNF
OwotICAgICAgICBzd2FwQ2hhaW5EZXNjLlNhbXBsZURlc2MuQ291bnQgPSAxOwotICAgICAgICBz
d2FwQ2hhaW5EZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7Ci0gICAgICAgIHN3YXBDaGFpbkRl
c2MuQnVmZmVyVXNhZ2UgPQotICAgICAgICAgICAgRFhHSV9VU0FHRV9SRU5ERVJfVEFSR0VUX09V
VFBVVCB8IERYR0lfVVNBR0VfU0hBREVSX0lOUFVUIHwgRFhHSV9VU0FHRV9CQUNLX0JVRkZFUjsK
LSAgICAgICAgc3dhcENoYWluRGVzYy5CdWZmZXJDb3VudCA9IDE7Ci0gICAgICAgIHN3YXBDaGFp
bkRlc2MuU2NhbGluZyA9IERYR0lfU0NBTElOR19TVFJFVENIOwotICAgICAgICBzd2FwQ2hhaW5E
ZXNjLlN3YXBFZmZlY3QgPSBEWEdJX1NXQVBfRUZGRUNUX1NFUVVFTlRJQUw7Ci0gICAgICAgIHN3
YXBDaGFpbkRlc2MuQWxwaGFNb2RlID0gRFhHSV9BTFBIQV9NT0RFX1VOU1BFQ0lGSUVEOwotICAg
ICAgICBzd2FwQ2hhaW5EZXNjLkZsYWdzID0gMDsKLSAgICAgICAgSURYR0lTd2FwQ2hhaW4xICpz
d2FwQ2hhaW4xID0gbnVsbHB0cjsKLSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBmYWN0b3J5Mi0+
Q3JlYXRlU3dhcENoYWluRm9ySHduZChkZXZpY2UsIG1XaW5kb3csICZzd2FwQ2hhaW5EZXNjLCBu
dWxscHRyLCBudWxscHRyLCAmc3dhcENoYWluMSk7Ci0gICAgICAgIGlmIChTVUNDRUVERUQocmVz
dWx0KSkKLSAgICAgICAgewotICAgICAgICAgICAgKnN3YXBDaGFpbiA9IHN0YXRpY19jYXN0PERY
R0lTd2FwQ2hhaW4qPihzd2FwQ2hhaW4xKTsKLSAgICAgICAgfQotICAgICAgICBTYWZlUmVsZWFz
ZShmYWN0b3J5Mik7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgRFhHSV9T
V0FQX0NIQUlOX0RFU0Mgc3dhcENoYWluRGVzYyA9IHt9OwotICAgIHN3YXBDaGFpbkRlc2MuQnVm
ZmVyQ291bnQgPSAxOwotICAgIHN3YXBDaGFpbkRlc2MuQnVmZmVyRGVzYy5Gb3JtYXQgPSBmb3Jt
YXQ7Ci0gICAgc3dhcENoYWluRGVzYy5CdWZmZXJEZXNjLldpZHRoID0gd2lkdGg7Ci0gICAgc3dh
cENoYWluRGVzYy5CdWZmZXJEZXNjLkhlaWdodCA9IGhlaWdodDsKLSAgICBzd2FwQ2hhaW5EZXNj
LkJ1ZmZlckRlc2MuU2NhbGluZyA9IERYR0lfTU9ERV9TQ0FMSU5HX1VOU1BFQ0lGSUVEOwotICAg
IHN3YXBDaGFpbkRlc2MuQnVmZmVyRGVzYy5TY2FubGluZU9yZGVyaW5nID0gRFhHSV9NT0RFX1ND
QU5MSU5FX09SREVSX1VOU1BFQ0lGSUVEOwotICAgIHN3YXBDaGFpbkRlc2MuQnVmZmVyRGVzYy5S
ZWZyZXNoUmF0ZS5OdW1lcmF0b3IgPSAwOwotICAgIHN3YXBDaGFpbkRlc2MuQnVmZmVyRGVzYy5S
ZWZyZXNoUmF0ZS5EZW5vbWluYXRvciA9IDE7Ci0gICAgc3dhcENoYWluRGVzYy5CdWZmZXJVc2Fn
ZSA9Ci0gICAgICAgIERYR0lfVVNBR0VfUkVOREVSX1RBUkdFVF9PVVRQVVQgfCBEWEdJX1VTQUdF
X1NIQURFUl9JTlBVVCB8IERYR0lfVVNBR0VfQkFDS19CVUZGRVI7Ci0gICAgc3dhcENoYWluRGVz
Yy5GbGFncyA9IDA7Ci0gICAgc3dhcENoYWluRGVzYy5PdXRwdXRXaW5kb3cgPSBtV2luZG93Owot
ICAgIHN3YXBDaGFpbkRlc2MuU2FtcGxlRGVzYy5Db3VudCA9IDE7Ci0gICAgc3dhcENoYWluRGVz
Yy5TYW1wbGVEZXNjLlF1YWxpdHkgPSAwOwotICAgIHN3YXBDaGFpbkRlc2MuV2luZG93ZWQgPSBU
UlVFOwotICAgIHN3YXBDaGFpbkRlc2MuU3dhcEVmZmVjdCA9IERYR0lfU1dBUF9FRkZFQ1RfRElT
Q0FSRDsKLQotICAgIHJldHVybiBmYWN0b3J5LT5DcmVhdGVTd2FwQ2hhaW4oZGV2aWNlLCAmc3dh
cENoYWluRGVzYywgc3dhcENoYWluKTsKLX0KLQotdm9pZCBOYXRpdmVXaW5kb3c6OmNvbW1pdENo
YW5nZSgpCi17Ci0gICAgaWYgKG1EZXZpY2UpCi0gICAgewotICAgICAgICBtRGV2aWNlLT5Db21t
aXQoKTsKLSAgICB9Ci19Ci19CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbjMyL05hdGl2ZVdpbmRvdzExV2luMzIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvd2luMzIvTmF0aXZlV2luZG93MTFXaW4zMi5jcHAJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS93aW4zMi9OYXRpdmVXaW5kb3cxMVdpbjMyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDIxNSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIE5hdGl2ZVdpbmRvdzExV2luMzIuY3BwOiBJbXBs
ZW1lbnRhdGlvbiBvZiBOYXRpdmVXaW5kb3cxMSB1c2luZyB3aW4zMiB3aW5kb3cgQVBJcy4KKwor
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW4zMi9OYXRpdmVXaW5kb3cx
MVdpbjMyLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVy
MTFfdXRpbHMuaCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCisjaW5jbHVkZSA8aW5p
dGd1aWQuaD4KKyNpbmNsdWRlIDxkY29tcC5oPgorCituYW1lc3BhY2UgcngKK3sKKworTmF0aXZl
V2luZG93MTFXaW4zMjo6TmF0aXZlV2luZG93MTFXaW4zMihFR0xOYXRpdmVXaW5kb3dUeXBlIHdp
bmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBoYXNB
bHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkaXJl
Y3RDb21wb3NpdGlvbikKKyAgICA6IE5hdGl2ZVdpbmRvdzExKHdpbmRvdyksCisgICAgICBtRGly
ZWN0Q29tcG9zaXRpb24oZGlyZWN0Q29tcG9zaXRpb24pLAorICAgICAgbUhhc0FscGhhKGhhc0Fs
cGhhKSwKKyAgICAgIG1EZXZpY2UobnVsbHB0ciksCisgICAgICBtQ29tcG9zaXRpb25UYXJnZXQo
bnVsbHB0ciksCisgICAgICBtVmlzdWFsKG51bGxwdHIpCit7Cit9CisKK05hdGl2ZVdpbmRvdzEx
V2luMzI6On5OYXRpdmVXaW5kb3cxMVdpbjMyKCkKK3sKKyAgICBTYWZlUmVsZWFzZShtQ29tcG9z
aXRpb25UYXJnZXQpOworICAgIFNhZmVSZWxlYXNlKG1EZXZpY2UpOworICAgIFNhZmVSZWxlYXNl
KG1WaXN1YWwpOworfQorCitib29sIE5hdGl2ZVdpbmRvdzExV2luMzI6OmluaXRpYWxpemUoKQor
eworICAgIHJldHVybiB0cnVlOworfQorCitib29sIE5hdGl2ZVdpbmRvdzExV2luMzI6OmdldENs
aWVudFJlY3QoTFBSRUNUIHJlY3QpIGNvbnN0Cit7CisgICAgcmV0dXJuIEdldENsaWVudFJlY3Qo
Z2V0TmF0aXZlV2luZG93KCksIHJlY3QpID09IFRSVUU7Cit9CisKK2Jvb2wgTmF0aXZlV2luZG93
MTFXaW4zMjo6aXNJY29uaWMoKSBjb25zdAoreworICAgIHJldHVybiBJc0ljb25pYyhnZXROYXRp
dmVXaW5kb3coKSkgPT0gVFJVRTsKK30KKworSFJFU1VMVCBOYXRpdmVXaW5kb3cxMVdpbjMyOjpj
cmVhdGVTd2FwQ2hhaW4oSUQzRDExRGV2aWNlICpkZXZpY2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBJRFhHSUZhY3RvcnkgKmZhY3RvcnksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVCBmb3JtYXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UIHdpZHRo
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVCBoZWln
aHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRFhHSVN3
YXBDaGFpbiAqKnN3YXBDaGFpbikKK3sKKyAgICBpZiAoZGV2aWNlID09IE5VTEwgfHwgZmFjdG9y
eSA9PSBOVUxMIHx8IHN3YXBDaGFpbiA9PSBOVUxMIHx8IHdpZHRoID09IDAgfHwgaGVpZ2h0ID09
IDApCisgICAgeworICAgICAgICByZXR1cm4gRV9JTlZBTElEQVJHOworICAgIH0KKworICAgIGlm
IChtRGlyZWN0Q29tcG9zaXRpb24pCisgICAgeworICAgICAgICBITU9EVUxFIGRjb21wID0gOjpH
ZXRNb2R1bGVIYW5kbGUoVEVYVCgiZGNvbXAuZGxsIikpOworICAgICAgICBpZiAoIWRjb21wKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gRV9JTlZBTElEQVJHOworICAgICAgICB9CisK
KyAgICAgICAgdHlwZWRlZiBIUkVTVUxUKFdJTkFQSSAqIFBGTl9EQ09NUE9TSVRJT05fQ1JFQVRF
X0RFVklDRSkoCisgICAgICAgICAgICBJRFhHSURldmljZSAqIGR4Z2lEZXZpY2UsIFJFRklJRCBp
aWQsIHZvaWQgKipkY29tcG9zaXRpb25EZXZpY2UpOworICAgICAgICBQRk5fRENPTVBPU0lUSU9O
X0NSRUFURV9ERVZJQ0UgY3JlYXRlRENvbXAgPQorICAgICAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDxQRk5fRENPTVBPU0lUSU9OX0NSRUFURV9ERVZJQ0U+KAorICAgICAgICAgICAgICAgIEdldFBy
b2NBZGRyZXNzKGRjb21wLCAiRENvbXBvc2l0aW9uQ3JlYXRlRGV2aWNlIikpOworICAgICAgICBp
ZiAoIWNyZWF0ZURDb21wKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gRV9JTlZBTElE
QVJHOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFtRGV2aWNlKQorICAgICAgICB7CisgICAg
ICAgICAgICBJRFhHSURldmljZSAqZHhnaURldmljZSA9IGQzZDExOjpEeW5hbWljQ2FzdENvbU9i
amVjdDxJRFhHSURldmljZT4oZGV2aWNlKTsKKyAgICAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0g
Y3JlYXRlRENvbXAoZHhnaURldmljZSwgX191dWlkb2YoSURDb21wb3NpdGlvbkRldmljZSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCAqKj4oJm1EZXZpY2UpKTsKKyAgICAgICAgICAgIFNhZmVSZWxlYXNlKGR4Z2lEZXZpY2Up
OworCisgICAgICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghbUNvbXBvc2l0aW9uVGFyZ2V0KQorICAgICAgICB7CisgICAgICAgICAgICBI
UkVTVUxUIHJlc3VsdCA9CisgICAgICAgICAgICAgICAgbURldmljZS0+Q3JlYXRlVGFyZ2V0Rm9y
SHduZChnZXROYXRpdmVXaW5kb3coKSwgVFJVRSwgJm1Db21wb3NpdGlvblRhcmdldCk7CisgICAg
ICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlm
ICghbVZpc3VhbCkKKyAgICAgICAgeworICAgICAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2
aWNlLT5DcmVhdGVWaXN1YWwoJm1WaXN1YWwpOworICAgICAgICAgICAgaWYgKEZBSUxFRChyZXN1
bHQpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBJRFhHSUZhY3RvcnkyICpmYWN0b3J5MiAg
ICAgICAgICAgICA9IGQzZDExOjpEeW5hbWljQ2FzdENvbU9iamVjdDxJRFhHSUZhY3RvcnkyPihm
YWN0b3J5KTsKKyAgICAgICAgRFhHSV9TV0FQX0NIQUlOX0RFU0MxIHN3YXBDaGFpbkRlc2MgPSB7
MH07CisgICAgICAgIHN3YXBDaGFpbkRlc2MuV2lkdGggICAgICAgICAgICAgICAgID0gd2lkdGg7
CisgICAgICAgIHN3YXBDaGFpbkRlc2MuSGVpZ2h0ICAgICAgICAgICAgICAgID0gaGVpZ2h0Owor
ICAgICAgICBzd2FwQ2hhaW5EZXNjLkZvcm1hdCAgICAgICAgICAgICAgICA9IGZvcm1hdDsKKyAg
ICAgICAgc3dhcENoYWluRGVzYy5TdGVyZW8gICAgICAgICAgICAgICAgPSBGQUxTRTsKKyAgICAg
ICAgc3dhcENoYWluRGVzYy5TYW1wbGVEZXNjLkNvdW50ICAgICAgPSAxOworICAgICAgICBzd2Fw
Q2hhaW5EZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7CisgICAgICAgIHN3YXBDaGFpbkRlc2Mu
QnVmZmVyVXNhZ2UgPQorICAgICAgICAgICAgRFhHSV9VU0FHRV9SRU5ERVJfVEFSR0VUX09VVFBV
VCB8IERYR0lfVVNBR0VfQkFDS19CVUZGRVIgfCBEWEdJX1VTQUdFX1NIQURFUl9JTlBVVDsKKyAg
ICAgICAgc3dhcENoYWluRGVzYy5CdWZmZXJDb3VudCA9IDI7CisgICAgICAgIHN3YXBDaGFpbkRl
c2MuU2NhbGluZyAgICAgPSBEWEdJX1NDQUxJTkdfU1RSRVRDSDsKKyAgICAgICAgc3dhcENoYWlu
RGVzYy5Td2FwRWZmZWN0ID0gRFhHSV9TV0FQX0VGRkVDVF9GTElQX1NFUVVFTlRJQUw7CisgICAg
ICAgIHN3YXBDaGFpbkRlc2MuQWxwaGFNb2RlID0KKyAgICAgICAgICAgIG1IYXNBbHBoYSA/IERY
R0lfQUxQSEFfTU9ERV9QUkVNVUxUSVBMSUVEIDogRFhHSV9BTFBIQV9NT0RFX0lHTk9SRTsKKyAg
ICAgICAgc3dhcENoYWluRGVzYy5GbGFncyAgICAgICAgID0gMDsKKyAgICAgICAgSURYR0lTd2Fw
Q2hhaW4xICpzd2FwQ2hhaW4xID0gbnVsbHB0cjsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPQor
ICAgICAgICAgICAgZmFjdG9yeTItPkNyZWF0ZVN3YXBDaGFpbkZvckNvbXBvc2l0aW9uKGRldmlj
ZSwgJnN3YXBDaGFpbkRlc2MsIG51bGxwdHIsICZzd2FwQ2hhaW4xKTsKKyAgICAgICAgaWYgKFNV
Q0NFRURFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICAqc3dhcENoYWluID0gc3Rh
dGljX2Nhc3Q8SURYR0lTd2FwQ2hhaW4gKj4oc3dhcENoYWluMSk7CisgICAgICAgIH0KKyAgICAg
ICAgbVZpc3VhbC0+U2V0Q29udGVudChzd2FwQ2hhaW4xKTsKKyAgICAgICAgbUNvbXBvc2l0aW9u
VGFyZ2V0LT5TZXRSb290KG1WaXN1YWwpOworICAgICAgICBTYWZlUmVsZWFzZShmYWN0b3J5Mik7
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLy8gVXNlIElEWEdJRmFjdG9y
eTI6OkNyZWF0ZVN3YXBDaGFpbkZvckh3bmQgaWYgRFhHSSAxLjIgaXMgYXZhaWxhYmxlIHRvIGNy
ZWF0ZSBhCisgICAgLy8gRFhHSV9TV0FQX0VGRkVDVF9TRVFVRU5USUFMIHN3YXAgY2hhaW4uCisg
ICAgSURYR0lGYWN0b3J5MiAqZmFjdG9yeTIgPSBkM2QxMTo6RHluYW1pY0Nhc3RDb21PYmplY3Q8
SURYR0lGYWN0b3J5Mj4oZmFjdG9yeSk7CisgICAgaWYgKGZhY3RvcnkyICE9IG51bGxwdHIpCisg
ICAgeworICAgICAgICBEWEdJX1NXQVBfQ0hBSU5fREVTQzEgc3dhcENoYWluRGVzYyA9IHswfTsK
KyAgICAgICAgc3dhcENoYWluRGVzYy5XaWR0aCAgICAgICAgICAgICAgICAgPSB3aWR0aDsKKyAg
ICAgICAgc3dhcENoYWluRGVzYy5IZWlnaHQgICAgICAgICAgICAgICAgPSBoZWlnaHQ7CisgICAg
ICAgIHN3YXBDaGFpbkRlc2MuRm9ybWF0ICAgICAgICAgICAgICAgID0gZm9ybWF0OworICAgICAg
ICBzd2FwQ2hhaW5EZXNjLlN0ZXJlbyAgICAgICAgICAgICAgICA9IEZBTFNFOworICAgICAgICBz
d2FwQ2hhaW5EZXNjLlNhbXBsZURlc2MuQ291bnQgICAgICA9IDE7CisgICAgICAgIHN3YXBDaGFp
bkRlc2MuU2FtcGxlRGVzYy5RdWFsaXR5ID0gMDsKKyAgICAgICAgc3dhcENoYWluRGVzYy5CdWZm
ZXJVc2FnZSA9CisgICAgICAgICAgICBEWEdJX1VTQUdFX1JFTkRFUl9UQVJHRVRfT1VUUFVUIHwg
RFhHSV9VU0FHRV9TSEFERVJfSU5QVVQgfCBEWEdJX1VTQUdFX0JBQ0tfQlVGRkVSOworICAgICAg
ICBzd2FwQ2hhaW5EZXNjLkJ1ZmZlckNvdW50ICAgPSAxOworICAgICAgICBzd2FwQ2hhaW5EZXNj
LlNjYWxpbmcgICAgICAgPSBEWEdJX1NDQUxJTkdfU1RSRVRDSDsKKyAgICAgICAgc3dhcENoYWlu
RGVzYy5Td2FwRWZmZWN0ICAgID0gRFhHSV9TV0FQX0VGRkVDVF9TRVFVRU5USUFMOworICAgICAg
ICBzd2FwQ2hhaW5EZXNjLkFscGhhTW9kZSAgICAgPSBEWEdJX0FMUEhBX01PREVfVU5TUEVDSUZJ
RUQ7CisgICAgICAgIHN3YXBDaGFpbkRlc2MuRmxhZ3MgICAgICAgICA9IDA7CisgICAgICAgIElE
WEdJU3dhcENoYWluMSAqc3dhcENoYWluMSA9IG51bGxwdHI7CisgICAgICAgIEhSRVNVTFQgcmVz
dWx0ID0gZmFjdG9yeTItPkNyZWF0ZVN3YXBDaGFpbkZvckh3bmQoZGV2aWNlLCBnZXROYXRpdmVX
aW5kb3coKSwgJnN3YXBDaGFpbkRlc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgJnN3YXBDaGFpbjEp
OworICAgICAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGZhY3RvcnkyLT5NYWtlV2luZG93QXNzb2NpYXRpb24oZ2V0TmF0aXZlV2luZG93KCksIERYR0lf
TVdBX05PX0FMVF9FTlRFUik7CisgICAgICAgICAgICAqc3dhcENoYWluID0gc3RhdGljX2Nhc3Q8
SURYR0lTd2FwQ2hhaW4gKj4oc3dhcENoYWluMSk7CisgICAgICAgIH0KKyAgICAgICAgU2FmZVJl
bGVhc2UoZmFjdG9yeTIpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIERY
R0lfU1dBUF9DSEFJTl9ERVNDIHN3YXBDaGFpbkRlc2MgICAgICAgICAgICAgICA9IHt9OworICAg
IHN3YXBDaGFpbkRlc2MuQnVmZmVyQ291bnQgICAgICAgICAgICAgICAgICAgICAgICA9IDE7Cisg
ICAgc3dhcENoYWluRGVzYy5CdWZmZXJEZXNjLkZvcm1hdCAgICAgICAgICAgICAgICAgID0gZm9y
bWF0OworICAgIHN3YXBDaGFpbkRlc2MuQnVmZmVyRGVzYy5XaWR0aCAgICAgICAgICAgICAgICAg
ICA9IHdpZHRoOworICAgIHN3YXBDaGFpbkRlc2MuQnVmZmVyRGVzYy5IZWlnaHQgICAgICAgICAg
ICAgICAgICA9IGhlaWdodDsKKyAgICBzd2FwQ2hhaW5EZXNjLkJ1ZmZlckRlc2MuU2NhbGluZyAg
ICAgICAgICAgICAgICAgPSBEWEdJX01PREVfU0NBTElOR19VTlNQRUNJRklFRDsKKyAgICBzd2Fw
Q2hhaW5EZXNjLkJ1ZmZlckRlc2MuU2NhbmxpbmVPcmRlcmluZyAgICAgICAgPSBEWEdJX01PREVf
U0NBTkxJTkVfT1JERVJfVU5TUEVDSUZJRUQ7CisgICAgc3dhcENoYWluRGVzYy5CdWZmZXJEZXNj
LlJlZnJlc2hSYXRlLk51bWVyYXRvciAgID0gMDsKKyAgICBzd2FwQ2hhaW5EZXNjLkJ1ZmZlckRl
c2MuUmVmcmVzaFJhdGUuRGVub21pbmF0b3IgPSAxOworICAgIHN3YXBDaGFpbkRlc2MuQnVmZmVy
VXNhZ2UgPQorICAgICAgICBEWEdJX1VTQUdFX1JFTkRFUl9UQVJHRVRfT1VUUFVUIHwgRFhHSV9V
U0FHRV9TSEFERVJfSU5QVVQgfCBEWEdJX1VTQUdFX0JBQ0tfQlVGRkVSOworICAgIHN3YXBDaGFp
bkRlc2MuRmxhZ3MgICAgICAgICAgICAgID0gMDsKKyAgICBzd2FwQ2hhaW5EZXNjLk91dHB1dFdp
bmRvdyAgICAgICA9IGdldE5hdGl2ZVdpbmRvdygpOworICAgIHN3YXBDaGFpbkRlc2MuU2FtcGxl
RGVzYy5Db3VudCAgID0gMTsKKyAgICBzd2FwQ2hhaW5EZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9
IDA7CisgICAgc3dhcENoYWluRGVzYy5XaW5kb3dlZCAgICAgICAgICAgPSBUUlVFOworICAgIHN3
YXBDaGFpbkRlc2MuU3dhcEVmZmVjdCAgICAgICAgID0gRFhHSV9TV0FQX0VGRkVDVF9ESVNDQVJE
OworCisgICAgSFJFU1VMVCByZXN1bHQgPSBmYWN0b3J5LT5DcmVhdGVTd2FwQ2hhaW4oZGV2aWNl
LCAmc3dhcENoYWluRGVzYywgc3dhcENoYWluKTsKKyAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkp
CisgICAgeworICAgICAgICBmYWN0b3J5LT5NYWtlV2luZG93QXNzb2NpYXRpb24oZ2V0TmF0aXZl
V2luZG93KCksIERYR0lfTVdBX05PX0FMVF9FTlRFUik7CisgICAgfQorICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK3ZvaWQgTmF0aXZlV2luZG93MTFXaW4zMjo6Y29tbWl0Q2hhbmdlKCkKK3sKKyAg
ICBpZiAobURldmljZSkKKyAgICB7CisgICAgICAgIG1EZXZpY2UtPkNvbW1pdCgpOworICAgIH0K
K30KKworLy8gc3RhdGljCitib29sIE5hdGl2ZVdpbmRvdzExV2luMzI6OklzVmFsaWROYXRpdmVX
aW5kb3coRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3cpCit7CisgICAgcmV0dXJuIElzV2luZG93
KHdpbmRvdykgPT0gVFJVRTsKK30KK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW4zMi9OYXRp
dmVXaW5kb3cxMVdpbjMyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW4zMi9OYXRpdmVXaW5kb3cxMVdpbjMy
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS93aW4zMi9OYXRpdmVXaW5kb3cxMVdpbjMyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw1MiBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIE5hdGl2ZVdpbmRvdzEx
V2luMzIuaDogSW1wbGVtZW50YXRpb24gb2YgTmF0aXZlV2luZG93MTEgdXNpbmcgd2luMzIgd2lu
ZG93IEFQSXMuCisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfRDNEX0QzRDExX1dJTjMyX05B
VElWRVdJTkRPVzExV0lOMzJfSF8KKyNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfRDNEX0QzRDEx
X1dJTjMyX05BVElWRVdJTkRPVzExV0lOMzJfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9OYXRpdmVXaW5kb3cxMS5oIgorCit0eXBlZGVmIGludGVyZmFjZSBJRENv
bXBvc2l0aW9uRGV2aWNlIElEQ29tcG9zaXRpb25EZXZpY2U7Cit0eXBlZGVmIGludGVyZmFjZSBJ
RENvbXBvc2l0aW9uVGFyZ2V0IElEQ29tcG9zaXRpb25UYXJnZXQ7Cit0eXBlZGVmIGludGVyZmFj
ZSBJRENvbXBvc2l0aW9uVmlzdWFsIElEQ29tcG9zaXRpb25WaXN1YWw7CisKK25hbWVzcGFjZSBy
eAoreworCitjbGFzcyBOYXRpdmVXaW5kb3cxMVdpbjMyIDogcHVibGljIE5hdGl2ZVdpbmRvdzEx
Cit7CisgIHB1YmxpYzoKKyAgICBOYXRpdmVXaW5kb3cxMVdpbjMyKEVHTE5hdGl2ZVdpbmRvd1R5
cGUgd2luZG93LCBib29sIGhhc0FscGhhLCBib29sIGRpcmVjdENvbXBvc2l0aW9uKTsKKyAgICB+
TmF0aXZlV2luZG93MTFXaW4zMigpIG92ZXJyaWRlOworCisgICAgYm9vbCBpbml0aWFsaXplKCkg
b3ZlcnJpZGU7CisgICAgYm9vbCBnZXRDbGllbnRSZWN0KExQUkVDVCByZWN0KSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIGlzSWNvbmljKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBIUkVTVUxU
IGNyZWF0ZVN3YXBDaGFpbihJRDNEMTFEZXZpY2UgKmRldmljZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJRFhHSUZhY3RvcnkgKmZhY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVQgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJ
TlQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVCBoZWlnaHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSURYR0lTd2FwQ2hhaW4gKipzd2FwQ2hhaW4pIG92ZXJy
aWRlOworCisgICAgdm9pZCBjb21taXRDaGFuZ2UoKSBvdmVycmlkZTsKKworICAgIHN0YXRpYyBi
b29sIElzVmFsaWROYXRpdmVXaW5kb3coRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3cpOworCisg
IHByaXZhdGU6CisgICAgYm9vbCBtRGlyZWN0Q29tcG9zaXRpb247CisgICAgYm9vbCBtSGFzQWxw
aGE7CisgICAgSURDb21wb3NpdGlvbkRldmljZSAqbURldmljZTsKKyAgICBJRENvbXBvc2l0aW9u
VGFyZ2V0ICptQ29tcG9zaXRpb25UYXJnZXQ7CisgICAgSURDb21wb3NpdGlvblZpc3VhbCAqbVZp
c3VhbDsKK307CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JF
TkRFUkVSX0QzRF9EM0QxMV9XSU4zMl9OQVRJVkVXSU5ET1cxMVdJTjMyX0hfCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbnJ0
L0NvcmVXaW5kb3dOYXRpdmVXaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQvQ29yZVdpbmRv
d05hdGl2ZVdpbmRvdy5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQvQ29yZVdpbmRvd05h
dGl2ZVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDEyICs4OCwxMiBAQAogICAgICAg
ICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgU0laRSBjb3JlV2luZG93
U2l6ZTsKKyAgICAgICAgICAgIFNpemUgY29yZVdpbmRvd1NpemU7CiAgICAgICAgICAgICByZXN1
bHQgPSBHZXRDb3JlV2luZG93U2l6ZUluUGl4ZWxzKG1Db3JlV2luZG93LCAmY29yZVdpbmRvd1Np
emUpOwogCiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpCiAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgbUNsaWVudFJlY3QgPSB7IDAsIDAsIHN0YXRpY19jYXN0PGxvbmc+
KGNvcmVXaW5kb3dTaXplLmN4ICogbVN3YXBDaGFpblNjYWxlKSwgc3RhdGljX2Nhc3Q8bG9uZz4o
Y29yZVdpbmRvd1NpemUuY3kgKiBtU3dhcENoYWluU2NhbGUpIH07CisgICAgICAgICAgICAgICAg
bUNsaWVudFJlY3QgPSBjbGllbnRSZWN0KGNvcmVXaW5kb3dTaXplKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KQEAgLTEzNSwxMiArMTM1LDEyIEBACiB9CiAKIEhSRVNVTFQgQ29y
ZVdpbmRvd05hdGl2ZVdpbmRvdzo6Y3JlYXRlU3dhcENoYWluKElEM0QxMURldmljZSAqZGV2aWNl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSUZh
Y3RvcnkgKmZhY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBJRFhHSUZhY3RvcnkyICpmYWN0b3J5LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVQgZm9ybWF0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHdpZHRoLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgY29udGFpbnNBbHBoYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lTd2FwQ2hhaW4gKipzd2FwQ2hhaW4pCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRFhHSVN3YXBDaGFpbjEgKipzd2Fw
Q2hhaW4pCiB7CiAgICAgaWYgKGRldmljZSA9PSBOVUxMIHx8IGZhY3RvcnkgPT0gTlVMTCB8fCBz
d2FwQ2hhaW4gPT0gTlVMTCB8fCB3aWR0aCA9PSAwIHx8IGhlaWdodCA9PSAwKQogICAgIHsKQEAg
LTE2NywxNyArMTY3LDYgQEAKICAgICBIUkVTVUxUIHJlc3VsdCA9IGZhY3RvcnktPkNyZWF0ZVN3
YXBDaGFpbkZvckNvcmVXaW5kb3coZGV2aWNlLCBtQ29yZVdpbmRvdy5HZXQoKSwgJnN3YXBDaGFp
bkRlc2MsIG51bGxwdHIsIG5ld1N3YXBDaGFpbi5SZWxlYXNlQW5kR2V0QWRkcmVzc09mKCkpOwog
ICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkKICAgICB7Ci0KLSNpZiAoV0lOQVBJX0ZBTUlMWSA9
PSBXSU5BUElfRkFNSUxZX1BIT05FX0FQUCkKLSAgICAgICAgLy8gVGVzdCBpZiBzd2FwY2hhaW4g
c3VwcG9ydHMgcmVzaXplLiAgT24gV2luZG93cyBQaG9uZSBkZXZpY2VzLCB0aGlzIHdpbGwgcmV0
dXJuIERYR0lfRVJST1JfVU5TVVBQT1JURUQuICBPbgotICAgICAgICAvLyBvdGhlciBkZXZpY2Vz
IERYR0lfRVJST1JfSU5WQUxJRF9DQUxMIHNob3VsZCBiZSByZXR1cm5lZCBiZWNhdXNlIHRoZSBj
b21iaW5hdGlvbiBvZiBmbGFncyBwYXNzZWQKLSAgICAgICAgLy8gKERYR0lfU1dBUF9DSEFJTl9G
TEFHX05PTlBSRVJPVEFURUQgfCBEWEdJX1NXQVBfQ0hBSU5fRkxBR19HRElfQ09NUEFUSUJMRSkg
YXJlIGludmFsaWQgZmxhZyBjb21iaW5hdGlvbnMuCi0gICAgICAgIGlmIChuZXdTd2FwQ2hhaW4t
PlJlc2l6ZUJ1ZmZlcnMoc3dhcENoYWluRGVzYy5CdWZmZXJDb3VudCwgc3dhcENoYWluRGVzYy5X
aWR0aCwgc3dhcENoYWluRGVzYy5IZWlnaHQsIHN3YXBDaGFpbkRlc2MuRm9ybWF0LCBEWEdJX1NX
QVBfQ0hBSU5fRkxBR19OT05QUkVST1RBVEVEIHwgRFhHSV9TV0FQX0NIQUlOX0ZMQUdfR0RJX0NP
TVBBVElCTEUpID09IERYR0lfRVJST1JfVU5TVVBQT1JURUQpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIG1TdXBwb3J0c1N3YXBDaGFpblJlc2l6ZSA9IGZhbHNlOwotICAgICAgICB9Ci0jZW5kaWYg
Ly8gKFdJTkFQSV9GQU1JTFkgPT0gV0lOQVBJX0ZBTUlMWV9QSE9ORV9BUFApCi0KICAgICAgICAg
cmVzdWx0ID0gbmV3U3dhcENoYWluLkNvcHlUbyhzd2FwQ2hhaW4pOwogICAgIH0KIApAQCAtMTk0
LDcgKzE4Myw4IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIEhSRVNVTFQgQ29y
ZVdpbmRvd05hdGl2ZVdpbmRvdzo6c2NhbGVTd2FwQ2hhaW4oY29uc3QgU0laRSAmd2luZG93U2l6
ZSwgY29uc3QgUkVDVCAmY2xpZW50UmVjdCkKK2lubGluZSBIUkVTVUxUIENvcmVXaW5kb3dOYXRp
dmVXaW5kb3c6OnNjYWxlU3dhcENoYWluKGNvbnN0IFNpemUgJndpbmRvd1NpemUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSRUNU
ICZjbGllbnRSZWN0KQogewogICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gZG8gYW55IGFkZGl0aW9u
YWwgd29yayB0byBzY2FsZSBDb3JlV2luZG93IHN3YXBjaGFpbnMuCiAgICAgLy8gVXNpbmcgRFhH
SV9TQ0FMSU5HX1NUUkVUQ0ggdG8gY3JlYXRlIHRoZSBzd2FwY2hhaW4gYWJvdmUgZG9lcyBhbGwg
dGhlIG5lY2Vzc2FyeSB3b3JrLgpAQCAtMjAxLDcgKzE5MSw4IEBACiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAKLUhSRVNVTFQgR2V0Q29yZVdpbmRvd1NpemVJblBpeGVscyhjb25zdCBDb21QdHI8QUJJ
OjpXaW5kb3dzOjpVSTo6Q29yZTo6SUNvcmVXaW5kb3c+JiBjb3JlV2luZG93LCBTSVpFICp3aW5k
b3dTaXplKQorSFJFU1VMVCBHZXRDb3JlV2luZG93U2l6ZUluUGl4ZWxzKGNvbnN0IENvbVB0cjxB
Qkk6OldpbmRvd3M6OlVJOjpDb3JlOjpJQ29yZVdpbmRvdz4gJmNvcmVXaW5kb3csCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZSAqd2luZG93U2l6ZSkKIHsKICAgICBBQkk6
OldpbmRvd3M6OkZvdW5kYXRpb246OlJlY3QgYm91bmRzOwogICAgIEhSRVNVTFQgcmVzdWx0ID0g
Y29yZVdpbmRvdy0+Z2V0X0JvdW5kcygmYm91bmRzKTsKQEAgLTIzMCw5ICsyMjEsOSBAQAogICAg
IHJldHVybiA5Ni4wZjsKIH0KIAotbG9uZyBDb252ZXJ0RGlwc1RvUGl4ZWxzKGZsb2F0IGRpcHMp
CitmbG9hdCBDb252ZXJ0RGlwc1RvUGl4ZWxzKGZsb2F0IGRpcHMpCiB7CiAgICAgc3RhdGljIGNv
bnN0IGZsb2F0IGRpcHNQZXJJbmNoID0gOTYuMGY7Ci0gICAgcmV0dXJuIGxyb3VuZCgoZGlwcyAq
IEdldExvZ2ljYWxEcGkoKSAvIGRpcHNQZXJJbmNoKSk7CisgICAgcmV0dXJuIGRpcHMgKiBHZXRM
b2dpY2FsRHBpKCkgLyBkaXBzUGVySW5jaDsKIH0KIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQvQ29yZVdpbmRvd05h
dGl2ZVdpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQvQ29yZVdpbmRvd05hdGl2ZVdpbmRvdy5o
CShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbnJ0L0NvcmVXaW5kb3dOYXRpdmVXaW5kb3cuaAkod29y
a2luZyBjb3B5KQpAQCAtMTMsMTEgKzEzLDEzIEBACiAKICNpbmNsdWRlIDxtZW1vcnk+CiAKKyNp
bmNsdWRlIDxFR0wvZWdscGxhdGZvcm0uaD4KKwogdHlwZWRlZiBBQkk6OldpbmRvd3M6OkZvdW5k
YXRpb246Ol9fRklUeXBlZEV2ZW50SGFuZGxlcl8yX1dpbmRvd3NfX0NVSV9fQ0NvcmVfX0NDb3Jl
V2luZG93X1dpbmRvd3NfX0NVSV9fQ0NvcmVfX0NXaW5kb3dTaXplQ2hhbmdlZEV2ZW50QXJnc190
IElXaW5kb3dTaXplQ2hhbmdlZEV2ZW50SGFuZGxlcjsKIAogbmFtZXNwYWNlIHJ4CiB7Ci1sb25n
IENvbnZlcnREaXBzVG9QaXhlbHMoZmxvYXQgZGlwcyk7CitmbG9hdCBDb252ZXJ0RGlwc1RvUGl4
ZWxzKGZsb2F0IGRpcHMpOwogCiBjbGFzcyBDb3JlV2luZG93TmF0aXZlV2luZG93IDogcHVibGlj
IEluc3BlY3RhYmxlTmF0aXZlV2luZG93LCBwdWJsaWMgc3RkOjplbmFibGVfc2hhcmVkX2Zyb21f
dGhpczxDb3JlV2luZG93TmF0aXZlV2luZG93PgogewpAQCAtMjYsMTUgKzI4LDE1IEBACiAKICAg
ICBib29sIGluaXRpYWxpemUoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIElQcm9wZXJ0eVNl
dCAqcHJvcGVydHlTZXQpIG92ZXJyaWRlOwogICAgIEhSRVNVTFQgY3JlYXRlU3dhcENoYWluKElE
M0QxMURldmljZSAqZGV2aWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lGYWN0
b3J5ICpmYWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEWEdJRmFjdG9yeTIg
KmZhY3RvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVQgZm9ybWF0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB3aWR0aCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaGVpZ2h0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgY29udGFpbnNBbHBoYSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJU3dhcENoYWluICoqc3dhcENoYWluKSBvdmVycmlkZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJRFhHSVN3YXBDaGFpbjEgKipzd2FwQ2hhaW4pIG92ZXJyaWRlOwog
CiAgIHByb3RlY3RlZDoKLSAgICBIUkVTVUxUIHNjYWxlU3dhcENoYWluKGNvbnN0IFNJWkUgJndp
bmRvd1NpemUsIGNvbnN0IFJFQ1QgJmNsaWVudFJlY3QpIG92ZXJyaWRlOworICAgIEhSRVNVTFQg
c2NhbGVTd2FwQ2hhaW4oY29uc3QgU2l6ZSAmd2luZG93U2l6ZSwgY29uc3QgUkVDVCAmY2xpZW50
UmVjdCkgb3ZlcnJpZGU7CiAKICAgICBib29sIHJlZ2lzdGVyRm9yU2l6ZUNoYW5nZUV2ZW50cygp
OwogICAgIHZvaWQgdW5yZWdpc3RlckZvclNpemVDaGFuZ2VFdmVudHMoKTsKQEAgLTcwLDcgKzcy
LDggQEAKICAgICAgICAgICAgIEFCSTo6V2luZG93czo6Rm91bmRhdGlvbjo6U2l6ZSB3aW5kb3dT
aXplOwogICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChzaXplQ2hhbmdlZEV2ZW50QXJncy0+Z2V0
X1NpemUoJndpbmRvd1NpemUpKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBTSVpF
IHdpbmRvd1NpemVJblBpeGVscyA9IHsgQ29udmVydERpcHNUb1BpeGVscyh3aW5kb3dTaXplLldp
ZHRoKSwgQ29udmVydERpcHNUb1BpeGVscyh3aW5kb3dTaXplLkhlaWdodCkgfTsKKyAgICAgICAg
ICAgICAgICBTaXplIHdpbmRvd1NpemVJblBpeGVscyA9IHtDb252ZXJ0RGlwc1RvUGl4ZWxzKHdp
bmRvd1NpemUuV2lkdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENvbnZlcnREaXBzVG9QaXhlbHMod2luZG93U2l6ZS5IZWlnaHQpfTsKICAgICAgICAgICAg
ICAgICBob3N0LT5zZXROZXdDbGllbnRTaXplKHdpbmRvd1NpemVJblBpeGVscyk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KQEAgLTgyLDcgKzg1LDggQEAKICAgICBzdGQ6OndlYWtfcHRyPElu
c3BlY3RhYmxlTmF0aXZlV2luZG93PiBtSG9zdDsKIH07CiAKLUhSRVNVTFQgR2V0Q29yZVdpbmRv
d1NpemVJblBpeGVscyhjb25zdCBDb21QdHI8QUJJOjpXaW5kb3dzOjpVSTo6Q29yZTo6SUNvcmVX
aW5kb3c+JiBjb3JlV2luZG93LCBTSVpFICp3aW5kb3dTaXplKTsKK0hSRVNVTFQgR2V0Q29yZVdp
bmRvd1NpemVJblBpeGVscyhjb25zdCBDb21QdHI8QUJJOjpXaW5kb3dzOjpVSTo6Q29yZTo6SUNv
cmVXaW5kb3c+ICZjb3JlV2luZG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNpemUgKndpbmRvd1NpemUpOwogfQogCiAjZW5kaWYgLy8gTElCQU5HTEVfUkVOREVSRVJfRDNE
X0QzRDExX1dJTlJUX0NPUkVXSU5ET1dOQVRJVkVXSU5ET1dfSF8KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQvSW5zcGVj
dGFibGVOYXRpdmVXaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQvSW5zcGVjdGFibGVOYXRp
dmVXaW5kb3cuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbnJ0L0luc3BlY3RhYmxlTmF0aXZl
V2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEsOTcgKzExLDcgQEAKIAogbmFtZXNwYWNl
IHJ4CiB7Ci1OYXRpdmVXaW5kb3c6Ok5hdGl2ZVdpbmRvdyhFR0xOYXRpdmVXaW5kb3dUeXBlIHdp
bmRvdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25m
aWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRpcmVjdENvbXBvc2l0aW9uKQot
ewotICAgIG1XaW5kb3cgPSB3aW5kb3c7Ci0gICAgbUNvbmZpZyA9IGNvbmZpZzsKLX0KIAotTmF0
aXZlV2luZG93Ojp+TmF0aXZlV2luZG93KCkKLXsKLX0KLQotdm9pZCBOYXRpdmVXaW5kb3c6OmNv
bW1pdENoYW5nZSgpCi17Ci19Ci0KLWJvb2wgTmF0aXZlV2luZG93Ojppbml0aWFsaXplKCkKLXsK
LSAgICAvLyBJZiB0aGUgbmF0aXZlIHdpbmRvdyB0eXBlIGlzIGEgSVByb3BlcnR5U2V0LCBleHRy
YWN0IHRoZQotICAgIC8vIEVHTE5hdGl2ZVdpbmRvd1R5cGUgKElJbnNwZWN0YWJsZSkgYW5kIGlu
aXRpYWxpemUgdGhlCi0gICAgLy8gcHJvcGVyIGhvc3Qgd2l0aCB0aGlzIElQcm9wZXJ0eVNldC4K
LSAgICBDb21QdHI8QUJJOjpXaW5kb3dzOjpGb3VuZGF0aW9uOjpDb2xsZWN0aW9uczo6SVByb3Bl
cnR5U2V0PiBwcm9wZXJ0eVNldDsKLSAgICBDb21QdHI8SUluc3BlY3RhYmxlPiBlZ2xOYXRpdmVX
aW5kb3c7Ci0gICAgaWYgKElzRUdMQ29uZmlndXJlZFByb3BlcnR5U2V0KG1XaW5kb3csICZwcm9w
ZXJ0eVNldCwgJmVnbE5hdGl2ZVdpbmRvdykpCi0gICAgewotICAgICAgICAvLyBBIHByb3BlcnR5
IHNldCB3YXMgZm91bmQgYW5kIHRoZSBFR0xOYXRpdmVXaW5kb3dUeXBlIHdhcwotICAgICAgICAv
LyByZXRyaWV2ZWQuIFRoZSBtV2luZG93IG1lbWJlciBvZiB0aGUgaG9zdCB0byBtdXN0IGJlIHVw
ZGF0ZWQKLSAgICAgICAgLy8gdG8gdXNlIHRoZSBFR0xOYXRpdmVXaW5kb3dUeXBlIHNwZWNpZmll
ZCBpbiB0aGUgcHJvcGVydHkgc2V0LgotICAgICAgICAvLyBtV2luZG93IGlzIHRyZWF0ZWQgYXMg
YSByYXcgcG9pbnRlciBub3QgYW4gQWRkUmVmJ2QgaW50ZXJmYWNlLCBzbwotICAgICAgICAvLyB0
aGUgb2xkIG1XaW5kb3cgZG9lcyBub3QgbmVlZCBhIFJlbGVhc2UoKSBiZWZvcmUgdGhpcyBhc3Np
Z25tZW50LgotICAgICAgICBtV2luZG93ID0gZWdsTmF0aXZlV2luZG93LkdldCgpOwotICAgIH0K
LQotICAgIENvbVB0cjxBQkk6OldpbmRvd3M6OlVJOjpDb3JlOjpJQ29yZVdpbmRvdz4gY29yZVdp
bmRvdzsKLSAgICBDb21QdHI8QUJJOjpXaW5kb3dzOjpVSTo6WGFtbDo6Q29udHJvbHM6OklTd2Fw
Q2hhaW5QYW5lbD4gc3dhcENoYWluUGFuZWw7Ci0gICAgaWYgKElzQ29yZVdpbmRvdyhtV2luZG93
LCAmY29yZVdpbmRvdykpCi0gICAgewotICAgICAgICBtSW1wbCA9IHN0ZDo6bWFrZV9zaGFyZWQ8
Q29yZVdpbmRvd05hdGl2ZVdpbmRvdz4oKTsKLSAgICAgICAgaWYgKG1JbXBsKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gbUltcGwtPmluaXRpYWxpemUobVdpbmRvdywgcHJvcGVydHlT
ZXQuR2V0KCkpOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKElzU3dhcENoYWluUGFu
ZWwobVdpbmRvdywgJnN3YXBDaGFpblBhbmVsKSkKLSAgICB7Ci0gICAgICAgIG1JbXBsID0gc3Rk
OjptYWtlX3NoYXJlZDxTd2FwQ2hhaW5QYW5lbE5hdGl2ZVdpbmRvdz4oKTsKLSAgICAgICAgaWYg
KG1JbXBsKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbUltcGwtPmluaXRpYWxpemUo
bVdpbmRvdywgcHJvcGVydHlTZXQuR2V0KCkpOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UK
LSAgICB7Ci0gICAgICAgIEVSUigiSW52YWxpZCBJSW5zcGVjdGFibGUgRUdMTmF0aXZlV2luZG93
VHlwZSBkZXRlY3RlZC4gVmFsaWQgSUluc3BlY3RhYmxlcyBpbmNsdWRlIElDb3JlV2luZG93LCBJ
U3dhcENoYWluUGFuZWwgYW5kIElQcm9wZXJ0eVNldCIpOwotICAgIH0KLQotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotYm9vbCBOYXRpdmVXaW5kb3c6OmdldENsaWVudFJlY3QoUkVDVCAqcmVjdCkK
LXsKLSAgICBpZiAobUltcGwpCi0gICAgewotICAgICAgICByZXR1cm4gbUltcGwtPmdldENsaWVu
dFJlY3QocmVjdCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIE5hdGl2
ZVdpbmRvdzo6aXNJY29uaWMoKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBOYXRp
dmVXaW5kb3c6OmlzVmFsaWROYXRpdmVXaW5kb3coRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3cp
Ci17Ci0gICAgcmV0dXJuIElzVmFsaWRFR0xOYXRpdmVXaW5kb3dUeXBlKHdpbmRvdyk7Ci19Ci0K
LUhSRVNVTFQgTmF0aXZlV2luZG93OjpjcmVhdGVTd2FwQ2hhaW4oSUQzRDExRGV2aWNlICpkZXZp
Y2UsIERYR0lGYWN0b3J5ICpmYWN0b3J5LCBEWEdJX0ZPUk1BVCBmb3JtYXQsIHVuc2lnbmVkIGlu
dCB3aWR0aCwgdW5zaWduZWQgaW50IGhlaWdodCwgRFhHSVN3YXBDaGFpbiAqKnN3YXBDaGFpbikK
LXsKLSAgICBpZiAobUltcGwpCi0gICAgewotICAgICAgICBib29sIGNvbnRhaW5zQWxwaGEgPSAo
bUNvbmZpZy0+YWxwaGFTaXplID4gMCk7Ci0gICAgICAgIHJldHVybiBtSW1wbC0+Y3JlYXRlU3dh
cENoYWluKGRldmljZSwgZmFjdG9yeSwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBjb250YWluc0Fs
cGhhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2FwQ2hhaW4pOwot
ICAgIH0KLQotICAgIHJldHVybiBFX1VORVhQRUNURUQ7Ci19Ci0KIGJvb2wgSXNDb3JlV2luZG93
KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBDb21QdHI8QUJJOjpXaW5kb3dzOjpVSTo6Q29y
ZTo6SUNvcmVXaW5kb3c+ICpjb3JlV2luZG93KQogewogICAgIGlmICghd2luZG93KQpAQCAtMjA3
LDE4ICsxMTcsNiBAQAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotLy8gQSBWYWxpZCBFR0xOYXRp
dmVXaW5kb3dUeXBlIElJbnNwZWN0YWJsZSBjYW4gb25seSBiZToKLS8vCi0vLyBJQ29yZVdpbmRv
dwotLy8gSVN3YXBDaGFpblBhbmVsCi0vLyBJUHJvcGVydHlTZXQKLS8vCi0vLyBBbnl0aGluZyBl
bHNlIHdpbGwgYmUgcmVqZWN0ZWQgYXMgYW4gaW52YWxpZCBJSW5zcGVjdGFibGUuCi1ib29sIElz
VmFsaWRFR0xOYXRpdmVXaW5kb3dUeXBlKEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KQotewot
ICAgIHJldHVybiBJc0NvcmVXaW5kb3cod2luZG93KSB8fCBJc1N3YXBDaGFpblBhbmVsKHdpbmRv
dykgfHwgSXNFR0xDb25maWd1cmVkUHJvcGVydHlTZXQod2luZG93KTsKLX0KLQogLy8gUmV0cmll
dmUgYW4gb3B0aW9uYWwgcHJvcGVydHkgZnJvbSBhIHByb3BlcnR5IHNldAogSFJFU1VMVCBHZXRP
cHRpb25hbFByb3BlcnR5VmFsdWUoY29uc3QgQ29tUHRyPEFCSTo6V2luZG93czo6Rm91bmRhdGlv
bjo6Q29sbGVjdGlvbnM6OklNYXA8SFNUUklORywgSUluc3BlY3RhYmxlKj4+ICZwcm9wZXJ0eU1h
cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QgKnByb3Bl
cnR5TmFtZSwKQEAgLTM2OSw0ICsyNjcsMTAgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitS
RUNUIEluc3BlY3RhYmxlTmF0aXZlV2luZG93OjpjbGllbnRSZWN0KGNvbnN0IFNpemUgJnNpemUp
Cit7CisgICAgLy8gV2UgZG9uJ3QgaGF2ZSB0byBjaGVjayBpZiBhIHN3YXBjaGFpbiBzY2FsZSB3
YXMgc3BlY2lmaWVkIGhlcmU7IHRoZSBkZWZhdWx0IHZhbHVlIGlzIDEuMGYKKyAgICAvLyB3aGlj
aCB3aWxsIGhhdmUgbm8gZWZmZWN0LgorICAgIHJldHVybiB7MCwgMCwgbHJvdW5kKHNpemUuV2lk
dGggKiBtU3dhcENoYWluU2NhbGUpLCBscm91bmQoc2l6ZS5IZWlnaHQgKiBtU3dhcENoYWluU2Nh
bGUpfTsKIH0KK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvd2lucnQvSW5zcGVjdGFibGVOYXRpdmVXaW5kb3cuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL3dpbnJ0L0luc3BlY3RhYmxlTmF0aXZlV2luZG93LmgJKHJldmlzaW9uIDIwODAyMSkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvd2lucnQvSW5zcGVjdGFibGVOYXRpdmVXaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMTAs
MTQgKzEwLDE4IEBACiAjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9EM0QxMV9XSU5SVF9J
TlNQRUNUQUJMRU5BVElWRVdJTkRPV19IXwogI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9EM0Rf
RDNEMTFfV0lOUlRfSU5TUEVDVEFCTEVOQVRJVkVXSU5ET1dfSF8KIAotI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9OYXRpdmVXaW5kb3cuaCIKLQorI2luY2x1ZGUgImNvbW1v
bi9kZWJ1Zy5oIgogI2luY2x1ZGUgImNvbW1vbi9wbGF0Zm9ybS5oIgogCiAjaW5jbHVkZSAiYW5n
bGVfd2luZG93c3N0b3JlLmgiCiAKKyNpbmNsdWRlIDxFR0wvZWdscGxhdGZvcm0uaD4KKworI2lu
Y2x1ZGUgPHdpbmRvd3MuYXBwbGljYXRpb25tb2RlbC5jb3JlLmg+CiAjaW5jbHVkZSA8d2luZG93
cy51aS54YW1sLmg+CiAjaW5jbHVkZSA8d2luZG93cy51aS54YW1sLm1lZGlhLmR4aW50ZXJvcC5o
PgorI2luY2x1ZGUgPHdybC5oPgorI2luY2x1ZGUgPHdybC93cmFwcGVycy9jb3Jld3JhcHBlcnMu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIE1pY3Jvc29mdDo6V1JMOwogdXNpbmcgbmFtZXNwYWNlIE1p
Y3Jvc29mdDo6V1JMOjpXcmFwcGVyczsKQEAgLTQ0LDEyICs0OCwxMiBAQAogCiAgICAgdmlydHVh
bCBib29sIGluaXRpYWxpemUoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIElQcm9wZXJ0eVNl
dCAqcHJvcGVydHlTZXQpID0gMDsKICAgICB2aXJ0dWFsIEhSRVNVTFQgY3JlYXRlU3dhcENoYWlu
KElEM0QxMURldmljZSAqZGV2aWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSUZhY3RvcnkgKmZhY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJRFhHSUZhY3RvcnkyICpmYWN0b3J5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVQgZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgY29udGFpbnNBbHBoYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lTd2FwQ2hhaW4gKipzd2FwQ2hhaW4pID0gMDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIElEWEdJU3dhcENoYWluMSAqKnN3YXBDaGFpbikgPSAwOwog
CiAgICAgYm9vbCBnZXRDbGllbnRSZWN0KFJFQ1QgKnJlY3QpCiAgICAgewpAQCAtNjQsNyArNjgs
NyBAQAogICAgIH0KIAogICAgIC8vIHNldE5ld0NsaWVudFNpemUgaXMgdXNlZCBieSB0aGUgV2lu
UlQgc2l6ZSBjaGFuZ2UgaGFuZGxlci4gSXQgaXNuJ3QgdXNlZCBieSB0aGUgcmVzdCBvZiBBTkdM
RS4KLSAgICB2b2lkIHNldE5ld0NsaWVudFNpemUoY29uc3QgU0laRSAmbmV3V2luZG93U2l6ZSkK
KyAgICB2b2lkIHNldE5ld0NsaWVudFNpemUoY29uc3QgU2l6ZSAmbmV3V2luZG93U2l6ZSkKICAg
ICB7CiAgICAgICAgIC8vIElmIHRoZSBjbGllbnQgZG9lc24ndCBzdXBwb3J0IHN3YXBjaGFpbiBy
ZXNpemluZyB0aGVuIHdlIHNob3VsZCBoYXZlIGFscmVhZHkgdW5yZWdpc3RlcmVkIGZyb20gc2l6
ZSBjaGFuZ2UgaGFuZGxlcgogICAgICAgICBBU1NFUlQobVN1cHBvcnRzU3dhcENoYWluUmVzaXpl
KTsKQEAgLTc0LDggKzc4LDcgQEAKICAgICAgICAgICAgIC8vIElmIHRoZSBzd2FwY2hhaW4gc2l6
ZSB3YXMgc3BlY2lmaWVkIHRoZW4gd2Ugc2hvdWxkIGlnbm9yZSB0aGlzIGNhbGwgdG9vCiAgICAg
ICAgICAgICBpZiAoIW1Td2FwQ2hhaW5TaXplU3BlY2lmaWVkKQogICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIC8vIFdlIGRvbid0IGhhdmUgdG8gY2hlY2sgaWYgYSBzd2FwY2hhaW4gc2Nh
bGUgd2FzIHNwZWNpZmllZCBoZXJlOyB0aGUgZGVmYXVsdCB2YWx1ZSBpcyAxLjBmIHdoaWNoIHdp
bGwgaGF2ZSBubyBlZmZlY3QuCi0gICAgICAgICAgICAgICAgbU5ld0NsaWVudFJlY3QgPSB7IDAs
IDAsIHN0YXRpY19jYXN0PGxvbmc+KG5ld1dpbmRvd1NpemUuY3ggKiBtU3dhcENoYWluU2NhbGUp
LCBzdGF0aWNfY2FzdDxsb25nPihuZXdXaW5kb3dTaXplLmN5ICogbVN3YXBDaGFpblNjYWxlKSB9
OworICAgICAgICAgICAgICAgIG1OZXdDbGllbnRSZWN0ICAgICA9IGNsaWVudFJlY3QobmV3V2lu
ZG93U2l6ZSk7CiAgICAgICAgICAgICAgICAgbUNsaWVudFJlY3RDaGFuZ2VkID0gdHJ1ZTsKIAog
ICAgICAgICAgICAgICAgIC8vIElmIGEgc2NhbGUgd2FzIHNwZWNpZmllZCwgdGhlbiBub3cgaXMg
dGhlIHRpbWUgdG8gYXBwbHkgdGhlIHNjYWxlIG1hdHJpeCBmb3IgdGhlIG5ldyBzd2FwY2hhaW4g
c2l6ZSBhbmQgd2luZG93IHNpemUKQEAgLTk1LDcgKzk4LDggQEAKICAgICB9CiAKICAgcHJvdGVj
dGVkOgotICAgIHZpcnR1YWwgSFJFU1VMVCBzY2FsZVN3YXBDaGFpbihjb25zdCBTSVpFICZ3aW5k
b3dTaXplLCBjb25zdCBSRUNUICZjbGllbnRSZWN0KSA9IDA7CisgICAgdmlydHVhbCBIUkVTVUxU
IHNjYWxlU3dhcENoYWluKGNvbnN0IFNpemUgJndpbmRvd1NpemUsIGNvbnN0IFJFQ1QgJmNsaWVu
dFJlY3QpID0gMDsKKyAgICBSRUNUIGNsaWVudFJlY3QoY29uc3QgU2l6ZSAmc2l6ZSk7CiAKICAg
ICBib29sIG1TdXBwb3J0c1N3YXBDaGFpblJlc2l6ZTsgLy8gU3VwcG9ydCBmb3IgSURYR0lTd2Fw
Q2hhaW46OlJlc2l6ZUJ1ZmZlcnMgbWV0aG9kCiAgICAgYm9vbCBtU3dhcENoYWluU2l6ZVNwZWNp
ZmllZDsgIC8vIElmIGFuIEVHTFJlbmRlclN1cmZhY2VTaXplUHJvcGVydHkgd2FzIHNwZWNpZmll
ZApAQCAtMTA4LDcgKzExMiw2IEBACiAgICAgRXZlbnRSZWdpc3RyYXRpb25Ub2tlbiBtU2l6ZUNo
YW5nZWRFdmVudFRva2VuOwogfTsKIAotYm9vbCBJc1ZhbGlkRUdMTmF0aXZlV2luZG93VHlwZShF
R0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdyk7CiBib29sIElzQ29yZVdpbmRvdyhFR0xOYXRpdmVX
aW5kb3dUeXBlIHdpbmRvdywgQ29tUHRyPEFCSTo6V2luZG93czo6VUk6OkNvcmU6OklDb3JlV2lu
ZG93PiAqY29yZVdpbmRvdyA9IG51bGxwdHIpOwogYm9vbCBJc1N3YXBDaGFpblBhbmVsKEVHTE5h
dGl2ZVdpbmRvd1R5cGUgd2luZG93LCBDb21QdHI8QUJJOjpXaW5kb3dzOjpVSTo6WGFtbDo6Q29u
dHJvbHM6OklTd2FwQ2hhaW5QYW5lbD4gKnN3YXBDaGFpblBhbmVsID0gbnVsbHB0cik7CiBib29s
IElzRUdMQ29uZmlndXJlZFByb3BlcnR5U2V0KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBB
Qkk6OldpbmRvd3M6OkZvdW5kYXRpb246OkNvbGxlY3Rpb25zOjpJUHJvcGVydHlTZXQgKipwcm9w
ZXJ0eVNldCA9IG51bGxwdHIsIElJbnNwZWN0YWJsZSAqKmluc3BlY3RhYmxlID0gbnVsbHB0cik7
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL3dpbnJ0L05hdGl2ZVdpbmRvdzExV2luUlQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQv
TmF0aXZlV2luZG93MTFXaW5SVC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW5ydC9OYXRpdmVXaW5k
b3cxMVdpblJULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyNiBAQAorLy8KKy8vIENv
cHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisKKy8vIE5hdGl2ZVdpbmRvdzExV2luUlQuY3BwOiBOYXRpdmVXaW5kb3cgYmFzZSBjbGFz
cyBmb3IgbWFuYWdpbmcgSUluc3BlY3RhYmxlIG5hdGl2ZSB3aW5kb3cgdHlwZXMuCisKKyNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQvTmF0aXZlV2luZG93MTFXaW5S
VC5oIgorCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFf
dXRpbHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQvQ29y
ZVdpbmRvd05hdGl2ZVdpbmRvdy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS93aW5ydC9JbnNwZWN0YWJsZU5hdGl2ZVdpbmRvdy5oIgorI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS93aW5ydC9Td2FwQ2hhaW5QYW5lbE5hdGl2ZVdpbmRvdy5oIgor
Cit1c2luZyBuYW1lc3BhY2UgTWljcm9zb2Z0OjpXUkw7Cit1c2luZyBuYW1lc3BhY2UgTWljcm9z
b2Z0OjpXUkw6OldyYXBwZXJzOworCituYW1lc3BhY2UgcngKK3sKK05hdGl2ZVdpbmRvdzExV2lu
UlQ6Ok5hdGl2ZVdpbmRvdzExV2luUlQoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIGJvb2wg
aGFzQWxwaGEpCisgICAgOiBOYXRpdmVXaW5kb3cxMSh3aW5kb3cpLCBtSGFzQWxwaGEoaGFzQWxw
aGEpCit7Cit9CisKK2Jvb2wgTmF0aXZlV2luZG93MTFXaW5SVDo6aW5pdGlhbGl6ZSgpCit7Cisg
ICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3cgPSBnZXROYXRpdmVXaW5kb3coKTsKKworICAg
IC8vIElmIHRoZSBuYXRpdmUgd2luZG93IHR5cGUgaXMgYSBJUHJvcGVydHlTZXQsIGV4dHJhY3Qg
dGhlCisgICAgLy8gRUdMTmF0aXZlV2luZG93VHlwZSAoSUluc3BlY3RhYmxlKSBhbmQgaW5pdGlh
bGl6ZSB0aGUKKyAgICAvLyBwcm9wZXIgaG9zdCB3aXRoIHRoaXMgSVByb3BlcnR5U2V0LgorICAg
IENvbVB0cjxBQkk6OldpbmRvd3M6OkZvdW5kYXRpb246OkNvbGxlY3Rpb25zOjpJUHJvcGVydHlT
ZXQ+IHByb3BlcnR5U2V0OworICAgIENvbVB0cjxJSW5zcGVjdGFibGU+IGVnbE5hdGl2ZVdpbmRv
dzsKKyAgICBpZiAoSXNFR0xDb25maWd1cmVkUHJvcGVydHlTZXQod2luZG93LCAmcHJvcGVydHlT
ZXQsICZlZ2xOYXRpdmVXaW5kb3cpKQorICAgIHsKKyAgICAgICAgLy8gQSBwcm9wZXJ0eSBzZXQg
d2FzIGZvdW5kIGFuZCB0aGUgRUdMTmF0aXZlV2luZG93VHlwZSB3YXMKKyAgICAgICAgLy8gcmV0
cmlldmVkLiBUaGUgbVdpbmRvdyBtZW1iZXIgb2YgdGhlIGhvc3QgdG8gbXVzdCBiZSB1cGRhdGVk
CisgICAgICAgIC8vIHRvIHVzZSB0aGUgRUdMTmF0aXZlV2luZG93VHlwZSBzcGVjaWZpZWQgaW4g
dGhlIHByb3BlcnR5IHNldC4KKyAgICAgICAgLy8gbVdpbmRvdyBpcyB0cmVhdGVkIGFzIGEgcmF3
IHBvaW50ZXIgbm90IGFuIEFkZFJlZidkIGludGVyZmFjZSwgc28KKyAgICAgICAgLy8gdGhlIG9s
ZCBtV2luZG93IGRvZXMgbm90IG5lZWQgYSBSZWxlYXNlKCkgYmVmb3JlIHRoaXMgYXNzaWdubWVu
dC4KKyAgICAgICAgd2luZG93ID0gZWdsTmF0aXZlV2luZG93LkdldCgpOworICAgIH0KKworICAg
IENvbVB0cjxBQkk6OldpbmRvd3M6OlVJOjpDb3JlOjpJQ29yZVdpbmRvdz4gY29yZVdpbmRvdzsK
KyAgICBDb21QdHI8QUJJOjpXaW5kb3dzOjpVSTo6WGFtbDo6Q29udHJvbHM6OklTd2FwQ2hhaW5Q
YW5lbD4gc3dhcENoYWluUGFuZWw7CisgICAgaWYgKElzQ29yZVdpbmRvdyh3aW5kb3csICZjb3Jl
V2luZG93KSkKKyAgICB7CisgICAgICAgIG1JbXBsID0gc3RkOjptYWtlX3NoYXJlZDxDb3JlV2lu
ZG93TmF0aXZlV2luZG93PigpOworICAgICAgICBpZiAobUltcGwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBtSW1wbC0+aW5pdGlhbGl6ZSh3aW5kb3csIHByb3BlcnR5U2V0LkdldCgp
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChJc1N3YXBDaGFpblBhbmVsKHdpbmRv
dywgJnN3YXBDaGFpblBhbmVsKSkKKyAgICB7CisgICAgICAgIG1JbXBsID0gc3RkOjptYWtlX3No
YXJlZDxTd2FwQ2hhaW5QYW5lbE5hdGl2ZVdpbmRvdz4oKTsKKyAgICAgICAgaWYgKG1JbXBsKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbUltcGwtPmluaXRpYWxpemUod2luZG93LCBw
cm9wZXJ0eVNldC5HZXQoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAg
ICAgICAgRVJSKAorICAgICAgICAgICAgIkludmFsaWQgSUluc3BlY3RhYmxlIEVHTE5hdGl2ZVdp
bmRvd1R5cGUgZGV0ZWN0ZWQuIFZhbGlkIElJbnNwZWN0YWJsZXMgaW5jbHVkZSAiCisgICAgICAg
ICAgICAiSUNvcmVXaW5kb3csIElTd2FwQ2hhaW5QYW5lbCBhbmQgSVByb3BlcnR5U2V0Iik7Cisg
ICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE5hdGl2ZVdpbmRvdzExV2luUlQ6
OmdldENsaWVudFJlY3QoTFBSRUNUIHJlY3QpIGNvbnN0Cit7CisgICAgaWYgKG1JbXBsKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1JbXBsLT5nZXRDbGllbnRSZWN0KHJlY3QpOworICAgIH0KKwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBOYXRpdmVXaW5kb3cxMVdpblJUOjppc0ljb25p
YygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitIUkVTVUxUIE5hdGl2ZVdpbmRv
dzExV2luUlQ6OmNyZWF0ZVN3YXBDaGFpbihJRDNEMTFEZXZpY2UgKmRldmljZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEWEdJRmFjdG9yeSAqZmFjdG9y
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVJTlQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVSU5UIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIElEWEdJU3dhcENoYWluICoqc3dhcENoYWluKQoreworICAgIGlmIChtSW1wbCkKKyAgICB7
CisgICAgICAgIElEWEdJRmFjdG9yeTIgKmZhY3RvcnkyICAgICA9IGQzZDExOjpEeW5hbWljQ2Fz
dENvbU9iamVjdDxJRFhHSUZhY3RvcnkyPihmYWN0b3J5KTsKKyAgICAgICAgSURYR0lTd2FwQ2hh
aW4xICpzd2FwQ2hhaW4xID0gbnVsbHB0cjsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPQorICAg
ICAgICAgICAgbUltcGwtPmNyZWF0ZVN3YXBDaGFpbihkZXZpY2UsIGZhY3RvcnkyLCBmb3JtYXQs
IHdpZHRoLCBoZWlnaHQsIG1IYXNBbHBoYSwgJnN3YXBDaGFpbjEpOworICAgICAgICBTYWZlUmVs
ZWFzZShmYWN0b3J5Mik7CisgICAgICAgICpzd2FwQ2hhaW4gPSBzdGF0aWNfY2FzdDxJRFhHSVN3
YXBDaGFpbiAqPihzd2FwQ2hhaW4xKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisK
KyAgICByZXR1cm4gRV9VTkVYUEVDVEVEOworfQorCit2b2lkIE5hdGl2ZVdpbmRvdzExV2luUlQ6
OmNvbW1pdENoYW5nZSgpCit7Cit9CisKKy8vIHN0YXRpYworYm9vbCBOYXRpdmVXaW5kb3cxMVdp
blJUOjpJc1ZhbGlkTmF0aXZlV2luZG93KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KQorewor
ICAgIC8vIEEgVmFsaWQgRUdMTmF0aXZlV2luZG93VHlwZSBJSW5zcGVjdGFibGUgY2FuIG9ubHkg
YmU6CisgICAgLy8KKyAgICAvLyBJQ29yZVdpbmRvdworICAgIC8vIElTd2FwQ2hhaW5QYW5lbAor
ICAgIC8vIElQcm9wZXJ0eVNldAorICAgIC8vCisgICAgLy8gQW55dGhpbmcgZWxzZSB3aWxsIGJl
IHJlamVjdGVkIGFzIGFuIGludmFsaWQgSUluc3BlY3RhYmxlLgorICAgIHJldHVybiBJc0NvcmVX
aW5kb3cod2luZG93KSB8fCBJc1N3YXBDaGFpblBhbmVsKHdpbmRvdykgfHwgSXNFR0xDb25maWd1
cmVkUHJvcGVydHlTZXQod2luZG93KTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dp
bnJ0L05hdGl2ZVdpbmRvdzExV2luUlQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbnJ0L05hdGl2ZVdpbmRv
dzExV2luUlQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbnJ0L05hdGl2ZVdpbmRvdzExV2luUlQuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUwIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gTmF0aXZl
V2luZG93MTFXaW5SVC5oOiBOYXRpdmVXaW5kb3cgYmFzZSBjbGFzcyBmb3IgbWFuYWdpbmcgSUlu
c3BlY3RhYmxlIG5hdGl2ZSB3aW5kb3cgdHlwZXMuCisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVS
RVJfRDNEX0QzRDExX1dJTlJUX05BVElWRVdJTkRPVzExV0lOUlRfSF8KKyNkZWZpbmUgTElCQU5H
TEVfUkVOREVSRVJfRDNEX0QzRDExX1dJTlJUX05BVElWRVdJTkRPVzExV0lOUlRfSF8KKworI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9OYXRpdmVXaW5kb3cxMS5oIgorCisj
aW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHdpbmRvd3MuYXBwbGljYXRpb25tb2RlbC5jb3Jl
Lmg+CisjaW5jbHVkZSA8d3JsLmg+CisjaW5jbHVkZSA8d3JsL3dyYXBwZXJzL2NvcmV3cmFwcGVy
cy5oPgorCituYW1lc3BhY2UgcngKK3sKK2NsYXNzIEluc3BlY3RhYmxlTmF0aXZlV2luZG93Owor
CitjbGFzcyBOYXRpdmVXaW5kb3cxMVdpblJUIDogcHVibGljIE5hdGl2ZVdpbmRvdzExCit7Cisg
IHB1YmxpYzoKKyAgICBOYXRpdmVXaW5kb3cxMVdpblJUKEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2lu
ZG93LCBib29sIGhhc0FscGhhKTsKKworICAgIGJvb2wgaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOwor
ICAgIGJvb2wgZ2V0Q2xpZW50UmVjdChMUFJFQ1QgcmVjdCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBpc0ljb25pYygpIGNvbnN0IG92ZXJyaWRlOworCisgICAgSFJFU1VMVCBjcmVhdGVTd2Fw
Q2hhaW4oSUQzRDExRGV2aWNlICpkZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SURYR0lGYWN0b3J5ICpmYWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UIHdpZHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQgaGVpZ2h0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIElEWEdJU3dhcENoYWluICoqc3dhcENoYWluKSBvdmVycmlkZTsKKworICAg
IHZvaWQgY29tbWl0Q2hhbmdlKCkgb3ZlcnJpZGU7CisKKyAgICBzdGF0aWMgYm9vbCBJc1ZhbGlk
TmF0aXZlV2luZG93KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KTsKKworICBwcml2YXRlOgor
ICAgIGJvb2wgbUhhc0FscGhhOworICAgIHN0ZDo6c2hhcmVkX3B0cjxJbnNwZWN0YWJsZU5hdGl2
ZVdpbmRvdz4gbUltcGw7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBM
SUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfV0lOUlRfTkFUSVZFV0lORE9XMTFXSU5SVF9IXwpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS93aW5ydC9Td2FwQ2hhaW5QYW5lbE5hdGl2ZVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93
aW5ydC9Td2FwQ2hhaW5QYW5lbE5hdGl2ZVdpbmRvdy5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
d2lucnQvU3dhcENoYWluUGFuZWxOYXRpdmVXaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjksNyArMTY5LDcgQEAKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIFNJWkUgc3dhcENoYWluUGFuZWxTaXplOworICAgICAgICAgICAgU2l6ZSBzd2FwQ2hh
aW5QYW5lbFNpemU7CiAgICAgICAgICAgICByZXN1bHQgPSBHZXRTd2FwQ2hhaW5QYW5lbFNpemUo
bVN3YXBDaGFpblBhbmVsLCBtU3dhcENoYWluUGFuZWxEaXNwYXRjaGVyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzd2FwQ2hhaW5QYW5lbFNpemUpOwogCkBA
IC0xNzYsNyArMTc2LDcgQEAKICAgICAgICAgICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkKICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGNsaWVudCByZWN0IHRv
IGFjY291bnQgZm9yIGFueSBzd2FwY2hhaW4gc2NhbGUgZmFjdG9yCi0gICAgICAgICAgICAgICAg
bUNsaWVudFJlY3QgPSB7IDAsIDAsIHN0YXRpY19jYXN0PGxvbmc+KHN3YXBDaGFpblBhbmVsU2l6
ZS5jeCAqIG1Td2FwQ2hhaW5TY2FsZSksIHN0YXRpY19jYXN0PGxvbmc+KHN3YXBDaGFpblBhbmVs
U2l6ZS5jeSAqIG1Td2FwQ2hhaW5TY2FsZSkgfTsKKyAgICAgICAgICAgICAgICBtQ2xpZW50UmVj
dCA9IGNsaWVudFJlY3Qoc3dhcENoYWluUGFuZWxTaXplKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KQEAgLTIzOCwxMiArMjM4LDEyIEBACiB9CiAKIEhSRVNVTFQgU3dhcENoYWlu
UGFuZWxOYXRpdmVXaW5kb3c6OmNyZWF0ZVN3YXBDaGFpbihJRDNEMTFEZXZpY2UgKmRldmljZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
RmFjdG9yeSAqZmFjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJRFhHSUZhY3RvcnkyICpmYWN0b3J5LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUIGZvcm1hdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNvbnRhaW5zQWxwaGEsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSVN3YXBDaGFpbiAq
KnN3YXBDaGFpbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBJRFhHSVN3YXBDaGFpbjEgKipzd2FwQ2hhaW4pCiB7CiAgICAgaWYgKGRldmljZSA9
PSBOVUxMIHx8IGZhY3RvcnkgPT0gTlVMTCB8fCBzd2FwQ2hhaW4gPT0gTlVMTCB8fCB3aWR0aCA9
PSAwIHx8IGhlaWdodCA9PSAwKQogICAgIHsKQEAgLTI2OSw3ICsyNjksNyBAQAogCiAgICAgQ29t
UHRyPElEWEdJU3dhcENoYWluMT4gbmV3U3dhcENoYWluOwogICAgIENvbVB0cjxJU3dhcENoYWlu
UGFuZWxOYXRpdmU+IHN3YXBDaGFpblBhbmVsTmF0aXZlOwotICAgIFNJWkUgY3VycmVudFBhbmVs
U2l6ZSA9IHt9OworICAgIFNpemUgY3VycmVudFBhbmVsU2l6ZSA9IHt9OwogCiAgICAgSFJFU1VM
VCByZXN1bHQgPSBmYWN0b3J5LT5DcmVhdGVTd2FwQ2hhaW5Gb3JDb21wb3NpdGlvbihkZXZpY2Us
ICZzd2FwQ2hhaW5EZXNjLCBudWxscHRyLCBuZXdTd2FwQ2hhaW4uUmVsZWFzZUFuZEdldEFkZHJl
c3NPZigpKTsKIApAQCAtMzE4LDEwICszMTgsMTAgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1IUkVTVUxUIFN3YXBDaGFpblBhbmVsTmF0aXZlV2luZG93OjpzY2FsZVN3YXBDaGFpbihjb25z
dCBTSVpFICZ3aW5kb3dTaXplLCBjb25zdCBSRUNUICZjbGllbnRSZWN0KQorSFJFU1VMVCBTd2Fw
Q2hhaW5QYW5lbE5hdGl2ZVdpbmRvdzo6c2NhbGVTd2FwQ2hhaW4oY29uc3QgU2l6ZSAmd2luZG93
U2l6ZSwgY29uc3QgUkVDVCAmY2xpZW50UmVjdCkKIHsKLSAgICBTaXplIHJlbmRlclNjYWxlID0g
eyhmbG9hdCl3aW5kb3dTaXplLmN4IC8gKGZsb2F0KWNsaWVudFJlY3QucmlnaHQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAoZmxvYXQpd2luZG93U2l6ZS5jeSAvIChmbG9hdCljbGllbnRSZWN0
LmJvdHRvbX07CisgICAgU2l6ZSByZW5kZXJTY2FsZSA9IHt3aW5kb3dTaXplLldpZHRoIC8gKGZs
b2F0KWNsaWVudFJlY3QucmlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dTaXpl
LkhlaWdodCAvIChmbG9hdCljbGllbnRSZWN0LmJvdHRvbX07CiAgICAgLy8gU2V0dXAgYSBzY2Fs
ZSBtYXRyaXggZm9yIHRoZSBzd2FwIGNoYWluCiAgICAgRFhHSV9NQVRSSVhfM1gyX0Ygc2NhbGVN
YXRyaXggPSB7fTsKICAgICBzY2FsZU1hdHJpeC5fMTEgPSByZW5kZXJTY2FsZS5XaWR0aDsKQEAg
LTM0MCwyNiArMzQwLDE2IEBACiBIUkVTVUxUIEdldFN3YXBDaGFpblBhbmVsU2l6ZSgKICAgICBj
b25zdCBDb21QdHI8QUJJOjpXaW5kb3dzOjpVSTo6WGFtbDo6Q29udHJvbHM6OklTd2FwQ2hhaW5Q
YW5lbD4gJnN3YXBDaGFpblBhbmVsLAogICAgIGNvbnN0IENvbVB0cjxJQ29yZURpc3BhdGNoZXI+
ICZkaXNwYXRjaGVyLAotICAgIFNJWkUgKndpbmRvd1NpemUpCisgICAgU2l6ZSAqd2luZG93U2l6
ZSkKIHsKICAgICBDb21QdHI8SVVJRWxlbWVudD4gdWlFbGVtZW50OwotICAgIFNpemUgcmVuZGVy
U2l6ZSA9IHswLCAwfTsKICAgICBIUkVTVUxUIHJlc3VsdCA9IHN3YXBDaGFpblBhbmVsLkFzKCZ1
aUVsZW1lbnQpOwogICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkKICAgICB7CiAgICAgICAgIHJl
c3VsdCA9IFJ1bk9uVUlUaHJlYWQoCi0gICAgICAgICAgICBbdWlFbGVtZW50LCAmcmVuZGVyU2l6
ZV0KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdWlFbGVtZW50LT5nZXRf
UmVuZGVyU2l6ZSgmcmVuZGVyU2l6ZSk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgZGlz
cGF0Y2hlcik7CisgICAgICAgICAgICBbdWlFbGVtZW50LCB3aW5kb3dTaXplXSB7IHJldHVybiB1
aUVsZW1lbnQtPmdldF9SZW5kZXJTaXplKHdpbmRvd1NpemUpOyB9LCBkaXNwYXRjaGVyKTsKICAg
ICB9CiAKLSAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpCi0gICAgewotICAgICAgICAqd2luZG93
U2l6ZSA9IHsgbHJvdW5kKHJlbmRlclNpemUuV2lkdGgpLCBscm91bmQocmVuZGVyU2l6ZS5IZWln
aHQpIH07Ci0gICAgfQotCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIH0KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL3dpbnJ0L1N3YXBDaGFpblBhbmVsTmF0aXZlV2luZG93LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS93aW5ydC9Td2FwQ2hhaW5QYW5lbE5hdGl2ZVdpbmRvdy5oCShyZXZpc2lvbiAy
MDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL3dpbnJ0L1N3YXBDaGFpblBhbmVsTmF0aXZlV2luZG93LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTExLDYgKzExLDggQEAKIAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS93aW5ydC9JbnNwZWN0YWJsZU5hdGl2ZVdpbmRvdy5oIgogCisjaW5jbHVkZSA8bWVtb3J5
PgorCiBuYW1lc3BhY2UgcngKIHsKIGNsYXNzIFN3YXBDaGFpblBhbmVsTmF0aXZlV2luZG93IDog
cHVibGljIEluc3BlY3RhYmxlTmF0aXZlV2luZG93LCBwdWJsaWMgc3RkOjplbmFibGVfc2hhcmVk
X2Zyb21fdGhpczxTd2FwQ2hhaW5QYW5lbE5hdGl2ZVdpbmRvdz4KQEAgLTIwLDE1ICsyMiwxNSBA
QAogCiAgICAgYm9vbCBpbml0aWFsaXplKEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBJUHJv
cGVydHlTZXQgKnByb3BlcnR5U2V0KSBvdmVycmlkZTsKICAgICBIUkVTVUxUIGNyZWF0ZVN3YXBD
aGFpbihJRDNEMTFEZXZpY2UgKmRldmljZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJRmFjdG9yeSAqZmFjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRFhHSUZh
Y3RvcnkyICpmYWN0b3J5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
IGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgd2lkdGgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGhlaWdodCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGNvbnRhaW5zQWxwaGEsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSVN3YXBDaGFpbiAqKnN3YXBDaGFpbikgb3ZlcnJpZGU7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSURYR0lTd2FwQ2hhaW4xICoqc3dhcENoYWluKSBvdmVy
cmlkZTsKIAogICBwcm90ZWN0ZWQ6Ci0gICAgSFJFU1VMVCBzY2FsZVN3YXBDaGFpbihjb25zdCBT
SVpFICZ3aW5kb3dTaXplLCBjb25zdCBSRUNUICZjbGllbnRSZWN0KSBvdmVycmlkZTsKKyAgICBI
UkVTVUxUIHNjYWxlU3dhcENoYWluKGNvbnN0IFNpemUgJndpbmRvd1NpemUsIGNvbnN0IFJFQ1Qg
JmNsaWVudFJlY3QpIG92ZXJyaWRlOwogCiAgICAgYm9vbCByZWdpc3RlckZvclNpemVDaGFuZ2VF
dmVudHMoKTsKICAgICB2b2lkIHVucmVnaXN0ZXJGb3JTaXplQ2hhbmdlRXZlbnRzKCk7CkBAIC0z
Nyw3ICszOSw3IEBACiAgICAgQ29tUHRyPEFCSTo6V2luZG93czo6VUk6OlhhbWw6OkNvbnRyb2xz
OjpJU3dhcENoYWluUGFuZWw+IG1Td2FwQ2hhaW5QYW5lbDsKICAgICBDb21QdHI8QUJJOjpXaW5k
b3dzOjpVSTo6Q29yZTo6SUNvcmVEaXNwYXRjaGVyPiBtU3dhcENoYWluUGFuZWxEaXNwYXRjaGVy
OwogICAgIENvbVB0cjxJTWFwPEhTVFJJTkcsIElJbnNwZWN0YWJsZSo+PiBtUHJvcGVydHlNYXA7
Ci0gICAgQ29tUHRyPERYR0lTd2FwQ2hhaW4+IG1Td2FwQ2hhaW47CisgICAgQ29tUHRyPElEWEdJ
U3dhcENoYWluMT4gbVN3YXBDaGFpbjsKIH07CiAKIFt1dWlkKDhBQ0JEOTc0LTgxODctNDUwOC1B
RDgwLUFFQzc3RjkzQ0YzNildCkBAIC03Miw4ICs3NCw3IEBACiAgICAgICAgICAgICBIUkVTVUxU
IHJlc3VsdCA9IHNpemVDaGFuZ2VkRXZlbnRBcmdzLT5nZXRfTmV3U2l6ZSgmbmV3U2l6ZSk7CiAg
ICAgICAgICAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpCiAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgU0laRSB3aW5kb3dTaXplID0geyBscm91bmQobmV3U2l6ZS5XaWR0aCksIGxyb3Vu
ZChuZXdTaXplLkhlaWdodCkgfTsKLSAgICAgICAgICAgICAgICBob3N0LT5zZXROZXdDbGllbnRT
aXplKHdpbmRvd1NpemUpOworICAgICAgICAgICAgICAgIGhvc3QtPnNldE5ld0NsaWVudFNpemUo
bmV3U2l6ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtODcsNiArODgsNiBAQAog
SFJFU1VMVCBHZXRTd2FwQ2hhaW5QYW5lbFNpemUoCiAgICAgY29uc3QgQ29tUHRyPEFCSTo6V2lu
ZG93czo6VUk6OlhhbWw6OkNvbnRyb2xzOjpJU3dhcENoYWluUGFuZWw+ICZzd2FwQ2hhaW5QYW5l
bCwKICAgICBjb25zdCBDb21QdHI8QUJJOjpXaW5kb3dzOjpVSTo6Q29yZTo6SUNvcmVEaXNwYXRj
aGVyPiAmZGlzcGF0Y2hlciwKLSAgICBTSVpFICp3aW5kb3dTaXplKTsKKyAgICBTaXplICp3aW5k
b3dTaXplKTsKIH0KICNlbmRpZiAvLyBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfV0lOUlRf
U1dBUENIQUlOUEFORUxOQVRJVkVXSU5ET1dfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9CbGl0OS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5
L0JsaXQ5LmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0JsaXQ5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ1LDEzICsxNDUsNyBAQAogICAgIHsKICAgICAgICAgY29uc3QgQllURSogc2hhZGVyQ29k
ZSA9IGdfc2hhZGVyQ29kZVtzb3VyY2VdOwogICAgICAgICBzaXplX3Qgc2hhZGVyU2l6ZSA9IGdf
c2hhZGVyU2l6ZVtzb3VyY2VdOwotCi0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IChtUmVuZGVy
ZXItPipjcmVhdGVTaGFkZXIpKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRFdPUkQqPihzaGFkZXJD
b2RlKSwgc2hhZGVyU2l6ZSwgJnNoYWRlcik7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQotCisgICAg
ICAgIEFOR0xFX1RSWSgobVJlbmRlcmVyLT4qY3JlYXRlU2hhZGVyKShyZWludGVycHJldF9jYXN0
PGNvbnN0IERXT1JEKj4oc2hhZGVyQ29kZSksIHNoYWRlclNpemUsICZzaGFkZXIpKTsKICAgICAg
ICAgbUNvbXBpbGVkU2hhZGVyc1tzb3VyY2VdID0gc2hhZGVyOwogICAgIH0KIApAQCAtMTkwLDE4
ICsxODQsMTAgQEAKIAogZ2w6OkVycm9yIEJsaXQ5Ojpib3hGaWx0ZXIoSURpcmVjdDNEU3VyZmFj
ZTkgKnNvdXJjZSwgSURpcmVjdDNEU3VyZmFjZTkgKmRlc3QpCiB7Ci0gICAgZ2w6OkVycm9yIGVy
cm9yID0gaW5pdGlhbGl6ZSgpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAg
ICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShpbml0aWFsaXplKCkpOwog
CiAgICAgSURpcmVjdDNEVGV4dHVyZTkgKnRleHR1cmUgPSBOVUxMOwotICAgIGVycm9yID0gY29w
eVN1cmZhY2VUb1RleHR1cmUoc291cmNlLCBnZXRTdXJmYWNlUmVjdChzb3VyY2UpLCAmdGV4dHVy
ZSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJv
cjsKLSAgICB9CisgICAgQU5HTEVfVFJZKGNvcHlTdXJmYWNlVG9UZXh0dXJlKHNvdXJjZSwgZ2V0
U3VyZmFjZVJlY3Qoc291cmNlKSwgJnRleHR1cmUpKTsKIAogICAgIElEaXJlY3QzRERldmljZTkg
KmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CiAKQEAgLTIzMCwyMSArMjE2LDEzIEBA
CiAKIGdsOjpFcnJvciBCbGl0OTo6Y29weTJEKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVi
dWZmZXIsIGNvbnN0IFJFQ1QgJnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0LCBjb25zdCBn
bDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LCBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwgR0xpbnQgbGV2
ZWwpCiB7Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gaW5pdGlhbGl6ZSgpOwotICAgIGlmIChlcnJv
ci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFO
R0xFX1RSWShpbml0aWFsaXplKCkpOwogCiAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNo
bWVudCAqY29sb3JidWZmZXIgPSBmcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXIoMCk7CiAgICAg
QVNTRVJUKGNvbG9yYnVmZmVyKTsKIAogICAgIFJlbmRlclRhcmdldDkgKnJlbmRlclRhcmdldDkg
PSBudWxscHRyOwotICAgIGVycm9yID0gY29sb3JidWZmZXItPmdldFJlbmRlclRhcmdldCgmcmVu
ZGVyVGFyZ2V0OSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKGNvbG9yYnVmZmVyLT5nZXRSZW5kZXJU
YXJnZXQoJnJlbmRlclRhcmdldDkpKTsKICAgICBBU1NFUlQocmVuZGVyVGFyZ2V0OSk7CiAKICAg
ICBJRGlyZWN0M0RTdXJmYWNlOSAqc291cmNlID0gcmVuZGVyVGFyZ2V0OS0+Z2V0U3VyZmFjZSgp
OwpAQCAtMjUyLDcgKzIzMCw3IEBACiAKICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdFN1cmZh
Y2UgPSBOVUxMOwogICAgIFRleHR1cmVTdG9yYWdlOSAqc3RvcmFnZTkgICAgICA9IEdldEFzPFRl
eHR1cmVTdG9yYWdlOT4oc3RvcmFnZSk7Ci0gICAgZXJyb3IgPSBzdG9yYWdlOS0+Z2V0U3VyZmFj
ZUxldmVsKEdMX1RFWFRVUkVfMkQsIGxldmVsLCB0cnVlLCAmZGVzdFN1cmZhY2UpOworICAgIGds
OjpFcnJvciBlcnJvciA9IHN0b3JhZ2U5LT5nZXRTdXJmYWNlTGV2ZWwoR0xfVEVYVFVSRV8yRCwg
bGV2ZWwsIHRydWUsICZkZXN0U3VyZmFjZSk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAg
ICB7CiAgICAgICAgIFNhZmVSZWxlYXNlKHNvdXJjZSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQnVmZmVyOS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2Q5L0J1ZmZlcjkuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQnVmZmVyOS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIyLDcgKzIyLDcgQEAKICAgICBtU2l6ZSA9IDA7CiB9CiAKLWdsOjpFcnJv
ciBCdWZmZXI5OjpzZXREYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBzaXplLCBHTGVudW0g
dXNhZ2UpCitnbDo6RXJyb3IgQnVmZmVyOTo6c2V0RGF0YShHTGVudW0gLyp0YXJnZXQqLywgY29u
c3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIEdMZW51bSB1c2FnZSkKIHsKICAgICBpZiAoc2l6
ZSA+IG1NZW1vcnkuc2l6ZSgpKQogICAgIHsKQEAgLTUxLDcgKzUxLDcgQEAKICAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotZ2w6OkVycm9yIEJ1ZmZlcjk6OnNldFN1YkRh
dGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCBvZmZzZXQpCitnbDo6RXJy
b3IgQnVmZmVyOTo6c2V0U3ViRGF0YShHTGVudW0gLyp0YXJnZXQqLywgY29uc3Qgdm9pZCAqZGF0
YSwgc2l6ZV90IHNpemUsIHNpemVfdCBvZmZzZXQpCiB7CiAgICAgaWYgKG9mZnNldCArIHNpemUg
PiBtTWVtb3J5LnNpemUoKSkKICAgICB7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQnVmZmVyOS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9CdWZm
ZXI5LmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9CdWZmZXI5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDEzICsyOSwxNiBAQAogICAgIGdsOjpFcnJvciBnZXREYXRhKGNvbnN0IHVpbnQ4X3QgKipvdXRE
YXRhKSBvdmVycmlkZTsKIAogICAgIC8vIEJ1ZmZlckltcGwgaW1wbGVtZW50YXRpb24KLSAgICB2
aXJ0dWFsIGdsOjpFcnJvciBzZXREYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBzaXplLCBH
TGVudW0gdXNhZ2UpOwotICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldFN1YkRhdGEoY29uc3Qgdm9p
ZCogZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCBvZmZzZXQpOwotICAgIHZpcnR1YWwgZ2w6OkVy
cm9yIGNvcHlTdWJEYXRhKEJ1ZmZlckltcGwqIHNvdXJjZSwgR0xpbnRwdHIgc291cmNlT2Zmc2V0
LCBHTGludHB0ciBkZXN0T2Zmc2V0LCBHTHNpemVpcHRyIHNpemUpOwotICAgIHZpcnR1YWwgZ2w6
OkVycm9yIG1hcChHTGVudW0gYWNjZXNzLCBHTHZvaWQgKiptYXBQdHIpOwotICAgIHZpcnR1YWwg
Z2w6OkVycm9yIG1hcFJhbmdlKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgsIEdMYml0Zmll
bGQgYWNjZXNzLCBHTHZvaWQgKiptYXBQdHIpOwotICAgIHZpcnR1YWwgZ2w6OkVycm9yIHVubWFw
KEdMYm9vbGVhbiAqcmVzdWx0KTsKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBtYXJrVHJhbnNmb3Jt
RmVlZGJhY2tVc2FnZSgpOworICAgIGdsOjpFcnJvciBzZXREYXRhKEdMZW51bSB0YXJnZXQsIGNv
bnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCBHTGVudW0gdXNhZ2UpIG92ZXJyaWRlOworICAg
IGdsOjpFcnJvciBzZXRTdWJEYXRhKEdMZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQgKmRhdGEsIHNp
emVfdCBzaXplLCBzaXplX3Qgb2Zmc2V0KSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgY29weVN1
YkRhdGEoQnVmZmVySW1wbCAqc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dHB0ciBzb3VyY2VPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIGRl
c3RPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgc2l6ZSkgb3Zl
cnJpZGU7CisgICAgZ2w6OkVycm9yIG1hcChHTGVudW0gYWNjZXNzLCBHTHZvaWQgKiptYXBQdHIp
IG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBtYXBSYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
bGVuZ3RoLCBHTGJpdGZpZWxkIGFjY2VzcywgR0x2b2lkICoqbWFwUHRyKSBvdmVycmlkZTsKKyAg
ICBnbDo6RXJyb3IgdW5tYXAoR0xib29sZWFuICpyZXN1bHQpIG92ZXJyaWRlOworICAgIGdsOjpF
cnJvciBtYXJrVHJhbnNmb3JtRmVlZGJhY2tVc2FnZSgpIG92ZXJyaWRlOwogCiAgIHByaXZhdGU6
CiAgICAgTWVtb3J5QnVmZmVyIG1NZW1vcnk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQ29udGV4dDkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
OS9Db250ZXh0OS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0NvbnRleHQ5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDI1OCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIENvbnRleHQ5OgorLy8gICBEM0Q5LXNw
ZWNpZmljIGZ1bmN0aW9uYWxpdHkgYXNzb2NpYXRlZCB3aXRoIGEgR0wgQ29udGV4dC4KKy8vCisK
KyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9Db250ZXh0OS5oIgorCisjaW5j
bHVkZSAiY29tbW9uL3N0cmluZ191dGlscy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2QzZC9Db21waWxlckQzRC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9TaGFk
ZXJEM0QuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvUHJvZ3JhbUQzRC5oIgor
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5kZXJidWZmZXJEM0QuaCIKKyNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvU2FtcGxlckQzRC5oIgorI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2QzZC9UZXh0dXJlRDNELmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDkvQnVmZmVyOS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2Q5L0ZlbmNlOS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0ZyYW1l
YnVmZmVyOS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1F1ZXJ5OS5o
IgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1JlbmRlcmVyOS5oIgorI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1N0YXRlTWFuYWdlcjkuaCIKKyNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9WZXJ0ZXhBcnJheTkuaCIKKworbmFtZXNw
YWNlIHJ4Cit7CisKK0NvbnRleHQ5OjpDb250ZXh0OShjb25zdCBnbDo6Q29udGV4dFN0YXRlICZz
dGF0ZSwgUmVuZGVyZXI5ICpyZW5kZXJlcikKKyAgICA6IENvbnRleHRJbXBsKHN0YXRlKSwgbVJl
bmRlcmVyKHJlbmRlcmVyKQoreworfQorCitDb250ZXh0OTo6fkNvbnRleHQ5KCkKK3sKK30KKwor
Z2w6OkVycm9yIENvbnRleHQ5Ojppbml0aWFsaXplKCkKK3sKKyAgICByZXR1cm4gZ2w6Ok5vRXJy
b3IoKTsKK30KKworQ29tcGlsZXJJbXBsICpDb250ZXh0OTo6Y3JlYXRlQ29tcGlsZXIoKQorewor
ICAgIHJldHVybiBuZXcgQ29tcGlsZXJEM0QoU0hfSExTTF8zXzBfT1VUUFVUKTsKK30KKworU2hh
ZGVySW1wbCAqQ29udGV4dDk6OmNyZWF0ZVNoYWRlcihjb25zdCBnbDo6U2hhZGVyU3RhdGUgJmRh
dGEpCit7CisgICAgcmV0dXJuIG5ldyBTaGFkZXJEM0QoZGF0YSwgbVJlbmRlcmVyLT5nZXRXb3Jr
YXJvdW5kcygpKTsKK30KKworUHJvZ3JhbUltcGwgKkNvbnRleHQ5OjpjcmVhdGVQcm9ncmFtKGNv
bnN0IGdsOjpQcm9ncmFtU3RhdGUgJmRhdGEpCit7CisgICAgcmV0dXJuIG5ldyBQcm9ncmFtRDNE
KGRhdGEsIG1SZW5kZXJlcik7Cit9CisKK0ZyYW1lYnVmZmVySW1wbCAqQ29udGV4dDk6OmNyZWF0
ZUZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZkYXRhKQoreworICAgIHJl
dHVybiBuZXcgRnJhbWVidWZmZXI5KGRhdGEsIG1SZW5kZXJlcik7Cit9CisKK1RleHR1cmVJbXBs
ICpDb250ZXh0OTo6Y3JlYXRlVGV4dHVyZShjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZzdGF0ZSkK
K3sKKyAgICBzd2l0Y2ggKHN0YXRlLmdldFRhcmdldCgpKQorICAgIHsKKyAgICAgICAgY2FzZSBH
TF9URVhUVVJFXzJEOgorICAgICAgICAgICAgcmV0dXJuIG5ldyBUZXh0dXJlRDNEXzJEKHN0YXRl
LCBtUmVuZGVyZXIpOworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVA6CisgICAgICAg
ICAgICByZXR1cm4gbmV3IFRleHR1cmVEM0RfQ3ViZShzdGF0ZSwgbVJlbmRlcmVyKTsKKyAgICAg
ICAgY2FzZSBHTF9URVhUVVJFX0VYVEVSTkFMX09FUzoKKyAgICAgICAgICAgIHJldHVybiBuZXcg
VGV4dHVyZUQzRF9FeHRlcm5hbChzdGF0ZSwgbVJlbmRlcmVyKTsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOwor
fQorCitSZW5kZXJidWZmZXJJbXBsICpDb250ZXh0OTo6Y3JlYXRlUmVuZGVyYnVmZmVyKCkKK3sK
KyAgICByZXR1cm4gbmV3IFJlbmRlcmJ1ZmZlckQzRChtUmVuZGVyZXIpOworfQorCitCdWZmZXJJ
bXBsICpDb250ZXh0OTo6Y3JlYXRlQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbmV3IEJ1ZmZlcjko
bVJlbmRlcmVyKTsKK30KKworVmVydGV4QXJyYXlJbXBsICpDb250ZXh0OTo6Y3JlYXRlVmVydGV4
QXJyYXkoY29uc3QgZ2w6OlZlcnRleEFycmF5U3RhdGUgJmRhdGEpCit7CisgICAgcmV0dXJuIG5l
dyBWZXJ0ZXhBcnJheTkoZGF0YSk7Cit9CisKK1F1ZXJ5SW1wbCAqQ29udGV4dDk6OmNyZWF0ZVF1
ZXJ5KEdMZW51bSB0eXBlKQoreworICAgIHJldHVybiBuZXcgUXVlcnk5KG1SZW5kZXJlciwgdHlw
ZSk7Cit9CisKK0ZlbmNlTlZJbXBsICpDb250ZXh0OTo6Y3JlYXRlRmVuY2VOVigpCit7CisgICAg
cmV0dXJuIG5ldyBGZW5jZU5WOShtUmVuZGVyZXIpOworfQorCitGZW5jZVN5bmNJbXBsICpDb250
ZXh0OTo6Y3JlYXRlRmVuY2VTeW5jKCkKK3sKKyAgICAvLyBEM0Q5IGRvZXNuJ3Qgc3VwcG9ydCBF
UyAzLjAgYW5kIGl0cyBzeW5jIG9iamVjdHMuCisgICAgVU5SRUFDSEFCTEUoKTsKKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKworVHJhbnNmb3JtRmVlZGJhY2tJbXBsICpDb250ZXh0OTo6Y3JlYXRl
VHJhbnNmb3JtRmVlZGJhY2soY29uc3QgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrU3RhdGUgJnN0YXRl
KQoreworICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1NhbXBs
ZXJJbXBsICpDb250ZXh0OTo6Y3JlYXRlU2FtcGxlcigpCit7CisgICAgcmV0dXJuIG5ldyBTYW1w
bGVyRDNEKCk7Cit9CisKK3N0ZDo6dmVjdG9yPFBhdGhJbXBsICo+IENvbnRleHQ5OjpjcmVhdGVQ
YXRocyhHTHNpemVpKQoreworICAgIHJldHVybiBzdGQ6OnZlY3RvcjxQYXRoSW1wbCAqPigpOwor
fQorCitnbDo6RXJyb3IgQ29udGV4dDk6OmZsdXNoKCkKK3sKKyAgICByZXR1cm4gbVJlbmRlcmVy
LT5mbHVzaCgpOworfQorCitnbDo6RXJyb3IgQ29udGV4dDk6OmZpbmlzaCgpCit7CisgICAgcmV0
dXJuIG1SZW5kZXJlci0+ZmluaXNoKCk7Cit9CisKK2dsOjpFcnJvciBDb250ZXh0OTo6ZHJhd0Fy
cmF5cyhHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpCit7CisgICAgcmV0
dXJuIG1SZW5kZXJlci0+Z2VuZXJpY0RyYXdBcnJheXModGhpcywgbW9kZSwgZmlyc3QsIGNvdW50
LCAwKTsKK30KKworZ2w6OkVycm9yIENvbnRleHQ5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdMZW51
bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZp
cnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0
YW5jZUNvdW50KQoreworICAgIHJldHVybiBtUmVuZGVyZXItPmdlbmVyaWNEcmF3QXJyYXlzKHRo
aXMsIG1vZGUsIGZpcnN0LCBjb3VudCwgaW5zdGFuY2VDb3VudCk7Cit9CisKK2dsOjpFcnJvciBD
b250ZXh0OTo6ZHJhd0VsZW1lbnRzKEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpCit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2Vu
ZXJpY0RyYXdFbGVtZW50cyh0aGlzLCBtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgMCwgaW5k
ZXhSYW5nZSk7Cit9CisKK2dsOjpFcnJvciBDb250ZXh0OTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
KEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkKK3sKKyAgICBy
ZXR1cm4gbVJlbmRlcmVyLT5nZW5lcmljRHJhd0VsZW1lbnRzKHRoaXMsIG1vZGUsIGNvdW50LCB0
eXBlLCBpbmRpY2VzLCBpbnN0YW5jZXMsIGluZGV4UmFuZ2UpOworfQorCitnbDo6RXJyb3IgQ29u
dGV4dDk6OmRyYXdSYW5nZUVsZW1lbnRzKEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpJbmRleFJhbmdlICZpbmRleFJhbmdlKQoreworICAgIHJldHVybiBt
UmVuZGVyZXItPmdlbmVyaWNEcmF3RWxlbWVudHModGhpcywgbW9kZSwgY291bnQsIHR5cGUsIGlu
ZGljZXMsIDAsIGluZGV4UmFuZ2UpOworfQorCitHTGVudW0gQ29udGV4dDk6OmdldFJlc2V0U3Rh
dHVzKCkKK3sKKyAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXRSZXNldFN0YXR1cygpOworfQorCitz
dGQ6OnN0cmluZyBDb250ZXh0OTo6Z2V0VmVuZG9yU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbVJlbmRlcmVyLT5nZXRWZW5kb3JTdHJpbmcoKTsKK30KKworc3RkOjpzdHJpbmcgQ29udGV4
dDk6OmdldFJlbmRlcmVyRGVzY3JpcHRpb24oKSBjb25zdAoreworICAgIHJldHVybiBtUmVuZGVy
ZXItPmdldFJlbmRlcmVyRGVzY3JpcHRpb24oKTsKK30KKwordm9pZCBDb250ZXh0OTo6aW5zZXJ0
RXZlbnRNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikKK3sKKyAgICBh
dXRvIG9wdGlvbmFsU3RyaW5nID0gYW5nbGU6OldpZGVuU3RyaW5nKHN0YXRpY19jYXN0PHNpemVf
dD4obGVuZ3RoKSwgbWFya2VyKTsKKyAgICBpZiAob3B0aW9uYWxTdHJpbmcudmFsaWQoKSkKKyAg
ICB7CisgICAgICAgIG1SZW5kZXJlci0+Z2V0QW5ub3RhdG9yKCktPnNldE1hcmtlcihvcHRpb25h
bFN0cmluZy52YWx1ZSgpLmRhdGEoKSk7CisgICAgfQorfQorCit2b2lkIENvbnRleHQ5OjpwdXNo
R3JvdXBNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikKK3sKKyAgICBh
dXRvIG9wdGlvbmFsU3RyaW5nID0gYW5nbGU6OldpZGVuU3RyaW5nKHN0YXRpY19jYXN0PHNpemVf
dD4obGVuZ3RoKSwgbWFya2VyKTsKKyAgICBpZiAob3B0aW9uYWxTdHJpbmcudmFsaWQoKSkKKyAg
ICB7CisgICAgICAgIG1SZW5kZXJlci0+Z2V0QW5ub3RhdG9yKCktPmJlZ2luRXZlbnQob3B0aW9u
YWxTdHJpbmcudmFsdWUoKS5kYXRhKCkpOworICAgIH0KK30KKwordm9pZCBDb250ZXh0OTo6cG9w
R3JvdXBNYXJrZXIoKQoreworICAgIG1SZW5kZXJlci0+Z2V0QW5ub3RhdG9yKCktPmVuZEV2ZW50
KCk7Cit9CisKK3ZvaWQgQ29udGV4dDk6OnN5bmNTdGF0ZShjb25zdCBnbDo6U3RhdGUgJnN0YXRl
LCBjb25zdCBnbDo6U3RhdGU6OkRpcnR5Qml0cyAmZGlydHlCaXRzKQoreworICAgIG1SZW5kZXJl
ci0+Z2V0U3RhdGVNYW5hZ2VyKCktPnN5bmNTdGF0ZShzdGF0ZSwgZGlydHlCaXRzKTsKK30KKwor
R0xpbnQgQ29udGV4dDk6OmdldEdQVURpc2pvaW50KCkKK3sKKyAgICByZXR1cm4gbVJlbmRlcmVy
LT5nZXRHUFVEaXNqb2ludCgpOworfQorCitHTGludDY0IENvbnRleHQ5OjpnZXRUaW1lc3RhbXAo
KQoreworICAgIHJldHVybiBtUmVuZGVyZXItPmdldFRpbWVzdGFtcCgpOworfQorCit2b2lkIENv
bnRleHQ5Ojpvbk1ha2VDdXJyZW50KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEpCit7Cit9
CisKK2NvbnN0IGdsOjpDYXBzICZDb250ZXh0OTo6Z2V0TmF0aXZlQ2FwcygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0TmF0aXZlQ2FwcygpOworfQorCitjb25zdCBnbDo6VGV4
dHVyZUNhcHNNYXAgJkNvbnRleHQ5OjpnZXROYXRpdmVUZXh0dXJlQ2FwcygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0TmF0aXZlVGV4dHVyZUNhcHMoKTsKK30KKworY29uc3Qg
Z2w6OkV4dGVuc2lvbnMgJkNvbnRleHQ5OjpnZXROYXRpdmVFeHRlbnNpb25zKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXROYXRpdmVFeHRlbnNpb25zKCk7Cit9CisKK2NvbnN0
IGdsOjpMaW1pdGF0aW9ucyAmQ29udGV4dDk6OmdldE5hdGl2ZUxpbWl0YXRpb25zKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXROYXRpdmVMaW1pdGF0aW9ucygpOworfQorCit9
ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkOS9Db250ZXh0OS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9Db250ZXh0OS5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkOS9Db250ZXh0OS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTI2
IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworLy8gQ29udGV4dDk6CisvLyAgIEQzRDktc3BlY2lmaWMgZnVuY3Rpb25h
bGl0eSBhc3NvY2lhdGVkIHdpdGggYSBHTCBDb250ZXh0LgorLy8KKworI2lmbmRlZiBMSUJBTkdM
RV9SRU5ERVJFUl9EM0RfRDNEOV9DT05URVhUOV9IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJF
Ul9EM0RfRDNEOV9DT05URVhUOV9IXworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvQ29u
dGV4dEltcGwuaCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJlcjk7CisKK2NsYXNz
IENvbnRleHQ5IDogcHVibGljIENvbnRleHRJbXBsCit7CisgIHB1YmxpYzoKKyAgICBDb250ZXh0
OShjb25zdCBnbDo6Q29udGV4dFN0YXRlICZzdGF0ZSwgUmVuZGVyZXI5ICpyZW5kZXJlcik7Cisg
ICAgfkNvbnRleHQ5KCkgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJyb3IgaW5pdGlhbGl6ZSgpIG92
ZXJyaWRlOworCisgICAgLy8gU2hhZGVyIGNyZWF0aW9uCisgICAgQ29tcGlsZXJJbXBsICpjcmVh
dGVDb21waWxlcigpIG92ZXJyaWRlOworICAgIFNoYWRlckltcGwgKmNyZWF0ZVNoYWRlcihjb25z
dCBnbDo6U2hhZGVyU3RhdGUgJmRhdGEpIG92ZXJyaWRlOworICAgIFByb2dyYW1JbXBsICpjcmVh
dGVQcm9ncmFtKGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJmRhdGEpIG92ZXJyaWRlOworCisgICAg
Ly8gRnJhbWVidWZmZXIgY3JlYXRpb24KKyAgICBGcmFtZWJ1ZmZlckltcGwgKmNyZWF0ZUZyYW1l
YnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZkYXRhKSBvdmVycmlkZTsKKworICAg
IC8vIFRleHR1cmUgY3JlYXRpb24KKyAgICBUZXh0dXJlSW1wbCAqY3JlYXRlVGV4dHVyZShjb25z
dCBnbDo6VGV4dHVyZVN0YXRlICZzdGF0ZSkgb3ZlcnJpZGU7CisKKyAgICAvLyBSZW5kZXJidWZm
ZXIgY3JlYXRpb24KKyAgICBSZW5kZXJidWZmZXJJbXBsICpjcmVhdGVSZW5kZXJidWZmZXIoKSBv
dmVycmlkZTsKKworICAgIC8vIEJ1ZmZlciBjcmVhdGlvbgorICAgIEJ1ZmZlckltcGwgKmNyZWF0
ZUJ1ZmZlcigpIG92ZXJyaWRlOworCisgICAgLy8gVmVydGV4IEFycmF5IGNyZWF0aW9uCisgICAg
VmVydGV4QXJyYXlJbXBsICpjcmVhdGVWZXJ0ZXhBcnJheShjb25zdCBnbDo6VmVydGV4QXJyYXlT
dGF0ZSAmZGF0YSkgb3ZlcnJpZGU7CisKKyAgICAvLyBRdWVyeSBhbmQgRmVuY2UgY3JlYXRpb24K
KyAgICBRdWVyeUltcGwgKmNyZWF0ZVF1ZXJ5KEdMZW51bSB0eXBlKSBvdmVycmlkZTsKKyAgICBG
ZW5jZU5WSW1wbCAqY3JlYXRlRmVuY2VOVigpIG92ZXJyaWRlOworICAgIEZlbmNlU3luY0ltcGwg
KmNyZWF0ZUZlbmNlU3luYygpIG92ZXJyaWRlOworCisgICAgLy8gVHJhbnNmb3JtIEZlZWRiYWNr
IGNyZWF0aW9uCisgICAgVHJhbnNmb3JtRmVlZGJhY2tJbXBsICpjcmVhdGVUcmFuc2Zvcm1GZWVk
YmFjaygKKyAgICAgICAgY29uc3QgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrU3RhdGUgJnN0YXRlKSBv
dmVycmlkZTsKKworICAgIC8vIFNhbXBsZXIgb2JqZWN0IGNyZWF0aW9uCisgICAgU2FtcGxlcklt
cGwgKmNyZWF0ZVNhbXBsZXIoKSBvdmVycmlkZTsKKworICAgIC8vIFBhdGggb2JqZWN0IGNyZWF0
aW9uCisgICAgc3RkOjp2ZWN0b3I8UGF0aEltcGwgKj4gY3JlYXRlUGF0aHMoR0xzaXplaSkgb3Zl
cnJpZGU7CisKKyAgICAvLyBGbHVzaCBhbmQgZmluaXNoLgorICAgIGdsOjpFcnJvciBmbHVzaCgp
IG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBmaW5pc2goKSBvdmVycmlkZTsKKworICAgIC8vIERy
YXdpbmcgbWV0aG9kcy4KKyAgICBnbDo6RXJyb3IgZHJhd0FycmF5cyhHTGVudW0gbW9kZSwgR0xp
bnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBkcmF3QXJy
YXlzSW5zdGFuY2VkKEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0
YW5jZUNvdW50KSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBkcmF3RWxlbWVudHMoR0xlbnVt
IG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9y
IGRyYXdFbGVtZW50c0luc3RhbmNlZChHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpIG92ZXJyaWRlOworICAgIGds
OjpFcnJvciBkcmF3UmFuZ2VFbGVtZW50cyhHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhS
YW5nZSkgb3ZlcnJpZGU7CisKKyAgICAvLyBEZXZpY2UgbG9zcworICAgIEdMZW51bSBnZXRSZXNl
dFN0YXR1cygpIG92ZXJyaWRlOworCisgICAgLy8gVmVuZG9yIGFuZCBkZXNjcmlwdGlvbiBzdHJp
bmdzLgorICAgIHN0ZDo6c3RyaW5nIGdldFZlbmRvclN0cmluZygpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHN0ZDo6c3RyaW5nIGdldFJlbmRlcmVyRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsK
KworICAgIC8vIERlYnVnIG1hcmtlcnMuCisgICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlcihHTHNp
emVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKSBvdmVycmlkZTsKKyAgICB2b2lkIHB1c2hH
cm91cE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKSBvdmVycmlkZTsK
KyAgICB2b2lkIHBvcEdyb3VwTWFya2VyKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBTdGF0ZSBzeW5j
IHdpdGggZGlydHkgYml0cy4KKyAgICB2b2lkIHN5bmNTdGF0ZShjb25zdCBnbDo6U3RhdGUgJnN0
YXRlLCBjb25zdCBnbDo6U3RhdGU6OkRpcnR5Qml0cyAmZGlydHlCaXRzKSBvdmVycmlkZTsKKwor
ICAgIC8vIERpc2pvaW50IHRpbWVyIHF1ZXJpZXMKKyAgICBHTGludCBnZXRHUFVEaXNqb2ludCgp
IG92ZXJyaWRlOworICAgIEdMaW50NjQgZ2V0VGltZXN0YW1wKCkgb3ZlcnJpZGU7CisKKyAgICAv
LyBDb250ZXh0IHN3aXRjaGluZworICAgIHZvaWQgb25NYWtlQ3VycmVudChjb25zdCBnbDo6Q29u
dGV4dFN0YXRlICZkYXRhKSBvdmVycmlkZTsKKworICAgIC8vIENhcHMgcXVlcmllcworICAgIGNv
bnN0IGdsOjpDYXBzICZnZXROYXRpdmVDYXBzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3Qg
Z2w6OlRleHR1cmVDYXBzTWFwICZnZXROYXRpdmVUZXh0dXJlQ2FwcygpIGNvbnN0IG92ZXJyaWRl
OworICAgIGNvbnN0IGdsOjpFeHRlbnNpb25zICZnZXROYXRpdmVFeHRlbnNpb25zKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgY29uc3QgZ2w6OkxpbWl0YXRpb25zICZnZXROYXRpdmVMaW1pdGF0aW9u
cygpIGNvbnN0IG92ZXJyaWRlOworCisgIHByaXZhdGU6CisgICAgUmVuZGVyZXI5ICptUmVuZGVy
ZXI7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5E
RVJFUl9EM0RfRDNEOV9DT05URVhUOV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0ZyYW1lYnVmZmVyOS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2Q5L0ZyYW1lYnVmZmVyOS5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9GcmFtZWJ1ZmZlcjkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03LDIxICs3LDI0IEBACiAvLyBGcmFtZWJ1ZmZlcjkuY3BwOiBJ
bXBsZW1lbnRzIHRoZSBGcmFtZWJ1ZmZlcjkgY2xhc3MuCiAKICNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkOS9GcmFtZWJ1ZmZlcjkuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkOS9mb3JtYXR1dGlsczkuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkOS9UZXh0dXJlU3RvcmFnZTkuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkOS9SZW5kZXJlcjkuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkOS9yZW5kZXJlcjlfdXRpbHMuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkOS9SZW5kZXJUYXJnZXQ5LmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1Rl
eHR1cmVEM0QuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgorCiAjaW5jbHVk
ZSAibGliQU5HTEUvRnJhbWVidWZmZXIuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZl
ckF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9UZXh0dXJlLmgiCisjaW5jbHVkZSAi
bGliQU5HTEUvZm9ybWF0dXRpbHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9Db250
ZXh0SW1wbC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3JlbmRlcmVyX3V0aWxzLmgi
CisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1RleHR1cmVEM0QuaCIKKyNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9SZW5kZXJlcjkuaCIKKyNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkOS9SZW5kZXJUYXJnZXQ5LmgiCisjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDkvVGV4dHVyZVN0b3JhZ2U5LmgiCisjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDkvZm9ybWF0dXRpbHM5LmgiCisjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDkvcmVuZGVyZXI5X3V0aWxzLmgiCiAKIG5hbWVzcGFjZSByeAogewog
Ci1GcmFtZWJ1ZmZlcjk6OkZyYW1lYnVmZmVyOShjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRhdGEg
JmRhdGEsIFJlbmRlcmVyOSAqcmVuZGVyZXIpCitGcmFtZWJ1ZmZlcjk6OkZyYW1lYnVmZmVyOShj
b25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmZGF0YSwgUmVuZGVyZXI5ICpyZW5kZXJlcikKICAg
ICA6IEZyYW1lYnVmZmVyRDNEKGRhdGEsIHJlbmRlcmVyKSwgbVJlbmRlcmVyKHJlbmRlcmVyKQog
ewogICAgIEFTU0VSVChtUmVuZGVyZXIgIT0gbnVsbHB0cik7CkBAIC01MiwyMyArNTUsMjUgQEAK
ICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotZ2w6OkVycm9yIEZyYW1l
YnVmZmVyOTo6Y2xlYXIoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIGNvbnN0IENsZWFyUGFyYW1ldGVy
cyAmY2xlYXJQYXJhbXMpCitnbDo6RXJyb3IgRnJhbWVidWZmZXI5OjpjbGVhckltcGwoQ29udGV4
dEltcGwgKmNvbnRleHQsIGNvbnN0IENsZWFyUGFyYW1ldGVycyAmY2xlYXJQYXJhbXMpCiB7Ci0g
ICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqY29sb3JBdHRhY2htZW50ID0gbURh
dGEuZ2V0Q29sb3JBdHRhY2htZW50KDApOwotICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFj
aG1lbnQgKmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBtRGF0YS5nZXREZXB0aE9yU3RlbmNpbEF0
dGFjaG1lbnQoKTsKKyAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICpjb2xvckF0
dGFjaG1lbnQgICAgICAgID0gbVN0YXRlLmdldENvbG9yQXR0YWNobWVudCgwKTsKKyAgICBjb25z
dCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICpkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbVN0
YXRlLmdldERlcHRoT3JTdGVuY2lsQXR0YWNobWVudCgpOwogCi0gICAgZ2w6OkVycm9yIGVycm9y
ID0gbVJlbmRlcmVyLT5hcHBseVJlbmRlclRhcmdldChjb2xvckF0dGFjaG1lbnQsIGRlcHRoU3Rl
bmNpbEF0dGFjaG1lbnQpOworICAgIGdsOjpFcnJvciBlcnJvciA9CisgICAgICAgIG1SZW5kZXJl
ci0+YXBwbHlSZW5kZXJUYXJnZXQoY29udGV4dCwgY29sb3JBdHRhY2htZW50LCBkZXB0aFN0ZW5j
aWxBdHRhY2htZW50KTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGVycm9yOwogICAgIH0KIAotICAgIGZsb2F0IG5lYXJaID0gZGF0YS5zdGF0ZS0+Z2V0
TmVhclBsYW5lKCk7Ci0gICAgZmxvYXQgZmFyWiA9IGRhdGEuc3RhdGUtPmdldEZhclBsYW5lKCk7
Ci0gICAgbVJlbmRlcmVyLT5zZXRWaWV3cG9ydChkYXRhLmNhcHMsIGRhdGEuc3RhdGUtPmdldFZp
ZXdwb3J0KCksIG5lYXJaLCBmYXJaLCBHTF9UUklBTkdMRVMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhLnN0YXRlLT5nZXRSYXN0ZXJpemVyU3RhdGUoKS5mcm9udEZhY2UsIHRydWUp
OworICAgIGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSA9IGNvbnRleHQtPmdldEdMU3RhdGUoKTsK
KyAgICBmbG9hdCBuZWFyWiAgICAgICAgICAgICAgPSBnbFN0YXRlLmdldE5lYXJQbGFuZSgpOwor
ICAgIGZsb2F0IGZhclogPSBnbFN0YXRlLmdldEZhclBsYW5lKCk7CisgICAgbVJlbmRlcmVyLT5z
ZXRWaWV3cG9ydChnbFN0YXRlLmdldFZpZXdwb3J0KCksIG5lYXJaLCBmYXJaLCBHTF9UUklBTkdM
RVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBnbFN0YXRlLmdldFJhc3Rlcml6ZXJTdGF0
ZSgpLmZyb250RmFjZSwgdHJ1ZSk7CiAKLSAgICBtUmVuZGVyZXItPnNldFNjaXNzb3JSZWN0YW5n
bGUoZGF0YS5zdGF0ZS0+Z2V0U2Npc3NvcigpLCBkYXRhLnN0YXRlLT5pc1NjaXNzb3JUZXN0RW5h
YmxlZCgpKTsKKyAgICBtUmVuZGVyZXItPnNldFNjaXNzb3JSZWN0YW5nbGUoZ2xTdGF0ZS5nZXRT
Y2lzc29yKCksIGdsU3RhdGUuaXNTY2lzc29yVGVzdEVuYWJsZWQoKSk7CiAKICAgICByZXR1cm4g
bVJlbmRlcmVyLT5jbGVhcihjbGVhclBhcmFtcywgY29sb3JBdHRhY2htZW50LCBkZXB0aFN0ZW5j
aWxBdHRhY2htZW50KTsKIH0KQEAgLTgyLDcgKzg3LDcgQEAKIHsKICAgICBBU1NFUlQocGFjay5w
aXhlbEJ1ZmZlci5nZXQoKSA9PSBudWxscHRyKTsKIAotICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnQgKmNvbG9yYnVmZmVyID0gbURhdGEuZ2V0Q29sb3JBdHRhY2htZW50KDApOwor
ICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmNvbG9yYnVmZmVyID0gbVN0YXRl
LmdldENvbG9yQXR0YWNobWVudCgwKTsKICAgICBBU1NFUlQoY29sb3JidWZmZXIpOwogCiAgICAg
UmVuZGVyVGFyZ2V0OSAqcmVuZGVyVGFyZ2V0ID0gbnVsbHB0cjsKQEAgLTE4Myw3MyArMTg4LDI1
IEBACiAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0
byBsb2NrIGludGVybmFsIHJlbmRlciB0YXJnZXQuIik7CiAgICAgfQogCi0gICAgdWludDhfdCAq
c291cmNlOwotICAgIGludCBpbnB1dFBpdGNoOwotICAgIGlmIChwYWNrLnJldmVyc2VSb3dPcmRl
cikKLSAgICB7Ci0gICAgICAgIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGxv
Y2sucEJpdHMpICsgbG9jay5QaXRjaCAqIChyZWN0LmJvdHRvbSAtIHJlY3QudG9wIC0gMSk7Ci0g
ICAgICAgIGlucHV0UGl0Y2ggPSAtbG9jay5QaXRjaDsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsK
LSAgICAgICAgc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4obG9jay5wQml0cyk7
Ci0gICAgICAgIGlucHV0UGl0Y2ggPSBsb2NrLlBpdGNoOwotICAgIH0KKyAgICB1aW50OF90ICpz
b3VyY2UgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QgKj4obG9jay5wQml0cyk7CisgICAgaW50
IGlucHV0UGl0Y2ggID0gbG9jay5QaXRjaDsKIAogICAgIGNvbnN0IGQzZDk6OkQzREZvcm1hdCAm
ZDNkRm9ybWF0SW5mbyA9IGQzZDk6OkdldEQzREZvcm1hdEluZm8oZGVzYy5Gb3JtYXQpOwotICAg
IGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmc291cmNlRm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRl
cm5hbEZvcm1hdEluZm8oZDNkRm9ybWF0SW5mby5pbnRlcm5hbEZvcm1hdCk7Ci0gICAgaWYgKHNv
dXJjZUZvcm1hdEluZm8uZm9ybWF0ID09IGZvcm1hdCAmJiBzb3VyY2VGb3JtYXRJbmZvLnR5cGUg
PT0gdHlwZSkKLSAgICB7Ci0gICAgICAgIC8vIERpcmVjdCBjb3B5IHBvc3NpYmxlCi0gICAgICAg
IGZvciAoaW50IHkgPSAwOyB5IDwgcmVjdC5ib3R0b20gLSByZWN0LnRvcDsgeSsrKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBtZW1jcHkocGl4ZWxzICsgeSAqIG91dHB1dFBpdGNoLCBzb3VyY2Ug
KyB5ICogaW5wdXRQaXRjaCwgKHJlY3QucmlnaHQgLSByZWN0LmxlZnQpICogc291cmNlRm9ybWF0
SW5mby5waXhlbEJ5dGVzKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAg
ICAgICBjb25zdCBkM2Q5OjpEM0RGb3JtYXQgJnNvdXJjZUQzREZvcm1hdEluZm8gPSBkM2Q5OjpH
ZXREM0RGb3JtYXRJbmZvKGRlc2MuRm9ybWF0KTsKLSAgICAgICAgQ29sb3JDb3B5RnVuY3Rpb24g
ZmFzdENvcHlGdW5jID0gc291cmNlRDNERm9ybWF0SW5mby5nZXRGYXN0Q29weUZ1bmN0aW9uKGZv
cm1hdCwgdHlwZSk7CisgICAgZ2w6OkZvcm1hdFR5cGUgZm9ybWF0VHlwZShmb3JtYXQsIHR5cGUp
OwogCi0gICAgICAgIEdMZW51bSBzaXplZERlc3RJbnRlcm5hbEZvcm1hdCA9IGdsOjpHZXRTaXpl
ZEludGVybmFsRm9ybWF0KGZvcm1hdCwgdHlwZSk7Ci0gICAgICAgIGNvbnN0IGdsOjpJbnRlcm5h
bEZvcm1hdCAmZGVzdEZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKHNpemVk
RGVzdEludGVybmFsRm9ybWF0KTsKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBNYXliZSB3ZSBjYW4g
YXZvaWQgYSBjb3B5IG9mIHBhY2sgcGFyYW1ldGVycyBoZXJlPworICAgIFBhY2tQaXhlbHNQYXJh
bXMgcGFja1BhcmFtczsKKyAgICBwYWNrUGFyYW1zLmFyZWEueCAgICAgID0gcmVjdC5sZWZ0Owor
ICAgIHBhY2tQYXJhbXMuYXJlYS55ICAgICAgPSByZWN0LnRvcDsKKyAgICBwYWNrUGFyYW1zLmFy
ZWEud2lkdGggID0gcmVjdC5yaWdodCAtIHJlY3QubGVmdDsKKyAgICBwYWNrUGFyYW1zLmFyZWEu
aGVpZ2h0ID0gcmVjdC5ib3R0b20gLSByZWN0LnRvcDsKKyAgICBwYWNrUGFyYW1zLmZvcm1hdCAg
ICAgID0gZm9ybWF0OworICAgIHBhY2tQYXJhbXMudHlwZSAgICAgICAgPSB0eXBlOworICAgIHBh
Y2tQYXJhbXMub3V0cHV0UGl0Y2ggPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KG91dHB1dFBpdGNoKTsK
KyAgICBwYWNrUGFyYW1zLnBhY2sgICAgICAgID0gcGFjazsKIAotICAgICAgICBpZiAoZmFzdENv
cHlGdW5jKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBGYXN0IGNvcHkgaXMgcG9zc2libGUg
dGhyb3VnaCBzb21lIHNwZWNpYWwgZnVuY3Rpb24KLSAgICAgICAgICAgIGZvciAoaW50IHkgPSAw
OyB5IDwgcmVjdC5ib3R0b20gLSByZWN0LnRvcDsgeSsrKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgcmVjdC5yaWdodCAtIHJlY3QubGVmdDsgeCsr
KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqZGVzdCA9
IHBpeGVscyArIHkgKiBvdXRwdXRQaXRjaCArIHggKiBkZXN0Rm9ybWF0SW5mby5waXhlbEJ5dGVz
OwotICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzcmMgPSBzb3VyY2UgKyB5ICog
aW5wdXRQaXRjaCArIHggKiBzb3VyY2VGb3JtYXRJbmZvLnBpeGVsQnl0ZXM7CisgICAgUGFja1Bp
eGVscyhwYWNrUGFyYW1zLCAqZDNkRm9ybWF0SW5mby5pbmZvLCBpbnB1dFBpdGNoLCBzb3VyY2Us
IHBpeGVscyk7CiAKLSAgICAgICAgICAgICAgICAgICAgZmFzdENvcHlGdW5jKHNyYywgZGVzdCk7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgewotICAgICAgICAgICAgQ29sb3JSZWFkRnVuY3Rpb24gY29sb3JSZWFkRnVu
Y3Rpb24gPSBzb3VyY2VEM0RGb3JtYXRJbmZvLmNvbG9yUmVhZEZ1bmN0aW9uOwotICAgICAgICAg
ICAgQ29sb3JXcml0ZUZ1bmN0aW9uIGNvbG9yV3JpdGVGdW5jdGlvbiA9IEdldENvbG9yV3JpdGVG
dW5jdGlvbihmb3JtYXQsIHR5cGUpOwotCi0gICAgICAgICAgICB1aW50OF90IHRlbXBbc2l6ZW9m
KGdsOjpDb2xvckYpXTsKLSAgICAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgcmVjdC5ib3R0
b20gLSByZWN0LnRvcDsgeSsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZvciAo
aW50IHggPSAwOyB4IDwgcmVjdC5yaWdodCAtIHJlY3QubGVmdDsgeCsrKQotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqZGVzdCA9IHBpeGVscyArIHkgKiBv
dXRwdXRQaXRjaCArIHggKiBkZXN0Rm9ybWF0SW5mby5waXhlbEJ5dGVzOwotICAgICAgICAgICAg
ICAgICAgICBjb25zdCB1aW50OF90ICpzcmMgPSBzb3VyY2UgKyB5ICogaW5wdXRQaXRjaCArIHgg
KiBzb3VyY2VGb3JtYXRJbmZvLnBpeGVsQnl0ZXM7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8g
cmVhZEZ1bmMgYW5kIHdyaXRlRnVuYyB3aWxsIGJlIHVzaW5nIHRoZSBzYW1lIHR5cGUgb2YgY29s
b3IsIENvcHlUZXhJbWFnZQotICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIG5vdCBhbGxvdyB0
aGUgY29weSBvdGhlcndpc2UuCi0gICAgICAgICAgICAgICAgICAgIGNvbG9yUmVhZEZ1bmN0aW9u
KHNyYywgdGVtcCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbG9yV3JpdGVGdW5jdGlvbih0ZW1w
LCBkZXN0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci0KICAgICBzeXN0ZW1TdXJmYWNlLT5VbmxvY2tSZWN0KCk7CiAgICAgU2FmZVJlbGVhc2Uo
c3lzdGVtU3VyZmFjZSk7CiAKQEAgLTI1Niw5ICsyMTMsMTQgQEAKICAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX05PX0VSUk9SKTsKIH0KIAotZ2w6OkVycm9yIEZyYW1lYnVmZmVyOTo6YmxpdChjb25z
dCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZkZXN0QXJl
YSwgY29uc3QgZ2w6OlJlY3RhbmdsZSAqc2Npc3NvciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBibGl0UmVuZGVyVGFyZ2V0LCBib29sIGJsaXREZXB0aCwgYm9vbCBibGl0U3Rl
bmNpbCwgR0xlbnVtIGZpbHRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OkZyYW1lYnVmZmVyICpzb3VyY2VGcmFtZWJ1ZmZlcikKK2dsOjpFcnJvciBGcmFtZWJ1ZmZl
cjk6OmJsaXRJbXBsKGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZkZXN0QXJlYSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgKnNjaXNz
b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGJsaXRSZW5kZXJUYXJn
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGJsaXREZXB0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYmxpdFN0ZW5jaWwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsdGVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2VGcmFtZWJ1ZmZl
cikKIHsKICAgICBBU1NFUlQoZmlsdGVyID09IEdMX05FQVJFU1QpOwogCkBAIC0yODAsNyArMjQy
LDcgQEAKICAgICAgICAgfQogICAgICAgICBBU1NFUlQocmVhZFJlbmRlclRhcmdldCk7CiAKLSAg
ICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqZHJhd0J1ZmZlciA9IG1EYXRh
LmdldENvbG9yQXR0YWNobWVudCgwKTsKKyAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0
YWNobWVudCAqZHJhd0J1ZmZlciA9IG1TdGF0ZS5nZXRDb2xvckF0dGFjaG1lbnQoMCk7CiAgICAg
ICAgIEFTU0VSVChkcmF3QnVmZmVyKTsKIAogICAgICAgICBSZW5kZXJUYXJnZXQ5ICpkcmF3UmVu
ZGVyVGFyZ2V0ID0gbnVsbHB0cjsKQEAgLTQwNiw3ICszNjgsNyBAQAogICAgICAgICB9CiAgICAg
ICAgIEFTU0VSVChyZWFkRGVwdGhTdGVuY2lsKTsKIAotICAgICAgICBjb25zdCBnbDo6RnJhbWVi
dWZmZXJBdHRhY2htZW50ICpkcmF3QnVmZmVyID0gbURhdGEuZ2V0RGVwdGhPclN0ZW5jaWxBdHRh
Y2htZW50KCk7CisgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmRyYXdC
dWZmZXIgPSBtU3RhdGUuZ2V0RGVwdGhPclN0ZW5jaWxBdHRhY2htZW50KCk7CiAgICAgICAgIEFT
U0VSVChkcmF3QnVmZmVyKTsKIAogICAgICAgICBSZW5kZXJUYXJnZXQ5ICpkcmF3RGVwdGhTdGVu
Y2lsID0gbnVsbHB0cjsKQEAgLTQ0Miw3ICs0MDQsNyBAQAogewogICAgIFJlbmRlclRhcmdldDkg
KnJlbmRlclRhcmdldDkgPSBHZXRBczxSZW5kZXJUYXJnZXQ5PihyZW5kZXJUYXJnZXQpOwogICAg
IGNvbnN0IGQzZDk6OkQzREZvcm1hdCAmZDNkRm9ybWF0SW5mbyA9IGQzZDk6OkdldEQzREZvcm1h
dEluZm8ocmVuZGVyVGFyZ2V0OS0+Z2V0RDNERm9ybWF0KCkpOwotICAgIHJldHVybiBkM2RGb3Jt
YXRJbmZvLmludGVybmFsRm9ybWF0OworICAgIHJldHVybiBkM2RGb3JtYXRJbmZvLmluZm8tPmds
SW50ZXJuYWxGb3JtYXQ7CiB9CiAKLX0KK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0ZyYW1lYnVm
ZmVyOS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkOS9GcmFtZWJ1ZmZlcjkuaAkocmV2aXNpb24gMjA4MDIxKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0Zy
YW1lYnVmZmVyOS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw3ICsxOCw3IEBACiBjbGFzcyBGcmFt
ZWJ1ZmZlcjkgOiBwdWJsaWMgRnJhbWVidWZmZXJEM0QKIHsKICAgcHVibGljOgotICAgIEZyYW1l
YnVmZmVyOShjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRhdGEgJmRhdGEsIFJlbmRlcmVyOSAqcmVu
ZGVyZXIpOworICAgIEZyYW1lYnVmZmVyOShjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmZGF0
YSwgUmVuZGVyZXI5ICpyZW5kZXJlcik7CiAgICAgdmlydHVhbCB+RnJhbWVidWZmZXI5KCk7CiAK
ICAgICBnbDo6RXJyb3IgZGlzY2FyZChzaXplX3QgY291bnQsIGNvbnN0IEdMZW51bSAqYXR0YWNo
bWVudHMpIG92ZXJyaWRlOwpAQCAtMjYsNyArMjYsNyBAQAogICAgIGdsOjpFcnJvciBpbnZhbGlk
YXRlU3ViKHNpemVfdCBjb3VudCwgY29uc3QgR0xlbnVtICphdHRhY2htZW50cywgY29uc3QgZ2w6
OlJlY3RhbmdsZSAmYXJlYSkgb3ZlcnJpZGU7CiAKICAgcHJpdmF0ZToKLSAgICBnbDo6RXJyb3Ig
Y2xlYXIoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIGNvbnN0IENsZWFyUGFyYW1ldGVycyAmY2xlYXJQ
YXJhbXMpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBjbGVhckltcGwoQ29udGV4dEltcGwgKmNv
bnRleHQsIGNvbnN0IENsZWFyUGFyYW1ldGVycyAmY2xlYXJQYXJhbXMpIG92ZXJyaWRlOwogCiAg
ICAgZ2w6OkVycm9yIHJlYWRQaXhlbHNJbXBsKGNvbnN0IGdsOjpSZWN0YW5nbGUgJmFyZWEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCkBAIC0zNSw5ICszNSwx
NCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxQYWNrU3Rh
dGUgJnBhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnBpeGVscykg
Y29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBnbDo6RXJyb3IgYmxpdChjb25zdCBnbDo6UmVjdGFuZ2xl
ICZzb3VyY2VBcmVhLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZkZXN0QXJlYSwgY29uc3QgZ2w6OlJl
Y3RhbmdsZSAqc2Npc3NvciwKLSAgICAgICAgICAgICAgICAgICBib29sIGJsaXRSZW5kZXJUYXJn
ZXQsIGJvb2wgYmxpdERlcHRoLCBib29sIGJsaXRTdGVuY2lsLCBHTGVudW0gZmlsdGVyLAotICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlRnJhbWVidWZmZXIp
IG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBibGl0SW1wbChjb25zdCBnbDo6UmVjdGFuZ2xlICZz
b3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZk
ZXN0QXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAqc2Np
c3NvciwKKyAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBibGl0UmVuZGVyVGFyZ2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGJsaXREZXB0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBibGl0U3RlbmNpbCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbHRl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2VG
cmFtZWJ1ZmZlcikgb3ZlcnJpZGU7CiAKICAgICBHTGVudW0gZ2V0UmVuZGVyVGFyZ2V0SW1wbGVt
ZW50YXRpb25Gb3JtYXQoUmVuZGVyVGFyZ2V0RDNEICpyZW5kZXJUYXJnZXQpIGNvbnN0IG92ZXJy
aWRlOwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDkvSW1hZ2U5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvSW1hZ2U5LmNwcAkocmV2aXNpb24g
MjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2Q5L0ltYWdlOS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAKICAg
ICBBU1NFUlQoc291cmNlRGVzYy5IZWlnaHQgPT0gMSB8fCBzb3VyY2VEZXNjLkhlaWdodCAvIDIg
PT0gZGVzdERlc2MuSGVpZ2h0KTsKIAogICAgIGNvbnN0IGQzZDk6OkQzREZvcm1hdCAmZDNkRm9y
bWF0SW5mbyA9IGQzZDk6OkdldEQzREZvcm1hdEluZm8oc291cmNlRGVzYy5Gb3JtYXQpOwotICAg
IEFTU0VSVChkM2RGb3JtYXRJbmZvLm1pcEdlbmVyYXRpb25GdW5jdGlvbiAhPSBOVUxMKTsKKyAg
ICBBU1NFUlQoZDNkRm9ybWF0SW5mby5pbmZvLT5taXBHZW5lcmF0aW9uRnVuY3Rpb24gIT0gTlVM
TCk7CiAKICAgICBEM0RMT0NLRURfUkVDVCBzb3VyY2VMb2NrZWQgPSB7MH07CiAgICAgcmVzdWx0
ID0gc291cmNlU3VyZmFjZS0+TG9ja1JlY3QoJnNvdXJjZUxvY2tlZCwgTlVMTCwgRDNETE9DS19S
RUFET05MWSk7CkBAIC04NSw4ICs4NSw4IEBACiAKICAgICBBU1NFUlQoc291cmNlRGF0YSAmJiBk
ZXN0RGF0YSk7CiAKLSAgICBkM2RGb3JtYXRJbmZvLm1pcEdlbmVyYXRpb25GdW5jdGlvbihzb3Vy
Y2VEZXNjLldpZHRoLCBzb3VyY2VEZXNjLkhlaWdodCwgMSwgc291cmNlRGF0YSwgc291cmNlTG9j
a2VkLlBpdGNoLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
c3REYXRhLCBkZXN0TG9ja2VkLlBpdGNoLCAwKTsKKyAgICBkM2RGb3JtYXRJbmZvLmluZm8tPm1p
cEdlbmVyYXRpb25GdW5jdGlvbihzb3VyY2VEZXNjLldpZHRoLCBzb3VyY2VEZXNjLkhlaWdodCwg
MSwgc291cmNlRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzb3VyY2VMb2NrZWQuUGl0Y2gsIDAsIGRlc3REYXRhLCBkZXN0TG9ja2VkLlBpdGNoLCAw
KTsKIAogICAgIGRlc3RTdXJmYWNlLT5VbmxvY2tSZWN0KCk7CiAgICAgc291cmNlU3VyZmFjZS0+
VW5sb2NrUmVjdCgpOwpAQCAtNDczLDE1ICs0NzMsMjMgQEAKIAogLy8gU3RvcmUgdGhlIHBpeGVs
IHJlY3RhbmdsZSBkZXNpZ25hdGVkIGJ5IHhvZmZzZXQseW9mZnNldCx3aWR0aCxoZWlnaHQgd2l0
aCBwaXhlbHMgc3RvcmVkIGFzIGZvcm1hdC90eXBlIGF0IGlucHV0CiAvLyBpbnRvIHRoZSB0YXJn
ZXQgcGl4ZWwgcmVjdGFuZ2xlLgotZ2w6OkVycm9yIEltYWdlOTo6bG9hZERhdGEoY29uc3QgZ2w6
OkJveCAmYXJlYSwgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywgR0xlbnVtIHR5
cGUsIGNvbnN0IHZvaWQgKmlucHV0KQorZ2w6OkVycm9yIEltYWdlOTo6bG9hZERhdGEoY29uc3Qg
Z2w6OkJveCAmYXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhl
bFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmlucHV0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhcHBseVNraXBJbWFnZXMpCiB7CiAgICAgLy8g
M0QgdGV4dHVyZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIEQzRDkgYmFja2VuZC4KICAgICBB
U1NFUlQoYXJlYS56ID09IDAgJiYgYXJlYS5kZXB0aCA9PSAxKTsKIAogICAgIGNvbnN0IGdsOjpJ
bnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8obUlu
dGVybmFsRm9ybWF0KTsKLSAgICBHTHNpemVpIGlucHV0Um93UGl0Y2ggPSBmb3JtYXRJbmZvLmNv
bXB1dGVSb3dQaXRjaCh0eXBlLCBhcmVhLndpZHRoLCB1bnBhY2suYWxpZ25tZW50LCB1bnBhY2su
cm93TGVuZ3RoKTsKLSAgICBHTHNpemVpIGlucHV0U2tpcEJ5dGVzID0gZm9ybWF0SW5mby5jb21w
dXRlU2tpcFBpeGVscyhpbnB1dFJvd1BpdGNoLCAwLCB1bnBhY2suc2tpcEltYWdlcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnBh
Y2suc2tpcFJvd3MsIHVucGFjay5za2lwUGl4ZWxzKTsKKyAgICBHTHVpbnQgaW5wdXRSb3dQaXRj
aCAgICAgICAgICAgICAgICAgPSAwOworICAgIEFOR0xFX1RSWV9SRVNVTFQoCisgICAgICAgIGZv
cm1hdEluZm8uY29tcHV0ZVJvd1BpdGNoKHR5cGUsIGFyZWEud2lkdGgsIHVucGFjay5hbGlnbm1l
bnQsIHVucGFjay5yb3dMZW5ndGgpLAorICAgICAgICBpbnB1dFJvd1BpdGNoKTsKKyAgICBBU1NF
UlQoIWFwcGx5U2tpcEltYWdlcyk7CisgICAgQVNTRVJUKHVucGFjay5za2lwUGl4ZWxzID09IDAp
OworICAgIEFTU0VSVCh1bnBhY2suc2tpcFJvd3MgPT0gMCk7CiAKICAgICBjb25zdCBkM2Q5OjpU
ZXh0dXJlRm9ybWF0ICZkM2RGb3JtYXRJbmZvID0gZDNkOTo6R2V0VGV4dHVyZUZvcm1hdEluZm8o
bUludGVybmFsRm9ybWF0KTsKICAgICBBU1NFUlQoZDNkRm9ybWF0SW5mby5sb2FkRnVuY3Rpb24g
IT0gTlVMTCk7CkBAIC01MDAsOSArNTA4LDggQEAKICAgICB9CiAKICAgICBkM2RGb3JtYXRJbmZv
LmxvYWRGdW5jdGlvbihhcmVhLndpZHRoLCBhcmVhLmhlaWdodCwgYXJlYS5kZXB0aCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qg
Kj4oaW5wdXQpICsgaW5wdXRTa2lwQnl0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW5wdXRSb3dQaXRjaCwgMCwgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90ICo+KGxvY2tlZC5w
Qml0cyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9ja2VkLlBpdGNoLCAwKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QgKj4oaW5wdXQpLCBpbnB1dFJvd1BpdGNoLCAwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCAqPihsb2NrZWQucEJpdHMpLCBsb2Nr
ZWQuUGl0Y2gsIDApOwogCiAgICAgdW5sb2NrKCk7CiAKQEAgLTUxNSw5ICs1MjIsMTEgQEAKICAg
ICBBU1NFUlQoYXJlYS56ID09IDAgJiYgYXJlYS5kZXB0aCA9PSAxKTsKIAogICAgIGNvbnN0IGds
OjpJbnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8o
bUludGVybmFsRm9ybWF0KTsKLSAgICBHTHNpemVpIGlucHV0Um93UGl0Y2ggPSBmb3JtYXRJbmZv
LmNvbXB1dGVSb3dQaXRjaChHTF9VTlNJR05FRF9CWVRFLCBhcmVhLndpZHRoLCAxLCAwKTsKLSAg
ICBHTHNpemVpIGlucHV0RGVwdGhQaXRjaCA9Ci0gICAgICAgIGZvcm1hdEluZm8uY29tcHV0ZURl
cHRoUGl0Y2goR0xfVU5TSUdORURfQllURSwgYXJlYS53aWR0aCwgYXJlYS5oZWlnaHQsIDEsIDAs
IDApOworICAgIEdMc2l6ZWkgaW5wdXRSb3dQaXRjaCAgICAgICAgICAgICAgICA9IDA7CisgICAg
QU5HTEVfVFJZX1JFU1VMVChmb3JtYXRJbmZvLmNvbXB1dGVSb3dQaXRjaChHTF9VTlNJR05FRF9C
WVRFLCBhcmVhLndpZHRoLCAxLCAwKSwgaW5wdXRSb3dQaXRjaCk7CisgICAgR0xzaXplaSBpbnB1
dERlcHRoUGl0Y2ggPSAwOworICAgIEFOR0xFX1RSWV9SRVNVTFQoZm9ybWF0SW5mby5jb21wdXRl
RGVwdGhQaXRjaChhcmVhLmhlaWdodCwgMCwgaW5wdXREZXB0aFBpdGNoKSwKKyAgICAgICAgICAg
ICAgICAgICAgIGlucHV0RGVwdGhQaXRjaCk7CiAKICAgICBjb25zdCBkM2Q5OjpUZXh0dXJlRm9y
bWF0ICZkM2Q5Rm9ybWF0SW5mbyA9IGQzZDk6OkdldFRleHR1cmVGb3JtYXRJbmZvKG1JbnRlcm5h
bEZvcm1hdCk7CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkOS9JbWFnZTkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvSW1hZ2U5LmgJKHJldmlzaW9u
IDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkOS9JbWFnZTkuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIsMTIgQEAKICAg
ICB2aXJ0dWFsIGdsOjpFcnJvciBzZXRNYW5hZ2VkU3VyZmFjZUN1YmUoVGV4dHVyZVN0b3JhZ2Ug
KnN0b3JhZ2UsIGludCBmYWNlLCBpbnQgbGV2ZWwpOwogICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNv
cHlUb1N0b3JhZ2UoVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsIGNvbnN0IGdsOjpJbWFnZUluZGV4
ICZpbmRleCwgY29uc3QgZ2w6OkJveCAmcmVnaW9uKTsKIAotICAgIHZpcnR1YWwgZ2w6OkVycm9y
IGxvYWREYXRhKGNvbnN0IGdsOjpCb3ggJmFyZWEsIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRl
ICZ1bnBhY2ssIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICppbnB1dCk7Ci0gICAgdmlydHVhbCBn
bDo6RXJyb3IgbG9hZENvbXByZXNzZWREYXRhKGNvbnN0IGdsOjpCb3ggJmFyZWEsIGNvbnN0IHZv
aWQgKmlucHV0KTsKKyAgICBnbDo6RXJyb3IgbG9hZERhdGEoY29uc3QgZ2w6OkJveCAmYXJlYSwK
KyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFj
aywKKyAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHZvaWQgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICBib29sIGFw
cGx5U2tpcEltYWdlcykgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGxvYWRDb21wcmVzc2VkRGF0
YShjb25zdCBnbDo6Qm94ICZhcmVhLCBjb25zdCB2b2lkICppbnB1dCkgb3ZlcnJpZGU7CiAKICAg
ICBnbDo6RXJyb3IgY29weUZyb21UZXhTdG9yYWdlKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbWFn
ZUluZGV4LCBUZXh0dXJlU3RvcmFnZSAqc291cmNlKSBvdmVycmlkZTsKICAgICBnbDo6RXJyb3Ig
Y29weUZyb21GcmFtZWJ1ZmZlcihjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LApJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0lu
ZGV4QnVmZmVyOS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0luZGV4QnVmZmVyOS5jcHAJKHJldmlzaW9uIDIw
ODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkOS9JbmRleEJ1ZmZlcjkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBA
CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoaW5kZXhUeXBlID09IEdMX1VOU0lHTkVEX0lO
VCkKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKG1SZW5kZXJlci0+Z2V0UmVuZGVyZXJF
eHRlbnNpb25zKCkuZWxlbWVudEluZGV4VWludCk7CisgICAgICAgICAgICBBU1NFUlQobVJlbmRl
cmVyLT5nZXROYXRpdmVFeHRlbnNpb25zKCkuZWxlbWVudEluZGV4VWludCk7CiAgICAgICAgICAg
ICBmb3JtYXQgPSBEM0RGTVRfSU5ERVgzMjsKICAgICAgICAgfQogICAgICAgICBlbHNlIFVOUkVB
Q0hBQkxFKCk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDkvTmF0aXZlV2luZG93OS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L05hdGl2ZVdpbmRv
dzkuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkOS9OYXRpdmVXaW5kb3c5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDM5IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gTmF0aXZlV2luZG93OS5jcHA6IERl
ZmluZXMgTmF0aXZlV2luZG93OSwgYSBjbGFzcyBmb3IgbWFuYWdpbmcgYW5kCisvLyBwZXJmb3Jt
aW5nIG9wZXJhdGlvbnMgb24gYW4gRUdMTmF0aXZlV2luZG93VHlwZSBmb3IgdGhlIEQzRDkgcmVu
ZGVyZXIuCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9OYXRpdmVXaW5k
b3c5LmgiCisKK25hbWVzcGFjZSByeAoreworTmF0aXZlV2luZG93OTo6TmF0aXZlV2luZG93OShF
R0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdykgOiBOYXRpdmVXaW5kb3dEM0Qod2luZG93KQorewor
fQorCitib29sIE5hdGl2ZVdpbmRvdzk6OmluaXRpYWxpemUoKQoreworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIE5hdGl2ZVdpbmRvdzk6OmdldENsaWVudFJlY3QoTFBSRUNUIHJlY3QpIGNv
bnN0Cit7CisgICAgcmV0dXJuIEdldENsaWVudFJlY3QoZ2V0TmF0aXZlV2luZG93KCksIHJlY3Qp
ID09IFRSVUU7Cit9CisKK2Jvb2wgTmF0aXZlV2luZG93OTo6aXNJY29uaWMoKSBjb25zdAorewor
ICAgIHJldHVybiBJc0ljb25pYyhnZXROYXRpdmVXaW5kb3coKSkgPT0gVFJVRTsKK30KKworLy8g
c3RhdGljCitib29sIE5hdGl2ZVdpbmRvdzk6OklzVmFsaWROYXRpdmVXaW5kb3coRUdMTmF0aXZl
V2luZG93VHlwZSB3aW5kb3cpCit7CisgICAgcmV0dXJuIElzV2luZG93KHdpbmRvdykgPT0gVFJV
RTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvTmF0aXZlV2luZG93OS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkOS9OYXRpdmVXaW5kb3c5LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L05hdGl2ZVdpbmRvdzkuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDM1IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gTmF0aXZlV2lu
ZG93OS5oOiBEZWZpbmVzIE5hdGl2ZVdpbmRvdzksIGEgY2xhc3MgZm9yIG1hbmFnaW5nIGFuZAor
Ly8gcGVyZm9ybWluZyBvcGVyYXRpb25zIG9uIGFuIEVHTE5hdGl2ZVdpbmRvd1R5cGUgZm9yIHRo
ZSBEM0Q5IHJlbmRlcmVyLgorCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9EM0Q5X05B
VElWRVdJTkRPVzlfSF8KKyNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfRDNEX0QzRDlfTkFUSVZF
V0lORE9XOV9IXworCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisjaW5jbHVkZSAiY29tbW9u
L3BsYXRmb3JtLmgiCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvTmF0aXZlV2lu
ZG93RDNELmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBOYXRpdmVXaW5kb3c5IDogcHVi
bGljIE5hdGl2ZVdpbmRvd0QzRAoreworICBwdWJsaWM6CisgICAgZXhwbGljaXQgTmF0aXZlV2lu
ZG93OShFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdyk7CisKKyAgICBib29sIGluaXRpYWxpemUo
KSBvdmVycmlkZTsKKyAgICBib29sIGdldENsaWVudFJlY3QoTFBSRUNUIHJlY3QpIGNvbnN0IG92
ZXJyaWRlOworICAgIGJvb2wgaXNJY29uaWMoKSBjb25zdCBvdmVycmlkZTsKKworICAgIHN0YXRp
YyBib29sIElzVmFsaWROYXRpdmVXaW5kb3coRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3cpOwor
fTsKKworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJf
RDNEX0QzRDlfTkFUSVZFV0lORE9XOV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1F1ZXJ5OS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1F1
ZXJ5OS5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9RdWVyeTkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw5ICszMCwxMCBAQAogCiBnbDo6RXJyb3IgUXVlcnk5OjpiZWdpbigpCiB7Ci0gICAgaWYg
KG1RdWVyeSA9PSBOVUxMKQorICAgIEQzRFFVRVJZVFlQRSBkM2RRdWVyeVR5cGUgPSBnbF9kM2Q5
OjpDb252ZXJ0UXVlcnlUeXBlKGdldFR5cGUoKSk7CisgICAgaWYgKG1RdWVyeSA9PSBudWxscHRy
KQogICAgIHsKLSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtUmVuZGVyZXItPmdldERldmljZSgp
LT5DcmVhdGVRdWVyeShEM0RRVUVSWVRZUEVfT0NDTFVTSU9OLCAmbVF1ZXJ5KTsKKyAgICAgICAg
SFJFU1VMVCByZXN1bHQgPSBtUmVuZGVyZXItPmdldERldmljZSgpLT5DcmVhdGVRdWVyeShkM2RR
dWVyeVR5cGUsICZtUXVlcnkpOwogICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgICAg
IHsKICAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkludGVy
bmFsIHF1ZXJ5IGNyZWF0aW9uIGZhaWxlZCwgcmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7CkBAIC0z
OSwxMSArNDAsMTUgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIEhSRVNVTFQgcmVzdWx0ID0g
bVF1ZXJ5LT5Jc3N1ZShEM0RJU1NVRV9CRUdJTik7Ci0gICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1
bHQpKTsKLSAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgaWYgKGQzZFF1ZXJ5VHlwZSAhPSBE
M0RRVUVSWVRZUEVfRVZFTlQpCiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09V
VF9PRl9NRU1PUlksICJGYWlsZWQgdG8gYmVnaW4gaW50ZXJuYWwgcXVlcnksIHJlc3VsdDogMHgl
WC4iLCByZXN1bHQpOworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1RdWVyeS0+SXNzdWUoRDNE
SVNTVUVfQkVHSU4pOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgICAg
ICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBiZWdpbiBpbnRlcm5hbCBxdWVyeSwg
cmVzdWx0OiAweCVYLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCk7Cisg
ICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKQEAg
LTEzMywyNiArMTM4LDQwIEBACiAgICAgewogICAgICAgICBBU1NFUlQobVF1ZXJ5KTsKIAotICAg
ICAgICBEV09SRCBudW1QaXhlbHMgPSAwOwotCi0gICAgICAgIEhSRVNVTFQgaHJlcyA9IG1RdWVy
eS0+R2V0RGF0YSgmbnVtUGl4ZWxzLCBzaXplb2YoRFdPUkQpLCBEM0RHRVREQVRBX0ZMVVNIKTsK
LSAgICAgICAgaWYgKGhyZXMgPT0gU19PSykKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBTX09L
OworICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKSkKICAgICAgICAgewotICAgICAgICAgICAgbVF1
ZXJ5RmluaXNoZWQgPSB0cnVlOworICAgICAgICAgICAgY2FzZSBHTF9BTllfU0FNUExFU19QQVNT
RURfRVhUOgorICAgICAgICAgICAgY2FzZSBHTF9BTllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFU
SVZFX0VYVDoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBEV09SRCBudW1QaXhlbHMg
PSAwOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1RdWVyeS0+R2V0RGF0YSgmbnVtUGl4ZWxz
LCBzaXplb2YobnVtUGl4ZWxzKSwgRDNER0VUREFUQV9GTFVTSCk7CisgICAgICAgICAgICAgICAg
aWYgKHJlc3VsdCA9PSBTX09LKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgbVF1ZXJ5RmluaXNoZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBtUmVzdWx0ICAg
ICAgICA9IChudW1QaXhlbHMgPiAwKSA/IEdMX1RSVUUgOiBHTF9GQUxTRTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgIHN3aXRjaCAoZ2V0VHlwZSgpKQorICAgICAgICAgICAgY2FzZSBHTF9DT01NQU5EU19DT01Q
TEVURURfQ0hST01JVU06CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfQU5Z
X1NBTVBMRVNfUEFTU0VEX0VYVDoKLSAgICAgICAgICAgICAgY2FzZSBHTF9BTllfU0FNUExFU19Q
QVNTRURfQ09OU0VSVkFUSVZFX0VYVDoKLSAgICAgICAgICAgICAgICBtUmVzdWx0ID0gKG51bVBp
eGVscyA+IDApID8gR0xfVFJVRSA6IEdMX0ZBTFNFOworICAgICAgICAgICAgICAgIEJPT0wgY29t
cGxldGVkID0gRkFMU0U7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbVF1ZXJ5LT5HZXREYXRh
KCZjb21wbGV0ZWQsIHNpemVvZihjb21wbGV0ZWQpLCBEM0RHRVREQVRBX0ZMVVNIKTsKKyAgICAg
ICAgICAgICAgICBpZiAocmVzdWx0ID09IFNfT0spCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBtUXVlcnlGaW5pc2hlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAg
IG1SZXN1bHQgICAgICAgID0gKGNvbXBsZXRlZCA9PSBUUlVFKSA/IEdMX1RSVUUgOiBHTF9GQUxT
RTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChkM2Q5Ojppc0RldmljZUxvc3RF
cnJvcihocmVzKSkKKworICAgICAgICBpZiAoZDNkOTo6aXNEZXZpY2VMb3N0RXJyb3IocmVzdWx0
KSkKICAgICAgICAgewogICAgICAgICAgICAgbVJlbmRlcmVyLT5ub3RpZnlEZXZpY2VMb3N0KCk7
CiAgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQg
dG8gdGVzdCBnZXQgcXVlcnkgcmVzdWx0LCBkZXZpY2UgaXMgbG9zdC4iKTsKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9SZW5kZXJU
YXJnZXQ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvUmVuZGVyVGFyZ2V0OS5jcHAJKHJldmlzaW9uIDIwODAy
MSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkOS9SZW5kZXJUYXJnZXQ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDcgKzEzMCw4IEBA
CiAKIEdMZW51bSBTdXJmYWNlUmVuZGVyVGFyZ2V0OTo6Z2V0SW50ZXJuYWxGb3JtYXQoKSBjb25z
dAogewotICAgIHJldHVybiAobURlcHRoID8gbVN3YXBDaGFpbi0+R2V0RGVwdGhCdWZmZXJJbnRl
cm5hbEZvcm1hdCgpIDogbVN3YXBDaGFpbi0+R2V0UmVuZGVyVGFyZ2V0SW50ZXJuYWxGb3JtYXQo
KSk7CisgICAgcmV0dXJuIChtRGVwdGggPyBtU3dhcENoYWluLT5nZXREZXB0aEJ1ZmZlckludGVy
bmFsRm9ybWF0KCkKKyAgICAgICAgICAgICAgICAgICA6IG1Td2FwQ2hhaW4tPmdldFJlbmRlclRh
cmdldEludGVybmFsRm9ybWF0KCkpOwogfQogCiBHTHNpemVpIFN1cmZhY2VSZW5kZXJUYXJnZXQ5
OjpnZXRTYW1wbGVzKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9SZW5kZXJlcjkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9SZW5k
ZXJlcjkuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvUmVuZGVyZXI5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjMsMTEgKzIzLDEzIEBACiAjaW5jbHVkZSAibGliQU5HTEUvUmVuZGVyYnVmZmVyLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQmxpdDkuaCIKICNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9CdWZmZXI5LmgiCisjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDkvQ29udGV4dDkuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkOS9GZW5jZTkuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkOS9mb3JtYXR1dGlsczkuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
OS9GcmFtZWJ1ZmZlcjkuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9J
bWFnZTkuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9JbmRleEJ1ZmZl
cjkuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9OYXRpdmVXaW5kb3c5
LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvUXVlcnk5LmgiCiAjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvcmVuZGVyZXI5X3V0aWxzLmgiCiAjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvUmVuZGVyVGFyZ2V0OS5oIgpAQCAtNDUs
NyArNDcsNiBAQAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9TaGFkZXJEM0QuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvU3VyZmFjZUQzRC5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9UZXh0dXJlRDNELmgiCi0jaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZDNkL1RyYW5zZm9ybUZlZWRiYWNrRDNELmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
U3RhdGUuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9TdXJmYWNlLmgiCiAjaW5jbHVkZSAibGliQU5H
TEUvVGV4dHVyZS5oIgpAQCAtMTMxLDcgKzEzMiw3IEBACiAgICAgbUFwcGxpZWRQaXhlbFNoYWRl
ciA9IE5VTEw7CiAgICAgbUFwcGxpZWRQcm9ncmFtU2VyaWFsID0gMDsKIAotICAgIGluaXRpYWxp
emVEZWJ1Z0Fubm90YXRvcigpOworICAgIGdsOjpJbml0aWFsaXplRGVidWdBbm5vdGF0aW9ucygm
bUFubm90YXRvcik7CiAKICAgICBtRUdMRGV2aWNlID0gbnVsbHB0cjsKIH0KQEAgLTE1NCw2ICsx
NTUsOCBAQAogewogICAgIFJlbmRlcmVyRDNEOjpjbGVhbnVwKCk7CiAKKyAgICBnbDo6VW5pbml0
aWFsaXplRGVidWdBbm5vdGF0aW9ucygpOworCiAgICAgbVRyYW5zbGF0ZWRBdHRyaWJDYWNoZS5j
bGVhcigpOwogCiAgICAgcmVsZWFzZURldmljZVJlc291cmNlcygpOwpAQCAtMzQ2LDcgKzM0OSw3
IEBACiAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1BPSU5UU0laRV9NQVgs
IDB4M0Y4MDAwMDApOyAgIC8vIDEuMGYKICAgICB9CiAKLSAgICBjb25zdCBnbDo6Q2FwcyAmcmVu
ZGVyZXJDYXBzID0gZ2V0UmVuZGVyZXJDYXBzKCk7CisgICAgY29uc3QgZ2w6OkNhcHMgJnJlbmRl
cmVyQ2FwcyA9IGdldE5hdGl2ZUNhcHMoKTsKIAogICAgIG1DdXJWZXJ0ZXhTYW1wbGVyU3RhdGVz
LnJlc2l6ZShyZW5kZXJlckNhcHMubWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMpOwogICAgIG1D
dXJQaXhlbFNhbXBsZXJTdGF0ZXMucmVzaXplKHJlbmRlcmVyQ2Fwcy5tYXhUZXh0dXJlSW1hZ2VV
bml0cyk7CkBAIC0zNjYsNyArMzY5LDkgQEAKICAgICBtVmVydGV4RGF0YU1hbmFnZXIgPSBuZXcg
VmVydGV4RGF0YU1hbmFnZXIodGhpcyk7CiAgICAgbUluZGV4RGF0YU1hbmFnZXIgPSBuZXcgSW5k
ZXhEYXRhTWFuYWdlcih0aGlzLCBnZXRSZW5kZXJlckNsYXNzKCkpOwogCi0gICAgbVRyYW5zbGF0
ZWRBdHRyaWJDYWNoZS5yZXNpemUoZ2V0UmVuZGVyZXJDYXBzKCkubWF4VmVydGV4QXR0cmlidXRl
cyk7CisgICAgbVRyYW5zbGF0ZWRBdHRyaWJDYWNoZS5yZXNpemUoZ2V0TmF0aXZlQ2FwcygpLm1h
eFZlcnRleEF0dHJpYnV0ZXMpOworCisgICAgbVN0YXRlTWFuYWdlci5pbml0aWFsaXplKCk7CiB9
CiAKIEQzRFBSRVNFTlRfUEFSQU1FVEVSUyBSZW5kZXJlcjk6OmdldERlZmF1bHRQcmVzZW50UGFy
YW1ldGVycygpCkBAIC0zOTEsNyArMzk2LDcgQEAKICAgICByZXR1cm4gcHJlc2VudFBhcmFtZXRl
cnM7CiB9CiAKLWVnbDo6Q29uZmlnU2V0IFJlbmRlcmVyOTo6Z2VuZXJhdGVDb25maWdzKCkgY29u
c3QKK2VnbDo6Q29uZmlnU2V0IFJlbmRlcmVyOTo6Z2VuZXJhdGVDb25maWdzKCkKIHsKICAgICBz
dGF0aWMgY29uc3QgR0xlbnVtIGNvbG9yQnVmZmVyRm9ybWF0c1tdID0KICAgICB7CkBAIC00MTAs
OCArNDE1LDggQEAKICAgICAgICAgR0xfREVQVEhfQ09NUE9ORU5UMTYsCiAgICAgfTsKIAotICAg
IGNvbnN0IGdsOjpDYXBzICZyZW5kZXJlckNhcHMgPSBnZXRSZW5kZXJlckNhcHMoKTsKLSAgICBj
b25zdCBnbDo6VGV4dHVyZUNhcHNNYXAgJnJlbmRlcmVyVGV4dHVyZUNhcHMgPSBnZXRSZW5kZXJl
clRleHR1cmVDYXBzKCk7CisgICAgY29uc3QgZ2w6OkNhcHMgJnJlbmRlcmVyQ2FwcyAgICAgICAg
ICAgICAgICAgID0gZ2V0TmF0aXZlQ2FwcygpOworICAgIGNvbnN0IGdsOjpUZXh0dXJlQ2Fwc01h
cCAmcmVuZGVyZXJUZXh0dXJlQ2FwcyA9IGdldE5hdGl2ZVRleHR1cmVDYXBzKCk7CiAKICAgICBE
M0RESVNQTEFZTU9ERSBjdXJyZW50RGlzcGxheU1vZGU7CiAgICAgbUQzZDktPkdldEFkYXB0ZXJE
aXNwbGF5TW9kZShtQWRhcHRlciwgJmN1cnJlbnREaXNwbGF5TW9kZSk7CkBAIC01MjQsOSArNTI5
LDcgQEAKICAgICBvdXRFeHRlbnNpb25zLT5xdWVyeVN1cmZhY2VQb2ludGVyID0gdHJ1ZTsKICAg
ICBvdXRFeHRlbnNpb25zLT53aW5kb3dGaXhlZFNpemUgICAgID0gdHJ1ZTsKICAgICBvdXRFeHRl
bnNpb25zLT5wb3N0U3ViQnVmZmVyICAgICAgID0gdHJ1ZTsKLSAgICBvdXRFeHRlbnNpb25zLT5j
cmVhdGVDb250ZXh0ICAgICAgID0gdHJ1ZTsKICAgICBvdXRFeHRlbnNpb25zLT5kZXZpY2VRdWVy
eSAgICAgICAgID0gdHJ1ZTsKLSAgICBvdXRFeHRlbnNpb25zLT5jcmVhdGVDb250ZXh0Tm9FcnJv
ciA9IHRydWU7CiAKICAgICBvdXRFeHRlbnNpb25zLT5pbWFnZSAgICAgICAgICAgICAgID0gdHJ1
ZTsKICAgICBvdXRFeHRlbnNpb25zLT5pbWFnZUJhc2UgICAgICAgICAgID0gdHJ1ZTsKQEAgLTY1
NSwxOSArNjU4LDMxIEBACiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAK
LVN3YXBDaGFpbkQzRCAqUmVuZGVyZXI5OjpjcmVhdGVTd2FwQ2hhaW4oTmF0aXZlV2luZG93IG5h
dGl2ZVdpbmRvdywKK2Jvb2wgUmVuZGVyZXI5Ojppc1ZhbGlkTmF0aXZlV2luZG93KEVHTE5hdGl2
ZVdpbmRvd1R5cGUgd2luZG93KSBjb25zdAoreworICAgIHJldHVybiBOYXRpdmVXaW5kb3c5OjpJ
c1ZhbGlkTmF0aXZlV2luZG93KHdpbmRvdyk7Cit9CisKK05hdGl2ZVdpbmRvd0QzRCAqUmVuZGVy
ZXI5OjpjcmVhdGVOYXRpdmVXaW5kb3coRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29u
ZmlnICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGVnbDo6QXR0cmlidXRlTWFwICYpIGNvbnN0Cit7CisgICAgcmV0dXJuIG5ldyBOYXRpdmVX
aW5kb3c5KHdpbmRvdyk7Cit9CisKK1N3YXBDaGFpbkQzRCAqUmVuZGVyZXI5OjpjcmVhdGVTd2Fw
Q2hhaW4oTmF0aXZlV2luZG93RDNEICpuYXRpdmVXaW5kb3csCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRSBzaGFyZUhhbmRsZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJhY2tCdWZmZXJGb3JtYXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXB0aEJ1ZmZlckZv
cm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IG9y
aWVudGF0aW9uKQogewotICAgIHJldHVybiBuZXcgU3dhcENoYWluOSh0aGlzLCBuYXRpdmVXaW5k
b3csIHNoYXJlSGFuZGxlLCBiYWNrQnVmZmVyRm9ybWF0LCBkZXB0aEJ1ZmZlckZvcm1hdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3JpZW50YXRpb24pOworICAgIHJldHVybiBuZXcgU3dh
cENoYWluOSh0aGlzLCBHZXRBczxOYXRpdmVXaW5kb3c5PihuYXRpdmVXaW5kb3cpLCBzaGFyZUhh
bmRsZSwgYmFja0J1ZmZlckZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGhC
dWZmZXJGb3JtYXQsIG9yaWVudGF0aW9uKTsKIH0KIAotQ29tcGlsZXJJbXBsICpSZW5kZXJlcjk6
OmNyZWF0ZUNvbXBpbGVyKCkKK0NvbnRleHRJbXBsICpSZW5kZXJlcjk6OmNyZWF0ZUNvbnRleHQo
Y29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmc3RhdGUpCiB7Ci0gICAgcmV0dXJuIG5ldyBDb21waWxl
ckQzRChTSF9ITFNMXzNfMF9PVVRQVVQpOworICAgIHJldHVybiBuZXcgQ29udGV4dDkoc3RhdGUs
IHRoaXMpOwogfQogCiB2b2lkICpSZW5kZXJlcjk6OmdldEQzRERldmljZSgpCkBAIC03MzksNDAg
Kzc1NCwxMCBAQAogICAgIHJldHVybiBuZXcgSW5kZXhCdWZmZXI5KHRoaXMpOwogfQogCi1CdWZm
ZXJJbXBsICpSZW5kZXJlcjk6OmNyZWF0ZUJ1ZmZlcigpCitTdHJlYW1Qcm9kdWNlckltcGwgKlJl
bmRlcmVyOTo6Y3JlYXRlU3RyZWFtUHJvZHVjZXJEM0RUZXh0dXJlTlYxMigKKyAgICBlZ2w6OlN0
cmVhbTo6Q29uc3VtZXJUeXBlIGNvbnN1bWVyVHlwZSwKKyAgICBjb25zdCBlZ2w6OkF0dHJpYnV0
ZU1hcCAmYXR0cmlicykKIHsKLSAgICByZXR1cm4gbmV3IEJ1ZmZlcjkodGhpcyk7Ci19Ci0KLVZl
cnRleEFycmF5SW1wbCAqUmVuZGVyZXI5OjpjcmVhdGVWZXJ0ZXhBcnJheShjb25zdCBnbDo6VmVy
dGV4QXJyYXk6OkRhdGEgJmRhdGEpCi17Ci0gICAgcmV0dXJuIG5ldyBWZXJ0ZXhBcnJheTkoZGF0
YSk7Ci19Ci0KLVF1ZXJ5SW1wbCAqUmVuZGVyZXI5OjpjcmVhdGVRdWVyeShHTGVudW0gdHlwZSkK
LXsKLSAgICByZXR1cm4gbmV3IFF1ZXJ5OSh0aGlzLCB0eXBlKTsKLX0KLQotRmVuY2VOVkltcGwg
KlJlbmRlcmVyOTo6Y3JlYXRlRmVuY2VOVigpCi17Ci0gICAgcmV0dXJuIG5ldyBGZW5jZU5WOSh0
aGlzKTsKLX0KLQotRmVuY2VTeW5jSW1wbCAqUmVuZGVyZXI5OjpjcmVhdGVGZW5jZVN5bmMoKQot
ewotICAgIC8vIFJlbmRlcmVyOSBkb2Vzbid0IHN1cHBvcnQgRVMgMy4wIGFuZCBpdHMgc3luYyBv
YmplY3RzLgotICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLVRyYW5z
Zm9ybUZlZWRiYWNrSW1wbCogUmVuZGVyZXI5OjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpCi17
Ci0gICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1GZWVkYmFja0QzRCgpOwotfQotCi1TdHJlYW1JbXBs
ICpSZW5kZXJlcjk6OmNyZWF0ZVN0cmVhbShjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmli
cykKLXsKICAgICAvLyBTdHJlYW1zIGFyZSBub3Qgc3VwcG9ydGVkIHVuZGVyIEQzRDkKICAgICBV
TlJFQUNIQUJMRSgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtNzkyLDEzICs3NzcsNiBAQAog
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi1nbDo6RXJy
b3IgUmVuZGVyZXI5OjpnZW5lcmF0ZVN3aXp6bGUoZ2w6OlRleHR1cmUgKnRleHR1cmUpCi17Ci0g
ICAgLy8gU3dpenpsZWQgdGV4dHVyZXMgYXJlIG5vdCBhdmFpbGFibGUgaW4gRVMyIG9yIEQzRDkK
LSAgICBVTlJFQUNIQUJMRSgpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOwotfQotCiBnbDo6RXJyb3IgUmVuZGVyZXI5OjpzZXRTYW1wbGVyU3RhdGUoZ2w6OlNh
bXBsZXJUeXBlIHR5cGUsIGludCBpbmRleCwgZ2w6OlRleHR1cmUgKnRleHR1cmUsIGNvbnN0IGds
OjpTYW1wbGVyU3RhdGUgJnNhbXBsZXJTdGF0ZSkKIHsKICAgICBDdXJTYW1wbGVyU3RhdGUgJmFw
cGxpZWRTYW1wbGVyID0gKHR5cGUgPT0gZ2w6OlNBTVBMRVJfUElYRUwpID8gbUN1clBpeGVsU2Ft
cGxlclN0YXRlc1tpbmRleF0KQEAgLTgzOCw5ICs4MTYsMTEgQEAKICAgICAgICAgbURldmljZS0+
U2V0U2FtcGxlclN0YXRlKGQzZFNhbXBsZXIsIEQzRFNBTVBfTUlQRklMVEVSLCBkM2RNaXBGaWx0
ZXIpOwogICAgICAgICBtRGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUoZDNkU2FtcGxlciwgRDNEU0FN
UF9NQVhNSVBMRVZFTCwgYmFzZUxldmVsKTsKICAgICAgICAgbURldmljZS0+U2V0U2FtcGxlclN0
YXRlKGQzZFNhbXBsZXIsIEQzRFNBTVBfTUlQTUFQTE9EQklBUywgc3RhdGljX2Nhc3Q8RFdPUkQ+
KGxvZEJpYXMpKTsKLSAgICAgICAgaWYgKGdldFJlbmRlcmVyRXh0ZW5zaW9ucygpLnRleHR1cmVG
aWx0ZXJBbmlzb3Ryb3BpYykKKyAgICAgICAgaWYgKGdldE5hdGl2ZUV4dGVuc2lvbnMoKS50ZXh0
dXJlRmlsdGVyQW5pc290cm9waWMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1EZXZpY2UtPlNl
dFNhbXBsZXJTdGF0ZShkM2RTYW1wbGVyLCBEM0RTQU1QX01BWEFOSVNPVFJPUFksIChEV09SRClz
YW1wbGVyU3RhdGUubWF4QW5pc290cm9weSk7CisgICAgICAgICAgICBEV09SRCBtYXhBbmlzb3Ry
b3B5ID0KKyAgICAgICAgICAgICAgICBzdGQ6Om1pbihtRGV2aWNlQ2Fwcy5NYXhBbmlzb3Ryb3B5
LCBzdGF0aWNfY2FzdDxEV09SRD4oc2FtcGxlclN0YXRlLm1heEFuaXNvdHJvcHkpKTsKKyAgICAg
ICAgICAgIG1EZXZpY2UtPlNldFNhbXBsZXJTdGF0ZShkM2RTYW1wbGVyLCBEM0RTQU1QX01BWEFO
SVNPVFJPUFksIG1heEFuaXNvdHJvcHkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC04OTksNTcg
Kzg3OSw0NSBAQAogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi1nbDo6
RXJyb3IgUmVuZGVyZXI5OjpzZXRVbmlmb3JtQnVmZmVycyhjb25zdCBnbDo6RGF0YSAmLypkYXRh
Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZl
Y3RvcjxHTGludD4gJi8qdmVydGV4VW5pZm9ybUJ1ZmZlcnMqLywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEdMaW50PiAmLypmcmFnbWVu
dFVuaWZvcm1CdWZmZXJzKi8pCitnbDo6RXJyb3IgUmVuZGVyZXI5OjpzZXRVbmlmb3JtQnVmZmVy
cyhjb25zdCBnbDo6Q29udGV4dFN0YXRlICYgLypkYXRhKi8sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxHTGludD4gJiAvKnZlcnRleFVu
aWZvcm1CdWZmZXJzKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnZlY3RvcjxHTGludD4gJiAvKmZyYWdtZW50VW5pZm9ybUJ1ZmZlcnMqLykKIHsK
ICAgICAvLyBObyBlZmZlY3QgaW4gRVMyL0QzRDkKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05P
X0VSUk9SKTsKIH0KIAotdm9pZCBSZW5kZXJlcjk6OnN5bmNTdGF0ZShjb25zdCBnbDo6U3RhdGUg
JnN0YXRlLCBjb25zdCBnbDo6U3RhdGU6OkRpcnR5Qml0cyAmYml0bWFzaykKK2dsOjpFcnJvciBS
ZW5kZXJlcjk6OnVwZGF0ZVN0YXRlKENvbnRleHQ5ICpjb250ZXh0LCBHTGVudW0gZHJhd01vZGUp
CiB7Ci0gICAgbVN0YXRlTWFuYWdlci5zeW5jU3RhdGUoc3RhdGUsIGJpdG1hc2spOwotfQorICAg
IGNvbnN0IGF1dG8gJmRhdGEgPSBjb250ZXh0LT5nZXRDb250ZXh0U3RhdGUoKTsKKyAgICBjb25z
dCBhdXRvICZnbFN0YXRlID0gZGF0YS5nZXRTdGF0ZSgpOwogCi1nbDo6RXJyb3IgUmVuZGVyZXI5
Ojp1cGRhdGVTdGF0ZShjb25zdCBnbDo6RGF0YSAmZGF0YSwgR0xlbnVtIGRyYXdNb2RlKQotewog
ICAgIC8vIEFwcGxpZXMgdGhlIHJlbmRlciB0YXJnZXQgc3VyZmFjZSwgZGVwdGggc3RlbmNpbCBz
dXJmYWNlLCB2aWV3cG9ydCByZWN0YW5nbGUgYW5kCiAgICAgLy8gc2Npc3NvciByZWN0YW5nbGUg
dG8gdGhlIHJlbmRlcmVyCi0gICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlck9i
amVjdCA9IGRhdGEuc3RhdGUtPmdldERyYXdGcmFtZWJ1ZmZlcigpOwotICAgIEFTU0VSVChmcmFt
ZWJ1ZmZlck9iamVjdCAmJiBmcmFtZWJ1ZmZlck9iamVjdC0+Y2hlY2tTdGF0dXMoZGF0YSkgPT0g
R0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpOworICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZm
ZXIgPSBnbFN0YXRlLmdldERyYXdGcmFtZWJ1ZmZlcigpOworICAgIEFTU0VSVChmcmFtZWJ1ZmZl
ciAmJiAhZnJhbWVidWZmZXItPmhhc0FueURpcnR5Qml0KCkgJiYgZnJhbWVidWZmZXItPmNvbXBs
ZXRlKGRhdGEpKTsKIAotICAgIGdsOjpFcnJvciBlcnJvciA9IGFwcGx5UmVuZGVyVGFyZ2V0KGZy
YW1lYnVmZmVyT2JqZWN0KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkoYXBwbHlSZW5kZXJUYXJnZXQo
Y29udGV4dCwgZnJhbWVidWZmZXIpKTsKIAogICAgIC8vIFNldHRpbmcgdmlld3BvcnQgc3RhdGUK
LSAgICBzZXRWaWV3cG9ydChkYXRhLmNhcHMsIGRhdGEuc3RhdGUtPmdldFZpZXdwb3J0KCksIGRh
dGEuc3RhdGUtPmdldE5lYXJQbGFuZSgpLAotICAgICAgICAgICAgICAgIGRhdGEuc3RhdGUtPmdl
dEZhclBsYW5lKCksIGRyYXdNb2RlLCBkYXRhLnN0YXRlLT5nZXRSYXN0ZXJpemVyU3RhdGUoKS5m
cm9udEZhY2UsCi0gICAgICAgICAgICAgICAgZmFsc2UpOworICAgIHNldFZpZXdwb3J0KGdsU3Rh
dGUuZ2V0Vmlld3BvcnQoKSwgZ2xTdGF0ZS5nZXROZWFyUGxhbmUoKSwgZ2xTdGF0ZS5nZXRGYXJQ
bGFuZSgpLCBkcmF3TW9kZSwKKyAgICAgICAgICAgICAgICBnbFN0YXRlLmdldFJhc3Rlcml6ZXJT
dGF0ZSgpLmZyb250RmFjZSwgZmFsc2UpOwogCiAgICAgLy8gU2V0dGluZyBzY2lzc29ycyBzdGF0
ZQotICAgIHNldFNjaXNzb3JSZWN0YW5nbGUoZGF0YS5zdGF0ZS0+Z2V0U2Npc3NvcigpLCBkYXRh
LnN0YXRlLT5pc1NjaXNzb3JUZXN0RW5hYmxlZCgpKTsKKyAgICBzZXRTY2lzc29yUmVjdGFuZ2xl
KGdsU3RhdGUuZ2V0U2Npc3NvcigpLCBnbFN0YXRlLmlzU2Npc3NvclRlc3RFbmFibGVkKCkpOwog
CiAgICAgLy8gU2V0dGluZyBibGVuZCwgZGVwdGggc3RlbmNpbCwgYW5kIHJhc3Rlcml6ZXIgc3Rh
dGVzCi0gICAgaW50IHNhbXBsZXMgICAgICAgICAgICAgICAgICAgID0gZnJhbWVidWZmZXJPYmpl
Y3QtPmdldFNhbXBsZXMoZGF0YSk7Ci0gICAgZ2w6OlJhc3Rlcml6ZXJTdGF0ZSByYXN0ZXJpemVy
ID0gZGF0YS5zdGF0ZS0+Z2V0UmFzdGVyaXplclN0YXRlKCk7CisgICAgaW50IHNhbXBsZXMgICAg
ICAgICAgICAgICAgICAgID0gZnJhbWVidWZmZXItPmdldFNhbXBsZXMoZGF0YSk7CisgICAgZ2w6
OlJhc3Rlcml6ZXJTdGF0ZSByYXN0ZXJpemVyID0gZ2xTdGF0ZS5nZXRSYXN0ZXJpemVyU3RhdGUo
KTsKICAgICByYXN0ZXJpemVyLnBvaW50RHJhd01vZGUgICAgICAgPSAoZHJhd01vZGUgPT0gR0xf
UE9JTlRTKTsKICAgICByYXN0ZXJpemVyLm11bHRpU2FtcGxlICAgICAgICAgPSAoc2FtcGxlcyAh
PSAwKTsKIAogICAgIHVuc2lnbmVkIGludCBtYXNrID0gR2V0QmxlbmRTYW1wbGVNYXNrKGRhdGEs
IHNhbXBsZXMpOwotICAgIGVycm9yICAgICAgICAgICAgID0gc2V0QmxlbmREZXB0aFJhc3RlclN0
YXRlcyhkYXRhLCBtYXNrKTsKKyAgICBBTkdMRV9UUlkoc2V0QmxlbmREZXB0aFJhc3RlclN0YXRl
cyhkYXRhLCBtYXNrKSk7CiAKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGVycm9yOwotICAgIH0KLQogICAgIG1TdGF0ZU1hbmFnZXIucmVzZXREaXJ0eUJp
dHMoKTsKIAotICAgIHJldHVybiBlcnJvcjsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0K
IAogdm9pZCBSZW5kZXJlcjk6OnNldFNjaXNzb3JSZWN0YW5nbGUoY29uc3QgZ2w6OlJlY3Rhbmds
ZSAmc2Npc3NvciwgYm9vbCBlbmFibGVkKQpAQCAtOTU3LDE5ICs5MjUsMjEgQEAKICAgICBtU3Rh
dGVNYW5hZ2VyLnNldFNjaXNzb3JTdGF0ZShzY2lzc29yLCBlbmFibGVkKTsKIH0KIAotZ2w6OkVy
cm9yIFJlbmRlcmVyOTo6c2V0QmxlbmREZXB0aFJhc3RlclN0YXRlcyhjb25zdCBnbDo6RGF0YSAm
Z2xEYXRhLCBHTGVudW0gZHJhd01vZGUpCitnbDo6RXJyb3IgUmVuZGVyZXI5OjpzZXRCbGVuZERl
cHRoUmFzdGVyU3RhdGVzKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmdsRGF0YSwgR0xlbnVtIGRy
YXdNb2RlKQogewotICAgIGludCBzYW1wbGVzICAgICAgICAgICAgICAgICAgICA9IGdsRGF0YS5z
dGF0ZS0+Z2V0RHJhd0ZyYW1lYnVmZmVyKCktPmdldFNhbXBsZXMoZ2xEYXRhKTsKLSAgICBnbDo6
UmFzdGVyaXplclN0YXRlIHJhc3Rlcml6ZXIgPSBnbERhdGEuc3RhdGUtPmdldFJhc3Rlcml6ZXJT
dGF0ZSgpOworICAgIGNvbnN0IGF1dG8gJmdsU3RhdGUgID0gZ2xEYXRhLmdldFN0YXRlKCk7Cisg
ICAgYXV0byBkcmF3RnJhbWVidWZmZXIgPSBnbFN0YXRlLmdldERyYXdGcmFtZWJ1ZmZlcigpOwor
ICAgIEFTU0VSVCghZHJhd0ZyYW1lYnVmZmVyLT5oYXNBbnlEaXJ0eUJpdCgpKTsKKyAgICBpbnQg
c2FtcGxlcyAgICAgICAgICAgICAgICAgICAgPSBkcmF3RnJhbWVidWZmZXItPmdldFNhbXBsZXMo
Z2xEYXRhKTsKKyAgICBnbDo6UmFzdGVyaXplclN0YXRlIHJhc3Rlcml6ZXIgPSBnbFN0YXRlLmdl
dFJhc3Rlcml6ZXJTdGF0ZSgpOwogICAgIHJhc3Rlcml6ZXIucG9pbnREcmF3TW9kZSAgICAgICA9
IChkcmF3TW9kZSA9PSBHTF9QT0lOVFMpOwogICAgIHJhc3Rlcml6ZXIubXVsdGlTYW1wbGUgICAg
ICAgICA9IChzYW1wbGVzICE9IDApOwogCiAgICAgdW5zaWduZWQgaW50IG1hc2sgPSBHZXRCbGVu
ZFNhbXBsZU1hc2soZ2xEYXRhLCBzYW1wbGVzKTsKLSAgICByZXR1cm4gbVN0YXRlTWFuYWdlci5z
ZXRCbGVuZERlcHRoUmFzdGVyU3RhdGVzKCpnbERhdGEuc3RhdGUsIG1hc2spOworICAgIHJldHVy
biBtU3RhdGVNYW5hZ2VyLnNldEJsZW5kRGVwdGhSYXN0ZXJTdGF0ZXMoZ2xTdGF0ZSwgbWFzayk7
CiB9CiAKLXZvaWQgUmVuZGVyZXI5OjpzZXRWaWV3cG9ydChjb25zdCBnbDo6Q2FwcyAqY2FwcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZ2aWV3cG9y
dCwKK3ZvaWQgUmVuZGVyZXI5OjpzZXRWaWV3cG9ydChjb25zdCBnbDo6UmVjdGFuZ2xlICZ2aWV3
cG9ydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB6TmVhciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbG9hdCB6RmFyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBkcmF3TW9kZSwKQEAgLTk3Niw4ICs5NDYsNyBAQAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBmcm9udEZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpZ25vcmVWaWV3cG9ydCkKIHsKLSAgICBtU3RhdGVNYW5hZ2VyLnNldFZpZXdwb3J0
U3RhdGUoY2Fwcywgdmlld3BvcnQsIHpOZWFyLCB6RmFyLCBkcmF3TW9kZSwgZnJvbnRGYWNlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVWaWV3cG9ydCk7CisgICAg
bVN0YXRlTWFuYWdlci5zZXRWaWV3cG9ydFN0YXRlKHZpZXdwb3J0LCB6TmVhciwgekZhciwgZHJh
d01vZGUsIGZyb250RmFjZSwgaWdub3JlVmlld3BvcnQpOwogfQogCiBib29sIFJlbmRlcmVyOTo6
YXBwbHlQcmltaXRpdmVUeXBlKEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBib29sIHVzZXNQ
b2ludFNpemUpCkBAIC0xMDIwLDggKzk4OSw5IEBACiAgICAgcmV0dXJuIG1QcmltaXRpdmVDb3Vu
dCA+IDA7CiB9CiAKLQotZ2w6OkVycm9yIFJlbmRlcmVyOTo6Z2V0TnVsbENvbG9yYnVmZmVyKGNv
bnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmRlcHRoYnVmZmVyLCBjb25zdCBnbDo6RnJh
bWVidWZmZXJBdHRhY2htZW50ICoqb3V0Q29sb3JCdWZmZXIpCitnbDo6RXJyb3IgUmVuZGVyZXI5
OjpnZXROdWxsQ29sb3JidWZmZXIoR0xJbXBsRmFjdG9yeSAqaW1wbEZhY3RvcnksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0
YWNobWVudCAqZGVwdGhidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqKm91dENvbG9yQnVmZmVyKQog
ewogICAgIEFTU0VSVChkZXB0aGJ1ZmZlcik7CiAKQEAgLTEwNDAsNyArMTAxMCw3IEBACiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBnbDo6UmVuZGVyYnVmZmVyICpudWxsUmVuZGVyYnVmZmVyID0g
bmV3IGdsOjpSZW5kZXJidWZmZXIoY3JlYXRlUmVuZGVyYnVmZmVyKCksIDApOworICAgIGdsOjpS
ZW5kZXJidWZmZXIgKm51bGxSZW5kZXJidWZmZXIgPSBuZXcgZ2w6OlJlbmRlcmJ1ZmZlcihpbXBs
RmFjdG9yeS0+Y3JlYXRlUmVuZGVyYnVmZmVyKCksIDApOwogICAgIGdsOjpFcnJvciBlcnJvciA9
IG51bGxSZW5kZXJidWZmZXItPnNldFN0b3JhZ2UoR0xfTk9ORSwgc2l6ZS53aWR0aCwgc2l6ZS5o
ZWlnaHQpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewpAQCAtMTA3MCw3ICsxMDQw
LDggQEAKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotZ2w6OkVycm9y
IFJlbmRlcmVyOTo6YXBwbHlSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNo
bWVudCAqY29sb3JBdHRhY2htZW50LAorZ2w6OkVycm9yIFJlbmRlcmVyOTo6YXBwbHlSZW5kZXJU
YXJnZXQoR0xJbXBsRmFjdG9yeSAqaW1wbEZhY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICpjb2xvckF0
dGFjaG1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICpkZXB0aFN0ZW5jaWxBdHRhY2htZW50KQogewogICAg
IGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKnJlbmRlckF0dGFjaG1lbnQgPSBjb2xv
ckF0dGFjaG1lbnQ7CkBAIC0xMDgwLDcgKzEwNTEsNyBAQAogICAgIC8vIHRvIGtlZXAgdGhlIEQz
RCBydW50aW1lIGhhcHB5LiAgVGhpcyBzaG91bGQgb25seSBiZSBwb3NzaWJsZSBpZiBkZXB0aCB0
ZXh0dXJpbmcuCiAgICAgaWYgKHJlbmRlckF0dGFjaG1lbnQgPT0gbnVsbHB0cikKICAgICB7Ci0g
ICAgICAgIGVycm9yID0gZ2V0TnVsbENvbG9yYnVmZmVyKGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQs
ICZyZW5kZXJBdHRhY2htZW50KTsKKyAgICAgICAgZXJyb3IgPSBnZXROdWxsQ29sb3JidWZmZXIo
aW1wbEZhY3RvcnksIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQsICZyZW5kZXJBdHRhY2htZW50KTsK
ICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0
dXJuIGVycm9yOwpAQCAtMTE3NCw5ICsxMTQ1LDExIEBACiAgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9OT19FUlJPUik7CiB9CiAKLWdsOjpFcnJvciBSZW5kZXJlcjk6OmFwcGx5UmVuZGVyVGFyZ2V0
KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIpCitnbDo6RXJyb3IgUmVuZGVyZXI5
OjphcHBseVJlbmRlclRhcmdldChHTEltcGxGYWN0b3J5ICppbXBsRmFjdG9yeSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJh
bWVidWZmZXIpCiB7Ci0gICAgcmV0dXJuIGFwcGx5UmVuZGVyVGFyZ2V0KGZyYW1lYnVmZmVyLT5n
ZXRDb2xvcmJ1ZmZlcigwKSwgZnJhbWVidWZmZXItPmdldERlcHRoT3JTdGVuY2lsYnVmZmVyKCkp
OworICAgIHJldHVybiBhcHBseVJlbmRlclRhcmdldChpbXBsRmFjdG9yeSwgZnJhbWVidWZmZXIt
PmdldENvbG9yYnVmZmVyKDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZWJ1
ZmZlci0+Z2V0RGVwdGhPclN0ZW5jaWxidWZmZXIoKSk7CiB9CiAKIGdsOjpFcnJvciBSZW5kZXJl
cjk6OmFwcGx5VmVydGV4QnVmZmVyKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsCkBAIC0xMTk3LDcg
KzExNzAsNyBAQAogfQogCiAvLyBBcHBsaWVzIHRoZSBpbmRpY2VzIGFuZCBlbGVtZW50IGFycmF5
IGJpbmRpbmdzIHRvIHRoZSBEaXJlY3QzRCA5IGRldmljZQotZ2w6OkVycm9yIFJlbmRlcmVyOTo6
YXBwbHlJbmRleEJ1ZmZlcihjb25zdCBnbDo6RGF0YSAmZGF0YSwKK2dsOjpFcnJvciBSZW5kZXJl
cjk6OmFwcGx5SW5kZXhCdWZmZXIoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKQEAgLTEyMDQs
NyArMTE3Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGVk
SW5kZXhEYXRhICppbmRleEluZm8pCiB7Ci0gICAgZ2w6OlZlcnRleEFycmF5ICp2YW8gICAgICAg
ICAgID0gZGF0YS5zdGF0ZS0+Z2V0VmVydGV4QXJyYXkoKTsKKyAgICBnbDo6VmVydGV4QXJyYXkg
KnZhbyAgICAgICAgICAgPSBkYXRhLmdldFN0YXRlKCkuZ2V0VmVydGV4QXJyYXkoKTsKICAgICBn
bDo6QnVmZmVyICplbGVtZW50QXJyYXlCdWZmZXIgPSB2YW8tPmdldEVsZW1lbnRBcnJheUJ1ZmZl
cigpLmdldCgpOwogICAgIGdsOjpFcnJvciBlcnJvciA9IG1JbmRleERhdGFNYW5hZ2VyLT5wcmVw
YXJlSW5kZXhEYXRhKHR5cGUsIGNvdW50LCBlbGVtZW50QXJyYXlCdWZmZXIsIGluZGljZXMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW5kZXhJbmZvLCBmYWxzZSk7CkBAIC0xMjMzLDEzICsxMjA2LDEzIEBACiAgICAgcmV0dXJuIGds
OjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKLWdsOjpFcnJvciBSZW5kZXJlcjk6OmRyYXdBcnJh
eXNJbXBsKGNvbnN0IGdsOjpEYXRhICZkYXRhLAorZ2w6OkVycm9yIFJlbmRlcmVyOTo6ZHJhd0Fy
cmF5c0ltcGwoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgc3RhcnRWZXJ0ZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBpbnN0YW5jZXMpCiB7Ci0gICAgQVNTRVJUKCFkYXRhLnN0YXRlLT5pc1Ry
YW5zZm9ybUZlZWRiYWNrQWN0aXZlVW5wYXVzZWQoKSk7CisgICAgQVNTRVJUKCFkYXRhLmdldFN0
YXRlKCkuaXNUcmFuc2Zvcm1GZWVkYmFja0FjdGl2ZVVucGF1c2VkKCkpOwogCiAgICAgc3RhcnRT
Y2VuZSgpOwogCkBAIC0xMjc4LDcgKzEyNTEsNyBAQAogICAgIH0KIH0KIAotZ2w6OkVycm9yIFJl
bmRlcmVyOTo6ZHJhd0VsZW1lbnRzSW1wbChjb25zdCBnbDo6RGF0YSAmZGF0YSwKK2dsOjpFcnJv
ciBSZW5kZXJlcjk6OmRyYXdFbGVtZW50c0ltcGwoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0
YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHJhbnNsYXRl
ZEluZGV4RGF0YSAmaW5kZXhJbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKQEAgLTEyOTAsNyArMTI2Myw3IEBACiAKICAgICBpbnQgbWluSW5kZXgg
PSBzdGF0aWNfY2FzdDxpbnQ+KGluZGV4SW5mby5pbmRleFJhbmdlLnN0YXJ0KTsKIAotICAgIGds
OjpWZXJ0ZXhBcnJheSAqdmFvICAgICAgICAgICA9IGRhdGEuc3RhdGUtPmdldFZlcnRleEFycmF5
KCk7CisgICAgZ2w6OlZlcnRleEFycmF5ICp2YW8gICAgICAgICAgID0gZGF0YS5nZXRTdGF0ZSgp
LmdldFZlcnRleEFycmF5KCk7CiAgICAgZ2w6OkJ1ZmZlciAqZWxlbWVudEFycmF5QnVmZmVyID0g
dmFvLT5nZXRFbGVtZW50QXJyYXlCdWZmZXIoKS5nZXQoKTsKIAogICAgIGlmIChtb2RlID09IEdM
X1BPSU5UUykKQEAgLTEzMzIsNyArMTMwNSw3IEBACiAKICAgICB1bnNpZ25lZCBpbnQgc3RhcnRJ
bmRleCA9IDA7CiAKLSAgICBpZiAoZ2V0UmVuZGVyZXJFeHRlbnNpb25zKCkuZWxlbWVudEluZGV4
VWludCkKKyAgICBpZiAoZ2V0TmF0aXZlRXh0ZW5zaW9ucygpLmVsZW1lbnRJbmRleFVpbnQpCiAg
ICAgewogICAgICAgICBpZiAoIW1MaW5lTG9vcElCKQogICAgICAgICB7CkBAIC0xNTc2LDcgKzE1
NDksNyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIGVsc2UgaWYgKGdl
dFJlbmRlcmVyRXh0ZW5zaW9ucygpLmVsZW1lbnRJbmRleFVpbnQpCisgICAgZWxzZSBpZiAoZ2V0
TmF0aXZlRXh0ZW5zaW9ucygpLmVsZW1lbnRJbmRleFVpbnQpCiAgICAgewogICAgICAgICBjb25z
dCB1bnNpZ25lZCBpbnQgc3BhY2VOZWVkZWQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGNv
dW50KSAqIHNpemVvZih1bnNpZ25lZCBpbnQpOwogCkBAIC0xNjE1LDI1ICsxNTg4LDE5IEBACiAg
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKLWdsOjpFcnJvciBSZW5kZXJl
cjk6OmFwcGx5U2hhZGVyc0ltcGwoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIEdMZW51bSAvKmRyYXdN
b2RlKi8pCitnbDo6RXJyb3IgUmVuZGVyZXI5OjphcHBseVNoYWRlcnMoY29uc3QgZ2w6OkNvbnRl
eHRTdGF0ZSAmZGF0YSwgR0xlbnVtIGRyYXdNb2RlKQogewotICAgIFByb2dyYW1EM0QgKnByb2dy
YW1EM0QgID0gR2V0SW1wbEFzPFByb2dyYW1EM0Q+KGRhdGEuc3RhdGUtPmdldFByb2dyYW0oKSk7
CisgICAgUHJvZ3JhbUQzRCAqcHJvZ3JhbUQzRCA9IEdldEltcGxBczxQcm9ncmFtRDNEPihkYXRh
LmdldFN0YXRlKCkuZ2V0UHJvZ3JhbSgpKTsKKyAgICBwcm9ncmFtRDNELT51cGRhdGVDYWNoZWRJ
bnB1dExheW91dChkYXRhLmdldFN0YXRlKCkpOworCiAgICAgY29uc3QgYXV0byAmaW5wdXRMYXlv
dXQgPSBwcm9ncmFtRDNELT5nZXRDYWNoZWRJbnB1dExheW91dCgpOwogCiAgICAgU2hhZGVyRXhl
Y3V0YWJsZUQzRCAqdmVydGV4RXhlID0gTlVMTDsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBwcm9n
cmFtRDNELT5nZXRWZXJ0ZXhFeGVjdXRhYmxlRm9ySW5wdXRMYXlvdXQoaW5wdXRMYXlvdXQsICZ2
ZXJ0ZXhFeGUsIG51bGxwdHIpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAg
ICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShwcm9ncmFtRDNELT5nZXRW
ZXJ0ZXhFeGVjdXRhYmxlRm9ySW5wdXRMYXlvdXQoaW5wdXRMYXlvdXQsICZ2ZXJ0ZXhFeGUsIG51
bGxwdHIpKTsKIAotICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZHJhd0ZyYW1lYnVmZmVyID0g
ZGF0YS5zdGF0ZS0+Z2V0RHJhd0ZyYW1lYnVmZmVyKCk7CisgICAgY29uc3QgZ2w6OkZyYW1lYnVm
ZmVyICpkcmF3RnJhbWVidWZmZXIgPSBkYXRhLmdldFN0YXRlKCkuZ2V0RHJhd0ZyYW1lYnVmZmVy
KCk7CiAgICAgU2hhZGVyRXhlY3V0YWJsZUQzRCAqcGl4ZWxFeGUgPSBOVUxMOwotICAgIGVycm9y
ID0gcHJvZ3JhbUQzRC0+Z2V0UGl4ZWxFeGVjdXRhYmxlRm9yRnJhbWVidWZmZXIoZHJhd0ZyYW1l
YnVmZmVyLCAmcGl4ZWxFeGUpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAg
ICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShwcm9ncmFtRDNELT5nZXRQ
aXhlbEV4ZWN1dGFibGVGb3JGcmFtZWJ1ZmZlcihkcmF3RnJhbWVidWZmZXIsICZwaXhlbEV4ZSkp
OwogCiAgICAgSURpcmVjdDNEVmVydGV4U2hhZGVyOSAqdmVydGV4U2hhZGVyID0gKHZlcnRleEV4
ZSA/IEdldEFzPFNoYWRlckV4ZWN1dGFibGU5Pih2ZXJ0ZXhFeGUpLT5nZXRWZXJ0ZXhTaGFkZXIo
KSA6IG51bGxwdHIpOwogICAgIElEaXJlY3QzRFBpeGVsU2hhZGVyOSAqcGl4ZWxTaGFkZXIgPSAo
cGl4ZWxFeGUgPyBHZXRBczxTaGFkZXJFeGVjdXRhYmxlOT4ocGl4ZWxFeGUpLT5nZXRQaXhlbFNo
YWRlcigpIDogbnVsbHB0cik7CkBAIC0xNjYzLDcgKzE2MzAsNyBAQAogICAgICAgICBtQXBwbGll
ZFByb2dyYW1TZXJpYWwgPSBwcm9ncmFtU2VyaWFsOwogICAgIH0KIAotICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBwcm9ncmFtRDNELT5hcHBseVVuaWZvcm1z
KGRyYXdNb2RlKTsKIH0KIAogZ2w6OkVycm9yIFJlbmRlcmVyOTo6YXBwbHlVbmlmb3Jtcyhjb25z
dCBQcm9ncmFtRDNEICZwcm9ncmFtRDNELApAQCAtMTY4Miw2ICsxNjQ5LDcgQEAKICAgICAgICAg
ewogICAgICAgICAgICAgY2FzZSBHTF9TQU1QTEVSXzJEOgogICAgICAgICAgICAgY2FzZSBHTF9T
QU1QTEVSX0NVQkU6CisgICAgICAgICAgICBjYXNlIEdMX1NBTVBMRVJfRVhURVJOQUxfT0VTOgog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBHTF9CT09MOgogICAgICAg
ICAgICAgY2FzZSBHTF9CT09MX1ZFQzI6CkBAIC0xODIzLDE3ICsxNzkxLDI2IEBACiAgICAgICAg
IFJlbmRlclRhcmdldDkgKmNvbG9yUmVuZGVyVGFyZ2V0OSA9IEdldEFzPFJlbmRlclRhcmdldDk+
KGNvbG9yUmVuZGVyVGFyZ2V0KTsKICAgICAgICAgQVNTRVJUKGNvbG9yUmVuZGVyVGFyZ2V0OSk7
CiAKLSAgICAgICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZmb3JtYXRJbmZvID0gZ2w6Okdl
dEludGVybmFsRm9ybWF0SW5mbyhjb2xvckJ1ZmZlci0+Z2V0SW50ZXJuYWxGb3JtYXQoKSk7Cisg
ICAgICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9ICpjb2xvckJ1ZmZl
ci0+Z2V0Rm9ybWF0KCkuaW5mbzsKICAgICAgICAgY29uc3QgZDNkOTo6RDNERm9ybWF0ICZkM2RG
b3JtYXRJbmZvID0gZDNkOTo6R2V0RDNERm9ybWF0SW5mbyhjb2xvclJlbmRlclRhcmdldDktPmdl
dEQzREZvcm1hdCgpKTsKIAotICAgICAgICBjb2xvciA9IEQzRENPTE9SX0FSR0IoZ2w6OnVub3Jt
PDg+KChmb3JtYXRJbmZvLmFscGhhQml0cyA9PSAwICYmIGQzZEZvcm1hdEluZm8uYWxwaGFCaXRz
ID4gMCkgPyAxLjBmIDogY2xlYXJQYXJhbXMuY29sb3JGQ2xlYXJWYWx1ZS5hbHBoYSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6dW5vcm08OD4oKGZvcm1hdEluZm8ucmVkQml0
cyAgID09IDAgJiYgZDNkRm9ybWF0SW5mby5yZWRCaXRzICAgPiAwKSA/IDAuMGYgOiBjbGVhclBh
cmFtcy5jb2xvckZDbGVhclZhbHVlLnJlZCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnbDo6dW5vcm08OD4oKGZvcm1hdEluZm8uZ3JlZW5CaXRzID09IDAgJiYgZDNkRm9ybWF0SW5m
by5ncmVlbkJpdHMgPiAwKSA/IDAuMGYgOiBjbGVhclBhcmFtcy5jb2xvckZDbGVhclZhbHVlLmdy
ZWVuKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjp1bm9ybTw4PigoZm9ybWF0
SW5mby5ibHVlQml0cyAgPT0gMCAmJiBkM2RGb3JtYXRJbmZvLmJsdWVCaXRzICA+IDApID8gMC4w
ZiA6IGNsZWFyUGFyYW1zLmNvbG9yRkNsZWFyVmFsdWUuYmx1ZSkpOworICAgICAgICBjb2xvciA9
CisgICAgICAgICAgICBEM0RDT0xPUl9BUkdCKGdsOjp1bm9ybTw4PigoZm9ybWF0SW5mby5hbHBo
YUJpdHMgPT0gMCAmJiBkM2RGb3JtYXRJbmZvLmFscGhhQml0cyA+IDApCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAxLjBmCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiBjbGVhclBhcmFtcy5jb2xvckZDbGVhclZhbHVlLmFs
cGhhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OnVub3JtPDg+KChmb3JtYXRJbmZv
LnJlZEJpdHMgPT0gMCAmJiBkM2RGb3JtYXRJbmZvLnJlZEJpdHMgPiAwKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gMC4wZgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogY2xlYXJQYXJhbXMuY29sb3JGQ2xlYXJWYWx1ZS5y
ZWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6dW5vcm08OD4oKGZvcm1hdEluZm8u
Z3JlZW5CaXRzID09IDAgJiYgZDNkRm9ybWF0SW5mby5ncmVlbkJpdHMgPiAwKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gMC4wZgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2xlYXJQYXJhbXMuY29sb3JGQ2xlYXJWYWx1
ZS5ncmVlbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjp1bm9ybTw4PigoZm9ybWF0
SW5mby5ibHVlQml0cyA9PSAwICYmIGQzZEZvcm1hdEluZm8uYmx1ZUJpdHMgPiAwKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gMC4wZgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2xlYXJQYXJhbXMuY29sb3JGQ2xlYXJW
YWx1ZS5ibHVlKSk7CiAKLSAgICAgICAgaWYgKChmb3JtYXRJbmZvLnJlZEJpdHMgICA+IDAgJiYg
IWNsZWFyUGFyYW1zLmNvbG9yTWFza1JlZCkgfHwKKyAgICAgICAgaWYgKChmb3JtYXRJbmZvLnJl
ZEJpdHMgPiAwICYmICFjbGVhclBhcmFtcy5jb2xvck1hc2tSZWQpIHx8CiAgICAgICAgICAgICAo
Zm9ybWF0SW5mby5ncmVlbkJpdHMgPiAwICYmICFjbGVhclBhcmFtcy5jb2xvck1hc2tHcmVlbikg
fHwKLSAgICAgICAgICAgIChmb3JtYXRJbmZvLmJsdWVCaXRzICA+IDAgJiYgIWNsZWFyUGFyYW1z
LmNvbG9yTWFza0JsdWUpIHx8CisgICAgICAgICAgICAoZm9ybWF0SW5mby5ibHVlQml0cyA+IDAg
JiYgIWNsZWFyUGFyYW1zLmNvbG9yTWFza0JsdWUpIHx8CiAgICAgICAgICAgICAoZm9ybWF0SW5m
by5hbHBoYUJpdHMgPiAwICYmICFjbGVhclBhcmFtcy5jb2xvck1hc2tBbHBoYSkpCiAgICAgICAg
IHsKICAgICAgICAgICAgIG5lZWRNYXNrZWRDb2xvckNsZWFyID0gdHJ1ZTsKQEAgLTIwNzAsMTkg
KzIwNDcsNyBAQAogYm9vbCBSZW5kZXJlcjk6OnRlc3REZXZpY2VMb3N0KCkKIHsKICAgICBIUkVT
VUxUIHN0YXR1cyA9IGdldERldmljZVN0YXR1c0NvZGUoKTsKLSAgICBib29sIGlzTG9zdCA9IEZB
SUxFRChzdGF0dXMpOwotCi0gICAgaWYgKGlzTG9zdCkKLSAgICB7Ci0gICAgICAgIC8vIGVuc3Vy
ZSB3ZSBub3RlIHRoZSBkZXZpY2UgbG9zcyAtLQotICAgICAgICAvLyB3ZSdsbCBwcm9iYWJseSBn
ZXQgdGhpcyBkb25lIGFnYWluIGJ5IG5vdGlmeURldmljZUxvc3QKLSAgICAgICAgLy8gYnV0IGJl
c3QgdG8gcmVtZW1iZXIgaXQhCi0gICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBkb24ndCB3YW50IHRv
IGNsZWFyIHRoZSBkZXZpY2UgbG9zcyBzdGF0dXMgaGVyZQotICAgICAgICAvLyAtLSB0aGlzIG5l
ZWRzIHRvIGJlIGRvbmUgYnkgcmVzZXREZXZpY2UKLSAgICAgICAgbURldmljZUxvc3QgPSB0cnVl
OwotICAgIH0KLQotICAgIHJldHVybiBpc0xvc3Q7CisgICAgcmV0dXJuIEZBSUxFRChzdGF0dXMp
OwogfQogCiBIUkVTVUxUIFJlbmRlcmVyOTo6Z2V0RGV2aWNlU3RhdHVzQ29kZSgpCkBAIC0yMTg1
LDggKzIxNTAsNiBAQAogICAgICAgICBpbml0aWFsaXplRGV2aWNlKCk7CiAgICAgfQogCi0gICAg
bURldmljZUxvc3QgPSBmYWxzZTsKLQogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yMzY0LDEx
ICsyMzI3LDM1IEBACiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CiB9CiAKK2dsOjpFcnJvciBSZW5kZXJlcjk6OmNvcHlUZXh0dXJlKGNvbnN0IGdsOjpUZXh0dXJl
ICpzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzb3VyY2VM
ZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5n
bGUgJnNvdXJjZVJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
ZGVzdEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpP
ZmZzZXQgJmRlc3RPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0
dXJlU3RvcmFnZSAqc3RvcmFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGRlc3RMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5w
YWNrRmxpcFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1By
ZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVu
cGFja1VubXVsdGlwbHlBbHBoYSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBSZW5kZXJl
cjk6OmNvcHlDb21wcmVzc2VkVGV4dHVyZShjb25zdCBnbDo6VGV4dHVyZSAqc291cmNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNvdXJjZUxldmVs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVTdG9y
YWdlICpzdG9yYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGRlc3RMZXZlbCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGds
OjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKIGdsOjpFcnJvciBSZW5kZXJlcjk6
OmNyZWF0ZVJlbmRlclRhcmdldChpbnQgd2lkdGgsIGludCBoZWlnaHQsIEdMZW51bSBmb3JtYXQs
IEdMc2l6ZWkgc2FtcGxlcywgUmVuZGVyVGFyZ2V0RDNEICoqb3V0UlQpCiB7CiAgICAgY29uc3Qg
ZDNkOTo6VGV4dHVyZUZvcm1hdCAmZDNkOUZvcm1hdEluZm8gPSBkM2Q5OjpHZXRUZXh0dXJlRm9y
bWF0SW5mbyhmb3JtYXQpOwogCi0gICAgY29uc3QgZ2w6OlRleHR1cmVDYXBzICZ0ZXh0dXJlQ2Fw
cyA9IGdldFJlbmRlcmVyVGV4dHVyZUNhcHMoKS5nZXQoZm9ybWF0KTsKKyAgICBjb25zdCBnbDo6
VGV4dHVyZUNhcHMgJnRleHR1cmVDYXBzID0gZ2V0TmF0aXZlVGV4dHVyZUNhcHMoKS5nZXQoZm9y
bWF0KTsKICAgICBHTHVpbnQgc3VwcG9ydGVkU2FtcGxlcyA9IHRleHR1cmVDYXBzLmdldE5lYXJl
c3RTYW1wbGVzKHNhbXBsZXMpOwogCiAgICAgSURpcmVjdDNEVGV4dHVyZTkgKnRleHR1cmUgICAg
ICA9IG51bGxwdHI7CkBAIC0yNDU3LDIxICsyNDQ0LDYgQEAKICAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX05PX0VSUk9SKTsKIH0KIAotRnJhbWVidWZmZXJJbXBsICpSZW5kZXJlcjk6OmNyZWF0ZUZy
YW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGF0YSAmZGF0YSkKLXsKLSAgICByZXR1
cm4gbmV3IEZyYW1lYnVmZmVyOShkYXRhLCB0aGlzKTsKLX0KLQotU2hhZGVySW1wbCAqUmVuZGVy
ZXI5OjpjcmVhdGVTaGFkZXIoY29uc3QgZ2w6OlNoYWRlcjo6RGF0YSAmZGF0YSkKLXsKLSAgICBy
ZXR1cm4gbmV3IFNoYWRlckQzRChkYXRhKTsKLX0KLQotUHJvZ3JhbUltcGwgKlJlbmRlcmVyOTo6
Y3JlYXRlUHJvZ3JhbShjb25zdCBnbDo6UHJvZ3JhbTo6RGF0YSAmZGF0YSkKLXsKLSAgICByZXR1
cm4gbmV3IFByb2dyYW1EM0QoZGF0YSwgdGhpcyk7Ci19Ci0KIGdsOjpFcnJvciBSZW5kZXJlcjk6
OmxvYWRFeGVjdXRhYmxlKGNvbnN0IHZvaWQgKmZ1bmN0aW9uLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNoYWRlclR5cGUgdHlwZSwKQEAgLTI2NzcsOCArMjY0OSw4IEBACiAgICAg
cmV0dXJuIEltYWdlOTo6Z2VuZXJhdGVNaXBtYXAoZHN0OSwgc3JjOSk7CiB9CiAKLWdsOjpFcnJv
ciBSZW5kZXJlcjk6OmdlbmVyYXRlTWlwbWFwc1VzaW5nRDNEKFRleHR1cmVTdG9yYWdlICpzdG9y
YWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OlRleHR1cmVTdGF0ZSAmdGV4dHVyZVN0YXRlKQorZ2w6OkVycm9yIFJlbmRlcmVyOTo6Z2Vu
ZXJhdGVNaXBtYXBVc2luZ0QzRChUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAm
dGV4dHVyZVN0YXRlKQogewogICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9OT19FUlJPUik7CkBAIC0yNjkwLDExICsyNjYyLDIwIEBACiAgICAgcmV0dXJuIG5ldyBU
ZXh0dXJlU3RvcmFnZTlfMkQodGhpcywgc3dhcENoYWluOSk7CiB9CiAKLVRleHR1cmVTdG9yYWdl
ICpSZW5kZXJlcjk6OmNyZWF0ZVRleHR1cmVTdG9yYWdlRUdMSW1hZ2UoRUdMSW1hZ2VEM0QgKmVn
bEltYWdlKQorVGV4dHVyZVN0b3JhZ2UgKlJlbmRlcmVyOTo6Y3JlYXRlVGV4dHVyZVN0b3JhZ2VF
R0xJbWFnZShFR0xJbWFnZUQzRCAqZWdsSW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlclRhcmdldEQzRCAqcmVuZGVyVGFy
Z2V0RDNEKQogewotICAgIHJldHVybiBuZXcgVGV4dHVyZVN0b3JhZ2U5X0VHTEltYWdlKHRoaXMs
IGVnbEltYWdlKTsKKyAgICByZXR1cm4gbmV3IFRleHR1cmVTdG9yYWdlOV9FR0xJbWFnZSh0aGlz
LCBlZ2xJbWFnZSwgR2V0QXM8UmVuZGVyVGFyZ2V0OT4ocmVuZGVyVGFyZ2V0RDNEKSk7CiB9CiAK
K1RleHR1cmVTdG9yYWdlICpSZW5kZXJlcjk6OmNyZWF0ZVRleHR1cmVTdG9yYWdlRXh0ZXJuYWwo
CisgICAgZWdsOjpTdHJlYW0gKnN0cmVhbSwKKyAgICBjb25zdCBlZ2w6OlN0cmVhbTo6R0xUZXh0
dXJlRGVzY3JpcHRpb24gJmRlc2MpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVy
biBudWxscHRyOworfQorCiBUZXh0dXJlU3RvcmFnZSAqUmVuZGVyZXI5OjpjcmVhdGVUZXh0dXJl
U3RvcmFnZTJEKEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgYm9vbCByZW5kZXJUYXJnZXQsIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBpbnQgbGV2ZWxzLCBib29sIGhpbnRMZXZlbFplcm9P
bmx5KQogewogICAgIHJldHVybiBuZXcgVGV4dHVyZVN0b3JhZ2U5XzJEKHRoaXMsIGludGVybmFs
Zm9ybWF0LCByZW5kZXJUYXJnZXQsIHdpZHRoLCBoZWlnaHQsIGxldmVscyk7CkBAIC0yNzIxLDI0
ICsyNzAyLDYgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotVGV4dHVyZUltcGwgKlJlbmRlcmVy
OTo6Y3JlYXRlVGV4dHVyZShHTGVudW0gdGFyZ2V0KQotewotICAgIHN3aXRjaCh0YXJnZXQpCi0g
ICAgewotICAgICAgY2FzZSBHTF9URVhUVVJFXzJEOiAgICAgICByZXR1cm4gbmV3IFRleHR1cmVE
M0RfMkQodGhpcyk7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVA6IHJldHVybiBuZXcg
VGV4dHVyZUQzRF9DdWJlKHRoaXMpOwotICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOwotICAgIH0KLQotICAgIHJldHVybiBOVUxMOwotfQotCi1SZW5kZXJidWZm
ZXJJbXBsICpSZW5kZXJlcjk6OmNyZWF0ZVJlbmRlcmJ1ZmZlcigpCi17Ci0gICAgUmVuZGVyYnVm
ZmVyRDNEICpyZW5kZXJidWZmZXIgPSBuZXcgUmVuZGVyYnVmZmVyRDNEKHRoaXMpOwotICAgIHJl
dHVybiByZW5kZXJidWZmZXI7Ci19Ci0KIGJvb2wgUmVuZGVyZXI5OjpnZXRMVUlEKExVSUQgKmFk
YXB0ZXJMdWlkKSBjb25zdAogewogICAgIGFkYXB0ZXJMdWlkLT5IaWdoUGFydCA9IDA7CkBAIC0y
ODA5LDExICsyNzcyLDYgQEAKICAgICByZXR1cm4gZDNkOTo6R2VuZXJhdGVXb3JrYXJvdW5kcygp
OwogfQogCi12b2lkIFJlbmRlcmVyOTo6Y3JlYXRlQW5ub3RhdG9yKCkKLXsKLSAgICBtQW5ub3Rh
dG9yID0gbmV3IERlYnVnQW5ub3RhdG9yOSgpOwotfQotCiBnbDo6RXJyb3IgUmVuZGVyZXI5Ojpj
bGVhclRleHR1cmVzKGdsOjpTYW1wbGVyVHlwZSBzYW1wbGVyVHlwZSwgc2l6ZV90IHJhbmdlU3Rh
cnQsIHNpemVfdCByYW5nZUVuZCkKIHsKICAgICAvLyBUT0RPKGptYWRpbGwpOiBmYXN0ZXIgd2F5
PwpAQCAtMjg1Niw0ICsyODE0LDEwMyBAQAogewogfQogCitnbDo6RXJyb3IgUmVuZGVyZXI5Ojpn
ZW5lcmljRHJhd0VsZW1lbnRzKENvbnRleHQ5ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpJbmRleFJhbmdlICZpbmRl
eFJhbmdlKQoreworICAgIGNvbnN0IGF1dG8gJmRhdGEgICAgID0gY29udGV4dC0+Z2V0Q29udGV4
dFN0YXRlKCk7CisgICAgZ2w6OlByb2dyYW0gKnByb2dyYW0gPSBjb250ZXh0LT5nZXRHTFN0YXRl
KCkuZ2V0UHJvZ3JhbSgpOworICAgIEFTU0VSVChwcm9ncmFtICE9IG51bGxwdHIpOworICAgIFBy
b2dyYW1EM0QgKnByb2dyYW1EM0QgPSBHZXRJbXBsQXM8UHJvZ3JhbUQzRD4ocHJvZ3JhbSk7Cisg
ICAgYm9vbCB1c2VzUG9pbnRTaXplICAgICA9IHByb2dyYW1EM0QtPnVzZXNQb2ludFNpemUoKTsK
KworICAgIHByb2dyYW1EM0QtPnVwZGF0ZVNhbXBsZXJNYXBwaW5nKCk7CisKKyAgICBpZiAoIWFw
cGx5UHJpbWl0aXZlVHlwZShtb2RlLCBjb3VudCwgdXNlc1BvaW50U2l6ZSkpCisgICAgeworICAg
ICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKKyAgICB9CisKKyAgICBBTkdMRV9UUlkodXBkYXRl
U3RhdGUoY29udGV4dCwgbW9kZSkpOworCisgICAgVHJhbnNsYXRlZEluZGV4RGF0YSBpbmRleElu
Zm87CisgICAgaW5kZXhJbmZvLmluZGV4UmFuZ2UgPSBpbmRleFJhbmdlOworCisgICAgQU5HTEVf
VFJZKGFwcGx5SW5kZXhCdWZmZXIoZGF0YSwgaW5kaWNlcywgY291bnQsIG1vZGUsIHR5cGUsICZp
bmRleEluZm8pKTsKKworICAgIGFwcGx5VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzKGRhdGEuZ2V0
U3RhdGUoKSk7CisgICAgLy8gVHJhbnNmb3JtIGZlZWRiYWNrIGlzIG5vdCBhbGxvd2VkIGZvciBE
cmF3RWxlbWVudHMsIHRoaXMgZXJyb3Igc2hvdWxkIGhhdmUgYmVlbiBjYXVnaHQgYXQgdGhlCisg
ICAgLy8gQVBJIHZhbGlkYXRpb24KKyAgICAvLyBsYXllci4KKyAgICBBU1NFUlQoIWRhdGEuZ2V0
U3RhdGUoKS5pc1RyYW5zZm9ybUZlZWRiYWNrQWN0aXZlVW5wYXVzZWQoKSk7CisKKyAgICBzaXpl
X3QgdmVydGV4Q291bnQgPSBpbmRleEluZm8uaW5kZXhSYW5nZS52ZXJ0ZXhDb3VudCgpOworICAg
IEFOR0xFX1RSWShhcHBseVZlcnRleEJ1ZmZlcihkYXRhLmdldFN0YXRlKCksIG1vZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMc2l6ZWk+KGluZGV4SW5m
by5pbmRleFJhbmdlLnN0YXJ0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8R0xzaXplaT4odmVydGV4Q291bnQpLCBpbnN0YW5jZXMsICZpbmRleEluZm8pKTsK
KyAgICBBTkdMRV9UUlkoYXBwbHlUZXh0dXJlcyhjb250ZXh0LCBkYXRhKSk7CisgICAgQU5HTEVf
VFJZKGFwcGx5U2hhZGVycyhkYXRhLCBtb2RlKSk7CisgICAgQU5HTEVfVFJZKHByb2dyYW1EM0Qt
PmFwcGx5VW5pZm9ybUJ1ZmZlcnMoZGF0YSkpOworCisgICAgaWYgKCFza2lwRHJhdyhkYXRhLCBt
b2RlKSkKKyAgICB7CisgICAgICAgIEFOR0xFX1RSWShkcmF3RWxlbWVudHNJbXBsKGRhdGEsIGlu
ZGV4SW5mbywgbW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMsIGluc3RhbmNlcykpOworICAgIH0K
KworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQorCitnbDo6RXJyb3IgUmVuZGVyZXI5Ojpn
ZW5lcmljRHJhd0FycmF5cyhDb250ZXh0OSAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgZmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMpCit7CisgICAgY29uc3QgYXV0byAmZGF0YSAgICAg
PSBjb250ZXh0LT5nZXRDb250ZXh0U3RhdGUoKTsKKyAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbSA9
IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRQcm9ncmFtKCk7CisgICAgQVNTRVJUKHByb2dyYW0g
IT0gbnVsbHB0cik7CisgICAgUHJvZ3JhbUQzRCAqcHJvZ3JhbUQzRCA9IEdldEltcGxBczxQcm9n
cmFtRDNEPihwcm9ncmFtKTsKKyAgICBib29sIHVzZXNQb2ludFNpemUgICAgID0gcHJvZ3JhbUQz
RC0+dXNlc1BvaW50U2l6ZSgpOworCisgICAgcHJvZ3JhbUQzRC0+dXBkYXRlU2FtcGxlck1hcHBp
bmcoKTsKKworICAgIGlmICghYXBwbHlQcmltaXRpdmVUeXBlKG1vZGUsIGNvdW50LCB1c2VzUG9p
bnRTaXplKSkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworICAgIH0KKwor
ICAgIEFOR0xFX1RSWSh1cGRhdGVTdGF0ZShjb250ZXh0LCBtb2RlKSk7CisgICAgQU5HTEVfVFJZ
KGFwcGx5VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzKGRhdGEuZ2V0U3RhdGUoKSkpOworICAgIEFO
R0xFX1RSWShhcHBseVZlcnRleEJ1ZmZlcihkYXRhLmdldFN0YXRlKCksIG1vZGUsIGZpcnN0LCBj
b3VudCwgaW5zdGFuY2VzLCBudWxscHRyKSk7CisgICAgQU5HTEVfVFJZKGFwcGx5VGV4dHVyZXMo
Y29udGV4dCwgZGF0YSkpOworICAgIEFOR0xFX1RSWShhcHBseVNoYWRlcnMoZGF0YSwgbW9kZSkp
OworICAgIEFOR0xFX1RSWShwcm9ncmFtRDNELT5hcHBseVVuaWZvcm1CdWZmZXJzKGRhdGEpKTsK
KworICAgIGlmICghc2tpcERyYXcoZGF0YSwgbW9kZSkpCisgICAgeworICAgICAgICBBTkdMRV9U
UlkoZHJhd0FycmF5c0ltcGwoZGF0YSwgbW9kZSwgZmlyc3QsIGNvdW50LCBpbnN0YW5jZXMpKTsK
KworICAgICAgICBpZiAoZGF0YS5nZXRTdGF0ZSgpLmlzVHJhbnNmb3JtRmVlZGJhY2tBY3RpdmVV
bnBhdXNlZCgpKQorICAgICAgICB7CisgICAgICAgICAgICBBTkdMRV9UUlkobWFya1RyYW5zZm9y
bUZlZWRiYWNrVXNhZ2UoZGF0YSkpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGds
OjpOb0Vycm9yKCk7Cit9CisKK0ZyYW1lYnVmZmVySW1wbCAqUmVuZGVyZXI5OjpjcmVhdGVEZWZh
dWx0RnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJnN0YXRlKQoreworICAg
IHJldHVybiBuZXcgRnJhbWVidWZmZXI5KHN0YXRlLCB0aGlzKTsKK30KKworZ2w6OlZlcnNpb24g
UmVuZGVyZXI5OjpnZXRNYXhTdXBwb3J0ZWRFU1ZlcnNpb24oKSBjb25zdAoreworICAgIHJldHVy
biBnbDo6VmVyc2lvbigyLCAwKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvUmVuZGVy
ZXI5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2Q5L1JlbmRlcmVyOS5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvUmVuZGVy
ZXI5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKIG5hbWVzcGFjZSByeAogewog
Y2xhc3MgQmxpdDk7CitjbGFzcyBDb250ZXh0OTsKIGNsYXNzIEluZGV4RGF0YU1hbmFnZXI7CiBj
bGFzcyBQcm9ncmFtRDNEOwogY2xhc3MgU3RyZWFtaW5nSW5kZXhCdWZmZXJJbnRlcmZhY2U7CkBA
IC02OCwyNCArNjksMjkgQEAKICAgICB2aXJ0dWFsIH5SZW5kZXJlcjkoKTsKIAogICAgIGVnbDo6
RXJyb3IgaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCByZXNldERldmlj
ZSgpOworICAgIGJvb2wgcmVzZXREZXZpY2UoKSBvdmVycmlkZTsKIAotICAgIGVnbDo6Q29uZmln
U2V0IGdlbmVyYXRlQ29uZmlncygpIGNvbnN0IG92ZXJyaWRlOworICAgIGVnbDo6Q29uZmlnU2V0
IGdlbmVyYXRlQ29uZmlncygpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2VuZXJhdGVEaXNwbGF5RXh0
ZW5zaW9ucyhlZ2w6OkRpc3BsYXlFeHRlbnNpb25zICpvdXRFeHRlbnNpb25zKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIHZvaWQgc3RhcnRTY2VuZSgpOwogICAgIHZvaWQgZW5kU2NlbmUoKTsKIAot
ICAgIGdsOjpFcnJvciBmbHVzaCgpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBmaW5pc2goKSBv
dmVycmlkZTsKKyAgICBnbDo6RXJyb3IgZmx1c2goKTsKKyAgICBnbDo6RXJyb3IgZmluaXNoKCk7
CiAKLSAgICBTd2FwQ2hhaW5EM0QgKmNyZWF0ZVN3YXBDaGFpbihOYXRpdmVXaW5kb3cgbmF0aXZl
V2luZG93LAorICAgIGJvb2wgaXNWYWxpZE5hdGl2ZVdpbmRvdyhFR0xOYXRpdmVXaW5kb3dUeXBl
IHdpbmRvdykgY29uc3Qgb3ZlcnJpZGU7CisgICAgTmF0aXZlV2luZG93RDNEICpjcmVhdGVOYXRp
dmVXaW5kb3coRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAm
YXR0cmlicykgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBTd2FwQ2hhaW5EM0QgKmNyZWF0ZVN3YXBD
aGFpbihOYXRpdmVXaW5kb3dEM0QgKm5hdGl2ZVdpbmRvdywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBIQU5ETEUgc2hhcmVIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGJhY2tCdWZmZXJGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGRlcHRoQnVmZmVyRm9ybWF0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVHTGludCBvcmllbnRhdGlvbikgb3ZlcnJpZGU7CiAKLSAgICBD
b21waWxlckltcGwgKmNyZWF0ZUNvbXBpbGVyKCkgb3ZlcnJpZGU7CisgICAgQ29udGV4dEltcGwg
KmNyZWF0ZUNvbnRleHQoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmc3RhdGUpIG92ZXJyaWRlOwog
CiAgICAgZ2w6OkVycm9yIGFsbG9jYXRlRXZlbnRRdWVyeShJRGlyZWN0M0RRdWVyeTkgKipvdXRR
dWVyeSk7CiAgICAgdm9pZCBmcmVlRXZlbnRRdWVyeShJRGlyZWN0M0RRdWVyeTkqIHF1ZXJ5KTsK
QEAgLTk1LDE5ICsxMDEsMjAgQEAKICAgICBnbDo6RXJyb3IgY3JlYXRlUGl4ZWxTaGFkZXIoY29u
c3QgRFdPUkQgKmZ1bmN0aW9uLCBzaXplX3QgbGVuZ3RoLCBJRGlyZWN0M0RQaXhlbFNoYWRlcjkg
KipvdXRTaGFkZXIpOwogICAgIEhSRVNVTFQgY3JlYXRlVmVydGV4QnVmZmVyKFVJTlQgTGVuZ3Ro
LCBEV09SRCBVc2FnZSwgSURpcmVjdDNEVmVydGV4QnVmZmVyOSAqKnBwVmVydGV4QnVmZmVyKTsK
ICAgICBIUkVTVUxUIGNyZWF0ZUluZGV4QnVmZmVyKFVJTlQgTGVuZ3RoLCBEV09SRCBVc2FnZSwg
RDNERk9STUFUIEZvcm1hdCwgSURpcmVjdDNESW5kZXhCdWZmZXI5ICoqcHBJbmRleEJ1ZmZlcik7
Ci0gICAgdmlydHVhbCBnbDo6RXJyb3IgZ2VuZXJhdGVTd2l6emxlKGdsOjpUZXh0dXJlICp0ZXh0
dXJlKTsKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBzZXRTYW1wbGVyU3RhdGUoZ2w6OlNhbXBsZXJU
eXBlIHR5cGUsIGludCBpbmRleCwgZ2w6OlRleHR1cmUgKnRleHR1cmUsIGNvbnN0IGdsOjpTYW1w
bGVyU3RhdGUgJnNhbXBsZXIpOwotICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldFRleHR1cmUoZ2w6
OlNhbXBsZXJUeXBlIHR5cGUsIGludCBpbmRleCwgZ2w6OlRleHR1cmUgKnRleHR1cmUpOworICAg
IGdsOjpFcnJvciBzZXRTYW1wbGVyU3RhdGUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJnNhbXBsZXIpIG92ZXJyaWRlOworICAgIGdsOjpF
cnJvciBzZXRUZXh0dXJlKGdsOjpTYW1wbGVyVHlwZSB0eXBlLCBpbnQgaW5kZXgsIGdsOjpUZXh0
dXJlICp0ZXh0dXJlKSBvdmVycmlkZTsKIAotICAgIGdsOjpFcnJvciBzZXRVbmlmb3JtQnVmZmVy
cyhjb25zdCBnbDo6RGF0YSAmZGF0YSwKKyAgICBnbDo6RXJyb3Igc2V0VW5pZm9ybUJ1ZmZlcnMo
Y29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8R0xpbnQ+ICZ2ZXJ0ZXhVbmlmb3JtQnVmZmVycywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8R0xpbnQ+ICZm
cmFnbWVudFVuaWZvcm1CdWZmZXJzKSBvdmVycmlkZTsKIAotICAgIGdsOjpFcnJvciB1cGRhdGVT
dGF0ZShjb25zdCBnbDo6RGF0YSAmZGF0YSwgR0xlbnVtIGRyYXdNb2RlKSBvdmVycmlkZTsKKyAg
ICBnbDo6RXJyb3IgdXBkYXRlU3RhdGUoQ29udGV4dDkgKmNvbnRleHQsIEdMZW51bSBkcmF3TW9k
ZSk7CiAKICAgICB2b2lkIHNldFNjaXNzb3JSZWN0YW5nbGUoY29uc3QgZ2w6OlJlY3RhbmdsZSAm
c2Npc3NvciwgYm9vbCBlbmFibGVkKTsKLSAgICB2b2lkIHNldFZpZXdwb3J0KGNvbnN0IGdsOjpD
YXBzICpjYXBzLAotICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmdmll
d3BvcnQsCisgICAgdm9pZCBzZXRWaWV3cG9ydChjb25zdCBnbDo6UmVjdGFuZ2xlICZ2aWV3cG9y
dCwKICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHpOZWFyLAogICAgICAgICAgICAgICAgICAg
ICAgZmxvYXQgekZhciwKICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkcmF3TW9kZSwKQEAg
LTExNCw1MyArMTIxLDU0IEBACiAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZnJvbnRGYWNl
LAogICAgICAgICAgICAgICAgICAgICAgYm9vbCBpZ25vcmVWaWV3cG9ydCk7CiAKLSAgICBnbDo6
RXJyb3IgYXBwbHlSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZUJ1ZmZl
cikgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIGFwcGx5UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpG
cmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmNvbG9yQXR0YWNobWVudCwKKyAgICBnbDo6RXJyb3IgYXBw
bHlSZW5kZXJUYXJnZXQoR0xJbXBsRmFjdG9yeSAqaW1wbEZhY3RvcnksIGNvbnN0IGdsOjpGcmFt
ZWJ1ZmZlciAqZnJhbWVCdWZmZXIpOworICAgIGdsOjpFcnJvciBhcHBseVJlbmRlclRhcmdldChH
TEltcGxGYWN0b3J5ICppbXBsRmFjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqY29sb3JBdHRhY2htZW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2ht
ZW50ICpkZXB0aFN0ZW5jaWxBdHRhY2htZW50KTsKICAgICBnbDo6RXJyb3IgYXBwbHlVbmlmb3Jt
cyhjb25zdCBQcm9ncmFtRDNEICZwcm9ncmFtRDNELAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBkcmF3TW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnZlY3RvcjxEM0RVbmlmb3JtICo+ICZ1bmlmb3JtQXJyYXkpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgYm9vbCBhcHBseVByaW1pdGl2ZVR5cGUoR0xlbnVtIHByaW1pdGl2ZVR5cGUsIEdMc2l6
ZWkgZWxlbWVudENvdW50LCBib29sIHVzZXNQb2ludFNpemUpOwotICAgIHZpcnR1YWwgZ2w6OkVy
cm9yIGFwcGx5VmVydGV4QnVmZmVyKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZmlyc3QsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGVkSW5kZXhEYXRhICppbmRleEluZm8p
OwotICAgIGdsOjpFcnJvciBhcHBseUluZGV4QnVmZmVyKGNvbnN0IGdsOjpEYXRhICZkYXRhLAor
ICAgIGJvb2wgYXBwbHlQcmltaXRpdmVUeXBlKEdMZW51bSBwcmltaXRpdmVUeXBlLCBHTHNpemVp
IGVsZW1lbnRDb3VudCwgYm9vbCB1c2VzUG9pbnRTaXplKTsKKyAgICBnbDo6RXJyb3IgYXBwbHlW
ZXJ0ZXhCdWZmZXIoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRlZEluZGV4RGF0YSAqaW5k
ZXhJbmZvKTsKKyAgICBnbDo6RXJyb3IgYXBwbHlJbmRleEJ1ZmZlcihjb25zdCBnbDo6Q29udGV4
dFN0YXRlICZkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9p
ZCAqaW5kaWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRyYW5zbGF0ZWRJbmRleERhdGEgKmluZGV4SW5mbykgb3ZlcnJpZGU7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRlZEluZGV4RGF0YSAqaW5kZXhJbmZv
KTsKIAotICAgIGdsOjpFcnJvciBhcHBseVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVycyhjb25zdCBn
bDo6U3RhdGUgJnN0YXRlKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgYXBwbHlUcmFuc2Zvcm1G
ZWVkYmFja0J1ZmZlcnMoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSk7CiAKICAgICBnbDo6RXJyb3Ig
Y2xlYXIoY29uc3QgQ2xlYXJQYXJhbWV0ZXJzICZjbGVhclBhcmFtcywKICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqY29sb3JCdWZmZXIsCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmRlcHRoU3Rl
bmNpbEJ1ZmZlcik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbWFya0FsbFN0YXRlRGlydHkoKTsKKyAg
ICB2b2lkIG1hcmtBbGxTdGF0ZURpcnR5KCk7CiAKICAgICAvLyBsb3N0IGRldmljZQogICAgIGJv
b2wgdGVzdERldmljZUxvc3QoKSBvdmVycmlkZTsKLSAgICBib29sIHRlc3REZXZpY2VSZXNldHRh
YmxlKCkgb3ZlcnJpZGU7CisgICAgYm9vbCB0ZXN0RGV2aWNlUmVzZXR0YWJsZSgpOwogCiAgICAg
VmVuZG9ySUQgZ2V0VmVuZG9ySWQoKSBjb25zdDsKLSAgICBzdGQ6OnN0cmluZyBnZXRSZW5kZXJl
ckRlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpzdHJpbmcgZ2V0UmVuZGVy
ZXJEZXNjcmlwdGlvbigpIGNvbnN0OwogICAgIERldmljZUlkZW50aWZpZXIgZ2V0QWRhcHRlcklk
ZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIElEaXJlY3QzRERldmljZTkgKmdldERl
dmljZSgpIHsgcmV0dXJuIG1EZXZpY2U7IH0KICAgICB2b2lkICpnZXREM0REZXZpY2UoKSBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFJlc2VydmVkVmVydGV4VW5pZm9y
bVZlY3RvcnMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRSZXNlcnZlZEZy
YWdtZW50VW5pZm9ybVZlY3RvcnMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBn
ZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1CdWZmZXJzKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB1bnNp
Z25lZCBpbnQgZ2V0UmVzZXJ2ZWRGcmFnbWVudFVuaWZvcm1CdWZmZXJzKCkgY29uc3Q7CisgICAg
dW5zaWduZWQgaW50IGdldFJlc2VydmVkVmVydGV4VW5pZm9ybVZlY3RvcnMoKSBjb25zdDsKKyAg
ICB1bnNpZ25lZCBpbnQgZ2V0UmVzZXJ2ZWRGcmFnbWVudFVuaWZvcm1WZWN0b3JzKCkgY29uc3Q7
CisgICAgdW5zaWduZWQgaW50IGdldFJlc2VydmVkVmVydGV4VW5pZm9ybUJ1ZmZlcnMoKSBjb25z
dCBvdmVycmlkZTsKKyAgICB1bnNpZ25lZCBpbnQgZ2V0UmVzZXJ2ZWRGcmFnbWVudFVuaWZvcm1C
dWZmZXJzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIGdldFNoYXJlSGFuZGxlU3VwcG9y
dCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBpbnQgZ2V0TWFqb3JTaGFkZXJNb2RlbCgpIGNvbnN0
OworICAgIGludCBnZXRNYWpvclNoYWRlck1vZGVsKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgaW50
IGdldE1pbm9yU2hhZGVyTW9kZWwoKSBjb25zdCBvdmVycmlkZTsKICAgICBzdGQ6OnN0cmluZyBn
ZXRTaGFkZXJNb2RlbFN1ZmZpeCgpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC0xNjcsMjYgKzE3NSw1
NSBAQAogICAgIERXT1JEIGdldENhcHNEZWNsVHlwZXMoKSBjb25zdDsKIAogICAgIC8vIFBpeGVs
IG9wZXJhdGlvbnMKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBjb3B5SW1hZ2UyRChjb25zdCBnbDo6
RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VSZWN0
LCBHTGVudW0gZGVzdEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LCBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwgR0xp
bnQgbGV2ZWwpOwotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNvcHlJbWFnZUN1YmUoY29uc3QgZ2w6
OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlUmVj
dCwgR0xlbnVtIGRlc3RGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LCBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwg
R0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwpOwotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNvcHlJ
bWFnZTNEKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0
YW5nbGUgJnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsIFRleHR1cmVTdG9y
YWdlICpzdG9yYWdlLCBHTGludCBsZXZlbCk7Ci0gICAgdmlydHVhbCBnbDo6RXJyb3IgY29weUlt
YWdlMkRBcnJheShjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBnbDo6
UmVjdGFuZ2xlICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsIFRl
eHR1cmVTdG9yYWdlICpzdG9yYWdlLCBHTGludCBsZXZlbCk7CisgICAgZ2w6OkVycm9yIGNvcHlJ
bWFnZTJEKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZVJlY3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbGV2ZWwpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBjb3B5SW1hZ2VDdWJlKGNvbnN0
IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlUmVjdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZGVzdEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwpIG92
ZXJyaWRlOworICAgIGdsOjpFcnJvciBjb3B5SW1hZ2UzRChjb25zdCBnbDo6RnJhbWVidWZmZXIg
KmZyYW1lYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFu
Z2xlICZzb3VyY2VSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdEZv
cm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9m
ZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsKSBvdmVycmlkZTsKKyAgICBn
bDo6RXJyb3IgY29weUltYWdlMkRBcnJheShjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVm
ZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUg
JnNvdXJjZVJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RG
b3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAm
ZGVzdE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlU3RvcmFn
ZSAqc3RvcmFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCkg
b3ZlcnJpZGU7CiAKKyAgICBnbDo6RXJyb3IgY29weVRleHR1cmUoY29uc3QgZ2w6OlRleHR1cmUg
KnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc291cmNlTGV2ZWwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZVJlY3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgZGVzdExldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIHVucGFja0ZsaXBZLAorICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1By
ZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrVW5t
dWx0aXBseUFscGhhKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgY29weUNvbXByZXNzZWRUZXh0
dXJlKGNvbnN0IGdsOjpUZXh0dXJlICpzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBzb3VyY2VMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgZGVzdExldmVsKSBvdmVycmlkZTsKKwogICAgIC8vIFJlbmRl
clRhcmdldCBjcmVhdGlvbgotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNyZWF0ZVJlbmRlclRhcmdl
dChpbnQgd2lkdGgsIGludCBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgc2FtcGxlcywg
UmVuZGVyVGFyZ2V0RDNEICoqb3V0UlQpOworICAgIGdsOjpFcnJvciBjcmVhdGVSZW5kZXJUYXJn
ZXQoaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGhlaWdo
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJUYXJnZXREM0QgKipvdXRSVCkgb3ZlcnJpZGU7
CiAgICAgZ2w6OkVycm9yIGNyZWF0ZVJlbmRlclRhcmdldENvcHkoUmVuZGVyVGFyZ2V0RDNEICpz
b3VyY2UsIFJlbmRlclRhcmdldEQzRCAqKm91dFJUKSBvdmVycmlkZTsKIAotICAgIC8vIEZyYW1l
YnVmZmVyIGNyZWF0aW9uCi0gICAgRnJhbWVidWZmZXJJbXBsICpjcmVhdGVGcmFtZWJ1ZmZlcihj
b25zdCBnbDo6RnJhbWVidWZmZXI6OkRhdGEgJmRhdGEpIG92ZXJyaWRlOwotCi0gICAgLy8gU2hh
ZGVyIGNyZWF0aW9uCi0gICAgU2hhZGVySW1wbCAqY3JlYXRlU2hhZGVyKGNvbnN0IGdsOjpTaGFk
ZXI6OkRhdGEgJmRhdGEpIG92ZXJyaWRlOwotICAgIFByb2dyYW1JbXBsICpjcmVhdGVQcm9ncmFt
KGNvbnN0IGdsOjpQcm9ncmFtOjpEYXRhICZkYXRhKSBvdmVycmlkZTsKLQogICAgIC8vIFNoYWRl
ciBvcGVyYXRpb25zCiAgICAgZ2w6OkVycm9yIGxvYWRFeGVjdXRhYmxlKGNvbnN0IHZvaWQgKmZ1
bmN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLApAQCAt
MjA0LDQ5ICsyNDEsNTggQEAKICAgICBVbmlmb3JtU3RvcmFnZUQzRCAqY3JlYXRlVW5pZm9ybVN0
b3JhZ2Uoc2l6ZV90IHN0b3JhZ2VTaXplKSBvdmVycmlkZTsKIAogICAgIC8vIEltYWdlIG9wZXJh
dGlvbnMKLSAgICB2aXJ0dWFsIEltYWdlRDNEICpjcmVhdGVJbWFnZSgpOworICAgIEltYWdlRDNE
ICpjcmVhdGVJbWFnZSgpIG92ZXJyaWRlOwogICAgIGdsOjpFcnJvciBnZW5lcmF0ZU1pcG1hcChJ
bWFnZUQzRCAqZGVzdCwgSW1hZ2VEM0QgKnNvdXJjZSkgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9y
IGdlbmVyYXRlTWlwbWFwc1VzaW5nRDNEKFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZ0
ZXh0dXJlU3RhdGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgVGV4dHVyZVN0b3JhZ2UgKmNyZWF0
ZVRleHR1cmVTdG9yYWdlMkQoU3dhcENoYWluRDNEICpzd2FwQ2hhaW4pOwotICAgIFRleHR1cmVT
dG9yYWdlICpjcmVhdGVUZXh0dXJlU3RvcmFnZUVHTEltYWdlKEVHTEltYWdlRDNEICplZ2xJbWFn
ZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBUZXh0dXJlU3RvcmFnZSAqY3JlYXRlVGV4dHVyZVN0
b3JhZ2UyRChHTGVudW0gaW50ZXJuYWxmb3JtYXQsIGJvb2wgcmVuZGVyVGFyZ2V0LCBHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCwgaW50IGxldmVscywgYm9vbCBoaW50TGV2ZWxaZXJvT25s
eSk7Ci0gICAgdmlydHVhbCBUZXh0dXJlU3RvcmFnZSAqY3JlYXRlVGV4dHVyZVN0b3JhZ2VDdWJl
KEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgYm9vbCByZW5kZXJUYXJnZXQsIGludCBzaXplLCBpbnQg
bGV2ZWxzLCBib29sIGhpbnRMZXZlbFplcm9Pbmx5KTsKLSAgICB2aXJ0dWFsIFRleHR1cmVTdG9y
YWdlICpjcmVhdGVUZXh0dXJlU3RvcmFnZTNEKEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgYm9vbCBy
ZW5kZXJUYXJnZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRo
LCBpbnQgbGV2ZWxzKTsKLSAgICB2aXJ0dWFsIFRleHR1cmVTdG9yYWdlICpjcmVhdGVUZXh0dXJl
U3RvcmFnZTJEQXJyYXkoR0xlbnVtIGludGVybmFsZm9ybWF0LCBib29sIHJlbmRlclRhcmdldCwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIGludCBsZXZlbHMp
OworICAgIGdsOjpFcnJvciBnZW5lcmF0ZU1pcG1hcFVzaW5nRDNEKFRleHR1cmVTdG9yYWdlICpz
dG9yYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpU
ZXh0dXJlU3RhdGUgJnRleHR1cmVTdGF0ZSkgb3ZlcnJpZGU7CisgICAgVGV4dHVyZVN0b3JhZ2Ug
KmNyZWF0ZVRleHR1cmVTdG9yYWdlMkQoU3dhcENoYWluRDNEICpzd2FwQ2hhaW4pIG92ZXJyaWRl
OworICAgIFRleHR1cmVTdG9yYWdlICpjcmVhdGVUZXh0dXJlU3RvcmFnZUVHTEltYWdlKEVHTElt
YWdlRDNEICplZ2xJbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSZW5kZXJUYXJnZXREM0QgKnJlbmRlclRhcmdldEQzRCkgb3ZlcnJpZGU7Cisg
ICAgVGV4dHVyZVN0b3JhZ2UgKmNyZWF0ZVRleHR1cmVTdG9yYWdlRXh0ZXJuYWwoCisgICAgICAg
IGVnbDo6U3RyZWFtICpzdHJlYW0sCisgICAgICAgIGNvbnN0IGVnbDo6U3RyZWFtOjpHTFRleHR1
cmVEZXNjcmlwdGlvbiAmZGVzYykgb3ZlcnJpZGU7CisgICAgVGV4dHVyZVN0b3JhZ2UgKmNyZWF0
ZVRleHR1cmVTdG9yYWdlMkQoR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVuZGVyVGFyZ2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxldmVscywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGhpbnRMZXZlbFplcm9P
bmx5KSBvdmVycmlkZTsKKyAgICBUZXh0dXJlU3RvcmFnZSAqY3JlYXRlVGV4dHVyZVN0b3JhZ2VD
dWJlKEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgcmVuZGVyVGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBoaW50TGV2ZWxaZXJvT25seSkgb3ZlcnJpZGU7
CisgICAgVGV4dHVyZVN0b3JhZ2UgKmNyZWF0ZVRleHR1cmVTdG9yYWdlM0QoR0xlbnVtIGludGVy
bmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgcmVuZGVyVGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgbGV2ZWxzKSBvdmVycmlkZTsKKyAgICBUZXh0dXJlU3RvcmFnZSAqY3Jl
YXRlVGV4dHVyZVN0b3JhZ2UyREFycmF5KEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVuZGVyVGFyZ2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBsZXZlbHMpIG92ZXJyaWRlOwogCi0gICAgLy8gVGV4dHVyZSBj
cmVhdGlvbgotICAgIHZpcnR1YWwgVGV4dHVyZUltcGwgKmNyZWF0ZVRleHR1cmUoR0xlbnVtIHRh
cmdldCk7Ci0KLSAgICAvLyBSZW5kZXJidWZmZXIgY3JlYXRpb24KLSAgICB2aXJ0dWFsIFJlbmRl
cmJ1ZmZlckltcGwgKmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOwotCiAgICAgLy8gQnVmZmVyIGNyZWF0
aW9uCi0gICAgdmlydHVhbCBCdWZmZXJJbXBsICpjcmVhdGVCdWZmZXIoKTsKLSAgICB2aXJ0dWFs
IFZlcnRleEJ1ZmZlciAqY3JlYXRlVmVydGV4QnVmZmVyKCk7Ci0gICAgdmlydHVhbCBJbmRleEJ1
ZmZlciAqY3JlYXRlSW5kZXhCdWZmZXIoKTsKKyAgICBWZXJ0ZXhCdWZmZXIgKmNyZWF0ZVZlcnRl
eEJ1ZmZlcigpIG92ZXJyaWRlOworICAgIEluZGV4QnVmZmVyICpjcmVhdGVJbmRleEJ1ZmZlcigp
IG92ZXJyaWRlOwogCi0gICAgLy8gVmVydGV4IEFycmF5IGNyZWF0aW9uCi0gICAgVmVydGV4QXJy
YXlJbXBsICpjcmVhdGVWZXJ0ZXhBcnJheShjb25zdCBnbDo6VmVydGV4QXJyYXk6OkRhdGEgJmRh
dGEpIG92ZXJyaWRlOwotCi0gICAgLy8gUXVlcnkgYW5kIEZlbmNlIGNyZWF0aW9uCi0gICAgdmly
dHVhbCBRdWVyeUltcGwgKmNyZWF0ZVF1ZXJ5KEdMZW51bSB0eXBlKTsKLSAgICB2aXJ0dWFsIEZl
bmNlTlZJbXBsICpjcmVhdGVGZW5jZU5WKCk7Ci0gICAgdmlydHVhbCBGZW5jZVN5bmNJbXBsICpj
cmVhdGVGZW5jZVN5bmMoKTsKLQotICAgIC8vIFRyYW5zZm9ybSBGZWVkYmFjayBjcmVhdGlvbgot
ICAgIHZpcnR1YWwgVHJhbnNmb3JtRmVlZGJhY2tJbXBsKiBjcmVhdGVUcmFuc2Zvcm1GZWVkYmFj
aygpOwotCiAgICAgLy8gU3RyZWFtIENyZWF0aW9uCi0gICAgU3RyZWFtSW1wbCAqY3JlYXRlU3Ry
ZWFtKGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKKyAgICBTdHJl
YW1Qcm9kdWNlckltcGwgKmNyZWF0ZVN0cmVhbVByb2R1Y2VyRDNEVGV4dHVyZU5WMTIoCisgICAg
ICAgIGVnbDo6U3RyZWFtOjpDb25zdW1lclR5cGUgY29uc3VtZXJUeXBlLAorICAgICAgICBjb25z
dCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CiAKICAgICAvLyBCdWZmZXIt
dG8tdGV4dHVyZSBhbmQgVGV4dHVyZS10by1idWZmZXIgY29waWVzCi0gICAgdmlydHVhbCBib29s
IHN1cHBvcnRzRmFzdENvcHlCdWZmZXJUb1RleHR1cmUoR0xlbnVtIGludGVybmFsRm9ybWF0KSBj
b25zdDsKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBmYXN0Q29weUJ1ZmZlclRvVGV4dHVyZShjb25z
dCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBSZW5k
ZXJUYXJnZXREM0QgKmRlc3RSZW5kZXJUYXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RpbmF0aW9uRm9ybWF0LCBHTGVudW0gc291
cmNlUGl4ZWxzVHlwZSwgY29uc3QgZ2w6OkJveCAmZGVzdEFyZWEpOworICAgIGJvb2wgc3VwcG9y
dHNGYXN0Q29weUJ1ZmZlclRvVGV4dHVyZShHTGVudW0gaW50ZXJuYWxGb3JtYXQpIGNvbnN0IG92
ZXJyaWRlOworICAgIGdsOjpFcnJvciBmYXN0Q29weUJ1ZmZlclRvVGV4dHVyZShjb25zdCBnbDo6
UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSZW5kZXJUYXJnZXREM0QgKmRlc3RSZW5kZXJUYXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0aW5hdGlvbkZvcm1hdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNvdXJjZVBpeGVsc1R5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3gg
JmRlc3RBcmVhKSBvdmVycmlkZTsKIAotICAgIHZvaWQgc3luY1N0YXRlKGNvbnN0IGdsOjpTdGF0
ZSAmc3RhdGUsIGNvbnN0IGdsOjpTdGF0ZTo6RGlydHlCaXRzICZiaXRtYXNrKSBvdmVycmlkZTsK
LQogICAgIC8vIEQzRDktcmVuZGVyZXIgc3BlY2lmaWMgbWV0aG9kcwogICAgIGdsOjpFcnJvciBi
b3hGaWx0ZXIoSURpcmVjdDNEU3VyZmFjZTkgKnNvdXJjZSwgSURpcmVjdDNEU3VyZmFjZTkgKmRl
c3QpOwogCkBAIC0yNjcsMjUgKzMxMyw0OCBAQAogCiAgICAgZWdsOjpFcnJvciBnZXRFR0xEZXZp
Y2UoRGV2aWNlSW1wbCAqKmRldmljZSkgb3ZlcnJpZGU7CiAKKyAgICBTdGF0ZU1hbmFnZXI5ICpn
ZXRTdGF0ZU1hbmFnZXIoKSB7IHJldHVybiAmbVN0YXRlTWFuYWdlcjsgfQorCisgICAgZ2w6OkVy
cm9yIGdlbmVyaWNEcmF3QXJyYXlzKENvbnRleHQ5ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgZmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFu
Y2VzKTsKKworICAgIGdsOjpFcnJvciBnZW5lcmljRHJhd0VsZW1lbnRzKENvbnRleHQ5ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpJbmRleFJhbmdlICZpbmRleFJhbmdlKTsKKworICAgIC8v
IE5lY2Vzc2FyeSBoYWNrIGZvciBkZWZhdWx0IGZyYW1lYnVmZmVycyBpbiBEM0QuCisgICAgRnJh
bWVidWZmZXJJbXBsICpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVm
ZmVyU3RhdGUgJnN0YXRlKSBvdmVycmlkZTsKKworICAgIERlYnVnQW5ub3RhdG9yOSAqZ2V0QW5u
b3RhdG9yKCkgeyByZXR1cm4gJm1Bbm5vdGF0b3I7IH0KKworICAgIGdsOjpWZXJzaW9uIGdldE1h
eFN1cHBvcnRlZEVTVmVyc2lvbigpIGNvbnN0IG92ZXJyaWRlOworCiAgIHByb3RlY3RlZDoKLSAg
ICB2b2lkIGNyZWF0ZUFubm90YXRvcigpIG92ZXJyaWRlOwogICAgIGdsOjpFcnJvciBjbGVhclRl
eHR1cmVzKGdsOjpTYW1wbGVyVHlwZSBzYW1wbGVyVHlwZSwgc2l6ZV90IHJhbmdlU3RhcnQsIHNp
emVfdCByYW5nZUVuZCkgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIGFwcGx5U2hhZGVyc0ltcGwo
Y29uc3QgZ2w6OkRhdGEgJmRhdGEsIEdMZW51bSBkcmF3TW9kZSkgb3ZlcnJpZGU7CiAKICAgcHJp
dmF0ZToKLSAgICBnbDo6RXJyb3IgZHJhd0FycmF5c0ltcGwoY29uc3QgZ2w6OkRhdGEgJmRhdGEs
CisgICAgZ2w6OkVycm9yIGRyYXdBcnJheXNJbXBsKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRh
dGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBzdGFydFZlcnRleCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBpbnN0YW5jZXMpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBkcmF3RWxlbWVudHNJ
bXBsKGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGluc3RhbmNlcyk7CisgICAgZ2w6OkVycm9yIGRyYXdFbGVtZW50c0ltcGwoY29uc3Qg
Z2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUcmFuc2xhdGVkSW5kZXhEYXRhICZpbmRleEluZm8sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlw
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMpIG92ZXJy
aWRlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzKTsK
IAorICAgIGdsOjpFcnJvciBhcHBseVNoYWRlcnMoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0
YSwgR0xlbnVtIGRyYXdNb2RlKTsKKwogICAgIHZvaWQgZ2VuZXJhdGVDYXBzKGdsOjpDYXBzICpv
dXRDYXBzLCBnbDo6VGV4dHVyZUNhcHNNYXAgKm91dFRleHR1cmVDYXBzLAogICAgICAgICAgICAg
ICAgICAgICAgIGdsOjpFeHRlbnNpb25zICpvdXRFeHRlbnNpb25zLAogICAgICAgICAgICAgICAg
ICAgICAgIGdsOjpMaW1pdGF0aW9ucyAqb3V0TGltaXRhdGlvbnMpIGNvbnN0IG92ZXJyaWRlOwpA
QCAtMjkyLDcgKzM2MSw3IEBACiAKICAgICBXb3JrYXJvdW5kc0QzRCBnZW5lcmF0ZVdvcmthcm91
bmRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBnbDo6RXJyb3Igc2V0QmxlbmREZXB0aFJhc3Rl
clN0YXRlcyhjb25zdCBnbDo6RGF0YSAmZ2xEYXRhLCBHTGVudW0gZHJhd01vZGUpOworICAgIGds
OjpFcnJvciBzZXRCbGVuZERlcHRoUmFzdGVyU3RhdGVzKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUg
JmdsRGF0YSwgR0xlbnVtIGRyYXdNb2RlKTsKIAogICAgIHZvaWQgcmVsZWFzZSgpOwogCkBAIC0z
MDUsNyArMzc0LDkgQEAKIAogICAgIGdsOjpFcnJvciBnZXRDb3VudGluZ0lCKHNpemVfdCBjb3Vu
dCwgU3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2UgKipvdXRJQik7CiAKLSAgICBnbDo6RXJyb3Ig
Z2V0TnVsbENvbG9yYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmRlcHRo
YnVmZmVyLCBjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICoqb3V0Q29sb3JCdWZmZXIp
OworICAgIGdsOjpFcnJvciBnZXROdWxsQ29sb3JidWZmZXIoR0xJbXBsRmFjdG9yeSAqaW1wbEZh
Y3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVi
dWZmZXJBdHRhY2htZW50ICpkZXB0aGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKipvdXRDb2xvckJ1ZmZlcik7
CiAKICAgICBEM0RQT09MIGdldEJ1ZmZlclBvb2woRFdPUkQgdXNhZ2UpIGNvbnN0OwogCkBAIC0z
OTgsNyArNDY5LDEwIEBACiAKICAgICBEZXZpY2VEM0QgKm1FR0xEZXZpY2U7CiAgICAgc3RkOjp2
ZWN0b3I8VHJhbnNsYXRlZEF0dHJpYnV0ZT4gbVRyYW5zbGF0ZWRBdHRyaWJDYWNoZTsKKworICAg
IERlYnVnQW5ub3RhdG9yOSBtQW5ub3RhdG9yOwogfTsKIAotfQorfSAgLy8gbmFtZXNwYWNlIHJ4
CisKICNlbmRpZiAvLyBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEOV9SRU5ERVJFUjlfSF8KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
OS9TdGF0ZU1hbmFnZXI5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvU3RhdGVNYW5hZ2VyOS5jcHAJKHJldmlz
aW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkOS9TdGF0ZU1hbmFnZXI5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgsNyAr
MTgsOCBAQAogewogCiBTdGF0ZU1hbmFnZXI5OjpTdGF0ZU1hbmFnZXI5KFJlbmRlcmVyOSAqcmVu
ZGVyZXI5KQotICAgIDogbUN1ckJsZW5kU3RhdGUoKSwKKyAgICA6IG1Vc2luZ1plcm9Db2xvck1h
c2tXb3JrYXJvdW5kKGZhbHNlKSwKKyAgICAgIG1DdXJCbGVuZFN0YXRlKCksCiAgICAgICBtQ3Vy
QmxlbmRDb2xvcigwLCAwLCAwLCAwKSwKICAgICAgIG1DdXJTYW1wbGVNYXNrKDApLAogICAgICAg
bUN1clJhc3RlclN0YXRlKCksCkBAIC02Nyw2ICs2OCwxMSBAQAogewogfQogCit2b2lkIFN0YXRl
TWFuYWdlcjk6OmluaXRpYWxpemUoKQoreworICAgIG1Vc2luZ1plcm9Db2xvck1hc2tXb3JrYXJv
dW5kID0gbVJlbmRlcmVyOS0+Z2V0VmVuZG9ySWQoKSA9PSBWRU5ET1JfSURfQU1EOworfQorCiB2
b2lkIFN0YXRlTWFuYWdlcjk6OmZvcmNlU2V0QmxlbmRTdGF0ZSgpCiB7CiAgICAgbURpcnR5Qml0
cyB8PSBtQmxlbmRTdGF0ZURpcnR5Qml0czsKQEAgLTEyNSw2ICsxMzEsMTIgQEAKICAgICAgICAg
ICAgICAgICAgICAgLy8gQmxlbmRDb2xvciBhbmQgZnVuY3MgYW5kIGVxdWF0aW9ucyBoYXMgdG8g
YmUgc2V0IGlmIGJsZW5kIGlzIGVuYWJsZWQKICAgICAgICAgICAgICAgICAgICAgbURpcnR5Qml0
cy5zZXQoRElSVFlfQklUX0JMRU5EX0NPTE9SKTsKICAgICAgICAgICAgICAgICAgICAgbURpcnR5
Qml0cy5zZXQoRElSVFlfQklUX0JMRU5EX0ZVTkNTX0VRVUFUSU9OUyk7CisKKyAgICAgICAgICAg
ICAgICAgICAgLy8gVGhlIGNvbG9yIG1hc2sgbWF5IGhhdmUgdG8gYmUgdXBkYXRlZCBpZiB0aGUg
YmxlbmQgc3RhdGUgY2hhbmdlcworICAgICAgICAgICAgICAgICAgICBpZiAobVVzaW5nWmVyb0Nv
bG9yTWFza1dvcmthcm91bmQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9DT0xPUl9NQVNLKTsKKyAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfQkxFTkRfRlVOQ1M6CkBAIC0x
MzgsNiArMTUwLDEyIEBACiAgICAgICAgICAgICAgICAgICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZ
X0JJVF9CTEVORF9GVU5DU19FUVVBVElPTlMpOwogICAgICAgICAgICAgICAgICAgICAvLyBCbGVu
ZENvbG9yIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZiBibGVuZCBmdW5jcwogICAgICAgICAgICAg
ICAgICAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfQkxFTkRfQ09MT1IpOworCisgICAgICAg
ICAgICAgICAgICAgIC8vIFRoZSBjb2xvciBtYXNrIG1heSBoYXZlIHRvIGJlIHVwZGF0ZWQgaWYg
dGhlIGJsZW5kIGZ1bmNzIGNoYW5nZQorICAgICAgICAgICAgICAgICAgICBpZiAobVVzaW5nWmVy
b0NvbG9yTWFza1dvcmthcm91bmQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9DT0xPUl9NQVNLKTsKKyAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KQEAgLTE0OCw2ICsxNjYsMTIgQEAKICAgICAgICAgICAgICAgICAg
ICAgYmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9uQWxwaGEgIT0gbUN1ckJsZW5kU3RhdGUuYmxlbmRF
cXVhdGlvbkFscGhhKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgbURp
cnR5Qml0cy5zZXQoRElSVFlfQklUX0JMRU5EX0ZVTkNTX0VRVUFUSU9OUyk7CisKKyAgICAgICAg
ICAgICAgICAgICAgLy8gVGhlIGNvbG9yIG1hc2sgbWF5IGhhdmUgdG8gYmUgdXBkYXRlZCBpZiB0
aGUgYmxlbmQgZnVuY3MgY2hhbmdlCisgICAgICAgICAgICAgICAgICAgIGlmIChtVXNpbmdaZXJv
Q29sb3JNYXNrV29ya2Fyb3VuZCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0NPTE9SX01BU0spOworICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQpAQCAtMTY3LDYgKzE5MSwxNCBAQAogICAgICAgICAgICAgICAgICAg
ICBibGVuZFN0YXRlLmNvbG9yTWFza0FscGhhICE9IG1DdXJCbGVuZFN0YXRlLmNvbG9yTWFza0Fs
cGhhKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgbURpcnR5Qml0cy5z
ZXQoRElSVFlfQklUX0NPTE9SX01BU0spOworCisgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBj
b2xvciBtYXNrIGNhbiBjYXVzZSB0aGUgYmxlbmQgc3RhdGUgdG8gZ2V0IG91dCBvZiBzeW5jIHdo
ZW4gdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIHplcm8gY29sb3IgbWFzayB3b3Jr
YXJvdW5kCisgICAgICAgICAgICAgICAgICAgIGlmIChtVXNpbmdaZXJvQ29sb3JNYXNrV29ya2Fy
b3VuZCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgbURp
cnR5Qml0cy5zZXQoRElSVFlfQklUX0JMRU5EX0VOQUJMRUQpOworICAgICAgICAgICAgICAgICAg
ICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0JMRU5EX0ZVTkNTX0VRVUFUSU9OUyk7Cisg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CkBAIC00NDEsOCArNDczLDcgQEAKICAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotdm9pZCBTdGF0ZU1hbmFnZXI5OjpzZXRWaWV3cG9y
dFN0YXRlKGNvbnN0IGdsOjpDYXBzICpjYXBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnZpZXdwb3J0LAordm9pZCBTdGF0ZU1hbmFn
ZXI5OjpzZXRWaWV3cG9ydFN0YXRlKGNvbnN0IGdsOjpSZWN0YW5nbGUgJnZpZXdwb3J0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHpOZWFyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHpGYXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRyYXdNb2RlLApAQCAtNjk4LDYgKzcyOSw3IEBA
CiAgICAgaWYgKHN0ZW5jaWxUZXN0RW5hYmxlZCAmJiBtQ3VyU3RlbmNpbFNpemUgPiAwKQogICAg
IHsKICAgICAgICAgbVJlbmRlcmVyOS0+Z2V0RGV2aWNlKCktPlNldFJlbmRlclN0YXRlKEQzRFJT
X1NURU5DSUxFTkFCTEUsIFRSVUUpOworICAgICAgICBtUmVuZGVyZXI5LT5nZXREZXZpY2UoKS0+
U2V0UmVuZGVyU3RhdGUoRDNEUlNfVFdPU0lERURTVEVOQ0lMTU9ERSwgVFJVRSk7CiAgICAgfQog
ICAgIGVsc2UKICAgICB7CkBAIC04MDAsNDIgKzgzMiw1MiBAQAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBhbHBoYSkKIHsKICAgICAvLyBTZXQgdGhlIGNvbG9yIG1hc2sK
LSAgICBib29sIHplcm9Db2xvck1hc2tBbGxvd2VkID0gbVJlbmRlcmVyOS0+Z2V0VmVuZG9ySWQo
KSAhPSBWRU5ET1JfSURfQU1EOwotICAgIC8vIEFwcGFyZW50bHkgc29tZSBBVEkgY2FyZHMgaGF2
ZSBhIGJ1ZyB3aGVyZSBhIGRyYXcgd2l0aCBhIHplcm8gY29sb3IKLSAgICAvLyB3cml0ZSBtYXNr
IGNhbiBjYXVzZSBsYXRlciBkcmF3cyB0byBoYXZlIGluY29ycmVjdCByZXN1bHRzLiBJbnN0ZWFk
LAotICAgIC8vIHNldCBhIG5vbnplcm8gY29sb3Igd3JpdGUgbWFzayBidXQgbW9kaWZ5IHRoZSBi
bGVuZCBzdGF0ZSBzbyB0aGF0IG5vCi0gICAgLy8gZHJhd2luZyBpcyBkb25lLgotICAgIC8vIGh0
dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9hbmdsZXByb2plY3QvaXNzdWVzL2RldGFpbD9pZD0xNjkK
IAotICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmF0dGFjaG1lbnQgPSBmcmFt
ZWJ1ZmZlci0+Z2V0Rmlyc3RDb2xvcmJ1ZmZlcigpOwotICAgIEdMZW51bSBpbnRlcm5hbEZvcm1h
dCAgICAgICAgICAgICAgICAgICAgICAgPSBhdHRhY2htZW50ID8gYXR0YWNobWVudC0+Z2V0SW50
ZXJuYWxGb3JtYXQoKSA6IEdMX05PTkU7CisgICAgY29uc3QgYXV0byAqYXR0YWNobWVudCA9IGZy
YW1lYnVmZmVyLT5nZXRGaXJzdENvbG9yYnVmZmVyKCk7CisgICAgY29uc3QgYXV0byAmZm9ybWF0
ICAgICA9IGF0dGFjaG1lbnQgPyBhdHRhY2htZW50LT5nZXRGb3JtYXQoKSA6IGdsOjpGb3JtYXQ6
OkludmFsaWQoKTsKIAotICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9
IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oaW50ZXJuYWxGb3JtYXQpOwotCiAgICAgRFdPUkQg
Y29sb3JNYXNrID0gZ2xfZDNkOTo6Q29udmVydENvbG9yTWFzaygKLSAgICAgICAgZm9ybWF0SW5m
by5yZWRCaXRzID4gMCAmJiByZWQsIGZvcm1hdEluZm8uZ3JlZW5CaXRzID4gMCAmJiBncmVlbiwK
LSAgICAgICAgZm9ybWF0SW5mby5ibHVlQml0cyA+IDAgJiYgYmx1ZSwgZm9ybWF0SW5mby5hbHBo
YUJpdHMgPiAwICYmIGFscGhhKTsKKyAgICAgICAgZm9ybWF0LmluZm8tPnJlZEJpdHMgPiAwICYm
IHJlZCwgZm9ybWF0LmluZm8tPmdyZWVuQml0cyA+IDAgJiYgZ3JlZW4sCisgICAgICAgIGZvcm1h
dC5pbmZvLT5ibHVlQml0cyA+IDAgJiYgYmx1ZSwgZm9ybWF0LmluZm8tPmFscGhhQml0cyA+IDAg
JiYgYWxwaGEpOwogCi0gICAgaWYgKGNvbG9yTWFzayA9PSAwICYmICF6ZXJvQ29sb3JNYXNrQWxs
b3dlZCkKKyAgICAvLyBBcHBhcmVudGx5IHNvbWUgQVRJIGNhcmRzIGhhdmUgYSBidWcgd2hlcmUg
YSBkcmF3IHdpdGggYSB6ZXJvIGNvbG9yIHdyaXRlIG1hc2sgY2FuIGNhdXNlCisgICAgLy8gbGF0
ZXIgZHJhd3MgdG8gaGF2ZSBpbmNvcnJlY3QgcmVzdWx0cy4gSW5zdGVhZCwgc2V0IGEgbm9uemVy
byBjb2xvciB3cml0ZSBtYXNrIGJ1dCBtb2RpZnkgdGhlCisgICAgLy8gYmxlbmQgc3RhdGUgc28g
dGhhdCBubyBkcmF3aW5nIGlzIGRvbmUuCisgICAgLy8gaHR0cDovL2FuZ2xlYnVnLmNvbS8xNjkK
KyAgICBpZiAoY29sb3JNYXNrID09IDAgJiYgbVVzaW5nWmVyb0NvbG9yTWFza1dvcmthcm91bmQp
CiAgICAgewogICAgICAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBtUmVuZGVyZXI5LT5n
ZXREZXZpY2UoKTsKICAgICAgICAgLy8gRW5hYmxlIGdyZWVuIGNoYW5uZWwsIGJ1dCBzZXQgYmxl
bmRpbmcgc28gbm90aGluZyB3aWxsIGJlIGRyYXduLgogICAgICAgICBkZXZpY2UtPlNldFJlbmRl
clN0YXRlKEQzRFJTX0NPTE9SV1JJVEVFTkFCTEUsIEQzRENPTE9SV1JJVEVFTkFCTEVfR1JFRU4p
OworCiAgICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQUxQSEFCTEVOREVOQUJM
RSwgVFJVRSk7CiAKICAgICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TUkNCTEVO
RCwgRDNEQkxFTkRfWkVSTyk7CiAgICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNf
REVTVEJMRU5ELCBEM0RCTEVORF9PTkUpOwogICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRl
KEQzRFJTX0JMRU5ET1AsIEQzREJMRU5ET1BfQUREKTsKKworICAgICAgICBtQ3VyQmxlbmRTdGF0
ZS5jb2xvck1hc2tSZWQgICA9IGZhbHNlOworICAgICAgICBtQ3VyQmxlbmRTdGF0ZS5jb2xvck1h
c2tHcmVlbiA9IHRydWU7CisgICAgICAgIG1DdXJCbGVuZFN0YXRlLmNvbG9yTWFza0JsdWUgID0g
ZmFsc2U7CisgICAgICAgIG1DdXJCbGVuZFN0YXRlLmNvbG9yTWFza0FscGhhID0gZmFsc2U7CisK
KyAgICAgICAgbUN1ckJsZW5kU3RhdGUuYmxlbmQgICAgICAgICAgICAgID0gdHJ1ZTsKKyAgICAg
ICAgbUN1ckJsZW5kU3RhdGUuc291cmNlQmxlbmRSR0IgICAgID0gR0xfWkVSTzsKKyAgICAgICAg
bUN1ckJsZW5kU3RhdGUuc291cmNlQmxlbmRBbHBoYSAgID0gR0xfWkVSTzsKKyAgICAgICAgbUN1
ckJsZW5kU3RhdGUuZGVzdEJsZW5kUkdCICAgICAgID0gR0xfT05FOworICAgICAgICBtQ3VyQmxl
bmRTdGF0ZS5kZXN0QmxlbmRBbHBoYSAgICAgPSBHTF9PTkU7CisgICAgICAgIG1DdXJCbGVuZFN0
YXRlLmJsZW5kRXF1YXRpb25SR0IgICA9IEdMX0ZVTkNfQUREOworICAgICAgICBtQ3VyQmxlbmRT
dGF0ZS5ibGVuZEVxdWF0aW9uQWxwaGEgPSBHTF9GVU5DX0FERDsKICAgICB9CiAgICAgZWxzZQog
ICAgIHsKICAgICAgICAgbVJlbmRlcmVyOS0+Z2V0RGV2aWNlKCktPlNldFJlbmRlclN0YXRlKEQz
RFJTX0NPTE9SV1JJVEVFTkFCTEUsIGNvbG9yTWFzayk7CisKKyAgICAgICAgbUN1ckJsZW5kU3Rh
dGUuY29sb3JNYXNrUmVkICAgPSByZWQ7CisgICAgICAgIG1DdXJCbGVuZFN0YXRlLmNvbG9yTWFz
a0dyZWVuID0gZ3JlZW47CisgICAgICAgIG1DdXJCbGVuZFN0YXRlLmNvbG9yTWFza0JsdWUgID0g
Ymx1ZTsKKyAgICAgICAgbUN1ckJsZW5kU3RhdGUuY29sb3JNYXNrQWxwaGEgPSBhbHBoYTsKICAg
ICB9Ci0KLSAgICBtQ3VyQmxlbmRTdGF0ZS5jb2xvck1hc2tSZWQgICA9IHJlZDsKLSAgICBtQ3Vy
QmxlbmRTdGF0ZS5jb2xvck1hc2tHcmVlbiA9IGdyZWVuOwotICAgIG1DdXJCbGVuZFN0YXRlLmNv
bG9yTWFza0JsdWUgID0gYmx1ZTsKLSAgICBtQ3VyQmxlbmRTdGF0ZS5jb2xvck1hc2tBbHBoYSA9
IGFscGhhOwogfQogCiB2b2lkIFN0YXRlTWFuYWdlcjk6OnNldFNhbXBsZU1hc2sodW5zaWduZWQg
aW50IHNhbXBsZU1hc2spCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDkvU3RhdGVNYW5hZ2VyOS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9TdGF0ZU1h
bmFnZXI5LmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9TdGF0ZU1hbmFnZXI5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwLDcgKzEwLDcgQEAKICNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfRDNEOV9TVEFU
RU1BTkFHRVI5X0hfCiAKICNpbmNsdWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgiCi0jaW5jbHVk
ZSAibGliQU5HTEUvRGF0YS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHRTdGF0ZS5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL1N0YXRlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
ZDNkL1JlbmRlcmVyRDNELmgiCiAKQEAgLTM5LDEyICszOSwxMyBAQAogICAgIFN0YXRlTWFuYWdl
cjkoUmVuZGVyZXI5ICpyZW5kZXJlcjkpOwogICAgIH5TdGF0ZU1hbmFnZXI5KCk7CiAKKyAgICB2
b2lkIGluaXRpYWxpemUoKTsKKwogICAgIHZvaWQgc3luY1N0YXRlKGNvbnN0IGdsOjpTdGF0ZSAm
c3RhdGUsIGNvbnN0IGdsOjpTdGF0ZTo6RGlydHlCaXRzICZkaXJ0eUJpdHMpOwogCiAgICAgZ2w6
OkVycm9yIHNldEJsZW5kRGVwdGhSYXN0ZXJTdGF0ZXMoY29uc3QgZ2w6OlN0YXRlICZnbFN0YXRl
LCB1bnNpZ25lZCBpbnQgc2FtcGxlTWFzayk7CiAgICAgdm9pZCBzZXRTY2lzc29yU3RhdGUoY29u
c3QgZ2w6OlJlY3RhbmdsZSAmc2Npc3NvciwgYm9vbCBlbmFibGVkKTsKLSAgICB2b2lkIHNldFZp
ZXdwb3J0U3RhdGUoY29uc3QgZ2w6OkNhcHMgKmNhcHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnZpZXdwb3J0LAorICAgIHZvaWQgc2V0Vmlld3BvcnRT
dGF0ZShjb25zdCBnbDo6UmVjdGFuZ2xlICZ2aWV3cG9ydCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmxvYXQgek5lYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHpGYXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkcmF3TW9kZSwKQEAgLTE1Niw2ICsx
NTcsOCBAQAogCiAgICAgdHlwZWRlZiBzdGQ6OmJpdHNldDxESVJUWV9CSVRfTUFYPiBEaXJ0eUJp
dHM7CiAKKyAgICBib29sIG1Vc2luZ1plcm9Db2xvck1hc2tXb3JrYXJvdW5kOworCiAgICAgLy8g
Q3VycmVudGx5IGFwcGxpZWQgYmxlbmQgc3RhdGUKICAgICBnbDo6QmxlbmRTdGF0ZSBtQ3VyQmxl
bmRTdGF0ZTsKICAgICBnbDo6Q29sb3JGIG1DdXJCbGVuZENvbG9yOwpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1N3YXBDaGFpbjku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkOS9Td2FwQ2hhaW45LmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1N3YXBD
aGFpbjkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05LDYgKzksNyBAQAogI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1N3YXBDaGFpbjkuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkOS9yZW5kZXJlcjlfdXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkOS9mb3JtYXR1dGlsczkuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkOS9OYXRpdmVXaW5kb3c5LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDkvUmVuZGVyZXI5LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvZmVhdHVyZXMuaCIK
IApAQCAtMTYsMTYgKzE3LDE3IEBACiB7CiAKIFN3YXBDaGFpbjk6OlN3YXBDaGFpbjkoUmVuZGVy
ZXI5ICpyZW5kZXJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgTmF0aXZlV2luZG93IG5hdGl2
ZVdpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAgTmF0aXZlV2luZG93OSAqbmF0aXZlV2lu
ZG93LAogICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEUgc2hhcmVIYW5kbGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBiYWNrQnVmZmVyRm9ybWF0LAogICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZGVwdGhCdWZmZXJGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAg
IEVHTGludCBvcmllbnRhdGlvbikKLSAgICA6IFN3YXBDaGFpbkQzRChuYXRpdmVXaW5kb3csIHNo
YXJlSGFuZGxlLCBiYWNrQnVmZmVyRm9ybWF0LCBkZXB0aEJ1ZmZlckZvcm1hdCksCisgICAgOiBT
d2FwQ2hhaW5EM0Qoc2hhcmVIYW5kbGUsIGJhY2tCdWZmZXJGb3JtYXQsIGRlcHRoQnVmZmVyRm9y
bWF0KSwKICAgICAgIG1SZW5kZXJlcihyZW5kZXJlciksCiAgICAgICBtV2lkdGgoLTEpLAogICAg
ICAgbUhlaWdodCgtMSksCiAgICAgICBtU3dhcEludGVydmFsKC0xKSwKKyAgICAgIG1OYXRpdmVX
aW5kb3cobmF0aXZlV2luZG93KSwKICAgICAgIG1Td2FwQ2hhaW4obnVsbHB0ciksCiAgICAgICBt
QmFja0J1ZmZlcihudWxscHRyKSwKICAgICAgIG1SZW5kZXJUYXJnZXQobnVsbHB0ciksCkBAIC01
MCw3ICs1Miw3IEBACiAgICAgU2FmZVJlbGVhc2UobVJlbmRlclRhcmdldCk7CiAgICAgU2FmZVJl
bGVhc2UobU9mZnNjcmVlblRleHR1cmUpOwogCi0gICAgaWYgKG1OYXRpdmVXaW5kb3cuZ2V0TmF0
aXZlV2luZG93KCkpCisgICAgaWYgKG1OYXRpdmVXaW5kb3ctPmdldE5hdGl2ZVdpbmRvdygpKQog
ICAgIHsKICAgICAgICAgbVNoYXJlSGFuZGxlID0gTlVMTDsKICAgICB9CkBAIC0xMDQsNyArMTA2
LDcgQEAKICAgICBTYWZlUmVsZWFzZShtRGVwdGhTdGVuY2lsKTsKIAogICAgIEhBTkRMRSAqcFNo
YXJlSGFuZGxlID0gTlVMTDsKLSAgICBpZiAoIW1OYXRpdmVXaW5kb3cuZ2V0TmF0aXZlV2luZG93
KCkgJiYgbVJlbmRlcmVyLT5nZXRTaGFyZUhhbmRsZVN1cHBvcnQoKSkKKyAgICBpZiAoIW1OYXRp
dmVXaW5kb3ctPmdldE5hdGl2ZVdpbmRvdygpICYmIG1SZW5kZXJlci0+Z2V0U2hhcmVIYW5kbGVT
dXBwb3J0KCkpCiAgICAgewogICAgICAgICBwU2hhcmVIYW5kbGUgPSAmbVNoYXJlSGFuZGxlOwog
ICAgIH0KQEAgLTE2Myw3ICsxNjUsNyBAQAogCiAgICAgLy8gRG9uJ3QgY3JlYXRlIGEgc3dhcGNo
YWluIGZvciBOVUxMUkVGIGRldmljZXMKICAgICBEM0RERVZUWVBFIGRldmljZVR5cGUgPSBtUmVu
ZGVyZXItPmdldEQzRDlEZXZpY2VUeXBlKCk7Ci0gICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5k
b3cgPSBtTmF0aXZlV2luZG93LmdldE5hdGl2ZVdpbmRvdygpOworICAgIEVHTE5hdGl2ZVdpbmRv
d1R5cGUgd2luZG93ID0gbU5hdGl2ZVdpbmRvdy0+Z2V0TmF0aXZlV2luZG93KCk7CiAgICAgaWYg
KHdpbmRvdyAmJiBkZXZpY2VUeXBlICE9IEQzRERFVlRZUEVfTlVMTFJFRikKICAgICB7CiAgICAg
ICAgIEQzRFBSRVNFTlRfUEFSQU1FVEVSUyBwcmVzZW50UGFyYW1ldGVycyA9IHswfTsKQEAgLTMz
Myw3ICszMzUsNyBAQAogICAgIC8vIE9uIFdpbmRvd3MgOCBzeXN0ZW1zLCBJRGlyZWN0M0RTd2Fw
Q2hhaW45OjpQcmVzZW50IHNvbWV0aW1lcyByZXR1cm5zIDB4ODg3NjA4NzMgd2hlbiB0aGUgd2lu
ZG93cyBpcwogICAgIC8vIGluIHRoZSBwcm9jZXNzIG9mIGVudGVyaW5nL2V4aXRpbmcgZnVsbHNj
cmVlbi4gVGhpcyBjb2RlIGRvZXNuJ3Qgc2VlbSB0byBoYXZlIGFueSBkb2N1bWVudGF0aW9uLiAg
VGhlCiAgICAgLy8gZGV2aWNlIGFwcGVhcnMgdG8gYmUgb2sgYWZ0ZXIgZW1pdHRpbmcgdGhpcyBl
cnJvciBzbyBzaW1wbHkgcmV0dXJuIGEgZmFpbHVyZSB0byBzd2FwLgotICAgIGlmIChyZXN1bHQg
PT0gMHg4ODc2MDg3MykKKyAgICBpZiAocmVzdWx0ID09IHN0YXRpY19jYXN0PEhSRVNVTFQ+KDB4
ODg3NjA4NzMpKQogICAgIHsKICAgICAgICAgcmV0dXJuIEVHTF9CQURfTUFUQ0g7CiAgICAgfQpA
QCAtMzk1LDYgKzM5NywxMiBAQAogICAgIHJldHVybiBudWxscHRyOwogfQogCitlZ2w6OkVycm9y
IFN3YXBDaGFpbjk6OmdldFN5bmNWYWx1ZXMoRUdMdWludDY0S0hSICp1c3QsIEVHTHVpbnQ2NEtI
UiAqbXNjLCBFR0x1aW50NjRLSFIgKnNiYykKK3sKKyAgICBVTlJFQUNIQUJMRSgpOworICAgIHJl
dHVybiBlZ2w6OkVycm9yKEVHTF9CQURfU1VSRkFDRSk7Cit9CisKIHZvaWQgU3dhcENoYWluOTo6
cmVjcmVhdGUoKQogewogICAgIGlmICghbVN3YXBDaGFpbikKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9Td2FwQ2hhaW45LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2Q5L1N3YXBDaGFpbjkuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1N3YXBDaGFpbjkuaAko
d29ya2luZyBjb3B5KQpAQCAtMTUsNiArMTUsNyBAQAogCiBuYW1lc3BhY2UgcngKIHsKK2NsYXNz
IE5hdGl2ZVdpbmRvdzk7CiBjbGFzcyBSZW5kZXJlcjk7CiAKIGNsYXNzIFN3YXBDaGFpbjkgOiBw
dWJsaWMgU3dhcENoYWluRDNECkBAIC0yMSw3ICsyMiw3IEBACiB7CiAgIHB1YmxpYzoKICAgICBT
d2FwQ2hhaW45KFJlbmRlcmVyOSAqcmVuZGVyZXIsCi0gICAgICAgICAgICAgICBOYXRpdmVXaW5k
b3cgbmF0aXZlV2luZG93LAorICAgICAgICAgICAgICAgTmF0aXZlV2luZG93OSAqbmF0aXZlV2lu
ZG93LAogICAgICAgICAgICAgICAgSEFORExFIHNoYXJlSGFuZGxlLAogICAgICAgICAgICAgICAg
R0xlbnVtIGJhY2tCdWZmZXJGb3JtYXQsCiAgICAgICAgICAgICAgICBHTGVudW0gZGVwdGhCdWZm
ZXJGb3JtYXQsCkBAIC00NSw2ICs0Niw4IEBACiAKICAgICB2b2lkICpnZXRLZXllZE11dGV4KCkg
b3ZlcnJpZGU7CiAKKyAgICBlZ2w6OkVycm9yIGdldFN5bmNWYWx1ZXMoRUdMdWludDY0S0hSICp1
c3QsIEVHTHVpbnQ2NEtIUiAqbXNjLCBFR0x1aW50NjRLSFIgKnNiYykgb3ZlcnJpZGU7CisKICAg
cHJpdmF0ZToKICAgICB2b2lkIHJlbGVhc2UoKTsKIApAQCAtNTMsNiArNTYsOCBAQAogICAgIEVH
TGludCBtSGVpZ2h0OwogICAgIEVHTGludCBtU3dhcEludGVydmFsOwogCisgICAgTmF0aXZlV2lu
ZG93OSAqbU5hdGl2ZVdpbmRvdzsKKwogICAgIElEaXJlY3QzRFN3YXBDaGFpbjkgKm1Td2FwQ2hh
aW47CiAgICAgSURpcmVjdDNEU3VyZmFjZTkgKm1CYWNrQnVmZmVyOwogICAgIElEaXJlY3QzRFN1
cmZhY2U5ICptUmVuZGVyVGFyZ2V0OwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1RleHR1cmVTdG9yYWdlOS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2Q5L1RleHR1cmVTdG9yYWdlOS5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9UZXh0dXJlU3RvcmFn
ZTkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNyArMTA3LDcgQEAKICAgICBtVGV4dHVyZSA9
IHN1cmZhY2VUZXh0dXJlOwogICAgIG1NaXBMZXZlbHMgPSBzdXJmYWNlVGV4dHVyZS0+R2V0TGV2
ZWxDb3VudCgpOwogCi0gICAgbUludGVybmFsRm9ybWF0ID0gc3dhcGNoYWluLT5HZXRSZW5kZXJU
YXJnZXRJbnRlcm5hbEZvcm1hdCgpOworICAgIG1JbnRlcm5hbEZvcm1hdCA9IHN3YXBjaGFpbi0+
Z2V0UmVuZGVyVGFyZ2V0SW50ZXJuYWxGb3JtYXQoKTsKIAogICAgIEQzRFNVUkZBQ0VfREVTQyBz
dXJmYWNlRGVzYzsKICAgICBzdXJmYWNlVGV4dHVyZS0+R2V0TGV2ZWxEZXNjKDAsICZzdXJmYWNl
RGVzYyk7CkBAIC0zMDUsMTQgKzMwNSwxMSBAQAogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9f
RVJST1IpOwogfQogCi1UZXh0dXJlU3RvcmFnZTlfRUdMSW1hZ2U6OlRleHR1cmVTdG9yYWdlOV9F
R0xJbWFnZShSZW5kZXJlcjkgKnJlbmRlcmVyLCBFR0xJbWFnZUQzRCAqaW1hZ2UpCitUZXh0dXJl
U3RvcmFnZTlfRUdMSW1hZ2U6OlRleHR1cmVTdG9yYWdlOV9FR0xJbWFnZShSZW5kZXJlcjkgKnJl
bmRlcmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRUdMSW1hZ2VEM0QgKmltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUmVuZGVyVGFyZ2V0OSAqcmVuZGVyVGFyZ2V0OSkKICAgICA6IFRl
eHR1cmVTdG9yYWdlOShyZW5kZXJlciwgRDNEVVNBR0VfUkVOREVSVEFSR0VUKSwgbUltYWdlKGlt
YWdlKQogewotICAgIFJlbmRlclRhcmdldEQzRCAqcmVuZGVyVGFyZ2V0RDNEID0gbnVsbHB0cjsK
LSAgICBtSW1hZ2UtPmdldFJlbmRlclRhcmdldCgmcmVuZGVyVGFyZ2V0RDNEKTsKLQotICAgIFJl
bmRlclRhcmdldDkgKnJlbmRlclRhcmdldDkgPSBHZXRBczxSZW5kZXJUYXJnZXQ5PihyZW5kZXJU
YXJnZXREM0QpOwotCiAgICAgbUludGVybmFsRm9ybWF0ID0gcmVuZGVyVGFyZ2V0OS0+Z2V0SW50
ZXJuYWxGb3JtYXQoKTsKICAgICBtVGV4dHVyZUZvcm1hdCAgPSByZW5kZXJUYXJnZXQ5LT5nZXRE
M0RGb3JtYXQoKTsKICAgICBtVGV4dHVyZVdpZHRoICAgPSByZW5kZXJUYXJnZXQ5LT5nZXRXaWR0
aCgpOwpAQCAtNDM0LDcgKzQzMSw3IEBACiAgICAgOiBUZXh0dXJlU3RvcmFnZTkocmVuZGVyZXIs
IEdldFRleHR1cmVVc2FnZShpbnRlcm5hbGZvcm1hdCwgcmVuZGVyVGFyZ2V0KSkKIHsKICAgICBt
VGV4dHVyZSA9IE5VTEw7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBDVUJFX0ZBQ0VfQ09VTlQ7
ICsraSkKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IENVQkVfRkFDRV9DT1VOVDsgKytpKQog
ICAgIHsKICAgICAgICAgbVJlbmRlclRhcmdldFtpXSA9IE5VTEw7CiAgICAgfQpAQCAtNDU1LDcg
KzQ1Miw3IEBACiB7CiAgICAgU2FmZVJlbGVhc2UobVRleHR1cmUpOwogCi0gICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBDVUJFX0ZBQ0VfQ09VTlQ7ICsraSkKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IENVQkVfRkFDRV9DT1VOVDsgKytpKQogICAgIHsKICAgICAgICAgU2FmZURlbGV0ZShtUmVu
ZGVyVGFyZ2V0W2ldKTsKICAgICB9CkBAIC00OTksNyArNDk2LDcgQEAKIHsKICAgICBBU1NFUlQo
b3V0UlQpOwogICAgIEFTU0VSVChpbmRleC5taXBJbmRleCA9PSAwKTsKLSAgICBBU1NFUlQoaW5k
ZXgubGF5ZXJJbmRleCA+PSAwICYmIGluZGV4LmxheWVySW5kZXggPCBDVUJFX0ZBQ0VfQ09VTlQp
OworICAgIEFTU0VSVChpbmRleC5sYXllckluZGV4ID49IDAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90
PihpbmRleC5sYXllckluZGV4KSA8IENVQkVfRkFDRV9DT1VOVCk7CiAKICAgICBpZiAobVJlbmRl
clRhcmdldFtpbmRleC5sYXllckluZGV4XSA9PSBOVUxMICYmIGlzUmVuZGVyVGFyZ2V0KCkpCiAg
ICAgewpAQCAtNTg2LDcgKzU4Myw3IEBACiAgICAgVGV4dHVyZVN0b3JhZ2U5X0N1YmUgKmRlc3Q5
ID0gR2V0QXM8VGV4dHVyZVN0b3JhZ2U5X0N1YmU+KGRlc3RTdG9yYWdlKTsKIAogICAgIGludCBs
ZXZlbHMgPSBnZXRMZXZlbENvdW50KCk7Ci0gICAgZm9yIChpbnQgZiA9IDA7IGYgPCBDVUJFX0ZB
Q0VfQ09VTlQ7IGYrKykKKyAgICBmb3IgKGludCBmID0gMDsgZiA8IHN0YXRpY19jYXN0PGludD4o
Q1VCRV9GQUNFX0NPVU5UKTsgZisrKQogICAgIHsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBsZXZlbHM7IGkrKykKICAgICAgICAgewpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1RleHR1cmVTdG9yYWdlOS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkOS9UZXh0dXJlU3RvcmFnZTkuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1RleHR1cmVTdG9yYWdl
OS5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBACiBjbGFzcyBUZXh0dXJlU3RvcmFn
ZTlfRUdMSW1hZ2UgZmluYWwgOiBwdWJsaWMgVGV4dHVyZVN0b3JhZ2U5CiB7CiAgIHB1YmxpYzoK
LSAgICBUZXh0dXJlU3RvcmFnZTlfRUdMSW1hZ2UoUmVuZGVyZXI5ICpyZW5kZXJlciwgRUdMSW1h
Z2VEM0QgKmltYWdlKTsKKyAgICBUZXh0dXJlU3RvcmFnZTlfRUdMSW1hZ2UoUmVuZGVyZXI5ICpy
ZW5kZXJlciwgRUdMSW1hZ2VEM0QgKmltYWdlLCBSZW5kZXJUYXJnZXQ5ICpyZW5kZXJUYXJnZXQ5
KTsKICAgICB+VGV4dHVyZVN0b3JhZ2U5X0VHTEltYWdlKCkgb3ZlcnJpZGU7CiAKICAgICBnbDo6
RXJyb3IgZ2V0U3VyZmFjZUxldmVsKEdMZW51bSB0YXJnZXQsCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvVmVydGV4QXJyYXk5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2Q5L1ZlcnRleEFycmF5OS5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvVmVydGV4QXJy
YXk5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5LDEwICsxOSw3IEBACiBjbGFzcyBWZXJ0ZXhBcnJh
eTkgOiBwdWJsaWMgVmVydGV4QXJyYXlJbXBsCiB7CiAgIHB1YmxpYzoKLSAgICBWZXJ0ZXhBcnJh
eTkoY29uc3QgZ2w6OlZlcnRleEFycmF5OjpEYXRhICZkYXRhKQotICAgICAgICA6IFZlcnRleEFy
cmF5SW1wbChkYXRhKQotICAgIHsKLSAgICB9CisgICAgVmVydGV4QXJyYXk5KGNvbnN0IGdsOjpW
ZXJ0ZXhBcnJheVN0YXRlICZkYXRhKSA6IFZlcnRleEFycmF5SW1wbChkYXRhKSB7fQogCiAgICAg
dmlydHVhbCB+VmVydGV4QXJyYXk5KCkgeyB9CiB9OwpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L2Zvcm1hdHV0aWxzOS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2Q5L2Zvcm1hdHV0aWxzOS5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9mb3JtYXR1dGls
czkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03LDEzICs3LDE3IEBACiAvLyBmb3JtYXR1dGlsczku
Y3BwOiBRdWVyaWVzIGZvciBHTCBpbWFnZSBmb3JtYXRzIGFuZCB0aGVpciB0cmFuc2xhdGlvbnMg
dG8gRDNEOQogLy8gZm9ybWF0cy4KIAotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9j
b3B5aW1hZ2UuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9mb3JtYXR1
dGlsczkuaCIKKworI2luY2x1ZGUgImltYWdlX3V0aWwvY29weWltYWdlLmgiCisjaW5jbHVkZSAi
aW1hZ2VfdXRpbC9nZW5lcmF0ZW1pcC5oIgorI2luY2x1ZGUgImltYWdlX3V0aWwvbG9hZGltYWdl
LmgiCisKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9SZW5kZXJlcjkuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS92ZXJ0ZXhjb252ZXJzaW9uLmgi
Ci0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2dlbmVyYXRlbWlwLmgiCi0jaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2xvYWRpbWFnZS5oIgogCit1c2luZyBuYW1lc3BhY2Ug
YW5nbGU7CisKIG5hbWVzcGFjZSByeAogewogCkBAIC0yMywzMyArMjcsNiBAQAogY29uc3QgRDNE
Rk9STUFUIEQzREZNVF9JTlRaID0gKChEM0RGT1JNQVQpKE1BS0VGT1VSQ0MoJ0knLCAnTicsICdU
JywgJ1onKSkpOwogY29uc3QgRDNERk9STUFUIEQzREZNVF9OVUxMID0gKChEM0RGT1JNQVQpKE1B
S0VGT1VSQ0MoJ04nLCAnVScsICdMJywgJ0wnKSkpOwogCi1zdHJ1Y3QgRDNEOUZhc3RDb3B5Rm9y
bWF0Ci17Ci0gICAgR0xlbnVtIGRlc3RGb3JtYXQ7Ci0gICAgR0xlbnVtIGRlc3RUeXBlOwotICAg
IENvbG9yQ29weUZ1bmN0aW9uIGNvcHlGdW5jdGlvbjsKLQotICAgIEQzRDlGYXN0Q29weUZvcm1h
dChHTGVudW0gZGVzdEZvcm1hdCwgR0xlbnVtIGRlc3RUeXBlLCBDb2xvckNvcHlGdW5jdGlvbiBj
b3B5RnVuY3Rpb24pCi0gICAgICAgIDogZGVzdEZvcm1hdChkZXN0Rm9ybWF0KSwgZGVzdFR5cGUo
ZGVzdFR5cGUpLCBjb3B5RnVuY3Rpb24oY29weUZ1bmN0aW9uKQotICAgIHsgfQotCi0gICAgYm9v
bCBvcGVyYXRvcjwoY29uc3QgRDNEOUZhc3RDb3B5Rm9ybWF0JiBvdGhlcikgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtZW1jbXAodGhpcywgJm90aGVyLCBzaXplb2YoRDNEOUZhc3RDb3B5
Rm9ybWF0KSkgPCAwOwotICAgIH0KLX07Ci0KLXR5cGVkZWYgc3RkOjptdWx0aW1hcDxEM0RGT1JN
QVQsIEQzRDlGYXN0Q29weUZvcm1hdD4gRDNEOUZhc3RDb3B5TWFwOwotCi1zdGF0aWMgRDNEOUZh
c3RDb3B5TWFwIEJ1aWxkRmFzdENvcHlNYXAoKQotewotICAgIEQzRDlGYXN0Q29weU1hcCBtYXA7
Ci0KLSAgICBtYXAuaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKEQzREZNVF9BOFI4RzhCOCwgRDNEOUZh
c3RDb3B5Rm9ybWF0KEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIENvcHlCR1JBOFRvUkdCQTgp
KSk7Ci0KLSAgICByZXR1cm4gbWFwOwotfQotCiAvLyBBIG1hcCB0byBkZXRlcm1pbmUgdGhlIHBp
eGVsIHNpemUgYW5kIG1pcCBnZW5lcmF0aW9uIGZ1bmN0aW9uIG9mIGEgZ2l2ZW4gRDNEIGZvcm1h
dAogdHlwZWRlZiBzdGQ6Om1hcDxEM0RGT1JNQVQsIEQzREZvcm1hdD4gRDNEOUZvcm1hdEluZm9N
YXA7CiAKQEAgLTY0LDI1ICs0MSwyNCBAQAogICAgICAgbHVtaW5hbmNlQml0cygwKSwKICAgICAg
IGRlcHRoQml0cygwKSwKICAgICAgIHN0ZW5jaWxCaXRzKDApLAotICAgICAgaW50ZXJuYWxGb3Jt
YXQoR0xfTk9ORSksCi0gICAgICBtaXBHZW5lcmF0aW9uRnVuY3Rpb24oTlVMTCksCi0gICAgICBj
b2xvclJlYWRGdW5jdGlvbihOVUxMKSwKLSAgICAgIGZhc3RDb3B5RnVuY3Rpb25zKCkKKyAgICAg
IGluZm8obnVsbHB0cikKIHsKIH0KIAotQ29sb3JDb3B5RnVuY3Rpb24gRDNERm9ybWF0OjpnZXRG
YXN0Q29weUZ1bmN0aW9uKEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlKSBjb25zdAorc3RhdGlj
IGlubGluZSB2b2lkIEluc2VydEQzREZvcm1hdEluZm8oRDNEOUZvcm1hdEluZm9NYXAgKm1hcCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzREZPUk1BVCBmb3JtYXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYml0cywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBibG9ja1dpZHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJsb2NrSGVpZ2h0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHJlZEJpdHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZ3JlZW5CaXRz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJsdWVCaXRz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGFscGhhQml0
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBsdW1CaXRz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGRlcHRoQml0
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGVuY2ls
Qml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdDo6SUQg
Zm9ybWF0SUQpCiB7Ci0gICAgRmFzdENvcHlGdW5jdGlvbk1hcDo6Y29uc3RfaXRlcmF0b3IgaXRl
ciA9IGZhc3RDb3B5RnVuY3Rpb25zLmZpbmQoc3RkOjptYWtlX3BhaXIoZm9ybWF0LCB0eXBlKSk7
Ci0gICAgcmV0dXJuIChpdGVyICE9IGZhc3RDb3B5RnVuY3Rpb25zLmVuZCgpKSA/IGl0ZXItPnNl
Y29uZCA6IE5VTEw7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBJbnNlcnREM0RGb3JtYXRJbmZv
KEQzRDlGb3JtYXRJbmZvTWFwICptYXAsIEQzREZPUk1BVCBmb3JtYXQsIEdMdWludCBiaXRzLCBH
THVpbnQgYmxvY2tXaWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBibG9ja0hlaWdodCwgR0x1aW50IHJlZEJpdHMsIEdMdWludCBncmVlbkJpdHMsIEdM
dWludCBibHVlQml0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBhbHBoYUJpdHMsIEdMdWludCBsdW1CaXRzLCBHTHVpbnQgZGVwdGhCaXRzLCBHTHVpbnQg
c3RlbmNpbEJpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gaW50ZXJuYWxGb3JtYXQsIE1pcEdlbmVyYXRpb25GdW5jdGlvbiBtaXBGdW5jLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3JSZWFkRnVuY3Rpb24gY29sb3JS
ZWFkRnVuYykKLXsKICAgICBEM0RGb3JtYXQgaW5mbzsKICAgICBpbmZvLnBpeGVsQnl0ZXMgPSBi
aXRzIC8gODsKICAgICBpbmZvLmJsb2NrV2lkdGggPSBibG9ja1dpZHRoOwpAQCAtOTQsNTMgKzcw
LDQ4IEBACiAgICAgaW5mby5sdW1pbmFuY2VCaXRzID0gbHVtQml0czsKICAgICBpbmZvLmRlcHRo
Qml0cyA9IGRlcHRoQml0czsKICAgICBpbmZvLnN0ZW5jaWxCaXRzID0gc3RlbmNpbEJpdHM7Ci0g
ICAgaW5mby5pbnRlcm5hbEZvcm1hdCA9IGludGVybmFsRm9ybWF0OwotICAgIGluZm8ubWlwR2Vu
ZXJhdGlvbkZ1bmN0aW9uID0gbWlwRnVuYzsKLSAgICBpbmZvLmNvbG9yUmVhZEZ1bmN0aW9uID0g
Y29sb3JSZWFkRnVuYzsKKyAgICBpbmZvLmluZm8gICAgICAgICAgPSAmRm9ybWF0OjpHZXQoZm9y
bWF0SUQpOwogCi0gICAgc3RhdGljIGNvbnN0IEQzRDlGYXN0Q29weU1hcCBmYXN0Q29weU1hcCA9
IEJ1aWxkRmFzdENvcHlNYXAoKTsKLSAgICBzdGQ6OnBhaXI8RDNEOUZhc3RDb3B5TWFwOjpjb25z
dF9pdGVyYXRvciwgRDNEOUZhc3RDb3B5TWFwOjpjb25zdF9pdGVyYXRvcj4gZmFzdENvcHlJdGVy
ID0gZmFzdENvcHlNYXAuZXF1YWxfcmFuZ2UoZm9ybWF0KTsKLSAgICBmb3IgKEQzRDlGYXN0Q29w
eU1hcDo6Y29uc3RfaXRlcmF0b3IgaSA9IGZhc3RDb3B5SXRlci5maXJzdDsgaSAhPSBmYXN0Q29w
eUl0ZXIuc2Vjb25kOyBpKyspCi0gICAgewotICAgICAgICBpbmZvLmZhc3RDb3B5RnVuY3Rpb25z
Lmluc2VydChzdGQ6Om1ha2VfcGFpcihzdGQ6Om1ha2VfcGFpcihpLT5zZWNvbmQuZGVzdEZvcm1h
dCwgaS0+c2Vjb25kLmRlc3RUeXBlKSwgaS0+c2Vjb25kLmNvcHlGdW5jdGlvbikpOwotICAgIH0K
LQogICAgIG1hcC0+aW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKGZvcm1hdCwgaW5mbykpOwogfQogCiBz
dGF0aWMgRDNEOUZvcm1hdEluZm9NYXAgQnVpbGREM0Q5Rm9ybWF0SW5mb01hcCgpCiB7CisgICAg
dXNpbmcgbmFtZXNwYWNlIGFuZ2xlOyAgLy8gRm9yIGltYWdlIHJlYWRpbmcgYW5kIG1pcG1hcCBn
ZW5lcmF0aW9uIGZ1bmN0aW9ucworCiAgICAgRDNEOUZvcm1hdEluZm9NYXAgbWFwOwogCi0gICAg
Ly8gICAgICAgICAgICAgICAgICAgICAgIHwgRDNERk9STUFUICAgICAgICAgICB8IFMgIHxXIHxI
IHwgUiB8IEcgfCBCIHwgQSB8IEwgfCBEIHwgUyB8IEludGVybmFsIGZvcm1hdCAgICAgICAgICAg
ICAgICAgICB8IE1pcCBnZW5lcmF0aW9uIGZ1bmN0aW9uICAgfCBDb2xvciByZWFkIGZ1bmN0aW9u
ICAgICAgICAgICAgIHwKLSAgICBJbnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9OVUxM
LCAgICAgICAgICAgIDAsIDAsIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCBHTF9OT05F
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAg
TlVMTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnREM0RGb3JtYXRJ
bmZvKCZtYXAsIEQzREZNVF9VTktOT1dOLCAgICAgICAgIDAsIDAsIDAsICAwLCAgMCwgIDAsICAw
LCAgMCwgIDAsICAwLCBHTF9OT05FLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAg
ICAgICAgICAgICAgICAgICAgICAgTlVMTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsK
KyAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgIHwg
RDNERk9STUFUICAgICAgICAgICB8IFMgIHxXIHxIIHwgUiB8IEcgfCBCIHwgQSB8IEwgfCBEIHwg
UyB8IEFOR0xFIGZvcm1hdCAgICAgICAgICAgICAgICAgICB8CisgICAgSW5zZXJ0RDNERm9ybWF0
SW5mbygmbWFwLCBEM0RGTVRfTlVMTCwgICAgICAgICAgICAwLCAwLCAwLCAgMCwgIDAsICAwLCAg
MCwgIDAsICAwLCAgMCwgRm9ybWF0OjpJRDo6Tk9ORSAgICAgICAgICAgICAgICApOworICAgIElu
c2VydEQzREZvcm1hdEluZm8oJm1hcCwgRDNERk1UX1VOS05PV04sICAgICAgICAgMCwgMCwgMCwg
IDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsIEZvcm1hdDo6SUQ6Ok5PTkUgICAgICAgICAgICAg
ICAgKTsKIAotICAgIEluc2VydEQzREZvcm1hdEluZm8oJm1hcCwgRDNERk1UX0w4LCAgICAgICAg
ICAgICAgOCwgMSwgMSwgIDAsICAwLCAgMCwgIDAsICA4LCAgMCwgIDAsIEdMX0xVTUlOQU5DRThf
RVhULCAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPEw4PiwgICAgICAgICAgICBSZWFkQ29s
b3I8TDgsIEdMZmxvYXQ+ICAgICAgICAgICApOwotICAgIEluc2VydEQzREZvcm1hdEluZm8oJm1h
cCwgRDNERk1UX0E4LCAgICAgICAgICAgICAgOCwgMSwgMSwgIDAsICAwLCAgMCwgIDgsICAwLCAg
MCwgIDAsIEdMX0FMUEhBOF9FWFQsICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPEE4
PiwgICAgICAgICAgICBSZWFkQ29sb3I8QTgsIEdMZmxvYXQ+ICAgICAgICAgICApOwotICAgIElu
c2VydEQzREZvcm1hdEluZm8oJm1hcCwgRDNERk1UX0E4TDgsICAgICAgICAgICAxNiwgMSwgMSwg
IDAsICAwLCAgMCwgIDgsICA4LCAgMCwgIDAsIEdMX0xVTUlOQU5DRThfQUxQSEE4X0VYVCwgICAg
ICAgICAgIEdlbmVyYXRlTWlwPEE4TDg+LCAgICAgICAgICBSZWFkQ29sb3I8QThMOCwgR0xmbG9h
dD4gICAgICAgICApOwotICAgIEluc2VydEQzREZvcm1hdEluZm8oJm1hcCwgRDNERk1UX0E0UjRH
NEI0LCAgICAgICAxNiwgMSwgMSwgIDQsICA0LCAgNCwgIDQsICAwLCAgMCwgIDAsIEdMX0JHUkE0
X0FOR0xFWCwgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPEE0UjRHNEI0PiwgICAgICBS
ZWFkQ29sb3I8QTRSNEc0QjQsIEdMZmxvYXQ+ICAgICApOwotICAgIEluc2VydEQzREZvcm1hdElu
Zm8oJm1hcCwgRDNERk1UX0ExUjVHNUI1LCAgICAgICAxNiwgMSwgMSwgIDUsICA1LCAgNSwgIDEs
ICAwLCAgMCwgIDAsIEdMX0JHUjVfQTFfQU5HTEVYLCAgICAgICAgICAgICAgICAgIEdlbmVyYXRl
TWlwPEExUjVHNUI1PiwgICAgICBSZWFkQ29sb3I8QTFSNUc1QjUsIEdMZmxvYXQ+ICAgICApOwot
ICAgIEluc2VydEQzREZvcm1hdEluZm8oJm1hcCwgRDNERk1UX1I1RzZCNSwgICAgICAgICAxNiwg
MSwgMSwgIDUsICA2LCAgNSwgIDAsICAwLCAgMCwgIDAsIEdMX1JHQjU2NSwgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFI1RzZCNT4sICAgICAgICBSZWFkQ29sb3I8UjVHNkI1
LCBHTGZsb2F0PiAgICAgICApOwotICAgIEluc2VydEQzREZvcm1hdEluZm8oJm1hcCwgRDNERk1U
X1g4UjhHOEI4LCAgICAgICAzMiwgMSwgMSwgIDgsICA4LCAgOCwgIDAsICAwLCAgMCwgIDAsIEdM
X0JHUkE4X0VYVCwgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPEI4RzhSOFg4Piwg
ICAgICBSZWFkQ29sb3I8QjhHOFI4WDgsIEdMZmxvYXQ+ICAgICApOwotICAgIEluc2VydEQzREZv
cm1hdEluZm8oJm1hcCwgRDNERk1UX0E4UjhHOEI4LCAgICAgICAzMiwgMSwgMSwgIDgsICA4LCAg
OCwgIDgsICAwLCAgMCwgIDAsIEdMX0JHUkE4X0VYVCwgICAgICAgICAgICAgICAgICAgICAgIEdl
bmVyYXRlTWlwPEI4RzhSOEE4PiwgICAgICBSZWFkQ29sb3I8QjhHOFI4QTgsIEdMZmxvYXQ+ICAg
ICApOwotICAgIEluc2VydEQzREZvcm1hdEluZm8oJm1hcCwgRDNERk1UX1IxNkYsICAgICAgICAg
ICAxNiwgMSwgMSwgMTYsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsIEdMX1IxNkZfRVhULCAgICAg
ICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIxNkY+LCAgICAgICAgICBSZWFkQ29sb3I8
UjE2RiwgR0xmbG9hdD4gICAgICAgICApOwotICAgIEluc2VydEQzREZvcm1hdEluZm8oJm1hcCwg
RDNERk1UX0cxNlIxNkYsICAgICAgICAzMiwgMSwgMSwgMTYsIDE2LCAgMCwgIDAsICAwLCAgMCwg
IDAsIEdMX1JHMTZGX0VYVCwgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIxNkcx
NkY+LCAgICAgICBSZWFkQ29sb3I8UjE2RzE2RiwgR0xmbG9hdD4gICAgICApOwotICAgIEluc2Vy
dEQzREZvcm1hdEluZm8oJm1hcCwgRDNERk1UX0ExNkIxNkcxNlIxNkYsICA2NCwgMSwgMSwgMTYs
IDE2LCAxNiwgMTYsICAwLCAgMCwgIDAsIEdMX1JHQkExNkZfRVhULCAgICAgICAgICAgICAgICAg
ICAgIEdlbmVyYXRlTWlwPFIxNkcxNkIxNkExNkY+LCBSZWFkQ29sb3I8UjE2RzE2QjE2QTE2Riwg
R0xmbG9hdD4pOwotICAgIEluc2VydEQzREZvcm1hdEluZm8oJm1hcCwgRDNERk1UX1IzMkYsICAg
ICAgICAgICAzMiwgMSwgMSwgMzIsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsIEdMX1IzMkZfRVhU
LCAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIzMkY+LCAgICAgICAgICBSZWFk
Q29sb3I8UjMyRiwgR0xmbG9hdD4gICAgICAgICApOwotICAgIEluc2VydEQzREZvcm1hdEluZm8o
Jm1hcCwgRDNERk1UX0czMlIzMkYsICAgICAgICA2NCwgMSwgMSwgMzIsIDMyLCAgMCwgIDAsICAw
LCAgMCwgIDAsIEdMX1JHMzJGX0VYVCwgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlw
PFIzMkczMkY+LCAgICAgICBSZWFkQ29sb3I8UjMyRzMyRiwgR0xmbG9hdD4gICAgICApOwotICAg
IEluc2VydEQzREZvcm1hdEluZm8oJm1hcCwgRDNERk1UX0EzMkIzMkczMlIzMkYsIDEyOCwgMSwg
MSwgMzIsIDMyLCAzMiwgMzIsICAwLCAgMCwgIDAsIEdMX1JHQkEzMkZfRVhULCAgICAgICAgICAg
ICAgICAgICAgIEdlbmVyYXRlTWlwPFIzMkczMkIzMkEzMkY+LCBSZWFkQ29sb3I8UjMyRzMyQjMy
QTMyRiwgR0xmbG9hdD4pOworICAgIEluc2VydEQzREZvcm1hdEluZm8oJm1hcCwgRDNERk1UX0w4
LCAgICAgICAgICAgICAgOCwgMSwgMSwgIDAsICAwLCAgMCwgIDAsICA4LCAgMCwgIDAsIEZvcm1h
dDo6SUQ6Okw4X1VOT1JNICAgICAgICAgICAgKTsKKyAgICBJbnNlcnREM0RGb3JtYXRJbmZvKCZt
YXAsIEQzREZNVF9BOCwgICAgICAgICAgICAgIDgsIDEsIDEsICAwLCAgMCwgIDAsICA4LCAgMCwg
IDAsICAwLCBGb3JtYXQ6OklEOjpBOF9VTk9STSAgICAgICAgICAgICk7CisgICAgSW5zZXJ0RDNE
Rm9ybWF0SW5mbygmbWFwLCBEM0RGTVRfQThMOCwgICAgICAgICAgIDE2LCAxLCAxLCAgMCwgIDAs
ICAwLCAgOCwgIDgsICAwLCAgMCwgRm9ybWF0OjpJRDo6TDhBOF9VTk9STSAgICAgICAgICApOwor
ICAgIEluc2VydEQzREZvcm1hdEluZm8oJm1hcCwgRDNERk1UX0E0UjRHNEI0LCAgICAgICAxNiwg
MSwgMSwgIDQsICA0LCAgNCwgIDQsICAwLCAgMCwgIDAsIEZvcm1hdDo6SUQ6OkI0RzRSNEE0X1VO
T1JNICAgICAgKTsKKyAgICBJbnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9BMVI1RzVC
NSwgICAgICAgMTYsIDEsIDEsICA1LCAgNSwgIDUsICAxLCAgMCwgIDAsICAwLCBGb3JtYXQ6OklE
OjpCNUc1UjVBMV9VTk9STSAgICAgICk7CisgICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBE
M0RGTVRfUjVHNkI1LCAgICAgICAgIDE2LCAxLCAxLCAgNSwgIDYsICA1LCAgMCwgIDAsICAwLCAg
MCwgRm9ybWF0OjpJRDo6UjVHNkI1X1VOT1JNICAgICAgICApOworICAgIEluc2VydEQzREZvcm1h
dEluZm8oJm1hcCwgRDNERk1UX1g4UjhHOEI4LCAgICAgICAzMiwgMSwgMSwgIDgsICA4LCAgOCwg
IDAsICAwLCAgMCwgIDAsIEZvcm1hdDo6SUQ6OkI4RzhSOFg4X1VOT1JNICAgICAgKTsKKyAgICBJ
bnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9BOFI4RzhCOCwgICAgICAgMzIsIDEsIDEs
ICA4LCAgOCwgIDgsICA4LCAgMCwgIDAsICAwLCBGb3JtYXQ6OklEOjpCOEc4UjhBOF9VTk9STSAg
ICAgICk7CisgICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RGTVRfUjE2RiwgICAgICAg
ICAgIDE2LCAxLCAxLCAxNiwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgRm9ybWF0OjpJRDo6UjE2
X0ZMT0FUICAgICAgICAgICApOworICAgIEluc2VydEQzREZvcm1hdEluZm8oJm1hcCwgRDNERk1U
X0cxNlIxNkYsICAgICAgICAzMiwgMSwgMSwgMTYsIDE2LCAgMCwgIDAsICAwLCAgMCwgIDAsIEZv
cm1hdDo6SUQ6OlIxNkcxNl9GTE9BVCAgICAgICAgKTsKKyAgICBJbnNlcnREM0RGb3JtYXRJbmZv
KCZtYXAsIEQzREZNVF9BMTZCMTZHMTZSMTZGLCAgNjQsIDEsIDEsIDE2LCAxNiwgMTYsIDE2LCAg
MCwgIDAsICAwLCBGb3JtYXQ6OklEOjpSMTZHMTZCMTZBMTZfRkxPQVQgICk7CisgICAgSW5zZXJ0
RDNERm9ybWF0SW5mbygmbWFwLCBEM0RGTVRfUjMyRiwgICAgICAgICAgIDMyLCAxLCAxLCAzMiwg
IDAsICAwLCAgMCwgIDAsICAwLCAgMCwgRm9ybWF0OjpJRDo6UjMyX0ZMT0FUICAgICAgICAgICAp
OworICAgIEluc2VydEQzREZvcm1hdEluZm8oJm1hcCwgRDNERk1UX0czMlIzMkYsICAgICAgICA2
NCwgMSwgMSwgMzIsIDMyLCAgMCwgIDAsICAwLCAgMCwgIDAsIEZvcm1hdDo6SUQ6OlIzMkczMl9G
TE9BVCAgICAgICAgKTsKKyAgICBJbnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9BMzJC
MzJHMzJSMzJGLCAxMjgsIDEsIDEsIDMyLCAzMiwgMzIsIDMyLCAgMCwgIDAsICAwLCBGb3JtYXQ6
OklEOjpSMzJHMzJCMzJBMzJfRkxPQVQgICk7CiAKLSAgICBJbnNlcnREM0RGb3JtYXRJbmZvKCZt
YXAsIEQzREZNVF9EMTYsICAgICAgICAgICAgMTYsIDEsIDEsICAwLCAgMCwgIDAsICAwLCAgMCwg
MTYsICAwLCBHTF9ERVBUSF9DT01QT05FTlQxNiwgICAgICAgICAgICAgICBOVUxMLCAgICAgICAg
ICAgICAgICAgICAgICAgTlVMTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJ
bnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9EMjRTOCwgICAgICAgICAgMzIsIDEsIDEs
ICAwLCAgMCwgIDAsICAwLCAgMCwgMjQsICA4LCBHTF9ERVBUSDI0X1NURU5DSUw4X09FUywgICAg
ICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgTlVMTCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKTsKLSAgICBJbnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9EMjRY
OCwgICAgICAgICAgMzIsIDEsIDEsICAwLCAgMCwgIDAsICAwLCAgMCwgMjQsICAwLCBHTF9ERVBU
SF9DT01QT05FTlQxNiwgICAgICAgICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAg
TlVMTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnREM0RGb3JtYXRJ
bmZvKCZtYXAsIEQzREZNVF9EMzIsICAgICAgICAgICAgMzIsIDEsIDEsICAwLCAgMCwgIDAsICAw
LCAgMCwgMzIsICAwLCBHTF9ERVBUSF9DT01QT05FTlQzMl9PRVMsICAgICAgICAgICBOVUxMLCAg
ICAgICAgICAgICAgICAgICAgICAgTlVMTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsK
KyAgICBJbnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9EMTYsICAgICAgICAgICAgMTYs
IDEsIDEsICAwLCAgMCwgIDAsICAwLCAgMCwgMTYsICAwLCBGb3JtYXQ6OklEOjpEMTZfVU5PUk0g
ICAgICAgICAgICk7CisgICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RGTVRfRDI0Uzgs
ICAgICAgICAgIDMyLCAxLCAxLCAgMCwgIDAsICAwLCAgMCwgIDAsIDI0LCAgOCwgRm9ybWF0OjpJ
RDo6RDI0X1VOT1JNX1M4X1VJTlQgICApOworICAgIEluc2VydEQzREZvcm1hdEluZm8oJm1hcCwg
RDNERk1UX0QyNFg4LCAgICAgICAgICAzMiwgMSwgMSwgIDAsICAwLCAgMCwgIDAsICAwLCAyNCwg
IDAsIEZvcm1hdDo6SUQ6OkQxNl9VTk9STSAgICAgICAgICAgKTsKKyAgICBJbnNlcnREM0RGb3Jt
YXRJbmZvKCZtYXAsIEQzREZNVF9EMzIsICAgICAgICAgICAgMzIsIDEsIDEsICAwLCAgMCwgIDAs
ICAwLCAgMCwgMzIsICAwLCBGb3JtYXQ6OklEOjpEMzJfVU5PUk0gICAgICAgICAgICk7CiAKLSAg
ICBJbnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9JTlRaLCAgICAgICAgICAgMzIsIDEs
IDEsICAwLCAgMCwgIDAsICAwLCAgMCwgMjQsICA4LCBHTF9ERVBUSDI0X1NURU5DSUw4X09FUywg
ICAgICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgTlVMTCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9J
TlRaLCAgICAgICAgICAgMzIsIDEsIDEsICAwLCAgMCwgIDAsICAwLCAgMCwgMjQsICA4LCBGb3Jt
YXQ6OklEOjpEMjRfVU5PUk1fUzhfVUlOVCAgICk7CiAKLSAgICBJbnNlcnREM0RGb3JtYXRJbmZv
KCZtYXAsIEQzREZNVF9EWFQxLCAgICAgICAgICAgNjQsIDQsIDQsICAwLCAgMCwgIDAsICAwLCAg
MCwgIDAsICAwLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgICBOVUxMLCAgICAg
ICAgICAgICAgICAgICAgICAgTlVMTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAg
ICBJbnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9EWFQzLCAgICAgICAgICAxMjgsIDQs
IDQsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19E
WFQzX0FOR0xFLCBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgTlVMTCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9E
WFQ1LCAgICAgICAgICAxMjgsIDQsIDQsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCBHTF9D
T01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFLCBOVUxMLCAgICAgICAgICAgICAgICAgICAg
ICAgTlVMTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnREM0RGb3Jt
YXRJbmZvKCZtYXAsIEQzREZNVF9EWFQxLCAgICAgICAgICAgNjQsIDQsIDQsICAwLCAgMCwgIDAs
ICAwLCAgMCwgIDAsICAwLCBGb3JtYXQ6OklEOjpCQzFfUkdCQV9VTk9STV9CTE9DSyk7CisgICAg
SW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RGTVRfRFhUMywgICAgICAgICAgMTI4LCA0LCA0
LCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgRm9ybWF0OjpJRDo6QkMyX1JHQkFfVU5PUk1f
QkxPQ0spOworICAgIEluc2VydEQzREZvcm1hdEluZm8oJm1hcCwgRDNERk1UX0RYVDUsICAgICAg
ICAgIDEyOCwgNCwgNCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsIEZvcm1hdDo6SUQ6OkJD
M19SR0JBX1VOT1JNX0JMT0NLKTsKKyAgICAvLyBjbGFuZy1mb3JtYXQgb24KIAogICAgIHJldHVy
biBtYXA7CiB9CkBAIC0xNjcsNiArMTM4LDggQEAKIAogc3RhdGljIEludGVybmFsRm9ybWF0SW5p
dGlhbHplck1hcCBCdWlsZEludGVybmFsRm9ybWF0SW5pdGlhbHplck1hcCgpCiB7CisgICAgdXNp
bmcgbmFtZXNwYWNlIGFuZ2xlOyAgLy8gRm9yIGltYWdlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9u
cworCiAgICAgSW50ZXJuYWxGb3JtYXRJbml0aWFsemVyTWFwIG1hcDsKIAogICAgIG1hcC5pbnNl
cnQoSW50ZXJuYWxGb3JtYXRJbml0aWFsemVyUGFpcihHTF9SR0IxNkYsIEluaXRpYWxpemU0Q29t
cG9uZW50RGF0YTxHTGhhbGYsICAgMHgwMDAwLCAgICAgMHgwMDAwLCAgICAgMHgwMDAwLCAgICAg
Z2w6OkZsb2F0MTZPbmU+KSk7CkBAIC0xNzUsMjggKzE0OCw2IEBACiAgICAgcmV0dXJuIG1hcDsK
IH0KIAotLy8gRWFjaCBHTCBpbnRlcm5hbCBmb3JtYXQgY29ycmVzcG9uZHMgdG8gb25lIEQzRCBm
b3JtYXQgYW5kIGRhdGEgbG9hZGluZyBmdW5jdGlvbi4KLS8vIER1ZSB0byBub3QgYWxsIGZvcm1h
dHMgYmVpbmcgYXZhaWxhYmxlIGFsbCB0aGUgdGltZSwgc29tZSBvZiB0aGUgZnVuY3Rpb24vZm9y
bWF0IHR5cGVzIGFyZSB3cmFwcGVkCi0vLyBpbiB0ZW1wbGF0ZXMgdGhhdCBwZXJmb3JtIGZvcm1h
dCBzdXBwb3J0IHF1ZXJpZXMgb24gYSBSZW5kZXJlcjkgb2JqZWN0IHdoaWNoIGlzIHN1cHBsaWVk
Ci0vLyB3aGVuIHJlcXVlc3RpbmcgdGhlIGZ1bmN0aW9uIG9yIGZvcm1hdC4KLQotdHlwZWRlZiBi
b29sKCpGYWxsYmFja1ByZWRpY2F0ZUZ1bmN0aW9uKSgpOwotCi10ZW1wbGF0ZSA8RmFsbGJhY2tQ
cmVkaWNhdGVGdW5jdGlvbiBwcmVkLCBMb2FkSW1hZ2VGdW5jdGlvbiBwcmVmZXJlZCwgTG9hZElt
YWdlRnVuY3Rpb24gZmFsbGJhY2s+Ci1zdGF0aWMgdm9pZCBGYWxsYmFja0xvYWQoc2l6ZV90IHdp
ZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5w
dXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwg
c2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKLXsKLSAgICBp
ZiAocHJlZCgpKQotICAgIHsKLSAgICAgICAgcHJlZmVyZWQod2lkdGgsIGhlaWdodCwgZGVwdGgs
IGlucHV0LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gsIG91dHB1dCwgb3V0cHV0Um93
UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAg
ICBmYWxsYmFjayh3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgaW5wdXQsIGlucHV0Um93UGl0Y2gsIGlu
cHV0RGVwdGhQaXRjaCwgb3V0cHV0LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7
Ci0gICAgfQotfQotCiBzdGF0aWMgdm9pZCBVbnJlYWNoYWJsZUxvYWQoc2l6ZV90IHdpZHRoLCBz
aXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXRE
ZXB0aFBpdGNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwg
c2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKQEAgLTIzMyw4
ICsxODQsMTEgQEAKIAogc3RhdGljIEQzRDlGb3JtYXRNYXAgQnVpbGREM0Q5Rm9ybWF0TWFwKCkK
IHsKKyAgICB1c2luZyBuYW1lc3BhY2UgYW5nbGU7ICAvLyBGb3IgaW1hZ2UgbG9hZGluZyBmdW5j
dGlvbnMKKwogICAgIEQzRDlGb3JtYXRNYXAgbWFwOwogCisgICAgLy8gY2xhbmctZm9ybWF0IG9m
ZgogICAgIC8vICAgICAgICAgICAgICAgICAgICAgICB8IEludGVybmFsIGZvcm1hdCAgICAgICAg
ICAgICAgICAgICAgIHwgVGV4dHVyZSBmb3JtYXQgICAgICB8IFJlbmRlciBmb3JtYXQgICAgICAg
IHwgTG9hZCBmdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICBJbnNlcnRE
M0Q5Rm9ybWF0SW5mbygmbWFwLCBHTF9OT05FLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RDNERk1UX05VTEwsICAgICAgICAgIEQzREZNVF9OVUxMLCAgICAgICAgICAgVW5yZWFjaGFibGVM
b2FkICAgICAgICAgICAgICAgICAgICAgICAgICApOwogCkBAIC0yNjgsMTEgKzIyMiwxMSBAQAog
ICAgIEluc2VydEQzRDlGb3JtYXRJbmZvKCZtYXAsIEdMX0xVTUlOQU5DRTE2Rl9FWFQsICAgICAg
ICAgICAgICAgICBEM0RGTVRfQTE2QjE2RzE2UjE2RiwgRDNERk1UX1VOS05PV04sICAgICAgICBM
b2FkTDE2RlRvUkdCQTE2RiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgSW5zZXJ0RDNE
OUZvcm1hdEluZm8oJm1hcCwgR0xfTFVNSU5BTkNFX0FMUEhBMTZGX0VYVCwgICAgICAgICAgIEQz
REZNVF9BMTZCMTZHMTZSMTZGLCBEM0RGTVRfVU5LTk9XTiwgICAgICAgIExvYWRMQTE2RlRvUkdC
QTE2RiAgICAgICAgICAgICAgICAgICAgICAgKTsKIAotICAgIEluc2VydEQzRDlGb3JtYXRJbmZv
KCZtYXAsIEdMX0FMUEhBOF9FWFQsICAgICAgICAgICAgICAgICAgICAgICBEM0RGTVRfQThSOEc4
QjgsICAgICAgRDNERk1UX0E4UjhHOEI4LCAgICAgICBGYWxsYmFja0xvYWQ8Z2w6OnN1cHBvcnRz
U1NFMiwgTG9hZEE4VG9CR1JBOF9TU0UyLCBMb2FkQThUb0JHUkE4Pik7CisgICAgSW5zZXJ0RDNE
OUZvcm1hdEluZm8oJm1hcCwgR0xfQUxQSEE4X0VYVCwgICAgICAgICAgICAgICAgICAgICAgIEQz
REZNVF9BOFI4RzhCOCwgICAgICBEM0RGTVRfQThSOEc4QjgsICAgICAgIExvYWRBOFRvQkdSQTgg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKIAogICAgIEluc2VydEQzRDlGb3JtYXRJbmZv
KCZtYXAsIEdMX1JHQjhfT0VTLCAgICAgICAgICAgICAgICAgICAgICAgICBEM0RGTVRfWDhSOEc4
QjgsICAgICAgRDNERk1UX1g4UjhHOEI4LCAgICAgICBMb2FkUkdCOFRvQkdSWDggICAgICAgICAg
ICAgICAgICAgICAgICAgICApOwogICAgIEluc2VydEQzRDlGb3JtYXRJbmZvKCZtYXAsIEdMX1JH
QjU2NSwgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0RGTVRfWDhSOEc4QjgsICAgICAgRDNE
Rk1UX1g4UjhHOEI4LCAgICAgICBMb2FkUjVHNkI1VG9CR1JBOCAgICAgICAgICAgICAgICAgICAg
ICAgICApOwotICAgIEluc2VydEQzRDlGb3JtYXRJbmZvKCZtYXAsIEdMX1JHQkE4X09FUywgICAg
ICAgICAgICAgICAgICAgICAgICBEM0RGTVRfQThSOEc4QjgsICAgICAgRDNERk1UX0E4UjhHOEI4
LCAgICAgICBGYWxsYmFja0xvYWQ8Z2w6OnN1cHBvcnRzU1NFMiwgTG9hZFJHQkE4VG9CR1JBOF9T
U0UyLCBMb2FkUkdCQThUb0JHUkE4Pik7CisgICAgSW5zZXJ0RDNEOUZvcm1hdEluZm8oJm1hcCwg
R0xfUkdCQThfT0VTLCAgICAgICAgICAgICAgICAgICAgICAgIEQzREZNVF9BOFI4RzhCOCwgICAg
ICBEM0RGTVRfQThSOEc4QjgsICAgICAgIExvYWRSR0JBOFRvQkdSQTggICAgICAgICAgICAgICAg
ICAgICAgICAgICk7CiAgICAgSW5zZXJ0RDNEOUZvcm1hdEluZm8oJm1hcCwgR0xfUkdCQTQsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEQzREZNVF9BOFI4RzhCOCwgICAgICBEM0RGTVRfQThS
OEc4QjgsICAgICAgIExvYWRSR0JBNFRvQkdSQTggICAgICAgICAgICAgICAgICAgICAgICAgICk7
CiAgICAgSW5zZXJ0RDNEOUZvcm1hdEluZm8oJm1hcCwgR0xfUkdCNV9BMSwgICAgICAgICAgICAg
ICAgICAgICAgICAgIEQzREZNVF9BOFI4RzhCOCwgICAgICBEM0RGTVRfQThSOEc4QjgsICAgICAg
IExvYWRSR0I1QTFUb0JHUkE4ICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgSW5zZXJ0
RDNEOUZvcm1hdEluZm8oJm1hcCwgR0xfUjhfRVhULCAgICAgICAgICAgICAgICAgICAgICAgICAg
IEQzREZNVF9YOFI4RzhCOCwgICAgICBEM0RGTVRfWDhSOEc4QjgsICAgICAgIExvYWRSOFRvQkdS
WDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CkBAIC0yOTEsNiArMjQ1LDcgQEAKICAg
ICAvLyB0aGVuIGNoYW5naW5nIHRoZSBmb3JtYXQgYW5kIGxvYWRpbmcgZnVuY3Rpb24gYXBwcm9w
cmlhdGVseS4KICAgICBJbnNlcnREM0Q5Rm9ybWF0SW5mbygmbWFwLCBHTF9MVU1JTkFOQ0U4X0VY
VCwgICAgICAgICAgICAgICAgICAgRDNERk1UX0w4LCAgICAgICAgICAgIEQzREZNVF9VTktOT1dO
LCAgICAgICAgTG9hZFRvTmF0aXZlPEdMdWJ5dGUsIDE+ICAgICAgICAgICAgICAgICAgKTsKICAg
ICBJbnNlcnREM0Q5Rm9ybWF0SW5mbygmbWFwLCBHTF9MVU1JTkFOQ0U4X0FMUEhBOF9FWFQsICAg
ICAgICAgICAgRDNERk1UX0E4TDgsICAgICAgICAgIEQzREZNVF9VTktOT1dOLCAgICAgICAgTG9h
ZFRvTmF0aXZlPEdMdWJ5dGUsIDI+ICAgICAgICAgICAgICAgICAgKTsKKyAgICAvLyBjbGFuZy1m
b3JtYXQgb24KIAogICAgIHJldHVybiBtYXA7CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvZm9ybWF0dXRpbHM5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2Q5L2Zvcm1hdHV0aWxzOS5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvZm9ybWF0dXRpbHM5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE1LDYgKzE1LDggQEAKICNpbmNsdWRlICJjb21tb24vcGxhdGZv
cm0uaCIKICNpbmNsdWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgiCiAjaW5jbHVkZSAibGliQU5H
TEUvZm9ybWF0dXRpbHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9Gb3JtYXQuaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9yZW5kZXJlcl91dGlscy5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9mb3JtYXR1dGlsc0QzRC5oIgogCiBuYW1lc3BhY2UgcngK
QEAgLTI1LDggKzI3LDYgQEAKIG5hbWVzcGFjZSBkM2Q5CiB7CiAKLXR5cGVkZWYgc3RkOjptYXA8
c3RkOjpwYWlyPEdMZW51bSwgR0xlbnVtPiwgQ29sb3JDb3B5RnVuY3Rpb24+IEZhc3RDb3B5RnVu
Y3Rpb25NYXA7Ci0KIHN0cnVjdCBEM0RGb3JtYXQKIHsKICAgICBEM0RGb3JtYXQoKTsKQEAgLTQ0
LDE0ICs0NCw5IEBACiAgICAgR0x1aW50IGRlcHRoQml0czsKICAgICBHTHVpbnQgc3RlbmNpbEJp
dHM7CiAKLSAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQ7CisgICAgY29uc3QgYW5nbGU6OkZvcm1h
dCAqaW5mbzsKK307CiAKLSAgICBNaXBHZW5lcmF0aW9uRnVuY3Rpb24gbWlwR2VuZXJhdGlvbkZ1
bmN0aW9uOwotICAgIENvbG9yUmVhZEZ1bmN0aW9uIGNvbG9yUmVhZEZ1bmN0aW9uOwotCi0gICAg
RmFzdENvcHlGdW5jdGlvbk1hcCBmYXN0Q29weUZ1bmN0aW9uczsKLSAgICBDb2xvckNvcHlGdW5j
dGlvbiBnZXRGYXN0Q29weUZ1bmN0aW9uKEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlKSBjb25z
dDsKLX07CiBjb25zdCBEM0RGb3JtYXQgJkdldEQzREZvcm1hdEluZm8oRDNERk9STUFUIGZvcm1h
dCk7CiAKIHN0cnVjdCBWZXJ0ZXhGb3JtYXQKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9yZW5kZXJlcjlfdXRpbHMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkOS9yZW5kZXJlcjlfdXRpbHMuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvcmVuZGVyZXI5
X3V0aWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY0LDYgKzI2NCwyMSBAQAogICAgIH0KIH0K
IAorRDNEUVVFUllUWVBFIENvbnZlcnRRdWVyeVR5cGUoR0xlbnVtIHF1ZXJ5VHlwZSkKK3sKKyAg
ICBzd2l0Y2ggKHF1ZXJ5VHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfQU5ZX1NBTVBMRVNf
UEFTU0VEX0VYVDoKKyAgICAgICAgY2FzZSBHTF9BTllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFU
SVZFX0VYVDoKKyAgICAgICAgICAgIHJldHVybiBEM0RRVUVSWVRZUEVfT0NDTFVTSU9OOworICAg
ICAgICBjYXNlIEdMX0NPTU1BTkRTX0NPTVBMRVRFRF9DSFJPTUlVTToKKyAgICAgICAgICAgIHJl
dHVybiBEM0RRVUVSWVRZUEVfRVZFTlQ7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEQzRFFVRVJZVFlQ
RT4oMCk7CisgICAgfQorfQorCiBEM0RNVUxUSVNBTVBMRV9UWVBFIEdldE11bHRpc2FtcGxlVHlw
ZShHTHVpbnQgc2FtcGxlcykKIHsKICAgICByZXR1cm4gKHNhbXBsZXMgPiAxKSA/IHN0YXRpY19j
YXN0PEQzRE1VTFRJU0FNUExFX1RZUEU+KHNhbXBsZXMpIDogRDNETVVMVElTQU1QTEVfTk9ORTsK
QEAgLTI5MSw3ICszMDYsNyBAQAogCiBib29sIElzRm9ybWF0Q2hhbm5lbEVxdWl2YWxlbnQoRDNE
Rk9STUFUIGQzZGZvcm1hdCwgR0xlbnVtIGZvcm1hdCkKIHsKLSAgICBHTGVudW0gaW50ZXJuYWxG
b3JtYXQgPSBkM2Q5OjpHZXREM0RGb3JtYXRJbmZvKGQzZGZvcm1hdCkuaW50ZXJuYWxGb3JtYXQ7
CisgICAgR0xlbnVtIGludGVybmFsRm9ybWF0ICA9IGQzZDk6OkdldEQzREZvcm1hdEluZm8oZDNk
Zm9ybWF0KS5pbmZvLT5nbEludGVybmFsRm9ybWF0OwogICAgIEdMZW51bSBjb252ZXJ0ZWRGb3Jt
YXQgPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGludGVybmFsRm9ybWF0KS5mb3JtYXQ7CiAg
ICAgcmV0dXJuIGNvbnZlcnRlZEZvcm1hdCA9PSBmb3JtYXQ7CiB9CkBAIC01NzUsMTAgKzU5MCwx
MCBAQAogICAgIGV4dGVuc2lvbnMtPmNvbG9yQnVmZmVyRmxvYXQgPSBmYWxzZTsKICAgICBleHRl
bnNpb25zLT5kZWJ1Z01hcmtlciA9IHRydWU7CiAgICAgZXh0ZW5zaW9ucy0+ZWdsSW1hZ2UgICAg
ICAgICAgICAgICA9IHRydWU7CisgICAgZXh0ZW5zaW9ucy0+ZWdsSW1hZ2VFeHRlcm5hbCAgICAg
ICA9IHRydWU7CiAgICAgZXh0ZW5zaW9ucy0+dW5wYWNrU3ViaW1hZ2UgICAgICAgICA9IHRydWU7
CiAgICAgZXh0ZW5zaW9ucy0+cGFja1N1YmltYWdlICAgICAgICAgICA9IHRydWU7Ci0gICAgZXh0
ZW5zaW9ucy0+dmVydGV4QXJyYXlPYmplY3QgICAgICA9IHRydWU7Ci0gICAgZXh0ZW5zaW9ucy0+
bm9FcnJvciAgICAgICAgICAgICAgICA9IHRydWU7CisgICAgZXh0ZW5zaW9ucy0+c3luY1F1ZXJ5
ICAgICAgICAgICAgICA9IGV4dGVuc2lvbnMtPmZlbmNlOwogCiAgICAgLy8gRDNEOSBoYXMgbm8g
Y29uY2VwdCBvZiBzZXBhcmF0ZSBtYXNrcyBhbmQgcmVmcyBmb3IgZnJvbnQgYW5kIGJhY2sgZmFj
ZXMgaW4gdGhlIGRlcHRoIHN0ZW5jaWwKICAgICAvLyBzdGF0ZS4KQEAgLTYzMSw5ICs2NDYsMTMg
QEAKICAgICB3b3JrYXJvdW5kcy5tcnRQZXJmV29ya2Fyb3VuZCA9IHRydWU7CiAgICAgd29ya2Fy
b3VuZHMuc2V0RGF0YUZhc3RlclRoYW5JbWFnZVVwbG9hZCA9IGZhbHNlOwogICAgIHdvcmthcm91
bmRzLnVzZUluc3RhbmNlZFBvaW50U3ByaXRlRW11bGF0aW9uID0gZmFsc2U7CisKKyAgICAvLyBU
T0RPKGptYWRpbGwpOiBEaXNhYmxlIHdvcmthcm91bmQgd2hlbiB3ZSBoYXZlIGEgZml4ZWQgY29t
cGlsZXIgRExMLgorICAgIHdvcmthcm91bmRzLmV4cGFuZEludGVnZXJQb3dFeHByZXNzaW9ucyA9
IHRydWU7CisKICAgICByZXR1cm4gd29ya2Fyb3VuZHM7CiB9CiAKLX0KK30gIC8vIG5hbWVzcGFj
ZSBkM2Q5CiAKLX0KK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3JlbmRlcmVyOV91dGlscy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkOS9yZW5kZXJlcjlfdXRpbHMuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3JlbmRlcmVy
OV91dGlscy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw3ICsxMCw3IEBACiAjaWZuZGVmIExJQkFO
R0xFX1JFTkRFUkVSX0QzRF9EM0Q5X1JFTkRFUkVSOVVUSUxTX0hfCiAjZGVmaW5lIExJQkFOR0xF
X1JFTkRFUkVSX0QzRF9EM0Q5X1JFTkRFUkVSOVVUSUxTX0hfCiAKLSNpbmNsdWRlICJsaWJBTkdM
RS9hbmdsZXR5cGVzLmgiCisjaW5jbHVkZSAiY29tbW9uL0NvbG9yLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvQ2Fwcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0Vycm9yLmgiCiAKQEAgLTM5LDYgKzM5
LDcgQEAKIEQzRFRFWFRVUkVGSUxURVJUWVBFIENvbnZlcnRNYWdGaWx0ZXIoR0xlbnVtIG1hZ0Zp
bHRlciwgZmxvYXQgbWF4QW5pc290cm9weSk7CiB2b2lkIENvbnZlcnRNaW5GaWx0ZXIoR0xlbnVt
IG1pbkZpbHRlciwgRDNEVEVYVFVSRUZJTFRFUlRZUEUgKmQzZE1pbkZpbHRlciwgRDNEVEVYVFVS
RUZJTFRFUlRZUEUgKmQzZE1pcEZpbHRlciwKICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCAq
ZDNkTG9kQmlhcywgZmxvYXQgbWF4QW5pc290cm9weSwgc2l6ZV90IGJhc2VMZXZlbCk7CitEM0RR
VUVSWVRZUEUgQ29udmVydFF1ZXJ5VHlwZShHTGVudW0gcXVlcnlUeXBlKTsKIAogRDNETVVMVElT
QU1QTEVfVFlQRSBHZXRNdWx0aXNhbXBsZVR5cGUoR0x1aW50IHNhbXBsZXMpOwogCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Zvcm1hdHV0
aWxzRDNELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2Zvcm1hdHV0aWxzRDNELmNwcAkocmV2aXNpb24gMjA4MDIxKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9mb3Jt
YXR1dGlsc0QzRC5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNDcgKzAsMCBAQAotLy8KLS8vIENv
cHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
LS8vCi0KLS8vIGZvcm1hdHV0aWxzOS5jcHA6IFF1ZXJpZXMgZm9yIEdMIGltYWdlIGZvcm1hdHMg
YW5kIHRoZWlyIHRyYW5zbGF0aW9ucyB0byBEM0QKLS8vIGZvcm1hdHMuCi0KLSNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9kM2QvZm9ybWF0dXRpbHNEM0QuaCIKLQotI2luY2x1ZGUgPG1hcD4K
LQotI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2QzZC9pbWFnZWZvcm1hdHMuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvY29w
eWltYWdlLmgiCi0KLW5hbWVzcGFjZSByeAotewotCi10eXBlZGVmIHN0ZDo6cGFpcjxHTGVudW0s
IEdMZW51bT4gRm9ybWF0VHlwZVBhaXI7Ci10eXBlZGVmIHN0ZDo6cGFpcjxGb3JtYXRUeXBlUGFp
ciwgQ29sb3JXcml0ZUZ1bmN0aW9uPiBGb3JtYXRXcml0ZUZ1bmN0aW9uUGFpcjsKLXR5cGVkZWYg
c3RkOjptYXA8Rm9ybWF0VHlwZVBhaXIsIENvbG9yV3JpdGVGdW5jdGlvbj4gRm9ybWF0V3JpdGVG
dW5jdGlvbk1hcDsKLQotc3RhdGljIGlubGluZSB2b2lkIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rp
b25NYXBwaW5nKEZvcm1hdFdyaXRlRnVuY3Rpb25NYXAgKm1hcCwgR0xlbnVtIGZvcm1hdCwgR0xl
bnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ29sb3JXcml0ZUZ1bmN0aW9uIHdyaXRlRnVuYykKLXsKLSAgICBtYXAtPmluc2VydChG
b3JtYXRXcml0ZUZ1bmN0aW9uUGFpcihGb3JtYXRUeXBlUGFpcihmb3JtYXQsIHR5cGUpLCB3cml0
ZUZ1bmMpKTsKLX0KLQotc3RhdGljIEZvcm1hdFdyaXRlRnVuY3Rpb25NYXAgQnVpbGRGb3JtYXRX
cml0ZUZ1bmN0aW9uTWFwKCkKLXsKLSAgICBGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwIG1hcDsKLQot
ICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBGb3JtYXQgICAgICAg
ICAgICAgICB8IFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29sb3Igd3JpdGUg
ZnVuY3Rpb24gICAgICAgICAgICAgfAotICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBw
aW5nKCZtYXAsIEdMX1JHQkEsICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgICAgICAg
ICAgICAgICAgICBXcml0ZUNvbG9yPFI4RzhCOEE4LCBHTGZsb2F0PiAgICAgKTsKLSAgICBJbnNl
cnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SR0JBLCAgICAgICAgICAgICAg
IEdMX0JZVEUsICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSOEc4QjhBOFMs
IEdMZmxvYXQ+ICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1h
cCwgR0xfUkdCQSwgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80LCAgICAg
ICAgIFdyaXRlQ29sb3I8UjRHNEI0QTQsIEdMZmxvYXQ+ICAgICApOwotICAgIEluc2VydEZvcm1h
dFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHQkEsICAgICAgICAgICAgICAgR0xfVU5T
SUdORURfU0hPUlRfNV81XzVfMSwgICAgICAgICBXcml0ZUNvbG9yPFI1RzVCNUExLCBHTGZsb2F0
PiAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9S
R0JBLCAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViwgICAgV3Jp
dGVDb2xvcjxSMTBHMTBCMTBBMiwgR0xmbG9hdD4gICk7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVG
dW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkdCQSwgICAgICAgICAgICAgICBHTF9GTE9BVCwgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjMyRzMyQjMyQTMyRiwgR0xmbG9hdD4p
OwotICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHQkEsICAg
ICAgICAgICAgICAgR0xfSEFMRl9GTE9BVCwgICAgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9y
PFIxNkcxNkIxNkExNkYsIEdMZmxvYXQ+KTsKLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9u
TWFwcGluZygmbWFwLCBHTF9SR0JBLCAgICAgICAgICAgICAgIEdMX0hBTEZfRkxPQVRfT0VTLCAg
ICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSMTZHMTZCMTZBMTZGLCBHTGZsb2F0Pik7Ci0KLSAg
ICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SR0JBX0lOVEVHRVIs
ICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSOEc4
QjhBOCwgR0x1aW50PiAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBp
bmcoJm1hcCwgR0xfUkdCQV9JTlRFR0VSLCAgICAgICBHTF9CWVRFLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdyaXRlQ29sb3I8UjhHOEI4QThTLCBHTGludD4gICAgICApOwotICAgIEluc2Vy
dEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHQkFfSU5URUdFUiwgICAgICAg
R0xfVU5TSUdORURfU0hPUlQsICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFIxNkcxNkIxNkEx
NiwgR0x1aW50PiAgKTsKLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFw
LCBHTF9SR0JBX0lOVEVHRVIsICAgICAgIEdMX1NIT1JULCAgICAgICAgICAgICAgICAgICAgICAg
ICAgV3JpdGVDb2xvcjxSMTZHMTZCMTZBMTZTLCBHTGludD4gICk7Ci0gICAgSW5zZXJ0Rm9ybWF0
V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkdCQV9JTlRFR0VSLCAgICAgICBHTF9VTlNJ
R05FRF9JTlQsICAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjMyRzMyQjMyQTMyLCBHTHVp
bnQ+ICApOwotICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JH
QkFfSU5URUdFUiwgICAgICAgR0xfSU5ULCAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0
ZUNvbG9yPFIzMkczMkIzMkEzMlMsIEdMaW50PiAgKTsKLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1
bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SR0JBX0lOVEVHRVIsICAgICAgIEdMX1VOU0lHTkVEX0lO
VF8yXzEwXzEwXzEwX1JFViwgICAgV3JpdGVDb2xvcjxSMTBHMTBCMTBBMiwgR0x1aW50PiAgICk7
Ci0KLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SR0IsICAg
ICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgICAgV3JpdGVDb2xv
cjxSOEc4QjgsIEdMZmxvYXQ+ICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlv
bk1hcHBpbmcoJm1hcCwgR0xfUkdCLCAgICAgICAgICAgICAgICBHTF9CWVRFLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjhHOEI4UywgR0xmbG9hdD4gICAgICApOwotICAg
IEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHQiwgICAgICAgICAg
ICAgICAgR0xfVU5TSUdORURfU0hPUlRfNV82XzUsICAgICAgICAgICBXcml0ZUNvbG9yPFI1RzZC
NSwgR0xmbG9hdD4gICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGlu
ZygmbWFwLCBHTF9SR0IsICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVF8xMEZfMTFGXzEx
Rl9SRVYsICAgV3JpdGVDb2xvcjxSMTFHMTFCMTBGLCBHTGZsb2F0PiAgICk7Ci0gICAgSW5zZXJ0
Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkdCLCAgICAgICAgICAgICAgICBH
TF9VTlNJR05FRF9JTlRfNV85XzlfOV9SRVYsICAgICAgIFdyaXRlQ29sb3I8UjlHOUI5RTUsIEdM
ZmxvYXQ+ICAgICApOwotICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAs
IEdMX1JHQiwgICAgICAgICAgICAgICAgR0xfRkxPQVQsICAgICAgICAgICAgICAgICAgICAgICAg
ICBXcml0ZUNvbG9yPFIzMkczMkIzMkYsIEdMZmxvYXQ+ICAgKTsKLSAgICBJbnNlcnRGb3JtYXRX
cml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SR0IsICAgICAgICAgICAgICAgIEdMX0hBTEZf
RkxPQVQsICAgICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSMTZHMTZCMTZGLCBHTGZsb2F0
PiAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkdC
LCAgICAgICAgICAgICAgICBHTF9IQUxGX0ZMT0FUX09FUywgICAgICAgICAgICAgICAgIFdyaXRl
Q29sb3I8UjE2RzE2QjE2RiwgR0xmbG9hdD4gICApOwotCi0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVG
dW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkdCX0lOVEVHRVIsICAgICAgICBHTF9VTlNJR05FRF9C
WVRFLCAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjhHOEI4LCBHTHVpbnQ+ICAgICAgICAp
OwotICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHQl9JTlRF
R0VSLCAgICAgICAgR0xfQllURSwgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9y
PFI4RzhCOFMsIEdMaW50PiAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9u
TWFwcGluZygmbWFwLCBHTF9SR0JfSU5URUdFUiwgICAgICAgIEdMX1VOU0lHTkVEX1NIT1JULCAg
ICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSMTZHMTZCMTYsIEdMdWludD4gICAgICk7Ci0gICAg
SW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkdCX0lOVEVHRVIsICAg
ICAgICBHTF9TSE9SVCwgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjE2RzE2
QjE2UywgR0xpbnQ+ICAgICApOwotICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5n
KCZtYXAsIEdMX1JHQl9JTlRFR0VSLCAgICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgICAg
ICAgICAgICBXcml0ZUNvbG9yPFIzMkczMkIzMiwgR0x1aW50PiAgICAgKTsKLSAgICBJbnNlcnRG
b3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SR0JfSU5URUdFUiwgICAgICAgIEdM
X0lOVCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSMzJHMzJCMzJTLCBH
TGludD4gICAgICk7Ci0KLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFw
LCBHTF9SRywgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAg
ICAgV3JpdGVDb2xvcjxSOEc4LCBHTGZsb2F0PiAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0
V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkcsICAgICAgICAgICAgICAgICBHTF9CWVRF
LCAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjhHOFMsIEdMZmxvYXQ+ICAg
ICAgICApOwotICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JH
LCAgICAgICAgICAgICAgICAgR0xfRkxPQVQsICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0
ZUNvbG9yPFIzMkczMkYsIEdMZmxvYXQ+ICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1
bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SRywgICAgICAgICAgICAgICAgIEdMX0hBTEZfRkxPQVQs
ICAgICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSMTZHMTZGLCBHTGZsb2F0PiAgICAgICk7
Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkcsICAgICAg
ICAgICAgICAgICBHTF9IQUxGX0ZMT0FUX09FUywgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8
UjE2RzE2RiwgR0xmbG9hdD4gICAgICApOwotCi0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlv
bk1hcHBpbmcoJm1hcCwgR0xfUkdfSU5URUdFUiwgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAg
ICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjhHOCwgR0x1aW50PiAgICAgICAgICApOwotICAg
IEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHX0lOVEVHRVIsICAg
ICAgICAgR0xfQllURSwgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFI4RzhT
LCBHTGludD4gICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGlu
ZygmbWFwLCBHTF9SR19JTlRFR0VSLCAgICAgICAgIEdMX1VOU0lHTkVEX1NIT1JULCAgICAgICAg
ICAgICAgICAgV3JpdGVDb2xvcjxSMTZHMTYsIEdMdWludD4gICAgICAgICk7Ci0gICAgSW5zZXJ0
Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkdfSU5URUdFUiwgICAgICAgICBH
TF9TSE9SVCwgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjE2RzE2UywgR0xp
bnQ+ICAgICAgICApOwotICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAs
IEdMX1JHX0lOVEVHRVIsICAgICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgICAgICAgICAg
ICBXcml0ZUNvbG9yPFIzMkczMiwgR0x1aW50PiAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRX
cml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SR19JTlRFR0VSLCAgICAgICAgIEdMX0lOVCwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSMzJHMzJTLCBHTGludD4gICAg
ICAgICk7Ci0KLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9S
RUQsICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgICAgV3Jp
dGVDb2xvcjxSOCwgR0xmbG9hdD4gICAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVG
dW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkVELCAgICAgICAgICAgICAgICBHTF9CWVRFLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjhTLCBHTGZsb2F0PiAgICAgICAgICAp
OwotICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JFRCwgICAg
ICAgICAgICAgICAgR0xfRkxPQVQsICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9y
PFIzMkYsIEdMZmxvYXQ+ICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9u
TWFwcGluZygmbWFwLCBHTF9SRUQsICAgICAgICAgICAgICAgIEdMX0hBTEZfRkxPQVQsICAgICAg
ICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSMTZGLCBHTGZsb2F0PiAgICAgICAgICk7Ci0gICAg
SW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkVELCAgICAgICAgICAg
ICAgICBHTF9IQUxGX0ZMT0FUX09FUywgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjE2Riwg
R0xmbG9hdD4gICAgICAgICApOwotCi0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBp
bmcoJm1hcCwgR0xfUkVEX0lOVEVHRVIsICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAg
ICAgICAgICAgIFdyaXRlQ29sb3I8UjgsIEdMdWludD4gICAgICAgICAgICApOwotICAgIEluc2Vy
dEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JFRF9JTlRFR0VSLCAgICAgICAg
R0xfQllURSwgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFI4UywgR0xpbnQ+
ICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFw
LCBHTF9SRURfSU5URUdFUiwgICAgICAgIEdMX1VOU0lHTkVEX1NIT1JULCAgICAgICAgICAgICAg
ICAgV3JpdGVDb2xvcjxSMTYsIEdMdWludD4gICAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0
V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkVEX0lOVEVHRVIsICAgICAgICBHTF9TSE9S
VCwgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjE2UywgR0xpbnQ+ICAgICAg
ICAgICApOwotICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JF
RF9JTlRFR0VSLCAgICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgICAgICAgICAgICBXcml0
ZUNvbG9yPFIzMiwgR0x1aW50PiAgICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1
bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SRURfSU5URUdFUiwgICAgICAgIEdMX0lOVCwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSMzJTLCBHTGludD4gICAgICAgICAgICk7
Ci0KLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9MVU1JTkFO
Q0VfQUxQSEEsICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgICAgV3JpdGVDb2xv
cjxMOEE4LCBHTGZsb2F0PiAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlv
bk1hcHBpbmcoJm1hcCwgR0xfTFVNSU5BTkNFLCAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAg
ICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8TDgsIEdMZmxvYXQ+ICAgICAgICAgICApOwotICAg
IEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX0FMUEhBLCAgICAgICAg
ICAgICAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPEE4LCBH
TGZsb2F0PiAgICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGlu
ZygmbWFwLCBHTF9MVU1JTkFOQ0VfQUxQSEEsICAgIEdMX0ZMT0FULCAgICAgICAgICAgICAgICAg
ICAgICAgICAgV3JpdGVDb2xvcjxMMzJBMzJGLCBHTGZsb2F0PiAgICAgICk7Ci0gICAgSW5zZXJ0
Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfTFVNSU5BTkNFLCAgICAgICAgICBH
TF9GTE9BVCwgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8TDMyRiwgR0xmbG9h
dD4gICAgICAgICApOwotICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAs
IEdMX0FMUEhBLCAgICAgICAgICAgICAgR0xfRkxPQVQsICAgICAgICAgICAgICAgICAgICAgICAg
ICBXcml0ZUNvbG9yPEEzMkYsIEdMZmxvYXQ+ICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRX
cml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9MVU1JTkFOQ0VfQUxQSEEsICAgIEdMX0hBTEZf
RkxPQVQsICAgICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxMMTZBMTZGLCBHTGZsb2F0PiAg
ICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfTFVN
SU5BTkNFX0FMUEhBLCAgICBHTF9IQUxGX0ZMT0FUX09FUywgICAgICAgICAgICAgICAgIFdyaXRl
Q29sb3I8TDE2QTE2RiwgR0xmbG9hdD4gICAgICApOwotICAgIEluc2VydEZvcm1hdFdyaXRlRnVu
Y3Rpb25NYXBwaW5nKCZtYXAsIEdMX0xVTUlOQU5DRSwgICAgICAgICAgR0xfSEFMRl9GTE9BVCwg
ICAgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPEwxNkYsIEdMZmxvYXQ+ICAgICAgICAgKTsK
LSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9MVU1JTkFOQ0Us
ICAgICAgICAgIEdMX0hBTEZfRkxPQVRfT0VTLCAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxM
MTZGLCBHTGZsb2F0PiAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1h
cHBpbmcoJm1hcCwgR0xfQUxQSEEsICAgICAgICAgICAgICBHTF9IQUxGX0ZMT0FULCAgICAgICAg
ICAgICAgICAgICAgIFdyaXRlQ29sb3I8QTE2RiwgR0xmbG9hdD4gICAgICAgICApOwotICAgIElu
c2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX0FMUEhBLCAgICAgICAgICAg
ICAgR0xfSEFMRl9GTE9BVF9PRVMsICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPEExNkYsIEdM
ZmxvYXQ+ICAgICAgICAgKTsKLQotICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5n
KCZtYXAsIEdMX0JHUkFfRVhULCAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAg
ICAgICAgICBXcml0ZUNvbG9yPEI4RzhSOEE4LCBHTGZsb2F0PiAgICAgKTsKLSAgICBJbnNlcnRG
b3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9CR1JBX0VYVCwgICAgICAgICAgIEdM
X1VOU0lHTkVEX1NIT1JUXzRfNF80XzRfUkVWX0VYVCwgV3JpdGVDb2xvcjxBNFI0RzRCNCwgR0xm
bG9hdD4gICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwg
R0xfQkdSQV9FWFQsICAgICAgICAgICBHTF9VTlNJR05FRF9TSE9SVF8xXzVfNV81X1JFVl9FWFQs
IFdyaXRlQ29sb3I8QTFSNUc1QjUsIEdMZmxvYXQ+ICAgICApOwotCi0gICAgSW5zZXJ0Rm9ybWF0
V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfU1JHQl9FWFQsICAgICAgICAgICBHTF9VTlNJ
R05FRF9CWVRFLCAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjhHOEI4LCBHTGZsb2F0PiAg
ICAgICApOwotICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1NS
R0JfQUxQSEFfRVhULCAgICAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAgICBXcml0
ZUNvbG9yPFI4RzhCOEE4LCBHTGZsb2F0PiAgICAgKTsKLQotICAgIEluc2VydEZvcm1hdFdyaXRl
RnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQsICAg
IEdMX1VOU0lHTkVEX0JZVEUsICAgICBOVUxMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KTsKLSAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9DT01QUkVT
U0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgTlVMTCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlv
bk1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRSwgR0xfVU5T
SUdORURfQllURSwgICAgIE5VTEwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAg
IEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdC
QV9TM1RDX0RYVDVfQU5HTEUsIEdMX1VOU0lHTkVEX0JZVEUsICAgICBOVUxMICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKTsKLQotICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBw
aW5nKCZtYXAsIEdMX0RFUFRIX0NPTVBPTkVOVCwgICAgR0xfVU5TSUdORURfU0hPUlQsICAgICAg
ICAgICAgICAgICBOVUxMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNl
cnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9ERVBUSF9DT01QT05FTlQsICAg
IEdMX1VOU0lHTkVEX0lOVCwgICAgICAgICAgICAgICAgICAgTlVMTCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1h
cCwgR0xfREVQVEhfQ09NUE9ORU5ULCAgICBHTF9GTE9BVCwgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5VTEwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwotCi0gICAgSW5zZXJ0Rm9y
bWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfU1RFTkNJTCwgICAgICAgICAgICBHTF9V
TlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICAgIE5VTEwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICApOwotCi0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwg
R0xfREVQVEhfU1RFTkNJTCwgICAgICBHTF9VTlNJR05FRF9JTlRfMjRfOCwgICAgICAgICAgICAg
IE5VTEwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEZvcm1hdFdy
aXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX0RFUFRIX1NURU5DSUwsICAgICAgR0xfRkxPQVRf
MzJfVU5TSUdORURfSU5UXzI0XzhfUkVWLCBOVUxMICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKTsKLQotICAgIHJldHVybiBtYXA7Ci19Ci0KLUNvbG9yV3JpdGVGdW5jdGlvbiBHZXRDb2xv
cldyaXRlRnVuY3Rpb24oR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUpCi17Ci0gICAgc3RhdGlj
IGNvbnN0IEZvcm1hdFdyaXRlRnVuY3Rpb25NYXAgZm9ybWF0VHlwZU1hcCA9IEJ1aWxkRm9ybWF0
V3JpdGVGdW5jdGlvbk1hcCgpOwotICAgIEZvcm1hdFdyaXRlRnVuY3Rpb25NYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ZXIgPSBmb3JtYXRUeXBlTWFwLmZpbmQoRm9ybWF0VHlwZVBhaXIoZm9ybWF0LCB0
eXBlKSk7Ci0gICAgQVNTRVJUKGl0ZXIgIT0gZm9ybWF0VHlwZU1hcC5lbmQoKSk7Ci0gICAgaWYg
KGl0ZXIgIT0gZm9ybWF0VHlwZU1hcC5lbmQoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBpdGVy
LT5zZWNvbmQ7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVybiBOVUxMOwot
ICAgIH0KLX0KLQotfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9mb3JtYXR1dGlsc0QzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZm9ybWF0dXRpbHNEM0QuaAko
cmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9mb3JtYXR1dGlsc0QzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNSwyNCAr
MTUsMTggQEAKICNpbmNsdWRlIDxjc3RkZGVmPgogI2luY2x1ZGUgPHN0ZGludC5oPgogCisjaW5j
bHVkZSA8bWFwPgorCituYW1lc3BhY2UgZ2wKK3sKK3N0cnVjdCBGb3JtYXRUeXBlOworfQorCiBu
YW1lc3BhY2UgcngKIHsKLQotdHlwZWRlZiB2b2lkICgqTWlwR2VuZXJhdGlvbkZ1bmN0aW9uKShz
aXplX3Qgc291cmNlV2lkdGgsIHNpemVfdCBzb3VyY2VIZWlnaHQsIHNpemVfdCBzb3VyY2VEZXB0
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAq
c291cmNlRGF0YSwgc2l6ZV90IHNvdXJjZVJvd1BpdGNoLCBzaXplX3Qgc291cmNlRGVwdGhQaXRj
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqZGVzdERh
dGEsIHNpemVfdCBkZXN0Um93UGl0Y2gsIHNpemVfdCBkZXN0RGVwdGhQaXRjaCk7Ci0KLXR5cGVk
ZWYgdm9pZCAoKkxvYWRJbWFnZUZ1bmN0aW9uKShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQs
IHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0
Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBz
aXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKLQogdHlwZWRl
ZiB2b2lkICgqSW5pdGlhbGl6ZVRleHR1cmVEYXRhRnVuY3Rpb24pKHNpemVfdCB3aWR0aCwgc2l6
ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBz
aXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7CiAKLXR5cGVkZWYgdm9pZCAoKkNvbG9yUmVhZEZ1bmN0
aW9uKShjb25zdCB1aW50OF90ICpzb3VyY2UsIHVpbnQ4X3QgKmRlc3QpOwotdHlwZWRlZiB2b2lk
ICgqQ29sb3JXcml0ZUZ1bmN0aW9uKShjb25zdCB1aW50OF90ICpzb3VyY2UsIHVpbnQ4X3QgKmRl
c3QpOwotdHlwZWRlZiB2b2lkICgqQ29sb3JDb3B5RnVuY3Rpb24pKGNvbnN0IHVpbnQ4X3QgKnNv
dXJjZSwgdWludDhfdCAqZGVzdCk7Ci0KIHR5cGVkZWYgdm9pZCAoKlZlcnRleENvcHlGdW5jdGlv
bikoY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBzdHJpZGUsIHNpemVfdCBjb3VudCwgdWlu
dDhfdCAqb3V0cHV0KTsKIAogZW51bSBWZXJ0ZXhDb252ZXJzaW9uVHlwZQpAQCAtNDIsOSArMzYs
NiBAQAogICAgIFZFUlRFWF9DT05WRVJUX0dQVSA9IDIsCiAgICAgVkVSVEVYX0NPTlZFUlRfQk9U
SCA9IDMKIH07Cit9ICAvLyBuYW1lc3BhY2UgcngKIAotQ29sb3JXcml0ZUZ1bmN0aW9uIEdldENv
bG9yV3JpdGVGdW5jdGlvbihHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSk7Ci0KLX0KLQogI2Vu
ZGlmIC8vIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9GT1JNQVRVVElMU0QzRF9IXwpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9nZW5lcmF0ZW1p
cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZ2VuZXJhdGVtaXAuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9nZW5lcmF0ZW1pcC5oCShu
b25leGlzdGVudCkKQEAgLTEsMjggKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0y
MDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gZ2Vu
ZXJhdGVtaXAuaDogRGVmaW5lcyB0aGUgR2VuZXJhdGVNaXAgZnVuY3Rpb24sIHRlbXBsYXRlZCBv
biB0aGUgZm9ybWF0Ci0vLyB0eXBlIG9mIHRoZSBpbWFnZSBmb3Igd2hpY2ggbWlwIGxldmVscyBh
cmUgYmVpbmcgZ2VuZXJhdGVkLgotCi0jaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9HRU5F
UkFURU1JUF9IXwotI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfR0VORVJBVEVNSVBfSF8K
LQotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9pbWFnZWZvcm1hdHMuaCIKLSNpbmNs
dWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgiCi0KLW5hbWVzcGFjZSByeAotewotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLWlubGluZSB2b2lkIEdlbmVyYXRlTWlwKHNpemVfdCBzb3VyY2VXaWR0
aCwgc2l6ZV90IHNvdXJjZUhlaWdodCwgc2l6ZV90IHNvdXJjZURlcHRoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgdWludDhfdCAqc291cmNlRGF0YSwgc2l6ZV90IHNvdXJjZVJvd1Bp
dGNoLCBzaXplX3Qgc291cmNlRGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQ4X3QgKmRlc3REYXRhLCBzaXplX3QgZGVzdFJvd1BpdGNoLCBzaXplX3QgZGVzdERlcHRoUGl0
Y2gpOwotCi19Ci0KLSNpbmNsdWRlICJnZW5lcmF0ZW1pcC5pbmwiCi0KLSNlbmRpZiAvLyBMSUJB
TkdMRV9SRU5ERVJFUl9EM0RfR0VORVJBVEVNSVBfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZ2VuZXJhdGVtaXAuaW5sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
Z2VuZXJhdGVtaXAuaW5sCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2dlbmVyYXRlbWlwLmlubAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDI2NiArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Ci0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gZ2VuZXJhdGVtaXAuaW5s
OiBEZWZpbmVzIHRoZSBHZW5lcmF0ZU1pcCBmdW5jdGlvbiwgdGVtcGxhdGVkIG9uIHRoZSBmb3Jt
YXQKLS8vIHR5cGUgb2YgdGhlIGltYWdlIGZvciB3aGljaCBtaXAgbGV2ZWxzIGFyZSBiZWluZyBn
ZW5lcmF0ZWQuCi0KLSNpbmNsdWRlICJjb21tb24vbWF0aHV0aWwuaCIKLQotbmFtZXNwYWNlIHJ4
Ci17Ci0KLW5hbWVzcGFjZSBwcml2Ci17Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RhdGlj
IGlubGluZSBUICpHZXRQaXhlbCh1aW50OF90ICpkYXRhLCBzaXplX3QgeCwgc2l6ZV90IHksIHNp
emVfdCB6LCBzaXplX3Qgcm93UGl0Y2gsIHNpemVfdCBkZXB0aFBpdGNoKQotewotICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFQqPihkYXRhICsgKHggKiBzaXplb2YoVCkpICsgKHkgKiByb3dQ
aXRjaCkgKyAoeiAqIGRlcHRoUGl0Y2gpKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1z
dGF0aWMgaW5saW5lIGNvbnN0IFQgKkdldFBpeGVsKGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVf
dCB4LCBzaXplX3QgeSwgc2l6ZV90IHosIHNpemVfdCByb3dQaXRjaCwgc2l6ZV90IGRlcHRoUGl0
Y2gpCi17Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KGRhdGEgKyAoeCAq
IHNpemVvZihUKSkgKyAoeSAqIHJvd1BpdGNoKSArICh6ICogZGVwdGhQaXRjaCkpOwotfQotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0YXRpYyB2b2lkIEdlbmVyYXRlTWlwX1koc2l6ZV90IHNv
dXJjZVdpZHRoLCBzaXplX3Qgc291cmNlSGVpZ2h0LCBzaXplX3Qgc291cmNlRGVwdGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNvdXJjZURhdGEsIHNpemVfdCBz
b3VyY2VSb3dQaXRjaCwgc2l6ZV90IHNvdXJjZURlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBkZXN0V2lkdGgsIHNpemVfdCBkZXN0SGVpZ2h0LCBzaXplX3QgZGVz
dERlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpkZXN0RGF0YSwgc2l6
ZV90IGRlc3RSb3dQaXRjaCwgc2l6ZV90IGRlc3REZXB0aFBpdGNoKQotewotICAgIEFTU0VSVChz
b3VyY2VXaWR0aCA9PSAxKTsKLSAgICBBU1NFUlQoc291cmNlSGVpZ2h0ID4gMSk7Ci0gICAgQVNT
RVJUKHNvdXJjZURlcHRoID09IDEpOwotCi0gICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBkZXN0
SGVpZ2h0OyB5KyspCi0gICAgewotICAgICAgICBjb25zdCBUICpzcmMwID0gR2V0UGl4ZWw8VD4o
c291cmNlRGF0YSwgMCwgeSAqIDIsIDAsIHNvdXJjZVJvd1BpdGNoLCBzb3VyY2VEZXB0aFBpdGNo
KTsKLSAgICAgICAgY29uc3QgVCAqc3JjMSA9IEdldFBpeGVsPFQ+KHNvdXJjZURhdGEsIDAsIHkg
KiAyICsgMSwgMCwgc291cmNlUm93UGl0Y2gsIHNvdXJjZURlcHRoUGl0Y2gpOwotICAgICAgICBU
ICpkc3QgPSBHZXRQaXhlbDxUPihkZXN0RGF0YSwgMCwgeSwgMCwgZGVzdFJvd1BpdGNoLCBkZXN0
RGVwdGhQaXRjaCk7Ci0KLSAgICAgICAgVDo6YXZlcmFnZShkc3QsIHNyYzAsIHNyYzEpOwotICAg
IH0KLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdGF0aWMgdm9pZCBHZW5lcmF0ZU1pcF9Y
KHNpemVfdCBzb3VyY2VXaWR0aCwgc2l6ZV90IHNvdXJjZUhlaWdodCwgc2l6ZV90IHNvdXJjZURl
cHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzb3VyY2VEYXRh
LCBzaXplX3Qgc291cmNlUm93UGl0Y2gsIHNpemVfdCBzb3VyY2VEZXB0aFBpdGNoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVzdFdpZHRoLCBzaXplX3QgZGVzdEhlaWdodCwg
c2l6ZV90IGRlc3REZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqZGVz
dERhdGEsIHNpemVfdCBkZXN0Um93UGl0Y2gsIHNpemVfdCBkZXN0RGVwdGhQaXRjaCkKLXsKLSAg
ICBBU1NFUlQoc291cmNlV2lkdGggPiAxKTsKLSAgICBBU1NFUlQoc291cmNlSGVpZ2h0ID09IDEp
OwotICAgIEFTU0VSVChzb3VyY2VEZXB0aCA9PSAxKTsKLQotICAgIGZvciAoc2l6ZV90IHggPSAw
OyB4IDwgZGVzdFdpZHRoOyB4KyspCi0gICAgewotICAgICAgICBjb25zdCBUICpzcmMwID0gR2V0
UGl4ZWw8VD4oc291cmNlRGF0YSwgeCAqIDIsIDAsIDAsIHNvdXJjZVJvd1BpdGNoLCBzb3VyY2VE
ZXB0aFBpdGNoKTsKLSAgICAgICAgY29uc3QgVCAqc3JjMSA9IEdldFBpeGVsPFQ+KHNvdXJjZURh
dGEsIHggKiAyICsgMSwgMCwgMCwgc291cmNlUm93UGl0Y2gsIHNvdXJjZURlcHRoUGl0Y2gpOwot
ICAgICAgICBUICpkc3QgPSBHZXRQaXhlbDxUPihkZXN0RGF0YSwgeCwgMCwgMCwgZGVzdFJvd1Bp
dGNoLCBkZXN0RGVwdGhQaXRjaCk7Ci0KLSAgICAgICAgVDo6YXZlcmFnZShkc3QsIHNyYzAsIHNy
YzEpOwotICAgIH0KLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdGF0aWMgdm9pZCBHZW5l
cmF0ZU1pcF9aKHNpemVfdCBzb3VyY2VXaWR0aCwgc2l6ZV90IHNvdXJjZUhlaWdodCwgc2l6ZV90
IHNvdXJjZURlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpz
b3VyY2VEYXRhLCBzaXplX3Qgc291cmNlUm93UGl0Y2gsIHNpemVfdCBzb3VyY2VEZXB0aFBpdGNo
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVzdFdpZHRoLCBzaXplX3QgZGVz
dEhlaWdodCwgc2l6ZV90IGRlc3REZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDhfdCAqZGVzdERhdGEsIHNpemVfdCBkZXN0Um93UGl0Y2gsIHNpemVfdCBkZXN0RGVwdGhQaXRj
aCkKLXsKLSAgICBBU1NFUlQoc291cmNlV2lkdGggPT0gMSk7Ci0gICAgQVNTRVJUKHNvdXJjZUhl
aWdodCA9PSAxKTsKLSAgICBBU1NFUlQoc291cmNlRGVwdGggPiAxKTsKLQotICAgIGZvciAoc2l6
ZV90IHogPSAwOyB6IDwgZGVzdERlcHRoOyB6KyspCi0gICAgewotICAgICAgICBjb25zdCBUICpz
cmMwID0gR2V0UGl4ZWw8VD4oc291cmNlRGF0YSwgMCwgMCwgeiAqIDIsIHNvdXJjZVJvd1BpdGNo
LCBzb3VyY2VEZXB0aFBpdGNoKTsKLSAgICAgICAgY29uc3QgVCAqc3JjMSA9IEdldFBpeGVsPFQ+
KHNvdXJjZURhdGEsIDAsIDAsIHogKiAyICsgMSwgc291cmNlUm93UGl0Y2gsIHNvdXJjZURlcHRo
UGl0Y2gpOwotICAgICAgICBUICpkc3QgPSBHZXRQaXhlbDxUPihkZXN0RGF0YSwgMCwgMCwgeiwg
ZGVzdFJvd1BpdGNoLCBkZXN0RGVwdGhQaXRjaCk7Ci0KLSAgICAgICAgVDo6YXZlcmFnZShkc3Qs
IHNyYzAsIHNyYzEpOwotICAgIH0KLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdGF0aWMg
dm9pZCBHZW5lcmF0ZU1pcF9YWShzaXplX3Qgc291cmNlV2lkdGgsIHNpemVfdCBzb3VyY2VIZWln
aHQsIHNpemVfdCBzb3VyY2VEZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHVpbnQ4X3QgKnNvdXJjZURhdGEsIHNpemVfdCBzb3VyY2VSb3dQaXRjaCwgc2l6ZV90IHNvdXJj
ZURlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVzdFdpZHRo
LCBzaXplX3QgZGVzdEhlaWdodCwgc2l6ZV90IGRlc3REZXB0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQ4X3QgKmRlc3REYXRhLCBzaXplX3QgZGVzdFJvd1BpdGNoLCBzaXplX3Qg
ZGVzdERlcHRoUGl0Y2gpCi17Ci0gICAgQVNTRVJUKHNvdXJjZVdpZHRoID4gMSk7Ci0gICAgQVNT
RVJUKHNvdXJjZUhlaWdodCA+IDEpOwotICAgIEFTU0VSVChzb3VyY2VEZXB0aCA9PSAxKTsKLQot
ICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgZGVzdEhlaWdodDsgeSsrKQotICAgIHsKLSAgICAg
ICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCBkZXN0V2lkdGg7IHgrKykKLSAgICAgICAgewotICAg
ICAgICAgICAgY29uc3QgVCAqc3JjMCA9IEdldFBpeGVsPFQ+KHNvdXJjZURhdGEsIHggKiAyLCB5
ICogMiwgMCwgc291cmNlUm93UGl0Y2gsIHNvdXJjZURlcHRoUGl0Y2gpOwotICAgICAgICAgICAg
Y29uc3QgVCAqc3JjMSA9IEdldFBpeGVsPFQ+KHNvdXJjZURhdGEsIHggKiAyLCB5ICogMiArIDEs
IDAsIHNvdXJjZVJvd1BpdGNoLCBzb3VyY2VEZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIGNvbnN0
IFQgKnNyYzIgPSBHZXRQaXhlbDxUPihzb3VyY2VEYXRhLCB4ICogMiArIDEsIHkgKiAyLCAwLCBz
b3VyY2VSb3dQaXRjaCwgc291cmNlRGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICBjb25zdCBUICpz
cmMzID0gR2V0UGl4ZWw8VD4oc291cmNlRGF0YSwgeCAqIDIgKyAxLCB5ICogMiArIDEsIDAsIHNv
dXJjZVJvd1BpdGNoLCBzb3VyY2VEZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIFQgKmRzdCA9IEdl
dFBpeGVsPFQ+KGRlc3REYXRhLCB4LCB5LCAwLCBkZXN0Um93UGl0Y2gsIGRlc3REZXB0aFBpdGNo
KTsKLQotICAgICAgICAgICAgVCB0bXAwLCB0bXAxOwotCi0gICAgICAgICAgICBUOjphdmVyYWdl
KCZ0bXAwLCBzcmMwLCBzcmMxKTsKLSAgICAgICAgICAgIFQ6OmF2ZXJhZ2UoJnRtcDEsIHNyYzIs
IHNyYzMpOwotICAgICAgICAgICAgVDo6YXZlcmFnZShkc3QsICZ0bXAwLCAmdG1wMSk7Ci0gICAg
ICAgIH0KLSAgICB9Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RhdGljIHZvaWQgR2Vu
ZXJhdGVNaXBfWVooc2l6ZV90IHNvdXJjZVdpZHRoLCBzaXplX3Qgc291cmNlSGVpZ2h0LCBzaXpl
X3Qgc291cmNlRGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90
ICpzb3VyY2VEYXRhLCBzaXplX3Qgc291cmNlUm93UGl0Y2gsIHNpemVfdCBzb3VyY2VEZXB0aFBp
dGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlc3RXaWR0aCwgc2l6ZV90
IGRlc3RIZWlnaHQsIHNpemVfdCBkZXN0RGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50OF90ICpkZXN0RGF0YSwgc2l6ZV90IGRlc3RSb3dQaXRjaCwgc2l6ZV90IGRlc3REZXB0
aFBpdGNoKQotewotICAgIEFTU0VSVChzb3VyY2VXaWR0aCA9PSAxKTsKLSAgICBBU1NFUlQoc291
cmNlSGVpZ2h0ID4gMSk7Ci0gICAgQVNTRVJUKHNvdXJjZURlcHRoID4gMSk7Ci0KLSAgICBmb3Ig
KHNpemVfdCB6ID0gMDsgeiA8IGRlc3REZXB0aDsgeisrKQotICAgIHsKLSAgICAgICAgZm9yIChz
aXplX3QgeSA9IDA7IHkgPCBkZXN0SGVpZ2h0OyB5KyspCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnN0IFQgKnNyYzAgPSBHZXRQaXhlbDxUPihzb3VyY2VEYXRhLCAwLCB5ICogMiwgeiAqIDIs
IHNvdXJjZVJvd1BpdGNoLCBzb3VyY2VEZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIGNvbnN0IFQg
KnNyYzEgPSBHZXRQaXhlbDxUPihzb3VyY2VEYXRhLCAwLCB5ICogMiwgeiAqIDIgKyAxLCBzb3Vy
Y2VSb3dQaXRjaCwgc291cmNlRGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICBjb25zdCBUICpzcmMy
ID0gR2V0UGl4ZWw8VD4oc291cmNlRGF0YSwgMCwgeSAqIDIgKyAxLCB6ICogMiwgc291cmNlUm93
UGl0Y2gsIHNvdXJjZURlcHRoUGl0Y2gpOwotICAgICAgICAgICAgY29uc3QgVCAqc3JjMyA9IEdl
dFBpeGVsPFQ+KHNvdXJjZURhdGEsIDAsIHkgKiAyICsgMSwgeiAqIDIgKyAxLCBzb3VyY2VSb3dQ
aXRjaCwgc291cmNlRGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICBUICpkc3QgPSBHZXRQaXhlbDxU
PihkZXN0RGF0YSwgMCwgeSwgeiwgZGVzdFJvd1BpdGNoLCBkZXN0RGVwdGhQaXRjaCk7Ci0KLSAg
ICAgICAgICAgIFQgdG1wMCwgdG1wMTsKLQotICAgICAgICAgICAgVDo6YXZlcmFnZSgmdG1wMCwg
c3JjMCwgc3JjMSk7Ci0gICAgICAgICAgICBUOjphdmVyYWdlKCZ0bXAxLCBzcmMyLCBzcmMzKTsK
LSAgICAgICAgICAgIFQ6OmF2ZXJhZ2UoZHN0LCAmdG1wMCwgJnRtcDEpOwotICAgICAgICB9Ci0g
ICAgfQotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0YXRpYyB2b2lkIEdlbmVyYXRlTWlw
X1haKHNpemVfdCBzb3VyY2VXaWR0aCwgc2l6ZV90IHNvdXJjZUhlaWdodCwgc2l6ZV90IHNvdXJj
ZURlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqc291cmNl
RGF0YSwgc2l6ZV90IHNvdXJjZVJvd1BpdGNoLCBzaXplX3Qgc291cmNlRGVwdGhQaXRjaCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXN0V2lkdGgsIHNpemVfdCBkZXN0SGVp
Z2h0LCBzaXplX3QgZGVzdERlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhf
dCAqZGVzdERhdGEsIHNpemVfdCBkZXN0Um93UGl0Y2gsIHNpemVfdCBkZXN0RGVwdGhQaXRjaCkK
LXsKLSAgICBBU1NFUlQoc291cmNlV2lkdGggPiAxKTsKLSAgICBBU1NFUlQoc291cmNlSGVpZ2h0
ID09IDEpOwotICAgIEFTU0VSVChzb3VyY2VEZXB0aCA+IDEpOwotCi0gICAgZm9yIChzaXplX3Qg
eiA9IDA7IHogPCBkZXN0RGVwdGg7IHorKykKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IHgg
PSAwOyB4IDwgZGVzdFdpZHRoOyB4KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IFQg
KnNyYzAgPSBHZXRQaXhlbDxUPihzb3VyY2VEYXRhLCB4ICogMiwgMCwgeiAqIDIsIHNvdXJjZVJv
d1BpdGNoLCBzb3VyY2VEZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIGNvbnN0IFQgKnNyYzEgPSBH
ZXRQaXhlbDxUPihzb3VyY2VEYXRhLCB4ICogMiwgMCwgeiAqIDIgKyAxLCBzb3VyY2VSb3dQaXRj
aCwgc291cmNlRGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICBjb25zdCBUICpzcmMyID0gR2V0UGl4
ZWw8VD4oc291cmNlRGF0YSwgeCAqIDIgKyAxLCAwLCB6ICogMiwgc291cmNlUm93UGl0Y2gsIHNv
dXJjZURlcHRoUGl0Y2gpOwotICAgICAgICAgICAgY29uc3QgVCAqc3JjMyA9IEdldFBpeGVsPFQ+
KHNvdXJjZURhdGEsIHggKiAyICsgMSwgMCwgeiAqIDIgKyAxLCBzb3VyY2VSb3dQaXRjaCwgc291
cmNlRGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICBUICpkc3QgPSBHZXRQaXhlbDxUPihkZXN0RGF0
YSwgeCwgMCwgeiwgZGVzdFJvd1BpdGNoLCBkZXN0RGVwdGhQaXRjaCk7Ci0KLSAgICAgICAgICAg
IFQgdG1wMCwgdG1wMTsKLQotICAgICAgICAgICAgVDo6YXZlcmFnZSgmdG1wMCwgc3JjMCwgc3Jj
MSk7Ci0gICAgICAgICAgICBUOjphdmVyYWdlKCZ0bXAxLCBzcmMyLCBzcmMzKTsKLSAgICAgICAg
ICAgIFQ6OmF2ZXJhZ2UoZHN0LCAmdG1wMCwgJnRtcDEpOwotICAgICAgICB9Ci0gICAgfQotfQot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0YXRpYyB2b2lkIEdlbmVyYXRlTWlwX1hZWihzaXpl
X3Qgc291cmNlV2lkdGgsIHNpemVfdCBzb3VyY2VIZWlnaHQsIHNpemVfdCBzb3VyY2VEZXB0aCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzb3VyY2VEYXRhLCBz
aXplX3Qgc291cmNlUm93UGl0Y2gsIHNpemVfdCBzb3VyY2VEZXB0aFBpdGNoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXN0V2lkdGgsIHNpemVfdCBkZXN0SGVpZ2h0LCBz
aXplX3QgZGVzdERlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmRl
c3REYXRhLCBzaXplX3QgZGVzdFJvd1BpdGNoLCBzaXplX3QgZGVzdERlcHRoUGl0Y2gpCi17Ci0g
ICAgQVNTRVJUKHNvdXJjZVdpZHRoID4gMSk7Ci0gICAgQVNTRVJUKHNvdXJjZUhlaWdodCA+IDEp
OwotICAgIEFTU0VSVChzb3VyY2VEZXB0aCA+IDEpOwotCi0gICAgZm9yIChzaXplX3QgeiA9IDA7
IHogPCBkZXN0RGVwdGg7IHorKykKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5
IDwgZGVzdEhlaWdodDsgeSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCB4
ID0gMDsgeCA8IGRlc3RXaWR0aDsgeCsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGNvbnN0IFQgKnNyYzAgPSBHZXRQaXhlbDxUPihzb3VyY2VEYXRhLCB4ICogMiwgeSAqIDIsIHog
KiAyLCBzb3VyY2VSb3dQaXRjaCwgc291cmNlRGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICAgICAg
Y29uc3QgVCAqc3JjMSA9IEdldFBpeGVsPFQ+KHNvdXJjZURhdGEsIHggKiAyLCB5ICogMiwgeiAq
IDIgKyAxLCBzb3VyY2VSb3dQaXRjaCwgc291cmNlRGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICAg
ICAgY29uc3QgVCAqc3JjMiA9IEdldFBpeGVsPFQ+KHNvdXJjZURhdGEsIHggKiAyLCB5ICogMiAr
IDEsIHogKiAyLCBzb3VyY2VSb3dQaXRjaCwgc291cmNlRGVwdGhQaXRjaCk7Ci0gICAgICAgICAg
ICAgICAgY29uc3QgVCAqc3JjMyA9IEdldFBpeGVsPFQ+KHNvdXJjZURhdGEsIHggKiAyLCB5ICog
MiArIDEsIHogKiAyICsgMSwgc291cmNlUm93UGl0Y2gsIHNvdXJjZURlcHRoUGl0Y2gpOwotICAg
ICAgICAgICAgICAgIGNvbnN0IFQgKnNyYzQgPSBHZXRQaXhlbDxUPihzb3VyY2VEYXRhLCB4ICog
MiArIDEsIHkgKiAyLCB6ICogMiwgc291cmNlUm93UGl0Y2gsIHNvdXJjZURlcHRoUGl0Y2gpOwot
ICAgICAgICAgICAgICAgIGNvbnN0IFQgKnNyYzUgPSBHZXRQaXhlbDxUPihzb3VyY2VEYXRhLCB4
ICogMiArIDEsIHkgKiAyLCB6ICogMiArIDEsIHNvdXJjZVJvd1BpdGNoLCBzb3VyY2VEZXB0aFBp
dGNoKTsKLSAgICAgICAgICAgICAgICBjb25zdCBUICpzcmM2ID0gR2V0UGl4ZWw8VD4oc291cmNl
RGF0YSwgeCAqIDIgKyAxLCB5ICogMiArIDEsIHogKiAyLCBzb3VyY2VSb3dQaXRjaCwgc291cmNl
RGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICAgICAgY29uc3QgVCAqc3JjNyA9IEdldFBpeGVsPFQ+
KHNvdXJjZURhdGEsIHggKiAyICsgMSwgeSAqIDIgKyAxLCB6ICogMiArIDEsIHNvdXJjZVJvd1Bp
dGNoLCBzb3VyY2VEZXB0aFBpdGNoKTsKLSAgICAgICAgICAgICAgICBUICpkc3QgPSBHZXRQaXhl
bDxUPihkZXN0RGF0YSwgeCwgeSwgeiwgZGVzdFJvd1BpdGNoLCBkZXN0RGVwdGhQaXRjaCk7Ci0K
LSAgICAgICAgICAgICAgICBUIHRtcDAsIHRtcDEsIHRtcDIsIHRtcDMsIHRtcDQsIHRtcDU7Ci0K
LSAgICAgICAgICAgICAgICBUOjphdmVyYWdlKCZ0bXAwLCBzcmMwLCBzcmMxKTsKLSAgICAgICAg
ICAgICAgICBUOjphdmVyYWdlKCZ0bXAxLCBzcmMyLCBzcmMzKTsKLSAgICAgICAgICAgICAgICBU
OjphdmVyYWdlKCZ0bXAyLCBzcmM0LCBzcmM1KTsKLSAgICAgICAgICAgICAgICBUOjphdmVyYWdl
KCZ0bXAzLCBzcmM2LCBzcmM3KTsKLQotICAgICAgICAgICAgICAgIFQ6OmF2ZXJhZ2UoJnRtcDQs
ICZ0bXAwLCAmdG1wMSk7Ci0gICAgICAgICAgICAgICAgVDo6YXZlcmFnZSgmdG1wNSwgJnRtcDIs
ICZ0bXAzKTsKLQotICAgICAgICAgICAgICAgIFQ6OmF2ZXJhZ2UoZHN0LCAmdG1wNCwgJnRtcDUp
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi0KLXR5cGVkZWYgdm9pZCAo
Kk1pcEdlbmVyYXRpb25GdW5jdGlvbikoc2l6ZV90IHNvdXJjZVdpZHRoLCBzaXplX3Qgc291cmNl
SGVpZ2h0LCBzaXplX3Qgc291cmNlRGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNvdXJjZURhdGEsIHNpemVfdCBzb3VyY2VSb3dQaXRj
aCwgc2l6ZV90IHNvdXJjZURlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBkZXN0V2lkdGgsIHNpemVfdCBkZXN0SGVpZ2h0LCBzaXplX3QgZGVz
dERlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpk
ZXN0RGF0YSwgc2l6ZV90IGRlc3RSb3dQaXRjaCwgc2l6ZV90IGRlc3REZXB0aFBpdGNoKTsKLQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdGF0aWMgTWlwR2VuZXJhdGlvbkZ1bmN0aW9uIEdldE1p
cEdlbmVyYXRpb25GdW5jdGlvbihzaXplX3Qgc291cmNlV2lkdGgsIHNpemVfdCBzb3VyY2VIZWln
aHQsIHNpemVfdCBzb3VyY2VEZXB0aCkKLXsKLSAgICB1aW50OF90IGluZGV4ID0gKChzb3VyY2VX
aWR0aCA+IDEpICA/IDEgOiAwKSB8Ci0gICAgICAgICAgICAgICAgICAgICgoc291cmNlSGVpZ2h0
ID4gMSkgPyAyIDogMCkgfAotICAgICAgICAgICAgICAgICAgICAoKHNvdXJjZURlcHRoID4gMSkg
ID8gNCA6IDApOwotCi0gICAgc3dpdGNoIChpbmRleCkKLSAgICB7Ci0gICAgICBjYXNlIDA6IHJl
dHVybiBOVUxMOwotICAgICAgY2FzZSAxOiByZXR1cm4gR2VuZXJhdGVNaXBfWDxUPjsgICAvLyBX
IHggMSB4IDEKLSAgICAgIGNhc2UgMjogcmV0dXJuIEdlbmVyYXRlTWlwX1k8VD47ICAgLy8gMSB4
IEggeCAxCi0gICAgICBjYXNlIDM6IHJldHVybiBHZW5lcmF0ZU1pcF9YWTxUPjsgIC8vIFcgeCBI
IHggMQotICAgICAgY2FzZSA0OiByZXR1cm4gR2VuZXJhdGVNaXBfWjxUPjsgICAvLyAxIHggMSB4
IEQKLSAgICAgIGNhc2UgNTogcmV0dXJuIEdlbmVyYXRlTWlwX1haPFQ+OyAgLy8gVyB4IDEgeCBE
Ci0gICAgICBjYXNlIDY6IHJldHVybiBHZW5lcmF0ZU1pcF9ZWjxUPjsgIC8vIDEgeCBIIHggRAot
ICAgICAgY2FzZSA3OiByZXR1cm4gR2VuZXJhdGVNaXBfWFlaPFQ+OyAvLyBXIHggSCB4IEQKLSAg
ICB9Ci0KLSAgICBVTlJFQUNIQUJMRSgpOwotICAgIHJldHVybiBOVUxMOwotfQotCi19Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQgR2VuZXJhdGVNaXAoc2l6ZV90IHNvdXJj
ZVdpZHRoLCBzaXplX3Qgc291cmNlSGVpZ2h0LCBzaXplX3Qgc291cmNlRGVwdGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzb3VyY2VEYXRhLCBzaXplX3Qgc291cmNl
Um93UGl0Y2gsIHNpemVfdCBzb3VyY2VEZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDhfdCAqZGVzdERhdGEsIHNpemVfdCBkZXN0Um93UGl0Y2gsIHNpemVfdCBkZXN0RGVw
dGhQaXRjaCkKLXsKLSAgICBzaXplX3QgbWlwV2lkdGggPSBzdGQ6Om1heDxzaXplX3Q+KDEsIHNv
dXJjZVdpZHRoID4+IDEpOwotICAgIHNpemVfdCBtaXBIZWlnaHQgPSBzdGQ6Om1heDxzaXplX3Q+
KDEsIHNvdXJjZUhlaWdodCA+PiAxKTsKLSAgICBzaXplX3QgbWlwRGVwdGggPSBzdGQ6Om1heDxz
aXplX3Q+KDEsIHNvdXJjZURlcHRoID4+IDEpOwotCi0gICAgcHJpdjo6TWlwR2VuZXJhdGlvbkZ1
bmN0aW9uIGdlbmVyYXRpb25GdW5jdGlvbiA9IHByaXY6OkdldE1pcEdlbmVyYXRpb25GdW5jdGlv
bjxUPihzb3VyY2VXaWR0aCwgc291cmNlSGVpZ2h0LCBzb3VyY2VEZXB0aCk7Ci0gICAgQVNTRVJU
KGdlbmVyYXRpb25GdW5jdGlvbiAhPSBOVUxMKTsKLQotICAgIGdlbmVyYXRpb25GdW5jdGlvbihz
b3VyY2VXaWR0aCwgc291cmNlSGVpZ2h0LCBzb3VyY2VEZXB0aCwgc291cmNlRGF0YSwgc291cmNl
Um93UGl0Y2gsIHNvdXJjZURlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgIG1pcFdp
ZHRoLCBtaXBIZWlnaHQsIG1pcERlcHRoLCBkZXN0RGF0YSwgZGVzdFJvd1BpdGNoLCBkZXN0RGVw
dGhQaXRjaCk7Ci19Ci0KLX0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvaW1hZ2Vmb3JtYXRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9pbWFnZWZvcm1hdHMuaAko
cmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9pbWFnZWZvcm1hdHMuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDE5OTkgKzAs
MCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxMy0yMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gaW1hZ2Vmb3JtYXRzLmg6IERlZmluZXMgaW1h
Z2UgZm9ybWF0IHR5cGVzIHdpdGggZnVuY3Rpb25zIGZvciBtaXAgZ2VuZXJhdGlvbgotLy8gYW5k
IGNvcHlpbmcuCi0KLSNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfRDNEX0lNQUdFRk9STUFUU19I
XwotI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfSU1BR0VGT1JNQVRTX0hfCi0KLSNpbmNs
dWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgiCi0KLSNpbmNsdWRlICJjb21tb24vbWF0aHV0aWwu
aCIKLQotbmFtZXNwYWNlIHJ4Ci17Ci0KLS8vIFNldmVyYWwgc3RydWN0dXJlcyBzaGFyZSBmdW5j
dGlvbmFsaXR5IGZvciByZWFkaW5nLCB3cml0aW5nIG9yIG1pcG1hcHBpbmcgYnV0IHRoZSBsYXlv
dXQKLS8vIG11c3QgbWF0Y2ggdGhlIHRleHR1cmUgZm9ybWF0IHdoaWNoIHRoZSBzdHJ1Y3R1cmUg
cmVwcmVzZW50cy4gSWYgY29sbGFwc2luZyBvciB0eXBlZGVmaW5nCi0vLyBzdHJ1Y3RzIGluIHRo
aXMgaGVhZGVyLCBtYWtlIHN1cmUgdGhlIGZ1bmN0aW9uYWxpdHkgYW5kIG1lbW9yeSBsYXlvdXQg
aXMgZXhhY3RseSB0aGUgc2FtZS4KLQotc3RydWN0IEw4Ci17Ci0gICAgdW5zaWduZWQgY2hhciBM
OwotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgTDgg
KnNyYykKLSAgICB7Ci0gICAgICAgIGNvbnN0IGZsb2F0IGx1bSA9IGdsOjpub3JtYWxpemVkVG9G
bG9hdChzcmMtPkwpOwotICAgICAgICBkc3QtPnJlZCAgID0gbHVtOwotICAgICAgICBkc3QtPmdy
ZWVuID0gbHVtOwotICAgICAgICBkc3QtPmJsdWUgID0gbHVtOwotICAgICAgICBkc3QtPmFscGhh
ID0gMS4wZjsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKEw4ICpkc3QsIGNv
bnN0IGdsOjpDb2xvckYgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+TCA9IGdsOjpmbG9hdFRv
Tm9ybWFsaXplZDx1bnNpZ25lZCBjaGFyPigoc3JjLT5yZWQgKyBzcmMtPmdyZWVuICsgc3JjLT5i
bHVlKSAvIDMuMGYpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoTDggKmRzdCwg
Y29uc3QgTDggKnNyYzEsIGNvbnN0IEw4ICpzcmMyKQotICAgIHsKLSAgICAgICAgZHN0LT5MID0g
Z2w6OmF2ZXJhZ2Uoc3JjMS0+TCwgc3JjMi0+TCk7Ci0gICAgfQotfTsKLQotc3RydWN0IFI4Ci17
Ci0gICAgdW5zaWduZWQgY2hhciBSOwotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpD
b2xvckYgKmRzdCwgY29uc3QgUjggKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBn
bDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5SKTsKLSAgICAgICAgZHN0LT5ncmVlbiA9IDAuMGY7
Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSAwLjBmOwotICAgICAgICBkc3QtPmFscGhhID0gMS4wZjsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yVUkgKmRzdCwgY29u
c3QgUjggKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBzcmMtPlI7Ci0gICAgICAg
IGRzdC0+Z3JlZW4gPSAwOwotICAgICAgICBkc3QtPmJsdWUgID0gMDsKLSAgICAgICAgZHN0LT5h
bHBoYSA9IDE7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSOCAqZHN0LCBj
b25zdCBnbDo6Q29sb3JGICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6ZmxvYXRU
b05vcm1hbGl6ZWQ8dW5zaWduZWQgY2hhcj4oc3JjLT5yZWQpOwotICAgIH0KLQotICAgIHN0YXRp
YyB2b2lkIHdyaXRlQ29sb3IoUjggKmRzdCwgY29uc3QgZ2w6OkNvbG9yVUkgKnNyYykKLSAgICB7
Ci0gICAgICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHNyYy0+cmVkKTsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFI4ICpkc3QsIGNvbnN0IFI4ICpzcmMx
LCBjb25zdCBSOCAqc3JjMikKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IGdsOjphdmVyYWdlKHNy
YzEtPlIsIHNyYzItPlIpOwotICAgIH0KLX07Ci0KLXN0cnVjdCBBOAotewotICAgIHVuc2lnbmVk
IGNoYXIgQTsKLQotICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNv
bnN0IEE4ICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPnJlZCAgID0gMC4wZjsKLSAgICAgICAg
ZHN0LT5ncmVlbiA9IDAuMGY7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSAwLjBmOwotICAgICAgICBk
c3QtPmFscGhhID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+QSk7Ci0gICAgfQotCi0gICAg
c3RhdGljIHZvaWQgd3JpdGVDb2xvcihBOCAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCi0g
ICAgewotICAgICAgICBkc3QtPkEgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dW5zaWduZWQgY2hh
cj4oc3JjLT5hbHBoYSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgYXZlcmFnZShBOCAqZHN0
LCBjb25zdCBBOCAqc3JjMSwgY29uc3QgQTggKnNyYzIpCi0gICAgewotICAgICAgICBkc3QtPkEg
PSBnbDo6YXZlcmFnZShzcmMxLT5BLCBzcmMyLT5BKTsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgTDhB
OAotewotICAgIHVuc2lnbmVkIGNoYXIgTDsKLSAgICB1bnNpZ25lZCBjaGFyIEE7Ci0KLSAgICBz
dGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBMOEE4ICpzcmMpCi0g
ICAgewotICAgICAgICBjb25zdCBmbG9hdCBsdW0gPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3Jj
LT5MKTsKLSAgICAgICAgZHN0LT5yZWQgICA9IGx1bTsKLSAgICAgICAgZHN0LT5ncmVlbiA9IGx1
bTsKLSAgICAgICAgZHN0LT5ibHVlICA9IGx1bTsKLSAgICAgICAgZHN0LT5hbHBoYSA9IGdsOjpu
b3JtYWxpemVkVG9GbG9hdChzcmMtPkEpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRl
Q29sb3IoTDhBOCAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCi0gICAgewotICAgICAgICBk
c3QtPkwgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dW5zaWduZWQgY2hhcj4oKHNyYy0+cmVkICsg
c3JjLT5ncmVlbiArIHNyYy0+Ymx1ZSkgLyAzLjBmKTsKLSAgICAgICAgZHN0LT5BID0gZ2w6OmZs
b2F0VG9Ob3JtYWxpemVkPHVuc2lnbmVkIGNoYXI+KHNyYy0+YWxwaGEpOwotICAgIH0KLQotICAg
IHN0YXRpYyB2b2lkIGF2ZXJhZ2UoTDhBOCAqZHN0LCBjb25zdCBMOEE4ICpzcmMxLCBjb25zdCBM
OEE4ICpzcmMyKQotICAgIHsKLSAgICAgICAgKih1bnNpZ25lZCBzaG9ydCopZHN0ID0gKCgoKih1
bnNpZ25lZCBzaG9ydCopc3JjMSBeICoodW5zaWduZWQgc2hvcnQqKXNyYzIpICYgMHhGRUZFKSA+
PiAxKSArICgqKHVuc2lnbmVkIHNob3J0KilzcmMxICYgKih1bnNpZ25lZCBzaG9ydCopc3JjMik7
Ci0gICAgfQotfTsKLQotc3RydWN0IEE4TDgKLXsKLSAgICB1bnNpZ25lZCBjaGFyIEE7Ci0gICAg
dW5zaWduZWQgY2hhciBMOwotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYg
KmRzdCwgY29uc3QgQThMOCAqc3JjKQotICAgIHsKLSAgICAgICAgY29uc3QgZmxvYXQgbHVtID0g
Z2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+TCk7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBsdW07
Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSBsdW07Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSBsdW07Ci0g
ICAgICAgIGRzdC0+YWxwaGEgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5BKTsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKEE4TDggKmRzdCwgY29uc3QgZ2w6OkNvbG9y
RiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5MID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPHVu
c2lnbmVkIGNoYXI+KChzcmMtPnJlZCArIHNyYy0+Z3JlZW4gKyBzcmMtPmJsdWUpIC8gMy4wZik7
Ci0gICAgICAgIGRzdC0+QSA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1bnNpZ25lZCBjaGFyPihz
cmMtPmFscGhhKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKEE4TDggKmRzdCwg
Y29uc3QgQThMOCAqc3JjMSwgY29uc3QgQThMOCAqc3JjMikKLSAgICB7Ci0gICAgICAgICoodW5z
aWduZWQgc2hvcnQqKWRzdCA9ICgoKCoodW5zaWduZWQgc2hvcnQqKXNyYzEgXiAqKHVuc2lnbmVk
IHNob3J0KilzcmMyKSAmIDB4RkVGRSkgPj4gMSkgKyAoKih1bnNpZ25lZCBzaG9ydCopc3JjMSAm
ICoodW5zaWduZWQgc2hvcnQqKXNyYzIpOwotICAgIH0KLX07Ci0KLXN0cnVjdCBSOEc4Ci17Ci0g
ICAgdW5zaWduZWQgY2hhciBSOwotICAgIHVuc2lnbmVkIGNoYXIgRzsKLQotICAgIHN0YXRpYyB2
b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFI4RzggKnNyYykKLSAgICB7Ci0g
ICAgICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5SKTsKLSAgICAg
ICAgZHN0LT5ncmVlbiA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkcpOwotICAgICAgICBk
c3QtPmJsdWUgID0gMC4wZjsKLSAgICAgICAgZHN0LT5hbHBoYSA9IDEuMGY7Ci0gICAgfQotCi0g
ICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvclVJICpkc3QsIGNvbnN0IFI4RzggKnNy
YykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBzcmMtPlI7Ci0gICAgICAgIGRzdC0+Z3Jl
ZW4gPSBzcmMtPkc7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSAwOwotICAgICAgICBkc3QtPmFscGhh
ID0gMTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFI4RzggKmRzdCwgY29u
c3QgZ2w6OkNvbG9yRiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6OmZsb2F0VG9O
b3JtYWxpemVkPHVuc2lnbmVkIGNoYXI+KHNyYy0+cmVkKTsKLSAgICAgICAgZHN0LT5HID0gZ2w6
OmZsb2F0VG9Ob3JtYWxpemVkPHVuc2lnbmVkIGNoYXI+KHNyYy0+Z3JlZW4pOwotICAgIH0KLQot
ICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjhHOCAqZHN0LCBjb25zdCBnbDo6Q29sb3JVSSAq
c3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4o
c3JjLT5yZWQpOwotICAgICAgICBkc3QtPkcgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihz
cmMtPmdyZWVuKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFI4RzggKmRzdCwg
Y29uc3QgUjhHOCAqc3JjMSwgY29uc3QgUjhHOCAqc3JjMikKLSAgICB7Ci0gICAgICAgICoodW5z
aWduZWQgc2hvcnQqKWRzdCA9ICgoKCoodW5zaWduZWQgc2hvcnQqKXNyYzEgXiAqKHVuc2lnbmVk
IHNob3J0KilzcmMyKSAmIDB4RkVGRSkgPj4gMSkgKyAoKih1bnNpZ25lZCBzaG9ydCopc3JjMSAm
ICoodW5zaWduZWQgc2hvcnQqKXNyYzIpOwotICAgIH0KLX07Ci0KLXN0cnVjdCBSOEc4QjgKLXsK
LSAgICB1bnNpZ25lZCBjaGFyIFI7Ci0gICAgdW5zaWduZWQgY2hhciBHOwotICAgIHVuc2lnbmVk
IGNoYXIgQjsKLQotICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNv
bnN0IFI4RzhCOCAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9IGdsOjpub3JtYWxp
emVkVG9GbG9hdChzcmMtPlIpOwotICAgICAgICBkc3QtPmdyZWVuID0gZ2w6Om5vcm1hbGl6ZWRU
b0Zsb2F0KHNyYy0+Ryk7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSBnbDo6bm9ybWFsaXplZFRvRmxv
YXQoc3JjLT5CKTsKLSAgICAgICAgZHN0LT5hbHBoYSA9IDEuMGY7Ci0gICAgfQotCi0gICAgc3Rh
dGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvclVJICpkc3QsIGNvbnN0IFI4RzhCOCAqc3JjKQot
ICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKLSAgICAgICAgZHN0LT5ncmVlbiA9
IHNyYy0+RzsKLSAgICAgICAgZHN0LT5ibHVlICA9IHNyYy0+RzsKLSAgICAgICAgZHN0LT5hbHBo
YSA9IDE7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSOEc4QjggKmRzdCwg
Y29uc3QgZ2w6OkNvbG9yRiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6OmZsb2F0
VG9Ob3JtYWxpemVkPHVuc2lnbmVkIGNoYXI+KHNyYy0+cmVkKTsKLSAgICAgICAgZHN0LT5HID0g
Z2w6OmZsb2F0VG9Ob3JtYWxpemVkPHVuc2lnbmVkIGNoYXI+KHNyYy0+Z3JlZW4pOwotICAgICAg
ICBkc3QtPkIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dW5zaWduZWQgY2hhcj4oc3JjLT5ibHVl
KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFI4RzhCOCAqZHN0LCBjb25z
dCBnbDo6Q29sb3JVSSAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcj4oc3JjLT5yZWQpOwotICAgICAgICBkc3QtPkcgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyPihzcmMtPmdyZWVuKTsKLSAgICAgICAgZHN0LT5CID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcj4oc3JjLT5ibHVlKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhdmVy
YWdlKFI4RzhCOCAqZHN0LCBjb25zdCBSOEc4QjggKnNyYzEsIGNvbnN0IFI4RzhCOCAqc3JjMikK
LSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IGdsOjphdmVyYWdlKHNyYzEtPlIsIHNyYzItPlIpOwot
ICAgICAgICBkc3QtPkcgPSBnbDo6YXZlcmFnZShzcmMxLT5HLCBzcmMyLT5HKTsKLSAgICAgICAg
ZHN0LT5CID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Qiwgc3JjMi0+Qik7Ci0gICAgfQotfTsKLQotc3Ry
dWN0IEI4RzhSOAotewotICAgIHVuc2lnbmVkIGNoYXIgQjsKLSAgICB1bnNpZ25lZCBjaGFyIEc7
Ci0gICAgdW5zaWduZWQgY2hhciBSOwotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpD
b2xvckYgKmRzdCwgY29uc3QgQjhHOFI4ICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPnJlZCAg
ID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSBn
bDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5HKTsKLSAgICAgICAgZHN0LT5ibHVlICA9IGdsOjpu
b3JtYWxpemVkVG9GbG9hdChzcmMtPkIpOwotICAgICAgICBkc3QtPmFscGhhID0gMS4wZjsKLSAg
ICB9Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yVUkgKmRzdCwgY29uc3Qg
QjhHOFI4ICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPnJlZCAgID0gc3JjLT5SOwotICAgICAg
ICBkc3QtPmdyZWVuID0gc3JjLT5HOwotICAgICAgICBkc3QtPmJsdWUgID0gc3JjLT5HOwotICAg
ICAgICBkc3QtPmFscGhhID0gMTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9y
KEI4RzhSOCAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCi0gICAgewotICAgICAgICBkc3Qt
PlIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dW5zaWduZWQgY2hhcj4oc3JjLT5yZWQpOwotICAg
ICAgICBkc3QtPkcgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dW5zaWduZWQgY2hhcj4oc3JjLT5n
cmVlbik7Ci0gICAgICAgIGRzdC0+QiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1bnNpZ25lZCBj
aGFyPihzcmMtPmJsdWUpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoQjhH
OFI4ICpkc3QsIGNvbnN0IGdsOjpDb2xvclVJICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPlIg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzcmMtPnJlZCk7Ci0gICAgICAgIGRzdC0+RyA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHNyYy0+Z3JlZW4pOwotICAgICAgICBkc3QtPkIg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzcmMtPmJsdWUpOwotICAgIH0KLQotICAgIHN0
YXRpYyB2b2lkIGF2ZXJhZ2UoQjhHOFI4ICpkc3QsIGNvbnN0IEI4RzhSOCAqc3JjMSwgY29uc3Qg
QjhHOFI4ICpzcmMyKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+
Uiwgc3JjMi0+Uik7Ci0gICAgICAgIGRzdC0+RyA9IGdsOjphdmVyYWdlKHNyYzEtPkcsIHNyYzIt
PkcpOwotICAgICAgICBkc3QtPkIgPSBnbDo6YXZlcmFnZShzcmMxLT5CLCBzcmMyLT5CKTsKLSAg
ICB9Ci19OwotCi1zdHJ1Y3QgUjVHNkI1Ci17Ci0gICAgLy8gT3BlbkdMIEVTIDIuMC4yNSBzcGVj
IFNlY3Rpb24gMy42LjI6ICJDb21wb25lbnRzIGFyZSBwYWNrZWQgd2l0aCB0aGUgZmlyc3QgY29t
cG9uZW50IGluIHRoZSBtb3N0IHNpZ25pZmljYW50Ci0gICAgLy8gYml0cyBvZiB0aGUgYml0Zmll
bGQsIGFuZCBzdWNjZXNzaXZlIGNvbXBvbmVudCBvY2N1cHlpbmcgcHJvZ3Jlc3NpdmVseSBsZXNz
IHNpZ25pZmljYW50IGxvY2F0aW9ucyIKLSAgICB1bnNpZ25lZCBzaG9ydCBSR0I7Ci0KLSAgICBz
dGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSNUc2QjUgKnNyYykK
LSAgICB7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQ8NT4oZ2w6
OmdldFNoaWZ0ZWREYXRhPDUsIDExPihzcmMtPlJHQikpOwotICAgICAgICBkc3QtPmdyZWVuID0g
Z2w6Om5vcm1hbGl6ZWRUb0Zsb2F0PDY+KGdsOjpnZXRTaGlmdGVkRGF0YTw2LCAgNT4oc3JjLT5S
R0IpKTsKLSAgICAgICAgZHN0LT5ibHVlICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdDw1PihnbDo6
Z2V0U2hpZnRlZERhdGE8NSwgIDA+KHNyYy0+UkdCKSk7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSAx
LjBmOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjVHNkI1ICpkc3QsIGNv
bnN0IGdsOjpDb2xvckYgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+UkdCID0gZ2w6OnNoaWZ0
RGF0YTw1LCAxMT4oZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPDUsIHVuc2lnbmVkIHNob3J0PihzcmMt
PnJlZCkpICAgfAotICAgICAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NiwgIDU+KGdsOjpm
bG9hdFRvTm9ybWFsaXplZDw2LCB1bnNpZ25lZCBzaG9ydD4oc3JjLT5ncmVlbikpIHwKLSAgICAg
ICAgICAgICAgICAgICBnbDo6c2hpZnREYXRhPDUsICAwPihnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8
NSwgdW5zaWduZWQgc2hvcnQ+KHNyYy0+Ymx1ZSkpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lk
IGF2ZXJhZ2UoUjVHNkI1ICpkc3QsIGNvbnN0IFI1RzZCNSAqc3JjMSwgY29uc3QgUjVHNkI1ICpz
cmMyKQotICAgIHsKLSAgICAgICAgZHN0LT5SR0IgPSBnbDo6c2hpZnREYXRhPDUsIDExPihnbDo6
YXZlcmFnZShnbDo6Z2V0U2hpZnRlZERhdGE8NSwgMTE+KHNyYzEtPlJHQiksIGdsOjpnZXRTaGlm
dGVkRGF0YTw1LCAxMT4oc3JjMi0+UkdCKSkpIHwKLSAgICAgICAgICAgICAgICAgICBnbDo6c2hp
ZnREYXRhPDYsICA1PihnbDo6YXZlcmFnZShnbDo6Z2V0U2hpZnRlZERhdGE8NiwgIDU+KHNyYzEt
PlJHQiksIGdsOjpnZXRTaGlmdGVkRGF0YTw2LCAgNT4oc3JjMi0+UkdCKSkpIHwKLSAgICAgICAg
ICAgICAgICAgICBnbDo6c2hpZnREYXRhPDUsICAwPihnbDo6YXZlcmFnZShnbDo6Z2V0U2hpZnRl
ZERhdGE8NSwgIDA+KHNyYzEtPlJHQiksIGdsOjpnZXRTaGlmdGVkRGF0YTw1LCAgMD4oc3JjMi0+
UkdCKSkpOwotICAgIH0KLX07Ci0KLXN0cnVjdCBBOFI4RzhCOAotewotICAgIHVuc2lnbmVkIGNo
YXIgQTsKLSAgICB1bnNpZ25lZCBjaGFyIFI7Ci0gICAgdW5zaWduZWQgY2hhciBHOwotICAgIHVu
c2lnbmVkIGNoYXIgQjsKLQotICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpk
c3QsIGNvbnN0IEE4UjhHOEI4ICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPnJlZCAgID0gZ2w6
Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSBnbDo6bm9y
bWFsaXplZFRvRmxvYXQoc3JjLT5HKTsKLSAgICAgICAgZHN0LT5ibHVlICA9IGdsOjpub3JtYWxp
emVkVG9GbG9hdChzcmMtPkIpOwotICAgICAgICBkc3QtPmFscGhhID0gZ2w6Om5vcm1hbGl6ZWRU
b0Zsb2F0KHNyYy0+QSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpD
b2xvclVJICpkc3QsIGNvbnN0IEE4UjhHOEI4ICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPnJl
ZCAgID0gc3JjLT5SOwotICAgICAgICBkc3QtPmdyZWVuID0gc3JjLT5HOwotICAgICAgICBkc3Qt
PmJsdWUgID0gc3JjLT5COwotICAgICAgICBkc3QtPmFscGhhID0gc3JjLT5BOwotICAgIH0KLQot
ICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoQThSOEc4QjggKmRzdCwgY29uc3QgZ2w6OkNvbG9y
RiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPHVu
c2lnbmVkIGNoYXI+KHNyYy0+cmVkKTsKLSAgICAgICAgZHN0LT5HID0gZ2w6OmZsb2F0VG9Ob3Jt
YWxpemVkPHVuc2lnbmVkIGNoYXI+KHNyYy0+Z3JlZW4pOwotICAgICAgICBkc3QtPkIgPSBnbDo6
ZmxvYXRUb05vcm1hbGl6ZWQ8dW5zaWduZWQgY2hhcj4oc3JjLT5ibHVlKTsKLSAgICAgICAgZHN0
LT5BID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPHVuc2lnbmVkIGNoYXI+KHNyYy0+YWxwaGEpOwot
ICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoQThSOEc4QjggKmRzdCwgY29uc3Qg
Z2w6OkNvbG9yVUkgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXI+KHNyYy0+cmVkKTsKLSAgICAgICAgZHN0LT5HID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcj4oc3JjLT5ncmVlbik7Ci0gICAgICAgIGRzdC0+QiA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXI+KHNyYy0+Ymx1ZSk7Ci0gICAgICAgIGRzdC0+QSA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXI+KHNyYy0+YWxwaGEpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGF2ZXJh
Z2UoQThSOEc4QjggKmRzdCwgY29uc3QgQThSOEc4QjggKnNyYzEsIGNvbnN0IEE4UjhHOEI4ICpz
cmMyKQotICAgIHsKLSAgICAgICAgKih1bnNpZ25lZCBpbnQqKWRzdCA9ICgoKCoodW5zaWduZWQg
aW50KilzcmMxIF4gKih1bnNpZ25lZCBpbnQqKXNyYzIpICYgMHhGRUZFRkVGRSkgPj4gMSkgKyAo
Kih1bnNpZ25lZCBpbnQqKXNyYzEgJiAqKHVuc2lnbmVkIGludCopc3JjMik7Ci0gICAgfQotfTsK
LQotc3RydWN0IFI4RzhCOEE4Ci17Ci0gICAgdW5zaWduZWQgY2hhciBSOwotICAgIHVuc2lnbmVk
IGNoYXIgRzsKLSAgICB1bnNpZ25lZCBjaGFyIEI7Ci0gICAgdW5zaWduZWQgY2hhciBBOwotCi0g
ICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjhHOEI4QTgg
KnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQo
c3JjLT5SKTsKLSAgICAgICAgZHN0LT5ncmVlbiA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMt
PkcpOwotICAgICAgICBkc3QtPmJsdWUgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Qik7
Ci0gICAgICAgIGRzdC0+YWxwaGEgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5BKTsKLSAg
ICB9Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yVUkgKmRzdCwgY29uc3Qg
UjhHOEI4QTggKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBzcmMtPlI7Ci0gICAg
ICAgIGRzdC0+Z3JlZW4gPSBzcmMtPkc7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSBzcmMtPkI7Ci0g
ICAgICAgIGRzdC0+YWxwaGEgPSBzcmMtPkE7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3Jp
dGVDb2xvcihSOEc4QjhBOCAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCi0gICAgewotICAg
ICAgICBkc3QtPlIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dW5zaWduZWQgY2hhcj4oc3JjLT5y
ZWQpOwotICAgICAgICBkc3QtPkcgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dW5zaWduZWQgY2hh
cj4oc3JjLT5ncmVlbik7Ci0gICAgICAgIGRzdC0+QiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1
bnNpZ25lZCBjaGFyPihzcmMtPmJsdWUpOwotICAgICAgICBkc3QtPkEgPSBnbDo6ZmxvYXRUb05v
cm1hbGl6ZWQ8dW5zaWduZWQgY2hhcj4oc3JjLT5hbHBoYSk7Ci0gICAgfQotCi0gICAgc3RhdGlj
IHZvaWQgd3JpdGVDb2xvcihSOEc4QjhBOCAqZHN0LCBjb25zdCBnbDo6Q29sb3JVSSAqc3JjKQot
ICAgIHsKLSAgICAgICAgZHN0LT5SID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oc3JjLT5y
ZWQpOwotICAgICAgICBkc3QtPkcgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzcmMtPmdy
ZWVuKTsKLSAgICAgICAgZHN0LT5CID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oc3JjLT5i
bHVlKTsKLSAgICAgICAgZHN0LT5BID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oc3JjLT5h
bHBoYSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgYXZlcmFnZShSOEc4QjhBOCAqZHN0LCBj
b25zdCBSOEc4QjhBOCAqc3JjMSwgY29uc3QgUjhHOEI4QTggKnNyYzIpCi0gICAgewotICAgICAg
ICAqKHVuc2lnbmVkIGludCopZHN0ID0gKCgoKih1bnNpZ25lZCBpbnQqKXNyYzEgXiAqKHVuc2ln
bmVkIGludCopc3JjMikgJiAweEZFRkVGRUZFKSA+PiAxKSArICgqKHVuc2lnbmVkIGludCopc3Jj
MSAmICoodW5zaWduZWQgaW50KilzcmMyKTsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgQjhHOFI4QTgK
LXsKLSAgICB1bnNpZ25lZCBjaGFyIEI7Ci0gICAgdW5zaWduZWQgY2hhciBHOwotICAgIHVuc2ln
bmVkIGNoYXIgUjsKLSAgICB1bnNpZ25lZCBjaGFyIEE7Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFk
Q29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBCOEc4UjhBOCAqc3JjKQotICAgIHsKLSAgICAg
ICAgZHN0LT5yZWQgICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPlIpOwotICAgICAgICBk
c3QtPmdyZWVuID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Ryk7Ci0gICAgICAgIGRzdC0+
Ymx1ZSAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5CKTsKLSAgICAgICAgZHN0LT5hbHBo
YSA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkEpOwotICAgIH0KLQotICAgIHN0YXRpYyB2
b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JVSSAqZHN0LCBjb25zdCBCOEc4UjhBOCAqc3JjKQotICAg
IHsKLSAgICAgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKLSAgICAgICAgZHN0LT5ncmVlbiA9IHNy
Yy0+RzsKLSAgICAgICAgZHN0LT5ibHVlICA9IHNyYy0+QjsKLSAgICAgICAgZHN0LT5hbHBoYSA9
IHNyYy0+QTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKEI4RzhSOEE4ICpk
c3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IGdsOjpm
bG9hdFRvTm9ybWFsaXplZDx1bnNpZ25lZCBjaGFyPihzcmMtPnJlZCk7Ci0gICAgICAgIGRzdC0+
RyA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1bnNpZ25lZCBjaGFyPihzcmMtPmdyZWVuKTsKLSAg
ICAgICAgZHN0LT5CID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPHVuc2lnbmVkIGNoYXI+KHNyYy0+
Ymx1ZSk7Ci0gICAgICAgIGRzdC0+QSA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1bnNpZ25lZCBj
aGFyPihzcmMtPmFscGhhKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKEI4
RzhSOEE4ICpkc3QsIGNvbnN0IGdsOjpDb2xvclVJICpzcmMpCi0gICAgewotICAgICAgICBkc3Qt
PlIgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzcmMtPnJlZCk7Ci0gICAgICAgIGRzdC0+
RyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHNyYy0+Z3JlZW4pOwotICAgICAgICBkc3Qt
PkIgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzcmMtPmJsdWUpOwotICAgICAgICBkc3Qt
PkEgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzcmMtPmFscGhhKTsKLSAgICB9Ci0KLSAg
ICBzdGF0aWMgdm9pZCBhdmVyYWdlKEI4RzhSOEE4ICpkc3QsIGNvbnN0IEI4RzhSOEE4ICpzcmMx
LCBjb25zdCBCOEc4UjhBOCAqc3JjMikKLSAgICB7Ci0gICAgICAgICoodW5zaWduZWQgaW50Kilk
c3QgPSAoKCgqKHVuc2lnbmVkIGludCopc3JjMSBeICoodW5zaWduZWQgaW50KilzcmMyKSAmIDB4
RkVGRUZFRkUpID4+IDEpICsgKCoodW5zaWduZWQgaW50KilzcmMxICYgKih1bnNpZ25lZCBpbnQq
KXNyYzIpOwotICAgIH0KLX07Ci0KLXN0cnVjdCBCOEc4UjhYOAotewotICAgIHVuc2lnbmVkIGNo
YXIgQjsKLSAgICB1bnNpZ25lZCBjaGFyIEc7Ci0gICAgdW5zaWduZWQgY2hhciBSOwotICAgIHVu
c2lnbmVkIGNoYXIgWDsKLQotICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpk
c3QsIGNvbnN0IEI4RzhSOFg4ICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPnJlZCA9IGdsOjpu
b3JtYWxpemVkVG9GbG9hdChzcmMtPlIpOwotICAgICAgICBkc3QtPmdyZWVuID0gZ2w6Om5vcm1h
bGl6ZWRUb0Zsb2F0KHNyYy0+Ryk7Ci0gICAgICAgIGRzdC0+Ymx1ZSA9IGdsOjpub3JtYWxpemVk
VG9GbG9hdChzcmMtPkIpOwotICAgICAgICBkc3QtPmFscGhhID0gMS4wZjsKLSAgICB9Ci0KLSAg
ICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yVUkgKmRzdCwgY29uc3QgQjhHOFI4WDgg
KnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVkID0gc3JjLT5SOwotICAgICAgICBkc3QtPmdy
ZWVuID0gc3JjLT5HOwotICAgICAgICBkc3QtPmJsdWUgPSBzcmMtPkI7Ci0gICAgICAgIGRzdC0+
YWxwaGEgPSAxOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoQjhHOFI4WDgg
KmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6
OmZsb2F0VG9Ob3JtYWxpemVkPHVuc2lnbmVkIGNoYXI+KHNyYy0+cmVkKTsKLSAgICAgICAgZHN0
LT5HID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPHVuc2lnbmVkIGNoYXI+KHNyYy0+Z3JlZW4pOwot
ICAgICAgICBkc3QtPkIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dW5zaWduZWQgY2hhcj4oc3Jj
LT5ibHVlKTsKLSAgICAgICAgZHN0LT5YID0gMjU1OwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lk
IHdyaXRlQ29sb3IoQjhHOFI4WDggKmRzdCwgY29uc3QgZ2w6OkNvbG9yVUkgKnNyYykKLSAgICB7
Ci0gICAgICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHNyYy0+cmVkKTsK
LSAgICAgICAgZHN0LT5HID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oc3JjLT5ncmVlbik7
Ci0gICAgICAgIGRzdC0+QiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHNyYy0+Ymx1ZSk7
Ci0gICAgICAgIGRzdC0+WCA9IDI1NTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhdmVyYWdl
KEI4RzhSOFg4ICpkc3QsIGNvbnN0IEI4RzhSOFg4ICpzcmMxLCBjb25zdCBCOEc4UjhYOCAqc3Jj
MikKLSAgICB7Ci0gICAgICAgICoodW5zaWduZWQgaW50Kilkc3QgPSAoKCgqKHVuc2lnbmVkIGlu
dCopc3JjMSBeICoodW5zaWduZWQgaW50KilzcmMyKSAmIDB4RkVGRUZFRkUpID4+IDEpICsgKCoo
dW5zaWduZWQgaW50KilzcmMxICYgKih1bnNpZ25lZCBpbnQqKXNyYzIpOwotICAgICAgICBkc3Qt
PlggPSAyNTU7Ci0gICAgfQotfTsKLQotc3RydWN0IEExUjVHNUI1Ci17Ci0gICAgdW5zaWduZWQg
c2hvcnQgQVJHQjsKLQotICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3Qs
IGNvbnN0IEExUjVHNUI1ICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPmFscGhhID0gZ2w6Om5v
cm1hbGl6ZWRUb0Zsb2F0PDE+KGdsOjpnZXRTaGlmdGVkRGF0YTwxLCAxNT4oc3JjLT5BUkdCKSk7
Ci0gICAgICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQ8NT4oZ2w6OmdldFNo
aWZ0ZWREYXRhPDUsIDEwPihzcmMtPkFSR0IpKTsKLSAgICAgICAgZHN0LT5ncmVlbiA9IGdsOjpu
b3JtYWxpemVkVG9GbG9hdDw1PihnbDo6Z2V0U2hpZnRlZERhdGE8NSwgIDU+KHNyYy0+QVJHQikp
OwotICAgICAgICBkc3QtPmJsdWUgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0PDU+KGdsOjpnZXRT
aGlmdGVkRGF0YTw1LCAgMD4oc3JjLT5BUkdCKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQg
d3JpdGVDb2xvcihBMVI1RzVCNSAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCi0gICAgewot
ICAgICAgICBkc3QtPkFSR0IgPSBnbDo6c2hpZnREYXRhPDEsIDE1PihnbDo6ZmxvYXRUb05vcm1h
bGl6ZWQ8MSwgdW5zaWduZWQgc2hvcnQ+KHNyYy0+YWxwaGEpKSB8Ci0gICAgICAgICAgICAgICAg
ICAgIGdsOjpzaGlmdERhdGE8NSwgMTA+KGdsOjpmbG9hdFRvTm9ybWFsaXplZDw1LCB1bnNpZ25l
ZCBzaG9ydD4oc3JjLT5yZWQpKSAgIHwKLSAgICAgICAgICAgICAgICAgICAgZ2w6OnNoaWZ0RGF0
YTw1LCAgNT4oZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPDUsIHVuc2lnbmVkIHNob3J0PihzcmMtPmdy
ZWVuKSkgfAotICAgICAgICAgICAgICAgICAgICBnbDo6c2hpZnREYXRhPDUsICAwPihnbDo6Zmxv
YXRUb05vcm1hbGl6ZWQ8NSwgdW5zaWduZWQgc2hvcnQ+KHNyYy0+Ymx1ZSkpOwotICAgIH0KLQot
ICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoQTFSNUc1QjUgKmRzdCwgY29uc3QgQTFSNUc1QjUgKnNy
YzEsIGNvbnN0IEExUjVHNUI1ICpzcmMyKQotICAgIHsKLSAgICAgICAgZHN0LT5BUkdCID0gZ2w6
OnNoaWZ0RGF0YTwxLCAxNT4oZ2w6OmF2ZXJhZ2UoZ2w6OmdldFNoaWZ0ZWREYXRhPDEsIDE1Pihz
cmMxLT5BUkdCKSwgZ2w6OmdldFNoaWZ0ZWREYXRhPDEsIDE1PihzcmMyLT5BUkdCKSkpIHwKLSAg
ICAgICAgICAgICAgICAgICAgZ2w6OnNoaWZ0RGF0YTw1LCAxMD4oZ2w6OmF2ZXJhZ2UoZ2w6Omdl
dFNoaWZ0ZWREYXRhPDUsIDEwPihzcmMxLT5BUkdCKSwgZ2w6OmdldFNoaWZ0ZWREYXRhPDUsIDEw
PihzcmMyLT5BUkdCKSkpIHwKLSAgICAgICAgICAgICAgICAgICAgZ2w6OnNoaWZ0RGF0YTw1LCAg
NT4oZ2w6OmF2ZXJhZ2UoZ2w6OmdldFNoaWZ0ZWREYXRhPDUsICA1PihzcmMxLT5BUkdCKSwgZ2w6
OmdldFNoaWZ0ZWREYXRhPDUsICA1PihzcmMyLT5BUkdCKSkpIHwKLSAgICAgICAgICAgICAgICAg
ICAgZ2w6OnNoaWZ0RGF0YTw1LCAgMD4oZ2w6OmF2ZXJhZ2UoZ2w6OmdldFNoaWZ0ZWREYXRhPDUs
ICAwPihzcmMxLT5BUkdCKSwgZ2w6OmdldFNoaWZ0ZWREYXRhPDUsICAwPihzcmMyLT5BUkdCKSkp
OwotICAgIH0KLX07Ci0KLXN0cnVjdCBSNUc1QjVBMQotewotICAgIC8vIE9wZW5HTCBFUyAyLjAu
MjUgc3BlYyBTZWN0aW9uIDMuNi4yOiAiQ29tcG9uZW50cyBhcmUgcGFja2VkIHdpdGggdGhlIGZp
cnN0IGNvbXBvbmVudCBpbiB0aGUgbW9zdCBzaWduaWZpY2FudAotICAgIC8vIGJpdHMgb2YgdGhl
IGJpdGZpZWxkLCBhbmQgc3VjY2Vzc2l2ZSBjb21wb25lbnQgb2NjdXB5aW5nIHByb2dyZXNzaXZl
bHkgbGVzcyBzaWduaWZpY2FudCBsb2NhdGlvbnMiCi0gICAgdW5zaWduZWQgc2hvcnQgUkdCQTsK
LQotICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFI1RzVC
NUExICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zs
b2F0PDU+KGdsOjpnZXRTaGlmdGVkRGF0YTw1LCAxMT4oc3JjLT5SR0JBKSk7Ci0gICAgICAgIGRz
dC0+Z3JlZW4gPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQ8NT4oZ2w6OmdldFNoaWZ0ZWREYXRhPDUs
ICA2PihzcmMtPlJHQkEpKTsKLSAgICAgICAgZHN0LT5ibHVlICA9IGdsOjpub3JtYWxpemVkVG9G
bG9hdDw1PihnbDo6Z2V0U2hpZnRlZERhdGE8NSwgIDE+KHNyYy0+UkdCQSkpOwotICAgICAgICBk
c3QtPmFscGhhID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0PDE+KGdsOjpnZXRTaGlmdGVkRGF0YTwx
LCAgMD4oc3JjLT5SR0JBKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihS
NUc1QjVBMSAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCi0gICAgewotICAgICAgICBkc3Qt
PlJHQkEgPSBnbDo6c2hpZnREYXRhPDUsIDExPihnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8NSwgdW5z
aWduZWQgc2hvcnQ+KHNyYy0+cmVkKSkgICB8Ci0gICAgICAgICAgICAgICAgICAgIGdsOjpzaGlm
dERhdGE8NSwgIDY+KGdsOjpmbG9hdFRvTm9ybWFsaXplZDw1LCB1bnNpZ25lZCBzaG9ydD4oc3Jj
LT5ncmVlbikpIHwKLSAgICAgICAgICAgICAgICAgICAgZ2w6OnNoaWZ0RGF0YTw1LCAgMT4oZ2w6
OmZsb2F0VG9Ob3JtYWxpemVkPDUsIHVuc2lnbmVkIHNob3J0PihzcmMtPmJsdWUpKSAgfAotICAg
ICAgICAgICAgICAgICAgICBnbDo6c2hpZnREYXRhPDEsICAwPihnbDo6ZmxvYXRUb05vcm1hbGl6
ZWQ8MSwgdW5zaWduZWQgc2hvcnQ+KHNyYy0+YWxwaGEpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMg
dm9pZCBhdmVyYWdlKFI1RzVCNUExICpkc3QsIGNvbnN0IFI1RzVCNUExICpzcmMxLCBjb25zdCBS
NUc1QjVBMSAqc3JjMikKLSAgICB7Ci0gICAgICAgIGRzdC0+UkdCQSA9IGdsOjpzaGlmdERhdGE8
NSwgMTE+KGdsOjphdmVyYWdlKGdsOjpnZXRTaGlmdGVkRGF0YTw1LCAxMT4oc3JjMS0+UkdCQSks
IGdsOjpnZXRTaGlmdGVkRGF0YTw1LCAxMT4oc3JjMi0+UkdCQSkpKSB8Ci0gICAgICAgICAgICAg
ICAgICAgIGdsOjpzaGlmdERhdGE8NSwgIDY+KGdsOjphdmVyYWdlKGdsOjpnZXRTaGlmdGVkRGF0
YTw1LCAgNj4oc3JjMS0+UkdCQSksIGdsOjpnZXRTaGlmdGVkRGF0YTw1LCAgNj4oc3JjMi0+UkdC
QSkpKSB8Ci0gICAgICAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NSwgIDE+KGdsOjphdmVy
YWdlKGdsOjpnZXRTaGlmdGVkRGF0YTw1LCAgMT4oc3JjMS0+UkdCQSksIGdsOjpnZXRTaGlmdGVk
RGF0YTw1LCAgMT4oc3JjMi0+UkdCQSkpKSB8Ci0gICAgICAgICAgICAgICAgICAgIGdsOjpzaGlm
dERhdGE8MSwgIDA+KGdsOjphdmVyYWdlKGdsOjpnZXRTaGlmdGVkRGF0YTwxLCAgMD4oc3JjMS0+
UkdCQSksIGdsOjpnZXRTaGlmdGVkRGF0YTwxLCAgMD4oc3JjMi0+UkdCQSkpKTsKLSAgICB9Ci19
OwotCi1zdHJ1Y3QgUjRHNEI0QTQKLXsKLSAgICAvLyBPcGVuR0wgRVMgMi4wLjI1IHNwZWMgU2Vj
dGlvbiAzLjYuMjogIkNvbXBvbmVudHMgYXJlIHBhY2tlZCB3aXRoIHRoZSBmaXJzdCBjb21wb25l
bnQgaW4gdGhlIG1vc3Qgc2lnbmlmaWNhbnQKLSAgICAvLyBiaXRzIG9mIHRoZSBiaXRmaWVsZCwg
YW5kIHN1Y2Nlc3NpdmUgY29tcG9uZW50IG9jY3VweWluZyBwcm9ncmVzc2l2ZWx5IGxlc3Mgc2ln
bmlmaWNhbnQgbG9jYXRpb25zIgotICAgIHVuc2lnbmVkIHNob3J0IFJHQkE7Ci0KLSAgICBzdGF0
aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSNEc0QjRBNCAqc3JjKQot
ICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdDw0PihnbDo6
Z2V0U2hpZnRlZERhdGE8NCwgMTI+KHNyYy0+UkdCQSkpOwotICAgICAgICBkc3QtPmdyZWVuID0g
Z2w6Om5vcm1hbGl6ZWRUb0Zsb2F0PDQ+KGdsOjpnZXRTaGlmdGVkRGF0YTw0LCAgOD4oc3JjLT5S
R0JBKSk7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQ8ND4oZ2w6
OmdldFNoaWZ0ZWREYXRhPDQsICA0PihzcmMtPlJHQkEpKTsKLSAgICAgICAgZHN0LT5hbHBoYSA9
IGdsOjpub3JtYWxpemVkVG9GbG9hdDw0PihnbDo6Z2V0U2hpZnRlZERhdGE8NCwgIDA+KHNyYy0+
UkdCQSkpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjRHNEI0QTQgKmRz
dCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5SR0JBID0gZ2w6
OnNoaWZ0RGF0YTw0LCAxMj4oZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPDQsIHVuc2lnbmVkIHNob3J0
PihzcmMtPnJlZCkpICB8Ci0gICAgICAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NCwgIDg+
KGdsOjpmbG9hdFRvTm9ybWFsaXplZDw0LCB1bnNpZ25lZCBzaG9ydD4oc3JjLT5ncmVlbikpIHwK
LSAgICAgICAgICAgICAgICAgICAgZ2w6OnNoaWZ0RGF0YTw0LCAgND4oZ2w6OmZsb2F0VG9Ob3Jt
YWxpemVkPDQsIHVuc2lnbmVkIHNob3J0PihzcmMtPmJsdWUpKSAgIHwKLSAgICAgICAgICAgICAg
ICAgICAgZ2w6OnNoaWZ0RGF0YTw0LCAgMD4oZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPDQsIHVuc2ln
bmVkIHNob3J0PihzcmMtPmFscGhhKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgYXZlcmFn
ZShSNEc0QjRBNCAqZHN0LCBjb25zdCBSNEc0QjRBNCAqc3JjMSwgY29uc3QgUjRHNEI0QTQgKnNy
YzIpCi0gICAgewotICAgICAgICBkc3QtPlJHQkEgPSBnbDo6c2hpZnREYXRhPDQsIDEyPihnbDo6
YXZlcmFnZShnbDo6Z2V0U2hpZnRlZERhdGE8NCwgMTI+KHNyYzEtPlJHQkEpLCBnbDo6Z2V0U2hp
ZnRlZERhdGE8NCwgMTI+KHNyYzItPlJHQkEpKSkgfAotICAgICAgICAgICAgICAgICAgICBnbDo6
c2hpZnREYXRhPDQsICA4PihnbDo6YXZlcmFnZShnbDo6Z2V0U2hpZnRlZERhdGE8NCwgIDg+KHNy
YzEtPlJHQkEpLCBnbDo6Z2V0U2hpZnRlZERhdGE8NCwgIDg+KHNyYzItPlJHQkEpKSkgfAotICAg
ICAgICAgICAgICAgICAgICBnbDo6c2hpZnREYXRhPDQsICA0PihnbDo6YXZlcmFnZShnbDo6Z2V0
U2hpZnRlZERhdGE8NCwgIDQ+KHNyYzEtPlJHQkEpLCBnbDo6Z2V0U2hpZnRlZERhdGE8NCwgIDQ+
KHNyYzItPlJHQkEpKSkgfAotICAgICAgICAgICAgICAgICAgICBnbDo6c2hpZnREYXRhPDQsICAw
PihnbDo6YXZlcmFnZShnbDo6Z2V0U2hpZnRlZERhdGE8NCwgIDA+KHNyYzEtPlJHQkEpLCBnbDo6
Z2V0U2hpZnRlZERhdGE8NCwgIDA+KHNyYzItPlJHQkEpKSk7Ci0gICAgfQotfTsKLQotc3RydWN0
IEE0UjRHNEI0Ci17Ci0gICAgdW5zaWduZWQgc2hvcnQgQVJHQjsKLQotICAgIHN0YXRpYyB2b2lk
IHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IEE0UjRHNEI0ICpzcmMpCi0gICAgewot
ICAgICAgICBkc3QtPmFscGhhID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0PDQ+KGdsOjpnZXRTaGlm
dGVkRGF0YTw0LCAxMj4oc3JjLT5BUkdCKSk7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBnbDo6bm9y
bWFsaXplZFRvRmxvYXQ8ND4oZ2w6OmdldFNoaWZ0ZWREYXRhPDQsICA4PihzcmMtPkFSR0IpKTsK
LSAgICAgICAgZHN0LT5ncmVlbiA9IGdsOjpub3JtYWxpemVkVG9GbG9hdDw0PihnbDo6Z2V0U2hp
ZnRlZERhdGE8NCwgIDQ+KHNyYy0+QVJHQikpOwotICAgICAgICBkc3QtPmJsdWUgID0gZ2w6Om5v
cm1hbGl6ZWRUb0Zsb2F0PDQ+KGdsOjpnZXRTaGlmdGVkRGF0YTw0LCAgMD4oc3JjLT5BUkdCKSk7
Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihBNFI0RzRCNCAqZHN0LCBjb25z
dCBnbDo6Q29sb3JGICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPkFSR0IgPSBnbDo6c2hpZnRE
YXRhPDQsIDEyPihnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8NCwgdW5zaWduZWQgc2hvcnQ+KHNyYy0+
YWxwaGEpKSAgfAotICAgICAgICAgICAgICAgICAgICBnbDo6c2hpZnREYXRhPDQsICA4PihnbDo6
ZmxvYXRUb05vcm1hbGl6ZWQ8NCwgdW5zaWduZWQgc2hvcnQ+KHNyYy0+cmVkKSkgfAotICAgICAg
ICAgICAgICAgICAgICBnbDo6c2hpZnREYXRhPDQsICA0PihnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8
NCwgdW5zaWduZWQgc2hvcnQ+KHNyYy0+Z3JlZW4pKSAgIHwKLSAgICAgICAgICAgICAgICAgICAg
Z2w6OnNoaWZ0RGF0YTw0LCAgMD4oZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPDQsIHVuc2lnbmVkIHNo
b3J0PihzcmMtPmJsdWUpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKEE0UjRH
NEI0ICpkc3QsIGNvbnN0IEE0UjRHNEI0ICpzcmMxLCBjb25zdCBBNFI0RzRCNCAqc3JjMikKLSAg
ICB7Ci0gICAgICAgIGRzdC0+QVJHQiA9IGdsOjpzaGlmdERhdGE8NCwgMTI+KGdsOjphdmVyYWdl
KGdsOjpnZXRTaGlmdGVkRGF0YTw0LCAxMj4oc3JjMS0+QVJHQiksIGdsOjpnZXRTaGlmdGVkRGF0
YTw0LCAxMj4oc3JjMi0+QVJHQikpKSB8Ci0gICAgICAgICAgICAgICAgICAgIGdsOjpzaGlmdERh
dGE8NCwgIDg+KGdsOjphdmVyYWdlKGdsOjpnZXRTaGlmdGVkRGF0YTw0LCAgOD4oc3JjMS0+QVJH
QiksIGdsOjpnZXRTaGlmdGVkRGF0YTw0LCAgOD4oc3JjMi0+QVJHQikpKSB8Ci0gICAgICAgICAg
ICAgICAgICAgIGdsOjpzaGlmdERhdGE8NCwgIDQ+KGdsOjphdmVyYWdlKGdsOjpnZXRTaGlmdGVk
RGF0YTw0LCAgND4oc3JjMS0+QVJHQiksIGdsOjpnZXRTaGlmdGVkRGF0YTw0LCAgND4oc3JjMi0+
QVJHQikpKSB8Ci0gICAgICAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NCwgIDA+KGdsOjph
dmVyYWdlKGdsOjpnZXRTaGlmdGVkRGF0YTw0LCAgMD4oc3JjMS0+QVJHQiksIGdsOjpnZXRTaGlm
dGVkRGF0YTw0LCAgMD4oc3JjMi0+QVJHQikpKTsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgUjE2Ci17
Ci0gICAgdW5zaWduZWQgc2hvcnQgUjsKLQotICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6
Q29sb3JGICpkc3QsIGNvbnN0IFIxNiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9
IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPlIpOwotICAgICAgICBkc3QtPmdyZWVuID0gMC4w
ZjsKLSAgICAgICAgZHN0LT5ibHVlICA9IDAuMGY7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSAxLjBm
OwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JVSSAqZHN0LCBj
b25zdCBSMTYgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBzcmMtPlI7Ci0gICAg
ICAgIGRzdC0+Z3JlZW4gPSAwOwotICAgICAgICBkc3QtPmJsdWUgID0gMDsKLSAgICAgICAgZHN0
LT5hbHBoYSA9IDE7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSMTYgKmRz
dCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6OmZs
b2F0VG9Ob3JtYWxpemVkPHVuc2lnbmVkIHNob3J0PihzcmMtPnJlZCk7Ci0gICAgfQotCi0gICAg
c3RhdGljIHZvaWQgd3JpdGVDb2xvcihSMTYgKmRzdCwgY29uc3QgZ2w6OkNvbG9yVUkgKnNyYykK
LSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0PihzcmMt
PnJlZCk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgYXZlcmFnZShSMTYgKmRzdCwgY29uc3Qg
UjE2ICpzcmMxLCBjb25zdCBSMTYgKnNyYzIpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6
YXZlcmFnZShzcmMxLT5SLCBzcmMyLT5SKTsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgUjE2RzE2Ci17
Ci0gICAgdW5zaWduZWQgc2hvcnQgUjsKLSAgICB1bnNpZ25lZCBzaG9ydCBHOwotCi0gICAgc3Rh
dGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjE2RzE2ICpzcmMpCi0g
ICAgewotICAgICAgICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7
Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5HKTsKLSAg
ICAgICAgZHN0LT5ibHVlICA9IDAuMGY7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSAxLjBmOwotICAg
IH0KLQotICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JVSSAqZHN0LCBjb25zdCBS
MTZHMTYgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVkID0gc3JjLT5SOwotICAgICAgICBk
c3QtPmdyZWVuID0gc3JjLT5HOwotICAgICAgICBkc3QtPmJsdWUgID0gMDsKLSAgICAgICAgZHN0
LT5hbHBoYSA9IDE7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSMTZHMTYg
KmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6
OmZsb2F0VG9Ob3JtYWxpemVkPHVuc2lnbmVkIHNob3J0PihzcmMtPnJlZCk7Ci0gICAgICAgIGRz
dC0+RyA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1bnNpZ25lZCBzaG9ydD4oc3JjLT5ncmVlbik7
Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSMTZHMTYgKmRzdCwgY29uc3Qg
Z2w6OkNvbG9yVUkgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkIHNob3J0PihzcmMtPnJlZCk7Ci0gICAgICAgIGRzdC0+RyA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkIHNob3J0PihzcmMtPmdyZWVuKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhdmVy
YWdlKFIxNkcxNiAqZHN0LCBjb25zdCBSMTZHMTYgKnNyYzEsIGNvbnN0IFIxNkcxNiAqc3JjMikK
LSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IGdsOjphdmVyYWdlKHNyYzEtPlIsIHNyYzItPlIpOwot
ICAgICAgICBkc3QtPkcgPSBnbDo6YXZlcmFnZShzcmMxLT5HLCBzcmMyLT5HKTsKLSAgICB9Ci19
OwotCi1zdHJ1Y3QgUjE2RzE2QjE2Ci17Ci0gICAgdW5zaWduZWQgc2hvcnQgUjsKLSAgICB1bnNp
Z25lZCBzaG9ydCBHOwotICAgIHVuc2lnbmVkIHNob3J0IEI7Ci0KLSAgICBzdGF0aWMgdm9pZCBy
ZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMTZHMTZCMTYgKnNyYykKLSAgICB7Ci0g
ICAgICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5SKTsKLSAgICAg
ICAgZHN0LT5ncmVlbiA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkcpOwotICAgICAgICBk
c3QtPmJsdWUgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Qik7Ci0gICAgICAgIGRzdC0+
YWxwaGEgPSAxLjBmOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29s
b3JVSSAqZHN0LCBjb25zdCBSMTZHMTZCMTYgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVk
ICAgPSBzcmMtPlI7Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSBzcmMtPkc7Ci0gICAgICAgIGRzdC0+
Ymx1ZSAgPSBzcmMtPkI7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSAxOwotICAgIH0KLQotICAgIHN0
YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjE2RzE2QjE2ICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNy
YykKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1bnNpZ25l
ZCBzaG9ydD4oc3JjLT5yZWQpOwotICAgICAgICBkc3QtPkcgPSBnbDo6ZmxvYXRUb05vcm1hbGl6
ZWQ8dW5zaWduZWQgc2hvcnQ+KHNyYy0+Z3JlZW4pOwotICAgICAgICBkc3QtPkIgPSBnbDo6Zmxv
YXRUb05vcm1hbGl6ZWQ8dW5zaWduZWQgc2hvcnQ+KHNyYy0+Ymx1ZSk7Ci0gICAgfQotCi0gICAg
c3RhdGljIHZvaWQgd3JpdGVDb2xvcihSMTZHMTZCMTYgKmRzdCwgY29uc3QgZ2w6OkNvbG9yVUkg
KnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0
PihzcmMtPnJlZCk7Ci0gICAgICAgIGRzdC0+RyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0
PihzcmMtPmdyZWVuKTsKLSAgICAgICAgZHN0LT5CID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hv
cnQ+KHNyYy0+Ymx1ZSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgYXZlcmFnZShSMTZHMTZC
MTYgKmRzdCwgY29uc3QgUjE2RzE2QjE2ICpzcmMxLCBjb25zdCBSMTZHMTZCMTYgKnNyYzIpCi0g
ICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6YXZlcmFnZShzcmMxLT5SLCBzcmMyLT5SKTsKLSAg
ICAgICAgZHN0LT5HID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Rywgc3JjMi0+Ryk7Ci0gICAgICAgIGRz
dC0+QiA9IGdsOjphdmVyYWdlKHNyYzEtPkIsIHNyYzItPkIpOwotICAgIH0KLX07Ci0KLXN0cnVj
dCBSMTZHMTZCMTZBMTYKLXsKLSAgICB1bnNpZ25lZCBzaG9ydCBSOwotICAgIHVuc2lnbmVkIHNo
b3J0IEc7Ci0gICAgdW5zaWduZWQgc2hvcnQgQjsKLSAgICB1bnNpZ25lZCBzaG9ydCBBOwotCi0g
ICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjE2RzE2QjE2
QTE2ICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zs
b2F0KHNyYy0+Uik7Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQo
c3JjLT5HKTsKLSAgICAgICAgZHN0LT5ibHVlICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMt
PkIpOwotICAgICAgICBkc3QtPmFscGhhID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+QSk7
Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvclVJICpkc3QsIGNv
bnN0IFIxNkcxNkIxNkExNiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9IHNyYy0+
UjsKLSAgICAgICAgZHN0LT5ncmVlbiA9IHNyYy0+RzsKLSAgICAgICAgZHN0LT5ibHVlICA9IHNy
Yy0+QjsKLSAgICAgICAgZHN0LT5hbHBoYSA9IHNyYy0+QTsKLSAgICB9Ci0KLSAgICBzdGF0aWMg
dm9pZCB3cml0ZUNvbG9yKFIxNkcxNkIxNkExNiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMp
Ci0gICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dW5zaWduZWQg
c2hvcnQ+KHNyYy0+cmVkKTsKLSAgICAgICAgZHN0LT5HID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVk
PHVuc2lnbmVkIHNob3J0PihzcmMtPmdyZWVuKTsKLSAgICAgICAgZHN0LT5CID0gZ2w6OmZsb2F0
VG9Ob3JtYWxpemVkPHVuc2lnbmVkIHNob3J0PihzcmMtPmJsdWUpOwotICAgICAgICBkc3QtPkEg
PSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dW5zaWduZWQgc2hvcnQ+KHNyYy0+YWxwaGEpOwotICAg
IH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjE2RzE2QjE2QTE2ICpkc3QsIGNvbnN0
IGdsOjpDb2xvclVJICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBzaG9ydD4oc3JjLT5yZWQpOwotICAgICAgICBkc3QtPkcgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBzaG9ydD4oc3JjLT5ncmVlbik7Ci0gICAgICAgIGRzdC0+QiA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkIHNob3J0PihzcmMtPmJsdWUpOwotICAgICAgICBkc3QtPkEgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBzaG9ydD4oc3JjLT5hbHBoYSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQg
YXZlcmFnZShSMTZHMTZCMTZBMTYgKmRzdCwgY29uc3QgUjE2RzE2QjE2QTE2ICpzcmMxLCBjb25z
dCBSMTZHMTZCMTZBMTYgKnNyYzIpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6YXZlcmFn
ZShzcmMxLT5SLCBzcmMyLT5SKTsKLSAgICAgICAgZHN0LT5HID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+
Rywgc3JjMi0+Ryk7Ci0gICAgICAgIGRzdC0+QiA9IGdsOjphdmVyYWdlKHNyYzEtPkIsIHNyYzIt
PkIpOwotICAgICAgICBkc3QtPkEgPSBnbDo6YXZlcmFnZShzcmMxLT5BLCBzcmMyLT5BKTsKLSAg
ICB9Ci19OwotCi1zdHJ1Y3QgUjMyCi17Ci0gICAgdW5zaWduZWQgaW50IFI7Ci0KLSAgICBzdGF0
aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMzIgKnNyYykKLSAgICB7
Ci0gICAgICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5SKTsKLSAg
ICAgICAgZHN0LT5ncmVlbiA9IDAuMGY7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSAwLjBmOwotICAg
ICAgICBkc3QtPmFscGhhID0gMS4wZjsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFkQ29s
b3IoZ2w6OkNvbG9yVUkgKmRzdCwgY29uc3QgUjMyICpzcmMpCi0gICAgewotICAgICAgICBkc3Qt
PnJlZCAgID0gc3JjLT5SOwotICAgICAgICBkc3QtPmdyZWVuID0gMDsKLSAgICAgICAgZHN0LT5i
bHVlICA9IDA7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSAxOwotICAgIH0KLQotICAgIHN0YXRpYyB2
b2lkIHdyaXRlQ29sb3IoUjMyICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKLSAgICB7Ci0g
ICAgICAgIGRzdC0+UiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1bnNpZ25lZCBpbnQ+KHNyYy0+
cmVkKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIzMiAqZHN0LCBjb25z
dCBnbDo6Q29sb3JVSSAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQgaW50PihzcmMtPnJlZCk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgYXZlcmFn
ZShSMzIgKmRzdCwgY29uc3QgUjMyICpzcmMxLCBjb25zdCBSMzIgKnNyYzIpCi0gICAgewotICAg
ICAgICBkc3QtPlIgPSBnbDo6YXZlcmFnZShzcmMxLT5SLCBzcmMyLT5SKTsKLSAgICB9Ci19Owot
Ci1zdHJ1Y3QgUjMyRzMyCi17Ci0gICAgdW5zaWduZWQgaW50IFI7Ci0gICAgdW5zaWduZWQgaW50
IEc7Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBS
MzJHMzIgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRv
RmxvYXQoc3JjLT5SKTsKLSAgICAgICAgZHN0LT5ncmVlbiA9IGdsOjpub3JtYWxpemVkVG9GbG9h
dChzcmMtPkcpOwotICAgICAgICBkc3QtPmJsdWUgID0gMC4wZjsKLSAgICAgICAgZHN0LT5hbHBo
YSA9IDEuMGY7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvclVJ
ICpkc3QsIGNvbnN0IFIzMkczMiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9IHNy
Yy0+UjsKLSAgICAgICAgZHN0LT5ncmVlbiA9IHNyYy0+RzsKLSAgICAgICAgZHN0LT5ibHVlICA9
IDA7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSAxOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdy
aXRlQ29sb3IoUjMyRzMyICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKLSAgICB7Ci0gICAg
ICAgIGRzdC0+UiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1bnNpZ25lZCBpbnQ+KHNyYy0+cmVk
KTsKLSAgICAgICAgZHN0LT5HID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPHVuc2lnbmVkIGludD4o
c3JjLT5ncmVlbik7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSMzJHMzIg
KmRzdCwgY29uc3QgZ2w6OkNvbG9yVUkgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc3JjLT5yZWQpOwotICAgICAgICBkc3QtPkcgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHNyYy0+Z3JlZW4pOwotICAgIH0KLQotICAgIHN0YXRpYyB2
b2lkIGF2ZXJhZ2UoUjMyRzMyICpkc3QsIGNvbnN0IFIzMkczMiAqc3JjMSwgY29uc3QgUjMyRzMy
ICpzcmMyKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Uiwgc3Jj
Mi0+Uik7Ci0gICAgICAgIGRzdC0+RyA9IGdsOjphdmVyYWdlKHNyYzEtPkcsIHNyYzItPkcpOwot
ICAgIH0KLX07Ci0KLXN0cnVjdCBSMzJHMzJCMzIKLXsKLSAgICB1bnNpZ25lZCBpbnQgUjsKLSAg
ICB1bnNpZ25lZCBpbnQgRzsKLSAgICB1bnNpZ25lZCBpbnQgQjsKLQotICAgIHN0YXRpYyB2b2lk
IHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIzMkczMkIzMiAqc3JjKQotICAgIHsK
LSAgICAgICAgZHN0LT5yZWQgICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPlIpOwotICAg
ICAgICBkc3QtPmdyZWVuID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Ryk7Ci0gICAgICAg
IGRzdC0+Ymx1ZSAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5CKTsKLSAgICAgICAgZHN0
LT5hbHBoYSA9IDEuMGY7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpD
b2xvclVJICpkc3QsIGNvbnN0IFIzMkczMkIzMiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5y
ZWQgICA9IHNyYy0+UjsKLSAgICAgICAgZHN0LT5ncmVlbiA9IHNyYy0+RzsKLSAgICAgICAgZHN0
LT5ibHVlICA9IHNyYy0+QjsKLSAgICAgICAgZHN0LT5hbHBoYSA9IDE7Ci0gICAgfQotCi0gICAg
c3RhdGljIHZvaWQgd3JpdGVDb2xvcihSMzJHMzJCMzIgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAq
c3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPHVuc2ln
bmVkIGludD4oc3JjLT5yZWQpOwotICAgICAgICBkc3QtPkcgPSBnbDo6ZmxvYXRUb05vcm1hbGl6
ZWQ8dW5zaWduZWQgaW50PihzcmMtPmdyZWVuKTsKLSAgICAgICAgZHN0LT5CID0gZ2w6OmZsb2F0
VG9Ob3JtYWxpemVkPHVuc2lnbmVkIGludD4oc3JjLT5ibHVlKTsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgdm9pZCB3cml0ZUNvbG9yKFIzMkczMkIzMiAqZHN0LCBjb25zdCBnbDo6Q29sb3JVSSAqc3Jj
KQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihzcmMt
PnJlZCk7Ci0gICAgICAgIGRzdC0+RyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc3JjLT5n
cmVlbik7Ci0gICAgICAgIGRzdC0+QiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc3JjLT5i
bHVlKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFIzMkczMkIzMiAqZHN0LCBj
b25zdCBSMzJHMzJCMzIgKnNyYzEsIGNvbnN0IFIzMkczMkIzMiAqc3JjMikKLSAgICB7Ci0gICAg
ICAgIGRzdC0+UiA9IGdsOjphdmVyYWdlKHNyYzEtPlIsIHNyYzItPlIpOwotICAgICAgICBkc3Qt
PkcgPSBnbDo6YXZlcmFnZShzcmMxLT5HLCBzcmMyLT5HKTsKLSAgICAgICAgZHN0LT5CID0gZ2w6
OmF2ZXJhZ2Uoc3JjMS0+Qiwgc3JjMi0+Qik7Ci0gICAgfQotfTsKLQotc3RydWN0IFIzMkczMkIz
MkEzMgotewotICAgIHVuc2lnbmVkIGludCBSOwotICAgIHVuc2lnbmVkIGludCBHOwotICAgIHVu
c2lnbmVkIGludCBCOwotICAgIHVuc2lnbmVkIGludCBBOwotCi0gICAgc3RhdGljIHZvaWQgcmVh
ZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjMyRzMyQjMyQTMyICpzcmMpCi0gICAgewot
ICAgICAgICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7Ci0gICAg
ICAgIGRzdC0+Z3JlZW4gPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5HKTsKLSAgICAgICAg
ZHN0LT5ibHVlICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkIpOwotICAgICAgICBkc3Qt
PmFscGhhID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+QSk7Ci0gICAgfQotCi0gICAgc3Rh
dGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvclVJICpkc3QsIGNvbnN0IFIzMkczMkIzMkEzMiAq
c3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKLSAgICAgICAgZHN0LT5n
cmVlbiA9IHNyYy0+RzsKLSAgICAgICAgZHN0LT5ibHVlICA9IHNyYy0+QjsKLSAgICAgICAgZHN0
LT5hbHBoYSA9IHNyYy0+QTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIz
MkczMkIzMkEzMiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCi0gICAgewotICAgICAgICBk
c3QtPlIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dW5zaWduZWQgaW50PihzcmMtPnJlZCk7Ci0g
ICAgICAgIGRzdC0+RyA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDx1bnNpZ25lZCBpbnQ+KHNyYy0+
Z3JlZW4pOwotICAgICAgICBkc3QtPkIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8dW5zaWduZWQg
aW50PihzcmMtPmJsdWUpOwotICAgICAgICBkc3QtPkEgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8
dW5zaWduZWQgaW50PihzcmMtPmFscGhhKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0
ZUNvbG9yKFIzMkczMkIzMkEzMiAqZHN0LCBjb25zdCBnbDo6Q29sb3JVSSAqc3JjKQotICAgIHsK
LSAgICAgICAgZHN0LT5SID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihzcmMtPnJlZCk7Ci0g
ICAgICAgIGRzdC0+RyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc3JjLT5ncmVlbik7Ci0g
ICAgICAgIGRzdC0+QiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc3JjLT5ibHVlKTsKLSAg
ICAgICAgZHN0LT5BID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihzcmMtPmFscGhhKTsKLSAg
ICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFIzMkczMkIzMkEzMiAqZHN0LCBjb25zdCBS
MzJHMzJCMzJBMzIgKnNyYzEsIGNvbnN0IFIzMkczMkIzMkEzMiAqc3JjMikKLSAgICB7Ci0gICAg
ICAgIGRzdC0+UiA9IGdsOjphdmVyYWdlKHNyYzEtPlIsIHNyYzItPlIpOwotICAgICAgICBkc3Qt
PkcgPSBnbDo6YXZlcmFnZShzcmMxLT5HLCBzcmMyLT5HKTsKLSAgICAgICAgZHN0LT5CID0gZ2w6
OmF2ZXJhZ2Uoc3JjMS0+Qiwgc3JjMi0+Qik7Ci0gICAgICAgIGRzdC0+QSA9IGdsOjphdmVyYWdl
KHNyYzEtPkEsIHNyYzItPkEpOwotICAgIH0KLX07Ci0KLXN0cnVjdCBSOFMKLXsKLSAgICBjaGFy
IFI7Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBS
OFMgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRvRmxv
YXQoc3JjLT5SKTsKLSAgICAgICAgZHN0LT5ncmVlbiA9IDAuMGY7Ci0gICAgICAgIGRzdC0+Ymx1
ZSAgPSAwLjBmOwotICAgICAgICBkc3QtPmFscGhhID0gMS4wZjsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9ySSAqZHN0LCBjb25zdCBSOFMgKnNyYykKLSAgICB7
Ci0gICAgICAgIGRzdC0+cmVkICAgPSBzcmMtPlI7Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSAwOwot
ICAgICAgICBkc3QtPmJsdWUgID0gMDsKLSAgICAgICAgZHN0LT5hbHBoYSA9IDE7Ci0gICAgfQot
Ci0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSOFMgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAq
c3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPGNoYXI+
KHNyYy0+cmVkKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFI4UyAqZHN0
LCBjb25zdCBnbDo6Q29sb3JJICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBzdGF0aWNf
Y2FzdDxjaGFyPihzcmMtPnJlZCk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgYXZlcmFnZShS
OFMgKmRzdCwgY29uc3QgUjhTICpzcmMxLCBjb25zdCBSOFMgKnNyYzIpCi0gICAgewotICAgICAg
ICBkc3QtPlIgPSBzdGF0aWNfY2FzdDxjaGFyPihnbDo6YXZlcmFnZShzcmMxLT5SLCBzcmMyLT5S
KSk7Ci0gICAgfQotfTsKLQotc3RydWN0IFI4RzhTCi17Ci0gICAgY2hhciBSOwotICAgIGNoYXIg
RzsKLQotICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFI4
RzhTICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zs
b2F0KHNyYy0+Uik7Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQo
c3JjLT5HKTsKLSAgICAgICAgZHN0LT5ibHVlICA9IDAuMGY7Ci0gICAgICAgIGRzdC0+YWxwaGEg
PSAxLjBmOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JJICpk
c3QsIGNvbnN0IFI4RzhTICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPnJlZCAgID0gc3JjLT5S
OwotICAgICAgICBkc3QtPmdyZWVuID0gc3JjLT5HOwotICAgICAgICBkc3QtPmJsdWUgID0gMDsK
LSAgICAgICAgZHN0LT5hbHBoYSA9IDE7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVD
b2xvcihSOEc4UyAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCi0gICAgewotICAgICAgICBk
c3QtPlIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8Y2hhcj4oc3JjLT5yZWQpOwotICAgICAgICBk
c3QtPkcgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8Y2hhcj4oc3JjLT5ncmVlbik7Ci0gICAgfQot
Ci0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSOEc4UyAqZHN0LCBjb25zdCBnbDo6Q29sb3JJ
ICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBzdGF0aWNfY2FzdDxjaGFyPihzcmMtPnJl
ZCk7Ci0gICAgICAgIGRzdC0+RyA9IHN0YXRpY19jYXN0PGNoYXI+KHNyYy0+Z3JlZW4pOwotICAg
IH0KLQotICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjhHOFMgKmRzdCwgY29uc3QgUjhHOFMgKnNy
YzEsIGNvbnN0IFI4RzhTICpzcmMyKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gc3RhdGljX2Nh
c3Q8Y2hhcj4oZ2w6OmF2ZXJhZ2Uoc3JjMS0+Uiwgc3JjMi0+UikpOwotICAgICAgICBkc3QtPkcg
PSBzdGF0aWNfY2FzdDxjaGFyPihnbDo6YXZlcmFnZShzcmMxLT5HLCBzcmMyLT5HKSk7Ci0gICAg
fQotfTsKLQotc3RydWN0IFI4RzhCOFMKLXsKLSAgICBjaGFyIFI7Ci0gICAgY2hhciBHOwotICAg
IGNoYXIgQjsKLQotICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNv
bnN0IFI4RzhCOFMgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFs
aXplZFRvRmxvYXQoc3JjLT5SKTsKLSAgICAgICAgZHN0LT5ncmVlbiA9IGdsOjpub3JtYWxpemVk
VG9GbG9hdChzcmMtPkcpOwotICAgICAgICBkc3QtPmJsdWUgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zs
b2F0KHNyYy0+Qik7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSAxLjBmOwotICAgIH0KLQotICAgIHN0
YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JJICpkc3QsIGNvbnN0IFI4RzhCOFMgKnNyYykK
LSAgICB7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBzcmMtPlI7Ci0gICAgICAgIGRzdC0+Z3JlZW4g
PSBzcmMtPkc7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSBzcmMtPkI7Ci0gICAgICAgIGRzdC0+YWxw
aGEgPSAxOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjhHOEI4UyAqZHN0
LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6Zmxv
YXRUb05vcm1hbGl6ZWQ8Y2hhcj4oc3JjLT5yZWQpOwotICAgICAgICBkc3QtPkcgPSBnbDo6Zmxv
YXRUb05vcm1hbGl6ZWQ8Y2hhcj4oc3JjLT5ncmVlbik7Ci0gICAgICAgIGRzdC0+QiA9IGdsOjpm
bG9hdFRvTm9ybWFsaXplZDxjaGFyPihzcmMtPmJsdWUpOwotICAgIH0KLQotICAgIHN0YXRpYyB2
b2lkIHdyaXRlQ29sb3IoUjhHOEI4UyAqZHN0LCBjb25zdCBnbDo6Q29sb3JJICpzcmMpCi0gICAg
ewotICAgICAgICBkc3QtPlIgPSBzdGF0aWNfY2FzdDxjaGFyPihzcmMtPnJlZCk7Ci0gICAgICAg
IGRzdC0+RyA9IHN0YXRpY19jYXN0PGNoYXI+KHNyYy0+Z3JlZW4pOwotICAgICAgICBkc3QtPkIg
PSBzdGF0aWNfY2FzdDxjaGFyPihzcmMtPmJsdWUpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lk
IGF2ZXJhZ2UoUjhHOEI4UyAqZHN0LCBjb25zdCBSOEc4QjhTICpzcmMxLCBjb25zdCBSOEc4QjhT
ICpzcmMyKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gc3RhdGljX2Nhc3Q8Y2hhcj4oZ2w6OmF2
ZXJhZ2Uoc3JjMS0+Uiwgc3JjMi0+UikpOwotICAgICAgICBkc3QtPkcgPSBzdGF0aWNfY2FzdDxj
aGFyPihnbDo6YXZlcmFnZShzcmMxLT5HLCBzcmMyLT5HKSk7Ci0gICAgICAgIGRzdC0+QiA9IHN0
YXRpY19jYXN0PGNoYXI+KGdsOjphdmVyYWdlKHNyYzEtPkIsIHNyYzItPkIpKTsKLSAgICB9Ci19
OwotCi1zdHJ1Y3QgUjhHOEI4QThTCi17Ci0gICAgY2hhciBSOwotICAgIGNoYXIgRzsKLSAgICBj
aGFyIEI7Ci0gICAgY2hhciBBOwotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xv
ckYgKmRzdCwgY29uc3QgUjhHOEI4QThTICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPnJlZCAg
ID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSBn
bDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5HKTsKLSAgICAgICAgZHN0LT5ibHVlICA9IGdsOjpu
b3JtYWxpemVkVG9GbG9hdChzcmMtPkIpOwotICAgICAgICBkc3QtPmFscGhhID0gZ2w6Om5vcm1h
bGl6ZWRUb0Zsb2F0KHNyYy0+QSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9y
KGdsOjpDb2xvckkgKmRzdCwgY29uc3QgUjhHOEI4QThTICpzcmMpCi0gICAgewotICAgICAgICBk
c3QtPnJlZCAgID0gc3JjLT5SOwotICAgICAgICBkc3QtPmdyZWVuID0gc3JjLT5HOwotICAgICAg
ICBkc3QtPmJsdWUgID0gc3JjLT5COwotICAgICAgICBkc3QtPmFscGhhID0gc3JjLT5BOwotICAg
IH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjhHOEI4QThTICpkc3QsIGNvbnN0IGds
OjpDb2xvckYgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IGdsOjpmbG9hdFRvTm9ybWFs
aXplZDxjaGFyPihzcmMtPnJlZCk7Ci0gICAgICAgIGRzdC0+RyA9IGdsOjpmbG9hdFRvTm9ybWFs
aXplZDxjaGFyPihzcmMtPmdyZWVuKTsKLSAgICAgICAgZHN0LT5CID0gZ2w6OmZsb2F0VG9Ob3Jt
YWxpemVkPGNoYXI+KHNyYy0+Ymx1ZSk7Ci0gICAgICAgIGRzdC0+QSA9IGdsOjpmbG9hdFRvTm9y
bWFsaXplZDxjaGFyPihzcmMtPmFscGhhKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0
ZUNvbG9yKFI4RzhCOEE4UyAqZHN0LCBjb25zdCBnbDo6Q29sb3JJICpzcmMpCi0gICAgewotICAg
ICAgICBkc3QtPlIgPSBzdGF0aWNfY2FzdDxjaGFyPihzcmMtPnJlZCk7Ci0gICAgICAgIGRzdC0+
RyA9IHN0YXRpY19jYXN0PGNoYXI+KHNyYy0+Z3JlZW4pOwotICAgICAgICBkc3QtPkIgPSBzdGF0
aWNfY2FzdDxjaGFyPihzcmMtPmJsdWUpOwotICAgICAgICBkc3QtPkEgPSBzdGF0aWNfY2FzdDxj
aGFyPihzcmMtPmFscGhhKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFI4RzhC
OEE4UyAqZHN0LCBjb25zdCBSOEc4QjhBOFMgKnNyYzEsIGNvbnN0IFI4RzhCOEE4UyAqc3JjMikK
LSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PGNoYXI+KGdsOjphdmVyYWdlKHNy
YzEtPlIsIHNyYzItPlIpKTsKLSAgICAgICAgZHN0LT5HID0gc3RhdGljX2Nhc3Q8Y2hhcj4oZ2w6
OmF2ZXJhZ2Uoc3JjMS0+Rywgc3JjMi0+RykpOwotICAgICAgICBkc3QtPkIgPSBzdGF0aWNfY2Fz
dDxjaGFyPihnbDo6YXZlcmFnZShzcmMxLT5CLCBzcmMyLT5CKSk7Ci0gICAgICAgIGRzdC0+QSA9
IHN0YXRpY19jYXN0PGNoYXI+KGdsOjphdmVyYWdlKHNyYzEtPkEsIHNyYzItPkEpKTsKLSAgICB9
Ci19OwotCi1zdHJ1Y3QgUjE2UwotewotICAgIHNob3J0IFI7Ci0KLSAgICBzdGF0aWMgdm9pZCBy
ZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMTZTICpzcmMpCi0gICAgewotICAgICAg
ICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7Ci0gICAgICAgIGRz
dC0+Z3JlZW4gPSAwLjBmOwotICAgICAgICBkc3QtPmJsdWUgID0gMC4wZjsKLSAgICAgICAgZHN0
LT5hbHBoYSA9IDEuMGY7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpD
b2xvckkgKmRzdCwgY29uc3QgUjE2UyAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9
IHNyYy0+UjsKLSAgICAgICAgZHN0LT5ncmVlbiA9IDA7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSAw
OwotICAgICAgICBkc3QtPmFscGhhID0gMTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0
ZUNvbG9yKFIxNlMgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQotICAgIHsKLSAgICAgICAg
ZHN0LT5SID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPHNob3J0PihzcmMtPnJlZCk7Ci0gICAgfQot
Ci0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSMTZTICpkc3QsIGNvbnN0IGdsOjpDb2xvckkg
KnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PHNob3J0PihzcmMtPnJl
ZCk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgYXZlcmFnZShSMTZTICpkc3QsIGNvbnN0IFIx
NlMgKnNyYzEsIGNvbnN0IFIxNlMgKnNyYzIpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6
YXZlcmFnZShzcmMxLT5SLCBzcmMyLT5SKTsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgUjE2RzE2Uwot
ewotICAgIHNob3J0IFI7Ci0gICAgc2hvcnQgRzsKLQotICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xv
cihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIxNkcxNlMgKnNyYykKLSAgICB7Ci0gICAgICAgIGRz
dC0+cmVkICAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5SKTsKLSAgICAgICAgZHN0LT5n
cmVlbiA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkcpOwotICAgICAgICBkc3QtPmJsdWUg
ID0gMC4wZjsKLSAgICAgICAgZHN0LT5hbHBoYSA9IDEuMGY7Ci0gICAgfQotCi0gICAgc3RhdGlj
IHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckkgKmRzdCwgY29uc3QgUjE2RzE2UyAqc3JjKQotICAg
IHsKLSAgICAgICAgZHN0LT5yZWQgICA9IHNyYy0+UjsKLSAgICAgICAgZHN0LT5ncmVlbiA9IHNy
Yy0+RzsKLSAgICAgICAgZHN0LT5ibHVlICA9IDA7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSAxOwot
ICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjE2RzE2UyAqZHN0LCBjb25zdCBn
bDo6Q29sb3JGICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6ZmxvYXRUb05vcm1h
bGl6ZWQ8c2hvcnQ+KHNyYy0+cmVkKTsKLSAgICAgICAgZHN0LT5HID0gZ2w6OmZsb2F0VG9Ob3Jt
YWxpemVkPHNob3J0PihzcmMtPmdyZWVuKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0
ZUNvbG9yKFIxNkcxNlMgKmRzdCwgY29uc3QgZ2w6OkNvbG9ySSAqc3JjKQotICAgIHsKLSAgICAg
ICAgZHN0LT5SID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KHNyYy0+cmVkKTsKLSAgICAgICAgZHN0LT5H
ID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KHNyYy0+Z3JlZW4pOwotICAgIH0KLQotICAgIHN0YXRpYyB2
b2lkIGF2ZXJhZ2UoUjE2RzE2UyAqZHN0LCBjb25zdCBSMTZHMTZTICpzcmMxLCBjb25zdCBSMTZH
MTZTICpzcmMyKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Uiwg
c3JjMi0+Uik7Ci0gICAgICAgIGRzdC0+RyA9IGdsOjphdmVyYWdlKHNyYzEtPkcsIHNyYzItPkcp
OwotICAgIH0KLX07Ci0KLXN0cnVjdCBSMTZHMTZCMTZTCi17Ci0gICAgc2hvcnQgUjsKLSAgICBz
aG9ydCBHOwotICAgIHNob3J0IEI7Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNv
bG9yRiAqZHN0LCBjb25zdCBSMTZHMTZCMTZTICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPnJl
ZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7Ci0gICAgICAgIGRzdC0+Z3JlZW4g
PSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5HKTsKLSAgICAgICAgZHN0LT5ibHVlICA9IGds
Ojpub3JtYWxpemVkVG9GbG9hdChzcmMtPkIpOwotICAgICAgICBkc3QtPmFscGhhID0gMS4wZjsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9ySSAqZHN0LCBjb25z
dCBSMTZHMTZCMTZTICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPnJlZCAgID0gc3JjLT5SOwot
ICAgICAgICBkc3QtPmdyZWVuID0gc3JjLT5HOwotICAgICAgICBkc3QtPmJsdWUgID0gc3JjLT5C
OwotICAgICAgICBkc3QtPmFscGhhID0gMTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0
ZUNvbG9yKFIxNkcxNkIxNlMgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQotICAgIHsKLSAg
ICAgICAgZHN0LT5SID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPHNob3J0PihzcmMtPnJlZCk7Ci0g
ICAgICAgIGRzdC0+RyA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDxzaG9ydD4oc3JjLT5ncmVlbik7
Ci0gICAgICAgIGRzdC0+QiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDxzaG9ydD4oc3JjLT5ibHVl
KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIxNkcxNkIxNlMgKmRzdCwg
Y29uc3QgZ2w6OkNvbG9ySSAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gc3RhdGljX2Nh
c3Q8c2hvcnQ+KHNyYy0+cmVkKTsKLSAgICAgICAgZHN0LT5HID0gc3RhdGljX2Nhc3Q8c2hvcnQ+
KHNyYy0+Z3JlZW4pOwotICAgICAgICBkc3QtPkIgPSBzdGF0aWNfY2FzdDxzaG9ydD4oc3JjLT5i
bHVlKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFIxNkcxNkIxNlMgKmRzdCwg
Y29uc3QgUjE2RzE2QjE2UyAqc3JjMSwgY29uc3QgUjE2RzE2QjE2UyAqc3JjMikKLSAgICB7Ci0g
ICAgICAgIGRzdC0+UiA9IGdsOjphdmVyYWdlKHNyYzEtPlIsIHNyYzItPlIpOwotICAgICAgICBk
c3QtPkcgPSBnbDo6YXZlcmFnZShzcmMxLT5HLCBzcmMyLT5HKTsKLSAgICAgICAgZHN0LT5CID0g
Z2w6OmF2ZXJhZ2Uoc3JjMS0+Qiwgc3JjMi0+Qik7Ci0gICAgfQotfTsKLQotc3RydWN0IFIxNkcx
NkIxNkExNlMKLXsKLSAgICBzaG9ydCBSOwotICAgIHNob3J0IEc7Ci0gICAgc2hvcnQgQjsKLSAg
ICBzaG9ydCBBOwotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwg
Y29uc3QgUjE2RzE2QjE2QTE2UyAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9IGds
Ojpub3JtYWxpemVkVG9GbG9hdChzcmMtPlIpOwotICAgICAgICBkc3QtPmdyZWVuID0gZ2w6Om5v
cm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Ryk7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSBnbDo6bm9ybWFs
aXplZFRvRmxvYXQoc3JjLT5CKTsKLSAgICAgICAgZHN0LT5hbHBoYSA9IGdsOjpub3JtYWxpemVk
VG9GbG9hdChzcmMtPkEpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6
Q29sb3JJICpkc3QsIGNvbnN0IFIxNkcxNkIxNkExNlMgKnNyYykKLSAgICB7Ci0gICAgICAgIGRz
dC0+cmVkICAgPSBzcmMtPlI7Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSBzcmMtPkc7Ci0gICAgICAg
IGRzdC0+Ymx1ZSAgPSBzcmMtPkI7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSBzcmMtPkE7Ci0gICAg
fQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSMTZHMTZCMTZBMTZTICpkc3QsIGNvbnN0
IGdsOjpDb2xvckYgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IGdsOjpmbG9hdFRvTm9y
bWFsaXplZDxzaG9ydD4oc3JjLT5yZWQpOwotICAgICAgICBkc3QtPkcgPSBnbDo6ZmxvYXRUb05v
cm1hbGl6ZWQ8c2hvcnQ+KHNyYy0+Z3JlZW4pOwotICAgICAgICBkc3QtPkIgPSBnbDo6ZmxvYXRU
b05vcm1hbGl6ZWQ8c2hvcnQ+KHNyYy0+Ymx1ZSk7Ci0gICAgICAgIGRzdC0+QSA9IGdsOjpmbG9h
dFRvTm9ybWFsaXplZDxzaG9ydD4oc3JjLT5hbHBoYSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZv
aWQgd3JpdGVDb2xvcihSMTZHMTZCMTZBMTZTICpkc3QsIGNvbnN0IGdsOjpDb2xvckkgKnNyYykK
LSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IHN0YXRpY19jYXN0PHNob3J0PihzcmMtPnJlZCk7Ci0g
ICAgICAgIGRzdC0+RyA9IHN0YXRpY19jYXN0PHNob3J0PihzcmMtPmdyZWVuKTsKLSAgICAgICAg
ZHN0LT5CID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KHNyYy0+Ymx1ZSk7Ci0gICAgICAgIGRzdC0+QSA9
IHN0YXRpY19jYXN0PHNob3J0PihzcmMtPmFscGhhKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9p
ZCBhdmVyYWdlKFIxNkcxNkIxNkExNlMgKmRzdCwgY29uc3QgUjE2RzE2QjE2QTE2UyAqc3JjMSwg
Y29uc3QgUjE2RzE2QjE2QTE2UyAqc3JjMikKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IGdsOjph
dmVyYWdlKHNyYzEtPlIsIHNyYzItPlIpOwotICAgICAgICBkc3QtPkcgPSBnbDo6YXZlcmFnZShz
cmMxLT5HLCBzcmMyLT5HKTsKLSAgICAgICAgZHN0LT5CID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Qiwg
c3JjMi0+Qik7Ci0gICAgICAgIGRzdC0+QSA9IGdsOjphdmVyYWdlKHNyYzEtPkEsIHNyYzItPkEp
OwotICAgIH0KLX07Ci0KLXN0cnVjdCBSMzJTCi17Ci0gICAgaW50IFI7Ci0KLSAgICBzdGF0aWMg
dm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMzJTICpzcmMpCi0gICAgewot
ICAgICAgICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7Ci0gICAg
ICAgIGRzdC0+Z3JlZW4gPSAwLjBmOwotICAgICAgICBkc3QtPmJsdWUgID0gMC4wZjsKLSAgICAg
ICAgZHN0LT5hbHBoYSA9IDEuMGY7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9y
KGdsOjpDb2xvckkgKmRzdCwgY29uc3QgUjMyUyAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5y
ZWQgICA9IHNyYy0+UjsKLSAgICAgICAgZHN0LT5ncmVlbiA9IDA7Ci0gICAgICAgIGRzdC0+Ymx1
ZSAgPSAwOwotICAgICAgICBkc3QtPmFscGhhID0gMTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9p
ZCB3cml0ZUNvbG9yKFIzMlMgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQotICAgIHsKLSAg
ICAgICAgZHN0LT5SID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPGludD4oc3JjLT5yZWQpOwotICAg
IH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjMyUyAqZHN0LCBjb25zdCBnbDo6Q29s
b3JJICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBzdGF0aWNfY2FzdDxpbnQ+KHNyYy0+
cmVkKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFIzMlMgKmRzdCwgY29uc3Qg
UjMyUyAqc3JjMSwgY29uc3QgUjMyUyAqc3JjMikKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IGds
OjphdmVyYWdlKHNyYzEtPlIsIHNyYzItPlIpOwotICAgIH0KLX07Ci0KLXN0cnVjdCBSMzJHMzJT
Ci17Ci0gICAgaW50IFI7Ci0gICAgaW50IEc7Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3Io
Z2w6OkNvbG9yRiAqZHN0LCBjb25zdCBSMzJHMzJTICpzcmMpCi0gICAgewotICAgICAgICBkc3Qt
PnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Uik7Ci0gICAgICAgIGRzdC0+Z3Jl
ZW4gPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5HKTsKLSAgICAgICAgZHN0LT5ibHVlICA9
IDAuMGY7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSAxLjBmOwotICAgIH0KLQotICAgIHN0YXRpYyB2
b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JJICpkc3QsIGNvbnN0IFIzMkczMlMgKnNyYykKLSAgICB7
Ci0gICAgICAgIGRzdC0+cmVkICAgPSBzcmMtPlI7Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSBzcmMt
Pkc7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSAwOwotICAgICAgICBkc3QtPmFscGhhID0gMTsKLSAg
ICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIzMkczMlMgKmRzdCwgY29uc3QgZ2w6
OkNvbG9yRiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6OmZsb2F0VG9Ob3JtYWxp
emVkPGludD4oc3JjLT5yZWQpOwotICAgICAgICBkc3QtPkcgPSBnbDo6ZmxvYXRUb05vcm1hbGl6
ZWQ8aW50PihzcmMtPmdyZWVuKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9y
KFIzMkczMlMgKmRzdCwgY29uc3QgZ2w6OkNvbG9ySSAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0
LT5SID0gc3RhdGljX2Nhc3Q8aW50PihzcmMtPnJlZCk7Ci0gICAgICAgIGRzdC0+RyA9IHN0YXRp
Y19jYXN0PGludD4oc3JjLT5ncmVlbik7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgYXZlcmFn
ZShSMzJHMzJTICpkc3QsIGNvbnN0IFIzMkczMlMgKnNyYzEsIGNvbnN0IFIzMkczMlMgKnNyYzIp
Ci0gICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6YXZlcmFnZShzcmMxLT5SLCBzcmMyLT5SKTsK
LSAgICAgICAgZHN0LT5HID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Rywgc3JjMi0+Ryk7Ci0gICAgfQot
fTsKLQotc3RydWN0IFIzMkczMkIzMlMKLXsKLSAgICBpbnQgUjsKLSAgICBpbnQgRzsKLSAgICBp
bnQgQjsKLQotICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0
IFIzMkczMkIzMlMgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFs
aXplZFRvRmxvYXQoc3JjLT5SKTsKLSAgICAgICAgZHN0LT5ncmVlbiA9IGdsOjpub3JtYWxpemVk
VG9GbG9hdChzcmMtPkcpOwotICAgICAgICBkc3QtPmJsdWUgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zs
b2F0KHNyYy0+Qik7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSAxLjBmOwotICAgIH0KLQotICAgIHN0
YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JJICpkc3QsIGNvbnN0IFIzMkczMkIzMlMgKnNy
YykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBzcmMtPlI7Ci0gICAgICAgIGRzdC0+Z3Jl
ZW4gPSBzcmMtPkc7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSBzcmMtPkI7Ci0gICAgICAgIGRzdC0+
YWxwaGEgPSAxOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjMyRzMyQjMy
UyAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBn
bDo6ZmxvYXRUb05vcm1hbGl6ZWQ8aW50PihzcmMtPnJlZCk7Ci0gICAgICAgIGRzdC0+RyA9IGds
OjpmbG9hdFRvTm9ybWFsaXplZDxpbnQ+KHNyYy0+Z3JlZW4pOwotICAgICAgICBkc3QtPkIgPSBn
bDo6ZmxvYXRUb05vcm1hbGl6ZWQ8aW50PihzcmMtPmJsdWUpOwotICAgIH0KLQotICAgIHN0YXRp
YyB2b2lkIHdyaXRlQ29sb3IoUjMyRzMyQjMyUyAqZHN0LCBjb25zdCBnbDo6Q29sb3JJICpzcmMp
Ci0gICAgewotICAgICAgICBkc3QtPlIgPSBzdGF0aWNfY2FzdDxpbnQ+KHNyYy0+cmVkKTsKLSAg
ICAgICAgZHN0LT5HID0gc3RhdGljX2Nhc3Q8aW50PihzcmMtPmdyZWVuKTsKLSAgICAgICAgZHN0
LT5CID0gc3RhdGljX2Nhc3Q8aW50PihzcmMtPmJsdWUpOwotICAgIH0KLQotICAgIHN0YXRpYyB2
b2lkIGF2ZXJhZ2UoUjMyRzMyQjMyUyAqZHN0LCBjb25zdCBSMzJHMzJCMzJTICpzcmMxLCBjb25z
dCBSMzJHMzJCMzJTICpzcmMyKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6OmF2ZXJhZ2Uo
c3JjMS0+Uiwgc3JjMi0+Uik7Ci0gICAgICAgIGRzdC0+RyA9IGdsOjphdmVyYWdlKHNyYzEtPkcs
IHNyYzItPkcpOwotICAgICAgICBkc3QtPkIgPSBnbDo6YXZlcmFnZShzcmMxLT5CLCBzcmMyLT5C
KTsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgUjMyRzMyQjMyQTMyUwotewotICAgIGludCBSOwotICAg
IGludCBHOwotICAgIGludCBCOwotICAgIGludCBBOwotCi0gICAgc3RhdGljIHZvaWQgcmVhZENv
bG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjMyRzMyQjMyQTMyUyAqc3JjKQotICAgIHsKLSAg
ICAgICAgZHN0LT5yZWQgICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPlIpOwotICAgICAg
ICBkc3QtPmdyZWVuID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0KHNyYy0+Ryk7Ci0gICAgICAgIGRz
dC0+Ymx1ZSAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQoc3JjLT5CKTsKLSAgICAgICAgZHN0LT5h
bHBoYSA9IGdsOjpub3JtYWxpemVkVG9GbG9hdChzcmMtPkEpOwotICAgIH0KLQotICAgIHN0YXRp
YyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JJICpkc3QsIGNvbnN0IFIzMkczMkIzMkEzMlMgKnNy
YykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBzcmMtPlI7Ci0gICAgICAgIGRzdC0+Z3Jl
ZW4gPSBzcmMtPkc7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSBzcmMtPkI7Ci0gICAgICAgIGRzdC0+
YWxwaGEgPSBzcmMtPkE7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSMzJH
MzJCMzJBMzJTICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKLSAgICB7Ci0gICAgICAgIGRz
dC0+UiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDxpbnQ+KHNyYy0+cmVkKTsKLSAgICAgICAgZHN0
LT5HID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPGludD4oc3JjLT5ncmVlbik7Ci0gICAgICAgIGRz
dC0+QiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDxpbnQ+KHNyYy0+Ymx1ZSk7Ci0gICAgICAgIGRz
dC0+QSA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDxpbnQ+KHNyYy0+YWxwaGEpOwotICAgIH0KLQot
ICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjMyRzMyQjMyQTMyUyAqZHN0LCBjb25zdCBnbDo6
Q29sb3JJICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBzdGF0aWNfY2FzdDxpbnQ+KHNy
Yy0+cmVkKTsKLSAgICAgICAgZHN0LT5HID0gc3RhdGljX2Nhc3Q8aW50PihzcmMtPmdyZWVuKTsK
LSAgICAgICAgZHN0LT5CID0gc3RhdGljX2Nhc3Q8aW50PihzcmMtPmJsdWUpOwotICAgICAgICBk
c3QtPkEgPSBzdGF0aWNfY2FzdDxpbnQ+KHNyYy0+YWxwaGEpOwotICAgIH0KLQotICAgIHN0YXRp
YyB2b2lkIGF2ZXJhZ2UoUjMyRzMyQjMyQTMyUyAqZHN0LCBjb25zdCBSMzJHMzJCMzJBMzJTICpz
cmMxLCBjb25zdCBSMzJHMzJCMzJBMzJTICpzcmMyKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0g
Z2w6OmF2ZXJhZ2Uoc3JjMS0+Uiwgc3JjMi0+Uik7Ci0gICAgICAgIGRzdC0+RyA9IGdsOjphdmVy
YWdlKHNyYzEtPkcsIHNyYzItPkcpOwotICAgICAgICBkc3QtPkIgPSBnbDo6YXZlcmFnZShzcmMx
LT5CLCBzcmMyLT5CKTsKLSAgICAgICAgZHN0LT5BID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+QSwgc3Jj
Mi0+QSk7Ci0gICAgfQotfTsKLQotc3RydWN0IEExNkIxNkcxNlIxNkYKLXsKLSAgICB1bnNpZ25l
ZCBzaG9ydCBBOwotICAgIHVuc2lnbmVkIHNob3J0IFI7Ci0gICAgdW5zaWduZWQgc2hvcnQgRzsK
LSAgICB1bnNpZ25lZCBzaG9ydCBCOwotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpD
b2xvckYgKmRzdCwgY29uc3QgQTE2QjE2RzE2UjE2RiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0
LT5yZWQgICA9IGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNyYy0+Uik7Ci0gICAgICAgIGRzdC0+Z3Jl
ZW4gPSBnbDo6ZmxvYXQxNlRvRmxvYXQzMihzcmMtPkcpOwotICAgICAgICBkc3QtPmJsdWUgID0g
Z2w6OmZsb2F0MTZUb0Zsb2F0MzIoc3JjLT5CKTsKLSAgICAgICAgZHN0LT5hbHBoYSA9IGdsOjpm
bG9hdDE2VG9GbG9hdDMyKHNyYy0+QSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVD
b2xvcihBMTZCMTZHMTZSMTZGICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKLSAgICB7Ci0g
ICAgICAgIGRzdC0+UiA9IGdsOjpmbG9hdDMyVG9GbG9hdDE2KHNyYy0+cmVkKTsKLSAgICAgICAg
ZHN0LT5HID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTYoc3JjLT5ncmVlbik7Ci0gICAgICAgIGRzdC0+
QiA9IGdsOjpmbG9hdDMyVG9GbG9hdDE2KHNyYy0+Ymx1ZSk7Ci0gICAgICAgIGRzdC0+QSA9IGds
OjpmbG9hdDMyVG9GbG9hdDE2KHNyYy0+YWxwaGEpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lk
IGF2ZXJhZ2UoQTE2QjE2RzE2UjE2RiAqZHN0LCBjb25zdCBBMTZCMTZHMTZSMTZGICpzcmMxLCBj
b25zdCBBMTZCMTZHMTZSMTZGICpzcmMyKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6OmF2
ZXJhZ2VIYWxmRmxvYXQoc3JjMS0+Uiwgc3JjMi0+Uik7Ci0gICAgICAgIGRzdC0+RyA9IGdsOjph
dmVyYWdlSGFsZkZsb2F0KHNyYzEtPkcsIHNyYzItPkcpOwotICAgICAgICBkc3QtPkIgPSBnbDo6
YXZlcmFnZUhhbGZGbG9hdChzcmMxLT5CLCBzcmMyLT5CKTsKLSAgICAgICAgZHN0LT5BID0gZ2w6
OmF2ZXJhZ2VIYWxmRmxvYXQoc3JjMS0+QSwgc3JjMi0+QSk7Ci0gICAgfQotfTsKLQotc3RydWN0
IFIxNkcxNkIxNkExNkYKLXsKLSAgICB1bnNpZ25lZCBzaG9ydCBSOwotICAgIHVuc2lnbmVkIHNo
b3J0IEc7Ci0gICAgdW5zaWduZWQgc2hvcnQgQjsKLSAgICB1bnNpZ25lZCBzaG9ydCBBOwotCi0g
ICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgUjE2RzE2QjE2
QTE2RiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9IGdsOjpmbG9hdDE2VG9GbG9h
dDMyKHNyYy0+Uik7Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSBnbDo6ZmxvYXQxNlRvRmxvYXQzMihz
cmMtPkcpOwotICAgICAgICBkc3QtPmJsdWUgID0gZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoc3JjLT5C
KTsKLSAgICAgICAgZHN0LT5hbHBoYSA9IGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNyYy0+QSk7Ci0g
ICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSMTZHMTZCMTZBMTZGICpkc3QsIGNv
bnN0IGdsOjpDb2xvckYgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IGdsOjpmbG9hdDMy
VG9GbG9hdDE2KHNyYy0+cmVkKTsKLSAgICAgICAgZHN0LT5HID0gZ2w6OmZsb2F0MzJUb0Zsb2F0
MTYoc3JjLT5ncmVlbik7Ci0gICAgICAgIGRzdC0+QiA9IGdsOjpmbG9hdDMyVG9GbG9hdDE2KHNy
Yy0+Ymx1ZSk7Ci0gICAgICAgIGRzdC0+QSA9IGdsOjpmbG9hdDMyVG9GbG9hdDE2KHNyYy0+YWxw
aGEpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjE2RzE2QjE2QTE2RiAqZHN0
LCBjb25zdCBSMTZHMTZCMTZBMTZGICpzcmMxLCBjb25zdCBSMTZHMTZCMTZBMTZGICpzcmMyKQot
ICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6OmF2ZXJhZ2VIYWxmRmxvYXQoc3JjMS0+Uiwgc3Jj
Mi0+Uik7Ci0gICAgICAgIGRzdC0+RyA9IGdsOjphdmVyYWdlSGFsZkZsb2F0KHNyYzEtPkcsIHNy
YzItPkcpOwotICAgICAgICBkc3QtPkIgPSBnbDo6YXZlcmFnZUhhbGZGbG9hdChzcmMxLT5CLCBz
cmMyLT5CKTsKLSAgICAgICAgZHN0LT5BID0gZ2w6OmF2ZXJhZ2VIYWxmRmxvYXQoc3JjMS0+QSwg
c3JjMi0+QSk7Ci0gICAgfQotfTsKLQotc3RydWN0IFIxNkYKLXsKLSAgICB1bnNpZ25lZCBzaG9y
dCBSOwotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3Qg
UjE2RiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9IGdsOjpmbG9hdDE2VG9GbG9h
dDMyKHNyYy0+Uik7Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSAwLjBmOwotICAgICAgICBkc3QtPmJs
dWUgID0gMC4wZjsKLSAgICAgICAgZHN0LT5hbHBoYSA9IDEuMGY7Ci0gICAgfQotCi0gICAgc3Rh
dGljIHZvaWQgd3JpdGVDb2xvcihSMTZGICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKLSAg
ICB7Ci0gICAgICAgIGRzdC0+UiA9IGdsOjpmbG9hdDMyVG9GbG9hdDE2KHNyYy0+cmVkKTsKLSAg
ICB9Ci0gICAgCi0gICAgc3RhdGljIHZvaWQgYXZlcmFnZShSMTZGICpkc3QsIGNvbnN0IFIxNkYg
KnNyYzEsIGNvbnN0IFIxNkYgKnNyYzIpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6YXZl
cmFnZUhhbGZGbG9hdChzcmMxLT5SLCBzcmMyLT5SKTsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgQTE2
RgotewotICAgIHVuc2lnbmVkIHNob3J0IEE7Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3Io
Z2w6OkNvbG9yRiAqZHN0LCBjb25zdCBBMTZGICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPnJl
ZCAgID0gMC4wZjsKLSAgICAgICAgZHN0LT5ncmVlbiA9IDAuMGY7Ci0gICAgICAgIGRzdC0+Ymx1
ZSAgPSAwLjBmOwotICAgICAgICBkc3QtPmFscGhhID0gZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoc3Jj
LT5BKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKEExNkYgKmRzdCwgY29u
c3QgZ2w6OkNvbG9yRiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5BID0gZ2w6OmZsb2F0MzJU
b0Zsb2F0MTYoc3JjLT5hbHBoYSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgYXZlcmFnZShB
MTZGICpkc3QsIGNvbnN0IEExNkYgKnNyYzEsIGNvbnN0IEExNkYgKnNyYzIpCi0gICAgewotICAg
ICAgICBkc3QtPkEgPSBnbDo6YXZlcmFnZUhhbGZGbG9hdChzcmMxLT5BLCBzcmMyLT5BKTsKLSAg
ICB9Ci19OwotCi1zdHJ1Y3QgTDE2RgotewotICAgIHVuc2lnbmVkIHNob3J0IEw7Ci0KLSAgICBz
dGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBMMTZGICpzcmMpCi0g
ICAgewotICAgICAgICBmbG9hdCBsdW0gPSBnbDo6ZmxvYXQxNlRvRmxvYXQzMihzcmMtPkwpOwot
ICAgICAgICBkc3QtPnJlZCAgID0gbHVtOwotICAgICAgICBkc3QtPmdyZWVuID0gbHVtOwotICAg
ICAgICBkc3QtPmJsdWUgID0gbHVtOwotICAgICAgICBkc3QtPmFscGhhID0gMS4wZjsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKEwxNkYgKmRzdCwgY29uc3QgZ2w6OkNvbG9y
RiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5MID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTYoKHNy
Yy0+cmVkICsgc3JjLT5ncmVlbiArIHNyYy0+Ymx1ZSkgLyAzLjBmKTsKLSAgICB9Ci0KLSAgICBz
dGF0aWMgdm9pZCBhdmVyYWdlKEwxNkYgKmRzdCwgY29uc3QgTDE2RiAqc3JjMSwgY29uc3QgTDE2
RiAqc3JjMikKLSAgICB7Ci0gICAgICAgIGRzdC0+TCA9IGdsOjphdmVyYWdlSGFsZkZsb2F0KHNy
YzEtPkwsIHNyYzItPkwpOwotICAgIH0KLX07Ci0KLXN0cnVjdCBMMTZBMTZGCi17Ci0gICAgdW5z
aWduZWQgc2hvcnQgTDsKLSAgICB1bnNpZ25lZCBzaG9ydCBBOwotCi0gICAgc3RhdGljIHZvaWQg
cmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgTDE2QTE2RiAqc3JjKQotICAgIHsKLSAg
ICAgICAgZmxvYXQgbHVtID0gZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoc3JjLT5MKTsKLSAgICAgICAg
ZHN0LT5yZWQgICA9IGx1bTsKLSAgICAgICAgZHN0LT5ncmVlbiA9IGx1bTsKLSAgICAgICAgZHN0
LT5ibHVlICA9IGx1bTsKLSAgICAgICAgZHN0LT5hbHBoYSA9IGdsOjpmbG9hdDE2VG9GbG9hdDMy
KHNyYy0+QSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihMMTZBMTZGICpk
c3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+TCA9IGdsOjpm
bG9hdDMyVG9GbG9hdDE2KChzcmMtPnJlZCArIHNyYy0+Z3JlZW4gKyBzcmMtPmJsdWUpIC8gMy4w
Zik7Ci0gICAgICAgIGRzdC0+QSA9IGdsOjpmbG9hdDMyVG9GbG9hdDE2KHNyYy0+YWxwaGEpOwot
ICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoTDE2QTE2RiAqZHN0LCBjb25zdCBMMTZB
MTZGICpzcmMxLCBjb25zdCBMMTZBMTZGICpzcmMyKQotICAgIHsKLSAgICAgICAgZHN0LT5MID0g
Z2w6OmF2ZXJhZ2VIYWxmRmxvYXQoc3JjMS0+TCwgc3JjMi0+TCk7Ci0gICAgICAgIGRzdC0+QSA9
IGdsOjphdmVyYWdlSGFsZkZsb2F0KHNyYzEtPkEsIHNyYzItPkEpOwotICAgIH0KLX07Ci0KLXN0
cnVjdCBSMTZHMTZGCi17Ci0gICAgdW5zaWduZWQgc2hvcnQgUjsKLSAgICB1bnNpZ25lZCBzaG9y
dCBHOwotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3Qg
UjE2RzE2RiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9IGdsOjpmbG9hdDE2VG9G
bG9hdDMyKHNyYy0+Uik7Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSBnbDo6ZmxvYXQxNlRvRmxvYXQz
MihzcmMtPkcpOwotICAgICAgICBkc3QtPmJsdWUgID0gMC4wZjsKLSAgICAgICAgZHN0LT5hbHBo
YSA9IDEuMGY7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSMTZHMTZGICpk
c3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IGdsOjpm
bG9hdDMyVG9GbG9hdDE2KHNyYy0+cmVkKTsKLSAgICAgICAgZHN0LT5HID0gZ2w6OmZsb2F0MzJU
b0Zsb2F0MTYoc3JjLT5ncmVlbik7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgYXZlcmFnZShS
MTZHMTZGICpkc3QsIGNvbnN0IFIxNkcxNkYgKnNyYzEsIGNvbnN0IFIxNkcxNkYgKnNyYzIpCi0g
ICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6YXZlcmFnZUhhbGZGbG9hdChzcmMxLT5SLCBzcmMy
LT5SKTsKLSAgICAgICAgZHN0LT5HID0gZ2w6OmF2ZXJhZ2VIYWxmRmxvYXQoc3JjMS0+Rywgc3Jj
Mi0+Ryk7Ci0gICAgfQotfTsKLQotc3RydWN0IFIxNkcxNkIxNkYKLXsKLSAgICB1bnNpZ25lZCBz
aG9ydCBSOwotICAgIHVuc2lnbmVkIHNob3J0IEc7Ci0gICAgdW5zaWduZWQgc2hvcnQgQjsKLQot
ICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIxNkcxNkIx
NkYgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBnbDo6ZmxvYXQxNlRvRmxvYXQz
MihzcmMtPlIpOwotICAgICAgICBkc3QtPmdyZWVuID0gZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoc3Jj
LT5HKTsKLSAgICAgICAgZHN0LT5ibHVlICA9IGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNyYy0+Qik7
Ci0gICAgICAgIGRzdC0+YWxwaGEgPSAxLjBmOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdy
aXRlQ29sb3IoUjE2RzE2QjE2RiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCi0gICAgewot
ICAgICAgICBkc3QtPlIgPSBnbDo6ZmxvYXQzMlRvRmxvYXQxNihzcmMtPnJlZCk7Ci0gICAgICAg
IGRzdC0+RyA9IGdsOjpmbG9hdDMyVG9GbG9hdDE2KHNyYy0+Z3JlZW4pOwotICAgICAgICBkc3Qt
PkIgPSBnbDo6ZmxvYXQzMlRvRmxvYXQxNihzcmMtPmJsdWUpOwotICAgIH0KLQotICAgIHN0YXRp
YyB2b2lkIGF2ZXJhZ2UoUjE2RzE2QjE2RiAqZHN0LCBjb25zdCBSMTZHMTZCMTZGICpzcmMxLCBj
b25zdCBSMTZHMTZCMTZGICpzcmMyKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6OmF2ZXJh
Z2VIYWxmRmxvYXQoc3JjMS0+Uiwgc3JjMi0+Uik7Ci0gICAgICAgIGRzdC0+RyA9IGdsOjphdmVy
YWdlSGFsZkZsb2F0KHNyYzEtPkcsIHNyYzItPkcpOwotICAgICAgICBkc3QtPkIgPSBnbDo6YXZl
cmFnZUhhbGZGbG9hdChzcmMxLT5CLCBzcmMyLT5CKTsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgQTMy
QjMyRzMyUjMyRgotewotICAgIGZsb2F0IEE7Ci0gICAgZmxvYXQgUjsKLSAgICBmbG9hdCBHOwot
ICAgIGZsb2F0IEI7Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0
LCBjb25zdCBBMzJCMzJHMzJSMzJGICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPnJlZCAgID0g
c3JjLT5SOwotICAgICAgICBkc3QtPmdyZWVuID0gc3JjLT5HOwotICAgICAgICBkc3QtPmJsdWUg
ID0gc3JjLT5COwotICAgICAgICBkc3QtPmFscGhhID0gc3JjLT5BOwotICAgIH0KLQotICAgIHN0
YXRpYyB2b2lkIHdyaXRlQ29sb3IoQTMyQjMyRzMyUjMyRiAqZHN0LCBjb25zdCBnbDo6Q29sb3JG
ICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBzcmMtPnJlZDsKLSAgICAgICAgZHN0LT5H
ID0gc3JjLT5ncmVlbjsKLSAgICAgICAgZHN0LT5CID0gc3JjLT5ibHVlOwotICAgICAgICBkc3Qt
PkEgPSBzcmMtPmFscGhhOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoQTMyQjMy
RzMyUjMyRiAqZHN0LCBjb25zdCBBMzJCMzJHMzJSMzJGICpzcmMxLCBjb25zdCBBMzJCMzJHMzJS
MzJGICpzcmMyKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Uiwg
c3JjMi0+Uik7Ci0gICAgICAgIGRzdC0+RyA9IGdsOjphdmVyYWdlKHNyYzEtPkcsIHNyYzItPkcp
OwotICAgICAgICBkc3QtPkIgPSBnbDo6YXZlcmFnZShzcmMxLT5CLCBzcmMyLT5CKTsKLSAgICAg
ICAgZHN0LT5BID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+QSwgc3JjMi0+QSk7Ci0gICAgfQotfTsKLQot
c3RydWN0IFIzMkczMkIzMkEzMkYKLXsKLSAgICBmbG9hdCBSOwotICAgIGZsb2F0IEc7Ci0gICAg
ZmxvYXQgQjsKLSAgICBmbG9hdCBBOwotCi0gICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpD
b2xvckYgKmRzdCwgY29uc3QgUjMyRzMyQjMyQTMyRiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0
LT5yZWQgICA9IHNyYy0+UjsKLSAgICAgICAgZHN0LT5ncmVlbiA9IHNyYy0+RzsKLSAgICAgICAg
ZHN0LT5ibHVlICA9IHNyYy0+QjsKLSAgICAgICAgZHN0LT5hbHBoYSA9IHNyYy0+QTsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKFIzMkczMkIzMkEzMkYgKmRzdCwgY29uc3Qg
Z2w6OkNvbG9yRiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gc3JjLT5yZWQ7Ci0gICAg
ICAgIGRzdC0+RyA9IHNyYy0+Z3JlZW47Ci0gICAgICAgIGRzdC0+QiA9IHNyYy0+Ymx1ZTsKLSAg
ICAgICAgZHN0LT5BID0gc3JjLT5hbHBoYTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhdmVy
YWdlKFIzMkczMkIzMkEzMkYgKmRzdCwgY29uc3QgUjMyRzMyQjMyQTMyRiAqc3JjMSwgY29uc3Qg
UjMyRzMyQjMyQTMyRiAqc3JjMikKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IGdsOjphdmVyYWdl
KHNyYzEtPlIsIHNyYzItPlIpOwotICAgICAgICBkc3QtPkcgPSBnbDo6YXZlcmFnZShzcmMxLT5H
LCBzcmMyLT5HKTsKLSAgICAgICAgZHN0LT5CID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Qiwgc3JjMi0+
Qik7Ci0gICAgICAgIGRzdC0+QSA9IGdsOjphdmVyYWdlKHNyYzEtPkEsIHNyYzItPkEpOwotICAg
IH0KLX07Ci0KLXN0cnVjdCBSMzJGCi17Ci0gICAgZmxvYXQgUjsKLQotICAgIHN0YXRpYyB2b2lk
IHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIzMkYgKnNyYykKLSAgICB7Ci0gICAg
ICAgIGRzdC0+cmVkICAgPSBzcmMtPlI7Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSAwLjBmOwotICAg
ICAgICBkc3QtPmJsdWUgID0gMC4wZjsKLSAgICAgICAgZHN0LT5hbHBoYSA9IDEuMGY7Ci0gICAg
fQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSMzJGICpkc3QsIGNvbnN0IGdsOjpDb2xv
ckYgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+UiA9IHNyYy0+cmVkOwotICAgIH0KLQotICAg
IHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjMyRiAqZHN0LCBjb25zdCBSMzJGICpzcmMxLCBjb25zdCBS
MzJGICpzcmMyKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Uiwg
c3JjMi0+Uik7Ci0gICAgfQotfTsKLQotc3RydWN0IEEzMkYKLXsKLSAgICBmbG9hdCBBOwotCi0g
ICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29uc3QgQTMyRiAqc3Jj
KQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9IDAuMGY7Ci0gICAgICAgIGRzdC0+Z3JlZW4g
PSAwLjBmOwotICAgICAgICBkc3QtPmJsdWUgID0gMC4wZjsKLSAgICAgICAgZHN0LT5hbHBoYSA9
IHNyYy0+QTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKEEzMkYgKmRzdCwg
Y29uc3QgZ2w6OkNvbG9yRiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5BID0gc3JjLT5hbHBo
YTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKEEzMkYgKmRzdCwgY29uc3QgQTMy
RiAqc3JjMSwgY29uc3QgQTMyRiAqc3JjMikKLSAgICB7Ci0gICAgICAgIGRzdC0+QSA9IGdsOjph
dmVyYWdlKHNyYzEtPkEsIHNyYzItPkEpOwotICAgIH0KLX07Ci0KLXN0cnVjdCBMMzJGCi17Ci0g
ICAgZmxvYXQgTDsKLQotICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3Qs
IGNvbnN0IEwzMkYgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBzcmMtPkw7Ci0g
ICAgICAgIGRzdC0+Z3JlZW4gPSBzcmMtPkw7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSBzcmMtPkw7
Ci0gICAgICAgIGRzdC0+YWxwaGEgPSAxLjBmOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdy
aXRlQ29sb3IoTDMyRiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCi0gICAgewotICAgICAg
ICBkc3QtPkwgPSAoc3JjLT5yZWQgKyBzcmMtPmdyZWVuICsgc3JjLT5ibHVlKSAvIDMuMGY7Ci0g
ICAgfQotCi0gICAgc3RhdGljIHZvaWQgYXZlcmFnZShMMzJGICpkc3QsIGNvbnN0IEwzMkYgKnNy
YzEsIGNvbnN0IEwzMkYgKnNyYzIpCi0gICAgewotICAgICAgICBkc3QtPkwgPSBnbDo6YXZlcmFn
ZShzcmMxLT5MLCBzcmMyLT5MKTsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgTDMyQTMyRgotewotICAg
IGZsb2F0IEw7Ci0gICAgZmxvYXQgQTsKLQotICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6
Q29sb3JGICpkc3QsIGNvbnN0IEwzMkEzMkYgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVk
ICAgPSBzcmMtPkw7Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSBzcmMtPkw7Ci0gICAgICAgIGRzdC0+
Ymx1ZSAgPSBzcmMtPkw7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSBzcmMtPkE7Ci0gICAgfQotCi0g
ICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihMMzJBMzJGICpkc3QsIGNvbnN0IGdsOjpDb2xvckYg
KnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+TCA9IChzcmMtPnJlZCArIHNyYy0+Z3JlZW4gKyBz
cmMtPmJsdWUpIC8gMy4wZjsKLSAgICAgICAgZHN0LT5BID0gc3JjLT5hbHBoYTsKLSAgICB9Ci0K
LSAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKEwzMkEzMkYgKmRzdCwgY29uc3QgTDMyQTMyRiAqc3Jj
MSwgY29uc3QgTDMyQTMyRiAqc3JjMikKLSAgICB7Ci0gICAgICAgIGRzdC0+TCA9IGdsOjphdmVy
YWdlKHNyYzEtPkwsIHNyYzItPkwpOwotICAgICAgICBkc3QtPkEgPSBnbDo6YXZlcmFnZShzcmMx
LT5BLCBzcmMyLT5BKTsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgUjMyRzMyRgotewotICAgIGZsb2F0
IFI7Ci0gICAgZmxvYXQgRzsKLQotICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JG
ICpkc3QsIGNvbnN0IFIzMkczMkYgKnNyYykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBz
cmMtPlI7Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSBzcmMtPkc7Ci0gICAgICAgIGRzdC0+Ymx1ZSAg
PSAwLjBmOwotICAgICAgICBkc3QtPmFscGhhID0gMS4wZjsKLSAgICB9Ci0KLSAgICBzdGF0aWMg
dm9pZCB3cml0ZUNvbG9yKFIzMkczMkYgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQotICAg
IHsKLSAgICAgICAgZHN0LT5SID0gc3JjLT5yZWQ7Ci0gICAgICAgIGRzdC0+RyA9IHNyYy0+Z3Jl
ZW47Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgYXZlcmFnZShSMzJHMzJGICpkc3QsIGNvbnN0
IFIzMkczMkYgKnNyYzEsIGNvbnN0IFIzMkczMkYgKnNyYzIpCi0gICAgewotICAgICAgICBkc3Qt
PlIgPSBnbDo6YXZlcmFnZShzcmMxLT5SLCBzcmMyLT5SKTsKLSAgICAgICAgZHN0LT5HID0gZ2w6
OmF2ZXJhZ2Uoc3JjMS0+Rywgc3JjMi0+Ryk7Ci0gICAgfQotfTsKLQotc3RydWN0IFIzMkczMkIz
MkYKLXsKLSAgICBmbG9hdCBSOwotICAgIGZsb2F0IEc7Ci0gICAgZmxvYXQgQjsKLQotICAgIHN0
YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIzMkczMkIzMkYgKnNy
YykKLSAgICB7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBzcmMtPlI7Ci0gICAgICAgIGRzdC0+Z3Jl
ZW4gPSBzcmMtPkc7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSBzcmMtPkI7Ci0gICAgICAgIGRzdC0+
YWxwaGEgPSAxLjBmOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjMyRzMy
QjMyRiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPlIg
PSBzcmMtPnJlZDsKLSAgICAgICAgZHN0LT5HID0gc3JjLT5ncmVlbjsKLSAgICAgICAgZHN0LT5C
ID0gc3JjLT5ibHVlOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjMyRzMyQjMy
RiAqZHN0LCBjb25zdCBSMzJHMzJCMzJGICpzcmMxLCBjb25zdCBSMzJHMzJCMzJGICpzcmMyKQot
ICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Uiwgc3JjMi0+Uik7Ci0g
ICAgICAgIGRzdC0+RyA9IGdsOjphdmVyYWdlKHNyYzEtPkcsIHNyYzItPkcpOwotICAgICAgICBk
c3QtPkIgPSBnbDo6YXZlcmFnZShzcmMxLT5CLCBzcmMyLT5CKTsKLSAgICB9Ci19OwotCi1zdHJ1
Y3QgUjEwRzEwQjEwQTIKLXsKLSAgICB1bnNpZ25lZCBpbnQgUiA6IDEwOwotICAgIHVuc2lnbmVk
IGludCBHIDogMTA7Ci0gICAgdW5zaWduZWQgaW50IEIgOiAxMDsKLSAgICB1bnNpZ25lZCBpbnQg
QSA6IDI7Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25z
dCBSMTBHMTBCMTBBMiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5yZWQgICA9IGdsOjpub3Jt
YWxpemVkVG9GbG9hdDwxMD4oc3JjLT5SKTsKLSAgICAgICAgZHN0LT5ncmVlbiA9IGdsOjpub3Jt
YWxpemVkVG9GbG9hdDwxMD4oc3JjLT5HKTsKLSAgICAgICAgZHN0LT5ibHVlICA9IGdsOjpub3Jt
YWxpemVkVG9GbG9hdDwxMD4oc3JjLT5CKTsKLSAgICAgICAgZHN0LT5hbHBoYSA9IGdsOjpub3Jt
YWxpemVkVG9GbG9hdDwgMj4oc3JjLT5BKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCByZWFk
Q29sb3IoZ2w6OkNvbG9yVUkgKmRzdCwgY29uc3QgUjEwRzEwQjEwQTIgKnNyYykKLSAgICB7Ci0g
ICAgICAgIGRzdC0+cmVkICAgPSBzcmMtPlI7Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSBzcmMtPkc7
Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSBzcmMtPkI7Ci0gICAgICAgIGRzdC0+YWxwaGEgPSBzcmMt
PkE7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3JpdGVDb2xvcihSMTBHMTBCMTBBMiAqZHN0
LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCi0gICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6Zmxv
YXRUb05vcm1hbGl6ZWQ8MTAsIHVuc2lnbmVkIGludD4oc3JjLT5yZWQpOwotICAgICAgICBkc3Qt
PkcgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8MTAsIHVuc2lnbmVkIGludD4oc3JjLT5ncmVlbik7
Ci0gICAgICAgIGRzdC0+QiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDwxMCwgdW5zaWduZWQgaW50
PihzcmMtPmJsdWUpOwotICAgICAgICBkc3QtPkEgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8IDIs
IHVuc2lnbmVkIGludD4oc3JjLT5hbHBoYSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgd3Jp
dGVDb2xvcihSMTBHMTBCMTBBMiAqZHN0LCBjb25zdCBnbDo6Q29sb3JVSSAqc3JjKQotICAgIHsK
LSAgICAgICAgZHN0LT5SID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihzcmMtPnJlZCk7Ci0g
ICAgICAgIGRzdC0+RyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc3JjLT5ncmVlbik7Ci0g
ICAgICAgIGRzdC0+QiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc3JjLT5ibHVlKTsKLSAg
ICAgICAgZHN0LT5BID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihzcmMtPmFscGhhKTsKLSAg
ICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFIxMEcxMEIxMEEyICpkc3QsIGNvbnN0IFIx
MEcxMEIxMEEyICpzcmMxLCBjb25zdCBSMTBHMTBCMTBBMiAqc3JjMikKLSAgICB7Ci0gICAgICAg
IGRzdC0+UiA9IGdsOjphdmVyYWdlKHNyYzEtPlIsIHNyYzItPlIpOwotICAgICAgICBkc3QtPkcg
PSBnbDo6YXZlcmFnZShzcmMxLT5HLCBzcmMyLT5HKTsKLSAgICAgICAgZHN0LT5CID0gZ2w6OmF2
ZXJhZ2Uoc3JjMS0+Qiwgc3JjMi0+Qik7Ci0gICAgICAgIGRzdC0+QSA9IGdsOjphdmVyYWdlKHNy
YzEtPkEsIHNyYzItPkEpOwotICAgIH0KLX07Ci0KLXN0cnVjdCBSOUc5QjlFNQotewotICAgIHVu
c2lnbmVkIGludCBSIDogOTsKLSAgICB1bnNpZ25lZCBpbnQgRyA6IDk7Ci0gICAgdW5zaWduZWQg
aW50IEIgOiA5OwotICAgIHVuc2lnbmVkIGludCBFIDogNTsKLQotICAgIHN0YXRpYyB2b2lkIHJl
YWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFI5RzlCOUU1ICpzcmMpCi0gICAgewotICAg
ICAgICBnbDo6Y29udmVydDk5OUU1dG9SR0JGbG9hdHMoZ2w6OmJpdENhc3Q8dW5zaWduZWQgaW50
Pigqc3JjKSwgJmRzdC0+cmVkLCAmZHN0LT5ncmVlbiwgJmRzdC0+Ymx1ZSk7Ci0gICAgICAgIGRz
dC0+YWxwaGEgPSAxLjBmOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoUjlH
OUI5RTUgKmRzdCwgY29uc3QgZ2w6OkNvbG9yRiAqc3JjKQotICAgIHsKLSAgICAgICAgKnJlaW50
ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgaW50Kj4oZHN0KSA9IGdsOjpjb252ZXJ0UkdCRmxvYXRzVG85
OTlFNShzcmMtPnJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMtPmdyZWVuLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNyYy0+Ymx1ZSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgYXZlcmFnZShS
OUc5QjlFNSAqZHN0LCBjb25zdCBSOUc5QjlFNSAqc3JjMSwgY29uc3QgUjlHOUI5RTUgKnNyYzIp
Ci0gICAgewotICAgICAgICBmbG9hdCByMSwgZzEsIGIxOwotICAgICAgICBnbDo6Y29udmVydDk5
OUU1dG9SR0JGbG9hdHMoKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgaW50Kj4oc3Jj
MSksICZyMSwgJmcxLCAmYjEpOwotCi0gICAgICAgIGZsb2F0IHIyLCBnMiwgYjI7Ci0gICAgICAg
IGdsOjpjb252ZXJ0OTk5RTV0b1JHQkZsb2F0cygqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNp
Z25lZCBpbnQqPihzcmMyKSwgJnIyLCAmZzIsICZiMik7Ci0KLSAgICAgICAgKnJlaW50ZXJwcmV0
X2Nhc3Q8dW5zaWduZWQgaW50Kj4oZHN0KSA9IGdsOjpjb252ZXJ0UkdCRmxvYXRzVG85OTlFNShn
bDo6YXZlcmFnZShyMSwgcjIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjphdmVyYWdlKGcxLCBn
MiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OmF2ZXJhZ2UoYjEsIGIyKSk7Ci0gICAgfQotfTsK
LQotc3RydWN0IFIxMUcxMUIxMEYKLXsKLSAgICB1bnNpZ25lZCBpbnQgUiA6IDExOwotICAgIHVu
c2lnbmVkIGludCBHIDogMTE7Ci0gICAgdW5zaWduZWQgaW50IEIgOiAxMDsKLQotICAgIHN0YXRp
YyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IFIxMUcxMUIxMEYgKnNyYykK
LSAgICB7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBnbDo6ZmxvYXQxMVRvRmxvYXQzMihzcmMtPlIp
OwotICAgICAgICBkc3QtPmdyZWVuID0gZ2w6OmZsb2F0MTFUb0Zsb2F0MzIoc3JjLT5HKTsKLSAg
ICAgICAgZHN0LT5ibHVlICA9IGdsOjpmbG9hdDEwVG9GbG9hdDMyKHNyYy0+Qik7Ci0gICAgICAg
IGRzdC0+YWxwaGEgPSAxLjBmOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3Io
UjExRzExQjEwRiAqZHN0LCBjb25zdCBnbDo6Q29sb3JGICpzcmMpCi0gICAgewotICAgICAgICBk
c3QtPlIgPSBnbDo6ZmxvYXQzMlRvRmxvYXQxMShzcmMtPnJlZCk7Ci0gICAgICAgIGRzdC0+RyA9
IGdsOjpmbG9hdDMyVG9GbG9hdDExKHNyYy0+Z3JlZW4pOwotICAgICAgICBkc3QtPkIgPSBnbDo6
ZmxvYXQzMlRvRmxvYXQxMChzcmMtPmJsdWUpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGF2
ZXJhZ2UoUjExRzExQjEwRiAqZHN0LCBjb25zdCBSMTFHMTFCMTBGICpzcmMxLCBjb25zdCBSMTFH
MTFCMTBGICpzcmMyKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6OmF2ZXJhZ2VGbG9hdDEx
KHNyYzEtPlIsIHNyYzItPlIpOwotICAgICAgICBkc3QtPkcgPSBnbDo6YXZlcmFnZUZsb2F0MTEo
c3JjMS0+Rywgc3JjMi0+Ryk7Ci0gICAgICAgIGRzdC0+QiA9IGdsOjphdmVyYWdlRmxvYXQxMChz
cmMxLT5CLCBzcmMyLT5CKTsKLSAgICB9Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBMSUJBTkdMRV9S
RU5ERVJFUl9EM0RfSU1BR0VGT1JNQVRTX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2xvYWRpbWFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9sb2FkaW1h
Z2UuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2xvYWRpbWFnZS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw2
OTcgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxMy0yMDE1IFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gbG9hZGltYWdlLmNwcDogRGVmaW5l
cyBpbWFnZSBsb2FkaW5nIGZ1bmN0aW9ucy4KLQotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2QzZC9sb2FkaW1hZ2UuaCIKLQotbmFtZXNwYWNlIHJ4Ci17Ci0KLXZvaWQgTG9hZEE4VG9SR0JB
OChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAg
ICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVf
dCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBz
aXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQotewotICAgIGZv
ciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6
ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0
IHVpbnQ4X3QgKnNvdXJjZSA9IE9mZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+KGlucHV0LCB5LCB6
LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgdWludDMyX3Qg
KmRlc3QgPSBPZmZzZXREYXRhUG9pbnRlcjx1aW50MzJfdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRS
b3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0g
MDsgeCA8IHdpZHRoOyB4KyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZGVzdFt4
XSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pihzb3VyY2VbeF0pIDw8IDI0OwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIExvYWRBOFRvQkdSQTgoc2l6ZV90IHdpZHRo
LCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgY29uc3Qg
dWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBp
dGNoLAotICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJv
d1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKLXsKLSAgICAvLyBTYW1lIGFzIGxvYWRp
bmcgdG8gUkdCQQotICAgIExvYWRBOFRvUkdCQTgod2lkdGgsIGhlaWdodCwgZGVwdGgsIGlucHV0
LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gsIG91dHB1dCwgb3V0cHV0Um93UGl0Y2gs
IG91dHB1dERlcHRoUGl0Y2gpOwotfQotCi12b2lkIExvYWRBMzJGVG9SR0JBMzJGKHNpemVfdCB3
aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1
dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6
ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKLXsKLSAgICBmb3Ig
KHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCi0gICAgewotICAgICAgICBmb3IgKHNpemVf
dCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBm
bG9hdCAqc291cmNlID0gT2Zmc2V0RGF0YVBvaW50ZXI8ZmxvYXQ+KGlucHV0LCB5LCB6LCBpbnB1
dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgZmxvYXQgKmRlc3QgPSBP
ZmZzZXREYXRhUG9pbnRlcjxmbG9hdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0
cHV0RGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRo
OyB4KyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0g
MC4wZjsKLSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSAwLjBmOwotICAgICAgICAg
ICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IDAuMGY7Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICog
eCArIDNdID0gc291cmNlW3hdOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQot
Ci12b2lkIExvYWRBMTZGVG9SR0JBMTZGKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6
ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwg
c2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXpl
X3Qgb3V0cHV0RGVwdGhQaXRjaCkKLXsKLSAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRo
OyB6KyspCi0gICAgewotICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsr
KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCB1aW50MTZfdCAqc291cmNlID0gT2Zmc2V0
RGF0YVBvaW50ZXI8dWludDE2X3Q+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERl
cHRoUGl0Y2gpOwotICAgICAgICAgICAgdWludDE2X3QgKmRlc3QgPSBPZmZzZXREYXRhUG9pbnRl
cjx1aW50MTZfdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRj
aCk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gMDsKLSAgICAgICAg
ICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSAwOwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHgg
KyAyXSA9IDA7Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDNdID0gc291cmNlW3hdOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIExvYWRMOFRvUkdCQTgo
c2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAg
ICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3Qg
aW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6
ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKLXsKLSAgICBmb3Ig
KHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCi0gICAgewotICAgICAgICBmb3IgKHNpemVf
dCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCB1
aW50OF90ICpzb3VyY2UgPSBPZmZzZXREYXRhUG9pbnRlcjx1aW50OF90PihpbnB1dCwgeSwgeiwg
aW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIHVpbnQ4X3QgKmRl
c3QgPSBPZmZzZXREYXRhUG9pbnRlcjx1aW50OF90PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1Bp
dGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4
IDwgd2lkdGg7IHgrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB1aW50OF90IHNv
dXJjZVZhbCA9IHNvdXJjZVt4XTsKLSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSBz
b3VyY2VWYWw7Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gc291cmNlVmFsOwot
ICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IHNvdXJjZVZhbDsKLSAgICAgICAgICAg
ICAgICBkZXN0WzQgKiB4ICsgM10gPSAweEZGOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfQotfQotCi12b2lkIExvYWRMOFRvQkdSQTgoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0
LCBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQs
IHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAg
ICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qg
b3V0cHV0RGVwdGhQaXRjaCkKLXsKLSAgICAvLyBTYW1lIGFzIGxvYWRpbmcgdG8gUkdCQQotICAg
IExvYWRMOFRvUkdCQTgod2lkdGgsIGhlaWdodCwgZGVwdGgsIGlucHV0LCBpbnB1dFJvd1BpdGNo
LCBpbnB1dERlcHRoUGl0Y2gsIG91dHB1dCwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0
Y2gpOwotfQotCi12b2lkIExvYWRMMzJGVG9SR0JBMzJGKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhl
aWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90
ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0g
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1Bp
dGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKLXsKLSAgICBmb3IgKHNpemVfdCB6ID0gMDsg
eiA8IGRlcHRoOyB6KyspCi0gICAgewotICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhl
aWdodDsgeSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBmbG9hdCAqc291cmNlID0g
T2Zmc2V0RGF0YVBvaW50ZXI8ZmxvYXQ+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1
dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgZmxvYXQgKmRlc3QgPSBPZmZzZXREYXRhUG9pbnRl
cjxmbG9hdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7
Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gc291cmNlW3hdOwotICAg
ICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IHNvdXJjZVt4XTsKLSAgICAgICAgICAgICAg
ICBkZXN0WzQgKiB4ICsgMl0gPSBzb3VyY2VbeF07Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICog
eCArIDNdID0gMS4wZjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9p
ZCBMb2FkTDE2RlRvUkdCQTE2RihzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBk
ZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVf
dCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAg
ICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91
dHB1dERlcHRoUGl0Y2gpCi17Ci0gICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisr
KQotICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKLSAg
ICAgICAgewotICAgICAgICAgICAgY29uc3QgdWludDE2X3QgKnNvdXJjZSA9IE9mZnNldERhdGFQ
b2ludGVyPHVpbnQxNl90PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBp
dGNoKTsKLSAgICAgICAgICAgIHVpbnQxNl90ICpkZXN0ID0gT2Zmc2V0RGF0YVBvaW50ZXI8dWlu
dDE2X3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOwot
ICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSA9IHNvdXJjZVt4XTsKLSAgICAg
ICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSBzb3VyY2VbeF07Ci0gICAgICAgICAgICAgICAg
ZGVzdFs0ICogeCArIDJdID0gc291cmNlW3hdOwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHgg
KyAzXSA9IGdsOjpGbG9hdDE2T25lOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQot
fQotCi12b2lkIExvYWRMQThUb1JHQkE4KHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6
ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6
ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAg
ICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0
cHV0RGVwdGhQaXRjaCkKLXsKLSAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6Kysp
Ci0gICAgewotICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBjb25zdCB1aW50OF90ICpzb3VyY2UgPSBPZmZzZXREYXRhUG9p
bnRlcjx1aW50OF90PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNo
KTsKLSAgICAgICAgICAgIHVpbnQ4X3QgKmRlc3QgPSBPZmZzZXREYXRhUG9pbnRlcjx1aW50OF90
PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKLSAgICAg
ICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSBzb3VyY2VbMiAqIHggKyAwXTsKLSAg
ICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSBzb3VyY2VbMiAqIHggKyAwXTsKLSAgICAg
ICAgICAgICAgICBkZXN0WzQgKiB4ICsgMl0gPSBzb3VyY2VbMiAqIHggKyAwXTsKLSAgICAgICAg
ICAgICAgICBkZXN0WzQgKiB4ICsgM10gPSBzb3VyY2VbMiAqIHggKyAxXTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBMb2FkTEE4VG9CR1JBOChzaXplX3Qgd2lk
dGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgY29u
c3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0
aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRw
dXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCi17Ci0gICAgLy8gU2FtZSBhcyBs
b2FkaW5nIHRvIFJHQkEKLSAgICBMb2FkTEE4VG9SR0JBOCh3aWR0aCwgaGVpZ2h0LCBkZXB0aCwg
aW5wdXQsIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCwgb3V0cHV0LCBvdXRwdXRSb3dQ
aXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7Ci19Ci0KLXZvaWQgTG9hZExBMzJGVG9SR0JBMzJGKHNp
emVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXpl
X3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0
cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQotewot
ICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKLSAgICB7Ci0gICAgICAgIGZv
ciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnN0IGZsb2F0ICpzb3VyY2UgPSBPZmZzZXREYXRhUG9pbnRlcjxmbG9hdD4oaW5wdXQsIHks
IHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICBmbG9hdCAq
ZGVzdCA9IE9mZnNldERhdGFQb2ludGVyPGZsb2F0PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1Bp
dGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4
IDwgd2lkdGg7IHgrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4
ICsgMF0gPSBzb3VyY2VbMiAqIHggKyAwXTsKLSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsg
MV0gPSBzb3VyY2VbMiAqIHggKyAwXTsKLSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMl0g
PSBzb3VyY2VbMiAqIHggKyAwXTsKLSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10gPSBz
b3VyY2VbMiAqIHggKyAxXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQot
dm9pZCBMb2FkTEExNkZUb1JHQkExNkYoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXpl
X3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwg
c2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAg
ICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6
ZV90IG91dHB1dERlcHRoUGl0Y2gpCi17Ci0gICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0
aDsgeisrKQotICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkr
KykKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgdWludDE2X3QgKnNvdXJjZSA9IE9mZnNl
dERhdGFQb2ludGVyPHVpbnQxNl90PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXRE
ZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIHVpbnQxNl90ICpkZXN0ID0gT2Zmc2V0RGF0YVBvaW50
ZXI8dWludDE2X3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0
Y2gpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSA9IHNvdXJjZVsyICog
eCArIDBdOwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IHNvdXJjZVsyICogeCAr
IDBdOwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IHNvdXJjZVsyICogeCArIDBd
OwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSA9IHNvdXJjZVsyICogeCArIDFdOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIExvYWRSR0I4VG9CR1JY
OChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6
ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1
dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKLXsKLSAg
ICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCi0gICAgewotICAgICAgICBmb3Ig
KHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBj
b25zdCB1aW50OF90ICpzb3VyY2UgPSBPZmZzZXREYXRhUG9pbnRlcjx1aW50OF90PihpbnB1dCwg
eSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIHVpbnQ4
X3QgKmRlc3QgPSBPZmZzZXREYXRhUG9pbnRlcjx1aW50OF90PihvdXRwdXQsIHksIHosIG91dHB1
dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IHgg
PSAwOyB4IDwgd2lkdGg7IHgrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBkZXN0
WzQgKiB4ICsgMF0gPSBzb3VyY2VbeCAqIDMgKyAyXTsKLSAgICAgICAgICAgICAgICBkZXN0WzQg
KiB4ICsgMV0gPSBzb3VyY2VbeCAqIDMgKyAxXTsKLSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4
ICsgMl0gPSBzb3VyY2VbeCAqIDMgKyAwXTsKLSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsg
M10gPSAweEZGOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIExv
YWRSRzhUb0JHUlg4KHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAot
ICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93
UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgIHVpbnQ4
X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRj
aCkKLXsKLSAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCi0gICAgewotICAg
ICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBjb25zdCB1aW50OF90ICpzb3VyY2UgPSBPZmZzZXREYXRhUG9pbnRlcjx1aW50OF90
PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKLSAgICAgICAg
ICAgIHVpbnQ4X3QgKmRlc3QgPSBPZmZzZXREYXRhUG9pbnRlcjx1aW50OF90PihvdXRwdXQsIHks
IHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIGZvciAo
c2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBkZXN0WzQgKiB4ICsgMF0gPSAweDAwOwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHgg
KyAxXSA9IHNvdXJjZVt4ICogMiArIDFdOwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAy
XSA9IHNvdXJjZVt4ICogMiArIDBdOwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSA9
IDB4RkY7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgTG9hZFI4
VG9CR1JYOChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAg
ICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gs
IHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0
cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQotewot
ICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKLSAgICB7Ci0gICAgICAgIGZv
ciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnN0IHVpbnQ4X3QgKnNvdXJjZSA9IE9mZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+KGlucHV0
LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgdWlu
dDhfdCAqZGVzdCA9IE9mZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+KG91dHB1dCwgeSwgeiwgb3V0
cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgZm9yIChzaXplX3Qg
eCA9IDA7IHggPCB3aWR0aDsgeCsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGRl
c3RbNCAqIHggKyAwXSA9IDB4MDA7Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0g
MHgwMDsKLSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMl0gPSBzb3VyY2VbeF07Ci0gICAg
ICAgICAgICAgICAgZGVzdFs0ICogeCArIDNdID0gMHhGRjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLX0KLQotdm9pZCBMb2FkUjVHNkI1VG9CR1JBOChzaXplX3Qgd2lkdGgsIHNp
emVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBp
dGNoLAotICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRw
dXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCi17Ci0gICAgZm9yIChzaXplX3Qg
eiA9IDA7IHogPCBkZXB0aDsgeisrKQotICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgeSA9IDA7
IHkgPCBoZWlnaHQ7IHkrKykKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgdWludDE2X3Qg
KnNvdXJjZSA9IE9mZnNldERhdGFQb2ludGVyPHVpbnQxNl90PihpbnB1dCwgeSwgeiwgaW5wdXRS
b3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIHVpbnQ4X3QgKmRlc3QgPSBP
ZmZzZXREYXRhUG9pbnRlcjx1aW50OF90PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBv
dXRwdXREZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lk
dGg7IHgrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB1aW50MTZfdCByZ2IgPSBz
b3VyY2VbeF07Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gc3RhdGljX2Nhc3Q8
dWludDhfdD4oKChyZ2IgJiAweDAwMUYpIDw8IDMpIHwgKChyZ2IgJiAweDAwMUYpID4+IDIpKTsK
LSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSBzdGF0aWNfY2FzdDx1aW50OF90Pigo
KHJnYiAmIDB4MDdFMCkgPj4gMykgfCAoKHJnYiAmIDB4MDdFMCkgPj4gOSkpOwotICAgICAgICAg
ICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCgocmdiICYgMHhG
ODAwKSA+PiA4KSB8ICgocmdiICYgMHhGODAwKSA+PiAxMykpOwotICAgICAgICAgICAgICAgIGRl
c3RbNCAqIHggKyAzXSA9IDB4RkY7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19
Ci0KLXZvaWQgTG9hZFI1RzZCNVRvUkdCQTgoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBz
aXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0
LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNp
emVfdCBvdXRwdXREZXB0aFBpdGNoKQotewotICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVw
dGg7IHorKykKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5
KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IHVpbnQxNl90ICpzb3VyY2UgPSBPZmZz
ZXREYXRhUG9pbnRlcjx1aW50MTZfdD4oaW5wdXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0
RGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICB1aW50OF90ICpkZXN0ID0gT2Zmc2V0RGF0YVBvaW50
ZXI8dWludDhfdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRj
aCk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdWludDE2X3QgcmdiID0gc291cmNlW3hdOwotICAg
ICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCgocmdi
ICYgMHhGODAwKSA+PiA4KSB8ICgocmdiICYgMHhGODAwKSA+PiAxMykpOwotICAgICAgICAgICAg
ICAgIGRlc3RbNCAqIHggKyAxXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCgocmdiICYgMHgwN0Uw
KSA+PiAzKSB8ICgocmdiICYgMHgwN0UwKSA+PiA5KSk7Ci0gICAgICAgICAgICAgICAgZGVzdFs0
ICogeCArIDJdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oKChyZ2IgJiAweDAwMUYpIDw8IDMpIHwg
KChyZ2IgJiAweDAwMUYpID4+IDIpKTsKLSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10g
PSAweEZGOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIExvYWRS
R0JBOFRvQkdSQTgoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJv
d1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgIHVp
bnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQ
aXRjaCkKLXsKLSAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCi0gICAgewot
ICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBjb25zdCB1aW50MzJfdCAqc291cmNlID0gT2Zmc2V0RGF0YVBvaW50ZXI8dWlu
dDMyX3Q+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOwotICAg
ICAgICAgICAgdWludDMyX3QgKmRlc3QgPSBPZmZzZXREYXRhUG9pbnRlcjx1aW50MzJfdD4ob3V0
cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7Ci0gICAgICAgICAg
ICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgdWludDMyX3QgcmdiYSA9IHNvdXJjZVt4XTsKLSAgICAgICAgICAgICAgICBk
ZXN0W3hdID0gKEFOR0xFX1JPVEwocmdiYSwgMTYpICYgMHgwMGZmMDBmZikgfCAocmdiYSAmIDB4
ZmYwMGZmMDApOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIExv
YWRSR0JBNFRvQVJHQjQoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgs
Ci0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1
dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAg
IHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVw
dGhQaXRjaCkKLXsKLSAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCi0gICAg
ewotICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQotICAgICAgICB7
Ci0gICAgICAgICAgICBjb25zdCB1aW50MTZfdCAqc291cmNlID0gT2Zmc2V0RGF0YVBvaW50ZXI8
dWludDE2X3Q+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOwot
ICAgICAgICAgICAgdWludDE2X3QgKmRlc3QgPSBPZmZzZXREYXRhUG9pbnRlcjx1aW50MTZfdD4o
b3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7Ci0gICAgICAg
ICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgZGVzdFt4XSA9IEFOR0xFX1JPVFIxNihzb3VyY2VbeF0sIDQpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIExvYWRSR0JBNFRvQkdSQTgo
c2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXpl
X3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1
dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKLXsKLSAg
ICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCi0gICAgewotICAgICAgICBmb3Ig
KHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBj
b25zdCB1aW50MTZfdCAqc291cmNlID0gT2Zmc2V0RGF0YVBvaW50ZXI8dWludDE2X3Q+KGlucHV0
LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgdWlu
dDhfdCAqZGVzdCA9IE9mZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+KG91dHB1dCwgeSwgeiwgb3V0
cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgZm9yIChzaXplX3Qg
eCA9IDA7IHggPCB3aWR0aDsgeCsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHVp
bnQxNl90IHJnYmEgPSBzb3VyY2VbeF07Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDBd
ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oKChyZ2JhICYgMHgwMEYwKSA8PCAwKSB8ICgocmdiYSAm
IDB4MDBGMCkgPj4gNCkpOwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KCgocmdiYSAmIDB4MEYwMCkgPj4gNCkgfCAoKHJnYmEgJiAweDBGMDAp
ID4+IDgpKTsKLSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMl0gPSBzdGF0aWNfY2FzdDx1
aW50OF90PigoKHJnYmEgJiAweEYwMDApID4+IDgpIHwgKChyZ2JhICYgMHhGMDAwKSA+PiAxMikp
OwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KCgocmdiYSAmIDB4MDAwRikgPDwgNCkgfCAoKHJnYmEgJiAweDAwMEYpID4+IDApKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBMb2FkUkdCQTRUb1JHQkE4KHNp
emVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90
IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQs
IHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCi17Ci0gICAg
Zm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQotICAgIHsKLSAgICAgICAgZm9yIChz
aXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKLSAgICAgICAgewotICAgICAgICAgICAgY29u
c3QgdWludDE2X3QgKnNvdXJjZSA9IE9mZnNldERhdGFQb2ludGVyPHVpbnQxNl90PihpbnB1dCwg
eSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIHVpbnQ4
X3QgKmRlc3QgPSBPZmZzZXREYXRhUG9pbnRlcjx1aW50OF90PihvdXRwdXQsIHksIHosIG91dHB1
dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IHgg
PSAwOyB4IDwgd2lkdGg7IHgrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB1aW50
MTZfdCByZ2JhID0gc291cmNlW3hdOwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSA9
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCgocmdiYSAmIDB4RjAwMCkgPj4gOCkgfCAoKHJnYmEgJiAw
eEYwMDApID4+IDEyKSk7Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gc3RhdGlj
X2Nhc3Q8dWludDhfdD4oKChyZ2JhICYgMHgwRjAwKSA+PiA0KSB8ICgocmdiYSAmIDB4MEYwMCkg
Pj4gOCkpOwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KCgocmdiYSAmIDB4MDBGMCkgPDwgMCkgfCAoKHJnYmEgJiAweDAwRjApID4+IDQpKTsK
LSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10gPSBzdGF0aWNfY2FzdDx1aW50OF90Pigo
KHJnYmEgJiAweDAwMEYpIDw8IDQpIHwgKChyZ2JhICYgMHgwMDBGKSA+PiAwKSk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgTG9hZEJHUkE0VG9CR1JBOChzaXpl
X3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBp
bnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBz
aXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQotewotICAgIGZv
ciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6
ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0
IHVpbnQxNl90ICpzb3VyY2UgPSBPZmZzZXREYXRhUG9pbnRlcjx1aW50MTZfdD4oaW5wdXQsIHks
IHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICB1aW50OF90
ICpkZXN0ID0gT2Zmc2V0RGF0YVBvaW50ZXI8dWludDhfdD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRS
b3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0g
MDsgeCA8IHdpZHRoOyB4KyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdWludDE2
X3QgYmdyYSA9IHNvdXJjZVt4XTsKLSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSBz
dGF0aWNfY2FzdDx1aW50OF90PigoKGJncmEgJiAweEYwMDApID4+IDgpIHwgKChiZ3JhICYgMHhG
MDAwKSA+PiAxMikpOwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KCgoYmdyYSAmIDB4MEYwMCkgPj4gNCkgfCAoKGJncmEgJiAweDBGMDApID4+
IDgpKTsKLSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMl0gPSBzdGF0aWNfY2FzdDx1aW50
OF90PigoKGJncmEgJiAweDAwRjApIDw8IDApIHwgKChiZ3JhICYgMHgwMEYwKSA+PiA0KSk7Ci0g
ICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDNdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oKChi
Z3JhICYgMHgwMDBGKSA8PCA0KSB8ICgoYmdyYSAmIDB4MDAwRikgPj4gMCkpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIExvYWRSR0I1QTFUb0ExUkdCNShzaXpl
X3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90
IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1
dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKLXsKLSAg
ICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCi0gICAgewotICAgICAgICBmb3Ig
KHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBj
b25zdCB1aW50MTZfdCAqc291cmNlID0gT2Zmc2V0RGF0YVBvaW50ZXI8dWludDE2X3Q+KGlucHV0
LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgdWlu
dDE2X3QgKmRlc3QgPSBPZmZzZXREYXRhUG9pbnRlcjx1aW50MTZfdD4ob3V0cHV0LCB5LCB6LCBv
dXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICBmb3IgKHNpemVf
dCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ZGVzdFt4XSA9IEFOR0xFX1JPVFIxNihzb3VyY2VbeF0sIDEpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgfQotfQotCi12b2lkIExvYWRSR0I1QTFUb0JHUkE4KHNpemVfdCB3aWR0aCwg
c2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRo
UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91
dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKLXsKLSAgICBmb3IgKHNpemVf
dCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCi0gICAgewotICAgICAgICBmb3IgKHNpemVfdCB5ID0g
MDsgeSA8IGhlaWdodDsgeSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCB1aW50MTZf
dCAqc291cmNlID0gT2Zmc2V0RGF0YVBvaW50ZXI8dWludDE2X3Q+KGlucHV0LCB5LCB6LCBpbnB1
dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgdWludDhfdCAqZGVzdCA9
IE9mZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gs
IG91dHB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3
aWR0aDsgeCsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHVpbnQxNl90IHJnYmEg
PSBzb3VyY2VbeF07Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gc3RhdGljX2Nh
c3Q8dWludDhfdD4oKChyZ2JhICYgMHgwMDNFKSA8PCAyKSB8ICgocmdiYSAmIDB4MDAzRSkgPj4g
MykpOwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KCgocmdiYSAmIDB4MDdDMCkgPj4gMykgfCAoKHJnYmEgJiAweDA3QzApID4+IDgpKTsKLSAg
ICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMl0gPSBzdGF0aWNfY2FzdDx1aW50OF90PigoKHJn
YmEgJiAweEY4MDApID4+IDgpIHwgKChyZ2JhICYgMHhGODAwKSA+PiAxMykpOwotICAgICAgICAg
ICAgICAgIGRlc3RbNCAqIHggKyAzXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KChyZ2JhICYgMHgw
MDAxKSA/IDB4RkYgOiAwKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQot
dm9pZCBMb2FkUkdCNUExVG9SR0JBOChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVf
dCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNp
emVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAg
ICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90
IG91dHB1dERlcHRoUGl0Y2gpCi17Ci0gICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsg
eisrKQotICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykK
LSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgdWludDE2X3QgKnNvdXJjZSA9IE9mZnNldERh
dGFQb2ludGVyPHVpbnQxNl90PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0
aFBpdGNoKTsKLSAgICAgICAgICAgIHVpbnQ4X3QgKmRlc3QgPSBPZmZzZXREYXRhUG9pbnRlcjx1
aW50OF90PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsK
LSAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICB1aW50MTZfdCByZ2JhID0gc291cmNlW3hdOwotICAgICAg
ICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCgocmdiYSAm
IDB4RjgwMCkgPj4gOCkgfCAoKHJnYmEgJiAweEY4MDApID4+IDEzKSk7Ci0gICAgICAgICAgICAg
ICAgZGVzdFs0ICogeCArIDFdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oKChyZ2JhICYgMHgwN0Mw
KSA+PiAzKSB8ICgocmdiYSAmIDB4MDdDMCkgPj4gOCkpOwotICAgICAgICAgICAgICAgIGRlc3Rb
NCAqIHggKyAyXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCgocmdiYSAmIDB4MDAzRSkgPDwgMikg
fCAoKHJnYmEgJiAweDAwM0UpID4+IDMpKTsKLSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsg
M10gPSBzdGF0aWNfY2FzdDx1aW50OF90PigocmdiYSAmIDB4MDAwMSkgPyAweEZGIDogMCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgTG9hZEJHUjVBMVRvQkdS
QTgoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwg
c2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAq
b3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQot
ewotICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKLSAgICB7Ci0gICAgICAg
IGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnN0IHVpbnQxNl90ICpzb3VyY2UgPSBPZmZzZXREYXRhUG9pbnRlcjx1aW50MTZfdD4o
aW5wdXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7Ci0gICAgICAgICAg
ICB1aW50OF90ICpkZXN0ID0gT2Zmc2V0RGF0YVBvaW50ZXI8dWludDhfdD4ob3V0cHV0LCB5LCB6
LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICBmb3IgKHNp
emVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgdWludDE2X3QgYmdyYSA9IHNvdXJjZVt4XTsKLSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4
ICsgMF0gPSBzdGF0aWNfY2FzdDx1aW50OF90PigoKGJncmEgJiAweEY4MDApID4+IDgpIHwgKChi
Z3JhICYgMHhGODAwKSA+PiAxMykpOwotICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCgoYmdyYSAmIDB4MDdDMCkgPj4gMykgfCAoKGJncmEgJiAw
eDA3QzApID4+IDgpKTsKLSAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMl0gPSBzdGF0aWNf
Y2FzdDx1aW50OF90PigoKGJncmEgJiAweDAwM0UpIDw8IDIpIHwgKChiZ3JhICYgMHgwMDNFKSA+
PiAzKSk7Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDNdID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oKGJncmEgJiAweDAwMDEpID8gMHhGRiA6IDApOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgfQotfQotCi12b2lkIExvYWRSR0IxMEEyVG9SR0JBOChzaXplX3Qgd2lkdGgsIHNp
emVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQ
aXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91
dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKLXsKLSAgICBmb3IgKHNpemVf
dCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCi0gICAgewotICAgICAgICBmb3IgKHNpemVfdCB5ID0g
MDsgeSA8IGhlaWdodDsgeSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCB1aW50MzJf
dCAqc291cmNlID0gT2Zmc2V0RGF0YVBvaW50ZXI8dWludDMyX3Q+KGlucHV0LCB5LCB6LCBpbnB1
dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgdWludDhfdCAqZGVzdCA9
IE9mZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gs
IG91dHB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3
aWR0aDsgeCsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHVpbnQzMl90IHJnYmEg
PSBzb3VyY2VbeF07Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gc3RhdGljX2Nh
c3Q8dWludDhfdD4oKHJnYmEgJiAweDAwMDAwM0ZGKSA+PiAgMik7Ci0gICAgICAgICAgICAgICAg
ZGVzdFs0ICogeCArIDFdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oKHJnYmEgJiAweDAwMEZGQzAw
KSA+PiAxMik7Ci0gICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDJdID0gc3RhdGljX2Nhc3Q8
dWludDhfdD4oKHJnYmEgJiAweDNGRjAwMDAwKSA+PiAyMik7Ci0gICAgICAgICAgICAgICAgZGVz
dFs0ICogeCArIDNdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oKChyZ2JhICYgMHhDMDAwMDAwMCkg
Pj4gMzApICogMHg1NSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZv
aWQgTG9hZFJHQjE2RlRvUkdCOUU1KHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90
IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNp
emVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVf
dCBvdXRwdXREZXB0aFBpdGNoKQotewotICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7
IHorKykKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5Kysp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IHVpbnQxNl90ICpzb3VyY2UgPSBPZmZzZXRE
YXRhUG9pbnRlcjx1aW50MTZfdD4oaW5wdXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVw
dGhQaXRjaCk7Ci0gICAgICAgICAgICB1aW50MzJfdCAqZGVzdCA9IE9mZnNldERhdGFQb2ludGVy
PHVpbnQzMl90PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNo
KTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBkZXN0W3hdID0gZ2w6OmNvbnZlcnRSR0JGbG9hdHNU
bzk5OUU1KGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNvdXJjZVt4ICogMyArIDBdKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpmbG9hdDE2
VG9GbG9hdDMyKHNvdXJjZVt4ICogMyArIDFdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNvdXJjZVt4
ICogMyArIDJdKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQg
TG9hZFJHQjMyRlRvUkdCOUU1KHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRl
cHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVf
dCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBv
dXRwdXREZXB0aFBpdGNoKQotewotICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHor
KykKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IGZsb2F0ICpzb3VyY2UgPSBPZmZzZXREYXRhUG9p
bnRlcjxmbG9hdD4oaW5wdXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7
Ci0gICAgICAgICAgICB1aW50MzJfdCAqZGVzdCA9IE9mZnNldERhdGFQb2ludGVyPHVpbnQzMl90
PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKLSAgICAg
ICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBkZXN0W3hdID0gZ2w6OmNvbnZlcnRSR0JGbG9hdHNUbzk5OUU1KHNv
dXJjZVt4ICogMyArIDBdLCBzb3VyY2VbeCAqIDMgKyAxXSwgc291cmNlW3ggKiAzICsgMl0pOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIExvYWRSR0IxNkZUb1JH
MTFCMTBGKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93
UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVw
dGhQaXRjaCkKLXsKLSAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCi0gICAg
ewotICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQotICAgICAgICB7
Ci0gICAgICAgICAgICBjb25zdCB1aW50MTZfdCAqc291cmNlID0gT2Zmc2V0RGF0YVBvaW50ZXI8
dWludDE2X3Q+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOwot
ICAgICAgICAgICAgdWludDMyX3QgKmRlc3QgPSBPZmZzZXREYXRhUG9pbnRlcjx1aW50MzJfdD4o
b3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7Ci0gICAgICAg
ICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgZGVzdFt4XSA9IChnbDo6ZmxvYXQzMlRvRmxvYXQxMShnbDo6ZmxvYXQx
NlRvRmxvYXQzMihzb3VyY2VbeCAqIDMgKyAwXSkpIDw8ICAwKSB8Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgIChnbDo6ZmxvYXQzMlRvRmxvYXQxMShnbDo6ZmxvYXQxNlRvRmxvYXQzMihzb3Vy
Y2VbeCAqIDMgKyAxXSkpIDw8IDExKSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIChnbDo6
ZmxvYXQzMlRvRmxvYXQxMChnbDo6ZmxvYXQxNlRvRmxvYXQzMihzb3VyY2VbeCAqIDMgKyAyXSkp
IDw8IDIyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBMb2Fk
UkdCMzJGVG9SRzExQjEwRihzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVf
dCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90
IG91dHB1dERlcHRoUGl0Y2gpCi17Ci0gICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsg
eisrKQotICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykK
LSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgZmxvYXQgKnNvdXJjZSA9IE9mZnNldERhdGFQ
b2ludGVyPGZsb2F0PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNo
KTsKLSAgICAgICAgICAgIHVpbnQzMl90ICpkZXN0ID0gT2Zmc2V0RGF0YVBvaW50ZXI8dWludDMy
X3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOwotICAg
ICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGRlc3RbeF0gPSAoZ2w6OmZsb2F0MzJUb0Zsb2F0MTEoc291cmNl
W3ggKiAzICsgMF0pIDw8ICAwKSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIChnbDo6Zmxv
YXQzMlRvRmxvYXQxMShzb3VyY2VbeCAqIDMgKyAxXSkgPDwgMTEpIHwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGdsOjpmbG9hdDMyVG9GbG9hdDEwKHNvdXJjZVt4ICogMyArIDJdKSA8PCAy
Mik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgTG9hZEc4UjI0
VG9SMjRHOChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0
Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgdWludDhf
dCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNo
KQotewotICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKLSAgICB7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnN0IHVpbnQzMl90ICpzb3VyY2UgPSBPZmZzZXREYXRhUG9pbnRlcjx1aW50MzJf
dD4oaW5wdXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7Ci0gICAgICAg
ICAgICB1aW50MzJfdCAqZGVzdCA9IE9mZnNldERhdGFQb2ludGVyPHVpbnQzMl90PihvdXRwdXQs
IHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIGZv
ciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICB1aW50MzJfdCBkID0gc291cmNlW3hdID4+IDg7Ci0gICAgICAgICAgICAgICAgdWlu
dDhfdCAgcyA9IHNvdXJjZVt4XSAmIDB4RkY7Ci0gICAgICAgICAgICAgICAgZGVzdFt4XSA9IGQg
fCAocyA8PCAyNCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQg
TG9hZFJHQjMyRlRvUkdCQTE2RihzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBk
ZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6
ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVf
dCBvdXRwdXREZXB0aFBpdGNoKQotewotICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7
IHorKykKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5Kysp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IGZsb2F0ICpzb3VyY2UgPSBPZmZzZXREYXRh
UG9pbnRlcjxmbG9hdD4oaW5wdXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRj
aCk7Ci0gICAgICAgICAgICB1aW50MTZfdCAqZGVzdCA9IE9mZnNldERhdGFQb2ludGVyPHVpbnQx
Nl90PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKLSAg
ICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBkZXN0W3ggKiA0ICsgMF0gPSBnbDo6ZmxvYXQzMlRvRmxvYXQx
Nihzb3VyY2VbeCAqIDMgKyAwXSk7Ci0gICAgICAgICAgICAgICAgZGVzdFt4ICogNCArIDFdID0g
Z2w6OmZsb2F0MzJUb0Zsb2F0MTYoc291cmNlW3ggKiAzICsgMV0pOwotICAgICAgICAgICAgICAg
IGRlc3RbeCAqIDQgKyAyXSA9IGdsOjpmbG9hdDMyVG9GbG9hdDE2KHNvdXJjZVt4ICogMyArIDJd
KTsKLSAgICAgICAgICAgICAgICBkZXN0W3ggKiA0ICsgM10gPSBnbDo6RmxvYXQxNk9uZTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBMb2FkUjMyVG9SMTYoc2l6
ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAg
ICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1
dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBv
dXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCi17Ci0gICAgZm9yIChzaXpl
X3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQotICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgeSA9
IDA7IHkgPCBoZWlnaHQ7IHkrKykKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgdWludDMy
X3QgKnNvdXJjZSA9IE9mZnNldERhdGFQb2ludGVyPHVpbnQzMl90PihpbnB1dCwgeSwgeiwgaW5w
dXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIHVpbnQxNl90ICpkZXN0
ID0gT2Zmc2V0RGF0YVBvaW50ZXI8dWludDE2X3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0
Y2gsIG91dHB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHgg
PCB3aWR0aDsgeCsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGRlc3RbeF0gPSBz
b3VyY2VbeF0gPj4gMTY7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZv
aWQgTG9hZFIzMlRvUjI0Rzgoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVw
dGgsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5w
dXRSb3dQaXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAg
dWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0
aFBpdGNoKQotewotICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKLSAgICB7
Ci0gICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90ICpzb3VyY2UgPSBPZmZzZXREYXRhUG9pbnRlcjx1
aW50MzJfdD4oaW5wdXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7Ci0g
ICAgICAgICAgICB1aW50MzJfdCAqZGVzdCA9IE9mZnNldERhdGFQb2ludGVyPHVpbnQzMl90Pihv
dXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKLQotICAgICAg
ICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGRlc3RbeF0gPSBzb3VyY2VbeF0gPj4gODsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KLX0KLQotfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9sb2FkaW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2xvYWRpbWFnZS5o
CShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2xvYWRpbWFnZS5oCShub25leGlzdGVudCkKQEAgLTEsMjAxICswLDAg
QEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTMtMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIGxvYWRpbWFnZS5oOiBEZWZpbmVzIGltYWdlIGxv
YWRpbmcgZnVuY3Rpb25zCi0KLSNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfRDNEX0xPQURJTUFH
RV9IXwotI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfTE9BRElNQUdFX0hfCi0KLSNpbmNs
dWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgiCi0KLSNpbmNsdWRlIDxzdGRpbnQuaD4KLQotbmFt
ZXNwYWNlIHJ4Ci17Ci0KLXZvaWQgTG9hZEE4VG9SR0JBOChzaXplX3Qgd2lkdGgsIHNpemVfdCBo
ZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpp
bnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAg
ICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNp
emVfdCBvdXRwdXREZXB0aFBpdGNoKTsKLQotdm9pZCBMb2FkQThUb0JHUkE4KHNpemVfdCB3aWR0
aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgIGNvbnN0
IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQ
aXRjaCwKLSAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRS
b3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOwotCi12b2lkIExvYWRBOFRvQkdSQThf
U1NFMihzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRj
aCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4
X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRj
aCk7Ci0KLXZvaWQgTG9hZEEzMkZUb1JHQkEzMkYoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0
LCBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlu
cHV0LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gs
IHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKLQotdm9pZCBMb2FkQTE2RlRvUkdCQTE2RihzaXpl
X3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3Qg
aW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQs
IHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOwotCi12b2lk
IExvYWRMOFRvUkdCQTgoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgs
Ci0gICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJv
d1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgIHVpbnQ4
X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRj
aCk7Ci0KLXZvaWQgTG9hZEw4VG9CR1JBOChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNp
emVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6
ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAg
ICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRw
dXREZXB0aFBpdGNoKTsKLQotdm9pZCBMb2FkTDMyRlRvUkdCQTMyRihzaXplX3Qgd2lkdGgsIHNp
emVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBp
dGNoLAotICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRw
dXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOwotCi12b2lkIExvYWRMMTZGVG9S
R0JBMTZGKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0
Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4
X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRj
aCk7Ci0KLXZvaWQgTG9hZExBOFRvUkdCQTgoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBz
aXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBz
aXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAg
ICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBv
dXRwdXREZXB0aFBpdGNoKTsKLQotdm9pZCBMb2FkTEE4VG9CR1JBOChzaXplX3Qgd2lkdGgsIHNp
emVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlu
dDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNo
LAotICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQ
aXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOwotCi12b2lkIExvYWRMQTMyRlRvUkdCQTMy
RihzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwg
c2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qg
Km91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7
Ci0KLXZvaWQgTG9hZExBMTZGVG9SR0JBMTZGKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwg
c2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5w
dXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gs
IHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKLQotdm9pZCBMb2FkUkdCOFRvQkdSWDgoc2l6ZV90
IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAg
ICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1
dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVf
dCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOwotCi12b2lkIExvYWRS
RzhUb0JHUlg4KHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAg
ICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0
Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qg
Km91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7
Ci0KLXZvaWQgTG9hZFI4VG9CR1JYOChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVf
dCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90
IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAg
ICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXRE
ZXB0aFBpdGNoKTsKLQotdm9pZCBMb2FkUjVHNkI1VG9CR1JBOChzaXplX3Qgd2lkdGgsIHNpemVf
dCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlu
dDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNo
LAotICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRS
b3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOwotCi12b2lkIExvYWRSNUc2QjVUb1JH
QkE4KHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gs
IHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qg
Km91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7
Ci0KLXZvaWQgTG9hZFJHQkE4VG9CR1JBOF9TU0UyKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdo
dCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhf
dCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0
Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKLQotdm9pZCBMb2FkUkdCQThUb0JH
UkE4KHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwg
c2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpv
dXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOwot
Ci12b2lkIExvYWRSR0JBNFRvQVJHQjQoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXpl
X3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNp
emVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qg
b3V0cHV0RGVwdGhQaXRjaCk7Ci0KLXZvaWQgTG9hZFJHQkE0VG9CR1JBOChzaXplX3Qgd2lkdGgs
IHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRo
UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0
cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKLQotdm9pZCBMb2FkUkdCQTRU
b1JHQkE4KHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRj
aCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICB1aW50OF90
ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gp
OwotCi12b2lkIExvYWRCR1JBNFRvQkdSQTgoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBz
aXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQs
IHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXpl
X3Qgb3V0cHV0RGVwdGhQaXRjaCk7Ci0KLXZvaWQgTG9hZFJHQjVBMVRvQTFSR0I1KHNpemVfdCB3
aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5w
dXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBz
aXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKLQotdm9pZCBM
b2FkUkdCNUExVG9CR1JBOChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBp
bnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAg
ICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1
dERlcHRoUGl0Y2gpOwotCi12b2lkIExvYWRSR0I1QTFUb1JHQkE4KHNpemVfdCB3aWR0aCwgc2l6
ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0
Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1
dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7Ci0KLXZvaWQgTG9hZEJHUjVBMVRv
QkdSQTgoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRj
aCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgdWludDhf
dCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNo
KTsKLQotdm9pZCBMb2FkUkdCMTBBMlRvUkdCQTgoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0
LCBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpp
bnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAg
ICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRj
aCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOwotCi12b2lkIExvYWRSR0IxNkZUb1JHQjlFNShz
aXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBz
aXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90
ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gp
OwotCi12b2lkIExvYWRSR0IzMkZUb1JHQjlFNShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQs
IHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlu
cHV0LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNo
LCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7Ci0KLXZvaWQgTG9hZFJHQjE2RlRvUkcxMUIxMEYo
c2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwg
c2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhf
dCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNo
KTsKLQotdm9pZCBMb2FkUkdCMzJGVG9SRzExQjEwRihzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWln
aHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhf
dCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRS
b3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOwotCi12b2lkIExvYWRHOFIyNFRvUjI0
Rzgoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBz
aXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91
dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSB0eXBlLCBzaXplX3QgY29tcG9uZW50Q291bnQ+Ci1pbmxpbmUg
dm9pZCBMb2FkVG9OYXRpdmUoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVw
dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVf
dCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qg
b3V0cHV0RGVwdGhQaXRjaCk7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSB0eXBlLCB1aW50MzJfdCBm
b3VydGhDb21wb25lbnRCaXRzPgotaW5saW5lIHZvaWQgTG9hZFRvTmF0aXZlM1RvNChzaXplX3Qg
d2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXpl
X3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90
ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gp
OwotCi10ZW1wbGF0ZSA8c2l6ZV90IGNvbXBvbmVudENvdW50PgotaW5saW5lIHZvaWQgTG9hZDMy
RlRvMTZGKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQ
aXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRo
UGl0Y2gpOwotCi12b2lkIExvYWRSR0IzMkZUb1JHQkExNkYoc2l6ZV90IHdpZHRoLCBzaXplX3Qg
aGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlu
dDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNo
LAotICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1
dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7Ci0KLXRlbXBsYXRlIDxzaXplX3Qg
YmxvY2tXaWR0aCwgc2l6ZV90IGJsb2NrSGVpZ2h0LCBzaXplX3QgYmxvY2tTaXplPgotaW5saW5l
IHZvaWQgTG9hZENvbXByZXNzZWRUb05hdGl2ZShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQs
IHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBp
dGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQs
IHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOwotCi12b2lk
IExvYWRSMzJUb1IxNihzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwK
LSAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQ
aXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qg
Km91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSB0eXBlLCB1aW50MzJfdCBmaXJzdEJpdHMsIHVpbnQzMl90
IHNlY29uZEJpdHMsIHVpbnQzMl90IHRoaXJkQml0cywgdWludDMyX3QgZm91cnRoQml0cz4KLWlu
bGluZSB2b2lkIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YShzaXplX3Qgd2lkdGgsIHNpemVfdCBo
ZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERl
cHRoUGl0Y2gpOwotCi12b2lkIExvYWRSMzJUb1IyNEc4KHNpemVfdCB3aWR0aCwgc2l6ZV90IGhl
aWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpp
bnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAg
ICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBz
aXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5l
IFQgKk9mZnNldERhdGFQb2ludGVyKHVpbnQ4X3QgKmRhdGEsIHNpemVfdCB5LCBzaXplX3Qgeiwg
c2l6ZV90IHJvd1BpdGNoLCBzaXplX3QgZGVwdGhQaXRjaCk7Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotaW5saW5lIGNvbnN0IFQgKk9mZnNldERhdGFQb2ludGVyKGNvbnN0IHVpbnQ4X3QgKmRh
dGEsIHNpemVfdCB5LCBzaXplX3Qgeiwgc2l6ZV90IHJvd1BpdGNoLCBzaXplX3QgZGVwdGhQaXRj
aCk7Ci0KLX0KLQotI2luY2x1ZGUgImxvYWRpbWFnZS5pbmwiCi0KLSNlbmRpZiAvLyBMSUJBTkdM
RV9SRU5ERVJFUl9EM0RfTE9BRElNQUdFX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2xvYWRpbWFnZS5pbmwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9sb2FkaW1h
Z2UuaW5sCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2xvYWRpbWFnZS5pbmwJKG5vbmV4aXN0ZW50KQpAQCAtMSwx
NTYgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxNC0yMDE1IFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgImNvbW1vbi9tYXRodXRp
bC5oIgotCi1uYW1lc3BhY2UgcngKLXsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUg
VCAqT2Zmc2V0RGF0YVBvaW50ZXIodWludDhfdCAqZGF0YSwgc2l6ZV90IHksIHNpemVfdCB6LCBz
aXplX3Qgcm93UGl0Y2gsIHNpemVfdCBkZXB0aFBpdGNoKQotewotICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PFQqPihkYXRhICsgKHkgKiByb3dQaXRjaCkgKyAoeiAqIGRlcHRoUGl0Y2gpKTsK
LX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgY29uc3QgVCAqT2Zmc2V0RGF0YVBv
aW50ZXIoY29uc3QgdWludDhfdCAqZGF0YSwgc2l6ZV90IHksIHNpemVfdCB6LCBzaXplX3Qgcm93
UGl0Y2gsIHNpemVfdCBkZXB0aFBpdGNoKQotewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGNvbnN0IFQqPihkYXRhICsgKHkgKiByb3dQaXRjaCkgKyAoeiAqIGRlcHRoUGl0Y2gpKTsKLX0K
LQotdGVtcGxhdGUgPHR5cGVuYW1lIHR5cGUsIHNpemVfdCBjb21wb25lbnRDb3VudD4KLWlubGlu
ZSB2b2lkIExvYWRUb05hdGl2ZShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBk
ZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6
ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVf
dCBvdXRwdXREZXB0aFBpdGNoKQotewotICAgIGNvbnN0IHNpemVfdCByb3dTaXplID0gd2lkdGgg
KiBzaXplb2YodHlwZSkgKiBjb21wb25lbnRDb3VudDsKLSAgICBjb25zdCBzaXplX3QgbGF5ZXJT
aXplID0gcm93U2l6ZSAqIGhlaWdodDsKLSAgICBjb25zdCBzaXplX3QgaW1hZ2VTaXplID0gbGF5
ZXJTaXplICogZGVwdGg7Ci0KLSAgICBpZiAobGF5ZXJTaXplID09IGlucHV0RGVwdGhQaXRjaCAm
JiBsYXllclNpemUgPT0gb3V0cHV0RGVwdGhQaXRjaCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChy
b3dTaXplID09IGlucHV0Um93UGl0Y2ggJiYgcm93U2l6ZSA9PSBvdXRwdXRSb3dQaXRjaCk7Ci0g
ICAgICAgIG1lbWNweShvdXRwdXQsIGlucHV0LCBpbWFnZVNpemUpOwotICAgIH0KLSAgICBlbHNl
IGlmIChyb3dTaXplID09IGlucHV0Um93UGl0Y2ggJiYgcm93U2l6ZSA9PSBvdXRwdXRSb3dQaXRj
aCkKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKLSAg
ICAgICAgewotICAgICAgICAgICAgY29uc3QgdHlwZSAqc291cmNlID0gT2Zmc2V0RGF0YVBvaW50
ZXI8dHlwZT4oaW5wdXQsIDAsIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7Ci0g
ICAgICAgICAgICB0eXBlICpkZXN0ID0gT2Zmc2V0RGF0YVBvaW50ZXI8dHlwZT4ob3V0cHV0LCAw
LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7Ci0KLSAgICAgICAgICAgIG1l
bWNweShkZXN0LCBzb3VyY2UsIGxheWVyU2l6ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxz
ZQotICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgKnNvdXJjZSA9IE9mZnNl
dERhdGFQb2ludGVyPHR5cGU+KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRo
UGl0Y2gpOwotICAgICAgICAgICAgICAgIHR5cGUgKmRlc3QgPSBPZmZzZXREYXRhUG9pbnRlcjx0
eXBlPihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKLSAg
ICAgICAgICAgICAgICBtZW1jcHkoZGVzdCwgc291cmNlLCB3aWR0aCAqIHNpemVvZih0eXBlKSAq
IGNvbXBvbmVudENvdW50KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQot
dGVtcGxhdGUgPHR5cGVuYW1lIHR5cGUsIHVpbnQzMl90IGZvdXJ0aENvbXBvbmVudEJpdHM+Ci1p
bmxpbmUgdm9pZCBMb2FkVG9OYXRpdmUzVG80KHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwg
c2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90
ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1
dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKLXsKLSAgICBjb25zdCB0eXBlIGZv
dXJ0aFZhbHVlID0gZ2w6OmJpdENhc3Q8dHlwZT4oZm91cnRoQ29tcG9uZW50Qml0cyk7Ci0KLSAg
ICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCi0gICAgewotICAgICAgICBmb3Ig
KHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBj
b25zdCB0eXBlICpzb3VyY2UgPSBPZmZzZXREYXRhUG9pbnRlcjx0eXBlPihpbnB1dCwgeSwgeiwg
aW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIHR5cGUgKmRlc3Qg
PSBPZmZzZXREYXRhUG9pbnRlcjx0eXBlPihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBv
dXRwdXREZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lk
dGg7IHgrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBkZXN0W3ggKiA0ICsgMF0g
PSBzb3VyY2VbeCAqIDMgKyAwXTsKLSAgICAgICAgICAgICAgICBkZXN0W3ggKiA0ICsgMV0gPSBz
b3VyY2VbeCAqIDMgKyAxXTsKLSAgICAgICAgICAgICAgICBkZXN0W3ggKiA0ICsgMl0gPSBzb3Vy
Y2VbeCAqIDMgKyAyXTsKLSAgICAgICAgICAgICAgICBkZXN0W3ggKiA0ICsgM10gPSBmb3VydGhW
YWx1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotdGVtcGxhdGUgPHNp
emVfdCBjb21wb25lbnRDb3VudD4KLWlubGluZSB2b2lkIExvYWQzMkZUbzE2RihzaXplX3Qgd2lk
dGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1
dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBz
aXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQotewotICAgIGNv
bnN0IHNpemVfdCBlbGVtZW50V2lkdGggPSBjb21wb25lbnRDb3VudCAqIHdpZHRoOwotCi0gICAg
Zm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQotICAgIHsKLSAgICAgICAgZm9yIChz
aXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKLSAgICAgICAgewotICAgICAgICAgICAgY29u
c3QgZmxvYXQgKnNvdXJjZSA9IE9mZnNldERhdGFQb2ludGVyPGZsb2F0PihpbnB1dCwgeSwgeiwg
aW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIHVpbnQxNl90ICpk
ZXN0ID0gT2Zmc2V0RGF0YVBvaW50ZXI8dWludDE2X3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93
UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOwotCi0gICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0g
MDsgeCA8IGVsZW1lbnRXaWR0aDsgeCsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGRlc3RbeF0gPSBnbDo6ZmxvYXQzMlRvRmxvYXQxNihzb3VyY2VbeF0pOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgfQotfQotCi10ZW1wbGF0ZSA8c2l6ZV90IGJsb2NrV2lkdGgsIHNp
emVfdCBibG9ja0hlaWdodCwgc2l6ZV90IGJsb2NrU2l6ZT4KLWlubGluZSB2b2lkIExvYWRDb21w
cmVzc2VkVG9OYXRpdmUoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0
LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0
Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQotewotICAgIGNvbnN0IHNpemVfdCBj
b2x1bW5zID0gKHdpZHRoICsgKGJsb2NrV2lkdGggLSAxKSkgLyBibG9ja1dpZHRoOwotICAgIGNv
bnN0IHNpemVfdCByb3dzID0gKGhlaWdodCArIChibG9ja0hlaWdodCAtIDEpKSAvIGJsb2NrSGVp
Z2h0OwotCi0gICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgKyt6KQotICAgIHsKLSAg
ICAgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCByb3dzOyArK3kpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNvdXJjZSA9IE9mZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+
KGlucHV0LCB5LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOwotICAgICAgICAg
ICAgdWludDhfdCAqZGVzdCA9IE9mZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+KG91dHB1dCwgeSwg
eiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgbWVtY3B5
KGRlc3QsIHNvdXJjZSwgY29sdW1ucyAqIGJsb2NrU2l6ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci19
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSB0eXBlLCB1aW50MzJfdCBmaXJzdEJpdHMsIHVpbnQzMl90
IHNlY29uZEJpdHMsIHVpbnQzMl90IHRoaXJkQml0cywgdWludDMyX3QgZm91cnRoQml0cz4KLWlu
bGluZSB2b2lkIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YShzaXplX3Qgd2lkdGgsIHNpemVfdCBo
ZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERl
cHRoUGl0Y2gpCi17Ci0gICAgdHlwZSB3cml0ZVZhbHVlc1s0XSA9Ci0gICAgewotICAgICAgICBn
bDo6Yml0Q2FzdDx0eXBlPihmaXJzdEJpdHMpLAotICAgICAgICBnbDo6Yml0Q2FzdDx0eXBlPihz
ZWNvbmRCaXRzKSwKLSAgICAgICAgZ2w6OmJpdENhc3Q8dHlwZT4odGhpcmRCaXRzKSwKLSAgICAg
ICAgZ2w6OmJpdENhc3Q8dHlwZT4oZm91cnRoQml0cyksCi0gICAgfTsKLQotICAgIGZvciAoc2l6
ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IHkg
PSAwOyB5IDwgaGVpZ2h0OyB5KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGUgKmRlc3RS
b3cgPSBPZmZzZXREYXRhUG9pbnRlcjx0eXBlPihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNo
LCBvdXRwdXREZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwg
d2lkdGg7IHgrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlKiBkZXN0UGl4
ZWwgPSBkZXN0Um93ICsgeCAqIDQ7Ci0KLSAgICAgICAgICAgICAgICAvLyBUaGlzIGNvdWxkIHBv
dGVudGlhbGx5IGJlIG9wdGltaXplZCBieSBnZW5lcmF0aW5nIGFuIGVudGlyZSByb3cgb2YgaW5p
dGlhbGl6YXRpb24KLSAgICAgICAgICAgICAgICAvLyBkYXRhIGFuZCBjb3B5aW5nIHJvdyBieSBy
b3cgaW5zdGVhZCBvZiBwaXhlbCBieSBwaXhlbC4KLSAgICAgICAgICAgICAgICBtZW1jcHkoZGVz
dFBpeGVsLCB3cml0ZVZhbHVlcywgc2l6ZW9mKHR5cGUpICogNCk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9Ci19Ci0KLX0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvbG9hZGltYWdlU1NFMi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9sb2FkaW1h
Z2VTU0UyLmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9sb2FkaW1hZ2VTU0UyLmNwcAkobm9uZXhpc3RlbnQp
CkBAIC0xLDEyNSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTUgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBsb2FkaW1hZ2VTU0Uy
LmNwcDogRGVmaW5lcyBpbWFnZSBsb2FkaW5nIGZ1bmN0aW9ucy4gSXQncwotLy8gaW4gYSBzZXBh
cmF0ZWQgZmlsZSBmb3IgR0NDLCB3aGljaCBjYW4gZW5hYmxlIFNTRSB1c2FnZSBvbmx5IHBlci1m
aWxlLAotLy8gbm90IGZvciBjb2RlIGJsb2NrcyB0aGF0IHVzZSBTU0UyIGV4cGxpY2l0bHkuCi0K
LSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvbG9hZGltYWdlLmgiCi0KLSNpbmNsdWRl
ICJjb21tb24vcGxhdGZvcm0uaCIKLQotI2lmZGVmIEFOR0xFX1VTRV9TU0UKLSNpbmNsdWRlIDxl
bW1pbnRyaW4uaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgcngKLXsKLQotdm9pZCBMb2FkQThUb0JH
UkE4X1NTRTIoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93
UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICB1
aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRo
UGl0Y2gpCi17Ci0jaWYgZGVmaW5lZChBTkdMRV9VU0VfU1NFKQotICAgIF9fbTEyOGkgemVyb1dp
ZGUgPSBfbW1fc2V0emVyb19zaTEyOCgpOwotCi0gICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBk
ZXB0aDsgeisrKQotICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7
IHkrKykKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgdWludDhfdCAqc291cmNlID0gT2Zm
c2V0RGF0YVBvaW50ZXI8dWludDhfdD4oaW5wdXQsIHksIHosIGlucHV0Um93UGl0Y2gsIGlucHV0
RGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICB1aW50MzJfdCAqZGVzdCA9IE9mZnNldERhdGFQb2lu
dGVyPHVpbnQzMl90PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBp
dGNoKTsKLQotICAgICAgICAgICAgc2l6ZV90IHggPSAwOwotCi0gICAgICAgICAgICAvLyBNYWtl
IG91dHB1dCB3cml0ZXMgYWxpZ25lZAotICAgICAgICAgICAgZm9yICg7ICgocmVpbnRlcnByZXRf
Y2FzdDxpbnRwdHJfdD4oJmRlc3RbeF0pICYgMHhGKSAhPSAwICYmIHggPCB3aWR0aCk7IHgrKykK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBkZXN0W3hdID0gc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KHNvdXJjZVt4XSkgPDwgMjQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZv
ciAoOyB4ICsgNyA8IHdpZHRoOyB4ICs9IDgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgX19tMTI4aSBzb3VyY2VEYXRhID0gX21tX2xvYWRsX2VwaTY0KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgX19tMTI4aSo+KCZzb3VyY2VbeF0pKTsKLSAgICAgICAgICAgICAgICAvLyBJbnRlcmxl
YXZlIGVhY2ggYnl0ZSB0byAxNmJpdCwgbWFrZSB0aGUgbG93ZXIgYnl0ZSB0byB6ZXJvCi0gICAg
ICAgICAgICAgICAgc291cmNlRGF0YSA9IF9tbV91bnBhY2tsb19lcGk4KHplcm9XaWRlLCBzb3Vy
Y2VEYXRhKTsKLSAgICAgICAgICAgICAgICAvLyBJbnRlcmxlYXZlIGVhY2ggMTZiaXQgdG8gMzJi
aXQsIG1ha2UgdGhlIGxvd2VyIDE2Yml0IHRvIHplcm8KLSAgICAgICAgICAgICAgICBfX20xMjhp
IGxvID0gX21tX3VucGFja2xvX2VwaTE2KHplcm9XaWRlLCBzb3VyY2VEYXRhKTsKLSAgICAgICAg
ICAgICAgICBfX20xMjhpIGhpID0gX21tX3VucGFja2hpX2VwaTE2KHplcm9XaWRlLCBzb3VyY2VE
YXRhKTsKLQotICAgICAgICAgICAgICAgIF9tbV9zdG9yZV9zaTEyOChyZWludGVycHJldF9jYXN0
PF9fbTEyOGkqPigmZGVzdFt4XSksIGxvKTsKLSAgICAgICAgICAgICAgICBfbW1fc3RvcmVfc2kx
MjgocmVpbnRlcnByZXRfY2FzdDxfX20xMjhpKj4oJmRlc3RbeCArIDRdKSwgaGkpOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAvLyBIYW5kbGUgdGhlIHJlbWFpbmRlcgotICAgICAgICAg
ICAgZm9yICg7IHggPCB3aWR0aDsgeCsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGRlc3RbeF0gPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc291cmNlW3hdKSA8PCAyNDsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSNlbHNlCi0gICAgLy8gRW5zdXJlIHRoYXQgdGhp
cyBmdW5jdGlvbiBpcyByZXBvcnRlZCBhcyBub3QgaW1wbGVtZW50ZWQgZm9yIEFSTSBidWlsZHMg
YmVjYXVzZQotICAgIC8vIHRoZSBpbnN0cnVjdGlvbnMgYmVsb3cgYXJlIG5vdCBwcmVzZW50IGZv
ciB0aGF0IGFyY2hpdGVjdHVyZS4KLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuOwot
I2VuZGlmCi19Ci0KLXZvaWQgTG9hZFJHQkE4VG9CR1JBOF9TU0UyKHNpemVfdCB3aWR0aCwgc2l6
ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0
aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXpl
X3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQotewotI2lmIGRlZmlu
ZWQoQU5HTEVfVVNFX1NTRSkKLSAgICBfX20xMjhpIGJyTWFzayA9IF9tbV9zZXQxX2VwaTMyKDB4
MDBmZjAwZmYpOwotCi0gICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQotICAg
IHsKLSAgICAgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKLSAgICAgICAg
ewotICAgICAgICAgICAgY29uc3QgdWludDMyX3QgKnNvdXJjZSA9IE9mZnNldERhdGFQb2ludGVy
PHVpbnQzMl90PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsK
LSAgICAgICAgICAgIHVpbnQzMl90ICpkZXN0ID0gT2Zmc2V0RGF0YVBvaW50ZXI8dWludDMyX3Q+
KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOwotCi0gICAg
ICAgICAgICBzaXplX3QgeCA9IDA7Ci0KLSAgICAgICAgICAgIC8vIE1ha2Ugb3V0cHV0IHdyaXRl
cyBhbGlnbmVkCi0gICAgICAgICAgICBmb3IgKDsgKChyZWludGVycHJldF9jYXN0PGludHB0cl90
PigmZGVzdFt4XSkgJiAxNSkgIT0gMCkgJiYgeCA8IHdpZHRoOyB4KyspCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgdWludDMyX3QgcmdiYSA9IHNvdXJjZVt4XTsKLSAgICAgICAgICAg
ICAgICBkZXN0W3hdID0gKEFOR0xFX1JPVEwocmdiYSwgMTYpICYgMHgwMGZmMDBmZikgfCAocmdi
YSAmIDB4ZmYwMGZmMDApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmb3IgKDsgeCAr
IDMgPCB3aWR0aDsgeCArPSA0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIF9fbTEy
OGkgc291cmNlRGF0YSA9IF9tbV9sb2FkdV9zaTEyOChyZWludGVycHJldF9jYXN0PGNvbnN0IF9f
bTEyOGkqPigmc291cmNlW3hdKSk7Ci0gICAgICAgICAgICAgICAgLy8gTWFzayBvdXQgZyBhbmQg
YSwgd2hpY2ggZG9uJ3QgY2hhbmdlCi0gICAgICAgICAgICAgICAgX19tMTI4aSBnYUNvbXBvbmVu
dHMgPSBfbW1fYW5kbm90X3NpMTI4KGJyTWFzaywgc291cmNlRGF0YSk7Ci0gICAgICAgICAgICAg
ICAgLy8gTWFzayBvdXQgYiBhbmQgcgotICAgICAgICAgICAgICAgIF9fbTEyOGkgYnJDb21wb25l
bnRzID0gX21tX2FuZF9zaTEyOChzb3VyY2VEYXRhLCBick1hc2spOwotICAgICAgICAgICAgICAg
IC8vIFN3YXAgYiBhbmQgcgotICAgICAgICAgICAgICAgIF9fbTEyOGkgYnJTd2FwcGVkID0gX21t
X3NodWZmbGVoaV9lcGkxNihfbW1fc2h1ZmZsZWxvX2VwaTE2KGJyQ29tcG9uZW50cywgX01NX1NI
VUZGTEUoMiwgMywgMCwgMSkpLCBfTU1fU0hVRkZMRSgyLCAzLCAwLCAxKSk7Ci0gICAgICAgICAg
ICAgICAgX19tMTI4aSByZXN1bHQgPSBfbW1fb3Jfc2kxMjgoZ2FDb21wb25lbnRzLCBiclN3YXBw
ZWQpOwotICAgICAgICAgICAgICAgIF9tbV9zdG9yZV9zaTEyOChyZWludGVycHJldF9jYXN0PF9f
bTEyOGkqPigmZGVzdFt4XSksIHJlc3VsdCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IC8vIFBlcmZvcm0gbGVmdG92ZXIgd3JpdGVzCi0gICAgICAgICAgICBmb3IgKDsgeCA8IHdpZHRo
OyB4KyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdWludDMyX3QgcmdiYSA9IHNv
dXJjZVt4XTsKLSAgICAgICAgICAgICAgICBkZXN0W3hdID0gKEFOR0xFX1JPVEwocmdiYSwgMTYp
ICYgMHgwMGZmMDBmZikgfCAocmdiYSAmIDB4ZmYwMGZmMDApOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgfQotI2Vsc2UKLSAgICAvLyBFbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlz
IHJlcG9ydGVkIGFzIG5vdCBpbXBsZW1lbnRlZCBmb3IgQVJNIGJ1aWxkcyBiZWNhdXNlCi0gICAg
Ly8gdGhlIGluc3RydWN0aW9ucyBiZWxvdyBhcmUgbm90IHByZXNlbnQgZm9yIHRoYXQgYXJjaGl0
ZWN0dXJlLgotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm47Ci0jZW5kaWYKLX0KLQot
fQotCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2xvYWRpbWFnZV9ldGMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvbG9hZGltYWdlX2V0Yy5jcHAJKHJldmlzaW9u
IDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvbG9hZGltYWdlX2V0Yy5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNTA0ICswLDAgQEAK
LS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTMtMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIGxvYWRpbWFnZV9ldGMuY3BwOiBEZWNvZGVzIEVUQyBh
bmQgRUFDIGVuY29kZWQgdGV4dHVyZXMuCi0KLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9k
M2QvbG9hZGltYWdlX2V0Yy5oIgotCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2xv
YWRpbWFnZS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9pbWFnZWZvcm1hdHMu
aCIKLQotbmFtZXNwYWNlIHJ4Ci17Ci1uYW1lc3BhY2UKLXsKLS8vIFRhYmxlIDMuMTcuMiBzb3J0
ZWQgYWNjb3JkaW5nIHRvIHRhYmxlIDMuMTcuMwotLy8gY2xhbmctZm9ybWF0IG9mZgotc3RhdGlj
IGNvbnN0IGludCBpbnRlbnNpdHlNb2RpZmllckRlZmF1bHRbXVs0XSA9Ci17Ci0gICAgeyAgMiwg
ICA4LCAgLTIsICAgLTggfSwKLSAgICB7ICA1LCAgMTcsICAtNSwgIC0xNyB9LAotICAgIHsgIDks
ICAyOSwgIC05LCAgLTI5IH0sCi0gICAgeyAxMywgIDQyLCAtMTMsICAtNDIgfSwKLSAgICB7IDE4
LCAgNjAsIC0xOCwgIC02MCB9LAotICAgIHsgMjQsICA4MCwgLTI0LCAgLTgwIH0sCi0gICAgeyAz
MywgMTA2LCAtMzMsIC0xMDYgfSwKLSAgICB7IDQ3LCAxODMsIC00NywgLTE4MyB9LAotfTsKLS8v
IGNsYW5nLWZvcm1hdCBvbgotCi0vLyBUYWJsZSBDLjEyLCBpbnRlbnNpdHkgbW9kaWZpZXIgZm9y
IG5vbiBvcGFxdWUgcHVuY2h0aHJvdWdoIGFscGhhCi0vLyBjbGFuZy1mb3JtYXQgb2ZmCi1zdGF0
aWMgY29uc3QgaW50IGludGVuc2l0eU1vZGlmaWVyTm9uT3BhcXVlW11bNF0gPQotewotICAgIHsg
MCwgICA4LCAwLCAgIC04IH0sCi0gICAgeyAwLCAgMTcsIDAsICAtMTcgfSwKLSAgICB7IDAsICAy
OSwgMCwgIC0yOSB9LAotICAgIHsgMCwgIDQyLCAwLCAgLTQyIH0sCi0gICAgeyAwLCAgNjAsIDAs
ICAtNjAgfSwKLSAgICB7IDAsICA4MCwgMCwgIC04MCB9LAotICAgIHsgMCwgMTA2LCAwLCAtMTA2
IH0sCi0gICAgeyAwLCAxODMsIDAsIC0xODMgfSwKLX07Ci0vLyBjbGFuZy1mb3JtYXQgb24KLQot
c3RydWN0IEVUQzJCbG9jawotewotICAgIC8vIERlY29kZXMgdW5zaWduZWQgc2luZ2xlIG9yIGR1
YWwgY2hhbm5lbCBibG9jayB0byBieXRlcwotICAgIHZvaWQgZGVjb2RlQXNTaW5nbGVDaGFubmVs
KHVpbnQ4X3QgKmRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IHcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlc3RQ
aXhlbFN0cmlkZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVzdFJv
d1BpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNTaWduZWQpIGNv
bnN0Ci0gICAgewotICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IDQgJiYgKHkgKyBqKSA8
IGg7IGorKykKLSAgICAgICAgewotICAgICAgICAgICAgdWludDhfdCAqcm93ID0gZGVzdCArIChq
ICogZGVzdFJvd1BpdGNoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNCAm
JiAoeCArIGkpIDwgdzsgaSsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHVpbnQ4
X3QgKnBpeGVsID0gcm93ICsgKGkgKiBkZXN0UGl4ZWxTdHJpZGUpOwotICAgICAgICAgICAgICAg
IGlmIChpc1NpZ25lZCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICpw
aXhlbCA9IGNsYW1wU0J5dGUoZ2V0U2luZ2xlQ2hhbm5lbChpLCBqLCBpc1NpZ25lZCkpOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICAqcGl4ZWwgPSBjbGFtcEJ5dGUoZ2V0U2luZ2xlQ2hhbm5lbChp
LCBqLCBpc1NpZ25lZCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLQotICAgIC8vIERlY29kZXMgUkdCIGJsb2NrIHRvIHJnYmE4Ci0gICAgdm9p
ZCBkZWNvZGVBc1JHQih1aW50OF90ICpkZXN0LAotICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IHgsCi0gICAgICAgICAgICAgICAgICAgICBzaXplX3QgeSwKLSAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCB3LAotICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGgsCi0gICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgZGVzdFJvd1BpdGNoLAotICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dWludDhfdCBhbHBoYVZhbHVlc1s0XVs0XSwKLSAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHVu
Y2hUaHJvdWdoQWxwaGEpIGNvbnN0Ci0gICAgewotICAgICAgICBib29sIG9wYXF1ZUJpdCAgICAg
ICAgICAgICAgICAgID0gdS5pZGh0Lm1vZGUuaWRtLmRpZmZiaXQ7Ci0gICAgICAgIGJvb2wgbm9u
T3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEgPSBwdW5jaFRocm91Z2hBbHBoYSAmJiAhb3BhcXVlQml0
OwotICAgICAgICAvLyBTZWxlY3QgbW9kZQotICAgICAgICBpZiAodS5pZGh0Lm1vZGUuaWRtLmRp
ZmZiaXQgfHwgcHVuY2hUaHJvdWdoQWxwaGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0
IGF1dG8gJmJsb2NrID0gdS5pZGh0Lm1vZGUuaWRtLmNvbG9ycy5kaWZmOwotICAgICAgICAgICAg
aW50IHIgICAgICAgICAgICAgPSAoYmxvY2suUiArIGJsb2NrLmRSKTsKLSAgICAgICAgICAgIGlu
dCBnICAgICAgICAgICAgID0gKGJsb2NrLkcgKyBibG9jay5kRyk7Ci0gICAgICAgICAgICBpbnQg
YiA9IChibG9jay5CICsgYmxvY2suZEIpOwotICAgICAgICAgICAgaWYgKHIgPCAwIHx8IHIgPiAz
MSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBkZWNvZGVUQmxvY2soZGVzdCwgeCwg
eSwgdywgaCwgZGVzdFJvd1BpdGNoLCBhbHBoYVZhbHVlcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZWxzZSBpZiAoZyA8IDAgfHwgZyA+IDMxKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGRlY29kZUhCbG9jayhkZXN0LCB4LCB5LCB3LCBoLCBkZXN0Um93UGl0Y2gsIGFs
cGhhVmFsdWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25PcGFxdWVQdW5jaFRo
cm91Z2hBbHBoYSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChiIDwgMCB8
fCBiID4gMzEpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZGVjb2RlUGxhbmFyQmxv
Y2soZGVzdCwgeCwgeSwgdywgaCwgZGVzdFJvd1BpdGNoLCBhbHBoYVZhbHVlcyk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ZGVjb2RlRGlmZmVyZW50aWFsQmxvY2soZGVzdCwgeCwgeSwgdywgaCwgZGVzdFJvd1BpdGNoLCBh
bHBoYVZhbHVlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25P
cGFxdWVQdW5jaFRocm91Z2hBbHBoYSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg
ICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBkZWNvZGVJbmRpdmlkdWFsQmxvY2soZGVz
dCwgeCwgeSwgdywgaCwgZGVzdFJvd1BpdGNoLCBhbHBoYVZhbHVlcywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSk7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICAvLyBUcmFuc2NvZGVzIFJHQiBibG9jayB0byBCQzEKLSAgICB2b2lk
IHRyYW5zY29kZUFzQkMxKHVpbnQ4X3QgKmRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgeCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB5LAotICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IHcsCi0gICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaCwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgYWxwaGFWYWx1ZXNbNF1bNF0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICBib29sIHB1bmNoVGhyb3VnaEFscGhhKSBjb25zdAot
ICAgIHsKLSAgICAgICAgYm9vbCBvcGFxdWVCaXQgICAgICAgICAgICAgICAgICA9IHUuaWRodC5t
b2RlLmlkbS5kaWZmYml0OwotICAgICAgICBib29sIG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhh
ID0gcHVuY2hUaHJvdWdoQWxwaGEgJiYgIW9wYXF1ZUJpdDsKLSAgICAgICAgLy8gU2VsZWN0IG1v
ZGUKLSAgICAgICAgaWYgKHUuaWRodC5tb2RlLmlkbS5kaWZmYml0IHx8IHB1bmNoVGhyb3VnaEFs
cGhhKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBhdXRvICZibG9jayA9IHUuaWRodC5t
b2RlLmlkbS5jb2xvcnMuZGlmZjsKLSAgICAgICAgICAgIGludCByICAgICAgICAgICAgID0gKGJs
b2NrLlIgKyBibG9jay5kUik7Ci0gICAgICAgICAgICBpbnQgZyAgICAgICAgICAgICA9IChibG9j
ay5HICsgYmxvY2suZEcpOwotICAgICAgICAgICAgaW50IGIgPSAoYmxvY2suQiArIGJsb2NrLmRC
KTsKLSAgICAgICAgICAgIGlmIChyIDwgMCB8fCByID4gMzEpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgdHJhbnNjb2RlVEJsb2NrVG9CQzEoZGVzdCwgeCwgeSwgdywgaCwgYWxwaGFW
YWx1ZXMsIG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhhKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGVsc2UgaWYgKGcgPCAwIHx8IGcgPiAzMSkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICB0cmFuc2NvZGVIQmxvY2tUb0JDMShkZXN0LCB4LCB5LCB3LCBoLCBhbHBoYVZhbHVl
cywgbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgZWxzZSBpZiAoYiA8IDAgfHwgYiA+IDMxKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIHRyYW5zY29kZVBsYW5hckJsb2NrVG9CQzEoZGVzdCwgeCwgeSwgdywgaCwgYWxwaGFWYWx1
ZXMpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIHRyYW5zY29kZURpZmZlcmVudGlhbEJsb2NrVG9CQzEoZGVzdCwgeCwgeSwg
dywgaCwgYWxwaGFWYWx1ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICB0cmFuc2NvZGVJ
bmRpdmlkdWFsQmxvY2tUb0JDMShkZXN0LCB4LCB5LCB3LCBoLCBhbHBoYVZhbHVlcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbk9wYXF1ZVB1bmNoVGhyb3Vn
aEFscGhhKTsKLSAgICAgICAgfQotICAgIH0KLQotICBwcml2YXRlOgotICAgIHVuaW9uCi0gICAg
ewotICAgICAgICAvLyBJbmRpdmlkdWFsLCBkaWZmZXJlbnRpYWwsIEggYW5kIFQgbW9kZXMKLSAg
ICAgICAgc3RydWN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHVuaW9uCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgLy8gSW5kaXZpZHVhbCBhbmQgZGlmZmVyZW50aWFsIG1vZGVzCi0g
ICAgICAgICAgICAgICAgc3RydWN0Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICB1bmlvbgotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3QgIC8vIEluZGl2aWR1YWwgY29sb3JzCi0gICAgICAgICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBSMiA6IDQ7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBSMSA6IDQ7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBHMiA6IDQ7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciBHMSA6IDQ7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgY2hhciBCMiA6IDQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgY2hhciBCMSA6IDQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGluZGl2Owot
ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0ICAvLyBEaWZmZXJlbnRpYWwgY29sb3JzCi0g
ICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ln
bmVkIGNoYXIgZFIgOiAzOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNo
YXIgUiA6IDU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmVkIGNoYXIgZEcgOiAz
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgRyA6IDU7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmVkIGNoYXIgZEIgOiAzOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgQiA6IDU7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9IGRpZmY7Ci0gICAgICAgICAgICAgICAgICAgIH0gY29sb3JzOwotICAgICAgICAgICAg
ICAgICAgICBib29sIGZsaXBiaXQgOiAxOwotICAgICAgICAgICAgICAgICAgICBib29sIGRpZmZi
aXQgOiAxOwotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGN3MiA6IDM7Ci0gICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY3cxIDogMzsKLSAgICAgICAgICAgICAgICB9
IGlkbTsKLSAgICAgICAgICAgICAgICAvLyBUIG1vZGUKLSAgICAgICAgICAgICAgICBzdHJ1Y3QK
LSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEJ5dGUgMQotICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIFRSMWIgOiAyOwotICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyIFRkdW1teUIgOiAxOwotICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBjaGFyIFRSMWEgOiAyOwotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIFRkdW1t
eUEgOiAzOwotICAgICAgICAgICAgICAgICAgICAvLyBCeXRlIDIKLSAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgY2hhciBUQjEgOiA0OwotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBj
aGFyIFRHMSA6IDQ7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEJ5dGUgMwotICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBjaGFyIFRHMiA6IDQ7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGNoYXIgVFIyIDogNDsKLSAgICAgICAgICAgICAgICAgICAgLy8gQnl0ZSA0Ci0gICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgVGRiIDogMTsKLSAgICAgICAgICAgICAgICAgICAg
Ym9vbCBUZmxpcGJpdCA6IDE7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgVGRh
IDogMjsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBUQjIgOiA0OwotICAgICAg
ICAgICAgICAgIH0gdG07Ci0gICAgICAgICAgICAgICAgLy8gSCBtb2RlCi0gICAgICAgICAgICAg
ICAgc3RydWN0Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAvLyBCeXRl
IDEKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBIRzFhIDogMzsKLSAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciBIUjEgOiA0OwotICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBjaGFyIEhkdW1teUEgOiAxOwotICAgICAgICAgICAgICAgICAgICAvLyBCeXRlIDIK
LSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBIQjFiIDogMjsKLSAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgY2hhciBIZHVtbXlDIDogMTsKLSAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgY2hhciBIQjFhIDogMTsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciBIRzFiIDogMTsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBIZHVtbXlCIDog
MzsKLSAgICAgICAgICAgICAgICAgICAgLy8gQnl0ZSAzCi0gICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGNoYXIgSEcyYSA6IDM7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIg
SFIyIDogNDsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBIQjFjIDogMTsKLSAg
ICAgICAgICAgICAgICAgICAgLy8gQnl0ZSA0Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGNoYXIgSGRiIDogMTsKLSAgICAgICAgICAgICAgICAgICAgYm9vbCBIZmxpcGJpdCA6IDE7Ci0g
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgSGRhIDogMTsKLSAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgY2hhciBIQjIgOiA0OwotICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBjaGFyIEhHMmIgOiAxOwotICAgICAgICAgICAgICAgIH0gaG07Ci0gICAgICAgICAgICB9IG1v
ZGU7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHBpeGVsSW5kZXhNU0JbMl07Ci0gICAgICAg
ICAgICB1bnNpZ25lZCBjaGFyIHBpeGVsSW5kZXhMU0JbMl07Ci0gICAgICAgIH0gaWRodDsKLSAg
ICAgICAgLy8gcGxhbmFyIG1vZGUKLSAgICAgICAgc3RydWN0Ci0gICAgICAgIHsKLSAgICAgICAg
ICAgIC8vIEJ5dGUgMQotICAgICAgICAgICAgdW5zaWduZWQgY2hhciBHTzEgOiAxOwotICAgICAg
ICAgICAgdW5zaWduZWQgY2hhciBSTyA6IDY7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyIFBk
dW1teUEgOiAxOwotICAgICAgICAgICAgLy8gQnl0ZSAyCi0gICAgICAgICAgICB1bnNpZ25lZCBj
aGFyIEJPMSA6IDE7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEdPMiA6IDY7Ci0gICAgICAg
ICAgICB1bnNpZ25lZCBjaGFyIFBkdW1teUIgOiAxOwotICAgICAgICAgICAgLy8gQnl0ZSAzCi0g
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEJPM2EgOiAyOwotICAgICAgICAgICAgdW5zaWduZWQg
Y2hhciBQZHVtbXlEIDogMTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgQk8yIDogMjsKLSAg
ICAgICAgICAgIHVuc2lnbmVkIGNoYXIgUGR1bW15QyA6IDM7Ci0gICAgICAgICAgICAvLyBCeXRl
IDQKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgUkgyIDogMTsKLSAgICAgICAgICAgIGJvb2wg
UGZsaXBiaXQgOiAxOwotICAgICAgICAgICAgdW5zaWduZWQgY2hhciBSSDEgOiA1OwotICAgICAg
ICAgICAgdW5zaWduZWQgY2hhciBCTzNiIDogMTsKLSAgICAgICAgICAgIC8vIEJ5dGUgNQotICAg
ICAgICAgICAgdW5zaWduZWQgY2hhciBCSGEgOiAxOwotICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciBHSCA6IDc7Ci0gICAgICAgICAgICAvLyBCeXRlIDYKLSAgICAgICAgICAgIHVuc2lnbmVkIGNo
YXIgUlZhIDogMzsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgQkhiIDogNTsKLSAgICAgICAg
ICAgIC8vIEJ5dGUgNwotICAgICAgICAgICAgdW5zaWduZWQgY2hhciBHVmEgOiA1OwotICAgICAg
ICAgICAgdW5zaWduZWQgY2hhciBSVmIgOiAzOwotICAgICAgICAgICAgLy8gQnl0ZSA4Ci0gICAg
ICAgICAgICB1bnNpZ25lZCBjaGFyIEJWIDogNjsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIg
R1ZiIDogMjsKLSAgICAgICAgfSBwYmxrOwotICAgICAgICAvLyBTaW5nbGUgY2hhbm5lbCBibG9j
awotICAgICAgICBzdHJ1Y3QKLSAgICAgICAgewotICAgICAgICAgICAgdW5pb24KLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHVzOwotICAgICAgICAgICAgICAg
IHNpZ25lZCBjaGFyIHM7Ci0gICAgICAgICAgICB9IGJhc2VfY29kZXdvcmQ7Ci0gICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyIHRhYmxlX2luZGV4IDogNDsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNo
YXIgbXVsdGlwbGllciA6IDQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG1jMSA6IDI7Ci0g
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG1iIDogMzsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNo
YXIgbWEgOiAzOwotICAgICAgICAgICAgdW5zaWduZWQgY2hhciBtZjEgOiAxOwotICAgICAgICAg
ICAgdW5zaWduZWQgY2hhciBtZSA6IDM7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG1kIDog
MzsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbWMyIDogMTsKLSAgICAgICAgICAgIHVuc2ln
bmVkIGNoYXIgbWggOiAzOwotICAgICAgICAgICAgdW5zaWduZWQgY2hhciBtZyA6IDM7Ci0gICAg
ICAgICAgICB1bnNpZ25lZCBjaGFyIG1mMiA6IDI7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFy
IG1rMSA6IDI7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG1qIDogMzsKLSAgICAgICAgICAg
IHVuc2lnbmVkIGNoYXIgbWkgOiAzOwotICAgICAgICAgICAgdW5zaWduZWQgY2hhciBtbjEgOiAx
OwotICAgICAgICAgICAgdW5zaWduZWQgY2hhciBtbSA6IDM7Ci0gICAgICAgICAgICB1bnNpZ25l
ZCBjaGFyIG1sIDogMzsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbWsyIDogMTsKLSAgICAg
ICAgICAgIHVuc2lnbmVkIGNoYXIgbXAgOiAzOwotICAgICAgICAgICAgdW5zaWduZWQgY2hhciBt
byA6IDM7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG1uMiA6IDI7Ci0gICAgICAgIH0gc2Ni
bGs7Ci0gICAgfSB1OwotCi0gICAgc3RhdGljIHVuc2lnbmVkIGNoYXIgY2xhbXBCeXRlKGludCB2
YWx1ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihn
bDo6Y2xhbXAodmFsdWUsIDAsIDI1NSkpOwotICAgIH0KLQotICAgIHN0YXRpYyBzaWduZWQgY2hh
ciBjbGFtcFNCeXRlKGludCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxzaWduZWQgY2hhcj4oZ2w6OmNsYW1wKHZhbHVlLCAtMTI4LCAxMjcpKTsKLSAgICB9Ci0KLSAg
ICBzdGF0aWMgUjhHOEI4QTggY3JlYXRlUkdCQShpbnQgcmVkLCBpbnQgZ3JlZW4sIGludCBibHVl
LCBpbnQgYWxwaGEpCi0gICAgewotICAgICAgICBSOEc4QjhBOCByZ2JhOwotICAgICAgICByZ2Jh
LlIgPSBjbGFtcEJ5dGUocmVkKTsKLSAgICAgICAgcmdiYS5HID0gY2xhbXBCeXRlKGdyZWVuKTsK
LSAgICAgICAgcmdiYS5CID0gY2xhbXBCeXRlKGJsdWUpOwotICAgICAgICByZ2JhLkEgPSBjbGFt
cEJ5dGUoYWxwaGEpOwotICAgICAgICByZXR1cm4gcmdiYTsKLSAgICB9Ci0KLSAgICBzdGF0aWMg
UjhHOEI4QTggY3JlYXRlUkdCQShpbnQgcmVkLCBpbnQgZ3JlZW4sIGludCBibHVlKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGNyZWF0ZVJHQkEocmVkLCBncmVlbiwgYmx1ZSwgMjU1KTsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgaW50IGV4dGVuZF80dG84Yml0cyhpbnQgeCkgeyByZXR1cm4gKHggPDwg
NCkgfCB4OyB9Ci0gICAgc3RhdGljIGludCBleHRlbmRfNXRvOGJpdHMoaW50IHgpIHsgcmV0dXJu
ICh4IDw8IDMpIHwgKHggPj4gMik7IH0KLSAgICBzdGF0aWMgaW50IGV4dGVuZF82dG84Yml0cyhp
bnQgeCkgeyByZXR1cm4gKHggPDwgMikgfCAoeCA+PiA0KTsgfQotICAgIHN0YXRpYyBpbnQgZXh0
ZW5kXzd0bzhiaXRzKGludCB4KSB7IHJldHVybiAoeCA8PCAxKSB8ICh4ID4+IDYpOyB9Ci0KLSAg
ICB2b2lkIGRlY29kZUluZGl2aWR1YWxCbG9jayh1aW50OF90ICpkZXN0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCB4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCB5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB3LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBkZXN0Um93UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgdWludDhfdCBhbHBoYVZhbHVlc1s0XVs0XSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhhKSBjb25z
dAotICAgIHsKLSAgICAgICAgY29uc3QgYXV0byAmYmxvY2sgPSB1LmlkaHQubW9kZS5pZG0uY29s
b3JzLmluZGl2OwotICAgICAgICBpbnQgcjEgICAgICAgICAgICA9IGV4dGVuZF80dG84Yml0cyhi
bG9jay5SMSk7Ci0gICAgICAgIGludCBnMSAgICAgICAgICAgID0gZXh0ZW5kXzR0bzhiaXRzKGJs
b2NrLkcxKTsKLSAgICAgICAgaW50IGIxICAgICAgICAgICAgPSBleHRlbmRfNHRvOGJpdHMoYmxv
Y2suQjEpOwotICAgICAgICBpbnQgcjIgICAgICAgICAgICA9IGV4dGVuZF80dG84Yml0cyhibG9j
ay5SMik7Ci0gICAgICAgIGludCBnMiAgICAgICAgICAgID0gZXh0ZW5kXzR0bzhiaXRzKGJsb2Nr
LkcyKTsKLSAgICAgICAgaW50IGIyID0gZXh0ZW5kXzR0bzhiaXRzKGJsb2NrLkIyKTsKLSAgICAg
ICAgZGVjb2RlSW5kaXZpZHVhbE9yRGlmZmVyZW50aWFsQmxvY2soZGVzdCwgeCwgeSwgdywgaCwg
ZGVzdFJvd1BpdGNoLCByMSwgZzEsIGIxLCByMiwgZzIsIGIyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYVZhbHVlcywgbm9uT3BhcXVlUHVuY2hUaHJv
dWdoQWxwaGEpOwotICAgIH0KLQotICAgIHZvaWQgZGVjb2RlRGlmZmVyZW50aWFsQmxvY2sodWlu
dDhfdCAqZGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGRlc3RSb3dQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVp
bnQ4X3QgYWxwaGFWYWx1ZXNbNF1bNF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhhKSBjb25zdAotICAgIHsKLSAgICAgICAg
Y29uc3QgYXV0byAmYmxvY2sgPSB1LmlkaHQubW9kZS5pZG0uY29sb3JzLmRpZmY7Ci0gICAgICAg
IGludCBiMSAgICAgICAgICAgID0gZXh0ZW5kXzV0bzhiaXRzKGJsb2NrLkIpOwotICAgICAgICBp
bnQgZzEgICAgICAgICAgICA9IGV4dGVuZF81dG84Yml0cyhibG9jay5HKTsKLSAgICAgICAgaW50
IHIxICAgICAgICAgICAgPSBleHRlbmRfNXRvOGJpdHMoYmxvY2suUik7Ci0gICAgICAgIGludCBy
MiAgICAgICAgICAgID0gZXh0ZW5kXzV0bzhiaXRzKGJsb2NrLlIgKyBibG9jay5kUik7Ci0gICAg
ICAgIGludCBnMiAgICAgICAgICAgID0gZXh0ZW5kXzV0bzhiaXRzKGJsb2NrLkcgKyBibG9jay5k
Ryk7Ci0gICAgICAgIGludCBiMiA9IGV4dGVuZF81dG84Yml0cyhibG9jay5CICsgYmxvY2suZEIp
OwotICAgICAgICBkZWNvZGVJbmRpdmlkdWFsT3JEaWZmZXJlbnRpYWxCbG9jayhkZXN0LCB4LCB5
LCB3LCBoLCBkZXN0Um93UGl0Y2gsIHIxLCBnMSwgYjEsIHIyLCBnMiwgYjIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhVmFsdWVzLCBub25PcGFxdWVQ
dW5jaFRocm91Z2hBbHBoYSk7Ci0gICAgfQotCi0gICAgdm9pZCBkZWNvZGVJbmRpdmlkdWFsT3JE
aWZmZXJlbnRpYWxCbG9jayh1aW50OF90ICpkZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCB3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgZGVzdFJvd1BpdGNoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHIxLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGcxLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGIxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHIyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGcyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGIyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdWludDhfdCBhbHBoYVZhbHVlc1s0XVs0XSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbm9uT3BhcXVlUHVuY2hUaHJvdWdo
QWxwaGEpIGNvbnN0Ci0gICAgewotICAgICAgICBjb25zdCBhdXRvIGludGVuc2l0eU1vZGlmaWVy
ID0KLSAgICAgICAgICAgIG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhhID8gaW50ZW5zaXR5TW9k
aWZpZXJOb25PcGFxdWUgOiBpbnRlbnNpdHlNb2RpZmllckRlZmF1bHQ7Ci0KLSAgICAgICAgUjhH
OEI4QTggc3ViYmxvY2tDb2xvcnMwWzRdOwotICAgICAgICBSOEc4QjhBOCBzdWJibG9ja0NvbG9y
czFbNF07Ci0gICAgICAgIGZvciAoc2l6ZV90IG1vZGlmaWVySWR4ID0gMDsgbW9kaWZpZXJJZHgg
PCA0OyBtb2RpZmllcklkeCsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBpbnQgaTEg
ICAgICAgICAgICAgICAgID0gaW50ZW5zaXR5TW9kaWZpZXJbdS5pZGh0Lm1vZGUuaWRtLmN3MV1b
bW9kaWZpZXJJZHhdOwotICAgICAgICAgICAgc3ViYmxvY2tDb2xvcnMwW21vZGlmaWVySWR4XSA9
IGNyZWF0ZVJHQkEocjEgKyBpMSwgZzEgKyBpMSwgYjEgKyBpMSk7Ci0KLSAgICAgICAgICAgIGNv
bnN0IGludCBpMiAgICAgICAgICAgICAgICAgPSBpbnRlbnNpdHlNb2RpZmllclt1LmlkaHQubW9k
ZS5pZG0uY3cyXVttb2RpZmllcklkeF07Ci0gICAgICAgICAgICBzdWJibG9ja0NvbG9yczFbbW9k
aWZpZXJJZHhdID0gY3JlYXRlUkdCQShyMiArIGkyLCBnMiArIGkyLCBiMiArIGkyKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmICh1LmlkaHQubW9kZS5pZG0uZmxpcGJpdCkKLSAgICAgICAgewot
ICAgICAgICAgICAgdWludDhfdCAqY3VyUGl4ZWwgPSBkZXN0OwotICAgICAgICAgICAgZm9yIChz
aXplX3QgaiA9IDA7IGogPCAyICYmICh5ICsgaikgPCBoOyBqKyspCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgUjhHOEI4QTggKnJvdyA9IHJlaW50ZXJwcmV0X2Nhc3Q8UjhHOEI4QTgg
Kj4oY3VyUGl4ZWwpOwotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNCAm
JiAoeCArIGkpIDwgdzsgaSsrKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgcm93W2ldICAgPSBzdWJibG9ja0NvbG9yczBbZ2V0SW5kZXgoaSwgaildOwotICAgICAgICAg
ICAgICAgICAgICByb3dbaV0uQSA9IGFscGhhVmFsdWVzW2pdW2ldOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBjdXJQaXhlbCArPSBkZXN0Um93UGl0Y2g7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMjsgaiA8IDQgJiYgKHkgKyBqKSA8IGg7
IGorKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBSOEc4QjhBOCAqcm93ID0gcmVp
bnRlcnByZXRfY2FzdDxSOEc4QjhBOCAqPihjdXJQaXhlbCk7Ci0gICAgICAgICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCA0ICYmICh4ICsgaSkgPCB3OyBpKyspCi0gICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICByb3dbaV0gICA9IHN1YmJsb2NrQ29sb3JzMVtnZXRJ
bmRleChpLCBqKV07Ci0gICAgICAgICAgICAgICAgICAgIHJvd1tpXS5BID0gYWxwaGFWYWx1ZXNb
al1baV07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGN1clBpeGVsICs9IGRl
c3RSb3dQaXRjaDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHVpbnQ4X3QgKmN1clBpeGVsID0gZGVzdDsKLSAgICAgICAgICAg
IGZvciAoc2l6ZV90IGogPSAwOyBqIDwgNCAmJiAoeSArIGopIDwgaDsgaisrKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIFI4RzhCOEE4ICpyb3cgPSByZWludGVycHJldF9jYXN0PFI4
RzhCOEE4ICo+KGN1clBpeGVsKTsKLSAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IDIgJiYgKHggKyBpKSA8IHc7IGkrKykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgIHJvd1tpXSAgID0gc3ViYmxvY2tDb2xvcnMwW2dldEluZGV4KGksIGopXTsKLSAg
ICAgICAgICAgICAgICAgICAgcm93W2ldLkEgPSBhbHBoYVZhbHVlc1tqXVtpXTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDI7IGkgPCA0ICYmICh4
ICsgaSkgPCB3OyBpKyspCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBy
b3dbaV0gICA9IHN1YmJsb2NrQ29sb3JzMVtnZXRJbmRleChpLCBqKV07Ci0gICAgICAgICAgICAg
ICAgICAgIHJvd1tpXS5BID0gYWxwaGFWYWx1ZXNbal1baV07Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGN1clBpeGVsICs9IGRlc3RSb3dQaXRjaDsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgICBpZiAobm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGRlY29kZVB1bmNoVGhyb3VnaEFscGhhQmxvY2soZGVzdCwgeCwg
eSwgdywgaCwgZGVzdFJvd1BpdGNoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgZGVj
b2RlVEJsb2NrKHVpbnQ4X3QgKmRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHgs
Ci0gICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHksCi0gICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IHcsCi0gICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGRlc3RSb3dQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB1aW50OF90IGFscGhhVmFsdWVzWzRdWzRdLAotICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
bm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpIGNvbnN0Ci0gICAgewotICAgICAgICAvLyBUYWJs
ZSBDLjgsIGRpc3RhbmNlIGluZGV4IGZvciBUIGFuZCBIIG1vZGVzCi0gICAgICAgIGNvbnN0IGF1
dG8gJmJsb2NrID0gdS5pZGh0Lm1vZGUudG07Ci0KLSAgICAgICAgaW50IHIxID0gZXh0ZW5kXzR0
bzhiaXRzKGJsb2NrLlRSMWEgPDwgMiB8IGJsb2NrLlRSMWIpOwotICAgICAgICBpbnQgZzEgPSBl
eHRlbmRfNHRvOGJpdHMoYmxvY2suVEcxKTsKLSAgICAgICAgaW50IGIxID0gZXh0ZW5kXzR0bzhi
aXRzKGJsb2NrLlRCMSk7Ci0gICAgICAgIGludCByMiA9IGV4dGVuZF80dG84Yml0cyhibG9jay5U
UjIpOwotICAgICAgICBpbnQgZzIgPSBleHRlbmRfNHRvOGJpdHMoYmxvY2suVEcyKTsKLSAgICAg
ICAgaW50IGIyID0gZXh0ZW5kXzR0bzhiaXRzKGJsb2NrLlRCMik7Ci0KLSAgICAgICAgc3RhdGlj
IGludCBkaXN0YW5jZVs4XSA9IHszLCA2LCAxMSwgMTYsIDIzLCAzMiwgNDEsIDY0fTsKLSAgICAg
ICAgY29uc3QgaW50IGQgICAgICAgICAgICA9IGRpc3RhbmNlW2Jsb2NrLlRkYSA8PCAxIHwgYmxv
Y2suVGRiXTsKLQotICAgICAgICBjb25zdCBSOEc4QjhBOCBwYWludENvbG9yc1s0XSA9IHsKLSAg
ICAgICAgICAgIGNyZWF0ZVJHQkEocjEsIGcxLCBiMSksIGNyZWF0ZVJHQkEocjIgKyBkLCBnMiAr
IGQsIGIyICsgZCksIGNyZWF0ZVJHQkEocjIsIGcyLCBiMiksCi0gICAgICAgICAgICBjcmVhdGVS
R0JBKHIyIC0gZCwgZzIgLSBkLCBiMiAtIGQpLAotICAgICAgICB9OwotCi0gICAgICAgIHVpbnQ4
X3QgKmN1clBpeGVsID0gZGVzdDsKLSAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCA0ICYm
ICh5ICsgaikgPCBoOyBqKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIFI4RzhCOEE4ICpyb3cg
PSByZWludGVycHJldF9jYXN0PFI4RzhCOEE4ICo+KGN1clBpeGVsKTsKLSAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgNCAmJiAoeCArIGkpIDwgdzsgaSsrKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIHJvd1tpXSAgID0gcGFpbnRDb2xvcnNbZ2V0SW5kZXgoaSwgaild
OwotICAgICAgICAgICAgICAgIHJvd1tpXS5BID0gYWxwaGFWYWx1ZXNbal1baV07Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBjdXJQaXhlbCArPSBkZXN0Um93UGl0Y2g7Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAobm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGRlY29kZVB1bmNoVGhyb3VnaEFscGhhQmxvY2soZGVzdCwgeCwgeSwgdywgaCwg
ZGVzdFJvd1BpdGNoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgZGVjb2RlSEJsb2Nr
KHVpbnQ4X3QgKmRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHgsCi0gICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IHksCi0gICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHcs
Ci0gICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGgsCi0gICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGRlc3RSb3dQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90
IGFscGhhVmFsdWVzWzRdWzRdLAotICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbm9uT3BhcXVl
UHVuY2hUaHJvdWdoQWxwaGEpIGNvbnN0Ci0gICAgewotICAgICAgICAvLyBUYWJsZSBDLjgsIGRp
c3RhbmNlIGluZGV4IGZvciBUIGFuZCBIIG1vZGVzCi0gICAgICAgIGNvbnN0IGF1dG8gJmJsb2Nr
ID0gdS5pZGh0Lm1vZGUuaG07Ci0KLSAgICAgICAgaW50IHIxID0gZXh0ZW5kXzR0bzhiaXRzKGJs
b2NrLkhSMSk7Ci0gICAgICAgIGludCBnMSA9IGV4dGVuZF80dG84Yml0cyhibG9jay5IRzFhIDw8
IDEgfCBibG9jay5IRzFiKTsKLSAgICAgICAgaW50IGIxID0gZXh0ZW5kXzR0bzhiaXRzKGJsb2Nr
LkhCMWEgPDwgMyB8IGJsb2NrLkhCMWIgPDwgMSB8IGJsb2NrLkhCMWMpOwotICAgICAgICBpbnQg
cjIgPSBleHRlbmRfNHRvOGJpdHMoYmxvY2suSFIyKTsKLSAgICAgICAgaW50IGcyID0gZXh0ZW5k
XzR0bzhiaXRzKGJsb2NrLkhHMmEgPDwgMSB8IGJsb2NrLkhHMmIpOwotICAgICAgICBpbnQgYjIg
PSBleHRlbmRfNHRvOGJpdHMoYmxvY2suSEIyKTsKLQotICAgICAgICBzdGF0aWMgY29uc3QgaW50
IGRpc3RhbmNlWzhdID0gezMsIDYsIDExLCAxNiwgMjMsIDMyLCA0MSwgNjR9OwotICAgICAgICBj
b25zdCBpbnQgZCA9IGRpc3RhbmNlWyhibG9jay5IZGEgPDwgMikgfCAoYmxvY2suSGRiIDw8IDEp
IHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHIxIDw8IDE2IHwgZzEgPDwgOCB8
IGIxKSA+PSAocjIgPDwgMTYgfCBnMiA8PCA4IHwgYjIpID8gMSA6IDApXTsKLQotICAgICAgICBj
b25zdCBSOEc4QjhBOCBwYWludENvbG9yc1s0XSA9IHsKLSAgICAgICAgICAgIGNyZWF0ZVJHQkEo
cjEgKyBkLCBnMSArIGQsIGIxICsgZCksIGNyZWF0ZVJHQkEocjEgLSBkLCBnMSAtIGQsIGIxIC0g
ZCksCi0gICAgICAgICAgICBjcmVhdGVSR0JBKHIyICsgZCwgZzIgKyBkLCBiMiArIGQpLCBjcmVh
dGVSR0JBKHIyIC0gZCwgZzIgLSBkLCBiMiAtIGQpLAotICAgICAgICB9OwotCi0gICAgICAgIHVp
bnQ4X3QgKmN1clBpeGVsID0gZGVzdDsKLSAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCA0
ICYmICh5ICsgaikgPCBoOyBqKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIFI4RzhCOEE4ICpy
b3cgPSByZWludGVycHJldF9jYXN0PFI4RzhCOEE4ICo+KGN1clBpeGVsKTsKLSAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNCAmJiAoeCArIGkpIDwgdzsgaSsrKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIHJvd1tpXSAgID0gcGFpbnRDb2xvcnNbZ2V0SW5kZXgoaSwg
aildOwotICAgICAgICAgICAgICAgIHJvd1tpXS5BID0gYWxwaGFWYWx1ZXNbal1baV07Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBjdXJQaXhlbCArPSBkZXN0Um93UGl0Y2g7Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAobm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGRlY29kZVB1bmNoVGhyb3VnaEFscGhhQmxvY2soZGVzdCwgeCwgeSwgdywg
aCwgZGVzdFJvd1BpdGNoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgZGVjb2RlUGxh
bmFyQmxvY2sodWludDhfdCAqZGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCB4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHBpdGNoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCBhbHBoYVZhbHVlc1s0XVs0XSkgY29uc3QK
LSAgICB7Ci0gICAgICAgIGludCBybyA9IGV4dGVuZF82dG84Yml0cyh1LnBibGsuUk8pOwotICAg
ICAgICBpbnQgZ28gPSBleHRlbmRfN3RvOGJpdHModS5wYmxrLkdPMSA8PCA2IHwgdS5wYmxrLkdP
Mik7Ci0gICAgICAgIGludCBibyA9Ci0gICAgICAgICAgICBleHRlbmRfNnRvOGJpdHModS5wYmxr
LkJPMSA8PCA1IHwgdS5wYmxrLkJPMiA8PCAzIHwgdS5wYmxrLkJPM2EgPDwgMSB8IHUucGJsay5C
TzNiKTsKLSAgICAgICAgaW50IHJoID0gZXh0ZW5kXzZ0bzhiaXRzKHUucGJsay5SSDEgPDwgMSB8
IHUucGJsay5SSDIpOwotICAgICAgICBpbnQgZ2ggPSBleHRlbmRfN3RvOGJpdHModS5wYmxrLkdI
KTsKLSAgICAgICAgaW50IGJoID0gZXh0ZW5kXzZ0bzhiaXRzKHUucGJsay5CSGEgPDwgNSB8IHUu
cGJsay5CSGIpOwotICAgICAgICBpbnQgcnYgPSBleHRlbmRfNnRvOGJpdHModS5wYmxrLlJWYSA8
PCAzIHwgdS5wYmxrLlJWYik7Ci0gICAgICAgIGludCBndiA9IGV4dGVuZF83dG84Yml0cyh1LnBi
bGsuR1ZhIDw8IDIgfCB1LnBibGsuR1ZiKTsKLSAgICAgICAgaW50IGJ2ID0gZXh0ZW5kXzZ0bzhi
aXRzKHUucGJsay5CVik7Ci0KLSAgICAgICAgdWludDhfdCAqY3VyUGl4ZWwgPSBkZXN0OwotICAg
ICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IDQgJiYgKHkgKyBqKSA8IGg7IGorKykKLSAgICAg
ICAgewotICAgICAgICAgICAgUjhHOEI4QTggKnJvdyA9IHJlaW50ZXJwcmV0X2Nhc3Q8UjhHOEI4
QTggKj4oY3VyUGl4ZWwpOwotCi0gICAgICAgICAgICBpbnQgcnkgPSBzdGF0aWNfY2FzdDxpbnQ+
KGopICogKHJ2IC0gcm8pICsgMjsKLSAgICAgICAgICAgIGludCBneSA9IHN0YXRpY19jYXN0PGlu
dD4oaikgKiAoZ3YgLSBnbykgKyAyOwotICAgICAgICAgICAgaW50IGJ5ID0gc3RhdGljX2Nhc3Q8
aW50PihqKSAqIChidiAtIGJvKSArIDI7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IDQgJiYgKHggKyBpKSA8IHc7IGkrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICByb3dbaV0gPSBjcmVhdGVSR0JBKCgoc3RhdGljX2Nhc3Q8aW50PihpKSAqIChyaCAtIHJvKSAr
IHJ5KSA+PiAyKSArIHJvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChz
dGF0aWNfY2FzdDxpbnQ+KGkpICogKGdoIC0gZ28pICsgZ3kpID4+IDIpICsgZ28sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHN0YXRpY19jYXN0PGludD4oaSkgKiAoYmgg
LSBibykgKyBieSkgPj4gMikgKyBibywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFscGhhVmFsdWVzW2pdW2ldKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGN1clBp
eGVsICs9IHBpdGNoOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gSW5kZXggZm9yIGluZGl2
aWR1YWwsIGRpZmZlcmVudGlhbCwgSCBhbmQgVCBtb2RlcwotICAgIHNpemVfdCBnZXRJbmRleChz
aXplX3QgeCwgc2l6ZV90IHkpIGNvbnN0Ci0gICAgewotICAgICAgICBzaXplX3QgYml0SW5kZXgg
ID0geCAqIDQgKyB5OwotICAgICAgICBzaXplX3QgYml0T2Zmc2V0ID0gYml0SW5kZXggJiA3Owot
ICAgICAgICBzaXplX3QgbHNiICAgICAgID0gKHUuaWRodC5waXhlbEluZGV4TFNCWzEgLSAoYml0
SW5kZXggPj4gMyldID4+IGJpdE9mZnNldCkgJiAxOwotICAgICAgICBzaXplX3QgbXNiID0gKHUu
aWRodC5waXhlbEluZGV4TVNCWzEgLSAoYml0SW5kZXggPj4gMyldID4+IGJpdE9mZnNldCkgJiAx
OwotICAgICAgICByZXR1cm4gKG1zYiA8PCAxKSB8IGxzYjsKLSAgICB9Ci0KLSAgICB2b2lkIGRl
Y29kZVB1bmNoVGhyb3VnaEFscGhhQmxvY2sodWludDhfdCAqZGVzdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCB5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBk
ZXN0Um93UGl0Y2gpIGNvbnN0Ci0gICAgewotICAgICAgICB1aW50OF90ICpjdXJQaXhlbCA9IGRl
c3Q7Ci0gICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgNCAmJiAoeSArIGopIDwgaDsgaisr
KQotICAgICAgICB7Ci0gICAgICAgICAgICBSOEc4QjhBOCAqcm93ID0gcmVpbnRlcnByZXRfY2Fz
dDxSOEc4QjhBOCAqPihjdXJQaXhlbCk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IDQgJiYgKHggKyBpKSA8IHc7IGkrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBpZiAoZ2V0SW5kZXgoaSwgaikgPT0gMikgIC8vICBtc2IgPT0gMSAmJiBsc2IgPT0gMAotICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcm93W2ldID0gY3JlYXRlUkdCQSgw
LCAwLCAwLCAwKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBjdXJQaXhlbCArPSBkZXN0Um93UGl0Y2g7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB1aW50
MTZfdCBSR0I4VG9SR0I1NjUoY29uc3QgUjhHOEI4QTggJnJnYmEpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gKHN0YXRpY19jYXN0PHVpbnQxNl90PihyZ2JhLlIgPj4gMykgPDwgMTEpIHwK
LSAgICAgICAgICAgICAgIChzdGF0aWNfY2FzdDx1aW50MTZfdD4ocmdiYS5HID4+IDIpIDw8IDUp
IHwKLSAgICAgICAgICAgICAgIChzdGF0aWNfY2FzdDx1aW50MTZfdD4ocmdiYS5CID4+IDMpIDw8
IDApOwotICAgIH0KLQotICAgIHVpbnQzMl90IG1hdGNoQkMxQml0cyhjb25zdCBSOEc4QjhBOCAq
cmdiYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUjhHOEI4QTggJm1pbkNvbG9y
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSOEc4QjhBOCAmbWF4Q29sb3IsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgb3BhcXVlKSBjb25zdAotICAgIHsKLSAgICAg
ICAgLy8gUHJvamVjdCBlYWNoIHBpeGVsIG9uIHRoZSAobWF4Q29sb3IsIG1pbkNvbG9yKSBsaW5l
IHRvIGRlY2lkZSB3aGljaAotICAgICAgICAvLyBCQzEgY29kZSB0byBhc3NpZ24gdG8gaXQuCi0K
LSAgICAgICAgdWludDhfdCBkZWNvZGVkQ29sb3JzWzJdWzNdID0ge3ttYXhDb2xvci5SLCBtYXhD
b2xvci5HLCBtYXhDb2xvci5CfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHttaW5Db2xvci5SLCBtaW5Db2xvci5HLCBtaW5Db2xvci5CfX07Ci0KLSAgICAgICAgaW50
IGRpcmVjdGlvblszXTsKLSAgICAgICAgZm9yIChpbnQgY2ggPSAwOyBjaCA8IDM7IGNoKyspCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGRpcmVjdGlvbltjaF0gPSBkZWNvZGVkQ29sb3JzWzBdW2No
XSAtIGRlY29kZWRDb2xvcnNbMV1bY2hdOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IHN0b3Bz
WzJdOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykKLSAgICAgICAgewotICAg
ICAgICAgICAgc3RvcHNbaV0gPSBkZWNvZGVkQ29sb3JzW2ldWzBdICogZGlyZWN0aW9uWzBdICsg
ZGVjb2RlZENvbG9yc1tpXVsxXSAqIGRpcmVjdGlvblsxXSArCi0gICAgICAgICAgICAgICAgICAg
ICAgIGRlY29kZWRDb2xvcnNbaV1bMl0gKiBkaXJlY3Rpb25bMl07Ci0gICAgICAgIH0KLQotICAg
ICAgICB1aW50MzJfdCBiaXRzID0gMDsKLSAgICAgICAgaWYgKG9wYXF1ZSkKLSAgICAgICAgewot
ICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE1OyBpID49IDA7IGktLSkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAvLyBJbiBvcGFxdWUgbW9kZSwgdGhlIGNvZGUgaXMgZnJvbSAwIHRv
IDMuCi0KLSAgICAgICAgICAgICAgICBiaXRzIDw8PSAyOwotICAgICAgICAgICAgICAgIGNvbnN0
IGludCBkb3QgPQotICAgICAgICAgICAgICAgICAgICByZ2JhW2ldLlIgKiBkaXJlY3Rpb25bMF0g
KyByZ2JhW2ldLkcgKiBkaXJlY3Rpb25bMV0gKyByZ2JhW2ldLkIgKiBkaXJlY3Rpb25bMl07Ci0g
ICAgICAgICAgICAgICAgY29uc3QgaW50IGZhY3RvciA9IGdsOjpjbGFtcCgKLSAgICAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PigKLSAgICAgICAgICAgICAgICAgICAgICAgIChzdGF0
aWNfY2FzdDxmbG9hdD4oZG90IC0gc3RvcHNbMV0pIC8gKHN0b3BzWzBdIC0gc3RvcHNbMV0pKSAq
IDMgKyAwLjVmKSwKLSAgICAgICAgICAgICAgICAgICAgMCwgMyk7Ci0gICAgICAgICAgICAgICAg
c3dpdGNoIChmYWN0b3IpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBj
YXNlIDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBiaXRzIHw9IDE7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgotICAgICAgICAg
ICAgICAgICAgICAgICAgYml0cyB8PSAzOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJp
dHMgfD0gMjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICBjYXNlIDM6Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBiaXRzIHw9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQot
ICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMTU7IGkgPj0gMDsgaS0tKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIEluIG5vbi1vcGFxdWUgbW9kZSwgMyBpcyBm
b3IgdHJhbnBhcmVudCBwaXhlbHMuCi0KLSAgICAgICAgICAgICAgICBiaXRzIDw8PSAyOwotICAg
ICAgICAgICAgICAgIGlmICgwID09IHJnYmFbaV0uQSkKLSAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgIGJpdHMgfD0gMzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc3Qg
aW50IGRvdCA9IHJnYmFbaV0uUiAqIGRpcmVjdGlvblswXSArIHJnYmFbaV0uRyAqIGRpcmVjdGlv
blsxXSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZ2JhW2ldLkIgKiBk
aXJlY3Rpb25bMl07Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBmYWN0b3IgPSBnbDo6
Y2xhbXAoCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChzdGF0aWNfY2FzdDxmbG9hdD4oZG90IC0gc3RvcHNbMV0p
IC8gKHN0b3BzWzBdIC0gc3RvcHNbMV0pKSAqIDIgKwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAuNWYpLAotICAgICAgICAgICAgICAgICAgICAgICAgMCwgMik7Ci0gICAgICAgICAgICAg
ICAgICAgIHN3aXRjaCAoZmFjdG9yKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBjYXNlIDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0cyB8
PSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdHMgfD0gMjsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYml0cyB8PSAxOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGJpdHM7Ci0gICAgfQotCi0gICAg
dm9pZCBwYWNrQkMxKHZvaWQgKmJjMSwKLSAgICAgICAgICAgICAgICAgY29uc3QgUjhHOEI4QTgg
KnJnYmEsCi0gICAgICAgICAgICAgICAgIGNvbnN0IFI4RzhCOEE4ICZtaW5Db2xvciwKLSAgICAg
ICAgICAgICAgICAgY29uc3QgUjhHOEI4QTggJm1heENvbG9yLAotICAgICAgICAgICAgICAgICBi
b29sIG9wYXF1ZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHVpbnQzMl90IGJpdHM7Ci0gICAgICAg
IHVpbnQxNl90IG1heDE2ID0gUkdCOFRvUkdCNTY1KG1heENvbG9yKTsKLSAgICAgICAgdWludDE2
X3QgbWluMTYgPSBSR0I4VG9SR0I1NjUobWluQ29sb3IpOwotICAgICAgICBpZiAobWF4MTYgIT0g
bWluMTYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIEZpbmQgdGhlIGJlc3QgQkMxIGNvZGUg
Zm9yIGVhY2ggcGl4ZWwKLSAgICAgICAgICAgIGJpdHMgPSBtYXRjaEJDMUJpdHMocmdiYSwgbWlu
Q29sb3IsIG1heENvbG9yLCBvcGFxdWUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgewotICAgICAgICAgICAgLy8gU2FtZSBjb2xvcnMsIEJDMSBpbmRleCAwIGlzIHRoZSBjb2xv
ciBpbiBib3RoIG9wYXF1ZSBhbmQgdHJhbnNwYXJlbnQgbW9kZQotICAgICAgICAgICAgYml0cyA9
IDA7Ci0gICAgICAgICAgICAvLyBCQzEgaW5kZXggMyBpcyB0cmFuc3BhcmVudAotICAgICAgICAg
ICAgaWYgKCFvcGFxdWUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCAxNjsgaSsrKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKDAgPT0gcmdiYVtpXS5BKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBiaXRzIHw9ICgzIDw8IChpICogMikpOwotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKG1heDE2IDwgbWluMTYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6c3dhcCht
YXgxNiwgbWluMTYpOwotCi0gICAgICAgICAgICB1aW50MzJfdCB4b3JNYXNrID0gMDsKLSAgICAg
ICAgICAgIGlmIChvcGFxdWUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gSW4g
b3BhcXVlIG1vZGUgc3dpdGNoaW5nIHRoZSB0d28gY29sb3JzIGlzIGRvaW5nIHRoZQotICAgICAg
ICAgICAgICAgIC8vIGZvbGxvd2luZyBjb2RlIHN3YXBzOiAwIDwtPiAxIGFuZCAyIDwtPiAzLiBU
aGlzIGlzCi0gICAgICAgICAgICAgICAgLy8gZXF1aXZhbGVudCB0byBmbGlwcGluZyB0aGUgZmly
c3QgYml0IG9mIGVhY2ggY29kZQotICAgICAgICAgICAgICAgIC8vICg1ID0gMGIwMTAxKQotICAg
ICAgICAgICAgICAgIHhvck1hc2sgPSAweDU1NTU1NTU1OwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIEluIHRyYW5zcGFy
ZW50IG1vZGUgc3dpdGNoaW5nIHRoZSBjb2xvcnMgaXMgZG9pbmcgdGhlCi0gICAgICAgICAgICAg
ICAgLy8gZm9sbG93aW5nIGNvZGUgc3dhcDogMCA8LT4gMS4gMHhBIHNlbGVjdHMgdGhlIHNlY29u
ZCBiaXQgb2YKLSAgICAgICAgICAgICAgICAvLyBlYWNoIGNvZGUsIGJpdHMgPj4gMSBzZWxlY3Rz
IHRoZSBmaXJzdCBiaXQgb2YgdGhlIGNvZGUgd2hlbgotICAgICAgICAgICAgICAgIC8vIHRoZSBz
ZWNvbmRzIGJpdCBpcyBzZXQgKGNhc2UgMiBhbmQgMykuIFdlIGludmVydCBhbGwgdGhlCi0gICAg
ICAgICAgICAgICAgLy8gbm9uLXNlbGVjdGVkIGJpdHMsIHRoYXQgaXMgdGhlIGZpcnN0IGJpdCB3
aGVuIHRoZSBjb2RlIGlzCi0gICAgICAgICAgICAgICAgLy8gMCBvciAxLgotICAgICAgICAgICAg
ICAgIHhvck1hc2sgPSB+KChiaXRzID4+IDEpIHwgMHhBQUFBQUFBQSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBiaXRzIF49IHhvck1hc2s7Ci0gICAgICAgIH0KLQotICAgICAgICBzdHJ1
Y3QgQkMxQmxvY2sKLSAgICAgICAgewotICAgICAgICAgICAgdWludDE2X3QgY29sb3IwOwotICAg
ICAgICAgICAgdWludDE2X3QgY29sb3IxOwotICAgICAgICAgICAgdWludDMyX3QgYml0czsKLSAg
ICAgICAgfTsKLQotICAgICAgICAvLyBFbmNvZGUgdGhlIG9wYXF1ZW5lc3MgaW4gdGhlIG9yZGVy
IG9mIHRoZSB0d28gQkMxIGNvbG9ycwotICAgICAgICBCQzFCbG9jayAqZGVzdCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8QkMxQmxvY2sgKj4oYmMxKTsKLSAgICAgICAgaWYgKG9wYXF1ZSkKLSAgICAgICAg
ewotICAgICAgICAgICAgZGVzdC0+Y29sb3IwID0gbWF4MTY7Ci0gICAgICAgICAgICBkZXN0LT5j
b2xvcjEgPSBtaW4xNjsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGRlc3QtPmNvbG9yMCA9IG1pbjE2OwotICAgICAgICAgICAgZGVzdC0+Y29sb3IxID0g
bWF4MTY7Ci0gICAgICAgIH0KLSAgICAgICAgZGVzdC0+Yml0cyA9IGJpdHM7Ci0gICAgfQotCi0g
ICAgdm9pZCB0cmFuc2NvZGVJbmRpdmlkdWFsQmxvY2tUb0JDMSh1aW50OF90ICpkZXN0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB3LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB1aW50OF90IGFscGhhVmFsdWVzWzRdWzRdLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIGNvbnN0IGF1dG8gJmJsb2NrID0gdS5pZGh0Lm1vZGUuaWRt
LmNvbG9ycy5pbmRpdjsKLSAgICAgICAgaW50IHIxICAgICAgICAgICAgPSBleHRlbmRfNHRvOGJp
dHMoYmxvY2suUjEpOwotICAgICAgICBpbnQgZzEgICAgICAgICAgICA9IGV4dGVuZF80dG84Yml0
cyhibG9jay5HMSk7Ci0gICAgICAgIGludCBiMSAgICAgICAgICAgID0gZXh0ZW5kXzR0bzhiaXRz
KGJsb2NrLkIxKTsKLSAgICAgICAgaW50IHIyICAgICAgICAgICAgPSBleHRlbmRfNHRvOGJpdHMo
YmxvY2suUjIpOwotICAgICAgICBpbnQgZzIgICAgICAgICAgICA9IGV4dGVuZF80dG84Yml0cyhi
bG9jay5HMik7Ci0gICAgICAgIGludCBiMiA9IGV4dGVuZF80dG84Yml0cyhibG9jay5CMik7Ci0g
ICAgICAgIHRyYW5zY29kZUluZGl2aWR1YWxPckRpZmZlcmVudGlhbEJsb2NrVG9CQzEoZGVzdCwg
eCwgeSwgdywgaCwgcjEsIGcxLCBiMSwgcjIsIGcyLCBiMiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYVZhbHVlcywgbm9uT3BhcXVlUHVu
Y2hUaHJvdWdoQWxwaGEpOwotICAgIH0KLQotICAgIHZvaWQgdHJhbnNjb2RlRGlmZmVyZW50aWFs
QmxvY2tUb0JDMSh1aW50OF90ICpkZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCB3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlu
dDhfdCBhbHBoYVZhbHVlc1s0XVs0XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIGNvbnN0IGF1dG8gJmJsb2NrID0gdS5pZGh0Lm1vZGUuaWRtLmNvbG9ycy5kaWZmOwot
ICAgICAgICBpbnQgYjEgICAgICAgICAgICA9IGV4dGVuZF81dG84Yml0cyhibG9jay5CKTsKLSAg
ICAgICAgaW50IGcxICAgICAgICAgICAgPSBleHRlbmRfNXRvOGJpdHMoYmxvY2suRyk7Ci0gICAg
ICAgIGludCByMSAgICAgICAgICAgID0gZXh0ZW5kXzV0bzhiaXRzKGJsb2NrLlIpOwotICAgICAg
ICBpbnQgcjIgICAgICAgICAgICA9IGV4dGVuZF81dG84Yml0cyhibG9jay5SICsgYmxvY2suZFIp
OwotICAgICAgICBpbnQgZzIgICAgICAgICAgICA9IGV4dGVuZF81dG84Yml0cyhibG9jay5HICsg
YmxvY2suZEcpOwotICAgICAgICBpbnQgYjIgPSBleHRlbmRfNXRvOGJpdHMoYmxvY2suQiArIGJs
b2NrLmRCKTsKLSAgICAgICAgdHJhbnNjb2RlSW5kaXZpZHVhbE9yRGlmZmVyZW50aWFsQmxvY2tU
b0JDMShkZXN0LCB4LCB5LCB3LCBoLCByMSwgZzEsIGIxLCByMiwgZzIsIGIyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhVmFsdWVzLCBu
b25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSk7Ci0gICAgfQotCi0gICAgdm9pZCBkZWNvZGVTdWJi
bG9jayhSOEc4QjhBOCAqcmdiYUJsb2NrLAotICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IHgsCi0gICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCB3LAotICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90IGFscGhhVmFsdWVzWzRdWzRdLAotICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBmbGlwYml0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IHN1YmJsb2NrSWR4LAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUjhH
OEI4QTggc3ViYmxvY2tDb2xvcnNbMl1bNF0pIGNvbnN0Ci0gICAgewotICAgICAgICBzaXplX3Qg
ZHhCZWdpbiA9IDA7Ci0gICAgICAgIHNpemVfdCBkeEVuZCAgID0gNDsKLSAgICAgICAgc2l6ZV90
IGR5QmVnaW4gPSBzdWJibG9ja0lkeCAqIDI7Ci0gICAgICAgIHNpemVfdCBkeUVuZCA9IGR5QmVn
aW4gKyAyOwotICAgICAgICBpZiAoIWZsaXBiaXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0
ZDo6c3dhcChkeEJlZ2luLCBkeUJlZ2luKTsKLSAgICAgICAgICAgIHN0ZDo6c3dhcChkeEVuZCwg
ZHlFbmQpOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaiA9IGR5QmVnaW47IGog
PCBkeUVuZCAmJiAoeSArIGopIDwgaDsgaisrKQotICAgICAgICB7Ci0gICAgICAgICAgICBSOEc4
QjhBOCAqcm93ID0gJnJnYmFCbG9ja1tqICogNF07Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gZHhCZWdpbjsgaSA8IGR4RW5kICYmICh4ICsgaSkgPCB3OyBpKyspCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90IHBpeGVsSW5kZXggPSBnZXRJbmRleChpLCBq
KTsKLSAgICAgICAgICAgICAgICByb3dbaV0gICAgICAgICAgICAgICAgICA9IHN1YmJsb2NrQ29s
b3JzW3N1YmJsb2NrSWR4XVtwaXhlbEluZGV4XTsKLSAgICAgICAgICAgICAgICByb3dbaV0uQSAg
ICAgICAgICAgICAgICA9IGFscGhhVmFsdWVzW2pdW2ldOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgdm9pZCBzZWxlY3RFbmRQb2ludFBDQShjb25zdCBSOEc4QjhBOCAq
cGl4ZWxzLCBSOEc4QjhBOCAqbWluQ29sb3IsIFI4RzhCOEE4ICptYXhDb2xvcikgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQga051bVBpeGVscyA9IDE2OwotCi0gICAgICAg
IC8vIGRldGVybWluZSBjb2xvciBkaXN0cmlidXRpb24KLSAgICAgICAgaW50IG11WzNdLCBtaW5b
M10sIG1heFszXTsKLSAgICAgICAgZm9yIChpbnQgY2ggPSAwOyBjaCA8IDM7IGNoKyspCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGludCBtdXYsIG1pbnYsIG1heHY7Ci0KLSAgICAgICAgICAgIG11
diA9IG1pbnYgPSBtYXh2ID0gKCZwaXhlbHNbMF0uUilbY2hdOwotICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDE7IGkgPCBrTnVtUGl4ZWxzOyBpKyspCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgbXV2ICs9ICgmcGl4ZWxzW2ldLlIpW2NoXTsKLSAgICAgICAgICAgICAgICBtaW52
ID0gc3RkOjptaW48aW50PihtaW52LCAoJnBpeGVsc1tpXS5SKVtjaF0pOwotICAgICAgICAgICAg
ICAgIG1heHYgPSBzdGQ6Om1heDxpbnQ+KG1heHYsICgmcGl4ZWxzW2ldLlIpW2NoXSk7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIG11W2NoXSAgPSAobXV2ICsga051bVBpeGVscyAvIDIp
IC8ga051bVBpeGVsczsKLSAgICAgICAgICAgIG1pbltjaF0gPSBtaW52OwotICAgICAgICAgICAg
bWF4W2NoXSA9IG1heHY7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBkZXRlcm1pbmUgY292YXJp
YW5jZSBtYXRyaXgKLSAgICAgICAgaW50IGNvdls2XSA9IHswLCAwLCAwLCAwLCAwLCAwfTsKLSAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrTnVtUGl4ZWxzOyBpKyspCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGludCByID0gcGl4ZWxzW2ldLlIgLSBtdVswXTsKLSAgICAgICAgICAgIGlu
dCBnID0gcGl4ZWxzW2ldLkcgLSBtdVsxXTsKLSAgICAgICAgICAgIGludCBiID0gcGl4ZWxzW2ld
LkIgLSBtdVsyXTsKLQotICAgICAgICAgICAgY292WzBdICs9IHIgKiByOwotICAgICAgICAgICAg
Y292WzFdICs9IHIgKiBnOwotICAgICAgICAgICAgY292WzJdICs9IHIgKiBiOwotICAgICAgICAg
ICAgY292WzNdICs9IGcgKiBnOwotICAgICAgICAgICAgY292WzRdICs9IGcgKiBiOwotICAgICAg
ICAgICAgY292WzVdICs9IGIgKiBiOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gUG93ZXIgaXRl
cmF0aW9uIGFsZ29yaXRobSB0byBnZXQgdGhlIGVpZ2VudmFsdWVzIGFuZCBlaWdlbnZlY3Rvcgot
Ci0gICAgICAgIC8vIFN0YXJ0cyB3aXRoIGRpYWdvbmFsIHZlY3RvcgotICAgICAgICBmbG9hdCB2
ZnIgPSBzdGF0aWNfY2FzdDxmbG9hdD4obWF4WzBdIC0gbWluWzBdKTsKLSAgICAgICAgZmxvYXQg
dmZnID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heFsxXSAtIG1pblsxXSk7Ci0gICAgICAgIGZsb2F0
IHZmYiA9IHN0YXRpY19jYXN0PGZsb2F0PihtYXhbMl0gLSBtaW5bMl0pOwotICAgICAgICBmbG9h
dCBlaWdlbnZhbHVlOwotCi0gICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3Qga1Bvd2VySXRlcmF0
aW9ucyA9IDQ7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga1Bvd2VySXRlcmF0aW9u
czsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBmbG9hdCByID0gdmZyICogY292WzBdICsg
dmZnICogY292WzFdICsgdmZiICogY292WzJdOwotICAgICAgICAgICAgZmxvYXQgZyA9IHZmciAq
IGNvdlsxXSArIHZmZyAqIGNvdlszXSArIHZmYiAqIGNvdls0XTsKLSAgICAgICAgICAgIGZsb2F0
IGIgPSB2ZnIgKiBjb3ZbMl0gKyB2ZmcgKiBjb3ZbNF0gKyB2ZmIgKiBjb3ZbNV07Ci0KLSAgICAg
ICAgICAgIHZmciA9IHI7Ci0gICAgICAgICAgICB2ZmcgPSBnOwotICAgICAgICAgICAgdmZiID0g
YjsKLQotICAgICAgICAgICAgZWlnZW52YWx1ZSA9IHNxcnQociAqIHIgKyBnICogZyArIGIgKiBi
KTsKLSAgICAgICAgICAgIGlmIChlaWdlbnZhbHVlID4gMCkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBmbG9hdCBpbnZOb3JtID0gMS4wZiAvIGVpZ2VudmFsdWU7Ci0gICAgICAgICAg
ICAgICAgdmZyICo9IGludk5vcm07Ci0gICAgICAgICAgICAgICAgdmZnICo9IGludk5vcm07Ci0g
ICAgICAgICAgICAgICAgdmZiICo9IGludk5vcm07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LQotICAgICAgICBpbnQgdnIsIHZnLCB2YjsKLQotICAgICAgICBzdGF0aWMgY29uc3QgZmxvYXQg
a0RlZmF1bHRMdW1pbmFuY2VUaHJlc2hvbGQgPSA0LjBmICogMjU1OwotICAgICAgICBzdGF0aWMg
Y29uc3QgZmxvYXQga1F1YW50aXplUmFuZ2UgPSA1MTIuMGY7Ci0gICAgICAgIGlmIChlaWdlbnZh
bHVlIDwga0RlZmF1bHRMdW1pbmFuY2VUaHJlc2hvbGQpICAvLyB0b28gc21hbGwsIGRlZmF1bHQg
dG8gbHVtaW5hbmNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIEx1bWluYW5jZSB3ZWlnaHRz
IGRlZmluZWQgYnkgSVRVLVIgUmVjb21tZW5kYXRpb24gQlQuNjAxLCBzY2FsZWQgYnkgMTAwMAot
ICAgICAgICAgICAgdnIgPSAyOTk7Ci0gICAgICAgICAgICB2ZyA9IDU4NzsKLSAgICAgICAgICAg
IHZiID0gMTE0OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAg
ICAgLy8gRnJvbSB0aGUgZWlnZW52YWx1ZSBhbmQgZWlnZW52ZWN0b3IsIGNob29zZSB0aGUgYXhp
cyB0byBwcm9qZWN0Ci0gICAgICAgICAgICAvLyBjb2xvcnMgb24uIFdoZW4gcHJvamVjdGluZyBj
b2xvcnMgd2Ugd2FudCB0byBkbyBpbnRlZ2VyIGNvbXB1dGF0aW9ucwotICAgICAgICAgICAgLy8g
Zm9yIHNwZWVkLCBzbyB3ZSBub3JtYWxpemUgdGhlIGVpZ2VudmVjdG9yIHRvIHRoZSBbMCwgNTEy
XSByYW5nZS4KLSAgICAgICAgICAgIGZsb2F0IG1hZ24gPSBzdGQ6Om1heChzdGQ6Om1heChzdGQ6
OmFicyh2ZnIpLCBzdGQ6OmFicyh2ZmcpKSwgc3RkOjphYnModmZiKSk7Ci0gICAgICAgICAgICBt
YWduICAgICAgID0ga1F1YW50aXplUmFuZ2UgLyBtYWduOwotICAgICAgICAgICAgdnIgICAgICAg
ICA9IHN0YXRpY19jYXN0PGludD4odmZyICogbWFnbik7Ci0gICAgICAgICAgICB2ZyAgICAgICAg
ID0gc3RhdGljX2Nhc3Q8aW50Pih2ZmcgKiBtYWduKTsKLSAgICAgICAgICAgIHZiICAgICAgICAg
PSBzdGF0aWNfY2FzdDxpbnQ+KHZmYiAqIG1hZ24pOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
UGljayBjb2xvcnMgYXQgZXh0cmVtZSBwb2ludHMKLSAgICAgICAgaW50IG1pbkQgICAgICAgID0g
cGl4ZWxzWzBdLlIgKiB2ciArIHBpeGVsc1swXS5HICogdmcgKyBwaXhlbHNbMF0uQiAqIHZiOwot
ICAgICAgICBpbnQgbWF4RCAgICAgICAgPSBtaW5EOwotICAgICAgICBzaXplX3QgbWluSW5kZXgg
PSAwOwotICAgICAgICBzaXplX3QgbWF4SW5kZXggPSAwOwotICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMTsgaSA8IGtOdW1QaXhlbHM7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgaW50IGRv
dCA9IHBpeGVsc1tpXS5SICogdnIgKyBwaXhlbHNbaV0uRyAqIHZnICsgcGl4ZWxzW2ldLkIgKiB2
YjsKLSAgICAgICAgICAgIGlmIChkb3QgPCBtaW5EKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIG1pbkQgICAgID0gZG90OwotICAgICAgICAgICAgICAgIG1pbkluZGV4ID0gaTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChkb3QgPiBtYXhEKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIG1heEQgICAgID0gZG90OwotICAgICAgICAgICAgICAgIG1heEluZGV4
ID0gaTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgICptaW5Db2xvciA9IHBp
eGVsc1ttaW5JbmRleF07Ci0gICAgICAgICptYXhDb2xvciA9IHBpeGVsc1ttYXhJbmRleF07Ci0g
ICAgfQotCi0gICAgdm9pZCB0cmFuc2NvZGVJbmRpdmlkdWFsT3JEaWZmZXJlbnRpYWxCbG9ja1Rv
QkMxKHVpbnQ4X3QgKmRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCB4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcjEsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBnMSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGIxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgcjIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBnMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGIyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90IGFscGhhVmFsdWVzWzRdWzRdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIG5vbk9w
YXF1ZVB1bmNoVGhyb3VnaEFscGhhKSBjb25zdAotICAgIHsKLSAgICAgICAgLy8gQSBCQzEgYmxv
Y2sgaGFzIDIgZW5kcG9pbnRzLCBwaXhlbHMgaXMgZW5jb2RlZCBhcyBsaW5lYXIKLSAgICAgICAg
Ly8gaW50ZXJwb2xhdGlvbnMgb2YgdGhlbS4gQSBFVEMxL0VUQzIgaW5kaXZpZHVhbCBvciBkaWZm
ZXJlbnRpYWwgYmxvY2sKLSAgICAgICAgLy8gaGFzIDIgc3ViYmxvY2tzLiBFYWNoIHN1YmJsb2Nr
IGhhcyBvbmUgY29sb3IgYW5kIGEgbW9kaWZpZXIuIFdlCi0gICAgICAgIC8vIHNlbGVjdCBheGlz
IGJ5IHByaW5jaXBhbCBjb21wb25lbnQgYW5hbHlzaXMgKFBDQSkgdG8gdXNlIGFzCi0gICAgICAg
IC8vIG91ciB0d28gQkMxIGVuZHBvaW50cyBhbmQgdGhlbiBtYXAgcGl4ZWxzIHRvIEJDMSBieSBw
cm9qZWN0aW5nIG9uIHRoZQotICAgICAgICAvLyBsaW5lIGJldHdlZW4gdGhlIHR3byBlbmRwb2lu
dHMgYW5kIGNob29zaW5nIHRoZSByaWdodCBmcmFjdGlvbi4KLSAgICAgICAgLy8KLSAgICAgICAg
Ly8gSW4gdGhlIGZ1dHVyZSwgd2UgaGF2ZSBhIHBvdGVudGlhbCBpbXByb3ZlbWVudHMgdG8gdGhp
cyBhbGdvcml0aG0uCi0gICAgICAgIC8vIDEuIFdlIGRvbid0IGFjdHVhbGx5IG5lZWQgdG8gZGVj
b2RlIEVUQyBibG9ja3MgdG8gUkdCcy4gSW5zdGVhZCwKLSAgICAgICAgLy8gICAgdGhlIHN1YmJs
b2NrIGNvbG9ycyBhbmQgcGl4ZWwgaW5kaWNlcyBhbHJlYXkgY29udGFpbnMgZW5vdWdoCi0gICAg
ICAgIC8vICAgIGluZm9ybWF0aW9uIGZvciB0cmFuc2NvZGUuIEEgZGlyZWN0IG1hcHBpbmcgd291
bGQgYmUgbW9yZQotICAgICAgICAvLyAgICBlZmZpY2llbnQgaGVyZS4KLQotICAgICAgICBjb25z
dCBhdXRvIGludGVuc2l0eU1vZGlmaWVyID0KLSAgICAgICAgICAgIG5vbk9wYXF1ZVB1bmNoVGhy
b3VnaEFscGhhID8gaW50ZW5zaXR5TW9kaWZpZXJOb25PcGFxdWUgOiBpbnRlbnNpdHlNb2RpZmll
ckRlZmF1bHQ7Ci0KLSAgICAgICAgLy8gQ29tcHV0ZSB0aGUgY29sb3JzIHRoYXQgcGl4ZWxzIGNh
biBoYXZlIGluIGVhY2ggc3ViYmxvY2sgYm90aCBmb3IKLSAgICAgICAgLy8gdGhlIGRlY29kaW5n
IG9mIHRoZSBSR0JBIGRhdGEgYW5kIEJDMSBlbmNvZGluZwotICAgICAgICBSOEc4QjhBOCBzdWJi
bG9ja0NvbG9yc1syXVs0XTsKLSAgICAgICAgZm9yIChzaXplX3QgbW9kaWZpZXJJZHggPSAwOyBt
b2RpZmllcklkeCA8IDQ7IG1vZGlmaWVySWR4KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnN0IGludCBpMSAgICAgICAgICAgICAgICAgICA9IGludGVuc2l0eU1vZGlmaWVyW3UuaWRodC5t
b2RlLmlkbS5jdzFdW21vZGlmaWVySWR4XTsKLSAgICAgICAgICAgIHN1YmJsb2NrQ29sb3JzWzBd
W21vZGlmaWVySWR4XSA9IGNyZWF0ZVJHQkEocjEgKyBpMSwgZzEgKyBpMSwgYjEgKyBpMSk7Ci0K
LSAgICAgICAgICAgIGNvbnN0IGludCBpMiAgICAgICAgICAgICAgICAgICA9IGludGVuc2l0eU1v
ZGlmaWVyW3UuaWRodC5tb2RlLmlkbS5jdzJdW21vZGlmaWVySWR4XTsKLSAgICAgICAgICAgIHN1
YmJsb2NrQ29sb3JzWzFdW21vZGlmaWVySWR4XSA9IGNyZWF0ZVJHQkEocjIgKyBpMiwgZzIgKyBp
MiwgYjIgKyBpMik7Ci0gICAgICAgIH0KLQotICAgICAgICBSOEc4QjhBOCByZ2JhQmxvY2tbMTZd
OwotICAgICAgICAvLyBEZWNvZGUgdGhlIGJsb2NrIGluIHJnYmFCbG9jay4KLSAgICAgICAgZm9y
IChzaXplX3QgYmxvY2tJZHggPSAwOyBibG9ja0lkeCA8IDI7IGJsb2NrSWR4KyspCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGRlY29kZVN1YmJsb2NrKHJnYmFCbG9jaywgeCwgeSwgdywgaCwgYWxw
aGFWYWx1ZXMsIHUuaWRodC5tb2RlLmlkbS5mbGlwYml0LCBibG9ja0lkeCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN1YmJsb2NrQ29sb3JzKTsKLSAgICAgICAgfQotICAgICAgICBpZiAo
bm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlY29k
ZVB1bmNoVGhyb3VnaEFscGhhQmxvY2socmVpbnRlcnByZXRfY2FzdDx1aW50OF90ICo+KHJnYmFC
bG9jayksIHgsIHksIHcsIGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVvZihSOEc4QjhBOCkgKiA0KTsKLSAgICAgICAgfQotCi0gICAgICAgIFI4RzhCOEE4
IG1pbkNvbG9yLCBtYXhDb2xvcjsKLSAgICAgICAgc2VsZWN0RW5kUG9pbnRQQ0EocmdiYUJsb2Nr
LCAmbWluQ29sb3IsICZtYXhDb2xvcik7Ci0KLSAgICAgICAgcGFja0JDMShkZXN0LCByZ2JhQmxv
Y2ssIG1pbkNvbG9yLCBtYXhDb2xvciwgIW5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhhKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIHRyYW5zY29kZVRCbG9ja1RvQkMxKHVpbnQ4X3QgKmRlc3QsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCB5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IHcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgYWxwaGFWYWx1ZXNbNF1bNF0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhh
KSBjb25zdAotICAgIHsKLSAgICAgICAgLy8gVE9ETyAobWdvbmcpOiBXaWxsIGJlIGltcGxlbWVu
dGVkIHNvb24KLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIH0KLQotICAgIHZvaWQgdHJh
bnNjb2RlSEJsb2NrVG9CQzEodWludDhfdCAqZGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCB4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgdWludDhfdCBhbHBoYVZhbHVlc1s0XVs0XSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpIGNvbnN0Ci0gICAgewotICAg
ICAgICAvLyBUT0RPIChtZ29uZyk6IFdpbGwgYmUgaW1wbGVtZW50ZWQgc29vbgotICAgICAgICBV
TklNUExFTUVOVEVEKCk7Ci0gICAgfQotCi0gICAgdm9pZCB0cmFuc2NvZGVQbGFuYXJCbG9ja1Rv
QkMxKHVpbnQ4X3QgKmRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCB4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB1aW50OF90IGFscGhhVmFsdWVzWzRdWzRdKSBjb25zdAotICAgIHsK
LSAgICAgICAgLy8gVE9ETyAobWdvbmcpOiBXaWxsIGJlIGltcGxlbWVudGVkIHNvb24KLSAgICAg
ICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIH0KLQotICAgIC8vIFNpbmdsZSBjaGFubmVsIHV0aWxp
dHkgZnVuY3Rpb25zCi0gICAgaW50IGdldFNpbmdsZUNoYW5uZWwoc2l6ZV90IHgsIHNpemVfdCB5
LCBib29sIGlzU2lnbmVkKSBjb25zdAotICAgIHsKLSAgICAgICAgaW50IGNvZGV3b3JkID0gaXNT
aWduZWQgPyB1LnNjYmxrLmJhc2VfY29kZXdvcmQucyA6IHUuc2NibGsuYmFzZV9jb2Rld29yZC51
czsKLSAgICAgICAgcmV0dXJuIGNvZGV3b3JkICsgZ2V0U2luZ2xlQ2hhbm5lbE1vZGlmaWVyKHgs
IHkpICogdS5zY2Jsay5tdWx0aXBsaWVyOwotICAgIH0KLQotICAgIGludCBnZXRTaW5nbGVDaGFu
bmVsSW5kZXgoc2l6ZV90IHgsIHNpemVfdCB5KSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJU
KHggPCA0ICYmIHkgPCA0KTsKLQotICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCi0gICAgICAg
IHN3aXRjaCAoeCAqIDQgKyB5KQotICAgICAgICB7Ci0gICAgICAgICAgICBjYXNlIDA6IHJldHVy
biB1LnNjYmxrLm1hOwotICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gdS5zY2Jsay5tYjsKLSAg
ICAgICAgICAgIGNhc2UgMjogcmV0dXJuIHUuc2NibGsubWMxIDw8IDEgfCB1LnNjYmxrLm1jMjsK
LSAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuIHUuc2NibGsubWQ7Ci0gICAgICAgICAgICBjYXNl
IDQ6IHJldHVybiB1LnNjYmxrLm1lOwotICAgICAgICAgICAgY2FzZSA1OiByZXR1cm4gdS5zY2Js
ay5tZjEgPDwgMiB8IHUuc2NibGsubWYyOwotICAgICAgICAgICAgY2FzZSA2OiByZXR1cm4gdS5z
Y2Jsay5tZzsKLSAgICAgICAgICAgIGNhc2UgNzogcmV0dXJuIHUuc2NibGsubWg7Ci0gICAgICAg
ICAgICBjYXNlIDg6IHJldHVybiB1LnNjYmxrLm1pOwotICAgICAgICAgICAgY2FzZSA5OiByZXR1
cm4gdS5zY2Jsay5tajsKLSAgICAgICAgICAgIGNhc2UgMTA6IHJldHVybiB1LnNjYmxrLm1rMSA8
PCAxIHwgdS5zY2Jsay5tazI7Ci0gICAgICAgICAgICBjYXNlIDExOiByZXR1cm4gdS5zY2Jsay5t
bDsKLSAgICAgICAgICAgIGNhc2UgMTI6IHJldHVybiB1LnNjYmxrLm1tOwotICAgICAgICAgICAg
Y2FzZSAxMzogcmV0dXJuIHUuc2NibGsubW4xIDw8IDIgfCB1LnNjYmxrLm1uMjsKLSAgICAgICAg
ICAgIGNhc2UgMTQ6IHJldHVybiB1LnNjYmxrLm1vOwotICAgICAgICAgICAgY2FzZSAxNTogcmV0
dXJuIHUuc2NibGsubXA7Ci0gICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyByZXR1
cm4gMDsKLSAgICAgICAgfQotICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb24KLSAgICB9Ci0KLSAg
ICBpbnQgZ2V0U2luZ2xlQ2hhbm5lbE1vZGlmaWVyKHNpemVfdCB4LCBzaXplX3QgeSkgY29uc3QK
LSAgICB7Ci0gICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKLSAgICAgICAgc3RhdGljIGNvbnN0
IGludCBtb2RpZmllclRhYmxlWzE2XVs4XSA9Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHsgLTMs
IC02LCAgLTksIC0xNSwgMiwgNSwgOCwgMTQgfSwKLSAgICAgICAgICAgIHsgLTMsIC03LCAtMTAs
IC0xMywgMiwgNiwgOSwgMTIgfSwKLSAgICAgICAgICAgIHsgLTIsIC01LCAgLTgsIC0xMywgMSwg
NCwgNywgMTIgfSwKLSAgICAgICAgICAgIHsgLTIsIC00LCAgLTYsIC0xMywgMSwgMywgNSwgMTIg
fSwKLSAgICAgICAgICAgIHsgLTMsIC02LCAgLTgsIC0xMiwgMiwgNSwgNywgMTEgfSwKLSAgICAg
ICAgICAgIHsgLTMsIC03LCAgLTksIC0xMSwgMiwgNiwgOCwgMTAgfSwKLSAgICAgICAgICAgIHsg
LTQsIC03LCAgLTgsIC0xMSwgMywgNiwgNywgMTAgfSwKLSAgICAgICAgICAgIHsgLTMsIC01LCAg
LTgsIC0xMSwgMiwgNCwgNywgMTAgfSwKLSAgICAgICAgICAgIHsgLTIsIC02LCAgLTgsIC0xMCwg
MSwgNSwgNywgIDkgfSwKLSAgICAgICAgICAgIHsgLTIsIC01LCAgLTgsIC0xMCwgMSwgNCwgNywg
IDkgfSwKLSAgICAgICAgICAgIHsgLTIsIC00LCAgLTgsIC0xMCwgMSwgMywgNywgIDkgfSwKLSAg
ICAgICAgICAgIHsgLTIsIC01LCAgLTcsIC0xMCwgMSwgNCwgNiwgIDkgfSwKLSAgICAgICAgICAg
IHsgLTMsIC00LCAgLTcsIC0xMCwgMiwgMywgNiwgIDkgfSwKLSAgICAgICAgICAgIHsgLTEsIC0y
LCAgLTMsIC0xMCwgMCwgMSwgMiwgIDkgfSwKLSAgICAgICAgICAgIHsgLTQsIC02LCAgLTgsICAt
OSwgMywgNSwgNywgIDggfSwKLSAgICAgICAgICAgIHsgLTMsIC01LCAgLTcsICAtOSwgMiwgNCwg
NiwgIDggfQotICAgICAgICB9OwotICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb24KLQotICAgICAg
ICByZXR1cm4gbW9kaWZpZXJUYWJsZVt1LnNjYmxrLnRhYmxlX2luZGV4XVtnZXRTaW5nbGVDaGFu
bmVsSW5kZXgoeCwgeSldOwotICAgIH0KLX07Ci0KLS8vIGNsYW5nLWZvcm1hdCBvZmYKLXN0YXRp
YyBjb25zdCB1aW50OF90IERlZmF1bHRFVENBbHBoYVZhbHVlc1s0XVs0XSA9Ci17Ci0gICAgeyAy
NTUsIDI1NSwgMjU1LCAyNTUgfSwKLSAgICB7IDI1NSwgMjU1LCAyNTUsIDI1NSB9LAotICAgIHsg
MjU1LCAyNTUsIDI1NSwgMjU1IH0sCi0gICAgeyAyNTUsIDI1NSwgMjU1LCAyNTUgfSwKLX07Ci0v
LyBjbGFuZy1mb3JtYXQgb24KLQotdm9pZCBMb2FkUjExRUFDVG9SOChzaXplX3Qgd2lkdGgsCi0g
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgIHNp
emVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCi0g
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAotICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICB1aW50OF90
ICpvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKLSAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAg
ICAgICAgIGJvb2wgaXNTaWduZWQpCi17Ci0gICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0
aDsgeisrKQotICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkg
Kz0gNCkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgRVRDMkJsb2NrICpzb3VyY2VSb3cg
PQotICAgICAgICAgICAgICAgIE9mZnNldERhdGFQb2ludGVyPEVUQzJCbG9jaz4oaW5wdXQsIHkg
LyA0LCB6LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOwotICAgICAgICAgICAgdWlu
dDhfdCAqZGVzdFJvdyA9Ci0gICAgICAgICAgICAgICAgT2Zmc2V0RGF0YVBvaW50ZXI8dWludDhf
dD4ob3V0cHV0LCB5LCB6LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7Ci0KLSAg
ICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHggKz0gNCkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBjb25zdCBFVEMyQmxvY2sgKnNvdXJjZUJsb2NrID0gc291
cmNlUm93ICsgKHggLyA0KTsKLSAgICAgICAgICAgICAgICB1aW50OF90ICpkZXN0UGl4ZWxzICAg
ICAgICAgID0gZGVzdFJvdyArIHg7Ci0KLSAgICAgICAgICAgICAgICBzb3VyY2VCbG9jay0+ZGVj
b2RlQXNTaW5nbGVDaGFubmVsKGRlc3RQaXhlbHMsIHgsIHksIHdpZHRoLCBoZWlnaHQsIDEsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRS
b3dQaXRjaCwgaXNTaWduZWQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQot
Ci12b2lkIExvYWRSRzExRUFDVG9SRzgoc2l6ZV90IHdpZHRoLAotICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAot
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAotICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAotICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0
cHV0LAotICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKLSAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAg
ICAgICAgICBib29sIGlzU2lnbmVkKQotewotICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVw
dGg7IHorKykKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5
ICs9IDQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IEVUQzJCbG9jayAqc291cmNlUm93
ID0KLSAgICAgICAgICAgICAgICBPZmZzZXREYXRhUG9pbnRlcjxFVEMyQmxvY2s+KGlucHV0LCB5
IC8gNCwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIHVp
bnQ4X3QgKmRlc3RSb3cgPQotICAgICAgICAgICAgICAgIE9mZnNldERhdGFQb2ludGVyPHVpbnQ4
X3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOwotCi0g
ICAgICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4ICs9IDQpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgdWludDhfdCAqZGVzdFBpeGVsc1JlZCAgICAgICAgICA9
IGRlc3RSb3cgKyAoeCAqIDIpOwotICAgICAgICAgICAgICAgIGNvbnN0IEVUQzJCbG9jayAqc291
cmNlQmxvY2tSZWQgPSBzb3VyY2VSb3cgKyAoeCAvIDIpOwotICAgICAgICAgICAgICAgIHNvdXJj
ZUJsb2NrUmVkLT5kZWNvZGVBc1NpbmdsZUNoYW5uZWwoZGVzdFBpeGVsc1JlZCwgeCwgeSwgd2lk
dGgsIGhlaWdodCwgMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG91dHB1dFJvd1BpdGNoLCBpc1NpZ25lZCk7Ci0KLSAgICAgICAgICAgICAg
ICB1aW50OF90ICpkZXN0UGl4ZWxzR3JlZW4gICAgICAgICAgPSBkZXN0UGl4ZWxzUmVkICsgMTsK
LSAgICAgICAgICAgICAgICBjb25zdCBFVEMyQmxvY2sgKnNvdXJjZUJsb2NrR3JlZW4gPSBzb3Vy
Y2VCbG9ja1JlZCArIDE7Ci0gICAgICAgICAgICAgICAgc291cmNlQmxvY2tHcmVlbi0+ZGVjb2Rl
QXNTaW5nbGVDaGFubmVsKGRlc3RQaXhlbHNHcmVlbiwgeCwgeSwgd2lkdGgsIGhlaWdodCwgMiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3V0cHV0Um93UGl0Y2gsIGlzU2lnbmVkKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLX0KLQotdm9pZCBMb2FkRVRDMlJHQjhUb1JHQkE4KHNpemVfdCB3aWR0aCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpp
bnB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IG91dHB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwdW5jaHRo
cm91Z2hBbHBoYSkKLXsKLSAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCi0g
ICAgewotICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSArPSA0KQotICAg
ICAgICB7Ci0gICAgICAgICAgICBjb25zdCBFVEMyQmxvY2sgKnNvdXJjZVJvdyA9Ci0gICAgICAg
ICAgICAgICAgT2Zmc2V0RGF0YVBvaW50ZXI8RVRDMkJsb2NrPihpbnB1dCwgeSAvIDQsIHosIGlu
cHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7Ci0gICAgICAgICAgICB1aW50OF90ICpkZXN0
Um93ID0KLSAgICAgICAgICAgICAgICBPZmZzZXREYXRhUG9pbnRlcjx1aW50OF90PihvdXRwdXQs
IHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKLQotICAgICAgICAgICAg
Zm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCArPSA0KQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGNvbnN0IEVUQzJCbG9jayAqc291cmNlQmxvY2sgPSBzb3VyY2VSb3cgKyAo
eCAvIDQpOwotICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmRlc3RQaXhlbHMgICAgICAgICAgPSBk
ZXN0Um93ICsgKHggKiA0KTsKLQotICAgICAgICAgICAgICAgIHNvdXJjZUJsb2NrLT5kZWNvZGVB
c1JHQihkZXN0UGl4ZWxzLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBvdXRwdXRSb3dQaXRjaCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdEVUQ0FscGhhVmFs
dWVzLCBwdW5jaHRocm91Z2hBbHBoYSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9
Ci19Ci0KLXZvaWQgTG9hZEVUQzJSR0I4VG9CQzEoc2l6ZV90IHdpZHRoLAotICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
ZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAotICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAg
dWludDhfdCAqb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93
UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoLAot
ICAgICAgICAgICAgICAgICAgICAgICBib29sIHB1bmNodGhyb3VnaEFscGhhKQotewotICAgIGZv
ciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6
ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5ICs9IDQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnN0IEVUQzJCbG9jayAqc291cmNlUm93ID0KLSAgICAgICAgICAgICAgICBPZmZzZXREYXRhUG9p
bnRlcjxFVEMyQmxvY2s+KGlucHV0LCB5IC8gNCwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0
aFBpdGNoKTsKLSAgICAgICAgICAgIHVpbnQ4X3QgKmRlc3RSb3cgPQotICAgICAgICAgICAgICAg
IE9mZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+KG91dHB1dCwgeSAvIDQsIHosIG91dHB1dFJvd1Bp
dGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKLQotICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7
IHggPCB3aWR0aDsgeCArPSA0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnN0
IEVUQzJCbG9jayAqc291cmNlQmxvY2sgPSBzb3VyY2VSb3cgKyAoeCAvIDQpOwotICAgICAgICAg
ICAgICAgIHVpbnQ4X3QgKmRlc3RQaXhlbHMgICAgICAgICAgPSBkZXN0Um93ICsgKHggKiAyKTsK
LQotICAgICAgICAgICAgICAgIHNvdXJjZUJsb2NrLT50cmFuc2NvZGVBc0JDMShkZXN0UGl4ZWxz
LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBEZWZhdWx0RVRDQWxwaGFWYWx1ZXMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1bmNodGhyb3VnaEFscGhhKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBMb2FkRVRDMlJHQkE4VG9S
R0JBOChzaXplX3Qgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWln
aHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90
ICpvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRj
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3JnYikKLXsKLSAgICB1aW50OF90IGRlY29k
ZWRBbHBoYVZhbHVlc1s0XVs0XTsKLQotICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7
IHorKykKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5ICs9
IDQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IEVUQzJCbG9jayAqc291cmNlUm93ID0K
LSAgICAgICAgICAgICAgICBPZmZzZXREYXRhUG9pbnRlcjxFVEMyQmxvY2s+KGlucHV0LCB5IC8g
NCwgeiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKLSAgICAgICAgICAgIHVpbnQ4
X3QgKmRlc3RSb3cgPQotICAgICAgICAgICAgICAgIE9mZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+
KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOwotCi0gICAg
ICAgICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4ICs9IDQpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgY29uc3QgRVRDMkJsb2NrICpzb3VyY2VCbG9ja0FscGhhID0g
c291cmNlUm93ICsgKHggLyAyKTsKLSAgICAgICAgICAgICAgICBzb3VyY2VCbG9ja0FscGhhLT5k
ZWNvZGVBc1NpbmdsZUNoYW5uZWwoCi0gICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCAqPihkZWNvZGVkQWxwaGFWYWx1ZXMpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCAx
LCA0LAotICAgICAgICAgICAgICAgICAgICBmYWxzZSk7Ci0KLSAgICAgICAgICAgICAgICB1aW50
OF90ICpkZXN0UGl4ZWxzICAgICAgICAgICAgID0gZGVzdFJvdyArICh4ICogNCk7Ci0gICAgICAg
ICAgICAgICAgY29uc3QgRVRDMkJsb2NrICpzb3VyY2VCbG9ja1JHQiA9IHNvdXJjZUJsb2NrQWxw
aGEgKyAxOwotICAgICAgICAgICAgICAgIHNvdXJjZUJsb2NrUkdCLT5kZWNvZGVBc1JHQihkZXN0
UGl4ZWxzLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBvdXRwdXRSb3dQaXRjaCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlZEFscGhhVmFsdWVzLCBmYWxz
ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLX0gIC8vIGFub255bW91
cyBuYW1lc3BhY2UKLQotdm9pZCBMb2FkRVRDMVJHQjhUb1JHQkE4KHNpemVfdCB3aWR0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50
OF90ICppbnB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRj
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCi17Ci0gICAgTG9hZEVUQzJSR0I4VG9SR0JBOCh3aWR0
aCwgaGVpZ2h0LCBkZXB0aCwgaW5wdXQsIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCwg
b3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERl
cHRoUGl0Y2gsIGZhbHNlKTsKLX0KLQotdm9pZCBMb2FkRVRDMVJHQjhUb0JDMShzaXplX3Qgd2lk
dGgsCi0gICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlu
dDhfdCAqaW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNo
LAotICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAg
ICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91
dHB1dERlcHRoUGl0Y2gpCi17Ci0gICAgTG9hZEVUQzJSR0I4VG9CQzEod2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGlucHV0LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gsIG91dHB1dCwKLSAg
ICAgICAgICAgICAgICAgICAgICBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCwgZmFs
c2UpOwotfQotCi12b2lkIExvYWRFQUNSMTFUb1I4KHNpemVfdCB3aWR0aCwKLSAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRo
LAotICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKLSAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgIHNpemVf
dCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwK
LSAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAotICAgICAgICAgICAg
ICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKLXsKLSAgICBMb2FkUjExRUFDVG9SOCh3
aWR0aCwgaGVpZ2h0LCBkZXB0aCwgaW5wdXQsIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRj
aCwgb3V0cHV0LAotICAgICAgICAgICAgICAgICAgIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0
aFBpdGNoLCBmYWxzZSk7Ci19Ci0KLXZvaWQgTG9hZEVBQ1IxMVNUb1I4KHNpemVfdCB3aWR0aCwK
LSAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1
dCwKLSAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAotICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAg
IHVpbnQ4X3QgKm91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQ
aXRjaCwKLSAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQotewot
ICAgIExvYWRSMTFFQUNUb1I4KHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBpbnB1dCwgaW5wdXRSb3dQ
aXRjaCwgaW5wdXREZXB0aFBpdGNoLCBvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgb3V0cHV0
Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gsIHRydWUpOwotfQotCi12b2lkIExvYWRFQUNSRzEx
VG9SRzgoc2l6ZV90IHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQs
Ci0gICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAotICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBp
bnB1dFJvd1BpdGNoLAotICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0
Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAotICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKLXsKLSAgICBMb2FkUkcxMUVBQ1RvUkc4KHdpZHRoLCBo
ZWlnaHQsIGRlcHRoLCBpbnB1dCwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoLCBvdXRw
dXQsCi0gICAgICAgICAgICAgICAgICAgICBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRj
aCwgZmFsc2UpOwotfQotCi12b2lkIExvYWRFQUNSRzExU1RvUkc4KHNpemVfdCB3aWR0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpp
bnB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCi0gICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IG91dHB1dFJvd1BpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVw
dGhQaXRjaCkKLXsKLSAgICBMb2FkUkcxMUVBQ1RvUkc4KHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBp
bnB1dCwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoLCBvdXRwdXQsCi0gICAgICAgICAg
ICAgICAgICAgICBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCwgdHJ1ZSk7Ci19Ci0K
LXZvaWQgTG9hZEVUQzJSR0I4VG9SR0JBOChzaXplX3Qgd2lkdGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
ZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50OF90ICpvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IG91dHB1dFJvd1BpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRE
ZXB0aFBpdGNoKQotewotICAgIExvYWRFVEMyUkdCOFRvUkdCQTgod2lkdGgsIGhlaWdodCwgZGVw
dGgsIGlucHV0LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gsIG91dHB1dCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoLCBmYWxz
ZSk7Ci19Ci0KLXZvaWQgTG9hZEVUQzJTUkdCOFRvUkdCQTgoc2l6ZV90IHdpZHRoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4
X3QgKmlucHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRj
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQotewotICAgIExvYWRFVEMyUkdCOFRvUkdCQTgo
d2lkdGgsIGhlaWdodCwgZGVwdGgsIGlucHV0LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0
Y2gsIG91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFJvd1BpdGNoLCBvdXRw
dXREZXB0aFBpdGNoLCBmYWxzZSk7Ci19Ci0KLXZvaWQgTG9hZEVUQzJSR0I4QTFUb1JHQkE4KHNp
emVfdCB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qg
Km91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRj
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQot
ewotICAgIExvYWRFVEMyUkdCOFRvUkdCQTgod2lkdGgsIGhlaWdodCwgZGVwdGgsIGlucHV0LCBp
bnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gsIG91dHB1dCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoLCB0cnVlKTsKLX0KLQotdm9p
ZCBMb2FkRVRDMlNSR0I4QTFUb1JHQkE4KHNpemVfdCB3aWR0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpp
bnB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCi17Ci0gICAgTG9hZEVUQzJSR0I4VG9S
R0JBOCh3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgaW5wdXQsIGlucHV0Um93UGl0Y2gsIGlucHV0RGVw
dGhQaXRjaCwgb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0Um93UGl0Y2gs
IG91dHB1dERlcHRoUGl0Y2gsIHRydWUpOwotfQotCi12b2lkIExvYWRFVEMyUkdCQThUb1JHQkE4
KHNpemVfdCB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91
dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKLXsKLSAg
ICBMb2FkRVRDMlJHQkE4VG9SR0JBOCh3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgaW5wdXQsIGlucHV0
Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCwgb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoLCBmYWxzZSk7Ci19Ci0KLXZvaWQg
TG9hZEVUQzJTUkdCQThUb1NSR0JBOChzaXplX3Qgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5w
dXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQotewotICAgIExvYWRFVEMyUkdCQThUb1JH
QkE4KHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBpbnB1dCwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0
aFBpdGNoLCBvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0Um93UGl0Y2gs
IG91dHB1dERlcHRoUGl0Y2gsIHRydWUpOwotfQotCi19ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvbG9hZGlt
YWdlX2V0Yy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvbG9hZGltYWdlX2V0Yy5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2xvYWRpbWFn
ZV9ldGMuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDE0MCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0
IChjKSAyMDEzLTIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0v
LwotCi0vLyBsb2FkaW1hZ2VfZXRjLmg6IERlY29kZXMgRVRDIGFuZCBFQUMgZW5jb2RlZCB0ZXh0
dXJlcy4KLQotI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfTE9BRElNQUdFX0VUQ19IXwot
I2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfTE9BRElNQUdFX0VUQ19IXwotCi0jaW5jbHVk
ZSAibGliQU5HTEUvYW5nbGV0eXBlcy5oIgotCi0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0KLW5hbWVz
cGFjZSByeAotewotCi12b2lkIExvYWRFVEMxUkdCOFRvUkdCQTgoc2l6ZV90IHdpZHRoLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4
X3QgKmlucHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNo
LAotICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7Ci0KLXZvaWQgTG9hZEVUQzFSR0I4VG9CQzEoc2l6ZV90
IHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAotICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHVpbnQ4X3QgKmlucHV0LAotICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQ
aXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAotICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBvdXRwdXREZXB0aFBpdGNoKTsKLQotdm9pZCBMb2FkRUFDUjExVG9SOChzaXplX3Qgd2lkdGgs
Ci0gICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAg
IHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQs
Ci0gICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAotICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICB1aW50
OF90ICpvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwK
LSAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOwotCi12b2lkIExv
YWRFQUNSMTFTVG9SOChzaXplX3Qgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
aGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgaW5wdXRSb3dQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRo
UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCi0gICAgICAgICAg
ICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7Ci0KLXZvaWQgTG9hZEVBQ1JHMTFUb1JHOChzaXplX3Qg
d2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKLSAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlu
dDhfdCAqaW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gs
Ci0gICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAg
ICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IG91dHB1dFJvd1BpdGNoLAotICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRE
ZXB0aFBpdGNoKTsKLQotdm9pZCBMb2FkRUFDUkcxMVNUb1JHOChzaXplX3Qgd2lkdGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5w
dXQsCi0gICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAotICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAg
ICAgICAgICB1aW50OF90ICpvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBv
dXRwdXRSb3dQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRo
UGl0Y2gpOwotCi12b2lkIExvYWRFVEMyUkdCOFRvUkdCQTgoc2l6ZV90IHdpZHRoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qg
KmlucHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgb3V0cHV0RGVwdGhQaXRjaCk7Ci0KLXZvaWQgTG9hZEVUQzJTUkdCOFRvUkdCQTgoc2l6ZV90
IHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgaW5wdXRSb3dQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0
RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKLQotdm9pZCBMb2Fk
RVRDMlJHQjhBMVRvUkdCQTgoc2l6ZV90IHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IG91dHB1dFJvd1BpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IG91dHB1dERlcHRoUGl0Y2gpOwotCi12b2lkIExvYWRFVEMyU1JHQjhBMVRvUkdCQTgoc2l6ZV90
IHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhf
dCAqb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQ
aXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRj
aCk7Ci0KLXZvaWQgTG9hZEVUQzJSR0JBOFRvUkdCQTgoc2l6ZV90IHdpZHRoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qg
KmlucHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKLQotdm9pZCBMb2FkRVRDMlNSR0JBOFRvU1JHQkE4
KHNpemVfdCB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQ4X3QgKm91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0
cHV0Um93UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERl
cHRoUGl0Y2gpOwotfQotCi0jZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9MT0FESU1B
R0VfRVRDX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2VuX2FuZ2xlX2Zvcm1hdF90YWJsZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2VuX2FuZ2xlX2Zvcm1hdF90YWJs
ZS5weQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2VuX2FuZ2xlX2Zvcm1hdF90YWJsZS5weQkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDI3MyBAQAorIyEvdXNyL2Jpbi9weXRob24KKyMgQ29weXJpZ2h0IDIwMTYgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIworIyBnZW5fYW5nbGVfZm9ybWF0X3Rh
YmxlLnB5OgorIyAgQ29kZSBnZW5lcmF0aW9uIGZvciBBTkdMRSBmb3JtYXQgbWFwLgorIworCitp
bXBvcnQgYW5nbGVfZm9ybWF0Citmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRlCitpbXBvcnQganNv
bgoraW1wb3J0IG1hdGgKK2ltcG9ydCBwcHJpbnQKK2ltcG9ydCByZQoraW1wb3J0IHN5cworCit0
ZW1wbGF0ZV9hdXRvZ2VuX2ggPSAiIiIvLyBHRU5FUkFURUQgRklMRSAtIERPIE5PVCBFRElULgor
Ly8gR2VuZXJhdGVkIGJ5IGdlbl9hbmdsZV9mb3JtYXRfdGFibGUucHkgdXNpbmcgZGF0YSBmcm9t
IGFuZ2xlX2Zvcm1hdF9kYXRhLmpzb24KKy8vCisvLyBDb3B5cmlnaHQge2NvcHlyaWdodF95ZWFy
fSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBBTkdMRSBm
b3JtYXQgZW51bWVyYXRpb24uCisKK25hbWVzcGFjZSBhbmdsZQore3sKKworZW51bSBjbGFzcyBG
b3JtYXQ6OklECit7ewore2FuZ2xlX2Zvcm1hdF9lbnVtfQorfX07CisKK319ICAvLyBuYW1lc3Bh
Y2UgYW5nbGUKKyIiIgorCit0ZW1wbGF0ZV9hdXRvZ2VuX2NwcCA9ICIiIi8vIEdFTkVSQVRFRCBG
SUxFIC0gRE8gTk9UIEVESVQuCisvLyBHZW5lcmF0ZWQgYnkgZ2VuX2FuZ2xlX2Zvcm1hdF90YWJs
ZS5weSB1c2luZyBkYXRhIGZyb20gYW5nbGVfZm9ybWF0X2RhdGEuanNvbgorLy8KKy8vIENvcHly
aWdodCB7Y29weXJpZ2h0X3llYXJ9IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgorLy8KKy8vIEFOR0xFIEZvcm1hdCB0YWJsZToKKy8vICAgUXVlcmllcyBmb3IgdHlwZWQg
Zm9ybWF0IGluZm9ybWF0aW9uIGZyb20gdGhlIEFOR0xFIGZvcm1hdCBlbnVtLgorCisjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvRm9ybWF0LmgiCisKKyNpbmNsdWRlICJpbWFnZV91dGlsL2Nv
cHlpbWFnZS5oIgorI2luY2x1ZGUgImltYWdlX3V0aWwvZ2VuZXJhdGVtaXAuaCIKKyNpbmNsdWRl
ICJpbWFnZV91dGlsL2xvYWRpbWFnZS5oIgorCituYW1lc3BhY2UgYW5nbGUKK3t7CisKKy8vIHN0
YXRpYworY29uc3QgRm9ybWF0ICZGb3JtYXQ6OkdldChJRCBpZCkKK3t7CisgICAgLy8gY2xhbmct
Zm9ybWF0IG9mZgorICAgIHN3aXRjaCAoaWQpCisgICAge3sKK3thbmdsZV9mb3JtYXRfaW5mb19j
YXNlc30KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICB9fQorICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorCisgICAgc3Rh
dGljIGNvbnN0IEZvcm1hdCBub25lSW5mbyhJRDo6Tk9ORSwgR0xfTk9ORSwgR0xfTk9ORSwgbnVs
bHB0ciwgbnVsbHB0ciwgR0xfTk9ORSwgMCwgMCwgMCwgMCwgMCwgMCk7CisgICAgcmV0dXJuIG5v
bmVJbmZvOworfX0KKworfX0gIC8vIG5hbWVzcGFjZSBhbmdsZQorIiIiCisKK2RlZiBnZXRfY2hh
bm5lbF9zdHJ1Y3QoYW5nbGVfZm9ybWF0KToKKyAgICBpZiAnYml0cycgbm90IGluIGFuZ2xlX2Zv
cm1hdCBvciBhbmdsZV9mb3JtYXRbJ2JpdHMnXSBpcyBOb25lOgorICAgICAgICByZXR1cm4gTm9u
ZQorICAgIGlmICdCTE9DSycgaW4gYW5nbGVfZm9ybWF0WydpZCddOgorICAgICAgICByZXR1cm4g
Tm9uZQorICAgIGJpdHMgPSBhbmdsZV9mb3JtYXRbJ2JpdHMnXQorICAgIGlmICdEJyBpbiBiaXRz
IG9yICdTJyBpbiBiaXRzOgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgaWYgJ2NoYW5uZWxT
dHJ1Y3QnIGluIGFuZ2xlX2Zvcm1hdDoKKyAgICAgICAgcmV0dXJuIGFuZ2xlX2Zvcm1hdFsnY2hh
bm5lbFN0cnVjdCddCisKKyAgICBzdHJ1Y3RfbmFtZSA9ICcnCisgICAgZm9yIGNoYW5uZWwgaW4g
YW5nbGVfZm9ybWF0WydjaGFubmVscyddOgorICAgICAgICBpZiBjaGFubmVsID09ICdyJzoKKyAg
ICAgICAgICAgIHN0cnVjdF9uYW1lICs9ICdSe30nLmZvcm1hdChiaXRzWydSJ10pCisgICAgICAg
IGlmIGNoYW5uZWwgPT0gJ2cnOgorICAgICAgICAgICAgc3RydWN0X25hbWUgKz0gJ0d7fScuZm9y
bWF0KGJpdHNbJ0cnXSkKKyAgICAgICAgaWYgY2hhbm5lbCA9PSAnYic6CisgICAgICAgICAgICBz
dHJ1Y3RfbmFtZSArPSAnQnt9Jy5mb3JtYXQoYml0c1snQiddKQorICAgICAgICBpZiBjaGFubmVs
ID09ICdhJzoKKyAgICAgICAgICAgIHN0cnVjdF9uYW1lICs9ICdBe30nLmZvcm1hdChiaXRzWydB
J10pCisgICAgICAgIGlmIGNoYW5uZWwgPT0gJ2wnOgorICAgICAgICAgICAgc3RydWN0X25hbWUg
Kz0gJ0x7fScuZm9ybWF0KGJpdHNbJ0wnXSkKKyAgICBpZiBhbmdsZV9mb3JtYXRbJ2NvbXBvbmVu
dFR5cGUnXSA9PSAnZmxvYXQnOgorICAgICAgICBzdHJ1Y3RfbmFtZSArPSAnRicKKyAgICBpZiBh
bmdsZV9mb3JtYXRbJ2NvbXBvbmVudFR5cGUnXSA9PSAnaW50JyBvciBhbmdsZV9mb3JtYXRbJ2Nv
bXBvbmVudFR5cGUnXSA9PSAnc25vcm0nOgorICAgICAgICBzdHJ1Y3RfbmFtZSArPSAnUycKKyAg
ICByZXR1cm4gc3RydWN0X25hbWUKKworZGVmIGdldF9taXBfZ2VuZXJhdGlvbl9mdW5jdGlvbihh
bmdsZV9mb3JtYXQpOgorICAgIGNoYW5uZWxfc3RydWN0ID0gZ2V0X2NoYW5uZWxfc3RydWN0KGFu
Z2xlX2Zvcm1hdCkKKyAgICBpZiBjaGFubmVsX3N0cnVjdCA9PSBOb25lIG9yICJCTE9DSyIgaW4g
YW5nbGVfZm9ybWF0WyJpZCJdOgorICAgICAgICByZXR1cm4gJ251bGxwdHInCisgICAgcmV0dXJu
ICdHZW5lcmF0ZU1pcDwnICsgY2hhbm5lbF9zdHJ1Y3QgKyAnPicKKworZGVmIGdldF9jb2xvcl9y
ZWFkX2Z1bmN0aW9uKGFuZ2xlX2Zvcm1hdCk6CisgICAgY2hhbm5lbF9zdHJ1Y3QgPSBnZXRfY2hh
bm5lbF9zdHJ1Y3QoYW5nbGVfZm9ybWF0KQorICAgIGlmIGNoYW5uZWxfc3RydWN0ID09IE5vbmU6
CisgICAgICAgIHJldHVybiAnbnVsbHB0cicKKyAgICBjb21wb25lbnRfdHlwZV9tYXAgPSB7Cisg
ICAgICAgICd1aW50JzogJ0dMdWludCcsCisgICAgICAgICdpbnQnOiAnR0xpbnQnLAorICAgICAg
ICAndW5vcm0nOiAnR0xmbG9hdCcsCisgICAgICAgICdzbm9ybSc6ICdHTGZsb2F0JywKKyAgICAg
ICAgJ2Zsb2F0JzogJ0dMZmxvYXQnCisgICAgfQorICAgIHJldHVybiAnUmVhZENvbG9yPCcgKyBj
aGFubmVsX3N0cnVjdCArICcsICcrIGNvbXBvbmVudF90eXBlX21hcFthbmdsZV9mb3JtYXRbJ2Nv
bXBvbmVudFR5cGUnXV0gKyAnPicKKworZm9ybWF0X2VudHJ5X3RlbXBsYXRlID0gIiIie3NwYWNl
fXt7Cit7c3BhY2V9ICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6e2lkfSwKK3tzcGFj
ZX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtnbEludGVybmFsRm9ybWF0fSwKK3tzcGFj
ZX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmYm9JbXBsZW1lbnRhdGlvbkludGVybmFs
Rm9ybWF0fSwKK3tzcGFjZX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttaXBHZW5lcmF0
aW9uRnVuY3Rpb259LAore3NwYWNlfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbG9y
UmVhZEZ1bmN0aW9ufSwKK3tzcGFjZX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtuYW1l
ZENvbXBvbmVudFR5cGV9LAore3NwYWNlfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1J9
LCB7R30sIHtCfSwge0F9LCB7RH0sIHtTfSk7Cit7c3BhY2V9ICAgIHJldHVybiBpbmZvOwore3Nw
YWNlfX19CisiIiIKKworZGVmIGdldF9jb21wb25lbnRfdHlwZShmb3JtYXRfaWQpOgorICAgIGlm
ICJTTk9STSIgaW4gZm9ybWF0X2lkOgorICAgICAgICByZXR1cm4gInNub3JtIgorICAgIGVsaWYg
IlVOT1JNIiBpbiBmb3JtYXRfaWQ6CisgICAgICAgIHJldHVybiAidW5vcm0iCisgICAgZWxpZiAi
RkxPQVQiIGluIGZvcm1hdF9pZDoKKyAgICAgICAgcmV0dXJuICJmbG9hdCIKKyAgICBlbGlmICJV
SU5UIiBpbiBmb3JtYXRfaWQ6CisgICAgICAgIHJldHVybiAidWludCIKKyAgICBlbGlmICJTSU5U
IiBpbiBmb3JtYXRfaWQ6CisgICAgICAgIHJldHVybiAiaW50IgorICAgIGVsaWYgZm9ybWF0X2lk
ID09ICJOT05FIjoKKyAgICAgICAgcmV0dXJuICJub25lIgorICAgIGVsaWYgIlNSR0IiIGluIGZv
cm1hdF9pZDoKKyAgICAgICAgcmV0dXJuICJ1bm9ybSIKKyAgICBlbHNlOgorICAgICAgICByYWlz
ZSBWYWx1ZUVycm9yKCJVbmtub3duIGNvbXBvbmVudCB0eXBlIGZvciAiICsgZm9ybWF0X2lkKQor
CitkZWYgZ2V0X2NoYW5uZWxfdG9rZW5zKGZvcm1hdF9pZCk6CisgICAgciA9IHJlLmNvbXBpbGUo
cicoW0FCREdMUlNdW1xkXSspJykKKyAgICByZXR1cm4gZmlsdGVyKHIubWF0Y2gsIHIuc3BsaXQo
Zm9ybWF0X2lkKSkKKworZGVmIGdldF9jaGFubmVscyhmb3JtYXRfaWQpOgorICAgIGNoYW5uZWxz
ID0gJycKKyAgICB0b2tlbnMgPSBnZXRfY2hhbm5lbF90b2tlbnMoZm9ybWF0X2lkKQorICAgIGlm
IGxlbih0b2tlbnMpID09IDA6CisgICAgICAgIHJldHVybiBOb25lCisgICAgZm9yIHRva2VuIGlu
IHRva2VuczoKKyAgICAgICAgY2hhbm5lbHMgKz0gdG9rZW5bMF0ubG93ZXIoKQorCisgICAgcmV0
dXJuIGNoYW5uZWxzCisKK2RlZiBnZXRfYml0cyhmb3JtYXRfaWQpOgorICAgIGJpdHMgPSB7fQor
ICAgIHRva2VucyA9IGdldF9jaGFubmVsX3Rva2Vucyhmb3JtYXRfaWQpCisgICAgaWYgbGVuKHRv
a2VucykgPT0gMDoKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBmb3IgdG9rZW4gaW4gdG9rZW5z
OgorICAgICAgICBiaXRzW3Rva2VuWzBdXSA9IGludCh0b2tlblsxOl0pCisgICAgcmV0dXJuIGJp
dHMKKworZGVmIGdldF9uYW1lZF9jb21wb25lbnRfdHlwZShjb21wb25lbnRfdHlwZSk6CisgICAg
aWYgY29tcG9uZW50X3R5cGUgPT0gInNub3JtIjoKKyAgICAgICAgcmV0dXJuICJHTF9TSUdORURf
Tk9STUFMSVpFRCIKKyAgICBlbGlmIGNvbXBvbmVudF90eXBlID09ICJ1bm9ybSI6CisgICAgICAg
IHJldHVybiAiR0xfVU5TSUdORURfTk9STUFMSVpFRCIKKyAgICBlbGlmIGNvbXBvbmVudF90eXBl
ID09ICJmbG9hdCI6CisgICAgICAgIHJldHVybiAiR0xfRkxPQVQiCisgICAgZWxpZiBjb21wb25l
bnRfdHlwZSA9PSAidWludCI6CisgICAgICAgIHJldHVybiAiR0xfVU5TSUdORURfSU5UIgorICAg
IGVsaWYgY29tcG9uZW50X3R5cGUgPT0gImludCI6CisgICAgICAgIHJldHVybiAiR0xfSU5UIgor
ICAgIGVsaWYgY29tcG9uZW50X3R5cGUgPT0gIm5vbmUiOgorICAgICAgICByZXR1cm4gIkdMX05P
TkUiCisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVW5rbm93biBjb21wb25l
bnQgdHlwZSBmb3IgIiArIGNvbXBvbmVudF90eXBlKQorCitkZWYganNvbl90b190YWJsZV9kYXRh
KGZvcm1hdF9pZCwganNvbiwgYW5nbGVfdG9fZ2wpOgorCisgICAgdGFibGVfZGF0YSA9ICIiCisK
KyAgICBwYXJzZWQgPSB7CisgICAgICAgICJzcGFjZSI6ICIgICAgICAgICIsCisgICAgICAgICJp
ZCI6IGZvcm1hdF9pZCwKKyAgICB9CisKKyAgICBmb3IgaywgdiBpbiBqc29uLml0ZXJpdGVtcygp
OgorICAgICAgICBwYXJzZWRba10gPSB2CisKKyAgICBpZiAiZ2xJbnRlcm5hbEZvcm1hdCIgbm90
IGluIHBhcnNlZDoKKyAgICAgICAgcGFyc2VkWyJnbEludGVybmFsRm9ybWF0Il0gPSBhbmdsZV90
b19nbFtmb3JtYXRfaWRdCisKKyAgICBpZiAiZmJvSW1wbGVtZW50YXRpb25JbnRlcm5hbEZvcm1h
dCIgbm90IGluIHBhcnNlZDoKKyAgICAgICAgcGFyc2VkWyJmYm9JbXBsZW1lbnRhdGlvbkludGVy
bmFsRm9ybWF0Il0gPSBwYXJzZWRbImdsSW50ZXJuYWxGb3JtYXQiXQorCisgICAgaWYgImNvbXBv
bmVudFR5cGUiIG5vdCBpbiBwYXJzZWQ6CisgICAgICAgIHBhcnNlZFsiY29tcG9uZW50VHlwZSJd
ID0gZ2V0X2NvbXBvbmVudF90eXBlKGZvcm1hdF9pZCkKKworICAgIGlmICJjaGFubmVscyIgbm90
IGluIHBhcnNlZDoKKyAgICAgICAgcGFyc2VkWyJjaGFubmVscyJdID0gZ2V0X2NoYW5uZWxzKGZv
cm1hdF9pZCkKKworICAgIGlmICJiaXRzIiBub3QgaW4gcGFyc2VkOgorICAgICAgICBwYXJzZWRb
ImJpdHMiXSA9IGdldF9iaXRzKGZvcm1hdF9pZCkKKworICAgICMgRGVyaXZlZCB2YWx1ZXMuCisg
ICAgcGFyc2VkWyJtaXBHZW5lcmF0aW9uRnVuY3Rpb24iXSA9IGdldF9taXBfZ2VuZXJhdGlvbl9m
dW5jdGlvbihwYXJzZWQpCisgICAgcGFyc2VkWyJjb2xvclJlYWRGdW5jdGlvbiJdID0gZ2V0X2Nv
bG9yX3JlYWRfZnVuY3Rpb24ocGFyc2VkKQorCisgICAgZm9yIGNoYW5uZWwgaW4gIkFCREdMUlMi
OgorICAgICAgICBpZiBwYXJzZWRbImJpdHMiXSAhPSBOb25lIGFuZCBjaGFubmVsIGluIHBhcnNl
ZFsiYml0cyJdOgorICAgICAgICAgICAgcGFyc2VkW2NoYW5uZWxdID0gcGFyc2VkWyJiaXRzIl1b
Y2hhbm5lbF0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBhcnNlZFtjaGFubmVsXSA9ICIw
IgorCisgICAgcGFyc2VkWyJuYW1lZENvbXBvbmVudFR5cGUiXSA9IGdldF9uYW1lZF9jb21wb25l
bnRfdHlwZShwYXJzZWRbImNvbXBvbmVudFR5cGUiXSkKKworICAgIHJldHVybiBmb3JtYXRfZW50
cnlfdGVtcGxhdGUuZm9ybWF0KCoqcGFyc2VkKQorCitkZWYgcGFyc2VfanNvbl9pbnRvX2FuZ2xl
X2Zvcm1hdF9zd2l0Y2hfc3RyaW5nKGFsbF9hbmdsZSwganNvbl9kYXRhLCBhbmdsZV90b19nbCk6
CisgICAgdGFibGVfZGF0YSA9ICcnCisgICAgZm9yIGZvcm1hdF9pZCBpbiBzb3J0ZWQoYWxsX2Fu
Z2xlKToKKyAgICAgICAgZm9ybWF0X2luZm8gPSBqc29uX2RhdGFbZm9ybWF0X2lkXSBpZiBmb3Jt
YXRfaWQgaW4ganNvbl9kYXRhIGVsc2Uge30KKyAgICAgICAgdGFibGVfZGF0YSArPSAnICAgICAg
ICBjYXNlIElEOjonICsgZm9ybWF0X2lkICsgJzpcbicKKyAgICAgICAgdGFibGVfZGF0YSArPSBq
c29uX3RvX3RhYmxlX2RhdGEoZm9ybWF0X2lkLCBmb3JtYXRfaW5mbywgYW5nbGVfdG9fZ2wpCisK
KyAgICByZXR1cm4gdGFibGVfZGF0YQorCitkZWYgZ2VuX2VudW1fc3RyaW5nKGFsbF9hbmdsZSk6
CisgICAgZW51bV9kYXRhID0gJyAgICBOT05FJworICAgIGZvciBmb3JtYXRfaWQgaW4gc29ydGVk
KGFsbF9hbmdsZSk6CisgICAgICAgIGlmIGZvcm1hdF9pZCA9PSAnTk9ORSc6CisgICAgICAgICAg
ICBjb250aW51ZQorICAgICAgICBlbnVtX2RhdGEgKz0gJyxcbiAgICAnICsgZm9ybWF0X2lkCisg
ICAgcmV0dXJuIGVudW1fZGF0YQorCitnbF90b19hbmdsZSA9IGFuZ2xlX2Zvcm1hdC5sb2FkX2Zv
cndhcmRfdGFibGUoJ2FuZ2xlX2Zvcm1hdF9tYXAuanNvbicpCithbmdsZV90b19nbCA9IGFuZ2xl
X2Zvcm1hdC5sb2FkX2ludmVyc2VfdGFibGUoJ2FuZ2xlX2Zvcm1hdF9tYXAuanNvbicpCitqc29u
X2RhdGEgPSBhbmdsZV9mb3JtYXQubG9hZF9qc29uKCdhbmdsZV9mb3JtYXRfZGF0YS5qc29uJykK
K2FsbF9hbmdsZSA9IGFuZ2xlX3RvX2dsLmtleXMoKQorCithbmdsZV9mb3JtYXRfY2FzZXMgPSBw
YXJzZV9qc29uX2ludG9fYW5nbGVfZm9ybWF0X3N3aXRjaF9zdHJpbmcoCisgICAgYWxsX2FuZ2xl
LCBqc29uX2RhdGEsIGFuZ2xlX3RvX2dsKQorb3V0cHV0X2NwcCA9IHRlbXBsYXRlX2F1dG9nZW5f
Y3BwLmZvcm1hdCgKKyAgICBjb3B5cmlnaHRfeWVhcj1kYXRlLnRvZGF5KCkueWVhciwKKyAgICBh
bmdsZV9mb3JtYXRfaW5mb19jYXNlcz1hbmdsZV9mb3JtYXRfY2FzZXMpCit3aXRoIG9wZW4oJ0Zv
cm1hdF9hdXRvZ2VuLmNwcCcsICd3dCcpIGFzIG91dF9maWxlOgorICAgIG91dF9maWxlLndyaXRl
KG91dHB1dF9jcHApCisgICAgb3V0X2ZpbGUuY2xvc2UoKQorCitlbnVtX2RhdGEgPSBnZW5fZW51
bV9zdHJpbmcoYWxsX2FuZ2xlKQorb3V0cHV0X2ggPSB0ZW1wbGF0ZV9hdXRvZ2VuX2guZm9ybWF0
KAorICAgIGNvcHlyaWdodF95ZWFyPWRhdGUudG9kYXkoKS55ZWFyLAorICAgIGFuZ2xlX2Zvcm1h
dF9lbnVtPWVudW1fZGF0YSkKK3dpdGggb3BlbignRm9ybWF0X0lEX2F1dG9nZW4uaW5sJywgJ3d0
JykgYXMgb3V0X2ZpbGU6CisgICAgb3V0X2ZpbGUud3JpdGUob3V0cHV0X2gpCisgICAgb3V0X2Zp
bGUuY2xvc2UoKQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dlbl9sb2FkX2Z1bmN0aW9uc190YWJsZS5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2VuX2xvYWRfZnVuY3Rpb25z
X3RhYmxlLnB5CShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nZW5fbG9hZF9mdW5jdGlvbnNfdGFibGUucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxOTEgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisjIENvcHlyaWdodCAyMDE1
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyMKKyMgZ2VuX2xvYWRfZnVu
Y3Rpb25zX3RhYmxlLnB5OgorIyAgQ29kZSBnZW5lcmF0aW9uIGZvciB0aGUgbG9hZCBmdW5jdGlv
biB0YWJsZXMgdXNlZCBmb3IgdGV4dHVyZSBmb3JtYXRzCisjCisKK2ltcG9ydCBqc29uLCBzeXMK
K2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGUKKworc3lzLnBhdGguYXBwZW5kKCcuLi8uLicpCitp
bXBvcnQgYW5nbGVfZm9ybWF0CisKK3RlbXBsYXRlID0gIiIiLy8gR0VORVJBVEVEIEZJTEUgLSBE
TyBOT1QgRURJVC4KKy8vIEdlbmVyYXRlZCBieSBnZW5fbG9hZF9mdW5jdGlvbnNfdGFibGUucHkg
dXNpbmcgZGF0YSBmcm9tIGxvYWRfZnVuY3Rpb25zX2RhdGEuanNvbgorLy8KKy8vIENvcHlyaWdo
dCB7Y29weXJpZ2h0X3llYXJ9IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKy8vIGxvYWRfZnVuY3Rpb25zX3RhYmxlOgorLy8gICBDb250YWlucyB0aGUgR2V0TG9h
ZEZ1bmN0aW9uc01hcCBmb3IgdGV4dHVyZV9mb3JtYXRfdXRpbC5oCisvLworCisjaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvbG9hZF9mdW5jdGlvbnNfdGFibGUuaCIKKworI2luY2x1ZGUgImlt
YWdlX3V0aWwvY29weWltYWdlLmgiCisjaW5jbHVkZSAiaW1hZ2VfdXRpbC9nZW5lcmF0ZW1pcC5o
IgorI2luY2x1ZGUgImltYWdlX3V0aWwvbG9hZGltYWdlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBy
eDsKKworbmFtZXNwYWNlIGFuZ2xlCit7eworCituYW1lc3BhY2UKK3t7CisKKy8vIEVTMyBpbWFn
ZSBsb2FkaW5nIGZ1bmN0aW9ucyB2YXJ5IGJhc2VkIG9uOgorLy8gICAgLSB0aGUgR0wgaW50ZXJu
YWwgZm9ybWF0IChzdXBwbGllZCB0byBnbFRleCpJbWFnZSpEKQorLy8gICAgLSB0aGUgR0wgZGF0
YSB0eXBlIGdpdmVuIChzdXBwbGllZCB0byBnbFRleCpJbWFnZSpEKQorLy8gICAgLSB0aGUgdGFy
Z2V0IERYR0lfRk9STUFUIHRoYXQgdGhlIGltYWdlIHdpbGwgYmUgbG9hZGVkIGludG8gKHdoaWNo
IGlzIGNob3NlbiBiYXNlZCBvbiB0aGUgRDNECisvLyAgICBkZXZpY2UncyBjYXBhYmlsaXRpZXMp
CisvLyBUaGlzIG1hcCB0eXBlIGRldGVybWluZXMgd2hpY2ggbG9hZGluZyBmdW5jdGlvbiB0byB1
c2UsIGJhc2VkIG9uIHRoZXNlIHRocmVlIHBhcmFtZXRlcnMuCisvLyBTb3VyY2UgZm9ybWF0cyBh
bmQgdHlwZXMgYXJlIHRha2VuIGZyb20gVGFibGVzIDMuMiBhbmQgMy4zIG9mIHRoZSBFUyAzIHNw
ZWMuCit2b2lkIFVuaW1wbGVtZW50ZWRMb2FkRnVuY3Rpb24oc2l6ZV90IHdpZHRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRw
dXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0
RGVwdGhQaXRjaCkKK3t7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfX0KKwordm9pZCBVbnJlYWNo
YWJsZUxvYWRGdW5jdGlvbihzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBk
ZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7eworICAgIFVOUkVBQ0hBQkxFKCk7
Cit9fQorCit7bG9hZF9mdW5jdGlvbnNfZGF0YX19fSAgLy8gbmFtZXNwYWNlCisKK0xvYWRGdW5j
dGlvbk1hcCBHZXRMb2FkRnVuY3Rpb25zTWFwKEdMZW51bSB7aW50ZXJuYWxfZm9ybWF0fSwgRm9y
bWF0OjpJRCB7YW5nbGVfZm9ybWF0fSkKK3t7CisgICAgLy8gY2xhbmctZm9ybWF0IG9mZgorICAg
IHN3aXRjaCAoe2ludGVybmFsX2Zvcm1hdH0pCisgICAge3sKK3tzd2l0Y2hfZGF0YX0KKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAge3sKKyAgICAgICAgICAgIHN0YXRpYyBMb2FkRnVuY3Rpb25N
YXAgZW1wdHlMb2FkRnVuY3Rpb25zTWFwOworICAgICAgICAgICAgcmV0dXJuIGVtcHR5TG9hZEZ1
bmN0aW9uc01hcDsKKyAgICAgICAgfX0KKyAgICB9fQorICAgIC8vIGNsYW5nLWZvcm1hdCBvbgor
Cit9fSAgLy8gR2V0TG9hZEZ1bmN0aW9uc01hcAorCit9fSAgLy8gbmFtZXNwYWNlIGFuZ2xlCisi
IiIKKworaW50ZXJuYWxfZm9ybWF0X3BhcmFtID0gJ2ludGVybmFsRm9ybWF0JworYW5nbGVfZm9y
bWF0X3BhcmFtID0gJ2FuZ2xlRm9ybWF0JworYW5nbGVfZm9ybWF0X3Vua25vd24gPSAnTk9ORScK
KworZGVmIGxvYWRfZnVuY3Rpb25zX25hbWUoaW50ZXJuYWxfZm9ybWF0LCBhbmdsZV9mb3JtYXQp
OgorICAgIHJldHVybiBpbnRlcm5hbF9mb3JtYXRbMzpdICsgIl90b18iICsgYW5nbGVfZm9ybWF0
CisKK2RlZiB1bmtub3duX2Z1bmNfbmFtZShpbnRlcm5hbF9mb3JtYXQpOgorICAgIHJldHVybiBs
b2FkX2Z1bmN0aW9uc19uYW1lKGludGVybmFsX2Zvcm1hdCwgImRlZmF1bHQiKQorCitkZWYgZ2V0
X2xvYWRfZnVuYyhmdW5jX25hbWUsIHR5cGVfZnVuY3Rpb25zKToKKyAgICBzbmlwcGV0ID0gIkxv
YWRJbWFnZUZ1bmN0aW9uSW5mbyAiICsgZnVuY19uYW1lICsgIihHTGVudW0gdHlwZSlcbiIKKyAg
ICBzbmlwcGV0ICs9ICJ7XG4iCisgICAgc25pcHBldCArPSAiICAgIHN3aXRjaCAodHlwZSlcbiIK
KyAgICBzbmlwcGV0ICs9ICIgICAge1xuIgorICAgIGZvciBnbF90eXBlLCBsb2FkX2Z1bmN0aW9u
IGluIHNvcnRlZCh0eXBlX2Z1bmN0aW9ucy5pdGVyaXRlbXMoKSk6CisgICAgICAgIHNuaXBwZXQg
Kz0gIiAgICAgICAgY2FzZSAiICsgZ2xfdHlwZSArICI6XG4iCisgICAgICAgIHJlcXVpcmVzQ29u
dmVyc2lvbiA9IHN0cignTG9hZFRvTmF0aXZlPCcgbm90IGluIGxvYWRfZnVuY3Rpb24pLmxvd2Vy
KCkKKyAgICAgICAgc25pcHBldCArPSAiICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0
aW9uSW5mbygiICsgbG9hZF9mdW5jdGlvbiArICIsICIgKyByZXF1aXJlc0NvbnZlcnNpb24gKyAi
KTtcbiIKKyAgICBzbmlwcGV0ICs9ICIgICAgICAgIGRlZmF1bHQ6XG4iCisgICAgc25pcHBldCAr
PSAiICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTtcbiIKKyAgICBzbmlwcGV0ICs9ICIgICAgICAg
ICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9u
LCB0cnVlKTtcbiIKKyAgICBzbmlwcGV0ICs9ICIgICAgfVxuIgorICAgIHNuaXBwZXQgKz0gIn1c
biIKKyAgICBzbmlwcGV0ICs9ICJcbiIKKworICAgIHJldHVybiBzbmlwcGV0CisKK2RlZiBnZXRf
dW5rbm93bl9sb2FkX2Z1bmMoYW5nbGVfdG9fdHlwZV9tYXAsIGludGVybmFsX2Zvcm1hdCk6Cisg
ICAgYXNzZXJ0IGFuZ2xlX2Zvcm1hdF91bmtub3duIGluIGFuZ2xlX3RvX3R5cGVfbWFwCisgICAg
cmV0dXJuIGdldF9sb2FkX2Z1bmModW5rbm93bl9mdW5jX25hbWUoaW50ZXJuYWxfZm9ybWF0KSwg
YW5nbGVfdG9fdHlwZV9tYXBbYW5nbGVfZm9ybWF0X3Vua25vd25dKQorCitkZWYgcGFyc2VfanNv
bihqc29uX2RhdGEpOgorICAgIHRhYmxlX2RhdGEgPSAnJworICAgIGxvYWRfZnVuY3Rpb25zX2Rh
dGEgPSAnJworICAgIGZvciBpbnRlcm5hbF9mb3JtYXQsIGFuZ2xlX3RvX3R5cGVfbWFwIGluIHNv
cnRlZChqc29uX2RhdGEuaXRlcml0ZW1zKCkpOgorCisgICAgICAgIHMgPSAnICAgICAgICAnCisK
KyAgICAgICAgdGFibGVfZGF0YSArPSBzICsgJ2Nhc2UgJyArIGludGVybmFsX2Zvcm1hdCArICc6
XG4nCisKKyAgICAgICAgZG9fc3dpdGNoID0gbGVuKGFuZ2xlX3RvX3R5cGVfbWFwKSA+IDEgb3Ig
YW5nbGVfdG9fdHlwZV9tYXAua2V5cygpWzBdICE9IGFuZ2xlX2Zvcm1hdF91bmtub3duCisKKyAg
ICAgICAgaWYgZG9fc3dpdGNoOgorICAgICAgICAgICAgdGFibGVfZGF0YSArPSBzICsgJ3tcbicK
KyAgICAgICAgICAgIHMgKz0gJyAgICAnCisgICAgICAgICAgICB0YWJsZV9kYXRhICs9IHMgKyAn
c3dpdGNoICgnICsgYW5nbGVfZm9ybWF0X3BhcmFtICsgJylcbicKKyAgICAgICAgICAgIHRhYmxl
X2RhdGEgKz0gcyArICd7XG4nCisgICAgICAgICAgICBzICs9ICcgICAgJworCisgICAgICAgIGZv
ciBhbmdsZV9mb3JtYXQsIHR5cGVfZnVuY3Rpb25zIGluIHNvcnRlZChhbmdsZV90b190eXBlX21h
cC5pdGVyaXRlbXMoKSk6CisKKyAgICAgICAgICAgIGlmIGFuZ2xlX2Zvcm1hdCA9PSBhbmdsZV9m
b3JtYXRfdW5rbm93bjoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBm
dW5jX25hbWUgPSBsb2FkX2Z1bmN0aW9uc19uYW1lKGludGVybmFsX2Zvcm1hdCwgYW5nbGVfZm9y
bWF0KQorCisgICAgICAgICAgICAjIE1haW4gY2FzZSBzdGF0ZW1lbnRzCisgICAgICAgICAgICB0
YWJsZV9kYXRhICs9IHMgKyAnY2FzZSBGb3JtYXQ6OklEOjonICsgYW5nbGVfZm9ybWF0ICsgJzpc
bicKKyAgICAgICAgICAgIHRhYmxlX2RhdGEgKz0gcyArICcgICAgcmV0dXJuICcgKyBmdW5jX25h
bWUgKyAnO1xuJworCisgICAgICAgICAgICBpZiBhbmdsZV9mb3JtYXRfdW5rbm93biBpbiBhbmds
ZV90b190eXBlX21hcDoKKyAgICAgICAgICAgICAgICBmb3IgZ2xfdHlwZSwgbG9hZF9mdW5jdGlv
biBpbiBhbmdsZV90b190eXBlX21hcFthbmdsZV9mb3JtYXRfdW5rbm93bl0uaXRlcml0ZW1zKCk6
CisgICAgICAgICAgICAgICAgICAgIGlmIGdsX3R5cGUgbm90IGluIHR5cGVfZnVuY3Rpb25zOgor
ICAgICAgICAgICAgICAgICAgICAgICAgdHlwZV9mdW5jdGlvbnNbZ2xfdHlwZV0gPSBsb2FkX2Z1
bmN0aW9uCisKKyAgICAgICAgICAgIGxvYWRfZnVuY3Rpb25zX2RhdGEgKz0gZ2V0X2xvYWRfZnVu
YyhmdW5jX25hbWUsIHR5cGVfZnVuY3Rpb25zKQorCisgICAgICAgIGlmIGRvX3N3aXRjaDoKKyAg
ICAgICAgICAgIHRhYmxlX2RhdGEgKz0gcyArICdkZWZhdWx0OlxuJworCisgICAgICAgIGlmIGFu
Z2xlX2Zvcm1hdF91bmtub3duIGluIGFuZ2xlX3RvX3R5cGVfbWFwOgorICAgICAgICAgICAgdGFi
bGVfZGF0YSArPSBzICsgJyAgICByZXR1cm4gJyArIHVua25vd25fZnVuY19uYW1lKGludGVybmFs
X2Zvcm1hdCkgKyAnO1xuJworICAgICAgICAgICAgbG9hZF9mdW5jdGlvbnNfZGF0YSArPSBnZXRf
dW5rbm93bl9sb2FkX2Z1bmMoYW5nbGVfdG9fdHlwZV9tYXAsIGludGVybmFsX2Zvcm1hdCkKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIHRhYmxlX2RhdGEgKz0gcyArICcgICAgYnJlYWs7XG4n
CisKKyAgICAgICAgaWYgZG9fc3dpdGNoOgorICAgICAgICAgICAgcyA9IHNbNDpdCisgICAgICAg
ICAgICB0YWJsZV9kYXRhICs9IHMgKyAnfVxuJworICAgICAgICAgICAgcyA9IHNbNDpdCisgICAg
ICAgICAgICB0YWJsZV9kYXRhICs9IHMgKyAnfVxuJworCisgICAgcmV0dXJuIHRhYmxlX2RhdGEs
IGxvYWRfZnVuY3Rpb25zX2RhdGEKKworanNvbl9kYXRhID0gYW5nbGVfZm9ybWF0LmxvYWRfanNv
bignbG9hZF9mdW5jdGlvbnNfZGF0YS5qc29uJykKKworc3dpdGNoX2RhdGEsIGxvYWRfZnVuY3Rp
b25zX2RhdGEgPSBwYXJzZV9qc29uKGpzb25fZGF0YSkKK291dHB1dCA9IHRlbXBsYXRlLmZvcm1h
dChpbnRlcm5hbF9mb3JtYXQgPSBpbnRlcm5hbF9mb3JtYXRfcGFyYW0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgYW5nbGVfZm9ybWF0ID0gYW5nbGVfZm9ybWF0X3BhcmFtLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIHN3aXRjaF9kYXRhID0gc3dpdGNoX2RhdGEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgbG9hZF9mdW5jdGlvbnNfZGF0YSA9IGxvYWRfZnVuY3Rpb25zX2RhdGEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgY29weXJpZ2h0X3llYXIgPSBkYXRlLnRvZGF5KCkueWVh
cikKKword2l0aCBvcGVuKCdsb2FkX2Z1bmN0aW9uc190YWJsZV9hdXRvZ2VuLmNwcCcsICd3dCcp
IGFzIG91dF9maWxlOgorICAgIG91dF9maWxlLndyaXRlKG91dHB1dCkKKyAgICBvdXRfZmlsZS5j
bG9zZSgpCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2VuZXJhdGVfbmV3X3JlbmRlcmVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nZW5lcmF0ZV9uZXdfcmVuZGVyZXIucHkJ
KHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nZW5lcmF0ZV9uZXdfcmVuZGVyZXIucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwy
NTggKzAsMCBAQAotIyEvdXNyL2Jpbi9weXRob24KLSMKLSMgQ29weXJpZ2h0IChjKSAyMDE1IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKLSMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLSMKLSMgZ2VuZXJhdGVfbmV3X3Jl
bmRlcmVyLnB5OgotIyAgIFV0aWxpdHkgc2NyaXB0IHRvIGdlbmVyYXRlIHN0dWJzIGZvciBhIG5l
dyBSZW5kZXJlciBjbGFzcy4KLSMgICBVc2FnZTogZ2VuZXJhdGVfbmV3X3JlbmRlcmVyLnB5IDxy
ZW5kZXJlciBuYW1lPiA8cmVuZGVyZXIgc3VmZml4PgotIyAgICAgUmVuZGVyZXIgbmFtZSBpcyB0
aGUgZm9sZGVyIGZvciB0aGUgcmVuZGVyZXIgc3ViZGlyZWN0b3J5Ci0jICAgICBSZW5kZXJlciBz
dWZmaXggaXMgdGhlIGFiYnJldmlhdGlvbiB0byBhcHBlbmQgYWZ0ZXIgdGhlIGNsYXNzIG5hbWVz
LgotIwotIyBUaGUgc2NyaXB0IGlzIGZhaXJseSByb2J1c3QgYnV0IG1heSBub3Qgd29yayBmb3Ig
YWxsIG5ldyBtZXRob2RzIG9yCi0jIG90aGVyIHVuZXhwZWN0ZWQgZmVhdHVyZXMuIEl0IGV4cGVj
dHMgdGhhdCBhYnN0cmFjdCBtZXRob2RzIGFyZSBhbGwKLSMgZ3JvdXBlZCBhZnRlciB0aGUgcHVi
bGljIGRlc3RydWN0b3Igb3IgYWZ0ZXIgdGhlIHByaXZhdGUKLSMgRElTQUxMT1dfQ09QWV9BTkRf
QVNTSUdOIG1hY3JvLgotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLWltcG9ydCByZQotaW1wb3J0
IHN0cmluZwotCi1pZiBsZW4oc3lzLmFyZ3YpIDwgMzoKLSAgICBwcmludCgnVXNhZ2U6ICcgKyBz
eXMuYXJndlswXSArICcgPHJlbmRlcmVyIG5hbWU+IDxyZW5kZXJlciBzdWZmaXg+JykKLQotcmVu
ZGVyZXJfbmFtZSA9IHN5cy5hcmd2WzFdCi1yZW5kZXJlcl9zdWZmaXggPSBzeXMuYXJndlsyXQot
Ci0jIGVuc3VyZSBzdWJkaXIgZXhpc3RzCi1pZiBub3Qgb3MucGF0aC5pc2RpcihyZW5kZXJlcl9u
YW1lKToKLSAgICBvcy5ta2RpcihyZW5kZXJlcl9uYW1lKQotCi1pbXBsX2NsYXNzZXMgPSBbCi0g
ICAgJ0J1ZmZlcicsCi0gICAgJ0NvbXBpbGVyJywKLSAgICAnRGlzcGxheScsCi0gICAgJ0ZlbmNl
TlYnLAotICAgICdGZW5jZVN5bmMnLAotICAgICdGcmFtZWJ1ZmZlcicsCi0gICAgJ1Byb2dyYW0n
LAotICAgICdRdWVyeScsCi0gICAgJ1JlbmRlcmJ1ZmZlcicsCi0gICAgJ1JlbmRlcmVyJywKLSAg
ICAnU2hhZGVyJywKLSAgICAnU3VyZmFjZScsCi0gICAgJ1RleHR1cmUnLAotICAgICdUcmFuc2Zv
cm1GZWVkYmFjaycsCi0gICAgJ1ZlcnRleEFycmF5JywKLV0KLQotaF9maWxlX3RlbXBsYXRlID0g
IiIiLy8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgotLy8KLQotLy8gJFR5cGVkSW1wbC5oOiBEZWZpbmVzIHRoZSBjbGFzcyBpbnRlcmZh
Y2UgZm9yICRUeXBlZEltcGwuCi0KLSNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfJHtSZW5kZXJl
ck5hbWVDYXBzfV8ke1R5cGVkSW1wbENhcHN9X0hfCi0jZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVS
XyR7UmVuZGVyZXJOYW1lQ2Fwc31fJHtUeXBlZEltcGxDYXBzfV9IXwotCi0jaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvJEJhc2VJbXBsLmgiCi0KLW5hbWVzcGFjZSByeAotewotCi1jbGFzcyAk
VHlwZWRJbXBsIDogcHVibGljICRCYXNlSW1wbAotewotICBwdWJsaWM6Ci0gICAgJFR5cGVkSW1w
bCgkQ29uc3RydWN0b3JQYXJhbXMpOwotICAgIH4kVHlwZWRJbXBsKCkgb3ZlcnJpZGU7Ci0kSW1w
bE1ldGhvZERlY2xhcmF0aW9ucyRQcml2YXRlSW1wbE1ldGhvZERlY2xhcmF0aW9uc307Ci0KLX0K
LQotI2VuZGlmIC8vIExJQkFOR0xFX1JFTkRFUkVSXyR7UmVuZGVyZXJOYW1lQ2Fwc31fJHtUeXBl
ZEltcGxDYXBzfV9IXwotIiIiCi0KLWNwcF9maWxlX3RlbXBsYXRlID0gIiIiLy8KLS8vIENvcHly
aWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQot
Ly8gJFR5cGVkSW1wbC5jcHA6IEltcGxlbWVudHMgdGhlIGNsYXNzIG1ldGhvZHMgZm9yICRUeXBl
ZEltcGwuCi0KLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci8kUmVuZGVyZXJOYW1lLyRUeXBl
ZEltcGwuaCIKLQotI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgotCi1uYW1lc3BhY2UgcngKLXsK
LQotJFR5cGVkSW1wbDo6JFR5cGVkSW1wbCgkQ29uc3RydWN0b3JQYXJhbXMpCi0gICAgOiAkQmFz
ZUltcGwoJEJhc2VDb250cnVjdG9yQXJncykKLXt9Ci0KLSRUeXBlZEltcGw6On4kVHlwZWRJbXBs
KCkKLXt9Ci0kSW1wbE1ldGhvZERlZmluaXRpb25zCi19Ci0iIiIKLQotZGVmIGdlbmVyYXRlX2lt
cGxfZGVjbGFyYXRpb24oaW1wbF9zdHViKToKLSAgICAjIGVuc3VyZSB0aGUgd3JhcHBlZCBsaW5l
cyBhcmUgYWxpZ25lZCB2ZXJ0aWNhbGx5Ci0gICAgdGVtcCA9IHJlLnN1YihyJ1xuICAgICAgICAn
LCAnXG4nLCBpbXBsX3N0dWIpCi0gICAgcmV0dXJuIHRlbXAgKyAnIG92ZXJyaWRlO1xuJwotCi1k
ZWYgZ2VuZXJhdGVfaW1wbF9kZWZpbml0aW9uKGltcGxfc3R1YiwgdHlwZWRfaW1wbCk6Ci0gICAg
ZnVuY3Rpb25fc2lnbmF0dXJlID0gaW1wbF9zdHViLnN0cmlwKCkKLQotICAgICMgc3RyaXAgY29t
bWVudHMKLSAgICBmdW5jdGlvbl9zaWduYXR1cmUgPSByZS5zdWIocidcL1wvW15cbl0qXG4nLCAn
JywgZnVuY3Rpb25fc2lnbmF0dXJlKS5zdHJpcCgpCi0KLSAgICBwcm9nID0gcmUuY29tcGlsZShy
J14oLitbIFwqXCZdKShbXiBcKFwqXCZdK1woKScpCi0gICAgcmV0dXJuX3ZhbHVlID0gcHJvZy5t
YXRjaChmdW5jdGlvbl9zaWduYXR1cmUpLmdyb3VwKDEpCi0KLSAgICAjIGVuc3VyZSB0aGUgd3Jh
cHBlZCBsaW5lcyBhcmUgYWxpZ25lZCB2ZXJ0aWNhbGx5Ci0gICAgc3BhY2VzID0gJyAnICogbGVu
KHR5cGVkX2ltcGwpCi0gICAgZnVuY3Rpb25fc2lnbmF0dXJlID0gcmUuc3ViKHInXG4gICAgICAg
ICAgJywgJ1xuJyArIHNwYWNlcywgZnVuY3Rpb25fc2lnbmF0dXJlKQotCi0gICAgIyBhZGQgY2xh
c3Mgc2NvcGluZwotICAgIGZ1bmN0aW9uX3NpZ25hdHVyZSA9IHByb2cuc3ViKHInXDEnICsgdHlw
ZWRfaW1wbCArIHInOjpcMicsIGZ1bmN0aW9uX3NpZ25hdHVyZSkKLSAgICBmdW5jdGlvbl9zaWdu
YXR1cmUgKz0gJ1xuJwotCi0gICAgcmV0dXJuX3N0YXRlbWVudCA9ICcnCi0gICAgcmV0dXJuX3R5
cGUgPSByZXR1cm5fdmFsdWUuc3RyaXAoKQotCi0gICAgaWYgcmV0dXJuX3R5cGUgIT0gJ3ZvaWQn
OgotICAgICAgICAjIHNwZWNpYWxpemVkIHJldHVybiB2YWx1ZXMgZm9yIEVycm9ycywgcG9pbnRl
cnMsIGV0YwotICAgICAgICBpZiByZXR1cm5fdHlwZSA9PSAnZ2w6OkVycm9yJzoKLSAgICAgICAg
ICAgIHJldHVybl9zdGF0ZW1lbnQgPSAnICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pO1xuJwotICAgICAgICBlbGlmIHJldHVybl90eXBlID09ICdlZ2w6OkVycm9yJzoK
LSAgICAgICAgICAgIHJldHVybl9zdGF0ZW1lbnQgPSAnICAgIHJldHVybiBlZ2w6OkVycm9yKEVH
TF9CQURfQUNDRVNTKTtcbicKLSAgICAgICAgZWxpZiByZXR1cm5fdHlwZSA9PSAnTGlua1Jlc3Vs
dCc6Ci0gICAgICAgICAgICByZXR1cm5fc3RhdGVtZW50ID0gJyAgICByZXR1cm4gTGlua1Jlc3Vs
dChmYWxzZSwgZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7XG4nCi0gICAgICAgIGVs
aWYgcmUuc2VhcmNoKHInW1wqXCZdJCcsIHJldHVybl90eXBlKToKLSAgICAgICAgICAgIHJldHVy
bl9zdGF0ZW1lbnQgPSAnICAgIHJldHVybiBzdGF0aWNfY2FzdDwnICsgcmV0dXJuX3R5cGUgKyAn
PigwKTtcbicKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybl9zdGF0ZW1lbnQgPSAn
ICAgIHJldHVybiAnICsgcmV0dXJuX3R5cGUgKyAnKCk7XG4nCi0KLSAgICBib2R5ID0gJ3tcbicg
KyAnICAgIFVOSU1QTEVNRU5URUQoKTtcbicgKyByZXR1cm5fc3RhdGVtZW50ICsnfVxuJwotCi0g
ICAgcmV0dXJuICdcbicgKyBmdW5jdGlvbl9zaWduYXR1cmUgKyBib2R5Ci0KLWRlZiBnZXRfY29u
c3RydWN0b3JfYXJncyhjb25zdHJ1Y3Rvcik6Ci0gICAgcGFyYW1zID0gcmUuc2VhcmNoKHInXCgo
LiopXCknLCBjb25zdHJ1Y3RvcikuZ3JvdXAoMSkKLSAgICBhcmdzID0gJywgJy5qb2luKHJlLmZp
bmRhbGwocidbXlx3XT8oXHcrKSg/OlwsfCQpJywgcGFyYW1zKSkKLSAgICByZXR1cm4gcGFyYW1z
LCBhcmdzCi0KLWRlZiBwYXJzZV9pbXBsX2hlYWRlcihiYXNlX2ltcGwpOgotICAgIGltcGxfaF9m
aWxlX3BhdGggPSBiYXNlX2ltcGwgKyAnLmgnCi0gICAgaW1wbF9oX2ZpbGUgPSBvcGVuKGltcGxf
aF9maWxlX3BhdGgsICdyJykKLQotICAgICMgZXh0cmFjdCBpbXBsIHN0dWJzCi0gICAgY29weSA9
IEZhbHNlCi0gICAgY29weV9wcml2YXRlID0gRmFsc2UKLSAgICBpbXBsX3N0dWJzID0gJycKLSAg
ICBwcml2YXRlX2ltcGxfc3R1YnMgPSAnJwotICAgIGNvbnN0cnVjdG9yID0gYmFzZV9pbXBsICsg
JygpIHt9JwotICAgIGZvciBsaW5lIGluIGltcGxfaF9maWxlOgotICAgICAgICBjbGVhbl9saW5l
ID0gbGluZS5zdHJpcCgpCi0KLSAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2gocideKD86ZXhwbGlj
aXQgKT8oJyArIGJhc2VfaW1wbCArIHInXChbXlwpXSpcKSknLCBjbGVhbl9saW5lKTsKLSAgICAg
ICAgaWYgbWF0Y2g6Ci0gICAgICAgICAgICBjb25zdHJ1Y3RvciA9IG1hdGNoLmdyb3VwKDEpCi0K
LSAgICAgICAgIyBiZWdpbiBjYXB0dXJlIHdoZW4gcmVhZGluZyB0aGUgZGVzdHJ1Y3Rvci4KLSAg
ICAgICAgIyBiZWdpbiBjYXB0dXJlIGFsc28gaW4gdGhlIHByaXZhdGUgc2NvcGUgKGEgZmV3IHNw
ZWNpYWwgY2FzZXMpCi0gICAgICAgICMgZW5kIGNhcHR1cmUgd2hlbiB3ZSByZWFjaCBhIG5vbi12
aXJ0dWFsIGZ1bmN0aW9uLCBvciBkaWZmZXJlbnQgc2NvcGUuCi0gICAgICAgIGlmICd+JyArIGJh
c2VfaW1wbCBpbiBjbGVhbl9saW5lOgotICAgICAgICAgICAgY29weSA9IFRydWUKLSAgICAgICAg
ICAgIGNvcHlfcHJpdmF0ZSA9IEZhbHNlCi0gICAgICAgIGVsaWYgJ3ByaXZhdGU6JyBpbiBjbGVh
bl9saW5lOgotICAgICAgICAgICAgY29weSA9IEZhbHNlCi0gICAgICAgICAgICBjb3B5X3ByaXZh
dGUgPSBUcnVlCi0gICAgICAgIGVsaWYgJzsnIGluIGNsZWFuX2xpbmUgYW5kICcgPSAwJyBub3Qg
aW4gY2xlYW5fbGluZToKLSAgICAgICAgICAgIGNvcHkgPSBGYWxzZQotICAgICAgICAgICAgY29w
eV9wcml2YXRlID0gRmFsc2UKLSAgICAgICAgZWxpZiAnfScgaW4gY2xlYW5fbGluZSBvciAncHJv
dGVjdGVkOicgaW4gY2xlYW5fbGluZSBvciAncHJpdmF0ZTonIGluIGNsZWFuX2xpbmU6Ci0gICAg
ICAgICAgICBjb3B5ID0gRmFsc2UKLSAgICAgICAgICAgIGNvcHlfcHJpdmF0ZSA9IEZhbHNlCi0g
ICAgICAgIGVsaWYgY29weToKLSAgICAgICAgICAgIGltcGxfc3R1YnMgKz0gbGluZQotICAgICAg
ICBlbGlmIGNvcHlfcHJpdmF0ZToKLSAgICAgICAgICAgIHByaXZhdGVfaW1wbF9zdHVicyArPSBs
aW5lCi0KLSAgICBpbXBsX2hfZmlsZS5jbG9zZSgpCi0KLSAgICByZXR1cm4gaW1wbF9zdHVicywg
cHJpdmF0ZV9pbXBsX3N0dWJzLCBjb25zdHJ1Y3RvcgotCi1mb3IgaW1wbF9jbGFzcyBpbiBpbXBs
X2NsYXNzZXM6Ci0KLSAgICBiYXNlX2ltcGwgPSBpbXBsX2NsYXNzCi0KLSAgICAjIHNwZWNpYWwg
Y2FzZSBmb3IgUmVuZGVyZXIKLSAgICBpZiBpbXBsX2NsYXNzICE9ICdSZW5kZXJlcic6Ci0gICAg
ICAgIGJhc2VfaW1wbCArPSAnSW1wbCcKLQotICAgIHR5cGVkX2ltcGwgPSBpbXBsX2NsYXNzICsg
cmVuZGVyZXJfc3VmZml4Ci0KLSAgICBoX2ZpbGVfcGF0aCA9IG9zLnBhdGguam9pbihyZW5kZXJl
cl9uYW1lLCB0eXBlZF9pbXBsICsgJy5oJykKLSAgICBjcHBfZmlsZV9wYXRoID0gb3MucGF0aC5q
b2luKHJlbmRlcmVyX25hbWUsIHR5cGVkX2ltcGwgKyAnLmNwcCcpCi0KLSAgICBoX2ZpbGUgPSBv
cGVuKGhfZmlsZV9wYXRoLCAndycpCi0gICAgY3BwX2ZpbGUgPSBvcGVuKGNwcF9maWxlX3BhdGgs
ICd3JykKLQotICAgICMgZXh0cmFjdCBpbXBsIHN0dWJzCi0gICAgaW1wbF9zdHVicywgcHJpdmF0
ZV9pbXBsX3N0dWJzLCBjb25zdHJ1Y3RvciA9IHBhcnNlX2ltcGxfaGVhZGVyKGJhc2VfaW1wbCkK
LQotICAgICMgbW9yZSBzcGVjaWFsIGNhc2UgZm9yIFJlbmRlcmVyCi0gICAgIyBUT0RPKGptYWRp
bGwpOiBnZW5lcmFsIGNhc2UgZm9yIGJhc2UgY2xhc3NlcwotICAgIGlmIGltcGxfY2xhc3MgPT0g
J1JlbmRlcmVyJzoKLSAgICAgICAgYmFzZV9pbXBsX3N0dWJzLCBiYXNlX3ByaXZhdGVfaW1wbF9z
dHVicywgYmFzZV9jb25zdHJ1Y3RvciA9IHBhcnNlX2ltcGxfaGVhZGVyKCdJbXBsRmFjdG9yeScp
Ci0gICAgICAgIGltcGxfc3R1YnMgKz0gYmFzZV9pbXBsX3N0dWJzCi0gICAgICAgIHByaXZhdGVf
aW1wbF9zdHVicyArPSBiYXNlX3ByaXZhdGVfaW1wbF9zdHVicwotCi0gICAgaW1wbF9tZXRob2Rf
ZGVjbGFyYXRpb25zID0gJycKLSAgICBpbXBsX21ldGhvZF9kZWZpbml0aW9ucyA9ICcnCi0gICAg
cHJpdmF0ZV9pbXBsX21ldGhvZF9kZWNsYXJhdGlvbnMgPSAnJwotCi0gICAgZm9yIGltcGxfc3R1
YiBpbiBpbXBsX3N0dWJzLnNwbGl0KCcgPSAwO1xuJyk6Ci0gICAgICAgICMgdXNlICd2aXJ0dWFs
JyB0byBpZGVudGlmeSB0aGUgc3RyaW5ncyB3aXRoIGZ1bmN0aW9ucwotICAgICAgICBpZiAndmly
dHVhbCcgaW4gaW1wbF9zdHViOgotICAgICAgICAgICAgdGVtcCA9IHJlLnN1YihyJ3ZpcnR1YWwg
JywgJycsIGltcGxfc3R1YikKLSAgICAgICAgICAgIGltcGxfbWV0aG9kX2RlY2xhcmF0aW9ucyAr
PSBnZW5lcmF0ZV9pbXBsX2RlY2xhcmF0aW9uKHRlbXApCi0gICAgICAgICAgICBpbXBsX21ldGhv
ZF9kZWZpbml0aW9ucyArPSBnZW5lcmF0ZV9pbXBsX2RlZmluaXRpb24odGVtcCwgdHlwZWRfaW1w
bCkKLQotICAgIGZvciBpbXBsX3N0dWIgaW4gcHJpdmF0ZV9pbXBsX3N0dWJzLnNwbGl0KCcgPSAw
O1xuJyk6Ci0gICAgICAgICMgdXNlICd2aXJ0dWFsJyB0byBpZGVudGlmeSB0aGUgc3RyaW5ncyB3
aXRoIGZ1bmN0aW9ucwotICAgICAgICBpZiAndmlydHVhbCcgaW4gaW1wbF9zdHViOgotICAgICAg
ICAgICAgdGVtcCA9IHJlLnN1YihyJ3ZpcnR1YWwgJywgJycsIGltcGxfc3R1YikKLSAgICAgICAg
ICAgIHByaXZhdGVfaW1wbF9tZXRob2RfZGVjbGFyYXRpb25zICs9IGdlbmVyYXRlX2ltcGxfZGVj
bGFyYXRpb24odGVtcCkKLSAgICAgICAgICAgIGltcGxfbWV0aG9kX2RlZmluaXRpb25zICs9IGdl
bmVyYXRlX2ltcGxfZGVmaW5pdGlvbih0ZW1wLCB0eXBlZF9pbXBsKQotCi0gICAgY29uc3RydWN0
b3JfcGFyYW1zLCBiYXNlX2NvbnN0cnVjdG9yX2FyZ3MgPSBnZXRfY29uc3RydWN0b3JfYXJncyhj
b25zdHJ1Y3RvcikKLQotICAgIGlmIHByaXZhdGVfaW1wbF9tZXRob2RfZGVjbGFyYXRpb25zOgot
ICAgICAgICBwcml2YXRlX2ltcGxfbWV0aG9kX2RlY2xhcmF0aW9ucyA9ICJcbiAgcHJpdmF0ZTpc
biIgKyBwcml2YXRlX2ltcGxfbWV0aG9kX2RlY2xhcmF0aW9ucwotCi0gICAgc3Vic3RpdHV0aW9u
cyA9IHsKLSAgICAgICAgJ0Jhc2VJbXBsJzogYmFzZV9pbXBsLAotICAgICAgICAnVHlwZWRJbXBs
JzogdHlwZWRfaW1wbCwKLSAgICAgICAgJ1R5cGVkSW1wbENhcHMnOiB0eXBlZF9pbXBsLnVwcGVy
KCksCi0gICAgICAgICdSZW5kZXJlck5hbWUnOiByZW5kZXJlcl9uYW1lLAotICAgICAgICAnUmVu
ZGVyZXJOYW1lQ2Fwcyc6IHJlbmRlcmVyX25hbWUudXBwZXIoKSwKLSAgICAgICAgJ0ltcGxNZXRo
b2REZWNsYXJhdGlvbnMnOiBpbXBsX21ldGhvZF9kZWNsYXJhdGlvbnMsCi0gICAgICAgICdJbXBs
TWV0aG9kRGVmaW5pdGlvbnMnOiBpbXBsX21ldGhvZF9kZWZpbml0aW9ucywKLSAgICAgICAgJ0Nv
bnN0cnVjdG9yUGFyYW1zJzogY29uc3RydWN0b3JfcGFyYW1zLAotICAgICAgICAnQmFzZUNvbnRy
dWN0b3JBcmdzJzogYmFzZV9jb25zdHJ1Y3Rvcl9hcmdzLAotICAgICAgICAnUHJpdmF0ZUltcGxN
ZXRob2REZWNsYXJhdGlvbnMnOiBwcml2YXRlX2ltcGxfbWV0aG9kX2RlY2xhcmF0aW9ucywKLSAg
ICB9Ci0KLSAgICBoX2ZpbGUud3JpdGUoc3RyaW5nLlRlbXBsYXRlKGhfZmlsZV90ZW1wbGF0ZSku
c3Vic3RpdHV0ZShzdWJzdGl0dXRpb25zKSkKLSAgICBjcHBfZmlsZS53cml0ZShzdHJpbmcuVGVt
cGxhdGUoY3BwX2ZpbGVfdGVtcGxhdGUpLnN1YnN0aXR1dGUoc3Vic3RpdHV0aW9ucykpCi0KLSAg
ICBoX2ZpbGUuY2xvc2UoKQotICAgIGNwcF9maWxlLmNsb3NlKCkKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9CbGl0R0wuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9C
bGl0R0wuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQmxpdEdMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAs
NyArMzAsNyBAQAogICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJG
YWlsZWQgdG8gY29tcGlsZSBpbnRlcm5hbCBibGl0IHNoYWRlci4iKTsKICAgICB9CiAKLSAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
IH0KIAogZ2w6OkVycm9yIENoZWNrTGlua1N0YXR1cyhjb25zdCByeDo6RnVuY3Rpb25zR0wgKmZ1
bmN0aW9ucywgR0x1aW50IHByb2dyYW0pCkBAIC00Myw3ICs0Myw3IEBACiAgICAgICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBsaW5rIGludGVybmFsIGJs
aXQgcHJvZ3JhbS4iKTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9S
KTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNw
YWNlCkBAIC01OCw2ICs1OCw5IEBACiAgICAgICBtV29ya2Fyb3VuZHMod29ya2Fyb3VuZHMpLAog
ICAgICAgbVN0YXRlTWFuYWdlcihzdGF0ZU1hbmFnZXIpLAogICAgICAgbUJsaXRQcm9ncmFtKDAp
LAorICAgICAgbVNvdXJjZVRleHR1cmVMb2NhdGlvbigtMSksCisgICAgICBtU2NhbGVMb2NhdGlv
bigtMSksCisgICAgICBtT2Zmc2V0TG9jYXRpb24oLTEpLAogICAgICAgbVNjcmF0Y2hGQk8oMCks
CiAgICAgICBtVkFPKDApCiB7CkBAIC0xMzAsMTEgKzEzMyw3IEBACiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xl
ICZzb3VyY2VBcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2UpCiB7Ci0gICAgZ2w6OkVy
cm9yIGVycm9yID0gaW5pdGlhbGl6ZVJlc291cmNlcygpOwotICAgIGlmIChlcnJvci5pc0Vycm9y
KCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShp
bml0aWFsaXplUmVzb3VyY2VzKCkpOwogCiAgICAgLy8gQmxpdCB0aGUgZnJhbWVidWZmZXIgdG8g
dGhlIGZpcnN0IHNjcmF0Y2ggdGV4dHVyZQogICAgIGNvbnN0IEZyYW1lYnVmZmVyR0wgKnNvdXJj
ZUZyYW1lYnVmZmVyR0wgPSBHZXRJbXBsQXM8RnJhbWVidWZmZXJHTD4oc291cmNlKTsKQEAgLTE0
Niw3ICsxNDUsNiBAQAogICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmaW50ZXJuYWxGb3Jt
YXRJbmZvID0KICAgICAgICAgZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhjb3B5VGV4SW1hZ2VG
b3JtYXQuaW50ZXJuYWxGb3JtYXQpOwogCi0gICAgbVN0YXRlTWFuYWdlci0+YWN0aXZlVGV4dHVy
ZSgwKTsKICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtU2Ny
YXRjaFRleHR1cmVzWzBdKTsKICAgICBtRnVuY3Rpb25zLT5jb3B5VGV4SW1hZ2UyRChHTF9URVhU
VVJFXzJELCAwLCBjb3B5VGV4SW1hZ2VGb3JtYXQuaW50ZXJuYWxGb3JtYXQsIHNvdXJjZUFyZWEu
eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VBcmVhLnksIHNvdXJjZUFy
ZWEud2lkdGgsIHNvdXJjZUFyZWEuaGVpZ2h0LCAwKTsKQEAgLTE3MSw3ICsxNjksNiBAQAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TY3JhdGNoVGV4dHVyZXNbMV0sIDAp
OwogCiAgICAgLy8gUmVuZGVyIHRvIHRoZSBkZXN0aW5hdGlvbiB0ZXh0dXJlLCBzYW1wbGluZyBm
cm9tIHRoZSBzY3JhdGNoIHRleHR1cmUKLSAgICBtU3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFtKG1C
bGl0UHJvZ3JhbSk7CiAgICAgbVN0YXRlTWFuYWdlci0+c2V0Vmlld3BvcnQoZ2w6OlJlY3Rhbmds
ZSgwLCAwLCBzb3VyY2VBcmVhLndpZHRoLCBzb3VyY2VBcmVhLmhlaWdodCkpOwogICAgIG1TdGF0
ZU1hbmFnZXItPnNldFNjaXNzb3JUZXN0RW5hYmxlZChmYWxzZSk7CiAgICAgbVN0YXRlTWFuYWdl
ci0+c2V0RGVwdGhSYW5nZSgwLjBmLCAxLjBmKTsKQEAgLTE4NiwxOCArMTgzLDE5NCBAQAogICAg
IG1TdGF0ZU1hbmFnZXItPnNldFJhc3Rlcml6ZXJEaXNjYXJkRW5hYmxlZChmYWxzZSk7CiAgICAg
bVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVNjcmF0Y2hUZXh0dXJl
c1swXSk7CiAKKyAgICBzZXRTY3JhdGNoVGV4dHVyZVBhcmFtZXRlcihHTF9URVhUVVJFX01JTl9G
SUxURVIsIEdMX05FQVJFU1QpOworICAgIHNldFNjcmF0Y2hUZXh0dXJlUGFyYW1ldGVyKEdMX1RF
WFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgbVN0YXRlTWFuYWdlci0+YWN0aXZl
VGV4dHVyZSgwKTsKKyAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShHTF9URVhUVVJFXzJE
LCBtU2NyYXRjaFRleHR1cmVzWzBdKTsKKworICAgIG1TdGF0ZU1hbmFnZXItPnVzZVByb2dyYW0o
bUJsaXRQcm9ncmFtKTsKKyAgICBtRnVuY3Rpb25zLT51bmlmb3JtMWkobVNvdXJjZVRleHR1cmVM
b2NhdGlvbiwgMCk7CisgICAgbUZ1bmN0aW9ucy0+dW5pZm9ybTJmKG1TY2FsZUxvY2F0aW9uLCAx
LjAsIDEuMCk7CisgICAgbUZ1bmN0aW9ucy0+dW5pZm9ybTJmKG1PZmZzZXRMb2NhdGlvbiwgMC4w
LCAwLjApOworCiAgICAgbVN0YXRlTWFuYWdlci0+YmluZFZlcnRleEFycmF5KG1WQU8sIDApOwog
Ci0gICAgbUZ1bmN0aW9ucy0+ZHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDYpOworICAgIG1G
dW5jdGlvbnMtPmRyYXdBcnJheXMoR0xfVFJJQU5HTEVTLCAwLCAzKTsKIAotICAgIC8vIEZpbmFs
bHksIGNvcHkgdGhlIHN3aXp6bGVkIHRleHR1cmUgdG8gdGhlIGRlc3RpbmF0aW9uIHRleHR1cmUK
KyAgICAvLyBDb3B5IHRoZSBzd2l6emxlZCB0ZXh0dXJlIHRvIHRoZSBkZXN0aW5hdGlvbiB0ZXh0
dXJlCiAgICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUodGV4dHVyZVR5cGUsIHRleHR1cmUp
OwogICAgIG1GdW5jdGlvbnMtPmNvcHlUZXhTdWJJbWFnZTJEKHRhcmdldCwgc3RhdGljX2Nhc3Q8
R0xpbnQ+KGxldmVsKSwgZGVzdE9mZnNldC54LCBkZXN0T2Zmc2V0LnksIDAsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMCwgc291cmNlQXJlYS53aWR0aCwgc291cmNlQXJlYS5o
ZWlnaHQpOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgLy8gRmlu
YWxseSBvcnBoYW4gdGhlIHNjcmF0Y2ggdGV4dHVyZXMgc28gdGhleSBjYW4gYmUgR0NlZCBieSB0
aGUgZHJpdmVyLgorICAgIG9ycGhhblNjcmF0Y2hUZXh0dXJlcygpOworCisgICAgcmV0dXJuIGds
OjpOb0Vycm9yKCk7CiB9CiAKK2dsOjpFcnJvciBCbGl0R0w6OmJsaXRDb2xvckJ1ZmZlcldpdGhT
aGFkZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZGVzdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3Rh
bmdsZSAmc291cmNlQXJlYUluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZkZXN0QXJlYUluLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsdGVyKQoreworICAgIEFOR0xF
X1RSWShpbml0aWFsaXplUmVzb3VyY2VzKCkpOworCisgICAgLy8gTm9ybWFsaXplIHRoZSBkZXN0
aW5hdGlvbiBhcmVhIHRvIGhhdmUgcG9zaXRpdmUgd2lkdGggYW5kIGhlaWdodCBiZWNhdXNlIHdl
IHdpbGwgdXNlCisgICAgLy8gZ2xWaWV3cG9ydCB0byBzZXQgaXQsIHdoaWNoIGRvZXNuJ3QgYWxs
b3cgbmVnYXRpdmUgd2lkdGggb3IgaGVpZ2h0LgorICAgIGdsOjpSZWN0YW5nbGUgc291cmNlQXJl
YSA9IHNvdXJjZUFyZWFJbjsKKyAgICBnbDo6UmVjdGFuZ2xlIGRlc3RBcmVhICAgPSBkZXN0QXJl
YUluOworICAgIGlmIChkZXN0QXJlYS53aWR0aCA8IDApCisgICAgeworICAgICAgICBkZXN0QXJl
YS54ICs9IGRlc3RBcmVhLndpZHRoOworICAgICAgICBkZXN0QXJlYS53aWR0aCA9IC1kZXN0QXJl
YS53aWR0aDsKKyAgICAgICAgc291cmNlQXJlYS54ICs9IHNvdXJjZUFyZWEud2lkdGg7CisgICAg
ICAgIHNvdXJjZUFyZWEud2lkdGggPSAtc291cmNlQXJlYS53aWR0aDsKKyAgICB9CisgICAgaWYg
KGRlc3RBcmVhLmhlaWdodCA8IDApCisgICAgeworICAgICAgICBkZXN0QXJlYS55ICs9IGRlc3RB
cmVhLmhlaWdodDsKKyAgICAgICAgZGVzdEFyZWEuaGVpZ2h0ID0gLWRlc3RBcmVhLmhlaWdodDsK
KyAgICAgICAgc291cmNlQXJlYS55ICs9IHNvdXJjZUFyZWEuaGVpZ2h0OworICAgICAgICBzb3Vy
Y2VBcmVhLmhlaWdodCA9IC1zb3VyY2VBcmVhLmhlaWdodDsKKyAgICB9CisKKyAgICBjb25zdCBn
bDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICpyZWFkQXR0YWNobWVudCA9IHNvdXJjZS0+Z2V0UmVh
ZENvbG9yYnVmZmVyKCk7CisgICAgQVNTRVJUKHJlYWRBdHRhY2htZW50LT5nZXRTYW1wbGVzKCkg
PD0gMSk7CisKKyAgICAvLyBDb21wdXRlIHRoZSBwYXJ0IG9mIHRoZSBzb3VyY2UgdGhhdCB3aWxs
IGJlIHNhbXBsZWQuCisgICAgZ2w6OlJlY3RhbmdsZSBpbkJvdW5kc1NvdXJjZTsKKyAgICB7Cisg
ICAgICAgIGdsOjpFeHRlbnRzIHNvdXJjZVNpemUgPSByZWFkQXR0YWNobWVudC0+Z2V0U2l6ZSgp
OworICAgICAgICBnbDo6UmVjdGFuZ2xlIHNvdXJjZUJvdW5kcygwLCAwLCBzb3VyY2VTaXplLndp
ZHRoLCBzb3VyY2VTaXplLmhlaWdodCk7CisgICAgICAgIGdsOjpDbGlwUmVjdGFuZ2xlKHNvdXJj
ZUFyZWEsIHNvdXJjZUJvdW5kcywgJmluQm91bmRzU291cmNlKTsKKworICAgICAgICAvLyBOb3Rl
IHRoYXQgaW5Cb3VuZHNTb3VyY2Ugd2lsbCBoYXZlIGxvc3QgdGhlIG9yaWVudGF0aW9uIGluZm9y
bWF0aW9uLgorICAgICAgICBBU1NFUlQoaW5Cb3VuZHNTb3VyY2Uud2lkdGggPj0gMCAmJiBpbkJv
dW5kc1NvdXJjZS5oZWlnaHQgPj0gMCk7CisKKyAgICAgICAgLy8gRWFybHkgb3V0IHdoZW4gdGhl
IHNhbXBsZWQgcGFydCBpcyBlbXB0eSBhcyB0aGUgYmxpdCB3aWxsIGJlIGEgbm9vcCwKKyAgICAg
ICAgLy8gYW5kIGl0IHByZXZlbnRzIGEgZGl2aXNpb24gYnkgemVybyBpbiBsYXRlciBjb21wdXRh
dGlvbnMuCisgICAgICAgIGlmIChpbkJvdW5kc1NvdXJjZS53aWR0aCA9PSAwIHx8IGluQm91bmRz
U291cmNlLmhlaWdodCA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRoZSBibGl0IHdpbGwgYmUgZW11
bGF0ZWQgYnkgZ2V0dGluZyB0aGUgc291cmNlIG9mIHRoZSBibGl0IGluIGEgdGV4dHVyZSBhbmQg
c2FtcGxpbmcgaXQKKyAgICAvLyB3aXRoIENMQU1QX1RPX0VER0UuIFRoZSBxdWFkIHVzZWQgdG8g
ZHJhdyBjYW4gdHJpdmlhbGx5IGNvbXB1dGUgdGV4dHVyZSBjb29yZGluYXRlcyBnb2luZworICAg
IC8vIGZyb20gKDAsIDApIHRvICgxLCAxKS4gVGhlc2UgdGV4dHVyZSBjb29yZGluYXRlcyB3aWxs
IG5lZWQgdG8gYmUgdHJhbnNmb3JtZWQgdG8gbWFrZSB0d28KKyAgICAvLyByZWdpb25zIG1hdGNo
OgorICAgIC8vICAtIFRoZSByZWdpb24gb2YgdGhlIHRleHR1cmUgcmVwcmVzZW50aW5nIHRoZSBz
b3VyY2UgZnJhbWVidWZmZXIgcmVnaW9uIHRoYXQgd2lsbCBiZSBzYW1wbGVkCisgICAgLy8gIC0g
VGhlIHJlZ2lvbiBvZiB0aGUgZHJhd24gcXVhZCB0aGF0IGNvcnJlc3BvbmRzIHRvIG5vbi1jbGFt
cGVkIGJsaXQsIHRoaXMgaXMgdGhlIHNhbWUgYXMgdGhlCisgICAgLy8gICAgcmVnaW9uIG9mIHRo
ZSBzb3VyY2UgcmVjdGFuZ2xlIHRoYXQgaXMgaW5zaWRlIHRoZSBzb3VyY2UgYXR0YWNobWVudC4K
KyAgICAvLworICAgIC8vICBUaGVzZSB0d28gcmVnaW9ucywgVCAodGV4dHVyZSkgYW5kIEQgKGRl
c3QpIGFyZSBkZWZpbmVkIGJ5IHRoZWlyIG9mZnNldCBpbiB0ZXhjb29yZCBzcGFjZQorICAgIC8v
ICBpbiAoMCwgMSleMiBhbmQgdGhlaXIgc2l6ZSBpbiB0ZXhjb29yZCBzcGFjZSBpbiAoLTEsIDEp
XjIuIFRoZSBzaXplIGNhbiBiZSBuZWdhdGl2ZSB0bworICAgIC8vICByZXByZXNlbnQgdGhlIG9y
aWVudGF0aW9uIG9mIHRoZSBibGl0LgorICAgIC8vCisgICAgLy8gIFRoZW4gaWYgUCBpcyB0aGUg
cXVhZCB0ZXhjb29yZCwgUSB0aGUgdGV4Y29vcmQgaW5zaWRlIFQsIGFuZCBSIHRoZSB0ZXh0dXJl
IHRleGNvb3JkOgorICAgIC8vICAgIC0gUSA9IChQIC0gRC5vZmZzZXQpIC8gRC5zaXplCisgICAg
Ly8gICAgLSBRID0gKFIgLSBULm9mZnNldCkgLyBULnNpemUKKyAgICAvLyAgSGVuY2UgUiA9IChQ
IC0gRC5vZmZzZXQpIC8gRC5zaXplICogVC5zaXplIC0gVC5vZmZzZXQKKyAgICAvLyAgICAgICAg
ICA9IFAgKiAoVC5zaXplIC8gRC5zaXplKSArIChULm9mZnNldCAtIEQub2Zmc2V0ICogVC5zaXpl
IC8gRC5zaXplKQorCisgICAgR0x1aW50IHRleHR1cmVJZDsKKyAgICBnbDo6VmVjdG9yMiBUT2Zm
c2V0OworICAgIGdsOjpWZWN0b3IyIFRTaXplOworCisgICAgLy8gVE9ETyhjd2FsbGV6KSBvbmNl
IHRleHR1cmUgZGlydHkgYml0cyBhcmUgbGFuZGVkLCByZXVzZSBhdHRhY2hlZCB0ZXh0dXJlIGlu
c3RlYWQgb2YgdXNpbmcKKyAgICAvLyBDb3B5VGV4SW1hZ2UyRAorICAgIHsKKyAgICAgICAgdGV4
dHVyZUlkID0gbVNjcmF0Y2hUZXh0dXJlc1swXTsKKyAgICAgICAgVE9mZnNldCAgID0gZ2w6OlZl
Y3RvcjIoMC4wLCAwLjApOworICAgICAgICBUU2l6ZSAgICAgPSBnbDo6VmVjdG9yMigxLjAsIDEu
MCk7CisgICAgICAgIGlmIChzb3VyY2VBcmVhLndpZHRoIDwgMCkKKyAgICAgICAgeworICAgICAg
ICAgICAgVE9mZnNldC54ID0gMS4wOworICAgICAgICAgICAgVFNpemUueCAgID0gLTEuMDsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoc291cmNlQXJlYS5oZWlnaHQgPCAwKQorICAgICAgICB7Cisg
ICAgICAgICAgICBUT2Zmc2V0LnkgPSAxLjA7CisgICAgICAgICAgICBUU2l6ZS55ICAgPSAtMS4w
OworICAgICAgICB9CisKKyAgICAgICAgR0xlbnVtIGZvcm1hdCAgICAgICAgICAgICAgICAgPSBy
ZWFkQXR0YWNobWVudC0+Z2V0Rm9ybWF0KCkuaW5mby0+aW50ZXJuYWxGb3JtYXQ7CisgICAgICAg
IGNvbnN0IEZyYW1lYnVmZmVyR0wgKnNvdXJjZUdMID0gR2V0SW1wbEFzPEZyYW1lYnVmZmVyR0w+
KHNvdXJjZSk7CisgICAgICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFE
X0ZSQU1FQlVGRkVSLCBzb3VyY2VHTC0+Z2V0RnJhbWVidWZmZXJJRCgpKTsKKyAgICAgICAgbVN0
YXRlTWFuYWdlci0+YmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZUlkKTsKKworICAg
ICAgICBtRnVuY3Rpb25zLT5jb3B5VGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBmb3JtYXQs
IGluQm91bmRzU291cmNlLngsIGluQm91bmRzU291cmNlLnksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluQm91bmRzU291cmNlLndpZHRoLCBpbkJvdW5kc1NvdXJjZS5oZWln
aHQsIDApOworICAgIH0KKworICAgIC8vIENvbXB1dGUgbm9ybWFsaXplZCBzYW1wbGVkIGRyYXcg
cXVhZCByZWdpb24KKyAgICAvLyBJdCBpcyB0aGUgc2FtZSBhcyB0aGUgcmVnaW9uIG9mIHRoZSBz
b3VyY2UgcmVjdGFuZ2xlIHRoYXQgaXMgaW4gYm91bmRzLgorICAgIGdsOjpWZWN0b3IyIERPZmZz
ZXQ7CisgICAgZ2w6OlZlY3RvcjIgRFNpemU7CisgICAgeworICAgICAgICBBU1NFUlQoc291cmNl
QXJlYS53aWR0aCAhPSAwICYmIHNvdXJjZUFyZWEuaGVpZ2h0ICE9IDApOworICAgICAgICBnbDo6
UmVjdGFuZ2xlIG9yaWVudGVkSW5Cb3VuZHMgPSBpbkJvdW5kc1NvdXJjZTsKKyAgICAgICAgaWYg
KHNvdXJjZUFyZWEud2lkdGggPCAwKQorICAgICAgICB7CisgICAgICAgICAgICBvcmllbnRlZElu
Qm91bmRzLnggKz0gb3JpZW50ZWRJbkJvdW5kcy53aWR0aDsKKyAgICAgICAgICAgIG9yaWVudGVk
SW5Cb3VuZHMud2lkdGggPSAtb3JpZW50ZWRJbkJvdW5kcy53aWR0aDsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoc291cmNlQXJlYS5oZWlnaHQgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICBv
cmllbnRlZEluQm91bmRzLnkgKz0gb3JpZW50ZWRJbkJvdW5kcy5oZWlnaHQ7CisgICAgICAgICAg
ICBvcmllbnRlZEluQm91bmRzLmhlaWdodCA9IC1vcmllbnRlZEluQm91bmRzLmhlaWdodDsKKyAg
ICAgICAgfQorCisgICAgICAgIERPZmZzZXQgPQorICAgICAgICAgICAgZ2w6OlZlY3RvcjIoc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KG9yaWVudGVkSW5Cb3VuZHMueCAtIHNvdXJjZUFyZWEueCkgLyBzb3Vy
Y2VBcmVhLndpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+
KG9yaWVudGVkSW5Cb3VuZHMueSAtIHNvdXJjZUFyZWEueSkgLyBzb3VyY2VBcmVhLmhlaWdodCk7
CisgICAgICAgIERTaXplID0gZ2w6OlZlY3RvcjIoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG9yaWVudGVk
SW5Cb3VuZHMud2lkdGgpIC8gc291cmNlQXJlYS53aWR0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4ob3JpZW50ZWRJbkJvdW5kcy5oZWlnaHQpIC8gc291
cmNlQXJlYS5oZWlnaHQpOworICAgIH0KKworICAgIEFTU0VSVChEU2l6ZS54ICE9IDAuMCAmJiBE
U2l6ZS55ICE9IDAuMCk7CisgICAgZ2w6OlZlY3RvcjIgdGV4Q29vcmRTY2FsZSAgPSBnbDo6VmVj
dG9yMihUU2l6ZS54IC8gRFNpemUueCwgVFNpemUueSAvIERTaXplLnkpOworICAgIGdsOjpWZWN0
b3IyIHRleENvb3JkT2Zmc2V0ID0gZ2w6OlZlY3RvcjIoVE9mZnNldC54IC0gRE9mZnNldC54ICog
dGV4Q29vcmRTY2FsZS54LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVE9mZnNldC55IC0gRE9mZnNldC55ICogdGV4Q29vcmRTY2FsZS55KTsKKworICAgIC8v
IFJlc2V0IGFsbCB0aGUgc3RhdGUgZXhjZXB0IHNjaXNzb3IgYW5kIHZpZXdwb3J0CisgICAgbVN0
YXRlTWFuYWdlci0+c2V0RGVwdGhSYW5nZSgwLjBmLCAxLjBmKTsKKyAgICBtU3RhdGVNYW5hZ2Vy
LT5zZXRCbGVuZEVuYWJsZWQoZmFsc2UpOworICAgIG1TdGF0ZU1hbmFnZXItPnNldENvbG9yTWFz
ayh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKKyAgICBtU3RhdGVNYW5hZ2VyLT5zZXRTYW1wbGVB
bHBoYVRvQ292ZXJhZ2VFbmFibGVkKGZhbHNlKTsKKyAgICBtU3RhdGVNYW5hZ2VyLT5zZXRTYW1w
bGVDb3ZlcmFnZUVuYWJsZWQoZmFsc2UpOworICAgIG1TdGF0ZU1hbmFnZXItPnNldERlcHRoVGVz
dEVuYWJsZWQoZmFsc2UpOworICAgIG1TdGF0ZU1hbmFnZXItPnNldFN0ZW5jaWxUZXN0RW5hYmxl
ZChmYWxzZSk7CisgICAgbVN0YXRlTWFuYWdlci0+c2V0Q3VsbEZhY2VFbmFibGVkKGZhbHNlKTsK
KyAgICBtU3RhdGVNYW5hZ2VyLT5zZXRQb2x5Z29uT2Zmc2V0RmlsbEVuYWJsZWQoZmFsc2UpOwor
ICAgIG1TdGF0ZU1hbmFnZXItPnNldFJhc3Rlcml6ZXJEaXNjYXJkRW5hYmxlZChmYWxzZSk7CisK
KyAgICAvLyBVc2UgdGhlIHZpZXdwb3J0IHRvIGRyYXcgZXhhY3RseSB0byB0aGUgZGVzdGluYXRp
b24gcmVjdGFuZ2xlCisgICAgbVN0YXRlTWFuYWdlci0+c2V0Vmlld3BvcnQoZGVzdEFyZWEpOwor
CisgICAgLy8gU2V0IHVuaWZvcm1zCisgICAgc2V0U2NyYXRjaFRleHR1cmVQYXJhbWV0ZXIoR0xf
VEVYVFVSRV9NSU5fRklMVEVSLCBmaWx0ZXIpOworICAgIHNldFNjcmF0Y2hUZXh0dXJlUGFyYW1l
dGVyKEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgZmlsdGVyKTsKKyAgICBzZXRTY3JhdGNoVGV4dHVy
ZVBhcmFtZXRlcihHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgc2V0
U2NyYXRjaFRleHR1cmVQYXJhbWV0ZXIoR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VE
R0UpOworICAgIG1TdGF0ZU1hbmFnZXItPmFjdGl2ZVRleHR1cmUoMCk7CisgICAgbVN0YXRlTWFu
YWdlci0+YmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVNjcmF0Y2hUZXh0dXJlc1swXSk7CisK
KyAgICBtU3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFtKG1CbGl0UHJvZ3JhbSk7CisgICAgbUZ1bmN0
aW9ucy0+dW5pZm9ybTFpKG1Tb3VyY2VUZXh0dXJlTG9jYXRpb24sIDApOworICAgIG1GdW5jdGlv
bnMtPnVuaWZvcm0yZihtU2NhbGVMb2NhdGlvbiwgdGV4Q29vcmRTY2FsZS54LCB0ZXhDb29yZFNj
YWxlLnkpOworICAgIG1GdW5jdGlvbnMtPnVuaWZvcm0yZihtT2Zmc2V0TG9jYXRpb24sIHRleENv
b3JkT2Zmc2V0LngsIHRleENvb3JkT2Zmc2V0LnkpOworCisgICAgY29uc3QgRnJhbWVidWZmZXJH
TCAqZGVzdEdMID0gR2V0SW1wbEFzPEZyYW1lYnVmZmVyR0w+KGRlc3QpOworICAgIG1TdGF0ZU1h
bmFnZXItPmJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSLCBkZXN0R0wtPmdldEZy
YW1lYnVmZmVySUQoKSk7CisKKyAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVmVydGV4QXJyYXkobVZB
TywgMCk7CisgICAgbUZ1bmN0aW9ucy0+ZHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDMpOwor
CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CisKIGdsOjpFcnJvciBCbGl0R0w6OmluaXRp
YWxpemVSZXNvdXJjZXMoKQogewogICAgIGlmIChtQmxpdFByb2dyYW0gPT0gMCkKQEAgLTIwNSw0
MSArMzc4LDM4IEBACiAgICAgICAgIG1CbGl0UHJvZ3JhbSA9IG1GdW5jdGlvbnMtPmNyZWF0ZVBy
b2dyYW0oKTsKIAogICAgICAgICAvLyBDb21waWxlIHRoZSBmcmFnbWVudCBzaGFkZXIKKyAgICAg
ICAgLy8gSXQgdXNlcyBhIHNpbmdsZSwgbGFyZ2UgdHJpYW5nbGUsIHRvIGF2b2lkIGFyaXRobWV0
aWMgcHJlY2lzaW9uIGlzc3VlcyB3aGVyZSBmcmFnbWVudHMKKyAgICAgICAgLy8gd2l0aCB0aGUg
c2FtZSBZIGNvb3JkaW5hdGUgZG9uJ3QgZ2V0IGV4YWN0bHkgdGhlIHNhbWUgaW50ZXJwb2xhdGVk
IHRleGNvb3JkIFkuCiAgICAgICAgIGNvbnN0IGNoYXIgKnZzU291cmNlID0KICAgICAgICAgICAg
ICIjdmVyc2lvbiAxNTBcbiIKICAgICAgICAgICAgICJvdXQgdmVjMiB2X3RleGNvb3JkO1xuIgor
ICAgICAgICAgICAgInVuaWZvcm0gdmVjMiB1X3NjYWxlO1xuIgorICAgICAgICAgICAgInVuaWZv
cm0gdmVjMiB1X29mZnNldDtcbiIKICAgICAgICAgICAgICJcbiIKICAgICAgICAgICAgICJ2b2lk
IG1haW4oKVxuIgogICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICIgICAgY29uc3QgdmVj
MiBxdWFkX3Bvc2l0aW9uc1s2XSA9IHZlYzJbNl1cbiIKKyAgICAgICAgICAgICIgICAgY29uc3Qg
dmVjMiBxdWFkX3Bvc2l0aW9uc1szXSA9IHZlYzJbM11cbiIKICAgICAgICAgICAgICIgICAgKFxu
IgotICAgICAgICAgICAgIiAgICAgICAgdmVjMigwLjBmLCAwLjBmKSxcbiIKLSAgICAgICAgICAg
ICIgICAgICAgIHZlYzIoMC4wZiwgMS4wZiksXG4iCi0gICAgICAgICAgICAiICAgICAgICB2ZWMy
KDEuMGYsIDAuMGYpLFxuIgotICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgIiAgICAgICAg
dmVjMigwLjBmLCAxLjBmKSxcbiIKLSAgICAgICAgICAgICIgICAgICAgIHZlYzIoMS4wZiwgMC4w
ZiksXG4iCi0gICAgICAgICAgICAiICAgICAgICB2ZWMyKDEuMGYsIDEuMGYpXG4iCisgICAgICAg
ICAgICAiICAgICAgICB2ZWMyKC0wLjVmLCAwLjBmKSxcbiIKKyAgICAgICAgICAgICIgICAgICAg
IHZlYzIoIDEuNWYsIDAuMGYpLFxuIgorICAgICAgICAgICAgIiAgICAgICAgdmVjMiggMC41Ziwg
Mi4wZilcbiIKICAgICAgICAgICAgICIgICAgKTtcbiIKICAgICAgICAgICAgICJcbiIKICAgICAg
ICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KChxdWFkX3Bvc2l0aW9uc1tnbF9WZXJ0ZXhJ
RF0gKiAyLjApIC0gMS4wLCAwLjAsIDEuMCk7XG4iCi0gICAgICAgICAgICAiICAgIHZfdGV4Y29v
cmQgPSBxdWFkX3Bvc2l0aW9uc1tnbF9WZXJ0ZXhJRF07XG4iCisgICAgICAgICAgICAiICAgIHZf
dGV4Y29vcmQgPSBxdWFkX3Bvc2l0aW9uc1tnbF9WZXJ0ZXhJRF0gKiB1X3NjYWxlICsgdV9vZmZz
ZXQ7XG4iCiAgICAgICAgICAgICAifVxuIjsKIAogICAgICAgICBHTHVpbnQgdnMgPSBtRnVuY3Rp
b25zLT5jcmVhdGVTaGFkZXIoR0xfVkVSVEVYX1NIQURFUik7CiAgICAgICAgIG1GdW5jdGlvbnMt
PnNoYWRlclNvdXJjZSh2cywgMSwgJnZzU291cmNlLCBudWxscHRyKTsKICAgICAgICAgbUZ1bmN0
aW9ucy0+Y29tcGlsZVNoYWRlcih2cyk7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IENoZWNr
Q29tcGlsZVN0YXR1cyhtRnVuY3Rpb25zLCB2cyk7CisgICAgICAgIEFOR0xFX1RSWShDaGVja0Nv
bXBpbGVTdGF0dXMobUZ1bmN0aW9ucywgdnMpKTsKIAogICAgICAgICBtRnVuY3Rpb25zLT5hdHRh
Y2hTaGFkZXIobUJsaXRQcm9ncmFtLCB2cyk7CiAgICAgICAgIG1GdW5jdGlvbnMtPmRlbGV0ZVNo
YWRlcih2cyk7CiAKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9Ci0KICAgICAgICAgLy8gQ29tcGlsZSB0
aGUgdmVydGV4IHNoYWRlcgorICAgICAgICAvLyBJdCBkaXNjYXJkcyBpZiB0aGUgdGV4Y29vcmQg
aXMgb3V0c2lkZSAoMCwgMSleMiBzbyB0aGUgYmxpdGZyYW1lYnVmZmVyIHdvcmthcm91bmQKKyAg
ICAgICAgLy8gZG9lc24ndCB3cml0ZSB3aGVuIHRoZSBwb2ludCBzYW1wbGVkIGlzIG91dHNpZGUg
b2YgdGhlIHNvdXJjZSBmcmFtZWJ1ZmZlci4KICAgICAgICAgY29uc3QgY2hhciAqZnNTb3VyY2Ug
PQogICAgICAgICAgICAgIiN2ZXJzaW9uIDE1MFxuIgogICAgICAgICAgICAgInVuaWZvcm0gc2Ft
cGxlcjJEIHVfc291cmNlX3RleHR1cmU7XG4iCkBAIC0yNDgsNiArNDE4LDEwIEBACiAgICAgICAg
ICAgICAiXG4iCiAgICAgICAgICAgICAidm9pZCBtYWluKClcbiIKICAgICAgICAgICAgICJ7XG4i
CisgICAgICAgICAgICAiICAgIGlmIChjbGFtcCh2X3RleGNvb3JkLCB2ZWMyKDAuMCksIHZlYzIo
MS4wKSkgIT0gdl90ZXhjb29yZClcbiIKKyAgICAgICAgICAgICIgICAge1xuIgorICAgICAgICAg
ICAgIiAgICAgICAgZGlzY2FyZDtcbiIKKyAgICAgICAgICAgICIgICAgfVxuIgogICAgICAgICAg
ICAgIiAgICBvdXRwdXRfY29sb3IgPSB0ZXh0dXJlKHVfc291cmNlX3RleHR1cmUsIHZfdGV4Y29v
cmQpO1xuIgogICAgICAgICAgICAgIn1cbiI7CiAKQEAgLTI1NCwyNiArNDI4LDE4IEBACiAgICAg
ICAgIEdMdWludCBmcyA9IG1GdW5jdGlvbnMtPmNyZWF0ZVNoYWRlcihHTF9GUkFHTUVOVF9TSEFE
RVIpOwogICAgICAgICBtRnVuY3Rpb25zLT5zaGFkZXJTb3VyY2UoZnMsIDEsICZmc1NvdXJjZSwg
bnVsbHB0cik7CiAgICAgICAgIG1GdW5jdGlvbnMtPmNvbXBpbGVTaGFkZXIoZnMpOwotICAgICAg
ICBlcnJvciA9IENoZWNrQ29tcGlsZVN0YXR1cyhtRnVuY3Rpb25zLCBmcyk7CisgICAgICAgIEFO
R0xFX1RSWShDaGVja0NvbXBpbGVTdGF0dXMobUZ1bmN0aW9ucywgZnMpKTsKIAogICAgICAgICBt
RnVuY3Rpb25zLT5hdHRhY2hTaGFkZXIobUJsaXRQcm9ncmFtLCBmcyk7CiAgICAgICAgIG1GdW5j
dGlvbnMtPmRlbGV0ZVNoYWRlcihmcyk7CiAKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9Ci0KICAgICAg
ICAgbUZ1bmN0aW9ucy0+bGlua1Byb2dyYW0obUJsaXRQcm9ncmFtKTsKLSAgICAgICAgZXJyb3Ig
PSBDaGVja0xpbmtTdGF0dXMobUZ1bmN0aW9ucywgbUJsaXRQcm9ncmFtKTsKLSAgICAgICAgaWYg
KGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwot
ICAgICAgICB9CisgICAgICAgIEFOR0xFX1RSWShDaGVja0xpbmtTdGF0dXMobUZ1bmN0aW9ucywg
bUJsaXRQcm9ncmFtKSk7CiAKLSAgICAgICAgR0x1aW50IHRleHR1cmVVbmlmb3JtID0gbUZ1bmN0
aW9ucy0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1CbGl0UHJvZ3JhbSwgInVfc291cmNlX3RleHR1cmUi
KTsKKyAgICAgICAgbVNvdXJjZVRleHR1cmVMb2NhdGlvbiA9IG1GdW5jdGlvbnMtPmdldFVuaWZv
cm1Mb2NhdGlvbihtQmxpdFByb2dyYW0sICJ1X3NvdXJjZV90ZXh0dXJlIik7CisgICAgICAgIG1T
Y2FsZUxvY2F0aW9uICAgICAgICAgPSBtRnVuY3Rpb25zLT5nZXRVbmlmb3JtTG9jYXRpb24obUJs
aXRQcm9ncmFtLCAidV9zY2FsZSIpOworICAgICAgICBtT2Zmc2V0TG9jYXRpb24gICAgICAgID0g
bUZ1bmN0aW9ucy0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1CbGl0UHJvZ3JhbSwgInVfb2Zmc2V0Iik7
CiAgICAgICAgIG1TdGF0ZU1hbmFnZXItPnVzZVByb2dyYW0obUJsaXRQcm9ncmFtKTsKLSAgICAg
ICAgbUZ1bmN0aW9ucy0+dW5pZm9ybTFpKHRleHR1cmVVbmlmb3JtLCAwKTsKICAgICB9CiAKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IEFycmF5U2l6ZShtU2NyYXRjaFRleHR1cmVzKTsgaSsr
KQpAQCAtMjgxLDExICs0NDcsNiBAQAogICAgICAgICBpZiAobVNjcmF0Y2hUZXh0dXJlc1tpXSA9
PSAwKQogICAgICAgICB7CiAgICAgICAgICAgICBtRnVuY3Rpb25zLT5nZW5UZXh0dXJlcygxLCAm
bVNjcmF0Y2hUZXh0dXJlc1tpXSk7Ci0gICAgICAgICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4
dHVyZShHTF9URVhUVVJFXzJELCBtU2NyYXRjaFRleHR1cmVzW2ldKTsKLQotICAgICAgICAgICAg
Ly8gVXNlIG5lYXJlc3QsIG5vbi1taXBtYXBwZWQgc2FtcGxpbmcgd2l0aCB0aGUgc2NyYXRjaCB0
ZXh0dXJlCi0gICAgICAgICAgICBtRnVuY3Rpb25zLT50ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
MkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgICAgICAgICBtRnVu
Y3Rpb25zLT50ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRF
UiwgR0xfTkVBUkVTVCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI5OSw2ICs0NjAsMjcgQEAK
ICAgICAgICAgbUZ1bmN0aW9ucy0+Z2VuVmVydGV4QXJyYXlzKDEsICZtVkFPKTsKICAgICB9CiAK
LSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJy
b3IoKTsKIH0KKwordm9pZCBCbGl0R0w6Om9ycGhhblNjcmF0Y2hUZXh0dXJlcygpCit7CisgICAg
Zm9yIChhdXRvIHRleHR1cmUgOiBtU2NyYXRjaFRleHR1cmVzKQorICAgIHsKKyAgICAgICAgbVN0
YXRlTWFuYWdlci0+YmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgICAg
IG1GdW5jdGlvbnMtPnRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMCwgMCwg
MCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyKTsKKyAgICB9CiB9CisKK3ZvaWQgQmxpdEdMOjpzZXRTY3JhdGNoVGV4dHVy
ZVBhcmFtZXRlcihHTGVudW0gcGFyYW0sIEdMZW51bSB2YWx1ZSkKK3sKKyAgICBmb3IgKGF1dG8g
dGV4dHVyZSA6IG1TY3JhdGNoVGV4dHVyZXMpCisgICAgeworICAgICAgICBtU3RhdGVNYW5hZ2Vy
LT5iaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAgICAgICAgbUZ1bmN0aW9u
cy0+dGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBwYXJhbSwgdmFsdWUpOworICAgICAgICBt
RnVuY3Rpb25zLT50ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIHBhcmFtLCB2YWx1ZSk7Cisg
ICAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9CbGl0R0wuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQmxpdEdMLmgJKHJl
dmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9CbGl0R0wuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsMTQgKzUyLDI2IEBACiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKTsKIAorICAg
IGdsOjpFcnJvciBibGl0Q29sb3JCdWZmZXJXaXRoU2hhZGVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZl
ciAqc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpGcmFtZWJ1ZmZlciAqZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRlc3RBcmVhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWx0ZXIpOwor
CiAgICAgZ2w6OkVycm9yIGluaXRpYWxpemVSZXNvdXJjZXMoKTsKIAogICBwcml2YXRlOgorICAg
IHZvaWQgb3JwaGFuU2NyYXRjaFRleHR1cmVzKCk7CisgICAgdm9pZCBzZXRTY3JhdGNoVGV4dHVy
ZVBhcmFtZXRlcihHTGVudW0gcGFyYW0sIEdMZW51bSB2YWx1ZSk7CisKICAgICBjb25zdCBGdW5j
dGlvbnNHTCAqbUZ1bmN0aW9uczsKICAgICBjb25zdCBXb3JrYXJvdW5kc0dMICZtV29ya2Fyb3Vu
ZHM7CiAgICAgU3RhdGVNYW5hZ2VyR0wgKm1TdGF0ZU1hbmFnZXI7CiAKICAgICBHTHVpbnQgbUJs
aXRQcm9ncmFtOworICAgIEdMaW50IG1Tb3VyY2VUZXh0dXJlTG9jYXRpb247CisgICAgR0xpbnQg
bVNjYWxlTG9jYXRpb247CisgICAgR0xpbnQgbU9mZnNldExvY2F0aW9uOwogCiAgICAgR0x1aW50
IG1TY3JhdGNoVGV4dHVyZXNbMl07CiAgICAgR0x1aW50IG1TY3JhdGNoRkJPOwpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0J1ZmZlckdMLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvQnVmZmVyR0wuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQnVmZmVyR0wuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Myw3ICs1Myw3IEBACiAgICAgbUJ1ZmZlcklEID0gMDsKIH0KIAotZ2w6OkVy
cm9yIEJ1ZmZlckdMOjpzZXREYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBzaXplLCBHTGVu
dW0gdXNhZ2UpCitnbDo6RXJyb3IgQnVmZmVyR0w6OnNldERhdGEoR0xlbnVtIC8qdGFyZ2V0Ki8s
IGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCBHTGVudW0gdXNhZ2UpCiB7CiAgICAgbVN0
YXRlTWFuYWdlci0+YmluZEJ1ZmZlcihEZXN0QnVmZmVyT3BlcmF0aW9uVGFyZ2V0LCBtQnVmZmVy
SUQpOwogICAgIG1GdW5jdGlvbnMtPmJ1ZmZlckRhdGEoRGVzdEJ1ZmZlck9wZXJhdGlvblRhcmdl
dCwgc2l6ZSwgZGF0YSwgdXNhZ2UpOwpAQCAtNzYsNyArNzYsNyBAQAogICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi1nbDo6RXJyb3IgQnVmZmVyR0w6OnNldFN1YkRhdGEo
Y29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCBvZmZzZXQpCitnbDo6RXJyb3Ig
QnVmZmVyR0w6OnNldFN1YkRhdGEoR0xlbnVtIC8qdGFyZ2V0Ki8sIGNvbnN0IHZvaWQgKmRhdGEs
IHNpemVfdCBzaXplLCBzaXplX3Qgb2Zmc2V0KQogewogICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRC
dWZmZXIoRGVzdEJ1ZmZlck9wZXJhdGlvblRhcmdldCwgbUJ1ZmZlcklEKTsKICAgICBtRnVuY3Rp
b25zLT5idWZmZXJTdWJEYXRhKERlc3RCdWZmZXJPcGVyYXRpb25UYXJnZXQsIG9mZnNldCwgc2l6
ZSwgZGF0YSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvQnVmZmVyR0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQnVmZmVyR0wuaAkocmV2aXNpb24gMjA4MDIxKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0J1ZmZl
ckdMLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDggKzI0LDggQEAKICAgICBCdWZmZXJHTChjb25z
dCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLCBTdGF0ZU1hbmFnZXJHTCAqc3RhdGVNYW5hZ2VyKTsK
ICAgICB+QnVmZmVyR0woKSBvdmVycmlkZTsKIAotICAgIGdsOjpFcnJvciBzZXREYXRhKGNvbnN0
IHZvaWQqIGRhdGEsIHNpemVfdCBzaXplLCBHTGVudW0gdXNhZ2UpIG92ZXJyaWRlOwotICAgIGds
OjpFcnJvciBzZXRTdWJEYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBzaXplLCBzaXplX3Qg
b2Zmc2V0KSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3Igc2V0RGF0YShHTGVudW0gdGFyZ2V0LCBj
b25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgR0xlbnVtIHVzYWdlKSBvdmVycmlkZTsKKyAg
ICBnbDo6RXJyb3Igc2V0U3ViRGF0YShHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkICpkYXRhLCBz
aXplX3Qgc2l6ZSwgc2l6ZV90IG9mZnNldCkgb3ZlcnJpZGU7CiAgICAgZ2w6OkVycm9yIGNvcHlT
dWJEYXRhKEJ1ZmZlckltcGwqIHNvdXJjZSwgR0xpbnRwdHIgc291cmNlT2Zmc2V0LCBHTGludHB0
ciBkZXN0T2Zmc2V0LCBHTHNpemVpcHRyIHNpemUpIG92ZXJyaWRlOwogICAgIGdsOjpFcnJvciBt
YXAoR0xlbnVtIGFjY2VzcywgR0x2b2lkICoqbWFwUHRyKSBvdmVycmlkZTsKICAgICBnbDo6RXJy
b3IgbWFwUmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCwgR0xiaXRmaWVsZCBhY2Nl
c3MsIEdMdm9pZCAqKm1hcFB0cikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQ29udGV4dEdMLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQ29udGV4
dEdMLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvQ29udGV4dEdMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDM3MCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorLy8KKy8vIENvbnRleHRHTDoKKy8vICAgT3BlbkdMLXNwZWNpZmljIGZ1
bmN0aW9uYWxpdHkgYXNzb2NpYXRlZCB3aXRoIGEgR0wgQ29udGV4dC4KKy8vCisKKyNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9nbC9Db250ZXh0R0wuaCIKKworI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL2dsL0J1ZmZlckdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wv
Q29tcGlsZXJHTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL0ZlbmNlTlZHTC5o
IgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL0ZlbmNlU3luY0dMLmgiCisjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvRnVuY3Rpb25zR0wuaCIKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9nbC9GcmFtZWJ1ZmZlckdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZ2wvUGF0aEdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvUHJvZ3JhbUdM
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvUXVlcnlHTC5oIgorI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2dsL1JlbmRlcmJ1ZmZlckdMLmgiCisjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvZ2wvUmVuZGVyZXJHTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2dsL1NhbXBsZXJHTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1NoYWRlckdM
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2VyR0wuaCIKKyNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9UZXh0dXJlR0wuaCIKKyNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9nbC9UcmFuc2Zvcm1GZWVkYmFja0dMLmgiCisjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvZ2wvVmVydGV4QXJyYXlHTC5oIgorCituYW1lc3BhY2UgcngKK3sKKworQ29u
dGV4dEdMOjpDb250ZXh0R0woY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmc3RhdGUsIFJlbmRlcmVy
R0wgKnJlbmRlcmVyKQorICAgIDogQ29udGV4dEltcGwoc3RhdGUpLCBtUmVuZGVyZXIocmVuZGVy
ZXIpCit7Cit9CisKK0NvbnRleHRHTDo6fkNvbnRleHRHTCgpCit7Cit9CisKK2dsOjpFcnJvciBD
b250ZXh0R0w6OmluaXRpYWxpemUoKQoreworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworfQor
CitDb21waWxlckltcGwgKkNvbnRleHRHTDo6Y3JlYXRlQ29tcGlsZXIoKQoreworICAgIHJldHVy
biBuZXcgQ29tcGlsZXJHTChnZXRGdW5jdGlvbnMoKSk7Cit9CisKK1NoYWRlckltcGwgKkNvbnRl
eHRHTDo6Y3JlYXRlU2hhZGVyKGNvbnN0IGdsOjpTaGFkZXJTdGF0ZSAmZGF0YSkKK3sKKyAgICBy
ZXR1cm4gbmV3IFNoYWRlckdMKGRhdGEsIGdldEZ1bmN0aW9ucygpLCBnZXRXb3JrYXJvdW5kc0dM
KCkpOworfQorCitQcm9ncmFtSW1wbCAqQ29udGV4dEdMOjpjcmVhdGVQcm9ncmFtKGNvbnN0IGds
OjpQcm9ncmFtU3RhdGUgJmRhdGEpCit7CisgICAgcmV0dXJuIG5ldyBQcm9ncmFtR0woZGF0YSwg
Z2V0RnVuY3Rpb25zKCksIGdldFdvcmthcm91bmRzR0woKSwgZ2V0U3RhdGVNYW5hZ2VyKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RXh0ZW5zaW9ucygpLnBhdGhSZW5kZXJpbmcpOwor
fQorCitGcmFtZWJ1ZmZlckltcGwgKkNvbnRleHRHTDo6Y3JlYXRlRnJhbWVidWZmZXIoY29uc3Qg
Z2w6OkZyYW1lYnVmZmVyU3RhdGUgJmRhdGEpCit7CisgICAgcmV0dXJuIG5ldyBGcmFtZWJ1ZmZl
ckdMKGRhdGEsIGdldEZ1bmN0aW9ucygpLCBnZXRTdGF0ZU1hbmFnZXIoKSwgZ2V0V29ya2Fyb3Vu
ZHNHTCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUmVuZGVyZXItPmdldEJsaXR0
ZXIoKSwgZmFsc2UpOworfQorCitUZXh0dXJlSW1wbCAqQ29udGV4dEdMOjpjcmVhdGVUZXh0dXJl
KGNvbnN0IGdsOjpUZXh0dXJlU3RhdGUgJnN0YXRlKQoreworICAgIHJldHVybiBuZXcgVGV4dHVy
ZUdMKHN0YXRlLCBnZXRGdW5jdGlvbnMoKSwgZ2V0V29ya2Fyb3VuZHNHTCgpLCBnZXRTdGF0ZU1h
bmFnZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtUmVuZGVyZXItPmdldEJsaXR0ZXIo
KSk7Cit9CisKK1JlbmRlcmJ1ZmZlckltcGwgKkNvbnRleHRHTDo6Y3JlYXRlUmVuZGVyYnVmZmVy
KCkKK3sKKyAgICByZXR1cm4gbmV3IFJlbmRlcmJ1ZmZlckdMKGdldEZ1bmN0aW9ucygpLCBnZXRX
b3JrYXJvdW5kc0dMKCksIGdldFN0YXRlTWFuYWdlcigpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2V0TmF0aXZlVGV4dHVyZUNhcHMoKSk7Cit9CisKK0J1ZmZlckltcGwgKkNvbnRl
eHRHTDo6Y3JlYXRlQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbmV3IEJ1ZmZlckdMKGdldEZ1bmN0
aW9ucygpLCBnZXRTdGF0ZU1hbmFnZXIoKSk7Cit9CisKK1ZlcnRleEFycmF5SW1wbCAqQ29udGV4
dEdMOjpjcmVhdGVWZXJ0ZXhBcnJheShjb25zdCBnbDo6VmVydGV4QXJyYXlTdGF0ZSAmZGF0YSkK
K3sKKyAgICByZXR1cm4gbmV3IFZlcnRleEFycmF5R0woZGF0YSwgZ2V0RnVuY3Rpb25zKCksIGdl
dFN0YXRlTWFuYWdlcigpKTsKK30KKworUXVlcnlJbXBsICpDb250ZXh0R0w6OmNyZWF0ZVF1ZXJ5
KEdMZW51bSB0eXBlKQoreworICAgIHJldHVybiBuZXcgUXVlcnlHTCh0eXBlLCBnZXRGdW5jdGlv
bnMoKSwgZ2V0U3RhdGVNYW5hZ2VyKCkpOworfQorCitGZW5jZU5WSW1wbCAqQ29udGV4dEdMOjpj
cmVhdGVGZW5jZU5WKCkKK3sKKyAgICByZXR1cm4gbmV3IEZlbmNlTlZHTChnZXRGdW5jdGlvbnMo
KSk7Cit9CisKK0ZlbmNlU3luY0ltcGwgKkNvbnRleHRHTDo6Y3JlYXRlRmVuY2VTeW5jKCkKK3sK
KyAgICByZXR1cm4gbmV3IEZlbmNlU3luY0dMKGdldEZ1bmN0aW9ucygpKTsKK30KKworVHJhbnNm
b3JtRmVlZGJhY2tJbXBsICpDb250ZXh0R0w6OmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKGNvbnN0
IGdsOjpUcmFuc2Zvcm1GZWVkYmFja1N0YXRlICZzdGF0ZSkKK3sKKyAgICByZXR1cm4gbmV3IFRy
YW5zZm9ybUZlZWRiYWNrR0woc3RhdGUsIGdldEZ1bmN0aW9ucygpLCBnZXRTdGF0ZU1hbmFnZXIo
KSk7Cit9CisKK1NhbXBsZXJJbXBsICpDb250ZXh0R0w6OmNyZWF0ZVNhbXBsZXIoKQoreworICAg
IHJldHVybiBuZXcgU2FtcGxlckdMKGdldEZ1bmN0aW9ucygpLCBnZXRTdGF0ZU1hbmFnZXIoKSk7
Cit9CisKK3N0ZDo6dmVjdG9yPFBhdGhJbXBsICo+IENvbnRleHRHTDo6Y3JlYXRlUGF0aHMoR0xz
aXplaSByYW5nZSkKK3sKKyAgICBjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3MgPSBnZXRGdW5jdGlv
bnMoKTsKKworICAgIHN0ZDo6dmVjdG9yPFBhdGhJbXBsICo+IHJldDsKKyAgICByZXQucmVzZXJ2
ZShyYW5nZSk7CisKKyAgICBjb25zdCBHTHVpbnQgZmlyc3QgPSBmdW5jcy0+Z2VuUGF0aHNOVihy
YW5nZSk7CisgICAgaWYgKGZpcnN0ID09IDApCisgICAgICAgIHJldHVybiByZXQ7CisKKyAgICBm
b3IgKEdMc2l6ZWkgaSA9IDA7IGkgPCByYW5nZTsgKytpKQorICAgIHsKKyAgICAgICAgY29uc3Qg
YXV0byBpZCA9IGZpcnN0ICsgaTsKKyAgICAgICAgcmV0LnB1c2hfYmFjayhuZXcgUGF0aEdMKGZ1
bmNzLCBpZCkpOworICAgIH0KKworICAgIHJldHVybiByZXQ7Cit9CisKK2dsOjpFcnJvciBDb250
ZXh0R0w6OmZsdXNoKCkKK3sKKyAgICByZXR1cm4gbVJlbmRlcmVyLT5mbHVzaCgpOworfQorCitn
bDo6RXJyb3IgQ29udGV4dEdMOjpmaW5pc2goKQoreworICAgIHJldHVybiBtUmVuZGVyZXItPmZp
bmlzaCgpOworfQorCitnbDo6RXJyb3IgQ29udGV4dEdMOjpkcmF3QXJyYXlzKEdMZW51bSBtb2Rl
LCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCkKK3sKKyAgICByZXR1cm4gbVJlbmRlcmVyLT5k
cmF3QXJyYXlzKG1TdGF0ZSwgbW9kZSwgZmlyc3QsIGNvdW50KTsKK30KKworZ2w6OkVycm9yIENv
bnRleHRHTDo6ZHJhd0FycmF5c0luc3RhbmNlZChHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZmlyc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VDb3VudCkKK3sKKyAgICBy
ZXR1cm4gbVJlbmRlcmVyLT5kcmF3QXJyYXlzSW5zdGFuY2VkKG1TdGF0ZSwgbW9kZSwgZmlyc3Qs
IGNvdW50LCBpbnN0YW5jZUNvdW50KTsKK30KKworZ2w6OkVycm9yIENvbnRleHRHTDo6ZHJhd0Vs
ZW1lbnRzKEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRp
Y2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpJbmRleFJh
bmdlICZpbmRleFJhbmdlKQoreworICAgIHJldHVybiBtUmVuZGVyZXItPmRyYXdFbGVtZW50cyht
U3RhdGUsIG1vZGUsIGNvdW50LCB0eXBlLCBpbmRpY2VzLCBpbmRleFJhbmdlKTsKK30KKworZ2w6
OkVycm9yIENvbnRleHRHTDo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdMZW51bSBtb2RlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpp
bmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgaW5zdGFuY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpJbmRleFJhbmdlICZpbmRleFJhbmdlKQoreworICAgIHJldHVybiBtUmVuZGVy
ZXItPmRyYXdFbGVtZW50c0luc3RhbmNlZChtU3RhdGUsIG1vZGUsIGNvdW50LCB0eXBlLCBpbmRp
Y2VzLCBpbnN0YW5jZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluZGV4UmFuZ2UpOworfQorCitnbDo6RXJyb3IgQ29udGV4dEdMOjpkcmF3UmFuZ2VFbGVt
ZW50cyhHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQg
KmluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkKK3sKKyAgICByZXR1cm4gbVJlbmRlcmVyLT5kcmF3
UmFuZ2VFbGVtZW50cyhtU3RhdGUsIG1vZGUsIHN0YXJ0LCBlbmQsIGNvdW50LCB0eXBlLCBpbmRp
Y2VzLCBpbmRleFJhbmdlKTsKK30KKwordm9pZCBDb250ZXh0R0w6OnN0ZW5jaWxGaWxsUGF0aChj
b25zdCBnbDo6UGF0aCAqcGF0aCwgR0xlbnVtIGZpbGxNb2RlLCBHTHVpbnQgbWFzaykKK3sKKyAg
ICBtUmVuZGVyZXItPnN0ZW5jaWxGaWxsUGF0aChtU3RhdGUsIHBhdGgsIGZpbGxNb2RlLCBtYXNr
KTsKK30KKwordm9pZCBDb250ZXh0R0w6OnN0ZW5jaWxTdHJva2VQYXRoKGNvbnN0IGdsOjpQYXRo
ICpwYXRoLCBHTGludCByZWZlcmVuY2UsIEdMdWludCBtYXNrKQoreworICAgIG1SZW5kZXJlci0+
c3RlbmNpbFN0cm9rZVBhdGgobVN0YXRlLCBwYXRoLCByZWZlcmVuY2UsIG1hc2spOworfQorCit2
b2lkIENvbnRleHRHTDo6Y292ZXJGaWxsUGF0aChjb25zdCBnbDo6UGF0aCAqcGF0aCwgR0xlbnVt
IGNvdmVyTW9kZSkKK3sKKyAgICBtUmVuZGVyZXItPmNvdmVyRmlsbFBhdGgobVN0YXRlLCBwYXRo
LCBjb3Zlck1vZGUpOworfQorCit2b2lkIENvbnRleHRHTDo6Y292ZXJTdHJva2VQYXRoKGNvbnN0
IGdsOjpQYXRoICpwYXRoLCBHTGVudW0gY292ZXJNb2RlKQoreworICAgIG1SZW5kZXJlci0+Y292
ZXJTdHJva2VQYXRoKG1TdGF0ZSwgcGF0aCwgY292ZXJNb2RlKTsKK30KKwordm9pZCBDb250ZXh0
R0w6OnN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aChjb25zdCBnbDo6UGF0aCAqcGF0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSkKK3sK
KyAgICBtUmVuZGVyZXItPnN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aChtU3RhdGUsIHBhdGgsIGZp
bGxNb2RlLCBtYXNrLCBjb3Zlck1vZGUpOworfQorCit2b2lkIENvbnRleHRHTDo6c3RlbmNpbFRo
ZW5Db3ZlclN0cm9rZVBhdGgoY29uc3QgZ2w6OlBhdGggKnBhdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpCit7CisgICAg
bVJlbmRlcmVyLT5zdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aChtU3RhdGUsIHBhdGgsIHJlZmVy
ZW5jZSwgbWFzaywgY292ZXJNb2RlKTsKK30KKwordm9pZCBDb250ZXh0R0w6OmNvdmVyRmlsbFBh
dGhJbnN0YW5jZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJh
bnNmb3JtVmFsdWVzKQoreworICAgIG1SZW5kZXJlci0+Y292ZXJGaWxsUGF0aEluc3RhbmNlZCht
U3RhdGUsIHBhdGhzLCBjb3Zlck1vZGUsIHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcyk7
Cit9CisKK3ZvaWQgQ29udGV4dEdMOjpjb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWQoY29uc3Qgc3Rk
Ojp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQor
eworICAgIG1SZW5kZXJlci0+Y292ZXJTdHJva2VQYXRoSW5zdGFuY2VkKG1TdGF0ZSwgcGF0aHMs
IGNvdmVyTW9kZSwgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzKTsKK30KKwordm9pZCBD
b250ZXh0R0w6OnN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6
UGF0aCAqPiAmcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBmaWxsTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCit7CisgICAgbVJlbmRlcmVy
LT5zdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWQobVN0YXRlLCBwYXRocywgZmlsbE1vZGUsIG1hc2ss
IHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHJhbnNmb3JtVmFsdWVzKTsKK30KKwordm9pZCBDb250ZXh0R0w6OnN0ZW5jaWxTdHJva2VQYXRo
SW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xm
bG9hdCAqdHJhbnNmb3JtVmFsdWVzKQoreworICAgIG1SZW5kZXJlci0+c3RlbmNpbFN0cm9rZVBh
dGhJbnN0YW5jZWQobVN0YXRlLCBwYXRocywgcmVmZXJlbmNlLCBtYXNrLCB0cmFuc2Zvcm1UeXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtVmFs
dWVzKTsKK30KKwordm9pZCBDb250ZXh0R0w6OnN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3Rh
bmNlZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBm
aWxsTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMp
Cit7CisgICAgbVJlbmRlcmVyLT5zdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWQobVN0
YXRlLCBwYXRocywgY292ZXJNb2RlLCBmaWxsTW9kZSwgbWFzaywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1W
YWx1ZXMpOworfQorCit2b2lkIENvbnRleHRHTDo6c3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJ
bnN0YW5jZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1v
ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgcmVmZXJlbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRy
YW5zZm9ybVZhbHVlcykKK3sKKyAgICBtUmVuZGVyZXItPnN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQ
YXRoSW5zdGFuY2VkKG1TdGF0ZSwgcGF0aHMsIGNvdmVyTW9kZSwgcmVmZXJlbmNlLCBtYXNrLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNm
b3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzKTsKK30KKworR0xlbnVtIENvbnRleHRHTDo6Z2V0UmVz
ZXRTdGF0dXMoKQoreworICAgIHJldHVybiBtUmVuZGVyZXItPmdldFJlc2V0U3RhdHVzKCk7Cit9
CisKK3N0ZDo6c3RyaW5nIENvbnRleHRHTDo6Z2V0VmVuZG9yU3RyaW5nKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbVJlbmRlcmVyLT5nZXRWZW5kb3JTdHJpbmcoKTsKK30KKworc3RkOjpzdHJpbmcg
Q29udGV4dEdMOjpnZXRSZW5kZXJlckRlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bVJlbmRlcmVyLT5nZXRSZW5kZXJlckRlc2NyaXB0aW9uKCk7Cit9CisKK3ZvaWQgQ29udGV4dEdM
OjppbnNlcnRFdmVudE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKQor
eworICAgIG1SZW5kZXJlci0+aW5zZXJ0RXZlbnRNYXJrZXIobGVuZ3RoLCBtYXJrZXIpOworfQor
Cit2b2lkIENvbnRleHRHTDo6cHVzaEdyb3VwTWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBj
aGFyICptYXJrZXIpCit7CisgICAgbVJlbmRlcmVyLT5wdXNoR3JvdXBNYXJrZXIobGVuZ3RoLCBt
YXJrZXIpOworfQorCit2b2lkIENvbnRleHRHTDo6cG9wR3JvdXBNYXJrZXIoKQoreworICAgIG1S
ZW5kZXJlci0+cG9wR3JvdXBNYXJrZXIoKTsKK30KKwordm9pZCBDb250ZXh0R0w6OnN5bmNTdGF0
ZShjb25zdCBnbDo6U3RhdGUgJnN0YXRlLCBjb25zdCBnbDo6U3RhdGU6OkRpcnR5Qml0cyAmZGly
dHlCaXRzKQoreworICAgIG1SZW5kZXJlci0+Z2V0U3RhdGVNYW5hZ2VyKCktPnN5bmNTdGF0ZShz
dGF0ZSwgZGlydHlCaXRzKTsKK30KKworR0xpbnQgQ29udGV4dEdMOjpnZXRHUFVEaXNqb2ludCgp
Cit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0R1BVRGlzam9pbnQoKTsKK30KKworR0xpbnQ2
NCBDb250ZXh0R0w6OmdldFRpbWVzdGFtcCgpCit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0
VGltZXN0YW1wKCk7Cit9CisKK3ZvaWQgQ29udGV4dEdMOjpvbk1ha2VDdXJyZW50KGNvbnN0IGds
OjpDb250ZXh0U3RhdGUgJmRhdGEpCit7CisgICAgLy8gUXVlcmllcyBuZWVkIHRvIGJlIHBhdXNl
ZC9yZXN1bWVkIG9uIGNvbnRleHQgc3dpdGNoZXMKKyAgICBtUmVuZGVyZXItPmdldFN0YXRlTWFu
YWdlcigpLT5vbk1ha2VDdXJyZW50KGRhdGEpOworfQorCitjb25zdCBnbDo6Q2FwcyAmQ29udGV4
dEdMOjpnZXROYXRpdmVDYXBzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXRO
YXRpdmVDYXBzKCk7Cit9CisKK2NvbnN0IGdsOjpUZXh0dXJlQ2Fwc01hcCAmQ29udGV4dEdMOjpn
ZXROYXRpdmVUZXh0dXJlQ2FwcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0
TmF0aXZlVGV4dHVyZUNhcHMoKTsKK30KKworY29uc3QgZ2w6OkV4dGVuc2lvbnMgJkNvbnRleHRH
TDo6Z2V0TmF0aXZlRXh0ZW5zaW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+
Z2V0TmF0aXZlRXh0ZW5zaW9ucygpOworfQorCitjb25zdCBnbDo6TGltaXRhdGlvbnMgJkNvbnRl
eHRHTDo6Z2V0TmF0aXZlTGltaXRhdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBtUmVuZGVy
ZXItPmdldE5hdGl2ZUxpbWl0YXRpb25zKCk7Cit9CisKK2NvbnN0IEZ1bmN0aW9uc0dMICpDb250
ZXh0R0w6OmdldEZ1bmN0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0
RnVuY3Rpb25zKCk7Cit9CisKK1N0YXRlTWFuYWdlckdMICpDb250ZXh0R0w6OmdldFN0YXRlTWFu
YWdlcigpCit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0U3RhdGVNYW5hZ2VyKCk7Cit9CisK
K2NvbnN0IFdvcmthcm91bmRzR0wgJkNvbnRleHRHTDo6Z2V0V29ya2Fyb3VuZHNHTCgpCit7Cisg
ICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0V29ya2Fyb3VuZHMoKTsKK30KKworfSAgLy8gbmFtZXNw
YWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvQ29udGV4dEdMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0NvbnRleHRHTC5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Db250ZXh0R0wu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4MyBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIENvbnRleHRH
TDoKKy8vICAgT3BlbkdMLXNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgYXNzb2NpYXRlZCB3aXRoIGEg
R0wgQ29udGV4dC4KKy8vCisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfR0xfQ09OVEVYVEdM
X0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0dMX0NPTlRFWFRHTF9IXworCisjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvQ29udGV4dEltcGwuaCIKKworbmFtZXNwYWNlIHNoCit7Citz
dHJ1Y3QgQmxvY2tNZW1iZXJJbmZvOworfQorCituYW1lc3BhY2UgcngKK3sKK2NsYXNzIEZ1bmN0
aW9uc0dMOworY2xhc3MgUmVuZGVyZXJHTDsKK2NsYXNzIFN0YXRlTWFuYWdlckdMOworc3RydWN0
IFdvcmthcm91bmRzR0w7CisKK2NsYXNzIENvbnRleHRHTCA6IHB1YmxpYyBDb250ZXh0SW1wbAor
eworICBwdWJsaWM6CisgICAgQ29udGV4dEdMKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJnN0YXRl
LCBSZW5kZXJlckdMICpyZW5kZXJlcik7CisgICAgfkNvbnRleHRHTCgpIG92ZXJyaWRlOworCisg
ICAgZ2w6OkVycm9yIGluaXRpYWxpemUoKSBvdmVycmlkZTsKKworICAgIC8vIFNoYWRlciBjcmVh
dGlvbgorICAgIENvbXBpbGVySW1wbCAqY3JlYXRlQ29tcGlsZXIoKSBvdmVycmlkZTsKKyAgICBT
aGFkZXJJbXBsICpjcmVhdGVTaGFkZXIoY29uc3QgZ2w6OlNoYWRlclN0YXRlICZkYXRhKSBvdmVy
cmlkZTsKKyAgICBQcm9ncmFtSW1wbCAqY3JlYXRlUHJvZ3JhbShjb25zdCBnbDo6UHJvZ3JhbVN0
YXRlICZkYXRhKSBvdmVycmlkZTsKKworICAgIC8vIEZyYW1lYnVmZmVyIGNyZWF0aW9uCisgICAg
RnJhbWVidWZmZXJJbXBsICpjcmVhdGVGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXJT
dGF0ZSAmZGF0YSkgb3ZlcnJpZGU7CisKKyAgICAvLyBUZXh0dXJlIGNyZWF0aW9uCisgICAgVGV4
dHVyZUltcGwgKmNyZWF0ZVRleHR1cmUoY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmc3RhdGUpIG92
ZXJyaWRlOworCisgICAgLy8gUmVuZGVyYnVmZmVyIGNyZWF0aW9uCisgICAgUmVuZGVyYnVmZmVy
SW1wbCAqY3JlYXRlUmVuZGVyYnVmZmVyKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBCdWZmZXIgY3Jl
YXRpb24KKyAgICBCdWZmZXJJbXBsICpjcmVhdGVCdWZmZXIoKSBvdmVycmlkZTsKKworICAgIC8v
IFZlcnRleCBBcnJheSBjcmVhdGlvbgorICAgIFZlcnRleEFycmF5SW1wbCAqY3JlYXRlVmVydGV4
QXJyYXkoY29uc3QgZ2w6OlZlcnRleEFycmF5U3RhdGUgJmRhdGEpIG92ZXJyaWRlOworCisgICAg
Ly8gUXVlcnkgYW5kIEZlbmNlIGNyZWF0aW9uCisgICAgUXVlcnlJbXBsICpjcmVhdGVRdWVyeShH
TGVudW0gdHlwZSkgb3ZlcnJpZGU7CisgICAgRmVuY2VOVkltcGwgKmNyZWF0ZUZlbmNlTlYoKSBv
dmVycmlkZTsKKyAgICBGZW5jZVN5bmNJbXBsICpjcmVhdGVGZW5jZVN5bmMoKSBvdmVycmlkZTsK
KworICAgIC8vIFRyYW5zZm9ybSBGZWVkYmFjayBjcmVhdGlvbgorICAgIFRyYW5zZm9ybUZlZWRi
YWNrSW1wbCAqY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soCisgICAgICAgIGNvbnN0IGdsOjpUcmFu
c2Zvcm1GZWVkYmFja1N0YXRlICZzdGF0ZSkgb3ZlcnJpZGU7CisKKyAgICAvLyBTYW1wbGVyIG9i
amVjdCBjcmVhdGlvbgorICAgIFNhbXBsZXJJbXBsICpjcmVhdGVTYW1wbGVyKCkgb3ZlcnJpZGU7
CisKKyAgICAvLyBQYXRoIG9iamVjdCBjcmVhdGlvbgorICAgIHN0ZDo6dmVjdG9yPFBhdGhJbXBs
ICo+IGNyZWF0ZVBhdGhzKEdMc2l6ZWkgcmFuZ2UpIG92ZXJyaWRlOworCisgICAgLy8gRmx1c2gg
YW5kIGZpbmlzaC4KKyAgICBnbDo6RXJyb3IgZmx1c2goKSBvdmVycmlkZTsKKyAgICBnbDo6RXJy
b3IgZmluaXNoKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBEcmF3aW5nIG1ldGhvZHMuCisgICAgZ2w6
OkVycm9yIGRyYXdBcnJheXMoR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50
KSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgZHJhd0FycmF5c0luc3RhbmNlZChHTGVudW0gbW9k
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBmaXJzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VDb3VudCkgb3ZlcnJpZGU7CisK
KyAgICBnbDo6RXJyb3IgZHJhd0VsZW1lbnRzKEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRp
Y2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmlu
ZGV4UmFuZ2UpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBkcmF3RWxlbWVudHNJbnN0YW5jZWQo
R0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGlj
ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNl
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpJbmRleFJh
bmdlICZpbmRleFJhbmdlKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgZHJhd1JhbmdlRWxlbWVu
dHMoR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBz
dGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGVuZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpIG92ZXJyaWRlOworCisgICAg
Ly8gQ0hST01JVU1fcGF0aF9yZW5kZXJpbmcgaW1wbGVtZW50YXRpb24KKyAgICB2b2lkIHN0ZW5j
aWxGaWxsUGF0aChjb25zdCBnbDo6UGF0aCAqcGF0aCwgR0xlbnVtIGZpbGxNb2RlLCBHTHVpbnQg
bWFzaykgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGVuY2lsU3Ryb2tlUGF0aChjb25zdCBnbDo6UGF0
aCAqcGF0aCwgR0xpbnQgcmVmZXJlbmNlLCBHTHVpbnQgbWFzaykgb3ZlcnJpZGU7CisgICAgdm9p
ZCBjb3ZlckZpbGxQYXRoKGNvbnN0IGdsOjpQYXRoICpwYXRoLCBHTGVudW0gY292ZXJNb2RlKSBv
dmVycmlkZTsKKyAgICB2b2lkIGNvdmVyU3Ryb2tlUGF0aChjb25zdCBnbDo6UGF0aCAqcGF0aCwg
R0xlbnVtIGNvdmVyTW9kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGVuY2lsVGhlbkNvdmVyRmls
bFBhdGgoY29uc3QgZ2w6OlBhdGggKnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGZpbGxNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBj
b3Zlck1vZGUpIG92ZXJyaWRlOworICAgIHZvaWQgc3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGgo
Y29uc3QgZ2w6OlBhdGggKnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCByZWZlcmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBj
b3Zlck1vZGUpIG92ZXJyaWRlOworICAgIHZvaWQgY292ZXJGaWxsUGF0aEluc3RhbmNlZChjb25z
dCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpIG92ZXJyaWRlOworICAgIHZvaWQgY292
ZXJTdHJva2VQYXRoSW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRo
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9y
bVZhbHVlcykgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWQoY29u
c3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpIG92ZXJyaWRlOworICAgIHZvaWQgc3RlbmNp
bFN0cm9rZVBhdGhJbnN0YW5jZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZh
bHVlcykgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5j
ZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxv
YXQgKnRyYW5zZm9ybVZhbHVlcykgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGVuY2lsVGhlbkNvdmVy
U3Ryb2tlUGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292
ZXJNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgcmVmZXJlbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykgb3ZlcnJpZGU7
CisKKyAgICAvLyBEZXZpY2UgbG9zcworICAgIEdMZW51bSBnZXRSZXNldFN0YXR1cygpIG92ZXJy
aWRlOworCisgICAgLy8gVmVuZG9yIGFuZCBkZXNjcmlwdGlvbiBzdHJpbmdzLgorICAgIHN0ZDo6
c3RyaW5nIGdldFZlbmRvclN0cmluZygpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6c3RyaW5n
IGdldFJlbmRlcmVyRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsKKworICAgIC8vIERlYnVn
IG1hcmtlcnMuCisgICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29u
c3QgY2hhciAqbWFya2VyKSBvdmVycmlkZTsKKyAgICB2b2lkIHB1c2hHcm91cE1hcmtlcihHTHNp
emVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKSBvdmVycmlkZTsKKyAgICB2b2lkIHBvcEdy
b3VwTWFya2VyKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBTdGF0ZSBzeW5jIHdpdGggZGlydHkgYml0
cy4KKyAgICB2b2lkIHN5bmNTdGF0ZShjb25zdCBnbDo6U3RhdGUgJnN0YXRlLCBjb25zdCBnbDo6
U3RhdGU6OkRpcnR5Qml0cyAmZGlydHlCaXRzKSBvdmVycmlkZTsKKworICAgIC8vIERpc2pvaW50
IHRpbWVyIHF1ZXJpZXMKKyAgICBHTGludCBnZXRHUFVEaXNqb2ludCgpIG92ZXJyaWRlOworICAg
IEdMaW50NjQgZ2V0VGltZXN0YW1wKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBDb250ZXh0IHN3aXRj
aGluZworICAgIHZvaWQgb25NYWtlQ3VycmVudChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRh
KSBvdmVycmlkZTsKKworICAgIC8vIENhcHMgcXVlcmllcworICAgIGNvbnN0IGdsOjpDYXBzICZn
ZXROYXRpdmVDYXBzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgZ2w6OlRleHR1cmVDYXBz
TWFwICZnZXROYXRpdmVUZXh0dXJlQ2FwcygpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IGds
OjpFeHRlbnNpb25zICZnZXROYXRpdmVFeHRlbnNpb25zKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Y29uc3QgZ2w6OkxpbWl0YXRpb25zICZnZXROYXRpdmVMaW1pdGF0aW9ucygpIGNvbnN0IG92ZXJy
aWRlOworCisgICAgLy8gSGFuZGxlIGhlbHBlcnMKKyAgICBjb25zdCBGdW5jdGlvbnNHTCAqZ2V0
RnVuY3Rpb25zKCkgY29uc3Q7CisgICAgU3RhdGVNYW5hZ2VyR0wgKmdldFN0YXRlTWFuYWdlcigp
OworICAgIGNvbnN0IFdvcmthcm91bmRzR0wgJmdldFdvcmthcm91bmRzR0woKTsKKworICBwcml2
YXRlOgorICAgIFJlbmRlcmVyR0wgKm1SZW5kZXJlcjsKK307CisKK30gIC8vIG5hbWVzcGFjZSBy
eAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX0dMX0NPTlRFWFRHTF9IXwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Rpc3BsYXlH
TC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL0Rpc3BsYXlHTC5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9EaXNwbGF5R0wuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMiw3ICsxMiw5IEBACiAjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4
dC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0Rpc3BsYXkuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9T
dXJmYWNlLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvQ29udGV4dEdMLmgiCiAj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyZXJHTC5oIgorI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZ2wvU3VyZmFjZUdMLmgiCiAKICNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CkBAIC01
NSwxNyArNTcsMTcgQEAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotZ2w6OkNvbnRleHQgKkRp
c3BsYXlHTDo6Y3JlYXRlQ29udGV4dChjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Q29udGV4dCAqc2hhcmVD
b250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6
OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKK0NvbnRleHRJbXBsICpEaXNwbGF5R0w6OmNyZWF0ZUNv
bnRleHQoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmc3RhdGUpCiB7CiAgICAgQVNTRVJUKG1SZW5k
ZXJlciAhPSBudWxscHRyKTsKLSAgICByZXR1cm4gbmV3IGdsOjpDb250ZXh0KGNvbmZpZywgc2hh
cmVDb250ZXh0LCBtUmVuZGVyZXIsIGF0dHJpYnMpOworICAgIHJldHVybiBuZXcgQ29udGV4dEdM
KHN0YXRlLCBtUmVuZGVyZXIpOwogfQogCi1TdHJlYW1JbXBsICpEaXNwbGF5R0w6OmNyZWF0ZVN0
cmVhbShjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKK1N0cmVhbVByb2R1Y2VySW1w
bCAqRGlzcGxheUdMOjpjcmVhdGVTdHJlYW1Qcm9kdWNlckQzRFRleHR1cmVOVjEyKAorICAgIGVn
bDo6U3RyZWFtOjpDb25zdW1lclR5cGUgY29uc3VtZXJUeXBlLAorICAgIGNvbnN0IGVnbDo6QXR0
cmlidXRlTWFwICZhdHRyaWJzKQogewotICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgVU5JTVBMRU1F
TlRFRCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC03NiwxNCArNzgsMTcgQEAKICAg
ICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwogICAgIH0KIAorICAgIC8vIFBh
dXNlIHRyYW5zZm9ybSBmZWVkYmFjayBiZWZvcmUgbWFraW5nIGEgbmV3IHN1cmZhY2UgY3VycmVu
dCwgdG8gd29ya2Fyb3VuZCBhbmdsZWJ1Zy5jb20vMTQyNgorICAgIENvbnRleHRHTCAqZ2xDb250
ZXh0ID0gR2V0SW1wbEFzPENvbnRleHRHTD4oY29udGV4dCk7CisgICAgZ2xDb250ZXh0LT5nZXRT
dGF0ZU1hbmFnZXIoKS0+cGF1c2VUcmFuc2Zvcm1GZWVkYmFjayhjb250ZXh0LT5nZXRDb250ZXh0
U3RhdGUoKSk7CisKICAgICBTdXJmYWNlR0wgKmdsRHJhd1N1cmZhY2UgPSBHZXRJbXBsQXM8U3Vy
ZmFjZUdMPihkcmF3U3VyZmFjZSk7CiAgICAgcmV0dXJuIGdsRHJhd1N1cmZhY2UtPm1ha2VDdXJy
ZW50KCk7CiB9CiAKLWNvbnN0IGdsOjpWZXJzaW9uICZEaXNwbGF5R0w6OmdldE1heFN1cHBvcnRl
ZEVTVmVyc2lvbigpIGNvbnN0CitnbDo6VmVyc2lvbiBEaXNwbGF5R0w6OmdldE1heFN1cHBvcnRl
ZEVTVmVyc2lvbigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1SZW5kZXJlciAhPSBudWxscHRyKTsK
ICAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXRNYXhTdXBwb3J0ZWRFU1ZlcnNpb24oKTsKIH0KLQog
fQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L0Rpc3BsYXlHTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9EaXNwbGF5R0wuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Rpc3BsYXlHTC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxOSArMzAsMTkgQEAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVnbDo6SW1hZ2VTaWJsaW5nICpidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CiAKLSAgICBn
bDo6Q29udGV4dCAqY3JlYXRlQ29udGV4dChjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpDb250ZXh0ICpzaGFyZUNvbnRl
eHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVN
YXAgJmF0dHJpYnMpIG92ZXJyaWRlOworICAgIENvbnRleHRJbXBsICpjcmVhdGVDb250ZXh0KGNv
bnN0IGdsOjpDb250ZXh0U3RhdGUgJnN0YXRlKSBvdmVycmlkZTsKIAotICAgIFN0cmVhbUltcGwg
KmNyZWF0ZVN0cmVhbShjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7
CisgICAgU3RyZWFtUHJvZHVjZXJJbXBsICpjcmVhdGVTdHJlYW1Qcm9kdWNlckQzRFRleHR1cmVO
VjEyKAorICAgICAgICBlZ2w6OlN0cmVhbTo6Q29uc3VtZXJUeXBlIGNvbnN1bWVyVHlwZSwKKyAg
ICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOwogCiAgICAg
ZWdsOjpFcnJvciBtYWtlQ3VycmVudChlZ2w6OlN1cmZhY2UgKmRyYXdTdXJmYWNlLCBlZ2w6OlN1
cmZhY2UgKnJlYWRTdXJmYWNlLCBnbDo6Q29udGV4dCAqY29udGV4dCkgb3ZlcnJpZGU7CiAKICAg
ICB2aXJ0dWFsIGVnbDo6RXJyb3IgZ2V0RHJpdmVyVmVyc2lvbihzdGQ6OnN0cmluZyAqdmVyc2lv
bikgY29uc3QgPSAwOworICAgIGdsOjpWZXJzaW9uIGdldE1heFN1cHBvcnRlZEVTVmVyc2lvbigp
IGNvbnN0IG92ZXJyaWRlOwogCiAgIHByb3RlY3RlZDoKICAgICBSZW5kZXJlckdMICpnZXRSZW5k
ZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1SZW5kZXJlcjsgfTsKLSAgICBjb25zdCBnbDo6VmVyc2lv
biAmZ2V0TWF4U3VwcG9ydGVkRVNWZXJzaW9uKCkgY29uc3Q7CiAKICAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIGNvbnN0IEZ1bmN0aW9uc0dMICpnZXRGdW5jdGlvbnNHTCgpIGNvbnN0ID0gMDsKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9GcmFt
ZWJ1ZmZlckdMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVidWZmZXJHTC5jcHAJKHJldmlzaW9uIDIwODAyMSkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9GcmFt
ZWJ1ZmZlckdMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAsMzIgKzEwLDM5IEBACiAKICNpbmNs
dWRlICJjb21tb24vQml0U2V0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIK
LSNpbmNsdWRlICJsaWJBTkdMRS9EYXRhLmgiCisjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dFN0
YXRlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvU3RhdGUuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9G
cmFtZWJ1ZmZlckF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvZm9ybWF0dXRpbHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9Db250ZXh0SW1wbC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL0Js
aXRHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL0Z1bmN0aW9uc0dMLmgiCiAj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyYnVmZmVyR0wuaCIKICNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2dsL1RleHR1cmVHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2dsL1dvcmthcm91bmRzR0wuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9mb3Jt
YXR1dGlsc2dsLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvcmVuZGVyZXJnbF91
dGlscy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1BsYXRmb3JtLmgiCiAKIHVzaW5nIG5hbWVzcGFj
ZSBnbDsKK3VzaW5nIGFuZ2xlOjpDaGVja2VkTnVtZXJpYzsKIAogbmFtZXNwYWNlIHJ4CiB7CiAK
LUZyYW1lYnVmZmVyR0w6OkZyYW1lYnVmZmVyR0woY29uc3QgRnJhbWVidWZmZXI6OkRhdGEgJmRh
dGEsCitGcmFtZWJ1ZmZlckdMOjpGcmFtZWJ1ZmZlckdMKGNvbnN0IEZyYW1lYnVmZmVyU3RhdGUg
JnN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGdW5jdGlvbnNHTCAq
ZnVuY3Rpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZU1hbmFnZXJHTCAq
c3RhdGVNYW5hZ2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JrYXJv
dW5kc0dMICZ3b3JrYXJvdW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmxpdEdM
ICpibGl0dGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzRGVmYXVsdCkK
LSAgICA6IEZyYW1lYnVmZmVySW1wbChkYXRhKSwKKyAgICA6IEZyYW1lYnVmZmVySW1wbChzdGF0
ZSksCiAgICAgICBtRnVuY3Rpb25zKGZ1bmN0aW9ucyksCiAgICAgICBtU3RhdGVNYW5hZ2VyKHN0
YXRlTWFuYWdlciksCiAgICAgICBtV29ya2Fyb3VuZHMod29ya2Fyb3VuZHMpLAorICAgICAgbUJs
aXR0ZXIoYmxpdHRlciksCiAgICAgICBtRnJhbWVidWZmZXJJRCgwKSwKICAgICAgIG1Jc0RlZmF1
bHQoaXNEZWZhdWx0KQogewpAQCAtNDYsMTQgKzUzLDE2IEBACiB9CiAKIEZyYW1lYnVmZmVyR0w6
OkZyYW1lYnVmZmVyR0woR0x1aW50IGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBGcmFtZWJ1ZmZlcjo6RGF0YSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgRnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFdvcmthcm91bmRzR0wgJndvcmthcm91bmRzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBCbGl0R0wgKmJsaXR0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFN0YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIpCi0gICAgOiBGcmFtZWJ1ZmZlcklt
cGwoZGF0YSksCisgICAgOiBGcmFtZWJ1ZmZlckltcGwoc3RhdGUpLAogICAgICAgbUZ1bmN0aW9u
cyhmdW5jdGlvbnMpLAogICAgICAgbVN0YXRlTWFuYWdlcihzdGF0ZU1hbmFnZXIpLAogICAgICAg
bVdvcmthcm91bmRzKHdvcmthcm91bmRzKSwKKyAgICAgIG1CbGl0dGVyKGJsaXR0ZXIpLAogICAg
ICAgbUZyYW1lYnVmZmVySUQoaWQpLAogICAgICAgbUlzRGVmYXVsdCh0cnVlKQogewpAQCAtMTQ5
LDcgKzE1OCw3IEBACiAgICAgcmV0dXJuIEVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotRXJyb3Ig
RnJhbWVidWZmZXJHTDo6Y2xlYXIoY29uc3QgRGF0YSAmZGF0YSwgR0xiaXRmaWVsZCBtYXNrKQor
RXJyb3IgRnJhbWVidWZmZXJHTDo6Y2xlYXIoQ29udGV4dEltcGwgKmNvbnRleHQsIEdMYml0Zmll
bGQgbWFzaykKIHsKICAgICBzeW5jQ2xlYXJTdGF0ZShtYXNrKTsKICAgICBtU3RhdGVNYW5hZ2Vy
LT5iaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GcmFtZWJ1ZmZlcklEKTsKQEAgLTE1
OCw3ICsxNjcsNyBAQAogICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKLUVycm9y
IEZyYW1lYnVmZmVyR0w6OmNsZWFyQnVmZmVyZnYoY29uc3QgRGF0YSAmZGF0YSwKK0Vycm9yIEZy
YW1lYnVmZmVyR0w6OmNsZWFyQnVmZmVyZnYoQ29udGV4dEltcGwgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBidWZmZXIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlcykKQEAgLTE3MCw3ICsxNzks
NyBAQAogICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKLUVycm9yIEZyYW1lYnVm
ZmVyR0w6OmNsZWFyQnVmZmVydWl2KGNvbnN0IERhdGEgJmRhdGEsCitFcnJvciBGcmFtZWJ1ZmZl
ckdMOjpjbGVhckJ1ZmZlcnVpdihDb250ZXh0SW1wbCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZXMpCkBAIC0xODIsNyArMTkxLDcgQEAK
ICAgICByZXR1cm4gRXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi1FcnJvciBGcmFtZWJ1ZmZlckdM
OjpjbGVhckJ1ZmZlcml2KGNvbnN0IERhdGEgJmRhdGEsCitFcnJvciBGcmFtZWJ1ZmZlckdMOjpj
bGVhckJ1ZmZlcml2KENvbnRleHRJbXBsICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBkcmF3YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGludCAqdmFsdWVzKQpAQCAtMTk0LDcgKzIwMyw3IEBACiAgICAgcmV0dXJu
IEVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotRXJyb3IgRnJhbWVidWZmZXJHTDo6Y2xlYXJCdWZm
ZXJmaShjb25zdCBEYXRhICZkYXRhLAorRXJyb3IgRnJhbWVidWZmZXJHTDo6Y2xlYXJCdWZmZXJm
aShDb250ZXh0SW1wbCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgZHJhd2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9h
dCBkZXB0aCwKQEAgLTIwOSwyMSArMjE4LDE5IEBACiAKIEdMZW51bSBGcmFtZWJ1ZmZlckdMOjpn
ZXRJbXBsZW1lbnRhdGlvbkNvbG9yUmVhZEZvcm1hdCgpIGNvbnN0CiB7Ci0gICAgY29uc3QgRnJh
bWVidWZmZXJBdHRhY2htZW50ICpyZWFkQXR0YWNobWVudCA9IGdldERhdGEoKS5nZXRSZWFkQXR0
YWNobWVudCgpOwotICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCA9IHJlYWRBdHRhY2htZW50LT5n
ZXRJbnRlcm5hbEZvcm1hdCgpOwotICAgIGNvbnN0IEludGVybmFsRm9ybWF0ICZpbnRlcm5hbEZv
cm1hdEluZm8gICAgPSBHZXRJbnRlcm5hbEZvcm1hdEluZm8oaW50ZXJuYWxGb3JtYXQpOwotICAg
IHJldHVybiBpbnRlcm5hbEZvcm1hdEluZm8uZm9ybWF0OworICAgIGNvbnN0IGF1dG8gKnJlYWRB
dHRhY2htZW50ID0gbVN0YXRlLmdldFJlYWRBdHRhY2htZW50KCk7CisgICAgY29uc3QgRm9ybWF0
ICZmb3JtYXQgICAgICAgPSByZWFkQXR0YWNobWVudC0+Z2V0Rm9ybWF0KCk7CisgICAgcmV0dXJu
IGZvcm1hdC5pbmZvLT5nZXRSZWFkUGl4ZWxzRm9ybWF0KCk7CiB9CiAKIEdMZW51bSBGcmFtZWJ1
ZmZlckdMOjpnZXRJbXBsZW1lbnRhdGlvbkNvbG9yUmVhZFR5cGUoKSBjb25zdAogewotICAgIGNv
bnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqcmVhZEF0dGFjaG1lbnQgPSBnZXREYXRhKCkuZ2V0
UmVhZEF0dGFjaG1lbnQoKTsKLSAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQgPSByZWFkQXR0YWNo
bWVudC0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsKLSAgICBjb25zdCBJbnRlcm5hbEZvcm1hdCAmaW50
ZXJuYWxGb3JtYXRJbmZvICAgID0gR2V0SW50ZXJuYWxGb3JtYXRJbmZvKGludGVybmFsRm9ybWF0
KTsKLSAgICByZXR1cm4gaW50ZXJuYWxGb3JtYXRJbmZvLnR5cGU7CisgICAgY29uc3QgYXV0byAq
cmVhZEF0dGFjaG1lbnQgPSBtU3RhdGUuZ2V0UmVhZEF0dGFjaG1lbnQoKTsKKyAgICBjb25zdCBG
b3JtYXQgJmZvcm1hdCAgICAgICA9IHJlYWRBdHRhY2htZW50LT5nZXRGb3JtYXQoKTsKKyAgICBy
ZXR1cm4gZm9ybWF0LmluZm8tPmdldFJlYWRQaXhlbHNUeXBlKCk7CiB9CiAKLUVycm9yIEZyYW1l
YnVmZmVyR0w6OnJlYWRQaXhlbHMoY29uc3QgU3RhdGUgJnN0YXRlLAorRXJyb3IgRnJhbWVidWZm
ZXJHTDo6cmVhZFBpeGVscyhDb250ZXh0SW1wbCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmYXJlYSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHR5cGUsCkBAIC0yMzEsMzEgKzIzOCwxMjQgQEAKIHsKICAgICAvLyBU
T0RPOiBkb24ndCBzeW5jIHRoZSBwaXhlbCBwYWNrIHN0YXRlIGhlcmUgb25jZSB0aGUgZGlydHkg
Yml0cyBjb250YWluIHRoZSBwaXhlbCBwYWNrIGJ1ZmZlcgogICAgIC8vIGJpbmRpbmcKLSAgICBj
b25zdCBQaXhlbFBhY2tTdGF0ZSAmcGFja1N0YXRlID0gc3RhdGUuZ2V0UGFja1N0YXRlKCk7Cisg
ICAgY29uc3QgUGl4ZWxQYWNrU3RhdGUgJnBhY2tTdGF0ZSA9IGNvbnRleHQtPmdldEdMU3RhdGUo
KS5nZXRQYWNrU3RhdGUoKTsKICAgICBtU3RhdGVNYW5hZ2VyLT5zZXRQaXhlbFBhY2tTdGF0ZShw
YWNrU3RhdGUpOwogCisgICAgbmF0aXZlZ2w6OlJlYWRQaXhlbHNGb3JtYXQgcmVhZFBpeGVsc0Zv
cm1hdCA9CisgICAgICAgIG5hdGl2ZWdsOjpHZXRSZWFkUGl4ZWxzRm9ybWF0KG1GdW5jdGlvbnMs
IG1Xb3JrYXJvdW5kcywgZm9ybWF0LCB0eXBlKTsKKyAgICBHTGVudW0gcmVhZEZvcm1hdCA9IHJl
YWRQaXhlbHNGb3JtYXQuZm9ybWF0OworICAgIEdMZW51bSByZWFkVHlwZSAgID0gcmVhZFBpeGVs
c0Zvcm1hdC50eXBlOworCiAgICAgbVN0YXRlTWFuYWdlci0+YmluZEZyYW1lYnVmZmVyKEdMX1JF
QURfRlJBTUVCVUZGRVIsIG1GcmFtZWJ1ZmZlcklEKTsKLSAgICBtRnVuY3Rpb25zLT5yZWFkUGl4
ZWxzKGFyZWEueCwgYXJlYS55LCBhcmVhLndpZHRoLCBhcmVhLmhlaWdodCwgZm9ybWF0LCB0eXBl
LCBwaXhlbHMpOwogCi0gICAgcmV0dXJuIEVycm9yKEdMX05PX0VSUk9SKTsKKyAgICBpZiAobVdv
cmthcm91bmRzLnBhY2tPdmVybGFwcGluZ1Jvd3NTZXBhcmF0ZWx5UGFja0J1ZmZlciAmJiBwYWNr
U3RhdGUucGl4ZWxCdWZmZXIuZ2V0KCkgJiYKKyAgICAgICAgcGFja1N0YXRlLnJvd0xlbmd0aCAh
PSAwICYmIHBhY2tTdGF0ZS5yb3dMZW5ndGggPCBhcmVhLndpZHRoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHJlYWRQaXhlbHNSb3dCeVJvd1dvcmthcm91bmQoYXJlYSwgcmVhZEZvcm1hdCwgcmVh
ZFR5cGUsIHBhY2tTdGF0ZSwgcGl4ZWxzKTsKKyAgICB9CisKKyAgICBpZiAobVdvcmthcm91bmRz
LnBhY2tMYXN0Um93U2VwYXJhdGVseUZvclBhZGRpbmdJbmNsdXNpb24pCisgICAgeworICAgICAg
ICBnbDo6RXh0ZW50cyBzaXplKGFyZWEud2lkdGgsIGFyZWEuaGVpZ2h0LCAxKTsKKworICAgICAg
ICBib29sIGFwcGx5OworICAgICAgICBBTkdMRV9UUllfUkVTVUxUKFNob3VsZEFwcGx5TGFzdFJv
d1BhZGRpbmdXb3JrYXJvdW5kKHNpemUsIHBhY2tTdGF0ZSwgcmVhZEZvcm1hdCwgcmVhZFR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmFsc2UsIHBpeGVscyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbHkpOwor
CisgICAgICAgIGlmIChhcHBseSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHJlYWRQ
aXhlbHNQYWRkaW5nV29ya2Fyb3VuZChhcmVhLCByZWFkRm9ybWF0LCByZWFkVHlwZSwgcGFja1N0
YXRlLCBwaXhlbHMpOworICAgICAgICB9CisgICAgfQorCisgICAgbUZ1bmN0aW9ucy0+cmVhZFBp
eGVscyhhcmVhLngsIGFyZWEueSwgYXJlYS53aWR0aCwgYXJlYS5oZWlnaHQsIHJlYWRGb3JtYXQs
IHJlYWRUeXBlLCBwaXhlbHMpOworCisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLUVy
cm9yIEZyYW1lYnVmZmVyR0w6OmJsaXQoY29uc3QgU3RhdGUgJnN0YXRlLAorRXJyb3IgRnJhbWVi
dWZmZXJHTDo6YmxpdChDb250ZXh0SW1wbCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmZGVzdEFyZWEsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMYml0ZmllbGQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGZpbHRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRnJhbWVidWZmZXIg
KnNvdXJjZUZyYW1lYnVmZmVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmls
dGVyKQogeworICAgIGNvbnN0IEZyYW1lYnVmZmVyICpzb3VyY2VGcmFtZWJ1ZmZlciAgICAgPSBj
b250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0UmVhZEZyYW1lYnVmZmVyKCk7CisgICAgY29uc3QgRnJh
bWVidWZmZXIgKmRlc3RGcmFtZWJ1ZmZlciAgICAgICA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5n
ZXREcmF3RnJhbWVidWZmZXIoKTsKKworICAgIGJvb2wgbmVlZE1hbnVhbENvbG9yQmxpdCA9IGZh
bHNlOworCisgICAgLy8gVGhlIG1hbnVhbCBTUkdCIGJsaXQgaXMgb25seSBuZWVkZWQgdG8gcGVy
Zm9ybSBjb3JyZWN0IGxpbmVhciBpbnRlcnBvbGF0aW9uLiBXZSBkb24ndAorICAgIC8vIG5lZWQg
dG8gbWFrZSBzdXJlIHRoZXJlIGlzIFNSR0IgY29udmVyc2lvbiBmb3IgTkVBUkVTVCBhcyB0aGUg
dmFsdWVzIHdpbGwgYmUgY29waWVkLgorICAgIGlmIChmaWx0ZXIgIT0gR0xfTkVBUkVTVCkKKyAg
ICB7CisKKyAgICAgICAgLy8gUHJpb3IgdG8gT3BlbkdMIDQuNCBCbGl0RnJhbWVidWZmZXIgKHNl
Y3Rpb24gMTguMy4xIG9mIEdMIDQuMyBjb3JlIHByb2ZpbGUpIHJlYWRzOgorICAgICAgICAvLyAg
ICAgIFdoZW4gdmFsdWVzIGFyZSB0YWtlbiBmcm9tIHRoZSByZWFkIGJ1ZmZlciwgbm8gbGluZWFy
aXphdGlvbiBpcyBwZXJmb3JtZWQsIGV2ZW4KKyAgICAgICAgLy8gICAgICBpZiB0aGUgZm9ybWF0
IG9mIHRoZSBidWZmZXIgaXMgU1JHQi4KKyAgICAgICAgLy8gU3RhcnRpbmcgZnJvbSBPcGVuR0wg
NC40IChzZWN0aW9uIDE4LjMuMSkgaXQgcmVhZHM6CisgICAgICAgIC8vICAgICAgV2hlbiB2YWx1
ZXMgYXJlIHRha2VuIGZyb20gdGhlIHJlYWQgYnVmZmVyLCBpZiBGUkFNRUJVRkZFUl9TUkdCIGlz
IGVuYWJsZWQgYW5kIHRoZQorICAgICAgICAvLyAgICAgIHZhbHVlIG9mIEZSQU1FQlVGRkVSX0FU
VEFDSE1FTlRfQ09MT1JfRU5DT0RJTkcgZm9yIHRoZSBmcmFtZWJ1ZmZlciBhdHRhY2htZW50Cisg
ICAgICAgIC8vICAgICAgY29ycmVzcG9uZGluZyB0byB0aGUgcmVhZCBidWZmZXIgaXMgU1JHQiwg
dGhlIHJlZCwgZ3JlZW4sIGFuZCBibHVlIGNvbXBvbmVudHMgYXJlCisgICAgICAgIC8vICAgICAg
Y29udmVydGVkIGZyb20gdGhlIG5vbi1saW5lYXIgc1JHQiBjb2xvciBzcGFjZSBhY2NvcmRpbmcg
Wy4uLl0uCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVu
dCAqcmVhZEF0dGFjaG1lbnQgPSBzb3VyY2VGcmFtZWJ1ZmZlci0+Z2V0UmVhZENvbG9yYnVmZmVy
KCk7CisgICAgICAgICAgICBib29sIHNvdXJjZVNSR0IgPQorICAgICAgICAgICAgICAgIHJlYWRB
dHRhY2htZW50ICE9IG51bGxwdHIgJiYgcmVhZEF0dGFjaG1lbnQtPmdldENvbG9yRW5jb2Rpbmco
KSA9PSBHTF9TUkdCOworICAgICAgICAgICAgbmVlZE1hbnVhbENvbG9yQmxpdCA9CisgICAgICAg
ICAgICAgICAgbmVlZE1hbnVhbENvbG9yQmxpdCB8fCAoc291cmNlU1JHQiAmJiBtRnVuY3Rpb25z
LT5pc0F0TW9zdEdMKGdsOjpWZXJzaW9uKDQsIDMpKSk7CisgICAgICAgIH0KKworICAgICAgICAv
LyBQcmlvciB0byBPcGVuR0wgNC4yIEJsaXRGcmFtZWJ1ZmZlciAoc2VjdGlvbiA0LjMuMiBvZiBH
TCA0LjEgY29yZSBwcm9maWxlKSByZWFkczoKKyAgICAgICAgLy8gICAgICBCbGl0IG9wZXJhdGlv
bnMgYnlwYXNzIHRoZSBmcmFnbWVudCBwaXBlbGluZS4gVGhlIG9ubHkgZnJhZ21lbnQgb3BlcmF0
aW9ucyB3aGljaAorICAgICAgICAvLyAgICAgIGFmZmVjdCBhIGJsaXQgYXJlIHRoZSBwaXhlbCBv
d25lcnNoaXAgdGVzdCBhbmQgc2Npc3NvciB0ZXN0LgorICAgICAgICAvLyBTdGFydGluZyBmcm9t
IE9wZW5HTCA0LjIgKHNlY3Rpb24gNC4zLjIpIGl0IHJlYWRzOgorICAgICAgICAvLyAgICAgIFdo
ZW4gdmFsdWVzIGFyZSB3cml0dGVuIHRvIHRoZSBkcmF3IGJ1ZmZlcnMsIGJsaXQgb3BlcmF0aW9u
cyBieXBhc3MgdGhlIGZyYWdtZW50CisgICAgICAgIC8vICAgICAgcGlwZWxpbmUuIFRoZSBvbmx5
IGZyYWdtZW50IG9wZXJhdGlvbnMgd2hpY2ggYWZmZWN0IGEgYmxpdCBhcmUgdGhlIHBpeGVsIG93
bmVyc2hpcAorICAgICAgICAvLyAgICAgIHRlc3QsICB0aGUgc2Npc3NvciB0ZXN0IGFuZCBzUkdC
IGNvbnZlcnNpb24uCisgICAgICAgIGlmICghbmVlZE1hbnVhbENvbG9yQmxpdCkKKyAgICAgICAg
eworICAgICAgICAgICAgYm9vbCBkZXN0U1JHQiA9IGZhbHNlOworICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBkZXN0RnJhbWVidWZmZXItPmdldERyYXdidWZmZXJTdGF0ZUNvdW50
KCk7ICsraSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdCBGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnQgKmF0dGFjaG1lbnQgPSBkZXN0RnJhbWVidWZmZXItPmdldERyYXdCdWZmZXIo
aSk7CisgICAgICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnQgJiYgYXR0YWNobWVudC0+Z2V0Q29s
b3JFbmNvZGluZygpID09IEdMX1NSR0IpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBkZXN0U1JHQiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbmVlZE1hbnVhbENv
bG9yQmxpdCA9CisgICAgICAgICAgICAgICAgbmVlZE1hbnVhbENvbG9yQmxpdCB8fCAoZGVzdFNS
R0IgJiYgbUZ1bmN0aW9ucy0+aXNBdE1vc3RHTChnbDo6VmVyc2lvbig0LCAxKSkpOworICAgICAg
ICB9CisgICAgfQorCisgICAgLy8gRW5hYmxlIEZSQU1FQlVGRkVSX1NSR0IgaWYgbmVlZGVkCisg
ICAgc3luY0RyYXdTdGF0ZSgpOworCisgICAgR0xlbnVtIGJsaXRNYXNrID0gbWFzazsKKyAgICBp
ZiAobmVlZE1hbnVhbENvbG9yQmxpdCAmJiAobWFzayAmIEdMX0NPTE9SX0JVRkZFUl9CSVQpKQor
ICAgIHsKKyAgICAgICAgQU5HTEVfVFJZKG1CbGl0dGVyLT5ibGl0Q29sb3JCdWZmZXJXaXRoU2hh
ZGVyKHNvdXJjZUZyYW1lYnVmZmVyLCBkZXN0RnJhbWVidWZmZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VBcmVhLCBkZXN0QXJl
YSwgZmlsdGVyKSk7CisgICAgICAgIGJsaXRNYXNrICY9IH5HTF9DT0xPUl9CVUZGRVJfQklUOwor
ICAgIH0KKworICAgIGlmIChibGl0TWFzayA9PSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGds
OjpOb0Vycm9yKCk7CisgICAgfQorCiAgICAgY29uc3QgRnJhbWVidWZmZXJHTCAqc291cmNlRnJh
bWVidWZmZXJHTCA9IEdldEltcGxBczxGcmFtZWJ1ZmZlckdMPihzb3VyY2VGcmFtZWJ1ZmZlcik7
Ci0KICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZF
Uiwgc291cmNlRnJhbWVidWZmZXJHTC0+Z2V0RnJhbWVidWZmZXJJRCgpKTsKICAgICBtU3RhdGVN
YW5hZ2VyLT5iaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVy
SUQpOwogCiAgICAgbUZ1bmN0aW9ucy0+YmxpdEZyYW1lYnVmZmVyKHNvdXJjZUFyZWEueCwgc291
cmNlQXJlYS55LCBzb3VyY2VBcmVhLngxKCksIHNvdXJjZUFyZWEueTEoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVzdEFyZWEueCwgZGVzdEFyZWEueSwgZGVzdEFyZWEueDEo
KSwgZGVzdEFyZWEueTEoKSwgbWFzaywgZmlsdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGVzdEFyZWEueCwgZGVzdEFyZWEueSwgZGVzdEFyZWEueDEoKSwgZGVzdEFyZWEu
eTEoKSwgYmxpdE1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcik7
CiAKLSAgICByZXR1cm4gRXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJv
cigpOwogfQogCiBib29sIEZyYW1lYnVmZmVyR0w6OmNoZWNrU3RhdHVzKCkgY29uc3QKQEAgLTI4
NSwyMSArMzg1LDIxIEBACiAgICAgICAgIHsKICAgICAgICAgICAgIGNhc2UgRnJhbWVidWZmZXI6
OkRJUlRZX0JJVF9ERVBUSF9BVFRBQ0hNRU5UOgogICAgICAgICAgICAgICAgIEJpbmRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnQobUZ1bmN0aW9ucywgR0xfREVQVEhfQVRUQUNITUVOVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1EYXRhLmdldERlcHRoQXR0YWNobWVu
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0ZS5n
ZXREZXB0aEF0dGFjaG1lbnQoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIEZyYW1lYnVmZmVyOjpESVJUWV9CSVRfU1RFTkNJTF9BVFRBQ0hNRU5UOgogICAgICAg
ICAgICAgICAgIEJpbmRGcmFtZWJ1ZmZlckF0dGFjaG1lbnQobUZ1bmN0aW9ucywgR0xfU1RFTkNJ
TF9BVFRBQ0hNRU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bURhdGEuZ2V0U3RlbmNpbEF0dGFjaG1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtU3RhdGUuZ2V0U3RlbmNpbEF0dGFjaG1lbnQoKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEZyYW1lYnVmZmVyOjpESVJUWV9CSVRf
RFJBV19CVUZGRVJTOgogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8g
JmRyYXdCdWZmZXJzID0gbURhdGEuZ2V0RHJhd0J1ZmZlclN0YXRlcygpOworICAgICAgICAgICAg
ICAgIGNvbnN0IGF1dG8gJmRyYXdCdWZmZXJzID0gbVN0YXRlLmdldERyYXdCdWZmZXJTdGF0ZXMo
KTsKICAgICAgICAgICAgICAgICBtRnVuY3Rpb25zLT5kcmF3QnVmZmVycyhzdGF0aWNfY2FzdDxH
THNpemVpPihkcmF3QnVmZmVycy5zaXplKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRyYXdCdWZmZXJzLmRhdGEoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIEZyYW1lYnVmZmVyOjpESVJUWV9CSVRf
UkVBRF9CVUZGRVI6Ci0gICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+cmVhZEJ1ZmZlcihtRGF0
YS5nZXRSZWFkQnVmZmVyU3RhdGUoKSk7CisgICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+cmVh
ZEJ1ZmZlcihtU3RhdGUuZ2V0UmVhZEJ1ZmZlclN0YXRlKCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHsKQEAgLTMwOSw3ICs0MDks
NyBAQAogICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxzaXplX3Q+KGRpcnR5Qml0IC0g
RnJhbWVidWZmZXI6OkRJUlRZX0JJVF9DT0xPUl9BVFRBQ0hNRU5UXzApOwogICAgICAgICAgICAg
ICAgIEJpbmRGcmFtZWJ1ZmZlckF0dGFjaG1lbnQobUZ1bmN0aW9ucywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMZW51bT4oR0xfQ09MT1Jf
QVRUQUNITUVOVDAgKyBpbmRleCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtRGF0YS5nZXRDb2xvckF0dGFjaG1lbnQoaW5kZXgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0ZS5nZXRDb2xvckF0dGFjaG1lbnQoaW5k
ZXgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpA
QCAtMzQxLDE3ICs0NDEsMTcgQEAKICAgICAgICAgaWYgKG1Xb3JrYXJvdW5kcy5kb2VzU1JHQkNs
ZWFyc09uTGluZWFyRnJhbWVidWZmZXJBdHRhY2htZW50cyAmJgogICAgICAgICAgICAgKG1hc2sg
JiBHTF9DT0xPUl9CVUZGRVJfQklUKSAhPSAwICYmICFtSXNEZWZhdWx0KQogICAgICAgICB7Ci0g
ICAgICAgICAgICBib29sIGhhc1NSQkF0dGFjaG1lbnQgPSBmYWxzZTsKLSAgICAgICAgICAgIGZv
ciAoY29uc3QgYXV0byAmYXR0YWNobWVudCA6IG1EYXRhLmdldENvbG9yQXR0YWNobWVudHMoKSkK
KyAgICAgICAgICAgIGJvb2wgaGFzU1JHQkF0dGFjaG1lbnQgPSBmYWxzZTsKKyAgICAgICAgICAg
IGZvciAoY29uc3QgYXV0byAmYXR0YWNobWVudCA6IG1TdGF0ZS5nZXRDb2xvckF0dGFjaG1lbnRz
KCkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnQuaXNBdHRh
Y2hlZCgpICYmIGF0dGFjaG1lbnQuZ2V0Q29sb3JFbmNvZGluZygpID09IEdMX1NSR0IpCiAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBoYXNTUkJBdHRhY2htZW50ID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgaGFzU1JHQkF0dGFjaG1lbnQgPSB0cnVlOwogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIG1TdGF0ZU1hbmFnZXItPnNldEZyYW1lYnVmZmVyU1JHQkVuYWJsZWQoaGFz
U1JCQXR0YWNobWVudCk7CisgICAgICAgICAgICBtU3RhdGVNYW5hZ2VyLT5zZXRGcmFtZWJ1ZmZl
clNSR0JFbmFibGVkKGhhc1NSR0JBdHRhY2htZW50KTsKICAgICAgICAgfQogICAgICAgICBlbHNl
CiAgICAgICAgIHsKQEAgLTM2OSw4ICs0NjksOCBAQAogICAgICAgICB7CiAgICAgICAgICAgICAv
LyBJZiBkb2luZyBhIGNsZWFyIG9uIGEgY29sb3IgYnVmZmVyLCBzZXQgU1JHQiBibGVuZCBlbmFi
bGVkIG9ubHkgaWYgdGhlIGNvbG9yIGJ1ZmZlcgogICAgICAgICAgICAgLy8gaXMgYW4gU1JHQiBm
b3JtYXQuCi0gICAgICAgICAgICBjb25zdCBhdXRvICZkcmF3YnVmZmVyU3RhdGUgID0gbURhdGEu
Z2V0RHJhd0J1ZmZlclN0YXRlcygpOwotICAgICAgICAgICAgY29uc3QgYXV0byAmY29sb3JBdHRh
Y2htZW50cyA9IG1EYXRhLmdldENvbG9yQXR0YWNobWVudHMoKTsKKyAgICAgICAgICAgIGNvbnN0
IGF1dG8gJmRyYXdidWZmZXJTdGF0ZSAgPSBtU3RhdGUuZ2V0RHJhd0J1ZmZlclN0YXRlcygpOwor
ICAgICAgICAgICAgY29uc3QgYXV0byAmY29sb3JBdHRhY2htZW50cyA9IG1TdGF0ZS5nZXRDb2xv
ckF0dGFjaG1lbnRzKCk7CiAKICAgICAgICAgICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVu
dCAqYXR0YWNobWVudCA9IG51bGxwdHI7CiAgICAgICAgICAgICBpZiAoZHJhd2J1ZmZlclN0YXRl
W2RyYXdCdWZmZXJdID49IEdMX0NPTE9SX0FUVEFDSE1FTlQwICYmCkBAIC0zOTIsNCArNDkyLDcx
IEBACiAgICAgICAgIH0KICAgICB9CiB9CitnbDo6RXJyb3IgRnJhbWVidWZmZXJHTDo6cmVhZFBp
eGVsc1Jvd0J5Um93V29ya2Fyb3VuZChjb25zdCBnbDo6UmVjdGFuZ2xlICZhcmVhLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZv
cm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsUGFja1N0YXRlICZwYWNrLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x2b2lkICpwaXhl
bHMpIGNvbnN0Cit7CisgICAgaW50cHRyX3Qgb2Zmc2V0ID0gcmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4ocGl4ZWxzKTsKKworICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmZ2xGb3JtYXQg
PQorICAgICAgICBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGdsOjpHZXRTaXplZEludGVybmFs
Rm9ybWF0KGZvcm1hdCwgdHlwZSkpOworICAgIEdMdWludCByb3dCeXRlcyA9IDA7CisgICAgQU5H
TEVfVFJZX1JFU1VMVChnbEZvcm1hdC5jb21wdXRlUm93UGl0Y2godHlwZSwgYXJlYS53aWR0aCwg
cGFjay5hbGlnbm1lbnQsIHBhY2sucm93TGVuZ3RoKSwKKyAgICAgICAgICAgICAgICAgICAgIHJv
d0J5dGVzKTsKKyAgICBHTHVpbnQgc2tpcEJ5dGVzID0gMDsKKyAgICBBTkdMRV9UUllfUkVTVUxU
KGdsRm9ybWF0LmNvbXB1dGVTa2lwQnl0ZXMocm93Qnl0ZXMsIDAsIHBhY2ssIGZhbHNlKSwgc2tp
cEJ5dGVzKTsKKworICAgIGdsOjpQaXhlbFBhY2tTdGF0ZSBkaXJlY3RQYWNrOworICAgIGRpcmVj
dFBhY2sucGl4ZWxCdWZmZXIgPSBwYWNrLnBpeGVsQnVmZmVyOworICAgIGRpcmVjdFBhY2suYWxp
Z25tZW50ICAgPSAxOworICAgIG1TdGF0ZU1hbmFnZXItPnNldFBpeGVsUGFja1N0YXRlKGRpcmVj
dFBhY2spOworICAgIGRpcmVjdFBhY2sucGl4ZWxCdWZmZXIuc2V0KG51bGxwdHIpOworCisgICAg
b2Zmc2V0ICs9IHNraXBCeXRlczsKKyAgICBmb3IgKEdMaW50IHJvdyA9IDA7IHJvdyA8IGFyZWEu
aGVpZ2h0OyArK3JvdykKKyAgICB7CisgICAgICAgIG1GdW5jdGlvbnMtPnJlYWRQaXhlbHMoYXJl
YS54LCByb3cgKyBhcmVhLnksIGFyZWEud2lkdGgsIDEsIGZvcm1hdCwgdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PEdMdm9pZCAqPihvZmZzZXQp
KTsKKyAgICAgICAgb2Zmc2V0ICs9IHJvdyAqIHJvd0J5dGVzOworICAgIH0KKworICAgIHJldHVy
biBnbDo6Tm9FcnJvcigpOworfQorCitnbDo6RXJyb3IgRnJhbWVidWZmZXJHTDo6cmVhZFBpeGVs
c1BhZGRpbmdXb3JrYXJvdW5kKGNvbnN0IGdsOjpSZWN0YW5nbGUgJmFyZWEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6UGl4ZWxQYWNrU3RhdGUgJnBhY2ssCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqcGl4ZWxzKSBjb25z
dAoreworICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmZ2xGb3JtYXQgPQorICAgICAgICBn
bDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGdsOjpHZXRTaXplZEludGVybmFsRm9ybWF0KGZvcm1h
dCwgdHlwZSkpOworICAgIEdMdWludCByb3dCeXRlcyA9IDA7CisgICAgQU5HTEVfVFJZX1JFU1VM
VChnbEZvcm1hdC5jb21wdXRlUm93UGl0Y2godHlwZSwgYXJlYS53aWR0aCwgcGFjay5hbGlnbm1l
bnQsIHBhY2sucm93TGVuZ3RoKSwKKyAgICAgICAgICAgICAgICAgICAgIHJvd0J5dGVzKTsKKyAg
ICBHTHVpbnQgc2tpcEJ5dGVzID0gMDsKKyAgICBBTkdMRV9UUllfUkVTVUxUKGdsRm9ybWF0LmNv
bXB1dGVTa2lwQnl0ZXMocm93Qnl0ZXMsIDAsIHBhY2ssIGZhbHNlKSwgc2tpcEJ5dGVzKTsKKwor
ICAgIC8vIEdldCBhbGwgYnkgdGhlIGxhc3Qgcm93CisgICAgaWYgKGFyZWEuaGVpZ2h0ID4gMSkK
KyAgICB7CisgICAgICAgIG1GdW5jdGlvbnMtPnJlYWRQaXhlbHMoYXJlYS54LCBhcmVhLnksIGFy
ZWEud2lkdGgsIGFyZWEuaGVpZ2h0IC0gMSwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOworICAgIH0K
KworICAgIC8vIEdldCB0aGUgbGFzdCByb3cgbWFudWFsbHkKKyAgICBnbDo6UGl4ZWxQYWNrU3Rh
dGUgZGlyZWN0UGFjazsKKyAgICBkaXJlY3RQYWNrLnBpeGVsQnVmZmVyID0gcGFjay5waXhlbEJ1
ZmZlcjsKKyAgICBkaXJlY3RQYWNrLmFsaWdubWVudCAgID0gMTsKKyAgICBtU3RhdGVNYW5hZ2Vy
LT5zZXRQaXhlbFBhY2tTdGF0ZShkaXJlY3RQYWNrKTsKKyAgICBkaXJlY3RQYWNrLnBpeGVsQnVm
ZmVyLnNldChudWxscHRyKTsKKworICAgIGludHB0cl90IGxhc3RSb3dPZmZzZXQgPQorICAgICAg
ICByZWludGVycHJldF9jYXN0PGludHB0cl90PihwaXhlbHMpICsgc2tpcEJ5dGVzICsgKGFyZWEu
aGVpZ2h0IC0gMSkgKiByb3dCeXRlczsKKyAgICBtRnVuY3Rpb25zLT5yZWFkUGl4ZWxzKGFyZWEu
eCwgYXJlYS55ICsgYXJlYS5oZWlnaHQgLSAxLCBhcmVhLndpZHRoLCAxLCBmb3JtYXQsIHR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PEdMdm9pZCAqPihs
YXN0Um93T2Zmc2V0KSk7CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKK30KIH0gIC8vIG5h
bWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL0ZyYW1lYnVmZmVyR0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVidWZmZXJHTC5oCShyZXZpc2lv
biAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvRnJhbWVidWZmZXJHTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw2ICsxNCw3IEBACiBu
YW1lc3BhY2UgcngKIHsKIAorY2xhc3MgQmxpdEdMOwogY2xhc3MgRnVuY3Rpb25zR0w7CiBjbGFz
cyBTdGF0ZU1hbmFnZXJHTDsKIHN0cnVjdCBXb3JrYXJvdW5kc0dMOwpAQCAtMjEsMTggKzIyLDIw
IEBACiBjbGFzcyBGcmFtZWJ1ZmZlckdMIDogcHVibGljIEZyYW1lYnVmZmVySW1wbAogewogICBw
dWJsaWM6Ci0gICAgRnJhbWVidWZmZXJHTChjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRhdGEgJmRh
dGEsCisgICAgRnJhbWVidWZmZXJHTChjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmZGF0YSwK
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCiAgICAgICAg
ICAgICAgICAgICBTdGF0ZU1hbmFnZXJHTCAqc3RhdGVNYW5hZ2VyLAogICAgICAgICAgICAgICAg
ICAgY29uc3QgV29ya2Fyb3VuZHNHTCAmd29ya2Fyb3VuZHMsCisgICAgICAgICAgICAgICAgICBC
bGl0R0wgKmJsaXR0ZXIsCiAgICAgICAgICAgICAgICAgICBib29sIGlzRGVmYXVsdCk7CiAgICAg
Ly8gQ29uc3RydWN0b3IgY2FsbGVkIHdoZW4gd2UgbmVlZCB0byBjcmVhdGUgYSBGcmFtZWJ1ZmZl
ckdMIGZyb20gYW4KICAgICAvLyBleGlzdGluZyBmcmFtZWJ1ZmZlciBuYW1lLCBmb3IgZXhhbXBs
ZSBmb3IgdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIKICAgICAvLyBvbiB0aGUgTWFjIEVHTCBDR0wg
YmFja2VuZC4KICAgICBGcmFtZWJ1ZmZlckdMKEdMdWludCBpZCwKLSAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGF0YSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZkYXRhLAogICAgICAgICAgICAgICAgICAgY29uc3Qg
RnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywKICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmthcm91
bmRzR0wgJndvcmthcm91bmRzLAorICAgICAgICAgICAgICAgICAgQmxpdEdMICpibGl0dGVyLAog
ICAgICAgICAgICAgICAgICAgU3RhdGVNYW5hZ2VyR0wgKnN0YXRlTWFuYWdlcik7CiAgICAgfkZy
YW1lYnVmZmVyR0woKSBvdmVycmlkZTsKIApAQCAtNDAsMjAgKzQzLDIwIEBACiAgICAgZ2w6OkVy
cm9yIGludmFsaWRhdGUoc2l6ZV90IGNvdW50LCBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKSBv
dmVycmlkZTsKICAgICBnbDo6RXJyb3IgaW52YWxpZGF0ZVN1YihzaXplX3QgY291bnQsIGNvbnN0
IEdMZW51bSAqYXR0YWNobWVudHMsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmFyZWEpIG92ZXJyaWRl
OwogCi0gICAgZ2w6OkVycm9yIGNsZWFyKGNvbnN0IGdsOjpEYXRhICZkYXRhLCBHTGJpdGZpZWxk
IG1hc2spIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBjbGVhckJ1ZmZlcmZ2KGNvbnN0IGdsOjpE
YXRhICZkYXRhLAorICAgIGdsOjpFcnJvciBjbGVhcihDb250ZXh0SW1wbCAqY29udGV4dCwgR0xi
aXRmaWVsZCBtYXNrKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgY2xlYXJCdWZmZXJmdihDb250
ZXh0SW1wbCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYnVm
ZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWVzKSBvdmVycmlkZTsK
LSAgICBnbDo6RXJyb3IgY2xlYXJCdWZmZXJ1aXYoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCisgICAg
Z2w6OkVycm9yIGNsZWFyQnVmZmVydWl2KENvbnRleHRJbXBsICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBkcmF3YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHVpbnQgKnZhbHVlcykgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIGNsZWFyQnVmZmVy
aXYoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCisgICAgZ2w6OkVycm9yIGNsZWFyQnVmZmVyaXYoQ29u
dGV4dEltcGwgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1
ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZXMpIG92ZXJyaWRlOwot
ICAgIGdsOjpFcnJvciBjbGVhckJ1ZmZlcmZpKGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAgIGds
OjpFcnJvciBjbGVhckJ1ZmZlcmZpKENvbnRleHRJbXBsICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgZHJhd2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0
IGRlcHRoLApAQCAtNjEsMTAgKzY0LDE3IEBACiAKICAgICBHTGVudW0gZ2V0SW1wbGVtZW50YXRp
b25Db2xvclJlYWRGb3JtYXQoKSBjb25zdCBvdmVycmlkZTsKICAgICBHTGVudW0gZ2V0SW1wbGVt
ZW50YXRpb25Db2xvclJlYWRUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIHJl
YWRQaXhlbHMoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmYXJl
YSwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMdm9pZCAqcGl4ZWxzKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBnbDo6RXJyb3IgcmVhZFBpeGVscyhDb250ZXh0SW1wbCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZhcmVhLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0x2b2lkICpwaXhlbHMp
IGNvbnN0IG92ZXJyaWRlOwogCi0gICAgZ2w6OkVycm9yIGJsaXQoY29uc3QgZ2w6OlN0YXRlICZz
dGF0ZSwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwgY29uc3QgZ2w6OlJlY3Rhbmds
ZSAmZGVzdEFyZWEsCi0gICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBtYXNrLCBHTGVudW0g
ZmlsdGVyLCBjb25zdCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZUZyYW1lYnVmZmVyKSBvdmVycmlk
ZTsKKyAgICBnbDo6RXJyb3IgYmxpdChDb250ZXh0SW1wbCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRlc3RBcmVhLAorICAgICAgICAgICAgICAgICAgIEdM
Yml0ZmllbGQgbWFzaywKKyAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsdGVyKSBvdmVycmlk
ZTsKIAogICAgIGJvb2wgY2hlY2tTdGF0dXMoKSBjb25zdCBvdmVycmlkZTsKIApAQCAtNzgsOSAr
ODgsMjIgQEAKICAgICB2b2lkIHN5bmNDbGVhclN0YXRlKEdMYml0ZmllbGQgbWFzayk7CiAgICAg
dm9pZCBzeW5jQ2xlYXJCdWZmZXJTdGF0ZShHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3QnVmZmVy
KTsKIAorICAgIGdsOjpFcnJvciByZWFkUGl4ZWxzUm93QnlSb3dXb3JrYXJvdW5kKGNvbnN0IGds
OjpSZWN0YW5nbGUgJmFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6UGl4ZWxQYWNrU3RhdGUgJnBhY2ssCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x2b2lkICpwaXhlbHMpIGNvbnN0OworCisgICAg
Z2w6OkVycm9yIHJlYWRQaXhlbHNQYWRkaW5nV29ya2Fyb3VuZChjb25zdCBnbDo6UmVjdGFuZ2xl
ICZhcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OlBpeGVsUGFja1N0YXRlICZwYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x2b2lkICpwaXhlbHMpIGNvbnN0OworCiAgICAgY29uc3QgRnVuY3Rpb25z
R0wgKm1GdW5jdGlvbnM7CiAgICAgU3RhdGVNYW5hZ2VyR0wgKm1TdGF0ZU1hbmFnZXI7CiAgICAg
Y29uc3QgV29ya2Fyb3VuZHNHTCAmbVdvcmthcm91bmRzOworICAgIEJsaXRHTCAqbUJsaXR0ZXI7
CiAKICAgICBHTHVpbnQgbUZyYW1lYnVmZmVySUQ7CiAgICAgYm9vbCBtSXNEZWZhdWx0OwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Z1bmN0
aW9uc0dMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvRnVuY3Rpb25zR0wuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRnVuY3Rpb25z
R0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTgsNiArNDE4LDI5IEBACiAgICAgICB0ZXhJbWFn
ZTNETXVsdGlzYW1wbGUobnVsbHB0ciksCiAgICAgICB3YWl0U3luYyhudWxscHRyKSwKIAorICAg
ICAgbWF0cml4TG9hZEVYVChudWxscHRyKSwKKyAgICAgIGdlblBhdGhzTlYobnVsbHB0ciksCisg
ICAgICBkZWxQYXRoc05WKG51bGxwdHIpLAorICAgICAgcGF0aENvbW1hbmRzTlYobnVsbHB0ciks
CisgICAgICBzZXRQYXRoUGFyYW1ldGVyZk5WKG51bGxwdHIpLAorICAgICAgc2V0UGF0aFBhcmFt
ZXRlcmlOVihudWxscHRyKSwKKyAgICAgIGdldFBhdGhQYXJhbWV0ZXJmTlYobnVsbHB0ciksCisg
ICAgICBnZXRQYXRoUGFyYW1ldGVyaU5WKG51bGxwdHIpLAorICAgICAgcGF0aFN0ZW5jaWxGdW5j
TlYobnVsbHB0ciksCisgICAgICBzdGVuY2lsRmlsbFBhdGhOVihudWxscHRyKSwKKyAgICAgIHN0
ZW5jaWxTdHJva2VQYXRoTlYobnVsbHB0ciksCisgICAgICBjb3ZlckZpbGxQYXRoTlYobnVsbHB0
ciksCisgICAgICBjb3ZlclN0cm9rZVBhdGhOVihudWxscHRyKSwKKyAgICAgIHN0ZW5jaWxUaGVu
Q292ZXJGaWxsUGF0aE5WKG51bGxwdHIpLAorICAgICAgc3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBh
dGhOVihudWxscHRyKSwKKyAgICAgIGNvdmVyRmlsbFBhdGhJbnN0YW5jZWROVihudWxscHRyKSwK
KyAgICAgIGNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZE5WKG51bGxwdHIpLAorICAgICAgc3RlbmNp
bEZpbGxQYXRoSW5zdGFuY2VkTlYobnVsbHB0ciksCisgICAgICBzdGVuY2lsU3Ryb2tlUGF0aElu
c3RhbmNlZE5WKG51bGxwdHIpLAorICAgICAgc3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFu
Y2VkTlYobnVsbHB0ciksCisgICAgICBzdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNl
ZE5WKG51bGxwdHIpLAorICAgICAgcHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuTlYobnVsbHB0
ciksCisKICAgICAgIGJpbmRGcmFnRGF0YUxvY2F0aW9uSW5kZXhlZChudWxscHRyKSwKICAgICAg
IGJpbmRTYW1wbGVyKG51bGxwdHIpLAogICAgICAgZGVsZXRlU2FtcGxlcnMobnVsbHB0ciksCkBA
IC02NDAsNiArNjYzLDcgQEAKICAgICAgIHZlcnRleEF0dHJpYklGb3JtYXQobnVsbHB0ciksCiAg
ICAgICB2ZXJ0ZXhBdHRyaWJMRm9ybWF0KG51bGxwdHIpLAogICAgICAgdmVydGV4QmluZGluZ0Rp
dmlzb3IobnVsbHB0ciksCisgICAgICBjb3ZlcmFnZU1vZHVsYXRpb25OVihudWxscHRyKSwKIAog
ICAgICAgYmluZEJ1ZmZlcnNCYXNlKG51bGxwdHIpLAogICAgICAgYmluZEJ1ZmZlcnNSYW5nZShu
dWxscHRyKSwKQEAgLTgyMyw2ICs4NDcsMzkgQEAKICAgICAvLyBFdmVuIHRob3VnaCBleHRlbnNp
b25zIGFyZSB3cml0dGVuIGFnYWluc3Qgc3BlY2lmaWMgdmVyc2lvbnMgb2YgR0wsIG1hbnkgZHJp
dmVycyBleHBvc2UgdGhlIGV4dGVuc2lvbnMKICAgICAvLyBpbiBldmVuIG9sZGVyIHZlcnNpb25z
LiAgQWx3YXlzIHRyeSBsb2FkaW5nIHRoZSBleHRlbnNpb25zIHJlZ2FyZGxlc3Mgb2YgR0wgdmVy
c2lvbi4KIAorICAgIC8vIEdMX0FSQl9wcm9ncmFtX2ludGVyZmFjZV9xdWVyeSAobG9hZGluZyBv
bmx5IGZ1bmN0aW9ucyByZWxldmFudCB0byBHTF9OVl9wYXRoX3JlbmRlcmluZyBoZXJlKQorICAg
IEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfQVJCX3Byb2dyYW1f
aW50ZXJmYWNlX3F1ZXJ5IiwgbG9hZFByb2NBZGRyZXNzKCJnbEdldFByb2dyYW1JbnRlcmZhY2Vp
diIpLCAmZ2V0UHJvZ3JhbUludGVyZmFjZWl2KTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5
UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0FSQl9wcm9ncmFtX2ludGVyZmFjZV9xdWVyeSIsIGxvYWRQ
cm9jQWRkcmVzcygiZ2xHZXRQcm9ncmFtUmVzb3VyY2VOYW1lIiksICZnZXRQcm9ncmFtUmVzb3Vy
Y2VOYW1lKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdM
X0FSQl9wcm9ncmFtX2ludGVyZmFjZV9xdWVyeSIsIGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRQcm9n
cmFtUmVzb3VyY2VpdiIpLCAmZ2V0UHJvZ3JhbVJlc291cmNlaXYpOworCisgICAgLy8gR0xfTlZf
cGF0aF9yZW5kZXJpbmcKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9u
cywgIkdMX05WX3BhdGhfcmVuZGVyaW5nIiwgbG9hZFByb2NBZGRyZXNzKCJnbE1hdHJpeExvYWRm
RVhUIiksICZtYXRyaXhMb2FkRVhUKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQo
ZXh0ZW5zaW9ucywgIkdMX05WX3BhdGhfcmVuZGVyaW5nIiwgbG9hZFByb2NBZGRyZXNzKCJnbEdl
blBhdGhzTlYiKSwgJmdlblBhdGhzTlYpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2lu
dChleHRlbnNpb25zLCAiR0xfTlZfcGF0aF9yZW5kZXJpbmciLCBsb2FkUHJvY0FkZHJlc3MoImds
RGVsZXRlUGF0aHNOViIpLCAmZGVsUGF0aHNOVik7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRy
eVBvaW50KGV4dGVuc2lvbnMsICJHTF9OVl9wYXRoX3JlbmRlcmluZyIsIGxvYWRQcm9jQWRkcmVz
cygiZ2xQYXRoQ29tbWFuZHNOViIpLCAmcGF0aENvbW1hbmRzTlYpOworICAgIEFzc2lnbkdMRXh0
ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfTlZfcGF0aF9yZW5kZXJpbmciLCBsb2Fk
UHJvY0FkZHJlc3MoImdsSXNQYXRoTlYiKSwgJmlzUGF0aE5WKTsKKyAgICBBc3NpZ25HTEV4dGVu
c2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX05WX3BhdGhfcmVuZGVyaW5nIiwgbG9hZFBy
b2NBZGRyZXNzKCJnbFBhdGhQYXJhbWV0ZXJmTlYiKSwgJnNldFBhdGhQYXJhbWV0ZXJmTlYpOwor
ICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfTlZfcGF0aF9y
ZW5kZXJpbmciLCBsb2FkUHJvY0FkZHJlc3MoImdsUGF0aFBhcmFtZXRlcmlOViIpLCAmc2V0UGF0
aFBhcmFtZXRlcmlOVik7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lv
bnMsICJHTF9OVl9wYXRoX3JlbmRlcmluZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRQYXRoUGFy
YW1ldGVyZnZOViIpLCAmZ2V0UGF0aFBhcmFtZXRlcmZOVik7CisgICAgQXNzaWduR0xFeHRlbnNp
b25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9OVl9wYXRoX3JlbmRlcmluZyIsIGxvYWRQcm9j
QWRkcmVzcygiZ2xHZXRQYXRoUGFyYW1ldGVyaXZOViIpLCAmZ2V0UGF0aFBhcmFtZXRlcmlOVik7
CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9OVl9wYXRo
X3JlbmRlcmluZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xQYXRoU3RlbmNpbEZ1bmNOViIpLCAmcGF0
aFN0ZW5jaWxGdW5jTlYpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNp
b25zLCAiR0xfTlZfcGF0aF9yZW5kZXJpbmciLCBsb2FkUHJvY0FkZHJlc3MoImdsU3RlbmNpbEZp
bGxQYXRoTlYiKSwgJnN0ZW5jaWxGaWxsUGF0aE5WKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVu
dHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX05WX3BhdGhfcmVuZGVyaW5nIiwgbG9hZFByb2NBZGRy
ZXNzKCJnbFN0ZW5jaWxTdHJva2VQYXRoTlYiKSwgJnN0ZW5jaWxTdHJva2VQYXRoTlYpOworICAg
IEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfTlZfcGF0aF9yZW5k
ZXJpbmciLCBsb2FkUHJvY0FkZHJlc3MoImdsQ292ZXJGaWxsUGF0aE5WIiksICZjb3ZlckZpbGxQ
YXRoTlYpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xf
TlZfcGF0aF9yZW5kZXJpbmciLCBsb2FkUHJvY0FkZHJlc3MoImdsQ292ZXJTdHJva2VQYXRoTlYi
KSwgJmNvdmVyU3Ryb2tlUGF0aE5WKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQo
ZXh0ZW5zaW9ucywgIkdMX05WX3BhdGhfcmVuZGVyaW5nIiwgbG9hZFByb2NBZGRyZXNzKCJnbFN0
ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aE5WIiksICZzdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhOVik7
CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9OVl9wYXRo
X3JlbmRlcmluZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0
aE5WIiksICZzdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aE5WKTsKKyAgICBBc3NpZ25HTEV4dGVu
c2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX05WX3BhdGhfcmVuZGVyaW5nIiwgbG9hZFBy
b2NBZGRyZXNzKCJnbENvdmVyRmlsbFBhdGhJbnN0YW5jZWROViIpLCAmY292ZXJGaWxsUGF0aElu
c3RhbmNlZE5WKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywg
IkdMX05WX3BhdGhfcmVuZGVyaW5nIiwgbG9hZFByb2NBZGRyZXNzKCJnbENvdmVyU3Ryb2tlUGF0
aEluc3RhbmNlZE5WIiksICZjb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWROVik7CisgICAgQXNzaWdu
R0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9OVl9wYXRoX3JlbmRlcmluZyIs
IGxvYWRQcm9jQWRkcmVzcygiZ2xTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWROViIpLCAmc3RlbmNp
bEZpbGxQYXRoSW5zdGFuY2VkTlYpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChl
eHRlbnNpb25zLCAiR0xfTlZfcGF0aF9yZW5kZXJpbmciLCBsb2FkUHJvY0FkZHJlc3MoImdsU3Rl
bmNpbFN0cm9rZVBhdGhJbnN0YW5jZWROViIpLCAmc3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRO
Vik7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9OVl9w
YXRoX3JlbmRlcmluZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBh
dGhJbnN0YW5jZWROViIpLCAmc3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkTlYpOwor
ICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfTlZfcGF0aF9y
ZW5kZXJpbmciLCBsb2FkUHJvY0FkZHJlc3MoImdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJ
bnN0YW5jZWROViIpLCAmc3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWROVik7Cisg
ICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9OVl9wYXRoX3Jl
bmRlcmluZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5O
ViIpLCAmcHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuTlYpOworCisgICAgLy8gR0xfTlZfZnJh
bWVidWZmZXJfbWl4ZWRfc2FtcGxlcworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChl
eHRlbnNpb25zLCAiR0xfTlZfZnJhbWVidWZmZXJfbWl4ZWRfc2FtcGxlcyIsIGxvYWRQcm9jQWRk
cmVzcygiZ2xDb3ZlcmFnZU1vZHVsYXRpb25OViIpLCAmY292ZXJhZ2VNb2R1bGF0aW9uTlYpOwor
CiAgICAgLy8gR0xfTlZfZmVuY2UKICAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0
ZW5zaW9ucywgIkdMX05WX2ZlbmNlIiwgbG9hZFByb2NBZGRyZXNzKCJnbERlbGV0ZUZlbmNlc05W
IiksICZkZWxldGVGZW5jZXNOVik7CiAgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4
dGVuc2lvbnMsICJHTF9OVl9mZW5jZSIsIGxvYWRQcm9jQWRkcmVzcygiZ2xHZW5GZW5jZXNOViIp
LCAmZ2VuRmVuY2VzTlYpOwpAQCAtOTYxLDYgKzEwMTgsMTcgQEAKICAgICBBc3NpZ25HTEV4dGVu
c2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0FSQl90cmFuc2Zvcm1fZmVlZGJhY2szIiwg
bG9hZFByb2NBZGRyZXNzKCJnbEVuZFF1ZXJ5SW5kZXhlZCIpLCAmZW5kUXVlcnlJbmRleGVkKTsK
ICAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0FSQl90cmFu
c2Zvcm1fZmVlZGJhY2szIiwgbG9hZFByb2NBZGRyZXNzKCJnbEdldFF1ZXJ5SW5kZXhlZGl2Iiks
ICZnZXRRdWVyeUluZGV4ZWRpdik7CiAKKyAgICAvLyBHTF9BUkJfZ2V0X3Byb2dyYW1fYmluYXJ5
CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9BUkJfZ2V0
X3Byb2dyYW1fYmluYXJ5IiwgbG9hZFByb2NBZGRyZXNzKCJnbEdldFByb2dyYW1CaW5hcnkiKSwg
JmdldFByb2dyYW1CaW5hcnkpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRl
bnNpb25zLCAiR0xfQVJCX2dldF9wcm9ncmFtX2JpbmFyeSIsIGxvYWRQcm9jQWRkcmVzcygiZ2xQ
cm9ncmFtQmluYXJ5IiksICZwcm9ncmFtQmluYXJ5KTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVu
dHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0FSQl9nZXRfcHJvZ3JhbV9iaW5hcnkiLCBsb2FkUHJv
Y0FkZHJlc3MoImdsUHJvZ3JhbVBhcmFtZXRlcmkiKSwgJnByb2dyYW1QYXJhbWV0ZXJpKTsKKwor
ICAgIC8vIEdMX0FSQl9yb2J1c3RuZXNzCisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50
KGV4dGVuc2lvbnMsICJHTF9BUkJfcm9idXN0bmVzcyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCIiksICZnZXRHcmFwaGljc1Jlc2V0U3RhdHVzKTsKKworICAg
IC8vIEdMX0tIUl9yb2J1c3RuZXNzCisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4
dGVuc2lvbnMsICJHTF9LSFJfcm9idXN0bmVzcyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRHcmFw
aGljc1Jlc2V0U3RhdHVzIiksICZnZXRHcmFwaGljc1Jlc2V0U3RhdHVzKTsKKwogICAgIC8vIDEu
MAogICAgIGlmIChpc0F0TGVhc3RHTChnbDo6VmVyc2lvbigxLCAwKSkpCiAgICAgewpAQCAtMTcx
NCwxMSArMTc4MiwzOSBAQAogCiAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgogCisgICAgLy8gR0xf
TlZfcGF0aF9yZW5kZXJpbmcKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5z
aW9ucywgIkdMX05WX3BhdGhfcmVuZGVyaW5nIiwgbG9hZFByb2NBZGRyZXNzKCJnbE1hdHJpeExv
YWRmRVhUIiksICZtYXRyaXhMb2FkRVhUKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9p
bnQoZXh0ZW5zaW9ucywgIkdMX05WX3BhdGhfcmVuZGVyaW5nIiwgbG9hZFByb2NBZGRyZXNzKCJn
bEdlblBhdGhzTlYiKSwgJmdlblBhdGhzTlYpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQ
b2ludChleHRlbnNpb25zLCAiR0xfTlZfcGF0aF9yZW5kZXJpbmciLCBsb2FkUHJvY0FkZHJlc3Mo
ImdsRGVsZXRlUGF0aHNOViIpLCAmZGVsUGF0aHNOVik7CisgICAgQXNzaWduR0xFeHRlbnNpb25F
bnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9OVl9wYXRoX3JlbmRlcmluZyIsIGxvYWRQcm9jQWRk
cmVzcygiZ2xQYXRoQ29tbWFuZHNOViIpLCAmcGF0aENvbW1hbmRzTlYpOworICAgIEFzc2lnbkdM
RXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfTlZfcGF0aF9yZW5kZXJpbmciLCBs
b2FkUHJvY0FkZHJlc3MoImdsSXNQYXRoTlYiKSwgJmlzUGF0aE5WKTsKKyAgICBBc3NpZ25HTEV4
dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX05WX3BhdGhfcmVuZGVyaW5nIiwgbG9h
ZFByb2NBZGRyZXNzKCJnbFBhdGhQYXJhbWV0ZXJmTlYiKSwgJnNldFBhdGhQYXJhbWV0ZXJmTlYp
OworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfTlZfcGF0
aF9yZW5kZXJpbmciLCBsb2FkUHJvY0FkZHJlc3MoImdsUGF0aFBhcmFtZXRlcmlOViIpLCAmc2V0
UGF0aFBhcmFtZXRlcmlOVik7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVu
c2lvbnMsICJHTF9OVl9wYXRoX3JlbmRlcmluZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRQYXRo
UGFyYW1ldGVyZnZOViIpLCAmZ2V0UGF0aFBhcmFtZXRlcmZOVik7CisgICAgQXNzaWduR0xFeHRl
bnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9OVl9wYXRoX3JlbmRlcmluZyIsIGxvYWRQ
cm9jQWRkcmVzcygiZ2xHZXRQYXRoUGFyYW1ldGVyaXZOViIpLCAmZ2V0UGF0aFBhcmFtZXRlcmlO
Vik7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9OVl9w
YXRoX3JlbmRlcmluZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xQYXRoU3RlbmNpbEZ1bmNOViIpLCAm
cGF0aFN0ZW5jaWxGdW5jTlYpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRl
bnNpb25zLCAiR0xfTlZfcGF0aF9yZW5kZXJpbmciLCBsb2FkUHJvY0FkZHJlc3MoImdsU3RlbmNp
bEZpbGxQYXRoTlYiKSwgJnN0ZW5jaWxGaWxsUGF0aE5WKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lv
bkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX05WX3BhdGhfcmVuZGVyaW5nIiwgbG9hZFByb2NB
ZGRyZXNzKCJnbFN0ZW5jaWxTdHJva2VQYXRoTlYiKSwgJnN0ZW5jaWxTdHJva2VQYXRoTlYpOwor
ICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfTlZfcGF0aF9y
ZW5kZXJpbmciLCBsb2FkUHJvY0FkZHJlc3MoImdsQ292ZXJGaWxsUGF0aE5WIiksICZjb3ZlckZp
bGxQYXRoTlYpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAi
R0xfTlZfcGF0aF9yZW5kZXJpbmciLCBsb2FkUHJvY0FkZHJlc3MoImdsQ292ZXJTdHJva2VQYXRo
TlYiKSwgJmNvdmVyU3Ryb2tlUGF0aE5WKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9p
bnQoZXh0ZW5zaW9ucywgIkdMX05WX3BhdGhfcmVuZGVyaW5nIiwgbG9hZFByb2NBZGRyZXNzKCJn
bFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aE5WIiksICZzdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhO
Vik7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9OVl9w
YXRoX3JlbmRlcmluZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tl
UGF0aE5WIiksICZzdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aE5WKTsKKyAgICBBc3NpZ25HTEV4
dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX05WX3BhdGhfcmVuZGVyaW5nIiwgbG9h
ZFByb2NBZGRyZXNzKCJnbENvdmVyRmlsbFBhdGhJbnN0YW5jZWROViIpLCAmY292ZXJGaWxsUGF0
aEluc3RhbmNlZE5WKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9u
cywgIkdMX05WX3BhdGhfcmVuZGVyaW5nIiwgbG9hZFByb2NBZGRyZXNzKCJnbENvdmVyU3Ryb2tl
UGF0aEluc3RhbmNlZE5WIiksICZjb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWROVik7CisgICAgQXNz
aWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9OVl9wYXRoX3JlbmRlcmlu
ZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWROViIpLCAmc3Rl
bmNpbEZpbGxQYXRoSW5zdGFuY2VkTlYpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2lu
dChleHRlbnNpb25zLCAiR0xfTlZfcGF0aF9yZW5kZXJpbmciLCBsb2FkUHJvY0FkZHJlc3MoImds
U3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWROViIpLCAmc3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5j
ZWROVik7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9O
Vl9wYXRoX3JlbmRlcmluZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xTdGVuY2lsVGhlbkNvdmVyRmls
bFBhdGhJbnN0YW5jZWROViIpLCAmc3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkTlYp
OworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfTlZfcGF0
aF9yZW5kZXJpbmciLCBsb2FkUHJvY0FkZHJlc3MoImdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBh
dGhJbnN0YW5jZWROViIpLCAmc3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWROVik7
CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9OVl9wYXRo
X3JlbmRlcmluZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRH
ZW5OViIpLCAmcHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuTlYpOworCiAgICAgLy8gR0xfT0VT
X3RleHR1cmVfM0QKICAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywg
IkdMX09FU190ZXh0dXJlXzNEIiwgbG9hZFByb2NBZGRyZXNzKCJnbFRleEltYWdlM0RPRVMiKSwg
JnRleEltYWdlM0QpOwogICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25z
LCAiR0xfT0VTX3RleHR1cmVfM0QiLCBsb2FkUHJvY0FkZHJlc3MoImdsVGV4U3ViSW1hZ2UzRE9F
UyIpLCAmdGV4U3ViSW1hZ2UzRCk7CiAgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4
dGVuc2lvbnMsICJHTF9PRVNfdGV4dHVyZV8zRCIsIGxvYWRQcm9jQWRkcmVzcygiZ2xDb3B5VGV4
U3ViSW1hZ2UzRE9FUyIpLCAmY29weVRleFN1YkltYWdlM0QpOwogCisgICAgLy8gR0xfTlZfZnJh
bWVidWZmZXJfbWl4ZWRfc2FtcGxlcworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChl
eHRlbnNpb25zLCAiR0xfTlZfZnJhbWVidWZmZXJfbWl4ZWRfc2FtcGxlcyIsIGxvYWRQcm9jQWRk
cmVzcygiZ2xDb3ZlcmFnZU1vZHVsYXRpb25OViIpLCAmY292ZXJhZ2VNb2R1bGF0aW9uTlYpOwor
CiAgICAgLy8gR0xfTlZfZmVuY2UKICAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0
ZW5zaW9ucywgIkdMX05WX2ZlbmNlIiwgbG9hZFByb2NBZGRyZXNzKCJnbERlbGV0ZUZlbmNlc05W
IiksICZkZWxldGVGZW5jZXNOVik7CiAgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4
dGVuc2lvbnMsICJHTF9OVl9mZW5jZSIsIGxvYWRQcm9jQWRkcmVzcygiZ2xHZW5GZW5jZXNOViIp
LCAmZ2VuRmVuY2VzTlYpOwpAQCAtMTc0OCwxNyArMTg0NCwxNyBAQAogICAgIEFzc2lnbkdMRXh0
ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfT0VTX21hcGJ1ZmZlciIsIGxvYWRQcm9j
QWRkcmVzcygiZ2xVbm1hcEJ1ZmZlck9FUyIpLCAmdW5tYXBCdWZmZXIpOwogCiAgICAgLy8gR0xf
S0hSX2RlYnVnCi0gICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJH
TF9LSFJfZGVidWciLCBsb2FkUHJvY0FkZHJlc3MoImdsRGVidWdNZXNzYWdlQ29udHJvbCIpLCAm
ZGVidWdNZXNzYWdlQ29udHJvbCk7Ci0gICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4
dGVuc2lvbnMsICJHTF9LSFJfZGVidWciLCBsb2FkUHJvY0FkZHJlc3MoImdsRGVidWdNZXNzYWdl
SW5zZXJ0IiksICZkZWJ1Z01lc3NhZ2VJbnNlcnQpOwotICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50
cnlQb2ludChleHRlbnNpb25zLCAiR0xfS0hSX2RlYnVnIiwgbG9hZFByb2NBZGRyZXNzKCJnbERl
YnVnTWVzc2FnZUNhbGxiYWNrIiksICZkZWJ1Z01lc3NhZ2VDYWxsYmFjayk7Ci0gICAgQXNzaWdu
R0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9LSFJfZGVidWciLCBsb2FkUHJv
Y0FkZHJlc3MoImdsR2V0RGVidWdNZXNzYWdlTG9nIiksICZnZXREZWJ1Z01lc3NhZ2VMb2cpOwot
ICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfS0hSX2RlYnVn
IiwgbG9hZFByb2NBZGRyZXNzKCJnbEdldFBvaW50ZXJ2IiksICZnZXRQb2ludGVydik7Ci0gICAg
QXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9LSFJfZGVidWciLCBs
b2FkUHJvY0FkZHJlc3MoImdsUHVzaERlYnVnR3JvdXAiKSwgJnB1c2hEZWJ1Z0dyb3VwKTsKLSAg
ICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0tIUl9kZWJ1ZyIs
IGxvYWRQcm9jQWRkcmVzcygiZ2xQb3BEZWJ1Z0dyb3VwIiksICZwb3BEZWJ1Z0dyb3VwKTsKLSAg
ICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0tIUl9kZWJ1ZyIs
IGxvYWRQcm9jQWRkcmVzcygiZ2xPYmplY3RMYWJlbCIpLCAmb2JqZWN0TGFiZWwpOwotICAgIEFz
c2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfS0hSX2RlYnVnIiwgbG9h
ZFByb2NBZGRyZXNzKCJnbEdldE9iamVjdExhYmVsIiksICZnZXRPYmplY3RMYWJlbCk7Ci0gICAg
QXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9LSFJfZGVidWciLCBs
b2FkUHJvY0FkZHJlc3MoImdsT2JqZWN0UHRyTGFiZWwiKSwgJm9iamVjdFB0ckxhYmVsKTsKLSAg
ICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0tIUl9kZWJ1ZyIs
IGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRPYmplY3RQdHJMYWJlbCIpLCAmZ2V0T2JqZWN0UHRyTGFi
ZWwpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfS0hS
X2RlYnVnIiwgbG9hZFByb2NBZGRyZXNzKCJnbERlYnVnTWVzc2FnZUNvbnRyb2xLSFIiKSwgJmRl
YnVnTWVzc2FnZUNvbnRyb2wpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRl
bnNpb25zLCAiR0xfS0hSX2RlYnVnIiwgbG9hZFByb2NBZGRyZXNzKCJnbERlYnVnTWVzc2FnZUlu
c2VydEtIUiIpLCAmZGVidWdNZXNzYWdlSW5zZXJ0KTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVu
dHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0tIUl9kZWJ1ZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xE
ZWJ1Z01lc3NhZ2VDYWxsYmFja0tIUiIpLCAmZGVidWdNZXNzYWdlQ2FsbGJhY2spOworICAgIEFz
c2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfS0hSX2RlYnVnIiwgbG9h
ZFByb2NBZGRyZXNzKCJnbEdldERlYnVnTWVzc2FnZUxvZ0tIUiIpLCAmZ2V0RGVidWdNZXNzYWdl
TG9nKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0tI
Ul9kZWJ1ZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRQb2ludGVydktIUiIpLCAmZ2V0UG9pbnRl
cnYpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfS0hS
X2RlYnVnIiwgbG9hZFByb2NBZGRyZXNzKCJnbFB1c2hEZWJ1Z0dyb3VwS0hSIiksICZwdXNoRGVi
dWdHcm91cCk7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJH
TF9LSFJfZGVidWciLCBsb2FkUHJvY0FkZHJlc3MoImdsUG9wRGVidWdHcm91cEtIUiIpLCAmcG9w
RGVidWdHcm91cCk7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMs
ICJHTF9LSFJfZGVidWciLCBsb2FkUHJvY0FkZHJlc3MoImdsT2JqZWN0TGFiZWxLSFIiKSwgJm9i
amVjdExhYmVsKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywg
IkdMX0tIUl9kZWJ1ZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRPYmplY3RMYWJlbEtIUiIpLCAm
Z2V0T2JqZWN0TGFiZWwpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNp
b25zLCAiR0xfS0hSX2RlYnVnIiwgbG9hZFByb2NBZGRyZXNzKCJnbE9iamVjdFB0ckxhYmVsS0hS
IiksICZvYmplY3RQdHJMYWJlbCk7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4
dGVuc2lvbnMsICJHTF9LSFJfZGVidWciLCBsb2FkUHJvY0FkZHJlc3MoImdsR2V0T2JqZWN0UHRy
TGFiZWxLSFIiKSwgJmdldE9iamVjdFB0ckxhYmVsKTsKIAogICAgIC8vIEdMX0VYVF9kcmF3X2lu
c3RhbmNlZAogICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xf
RVhUX2RyYXdfaW5zdGFuY2VkIiwgbG9hZFByb2NBZGRyZXNzKCJnbFZlcnRleEF0dHJpYkRpdmlz
b3JFWFQiKSwgJnZlcnRleEF0dHJpYkRpdmlzb3IpOwpAQCAtMTc5MSw2ICsxODg3LDE2IEBACiAg
ICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9PRVNfRUdMX2lt
YWdlIiwgbG9hZFByb2NBZGRyZXNzKCJnbEVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3RvcmFn
ZU9FUyIpLCAmZWdsSW1hZ2VUYXJnZXRSZW5kZXJidWZmZXJTdG9yYWdlT0VTKTsKICAgICBBc3Np
Z25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX09FU19FR0xfaW1hZ2UiLCBs
b2FkUHJvY0FkZHJlc3MoImdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMiKSwgJmVnbEltYWdl
VGFyZ2V0VGV4dHVyZTJET0VTKTsKIAorICAgIC8vIEdMX09FU19nZXRfcHJvZ3JhbV9iaW5hcnkK
KyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX09FU19nZXRf
cHJvZ3JhbV9iaW5hcnkiLCBsb2FkUHJvY0FkZHJlc3MoImdsR2V0UHJvZ3JhbUJpbmFyeU9FUyIp
LCAmZ2V0UHJvZ3JhbUJpbmFyeSk7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4
dGVuc2lvbnMsICJHTF9PRVNfZ2V0X3Byb2dyYW1fYmluYXJ5IiwgbG9hZFByb2NBZGRyZXNzKCJn
bFByb2dyYW1CaW5hcnlPRVMiKSwgJnByb2dyYW1CaW5hcnkpOworCisgICAgLy8gR0xfRVhUX3Jv
YnVzdG5lc3MKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdM
X0VYVF9yb2J1c3RuZXNzIiwgbG9hZFByb2NBZGRyZXNzKCJnbEdldEdyYXBoaWNzUmVzZXRTdGF0
dXNFWFQiKSwgJmdldEdyYXBoaWNzUmVzZXRTdGF0dXMpOworCisgICAgLy8gR0xfS0hSX3JvYnVz
dG5lc3MKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0tI
Ul9yb2J1c3RuZXNzIiwgbG9hZFByb2NBZGRyZXNzKCJnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXNL
SFIiKSwgJmdldEdyYXBoaWNzUmVzZXRTdGF0dXMpOworCiAgICAgLy8gMi4wCiAgICAgaWYgKGlz
QXRMZWFzdEdMRVMoZ2w6OlZlcnNpb24oMiwgMCkpKQogICAgIHsKQEAgLTIxNzcsMTEgKzIyODMs
MjEgQEAKICAgICByZXR1cm4gc3RhbmRhcmQgPT0gU1RBTkRBUkRfR0xfREVTS1RPUCAmJiB2ZXJz
aW9uID49IGdsVmVyc2lvbjsKIH0KIAorYm9vbCBGdW5jdGlvbnNHTDo6aXNBdE1vc3RHTChjb25z
dCBnbDo6VmVyc2lvbiAmZ2xWZXJzaW9uKSBjb25zdAoreworICAgIHJldHVybiBzdGFuZGFyZCA9
PSBTVEFOREFSRF9HTF9ERVNLVE9QICYmIGdsVmVyc2lvbiA+PSB2ZXJzaW9uOworfQorCiBib29s
IEZ1bmN0aW9uc0dMOjppc0F0TGVhc3RHTEVTKGNvbnN0IGdsOjpWZXJzaW9uICZnbGVzVmVyc2lv
bikgY29uc3QKIHsKICAgICByZXR1cm4gc3RhbmRhcmQgPT0gU1RBTkRBUkRfR0xfRVMgJiYgdmVy
c2lvbiA+PSBnbGVzVmVyc2lvbjsKIH0KIAorYm9vbCBGdW5jdGlvbnNHTDo6aXNBdE1vc3RHTEVT
KGNvbnN0IGdsOjpWZXJzaW9uICZnbGVzVmVyc2lvbikgY29uc3QKK3sKKyAgICByZXR1cm4gc3Rh
bmRhcmQgPT0gU1RBTkRBUkRfR0xfRVMgJiYgZ2xlc1ZlcnNpb24gPj0gdmVyc2lvbjsKK30KKwog
Ym9vbCBGdW5jdGlvbnNHTDo6aGFzRXh0ZW5zaW9uKGNvbnN0IHN0ZDo6c3RyaW5nICZleHQpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIHN0ZDo6ZmluZChleHRlbnNpb25zLmJlZ2luKCksIGV4dGVuc2lv
bnMuZW5kKCksIGV4dCkgIT0gZXh0ZW5zaW9ucy5lbmQoKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9GdW5jdGlvbnNHTC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9G
dW5jdGlvbnNHTC5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRnVuY3Rpb25zR0wuaAkod29ya2luZyBjb3B5KQpA
QCAtMzYsNyArMzYsOSBAQAogICAgIFN0YW5kYXJkR0wgc3RhbmRhcmQ7CiAgICAgR0xpbnQgcHJv
ZmlsZTsKICAgICBib29sIGlzQXRMZWFzdEdMKGNvbnN0IGdsOjpWZXJzaW9uICZnbFZlcnNpb24p
IGNvbnN0OworICAgIGJvb2wgaXNBdE1vc3RHTChjb25zdCBnbDo6VmVyc2lvbiAmZ2xWZXJzaW9u
KSBjb25zdDsKICAgICBib29sIGlzQXRMZWFzdEdMRVMoY29uc3QgZ2w6OlZlcnNpb24gJmdsZXNW
ZXJzaW9uKSBjb25zdDsKKyAgICBib29sIGlzQXRNb3N0R0xFUyhjb25zdCBnbDo6VmVyc2lvbiAm
Z2xlc1ZlcnNpb24pIGNvbnN0OwogCiAgICAgLy8gRXh0ZW5zaW9ucwogICAgIHN0ZDo6dmVjdG9y
PHN0ZDo6c3RyaW5nPiBleHRlbnNpb25zOwpAQCAtMzkyLDYgKzM5NCwzMSBAQAogICAgIFBGTkdM
VEVYSU1BR0UzRE1VTFRJU0FNUExFUFJPQyB0ZXhJbWFnZTNETXVsdGlzYW1wbGU7CiAgICAgUEZO
R0xXQUlUU1lOQ1BST0Mgd2FpdFN5bmM7CiAKKyAgICAvLyBOVl9wYXRoX3JlbmRlcmluZyAob3Jp
Z2luYWxseSB3cml0dGVuIGFnYWluc3QgMy4yIGNvbXBhdGliaWxpdHkgcHJvZmlsZSkKKyAgICBQ
Rk5HTE1BVFJJWExPQURGRVhUUFJPQyBtYXRyaXhMb2FkRVhUOworICAgIFBGTkdMR0VOUEFUSFNO
VlBST0MgZ2VuUGF0aHNOVjsKKyAgICBQRk5HTERFTEVURVBBVEhTTlZQUk9DIGRlbFBhdGhzTlY7
CisgICAgUEZOR0xQQVRIQ09NTUFORFNOVlBST0MgcGF0aENvbW1hbmRzTlY7CisgICAgUEZOR0xJ
U1BBVEhOVlBST0MgaXNQYXRoTlY7CisgICAgUEZOR0xQQVRIUEFSQU1FVEVSRk5WUFJPQyBzZXRQ
YXRoUGFyYW1ldGVyZk5WOworICAgIFBGTkdMUEFUSFBBUkFNRVRFUklOVlBST0Mgc2V0UGF0aFBh
cmFtZXRlcmlOVjsKKyAgICBQRk5HTEdFVFBBVEhQQVJBTUVURVJGVk5WUFJPQyBnZXRQYXRoUGFy
YW1ldGVyZk5WOworICAgIFBGTkdMR0VUUEFUSFBBUkFNRVRFUklWTlZQUk9DIGdldFBhdGhQYXJh
bWV0ZXJpTlY7CisgICAgUEZOR0xQQVRIU1RFTkNJTEZVTkNOVlBST0MgcGF0aFN0ZW5jaWxGdW5j
TlY7CisgICAgUEZOR0xTVEVOQ0lMRklMTFBBVEhOVlBST0Mgc3RlbmNpbEZpbGxQYXRoTlY7Cisg
ICAgUEZOR0xTVEVOQ0lMU1RST0tFUEFUSE5WUFJPQyBzdGVuY2lsU3Ryb2tlUGF0aE5WOworICAg
IFBGTkdMQ09WRVJGSUxMUEFUSE5WUFJPQyBjb3ZlckZpbGxQYXRoTlY7CisgICAgUEZOR0xDT1ZF
UlNUUk9LRVBBVEhOVlBST0MgY292ZXJTdHJva2VQYXRoTlY7CisgICAgUEZOR0xTVEVOQ0lMVEhF
TkNPVkVSRklMTFBBVEhOVlBST0Mgc3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoTlY7CisgICAgUEZO
R0xTVEVOQ0lMVEhFTkNPVkVSU1RST0tFUEFUSE5WUFJPQyBzdGVuY2lsVGhlbkNvdmVyU3Ryb2tl
UGF0aE5WOworICAgIFBGTkdMQ09WRVJGSUxMUEFUSElOU1RBTkNFRE5WUFJPQyBjb3ZlckZpbGxQ
YXRoSW5zdGFuY2VkTlY7CisgICAgUEZOR0xDT1ZFUlNUUk9LRVBBVEhJTlNUQU5DRUROVlBST0Mg
Y292ZXJTdHJva2VQYXRoSW5zdGFuY2VkTlY7CisgICAgUEZOR0xTVEVOQ0lMRklMTFBBVEhJTlNU
QU5DRUROVlBST0Mgc3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkTlY7CisgICAgUEZOR0xTVEVOQ0lM
U1RST0tFUEFUSElOU1RBTkNFRE5WUFJPQyBzdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZE5WOwor
ICAgIFBGTkdMU1RFTkNJTFRIRU5DT1ZFUkZJTExQQVRISU5TVEFOQ0VETlZQUk9DIHN0ZW5jaWxU
aGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZE5WOworICAgIFBGTkdMU1RFTkNJTFRIRU5DT1ZFUlNU
Uk9LRVBBVEhJTlNUQU5DRUROVlBST0Mgc3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5j
ZWROVjsKKyAgICBQRk5HTFBST0dSQU1QQVRIRlJBR01FTlRJTlBVVEdFTk5WUFJPQyBwcm9ncmFt
UGF0aEZyYWdtZW50SW5wdXRHZW5OVjsKKwogICAgIC8vIDMuMwogICAgIFBGTkdMQklOREZSQUdE
QVRBTE9DQVRJT05JTkRFWEVEUFJPQyBiaW5kRnJhZ0RhdGFMb2NhdGlvbkluZGV4ZWQ7CiAgICAg
UEZOR0xCSU5EU0FNUExFUlBST0MgYmluZFNhbXBsZXI7CkBAIC02MTksNiArNjQ2LDcgQEAKICAg
ICBQRk5HTFZFUlRFWEFUVFJJQklGT1JNQVRQUk9DIHZlcnRleEF0dHJpYklGb3JtYXQ7CiAgICAg
UEZOR0xWRVJURVhBVFRSSUJMRk9STUFUUFJPQyB2ZXJ0ZXhBdHRyaWJMRm9ybWF0OwogICAgIFBG
TkdMVkVSVEVYQklORElOR0RJVklTT1JQUk9DIHZlcnRleEJpbmRpbmdEaXZpc29yOworICAgIFBG
TkdMQ09WRVJBR0VNT0RVTEFUSU9OTlZQUk9DIGNvdmVyYWdlTW9kdWxhdGlvbk5WOwogCiAgICAg
Ly8gNC40CiAgICAgUEZOR0xCSU5EQlVGRkVSU0JBU0VQUk9DIGJpbmRCdWZmZXJzQmFzZTsKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9QYXRo
R0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9QYXRoR0wuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9QYXRoR0wuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMzggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBQYXRoR0wuY3BwOiBJbXBs
ZW1lbnRhdGlvbiBmb3IgUGF0aEdMIGNsYXNzLgorCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZ2wvUGF0aEdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvRnVuY3Rpb25z
R0wuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK1BhdGhHTDo6UGF0aEdMKGNvbnN0IEZ1bmN0aW9u
c0dMICpmdW5jdGlvbnMsIEdMdWludCBwYXRoKSA6IG1GdW5jdGlvbnMoZnVuY3Rpb25zKSwgbVBh
dGhJRChwYXRoKQoreworfQorCitQYXRoR0w6On5QYXRoR0woKQoreworfQorCitnbDo6RXJyb3Ig
UGF0aEdMOjpzZXRDb21tYW5kcyhHTHNpemVpIG51bUNvbW1hbmRzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSAqY29tbWFuZHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIG51bUNvb3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBjb29yZFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB2b2lkICpjb29yZHMpCit7CisgICAgbUZ1bmN0aW9ucy0+cGF0aENvbW1hbmRzTlYobVBh
dGhJRCwgbnVtQ29tbWFuZHMsIGNvbW1hbmRzLCBudW1Db29yZHMsIGNvb3JkVHlwZSwgY29vcmRz
KTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKK30KKwordm9pZCBQYXRoR0w6
OnNldFBhdGhQYXJhbWV0ZXIoR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHZhbHVlKQoreworICAgIG1G
dW5jdGlvbnMtPnNldFBhdGhQYXJhbWV0ZXJmTlYobVBhdGhJRCwgcG5hbWUsIHZhbHVlKTsKK30K
KworfSAgLy8gcngKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUGF0aEdMLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1Bh
dGhHTC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9QYXRoR0wuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBA
CisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKworLy8gUGF0aEdMLmg6IENsYXNzIGRlZmluaXRpb24gZm9yIENIUk9N
SVVNX3BhdGhfcmVuZGVyaW5nIHBhdGggb2JqZWN0IGZvciB0aGUKKy8vIEdMIGJhY2tlbmQuCisK
KyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfR0xfUEFUSElNUExfSF8KKyNkZWZpbmUgTElCQU5H
TEVfUkVOREVSRVJfR0xfUEFUSElNUExfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L1BhdGhJbXBsLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBGdW5jdGlvbnNHTDsKKwor
Y2xhc3MgUGF0aEdMIDogcHVibGljIFBhdGhJbXBsCit7CisgIHB1YmxpYzoKKyAgICBQYXRoR0wo
Y29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywgR0x1aW50IHBhdGgpOworICAgIH5QYXRoR0wo
KTsKKworICAgIGdsOjpFcnJvciBzZXRDb21tYW5kcyhHTHNpemVpIG51bUNvbW1hbmRzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVieXRlICpjb21tYW5kcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1Db29yZHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBjb29yZFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHZvaWQgKmNvb3Jkcykgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNldFBhdGhQYXJhbWV0ZXIoR0xl
bnVtIHBuYW1lLCBHTGZsb2F0IHZhbHVlKSBvdmVycmlkZTsKKworICAgIEdMdWludCBnZXRQYXRo
SUQoKSBjb25zdCB7IHJldHVybiBtUGF0aElEOyB9CisKKyAgcHJpdmF0ZToKKyAgICBjb25zdCBG
dW5jdGlvbnNHTCAqbUZ1bmN0aW9uczsKKworICAgIEdMdWludCBtUGF0aElEOworfTsKKworfSAg
Ly8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfR0xfUEFUSElN
UExfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC9Qcm9ncmFtR0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Qcm9ncmFtR0wuY3BwCShyZXZpc2lvbiAyMDgwMjEp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUHJv
Z3JhbUdMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOCwyNSArOCwzMCBAQAogCiAjaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvZ2wvUHJvZ3JhbUdMLmgiCiAKKyNpbmNsdWRlICJjb21tb24vYW5n
bGV1dGlscy5oIgogI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorI2luY2x1ZGUgImNvbW1vbi9z
dHJpbmdfdXRpbHMuaCIKICNpbmNsdWRlICJjb21tb24vdXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvZ2wvRnVuY3Rpb25zR0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9nbC9TaGFkZXJHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1N0
YXRlTWFuYWdlckdMLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvV29ya2Fyb3Vu
ZHNHTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1VuaWZvcm0uaCIKICNpbmNsdWRlICJwbGF0Zm9y
bS9QbGF0Zm9ybS5oIgogCiBuYW1lc3BhY2UgcngKIHsKIAotUHJvZ3JhbUdMOjpQcm9ncmFtR0wo
Y29uc3QgZ2w6OlByb2dyYW06OkRhdGEgJmRhdGEsCitQcm9ncmFtR0w6OlByb2dyYW1HTChjb25z
dCBnbDo6UHJvZ3JhbVN0YXRlICZkYXRhLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgRnVu
Y3Rpb25zR0wgKmZ1bmN0aW9ucywKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmthcm91
bmRzR0wgJndvcmthcm91bmRzLAotICAgICAgICAgICAgICAgICAgICAgU3RhdGVNYW5hZ2VyR0wg
KnN0YXRlTWFuYWdlcikKKyAgICAgICAgICAgICAgICAgICAgIFN0YXRlTWFuYWdlckdMICpzdGF0
ZU1hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICBib29sIGVuYWJsZVBhdGhSZW5kZXJpbmcp
CiAgICAgOiBQcm9ncmFtSW1wbChkYXRhKSwKICAgICAgIG1GdW5jdGlvbnMoZnVuY3Rpb25zKSwK
ICAgICAgIG1Xb3JrYXJvdW5kcyh3b3JrYXJvdW5kcyksCiAgICAgICBtU3RhdGVNYW5hZ2VyKHN0
YXRlTWFuYWdlciksCisgICAgICBtRW5hYmxlUGF0aFJlbmRlcmluZyhlbmFibGVQYXRoUmVuZGVy
aW5nKSwKICAgICAgIG1Qcm9ncmFtSUQoMCkKIHsKICAgICBBU1NFUlQobUZ1bmN0aW9ucyk7CkBA
IC00MywxMTAgKzQ4LDEyNSBAQAogCiBMaW5rUmVzdWx0IFByb2dyYW1HTDo6bG9hZChnbDo6SW5m
b0xvZyAmaW5mb0xvZywgZ2w6OkJpbmFyeUlucHV0U3RyZWFtICpzdHJlYW0pCiB7Ci0gICAgVU5J
TVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBMaW5rUmVzdWx0KGZhbHNlLCBnbDo6RXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICBwcmVMaW5rKCk7CisKKyAgICAvLyBSZWFkIHRoZSBi
aW5hcnkgZm9ybWF0LCBzaXplIGFuZCBibG9iCisgICAgR0xlbnVtIGJpbmFyeUZvcm1hdCAgID0g
c3RyZWFtLT5yZWFkSW50PEdMZW51bT4oKTsKKyAgICBHTGludCBiaW5hcnlMZW5ndGggICAgPSBz
dHJlYW0tPnJlYWRJbnQ8R0xpbnQ+KCk7CisgICAgY29uc3QgdWludDhfdCAqYmluYXJ5ID0gc3Ry
ZWFtLT5kYXRhKCkgKyBzdHJlYW0tPm9mZnNldCgpOworICAgIHN0cmVhbS0+c2tpcChiaW5hcnlM
ZW5ndGgpOworCisgICAgLy8gTG9hZCB0aGUgYmluYXJ5CisgICAgbUZ1bmN0aW9ucy0+cHJvZ3Jh
bUJpbmFyeShtUHJvZ3JhbUlELCBiaW5hcnlGb3JtYXQsIGJpbmFyeSwgYmluYXJ5TGVuZ3RoKTsK
KworICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBwcm9ncmFtIGxpbmtlZAorICAgIGlmICghY2hlY2tM
aW5rU3RhdHVzKGluZm9Mb2cpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIExpbmtSZXN1bHQoZmFs
c2UsIGdsOjpFcnJvcihHTF9OT19FUlJPUikpOworICAgIH0KKworICAgIHBvc3RMaW5rKCk7CisK
KyAgICByZXR1cm4gTGlua1Jlc3VsdCh0cnVlLCBnbDo6RXJyb3IoR0xfTk9fRVJST1IpKTsKIH0K
IAogZ2w6OkVycm9yIFByb2dyYW1HTDo6c2F2ZShnbDo6QmluYXJ5T3V0cHV0U3RyZWFtICpzdHJl
YW0pCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOworICAgIEdMaW50IGJpbmFyeUxlbmd0aCA9IDA7CisgICAgbUZ1bmN0
aW9ucy0+Z2V0UHJvZ3JhbWl2KG1Qcm9ncmFtSUQsIEdMX1BST0dSQU1fQklOQVJZX0xFTkdUSCwg
JmJpbmFyeUxlbmd0aCk7CisKKyAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBiaW5hcnkoYmluYXJ5
TGVuZ3RoKTsKKyAgICBHTGVudW0gYmluYXJ5Rm9ybWF0ID0gR0xfTk9ORTsKKyAgICBtRnVuY3Rp
b25zLT5nZXRQcm9ncmFtQmluYXJ5KG1Qcm9ncmFtSUQsIGJpbmFyeUxlbmd0aCwgJmJpbmFyeUxl
bmd0aCwgJmJpbmFyeUZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZi
aW5hcnlbMF0pOworCisgICAgc3RyZWFtLT53cml0ZUludChiaW5hcnlGb3JtYXQpOworICAgIHN0
cmVhbS0+d3JpdGVJbnQoYmluYXJ5TGVuZ3RoKTsKKyAgICBzdHJlYW0tPndyaXRlQnl0ZXMoJmJp
bmFyeVswXSwgYmluYXJ5TGVuZ3RoKTsKKworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJS
T1IpOwogfQogCiB2b2lkIFByb2dyYW1HTDo6c2V0QmluYXJ5UmV0cmlldmFibGVIaW50KGJvb2wg
cmV0cmlldmFibGUpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOworICAgIC8vIGdsUHJvZ3JhbVBh
cmFtZXRlcmkgaXNuJ3QgYWx3YXlzIGF2YWlsYWJsZSBvbiBFUyBiYWNrZW5kcy4KKyAgICBpZiAo
bUZ1bmN0aW9ucy0+cHJvZ3JhbVBhcmFtZXRlcmkpCisgICAgeworICAgICAgICBtRnVuY3Rpb25z
LT5wcm9ncmFtUGFyYW1ldGVyaShtUHJvZ3JhbUlELCBHTF9QUk9HUkFNX0JJTkFSWV9SRVRSSUVW
QUJMRV9ISU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRyaWV2
YWJsZSA/IEdMX1RSVUUgOiBHTF9GQUxTRSk7CisgICAgfQogfQogCi1MaW5rUmVzdWx0IFByb2dy
YW1HTDo6bGluayhjb25zdCBnbDo6RGF0YSAmZGF0YSwgZ2w6OkluZm9Mb2cgJmluZm9Mb2cpCitM
aW5rUmVzdWx0IFByb2dyYW1HTDo6bGluayhjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLCBn
bDo6SW5mb0xvZyAmaW5mb0xvZykKIHsKLSAgICAvLyBSZXNldCB0aGUgcHJvZ3JhbSBzdGF0ZSwg
ZGVsZXRlIHRoZSBjdXJyZW50IHByb2dyYW0gaWYgb25lIGV4aXN0cwotICAgIHJlc2V0KCk7Cisg
ICAgcHJlTGluaygpOwogCi0gICAgLy8gU2V0IHRoZSB0cmFuc2Zvcm0gZmVlZGJhY2sgc3RhdGUK
LSAgICBzdGQ6OnZlY3Rvcjxjb25zdCBHTGNoYXIgKj4gdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5n
czsKLSAgICBmb3IgKGNvbnN0IGF1dG8gJnRmVmFyeWluZyA6IG1EYXRhLmdldFRyYW5zZm9ybUZl
ZWRiYWNrVmFyeWluZ05hbWVzKCkpCisgICAgaWYgKG1TdGF0ZS5nZXRBdHRhY2hlZENvbXB1dGVT
aGFkZXIoKSkKICAgICB7Ci0gICAgICAgIHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MucHVzaF9i
YWNrKHRmVmFyeWluZy5jX3N0cigpKTsKKyAgICAgICAgY29uc3QgU2hhZGVyR0wgKmNvbXB1dGVT
aGFkZXJHTCA9IEdldEltcGxBczxTaGFkZXJHTD4obVN0YXRlLmdldEF0dGFjaGVkQ29tcHV0ZVNo
YWRlcigpKTsKKworICAgICAgICBtRnVuY3Rpb25zLT5hdHRhY2hTaGFkZXIobVByb2dyYW1JRCwg
Y29tcHV0ZVNoYWRlckdMLT5nZXRTaGFkZXJJRCgpKTsKKworICAgICAgICAvLyBMaW5rIGFuZCB2
ZXJpZnkKKyAgICAgICAgbUZ1bmN0aW9ucy0+bGlua1Byb2dyYW0obVByb2dyYW1JRCk7CisKKyAg
ICAgICAgLy8gRGV0YWNoIHRoZSBzaGFkZXJzCisgICAgICAgIG1GdW5jdGlvbnMtPmRldGFjaFNo
YWRlcihtUHJvZ3JhbUlELCBjb21wdXRlU2hhZGVyR0wtPmdldFNoYWRlcklEKCkpOwogICAgIH0K
LQotICAgIGlmICh0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzLmVtcHR5KCkpCisgICAgZWxzZQog
ICAgIHsKLSAgICAgICAgaWYgKG1GdW5jdGlvbnMtPnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3Mp
CisgICAgICAgIC8vIFNldCB0aGUgdHJhbnNmb3JtIGZlZWRiYWNrIHN0YXRlCisgICAgICAgIHN0
ZDo6dmVjdG9yPGNvbnN0IEdMY2hhciAqPiB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzOworICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8gJnRmVmFyeWluZyA6IG1TdGF0ZS5nZXRUcmFuc2Zvcm1GZWVk
YmFja1ZhcnlpbmdOYW1lcygpKQogICAgICAgICB7Ci0gICAgICAgICAgICBtRnVuY3Rpb25zLT50
cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKG1Qcm9ncmFtSUQsIDAsIG51bGxwdHIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1EYXRhLmdldFRyYW5z
Zm9ybUZlZWRiYWNrQnVmZmVyTW9kZSgpKTsKKyAgICAgICAgICAgIHRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZ3MucHVzaF9iYWNrKHRmVmFyeWluZy5jX3N0cigpKTsKICAgICAgICAgfQotICAgIH0K
LSAgICBlbHNlCi0gICAgewotICAgICAgICBBU1NFUlQobUZ1bmN0aW9ucy0+dHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5ncyk7Ci0gICAgICAgIG1GdW5jdGlvbnMtPnRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZ3MoCi0gICAgICAgICAgICBtUHJvZ3JhbUlELCBzdGF0aWNfY2FzdDxHTHNpemVpPih0cmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdzLnNpemUoKSksCi0gICAgICAgICAgICAmdHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5nc1swXSwgbURhdGEuZ2V0VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlKCkp
OwotICAgIH0KIAotICAgIGNvbnN0IGdsOjpTaGFkZXIgKnZlcnRleFNoYWRlciAgID0gbURhdGEu
Z2V0QXR0YWNoZWRWZXJ0ZXhTaGFkZXIoKTsKLSAgICBjb25zdCBnbDo6U2hhZGVyICpmcmFnbWVu
dFNoYWRlciA9IG1EYXRhLmdldEF0dGFjaGVkRnJhZ21lbnRTaGFkZXIoKTsKKyAgICAgICAgaWYg
KHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MuZW1wdHkoKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKG1GdW5jdGlvbnMtPnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5n
cyhtUHJvZ3JhbUlELCAwLCBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbVN0YXRlLmdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVy
TW9kZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAg
IHsKKyAgICAgICAgICAgIEFTU0VSVChtRnVuY3Rpb25zLT50cmFuc2Zvcm1GZWVkYmFja1Zhcnlp
bmdzKTsKKyAgICAgICAgICAgIG1GdW5jdGlvbnMtPnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3Mo
CisgICAgICAgICAgICAgICAgbVByb2dyYW1JRCwgc3RhdGljX2Nhc3Q8R0xzaXplaT4odHJhbnNm
b3JtRmVlZGJhY2tWYXJ5aW5ncy5zaXplKCkpLAorICAgICAgICAgICAgICAgICZ0cmFuc2Zvcm1G
ZWVkYmFja1ZhcnlpbmdzWzBdLCBtU3RhdGUuZ2V0VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2Rl
KCkpOworICAgICAgICB9CiAKLSAgICBjb25zdCBTaGFkZXJHTCAqdmVydGV4U2hhZGVyR0wgICA9
IEdldEltcGxBczxTaGFkZXJHTD4odmVydGV4U2hhZGVyKTsKLSAgICBjb25zdCBTaGFkZXJHTCAq
ZnJhZ21lbnRTaGFkZXJHTCA9IEdldEltcGxBczxTaGFkZXJHTD4oZnJhZ21lbnRTaGFkZXIpOwor
ICAgICAgICBjb25zdCBTaGFkZXJHTCAqdmVydGV4U2hhZGVyR0wgICA9IEdldEltcGxBczxTaGFk
ZXJHTD4obVN0YXRlLmdldEF0dGFjaGVkVmVydGV4U2hhZGVyKCkpOworICAgICAgICBjb25zdCBT
aGFkZXJHTCAqZnJhZ21lbnRTaGFkZXJHTCA9IEdldEltcGxBczxTaGFkZXJHTD4obVN0YXRlLmdl
dEF0dGFjaGVkRnJhZ21lbnRTaGFkZXIoKSk7CiAKLSAgICAvLyBBdHRhY2ggdGhlIHNoYWRlcnMK
LSAgICBtRnVuY3Rpb25zLT5hdHRhY2hTaGFkZXIobVByb2dyYW1JRCwgdmVydGV4U2hhZGVyR0wt
PmdldFNoYWRlcklEKCkpOwotICAgIG1GdW5jdGlvbnMtPmF0dGFjaFNoYWRlcihtUHJvZ3JhbUlE
LCBmcmFnbWVudFNoYWRlckdMLT5nZXRTaGFkZXJJRCgpKTsKKyAgICAgICAgLy8gQXR0YWNoIHRo
ZSBzaGFkZXJzCisgICAgICAgIG1GdW5jdGlvbnMtPmF0dGFjaFNoYWRlcihtUHJvZ3JhbUlELCB2
ZXJ0ZXhTaGFkZXJHTC0+Z2V0U2hhZGVySUQoKSk7CisgICAgICAgIG1GdW5jdGlvbnMtPmF0dGFj
aFNoYWRlcihtUHJvZ3JhbUlELCBmcmFnbWVudFNoYWRlckdMLT5nZXRTaGFkZXJJRCgpKTsKIAot
ICAgIC8vIEJpbmQgYXR0cmlidXRlIGxvY2F0aW9ucyB0byBtYXRjaCB0aGUgR0wgbGF5ZXIuCi0g
ICAgZm9yIChjb25zdCBzaDo6QXR0cmlidXRlICZhdHRyaWJ1dGUgOiBtRGF0YS5nZXRBdHRyaWJ1
dGVzKCkpCi0gICAgewotICAgICAgICBpZiAoIWF0dHJpYnV0ZS5zdGF0aWNVc2UpCisgICAgICAg
IC8vIEJpbmQgYXR0cmlidXRlIGxvY2F0aW9ucyB0byBtYXRjaCB0aGUgR0wgbGF5ZXIuCisgICAg
ICAgIGZvciAoY29uc3Qgc2g6OkF0dHJpYnV0ZSAmYXR0cmlidXRlIDogbVN0YXRlLmdldEF0dHJp
YnV0ZXMoKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBp
ZiAoIWF0dHJpYnV0ZS5zdGF0aWNVc2UpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1GdW5jdGlvbnMtPmJpbmRB
dHRyaWJMb2NhdGlvbihtUHJvZ3JhbUlELCBhdHRyaWJ1dGUubG9jYXRpb24sIGF0dHJpYnV0ZS5u
YW1lLmNfc3RyKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgbUZ1bmN0aW9ucy0+YmluZEF0dHJp
YkxvY2F0aW9uKG1Qcm9ncmFtSUQsIGF0dHJpYnV0ZS5sb2NhdGlvbiwgYXR0cmlidXRlLm5hbWUu
Y19zdHIoKSk7CisgICAgICAgIC8vIExpbmsgYW5kIHZlcmlmeQorICAgICAgICBtRnVuY3Rpb25z
LT5saW5rUHJvZ3JhbShtUHJvZ3JhbUlEKTsKKworICAgICAgICAvLyBEZXRhY2ggdGhlIHNoYWRl
cnMKKyAgICAgICAgbUZ1bmN0aW9ucy0+ZGV0YWNoU2hhZGVyKG1Qcm9ncmFtSUQsIHZlcnRleFNo
YWRlckdMLT5nZXRTaGFkZXJJRCgpKTsKKyAgICAgICAgbUZ1bmN0aW9ucy0+ZGV0YWNoU2hhZGVy
KG1Qcm9ncmFtSUQsIGZyYWdtZW50U2hhZGVyR0wtPmdldFNoYWRlcklEKCkpOwogICAgIH0KIAot
ICAgIC8vIExpbmsgYW5kIHZlcmlmeQotICAgIG1GdW5jdGlvbnMtPmxpbmtQcm9ncmFtKG1Qcm9n
cmFtSUQpOwotCi0gICAgLy8gRGV0YWNoIHRoZSBzaGFkZXJzCi0gICAgbUZ1bmN0aW9ucy0+ZGV0
YWNoU2hhZGVyKG1Qcm9ncmFtSUQsIHZlcnRleFNoYWRlckdMLT5nZXRTaGFkZXJJRCgpKTsKLSAg
ICBtRnVuY3Rpb25zLT5kZXRhY2hTaGFkZXIobVByb2dyYW1JRCwgZnJhZ21lbnRTaGFkZXJHTC0+
Z2V0U2hhZGVySUQoKSk7Ci0KICAgICAvLyBWZXJpZnkgdGhlIGxpbmsKLSAgICBHTGludCBsaW5r
U3RhdHVzID0gR0xfRkFMU0U7Ci0gICAgbUZ1bmN0aW9ucy0+Z2V0UHJvZ3JhbWl2KG1Qcm9ncmFt
SUQsIEdMX0xJTktfU1RBVFVTLCAmbGlua1N0YXR1cyk7Ci0gICAgaWYgKGxpbmtTdGF0dXMgPT0g
R0xfRkFMU0UpCisgICAgaWYgKCFjaGVja0xpbmtTdGF0dXMoaW5mb0xvZykpCiAgICAgewotICAg
ICAgICAvLyBMaW5raW5nIGZhaWxlZCwgcHV0IHRoZSBlcnJvciBpbnRvIHRoZSBpbmZvIGxvZwot
ICAgICAgICBHTGludCBpbmZvTG9nTGVuZ3RoID0gMDsKLSAgICAgICAgbUZ1bmN0aW9ucy0+Z2V0
UHJvZ3JhbWl2KG1Qcm9ncmFtSUQsIEdMX0lORk9fTE9HX0xFTkdUSCwgJmluZm9Mb2dMZW5ndGgp
OwotCi0gICAgICAgIHN0ZDo6c3RyaW5nIHdhcm5pbmc7Ci0KLSAgICAgICAgLy8gSW5mbyBsb2cg
bGVuZ3RoIGluY2x1ZGVzIHRoZSBudWxsIHRlcm1pbmF0b3IsIHNvIDEgbWVhbnMgdGhhdCB0aGUg
aW5mbyBsb2cgaXMgYW4gZW1wdHkKLSAgICAgICAgLy8gc3RyaW5nLgotICAgICAgICBpZiAoaW5m
b0xvZ0xlbmd0aCA+IDEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6dmVjdG9yPGNoYXI+
IGJ1ZihpbmZvTG9nTGVuZ3RoKTsKLSAgICAgICAgICAgIG1GdW5jdGlvbnMtPmdldFByb2dyYW1J
bmZvTG9nKG1Qcm9ncmFtSUQsIGluZm9Mb2dMZW5ndGgsIG51bGxwdHIsICZidWZbMF0pOwotCi0g
ICAgICAgICAgICBtRnVuY3Rpb25zLT5kZWxldGVQcm9ncmFtKG1Qcm9ncmFtSUQpOwotICAgICAg
ICAgICAgbVByb2dyYW1JRCA9IDA7Ci0KLSAgICAgICAgICAgIGluZm9Mb2cgPDwgYnVmLmRhdGEo
KTsKLQotICAgICAgICAgICAgd2FybmluZyA9IEZvcm1hdFN0cmluZygiUHJvZ3JhbSBsaW5rIGZh
aWxlZCB1bmV4cGVjdGVkbHk6ICVzIiwgYnVmLmRhdGEoKSk7Ci0gICAgICAgIH0KLSAgICAgICAg
ZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICB3YXJuaW5nID0gIlByb2dyYW0gbGluayBmYWls
ZWQgdW5leHBlY3RlZGx5IHdpdGggbm8gaW5mbyBsb2cuIjsKLSAgICAgICAgfQotICAgICAgICBB
TkdMRVBsYXRmb3JtQ3VycmVudCgpLT5sb2dXYXJuaW5nKHdhcm5pbmcuY19zdHIoKSk7Ci0gICAg
ICAgIFRSQUNFKCJcbiVzIiwgd2FybmluZy5jX3N0cigpKTsKLQotICAgICAgICAvLyBUT0RPLCBy
ZXR1cm4gR0xfT1VUX09GX01FTU9SWSBvciBqdXN0IGZhaWwgdGhlIGxpbms/IFRoaXMgaXMgYW4g
dW5leHBlY3RlZCBjYXNlCiAgICAgICAgIHJldHVybiBMaW5rUmVzdWx0KGZhbHNlLCBnbDo6RXJy
b3IoR0xfTk9fRVJST1IpKTsKICAgICB9CiAKQEAgLTE1NSw0NCArMTc1LDggQEAKICAgICAgICAg
bVN0YXRlTWFuYWdlci0+Zm9yY2VVc2VQcm9ncmFtKG1Qcm9ncmFtSUQpOwogICAgIH0KIAotICAg
IC8vIFF1ZXJ5IHRoZSB1bmlmb3JtIGluZm9ybWF0aW9uCi0gICAgQVNTRVJUKG1Vbmlmb3JtUmVh
bExvY2F0aW9uTWFwLmVtcHR5KCkpOwotICAgIGNvbnN0IGF1dG8gJnVuaWZvcm1zID0gbURhdGEu
Z2V0VW5pZm9ybXMoKTsKLSAgICBmb3IgKGNvbnN0IGdsOjpWYXJpYWJsZUxvY2F0aW9uICZlbnRy
eSA6IG1EYXRhLmdldFVuaWZvcm1Mb2NhdGlvbnMoKSkKLSAgICB7Ci0gICAgICAgIC8vIEZyb20g
dGhlIHNwZWM6Ci0gICAgICAgIC8vICJMb2NhdGlvbnMgZm9yIHNlcXVlbnRpYWwgYXJyYXkgaW5k
aWNlcyBhcmUgbm90IHJlcXVpcmVkIHRvIGJlIHNlcXVlbnRpYWwuIgotICAgICAgICBjb25zdCBn
bDo6TGlua2VkVW5pZm9ybSAmdW5pZm9ybSA9IHVuaWZvcm1zW2VudHJ5LmluZGV4XTsKLSAgICAg
ICAgc3RkOjpzdHJpbmdzdHJlYW0gZnVsbE5hbWVTdHI7Ci0gICAgICAgIGZ1bGxOYW1lU3RyIDw8
IHVuaWZvcm0ubmFtZTsKLSAgICAgICAgaWYgKHVuaWZvcm0uaXNBcnJheSgpKQotICAgICAgICB7
Ci0gICAgICAgICAgICBmdWxsTmFtZVN0ciA8PCAiWyIgPDwgZW50cnkuZWxlbWVudCA8PCAiXSI7
Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZ1bGxOYW1lID0gZnVsbE5h
bWVTdHIuc3RyKCk7CisgICAgcG9zdExpbmsoKTsKIAotICAgICAgICBHTGludCByZWFsTG9jYXRp
b24gPSBtRnVuY3Rpb25zLT5nZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW1JRCwgZnVsbE5hbWUu
Y19zdHIoKSk7Ci0gICAgICAgIG1Vbmlmb3JtUmVhbExvY2F0aW9uTWFwLnB1c2hfYmFjayhyZWFs
TG9jYXRpb24pOwotICAgIH0KLQotICAgIG1Vbmlmb3JtSW5kZXhUb1NhbXBsZXJJbmRleC5yZXNp
emUobURhdGEuZ2V0VW5pZm9ybXMoKS5zaXplKCksIEdMX0lOVkFMSURfSU5ERVgpOwotCi0gICAg
Zm9yIChzaXplX3QgdW5pZm9ybUlkID0gMDsgdW5pZm9ybUlkIDwgdW5pZm9ybXMuc2l6ZSgpOyAr
K3VuaWZvcm1JZCkKLSAgICB7Ci0gICAgICAgIGNvbnN0IGdsOjpMaW5rZWRVbmlmb3JtICZsaW5r
ZWRVbmlmb3JtID0gdW5pZm9ybXNbdW5pZm9ybUlkXTsKLQotICAgICAgICBpZiAoIWxpbmtlZFVu
aWZvcm0uaXNTYW1wbGVyKCkgfHwgIWxpbmtlZFVuaWZvcm0uc3RhdGljVXNlKQotICAgICAgICAg
ICAgY29udGludWU7Ci0KLSAgICAgICAgbVVuaWZvcm1JbmRleFRvU2FtcGxlckluZGV4W3VuaWZv
cm1JZF0gPSBtU2FtcGxlckJpbmRpbmdzLnNpemUoKTsKLQotICAgICAgICAvLyBJZiB1bmlmb3Jt
IGlzIGEgc2FtcGxlciB0eXBlLCBpbnNlcnQgaXQgaW50byB0aGUgbVNhbXBsZXJCaW5kaW5ncyBh
cnJheQotICAgICAgICBTYW1wbGVyQmluZGluZ0dMIHNhbXBsZXJCaW5kaW5nOwotICAgICAgICBz
YW1wbGVyQmluZGluZy50ZXh0dXJlVHlwZSA9IGdsOjpTYW1wbGVyVHlwZVRvVGV4dHVyZVR5cGUo
bGlua2VkVW5pZm9ybS50eXBlKTsKLSAgICAgICAgc2FtcGxlckJpbmRpbmcuYm91bmRUZXh0dXJl
VW5pdHMucmVzaXplKGxpbmtlZFVuaWZvcm0uZWxlbWVudENvdW50KCksIDApOwotICAgICAgICBt
U2FtcGxlckJpbmRpbmdzLnB1c2hfYmFjayhzYW1wbGVyQmluZGluZyk7Ci0gICAgfQotCiAgICAg
cmV0dXJuIExpbmtSZXN1bHQodHJ1ZSwgZ2w6OkVycm9yKEdMX05PX0VSUk9SKSk7CiB9CiAKQEAg
LTIzMSw3ICsyMTUsNyBAQAogICAgIG1TdGF0ZU1hbmFnZXItPnVzZVByb2dyYW0obVByb2dyYW1J
RCk7CiAgICAgbUZ1bmN0aW9ucy0+dW5pZm9ybTFpdih1bmlMb2MobG9jYXRpb24pLCBjb3VudCwg
dik7CiAKLSAgICBjb25zdCBnbDo6VmFyaWFibGVMb2NhdGlvbiAmbG9jYXRpb25FbnRyeSA9IG1E
YXRhLmdldFVuaWZvcm1Mb2NhdGlvbnMoKVtsb2NhdGlvbl07CisgICAgY29uc3QgZ2w6OlZhcmlh
YmxlTG9jYXRpb24gJmxvY2F0aW9uRW50cnkgPSBtU3RhdGUuZ2V0VW5pZm9ybUxvY2F0aW9ucygp
W2xvY2F0aW9uXTsKIAogICAgIHNpemVfdCBzYW1wbGVySW5kZXggPSBtVW5pZm9ybUluZGV4VG9T
YW1wbGVySW5kZXhbbG9jYXRpb25FbnRyeS5pbmRleF07CiAgICAgaWYgKHNhbXBsZXJJbmRleCAh
PSBHTF9JTlZBTElEX0lOREVYKQpAQCAtMjY1LDcgKzI0OSw3IEBACiB2b2lkIFByb2dyYW1HTDo6
c2V0VW5pZm9ybTF1aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWlu
dCAqdikKIHsKICAgICBtU3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFtKG1Qcm9ncmFtSUQpOwotICAg
IG1GdW5jdGlvbnMtPnVuaWZvcm0xdWl2KGxvY2F0aW9uLCBjb3VudCwgdik7CisgICAgbUZ1bmN0
aW9ucy0+dW5pZm9ybTF1aXYodW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHYpOwogfQogCiB2b2lk
IFByb2dyYW1HTDo6c2V0VW5pZm9ybTJ1aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQs
IGNvbnN0IEdMdWludCAqdikKQEAgLTM0NSw4ICszMjksOCBAQAogICAgIC8vIExhenkgaW5pdAog
ICAgIGlmIChtVW5pZm9ybUJsb2NrUmVhbExvY2F0aW9uTWFwLmVtcHR5KCkpCiAgICAgewotICAg
ICAgICBtVW5pZm9ybUJsb2NrUmVhbExvY2F0aW9uTWFwLnJlc2VydmUobURhdGEuZ2V0VW5pZm9y
bUJsb2NrcygpLnNpemUoKSk7Ci0gICAgICAgIGZvciAoY29uc3QgZ2w6OlVuaWZvcm1CbG9jayAm
dW5pZm9ybUJsb2NrIDogbURhdGEuZ2V0VW5pZm9ybUJsb2NrcygpKQorICAgICAgICBtVW5pZm9y
bUJsb2NrUmVhbExvY2F0aW9uTWFwLnJlc2VydmUobVN0YXRlLmdldFVuaWZvcm1CbG9ja3MoKS5z
aXplKCkpOworICAgICAgICBmb3IgKGNvbnN0IGdsOjpVbmlmb3JtQmxvY2sgJnVuaWZvcm1CbG9j
ayA6IG1TdGF0ZS5nZXRVbmlmb3JtQmxvY2tzKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZuYW1lV2l0aEluZGV4ID0gdW5pZm9ybUJsb2NrLm5hbWVXaXRoQXJy
YXlJbmRleCgpOwogICAgICAgICAgICAgR0x1aW50IGJsb2NrSW5kZXggPSBtRnVuY3Rpb25zLT5n
ZXRVbmlmb3JtQmxvY2tJbmRleChtUHJvZ3JhbUlELCBuYW1lV2l0aEluZGV4LmNfc3RyKCkpOwpA
QCAtMzYxLDE0ICszNDUsNiBAQAogICAgIH0KIH0KIAotdm9pZCBQcm9ncmFtR0w6OnJlc2V0KCkK
LXsKLSAgICBtVW5pZm9ybVJlYWxMb2NhdGlvbk1hcC5jbGVhcigpOwotICAgIG1Vbmlmb3JtQmxv
Y2tSZWFsTG9jYXRpb25NYXAuY2xlYXIoKTsKLSAgICBtU2FtcGxlckJpbmRpbmdzLmNsZWFyKCk7
Ci0gICAgbVVuaWZvcm1JbmRleFRvU2FtcGxlckluZGV4LmNsZWFyKCk7Ci19Ci0KIEdMdWludCBQ
cm9ncmFtR0w6OmdldFByb2dyYW1JRCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1Qcm9ncmFtSUQ7
CkBAIC00MjUsNCArNDAxLDE4OCBAQAogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIFByb2dy
YW1HTDo6c2V0UGF0aEZyYWdtZW50SW5wdXRHZW4oY29uc3Qgc3RkOjpzdHJpbmcgJmlucHV0TmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZ2VuTW9k
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBjb21wb25l
bnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxv
YXQgKmNvZWZmcykKK3sKKyAgICBBU1NFUlQobUVuYWJsZVBhdGhSZW5kZXJpbmcpOworCisgICAg
Zm9yIChjb25zdCBhdXRvICZpbnB1dCA6IG1QYXRoUmVuZGVyaW5nRnJhZ21lbnRJbnB1dHMpCisg
ICAgeworICAgICAgICBpZiAoaW5wdXQubmFtZSA9PSBpbnB1dE5hbWUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIG1GdW5jdGlvbnMtPnByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbk5WKG1Qcm9n
cmFtSUQsIGlucHV0LmxvY2F0aW9uLCBnZW5Nb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cywgY29lZmZzKTsKKyAgICAg
ICAgICAgIEFTU0VSVChtRnVuY3Rpb25zLT5nZXRFcnJvcigpID09IEdMX05PX0VSUk9SKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworfQorCit2b2lkIFByb2dyYW1H
TDo6cHJlTGluaygpCit7CisgICAgLy8gUmVzZXQgdGhlIHByb2dyYW0gc3RhdGUKKyAgICBtVW5p
Zm9ybVJlYWxMb2NhdGlvbk1hcC5jbGVhcigpOworICAgIG1Vbmlmb3JtQmxvY2tSZWFsTG9jYXRp
b25NYXAuY2xlYXIoKTsKKyAgICBtU2FtcGxlckJpbmRpbmdzLmNsZWFyKCk7CisgICAgbVVuaWZv
cm1JbmRleFRvU2FtcGxlckluZGV4LmNsZWFyKCk7CisgICAgbVBhdGhSZW5kZXJpbmdGcmFnbWVu
dElucHV0cy5jbGVhcigpOworfQorCitib29sIFByb2dyYW1HTDo6Y2hlY2tMaW5rU3RhdHVzKGds
OjpJbmZvTG9nICZpbmZvTG9nKQoreworICAgIEdMaW50IGxpbmtTdGF0dXMgPSBHTF9GQUxTRTsK
KyAgICBtRnVuY3Rpb25zLT5nZXRQcm9ncmFtaXYobVByb2dyYW1JRCwgR0xfTElOS19TVEFUVVMs
ICZsaW5rU3RhdHVzKTsKKyAgICBpZiAobGlua1N0YXR1cyA9PSBHTF9GQUxTRSkKKyAgICB7Cisg
ICAgICAgIC8vIExpbmtpbmcgZmFpbGVkLCBwdXQgdGhlIGVycm9yIGludG8gdGhlIGluZm8gbG9n
CisgICAgICAgIEdMaW50IGluZm9Mb2dMZW5ndGggPSAwOworICAgICAgICBtRnVuY3Rpb25zLT5n
ZXRQcm9ncmFtaXYobVByb2dyYW1JRCwgR0xfSU5GT19MT0dfTEVOR1RILCAmaW5mb0xvZ0xlbmd0
aCk7CisKKyAgICAgICAgc3RkOjpzdHJpbmcgd2FybmluZzsKKworICAgICAgICAvLyBJbmZvIGxv
ZyBsZW5ndGggaW5jbHVkZXMgdGhlIG51bGwgdGVybWluYXRvciwgc28gMSBtZWFucyB0aGF0IHRo
ZSBpbmZvIGxvZyBpcyBhbiBlbXB0eQorICAgICAgICAvLyBzdHJpbmcuCisgICAgICAgIGlmIChp
bmZvTG9nTGVuZ3RoID4gMSkKKyAgICAgICAgeworICAgICAgICAgICAgc3RkOjp2ZWN0b3I8Y2hh
cj4gYnVmKGluZm9Mb2dMZW5ndGgpOworICAgICAgICAgICAgbUZ1bmN0aW9ucy0+Z2V0UHJvZ3Jh
bUluZm9Mb2cobVByb2dyYW1JRCwgaW5mb0xvZ0xlbmd0aCwgbnVsbHB0ciwgJmJ1ZlswXSk7CisK
KyAgICAgICAgICAgIG1GdW5jdGlvbnMtPmRlbGV0ZVByb2dyYW0obVByb2dyYW1JRCk7CisgICAg
ICAgICAgICBtUHJvZ3JhbUlEID0gMDsKKworICAgICAgICAgICAgaW5mb0xvZyA8PCBidWYuZGF0
YSgpOworCisgICAgICAgICAgICB3YXJuaW5nID0gRm9ybWF0U3RyaW5nKCJQcm9ncmFtIGxpbmsg
ZmFpbGVkIHVuZXhwZWN0ZWRseTogJXMiLCBidWYuZGF0YSgpKTsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHdhcm5pbmcgPSAiUHJvZ3JhbSBsaW5rIGZh
aWxlZCB1bmV4cGVjdGVkbHkgd2l0aCBubyBpbmZvIGxvZy4iOworICAgICAgICB9CisgICAgICAg
IEFOR0xFUGxhdGZvcm1DdXJyZW50KCktPmxvZ1dhcm5pbmcod2FybmluZy5jX3N0cigpKTsKKyAg
ICAgICAgVFJBQ0UoIlxuJXMiLCB3YXJuaW5nLmNfc3RyKCkpOworCisgICAgICAgIC8vIFRPRE8s
IHJldHVybiBHTF9PVVRfT0ZfTUVNT1JZIG9yIGp1c3QgZmFpbCB0aGUgbGluaz8gVGhpcyBpcyBh
biB1bmV4cGVjdGVkIGNhc2UKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJl
dHVybiB0cnVlOworfQorCit2b2lkIFByb2dyYW1HTDo6cG9zdExpbmsoKQoreworICAgIC8vIFF1
ZXJ5IHRoZSB1bmlmb3JtIGluZm9ybWF0aW9uCisgICAgQVNTRVJUKG1Vbmlmb3JtUmVhbExvY2F0
aW9uTWFwLmVtcHR5KCkpOworICAgIGNvbnN0IGF1dG8gJnVuaWZvcm1Mb2NhdGlvbnMgPSBtU3Rh
dGUuZ2V0VW5pZm9ybUxvY2F0aW9ucygpOworICAgIGNvbnN0IGF1dG8gJnVuaWZvcm1zID0gbVN0
YXRlLmdldFVuaWZvcm1zKCk7CisgICAgbVVuaWZvcm1SZWFsTG9jYXRpb25NYXAucmVzaXplKHVu
aWZvcm1Mb2NhdGlvbnMuc2l6ZSgpLCBHTF9JTlZBTElEX0lOREVYKTsKKyAgICBmb3IgKHNpemVf
dCB1bmlmb3JtTG9jYXRpb24gPSAwOyB1bmlmb3JtTG9jYXRpb24gPCB1bmlmb3JtTG9jYXRpb25z
LnNpemUoKTsgdW5pZm9ybUxvY2F0aW9uKyspCisgICAgeworICAgICAgICBjb25zdCBhdXRvICZl
bnRyeSA9IHVuaWZvcm1Mb2NhdGlvbnNbdW5pZm9ybUxvY2F0aW9uXTsKKyAgICAgICAgaWYgKCFl
bnRyeS51c2VkKQorICAgICAgICB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIEZyb20gdGhlIHNwZWM6CisgICAgICAgIC8vICJMb2NhdGlvbnMgZm9yIHNl
cXVlbnRpYWwgYXJyYXkgaW5kaWNlcyBhcmUgbm90IHJlcXVpcmVkIHRvIGJlIHNlcXVlbnRpYWwu
IgorICAgICAgICBjb25zdCBnbDo6TGlua2VkVW5pZm9ybSAmdW5pZm9ybSA9IHVuaWZvcm1zW2Vu
dHJ5LmluZGV4XTsKKyAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZnVsbE5hbWVTdHI7CisgICAg
ICAgIGZ1bGxOYW1lU3RyIDw8IHVuaWZvcm0ubmFtZTsKKyAgICAgICAgaWYgKHVuaWZvcm0uaXNB
cnJheSgpKQorICAgICAgICB7CisgICAgICAgICAgICBmdWxsTmFtZVN0ciA8PCAiWyIgPDwgZW50
cnkuZWxlbWVudCA8PCAiXSI7CisgICAgICAgIH0KKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcg
JmZ1bGxOYW1lID0gZnVsbE5hbWVTdHIuc3RyKCk7CisKKyAgICAgICAgR0xpbnQgcmVhbExvY2F0
aW9uID0gbUZ1bmN0aW9ucy0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtSUQsIGZ1bGxOYW1l
LmNfc3RyKCkpOworICAgICAgICBtVW5pZm9ybVJlYWxMb2NhdGlvbk1hcFt1bmlmb3JtTG9jYXRp
b25dID0gcmVhbExvY2F0aW9uOworICAgIH0KKworICAgIG1Vbmlmb3JtSW5kZXhUb1NhbXBsZXJJ
bmRleC5yZXNpemUobVN0YXRlLmdldFVuaWZvcm1zKCkuc2l6ZSgpLCBHTF9JTlZBTElEX0lOREVY
KTsKKworICAgIGZvciAoc2l6ZV90IHVuaWZvcm1JZCA9IDA7IHVuaWZvcm1JZCA8IHVuaWZvcm1z
LnNpemUoKTsgKyt1bmlmb3JtSWQpCisgICAgeworICAgICAgICBjb25zdCBnbDo6TGlua2VkVW5p
Zm9ybSAmbGlua2VkVW5pZm9ybSA9IHVuaWZvcm1zW3VuaWZvcm1JZF07CisKKyAgICAgICAgaWYg
KCFsaW5rZWRVbmlmb3JtLmlzU2FtcGxlcigpIHx8ICFsaW5rZWRVbmlmb3JtLnN0YXRpY1VzZSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIG1Vbmlmb3JtSW5kZXhUb1NhbXBsZXJJ
bmRleFt1bmlmb3JtSWRdID0gbVNhbXBsZXJCaW5kaW5ncy5zaXplKCk7CisKKyAgICAgICAgLy8g
SWYgdW5pZm9ybSBpcyBhIHNhbXBsZXIgdHlwZSwgaW5zZXJ0IGl0IGludG8gdGhlIG1TYW1wbGVy
QmluZGluZ3MgYXJyYXkKKyAgICAgICAgU2FtcGxlckJpbmRpbmdHTCBzYW1wbGVyQmluZGluZzsK
KyAgICAgICAgc2FtcGxlckJpbmRpbmcudGV4dHVyZVR5cGUgPSBnbDo6U2FtcGxlclR5cGVUb1Rl
eHR1cmVUeXBlKGxpbmtlZFVuaWZvcm0udHlwZSk7CisgICAgICAgIHNhbXBsZXJCaW5kaW5nLmJv
dW5kVGV4dHVyZVVuaXRzLnJlc2l6ZShsaW5rZWRVbmlmb3JtLmVsZW1lbnRDb3VudCgpLCAwKTsK
KyAgICAgICAgbVNhbXBsZXJCaW5kaW5ncy5wdXNoX2JhY2soc2FtcGxlckJpbmRpbmcpOworICAg
IH0KKworICAgIC8vIERpc2NvdmVyIENIUk9NSVVNX3BhdGhfcmVuZGVyaW5nIGZyYWdtZW50IGlu
cHV0cyBpZiBlbmFibGVkLgorICAgIGlmICghbUVuYWJsZVBhdGhSZW5kZXJpbmcpCisgICAgICAg
IHJldHVybjsKKworICAgIEdMaW50IG51bUZyYWdtZW50SW5wdXRzID0gMDsKKyAgICBtRnVuY3Rp
b25zLT5nZXRQcm9ncmFtSW50ZXJmYWNlaXYobVByb2dyYW1JRCwgR0xfRlJBR01FTlRfSU5QVVRf
TlYsIEdMX0FDVElWRV9SRVNPVVJDRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZudW1GcmFnbWVudElucHV0cyk7CisgICAgaWYgKG51bUZyYWdtZW50SW5wdXRzIDw9
IDApCisgICAgICAgIHJldHVybjsKKworICAgIEdMaW50IG1heE5hbWVMZW5ndGggPSAwOworICAg
IG1GdW5jdGlvbnMtPmdldFByb2dyYW1JbnRlcmZhY2VpdihtUHJvZ3JhbUlELCBHTF9GUkFHTUVO
VF9JTlBVVF9OViwgR0xfTUFYX05BTUVfTEVOR1RILAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmbWF4TmFtZUxlbmd0aCk7CisgICAgQVNTRVJUKG1heE5hbWVMZW5ndGgp
OworCisgICAgZm9yIChHTGludCBpID0gMDsgaSA8IG51bUZyYWdtZW50SW5wdXRzOyArK2kpCisg
ICAgeworICAgICAgICBzdGQ6OnN0cmluZyBuYW1lOworICAgICAgICBuYW1lLnJlc2l6ZShtYXhO
YW1lTGVuZ3RoKTsKKworICAgICAgICBHTHNpemVpIG5hbWVMZW4gPSAwOworICAgICAgICBtRnVu
Y3Rpb25zLT5nZXRQcm9ncmFtUmVzb3VyY2VOYW1lKG1Qcm9ncmFtSUQsIEdMX0ZSQUdNRU5UX0lO
UFVUX05WLCBpLCBtYXhOYW1lTGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZuYW1lTGVuLCAmbmFtZVswXSk7CisgICAgICAgIG5hbWUucmVzaXplKG5h
bWVMZW4pOworCisgICAgICAgIC8vIElnbm9yZSBidWlsdC1pbnMKKyAgICAgICAgaWYgKGFuZ2xl
OjpCZWdpbnNXaXRoKG5hbWUsICJnbF8iKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIGNvbnN0IEdMZW51bSBrUXVlcnlQcm9wZXJ0aWVzW10gPSB7R0xfTE9DQVRJT04sIEdMX0FS
UkFZX1NJWkV9OworICAgICAgICBHTGludCBxdWVyeVJlc3VsdHNbQXJyYXlTaXplKGtRdWVyeVBy
b3BlcnRpZXMpXTsKKyAgICAgICAgR0xzaXplaSBxdWVyeUxlbmd0aCA9IDA7CisKKyAgICAgICAg
bUZ1bmN0aW9ucy0+Z2V0UHJvZ3JhbVJlc291cmNlaXYoCisgICAgICAgICAgICBtUHJvZ3JhbUlE
LCBHTF9GUkFHTUVOVF9JTlBVVF9OViwgaSwgc3RhdGljX2Nhc3Q8R0xzaXplaT4oQXJyYXlTaXpl
KGtRdWVyeVByb3BlcnRpZXMpKSwKKyAgICAgICAgICAgIGtRdWVyeVByb3BlcnRpZXMsIHN0YXRp
Y19jYXN0PEdMc2l6ZWk+KEFycmF5U2l6ZShxdWVyeVJlc3VsdHMpKSwgJnF1ZXJ5TGVuZ3RoLAor
ICAgICAgICAgICAgcXVlcnlSZXN1bHRzKTsKKworICAgICAgICBBU1NFUlQocXVlcnlMZW5ndGgg
PT0gc3RhdGljX2Nhc3Q8R0xzaXplaT4oQXJyYXlTaXplKGtRdWVyeVByb3BlcnRpZXMpKSk7CisK
KyAgICAgICAgUGF0aFJlbmRlcmluZ0ZyYWdtZW50SW5wdXQgYmFzZUVsZW1lbnRJbnB1dDsKKyAg
ICAgICAgYmFzZUVsZW1lbnRJbnB1dC5uYW1lICAgICA9IG5hbWU7CisgICAgICAgIGJhc2VFbGVt
ZW50SW5wdXQubG9jYXRpb24gPSBxdWVyeVJlc3VsdHNbMF07CisgICAgICAgIG1QYXRoUmVuZGVy
aW5nRnJhZ21lbnRJbnB1dHMucHVzaF9iYWNrKHN0ZDo6bW92ZShiYXNlRWxlbWVudElucHV0KSk7
CisKKyAgICAgICAgLy8gSWYgdGhlIGlucHV0IGlzIGFuIGFycmF5IGl0J3MgZGVub3RlZCBieSBb
MF0gc3VmZml4IG9uIHRoZSB2YXJpYWJsZQorICAgICAgICAvLyBuYW1lLiBXZSdsbCB0aGVuIGNy
ZWF0ZSBhbiBlbnRyeSBwZXIgZWFjaCBhcnJheSBpbmRleCB3aGVyZSBpbmRleCA+IDAKKyAgICAg
ICAgaWYgKGFuZ2xlOjpFbmRzV2l0aChuYW1lLCAiWzBdIikpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIC8vIGRyb3AgdGhlIHN1ZmZpeAorICAgICAgICAgICAgbmFtZS5yZXNpemUobmFtZS5zaXpl
KCkgLSAzKTsKKworICAgICAgICAgICAgY29uc3QgYXV0byBhcnJheVNpemUgICAgPSBxdWVyeVJl
c3VsdHNbMV07CisgICAgICAgICAgICBjb25zdCBhdXRvIGJhc2VMb2NhdGlvbiA9IHF1ZXJ5UmVz
dWx0c1swXTsKKworICAgICAgICAgICAgZm9yIChHTGludCBhcnJheUluZGV4ID0gMTsgYXJyYXlJ
bmRleCA8IGFycmF5U2l6ZTsgKythcnJheUluZGV4KQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIFBhdGhSZW5kZXJpbmdGcmFnbWVudElucHV0IGFycmF5RWxlbWVudElucHV0OworICAg
ICAgICAgICAgICAgIGFycmF5RWxlbWVudElucHV0Lm5hbWUgICAgID0gbmFtZSArICJbIiArIFRv
U3RyaW5nKGFycmF5SW5kZXgpICsgIl0iOworICAgICAgICAgICAgICAgIGFycmF5RWxlbWVudElu
cHV0LmxvY2F0aW9uID0gYmFzZUxvY2F0aW9uICsgYXJyYXlJbmRleDsKKyAgICAgICAgICAgICAg
ICBtUGF0aFJlbmRlcmluZ0ZyYWdtZW50SW5wdXRzLnB1c2hfYmFjayhzdGQ6Om1vdmUoYXJyYXlF
bGVtZW50SW5wdXQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwogfSAg
Ly8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvUHJvZ3JhbUdMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1Byb2dyYW1HTC5oCShyZXZpc2lvbiAy
MDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvUHJvZ3JhbUdMLmgJKHdvcmtpbmcgY29weSkKQEAgLTksNiArOSw5IEBACiAjaWZuZGVmIExJ
QkFOR0xFX1JFTkRFUkVSX0dMX1BST0dSQU1HTF9IXwogI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJF
Ul9HTF9QUk9HUkFNR0xfSF8KIAorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx2ZWN0b3I+
CisKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9Xb3JrYXJvdW5kc0dMLmgiCiAjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvUHJvZ3JhbUltcGwuaCIKIApAQCAtMjcsMTAgKzMwLDEx
IEBACiBjbGFzcyBQcm9ncmFtR0wgOiBwdWJsaWMgUHJvZ3JhbUltcGwKIHsKICAgcHVibGljOgot
ICAgIFByb2dyYW1HTChjb25zdCBnbDo6UHJvZ3JhbTo6RGF0YSAmZGF0YSwKKyAgICBQcm9ncmFt
R0woY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmZGF0YSwKICAgICAgICAgICAgICAgY29uc3QgRnVu
Y3Rpb25zR0wgKmZ1bmN0aW9ucywKICAgICAgICAgICAgICAgY29uc3QgV29ya2Fyb3VuZHNHTCAm
d29ya2Fyb3VuZHMsCi0gICAgICAgICAgICAgIFN0YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIp
OworICAgICAgICAgICAgICBTdGF0ZU1hbmFnZXJHTCAqc3RhdGVNYW5hZ2VyLAorICAgICAgICAg
ICAgICBib29sIGVuYWJsZVBhdGhSZW5kZXJpbmcpOwogICAgIH5Qcm9ncmFtR0woKSBvdmVycmlk
ZTsKIAogICAgIExpbmtSZXN1bHQgbG9hZChnbDo6SW5mb0xvZyAmaW5mb0xvZywgZ2w6OkJpbmFy
eUlucHV0U3RyZWFtICpzdHJlYW0pIG92ZXJyaWRlOwpAQCAtMzcsNyArNDEsNyBAQAogICAgIGds
OjpFcnJvciBzYXZlKGdsOjpCaW5hcnlPdXRwdXRTdHJlYW0gKnN0cmVhbSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzZXRCaW5hcnlSZXRyaWV2YWJsZUhpbnQoYm9vbCByZXRyaWV2YWJsZSkgb3ZlcnJp
ZGU7CiAKLSAgICBMaW5rUmVzdWx0IGxpbmsoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIGdsOjpJbmZv
TG9nICZpbmZvTG9nKSBvdmVycmlkZTsKKyAgICBMaW5rUmVzdWx0IGxpbmsoY29uc3QgZ2w6OkNv
bnRleHRTdGF0ZSAmZGF0YSwgZ2w6OkluZm9Mb2cgJmluZm9Mb2cpIG92ZXJyaWRlOwogICAgIEdM
Ym9vbGVhbiB2YWxpZGF0ZShjb25zdCBnbDo6Q2FwcyAmY2FwcywgZ2w6OkluZm9Mb2cgKmluZm9M
b2cpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRVbmlmb3JtMWZ2KEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KSBvdmVycmlkZTsKQEAgLTY4LDExICs3Miwx
OCBAQAogICAgIGJvb2wgZ2V0VW5pZm9ybUJsb2NrTWVtYmVySW5mbyhjb25zdCBzdGQ6OnN0cmlu
ZyAmbWVtYmVyVW5pZm9ybU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNoOjpCbG9ja01lbWJlckluZm8gKm1lbWJlckluZm9PdXQpIGNvbnN0IG92ZXJyaWRlOwogCisg
ICAgdm9pZCBzZXRQYXRoRnJhZ21lbnRJbnB1dEdlbihjb25zdCBzdGQ6OnN0cmluZyAmaW5wdXRO
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGdlbk1vZGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBjb21wb25lbnRzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqY29lZmZzKSBvdmVycmlk
ZTsKKwogICAgIEdMdWludCBnZXRQcm9ncmFtSUQoKSBjb25zdDsKICAgICBjb25zdCBzdGQ6OnZl
Y3RvcjxTYW1wbGVyQmluZGluZ0dMPiAmZ2V0QXBwbGllZFNhbXBsZXJVbmlmb3JtcygpIGNvbnN0
OwogCiAgIHByaXZhdGU6Ci0gICAgdm9pZCByZXNldCgpOworICAgIHZvaWQgcHJlTGluaygpOwor
ICAgIGJvb2wgY2hlY2tMaW5rU3RhdHVzKGdsOjpJbmZvTG9nICZpbmZvTG9nKTsKKyAgICB2b2lk
IHBvc3RMaW5rKCk7CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24sIG1ha2VzIGl0IHNpbXBsZXIg
dG8gdHlwZS4KICAgICBHTGludCB1bmlMb2MoR0xpbnQgZ2xMb2NhdGlvbikgY29uc3QgeyByZXR1
cm4gbVVuaWZvcm1SZWFsTG9jYXRpb25NYXBbZ2xMb2NhdGlvbl07IH0KQEAgLTkwLDYgKzEwMSwx
NSBAQAogICAgIC8vIEEgbWFwIGZyb20gYSBtRGF0YS5nZXRVbmlmb3JtcygpIGluZGV4IHRvIGEg
bVNhbXBsZXJCaW5kaW5ncyBpbmRleC4KICAgICBzdGQ6OnZlY3RvcjxzaXplX3Q+IG1Vbmlmb3Jt
SW5kZXhUb1NhbXBsZXJJbmRleDsKIAorICAgIHN0cnVjdCBQYXRoUmVuZGVyaW5nRnJhZ21lbnRJ
bnB1dAorICAgIHsKKyAgICAgICAgc3RkOjpzdHJpbmcgbmFtZTsKKyAgICAgICAgR0xpbnQgbG9j
YXRpb247CisgICAgfTsKKyAgICBzdGQ6OnZlY3RvcjxQYXRoUmVuZGVyaW5nRnJhZ21lbnRJbnB1
dD4gbVBhdGhSZW5kZXJpbmdGcmFnbWVudElucHV0czsKKworICAgIGJvb2wgbUVuYWJsZVBhdGhS
ZW5kZXJpbmc7CisKICAgICBHTHVpbnQgbVByb2dyYW1JRDsKIH07CiAKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJidWZmZXJHTC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC9SZW5kZXJidWZmZXJHTC5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyYnVmZmVyR0wuaAko
d29ya2luZyBjb3B5KQpAQCAtMzgsMTIgKzM4LDYgQEAKIAogICAgIEdMdWludCBnZXRSZW5kZXJi
dWZmZXJJRCgpIGNvbnN0OwogCi0gICAgZ2w6OkVycm9yIGdldEF0dGFjaG1lbnRSZW5kZXJUYXJn
ZXQoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJBdHRhY2htZW50
UmVuZGVyVGFyZ2V0ICoqcnRPdXQpIG92ZXJyaWRlCi0gICAgewotICAgICAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJOb3Qgc3VwcG9ydGVkIG9uIE9wZW5HTCIpOwotICAg
IH0KLQogICBwcml2YXRlOgogICAgIGNvbnN0IEZ1bmN0aW9uc0dMICptRnVuY3Rpb25zOwogICAg
IGNvbnN0IFdvcmthcm91bmRzR0wgJm1Xb3JrYXJvdW5kczsKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJlckdMLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
UmVuZGVyZXJHTC5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJlckdMLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTIsMTUgKzEyLDE4IEBACiAKICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9BdHRyaWJ1dGVNYXAuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9EYXRhLmgi
CisjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dFN0YXRlLmgiCisjaW5jbHVkZSAibGliQU5HTEUv
UGF0aC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1N1cmZhY2UuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9nbC9CbGl0R0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9C
dWZmZXJHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL0NvbXBpbGVyR0wuaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9Db250ZXh0R0wuaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9nbC9GZW5jZU5WR0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9nbC9GZW5jZVN5bmNHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL0Zy
YW1lYnVmZmVyR0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9GdW5jdGlvbnNH
TC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1BhdGhHTC5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2dsL1Byb2dyYW1HTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL2dsL1F1ZXJ5R0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9SZW5k
ZXJidWZmZXJHTC5oIgpAQCAtMzMsNiArMzYsMjQgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9nbC9WZXJ0ZXhBcnJheUdMLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wv
cmVuZGVyZXJnbF91dGlscy5oIgogCituYW1lc3BhY2UKK3sKKworc3RkOjp2ZWN0b3I8R0x1aW50
PiBHYXRoZXJQYXRocyhjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMpCit7Cisg
ICAgc3RkOjp2ZWN0b3I8R0x1aW50PiByZXQ7CisgICAgcmV0LnJlc2VydmUocGF0aHMuc2l6ZSgp
KTsKKworICAgIGZvciAoY29uc3QgYXV0byAqcCA6IHBhdGhzKQorICAgIHsKKyAgICAgICAgY29u
c3QgYXV0byAqcGF0aE9iaiA9IHJ4OjpHZXRJbXBsQXM8cng6OlBhdGhHTD4ocCk7CisgICAgICAg
IHJldC5wdXNoX2JhY2socGF0aE9iai0+Z2V0UGF0aElEKCkpOworICAgIH0KKyAgICByZXR1cm4g
cmV0OworfQorCit9ICAvLyBuYW1lc3BhY2UKKwogI2lmbmRlZiBOREVCVUcKIHN0YXRpYyB2b2lk
IElOVEVSTkFMX0dMX0FQSUVOVFJZIExvZ0dMRGVidWdNZXNzYWdlKEdMZW51bSBzb3VyY2UsIEdM
ZW51bSB0eXBlLCBHTHVpbnQgaWQsIEdMZW51bSBzZXZlcml0eSwgR0xzaXplaSBsZW5ndGgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGNoYXIgKm1lc3NhZ2UsIGNvbnN0IHZvaWQgKnVzZXJQYXJhbSkKQEAgLTgxLDE2ICsxMDIsMTYg
QEAKIHsKIAogUmVuZGVyZXJHTDo6UmVuZGVyZXJHTChjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rp
b25zLCBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmliTWFwKQotICAgIDogUmVuZGVyZXIo
KSwKLSAgICAgIG1NYXhTdXBwb3J0ZWRFU1ZlcnNpb24oMCwgMCksCisgICAgOiBtTWF4U3VwcG9y
dGVkRVNWZXJzaW9uKDAsIDApLAogICAgICAgbUZ1bmN0aW9ucyhmdW5jdGlvbnMpLAogICAgICAg
bVN0YXRlTWFuYWdlcihudWxscHRyKSwKICAgICAgIG1CbGl0dGVyKG51bGxwdHIpLAogICAgICAg
bUhhc0RlYnVnT3V0cHV0KGZhbHNlKSwKLSAgICAgIG1Ta2lwRHJhd0NhbGxzKGZhbHNlKQorICAg
ICAgbVNraXBEcmF3Q2FsbHMoZmFsc2UpLAorICAgICAgbUNhcHNJbml0aWFsaXplZChmYWxzZSkK
IHsKICAgICBBU1NFUlQobUZ1bmN0aW9ucyk7Ci0gICAgbVN0YXRlTWFuYWdlciA9IG5ldyBTdGF0
ZU1hbmFnZXJHTChtRnVuY3Rpb25zLCBnZXRSZW5kZXJlckNhcHMoKSk7CisgICAgbVN0YXRlTWFu
YWdlciA9IG5ldyBTdGF0ZU1hbmFnZXJHTChtRnVuY3Rpb25zLCBnZXROYXRpdmVDYXBzKCkpOwog
ICAgIG5hdGl2ZWdsX2dsOjpHZW5lcmF0ZVdvcmthcm91bmRzKG1GdW5jdGlvbnMsICZtV29ya2Fy
b3VuZHMpOwogICAgIG1CbGl0dGVyID0gbmV3IEJsaXRHTChmdW5jdGlvbnMsIG1Xb3JrYXJvdW5k
cywgbVN0YXRlTWFuYWdlcik7CiAKQEAgLTEwMSw2ICsxMjIsNyBAQAogI2lmbmRlZiBOREVCVUcK
ICAgICBpZiAobUhhc0RlYnVnT3V0cHV0KQogICAgIHsKKyAgICAgICAgbUZ1bmN0aW9ucy0+ZW5h
YmxlKEdMX0RFQlVHX09VVFBVVCk7CiAgICAgICAgIG1GdW5jdGlvbnMtPmVuYWJsZShHTF9ERUJV
R19PVVRQVVRfU1lOQ0hST05PVVMpOwogICAgICAgICBtRnVuY3Rpb25zLT5kZWJ1Z01lc3NhZ2VD
b250cm9sKEdMX0RPTlRfQ0FSRSwgR0xfRE9OVF9DQVJFLCBHTF9ERUJVR19TRVZFUklUWV9ISUdI
LCAwLCBudWxscHRyLCBHTF9UUlVFKTsKICAgICAgICAgbUZ1bmN0aW9ucy0+ZGVidWdNZXNzYWdl
Q29udHJvbChHTF9ET05UX0NBUkUsIEdMX0RPTlRfQ0FSRSwgR0xfREVCVUdfU0VWRVJJVFlfTUVE
SVVNLCAwLCBudWxscHRyLCBHTF9UUlVFKTsKQEAgLTExNiw2ICsxMzgsMTcgQEAKICAgICB7CiAg
ICAgICAgIG1Ta2lwRHJhd0NhbGxzID0gdHJ1ZTsKICAgICB9CisKKyAgICBpZiAobVdvcmthcm91
bmRzLmluaXRpYWxpemVDdXJyZW50VmVydGV4QXR0cmlidXRlcykKKyAgICB7CisgICAgICAgIEdM
aW50IG1heFZlcnRleEF0dHJpYnMgPSAwOworICAgICAgICBtRnVuY3Rpb25zLT5nZXRJbnRlZ2Vy
dihHTF9NQVhfVkVSVEVYX0FUVFJJQlMsICZtYXhWZXJ0ZXhBdHRyaWJzKTsKKworICAgICAgICBm
b3IgKEdMaW50IGkgPSAwOyBpIDwgbWF4VmVydGV4QXR0cmliczsgKytpKQorICAgICAgICB7Cisg
ICAgICAgICAgICBtRnVuY3Rpb25zLT52ZXJ0ZXhBdHRyaWI0ZihpLCAwLjBmLCAwLjBmLCAwLjBm
LCAxLjBmKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogUmVuZGVyZXJHTDo6flJlbmRlcmVyR0wo
KQpAQCAtMTUxLDEzICsxODQsMTIgQEAKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9S
KTsKIH0KIAotZ2w6OkVycm9yIFJlbmRlcmVyR0w6OmRyYXdBcnJheXMoY29uc3QgZ2w6OkRhdGEg
JmRhdGEsIEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCkKK2dsOjpFcnJv
ciBSZW5kZXJlckdMOjpkcmF3QXJyYXlzKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZpcnN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCkKIHsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBtU3Rh
dGVNYW5hZ2VyLT5zZXREcmF3QXJyYXlzU3RhdGUoZGF0YSwgZmlyc3QsIGNvdW50LCAwKTsKLSAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAg
IH0KKyAgICBBTkdMRV9UUlkobVN0YXRlTWFuYWdlci0+c2V0RHJhd0FycmF5c1N0YXRlKGRhdGEs
IGZpcnN0LCBjb3VudCwgMCkpOwogCiAgICAgaWYgKCFtU2tpcERyYXdDYWxscykKICAgICB7CkBA
IC0xNjQsMjAgKzE5NiwxNiBAQAogICAgICAgICBtRnVuY3Rpb25zLT5kcmF3QXJyYXlzKG1vZGUs
IGZpcnN0LCBjb3VudCk7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJP
Uik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJvciBSZW5kZXJlckdM
OjpkcmF3QXJyYXlzSW5zdGFuY2VkKGNvbnN0IGdsOjpEYXRhICZkYXRhLAorZ2w6OkVycm9yIFJl
bmRlcmVyR0w6OmRyYXdBcnJheXNJbnN0YW5jZWQoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0
YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2Rl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZmlyc3Qs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0
YW5jZUNvdW50KQogewotICAgIGdsOjpFcnJvciBlcnJvciA9IG1TdGF0ZU1hbmFnZXItPnNldERy
YXdBcnJheXNTdGF0ZShkYXRhLCBmaXJzdCwgY291bnQsIGluc3RhbmNlQ291bnQpOwotICAgIGlm
IChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQor
ICAgIEFOR0xFX1RSWShtU3RhdGVNYW5hZ2VyLT5zZXREcmF3QXJyYXlzU3RhdGUoZGF0YSwgZmly
c3QsIGNvdW50LCBpbnN0YW5jZUNvdW50KSk7CiAKICAgICBpZiAoIW1Ta2lwRHJhd0NhbGxzKQog
ICAgIHsKQEAgLTE4NCwxMCArMjEyLDEwIEBACiAgICAgICAgIG1GdW5jdGlvbnMtPmRyYXdBcnJh
eXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBpbnN0YW5jZUNvdW50KTsKICAgICB9CiAK
LSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJy
b3IoKTsKIH0KIAotZ2w6OkVycm9yIFJlbmRlcmVyR0w6OmRyYXdFbGVtZW50cyhjb25zdCBnbDo6
RGF0YSAmZGF0YSwKK2dsOjpFcnJvciBSZW5kZXJlckdMOjpkcmF3RWxlbWVudHMoY29uc3QgZ2w6
OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLApA
QCAtMTk0LDIzICsyMjIsMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0x2b2lkICppbmRpY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkKIHsKLSAgICBjb25zdCBHTHZvaWQg
KmRyYXdJbmRleFBvaW50ZXIgPSBudWxscHRyOwotICAgIGdsOjpFcnJvciBlcnJvciA9Ci0gICAg
ICAgIG1TdGF0ZU1hbmFnZXItPnNldERyYXdFbGVtZW50c1N0YXRlKGRhdGEsIGNvdW50LCB0eXBl
LCBpbmRpY2VzLCAwLCAmZHJhd0luZGV4UG9pbnRlcik7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3Io
KSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgY29uc3QgR0x2b2lk
ICpkcmF3SW5kZXhQdHIgPSBudWxscHRyOworICAgIEFOR0xFX1RSWShtU3RhdGVNYW5hZ2VyLT5z
ZXREcmF3RWxlbWVudHNTdGF0ZShkYXRhLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgMCwgJmRyYXdJ
bmRleFB0cikpOwogCiAgICAgaWYgKCFtU2tpcERyYXdDYWxscykKICAgICB7Ci0gICAgICAgIG1G
dW5jdGlvbnMtPmRyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwgdHlwZSwgZHJhd0luZGV4UG9pbnRl
cik7CisgICAgICAgIG1GdW5jdGlvbnMtPmRyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwgdHlwZSwg
ZHJhd0luZGV4UHRyKTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9S
KTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIFJlbmRlcmVyR0w6
OmRyYXdFbGVtZW50c0luc3RhbmNlZChjb25zdCBnbDo6RGF0YSAmZGF0YSwKK2dsOjpFcnJvciBS
ZW5kZXJlckdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAm
ZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0eXBlLApAQCAtMjE5LDEyICsyNDIsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkKIHsK
ICAgICBjb25zdCBHTHZvaWQgKmRyYXdJbmRleFBvaW50ZXIgPSBudWxscHRyOwotICAgIGdsOjpF
cnJvciBlcnJvciA9IG1TdGF0ZU1hbmFnZXItPnNldERyYXdFbGVtZW50c1N0YXRlKGRhdGEsIGNv
dW50LCB0eXBlLCBpbmRpY2VzLCBpbnN0YW5jZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRyYXdJbmRleFBvaW50ZXIpOwotICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAg
fQorICAgIEFOR0xFX1RSWShtU3RhdGVNYW5hZ2VyLT5zZXREcmF3RWxlbWVudHNTdGF0ZShkYXRh
LCBjb3VudCwgdHlwZSwgaW5kaWNlcywgaW5zdGFuY2VzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZHJhd0luZGV4UG9pbnRlcikpOwogCiAgICAg
aWYgKCFtU2tpcERyYXdDYWxscykKICAgICB7CkBAIC0yMzEsMTAgKzI1MCwxMCBAQAogICAgICAg
ICBtRnVuY3Rpb25zLT5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291bnQsIHR5cGUsIGRy
YXdJbmRleFBvaW50ZXIsIGluc3RhbmNlcyk7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJv
ciBSZW5kZXJlckdMOjpkcmF3UmFuZ2VFbGVtZW50cyhjb25zdCBnbDo6RGF0YSAmZGF0YSwKK2ds
OjpFcnJvciBSZW5kZXJlckdMOjpkcmF3UmFuZ2VFbGVtZW50cyhjb25zdCBnbDo6Q29udGV4dFN0
YXRlICZkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBz
dGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZW5k
LApAQCAtMjQ0LDEyICsyNjMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpJbmRleFJhbmdlICZpbmRleFJhbmdlKQogewogICAgIGNvbnN0IEdM
dm9pZCAqZHJhd0luZGV4UG9pbnRlciA9IG51bGxwdHI7Ci0gICAgZ2w6OkVycm9yIGVycm9yID0K
LSAgICAgICAgbVN0YXRlTWFuYWdlci0+c2V0RHJhd0VsZW1lbnRzU3RhdGUoZGF0YSwgY291bnQs
IHR5cGUsIGluZGljZXMsIDAsICZkcmF3SW5kZXhQb2ludGVyKTsKLSAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9U
UlkoCisgICAgICAgIG1TdGF0ZU1hbmFnZXItPnNldERyYXdFbGVtZW50c1N0YXRlKGRhdGEsIGNv
dW50LCB0eXBlLCBpbmRpY2VzLCAwLCAmZHJhd0luZGV4UG9pbnRlcikpOwogCiAgICAgaWYgKCFt
U2tpcERyYXdDYWxscykKICAgICB7CkBAIC0yNTksNzAgKzI3NCwxNzcgQEAKICAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotQ29tcGlsZXJJbXBsICpSZW5kZXJlckdMOjpj
cmVhdGVDb21waWxlcigpCit2b2lkIFJlbmRlcmVyR0w6OnN0ZW5jaWxGaWxsUGF0aChjb25zdCBn
bDo6Q29udGV4dFN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpQYXRoICpwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGZpbGxNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IG1hc2spCiB7Ci0gICAgcmV0dXJuIG5ldyBDb21waWxlckdMKG1GdW5jdGlvbnMpOworICAgIGNv
bnN0IGF1dG8gKnBhdGhPYmogPSBHZXRJbXBsQXM8UGF0aEdMPihwYXRoKTsKKworICAgIG1GdW5j
dGlvbnMtPnN0ZW5jaWxGaWxsUGF0aE5WKHBhdGhPYmotPmdldFBhdGhJRCgpLCBmaWxsTW9kZSwg
bWFzayk7CisKKyAgICBBU1NFUlQobUZ1bmN0aW9ucy0+Z2V0RXJyb3IoKSA9PSBHTF9OT19FUlJP
Uik7CiB9CiAKLVNoYWRlckltcGwgKlJlbmRlcmVyR0w6OmNyZWF0ZVNoYWRlcihjb25zdCBnbDo6
U2hhZGVyOjpEYXRhICZkYXRhKQordm9pZCBSZW5kZXJlckdMOjpzdGVuY2lsU3Ryb2tlUGF0aChj
b25zdCBnbDo6Q29udGV4dFN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OlBhdGggKnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IG1hc2spCiB7Ci0gICAgcmV0dXJuIG5ldyBTaGFkZXJHTChkYXRhLCBtRnVu
Y3Rpb25zLCBtV29ya2Fyb3VuZHMpOworICAgIGNvbnN0IGF1dG8gKnBhdGhPYmogPSBHZXRJbXBs
QXM8UGF0aEdMPihwYXRoKTsKKworICAgIG1GdW5jdGlvbnMtPnN0ZW5jaWxTdHJva2VQYXRoTlYo
cGF0aE9iai0+Z2V0UGF0aElEKCksIHJlZmVyZW5jZSwgbWFzayk7CisKKyAgICBBU1NFUlQobUZ1
bmN0aW9ucy0+Z2V0RXJyb3IoKSA9PSBHTF9OT19FUlJPUik7CiB9CiAKLVByb2dyYW1JbXBsICpS
ZW5kZXJlckdMOjpjcmVhdGVQcm9ncmFtKGNvbnN0IGdsOjpQcm9ncmFtOjpEYXRhICZkYXRhKQor
dm9pZCBSZW5kZXJlckdMOjpjb3ZlckZpbGxQYXRoKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJnN0
YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQYXRoICpwYXRo
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpCiB7Ci0g
ICAgcmV0dXJuIG5ldyBQcm9ncmFtR0woZGF0YSwgbUZ1bmN0aW9ucywgbVdvcmthcm91bmRzLCBt
U3RhdGVNYW5hZ2VyKTsKKworICAgIGNvbnN0IGF1dG8gKnBhdGhPYmogPSBHZXRJbXBsQXM8UGF0
aEdMPihwYXRoKTsKKyAgICBtRnVuY3Rpb25zLT5jb3ZlckZpbGxQYXRoTlYocGF0aE9iai0+Z2V0
UGF0aElEKCksIGNvdmVyTW9kZSk7CisKKyAgICBBU1NFUlQobUZ1bmN0aW9ucy0+Z2V0RXJyb3Io
KSA9PSBHTF9OT19FUlJPUik7CiB9CiAKLUZyYW1lYnVmZmVySW1wbCAqUmVuZGVyZXJHTDo6Y3Jl
YXRlRnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEYXRhICZkYXRhKQordm9pZCBS
ZW5kZXJlckdMOjpjb3ZlclN0cm9rZVBhdGgoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmc3RhdGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGF0aCAqcGF0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpCiB7Ci0g
ICAgcmV0dXJuIG5ldyBGcmFtZWJ1ZmZlckdMKGRhdGEsIG1GdW5jdGlvbnMsIG1TdGF0ZU1hbmFn
ZXIsIG1Xb3JrYXJvdW5kcywgZmFsc2UpOworICAgIGNvbnN0IGF1dG8gKnBhdGhPYmogPSBHZXRJ
bXBsQXM8UGF0aEdMPihwYXRoKTsKKyAgICBtRnVuY3Rpb25zLT5jb3ZlclN0cm9rZVBhdGhOVihw
YXRoT2JqLT5nZXRQYXRoSUQoKSwgY292ZXJNb2RlKTsKKworICAgIEFTU0VSVChtRnVuY3Rpb25z
LT5nZXRFcnJvcigpID09IEdMX05PX0VSUk9SKTsKIH0KIAotVGV4dHVyZUltcGwgKlJlbmRlcmVy
R0w6OmNyZWF0ZVRleHR1cmUoR0xlbnVtIHRhcmdldCkKK3ZvaWQgUmVuZGVyZXJHTDo6c3RlbmNp
bFRoZW5Db3ZlckZpbGxQYXRoKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJnN0YXRlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBhdGggKnBhdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1v
ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFz
aywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zl
ck1vZGUpCiB7Ci0gICAgcmV0dXJuIG5ldyBUZXh0dXJlR0wodGFyZ2V0LCBtRnVuY3Rpb25zLCBt
V29ya2Fyb3VuZHMsIG1TdGF0ZU1hbmFnZXIsIG1CbGl0dGVyKTsKKworICAgIGNvbnN0IGF1dG8g
KnBhdGhPYmogPSBHZXRJbXBsQXM8UGF0aEdMPihwYXRoKTsKKyAgICBtRnVuY3Rpb25zLT5zdGVu
Y2lsVGhlbkNvdmVyRmlsbFBhdGhOVihwYXRoT2JqLT5nZXRQYXRoSUQoKSwgZmlsbE1vZGUsIG1h
c2ssIGNvdmVyTW9kZSk7CisKKyAgICBBU1NFUlQobUZ1bmN0aW9ucy0+Z2V0RXJyb3IoKSA9PSBH
TF9OT19FUlJPUik7CiB9CiAKLVJlbmRlcmJ1ZmZlckltcGwgKlJlbmRlcmVyR0w6OmNyZWF0ZVJl
bmRlcmJ1ZmZlcigpCit2b2lkIFJlbmRlcmVyR0w6OnN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRo
KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGF0aCAqcGF0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSkKIHsK
LSAgICByZXR1cm4gbmV3IFJlbmRlcmJ1ZmZlckdMKG1GdW5jdGlvbnMsIG1Xb3JrYXJvdW5kcywg
bVN0YXRlTWFuYWdlciwgZ2V0UmVuZGVyZXJUZXh0dXJlQ2FwcygpKTsKKworICAgIGNvbnN0IGF1
dG8gKnBhdGhPYmogPSBHZXRJbXBsQXM8UGF0aEdMPihwYXRoKTsKKyAgICBtRnVuY3Rpb25zLT5z
dGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aE5WKHBhdGhPYmotPmdldFBhdGhJRCgpLCByZWZlcmVu
Y2UsIG1hc2ssIGNvdmVyTW9kZSk7CisKKyAgICBBU1NFUlQobUZ1bmN0aW9ucy0+Z2V0RXJyb3Io
KSA9PSBHTF9OT19FUlJPUik7CiB9CiAKLUJ1ZmZlckltcGwgKlJlbmRlcmVyR0w6OmNyZWF0ZUJ1
ZmZlcigpCit2b2lkIFJlbmRlcmVyR0w6OmNvdmVyRmlsbFBhdGhJbnN0YW5jZWQoY29uc3QgZ2w6
OkNvbnRleHRTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNm
b3JtVmFsdWVzKQogewotICAgIHJldHVybiBuZXcgQnVmZmVyR0wobUZ1bmN0aW9ucywgbVN0YXRl
TWFuYWdlcik7CisgICAgY29uc3QgYXV0byAmcGF0aE9ianMgPSBHYXRoZXJQYXRocyhwYXRocyk7
CisKKyAgICBtRnVuY3Rpb25zLT5jb3ZlckZpbGxQYXRoSW5zdGFuY2VkTlYoc3RhdGljX2Nhc3Q8
R0xzaXplaT4ocGF0aE9ianMuc2l6ZSgpKSwgR0xfVU5TSUdORURfSU5ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGF0aE9ianNbMF0sIDAsIGNvdmVyTW9kZSwg
dHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHJhbnNmb3JtVmFsdWVzKTsKKworICAgIEFTU0VSVChtRnVuY3Rpb25zLT5nZXRFcnJvcigpID09
IEdMX05PX0VSUk9SKTsKIH0KK3ZvaWQgUmVuZGVyZXJHTDo6Y292ZXJTdHJva2VQYXRoSW5zdGFu
Y2VkKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVy
TW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQoreworICAgIGNvbnN0IGF1dG8gJnBhdGhP
YmpzID0gR2F0aGVyUGF0aHMocGF0aHMpOwogCi1WZXJ0ZXhBcnJheUltcGwgKlJlbmRlcmVyR0w6
OmNyZWF0ZVZlcnRleEFycmF5KGNvbnN0IGdsOjpWZXJ0ZXhBcnJheTo6RGF0YSAmZGF0YSkKKyAg
ICBtRnVuY3Rpb25zLT5jb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWROVihzdGF0aWNfY2FzdDxHTHNp
emVpPihwYXRoT2Jqcy5zaXplKCkpLCBHTF9VTlNJR05FRF9JTlQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhdGhPYmpzWzBdLCAwLCBjb3Zlck1vZGUsIHRy
YW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHJhbnNmb3JtVmFsdWVzKTsKKworICAgIEFTU0VSVChtRnVuY3Rpb25zLT5nZXRFcnJvcigpID09
IEdMX05PX0VSUk9SKTsKK30KK3ZvaWQgUmVuZGVyZXJHTDo6c3RlbmNpbEZpbGxQYXRoSW5zdGFu
Y2VkKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxN
b2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1h
c2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJh
bnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKIHsKLSAgICByZXR1cm4gbmV3IFZlcnRleEFy
cmF5R0woZGF0YSwgbUZ1bmN0aW9ucywgbVN0YXRlTWFuYWdlcik7CisgICAgY29uc3QgYXV0byAm
cGF0aE9ianMgPSBHYXRoZXJQYXRocyhwYXRocyk7CisKKyAgICBtRnVuY3Rpb25zLT5zdGVuY2ls
RmlsbFBhdGhJbnN0YW5jZWROVihzdGF0aWNfY2FzdDxHTHNpemVpPihwYXRoT2Jqcy5zaXplKCkp
LCBHTF9VTlNJR05FRF9JTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJnBhdGhPYmpzWzBdLCAwLCBmaWxsTW9kZSwgbWFzaywgdHJhbnNmb3JtVHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1WYWx1ZXMp
OworCisgICAgQVNTRVJUKG1GdW5jdGlvbnMtPmdldEVycm9yKCkgPT0gR0xfTk9fRVJST1IpOwog
fQordm9pZCBSZW5kZXJlckdMOjpzdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZChjb25zdCBnbDo6
Q29udGV4dFN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3Jt
VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQoreworICAgIGNvbnN0IGF1dG8gJnBhdGhPYmpzID0g
R2F0aGVyUGF0aHMocGF0aHMpOwogCi1RdWVyeUltcGwgKlJlbmRlcmVyR0w6OmNyZWF0ZVF1ZXJ5
KEdMZW51bSB0eXBlKQotewotICAgIHJldHVybiBuZXcgUXVlcnlHTCh0eXBlLCBtRnVuY3Rpb25z
LCBtU3RhdGVNYW5hZ2VyKTsKKyAgICBtRnVuY3Rpb25zLT5zdGVuY2lsU3Ryb2tlUGF0aEluc3Rh
bmNlZE5WKHN0YXRpY19jYXN0PEdMc2l6ZWk+KHBhdGhPYmpzLnNpemUoKSksIEdMX1VOU0lHTkVE
X0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwYXRo
T2Jqc1swXSwgMCwgcmVmZXJlbmNlLCBtYXNrLCB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtVmFsdWVzKTsKKworICAg
IEFTU0VSVChtRnVuY3Rpb25zLT5nZXRFcnJvcigpID09IEdMX05PX0VSUk9SKTsKIH0KIAotRmVu
Y2VOVkltcGwgKlJlbmRlcmVyR0w6OmNyZWF0ZUZlbmNlTlYoKQordm9pZCBSZW5kZXJlckdMOjpz
dGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWQoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAm
c3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZp
bGxNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVl
cykKIHsKLSAgICByZXR1cm4gbmV3IEZlbmNlTlZHTChtRnVuY3Rpb25zKTsKKyAgICBjb25zdCBh
dXRvICZwYXRoT2JqcyA9IEdhdGhlclBhdGhzKHBhdGhzKTsKKworICAgIG1GdW5jdGlvbnMtPnN0
ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZE5WKAorICAgICAgICBzdGF0aWNfY2FzdDxH
THNpemVpPihwYXRoT2Jqcy5zaXplKCkpLCBHTF9VTlNJR05FRF9JTlQsICZwYXRoT2Jqc1swXSwg
MCwgZmlsbE1vZGUsIG1hc2ssCisgICAgICAgIGNvdmVyTW9kZSwgdHJhbnNmb3JtVHlwZSwgdHJh
bnNmb3JtVmFsdWVzKTsKKworICAgIEFTU0VSVChtRnVuY3Rpb25zLT5nZXRFcnJvcigpID09IEdM
X05PX0VSUk9SKTsKIH0KK3ZvaWQgUmVuZGVyZXJHTDo6c3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBh
dGhJbnN0YW5jZWQoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9y
PGdsOjpQYXRoICo+ICZwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFz
aywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKK3sKKyAg
ICBjb25zdCBhdXRvICZwYXRoT2JqcyA9IEdhdGhlclBhdGhzKHBhdGhzKTsKIAotRmVuY2VTeW5j
SW1wbCAqUmVuZGVyZXJHTDo6Y3JlYXRlRmVuY2VTeW5jKCkKLXsKLSAgICByZXR1cm4gbmV3IEZl
bmNlU3luY0dMKG1GdW5jdGlvbnMpOworICAgIG1GdW5jdGlvbnMtPnN0ZW5jaWxUaGVuQ292ZXJT
dHJva2VQYXRoSW5zdGFuY2VkTlYoCisgICAgICAgIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHBhdGhP
YmpzLnNpemUoKSksIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGhPYmpzWzBdLCAwLCByZWZlcmVuY2Us
IG1hc2ssCisgICAgICAgIGNvdmVyTW9kZSwgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVz
KTsKKworICAgIEFTU0VSVChtRnVuY3Rpb25zLT5nZXRFcnJvcigpID09IEdMX05PX0VSUk9SKTsK
IH0KIAotVHJhbnNmb3JtRmVlZGJhY2tJbXBsICpSZW5kZXJlckdMOjpjcmVhdGVUcmFuc2Zvcm1G
ZWVkYmFjaygpCitHTGVudW0gUmVuZGVyZXJHTDo6Z2V0UmVzZXRTdGF0dXMoKQogewotICAgIHJl
dHVybiBuZXcgVHJhbnNmb3JtRmVlZGJhY2tHTChtRnVuY3Rpb25zLCBtU3RhdGVNYW5hZ2VyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRSZW5kZXJlckNhcHMoKS5tYXhU
cmFuc2Zvcm1GZWVkYmFja1NlcGFyYXRlQ29tcG9uZW50cyk7CisgICAgcmV0dXJuIG1GdW5jdGlv
bnMtPmdldEdyYXBoaWNzUmVzZXRTdGF0dXMoKTsKIH0KIAotU2FtcGxlckltcGwgKlJlbmRlcmVy
R0w6OmNyZWF0ZVNhbXBsZXIoKQorQ29udGV4dEltcGwgKlJlbmRlcmVyR0w6OmNyZWF0ZUNvbnRl
eHQoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmc3RhdGUpCiB7Ci0gICAgcmV0dXJuIG5ldyBTYW1w
bGVyR0wobUZ1bmN0aW9ucywgbVN0YXRlTWFuYWdlcik7CisgICAgcmV0dXJuIG5ldyBDb250ZXh0
R0woc3RhdGUsIHRoaXMpOwogfQogCiB2b2lkIFJlbmRlcmVyR0w6Omluc2VydEV2ZW50TWFya2Vy
KEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpCkBAIC0zNDEsMjkgKzQ2Myw2IEBA
CiAgICAgbUZ1bmN0aW9ucy0+cG9wRGVidWdHcm91cCgpOwogfQogCi12b2lkIFJlbmRlcmVyR0w6
Om5vdGlmeURldmljZUxvc3QoKQotewotICAgIFVOSU1QTEVNRU5URUQoKTsKLX0KLQotYm9vbCBS
ZW5kZXJlckdMOjppc0RldmljZUxvc3QoKSBjb25zdAotewotICAgIFVOSU1QTEVNRU5URUQoKTsK
LSAgICByZXR1cm4gYm9vbCgpOwotfQotCi1ib29sIFJlbmRlcmVyR0w6OnRlc3REZXZpY2VMb3N0
KCkKLXsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGJvb2woKTsKLX0KLQotYm9v
bCBSZW5kZXJlckdMOjp0ZXN0RGV2aWNlUmVzZXR0YWJsZSgpCi17Ci0gICAgVU5JTVBMRU1FTlRF
RCgpOwotICAgIHJldHVybiBib29sKCk7Ci19Ci0KIHN0ZDo6c3RyaW5nIFJlbmRlcmVyR0w6Omdl
dFZlbmRvclN0cmluZygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG1GdW5jdGlvbnMtPmdldFN0cmluZyhHTF9WRU5ET1IpKSk7
CkBAIC00MDEsNyArNTAwLDcgQEAKIGNvbnN0IGdsOjpWZXJzaW9uICZSZW5kZXJlckdMOjpnZXRN
YXhTdXBwb3J0ZWRFU1ZlcnNpb24oKSBjb25zdAogewogICAgIC8vIEZvcmNlIGdlbmVyYXRpb24g
b2YgY2FwcwotICAgIGdldFJlbmRlcmVyQ2FwcygpOworICAgIGdldE5hdGl2ZUNhcHMoKTsKIAog
ICAgIHJldHVybiBtTWF4U3VwcG9ydGVkRVNWZXJzaW9uOwogfQpAQCAtNDEzLDExICs1MTIsNiBA
QAogICAgIG5hdGl2ZWdsX2dsOjpHZW5lcmF0ZUNhcHMobUZ1bmN0aW9ucywgb3V0Q2Fwcywgb3V0
VGV4dHVyZUNhcHMsIG91dEV4dGVuc2lvbnMsICZtTWF4U3VwcG9ydGVkRVNWZXJzaW9uKTsKIH0K
IAotdm9pZCBSZW5kZXJlckdMOjpzeW5jU3RhdGUoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwgY29u
c3QgZ2w6OlN0YXRlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykKLXsKLSAgICBtU3RhdGVNYW5hZ2Vy
LT5zeW5jU3RhdGUoc3RhdGUsIGRpcnR5Qml0cyk7Ci19Ci0KIEdMaW50IFJlbmRlcmVyR0w6Omdl
dEdQVURpc2pvaW50KCkKIHsKICAgICAvLyBUT0RPKGV3ZWxsKTogT24gR0xFUyBiYWNrZW5kcyB3
ZSBzaG91bGQgZmluZCBhIHdheSB0byByZWxpYWJseSBxdWVyeSBkaXNqb2ludCBldmVudHMKQEAg
LTQzMSw5ICs1MjUsMzcgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIFJlbmRlcmVy
R0w6Om9uTWFrZUN1cnJlbnQoY29uc3QgZ2w6OkRhdGEgJmRhdGEpCit2b2lkIFJlbmRlcmVyR0w6
OmVuc3VyZUNhcHNJbml0aWFsaXplZCgpIGNvbnN0CiB7Ci0gICAgLy8gUXVlcmllcyBuZWVkIHRv
IGJlIHBhdXNlZC9yZXN1bWVkIG9uIGNvbnRleHQgc3dpdGNoZXMKLSAgICBtU3RhdGVNYW5hZ2Vy
LT5vbk1ha2VDdXJyZW50KGRhdGEpOworICAgIGlmICghbUNhcHNJbml0aWFsaXplZCkKKyAgICB7
CisgICAgICAgIGdlbmVyYXRlQ2FwcygmbU5hdGl2ZUNhcHMsICZtTmF0aXZlVGV4dHVyZUNhcHMs
ICZtTmF0aXZlRXh0ZW5zaW9ucywgJm1OYXRpdmVMaW1pdGF0aW9ucyk7CisgICAgICAgIG1DYXBz
SW5pdGlhbGl6ZWQgPSB0cnVlOworICAgIH0KIH0KKworY29uc3QgZ2w6OkNhcHMgJlJlbmRlcmVy
R0w6OmdldE5hdGl2ZUNhcHMoKSBjb25zdAoreworICAgIGVuc3VyZUNhcHNJbml0aWFsaXplZCgp
OworICAgIHJldHVybiBtTmF0aXZlQ2FwczsKIH0KKworY29uc3QgZ2w6OlRleHR1cmVDYXBzTWFw
ICZSZW5kZXJlckdMOjpnZXROYXRpdmVUZXh0dXJlQ2FwcygpIGNvbnN0Cit7CisgICAgZW5zdXJl
Q2Fwc0luaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1OYXRpdmVUZXh0dXJlQ2FwczsKK30KKwor
Y29uc3QgZ2w6OkV4dGVuc2lvbnMgJlJlbmRlcmVyR0w6OmdldE5hdGl2ZUV4dGVuc2lvbnMoKSBj
b25zdAoreworICAgIGVuc3VyZUNhcHNJbml0aWFsaXplZCgpOworICAgIHJldHVybiBtTmF0aXZl
RXh0ZW5zaW9uczsKK30KKworY29uc3QgZ2w6OkxpbWl0YXRpb25zICZSZW5kZXJlckdMOjpnZXRO
YXRpdmVMaW1pdGF0aW9ucygpIGNvbnN0Cit7CisgICAgZW5zdXJlQ2Fwc0luaXRpYWxpemVkKCk7
CisgICAgcmV0dXJuIG1OYXRpdmVMaW1pdGF0aW9uczsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ4
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
UmVuZGVyZXJHTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJlckdMLmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJlckdM
LmgJKHdvcmtpbmcgY29weSkKQEAgLTksNDYgKzksNjcgQEAKICNpZm5kZWYgTElCQU5HTEVfUkVO
REVSRVJfR0xfUkVOREVSRVJHTF9IXwogI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9HTF9SRU5E
RVJFUkdMX0hfCiAKKyNpbmNsdWRlICJsaWJBTkdMRS9DYXBzLmgiCisjaW5jbHVkZSAibGliQU5H
TEUvRXJyb3IuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9WZXJzaW9uLmgiCi0jaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvUmVuZGVyZXIuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9n
bC9Xb3JrYXJvdW5kc0dMLmgiCiAKK25hbWVzcGFjZSBnbAoreworY2xhc3MgQ29udGV4dFN0YXRl
Oworc3RydWN0IEluZGV4UmFuZ2U7CitjbGFzcyBQYXRoOworfQorCituYW1lc3BhY2UgZWdsCit7
CitjbGFzcyBBdHRyaWJ1dGVNYXA7Cit9CisKK25hbWVzcGFjZSBzaAoreworc3RydWN0IEJsb2Nr
TWVtYmVySW5mbzsKK30KKwogbmFtZXNwYWNlIHJ4CiB7CiBjbGFzcyBCbGl0R0w7CitjbGFzcyBD
b250ZXh0SW1wbDsKIGNsYXNzIEZ1bmN0aW9uc0dMOwogY2xhc3MgU3RhdGVNYW5hZ2VyR0w7CiAK
LWNsYXNzIFJlbmRlcmVyR0wgOiBwdWJsaWMgUmVuZGVyZXIKK2NsYXNzIFJlbmRlcmVyR0wgOiBh
bmdsZTo6Tm9uQ29weWFibGUKIHsKICAgcHVibGljOgogICAgIFJlbmRlcmVyR0woY29uc3QgRnVu
Y3Rpb25zR0wgKmZ1bmN0aW9ucywgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYk1hcCk7
Ci0gICAgflJlbmRlcmVyR0woKSBvdmVycmlkZTsKKyAgICB+UmVuZGVyZXJHTCgpOwogCi0gICAg
Z2w6OkVycm9yIGZsdXNoKCkgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIGZpbmlzaCgpIG92ZXJy
aWRlOworICAgIENvbnRleHRJbXBsICpjcmVhdGVDb250ZXh0KGNvbnN0IGdsOjpDb250ZXh0U3Rh
dGUgJnN0YXRlKTsKIAotICAgIGdsOjpFcnJvciBkcmF3QXJyYXlzKGNvbnN0IGdsOjpEYXRhICZk
YXRhLCBHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpIG92ZXJyaWRlOwot
ICAgIGdsOjpFcnJvciBkcmF3QXJyYXlzSW5zdGFuY2VkKGNvbnN0IGdsOjpEYXRhICZkYXRhLAor
ICAgIGdsOjpFcnJvciBmbHVzaCgpOworICAgIGdsOjpFcnJvciBmaW5pc2goKTsKKworICAgIGds
OjpFcnJvciBkcmF3QXJyYXlzKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsIEdMZW51bSBt
b2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCk7CisgICAgZ2w6OkVycm9yIGRyYXdBcnJh
eXNJbnN0YW5jZWQoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBmaXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgaW5zdGFuY2VDb3VudCkgb3ZlcnJpZGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBpbnN0YW5jZUNvdW50KTsKIAotICAgIGdsOjpFcnJvciBkcmF3RWxlbWVu
dHMoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCisgICAgZ2w6OkVycm9yIGRyYXdFbGVtZW50cyhjb25z
dCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVy
cm9yIGRyYXdFbGVtZW50c0luc3RhbmNlZChjb25zdCBnbDo6RGF0YSAmZGF0YSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpJbmRleFJhbmdlICZpbmRleFJhbmdlKTsKKyAg
ICBnbDo6RXJyb3IgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUg
JmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4UmFu
Z2UpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBkcmF3UmFuZ2VFbGVtZW50cyhjb25zdCBnbDo6
RGF0YSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpJbmRleFJhbmdlICZpbmRleFJhbmdlKTsKKyAgICBnbDo6RXJyb3IgZHJhd1JhbmdlRWxlbWVu
dHMoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBzdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGVuZCwK
QEAgLTU1LDY5ICs3Niw5NyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5k
ZXhSYW5nZSkgb3ZlcnJpZGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpJbmRleFJhbmdlICZpbmRleFJhbmdlKTsKIAotICAgIC8vIFNoYWRlciBjcmVhdGlvbgot
ICAgIENvbXBpbGVySW1wbCAqY3JlYXRlQ29tcGlsZXIoKSBvdmVycmlkZTsKLSAgICBTaGFkZXJJ
bXBsICpjcmVhdGVTaGFkZXIoY29uc3QgZ2w6OlNoYWRlcjo6RGF0YSAmZGF0YSkgb3ZlcnJpZGU7
Ci0gICAgUHJvZ3JhbUltcGwgKmNyZWF0ZVByb2dyYW0oY29uc3QgZ2w6OlByb2dyYW06OkRhdGEg
JmRhdGEpIG92ZXJyaWRlOworICAgIC8vIENIUk9NSVVNX3BhdGhfcmVuZGVyaW5nIGltcGxlbWVu
dGF0aW9uCisgICAgdm9pZCBzdGVuY2lsRmlsbFBhdGgoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAm
c3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBhdGggKnBhdGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBtYXNrKTsKKyAgICB2b2lkIHN0ZW5jaWxTdHJva2VQYXRoKGNvbnN0
IGdsOjpDb250ZXh0U3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OlBhdGggKnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZl
cmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzayk7CisgICAgdm9p
ZCBjb3ZlckZpbGxQYXRoKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJnN0YXRlLCBjb25zdCBnbDo6
UGF0aCAqcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSk7CisgICAgdm9pZCBjb3ZlclN0cm9rZVBhdGgo
Y29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpQYXRoICpwYXRoLCBHTGVu
dW0gY292ZXJNb2RlKTsKKyAgICB2b2lkIHN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aChjb25zdCBn
bDo6Q29udGV4dFN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6UGF0aCAqcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZmlsbE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVy
TW9kZSk7CisgICAgdm9pZCBzdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aChjb25zdCBnbDo6Q29u
dGV4dFN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpQYXRoICpwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgcmVmZXJlbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292
ZXJNb2RlKTsKKyAgICB2b2lkIGNvdmVyRmlsbFBhdGhJbnN0YW5jZWQoY29uc3QgZ2w6OkNvbnRl
eHRTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7CisgICAgdm9pZCBjb3ZlclN0cm9rZVBhdGhJ
bnN0YW5jZWQoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFs
dWVzKTsKKyAgICB2b2lkIHN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZChjb25zdCBnbDo6Q29udGV4
dFN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7CisgICAgdm9pZCBzdGVuY2lsU3Ryb2tlUGF0aElu
c3RhbmNlZChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1
ZXMpOwogCi0gICAgLy8gRnJhbWVidWZmZXIgY3JlYXRpb24KLSAgICBGcmFtZWJ1ZmZlckltcGwg
KmNyZWF0ZUZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGF0YSAmZGF0YSkgb3Zl
cnJpZGU7CisgICAgdm9pZCBzdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWQoY29uc3Qg
Z2w6OkNvbnRleHRTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2Rl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNr
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFu
c2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7CisgICAgdm9pZCBzdGVuY2lsVGhlbkNvdmVy
U3Ryb2tlUGF0aEluc3RhbmNlZChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZzdGF0ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9y
PGdsOjpQYXRoICo+ICZwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNm
b3JtVmFsdWVzKTsKIAotICAgIC8vIFRleHR1cmUgY3JlYXRpb24KLSAgICBUZXh0dXJlSW1wbCAq
Y3JlYXRlVGV4dHVyZShHTGVudW0gdGFyZ2V0KSBvdmVycmlkZTsKKyAgICBHTGVudW0gZ2V0UmVz
ZXRTdGF0dXMoKTsKIAotICAgIC8vIFJlbmRlcmJ1ZmZlciBjcmVhdGlvbgotICAgIFJlbmRlcmJ1
ZmZlckltcGwgKmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIG92ZXJyaWRlOwotCi0gICAgLy8gQnVmZmVy
IGNyZWF0aW9uCi0gICAgQnVmZmVySW1wbCAqY3JlYXRlQnVmZmVyKCkgb3ZlcnJpZGU7Ci0KLSAg
ICAvLyBWZXJ0ZXggQXJyYXkgY3JlYXRpb24KLSAgICBWZXJ0ZXhBcnJheUltcGwgKmNyZWF0ZVZl
cnRleEFycmF5KGNvbnN0IGdsOjpWZXJ0ZXhBcnJheTo6RGF0YSAmZGF0YSkgb3ZlcnJpZGU7Ci0K
LSAgICAvLyBRdWVyeSBhbmQgRmVuY2UgY3JlYXRpb24KLSAgICBRdWVyeUltcGwgKmNyZWF0ZVF1
ZXJ5KEdMZW51bSB0eXBlKSBvdmVycmlkZTsKLSAgICBGZW5jZU5WSW1wbCAqY3JlYXRlRmVuY2VO
VigpIG92ZXJyaWRlOwotICAgIEZlbmNlU3luY0ltcGwgKmNyZWF0ZUZlbmNlU3luYygpIG92ZXJy
aWRlOwotCi0gICAgLy8gVHJhbnNmb3JtIEZlZWRiYWNrIGNyZWF0aW9uCi0gICAgVHJhbnNmb3Jt
RmVlZGJhY2tJbXBsICpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpIG92ZXJyaWRlOwotCi0gICAg
Ly8gU2FtcGxlciBvYmplY3QgY3JlYXRpb24KLSAgICBTYW1wbGVySW1wbCAqY3JlYXRlU2FtcGxl
cigpIG92ZXJyaWRlOwotCiAgICAgLy8gRVhUX2RlYnVnX21hcmtlcgotICAgIHZvaWQgaW5zZXJ0
RXZlbnRNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBwdXNoR3JvdXBNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1h
cmtlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwb3BHcm91cE1hcmtlcigpIG92ZXJyaWRlOworICAg
IHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtl
cik7CisgICAgdm9pZCBwdXNoR3JvdXBNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIg
Km1hcmtlcik7CisgICAgdm9pZCBwb3BHcm91cE1hcmtlcigpOwogCi0gICAgLy8gbG9zdCBkZXZp
Y2UKLSAgICB2b2lkIG5vdGlmeURldmljZUxvc3QoKSBvdmVycmlkZTsKLSAgICBib29sIGlzRGV2
aWNlTG9zdCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgdGVzdERldmljZUxvc3QoKSBvdmVy
cmlkZTsKLSAgICBib29sIHRlc3REZXZpY2VSZXNldHRhYmxlKCkgb3ZlcnJpZGU7CisgICAgc3Rk
OjpzdHJpbmcgZ2V0VmVuZG9yU3RyaW5nKCkgY29uc3Q7CisgICAgc3RkOjpzdHJpbmcgZ2V0UmVu
ZGVyZXJEZXNjcmlwdGlvbigpIGNvbnN0OwogCi0gICAgc3RkOjpzdHJpbmcgZ2V0VmVuZG9yU3Ry
aW5nKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgc3RkOjpzdHJpbmcgZ2V0UmVuZGVyZXJEZXNjcmlw
dGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIEdMaW50IGdldEdQVURpc2pvaW50KCk7CisgICAg
R0xpbnQ2NCBnZXRUaW1lc3RhbXAoKTsKIAotICAgIHZvaWQgc3luY1N0YXRlKGNvbnN0IGdsOjpT
dGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpTdGF0ZTo6RGlydHlCaXRzICZkaXJ0eUJpdHMpIG92ZXJy
aWRlOwotCi0gICAgR0xpbnQgZ2V0R1BVRGlzam9pbnQoKSBvdmVycmlkZTsKLSAgICBHTGludDY0
IGdldFRpbWVzdGFtcCgpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBvbk1ha2VDdXJyZW50KGNvbnN0
IGdsOjpEYXRhICZkYXRhKSBvdmVycmlkZTsKLQogICAgIGNvbnN0IGdsOjpWZXJzaW9uICZnZXRN
YXhTdXBwb3J0ZWRFU1ZlcnNpb24oKSBjb25zdDsKICAgICBjb25zdCBGdW5jdGlvbnNHTCAqZ2V0
RnVuY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbUZ1bmN0aW9uczsgfQogICAgIFN0YXRlTWFuYWdl
ckdMICpnZXRTdGF0ZU1hbmFnZXIoKSBjb25zdCB7IHJldHVybiBtU3RhdGVNYW5hZ2VyOyB9CiAg
ICAgY29uc3QgV29ya2Fyb3VuZHNHTCAmZ2V0V29ya2Fyb3VuZHMoKSBjb25zdCB7IHJldHVybiBt
V29ya2Fyb3VuZHM7IH0KKyAgICBCbGl0R0wgKmdldEJsaXR0ZXIoKSBjb25zdCB7IHJldHVybiBt
QmxpdHRlcjsgfQogCisgICAgY29uc3QgZ2w6OkNhcHMgJmdldE5hdGl2ZUNhcHMoKSBjb25zdDsK
KyAgICBjb25zdCBnbDo6VGV4dHVyZUNhcHNNYXAgJmdldE5hdGl2ZVRleHR1cmVDYXBzKCkgY29u
c3Q7CisgICAgY29uc3QgZ2w6OkV4dGVuc2lvbnMgJmdldE5hdGl2ZUV4dGVuc2lvbnMoKSBjb25z
dDsKKyAgICBjb25zdCBnbDo6TGltaXRhdGlvbnMgJmdldE5hdGl2ZUxpbWl0YXRpb25zKCkgY29u
c3Q7CisKICAgcHJpdmF0ZToKLSAgICB2b2lkIGdlbmVyYXRlQ2FwcyhnbDo6Q2FwcyAqb3V0Q2Fw
cywgZ2w6OlRleHR1cmVDYXBzTWFwKiBvdXRUZXh0dXJlQ2FwcywKKyAgICB2b2lkIGVuc3VyZUNh
cHNJbml0aWFsaXplZCgpIGNvbnN0OworICAgIHZvaWQgZ2VuZXJhdGVDYXBzKGdsOjpDYXBzICpv
dXRDYXBzLAorICAgICAgICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlQ2Fwc01hcCAqb3V0VGV4
dHVyZUNhcHMsCiAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkV4dGVuc2lvbnMgKm91dEV4dGVu
c2lvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgZ2w6OkxpbWl0YXRpb25zICpvdXRMaW1pdGF0
aW9ucykgY29uc3Qgb3ZlcnJpZGU7CisgICAgICAgICAgICAgICAgICAgICAgZ2w6OkxpbWl0YXRp
b25zICpvdXRMaW1pdGF0aW9ucykgY29uc3Q7CiAKICAgICBtdXRhYmxlIGdsOjpWZXJzaW9uIG1N
YXhTdXBwb3J0ZWRFU1ZlcnNpb247CiAKQEAgLTEzMiw4ICsxODEsMTQgQEAKIAogICAgIC8vIEZv
ciBwZXJmb3JtYW5jZSBkZWJ1Z2dpbmcKICAgICBib29sIG1Ta2lwRHJhd0NhbGxzOworCisgICAg
bXV0YWJsZSBib29sIG1DYXBzSW5pdGlhbGl6ZWQ7CisgICAgbXV0YWJsZSBnbDo6Q2FwcyBtTmF0
aXZlQ2FwczsKKyAgICBtdXRhYmxlIGdsOjpUZXh0dXJlQ2Fwc01hcCBtTmF0aXZlVGV4dHVyZUNh
cHM7CisgICAgbXV0YWJsZSBnbDo6RXh0ZW5zaW9ucyBtTmF0aXZlRXh0ZW5zaW9uczsKKyAgICBt
dXRhYmxlIGdsOjpMaW1pdGF0aW9ucyBtTmF0aXZlTGltaXRhdGlvbnM7CiB9OwogCi19Cit9ICAv
LyBuYW1lc3BhY2UgcngKIAogI2VuZGlmIC8vIExJQkFOR0xFX1JFTkRFUkVSX0dMX1JFTkRFUkVS
R0xfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC9TaGFkZXJHTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1NoYWRlckdMLmNwcAkocmV2aXNpb24gMjA4MDIxKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1NoYWRl
ckdMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTksNyArMTksNyBAQAogbmFtZXNwYWNlIHJ4CiB7
CiAKLVNoYWRlckdMOjpTaGFkZXJHTChjb25zdCBnbDo6U2hhZGVyOjpEYXRhICZkYXRhLAorU2hh
ZGVyR0w6OlNoYWRlckdMKGNvbnN0IGdsOjpTaGFkZXJTdGF0ZSAmZGF0YSwKICAgICAgICAgICAg
ICAgICAgICBjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLAogICAgICAgICAgICAgICAgICAg
IGNvbnN0IFdvcmthcm91bmRzR0wgJndvcmthcm91bmRzKQogICAgIDogU2hhZGVySW1wbChkYXRh
KSwgbUZ1bmN0aW9ucyhmdW5jdGlvbnMpLCBtV29ya2Fyb3VuZHMod29ya2Fyb3VuZHMpLCBtU2hh
ZGVySUQoMCkKQEAgLTM2LDggKzM2LDggQEAKICAgICB9CiB9CiAKLWludCBTaGFkZXJHTDo6cHJl
cGFyZVNvdXJjZUFuZFJldHVybk9wdGlvbnMoc3RkOjpzdHJpbmdzdHJlYW0gKnNvdXJjZVN0cmVh
bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJp
bmcgKiAvKnNvdXJjZVBhdGgqLykKK1NoQ29tcGlsZU9wdGlvbnMgU2hhZGVyR0w6OnByZXBhcmVT
b3VyY2VBbmRSZXR1cm5PcHRpb25zKHN0ZDo6c3RyaW5nc3RyZWFtICpzb3VyY2VTdHJlYW0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OnN0cmluZyAqIC8qc291cmNlUGF0aCovKQogewogICAgIC8vIFJlc2V0IHRoZSBwcmV2aW91
cyBzdGF0ZQogICAgIGlmIChtU2hhZGVySUQgIT0gMCkKQEAgLTQ4LDcgKzQ4LDcgQEAKIAogICAg
ICpzb3VyY2VTdHJlYW0gPDwgbURhdGEuZ2V0U291cmNlKCk7CiAKLSAgICBpbnQgb3B0aW9ucyA9
IFNIX0lOSVRfR0xfUE9TSVRJT047CisgICAgU2hDb21waWxlT3B0aW9ucyBvcHRpb25zID0gU0hf
SU5JVF9HTF9QT1NJVElPTjsKIAogICAgIGlmIChtV29ya2Fyb3VuZHMuZG9XaGlsZUdMU0xDYXVz
ZXNHUFVIYW5nKQogICAgIHsKQEAgLTU1LDYgKzU1LDI2IEBACiAgICAgICAgIG9wdGlvbnMgfD0g
U0hfUkVXUklURV9ET19XSElMRV9MT09QUzsKICAgICB9CiAKKyAgICBpZiAobVdvcmthcm91bmRz
LmVtdWxhdGVBYnNJbnRGdW5jdGlvbikKKyAgICB7CisgICAgICAgIG9wdGlvbnMgfD0gU0hfRU1V
TEFURV9BQlNfSU5UX0ZVTkNUSU9OOworICAgIH0KKworICAgIGlmIChtV29ya2Fyb3VuZHMuYWRk
QW5kVHJ1ZVRvTG9vcENvbmRpdGlvbikKKyAgICB7CisgICAgICAgIG9wdGlvbnMgfD0gU0hfQURE
X0FORF9UUlVFX1RPX0xPT1BfQ09ORElUSU9OOworICAgIH0KKworICAgIGlmIChtV29ya2Fyb3Vu
ZHMuZW11bGF0ZUlzbmFuRmxvYXQpCisgICAgeworICAgICAgICBvcHRpb25zIHw9IFNIX0VNVUxB
VEVfSVNOQU5fRkxPQVRfRlVOQ1RJT047CisgICAgfQorCisgICAgaWYgKG1Xb3JrYXJvdW5kcy51
c2VVbnVzZWRCbG9ja3NXaXRoU3RhbmRhcmRPclNoYXJlZExheW91dCkKKyAgICB7CisgICAgICAg
IG9wdGlvbnMgfD0gU0hfVVNFX1VOVVNFRF9TVEFOREFSRF9TSEFSRURfQkxPQ0tTOworICAgIH0K
KwogICAgIHJldHVybiBvcHRpb25zOwogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU2hhZGVyR0wuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU2hhZGVyR0wuaAko
cmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL1NoYWRlckdMLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5LDE0ICsxOSwxNCBA
QAogY2xhc3MgU2hhZGVyR0wgOiBwdWJsaWMgU2hhZGVySW1wbAogewogICBwdWJsaWM6Ci0gICAg
U2hhZGVyR0woY29uc3QgZ2w6OlNoYWRlcjo6RGF0YSAmZGF0YSwKKyAgICBTaGFkZXJHTChjb25z
dCBnbDo6U2hhZGVyU3RhdGUgJmRhdGEsCiAgICAgICAgICAgICAgY29uc3QgRnVuY3Rpb25zR0wg
KmZ1bmN0aW9ucywKICAgICAgICAgICAgICBjb25zdCBXb3JrYXJvdW5kc0dMICZ3b3JrYXJvdW5k
cyk7CiAgICAgflNoYWRlckdMKCkgb3ZlcnJpZGU7CiAKICAgICAvLyBTaGFkZXJJbXBsIGltcGxl
bWVudGF0aW9uCi0gICAgaW50IHByZXBhcmVTb3VyY2VBbmRSZXR1cm5PcHRpb25zKHN0ZDo6c3Ry
aW5nc3RyZWFtICpzb3VyY2VTdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6c3RyaW5nICpzb3VyY2VQYXRoKSBvdmVycmlkZTsKKyAgICBTaENvbXBpbGVP
cHRpb25zIHByZXBhcmVTb3VyY2VBbmRSZXR1cm5PcHRpb25zKHN0ZDo6c3RyaW5nc3RyZWFtICpz
b3VyY2VTdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6OnN0cmluZyAqc291cmNlUGF0aCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBwb3N0
VHJhbnNsYXRlQ29tcGlsZShnbDo6Q29tcGlsZXIgKmNvbXBpbGVyLCBzdGQ6OnN0cmluZyAqaW5m
b0xvZykgb3ZlcnJpZGU7CiAgICAgc3RkOjpzdHJpbmcgZ2V0RGVidWdJbmZvKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmNwcAkocmV2
aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOCw4ICs4LDEz
IEBACiAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5oIgog
CisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCiAjaW5jbHVkZSAiY29t
bW9uL0JpdFNldEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvRGF0YS5oIgorI2luY2x1
ZGUgImNvbW1vbi9tYXRodXRpbC5oIgorI2luY2x1ZGUgImNvbW1vbi9tYXRyaXhfdXRpbHMuaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9Db250ZXh0U3RhdGUuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9G
cmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1RyYW5zZm9ybUZlZWRiYWNrLmgiCiAj
aW5jbHVkZSAibGliQU5HTEUvVmVydGV4QXJyYXkuaCIKQEAgLTI4LDcgKzMzLDggQEAKIHsKIAog
c3RhdGljIGNvbnN0IEdMZW51bSBRdWVyeVR5cGVzW10gPSB7R0xfQU5ZX1NBTVBMRVNfUEFTU0VE
LCBHTF9BTllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRF
TiwgR0xfVElNRV9FTEFQU0VEfTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1RSQU5TRk9STV9GRUVEQkFDS19QUklNSVRJVkVTX1dSSVRURU4sIEdMX1RJTUVfRUxBUFNF
RCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTU1BTkRTX0NPTVBM
RVRFRF9DSFJPTUlVTX07CiAKIFN0YXRlTWFuYWdlckdMOjpJbmRleGVkQnVmZmVyQmluZGluZzo6
SW5kZXhlZEJ1ZmZlckJpbmRpbmcoKSA6IG9mZnNldCgwKSwgc2l6ZSgwKSwgYnVmZmVyKDApCiB7
CkBAIC04Nyw2ICs5Myw3IEBACiAgICAgICBtRGVwdGhNYXNrKHRydWUpLAogICAgICAgbVN0ZW5j
aWxUZXN0RW5hYmxlZChmYWxzZSksCiAgICAgICBtU3RlbmNpbEZyb250RnVuYyhHTF9BTFdBWVMp
LAorICAgICAgbVN0ZW5jaWxGcm9udFJlZigwKSwKICAgICAgIG1TdGVuY2lsRnJvbnRWYWx1ZU1h
c2soc3RhdGljX2Nhc3Q8R0x1aW50PigtMSkpLAogICAgICAgbVN0ZW5jaWxGcm9udFN0ZW5jaWxG
YWlsT3AoR0xfS0VFUCksCiAgICAgICBtU3RlbmNpbEZyb250U3RlbmNpbFBhc3NEZXB0aEZhaWxP
cChHTF9LRUVQKSwKQEAgLTkzLDYgKzEwMCw3IEBACiAgICAgICBtU3RlbmNpbEZyb250U3RlbmNp
bFBhc3NEZXB0aFBhc3NPcChHTF9LRUVQKSwKICAgICAgIG1TdGVuY2lsRnJvbnRXcml0ZW1hc2so
c3RhdGljX2Nhc3Q8R0x1aW50PigtMSkpLAogICAgICAgbVN0ZW5jaWxCYWNrRnVuYyhHTF9BTFdB
WVMpLAorICAgICAgbVN0ZW5jaWxCYWNrUmVmKDApLAogICAgICAgbVN0ZW5jaWxCYWNrVmFsdWVN
YXNrKHN0YXRpY19jYXN0PEdMdWludD4oLTEpKSwKICAgICAgIG1TdGVuY2lsQmFja1N0ZW5jaWxG
YWlsT3AoR0xfS0VFUCksCiAgICAgICBtU3RlbmNpbEJhY2tTdGVuY2lsUGFzc0RlcHRoRmFpbE9w
KEdMX0tFRVApLApAQCAtMTExLDcgKzExOSwxNCBAQAogICAgICAgbUNsZWFyRGVwdGgoMS4wZiks
CiAgICAgICBtQ2xlYXJTdGVuY2lsKDApLAogICAgICAgbUZyYW1lYnVmZmVyU1JHQkVuYWJsZWQo
ZmFsc2UpLAorICAgICAgbURpdGhlckVuYWJsZWQodHJ1ZSksCiAgICAgICBtVGV4dHVyZUN1YmVt
YXBTZWFtbGVzc0VuYWJsZWQoZmFsc2UpLAorICAgICAgbU11bHRpc2FtcGxpbmdFbmFibGVkKHRy
dWUpLAorICAgICAgbVNhbXBsZUFscGhhVG9PbmVFbmFibGVkKGZhbHNlKSwKKyAgICAgIG1Db3Zl
cmFnZU1vZHVsYXRpb24oR0xfTk9ORSksCisgICAgICBtUGF0aFN0ZW5jaWxGdW5jKEdMX0FMV0FZ
UyksCisgICAgICBtUGF0aFN0ZW5jaWxSZWYoMCksCisgICAgICBtUGF0aFN0ZW5jaWxNYXNrKHN0
ZDo6bnVtZXJpY19saW1pdHM8R0x1aW50Pjo6bWF4KCkpLAogICAgICAgbUxvY2FsRGlydHlCaXRz
KCkKIHsKICAgICBBU1NFUlQobUZ1bmN0aW9ucyk7CkBAIC0xNDEsNiArMTU2LDkgQEAKICAgICAg
ICAgICAgIG1GdW5jdGlvbnMtPmVuYWJsZShHTF9QT0lOVF9TUFJJVEUpOwogICAgICAgICB9CiAg
ICAgfQorCisgICAgYW5nbGU6Ok1hdHJpeDxHTGZsb2F0Pjo6c2V0VG9JZGVudGl0eShtUGF0aE1h
dHJpeFByb2opOworICAgIGFuZ2xlOjpNYXRyaXg8R0xmbG9hdD46OnNldFRvSWRlbnRpdHkobVBh
dGhNYXRyaXhNVik7CiB9CiAKIHZvaWQgU3RhdGVNYW5hZ2VyR0w6OmRlbGV0ZVByb2dyYW0oR0x1
aW50IHByb2dyYW0pCkBAIC00MjgsNyArNDQ2LDcgQEAKICAgICAgICAgbVVucGFja1NraXBSb3dz
ID0gc2tpcFJvd3M7CiAgICAgICAgIG1GdW5jdGlvbnMtPnBpeGVsU3RvcmVpKEdMX1VOUEFDS19T
S0lQX1JPV1MsIG1VbnBhY2tTa2lwUm93cyk7CiAKLSAgICAgICAgLy8gVE9ETzogc2V0IGRpcnR5
IGJpdCBvbmNlIG9uZSBleGlzdHMKKyAgICAgICAgbUxvY2FsRGlydHlCaXRzLnNldChnbDo6U3Rh
dGU6OkRJUlRZX0JJVF9VTlBBQ0tfU0tJUF9ST1dTKTsKICAgICB9CiAKICAgICBpZiAobVVucGFj
a1NraXBQaXhlbHMgIT0gc2tpcFBpeGVscykKQEAgLTQzNiw3ICs0NTQsNyBAQAogICAgICAgICBt
VW5wYWNrU2tpcFBpeGVscyA9IHNraXBQaXhlbHM7CiAgICAgICAgIG1GdW5jdGlvbnMtPnBpeGVs
U3RvcmVpKEdMX1VOUEFDS19TS0lQX1BJWEVMUywgbVVucGFja1NraXBQaXhlbHMpOwogCi0gICAg
ICAgIC8vIFRPRE86IHNldCBkaXJ0eSBiaXQgb25jZSBvbmUgZXhpc3RzCisgICAgICAgIG1Mb2Nh
bERpcnR5Qml0cy5zZXQoZ2w6OlN0YXRlOjpESVJUWV9CSVRfVU5QQUNLX1NLSVBfUElYRUxTKTsK
ICAgICB9CiAKICAgICBpZiAobVVucGFja0ltYWdlSGVpZ2h0ICE9IGltYWdlSGVpZ2h0KQpAQCAt
NDQ0LDcgKzQ2Miw3IEBACiAgICAgICAgIG1VbnBhY2tJbWFnZUhlaWdodCA9IGltYWdlSGVpZ2h0
OwogICAgICAgICBtRnVuY3Rpb25zLT5waXhlbFN0b3JlaShHTF9VTlBBQ0tfSU1BR0VfSEVJR0hU
LCBtVW5wYWNrSW1hZ2VIZWlnaHQpOwogCi0gICAgICAgIC8vIFRPRE86IHNldCBkaXJ0eSBiaXQg
b25jZSBvbmUgZXhpc3RzCisgICAgICAgIG1Mb2NhbERpcnR5Qml0cy5zZXQoZ2w6OlN0YXRlOjpE
SVJUWV9CSVRfVU5QQUNLX0lNQUdFX0hFSUdIVCk7CiAgICAgfQogCiAgICAgaWYgKG1VbnBhY2tT
a2lwSW1hZ2VzICE9IHNraXBJbWFnZXMpCkBAIC00NTIsNyArNDcwLDcgQEAKICAgICAgICAgbVVu
cGFja1NraXBJbWFnZXMgPSBza2lwSW1hZ2VzOwogICAgICAgICBtRnVuY3Rpb25zLT5waXhlbFN0
b3JlaShHTF9VTlBBQ0tfU0tJUF9JTUFHRVMsIG1VbnBhY2tTa2lwSW1hZ2VzKTsKIAotICAgICAg
ICAvLyBUT0RPOiBzZXQgZGlydHkgYml0IG9uY2Ugb25lIGV4aXN0cworICAgICAgICBtTG9jYWxE
aXJ0eUJpdHMuc2V0KGdsOjpTdGF0ZTo6RElSVFlfQklUX1VOUEFDS19TS0lQX0lNQUdFUyk7CiAg
ICAgfQogCiAgICAgYmluZEJ1ZmZlcihHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCB1bnBhY2tCdWZm
ZXIpOwpAQCAtNTkyLDEyICs2MTAsMTIgQEAKICAgICBtQ3VycmVudFF1ZXJpZXMuZXJhc2UocXVl
cnkpOwogfQogCi1nbDo6RXJyb3IgU3RhdGVNYW5hZ2VyR0w6OnNldERyYXdBcnJheXNTdGF0ZShj
b25zdCBnbDo6RGF0YSAmZGF0YSwKK2dsOjpFcnJvciBTdGF0ZU1hbmFnZXJHTDo6c2V0RHJhd0Fy
cmF5c1N0YXRlKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBmaXJzdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlQ291bnQp
CiB7Ci0gICAgY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSA9ICpkYXRhLnN0YXRlOworICAgIGNvbnN0
IGdsOjpTdGF0ZSAmc3RhdGUgPSBkYXRhLmdldFN0YXRlKCk7CiAKICAgICBjb25zdCBnbDo6UHJv
Z3JhbSAqcHJvZ3JhbSA9IHN0YXRlLmdldFByb2dyYW0oKTsKIApAQCAtNjE2LDcgKzYzNCw3IEBA
CiAgICAgcmV0dXJuIHNldEdlbmVyaWNEcmF3U3RhdGUoZGF0YSk7CiB9CiAKLWdsOjpFcnJvciBT
dGF0ZU1hbmFnZXJHTDo6c2V0RHJhd0VsZW1lbnRzU3RhdGUoY29uc3QgZ2w6OkRhdGEgJmRhdGEs
CitnbDo6RXJyb3IgU3RhdGVNYW5hZ2VyR0w6OnNldERyYXdFbGVtZW50c1N0YXRlKGNvbnN0IGds
OjpDb250ZXh0U3RhdGUgJmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCkBAIC02MjMsNyAr
NjQxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBpbnN0YW5jZUNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKipvdXRJbmRpY2VzKQogewotICAgIGNvbnN0IGds
OjpTdGF0ZSAmc3RhdGUgPSAqZGF0YS5zdGF0ZTsKKyAgICBjb25zdCBnbDo6U3RhdGUgJnN0YXRl
ID0gZGF0YS5nZXRTdGF0ZSgpOwogCiAgICAgY29uc3QgZ2w6OlByb2dyYW0gKnByb2dyYW0gPSBz
dGF0ZS5nZXRQcm9ncmFtKCk7CiAKQEAgLTY0MywxOCArNjYxLDI2IEBACiAgICAgcmV0dXJuIHNl
dEdlbmVyaWNEcmF3U3RhdGUoZGF0YSk7CiB9CiAKLWdsOjpFcnJvciBTdGF0ZU1hbmFnZXJHTDo6
b25NYWtlQ3VycmVudChjb25zdCBnbDo6RGF0YSAmZGF0YSkKK2dsOjpFcnJvciBTdGF0ZU1hbmFn
ZXJHTDo6cGF1c2VUcmFuc2Zvcm1GZWVkYmFjayhjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRh
KQogewotICAgIGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUgPSAqZGF0YS5zdGF0ZTsKLQotICAgIC8v
IElmIHRoZSBjb250ZXh0IGhhcyBjaGFuZ2VkLCBwYXVzZSB0aGUgcHJldmlvdXMgY29udGV4dCdz
IHRyYW5zZm9ybSBmZWVkYmFjayBhbmQgcXVlcmllcwotICAgIGlmIChkYXRhLmNvbnRleHQgIT0g
bVByZXZEcmF3Q29udGV4dCkKKyAgICAvLyBJZiB0aGUgY29udGV4dCBpcyBnb2luZyB0byBiZSBj
aGFuZ2VkLCBwYXVzZSB0aGUgcHJldmlvdXMgY29udGV4dCdzIHRyYW5zZm9ybSBmZWVkYmFjawor
ICAgIGlmIChkYXRhLmdldENvbnRleHQoKSAhPSBtUHJldkRyYXdDb250ZXh0KQogICAgIHsKICAg
ICAgICAgaWYgKG1QcmV2RHJhd1RyYW5zZm9ybUZlZWRiYWNrICE9IG51bGxwdHIpCiAgICAgICAg
IHsKICAgICAgICAgICAgIG1QcmV2RHJhd1RyYW5zZm9ybUZlZWRiYWNrLT5zeW5jUGF1c2VkU3Rh
dGUodHJ1ZSk7CiAgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19F
UlJPUik7Cit9CiAKK2dsOjpFcnJvciBTdGF0ZU1hbmFnZXJHTDo6b25NYWtlQ3VycmVudChjb25z
dCBnbDo6Q29udGV4dFN0YXRlICZkYXRhKQoreworICAgIGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUg
PSBkYXRhLmdldFN0YXRlKCk7CisKKyAgICAvLyBJZiB0aGUgY29udGV4dCBoYXMgY2hhbmdlZCwg
cGF1c2UgdGhlIHByZXZpb3VzIGNvbnRleHQncyBxdWVyaWVzCisgICAgaWYgKGRhdGEuZ2V0Q29u
dGV4dCgpICE9IG1QcmV2RHJhd0NvbnRleHQpCisgICAgewogICAgICAgICBmb3IgKFF1ZXJ5R0wg
KnByZXZRdWVyeSA6IG1DdXJyZW50UXVlcmllcykKICAgICAgICAgewogICAgICAgICAgICAgcHJl
dlF1ZXJ5LT5wYXVzZSgpOwpAQCAtNjYyLDcgKzY4OCw3IEBACiAgICAgfQogICAgIG1DdXJyZW50
UXVlcmllcy5jbGVhcigpOwogICAgIG1QcmV2RHJhd1RyYW5zZm9ybUZlZWRiYWNrID0gbnVsbHB0
cjsKLSAgICBtUHJldkRyYXdDb250ZXh0ID0gZGF0YS5jb250ZXh0OworICAgIG1QcmV2RHJhd0Nv
bnRleHQgICAgICAgICAgID0gZGF0YS5nZXRDb250ZXh0KCk7CiAKICAgICAvLyBTZXQgdGhlIGN1
cnJlbnQgcXVlcnkgc3RhdGUKICAgICBmb3IgKEdMZW51bSBxdWVyeVR5cGUgOiBRdWVyeVR5cGVz
KQpAQCAtNjgwLDkgKzcwNiw5IEBACiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7
CiB9CiAKLWdsOjpFcnJvciBTdGF0ZU1hbmFnZXJHTDo6c2V0R2VuZXJpY0RyYXdTdGF0ZShjb25z
dCBnbDo6RGF0YSAmZGF0YSkKK2dsOjpFcnJvciBTdGF0ZU1hbmFnZXJHTDo6c2V0R2VuZXJpY0Ry
YXdTdGF0ZShjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhKQogewotICAgIGNvbnN0IGdsOjpT
dGF0ZSAmc3RhdGUgPSAqZGF0YS5zdGF0ZTsKKyAgICBjb25zdCBnbDo6U3RhdGUgJnN0YXRlID0g
ZGF0YS5nZXRTdGF0ZSgpOwogCiAgICAgLy8gU3luYyB0aGUgY3VycmVudCBwcm9ncmFtIHN0YXRl
CiAgICAgY29uc3QgZ2w6OlByb2dyYW0gKnByb2dyYW0gPSBzdGF0ZS5nZXRQcm9ncmFtKCk7CkBA
IC02OTMsOCArNzE5LDcgQEAKICAgICAgICAgIHVuaWZvcm1CbG9ja0luZGV4KyspCiAgICAgewog
ICAgICAgICBHTHVpbnQgYmluZGluZyA9IHByb2dyYW0tPmdldFVuaWZvcm1CbG9ja0JpbmRpbmco
c3RhdGljX2Nhc3Q8R0x1aW50Pih1bmlmb3JtQmxvY2tJbmRleCkpOwotICAgICAgICBjb25zdCBP
ZmZzZXRCaW5kaW5nUG9pbnRlcjxnbDo6QnVmZmVyPiAmdW5pZm9ybUJ1ZmZlciA9Ci0gICAgICAg
ICAgICBkYXRhLnN0YXRlLT5nZXRJbmRleGVkVW5pZm9ybUJ1ZmZlcihiaW5kaW5nKTsKKyAgICAg
ICAgY29uc3QgYXV0byAmdW5pZm9ybUJ1ZmZlciA9IHN0YXRlLmdldEluZGV4ZWRVbmlmb3JtQnVm
ZmVyKGJpbmRpbmcpOwogCiAgICAgICAgIGlmICh1bmlmb3JtQnVmZmVyLmdldCgpICE9IG51bGxw
dHIpCiAgICAgICAgIHsKQEAgLTcxOCwxOCArNzQzLDIxIEBACiAgICAgICAgIEdMZW51bSB0ZXh0
dXJlVHlwZSA9IHNhbXBsZXJVbmlmb3JtLnRleHR1cmVUeXBlOwogICAgICAgICBmb3IgKEdMdWlu
dCB0ZXh0dXJlVW5pdEluZGV4IDogc2FtcGxlclVuaWZvcm0uYm91bmRUZXh0dXJlVW5pdHMpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IGdsOjpUZXh0dXJlICp0ZXh0dXJlID0gc3RhdGUu
Z2V0U2FtcGxlclRleHR1cmUodGV4dHVyZVVuaXRJbmRleCwgdGV4dHVyZVR5cGUpOworICAgICAg
ICAgICAgZ2w6OlRleHR1cmUgKnRleHR1cmUgPSBzdGF0ZS5nZXRTYW1wbGVyVGV4dHVyZSh0ZXh0
dXJlVW5pdEluZGV4LCB0ZXh0dXJlVHlwZSk7CiAgICAgICAgICAgICBpZiAodGV4dHVyZSAhPSBu
dWxscHRyKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGNvbnN0IFRleHR1cmVHTCAq
dGV4dHVyZUdMID0gR2V0SW1wbEFzPFRleHR1cmVHTD4odGV4dHVyZSk7CiAKLSAgICAgICAgICAg
ICAgICBpZiAobVRleHR1cmVzW3RleHR1cmVUeXBlXVt0ZXh0dXJlVW5pdEluZGV4XSAhPSB0ZXh0
dXJlR0wtPmdldFRleHR1cmVJRCgpKQorICAgICAgICAgICAgICAgIGlmIChtVGV4dHVyZXNbdGV4
dHVyZVR5cGVdW3RleHR1cmVVbml0SW5kZXhdICE9IHRleHR1cmVHTC0+Z2V0VGV4dHVyZUlEKCkg
fHwKKyAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+aGFzQW55RGlydHlCaXQoKSB8fCB0ZXh0
dXJlR0wtPmhhc0FueURpcnR5Qml0KCkpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgICAgICBhY3RpdmVUZXh0dXJlKHRleHR1cmVVbml0SW5kZXgpOwogICAgICAgICAgICAgICAg
ICAgICBiaW5kVGV4dHVyZSh0ZXh0dXJlVHlwZSwgdGV4dHVyZUdMLT5nZXRUZXh0dXJlSUQoKSk7
CisKKyAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogQ2FsbCB0aGlzIGZyb20gdGhlIGdsOjog
bGF5ZXIgb25jZSBvdGhlciBiYWNrZW5kcyB1c2UgZGlydHkgYml0cyBmb3IKKyAgICAgICAgICAg
ICAgICAgICAgLy8gdGV4dHVyZSBzdGF0ZS4KKyAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+
c3luY0ltcGxTdGF0ZSgpOwogICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHRl
eHR1cmVHTC0+c3luY1N0YXRlKHRleHR1cmVVbml0SW5kZXgsIHRleHR1cmUtPmdldFRleHR1cmVT
dGF0ZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsK
QEAgLTc2MCw3ICs3ODgsNyBAQAogICAgIGZyYW1lYnVmZmVyR0wtPnN5bmNEcmF3U3RhdGUoKTsK
IAogICAgIC8vIFNlYW1sZXNzIGN1YmVtYXBzIGFyZSByZXF1aXJlZCBmb3IgRVMzIGFuZCBoaWdo
ZXIgY29udGV4dHMuCi0gICAgc2V0VGV4dHVyZUN1YmVtYXBTZWFtbGVzc0VuYWJsZWQoZGF0YS5j
bGllbnRWZXJzaW9uID49IDMpOworICAgIHNldFRleHR1cmVDdWJlbWFwU2VhbWxlc3NFbmFibGVk
KGRhdGEuZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPj0gMyk7CiAKICAgICAvLyBTZXQgdGhlIGN1
cnJlbnQgdHJhbnNmb3JtIGZlZWRiYWNrIHN0YXRlCiAgICAgZ2w6OlRyYW5zZm9ybUZlZWRiYWNr
ICp0cmFuc2Zvcm1GZWVkYmFjayA9IHN0YXRlLmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygp
OwpAQCAtNzk2LDExICs4MjQsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbVZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZXNbaW5kZXhdLkZsb2F0VmFsdWVz
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgR0xfSU5UOgotICAg
ICAgICAgICAgICAgIG1GdW5jdGlvbnMtPnZlcnRleEF0dHJpYjRpdihzdGF0aWNfY2FzdDxHTHVp
bnQ+KGluZGV4KSwKKyAgICAgICAgICAgICAgICBtRnVuY3Rpb25zLT52ZXJ0ZXhBdHRyaWJJNGl2
KHN0YXRpY19jYXN0PEdMdWludD4oaW5kZXgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtVmVydGV4QXR0cmliQ3VycmVudFZhbHVlc1tpbmRleF0uSW50VmFs
dWVzKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdO
RURfSU5UOgotICAgICAgICAgICAgICAgIG1GdW5jdGlvbnMtPnZlcnRleEF0dHJpYjR1aXYoc3Rh
dGljX2Nhc3Q8R0x1aW50PihpbmRleCksCisgICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+dmVy
dGV4QXR0cmliSTR1aXYoc3RhdGljX2Nhc3Q8R0x1aW50PihpbmRleCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVmVydGV4QXR0cmliQ3VycmVudFZhbHVl
c1tpbmRleF0uVW5zaWduZWRJbnRWYWx1ZXMpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CkBAIC0xNDYwLDYgKzE0ODgsMTAgQEAKICAg
ICAgICAgICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBzcGxpdCB0aGlzCiAgICAgICAgICAgICAg
ICAgc2V0UGl4ZWxVbnBhY2tTdGF0ZShzdGF0ZS5nZXRVbnBhY2tTdGF0ZSgpKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfVU5Q
QUNLX0JVRkZFUl9CSU5ESU5HOgorICAgICAgICAgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IHNw
bGl0IHRoaXMKKyAgICAgICAgICAgICAgICBzZXRQaXhlbFVucGFja1N0YXRlKHN0YXRlLmdldFVu
cGFja1N0YXRlKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBn
bDo6U3RhdGU6OkRJUlRZX0JJVF9QQUNLX0FMSUdOTUVOVDoKICAgICAgICAgICAgICAgICAvLyBU
T0RPKGptYWRpbGwpOiBzcGxpdCB0aGlzCiAgICAgICAgICAgICAgICAgc2V0UGl4ZWxQYWNrU3Rh
dGUoc3RhdGUuZ2V0UGFja1N0YXRlKCkpOwpAQCAtMTQ4MCw4ICsxNTEyLDEyIEBACiAgICAgICAg
ICAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogc3BsaXQgdGhpcwogICAgICAgICAgICAgICAgIHNl
dFBpeGVsUGFja1N0YXRlKHN0YXRlLmdldFBhY2tTdGF0ZSgpKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfUEFDS19CVUZGRVJf
QklORElORzoKKyAgICAgICAgICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBzcGxpdCB0aGlzCisg
ICAgICAgICAgICAgICAgc2V0UGl4ZWxQYWNrU3RhdGUoc3RhdGUuZ2V0UGFja1N0YXRlKCkpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZ
X0JJVF9ESVRIRVJfRU5BQkxFRDoKLSAgICAgICAgICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBp
bXBsZW1lbnQgdGhpcworICAgICAgICAgICAgICAgIHNldERpdGhlckVuYWJsZWQoc3RhdGUuaXNE
aXRoZXJFbmFibGVkKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9HRU5FUkFURV9NSVBNQVBfSElOVDoKICAgICAgICAgICAg
ICAgICAvLyBUT0RPKGptYWRpbGwpOiBpbXBsZW1lbnQgdGhpcwpAQCAtMTUwNCw2ICsxNTQwLDI2
IEBACiAgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX1BST0dSQU1fQklORElO
RzoKICAgICAgICAgICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBpbXBsZW1lbnQgdGhpcwogICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJ
VF9NVUxUSVNBTVBMSU5HOgorICAgICAgICAgICAgICAgIHNldE11bHRpc2FtcGxpbmdTdGF0ZUVu
YWJsZWQoc3RhdGUuaXNNdWx0aXNhbXBsaW5nRW5hYmxlZCgpKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfU0FNUExFX0FMUEhB
X1RPX09ORToKKyAgICAgICAgICAgICAgICBzZXRTYW1wbGVBbHBoYVRvT25lU3RhdGVFbmFibGVk
KHN0YXRlLmlzU2FtcGxlQWxwaGFUb09uZUVuYWJsZWQoKSk7CisgICAgICAgICAgICBjYXNlIGds
OjpTdGF0ZTo6RElSVFlfQklUX0NPVkVSQUdFX01PRFVMQVRJT046CisgICAgICAgICAgICAgICAg
c2V0Q292ZXJhZ2VNb2R1bGF0aW9uKHN0YXRlLmdldENvdmVyYWdlTW9kdWxhdGlvbigpKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9C
SVRfUEFUSF9SRU5ERVJJTkdfTUFUUklYX01WOgorICAgICAgICAgICAgICAgIHNldFBhdGhSZW5k
ZXJpbmdNb2RlbFZpZXdNYXRyaXgoCisgICAgICAgICAgICAgICAgICAgIHN0YXRlLmdldFBhdGhS
ZW5kZXJpbmdNYXRyaXgoR0xfUEFUSF9NT0RFTFZJRVdfTUFUUklYX0NIUk9NSVVNKSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklU
X1BBVEhfUkVOREVSSU5HX01BVFJJWF9QUk9KOgorICAgICAgICAgICAgICAgIHNldFBhdGhSZW5k
ZXJpbmdQcm9qZWN0aW9uTWF0cml4KAorICAgICAgICAgICAgICAgICAgICBzdGF0ZS5nZXRQYXRo
UmVuZGVyaW5nTWF0cml4KEdMX1BBVEhfUFJPSkVDVElPTl9NQVRSSVhfQ0hST01JVU0pKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9C
SVRfUEFUSF9SRU5ERVJJTkdfU1RFTkNJTF9TVEFURToKKyAgICAgICAgICAgICAgICBzZXRQYXRo
UmVuZGVyaW5nU3RlbmNpbFN0YXRlKHN0YXRlLmdldFBhdGhTdGVuY2lsRnVuYygpLCBzdGF0ZS5n
ZXRQYXRoU3RlbmNpbFJlZigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGUuZ2V0UGF0aFN0ZW5jaWxNYXNrKCkpOworICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICBBU1NFUlQoZGlydHlCaXQgPj0gZ2w6OlN0YXRlOjpESVJUWV9CSVRfQ1VSUkVOVF9WQUxVRV8w
ICYmCkBAIC0xNTM2LDYgKzE1OTIsMTAyIEBACiAgICAgfQogfQogCit2b2lkIFN0YXRlTWFuYWdl
ckdMOjpzZXREaXRoZXJFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBpZiAobURpdGhlckVu
YWJsZWQgIT0gZW5hYmxlZCkKKyAgICB7CisgICAgICAgIG1EaXRoZXJFbmFibGVkID0gZW5hYmxl
ZDsKKyAgICAgICAgaWYgKG1EaXRoZXJFbmFibGVkKQorICAgICAgICB7CisgICAgICAgICAgICBt
RnVuY3Rpb25zLT5lbmFibGUoR0xfRElUSEVSKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1GdW5jdGlvbnMtPmRpc2FibGUoR0xfRElUSEVSKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKwordm9pZCBTdGF0ZU1hbmFnZXJHTDo6c2V0TXVsdGlzYW1wbGlu
Z1N0YXRlRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgaWYgKG1NdWx0aXNhbXBsaW5nRW5h
YmxlZCAhPSBlbmFibGVkKQorICAgIHsKKyAgICAgICAgbU11bHRpc2FtcGxpbmdFbmFibGVkID0g
ZW5hYmxlZDsKKyAgICAgICAgaWYgKG1NdWx0aXNhbXBsaW5nRW5hYmxlZCkKKyAgICAgICAgewor
ICAgICAgICAgICAgbUZ1bmN0aW9ucy0+ZW5hYmxlKEdMX01VTFRJU0FNUExFX0VYVCk7CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBtRnVuY3Rpb25zLT5k
aXNhYmxlKEdMX01VTFRJU0FNUExFX0VYVCk7CisgICAgICAgIH0KKyAgICAgICAgbUxvY2FsRGly
dHlCaXRzLnNldChnbDo6U3RhdGU6OkRJUlRZX0JJVF9NVUxUSVNBTVBMSU5HKTsKKyAgICB9Cit9
CisKK3ZvaWQgU3RhdGVNYW5hZ2VyR0w6OnNldFNhbXBsZUFscGhhVG9PbmVTdGF0ZUVuYWJsZWQo
Ym9vbCBlbmFibGVkKQoreworICAgIGlmIChtU2FtcGxlQWxwaGFUb09uZUVuYWJsZWQgIT0gZW5h
YmxlZCkKKyAgICB7CisgICAgICAgIG1TYW1wbGVBbHBoYVRvT25lRW5hYmxlZCA9IGVuYWJsZWQ7
CisgICAgICAgIGlmIChtU2FtcGxlQWxwaGFUb09uZUVuYWJsZWQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1GdW5jdGlvbnMtPmVuYWJsZShHTF9TQU1QTEVfQUxQSEFfVE9fT05FKTsKKyAgICAg
ICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIG1GdW5jdGlvbnMtPmRp
c2FibGUoR0xfU0FNUExFX0FMUEhBX1RPX09ORSk7CisgICAgICAgIH0KKyAgICAgICAgbUxvY2Fs
RGlydHlCaXRzLnNldChnbDo6U3RhdGU6OkRJUlRZX0JJVF9TQU1QTEVfQUxQSEFfVE9fT05FKTsK
KyAgICB9Cit9CisKK3ZvaWQgU3RhdGVNYW5hZ2VyR0w6OnNldENvdmVyYWdlTW9kdWxhdGlvbihH
TGVudW0gY29tcG9uZW50cykKK3sKKyAgICBpZiAobUNvdmVyYWdlTW9kdWxhdGlvbiAhPSBjb21w
b25lbnRzKQorICAgIHsKKyAgICAgICAgbUNvdmVyYWdlTW9kdWxhdGlvbiA9IGNvbXBvbmVudHM7
CisgICAgICAgIG1GdW5jdGlvbnMtPmNvdmVyYWdlTW9kdWxhdGlvbk5WKGNvbXBvbmVudHMpOwor
CisgICAgICAgIG1Mb2NhbERpcnR5Qml0cy5zZXQoZ2w6OlN0YXRlOjpESVJUWV9CSVRfQ09WRVJB
R0VfTU9EVUxBVElPTik7CisgICAgfQorfQorCit2b2lkIFN0YXRlTWFuYWdlckdMOjpzZXRQYXRo
UmVuZGVyaW5nTW9kZWxWaWV3TWF0cml4KGNvbnN0IEdMZmxvYXQgKm0pCit7CisgICAgaWYgKG1l
bWNtcChtUGF0aE1hdHJpeE1WLCBtLCBzaXplb2YobVBhdGhNYXRyaXhNVikpICE9IDApCisgICAg
eworICAgICAgICBtZW1jcHkobVBhdGhNYXRyaXhNViwgbSwgc2l6ZW9mKG1QYXRoTWF0cml4TVYp
KTsKKyAgICAgICAgbUZ1bmN0aW9ucy0+bWF0cml4TG9hZEVYVChHTF9QQVRIX01PREVMVklFV19D
SFJPTUlVTSwgbSk7CisKKyAgICAgICAgbUxvY2FsRGlydHlCaXRzLnNldChnbDo6U3RhdGU6OkRJ
UlRZX0JJVF9QQVRIX1JFTkRFUklOR19NQVRSSVhfTVYpOworICAgIH0KK30KKwordm9pZCBTdGF0
ZU1hbmFnZXJHTDo6c2V0UGF0aFJlbmRlcmluZ1Byb2plY3Rpb25NYXRyaXgoY29uc3QgR0xmbG9h
dCAqbSkKK3sKKyAgICBpZiAobWVtY21wKG1QYXRoTWF0cml4UHJvaiwgbSwgc2l6ZW9mKG1QYXRo
TWF0cml4UHJvaikpICE9IDApCisgICAgeworICAgICAgICBtZW1jcHkobVBhdGhNYXRyaXhQcm9q
LCBtLCBzaXplb2YobVBhdGhNYXRyaXhQcm9qKSk7CisgICAgICAgIG1GdW5jdGlvbnMtPm1hdHJp
eExvYWRFWFQoR0xfUEFUSF9QUk9KRUNUSU9OX0NIUk9NSVVNLCBtKTsKKworICAgICAgICBtTG9j
YWxEaXJ0eUJpdHMuc2V0KGdsOjpTdGF0ZTo6RElSVFlfQklUX1BBVEhfUkVOREVSSU5HX01BVFJJ
WF9QUk9KKTsKKyAgICB9Cit9CisKK3ZvaWQgU3RhdGVNYW5hZ2VyR0w6OnNldFBhdGhSZW5kZXJp
bmdTdGVuY2lsU3RhdGUoR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spCit7Cisg
ICAgaWYgKGZ1bmMgIT0gbVBhdGhTdGVuY2lsRnVuYyB8fCByZWYgIT0gbVBhdGhTdGVuY2lsUmVm
IHx8IG1hc2sgIT0gbVBhdGhTdGVuY2lsTWFzaykKKyAgICB7CisgICAgICAgIG1QYXRoU3RlbmNp
bEZ1bmMgPSBmdW5jOworICAgICAgICBtUGF0aFN0ZW5jaWxSZWYgID0gcmVmOworICAgICAgICBt
UGF0aFN0ZW5jaWxNYXNrID0gbWFzazsKKyAgICAgICAgbUZ1bmN0aW9ucy0+cGF0aFN0ZW5jaWxG
dW5jTlYoZnVuYywgcmVmLCBtYXNrKTsKKworICAgICAgICBtTG9jYWxEaXJ0eUJpdHMuc2V0KGds
OjpTdGF0ZTo6RElSVFlfQklUX1BBVEhfUkVOREVSSU5HX1NURU5DSUxfU1RBVEUpOworICAgIH0K
K30KKwogdm9pZCBTdGF0ZU1hbmFnZXJHTDo6c2V0VGV4dHVyZUN1YmVtYXBTZWFtbGVzc0VuYWJs
ZWQoYm9vbCBlbmFibGVkKQogewogICAgIGlmIChtVGV4dHVyZUN1YmVtYXBTZWFtbGVzc0VuYWJs
ZWQgIT0gZW5hYmxlZCkKQEAgLTE1NTIsNCArMTcwNCw5IEBACiAgICAgfQogfQogCitHTHVpbnQg
U3RhdGVNYW5hZ2VyR0w6OmdldEJvdW5kQnVmZmVyKEdMZW51bSB0eXBlKQoreworICAgIEFTU0VS
VChtQnVmZmVycy5maW5kKHR5cGUpICE9IG1CdWZmZXJzLmVuZCgpKTsKKyAgICByZXR1cm4gbUJ1
ZmZlcnNbdHlwZV07CiB9Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2VyR0wuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2VyR0wu
aAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDcg
KzIwLDcgQEAKIG5hbWVzcGFjZSBnbAogewogc3RydWN0IENhcHM7Ci1zdHJ1Y3QgRGF0YTsKK2Ns
YXNzIENvbnRleHRTdGF0ZTsKIGNsYXNzIFN0YXRlOwogfQogCkBAIC0xMjQsMTMgKzEyNCwyNCBA
QAogCiAgICAgdm9pZCBzZXRGcmFtZWJ1ZmZlclNSR0JFbmFibGVkKGJvb2wgZW5hYmxlZCk7CiAK
KyAgICB2b2lkIHNldERpdGhlckVuYWJsZWQoYm9vbCBlbmFibGVkKTsKKworICAgIHZvaWQgc2V0
TXVsdGlzYW1wbGluZ1N0YXRlRW5hYmxlZChib29sIGVuYWJsZWQpOworICAgIHZvaWQgc2V0U2Ft
cGxlQWxwaGFUb09uZVN0YXRlRW5hYmxlZChib29sIGVuYWJsZWQpOworCisgICAgdm9pZCBzZXRD
b3ZlcmFnZU1vZHVsYXRpb24oR0xlbnVtIGNvbXBvbmVudHMpOworCisgICAgdm9pZCBzZXRQYXRo
UmVuZGVyaW5nTW9kZWxWaWV3TWF0cml4KGNvbnN0IEdMZmxvYXQgKm0pOworICAgIHZvaWQgc2V0
UGF0aFJlbmRlcmluZ1Byb2plY3Rpb25NYXRyaXgoY29uc3QgR0xmbG9hdCAqbSk7CisgICAgdm9p
ZCBzZXRQYXRoUmVuZGVyaW5nU3RlbmNpbFN0YXRlKEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdM
dWludCBtYXNrKTsKKwogICAgIHZvaWQgb25EZWxldGVRdWVyeU9iamVjdChRdWVyeUdMICpxdWVy
eSk7CiAKLSAgICBnbDo6RXJyb3Igc2V0RHJhd0FycmF5c1N0YXRlKGNvbnN0IGdsOjpEYXRhICZk
YXRhLAorICAgIGdsOjpFcnJvciBzZXREcmF3QXJyYXlzU3RhdGUoY29uc3QgZ2w6OkNvbnRleHRT
dGF0ZSAmZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZpcnN0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VDb3VudCk7Ci0gICAg
Z2w6OkVycm9yIHNldERyYXdFbGVtZW50c1N0YXRlKGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAg
IGdsOjpFcnJvciBzZXREcmF3RWxlbWVudHNTdGF0ZShjb25zdCBnbDo6Q29udGV4dFN0YXRlICZk
YXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLApAQCAtMTM3
LDEyICsxNDgsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBpbnN0YW5jZUNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTHZvaWQgKipvdXRJbmRpY2VzKTsKIAotICAgIGdsOjpFcnJvciBvbk1ha2VDdXJyZW50KGNv
bnN0IGdsOjpEYXRhICZkYXRhKTsKKyAgICBnbDo6RXJyb3IgcGF1c2VUcmFuc2Zvcm1GZWVkYmFj
ayhjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhKTsKKyAgICBnbDo6RXJyb3Igb25NYWtlQ3Vy
cmVudChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhKTsKIAogICAgIHZvaWQgc3luY1N0YXRl
KGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpTdGF0ZTo6RGlydHlCaXRzICZnbERp
cnR5Qml0cyk7CiAKKyAgICBHTHVpbnQgZ2V0Qm91bmRCdWZmZXIoR0xlbnVtIHR5cGUpOworCiAg
IHByaXZhdGU6Ci0gICAgZ2w6OkVycm9yIHNldEdlbmVyaWNEcmF3U3RhdGUoY29uc3QgZ2w6OkRh
dGEgJmRhdGEpOworICAgIGdsOjpFcnJvciBzZXRHZW5lcmljRHJhd1N0YXRlKGNvbnN0IGdsOjpD
b250ZXh0U3RhdGUgJmRhdGEpOwogCiAgICAgdm9pZCBzZXRUZXh0dXJlQ3ViZW1hcFNlYW1sZXNz
RW5hYmxlZChib29sIGVuYWJsZWQpOwogCkBAIC0yNTIsOCArMjY2LDIwIEBACiAgICAgR0xpbnQg
bUNsZWFyU3RlbmNpbDsKIAogICAgIGJvb2wgbUZyYW1lYnVmZmVyU1JHQkVuYWJsZWQ7CisgICAg
Ym9vbCBtRGl0aGVyRW5hYmxlZDsKICAgICBib29sIG1UZXh0dXJlQ3ViZW1hcFNlYW1sZXNzRW5h
YmxlZDsKIAorICAgIGJvb2wgbU11bHRpc2FtcGxpbmdFbmFibGVkOworICAgIGJvb2wgbVNhbXBs
ZUFscGhhVG9PbmVFbmFibGVkOworCisgICAgR0xlbnVtIG1Db3ZlcmFnZU1vZHVsYXRpb247CisK
KyAgICBHTGZsb2F0IG1QYXRoTWF0cml4TVZbMTZdOworICAgIEdMZmxvYXQgbVBhdGhNYXRyaXhQ
cm9qWzE2XTsKKyAgICBHTGVudW0gbVBhdGhTdGVuY2lsRnVuYzsKKyAgICBHTGludCBtUGF0aFN0
ZW5jaWxSZWY7CisgICAgR0x1aW50IG1QYXRoU3RlbmNpbE1hc2s7CisKICAgICBnbDo6U3RhdGU6
OkRpcnR5Qml0cyBtTG9jYWxEaXJ0eUJpdHM7CiB9OwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU3VyZmFjZUdMLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU3Vy
ZmFjZUdMLmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1N1cmZhY2VHTC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0LDcgKzE0LDggQEAKIG5hbWVzcGFjZSByeAogewogCi1TdXJmYWNlR0w6OlN1cmZhY2VHTChS
ZW5kZXJlckdMICpyZW5kZXJlcikgOiBTdXJmYWNlSW1wbCgpLCBtUmVuZGVyZXIocmVuZGVyZXIp
CitTdXJmYWNlR0w6OlN1cmZhY2VHTChjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsIFJl
bmRlcmVyR0wgKnJlbmRlcmVyKQorICAgIDogU3VyZmFjZUltcGwoc3RhdGUpLCBtUmVuZGVyZXIo
cmVuZGVyZXIpCiB7CiB9CiAKQEAgLTIyLDkgKzIzLDE1IEBACiB7CiB9CiAKLUZyYW1lYnVmZmVy
SW1wbCAqU3VyZmFjZUdMOjpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1l
YnVmZmVyOjpEYXRhICZkYXRhKQorRnJhbWVidWZmZXJJbXBsICpTdXJmYWNlR0w6OmNyZWF0ZURl
ZmF1bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmZGF0YSkKIHsKICAg
ICByZXR1cm4gbmV3IEZyYW1lYnVmZmVyR0woZGF0YSwgbVJlbmRlcmVyLT5nZXRGdW5jdGlvbnMo
KSwgbVJlbmRlcmVyLT5nZXRTdGF0ZU1hbmFnZXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbVJlbmRlcmVyLT5nZXRXb3JrYXJvdW5kcygpLCB0cnVlKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbVJlbmRlcmVyLT5nZXRXb3JrYXJvdW5kcygpLCBtUmVuZGVyZXItPmdl
dEJsaXR0ZXIoKSwgdHJ1ZSk7CiB9CisKK2VnbDo6RXJyb3IgU3VyZmFjZUdMOjpnZXRTeW5jVmFs
dWVzKEVHTHVpbnQ2NEtIUiAqdXN0LCBFR0x1aW50NjRLSFIgKm1zYywgRUdMdWludDY0S0hSICpz
YmMpCit7CisgICAgVU5SRUFDSEFCTEUoKTsKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFE
X1NVUkZBQ0UpOwogfQorfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL1N1cmZhY2VHTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TdXJmYWNlR0wuaAkocmV2aXNpb24g
MjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL1N1cmZhY2VHTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOSwxNyArMTksMTIgQEAKIGNsYXNz
IFN1cmZhY2VHTCA6IHB1YmxpYyBTdXJmYWNlSW1wbAogewogICBwdWJsaWM6Ci0gICAgU3VyZmFj
ZUdMKFJlbmRlcmVyR0wgKnJlbmRlcmVyKTsKKyAgICBTdXJmYWNlR0woY29uc3QgZWdsOjpTdXJm
YWNlU3RhdGUgJnN0YXRlLCBSZW5kZXJlckdMICpyZW5kZXJlcik7CiAgICAgflN1cmZhY2VHTCgp
IG92ZXJyaWRlOwogCi0gICAgZ2w6OkVycm9yIGdldEF0dGFjaG1lbnRSZW5kZXJUYXJnZXQoY29u
c3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJBdHRhY2htZW50UmVuZGVy
VGFyZ2V0ICoqcnRPdXQpIG92ZXJyaWRlCi0gICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX09VVF9PRl9NRU1PUlksICJOb3Qgc3VwcG9ydGVkIG9uIE9wZW5HTCIpOwotICAgIH0KKyAg
ICBGcmFtZWJ1ZmZlckltcGwgKmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJh
bWVidWZmZXJTdGF0ZSAmZGF0YSkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBnZXRTeW5jVmFs
dWVzKEVHTHVpbnQ2NEtIUiAqdXN0LCBFR0x1aW50NjRLSFIgKm1zYywgRUdMdWludDY0S0hSICpz
YmMpIG92ZXJyaWRlOwogCi0gICAgRnJhbWVidWZmZXJJbXBsICpjcmVhdGVEZWZhdWx0RnJhbWVi
dWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEYXRhICZkYXRhKSBvdmVycmlkZTsKLQogICAg
IHZpcnR1YWwgZWdsOjpFcnJvciBtYWtlQ3VycmVudCgpID0gMDsKIAogICBwcml2YXRlOgpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1RleHR1
cmVHTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL1RleHR1cmVHTC5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9UZXh0dXJlR0wuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04LDYgKzgsNyBAQAogCiAjaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvZ2wvVGV4dHVyZUdMLmgiCiAKKyNpbmNsdWRlICJjb21tb24vQml0U2V0SXRlcmF0b3Iu
aCIKICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKICNpbmNsdWRlICJjb21tb24vdXRpbGl0aWVz
LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvU3RhdGUuaCIKQEAgLTIwLDIxICsyMSwyNyBAQAogI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmgiCiAjaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvZ2wvV29ya2Fyb3VuZHNHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL2dsL2Zvcm1hdHV0aWxzZ2wuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9nbC9yZW5kZXJlcmdsX3V0aWxzLmgiCiAKK3VzaW5nIGFuZ2xlOjpDaGVja2VkTnVtZXJpYzsK
KwogbmFtZXNwYWNlIHJ4CiB7CiAKLXN0YXRpYyBib29sIFVzZVRleEltYWdlMkQoR0xlbnVtIHRl
eHR1cmVUeXBlKQorbmFtZXNwYWNlCiB7CisKK2Jvb2wgVXNlVGV4SW1hZ2UyRChHTGVudW0gdGV4
dHVyZVR5cGUpCit7CiAgICAgcmV0dXJuIHRleHR1cmVUeXBlID09IEdMX1RFWFRVUkVfMkQgfHwg
dGV4dHVyZVR5cGUgPT0gR0xfVEVYVFVSRV9DVUJFX01BUDsKIH0KIAotc3RhdGljIGJvb2wgVXNl
VGV4SW1hZ2UzRChHTGVudW0gdGV4dHVyZVR5cGUpCitib29sIFVzZVRleEltYWdlM0QoR0xlbnVt
IHRleHR1cmVUeXBlKQogewogICAgIHJldHVybiB0ZXh0dXJlVHlwZSA9PSBHTF9URVhUVVJFXzJE
X0FSUkFZIHx8IHRleHR1cmVUeXBlID09IEdMX1RFWFRVUkVfM0Q7CiB9CiAKLXN0YXRpYyBib29s
IENvbXBhdGlibGVUZXh0dXJlVGFyZ2V0KEdMZW51bSB0ZXh0dXJlVHlwZSwgR0xlbnVtIHRleHR1
cmVUYXJnZXQpCitib29sIENvbXBhdGlibGVUZXh0dXJlVGFyZ2V0KEdMZW51bSB0ZXh0dXJlVHlw
ZSwgR0xlbnVtIHRleHR1cmVUYXJnZXQpCiB7CiAgICAgaWYgKHRleHR1cmVUeXBlICE9IEdMX1RF
WFRVUkVfQ1VCRV9NQVApCiAgICAgewpAQCAtNDYsMTMgKzUzLDEzIEBACiAgICAgfQogfQogCi1z
dGF0aWMgYm9vbCBJc0xVTUFGb3JtYXQoR0xlbnVtIGZvcm1hdCkKK2Jvb2wgSXNMVU1BRm9ybWF0
KEdMZW51bSBmb3JtYXQpCiB7CiAgICAgcmV0dXJuIGZvcm1hdCA9PSBHTF9MVU1JTkFOQ0UgfHwg
Zm9ybWF0ID09IEdMX0FMUEhBIHx8IGZvcm1hdCA9PSBHTF9MVU1JTkFOQ0VfQUxQSEE7CiB9CiAK
LXN0YXRpYyBMVU1BV29ya2Fyb3VuZEdMIEdldExVTUFXb3JrYXJvdW5kSW5mbyhjb25zdCBnbDo6
SW50ZXJuYWxGb3JtYXQgJm9yaWdpbmFsRm9ybWF0SW5mbywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdGluYXRpb25Gb3JtYXQpCitMVU1B
V29ya2Fyb3VuZEdMIEdldExVTUFXb3JrYXJvdW5kSW5mbyhjb25zdCBnbDo6SW50ZXJuYWxGb3Jt
YXQgJm9yaWdpbmFsRm9ybWF0SW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBkZXN0aW5hdGlvbkZvcm1hdCkKIHsKICAgICBpZiAoSXNMVU1BRm9ybWF0
KG9yaWdpbmFsRm9ybWF0SW5mby5mb3JtYXQpKQogICAgIHsKQEAgLTY3LDE3ICs3NCwxNyBAQAog
ICAgIH0KIH0KIAotc3RhdGljIGJvb2wgSXNEZXB0aFN0ZW5jaWxGb3JtYXQoR0xlbnVtIGZvcm1h
dCkKK2Jvb2wgSXNEZXB0aFN0ZW5jaWxGb3JtYXQoR0xlbnVtIGZvcm1hdCkKIHsKICAgICByZXR1
cm4gZm9ybWF0ID09IEdMX0RFUFRIX0NPTVBPTkVOVCB8fCBmb3JtYXQgPT0gR0xfREVQVEhfU1RF
TkNJTDsKIH0KIAotc3RhdGljIGJvb2wgR2V0RGVwdGhTdGVuY2lsV29ya2Fyb3VuZChjb25zdCBn
bDo6SW50ZXJuYWxGb3JtYXQgJm9yaWdpbmFsRm9ybWF0SW5mbykKK2Jvb2wgR2V0RGVwdGhTdGVu
Y2lsV29ya2Fyb3VuZChjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJm9yaWdpbmFsRm9ybWF0SW5m
bykKIHsKICAgICByZXR1cm4gSXNEZXB0aFN0ZW5jaWxGb3JtYXQob3JpZ2luYWxGb3JtYXRJbmZv
LmZvcm1hdCk7CiB9CiAKLXN0YXRpYyBMZXZlbEluZm9HTCBHZXRMZXZlbEluZm8oR0xlbnVtIG9y
aWdpbmFsRm9ybWF0LCBHTGVudW0gZGVzdGluYXRpb25Gb3JtYXQpCitMZXZlbEluZm9HTCBHZXRM
ZXZlbEluZm8oR0xlbnVtIG9yaWdpbmFsRm9ybWF0LCBHTGVudW0gZGVzdGluYXRpb25Gb3JtYXQp
CiB7CiAgICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZvcmlnaW5hbEZvcm1hdEluZm8gPSBn
bDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKG9yaWdpbmFsRm9ybWF0KTsKICAgICByZXR1cm4gTGV2
ZWxJbmZvR0wob3JpZ2luYWxGb3JtYXQsIEdldERlcHRoU3RlbmNpbFdvcmthcm91bmQob3JpZ2lu
YWxGb3JtYXRJbmZvKSwKQEAgLTg0LDYgKzkxLDE4IEBACiAgICAgICAgICAgICAgICAgICAgICAg
IEdldExVTUFXb3JrYXJvdW5kSW5mbyhvcmlnaW5hbEZvcm1hdEluZm8sIGRlc3RpbmF0aW9uRm9y
bWF0KSk7CiB9CiAKK2dsOjpUZXh0dXJlOjpEaXJ0eUJpdHMgR2V0TGV2ZWxXb3JrYXJvdW5kRGly
dHlCaXRzKCkKK3sKKyAgICBnbDo6VGV4dHVyZTo6RGlydHlCaXRzIGJpdHM7CisgICAgYml0cy5z
ZXQoZ2w6OlRleHR1cmU6OkRJUlRZX0JJVF9TV0laWkxFX1JFRCk7CisgICAgYml0cy5zZXQoZ2w6
OlRleHR1cmU6OkRJUlRZX0JJVF9TV0laWkxFX0dSRUVOKTsKKyAgICBiaXRzLnNldChnbDo6VGV4
dHVyZTo6RElSVFlfQklUX1NXSVpaTEVfQkxVRSk7CisgICAgYml0cy5zZXQoZ2w6OlRleHR1cmU6
OkRJUlRZX0JJVF9TV0laWkxFX0FMUEhBKTsKKyAgICByZXR1cm4gYml0czsKK30KKworfSAgLy8g
YW5vbnltb3VzIG5hbWVzcGFjZQorCiBMVU1BV29ya2Fyb3VuZEdMOjpMVU1BV29ya2Fyb3VuZEdM
KCkgOiBMVU1BV29ya2Fyb3VuZEdMKGZhbHNlLCBHTF9OT05FKQogewogfQpAQCAtMTA2LDE5ICsx
MjUsMTggQEAKIHsKIH0KIAotVGV4dHVyZUdMOjpUZXh0dXJlR0woR0xlbnVtIHR5cGUsCitUZXh0
dXJlR0w6OlRleHR1cmVHTChjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZzdGF0ZSwKICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCiAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBXb3JrYXJvdW5kc0dMICZ3b3JrYXJvdW5kcywKICAgICAgICAgICAgICAg
ICAgICAgIFN0YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIsCiAgICAgICAgICAgICAgICAgICAg
ICBCbGl0R0wgKmJsaXR0ZXIpCi0gICAgOiBUZXh0dXJlSW1wbCgpLAotICAgICAgbVRleHR1cmVU
eXBlKHR5cGUpLAorICAgIDogVGV4dHVyZUltcGwoc3RhdGUpLAogICAgICAgbUZ1bmN0aW9ucyhm
dW5jdGlvbnMpLAogICAgICAgbVdvcmthcm91bmRzKHdvcmthcm91bmRzKSwKICAgICAgIG1TdGF0
ZU1hbmFnZXIoc3RhdGVNYW5hZ2VyKSwKICAgICAgIG1CbGl0dGVyKGJsaXR0ZXIpLAotICAgICAg
bUxldmVsSW5mbyhnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTKSwKLSAgICAg
IG1BcHBsaWVkVGV4dHVyZVN0YXRlKCksCisgICAgICBtTGV2ZWxJbmZvKGdsOjpJTVBMRU1FTlRB
VElPTl9NQVhfVEVYVFVSRV9MRVZFTFMgKyAxKSwKKyAgICAgIG1BcHBsaWVkVGV4dHVyZVN0YXRl
KHN0YXRlLm1UYXJnZXQpLAogICAgICAgbVRleHR1cmVJRCgwKQogewogICAgIEFTU0VSVChtRnVu
Y3Rpb25zKTsKQEAgLTEyNiw3ICsxNDQsNyBAQAogICAgIEFTU0VSVChtQmxpdHRlcik7CiAKICAg
ICBtRnVuY3Rpb25zLT5nZW5UZXh0dXJlcygxLCAmbVRleHR1cmVJRCk7Ci0gICAgbVN0YXRlTWFu
YWdlci0+YmluZFRleHR1cmUobVRleHR1cmVUeXBlLCBtVGV4dHVyZUlEKTsKKyAgICBtU3RhdGVN
YW5hZ2VyLT5iaW5kVGV4dHVyZShtU3RhdGUubVRhcmdldCwgbVRleHR1cmVJRCk7CiB9CiAKIFRl
eHR1cmVHTDo6flRleHR1cmVHTCgpCkBAIC0xMzUsMjMgKzE1Myw3NiBAQAogICAgIG1UZXh0dXJl
SUQgPSAwOwogfQogCi12b2lkIFRleHR1cmVHTDo6c2V0VXNhZ2UoR0xlbnVtIHVzYWdlKQorZ2w6
OkVycm9yIFRleHR1cmVHTDo6c2V0SW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3Rh
dGUgJnVucGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qg
KnBpeGVscykKIHsKLSAgICAvLyBHTF9BTkdMRV90ZXh0dXJlX3VzYWdlIG5vdCBpbXBsZW1lbnRl
ZCBmb3IgZGVza3RvcCBHTAotICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgaWYgKG1Xb3JrYXJvdW5k
cy51bnBhY2tPdmVybGFwcGluZ1Jvd3NTZXBhcmF0ZWx5VW5wYWNrQnVmZmVyICYmIHVucGFjay5w
aXhlbEJ1ZmZlci5nZXQoKSAmJgorICAgICAgICB1bnBhY2sucm93TGVuZ3RoICE9IDAgJiYgdW5w
YWNrLnJvd0xlbmd0aCA8IHNpemUud2lkdGgpCisgICAgeworICAgICAgICAvLyBUaGUgcm93cyBv
dmVybGFwIGluIHVucGFjayBtZW1vcnkuIFVwbG9hZCB0aGUgdGV4dHVyZSByb3cgYnkgcm93IHRv
IHdvcmsgYXJvdW5kCisgICAgICAgIC8vIGRyaXZlciBidWcuCisgICAgICAgIHJlc2VydmVUZXhJ
bWFnZVRvQmVGaWxsZWQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHNpemUsIGZvcm1h
dCwgdHlwZSk7CisKKyAgICAgICAgaWYgKHNpemUud2lkdGggPT0gMCB8fCBzaXplLmhlaWdodCA9
PSAwIHx8IHNpemUuZGVwdGggPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGds
OjpOb0Vycm9yKCk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Qm94IGFyZWEoMCwgMCwgMCwg
c2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQsIHNpemUuZGVwdGgpOworICAgICAgICByZXR1cm4gc2V0
U3ViSW1hZ2VSb3dCeVJvd1dvcmthcm91bmQodGFyZ2V0LCBsZXZlbCwgYXJlYSwgZm9ybWF0LCB0
eXBlLCB1bnBhY2ssIHBpeGVscyk7CisgICAgfQorCisgICAgaWYgKG1Xb3JrYXJvdW5kcy51bnBh
Y2tMYXN0Um93U2VwYXJhdGVseUZvclBhZGRpbmdJbmNsdXNpb24pCisgICAgeworICAgICAgICBi
b29sIGFwcGx5OworICAgICAgICBBTkdMRV9UUllfUkVTVUxUKFNob3VsZEFwcGx5TGFzdFJvd1Bh
ZGRpbmdXb3JrYXJvdW5kKHNpemUsIHVucGFjaywgZm9ybWF0LCB0eXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZVRleElt
YWdlM0QobVN0YXRlLm1UYXJnZXQpLCBwaXhlbHMpLAorICAgICAgICAgICAgICAgICAgICAgICAg
IGFwcGx5KTsKKworICAgICAgICAvLyBUaGUgZHJpdmVyIHdpbGwgdGhpbmsgdGhlIHBpeGVsIGJ1
ZmZlciBkb2Vzbid0IGhhdmUgZW5vdWdoIGRhdGEsIHdvcmsgYXJvdW5kIHRoaXMgYnVnCisgICAg
ICAgIC8vIGJ5IHVwbG9hZGluZyB0aGUgbGFzdCByb3cgKGFuZCBsYXN0IGxldmVsIGlmIDNEKSBz
ZXBhcmF0ZWx5LgorICAgICAgICBpZiAoYXBwbHkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
c2VydmVUZXhJbWFnZVRvQmVGaWxsZWQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHNp
emUsIGZvcm1hdCwgdHlwZSk7CisKKyAgICAgICAgICAgIGlmIChzaXplLndpZHRoID09IDAgfHwg
c2l6ZS5oZWlnaHQgPT0gMCB8fCBzaXplLmRlcHRoID09IDApCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGdsOjpCb3ggYXJlYSgwLCAwLCAwLCBzaXplLndpZHRoLCBzaXplLmhlaWdodCwgc2l6
ZS5kZXB0aCk7CisgICAgICAgICAgICByZXR1cm4gc2V0U3ViSW1hZ2VQYWRkaW5nV29ya2Fyb3Vu
ZCh0YXJnZXQsIGxldmVsLCBhcmVhLCBmb3JtYXQsIHR5cGUsIHVucGFjaywgcGl4ZWxzKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHNldEltYWdlSGVscGVyKHRhcmdldCwgbGV2ZWwsIGludGVy
bmFsRm9ybWF0LCBzaXplLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CisKKyAgICByZXR1cm4gZ2w6
Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVHTDo6c2V0SW1hZ2UoR0xlbnVtIHRh
cmdldCwgc2l6ZV90IGxldmVsLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIGNvbnN0IGdsOjpFeHRl
bnRzICZzaXplLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssIGNvbnN0IHVp
bnQ4X3QgKnBpeGVscykKK3ZvaWQgVGV4dHVyZUdMOjpzZXRJbWFnZUhlbHBlcihHTGVudW0gdGFy
Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB1aW50OF90ICpwaXhlbHMpCiB7CiAgICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJM
RSgmQ29tcGF0aWJsZVRleHR1cmVUYXJnZXQpOyAvLyBSZWZlcmVuY2UgdGhpcyBmdW5jdGlvbiB0
byBhdm9pZCB3YXJuaW5ncy4KLSAgICBBU1NFUlQoQ29tcGF0aWJsZVRleHR1cmVUYXJnZXQobVRl
eHR1cmVUeXBlLCB0YXJnZXQpKTsKKyAgICBBU1NFUlQoQ29tcGF0aWJsZVRleHR1cmVUYXJnZXQo
bVN0YXRlLm1UYXJnZXQsIHRhcmdldCkpOwogCiAgICAgbmF0aXZlZ2w6OlRleEltYWdlRm9ybWF0
IHRleEltYWdlRm9ybWF0ID0KICAgICAgICAgbmF0aXZlZ2w6OkdldFRleEltYWdlRm9ybWF0KG1G
dW5jdGlvbnMsIG1Xb3JrYXJvdW5kcywgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSk7CiAK
LSAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShtVGV4dHVyZVR5cGUsIG1UZXh0dXJlSUQp
OwotICAgIGlmIChVc2VUZXhJbWFnZTJEKG1UZXh0dXJlVHlwZSkpCisgICAgbVN0YXRlTWFuYWdl
ci0+YmluZFRleHR1cmUobVN0YXRlLm1UYXJnZXQsIG1UZXh0dXJlSUQpOworCisgICAgaWYgKFVz
ZVRleEltYWdlMkQobVN0YXRlLm1UYXJnZXQpKQogICAgIHsKICAgICAgICAgQVNTRVJUKHNpemUu
ZGVwdGggPT0gMSk7CiAgICAgICAgIG1GdW5jdGlvbnMtPnRleEltYWdlMkQodGFyZ2V0LCBzdGF0
aWNfY2FzdDxHTGludD4obGV2ZWwpLCB0ZXhJbWFnZUZvcm1hdC5pbnRlcm5hbEZvcm1hdCwKQEAg
LTE1OCw3ICsyMjksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUud2lk
dGgsIHNpemUuaGVpZ2h0LCAwLCB0ZXhJbWFnZUZvcm1hdC5mb3JtYXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGV4SW1hZ2VGb3JtYXQudHlwZSwgcGl4ZWxzKTsKICAgICB9Ci0g
ICAgZWxzZSBpZiAoVXNlVGV4SW1hZ2UzRChtVGV4dHVyZVR5cGUpKQorICAgIGVsc2UgaWYgKFVz
ZVRleEltYWdlM0QobVN0YXRlLm1UYXJnZXQpKQogICAgIHsKICAgICAgICAgbUZ1bmN0aW9ucy0+
dGV4SW1hZ2UzRCh0YXJnZXQsIHN0YXRpY19jYXN0PEdMaW50PihsZXZlbCksIHRleEltYWdlRm9y
bWF0LmludGVybmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUu
d2lkdGgsIHNpemUuaGVpZ2h0LCBzaXplLmRlcHRoLCAwLCB0ZXhJbWFnZUZvcm1hdC5mb3JtYXQs
CkBAIC0xNjksNTQgKzI0MCwyMjYgQEAKICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICB9CiAK
LSAgICBtTGV2ZWxJbmZvW2xldmVsXSA9IEdldExldmVsSW5mbyhpbnRlcm5hbEZvcm1hdCwgdGV4
SW1hZ2VGb3JtYXQuaW50ZXJuYWxGb3JtYXQpOworICAgIHNldExldmVsSW5mbyhsZXZlbCwgMSwg
R2V0TGV2ZWxJbmZvKGludGVybmFsRm9ybWF0LCB0ZXhJbWFnZUZvcm1hdC5pbnRlcm5hbEZvcm1h
dCkpOworfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Cit2b2lkIFRleHR1
cmVHTDo6cmVzZXJ2ZVRleEltYWdlVG9CZUZpbGxlZChHTGVudW0gdGFyZ2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVu
dHMgJnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHR5cGUpCit7CisgICAgR0x1aW50IHVucGFja0J1ZmZlciA9IG1TdGF0ZU1hbmFnZXItPmdl
dEJvdW5kQnVmZmVyKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIpOworICAgIG1TdGF0ZU1hbmFnZXIt
PmJpbmRCdWZmZXIoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgMCk7CisgICAgZ2w6OlBpeGVsVW5w
YWNrU3RhdGUgdW5wYWNrOworICAgIHNldEltYWdlSGVscGVyKHRhcmdldCwgbGV2ZWwsIGludGVy
bmFsRm9ybWF0LCBzaXplLCBmb3JtYXQsIHR5cGUsIG51bGxwdHIpOworICAgIG1TdGF0ZU1hbmFn
ZXItPmJpbmRCdWZmZXIoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgdW5wYWNrQnVmZmVyKTsKIH0K
IAogZ2w6OkVycm9yIFRleHR1cmVHTDo6c2V0U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90
IGxldmVsLCBjb25zdCBnbDo6Qm94ICZhcmVhLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0
YXRlICZ1bnBhY2ssIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykKIHsKLSAgICBBU1NFUlQoQ29tcGF0
aWJsZVRleHR1cmVUYXJnZXQobVRleHR1cmVUeXBlLCB0YXJnZXQpKTsKKyAgICBBU1NFUlQoQ29t
cGF0aWJsZVRleHR1cmVUYXJnZXQobVN0YXRlLm1UYXJnZXQsIHRhcmdldCkpOwogCiAgICAgbmF0
aXZlZ2w6OlRleFN1YkltYWdlRm9ybWF0IHRleFN1YkltYWdlRm9ybWF0ID0KICAgICAgICAgbmF0
aXZlZ2w6OkdldFRleFN1YkltYWdlRm9ybWF0KG1GdW5jdGlvbnMsIG1Xb3JrYXJvdW5kcywgZm9y
bWF0LCB0eXBlKTsKIAotICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKG1UZXh0dXJlVHlw
ZSwgbVRleHR1cmVJRCk7Ci0gICAgaWYgKFVzZVRleEltYWdlMkQobVRleHR1cmVUeXBlKSkKKyAg
ICBBU1NFUlQobUxldmVsSW5mb1tsZXZlbF0ubHVtYVdvcmthcm91bmQuZW5hYmxlZCA9PQorICAg
ICAgICAgICBHZXRMZXZlbEluZm8oZm9ybWF0LCB0ZXhTdWJJbWFnZUZvcm1hdC5mb3JtYXQpLmx1
bWFXb3JrYXJvdW5kLmVuYWJsZWQpOworCisgICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUo
bVN0YXRlLm1UYXJnZXQsIG1UZXh0dXJlSUQpOworICAgIGlmIChtV29ya2Fyb3VuZHMudW5wYWNr
T3ZlcmxhcHBpbmdSb3dzU2VwYXJhdGVseVVucGFja0J1ZmZlciAmJiB1bnBhY2sucGl4ZWxCdWZm
ZXIuZ2V0KCkgJiYKKyAgICAgICAgdW5wYWNrLnJvd0xlbmd0aCAhPSAwICYmIHVucGFjay5yb3dM
ZW5ndGggPCBhcmVhLndpZHRoKQogICAgIHsKKyAgICAgICAgcmV0dXJuIHNldFN1YkltYWdlUm93
QnlSb3dXb3JrYXJvdW5kKHRhcmdldCwgbGV2ZWwsIGFyZWEsIGZvcm1hdCwgdHlwZSwgdW5wYWNr
LCBwaXhlbHMpOworICAgIH0KKworICAgIGlmIChtV29ya2Fyb3VuZHMudW5wYWNrTGFzdFJvd1Nl
cGFyYXRlbHlGb3JQYWRkaW5nSW5jbHVzaW9uKQorICAgIHsKKyAgICAgICAgZ2w6OkV4dGVudHMg
c2l6ZShhcmVhLndpZHRoLCBhcmVhLmhlaWdodCwgYXJlYS5kZXB0aCk7CisKKyAgICAgICAgYm9v
bCBhcHBseTsKKyAgICAgICAgQU5HTEVfVFJZX1JFU1VMVChTaG91bGRBcHBseUxhc3RSb3dQYWRk
aW5nV29ya2Fyb3VuZChzaXplLCB1bnBhY2ssIGZvcm1hdCwgdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VUZXhJbWFn
ZTNEKG1TdGF0ZS5tVGFyZ2V0KSwgcGl4ZWxzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBh
cHBseSk7CisKKyAgICAgICAgLy8gVGhlIGRyaXZlciB3aWxsIHRoaW5rIHRoZSBwaXhlbCBidWZm
ZXIgZG9lc24ndCBoYXZlIGVub3VnaCBkYXRhLCB3b3JrIGFyb3VuZCB0aGlzIGJ1ZworICAgICAg
ICAvLyBieSB1cGxvYWRpbmcgdGhlIGxhc3Qgcm93IChhbmQgbGFzdCBsZXZlbCBpZiAzRCkgc2Vw
YXJhdGVseS4KKyAgICAgICAgaWYgKGFwcGx5KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gc2V0U3ViSW1hZ2VQYWRkaW5nV29ya2Fyb3VuZCh0YXJnZXQsIGxldmVsLCBhcmVhLCBmb3Jt
YXQsIHR5cGUsIHVucGFjaywgcGl4ZWxzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChV
c2VUZXhJbWFnZTJEKG1TdGF0ZS5tVGFyZ2V0KSkKKyAgICB7CiAgICAgICAgIEFTU0VSVChhcmVh
LnogPT0gMCAmJiBhcmVhLmRlcHRoID09IDEpOwogICAgICAgICBtRnVuY3Rpb25zLT50ZXhTdWJJ
bWFnZTJEKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0xpbnQ+KGxldmVsKSwgYXJlYS54LCBhcmVhLnks
IGFyZWEud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlYS5oZWln
aHQsIHRleFN1YkltYWdlRm9ybWF0LmZvcm1hdCwgdGV4U3ViSW1hZ2VGb3JtYXQudHlwZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbHMpOwogICAgIH0KLSAgICBlbHNl
IGlmIChVc2VUZXhJbWFnZTNEKG1UZXh0dXJlVHlwZSkpCisgICAgZWxzZQogICAgIHsKKyAgICAg
ICAgQVNTRVJUKFVzZVRleEltYWdlM0QobVN0YXRlLm1UYXJnZXQpKTsKICAgICAgICAgbUZ1bmN0
aW9ucy0+dGV4U3ViSW1hZ2UzRCh0YXJnZXQsIHN0YXRpY19jYXN0PEdMaW50PihsZXZlbCksIGFy
ZWEueCwgYXJlYS55LCBhcmVhLnosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXJlYS53aWR0aCwgYXJlYS5oZWlnaHQsIGFyZWEuZGVwdGgsIHRleFN1YkltYWdlRm9ybWF0LmZv
cm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXhTdWJJbWFnZUZvcm1h
dC50eXBlLCBwaXhlbHMpOwogICAgIH0KKworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJS
T1IpOworfQorCitnbDo6RXJyb3IgVGV4dHVyZUdMOjpzZXRTdWJJbWFnZVJvd0J5Um93V29ya2Fy
b3VuZChHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmYXJlYSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpCit7
CisgICAgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgZGlyZWN0VW5wYWNrOworICAgIGRpcmVjdFVucGFj
ay5waXhlbEJ1ZmZlciA9IHVucGFjay5waXhlbEJ1ZmZlcjsKKyAgICBkaXJlY3RVbnBhY2suYWxp
Z25tZW50ICAgPSAxOworICAgIG1TdGF0ZU1hbmFnZXItPnNldFBpeGVsVW5wYWNrU3RhdGUoZGly
ZWN0VW5wYWNrKTsKKyAgICBkaXJlY3RVbnBhY2sucGl4ZWxCdWZmZXIuc2V0KG51bGxwdHIpOwor
CisgICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZnbEZvcm1hdCA9CisgICAgICAgIGdsOjpH
ZXRJbnRlcm5hbEZvcm1hdEluZm8oZ2w6OkdldFNpemVkSW50ZXJuYWxGb3JtYXQoZm9ybWF0LCB0
eXBlKSk7CisgICAgR0x1aW50IHJvd0J5dGVzICAgICAgICAgICAgICAgICAgICAgID0gMDsKKyAg
ICBBTkdMRV9UUllfUkVTVUxUKGdsRm9ybWF0LmNvbXB1dGVSb3dQaXRjaCh0eXBlLCBhcmVhLndp
ZHRoLCB1bnBhY2suYWxpZ25tZW50LCB1bnBhY2sucm93TGVuZ3RoKSwKKyAgICAgICAgICAgICAg
ICAgICAgIHJvd0J5dGVzKTsKKyAgICBHTHVpbnQgaW1hZ2VCeXRlcyA9IDA7CisgICAgQU5HTEVf
VFJZX1JFU1VMVChnbEZvcm1hdC5jb21wdXRlRGVwdGhQaXRjaChhcmVhLmhlaWdodCwgdW5wYWNr
LmltYWdlSGVpZ2h0LCByb3dCeXRlcyksCisgICAgICAgICAgICAgICAgICAgICBpbWFnZUJ5dGVz
KTsKKyAgICBib29sIHVzZVRleEltYWdlM0QgPSBVc2VUZXhJbWFnZTNEKG1TdGF0ZS5tVGFyZ2V0
KTsKKyAgICBHTHVpbnQgc2tpcEJ5dGVzICAgPSAwOworICAgIEFOR0xFX1RSWV9SRVNVTFQoZ2xG
b3JtYXQuY29tcHV0ZVNraXBCeXRlcyhyb3dCeXRlcywgaW1hZ2VCeXRlcywgdW5wYWNrLCB1c2VU
ZXhJbWFnZTNEKSwKKyAgICAgICAgICAgICAgICAgICAgIHNraXBCeXRlcyk7CisKKyAgICBjb25z
dCB1aW50OF90ICpwaXhlbHNXaXRoU2tpcCA9IHBpeGVscyArIHNraXBCeXRlczsKKyAgICBpZiAo
dXNlVGV4SW1hZ2UzRCkKKyAgICB7CisgICAgICAgIGZvciAoR0xpbnQgaW1hZ2UgPSAwOyBpbWFn
ZSA8IGFyZWEuZGVwdGg7ICsraW1hZ2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIEdMaW50IGlt
YWdlQnl0ZU9mZnNldCA9IGltYWdlICogaW1hZ2VCeXRlczsKKyAgICAgICAgICAgIGZvciAoR0xp
bnQgcm93ID0gMDsgcm93IDwgYXJlYS5oZWlnaHQ7ICsrcm93KQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIEdMaW50IGJ5dGVPZmZzZXQgICAgICAgICA9IGltYWdlQnl0ZU9mZnNldCAr
IHJvdyAqIHJvd0J5dGVzOworICAgICAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgKnJvd1BpeGVs
cyA9IHBpeGVsc1dpdGhTa2lwICsgYnl0ZU9mZnNldDsKKyAgICAgICAgICAgICAgICBtRnVuY3Rp
b25zLT50ZXhTdWJJbWFnZTNEKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0xpbnQ+KGxldmVsKSwgYXJl
YS54LCByb3cgKyBhcmVhLnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbWFnZSArIGFyZWEueiwgYXJlYS53aWR0aCwgMSwgMSwgZm9ybWF0LCB0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93UGl4ZWxzKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBVTlJF
QUNIQUJMRSgpOworICAgICAgICBBU1NFUlQoVXNlVGV4SW1hZ2UyRChtU3RhdGUubVRhcmdldCkp
OworICAgICAgICBmb3IgKEdMaW50IHJvdyA9IDA7IHJvdyA8IGFyZWEuaGVpZ2h0OyArK3JvdykK
KyAgICAgICAgeworICAgICAgICAgICAgR0xpbnQgYnl0ZU9mZnNldCAgICAgICAgID0gcm93ICog
cm93Qnl0ZXM7CisgICAgICAgICAgICBjb25zdCBHTHVieXRlICpyb3dQaXhlbHMgPSBwaXhlbHNX
aXRoU2tpcCArIGJ5dGVPZmZzZXQ7CisgICAgICAgICAgICBtRnVuY3Rpb25zLT50ZXhTdWJJbWFn
ZTJEKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0xpbnQ+KGxldmVsKSwgYXJlYS54LCByb3cgKyBhcmVh
LnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZWEud2lkdGgsIDEs
IGZvcm1hdCwgdHlwZSwgcm93UGl4ZWxzKTsKKyAgICAgICAgfQogICAgIH0KKyAgICByZXR1cm4g
Z2w6Ok5vRXJyb3IoKTsKK30KIAotICAgIEFTU0VSVChtTGV2ZWxJbmZvW2xldmVsXS5sdW1hV29y
a2Fyb3VuZC5lbmFibGVkID09Ci0gICAgICAgICAgIEdldExldmVsSW5mbyhmb3JtYXQsIHRleFN1
YkltYWdlRm9ybWF0LmZvcm1hdCkubHVtYVdvcmthcm91bmQuZW5hYmxlZCk7CitnbDo6RXJyb3Ig
VGV4dHVyZUdMOjpzZXRTdWJJbWFnZVBhZGRpbmdXb3JrYXJvdW5kKEdMZW51bSB0YXJnZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBs
ZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OkJveCAmYXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRl
ICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykKK3sKKyAgICBjb25zdCBnbDo6SW50ZXJuYWxGb3Jt
YXQgJmdsRm9ybWF0ID0KKyAgICAgICAgZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhnbDo6R2V0
U2l6ZWRJbnRlcm5hbEZvcm1hdChmb3JtYXQsIHR5cGUpKTsKKyAgICBHTHVpbnQgcm93Qnl0ZXMg
PSAwOworICAgIEFOR0xFX1RSWV9SRVNVTFQoZ2xGb3JtYXQuY29tcHV0ZVJvd1BpdGNoKHR5cGUs
IGFyZWEud2lkdGgsIHVucGFjay5hbGlnbm1lbnQsIHVucGFjay5yb3dMZW5ndGgpLAorICAgICAg
ICAgICAgICAgICAgICAgcm93Qnl0ZXMpOworICAgIEdMdWludCBpbWFnZUJ5dGVzID0gMDsKKyAg
ICBBTkdMRV9UUllfUkVTVUxUKGdsRm9ybWF0LmNvbXB1dGVEZXB0aFBpdGNoKGFyZWEuaGVpZ2h0
LCB1bnBhY2suaW1hZ2VIZWlnaHQsIHJvd0J5dGVzKSwKKyAgICAgICAgICAgICAgICAgICAgIGlt
YWdlQnl0ZXMpOworICAgIGJvb2wgdXNlVGV4SW1hZ2UzRCA9IFVzZVRleEltYWdlM0QobVN0YXRl
Lm1UYXJnZXQpOworICAgIEdMdWludCBza2lwQnl0ZXMgICA9IDA7CisgICAgQU5HTEVfVFJZX1JF
U1VMVChnbEZvcm1hdC5jb21wdXRlU2tpcEJ5dGVzKHJvd0J5dGVzLCBpbWFnZUJ5dGVzLCB1bnBh
Y2ssIHVzZVRleEltYWdlM0QpLAorICAgICAgICAgICAgICAgICAgICAgc2tpcEJ5dGVzKTsKIAot
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIGdsOjpQaXhlbFVucGFja1N0
YXRlIGRpcmVjdFVucGFjazsKKyAgICBkaXJlY3RVbnBhY2sucGl4ZWxCdWZmZXIgPSB1bnBhY2su
cGl4ZWxCdWZmZXI7CisgICAgZGlyZWN0VW5wYWNrLmFsaWdubWVudCAgID0gMTsKKworICAgIGlm
ICh1c2VUZXhJbWFnZTNEKQorICAgIHsKKyAgICAgICAgLy8gVXBsb2FkIGFsbCBidXQgdGhlIGxh
c3Qgc2xpY2UKKyAgICAgICAgaWYgKGFyZWEuZGVwdGggPiAxKQorICAgICAgICB7CisgICAgICAg
ICAgICBtRnVuY3Rpb25zLT50ZXhTdWJJbWFnZTNEKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0xpbnQ+
KGxldmVsKSwgYXJlYS54LCBhcmVhLnksIGFyZWEueiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXJlYS53aWR0aCwgYXJlYS5oZWlnaHQsIGFyZWEuZGVwdGggLSAxLCBm
b3JtYXQsIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVs
cyk7CisgICAgICAgIH0KKworICAgICAgICAvLyBVcGxvYWQgdGhlIGxhc3Qgc2xpY2UgYnV0IGl0
cyBsYXN0IHJvdworICAgICAgICBpZiAoYXJlYS5oZWlnaHQgPiAxKQorICAgICAgICB7CisgICAg
ICAgICAgICAvLyBEbyBub3QgaW5jbHVkZSBza2lwQnl0ZXMgaW4gdGhlIGxhc3QgaW1hZ2UgcGl4
ZWwgc3RhcnQgb2Zmc2V0IGFzIGl0IHdpbGwgYmUgZG9uZSBieQorICAgICAgICAgICAgLy8gdGhl
IGRyaXZlcgorICAgICAgICAgICAgR0xpbnQgbGFzdEltYWdlT2Zmc2V0ICAgICAgICAgID0gKGFy
ZWEuZGVwdGggLSAxKSAqIGltYWdlQnl0ZXM7CisgICAgICAgICAgICBjb25zdCBHTHVieXRlICps
YXN0SW1hZ2VQaXhlbHMgPSBwaXhlbHMgKyBsYXN0SW1hZ2VPZmZzZXQ7CisgICAgICAgICAgICBt
RnVuY3Rpb25zLT50ZXhTdWJJbWFnZTNEKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0xpbnQ+KGxldmVs
KSwgYXJlYS54LCBhcmVhLnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFyZWEueiArIGFyZWEuZGVwdGggLSAxLCBhcmVhLndpZHRoLCBhcmVhLmhlaWdodCAtIDEsIDEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlwZSwgbGFz
dEltYWdlUGl4ZWxzKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFVwbG9hZCB0aGUgbGFzdCBy
b3cgb2YgdGhlIGxhc3Qgc2xpY2UgIm1hbnVhbGx5IgorICAgICAgICBtU3RhdGVNYW5hZ2VyLT5z
ZXRQaXhlbFVucGFja1N0YXRlKGRpcmVjdFVucGFjayk7CisKKyAgICAgICAgR0xpbnQgbGFzdFJv
d09mZnNldCA9CisgICAgICAgICAgICBza2lwQnl0ZXMgKyAoYXJlYS5kZXB0aCAtIDEpICogaW1h
Z2VCeXRlcyArIChhcmVhLmhlaWdodCAtIDEpICogcm93Qnl0ZXM7CisgICAgICAgIGNvbnN0IEdM
dWJ5dGUgKmxhc3RSb3dQaXhlbHMgPSBwaXhlbHMgKyBsYXN0Um93T2Zmc2V0OworICAgICAgICBt
RnVuY3Rpb25zLT50ZXhTdWJJbWFnZTNEKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0xpbnQ+KGxldmVs
KSwgYXJlYS54LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZWEueSArIGFy
ZWEuaGVpZ2h0IC0gMSwgYXJlYS56ICsgYXJlYS5kZXB0aCAtIDEsIGFyZWEud2lkdGgsIDEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgZm9ybWF0LCB0eXBlLCBsYXN0Um93
UGl4ZWxzKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgQVNTRVJUKFVzZVRleElt
YWdlMkQobVN0YXRlLm1UYXJnZXQpKTsKKworICAgICAgICAvLyBVcGxvYWQgYWxsIGJ1dCB0aGUg
bGFzdCByb3cKKyAgICAgICAgaWYgKGFyZWEuaGVpZ2h0ID4gMSkKKyAgICAgICAgeworICAgICAg
ICAgICAgbUZ1bmN0aW9ucy0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIHN0YXRpY19jYXN0PEdMaW50
PihsZXZlbCksIGFyZWEueCwgYXJlYS55LCBhcmVhLndpZHRoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhcmVhLmhlaWdodCAtIDEsIGZvcm1hdCwgdHlwZSwgcGl4ZWxz
KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFVwbG9hZCB0aGUgbGFzdCByb3cgIm1hbnVhbGx5
IgorICAgICAgICBtU3RhdGVNYW5hZ2VyLT5zZXRQaXhlbFVucGFja1N0YXRlKGRpcmVjdFVucGFj
ayk7CisKKyAgICAgICAgR0xpbnQgbGFzdFJvd09mZnNldCAgICAgICAgICA9IHNraXBCeXRlcyAr
IChhcmVhLmhlaWdodCAtIDEpICogcm93Qnl0ZXM7CisgICAgICAgIGNvbnN0IEdMdWJ5dGUgKmxh
c3RSb3dQaXhlbHMgPSBwaXhlbHMgKyBsYXN0Um93T2Zmc2V0OworICAgICAgICBtRnVuY3Rpb25z
LT50ZXhTdWJJbWFnZTJEKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0xpbnQ+KGxldmVsKSwgYXJlYS54
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZWEueSArIGFyZWEuaGVpZ2h0
IC0gMSwgYXJlYS53aWR0aCwgMSwgZm9ybWF0LCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxhc3RSb3dQaXhlbHMpOworICAgIH0KKworICAgIGRpcmVjdFVucGFjay5w
aXhlbEJ1ZmZlci5zZXQobnVsbHB0cik7CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0K
IAogZ2w6OkVycm9yIFRleHR1cmVHTDo6c2V0Q29tcHJlc3NlZEltYWdlKEdMZW51bSB0YXJnZXQs
IHNpemVfdCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAm
c2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBzaXplX3QgaW1hZ2VTaXplLCBjb25zdCB1aW50OF90
ICpwaXhlbHMpCiB7Ci0gICAgQVNTRVJUKENvbXBhdGlibGVUZXh0dXJlVGFyZ2V0KG1UZXh0dXJl
VHlwZSwgdGFyZ2V0KSk7CisgICAgQVNTRVJUKENvbXBhdGlibGVUZXh0dXJlVGFyZ2V0KG1TdGF0
ZS5tVGFyZ2V0LCB0YXJnZXQpKTsKIAogICAgIG5hdGl2ZWdsOjpDb21wcmVzc2VkVGV4SW1hZ2VG
b3JtYXQgY29tcHJlc3NlZFRleEltYWdlRm9ybWF0ID0KICAgICAgICAgbmF0aXZlZ2w6OkdldENv
bXByZXNzZWRUZXhJbWFnZUZvcm1hdChtRnVuY3Rpb25zLCBtV29ya2Fyb3VuZHMsIGludGVybmFs
Rm9ybWF0KTsKIAotICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKG1UZXh0dXJlVHlwZSwg
bVRleHR1cmVJRCk7Ci0gICAgaWYgKFVzZVRleEltYWdlMkQobVRleHR1cmVUeXBlKSkKKyAgICBt
U3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShtU3RhdGUubVRhcmdldCwgbVRleHR1cmVJRCk7Cisg
ICAgaWYgKFVzZVRleEltYWdlMkQobVN0YXRlLm1UYXJnZXQpKQogICAgIHsKICAgICAgICAgQVNT
RVJUKHNpemUuZGVwdGggPT0gMSk7CiAgICAgICAgIG1GdW5jdGlvbnMtPmNvbXByZXNzZWRUZXhJ
bWFnZTJEKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0xpbnQ+KGxldmVsKSwKQEAgLTIyMyw3ICs0NjYs
NyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2Vk
VGV4SW1hZ2VGb3JtYXQuaW50ZXJuYWxGb3JtYXQsIHNpemUud2lkdGgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUuaGVpZ2h0LCAwLCBzdGF0aWNfY2FzdDxH
THNpemVpPihpbWFnZVNpemUpLCBwaXhlbHMpOwogICAgIH0KLSAgICBlbHNlIGlmIChVc2VUZXhJ
bWFnZTNEKG1UZXh0dXJlVHlwZSkpCisgICAgZWxzZSBpZiAoVXNlVGV4SW1hZ2UzRChtU3RhdGUu
bVRhcmdldCkpCiAgICAgewogICAgICAgICBtRnVuY3Rpb25zLT5jb21wcmVzc2VkVGV4SW1hZ2Uz
RCgKICAgICAgICAgICAgIHRhcmdldCwgc3RhdGljX2Nhc3Q8R0xpbnQ+KGxldmVsKSwgY29tcHJl
c3NlZFRleEltYWdlRm9ybWF0LmludGVybmFsRm9ybWF0LCBzaXplLndpZHRoLApAQCAtMjM0LDcg
KzQ3Nyw3IEBACiAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgfQogCi0gICAgbUxldmVsSW5m
b1tsZXZlbF0gPSBHZXRMZXZlbEluZm8oaW50ZXJuYWxGb3JtYXQsIGNvbXByZXNzZWRUZXhJbWFn
ZUZvcm1hdC5pbnRlcm5hbEZvcm1hdCk7CisgICAgc2V0TGV2ZWxJbmZvKGxldmVsLCAxLCBHZXRM
ZXZlbEluZm8oaW50ZXJuYWxGb3JtYXQsIGNvbXByZXNzZWRUZXhJbWFnZUZvcm1hdC5pbnRlcm5h
bEZvcm1hdCkpOwogICAgIEFTU0VSVCghbUxldmVsSW5mb1tsZXZlbF0ubHVtYVdvcmthcm91bmQu
ZW5hYmxlZCk7CiAKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKQEAgLTI0Mywx
MyArNDg2LDEzIEBACiBnbDo6RXJyb3IgVGV4dHVyZUdMOjpzZXRDb21wcmVzc2VkU3ViSW1hZ2Uo
R0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBnbDo6Qm94ICZhcmVhLCBHTGVudW0g
Zm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssIHNpemVfdCBpbWFnZVNpemUsIGNvbnN0IHVp
bnQ4X3QgKnBpeGVscykKIHsKLSAgICBBU1NFUlQoQ29tcGF0aWJsZVRleHR1cmVUYXJnZXQobVRl
eHR1cmVUeXBlLCB0YXJnZXQpKTsKKyAgICBBU1NFUlQoQ29tcGF0aWJsZVRleHR1cmVUYXJnZXQo
bVN0YXRlLm1UYXJnZXQsIHRhcmdldCkpOwogCiAgICAgbmF0aXZlZ2w6OkNvbXByZXNzZWRUZXhT
dWJJbWFnZUZvcm1hdCBjb21wcmVzc2VkVGV4U3ViSW1hZ2VGb3JtYXQgPQogICAgICAgICBuYXRp
dmVnbDo6R2V0Q29tcHJlc3NlZFN1YlRleEltYWdlRm9ybWF0KG1GdW5jdGlvbnMsIG1Xb3JrYXJv
dW5kcywgZm9ybWF0KTsKIAotICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKG1UZXh0dXJl
VHlwZSwgbVRleHR1cmVJRCk7Ci0gICAgaWYgKFVzZVRleEltYWdlMkQobVRleHR1cmVUeXBlKSkK
KyAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShtU3RhdGUubVRhcmdldCwgbVRleHR1cmVJ
RCk7CisgICAgaWYgKFVzZVRleEltYWdlMkQobVN0YXRlLm1UYXJnZXQpKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGFyZWEueiA9PSAwICYmIGFyZWEuZGVwdGggPT0gMSk7CiAgICAgICAgIG1GdW5j
dGlvbnMtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKApAQCAtMjU2LDcgKzQ5OSw3IEBACiAgICAg
ICAgICAgICB0YXJnZXQsIHN0YXRpY19jYXN0PEdMaW50PihsZXZlbCksIGFyZWEueCwgYXJlYS55
LCBhcmVhLndpZHRoLCBhcmVhLmhlaWdodCwKICAgICAgICAgICAgIGNvbXByZXNzZWRUZXhTdWJJ
bWFnZUZvcm1hdC5mb3JtYXQsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KGltYWdlU2l6ZSksIHBpeGVs
cyk7CiAgICAgfQotICAgIGVsc2UgaWYgKFVzZVRleEltYWdlM0QobVRleHR1cmVUeXBlKSkKKyAg
ICBlbHNlIGlmIChVc2VUZXhJbWFnZTNEKG1TdGF0ZS5tVGFyZ2V0KSkKICAgICB7CiAgICAgICAg
IG1GdW5jdGlvbnMtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKHRhcmdldCwgc3RhdGljX2Nhc3Q8
R0xpbnQ+KGxldmVsKSwgYXJlYS54LCBhcmVhLnksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFyZWEueiwgYXJlYS53aWR0aCwgYXJlYS5oZWlnaHQsIGFyZWEu
ZGVwdGgsCkBAIC0yODQsNyArNTI3LDcgQEAKICAgICBpZiAobGV2ZWxJbmZvLmx1bWFXb3JrYXJv
dW5kLmVuYWJsZWQpCiAgICAgewogICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBtQmxpdHRlci0+
Y29weUltYWdlVG9MVU1BV29ya2Fyb3VuZFRleHR1cmUoCi0gICAgICAgICAgICBtVGV4dHVyZUlE
LCBtVGV4dHVyZVR5cGUsIHRhcmdldCwgbGV2ZWxJbmZvLnNvdXJjZUZvcm1hdCwgbGV2ZWwsIHNv
dXJjZUFyZWEsCisgICAgICAgICAgICBtVGV4dHVyZUlELCBtU3RhdGUubVRhcmdldCwgdGFyZ2V0
LCBsZXZlbEluZm8uc291cmNlRm9ybWF0LCBsZXZlbCwgc291cmNlQXJlYSwKICAgICAgICAgICAg
IGNvcHlUZXhJbWFnZUZvcm1hdC5pbnRlcm5hbEZvcm1hdCwgc291cmNlKTsKICAgICAgICAgaWYg
KGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewpAQCAtMjk1LDExICs1MzgsMTEgQEAKICAgICB7
CiAgICAgICAgIGNvbnN0IEZyYW1lYnVmZmVyR0wgKnNvdXJjZUZyYW1lYnVmZmVyR0wgPSBHZXRJ
bXBsQXM8RnJhbWVidWZmZXJHTD4oc291cmNlKTsKIAotICAgICAgICBtU3RhdGVNYW5hZ2VyLT5i
aW5kVGV4dHVyZShtVGV4dHVyZVR5cGUsIG1UZXh0dXJlSUQpOworICAgICAgICBtU3RhdGVNYW5h
Z2VyLT5iaW5kVGV4dHVyZShtU3RhdGUubVRhcmdldCwgbVRleHR1cmVJRCk7CiAgICAgICAgIG1T
dGF0ZU1hbmFnZXItPmJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVSLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlRnJhbWVidWZmZXJHTC0+Z2V0
RnJhbWVidWZmZXJJRCgpKTsKIAotICAgICAgICBpZiAoVXNlVGV4SW1hZ2UyRChtVGV4dHVyZVR5
cGUpKQorICAgICAgICBpZiAoVXNlVGV4SW1hZ2UyRChtU3RhdGUubVRhcmdldCkpCiAgICAgICAg
IHsKICAgICAgICAgICAgIG1GdW5jdGlvbnMtPmNvcHlUZXhJbWFnZTJEKHRhcmdldCwgc3RhdGlj
X2Nhc3Q8R0xpbnQ+KGxldmVsKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvcHlUZXhJbWFnZUZvcm1hdC5pbnRlcm5hbEZvcm1hdCwgc291cmNlQXJlYS54LApAQCAt
MzExLDcgKzU1NCw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtTGV2ZWxJbmZvW2xldmVs
XSA9IGxldmVsSW5mbzsKKyAgICBzZXRMZXZlbEluZm8obGV2ZWwsIDEsIGxldmVsSW5mbyk7CiAK
ICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KQEAgLTMyMSw3ICs1NjQsNyBA
QAogewogICAgIGNvbnN0IEZyYW1lYnVmZmVyR0wgKnNvdXJjZUZyYW1lYnVmZmVyR0wgPSBHZXRJ
bXBsQXM8RnJhbWVidWZmZXJHTD4oc291cmNlKTsKIAotICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRU
ZXh0dXJlKG1UZXh0dXJlVHlwZSwgbVRleHR1cmVJRCk7CisgICAgbVN0YXRlTWFuYWdlci0+Ymlu
ZFRleHR1cmUobVN0YXRlLm1UYXJnZXQsIG1UZXh0dXJlSUQpOwogICAgIG1TdGF0ZU1hbmFnZXIt
PmJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVSLCBzb3VyY2VGcmFtZWJ1ZmZlckdM
LT5nZXRGcmFtZWJ1ZmZlcklEKCkpOwogCiAgICAgY29uc3QgTGV2ZWxJbmZvR0wgJmxldmVsSW5m
byA9IG1MZXZlbEluZm9bbGV2ZWxdOwpAQCAtMzI4LDggKzU3MSw4IEBACiAgICAgaWYgKGxldmVs
SW5mby5sdW1hV29ya2Fyb3VuZC5lbmFibGVkKQogICAgIHsKICAgICAgICAgZ2w6OkVycm9yIGVy
cm9yID0gbUJsaXR0ZXItPmNvcHlTdWJJbWFnZVRvTFVNQVdvcmthcm91bmRUZXh0dXJlKAotICAg
ICAgICAgICAgbVRleHR1cmVJRCwgbVRleHR1cmVUeXBlLCB0YXJnZXQsIGxldmVsSW5mby5zb3Vy
Y2VGb3JtYXQsIGxldmVsLCBkZXN0T2Zmc2V0LCBzb3VyY2VBcmVhLAotICAgICAgICAgICAgc291
cmNlKTsKKyAgICAgICAgICAgIG1UZXh0dXJlSUQsIG1TdGF0ZS5tVGFyZ2V0LCB0YXJnZXQsIGxl
dmVsSW5mby5zb3VyY2VGb3JtYXQsIGxldmVsLCBkZXN0T2Zmc2V0LAorICAgICAgICAgICAgc291
cmNlQXJlYSwgc291cmNlKTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIGVycm9yOwpAQCAtMzM3LDcgKzU4MCw3IEBACiAgICAgfQog
ICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGlmIChVc2VUZXhJbWFnZTJEKG1UZXh0dXJlVHlwZSkp
CisgICAgICAgIGlmIChVc2VUZXhJbWFnZTJEKG1TdGF0ZS5tVGFyZ2V0KSkKICAgICAgICAgewog
ICAgICAgICAgICAgQVNTRVJUKGRlc3RPZmZzZXQueiA9PSAwKTsKICAgICAgICAgICAgIG1GdW5j
dGlvbnMtPmNvcHlUZXhTdWJJbWFnZTJEKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0xpbnQ+KGxldmVs
KSwgZGVzdE9mZnNldC54LApAQCAtMzQ0LDcgKzU4Nyw3IEBACiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZXN0T2Zmc2V0LnksIHNvdXJjZUFyZWEueCwgc291cmNl
QXJlYS55LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNl
QXJlYS53aWR0aCwgc291cmNlQXJlYS5oZWlnaHQpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2Ug
aWYgKFVzZVRleEltYWdlM0QobVRleHR1cmVUeXBlKSkKKyAgICAgICAgZWxzZSBpZiAoVXNlVGV4
SW1hZ2UzRChtU3RhdGUubVRhcmdldCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1GdW5jdGlv
bnMtPmNvcHlUZXhTdWJJbWFnZTNEKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0xpbnQ+KGxldmVsKSwg
ZGVzdE9mZnNldC54LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVzdE9mZnNldC55LCBkZXN0T2Zmc2V0LnosIHNvdXJjZUFyZWEueCwgc291cmNlQXJlYS55LApA
QCAtMzY3LDggKzYxMCw4IEBACiAgICAgbmF0aXZlZ2w6OlRleFN0b3JhZ2VGb3JtYXQgdGV4U3Rv
cmFnZUZvcm1hdCA9CiAgICAgICAgIG5hdGl2ZWdsOjpHZXRUZXhTdG9yYWdlRm9ybWF0KG1GdW5j
dGlvbnMsIG1Xb3JrYXJvdW5kcywgaW50ZXJuYWxGb3JtYXQpOwogCi0gICAgbVN0YXRlTWFuYWdl
ci0+YmluZFRleHR1cmUobVRleHR1cmVUeXBlLCBtVGV4dHVyZUlEKTsKLSAgICBpZiAoVXNlVGV4
SW1hZ2UyRChtVGV4dHVyZVR5cGUpKQorICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKG1T
dGF0ZS5tVGFyZ2V0LCBtVGV4dHVyZUlEKTsKKyAgICBpZiAoVXNlVGV4SW1hZ2UyRChtU3RhdGUu
bVRhcmdldCkpCiAgICAgewogICAgICAgICBBU1NFUlQoc2l6ZS5kZXB0aCA9PSAxKTsKICAgICAg
ICAgaWYgKG1GdW5jdGlvbnMtPnRleFN0b3JhZ2UyRCkKQEAgLTM5MiwxMSArNjM1LDE0IEBACiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4KHNpemUuaGVpZ2h0
ID4+IGxldmVsLCAxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSk7
CiAKLSAgICAgICAgICAgICAgICBpZiAobVRleHR1cmVUeXBlID09IEdMX1RFWFRVUkVfMkQpCisg
ICAgICAgICAgICAgICAgaWYgKG1TdGF0ZS5tVGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQpCiAgICAg
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBpZiAoaW50ZXJuYWxGb3JtYXRJbmZv
LmNvbXByZXNzZWQpCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBkYXRhU2l6ZSA9IGludGVybmFsRm9ybWF0SW5mby5jb21wdXRlQmxvY2tTaXpl
KEdMX1VOU0lHTkVEX0JZVEUsIGxldmVsU2l6ZS53aWR0aCwgbGV2ZWxTaXplLmhlaWdodCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZGF0YVNpemUgPSAwOworICAgICAgICAgICAg
ICAgICAgICAgICAgQU5HTEVfVFJZX1JFU1VMVChpbnRlcm5hbEZvcm1hdEluZm8uY29tcHV0ZUNv
bXByZXNzZWRJbWFnZVNpemUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBsZXZlbFNpemUpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkYXRhU2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBtRnVuY3Rpb25zLT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIHN0YXRpY19jYXN0PEdM
aW50PihsZXZlbCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXhTdG9yYWdlRm9ybWF0LmludGVybmFsRm9ybWF0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxTaXpl
LndpZHRoLCBsZXZlbFNpemUuaGVpZ2h0LCAwLApAQCAtNDEwLDEzICs2NTYsMTYgQEAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXRJ
bmZvLnR5cGUsIG51bGxwdHIpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1UZXh0dXJlVHlwZSA9PSBHTF9URVhUVVJF
X0NVQkVfTUFQKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1TdGF0ZS5tVGFyZ2V0ID09IEdM
X1RFWFRVUkVfQ1VCRV9NQVApCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg
ICBmb3IgKEdMZW51bSBmYWNlID0gZ2w6OkZpcnN0Q3ViZU1hcFRleHR1cmVUYXJnZXQ7IGZhY2Ug
PD0gZ2w6Okxhc3RDdWJlTWFwVGV4dHVyZVRhcmdldDsgZmFjZSsrKQogICAgICAgICAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW50ZXJuYWxGb3JtYXRJbmZvLmNv
bXByZXNzZWQpCiAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGRhdGFTaXplID0gaW50ZXJuYWxGb3JtYXRJbmZvLmNvbXB1dGVCbG9j
a1NpemUoR0xfVU5TSUdORURfQllURSwgbGV2ZWxTaXplLndpZHRoLCBsZXZlbFNpemUuaGVpZ2h0
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZGF0YVNpemUgPSAwOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX1RSWV9SRVNVTFQoaW50ZXJuYWxGb3JtYXRJ
bmZvLmNvbXB1dGVDb21wcmVzc2VkSW1hZ2VTaXplKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIGxldmVsU2l6ZSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhU2l6ZSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+Y29tcHJlc3NlZFRleEltYWdl
MkQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UsIHN0YXRpY19jYXN0PEdM
aW50PihsZXZlbCksIHRleFN0b3JhZ2VGb3JtYXQuaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxldmVsU2l6ZS53aWR0aCwgbGV2ZWxTaXplLmhlaWdodCwg
MCwKQEAgLTQzOCw3ICs2ODcsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQot
ICAgIGVsc2UgaWYgKFVzZVRleEltYWdlM0QobVRleHR1cmVUeXBlKSkKKyAgICBlbHNlIGlmIChV
c2VUZXhJbWFnZTNEKG1TdGF0ZS5tVGFyZ2V0KSkKICAgICB7CiAgICAgICAgIGlmIChtRnVuY3Rp
b25zLT50ZXhTdG9yYWdlM0QpCiAgICAgICAgIHsKQEAgLTQ1OCwxOCArNzA3LDIwIEBACiAKICAg
ICAgICAgICAgIGZvciAoR0xzaXplaSBpID0gMDsgaSA8IHN0YXRpY19jYXN0PEdMc2l6ZWk+KGxl
dmVscyk7IGkrKykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbDo6RXh0ZW50cyBs
ZXZlbFNpemUoc3RkOjptYXgoc2l6ZS53aWR0aCA+PiBpLCAxKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXgoc2l6ZS5oZWlnaHQgPj4gaSwgMSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1UZXh0dXJlVHlwZSA9PSBHTF9URVhU
VVJFXzNEID8gc3RkOjptYXgoc2l6ZS5kZXB0aCA+PiBpLCAxKSA6IHNpemUuZGVwdGgpOworICAg
ICAgICAgICAgICAgIGdsOjpFeHRlbnRzIGxldmVsU2l6ZSgKKyAgICAgICAgICAgICAgICAgICAg
c3RkOjptYXgoc2l6ZS53aWR0aCA+PiBpLCAxKSwgc3RkOjptYXgoc2l6ZS5oZWlnaHQgPj4gaSwg
MSksCisgICAgICAgICAgICAgICAgICAgIG1TdGF0ZS5tVGFyZ2V0ID09IEdMX1RFWFRVUkVfM0Qg
PyBzdGQ6Om1heChzaXplLmRlcHRoID4+IGksIDEpIDogc2l6ZS5kZXB0aCk7CiAKICAgICAgICAg
ICAgICAgICBpZiAoaW50ZXJuYWxGb3JtYXRJbmZvLmNvbXByZXNzZWQpCiAgICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRhdGFTaXplID0gc3RhdGljX2Nhc3Q8
R0xzaXplaT4oaW50ZXJuYWxGb3JtYXRJbmZvLmNvbXB1dGVCbG9ja1NpemUoCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgbGV2ZWxT
aXplLndpZHRoLCBsZXZlbFNpemUuaGVpZ2h0KSkgKgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbGV2ZWxTaXplLmRlcHRoOworICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgZGF0YVNpemUgPSAwOworICAgICAgICAgICAgICAgICAgICBBTkdMRV9UUllfUkVTVUxUKAor
ICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXRJbmZvLmNvbXB1dGVDb21wcmVz
c2VkSW1hZ2VTaXplKEdMX1VOU0lHTkVEX0JZVEUsIGxldmVsU2l6ZSksCisgICAgICAgICAgICAg
ICAgICAgICAgICBkYXRhU2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgIG1GdW5jdGlvbnMtPmNv
bXByZXNzZWRUZXhJbWFnZTNEKHRhcmdldCwgaSwgdGV4U3RvcmFnZUZvcm1hdC5pbnRlcm5hbEZv
cm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGV2ZWxTaXplLndpZHRoLCBsZXZlbFNpemUuaGVpZ2h0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbFNpemUuZGVwdGgsIDAsIGRh
dGFTaXplLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbGV2ZWxTaXplLmRlcHRoLCAwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHNpemVpPihkYXRh
U2l6ZSksIG51bGxwdHIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgewpAQCAtNDg2LDQ3ICs3MzcsNTQgQEAKICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKICAgICB9CiAKLSAgICBMZXZlbEluZm9HTCBsZXZlbEluZm8gPSBHZXRMZXZlbElu
Zm8oaW50ZXJuYWxGb3JtYXQsIHRleFN0b3JhZ2VGb3JtYXQuaW50ZXJuYWxGb3JtYXQpOwotICAg
IGZvciAoc2l6ZV90IGxldmVsID0gMDsgbGV2ZWwgPCBtTGV2ZWxJbmZvLnNpemUoKTsgbGV2ZWwr
KykKLSAgICB7Ci0gICAgICAgIG1MZXZlbEluZm9bbGV2ZWxdID0gbGV2ZWxJbmZvOwotICAgIH0K
KyAgICBzZXRMZXZlbEluZm8oMCwgbGV2ZWxzLCBHZXRMZXZlbEluZm8oaW50ZXJuYWxGb3JtYXQs
IHRleFN0b3JhZ2VGb3JtYXQuaW50ZXJuYWxGb3JtYXQpKTsKIAogICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfTk9fRVJST1IpOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUdMOjpnZW5lcmF0ZU1pcG1h
cHMoY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmdGV4dHVyZVN0YXRlKQorZ2w6OkVycm9yIFRleHR1
cmVHTDo6c2V0SW1hZ2VFeHRlcm5hbChHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlZ2w6OlN0cmVhbSAqc3RyZWFtLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OlN0cmVhbTo6R0xUZXh0dXJlRGVzY3Jp
cHRpb24gJmRlc2MpCiB7Ci0gICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUobVRleHR1cmVU
eXBlLCBtVGV4dHVyZUlEKTsKLSAgICBtRnVuY3Rpb25zLT5nZW5lcmF0ZU1pcG1hcChtVGV4dHVy
ZVR5cGUpOworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKK30KIAotICAgIGZvciAoc2l6ZV90IGxldmVsID0gdGV4dHVyZVN0
YXRlLmJhc2VMZXZlbDsgbGV2ZWwgPCBtTGV2ZWxJbmZvLnNpemUoKTsgbGV2ZWwrKykKLSAgICB7
Ci0gICAgICAgIG1MZXZlbEluZm9bbGV2ZWxdID0gbUxldmVsSW5mb1t0ZXh0dXJlU3RhdGUuYmFz
ZUxldmVsXTsKLSAgICB9CitnbDo6RXJyb3IgVGV4dHVyZUdMOjpnZW5lcmF0ZU1pcG1hcCgpCit7
CisgICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUobVN0YXRlLm1UYXJnZXQsIG1UZXh0dXJl
SUQpOworICAgIG1GdW5jdGlvbnMtPmdlbmVyYXRlTWlwbWFwKG1TdGF0ZS5tVGFyZ2V0KTsKIAor
ICAgIGNvbnN0IEdMdWludCBlZmZlY3RpdmVCYXNlTGV2ZWwgPSBtU3RhdGUuZ2V0RWZmZWN0aXZl
QmFzZUxldmVsKCk7CisgICAgY29uc3QgR0x1aW50IG1heExldmVsICAgICAgICAgICA9IG1TdGF0
ZS5nZXRNaXBtYXBNYXhMZXZlbCgpOworCisgICAgQVNTRVJUKG1heExldmVsIDwgbUxldmVsSW5m
by5zaXplKCkpOworCisgICAgc2V0TGV2ZWxJbmZvKGVmZmVjdGl2ZUJhc2VMZXZlbCwgbWF4TGV2
ZWwgLSBlZmZlY3RpdmVCYXNlTGV2ZWwsIG1MZXZlbEluZm9bZWZmZWN0aXZlQmFzZUxldmVsXSk7
CisKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAogdm9pZCBUZXh0dXJl
R0w6OmJpbmRUZXhJbWFnZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpCiB7Ci0gICAgQVNTRVJUKG1U
ZXh0dXJlVHlwZSA9PSBHTF9URVhUVVJFXzJEKTsKKyAgICBBU1NFUlQobVN0YXRlLm1UYXJnZXQg
PT0gR0xfVEVYVFVSRV8yRCk7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhpcyB0ZXh0dXJlIGlzIGJv
dW5kCi0gICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUobVRleHR1cmVUeXBlLCBtVGV4dHVy
ZUlEKTsKKyAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShtU3RhdGUubVRhcmdldCwgbVRl
eHR1cmVJRCk7CiAKLSAgICBtTGV2ZWxJbmZvWzBdID0gTGV2ZWxJbmZvR0woKTsKKyAgICBzZXRM
ZXZlbEluZm8oMCwgMSwgTGV2ZWxJbmZvR0woKSk7CiB9CiAKIHZvaWQgVGV4dHVyZUdMOjpyZWxl
YXNlVGV4SW1hZ2UoKQogewogICAgIC8vIE5vdCBhbGwgU3VyZmFjZSBpbXBsZW1lbnRhdGlvbnMg
cmVzZXQgdGhlIHNpemUgb2YgbWlwIDAgd2hlbiByZWxlYXNpbmcsIGRvIGl0IG1hbnVhbGx5Ci0g
ICAgQVNTRVJUKG1UZXh0dXJlVHlwZSA9PSBHTF9URVhUVVJFXzJEKTsKKyAgICBBU1NFUlQobVN0
YXRlLm1UYXJnZXQgPT0gR0xfVEVYVFVSRV8yRCk7CiAKLSAgICBtU3RhdGVNYW5hZ2VyLT5iaW5k
VGV4dHVyZShtVGV4dHVyZVR5cGUsIG1UZXh0dXJlSUQpOwotICAgIGlmIChVc2VUZXhJbWFnZTJE
KG1UZXh0dXJlVHlwZSkpCisgICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUobVN0YXRlLm1U
YXJnZXQsIG1UZXh0dXJlSUQpOworICAgIGlmIChVc2VUZXhJbWFnZTJEKG1TdGF0ZS5tVGFyZ2V0
KSkKICAgICB7Ci0gICAgICAgIG1GdW5jdGlvbnMtPnRleEltYWdlMkQobVRleHR1cmVUeXBlLCAw
LCBHTF9SR0JBLCAwLCAwLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsK
KyAgICAgICAgbUZ1bmN0aW9ucy0+dGV4SW1hZ2UyRChtU3RhdGUubVRhcmdldCwgMCwgR0xfUkdC
QSwgMCwgMCwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKQEAgLTU0MCw1
OCArNzk4LDExOSBAQAogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQXBwbHlUZXh0dXJlRnVuY1R5
cGU+Ci1zdGF0aWMgaW5saW5lIHZvaWQgU3luY1NhbXBsZXJTdGF0ZU1lbWJlcihjb25zdCBGdW5j
dGlvbnNHTCAqZnVuY3Rpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQXBwbHlUZXh0dXJlRnVuY1R5cGUgYXBwbHlUZXh0dXJlRnVuYywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJm5l
d1N0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlNh
bXBsZXJTdGF0ZSAmY3VyU3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGV4dHVyZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFQoZ2w6OlNhbXBsZXJTdGF0ZTo6KnNhbXBsZXJNZW1iZXIpKQordm9pZCBU
ZXh0dXJlR0w6OnN5bmNTdGF0ZShjb25zdCBnbDo6VGV4dHVyZTo6RGlydHlCaXRzICZkaXJ0eUJp
dHMpCiB7Ci0gICAgaWYgKGN1clN0YXRlLipzYW1wbGVyTWVtYmVyICE9IG5ld1N0YXRlLipzYW1w
bGVyTWVtYmVyKQorICAgIGlmIChkaXJ0eUJpdHMubm9uZSgpICYmIG1Mb2NhbERpcnR5Qml0cy5u
b25lKCkpCiAgICAgewotICAgICAgICBhcHBseVRleHR1cmVGdW5jKCk7Ci0gICAgICAgIGN1clN0
YXRlLipzYW1wbGVyTWVtYmVyID0gbmV3U3RhdGUuKnNhbXBsZXJNZW1iZXI7Ci0gICAgICAgIGZ1
bmN0aW9ucy0+dGV4UGFyYW1ldGVyZih0ZXh0dXJlVHlwZSwgbmFtZSwgc3RhdGljX2Nhc3Q8R0xm
bG9hdD4oY3VyU3RhdGUuKnNhbXBsZXJNZW1iZXIpKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0K
LX0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFwcGx5VGV4dHVyZUZ1bmNUeXBl
Pgotc3RhdGljIGlubGluZSB2b2lkIFN5bmNUZXh0dXJlU3RhdGVNZW1iZXIoY29uc3QgRnVuY3Rp
b25zR0wgKmZ1bmN0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFwcGx5VGV4dHVyZUZ1bmNUeXBlIGFwcGx5VGV4dHVyZUZ1bmMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZuZXdT
dGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpUZXh0
dXJlU3RhdGUgJmN1clN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRleHR1cmVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUKGdsOjpUZXh0dXJlU3RhdGU6OipzdGF0ZU1lbWJlcikpCi17Ci0gICAgaWYg
KGN1clN0YXRlLipzdGF0ZU1lbWJlciAhPSBuZXdTdGF0ZS4qc3RhdGVNZW1iZXIpCisgICAgbVN0
YXRlTWFuYWdlci0+YmluZFRleHR1cmUobVN0YXRlLm1UYXJnZXQsIG1UZXh0dXJlSUQpOworCisg
ICAgaWYgKGRpcnR5Qml0c1tnbDo6VGV4dHVyZTo6RElSVFlfQklUX0JBU0VfTEVWRUxdIHx8IGRp
cnR5Qml0c1tnbDo6VGV4dHVyZTo6RElSVFlfQklUX01BWF9MRVZFTF0pCiAgICAgewotICAgICAg
ICBhcHBseVRleHR1cmVGdW5jKCk7Ci0gICAgICAgIGN1clN0YXRlLipzdGF0ZU1lbWJlciA9IG5l
d1N0YXRlLipzdGF0ZU1lbWJlcjsKLSAgICAgICAgZnVuY3Rpb25zLT50ZXhQYXJhbWV0ZXJmKHRl
eHR1cmVUeXBlLCBuYW1lLCBzdGF0aWNfY2FzdDxHTGZsb2F0PihjdXJTdGF0ZS4qc3RhdGVNZW1i
ZXIpKTsKKyAgICAgICAgLy8gRG9uJ3Qga25vdyBpZiB0aGUgcHJldmlvdXMgYmFzZSBsZXZlbCB3
YXMgdXNpbmcgYW55IHdvcmthcm91bmRzLCBhbHdheXMgcmUtc3luYyB0aGUKKyAgICAgICAgLy8g
d29ya2Fyb3VuZCBkaXJ0eSBiaXRzCisgICAgICAgIG1Mb2NhbERpcnR5Qml0cyB8PSBHZXRMZXZl
bFdvcmthcm91bmREaXJ0eUJpdHMoKTsKICAgICB9CisKKyAgICBmb3IgKGF1dG8gZGlydHlCaXQg
OiBhbmdsZTo6SXRlcmF0ZUJpdFNldChkaXJ0eUJpdHMgfCBtTG9jYWxEaXJ0eUJpdHMpKQorICAg
IHsKKyAgICAgICAgc3dpdGNoIChkaXJ0eUJpdCkKKyAgICAgICAgeworICAgICAgICAgICAgY2Fz
ZSBnbDo6VGV4dHVyZTo6RElSVFlfQklUX01JTl9GSUxURVI6CisgICAgICAgICAgICAgICAgbUZ1
bmN0aW9ucy0+dGV4UGFyYW1ldGVyaShtU3RhdGUubVRhcmdldCwgR0xfVEVYVFVSRV9NSU5fRklM
VEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVN0YXRlLmdl
dFNhbXBsZXJTdGF0ZSgpLm1pbkZpbHRlcik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIGdsOjpUZXh0dXJlOjpESVJUWV9CSVRfTUFHX0ZJTFRFUjoKKyAgICAgICAg
ICAgICAgICBtRnVuY3Rpb25zLT50ZXhQYXJhbWV0ZXJpKG1TdGF0ZS5tVGFyZ2V0LCBHTF9URVhU
VVJFX01BR19GSUxURVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtU3RhdGUuZ2V0U2FtcGxlclN0YXRlKCkubWFnRmlsdGVyKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlRleHR1cmU6OkRJUlRZX0JJVF9XUkFQX1M6Cisg
ICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+dGV4UGFyYW1ldGVyaShtU3RhdGUubVRhcmdldCwg
R0xfVEVYVFVSRV9XUkFQX1MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtU3RhdGUuZ2V0U2FtcGxlclN0YXRlKCkud3JhcFMpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBnbDo6VGV4dHVyZTo6RElSVFlfQklUX1dSQVBfVDoKKyAg
ICAgICAgICAgICAgICBtRnVuY3Rpb25zLT50ZXhQYXJhbWV0ZXJpKG1TdGF0ZS5tVGFyZ2V0LCBH
TF9URVhUVVJFX1dSQVBfVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1TdGF0ZS5nZXRTYW1wbGVyU3RhdGUoKS53cmFwVCk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIGdsOjpUZXh0dXJlOjpESVJUWV9CSVRfV1JBUF9SOgorICAg
ICAgICAgICAgICAgIG1GdW5jdGlvbnMtPnRleFBhcmFtZXRlcmkobVN0YXRlLm1UYXJnZXQsIEdM
X1RFWFRVUkVfV1JBUF9SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbVN0YXRlLmdldFNhbXBsZXJTdGF0ZSgpLndyYXBSKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlRleHR1cmU6OkRJUlRZX0JJVF9NQVhfQU5JU09UUk9Q
WToKKyAgICAgICAgICAgICAgICBtRnVuY3Rpb25zLT50ZXhQYXJhbWV0ZXJmKG1TdGF0ZS5tVGFy
Z2V0LCBHTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1TdGF0ZS5nZXRTYW1wbGVyU3RhdGUoKS5tYXhBbmlzb3Ry
b3B5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlRleHR1
cmU6OkRJUlRZX0JJVF9NSU5fTE9EOgorICAgICAgICAgICAgICAgIG1GdW5jdGlvbnMtPnRleFBh
cmFtZXRlcmYobVN0YXRlLm1UYXJnZXQsIEdMX1RFWFRVUkVfTUlOX0xPRCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0ZS5nZXRTYW1wbGVyU3RhdGUoKS5t
aW5Mb2QpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbDo6VGV4
dHVyZTo6RElSVFlfQklUX01BWF9MT0Q6CisgICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+dGV4
UGFyYW1ldGVyZihtU3RhdGUubVRhcmdldCwgR0xfVEVYVFVSRV9NQVhfTE9ELAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVN0YXRlLmdldFNhbXBsZXJTdGF0ZSgp
Lm1heExvZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsOjpU
ZXh0dXJlOjpESVJUWV9CSVRfQ09NUEFSRV9NT0RFOgorICAgICAgICAgICAgICAgIG1GdW5jdGlv
bnMtPnRleFBhcmFtZXRlcmkobVN0YXRlLm1UYXJnZXQsIEdMX1RFWFRVUkVfQ09NUEFSRV9NT0RF
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVN0YXRlLmdldFNh
bXBsZXJTdGF0ZSgpLmNvbXBhcmVNb2RlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgZ2w6OlRleHR1cmU6OkRJUlRZX0JJVF9DT01QQVJFX0ZVTkM6CisgICAgICAg
ICAgICAgICAgbUZ1bmN0aW9ucy0+dGV4UGFyYW1ldGVyaShtU3RhdGUubVRhcmdldCwgR0xfVEVY
VFVSRV9DT01QQVJFX0ZVTkMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtU3RhdGUuZ2V0U2FtcGxlclN0YXRlKCkuY29tcGFyZUZ1bmMpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICAvLyBUZXh0dXJlIHN0YXRlCisgICAgICAgICAgICBj
YXNlIGdsOjpUZXh0dXJlOjpESVJUWV9CSVRfU1dJWlpMRV9SRUQ6CisgICAgICAgICAgICAgICAg
c3luY1RleHR1cmVTdGF0ZVN3aXp6bGUobUZ1bmN0aW9ucywgR0xfVEVYVFVSRV9TV0laWkxFX1Is
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVN0YXRlLmdldFN3aXp6
bGVTdGF0ZSgpLnN3aXp6bGVSZWQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBnbDo6VGV4dHVyZTo6RElSVFlfQklUX1NXSVpaTEVfR1JFRU46CisgICAgICAgICAg
ICAgICAgc3luY1RleHR1cmVTdGF0ZVN3aXp6bGUobUZ1bmN0aW9ucywgR0xfVEVYVFVSRV9TV0la
WkxFX0csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVN0YXRlLmdl
dFN3aXp6bGVTdGF0ZSgpLnN3aXp6bGVHcmVlbik7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIGdsOjpUZXh0dXJlOjpESVJUWV9CSVRfU1dJWlpMRV9CTFVFOgorICAg
ICAgICAgICAgICAgIHN5bmNUZXh0dXJlU3RhdGVTd2l6emxlKG1GdW5jdGlvbnMsIEdMX1RFWFRV
UkVfU1dJWlpMRV9CLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1T
dGF0ZS5nZXRTd2l6emxlU3RhdGUoKS5zd2l6emxlQmx1ZSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIGdsOjpUZXh0dXJlOjpESVJUWV9CSVRfU1dJWlpMRV9BTFBI
QToKKyAgICAgICAgICAgICAgICBzeW5jVGV4dHVyZVN0YXRlU3dpenpsZShtRnVuY3Rpb25zLCBH
TF9URVhUVVJFX1NXSVpaTEVfQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtU3RhdGUuZ2V0U3dpenpsZVN0YXRlKCkuc3dpenpsZUFscGhhKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlRleHR1cmU6OkRJUlRZX0JJVF9CQVNF
X0xFVkVMOgorICAgICAgICAgICAgICAgIG1GdW5jdGlvbnMtPnRleFBhcmFtZXRlcmkobVN0YXRl
Lm1UYXJnZXQsIEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1TdGF0ZS5nZXRFZmZlY3RpdmVCYXNlTGV2ZWwoKSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsOjpUZXh0dXJlOjpESVJUWV9C
SVRfTUFYX0xFVkVMOgorICAgICAgICAgICAgICAgIG1GdW5jdGlvbnMtPnRleFBhcmFtZXRlcmko
bVN0YXRlLm1UYXJnZXQsIEdMX1RFWFRVUkVfTUFYX0xFVkVMLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbVN0YXRlLmdldEVmZmVjdGl2ZU1heExldmVsKCkpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbDo6VGV4dHVyZTo6RElS
VFlfQklUX1VTQUdFOgorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBtTG9jYWxEaXJ0eUJpdHMucmVzZXQoKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIEFwcGx5VGV4dHVyZUZ1bmNUeXBlPgotc3RhdGljIGlubGluZSB2b2lkIFN5bmNU
ZXh0dXJlU3RhdGVTd2l6emxlKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBwbHlUZXh0dXJlRnVuY1R5cGUg
YXBwbHlUZXh0dXJlRnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBMZXZlbEluZm9HTCAmbGV2ZWxJbmZvLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpUZXh0dXJlU3RhdGUgJm5ld1N0YXRlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlU3Rh
dGUgJmN1clN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0ZXh0dXJlVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUKGdsOjpUZXh0dXJlU3RhdGU6OipzdGF0ZU1lbWJlcikpCitib29sIFRleHR1cmVH
TDo6aGFzQW55RGlydHlCaXQoKSBjb25zdAogeworICAgIHJldHVybiBtTG9jYWxEaXJ0eUJpdHMu
YW55KCk7Cit9CisKK3ZvaWQgVGV4dHVyZUdMOjpzeW5jVGV4dHVyZVN0YXRlU3dpenpsZShjb25z
dCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLCBHTGVudW0gbmFtZSwgR0xlbnVtIHZhbHVlKQorewor
ICAgIGNvbnN0IExldmVsSW5mb0dMICZsZXZlbEluZm8gPSBtTGV2ZWxJbmZvW21TdGF0ZS5nZXRF
ZmZlY3RpdmVCYXNlTGV2ZWwoKV07CisgICAgR0xlbnVtIHJlc3VsdFN3aXp6bGUgICAgICAgICA9
IHZhbHVlOwogICAgIGlmIChsZXZlbEluZm8ubHVtYVdvcmthcm91bmQuZW5hYmxlZCB8fCBsZXZl
bEluZm8uZGVwdGhTdGVuY2lsV29ya2Fyb3VuZCkKICAgICB7Ci0gICAgICAgIEdMZW51bSByZXN1
bHRTd2l6emxlID0gR0xfTk9ORTsKICAgICAgICAgaWYgKGxldmVsSW5mby5sdW1hV29ya2Fyb3Vu
ZC5lbmFibGVkKQogICAgICAgICB7CiAgICAgICAgICAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklB
QkxFKGxldmVsSW5mby5sdW1hV29ya2Fyb3VuZC53b3JrYXJvdW5kRm9ybWF0KTsKIAotICAgICAg
ICAgICAgc3dpdGNoIChuZXdTdGF0ZS4qc3RhdGVNZW1iZXIpCisgICAgICAgICAgICBzd2l0Y2gg
KHZhbHVlKQogICAgICAgICAgICAgewogICAgICAgICAgICAgY2FzZSBHTF9SRUQ6CiAgICAgICAg
ICAgICBjYXNlIEdMX0dSRUVOOgpAQCAtNjQ1LDcgKzk2NCw3IEBACiAgICAgICAgICAgICBjYXNl
IEdMX1pFUk86CiAgICAgICAgICAgICBjYXNlIEdMX09ORToKICAgICAgICAgICAgICAgICAvLyBE
b24ndCBtb2RpZnkgdGhlIHN3aXp6bGUgc3RhdGUgd2hlbiByZXF1ZXN0aW5nIFpFUk8gb3IgT05F
LgotICAgICAgICAgICAgICAgIHJlc3VsdFN3aXp6bGUgPSBuZXdTdGF0ZS4qc3RhdGVNZW1iZXI7
CisgICAgICAgICAgICAgICAgcmVzdWx0U3dpenpsZSA9IHZhbHVlOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogCiAgICAgICAgICAgICBkZWZhdWx0OgpAQCAtNjU1LDExICs5NzQsMTEgQEAKICAg
ICAgICAgfQogICAgICAgICBlbHNlIGlmIChsZXZlbEluZm8uZGVwdGhTdGVuY2lsV29ya2Fyb3Vu
ZCkKICAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChuZXdTdGF0ZS4qc3RhdGVNZW1iZXIp
CisgICAgICAgICAgICBzd2l0Y2ggKHZhbHVlKQogICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgIGNhc2UgR0xfUkVEOgogICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBtb2RpZnkgdGhl
IHN3aXp6bGUgc3RhdGUgd2hlbiByZXF1ZXN0aW5nIHRoZSByZWQgY2hhbm5lbC4KLSAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0U3dpenpsZSA9IG5ld1N0YXRlLipzdGF0ZU1lbWJlcjsKKyAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0U3dpenpsZSA9IHZhbHVlOwogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKIAogICAgICAgICAgICAgICAgIGNhc2UgR0xfR1JFRU46CkBAIC02NzYsNyArOTk1
LDcgQEAKICAgICAgICAgICAgICAgICBjYXNlIEdMX1pFUk86CiAgICAgICAgICAgICAgICAgY2Fz
ZSBHTF9PTkU6CiAgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IG1vZGlmeSB0aGUgc3dpenps
ZSBzdGF0ZSB3aGVuIHJlcXVlc3RpbmcgWkVSTyBvciBPTkUuCi0gICAgICAgICAgICAgICAgICAg
IHJlc3VsdFN3aXp6bGUgPSBuZXdTdGF0ZS4qc3RhdGVNZW1iZXI7CisgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdFN3aXp6bGUgPSB2YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAK
ICAgICAgICAgICAgICAgICBkZWZhdWx0OgpAQCAtNjg5LDU5ICsxMDA4LDI3IEBACiAgICAgICAg
ICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gQXBwbHkgdGhlIG5l
dyBzd2l6emxlIHN0YXRlIGlmIG5lZWRlZAotICAgICAgICBpZiAoY3VyU3RhdGUuKnN0YXRlTWVt
YmVyICE9IHJlc3VsdFN3aXp6bGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGFwcGx5VGV4dHVy
ZUZ1bmMoKTsKLSAgICAgICAgICAgIGN1clN0YXRlLipzdGF0ZU1lbWJlciA9IHJlc3VsdFN3aXp6
bGU7Ci0gICAgICAgICAgICBmdW5jdGlvbnMtPnRleFBhcmFtZXRlcmYodGV4dHVyZVR5cGUsIG5h
bWUsIHN0YXRpY19jYXN0PEdMZmxvYXQ+KHJlc3VsdFN3aXp6bGUpKTsKLSAgICAgICAgfQogICAg
IH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBTeW5jVGV4dHVyZVN0YXRlTWVtYmVyKGZ1bmN0
aW9ucywgYXBwbHlUZXh0dXJlRnVuYywgbmV3U3RhdGUsIGN1clN0YXRlLCB0ZXh0dXJlVHlwZSwg
bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZU1lbWJlcik7Ci0gICAg
fQorCisgICAgZnVuY3Rpb25zLT50ZXhQYXJhbWV0ZXJpKG1TdGF0ZS5tVGFyZ2V0LCBuYW1lLCBy
ZXN1bHRTd2l6emxlKTsKIH0KIAotdm9pZCBUZXh0dXJlR0w6OnN5bmNTdGF0ZShzaXplX3QgdGV4
dHVyZVVuaXQsIGNvbnN0IGdsOjpUZXh0dXJlU3RhdGUgJnRleHR1cmVTdGF0ZSkgY29uc3QKK3Zv
aWQgVGV4dHVyZUdMOjpzZXRMZXZlbEluZm8oc2l6ZV90IGxldmVsLCBzaXplX3QgbGV2ZWxDb3Vu
dCwgY29uc3QgTGV2ZWxJbmZvR0wgJmxldmVsSW5mbykKIHsKLSAgICAvLyBDYWxsYmFjayBsYW1k
YmEgdG8gYmluZCB0aGlzIHRleHR1cmUgb25seSBpZiBuZWVkZWQuCi0gICAgYm9vbCB0ZXh0dXJl
QXBwbGllZCAgID0gZmFsc2U7Ci0gICAgYXV0byBhcHBseVRleHR1cmVGdW5jID0gWyZdKCkKKyAg
ICBBU1NFUlQobGV2ZWxDb3VudCA+IDAgJiYgbGV2ZWwgKyBsZXZlbENvdW50IDwgbUxldmVsSW5m
by5zaXplKCkpOworCisgICAgR0x1aW50IGJhc2VMZXZlbCAgICAgICAgICAgICAgPSBtU3RhdGUu
Z2V0RWZmZWN0aXZlQmFzZUxldmVsKCk7CisgICAgYm9vbCBuZWVkc1Jlc3luYyAgICAgICAgICAg
ICAgPSBsZXZlbCA8PSBiYXNlTGV2ZWwgJiYgbGV2ZWwgKyBsZXZlbENvdW50ID49IGJhc2VMZXZl
bCAmJgorICAgICAgICAgICAgICAgICAgICAgICAobGV2ZWxJbmZvLmRlcHRoU3RlbmNpbFdvcmth
cm91bmQgfHwgbGV2ZWxJbmZvLmx1bWFXb3JrYXJvdW5kLmVuYWJsZWQpOworICAgIGlmIChuZWVk
c1Jlc3luYykKICAgICB7Ci0gICAgICAgIGlmICghdGV4dHVyZUFwcGxpZWQpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIG1TdGF0ZU1hbmFnZXItPmFjdGl2ZVRleHR1cmUodGV4dHVyZVVuaXQpOwot
ICAgICAgICAgICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUobVRleHR1cmVUeXBlLCBtVGV4
dHVyZUlEKTsKLSAgICAgICAgICAgIHRleHR1cmVBcHBsaWVkID0gdHJ1ZTsKLSAgICAgICAgfQot
ICAgIH07CisgICAgICAgIG1Mb2NhbERpcnR5Qml0cyB8PSBHZXRMZXZlbFdvcmthcm91bmREaXJ0
eUJpdHMoKTsKKyAgICB9CiAKLSAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCi0KLSAgICAvLyBTeW5j
IHRleHR1cmUgc3RhdGUKLSAgICBTeW5jVGV4dHVyZVN0YXRlTWVtYmVyKG1GdW5jdGlvbnMsIGFw
cGx5VGV4dHVyZUZ1bmMsIHRleHR1cmVTdGF0ZSwgbUFwcGxpZWRUZXh0dXJlU3RhdGUsIG1UZXh0
dXJlVHlwZSwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAmZ2w6OlRleHR1cmVTdGF0ZTo6YmFzZUxl
dmVsKTsKLSAgICBTeW5jVGV4dHVyZVN0YXRlTWVtYmVyKG1GdW5jdGlvbnMsIGFwcGx5VGV4dHVy
ZUZ1bmMsIHRleHR1cmVTdGF0ZSwgbUFwcGxpZWRUZXh0dXJlU3RhdGUsIG1UZXh0dXJlVHlwZSwg
R0xfVEVYVFVSRV9NQVhfTEVWRUwsICZnbDo6VGV4dHVyZVN0YXRlOjptYXhMZXZlbCk7Ci0KLSAg
ICBjb25zdCBMZXZlbEluZm9HTCAmbGV2ZWxJbmZvID0gbUxldmVsSW5mb1t0ZXh0dXJlU3RhdGUu
YmFzZUxldmVsXTsKLSAgICBTeW5jVGV4dHVyZVN0YXRlU3dpenpsZShtRnVuY3Rpb25zLCBhcHBs
eVRleHR1cmVGdW5jLCBsZXZlbEluZm8sIHRleHR1cmVTdGF0ZSwgbUFwcGxpZWRUZXh0dXJlU3Rh
dGUsIG1UZXh0dXJlVHlwZSwgR0xfVEVYVFVSRV9TV0laWkxFX1IsICZnbDo6VGV4dHVyZVN0YXRl
Ojpzd2l6emxlUmVkKTsKLSAgICBTeW5jVGV4dHVyZVN0YXRlU3dpenpsZShtRnVuY3Rpb25zLCBh
cHBseVRleHR1cmVGdW5jLCBsZXZlbEluZm8sIHRleHR1cmVTdGF0ZSwgbUFwcGxpZWRUZXh0dXJl
U3RhdGUsIG1UZXh0dXJlVHlwZSwgR0xfVEVYVFVSRV9TV0laWkxFX0csICZnbDo6VGV4dHVyZVN0
YXRlOjpzd2l6emxlR3JlZW4pOwotICAgIFN5bmNUZXh0dXJlU3RhdGVTd2l6emxlKG1GdW5jdGlv
bnMsIGFwcGx5VGV4dHVyZUZ1bmMsIGxldmVsSW5mbywgdGV4dHVyZVN0YXRlLCBtQXBwbGllZFRl
eHR1cmVTdGF0ZSwgbVRleHR1cmVUeXBlLCBHTF9URVhUVVJFX1NXSVpaTEVfQiwgJmdsOjpUZXh0
dXJlU3RhdGU6OnN3aXp6bGVCbHVlKTsKLSAgICBTeW5jVGV4dHVyZVN0YXRlU3dpenpsZShtRnVu
Y3Rpb25zLCBhcHBseVRleHR1cmVGdW5jLCBsZXZlbEluZm8sIHRleHR1cmVTdGF0ZSwgbUFwcGxp
ZWRUZXh0dXJlU3RhdGUsIG1UZXh0dXJlVHlwZSwgR0xfVEVYVFVSRV9TV0laWkxFX0EsICZnbDo6
VGV4dHVyZVN0YXRlOjpzd2l6emxlQWxwaGEpOwotCi0gICAgLy8gU3luYyBzYW1wbGVyIHN0YXRl
Ci0gICAgU3luY1NhbXBsZXJTdGF0ZU1lbWJlcihtRnVuY3Rpb25zLCBhcHBseVRleHR1cmVGdW5j
LCB0ZXh0dXJlU3RhdGUuc2FtcGxlclN0YXRlLCBtQXBwbGllZFRleHR1cmVTdGF0ZS5zYW1wbGVy
U3RhdGUsIG1UZXh0dXJlVHlwZSwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCAmZ2w6OlNhbXBsZXJT
dGF0ZTo6bWluRmlsdGVyKTsKLSAgICBTeW5jU2FtcGxlclN0YXRlTWVtYmVyKG1GdW5jdGlvbnMs
IGFwcGx5VGV4dHVyZUZ1bmMsIHRleHR1cmVTdGF0ZS5zYW1wbGVyU3RhdGUsIG1BcHBsaWVkVGV4
dHVyZVN0YXRlLnNhbXBsZXJTdGF0ZSwgbVRleHR1cmVUeXBlLCBHTF9URVhUVVJFX01BR19GSUxU
RVIsICZnbDo6U2FtcGxlclN0YXRlOjptYWdGaWx0ZXIpOwotICAgIFN5bmNTYW1wbGVyU3RhdGVN
ZW1iZXIobUZ1bmN0aW9ucywgYXBwbHlUZXh0dXJlRnVuYywgdGV4dHVyZVN0YXRlLnNhbXBsZXJT
dGF0ZSwgbUFwcGxpZWRUZXh0dXJlU3RhdGUuc2FtcGxlclN0YXRlLCBtVGV4dHVyZVR5cGUsIEdM
X1RFWFRVUkVfV1JBUF9TLCAmZ2w6OlNhbXBsZXJTdGF0ZTo6d3JhcFMpOwotICAgIFN5bmNTYW1w
bGVyU3RhdGVNZW1iZXIobUZ1bmN0aW9ucywgYXBwbHlUZXh0dXJlRnVuYywgdGV4dHVyZVN0YXRl
LnNhbXBsZXJTdGF0ZSwgbUFwcGxpZWRUZXh0dXJlU3RhdGUuc2FtcGxlclN0YXRlLCBtVGV4dHVy
ZVR5cGUsIEdMX1RFWFRVUkVfV1JBUF9ULCAmZ2w6OlNhbXBsZXJTdGF0ZTo6d3JhcFQpOwotICAg
IFN5bmNTYW1wbGVyU3RhdGVNZW1iZXIobUZ1bmN0aW9ucywgYXBwbHlUZXh0dXJlRnVuYywgdGV4
dHVyZVN0YXRlLnNhbXBsZXJTdGF0ZSwgbUFwcGxpZWRUZXh0dXJlU3RhdGUuc2FtcGxlclN0YXRl
LCBtVGV4dHVyZVR5cGUsIEdMX1RFWFRVUkVfV1JBUF9SLCAmZ2w6OlNhbXBsZXJTdGF0ZTo6d3Jh
cFIpOwotICAgIFN5bmNTYW1wbGVyU3RhdGVNZW1iZXIobUZ1bmN0aW9ucywgYXBwbHlUZXh0dXJl
RnVuYywgdGV4dHVyZVN0YXRlLnNhbXBsZXJTdGF0ZSwgbUFwcGxpZWRUZXh0dXJlU3RhdGUuc2Ft
cGxlclN0YXRlLCBtVGV4dHVyZVR5cGUsIEdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhULCAm
Z2w6OlNhbXBsZXJTdGF0ZTo6bWF4QW5pc290cm9weSk7Ci0gICAgU3luY1NhbXBsZXJTdGF0ZU1l
bWJlcihtRnVuY3Rpb25zLCBhcHBseVRleHR1cmVGdW5jLCB0ZXh0dXJlU3RhdGUuc2FtcGxlclN0
YXRlLCBtQXBwbGllZFRleHR1cmVTdGF0ZS5zYW1wbGVyU3RhdGUsIG1UZXh0dXJlVHlwZSwgR0xf
VEVYVFVSRV9NSU5fTE9ELCAmZ2w6OlNhbXBsZXJTdGF0ZTo6bWluTG9kKTsKLSAgICBTeW5jU2Ft
cGxlclN0YXRlTWVtYmVyKG1GdW5jdGlvbnMsIGFwcGx5VGV4dHVyZUZ1bmMsIHRleHR1cmVTdGF0
ZS5zYW1wbGVyU3RhdGUsIG1BcHBsaWVkVGV4dHVyZVN0YXRlLnNhbXBsZXJTdGF0ZSwgbVRleHR1
cmVUeXBlLCBHTF9URVhUVVJFX01BWF9MT0QsICZnbDo6U2FtcGxlclN0YXRlOjptYXhMb2QpOwot
ICAgIFN5bmNTYW1wbGVyU3RhdGVNZW1iZXIobUZ1bmN0aW9ucywgYXBwbHlUZXh0dXJlRnVuYywg
dGV4dHVyZVN0YXRlLnNhbXBsZXJTdGF0ZSwgbUFwcGxpZWRUZXh0dXJlU3RhdGUuc2FtcGxlclN0
YXRlLCBtVGV4dHVyZVR5cGUsIEdMX1RFWFRVUkVfQ09NUEFSRV9NT0RFLCAmZ2w6OlNhbXBsZXJT
dGF0ZTo6Y29tcGFyZU1vZGUpOwotICAgIFN5bmNTYW1wbGVyU3RhdGVNZW1iZXIobUZ1bmN0aW9u
cywgYXBwbHlUZXh0dXJlRnVuYywgdGV4dHVyZVN0YXRlLnNhbXBsZXJTdGF0ZSwgbUFwcGxpZWRU
ZXh0dXJlU3RhdGUuc2FtcGxlclN0YXRlLCBtVGV4dHVyZVR5cGUsIEdMX1RFWFRVUkVfQ09NUEFS
RV9GVU5DLCAmZ2w6OlNhbXBsZXJTdGF0ZTo6Y29tcGFyZUZ1bmMpOwotICAgIC8vIGNsYW5nLWZv
cm1hdCBvbgorICAgIGZvciAoc2l6ZV90IGkgPSBsZXZlbDsgaSA8IGxldmVsICsgbGV2ZWxDb3Vu
dDsgaSsrKQorICAgIHsKKyAgICAgICAgbUxldmVsSW5mb1tpXSA9IGxldmVsSW5mbzsKKyAgICB9
CiB9CiAKIEdMdWludCBUZXh0dXJlR0w6OmdldFRleHR1cmVJRCgpIGNvbnN0CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvVGV4dHVyZUdMLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL1RleHR1cmVHTC5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvVGV4dHVyZUdMLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTExLDYgKzExLDcgQEAKIAogI2luY2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9UZXh0dXJlSW1wbC5oIgorI2luY2x1ZGUgImxp
YkFOR0xFL1RleHR1cmUuaCIKIAogbmFtZXNwYWNlIHJ4CiB7CkBAIC01MSw3ICs1Miw3IEBACiBj
bGFzcyBUZXh0dXJlR0wgOiBwdWJsaWMgVGV4dHVyZUltcGwKIHsKICAgcHVibGljOgotICAgIFRl
eHR1cmVHTChHTGVudW0gdHlwZSwKKyAgICBUZXh0dXJlR0woY29uc3QgZ2w6OlRleHR1cmVTdGF0
ZSAmc3RhdGUsCiAgICAgICAgICAgICAgIGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCiAg
ICAgICAgICAgICAgIGNvbnN0IFdvcmthcm91bmRzR0wgJndvcmthcm91bmRzLAogICAgICAgICAg
ICAgICBTdGF0ZU1hbmFnZXJHTCAqc3RhdGVNYW5hZ2VyLApAQCAtNTgsOCArNTksNiBAQAogICAg
ICAgICAgICAgICBCbGl0R0wgKmJsaXR0ZXIpOwogICAgIH5UZXh0dXJlR0woKSBvdmVycmlkZTsK
IAotICAgIHZvaWQgc2V0VXNhZ2UoR0xlbnVtIHVzYWdlKSBvdmVycmlkZTsKLQogICAgIGdsOjpF
cnJvciBzZXRJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIEdMZW51bSBpbnRlcm5h
bEZvcm1hdCwgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0
eXBlLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAm
dW5wYWNrLCBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOwogICAgIGdsOjpFcnJvciBz
ZXRTdWJJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0IGdsOjpCb3ggJmFy
ZWEsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLApAQCAtNzcsMjUgKzc2LDU4IEBACiAKICAg
ICBnbDo6RXJyb3Igc2V0U3RvcmFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWxzLCBHTGVu
dW0gaW50ZXJuYWxGb3JtYXQsIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplKSBvdmVycmlkZTsKIAot
ICAgIGdsOjpFcnJvciBnZW5lcmF0ZU1pcG1hcHMoY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmdGV4
dHVyZVN0YXRlKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3Igc2V0SW1hZ2VFeHRlcm5hbChHTGVu
dW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3RyZWFtICpz
dHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpTdHJlYW06
OkdMVGV4dHVyZURlc2NyaXB0aW9uICZkZXNjKSBvdmVycmlkZTsKIAorICAgIGdsOjpFcnJvciBn
ZW5lcmF0ZU1pcG1hcCgpIG92ZXJyaWRlOworCiAgICAgdm9pZCBiaW5kVGV4SW1hZ2UoZWdsOjpT
dXJmYWNlICpzdXJmYWNlKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbGVhc2VUZXhJbWFnZSgpIG92
ZXJyaWRlOwogCiAgICAgZ2w6OkVycm9yIHNldEVHTEltYWdlVGFyZ2V0KEdMZW51bSB0YXJnZXQs
IGVnbDo6SW1hZ2UgKmltYWdlKSBvdmVycmlkZTsKIAotICAgIHZvaWQgc3luY1N0YXRlKHNpemVf
dCB0ZXh0dXJlVW5pdCwgY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmdGV4dHVyZVN0YXRlKSBjb25z
dDsKICAgICBHTHVpbnQgZ2V0VGV4dHVyZUlEKCkgY29uc3Q7CiAKLSAgICBnbDo6RXJyb3IgZ2V0
QXR0YWNobWVudFJlbmRlclRhcmdldChjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50OjpU
YXJnZXQgJnRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQgKipydE91dCkgb3ZlcnJpZGUKLSAgICB7
Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIk5vdCBzdXBwb3J0
ZWQgb24gT3BlbkdMIik7Ci0gICAgfQorICAgIHZvaWQgc2V0QmFzZUxldmVsKEdMdWludCkgb3Zl
cnJpZGUge30KIAorICAgIHZvaWQgc3luY1N0YXRlKGNvbnN0IGdsOjpUZXh0dXJlOjpEaXJ0eUJp
dHMgJmRpcnR5Qml0cykgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNBbnlEaXJ0eUJpdCgpIGNvbnN0
OworCiAgIHByaXZhdGU6Ci0gICAgR0xlbnVtIG1UZXh0dXJlVHlwZTsKKyAgICB2b2lkIHNldElt
YWdlSGVscGVyKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
bGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVs
cyk7CisgICAgdm9pZCByZXNlcnZlVGV4SW1hZ2VUb0JlRmlsbGVkKEdMZW51bSB0YXJnZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUpOworICAgIGdsOjpFcnJvciBz
ZXRTdWJJbWFnZVJvd0J5Um93V29ya2Fyb3VuZChHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmFyZWEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpOwogCisgICAgZ2w6OkVycm9yIHNl
dFN1YkltYWdlUGFkZGluZ1dvcmthcm91bmQoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmYXJlYSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVu
cGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKTsKKworICAgIHZvaWQgc3luY1RleHR1cmVTdGF0
ZVN3aXp6bGUoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywgR0xlbnVtIG5hbWUsIEdMZW51
bSB2YWx1ZSk7CisKKyAgICB2b2lkIHNldExldmVsSW5mbyhzaXplX3QgbGV2ZWwsIHNpemVfdCBs
ZXZlbENvdW50LCBjb25zdCBMZXZlbEluZm9HTCAmbGV2ZWxJbmZvKTsKKwogICAgIGNvbnN0IEZ1
bmN0aW9uc0dMICptRnVuY3Rpb25zOwogICAgIGNvbnN0IFdvcmthcm91bmRzR0wgJm1Xb3JrYXJv
dW5kczsKICAgICBTdGF0ZU1hbmFnZXJHTCAqbVN0YXRlTWFuYWdlcjsKQEAgLTEwMiw2ICsxMzQs
NyBAQAogICAgIEJsaXRHTCAqbUJsaXR0ZXI7CiAKICAgICBzdGQ6OnZlY3RvcjxMZXZlbEluZm9H
TD4gbUxldmVsSW5mbzsKKyAgICBnbDo6VGV4dHVyZTo6RGlydHlCaXRzIG1Mb2NhbERpcnR5Qml0
czsKIAogICAgIG11dGFibGUgZ2w6OlRleHR1cmVTdGF0ZSBtQXBwbGllZFRleHR1cmVTdGF0ZTsK
ICAgICBHTHVpbnQgbVRleHR1cmVJRDsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9UcmFuc2Zvcm1GZWVkYmFja0dMLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvVHJh
bnNmb3JtRmVlZGJhY2tHTC5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9UcmFuc2Zvcm1GZWVkYmFja0dMLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOSw3ICs5LDcgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9nbC9UcmFuc2Zvcm1GZWVkYmFja0dMLmgiCiAKICNpbmNsdWRlICJjb21tb24vZGVidWcu
aCIKLSNpbmNsdWRlICJsaWJBTkdMRS9EYXRhLmgiCisjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4
dFN0YXRlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvQnVmZmVyR0wuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9GdW5jdGlvbnNHTC5oIgogI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmgiCkBAIC0xNywxNiArMTcsMTUgQEAK
IG5hbWVzcGFjZSByeAogewogCi1UcmFuc2Zvcm1GZWVkYmFja0dMOjpUcmFuc2Zvcm1GZWVkYmFj
a0dMKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFN0YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBtYXhUcmFuc2Zvcm1GZWVk
YmFja0J1ZmZlckJpbmRpbmdzKQotICAgIDogVHJhbnNmb3JtRmVlZGJhY2tJbXBsKCksCitUcmFu
c2Zvcm1GZWVkYmFja0dMOjpUcmFuc2Zvcm1GZWVkYmFja0dMKGNvbnN0IGdsOjpUcmFuc2Zvcm1G
ZWVkYmFja1N0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU3RhdGVNYW5hZ2VyR0wgKnN0YXRlTWFuYWdlcikKKyAgICA6
IFRyYW5zZm9ybUZlZWRiYWNrSW1wbChzdGF0ZSksCiAgICAgICBtRnVuY3Rpb25zKGZ1bmN0aW9u
cyksCiAgICAgICBtU3RhdGVNYW5hZ2VyKHN0YXRlTWFuYWdlciksCiAgICAgICBtVHJhbnNmb3Jt
RmVlZGJhY2tJRCgwKSwKICAgICAgIG1Jc0FjdGl2ZShmYWxzZSksCi0gICAgICBtSXNQYXVzZWQo
ZmFsc2UpLAotICAgICAgbUN1cnJlbnRJbmRleGVkQnVmZmVycyhtYXhUcmFuc2Zvcm1GZWVkYmFj
a0J1ZmZlckJpbmRpbmdzKQorICAgICAgbUlzUGF1c2VkKGZhbHNlKQogewogICAgIG1GdW5jdGlv
bnMtPmdlblRyYW5zZm9ybUZlZWRiYWNrcygxLCAmbVRyYW5zZm9ybUZlZWRiYWNrSUQpOwogfQpA
QCAtMzUsMTEgKzM0LDYgQEAKIHsKICAgICBtU3RhdGVNYW5hZ2VyLT5kZWxldGVUcmFuc2Zvcm1G
ZWVkYmFjayhtVHJhbnNmb3JtRmVlZGJhY2tJRCk7CiAgICAgbVRyYW5zZm9ybUZlZWRiYWNrSUQg
PSAwOwotCi0gICAgZm9yIChhdXRvICZidWZmZXJCaW5kaW5nIDogbUN1cnJlbnRJbmRleGVkQnVm
ZmVycykKLSAgICB7Ci0gICAgICAgIGJ1ZmZlckJpbmRpbmcuc2V0KG51bGxwdHIpOwotICAgIH0K
IH0KIAogdm9pZCBUcmFuc2Zvcm1GZWVkYmFja0dMOjpiZWdpbihHTGVudW0gcHJpbWl0aXZlTW9k
ZSkKQEAgLTcwLDMxICs2NCwyNiBAQAogewogICAgIC8vIERpcmVjdGx5IGJpbmQgYnVmZmVyIChu
b3QgdGhyb3VnaCB0aGUgU3RhdGVNYW5hZ2VyIG1ldGhvZHMpIGJlY2F1c2UgdGhlIGJ1ZmZlciBi
aW5kaW5ncyBhcmUKICAgICAvLyB0cmFja2VkIHBlciB0cmFuc2Zvcm0gZmVlZGJhY2sgb2JqZWN0
Ci0gICAgaWYgKGJpbmRpbmcgIT0gbUN1cnJlbnRJbmRleGVkQnVmZmVyc1tpbmRleF0pCisgICAg
bVN0YXRlTWFuYWdlci0+YmluZFRyYW5zZm9ybUZlZWRiYWNrKEdMX1RSQU5TRk9STV9GRUVEQkFD
SywgbVRyYW5zZm9ybUZlZWRiYWNrSUQpOworICAgIGlmIChiaW5kaW5nLmdldCgpICE9IG51bGxw
dHIpCiAgICAgewotICAgICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVHJhbnNmb3JtRmVlZGJhY2so
R0xfVFJBTlNGT1JNX0ZFRURCQUNLLCBtVHJhbnNmb3JtRmVlZGJhY2tJRCk7Ci0gICAgICAgIGlm
IChiaW5kaW5nLmdldCgpICE9IG51bGxwdHIpCisgICAgICAgIGNvbnN0IEJ1ZmZlckdMICpidWZm
ZXJHTCA9IEdldEltcGxBczxCdWZmZXJHTD4oYmluZGluZy5nZXQoKSk7CisgICAgICAgIGlmIChi
aW5kaW5nLmdldFNpemUoKSAhPSAwKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBCdWZm
ZXJHTCAqYnVmZmVyR0wgPSBHZXRJbXBsQXM8QnVmZmVyR0w+KGJpbmRpbmcuZ2V0KCkpOwotICAg
ICAgICAgICAgaWYgKGJpbmRpbmcuZ2V0U2l6ZSgpICE9IDApCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgbUZ1bmN0aW9ucy0+YmluZEJ1ZmZlclJhbmdlKEdMX1RSQU5TRk9STV9GRUVE
QkFDS19CVUZGRVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PEdMdWludD4oaW5kZXgpLCBidWZmZXJHTC0+Z2V0QnVmZmVySUQoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZGluZy5nZXRPZmZz
ZXQoKSwgYmluZGluZy5nZXRTaXplKCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1GdW5jdGlvbnMtPmJpbmRCdWZmZXJC
YXNlKEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIHN0YXRpY19jYXN0PEdMdWludD4oaW5k
ZXgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlckdM
LT5nZXRCdWZmZXJJRCgpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1GdW5jdGlvbnMt
PmJpbmRCdWZmZXJSYW5nZShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBzdGF0aWNfY2Fz
dDxHTHVpbnQ+KGluZGV4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBidWZmZXJHTC0+Z2V0QnVmZmVySUQoKSwgYmluZGluZy5nZXRPZmZzZXQoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kaW5nLmdldFNpemUoKSk7CiAgICAg
ICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBtRnVuY3Rpb25zLT5i
aW5kQnVmZmVyQmFzZShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBzdGF0aWNfY2FzdDxH
THVpbnQ+KGluZGV4KSwgMCk7CisgICAgICAgICAgICBtRnVuY3Rpb25zLT5iaW5kQnVmZmVyQmFz
ZShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBzdGF0aWNfY2FzdDxHTHVpbnQ+KGluZGV4
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlckdMLT5nZXRC
dWZmZXJJRCgpKTsKICAgICAgICAgfQotCi0gICAgICAgIG1DdXJyZW50SW5kZXhlZEJ1ZmZlcnNb
aW5kZXhdID0gYmluZGluZzsKICAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbUZ1bmN0
aW9ucy0+YmluZEJ1ZmZlckJhc2UoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgc3RhdGlj
X2Nhc3Q8R0x1aW50PihpbmRleCksIDApOworICAgIH0KIH0KIAogR0x1aW50IFRyYW5zZm9ybUZl
ZWRiYWNrR0w6OmdldFRyYW5zZm9ybUZlZWRiYWNrSUQoKSBjb25zdApJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1RyYW5zZm9ybUZlZWRiYWNr
R0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvVHJhbnNmb3JtRmVlZGJhY2tHTC5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvVHJhbnNmb3Jt
RmVlZGJhY2tHTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw5ICsyMCw5IEBACiBjbGFzcyBUcmFu
c2Zvcm1GZWVkYmFja0dMIDogcHVibGljIFRyYW5zZm9ybUZlZWRiYWNrSW1wbAogewogICBwdWJs
aWM6Ci0gICAgVHJhbnNmb3JtRmVlZGJhY2tHTChjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25z
LAotICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGVNYW5hZ2VyR0wgKnN0YXRlTWFuYWdlciwK
LSAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBtYXhUcmFuc2Zvcm1GZWVkYmFja0J1ZmZl
ckJpbmRpbmdzKTsKKyAgICBUcmFuc2Zvcm1GZWVkYmFja0dMKGNvbnN0IGdsOjpUcmFuc2Zvcm1G
ZWVkYmFja1N0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZ1bmN0
aW9uc0dMICpmdW5jdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZU1hbmFnZXJH
TCAqc3RhdGVNYW5hZ2VyKTsKICAgICB+VHJhbnNmb3JtRmVlZGJhY2tHTCgpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCBiZWdpbihHTGVudW0gcHJpbWl0aXZlTW9kZSkgb3ZlcnJpZGU7CkBAIC00Niw4
ICs0Niw2IEBACiAKICAgICBtdXRhYmxlIGJvb2wgbUlzQWN0aXZlOwogICAgIG11dGFibGUgYm9v
bCBtSXNQYXVzZWQ7Ci0KLSAgICBzdGQ6OnZlY3RvcjxPZmZzZXRCaW5kaW5nUG9pbnRlcjxnbDo6
QnVmZmVyPj4gbUN1cnJlbnRJbmRleGVkQnVmZmVyczsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9WZXJ0ZXhBcnJheUdMLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvVmVydGV4QXJyYXlHTC5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9WZXJ0ZXhBcnJheUdMLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgImxpYkFOR0xFL2Zv
cm1hdHV0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvQnVmZmVyR0wuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9GdW5jdGlvbnNHTC5oIgorI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2dsL3JlbmRlcmVyZ2xfdXRpbHMuaCIKICNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5oIgogCiB1c2luZyBuYW1lc3BhY2UgZ2w7
CkBAIC0zMiwxMCArMzMsMTAgQEAKIAogfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi1WZXJ0
ZXhBcnJheUdMOjpWZXJ0ZXhBcnJheUdMKGNvbnN0IFZlcnRleEFycmF5OjpEYXRhICZkYXRhLAor
VmVydGV4QXJyYXlHTDo6VmVydGV4QXJyYXlHTChjb25zdCBWZXJ0ZXhBcnJheVN0YXRlICZzdGF0
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0
aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGVNYW5hZ2VyR0wgKnN0YXRl
TWFuYWdlcikKLSAgICA6IFZlcnRleEFycmF5SW1wbChkYXRhKSwKKyAgICA6IFZlcnRleEFycmF5
SW1wbChzdGF0ZSksCiAgICAgICBtRnVuY3Rpb25zKGZ1bmN0aW9ucyksCiAgICAgICBtU3RhdGVN
YW5hZ2VyKHN0YXRlTWFuYWdlciksCiAgICAgICBtVmVydGV4QXJyYXlJRCgwKSwKQEAgLTI4OCw3
ICsyODksOCBAQAogICAgIHNpemVfdCB1bm1hcFJldHJ5QXR0ZW1wdHMgPSA1OwogICAgIHdoaWxl
ICh1bm1hcFJlc3VsdCAhPSBHTF9UUlVFICYmIC0tdW5tYXBSZXRyeUF0dGVtcHRzID4gMCkKICAg
ICB7Ci0gICAgICAgIHVpbnQ4X3QgKmJ1ZmZlclBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPihtRnVuY3Rpb25zLT5tYXBCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBHTF9XUklURV9P
TkxZKSk7CisgICAgICAgIHVpbnQ4X3QgKmJ1ZmZlclBvaW50ZXIgPSBNYXBCdWZmZXJSYW5nZVdp
dGhGYWxsYmFjayhtRnVuY3Rpb25zLCBHTF9BUlJBWV9CVUZGRVIsIDAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZEJ1
ZmZlclNpemUsIEdMX01BUF9XUklURV9CSVQpOwogICAgICAgICBzaXplX3QgY3VyQnVmZmVyT2Zm
c2V0ID0gYnVmZmVyRW1wdHlTcGFjZTsKIAogICAgICAgICBjb25zdCBhdXRvICZhdHRyaWJzID0g
bURhdGEuZ2V0VmVydGV4QXR0cmlidXRlcygpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1ZlcnRleEFycmF5R0wuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvVmVydGV4
QXJyYXlHTC5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvVmVydGV4QXJyYXlHTC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMCw3ICsyMCw5IEBACiBjbGFzcyBWZXJ0ZXhBcnJheUdMIDogcHVibGljIFZlcnRleEFycmF5
SW1wbAogewogICBwdWJsaWM6Ci0gICAgVmVydGV4QXJyYXlHTChjb25zdCBnbDo6VmVydGV4QXJy
YXk6OkRhdGEgJmRhdGEsIGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIFN0YXRlTWFuYWdl
ckdMICpzdGF0ZU1hbmFnZXIpOworICAgIFZlcnRleEFycmF5R0woY29uc3QgZ2w6OlZlcnRleEFy
cmF5U3RhdGUgJmRhdGEsCisgICAgICAgICAgICAgICAgICBjb25zdCBGdW5jdGlvbnNHTCAqZnVu
Y3Rpb25zLAorICAgICAgICAgICAgICAgICAgU3RhdGVNYW5hZ2VyR0wgKnN0YXRlTWFuYWdlcik7
CiAgICAgflZlcnRleEFycmF5R0woKSBvdmVycmlkZTsKIAogICAgIGdsOjpFcnJvciBzeW5jRHJh
d0FycmF5c1N0YXRlKGNvbnN0IGdsOjpBdHRyaWJ1dGVzTWFzayAmYWN0aXZlQXR0cmlidXRlc01h
c2ssCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvV29ya2Fyb3VuZHNHTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Xb3JrYXJvdW5kc0dMLmgJKHJldmlzaW9uIDIwODAy
MSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9X
b3JrYXJvdW5kc0dMLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDcgKzIwLDEyIEBACiAgICAgICAg
ICAgZG9lc1NSR0JDbGVhcnNPbkxpbmVhckZyYW1lYnVmZmVyQXR0YWNobWVudHMoZmFsc2UpLAog
ICAgICAgICAgIGRvV2hpbGVHTFNMQ2F1c2VzR1BVSGFuZyhmYWxzZSksCiAgICAgICAgICAgZmlu
aXNoRG9lc05vdENhdXNlUXVlcmllc1RvQmVBdmFpbGFibGUoZmFsc2UpLAotICAgICAgICAgIGFs
d2F5c0NhbGxVc2VQcm9ncmFtQWZ0ZXJMaW5rKGZhbHNlKQorICAgICAgICAgIGFsd2F5c0NhbGxV
c2VQcm9ncmFtQWZ0ZXJMaW5rKGZhbHNlKSwKKyAgICAgICAgICB1bnBhY2tPdmVybGFwcGluZ1Jv
d3NTZXBhcmF0ZWx5VW5wYWNrQnVmZmVyKGZhbHNlKSwKKyAgICAgICAgICBlbXVsYXRlQWJzSW50
RnVuY3Rpb24oZmFsc2UpLAorICAgICAgICAgIGFkZEFuZFRydWVUb0xvb3BDb25kaXRpb24oZmFs
c2UpLAorICAgICAgICAgIGVtdWxhdGVJc25hbkZsb2F0KGZhbHNlKSwKKyAgICAgICAgICB1c2VV
bnVzZWRCbG9ja3NXaXRoU3RhbmRhcmRPclNoYXJlZExheW91dChmYWxzZSkKICAgICB7CiAgICAg
fQogCkBAIC02Myw2ICs2OCw0OSBAQAogICAgIC8vIHdvcmthcm91bmQgaW4gQ2hyb21pdW0gKGh0
dHA6Ly9jcmJ1Zy5jb20vMTEwMjYzKS4gSXQgaGFzIGJlZW4gc2hvd24gdGhhdCB0aGlzIHdvcmth
cm91bmQgaXMKICAgICAvLyBub3QgbmVjZXNzYXJ5IGZvciBNYWNPU1ggMTAuOSBhbmQgaGlnaGVy
IChodHRwOi8vY3JyZXYuY29tLzM5ZWI1MzViKS4KICAgICBib29sIGFsd2F5c0NhbGxVc2VQcm9n
cmFtQWZ0ZXJMaW5rOworCisgICAgLy8gSW4gdGhlIGNhc2Ugb2YgdW5wYWNraW5nIGZyb20gYSBw
aXhlbCB1bnBhY2sgYnVmZmVyLCB1bnBhY2sgb3ZlcmxhcHBpbmcgcm93cyByb3cgYnkgcm93Lgor
ICAgIGJvb2wgdW5wYWNrT3ZlcmxhcHBpbmdSb3dzU2VwYXJhdGVseVVucGFja0J1ZmZlcjsKKyAg
ICAvLyBJbiB0aGUgY2FzZSBvZiBwYWNraW5nIHRvIGEgcGl4ZWwgcGFjayBidWZmZXIsIHBhY2sg
b3ZlcmxhcHBpbmcgcm93cyByb3cgYnkgcm93LgorICAgIGJvb2wgcGFja092ZXJsYXBwaW5nUm93
c1NlcGFyYXRlbHlQYWNrQnVmZmVyOworCisgICAgLy8gRHVyaW5nIGluaXRpYWxpemF0aW9uLCBh
c3NpZ24gdGhlIGN1cnJlbnQgdmVydGV4IGF0dHJpYnV0ZXMgdG8gdGhlIHNwZWMtbWFuZGF0ZWQg
ZGVmYXVsdHMuCisgICAgYm9vbCBpbml0aWFsaXplQ3VycmVudFZlcnRleEF0dHJpYnV0ZXM7CisK
KyAgICAvLyBhYnMoaSkgd2hlcmUgaSBpcyBhbiBpbnRlZ2VyIHJldHVybnMgdW5leHBlY3RlZCBy
ZXN1bHQgb24gSW50ZWwgTWFjLgorICAgIC8vIEVtdWxhdGUgYWJzKGkpIHdpdGggaSAqIHNpZ24o
aSkuCisgICAgYm9vbCBlbXVsYXRlQWJzSW50RnVuY3Rpb247CisKKyAgICAvLyBPbiBJbnRlbCBN
YWMsIGNhbGN1bGF0aW9uIG9mIGxvb3AgY29uZGl0aW9ucyBpbiBmb3IgYW5kIHdoaWxlIGxvb3Ag
aGFzIGJ1Zy4KKyAgICAvLyBBZGQgIiYmIHRydWUiIHRvIHRoZSBlbmQgb2YgdGhlIGNvbmRpdGlv
biBleHByZXNzaW9uIHRvIHdvcmsgYXJvdW5kIHRoZSBidWcuCisgICAgYm9vbCBhZGRBbmRUcnVl
VG9Mb29wQ29uZGl0aW9uOworCisgICAgLy8gV2hlbiB1cGxvYWRpbmcgdGV4dHVyZXMgZnJvbSBh
biB1bnBhY2sgYnVmZmVyLCBzb21lIGRyaXZlcnMgY291bnQgYW4gZXh0cmEgcm93IHBhZGRpbmcg
d2hlbgorICAgIC8vIGNoZWNraW5nIGlmIHRoZSBwaXhlbCB1bnBhY2sgYnVmZmVyIGlzIGJpZyBl
bm91Z2guIFRyYWNraW5nIGJ1ZzogaHR0cDovL2FuZ2xlYnVnLmNvbS8xNTEyCisgICAgLy8gRm9y
IGV4YW1wbGUgY29uc2lkZXJpbmcgdGhlIHBpeGVsIGJ1ZmZlciBiZWxvdyB3aGVyZSBpbiBtZW1v
cnksIGVhY2ggcm93IGRhdGEgKEQpIG9mIHRoZQorICAgIC8vIHRleHR1cmUgaXMgZm9sbG93ZWQg
Ynkgc29tZSB1bnVzZWQgZGF0YSAodGhlIGRvdHMpOgorICAgIC8vICAgICArLS0tLS0tLSstLSsK
KyAgICAvLyAgICAgfERERERERER8Li58CisgICAgLy8gICAgIHxEREREREREfC4ufAorICAgIC8v
ICAgICB8RERERERERHwuLnwKKyAgICAvLyAgICAgfERERERERER8Li58CisgICAgLy8gICAgICst
LS0tLS0tQS0tQgorICAgIC8vIFRoZSBsYXN0IHBpeGVsIHJlYWQgd2lsbCBiZSBBLCBidXQgdGhl
IGRyaXZlciB3aWxsIHRoaW5rIGl0IGlzIEIsIGNhdXNpbmcgaXQgdG8gZ2VuZXJhdGUgYW4KKyAg
ICAvLyBlcnJvciB3aGVuIHRoZSBwaXhlbCBidWZmZXIgaXMganVzdCBiaWcgZW5vdWdoLgorICAg
IGJvb2wgdW5wYWNrTGFzdFJvd1NlcGFyYXRlbHlGb3JQYWRkaW5nSW5jbHVzaW9uOworCisgICAg
Ly8gRXF1aXZhbGVudCB3b3JrYXJvdW5kIHdoZW4gdXBsb2FkaW5nIGRhdGEgZnJvbSBhIHBpeGVs
IHBhY2sgYnVmZmVyLgorICAgIGJvb2wgcGFja0xhc3RSb3dTZXBhcmF0ZWx5Rm9yUGFkZGluZ0lu
Y2x1c2lvbjsKKworICAgIC8vIE9uIHNvbWUgSW50ZWwgZHJpdmVycywgdXNpbmcgaXNuYW4oKSBv
biBoaWdocCBmbG9hdCB3aWxsIGdldCB3cm9uZyBhbnN3ZXIuIFRvIHdvcmsgYXJvdW5kCisgICAg
Ly8gdGhpcyBidWcsIHdlIHVzZSBhbiBleHByZXNzaW9uIHRvIGVtdWxhdGUgZnVuY3Rpb24gaXNu
YW4oKS4KKyAgICAvLyBUcmFja2luZyBidWc6IGh0dHA6Ly9jcmJ1Zy5jb20vNjUwNTQ3CisgICAg
Ym9vbCBlbXVsYXRlSXNuYW5GbG9hdDsKKworICAgIC8vIE9uIE1hYyB3aXRoIE9wZW5HTCB2ZXJz
aW9uIDQuMSwgdW51c2VkIHN0ZDE0MCBvciBzaGFyZWQgdW5pZm9ybSBibG9ja3Mgd2lsbCBiZQor
ICAgIC8vIHRyZWF0ZWQgYXMgaW5hY3RpdmUgd2hpY2ggaXMgbm90IGNvbnNpc3RlbnQgd2l0aCBX
ZWJHTDIuMCBzcGVjLiBSZWZlcmVuY2UgYWxsIG1lbWJlcnMgaW4gYQorICAgIC8vIHVudXNlZCBz
dGQxNDAgb3Igc2hhcmVkIHVuaWZvcm0gYmxvY2sgYXQgdGhlIGJlZ2lubmluZyBvZiBtYWluIHRv
IHdvcmsgYXJvdW5kIGl0LgorICAgIGJvb2wgdXNlVW51c2VkQmxvY2tzV2l0aFN0YW5kYXJkT3JT
aGFyZWRMYXlvdXQ7CiB9OwogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0Rpc3BsYXlDR0wuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0Rpc3BsYXlD
R0wuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9EaXNwbGF5Q0dMLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDIxICsyNiwyNCBAQAogICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZShlZ2w6OkRpc3BsYXkgKmRp
c3BsYXkpIG92ZXJyaWRlOwogICAgIHZvaWQgdGVybWluYXRlKCkgb3ZlcnJpZGU7CiAKLSAgICBT
dXJmYWNlSW1wbCAqY3JlYXRlV2luZG93U3VyZmFjZShjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmln
dXJhdGlvbiwKKyAgICBTdXJmYWNlSW1wbCAqY3JlYXRlV2luZG93U3VyZmFjZShjb25zdCBlZ2w6
OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJp
YnMpIG92ZXJyaWRlOwotICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQYnVmZmVyU3VyZmFjZShjb25z
dCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKKyAgICBTdXJmYWNlSW1wbCAqY3JlYXRlUGJ1
ZmZlclN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlv
biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRy
aWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOwotICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQYnVm
ZmVyRnJvbUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKKyAg
ICBTdXJmYWNlSW1wbCAqY3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoY29uc3QgZWdsOjpT
dXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIHNoYXJl
SGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7Ci0gICAgU3VyZmFjZUlt
cGwgKmNyZWF0ZVBpeG1hcFN1cmZhY2UoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24s
CisgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBpeG1hcFN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNl
U3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5hdGl2ZVBpeG1hcFR5cGUgbmF0aXZlUGl4bWFwLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBv
dmVycmlkZTsKIAotICAgIGVnbDo6Q29uZmlnU2V0IGdlbmVyYXRlQ29uZmlncygpIGNvbnN0IG92
ZXJyaWRlOworICAgIGVnbDo6Q29uZmlnU2V0IGdlbmVyYXRlQ29uZmlncygpIG92ZXJyaWRlOwog
Ci0gICAgYm9vbCBpc0RldmljZUxvc3QoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHRlc3RE
ZXZpY2VMb3N0KCkgb3ZlcnJpZGU7CiAgICAgZWdsOjpFcnJvciByZXN0b3JlTG9zdERldmljZSgp
IG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvY2dsL0Rpc3BsYXlDR0wubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9EaXNwbGF5Q0dMLm1tCShy
ZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvY2dsL0Rpc3BsYXlDR0wubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwOSwyMiAr
MTA5LDI1IEBACiAgICAgU2FmZURlbGV0ZShtRnVuY3Rpb25zKTsKIH0KIAotU3VyZmFjZUltcGwg
KkRpc3BsYXlDR0w6OmNyZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgZWdsOjpDb25maWcgKmNvbmZp
Z3VyYXRpb24sCitTdXJmYWNlSW1wbCAqRGlzcGxheUNHTDo6Y3JlYXRlV2luZG93U3VyZmFjZShj
b25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2ZVdpbmRv
d1R5cGUgd2luZG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiB7Ci0gICAgcmV0dXJuIG5ldyBX
aW5kb3dTdXJmYWNlQ0dMKHRoaXMtPmdldFJlbmRlcmVyKCksIHdpbmRvdywgbUZ1bmN0aW9ucywg
bUNvbnRleHQpOworICAgIHJldHVybiBuZXcgV2luZG93U3VyZmFjZUNHTChzdGF0ZSwgdGhpcy0+
Z2V0UmVuZGVyZXIoKSwgd2luZG93LCBtRnVuY3Rpb25zLCBtQ29udGV4dCk7CiB9CiAKLVN1cmZh
Y2VJbXBsICpEaXNwbGF5Q0dMOjpjcmVhdGVQYnVmZmVyU3VyZmFjZShjb25zdCBlZ2w6OkNvbmZp
ZyAqY29uZmlndXJhdGlvbiwKK1N1cmZhY2VJbXBsICpEaXNwbGF5Q0dMOjpjcmVhdGVQYnVmZmVy
U3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3Vy
YXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiB7CiAgICAgRUdMaW50IHdpZHRoICA9IHN0
YXRpY19jYXN0PEVHTGludD4oYXR0cmlicy5nZXQoRUdMX1dJRFRILCAwKSk7CiAgICAgRUdMaW50
IGhlaWdodCA9IHN0YXRpY19jYXN0PEVHTGludD4oYXR0cmlicy5nZXQoRUdMX0hFSUdIVCwgMCkp
OwotICAgIHJldHVybiBuZXcgUGJ1ZmZlclN1cmZhY2VDR0wodGhpcy0+Z2V0UmVuZGVyZXIoKSwg
d2lkdGgsIGhlaWdodCwgbUZ1bmN0aW9ucyk7CisgICAgcmV0dXJuIG5ldyBQYnVmZmVyU3VyZmFj
ZUNHTChzdGF0ZSwgdGhpcy0+Z2V0UmVuZGVyZXIoKSwgd2lkdGgsIGhlaWdodCwgbUZ1bmN0aW9u
cyk7CiB9CiAKLVN1cmZhY2VJbXBsKiBEaXNwbGF5Q0dMOjpjcmVhdGVQYnVmZmVyRnJvbUNsaWVu
dEJ1ZmZlcihjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKK1N1cmZhY2VJbXBsICpE
aXNwbGF5Q0dMOjpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6OlN1cmZh
Y2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50
QnVmZmVyIHNoYXJlSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQogewpA
QCAtMTMyLDcgKzEzNSw4IEBACiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVN1cmZhY2VJbXBs
ICpEaXNwbGF5Q0dMOjpjcmVhdGVQaXhtYXBTdXJmYWNlKGNvbnN0IGVnbDo6Q29uZmlnICpjb25m
aWd1cmF0aW9uLAorU3VyZmFjZUltcGwgKkRpc3BsYXlDR0w6OmNyZWF0ZVBpeG1hcFN1cmZhY2Uo
Y29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYXRpdmVQaXhtYXBU
eXBlIG5hdGl2ZVBpeG1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQogewpAQCAtMTQ2LDcgKzE1
MCw3IEBACiAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9ESVNQTEFZKTsKIH0KIAotZWds
OjpDb25maWdTZXQgRGlzcGxheUNHTDo6Z2VuZXJhdGVDb25maWdzKCkgY29uc3QKK2VnbDo6Q29u
ZmlnU2V0IERpc3BsYXlDR0w6OmdlbmVyYXRlQ29uZmlncygpCiB7CiAgICAgLy8gVE9ETyhjd2Fs
bGV6KTogZ2VuZXJhdGUgbW9yZSBjb25maWcgcGVybXV0YXRpb25zCiAgICAgZWdsOjpDb25maWdT
ZXQgY29uZmlnczsKQEAgLTIxMCwxMiArMjE0LDYgQEAKICAgICByZXR1cm4gY29uZmlnczsKIH0K
IAotYm9vbCBEaXNwbGF5Q0dMOjppc0RldmljZUxvc3QoKSBjb25zdAotewotICAgIC8vIFRPRE8o
Y3dhbGxleikgaW52ZXN0aWdhdGUgaW1wbGVtZW50aW5nIHRoaXMKLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KIGJvb2wgRGlzcGxheUNHTDo6dGVzdERldmljZUxvc3QoKQogewogICAgIC8vIFRPRE8o
Y3dhbGxleikgaW52ZXN0aWdhdGUgaW1wbGVtZW50aW5nIHRoaXMKQEAgLTI0Nyw4ICsyNDUsNiBA
QAogCiB2b2lkIERpc3BsYXlDR0w6OmdlbmVyYXRlRXh0ZW5zaW9ucyhlZ2w6OkRpc3BsYXlFeHRl
bnNpb25zICpvdXRFeHRlbnNpb25zKSBjb25zdAogewotICAgIG91dEV4dGVuc2lvbnMtPmNyZWF0
ZUNvbnRleHQgPSB0cnVlOwotICAgIG91dEV4dGVuc2lvbnMtPmNyZWF0ZUNvbnRleHROb0Vycm9y
ID0gdHJ1ZTsKIH0KIAogdm9pZCBEaXNwbGF5Q0dMOjpnZW5lcmF0ZUNhcHMoZWdsOjpDYXBzICpv
dXRDYXBzKSBjb25zdApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL2NnbC9QYnVmZmVyU3VyZmFjZUNHTC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUGJ1ZmZlclN1
cmZhY2VDR0wuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9QYnVmZmVyU3VyZmFjZUNHTC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMiw3ICsyMiw4IEBACiBjbGFzcyBQYnVmZmVyU3VyZmFjZUNHTCA6IHB1Ymxp
YyBTdXJmYWNlR0wKIHsKICAgcHVibGljOgotICAgIFBidWZmZXJTdXJmYWNlQ0dMKFJlbmRlcmVy
R0wgKnJlbmRlcmVyLAorICAgIFBidWZmZXJTdXJmYWNlQ0dMKGNvbnN0IGVnbDo6U3VyZmFjZVN0
YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJlckdMICpyZW5kZXJlciwK
ICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAg
ICAgRUdMaW50IGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGdW5jdGlvbnNH
TCAqZnVuY3Rpb25zKTsKQEAgLTQ0LDcgKzQ1LDcgQEAKICAgICBFR0xpbnQgaXNQb3N0U3ViQnVm
ZmVyU3VwcG9ydGVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgRUdMaW50IGdldFN3YXBCZWhhdmlv
cigpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgRnJhbWVidWZmZXJJbXBsICpjcmVhdGVEZWZhdWx0
RnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEYXRhICZkYXRhKSBvdmVycmlkZTsK
KyAgICBGcmFtZWJ1ZmZlckltcGwgKmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6
RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUpIG92ZXJyaWRlOwogCiAgIHByaXZhdGU6CiAgICAgdW5z
aWduZWQgbVdpZHRoOwpAQCAtNTIsNyArNTMsNyBAQAogCiAgICAgY29uc3QgRnVuY3Rpb25zR0wg
Km1GdW5jdGlvbnM7CiAgICAgU3RhdGVNYW5hZ2VyR0wgKm1TdGF0ZU1hbmFnZXI7Ci0gICAgY29u
c3QgV29ya2Fyb3VuZHNHTCAmbVdvcmthcm91bmRzOworICAgIFJlbmRlcmVyR0wgKm1SZW5kZXJl
cjsKIAogICAgIEdMdWludCBtRnJhbWVidWZmZXI7CiAgICAgR0x1aW50IG1Db2xvclJlbmRlcmJ1
ZmZlcjsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC9jZ2wvUGJ1ZmZlclN1cmZhY2VDR0wubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9QYnVmZmVyU3VyZmFjZUNH
TC5tbQkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9QYnVmZmVyU3VyZmFjZUNHTC5tbQkod29ya2luZyBjb3B5
KQpAQCAtMTgsMTYgKzE4LDE3IEBACiBuYW1lc3BhY2UgcngKIHsKIAotUGJ1ZmZlclN1cmZhY2VD
R0w6OlBidWZmZXJTdXJmYWNlQ0dMKFJlbmRlcmVyR0wgKnJlbmRlcmVyLAorUGJ1ZmZlclN1cmZh
Y2VDR0w6OlBidWZmZXJTdXJmYWNlQ0dMKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJlckdMICpyZW5kZXJl
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgd2lkdGgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGhlaWdodCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rp
b25zKQotICAgIDogU3VyZmFjZUdMKHJlbmRlcmVyKSwKKyAgICA6IFN1cmZhY2VHTChzdGF0ZSwg
cmVuZGVyZXIpLAogICAgICAgbVdpZHRoKHdpZHRoKSwKICAgICAgIG1IZWlnaHQoaGVpZ2h0KSwK
ICAgICAgIG1GdW5jdGlvbnMoZnVuY3Rpb25zKSwKICAgICAgIG1TdGF0ZU1hbmFnZXIocmVuZGVy
ZXItPmdldFN0YXRlTWFuYWdlcigpKSwKLSAgICAgIG1Xb3JrYXJvdW5kcyhyZW5kZXJlci0+Z2V0
V29ya2Fyb3VuZHMoKSksCisgICAgICBtUmVuZGVyZXIocmVuZGVyZXIpLAogICAgICAgbUZyYW1l
YnVmZmVyKDApLAogICAgICAgbUNvbG9yUmVuZGVyYnVmZmVyKDApLAogICAgICAgbURTUmVuZGVy
YnVmZmVyKDApCkBAIC0xMzIsMTAgKzEzMywxMSBAQAogICAgIHJldHVybiBFR0xfQlVGRkVSX1BS
RVNFUlZFRDsKIH0KIAotRnJhbWVidWZmZXJJbXBsICpQYnVmZmVyU3VyZmFjZUNHTDo6Y3JlYXRl
RGVmYXVsdEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGF0YSAmZGF0YSkKK0Zy
YW1lYnVmZmVySW1wbCAqUGJ1ZmZlclN1cmZhY2VDR0w6OmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZl
cihjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUpCiB7CiAgICAgLy8gVE9ETyhjd2Fs
bGV6KSBhc3NlcnQgaXQgaGFwcGVucyBvbmx5IG9uY2U/Ci0gICAgcmV0dXJuIG5ldyBGcmFtZWJ1
ZmZlckdMKG1GcmFtZWJ1ZmZlciwgZGF0YSwgbUZ1bmN0aW9ucywgbVdvcmthcm91bmRzLCBtU3Rh
dGVNYW5hZ2VyKTsKKyAgICByZXR1cm4gbmV3IEZyYW1lYnVmZmVyR0wobUZyYW1lYnVmZmVyLCBz
dGF0ZSwgbUZ1bmN0aW9ucywgbVJlbmRlcmVyLT5nZXRXb3JrYXJvdW5kcygpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtUmVuZGVyZXItPmdldEJsaXR0ZXIoKSwgbVN0YXRlTWFuYWdl
cik7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9jZ2wvV2luZG93U3VyZmFjZUNHTC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvV2luZG93U3VyZmFj
ZUNHTC5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1dpbmRvd1N1cmZhY2VDR0wuaAkod29ya2luZyBjb3B5
KQpAQCAtNTQsNyArNTQsOCBAQAogY2xhc3MgV2luZG93U3VyZmFjZUNHTCA6IHB1YmxpYyBTdXJm
YWNlR0wKIHsKICAgcHVibGljOgotICAgIFdpbmRvd1N1cmZhY2VDR0woUmVuZGVyZXJHTCAqcmVu
ZGVyZXIsCisgICAgV2luZG93U3VyZmFjZUNHTChjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3Rh
dGUsCisgICAgICAgICAgICAgICAgICAgICBSZW5kZXJlckdMICpyZW5kZXJlciwKICAgICAgICAg
ICAgICAgICAgICAgIENBTGF5ZXIgKmxheWVyLAogICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
RnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywKICAgICAgICAgICAgICAgICAgICAgIENHTENvbnRleHRP
YmogY29udGV4dCk7CkBAIC03Niw3ICs3Nyw3IEBACiAgICAgRUdMaW50IGlzUG9zdFN1YkJ1ZmZl
clN1cHBvcnRlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIEVHTGludCBnZXRTd2FwQmVoYXZpb3Io
KSBjb25zdCBvdmVycmlkZTsKIAotICAgIEZyYW1lYnVmZmVySW1wbCAqY3JlYXRlRGVmYXVsdEZy
YW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGF0YSAmZGF0YSkgb3ZlcnJpZGU7Cisg
ICAgRnJhbWVidWZmZXJJbXBsICpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoY29uc3QgZ2w6OkZy
YW1lYnVmZmVyU3RhdGUgJnN0YXRlKSBvdmVycmlkZTsKIAogICBwcml2YXRlOgogICAgIFN3YXBM
YXllciAqbVN3YXBMYXllcjsKQEAgLTg3LDYgKzg4LDcgQEAKICAgICBDR0xDb250ZXh0T2JqIG1D
b250ZXh0OwogICAgIGNvbnN0IEZ1bmN0aW9uc0dMICptRnVuY3Rpb25zOwogICAgIFN0YXRlTWFu
YWdlckdMICptU3RhdGVNYW5hZ2VyOworICAgIFJlbmRlcmVyR0wgKm1SZW5kZXJlcjsKICAgICBj
b25zdCBXb3JrYXJvdW5kc0dMICZtV29ya2Fyb3VuZHM7CiAKICAgICBHTHVpbnQgbUZyYW1lYnVm
ZmVyOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL2NnbC9XaW5kb3dTdXJmYWNlQ0dMLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvV2luZG93U3VyZmFjZUNHTC5t
bQkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL2NnbC9XaW5kb3dTdXJmYWNlQ0dMLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDIsMTEgKzE0MiwxMiBAQAogICAgIG5hbWVzcGFjZSByeAogICAgIHsKIAotICAgIFdpbmRv
d1N1cmZhY2VDR0w6OldpbmRvd1N1cmZhY2VDR0woUmVuZGVyZXJHTCAqcmVuZGVyZXIsCisgICAg
V2luZG93U3VyZmFjZUNHTDo6V2luZG93U3VyZmFjZUNHTChjb25zdCBlZ2w6OlN1cmZhY2VTdGF0
ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJl
ckdMICpyZW5kZXJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENB
TGF5ZXIgKmxheWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENHTENvbnRleHRPYmogY29udGV4dCkKLSAgICAgICAgOiBTdXJmYWNlR0wocmVu
ZGVyZXIpLAorICAgICAgICA6IFN1cmZhY2VHTChzdGF0ZSwgcmVuZGVyZXIpLAogICAgICAgICAg
IG1Td2FwTGF5ZXIobmlsKSwKICAgICAgICAgICBtQ3VycmVudFN3YXBJZCgwKSwKICAgICAgICAg
ICBtTGF5ZXIobGF5ZXIpLApAQCAtMTUzLDExICsxNTQsMTIgQEAKICAgICAgICAgICBtQ29udGV4
dChjb250ZXh0KSwKICAgICAgICAgICBtRnVuY3Rpb25zKGZ1bmN0aW9ucyksCiAgICAgICAgICAg
bVN0YXRlTWFuYWdlcihyZW5kZXJlci0+Z2V0U3RhdGVNYW5hZ2VyKCkpLAorICAgICAgICAgIG1S
ZW5kZXJlcihyZW5kZXJlciksCiAgICAgICAgICAgbVdvcmthcm91bmRzKHJlbmRlcmVyLT5nZXRX
b3JrYXJvdW5kcygpKSwKICAgICAgICAgICBtRnJhbWVidWZmZXIoMCksCiAgICAgICAgICAgbURT
UmVuZGVyYnVmZmVyKDApCi17Ci0gICAgcHRocmVhZF9tdXRleF9pbml0KCZtU3dhcFN0YXRlLm11
dGV4LCBudWxscHRyKTsKKyAgICB7CisgICAgICAgIHB0aHJlYWRfbXV0ZXhfaW5pdCgmbVN3YXBT
dGF0ZS5tdXRleCwgbnVsbHB0cik7CiB9CiAKIFdpbmRvd1N1cmZhY2VDR0w6On5XaW5kb3dTdXJm
YWNlQ0dMKCkKQEAgLTMyMCwxMCArMzIyLDExIEBACiAgICAgcmV0dXJuIEVHTF9CVUZGRVJfREVT
VFJPWUVEOwogfQogCi1GcmFtZWJ1ZmZlckltcGwgKldpbmRvd1N1cmZhY2VDR0w6OmNyZWF0ZURl
ZmF1bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRhdGEgJmRhdGEpCitGcmFt
ZWJ1ZmZlckltcGwgKldpbmRvd1N1cmZhY2VDR0w6OmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihj
b25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUpCiB7CiAgICAgLy8gVE9ETyhjd2FsbGV6
KSBhc3NlcnQgaXQgaGFwcGVucyBvbmx5IG9uY2U/Ci0gICAgcmV0dXJuIG5ldyBGcmFtZWJ1ZmZl
ckdMKG1GcmFtZWJ1ZmZlciwgZGF0YSwgbUZ1bmN0aW9ucywgbVdvcmthcm91bmRzLCBtU3RhdGVN
YW5hZ2VyKTsKKyAgICByZXR1cm4gbmV3IEZyYW1lYnVmZmVyR0wobUZyYW1lYnVmZmVyLCBzdGF0
ZSwgbUZ1bmN0aW9ucywgbVdvcmthcm91bmRzLCBtUmVuZGVyZXItPmdldEJsaXR0ZXIoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbVN0YXRlTWFuYWdlcik7CiB9CiAKIH0KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvRGlz
cGxheUVHTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9EaXNwbGF5RUdMLmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Rpc3Bs
YXlFR0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE2IEBACisvLworLy8gQ29weXJp
Z2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
KworLy8gRGlzcGxheUVHTC5jcHA6IENvbW1vbiBhY3Jvc3MgRUdMIHBhcnRzIG9mIHBsYXRmb3Jt
IHNwZWNpZmljIGVnbDo6RGlzcGxheSBpbXBsZW1lbnRhdGlvbnMKKworI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2dsL2VnbC9EaXNwbGF5RUdMLmgiCisKK25hbWVzcGFjZSByeAoreworCisj
ZGVmaW5lIEVHTF9OT19DT05GSUcgKChFR0xDb25maWcpMCkKKworRGlzcGxheUVHTDo6RGlzcGxh
eUVHTCgpCisgICAgOiBEaXNwbGF5R0woKSwKKyAgICAgIG1FR0wobnVsbHB0ciksCisgICAgICBt
Q29uZmlnKEVHTF9OT19DT05GSUcpLAorICAgICAgbUNvbnRleHQoRUdMX05PX0NPTlRFWFQpLAor
ICAgICAgbUZ1bmN0aW9uc0dMKG51bGxwdHIpCit7Cit9CisKK0Rpc3BsYXlFR0w6On5EaXNwbGF5
RUdMKCkKK3sKK30KKworc3RkOjpzdHJpbmcgRGlzcGxheUVHTDo6Z2V0VmVuZG9yU3RyaW5nKCkg
Y29uc3QKK3sKKyAgICBjb25zdCBjaGFyICp2ZW5kb3IgPSBtRUdMLT5xdWVyeVN0cmluZyhFR0xf
VkVORE9SKTsKKyAgICBBU1NFUlQodmVuZG9yKTsKKyAgICByZXR1cm4gdmVuZG9yOworfQorCitl
Z2w6OkVycm9yIERpc3BsYXlFR0w6OmluaXRpYWxpemVDb250ZXh0KGNvbnN0IGVnbDo6QXR0cmli
dXRlTWFwICZlZ2xBdHRyaWJ1dGVzKQoreworICAgIGdsOjpWZXJzaW9uIGVnbFZlcnNpb24obUVH
TC0+bWFqb3JWZXJzaW9uLCBtRUdMLT5taW5vclZlcnNpb24pOworCisgICAgRUdMaW50IHJlcXVl
c3RlZE1ham9yID0KKyAgICAgICAgZWdsQXR0cmlidXRlcy5nZXRBc0ludChFR0xfUExBVEZPUk1f
QU5HTEVfTUFYX1ZFUlNJT05fTUFKT1JfQU5HTEUsIEVHTF9ET05UX0NBUkUpOworICAgIEVHTGlu
dCByZXF1ZXN0ZWRNaW5vciA9CisgICAgICAgIGVnbEF0dHJpYnV0ZXMuZ2V0QXNJbnQoRUdMX1BM
QVRGT1JNX0FOR0xFX01BWF9WRVJTSU9OX01JTk9SX0FOR0xFLCBFR0xfRE9OVF9DQVJFKTsKKyAg
ICBib29sIGluaXRpYWxpemVSZXF1ZXN0ZWQgPSByZXF1ZXN0ZWRNYWpvciAhPSBFR0xfRE9OVF9D
QVJFICYmIHJlcXVlc3RlZE1pbm9yICE9IEVHTF9ET05UX0NBUkU7CisKKyAgICBzdGF0aWNfYXNz
ZXJ0KEVHTF9DT05URVhUX01BSk9SX1ZFUlNJT04gPT0gRUdMX0NPTlRFWFRfTUFKT1JfVkVSU0lP
Tl9LSFIsCisgICAgICAgICAgICAgICAgICAiTWFqb3IgVmVyc2lvbiBkZWZpbmUgc2hvdWxkIG1h
dGNoIik7CisgICAgc3RhdGljX2Fzc2VydChFR0xfQ09OVEVYVF9NSU5PUl9WRVJTSU9OID09IEVH
TF9DT05URVhUX01JTk9SX1ZFUlNJT05fS0hSLAorICAgICAgICAgICAgICAgICAgIk1pbm9yIFZl
cnNpb24gZGVmaW5lIHNob3VsZCBtYXRjaCIpOworCisgICAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0
b3I8RUdMaW50Pj4gY29udGV4dEF0dHJpYkxpc3RzOworICAgIGlmIChlZ2xWZXJzaW9uID49IGds
OjpWZXJzaW9uKDEsIDUpIHx8IG1FR0wtPmhhc0V4dGVuc2lvbigiRUdMX0tIUl9jcmVhdGVfY29u
dGV4dCIpKQorICAgIHsKKyAgICAgICAgaWYgKGluaXRpYWxpemVSZXF1ZXN0ZWQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGNvbnRleHRBdHRyaWJMaXN0cy5wdXNoX2JhY2soe0VHTF9DT05URVhU
X01BSk9SX1ZFUlNJT04sIHJlcXVlc3RlZE1ham9yLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRUdMX0NPTlRFWFRfTUlOT1JfVkVSU0lPTiwgcmVxdWVzdGVkTWlu
b3IsIEVHTF9OT05FfSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAg
ICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgICAgICAgICAgICBjb25zdCBnbDo6VmVyc2lv
biBlc1ZlcnNpb25zRnJvbTJfMFtdID0geworICAgICAgICAgICAgICAgIGdsOjpWZXJzaW9uKDMs
IDIpLAorICAgICAgICAgICAgICAgIGdsOjpWZXJzaW9uKDMsIDEpLAorICAgICAgICAgICAgICAg
IGdsOjpWZXJzaW9uKDMsIDApLAorICAgICAgICAgICAgICAgIGdsOjpWZXJzaW9uKDIsIDApLAor
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorCisgICAgICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8gJnZlcnNpb24gOiBlc1ZlcnNpb25zRnJvbTJfMCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0QXR0cmliTGlzdHMucHVzaF9iYWNrKAor
ICAgICAgICAgICAgICAgICAgICB7RUdMX0NPTlRFWFRfTUFKT1JfVkVSU0lPTiwgc3RhdGljX2Nh
c3Q8RUdMaW50Pih2ZXJzaW9uLm1ham9yKSwKKyAgICAgICAgICAgICAgICAgICAgIEVHTF9DT05U
RVhUX01JTk9SX1ZFUlNJT04sIHN0YXRpY19jYXN0PEVHTGludD4odmVyc2lvbi5taW5vciksIEVH
TF9OT05FfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAg
IHsKKyAgICAgICAgaWYgKGluaXRpYWxpemVSZXF1ZXN0ZWQgJiYgKHJlcXVlc3RlZE1ham9yICE9
IDIgfHwgcmVxdWVzdGVkTWlub3IgIT0gMCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBlZ2w6OkVycm9yKEVHTF9CQURfQVRUUklCVVRFLCAiVW5zdXBwb3J0ZWQgcmVxdWVzdGVkIGNv
bnRleHQgdmVyc2lvbiIpOworICAgICAgICB9CisgICAgICAgIGNvbnRleHRBdHRyaWJMaXN0cy5w
dXNoX2JhY2soe0VHTF9DT05URVhUX0NMSUVOVF9WRVJTSU9OLCAyLCBFR0xfTk9ORX0pOworICAg
IH0KKworICAgIGZvciAoYXV0byAmYXR0cmliTGlzdCA6IGNvbnRleHRBdHRyaWJMaXN0cykKKyAg
ICB7CisgICAgICAgIG1Db250ZXh0ID0gbUVHTC0+Y3JlYXRlQ29udGV4dChtQ29uZmlnLCBFR0xf
Tk9fQ09OVEVYVCwgYXR0cmliTGlzdC5kYXRhKCkpOworICAgICAgICBpZiAobUNvbnRleHQgIT0g
RUdMX05PX0NPTlRFWFQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OkVycm9y
KEVHTF9TVUNDRVNTKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBlZ2w6OkVycm9y
KG1FR0wtPmdldEVycm9yKCksICJlZ2xDcmVhdGVDb250ZXh0IGZhaWxlZCIpOworfQorCit2b2lk
IERpc3BsYXlFR0w6OmdlbmVyYXRlRXh0ZW5zaW9ucyhlZ2w6OkRpc3BsYXlFeHRlbnNpb25zICpv
dXRFeHRlbnNpb25zKSBjb25zdAoreworICAgIG91dEV4dGVuc2lvbnMtPmNyZWF0ZUNvbnRleHRS
b2J1c3RuZXNzID0KKyAgICAgICAgbUVHTC0+aGFzRXh0ZW5zaW9uKCJFR0xfRVhUX2NyZWF0ZV9j
b250ZXh0X3JvYnVzdG5lc3MiKTsKKworICAgIG91dEV4dGVuc2lvbnMtPnBvc3RTdWJCdWZmZXIg
PSBmYWxzZTsgIC8vIFNpbmNlIFN1cmZhY2VFR0w6OnBvc3RTdWJCdWZmZXIgaXMgbm90IGltcGxl
bWVudGVkCit9CisKK3ZvaWQgRGlzcGxheUVHTDo6Z2VuZXJhdGVDYXBzKGVnbDo6Q2FwcyAqb3V0
Q2FwcykgY29uc3QKK3sKKyAgICBvdXRDYXBzLT50ZXh0dXJlTlBPVCA9IHRydWU7ICAvLyBTaW5j
ZSB3ZSByZXF1ZXN0IEdMRVMgPj0gMgorfQorCitjb25zdCBGdW5jdGlvbnNHTCAqRGlzcGxheUVH
TDo6Z2V0RnVuY3Rpb25zR0woKSBjb25zdAoreworICAgIHJldHVybiBtRnVuY3Rpb25zR0w7Cit9
Cit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvRGlzcGxheUVHTC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvRGlzcGxheUVH
TC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9lZ2wvRGlzcGxheUVHTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NDMgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBEaXNwbGF5RUdMLmg6IENvbW1vbiBhY3Jvc3MgRUdM
IHBhcnRzIG9mIHBsYXRmb3JtIHNwZWNpZmljIGVnbDo6RGlzcGxheSBpbXBsZW1lbnRhdGlvbnMK
KworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9HTF9FR0xfRElTUExBWUVHTF9IXworI2RlZmlu
ZSBMSUJBTkdMRV9SRU5ERVJFUl9HTF9FR0xfRElTUExBWUVHTF9IXworCisjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZ2wvRGlzcGxheUdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZ2wvZWdsL0Z1bmN0aW9uc0VHTC5oIgorCituYW1lc3BhY2UgcngKK3sKKworY2xhc3MgRGlz
cGxheUVHTCA6IHB1YmxpYyBEaXNwbGF5R0wKK3sKKyAgcHVibGljOgorICAgIERpc3BsYXlFR0wo
KTsKKyAgICB+RGlzcGxheUVHTCgpIG92ZXJyaWRlOworCisgICAgc3RkOjpzdHJpbmcgZ2V0VmVu
ZG9yU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgcHJvdGVjdGVkOgorICAgIGVnbDo6RXJy
b3IgaW5pdGlhbGl6ZUNvbnRleHQoY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmVnbEF0dHJpYnV0
ZXMpOworCisgICAgRnVuY3Rpb25zRUdMICptRUdMOworICAgIEVHTENvbmZpZyBtQ29uZmlnOwor
ICAgIEVHTENvbnRleHQgbUNvbnRleHQ7CisgICAgRnVuY3Rpb25zR0wgKm1GdW5jdGlvbnNHTDsK
KworICBwcml2YXRlOgorICAgIHZvaWQgZ2VuZXJhdGVFeHRlbnNpb25zKGVnbDo6RGlzcGxheUV4
dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZ2VuZXJh
dGVDYXBzKGVnbDo6Q2FwcyAqb3V0Q2FwcykgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBjb25zdCBG
dW5jdGlvbnNHTCAqZ2V0RnVuY3Rpb25zR0woKSBjb25zdCBvdmVycmlkZTsKK307CisKK30gIC8v
IG5hbWVzcGFjZSByeAorCisjZW5kaWYgLyogTElCQU5HTEVfUkVOREVSRVJfR0xfRUdMX0RJU1BM
QVlFR0xfSF8gKi8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9lZ2wvRnVuY3Rpb25zRUdMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Z1bmN0aW9uc0VHTC5j
cHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL2VnbC9GdW5jdGlvbnNFR0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMzQwIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gRnVuY3Rpb25zRUdMLmNwcDogSW1wbGVtZW50
cyB0aGUgRnVuY3Rpb25zRUdMIGNsYXNzLgorCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
Z2wvZWdsL0Z1bmN0aW9uc0VHTC5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCisjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvRnVuY3Rpb25zR0wuaCIKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9nbC9lZ2wvZnVuY3Rpb25zZWdsX3R5cGVkZWZzLmgiCisjaW5jbHVkZSAiY29t
bW9uL3N0cmluZ191dGlscy5oIgorCituYW1lc3BhY2UKK3sKKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Citib29sIFNldFB0cihUICpkc3QsIHZvaWQgKnNyYykKK3sKKyAgICBpZiAoc3JjKQorICAg
IHsKKyAgICAgICAgKmRzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VD4oc3JjKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KK30gIC8vIG5hbWVzcGFjZQor
CituYW1lc3BhY2UgcngKK3sKKworc3RydWN0IEZ1bmN0aW9uc0VHTDo6RUdMRGlzcGF0Y2hUYWJs
ZQoreworICAgIEVHTERpc3BhdGNoVGFibGUoKQorICAgICAgICA6IGJpbmRBUElQdHIobnVsbHB0
ciksCisgICAgICAgICAgY2hvb3NlQ29uZmlnUHRyKG51bGxwdHIpLAorICAgICAgICAgIGNyZWF0
ZUNvbnRleHRQdHIobnVsbHB0ciksCisgICAgICAgICAgY3JlYXRlUGJ1ZmZlclN1cmZhY2VQdHIo
bnVsbHB0ciksCisgICAgICAgICAgY3JlYXRlV2luZG93U3VyZmFjZVB0cihudWxscHRyKSwKKyAg
ICAgICAgICBkZXN0cm95Q29udGV4dFB0cihudWxscHRyKSwKKyAgICAgICAgICBkZXN0cm95U3Vy
ZmFjZVB0cihudWxscHRyKSwKKyAgICAgICAgICBnZXRDb25maWdBdHRyaWJQdHIobnVsbHB0ciks
CisgICAgICAgICAgZ2V0RGlzcGxheVB0cihudWxscHRyKSwKKyAgICAgICAgICBnZXRFcnJvclB0
cihudWxscHRyKSwKKyAgICAgICAgICBpbml0aWFsaXplUHRyKG51bGxwdHIpLAorICAgICAgICAg
IG1ha2VDdXJyZW50UHRyKG51bGxwdHIpLAorICAgICAgICAgIHF1ZXJ5U3RyaW5nUHRyKG51bGxw
dHIpLAorICAgICAgICAgIHF1ZXJ5U3VyZmFjZVB0cihudWxscHRyKSwKKyAgICAgICAgICBzd2Fw
QnVmZmVyc1B0cihudWxscHRyKSwKKyAgICAgICAgICB0ZXJtaW5hdGVQdHIobnVsbHB0ciksCisK
KyAgICAgICAgICBiaW5kVGV4SW1hZ2VQdHIobnVsbHB0ciksCisgICAgICAgICAgcmVsZWFzZVRl
eEltYWdlUHRyKG51bGxwdHIpLAorICAgICAgICAgIHN3YXBJbnRlcnZhbFB0cihudWxscHRyKSwK
KworICAgICAgICAgIGNyZWF0ZUltYWdlS0hSUHRyKG51bGxwdHIpLAorICAgICAgICAgIGRlc3Ry
b3lJbWFnZUtIUlB0cihudWxscHRyKSwKKworICAgICAgICAgIGNsaWVudFdhaXRTeW5jS0hSUHRy
KG51bGxwdHIpLAorICAgICAgICAgIGNyZWF0ZVN5bmNLSFJQdHIobnVsbHB0ciksCisgICAgICAg
ICAgZGVzdHJveVN5bmNLSFJQdHIobnVsbHB0ciksCisgICAgICAgICAgZ2V0U3luY0F0dHJpYktI
UlB0cihudWxscHRyKQorICAgIHsKKyAgICB9CisKKyAgICAvLyAxLjAKKyAgICBQRk5FR0xCSU5E
QVBJUFJPQyBiaW5kQVBJUHRyOworICAgIFBGTkVHTENIT09TRUNPTkZJR1BST0MgY2hvb3NlQ29u
ZmlnUHRyOworICAgIFBGTkVHTENSRUFURUNPTlRFWFRQUk9DIGNyZWF0ZUNvbnRleHRQdHI7Cisg
ICAgUEZORUdMQ1JFQVRFUEJVRkZFUlNVUkZBQ0VQUk9DIGNyZWF0ZVBidWZmZXJTdXJmYWNlUHRy
OworICAgIFBGTkVHTENSRUFURVdJTkRPV1NVUkZBQ0VQUk9DIGNyZWF0ZVdpbmRvd1N1cmZhY2VQ
dHI7CisgICAgUEZORUdMREVTVFJPWUNPTlRFWFRQUk9DIGRlc3Ryb3lDb250ZXh0UHRyOworICAg
IFBGTkVHTERFU1RST1lTVVJGQUNFUFJPQyBkZXN0cm95U3VyZmFjZVB0cjsKKyAgICBQRk5FR0xH
RVRDT05GSUdBVFRSSUJQUk9DIGdldENvbmZpZ0F0dHJpYlB0cjsKKyAgICBQRk5FR0xHRVRESVNQ
TEFZUFJPQyBnZXREaXNwbGF5UHRyOworICAgIFBGTkVHTEdFVEVSUk9SUFJPQyBnZXRFcnJvclB0
cjsKKyAgICBQRk5FR0xJTklUSUFMSVpFUFJPQyBpbml0aWFsaXplUHRyOworICAgIFBGTkVHTE1B
S0VDVVJSRU5UUFJPQyBtYWtlQ3VycmVudFB0cjsKKyAgICBQRk5FR0xRVUVSWVNUUklOR1BST0Mg
cXVlcnlTdHJpbmdQdHI7CisgICAgUEZORUdMUVVFUllTVVJGQUNFUFJPQyBxdWVyeVN1cmZhY2VQ
dHI7CisgICAgUEZORUdMU1dBUEJVRkZFUlNQUk9DIHN3YXBCdWZmZXJzUHRyOworICAgIFBGTkVH
TFRFUk1JTkFURVBST0MgdGVybWluYXRlUHRyOworCisgICAgLy8gMS4xCisgICAgUEZORUdMQklO
RFRFWElNQUdFUFJPQyBiaW5kVGV4SW1hZ2VQdHI7CisgICAgUEZORUdMUkVMRUFTRVRFWElNQUdF
UFJPQyByZWxlYXNlVGV4SW1hZ2VQdHI7CisgICAgUEZORUdMU1dBUElOVEVSVkFMUFJPQyBzd2Fw
SW50ZXJ2YWxQdHI7CisKKyAgICAvLyBFR0xfS0hSX2ltYWdlCisgICAgUEZORUdMQ1JFQVRFSU1B
R0VLSFJQUk9DIGNyZWF0ZUltYWdlS0hSUHRyOworICAgIFBGTkVHTERFU1RST1lJTUFHRUtIUlBS
T0MgZGVzdHJveUltYWdlS0hSUHRyOworCisgICAgLy8gRUdMX0tIUl9mZW5jZV9zeW5jCisgICAg
UEZORUdMQ0xJRU5UV0FJVFNZTkNLSFJQUk9DIGNsaWVudFdhaXRTeW5jS0hSUHRyOworICAgIFBG
TkVHTENSRUFURVNZTkNLSFJQUk9DIGNyZWF0ZVN5bmNLSFJQdHI7CisgICAgUEZORUdMREVTVFJP
WVNZTkNLSFJQUk9DIGRlc3Ryb3lTeW5jS0hSUHRyOworICAgIFBGTkVHTEdFVFNZTkNBVFRSSUJL
SFJQUk9DIGdldFN5bmNBdHRyaWJLSFJQdHI7Cit9OworCitGdW5jdGlvbnNFR0w6OkZ1bmN0aW9u
c0VHTCgpCisgICAgOiBtYWpvclZlcnNpb24oMCksIG1pbm9yVmVyc2lvbigwKSwgbUZuUHRycyhu
ZXcgRUdMRGlzcGF0Y2hUYWJsZSgpKSwgbUVHTERpc3BsYXkoRUdMX05PX0RJU1BMQVkpCit7Cit9
CisKK0Z1bmN0aW9uc0VHTDo6fkZ1bmN0aW9uc0VHTCgpCit7CisgICAgU2FmZURlbGV0ZShtRm5Q
dHJzKTsKK30KKworZWdsOjpFcnJvciBGdW5jdGlvbnNFR0w6OmluaXRpYWxpemUoRUdMTmF0aXZl
RGlzcGxheVR5cGUgbmF0aXZlRGlzcGxheSkKK3sKKyNkZWZpbmUgQU5HTEVfR0VUX1BST0NfT1Jf
RVJST1IoTUVNQkVSLCBOQU1FKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIGlmICghU2V0UHRyKE1FTUJFUiwgZ2V0UHJvY0FkZHJlc3MoI05BTUUpKSkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX05PVF9J
TklUSUFMSVpFRCwgIkNvdWxkIG5vdCBsb2FkIEVHTCBlbnRyeSBwb2ludCAiICNOQU1FKTsgXAor
ICAgIH0KKworICAgIEFOR0xFX0dFVF9QUk9DX09SX0VSUk9SKCZtRm5QdHJzLT5iaW5kQVBJUHRy
LCBlZ2xCaW5kQVBJKTsKKyAgICBBTkdMRV9HRVRfUFJPQ19PUl9FUlJPUigmbUZuUHRycy0+Y2hv
b3NlQ29uZmlnUHRyLCBlZ2xDaG9vc2VDb25maWcpOworICAgIEFOR0xFX0dFVF9QUk9DX09SX0VS
Uk9SKCZtRm5QdHJzLT5jcmVhdGVDb250ZXh0UHRyLCBlZ2xDcmVhdGVDb250ZXh0KTsKKyAgICBB
TkdMRV9HRVRfUFJPQ19PUl9FUlJPUigmbUZuUHRycy0+Y3JlYXRlUGJ1ZmZlclN1cmZhY2VQdHIs
IGVnbENyZWF0ZVBidWZmZXJTdXJmYWNlKTsKKyAgICBBTkdMRV9HRVRfUFJPQ19PUl9FUlJPUigm
bUZuUHRycy0+Y3JlYXRlV2luZG93U3VyZmFjZVB0ciwgZWdsQ3JlYXRlV2luZG93U3VyZmFjZSk7
CisgICAgQU5HTEVfR0VUX1BST0NfT1JfRVJST1IoJm1GblB0cnMtPmRlc3Ryb3lDb250ZXh0UHRy
LCBlZ2xEZXN0cm95Q29udGV4dCk7CisgICAgQU5HTEVfR0VUX1BST0NfT1JfRVJST1IoJm1GblB0
cnMtPmRlc3Ryb3lTdXJmYWNlUHRyLCBlZ2xEZXN0cm95U3VyZmFjZSk7CisgICAgQU5HTEVfR0VU
X1BST0NfT1JfRVJST1IoJm1GblB0cnMtPmdldENvbmZpZ0F0dHJpYlB0ciwgZWdsR2V0Q29uZmln
QXR0cmliKTsKKyAgICBBTkdMRV9HRVRfUFJPQ19PUl9FUlJPUigmbUZuUHRycy0+Z2V0RGlzcGxh
eVB0ciwgZWdsR2V0RGlzcGxheSk7CisgICAgQU5HTEVfR0VUX1BST0NfT1JfRVJST1IoJm1GblB0
cnMtPmdldEVycm9yUHRyLCBlZ2xHZXRFcnJvcik7CisgICAgQU5HTEVfR0VUX1BST0NfT1JfRVJS
T1IoJm1GblB0cnMtPmluaXRpYWxpemVQdHIsIGVnbEluaXRpYWxpemUpOworICAgIEFOR0xFX0dF
VF9QUk9DX09SX0VSUk9SKCZtRm5QdHJzLT5tYWtlQ3VycmVudFB0ciwgZWdsTWFrZUN1cnJlbnQp
OworICAgIEFOR0xFX0dFVF9QUk9DX09SX0VSUk9SKCZtRm5QdHJzLT5xdWVyeVN0cmluZ1B0ciwg
ZWdsUXVlcnlTdHJpbmcpOworICAgIEFOR0xFX0dFVF9QUk9DX09SX0VSUk9SKCZtRm5QdHJzLT5x
dWVyeVN1cmZhY2VQdHIsIGVnbFF1ZXJ5U3VyZmFjZSk7CisgICAgQU5HTEVfR0VUX1BST0NfT1Jf
RVJST1IoJm1GblB0cnMtPnN3YXBCdWZmZXJzUHRyLCBlZ2xTd2FwQnVmZmVycyk7CisgICAgQU5H
TEVfR0VUX1BST0NfT1JfRVJST1IoJm1GblB0cnMtPnRlcm1pbmF0ZVB0ciwgZWdsVGVybWluYXRl
KTsKKworICAgIEFOR0xFX0dFVF9QUk9DX09SX0VSUk9SKCZtRm5QdHJzLT5iaW5kVGV4SW1hZ2VQ
dHIsIGVnbEJpbmRUZXhJbWFnZSk7CisgICAgQU5HTEVfR0VUX1BST0NfT1JfRVJST1IoJm1GblB0
cnMtPnJlbGVhc2VUZXhJbWFnZVB0ciwgZWdsUmVsZWFzZVRleEltYWdlKTsKKyAgICBBTkdMRV9H
RVRfUFJPQ19PUl9FUlJPUigmbUZuUHRycy0+c3dhcEludGVydmFsUHRyLCBlZ2xTd2FwSW50ZXJ2
YWwpOworCisgICAgbUVHTERpc3BsYXkgPSBtRm5QdHJzLT5nZXREaXNwbGF5UHRyKG5hdGl2ZURp
c3BsYXkpOworICAgIGlmIChtRUdMRGlzcGxheSA9PSBFR0xfTk9fRElTUExBWSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9OT1RfSU5JVElBTElaRUQsICJGYWlsZWQgdG8g
Z2V0IHN5c3RlbSBlZ2wgZGlzcGxheSIpOworICAgIH0KKyAgICBpZiAobUZuUHRycy0+aW5pdGlh
bGl6ZVB0cihtRUdMRGlzcGxheSwgJm1ham9yVmVyc2lvbiwgJm1pbm9yVmVyc2lvbikgIT0gRUdM
X1RSVUUpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihtRm5QdHJzLT5nZXRFcnJv
clB0cigpLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgc3lzdGVtIGVnbCIpOworICAgIH0KKyAgICBp
ZiAobWFqb3JWZXJzaW9uIDwgMSB8fCAobWFqb3JWZXJzaW9uID09IDEgJiYgbWlub3JWZXJzaW9u
IDwgNCkpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfTk9UX0lOSVRJQUxJ
WkVELCAiVW5zdXBwb3J0ZWQgRUdMIHZlcnNpb24gKHJlcXVpcmUgYXQgbGVhc3QgMS40KS4iKTsK
KyAgICB9CisgICAgaWYgKG1GblB0cnMtPmJpbmRBUElQdHIoRUdMX09QRU5HTF9FU19BUEkpICE9
IEVHTF9UUlVFKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IobUZuUHRycy0+Z2V0
RXJyb3JQdHIoKSwgIkZhaWxlZCB0byBiaW5kIEFQSSBpbiBzeXN0ZW0gZWdsIik7CisgICAgfQor
CisgICAgY29uc3QgY2hhciAqZXh0ZW5zaW9ucyA9IHF1ZXJ5U3RyaW5nKEVHTF9FWFRFTlNJT05T
KTsKKyAgICBpZiAoIWV4dGVuc2lvbnMpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjpFcnJv
cihtRm5QdHJzLT5nZXRFcnJvclB0cigpLCAiRmFpbGQgdG8gcXVlcnkgZXh0ZW5zaW9ucyBpbiBz
eXN0ZW0gZWdsIik7CisgICAgfQorICAgIGFuZ2xlOjpTcGxpdFN0cmluZ0Fsb25nV2hpdGVzcGFj
ZShleHRlbnNpb25zLCAmbUV4dGVuc2lvbnMpOworCisgICAgaWYgKGhhc0V4dGVuc2lvbigiRUdM
X0tIUl9pbWFnZV9iYXNlIikpCisgICAgeworICAgICAgICBBTkdMRV9HRVRfUFJPQ19PUl9FUlJP
UigmbUZuUHRycy0+Y3JlYXRlSW1hZ2VLSFJQdHIsIGVnbENyZWF0ZUltYWdlS0hSKTsKKyAgICAg
ICAgQU5HTEVfR0VUX1BST0NfT1JfRVJST1IoJm1GblB0cnMtPmRlc3Ryb3lJbWFnZUtIUlB0ciwg
ZWdsRGVzdHJveUltYWdlS0hSKTsKKyAgICB9CisgICAgaWYgKGhhc0V4dGVuc2lvbigiRUdMX0tI
Ul9mZW5jZV9zeW5jIikpCisgICAgeworICAgICAgICBBTkdMRV9HRVRfUFJPQ19PUl9FUlJPUigm
bUZuUHRycy0+Y2xpZW50V2FpdFN5bmNLSFJQdHIsIGVnbENsaWVudFdhaXRTeW5jS0hSKTsKKyAg
ICAgICAgQU5HTEVfR0VUX1BST0NfT1JfRVJST1IoJm1GblB0cnMtPmNyZWF0ZVN5bmNLSFJQdHIs
IGVnbENyZWF0ZVN5bmNLSFIpOworICAgICAgICBBTkdMRV9HRVRfUFJPQ19PUl9FUlJPUigmbUZu
UHRycy0+ZGVzdHJveVN5bmNLSFJQdHIsIGVnbERlc3Ryb3lTeW5jS0hSKTsKKyAgICAgICAgQU5H
TEVfR0VUX1BST0NfT1JfRVJST1IoJm1GblB0cnMtPmdldFN5bmNBdHRyaWJLSFJQdHIsIGVnbEdl
dFN5bmNBdHRyaWJLSFIpOworICAgIH0KKworI3VuZGVmIEFOR0xFX0dFVF9QUk9DX09SX0VSUk9S
CisKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKK2VnbDo6RXJyb3Ig
RnVuY3Rpb25zRUdMOjp0ZXJtaW5hdGUoKQoreworICAgIGlmIChtRm5QdHJzLT50ZXJtaW5hdGVQ
dHIobUVHTERpc3BsYXkpID09IEVHTF9UUlVFKQorICAgIHsKKyAgICAgICAgbUVHTERpc3BsYXkg
PSBudWxscHRyOworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CisgICAg
fQorICAgIHJldHVybiBlZ2w6OkVycm9yKG1GblB0cnMtPmdldEVycm9yUHRyKCkpOworfQorCitj
bGFzcyBGdW5jdGlvbnNHTEVHTCA6IHB1YmxpYyBGdW5jdGlvbnNHTAoreworICBwdWJsaWM6Cisg
ICAgRnVuY3Rpb25zR0xFR0woY29uc3QgRnVuY3Rpb25zRUdMICZlZ2wpIDogbUVHTChlZ2wpIHt9
CisKKyAgICB+RnVuY3Rpb25zR0xFR0woKSBvdmVycmlkZSB7fQorCisgIHByaXZhdGU6CisgICAg
dm9pZCAqbG9hZFByb2NBZGRyZXNzKGNvbnN0IHN0ZDo6c3RyaW5nICZmdW5jdGlvbikgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIHJldHVybiBtRUdMLmdldFByb2NBZGRyZXNzKGZ1bmN0aW9uLmNf
c3RyKCkpOworICAgIH0KKworICAgIGNvbnN0IEZ1bmN0aW9uc0VHTCAmbUVHTDsKK307CisKK0Z1
bmN0aW9uc0dMICpGdW5jdGlvbnNFR0w6Om1ha2VGdW5jdGlvbnNHTCh2b2lkKSBjb25zdAorewor
ICAgIHJldHVybiBuZXcgRnVuY3Rpb25zR0xFR0woKnRoaXMpOworfQorCitib29sIEZ1bmN0aW9u
c0VHTDo6aGFzRXh0ZW5zaW9uKGNvbnN0IGNoYXIgKmV4dGVuc2lvbikgY29uc3QKK3sKKyAgICBy
ZXR1cm4gc3RkOjpmaW5kKG1FeHRlbnNpb25zLmJlZ2luKCksIG1FeHRlbnNpb25zLmVuZCgpLCBl
eHRlbnNpb24pICE9IG1FeHRlbnNpb25zLmVuZCgpOworfQorCitFR0xEaXNwbGF5IEZ1bmN0aW9u
c0VHTDo6Z2V0RGlzcGxheSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1FR0xEaXNwbGF5OworfQor
CitFR0xpbnQgRnVuY3Rpb25zRUdMOjpnZXRFcnJvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1G
blB0cnMtPmdldEVycm9yUHRyKCk7Cit9CisKK0VHTEJvb2xlYW4gRnVuY3Rpb25zRUdMOjpjaG9v
c2VDb25maWcoRUdMaW50IGNvbnN0ICphdHRyaWJMaXN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFR0xDb25maWcgKmNvbmZpZ3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVHTGludCBjb25maWdTaXplLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFR0xpbnQgKm51bUNvbmZpZykgY29uc3QKK3sKKyAgICByZXR1
cm4gbUZuUHRycy0+Y2hvb3NlQ29uZmlnUHRyKG1FR0xEaXNwbGF5LCBhdHRyaWJMaXN0LCBjb25m
aWdzLCBjb25maWdTaXplLCBudW1Db25maWcpOworfQorCitFR0xCb29sZWFuIEZ1bmN0aW9uc0VH
TDo6Z2V0Q29uZmlnQXR0cmliKEVHTENvbmZpZyBjb25maWcsIEVHTGludCBhdHRyaWJ1dGUsIEVH
TGludCAqdmFsdWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1GblB0cnMtPmdldENvbmZpZ0F0dHJp
YlB0cihtRUdMRGlzcGxheSwgY29uZmlnLCBhdHRyaWJ1dGUsIHZhbHVlKTsKK30KKworRUdMQ29u
dGV4dCBGdW5jdGlvbnNFR0w6OmNyZWF0ZUNvbnRleHQoRUdMQ29uZmlnIGNvbmZpZywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENvbnRleHQgc2hhcmVfY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBjb25zdCAq
YXR0cmliX2xpc3QpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1GblB0cnMtPmNyZWF0ZUNvbnRleHRQ
dHIobUVHTERpc3BsYXksIGNvbmZpZywgc2hhcmVfY29udGV4dCwgYXR0cmliX2xpc3QpOworfQor
CitFR0xTdXJmYWNlIEZ1bmN0aW9uc0VHTDo6Y3JlYXRlUGJ1ZmZlclN1cmZhY2UoRUdMQ29uZmln
IGNvbmZpZywgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bUZuUHRycy0+Y3JlYXRlUGJ1ZmZlclN1cmZhY2VQdHIobUVHTERpc3BsYXksIGNvbmZpZywgYXR0
cmliX2xpc3QpOworfQorCitFR0xTdXJmYWNlIEZ1bmN0aW9uc0VHTDo6Y3JlYXRlV2luZG93U3Vy
ZmFjZShFR0xDb25maWcgY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW4sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0KSBjb25z
dAoreworICAgIHJldHVybiBtRm5QdHJzLT5jcmVhdGVXaW5kb3dTdXJmYWNlUHRyKG1FR0xEaXNw
bGF5LCBjb25maWcsIHdpbiwgYXR0cmliX2xpc3QpOworfQorCitFR0xCb29sZWFuIEZ1bmN0aW9u
c0VHTDo6ZGVzdHJveUNvbnRleHQoRUdMQ29udGV4dCBjb250ZXh0KSBjb25zdAoreworICAgIHJl
dHVybiBtRm5QdHJzLT5kZXN0cm95Q29udGV4dFB0cihtRUdMRGlzcGxheSwgY29udGV4dCk7Cit9
CisKK0VHTEJvb2xlYW4gRnVuY3Rpb25zRUdMOjpkZXN0cm95U3VyZmFjZShFR0xTdXJmYWNlIHN1
cmZhY2UpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1GblB0cnMtPmRlc3Ryb3lTdXJmYWNlUHRyKG1F
R0xEaXNwbGF5LCBzdXJmYWNlKTsKK30KKworRUdMQm9vbGVhbiBGdW5jdGlvbnNFR0w6Om1ha2VD
dXJyZW50KEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMQ29udGV4dCBjb250ZXh0KSBjb25zdAorewor
ICAgIHJldHVybiBtRm5QdHJzLT5tYWtlQ3VycmVudFB0cihtRUdMRGlzcGxheSwgc3VyZmFjZSwg
c3VyZmFjZSwgY29udGV4dCk7Cit9CisKK2NoYXIgY29uc3QgKkZ1bmN0aW9uc0VHTDo6cXVlcnlT
dHJpbmcoRUdMaW50IG5hbWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1GblB0cnMtPnF1ZXJ5U3Ry
aW5nUHRyKG1FR0xEaXNwbGF5LCBuYW1lKTsKK30KKworRUdMQm9vbGVhbiBGdW5jdGlvbnNFR0w6
OnF1ZXJ5U3VyZmFjZShFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTGludCBhdHRyaWJ1dGUsIEVHTGlu
dCAqdmFsdWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1GblB0cnMtPnF1ZXJ5U3VyZmFjZVB0ciht
RUdMRGlzcGxheSwgc3VyZmFjZSwgYXR0cmlidXRlLCB2YWx1ZSk7Cit9CisKK0VHTEJvb2xlYW4g
RnVuY3Rpb25zRUdMOjpzd2FwQnVmZmVycyhFR0xTdXJmYWNlIHN1cmZhY2UpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1GblB0cnMtPnN3YXBCdWZmZXJzUHRyKG1FR0xEaXNwbGF5LCBzdXJmYWNlKTsK
K30KKworRUdMQm9vbGVhbiBGdW5jdGlvbnNFR0w6OmJpbmRUZXhJbWFnZShFR0xTdXJmYWNlIHN1
cmZhY2UsIEVHTGludCBidWZmZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1GblB0cnMtPmJpbmRU
ZXhJbWFnZVB0cihtRUdMRGlzcGxheSwgc3VyZmFjZSwgYnVmZmVyKTsKK30KKworRUdMQm9vbGVh
biBGdW5jdGlvbnNFR0w6OnJlbGVhc2VUZXhJbWFnZShFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTGlu
dCBidWZmZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1GblB0cnMtPnJlbGVhc2VUZXhJbWFnZVB0
cihtRUdMRGlzcGxheSwgc3VyZmFjZSwgYnVmZmVyKTsKK30KKworRUdMQm9vbGVhbiBGdW5jdGlv
bnNFR0w6OnN3YXBJbnRlcnZhbChFR0xpbnQgaW50ZXJ2YWwpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1GblB0cnMtPnN3YXBJbnRlcnZhbFB0cihtRUdMRGlzcGxheSwgaW50ZXJ2YWwpOworfQorCitF
R0xJbWFnZUtIUiBGdW5jdGlvbnNFR0w6OmNyZWF0ZUltYWdlS0hSKEVHTENvbnRleHQgY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMZW51bSB0YXJn
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1
ZmZlciBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEVHTGludCAqYXR0cmliX2xpc3QpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1GblB0cnMtPmNy
ZWF0ZUltYWdlS0hSUHRyKG1FR0xEaXNwbGF5LCBjb250ZXh0LCB0YXJnZXQsIGJ1ZmZlciwgYXR0
cmliX2xpc3QpOworfQorCitFR0xCb29sZWFuIEZ1bmN0aW9uc0VHTDo6ZGVzdHJveUltYWdlS0hS
KEVHTEltYWdlS0hSIGltYWdlKSBjb25zdAoreworICAgIHJldHVybiBtRm5QdHJzLT5kZXN0cm95
SW1hZ2VLSFJQdHIobUVHTERpc3BsYXksIGltYWdlKTsKK30KKworRUdMU3luY0tIUiBGdW5jdGlv
bnNFR0w6OmNyZWF0ZVN5bmNLSFIoRUdMZW51bSB0eXBlLCBjb25zdCBFR0xpbnQgKmF0dHJpYl9s
aXN0KQoreworICAgIHJldHVybiBtRm5QdHJzLT5jcmVhdGVTeW5jS0hSUHRyKG1FR0xEaXNwbGF5
LCB0eXBlLCBhdHRyaWJfbGlzdCk7Cit9CisKK0VHTEJvb2xlYW4gRnVuY3Rpb25zRUdMOjpkZXN0
cm95U3luY0tIUihFR0xTeW5jS0hSIHN5bmMpCit7CisgICAgcmV0dXJuIG1GblB0cnMtPmRlc3Ry
b3lTeW5jS0hSUHRyKG1FR0xEaXNwbGF5LCBzeW5jKTsKK30KKworRUdMaW50IEZ1bmN0aW9uc0VH
TDo6Y2xpZW50V2FpdFN5bmNLSFIoRUdMU3luY0tIUiBzeW5jLCBFR0xpbnQgZmxhZ3MsIEVHTFRp
bWVLSFIgdGltZW91dCkKK3sKKyAgICByZXR1cm4gbUZuUHRycy0+Y2xpZW50V2FpdFN5bmNLSFJQ
dHIobUVHTERpc3BsYXksIHN5bmMsIGZsYWdzLCB0aW1lb3V0KTsKK30KKworRUdMQm9vbGVhbiBG
dW5jdGlvbnNFR0w6OmdldFN5bmNBdHRyaWJLSFIoRUdMU3luY0tIUiBzeW5jLCBFR0xpbnQgYXR0
cmlidXRlLCBFR0xpbnQgKnZhbHVlKQoreworICAgIHJldHVybiBtRm5QdHJzLT5nZXRTeW5jQXR0
cmliS0hSUHRyKG1FR0xEaXNwbGF5LCBzeW5jLCBhdHRyaWJ1dGUsIHZhbHVlKTsKK30KK30gIC8v
IG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL2VnbC9GdW5jdGlvbnNFR0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Z1bmN0aW9uc0VHTC5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9lZ2wvRnVuY3Rpb25zRUdMLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5
MSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEZ1bmN0aW9uc0VHTC5oOiBEZWZpbmVzIHRoZSBGdW5j
dGlvbnNFR0wgY2xhc3MgdG8gbG9hZCBmdW5jdGlvbnMgYW5kIGRhdGEgZnJvbSBFR0wKKworI2lm
bmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9HTF9DUk9TX0ZVTkNUSU9OU0VHTF9IXworI2RlZmluZSBM
SUJBTkdMRV9SRU5ERVJFUl9HTF9DUk9TX0ZVTkNUSU9OU0VHTF9IXworCisjaW5jbHVkZSA8RUdM
L2VnbC5oPgorI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KKworI2luY2x1ZGUgPHN0cmluZz4KKyNp
bmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJsaWJBTkdMRS9FcnJvci5oIgorCituYW1lc3Bh
Y2UgcngKK3sKKworY2xhc3MgRnVuY3Rpb25zR0w7CisKK2NsYXNzIEZ1bmN0aW9uc0VHTAorewor
ICBwdWJsaWM6CisgICAgRnVuY3Rpb25zRUdMKCk7CisgICAgdmlydHVhbCB+RnVuY3Rpb25zRUdM
KCk7CisKKyAgICBpbnQgbWFqb3JWZXJzaW9uOworICAgIGludCBtaW5vclZlcnNpb247CisKKyAg
ICBlZ2w6OkVycm9yIGluaXRpYWxpemUoRUdMTmF0aXZlRGlzcGxheVR5cGUgbmF0aXZlRGlzcGxh
eSk7CisgICAgZWdsOjpFcnJvciB0ZXJtaW5hdGUoKTsKKworICAgIHZpcnR1YWwgdm9pZCAqZ2V0
UHJvY0FkZHJlc3MoY29uc3QgY2hhciAqbmFtZSkgY29uc3QgPSAwOworCisgICAgRnVuY3Rpb25z
R0wgKm1ha2VGdW5jdGlvbnNHTCgpIGNvbnN0OworICAgIGJvb2wgaGFzRXh0ZW5zaW9uKGNvbnN0
IGNoYXIgKmV4dGVuc2lvbikgY29uc3Q7CisgICAgRUdMRGlzcGxheSBnZXREaXNwbGF5KCkgY29u
c3Q7CisgICAgRUdMaW50IGdldEVycm9yKCkgY29uc3Q7CisKKyAgICBFR0xCb29sZWFuIGNob29z
ZUNvbmZpZyhFR0xpbnQgY29uc3QgKmF0dHJpYl9saXN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVHTENvbmZpZyAqY29uZmlncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
R0xpbnQgY29uZmlnX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50ICpu
dW1fY29uZmlnKSBjb25zdDsKKyAgICBFR0xCb29sZWFuIGdldENvbmZpZ0F0dHJpYihFR0xDb25m
aWcgY29uZmlnLCBFR0xpbnQgYXR0cmlidXRlLCBFR0xpbnQgKnZhbHVlKSBjb25zdDsKKyAgICBF
R0xDb250ZXh0IGNyZWF0ZUNvbnRleHQoRUdMQ29uZmlnIGNvbmZpZywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRUdMQ29udGV4dCBzaGFyZV9jb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFR0xpbnQgY29uc3QgKmF0dHJpYl9saXN0KSBjb25zdDsKKyAgICBFR0xT
dXJmYWNlIGNyZWF0ZVBidWZmZXJTdXJmYWNlKEVHTENvbmZpZyBjb25maWcsIGNvbnN0IEVHTGlu
dCAqYXR0cmliX2xpc3QpIGNvbnN0OworICAgIEVHTFN1cmZhY2UgY3JlYXRlV2luZG93U3VyZmFj
ZShFR0xDb25maWcgY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
R0xOYXRpdmVXaW5kb3dUeXBlIHdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCkgY29uc3Q7CisgICAgRUdMQm9vbGVhbiBkZXN0
cm95Q29udGV4dChFR0xDb250ZXh0IGNvbnRleHQpIGNvbnN0OworICAgIEVHTEJvb2xlYW4gZGVz
dHJveVN1cmZhY2UoRUdMU3VyZmFjZSBzdXJmYWNlKSBjb25zdDsKKyAgICBFR0xCb29sZWFuIG1h
a2VDdXJyZW50KEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMQ29udGV4dCBjb250ZXh0KSBjb25zdDsK
KyAgICBjb25zdCBjaGFyICpxdWVyeVN0cmluZyhFR0xpbnQgbmFtZSkgY29uc3Q7CisgICAgRUdM
Qm9vbGVhbiBxdWVyeVN1cmZhY2UoRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xpbnQgYXR0cmlidXRl
LCBFR0xpbnQgKnZhbHVlKSBjb25zdDsKKyAgICBFR0xCb29sZWFuIHN3YXBCdWZmZXJzKEVHTFN1
cmZhY2Ugc3VyZmFjZSkgY29uc3Q7CisKKyAgICBFR0xCb29sZWFuIGJpbmRUZXhJbWFnZShFR0xT
dXJmYWNlIHN1cmZhY2UsIEVHTGludCBidWZmZXIpIGNvbnN0OworICAgIEVHTEJvb2xlYW4gcmVs
ZWFzZVRleEltYWdlKEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IGJ1ZmZlcikgY29uc3Q7Cisg
ICAgRUdMQm9vbGVhbiBzd2FwSW50ZXJ2YWwoRUdMaW50IGludGVydmFsKSBjb25zdDsKKworICAg
IEVHTEltYWdlS0hSIGNyZWF0ZUltYWdlS0hSKEVHTENvbnRleHQgY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgYnVmZmVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpIGNvbnN0OworICAgIEVHTEJv
b2xlYW4gZGVzdHJveUltYWdlS0hSKEVHTEltYWdlS0hSIGltYWdlKSBjb25zdDsKKworICAgIEVH
TFN5bmNLSFIgY3JlYXRlU3luY0tIUihFR0xlbnVtIHR5cGUsIGNvbnN0IEVHTGludCAqYXR0cmli
X2xpc3QpOworICAgIEVHTEJvb2xlYW4gZGVzdHJveVN5bmNLSFIoRUdMU3luY0tIUiBzeW5jKTsK
KyAgICBFR0xpbnQgY2xpZW50V2FpdFN5bmNLSFIoRUdMU3luY0tIUiBzeW5jLCBFR0xpbnQgZmxh
Z3MsIEVHTFRpbWVLSFIgdGltZW91dCk7CisgICAgRUdMQm9vbGVhbiBnZXRTeW5jQXR0cmliS0hS
KEVHTFN5bmNLSFIgc3luYywgRUdMaW50IGF0dHJpYnV0ZSwgRUdMaW50ICp2YWx1ZSk7CisKKyAg
cHJpdmF0ZToKKyAgICAvLyBTbyBhcyB0byBpc29sYXRlIGZyb20gYW5nbGUgd2UgZG8gbm90IGlu
Y2x1ZGUgYW5nbGV1dGlscy5oIGFuZCBjYW5ub3QKKyAgICAvLyB1c2UgYW5nbGU6Ok5vbkNvcHlh
YmxlIHNvIHdlIHJlcGxpY2F0ZWQgaXQgaGVyZSBpbnN0ZWFkLgorICAgIEZ1bmN0aW9uc0VHTChj
b25zdCBGdW5jdGlvbnNFR0wgJikgPSBkZWxldGU7CisgICAgdm9pZCBvcGVyYXRvcj0oY29uc3Qg
RnVuY3Rpb25zRUdMICYpID0gZGVsZXRlOworCisgICAgc3RydWN0IEVHTERpc3BhdGNoVGFibGU7
CisgICAgRUdMRGlzcGF0Y2hUYWJsZSAqbUZuUHRyczsKKyAgICBFR0xEaXNwbGF5IG1FR0xEaXNw
bGF5OworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBtRXh0ZW5zaW9uczsKK307Cit9ICAv
LyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9HTF9DUk9TX0ZV
TkNUSU9OU0VHTF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL2VnbC9GdW5jdGlvbnNFR0xETC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9GdW5jdGlvbnNF
R0xETC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9GdW5jdGlvbnNFR0xETC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw3NCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEZ1bmN0aW9uc0VHTERMLmNwcDog
SW1wbGVtZW50cyB0aGUgRnVuY3Rpb25zRUdMREwgY2xhc3MuCisKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9nbC9lZ2wvRnVuY3Rpb25zRUdMREwuaCIKKworI2luY2x1ZGUgPGRsZmNuLmg+
CisKK25hbWVzcGFjZSByeAoreworCitEeW5hbWljTGliOjpEeW5hbWljTGliKCkgOiBoYW5kbGUo
bnVsbHB0cikKK3sKK30KKworRHluYW1pY0xpYjo6fkR5bmFtaWNMaWIoKQoreworICAgIGlmICho
YW5kbGUpCisgICAgeworICAgICAgICBkbGNsb3NlKGhhbmRsZSk7CisgICAgICAgIGhhbmRsZSA9
IG51bGxwdHI7CisgICAgfQorfQorCisvLyBEdWUgdG8gYSBidWcgaW4gTWVzYSAob3IgbWF5YmUg
bGliZGwpIGl0J3Mgbm90IHBvc3NpYmxlIHRvIGNsb3NlIGFuZCByZS1vcGVuIGxpYkVHTC5zbwor
Ly8gYW4gYXJiaXRyYXJ5IG51bWJlciBvZiB0aW1lcy4gIEVuZDJlbmQgdGVzdHMgd291bGQgZGll
IGFmdGVyIGEgY291cGxlIGh1bmRyZWQgdGVzdHMuCisvLyBTbyB3ZSB1c2UgYSBzdGF0aWMgb2Jq
ZWN0IHdpdGggYSBkZXN0cnVjdG9yIHRvIGNsb3NlIHRoZSBsaWJyYXJ5IHdoZW4gdGhlIHByb2dy
YW0gZXhpdHMuCisvLyBUT0RPKGZqaGVuaWdtYW4pIEZpbGUgYSBidWcgYW5kIHB1dCBhIGxpbmsg
aGVyZS4KK0R5bmFtaWNMaWIgRnVuY3Rpb25zRUdMREw6OnNOYXRpdmVMaWI7CisKK0Z1bmN0aW9u
c0VHTERMOjpGdW5jdGlvbnNFR0xETCgpIDogbUdldFByb2NBZGRyZXNzUHRyKG51bGxwdHIpCit7
Cit9CisKK0Z1bmN0aW9uc0VHTERMOjp+RnVuY3Rpb25zRUdMREwoKQoreworfQorCitlZ2w6OkVy
cm9yIEZ1bmN0aW9uc0VHTERMOjppbml0aWFsaXplKEVHTE5hdGl2ZURpc3BsYXlUeXBlIG5hdGl2
ZURpc3BsYXksIGNvbnN0IGNoYXIgKmxpYk5hbWUpCit7CisgICAgaWYgKCFzTmF0aXZlTGliLmhh
bmRsZSkKKyAgICB7CisgICAgICAgIHNOYXRpdmVMaWIuaGFuZGxlID0gZGxvcGVuKGxpYk5hbWUs
IFJUTERfTk9XKTsKKyAgICAgICAgaWYgKCFzTmF0aXZlTGliLmhhbmRsZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCwgIkNvdWxk
IG5vdCBkbG9wZW4gbmF0aXZlIEVHTDogJXMiLCBkbGVycm9yKCkpOworICAgICAgICB9CisgICAg
fQorCisgICAgbUdldFByb2NBZGRyZXNzUHRyID0KKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQ
Rk5FR0xHRVRQUk9DQUREUkVTU1BST0M+KGRsc3ltKHNOYXRpdmVMaWIuaGFuZGxlLCAiZWdsR2V0
UHJvY0FkZHJlc3MiKSk7CisgICAgaWYgKCFtR2V0UHJvY0FkZHJlc3NQdHIpCisgICAgeworICAg
ICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfTk9UX0lOSVRJQUxJWkVELCAiQ291bGQgbm90IGZp
bmQgZWdsR2V0UHJvY0FkZHJlc3MiKTsKKyAgICB9CisKKyAgICByZXR1cm4gRnVuY3Rpb25zRUdM
Ojppbml0aWFsaXplKG5hdGl2ZURpc3BsYXkpOworfQorCit2b2lkICpGdW5jdGlvbnNFR0xETDo6
Z2V0UHJvY0FkZHJlc3MoY29uc3QgY2hhciAqbmFtZSkgY29uc3QKK3sKKyAgICB2b2lkICpmID0g
cmVpbnRlcnByZXRfY2FzdDx2b2lkICo+KG1HZXRQcm9jQWRkcmVzc1B0cihuYW1lKSk7CisgICAg
aWYgKGYpCisgICAgeworICAgICAgICByZXR1cm4gZjsKKyAgICB9CisgICAgcmV0dXJuIGRsc3lt
KHNOYXRpdmVMaWIuaGFuZGxlLCBuYW1lKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Z1
bmN0aW9uc0VHTERMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9GdW5jdGlvbnNFR0xETC5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wv
RnVuY3Rpb25zRUdMREwuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBACisvLworLy8g
Q29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKworLy8gRnVuY3Rpb25zRUdMLmg6IEltcGxlbWVudHMgRnVuY3Rpb25zRUdMIHdpdGgg
ZGxvcGVuL2Rsc3ltL2RsY2xvc2UKKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9HTF9DUk9T
X0ZVTkNUSU9OU0VHTERMX0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0dMX0NST1NfRlVO
Q1RJT05TRUdMRExfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9GdW5j
dGlvbnNFR0wuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvZnVuY3Rpb25z
ZWdsX3R5cGVkZWZzLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBEeW5hbWljTGliIGZp
bmFsCit7CisgIHB1YmxpYzoKKyAgICB2b2lkICpoYW5kbGU7CisKKyAgICBEeW5hbWljTGliKCk7
CisgICAgfkR5bmFtaWNMaWIoKTsKK307CisKK2NsYXNzIEZ1bmN0aW9uc0VHTERMIDogcHVibGlj
IEZ1bmN0aW9uc0VHTAoreworICBwdWJsaWM6CisgICAgRnVuY3Rpb25zRUdMREwoKTsKKyAgICB+
RnVuY3Rpb25zRUdMREwoKSBvdmVycmlkZTsKKworICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZShF
R0xOYXRpdmVEaXNwbGF5VHlwZSBuYXRpdmVEaXNwbGF5LCBjb25zdCBjaGFyICpsaWJOYW1lKTsK
KyAgICB2b2lkICpnZXRQcm9jQWRkcmVzcyhjb25zdCBjaGFyICpuYW1lKSBjb25zdCBvdmVycmlk
ZTsKKworICBwcml2YXRlOgorICAgIFBGTkVHTEdFVFBST0NBRERSRVNTUFJPQyBtR2V0UHJvY0Fk
ZHJlc3NQdHI7CisgICAgc3RhdGljIER5bmFtaWNMaWIgc05hdGl2ZUxpYjsKK307Cit9ICAvLyBu
YW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9HTF9DUk9TX0ZVTkNU
SU9OU0VHTERMX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvZWdsL1BidWZmZXJTdXJmYWNlRUdMLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1BidWZmZXJT
dXJmYWNlRUdMLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1BidWZmZXJTdXJmYWNlRUdMLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDM5IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gUGJ1ZmZlclN1cmZh
Y2VFR0wuaDogRUdMIGltcGxlbWVudGF0aW9uIG9mIGVnbDo6U3VyZmFjZSBmb3IgcGJ1ZmZlcnMK
KworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9QYnVmZmVyU3VyZmFjZUVHTC5o
IgorCituYW1lc3BhY2UgcngKK3sKKworUGJ1ZmZlclN1cmZhY2VFR0w6OlBidWZmZXJTdXJmYWNl
RUdMKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBGdW5jdGlvbnNFR0wgKmVnbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFR0xDb25maWcgY29uZmlnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEVHTGludD4gJmF0dHJpYkxp
c3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ29udGV4dCBjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlcmVyR0wgKnJl
bmRlcmVyKQorICAgIDogU3VyZmFjZUVHTChzdGF0ZSwgZWdsLCBjb25maWcsIGF0dHJpYkxpc3Qs
IGNvbnRleHQsIHJlbmRlcmVyKQoreworfQorCitQYnVmZmVyU3VyZmFjZUVHTDo6flBidWZmZXJT
dXJmYWNlRUdMKCkKK3sKK30KKworZWdsOjpFcnJvciBQYnVmZmVyU3VyZmFjZUVHTDo6aW5pdGlh
bGl6ZSgpCit7CisgICAgbVN1cmZhY2UgPSBtRUdMLT5jcmVhdGVQYnVmZmVyU3VyZmFjZShtQ29u
ZmlnLCBtQXR0cmliTGlzdC5kYXRhKCkpOworICAgIGlmIChtU3VyZmFjZSA9PSBFR0xfTk9fU1VS
RkFDRSkKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKG1FR0wtPmdldEVycm9yKCks
ICJlZ2xDcmVhdGVQYnVmZmVyU3VyZmFjZSBmYWlsZWQiKTsKKyAgICB9CisKKyAgICByZXR1cm4g
ZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9QYnVm
ZmVyU3VyZmFjZUVHTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvUGJ1ZmZlclN1cmZhY2VFR0wuaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
ZWdsL1BidWZmZXJTdXJmYWNlRUdMLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBAQAor
Ly8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisKKy8vIFBidWZmZXJTdXJmYWNlRUdMLmg6IEVHTCBpbXBsZW1lbnRhdGlv
biBvZiBlZ2w6OlN1cmZhY2UgZm9yIHBidWZmZXJzCisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVS
RVJfR0xfRUdMX1BCVUZGRVJTVVJGQUNFRUdMX0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVS
X0dMX0VHTF9QQlVGRkVSU1VSRkFDRUVHTF9IXworCisjaW5jbHVkZSA8dmVjdG9yPgorI2luY2x1
ZGUgPEVHTC9lZ2wuaD4KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9TdXJm
YWNlRUdMLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBQYnVmZmVyU3VyZmFjZUVHTCA6
IHB1YmxpYyBTdXJmYWNlRUdMCit7CisgIHB1YmxpYzoKKyAgICBQYnVmZmVyU3VyZmFjZUVHTChj
b25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgRnVuY3Rpb25zRUdMICplZ2wsCisgICAgICAgICAgICAgICAgICAgICAgRUdMQ29uZmlnIGNv
bmZpZywKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxFR0xpbnQ+ICZh
dHRyaWJMaXN0LAorICAgICAgICAgICAgICAgICAgICAgIEVHTENvbnRleHQgY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICBSZW5kZXJlckdMICpyZW5kZXJlcik7CisgICAgflBidWZmZXJT
dXJmYWNlRUdMKCkgb3ZlcnJpZGU7CisKKyAgICBlZ2w6OkVycm9yIGluaXRpYWxpemUoKSBvdmVy
cmlkZTsKK307CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JF
TkRFUkVSX0dMX0VHTF9QQlVGRkVSU1VSRkFDRUVHTF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9TdXJmYWNlRUdMLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvZWdsL1N1cmZhY2VFR0wuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvU3VyZmFjZUVHTC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMzYgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBTdXJmYWNlRUdM
LmNwcDogRUdMIGltcGxlbWVudGF0aW9uIG9mIGVnbDo6U3VyZmFjZQorCisjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1N1cmZhY2VFR0wuaCIKKworI2luY2x1ZGUgImNvbW1vbi9k
ZWJ1Zy5oIgorCituYW1lc3BhY2UgcngKK3sKKworU3VyZmFjZUVHTDo6U3VyZmFjZUVHTChjb25z
dCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEZ1bmN0aW9uc0VHTCAqZWdsLAorICAgICAgICAgICAgICAgICAgICAgICBFR0xDb25maWcgY29u
ZmlnLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxFR0xpbnQ+ICZh
dHRyaWJMaXN0LAorICAgICAgICAgICAgICAgICAgICAgICBFR0xDb250ZXh0IGNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgIFJlbmRlcmVyR0wgKnJlbmRlcmVyKQorICAgIDogU3VyZmFj
ZUdMKHN0YXRlLCByZW5kZXJlciksCisgICAgICBtRUdMKGVnbCksCisgICAgICBtQ29uZmlnKGNv
bmZpZyksCisgICAgICBtQXR0cmliTGlzdChhdHRyaWJMaXN0KSwKKyAgICAgIG1TdXJmYWNlKEVH
TF9OT19TVVJGQUNFKSwKKyAgICAgIG1Db250ZXh0KGNvbnRleHQpCit7Cit9CisKK1N1cmZhY2VF
R0w6On5TdXJmYWNlRUdMKCkKK3sKKyAgICBpZiAobVN1cmZhY2UgIT0gRUdMX05PX1NVUkZBQ0Up
CisgICAgeworICAgICAgICBFR0xCb29sZWFuIHN1Y2Nlc3MgPSBtRUdMLT5kZXN0cm95U3VyZmFj
ZShtU3VyZmFjZSk7CisgICAgICAgIFVOVVNFRF9BU1NFUlRJT05fVkFSSUFCTEUoc3VjY2Vzcyk7
CisgICAgICAgIEFTU0VSVChzdWNjZXNzID09IEVHTF9UUlVFKTsKKyAgICB9Cit9CisKK2VnbDo6
RXJyb3IgU3VyZmFjZUVHTDo6bWFrZUN1cnJlbnQoKQoreworICAgIEVHTEJvb2xlYW4gc3VjY2Vz
cyA9IG1FR0wtPm1ha2VDdXJyZW50KG1TdXJmYWNlLCBtQ29udGV4dCk7CisgICAgaWYgKHN1Y2Nl
c3MgPT0gRUdMX0ZBTFNFKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IobUVHTC0+
Z2V0RXJyb3IoKSwgImVnbE1ha2VDdXJyZW50IGZhaWxlZCIpOworICAgIH0KKyAgICByZXR1cm4g
ZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKK2VnbDo6RXJyb3IgU3VyZmFjZUVHTDo6c3dh
cCgpCit7CisgICAgRUdMQm9vbGVhbiBzdWNjZXNzID0gbUVHTC0+c3dhcEJ1ZmZlcnMobVN1cmZh
Y2UpOworICAgIGlmIChzdWNjZXNzID09IEVHTF9GQUxTRSkKKyAgICB7CisgICAgICAgIHJldHVy
biBlZ2w6OkVycm9yKG1FR0wtPmdldEVycm9yKCksICJlZ2xTd2FwQnVmZmVycyBmYWlsZWQiKTsK
KyAgICB9CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOworfQorCitlZ2w6OkVy
cm9yIFN1cmZhY2VFR0w6OnBvc3RTdWJCdWZmZXIoRUdMaW50IHgsIEVHTGludCB5LCBFR0xpbnQg
d2lkdGgsIEVHTGludCBoZWlnaHQpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVy
biBlZ2w6OkVycm9yKEVHTF9CQURfU1VSRkFDRSk7Cit9CisKK2VnbDo6RXJyb3IgU3VyZmFjZUVH
TDo6cXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFKEVHTGludCBhdHRyaWJ1dGUsIHZvaWQgKip2YWx1
ZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JB
RF9TVVJGQUNFKTsKK30KKworZWdsOjpFcnJvciBTdXJmYWNlRUdMOjpiaW5kVGV4SW1hZ2UoZ2w6
OlRleHR1cmUgKnRleHR1cmUsIEVHTGludCBidWZmZXIpCit7CisgICAgRUdMQm9vbGVhbiBzdWNj
ZXNzID0gbUVHTC0+YmluZFRleEltYWdlKG1TdXJmYWNlLCBidWZmZXIpOworICAgIGlmIChzdWNj
ZXNzID09IEVHTF9GQUxTRSkKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKG1FR0wt
PmdldEVycm9yKCksICJlZ2xCaW5kVGV4SW1hZ2UgZmFpbGVkIik7CisgICAgfQorICAgIHJldHVy
biBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKK30KKworZWdsOjpFcnJvciBTdXJmYWNlRUdMOjpy
ZWxlYXNlVGV4SW1hZ2UoRUdMaW50IGJ1ZmZlcikKK3sKKyAgICBFR0xCb29sZWFuIHN1Y2Nlc3Mg
PSBtRUdMLT5yZWxlYXNlVGV4SW1hZ2UobVN1cmZhY2UsIGJ1ZmZlcik7CisgICAgaWYgKHN1Y2Nl
c3MgPT0gRUdMX0ZBTFNFKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IobUVHTC0+
Z2V0RXJyb3IoKSwgImVnbFJlbGVhc2VUZXhJbWFnZSBmYWlsZWQiKTsKKyAgICB9CisgICAgcmV0
dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOworfQorCit2b2lkIFN1cmZhY2VFR0w6OnNldFN3
YXBJbnRlcnZhbChFR0xpbnQgaW50ZXJ2YWwpCit7CisgICAgRUdMQm9vbGVhbiBzdWNjZXNzID0g
bUVHTC0+c3dhcEludGVydmFsKGludGVydmFsKTsKKyAgICBpZiAoc3VjY2VzcyA9PSBFR0xfRkFM
U0UpCisgICAgeworICAgICAgICBFUlIoImVnbFN3YXBJbnRlcnZhbCBlcnJvciAweCUwNHgiLCBt
RUdMLT5nZXRFcnJvcigpKTsKKyAgICAgICAgQVNTRVJUKGZhbHNlKTsKKyAgICB9Cit9CisKK0VH
TGludCBTdXJmYWNlRUdMOjpnZXRXaWR0aCgpIGNvbnN0Cit7CisgICAgRUdMaW50IHZhbHVlOwor
ICAgIEVHTEJvb2xlYW4gc3VjY2VzcyA9IG1FR0wtPnF1ZXJ5U3VyZmFjZShtU3VyZmFjZSwgRUdM
X1dJRFRILCAmdmFsdWUpOworICAgIFVOVVNFRF9BU1NFUlRJT05fVkFSSUFCTEUoc3VjY2Vzcyk7
CisgICAgQVNTRVJUKHN1Y2Nlc3MgPT0gRUdMX1RSVUUpOworICAgIHJldHVybiB2YWx1ZTsKK30K
KworRUdMaW50IFN1cmZhY2VFR0w6OmdldEhlaWdodCgpIGNvbnN0Cit7CisgICAgRUdMaW50IHZh
bHVlOworICAgIEVHTEJvb2xlYW4gc3VjY2VzcyA9IG1FR0wtPnF1ZXJ5U3VyZmFjZShtU3VyZmFj
ZSwgRUdMX0hFSUdIVCwgJnZhbHVlKTsKKyAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKHN1
Y2Nlc3MpOworICAgIEFTU0VSVChzdWNjZXNzID09IEVHTF9UUlVFKTsKKyAgICByZXR1cm4gdmFs
dWU7Cit9CisKK0VHTGludCBTdXJmYWNlRUdMOjppc1Bvc3RTdWJCdWZmZXJTdXBwb3J0ZWQoKSBj
b25zdAoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworRUdMaW50
IFN1cmZhY2VFR0w6OmdldFN3YXBCZWhhdmlvcigpIGNvbnN0Cit7CisgICAgRUdMaW50IHZhbHVl
OworICAgIEVHTEJvb2xlYW4gc3VjY2VzcyA9IG1FR0wtPnF1ZXJ5U3VyZmFjZShtU3VyZmFjZSwg
RUdMX1NXQVBfQkVIQVZJT1IsICZ2YWx1ZSk7CisgICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJM
RShzdWNjZXNzKTsKKyAgICBBU1NFUlQoc3VjY2VzcyA9PSBFR0xfVFJVRSk7CisgICAgcmV0dXJu
IHZhbHVlOworfQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvU3VyZmFjZUVHTC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9l
Z2wvU3VyZmFjZUVHTC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvU3VyZmFjZUVHTC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNTUgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBTdXJmYWNlRUdMLmg6IGNvbW1v
biBpbnRlcmZhY2UgZm9yIEVHTCBzdXJmYWNlcworCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVS
X0dMX0VHTF9TVVJGQUNFRUdMX0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0dMX0VHTF9T
VVJGQUNFRUdMX0hfCisKKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9nbC9TdXJmYWNlR0wuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9n
bC9lZ2wvRnVuY3Rpb25zRUdMLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBTdXJmYWNl
RUdMIDogcHVibGljIFN1cmZhY2VHTAoreworICBwdWJsaWM6CisgICAgU3VyZmFjZUVHTChjb25z
dCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICBjb25zdCBGdW5jdGlv
bnNFR0wgKmVnbCwKKyAgICAgICAgICAgICAgIEVHTENvbmZpZyBjb25maWcsCisgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnZlY3RvcjxFR0xpbnQ+ICZhdHRyaWJMaXN0LAorICAgICAgICAgICAg
ICAgRUdMQ29udGV4dCBjb250ZXh0LAorICAgICAgICAgICAgICAgUmVuZGVyZXJHTCAqcmVuZGVy
ZXIpOworICAgIH5TdXJmYWNlRUdMKCkgb3ZlcnJpZGU7CisKKyAgICBlZ2w6OkVycm9yIG1ha2VD
dXJyZW50KCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBzd2FwKCkgb3ZlcnJpZGU7CisgICAg
ZWdsOjpFcnJvciBwb3N0U3ViQnVmZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRo
LCBFR0xpbnQgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIHF1ZXJ5U3VyZmFjZVBv
aW50ZXJBTkdMRShFR0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUpIG92ZXJyaWRlOworICAg
IGVnbDo6RXJyb3IgYmluZFRleEltYWdlKGdsOjpUZXh0dXJlICp0ZXh0dXJlLCBFR0xpbnQgYnVm
ZmVyKSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIHJlbGVhc2VUZXhJbWFnZShFR0xpbnQgYnVm
ZmVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFN3YXBJbnRlcnZhbChFR0xpbnQgaW50ZXJ2YWwp
IG92ZXJyaWRlOworICAgIEVHTGludCBnZXRXaWR0aCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEVH
TGludCBnZXRIZWlnaHQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBFR0xpbnQgaXNQb3N0U3ViQnVm
ZmVyU3VwcG9ydGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRUdMaW50IGdldFN3YXBCZWhhdmlv
cigpIGNvbnN0IG92ZXJyaWRlOworCisgIHByb3RlY3RlZDoKKyAgICBjb25zdCBGdW5jdGlvbnNF
R0wgKm1FR0w7CisgICAgRUdMQ29uZmlnIG1Db25maWc7CisgICAgc3RkOjp2ZWN0b3I8RUdMaW50
PiBtQXR0cmliTGlzdDsKKyAgICBFR0xTdXJmYWNlIG1TdXJmYWNlOworCisgIHByaXZhdGU6Cisg
ICAgRUdMQ29udGV4dCBtQ29udGV4dDsKK307CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5k
aWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX0dMX0VHTF9TVVJGQUNFRUdMX0hfCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1dpbmRvd1N1
cmZhY2VFR0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvV2luZG93U3VyZmFjZUVHTC5jcHAJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Vn
bC9XaW5kb3dTdXJmYWNlRUdMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQwIEBACisv
LworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKworLy8gV2luZG93U3VyZmFjZUVHTC5oOiBFR0wgaW1wbGVtZW50YXRpb24g
b2YgZWdsOjpTdXJmYWNlIGZvciB3aW5kb3dzCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9nbC9lZ2wvV2luZG93U3VyZmFjZUVHTC5oIgorCituYW1lc3BhY2UgcngKK3sKKworV2luZG93
U3VyZmFjZUVHTDo6V2luZG93U3VyZmFjZUVHTChjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3Rh
dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZ1bmN0aW9uc0VH
TCAqZWdsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDb25maWcgY29u
ZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dU
eXBlIHdpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8RUdMaW50PiAmYXR0cmliTGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRUdMQ29udGV4dCBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSZW5kZXJlckdMICpyZW5kZXJlcikKKyAgICA6IFN1cmZhY2VFR0woc3RhdGUsIGVn
bCwgY29uZmlnLCBhdHRyaWJMaXN0LCBjb250ZXh0LCByZW5kZXJlciksIG1XaW5kb3cod2luZG93
KQoreworfQorCitXaW5kb3dTdXJmYWNlRUdMOjp+V2luZG93U3VyZmFjZUVHTCgpCit7Cit9CisK
K2VnbDo6RXJyb3IgV2luZG93U3VyZmFjZUVHTDo6aW5pdGlhbGl6ZSgpCit7CisgICAgbVN1cmZh
Y2UgPSBtRUdMLT5jcmVhdGVXaW5kb3dTdXJmYWNlKG1Db25maWcsIG1XaW5kb3csIG1BdHRyaWJM
aXN0LmRhdGEoKSk7CisgICAgaWYgKG1TdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IobUVHTC0+Z2V0RXJyb3IoKSwgImVnbENyZWF0ZVdp
bmRvd1N1cmZhY2UgZmFpbGVkIik7CisgICAgfQorCisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdM
X1NVQ0NFU1MpOworfQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvV2luZG93U3VyZmFjZUVHTC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC9lZ2wvV2luZG93U3VyZmFjZUVHTC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvV2luZG93U3VyZmFj
ZUVHTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzcgQEAKKy8vCisvLyBDb3B5cmlnaHQg
KGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisv
LyBXaW5kb3dTdXJmYWNlRUdMLmg6IEVHTCBpbXBsZW1lbnRhdGlvbiBvZiBlZ2w6OlN1cmZhY2Ug
Zm9yIHdpbmRvd3MKKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9HTF9FR0xfV0lORE9XU1VS
RkFDRUVHTF9IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9HTF9FR0xfV0lORE9XU1VSRkFD
RUVHTF9IXworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1N1cmZhY2VFR0wu
aCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIFdpbmRvd1N1cmZhY2VFR0wgOiBwdWJsaWMg
U3VyZmFjZUVHTAoreworICBwdWJsaWM6CisgICAgV2luZG93U3VyZmFjZUVHTChjb25zdCBlZ2w6
OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBGdW5jdGlv
bnNFR0wgKmVnbCwKKyAgICAgICAgICAgICAgICAgICAgIEVHTENvbmZpZyBjb25maWcsCisgICAg
ICAgICAgICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKKyAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEVHTGludD4gJmF0dHJpYkxpc3QsCisgICAgICAg
ICAgICAgICAgICAgICBFR0xDb250ZXh0IGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICBS
ZW5kZXJlckdMICpyZW5kZXJlcik7CisgICAgfldpbmRvd1N1cmZhY2VFR0woKSBvdmVycmlkZTsK
KworICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOworCisgIHByaXZhdGU6Cisg
ICAgRUdMTmF0aXZlV2luZG93VHlwZSBtV2luZG93OworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJ4
CisKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfR0xfRUdMX1dJTkRPV1NVUkZBQ0VFR0xf
SF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9lZ2wvYW5kcm9pZC9EaXNwbGF5QW5kcm9pZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9hbmRyb2lkL0Rpc3Bs
YXlBbmRyb2lkLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL2FuZHJvaWQvRGlzcGxheUFuZHJvaWQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzg4IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gRGlzcGxh
eUFuZHJvaWQuY3BwOiBBbmRyb2lkIGltcGxlbWVudGF0aW9uIG9mIGVnbDo6RGlzcGxheQorCisj
aW5jbHVkZSA8YW5kcm9pZC9uYXRpdmVfd2luZG93Lmg+CisKKyNpbmNsdWRlICJjb21tb24vZGVi
dWcuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9EaXNwbGF5LmgiCisjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZ2wvcmVuZGVyZXJnbF91dGlscy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL2dsL2VnbC9hbmRyb2lkL0Rpc3BsYXlBbmRyb2lkLmgiCisjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZ2wvZWdsL0Z1bmN0aW9uc0VHTERMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvZ2wvZWdsL1BidWZmZXJTdXJmYWNlRUdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvZ2wvZWdsL1dpbmRvd1N1cmZhY2VFR0wuaCIKKworbmFtZXNwYWNlCit7Citjb25zdCBj
aGFyICpHZXRFR0xQYXRoKCkKK3sKKyNpZiBkZWZpbmVkKF9fTFA2NF9fKQorICAgIHJldHVybiAi
L3N5c3RlbS9saWI2NC9saWJFR0wuc28iOworI2Vsc2UKKyAgICByZXR1cm4gIi9zeXN0ZW0vbGli
L2xpYkVHTC5zbyI7CisjZW5kaWYKK30KK30gIC8vIG5hbWVzcGFjZQorCituYW1lc3BhY2UgcngK
K3sKKworRGlzcGxheUFuZHJvaWQ6OkRpc3BsYXlBbmRyb2lkKCkgOiBEaXNwbGF5RUdMKCksIG1E
dW1teVBidWZmZXIoRUdMX05PX1NVUkZBQ0UpCit7Cit9CisKK0Rpc3BsYXlBbmRyb2lkOjp+RGlz
cGxheUFuZHJvaWQoKQoreworfQorCitlZ2w6OkVycm9yIERpc3BsYXlBbmRyb2lkOjppbml0aWFs
aXplKGVnbDo6RGlzcGxheSAqZGlzcGxheSkKK3sKKyAgICBGdW5jdGlvbnNFR0xETCAqZWdsID0g
bmV3IEZ1bmN0aW9uc0VHTERMKCk7CisgICAgbUVHTCA9IGVnbDsKKyAgICBBTkdMRV9UUlkoZWds
LT5pbml0aWFsaXplKGRpc3BsYXktPmdldE5hdGl2ZURpc3BsYXlJZCgpLCBHZXRFR0xQYXRoKCkp
KTsKKworICAgIGdsOjpWZXJzaW9uIGVnbFZlcnNpb24obUVHTC0+bWFqb3JWZXJzaW9uLCBtRUdM
LT5taW5vclZlcnNpb24pOworICAgIEFTU0VSVChlZ2xWZXJzaW9uID49IGdsOjpWZXJzaW9uKDEs
IDQpKTsKKworICAgIHN0YXRpY19hc3NlcnQoRUdMX09QRU5HTF9FUzNfQklUID09IEVHTF9PUEVO
R0xfRVMzX0JJVF9LSFIsICJFeHRlbnNpb24gZGVmaW5lIG11c3QgbWF0Y2ggY29yZSIpOworICAg
IEVHTGludCBlc0JpdCA9IChlZ2xWZXJzaW9uID49IGdsOjpWZXJzaW9uKDEsIDUpIHx8IG1FR0wt
Pmhhc0V4dGVuc2lvbigiRUdMX0tIUl9jcmVhdGVfY29udGV4dCIpKQorICAgICAgICAgICAgICAg
ICAgICAgICA/IEVHTF9PUEVOR0xfRVMzX0JJVAorICAgICAgICAgICAgICAgICAgICAgICA6IEVH
TF9PUEVOR0xfRVMyX0JJVDsKKworICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgICBtQ29uZmln
QXR0cmliTGlzdCA9CisgICAgeworICAgICAgICAvLyBDaG9vc2UgUkdCQTg4ODgKKyAgICAgICAg
RUdMX0NPTE9SX0JVRkZFUl9UWVBFLCBFR0xfUkdCX0JVRkZFUiwKKyAgICAgICAgRUdMX1JFRF9T
SVpFLCA4LAorICAgICAgICBFR0xfR1JFRU5fU0laRSwgOCwKKyAgICAgICAgRUdMX0JMVUVfU0la
RSwgOCwKKyAgICAgICAgRUdMX0FMUEhBX1NJWkUsIDgsCisgICAgICAgIC8vIEVHTDEuNSBzcGVj
IFNlY3Rpb24gMi4yIHNheXMgdGhhdCBkZXB0aCwgbXVsdGlzYW1wbGUgYW5kIHN0ZW5jaWwgYnVm
ZmVyIGRlcHRocworICAgICAgICAvLyBtdXN0IG1hdGNoIGZvciBjb250ZXh0cyB0byBiZSBjb21w
YXRpYmxlLgorICAgICAgICBFR0xfREVQVEhfU0laRSwgMjQsCisgICAgICAgIEVHTF9TVEVOQ0lM
X1NJWkUsIDgsCisgICAgICAgIEVHTF9TQU1QTEVfQlVGRkVSUywgMCwKKyAgICAgICAgLy8gQW5k
cm9pZCBkb2Vzbid0IHN1cHBvcnQgcGl4bWFwcworICAgICAgICBFR0xfU1VSRkFDRV9UWVBFLCBF
R0xfV0lORE9XX0JJVCB8IEVHTF9QQlVGRkVSX0JJVCwKKyAgICAgICAgRUdMX0NPTkZJR19DQVZF
QVQsIEVHTF9OT05FLAorICAgICAgICBFR0xfQ09ORk9STUFOVCwgZXNCaXQsCisgICAgICAgIEVH
TF9SRU5ERVJBQkxFX1RZUEUsIGVzQml0LAorICAgICAgICBFR0xfTk9ORQorICAgIH07CisgICAg
Ly8gY2xhbmctZm9ybWF0IG9uCisgICAgRUdMaW50IG51bUNvbmZpZzsKKworICAgIEVHTEJvb2xl
YW4gc3VjY2VzcyA9IG1FR0wtPmNob29zZUNvbmZpZyhtQ29uZmlnQXR0cmliTGlzdC5kYXRhKCks
ICZtQ29uZmlnLCAxLCAmbnVtQ29uZmlnKTsKKyAgICBpZiAoc3VjY2VzcyA9PSBFR0xfRkFMU0Up
CisgICAgeworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihtRUdMLT5nZXRFcnJvcigpLCAiZWds
Q2hvb3NlQ29uZmlnIGZhaWxlZCIpOworICAgIH0KKworICAgIEFOR0xFX1RSWShpbml0aWFsaXpl
Q29udGV4dChkaXNwbGF5LT5nZXRBdHRyaWJ1dGVNYXAoKSkpOworCisgICAgaW50IGR1bW15UGJ1
ZmZlckF0dHJpYnNbXSA9IHsKKyAgICAgICAgRUdMX1dJRFRILCAxLCBFR0xfSEVJR0hULCAxLCBF
R0xfTk9ORSwKKyAgICB9OworICAgIG1EdW1teVBidWZmZXIgPSBtRUdMLT5jcmVhdGVQYnVmZmVy
U3VyZmFjZShtQ29uZmlnLCBkdW1teVBidWZmZXJBdHRyaWJzKTsKKyAgICBpZiAobUR1bW15UGJ1
ZmZlciA9PSBFR0xfTk9fU1VSRkFDRSkKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVycm9y
KG1FR0wtPmdldEVycm9yKCksICJlZ2xDcmVhdGVQYnVmZmVyU3VyZmFjZSBmYWlsZWQiKTsKKyAg
ICB9CisKKyAgICBzdWNjZXNzID0gbUVHTC0+bWFrZUN1cnJlbnQobUR1bW15UGJ1ZmZlciwgbUNv
bnRleHQpOworICAgIGlmIChzdWNjZXNzID09IEVHTF9GQUxTRSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBlZ2w6OkVycm9yKG1FR0wtPmdldEVycm9yKCksICJlZ2xNYWtlQ3VycmVudCBmYWlsZWQi
KTsKKyAgICB9CisKKyAgICBtRnVuY3Rpb25zR0wgPSBtRUdMLT5tYWtlRnVuY3Rpb25zR0woKTsK
KyAgICBtRnVuY3Rpb25zR0wtPmluaXRpYWxpemUoKTsKKworICAgIHJldHVybiBEaXNwbGF5R0w6
OmluaXRpYWxpemUoZGlzcGxheSk7Cit9CisKK3ZvaWQgRGlzcGxheUFuZHJvaWQ6OnRlcm1pbmF0
ZSgpCit7CisgICAgRGlzcGxheUdMOjp0ZXJtaW5hdGUoKTsKKworICAgIEVHTEJvb2xlYW4gc3Vj
Y2VzcyA9IG1FR0wtPm1ha2VDdXJyZW50KEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7
CisgICAgaWYgKHN1Y2Nlc3MgPT0gRUdMX0ZBTFNFKQorICAgIHsKKyAgICAgICAgRVJSKCJlZ2xN
YWtlQ3VycmVudCBlcnJvciAweCUwNHgiLCBtRUdMLT5nZXRFcnJvcigpKTsKKyAgICB9CisKKyAg
ICBpZiAobUR1bW15UGJ1ZmZlciAhPSBFR0xfTk9fU1VSRkFDRSkKKyAgICB7CisgICAgICAgIHN1
Y2Nlc3MgPSBtRUdMLT5kZXN0cm95U3VyZmFjZShtRHVtbXlQYnVmZmVyKTsKKyAgICAgICAgbUR1
bW15UGJ1ZmZlciA9IEVHTF9OT19TVVJGQUNFOworICAgICAgICBpZiAoc3VjY2VzcyA9PSBFR0xf
RkFMU0UpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiZWdsRGVzdHJveVN1cmZhY2UgZXJy
b3IgMHglMDR4IiwgbUVHTC0+Z2V0RXJyb3IoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAobUNvbnRleHQgIT0gRUdMX05PX0NPTlRFWFQpCisgICAgeworICAgICAgICBzdWNjZXNzID0g
bUVHTC0+ZGVzdHJveUNvbnRleHQobUNvbnRleHQpOworICAgICAgICBtQ29udGV4dCA9IEVHTF9O
T19DT05URVhUOworICAgICAgICBpZiAoc3VjY2VzcyA9PSBFR0xfRkFMU0UpCisgICAgICAgIHsK
KyAgICAgICAgICAgIEVSUigiZWdsRGVzdHJveUNvbnRleHQgZXJyb3IgMHglMDR4IiwgbUVHTC0+
Z2V0RXJyb3IoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBlZ2w6OkVycm9yIHJlc3VsdCA9
IG1FR0wtPnRlcm1pbmF0ZSgpOworICAgIGlmIChyZXN1bHQuaXNFcnJvcigpKQorICAgIHsKKyAg
ICAgICAgRVJSKCJlZ2xUZXJtaW5hdGUgZXJyb3IgMHglMDR4IiwgcmVzdWx0LmdldENvZGUoKSk7
CisgICAgfQorCisgICAgU2FmZURlbGV0ZShtRUdMKTsKKyAgICBTYWZlRGVsZXRlKG1GdW5jdGlv
bnNHTCk7Cit9CisKK1N1cmZhY2VJbXBsICpEaXNwbGF5QW5kcm9pZDo6Y3JlYXRlV2luZG93U3Vy
ZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3Vy
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCit7
CisgICAgRUdMQ29uZmlnIGNvbmZpZzsKKyAgICBFR0xpbnQgbnVtQ29uZmlnOworICAgIEVHTEJv
b2xlYW4gc3VjY2VzczsKKworICAgIGNvbnN0IEVHTGludCBjb25maWdBdHRyaWJMaXN0W10gPSB7
RUdMX0NPTkZJR19JRCwgbUNvbmZpZ0lkc1tjb25maWd1cmF0aW9uLT5jb25maWdJRF0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfTk9ORX07CisgICAgc3VjY2Vz
cyA9IG1FR0wtPmNob29zZUNvbmZpZyhjb25maWdBdHRyaWJMaXN0LCAmY29uZmlnLCAxLCAmbnVt
Q29uZmlnKTsKKyAgICBBU1NFUlQoc3VjY2VzcyAmJiBudW1Db25maWcgPT0gMSk7CisgICAgVU5V
U0VEX0FTU0VSVElPTl9WQVJJQUJMRShzdWNjZXNzKTsKKworICAgIHJldHVybiBuZXcgV2luZG93
U3VyZmFjZUVHTChzdGF0ZSwgbUVHTCwgY29uZmlnLCB3aW5kb3csIGF0dHJpYnMudG9JbnRWZWN0
b3IoKSwgbUNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFJlbmRl
cmVyKCkpOworfQorCitTdXJmYWNlSW1wbCAqRGlzcGxheUFuZHJvaWQ6OmNyZWF0ZVBidWZmZXJT
dXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZp
Z3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQoreworICAgIEVHTENvbmZpZyBj
b25maWc7CisgICAgRUdMaW50IG51bUNvbmZpZzsKKyAgICBFR0xCb29sZWFuIHN1Y2Nlc3M7CisK
KyAgICBjb25zdCBFR0xpbnQgY29uZmlnQXR0cmliTGlzdFtdID0ge0VHTF9DT05GSUdfSUQsIG1D
b25maWdJZHNbY29uZmlndXJhdGlvbi0+Y29uZmlnSURdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRUdMX05PTkV9OworICAgIHN1Y2Nlc3MgPSBtRUdMLT5jaG9vc2VD
b25maWcoY29uZmlnQXR0cmliTGlzdCwgJmNvbmZpZywgMSwgJm51bUNvbmZpZyk7CisgICAgQVNT
RVJUKHN1Y2Nlc3MgJiYgbnVtQ29uZmlnID09IDEpOworICAgIFVOVVNFRF9BU1NFUlRJT05fVkFS
SUFCTEUoc3VjY2Vzcyk7CisKKyAgICByZXR1cm4gbmV3IFBidWZmZXJTdXJmYWNlRUdMKHN0YXRl
LCBtRUdMLCBjb25maWcsIGF0dHJpYnMudG9JbnRWZWN0b3IoKSwgbUNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRSZW5kZXJlcigpKTsKK30KKworU3VyZmFjZUlt
cGwgKkRpc3BsYXlBbmRyb2lkOjpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihjb25zdCBl
Z2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFR0xDbGllbnRCdWZmZXIgc2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmli
dXRlTWFwICZhdHRyaWJzKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworU3VyZmFjZUltcGwgKkRpc3BsYXlBbmRyb2lkOjpjcmVhdGVQaXhtYXBTdXJm
YWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO
YXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykK
K3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0ltYWdl
SW1wbCAqRGlzcGxheUFuZHJvaWQ6OmNyZWF0ZUltYWdlKEVHTGVudW0gdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpJbWFnZVNpYmxpbmcgKmJ1ZmZl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0
cmlidXRlTWFwICZhdHRyaWJzKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4g
RGlzcGxheUdMOjpjcmVhdGVJbWFnZSh0YXJnZXQsIGJ1ZmZlciwgYXR0cmlicyk7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBEaXNwbGF5QW5kcm9pZDo6Z2V0Q29uZmlnQXR0cmli
KEVHTENvbmZpZyBjb25maWcsIEVHTGludCBhdHRyaWJ1dGUsIFQgKnZhbHVlKSBjb25zdAorewor
ICAgIEVHTGludCB0bXA7CisgICAgRUdMQm9vbGVhbiBzdWNjZXNzID0gbUVHTC0+Z2V0Q29uZmln
QXR0cmliKGNvbmZpZywgYXR0cmlidXRlLCAmdG1wKTsKKyAgICBBU1NFUlQoc3VjY2VzcyA9PSBF
R0xfVFJVRSk7CisgICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRShzdWNjZXNzKTsKKyAgICAq
dmFsdWUgPSB0bXA7Cit9CisKK2VnbDo6Q29uZmlnU2V0IERpc3BsYXlBbmRyb2lkOjpnZW5lcmF0
ZUNvbmZpZ3MoKQoreworICAgIGVnbDo6Q29uZmlnU2V0IGNvbmZpZ1NldDsKKyAgICBtQ29uZmln
SWRzLmNsZWFyKCk7CisKKyAgICBFR0xpbnQgbnVtQ29uZmlnczsKKyAgICBFR0xCb29sZWFuIHN1
Y2Nlc3MgPSBtRUdMLT5jaG9vc2VDb25maWcobUNvbmZpZ0F0dHJpYkxpc3QuZGF0YSgpLCBudWxs
cHRyLCAwLCAmbnVtQ29uZmlncyk7CisgICAgQVNTRVJUKHN1Y2Nlc3MgPT0gRUdMX1RSVUUgJiYg
bnVtQ29uZmlncyA+IDApOworCisgICAgc3RkOjp2ZWN0b3I8RUdMQ29uZmlnPiBjb25maWdzKG51
bUNvbmZpZ3MpOworICAgIEVHTGludCBudW1Db25maWdzMjsKKyAgICBzdWNjZXNzID0KKyAgICAg
ICAgbUVHTC0+Y2hvb3NlQ29uZmlnKG1Db25maWdBdHRyaWJMaXN0LmRhdGEoKSwgY29uZmlncy5k
YXRhKCksIG51bUNvbmZpZ3MsICZudW1Db25maWdzMik7CisgICAgQVNTRVJUKHN1Y2Nlc3MgPT0g
RUdMX1RSVUUgJiYgbnVtQ29uZmlnczIgPT0gbnVtQ29uZmlncyk7CisgICAgVU5VU0VEX0FTU0VS
VElPTl9WQVJJQUJMRShzdWNjZXNzKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ29u
ZmlnczsgaSsrKQorICAgIHsKKyAgICAgICAgZWdsOjpDb25maWcgY29uZmlnOworCisgICAgICAg
IGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xfQlVGRkVSX1NJWkUsICZjb25maWcuYnVm
ZmVyU2l6ZSk7CisgICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xfUkVEX1NJ
WkUsICZjb25maWcucmVkU2l6ZSk7CisgICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ld
LCBFR0xfR1JFRU5fU0laRSwgJmNvbmZpZy5ncmVlblNpemUpOworICAgICAgICBnZXRDb25maWdB
dHRyaWIoY29uZmlnc1tpXSwgRUdMX0JMVUVfU0laRSwgJmNvbmZpZy5ibHVlU2l6ZSk7CisgICAg
ICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xfTFVNSU5BTkNFX1NJWkUsICZjb25m
aWcubHVtaW5hbmNlU2l6ZSk7CisgICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ldLCBF
R0xfQUxQSEFfU0laRSwgJmNvbmZpZy5hbHBoYVNpemUpOworICAgICAgICBnZXRDb25maWdBdHRy
aWIoY29uZmlnc1tpXSwgRUdMX0FMUEhBX01BU0tfU0laRSwgJmNvbmZpZy5hbHBoYU1hc2tTaXpl
KTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9CSU5EX1RPX1RFWFRV
UkVfUkdCLCAmY29uZmlnLmJpbmRUb1RleHR1cmVSR0IpOworICAgICAgICBnZXRDb25maWdBdHRy
aWIoY29uZmlnc1tpXSwgRUdMX0JJTkRfVE9fVEVYVFVSRV9SR0JBLCAmY29uZmlnLmJpbmRUb1Rl
eHR1cmVSR0JBKTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9DT0xP
Ul9CVUZGRVJfVFlQRSwgJmNvbmZpZy5jb2xvckJ1ZmZlclR5cGUpOworICAgICAgICBnZXRDb25m
aWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX0NPTkZJR19DQVZFQVQsICZjb25maWcuY29uZmlnQ2F2
ZWF0KTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9DT05GSUdfSUQs
ICZjb25maWcuY29uZmlnSUQpOworICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwg
RUdMX0NPTkZPUk1BTlQsICZjb25maWcuY29uZm9ybWFudCk7CisgICAgICAgIGdldENvbmZpZ0F0
dHJpYihjb25maWdzW2ldLCBFR0xfREVQVEhfU0laRSwgJmNvbmZpZy5kZXB0aFNpemUpOworICAg
ICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX0xFVkVMLCAmY29uZmlnLmxldmVs
KTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9NQVhfUEJVRkZFUl9X
SURUSCwgJmNvbmZpZy5tYXhQQnVmZmVyV2lkdGgpOworICAgICAgICBnZXRDb25maWdBdHRyaWIo
Y29uZmlnc1tpXSwgRUdMX01BWF9QQlVGRkVSX0hFSUdIVCwgJmNvbmZpZy5tYXhQQnVmZmVySGVp
Z2h0KTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9NQVhfUEJVRkZF
Ul9QSVhFTFMsICZjb25maWcubWF4UEJ1ZmZlclBpeGVscyk7CisgICAgICAgIGdldENvbmZpZ0F0
dHJpYihjb25maWdzW2ldLCBFR0xfTUFYX1NXQVBfSU5URVJWQUwsICZjb25maWcubWF4U3dhcElu
dGVydmFsKTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9NSU5fU1dB
UF9JTlRFUlZBTCwgJmNvbmZpZy5taW5Td2FwSW50ZXJ2YWwpOworICAgICAgICBnZXRDb25maWdB
dHRyaWIoY29uZmlnc1tpXSwgRUdMX05BVElWRV9SRU5ERVJBQkxFLCAmY29uZmlnLm5hdGl2ZVJl
bmRlcmFibGUpOworICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX05BVElW
RV9WSVNVQUxfSUQsICZjb25maWcubmF0aXZlVmlzdWFsSUQpOworICAgICAgICBnZXRDb25maWdB
dHRyaWIoY29uZmlnc1tpXSwgRUdMX05BVElWRV9WSVNVQUxfVFlQRSwgJmNvbmZpZy5uYXRpdmVW
aXN1YWxUeXBlKTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9SRU5E
RVJBQkxFX1RZUEUsICZjb25maWcucmVuZGVyYWJsZVR5cGUpOworICAgICAgICBnZXRDb25maWdB
dHRyaWIoY29uZmlnc1tpXSwgRUdMX1NBTVBMRV9CVUZGRVJTLCAmY29uZmlnLnNhbXBsZUJ1ZmZl
cnMpOworICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX1NBTVBMRVMsICZj
b25maWcuc2FtcGxlcyk7CisgICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xf
U1RFTkNJTF9TSVpFLCAmY29uZmlnLnN0ZW5jaWxTaXplKTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0
cmliKGNvbmZpZ3NbaV0sIEVHTF9TVVJGQUNFX1RZUEUsICZjb25maWcuc3VyZmFjZVR5cGUpOwor
ICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX1RSQU5TUEFSRU5UX1RZUEUs
ICZjb25maWcudHJhbnNwYXJlbnRUeXBlKTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZp
Z3NbaV0sIEVHTF9UUkFOU1BBUkVOVF9SRURfVkFMVUUsICZjb25maWcudHJhbnNwYXJlbnRSZWRW
YWx1ZSk7CisgICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xfVFJBTlNQQVJF
TlRfR1JFRU5fVkFMVUUsICZjb25maWcudHJhbnNwYXJlbnRHcmVlblZhbHVlKTsKKyAgICAgICAg
Z2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9UUkFOU1BBUkVOVF9CTFVFX1ZBTFVFLCAm
Y29uZmlnLnRyYW5zcGFyZW50Qmx1ZVZhbHVlKTsKKworICAgICAgICBpZiAoY29uZmlnLmNvbG9y
QnVmZmVyVHlwZSA9PSBFR0xfUkdCX0JVRkZFUikKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KGNvbmZpZy5yZWRTaXplID09IDggJiYgY29uZmlnLmdyZWVuU2l6ZSA9PSA4ICYmIGNvbmZpZy5i
bHVlU2l6ZSA9PSA4ICYmCisgICAgICAgICAgICAgICAgY29uZmlnLmFscGhhU2l6ZSA9PSA4KQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbmZpZy5yZW5kZXJUYXJnZXRGb3JtYXQg
PSBHTF9SR0JBODsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGNvbmZpZy5y
ZWRTaXplID09IDggJiYgY29uZmlnLmdyZWVuU2l6ZSA9PSA4ICYmIGNvbmZpZy5ibHVlU2l6ZSA9
PSA4ICYmCisgICAgICAgICAgICAgICAgICAgICBjb25maWcuYWxwaGFTaXplID09IDApCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uZmlnLnJlbmRlclRhcmdldEZvcm1hdCA9IEdM
X1JHQjg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjb25maWcucmVkU2l6
ZSA9PSA1ICYmIGNvbmZpZy5ncmVlblNpemUgPT0gNiAmJiBjb25maWcuYmx1ZVNpemUgPT0gNSAm
JgorICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmFscGhhU2l6ZSA9PSAwKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGNvbmZpZy5yZW5kZXJUYXJnZXRGb3JtYXQgPSBHTF9SR0I1
NjU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoY29uZmlnLmRlcHRoU2l6ZSA9PSAwICYmIGNvbmZpZy5zdGVuY2ls
U2l6ZSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBjb25maWcuZGVwdGhTdGVuY2lsRm9y
bWF0ID0gR0xfWkVSTzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChjb25maWcuZGVwdGhT
aXplID09IDE2ICYmIGNvbmZpZy5zdGVuY2lsU2l6ZSA9PSAwKQorICAgICAgICB7CisgICAgICAg
ICAgICBjb25maWcuZGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEhfQ09NUE9ORU5UMTY7Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoY29uZmlnLmRlcHRoU2l6ZSA9PSAyNCAmJiBjb25m
aWcuc3RlbmNpbFNpemUgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgY29uZmlnLmRlcHRo
U3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVOVDI0OworICAgICAgICB9CisgICAgICAg
IGVsc2UgaWYgKGNvbmZpZy5kZXB0aFNpemUgPT0gMjQgJiYgY29uZmlnLnN0ZW5jaWxTaXplID09
IDgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbmZpZy5kZXB0aFN0ZW5jaWxGb3JtYXQgPSBH
TF9ERVBUSDI0X1NURU5DSUw4OworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGNvbmZpZy5k
ZXB0aFNpemUgPT0gMCAmJiBjb25maWcuc3RlbmNpbFNpemUgPT0gOCkKKyAgICAgICAgeworICAg
ICAgICAgICAgY29uZmlnLmRlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX1NURU5DSUxfSU5ERVg4Owor
ICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbmZpZy5tYXRjaE5hdGl2ZVBpeG1hcCA9IEVH
TF9OT05FOworICAgICAgICBjb25maWcub3B0aW1hbE9yaWVudGF0aW9uID0gMDsKKworICAgICAg
ICBpbnQgaW50ZXJuYWxJZCA9IGNvbmZpZ1NldC5hZGQoY29uZmlnKTsKKyAgICAgICAgbUNvbmZp
Z0lkc1tpbnRlcm5hbElkXSA9IGNvbmZpZy5jb25maWdJRDsKKyAgICB9CisKKyAgICByZXR1cm4g
Y29uZmlnU2V0OworfQorCitib29sIERpc3BsYXlBbmRyb2lkOjp0ZXN0RGV2aWNlTG9zdCgpCit7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitlZ2w6OkVycm9yIERpc3BsYXlBbmRyb2lkOjpyZXN0
b3JlTG9zdERldmljZSgpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBlZ2w6
OkVycm9yKEVHTF9TVUNDRVNTKTsKK30KKworYm9vbCBEaXNwbGF5QW5kcm9pZDo6aXNWYWxpZE5h
dGl2ZVdpbmRvdyhFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdykgY29uc3QKK3sKKyAgICByZXR1
cm4gQU5hdGl2ZVdpbmRvd19nZXRGb3JtYXQod2luZG93KSA+PSAwOworfQorCitlZ2w6OkVycm9y
IERpc3BsYXlBbmRyb2lkOjpnZXREZXZpY2UoRGV2aWNlSW1wbCAqKmRldmljZSkKK3sKKyAgICBV
TklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOworfQor
CitlZ2w6OkVycm9yIERpc3BsYXlBbmRyb2lkOjp3YWl0Q2xpZW50KCkgY29uc3QKK3sKKyAgICBV
TklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOworfQor
CitlZ2w6OkVycm9yIERpc3BsYXlBbmRyb2lkOjp3YWl0TmF0aXZlKEVHTGludCBlbmdpbmUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3VyZmFjZSAqZHJhd1N1
cmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3VyZmFj
ZSAqcmVhZFN1cmZhY2UpIGNvbnN0Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVy
biBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKK30KKworZWdsOjpFcnJvciBEaXNwbGF5QW5kcm9p
ZDo6Z2V0RHJpdmVyVmVyc2lvbihzdGQ6OnN0cmluZyAqdmVyc2lvbikgY29uc3QKK3sKKyAgICBW
ZW5kb3JJRCB2ZW5kb3IgPSBHZXRWZW5kb3JJRChtRnVuY3Rpb25zR0wpOworCisgICAgc3dpdGNo
ICh2ZW5kb3IpCisgICAgeworICAgICAgICBjYXNlIFZFTkRPUl9JRF9RVUFMQ09NTToKKyAgICAg
ICAgICAgICp2ZXJzaW9uID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KG1GdW5jdGlv
bnNHTC0+Z2V0U3RyaW5nKEdMX1ZFUlNJT04pKTsKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OkVy
cm9yKEVHTF9TVUNDRVNTKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICp2ZXJzaW9u
ID0gIiI7CisgICAgICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CisgICAg
fQorfQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvYW5kcm9pZC9EaXNwbGF5QW5kcm9pZC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC9lZ2wvYW5kcm9pZC9EaXNwbGF5QW5kcm9pZC5oCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvYW5kcm9pZC9E
aXNwbGF5QW5kcm9pZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzcgQEAKKy8vCisvLyBD
b3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisvLworCisvLyBEaXNwbGF5QW5kcm9pZC5oOiBBbmRyb2lkIGltcGxlbWVudGF0aW9uIG9mIGVn
bDo6RGlzcGxheQorCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0dMX0VHTF9BTkRST0lEX0RJ
U1BMQVlBTkRST0lEX0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0dMX0VHTF9BTkRST0lE
X0RJU1BMQVlBTkRST0lEX0hfCisKKyNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8c3RyaW5nPgor
I2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9E
aXNwbGF5RUdMLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBEaXNwbGF5QW5kcm9pZCA6
IHB1YmxpYyBEaXNwbGF5RUdMCit7CisgIHB1YmxpYzoKKyAgICBEaXNwbGF5QW5kcm9pZCgpOwor
ICAgIH5EaXNwbGF5QW5kcm9pZCgpIG92ZXJyaWRlOworCisgICAgZWdsOjpFcnJvciBpbml0aWFs
aXplKGVnbDo6RGlzcGxheSAqZGlzcGxheSkgb3ZlcnJpZGU7CisgICAgdm9pZCB0ZXJtaW5hdGUo
KSBvdmVycmlkZTsKKworICAgIFN1cmZhY2VJbXBsICpjcmVhdGVXaW5kb3dTdXJmYWNlKGNvbnN0
IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAm
YXR0cmlicykgb3ZlcnJpZGU7CisgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBidWZmZXJTdXJmYWNl
KGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZh
dHRyaWJzKSBvdmVycmlkZTsKKyAgICBTdXJmYWNlSW1wbCAqY3JlYXRlUGJ1ZmZlckZyb21DbGll
bnRCdWZmZXIoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmln
dXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RUdMQ2xpZW50QnVmZmVyIHNoYXJlSGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3Zl
cnJpZGU7CisgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBpeG1hcFN1cmZhY2UoY29uc3QgZWdsOjpT
dXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5hdGl2ZVBpeG1hcFR5cGUgbmF0aXZlUGl4bWFwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRy
aWJzKSBvdmVycmlkZTsKKworICAgIEltYWdlSW1wbCAqY3JlYXRlSW1hZ2UoRUdMZW51bSB0YXJn
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OkltYWdlU2libGluZyAqYnVmZmVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0
dHJpYnMpIG92ZXJyaWRlOworCisgICAgZWdsOjpDb25maWdTZXQgZ2VuZXJhdGVDb25maWdzKCkg
b3ZlcnJpZGU7CisKKyAgICBib29sIHRlc3REZXZpY2VMb3N0KCkgb3ZlcnJpZGU7CisgICAgZWds
OjpFcnJvciByZXN0b3JlTG9zdERldmljZSgpIG92ZXJyaWRlOworCisgICAgYm9vbCBpc1ZhbGlk
TmF0aXZlV2luZG93KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KSBjb25zdCBvdmVycmlkZTsK
KworICAgIGVnbDo6RXJyb3IgZ2V0RGV2aWNlKERldmljZUltcGwgKipkZXZpY2UpIG92ZXJyaWRl
OworCisgICAgZWdsOjpFcnJvciB3YWl0Q2xpZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgZWds
OjpFcnJvciB3YWl0TmF0aXZlKEVHTGludCBlbmdpbmUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVnbDo6U3VyZmFjZSAqZHJhd1N1cmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGVnbDo6U3VyZmFjZSAqcmVhZFN1cmZhY2UpIGNvbnN0IG92ZXJyaWRlOworCisgICAgZWdsOjpF
cnJvciBnZXREcml2ZXJWZXJzaW9uKHN0ZDo6c3RyaW5nICp2ZXJzaW9uKSBjb25zdCBvdmVycmlk
ZTsKKworICBwcml2YXRlOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgZ2V0
Q29uZmlnQXR0cmliKEVHTENvbmZpZyBjb25maWcsIEVHTGludCBhdHRyaWJ1dGUsIFQgKnZhbHVl
KSBjb25zdDsKKworICAgIHN0ZDo6dmVjdG9yPEVHTGludD4gbUNvbmZpZ0F0dHJpYkxpc3Q7Cisg
ICAgc3RkOjptYXA8RUdMaW50LCBFR0xpbnQ+IG1Db25maWdJZHM7CisgICAgRUdMU3VyZmFjZSBt
RHVtbXlQYnVmZmVyOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gTElC
QU5HTEVfUkVOREVSRVJfR0xfRUdMX0FORFJPSURfRElTUExBWUFORFJPSURfSF8KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvZnVuY3Rp
b25zZWdsX3R5cGVkZWZzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9mdW5jdGlvbnNlZ2xfdHlwZWRlZnMuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvZWdsL2Z1bmN0aW9uc2VnbF90eXBlZGVmcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTMxIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gZnVuY3Rpb25zZWdsX3R5cGVkZWZzLmg6IFR5
cGVkZWZzIG9mIEVHTCBmdW5jdGlvbnMuCisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfR0xf
RUdMX0ZVTkNUSU9OU0VHTFRZUEVERUZTX0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0dM
X0VHTF9GVU5DVElPTlNFR0xUWVBFREVGU19IXworCisjaW5jbHVkZSA8RUdML2VnbC5oPgorCitu
YW1lc3BhY2UgcngKK3sKKy8vIEVHTCAxLjAKK3R5cGVkZWYgRUdMQm9vbGVhbiAoKlBGTkVHTENI
T09TRUNPTkZJR1BST0MpKEVHTERpc3BsYXkgZHB5LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENvbmZpZyAqY29uZmlncywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBjb25m
aWdfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVH
TGludCAqbnVtX2NvbmZpZyk7Cit0eXBlZGVmIEVHTEJvb2xlYW4gKCpQRk5FR0xDT1BZQlVGRkVS
U1BST0MpKEVHTERpc3BsYXkgZHB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFR0xTdXJmYWNlIHN1cmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2ZVBpeG1hcFR5cGUgdGFyZ2V0KTsKK3R5cGVkZWYg
RUdMQ29udGV4dCAoKlBGTkVHTENSRUFURUNPTlRFWFRQUk9DKShFR0xEaXNwbGF5IGRweSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDb25maWcgY29u
ZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENv
bnRleHQgc2hhcmVfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0KTsKK3R5cGVkZWYgRUdMU3VyZmFj
ZSAoKlBGTkVHTENSRUFURVBCVUZGRVJTVVJGQUNFUFJPQykoRUdMRGlzcGxheSBkcHksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENvbmZp
ZyBjb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpOwordHlwZWRlZiBFR0xTdXJmYWNlICgq
UEZORUdMQ1JFQVRFUElYTUFQU1VSRkFDRVBST0MpKEVHTERpc3BsYXkgZHB5LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENvbmZpZyBjb25m
aWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RUdMTmF0aXZlUGl4bWFwVHlwZSBwaXhtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCk7Cit0eXBl
ZGVmIEVHTFN1cmZhY2UgKCpQRk5FR0xDUkVBVEVXSU5ET1dTVVJGQUNFUFJPQykoRUdMRGlzcGxh
eSBkcHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRUdMQ29uZmlnIGNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFR0xpbnQgKmF0dHJp
Yl9saXN0KTsKK3R5cGVkZWYgRUdMQm9vbGVhbiAoKlBGTkVHTERFU1RST1lDT05URVhUUFJPQyko
RUdMRGlzcGxheSBkcHksIEVHTENvbnRleHQgY3R4KTsKK3R5cGVkZWYgRUdMQm9vbGVhbiAoKlBG
TkVHTERFU1RST1lTVVJGQUNFUFJPQykoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFj
ZSk7Cit0eXBlZGVmIEVHTEJvb2xlYW4gKCpQRk5FR0xHRVRDT05GSUdBVFRSSUJQUk9DKShFR0xE
aXNwbGF5IGRweSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEVHTENvbmZpZyBjb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFR0xpbnQgYXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50ICp2YWx1ZSk7Cit0eXBlZGVmIEVHTEJvb2xl
YW4gKCpQRk5FR0xHRVRDT05GSUdTUFJPQykoRUdMRGlzcGxheSBkcHksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ29uZmlnICpjb25maWdzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBjb25maWdfc2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgKm51bV9j
b25maWcpOwordHlwZWRlZiBFR0xEaXNwbGF5ICgqUEZORUdMR0VUQ1VSUkVOVERJU1BMQVlQUk9D
KSh2b2lkKTsKK3R5cGVkZWYgRUdMU3VyZmFjZSAoKlBGTkVHTEdFVENVUlJFTlRTVVJGQUNFUFJP
QykoRUdMaW50IHJlYWRkcmF3KTsKK3R5cGVkZWYgRUdMRGlzcGxheSAoKlBGTkVHTEdFVERJU1BM
QVlQUk9DKShFR0xOYXRpdmVEaXNwbGF5VHlwZSBkaXNwbGF5X2lkKTsKK3R5cGVkZWYgRUdMaW50
ICgqUEZORUdMR0VURVJST1JQUk9DKSh2b2lkKTsKK3R5cGVkZWYgX19lZ2xNdXN0Q2FzdFRvUHJv
cGVyRnVuY3Rpb25Qb2ludGVyVHlwZSAoKlBGTkVHTEdFVFBST0NBRERSRVNTUFJPQykoY29uc3Qg
Y2hhciAqcHJvY25hbWUpOwordHlwZWRlZiBFR0xCb29sZWFuICgqUEZORUdMSU5JVElBTElaRVBS
T0MpKEVHTERpc3BsYXkgZHB5LCBFR0xpbnQgKm1ham9yLCBFR0xpbnQgKm1pbm9yKTsKK3R5cGVk
ZWYgRUdMQm9vbGVhbiAoKlBGTkVHTE1BS0VDVVJSRU5UUFJPQykoRUdMRGlzcGxheSBkcHksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTFN1cmZhY2UgZHJh
dywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMU3VyZmFj
ZSByZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xD
b250ZXh0IGN0eCk7Cit0eXBlZGVmIEVHTEJvb2xlYW4gKCpQRk5FR0xRVUVSWUNPTlRFWFRQUk9D
KShFR0xEaXNwbGF5IGRweSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVHTENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRUdMaW50IGF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVHTGludCAqdmFsdWUpOwordHlwZWRlZiBjb25zdCBjaGFyICoo
KlBGTkVHTFFVRVJZU1RSSU5HUFJPQykoRUdMRGlzcGxheSBkcHksIEVHTGludCBuYW1lKTsKK3R5
cGVkZWYgRUdMQm9vbGVhbiAoKlBGTkVHTFFVRVJZU1VSRkFDRVBST0MpKEVHTERpc3BsYXkgZHB5
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMU3VyZmFj
ZSBzdXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RUdMaW50IGF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVHTGludCAqdmFsdWUpOwordHlwZWRlZiBFR0xCb29sZWFuICgqUEZORUdMU1dBUEJV
RkZFUlNQUk9DKShFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlKTsKK3R5cGVkZWYg
RUdMQm9vbGVhbiAoKlBGTkVHTFRFUk1JTkFURVBST0MpKEVHTERpc3BsYXkgZHB5KTsKK3R5cGVk
ZWYgRUdMQm9vbGVhbiAoKlBGTkVHTFdBSVRHTFBST0MpKHZvaWQpOwordHlwZWRlZiBFR0xCb29s
ZWFuICgqUEZORUdMV0FJVE5BVElWRVBST0MpKEVHTGludCBlbmdpbmUpOworCisvLyBFR0wgMS4x
Cit0eXBlZGVmIEVHTEJvb2xlYW4gKCpQRk5FR0xCSU5EVEVYSU1BR0VQUk9DKShFR0xEaXNwbGF5
IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xpbnQgYnVmZmVyKTsKK3R5cGVkZWYgRUdMQm9v
bGVhbiAoKlBGTkVHTFJFTEVBU0VURVhJTUFHRVBST0MpKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJm
YWNlIHN1cmZhY2UsIEVHTGludCBidWZmZXIpOwordHlwZWRlZiBFR0xCb29sZWFuICgqUEZORUdM
U1VSRkFDRUFUVFJJQlBST0MpKEVHTERpc3BsYXkgZHB5LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgYXR0cmlidXRlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCB2YWx1ZSk7
Cit0eXBlZGVmIEVHTEJvb2xlYW4gKCpQRk5FR0xTV0FQSU5URVJWQUxQUk9DKShFR0xEaXNwbGF5
IGRweSwgRUdMaW50IGludGVydmFsKTsKKworLy8gRUdMIDEuMgordHlwZWRlZiBFR0xCb29sZWFu
ICgqUEZORUdMQklOREFQSVBST0MpKEVHTGVudW0gYXBpKTsKK3R5cGVkZWYgRUdMZW51bSAoKlBG
TkVHTFFVRVJZQVBJUFJPQykodm9pZCk7Cit0eXBlZGVmIEVHTFN1cmZhY2UgKCpQRk5FR0xDUkVB
VEVQQlVGRkVSRlJPTUNMSUVOVEJVRkZFUlBST0MpKEVHTERpc3BsYXkgZHB5LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xl
bnVtIGJ1ZnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBidWZmZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENvbmZp
ZyBjb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpOwordHlwZWRlZiBFR0xC
b29sZWFuICgqUEZORUdMUkVMRUFTRVRIUkVBRFBST0MpKHZvaWQpOwordHlwZWRlZiBFR0xCb29s
ZWFuICgqUEZORUdMV0FJVENMSUVOVFBST0MpKHZvaWQpOworCisvLyBFR0wgMS4zCisKKy8vIEVH
TCAxLjQKK3R5cGVkZWYgRUdMQ29udGV4dCAoKlBGTkVHTEdFVENVUlJFTlRDT05URVhUUFJPQyko
dm9pZCk7CisKKy8vIEVHTCAxLjUKK3R5cGVkZWYgRUdMU3luYyAoKlBGTkVHTENSRUFURVNZTkNQ
Uk9DKShFR0xEaXNwbGF5IGRweSwgRUdMZW51bSB0eXBlLCBjb25zdCBFR0xBdHRyaWIgKmF0dHJp
Yl9saXN0KTsKK3R5cGVkZWYgRUdMQm9vbGVhbiAoKlBGTkVHTERFU1RST1lTWU5DUFJPQykoRUdM
RGlzcGxheSBkcHksIEVHTFN5bmMgc3luYyk7Cit0eXBlZGVmIEVHTGludCAoKlBGTkVHTENMSUVO
VFdBSVRTWU5DUFJPQykoRUdMRGlzcGxheSBkcHksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRUdMU3luYyBzeW5jLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVHTGludCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFR0xUaW1lIHRpbWVvdXQpOwordHlwZWRlZiBFR0xCb29sZWFu
ICgqUEZORUdMR0VUU1lOQ0FUVFJJQlBST0MpKEVHTERpc3BsYXkgZHB5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTFN5bmMgc3luYywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgYXR0cmlidXRlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTEF0dHJpYiAq
dmFsdWUpOwordHlwZWRlZiBFR0xJbWFnZSAoKlBGTkVHTENSRUFURUlNQUdFUFJPQykoRUdMRGlz
cGxheSBkcHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xD
b250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVH
TGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RUdMQ2xpZW50QnVmZmVyIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEVHTEF0dHJpYiAqYXR0cmliX2xpc3QpOwordHlwZWRlZiBFR0xCb29s
ZWFuICgqUEZORUdMREVTVFJPWUlNQUdFUFJPQykoRUdMRGlzcGxheSBkcHksIEVHTEltYWdlIGlt
YWdlKTsKK3R5cGVkZWYgRUdMRGlzcGxheSAoKlBGTkVHTEdFVFBMQVRGT1JNRElTUExBWVBST0Mp
KEVHTGVudW0gcGxhdGZvcm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2b2lkICpuYXRpdmVfZGlzcGxheSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVHTEF0dHJpYiAqYXR0cmliX2xp
c3QpOwordHlwZWRlZiBFR0xTdXJmYWNlICgqUEZORUdMQ1JFQVRFUExBVEZPUk1XSU5ET1dTVVJG
QUNFUFJPQykoRUdMRGlzcGxheSBkcHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDb25maWcgY29uZmlnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAq
bmF0aXZlX3dpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEVHTEF0dHJpYiAqYXR0cmliX2xpc3QpOwordHlwZWRl
ZiBFR0xTdXJmYWNlICgqUEZORUdMQ1JFQVRFUExBVEZPUk1QSVhNQVBTVVJGQUNFUFJPQykoRUdM
RGlzcGxheSBkcHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFR0xDb25maWcgY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqbmF0aXZlX3BpeG1h
cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEVHTEF0dHJpYiAqYXR0cmliX2xpc3QpOwordHlwZWRlZiBFR0xCb29sZWFu
ICgqUEZORUdMV0FJVFNZTkNQUk9DKShFR0xEaXNwbGF5IGRweSwgRUdMU3luYyBzeW5jLCBFR0xp
bnQgZmxhZ3MpOworCit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJBTkdMRV9S
RU5ERVJFUl9HTF9FR0xfRlVOQ1RJT05TRUdMVFlQRURFRlNfSF8KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvb3pvbmUvRGlzcGxheU96
b25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvZWdsL296b25lL0Rpc3BsYXlPem9uZS5jcHAJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9v
em9uZS9EaXNwbGF5T3pvbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTQ0IEBACisv
LworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKworLy8gRGlzcGxheU96b25lLmNwcDogT3pvbmUgaW1wbGVtZW50YXRpb24g
b2YgZWdsOjpEaXNwbGF5CisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvb3pv
bmUvRGlzcGxheU96b25lLmgiCisKKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHBvbGwu
aD4KKyNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxz
eXMvdGltZS5oPgorCisjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgorCisjaW5jbHVkZSA8Z2JtLmg+
CisjaW5jbHVkZSA8ZHJtX2ZvdXJjYy5oPgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisj
aW5jbHVkZSAibGliQU5HTEUvQ29uZmlnLmgiCisjaW5jbHVkZSAibGliQU5HTEUvRGlzcGxheS5o
IgorI2luY2x1ZGUgImxpYkFOR0xFL1N1cmZhY2UuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9nbC9GcmFtZWJ1ZmZlckdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wv
UmVuZGVyZXJHTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdl
ckdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Z1bmN0aW9uc0VHTERM
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL296b25lL1N1cmZhY2VPem9u
ZS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1BsYXRmb3JtLmgiCisKKy8vIEFSTS1zcGVjaWZpYyBl
eHRlbnNpb24gbmVlZGVkIHRvIG1ha2UgTWFsaSBHUFUgYmVoYXZlIC0gbm90IGluIGFueQorLy8g
cHVibGlzaGVkIGhlYWRlciBmaWxlLgorI2lmbmRlZiBFR0xfU1lOQ19QUklPUl9DT01NQU5EU19J
TVBMSUNJVF9FWFRFUk5BTF9BUk0KKyNkZWZpbmUgRUdMX1NZTkNfUFJJT1JfQ09NTUFORFNfSU1Q
TElDSVRfRVhURVJOQUxfQVJNIDB4MzI4QQorI2VuZGlmCisKKyNpZm5kZWYgRUdMX05PX0NPTkZJ
R19NRVNBCisjZGVmaW5lIEVHTF9OT19DT05GSUdfTUVTQSAoKEVHTENvbmZpZykwKQorI2VuZGlm
CisKK25hbWVzcGFjZQoreworCitFR0xpbnQgVW5zaWduZWRUb1NpZ25lZCh1aW50MzJfdCB1KQor
eworICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBFR0xpbnQgKj4oJnUpOworfQor
Citkcm1Nb2RlTW9kZUluZm9QdHIgQ2hvb3NlTW9kZShkcm1Nb2RlQ29ubmVjdG9yUHRyIGNvbm4p
Cit7CisgICAgZHJtTW9kZU1vZGVJbmZvUHRyIG1vZGUgPSBudWxscHRyOworICAgIEFTU0VSVChj
b25uKTsKKyAgICBBU1NFUlQoY29ubi0+Y29ubmVjdGlvbiA9PSBEUk1fTU9ERV9DT05ORUNURUQp
OworICAgIC8vIHVzZSBmaXJzdCBwcmVmZXJyZWQgbW9kZSBpZiBhbnksIGVsc2UgZW5kIHVwIHdp
dGggbGFzdCBtb2RlIGluIGxpc3QKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvbm4tPmNvdW50
X21vZGVzOyArK2kpCisgICAgeworICAgICAgICBtb2RlID0gY29ubi0+bW9kZXMgKyBpOworICAg
ICAgICBpZiAobW9kZS0+dHlwZSAmIERSTV9NT0RFX1RZUEVfUFJFRkVSUkVEKQorICAgICAgICB7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbW9kZTsK
K30KKworaW50IENob29zZUNSVEMoaW50IGZkLCBkcm1Nb2RlQ29ubmVjdG9yUHRyIGNvbm4pCit7
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb25uLT5jb3VudF9lbmNvZGVyczsgKytpKQorICAg
IHsKKyAgICAgICAgZHJtTW9kZUVuY29kZXJQdHIgZW5jID0gZHJtTW9kZUdldEVuY29kZXIoZmQs
IGNvbm4tPmVuY29kZXJzW2ldKTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBjcnRjcyA9IGVuYy0+
cG9zc2libGVfY3J0Y3M7CisgICAgICAgIGRybU1vZGVGcmVlRW5jb2RlcihlbmMpOworICAgICAg
ICBpZiAoY3J0Y3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBfX2J1aWx0aW5fY3R6
bChjcnRjcyk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIC0xOworfQorfSAgLy8gbmFt
ZXNwYWNlCisKK25hbWVzcGFjZSByeAoreworCisvLyBUT0RPKGZqaGVuaWdtYW4pIEltcGxlbWVu
dCBzd2FwIGNvbnRyb2wuICBVbnRpbCB0aGVuIHRoaXMgaXMgdW51c2VkLgorU3dhcENvbnRyb2xE
YXRhOjpTd2FwQ29udHJvbERhdGEoKQorICAgIDogdGFyZ2V0U3dhcEludGVydmFsKDApLCBtYXhT
d2FwSW50ZXJ2YWwoLTEpLCBjdXJyZW50U3dhcEludGVydmFsKC0xKQoreworfQorCitEaXNwbGF5
T3pvbmU6OkJ1ZmZlcjo6QnVmZmVyKERpc3BsYXlPem9uZSAqZGlzcGxheSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDMyX3QgdXNlRmxhZ3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQzMl90IGdibUZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDMyX3QgZHJtRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
MzJfdCBkcm1Gb3JtYXRGQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlcHRo
Qml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0ZW5jaWxCaXRzKQorICAg
IDogbURpc3BsYXkoZGlzcGxheSksCisgICAgICBtTmF0aXZlKG51bGxwdHIpLAorICAgICAgbVdp
ZHRoKDApLAorICAgICAgbUhlaWdodCgwKSwKKyAgICAgIG1EZXB0aEJpdHMoZGVwdGhCaXRzKSwK
KyAgICAgIG1TdGVuY2lsQml0cyhzdGVuY2lsQml0cyksCisgICAgICBtVXNlRmxhZ3ModXNlRmxh
Z3MpLAorICAgICAgbUdCTUZvcm1hdChnYm1Gb3JtYXQpLAorICAgICAgbURSTUZvcm1hdChkcm1G
b3JtYXQpLAorICAgICAgbURSTUZvcm1hdEZCKGRybUZvcm1hdEZCKSwKKyAgICAgIG1CTyhudWxs
cHRyKSwKKyAgICAgIG1ETUFCdWYoLTEpLAorICAgICAgbUhhc0RSTUZCKGZhbHNlKSwKKyAgICAg
IG1EUk1GQigwKSwKKyAgICAgIG1JbWFnZShFR0xfTk9fSU1BR0VfS0hSKSwKKyAgICAgIG1Db2xv
ckJ1ZmZlcigwKSwKKyAgICAgIG1EU0J1ZmZlcigwKSwKKyAgICAgIG1HTEZCKDApLAorICAgICAg
bVRleHR1cmUoMCkKK3sKK30KKworRGlzcGxheU96b25lOjpCdWZmZXI6On5CdWZmZXIoKQorewor
ICAgIG1EaXNwbGF5LT5tRnVuY3Rpb25zR0wtPmRlbGV0ZUZyYW1lYnVmZmVycygxLCAmbUdMRkIp
OworICAgIHJlc2V0KCk7Cit9CisKK3ZvaWQgRGlzcGxheU96b25lOjpCdWZmZXI6OnJlc2V0KCkK
K3sKKyAgICBpZiAobUhhc0RSTUZCKQorICAgIHsKKyAgICAgICAgaW50IGZkID0gZ2JtX2Rldmlj
ZV9nZXRfZmQobURpc3BsYXktPm1HQk0pOworICAgICAgICBkcm1Nb2RlUm1GQihmZCwgbURSTUZC
KTsKKyAgICAgICAgbUhhc0RSTUZCID0gZmFsc2U7CisgICAgfQorCisgICAgRnVuY3Rpb25zR0wg
KmdsID0gbURpc3BsYXktPm1GdW5jdGlvbnNHTDsKKyAgICBnbC0+ZGVsZXRlUmVuZGVyYnVmZmVy
cygxLCAmbUNvbG9yQnVmZmVyKTsKKyAgICBtQ29sb3JCdWZmZXIgPSAwOworICAgIGdsLT5kZWxl
dGVSZW5kZXJidWZmZXJzKDEsICZtRFNCdWZmZXIpOworICAgIG1EU0J1ZmZlciA9IDA7CisKKyAg
ICAvLyBIZXJlIHdlIG1pZ2h0IGRlc3Ryb3kgdGhlIEdMIGZyYW1lYnVmZmVyIChtR0xGQikgYnV0
IHVubGlrZSBldmVyeSBvdGhlciByZXNvdXJjZSBpbiBCdWZmZXIsCisgICAgLy8gaXQgZG9lcyBu
b3QgZ2V0IGRlc3Ryb3llZCAoYW5kIHJlY3JlYXRlZCkgYmVjYXVzZSB3aGVuIGl0IGlzIHRoZSBk
ZWZhdWx0IGZyYW1lYnVmZmVyIGZvcgorICAgIC8vIGFuIEFOR0xFIHN1cmZhY2UgdGhlbiBBTkdM
RSBleHBlY3RzIGl0IHRvIGhhdmUgdGhlIHNhbWUgbGlmZXRpbWUgYXMgdGhhdCBzdXJmYWNlLgor
CisgICAgaWYgKG1JbWFnZSAhPSBFR0xfTk9fSU1BR0VfS0hSKQorICAgIHsKKyAgICAgICAgbURp
c3BsYXktPm1FR0wtPmRlc3Ryb3lJbWFnZUtIUihtSW1hZ2UpOworICAgICAgICBtSW1hZ2UgPSBF
R0xfTk9fSU1BR0VfS0hSOworICAgIH0KKworICAgIGlmIChtVGV4dHVyZSkKKyAgICB7CisgICAg
ICAgIGdsLT5kZWxldGVUZXh0dXJlcygxLCAmbVRleHR1cmUpOworICAgICAgICBtVGV4dHVyZSA9
IDA7CisgICAgfQorCisgICAgaWYgKG1ETUFCdWYgPj0gMCkKKyAgICB7CisgICAgICAgIGNsb3Nl
KG1ETUFCdWYpOworICAgICAgICBtRE1BQnVmID0gLTE7CisgICAgfQorCisgICAgaWYgKG1CTykK
KyAgICB7CisgICAgICAgIGdibV9ib19kZXN0cm95KG1CTyk7CisgICAgICAgIG1CTyA9IG51bGxw
dHI7CisgICAgfQorfQorCitib29sIERpc3BsYXlPem9uZTo6QnVmZmVyOjpyZXNpemUoaW50MzJf
dCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCit7CisgICAgaWYgKG1XaWR0aCA9PSB3aWR0aCAmJiBt
SGVpZ2h0ID09IGhlaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIHJlc2V0KCk7CisKKyAgICBpZiAod2lkdGggPD0gMCB8fCBoZWlnaHQgPD0gMCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIG1CTyA9IGdibV9ib19jcmVhdGUo
bURpc3BsYXktPm1HQk0sIHdpZHRoLCBoZWlnaHQsIG1HQk1Gb3JtYXQsIG1Vc2VGbGFncyk7Cisg
ICAgaWYgKCFtQk8pCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
bURNQUJ1ZiA9IGdibV9ib19nZXRfZmQobUJPKTsKKyAgICBpZiAobURNQUJ1ZiA8IDApCisgICAg
eworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gY2xhbmctZm9ybWF0IG9m
ZgorICAgIGNvbnN0IEVHTGludCBhdHRyW10gPQorICAgIHsKKyAgICAgICAgRUdMX1dJRFRILCB3
aWR0aCwKKyAgICAgICAgRUdMX0hFSUdIVCwgaGVpZ2h0LAorICAgICAgICBFR0xfTElOVVhfRFJN
X0ZPVVJDQ19FWFQsIFVuc2lnbmVkVG9TaWduZWQobURSTUZvcm1hdCksCisgICAgICAgIEVHTF9E
TUFfQlVGX1BMQU5FMF9GRF9FWFQsIG1ETUFCdWYsCisgICAgICAgIEVHTF9ETUFfQlVGX1BMQU5F
MF9QSVRDSF9FWFQsIFVuc2lnbmVkVG9TaWduZWQoZ2JtX2JvX2dldF9zdHJpZGUobUJPKSksCisg
ICAgICAgIEVHTF9ETUFfQlVGX1BMQU5FMF9PRkZTRVRfRVhULCAwLAorICAgICAgICBFR0xfTk9O
RSwKKyAgICB9OworICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorCisgICAgbUltYWdlID0gbURpc3Bs
YXktPm1FR0wtPmNyZWF0ZUltYWdlS0hSKEVHTF9OT19DT05URVhULCBFR0xfTElOVVhfRE1BX0JV
Rl9FWFQsIG51bGxwdHIsIGF0dHIpOworICAgIGlmIChtSW1hZ2UgPT0gRUdMX05PX0lNQUdFX0tI
UikKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBGdW5jdGlvbnNH
TCAqZ2wgICAgPSBtRGlzcGxheS0+bUZ1bmN0aW9uc0dMOworICAgIFN0YXRlTWFuYWdlckdMICpz
bSA9IG1EaXNwbGF5LT5nZXRSZW5kZXJlcigpLT5nZXRTdGF0ZU1hbmFnZXIoKTsKKworICAgIGds
LT5nZW5SZW5kZXJidWZmZXJzKDEsICZtQ29sb3JCdWZmZXIpOworICAgIHNtLT5iaW5kUmVuZGVy
YnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbUNvbG9yQnVmZmVyKTsKKyAgICBnbC0+ZWdsSW1hZ2VU
YXJnZXRSZW5kZXJidWZmZXJTdG9yYWdlT0VTKEdMX1JFTkRFUkJVRkZFUiwgbUltYWdlKTsKKwor
ICAgIHNtLT5iaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1HTEZCKTsKKyAgICBnbC0+
ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1F
TlQwX0VYVCwgR0xfUkVOREVSQlVGRkVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtQ29sb3JCdWZmZXIpOworCisgICAgaWYgKG1EZXB0aEJpdHMgfHwgbVN0ZW5jaWxCaXRzKQor
ICAgIHsKKyAgICAgICAgZ2wtPmdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1EU0J1ZmZlcik7CisgICAg
ICAgIHNtLT5iaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbURTQnVmZmVyKTsKKyAg
ICAgICAgZ2wtPnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBHTF9ERVBUSDI0
X1NURU5DSUw4X09FUywgd2lkdGgsIGhlaWdodCk7CisgICAgfQorCisgICAgaWYgKG1EZXB0aEJp
dHMpCisgICAgeworICAgICAgICBnbC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVC
VUZGRVIsIEdMX0RFUFRIX0FUVEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1EU0J1ZmZlcik7CisgICAgfQorCisgICAgaWYgKG1T
dGVuY2lsQml0cykKKyAgICB7CisgICAgICAgIGdsLT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihH
TF9GUkFNRUJVRkZFUiwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRFNCdWZmZXIpOworICAgIH0KKwor
ICAgIG1XaWR0aCAgPSB3aWR0aDsKKyAgICBtSGVpZ2h0ID0gaGVpZ2h0OworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIERpc3BsYXlPem9uZTo6QnVmZmVyOjppbml0aWFsaXplKGNvbnN0IE5h
dGl2ZVdpbmRvdyAqbmF0aXZlKQoreworICAgIG1OYXRpdmUgPSBuYXRpdmU7CisgICAgbURpc3Bs
YXktPm1GdW5jdGlvbnNHTC0+Z2VuRnJhbWVidWZmZXJzKDEsICZtR0xGQik7CisgICAgcmV0dXJu
IHJlc2l6ZShuYXRpdmUtPndpZHRoLCBuYXRpdmUtPmhlaWdodCk7Cit9CisKK2Jvb2wgRGlzcGxh
eU96b25lOjpCdWZmZXI6OmluaXRpYWxpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAg
IG1EaXNwbGF5LT5tRnVuY3Rpb25zR0wtPmdlbkZyYW1lYnVmZmVycygxLCAmbUdMRkIpOworICAg
IHJldHVybiByZXNpemUod2lkdGgsIGhlaWdodCk7Cit9CisKK3ZvaWQgRGlzcGxheU96b25lOjpC
dWZmZXI6OmJpbmRUZXhJbWFnZSgpCit7CisgICAgbURpc3BsYXktPm1GdW5jdGlvbnNHTC0+ZWds
SW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMoR0xfVEVYVFVSRV8yRCwgbUltYWdlKTsKK30KKworR0x1
aW50IERpc3BsYXlPem9uZTo6QnVmZmVyOjpnZXRUZXh0dXJlKCkKK3sKKyAgICAvLyBUT0RPKGZq
aGVuaWdtYW4pIFRyeSBub3QgdG8gY3JlYXRlIGEgbmV3IHRleHR1cmUgZXZlcnkgdGltZS4gIFRo
YXQgYWxyZWFkeSB3b3JrcyBvbiBJbnRlbAorICAgIC8vIGFuZCBzaG91bGQgd29yayBvbiBNYWxp
IHdpdGggcHJvcGVyIGZlbmNlcy4KKyAgICBGdW5jdGlvbnNHTCAqZ2wgICAgPSBtRGlzcGxheS0+
bUZ1bmN0aW9uc0dMOworICAgIFN0YXRlTWFuYWdlckdMICpzbSA9IG1EaXNwbGF5LT5nZXRSZW5k
ZXJlcigpLT5nZXRTdGF0ZU1hbmFnZXIoKTsKKworICAgIGdsLT5nZW5UZXh0dXJlcygxLCAmbVRl
eHR1cmUpOworICAgIHNtLT5iaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZSk7Cisg
ICAgZ2wtPnRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVS
LCBHTF9ORUFSRVNUKTsKKyAgICBnbC0+dGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOworICAgIGdsLT50ZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBn
bC0+dGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xB
TVBfVE9fRURHRSk7CisgICAgQVNTRVJUKG1JbWFnZSAhPSBFR0xfTk9fSU1BR0VfS0hSKTsKKyAg
ICBnbC0+ZWdsSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMoR0xfVEVYVFVSRV8yRCwgbUltYWdlKTsK
KyAgICByZXR1cm4gbVRleHR1cmU7Cit9CisKK3VpbnQzMl90IERpc3BsYXlPem9uZTo6QnVmZmVy
OjpnZXREUk1GQigpCit7CisgICAgaWYgKCFtSGFzRFJNRkIpCisgICAgeworICAgICAgICBpbnQg
ZmQgICAgICAgICAgICAgID0gZ2JtX2RldmljZV9nZXRfZmQobURpc3BsYXktPm1HQk0pOworICAg
ICAgICB1aW50MzJfdCBoYW5kbGVzWzRdID0ge2dibV9ib19nZXRfaGFuZGxlKG1CTykudTMyfTsK
KyAgICAgICAgdWludDMyX3QgcGl0Y2hlc1s0XSA9IHtnYm1fYm9fZ2V0X3N0cmlkZShtQk8pfTsK
KyAgICAgICAgdWludDMyX3Qgb2Zmc2V0c1s0XSA9IHswfTsKKyAgICAgICAgaWYgKGRybU1vZGVB
ZGRGQjIoZmQsIG1XaWR0aCwgbUhlaWdodCwgbURSTUZvcm1hdEZCLCBoYW5kbGVzLCBwaXRjaGVz
LCBvZmZzZXRzLCAmbURSTUZCLCAwKSkKKyAgICAgICAgeworICAgICAgICAgICAgc3RkOjpjZXJy
IDw8ICJkcm1Nb2RlQWRkRkIyIGZhaWxlZCIgPDwgc3RkOjplbmRsOworICAgICAgICB9CisgICAg
ICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgbUhhc0RSTUZCID0gdHJ1ZTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHJldHVybiBtRFJNRkI7Cit9CisKK0ZyYW1lYnVmZmVyR0wgKkRp
c3BsYXlPem9uZTo6QnVmZmVyOjpmcmFtZWJ1ZmZlckdMKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0
YXRlICZzdGF0ZSkKK3sKKyAgICByZXR1cm4gbmV3IEZyYW1lYnVmZmVyR0woCisgICAgICAgIG1H
TEZCLCBzdGF0ZSwgbURpc3BsYXktPm1GdW5jdGlvbnNHTCwgbURpc3BsYXktPmdldFJlbmRlcmVy
KCktPmdldFdvcmthcm91bmRzKCksCisgICAgICAgIG1EaXNwbGF5LT5nZXRSZW5kZXJlcigpLT5n
ZXRCbGl0dGVyKCksIG1EaXNwbGF5LT5nZXRSZW5kZXJlcigpLT5nZXRTdGF0ZU1hbmFnZXIoKSk7
Cit9CisKK3ZvaWQgRGlzcGxheU96b25lOjpCdWZmZXI6OnByZXNlbnQoKQoreworICAgIGlmICht
TmF0aXZlKQorICAgIHsKKyAgICAgICAgaWYgKG1OYXRpdmUtPnZpc2libGUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1EaXNwbGF5LT5kcmF3QnVmZmVyKHRoaXMpOworICAgICAgICB9CisgICAg
ICAgIHJlc2l6ZShtTmF0aXZlLT53aWR0aCwgbU5hdGl2ZS0+aGVpZ2h0KTsKKyAgICB9Cit9CisK
K0Rpc3BsYXlPem9uZTo6RGlzcGxheU96b25lKCkKKyAgICA6IERpc3BsYXlFR0woKSwKKyAgICAg
IG1Td2FwQ29udHJvbChTd2FwQ29udHJvbDo6QUJTRU5UKSwKKyAgICAgIG1NaW5Td2FwSW50ZXJ2
YWwoMCksCisgICAgICBtTWF4U3dhcEludGVydmFsKDApLAorICAgICAgbUN1cnJlbnRTd2FwSW50
ZXJ2YWwoLTEpLAorICAgICAgbUdCTShudWxscHRyKSwKKyAgICAgIG1Db25uZWN0b3IobnVsbHB0
ciksCisgICAgICBtTW9kZShudWxscHRyKSwKKyAgICAgIG1DUlRDKG51bGxwdHIpLAorICAgICAg
bVNldENSVEModHJ1ZSksCisgICAgICBtV2lkdGgoMCksCisgICAgICBtSGVpZ2h0KDApLAorICAg
ICAgbVNjYW5uaW5nKG51bGxwdHIpLAorICAgICAgbVBlbmRpbmcobnVsbHB0ciksCisgICAgICBt
RHJhd2luZyhudWxscHRyKSwKKyAgICAgIG1VbnVzZWQobnVsbHB0ciksCisgICAgICBtUHJvZ3Jh
bSgwKSwKKyAgICAgIG1WZXJ0ZXhTaGFkZXIoMCksCisgICAgICBtRnJhZ21lbnRTaGFkZXIoMCks
CisgICAgICBtVmVydGV4QnVmZmVyKDApLAorICAgICAgbUluZGV4QnVmZmVyKDApLAorICAgICAg
bUNlbnRlclVuaWZvcm0oMCksCisgICAgICBtV2luZG93U2l6ZVVuaWZvcm0oMCksCisgICAgICBt
Qm9yZGVyU2l6ZVVuaWZvcm0oMCksCisgICAgICBtRGVwdGhVbmlmb3JtKDApCit7Cit9CisKK0Rp
c3BsYXlPem9uZTo6fkRpc3BsYXlPem9uZSgpCit7Cit9CisKK2VnbDo6RXJyb3IgRGlzcGxheU96
b25lOjppbml0aWFsaXplKGVnbDo6RGlzcGxheSAqZGlzcGxheSkKK3sKKyAgICBpbnQgZmQ7Cisg
ICAgY2hhciBkZXZpY2VOYW1lWzMwXTsKKyAgICBkcm1Nb2RlUmVzUHRyIHJlc291cmNlcyA9IG51
bGxwdHI7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDk7ICsraSkKKyAgICB7CisgICAgICAg
IHNucHJpbnRmKGRldmljZU5hbWUsIHNpemVvZihkZXZpY2VOYW1lKSwgIi9kZXYvZHJpL2NhcmQl
ZCIsIGkpOworICAgICAgICBmZCA9IG9wZW4oZGV2aWNlTmFtZSwgT19SRFdSIHwgT19DTE9FWEVD
KTsKKyAgICAgICAgaWYgKGZkID49IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlc291cmNl
cyA9IGRybU1vZGVHZXRSZXNvdXJjZXMoZmQpOworICAgICAgICAgICAgaWYgKHJlc291cmNlcykK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAocmVzb3VyY2VzLT5jb3VudF9jb25u
ZWN0b3JzID4gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkcm1Nb2RlRnJlZVJlc291cmNl
cyhyZXNvdXJjZXMpOworICAgICAgICAgICAgICAgIHJlc291cmNlcyA9IG51bGxwdHI7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIH0KKyAgICB9CisgICAg
aWYgKCFyZXNvdXJjZXMpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfTk9U
X0lOSVRJQUxJWkVELCAiQ291bGQgbm90IG9wZW4gZHJtIGRldmljZS4iKTsKKyAgICB9CisKKyAg
ICBtR0JNID0gZ2JtX2NyZWF0ZV9kZXZpY2UoZmQpOworICAgIGlmICghbUdCTSkKKyAgICB7Cisg
ICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgZHJtTW9kZUZyZWVSZXNvdXJjZXMocmVzb3VyY2Vz
KTsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCwgIkNvdWxk
IG5vdCBjcmVhdGUgZ2JtIGRldmljZS4iKTsKKyAgICB9CisKKyAgICBtQ29ubmVjdG9yICAgICAg
ICAgICAgPSBudWxscHRyOworICAgIGJvb2wgbW9uaXRvckNvbm5lY3RlZCA9IGZhbHNlOworICAg
IGZvciAoaW50IGkgPSAwOyAhbUNSVEMgJiYgaSA8IHJlc291cmNlcy0+Y291bnRfY29ubmVjdG9y
czsgKytpKQorICAgIHsKKyAgICAgICAgZHJtTW9kZUZyZWVDb25uZWN0b3IobUNvbm5lY3Rvcik7
CisgICAgICAgIG1Db25uZWN0b3IgPSBkcm1Nb2RlR2V0Q29ubmVjdG9yKGZkLCByZXNvdXJjZXMt
PmNvbm5lY3RvcnNbaV0pOworICAgICAgICBpZiAoIW1Db25uZWN0b3IgfHwgbUNvbm5lY3Rvci0+
Y29ubmVjdGlvbiAhPSBEUk1fTU9ERV9DT05ORUNURUQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIG1vbml0b3JDb25uZWN0ZWQgPSB0cnVlOwor
ICAgICAgICBtTW9kZSA9IENob29zZU1vZGUobUNvbm5lY3Rvcik7CisgICAgICAgIGlmICghbU1v
ZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAg
IGludCBuID0gQ2hvb3NlQ1JUQyhmZCwgbUNvbm5lY3Rvcik7CisgICAgICAgIGlmIChuIDwgMCkK
KyAgICAgICAgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgbUNS
VEMgPSBkcm1Nb2RlR2V0Q3J0YyhmZCwgcmVzb3VyY2VzLT5jcnRjc1tuXSk7CisgICAgfQorICAg
IGRybU1vZGVGcmVlUmVzb3VyY2VzKHJlc291cmNlcyk7CisKKyAgICBpZiAobUNSVEMpCisgICAg
eworICAgICAgICBtV2lkdGggID0gbU1vZGUtPmhkaXNwbGF5OworICAgICAgICBtSGVpZ2h0ID0g
bU1vZGUtPnZkaXNwbGF5OworICAgIH0KKyAgICBlbHNlIGlmICghbW9uaXRvckNvbm5lY3RlZCkK
KyAgICB7CisgICAgICAgIC8vIEV2ZW4gdGhvdWdoIHRoZXJlIGlzIG5vIG1vbml0b3IgdG8gc2hv
dyBpdCwgd2Ugc3RpbGwgZG8KKyAgICAgICAgLy8gZXZlcnl0aGluZyB0aGUgc2FtZSBhcyBpZiB0
aGVyZSB3ZXJlIG9uZSwgc28gd2UgbmVlZCBhbgorICAgICAgICAvLyBhcmJpdHJhcnkgc2l6ZSBm
b3Igb3VyIGJ1ZmZlcnMuCisgICAgICAgIG1XaWR0aCAgPSAxMjgwOworICAgICAgICBtSGVpZ2h0
ID0gMTAyNDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJy
b3IoRUdMX05PVF9JTklUSUFMSVpFRCwgIkZhaWxlZCB0byBjaG9vc2UgbW9kZS9jcnRjLiIpOwor
ICAgIH0KKworICAgIC8vIEFOR0xFIGJ1aWxkcyBpdHMgZXhlY3V0YWJsZXMgd2l0aCBhbiBSUEFU
SCBzbyB0aGV5IHB1bGwgaW4gQU5HTEUncyBsaWJHTCBhbmQgbGliRUdMLgorICAgIC8vIEhlcmUg
d2UgbmVlZCB0byBvcGVuIHRoZSBuYXRpdmUgbGliRUdMLiAgQW4gYWJzb2x1dGUgcGF0aCB3b3Vs
ZCB3b3JrLCBidXQgdGhlbiB3ZQorICAgIC8vIGNvdWxkbid0IHVzZSBMRF9MSUJSQVJZX1BBVEgg
d2hpY2ggaXMgb2Z0ZW4gdXNlZnVsIGR1cmluZyBkZXZlbG9wbWVudC4gIEluc3RlYWQgd2UgdGFr
ZQorICAgIC8vIGFkdmFudGFnZSBvZiB0aGUgZmFjdCB0aGF0IHRoZSBzeXN0ZW0gbGliIGlzIGF2
YWlsYWJsZSB1bmRlciBtdWx0aXBsZSBuYW1lcyAoZm9yIGV4YW1wbGUKKyAgICAvLyB3aXRoIGEg
LjEgc3VmZml4KSB3aGlsZSBBbmdsZSBvbmx5IGluc3RhbGxzIGxpYkVHTC5zby4KKyAgICBGdW5j
dGlvbnNFR0xETCAqZWdsID0gbmV3IEZ1bmN0aW9uc0VHTERMKCk7CisgICAgbUVHTCA9IGVnbDsK
KyAgICBBTkdMRV9UUlkoZWdsLT5pbml0aWFsaXplKGRpc3BsYXktPmdldE5hdGl2ZURpc3BsYXlJ
ZCgpLCAibGliRUdMLnNvLjEiKSk7CisKKyAgICBjb25zdCBjaGFyICpuZWNlc3NhcnlFeHRlbnNp
b25zW10gPSB7CisgICAgICAgICJFR0xfS0hSX2ltYWdlX2Jhc2UiLCAiRUdMX0VYVF9pbWFnZV9k
bWFfYnVmX2ltcG9ydCIsICJFR0xfS0hSX3N1cmZhY2VsZXNzX2NvbnRleHQiLAorICAgIH07Cisg
ICAgZm9yIChhdXRvICZleHQgOiBuZWNlc3NhcnlFeHRlbnNpb25zKQorICAgIHsKKyAgICAgICAg
aWYgKCFtRUdMLT5oYXNFeHRlbnNpb24oZXh0KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGVnbDo6RXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCwgIm5lZWQgJXMiLCBleHQpOworICAg
ICAgICB9CisgICAgfQorCisgICAgaWYgKG1FR0wtPmhhc0V4dGVuc2lvbigiRUdMX01FU0FfY29u
ZmlnbGVzc19jb250ZXh0IikpCisgICAgeworICAgICAgICBtQ29uZmlnID0gRUdMX05PX0NPTkZJ
R19NRVNBOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICAvLyBjbGFuZy1mb3JtYXQg
b2ZmCisgICAgICAgIGNvbnN0IEVHTGludCBhdHRyaWJbXSA9CisgICAgICAgIHsKKyAgICAgICAg
ICAgIC8vIFdlIHdhbnQgUkdCQTggYW5kIERFUFRIMjRfU1RFTkNJTDgKKyAgICAgICAgICAgIEVH
TF9SRURfU0laRSwgOCwKKyAgICAgICAgICAgIEVHTF9HUkVFTl9TSVpFLCA4LAorICAgICAgICAg
ICAgRUdMX0JMVUVfU0laRSwgOCwKKyAgICAgICAgICAgIEVHTF9BTFBIQV9TSVpFLCA4LAorICAg
ICAgICAgICAgRUdMX0RFUFRIX1NJWkUsIDI0LAorICAgICAgICAgICAgRUdMX1NURU5DSUxfU0la
RSwgOCwKKyAgICAgICAgICAgIEVHTF9OT05FLAorICAgICAgICB9OworICAgICAgICAvLyBjbGFu
Zy1mb3JtYXQgb24KKyAgICAgICAgRUdMaW50IG51bUNvbmZpZzsKKyAgICAgICAgRUdMQ29uZmln
IGNvbmZpZ1sxXTsKKyAgICAgICAgaWYgKCFtRUdMLT5jaG9vc2VDb25maWcoYXR0cmliLCBjb25m
aWcsIDEsICZudW1Db25maWcpIHx8IG51bUNvbmZpZyA8IDEpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9OT1RfSU5JVElBTElaRUQsICJDb3VsZCBub3QgZ2V0
IEVHTCBjb25maWcuIik7CisgICAgICAgIH0KKyAgICAgICAgbUNvbmZpZyA9IGNvbmZpZ1swXTsK
KyAgICB9CisKKyAgICBBTkdMRV9UUlkoaW5pdGlhbGl6ZUNvbnRleHQoZGlzcGxheS0+Z2V0QXR0
cmlidXRlTWFwKCkpKTsKKworICAgIGlmICghbUVHTC0+bWFrZUN1cnJlbnQoRUdMX05PX1NVUkZB
Q0UsIG1Db250ZXh0KSkKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9OT1Rf
SU5JVElBTElaRUQsICJDb3VsZCBub3QgbWFrZSBjb250ZXh0IGN1cnJlbnQuIik7CisgICAgfQor
CisgICAgbUZ1bmN0aW9uc0dMID0gbUVHTC0+bWFrZUZ1bmN0aW9uc0dMKCk7CisgICAgbUZ1bmN0
aW9uc0dMLT5pbml0aWFsaXplKCk7CisKKyAgICByZXR1cm4gRGlzcGxheUdMOjppbml0aWFsaXpl
KGRpc3BsYXkpOworfQorCit2b2lkIERpc3BsYXlPem9uZTo6cGFnZUZsaXBIYW5kbGVyKGludCBm
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNlcXVl
bmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdHZf
c2VjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdHZf
dXNlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSkKK3sK
KyAgICBEaXNwbGF5T3pvbmUgKmRpc3BsYXkgPSByZWludGVycHJldF9jYXN0PERpc3BsYXlPem9u
ZSAqPihkYXRhKTsKKyAgICB1aW50NjRfdCB0diA9IHR2X3NlYzsKKyAgICBkaXNwbGF5LT5wYWdl
RmxpcEhhbmRsZXIoc2VxdWVuY2UsIHR2ICogMTAwMDAwMCArIHR2X3VzZWMpOworfQorCit2b2lk
IERpc3BsYXlPem9uZTo6cGFnZUZsaXBIYW5kbGVyKHVuc2lnbmVkIGludCBzZXF1ZW5jZSwgdWlu
dDY0X3QgdHYpCit7CisgICAgQVNTRVJUKG1QZW5kaW5nKTsKKyAgICBtVW51c2VkICAgPSBtU2Nh
bm5pbmc7CisgICAgbVNjYW5uaW5nID0gbVBlbmRpbmc7CisgICAgbVBlbmRpbmcgID0gbnVsbHB0
cjsKK30KKwordm9pZCBEaXNwbGF5T3pvbmU6OnByZXNlbnRTY3JlZW4oKQoreworICAgIGlmICgh
bUNSVEMpCisgICAgeworICAgICAgICAvLyBubyBtb25pdG9yCisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICAvLyBzZWUgaWYgcGVuZGluZyBmbGlwIGhhcyBmaW5pc2hlZCwgd2l0aG91dCBi
bG9ja2luZworICAgIGludCBmZCA9IGdibV9kZXZpY2VfZ2V0X2ZkKG1HQk0pOworICAgIGlmICht
UGVuZGluZykKKyAgICB7CisgICAgICAgIHBvbGxmZCBwZmQ7CisgICAgICAgIHBmZC5mZCAgICAg
PSBmZDsKKyAgICAgICAgcGZkLmV2ZW50cyA9IFBPTExJTjsKKyAgICAgICAgaWYgKHBvbGwoJnBm
ZCwgMSwgMCkgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICBzdGQ6OmNlcnIgPDwgInBvbGwg
ZmFpbGVkOiAiIDw8IGVycm5vIDw8ICIgIiA8PCBzdHJlcnJvcihlcnJubykgPDwgc3RkOjplbmRs
OworICAgICAgICB9CisgICAgICAgIGlmIChwZmQucmV2ZW50cyAmIFBPTExJTikKKyAgICAgICAg
eworICAgICAgICAgICAgZHJtRXZlbnRDb250ZXh0IGV2ZW50OworICAgICAgICAgICAgZXZlbnQu
dmVyc2lvbiAgICAgICAgICAgPSBEUk1fRVZFTlRfQ09OVEVYVF9WRVJTSU9OOworICAgICAgICAg
ICAgZXZlbnQucGFnZV9mbGlwX2hhbmRsZXIgPSBwYWdlRmxpcEhhbmRsZXI7CisgICAgICAgICAg
ICBkcm1IYW5kbGVFdmVudChmZCwgJmV2ZW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8v
IGlmIHBlbmRpbmcgZmxpcCBoYXMgZmluaXNoZWQsIHNjaGVkdWxlIG5leHQgb25lCisgICAgaWYg
KCFtUGVuZGluZyAmJiBtRHJhd2luZykKKyAgICB7CisgICAgICAgIGZsdXNoR0woKTsKKyAgICAg
ICAgaWYgKG1TZXRDUlRDKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZHJtTW9kZVNldENy
dGMoZmQsIG1DUlRDLT5jcnRjX2lkLCBtRHJhd2luZy0+Z2V0RFJNRkIoKSwgMCwgMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmbUNvbm5lY3Rvci0+Y29ubmVjdG9yX2lkLCAxLCBt
TW9kZSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3RkOjpjZXJyIDw8ICJzZXQg
Y3J0YyBmYWlsZWQ6ICIgPDwgZXJybm8gPDwgIiAiIDw8IHN0cmVycm9yKGVycm5vKSA8PCBzdGQ6
OmVuZGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtU2V0Q1JUQyA9IGZhbHNlOworICAg
ICAgICB9CisgICAgICAgIGlmIChkcm1Nb2RlUGFnZUZsaXAoZmQsIG1DUlRDLT5jcnRjX2lkLCBt
RHJhd2luZy0+Z2V0RFJNRkIoKSwgRFJNX01PREVfUEFHRV9GTElQX0VWRU5ULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMpKQorICAgICAgICB7CisgICAgICAgICAgICBzdGQ6OmNl
cnIgPDwgInBhZ2UgZmxpcCBmYWlsZWQ6ICIgPDwgZXJybm8gPDwgIiAiIDw8IHN0cmVycm9yKGVy
cm5vKSA8PCBzdGQ6OmVuZGw7CisgICAgICAgIH0KKyAgICAgICAgbVBlbmRpbmcgPSBtRHJhd2lu
ZzsKKyAgICAgICAgbURyYXdpbmcgPSBudWxscHRyOworICAgIH0KK30KKworR0x1aW50IERpc3Bs
YXlPem9uZTo6bWFrZVNoYWRlcihHTHVpbnQgdHlwZSwgY29uc3QgY2hhciAqc3JjKQoreworICAg
IEZ1bmN0aW9uc0dMICpnbCA9IG1GdW5jdGlvbnNHTDsKKyAgICBHTHVpbnQgc2hhZGVyID0gZ2wt
PmNyZWF0ZVNoYWRlcih0eXBlKTsKKyAgICBnbC0+c2hhZGVyU291cmNlKHNoYWRlciwgMSwgJnNy
YywgbnVsbHB0cik7CisgICAgZ2wtPmNvbXBpbGVTaGFkZXIoc2hhZGVyKTsKKworICAgIEdMY2hh
ciBidWZbOTk5XTsKKyAgICBHTHNpemVpIGxlbjsKKyAgICBHTGludCBjb21waWxlZDsKKyAgICBn
bC0+Z2V0U2hhZGVySW5mb0xvZyhzaGFkZXIsIHNpemVvZihidWYpLCAmbGVuLCBidWYpOworICAg
IGdsLT5nZXRTaGFkZXJpdihzaGFkZXIsIEdMX0NPTVBJTEVfU1RBVFVTLCAmY29tcGlsZWQpOwor
ICAgIGlmIChjb21waWxlZCAhPSBHTF9UUlVFKQorICAgIHsKKyAgICAgICAgQU5HTEVQbGF0Zm9y
bUN1cnJlbnQoKS0+bG9nRXJyb3IoIkRpc3BsYXlPem9uZSBzaGFkZXIgY29tcGlsYXRpb24gZXJy
b3I6Iik7CisgICAgICAgIEFOR0xFUGxhdGZvcm1DdXJyZW50KCktPmxvZ0Vycm9yKGJ1Zik7Cisg
ICAgfQorCisgICAgcmV0dXJuIHNoYWRlcjsKK30KKwordm9pZCBEaXNwbGF5T3pvbmU6OmRyYXdX
aXRoVGV4dHVyZShCdWZmZXIgKmJ1ZmZlcikKK3sKKyAgICBGdW5jdGlvbnNHTCAqZ2wgICAgPSBt
RnVuY3Rpb25zR0w7CisgICAgU3RhdGVNYW5hZ2VyR0wgKnNtID0gZ2V0UmVuZGVyZXIoKS0+Z2V0
U3RhdGVNYW5hZ2VyKCk7CisKKyAgICBpZiAoIW1Qcm9ncmFtKQorICAgIHsKKyAgICAgICAgY29u
c3QgR0xjaGFyICp2ZXJ0ZXhTb3VyY2UgPQorICAgICAgICAgICAgIiN2ZXJzaW9uIDEwMFxuIgor
ICAgICAgICAgICAgImF0dHJpYnV0ZSB2ZWMzIHZlcnRleDtcbiIKKyAgICAgICAgICAgICJ1bmlm
b3JtIHZlYzIgY2VudGVyO1xuIgorICAgICAgICAgICAgInVuaWZvcm0gdmVjMiB3aW5kb3dTaXpl
O1xuIgorICAgICAgICAgICAgInVuaWZvcm0gdmVjMiBib3JkZXJTaXplO1xuIgorICAgICAgICAg
ICAgInVuaWZvcm0gZmxvYXQgZGVwdGg7XG4iCisgICAgICAgICAgICAidmFyeWluZyB2ZWMzIHRl
eENvb3JkO1xuIgorICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICAgICAie1xu
IgorICAgICAgICAgICAgIiAgICB2ZWMyIHBvcyA9IHZlcnRleC54eSAqICh3aW5kb3dTaXplICsg
Ym9yZGVyU2l6ZSAqIHZlcnRleC56KTtcbiIKKyAgICAgICAgICAgICIgICAgZ2xfUG9zaXRpb24g
PSB2ZWM0KGNlbnRlciArIHBvcywgZGVwdGgsIDEpO1xuIgorICAgICAgICAgICAgIiAgICB0ZXhD
b29yZCA9IHZlYzMocG9zIC8gd2luZG93U2l6ZSAqIHZlYzIoLjUsIC0uNSkgKyB2ZWMyKC41LCAu
NSksIHZlcnRleC56KTtcbiIKKyAgICAgICAgICAgICJ9XG4iOworCisgICAgICAgIGNvbnN0IEdM
Y2hhciAqZnJhZ21lbnRTb3VyY2UgPQorICAgICAgICAgICAgIiN2ZXJzaW9uIDEwMFxuIgorICAg
ICAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAgICAgInVuaWZv
cm0gc2FtcGxlcjJEIHRleDtcbiIKKyAgICAgICAgICAgICJ2YXJ5aW5nIHZlYzMgdGV4Q29vcmQ7
XG4iCisgICAgICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgICAgICJ7XG4iCisgICAg
ICAgICAgICAiICAgIGlmICh0ZXhDb29yZC56ID4gMC4pXG4iCisgICAgICAgICAgICAiICAgIHtc
biIKKyAgICAgICAgICAgICIgICAgICAgIGZsb2F0IGMgPSBhYnMoKHRleENvb3JkLnogKiAyLikg
LSAxLik7XG4iCisgICAgICAgICAgICAiICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGMsIGMs
IGMsIDEpO1xuIgorICAgICAgICAgICAgIiAgICB9XG4iCisgICAgICAgICAgICAiICAgIGVsc2Vc
biIKKyAgICAgICAgICAgICIgICAge1xuIgorICAgICAgICAgICAgIiAgICAgICAgZ2xfRnJhZ0Nv
bG9yID0gdGV4dHVyZTJEKHRleCwgdGV4Q29vcmQueHkpO1xuIgorICAgICAgICAgICAgIiAgICB9
XG4iCisgICAgICAgICAgICAifVxuIjsKKworICAgICAgICBtVmVydGV4U2hhZGVyICAgPSBtYWtl
U2hhZGVyKEdMX1ZFUlRFWF9TSEFERVIsIHZlcnRleFNvdXJjZSk7CisgICAgICAgIG1GcmFnbWVu
dFNoYWRlciA9IG1ha2VTaGFkZXIoR0xfRlJBR01FTlRfU0hBREVSLCBmcmFnbWVudFNvdXJjZSk7
CisgICAgICAgIG1Qcm9ncmFtID0gZ2wtPmNyZWF0ZVByb2dyYW0oKTsKKyAgICAgICAgZ2wtPmF0
dGFjaFNoYWRlcihtUHJvZ3JhbSwgbVZlcnRleFNoYWRlcik7CisgICAgICAgIGdsLT5hdHRhY2hT
aGFkZXIobVByb2dyYW0sIG1GcmFnbWVudFNoYWRlcik7CisgICAgICAgIGdsLT5iaW5kQXR0cmli
TG9jYXRpb24obVByb2dyYW0sIDAsICJ2ZXJ0ZXgiKTsKKyAgICAgICAgZ2wtPmxpbmtQcm9ncmFt
KG1Qcm9ncmFtKTsKKyAgICAgICAgR0xpbnQgbGlua2VkOworICAgICAgICBnbC0+Z2V0UHJvZ3Jh
bWl2KG1Qcm9ncmFtLCBHTF9MSU5LX1NUQVRVUywgJmxpbmtlZCk7CisgICAgICAgIEFTU0VSVChs
aW5rZWQpOworICAgICAgICBtQ2VudGVyVW5pZm9ybSAgICAgPSBnbC0+Z2V0VW5pZm9ybUxvY2F0
aW9uKG1Qcm9ncmFtLCAiY2VudGVyIik7CisgICAgICAgIG1XaW5kb3dTaXplVW5pZm9ybSA9IGds
LT5nZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ3aW5kb3dTaXplIik7CisgICAgICAgIG1C
b3JkZXJTaXplVW5pZm9ybSA9IGdsLT5nZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJib3Jk
ZXJTaXplIik7CisgICAgICAgIG1EZXB0aFVuaWZvcm0gICAgICA9IGdsLT5nZXRVbmlmb3JtTG9j
YXRpb24obVByb2dyYW0sICJkZXB0aCIpOworICAgICAgICBHTGludCB0ZXhVbmlmb3JtID0gZ2wt
PmdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInRleCIpOworICAgICAgICBzbS0+dXNlUHJv
Z3JhbShtUHJvZ3JhbSk7CisgICAgICAgIGdsLT51bmlmb3JtMWkodGV4VW5pZm9ybSwgMCk7CisK
KyAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgorICAgICAgICBjb25zdCBHTGZsb2F0IHZlcnRp
Y2VzW10gPQorICAgICAgICB7CisgICAgICAgICAgICAgLy8gd2luZG93IGNvcm5lcnMsIGFuZCB3
aW5kb3cgYm9yZGVyIGluc2lkZSBjb3JuZXJzCisgICAgICAgICAgICAgMSwgLTEsIDAsCisgICAg
ICAgICAgICAtMSwgLTEsIDAsCisgICAgICAgICAgICAgMSwgIDEsIDAsCisgICAgICAgICAgICAt
MSwgIDEsIDAsCisgICAgICAgICAgICAgLy8gd2luZG93IGJvcmRlciBvdXRzaWRlIGNvcm5lcnMK
KyAgICAgICAgICAgICAxLCAtMSwgMSwKKyAgICAgICAgICAgIC0xLCAtMSwgMSwKKyAgICAgICAg
ICAgICAxLCAgMSwgMSwKKyAgICAgICAgICAgIC0xLCAgMSwgMSwKKyAgICAgICAgfTsKKyAgICAg
ICAgLy8gY2xhbmctZm9ybWF0IG9uCisgICAgICAgIGdsLT5nZW5CdWZmZXJzKDEsICZtVmVydGV4
QnVmZmVyKTsKKyAgICAgICAgc20tPmJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtVmVydGV4
QnVmZmVyKTsKKyAgICAgICAgZ2wtPmJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBzaXplb2Yo
dmVydGljZXMpLCB2ZXJ0aWNlcywgR0xfU1RBVElDX0RSQVcpOworCisgICAgICAgIC8vIHdpbmRv
dyBib3JkZXIgdHJpYW5nbGUgc3RyaXAKKyAgICAgICAgY29uc3QgR0x1aW50IGJvcmRlclN0cmlw
W10gPSB7NSwgMCwgNCwgMiwgNiwgMywgNywgMSwgNSwgMH07CisKKyAgICAgICAgZ2wtPmdlbkJ1
ZmZlcnMoMSwgJm1JbmRleEJ1ZmZlcik7CisgICAgICAgIHNtLT5iaW5kQnVmZmVyKEdMX0VMRU1F
TlRfQVJSQVlfQlVGRkVSLCBtSW5kZXhCdWZmZXIpOworICAgICAgICBnbC0+YnVmZmVyRGF0YShH
TF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgc2l6ZW9mKGJvcmRlclN0cmlwKSwgYm9yZGVyU3RyaXAs
IEdMX1NUQVRJQ19EUkFXKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgc20tPnVz
ZVByb2dyYW0obVByb2dyYW0pOworICAgICAgICBzbS0+YmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZG
RVIsIG1WZXJ0ZXhCdWZmZXIpOworICAgICAgICBzbS0+YmluZEJ1ZmZlcihHTF9FTEVNRU5UX0FS
UkFZX0JVRkZFUiwgbUluZGV4QnVmZmVyKTsKKyAgICB9CisKKyAgICAvLyBjb252ZXJ0IGZyb20g
cGl4ZWxzIHRvICItMSB0byAxIiBzcGFjZQorICAgIGNvbnN0IE5hdGl2ZVdpbmRvdyAqbiA9IGJ1
ZmZlci0+Z2V0TmF0aXZlKCk7CisgICAgZG91YmxlIHggICAgICAgICAgICAgID0gbi0+eCAqIDIu
IC8gbVdpZHRoIC0gMTsKKyAgICBkb3VibGUgeSAgICAgICAgICAgICAgPSBuLT55ICogMi4gLyBt
SGVpZ2h0IC0gMTsKKyAgICBkb3VibGUgaGFsZncgICAgICAgICAgPSBuLT53aWR0aCAqIDEuIC8g
bVdpZHRoOworICAgIGRvdWJsZSBoYWxmaCAgICAgICAgICA9IG4tPmhlaWdodCAqIDEuIC8gbUhl
aWdodDsKKyAgICBkb3VibGUgYm9yZGVydyAgICAgICAgPSBuLT5ib3JkZXJXaWR0aCAqIDIuIC8g
bVdpZHRoOworICAgIGRvdWJsZSBib3JkZXJoICAgICAgICA9IG4tPmJvcmRlckhlaWdodCAqIDIu
IC8gbUhlaWdodDsKKworICAgIGdsLT51bmlmb3JtMmYobUNlbnRlclVuaWZvcm0sIHggKyBoYWxm
dywgeSArIGhhbGZoKTsKKyAgICBnbC0+dW5pZm9ybTJmKG1XaW5kb3dTaXplVW5pZm9ybSwgaGFs
ZncsIGhhbGZoKTsKKyAgICBnbC0+dW5pZm9ybTJmKG1Cb3JkZXJTaXplVW5pZm9ybSwgYm9yZGVy
dywgYm9yZGVyaCk7CisgICAgZ2wtPnVuaWZvcm0xZihtRGVwdGhVbmlmb3JtLCBuLT5kZXB0aCAv
IDFlNik7CisKKyAgICBzbS0+c2V0QmxlbmRFbmFibGVkKGZhbHNlKTsKKyAgICBzbS0+c2V0Q3Vs
bEZhY2VFbmFibGVkKGZhbHNlKTsKKyAgICBzbS0+c2V0U3RlbmNpbFRlc3RFbmFibGVkKGZhbHNl
KTsKKyAgICBzbS0+c2V0U2Npc3NvclRlc3RFbmFibGVkKGZhbHNlKTsKKyAgICBzbS0+c2V0RGVw
dGhUZXN0RW5hYmxlZCh0cnVlKTsKKyAgICBzbS0+c2V0Q29sb3JNYXNrKHRydWUsIHRydWUsIHRy
dWUsIHRydWUpOworICAgIHNtLT5zZXREZXB0aE1hc2sodHJ1ZSk7CisgICAgc20tPnNldERlcHRo
UmFuZ2UoMCwgMSk7CisgICAgc20tPnNldERlcHRoRnVuYyhHTF9MRVNTKTsKKyAgICBzbS0+c2V0
Vmlld3BvcnQoZ2w6OlJlY3RhbmdsZSgwLCAwLCBtV2lkdGgsIG1IZWlnaHQpKTsKKyAgICBzbS0+
YWN0aXZlVGV4dHVyZSgwKTsKKyAgICBHTHVpbnQgdGV4ID0gYnVmZmVyLT5nZXRUZXh0dXJlKCk7
CisgICAgc20tPmJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleCk7CisgICAgZ2wtPnZlcnRl
eEF0dHJpYlBvaW50ZXIoMCwgMywgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCAwKTsKKyAgICBnbC0+
ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7CisgICAgc20tPmJpbmRGcmFtZWJ1ZmZlcihHTF9E
UkFXX0ZSQU1FQlVGRkVSLCBtRHJhd2luZy0+Z2V0R0xGQigpKTsKKyAgICBnbC0+ZHJhd0FycmF5
cyhHTF9UUklBTkdMRV9TVFJJUCwgMCwgNCk7CisgICAgZ2wtPmRyYXdFbGVtZW50cyhHTF9UUklB
TkdMRV9TVFJJUCwgMTAsIEdMX1VOU0lHTkVEX0lOVCwgMCk7CisgICAgc20tPmRlbGV0ZVRleHR1
cmUodGV4KTsKK30KKwordm9pZCBEaXNwbGF5T3pvbmU6OmRyYXdCdWZmZXIoQnVmZmVyICpidWZm
ZXIpCit7CisgICAgaWYgKCFtRHJhd2luZykKKyAgICB7CisgICAgICAgIC8vIGdldCBidWZmZXIg
b24gd2hpY2ggdG8gZHJhdyB3aW5kb3cKKyAgICAgICAgaWYgKG1VbnVzZWQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1EcmF3aW5nID0gbVVudXNlZDsKKyAgICAgICAgICAgIG1VbnVzZWQgID0g
bnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1EcmF3aW5nID0gbmV3IEJ1ZmZlcih0aGlzLCBHQk1fQk9fVVNFX1JFTkRFUklORyB8IEdCTV9C
T19VU0VfU0NBTk9VVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQk1fRk9S
TUFUX0FSR0I4ODg4LCBEUk1fRk9STUFUX0FSR0I4ODg4LCBEUk1fRk9STUFUX1hSR0I4ODg4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsIHRydWUpOyAgLy8gWFhYIHNo
b3VsZG4ndCBuZWVkIHN0ZW5jaWwKKyAgICAgICAgICAgIGlmICghbURyYXdpbmcgfHwgIW1EcmF3
aW5nLT5pbml0aWFsaXplKG1XaWR0aCwgbUhlaWdodCkpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgU3Rh
dGVNYW5hZ2VyR0wgKnNtID0gZ2V0UmVuZGVyZXIoKS0+Z2V0U3RhdGVNYW5hZ2VyKCk7CisgICAg
ICAgIHNtLT5iaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUiwgbURyYXdpbmctPmdl
dEdMRkIoKSk7CisgICAgICAgIHNtLT5zZXRDbGVhckNvbG9yKGdsOjpDb2xvckYoMCwgMCwgMCwg
MSkpOworICAgICAgICBzbS0+c2V0Q2xlYXJEZXB0aCgxKTsKKyAgICAgICAgc20tPnNldFNjaXNz
b3JUZXN0RW5hYmxlZChmYWxzZSk7CisgICAgICAgIHNtLT5zZXRDb2xvck1hc2sodHJ1ZSwgdHJ1
ZSwgdHJ1ZSwgdHJ1ZSk7CisgICAgICAgIHNtLT5zZXREZXB0aE1hc2sodHJ1ZSk7CisgICAgICAg
IG1GdW5jdGlvbnNHTC0+Y2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZF
Ul9CSVQpOworICAgIH0KKworICAgIGRyYXdXaXRoVGV4dHVyZShidWZmZXIpOworICAgIHByZXNl
bnRTY3JlZW4oKTsKK30KKwordm9pZCBEaXNwbGF5T3pvbmU6OmZsdXNoR0woKQoreworICAgIG1G
dW5jdGlvbnNHTC0+Zmx1c2goKTsKKyAgICBpZiAobUVHTC0+aGFzRXh0ZW5zaW9uKCJFR0xfS0hS
X2ZlbmNlX3N5bmMiKSkKKyAgICB7CisgICAgICAgIGNvbnN0IEVHTGludCBhdHRyaWJbXSA9IHtF
R0xfU1lOQ19DT05ESVRJT05fS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RUdMX1NZTkNfUFJJT1JfQ09NTUFORFNfSU1QTElDSVRfRVhURVJOQUxfQVJNLCBFR0xfTk9ORX07
CisgICAgICAgIEVHTFN5bmNLSFIgZmVuY2UgPSBtRUdMLT5jcmVhdGVTeW5jS0hSKEVHTF9TWU5D
X0ZFTkNFX0tIUiwgYXR0cmliKTsKKyAgICAgICAgaWYgKGZlbmNlKQorICAgICAgICB7CisgICAg
ICAgICAgICAvLyBUT0RPKGZqaGVuaWdtYW4pIEZpZ3VyZSBvdXQgdGhlIHJpZ2h0IHdheSB0byB1
c2UgZmVuY2VzIG9uIE1hbGkgR1BVCisgICAgICAgICAgICAvLyB0byBtYXhpbWl6ZSB0aHJvdWdo
cHV0IGFuZCBhdm9pZCBoYW5ncyB3aGVuIGEgcHJvZ3JhbSBpcyBpbnRlcnJ1cHRlZC4KKyAgICAg
ICAgICAgIC8vIFRoaXMgYnVzeSB3YWl0IHdhcyBhbiBhdHRlbXB0IHRvIHJlZHVjZSBoYW5ncyB3
aGVuIGludGVycnVwdGVkIGJ5IFNJR0lOVCwKKyAgICAgICAgICAgIC8vIGJ1dCB3ZSBzdGlsbCBn
ZXQgc29tZS4KKyAgICAgICAgICAgIGZvciAoOzspCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgRUdMaW50IHIgPSBtRUdMLT5jbGllbnRXYWl0U3luY0tIUihmZW5jZSwgRUdMX1NZTkNf
RkxVU0hfQ09NTUFORFNfQklUX0tIUiwgMCk7CisgICAgICAgICAgICAgICAgaWYgKHIgIT0gRUdM
X1RJTUVPVVRfRVhQSVJFRF9LSFIpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdXNsZWVwKDk5
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1FR0wtPmRlc3Ryb3lTeW5jS0hSKGZlbmNl
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBEaXNw
bGF5T3pvbmU6OnRlcm1pbmF0ZSgpCit7CisgICAgU2FmZURlbGV0ZShtU2Nhbm5pbmcpOworICAg
IFNhZmVEZWxldGUobVBlbmRpbmcpOworICAgIFNhZmVEZWxldGUobURyYXdpbmcpOworICAgIFNh
ZmVEZWxldGUobVVudXNlZCk7CisKKyAgICBpZiAobVByb2dyYW0pCisgICAgeworICAgICAgICBt
RnVuY3Rpb25zR0wtPmRlbGV0ZVByb2dyYW0obVByb2dyYW0pOworICAgICAgICBtRnVuY3Rpb25z
R0wtPmRlbGV0ZVNoYWRlcihtVmVydGV4U2hhZGVyKTsKKyAgICAgICAgbUZ1bmN0aW9uc0dMLT5k
ZWxldGVTaGFkZXIobUZyYWdtZW50U2hhZGVyKTsKKyAgICAgICAgbUZ1bmN0aW9uc0dMLT5kZWxl
dGVCdWZmZXJzKDEsICZtVmVydGV4QnVmZmVyKTsKKyAgICAgICAgbUZ1bmN0aW9uc0dMLT5kZWxl
dGVCdWZmZXJzKDEsICZtSW5kZXhCdWZmZXIpOworICAgICAgICBtUHJvZ3JhbSA9IDA7CisgICAg
fQorCisgICAgRGlzcGxheUdMOjp0ZXJtaW5hdGUoKTsKKworICAgIGlmIChtQ29udGV4dCkKKyAg
ICB7CisgICAgICAgIC8vIE1lc2EgbWlnaHQgY3Jhc2ggaWYgeW91IHRlcm1pbmF0ZSBFR0wgd2l0
aCBhIGNvbnRleHQgY3VycmVudAorICAgICAgICAvLyB0aGVuIHJlLWluaXRpYWxpemUgRUdMLCBz
byBtYWtlIG91ciBjb250ZXh0IG5vdCBjdXJyZW50LgorICAgICAgICBtRUdMLT5tYWtlQ3VycmVu
dChFR0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOworICAgICAgICBtRUdMLT5kZXN0cm95
Q29udGV4dChtQ29udGV4dCk7CisgICAgICAgIG1Db250ZXh0ID0gbnVsbHB0cjsKKyAgICB9CisK
KyAgICBTYWZlRGVsZXRlKG1GdW5jdGlvbnNHTCk7CisKKyAgICBpZiAobUVHTCkKKyAgICB7Cisg
ICAgICAgIG1FR0wtPnRlcm1pbmF0ZSgpOworICAgICAgICBTYWZlRGVsZXRlKG1FR0wpOworICAg
IH0KKworICAgIGRybU1vZGVGcmVlQ3J0YyhtQ1JUQyk7CisKKyAgICBpZiAobUdCTSkKKyAgICB7
CisgICAgICAgIGludCBmZCA9IGdibV9kZXZpY2VfZ2V0X2ZkKG1HQk0pOworICAgICAgICBnYm1f
ZGV2aWNlX2Rlc3Ryb3kobUdCTSk7CisgICAgICAgIG1HQk0gPSBudWxscHRyOworICAgICAgICBj
bG9zZShmZCk7CisgICAgfQorfQorCitTdXJmYWNlSW1wbCAqRGlzcGxheU96b25lOjpjcmVhdGVX
aW5kb3dTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNv
bmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykK
K3sKKyAgICBCdWZmZXIgKmJ1ZmZlciA9IG5ldyBCdWZmZXIodGhpcywgR0JNX0JPX1VTRV9SRU5E
RVJJTkcsIEdCTV9GT1JNQVRfQVJHQjg4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERSTV9GT1JNQVRfQVJHQjg4ODgsIERSTV9GT1JNQVRfWFJHQjg4ODgsIHRydWUsIHRydWUp
OworICAgIGlmICghYnVmZmVyIHx8ICFidWZmZXItPmluaXRpYWxpemUocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBOYXRpdmVXaW5kb3cgKj4od2luZG93KSkpCisgICAgeworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIG5ldyBTdXJmYWNlT3pvbmUoc3RhdGUsIGdldFJl
bmRlcmVyKCksIGJ1ZmZlcik7Cit9CisKK1N1cmZhY2VJbXBsICpEaXNwbGF5T3pvbmU6OmNyZWF0
ZVBidWZmZXJTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmln
ICpjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCit7CisgICAgRUdMQXR0
cmliIHdpZHRoICA9IGF0dHJpYnMuZ2V0KEVHTF9XSURUSCwgMCk7CisgICAgRUdMQXR0cmliIGhl
aWdodCA9IGF0dHJpYnMuZ2V0KEVHTF9IRUlHSFQsIDApOworICAgIEJ1ZmZlciAqYnVmZmVyID0g
bmV3IEJ1ZmZlcih0aGlzLCBHQk1fQk9fVVNFX1JFTkRFUklORywgR0JNX0ZPUk1BVF9BUkdCODg4
OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFJNX0ZPUk1BVF9BUkdCODg4OCwg
RFJNX0ZPUk1BVF9YUkdCODg4OCwgdHJ1ZSwgdHJ1ZSk7CisgICAgaWYgKCFidWZmZXIgfHwgIWJ1
ZmZlci0+aW5pdGlhbGl6ZSh3aWR0aCwgaGVpZ2h0KSkKKyAgICB7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKyAgICByZXR1cm4gbmV3IFN1cmZhY2VPem9uZShzdGF0ZSwgZ2V0UmVu
ZGVyZXIoKSwgYnVmZmVyKTsKK30KKworU3VyZmFjZUltcGwgKkRpc3BsYXlPem9uZTo6Y3JlYXRl
UGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgc2hhcmVI
YW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKK3sKKyAgICBVTklNUExF
TUVOVEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1N1cmZhY2VJbXBsICpEaXNwbGF5
T3pvbmU6OmNyZWF0ZVBpeG1hcFN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBl
Z2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTmF0aXZlUGl4bWFwVHlwZSBuYXRpdmVQaXhtYXAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmli
dXRlTWFwICZhdHRyaWJzKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworZWdsOjpFcnJvciBEaXNwbGF5T3pvbmU6OmdldERldmljZShEZXZpY2VJbXBs
ICoqZGV2aWNlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZWdsOjpFcnJv
cihFR0xfQkFEX0RJU1BMQVkpOworfQorCitlZ2w6OkNvbmZpZ1NldCBEaXNwbGF5T3pvbmU6Omdl
bmVyYXRlQ29uZmlncygpCit7CisgICAgZWdsOjpDb25maWdTZXQgY29uZmlnczsKKworICAgIGVn
bDo6Q29uZmlnIGNvbmZpZzsKKyAgICBjb25maWcucmVkU2l6ZSAgICAgICAgICAgPSA4OworICAg
IGNvbmZpZy5ncmVlblNpemUgICAgICAgICA9IDg7CisgICAgY29uZmlnLmJsdWVTaXplICAgICAg
ICAgID0gODsKKyAgICBjb25maWcuYWxwaGFTaXplICAgICAgICAgPSA4OworICAgIGNvbmZpZy5k
ZXB0aFNpemUgICAgICAgICA9IDI0OworICAgIGNvbmZpZy5zdGVuY2lsU2l6ZSAgICAgICA9IDg7
CisgICAgY29uZmlnLmJpbmRUb1RleHR1cmVSR0JBID0gRUdMX1RSVUU7CisgICAgY29uZmlnLnJl
bmRlcmFibGVUeXBlICAgID0gRUdMX09QRU5HTF9FUzJfQklUOworICAgIGNvbmZpZy5zdXJmYWNl
VHlwZSAgICAgICA9IEVHTF9XSU5ET1dfQklUIHwgRUdMX1BCVUZGRVJfQklUOworCisgICAgY29u
Zmlncy5hZGQoY29uZmlnKTsKKyAgICByZXR1cm4gY29uZmlnczsKK30KKworYm9vbCBEaXNwbGF5
T3pvbmU6OnRlc3REZXZpY2VMb3N0KCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2VnbDo6
RXJyb3IgRGlzcGxheU96b25lOjpyZXN0b3JlTG9zdERldmljZSgpCit7CisgICAgVU5JTVBMRU1F
TlRFRCgpOworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfRElTUExBWSk7Cit9CisKK2Jv
b2wgRGlzcGxheU96b25lOjppc1ZhbGlkTmF0aXZlV2luZG93KEVHTE5hdGl2ZVdpbmRvd1R5cGUg
d2luZG93KSBjb25zdAoreworICAgIHJldHVybiB0cnVlOworfQorCitlZ2w6OkVycm9yIERpc3Bs
YXlPem9uZTo6Z2V0RHJpdmVyVmVyc2lvbihzdGQ6OnN0cmluZyAqdmVyc2lvbikgY29uc3QKK3sK
KyAgICAqdmVyc2lvbiA9ICIiOworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsK
K30KKworZWdsOjpFcnJvciBEaXNwbGF5T3pvbmU6OndhaXRDbGllbnQoKSBjb25zdAoreworICAg
IC8vIFRPRE8oZmpoZW5pZ21hbikgSW1wbGVtZW50IHRoaXMuCisgICAgcmV0dXJuIGVnbDo6RXJy
b3IoRUdMX1NVQ0NFU1MpOworfQorCitlZ2w6OkVycm9yIERpc3BsYXlPem9uZTo6d2FpdE5hdGl2
ZShFR0xpbnQgZW5naW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWds
OjpTdXJmYWNlICpkcmF3U3VyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVnbDo6U3VyZmFjZSAqcmVhZFN1cmZhY2UpIGNvbnN0Cit7CisgICAgLy8gVE9ETyhmamhl
bmlnbWFuKSBJbXBsZW1lbnQgdGhpcy4KKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VT
Uyk7Cit9CisKK3ZvaWQgRGlzcGxheU96b25lOjpzZXRTd2FwSW50ZXJ2YWwoRUdMU3VyZmFjZSBk
cmF3YWJsZSwgU3dhcENvbnRyb2xEYXRhICpkYXRhKQoreworICAgIEFTU0VSVChkYXRhICE9IG51
bGxwdHIpOworfQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvb3pvbmUvRGlzcGxheU96b25lLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL2VnbC9vem9uZS9EaXNwbGF5T3pvbmUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL296b25lL0Rpc3Bs
YXlPem9uZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjEwIEBACisvLworLy8gQ29weXJp
Z2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
KworLy8gRGlzcGxheU96b25lLmg6IE96b25lIGltcGxlbWVudGF0aW9uIG9mIGVnbDo6RGlzcGxh
eQorCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0dMX0VHTF9PWk9ORV9ESVNQTEFZT1pPTkVf
SF8KKyNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfR0xfRUdMX09aT05FX0RJU1BMQVlPWk9ORV9I
XworCisjaW5jbHVkZSA8eGY4NmRybS5oPgorI2luY2x1ZGUgPHhmODZkcm1Nb2RlLmg+CisKKyNp
bmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvRGlz
cGxheUVHTC5oIgorCitzdHJ1Y3QgZ2JtX2RldmljZTsKK3N0cnVjdCBnYm1fYm87CisKK25hbWVz
cGFjZSBnbAoreworY2xhc3MgRnJhbWVidWZmZXJTdGF0ZTsKK30KKworbmFtZXNwYWNlIHJ4Cit7
CisKK2NsYXNzIEZyYW1lYnVmZmVyR0w7CisKKy8vIFRPRE8oZmpoZW5pZ21hbikgSW1wbGVtZW50
IHN3YXAgY29udHJvbC4gIFRoZSBmb2xsb3dpbmcgc3RydWN0IHdpbGwgYmUgdXNlZCBmb3IgdGhh
dC4KKy8vIFN0YXRlLXRyYWNraW5nIGRhdGEgZm9yIHRoZSBzd2FwIGNvbnRyb2wgdG8gYWxsb3cg
RGlzcGxheU96b25lIHRvIHJlbWVtYmVyIHBlcgorLy8gZHJhd2FibGUgaW5mb3JtYXRpb24gZm9y
IHN3YXAgY29udHJvbC4KK3N0cnVjdCBTd2FwQ29udHJvbERhdGEgZmluYWwKK3sKKyAgICBTd2Fw
Q29udHJvbERhdGEoKTsKKworICAgIC8vIFNldCBieSB0aGUgZHJhd2FibGUKKyAgICBpbnQgdGFy
Z2V0U3dhcEludGVydmFsOworCisgICAgLy8gRGlzcGxheU96b25lLXNpZGUgc3RhdGUtdHJhY2tp
bmcKKyAgICBpbnQgbWF4U3dhcEludGVydmFsOworICAgIGludCBjdXJyZW50U3dhcEludGVydmFs
OworfTsKKworY2xhc3MgRGlzcGxheU96b25lIGZpbmFsIDogcHVibGljIERpc3BsYXlFR0wKK3sK
KyAgcHVibGljOgorICAgIHN0cnVjdCBOYXRpdmVXaW5kb3cKKyAgICB7CisgICAgICAgIGludDMy
X3QgeDsKKyAgICAgICAgaW50MzJfdCB5OworICAgICAgICBpbnQzMl90IHdpZHRoOworICAgICAg
ICBpbnQzMl90IGhlaWdodDsKKyAgICAgICAgaW50MzJfdCBib3JkZXJXaWR0aDsKKyAgICAgICAg
aW50MzJfdCBib3JkZXJIZWlnaHQ7CisgICAgICAgIGludDMyX3QgdmlzaWJsZTsKKyAgICAgICAg
aW50MzJfdCBkZXB0aDsKKyAgICB9OworCisgICAgY2xhc3MgQnVmZmVyIGZpbmFsIDogYW5nbGU6
Ok5vbkNvcHlhYmxlCisgICAgeworICAgICAgcHVibGljOgorICAgICAgICBCdWZmZXIoRGlzcGxh
eU96b25lICpkaXNwbGF5LAorICAgICAgICAgICAgICAgdWludDMyX3QgdXNlRmxhZ3MsCisgICAg
ICAgICAgICAgICB1aW50MzJfdCBnYm1Gb3JtYXQsCisgICAgICAgICAgICAgICB1aW50MzJfdCBk
cm1Gb3JtYXQsCisgICAgICAgICAgICAgICB1aW50MzJfdCBkcm1Gb3JtYXRGQiwKKyAgICAgICAg
ICAgICAgIGludCBkZXB0aEJpdHMsCisgICAgICAgICAgICAgICBpbnQgc3RlbmNpbEJpdHMpOwor
CisgICAgICAgIH5CdWZmZXIoKTsKKyAgICAgICAgYm9vbCBpbml0aWFsaXplKGNvbnN0IE5hdGl2
ZVdpbmRvdyAqd2luZG93KTsKKyAgICAgICAgYm9vbCBpbml0aWFsaXplKGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0KTsKKyAgICAgICAgdm9pZCByZXNldCgpOworICAgICAgICBib29sIHJl
c2l6ZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCk7CisgICAgICAgIEZyYW1lYnVmZmVy
R0wgKmZyYW1lYnVmZmVyR0woY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJnN0YXRlKTsKKyAg
ICAgICAgdm9pZCBwcmVzZW50KCk7CisgICAgICAgIHVpbnQzMl90IGdldERSTUZCKCk7CisgICAg
ICAgIHZvaWQgYmluZFRleEltYWdlKCk7CisgICAgICAgIEdMdWludCBnZXRUZXh0dXJlKCk7Cisg
ICAgICAgIGludDMyX3QgZ2V0V2lkdGgoKSBjb25zdCB7IHJldHVybiBtV2lkdGg7IH0KKyAgICAg
ICAgaW50MzJfdCBnZXRIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtSGVpZ2h0OyB9CisgICAgICAg
IEdMdWludCBnZXRHTEZCKCkgY29uc3QgeyByZXR1cm4gbUdMRkI7IH0KKyAgICAgICAgY29uc3Qg
TmF0aXZlV2luZG93ICpnZXROYXRpdmUoKSBjb25zdCB7IHJldHVybiBtTmF0aXZlOyB9CisKKyAg
ICAgIHByaXZhdGU6CisgICAgICAgIERpc3BsYXlPem9uZSAqbURpc3BsYXk7CisgICAgICAgIGNv
bnN0IE5hdGl2ZVdpbmRvdyAqbU5hdGl2ZTsKKyAgICAgICAgaW50IG1XaWR0aDsKKyAgICAgICAg
aW50IG1IZWlnaHQ7CisgICAgICAgIGNvbnN0IGludCBtRGVwdGhCaXRzOworICAgICAgICBjb25z
dCBpbnQgbVN0ZW5jaWxCaXRzOworICAgICAgICBjb25zdCB1aW50MzJfdCBtVXNlRmxhZ3M7Cisg
ICAgICAgIGNvbnN0IHVpbnQzMl90IG1HQk1Gb3JtYXQ7CisgICAgICAgIGNvbnN0IHVpbnQzMl90
IG1EUk1Gb3JtYXQ7CisgICAgICAgIGNvbnN0IHVpbnQzMl90IG1EUk1Gb3JtYXRGQjsKKyAgICAg
ICAgZ2JtX2JvICptQk87CisgICAgICAgIGludCBtRE1BQnVmOworICAgICAgICBib29sIG1IYXNE
Uk1GQjsKKyAgICAgICAgdWludDMyX3QgbURSTUZCOworICAgICAgICBFR0xJbWFnZUtIUiBtSW1h
Z2U7CisgICAgICAgIEdMdWludCBtQ29sb3JCdWZmZXI7CisgICAgICAgIEdMdWludCBtRFNCdWZm
ZXI7CisgICAgICAgIEdMdWludCBtR0xGQjsKKyAgICAgICAgR0x1aW50IG1UZXh0dXJlOworICAg
IH07CisKKyAgICBEaXNwbGF5T3pvbmUoKTsKKyAgICB+RGlzcGxheU96b25lKCkgb3ZlcnJpZGU7
CisKKyAgICBlZ2w6OkVycm9yIGluaXRpYWxpemUoZWdsOjpEaXNwbGF5ICpkaXNwbGF5KSBvdmVy
cmlkZTsKKyAgICB2b2lkIHRlcm1pbmF0ZSgpIG92ZXJyaWRlOworCisgICAgU3VyZmFjZUltcGwg
KmNyZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25m
aWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2
ZVdpbmRvd1R5cGUgd2luZG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKKyAgICBTdXJmYWNl
SW1wbCAqY3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZp
ZyAqY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOworICAgIFN1cmZhY2VJ
bXBsICpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6OlN1cmZhY2VTdGF0
ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgc2hhcmVIYW5kbGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6
QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKKyAgICBTdXJmYWNlSW1wbCAqY3JlYXRl
UGl4bWFwU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmF0aXZlUGl4bWFwVHlw
ZSBuYXRpdmVQaXhtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOworCisgICAgZWdsOjpDb25m
aWdTZXQgZ2VuZXJhdGVDb25maWdzKCkgb3ZlcnJpZGU7CisKKyAgICBib29sIHRlc3REZXZpY2VM
b3N0KCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciByZXN0b3JlTG9zdERldmljZSgpIG92ZXJy
aWRlOworCisgICAgYm9vbCBpc1ZhbGlkTmF0aXZlV2luZG93KEVHTE5hdGl2ZVdpbmRvd1R5cGUg
d2luZG93KSBjb25zdCBvdmVycmlkZTsKKworICAgIGVnbDo6RXJyb3IgZ2V0RGV2aWNlKERldmlj
ZUltcGwgKipkZXZpY2UpIG92ZXJyaWRlOworCisgICAgZWdsOjpFcnJvciB3YWl0Q2xpZW50KCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciB3YWl0TmF0aXZlKEVHTGludCBlbmdpbmUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3VyZmFjZSAqZHJhd1N1cmZhY2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3VyZmFjZSAqcmVhZFN1cmZhY2UpIGNvbnN0
IG92ZXJyaWRlOworCisgICAgLy8gVE9ETyhmamhlbmlnbWFuKSBJbXBsZW1lbnQgdGhpcy4KKyAg
ICAvLyBTd2FwIGludGVydmFsIGNhbiBiZSBzZXQgZ2xvYmFsbHkgb3IgcGVyIGRyYXdhYmxlLgor
ICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBtYWtlIHN1cmUgdGhlIGRyYXdhYmxlJ3Mgc3dhcCBp
bnRlcnZhbCBpcyB0aGUKKyAgICAvLyBvbmUgcmVxdWlyZWQgc28gdGhhdCB0aGUgc3Vic2VxdWVu
dCBzd2FwQnVmZmVycyBhY3RzIGFzIGV4cGVjdGVkLgorICAgIHZvaWQgc2V0U3dhcEludGVydmFs
KEVHTFN1cmZhY2UgZHJhd2FibGUsIFN3YXBDb250cm9sRGF0YSAqZGF0YSk7CisKKyAgICBlZ2w6
OkVycm9yIGdldERyaXZlclZlcnNpb24oc3RkOjpzdHJpbmcgKnZlcnNpb24pIGNvbnN0IG92ZXJy
aWRlOworCisgIHByaXZhdGU6CisgICAgR0x1aW50IG1ha2VTaGFkZXIoR0x1aW50IHR5cGUsIGNv
bnN0IGNoYXIgKnNyYyk7CisgICAgdm9pZCBkcmF3QnVmZmVyKEJ1ZmZlciAqYnVmZmVyKTsKKyAg
ICB2b2lkIGRyYXdXaXRoQmxpdChCdWZmZXIgKmJ1ZmZlcik7CisgICAgdm9pZCBkcmF3V2l0aFRl
eHR1cmUoQnVmZmVyICpidWZmZXIpOworICAgIHZvaWQgZmx1c2hHTCgpOworICAgIHZvaWQgcHJl
c2VudFNjcmVlbigpOworICAgIHN0YXRpYyB2b2lkIHBhZ2VGbGlwSGFuZGxlcihpbnQgZmQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzZXF1ZW5jZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHR2X3NlYywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHR2X3VzZWMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEpOworICAgIHZvaWQgcGFnZUZsaXBI
YW5kbGVyKHVuc2lnbmVkIGludCBzZXF1ZW5jZSwgdWludDY0X3QgdHYpOworCisgICAgLy8gVE9E
TyhmamhlbmlnbWFuKSBJbXBsZW1lbnQgc3dhcCBjb250cm9sLiAgVGhlIGZvbGxvd2luZyBzdHVm
ZiB3aWxsIGJlIHVzZWQgZm9yIHRoYXQuCisgICAgZW51bSBjbGFzcyBTd2FwQ29udHJvbAorICAg
IHsKKyAgICAgICAgQUJTRU5ULAorICAgICAgICBFWFQsCisgICAgICAgIE1FU0EsCisgICAgICAg
IFNHSSwKKyAgICB9OworICAgIFN3YXBDb250cm9sIG1Td2FwQ29udHJvbDsKKyAgICBpbnQgbU1p
blN3YXBJbnRlcnZhbDsKKyAgICBpbnQgbU1heFN3YXBJbnRlcnZhbDsKKyAgICBpbnQgbUN1cnJl
bnRTd2FwSW50ZXJ2YWw7CisKKyAgICBnYm1fZGV2aWNlICptR0JNOworICAgIGRybU1vZGVDb25u
ZWN0b3JQdHIgbUNvbm5lY3RvcjsKKyAgICBkcm1Nb2RlTW9kZUluZm9QdHIgbU1vZGU7CisgICAg
ZHJtTW9kZUNydGNQdHIgbUNSVEM7CisgICAgYm9vbCBtU2V0Q1JUQzsKKworICAgIGludDMyX3Qg
bVdpZHRoOworICAgIGludDMyX3QgbUhlaWdodDsKKworICAgIC8vIFRocmVlIHNjYW5vdXQgYnVm
ZmVycyBjeWNsZSB0aHJvdWdoIGZvdXIgc3RhdGVzLiAgVGhlIHN0YXRlIG9mIGEgYnVmZmVyCisg
ICAgLy8gaXMgaW5kaWNhdGVkIGJ5IHdoaWNoIG9mIHRoZXNlIHBvaW50ZXJzIHBvaW50cyB0byBp
dC4KKyAgICAvLyBUT0RPKGZqaGVuaWdtYW4pIEl0IG1pZ2h0IGJlIHNpbXBsZXIvY2xlYXJlciB0
byB1c2UgYSByaW5nIGJ1ZmZlci4KKyAgICBCdWZmZXIgKm1TY2FubmluZzsKKyAgICBCdWZmZXIg
Km1QZW5kaW5nOworICAgIEJ1ZmZlciAqbURyYXdpbmc7CisgICAgQnVmZmVyICptVW51c2VkOwor
CisgICAgR0x1aW50IG1Qcm9ncmFtOworICAgIEdMdWludCBtVmVydGV4U2hhZGVyOworICAgIEdM
dWludCBtRnJhZ21lbnRTaGFkZXI7CisgICAgR0x1aW50IG1WZXJ0ZXhCdWZmZXI7CisgICAgR0x1
aW50IG1JbmRleEJ1ZmZlcjsKKyAgICBHTGludCBtQ2VudGVyVW5pZm9ybTsKKyAgICBHTGludCBt
V2luZG93U2l6ZVVuaWZvcm07CisgICAgR0xpbnQgbUJvcmRlclNpemVVbmlmb3JtOworICAgIEdM
aW50IG1EZXB0aFVuaWZvcm07Cit9OworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8g
TElCQU5HTEVfUkVOREVSRVJfR0xfRUdMX09aT05FX0RJU1BMQVlPWk9ORV9IXwpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9vem9uZS9T
dXJmYWNlT3pvbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvb3pvbmUvU3VyZmFjZU96b25lLmNwcAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvZWdsL296b25lL1N1cmZhY2VPem9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5
OCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFN1cmZhY2VPem9uZS5jcHA6IE96b25lIGltcGxlbWVu
dGF0aW9uIG9mIGVnbDo6U3VyZmFjZUdMCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9n
bC9lZ2wvb3pvbmUvU3VyZmFjZU96b25lLmgiCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9nbC9GcmFtZWJ1ZmZlckdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZWds
L296b25lL0Rpc3BsYXlPem9uZS5oIgorCituYW1lc3BhY2UgcngKK3sKKworU3VyZmFjZU96b25l
OjpTdXJmYWNlT3pvbmUoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUmVuZGVyZXJHTCAqcmVuZGVyZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEaXNwbGF5T3pvbmU6OkJ1ZmZlciAqYnVmZmVyKQorICAgIDogU3VyZmFjZUdM
KHN0YXRlLCByZW5kZXJlciksIG1CdWZmZXIoYnVmZmVyKQoreworfQorCitTdXJmYWNlT3pvbmU6
On5TdXJmYWNlT3pvbmUoKQoreworICAgIGRlbGV0ZSBtQnVmZmVyOworfQorCitlZ2w6OkVycm9y
IFN1cmZhY2VPem9uZTo6aW5pdGlhbGl6ZSgpCit7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdM
X1NVQ0NFU1MpOworfQorCitGcmFtZWJ1ZmZlckltcGwgKlN1cmZhY2VPem9uZTo6Y3JlYXRlRGVm
YXVsdEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZzdGF0ZSkKK3sKKyAg
ICByZXR1cm4gbUJ1ZmZlci0+ZnJhbWVidWZmZXJHTChzdGF0ZSk7Cit9CisKK2VnbDo6RXJyb3Ig
U3VyZmFjZU96b25lOjptYWtlQ3VycmVudCgpCit7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdM
X1NVQ0NFU1MpOworfQorCitlZ2w6OkVycm9yIFN1cmZhY2VPem9uZTo6c3dhcCgpCit7CisgICAg
bUJ1ZmZlci0+cHJlc2VudCgpOworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsK
K30KKworZWdsOjpFcnJvciBTdXJmYWNlT3pvbmU6OnBvc3RTdWJCdWZmZXIoRUdMaW50IHgsIEVH
TGludCB5LCBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpCit7CisgICAgVU5JTVBMRU1FTlRF
RCgpOworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKK30KKworZWdsOjpFcnJv
ciBTdXJmYWNlT3pvbmU6OnF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xpbnQgYXR0cmlidXRl
LCB2b2lkICoqdmFsdWUpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBlZ2w6
OkVycm9yKEVHTF9TVUNDRVNTKTsKK30KKworZWdsOjpFcnJvciBTdXJmYWNlT3pvbmU6OmJpbmRU
ZXhJbWFnZShnbDo6VGV4dHVyZSAqdGV4dHVyZSwgRUdMaW50IGJ1ZmZlcikKK3sKKyAgICBtQnVm
ZmVyLT5iaW5kVGV4SW1hZ2UoKTsKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7
Cit9CisKK2VnbDo6RXJyb3IgU3VyZmFjZU96b25lOjpyZWxlYXNlVGV4SW1hZ2UoRUdMaW50IGJ1
ZmZlcikKK3sKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKK3ZvaWQg
U3VyZmFjZU96b25lOjpzZXRTd2FwSW50ZXJ2YWwoRUdMaW50IGludGVydmFsKQoreworICAgIG1T
d2FwQ29udHJvbC50YXJnZXRTd2FwSW50ZXJ2YWwgPSBpbnRlcnZhbDsKK30KKworRUdMaW50IFN1
cmZhY2VPem9uZTo6Z2V0V2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBtQnVmZmVyLT5nZXRX
aWR0aCgpOworfQorCitFR0xpbnQgU3VyZmFjZU96b25lOjpnZXRIZWlnaHQoKSBjb25zdAorewor
ICAgIHJldHVybiBtQnVmZmVyLT5nZXRIZWlnaHQoKTsKK30KKworRUdMaW50IFN1cmZhY2VPem9u
ZTo6aXNQb3N0U3ViQnVmZmVyU3VwcG9ydGVkKCkgY29uc3QKK3sKKyAgICBVTklNUExFTUVOVEVE
KCk7CisgICAgcmV0dXJuIEVHTF9GQUxTRTsKK30KKworRUdMaW50IFN1cmZhY2VPem9uZTo6Z2V0
U3dhcEJlaGF2aW9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gRUdMX0JVRkZFUl9QUkVTRVJWRUQ7
Cit9Cit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvb3pvbmUvU3VyZmFjZU96b25lLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Vn
bC9vem9uZS9TdXJmYWNlT3pvbmUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL296b25lL1N1cmZhY2VPem9uZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIw
MTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBTdXJm
YWNlT3pvbmUuaDogT3pvbmUgaW1wbGVtZW50YXRpb24gb2YgZWdsOjpTdXJmYWNlR0wKKworI2lm
bmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9HTF9FR0xfT1pPTkVfU1VSRkFDRU9aT05FX0hfCisjZGVm
aW5lIExJQkFOR0xFX1JFTkRFUkVSX0dMX0VHTF9PWk9ORV9TVVJGQUNFT1pPTkVfSF8KKworI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1N1cmZhY2VHTC5oIgorI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2dsL2VnbC9vem9uZS9EaXNwbGF5T3pvbmUuaCIKKworbmFtZXNwYWNlIHJ4
Cit7CisKK2NsYXNzIFN1cmZhY2VPem9uZSA6IHB1YmxpYyBTdXJmYWNlR0wKK3sKKyAgcHVibGlj
OgorICAgIFN1cmZhY2VPem9uZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAg
ICAgICAgICAgICAgIFJlbmRlcmVyR0wgKnJlbmRlcmVyLAorICAgICAgICAgICAgICAgICBEaXNw
bGF5T3pvbmU6OkJ1ZmZlciAqYnVmZmVyKTsKKyAgICB+U3VyZmFjZU96b25lKCkgb3ZlcnJpZGU7
CisKKyAgICBGcmFtZWJ1ZmZlckltcGwgKmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25zdCBn
bDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUpIG92ZXJyaWRlOworCisgICAgZWdsOjpFcnJvciBp
bml0aWFsaXplKCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBtYWtlQ3VycmVudCgpIG92ZXJy
aWRlOworCisgICAgZWdsOjpFcnJvciBzd2FwKCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBw
b3N0U3ViQnVmZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVp
Z2h0KSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIHF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShF
R0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUpIG92ZXJyaWRlOworICAgIGVnbDo6RXJyb3Ig
YmluZFRleEltYWdlKGdsOjpUZXh0dXJlICp0ZXh0dXJlLCBFR0xpbnQgYnVmZmVyKSBvdmVycmlk
ZTsKKyAgICBlZ2w6OkVycm9yIHJlbGVhc2VUZXhJbWFnZShFR0xpbnQgYnVmZmVyKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHNldFN3YXBJbnRlcnZhbChFR0xpbnQgaW50ZXJ2YWwpIG92ZXJyaWRlOwor
CisgICAgRUdMaW50IGdldFdpZHRoKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRUdMaW50IGdldEhl
aWdodCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgRUdMaW50IGlzUG9zdFN1YkJ1ZmZlclN1cHBv
cnRlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEVHTGludCBnZXRTd2FwQmVoYXZpb3IoKSBjb25z
dCBvdmVycmlkZTsKKworICBwcml2YXRlOgorICAgIERpc3BsYXlPem9uZTo6QnVmZmVyICptQnVm
ZmVyOworCisgICAgLy8gVE9ETyhmamhlbmlnbWFuKSBJbXBsZW1lbnQgc3dhcCBjb250cm9sLiAg
VGhpcyB3aWxsIGJlIHVzZWQgZm9yIHRoYXQuCisgICAgU3dhcENvbnRyb2xEYXRhIG1Td2FwQ29u
dHJvbDsKK307Cit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5E
RVJFUl9HTF9FR0xfT1pPTkVfU1VSRkFDRU9aT05FX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZm9ybWF0dXRpbHNnbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L2Zvcm1hdHV0aWxzZ2wuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZm9ybWF0dXRpbHNnbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAKIH0KIAogLy8gc3VwcG9ydGVkID0gdHJ1ZQotc3Rh
dGljIGlubGluZSBTdXBwb3J0UmVxdWlyZW1lbnQgQWx3YXlzKCkKK3N0YXRpYyBpbmxpbmUgU3Vw
cG9ydFJlcXVpcmVtZW50IEFsd2F5c1N1cHBvcnRlZCgpCiB7CiAgICAgU3VwcG9ydFJlcXVpcmVt
ZW50IHJlcXVpcmVtZW50OwogICAgIHJlcXVpcmVtZW50LnZlcnNpb24ubWFqb3IgPSAwOwpAQCAt
ODgsNyArODgsNyBAQAogfQogCiAvLyBzdXBwb3J0ZWQgPSBmYWxzZQotc3RhdGljIGlubGluZSBT
dXBwb3J0UmVxdWlyZW1lbnQgTmV2ZXIoKQorc3RhdGljIGlubGluZSBTdXBwb3J0UmVxdWlyZW1l
bnQgTmV2ZXJTdXBwb3J0ZWQoKQogewogICAgIFN1cHBvcnRSZXF1aXJlbWVudCByZXF1aXJlbWVu
dDsKICAgICByZXF1aXJlbWVudC52ZXJzaW9uLm1ham9yID0gc3RkOjpudW1lcmljX2xpbWl0czxH
THVpbnQ+OjptYXgoKTsKQEAgLTEyNywxMjggKzEyNywxMjggQEAKICAgICBJbnRlcm5hbEZvcm1h
dEluZm9NYXAgbWFwOwogCiAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgotICAgIC8vICAgICAgICAg
ICAgICAgICAgICAgICB8IEZvcm1hdCAgICAgICAgICAgICAgfCBPcGVuR0wgdGV4dHVyZSBzdXBw
b3J0ICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZpbHRlciAgfCBPcGVuR0wgcmVuZGVyIHN1
cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICB8IE9wZW5HTCBFUyB0ZXh0dXJlIHN1cHBvcnQg
ICAgICAgICAgICAgICAgIHwgRmlsdGVyICB8IE9wZW5HTCBFUyByZW5kZXIgc3VwcG9ydCAgICAg
ICAgICAgICAgICAgfAotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUjgsICAgICAg
ICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAg
ICAgQWx3YXlzKCksIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAg
ICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfcmciKSwgICBBbHdheXMoKSwg
VmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfcmciKSAgKTsKLSAgICBJbnNlcnRG
b3JtYXRNYXBwaW5nKCZtYXAsIEdMX1I4X1NOT1JNLCAgICAgICAgICBWZXJzaW9uT25seSgzLCAx
KSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5cygpLCBOZXZlcigpLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgQWx3YXlzKCksIE5ldmVyKCkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SRzgs
ICAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwg
ICAgICAgICBBbHdheXMoKSwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmci
KSwgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRfdGV4dHVyZV9yZyIpLCAgIEFsd2F5
cygpLCBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpICApOwotICAgIElu
c2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkc4X1NOT1JNLCAgICAgICAgIFZlcnNpb25Pbmx5
KDMsIDEpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzKCksIE5ldmVyKCks
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9ubHkoMywgMCks
ICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXMoKSwgTmV2ZXIoKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdM
X1JHQjgsICAgICAgICAgICAgICBBbHdheXMoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFsd2F5cygpLCBBbHdheXMoKSwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX09FU19yZ2I4X3JnYmE4IiksICAg
QWx3YXlzKCksIEFsd2F5cygpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0g
ICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SRzhfU05PUk0sICAgICAgICAgVmVyc2lv
bk9ubHkoMywgMSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXMoKSwgTmV2
ZXIoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT25seSgz
LCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5cygpLCBOZXZlcigpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1h
cCwgR0xfUkdCNTY1LCAgICAgICAgICAgIEFsd2F5cygpLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQWx3YXlzKCksIEFsd2F5cygpLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQWx3YXlzKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBbHdheXMoKSwgQWx3YXlzKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQkE0LCAgICAgICAgICAgICBB
bHdheXMoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5cygp
LCBBbHdheXMoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5cygp
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzKCksIEFsd2F5cygpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGlu
ZygmbWFwLCBHTF9SR0I1X0ExLCAgICAgICAgICAgQWx3YXlzKCksICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBbHdheXMoKSwgQWx3YXlzKCksICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBbHdheXMoKSwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFsd2F5cygpLCBBbHdheXMoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICApOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCQTgsICAgICAgICAg
ICAgIEFsd2F5cygpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3
YXlzKCksIEFsd2F5cygpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVy
c2lvbk9yRXh0cygzLCAwLCAiR0xfT0VTX3JnYjhfcmdiYTgiKSwgICBBbHdheXMoKSwgVmVyc2lv
bk9yRXh0cygzLCAwLCAiR0xfT0VTX3JnYjhfcmdiYTgiKSAgKTsKLSAgICBJbnNlcnRGb3JtYXRN
YXBwaW5nKCZtYXAsIEdMX1JHQkE4X1NOT1JNLCAgICAgICBWZXJzaW9uT25seSgzLCAxKSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5cygpLCBOZXZlcigpLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgQWx3YXlzKCksIE5ldmVyKCkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0IxMF9BMiwg
ICAgICAgICAgQWx3YXlzKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBbHdheXMoKSwgQWx3YXlzKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5cygpLCBW
ZXJzaW9uT25seSgzLCAwKSAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEZv
cm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCMTBfQTJVSSwgICAgICAgIFZlcnNpb25PckV4dHMoMywg
MywgIkdMX0FSQl90ZXh0dXJlX3JnYjEwX2EydWkiKSwgTmV2ZXIoKSwgIEFsd2F5cygpLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9ubHkoMywgMCksICAgICAg
ICAgICAgICAgICAgICAgICAgICBOZXZlcigpLCAgQWx3YXlzKCkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1NSR0I4
LCAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDIsIDEsICJHTF9FWFRfdGV4dHVyZV9zUkdCIiks
ICAgICAgIEFsd2F5cygpLCBWZXJzaW9uT3JFeHRzKDIsIDEsICJHTF9FWFRfdGV4dHVyZV9zUkdC
IiksICAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlz
KCksIE5ldmVyKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5z
ZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9TUkdCOF9BTFBIQTgsICAgICAgVmVyc2lvbk9yRXh0
cygyLCAxLCAiR0xfRVhUX3RleHR1cmVfc1JHQiIpLCAgICAgICBBbHdheXMoKSwgVmVyc2lvbk9y
RXh0cygyLCAxLCAiR0xfRVhUX3RleHR1cmVfc1JHQiIpLCAgICBWZXJzaW9uT25seSgzLCAwKSwg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5cygpLCBWZXJzaW9uT3JFeHRzKDMsIDAsICJH
TF9FWFRfc1JHQiIpICAgICAgICApOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xf
UjhJLCAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3Jn
IiksICAgICAgICAgTmV2ZXIoKSwgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJl
X3JnIiksICAgICAgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAgICAgICAgICBO
ZXZlcigpLCAgVmVyc2lvbk9ubHkoMywgMCkgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAg
ICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1I4VUksICAgICAgICAgICAgICBWZXJzaW9u
T3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgICAgIE5ldmVyKCksICBWZXJz
aW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgIFZlcnNpb25Pbmx5KDMs
IDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXIoKSwgIFZlcnNpb25Pbmx5KDMsIDAp
ICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFw
LCBHTF9SMTZJLCAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1
cmVfcmciKSwgICAgICAgICBOZXZlcigpLCAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3Rl
eHR1cmVfcmciKSwgICAgICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5ldmVyKCksICBWZXJzaW9uT25seSgzLCAwKSAgICAgICAgICAgICAgICAgICAgICAgICAp
OwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUjE2VUksICAgICAgICAgICAgIFZl
cnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgICAgTmV2ZXIoKSwg
IFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgVmVyc2lvbk9u
bHkoMywgMCksICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlcigpLCAgVmVyc2lvbk9ubHko
MywgMCkgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5n
KCZtYXAsIEdMX1IzMkksICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJf
dGV4dHVyZV9yZyIpLCAgICAgICAgIE5ldmVyKCksICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9B
UkJfdGV4dHVyZV9yZyIpLCAgICAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgTmV2ZXIoKSwgIFZlcnNpb25Pbmx5KDMsIDApICAgICAgICAgICAgICAgICAgICAg
ICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SMzJVSSwgICAgICAgICAg
ICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwgICAgICAgICBOZXZl
cigpLCAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwgICAgICBWZXJz
aW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyKCksICBWZXJzaW9u
T25seSgzLCAwKSAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEZvcm1hdE1h
cHBpbmcoJm1hcCwgR0xfUkc4SSwgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdM
X0FSQl90ZXh0dXJlX3JnIiksICAgICAgICAgTmV2ZXIoKSwgIFZlcnNpb25PckV4dHMoMywgMCwg
IkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAg
ICAgICAgICAgICAgICBOZXZlcigpLCAgVmVyc2lvbk9ubHkoMywgMCkgICAgICAgICAgICAgICAg
ICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHOFVJLCAgICAg
ICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgICAg
IE5ldmVyKCksICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAg
IFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXIoKSwgIFZl
cnNpb25Pbmx5KDMsIDApICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9y
bWF0TWFwcGluZygmbWFwLCBHTF9SRzE2SSwgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAw
LCAiR0xfQVJCX3RleHR1cmVfcmciKSwgICAgICAgICBOZXZlcigpLCAgVmVyc2lvbk9yRXh0cygz
LCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwgICAgICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5ldmVyKCksICBWZXJzaW9uT25seSgzLCAwKSAgICAgICAgICAg
ICAgICAgICAgICAgICApOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkcxNlVJ
LCAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAg
ICAgICAgTmV2ZXIoKSwgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiks
ICAgICAgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlcigp
LCAgVmVyc2lvbk9ubHkoMywgMCkgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNl
cnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHMzJJLCAgICAgICAgICAgICBWZXJzaW9uT3JFeHRz
KDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgICAgIE5ldmVyKCksICBWZXJzaW9uT3JF
eHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgIFZlcnNpb25Pbmx5KDMsIDApLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXIoKSwgIFZlcnNpb25Pbmx5KDMsIDApICAgICAg
ICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9S
RzMyVUksICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmci
KSwgICAgICAgICBOZXZlcigpLCAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVf
cmciKSwgICAgICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgIE5l
dmVyKCksICBWZXJzaW9uT25seSgzLCAwKSAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAg
IEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCOEksICAgICAgICAgICAgIFZlcnNpb25P
ckV4dHMoMywgMCwgIkdMX0VYVF90ZXh0dXJlX2ludGVnZXIiKSwgICAgTmV2ZXIoKSwgIE5ldmVy
KCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9ubHkoMywg
MCksICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlcigpLCAgTmV2ZXIoKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAs
IEdMX1JHQjhVSSwgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRfdGV4dHVy
ZV9pbnRlZ2VyIiksICAgIE5ldmVyKCksICBOZXZlcigpLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgTmV2ZXIoKSwgIE5ldmVyKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7
Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0IxNkksICAgICAgICAgICAgVmVy
c2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfaW50ZWdlciIpLCAgICBOZXZlcigpLCAg
TmV2ZXIoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT25s
eSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyKCksICBOZXZlcigpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmco
Jm1hcCwgR0xfUkdCMTZVSSwgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF90
ZXh0dXJlX2ludGVnZXIiKSwgICAgTmV2ZXIoKSwgIE5ldmVyKCksICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAg
ICAgICAgICBOZXZlcigpLCAgTmV2ZXIoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQjMySSwgICAgICAgICAg
ICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRfdGV4dHVyZV9pbnRlZ2VyIiksICAgIE5ldmVy
KCksICBOZXZlcigpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNp
b25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXIoKSwgIE5ldmVyKCkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFw
cGluZygmbWFwLCBHTF9SR0IzMlVJLCAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xf
RVhUX3RleHR1cmVfaW50ZWdlciIpLCAgICBOZXZlcigpLCAgTmV2ZXIoKSwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5ldmVyKCksICBOZXZlcigpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICApOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCQThJLCAgICAg
ICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF90ZXh0dXJlX2ludGVnZXIiKSwgICAg
TmV2ZXIoKSwgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF90ZXh0dXJlX2ludGVnZXIiKSwg
VmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlcigpLCAgVmVy
c2lvbk9ubHkoMywgMCkgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3Jt
YXRNYXBwaW5nKCZtYXAsIEdMX1JHQkE4VUksICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAs
ICJHTF9FWFRfdGV4dHVyZV9pbnRlZ2VyIiksICAgIE5ldmVyKCksICBWZXJzaW9uT3JFeHRzKDMs
IDAsICJHTF9FWFRfdGV4dHVyZV9pbnRlZ2VyIiksIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgTmV2ZXIoKSwgIFZlcnNpb25Pbmx5KDMsIDApICAgICAgICAgICAg
ICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0JBMTZJ
LCAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfaW50ZWdlciIp
LCAgICBOZXZlcigpLCAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfaW50ZWdl
ciIpLCBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyKCks
ICBWZXJzaW9uT25seSgzLCAwKSAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2Vy
dEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCQTE2VUksICAgICAgICAgIFZlcnNpb25PckV4dHMo
MywgMCwgIkdMX0VYVF90ZXh0dXJlX2ludGVnZXIiKSwgICAgTmV2ZXIoKSwgIFZlcnNpb25PckV4
dHMoMywgMCwgIkdMX0VYVF90ZXh0dXJlX2ludGVnZXIiKSwgVmVyc2lvbk9ubHkoMywgMCksICAg
ICAgICAgICAgICAgICAgICAgICAgICBOZXZlcigpLCAgVmVyc2lvbk9ubHkoMywgMCkgICAgICAg
ICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JH
QkEzMkksICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRfdGV4dHVyZV9pbnRl
Z2VyIiksICAgIE5ldmVyKCksICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRfdGV4dHVyZV9p
bnRlZ2VyIiksIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2
ZXIoKSwgIFZlcnNpb25Pbmx5KDMsIDApICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAg
SW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0JBMzJVSSwgICAgICAgICAgVmVyc2lvbk9y
RXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfaW50ZWdlciIpLCAgICBOZXZlcigpLCAgVmVyc2lv
bk9yRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfaW50ZWdlciIpLCBWZXJzaW9uT25seSgzLCAw
KSwgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyKCksICBWZXJzaW9uT25seSgzLCAwKSAg
ICAgICAgICAgICAgICAgICAgICAgICApOworICAgIC8vICAgICAgICAgICAgICAgICAgICAgICB8
IEZvcm1hdCAgICAgICAgICAgICAgfCBPcGVuR0wgdGV4dHVyZSBzdXBwb3J0ICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IEZpbHRlciAgICAgICAgICAgfCBPcGVuR0wgcmVuZGVyIHN1cHBvcnQg
ICAgICAgICAgICAgICAgICAgICAgICB8IE9wZW5HTCBFUyB0ZXh0dXJlIHN1cHBvcnQgICAgICAg
ICAgICAgICAgIHwgRmlsdGVyICAgICAgICAgICB8IE9wZW5HTCBFUyByZW5kZXIgc3VwcG9ydCAg
ICAgICAgICAgICAgICAgfAorICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUjgsICAg
ICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAg
ICAgICAgQWx3YXlzU3VwcG9ydGVkKCksIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0
dXJlX3JnIiksICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfcmciKSwg
ICBBbHdheXNTdXBwb3J0ZWQoKSwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVf
cmciKSAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1I4X1NOT1JNLCAgICAg
ICAgICBWZXJzaW9uT25seSgzLCAxKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFs
d2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlz
U3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkgICAgICAgICAgICAgICAgICAgICAgICAgICk7
CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SRzgsICAgICAgICAgICAgICAgVmVy
c2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwgICAgICAgICBBbHdheXNTdXBw
b3J0ZWQoKSwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwgICAgICBW
ZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRfdGV4dHVyZV9yZyIpLCAgIEFsd2F5c1N1cHBvcnRl
ZCgpLCBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpICApOworICAgIElu
c2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkc4X1NOT1JNLCAgICAgICAgIFZlcnNpb25Pbmx5
KDMsIDEpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKCks
IE5ldmVyU3VwcG9ydGVkKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9u
bHkoMywgMCksICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2
ZXJTdXBwb3J0ZWQoKSAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3Jt
YXRNYXBwaW5nKCZtYXAsIEdMX1JHQjgsICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQoKSwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCBBbHdheXNT
dXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywg
MCwgIkdMX09FU19yZ2I4X3JnYmE4IiksICAgQWx3YXlzU3VwcG9ydGVkKCksIEFsd2F5c1N1cHBv
cnRlZCgpICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGlu
ZygmbWFwLCBHTF9SRzhfU05PUk0sICAgICAgICAgVmVyc2lvbk9ubHkoMywgMSksICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQo
KSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpICAg
ICAgICAgICAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwg
R0xfUkdCNTY1LCAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKCksIEFsd2F5c1N1cHBvcnRlZCgpLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKCksICAgICAgICAgICAgICAg
ICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgQWx3YXlzU3VwcG9ydGVkKCkgICAgICAgICAg
ICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQkE0
LCAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCBBbHdheXNTdXBwb3J0ZWQoKSwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgQWx3YXlzU3VwcG9ydGVkKCksIEFsd2F5c1N1cHBvcnRlZCgpICAgICAgICAgICAgICAgICAg
ICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0I1X0ExLCAgICAg
ICAgICAgQWx3YXlzU3VwcG9ydGVkKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
bHdheXNTdXBwb3J0ZWQoKSwgQWx3YXlzU3VwcG9ydGVkKCksICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5
c1N1cHBvcnRlZCgpLCBBbHdheXNTdXBwb3J0ZWQoKSAgICAgICAgICAgICAgICAgICAgICAgICAp
OworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCQTgsICAgICAgICAgICAgIEFs
d2F5c1N1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3Vw
cG9ydGVkKCksIEFsd2F5c1N1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfT0VTX3JnYjhfcmdiYTgiKSwgICBBbHdheXNTdXBwb3J0
ZWQoKSwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfT0VTX3JnYjhfcmdiYTgiKSAgKTsKKyAgICBJ
bnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQkE4X1NOT1JNLCAgICAgICBWZXJzaW9uT25s
eSgzLCAxKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCgp
LCBOZXZlclN1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25P
bmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKCksIE5l
dmVyU3VwcG9ydGVkKCkgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9y
bWF0TWFwcGluZygmbWFwLCBHTF9SR0IxMF9BMiwgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKCks
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgQWx3YXlz
U3VwcG9ydGVkKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT25seSgzLCAw
KSwgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCBWZXJzaW9uT25s
eSgzLCAwKSAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBp
bmcoJm1hcCwgR0xfUkdCMTBfQTJVSSwgICAgICAgIFZlcnNpb25PckV4dHMoMywgMywgIkdMX0FS
Ql90ZXh0dXJlX3JnYjEwX2EydWkiKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgIEFsd2F5c1N1cHBvcnRl
ZCgpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9ubHkoMywgMCksICAgICAg
ICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCgpLCAgQWx3YXlzU3VwcG9ydGVkKCkg
ICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAs
IEdMX1NSR0I4LCAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDIsIDEsICJHTF9FWFRfdGV4dHVy
ZV9zUkdCIiksICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCBWZXJzaW9uT3JFeHRzKDIsIDEsICJH
TF9FWFRfdGV4dHVyZV9zUkdCIiksICAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkgICAgICAgICAg
ICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9TUkdC
OF9BTFBIQTgsICAgICAgVmVyc2lvbk9yRXh0cygyLCAxLCAiR0xfRVhUX3RleHR1cmVfc1JHQiIp
LCAgICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgVmVyc2lvbk9yRXh0cygyLCAxLCAiR0xfRVhUX3Rl
eHR1cmVfc1JHQiIpLCAgICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFsd2F5c1N1cHBvcnRlZCgpLCBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRfc1JHQiIp
ICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUjhJLCAgICAgICAg
ICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgICAg
TmV2ZXJTdXBwb3J0ZWQoKSwgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3Jn
IiksICAgICAgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZl
clN1cHBvcnRlZCgpLCAgVmVyc2lvbk9ubHkoMywgMCkgICAgICAgICAgICAgICAgICAgICAgICAg
KTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1I4VUksICAgICAgICAgICAgICBW
ZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgICAgIE5ldmVyU3Vw
cG9ydGVkKCksICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAg
IFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0
ZWQoKSwgIFZlcnNpb25Pbmx5KDMsIDApICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAg
SW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SMTZJLCAgICAgICAgICAgICAgVmVyc2lvbk9y
RXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwgICAgICAgICBOZXZlclN1cHBvcnRlZCgp
LCAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwgICAgICBWZXJzaW9u
T25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCksICBW
ZXJzaW9uT25seSgzLCAwKSAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZv
cm1hdE1hcHBpbmcoJm1hcCwgR0xfUjE2VUksICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywg
MCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgIFZlcnNp
b25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgVmVyc2lvbk9ubHkoMywg
MCksICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCgpLCAgVmVyc2lvbk9u
bHkoMywgMCkgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBw
aW5nKCZtYXAsIEdMX1IzMkksICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9B
UkJfdGV4dHVyZV9yZyIpLCAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCksICBWZXJzaW9uT3JFeHRz
KDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgIFZlcnNpb25Pbmx5KDMsIDAp
ICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFw
LCBHTF9SMzJVSSwgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1
cmVfcmciKSwgICAgICAgICBOZXZlclN1cHBvcnRlZCgpLCAgVmVyc2lvbk9yRXh0cygzLCAwLCAi
R0xfQVJCX3RleHR1cmVfcmciKSwgICAgICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCksICBWZXJzaW9uT25seSgzLCAwKSAgICAgICAg
ICAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkc4
SSwgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiks
ICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90
ZXh0dXJlX3JnIiksICAgICAgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAgICAg
ICAgICBOZXZlclN1cHBvcnRlZCgpLCAgVmVyc2lvbk9ubHkoMywgMCkgICAgICAgICAgICAgICAg
ICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHOFVJLCAgICAg
ICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgICAg
IE5ldmVyU3VwcG9ydGVkKCksICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9y
ZyIpLCAgICAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2
ZXJTdXBwb3J0ZWQoKSwgIFZlcnNpb25Pbmx5KDMsIDApICAgICAgICAgICAgICAgICAgICAgICAg
ICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SRzE2SSwgICAgICAgICAgICAg
VmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwgICAgICAgICBOZXZlclN1
cHBvcnRlZCgpLCAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwgICAg
ICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9y
dGVkKCksICBWZXJzaW9uT25seSgzLCAwKSAgICAgICAgICAgICAgICAgICAgICAgICApOworICAg
IEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkcxNlVJLCAgICAgICAgICAgIFZlcnNpb25P
ckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQo
KSwgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgVmVyc2lv
bk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCgpLCAg
VmVyc2lvbk9ubHkoMywgMCkgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRG
b3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHMzJJLCAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMs
IDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCksICBWZXJz
aW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgIFZlcnNpb25Pbmx5KDMs
IDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgIFZlcnNpb25P
bmx5KDMsIDApICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFw
cGluZygmbWFwLCBHTF9SRzMyVUksICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xf
QVJCX3RleHR1cmVfcmciKSwgICAgICAgICBOZXZlclN1cHBvcnRlZCgpLCAgVmVyc2lvbk9yRXh0
cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwgICAgICBWZXJzaW9uT25seSgzLCAwKSwgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCksICBWZXJzaW9uT25seSgzLCAw
KSAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1h
cCwgR0xfUkdCOEksICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF90ZXh0
dXJlX2ludGVnZXIiKSwgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgIE5ldmVyU3VwcG9ydGVkKCksICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAg
ICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCgpLCAgTmV2ZXJTdXBwb3J0ZWQoKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JH
QjhVSSwgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRfdGV4dHVyZV9pbnRl
Z2VyIiksICAgIE5ldmVyU3VwcG9ydGVkKCksICBOZXZlclN1cHBvcnRlZCgpLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgIE5ldmVyU3VwcG9ydGVkKCkgICAgICAgICAgICAgICAg
ICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0IxNkksICAg
ICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfaW50ZWdlciIpLCAg
ICBOZXZlclN1cHBvcnRlZCgpLCAgTmV2ZXJTdXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgIE5l
dmVyU3VwcG9ydGVkKCksICBOZXZlclN1cHBvcnRlZCgpICAgICAgICAgICAgICAgICAgICAgICAg
ICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCMTZVSSwgICAgICAgICAg
IFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF90ZXh0dXJlX2ludGVnZXIiKSwgICAgTmV2ZXJT
dXBwb3J0ZWQoKSwgIE5ldmVyU3VwcG9ydGVkKCksICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBv
cnRlZCgpLCAgTmV2ZXJTdXBwb3J0ZWQoKSAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAg
ICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQjMySSwgICAgICAgICAgICBWZXJzaW9u
T3JFeHRzKDMsIDAsICJHTF9FWFRfdGV4dHVyZV9pbnRlZ2VyIiksICAgIE5ldmVyU3VwcG9ydGVk
KCksICBOZXZlclN1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNp
b25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwg
IE5ldmVyU3VwcG9ydGVkKCkgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0
Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0IzMlVJLCAgICAgICAgICAgVmVyc2lvbk9yRXh0cygz
LCAwLCAiR0xfRVhUX3RleHR1cmVfaW50ZWdlciIpLCAgICBOZXZlclN1cHBvcnRlZCgpLCAgTmV2
ZXJTdXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT25seSgz
LCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCksICBOZXZlclN1
cHBvcnRlZCgpICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1h
cHBpbmcoJm1hcCwgR0xfUkdCQThJLCAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdM
X0VYVF90ZXh0dXJlX2ludGVnZXIiKSwgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgIFZlcnNpb25PckV4
dHMoMywgMCwgIkdMX0VYVF90ZXh0dXJlX2ludGVnZXIiKSwgVmVyc2lvbk9ubHkoMywgMCksICAg
ICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCgpLCAgVmVyc2lvbk9ubHkoMywg
MCkgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZt
YXAsIEdMX1JHQkE4VUksICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRfdGV4
dHVyZV9pbnRlZ2VyIiksICAgIE5ldmVyU3VwcG9ydGVkKCksICBWZXJzaW9uT3JFeHRzKDMsIDAs
ICJHTF9FWFRfdGV4dHVyZV9pbnRlZ2VyIiksIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgIFZlcnNpb25Pbmx5KDMsIDApICAgICAg
ICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9S
R0JBMTZJLCAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfaW50
ZWdlciIpLCAgICBOZXZlclN1cHBvcnRlZCgpLCAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhU
X3RleHR1cmVfaW50ZWdlciIpLCBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5ldmVyU3VwcG9ydGVkKCksICBWZXJzaW9uT25seSgzLCAwKSAgICAgICAgICAgICAg
ICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCQTE2VUks
ICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF90ZXh0dXJlX2ludGVnZXIiKSwg
ICAgTmV2ZXJTdXBwb3J0ZWQoKSwgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF90ZXh0dXJl
X2ludGVnZXIiKSwgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAgICAgICAgICBO
ZXZlclN1cHBvcnRlZCgpLCAgVmVyc2lvbk9ubHkoMywgMCkgICAgICAgICAgICAgICAgICAgICAg
ICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQkEzMkksICAgICAgICAg
ICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRfdGV4dHVyZV9pbnRlZ2VyIiksICAgIE5ldmVy
U3VwcG9ydGVkKCksICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRfdGV4dHVyZV9pbnRlZ2Vy
IiksIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBw
b3J0ZWQoKSwgIFZlcnNpb25Pbmx5KDMsIDApICAgICAgICAgICAgICAgICAgICAgICAgICk7Cisg
ICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0JBMzJVSSwgICAgICAgICAgVmVyc2lv
bk9yRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfaW50ZWdlciIpLCAgICBOZXZlclN1cHBvcnRl
ZCgpLCAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfaW50ZWdlciIpLCBWZXJz
aW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCks
ICBWZXJzaW9uT25seSgzLCAwKSAgICAgICAgICAgICAgICAgICAgICAgICApOwogCiAgICAgLy8g
VW5zaXplZCBmb3JtYXRzCi0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9BTFBIQSwg
ICAgICAgICAgICAgTmV2ZXIoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBOZXZlcigpLCAgTmV2ZXIoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBOZXZlcigpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyKCks
ICBOZXZlcigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2Vy
dEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfTFVNSU5BTkNFLCAgICAgICAgIE5ldmVyKCksICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXIoKSwgIE5ldmVyKCksICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXIoKSwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOZXZlcigpLCAgTmV2ZXIoKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0xV
TUlOQU5DRV9BTFBIQSwgICBOZXZlcigpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5ldmVyKCksICBOZXZlcigpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5ldmVyKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2
ZXIoKSwgIE5ldmVyKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAg
SW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SRUQsICAgICAgICAgICAgICAgVmVyc2lvbk9y
RXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwgICAgICAgICBBbHdheXMoKSwgVmVyc2lv
bk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwgICAgICBWZXJzaW9uT3JFeHRzKDMs
IDAsICJHTF9FWFRfdGV4dHVyZV9yZyIpLCAgIEFsd2F5cygpLCBWZXJzaW9uT3JFeHRzKDMsIDAs
ICJHTF9BUkJfdGV4dHVyZV9yZyIpICApOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwg
R0xfUkcsICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJl
X3JnIiksICAgICAgICAgQWx3YXlzKCksIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0
dXJlX3JnIiksICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfcmciKSwg
ICBBbHdheXMoKSwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSAgKTsK
LSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQiwgICAgICAgICAgICAgICBBbHdh
eXMoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5cygpLCBB
bHdheXMoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5cygpLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzKCksIEFsd2F5cygpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygm
bWFwLCBHTF9SR0JBLCAgICAgICAgICAgICAgQWx3YXlzKCksICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBbHdheXMoKSwgQWx3YXlzKCksICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBbHdheXMoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFsd2F5cygpLCBBbHdheXMoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICApOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkVEX0lOVEVHRVIsICAgICAg
IFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgICAgTmV2ZXIo
KSwgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgVmVyc2lv
bk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlcigpLCAgVmVyc2lvbk9u
bHkoMywgMCkgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBw
aW5nKCZtYXAsIEdMX1JHX0lOVEVHRVIsICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9B
UkJfdGV4dHVyZV9yZyIpLCAgICAgICAgIE5ldmVyKCksICBWZXJzaW9uT3JFeHRzKDMsIDAsICJH
TF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgTmV2ZXIoKSwgIFZlcnNpb25Pbmx5KDMsIDApICAgICAgICAgICAgICAgICAg
ICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0JfSU5URUdFUiwg
ICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfaW50ZWdlciIpLCAgICBO
ZXZlcigpLCAgTmV2ZXIoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
ZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyKCksICBOZXZl
cigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEZvcm1h
dE1hcHBpbmcoJm1hcCwgR0xfUkdCQV9JTlRFR0VSLCAgICAgIFZlcnNpb25PckV4dHMoMywgMCwg
IkdMX0VYVF90ZXh0dXJlX2ludGVnZXIiKSwgICAgTmV2ZXIoKSwgIFZlcnNpb25PckV4dHMoMywg
MCwgIkdMX0VYVF90ZXh0dXJlX2ludGVnZXIiKSwgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAg
ICAgICAgICAgICAgICAgICBOZXZlcigpLCAgVmVyc2lvbk9ubHkoMywgMCkgICAgICAgICAgICAg
ICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1NSR0IsICAg
ICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDIsIDEsICJHTF9FWFRfdGV4dHVyZV9zUkdCIiksICAg
ICAgIEFsd2F5cygpLCBWZXJzaW9uT3JFeHRzKDIsIDEsICJHTF9FWFRfdGV4dHVyZV9zUkdCIiks
ICAgIEV4dHNPbmx5KCJHTF9FWFRfc1JHQiIpLCAgICAgICAgICAgICAgICAgICAgQWx3YXlzKCks
IE5ldmVyKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0
Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9TUkdCX0FMUEhBLCAgICAgICAgVmVyc2lvbk9yRXh0cygy
LCAxLCAiR0xfRVhUX3RleHR1cmVfc1JHQiIpLCAgICAgICBBbHdheXMoKSwgVmVyc2lvbk9yRXh0
cygyLCAxLCAiR0xfRVhUX3RleHR1cmVfc1JHQiIpLCAgICBFeHRzT25seSgiR0xfRVhUX3NSR0Ii
KSwgICAgICAgICAgICAgICAgICAgIEFsd2F5cygpLCBOZXZlcigpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQUxQ
SEEsICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCksICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgIE5ldmVyU3VwcG9ydGVkKCksICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICBOZXZlclN1cHBvcnRlZCgpLCAgTmV2ZXJTdXBwb3J0ZWQoKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0xVTUlOQU5DRSwg
ICAgICAgICBOZXZlclN1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5ldmVyU3VwcG9ydGVkKCksICBOZXZlclN1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2
ZXJTdXBwb3J0ZWQoKSwgIE5ldmVyU3VwcG9ydGVkKCkgICAgICAgICAgICAgICAgICAgICAgICAg
ICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9MVU1JTkFOQ0VfQUxQSEEsICAg
TmV2ZXJTdXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1
cHBvcnRlZCgpLCAgTmV2ZXJTdXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOZXZlclN1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9y
dGVkKCksICBOZXZlclN1cHBvcnRlZCgpICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAg
IEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkVELCAgICAgICAgICAgICAgIFZlcnNpb25P
ckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgICAgQWx3YXlzU3VwcG9ydGVk
KCksIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgVmVyc2lv
bk9yRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfcmciKSwgICBBbHdheXNTdXBwb3J0ZWQoKSwg
VmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSAgKTsKKyAgICBJbnNlcnRG
b3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHLCAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMs
IDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCBWZXJz
aW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgIFZlcnNpb25PckV4dHMo
MywgMCwgIkdMX0VYVF90ZXh0dXJlX3JnIiksICAgQWx3YXlzU3VwcG9ydGVkKCksIFZlcnNpb25P
ckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIikgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFw
cGluZygmbWFwLCBHTF9SR0IsICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKCksICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgQWx3YXlzU3VwcG9y
dGVkKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCBBbHdheXNTdXBwb3J0ZWQo
KSAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1h
cCwgR0xfUkdCQSwgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKCksIEFsd2F5c1N1cHBvcnRlZCgpLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKCksICAgICAgICAgICAg
ICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgQWx3YXlzU3VwcG9ydGVkKCkgICAgICAg
ICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JF
RF9JTlRFR0VSLCAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIp
LCAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCksICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJf
dGV4dHVyZV9yZyIpLCAgICAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgIFZlcnNpb25Pbmx5KDMsIDApICAgICAgICAgICAgICAg
ICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR19JTlRFR0VS
LCAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwgICAgICAg
ICBOZXZlclN1cHBvcnRlZCgpLCAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVf
cmciKSwgICAgICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgIE5l
dmVyU3VwcG9ydGVkKCksICBWZXJzaW9uT25seSgzLCAwKSAgICAgICAgICAgICAgICAgICAgICAg
ICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCX0lOVEVHRVIsICAgICAg
IFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF90ZXh0dXJlX2ludGVnZXIiKSwgICAgTmV2ZXJT
dXBwb3J0ZWQoKSwgIE5ldmVyU3VwcG9ydGVkKCksICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBv
cnRlZCgpLCAgTmV2ZXJTdXBwb3J0ZWQoKSAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAg
ICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQkFfSU5URUdFUiwgICAgICBWZXJzaW9u
T3JFeHRzKDMsIDAsICJHTF9FWFRfdGV4dHVyZV9pbnRlZ2VyIiksICAgIE5ldmVyU3VwcG9ydGVk
KCksICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRfdGV4dHVyZV9pbnRlZ2VyIiksIFZlcnNp
b25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwg
IFZlcnNpb25Pbmx5KDMsIDApICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0
Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9TUkdCLCAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygy
LCAxLCAiR0xfRVhUX3RleHR1cmVfc1JHQiIpLCAgICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgVmVy
c2lvbk9yRXh0cygyLCAxLCAiR0xfRVhUX3RleHR1cmVfc1JHQiIpLCAgICBFeHRzT25seSgiR0xf
RVhUX3NSR0IiKSwgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1
cHBvcnRlZCgpICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1h
cHBpbmcoJm1hcCwgR0xfU1JHQl9BTFBIQSwgICAgICAgIFZlcnNpb25PckV4dHMoMiwgMSwgIkdM
X0VYVF90ZXh0dXJlX3NSR0IiKSwgICAgICAgQWx3YXlzU3VwcG9ydGVkKCksIFZlcnNpb25PckV4
dHMoMiwgMSwgIkdMX0VYVF90ZXh0dXJlX3NSR0IiKSwgICAgRXh0c09ubHkoIkdMX0VYVF9zUkdC
IiksICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQo
KSAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKIAogICAgIC8vIEZyb20gR0xfRVhUX3RleHR1
cmVfZm9ybWF0X0JHUkE4ODg4Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9CR1JB
OF9FWFQsICAgICAgICAgVmVyc2lvbk9yRXh0cygxLCAyLCAiR0xfRVhUX2JncmEiKSwgICAgICAg
ICAgICAgICBBbHdheXMoKSwgVmVyc2lvbk9yRXh0cygxLCAyLCAiR0xfRVhUX2JncmEiKSwgICAg
ICAgICAgICBFeHRzT25seSgiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4IiksIEFsd2F5
cygpLCBOZXZlcigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIElu
c2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQkdSQV9FWFQsICAgICAgICAgIFZlcnNpb25PckV4
dHMoMSwgMiwgIkdMX0VYVF9iZ3JhIiksICAgICAgICAgICAgICAgQWx3YXlzKCksIFZlcnNpb25P
ckV4dHMoMSwgMiwgIkdMX0VYVF9iZ3JhIiksICAgICAgICAgICAgRXh0c09ubHkoIkdMX0VYVF90
ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIpLCBBbHdheXMoKSwgTmV2ZXIoKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdM
X0JHUkE4X0VYVCwgICAgICAgICBWZXJzaW9uT3JFeHRzKDEsIDIsICJHTF9FWFRfYmdyYSIpLCAg
ICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCBWZXJzaW9uT3JFeHRzKDEsIDIsICJHTF9F
WFRfYmdyYSIpLCAgICAgICAgICAgIEV4dHNPbmx5KCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdS
QTg4ODgiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkgICAgICAgICAgICAg
ICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9CR1JBX0VY
VCwgICAgICAgICAgVmVyc2lvbk9yRXh0cygxLCAyLCAiR0xfRVhUX2JncmEiKSwgICAgICAgICAg
ICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgVmVyc2lvbk9yRXh0cygxLCAyLCAiR0xfRVhUX2JncmEi
KSwgICAgICAgICAgICBFeHRzT25seSgiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4Iiks
IEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpICAgICAgICAgICAgICAgICAgICAg
ICAgICApOwogCiAgICAgLy8gRmxvYXRpbmcgcG9pbnQgZm9ybWF0cwotICAgIC8vICAgICAgICAg
ICAgICAgICAgICAgICB8IEZvcm1hdCAgICAgICAgICAgICAgfCBPcGVuR0wgdGV4dHVyZSBzdXBw
b3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBGaWx0ZXIgIHwgT3Bl
bkdMIHJlbmRlciBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBPcGVuR0wgRVMgdGV4dHVyZSBzdXBwb3J0ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZpbHRlciAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE9wZW5HTCBFUyByZW5kZXIg
c3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUjExRl9HMTFGX0IxMEYs
ICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF9wYWNrZWRfZmxvYXQiKSwgICAgICAgICAg
ICAgICAgICAgIEFsd2F5cygpLCBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRfcGFja2VkX2Zs
b2F0IEdMX0FSQl9jb2xvcl9idWZmZXJfZmxvYXQiKSwgICAgICAgICAgICAgICAgICAgIFZlcnNp
b25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQWx3YXlzKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRXh0c09ubHkoIkdMX0VYVF9jb2xvcl9idWZmZXJfZmxvYXQiKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5n
KCZtYXAsIEdMX1JHQjlfRTUsICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRf
dGV4dHVyZV9zaGFyZWRfZXhwb25lbnQiKSwgICAgICAgICBBbHdheXMoKSwgVmVyc2lvbk9yRXh0
cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfc2hhcmVkX2V4cG9uZW50IEdMX0FSQl9jb2xvcl9idWZm
ZXJfZmxvYXQiKSwgICAgICAgICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5cygpLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyKCkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7
Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SMTZGLCAgICAgICAgICAgICAgVmVy
c2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmcgQVJCX3RleHR1cmVfZmxvYXQiKSwg
ICAgQWx3YXlzKCksIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIEdMX0FS
Ql90ZXh0dXJlX2Zsb2F0IEdMX0FSQl9jb2xvcl9idWZmZXJfZmxvYXQiKSwgVmVyc2lvbk9yRXh0
cygzLCAwLCAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCBHTF9FWFRfdGV4dHVyZV9yZyIpLCBW
ZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpLCBW
ZXJzaW9uT3JFeHRzQW5kRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfcmciLCAiR0xfRVhUX2Nv
bG9yX2J1ZmZlcl9oYWxmX2Zsb2F0IikpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwg
R0xfUkcxNkYsICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJl
X3JnIEFSQl90ZXh0dXJlX2Zsb2F0IiksICAgIEFsd2F5cygpLCBWZXJzaW9uT3JFeHRzKDMsIDAs
ICJHTF9BUkJfdGV4dHVyZV9yZyBHTF9BUkJfdGV4dHVyZV9mbG9hdCBHTF9BUkJfY29sb3JfYnVm
ZmVyX2Zsb2F0IiksIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX09FU190ZXh0dXJlX2hhbGZfZmxv
YXQgR0xfRVhUX3RleHR1cmVfcmciKSwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfT0VTX3RleHR1
cmVfaGFsZl9mbG9hdF9saW5lYXIiKSwgVmVyc2lvbk9yRXh0c0FuZEV4dHMoMywgMCwgIkdMX0VY
VF90ZXh0dXJlX3JnIiwgIkdMX0VYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCIpKTsKLSAgICBJ
bnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQjE2RiwgICAgICAgICAgICBWZXJzaW9uT3JF
eHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9mbG9hdCIpLCAgICAgICAgICAgICAgICAgICBBbHdh
eXMoKSwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfZmxvYXQgR0xfQVJCX2Nv
bG9yX2J1ZmZlcl9mbG9hdCIpLCAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAs
ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IiksICAgICAgICAgICAgICAgICAgIFZlcnNpb25P
ckV4dHMoMywgMCwgIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIiksIEV4dHNPbmx5
KCJHTF9FWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0JB
MTZGLCAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfZmxvYXQi
KSwgICAgICAgICAgICAgICAgICAgQWx3YXlzKCksIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FS
Ql90ZXh0dXJlX2Zsb2F0IEdMX0FSQl9jb2xvcl9idWZmZXJfZmxvYXQiKSwgICAgICAgICAgICAg
ICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpLCAg
ICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9PRVNfdGV4dHVyZV9oYWxm
X2Zsb2F0X2xpbmVhciIpLCBFeHRzT25seSgiR0xfRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0
IikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEZv
cm1hdE1hcHBpbmcoJm1hcCwgR0xfUjMyRiwgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywg
MCwgIkdMX0FSQl90ZXh0dXJlX3JnIEdMX0FSQl90ZXh0dXJlX2Zsb2F0IiksIEFsd2F5cygpLCBW
ZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyBHTF9BUkJfdGV4dHVyZV9mbG9h
dCBHTF9BUkJfY29sb3JfYnVmZmVyX2Zsb2F0IiksIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX09F
U190ZXh0dXJlX2Zsb2F0IEdMX0VYVF90ZXh0dXJlX3JnIiksICAgICAgVmVyc2lvbk9yRXh0cygz
LCAwLCAiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIiksICAgICAgRXh0c09ubHkoIkdMX0VY
VF9jb2xvcl9idWZmZXJfZmxvYXQiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHMzJGLCAgICAg
ICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyBHTF9BUkJfdGV4
dHVyZV9mbG9hdCIpLCBBbHdheXMoKSwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1
cmVfcmcgR0xfQVJCX3RleHR1cmVfZmxvYXQgR0xfQVJCX2NvbG9yX2J1ZmZlcl9mbG9hdCIpLCBW
ZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9PRVNfdGV4dHVyZV9mbG9hdCBHTF9FWFRfdGV4dHVyZV9y
ZyIpLCAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVh
ciIpLCAgICAgIEV4dHNPbmx5KCJHTF9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0IikgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFw
cGluZygmbWFwLCBHTF9SR0IzMkYsICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xf
QVJCX3RleHR1cmVfZmxvYXQiKSwgICAgICAgICAgICAgICAgICAgQWx3YXlzKCksIFZlcnNpb25P
ckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX2Zsb2F0IEdMX0FSQl9jb2xvcl9idWZmZXJfZmxv
YXQiKSwgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfT0VTX3RleHR1
cmVfZmxvYXQiKSwgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJH
TF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKSwgICAgICBOZXZlcigpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICApOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCQTMyRiwgICAgICAgICAg
IFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX2Zsb2F0IiksICAgICAgICAgICAg
ICAgICAgIEFsd2F5cygpLCBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9mbG9h
dCBHTF9BUkJfY29sb3JfYnVmZmVyX2Zsb2F0IiksICAgICAgICAgICAgICAgICAgIFZlcnNpb25P
ckV4dHMoMywgMCwgIkdMX09FU190ZXh0dXJlX2Zsb2F0IiksICAgICAgICAgICAgICAgICAgICAg
ICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIiksICAg
ICAgRXh0c09ubHkoIkdMX0VYVF9jb2xvcl9idWZmZXJfZmxvYXQiKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAvLyAgICAgICAgICAgICAgICAgICAg
ICAgfCBGb3JtYXQgICAgICAgICAgICAgIHwgT3BlbkdMIHRleHR1cmUgc3VwcG9ydCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRmlsdGVyICAgICAgICAgICB8IE9wZW5H
TCByZW5kZXIgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgT3BlbkdMIEVTIHRleHR1cmUgc3VwcG9ydCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBGaWx0ZXIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBPcGVuR0wgRVMgcmVuZGVyIHN1
cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1IxMUZfRzExRl9CMTBGLCAg
ICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRfcGFja2VkX2Zsb2F0IiksICAgICAgICAgICAg
ICAgICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3Bh
Y2tlZF9mbG9hdCBHTF9BUkJfY29sb3JfYnVmZmVyX2Zsb2F0IiksICAgICAgICAgICAgICAgICAg
ICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEV4dHNPbmx5KCJHTF9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0IikgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0
TWFwcGluZygmbWFwLCBHTF9SR0I5X0U1LCAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAi
R0xfRVhUX3RleHR1cmVfc2hhcmVkX2V4cG9uZW50IiksICAgICAgICAgQWx3YXlzU3VwcG9ydGVk
KCksIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF90ZXh0dXJlX3NoYXJlZF9leHBvbmVudCBH
TF9BUkJfY29sb3JfYnVmZmVyX2Zsb2F0IiksICAgICAgICAgVmVyc2lvbk9ubHkoMywgMCksICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBw
b3J0ZWQoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBv
cnRlZCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUjE2Riwg
ICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIEFSQl90
ZXh0dXJlX2Zsb2F0IiksICAgIEFsd2F5c1N1cHBvcnRlZCgpLCBWZXJzaW9uT3JFeHRzKDMsIDAs
ICJHTF9BUkJfdGV4dHVyZV9yZyBHTF9BUkJfdGV4dHVyZV9mbG9hdCBHTF9BUkJfY29sb3JfYnVm
ZmVyX2Zsb2F0IiksIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX09FU190ZXh0dXJlX2hhbGZfZmxv
YXQgR0xfRVhUX3RleHR1cmVfcmciKSwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfT0VTX3RleHR1
cmVfaGFsZl9mbG9hdF9saW5lYXIiKSwgVmVyc2lvbk9yRXh0c0FuZEV4dHMoMywgMCwgIkdMX0VY
VF90ZXh0dXJlX3JnIiwgIkdMX0VYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCIpKTsKKyAgICBJ
bnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHMTZGLCAgICAgICAgICAgICBWZXJzaW9uT3JF
eHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyBBUkJfdGV4dHVyZV9mbG9hdCIpLCAgICBBbHdh
eXNTdXBwb3J0ZWQoKSwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmcgR0xf
QVJCX3RleHR1cmVfZmxvYXQgR0xfQVJCX2NvbG9yX2J1ZmZlcl9mbG9hdCIpLCBWZXJzaW9uT3JF
eHRzKDMsIDAsICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IEdMX0VYVF90ZXh0dXJlX3JnIiks
IFZlcnNpb25PckV4dHMoMywgMCwgIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIiks
IFZlcnNpb25PckV4dHNBbmRFeHRzKDMsIDAsICJHTF9FWFRfdGV4dHVyZV9yZyIsICJHTF9FWFRf
Y29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiKSk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFw
LCBHTF9SR0IxNkYsICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1
cmVfZmxvYXQiKSwgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKCksIFZlcnNpb25P
ckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX2Zsb2F0IEdMX0FSQl9jb2xvcl9idWZmZXJfZmxv
YXQiKSwgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfT0VTX3RleHR1
cmVfaGFsZl9mbG9hdCIpLCAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJH
TF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpLCBFeHRzT25seSgiR0xfRVhUX2NvbG9y
X2J1ZmZlcl9oYWxmX2Zsb2F0IikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCQTE2RiwgICAgICAgICAg
IFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX2Zsb2F0IiksICAgICAgICAgICAg
ICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4
dHVyZV9mbG9hdCBHTF9BUkJfY29sb3JfYnVmZmVyX2Zsb2F0IiksICAgICAgICAgICAgICAgICAg
IFZlcnNpb25PckV4dHMoMywgMCwgIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSwgICAgICAg
ICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9h
dF9saW5lYXIiKSwgRXh0c09ubHkoIkdMX0VYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCIpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRN
YXBwaW5nKCZtYXAsIEdMX1IzMkYsICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJH
TF9BUkJfdGV4dHVyZV9yZyBHTF9BUkJfdGV4dHVyZV9mbG9hdCIpLCBBbHdheXNTdXBwb3J0ZWQo
KSwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmcgR0xfQVJCX3RleHR1cmVf
ZmxvYXQgR0xfQVJCX2NvbG9yX2J1ZmZlcl9mbG9hdCIpLCBWZXJzaW9uT3JFeHRzKDMsIDAsICJH
TF9PRVNfdGV4dHVyZV9mbG9hdCBHTF9FWFRfdGV4dHVyZV9yZyIpLCAgICAgIFZlcnNpb25PckV4
dHMoMywgMCwgIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpLCAgICAgIEV4dHNPbmx5KCJH
TF9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0IikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SRzMyRiwg
ICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmcgR0xfQVJC
X3RleHR1cmVfZmxvYXQiKSwgQWx3YXlzU3VwcG9ydGVkKCksIFZlcnNpb25PckV4dHMoMywgMCwg
IkdMX0FSQl90ZXh0dXJlX3JnIEdMX0FSQl90ZXh0dXJlX2Zsb2F0IEdMX0FSQl9jb2xvcl9idWZm
ZXJfZmxvYXQiKSwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfT0VTX3RleHR1cmVfZmxvYXQgR0xf
RVhUX3RleHR1cmVfcmciKSwgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9PRVNfdGV4dHVy
ZV9mbG9hdF9saW5lYXIiKSwgICAgICBFeHRzT25seSgiR0xfRVhUX2NvbG9yX2J1ZmZlcl9mbG9h
dCIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgIElu
c2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCMzJGLCAgICAgICAgICAgIFZlcnNpb25PckV4
dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX2Zsb2F0IiksICAgICAgICAgICAgICAgICAgIEFsd2F5
c1N1cHBvcnRlZCgpLCBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9mbG9hdCBH
TF9BUkJfY29sb3JfYnVmZmVyX2Zsb2F0IiksICAgICAgICAgICAgICAgICAgIFZlcnNpb25PckV4
dHMoMywgMCwgIkdMX09FU190ZXh0dXJlX2Zsb2F0IiksICAgICAgICAgICAgICAgICAgICAgICAg
VmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIiksICAgICAg
TmV2ZXJTdXBwb3J0ZWQoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAs
IEdMX1JHQkEzMkYsICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVy
ZV9mbG9hdCIpLCAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgVmVyc2lvbk9y
RXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfZmxvYXQgR0xfQVJCX2NvbG9yX2J1ZmZlcl9mbG9h
dCIpLCAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9PRVNfdGV4dHVy
ZV9mbG9hdCIpLCAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdM
X09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpLCAgICAgIEV4dHNPbmx5KCJHTF9FWFRfY29sb3Jf
YnVmZmVyX2Zsb2F0IikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICk7CiAKICAgICAvLyBEZXB0aCBzdGVuY2lsIGZvcm1hdHMKICAgICAvLyAgICAgICAgICAgICAg
ICAgICAgICAgfCBGb3JtYXQgICAgICAgICAgICAgICAgICB8IE9wZW5HTCB0ZXh0dXJlIHN1cHBv
cnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBGaWx0ZXIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCBPcGVuR0wgcmVuZGVyIHN1cHBvcnQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgT3BlbkdMIEVTIHRleHR1cmUgc3VwcG9ydCAgICAgICAgICAgICAgICAg
IHwgRmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgT3BlbkdMIEVT
IHJlbmRlciBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKICAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0RFUFRIX0NPTVBPTkVOVDE2
LCAgICAgVmVyc2lvbk9ubHkoMSwgNSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZlcnNpb25PckV4dHMoMSwgNSwgIkdMX0FSQl9kZXB0aF90ZXh0dXJlIiksIFZlcnNpb25Pbmx5
KDEsIDUpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT25seSgyLCAw
KSwgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9PRVNf
ZGVwdGhfdGV4dHVyZSIpLCBWZXJzaW9uT25seSgyLCAwKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgSW5zZXJ0Rm9ybWF0TWFwcGlu
ZygmbWFwLCBHTF9ERVBUSF9DT01QT05FTlQyNCwgICAgIFZlcnNpb25Pbmx5KDEsIDUpLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDEsIDUsICJHTF9BUkJf
ZGVwdGhfdGV4dHVyZSIpLCBWZXJzaW9uT25seSgxLCA1KSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmVyc2lvbk9ubHkoMiwgMCksICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfT0VTX2RlcHRoX3RleHR1cmUiKSwgVmVyc2lvbk9ubHko
MiwgMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICApOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfREVQVEhfQ09NUE9ORU5UMzJf
T0VTLCBWZXJzaW9uT25seSgxLCA1KSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmVyc2lvbk9yRXh0cygxLCA1LCAiR0xfQVJCX2RlcHRoX3RleHR1cmUiKSwgVmVyc2lvbk9ubHko
MSwgNSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4dHNPbmx5KCJHTF9PRVNf
ZGVwdGhfdGV4dHVyZSIpLCAgICAgICAgICAgIEFsd2F5cygpLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEV4dHNPbmx5KCJHTF9PRVNfZGVwdGgzMiIpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5n
KCZtYXAsIEdMX0RFUFRIX0NPTVBPTkVOVDMyRiwgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xf
QVJCX2RlcHRoX2J1ZmZlcl9mbG9hdCIpLCAgIEFsd2F5cygpLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl9kZXB0aF9idWZmZXJf
ZmxvYXQiKSwgICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgICBW
ZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpLCBWZXJzaW9uT25seSgz
LCAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9TVEVOQ0lMX0lOREVYOCwgICAg
ICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpLCBO
ZXZlcigpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRz
KDMsIDAsICJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSwgVmVyc2lvbk9ubHkoMiwgMCks
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXIoKSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmVyc2lvbk9ubHkoMiwgMCkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmco
Jm1hcCwgR0xfREVQVEgyNF9TVEVOQ0lMOCwgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9B
UkJfZnJhbWVidWZmZXJfb2JqZWN0IiksICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX2Rl
cHRoX3RleHR1cmUiKSwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX2ZyYW1lYnVmZmVyX29i
amVjdCIpLCAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX09FU19kZXB0aF90ZXh0dXJlIiksIEFs
d2F5cygpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMo
MywgMCwgIkdMX09FU19kZXB0aF90ZXh0dXJlIEdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIp
KTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0RFUFRIMzJGX1NURU5DSUw4LCAg
ICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX2RlcHRoX2J1ZmZlcl9mbG9hdCIpLCAgIEFs
d2F5cygpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMo
MywgMCwgIkdMX0FSQl9kZXB0aF9idWZmZXJfZmxvYXQiKSwgICBWZXJzaW9uT25seSgzLCAwKSwg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXMoKSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWZXJzaW9uT25seSgzLCAwKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygm
bWFwLCBHTF9ERVBUSF9DT01QT05FTlQzMl9PRVMsIFZlcnNpb25Pbmx5KDEsIDUpLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDEsIDUsICJHTF9BUkJfZGVw
dGhfdGV4dHVyZSIpLCBWZXJzaW9uT25seSgxLCA1KSwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRXh0c09ubHkoIkdMX09FU19kZXB0aF90ZXh0dXJlIiksICAgICAgICAgICAgQWx3
YXlzU3VwcG9ydGVkKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgRXh0c09ubHkoIkdMX09F
U19kZXB0aDMyIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp
OworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfREVQVEhfQ09NUE9ORU5UMzJGLCAg
ICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfZGVwdGhfYnVmZmVyX2Zsb2F0IiksICAgQWx3
YXlzU3VwcG9ydGVkKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygz
LCAwLCAiR0xfQVJCX2RlcHRoX2J1ZmZlcl9mbG9hdCIpLCAgIFZlcnNpb25Pbmx5KDMsIDApLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX09FU19kZXB0
aF90ZXh0dXJlIiksIFZlcnNpb25Pbmx5KDMsIDApICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZt
YXAsIEdMX1NURU5DSUxfSU5ERVg4LCAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhU
X3BhY2tlZF9kZXB0aF9zdGVuY2lsIiksIE5ldmVyU3VwcG9ydGVkKCksICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3Rl
bmNpbCIpLCBWZXJzaW9uT25seSgyLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZl
clN1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT25seSgyLCAw
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7
CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9ERVBUSDI0X1NURU5DSUw4LCAgICAg
IFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl9mcmFtZWJ1ZmZlcl9vYmplY3QiKSwgICBWZXJz
aW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfZGVwdGhfdGV4dHVyZSIpLCBWZXJzaW9uT3JFeHRzKDMs
IDAsICJHTF9BUkJfZnJhbWVidWZmZXJfb2JqZWN0IiksICAgVmVyc2lvbk9yRXh0cygzLCAwLCAi
R0xfT0VTX2RlcHRoX3RleHR1cmUiKSwgQWx3YXlzU3VwcG9ydGVkKCksICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfT0VTX2RlcHRoX3RleHR1cmUgR0xf
T0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1h
cCwgR0xfREVQVEgzMkZfU1RFTkNJTDgsICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJf
ZGVwdGhfYnVmZmVyX2Zsb2F0IiksICAgQWx3YXlzU3VwcG9ydGVkKCksICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX2RlcHRoX2J1ZmZlcl9mbG9h
dCIpLCAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5
c1N1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25Pbmx5KDMsIDAp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsK
ICAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0RFUFRIX0NPTVBPTkVOVCwgICAgICAg
VmVyc2lvbk9ubHkoMSwgNSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNp
b25PckV4dHMoMSwgNSwgIkdMX0FSQl9kZXB0aF90ZXh0dXJlIiksIFZlcnNpb25Pbmx5KDEsIDUp
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT25seSgyLCAwKSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9PRVNfZGVwdGhf
dGV4dHVyZSIpLCBWZXJzaW9uT25seSgyLCAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFw
LCBHTF9ERVBUSF9TVEVOQ0lMLCAgICAgICAgIFZlcnNpb25Pbmx5KDEsIDUpLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDEsIDUsICJHTF9BUkJfZGVwdGhf
dGV4dHVyZSIpLCBWZXJzaW9uT25seSgxLCA1KSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmVyc2lvbk9ubHkoMiwgMCksICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lv
bk9yRXh0cygzLCAwLCAiR0xfT0VTX2RlcHRoX3RleHR1cmUiKSwgVmVyc2lvbk9ubHkoMiwgMCkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwog
CiAgICAgLy8gTHVtaW5hbmNlIGFscGhhIGZvcm1hdHMKLSAgICAvLyAgICAgICAgICAgICAgICAg
ICAgICAgfCBGb3JtYXQgICAgICAgICAgICAgICAgICB8IE9wZW5HTCB0ZXh0dXJlIHN1cHBvcnQg
ICAgICAgICAgICAgICAgICAgICAgfCBGaWx0ZXIgIHwgUmVuZGVyIHwgT3BlbkdMIEVTIHRleHR1
cmUgc3VwcG9ydCAgICAgICAgIHwgRmlsdGVyICB8IFJlbmRlciB8Ci0gICAgSW5zZXJ0Rm9ybWF0
TWFwcGluZygmbWFwLCBHTF9BTFBIQThfRVhULCAgICAgICAgICAgICBBbHdheXMoKSwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXMoKSwgTmV2ZXIoKSwgRXh0c09ubHko
IkdMX0VYVF90ZXh0dXJlX3N0b3JhZ2UiKSwgQWx3YXlzKCksIE5ldmVyKCkpOwotICAgIEluc2Vy
dEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfTFVNSU5BTkNFOF9FWFQsICAgICAgICAgQWx3YXlzKCks
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzKCksIE5ldmVyKCksIEV4
dHNPbmx5KCJHTF9FWFRfdGV4dHVyZV9zdG9yYWdlIiksIEFsd2F5cygpLCBOZXZlcigpKTsKLSAg
ICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0FMUEhBMzJGX0VYVCwgICAgICAgICAgIFZl
cnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX2Zsb2F0IiksIEFsd2F5cygpLCBOZXZl
cigpLCBFeHRzT25seSgiR0xfRVhUX3RleHR1cmVfc3RvcmFnZSIpLCBBbHdheXMoKSwgTmV2ZXIo
KSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9MVU1JTkFOQ0UzMkZfRVhULCAg
ICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9mbG9hdCIpLCBBbHdheXMo
KSwgTmV2ZXIoKSwgRXh0c09ubHkoIkdMX0VYVF90ZXh0dXJlX3N0b3JhZ2UiKSwgQWx3YXlzKCks
IE5ldmVyKCkpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQUxQSEExNkZfRVhU
LCAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfZmxvYXQiKSwg
QWx3YXlzKCksIE5ldmVyKCksIEV4dHNPbmx5KCJHTF9FWFRfdGV4dHVyZV9zdG9yYWdlIiksIEFs
d2F5cygpLCBOZXZlcigpKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0xVTUlO
QU5DRTE2Rl9FWFQsICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX2Zs
b2F0IiksIEFsd2F5cygpLCBOZXZlcigpLCBFeHRzT25seSgiR0xfRVhUX3RleHR1cmVfc3RvcmFn
ZSIpLCBBbHdheXMoKSwgTmV2ZXIoKSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBH
TF9MVU1JTkFOQ0U4X0FMUEhBOF9FWFQsICBBbHdheXMoKSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBbHdheXMoKSwgTmV2ZXIoKSwgRXh0c09ubHkoIkdMX0VYVF90ZXh0dXJl
X3N0b3JhZ2UiKSwgQWx3YXlzKCksIE5ldmVyKCkpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmco
Jm1hcCwgR0xfTFVNSU5BTkNFX0FMUEhBMzJGX0VYVCwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xf
QVJCX3RleHR1cmVfZmxvYXQiKSwgQWx3YXlzKCksIE5ldmVyKCksIEV4dHNPbmx5KCJHTF9FWFRf
dGV4dHVyZV9zdG9yYWdlIiksIEFsd2F5cygpLCBOZXZlcigpKTsKLSAgICBJbnNlcnRGb3JtYXRN
YXBwaW5nKCZtYXAsIEdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9FWFQsIFZlcnNpb25PckV4dHMoMywg
MCwgIkdMX0FSQl90ZXh0dXJlX2Zsb2F0IiksIEFsd2F5cygpLCBOZXZlcigpLCBFeHRzT25seSgi
R0xfRVhUX3RleHR1cmVfc3RvcmFnZSIpLCBBbHdheXMoKSwgTmV2ZXIoKSk7CisgICAgLy8gICAg
ICAgICAgICAgICAgICAgICAgIHwgRm9ybWF0ICAgICAgICAgICAgICAgICAgfCBPcGVuR0wgdGV4
dHVyZSBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgIHwgRmlsdGVyICAgICAgICAgICB8IFJl
bmRlciAgICAgICAgICB8IE9wZW5HTCBFUyB0ZXh0dXJlIHN1cHBvcnQgICAgICAgICB8IEZpbHRl
ciAgICAgICAgICAgfCBSZW5kZXIgICAgICAgICAgfAorICAgIEluc2VydEZvcm1hdE1hcHBpbmco
Jm1hcCwgR0xfQUxQSEE4X0VYVCwgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKCksICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCks
IEV4dHNPbmx5KCJHTF9FWFRfdGV4dHVyZV9zdG9yYWdlIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBO
ZXZlclN1cHBvcnRlZCgpKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0xVTUlO
QU5DRThfRVhULCAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xf
RVhUX3RleHR1cmVfc3RvcmFnZSIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQo
KSk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9BTFBIQTMyRl9FWFQsICAgICAg
ICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9mbG9hdCIpLCBBbHdheXNT
dXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0VYVF90ZXh0dXJlX3N0
b3JhZ2UiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOworICAgIEluc2Vy
dEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfTFVNSU5BTkNFMzJGX0VYVCwgICAgICAgVmVyc2lvbk9y
RXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfZmxvYXQiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5l
dmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9FWFRfdGV4dHVyZV9zdG9yYWdlIiksIEFsd2F5
c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5n
KCZtYXAsIEdMX0FMUEhBMTZGX0VYVCwgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdM
X0FSQl90ZXh0dXJlX2Zsb2F0IiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgp
LCBFeHRzT25seSgiR0xfRVhUX3RleHR1cmVfc3RvcmFnZSIpLCBBbHdheXNTdXBwb3J0ZWQoKSwg
TmV2ZXJTdXBwb3J0ZWQoKSk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9MVU1J
TkFOQ0UxNkZfRVhULCAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9m
bG9hdCIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdM
X0VYVF90ZXh0dXJlX3N0b3JhZ2UiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVk
KCkpOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfTFVNSU5BTkNFOF9BTFBIQThf
RVhULCAgQWx3YXlzU3VwcG9ydGVkKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlz
U3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9FWFRfdGV4dHVyZV9z
dG9yYWdlIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsKKyAgICBJbnNl
cnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0xVTUlOQU5DRV9BTFBIQTMyRl9FWFQsIFZlcnNpb25P
ckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX2Zsb2F0IiksIEFsd2F5c1N1cHBvcnRlZCgpLCBO
ZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfRVhUX3RleHR1cmVfc3RvcmFnZSIpLCBBbHdh
eXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGlu
ZygmbWFwLCBHTF9MVU1JTkFOQ0VfQUxQSEExNkZfRVhULCBWZXJzaW9uT3JFeHRzKDMsIDAsICJH
TF9BUkJfdGV4dHVyZV9mbG9hdCIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQo
KSwgRXh0c09ubHkoIkdMX0VYVF90ZXh0dXJlX3N0b3JhZ2UiKSwgQWx3YXlzU3VwcG9ydGVkKCks
IE5ldmVyU3VwcG9ydGVkKCkpOwogCiAgICAgLy8gQ29tcHJlc3NlZCBmb3JtYXRzLCBGcm9tIEVT
IDMuMC4xIHNwZWMsIHRhYmxlIDMuMTYKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdM
X0NPTVBSRVNTRURfUjExX0VBQywgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRz
KDQsIDMsICJHTF9BUkJfRVMzX2NvbXBhdGliaWxpdHkiKSwgQWx3YXlzKCksIE5ldmVyKCksIFZl
cnNpb25Pbmx5KDMsIDApLCBBbHdheXMoKSwgTmV2ZXIoKSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFw
cGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDLCAgICAgICAgICAgICAgICAg
VmVyc2lvbk9yRXh0cyg0LCAzLCAiR0xfQVJCX0VTM19jb21wYXRpYmlsaXR5IiksIEFsd2F5cygp
LCBOZXZlcigpLCBWZXJzaW9uT25seSgzLCAwKSwgQWx3YXlzKCksIE5ldmVyKCkpOwotICAgIElu
c2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9SRzExX0VBQywgICAgICAgICAg
ICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoNCwgMywgIkdMX0FSQl9FUzNfY29tcGF0aWJpbGl0
eSIpLCBBbHdheXMoKSwgTmV2ZXIoKSwgVmVyc2lvbk9ubHkoMywgMCksIEFsd2F5cygpLCBOZXZl
cigpKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfU0lHTkVE
X1JHMTFfRUFDLCAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDQsIDMsICJHTF9BUkJfRVMz
X2NvbXBhdGliaWxpdHkiKSwgQWx3YXlzKCksIE5ldmVyKCksIFZlcnNpb25Pbmx5KDMsIDApLCBB
bHdheXMoKSwgTmV2ZXIoKSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01Q
UkVTU0VEX1JHQjhfRVRDMiwgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cyg0LCAz
LCAiR0xfQVJCX0VTM19jb21wYXRpYmlsaXR5IiksIEFsd2F5cygpLCBOZXZlcigpLCBWZXJzaW9u
T25seSgzLCAwKSwgQWx3YXlzKCksIE5ldmVyKCkpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmco
Jm1hcCwgR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyLCAgICAgICAgICAgICAgICAgICAgIFZlcnNp
b25PckV4dHMoNCwgMywgIkdMX0FSQl9FUzNfY29tcGF0aWJpbGl0eSIpLCBBbHdheXMoKSwgTmV2
ZXIoKSwgVmVyc2lvbk9ubHkoMywgMCksIEFsd2F5cygpLCBOZXZlcigpKTsKLSAgICBJbnNlcnRG
b3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEEx
X0VUQzIsICBWZXJzaW9uT3JFeHRzKDQsIDMsICJHTF9BUkJfRVMzX2NvbXBhdGliaWxpdHkiKSwg
QWx3YXlzKCksIE5ldmVyKCksIFZlcnNpb25Pbmx5KDMsIDApLCBBbHdheXMoKSwgTmV2ZXIoKSk7
Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNI
VEhST1VHSF9BTFBIQTFfRVRDMiwgVmVyc2lvbk9yRXh0cyg0LCAzLCAiR0xfQVJCX0VTM19jb21w
YXRpYmlsaXR5IiksIEFsd2F5cygpLCBOZXZlcigpLCBWZXJzaW9uT25seSgzLCAwKSwgQWx3YXlz
KCksIE5ldmVyKCkpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NF
RF9SR0JBOF9FVEMyX0VBQywgICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoNCwgMywgIkdM
X0FSQl9FUzNfY29tcGF0aWJpbGl0eSIpLCBBbHdheXMoKSwgTmV2ZXIoKSwgVmVyc2lvbk9ubHko
MywgMCksIEFsd2F5cygpLCBOZXZlcigpKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAs
IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDLCAgICAgICAgICBWZXJzaW9uT3JF
eHRzKDQsIDMsICJHTF9BUkJfRVMzX2NvbXBhdGliaWxpdHkiKSwgQWx3YXlzKCksIE5ldmVyKCks
IFZlcnNpb25Pbmx5KDMsIDApLCBBbHdheXMoKSwgTmV2ZXIoKSk7CisgICAgSW5zZXJ0Rm9ybWF0
TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1IxMV9FQUMsICAgICAgICAgICAgICAgICAgICAg
ICAgVmVyc2lvbk9yRXh0cyg0LCAzLCAiR0xfQVJCX0VTM19jb21wYXRpYmlsaXR5IiksIEFsd2F5
c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBWZXJzaW9uT25seSgzLCAwKSwgQWx3YXlz
U3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOworICAgIEluc2VydEZvcm1hdE1hcHBpbmco
Jm1hcCwgR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQywgICAgICAgICAgICAgICAgIFZlcnNp
b25PckV4dHMoNCwgMywgIkdMX0FSQl9FUzNfY29tcGF0aWJpbGl0eSIpLCBBbHdheXNTdXBwb3J0
ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgVmVyc2lvbk9ubHkoMywgMCksIEFsd2F5c1N1cHBvcnRl
ZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdM
X0NPTVBSRVNTRURfUkcxMV9FQUMsICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRz
KDQsIDMsICJHTF9BUkJfRVMzX2NvbXBhdGliaWxpdHkiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5l
dmVyU3VwcG9ydGVkKCksIFZlcnNpb25Pbmx5KDMsIDApLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2
ZXJTdXBwb3J0ZWQoKSk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVT
U0VEX1NJR05FRF9SRzExX0VBQywgICAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cyg0LCAzLCAi
R0xfQVJCX0VTM19jb21wYXRpYmlsaXR5IiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBv
cnRlZCgpLCBWZXJzaW9uT25seSgzLCAwKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9y
dGVkKCkpOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9SR0I4
X0VUQzIsICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoNCwgMywgIkdMX0FSQl9F
UzNfY29tcGF0aWJpbGl0eSIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwg
VmVyc2lvbk9ubHkoMywgMCksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsK
KyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMiwg
ICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDQsIDMsICJHTF9BUkJfRVMzX2NvbXBh
dGliaWxpdHkiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIFZlcnNpb25P
bmx5KDMsIDApLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7CisgICAgSW5z
ZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FM
UEhBMV9FVEMyLCAgVmVyc2lvbk9yRXh0cyg0LCAzLCAiR0xfQVJCX0VTM19jb21wYXRpYmlsaXR5
IiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBWZXJzaW9uT25seSgzLCAw
KSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOworICAgIEluc2VydEZvcm1h
dE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VU
QzIsIFZlcnNpb25PckV4dHMoNCwgMywgIkdMX0FSQl9FUzNfY29tcGF0aWJpbGl0eSIpLCBBbHdh
eXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgVmVyc2lvbk9ubHkoMywgMCksIEFsd2F5
c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5n
KCZtYXAsIEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMsICAgICAgICAgICAgICAgICBWZXJz
aW9uT3JFeHRzKDQsIDMsICJHTF9BUkJfRVMzX2NvbXBhdGliaWxpdHkiKSwgQWx3YXlzU3VwcG9y
dGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIFZlcnNpb25Pbmx5KDMsIDApLCBBbHdheXNTdXBwb3J0
ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBH
TF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQywgICAgICAgICAgVmVyc2lvbk9yRXh0
cyg0LCAzLCAiR0xfQVJCX0VTM19jb21wYXRpYmlsaXR5IiksIEFsd2F5c1N1cHBvcnRlZCgpLCBO
ZXZlclN1cHBvcnRlZCgpLCBWZXJzaW9uT25seSgzLCAwKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5l
dmVyU3VwcG9ydGVkKCkpOwogCiAgICAgLy8gRnJvbSBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lv
bl9keHQxCi0gICAgLy8gICAgICAgICAgICAgICAgICAgICAgIHwgRm9ybWF0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgT3BlbkdMIHRleHR1cmUgc3VwcG9ydCAgICAgICAgICAgICAgICAg
ICAgICAgICB8IEZpbHRlciAgfCBSZW5kZXIgfCBPcGVuR0wgRVMgdGV4dHVyZSBzdXBwb3J0ICAg
ICAgICAgICAgICAgICAgICB8IEZpbHRlciAgfCBSZW5kZXIgfAotICAgIEluc2VydEZvcm1hdE1h
cHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCwgICAgRXh0c09ubHko
IkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMiKSwgICAgIEFsd2F5cygpLCBOZXZlcigp
LCBFeHRzT25seSgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIpLCAgIEFsd2F5cygp
LCBOZXZlcigpKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDFfRVhULCAgIEV4dHNPbmx5KCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lv
bl9zM3RjIiksICAgICBBbHdheXMoKSwgTmV2ZXIoKSwgRXh0c09ubHkoIkdMX0VYVF90ZXh0dXJl
X2NvbXByZXNzaW9uX2R4dDEiKSwgICBBbHdheXMoKSwgTmV2ZXIoKSk7CisgICAgLy8gICAgICAg
ICAgICAgICAgICAgICAgIHwgRm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgT3Bl
bkdMIHRleHR1cmUgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICB8IEZpbHRlciAgICAg
ICAgICAgfCBSZW5kZXIgICAgICAgICAgfCBPcGVuR0wgRVMgdGV4dHVyZSBzdXBwb3J0ICAgICAg
ICAgICAgICAgICAgICB8IEZpbHRlciAgICAgICAgICAgfCBSZW5kZXIgICAgICAgICAgIHwKKyAg
ICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9F
WFQsICAgIEV4dHNPbmx5KCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjIiksICAgICBB
bHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0VYVF90ZXh0
dXJlX2NvbXByZXNzaW9uX2R4dDEiKSwgICBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0
ZWQoKSk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQxX0VYVCwgICBFeHRzT25seSgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0
YyIpLCAgICAgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJH
TF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIiksICAgQWx3YXlzU3VwcG9ydGVkKCksIE5l
dmVyU3VwcG9ydGVkKCkpOwogCiAgICAgLy8gRnJvbSBHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNz
aW9uX2R4dDMKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdC
QV9TM1RDX0RYVDNfQU5HTEUsIEV4dHNPbmx5KCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9z
M3RjIiksICAgICBBbHdheXMoKSwgTmV2ZXIoKSwgRXh0c09ubHkoIkdMX0FOR0xFX3RleHR1cmVf
Y29tcHJlc3Npb25fZHh0MyIpLCBBbHdheXMoKSwgTmV2ZXIoKSk7CisgICAgSW5zZXJ0Rm9ybWF0
TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFLCBFeHRzT25s
eSgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YyIpLCAgICAgQWx3YXlzU3VwcG9ydGVk
KCksIE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNz
aW9uX2R4dDMiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOwogCiAgICAg
Ly8gRnJvbSBHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUKLSAgICBJbnNlcnRGb3Jt
YXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEUsIEV4dHNP
bmx5KCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjIiksICAgICBBbHdheXMoKSwgTmV2
ZXIoKSwgRXh0c09ubHkoIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSIpLCBBbHdh
eXMoKSwgTmV2ZXIoKSk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVT
U0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFLCBFeHRzT25seSgiR0xfRVhUX3RleHR1cmVfY29tcHJl
c3Npb25fczN0YyIpLCAgICAgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4
dHNPbmx5KCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiKSwgQWx3YXlzU3VwcG9y
dGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOwogCiAgICAgLy8gRnJvbSBHTF9FVEMxX1JHQjhfT0VT
Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9FVEMxX1JHQjhfT0VTLCAgICAgICAg
ICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDQsIDMsICJHTF9BUkJfRVMzX2NvbXBhdGliaWxpdHki
KSwgQWx3YXlzKCksIE5ldmVyKCksIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VUQzFfUkdCOF9P
RVMiKSwgICAgICAgQWx3YXlzKCksIE5ldmVyKCkpOworICAgIEluc2VydEZvcm1hdE1hcHBpbmco
Jm1hcCwgR0xfRVRDMV9SR0I4X09FUywgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cyg0
LCAzLCAiR0xfQVJCX0VTM19jb21wYXRpYmlsaXR5IiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZl
clN1cHBvcnRlZCgpLCBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FVEMxX1JHQjhfT0VTIiksICAg
ICAgIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsKIAogICAgIC8vIGNsYW5n
LWZvcm1hdCBvbgogCkBAIC00MzgsNiArNDM4LDMyIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAorc3RhdGljIEdMZW51bSBHZXROYXRpdmVSZWFkVHlwZShjb25zdCBGdW5jdGlvbnNHTCAqZnVu
Y3Rpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JrYXJvdW5k
c0dMICZ3b3JrYXJvdW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHR5cGUpCit7CisgICAgR0xlbnVtIHJlc3VsdCA9IHR5cGU7CisKKyAgICBpZiAoZnVuY3Rpb25z
LT5zdGFuZGFyZCA9PSBTVEFOREFSRF9HTF9ERVNLVE9QKQorICAgIHsKKyAgICAgICAgaWYgKHR5
cGUgPT0gR0xfSEFMRl9GTE9BVF9PRVMpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRoZSBl
bnVtcyBkaWZmZXIgZm9yIHRoZSBPRVMgaGFsZiBmbG9hdCBleHRlbnNpb25zIGFuZCBkZXNrdG9w
IEdMIHNwZWMuIFVwZGF0ZSBpdC4KKyAgICAgICAgICAgIHJlc3VsdCA9IEdMX0hBTEZfRkxPQVQ7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgR0xl
bnVtIEdldE5hdGl2ZVJlYWRGb3JtYXQoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JrYXJvdW5kc0dMICZ3b3Jr
YXJvdW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0
KQoreworICAgIEdMZW51bSByZXN1bHQgPSBmb3JtYXQ7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KwogVGV4SW1hZ2VGb3JtYXQgR2V0VGV4SW1hZ2VGb3JtYXQoY29uc3QgRnVuY3Rpb25zR0wgKmZ1
bmN0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmthcm91
bmRzR0wgJndvcmthcm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGludGVybmFsRm9ybWF0LApAQCAtNTEyLDYgKzUzOCwxNiBAQAogICAgICAgICBHZXROYXRp
dmVJbnRlcm5hbEZvcm1hdChmdW5jdGlvbnMsIHdvcmthcm91bmRzLCBpbnRlcm5hbEZvcm1hdCwg
aW50ZXJuYWxGb3JtYXQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CitSZWFkUGl4ZWxzRm9ybWF0
IEdldFJlYWRQaXhlbHNGb3JtYXQoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JrYXJvdW5kc0dMICZ3b3Jr
YXJvdW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9y
bWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlKQor
eworICAgIFJlYWRQaXhlbHNGb3JtYXQgcmVzdWx0OworICAgIHJlc3VsdC5mb3JtYXQgPSBHZXRO
YXRpdmVSZWFkRm9ybWF0KGZ1bmN0aW9ucywgd29ya2Fyb3VuZHMsIGZvcm1hdCk7CisgICAgcmVz
dWx0LnR5cGUgICA9IEdldE5hdGl2ZVJlYWRUeXBlKGZ1bmN0aW9ucywgd29ya2Fyb3VuZHMsIHR5
cGUpOworICAgIHJldHVybiByZXN1bHQ7CiB9Cit9CiAKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9mb3JtYXR1dGlsc2dsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L2Zvcm1hdHV0aWxzZ2wuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Zvcm1hdHV0aWxzZ2wuaAkod29ya2luZyBj
b3B5KQpAQCAtMTEyLDYgKzExMiwxNiBAQAogUmVuZGVyYnVmZmVyRm9ybWF0IEdldFJlbmRlcmJ1
ZmZlckZvcm1hdChjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JrYXJvdW5kc0dMICZ3b3JrYXJvdW5k
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVy
bmFsRm9ybWF0KTsKKworc3RydWN0IFJlYWRQaXhlbHNGb3JtYXQKK3sKKyAgICBHTGVudW0gZm9y
bWF0OworICAgIEdMZW51bSB0eXBlOworfTsKK1JlYWRQaXhlbHNGb3JtYXQgR2V0UmVhZFBpeGVs
c0Zvcm1hdChjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmthcm91bmRzR0wgJndvcmthcm91bmRzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUpOwogfQogCiB9CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZnVuY3Rp
b25zZ2xfdHlwZWRlZnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZnVuY3Rpb25zZ2xfdHlwZWRlZnMuaAkocmV2aXNpb24g
MjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL2Z1bmN0aW9uc2dsX3R5cGVkZWZzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyNyw2ICs2Mjcs
OSBAQAogdHlwZWRlZiB2b2lkIChJTlRFUk5BTF9HTF9BUElFTlRSWSAqUEZOR0xWRVJURVhBVFRS
SUJMRk9STUFUUFJPQykoR0x1aW50LCBHTGludCwgR0xlbnVtLCBHTHVpbnQpOwogdHlwZWRlZiB2
b2lkIChJTlRFUk5BTF9HTF9BUElFTlRSWSAqUEZOR0xWRVJURVhCSU5ESU5HRElWSVNPUlBST0Mp
KEdMdWludCwgR0x1aW50KTsKIAorLy8gTlZfZnJhbWVidWZmZXJfbWl4ZWRfc2FtcGxlcwordHlw
ZWRlZiB2b2lkIChJTlRFUk5BTF9HTF9BUElFTlRSWSAqUEZOR0xDT1ZFUkFHRU1PRFVMQVRJT05O
VlBST0MpKEdMZW51bSk7CisKIC8vIDQuNAogdHlwZWRlZiB2b2lkIChJTlRFUk5BTF9HTF9BUElF
TlRSWSAqUEZOR0xCSU5EQlVGRkVSU0JBU0VQUk9DKShHTGVudW0sIEdMdWludCwgR0xzaXplaSwg
Y29uc3QgR0x1aW50ICopOwogdHlwZWRlZiB2b2lkIChJTlRFUk5BTF9HTF9BUElFTlRSWSAqUEZO
R0xCSU5EQlVGRkVSU1JBTkdFUFJPQykoR0xlbnVtLCBHTHVpbnQsIEdMc2l6ZWksIGNvbnN0IEdM
dWludCAqLCBjb25zdCBHTGludHB0ciAqLCBjb25zdCBHTHNpemVpcHRyICopOwpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9EaXNwbGF5
R0xYLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvZ2x4L0Rpc3BsYXlHTFguY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L0Rpc3Bs
YXlHTFguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw2ICsxMCw4IEBACiAKICNpbmNsdWRlIDxF
R0wvZWdsZXh0Lmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNzdHJpbmc+Cisj
aW5jbHVkZSA8ZnN0cmVhbT4KIAogI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL0NvbmZpZy5oIgpAQCAtMTcsMTAgKzE5LDU5IEBACiAjaW5jbHVkZSAibGliQU5H
TEUvU3VyZmFjZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9QYnVmZmVy
U3VyZmFjZUdMWC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9XaW5kb3dT
dXJmYWNlR0xYLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyZXJHTC5o
IgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL3JlbmRlcmVyZ2xfdXRpbHMuaCIKICNp
bmNsdWRlICJ0aGlyZF9wYXJ0eS9saWJYTlZDdHJsL05WQ3RybC5oIgogI2luY2x1ZGUgInRoaXJk
X3BhcnR5L2xpYlhOVkN0cmwvTlZDdHJsTGliLmgiCiAKK25hbWVzcGFjZQoreworCisvLyBTY2Fu
IC9ldGMvYXRpL2FtZHBjc2RiLmRlZmF1bHQgZm9yICJSZWxlYXNlVmVyc2lvbiIuCisvLyBSZXR1
cm4gZW1wdHkgc3RyaW5nIG9uIGZhaWxpbmcuCitlZ2w6OkVycm9yIEdldEFNRERyaXZlclZlcnNp
b24oc3RkOjpzdHJpbmcgKnZlcnNpb24pCit7CisgICAgKnZlcnNpb24gPSAiIjsKKworICAgIGNv
bnN0IGNoYXIga0FNRERyaXZlckluZm9GaWxlTmFtZVtdID0gIi9ldGMvYXRpL2FtZHBjc2RiLmRl
ZmF1bHQiOworICAgIHN0ZDo6aWZzdHJlYW0gZmlsZShrQU1ERHJpdmVySW5mb0ZpbGVOYW1lKTsK
KworICAgIGlmICghZmlsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9T
VUNDRVNTKTsKKyAgICB9CisKKyAgICBzdGQ6OnN0cmluZyBsaW5lOworICAgIHdoaWxlIChzdGQ6
OmdldGxpbmUoZmlsZSwgbGluZSkpCisgICAgeworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciBr
UmVsZWFzZVZlcnNpb25bXSA9ICJSZWxlYXNlVmVyc2lvbj0iOworICAgICAgICBpZiAobGluZS5j
b21wYXJlKDAsIHN0ZDo6c3RybGVuKGtSZWxlYXNlVmVyc2lvbiksIGtSZWxlYXNlVmVyc2lvbikg
IT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAg
ICAgICBjb25zdCBzaXplX3QgYmVnaW4gPSBsaW5lLmZpbmRfZmlyc3Rfb2YoIjAxMjM0NTY3ODki
KTsKKyAgICAgICAgaWYgKGJlZ2luID09IHN0ZDo6c3RyaW5nOjpucG9zKQorICAgICAgICB7Cisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IHNpemVfdCBl
bmQgPSBsaW5lLmZpbmRfZmlyc3Rfbm90X29mKCIwMTIzNDU2Nzg5LiIsIGJlZ2luKTsKKyAgICAg
ICAgaWYgKGVuZCA9PSBzdGQ6OnN0cmluZzo6bnBvcykKKyAgICAgICAgeworICAgICAgICAgICAg
KnZlcnNpb24gPSBsaW5lLnN1YnN0cihiZWdpbik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQor
ICAgICAgICB7CisgICAgICAgICAgICAqdmVyc2lvbiA9IGxpbmUuc3Vic3RyKGJlZ2luLCBlbmQg
LSBiZWdpbik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NF
U1MpOworICAgIH0KKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKK30g
IC8vIGFub255bW91cyBuYW1lc3BhY2UKKwogbmFtZXNwYWNlIHJ4CiB7CiAKQEAgLTY3LDYgKzEx
OCw3IEBACiAgICAgICBtSGFzTXVsdGlzYW1wbGUoZmFsc2UpLAogICAgICAgbUhhc0FSQkNyZWF0
ZUNvbnRleHQoZmFsc2UpLAogICAgICAgbUhhc0FSQkNyZWF0ZUNvbnRleHRQcm9maWxlKGZhbHNl
KSwKKyAgICAgIG1IYXNBUkJDcmVhdGVDb250ZXh0Um9idXN0bmVzcyhmYWxzZSksCiAgICAgICBt
SGFzRVhUQ3JlYXRlQ29udGV4dEVTMlByb2ZpbGUoZmFsc2UpLAogICAgICAgbVN3YXBDb250cm9s
KFN3YXBDb250cm9sOjpBYnNlbnQpLAogICAgICAgbU1pblN3YXBJbnRlcnZhbCgwKSwKQEAgLTEw
OSw4ICsxNjEsMTIgQEAKICAgICBtSGFzTXVsdGlzYW1wbGUgICAgICA9IG1HTFgubWlub3JWZXJz
aW9uID4gMyB8fCBtR0xYLmhhc0V4dGVuc2lvbigiR0xYX0FSQl9tdWx0aXNhbXBsZSIpOwogICAg
IG1IYXNBUkJDcmVhdGVDb250ZXh0ID0gbUdMWC5oYXNFeHRlbnNpb24oIkdMWF9BUkJfY3JlYXRl
X2NvbnRleHQiKTsKICAgICBtSGFzQVJCQ3JlYXRlQ29udGV4dFByb2ZpbGUgICAgPSBtR0xYLmhh
c0V4dGVuc2lvbigiR0xYX0FSQl9jcmVhdGVfY29udGV4dF9wcm9maWxlIik7CisgICAgbUhhc0FS
QkNyZWF0ZUNvbnRleHRSb2J1c3RuZXNzID0gbUdMWC5oYXNFeHRlbnNpb24oIkdMWF9BUkJfY3Jl
YXRlX2NvbnRleHRfcm9idXN0bmVzcyIpOwogICAgIG1IYXNFWFRDcmVhdGVDb250ZXh0RVMyUHJv
ZmlsZSA9IG1HTFguaGFzRXh0ZW5zaW9uKCJHTFhfRVhUX2NyZWF0ZV9jb250ZXh0X2VzMl9wcm9m
aWxlIik7CiAKKyAgICBzdGQ6OnN0cmluZyBjbGllbnRWZW5kb3IgPSBtR0xYLmdldENsaWVudFN0
cmluZyhHTFhfVkVORE9SKTsKKyAgICBtSXNNZXNhICAgICAgICAgICAgICAgICAgPSBjbGllbnRW
ZW5kb3IuZmluZCgiTWVzYSIpICE9IHN0ZDo6c3RyaW5nOjpucG9zOworCiAgICAgLy8gQ2hvb3Nl
IHRoZSBzd2FwX2NvbnRyb2wgZXh0ZW5zaW9uIHRvIHVzZSwgaWYgYW55LgogICAgIC8vIFRoZSBF
WFQgdmVyc2lvbiBpcyBiZXR0ZXIgYXMgaXQgYWxsb3dzIGdsWFN3YXBJbnRlcnZhbCB0byBiZSBj
YWxsZWQgcGVyCiAgICAgLy8gd2luZG93LCB3aGlsZSB3ZSdsbCBwb3RlbnRpYWxseSBuZWVkIHRv
IGNoYW5nZSB0aGUgc3dhcCBpbnRlcnZhbCBvbiBlYWNoCkBAIC0zMDEsMTMgKzM1Nyw2IEBACiAK
ICAgICBzeW5jWENvbW1hbmRzKCk7CiAKLSAgICBzdGQ6OnN0cmluZyByZW5kZXJlclN0cmluZyA9
Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG1GdW5jdGlvbnNHTC0+Z2V0
U3RyaW5nKEdMX1JFTkRFUkVSKSk7Ci0gICAgbUlzTWVzYSA9IHJlbmRlcmVyU3RyaW5nLmZpbmQo
Ik1lc2EiKSAhPSBzdGQ6OnN0cmluZzo6bnBvczsKLQotICAgIHN0ZDo6c3RyaW5nIHZlcnNpb247
Ci0gICAgZ2V0RHJpdmVyVmVyc2lvbigmdmVyc2lvbik7Ci0KICAgICByZXR1cm4gRGlzcGxheUdM
Ojppbml0aWFsaXplKGRpc3BsYXkpOwogfQogCkBAIC0zMzIsNyArMzgxLDggQEAKICAgICBTYWZl
RGVsZXRlKG1GdW5jdGlvbnNHTCk7CiB9CiAKLVN1cmZhY2VJbXBsICpEaXNwbGF5R0xYOjpjcmVh
dGVXaW5kb3dTdXJmYWNlKGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAorU3VyZmFj
ZUltcGwgKkRpc3BsYXlHTFg6OmNyZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNl
U3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0
cmlidXRlTWFwICZhdHRyaWJzKQogewpAQCAtMzM5LDExICszODksMTIgQEAKICAgICBBU1NFUlQo
Y29uZmlnSWRUb0dMWENvbmZpZy5jb3VudChjb25maWd1cmF0aW9uLT5jb25maWdJRCkgPiAwKTsK
ICAgICBnbHg6OkZCQ29uZmlnIGZiQ29uZmlnID0gY29uZmlnSWRUb0dMWENvbmZpZ1tjb25maWd1
cmF0aW9uLT5jb25maWdJRF07CiAKLSAgICByZXR1cm4gbmV3IFdpbmRvd1N1cmZhY2VHTFgobUdM
WCwgdGhpcywgdGhpcy0+Z2V0UmVuZGVyZXIoKSwgd2luZG93LCBtR0xYLmdldERpc3BsYXkoKSwK
KyAgICByZXR1cm4gbmV3IFdpbmRvd1N1cmZhY2VHTFgoc3RhdGUsIG1HTFgsIHRoaXMsIGdldFJl
bmRlcmVyKCksIHdpbmRvdywgbUdMWC5nZXREaXNwbGF5KCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1Db250ZXh0LCBmYkNvbmZpZyk7CiB9CiAKLVN1cmZhY2VJbXBsICpEaXNw
bGF5R0xYOjpjcmVhdGVQYnVmZmVyU3VyZmFjZShjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJh
dGlvbiwKK1N1cmZhY2VJbXBsICpEaXNwbGF5R0xYOjpjcmVhdGVQYnVmZmVyU3VyZmFjZShjb25z
dCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRy
aWJ1dGVNYXAgJmF0dHJpYnMpCiB7CiAgICAgQVNTRVJUKGNvbmZpZ0lkVG9HTFhDb25maWcuY291
bnQoY29uZmlndXJhdGlvbi0+Y29uZmlnSUQpID4gMCk7CkBAIC0zNTMsMTEgKzQwNCwxMiBAQAog
ICAgIEVHTGludCBoZWlnaHQgPSBzdGF0aWNfY2FzdDxFR0xpbnQ+KGF0dHJpYnMuZ2V0KEVHTF9I
RUlHSFQsIDApKTsKICAgICBib29sIGxhcmdlc3QgPSAoYXR0cmlicy5nZXQoRUdMX0xBUkdFU1Rf
UEJVRkZFUiwgRUdMX0ZBTFNFKSA9PSBFR0xfVFJVRSk7CiAKLSAgICByZXR1cm4gbmV3IFBidWZm
ZXJTdXJmYWNlR0xYKHRoaXMtPmdldFJlbmRlcmVyKCksIHdpZHRoLCBoZWlnaHQsIGxhcmdlc3Qs
IG1HTFgsIG1Db250ZXh0LAorICAgIHJldHVybiBuZXcgUGJ1ZmZlclN1cmZhY2VHTFgoc3RhdGUs
IGdldFJlbmRlcmVyKCksIHdpZHRoLCBoZWlnaHQsIGxhcmdlc3QsIG1HTFgsIG1Db250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmJDb25maWcpOwogfQogCi1TdXJmYWNl
SW1wbCogRGlzcGxheUdMWDo6Y3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoY29uc3QgZWds
OjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCitTdXJmYWNlSW1wbCAqRGlzcGxheUdMWDo6Y3JlYXRl
UGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBzaGFyZUhhbmRs
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKIHsKQEAgLTM2NSw3ICs0MTcsOCBA
QAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1TdXJmYWNlSW1wbCAqRGlzcGxheUdMWDo6Y3Jl
YXRlUGl4bWFwU3VyZmFjZShjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKK1N1cmZh
Y2VJbXBsICpEaXNwbGF5R0xYOjpjcmVhdGVQaXhtYXBTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFj
ZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTmF0aXZlUGl4bWFwVHlwZSBuYXRpdmVQaXhtYXAs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6
OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKIHsKQEAgLTQxOCw3NCArNDcxLDgyIEBACiAKICAgICAv
LyBJdCBpcyBjb21tb25seSBhc3N1bWVkIHRoYXQgZ2xYQ3JlYXRlQ29udGV4dEF0dHJpYiB3aWxs
IGNyZWF0ZSBhIGNvbnRleHQKICAgICAvLyBvZiB0aGUgaGlnaGVzdCB2ZXJzaW9uIHBvc3NpYmxl
IGJ1dCBpdCBpcyBub3Qgc3BlY2lmaWVkIGluIHRoZSBzcGVjIGFuZAotICAgIC8vIGlzIG5vdCB0
cnVlIG9uIHRoZSBNZXNhIGRyaXZlcnMuIEluc3RlYWQgd2UgdHJ5IHRvIGNyZWF0ZSBhIGNvbnRl
eHQgcGVyCi0gICAgLy8gR0wgdmVyc2lvbiB1bnRpbCB3ZSBzdWNjZWVkLCBzdGFydGluZyBmcm9t
IG5ld2VyIHZlcnNpb24uIFdoZW4gdGhlIGRlZmF1bHQKLSAgICAvLyBwbGF0Zm9ybSBpcyBzZWxl
Y3RlZCwgaWYgbm8gZGVza3RvcCBjb250ZXh0IGNhbiBiZSBjcmVhdGVkLCB3ZSBmYWxsYmFjayB0
bwotICAgIC8vIGFuIEVTIGNvbnRleHQuCisgICAgLy8gaXMgbm90IHRydWUgb24gdGhlIE1lc2Eg
ZHJpdmVycy4gT24gTWVzYSwgSW5zdGVhZCB3ZSB0cnkgdG8gY3JlYXRlIGEKKyAgICAvLyBjb250
ZXh0IHBlciBHTCB2ZXJzaW9uIHVudGlsIHdlIHN1Y2NlZWQsIHN0YXJ0aW5nIGZyb20gbmV3ZXIg
dmVyc2lvbi4KKyAgICAvLyBPbiBib3RoIE1lc2EgYW5kIG90aGVyIGRyaXZlcnMgd2UgdHJ5IHRv
IGNyZWF0ZSBhIGRlc2t0b3AgY29udGV4dCBhbmQgZmFsbAorICAgIC8vIGJhY2sgdG8gRVMgY29u
dGV4dC4KKyAgICAvLyBUaGUgY29kZSBjb3VsZCBiZSBzaW1wbGVyIGlmIHRoZSBNZXNhIGNvZGUg
cGF0aCB3YXMgdXNlZCBmb3IgYWxsIGRyaXZlcnMsCisgICAgLy8gaG93ZXZlciB0aGUgY29zdCBv
ZiBmYWlsaW5nIGEgY29udGV4dCBjcmVhdGlvbiBjYW4gYmUgaGlnaCAoMyBtaWxsaXNlY29uZHMK
KyAgICAvLyBmb3IgdGhlIE5WSURJQSBkcml2ZXIpLiBUaGUgZ29vZCB0aGluZyBpcyB0aGF0IGZh
aWxlZCBjb250ZXh0IGNyZWF0aW9uIG9ubHkKKyAgICAvLyB0YWtlcyAwLjEgbWlsbGlzZWNvbmRz
IG9uIE1lc2EuCisKKyAgICBzdHJ1Y3QgQ29udGV4dENyZWF0aW9uSW5mbworICAgIHsKKyAgICAg
ICAgRUdMaW50IGRpc3BsYXlUeXBlOworICAgICAgICBpbnQgcHJvZmlsZUZsYWc7CisgICAgICAg
IE9wdGlvbmFsPGdsOjpWZXJzaW9uPiB2ZXJzaW9uOworICAgIH07CisKICAgICAvLyBjbGFuZy1m
b3JtYXQgb2ZmCi0gICAgY29uc3QgZ2w6OlZlcnNpb24gZGVza3RvcFZlcnNpb25zRnJvbTNfMltd
ID0gewotICAgICAgICBnbDo6VmVyc2lvbig0LCA1KSwKLSAgICAgICAgZ2w6OlZlcnNpb24oNCwg
NCksCi0gICAgICAgIGdsOjpWZXJzaW9uKDQsIDMpLAotICAgICAgICBnbDo6VmVyc2lvbig0LCAy
KSwKLSAgICAgICAgZ2w6OlZlcnNpb24oNCwgMSksCi0gICAgICAgIGdsOjpWZXJzaW9uKDQsIDAp
LAotICAgICAgICBnbDo6VmVyc2lvbigzLCAzKSwKLSAgICAgICAgZ2w6OlZlcnNpb24oMywgMiks
CisgICAgLy8gRm9yIHJlZ3VsYXIgZHJpdmVycyB3ZSB0cnkgdG8gY3JlYXRlIGEgY29yZSwgY29t
cGF0aWJpbGl0eSwgdGhlbiBFUyBjb250ZXh0LgorICAgIC8vIFdpdGhvdXQgcmVxdWlyaW5nIGFu
eSBzcGVjaWZpYyB2ZXJzaW9uICh0aGUgT3B0aW9uYWwgdmVyc2lvbiBpcyB1bmRlZmluZWQpLgor
ICAgIGNvbnN0IENvbnRleHRDcmVhdGlvbkluZm8gY29udGV4dHNUb1RyeVtdID0geworICAgICAg
ICB7IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSwgR0xYX0NPTlRFWFRfQ09S
RV9QUk9GSUxFX0JJVF9BUkIsIHt9IH0sCisgICAgICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xFX1RZ
UEVfT1BFTkdMX0FOR0xFLCAwLCB7fSB9LAorICAgICAgICB7IEVHTF9QTEFURk9STV9BTkdMRV9U
WVBFX09QRU5HTEVTX0FOR0xFLCBHTFhfQ09OVEVYVF9FUzJfUFJPRklMRV9CSVRfRVhULCB7fSB9
LAogICAgIH07Ci0gICAgY29uc3QgZ2w6OlZlcnNpb24gZGVza3RvcFZlcnNpb25zUHJlM18yW10g
PSB7Ci0gICAgICAgIGdsOjpWZXJzaW9uKDMsIDEpLAotICAgICAgICBnbDo6VmVyc2lvbigzLCAw
KSwKLSAgICAgICAgZ2w6OlZlcnNpb24oMiwgMCksCi0gICAgICAgIGdsOjpWZXJzaW9uKDEsIDUp
LAotICAgICAgICBnbDo6VmVyc2lvbigxLCA0KSwKLSAgICAgICAgZ2w6OlZlcnNpb24oMSwgMyks
Ci0gICAgICAgIGdsOjpWZXJzaW9uKDEsIDIpLAotICAgICAgICBnbDo6VmVyc2lvbigxLCAxKSwK
LSAgICAgICAgZ2w6OlZlcnNpb24oMSwgMCksCisKKyAgICAvLyBPbiBNZXNhIHdlIHRyeSB0byBj
cmVhdGUgYSBjb3JlIGNvbnRleHQsIGV4Y2VwdCBmb3IgdmVyc2lvbnMgYmVsb3cgMy4yCisgICAg
Ly8gd2hlcmUgaXQgaXMgbm90IGFwcGxpY2FibGUuIChhbmQgZmFsbGJhY2sgdG8gRVMgYXMgd2Vs
bCkKKyAgICBjb25zdCBDb250ZXh0Q3JlYXRpb25JbmZvIG1lc2FDb250ZXh0c1RvVHJ5W10gPSB7
CisgICAgICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFLCBHTFhfQ09O
VEVYVF9DT1JFX1BST0ZJTEVfQklUX0FSQiwgeyBnbDo6VmVyc2lvbig0LCA1KSB9IH0sCisgICAg
ICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFLCBHTFhfQ09OVEVYVF9D
T1JFX1BST0ZJTEVfQklUX0FSQiwgeyBnbDo6VmVyc2lvbig0LCA0KSB9IH0sCisgICAgICAgIHsg
RUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFLCBHTFhfQ09OVEVYVF9DT1JFX1BS
T0ZJTEVfQklUX0FSQiwgeyBnbDo6VmVyc2lvbig0LCAzKSB9IH0sCisgICAgICAgIHsgRUdMX1BM
QVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFLCBHTFhfQ09OVEVYVF9DT1JFX1BST0ZJTEVf
QklUX0FSQiwgeyBnbDo6VmVyc2lvbig0LCAyKSB9IH0sCisgICAgICAgIHsgRUdMX1BMQVRGT1JN
X0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFLCBHTFhfQ09OVEVYVF9DT1JFX1BST0ZJTEVfQklUX0FS
QiwgeyBnbDo6VmVyc2lvbig0LCAxKSB9IH0sCisgICAgICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xF
X1RZUEVfT1BFTkdMX0FOR0xFLCBHTFhfQ09OVEVYVF9DT1JFX1BST0ZJTEVfQklUX0FSQiwgeyBn
bDo6VmVyc2lvbig0LCAwKSB9IH0sCisgICAgICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVf
T1BFTkdMX0FOR0xFLCBHTFhfQ09OVEVYVF9DT1JFX1BST0ZJTEVfQklUX0FSQiwgeyBnbDo6VmVy
c2lvbigzLCAzKSB9IH0sCisgICAgICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdM
X0FOR0xFLCBHTFhfQ09OVEVYVF9DT1JFX1BST0ZJTEVfQklUX0FSQiwgeyBnbDo6VmVyc2lvbigz
LCAyKSB9IH0sCisgICAgICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xF
LCAwLCB7IGdsOjpWZXJzaW9uKDMsIDEpIH0gfSwKKyAgICAgICAgeyBFR0xfUExBVEZPUk1fQU5H
TEVfVFlQRV9PUEVOR0xfQU5HTEUsIDAsIHsgZ2w6OlZlcnNpb24oMywgMCkgfSB9LAorICAgICAg
ICB7IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSwgMCwgeyBnbDo6VmVyc2lv
bigyLCAwKSB9IH0sCisgICAgICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FO
R0xFLCAwLCB7IGdsOjpWZXJzaW9uKDEsIDUpIH0gfSwKKyAgICAgICAgeyBFR0xfUExBVEZPUk1f
QU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUsIDAsIHsgZ2w6OlZlcnNpb24oMSwgNCkgfSB9LAorICAg
ICAgICB7IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSwgMCwgeyBnbDo6VmVy
c2lvbigxLCAzKSB9IH0sCisgICAgICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdM
X0FOR0xFLCAwLCB7IGdsOjpWZXJzaW9uKDEsIDIpIH0gfSwKKyAgICAgICAgeyBFR0xfUExBVEZP
Uk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUsIDAsIHsgZ2w6OlZlcnNpb24oMSwgMSkgfSB9LAor
ICAgICAgICB7IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSwgMCwgeyBnbDo6
VmVyc2lvbigxLCAwKSB9IH0sCisgICAgICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BF
TkdMRVNfQU5HTEUsIEdMWF9DT05URVhUX0VTMl9QUk9GSUxFX0JJVF9FWFQsIHsgZ2w6OlZlcnNp
b24oMywgMikgfSB9LAorICAgICAgICB7IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTEVT
X0FOR0xFLCBHTFhfQ09OVEVYVF9FUzJfUFJPRklMRV9CSVRfRVhULCB7IGdsOjpWZXJzaW9uKDMs
IDEpIH0gfSwKKyAgICAgICAgeyBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xFU19BTkdM
RSwgR0xYX0NPTlRFWFRfRVMyX1BST0ZJTEVfQklUX0VYVCwgeyBnbDo6VmVyc2lvbigzLCAwKSB9
IH0sCisgICAgICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEUsIEdM
WF9DT05URVhUX0VTMl9QUk9GSUxFX0JJVF9FWFQsIHsgZ2w6OlZlcnNpb24oMiwgMCkgfSB9LAog
ICAgIH07Ci0gICAgY29uc3QgZ2w6OlZlcnNpb24gZXNWZXJzaW9uc0Zyb20yXzBbXSA9IHsKLSAg
ICAgICAgZ2w6OlZlcnNpb24oMywgMiksCi0gICAgICAgIGdsOjpWZXJzaW9uKDMsIDEpLAotICAg
ICAgICBnbDo6VmVyc2lvbigzLCAwKSwKLSAgICAgICAgZ2w6OlZlcnNpb24oMiwgMCksCi0gICAg
fTsKICAgICAvLyBjbGFuZy1mb3JtYXQgb24KIAorICAgIGNvbnN0IENvbnRleHRDcmVhdGlvbklu
Zm8gKnRvVHJ5ID0gY29udGV4dHNUb1RyeTsKKyAgICBzaXplX3QgdG9UcnlMZW5ndGggPSBBcnJh
eVNpemUoY29udGV4dHNUb1RyeSk7CisgICAgaWYgKG1Jc01lc2EpCisgICAgeworICAgICAgICB0
b1RyeSAgICAgICA9IG1lc2FDb250ZXh0c1RvVHJ5OworICAgICAgICB0b1RyeUxlbmd0aCA9IEFy
cmF5U2l6ZShtZXNhQ29udGV4dHNUb1RyeSk7CisgICAgfQorCiAgICAgLy8gTk9URTogYmVsb3cg
d2UgcmV0dXJuIGFzIHNvb24gYXMgd2UncmUgYWJsZSB0byBjcmVhdGUgYSBjb250ZXh0IHNvIHRo
ZQogICAgIC8vICJlcnJvciIgdmFyaWFibGUgaXMgRUdMX1NVQ0NFU1Mgd2hlbiByZXR1cm5lZCBj
b250cmFyeSB0byB0aGUgY29tbW9uIGlkaW9tCiAgICAgLy8gb2YgcmV0dXJuaW5nICJlcnJvciIg
d2hlbiB0aGVyZSBpcyBhbiBhY3R1YWwgZXJyb3IuCi0gICAgaWYgKHJlcXVlc3RlZERpc3BsYXlU
eXBlICE9IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTEVTX0FOR0xFKQorICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgdG9UcnlMZW5ndGg7ICsraSkKICAgICB7Ci0gICAgICAgIGZvciAo
YXV0byAmdmVyc2lvbiA6IGRlc2t0b3BWZXJzaW9uc0Zyb20zXzIpCisgICAgICAgIGNvbnN0IENv
bnRleHRDcmVhdGlvbkluZm8gJmluZm8gPSB0b1RyeVtpXTsKKyAgICAgICAgaWYgKHJlcXVlc3Rl
ZERpc3BsYXlUeXBlICE9IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0RFRkFVTFRfQU5HTEUgJiYK
KyAgICAgICAgICAgIHJlcXVlc3RlZERpc3BsYXlUeXBlICE9IGluZm8uZGlzcGxheVR5cGUpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGVnbDo6RXJyb3IgZXJyb3IgPQotICAgICAgICAgICAgICAg
IGNyZWF0ZUNvbnRleHRBdHRyaWJzKGNvbmZpZywgdmVyc2lvbiwgR0xYX0NPTlRFWFRfQ09SRV9Q
Uk9GSUxFX0JJVF9BUkIsIGNvbnRleHQpOwotICAgICAgICAgICAgaWYgKCFlcnJvci5pc0Vycm9y
KCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAg
ICAgICAgfQorICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgZm9yIChh
dXRvICZ2ZXJzaW9uIDogZGVza3RvcFZlcnNpb25zUHJlM18yKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBlZ2w6OkVycm9yIGVycm9yID0gY3JlYXRlQ29udGV4dEF0dHJpYnMoY29uZmlnLCB2ZXJz
aW9uLCAwLCBjb250ZXh0KTsKLSAgICAgICAgICAgIGlmICghZXJyb3IuaXNFcnJvcigpKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KIAotICAgIGlmIChyZXF1ZXN0ZWREaXNwbGF5VHlwZSAhPSBFR0xf
UExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUpCi0gICAgewotICAgICAgICBmb3IgKGF1
dG8gJnZlcnNpb24gOiBlc1ZlcnNpb25zRnJvbTJfMCkKKyAgICAgICAgZWdsOjpFcnJvciBlcnJv
ciA9IGNyZWF0ZUNvbnRleHRBdHRyaWJzKGNvbmZpZywgaW5mby52ZXJzaW9uLCBpbmZvLnByb2Zp
bGVGbGFnLCBjb250ZXh0KTsKKyAgICAgICAgaWYgKCFlcnJvci5pc0Vycm9yKCkpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGVnbDo6RXJyb3IgZXJyb3IgPQotICAgICAgICAgICAgICAgIGNyZWF0
ZUNvbnRleHRBdHRyaWJzKGNvbmZpZywgdmVyc2lvbiwgR0xYX0NPTlRFWFRfRVMyX1BST0ZJTEVf
QklUX0VYVCwgY29udGV4dCk7Ci0gICAgICAgICAgICBpZiAoIWVycm9yLmlzRXJyb3IoKSkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAgICB9
CisgICAgICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQ5Miw3
ICs1NTMsNyBAQAogICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9OT1RfSU5JVElBTElaRUQsICJD
b3VsZCBub3QgY3JlYXRlIGEgYmFja2luZyBPcGVuR0wgY29udGV4dC4iKTsKIH0KIAotZWdsOjpD
b25maWdTZXQgRGlzcGxheUdMWDo6Z2VuZXJhdGVDb25maWdzKCkgY29uc3QKK2VnbDo6Q29uZmln
U2V0IERpc3BsYXlHTFg6OmdlbmVyYXRlQ29uZmlncygpCiB7CiAgICAgZWdsOjpDb25maWdTZXQg
Y29uZmlnczsKICAgICBjb25maWdJZFRvR0xYQ29uZmlnLmNsZWFyKCk7CkBAIC02NjcsMjEgKzcy
OCwxOCBAQAogICAgIHJldHVybiBjb25maWdzOwogfQogCi1ib29sIERpc3BsYXlHTFg6OmlzRGV2
aWNlTG9zdCgpIGNvbnN0Citib29sIERpc3BsYXlHTFg6OnRlc3REZXZpY2VMb3N0KCkKIHsKLSAg
ICAvLyBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQorICAgIGlmIChtSGFz
QVJCQ3JlYXRlQ29udGV4dFJvYnVzdG5lc3MpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0UmVu
ZGVyZXIoKS0+Z2V0UmVzZXRTdGF0dXMoKSAhPSBHTF9OT19FUlJPUjsKKyAgICB9CiAKLWJvb2wg
RGlzcGxheUdMWDo6dGVzdERldmljZUxvc3QoKQotewotICAgIC8vIFVOSU1QTEVNRU5URUQoKTsK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGVnbDo6RXJyb3IgRGlzcGxheUdMWDo6cmVzdG9yZUxv
c3REZXZpY2UoKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKICAgICByZXR1cm4gZWdsOjpFcnJv
cihFR0xfQkFEX0RJU1BMQVkpOwogfQogCkBAIC02OTMsNyArNzUxLDcgQEAKICAgICAvLyBmYWls
IGlmIHRoZSB3aW5kb3cgZG9lc24ndCBleGlzdCAodGhlIHJhdGlvbmFsIGlzIHRoYXQgdGhlc2Ug
ZnVuY3Rpb24KICAgICAvLyBhcmUgdXNlZCBieSB3aW5kb3cgbWFuYWdlcnMpLiBPdXQgb2YgdGhl
c2UgZnVuY3Rpb24gd2UgdXNlIFhRdWVyeVRyZWUKICAgICAvLyBhcyBpdCBzZWVtcyB0byBiZSB0
aGUgc2ltcGxlc3Q7IGEgZHJhd2JhY2sgaXMgdGhhdCBpdCB3aWxsIGFsbG9jYXRlCi0gICAgLy8g
bWVtb3J5IGZvciB0aGUgbGlzdCBvZiBjaGlsZHJlbiwgYmVjYXN1ZSB3ZSB1c2UgYSBjaGlsZCB3
aW5kb3cgZm9yCisgICAgLy8gbWVtb3J5IGZvciB0aGUgbGlzdCBvZiBjaGlsZHJlbiwgYmVjYXVz
ZSB3ZSB1c2UgYSBjaGlsZCB3aW5kb3cgZm9yCiAgICAgLy8gV2luZG93U3VyZmFjZS4KICAgICBX
aW5kb3cgcm9vdDsKICAgICBXaW5kb3cgcGFyZW50OwpAQCAtNzI3LDYgKzc4NSw4IEBACiAgICAg
ewogICAgICAgICBjYXNlIFZFTkRPUl9JRF9OVklESUE6CiAgICAgICAgICAgICByZXR1cm4gZ2V0
TlZJRElBRHJpdmVyVmVyc2lvbih2ZXJzaW9uKTsKKyAgICAgICAgY2FzZSBWRU5ET1JfSURfQU1E
OgorICAgICAgICAgICAgcmV0dXJuIEdldEFNRERyaXZlclZlcnNpb24odmVyc2lvbik7CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAqdmVyc2lvbiA9ICIiOwogICAgICAgICAgICAgcmV0
dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwpAQCAtODMxLDEzICs4OTEsMTEgQEAKIAogdm9p
ZCBEaXNwbGF5R0xYOjpnZW5lcmF0ZUV4dGVuc2lvbnMoZWdsOjpEaXNwbGF5RXh0ZW5zaW9ucyAq
b3V0RXh0ZW5zaW9ucykgY29uc3QKIHsKLSAgICBvdXRFeHRlbnNpb25zLT5jcmVhdGVDb250ZXh0
ID0gdHJ1ZTsKLSAgICBvdXRFeHRlbnNpb25zLT5jcmVhdGVDb250ZXh0Tm9FcnJvciA9IHRydWU7
CisgICAgb3V0RXh0ZW5zaW9ucy0+Y3JlYXRlQ29udGV4dFJvYnVzdG5lc3MgPSBtSGFzQVJCQ3Jl
YXRlQ29udGV4dFJvYnVzdG5lc3M7CiB9CiAKIHZvaWQgRGlzcGxheUdMWDo6Z2VuZXJhdGVDYXBz
KGVnbDo6Q2FwcyAqb3V0Q2FwcykgY29uc3QKIHsKLSAgICAvLyBVTklNUExFTUVOVEVEKCk7CiAg
ICAgb3V0Q2Fwcy0+dGV4dHVyZU5QT1QgPSB0cnVlOwogfQogCkBAIC04NDksMTcgKzkwNywyNyBA
QAogfQogCiBlZ2w6OkVycm9yIERpc3BsYXlHTFg6OmNyZWF0ZUNvbnRleHRBdHRyaWJzKGdseDo6
RkJDb25maWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGds
OjpWZXJzaW9uIHZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IE9wdGlvbmFsPGdsOjpWZXJzaW9uPiAmdmVyc2lvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHByb2ZpbGVNYXNrLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHg6OkNvbnRleHQgKmNvbnRl
eHQpIGNvbnN0CiB7CiAgICAgc3RkOjp2ZWN0b3I8aW50PiBhdHRyaWJzOwotICAgIGF0dHJpYnMu
cHVzaF9iYWNrKEdMWF9DT05URVhUX01BSk9SX1ZFUlNJT05fQVJCKTsKLSAgICBhdHRyaWJzLnB1
c2hfYmFjayh2ZXJzaW9uLm1ham9yKTsKIAotICAgIGF0dHJpYnMucHVzaF9iYWNrKEdMWF9DT05U
RVhUX01JTk9SX1ZFUlNJT05fQVJCKTsKLSAgICBhdHRyaWJzLnB1c2hfYmFjayh2ZXJzaW9uLm1p
bm9yKTsKKyAgICBpZiAobUhhc0FSQkNyZWF0ZUNvbnRleHRSb2J1c3RuZXNzKQorICAgIHsKKyAg
ICAgICAgYXR0cmlicy5wdXNoX2JhY2soR0xYX0NPTlRFWFRfUkVTRVRfTk9USUZJQ0FUSU9OX1NU
UkFURUdZX0FSQik7CisgICAgICAgIGF0dHJpYnMucHVzaF9iYWNrKEdMWF9MT1NFX0NPTlRFWFRf
T05fUkVTRVRfQVJCKTsKKyAgICB9CiAKKyAgICBpZiAodmVyc2lvbi52YWxpZCgpKQorICAgIHsK
KyAgICAgICAgYXR0cmlicy5wdXNoX2JhY2soR0xYX0NPTlRFWFRfTUFKT1JfVkVSU0lPTl9BUkIp
OworICAgICAgICBhdHRyaWJzLnB1c2hfYmFjayh2ZXJzaW9uLnZhbHVlKCkubWFqb3IpOworCisg
ICAgICAgIGF0dHJpYnMucHVzaF9iYWNrKEdMWF9DT05URVhUX01JTk9SX1ZFUlNJT05fQVJCKTsK
KyAgICAgICAgYXR0cmlicy5wdXNoX2JhY2sodmVyc2lvbi52YWx1ZSgpLm1pbm9yKTsKKyAgICB9
CisKICAgICBpZiAocHJvZmlsZU1hc2sgIT0gMCAmJiBtSGFzQVJCQ3JlYXRlQ29udGV4dFByb2Zp
bGUpCiAgICAgewogICAgICAgICBhdHRyaWJzLnB1c2hfYmFjayhHTFhfQ09OVEVYVF9QUk9GSUxF
X01BU0tfQVJCKTsKQEAgLTg3MSw2ICs5MzksOSBAQAogICAgIC8vIFdoZW4gY3JlYXRpbmcgYSBj
b250ZXh0IHdpdGggZ2xYQ3JlYXRlQ29udGV4dEF0dHJpYnNBUkIsIGEgdmFyaWV0eSBvZiBYMTEg
ZXJyb3JzIGNhbgogICAgIC8vIGJlIGdlbmVyYXRlZC4gVG8gcHJldmVudCB0aGVzZSBlcnJvcnMg
ZnJvbSBjcmFzaGluZyBvdXIgcHJvY2Vzcywgd2Ugc2ltcGx5IGlnbm9yZQogICAgIC8vIHRoZW0g
YW5kIG9ubHkgbG9vayBpZiBHTFhDb250ZXh0IHdhcyBjcmVhdGVkLgorICAgIC8vIFByb2Nlc3Mg
YWxsIGV2ZW50cyBiZWZvcmUgc2V0dGluZyB0aGUgZXJyb3IgaGFuZGxlciB0byBhdm9pZCBkZXN5
bmNocm9uaXppbmcgWENCIGluc3RhbmNlcworICAgIC8vICh0aGUgZXJyb3IgaGFuZGxlciBpcyBO
T1QgcGVyLWRpc3BsYXkpLgorICAgIFhTeW5jKG1YRGlzcGxheSwgRmFsc2UpOwogICAgIGF1dG8g
b2xkRXJyb3JIYW5kbGVyID0gWFNldEVycm9ySGFuZGxlcihJZ25vcmVYMTFFcnJvcnMpOwogICAg
ICpjb250ZXh0ID0gbUdMWC5jcmVhdGVDb250ZXh0QXR0cmlic0FSQihtQ29udGV4dENvbmZpZywg
bnVsbHB0ciwgVHJ1ZSwgYXR0cmlicy5kYXRhKCkpOwogICAgIFhTZXRFcnJvckhhbmRsZXIob2xk
RXJyb3JIYW5kbGVyKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9nbHgvRGlzcGxheUdMWC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvRGlzcGxheUdMWC5oCShy
ZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvZ2x4L0Rpc3BsYXlHTFguaAkod29ya2luZyBjb3B5KQpAQCAtMTIsNiArMTIs
NyBAQAogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJj
b21tb24vT3B0aW9uYWwuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9EaXNwbGF5
R0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvRnVuY3Rpb25zR0xYLmgi
CiAKQEAgLTQzLDIxICs0NCwyNCBAQAogICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZShlZ2w6OkRp
c3BsYXkgKmRpc3BsYXkpIG92ZXJyaWRlOwogICAgIHZvaWQgdGVybWluYXRlKCkgb3ZlcnJpZGU7
CiAKLSAgICBTdXJmYWNlSW1wbCAqY3JlYXRlV2luZG93U3VyZmFjZShjb25zdCBlZ2w6OkNvbmZp
ZyAqY29uZmlndXJhdGlvbiwKKyAgICBTdXJmYWNlSW1wbCAqY3JlYXRlV2luZG93U3VyZmFjZShj
b25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVN
YXAgJmF0dHJpYnMpIG92ZXJyaWRlOwotICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQYnVmZmVyU3Vy
ZmFjZShjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKKyAgICBTdXJmYWNlSW1wbCAq
Y3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29u
ZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
ZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOwotICAgIFN1cmZhY2VJbXBsICpj
cmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJh
dGlvbiwKKyAgICBTdXJmYWNlSW1wbCAqY3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoY29u
c3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVm
ZmVyIHNoYXJlSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7Ci0gICAg
U3VyZmFjZUltcGwgKmNyZWF0ZVBpeG1hcFN1cmZhY2UoY29uc3QgZWdsOjpDb25maWcgKmNvbmZp
Z3VyYXRpb24sCisgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBpeG1hcFN1cmZhY2UoY29uc3QgZWds
OjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5hdGl2ZVBpeG1hcFR5cGUgbmF0aXZlUGl4bWFwLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZh
dHRyaWJzKSBvdmVycmlkZTsKIAotICAgIGVnbDo6Q29uZmlnU2V0IGdlbmVyYXRlQ29uZmlncygp
IGNvbnN0IG92ZXJyaWRlOworICAgIGVnbDo6Q29uZmlnU2V0IGdlbmVyYXRlQ29uZmlncygpIG92
ZXJyaWRlOwogCi0gICAgYm9vbCBpc0RldmljZUxvc3QoKSBjb25zdCBvdmVycmlkZTsKICAgICBi
b29sIHRlc3REZXZpY2VMb3N0KCkgb3ZlcnJpZGU7CiAgICAgZWdsOjpFcnJvciByZXN0b3JlTG9z
dERldmljZSgpIG92ZXJyaWRlOwogCkBAIC0xMDAsNyArMTA0LDcgQEAKIAogICAgIGludCBnZXRH
TFhGQkNvbmZpZ0F0dHJpYihnbHg6OkZCQ29uZmlnIGNvbmZpZywgaW50IGF0dHJpYikgY29uc3Q7
CiAgICAgZWdsOjpFcnJvciBjcmVhdGVDb250ZXh0QXR0cmlicyhnbHg6OkZCQ29uZmlnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlZlcnNpb24gdmVyc2lvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE9wdGlvbmFsPGdsOjpWZXJz
aW9uPiAmdmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBw
cm9maWxlTWFzaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseDo6Q29u
dGV4dCAqY29udGV4dCkgY29uc3Q7CiAKQEAgLTEwOCw4ICsxMTIsNyBAQAogCiAgICAgRnVuY3Rp
b25zR0wgKm1GdW5jdGlvbnNHTDsKIAotICAgIC8vVE9ETyhjd2FsbGV6KSB5dWNrLCBjaGFuZ2Ug
Z2VuZXJhdGVDb25maWdzIHRvIGJlIG5vbi1jb25zdCBvciBhZGQgYSB1c2VyZGF0YSBtZW1iZXIg
dG8gZWdsOjpDb25maWc/Ci0gICAgbXV0YWJsZSBzdGQ6Om1hcDxpbnQsIGdseDo6RkJDb25maWc+
IGNvbmZpZ0lkVG9HTFhDb25maWc7CisgICAgc3RkOjptYXA8aW50LCBnbHg6OkZCQ29uZmlnPiBj
b25maWdJZFRvR0xYQ29uZmlnOwogCiAgICAgRUdMaW50IG1SZXF1ZXN0ZWRWaXN1YWw7CiAgICAg
Z2x4OjpGQkNvbmZpZyBtQ29udGV4dENvbmZpZzsKQEAgLTEyMiw2ICsxMjUsNyBAQAogICAgIGJv
b2wgbUhhc011bHRpc2FtcGxlOwogICAgIGJvb2wgbUhhc0FSQkNyZWF0ZUNvbnRleHQ7CiAgICAg
Ym9vbCBtSGFzQVJCQ3JlYXRlQ29udGV4dFByb2ZpbGU7CisgICAgYm9vbCBtSGFzQVJCQ3JlYXRl
Q29udGV4dFJvYnVzdG5lc3M7CiAgICAgYm9vbCBtSGFzRVhUQ3JlYXRlQ29udGV4dEVTMlByb2Zp
bGU7CiAKICAgICBlbnVtIGNsYXNzIFN3YXBDb250cm9sCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L0Z1bmN0aW9uc0dMWC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL2dseC9GdW5jdGlvbnNHTFguY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L0Z1bmN0aW9uc0dMWC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKICAgICAgICAgICBnZXRDdXJyZW50
RHJhd2FibGVQdHIobnVsbHB0ciksCiAgICAgICAgICAgd2FpdFhQdHIobnVsbHB0ciksCiAgICAg
ICAgICAgd2FpdEdMUHRyKG51bGxwdHIpLAorICAgICAgICAgIGdldENsaWVudFN0cmluZ1B0cihu
dWxscHRyKSwKICAgICAgICAgICBxdWVyeUV4dGVuc2lvbnNTdHJpbmdQdHIobnVsbHB0ciksCiAg
ICAgICAgICAgZ2V0RkJDb25maWdzUHRyKG51bGxwdHIpLAogICAgICAgICAgIGNob29zZUZCQ29u
ZmlnUHRyKG51bGxwdHIpLApAQCAtNzUsNiArNzYsNyBAQAogICAgIFBGTkdMWFdBSVRHTFBST0Mg
d2FpdEdMUHRyOwogCiAgICAgLy8gR0xYIDEuMQorICAgIFBGTkdMWEdFVENMSUVOVFNUUklOR1BS
T0MgZ2V0Q2xpZW50U3RyaW5nUHRyOwogICAgIFBGTkdMWFFVRVJZRVhURU5TSU9OU1NUUklOR1BS
T0MgcXVlcnlFeHRlbnNpb25zU3RyaW5nUHRyOwogCiAgICAgLy9HTFggMS4zCkBAIC0xNzUsNiAr
MTc3LDcgQEAKICAgICBHRVRfRk5QVFJfT1JfRVJST1IoJm1GblB0cnMtPndhaXRHTFB0ciwgZ2xY
V2FpdEdMKTsKIAogICAgIC8vIEdMWCAxLjEKKyAgICBHRVRfRk5QVFJfT1JfRVJST1IoJm1GblB0
cnMtPmdldENsaWVudFN0cmluZ1B0ciwgZ2xYR2V0Q2xpZW50U3RyaW5nKTsKICAgICBHRVRfRk5Q
VFJfT1JfRVJST1IoJm1GblB0cnMtPnF1ZXJ5RXh0ZW5zaW9uc1N0cmluZ1B0ciwgZ2xYUXVlcnlF
eHRlbnNpb25zU3RyaW5nKTsKIAogICAgIC8vIENoZWNrIHdlIGhhdmUgYSB3b3JraW5nIEdMWApA
QCAtMzE0LDYgKzMxNywxMSBAQAogfQogCiAvLyBHTFggMS4xCitjb25zdCBjaGFyICpGdW5jdGlv
bnNHTFg6OmdldENsaWVudFN0cmluZyhpbnQgbmFtZSkgY29uc3QKK3sKKyAgICByZXR1cm4gbUZu
UHRycy0+Z2V0Q2xpZW50U3RyaW5nUHRyKG1YRGlzcGxheSwgbmFtZSk7Cit9CisKIGNvbnN0IGNo
YXIgKkZ1bmN0aW9uc0dMWDo6cXVlcnlFeHRlbnNpb25zU3RyaW5nKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbUZuUHRycy0+cXVlcnlFeHRlbnNpb25zU3RyaW5nUHRyKG1YRGlzcGxheSwgbVhTY3Jl
ZW4pOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL2dseC9GdW5jdGlvbnNHTFguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L0Z1bmN0aW9uc0dMWC5oCShyZXZpc2lv
biAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvZ2x4L0Z1bmN0aW9uc0dMWC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBA
CiAgICAgdm9pZCB3YWl0R0woKSBjb25zdDsKIAogICAgIC8vIEdMWCAxLjEKKyAgICBjb25zdCBj
aGFyICpnZXRDbGllbnRTdHJpbmcoaW50IG5hbWUpIGNvbnN0OwogICAgIGNvbnN0IGNoYXIgKnF1
ZXJ5RXh0ZW5zaW9uc1N0cmluZygpIGNvbnN0OwogCiAgICAgLy8gR0xYIDEuMwpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9QYnVmZmVy
U3VyZmFjZUdMWC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9QYnVmZmVyU3VyZmFjZUdMWC5jcHAJKHJldmlzaW9u
IDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC9nbHgvUGJ1ZmZlclN1cmZhY2VHTFguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNSw3ICsx
NSw4IEBACiBuYW1lc3BhY2UgcngKIHsKIAotUGJ1ZmZlclN1cmZhY2VHTFg6OlBidWZmZXJTdXJm
YWNlR0xYKFJlbmRlcmVyR0wgKnJlbmRlcmVyLAorUGJ1ZmZlclN1cmZhY2VHTFg6OlBidWZmZXJT
dXJmYWNlR0xYKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJlckdMICpyZW5kZXJlciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgd2lkdGgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGxhcmdlc3QsCkBAIC0yMiw3ICsyMyw3IEBACiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRnVuY3Rpb25zR0xYICZnbHgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x4OjpDb250ZXh0IGNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x4OjpGQkNvbmZpZyBmYkNv
bmZpZykKLSAgICA6IFN1cmZhY2VHTFgocmVuZGVyZXIpLAorICAgIDogU3VyZmFjZUdMWChzdGF0
ZSwgcmVuZGVyZXIpLAogICAgICAgbVdpZHRoKHdpZHRoKSwKICAgICAgIG1IZWlnaHQoaGVpZ2h0
KSwKICAgICAgIG1MYXJnZXN0KGxhcmdlc3QpLApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9QYnVmZmVyU3VyZmFjZUdMWC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9nbHgvUGJ1ZmZlclN1cmZhY2VHTFguaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9QYnVmZmVyU3VyZmFj
ZUdMWC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw4IEBACiBjbGFzcyBQYnVmZmVyU3Vy
ZmFjZUdMWCA6IHB1YmxpYyBTdXJmYWNlR0xYCiB7CiAgIHB1YmxpYzoKLSAgICBQYnVmZmVyU3Vy
ZmFjZUdMWChSZW5kZXJlckdMICpyZW5kZXJlciwKKyAgICBQYnVmZmVyU3VyZmFjZUdMWChjb25z
dCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgUmVuZGVy
ZXJHTCAqcmVuZGVyZXIsCiAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IHdpZHRoLAogICAg
ICAgICAgICAgICAgICAgICAgIEVHTGludCBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBsYXJnZXN0LApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL2dseC9TdXJmYWNlR0xYLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9TdXJmYWNlR0xYLmgJKHJl
dmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9nbHgvU3VyZmFjZUdMWC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw3ICsxNyw3
IEBACiBjbGFzcyBTdXJmYWNlR0xYIDogcHVibGljIFN1cmZhY2VHTAogewogICBwdWJsaWM6Ci0g
ICAgU3VyZmFjZUdMWChSZW5kZXJlckdMICpyZW5kZXJlcikgOiBTdXJmYWNlR0wocmVuZGVyZXIp
IHt9CisgICAgU3VyZmFjZUdMWChjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsIFJlbmRl
cmVyR0wgKnJlbmRlcmVyKSA6IFN1cmZhY2VHTChzdGF0ZSwgcmVuZGVyZXIpIHt9CiAKICAgICB2
aXJ0dWFsIGVnbDo6RXJyb3IgY2hlY2tGb3JSZXNpemUoKSA9IDA7CiB9OwpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9XaW5kb3dTdXJm
YWNlR0xYLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L1dpbmRvd1N1cmZhY2VHTFguY3BwCShyZXZpc2lvbiAyMDgw
MjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
Z2x4L1dpbmRvd1N1cmZhY2VHTFguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw4IEBA
CiAgICAgcmV0dXJuIDA7CiB9CiAKLVdpbmRvd1N1cmZhY2VHTFg6OldpbmRvd1N1cmZhY2VHTFgo
Y29uc3QgRnVuY3Rpb25zR0xYICZnbHgsCitXaW5kb3dTdXJmYWNlR0xYOjpXaW5kb3dTdXJmYWNl
R0xYKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgRnVuY3Rpb25zR0xYICZnbHgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERpc3BsYXlHTFggKmdseERpc3BsYXksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJlbmRlcmVyR0wgKnJlbmRlcmVyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXaW5kb3cgd2luZG93LApAQCAtMjgsNyArMjksNyBAQAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5ICpkaXNwbGF5LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHg6OkNvbnRleHQgY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x4OjpGQkNvbmZpZyBmYkNvbmZpZykK
LSAgICA6IFN1cmZhY2VHTFgocmVuZGVyZXIpLAorICAgIDogU3VyZmFjZUdMWChzdGF0ZSwgcmVu
ZGVyZXIpLAogICAgICAgbVBhcmVudCh3aW5kb3cpLAogICAgICAgbVdpbmRvdygwKSwKICAgICAg
IG1EaXNwbGF5KGRpc3BsYXkpLApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL2dseC9XaW5kb3dTdXJmYWNlR0xYLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9XaW5k
b3dTdXJmYWNlR0xYLmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvV2luZG93U3VyZmFjZUdMWC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw4IEBACiBjbGFzcyBXaW5kb3dTdXJmYWNlR0xYIDogcHVi
bGljIFN1cmZhY2VHTFgKIHsKICAgcHVibGljOgotICAgIFdpbmRvd1N1cmZhY2VHTFgoY29uc3Qg
RnVuY3Rpb25zR0xYICZnbHgsCisgICAgV2luZG93U3VyZmFjZUdMWChjb25zdCBlZ2w6OlN1cmZh
Y2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBGdW5jdGlvbnNHTFgg
JmdseCwKICAgICAgICAgICAgICAgICAgICAgIERpc3BsYXlHTFggKmdseERpc3BsYXksCiAgICAg
ICAgICAgICAgICAgICAgICBSZW5kZXJlckdMICpyZW5kZXJlciwKICAgICAgICAgICAgICAgICAg
ICAgIFdpbmRvdyB3aW5kb3csCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L3BsYXRmb3JtX2dseC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvcGxhdGZvcm1f
Z2x4LmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvcGxhdGZvcm1fZ2x4LmgJKHdvcmtpbmcgY29weSkKQEAg
LTExNiw2ICsxMTYsMTIgQEAKICNkZWZpbmUgR0xYX0NPTlRFWFRfQ09NUEFUSUJJTElUWV9QUk9G
SUxFX0JJVF9BUkIgMHgwMDAwMDAwMgogI2RlZmluZSBHTFhfQ09OVEVYVF9QUk9GSUxFX01BU0tf
QVJCIDB4OTEyNgogCisvLyBHTFhfQVJCX2NyZWF0ZV9jb250ZXh0X3JvYnVzdG5lc3MKKyNkZWZp
bmUgR0xYX0NPTlRFWFRfUk9CVVNUX0FDQ0VTU19CSVRfQVJCIDB4MDAwMDAwMDQKKyNkZWZpbmUg
R0xYX0xPU0VfQ09OVEVYVF9PTl9SRVNFVF9BUkIgMHg4MjUyCisjZGVmaW5lIEdMWF9DT05URVhU
X1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWV9BUkIgMHg4MjU2CisjZGVmaW5lIEdMWF9OT19S
RVNFVF9OT1RJRklDQVRJT05fQVJCIDB4ODI2MQorCiAvLyBHTFhfRVhUX2NyZWF0ZV9jb250ZXh0
X2VzMl9wcm9maWxlCiAjZGVmaW5lIEdMWF9DT05URVhUX0VTMl9QUk9GSUxFX0JJVF9FWFQgMHgw
MDAwMDAwNAogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvcmVuZGVyZXJnbF91dGlscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3JlbmRlcmVyZ2xfdXRpbHMuY3Bw
CShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvcmVuZGVyZXJnbF91dGlscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
LDYgKzExLDggQEAKIAogI2luY2x1ZGUgPGxpbWl0cz4KIAorI2luY2x1ZGUgImNvbW1vbi9tYXRo
dXRpbC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0J1ZmZlci5oIgogI2luY2x1ZGUgImxpYkFOR0xF
L0NhcHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgogI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL2dsL0Z1bmN0aW9uc0dMLmgiCkBAIC0yMCw2ICsyMiw4IEBACiAjaW5j
bHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHNzdHJlYW0+CiAKK3VzaW5nIGFuZ2xlOjpDaGVj
a2VkTnVtZXJpYzsKKwogbmFtZXNwYWNlIHJ4CiB7CiBWZW5kb3JJRCBHZXRWZW5kb3JJRChjb25z
dCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zKQpAQCAtMzgsNiArNDIsMTAgQEAKICAgICB7CiAgICAg
ICAgIHJldHVybiBWRU5ET1JfSURfQU1EOwogICAgIH0KKyAgICBlbHNlIGlmIChuYXRpdmVWZW5k
b3JTdHJpbmcuZmluZCgiUXVhbGNvbW0iKSAhPSBzdGQ6OnN0cmluZzo6bnBvcykKKyAgICB7Cisg
ICAgICAgIHJldHVybiBWRU5ET1JfSURfUVVBTENPTU07CisgICAgfQogICAgIGVsc2UKICAgICB7
CiAgICAgICAgIHJldHVybiBWRU5ET1JfSURfVU5LTk9XTjsKQEAgLTExNiw2ICsxMjQsMTMgQEAK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgR0xpbnQgUXVlcnlTaW5nbGVJbmRleEdM
SW50KGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIEdMZW51bSBuYW1lLCBHTHVpbnQgaW5k
ZXgpCit7CisgICAgR0xpbnQgcmVzdWx0OworICAgIGZ1bmN0aW9ucy0+Z2V0SW50ZWdlcmlfdihu
YW1lLCBpbmRleCwgJnJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGljIEdM
aW50IFF1ZXJ5R0xJbnRSYW5nZShjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLCBHTGVudW0g
bmFtZSwgc2l6ZV90IGluZGV4KQogewogICAgIEdMaW50IHJlc3VsdFsyXSA9IHt9OwpAQCAtMTgy
LDggKzE5Nyw4IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBTdGFydCBieSBhc3N1bWlu
ZyBFUzMgc3VwcG9ydCBhbmQgd29yayBkb3duCi0gICAgKm1heFN1cHBvcnRlZEVTVmVyc2lvbiA9
IGdsOjpWZXJzaW9uKDMsIDApOworICAgIC8vIFN0YXJ0IGJ5IGFzc3VtaW5nIEVTMy4xIHN1cHBv
cnQgYW5kIHdvcmsgZG93bgorICAgICptYXhTdXBwb3J0ZWRFU1ZlcnNpb24gPSBnbDo6VmVyc2lv
bigzLCAxKTsKIAogICAgIC8vIFRhYmxlIDYuMjgsIGltcGxlbWVudGF0aW9uIGRlcGVuZGVudCB2
YWx1ZXMKICAgICBpZiAoZnVuY3Rpb25zLT5pc0F0TGVhc3RHTChnbDo6VmVyc2lvbig0LCAzKSkg
fHwgZnVuY3Rpb25zLT5oYXNHTEV4dGVuc2lvbigiR0xfQVJCX0VTM19jb21wYXRpYmlsaXR5Iikg
fHwKQEAgLTI4OSw2ICszMDQsMjQgQEAKICAgICAgICAgLy8gRG9lc24ndCBpbXBhY3Qgc3VwcG9y
dGVkIHZlcnNpb24KICAgICB9CiAKKyAgICBpZiAoZnVuY3Rpb25zLT5pc0F0TGVhc3RHTChnbDo6
VmVyc2lvbig0LCAxKSkgfHwKKyAgICAgICAgZnVuY3Rpb25zLT5oYXNHTEV4dGVuc2lvbigiR0xf
QVJCX2dldF9wcm9ncmFtX2JpbmFyeSIpIHx8CisgICAgICAgIGZ1bmN0aW9ucy0+aXNBdExlYXN0
R0xFUyhnbDo6VmVyc2lvbigzLCAwKSkgfHwKKyAgICAgICAgZnVuY3Rpb25zLT5oYXNHTEV4dGVu
c2lvbigiR0xfT0VTX2dldF9wcm9ncmFtX2JpbmFyeSIpKQorICAgIHsKKyAgICAgICAgLy8gQWJs
ZSB0byBzdXBwb3J0IHRoZSBHTF9QUk9HUkFNX0JJTkFSWV9BTkdMRSBmb3JtYXQgYXMgbG9uZyBh
cyBhbm90aGVyIHByb2dyYW0gYmluYXJ5CisgICAgICAgIC8vIGZvcm1hdCBpcyBhdmFpbGFibGUu
CisgICAgICAgIEdMaW50IG51bUJpbmFyeUZvcm1hdHMgPSBRdWVyeVNpbmdsZUdMSW50KGZ1bmN0
aW9ucywgR0xfTlVNX1BST0dSQU1fQklOQVJZX0ZPUk1BVFNfT0VTKTsKKyAgICAgICAgaWYgKG51
bUJpbmFyeUZvcm1hdHMgPiAwKQorICAgICAgICB7CisgICAgICAgICAgICBjYXBzLT5wcm9ncmFt
QmluYXJ5Rm9ybWF0cy5wdXNoX2JhY2soR0xfUFJPR1JBTV9CSU5BUllfQU5HTEUpOworICAgICAg
ICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIC8vIERvZXNuJ3QgaW1wYWN0IHN1
cHBvcnRlZCB2ZXJzaW9uCisgICAgfQorCiAgICAgLy8gZ2xHZXRTaGFkZXJQcmVjaXNpb25Gb3Jt
YXQgaXMgbm90IGF2YWlsYWJsZSB1bnRpbCBkZXNrdG9wIEdMIHZlcnNpb24gNC4xIG9yIEdMX0FS
Ql9FUzJfY29tcGF0aWJpbGl0eSBleGlzdHMKICAgICBpZiAoZnVuY3Rpb25zLT5pc0F0TGVhc3RH
TChnbDo6VmVyc2lvbig0LCAxKSkgfHwgZnVuY3Rpb25zLT5oYXNHTEV4dGVuc2lvbigiR0xfQVJC
X0VTMl9jb21wYXRpYmlsaXR5IikgfHwKICAgICAgICAgZnVuY3Rpb25zLT5pc0F0TGVhc3RHTEVT
KGdsOjpWZXJzaW9uKDIsIDApKSkKQEAgLTUxNCw2ICs1NDcsMTcgQEAKICAgICAgICAgTGltaXRW
ZXJzaW9uKG1heFN1cHBvcnRlZEVTVmVyc2lvbiwgZ2w6OlZlcnNpb24oMiwgMCkpOwogICAgIH0K
IAorICAgIC8vIENoZWNrIGlmIGluZGV4IGNvbnN0YW50IHNhbXBsZXIgYXJyYXkgaW5kZXhpbmcg
aXMgc3VwcG9ydGVkCisgICAgaWYgKCFmdW5jdGlvbnMtPmlzQXRMZWFzdEdMKGdsOjpWZXJzaW9u
KDQsIDApKSAmJgorICAgICAgICAhZnVuY3Rpb25zLT5pc0F0TGVhc3RHTEVTKGdsOjpWZXJzaW9u
KDIsIDApKSAmJgorICAgICAgICAhZnVuY3Rpb25zLT5oYXNFeHRlbnNpb24oIkdMX0FSQl9ncHVf
c2hhZGVyNSIpKQorICAgIHsKKyAgICAgICAgLy8gVGhpcyBzaG91bGQgYWxzbyBiZSByZXF1aXJl
ZCBmb3IgRVMyIGJ1dCB0aGVyZSBhcmUgc29tZSBkcml2ZXIgc3VwcG9ydCBpbmRleCBjb25zdGFu
dAorICAgICAgICAvLyBzYW1wbGVyIGFycmF5IGluZGV4aW5nIHdpdGhvdXQgbWVldGluZyB0aGUg
cmVxdWlyZW1lbnRzIGFib3ZlLiBEb24ndCBsaW1pdCB0aGVpciBFUworICAgICAgICAvLyB2ZXJz
aW9uIGFzIGl0IHdvdWxkIGJyZWFrIFdlYkdMIGZvciBzb21lIHVzZXJzLgorICAgICAgICBMaW1p
dFZlcnNpb24obWF4U3VwcG9ydGVkRVNWZXJzaW9uLCBnbDo6VmVyc2lvbigyLCAwKSk7CisgICAg
fQorCiAgICAgLy8gQ2hlY2sgaWYgc2FtcGxlciBvYmplY3RzIGFyZSBzdXBwb3J0ZWQKICAgICBp
ZiAoIWZ1bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24oMywgMykpICYmCiAgICAgICAg
ICFmdW5jdGlvbnMtPmhhc0dMRXh0ZW5zaW9uKCJHTF9BUkJfc2FtcGxlcl9vYmplY3RzIikgJiYK
QEAgLTU1OSwxNSArNjAzLDE3MyBAQAogICAgICAgICBMaW1pdFZlcnNpb24obWF4U3VwcG9ydGVk
RVNWZXJzaW9uLCBnbDo6VmVyc2lvbigyLCAwKSk7CiAgICAgfQogCisgICAgaWYgKGZ1bmN0aW9u
cy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24oNCwgMykpIHx8IGZ1bmN0aW9ucy0+aXNBdExlYXN0
R0xFUyhnbDo6VmVyc2lvbigzLCAxKSkgfHwKKyAgICAgICAgZnVuY3Rpb25zLT5oYXNHTEV4dGVu
c2lvbigiR0xfQVJCX3RleHR1cmVfbXVsdGlzYW1wbGUiKSkKKyAgICB7CisgICAgICAgIGNhcHMt
Pm1heEZyYW1lYnVmZmVyV2lkdGggICA9IFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9N
QVhfRlJBTUVCVUZGRVJfV0lEVEgpOworICAgICAgICBjYXBzLT5tYXhGcmFtZWJ1ZmZlckhlaWdo
dCAgPSBRdWVyeVNpbmdsZUdMSW50KGZ1bmN0aW9ucywgR0xfTUFYX0ZSQU1FQlVGRkVSX0hFSUdI
VCk7CisgICAgICAgIGNhcHMtPm1heEZyYW1lYnVmZmVyU2FtcGxlcyA9IFF1ZXJ5U2luZ2xlR0xJ
bnQoZnVuY3Rpb25zLCBHTF9NQVhfRlJBTUVCVUZGRVJfU0FNUExFUyk7CisgICAgfQorICAgIGVs
c2UKKyAgICB7CisgICAgICAgIExpbWl0VmVyc2lvbihtYXhTdXBwb3J0ZWRFU1ZlcnNpb24sIGds
OjpWZXJzaW9uKDMsIDApKTsKKyAgICB9CisKKyAgICBpZiAoZnVuY3Rpb25zLT5pc0F0TGVhc3RH
TChnbDo6VmVyc2lvbigzLCAyKSkgfHwgZnVuY3Rpb25zLT5pc0F0TGVhc3RHTEVTKGdsOjpWZXJz
aW9uKDMsIDEpKSB8fAorICAgICAgICBmdW5jdGlvbnMtPmhhc0dMRXh0ZW5zaW9uKCJHTF9BUkJf
dGV4dHVyZV9tdWx0aXNhbXBsZSIpKQorICAgIHsKKyAgICAgICAgY2Fwcy0+bWF4U2FtcGxlTWFz
a1dvcmRzICAgICA9IFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9NQVhfU0FNUExFX01B
U0tfV09SRFMpOworICAgICAgICBjYXBzLT5tYXhDb2xvclRleHR1cmVTYW1wbGVzID0gUXVlcnlT
aW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01BWF9DT0xPUl9URVhUVVJFX1NBTVBMRVMpOworICAg
ICAgICBjYXBzLT5tYXhEZXB0aFRleHR1cmVTYW1wbGVzID0gUXVlcnlTaW5nbGVHTEludChmdW5j
dGlvbnMsIEdMX01BWF9ERVBUSF9URVhUVVJFX1NBTVBMRVMpOworICAgICAgICBjYXBzLT5tYXhJ
bnRlZ2VyU2FtcGxlcyAgICAgID0gUXVlcnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01BWF9J
TlRFR0VSX1NBTVBMRVMpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBMaW1pdFZl
cnNpb24obWF4U3VwcG9ydGVkRVNWZXJzaW9uLCBnbDo6VmVyc2lvbigzLCAwKSk7CisgICAgfQor
CisgICAgaWYgKGZ1bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24oNCwgMykpIHx8IGZ1
bmN0aW9ucy0+aXNBdExlYXN0R0xFUyhnbDo6VmVyc2lvbigzLCAxKSkgfHwKKyAgICAgICAgZnVu
Y3Rpb25zLT5oYXNHTEV4dGVuc2lvbigiR0xfQVJCX3ZlcnRleF9hdHRyaWJfYmluZGluZyIpKQor
ICAgIHsKKyAgICAgICAgY2Fwcy0+bWF4VmVydGV4QXR0cmliUmVsYXRpdmVPZmZzZXQgPQorICAg
ICAgICAgICAgUXVlcnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01BWF9WRVJURVhfQVRUUklC
X1JFTEFUSVZFX09GRlNFVCk7CisgICAgICAgIGNhcHMtPm1heFZlcnRleEF0dHJpYkJpbmRpbmdz
ID0gUXVlcnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01BWF9WRVJURVhfQVRUUklCX0JJTkRJ
TkdTKTsKKyAgICAgICAgY2Fwcy0+bWF4VmVydGV4QXR0cmliU3RyaWRlICAgPSBRdWVyeVNpbmds
ZUdMSW50KGZ1bmN0aW9ucywgR0xfTUFYX1ZFUlRFWF9BVFRSSUJfU1RSSURFKTsKKyAgICB9Cisg
ICAgZWxzZQorICAgIHsKKyAgICAgICAgTGltaXRWZXJzaW9uKG1heFN1cHBvcnRlZEVTVmVyc2lv
biwgZ2w6OlZlcnNpb24oMywgMCkpOworICAgIH0KKworICAgIGlmIChmdW5jdGlvbnMtPmlzQXRM
ZWFzdEdMKGdsOjpWZXJzaW9uKDQsIDIpKSB8fCBmdW5jdGlvbnMtPmlzQXRMZWFzdEdMRVMoZ2w6
OlZlcnNpb24oMywgMSkpIHx8CisgICAgICAgIGZ1bmN0aW9ucy0+aGFzR0xFeHRlbnNpb24oIkdM
X0FSQl9zaGFkZXJfc3RvcmFnZV9idWZmZXJfb2JqZWN0IikpCisgICAgeworICAgICAgICBjYXBz
LT5tYXhDb21iaW5lZFNoYWRlck91dHB1dFJlc291cmNlcyA9CisgICAgICAgICAgICBRdWVyeVNp
bmdsZUdMSW50KGZ1bmN0aW9ucywgR0xfTUFYX0NPTUJJTkVEX1NIQURFUl9PVVRQVVRfUkVTT1VS
Q0VTKTsKKyAgICAgICAgY2Fwcy0+bWF4RnJhZ21lbnRTaGFkZXJTdG9yYWdlQmxvY2tzID0KKyAg
ICAgICAgICAgIFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9NQVhfRlJBR01FTlRfU0hB
REVSX1NUT1JBR0VfQkxPQ0tTKTsKKyAgICAgICAgY2Fwcy0+bWF4VmVydGV4U2hhZGVyU3RvcmFn
ZUJsb2NrcyA9CisgICAgICAgICAgICBRdWVyeVNpbmdsZUdMSW50KGZ1bmN0aW9ucywgR0xfTUFY
X1ZFUlRFWF9TSEFERVJfU1RPUkFHRV9CTE9DS1MpOworICAgICAgICBjYXBzLT5tYXhTaGFkZXJT
dG9yYWdlQnVmZmVyQmluZGluZ3MgPQorICAgICAgICAgICAgUXVlcnlTaW5nbGVHTEludChmdW5j
dGlvbnMsIEdMX01BWF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfQklORElOR1MpOworICAgICAgICBj
YXBzLT5tYXhTaGFkZXJTdG9yYWdlQmxvY2tTaXplID0KKyAgICAgICAgICAgIFF1ZXJ5U2luZ2xl
R0xJbnQ2NChmdW5jdGlvbnMsIEdMX01BWF9TSEFERVJfU1RPUkFHRV9CTE9DS19TSVpFKTsKKyAg
ICAgICAgY2Fwcy0+bWF4Q29tYmluZWRTaGFkZXJTdG9yYWdlQmxvY2tzID0KKyAgICAgICAgICAg
IFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9NQVhfQ09NQklORURfU0hBREVSX1NUT1JB
R0VfQkxPQ0tTKTsKKyAgICAgICAgY2Fwcy0+c2hhZGVyU3RvcmFnZUJ1ZmZlck9mZnNldEFsaWdu
bWVudCA9CisgICAgICAgICAgICBRdWVyeVNpbmdsZUdMSW50KGZ1bmN0aW9ucywgR0xfU0hBREVS
X1NUT1JBR0VfQlVGRkVSX09GRlNFVF9BTElHTk1FTlQpOworICAgIH0KKyAgICBlbHNlCisgICAg
eworICAgICAgICBMaW1pdFZlcnNpb24obWF4U3VwcG9ydGVkRVNWZXJzaW9uLCBnbDo6VmVyc2lv
bigzLCAwKSk7CisgICAgfQorCisgICAgaWYgKGZ1bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZl
cnNpb24oNCwgMykpIHx8IGZ1bmN0aW9ucy0+aXNBdExlYXN0R0xFUyhnbDo6VmVyc2lvbigzLCAx
KSkgfHwKKyAgICAgICAgZnVuY3Rpb25zLT5oYXNHTEV4dGVuc2lvbigiR0xfQVJCX2NvbXB1dGVf
c2hhZGVyIikpCisgICAgeworICAgICAgICBmb3IgKEdMdWludCBpbmRleCA9IDB1OyBpbmRleCA8
IDN1OyArK2luZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBjYXBzLT5tYXhDb21wdXRlV29y
a0dyb3VwQ291bnRbaW5kZXhdID0KKyAgICAgICAgICAgICAgICBRdWVyeVNpbmdsZUluZGV4R0xJ
bnQoZnVuY3Rpb25zLCBHTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX0NPVU5ULCBpbmRleCk7CisK
KyAgICAgICAgICAgIGNhcHMtPm1heENvbXB1dGVXb3JrR3JvdXBTaXplW2luZGV4XSA9CisgICAg
ICAgICAgICAgICAgUXVlcnlTaW5nbGVJbmRleEdMSW50KGZ1bmN0aW9ucywgR0xfTUFYX0NPTVBV
VEVfV09SS19HUk9VUF9TSVpFLCBpbmRleCk7CisgICAgICAgIH0KKyAgICAgICAgY2Fwcy0+bWF4
Q29tcHV0ZVdvcmtHcm91cEludm9jYXRpb25zID0KKyAgICAgICAgICAgIFF1ZXJ5U2luZ2xlR0xJ
bnQoZnVuY3Rpb25zLCBHTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX0lOVk9DQVRJT05TKTsKKyAg
ICAgICAgY2Fwcy0+bWF4Q29tcHV0ZVVuaWZvcm1CbG9ja3MgPSBRdWVyeVNpbmdsZUdMSW50KGZ1
bmN0aW9ucywgR0xfTUFYX0NPTVBVVEVfVU5JRk9STV9CTE9DS1MpOworICAgICAgICBjYXBzLT5t
YXhDb21wdXRlVGV4dHVyZUltYWdlVW5pdHMgPQorICAgICAgICAgICAgUXVlcnlTaW5nbGVHTElu
dChmdW5jdGlvbnMsIEdMX01BWF9DT01QVVRFX1RFWFRVUkVfSU1BR0VfVU5JVFMpOworICAgICAg
ICBjYXBzLT5tYXhDb21wdXRlU2hhcmVkTWVtb3J5U2l6ZSA9CisgICAgICAgICAgICBRdWVyeVNp
bmdsZUdMSW50KGZ1bmN0aW9ucywgR0xfTUFYX0NPTVBVVEVfU0hBUkVEX01FTU9SWV9TSVpFKTsK
KyAgICAgICAgY2Fwcy0+bWF4Q29tcHV0ZVVuaWZvcm1Db21wb25lbnRzID0KKyAgICAgICAgICAg
IFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9NQVhfQ09NUFVURV9VTklGT1JNX0NPTVBP
TkVOVFMpOworICAgICAgICBjYXBzLT5tYXhDb21wdXRlQXRvbWljQ291bnRlckJ1ZmZlcnMgPQor
ICAgICAgICAgICAgUXVlcnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01BWF9DT01QVVRFX0FU
T01JQ19DT1VOVEVSX0JVRkZFUlMpOworICAgICAgICBjYXBzLT5tYXhDb21wdXRlQXRvbWljQ291
bnRlcnMgPQorICAgICAgICAgICAgUXVlcnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01BWF9D
T01QVVRFX0FUT01JQ19DT1VOVEVSUyk7CisgICAgICAgIGNhcHMtPm1heENvbXB1dGVJbWFnZVVu
aWZvcm1zID0gUXVlcnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01BWF9DT01QVVRFX0lNQUdF
X1VOSUZPUk1TKTsKKyAgICAgICAgY2Fwcy0+bWF4Q29tYmluZWRDb21wdXRlVW5pZm9ybUNvbXBv
bmVudHMgPQorICAgICAgICAgICAgUXVlcnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01BWF9D
T01CSU5FRF9DT01QVVRFX1VOSUZPUk1fQ09NUE9ORU5UUyk7CisgICAgICAgIGNhcHMtPm1heENv
bXB1dGVTaGFkZXJTdG9yYWdlQmxvY2tzID0KKyAgICAgICAgICAgIFF1ZXJ5U2luZ2xlR0xJbnQo
ZnVuY3Rpb25zLCBHTF9NQVhfQ09NUFVURV9TSEFERVJfU1RPUkFHRV9CTE9DS1MpOworICAgIH0K
KyAgICBlbHNlCisgICAgeworICAgICAgICBMaW1pdFZlcnNpb24obWF4U3VwcG9ydGVkRVNWZXJz
aW9uLCBnbDo6VmVyc2lvbigzLCAwKSk7CisgICAgfQorCisgICAgaWYgKGZ1bmN0aW9ucy0+aXNB
dExlYXN0R0woZ2w6OlZlcnNpb24oNCwgMykpIHx8IGZ1bmN0aW9ucy0+aXNBdExlYXN0R0xFUyhn
bDo6VmVyc2lvbigzLCAxKSkgfHwKKyAgICAgICAgZnVuY3Rpb25zLT5oYXNHTEV4dGVuc2lvbigi
R0xfQVJCX2V4cGxpY2l0X3VuaWZvcm1fbG9jYXRpb24iKSkKKyAgICB7CisgICAgICAgIGNhcHMt
Pm1heFVuaWZvcm1Mb2NhdGlvbnMgPSBRdWVyeVNpbmdsZUdMSW50KGZ1bmN0aW9ucywgR0xfTUFY
X1VOSUZPUk1fTE9DQVRJT05TKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgTGlt
aXRWZXJzaW9uKG1heFN1cHBvcnRlZEVTVmVyc2lvbiwgZ2w6OlZlcnNpb24oMywgMCkpOworICAg
IH0KKworICAgIGlmIChmdW5jdGlvbnMtPmlzQXRMZWFzdEdMKGdsOjpWZXJzaW9uKDQsIDApKSB8
fCBmdW5jdGlvbnMtPmlzQXRMZWFzdEdMRVMoZ2w6OlZlcnNpb24oMywgMSkpIHx8CisgICAgICAg
IGZ1bmN0aW9ucy0+aGFzR0xFeHRlbnNpb24oIkdMX0FSQl90ZXh0dXJlX2dhdGhlciIpKQorICAg
IHsKKyAgICAgICAgY2Fwcy0+bWluUHJvZ3JhbVRleHR1cmVHYXRoZXJPZmZzZXQgPQorICAgICAg
ICAgICAgUXVlcnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01JTl9QUk9HUkFNX1RFWFRVUkVf
R0FUSEVSX09GRlNFVCk7CisgICAgICAgIGNhcHMtPm1heFByb2dyYW1UZXh0dXJlR2F0aGVyT2Zm
c2V0ID0KKyAgICAgICAgICAgIFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9NQVhfUFJP
R1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAg
ICAgICBMaW1pdFZlcnNpb24obWF4U3VwcG9ydGVkRVNWZXJzaW9uLCBnbDo6VmVyc2lvbigzLCAw
KSk7CisgICAgfQorCisgICAgaWYgKGZ1bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24o
NCwgMikpIHx8IGZ1bmN0aW9ucy0+aXNBdExlYXN0R0xFUyhnbDo6VmVyc2lvbigzLCAxKSkgfHwK
KyAgICAgICAgZnVuY3Rpb25zLT5oYXNHTEV4dGVuc2lvbigiR0xfQVJCX3NoYWRlcl9pbWFnZV9s
b2FkX3N0b3JlIikpCisgICAgeworICAgICAgICBjYXBzLT5tYXhWZXJ0ZXhJbWFnZVVuaWZvcm1z
ID0gUXVlcnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01BWF9WRVJURVhfSU1BR0VfVU5JRk9S
TVMpOworICAgICAgICBjYXBzLT5tYXhGcmFnbWVudEltYWdlVW5pZm9ybXMgPQorICAgICAgICAg
ICAgUXVlcnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01BWF9GUkFHTUVOVF9JTUFHRV9VTklG
T1JNUyk7CisgICAgICAgIGNhcHMtPm1heEltYWdlVW5pdHMgPSBRdWVyeVNpbmdsZUdMSW50KGZ1
bmN0aW9ucywgR0xfTUFYX0lNQUdFX1VOSVRTKTsKKyAgICAgICAgY2Fwcy0+bWF4Q29tYmluZWRJ
bWFnZVVuaWZvcm1zID0KKyAgICAgICAgICAgIFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBH
TF9NQVhfQ09NQklORURfSU1BR0VfVU5JRk9STVMpOworICAgIH0KKyAgICBlbHNlCisgICAgewor
ICAgICAgICBMaW1pdFZlcnNpb24obWF4U3VwcG9ydGVkRVNWZXJzaW9uLCBnbDo6VmVyc2lvbigz
LCAwKSk7CisgICAgfQorCisgICAgaWYgKGZ1bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNp
b24oNCwgMikpIHx8IGZ1bmN0aW9ucy0+aXNBdExlYXN0R0xFUyhnbDo6VmVyc2lvbigzLCAxKSkg
fHwKKyAgICAgICAgZnVuY3Rpb25zLT5oYXNHTEV4dGVuc2lvbigiR0xfQVJCX3NoYWRlcl9hdG9t
aWNfY291bnRlcnMiKSkKKyAgICB7CisgICAgICAgIGNhcHMtPm1heFZlcnRleEF0b21pY0NvdW50
ZXJCdWZmZXJzID0KKyAgICAgICAgICAgIFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9N
QVhfVkVSVEVYX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMpOworICAgICAgICBjYXBzLT5tYXhWZXJ0
ZXhBdG9taWNDb3VudGVycyA9IFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9NQVhfVkVS
VEVYX0FUT01JQ19DT1VOVEVSUyk7CisgICAgICAgIGNhcHMtPm1heEZyYWdtZW50QXRvbWljQ291
bnRlckJ1ZmZlcnMgPQorICAgICAgICAgICAgUXVlcnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdM
X01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTKTsKKyAgICAgICAgY2Fwcy0+bWF4
RnJhZ21lbnRBdG9taWNDb3VudGVycyA9CisgICAgICAgICAgICBRdWVyeVNpbmdsZUdMSW50KGZ1
bmN0aW9ucywgR0xfTUFYX0ZSQUdNRU5UX0FUT01JQ19DT1VOVEVSUyk7CisgICAgICAgIGNhcHMt
Pm1heEF0b21pY0NvdW50ZXJCdWZmZXJCaW5kaW5ncyA9CisgICAgICAgICAgICBRdWVyeVNpbmds
ZUdMSW50KGZ1bmN0aW9ucywgR0xfTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9CSU5ESU5HUyk7
CisgICAgICAgIGNhcHMtPm1heEF0b21pY0NvdW50ZXJCdWZmZXJTaXplID0KKyAgICAgICAgICAg
IFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9NQVhfQVRPTUlDX0NPVU5URVJfQlVGRkVS
X1NJWkUpOworICAgICAgICBjYXBzLT5tYXhDb21iaW5lZEF0b21pY0NvdW50ZXJCdWZmZXJzID0K
KyAgICAgICAgICAgIFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9NQVhfQ09NQklORURf
QVRPTUlDX0NPVU5URVJfQlVGRkVSUyk7CisgICAgICAgIGNhcHMtPm1heENvbWJpbmVkQXRvbWlj
Q291bnRlcnMgPQorICAgICAgICAgICAgUXVlcnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01B
WF9DT01CSU5FRF9BVE9NSUNfQ09VTlRFUlMpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAg
ICAgICBMaW1pdFZlcnNpb24obWF4U3VwcG9ydGVkRVNWZXJzaW9uLCBnbDo6VmVyc2lvbigzLCAw
KSk7CisgICAgfQorCiAgICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBUaGUgZ2wtdW5pZm9ybS1hcnJh
eXMgV2ViR0wgY29uZm9ybWFuY2UgdGVzdCBzdHJ1Z2dsZXMgdG8gY29tcGxldGUgb24gdGltZQog
ICAgIC8vIGlmIHRoZSBtYXggdW5pZm9ybSB2ZWN0b3JzIGlzIHRvbyBsYXJnZS4gIEFydGlmaWNp
YWxseSBsaW1pdCB0aGUgbWF4aW11bSB1bnRpbCB0aGUgdGVzdCBpcwogICAgIC8vIHVwZGF0ZWQu
CiAgICAgY2Fwcy0+bWF4VmVydGV4VW5pZm9ybVZlY3RvcnMgPSBzdGQ6Om1pbigxMDI0dSwgY2Fw
cy0+bWF4VmVydGV4VW5pZm9ybVZlY3RvcnMpOwogICAgIGNhcHMtPm1heFZlcnRleFVuaWZvcm1D
b21wb25lbnRzID0KLSAgICAgICAgc3RkOjptaW4oY2Fwcy0+bWF4VmVydGV4VW5pZm9ybVZlY3Rv
cnMgLyA0LCBjYXBzLT5tYXhWZXJ0ZXhVbmlmb3JtQ29tcG9uZW50cyk7CisgICAgICAgIHN0ZDo6
bWluKGNhcHMtPm1heFZlcnRleFVuaWZvcm1WZWN0b3JzICogNCwgY2Fwcy0+bWF4VmVydGV4VW5p
Zm9ybUNvbXBvbmVudHMpOwogICAgIGNhcHMtPm1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMgPSBz
dGQ6Om1pbigxMDI0dSwgY2Fwcy0+bWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyk7CiAgICAgY2Fw
cy0+bWF4RnJhZ21lbnRVbmlmb3JtQ29tcG9uZW50cyA9Ci0gICAgICAgIHN0ZDo6bWluKGNhcHMt
Pm1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMgLyA0LCBjYXBzLT5tYXhGcmFnbWVudFVuaWZvcm1D
b21wb25lbnRzKTsKKyAgICAgICAgc3RkOjptaW4oY2Fwcy0+bWF4RnJhZ21lbnRVbmlmb3JtVmVj
dG9ycyAqIDQsIGNhcHMtPm1heEZyYWdtZW50VW5pZm9ybUNvbXBvbmVudHMpOwogCiAgICAgLy8g
SWYgaXQgaXMgbm90IHBvc3NpYmxlIHRvIHN1cHBvcnQgcmVhZGluZyBidWZmZXIgZGF0YSBiYWNr
LCBhIHNoYWRvdyBjb3B5IG9mIHRoZSBidWZmZXJzIG11c3QKICAgICAvLyBiZSBoZWxkLiBUaGlz
IGRpc2FsbG93cyB3cml0aW5nIHRvIGJ1ZmZlcnMgaW5kaXJlY3RseSB0aHJvdWdoIHRyYW5zZm9y
bSBmZWVkYmFjaywgdGh1cwpAQCAtNTgxLDYgKzc4Myw3IEBACiAgICAgZXh0ZW5zaW9ucy0+c2V0
VGV4dHVyZUV4dGVuc2lvblN1cHBvcnQoKnRleHR1cmVDYXBzTWFwKTsKICAgICBleHRlbnNpb25z
LT5lbGVtZW50SW5kZXhVaW50ID0gZnVuY3Rpb25zLT5zdGFuZGFyZCA9PSBTVEFOREFSRF9HTF9E
RVNLVE9QIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy0+
aXNBdExlYXN0R0xFUyhnbDo6VmVyc2lvbigzLCAwKSkgfHwgZnVuY3Rpb25zLT5oYXNHTEVTRXh0
ZW5zaW9uKCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50Iik7CisgICAgZXh0ZW5zaW9ucy0+Z2V0
UHJvZ3JhbUJpbmFyeSA9IGNhcHMtPnByb2dyYW1CaW5hcnlGb3JtYXRzLnNpemUoKSA+IDA7CiAg
ICAgZXh0ZW5zaW9ucy0+cmVhZEZvcm1hdEJHUkEgPSBmdW5jdGlvbnMtPmlzQXRMZWFzdEdMKGds
OjpWZXJzaW9uKDEsIDIpKSB8fCBmdW5jdGlvbnMtPmhhc0dMRXh0ZW5zaW9uKCJHTF9FWFRfYmdy
YSIpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMtPmhhc0dM
RVNFeHRlbnNpb24oIkdMX0VYVF9yZWFkX2Zvcm1hdF9iZ3JhIik7CiAgICAgZXh0ZW5zaW9ucy0+
bWFwQnVmZmVyID0gZnVuY3Rpb25zLT5pc0F0TGVhc3RHTChnbDo6VmVyc2lvbigxLCA1KSkgfHwK
QEAgLTYzOCwxMCArODQxLDM2IEBACiAgICAgICAgICAgICBRdWVyeVF1ZXJ5VmFsdWUoZnVuY3Rp
b25zLCBHTF9USU1FU1RBTVAsIEdMX1FVRVJZX0NPVU5URVJfQklUUyk7CiAgICAgfQogCi0gICAg
Ly8gQU5HTEUgZW11bGF0ZXMgdmVydGV4IGFycmF5IG9iamVjdHMgaW4gaXRzIEdMIGxheWVyCi0g
ICAgZXh0ZW5zaW9ucy0+dmVydGV4QXJyYXlPYmplY3QgPSB0cnVlOworICAgIC8vIHRoZSBFWFRf
bXVsdGlzYW1wbGVfY29tcGF0aWJpbGl0eSBpcyB3cml0dGVuIGFnYWluc3QgRVMzLjEgYnV0IGNh
biBhcHBseQorICAgIC8vIHRvIGVhcmxpZXIgdmVyc2lvbnMgc28gdGhlcmVmb3JlIHdlJ3JlIG9u
bHkgY2hlY2tpbmcgZm9yIHRoZSBleHRlbnNpb24gc3RyaW5nCisgICAgLy8gYW5kIG5vdCB0aGUg
c3BlY2lmaWMgR0xFUyB2ZXJzaW9uLgorICAgIGV4dGVuc2lvbnMtPm11bHRpc2FtcGxlQ29tcGF0
aWJpbGl0eSA9IGZ1bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24oMSwgMykpIHx8Cisg
ICAgICAgIGZ1bmN0aW9ucy0+aGFzR0xFU0V4dGVuc2lvbigiR0xfRVhUX211bHRpc2FtcGxlX2Nv
bXBhdGliaWxpdHkiKTsKIAotICAgIGV4dGVuc2lvbnMtPm5vRXJyb3IgPSB0cnVlOworICAgIGV4
dGVuc2lvbnMtPmZyYW1lYnVmZmVyTWl4ZWRTYW1wbGVzID0KKyAgICAgICAgZnVuY3Rpb25zLT5o
YXNHTEV4dGVuc2lvbigiR0xfTlZfZnJhbWVidWZmZXJfbWl4ZWRfc2FtcGxlcyIpIHx8CisgICAg
ICAgIGZ1bmN0aW9ucy0+aGFzR0xFU0V4dGVuc2lvbigiR0xfTlZfZnJhbWVidWZmZXJfbWl4ZWRf
c2FtcGxlcyIpOworCisgICAgZXh0ZW5zaW9ucy0+cm9idXN0bmVzcyA9IGZ1bmN0aW9ucy0+aXNB
dExlYXN0R0woZ2w6OlZlcnNpb24oNCwgNSkpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZ1bmN0aW9ucy0+aGFzR0xFeHRlbnNpb24oIkdMX0tIUl9yb2J1c3RuZXNzIikgfHwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zLT5oYXNHTEV4dGVuc2lvbigiR0xf
QVJCX3JvYnVzdG5lc3MiKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlv
bnMtPmlzQXRMZWFzdEdMRVMoZ2w6OlZlcnNpb24oMywgMikpIHx8CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZ1bmN0aW9ucy0+aGFzR0xFU0V4dGVuc2lvbigiR0xfS0hSX3JvYnVzdG5l
c3MiKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMtPmhhc0dMRVNF
eHRlbnNpb24oIkdMX0VYVF9yb2J1c3RuZXNzIik7CisKKyAgICAvLyBOVl9wYXRoX3JlbmRlcmlu
ZworICAgIC8vIFdlIGFsc28gbmVlZCBpbnRlcmZhY2UgcXVlcnkgd2hpY2ggaXMgYXZhaWxhYmxl
IGluCisgICAgLy8gPj0gNC4zIGNvcmUgb3IgQVJCX2ludGVyZmFjZV9xdWVyeSBvciA+PSBHTEVT
IDMuMQorICAgIGNvbnN0IGJvb2wgY2FuRW5hYmxlR0xQYXRoUmVuZGVyaW5nID0KKyAgICAgICAg
ZnVuY3Rpb25zLT5oYXNHTEV4dGVuc2lvbigiR0xfTlZfcGF0aF9yZW5kZXJpbmciKSAmJgorICAg
ICAgICAoZnVuY3Rpb25zLT5oYXNHTEV4dGVuc2lvbigiR0xfQVJCX3Byb2dyYW1faW50ZXJmYWNl
X3F1ZXJ5IikgfHwKKyAgICAgICAgIGZ1bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24o
NCwgMykpKTsKKworICAgIGNvbnN0IGJvb2wgY2FuRW5hYmxlRVNQYXRoUmVuZGVyaW5nID0KKyAg
ICAgICAgZnVuY3Rpb25zLT5oYXNHTEVTRXh0ZW5zaW9uKCJHTF9OVl9wYXRoX3JlbmRlcmluZyIp
ICYmCisgICAgICAgIGZ1bmN0aW9ucy0+aXNBdExlYXN0R0xFUyhnbDo6VmVyc2lvbigzLCAxKSk7
CisKKyAgICBleHRlbnNpb25zLT5wYXRoUmVuZGVyaW5nID0gY2FuRW5hYmxlR0xQYXRoUmVuZGVy
aW5nIHx8IGNhbkVuYWJsZUVTUGF0aFJlbmRlcmluZzsKIH0KIAogdm9pZCBHZW5lcmF0ZVdvcmth
cm91bmRzKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIFdvcmthcm91bmRzR0wgKndvcmth
cm91bmRzKQpAQCAtNjU2LDYgKzg4NSwxMiBAQAogICAgIHdvcmthcm91bmRzLT5yZ2JhNElzTm90
U3VwcG9ydGVkRm9yQ29sb3JSZW5kZXJpbmcgPQogICAgICAgICBmdW5jdGlvbnMtPnN0YW5kYXJk
ID09IFNUQU5EQVJEX0dMX0RFU0tUT1AgJiYgdmVuZG9yID09IFZFTkRPUl9JRF9JTlRFTDsKIAor
ICAgIHdvcmthcm91bmRzLT5lbXVsYXRlQWJzSW50RnVuY3Rpb24gPSB2ZW5kb3IgPT0gVkVORE9S
X0lEX0lOVEVMOworCisgICAgd29ya2Fyb3VuZHMtPmFkZEFuZFRydWVUb0xvb3BDb25kaXRpb24g
PSB2ZW5kb3IgPT0gVkVORE9SX0lEX0lOVEVMOworCisgICAgd29ya2Fyb3VuZHMtPmVtdWxhdGVJ
c25hbkZsb2F0ID0gdmVuZG9yID09IFZFTkRPUl9JRF9JTlRFTDsKKwogICAgIHdvcmthcm91bmRz
LT5kb2VzU1JHQkNsZWFyc09uTGluZWFyRnJhbWVidWZmZXJBdHRhY2htZW50cyA9CiAgICAgICAg
IGZ1bmN0aW9ucy0+c3RhbmRhcmQgPT0gU1RBTkRBUkRfR0xfREVTS1RPUCAmJgogICAgICAgICAo
dmVuZG9yID09IFZFTkRPUl9JRF9JTlRFTCB8fCB2ZW5kb3IgPT0gVkVORE9SX0lEX0FNRCk7CkBA
IC02NjIsNiArODk3LDcgQEAKIAogI2lmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fQVBQTEUpCiAg
ICAgd29ya2Fyb3VuZHMtPmRvV2hpbGVHTFNMQ2F1c2VzR1BVSGFuZyA9IHRydWU7CisgICAgd29y
a2Fyb3VuZHMtPnVzZVVudXNlZEJsb2Nrc1dpdGhTdGFuZGFyZE9yU2hhcmVkTGF5b3V0ID0gdHJ1
ZTsKICNlbmRpZgogCiAgICAgd29ya2Fyb3VuZHMtPmZpbmlzaERvZXNOb3RDYXVzZVF1ZXJpZXNU
b0JlQXZhaWxhYmxlID0KQEAgLTY2OSw2ICs5MDUsMTkgQEAKIAogICAgIC8vIFRPRE8oY3dhbGxl
eik6IERpc2FibGUgdGhpcyB3b3JrYXJvdW5kIGZvciBNYWNPU1ggdmVyc2lvbnMgMTAuOSBvciBs
YXRlci4KICAgICB3b3JrYXJvdW5kcy0+YWx3YXlzQ2FsbFVzZVByb2dyYW1BZnRlckxpbmsgPSB0
cnVlOworCisgICAgd29ya2Fyb3VuZHMtPnVucGFja092ZXJsYXBwaW5nUm93c1NlcGFyYXRlbHlV
bnBhY2tCdWZmZXIgPSB2ZW5kb3IgPT0gVkVORE9SX0lEX05WSURJQTsKKyAgICB3b3JrYXJvdW5k
cy0+cGFja092ZXJsYXBwaW5nUm93c1NlcGFyYXRlbHlQYWNrQnVmZmVyICAgICA9IHZlbmRvciA9
PSBWRU5ET1JfSURfTlZJRElBOworCisgICAgd29ya2Fyb3VuZHMtPmluaXRpYWxpemVDdXJyZW50
VmVydGV4QXR0cmlidXRlcyA9IHZlbmRvciA9PSBWRU5ET1JfSURfTlZJRElBOworCisjaWYgZGVm
aW5lZChBTkdMRV9QTEFURk9STV9BUFBMRSkKKyAgICB3b3JrYXJvdW5kcy0+dW5wYWNrTGFzdFJv
d1NlcGFyYXRlbHlGb3JQYWRkaW5nSW5jbHVzaW9uID0gdHJ1ZTsKKyAgICB3b3JrYXJvdW5kcy0+
cGFja0xhc3RSb3dTZXBhcmF0ZWx5Rm9yUGFkZGluZ0luY2x1c2lvbiAgID0gdHJ1ZTsKKyNlbHNl
CisgICAgd29ya2Fyb3VuZHMtPnVucGFja0xhc3RSb3dTZXBhcmF0ZWx5Rm9yUGFkZGluZ0luY2x1
c2lvbiA9IHZlbmRvciA9PSBWRU5ET1JfSURfTlZJRElBOworICAgIHdvcmthcm91bmRzLT5wYWNr
TGFzdFJvd1NlcGFyYXRlbHlGb3JQYWRkaW5nSW5jbHVzaW9uICAgPSB2ZW5kb3IgPT0gVkVORE9S
X0lEX05WSURJQTsKKyNlbmRpZgogfQogCiB9CkBAIC03MjQsNCArOTczLDQ1IEBACiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIH0KKworZ2w6OkVycm9yT3JSZXN1bHQ8Ym9vbD4gU2hv
dWxkQXBwbHlMYXN0Um93UGFkZGluZ1dvcmthcm91bmQoY29uc3QgZ2w6OkV4dGVudHMgJnNpemUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6UGl4ZWxTdG9yZVN0YXRlQmFzZSAmc3RhdGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9y
bWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzM0QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwaXhl
bHMpCit7CisgICAgaWYgKHN0YXRlLnBpeGVsQnVmZmVyLmdldCgpID09IG51bGxwdHIpCisgICAg
eworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gV2UgYXJlIHVzaW5nIGFu
IHBhY2sgb3IgdW5wYWNrIGJ1ZmZlciwgY29tcHV0ZSB3aGF0IHRoZSBkcml2ZXIgdGhpbmtzIGlz
IGdvaW5nIHRvIGJlIHRoZQorICAgIC8vIGxhc3QgYnl0ZSByZWFkIG9yIHdyaXR0ZW4uIElmIGl0
IGlzIHBhc3QgdGhlIGVuZCBvZiB0aGUgYnVmZmVyLCB3ZSB3aWxsIG5lZWQgdG8gdXNlIHRoZQor
ICAgIC8vIHdvcmthcm91bmQgb3RoZXJ3aXNlIHRoZSBkcml2ZXIgd2lsbCBnZW5lcmF0ZSBJTlZB
TElEX09QRVJBVElPTiBhbmQgbm90IGRvIHRoZSBvcGVyYXRpb24uCisgICAgQ2hlY2tlZE51bWVy
aWM8c2l6ZV90PiBjaGVja2VkRW5kQnl0ZTsKKyAgICBDaGVja2VkTnVtZXJpYzxzaXplX3Q+IHBp
eGVsQnl0ZXM7CisgICAgc2l6ZV90IHJvd1BpdGNoOworCisgICAgY29uc3QgZ2w6OkludGVybmFs
Rm9ybWF0ICZnbEZvcm1hdCA9CisgICAgICAgIGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oZ2w6
OkdldFNpemVkSW50ZXJuYWxGb3JtYXQoZm9ybWF0LCB0eXBlKSk7CisgICAgQU5HTEVfVFJZX1JF
U1VMVChnbEZvcm1hdC5jb21wdXRlUGFja1VucGFja0VuZEJ5dGUodHlwZSwgc2l6ZSwgc3RhdGUs
IGlzM0QpLCBjaGVja2VkRW5kQnl0ZSk7CisgICAgQU5HTEVfVFJZX1JFU1VMVChnbEZvcm1hdC5j
b21wdXRlUm93UGl0Y2godHlwZSwgc2l6ZS53aWR0aCwgc3RhdGUuYWxpZ25tZW50LCBzdGF0ZS5y
b3dMZW5ndGgpLAorICAgICAgICAgICAgICAgICAgICAgcm93UGl0Y2gpOworICAgIHBpeGVsQnl0
ZXMgPSBnbEZvcm1hdC5jb21wdXRlUGl4ZWxCeXRlcyh0eXBlKTsKKworICAgIGNoZWNrZWRFbmRC
eXRlICs9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHBpeGVscyk7CisKKyAgICAvLyBBdCB0
aGlzIHBvaW50IGNoZWNrZWRFbmRCeXRlIGlzIHRoZSBhY3R1YWwgbGFzdCBieXRlIHJlYWQuCisg
ICAgLy8gVGhlIGRyaXZlciBhZGRzIGFuIGV4dHJhIHJvdyBwYWRkaW5nIChpZiBhbnkpLCBtaW1p
YyBpdC4KKyAgICBBTkdMRV9UUllfQ0hFQ0tFRF9NQVRIKHBpeGVsQnl0ZXMpOworICAgIGlmIChw
aXhlbEJ5dGVzLlZhbHVlT3JEaWUoKSAqIHNpemUud2lkdGggPCByb3dQaXRjaCkKKyAgICB7Cisg
ICAgICAgIGNoZWNrZWRFbmRCeXRlICs9IHJvd1BpdGNoIC0gcGl4ZWxCeXRlcyAqIHNpemUud2lk
dGg7CisgICAgfQorCisgICAgQU5HTEVfVFJZX0NIRUNLRURfTUFUSChjaGVja2VkRW5kQnl0ZSk7
CisKKyAgICByZXR1cm4gY2hlY2tlZEVuZEJ5dGUuVmFsdWVPckRpZSgpID4gc3RhdGljX2Nhc3Q8
c2l6ZV90PihzdGF0ZS5waXhlbEJ1ZmZlci0+Z2V0U2l6ZSgpKTsKIH0KK30KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9yZW5kZXJlcmdsX3V0
aWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL3JlbmRlcmVyZ2xfdXRpbHMuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3JlbmRlcmVyZ2xf
dXRpbHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTEsNiArMTEsNyBAQAogI2RlZmluZSBMSUJBTkdM
RV9SRU5ERVJFUl9HTF9SRU5ERVJFUkdMVVRJTFNfSF8KIAogI2luY2x1ZGUgImxpYkFOR0xFL2Fu
Z2xldHlwZXMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9FcnJvci5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2dsL2Z1bmN0aW9uc2dsX3R5cGVkZWZzLmgiCiAKICNpbmNsdWRlIDxzdHJp
bmc+CkBAIC00Nyw2ICs0OCwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJpdGZp
ZWxkIGFjY2Vzcyk7CisKK2dsOjpFcnJvck9yUmVzdWx0PGJvb2w+IFNob3VsZEFwcGx5TGFzdFJv
d1BhZGRpbmdXb3JrYXJvdW5kKGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OlBpeGVsU3RvcmVTdGF0ZUJhc2UgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBpczNELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKIH0KIAogI2Vu
ZGlmIC8vIExJQkFOR0xFX1JFTkRFUkVSX0dMX1JFTkRFUkVSR0xVVElMU19IXwpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EWEdJU3dh
cENoYWluV2luZG93U3VyZmFjZVdHTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EWEdJU3dhcENoYWluV2luZG93
U3VyZmFjZVdHTC5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRFhHSVN3YXBDaGFpbldpbmRvd1N1cmZh
Y2VXR0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw4IEBACiBuYW1lc3BhY2UgcngK
IHsKIAotRFhHSVN3YXBDaGFpbldpbmRvd1N1cmZhY2VXR0w6OkRYR0lTd2FwQ2hhaW5XaW5kb3dT
dXJmYWNlV0dMKFJlbmRlcmVyR0wgKnJlbmRlcmVyLAorRFhHSVN3YXBDaGFpbldpbmRvd1N1cmZh
Y2VXR0w6OkRYR0lTd2FwQ2hhaW5XaW5kb3dTdXJmYWNlV0dMKGNvbnN0IGVnbDo6U3VyZmFjZVN0
YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSZW5kZXJlckdMICpyZW5kZXJlciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xOYXRpdmVXaW5k
b3dUeXBlIHdpbmRvdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBJRDNEMTFEZXZpY2UgKmRldmljZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEUgZGV2
aWNlSGFuZGxlLApAQCAtMzEsMTAgKzMyLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRnVuY3Rpb25zR0wgKmZ1
bmN0aW9uc0dMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEZ1bmN0aW9uc1dHTCAqZnVuY3Rpb25zV0dMLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVH
TGludCBvcmllbnRhdGlvbikKLSAgICA6IFN1cmZhY2VHTChyZW5kZXJlciksCisgICAgOiBTdXJm
YWNlR0woc3RhdGUsIHJlbmRlcmVyKSwKICAgICAgIG1XaW5kb3cod2luZG93KSwKICAgICAgIG1T
dGF0ZU1hbmFnZXIocmVuZGVyZXItPmdldFN0YXRlTWFuYWdlcigpKSwKICAgICAgIG1Xb3JrYXJv
dW5kcyhyZW5kZXJlci0+Z2V0V29ya2Fyb3VuZHMoKSksCisgICAgICBtUmVuZGVyZXIocmVuZGVy
ZXIpLAogICAgICAgbUZ1bmN0aW9uc0dMKGZ1bmN0aW9uc0dMKSwKICAgICAgIG1GdW5jdGlvbnNX
R0woZnVuY3Rpb25zV0dMKSwKICAgICAgIG1EZXZpY2UoZGV2aWNlKSwKQEAgLTI4OSw5ICsyOTEs
MTAgQEAKIH0KIAogRnJhbWVidWZmZXJJbXBsICpEWEdJU3dhcENoYWluV2luZG93U3VyZmFjZVdH
TDo6Y3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKAotICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6
RGF0YSAmZGF0YSkKKyAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmZGF0YSkKIHsKLSAg
ICByZXR1cm4gbmV3IEZyYW1lYnVmZmVyR0wobUZyYW1lYnVmZmVySUQsIGRhdGEsIG1GdW5jdGlv
bnNHTCwgbVdvcmthcm91bmRzLCBtU3RhdGVNYW5hZ2VyKTsKKyAgICByZXR1cm4gbmV3IEZyYW1l
YnVmZmVyR0wobUZyYW1lYnVmZmVySUQsIGRhdGEsIG1GdW5jdGlvbnNHTCwgbVdvcmthcm91bmRz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUmVuZGVyZXItPmdldEJsaXR0ZXIoKSwg
bVN0YXRlTWFuYWdlcik7CiB9CiAKIGVnbDo6RXJyb3IgRFhHSVN3YXBDaGFpbldpbmRvd1N1cmZh
Y2VXR0w6OnNldE9iamVjdHNMb2NrZWQoYm9vbCBsb2NrZWQpCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0RYR0lTd2FwQ2hhaW5XaW5k
b3dTdXJmYWNlV0dMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EWEdJU3dhcENoYWluV2luZG93U3VyZmFjZVdHTC5o
CShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvd2dsL0RYR0lTd2FwQ2hhaW5XaW5kb3dTdXJmYWNlV0dMLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDcgKzI2LDggQEAKIGNsYXNzIERYR0lTd2FwQ2hhaW5XaW5kb3dTdXJm
YWNlV0dMIDogcHVibGljIFN1cmZhY2VHTAogewogICBwdWJsaWM6Ci0gICAgRFhHSVN3YXBDaGFp
bldpbmRvd1N1cmZhY2VXR0woUmVuZGVyZXJHTCAqcmVuZGVyZXIsCisgICAgRFhHSVN3YXBDaGFp
bldpbmRvd1N1cmZhY2VXR0woY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlcmVyR0wgKnJlbmRlcmVyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMURldmljZSAqZGV2aWNlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRSBkZXZpY2VIYW5kbGUsCkBA
IC01Myw3ICs1NCw3IEBACiAgICAgRUdMaW50IGlzUG9zdFN1YkJ1ZmZlclN1cHBvcnRlZCgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIEVHTGludCBnZXRTd2FwQmVoYXZpb3IoKSBjb25zdCBvdmVycmlk
ZTsKIAotICAgIEZyYW1lYnVmZmVySW1wbCAqY3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKGNvbnN0
IGdsOjpGcmFtZWJ1ZmZlcjo6RGF0YSAmZGF0YSkgb3ZlcnJpZGU7CisgICAgRnJhbWVidWZmZXJJ
bXBsICpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUg
JmRhdGEpIG92ZXJyaWRlOwogCiAgIHByaXZhdGU6CiAgICAgZWdsOjpFcnJvciBzZXRPYmplY3Rz
TG9ja2VkKGJvb2wgbG9ja2VkKTsKQEAgLTY1LDYgKzY2LDcgQEAKIAogICAgIFN0YXRlTWFuYWdl
ckdMICptU3RhdGVNYW5hZ2VyOwogICAgIGNvbnN0IFdvcmthcm91bmRzR0wgJm1Xb3JrYXJvdW5k
czsKKyAgICBSZW5kZXJlckdMICptUmVuZGVyZXI7CiAgICAgY29uc3QgRnVuY3Rpb25zR0wgKm1G
dW5jdGlvbnNHTDsKICAgICBjb25zdCBGdW5jdGlvbnNXR0wgKm1GdW5jdGlvbnNXR0w7CiAKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wv
RGlzcGxheVdHTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EaXNwbGF5V0dMLmNwcAkocmV2aXNpb24gMjA4MDIx
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dn
bC9EaXNwbGF5V0dMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIsNiArMTIsNyBAQAogI2luY2x1
ZGUgImxpYkFOR0xFL0NvbmZpZy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0Rpc3BsYXkuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9TdXJmYWNlLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
Z2wvUmVuZGVyZXJHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL3JlbmRlcmVy
Z2xfdXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRFhHSVN3YXBD
aGFpbldpbmRvd1N1cmZhY2VXR0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC93
Z2wvRnVuY3Rpb25zV0dMLmgiCkBAIC0xOSw2ICsyMCw4IEBACiAjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZ2wvd2dsL1dpbmRvd1N1cmZhY2VXR0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9nbC93Z2wvd2dsX3V0aWxzLmgiCiAKKyNpbmNsdWRlICJwbGF0Zm9ybS9QbGF0Zm9y
bS5oIgorCiAjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNs
dWRlIDxzc3RyZWFtPgpAQCAtNTksNiArNjIsNyBAQAogICAgICAgbU9wZW5HTE1vZHVsZShudWxs
cHRyKSwKICAgICAgIG1GdW5jdGlvbnNXR0wobnVsbHB0ciksCiAgICAgICBtRnVuY3Rpb25zR0wo
bnVsbHB0ciksCisgICAgICBtSGFzUm9idXN0bmVzcyhmYWxzZSksCiAgICAgICBtV2luZG93Q2xh
c3MoMCksCiAgICAgICBtV2luZG93KG51bGxwdHIpLAogICAgICAgbURldmljZUNvbnRleHQobnVs
bHB0ciksCkBAIC0xNzMsNiArMTc3LDkgQEAKICAgICAvLyBSZWluaXRpYWxpemUgdGhlIHdnbCBm
dW5jdGlvbnMgdG8gZ3JhYiB0aGUgZXh0ZW5zaW9ucwogICAgIG1GdW5jdGlvbnNXR0wtPmluaXRp
YWxpemUobU9wZW5HTE1vZHVsZSwgZHVtbXlEZXZpY2VDb250ZXh0KTsKIAorICAgIGJvb2wgaGFz
V0dMQ3JlYXRlQ29udGV4dFJvYnVzdG5lc3MgPQorICAgICAgICBtRnVuY3Rpb25zV0dMLT5oYXNF
eHRlbnNpb24oIldHTF9BUkJfY3JlYXRlX2NvbnRleHRfcm9idXN0bmVzcyIpOworCiAgICAgLy8g
RGVzdHJveSB0aGUgZHVtbXkgd2luZG93IGFuZCBjb250ZXh0CiAgICAgbUZ1bmN0aW9uc1dHTC0+
bWFrZUN1cnJlbnQoZHVtbXlEZXZpY2VDb250ZXh0LCBudWxscHRyKTsKICAgICBtRnVuY3Rpb25z
V0dMLT5kZWxldGVDb250ZXh0KGR1bW15V0dMQ29udGV4dCk7CkBAIC0yNTksNiArMjY2LDEyIEBA
CiAKICAgICAgICAgc3RkOjp2ZWN0b3I8aW50PiBjb250ZXh0Q3JlYXRpb25BdHRyaWJ1dGVzOwog
CisgICAgICAgIGlmIChoYXNXR0xDcmVhdGVDb250ZXh0Um9idXN0bmVzcykKKyAgICAgICAgewor
ICAgICAgICAgICAgY29udGV4dENyZWF0aW9uQXR0cmlidXRlcy5wdXNoX2JhY2soV0dMX0NPTlRF
WFRfUkVTRVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZX0FSQik7CisgICAgICAgICAgICBjb250ZXh0
Q3JlYXRpb25BdHRyaWJ1dGVzLnB1c2hfYmFjayhXR0xfTE9TRV9DT05URVhUX09OX1JFU0VUX0FS
Qik7CisgICAgICAgIH0KKwogICAgICAgICAvLyBEb24ndCByZXF1ZXN0IGEgc3BlY2lmaWMgdmVy
c2lvbiB1bmxlc3MgdGhlIHVzZXIgd2FudHMgb25lLiAgV0dMIHdpbGwgcmV0dXJuIHRoZSBoaWdo
ZXN0IHZlcnNpb24KICAgICAgICAgLy8gdGhhdCB0aGUgZHJpdmVyIHN1cHBvcnRzIGlmIG5vIHZl
cnNpb24gaXMgcmVxdWVzdGVkLgogICAgICAgICBFR0xpbnQgcmVxdWVzdGVkTWFqb3JWZXJzaW9u
ID0gc3RhdGljX2Nhc3Q8RUdMaW50PigKQEAgLTMyOSw2ICszNDIsMTQgQEAKICAgICBtRnVuY3Rp
b25zR0wgPSBuZXcgRnVuY3Rpb25zR0xXaW5kb3dzKG1PcGVuR0xNb2R1bGUsIG1GdW5jdGlvbnNX
R0wtPmdldFByb2NBZGRyZXNzKTsKICAgICBtRnVuY3Rpb25zR0wtPmluaXRpYWxpemUoKTsKIAor
ICAgIG1IYXNSb2J1c3RuZXNzID0gbUZ1bmN0aW9uc0dMLT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVz
ICE9IG51bGxwdHI7CisgICAgaWYgKGhhc1dHTENyZWF0ZUNvbnRleHRSb2J1c3RuZXNzICE9IG1I
YXNSb2J1c3RuZXNzKQorICAgIHsKKyAgICAgICAgQU5HTEVQbGF0Zm9ybUN1cnJlbnQoKS0+bG9n
V2FybmluZygKKyAgICAgICAgICAgICJXR0xfQVJCX2NyZWF0ZV9jb250ZXh0X3JvYnVzdG5lc3Mg
ZXhpc3RzIGJ1dCB1bmFibGUgdG8gT3BlbkdMIGNvbnRleHQgd2l0aCAiCisgICAgICAgICAgICAi
cm9idXN0bmVzcy4iKTsKKyAgICB9CisKICAgICAvLyBJbnRlbCBPcGVuR0wgRVMgZHJpdmVycyBh
cmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgZHVlIHRvIGJ1Z3MgaW4gdGhlIGRyaXZlciBhbmQg
QU5HTEUKICAgICBWZW5kb3JJRCB2ZW5kb3IgPSBHZXRWZW5kb3JJRChtRnVuY3Rpb25zR0wpOwog
ICAgIGlmIChyZXF1ZXN0ZWREaXNwbGF5VHlwZSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9P
UEVOR0xFU19BTkdMRSAmJiB2ZW5kb3IgPT0gVkVORE9SX0lEX0lOVEVMKQpAQCAtMzQ1LDcgKzM2
Niw5IEBACiAgICAgICAgIERXT1JEIGN1cnJlbnRQcm9jZXNzSWQgPSBHZXRDdXJyZW50UHJvY2Vz
c0lkKCk7CiAgICAgICAgIERXT1JEIHdpbmRvd1Byb2Nlc3NJZDsKICAgICAgICAgR2V0V2luZG93
VGhyZWFkUHJvY2Vzc0lkKG5hdGl2ZVdpbmRvdywgJndpbmRvd1Byb2Nlc3NJZCk7Ci0gICAgICAg
IG1Vc2VEWEdJU3dhcENoYWlucyA9IChjdXJyZW50UHJvY2Vzc0lkICE9IHdpbmRvd1Byb2Nlc3NJ
ZCk7CisKKyAgICAgICAgLy8gQU1EIGRyaXZlcnMgYWR2ZXJ0aXNlIHRoZSBXR0xfTlZfRFhfaW50
ZXJvcCBhbmQgV0dMX05WX0RYX2ludGVyb3AyIGV4dGVuc2lvbnMgYnV0IGZhaWwKKyAgICAgICAg
bVVzZURYR0lTd2FwQ2hhaW5zID0gdmVuZG9yICE9IFZFTkRPUl9JRF9BTUQgJiYgKGN1cnJlbnRQ
cm9jZXNzSWQgIT0gd2luZG93UHJvY2Vzc0lkKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKQEAg
LTQwNiw3ICs0MjksOCBAQAogICAgIEFTU0VSVChtUmVnaXN0ZXJlZEQzRERldmljZXMuZW1wdHko
KSk7CiB9CiAKLVN1cmZhY2VJbXBsICpEaXNwbGF5V0dMOjpjcmVhdGVXaW5kb3dTdXJmYWNlKGNv
bnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAorU3VyZmFjZUltcGwgKkRpc3BsYXlXR0w6
OmNyZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25m
aWcgKmNvbmZpZ3VyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJz
KQogewpAQCAtNDEzLDE4ICs0MzcsMTkgQEAKICAgICBFR0xpbnQgb3JpZW50YXRpb24gPSBzdGF0
aWNfY2FzdDxFR0xpbnQ+KGF0dHJpYnMuZ2V0KEVHTF9TVVJGQUNFX09SSUVOVEFUSU9OX0FOR0xF
LCAwKSk7CiAgICAgaWYgKG1Vc2VEWEdJU3dhcENoYWlucykKICAgICB7Ci0gICAgICAgIHJldHVy
biBuZXcgRFhHSVN3YXBDaGFpbldpbmRvd1N1cmZhY2VXR0wodGhpcy0+Z2V0UmVuZGVyZXIoKSwg
d2luZG93LCBtRDNEMTFEZXZpY2UsCisgICAgICAgIHJldHVybiBuZXcgRFhHSVN3YXBDaGFpbldp
bmRvd1N1cmZhY2VXR0woc3RhdGUsIGdldFJlbmRlcmVyKCksIHdpbmRvdywgbUQzRDExRGV2aWNl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1EM0Qx
MURldmljZUhhbmRsZSwgbVdHTENvbnRleHQsIG1EZXZpY2VDb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1GdW5jdGlvbnNHTCwgbUZ1bmN0
aW9uc1dHTCwgb3JpZW50YXRpb24pOwogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBy
ZXR1cm4gbmV3IFdpbmRvd1N1cmZhY2VXR0wodGhpcy0+Z2V0UmVuZGVyZXIoKSwgd2luZG93LCBt
UGl4ZWxGb3JtYXQsIG1XR0xDb250ZXh0LAorICAgICAgICByZXR1cm4gbmV3IFdpbmRvd1N1cmZh
Y2VXR0woc3RhdGUsIGdldFJlbmRlcmVyKCksIHdpbmRvdywgbVBpeGVsRm9ybWF0LCBtV0dMQ29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1GdW5jdGlvbnNXR0ws
IG9yaWVudGF0aW9uKTsKICAgICB9CiB9CiAKLVN1cmZhY2VJbXBsICpEaXNwbGF5V0dMOjpjcmVh
dGVQYnVmZmVyU3VyZmFjZShjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKK1N1cmZh
Y2VJbXBsICpEaXNwbGF5V0dMOjpjcmVhdGVQYnVmZmVyU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZh
Y2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0
dHJpYnMpCiB7CiAgICAgRUdMaW50IHdpZHRoICAgICAgICAgID0gc3RhdGljX2Nhc3Q8RUdMaW50
PihhdHRyaWJzLmdldChFR0xfV0lEVEgsIDApKTsKQEAgLTQzMywxMSArNDU4LDEyIEBACiAgICAg
RUdMZW51bSB0ZXh0dXJlRm9ybWF0ID0gc3RhdGljX2Nhc3Q8RUdMZW51bT4oYXR0cmlicy5nZXQo
RUdMX1RFWFRVUkVfRk9STUFULCBFR0xfTk9fVEVYVFVSRSkpOwogICAgIEVHTGVudW0gdGV4dHVy
ZVRhcmdldCA9IHN0YXRpY19jYXN0PEVHTGVudW0+KGF0dHJpYnMuZ2V0KEVHTF9URVhUVVJFX1RB
UkdFVCwgRUdMX05PX1RFWFRVUkUpKTsKIAotICAgIHJldHVybiBuZXcgUGJ1ZmZlclN1cmZhY2VX
R0wodGhpcy0+Z2V0UmVuZGVyZXIoKSwgd2lkdGgsIGhlaWdodCwgdGV4dHVyZUZvcm1hdCwgdGV4
dHVyZVRhcmdldCwKKyAgICByZXR1cm4gbmV3IFBidWZmZXJTdXJmYWNlV0dMKHN0YXRlLCBnZXRS
ZW5kZXJlcigpLCB3aWR0aCwgaGVpZ2h0LCB0ZXh0dXJlRm9ybWF0LCB0ZXh0dXJlVGFyZ2V0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFyZ2VzdCwgbVBpeGVsRm9ybWF0LCBt
RGV2aWNlQ29udGV4dCwgbVdHTENvbnRleHQsIG1GdW5jdGlvbnNXR0wpOwogfQogCi1TdXJmYWNl
SW1wbCAqRGlzcGxheVdHTDo6Y3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoY29uc3QgZWds
OjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCitTdXJmYWNlSW1wbCAqRGlzcGxheVdHTDo6Y3JlYXRl
UGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBzaGFyZUhhbmRs
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKIHsKQEAgLTQ0NSw3ICs0NzEsOCBA
QAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1TdXJmYWNlSW1wbCAqRGlzcGxheVdHTDo6Y3Jl
YXRlUGl4bWFwU3VyZmFjZShjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKK1N1cmZh
Y2VJbXBsICpEaXNwbGF5V0dMOjpjcmVhdGVQaXhtYXBTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFj
ZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTmF0aXZlUGl4bWFwVHlwZSBuYXRpdmVQaXhtYXAs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6
OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKIHsKQEAgLTQ1OSw3ICs0ODYsNyBAQAogICAgIHJldHVy
biBlZ2w6OkVycm9yKEVHTF9CQURfRElTUExBWSk7CiB9CiAKLWVnbDo6Q29uZmlnU2V0IERpc3Bs
YXlXR0w6OmdlbmVyYXRlQ29uZmlncygpIGNvbnN0CitlZ2w6OkNvbmZpZ1NldCBEaXNwbGF5V0dM
OjpnZW5lcmF0ZUNvbmZpZ3MoKQogewogICAgIGVnbDo6Q29uZmlnU2V0IGNvbmZpZ3M7CiAKQEAg
LTUzNCwyMSArNTYxLDE4IEBACiAgICAgcmV0dXJuIGNvbmZpZ3M7CiB9CiAKLWJvb2wgRGlzcGxh
eVdHTDo6aXNEZXZpY2VMb3N0KCkgY29uc3QKK2Jvb2wgRGlzcGxheVdHTDo6dGVzdERldmljZUxv
c3QoKQogewotICAgIC8vVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KKyAg
ICBpZiAobUhhc1JvYnVzdG5lc3MpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0UmVuZGVyZXIo
KS0+Z2V0UmVzZXRTdGF0dXMoKSAhPSBHTF9OT19FUlJPUjsKKyAgICB9CiAKLWJvb2wgRGlzcGxh
eVdHTDo6dGVzdERldmljZUxvc3QoKQotewotICAgIC8vVU5JTVBMRU1FTlRFRCgpOwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAogZWdsOjpFcnJvciBEaXNwbGF5V0dMOjpyZXN0b3JlTG9zdERldmlj
ZSgpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwogICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9C
QURfRElTUExBWSk7CiB9CiAKQEAgLTYxNCwxNCArNjM4LDEyIEBACiAKIHZvaWQgRGlzcGxheVdH
TDo6Z2VuZXJhdGVFeHRlbnNpb25zKGVnbDo6RGlzcGxheUV4dGVuc2lvbnMgKm91dEV4dGVuc2lv
bnMpIGNvbnN0CiB7Ci0gICAgb3V0RXh0ZW5zaW9ucy0+Y3JlYXRlQ29udGV4dCA9IHRydWU7Ci0g
ICAgb3V0RXh0ZW5zaW9ucy0+Y3JlYXRlQ29udGV4dE5vRXJyb3IgPSB0cnVlOwotCiAgICAgLy8g
T25seSBlbmFibGUgdGhlIHN1cmZhY2Ugb3JpZW50YXRpb24gIGFuZCBwb3N0IHN1YiBidWZmZXIg
Zm9yIERYR0kgc3dhcCBjaGFpbiBzdXJmYWNlcywgdGhleQotICAgIC8vIHByZWZlciB0byBzd2Fw
IHdpdGgKLSAgICAvLyBpbnZlcnRlZCBZLgorICAgIC8vIHByZWZlciB0byBzd2FwIHdpdGggaW52
ZXJ0ZWQgWS4KICAgICBvdXRFeHRlbnNpb25zLT5wb3N0U3ViQnVmZmVyICAgICAgPSBtVXNlRFhH
SVN3YXBDaGFpbnM7CiAgICAgb3V0RXh0ZW5zaW9ucy0+c3VyZmFjZU9yaWVudGF0aW9uID0gbVVz
ZURYR0lTd2FwQ2hhaW5zOworCisgICAgb3V0RXh0ZW5zaW9ucy0+Y3JlYXRlQ29udGV4dFJvYnVz
dG5lc3MgPSBtSGFzUm9idXN0bmVzczsKIH0KIAogdm9pZCBEaXNwbGF5V0dMOjpnZW5lcmF0ZUNh
cHMoZWdsOjpDYXBzICpvdXRDYXBzKSBjb25zdApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EaXNwbGF5V0dMLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9E
aXNwbGF5V0dMLmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRGlzcGxheVdHTC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCwyMSArMjgsMjQgQEAKICAgICB2b2lkIHRlcm1pbmF0ZSgpIG92ZXJyaWRlOwogCiAg
ICAgLy8gU3VyZmFjZSBjcmVhdGlvbgotICAgIFN1cmZhY2VJbXBsICpjcmVhdGVXaW5kb3dTdXJm
YWNlKGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAorICAgIFN1cmZhY2VJbXBsICpj
cmVhdGVXaW5kb3dTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmln
dXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xOYXRpdmVX
aW5kb3dUeXBlIHdpbmRvdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7Ci0gICAgU3VyZmFjZUlt
cGwgKmNyZWF0ZVBidWZmZXJTdXJmYWNlKGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9u
LAorICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQYnVmZmVyU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZh
Y2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7
Ci0gICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNvbnN0IGVn
bDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAorICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQYnVmZmVy
RnJvbUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmln
ICpjb25maWd1cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFR0xDbGllbnRCdWZmZXIgc2hhcmVIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRy
aWJzKSBvdmVycmlkZTsKLSAgICBTdXJmYWNlSW1wbCAqY3JlYXRlUGl4bWFwU3VyZmFjZShjb25z
dCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKKyAgICBTdXJmYWNlSW1wbCAqY3JlYXRlUGl4
bWFwU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmF0aXZlUGl4bWFwVHlwZSBu
YXRpdmVQaXhtYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
ZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOwogCi0gICAgZWdsOjpDb25maWdT
ZXQgZ2VuZXJhdGVDb25maWdzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgZWdsOjpDb25maWdTZXQg
Z2VuZXJhdGVDb25maWdzKCkgb3ZlcnJpZGU7CiAKLSAgICBib29sIGlzRGV2aWNlTG9zdCgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIGJvb2wgdGVzdERldmljZUxvc3QoKSBvdmVycmlkZTsKICAgICBl
Z2w6OkVycm9yIHJlc3RvcmVMb3N0RGV2aWNlKCkgb3ZlcnJpZGU7CiAKQEAgLTc1LDYgKzc4LDgg
QEAKICAgICBGdW5jdGlvbnNXR0wgKm1GdW5jdGlvbnNXR0w7CiAgICAgRnVuY3Rpb25zR0wgKm1G
dW5jdGlvbnNHTDsKIAorICAgIGJvb2wgbUhhc1JvYnVzdG5lc3M7CisKICAgICBBVE9NIG1XaW5k
b3dDbGFzczsKICAgICBIV05EIG1XaW5kb3c7CiAgICAgSERDIG1EZXZpY2VDb250ZXh0OwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9Q
YnVmZmVyU3VyZmFjZVdHTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9QYnVmZmVyU3VyZmFjZVdHTC5jcHAJKHJl
dmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC93Z2wvUGJ1ZmZlclN1cmZhY2VXR0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
Niw3ICsxNiw4IEBACiBuYW1lc3BhY2UgcngKIHsKIAotUGJ1ZmZlclN1cmZhY2VXR0w6OlBidWZm
ZXJTdXJmYWNlV0dMKFJlbmRlcmVyR0wgKnJlbmRlcmVyLAorUGJ1ZmZlclN1cmZhY2VXR0w6OlBi
dWZmZXJTdXJmYWNlV0dMKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJlckdMICpyZW5kZXJlciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgd2lkdGgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGhlaWdodCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFR0xlbnVtIHRleHR1cmVGb3JtYXQsCkBAIC0yNiw3ICsy
Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSERDIGRldmljZUNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEdMUkMgd2dsQ29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGdW5jdGlv
bnNXR0wgKmZ1bmN0aW9ucykKLSAgICA6IFN1cmZhY2VHTChyZW5kZXJlciksCisgICAgOiBTdXJm
YWNlR0woc3RhdGUsIHJlbmRlcmVyKSwKICAgICAgIG1XaWR0aCh3aWR0aCksCiAgICAgICBtSGVp
Z2h0KGhlaWdodCksCiAgICAgICBtTGFyZ2VzdChsYXJnZXN0KSwKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvUGJ1ZmZlclN1cmZhY2VX
R0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvd2dsL1BidWZmZXJTdXJmYWNlV0dMLmgJKHJldmlzaW9uIDIwODAyMSkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvUGJ1
ZmZlclN1cmZhY2VXR0wuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsOCBAQAogY2xhc3Mg
UGJ1ZmZlclN1cmZhY2VXR0wgOiBwdWJsaWMgU3VyZmFjZUdMCiB7CiAgIHB1YmxpYzoKLSAgICBQ
YnVmZmVyU3VyZmFjZVdHTChSZW5kZXJlckdMICpyZW5kZXJlciwKKyAgICBQYnVmZmVyU3VyZmFj
ZVdHTChjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAg
ICAgUmVuZGVyZXJHTCAqcmVuZGVyZXIsCiAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IHdp
ZHRoLAogICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBoZWlnaHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgRUdMZW51bSB0ZXh0dXJlRm9ybWF0LApJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9XaW5kb3dTdXJmYWNlV0dMLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvd2dsL1dpbmRvd1N1cmZhY2VXR0wuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL1dpbmRvd1N1
cmZhY2VXR0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNiwxMyArMTYsMTQgQEAKIG5hbWVzcGFj
ZSByeAogewogCi1XaW5kb3dTdXJmYWNlV0dMOjpXaW5kb3dTdXJmYWNlV0dMKFJlbmRlcmVyR0wg
KnJlbmRlcmVyLAorV2luZG93U3VyZmFjZVdHTDo6V2luZG93U3VyZmFjZVdHTChjb25zdCBlZ2w6
OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJlbmRlcmVyR0wgKnJlbmRlcmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IHBpeGVsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBIR0xSQyB3Z2xDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBGdW5jdGlvbnNXR0wgKmZ1bmN0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRUdMaW50IG9yaWVudGF0aW9uKQotICAgIDogU3VyZmFjZUdMKHJlbmRlcmVy
KSwKKyAgICA6IFN1cmZhY2VHTChzdGF0ZSwgcmVuZGVyZXIpLAogICAgICAgbVBpeGVsRm9ybWF0
KHBpeGVsRm9ybWF0KSwKICAgICAgIG1XR0xDb250ZXh0KHdnbENvbnRleHQpLAogICAgICAgbVdp
bmRvdyh3aW5kb3cpLApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL3dnbC9XaW5kb3dTdXJmYWNlV0dMLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9XaW5kb3dTdXJm
YWNlV0dMLmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvV2luZG93U3VyZmFjZVdHTC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMSw3ICsyMSw4IEBACiBjbGFzcyBXaW5kb3dTdXJmYWNlV0dMIDogcHVibGljIFN1
cmZhY2VHTAogewogICBwdWJsaWM6Ci0gICAgV2luZG93U3VyZmFjZVdHTChSZW5kZXJlckdMICpy
ZW5kZXJlciwKKyAgICBXaW5kb3dTdXJmYWNlV0dMKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZz
dGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgIFJlbmRlcmVyR0wgKnJlbmRlcmVyLAogICAgICAg
ICAgICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCiAgICAgICAgICAgICAg
ICAgICAgICBpbnQgcGl4ZWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICBIR0xSQyB3Z2xD
b250ZXh0LApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2xvYWRfZnVuY3Rpb25zX2RhdGEuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbG9hZF9mdW5jdGlvbnNfZGF0YS5qc29u
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9sb2FkX2Z1bmN0aW9uc19kYXRhLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw1NjIgQEAKK3sKKyAgIkdMX1JHOF9TTk9STSI6IHsKKyAgICAiUjhHOF9TTk9STSI6IHsKKyAg
ICAgICJHTF9CWVRFIjogIkxvYWRUb05hdGl2ZTxHTGJ5dGUsIDI+IgorICAgIH0KKyAgfSwKKyAg
IkdMX1NSR0I4IjogeworICAgICJSOEc4QjhBOF9VTk9STV9TUkdCIjogeworICAgICAgIkdMX1VO
U0lHTkVEX0JZVEUiOiAiTG9hZFRvTmF0aXZlM1RvNDxHTHVieXRlLCAweEZGPiIKKyAgICB9Cisg
IH0sCisgICJHTF9SR0JBOEkiOiB7CisgICAgIlI4RzhCOEE4X1NJTlQiOiB7CisgICAgICAiR0xf
QllURSI6ICJMb2FkVG9OYXRpdmU8R0xieXRlLCA0PiIKKyAgICB9CisgIH0sCisgICJHTF9SOF9T
Tk9STSI6IHsKKyAgICAiUjhfU05PUk0iOiB7CisgICAgICAiR0xfQllURSI6ICJMb2FkVG9OYXRp
dmU8R0xieXRlLCAxPiIKKyAgICB9CisgIH0sCisgICJHTF9SR0JBOF9TTk9STSI6IHsKKyAgICAi
UjhHOEI4QThfU05PUk0iOiB7CisgICAgICAiR0xfQllURSI6ICJMb2FkVG9OYXRpdmU8R0xieXRl
LCA0PiIKKyAgICB9CisgIH0sCisgICJHTF9SMTZJIjogeworICAgICJSMTZfU0lOVCI6IHsKKyAg
ICAgICJHTF9TSE9SVCI6ICJMb2FkVG9OYXRpdmU8R0xzaG9ydCwgMT4iCisgICAgfQorICB9LAor
ICAiR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMiOiB7CisgICAgIlI4RzhCOEE4
X1VOT1JNX1NSR0IiOiB7CisgICAgICAiR0xfVU5TSUdORURfQllURSI6ICJMb2FkRVRDMlNSR0JB
OFRvU1JHQkE4IgorICAgIH0KKyAgfSwKKyAgIkdMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9V
R0hfQUxQSEExX0VUQzIiOiB7CisgICAgIlI4RzhCOEE4X1VOT1JNIjogeworICAgICAgIkdMX1VO
U0lHTkVEX0JZVEUiOiAiTG9hZEVUQzJSR0I4QTFUb1JHQkE4IgorICAgIH0KKyAgfSwKKyAgIkdM
X1JHQjMyVUkiOiB7CisgICAgIlIzMkczMkIzMkEzMl9VSU5UIjogeworICAgICAgIkdMX1VOU0lH
TkVEX0lOVCI6ICJMb2FkVG9OYXRpdmUzVG80PEdMdWludCwgMHgwMDAwMDAwMT4iCisgICAgfQor
ICB9LAorICAiR0xfQUxQSEEzMkZfRVhUIjogeworICAgICJOT05FIjogeworICAgICAgIkdMX0ZM
T0FUIjogIkxvYWRBMzJGVG9SR0JBMzJGIgorICAgIH0KKyAgfSwKKyAgIkdMX1IxNlVJIjogewor
ICAgICJSMTZfVUlOVCI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9TSE9SVCI6ICJMb2FkVG9OYXRp
dmU8R0x1c2hvcnQsIDE+IgorICAgIH0KKyAgfSwKKyAgIkdMX1JHQjlfRTUiOiB7CisgICAgIlI5
RzlCOUU1X1NIQVJFREVYUCI6IHsKKyAgICAgICJHTF9IQUxGX0ZMT0FUIjogIkxvYWRSR0IxNkZU
b1JHQjlFNSIsCisgICAgICAiR0xfVU5TSUdORURfSU5UXzVfOV85XzlfUkVWIjogIkxvYWRUb05h
dGl2ZTxHTHVpbnQsIDE+IiwKKyAgICAgICJHTF9GTE9BVCI6ICJMb2FkUkdCMzJGVG9SR0I5RTUi
LAorICAgICAgIkdMX0hBTEZfRkxPQVRfT0VTIjogIkxvYWRSR0IxNkZUb1JHQjlFNSIKKyAgICB9
CisgIH0sCisgICJHTF9DT01QUkVTU0VEX1IxMV9FQUMiOiB7CisgICAgIlI4X1VOT1JNIjogewor
ICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiTG9hZEVBQ1IxMVRvUjgiCisgICAgfQorICB9LAor
ICAiR0xfUkdCQTMyVUkiOiB7CisgICAgIlIzMkczMkIzMkEzMl9VSU5UIjogeworICAgICAgIkdM
X1VOU0lHTkVEX0lOVCI6ICJMb2FkVG9OYXRpdmU8R0x1aW50LCA0PiIKKyAgICB9CisgIH0sCisg
ICJHTF9SRzhVSSI6IHsKKyAgICAiUjhHOF9VSU5UIjogeworICAgICAgIkdMX1VOU0lHTkVEX0JZ
VEUiOiAiTG9hZFRvTmF0aXZlPEdMdWJ5dGUsIDI+IgorICAgIH0KKyAgfSwKKyAgIkdMX0xVTUlO
QU5DRTMyRl9FWFQiOiB7CisgICAgIk5PTkUiOiB7CisgICAgICAiR0xfRkxPQVQiOiAiTG9hZEwz
MkZUb1JHQkEzMkYiCisgICAgfQorICB9LAorICAiR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRI
Uk9VR0hfQUxQSEExX0VUQzIiOiB7CisgICAgIlI4RzhCOEE4X1VOT1JNX1NSR0IiOiB7CisgICAg
ICAiR0xfVU5TSUdORURfQllURSI6ICJMb2FkRVRDMlNSR0I4QTFUb1JHQkE4IgorICAgIH0KKyAg
fSwKKyAgIkdMX1IxNkYiOiB7CisgICAgIlIxNl9GTE9BVCI6IHsKKyAgICAgICJHTF9IQUxGX0ZM
T0FUIjogIkxvYWRUb05hdGl2ZTxHTGhhbGYsIDE+IiwKKyAgICAgICJHTF9GTE9BVCI6ICJMb2Fk
MzJGVG8xNkY8MT4iLAorICAgICAgIkdMX0hBTEZfRkxPQVRfT0VTIjogIkxvYWRUb05hdGl2ZTxH
TGhhbGYsIDE+IgorICAgIH0KKyAgfSwKKyAgIkdMX1JHQkE4VUkiOiB7CisgICAgIlI4RzhCOEE4
X1VJTlQiOiB7CisgICAgICAiR0xfVU5TSUdORURfQllURSI6ICJMb2FkVG9OYXRpdmU8R0x1Ynl0
ZSwgND4iCisgICAgfQorICB9LAorICAiR0xfQkdSQTRfQU5HTEVYIjogeworICAgICJOT05FIjog
eworICAgICAgIkdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzRfUkVWX0VYVCI6ICJMb2FkUkdCQTRU
b1JHQkE4IiwKKyAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkxvYWRUb05hdGl2ZTxHTHVieXRl
LCA0PiIKKyAgICB9CisgIH0sCisgICJHTF9SR0JBMTZGIjogeworICAgICJSMTZHMTZCMTZBMTZf
RkxPQVQiOiB7CisgICAgICAiR0xfSEFMRl9GTE9BVCI6ICJMb2FkVG9OYXRpdmU8R0xoYWxmLCA0
PiIsCisgICAgICAiR0xfRkxPQVQiOiAiTG9hZDMyRlRvMTZGPDQ+IiwKKyAgICAgICJHTF9IQUxG
X0ZMT0FUX09FUyI6ICJMb2FkVG9OYXRpdmU8R0xoYWxmLCA0PiIKKyAgICB9CisgIH0sCisgICJH
TF9MVU1JTkFOQ0U4X0VYVCI6IHsKKyAgICAiTk9ORSI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9C
WVRFIjogIkxvYWRMOFRvUkdCQTgiCisgICAgfQorICB9LAorICAiR0xfQ09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUNV9BTkdMRSI6IHsKKyAgICAiTk9ORSI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9C
WVRFIjogIkxvYWRDb21wcmVzc2VkVG9OYXRpdmU8NCwgNCwgMTY+IgorICAgIH0KKyAgfSwKKyAg
IkdMX1JHQiI6IHsKKyAgICAiTk9ORSI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIlVu
cmVhY2hhYmxlTG9hZEZ1bmN0aW9uIiwKKyAgICAgICJHTF9VTlNJR05FRF9TSE9SVF81XzZfNSI6
ICJVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiIKKyAgICB9CisgIH0sCisgICJHTF9SR0I1X0ExIjog
eworICAgICJSOEc4QjhBOF9VTk9STSI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9JTlRfMl8xMF8x
MF8xMF9SRVYiOiAiTG9hZFJHQjEwQTJUb1JHQkE4IiwKKyAgICAgICJHTF9VTlNJR05FRF9CWVRF
IjogIkxvYWRUb05hdGl2ZTxHTHVieXRlLCA0PiIsCisgICAgICAiR0xfVU5TSUdORURfU0hPUlRf
NV81XzVfMSI6ICJMb2FkUkdCNUExVG9SR0JBOCIKKyAgICB9LAorICAgICJCNUc1UjVBMV9VTk9S
TSI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYiOiAiTG9hZFJHQjEw
QTJUb0JHUjVBMSIsCisgICAgICAiR0xfVU5TSUdORURfQllURSI6ICJMb2FkUkdCQThUb0JHUjVB
MSIsCisgICAgICAiR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMSI6ICJMb2FkUkdCNUExVG9BMVJH
QjUiCisgICAgfQorICB9LAorICAiR0xfUkdCMTZVSSI6IHsKKyAgICAiUjE2RzE2QjE2QTE2X1VJ
TlQiOiB7CisgICAgICAiR0xfVU5TSUdORURfU0hPUlQiOiAiTG9hZFRvTmF0aXZlM1RvNDxHTHVz
aG9ydCwgMHgwMDAxPiIKKyAgICB9CisgIH0sCisgICJHTF9CR1JBX0VYVCI6IHsKKyAgICAiTk9O
RSI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIlVucmVhY2hhYmxlTG9hZEZ1bmN0aW9u
IgorICAgIH0KKyAgfSwKKyAgIkdMX0NPTVBSRVNTRURfUkdCOF9FVEMyIjogeworICAgICJSOEc4
QjhBOF9VTk9STSI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkxvYWRFVEMyUkdCOFRv
UkdCQTgiCisgICAgfQorICB9LAorICAiR0xfUkdCQTMyRiI6IHsKKyAgICAiUjMyRzMyQjMyQTMy
X0ZMT0FUIjogeworICAgICAgIkdMX0ZMT0FUIjogIkxvYWRUb05hdGl2ZTxHTGZsb2F0LCA0PiIK
KyAgICB9CisgIH0sCisgICJHTF9SR0JBMzJJIjogeworICAgICJSMzJHMzJCMzJBMzJfU0lOVCI6
IHsKKyAgICAgICJHTF9JTlQiOiAiTG9hZFRvTmF0aXZlPEdMaW50LCA0PiIKKyAgICB9CisgIH0s
CisgICJHTF9MVU1JTkFOQ0U4X0FMUEhBOF9FWFQiOiB7CisgICAgIk5PTkUiOiB7CisgICAgICAi
R0xfVU5TSUdORURfQllURSI6ICJMb2FkTEE4VG9SR0JBOCIKKyAgICB9CisgIH0sCisgICJHTF9S
RzgiOiB7CisgICAgIlI4RzhfVU5PUk0iOiB7CisgICAgICAiR0xfVU5TSUdORURfQllURSI6ICJM
b2FkVG9OYXRpdmU8R0x1Ynl0ZSwgMj4iCisgICAgfQorICB9LAorICAiR0xfUkdCMTBfQTIiOiB7
CisgICAgIlIxMEcxMEIxMEEyX1VOT1JNIjogeworICAgICAgIkdMX1VOU0lHTkVEX0lOVF8yXzEw
XzEwXzEwX1JFViI6ICJMb2FkVG9OYXRpdmU8R0x1aW50LCAxPiIKKyAgICB9CisgIH0sCisgICJH
TF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQyI6IHsKKyAgICAiUjhHOF9TTk9STSI6IHsKKyAg
ICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkxvYWRFQUNSRzExU1RvUkc4IgorICAgIH0KKyAgfSwK
KyAgIkdMX0RFUFRIX0NPTVBPTkVOVDE2IjogeworICAgICJEMTZfVU5PUk0iOiB7CisgICAgICAi
R0xfVU5TSUdORURfSU5UIjogIkxvYWRSMzJUb1IxNiIsCisgICAgICAiR0xfVU5TSUdORURfU0hP
UlQiOiAiTG9hZFRvTmF0aXZlPEdMdXNob3J0LCAxPiIKKyAgICB9CisgIH0sCisgICJHTF9SR0Iz
MkkiOiB7CisgICAgIlIzMkczMkIzMkEzMl9TSU5UIjogeworICAgICAgIkdMX0lOVCI6ICJMb2Fk
VG9OYXRpdmUzVG80PEdMaW50LCAweDAwMDAwMDAxPiIKKyAgICB9CisgIH0sCisgICJHTF9SOCI6
IHsKKyAgICAiUjhfVU5PUk0iOiB7CisgICAgICAiR0xfVU5TSUdORURfQllURSI6ICJMb2FkVG9O
YXRpdmU8R0x1Ynl0ZSwgMT4iCisgICAgfQorICB9LAorICAiR0xfUkdCMzJGIjogeworICAgICJS
MzJHMzJCMzJBMzJfRkxPQVQiOiB7CisgICAgICAiR0xfRkxPQVQiOiAiTG9hZFRvTmF0aXZlM1Rv
NDxHTGZsb2F0LCBnbDo6RmxvYXQzMk9uZT4iCisgICAgfQorICB9LAorICAiR0xfUjExRl9HMTFG
X0IxMEYiOiB7CisgICAgIlIxMUcxMUIxMF9GTE9BVCI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9J
TlRfMTBGXzExRl8xMUZfUkVWIjogIkxvYWRUb05hdGl2ZTxHTHVpbnQsIDE+IiwKKyAgICAgICJH
TF9IQUxGX0ZMT0FUIjogIkxvYWRSR0IxNkZUb1JHMTFCMTBGIiwKKyAgICAgICJHTF9GTE9BVCI6
ICJMb2FkUkdCMzJGVG9SRzExQjEwRiIsCisgICAgICAiR0xfSEFMRl9GTE9BVF9PRVMiOiAiTG9h
ZFJHQjE2RlRvUkcxMUIxMEYiCisgICAgfQorICB9LAorICAiR0xfUkdCOCI6IHsKKyAgICAiUjhH
OEI4QThfVU5PUk0iOiB7CisgICAgICAiR0xfVU5TSUdORURfQllURSI6ICJMb2FkVG9OYXRpdmUz
VG80PEdMdWJ5dGUsIDB4RkY+IgorICAgIH0KKyAgfSwKKyAgIkdMX0xVTUlOQU5DRV9BTFBIQSI6
IHsKKyAgICAiUjE2RzE2QjE2QTE2X0ZMT0FUIjogeworICAgICAgIkdMX0hBTEZfRkxPQVQiOiAi
TG9hZExBMTZGVG9SR0JBMTZGIiwKKyAgICAgICJHTF9IQUxGX0ZMT0FUX09FUyI6ICJMb2FkTEEx
NkZUb1JHQkExNkYiCisgICAgfSwKKyAgICAiTk9ORSI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9C
WVRFIjogIlVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uIgorICAgIH0sCisgICAgIlIzMkczMkIzMkEz
Ml9GTE9BVCI6IHsKKyAgICAgICJHTF9GTE9BVCI6ICJMb2FkTEEzMkZUb1JHQkEzMkYiCisgICAg
fQorICB9LAorICAiR0xfUkdCQTE2SSI6IHsKKyAgICAiUjE2RzE2QjE2QTE2X1NJTlQiOiB7Cisg
ICAgICAiR0xfU0hPUlQiOiAiTG9hZFRvTmF0aXZlPEdMc2hvcnQsIDQ+IgorICAgIH0KKyAgfSwK
KyAgIkdMX1I4SSI6IHsKKyAgICAiUjhfU0lOVCI6IHsKKyAgICAgICJHTF9CWVRFIjogIkxvYWRU
b05hdGl2ZTxHTGJ5dGUsIDE+IgorICAgIH0KKyAgfSwKKyAgIkdMX1JHQjhfU05PUk0iOiB7Cisg
ICAgIlI4RzhCOEE4X1NOT1JNIjogeworICAgICAgIkdMX0JZVEUiOiAiTG9hZFRvTmF0aXZlM1Rv
NDxHTGJ5dGUsIDB4N0Y+IgorICAgIH0KKyAgfSwKKyAgIkdMX1JHMzJGIjogeworICAgICJSMzJH
MzJfRkxPQVQiOiB7CisgICAgICAiR0xfRkxPQVQiOiAiTG9hZFRvTmF0aXZlPEdMZmxvYXQsIDI+
IgorICAgIH0KKyAgfSwKKyAgIkdMX0RFUFRIX0NPTVBPTkVOVDMyRiI6IHsKKyAgICAiRDMyX0ZM
T0FUIjogeworICAgICAgIkdMX0ZMT0FUIjogIkxvYWREMzJGVG9EMzJGIgorICAgIH0KKyAgfSwK
KyAgIkdMX1JHMzJJIjogeworICAgICJSMzJHMzJfU0lOVCI6IHsKKyAgICAgICJHTF9JTlQiOiAi
TG9hZFRvTmF0aXZlPEdMaW50LCAyPiIKKyAgICB9CisgIH0sCisgICJHTF9BTFBIQThfRVhUIjog
eworICAgICJBOF9VTk9STSI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkxvYWRUb05h
dGl2ZTxHTHVieXRlLCAxPiIKKyAgICB9LAorICAgICJSOEc4QjhBOF9VTk9STSI6IHsKKyAgICAg
ICJHTF9VTlNJR05FRF9CWVRFIjogIkxvYWRBOFRvUkdCQTgiCisgICAgfQorICB9LAorICAiR0xf
UkczMlVJIjogeworICAgICJSMzJHMzJfVUlOVCI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9JTlQi
OiAiTG9hZFRvTmF0aXZlPEdMdWludCwgMj4iCisgICAgfQorICB9LAorICAiR0xfUkdCQTE2VUki
OiB7CisgICAgIlIxNkcxNkIxNkExNl9VSU5UIjogeworICAgICAgIkdMX1VOU0lHTkVEX1NIT1JU
IjogIkxvYWRUb05hdGl2ZTxHTHVzaG9ydCwgND4iCisgICAgfQorICB9LAorICAiR0xfQ09NUFJF
U1NFRF9SR0JBOF9FVEMyX0VBQyI6IHsKKyAgICAiUjhHOEI4QThfVU5PUk0iOiB7CisgICAgICAi
R0xfVU5TSUdORURfQllURSI6ICJMb2FkRVRDMlJHQkE4VG9SR0JBOCIKKyAgICB9CisgIH0sCisg
ICJHTF9SR0I4SSI6IHsKKyAgICAiUjhHOEI4QThfU0lOVCI6IHsKKyAgICAgICJHTF9CWVRFIjog
IkxvYWRUb05hdGl2ZTNUbzQ8R0xieXRlLCAweDAxPiIKKyAgICB9CisgIH0sCisgICJHTF9DT01Q
UkVTU0VEX1NSR0I4X0VUQzIiOiB7CisgICAgIlI4RzhCOEE4X1VOT1JNX1NSR0IiOiB7CisgICAg
ICAiR0xfVU5TSUdORURfQllURSI6ICJMb2FkRVRDMlNSR0I4VG9SR0JBOCIKKyAgICB9CisgIH0s
CisgICJHTF9ERVBUSDMyRl9TVEVOQ0lMOCI6IHsKKyAgICAiRDMyX0ZMT0FUX1M4WDI0X1VJTlQi
OiB7CisgICAgICAiR0xfRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWIjogIkxvYWREMzJG
UzhYMjRUb0QzMkZTOFgyNCIKKyAgICB9CisgIH0sCisgICJHTF9SRzhJIjogeworICAgICJSOEc4
X1NJTlQiOiB7CisgICAgICAiR0xfQllURSI6ICJMb2FkVG9OYXRpdmU8R0xieXRlLCAyPiIKKyAg
ICB9CisgIH0sCisgICJHTF9SMzJVSSI6IHsKKyAgICAiUjMyX1VJTlQiOiB7CisgICAgICAiR0xf
VU5TSUdORURfSU5UIjogIkxvYWRUb05hdGl2ZTxHTHVpbnQsIDE+IgorICAgIH0KKyAgfSwKKyAg
IkdMX0JHUjVfQTFfQU5HTEVYIjogeworICAgICJOT05FIjogeworICAgICAgIkdMX1VOU0lHTkVE
X0JZVEUiOiAiTG9hZFRvTmF0aXZlPEdMdWJ5dGUsIDQ+IiwKKyAgICAgICJHTF9VTlNJR05FRF9T
SE9SVF8xXzVfNV81X1JFVl9FWFQiOiAiTG9hZFJHQjVBMVRvUkdCQTgiCisgICAgfQorICB9LAor
ICAiR0xfQkdSNTY1X0FOR0xFWCI6IHsKKyAgICAiQjVHNlI1X1VOT1JNIjogeworICAgICAgIkdM
X1VOU0lHTkVEX1NIT1JUXzVfNl81IjogIkxvYWRSR0I1NjVUb0JHUjU2NSIsCisgICAgICAiR0xf
VU5TSUdORURfQllURSI6ICJMb2FkVG9OYXRpdmU8R0x1c2hvcnQsIDE+IgorICAgIH0KKyAgfSwK
KyAgIkdMX0NPTVBSRVNTRURfUkcxMV9FQUMiOiB7CisgICAgIlI4RzhfVU5PUk0iOiB7CisgICAg
ICAiR0xfVU5TSUdORURfQllURSI6ICJMb2FkRUFDUkcxMVRvUkc4IgorICAgIH0KKyAgfSwKKyAg
IkdMX1NSR0I4X0FMUEhBOCI6IHsKKyAgICAiUjhHOEI4QThfVU5PUk1fU1JHQiI6IHsKKyAgICAg
ICJHTF9VTlNJR05FRF9CWVRFIjogIkxvYWRUb05hdGl2ZTxHTHVieXRlLCA0PiIKKyAgICB9Cisg
IH0sCisgICJHTF9MVU1JTkFOQ0VfQUxQSEExNkZfRVhUIjogeworICAgICJOT05FIjogeworICAg
ICAgIkdMX0hBTEZfRkxPQVQiOiAiTG9hZExBMTZGVG9SR0JBMTZGIiwKKyAgICAgICJHTF9IQUxG
X0ZMT0FUX09FUyI6ICJMb2FkTEExNkZUb1JHQkExNkYiCisgICAgfQorICB9LAorICAiR0xfUkdC
QSI6IHsKKyAgICAiTk9ORSI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIlVucmVhY2hh
YmxlTG9hZEZ1bmN0aW9uIiwKKyAgICAgICJHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80IjogIlVu
cmVhY2hhYmxlTG9hZEZ1bmN0aW9uIiwKKyAgICAgICJHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8x
IjogIlVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uIgorICAgIH0KKyAgfSwKKyAgIkdMX0RFUFRIMjRf
U1RFTkNJTDgiOiB7CisgICAgIkQyNF9VTk9STV9TOF9VSU5UIjogeworICAgICAgIkdMX1VOU0lH
TkVEX0lOVF8yNF84IjogIkxvYWRSMzJUb1IyNEc4IgorICAgIH0KKyAgfSwKKyAgIkdMX1JHQjE2
SSI6IHsKKyAgICAiUjE2RzE2QjE2QTE2X1NJTlQiOiB7CisgICAgICAiR0xfU0hPUlQiOiAiTG9h
ZFRvTmF0aXZlM1RvNDxHTHNob3J0LCAweDAwMDE+IgorICAgIH0KKyAgfSwKKyAgIkdMX1I4VUki
OiB7CisgICAgIlI4X1VJTlQiOiB7CisgICAgICAiR0xfVU5TSUdORURfQllURSI6ICJMb2FkVG9O
YXRpdmU8R0x1Ynl0ZSwgMT4iCisgICAgfQorICB9LAorICAiR0xfQUxQSEEiOiB7CisgICAgIlIx
NkcxNkIxNkExNl9GTE9BVCI6IHsKKyAgICAgICJHTF9IQUxGX0ZMT0FUIjogIkxvYWRBMTZGVG9S
R0JBMTZGIiwKKyAgICAgICJHTF9IQUxGX0ZMT0FUX09FUyI6ICJMb2FkQTE2RlRvUkdCQTE2RiIK
KyAgICB9LAorICAgICJOT05FIjogeworICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiVW5yZWFj
aGFibGVMb2FkRnVuY3Rpb24iCisgICAgfSwKKyAgICAiUjMyRzMyQjMyQTMyX0ZMT0FUIjogewor
ICAgICAgIkdMX0ZMT0FUIjogIkxvYWRBMzJGVG9SR0JBMzJGIgorICAgIH0KKyAgfSwKKyAgIkdM
X1JHQjE2RiI6IHsKKyAgICAiUjE2RzE2QjE2QTE2X0ZMT0FUIjogeworICAgICAgIkdMX0hBTEZf
RkxPQVQiOiAiTG9hZFRvTmF0aXZlM1RvNDxHTGhhbGYsIGdsOjpGbG9hdDE2T25lPiIsCisgICAg
ICAiR0xfRkxPQVQiOiAiTG9hZFJHQjMyRlRvUkdCQTE2RiIsCisgICAgICAiR0xfSEFMRl9GTE9B
VF9PRVMiOiAiTG9hZFRvTmF0aXZlM1RvNDxHTGhhbGYsIGdsOjpGbG9hdDE2T25lPiIKKyAgICB9
CisgIH0sCisgICJHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDIjogeworICAgICJSOF9TTk9S
TSI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkxvYWRFQUNSMTFTVG9SOCIKKyAgICB9
CisgIH0sCisgICJHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUIjogeworICAgICJOT05F
IjogeworICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiTG9hZENvbXByZXNzZWRUb05hdGl2ZTw0
LCA0LCA4PiIKKyAgICB9CisgIH0sCisgICJHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VY
VCI6IHsKKyAgICAiTk9ORSI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkxvYWRDb21w
cmVzc2VkVG9OYXRpdmU8NCwgNCwgOD4iCisgICAgfQorICB9LAorICAiR0xfU1RFTkNJTF9JTkRF
WDgiOiB7CisgICAgIk5PTkUiOiB7CisgICAgICAiR0xfVU5TSUdORURfQllURSI6ICJVbmltcGxl
bWVudGVkTG9hZEZ1bmN0aW9uIgorICAgIH0KKyAgfSwKKyAgIkdMX0xVTUlOQU5DRV9BTFBIQTMy
Rl9FWFQiOiB7CisgICAgIk5PTkUiOiB7CisgICAgICAiR0xfRkxPQVQiOiAiTG9hZExBMzJGVG9S
R0JBMzJGIgorICAgIH0KKyAgfSwKKyAgIkdMX1JHQjhVSSI6IHsKKyAgICAiUjhHOEI4QThfVUlO
VCI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkxvYWRUb05hdGl2ZTNUbzQ8R0x1Ynl0
ZSwgMHgwMT4iCisgICAgfQorICB9LAorICAiR0xfREVQVEhfQ09NUE9ORU5UMjQiOiB7CisgICAg
IkQyNF9VTk9STV9TOF9VSU5UIjogeworICAgICAgIkdMX1VOU0lHTkVEX0lOVCI6ICJMb2FkUjMy
VG9SMjRHOCIKKyAgICB9CisgIH0sCisgICJHTF9SMzJJIjogeworICAgICJSMzJfU0lOVCI6IHsK
KyAgICAgICJHTF9JTlQiOiAiTG9hZFRvTmF0aXZlPEdMaW50LCAxPiIKKyAgICB9CisgIH0sCisg
ICJHTF9ERVBUSF9DT01QT05FTlQzMl9PRVMiOiB7CisgICAgIk5PTkUiOiB7CisgICAgICAiR0xf
VU5TSUdORURfSU5UIjogIkxvYWRSMzJUb1IyNEc4IgorICAgIH0KKyAgfSwKKyAgIkdMX1IzMkYi
OiB7CisgICAgIlIzMl9GTE9BVCI6IHsKKyAgICAgICJHTF9GTE9BVCI6ICJMb2FkVG9OYXRpdmU8
R0xmbG9hdCwgMT4iCisgICAgfQorICB9LAorICAiR0xfUkcxNkYiOiB7CisgICAgIlIxNkcxNl9G
TE9BVCI6IHsKKyAgICAgICJHTF9IQUxGX0ZMT0FUIjogIkxvYWRUb05hdGl2ZTxHTGhhbGYsIDI+
IiwKKyAgICAgICJHTF9GTE9BVCI6ICJMb2FkMzJGVG8xNkY8Mj4iLAorICAgICAgIkdMX0hBTEZf
RkxPQVRfT0VTIjogIkxvYWRUb05hdGl2ZTxHTGhhbGYsIDI+IgorICAgIH0KKyAgfSwKKyAgIkdM
X1JHQjU2NSI6IHsKKyAgICAiUjhHOEI4QThfVU5PUk0iOiB7CisgICAgICAiR0xfVU5TSUdORURf
QllURSI6ICJMb2FkVG9OYXRpdmUzVG80PEdMdWJ5dGUsIDB4RkY+IiwKKyAgICAgICJHTF9VTlNJ
R05FRF9TSE9SVF81XzZfNSI6ICJMb2FkUjVHNkI1VG9SR0JBOCIKKyAgICB9LAorICAgICJCNUc2
UjVfVU5PUk0iOiB7CisgICAgICAiR0xfVU5TSUdORURfQllURSI6ICJMb2FkUkdCOFRvQkdSNTY1
IiwKKyAgICAgICJHTF9VTlNJR05FRF9TSE9SVF81XzZfNSI6ICJMb2FkVG9OYXRpdmU8R0x1c2hv
cnQsIDE+IgorICAgIH0KKyAgfSwKKyAgIkdMX0xVTUlOQU5DRTE2Rl9FWFQiOiB7CisgICAgIk5P
TkUiOiB7CisgICAgICAiR0xfSEFMRl9GTE9BVCI6ICJMb2FkTDE2RlRvUkdCQTE2RiIsCisgICAg
ICAiR0xfSEFMRl9GTE9BVF9PRVMiOiAiTG9hZEwxNkZUb1JHQkExNkYiCisgICAgfQorICB9LAor
ICAiR0xfUkcxNlVJIjogeworICAgICJSMTZHMTZfVUlOVCI6IHsKKyAgICAgICJHTF9VTlNJR05F
RF9TSE9SVCI6ICJMb2FkVG9OYXRpdmU8R0x1c2hvcnQsIDI+IgorICAgIH0KKyAgfSwKKyAgIkdM
X0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEUiOiB7CisgICAgIk5PTkUiOiB7CisgICAg
ICAiR0xfVU5TSUdORURfQllURSI6ICJMb2FkQ29tcHJlc3NlZFRvTmF0aXZlPDQsIDQsIDE2PiIK
KyAgICB9CisgIH0sCisgICJHTF9SRzE2SSI6IHsKKyAgICAiUjE2RzE2X1NJTlQiOiB7CisgICAg
ICAiR0xfU0hPUlQiOiAiTG9hZFRvTmF0aXZlPEdMc2hvcnQsIDI+IgorICAgIH0KKyAgfSwKKyAg
IkdMX0JHUkE4X0VYVCI6IHsKKyAgICAiTk9ORSI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9CWVRF
IjogIkxvYWRUb05hdGl2ZTxHTHVieXRlLCA0PiIKKyAgICB9CisgIH0sCisgICJHTF9BTFBIQTE2
Rl9FWFQiOiB7CisgICAgIk5PTkUiOiB7CisgICAgICAiR0xfSEFMRl9GTE9BVCI6ICJMb2FkQTE2
RlRvUkdCQTE2RiIsCisgICAgICAiR0xfSEFMRl9GTE9BVF9PRVMiOiAiTG9hZEExNkZUb1JHQkEx
NkYiCisgICAgfQorICB9LAorICAiR0xfUkdCQTQiOiB7CisgICAgIlI4RzhCOEE4X1VOT1JNIjog
eworICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiTG9hZFRvTmF0aXZlPEdMdWJ5dGUsIDQ+IiwK
KyAgICAgICJHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80IjogIkxvYWRSR0JBNFRvUkdCQTgiCisg
ICAgfSwKKyAgICAiQjRHNFI0QTRfVU5PUk0iOiB7CisgICAgICAiR0xfVU5TSUdORURfQllURSI6
ICJMb2FkUkdCQThUb0JHUkE0IiwKKyAgICAgICJHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80Ijog
IkxvYWRSR0JBNFRvQVJHQjQiCisgICAgfQorICB9LAorICAiR0xfUkdCQTgiOiB7CisgICAgIlI4
RzhCOEE4X1VOT1JNIjogeworICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiTG9hZFRvTmF0aXZl
PEdMdWJ5dGUsIDQ+IgorICAgIH0KKyAgfSwKKyAgIkdMX0xVTUlOQU5DRSI6IHsKKyAgICAiUjE2
RzE2QjE2QTE2X0ZMT0FUIjogeworICAgICAgIkdMX0hBTEZfRkxPQVQiOiAiTG9hZEwxNkZUb1JH
QkExNkYiLAorICAgICAgIkdMX0hBTEZfRkxPQVRfT0VTIjogIkxvYWRMMTZGVG9SR0JBMTZGIgor
ICAgIH0sCisgICAgIk5PTkUiOiB7CisgICAgICAiR0xfVU5TSUdORURfQllURSI6ICJVbnJlYWNo
YWJsZUxvYWRGdW5jdGlvbiIKKyAgICB9LAorICAgICJSMzJHMzJCMzJBMzJfRkxPQVQiOiB7Cisg
ICAgICAiR0xfRkxPQVQiOiAiTG9hZEwzMkZUb1JHQkEzMkYiCisgICAgfQorICB9LAorICAiR0xf
UkdCMTBfQTJVSSI6IHsKKyAgICAiUjEwRzEwQjEwQTJfVUlOVCI6IHsKKyAgICAgICJHTF9VTlNJ
R05FRF9JTlRfMl8xMF8xMF8xMF9SRVYiOiAiTG9hZFRvTmF0aXZlPEdMdWludCwgMT4iCisgICAg
fQorICB9LAorICAiR0xfRVRDMV9SR0I4X09FUyI6IHsKKyAgICAiUjhHOEI4QThfVU5PUk0iOiB7
CisgICAgICAiR0xfVU5TSUdORURfQllURSI6ICJMb2FkRVRDMVJHQjhUb1JHQkE4IgorICAgIH0K
KyAgfSwKKyAgIkdMX0VUQzFfUkdCOF9MT1NTWV9ERUNPREVfQU5HTEUiOiB7CisgICAgIkJDMV9S
R0JfVU5PUk1fQkxPQ0siOiB7CisgICAgICAiR0xfVU5TSUdORURfQllURSI6ICJMb2FkRVRDMVJH
QjhUb0JDMSIKKyAgICB9CisgIH0sCisgICJHTF9SMTZfRVhUIjogeworICAgICJSMTZfVU5PUk0i
OiB7CisgICAgICAiR0xfVU5TSUdORURfU0hPUlQiOiAiTG9hZFRvTmF0aXZlPEdMdXNob3J0LCAx
PiIKKyAgICB9CisgIH0sCisgICJHTF9SRzE2X0VYVCI6IHsKKyAgICAiUjE2RzE2X1VOT1JNIjog
eworICAgICAgIkdMX1VOU0lHTkVEX1NIT1JUIjogIkxvYWRUb05hdGl2ZTxHTHVzaG9ydCwgMj4i
CisgICAgfQorICB9LAorICAiR0xfUkdCMTZfRVhUIjogeworICAgICJSMTZHMTZCMTZBMTZfVU5P
Uk0iOiB7CisgICAgICAiR0xfVU5TSUdORURfU0hPUlQiOiAiTG9hZFRvTmF0aXZlM1RvNDxHTHVz
aG9ydCwgMHhGRkZGPiIKKyAgICB9CisgIH0sCisgICJHTF9SR0JBMTZfRVhUIjogeworICAgICJS
MTZHMTZCMTZBMTZfVU5PUk0iOiB7CisgICAgICAiR0xfVU5TSUdORURfU0hPUlQiOiAiTG9hZFRv
TmF0aXZlPEdMdXNob3J0LCA0PiIKKyAgICB9CisgIH0sCisgICJHTF9SMTZfU05PUk1fRVhUIjog
eworICAgICJSMTZfU05PUk0iOiB7CisgICAgICAiR0xfU0hPUlQiOiAiTG9hZFRvTmF0aXZlPEdM
dXNob3J0LCAxPiIKKyAgICB9CisgIH0sCisgICJHTF9SRzE2X1NOT1JNX0VYVCI6IHsKKyAgICAi
UjE2RzE2X1NOT1JNIjogeworICAgICAgIkdMX1NIT1JUIjogIkxvYWRUb05hdGl2ZTxHTHVzaG9y
dCwgMj4iCisgICAgfQorICB9LAorICAiR0xfUkdCMTZfU05PUk1fRVhUIjogeworICAgICJSMTZH
MTZCMTZBMTZfU05PUk0iOiB7CisgICAgICAiR0xfU0hPUlQiOiAiTG9hZFRvTmF0aXZlM1RvNDxH
THVzaG9ydCwgMHg3RkZGPiIKKyAgICB9CisgIH0sCisgICJHTF9SR0JBMTZfU05PUk1fRVhUIjog
eworICAgICJSMTZHMTZCMTZBMTZfU05PUk0iOiB7CisgICAgICAiR0xfU0hPUlQiOiAiTG9hZFRv
TmF0aXZlPEdMdXNob3J0LCA0PiIKKyAgICB9CisgIH0KK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9sb2FkX2Z1bmN0aW9uc190YWJsZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9sb2FkX2Z1bmN0aW9uc190YWJsZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9sb2FkX2Z1bmN0aW9uc190YWJsZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjIgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBsb2FkX2Z1bmN0aW9u
c190YWJsZToKKy8vICAgQ29udGFpbnMgbG9hZCBmdW5jdGlvbnMgdGFibGUgZGVwZW5kaW5nIG9u
IGludGVybmFsIGZvcm1hdCBhbmQgQU5HTEUgZm9ybWF0LgorLy8KKworI2lmbmRlZiBMSUJBTkdM
RV9SRU5ERVJFUl9MT0FERlVOQ1RJT05TVEFCTEVfSF8KKyNkZWZpbmUgTElCQU5HTEVfUkVOREVS
RVJfTE9BREZVTkNUSU9OU1RBQkxFX0hfCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9G
b3JtYXQuaCIKKworbmFtZXNwYWNlIGFuZ2xlCit7CisKK3J4OjpMb2FkRnVuY3Rpb25NYXAgR2V0
TG9hZEZ1bmN0aW9uc01hcChHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEZvcm1hdDo6SUQgYW5nbGVG
b3JtYXQpOworCit9ICAvLyBuYW1lc3BhY2UgYW5nbGUKKworI2VuZGlmICAvLyBMSUJBTkdMRV9S
RU5ERVJFUl9MT0FERlVOQ1RJT05TVEFCTEVfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9sb2FkX2Z1bmN0aW9uc190YWJsZV9hdXRvZ2VuLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvbG9hZF9mdW5jdGlvbnNfdGFibGVfYXV0b2dlbi5jcHAJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2xvYWRfZnVuY3Rp
b25zX3RhYmxlX2F1dG9nZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjMxMSBAQAor
Ly8gR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVC4KKy8vIEdlbmVyYXRlZCBieSBnZW5fbG9h
ZF9mdW5jdGlvbnNfdGFibGUucHkgdXNpbmcgZGF0YSBmcm9tIGxvYWRfZnVuY3Rpb25zX2RhdGEu
anNvbgorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKy8vIGxvYWRfZnVuY3Rpb25zX3RhYmxlOgorLy8gICBDb250YWlucyB0
aGUgR2V0TG9hZEZ1bmN0aW9uc01hcCBmb3IgdGV4dHVyZV9mb3JtYXRfdXRpbC5oCisvLworCisj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbG9hZF9mdW5jdGlvbnNfdGFibGUuaCIKKworI2lu
Y2x1ZGUgImltYWdlX3V0aWwvY29weWltYWdlLmgiCisjaW5jbHVkZSAiaW1hZ2VfdXRpbC9nZW5l
cmF0ZW1pcC5oIgorI2luY2x1ZGUgImltYWdlX3V0aWwvbG9hZGltYWdlLmgiCisKK3VzaW5nIG5h
bWVzcGFjZSByeDsKKworbmFtZXNwYWNlIGFuZ2xlCit7CisKK25hbWVzcGFjZQoreworCisvLyBF
UzMgaW1hZ2UgbG9hZGluZyBmdW5jdGlvbnMgdmFyeSBiYXNlZCBvbjoKKy8vICAgIC0gdGhlIEdM
IGludGVybmFsIGZvcm1hdCAoc3VwcGxpZWQgdG8gZ2xUZXgqSW1hZ2UqRCkKKy8vICAgIC0gdGhl
IEdMIGRhdGEgdHlwZSBnaXZlbiAoc3VwcGxpZWQgdG8gZ2xUZXgqSW1hZ2UqRCkKKy8vICAgIC0g
dGhlIHRhcmdldCBEWEdJX0ZPUk1BVCB0aGF0IHRoZSBpbWFnZSB3aWxsIGJlIGxvYWRlZCBpbnRv
ICh3aGljaCBpcyBjaG9zZW4gYmFzZWQgb24gdGhlIEQzRAorLy8gICAgZGV2aWNlJ3MgY2FwYWJp
bGl0aWVzKQorLy8gVGhpcyBtYXAgdHlwZSBkZXRlcm1pbmVzIHdoaWNoIGxvYWRpbmcgZnVuY3Rp
b24gdG8gdXNlLCBiYXNlZCBvbiB0aGVzZSB0aHJlZSBwYXJhbWV0ZXJzLgorLy8gU291cmNlIGZv
cm1hdHMgYW5kIHR5cGVzIGFyZSB0YWtlbiBmcm9tIFRhYmxlcyAzLjIgYW5kIDMuMyBvZiB0aGUg
RVMgMyBzcGVjLgordm9pZCBVbmltcGxlbWVudGVkTG9hZEZ1bmN0aW9uKHNpemVfdCB3aWR0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCit2b2lkIFVu
cmVhY2hhYmxlTG9hZEZ1bmN0aW9uKHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpp
bnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAgICBVTlJFQUNIQUJM
RSgpOworfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gQUxQSEFfdG9fUjE2RzE2QjE2QTE2X0ZM
T0FUKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNh
c2UgR0xfSEFMRl9GTE9BVDoKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8oTG9hZEExNkZUb1JHQkExNkYsIHRydWUpOworICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVRf
T0VTOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkQTE2RlRv
UkdCQTE2RiwgdHJ1ZSk7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAg
ICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24s
IHRydWUpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVu
Y3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIEFMUEhBX3Rv
X1IzMkczMkIzMkEzMl9GTE9BVChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisg
ICAgeworICAgICAgICBjYXNlIEdMX0ZMT0FUOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbyhMb2FkQTMyRlRvUkdCQTMyRiwgdHJ1ZSk7CisgICAgICAgIGNhc2UgR0xf
VU5TSUdORURfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8o
VW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlv
bkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZElt
YWdlRnVuY3Rpb25JbmZvIEFMUEhBX3RvX2RlZmF1bHQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dp
dGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAg
ICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlv
biwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRG
dW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gQUxQSEEx
NkZfRVhUX3RvX2RlZmF1bHQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAg
IHsKKyAgICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbyhMb2FkQTE2RlRvUkdCQTE2RiwgdHJ1ZSk7CisgICAgICAgIGNhc2Ug
R0xfSEFMRl9GTE9BVF9PRVM6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25J
bmZvKExvYWRBMTZGVG9SR0JBMTZGLCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25J
bmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFn
ZUZ1bmN0aW9uSW5mbyBBTFBIQTMyRl9FWFRfdG9fZGVmYXVsdChHTGVudW0gdHlwZSkKK3sKKyAg
ICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX0ZMT0FUOgorICAgICAgICAg
ICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkQTMyRlRvUkdCQTMyRiwgdHJ1ZSk7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAg
ICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwg
dHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gQUxQSEE4X0VYVF90b19B
OF9VTk9STShHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAg
ICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVu
Y3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTHVieXRlLCAxPiwgZmFsc2UpOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0K
K30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIEFMUEhBOF9FWFRfdG9fUjhHOEI4QThfVU5PUk0o
R0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBH
TF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5m
byhMb2FkQThUb1JHQkE4LCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVu
cmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0
aW9uSW5mbyBCR1I1NjVfQU5HTEVYX3RvX0I1RzZSNV9VTk9STShHTGVudW0gdHlwZSkKK3sKKyAg
ICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6Cisg
ICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTHVz
aG9ydCwgMT4sIGZhbHNlKTsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF81XzZfNToK
KyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFJHQjU2NVRvQkdS
NTY1LCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9h
ZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBCR1I1
X0ExX0FOR0xFWF90b19kZWZhdWx0KEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkK
KyAgICB7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIHJldHVy
biBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdWJ5dGUsIDQ+LCBmYWxzZSk7
CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfMV81XzVfNV9SRVZfRVhUOgorICAgICAg
ICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkUkdCNUExVG9SR0JBOCwgdHJ1
ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAg
ICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlv
biwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gQkdSQTRfQU5HTEVY
X3RvX2RlZmF1bHQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAg
ICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1Ynl0ZSwgND4sIGZhbHNlKTsKKyAgICAgICAg
Y2FzZSBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80X1JFVl9FWFQ6CisgICAgICAgICAgICByZXR1
cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRSR0JBNFRvUkdCQTgsIHRydWUpOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVy
biBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOwor
ICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIEJHUkE4X0VYVF90b19kZWZhdWx0KEdM
ZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xf
VU5TSUdORURfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8o
TG9hZFRvTmF0aXZlPEdMdWJ5dGUsIDQ+LCBmYWxzZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0
aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8gQkdSQV9FWFRfdG9fZGVmYXVsdChHTGVudW0gdHlwZSkKK3sKKyAg
ICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6Cisg
ICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1
bmN0aW9uLCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxl
TG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBD
T01QUkVTU0VEX1IxMV9FQUNfdG9fUjhfVU5PUk0oR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNo
ICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAg
ICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkRUFDUjExVG9SOCwgdHJ1ZSk7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAg
cmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1
ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gQ09NUFJFU1NFRF9SRzExX0VB
Q190b19SOEc4X1VOT1JNKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7
CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8oTG9hZEVBQ1JHMTFUb1JHOCwgdHJ1ZSk7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQor
fQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gQ09NUFJFU1NFRF9SR0I4X0VUQzJfdG9fUjhHOEI4
QThfVU5PUk0oR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1
bmN0aW9uSW5mbyhMb2FkRVRDMlJHQjhUb1JHQkE4LCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdl
RnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisK
K0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhB
MV9FVEMyX3RvX1I4RzhCOEE4X1VOT1JNKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlw
ZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIHJl
dHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZEVUQzJSR0I4QTFUb1JHQkE4LCB0cnVlKTsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAg
ICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0
cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBDT01QUkVTU0VEX1JHQkE4
X0VUQzJfRUFDX3RvX1I4RzhCOEE4X1VOT1JNKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAo
dHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAg
IHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZEVUQzJSR0JBOFRvUkdCQTgsIHRydWUp
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
ICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24s
IHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIENPTVBSRVNTRURfUkdC
QV9TM1RDX0RYVDFfRVhUX3RvX2RlZmF1bHQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0
eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAg
cmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkQ29tcHJlc3NlZFRvTmF0aXZlPDQsIDQs
IDg+LCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9h
ZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBDT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFX3RvX2RlZmF1bHQoR0xlbnVtIHR5cGUpCit7Cisg
ICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgor
ICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkQ29tcHJlc3NlZFRv
TmF0aXZlPDQsIDQsIDE2PiwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhV
bnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5j
dGlvbkluZm8gQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRV90b19kZWZhdWx0KEdMZW51
bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVU5T
SUdORURfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9h
ZENvbXByZXNzZWRUb05hdGl2ZTw0LCA0LCAxNj4sIHRydWUpOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKwor
TG9hZEltYWdlRnVuY3Rpb25JbmZvIENPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFRfdG9fZGVm
YXVsdChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBj
YXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rp
b25JbmZvKExvYWRDb21wcmVzc2VkVG9OYXRpdmU8NCwgNCwgOD4sIHRydWUpOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAg
IH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIENPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUNf
dG9fUjhfU05PUk0oR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAg
ICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbyhMb2FkRUFDUjExU1RvUjgsIHRydWUpOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKwor
TG9hZEltYWdlRnVuY3Rpb25JbmZvIENPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDX3RvX1I4Rzhf
U05PUk0oR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAg
Y2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0
aW9uSW5mbyhMb2FkRUFDUkcxMVNUb1JHOCwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0
aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8gQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUNfdG9fUjhH
OEI4QThfVU5PUk1fU1JHQihHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAg
eworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICByZXR1cm4gTG9h
ZEltYWdlRnVuY3Rpb25JbmZvKExvYWRFVEMyU1JHQkE4VG9TUkdCQTgsIHRydWUpOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVy
biBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOwor
ICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIENPTVBSRVNTRURfU1JHQjhfRVRDMl90
b19SOEc4QjhBOF9VTk9STV9TUkdCKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkK
KyAgICB7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIHJldHVy
biBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZEVUQzJTUkdCOFRvUkdCQTgsIHRydWUpOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJl
dHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUp
OworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIENPTVBSRVNTRURfU1JHQjhfUFVO
Q0hUSFJPVUdIX0FMUEhBMV9FVEMyX3RvX1I4RzhCOEE4X1VOT1JNX1NSR0IoR0xlbnVtIHR5cGUp
Cit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9C
WVRFOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkRVRDMlNS
R0I4QTFUb1JHQkE4LCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVh
Y2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9u
SW5mbyBERVBUSDI0X1NURU5DSUw4X3RvX0QyNF9VTk9STV9TOF9VSU5UKEdMZW51bSB0eXBlKQor
eworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5U
XzI0Xzg6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRSMzJU
b1IyNEc4LCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxl
TG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBE
RVBUSDMyRl9TVEVOQ0lMOF90b19EMzJfRkxPQVRfUzhYMjRfVUlOVChHTGVudW0gdHlwZSkKK3sK
KyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX0ZMT0FUXzMyX1VOU0lH
TkVEX0lOVF8yNF84X1JFVjoKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8oTG9hZEQzMkZTOFgyNFRvRDMyRlM4WDI0LCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVu
Y3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xv
YWRJbWFnZUZ1bmN0aW9uSW5mbyBERVBUSF9DT01QT05FTlQxNl90b19EMTZfVU5PUk0oR0xlbnVt
IHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJ
R05FRF9JTlQ6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRS
MzJUb1IxNiwgdHJ1ZSk7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAgICAg
ICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTHVzaG9ydCwg
MT4sIGZhbHNlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9h
ZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBERVBU
SF9DT01QT05FTlQyNF90b19EMjRfVU5PUk1fUzhfVUlOVChHTGVudW0gdHlwZSkKK3sKKyAgICBz
d2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKKyAgICAg
ICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFIzMlRvUjI0RzgsIHRydWUp
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
ICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24s
IHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIERFUFRIX0NPTVBPTkVO
VDMyRl90b19EMzJfRkxPQVQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAg
IHsKKyAgICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8oTG9hZEQzMkZUb0QzMkYsIHRydWUpOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9h
ZEltYWdlRnVuY3Rpb25JbmZvIERFUFRIX0NPTVBPTkVOVDMyX09FU190b19kZWZhdWx0KEdMZW51
bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVU5T
SUdORURfSU5UOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2Fk
UjMyVG9SMjRHOCwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNo
YWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8gRVRDMV9SR0I4X0xPU1NZX0RFQ09ERV9BTkdMRV90b19CQzFfUkdCX1VOT1JNX0JMT0NLKEdM
ZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xf
VU5TSUdORURfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8o
TG9hZEVUQzFSR0I4VG9CQzEsIHRydWUpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
VU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8o
VW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVu
Y3Rpb25JbmZvIEVUQzFfUkdCOF9PRVNfdG9fUjhHOEI4QThfVU5PUk0oR0xlbnVtIHR5cGUpCit7
CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRF
OgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkRVRDMVJHQjhU
b1JHQkE4LCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxl
TG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBM
VU1JTkFOQ0VfdG9fUjE2RzE2QjE2QTE2X0ZMT0FUKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRj
aCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVDoKKyAgICAgICAgICAg
IHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZEwxNkZUb1JHQkExNkYsIHRydWUpOwor
ICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVRfT0VTOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbyhMb2FkTDE2RlRvUkdCQTE2RiwgdHJ1ZSk7CisgICAgICAgIGNhc2Ug
R0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9h
ZEltYWdlRnVuY3Rpb25JbmZvIExVTUlOQU5DRV90b19SMzJHMzJCMzJBMzJfRkxPQVQoR0xlbnVt
IHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9GTE9B
VDoKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZEwzMkZUb1JH
QkEzMkYsIHRydWUpOworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAg
ICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0
cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAg
ICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0
aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBMVU1JTkFOQ0Vf
dG9fZGVmYXVsdChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAg
ICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdl
RnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9h
ZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9
Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBMVU1JTkFOQ0UxNkZfRVhUX3RvX2RlZmF1bHQo
R0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBH
TF9IQUxGX0ZMT0FUOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhM
b2FkTDE2RlRvUkdCQTE2RiwgdHJ1ZSk7CisgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6
CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRMMTZGVG9SR0JB
MTZGLCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9h
ZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBMVU1J
TkFOQ0UzMkZfRVhUX3RvX2RlZmF1bHQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBl
KQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAgICAgICAgIHJldHVybiBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8oTG9hZEwzMkZUb1JHQkEzMkYsIHRydWUpOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0K
K30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIExVTUlOQU5DRThfQUxQSEE4X0VYVF90b19kZWZh
dWx0KEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlv
bkluZm8oTG9hZExBOFRvUkdCQTgsIHRydWUpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdl
RnVuY3Rpb25JbmZvIExVTUlOQU5DRThfRVhUX3RvX2RlZmF1bHQoR0xlbnVtIHR5cGUpCit7Cisg
ICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgor
ICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkTDhUb1JHQkE4LCB0
cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAg
ICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0
aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBMVU1JTkFOQ0Vf
QUxQSEFfdG9fUjE2RzE2QjE2QTE2X0ZMT0FUKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAo
dHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVDoKKyAgICAgICAgICAgIHJl
dHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZExBMTZGVG9SR0JBMTZGLCB0cnVlKTsKKyAg
ICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUX09FUzoKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8oTG9hZExBMTZGVG9SR0JBMTZGLCB0cnVlKTsKKyAgICAgICAgY2FzZSBH
TF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5m
byhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0
aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8gTFVNSU5BTkNFX0FMUEhBX3RvX1IzMkczMkIzMkEzMl9GTE9BVChH
TGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdM
X0ZMT0FUOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkTEEz
MkZUb1JHQkEzMkYsIHRydWUpOworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAg
ICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0
aW9uLCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9h
ZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBMVU1J
TkFOQ0VfQUxQSEFfdG9fZGVmYXVsdChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUp
CisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICByZXR1
cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAg
ICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0
cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBMVU1JTkFOQ0VfQUxQSEEx
NkZfRVhUX3RvX2RlZmF1bHQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAg
IHsKKyAgICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbyhMb2FkTEExNkZUb1JHQkExNkYsIHRydWUpOworICAgICAgICBjYXNl
IEdMX0hBTEZfRkxPQVRfT0VTOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9u
SW5mbyhMb2FkTEExNkZUb1JHQkExNkYsIHRydWUpOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlv
bkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZElt
YWdlRnVuY3Rpb25JbmZvIExVTUlOQU5DRV9BTFBIQTMyRl9FWFRfdG9fZGVmYXVsdChHTGVudW0g
dHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX0ZMT0FU
OgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkTEEzMkZUb1JH
QkEzMkYsIHRydWUpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUo
KTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVM
b2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIFIx
MUZfRzExRl9CMTBGX3RvX1IxMUcxMUIxMF9GTE9BVChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0
Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX0ZMT0FUOgorICAgICAgICAgICAgcmV0
dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkUkdCMzJGVG9SRzExQjEwRiwgdHJ1ZSk7Cisg
ICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVDoKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8oTG9hZFJHQjE2RlRvUkcxMUIxMEYsIHRydWUpOworICAgICAgICBjYXNlIEdM
X0hBTEZfRkxPQVRfT0VTOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5m
byhMb2FkUkdCMTZGVG9SRzExQjEwRiwgdHJ1ZSk7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURf
SU5UXzEwRl8xMUZfMTFGX1JFVjoKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlv
bkluZm8oTG9hZFRvTmF0aXZlPEdMdWludCwgMT4sIGZhbHNlKTsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdl
RnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisK
K0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBSMTZGX3RvX1IxNl9GTE9BVChHTGVudW0gdHlwZSkKK3sK
KyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX0ZMT0FUOgorICAgICAg
ICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkMzJGVG8xNkY8MT4sIHRydWUp
OworICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVQ6CisgICAgICAgICAgICByZXR1cm4gTG9hZElt
YWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTGhhbGYsIDE+LCBmYWxzZSk7CisgICAgICAg
IGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVu
Y3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTGhhbGYsIDE+LCBmYWxzZSk7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQor
fQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gUjE2SV90b19SMTZfU0lOVChHTGVudW0gdHlwZSkK
K3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1NIT1JUOgorICAg
ICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0xzaG9y
dCwgMT4sIGZhbHNlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxl
TG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBS
MTZVSV90b19SMTZfVUlOVChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAg
eworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOgorICAgICAgICAgICAgcmV0dXJuIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1c2hvcnQsIDE+LCBmYWxzZSk7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAg
cmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1
ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gUjE2X0VYVF90b19SMTZfVU5P
Uk0oR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2Fz
ZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlv
bkluZm8oTG9hZFRvTmF0aXZlPEdMdXNob3J0LCAxPiwgZmFsc2UpOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30K
KworTG9hZEltYWdlRnVuY3Rpb25JbmZvIFIxNl9TTk9STV9FWFRfdG9fUjE2X1NOT1JNKEdMZW51
bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfU0hP
UlQ6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2
ZTxHTHVzaG9ydCwgMT4sIGZhbHNlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVu
cmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0
aW9uSW5mbyBSMzJGX3RvX1IzMl9GTE9BVChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5
cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX0ZMT0FUOgorICAgICAgICAgICAgcmV0dXJuIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0xmbG9hdCwgMT4sIGZhbHNlKTsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBy
ZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVl
KTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBSMzJJX3RvX1IzMl9TSU5UKEdM
ZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xf
SU5UOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRp
dmU8R0xpbnQsIDE+LCBmYWxzZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJF
QUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJl
YWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlv
bkluZm8gUjMyVUlfdG9fUjMyX1VJTlQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBl
KQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6CisgICAgICAgICAgICByZXR1
cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTHVpbnQsIDE+LCBmYWxzZSk7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAg
ICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwg
dHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gUjhfdG9fUjhfVU5PUk0o
R0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBH
TF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5m
byhMb2FkVG9OYXRpdmU8R0x1Ynl0ZSwgMT4sIGZhbHNlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVu
Y3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xv
YWRJbWFnZUZ1bmN0aW9uSW5mbyBSOElfdG9fUjhfU0lOVChHTGVudW0gdHlwZSkKK3sKKyAgICBz
d2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX0JZVEU6CisgICAgICAgICAgICBy
ZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTGJ5dGUsIDE+LCBmYWxz
ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAg
ICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlv
biwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gUjhVSV90b19SOF9V
SU5UKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlv
bkluZm8oTG9hZFRvTmF0aXZlPEdMdWJ5dGUsIDE+LCBmYWxzZSk7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQor
CitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gUjhfU05PUk1fdG9fUjhfU05PUk0oR0xlbnVtIHR5cGUp
Cit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9CWVRFOgorICAg
ICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0xieXRl
LCAxPiwgZmFsc2UpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUo
KTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVM
b2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIFJH
MTZGX3RvX1IxNkcxNl9GTE9BVChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisg
ICAgeworICAgICAgICBjYXNlIEdMX0ZMT0FUOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbyhMb2FkMzJGVG8xNkY8Mj4sIHRydWUpOworICAgICAgICBjYXNlIEdMX0hB
TEZfRkxPQVQ6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRU
b05hdGl2ZTxHTGhhbGYsIDI+LCBmYWxzZSk7CisgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9P
RVM6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2
ZTxHTGhhbGYsIDI+LCBmYWxzZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJF
QUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJl
YWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlv
bkluZm8gUkcxNklfdG9fUjE2RzE2X1NJTlQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0
eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9TSE9SVDoKKyAgICAgICAgICAgIHJldHVybiBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMc2hvcnQsIDI+LCBmYWxzZSk7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAg
cmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1
ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gUkcxNlVJX3RvX1IxNkcxNl9V
SU5UKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rp
b25JbmZvKExvYWRUb05hdGl2ZTxHTHVzaG9ydCwgMj4sIGZhbHNlKTsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZElt
YWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9
CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBSRzE2X0VYVF90b19SMTZHMTZfVU5PUk0oR0xlbnVt
IHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJ
R05FRF9TSE9SVDoKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9h
ZFRvTmF0aXZlPEdMdXNob3J0LCAyPiwgZmFsc2UpOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlv
bkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZElt
YWdlRnVuY3Rpb25JbmZvIFJHMTZfU05PUk1fRVhUX3RvX1IxNkcxNl9TTk9STShHTGVudW0gdHlw
ZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1NIT1JUOgor
ICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1
c2hvcnQsIDI+LCBmYWxzZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNo
YWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8gUkczMkZfdG9fUjMyRzMyX0ZMT0FUKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlw
ZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICByZXR1cm4gTG9h
ZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTGZsb2F0LCAyPiwgZmFsc2UpOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJl
dHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUp
OworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIFJHMzJJX3RvX1IzMkczMl9TSU5U
KEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2Ug
R0xfSU5UOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9O
YXRpdmU8R0xpbnQsIDI+LCBmYWxzZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhV
bnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5j
dGlvbkluZm8gUkczMlVJX3RvX1IzMkczMl9VSU5UKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRj
aCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgorICAgICAgICAg
ICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1aW50LCAyPiwg
ZmFsc2UpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVu
Y3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIFJHOF90b19S
OEc4X1VOT1JNKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAg
ICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdWJ5dGUsIDI+LCBmYWxzZSk7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAg
fQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gUkc4SV90b19SOEc4X1NJTlQoR0xlbnVtIHR5
cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9CWVRFOgor
ICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0xi
eXRlLCAyPiwgZmFsc2UpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFi
bGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZv
IFJHOFVJX3RvX1I4RzhfVUlOVChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisg
ICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICByZXR1cm4g
TG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTHVieXRlLCAyPiwgZmFsc2UpOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAg
IHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRy
dWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIFJHOF9TTk9STV90b19SOEc4
X1NOT1JNKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAg
IGNhc2UgR0xfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8o
TG9hZFRvTmF0aXZlPEdMYnl0ZSwgMj4sIGZhbHNlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rp
b25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJ
bWFnZUZ1bmN0aW9uSW5mbyBSR0JfdG9fZGVmYXVsdChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0
Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAg
ICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9u
LCB0cnVlKTsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF81XzZfNToKKyAgICAgICAg
ICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24s
IHRydWUpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVu
Y3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIFJHQjEwX0Ey
X3RvX1IxMEcxMEIxMEEyX1VOT1JNKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkK
KyAgICB7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWOgorICAg
ICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1aW50
LCAxPiwgZmFsc2UpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUo
KTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVM
b2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIFJH
QjEwX0EyVUlfdG9fUjEwRzEwQjEwQTJfVUlOVChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2gg
KHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JF
VjoKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZl
PEdMdWludCwgMT4sIGZhbHNlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVh
Y2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9u
SW5mbyBSR0IxNkZfdG9fUjE2RzE2QjE2QTE2X0ZMT0FUKEdMZW51bSB0eXBlKQoreworICAgIHN3
aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICBy
ZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRSR0IzMkZUb1JHQkExNkYsIHRydWUpOwor
ICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVQ6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdl
RnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTNUbzQ8R0xoYWxmLCBnbDo6RmxvYXQxNk9uZT4sIHRy
dWUpOworICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVRfT0VTOgorICAgICAgICAgICAgcmV0dXJu
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmUzVG80PEdMaGFsZiwgZ2w6OkZsb2F0
MTZPbmU+LCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxl
TG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBS
R0IxNklfdG9fUjE2RzE2QjE2QTE2X1NJTlQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0
eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9TSE9SVDoKKyAgICAgICAgICAgIHJldHVybiBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlM1RvNDxHTHNob3J0LCAweDAwMDE+LCB0
cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAg
ICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0
aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBSR0IxNlVJX3Rv
X1IxNkcxNkIxNkExNl9VSU5UKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAg
ICB7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAgICAgICAgICByZXR1cm4g
TG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTNUbzQ8R0x1c2hvcnQsIDB4MDAwMT4s
IHRydWUpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVu
Y3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIFJHQjE2X0VY
VF90b19SMTZHMTZCMTZBMTZfVU5PUk0oR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBl
KQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAgICAgICAgICAgIHJl
dHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlM1RvNDxHTHVzaG9ydCwgMHhG
RkZGPiwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxv
YWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gUkdC
MTZfU05PUk1fRVhUX3RvX1IxNkcxNkIxNkExNl9TTk9STShHTGVudW0gdHlwZSkKK3sKKyAgICBz
d2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1NIT1JUOgorICAgICAgICAgICAg
cmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmUzVG80PEdMdXNob3J0LCAw
eDdGRkY+LCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxl
TG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBS
R0IzMkZfdG9fUjMyRzMyQjMyQTMyX0ZMT0FUKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAo
dHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICByZXR1cm4g
TG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTNUbzQ8R0xmbG9hdCwgZ2w6OkZsb2F0
MzJPbmU+LCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxl
TG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBS
R0IzMklfdG9fUjMyRzMyQjMyQTMyX1NJTlQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0
eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9JTlQ6CisgICAgICAgICAgICByZXR1cm4gTG9h
ZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTNUbzQ8R0xpbnQsIDB4MDAwMDAwMDE+LCB0
cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAg
ICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0
aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBSR0IzMlVJX3Rv
X1IzMkczMkIzMkEzMl9VSU5UKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAg
ICB7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgorICAgICAgICAgICAgcmV0dXJuIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmUzVG80PEdMdWludCwgMHgwMDAwMDAwMT4s
IHRydWUpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVu
Y3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIFJHQjU2NV90
b19CNUc2UjVfVU5PUk0oR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsK
KyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbyhMb2FkUkdCOFRvQkdSNTY1LCB0cnVlKTsKKyAgICAgICAgY2FzZSBH
TF9VTlNJR05FRF9TSE9SVF81XzZfNToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdXNob3J0LCAxPiwgZmFsc2UpOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0K
K30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIFJHQjU2NV90b19SOEc4QjhBOF9VTk9STShHTGVu
dW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VO
U0lHTkVEX0JZVEU6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExv
YWRUb05hdGl2ZTNUbzQ8R0x1Ynl0ZSwgMHhGRj4sIHRydWUpOworICAgICAgICBjYXNlIEdMX1VO
U0lHTkVEX1NIT1JUXzVfNl81OgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9u
SW5mbyhMb2FkUjVHNkI1VG9SR0JBOCwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9u
SW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1h
Z2VGdW5jdGlvbkluZm8gUkdCNV9BMV90b19CNUc1UjVBMV9VTk9STShHTGVudW0gdHlwZSkKK3sK
KyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6
CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRSR0JBOFRvQkdS
NUExLCB0cnVlKTsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVY6
CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRSR0IxMEEyVG9C
R1I1QTEsIHRydWUpOworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzE6Cisg
ICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRSR0I1QTFUb0ExUkdC
NSwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRG
dW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gUkdCNV9B
MV90b19SOEc4QjhBOF9VTk9STShHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisg
ICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICByZXR1cm4g
TG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTHVieXRlLCA0PiwgZmFsc2UpOwor
ICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVjoKKyAgICAgICAgICAg
IHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFJHQjEwQTJUb1JHQkE4LCB0cnVlKTsK
KyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xOgorICAgICAgICAgICAgcmV0
dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkUkdCNUExVG9SR0JBOCwgdHJ1ZSk7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0
dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7
CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gUkdCOF90b19SOEc4QjhBOF9VTk9S
TShHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNl
IEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25J
bmZvKExvYWRUb05hdGl2ZTNUbzQ8R0x1Ynl0ZSwgMHhGRj4sIHRydWUpOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0K
K30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIFJHQjhJX3RvX1I4RzhCOEE4X1NJTlQoR0xlbnVt
IHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9CWVRF
OgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmUz
VG80PEdMYnl0ZSwgMHgwMT4sIHRydWUpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
VU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8o
VW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVu
Y3Rpb25JbmZvIFJHQjhVSV90b19SOEc4QjhBOF9VSU5UKEdMZW51bSB0eXBlKQoreworICAgIHN3
aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAg
ICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlM1RvNDxHTHVi
eXRlLCAweDAxPiwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNo
YWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8gUkdCOF9TTk9STV90b19SOEc4QjhBOF9TTk9STShHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0
Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX0JZVEU6CisgICAgICAgICAgICByZXR1
cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTNUbzQ8R0xieXRlLCAweDdGPiwg
dHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAg
ICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5j
dGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gUkdCOV9FNV90
b19SOUc5QjlFNV9TSEFSRURFWFAoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQor
ICAgIHsKKyAgICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8oTG9hZFJHQjMyRlRvUkdCOUU1LCB0cnVlKTsKKyAgICAgICAgY2FzZSBH
TF9IQUxGX0ZMT0FUOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhM
b2FkUkdCMTZGVG9SR0I5RTUsIHRydWUpOworICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVRfT0VT
OgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkUkdCMTZGVG9S
R0I5RTUsIHRydWUpOworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF81XzlfOV85X1JFVjoK
KyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdM
dWludCwgMT4sIGZhbHNlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hB
QkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hh
YmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5m
byBSR0JBX3RvX2RlZmF1bHQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAg
IHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgcmV0dXJuIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAg
ICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNDoKKyAgICAgICAgICAgIHJldHVybiBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAg
ICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzE6CisgICAgICAgICAgICByZXR1cm4g
TG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBy
ZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVl
KTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBSR0JBMTZGX3RvX1IxNkcxNkIx
NkExNl9GTE9BVChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAg
ICAgICBjYXNlIEdMX0ZMT0FUOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9u
SW5mbyhMb2FkMzJGVG8xNkY8ND4sIHRydWUpOworICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVQ6
CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxH
TGhhbGYsIDQ+LCBmYWxzZSk7CisgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6CisgICAg
ICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTGhhbGYs
IDQ+LCBmYWxzZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxv
YWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gUkdC
QTE2SV90b19SMTZHMTZCMTZBMTZfU0lOVChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5
cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1NIT1JUOgorICAgICAgICAgICAgcmV0dXJuIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0xzaG9ydCwgND4sIGZhbHNlKTsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBy
ZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVl
KTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBSR0JBMTZVSV90b19SMTZHMTZC
MTZBMTZfVUlOVChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAg
ICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1c2hvcnQsIDQ+LCBmYWxzZSk7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJu
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7Cisg
ICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gUkdCQTE2X0VYVF90b19SMTZHMTZCMTZB
MTZfVU5PUk0oR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdXNob3J0LCA0PiwgZmFsc2UpOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAg
IH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIFJHQkExNl9TTk9STV9FWFRfdG9fUjE2RzE2
QjE2QTE2X1NOT1JNKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7Cisg
ICAgICAgIGNhc2UgR0xfU0hPUlQ6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rp
b25JbmZvKExvYWRUb05hdGl2ZTxHTHVzaG9ydCwgND4sIGZhbHNlKTsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZElt
YWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9
CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBSR0JBMzJGX3RvX1IzMkczMkIzMkEzMl9GTE9BVChH
TGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdM
X0ZMT0FUOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9O
YXRpdmU8R0xmbG9hdCwgND4sIGZhbHNlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZv
KFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1
bmN0aW9uSW5mbyBSR0JBMzJJX3RvX1IzMkczMkIzMkEzMl9TSU5UKEdMZW51bSB0eXBlKQorewor
ICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfSU5UOgorICAgICAgICAg
ICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0xpbnQsIDQ+LCBm
YWxzZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAg
ICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5j
dGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gUkdCQTMyVUlf
dG9fUjMyRzMyQjMyQTMyX1VJTlQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQor
ICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6CisgICAgICAgICAgICByZXR1cm4g
TG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTHVpbnQsIDQ+LCBmYWxzZSk7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAg
cmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1
ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gUkdCQTRfdG9fQjRHNFI0QTRf
VU5PUk0oR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAg
Y2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0
aW9uSW5mbyhMb2FkUkdCQThUb0JHUkE0LCB0cnVlKTsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05F
RF9TSE9SVF80XzRfNF80OgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5m
byhMb2FkUkdCQTRUb0FSR0I0LCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZv
KFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1
bmN0aW9uSW5mbyBSR0JBNF90b19SOEc4QjhBOF9VTk9STShHTGVudW0gdHlwZSkKK3sKKyAgICBz
d2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAg
ICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTHVieXRl
LCA0PiwgZmFsc2UpOworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQ6Cisg
ICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRSR0JBNFRvUkdCQTgs
IHRydWUpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVu
Y3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIFJHQkE4X3Rv
X1I4RzhCOEE4X1VOT1JNKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7
CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdWJ5dGUsIDQ+LCBmYWxzZSk7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0
dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7
CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gUkdCQThJX3RvX1I4RzhCOEE4X1NJ
TlQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2Fz
ZSBHTF9CWVRFOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2Fk
VG9OYXRpdmU8R0xieXRlLCA0PiwgZmFsc2UpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdl
RnVuY3Rpb25JbmZvIFJHQkE4VUlfdG9fUjhHOEI4QThfVUlOVChHTGVudW0gdHlwZSkKK3sKKyAg
ICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6Cisg
ICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTHVi
eXRlLCA0PiwgZmFsc2UpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFi
bGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZv
IFJHQkE4X1NOT1JNX3RvX1I4RzhCOEE4X1NOT1JNKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRj
aCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfQllURToKKyAgICAgICAgICAgIHJldHVy
biBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMYnl0ZSwgND4sIGZhbHNlKTsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAg
ICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0
cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBTUkdCOF90b19SOEc4QjhB
OF9VTk9STV9TUkdCKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7Cisg
ICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlM1RvNDxHTHVieXRlLCAweEZGPiwgdHJ1ZSk7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAg
cmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1
ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gU1JHQjhfQUxQSEE4X3RvX1I4
RzhCOEE4X1VOT1JNX1NSR0IoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAg
IHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgcmV0dXJuIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1Ynl0ZSwgND4sIGZhbHNlKTsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBy
ZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVl
KTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBTVEVOQ0lMX0lOREVYOF90b19k
ZWZhdWx0KEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAg
IGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8oVW5pbXBsZW1lbnRlZExvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQor
fQorCit9ICAvLyBuYW1lc3BhY2UKKworTG9hZEZ1bmN0aW9uTWFwIEdldExvYWRGdW5jdGlvbnNN
YXAoR0xlbnVtIGludGVybmFsRm9ybWF0LCBGb3JtYXQ6OklEIGFuZ2xlRm9ybWF0KQoreworICAg
IC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgIHsK
KyAgICAgICAgY2FzZSBHTF9BTFBIQToKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChh
bmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6
SUQ6OlIxNkcxNkIxNkExNl9GTE9BVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFMUEhB
X3RvX1IxNkcxNkIxNkExNl9GTE9BVDsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6
OlIzMkczMkIzMkEzMl9GTE9BVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFMUEhBX3Rv
X1IzMkczMkIzMkEzMl9GTE9BVDsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gQUxQSEFfdG9fZGVmYXVsdDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBjYXNlIEdMX0FMUEhBMTZGX0VYVDoKKyAgICAgICAgICAgIHJldHVybiBB
TFBIQTE2Rl9FWFRfdG9fZGVmYXVsdDsKKyAgICAgICAgY2FzZSBHTF9BTFBIQTMyRl9FWFQ6Cisg
ICAgICAgICAgICByZXR1cm4gQUxQSEEzMkZfRVhUX3RvX2RlZmF1bHQ7CisgICAgICAgIGNhc2Ug
R0xfQUxQSEE4X0VYVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1h
dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OkE4X1VO
T1JNOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQUxQSEE4X0VYVF90b19BOF9VTk9STTsK
KyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VOT1JNOgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gQUxQSEE4X0VYVF90b19SOEc4QjhBOF9VTk9STTsKKyAgICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0JHUjU2NV9BTkdMRVg6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpCNUc2UjVfVU5PUk06CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBCR1I1NjVfQU5HTEVYX3RvX0I1RzZSNV9VTk9STTsKKyAgICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0JHUjVfQTFfQU5HTEVYOgorICAgICAgICAgICAg
cmV0dXJuIEJHUjVfQTFfQU5HTEVYX3RvX2RlZmF1bHQ7CisgICAgICAgIGNhc2UgR0xfQkdSQTRf
QU5HTEVYOgorICAgICAgICAgICAgcmV0dXJuIEJHUkE0X0FOR0xFWF90b19kZWZhdWx0OworICAg
ICAgICBjYXNlIEdMX0JHUkE4X0VYVDoKKyAgICAgICAgICAgIHJldHVybiBCR1JBOF9FWFRfdG9f
ZGVmYXVsdDsKKyAgICAgICAgY2FzZSBHTF9CR1JBX0VYVDoKKyAgICAgICAgICAgIHJldHVybiBC
R1JBX0VYVF90b19kZWZhdWx0OworICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUjExX0VBQzoK
KyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlI4X1VOT1JNOgorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gQ09NUFJFU1NFRF9SMTFfRUFDX3RvX1I4X1VOT1JNOworICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SRzExX0VBQzoKKyAg
ICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlI4RzhfVU5PUk06CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBDT01QUkVTU0VEX1JHMTFfRUFDX3RvX1I4RzhfVU5PUk07CisgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQjhfRVRDMjoK
KyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VOT1JNOgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gQ09NUFJFU1NFRF9SR0I4X0VUQzJfdG9fUjhHOEI4QThf
VU5PUk07CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VE
X1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyOgorICAgICAgICB7CisgICAgICAgICAgICBz
d2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2Ug
Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk06CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBD
T01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyX3RvX1I4RzhCOEE4X1VOT1JN
OworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JB
OF9FVEMyX0VBQzoKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlI4RzhCOEE4
X1VOT1JNOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ09NUFJFU1NFRF9SR0JBOF9FVEMy
X0VBQ190b19SOEc4QjhBOF9VTk9STTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBj
YXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAgICAgICAgICAgcmV0dXJu
IENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUX3RvX2RlZmF1bHQ7CisgICAgICAgIGNhc2Ug
R0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRToKKyAgICAgICAgICAgIHJldHVybiBD
T01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFX3RvX2RlZmF1bHQ7CisgICAgICAgIGNhc2Ug
R0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRToKKyAgICAgICAgICAgIHJldHVybiBD
T01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFX3RvX2RlZmF1bHQ7CisgICAgICAgIGNhc2Ug
R0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKKyAgICAgICAgICAgIHJldHVybiBDT01Q
UkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUX3RvX2RlZmF1bHQ7CisgICAgICAgIGNhc2UgR0xfQ09N
UFJFU1NFRF9TSUdORURfUjExX0VBQzoKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChh
bmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6
SUQ6OlI4X1NOT1JNOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ09NUFJFU1NFRF9TSUdO
RURfUjExX0VBQ190b19SOF9TTk9STTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBj
YXNlIEdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDOgorICAgICAgICB7CisgICAgICAgICAg
ICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNh
c2UgRm9ybWF0OjpJRDo6UjhHOF9TTk9STToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENP
TVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDX3RvX1I4RzhfU05PUk07CisgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQzoK
KyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VOT1JNX1NSR0I6
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMy
X0VBQ190b19SOEc4QjhBOF9VTk9STV9TUkdCOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyOgorICAgICAgICB7CisgICAgICAgICAg
ICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNh
c2UgRm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk1fU1JHQjoKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIENPTVBSRVNTRURfU1JHQjhfRVRDMl90b19SOEc4QjhBOF9VTk9STV9TUkdCOworICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5D
SFRIUk9VR0hfQUxQSEExX0VUQzI6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5n
bGVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklE
OjpSOEc4QjhBOF9VTk9STV9TUkdCOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ09NUFJF
U1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzJfdG9fUjhHOEI4QThfVU5PUk1fU1JH
QjsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0RFUFRIMjRfU1RFTkNJ
TDg6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpEMjRfVU5PUk1fUzhfVUlO
VDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERFUFRIMjRfU1RFTkNJTDhfdG9fRDI0X1VO
T1JNX1M4X1VJTlQ7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9ERVBU
SDMyRl9TVEVOQ0lMODoKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1h
dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OkQzMl9G
TE9BVF9TOFgyNF9VSU5UOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gREVQVEgzMkZfU1RF
TkNJTDhfdG9fRDMyX0ZMT0FUX1M4WDI0X1VJTlQ7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQxNjoKKyAgICAgICAgeworICAgICAgICAgICAg
c3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNl
IEZvcm1hdDo6SUQ6OkQxNl9VTk9STToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERFUFRI
X0NPTVBPTkVOVDE2X3RvX0QxNl9VTk9STTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDI0OgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0
Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9y
bWF0OjpJRDo6RDI0X1VOT1JNX1M4X1VJTlQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBE
RVBUSF9DT01QT05FTlQyNF90b19EMjRfVU5PUk1fUzhfVUlOVDsKKyAgICAgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDMyRjoKKyAgICAgICAgeworICAg
ICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBjYXNlIEZvcm1hdDo6SUQ6OkQzMl9GTE9BVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIERFUFRIX0NPTVBPTkVOVDMyRl90b19EMzJfRkxPQVQ7CisgICAgICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQzMl9PRVM6CisgICAgICAgICAgICBy
ZXR1cm4gREVQVEhfQ09NUE9ORU5UMzJfT0VTX3RvX2RlZmF1bHQ7CisgICAgICAgIGNhc2UgR0xf
RVRDMV9SR0I4X0xPU1NZX0RFQ09ERV9BTkdMRToKKyAgICAgICAgeworICAgICAgICAgICAgc3dp
dGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZv
cm1hdDo6SUQ6OkJDMV9SR0JfVU5PUk1fQkxPQ0s6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBFVEMxX1JHQjhfTE9TU1lfREVDT0RFX0FOR0xFX3RvX0JDMV9SR0JfVU5PUk1fQkxPQ0s7Cisg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9FVEMxX1JHQjhfT0VTOgorICAg
ICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk06CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBFVEMxX1JHQjhfT0VTX3RvX1I4RzhCOEE4X1VOT1JNOworICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFOgorICAgICAgICB7
CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2X0ZMT0FUOgorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gTFVNSU5BTkNFX3RvX1IxNkcxNkIxNkExNl9GTE9BVDsKKyAgICAg
ICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlIzMkczMkIzMkEzMl9GTE9BVDoKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIExVTUlOQU5DRV90b19SMzJHMzJCMzJBMzJfRkxPQVQ7CisgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIExVTUlOQU5D
RV90b19kZWZhdWx0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xf
TFVNSU5BTkNFMTZGX0VYVDoKKyAgICAgICAgICAgIHJldHVybiBMVU1JTkFOQ0UxNkZfRVhUX3Rv
X2RlZmF1bHQ7CisgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFMzJGX0VYVDoKKyAgICAgICAgICAg
IHJldHVybiBMVU1JTkFOQ0UzMkZfRVhUX3RvX2RlZmF1bHQ7CisgICAgICAgIGNhc2UgR0xfTFVN
SU5BTkNFOF9BTFBIQThfRVhUOgorICAgICAgICAgICAgcmV0dXJuIExVTUlOQU5DRThfQUxQSEE4
X0VYVF90b19kZWZhdWx0OworICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRThfRVhUOgorICAgICAg
ICAgICAgcmV0dXJuIExVTUlOQU5DRThfRVhUX3RvX2RlZmF1bHQ7CisgICAgICAgIGNhc2UgR0xf
TFVNSU5BTkNFX0FMUEhBOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9y
bWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjE2
RzE2QjE2QTE2X0ZMT0FUOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTFVNSU5BTkNFX0FM
UEhBX3RvX1IxNkcxNkIxNkExNl9GTE9BVDsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6
SUQ6OlIzMkczMkIzMkEzMl9GTE9BVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIExVTUlO
QU5DRV9BTFBIQV90b19SMzJHMzJCMzJBMzJfRkxPQVQ7CisgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIExVTUlOQU5DRV9BTFBIQV90b19kZWZhdWx0
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FM
UEhBMTZGX0VYVDoKKyAgICAgICAgICAgIHJldHVybiBMVU1JTkFOQ0VfQUxQSEExNkZfRVhUX3Rv
X2RlZmF1bHQ7CisgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBMzJGX0VYVDoKKyAgICAg
ICAgICAgIHJldHVybiBMVU1JTkFOQ0VfQUxQSEEzMkZfRVhUX3RvX2RlZmF1bHQ7CisgICAgICAg
IGNhc2UgR0xfUjExRl9HMTFGX0IxMEY6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAo
YW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6
OklEOjpSMTFHMTFCMTBfRkxPQVQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBSMTFGX0cx
MUZfQjEwRl90b19SMTFHMTFCMTBfRkxPQVQ7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBHTF9SMTZGOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9y
bWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjE2
X0ZMT0FUOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gUjE2Rl90b19SMTZfRkxPQVQ7Cisg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SMTZJOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjE2X1NJTlQ6CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBSMTZJX3RvX1IxNl9TSU5UOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNh
c2UgR0xfUjE2VUk6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpSMTZfVUlO
VDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFIxNlVJX3RvX1IxNl9VSU5UOworICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUjE2X0VYVDoKKyAgICAgICAgeworICAg
ICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBjYXNlIEZvcm1hdDo6SUQ6OlIxNl9VTk9STToKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIFIxNl9FWFRfdG9fUjE2X1VOT1JNOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGNhc2UgR0xfUjE2X1NOT1JNX0VYVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChh
bmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6
SUQ6OlIxNl9TTk9STToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFIxNl9TTk9STV9FWFRf
dG9fUjE2X1NOT1JNOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUjMy
RjoKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlIzMl9GTE9BVDoKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFIzMkZfdG9fUjMyX0ZMT0FUOworICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGNhc2UgR0xfUjMySToKKyAgICAgICAgeworICAgICAgICAgICAgc3dp
dGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZv
cm1hdDo6SUQ6OlIzMl9TSU5UOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gUjMySV90b19S
MzJfU0lOVDsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1IzMlVJOgor
ICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjMyX1VJTlQ6CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBSMzJVSV90b19SMzJfVUlOVDsKKyAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBjYXNlIEdMX1I4OgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFu
Z2xlRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJ
RDo6UjhfVU5PUk06CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBSOF90b19SOF9VTk9STTsK
KyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1I4SToKKyAgICAgICAgewor
ICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlI4X1NJTlQ6CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBSOElfdG9fUjhfU0lOVDsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNl
IEdMX1I4VUk6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpSOF9VSU5UOgor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gUjhVSV90b19SOF9VSU5UOworICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUjhfU05PUk06CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Y2FzZSBGb3JtYXQ6OklEOjpSOF9TTk9STToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFI4
X1NOT1JNX3RvX1I4X1NOT1JNOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2Ug
R0xfUkcxNkY6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpSMTZHMTZfRkxP
QVQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBSRzE2Rl90b19SMTZHMTZfRkxPQVQ7Cisg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SRzE2SToKKyAgICAgICAgewor
ICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlIxNkcxNl9TSU5UOgorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gUkcxNklfdG9fUjE2RzE2X1NJTlQ7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBHTF9SRzE2VUk6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5n
bGVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklE
OjpSMTZHMTZfVUlOVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJHMTZVSV90b19SMTZH
MTZfVUlOVDsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHMTZfRVhU
OgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjE2RzE2X1VOT1JNOgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gUkcxNl9FWFRfdG9fUjE2RzE2X1VOT1JNOworICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkcxNl9TTk9STV9FWFQ6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpSMTZHMTZfU05PUk06CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBSRzE2X1NOT1JNX0VYVF90b19SMTZHMTZfU05PUk07CisgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SRzMyRjoKKyAgICAgICAgeworICAgICAgICAg
ICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBj
YXNlIEZvcm1hdDo6SUQ6OlIzMkczMl9GTE9BVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFJHMzJGX3RvX1IzMkczMl9GTE9BVDsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBj
YXNlIEdMX1JHMzJJOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjMyRzMy
X1NJTlQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBSRzMySV90b19SMzJHMzJfU0lOVDsK
KyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHMzJVSToKKyAgICAgICAg
eworICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlIzMkczMl9VSU5UOgorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gUkczMlVJX3RvX1IzMkczMl9VSU5UOworICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIGNhc2UgR0xfUkc4OgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFu
Z2xlRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJ
RDo6UjhHOF9VTk9STToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJHOF90b19SOEc4X1VO
T1JNOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkc4SToKKyAgICAg
ICAgeworICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlI4RzhfU0lOVDoKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIFJHOElfdG9fUjhHOF9TSU5UOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGNhc2UgR0xfUkc4VUk6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5n
bGVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklE
OjpSOEc4X1VJTlQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBSRzhVSV90b19SOEc4X1VJ
TlQ7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SRzhfU05PUk06Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpSOEc4X1NOT1JNOgorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gUkc4X1NOT1JNX3RvX1I4RzhfU05PUk07CisgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0I6CisgICAgICAgICAgICByZXR1cm4gUkdCX3Rv
X2RlZmF1bHQ7CisgICAgICAgIGNhc2UgR0xfUkdCMTBfQTI6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Y2FzZSBGb3JtYXQ6OklEOjpSMTBHMTBCMTBBMl9VTk9STToKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIFJHQjEwX0EyX3RvX1IxMEcxMEIxMEEyX1VOT1JNOworICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGNhc2UgR0xfUkdCMTBfQTJVSToKKyAgICAgICAgeworICAgICAgICAgICAg
c3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNl
IEZvcm1hdDo6SUQ6OlIxMEcxMEIxMEEyX1VJTlQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBSR0IxMF9BMlVJX3RvX1IxMEcxMEIxMEEyX1VJTlQ7CisgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBHTF9SR0IxNkY6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAo
YW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6
OklEOjpSMTZHMTZCMTZBMTZfRkxPQVQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBSR0Ix
NkZfdG9fUjE2RzE2QjE2QTE2X0ZMT0FUOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGNhc2UgR0xfUkdCMTZJOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9y
bWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjE2
RzE2QjE2QTE2X1NJTlQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBSR0IxNklfdG9fUjE2
RzE2QjE2QTE2X1NJTlQ7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9S
R0IxNlVJOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2
X1VJTlQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBSR0IxNlVJX3RvX1IxNkcxNkIxNkEx
Nl9VSU5UOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCMTZfRVhU
OgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2X1VOT1JN
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gUkdCMTZfRVhUX3RvX1IxNkcxNkIxNkExNl9V
Tk9STTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHQjE2X1NOT1JN
X0VYVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlIxNkcxNkIxNkExNl9T
Tk9STToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJHQjE2X1NOT1JNX0VYVF90b19SMTZH
MTZCMTZBMTZfU05PUk07CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9S
R0IzMkY6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpSMzJHMzJCMzJBMzJf
RkxPQVQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBSR0IzMkZfdG9fUjMyRzMyQjMyQTMy
X0ZMT0FUOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCMzJJOgor
ICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjMyRzMyQjMyQTMyX1NJTlQ6Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBSR0IzMklfdG9fUjMyRzMyQjMyQTMyX1NJTlQ7Cisg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0IzMlVJOgorICAgICAgICB7
CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjMyRzMyQjMyQTMyX1VJTlQ6CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBSR0IzMlVJX3RvX1IzMkczMkIzMkEzMl9VSU5UOworICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCNTY1OgorICAgICAgICB7CisgICAgICAg
ICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGNhc2UgRm9ybWF0OjpJRDo6QjVHNlI1X1VOT1JNOgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gUkdCNTY1X3RvX0I1RzZSNV9VTk9STTsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6
SUQ6OlI4RzhCOEE4X1VOT1JNOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gUkdCNTY1X3Rv
X1I4RzhCOEE4X1VOT1JNOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xf
UkdCNV9BMToKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OkI1RzVSNUExX1VO
T1JNOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gUkdCNV9BMV90b19CNUc1UjVBMV9VTk9S
TTsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VOT1JNOgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gUkdCNV9BMV90b19SOEc4QjhBOF9VTk9STTsKKyAgICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHQjg6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgY2FzZSBGb3JtYXQ6OklEOjpSOEc4QjhBOF9VTk9STToKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIFJHQjhfdG9fUjhHOEI4QThfVU5PUk07CisgICAgICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBHTF9SR0I4SToKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhbmds
ZUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6
OlI4RzhCOEE4X1NJTlQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBSR0I4SV90b19SOEc4
QjhBOF9TSU5UOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCOFVJ
OgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjhHOEI4QThfVUlOVDoKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFJHQjhVSV90b19SOEc4QjhBOF9VSU5UOworICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCOF9TTk9STToKKyAgICAgICAgewor
ICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlI4RzhCOEE4X1NOT1JNOgorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gUkdCOF9TTk9STV90b19SOEc4QjhBOF9TTk9STTsKKyAgICAgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHQjlfRTU6CisgICAgICAgIHsKKyAgICAgICAgICAg
IHN3aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2Fz
ZSBGb3JtYXQ6OklEOjpSOUc5QjlFNV9TSEFSRURFWFA6CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBSR0I5X0U1X3RvX1I5RzlCOUU1X1NIQVJFREVYUDsKKyAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAgICAgICByZXR1cm4gUkdCQV90b19kZWZh
dWx0OworICAgICAgICBjYXNlIEdMX1JHQkExNkY6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3
aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBG
b3JtYXQ6OklEOjpSMTZHMTZCMTZBMTZfRkxPQVQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBSR0JBMTZGX3RvX1IxNkcxNkIxNkExNl9GTE9BVDsKKyAgICAgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBjYXNlIEdMX1JHQkExNkk6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAo
YW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6
OklEOjpSMTZHMTZCMTZBMTZfU0lOVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJHQkEx
NklfdG9fUjE2RzE2QjE2QTE2X1NJTlQ7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBHTF9SR0JBMTZVSToKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZv
cm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlIx
NkcxNkIxNkExNl9VSU5UOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gUkdCQTE2VUlfdG9f
UjE2RzE2QjE2QTE2X1VJTlQ7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBH
TF9SR0JBMTZfRVhUOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjE2RzE2
QjE2QTE2X1VOT1JNOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gUkdCQTE2X0VYVF90b19S
MTZHMTZCMTZBMTZfVU5PUk07CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBH
TF9SR0JBMTZfU05PUk1fRVhUOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xl
Rm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6
UjE2RzE2QjE2QTE2X1NOT1JNOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gUkdCQTE2X1NO
T1JNX0VYVF90b19SMTZHMTZCMTZBMTZfU05PUk07CisgICAgICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBHTF9SR0JBMzJGOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFu
Z2xlRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJ
RDo6UjMyRzMyQjMyQTMyX0ZMT0FUOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gUkdCQTMy
Rl90b19SMzJHMzJCMzJBMzJfRkxPQVQ7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBHTF9SR0JBMzJJOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9y
bWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjMy
RzMyQjMyQTMyX1NJTlQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBSR0JBMzJJX3RvX1Iz
MkczMkIzMkEzMl9TSU5UOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xf
UkdCQTMyVUk6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpSMzJHMzJCMzJB
MzJfVUlOVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJHQkEzMlVJX3RvX1IzMkczMkIz
MkEzMl9VSU5UOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCQTQ6
CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpCNEc0UjRBNF9VTk9STToKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFJHQkE0X3RvX0I0RzRSNEE0X1VOT1JNOworICAgICAg
ICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk06CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBSR0JBNF90b19SOEc4QjhBOF9VTk9STTsKKyAgICAgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBjYXNlIEdMX1JHQkE4OgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0
Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9y
bWF0OjpJRDo6UjhHOEI4QThfVU5PUk06CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBSR0JB
OF90b19SOEc4QjhBOF9VTk9STTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNl
IEdMX1JHQkE4SToKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OlI4RzhCOEE4
X1NJTlQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBSR0JBOElfdG9fUjhHOEI4QThfU0lO
VDsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHQkE4VUk6CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpSOEc4QjhBOF9VSU5UOgorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gUkdCQThVSV90b19SOEc4QjhBOF9VSU5UOworICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCQThfU05PUk06CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgY2FzZSBGb3JtYXQ6OklEOjpSOEc4QjhBOF9TTk9STToKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIFJHQkE4X1NOT1JNX3RvX1I4RzhCOEE4X1NOT1JNOworICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGNhc2UgR0xfU1JHQjg6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRj
aCAoYW5nbGVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3Jt
YXQ6OklEOjpSOEc4QjhBOF9VTk9STV9TUkdCOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
U1JHQjhfdG9fUjhHOEI4QThfVU5PUk1fU1JHQjsKKyAgICAgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBjYXNlIEdMX1NSR0I4X0FMUEhBODoKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNo
IChhbmdsZUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1h
dDo6SUQ6OlI4RzhCOEE4X1VOT1JNX1NSR0I6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBT
UkdCOF9BTFBIQThfdG9fUjhHOEI4QThfVU5PUk1fU1JHQjsKKyAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBjYXNlIEdMX1NURU5DSUxfSU5ERVg4OgorICAgICAgICAgICAgcmV0dXJuIFNU
RU5DSUxfSU5ERVg4X3RvX2RlZmF1bHQ7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RhdGljIExvYWRGdW5jdGlvbk1hcCBlbXB0eUxvYWRGdW5jdGlvbnNNYXA7
CisgICAgICAgICAgICByZXR1cm4gZW1wdHlMb2FkRnVuY3Rpb25zTWFwOworICAgICAgICB9Cisg
ICAgfQorICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorCit9ICAvLyBHZXRMb2FkRnVuY3Rpb25zTWFw
CisKK30gIC8vIG5hbWVzcGFjZSBhbmdsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvQnVmZmVyTlVMTC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvQnVmZmVy
TlVMTC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL251bGwvQnVmZmVyTlVMTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw3NCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEJ1ZmZlck5VTEwuY3BwOgorLy8gICAgSW1wbGVtZW50
cyB0aGUgY2xhc3MgbWV0aG9kcyBmb3IgQnVmZmVyTlVMTC4KKy8vCisKKyNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9udWxsL0J1ZmZlck5VTEwuaCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1
Zy5oIgorCituYW1lc3BhY2UgcngKK3sKKworQnVmZmVyTlVMTDo6QnVmZmVyTlVMTCgpIDogQnVm
ZmVySW1wbCgpCit7Cit9CisKK0J1ZmZlck5VTEw6On5CdWZmZXJOVUxMKCkKK3sKK30KKworZ2w6
OkVycm9yIEJ1ZmZlck5VTEw6OnNldERhdGEoR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCAqZGF0
YSwgc2l6ZV90IHNpemUsIEdMZW51bSB1c2FnZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cisg
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpFcnJv
ciBCdWZmZXJOVUxMOjpzZXRTdWJEYXRhKEdMZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQgKmRhdGEs
IHNpemVfdCBzaXplLCBzaXplX3Qgb2Zmc2V0KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9y
IEJ1ZmZlck5VTEw6OmNvcHlTdWJEYXRhKEJ1ZmZlckltcGwgKnNvdXJjZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBzb3VyY2VPZmZzZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgZGVzdE9mZnNldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUpCit7CisgICAgVU5JTVBMRU1F
TlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQor
CitnbDo6RXJyb3IgQnVmZmVyTlVMTDo6bWFwKEdMZW51bSBhY2Nlc3MsIEdMdm9pZCAqKm1hcFB0
cikKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBCdWZmZXJOVUxMOjptYXBSYW5nZShzaXpl
X3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBHTGJpdGZpZWxkIGFjY2VzcywgR0x2b2lkICoqbWFw
UHRyKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIEJ1ZmZlck5VTEw6OnVubWFwKEdMYm9v
bGVhbiAqcmVzdWx0KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIEJ1ZmZlck5VTEw6Omdl
dEluZGV4UmFuZ2UoR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3Qgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBw
cmltaXRpdmVSZXN0YXJ0RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdsOjpJbmRleFJhbmdlICpvdXRSYW5nZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cisg
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK30gIC8vIG5h
bWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL251bGwvQnVmZmVyTlVMTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0J1ZmZlck5VTEwuaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVs
bC9CdWZmZXJOVUxMLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MyBAQAorLy8KKy8vIENv
cHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
Ky8vIEJ1ZmZlck5VTEwuaDoKKy8vICAgIERlZmluZXMgdGhlIGNsYXNzIGludGVyZmFjZSBmb3Ig
QnVmZmVyTlVMTCwgaW1wbGVtZW50aW5nIEJ1ZmZlckltcGwuCisvLworCisjaWZuZGVmIExJQkFO
R0xFX1JFTkRFUkVSX05VTExfQlVGRkVSTlVMTF9IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJF
Ul9OVUxMX0JVRkZFUk5VTExfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0J1ZmZl
ckltcGwuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIEJ1ZmZlck5VTEwgOiBwdWJsaWMg
QnVmZmVySW1wbAoreworICBwdWJsaWM6CisgICAgQnVmZmVyTlVMTCgpOworICAgIH5CdWZmZXJO
VUxMKCkgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJyb3Igc2V0RGF0YShHTGVudW0gdGFyZ2V0LCBj
b25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgR0xlbnVtIHVzYWdlKSBvdmVycmlkZTsKKyAg
ICBnbDo6RXJyb3Igc2V0U3ViRGF0YShHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkICpkYXRhLCBz
aXplX3Qgc2l6ZSwgc2l6ZV90IG9mZnNldCkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGNvcHlT
dWJEYXRhKEJ1ZmZlckltcGwgKnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnRwdHIgc291cmNlT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBk
ZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUpIG92
ZXJyaWRlOworICAgIGdsOjpFcnJvciBtYXAoR0xlbnVtIGFjY2VzcywgR0x2b2lkICoqbWFwUHRy
KSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgbWFwUmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90
IGxlbmd0aCwgR0xiaXRmaWVsZCBhY2Nlc3MsIEdMdm9pZCAqKm1hcFB0cikgb3ZlcnJpZGU7Cisg
ICAgZ2w6OkVycm9yIHVubWFwKEdMYm9vbGVhbiAqcmVzdWx0KSBvdmVycmlkZTsKKworICAgIGds
OjpFcnJvciBnZXRJbmRleFJhbmdlKEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJpbWl0aXZlUmVzdGFy
dEVuYWJsZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkluZGV4UmFuZ2UgKm91
dFJhbmdlKSBvdmVycmlkZTsKK307CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8v
IExJQkFOR0xFX1JFTkRFUkVSX05VTExfQlVGRkVSTlVMTF9IXwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvQ29tcGlsZXJOVUxMLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvbnVsbC9Db21waWxlck5VTEwuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0NvbXBpbGVyTlVMTC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwzNyBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIENvbXBpbGVyTlVMTC5j
cHA6CisvLyAgICBJbXBsZW1lbnRzIHRoZSBjbGFzcyBtZXRob2RzIGZvciBDb21waWxlck5VTEwu
CisvLworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Db21waWxlck5VTEwuaCIK
KworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgcngKK3sKKworQ29tcGls
ZXJOVUxMOjpDb21waWxlck5VTEwoKSA6IENvbXBpbGVySW1wbCgpCit7Cit9CisKK0NvbXBpbGVy
TlVMTDo6fkNvbXBpbGVyTlVMTCgpCit7Cit9CisKK2dsOjpFcnJvciBDb21waWxlck5VTEw6OnJl
bGVhc2UoKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworU2hTaGFkZXJPdXRwdXQgQ29tcGlsZXJOVUxMOjpn
ZXRUcmFuc2xhdG9yT3V0cHV0VHlwZSgpIGNvbnN0Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgIHJldHVybiBTaFNoYWRlck91dHB1dCgpOworfQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0Nv
bXBpbGVyTlVMTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9udWxsL0NvbXBpbGVyTlVMTC5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0NvbXBpbGVy
TlVMTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzIgQEAKKy8vCisvLyBDb3B5cmlnaHQg
MjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBDb21w
aWxlck5VTEwuaDoKKy8vICAgIERlZmluZXMgdGhlIGNsYXNzIGludGVyZmFjZSBmb3IgQ29tcGls
ZXJOVUxMLCBpbXBsZW1lbnRpbmcgQ29tcGlsZXJJbXBsLgorLy8KKworI2lmbmRlZiBMSUJBTkdM
RV9SRU5ERVJFUl9OVUxMX0NPTVBJTEVSTlVMTF9IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJF
Ul9OVUxMX0NPTVBJTEVSTlVMTF9IXworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvQ29t
cGlsZXJJbXBsLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBDb21waWxlck5VTEwgOiBw
dWJsaWMgQ29tcGlsZXJJbXBsCit7CisgIHB1YmxpYzoKKyAgICBDb21waWxlck5VTEwoKTsKKyAg
ICB+Q29tcGlsZXJOVUxMKCkgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJyb3IgcmVsZWFzZSgpIG92
ZXJyaWRlOworCisgICAgLy8gVE9ETyhqbWFkaWxsKTogRXhwb3NlIHRyYW5zbGF0b3IgYnVpbHQt
aW4gcmVzb3VyY2VzIGluaXQgbWV0aG9kLgorICAgIFNoU2hhZGVyT3V0cHV0IGdldFRyYW5zbGF0
b3JPdXRwdXRUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcngK
KworI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9OVUxMX0NPTVBJTEVSTlVMTF9IXwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvQ29u
dGV4dE5VTEwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9udWxsL0NvbnRleHROVUxMLmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Db250ZXh0
TlVMTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNzUgQEAKKy8vCisvLyBDb3B5cmln
aHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBD
b250ZXh0TlVMTC5jcHA6CisvLyAgICBJbXBsZW1lbnRzIHRoZSBjbGFzcyBtZXRob2RzIGZvciBD
b250ZXh0TlVMTC4KKy8vCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9udWxsL0NvbnRl
eHROVUxMLmgiCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKworbmFtZXNwYWNlIHJ4Cit7
CisKK0NvbnRleHROVUxMOjpDb250ZXh0TlVMTChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZzdGF0
ZSkgOiBDb250ZXh0SW1wbChzdGF0ZSkKK3sKK30KKworQ29udGV4dE5VTEw6On5Db250ZXh0TlVM
TCgpCit7Cit9CisKK2dsOjpFcnJvciBDb250ZXh0TlVMTDo6aW5pdGlhbGl6ZSgpCit7CisgICAg
VU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOworfQorCitnbDo6RXJyb3IgQ29udGV4dE5VTEw6OmZsdXNoKCkKK3sKKyAgICBVTklNUExF
TUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9
CisKK2dsOjpFcnJvciBDb250ZXh0TlVMTDo6ZmluaXNoKCkKK3sKKyAgICBVTklNUExFTUVOVEVE
KCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2ds
OjpFcnJvciBDb250ZXh0TlVMTDo6ZHJhd0FycmF5cyhHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3Qs
IEdMc2l6ZWkgY291bnQpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgQ29udGV4dE5VTEw6
OmRyYXdBcnJheXNJbnN0YW5jZWQoR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlQ291bnQpCit7CisgICAgVU5J
TVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OworfQorCitnbDo6RXJyb3IgQ29udGV4dE5VTEw6OmRyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpJbmRleFJhbmdlICZpbmRleFJh
bmdlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIENvbnRleHROVUxMOjpkcmF3RWxlbWVu
dHNJbnN0YW5jZWQoR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpJbmRleFJh
bmdlICZpbmRleFJhbmdlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIENvbnRleHROVUxM
OjpkcmF3UmFuZ2VFbGVtZW50cyhHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkKK3sK
KyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Cit9CisKK0NvbXBpbGVySW1wbCAqQ29udGV4dE5VTEw6OmNyZWF0ZUNvbXBpbGVy
KCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENvbXBp
bGVySW1wbCAqPigwKTsKK30KKworU2hhZGVySW1wbCAqQ29udGV4dE5VTEw6OmNyZWF0ZVNoYWRl
cihjb25zdCBnbDo6U2hhZGVyU3RhdGUgJmRhdGEpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxTaGFkZXJJbXBsICo+KDApOworfQorCitQcm9ncmFtSW1w
bCAqQ29udGV4dE5VTEw6OmNyZWF0ZVByb2dyYW0oY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmZGF0
YSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFByb2dy
YW1JbXBsICo+KDApOworfQorCitGcmFtZWJ1ZmZlckltcGwgKkNvbnRleHROVUxMOjpjcmVhdGVG
cmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmZGF0YSkKK3sKKyAgICBVTklN
UExFTUVOVEVEKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEZyYW1lYnVmZmVySW1wbCAqPigw
KTsKK30KKworVGV4dHVyZUltcGwgKkNvbnRleHROVUxMOjpjcmVhdGVUZXh0dXJlKGNvbnN0IGds
OjpUZXh0dXJlU3RhdGUgJnN0YXRlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8VGV4dHVyZUltcGwgKj4oMCk7Cit9CisKK1JlbmRlcmJ1ZmZlckltcGwg
KkNvbnRleHROVUxMOjpjcmVhdGVSZW5kZXJidWZmZXIoKQoreworICAgIFVOSU1QTEVNRU5URUQo
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVyYnVmZmVySW1wbCAqPigwKTsKK30KKwor
QnVmZmVySW1wbCAqQ29udGV4dE5VTEw6OmNyZWF0ZUJ1ZmZlcigpCit7CisgICAgVU5JTVBMRU1F
TlRFRCgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxCdWZmZXJJbXBsICo+KDApOworfQorCitW
ZXJ0ZXhBcnJheUltcGwgKkNvbnRleHROVUxMOjpjcmVhdGVWZXJ0ZXhBcnJheShjb25zdCBnbDo6
VmVydGV4QXJyYXlTdGF0ZSAmZGF0YSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFZlcnRleEFycmF5SW1wbCAqPigwKTsKK30KKworUXVlcnlJbXBsICpD
b250ZXh0TlVMTDo6Y3JlYXRlUXVlcnkoR0xlbnVtIHR5cGUpCit7CisgICAgVU5JTVBMRU1FTlRF
RCgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxRdWVyeUltcGwgKj4oMCk7Cit9CisKK0ZlbmNl
TlZJbXBsICpDb250ZXh0TlVMTDo6Y3JlYXRlRmVuY2VOVigpCit7CisgICAgVU5JTVBMRU1FTlRF
RCgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxGZW5jZU5WSW1wbCAqPigwKTsKK30KKworRmVu
Y2VTeW5jSW1wbCAqQ29udGV4dE5VTEw6OmNyZWF0ZUZlbmNlU3luYygpCit7CisgICAgVU5JTVBM
RU1FTlRFRCgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxGZW5jZVN5bmNJbXBsICo+KDApOwor
fQorCitUcmFuc2Zvcm1GZWVkYmFja0ltcGwgKkNvbnRleHROVUxMOjpjcmVhdGVUcmFuc2Zvcm1G
ZWVkYmFjayhjb25zdCBnbDo6VHJhbnNmb3JtRmVlZGJhY2tTdGF0ZSAmc3RhdGUpCit7CisgICAg
VU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUcmFuc2Zvcm1GZWVkYmFj
a0ltcGwgKj4oMCk7Cit9CisKK1NhbXBsZXJJbXBsICpDb250ZXh0TlVMTDo6Y3JlYXRlU2FtcGxl
cigpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTYW1w
bGVySW1wbCAqPigwKTsKK30KKworc3RkOjp2ZWN0b3I8UGF0aEltcGwgKj4gQ29udGV4dE5VTEw6
OmNyZWF0ZVBhdGhzKEdMc2l6ZWkgcmFuZ2UpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAg
IHJldHVybiBzdGQ6OnZlY3RvcjxQYXRoSW1wbCAqPigpOworfQorCit9ICAvLyBuYW1lc3BhY2Ug
cngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9u
dWxsL0NvbnRleHROVUxMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvQ29udGV4dE5VTEwuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Db250
ZXh0TlVMTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTUgQEAKKy8vCisvLyBDb3B5cmln
aHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBD
b250ZXh0TlVMTC5oOgorLy8gICAgRGVmaW5lcyB0aGUgY2xhc3MgaW50ZXJmYWNlIGZvciBDb250
ZXh0TlVMTCwgaW1wbGVtZW50aW5nIENvbnRleHRJbXBsLgorLy8KKworI2lmbmRlZiBMSUJBTkdM
RV9SRU5ERVJFUl9OVUxMX0NPTlRFWFROVUxMX0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVS
X05VTExfQ09OVEVYVE5VTExfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0NvbnRl
eHRJbXBsLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBDb250ZXh0TlVMTCA6IHB1Ymxp
YyBDb250ZXh0SW1wbAoreworICBwdWJsaWM6CisgICAgQ29udGV4dE5VTEwoY29uc3QgZ2w6OkNv
bnRleHRTdGF0ZSAmc3RhdGUpOworICAgIH5Db250ZXh0TlVMTCgpIG92ZXJyaWRlOworCisgICAg
Z2w6OkVycm9yIGluaXRpYWxpemUoKSBvdmVycmlkZTsKKworICAgIC8vIEZsdXNoIGFuZCBmaW5p
c2guCisgICAgZ2w6OkVycm9yIGZsdXNoKCkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGZpbmlz
aCgpIG92ZXJyaWRlOworCisgICAgLy8gRHJhd2luZyBtZXRob2RzLgorICAgIGdsOjpFcnJvciBk
cmF3QXJyYXlzKEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCkgb3ZlcnJp
ZGU7CisgICAgZ2w6OkVycm9yIGRyYXdBcnJheXNJbnN0YW5jZWQoR0xlbnVtIG1vZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZmlyc3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlQ291bnQpIG92ZXJyaWRlOworCisgICAgZ2w6
OkVycm9yIGRyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpJbmRleFJhbmdlICZpbmRleFJhbmdl
KSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdMZW51bSBt
b2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5k
ZXhSYW5nZSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGRyYXdSYW5nZUVsZW1lbnRzKEdMZW51
bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBlbmQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpJbmRleFJhbmdlICZpbmRleFJhbmdlKSBvdmVycmlkZTsKKworICAgIC8vIENIUk9N
SVVNX3BhdGhfcmVuZGVyaW5nIHBhdGggZHJhd2luZyBtZXRob2RzLgorCisgICAgLy8gU2hhZGVy
IGNyZWF0aW9uCisgICAgQ29tcGlsZXJJbXBsICpjcmVhdGVDb21waWxlcigpIG92ZXJyaWRlOwor
ICAgIFNoYWRlckltcGwgKmNyZWF0ZVNoYWRlcihjb25zdCBnbDo6U2hhZGVyU3RhdGUgJmRhdGEp
IG92ZXJyaWRlOworICAgIFByb2dyYW1JbXBsICpjcmVhdGVQcm9ncmFtKGNvbnN0IGdsOjpQcm9n
cmFtU3RhdGUgJmRhdGEpIG92ZXJyaWRlOworCisgICAgLy8gRnJhbWVidWZmZXIgY3JlYXRpb24K
KyAgICBGcmFtZWJ1ZmZlckltcGwgKmNyZWF0ZUZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1
ZmZlclN0YXRlICZkYXRhKSBvdmVycmlkZTsKKworICAgIC8vIFRleHR1cmUgY3JlYXRpb24KKyAg
ICBUZXh0dXJlSW1wbCAqY3JlYXRlVGV4dHVyZShjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZzdGF0
ZSkgb3ZlcnJpZGU7CisKKyAgICAvLyBSZW5kZXJidWZmZXIgY3JlYXRpb24KKyAgICBSZW5kZXJi
dWZmZXJJbXBsICpjcmVhdGVSZW5kZXJidWZmZXIoKSBvdmVycmlkZTsKKworICAgIC8vIEJ1ZmZl
ciBjcmVhdGlvbgorICAgIEJ1ZmZlckltcGwgKmNyZWF0ZUJ1ZmZlcigpIG92ZXJyaWRlOworCisg
ICAgLy8gVmVydGV4IEFycmF5IGNyZWF0aW9uCisgICAgVmVydGV4QXJyYXlJbXBsICpjcmVhdGVW
ZXJ0ZXhBcnJheShjb25zdCBnbDo6VmVydGV4QXJyYXlTdGF0ZSAmZGF0YSkgb3ZlcnJpZGU7CisK
KyAgICAvLyBRdWVyeSBhbmQgRmVuY2UgY3JlYXRpb24KKyAgICBRdWVyeUltcGwgKmNyZWF0ZVF1
ZXJ5KEdMZW51bSB0eXBlKSBvdmVycmlkZTsKKyAgICBGZW5jZU5WSW1wbCAqY3JlYXRlRmVuY2VO
VigpIG92ZXJyaWRlOworICAgIEZlbmNlU3luY0ltcGwgKmNyZWF0ZUZlbmNlU3luYygpIG92ZXJy
aWRlOworCisgICAgLy8gVHJhbnNmb3JtIEZlZWRiYWNrIGNyZWF0aW9uCisgICAgVHJhbnNmb3Jt
RmVlZGJhY2tJbXBsICpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygKKyAgICAgICAgY29uc3QgZ2w6
OlRyYW5zZm9ybUZlZWRiYWNrU3RhdGUgJnN0YXRlKSBvdmVycmlkZTsKKworICAgIC8vIFNhbXBs
ZXIgb2JqZWN0IGNyZWF0aW9uCisgICAgU2FtcGxlckltcGwgKmNyZWF0ZVNhbXBsZXIoKSBvdmVy
cmlkZTsKKworICAgIHN0ZDo6dmVjdG9yPFBhdGhJbXBsICo+IGNyZWF0ZVBhdGhzKEdMc2l6ZWkg
cmFuZ2UpIG92ZXJyaWRlOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8g
TElCQU5HTEVfUkVOREVSRVJfTlVMTF9DT05URVhUTlVMTF9IXwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRGV2aWNlTlVMTC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L251bGwvRGV2aWNlTlVMTC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRGV2aWNlTlVMTC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0OCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIERldmljZU5VTEwuY3BwOgorLy8g
ICAgSW1wbGVtZW50cyB0aGUgY2xhc3MgbWV0aG9kcyBmb3IgRGV2aWNlTlVMTC4KKy8vCisKKyNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9udWxsL0RldmljZU5VTEwuaCIKKworI2luY2x1ZGUg
ImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgcngKK3sKKworRGV2aWNlTlVMTDo6RGV2aWNl
TlVMTCgpIDogRGV2aWNlSW1wbCgpCit7Cit9CisKK0RldmljZU5VTEw6On5EZXZpY2VOVUxMKCkK
K3sKK30KKworZWdsOjpFcnJvciBEZXZpY2VOVUxMOjpnZXREZXZpY2Uodm9pZCAqKm91dFZhbHVl
KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFE
X0FDQ0VTUyk7Cit9CisKK0VHTGludCBEZXZpY2VOVUxMOjpnZXRUeXBlKCkKK3sKKyAgICBVTklN
UExFTUVOVEVEKCk7CisgICAgcmV0dXJuIEVHTGludCgpOworfQorCit2b2lkIERldmljZU5VTEw6
OmdlbmVyYXRlRXh0ZW5zaW9ucyhlZ2w6OkRldmljZUV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMp
IGNvbnN0Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCitib29sIERldmljZU5VTEw6OmRl
dmljZUV4dGVybmFsbHlTb3VyY2VkKCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0
dXJuIGJvb2woKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9EZXZpY2VOVUxMLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251
bGwvRGV2aWNlTlVMTC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0RldmljZU5VTEwuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDMyIEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gRGV2aWNlTlVMTC5oOgorLy8gICAgRGVmaW5l
cyB0aGUgY2xhc3MgaW50ZXJmYWNlIGZvciBEZXZpY2VOVUxMLCBpbXBsZW1lbnRpbmcgRGV2aWNl
SW1wbC4KKy8vCisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfTlVMTF9ERVZJQ0VOVUxMX0hf
CisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX05VTExfREVWSUNFTlVMTF9IXworCisjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvRGV2aWNlSW1wbC5oIgorCituYW1lc3BhY2UgcngKK3sKKwor
Y2xhc3MgRGV2aWNlTlVMTCA6IHB1YmxpYyBEZXZpY2VJbXBsCit7CisgIHB1YmxpYzoKKyAgICBE
ZXZpY2VOVUxMKCk7CisgICAgfkRldmljZU5VTEwoKSBvdmVycmlkZTsKKworICAgIGVnbDo6RXJy
b3IgZ2V0RGV2aWNlKHZvaWQgKipvdXRWYWx1ZSkgb3ZlcnJpZGU7CisgICAgRUdMaW50IGdldFR5
cGUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGdlbmVyYXRlRXh0ZW5zaW9ucyhlZ2w6OkRldmljZUV4
dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgZGV2aWNl
RXh0ZXJuYWxseVNvdXJjZWQoKSBvdmVycmlkZTsKK307CisKK30gIC8vIG5hbWVzcGFjZSByeAor
CisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX05VTExfREVWSUNFTlVMTF9IXwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRGlzcGxh
eU5VTEwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9udWxsL0Rpc3BsYXlOVUxMLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9EaXNwbGF5TlVM
TC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNjcgQEAKKy8vCisvLyBDb3B5cmlnaHQg
MjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBEaXNw
bGF5TlVMTC5jcHA6CisvLyAgICBJbXBsZW1lbnRzIHRoZSBjbGFzcyBtZXRob2RzIGZvciBEaXNw
bGF5TlVMTC4KKy8vCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9udWxsL0Rpc3BsYXlO
VUxMLmgiCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisK
K0Rpc3BsYXlOVUxMOjpEaXNwbGF5TlVMTCgpIDogRGlzcGxheUltcGwoKQoreworfQorCitEaXNw
bGF5TlVMTDo6fkRpc3BsYXlOVUxMKCkKK3sKK30KKworZWdsOjpFcnJvciBEaXNwbGF5TlVMTDo6
aW5pdGlhbGl6ZShlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpCit7CisgICAgVU5JTVBMRU1FTlRFRCgp
OworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfQUNDRVNTKTsKK30KKwordm9pZCBEaXNw
bGF5TlVMTDo6dGVybWluYXRlKCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK2VnbDo6
RXJyb3IgRGlzcGxheU5VTEw6Om1ha2VDdXJyZW50KGVnbDo6U3VyZmFjZSAqZHJhd1N1cmZhY2Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OlN1cmZhY2UgKnJlYWRT
dXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkNvbnRleHQg
KmNvbnRleHQpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBlZ2w6OkVycm9y
KEVHTF9CQURfQUNDRVNTKTsKK30KKworZWdsOjpDb25maWdTZXQgRGlzcGxheU5VTEw6OmdlbmVy
YXRlQ29uZmlncygpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBlZ2w6OkNv
bmZpZ1NldCgpOworfQorCitib29sIERpc3BsYXlOVUxMOjp0ZXN0RGV2aWNlTG9zdCgpCit7Cisg
ICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBib29sKCk7Cit9CisKK2VnbDo6RXJyb3Ig
RGlzcGxheU5VTEw6OnJlc3RvcmVMb3N0RGV2aWNlKCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7
CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BQ0NFU1MpOworfQorCitib29sIERpc3Bs
YXlOVUxMOjppc1ZhbGlkTmF0aXZlV2luZG93KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KSBj
b25zdAoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gYm9vbCgpOworfQorCitz
dGQ6OnN0cmluZyBEaXNwbGF5TlVMTDo6Z2V0VmVuZG9yU3RyaW5nKCkgY29uc3QKK3sKKyAgICBV
TklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7Cit9CisKK2VnbDo6RXJy
b3IgRGlzcGxheU5VTEw6OmdldERldmljZShEZXZpY2VJbXBsICoqZGV2aWNlKQoreworICAgIFVO
SU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FDQ0VTUyk7Cit9
CisKK2VnbDo6RXJyb3IgRGlzcGxheU5VTEw6OndhaXRDbGllbnQoKSBjb25zdAoreworICAgIFVO
SU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FDQ0VTUyk7Cit9
CisKK2VnbDo6RXJyb3IgRGlzcGxheU5VTEw6OndhaXROYXRpdmUoRUdMaW50IGVuZ2luZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpTdXJmYWNlICpkcmF3U3VyZmFj
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpTdXJmYWNlICpyZWFk
U3VyZmFjZSkgY29uc3QKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGVnbDo6
RXJyb3IoRUdMX0JBRF9BQ0NFU1MpOworfQorCitnbDo6VmVyc2lvbiBEaXNwbGF5TlVMTDo6Z2V0
TWF4U3VwcG9ydGVkRVNWZXJzaW9uKCkgY29uc3QKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cisg
ICAgcmV0dXJuIGdsOjpWZXJzaW9uKCk7Cit9CisKK1N1cmZhY2VJbXBsICpEaXNwbGF5TlVMTDo6
Y3JlYXRlV2luZG93U3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25m
aWcgKmNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJp
YnMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTdXJm
YWNlSW1wbCAqPigwKTsKK30KKworU3VyZmFjZUltcGwgKkRpc3BsYXlOVUxMOjpjcmVhdGVQYnVm
ZmVyU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25m
aWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKK3sKKyAgICBVTklNUExFTUVOVEVE
KCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFN1cmZhY2VJbXBsICo+KDApOworfQorCitTdXJm
YWNlSW1wbCAqRGlzcGxheU5VTEw6OmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNvbnN0
IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEVHTENsaWVudEJ1ZmZlciBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAg
JmF0dHJpYnMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxTdXJmYWNlSW1wbCAqPigwKTsKK30KKworU3VyZmFjZUltcGwgKkRpc3BsYXlOVUxMOjpjcmVh
dGVQaXhtYXBTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAq
Y29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBOYXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmli
cykKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFN1cmZh
Y2VJbXBsICo+KDApOworfQorCitJbWFnZUltcGwgKkRpc3BsYXlOVUxMOjpjcmVhdGVJbWFnZShF
R0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6
SW1hZ2VTaWJsaW5nICpidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKK3sKKyAgICBVTklNUExFTUVOVEVE
KCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEltYWdlSW1wbCAqPigwKTsKK30KKworQ29udGV4
dEltcGwgKkRpc3BsYXlOVUxMOjpjcmVhdGVDb250ZXh0KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUg
JnN0YXRlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Q29udGV4dEltcGwgKj4oMCk7Cit9CisKK1N0cmVhbVByb2R1Y2VySW1wbCAqRGlzcGxheU5VTEw6
OmNyZWF0ZVN0cmVhbVByb2R1Y2VyRDNEVGV4dHVyZU5WMTIoCisgICAgZWdsOjpTdHJlYW06OkNv
bnN1bWVyVHlwZSBjb25zdW1lclR5cGUsCisgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0
dHJpYnMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxT
dHJlYW1Qcm9kdWNlckltcGwgKj4oMCk7Cit9CisKK3ZvaWQgRGlzcGxheU5VTEw6OmdlbmVyYXRl
RXh0ZW5zaW9ucyhlZ2w6OkRpc3BsYXlFeHRlbnNpb25zICpvdXRFeHRlbnNpb25zKSBjb25zdAor
eworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwordm9pZCBEaXNwbGF5TlVMTDo6Z2VuZXJhdGVD
YXBzKGVnbDo6Q2FwcyAqb3V0Q2FwcykgY29uc3QKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9
CisKK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRGlzcGxheU5VTEwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9EaXNwbGF5TlVM
TC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9udWxsL0Rpc3BsYXlOVUxMLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4
MSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKy8vIERpc3BsYXlOVUxMLmg6CisvLyAgICBEZWZpbmVzIHRoZSBjbGFz
cyBpbnRlcmZhY2UgZm9yIERpc3BsYXlOVUxMLCBpbXBsZW1lbnRpbmcgRGlzcGxheUltcGwuCisv
LworCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX05VTExfRElTUExBWU5VTExfSF8KKyNkZWZp
bmUgTElCQU5HTEVfUkVOREVSRVJfTlVMTF9ESVNQTEFZTlVMTF9IXworCisjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvRGlzcGxheUltcGwuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNz
IERpc3BsYXlOVUxMIDogcHVibGljIERpc3BsYXlJbXBsCit7CisgIHB1YmxpYzoKKyAgICBEaXNw
bGF5TlVMTCgpOworICAgIH5EaXNwbGF5TlVMTCgpIG92ZXJyaWRlOworCisgICAgZWdsOjpFcnJv
ciBpbml0aWFsaXplKGVnbDo6RGlzcGxheSAqZGlzcGxheSkgb3ZlcnJpZGU7CisgICAgdm9pZCB0
ZXJtaW5hdGUoKSBvdmVycmlkZTsKKworICAgIGVnbDo6RXJyb3IgbWFrZUN1cnJlbnQoZWdsOjpT
dXJmYWNlICpkcmF3U3VyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3Vy
ZmFjZSAqcmVhZFN1cmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6Q29udGV4
dCAqY29udGV4dCkgb3ZlcnJpZGU7CisKKyAgICBlZ2w6OkNvbmZpZ1NldCBnZW5lcmF0ZUNvbmZp
Z3MoKSBvdmVycmlkZTsKKworICAgIGJvb2wgdGVzdERldmljZUxvc3QoKSBvdmVycmlkZTsKKyAg
ICBlZ2w6OkVycm9yIHJlc3RvcmVMb3N0RGV2aWNlKCkgb3ZlcnJpZGU7CisKKyAgICBib29sIGlz
VmFsaWROYXRpdmVXaW5kb3coRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3cpIGNvbnN0IG92ZXJy
aWRlOworCisgICAgc3RkOjpzdHJpbmcgZ2V0VmVuZG9yU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGU7
CisKKyAgICBlZ2w6OkVycm9yIGdldERldmljZShEZXZpY2VJbXBsICoqZGV2aWNlKSBvdmVycmlk
ZTsKKworICAgIGVnbDo6RXJyb3Igd2FpdENsaWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGVn
bDo6RXJyb3Igd2FpdE5hdGl2ZShFR0xpbnQgZW5naW5lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBlZ2w6OlN1cmZhY2UgKmRyYXdTdXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBlZ2w6OlN1cmZhY2UgKnJlYWRTdXJmYWNlKSBjb25zdCBvdmVycmlkZTsKKyAgICBnbDo6VmVy
c2lvbiBnZXRNYXhTdXBwb3J0ZWRFU1ZlcnNpb24oKSBjb25zdCBvdmVycmlkZTsKKworICAgIFN1
cmZhY2VJbXBsICpjcmVhdGVXaW5kb3dTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZz
dGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNv
bmZpZyAqY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7Cisg
ICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBidWZmZXJTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0
YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
ZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKKyAg
ICBTdXJmYWNlSW1wbCAqY3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoY29uc3QgZWdsOjpT
dXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIHNoYXJl
SGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CisgICAgU3VyZmFjZUlt
cGwgKmNyZWF0ZVBpeG1hcFN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpj
b25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hdGl2
ZVBpeG1hcFR5cGUgbmF0aXZlUGl4bWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKKworICAg
IEltYWdlSW1wbCAqY3JlYXRlSW1hZ2UoRUdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlZ2w6OkltYWdlU2libGluZyAqYnVmZmVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOworCisg
ICAgQ29udGV4dEltcGwgKmNyZWF0ZUNvbnRleHQoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmc3Rh
dGUpIG92ZXJyaWRlOworCisgICAgU3RyZWFtUHJvZHVjZXJJbXBsICpjcmVhdGVTdHJlYW1Qcm9k
dWNlckQzRFRleHR1cmVOVjEyKAorICAgICAgICBlZ2w6OlN0cmVhbTo6Q29uc3VtZXJUeXBlIGNv
bnN1bWVyVHlwZSwKKyAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92
ZXJyaWRlOworCisgIHByaXZhdGU6CisgICAgdm9pZCBnZW5lcmF0ZUV4dGVuc2lvbnMoZWdsOjpE
aXNwbGF5RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucykgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9p
ZCBnZW5lcmF0ZUNhcHMoZWdsOjpDYXBzICpvdXRDYXBzKSBjb25zdCBvdmVycmlkZTsKK307CisK
K30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX05VTExf
RElTUExBWU5VTExfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9udWxsL0ZlbmNlTlZOVUxMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9GZW5jZU5WTlVMTC5jcHAJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL251bGwvRmVuY2VOVk5VTEwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMg
QEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisvLyBGZW5jZU5WTlVMTC5jcHA6CisvLyAgICBJbXBsZW1lbnRzIHRoZSBj
bGFzcyBtZXRob2RzIGZvciBGZW5jZU5WTlVMTC4KKy8vCisKKyNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9udWxsL0ZlbmNlTlZOVUxMLmgiCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIK
KworbmFtZXNwYWNlIHJ4Cit7CisKK0ZlbmNlTlZOVUxMOjpGZW5jZU5WTlVMTCgpIDogRmVuY2VO
VkltcGwoKQoreworfQorCitGZW5jZU5WTlVMTDo6fkZlbmNlTlZOVUxMKCkKK3sKK30KKworZ2w6
OkVycm9yIEZlbmNlTlZOVUxMOjpzZXQoR0xlbnVtIGNvbmRpdGlvbikKK3sKKyAgICBVTklNUExF
TUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9
CisKK2dsOjpFcnJvciBGZW5jZU5WTlVMTDo6dGVzdChHTGJvb2xlYW4gKm91dEZpbmlzaGVkKQor
eworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIEZlbmNlTlZOVUxMOjpmaW5pc2goKQoreworICAg
IFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9GZW5jZU5WTlVMTC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0Zl
bmNlTlZOVUxMLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRmVuY2VOVk5VTEwuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDMxIEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gRmVuY2VOVk5VTEwuaDoKKy8vICAgIERlZmluZXMg
dGhlIGNsYXNzIGludGVyZmFjZSBmb3IgRmVuY2VOVk5VTEwsIGltcGxlbWVudGluZyBGZW5jZU5W
SW1wbC4KKy8vCisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfTlVMTF9GRU5DRU5WTlVMTF9I
XworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9OVUxMX0ZFTkNFTlZOVUxMX0hfCisKKyNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9GZW5jZU5WSW1wbC5oIgorCituYW1lc3BhY2UgcngKK3sK
KworY2xhc3MgRmVuY2VOVk5VTEwgOiBwdWJsaWMgRmVuY2VOVkltcGwKK3sKKyAgcHVibGljOgor
ICAgIEZlbmNlTlZOVUxMKCk7CisgICAgfkZlbmNlTlZOVUxMKCkgb3ZlcnJpZGU7CisKKyAgICBn
bDo6RXJyb3Igc2V0KEdMZW51bSBjb25kaXRpb24pIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciB0
ZXN0KEdMYm9vbGVhbiAqb3V0RmluaXNoZWQpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBmaW5p
c2goKSBvdmVycmlkZTsKK307CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJ
QkFOR0xFX1JFTkRFUkVSX05VTExfRkVOQ0VOVk5VTExfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0ZlbmNlU3luY05VTEwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9udWxsL0ZlbmNlU3luY05VTEwuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0ZlbmNlU3luY05VTEwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBGZW5jZVN5bmNOVUxM
LmNwcDoKKy8vICAgIEltcGxlbWVudHMgdGhlIGNsYXNzIG1ldGhvZHMgZm9yIEZlbmNlU3luY05V
TEwuCisvLworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbnVsbC9GZW5jZVN5bmNOVUxM
LmgiCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK0Zl
bmNlU3luY05VTEw6OkZlbmNlU3luY05VTEwoKSA6IEZlbmNlU3luY0ltcGwoKQoreworfQorCitG
ZW5jZVN5bmNOVUxMOjp+RmVuY2VTeW5jTlVMTCgpCit7Cit9CisKK2dsOjpFcnJvciBGZW5jZVN5
bmNOVUxMOjpzZXQoR0xlbnVtIGNvbmRpdGlvbiwgR0xiaXRmaWVsZCBmbGFncykKK3sKKyAgICBV
TklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7Cit9CisKK2dsOjpFcnJvciBGZW5jZVN5bmNOVUxMOjpjbGllbnRXYWl0KEdMYml0ZmllbGQg
ZmxhZ3MsIEdMdWludDY0IHRpbWVvdXQsIEdMZW51bSAqb3V0UmVzdWx0KQoreworICAgIFVOSU1Q
TEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
K30KKworZ2w6OkVycm9yIEZlbmNlU3luY05VTEw6OnNlcnZlcldhaXQoR0xiaXRmaWVsZCBmbGFn
cywgR0x1aW50NjQgdGltZW91dCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBGZW5jZVN5
bmNOVUxMOjpnZXRTdGF0dXMoR0xpbnQgKm91dFJlc3VsdCkKK3sKKyAgICBVTklNUExFTUVOVEVE
KCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK30g
IC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL251bGwvRmVuY2VTeW5jTlVMTC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0ZlbmNlU3luY05VTEwu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvbnVsbC9GZW5jZVN5bmNOVUxMLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
MiBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKy8vIEZlbmNlU3luY05VTEwuaDoKKy8vICAgIERlZmluZXMgdGhlIGNs
YXNzIGludGVyZmFjZSBmb3IgRmVuY2VTeW5jTlVMTCwgaW1wbGVtZW50aW5nIEZlbmNlU3luY0lt
cGwuCisvLworCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX05VTExfRkVOQ0VTWU5DTlVMTF9I
XworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9OVUxMX0ZFTkNFU1lOQ05VTExfSF8KKworI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0ZlbmNlU3luY0ltcGwuaCIKKworbmFtZXNwYWNlIHJ4
Cit7CisKK2NsYXNzIEZlbmNlU3luY05VTEwgOiBwdWJsaWMgRmVuY2VTeW5jSW1wbAoreworICBw
dWJsaWM6CisgICAgRmVuY2VTeW5jTlVMTCgpOworICAgIH5GZW5jZVN5bmNOVUxMKCkgb3ZlcnJp
ZGU7CisKKyAgICBnbDo6RXJyb3Igc2V0KEdMZW51bSBjb25kaXRpb24sIEdMYml0ZmllbGQgZmxh
Z3MpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBjbGllbnRXYWl0KEdMYml0ZmllbGQgZmxhZ3Ms
IEdMdWludDY0IHRpbWVvdXQsIEdMZW51bSAqb3V0UmVzdWx0KSBvdmVycmlkZTsKKyAgICBnbDo6
RXJyb3Igc2VydmVyV2FpdChHTGJpdGZpZWxkIGZsYWdzLCBHTHVpbnQ2NCB0aW1lb3V0KSBvdmVy
cmlkZTsKKyAgICBnbDo6RXJyb3IgZ2V0U3RhdHVzKEdMaW50ICpvdXRSZXN1bHQpIG92ZXJyaWRl
OworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVS
RVJfTlVMTF9GRU5DRVNZTkNOVUxMX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9GcmFtZWJ1ZmZlck5VTEwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0Zy
YW1lYnVmZmVyTlVMTC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRnJhbWVidWZmZXJOVUxMLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDEzMSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEZyYW1lYnVmZmVyTlVMTC5j
cHA6CisvLyAgICBJbXBsZW1lbnRzIHRoZSBjbGFzcyBtZXRob2RzIGZvciBGcmFtZWJ1ZmZlck5V
TEwuCisvLworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbnVsbC9GcmFtZWJ1ZmZlck5V
TEwuaCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgcngKK3sKKwor
RnJhbWVidWZmZXJOVUxMOjpGcmFtZWJ1ZmZlck5VTEwoY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3Rh
dGUgJnN0YXRlKSA6IEZyYW1lYnVmZmVySW1wbChzdGF0ZSkKK3sKK30KKworRnJhbWVidWZmZXJO
VUxMOjp+RnJhbWVidWZmZXJOVUxMKCkKK3sKK30KKworZ2w6OkVycm9yIEZyYW1lYnVmZmVyTlVM
TDo6ZGlzY2FyZChzaXplX3QgY291bnQsIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpCit7Cisg
ICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOworfQorCitnbDo6RXJyb3IgRnJhbWVidWZmZXJOVUxMOjppbnZhbGlkYXRlKHNpemVf
dCBjb3VudCwgY29uc3QgR0xlbnVtICphdHRhY2htZW50cykKK3sKKyAgICBVTklNUExFTUVOVEVE
KCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2ds
OjpFcnJvciBGcmFtZWJ1ZmZlck5VTEw6OmludmFsaWRhdGVTdWIoc2l6ZV90IGNvdW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKmF0dGFj
aG1lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6UmVjdGFuZ2xlICZhcmVhKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIEZyYW1lYnVm
ZmVyTlVMTDo6Y2xlYXIoQ29udGV4dEltcGwgKmNvbnRleHQsIEdMYml0ZmllbGQgbWFzaykKK3sK
KyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBGcmFtZWJ1ZmZlck5VTEw6OmNsZWFyQnVmZmVyZnYo
Q29udGV4dEltcGwgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGRyYXdidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlcykKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7
CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpF
cnJvciBGcmFtZWJ1ZmZlck5VTEw6OmNsZWFyQnVmZmVydWl2KENvbnRleHRJbXBsICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRyYXdi
dWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THVpbnQgKnZhbHVlcykKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBGcmFtZWJ1ZmZlck5V
TEw6OmNsZWFyQnVmZmVyaXYoQ29udGV4dEltcGwgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBidWZmZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZXMpCit7CisgICAg
VU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOworfQorCitnbDo6RXJyb3IgRnJhbWVidWZmZXJOVUxMOjpjbGVhckJ1ZmZlcmZpKENvbnRl
eHRJbXBsICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBkcmF3YnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGZsb2F0IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBzdGVuY2lsKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworR0xlbnVtIEZyYW1lYnVmZmVy
TlVMTDo6Z2V0SW1wbGVtZW50YXRpb25Db2xvclJlYWRGb3JtYXQoKSBjb25zdAoreworICAgIFVO
SU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gR0xlbnVtKCk7Cit9CisKK0dMZW51bSBGcmFtZWJ1
ZmZlck5VTEw6OmdldEltcGxlbWVudGF0aW9uQ29sb3JSZWFkVHlwZSgpIGNvbnN0Cit7CisgICAg
VU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBHTGVudW0oKTsKK30KKworZ2w6OkVycm9yIEZy
YW1lYnVmZmVyTlVMTDo6cmVhZFBpeGVscyhDb250ZXh0SW1wbCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmYXJlYSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqcGl4ZWxzKSBjb25zdAorewor
ICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKK30KKworZ2w6OkVycm9yIEZyYW1lYnVmZmVyTlVMTDo6YmxpdChDb250ZXh0SW1w
bCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJl
Y3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OlJlY3RhbmdsZSAmZGVzdEFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMYml0ZmllbGQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGZpbHRlcikKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2Jvb2wgRnJhbWVidWZmZXJOVUxMOjpjaGVj
a1N0YXR1cygpIGNvbnN0Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBib29s
KCk7Cit9CisKK3ZvaWQgRnJhbWVidWZmZXJOVUxMOjpzeW5jU3RhdGUoY29uc3QgZ2w6OkZyYW1l
YnVmZmVyOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9
CisKK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRnJhbWVidWZmZXJOVUxMLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRnJhbWVi
dWZmZXJOVUxMLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRnJhbWVidWZmZXJOVUxMLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw3MCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEZyYW1lYnVmZmVyTlVMTC5oOgorLy8gICAg
RGVmaW5lcyB0aGUgY2xhc3MgaW50ZXJmYWNlIGZvciBGcmFtZWJ1ZmZlck5VTEwsIGltcGxlbWVu
dGluZyBGcmFtZWJ1ZmZlckltcGwuCisvLworCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX05V
TExfRlJBTUVCVUZGRVJOVUxMX0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX05VTExfRlJB
TUVCVUZGRVJOVUxMX0hfCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9GcmFtZWJ1ZmZl
ckltcGwuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIEZyYW1lYnVmZmVyTlVMTCA6IHB1
YmxpYyBGcmFtZWJ1ZmZlckltcGwKK3sKKyAgcHVibGljOgorICAgIEZyYW1lYnVmZmVyTlVMTChj
b25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUpOworICAgIH5GcmFtZWJ1ZmZlck5VTEwo
KSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBkaXNjYXJkKHNpemVfdCBjb3VudCwgY29uc3Qg
R0xlbnVtICphdHRhY2htZW50cykgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGludmFsaWRhdGUo
c2l6ZV90IGNvdW50LCBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKSBvdmVycmlkZTsKKyAgICBn
bDo6RXJyb3IgaW52YWxpZGF0ZVN1YihzaXplX3QgY291bnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xlbnVtICphdHRhY2htZW50cywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZhcmVhKSBvdmVycmlkZTsKKworICAgIGdsOjpF
cnJvciBjbGVhcihDb250ZXh0SW1wbCAqY29udGV4dCwgR0xiaXRmaWVsZCBtYXNrKSBvdmVycmlk
ZTsKKyAgICBnbDo6RXJyb3IgY2xlYXJCdWZmZXJmdihDb250ZXh0SW1wbCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYnVmZmVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdmFsdWVzKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgY2xlYXJC
dWZmZXJ1aXYoQ29udGV4dEltcGwgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRy
YXdidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFs
dWVzKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgY2xlYXJCdWZmZXJpdihDb250ZXh0SW1wbCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYnVmZmVyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlcykgb3ZlcnJpZGU7CisgICAgZ2w6OkVy
cm9yIGNsZWFyQnVmZmVyZmkoQ29udGV4dEltcGwgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBkcmF3YnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgZGVw
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3RlbmNpbCkgb3ZlcnJpZGU7
CisKKyAgICBHTGVudW0gZ2V0SW1wbGVtZW50YXRpb25Db2xvclJlYWRGb3JtYXQoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBHTGVudW0gZ2V0SW1wbGVtZW50YXRpb25Db2xvclJlYWRUeXBlKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHJlYWRQaXhlbHMoQ29udGV4dEltcGwgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmYXJlYSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAq
cGl4ZWxzKSBjb25zdCBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBibGl0KENvbnRleHRJbXBs
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJj
ZUFyZWEsCisgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmZGVzdEFyZWEs
CisgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBtYXNrLAorICAgICAgICAgICAgICAgICAg
IEdMZW51bSBmaWx0ZXIpIG92ZXJyaWRlOworCisgICAgYm9vbCBjaGVja1N0YXR1cygpIGNvbnN0
IG92ZXJyaWRlOworCisgICAgdm9pZCBzeW5jU3RhdGUoY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpE
aXJ0eUJpdHMgJmRpcnR5Qml0cykgb3ZlcnJpZGU7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcngK
KworI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9OVUxMX0ZSQU1FQlVGRkVSTlVMTF9IXwpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwv
SW1hZ2VOVUxMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvbnVsbC9JbWFnZU5VTEwuY3BwCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0ltYWdlTlVM
TC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNyBAQAorLy8KKy8vIENvcHlyaWdodCAy
MDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEltYWdl
TlVMTC5jcHA6CisvLyAgICBJbXBsZW1lbnRzIHRoZSBjbGFzcyBtZXRob2RzIGZvciBJbWFnZU5V
TEwuCisvLworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbnVsbC9JbWFnZU5VTEwuaCIK
KworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgcngKK3sKKworSW1hZ2VO
VUxMOjpJbWFnZU5VTEwoKSA6IEltYWdlSW1wbCgpCit7Cit9CisKK0ltYWdlTlVMTDo6fkltYWdl
TlVMTCgpCit7Cit9CisKK2VnbDo6RXJyb3IgSW1hZ2VOVUxMOjppbml0aWFsaXplKCkKK3sKKyAg
ICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BQ0NFU1Mp
OworfQorCitnbDo6RXJyb3IgSW1hZ2VOVUxMOjpvcnBoYW4oZWdsOjpJbWFnZVNpYmxpbmcgKnNp
YmxpbmcpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOworfQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0ltYWdlTlVMTC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9udWxsL0ltYWdlTlVMTC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0ltYWdlTlVMTC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMzAgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBJbWFnZU5VTEwuaDoKKy8vICAgIERl
ZmluZXMgdGhlIGNsYXNzIGludGVyZmFjZSBmb3IgSW1hZ2VOVUxMLCBpbXBsZW1lbnRpbmcgSW1h
Z2VJbXBsLgorLy8KKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9OVUxMX0lNQUdFTlVMTF9I
XworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9OVUxMX0lNQUdFTlVMTF9IXworCisjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvSW1hZ2VJbXBsLmgiCisKK25hbWVzcGFjZSByeAoreworCitj
bGFzcyBJbWFnZU5VTEwgOiBwdWJsaWMgSW1hZ2VJbXBsCit7CisgIHB1YmxpYzoKKyAgICBJbWFn
ZU5VTEwoKTsKKyAgICB+SW1hZ2VOVUxMKCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBpbml0
aWFsaXplKCkgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJyb3Igb3JwaGFuKGVnbDo6SW1hZ2VTaWJs
aW5nICpzaWJsaW5nKSBvdmVycmlkZTsKK307CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5k
aWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX05VTExfSU1BR0VOVUxMX0hfCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9QYXRoTlVMTC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL251bGwvUGF0aE5VTEwuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1BhdGhOVUxMLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQwIEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gUGF0aE5VTEwuY3BwOgorLy8gICAg
SW1wbGVtZW50cyB0aGUgY2xhc3MgbWV0aG9kcyBmb3IgUGF0aE5VTEwuCisvLworCisjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvbnVsbC9QYXRoTlVMTC5oIgorCisjaW5jbHVkZSAiY29tbW9u
L2RlYnVnLmgiCisKK25hbWVzcGFjZSByeAoreworCitQYXRoTlVMTDo6UGF0aE5VTEwoKSA6IFBh
dGhJbXBsKCkKK3sKK30KKworUGF0aE5VTEw6On5QYXRoTlVMTCgpCit7Cit9CisKK2dsOjpFcnJv
ciBQYXRoTlVMTDo6c2V0Q29tbWFuZHMoR0xzaXplaSBudW1Db21tYW5kcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSAqY29tbWFuZHMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29vcmRzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gY29vcmRUeXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB2b2lkICpjb29yZHMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCit2b2lkIFBh
dGhOVUxMOjpzZXRQYXRoUGFyYW1ldGVyKEdMZW51bSBwbmFtZSwgR0xmbG9hdCB2YWx1ZSkKK3sK
KyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUGF0aE5VTEwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvbnVsbC9QYXRoTlVMTC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1BhdGhOVUxMLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwzNSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFBhdGhOVUxMLmg6CisvLyAgICBEZWZp
bmVzIHRoZSBjbGFzcyBpbnRlcmZhY2UgZm9yIFBhdGhOVUxMLCBpbXBsZW1lbnRpbmcgUGF0aElt
cGwuCisvLworCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX05VTExfUEFUSE5VTExfSF8KKyNk
ZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfTlVMTF9QQVRITlVMTF9IXworCisjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvUGF0aEltcGwuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIFBh
dGhOVUxMIDogcHVibGljIFBhdGhJbXBsCit7CisgIHB1YmxpYzoKKyAgICBQYXRoTlVMTCgpOwor
ICAgIH5QYXRoTlVMTCgpIG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIHNldENvbW1hbmRzKEdM
c2l6ZWkgbnVtQ29tbWFuZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWJ5
dGUgKmNvbW1hbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUNvb3Jk
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvb3JkVHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqY29vcmRzKSBvdmVycmlkZTsKKworICAgIHZv
aWQgc2V0UGF0aFBhcmFtZXRlcihHTGVudW0gcG5hbWUsIEdMZmxvYXQgdmFsdWUpIG92ZXJyaWRl
OworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVS
RVJfTlVMTF9QQVRITlVMTF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL251bGwvUHJvZ3JhbU5VTEwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1Byb2dyYW1OVUxM
LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvbnVsbC9Qcm9ncmFtTlVMTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwyMTIgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisvLyBQcm9ncmFtTlVMTC5jcHA6CisvLyAgICBJbXBsZW1lbnRz
IHRoZSBjbGFzcyBtZXRob2RzIGZvciBQcm9ncmFtTlVMTC4KKy8vCisKKyNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9udWxsL1Byb2dyYW1OVUxMLmgiCisKKyNpbmNsdWRlICJjb21tb24vZGVi
dWcuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK1Byb2dyYW1OVUxMOjpQcm9ncmFtTlVMTChjb25z
dCBnbDo6UHJvZ3JhbVN0YXRlICZzdGF0ZSkgOiBQcm9ncmFtSW1wbChzdGF0ZSkKK3sKK30KKwor
UHJvZ3JhbU5VTEw6On5Qcm9ncmFtTlVMTCgpCit7Cit9CisKK0xpbmtSZXN1bHQgUHJvZ3JhbU5V
TEw6OmxvYWQoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGdsOjpCaW5hcnlJbnB1dFN0cmVhbSAqc3Ry
ZWFtKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gTGlua1Jlc3VsdChmYWxz
ZSwgZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Cit9CisKK2dsOjpFcnJvciBQcm9n
cmFtTlVMTDo6c2F2ZShnbDo6QmluYXJ5T3V0cHV0U3RyZWFtICpzdHJlYW0pCit7CisgICAgVU5J
TVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OworfQorCit2b2lkIFByb2dyYW1OVUxMOjpzZXRCaW5hcnlSZXRyaWV2YWJsZUhpbnQoYm9vbCBy
ZXRyaWV2YWJsZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK0xpbmtSZXN1bHQgUHJv
Z3JhbU5VTEw6OmxpbmsoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwgZ2w6OkluZm9Mb2cg
JmluZm9Mb2cpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBMaW5rUmVzdWx0
KGZhbHNlLCBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKK30KKworR0xib29sZWFu
IFByb2dyYW1OVUxMOjp2YWxpZGF0ZShjb25zdCBnbDo6Q2FwcyAmY2FwcywgZ2w6OkluZm9Mb2cg
KmluZm9Mb2cpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBHTGJvb2xlYW4o
KTsKK30KKwordm9pZCBQcm9ncmFtTlVMTDo6c2V0VW5pZm9ybTFmdihHTGludCBsb2NhdGlvbiwg
R0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7
Cit9CisKK3ZvaWQgUHJvZ3JhbU5VTEw6OnNldFVuaWZvcm0yZnYoR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOwor
fQorCit2b2lkIFByb2dyYW1OVUxMOjpzZXRVbmlmb3JtM2Z2KEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30K
Kwordm9pZCBQcm9ncmFtTlVMTDo6c2V0VW5pZm9ybTRmdihHTGludCBsb2NhdGlvbiwgR0xzaXpl
aSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisK
K3ZvaWQgUHJvZ3JhbU5VTEw6OnNldFVuaWZvcm0xaXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkg
Y291bnQsIGNvbnN0IEdMaW50ICp2KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwordm9p
ZCBQcm9ncmFtTlVMTDo6c2V0VW5pZm9ybTJpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3Vu
dCwgY29uc3QgR0xpbnQgKnYpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCit2b2lkIFBy
b2dyYW1OVUxMOjpzZXRVbmlmb3JtM2l2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBj
b25zdCBHTGludCAqdikKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgUHJvZ3Jh
bU5VTEw6OnNldFVuaWZvcm00aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0
IEdMaW50ICp2KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwordm9pZCBQcm9ncmFtTlVM
TDo6c2V0VW5pZm9ybTF1aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
dWludCAqdikKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgUHJvZ3JhbU5VTEw6
OnNldFVuaWZvcm0ydWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVp
bnQgKnYpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCit2b2lkIFByb2dyYW1OVUxMOjpz
ZXRVbmlmb3JtM3VpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50
ICp2KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwordm9pZCBQcm9ncmFtTlVMTDo6c2V0
VW5pZm9ybTR1aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAq
dikKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgUHJvZ3JhbU5VTEw6OnNldFVu
aWZvcm1NYXRyaXgyZnYoR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQoreworICAgIFVOSU1QTEVNRU5URUQo
KTsKK30KKwordm9pZCBQcm9ncmFtTlVMTDo6c2V0VW5pZm9ybU1hdHJpeDNmdihHTGludCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5z
cG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9h
dCAqdmFsdWUpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCit2b2lkIFByb2dyYW1OVUxM
OjpzZXRVbmlmb3JtTWF0cml4NGZ2KEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3sKKyAgICBVTklNUExF
TUVOVEVEKCk7Cit9CisKK3ZvaWQgUHJvZ3JhbU5VTEw6OnNldFVuaWZvcm1NYXRyaXgyeDNmdihH
TGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Ym9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCit2
b2lkIFByb2dyYW1OVUxMOjpzZXRVbmlmb3JtTWF0cml4M3gyZnYoR0xpbnQgbG9jYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3Nl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KnZhbHVlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwordm9pZCBQcm9ncmFtTlVMTDo6
c2V0VW5pZm9ybU1hdHJpeDJ4NGZ2KEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3sKKyAgICBV
TklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgUHJvZ3JhbU5VTEw6OnNldFVuaWZvcm1NYXRyaXg0
eDJmdihHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOwor
fQorCit2b2lkIFByb2dyYW1OVUxMOjpzZXRVbmlmb3JtTWF0cml4M3g0ZnYoR0xpbnQgbG9jYXRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJh
bnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnZhbHVlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwordm9pZCBQcm9ncmFt
TlVMTDo6c2V0VW5pZm9ybU1hdHJpeDR4M2Z2KEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3sK
KyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgUHJvZ3JhbU5VTEw6OnNldFVuaWZvcm1C
bG9ja0JpbmRpbmcoR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHTHVpbnQgdW5pZm9ybUJsb2Nr
QmluZGluZykKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK2Jvb2wgUHJvZ3JhbU5VTEw6
OmdldFVuaWZvcm1CbG9ja1NpemUoY29uc3Qgc3RkOjpzdHJpbmcgJmJsb2NrTmFtZSwgc2l6ZV90
ICpzaXplT3V0KSBjb25zdAoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gYm9v
bCgpOworfQorCitib29sIFByb2dyYW1OVUxMOjpnZXRVbmlmb3JtQmxvY2tNZW1iZXJJbmZvKGNv
bnN0IHN0ZDo6c3RyaW5nICZtZW1iZXJVbmlmb3JtTmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2g6OkJsb2NrTWVtYmVySW5mbyAqbWVtYmVySW5mb091
dCkgY29uc3QKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGJvb2woKTsKK30K
Kwordm9pZCBQcm9ncmFtTlVMTDo6c2V0UGF0aEZyYWdtZW50SW5wdXRHZW4oY29uc3Qgc3RkOjpz
dHJpbmcgJmlucHV0TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBnZW5Nb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgY29tcG9uZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKmNvZWZmcykKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7
Cit9CisKK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUHJvZ3JhbU5VTEwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Qcm9ncmFt
TlVMTC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9udWxsL1Byb2dyYW1OVUxMLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMDEgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisvLyBQcm9ncmFtTlVMTC5oOgorLy8gICAgRGVmaW5lcyB0aGUg
Y2xhc3MgaW50ZXJmYWNlIGZvciBQcm9ncmFtTlVMTCwgaW1wbGVtZW50aW5nIFByb2dyYW1JbXBs
LgorLy8KKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9OVUxMX1BST0dSQU1OVUxMX0hfCisj
ZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX05VTExfUFJPR1JBTU5VTExfSF8KKworI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL1Byb2dyYW1JbXBsLmgiCisKK25hbWVzcGFjZSByeAoreworCitj
bGFzcyBQcm9ncmFtTlVMTCA6IHB1YmxpYyBQcm9ncmFtSW1wbAoreworICBwdWJsaWM6CisgICAg
UHJvZ3JhbU5VTEwoY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmc3RhdGUpOworICAgIH5Qcm9ncmFt
TlVMTCgpIG92ZXJyaWRlOworCisgICAgTGlua1Jlc3VsdCBsb2FkKGdsOjpJbmZvTG9nICZpbmZv
TG9nLCBnbDo6QmluYXJ5SW5wdXRTdHJlYW0gKnN0cmVhbSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVy
cm9yIHNhdmUoZ2w6OkJpbmFyeU91dHB1dFN0cmVhbSAqc3RyZWFtKSBvdmVycmlkZTsKKyAgICB2
b2lkIHNldEJpbmFyeVJldHJpZXZhYmxlSGludChib29sIHJldHJpZXZhYmxlKSBvdmVycmlkZTsK
KworICAgIExpbmtSZXN1bHQgbGluayhjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLCBnbDo6
SW5mb0xvZyAmaW5mb0xvZykgb3ZlcnJpZGU7CisgICAgR0xib29sZWFuIHZhbGlkYXRlKGNvbnN0
IGdsOjpDYXBzICZjYXBzLCBnbDo6SW5mb0xvZyAqaW5mb0xvZykgb3ZlcnJpZGU7CisKKyAgICB2
b2lkIHNldFVuaWZvcm0xZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
ZmxvYXQgKnYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VW5pZm9ybTJmdihHTGludCBsb2NhdGlv
biwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZXRVbmlmb3JtM2Z2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0
ICp2KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFVuaWZvcm00ZnYoR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VW5p
Zm9ybTFpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpIG92
ZXJyaWRlOworICAgIHZvaWQgc2V0VW5pZm9ybTJpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBj
b3VudCwgY29uc3QgR0xpbnQgKnYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VW5pZm9ybTNpdihH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc2V0VW5pZm9ybTRpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29u
c3QgR0xpbnQgKnYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VW5pZm9ybTF1aXYoR0xpbnQgbG9j
YXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzZXRVbmlmb3JtMnVpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1
aW50ICp2KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFVuaWZvcm0zdWl2KEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
VW5pZm9ybTR1aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAq
dikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRVbmlmb3JtTWF0cml4MmZ2KEdMaW50IGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZXRVbmlmb3JtTWF0cml4M2Z2KEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJv
b2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICp2YWx1ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRVbmlmb3JtTWF0cml4NGZ2KEdMaW50
IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzZXRVbmlmb3JtTWF0cml4MngzZnYoR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFVuaWZv
cm1NYXRyaXgzeDJmdihHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xm
bG9hdCAqdmFsdWUpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VW5pZm9ybU1hdHJpeDJ4NGZ2KEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZXRVbmlmb3JtTWF0cml4NHgyZnYoR0xpbnQgbG9jYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKSBvdmVycmlkZTsKKyAgICB2b2lk
IHNldFVuaWZvcm1NYXRyaXgzeDRmdihHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmbG9hdCAqdmFsdWUpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VW5pZm9ybU1hdHJp
eDR4M2Z2KEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRy
YW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2
YWx1ZSkgb3ZlcnJpZGU7CisKKyAgICAvLyBUT0RPOiBzeW5jaHJvbml6ZSBpbiBzeW5jU3RhdGUg
d2hlbiBkaXJ0eSBiaXRzIGV4aXN0LgorICAgIHZvaWQgc2V0VW5pZm9ybUJsb2NrQmluZGluZyhH
THVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKSBvdmVy
cmlkZTsKKworICAgIC8vIE1heSBvbmx5IGJlIGNhbGxlZCBhZnRlciBhIHN1Y2Nlc3NmdWwgbGlu
ayBvcGVyYXRpb24uCisgICAgLy8gUmV0dXJuIGZhbHNlIGZvciBpbmFjdGl2ZSBibG9ja3MuCisg
ICAgYm9vbCBnZXRVbmlmb3JtQmxvY2tTaXplKGNvbnN0IHN0ZDo6c3RyaW5nICZibG9ja05hbWUs
IHNpemVfdCAqc2l6ZU91dCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICAvLyBNYXkgb25seSBiZSBj
YWxsZWQgYWZ0ZXIgYSBzdWNjZXNzZnVsIGxpbmsgb3BlcmF0aW9uLgorICAgIC8vIFJldHVybnMg
ZmFsc2UgZm9yIGluYWN0aXZlIG1lbWJlcnMuCisgICAgYm9vbCBnZXRVbmlmb3JtQmxvY2tNZW1i
ZXJJbmZvKGNvbnN0IHN0ZDo6c3RyaW5nICZtZW1iZXJVbmlmb3JtTmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2g6OkJsb2NrTWVtYmVySW5mbyAqbWVtYmVySW5mb091
dCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgLy8gQ0hST01JVU1fcGF0aF9yZW5kZXJpbmcKKyAgICAv
LyBTZXQgcGFyYW1ldGVycyB0byBjb250cm9sIGZyYWdtZW50IHNoYWRlciBpbnB1dCB2YXJpYWJs
ZSBpbnRlcnBvbGF0aW9uCisgICAgdm9pZCBzZXRQYXRoRnJhZ21lbnRJbnB1dEdlbihjb25zdCBz
dGQ6OnN0cmluZyAmaW5wdXROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGdlbk1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBj
b21wb25lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9h
dCAqY29lZmZzKSBvdmVycmlkZTsKK307CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYg
IC8vIExJQkFOR0xFX1JFTkRFUkVSX05VTExfUFJPR1JBTU5VTExfSF8KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1F1ZXJ5TlVMTC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL251bGwvUXVlcnlOVUxMLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9RdWVyeU5VTEwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNzMgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBRdWVyeU5VTEwuY3BwOgorLy8g
ICAgSW1wbGVtZW50cyB0aGUgY2xhc3MgbWV0aG9kcyBmb3IgUXVlcnlOVUxMLgorLy8KKworI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL251bGwvUXVlcnlOVUxMLmgiCisKKyNpbmNsdWRlICJj
b21tb24vZGVidWcuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK1F1ZXJ5TlVMTDo6UXVlcnlOVUxM
KEdMZW51bSB0eXBlKSA6IFF1ZXJ5SW1wbCh0eXBlKQoreworfQorCitRdWVyeU5VTEw6On5RdWVy
eU5VTEwoKQoreworfQorCitnbDo6RXJyb3IgUXVlcnlOVUxMOjpiZWdpbigpCit7CisgICAgVU5J
TVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OworfQorCitnbDo6RXJyb3IgUXVlcnlOVUxMOjplbmQoKQoreworICAgIFVOSU1QTEVNRU5URUQo
KTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6
OkVycm9yIFF1ZXJ5TlVMTDo6cXVlcnlDb3VudGVyKCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7
CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpF
cnJvciBRdWVyeU5VTEw6OmdldFJlc3VsdChHTGludCAqcGFyYW1zKQoreworICAgIFVOSU1QTEVN
RU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30K
KworZ2w6OkVycm9yIFF1ZXJ5TlVMTDo6Z2V0UmVzdWx0KEdMdWludCAqcGFyYW1zKQoreworICAg
IFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKK30KKworZ2w6OkVycm9yIFF1ZXJ5TlVMTDo6Z2V0UmVzdWx0KEdMaW50NjQgKnBhcmFt
cykKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBRdWVyeU5VTEw6OmdldFJlc3VsdChHTHVp
bnQ2NCAqcGFyYW1zKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIFF1ZXJ5TlVMTDo6aXNS
ZXN1bHRBdmFpbGFibGUoYm9vbCAqYXZhaWxhYmxlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsK
KyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworfSAgLy8g
bmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvbnVsbC9RdWVyeU5VTEwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9RdWVyeU5VTEwuaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVs
bC9RdWVyeU5VTEwuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2IEBACisvLworLy8gQ29w
eXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLwor
Ly8gUXVlcnlOVUxMLmg6CisvLyAgICBEZWZpbmVzIHRoZSBjbGFzcyBpbnRlcmZhY2UgZm9yIFF1
ZXJ5TlVMTCwgaW1wbGVtZW50aW5nIFF1ZXJ5SW1wbC4KKy8vCisKKyNpZm5kZWYgTElCQU5HTEVf
UkVOREVSRVJfTlVMTF9RVUVSWU5VTExfSF8KKyNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfTlVM
TF9RVUVSWU5VTExfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1F1ZXJ5SW1wbC5o
IgorCituYW1lc3BhY2UgcngKK3sKKworY2xhc3MgUXVlcnlOVUxMIDogcHVibGljIFF1ZXJ5SW1w
bAoreworICBwdWJsaWM6CisgICAgUXVlcnlOVUxMKEdMZW51bSB0eXBlKTsKKyAgICB+UXVlcnlO
VUxMKCkgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJyb3IgYmVnaW4oKSBvdmVycmlkZTsKKyAgICBn
bDo6RXJyb3IgZW5kKCkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHF1ZXJ5Q291bnRlcigpIG92
ZXJyaWRlOworICAgIGdsOjpFcnJvciBnZXRSZXN1bHQoR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
CisgICAgZ2w6OkVycm9yIGdldFJlc3VsdChHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CisgICAg
Z2w6OkVycm9yIGdldFJlc3VsdChHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOworICAgIGdsOjpF
cnJvciBnZXRSZXN1bHQoR0x1aW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9y
IGlzUmVzdWx0QXZhaWxhYmxlKGJvb2wgKmF2YWlsYWJsZSkgb3ZlcnJpZGU7Cit9OworCit9ICAv
LyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9OVUxMX1FVRVJZ
TlVMTF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL251bGwvUmVuZGVyYnVmZmVyTlVMTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUmVuZGVyYnVmZmVyTlVMTC5j
cHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL251bGwvUmVuZGVyYnVmZmVyTlVMTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0NiBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFJlbmRlcmJ1ZmZlck5VTEwuY3BwOgorLy8gICAgSW1w
bGVtZW50cyB0aGUgY2xhc3MgbWV0aG9kcyBmb3IgUmVuZGVyYnVmZmVyTlVMTC4KKy8vCisKKyNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9udWxsL1JlbmRlcmJ1ZmZlck5VTEwuaCIKKworI2lu
Y2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgcngKK3sKKworUmVuZGVyYnVmZmVy
TlVMTDo6UmVuZGVyYnVmZmVyTlVMTCgpIDogUmVuZGVyYnVmZmVySW1wbCgpCit7Cit9CisKK1Jl
bmRlcmJ1ZmZlck5VTEw6On5SZW5kZXJidWZmZXJOVUxMKCkKK3sKK30KKworZ2w6OkVycm9yIFJl
bmRlcmJ1ZmZlck5VTEw6OnNldFN0b3JhZ2UoR0xlbnVtIGludGVybmFsZm9ybWF0LCBzaXplX3Qg
d2lkdGgsIHNpemVfdCBoZWlnaHQpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgUmVuZGVy
YnVmZmVyTlVMTDo6c2V0U3RvcmFnZU11bHRpc2FtcGxlKHNpemVfdCBzYW1wbGVzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJu
YWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGhlaWdodCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBS
ZW5kZXJidWZmZXJOVUxMOjpzZXRTdG9yYWdlRUdMSW1hZ2VUYXJnZXQoZWdsOjpJbWFnZSAqaW1h
Z2UpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOworfQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1JlbmRlcmJ1ZmZlck5V
TEwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvbnVsbC9SZW5kZXJidWZmZXJOVUxMLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUmVuZGVyYnVmZmVy
TlVMTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKKy8vCisvLyBDb3B5cmlnaHQg
MjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBSZW5k
ZXJidWZmZXJOVUxMLmg6CisvLyAgICBEZWZpbmVzIHRoZSBjbGFzcyBpbnRlcmZhY2UgZm9yIFJl
bmRlcmJ1ZmZlck5VTEwsIGltcGxlbWVudGluZyBSZW5kZXJidWZmZXJJbXBsLgorLy8KKworI2lm
bmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9OVUxMX1JFTkRFUkJVRkZFUk5VTExfSF8KKyNkZWZpbmUg
TElCQU5HTEVfUkVOREVSRVJfTlVMTF9SRU5ERVJCVUZGRVJOVUxMX0hfCisKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9SZW5kZXJidWZmZXJJbXBsLmgiCisKK25hbWVzcGFjZSByeAorewor
CitjbGFzcyBSZW5kZXJidWZmZXJOVUxMIDogcHVibGljIFJlbmRlcmJ1ZmZlckltcGwKK3sKKyAg
cHVibGljOgorICAgIFJlbmRlcmJ1ZmZlck5VTEwoKTsKKyAgICB+UmVuZGVyYnVmZmVyTlVMTCgp
IG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIHNldFN0b3JhZ2UoR0xlbnVtIGludGVybmFsZm9y
bWF0LCBzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQpIG92ZXJyaWRlOworICAgIGdsOjpFcnJv
ciBzZXRTdG9yYWdlTXVsdGlzYW1wbGUoc2l6ZV90IHNhbXBsZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3Ig
c2V0U3RvcmFnZUVHTEltYWdlVGFyZ2V0KGVnbDo6SW1hZ2UgKmltYWdlKSBvdmVycmlkZTsKK307
CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX05V
TExfUkVOREVSQlVGRkVSTlVMTF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL251bGwvU2FtcGxlck5VTEwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1NhbXBsZXJO
VUxMLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvbnVsbC9TYW1wbGVyTlVMTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyNSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFNhbXBsZXJOVUxMLmNwcDoKKy8vICAgIEltcGxlbWVu
dHMgdGhlIGNsYXNzIG1ldGhvZHMgZm9yIFNhbXBsZXJOVUxMLgorLy8KKworI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL251bGwvU2FtcGxlck5VTEwuaCIKKworI2luY2x1ZGUgImNvbW1vbi9k
ZWJ1Zy5oIgorCituYW1lc3BhY2UgcngKK3sKKworU2FtcGxlck5VTEw6OlNhbXBsZXJOVUxMKCkg
OiBTYW1wbGVySW1wbCgpCit7Cit9CisKK1NhbXBsZXJOVUxMOjp+U2FtcGxlck5VTEwoKQorewor
fQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1NhbXBsZXJOVUxMLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvU2FtcGxlck5V
TEwuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvbnVsbC9TYW1wbGVyTlVMTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MjcgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKy8vCisvLyBTYW1wbGVyTlVMTC5oOgorLy8gICAgRGVmaW5lcyB0aGUgY2xh
c3MgaW50ZXJmYWNlIGZvciBTYW1wbGVyTlVMTCwgaW1wbGVtZW50aW5nIFNhbXBsZXJJbXBsLgor
Ly8KKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9OVUxMX1NBTVBMRVJOVUxMX0hfCisjZGVm
aW5lIExJQkFOR0xFX1JFTkRFUkVSX05VTExfU0FNUExFUk5VTExfSF8KKworI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL1NhbXBsZXJJbXBsLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFz
cyBTYW1wbGVyTlVMTCA6IHB1YmxpYyBTYW1wbGVySW1wbAoreworICBwdWJsaWM6CisgICAgU2Ft
cGxlck5VTEwoKTsKKyAgICB+U2FtcGxlck5VTEwoKSBvdmVycmlkZTsKK307CisKK30gIC8vIG5h
bWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX05VTExfU0FNUExFUk5V
TExfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9udWxsL1NoYWRlck5VTEwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1NoYWRlck5VTEwuY3BwCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxs
L1NoYWRlck5VTEwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8vCisvLyBD
b3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8v
CisvLyBTaGFkZXJOVUxMLmNwcDoKKy8vICAgIEltcGxlbWVudHMgdGhlIGNsYXNzIG1ldGhvZHMg
Zm9yIFNoYWRlck5VTEwuCisvLworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbnVsbC9T
aGFkZXJOVUxMLmgiCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKworbmFtZXNwYWNlIHJ4
Cit7CisKK1NoYWRlck5VTEw6OlNoYWRlck5VTEwoY29uc3QgZ2w6OlNoYWRlclN0YXRlICZkYXRh
KSA6IFNoYWRlckltcGwoZGF0YSkKK3sKK30KKworU2hhZGVyTlVMTDo6flNoYWRlck5VTEwoKQor
eworfQorCitTaENvbXBpbGVPcHRpb25zIFNoYWRlck5VTEw6OnByZXBhcmVTb3VyY2VBbmRSZXR1
cm5PcHRpb25zKHN0ZDo6c3RyaW5nc3RyZWFtICpzb3VyY2VTdHJlYW0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5n
ICpzb3VyY2VQYXRoKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gU2hDb21w
aWxlT3B0aW9ucygpOworfQorCitib29sIFNoYWRlck5VTEw6OnBvc3RUcmFuc2xhdGVDb21waWxl
KGdsOjpDb21waWxlciAqY29tcGlsZXIsIHN0ZDo6c3RyaW5nICppbmZvTG9nKQoreworICAgIFVO
SU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gYm9vbCgpOworfQorCitzdGQ6OnN0cmluZyBTaGFk
ZXJOVUxMOjpnZXREZWJ1Z0luZm8oKSBjb25zdAoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9TaGFkZXJO
VUxMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL251bGwvU2hhZGVyTlVMTC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1NoYWRlck5VTEwuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDM1IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gU2hhZGVyTlVMTC5oOgor
Ly8gICAgRGVmaW5lcyB0aGUgY2xhc3MgaW50ZXJmYWNlIGZvciBTaGFkZXJOVUxMLCBpbXBsZW1l
bnRpbmcgU2hhZGVySW1wbC4KKy8vCisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfTlVMTF9T
SEFERVJOVUxMX0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX05VTExfU0hBREVSTlVMTF9I
XworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvU2hhZGVySW1wbC5oIgorCituYW1lc3Bh
Y2UgcngKK3sKKworY2xhc3MgU2hhZGVyTlVMTCA6IHB1YmxpYyBTaGFkZXJJbXBsCit7CisgIHB1
YmxpYzoKKyAgICBTaGFkZXJOVUxMKGNvbnN0IGdsOjpTaGFkZXJTdGF0ZSAmZGF0YSk7CisgICAg
flNoYWRlck5VTEwoKSBvdmVycmlkZTsKKworICAgIC8vIFJldHVybnMgYWRkaXRpb25hbCBTaENv
bXBpbGUgb3B0aW9ucy4KKyAgICBTaENvbXBpbGVPcHRpb25zIHByZXBhcmVTb3VyY2VBbmRSZXR1
cm5PcHRpb25zKHN0ZDo6c3RyaW5nc3RyZWFtICpzb3VyY2VTdHJlYW0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyAqc291cmNl
UGF0aCkgb3ZlcnJpZGU7CisgICAgLy8gUmV0dXJucyBzdWNjZXNzIGZvciBjb21waWxpbmcgb24g
dGhlIGRyaXZlci4gUmV0dXJucyBzdWNjZXNzLgorICAgIGJvb2wgcG9zdFRyYW5zbGF0ZUNvbXBp
bGUoZ2w6OkNvbXBpbGVyICpjb21waWxlciwgc3RkOjpzdHJpbmcgKmluZm9Mb2cpIG92ZXJyaWRl
OworCisgICAgc3RkOjpzdHJpbmcgZ2V0RGVidWdJbmZvKCkgY29uc3Qgb3ZlcnJpZGU7Cit9Owor
Cit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9OVUxM
X1NIQURFUk5VTExfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9udWxsL1N1cmZhY2VOVUxMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9TdXJmYWNlTlVMTC5jcHAJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL251bGwvU3VyZmFjZU5VTEwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAz
IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworLy8gU3VyZmFjZU5VTEwuY3BwOgorLy8gICAgSW1wbGVtZW50cyB0aGUg
Y2xhc3MgbWV0aG9kcyBmb3IgU3VyZmFjZU5VTEwuCisvLworCisjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvbnVsbC9TdXJmYWNlTlVMTC5oIgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgi
CisKK25hbWVzcGFjZSByeAoreworCitTdXJmYWNlTlVMTDo6U3VyZmFjZU5VTEwoY29uc3QgZWds
OjpTdXJmYWNlU3RhdGUgJnN1cmZhY2VTdGF0ZSkgOiBTdXJmYWNlSW1wbChzdXJmYWNlU3RhdGUp
Cit7Cit9CisKK1N1cmZhY2VOVUxMOjp+U3VyZmFjZU5VTEwoKQoreworfQorCitlZ2w6OkVycm9y
IFN1cmZhY2VOVUxMOjppbml0aWFsaXplKCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAg
cmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BQ0NFU1MpOworfQorCitGcmFtZWJ1ZmZlckltcGwg
KlN1cmZhY2VOVUxMOjpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVm
ZmVyU3RhdGUgJnN0YXRlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RnJhbWVidWZmZXJJbXBsICo+KDApOworfQorCitlZ2w6OkVycm9yIFN1cmZhY2VO
VUxMOjpzd2FwKCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGVnbDo6RXJy
b3IoRUdMX0JBRF9BQ0NFU1MpOworfQorCitlZ2w6OkVycm9yIFN1cmZhY2VOVUxMOjpwb3N0U3Vi
QnVmZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KQor
eworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FD
Q0VTUyk7Cit9CisKK2VnbDo6RXJyb3IgU3VyZmFjZU5VTEw6OnF1ZXJ5U3VyZmFjZVBvaW50ZXJB
TkdMRShFR0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUpCit7CisgICAgVU5JTVBMRU1FTlRF
RCgpOworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfQUNDRVNTKTsKK30KKworZWdsOjpF
cnJvciBTdXJmYWNlTlVMTDo6YmluZFRleEltYWdlKGdsOjpUZXh0dXJlICp0ZXh0dXJlLCBFR0xp
bnQgYnVmZmVyKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZWdsOjpFcnJv
cihFR0xfQkFEX0FDQ0VTUyk7Cit9CisKK2VnbDo6RXJyb3IgU3VyZmFjZU5VTEw6OnJlbGVhc2VU
ZXhJbWFnZShFR0xpbnQgYnVmZmVyKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1
cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FDQ0VTUyk7Cit9CisKK3ZvaWQgU3VyZmFjZU5VTEw6OnNl
dFN3YXBJbnRlcnZhbChFR0xpbnQgaW50ZXJ2YWwpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOwor
fQorCitFR0xpbnQgU3VyZmFjZU5VTEw6OmdldFdpZHRoKCkgY29uc3QKK3sKKyAgICBVTklNUExF
TUVOVEVEKCk7CisgICAgcmV0dXJuIEVHTGludCgpOworfQorCitFR0xpbnQgU3VyZmFjZU5VTEw6
OmdldEhlaWdodCgpIGNvbnN0Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBF
R0xpbnQoKTsKK30KKworRUdMaW50IFN1cmZhY2VOVUxMOjppc1Bvc3RTdWJCdWZmZXJTdXBwb3J0
ZWQoKSBjb25zdAoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gRUdMaW50KCk7
Cit9CisKK0VHTGludCBTdXJmYWNlTlVMTDo6Z2V0U3dhcEJlaGF2aW9yKCkgY29uc3QKK3sKKyAg
ICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIEVHTGludCgpOworfQorCitnbDo6RXJyb3Ig
U3VyZmFjZU5VTEw6OmdldEF0dGFjaG1lbnRSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkZyYW1lYnVm
ZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJBdHRhY2htZW50UmVuZGVyVGFyZ2V0
ICoqcnRPdXQpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1N1cmZhY2VO
VUxMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL251bGwvU3VyZmFjZU5VTEwuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9TdXJmYWNlTlVMTC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBTdXJmYWNlTlVMTC5o
OgorLy8gICAgRGVmaW5lcyB0aGUgY2xhc3MgaW50ZXJmYWNlIGZvciBTdXJmYWNlTlVMTCwgaW1w
bGVtZW50aW5nIFN1cmZhY2VJbXBsLgorLy8KKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9O
VUxMX1NVUkZBQ0VOVUxMX0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX05VTExfU1VSRkFD
RU5VTExfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1N1cmZhY2VJbXBsLmgiCisK
K25hbWVzcGFjZSByeAoreworCitjbGFzcyBTdXJmYWNlTlVMTCA6IHB1YmxpYyBTdXJmYWNlSW1w
bAoreworICBwdWJsaWM6CisgICAgU3VyZmFjZU5VTEwoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUg
JnN1cmZhY2VTdGF0ZSk7CisgICAgflN1cmZhY2VOVUxMKCkgb3ZlcnJpZGU7CisKKyAgICBlZ2w6
OkVycm9yIGluaXRpYWxpemUoKSBvdmVycmlkZTsKKyAgICBGcmFtZWJ1ZmZlckltcGwgKmNyZWF0
ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUpIG92
ZXJyaWRlOworICAgIGVnbDo6RXJyb3Igc3dhcCgpIG92ZXJyaWRlOworICAgIGVnbDo6RXJyb3Ig
cG9zdFN1YkJ1ZmZlcihFR0xpbnQgeCwgRUdMaW50IHksIEVHTGludCB3aWR0aCwgRUdMaW50IGhl
aWdodCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBxdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUo
RUdMaW50IGF0dHJpYnV0ZSwgdm9pZCAqKnZhbHVlKSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9y
IGJpbmRUZXhJbWFnZShnbDo6VGV4dHVyZSAqdGV4dHVyZSwgRUdMaW50IGJ1ZmZlcikgb3ZlcnJp
ZGU7CisgICAgZWdsOjpFcnJvciByZWxlYXNlVGV4SW1hZ2UoRUdMaW50IGJ1ZmZlcikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzZXRTd2FwSW50ZXJ2YWwoRUdMaW50IGludGVydmFsKSBvdmVycmlkZTsK
KworICAgIC8vIHdpZHRoIGFuZCBoZWlnaHQgY2FuIGNoYW5nZSB3aXRoIGNsaWVudCB3aW5kb3cg
cmVzaXppbmcKKyAgICBFR0xpbnQgZ2V0V2lkdGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICBFR0xp
bnQgZ2V0SGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBFR0xpbnQgaXNQb3N0U3ViQnVm
ZmVyU3VwcG9ydGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRUdMaW50IGdldFN3YXBCZWhhdmlv
cigpIGNvbnN0IG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIGdldEF0dGFjaG1lbnRSZW5kZXJU
YXJnZXQoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJBdHRhY2ht
ZW50UmVuZGVyVGFyZ2V0ICoqcnRPdXQpIG92ZXJyaWRlOworfTsKKworfSAgLy8gbmFtZXNwYWNl
IHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfTlVMTF9TVVJGQUNFTlVMTF9IXwpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwv
VGV4dHVyZU5VTEwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1RleHR1cmVOVUxMLmNwcAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9UZXh0
dXJlTlVMTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNDMgQEAKKy8vCisvLyBDb3B5
cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisv
LyBUZXh0dXJlTlVMTC5jcHA6CisvLyAgICBJbXBsZW1lbnRzIHRoZSBjbGFzcyBtZXRob2RzIGZv
ciBUZXh0dXJlTlVMTC4KKy8vCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9udWxsL1Rl
eHR1cmVOVUxMLmgiCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKworbmFtZXNwYWNlIHJ4
Cit7CisKK1RleHR1cmVOVUxMOjpUZXh0dXJlTlVMTChjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZz
dGF0ZSkgOiBUZXh0dXJlSW1wbChzdGF0ZSkKK3sKK30KKworVGV4dHVyZU5VTEw6On5UZXh0dXJl
TlVMTCgpCit7Cit9CisKK2dsOjpFcnJvciBUZXh0dXJlTlVMTDo6c2V0SW1hZ2UoR0xlbnVtIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKQoreworICAgIFVOSU1Q
TEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
K30KKworZ2w6OkVycm9yIFRleHR1cmVOVUxMOjpzZXRTdWJJbWFnZShHTGVudW0gdGFyZ2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmFyZWEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpCit7Cisg
ICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOworfQorCitnbDo6RXJyb3IgVGV4dHVyZU5VTEw6OnNldENvbXByZXNzZWRJbWFnZShH
TGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGltYWdlU2l6
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4
X3QgKnBpeGVscykKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBUZXh0dXJlTlVMTDo6c2V0
Q29tcHJlc3NlZFN1YkltYWdlKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZhcmVhLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVu
cGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaW1hZ2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKQoreworICAgIFVOSU1QTEVNRU5U
RUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKwor
Z2w6OkVycm9yIFRleHR1cmVOVUxMOjpjb3B5SW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZSkK
K3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBUZXh0dXJlTlVMTDo6Y29weVN1YkltYWdlKEdM
ZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
bGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zm
c2V0ICZkZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKQoreworICAgIFVOSU1QTEVN
RU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30K
KworZ2w6OkVycm9yIFRleHR1cmVOVUxMOjpzZXRTdG9yYWdlKEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVscywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUpCit7CisgICAg
VU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOworfQorCitnbDo6RXJyb3IgVGV4dHVyZU5VTEw6OnNldEVHTEltYWdlVGFyZ2V0KEdMZW51
bSB0YXJnZXQsIGVnbDo6SW1hZ2UgKmltYWdlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9y
IFRleHR1cmVOVUxMOjpzZXRJbWFnZUV4dGVybmFsKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpTdHJlYW0gKnN0cmVhbSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OlN0cmVhbTo6R0xU
ZXh0dXJlRGVzY3JpcHRpb24gJmRlc2MpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgVGV4
dHVyZU5VTEw6OmdlbmVyYXRlTWlwbWFwKCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK3ZvaWQgVGV4dHVy
ZU5VTEw6OnNldEJhc2VMZXZlbChHTHVpbnQgYmFzZUxldmVsKQoreworICAgIFVOSU1QTEVNRU5U
RUQoKTsKK30KKwordm9pZCBUZXh0dXJlTlVMTDo6YmluZFRleEltYWdlKGVnbDo6U3VyZmFjZSAq
c3VyZmFjZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgVGV4dHVyZU5VTEw6
OnJlbGVhc2VUZXhJbWFnZSgpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCit2b2lkIFRl
eHR1cmVOVUxMOjpzeW5jU3RhdGUoY29uc3QgZ2w6OlRleHR1cmU6OkRpcnR5Qml0cyAmZGlydHlC
aXRzKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ4Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9U
ZXh0dXJlTlVMTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9udWxsL1RleHR1cmVOVUxMLmgJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvVGV4dHVyZU5V
TEwuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg5IEBACisvLworLy8gQ29weXJpZ2h0IDIw
MTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gVGV4dHVy
ZU5VTEwuaDoKKy8vICAgIERlZmluZXMgdGhlIGNsYXNzIGludGVyZmFjZSBmb3IgVGV4dHVyZU5V
TEwsIGltcGxlbWVudGluZyBUZXh0dXJlSW1wbC4KKy8vCisKKyNpZm5kZWYgTElCQU5HTEVfUkVO
REVSRVJfTlVMTF9URVhUVVJFTlVMTF9IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9OVUxM
X1RFWFRVUkVOVUxMX0hfCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9UZXh0dXJlSW1w
bC5oIgorCituYW1lc3BhY2UgcngKK3sKKworY2xhc3MgVGV4dHVyZU5VTEwgOiBwdWJsaWMgVGV4
dHVyZUltcGwKK3sKKyAgcHVibGljOgorICAgIFRleHR1cmVOVUxMKGNvbnN0IGdsOjpUZXh0dXJl
U3RhdGUgJnN0YXRlKTsKKyAgICB+VGV4dHVyZU5VTEwoKSBvdmVycmlkZTsKKworICAgIGdsOjpF
cnJvciBzZXRJbWFnZShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCisgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tT
dGF0ZSAmdW5wYWNrLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhl
bHMpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBzZXRTdWJJbWFnZShHTGVudW0gdGFyZ2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5w
YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92
ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIHNldENvbXByZXNzZWRJbWFnZShHTGVudW0gdGFyZ2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAm
dW5wYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGltYWdlU2l6
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVs
cykgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHNldENvbXByZXNzZWRTdWJJbWFnZShHTGVudW0g
dGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmYXJl
YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tT
dGF0ZSAmdW5wYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGltYWdlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVp
bnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJyb3IgY29weUltYWdlKEdMZW51
bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAorICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2UpIG92ZXJyaWRlOworICAgIGds
OjpFcnJvciBjb3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpPZmZzZXQgJmRlc3RPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2UpIG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIHNl
dFN0b3JhZ2UoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
bGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSkgb3ZlcnJp
ZGU7CisKKyAgICBnbDo6RXJyb3Igc2V0RUdMSW1hZ2VUYXJnZXQoR0xlbnVtIHRhcmdldCwgZWds
OjpJbWFnZSAqaW1hZ2UpIG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIHNldEltYWdlRXh0ZXJu
YWwoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OlN0
cmVhbSAqc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6
U3RyZWFtOjpHTFRleHR1cmVEZXNjcmlwdGlvbiAmZGVzYykgb3ZlcnJpZGU7CisKKyAgICBnbDo6
RXJyb3IgZ2VuZXJhdGVNaXBtYXAoKSBvdmVycmlkZTsKKworICAgIHZvaWQgc2V0QmFzZUxldmVs
KEdMdWludCBiYXNlTGV2ZWwpIG92ZXJyaWRlOworCisgICAgdm9pZCBiaW5kVGV4SW1hZ2UoZWds
OjpTdXJmYWNlICpzdXJmYWNlKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbGVhc2VUZXhJbWFnZSgp
IG92ZXJyaWRlOworCisgICAgdm9pZCBzeW5jU3RhdGUoY29uc3QgZ2w6OlRleHR1cmU6OkRpcnR5
Qml0cyAmZGlydHlCaXRzKSBvdmVycmlkZTsKK307CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisj
ZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX05VTExfVEVYVFVSRU5VTExfSF8KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1RyYW5zZm9y
bUZlZWRiYWNrTlVMTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvVHJhbnNmb3JtRmVlZGJhY2tOVUxMLmNwcAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvbnVsbC9UcmFuc2Zvcm1GZWVkYmFja05VTEwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNTcgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisvLyBUcmFuc2Zvcm1GZWVkYmFja05VTEwuY3BwOgorLy8gICAg
SW1wbGVtZW50cyB0aGUgY2xhc3MgbWV0aG9kcyBmb3IgVHJhbnNmb3JtRmVlZGJhY2tOVUxMLgor
Ly8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL251bGwvVHJhbnNmb3JtRmVlZGJhY2tO
VUxMLmgiCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisK
K1RyYW5zZm9ybUZlZWRiYWNrTlVMTDo6VHJhbnNmb3JtRmVlZGJhY2tOVUxMKGNvbnN0IGdsOjpU
cmFuc2Zvcm1GZWVkYmFja1N0YXRlICZzdGF0ZSkKKyAgICA6IFRyYW5zZm9ybUZlZWRiYWNrSW1w
bChzdGF0ZSkKK3sKK30KKworVHJhbnNmb3JtRmVlZGJhY2tOVUxMOjp+VHJhbnNmb3JtRmVlZGJh
Y2tOVUxMKCkKK3sKK30KKwordm9pZCBUcmFuc2Zvcm1GZWVkYmFja05VTEw6OmJlZ2luKEdMZW51
bSBwcmltaXRpdmVNb2RlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwordm9pZCBUcmFu
c2Zvcm1GZWVkYmFja05VTEw6OmVuZCgpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCit2
b2lkIFRyYW5zZm9ybUZlZWRiYWNrTlVMTDo6cGF1c2UoKQoreworICAgIFVOSU1QTEVNRU5URUQo
KTsKK30KKwordm9pZCBUcmFuc2Zvcm1GZWVkYmFja05VTEw6OnJlc3VtZSgpCit7CisgICAgVU5J
TVBMRU1FTlRFRCgpOworfQorCit2b2lkIFRyYW5zZm9ybUZlZWRiYWNrTlVMTDo6YmluZEdlbmVy
aWNCdWZmZXIoY29uc3QgQmluZGluZ1BvaW50ZXI8Z2w6OkJ1ZmZlcj4gJmJpbmRpbmcpCit7Cisg
ICAgVU5JTVBMRU1FTlRFRCgpOworfQorCit2b2lkIFRyYW5zZm9ybUZlZWRiYWNrTlVMTDo6Ymlu
ZEluZGV4ZWRCdWZmZXIoc2l6ZV90IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IE9mZnNldEJpbmRpbmdQb2ludGVyPGdsOjpCdWZmZXI+
ICZiaW5kaW5nKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKworfSAgLy8gbmFtZXNwYWNl
IHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
bnVsbC9UcmFuc2Zvcm1GZWVkYmFja05VTEwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9UcmFuc2Zvcm1GZWVkYmFja05V
TEwuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvbnVsbC9UcmFuc2Zvcm1GZWVkYmFja05VTEwuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDM1IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gVHJhbnNmb3JtRmVlZGJhY2tOVUxMLmg6Cisv
LyAgICBEZWZpbmVzIHRoZSBjbGFzcyBpbnRlcmZhY2UgZm9yIFRyYW5zZm9ybUZlZWRiYWNrTlVM
TCwgaW1wbGVtZW50aW5nIFRyYW5zZm9ybUZlZWRiYWNrSW1wbC4KKy8vCisKKyNpZm5kZWYgTElC
QU5HTEVfUkVOREVSRVJfTlVMTF9UUkFOU0ZPUk1GRUVEQkFDS05VTExfSF8KKyNkZWZpbmUgTElC
QU5HTEVfUkVOREVSRVJfTlVMTF9UUkFOU0ZPUk1GRUVEQkFDS05VTExfSF8KKworI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL1RyYW5zZm9ybUZlZWRiYWNrSW1wbC5oIgorCituYW1lc3BhY2Ug
cngKK3sKKworY2xhc3MgVHJhbnNmb3JtRmVlZGJhY2tOVUxMIDogcHVibGljIFRyYW5zZm9ybUZl
ZWRiYWNrSW1wbAoreworICBwdWJsaWM6CisgICAgVHJhbnNmb3JtRmVlZGJhY2tOVUxMKGNvbnN0
IGdsOjpUcmFuc2Zvcm1GZWVkYmFja1N0YXRlICZzdGF0ZSk7CisgICAgflRyYW5zZm9ybUZlZWRi
YWNrTlVMTCgpIG92ZXJyaWRlOworCisgICAgdm9pZCBiZWdpbihHTGVudW0gcHJpbWl0aXZlTW9k
ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBlbmQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhdXNlKCkg
b3ZlcnJpZGU7CisgICAgdm9pZCByZXN1bWUoKSBvdmVycmlkZTsKKworICAgIHZvaWQgYmluZEdl
bmVyaWNCdWZmZXIoY29uc3QgQmluZGluZ1BvaW50ZXI8Z2w6OkJ1ZmZlcj4gJmJpbmRpbmcpIG92
ZXJyaWRlOworICAgIHZvaWQgYmluZEluZGV4ZWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBP
ZmZzZXRCaW5kaW5nUG9pbnRlcjxnbDo6QnVmZmVyPiAmYmluZGluZykgb3ZlcnJpZGU7Cit9Owor
Cit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9OVUxM
X1RSQU5TRk9STUZFRURCQUNLTlVMTF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvVmVydGV4QXJyYXlOVUxMLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9W
ZXJ0ZXhBcnJheU5VTEwuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1ZlcnRleEFycmF5TlVMTC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwyNSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFZlcnRleEFycmF5TlVMTC5j
cHA6CisvLyAgICBJbXBsZW1lbnRzIHRoZSBjbGFzcyBtZXRob2RzIGZvciBWZXJ0ZXhBcnJheU5V
TEwuCisvLworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbnVsbC9WZXJ0ZXhBcnJheU5V
TEwuaCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgcngKK3sKKwor
VmVydGV4QXJyYXlOVUxMOjpWZXJ0ZXhBcnJheU5VTEwoY29uc3QgZ2w6OlZlcnRleEFycmF5U3Rh
dGUgJmRhdGEpIDogVmVydGV4QXJyYXlJbXBsKGRhdGEpCit7Cit9CisKK1ZlcnRleEFycmF5TlVM
TDo6flZlcnRleEFycmF5TlVMTCgpCit7Cit9CisKK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvVmVydGV4
QXJyYXlOVUxMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL251bGwvVmVydGV4QXJyYXlOVUxMLmgJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvVmVydGV4
QXJyYXlOVUxMLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNyBAQAorLy8KKy8vIENvcHly
aWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8v
IFZlcnRleEFycmF5TlVMTC5oOgorLy8gICAgRGVmaW5lcyB0aGUgY2xhc3MgaW50ZXJmYWNlIGZv
ciBWZXJ0ZXhBcnJheU5VTEwsIGltcGxlbWVudGluZyBWZXJ0ZXhBcnJheUltcGwuCisvLworCisj
aWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX05VTExfVkVSVEVYQVJSQVlOVUxMX0hfCisjZGVmaW5l
IExJQkFOR0xFX1JFTkRFUkVSX05VTExfVkVSVEVYQVJSQVlOVUxMX0hfCisKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9WZXJ0ZXhBcnJheUltcGwuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisK
K2NsYXNzIFZlcnRleEFycmF5TlVMTCA6IHB1YmxpYyBWZXJ0ZXhBcnJheUltcGwKK3sKKyAgcHVi
bGljOgorICAgIFZlcnRleEFycmF5TlVMTChjb25zdCBnbDo6VmVydGV4QXJyYXlTdGF0ZSAmZGF0
YSk7CisgICAgflZlcnRleEFycmF5TlVMTCgpIG92ZXJyaWRlOworfTsKKworfSAgLy8gbmFtZXNw
YWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfTlVMTF9WRVJURVhBUlJBWU5V
TExfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9yZW5kZXJlcl91dGlscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3JlbmRlcmVyX3V0aWxzLmNwcAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvcmVuZGVy
ZXJfdXRpbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjc1IEBACisvLworLy8gQ29w
eXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLwor
Ly8gcmVuZGVyZXJfdXRpbHM6CisvLyAgIEhlbHBlciBtZXRob2RzIHBlcnRhaW5pbmcgdG8gbW9z
dCBvciBhbGwgYmFjay1lbmRzLgorLy8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Jl
bmRlcmVyX3V0aWxzLmgiCisKKyNpbmNsdWRlICJpbWFnZV91dGlsL2NvcHlpbWFnZS5oIgorI2lu
Y2x1ZGUgImltYWdlX3V0aWwvaW1hZ2Vmb3JtYXRzLmgiCisKKyNpbmNsdWRlICJsaWJBTkdMRS9m
b3JtYXR1dGlscy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdC5oIgorCisj
aW5jbHVkZSA8c3RyaW5nLmg+CisKK25hbWVzcGFjZSByeAoreworCituYW1lc3BhY2UKK3sKK3R5
cGVkZWYgc3RkOjpwYWlyPGdsOjpGb3JtYXRUeXBlLCBDb2xvcldyaXRlRnVuY3Rpb24+IEZvcm1h
dFdyaXRlRnVuY3Rpb25QYWlyOwordHlwZWRlZiBzdGQ6Om1hcDxnbDo6Rm9ybWF0VHlwZSwgQ29s
b3JXcml0ZUZ1bmN0aW9uPiBGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwOworCitzdGF0aWMgaW5saW5l
IHZvaWQgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoRm9ybWF0V3JpdGVGdW5jdGlv
bk1hcCAqbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3JXcml0ZUZ1bmN0aW9uIHdyaXRlRnVuYykK
K3sKKyAgICBtYXAtPmluc2VydChGb3JtYXRXcml0ZUZ1bmN0aW9uUGFpcihnbDo6Rm9ybWF0VHlw
ZShmb3JtYXQsIHR5cGUpLCB3cml0ZUZ1bmMpKTsKK30KKworc3RhdGljIEZvcm1hdFdyaXRlRnVu
Y3Rpb25NYXAgQnVpbGRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwKCkKK3sKKyAgICB1c2luZyBuYW1l
c3BhY2UgYW5nbGU7ICAvLyAgRm9yIGltYWdlIHdyaXRpbmcgZnVuY3Rpb25zCisKKyAgICBGb3Jt
YXRXcml0ZUZ1bmN0aW9uTWFwIG1hcDsKKworICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgICAv
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRm9ybWF0ICAgICAgICAgICAg
ICAgfCBUeXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbG9yIHdyaXRlIGZ1bmN0
aW9uICAgICAgICAgICAgIHwKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygm
bWFwLCBHTF9SR0JBLCAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAg
ICAgICAgV3JpdGVDb2xvcjxSOEc4QjhBOCwgR0xmbG9hdD4gICAgICk7CisgICAgSW5zZXJ0Rm9y
bWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkdCQSwgICAgICAgICAgICAgICBHTF9C
WVRFLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjhHOEI4QThTLCBHTGZs
b2F0PiAgICApOworICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdM
X1JHQkEsICAgICAgICAgICAgICAgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNCwgICAgICAgICBX
cml0ZUNvbG9yPFI0RzRCNEE0LCBHTGZsb2F0PiAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRXcml0
ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SR0JBLCAgICAgICAgICAgICAgIEdMX1VOU0lHTkVE
X1NIT1JUXzVfNV81XzEsICAgICAgICAgV3JpdGVDb2xvcjxSNUc1QjVBMSwgR0xmbG9hdD4gICAg
ICk7CisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkdCQSwg
ICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYsICAgIFdyaXRlQ29s
b3I8UjEwRzEwQjEwQTIsIEdMZmxvYXQ+ICApOworICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rp
b25NYXBwaW5nKCZtYXAsIEdMX1JHQkEsICAgICAgICAgICAgICAgR0xfRkxPQVQsICAgICAgICAg
ICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFIzMkczMkIzMkEzMkYsIEdMZmxvYXQ+KTsKKyAg
ICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SR0JBLCAgICAgICAg
ICAgICAgIEdMX0hBTEZfRkxPQVQsICAgICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSMTZH
MTZCMTZBMTZGLCBHTGZsb2F0Pik7CisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBp
bmcoJm1hcCwgR0xfUkdCQSwgICAgICAgICAgICAgICBHTF9IQUxGX0ZMT0FUX09FUywgICAgICAg
ICAgICAgICAgIFdyaXRlQ29sb3I8UjE2RzE2QjE2QTE2RiwgR0xmbG9hdD4pOworICAgIEluc2Vy
dEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX1NI
T1JULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjE2
RzE2QjE2QTE2LCBHTGZsb2F0Pik7CisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBp
bmcoJm1hcCwgR0xfUkdCQSwgR0xfU0hPUlQsIFdyaXRlQ29sb3I8UjE2RzE2QjE2QTE2UywgR0xm
bG9hdD4pOworCisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xf
UkdCQV9JTlRFR0VSLCAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICAgIFdy
aXRlQ29sb3I8UjhHOEI4QTgsIEdMdWludD4gICAgICApOworICAgIEluc2VydEZvcm1hdFdyaXRl
RnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHQkFfSU5URUdFUiwgICAgICAgR0xfQllURSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFI4RzhCOEE4UywgR0xpbnQ+ICAgICAg
KTsKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SR0JBX0lO
VEVHRVIsICAgICAgIEdMX1VOU0lHTkVEX1NIT1JULCAgICAgICAgICAgICAgICAgV3JpdGVDb2xv
cjxSMTZHMTZCMTZBMTYsIEdMdWludD4gICk7CisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlv
bk1hcHBpbmcoJm1hcCwgR0xfUkdCQV9JTlRFR0VSLCAgICAgICBHTF9TSE9SVCwgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjE2RzE2QjE2QTE2UywgR0xpbnQ+ICApOworICAg
IEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHQkFfSU5URUdFUiwg
ICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFIzMkcz
MkIzMkEzMiwgR0x1aW50PiAgKTsKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGlu
ZygmbWFwLCBHTF9SR0JBX0lOVEVHRVIsICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV3JpdGVDb2xvcjxSMzJHMzJCMzJBMzJTLCBHTGludD4gICk7CisgICAgSW5zZXJ0
Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkdCQV9JTlRFR0VSLCAgICAgICBH
TF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYsICAgIFdyaXRlQ29sb3I8UjEwRzEwQjEwQTIs
IEdMdWludD4gICApOworCisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1h
cCwgR0xfUkdCLCAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAg
ICAgIFdyaXRlQ29sb3I8UjhHOEI4LCBHTGZsb2F0PiAgICAgICApOworICAgIEluc2VydEZvcm1h
dFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHQiwgICAgICAgICAgICAgICAgR0xfQllU
RSwgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFI4RzhCOFMsIEdMZmxvYXQ+
ICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9S
R0IsICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81LCAgICAgICAgICAgV3Jp
dGVDb2xvcjxSNUc2QjUsIEdMZmxvYXQ+ICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVG
dW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkdCLCAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9J
TlRfMTBGXzExRl8xMUZfUkVWLCAgIFdyaXRlQ29sb3I8UjExRzExQjEwRiwgR0xmbG9hdD4gICAp
OworICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHQiwgICAg
ICAgICAgICAgICAgR0xfVU5TSUdORURfSU5UXzVfOV85XzlfUkVWLCAgICAgICBXcml0ZUNvbG9y
PFI5RzlCOUU1LCBHTGZsb2F0PiAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9u
TWFwcGluZygmbWFwLCBHTF9SR0IsICAgICAgICAgICAgICAgIEdMX0ZMT0FULCAgICAgICAgICAg
ICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSMzJHMzJCMzJGLCBHTGZsb2F0PiAgICk7CisgICAg
SW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkdCLCAgICAgICAgICAg
ICAgICBHTF9IQUxGX0ZMT0FULCAgICAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjE2RzE2
QjE2RiwgR0xmbG9hdD4gICApOworICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5n
KCZtYXAsIEdMX1JHQiwgICAgICAgICAgICAgICAgR0xfSEFMRl9GTE9BVF9PRVMsICAgICAgICAg
ICAgICAgICBXcml0ZUNvbG9yPFIxNkcxNkIxNkYsIEdMZmxvYXQ+ICAgKTsKKyAgICBJbnNlcnRG
b3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SR0IsIEdMX1VOU0lHTkVEX1NIT1JU
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjE2RzE2
QjE2LCBHTGZsb2F0Pik7CisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1h
cCwgR0xfUkdCLCBHTF9TSE9SVCwgV3JpdGVDb2xvcjxSMTZHMTZCMTZTLCBHTGZsb2F0Pik7CisK
KyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SR0JfSU5URUdF
UiwgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxS
OEc4QjgsIEdMdWludD4gICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1h
cHBpbmcoJm1hcCwgR0xfUkdCX0lOVEVHRVIsICAgICAgICBHTF9CWVRFLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjhHOEI4UywgR0xpbnQ+ICAgICAgICApOworICAgIElu
c2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHQl9JTlRFR0VSLCAgICAg
ICAgR0xfVU5TSUdORURfU0hPUlQsICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFIxNkcxNkIx
NiwgR0x1aW50PiAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygm
bWFwLCBHTF9SR0JfSU5URUdFUiwgICAgICAgIEdMX1NIT1JULCAgICAgICAgICAgICAgICAgICAg
ICAgICAgV3JpdGVDb2xvcjxSMTZHMTZCMTZTLCBHTGludD4gICAgICk7CisgICAgSW5zZXJ0Rm9y
bWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkdCX0lOVEVHRVIsICAgICAgICBHTF9V
TlNJR05FRF9JTlQsICAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjMyRzMyQjMyLCBHTHVp
bnQ+ICAgICApOworICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdM
X1JHQl9JTlRFR0VSLCAgICAgICAgR0xfSU5ULCAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
cml0ZUNvbG9yPFIzMkczMkIzMlMsIEdMaW50PiAgICAgKTsKKworICAgIEluc2VydEZvcm1hdFdy
aXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHLCAgICAgICAgICAgICAgICAgR0xfVU5TSUdO
RURfQllURSwgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFI4RzgsIEdMZmxvYXQ+ICAgICAg
ICAgKTsKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SRywg
ICAgICAgICAgICAgICAgIEdMX0JZVEUsICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVD
b2xvcjxSOEc4UywgR0xmbG9hdD4gICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5j
dGlvbk1hcHBpbmcoJm1hcCwgR0xfUkcsICAgICAgICAgICAgICAgICBHTF9GTE9BVCwgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjMyRzMyRiwgR0xmbG9hdD4gICAgICApOwor
ICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHLCAgICAgICAg
ICAgICAgICAgR0xfSEFMRl9GTE9BVCwgICAgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFIx
NkcxNkYsIEdMZmxvYXQ+ICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFw
cGluZygmbWFwLCBHTF9SRywgICAgICAgICAgICAgICAgIEdMX0hBTEZfRkxPQVRfT0VTLCAgICAg
ICAgICAgICAgICAgV3JpdGVDb2xvcjxSMTZHMTZGLCBHTGZsb2F0PiAgICAgICk7CisgICAgSW5z
ZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkcsIEdMX1VOU0lHTkVEX1NI
T1JULCBXcml0ZUNvbG9yPFIxNkcxNiwgR0xmbG9hdD4pOworICAgIEluc2VydEZvcm1hdFdyaXRl
RnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JHLCBHTF9TSE9SVCwgV3JpdGVDb2xvcjxSMTZHMTZT
LCBHTGZsb2F0Pik7CisKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFw
LCBHTF9SR19JTlRFR0VSLCAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAg
ICAgV3JpdGVDb2xvcjxSOEc4LCBHTHVpbnQ+ICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0
V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkdfSU5URUdFUiwgICAgICAgICBHTF9CWVRF
LCAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjhHOFMsIEdMaW50PiAgICAg
ICAgICApOworICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JH
X0lOVEVHRVIsICAgICAgICAgR0xfVU5TSUdORURfU0hPUlQsICAgICAgICAgICAgICAgICBXcml0
ZUNvbG9yPFIxNkcxNiwgR0x1aW50PiAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1
bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SR19JTlRFR0VSLCAgICAgICAgIEdMX1NIT1JULCAgICAg
ICAgICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSMTZHMTZTLCBHTGludD4gICAgICAgICk7
CisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkdfSU5URUdF
UiwgICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8
UjMyRzMyLCBHTHVpbnQ+ICAgICAgICApOworICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25N
YXBwaW5nKCZtYXAsIEdMX1JHX0lOVEVHRVIsICAgICAgICAgR0xfSU5ULCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXcml0ZUNvbG9yPFIzMkczMlMsIEdMaW50PiAgICAgICAgKTsKKworICAg
IEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JFRCwgICAgICAgICAg
ICAgICAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFI4LCBH
TGZsb2F0PiAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGlu
ZygmbWFwLCBHTF9SRUQsICAgICAgICAgICAgICAgIEdMX0JZVEUsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV3JpdGVDb2xvcjxSOFMsIEdMZmxvYXQ+ICAgICAgICAgICk7CisgICAgSW5zZXJ0
Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkVELCAgICAgICAgICAgICAgICBH
TF9GTE9BVCwgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjMyRiwgR0xmbG9h
dD4gICAgICAgICApOworICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAs
IEdMX1JFRCwgICAgICAgICAgICAgICAgR0xfSEFMRl9GTE9BVCwgICAgICAgICAgICAgICAgICAg
ICBXcml0ZUNvbG9yPFIxNkYsIEdMZmxvYXQ+ICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRX
cml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SRUQsICAgICAgICAgICAgICAgIEdMX0hBTEZf
RkxPQVRfT0VTLCAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSMTZGLCBHTGZsb2F0PiAgICAg
ICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkVE
LCBHTF9VTlNJR05FRF9TSE9SVCwgV3JpdGVDb2xvcjxSMTYsIEdMZmxvYXQ+KTsKKyAgICBJbnNl
cnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SRUQsIEdMX1NIT1JULCBXcml0
ZUNvbG9yPFIxNlMsIEdMZmxvYXQ+KTsKKworICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25N
YXBwaW5nKCZtYXAsIEdMX1JFRF9JTlRFR0VSLCAgICAgICAgR0xfVU5TSUdORURfQllURSwgICAg
ICAgICAgICAgICAgICBXcml0ZUNvbG9yPFI4LCBHTHVpbnQ+ICAgICAgICAgICAgKTsKKyAgICBJ
bnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9SRURfSU5URUdFUiwgICAg
ICAgIEdMX0JZVEUsICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSOFMsIEdM
aW50PiAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmco
Jm1hcCwgR0xfUkVEX0lOVEVHRVIsICAgICAgICBHTF9VTlNJR05FRF9TSE9SVCwgICAgICAgICAg
ICAgICAgIFdyaXRlQ29sb3I8UjE2LCBHTHVpbnQ+ICAgICAgICAgICApOworICAgIEluc2VydEZv
cm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1JFRF9JTlRFR0VSLCAgICAgICAgR0xf
U0hPUlQsICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFIxNlMsIEdMaW50PiAg
ICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBH
TF9SRURfSU5URUdFUiwgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgICAgICAgICAgICAg
V3JpdGVDb2xvcjxSMzIsIEdMdWludD4gICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0V3Jp
dGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfUkVEX0lOVEVHRVIsICAgICAgICBHTF9JTlQsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8UjMyUywgR0xpbnQ+ICAgICAgICAg
ICApOworCisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfTFVN
SU5BTkNFX0FMUEhBLCAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICAgIFdyaXRl
Q29sb3I8TDhBOCwgR0xmbG9hdD4gICAgICAgICApOworICAgIEluc2VydEZvcm1hdFdyaXRlRnVu
Y3Rpb25NYXBwaW5nKCZtYXAsIEdMX0xVTUlOQU5DRSwgICAgICAgICAgR0xfVU5TSUdORURfQllU
RSwgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPEw4LCBHTGZsb2F0PiAgICAgICAgICAgKTsK
KyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9BTFBIQSwgICAg
ICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxB
OCwgR0xmbG9hdD4gICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1h
cHBpbmcoJm1hcCwgR0xfTFVNSU5BTkNFX0FMUEhBLCAgICBHTF9GTE9BVCwgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdyaXRlQ29sb3I8TDMyQTMyRiwgR0xmbG9hdD4gICAgICApOworICAgIElu
c2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX0xVTUlOQU5DRSwgICAgICAg
ICAgR0xfRkxPQVQsICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPEwzMkYsIEdM
ZmxvYXQ+ICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygm
bWFwLCBHTF9BTFBIQSwgICAgICAgICAgICAgIEdMX0ZMT0FULCAgICAgICAgICAgICAgICAgICAg
ICAgICAgV3JpdGVDb2xvcjxBMzJGLCBHTGZsb2F0PiAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9y
bWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfTFVNSU5BTkNFX0FMUEhBLCAgICBHTF9I
QUxGX0ZMT0FULCAgICAgICAgICAgICAgICAgICAgIFdyaXRlQ29sb3I8TDE2QTE2RiwgR0xmbG9h
dD4gICAgICApOworICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdM
X0xVTUlOQU5DRV9BTFBIQSwgICAgR0xfSEFMRl9GTE9BVF9PRVMsICAgICAgICAgICAgICAgICBX
cml0ZUNvbG9yPEwxNkExNkYsIEdMZmxvYXQ+ICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRXcml0
ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9MVU1JTkFOQ0UsICAgICAgICAgIEdMX0hBTEZfRkxP
QVQsICAgICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxMMTZGLCBHTGZsb2F0PiAgICAgICAg
ICk7CisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfTFVNSU5B
TkNFLCAgICAgICAgICBHTF9IQUxGX0ZMT0FUX09FUywgICAgICAgICAgICAgICAgIFdyaXRlQ29s
b3I8TDE2RiwgR0xmbG9hdD4gICAgICAgICApOworICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rp
b25NYXBwaW5nKCZtYXAsIEdMX0FMUEhBLCAgICAgICAgICAgICAgR0xfSEFMRl9GTE9BVCwgICAg
ICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPEExNkYsIEdMZmxvYXQ+ICAgICAgICAgKTsKKyAg
ICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9BTFBIQSwgICAgICAg
ICAgICAgIEdMX0hBTEZfRkxPQVRfT0VTLCAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxBMTZG
LCBHTGZsb2F0PiAgICAgICAgICk7CisKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFw
cGluZygmbWFwLCBHTF9CR1JBX0VYVCwgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAg
ICAgICAgICAgICAgV3JpdGVDb2xvcjxCOEc4UjhBOCwgR0xmbG9hdD4gICAgICk7CisgICAgSW5z
ZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfQkdSQV9FWFQsICAgICAgICAg
ICBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80X1JFVl9FWFQsIFdyaXRlQ29sb3I8QTRSNEc0QjQs
IEdMZmxvYXQ+ICAgICApOworICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZt
YXAsIEdMX0JHUkFfRVhULCAgICAgICAgICAgR0xfVU5TSUdORURfU0hPUlRfMV81XzVfNV9SRVZf
RVhULCBXcml0ZUNvbG9yPEExUjVHNUI1LCBHTGZsb2F0PiAgICAgKTsKKworICAgIEluc2VydEZv
cm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1NSR0JfRVhULCAgICAgICAgICAgR0xf
VU5TSUdORURfQllURSwgICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPFI4RzhCOCwgR0xmbG9h
dD4gICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBH
TF9TUkdCX0FMUEhBX0VYVCwgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgICAg
V3JpdGVDb2xvcjxSOEc4QjhBOCwgR0xmbG9hdD4gICAgICk7CisKKyAgICBJbnNlcnRGb3JtYXRX
cml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhU
LCAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgTlVMTCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfQ09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsICAgR0xfVU5TSUdORURfQllURSwgICAgIE5VTEwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdFdyaXRlRnVu
Y3Rpb25NYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEUsIEdM
X1VOU0lHTkVEX0JZVEUsICAgICBOVUxMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsK
KyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VE
X1JHQkFfUzNUQ19EWFQ1X0FOR0xFLCBHTF9VTlNJR05FRF9CWVRFLCAgICAgTlVMTCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICk7CisKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9u
TWFwcGluZygmbWFwLCBHTF9ERVBUSF9DT01QT05FTlQsICAgIEdMX1VOU0lHTkVEX1NIT1JULCAg
ICAgICAgICAgICAgICAgTlVMTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAg
SW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xfREVQVEhfQ09NUE9ORU5U
LCAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICAgICAgICAgICAgIE5VTEwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5n
KCZtYXAsIEdMX0RFUFRIX0NPTVBPTkVOVCwgICAgR0xfRkxPQVQsICAgICAgICAgICAgICAgICAg
ICAgICAgICBOVUxMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKworICAgIEluc2Vy
dEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX1NURU5DSUwsICAgICAgICAgICAg
R0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAgICBOVUxMICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKTsKKworICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZt
YXAsIEdMX0RFUFRIX1NURU5DSUwsICAgICAgR0xfVU5TSUdORURfSU5UXzI0XzgsICAgICAgICAg
ICAgICBOVUxMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3Jt
YXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9ERVBUSF9TVEVOQ0lMLCAgICAgIEdMX0ZM
T0FUXzMyX1VOU0lHTkVEX0lOVF8yNF84X1JFViwgTlVMTCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICk7CisgICAgLy8gY2xhbmctZm9ybWF0IG9uCisKKyAgICByZXR1cm4gbWFwOworfQor
fSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCitQYWNrUGl4ZWxzUGFyYW1zOjpQYWNrUGl4ZWxz
UGFyYW1zKCkKKyAgICA6IGZvcm1hdChHTF9OT05FKSwgdHlwZShHTF9OT05FKSwgb3V0cHV0UGl0
Y2goMCksIHBhY2tCdWZmZXIobnVsbHB0ciksIG9mZnNldCgwKQoreworfQorCitQYWNrUGl4ZWxz
UGFyYW1zOjpQYWNrUGl4ZWxzUGFyYW1zKGNvbnN0IGdsOjpSZWN0YW5nbGUgJmFyZWFJbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdEluLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZUluLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgb3V0cHV0UGl0Y2hJbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsUGFja1N0YXRlICZwYWNrSW4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBvZmZzZXRJbikK
KyAgICA6IGFyZWEoYXJlYUluKSwKKyAgICAgIGZvcm1hdChmb3JtYXRJbiksCisgICAgICB0eXBl
KHR5cGVJbiksCisgICAgICBvdXRwdXRQaXRjaChvdXRwdXRQaXRjaEluKSwKKyAgICAgIHBhY2tC
dWZmZXIocGFja0luLnBpeGVsQnVmZmVyLmdldCgpKSwKKyAgICAgIHBhY2socGFja0luLmFsaWdu
bWVudCwgcGFja0luLnJldmVyc2VSb3dPcmRlciksCisgICAgICBvZmZzZXQob2Zmc2V0SW4pCit7
Cit9CisKK3ZvaWQgUGFja1BpeGVscyhjb25zdCBQYWNrUGl4ZWxzUGFyYW1zICZwYXJhbXMsCisg
ICAgICAgICAgICAgICAgY29uc3QgYW5nbGU6OkZvcm1hdCAmc291cmNlRm9ybWF0LAorICAgICAg
ICAgICAgICAgIGludCBpbnB1dFBpdGNoSW4sCisgICAgICAgICAgICAgICAgY29uc3QgdWludDhf
dCAqc291cmNlSW4sCisgICAgICAgICAgICAgICAgdWludDhfdCAqZGVzdFdpdGhvdXRPZmZzZXQp
Cit7CisgICAgdWludDhfdCAqZGVzdFdpdGhPZmZzZXQgPSBkZXN0V2l0aG91dE9mZnNldCArIHBh
cmFtcy5vZmZzZXQ7CisKKyAgICBjb25zdCB1aW50OF90ICpzb3VyY2UgPSBzb3VyY2VJbjsKKyAg
ICBpbnQgaW5wdXRQaXRjaCAgICAgICAgPSBpbnB1dFBpdGNoSW47CisKKyAgICBpZiAocGFyYW1z
LnBhY2sucmV2ZXJzZVJvd09yZGVyKQorICAgIHsKKyAgICAgICAgc291cmNlICs9IGlucHV0UGl0
Y2ggKiAocGFyYW1zLmFyZWEuaGVpZ2h0IC0gMSk7CisgICAgICAgIGlucHV0UGl0Y2ggPSAtaW5w
dXRQaXRjaDsKKyAgICB9CisKKyAgICBjb25zdCBhdXRvICZzb3VyY2VHTEluZm8gPSBnbDo6R2V0
SW50ZXJuYWxGb3JtYXRJbmZvKHNvdXJjZUZvcm1hdC5nbEludGVybmFsRm9ybWF0KTsKKworICAg
IGlmIChzb3VyY2VHTEluZm8uZm9ybWF0ID09IHBhcmFtcy5mb3JtYXQgJiYgc291cmNlR0xJbmZv
LnR5cGUgPT0gcGFyYW1zLnR5cGUpCisgICAgeworICAgICAgICAvLyBEaXJlY3QgY29weSBwb3Nz
aWJsZQorICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IHBhcmFtcy5hcmVhLmhlaWdodDsgKyt5
KQorICAgICAgICB7CisgICAgICAgICAgICBtZW1jcHkoZGVzdFdpdGhPZmZzZXQgKyB5ICogcGFy
YW1zLm91dHB1dFBpdGNoLCBzb3VyY2UgKyB5ICogaW5wdXRQaXRjaCwKKyAgICAgICAgICAgICAg
ICAgICBwYXJhbXMuYXJlYS53aWR0aCAqIHNvdXJjZUdMSW5mby5waXhlbEJ5dGVzKTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKHNvdXJjZUdMSW5mby5w
aXhlbEJ5dGVzID4gMCk7CisKKyAgICBnbDo6Rm9ybWF0VHlwZSBmb3JtYXRUeXBlKHBhcmFtcy5m
b3JtYXQsIHBhcmFtcy50eXBlKTsKKyAgICBDb2xvckNvcHlGdW5jdGlvbiBmYXN0Q29weUZ1bmMg
PQorICAgICAgICBHZXRGYXN0Q29weUZ1bmN0aW9uKHNvdXJjZUZvcm1hdC5mYXN0Q29weUZ1bmN0
aW9ucywgZm9ybWF0VHlwZSk7CisgICAgR0xlbnVtIHNpemVkRGVzdEludGVybmFsRm9ybWF0ID0g
Z2w6OkdldFNpemVkSW50ZXJuYWxGb3JtYXQoZm9ybWF0VHlwZS5mb3JtYXQsIGZvcm1hdFR5cGUu
dHlwZSk7CisgICAgY29uc3QgYXV0byAmZGVzdEZvcm1hdEluZm8gICAgID0gZ2w6OkdldEludGVy
bmFsRm9ybWF0SW5mbyhzaXplZERlc3RJbnRlcm5hbEZvcm1hdCk7CisKKyAgICBpZiAoZmFzdENv
cHlGdW5jKQorICAgIHsKKyAgICAgICAgLy8gRmFzdCBjb3B5IGlzIHBvc3NpYmxlIHRocm91Z2gg
c29tZSBzcGVjaWFsIGZ1bmN0aW9uCisgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgcGFyYW1z
LmFyZWEuaGVpZ2h0OyArK3kpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoaW50IHggPSAw
OyB4IDwgcGFyYW1zLmFyZWEud2lkdGg7ICsreCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICB1aW50OF90ICpkZXN0ID0KKyAgICAgICAgICAgICAgICAgICAgZGVzdFdpdGhPZmZzZXQg
KyB5ICogcGFyYW1zLm91dHB1dFBpdGNoICsgeCAqIGRlc3RGb3JtYXRJbmZvLnBpeGVsQnl0ZXM7
CisgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqc3JjID0gc291cmNlICsgeSAqIGlucHV0
UGl0Y2ggKyB4ICogc291cmNlR0xJbmZvLnBpeGVsQnl0ZXM7CisKKyAgICAgICAgICAgICAgICBm
YXN0Q29weUZ1bmMoc3JjLCBkZXN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgQ29sb3JXcml0ZUZ1bmN0aW9uIGNvbG9yV3JpdGVGdW5j
dGlvbiA9IEdldENvbG9yV3JpdGVGdW5jdGlvbihmb3JtYXRUeXBlKTsKKworICAgIC8vIE1heGlt
dW0gc2l6ZSBvZiBhbnkgQ29sb3I8VD4gdHlwZSB1c2VkLgorICAgIHVpbnQ4X3QgdGVtcFsxNl07
CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YodGVtcCkgPj0gc2l6ZW9mKGdsOjpDb2xvckYpICYm
IHNpemVvZih0ZW1wKSA+PSBzaXplb2YoZ2w6OkNvbG9yVUkpICYmCisgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZW9mKHRlbXApID49IHNpemVvZihnbDo6Q29sb3JJKSwKKyAgICAgICAgICAgICAg
ICAgICJVbmV4cGVjdGVkIHNpemUgb2YgZ2w6OkNvbG9yIHN0cnVjdC4iKTsKKworICAgIGNvbnN0
IGF1dG8gJmNvbG9yUmVhZEZ1bmN0aW9uID0gc291cmNlRm9ybWF0LmNvbG9yUmVhZEZ1bmN0aW9u
OworCisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBwYXJhbXMuYXJlYS5oZWlnaHQ7ICsreSkKKyAg
ICB7CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgcGFyYW1zLmFyZWEud2lkdGg7ICsreCkK
KyAgICAgICAgeworICAgICAgICAgICAgdWludDhfdCAqZGVzdCAgICAgID0gZGVzdFdpdGhPZmZz
ZXQgKyB5ICogcGFyYW1zLm91dHB1dFBpdGNoICsgeCAqIGRlc3RGb3JtYXRJbmZvLnBpeGVsQnl0
ZXM7CisgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzcmMgPSBzb3VyY2UgKyB5ICogaW5wdXRQ
aXRjaCArIHggKiBzb3VyY2VHTEluZm8ucGl4ZWxCeXRlczsKKworICAgICAgICAgICAgLy8gcmVh
ZEZ1bmMgYW5kIHdyaXRlRnVuYyB3aWxsIGJlIHVzaW5nIHRoZSBzYW1lIHR5cGUgb2YgY29sb3Is
IENvcHlUZXhJbWFnZQorICAgICAgICAgICAgLy8gd2lsbCBub3QgYWxsb3cgdGhlIGNvcHkgb3Ro
ZXJ3aXNlLgorICAgICAgICAgICAgY29sb3JSZWFkRnVuY3Rpb24oc3JjLCB0ZW1wKTsKKyAgICAg
ICAgICAgIGNvbG9yV3JpdGVGdW5jdGlvbih0ZW1wLCBkZXN0KTsKKyAgICAgICAgfQorICAgIH0K
K30KKworQ29sb3JXcml0ZUZ1bmN0aW9uIEdldENvbG9yV3JpdGVGdW5jdGlvbihjb25zdCBnbDo6
Rm9ybWF0VHlwZSAmZm9ybWF0VHlwZSkKK3sKKyAgICBzdGF0aWMgY29uc3QgRm9ybWF0V3JpdGVG
dW5jdGlvbk1hcCBmb3JtYXRUeXBlTWFwID0gQnVpbGRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwKCk7
CisgICAgYXV0byBpdGVyID0gZm9ybWF0VHlwZU1hcC5maW5kKGZvcm1hdFR5cGUpOworICAgIEFT
U0VSVChpdGVyICE9IGZvcm1hdFR5cGVNYXAuZW5kKCkpOworICAgIGlmIChpdGVyICE9IGZvcm1h
dFR5cGVNYXAuZW5kKCkpCisgICAgeworICAgICAgICByZXR1cm4gaXRlci0+c2Vjb25kOworICAg
IH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9Cit9CisK
K0NvbG9yQ29weUZ1bmN0aW9uIEdldEZhc3RDb3B5RnVuY3Rpb24oY29uc3QgRmFzdENvcHlGdW5j
dGlvbk1hcCAmZmFzdENvcHlGdW5jdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpGb3JtYXRUeXBlICZmb3JtYXRUeXBlKQoreworICAgIGF1dG8g
aXRlciA9IGZhc3RDb3B5RnVuY3Rpb25zLmZpbmQoZm9ybWF0VHlwZSk7CisgICAgcmV0dXJuIChp
dGVyICE9IGZhc3RDb3B5RnVuY3Rpb25zLmVuZCgpKSA/IGl0ZXItPnNlY29uZCA6IG51bGxwdHI7
Cit9CisKK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL3JlbmRlcmVyX3V0aWxzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3JlbmRlcmVyX3V0aWxz
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL3JlbmRlcmVyX3V0aWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDQg
QEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisvLyByZW5kZXJlcl91dGlsczoKKy8vICAgSGVscGVyIG1ldGhvZHMgcGVy
dGFpbmluZyB0byBtb3N0IG9yIGFsbCBiYWNrLWVuZHMuCisvLworCisjaWZuZGVmIExJQkFOR0xF
X1JFTkRFUkVSX1JFTkRFUkVSX1VUSUxTX0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX1JF
TkRFUkVSX1VUSUxTX0hfCisKKyNpbmNsdWRlIDxjc3RkaW50PgorCisjaW5jbHVkZSA8bWFwPgor
CisjaW5jbHVkZSAibGliQU5HTEUvYW5nbGV0eXBlcy5oIgorCituYW1lc3BhY2UgYW5nbGUKK3sK
K3N0cnVjdCBGb3JtYXQ7Cit9CisKK25hbWVzcGFjZSBnbAoreworc3RydWN0IEZvcm1hdFR5cGU7
CitzdHJ1Y3QgSW50ZXJuYWxGb3JtYXQ7Cit9CisKK25hbWVzcGFjZSByeAoreworCit1c2luZyBN
aXBHZW5lcmF0aW9uRnVuY3Rpb24gPSB2b2lkICgqKShzaXplX3Qgc291cmNlV2lkdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc291cmNlSGVpZ2h0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNvdXJjZURlcHRo
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAq
c291cmNlRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBzb3VyY2VSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBzb3VyY2VEZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDhfdCAqZGVzdERhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgZGVzdFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGRlc3REZXB0aFBpdGNoKTsKKwordHlwZWRlZiB2b2lkICgq
Q29sb3JSZWFkRnVuY3Rpb24pKGNvbnN0IHVpbnQ4X3QgKnNvdXJjZSwgdWludDhfdCAqZGVzdCk7
Cit0eXBlZGVmIHZvaWQgKCpDb2xvcldyaXRlRnVuY3Rpb24pKGNvbnN0IHVpbnQ4X3QgKnNvdXJj
ZSwgdWludDhfdCAqZGVzdCk7Cit0eXBlZGVmIHZvaWQgKCpDb2xvckNvcHlGdW5jdGlvbikoY29u
c3QgdWludDhfdCAqc291cmNlLCB1aW50OF90ICpkZXN0KTsKKwordHlwZWRlZiBzdGQ6Om1hcDxn
bDo6Rm9ybWF0VHlwZSwgQ29sb3JDb3B5RnVuY3Rpb24+IEZhc3RDb3B5RnVuY3Rpb25NYXA7CisK
K3N0cnVjdCBQYWNrUGl4ZWxzUGFyYW1zCit7CisgICAgUGFja1BpeGVsc1BhcmFtcygpOworICAg
IFBhY2tQaXhlbHNQYXJhbXMoY29uc3QgZ2w6OlJlY3RhbmdsZSAmYXJlYSwKKyAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgIEdMdWludCBvdXRwdXRQaXRjaCwKKyAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFBhY2tTdGF0ZSAmcGFjaywKKyAgICAgICAgICAgICAg
ICAgICAgIHB0cmRpZmZfdCBvZmZzZXQpOworCisgICAgZ2w6OlJlY3RhbmdsZSBhcmVhOworICAg
IEdMZW51bSBmb3JtYXQ7CisgICAgR0xlbnVtIHR5cGU7CisgICAgR0x1aW50IG91dHB1dFBpdGNo
OworICAgIGdsOjpCdWZmZXIgKnBhY2tCdWZmZXI7CisgICAgZ2w6OlBpeGVsUGFja1N0YXRlIHBh
Y2s7CisgICAgcHRyZGlmZl90IG9mZnNldDsKK307CisKK3ZvaWQgUGFja1BpeGVscyhjb25zdCBQ
YWNrUGl4ZWxzUGFyYW1zICZwYXJhbXMsCisgICAgICAgICAgICAgICAgY29uc3QgYW5nbGU6OkZv
cm1hdCAmc291cmNlRm9ybWF0LAorICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLAorICAg
ICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNvdXJjZSwKKyAgICAgICAgICAgICAgICB1aW50
OF90ICpkZXN0aW5hdGlvbik7CisKK0NvbG9yV3JpdGVGdW5jdGlvbiBHZXRDb2xvcldyaXRlRnVu
Y3Rpb24oY29uc3QgZ2w6OkZvcm1hdFR5cGUgJmZvcm1hdFR5cGUpOworQ29sb3JDb3B5RnVuY3Rp
b24gR2V0RmFzdENvcHlGdW5jdGlvbihjb25zdCBGYXN0Q29weUZ1bmN0aW9uTWFwICZmYXN0Q29w
eUZ1bmN0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OkZvcm1hdFR5cGUgJmZvcm1hdFR5cGUpOworCit1c2luZyBMb2FkSW1hZ2VGdW5jdGlvbiA9
IHZvaWQgKCopKHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50
OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlu
cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBp
bnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4
X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91
dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
b3V0cHV0RGVwdGhQaXRjaCk7CisKK3N0cnVjdCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8KK3sKKyAg
ICBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oKSA6IGxvYWRGdW5jdGlvbihudWxscHRyKSwgcmVxdWly
ZXNDb252ZXJzaW9uKGZhbHNlKSB7fQorICAgIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkSW1h
Z2VGdW5jdGlvbiBsb2FkRnVuY3Rpb24sIGJvb2wgcmVxdWlyZXNDb252ZXJzaW9uKQorICAgICAg
ICA6IGxvYWRGdW5jdGlvbihsb2FkRnVuY3Rpb24pLCByZXF1aXJlc0NvbnZlcnNpb24ocmVxdWly
ZXNDb252ZXJzaW9uKQorICAgIHsKKyAgICB9CisKKyAgICBMb2FkSW1hZ2VGdW5jdGlvbiBsb2Fk
RnVuY3Rpb247CisgICAgYm9vbCByZXF1aXJlc0NvbnZlcnNpb247Cit9OworCit1c2luZyBMb2Fk
RnVuY3Rpb25NYXAgPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8gKCopKEdMZW51bSk7CisKK30gIC8v
IG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX1JFTkRFUkVSX1VU
SUxTX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvdnVsa2FuL0J1ZmZlclZrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0J1ZmZlclZrLmNwcAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVs
a2FuL0J1ZmZlclZrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc0IEBACisvLworLy8g
Q29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworLy8gQnVmZmVyVmsuY3BwOgorLy8gICAgSW1wbGVtZW50cyB0aGUgY2xhc3MgbWV0aG9kcyBm
b3IgQnVmZmVyVmsuCisvLworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0J1
ZmZlclZrLmgiCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKworbmFtZXNwYWNlIHJ4Cit7
CisKK0J1ZmZlclZrOjpCdWZmZXJWaygpIDogQnVmZmVySW1wbCgpCit7Cit9CisKK0J1ZmZlclZr
Ojp+QnVmZmVyVmsoKQoreworfQorCitnbDo6RXJyb3IgQnVmZmVyVms6OnNldERhdGEoR0xlbnVt
IHRhcmdldCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIEdMZW51bSB1c2FnZSkKK3sK
KyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBCdWZmZXJWazo6c2V0U3ViRGF0YShHTGVudW0gdGFy
Z2V0LCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG9mZnNldCkKK3sKKyAg
ICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7Cit9CisKK2dsOjpFcnJvciBCdWZmZXJWazo6Y29weVN1YkRhdGEoQnVmZmVySW1wbCAq
c291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBzb3VyY2VP
ZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIGRlc3RPZmZz
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgc2l6ZSkKK3sK
KyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBCdWZmZXJWazo6bWFwKEdMZW51bSBhY2Nlc3MsIEdM
dm9pZCAqKm1hcFB0cikKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBCdWZmZXJWazo6bWFw
UmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCwgR0xiaXRmaWVsZCBhY2Nlc3MsIEdM
dm9pZCAqKm1hcFB0cikKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBCdWZmZXJWazo6dW5t
YXAoR0xib29sZWFuICpyZXN1bHQpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgQnVmZmVy
Vms6OmdldEluZGV4UmFuZ2UoR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBw
cmltaXRpdmVSZXN0YXJ0RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnbDo6SW5kZXhSYW5nZSAqb3V0UmFuZ2UpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCit9ICAvLyBuYW1l
c3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4vQnVmZmVyVmsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0J1ZmZlclZrLmgJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGth
bi9CdWZmZXJWay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKy8vCisvLyBDb3B5
cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisv
LyBCdWZmZXJWay5oOgorLy8gICAgRGVmaW5lcyB0aGUgY2xhc3MgaW50ZXJmYWNlIGZvciBCdWZm
ZXJWaywgaW1wbGVtZW50aW5nIEJ1ZmZlckltcGwuCisvLworCisjaWZuZGVmIExJQkFOR0xFX1JF
TkRFUkVSX1ZVTEtBTl9CVUZGRVJWS19IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9WVUxL
QU5fQlVGRkVSVktfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0J1ZmZlckltcGwu
aCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIEJ1ZmZlclZrIDogcHVibGljIEJ1ZmZlcklt
cGwKK3sKKyAgcHVibGljOgorICAgIEJ1ZmZlclZrKCk7CisgICAgfkJ1ZmZlclZrKCkgb3ZlcnJp
ZGU7CisKKyAgICBnbDo6RXJyb3Igc2V0RGF0YShHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkICpk
YXRhLCBzaXplX3Qgc2l6ZSwgR0xlbnVtIHVzYWdlKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3Ig
c2V0U3ViRGF0YShHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwg
c2l6ZV90IG9mZnNldCkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGNvcHlTdWJEYXRhKEJ1ZmZl
ckltcGwgKnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgc291cmNl
T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBkZXN0T2Zmc2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUpIG92ZXJyaWRlOworICAg
IGdsOjpFcnJvciBtYXAoR0xlbnVtIGFjY2VzcywgR0x2b2lkICoqbWFwUHRyKSBvdmVycmlkZTsK
KyAgICBnbDo6RXJyb3IgbWFwUmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCwgR0xi
aXRmaWVsZCBhY2Nlc3MsIEdMdm9pZCAqKm1hcFB0cikgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9y
IHVubWFwKEdMYm9vbGVhbiAqcmVzdWx0KSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBnZXRJ
bmRleFJhbmdlKEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNvdW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJpbWl0aXZlUmVzdGFydEVuYWJsZWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkluZGV4UmFuZ2UgKm91dFJhbmdlKSBvdmVy
cmlkZTsKK307CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JF
TkRFUkVSX1ZVTEtBTl9CVUZGRVJWS19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db21waWxlclZrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0Nv
bXBpbGVyVmsuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQ29tcGlsZXJWay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwzNyBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIENvbXBpbGVyVmsuY3BwOgorLy8gICAgSW1w
bGVtZW50cyB0aGUgY2xhc3MgbWV0aG9kcyBmb3IgQ29tcGlsZXJWay4KKy8vCisKKyNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQ29tcGlsZXJWay5oIgorCisjaW5jbHVkZSAiY29t
bW9uL2RlYnVnLmgiCisKK25hbWVzcGFjZSByeAoreworCitDb21waWxlclZrOjpDb21waWxlclZr
KCkgOiBDb21waWxlckltcGwoKQoreworfQorCitDb21waWxlclZrOjp+Q29tcGlsZXJWaygpCit7
Cit9CisKK2dsOjpFcnJvciBDb21waWxlclZrOjpyZWxlYXNlKCkKK3sKKyAgICBVTklNUExFTUVO
VEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisK
K1NoU2hhZGVyT3V0cHV0IENvbXBpbGVyVms6OmdldFRyYW5zbGF0b3JPdXRwdXRUeXBlKCkgY29u
c3QKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIFNoU2hhZGVyT3V0cHV0KCk7
Cit9CisKK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db21waWxlclZrLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db21w
aWxlclZrLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db21waWxlclZrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwzMiBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIENvbXBpbGVyVmsuaDoKKy8vICAgIERlZmluZXMgdGhl
IGNsYXNzIGludGVyZmFjZSBmb3IgQ29tcGlsZXJWaywgaW1wbGVtZW50aW5nIENvbXBpbGVySW1w
bC4KKy8vCisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX0NPTVBJTEVSVktfSF8K
KyNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX0NPTVBJTEVSVktfSF8KKworI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0NvbXBpbGVySW1wbC5oIgorCituYW1lc3BhY2UgcngKK3sK
KworY2xhc3MgQ29tcGlsZXJWayA6IHB1YmxpYyBDb21waWxlckltcGwKK3sKKyAgcHVibGljOgor
ICAgIENvbXBpbGVyVmsoKTsKKyAgICB+Q29tcGlsZXJWaygpIG92ZXJyaWRlOworCisgICAgZ2w6
OkVycm9yIHJlbGVhc2UoKSBvdmVycmlkZTsKKworICAgIC8vIFRPRE8oam1hZGlsbCk6IEV4cG9z
ZSB0cmFuc2xhdG9yIGJ1aWx0LWluIHJlc291cmNlcyBpbml0IG1ldGhvZC4KKyAgICBTaFNoYWRl
ck91dHB1dCBnZXRUcmFuc2xhdG9yT3V0cHV0VHlwZSgpIGNvbnN0IG92ZXJyaWRlOworfTsKKwor
fSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfVlVMS0FO
X0NPTVBJTEVSVktfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vQ29udGV4dFZrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbnRleHRWay5jcHAJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL3Z1bGthbi9Db250ZXh0VmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjU0
IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworLy8gQ29udGV4dFZrLmNwcDoKKy8vICAgIEltcGxlbWVudHMgdGhlIGNs
YXNzIG1ldGhvZHMgZm9yIENvbnRleHRWay4KKy8vCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4vQ29udGV4dFZrLmgiCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKyNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQnVmZmVyVmsuaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQ29tcGlsZXJWay5oIgorI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL3Z1bGthbi9Db250ZXh0VmsuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci92dWxrYW4vRGV2aWNlVmsuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
RmVuY2VOVlZrLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0ZlbmNlU3lu
Y1ZrLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0ZyYW1lYnVmZmVyVmsu
aCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vSW1hZ2VWay5oIgorI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Qcm9ncmFtVmsuaCIKKyNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vUXVlcnlWay5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL3Z1bGthbi9SZW5kZXJidWZmZXJWay5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9SZW5kZXJlclZrLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2Fu
L1NhbXBsZXJWay5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TaGFkZXJW
ay5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9UZXh0dXJlVmsuaCIKKyNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVHJhbnNmb3JtRmVlZGJhY2tWay5oIgor
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9WZXJ0ZXhBcnJheVZrLmgiCisKK25h
bWVzcGFjZSByeAoreworCitDb250ZXh0Vms6OkNvbnRleHRWayhjb25zdCBnbDo6Q29udGV4dFN0
YXRlICZzdGF0ZSwgUmVuZGVyZXJWayAqcmVuZGVyZXIpCisgICAgOiBDb250ZXh0SW1wbChzdGF0
ZSksIG1SZW5kZXJlcihyZW5kZXJlcikKK3sKK30KKworQ29udGV4dFZrOjp+Q29udGV4dFZrKCkK
K3sKK30KKworZ2w6OkVycm9yIENvbnRleHRWazo6aW5pdGlhbGl6ZSgpCit7CisgICAgVU5JTVBM
RU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwor
fQorCitnbDo6RXJyb3IgQ29udGV4dFZrOjpmbHVzaCgpCit7CisgICAgVU5JTVBMRU1FTlRFRCgp
OworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6
RXJyb3IgQ29udGV4dFZrOjpmaW5pc2goKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIENv
bnRleHRWazo6ZHJhd0FycmF5cyhHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291
bnQpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgQ29udGV4dFZrOjpkcmF3QXJyYXlzSW5z
dGFuY2VkKEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBmaXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBpbnN0YW5jZUNvdW50KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIENv
bnRleHRWazo6ZHJhd0VsZW1lbnRzKEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpJbmRleFJhbmdlICZpbmRleFJhbmdlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsK
KyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVy
cm9yIENvbnRleHRWazo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdMZW51bSBtb2RlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRp
Y2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
aW5zdGFuY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpJbmRleFJhbmdlICZpbmRleFJhbmdlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsK
KyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVy
cm9yIENvbnRleHRWazo6ZHJhd1JhbmdlRWxlbWVudHMoR0xlbnVtIG1vZGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZW5kLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpCit7
CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOworfQorCitHTGVudW0gQ29udGV4dFZrOjpnZXRSZXNldFN0YXR1cygpCit7Cisg
ICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBHTF9OT19FUlJPUjsKK30KKworc3RkOjpz
dHJpbmcgQ29udGV4dFZrOjpnZXRWZW5kb3JTdHJpbmcoKSBjb25zdAoreworICAgIFVOSU1QTEVN
RU5URUQoKTsKKyAgICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKK30KKworc3RkOjpzdHJpbmcgQ29u
dGV4dFZrOjpnZXRSZW5kZXJlckRlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICBVTklNUExFTUVO
VEVEKCk7CisgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7Cit9CisKK3ZvaWQgQ29udGV4dFZrOjpp
bnNlcnRFdmVudE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKQorewor
ICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwordm9pZCBDb250ZXh0Vms6OnB1c2hHcm91cE1hcmtl
cihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKQoreworICAgIFVOSU1QTEVNRU5U
RUQoKTsKK30KKwordm9pZCBDb250ZXh0Vms6OnBvcEdyb3VwTWFya2VyKCkKK3sKKyAgICBVTklN
UExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgQ29udGV4dFZrOjpzeW5jU3RhdGUoY29uc3QgZ2w6OlN0
YXRlICZzdGF0ZSwgY29uc3QgZ2w6OlN0YXRlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykKK3sKKyAg
ICBVTklNUExFTUVOVEVEKCk7Cit9CisKK0dMaW50IENvbnRleHRWazo6Z2V0R1BVRGlzam9pbnQo
KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gR0xpbnQoKTsKK30KKworR0xp
bnQ2NCBDb250ZXh0Vms6OmdldFRpbWVzdGFtcCgpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgIHJldHVybiBHTGludDY0KCk7Cit9CisKK3ZvaWQgQ29udGV4dFZrOjpvbk1ha2VDdXJyZW50
KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOwor
fQorCitjb25zdCBnbDo6Q2FwcyAmQ29udGV4dFZrOjpnZXROYXRpdmVDYXBzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXROYXRpdmVDYXBzKCk7Cit9CisKK2NvbnN0IGdsOjpU
ZXh0dXJlQ2Fwc01hcCAmQ29udGV4dFZrOjpnZXROYXRpdmVUZXh0dXJlQ2FwcygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0TmF0aXZlVGV4dHVyZUNhcHMoKTsKK30KKworY29u
c3QgZ2w6OkV4dGVuc2lvbnMgJkNvbnRleHRWazo6Z2V0TmF0aXZlRXh0ZW5zaW9ucygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0TmF0aXZlRXh0ZW5zaW9ucygpOworfQorCitj
b25zdCBnbDo6TGltaXRhdGlvbnMgJkNvbnRleHRWazo6Z2V0TmF0aXZlTGltaXRhdGlvbnMoKSBj
b25zdAoreworICAgIHJldHVybiBtUmVuZGVyZXItPmdldE5hdGl2ZUxpbWl0YXRpb25zKCk7Cit9
CisKK0NvbXBpbGVySW1wbCAqQ29udGV4dFZrOjpjcmVhdGVDb21waWxlcigpCit7CisgICAgcmV0
dXJuIG5ldyBDb21waWxlclZrKCk7Cit9CisKK1NoYWRlckltcGwgKkNvbnRleHRWazo6Y3JlYXRl
U2hhZGVyKGNvbnN0IGdsOjpTaGFkZXJTdGF0ZSAmc3RhdGUpCit7CisgICAgcmV0dXJuIG5ldyBT
aGFkZXJWayhzdGF0ZSk7Cit9CisKK1Byb2dyYW1JbXBsICpDb250ZXh0Vms6OmNyZWF0ZVByb2dy
YW0oY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmc3RhdGUpCit7CisgICAgcmV0dXJuIG5ldyBQcm9n
cmFtVmsoc3RhdGUpOworfQorCitGcmFtZWJ1ZmZlckltcGwgKkNvbnRleHRWazo6Y3JlYXRlRnJh
bWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJnN0YXRlKQoreworICAgIHJldHVy
biBuZXcgRnJhbWVidWZmZXJWayhzdGF0ZSk7Cit9CisKK1RleHR1cmVJbXBsICpDb250ZXh0Vms6
OmNyZWF0ZVRleHR1cmUoY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmc3RhdGUpCit7CisgICAgcmV0
dXJuIG5ldyBUZXh0dXJlVmsoc3RhdGUpOworfQorCitSZW5kZXJidWZmZXJJbXBsICpDb250ZXh0
Vms6OmNyZWF0ZVJlbmRlcmJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG5ldyBSZW5kZXJidWZmZXJW
aygpOworfQorCitCdWZmZXJJbXBsICpDb250ZXh0Vms6OmNyZWF0ZUJ1ZmZlcigpCit7CisgICAg
cmV0dXJuIG5ldyBCdWZmZXJWaygpOworfQorCitWZXJ0ZXhBcnJheUltcGwgKkNvbnRleHRWazo6
Y3JlYXRlVmVydGV4QXJyYXkoY29uc3QgZ2w6OlZlcnRleEFycmF5U3RhdGUgJnN0YXRlKQorewor
ICAgIHJldHVybiBuZXcgVmVydGV4QXJyYXlWayhzdGF0ZSk7Cit9CisKK1F1ZXJ5SW1wbCAqQ29u
dGV4dFZrOjpjcmVhdGVRdWVyeShHTGVudW0gdHlwZSkKK3sKKyAgICByZXR1cm4gbmV3IFF1ZXJ5
VmsodHlwZSk7Cit9CisKK0ZlbmNlTlZJbXBsICpDb250ZXh0Vms6OmNyZWF0ZUZlbmNlTlYoKQor
eworICAgIHJldHVybiBuZXcgRmVuY2VOVlZrKCk7Cit9CisKK0ZlbmNlU3luY0ltcGwgKkNvbnRl
eHRWazo6Y3JlYXRlRmVuY2VTeW5jKCkKK3sKKyAgICByZXR1cm4gbmV3IEZlbmNlU3luY1ZrKCk7
Cit9CisKK1RyYW5zZm9ybUZlZWRiYWNrSW1wbCAqQ29udGV4dFZrOjpjcmVhdGVUcmFuc2Zvcm1G
ZWVkYmFjayhjb25zdCBnbDo6VHJhbnNmb3JtRmVlZGJhY2tTdGF0ZSAmc3RhdGUpCit7CisgICAg
cmV0dXJuIG5ldyBUcmFuc2Zvcm1GZWVkYmFja1ZrKHN0YXRlKTsKK30KKworU2FtcGxlckltcGwg
KkNvbnRleHRWazo6Y3JlYXRlU2FtcGxlcigpCit7CisgICAgcmV0dXJuIG5ldyBTYW1wbGVyVmso
KTsKK30KKworc3RkOjp2ZWN0b3I8UGF0aEltcGwgKj4gQ29udGV4dFZrOjpjcmVhdGVQYXRocyhH
THNpemVpKQoreworICAgIHJldHVybiBzdGQ6OnZlY3RvcjxQYXRoSW1wbCAqPigpOworfQorCit9
ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vQ29udGV4dFZrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db250ZXh0VmsuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvdnVsa2FuL0NvbnRleHRWay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTI2IEBA
CisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworLy8gQ29udGV4dFZrLmg6CisvLyAgICBEZWZpbmVzIHRoZSBjbGFzcyBpbnRl
cmZhY2UgZm9yIENvbnRleHRWaywgaW1wbGVtZW50aW5nIENvbnRleHRJbXBsLgorLy8KKworI2lm
bmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5fQ09OVEVYVFZLX0hfCisjZGVmaW5lIExJQkFO
R0xFX1JFTkRFUkVSX1ZVTEtBTl9DT05URVhUVktfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL0NvbnRleHRJbXBsLmgiCisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXJW
azsKKworY2xhc3MgQ29udGV4dFZrIDogcHVibGljIENvbnRleHRJbXBsCit7CisgIHB1YmxpYzoK
KyAgICBDb250ZXh0VmsoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmc3RhdGUsIFJlbmRlcmVyVmsg
KnJlbmRlcmVyKTsKKyAgICB+Q29udGV4dFZrKCkgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJyb3Ig
aW5pdGlhbGl6ZSgpIG92ZXJyaWRlOworCisgICAgLy8gRmx1c2ggYW5kIGZpbmlzaC4KKyAgICBn
bDo6RXJyb3IgZmx1c2goKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgZmluaXNoKCkgb3ZlcnJp
ZGU7CisKKyAgICAvLyBEcmF3aW5nIG1ldGhvZHMuCisgICAgZ2w6OkVycm9yIGRyYXdBcnJheXMo
R0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50KSBvdmVycmlkZTsKKyAgICBn
bDo6RXJyb3IgZHJhd0FycmF5c0luc3RhbmNlZChHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBmaXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgaW5zdGFuY2VDb3VudCkgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJyb3IgZHJh
d0VsZW1lbnRzKEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpIG92ZXJyaWRl
OworICAgIGdsOjpFcnJvciBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0xlbnVtIG1vZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpJbmRleFJhbmdlICZpbmRleFJhbmdlKSBv
dmVycmlkZTsKKyAgICBnbDo6RXJyb3IgZHJhd1JhbmdlRWxlbWVudHMoR0xlbnVtIG1vZGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9p
ZCAqaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Oklu
ZGV4UmFuZ2UgJmluZGV4UmFuZ2UpIG92ZXJyaWRlOworCisgICAgLy8gRGV2aWNlIGxvc3MKKyAg
ICBHTGVudW0gZ2V0UmVzZXRTdGF0dXMoKSBvdmVycmlkZTsKKworICAgIC8vIFZlbmRvciBhbmQg
ZGVzY3JpcHRpb24gc3RyaW5ncy4KKyAgICBzdGQ6OnN0cmluZyBnZXRWZW5kb3JTdHJpbmcoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBzdGQ6OnN0cmluZyBnZXRSZW5kZXJlckRlc2NyaXB0aW9uKCkg
Y29uc3Qgb3ZlcnJpZGU7CisKKyAgICAvLyBEZWJ1ZyBtYXJrZXJzLgorICAgIHZvaWQgaW5zZXJ0
RXZlbnRNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikgb3ZlcnJpZGU7
CisgICAgdm9pZCBwdXNoR3JvdXBNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1h
cmtlcikgb3ZlcnJpZGU7CisgICAgdm9pZCBwb3BHcm91cE1hcmtlcigpIG92ZXJyaWRlOworCisg
ICAgLy8gU3RhdGUgc3luYyB3aXRoIGRpcnR5IGJpdHMuCisgICAgdm9pZCBzeW5jU3RhdGUoY29u
c3QgZ2w6OlN0YXRlICZzdGF0ZSwgY29uc3QgZ2w6OlN0YXRlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0
cykgb3ZlcnJpZGU7CisKKyAgICAvLyBEaXNqb2ludCB0aW1lciBxdWVyaWVzCisgICAgR0xpbnQg
Z2V0R1BVRGlzam9pbnQoKSBvdmVycmlkZTsKKyAgICBHTGludDY0IGdldFRpbWVzdGFtcCgpIG92
ZXJyaWRlOworCisgICAgLy8gQ29udGV4dCBzd2l0Y2hpbmcKKyAgICB2b2lkIG9uTWFrZUN1cnJl
bnQoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSkgb3ZlcnJpZGU7CisKKyAgICAvLyBOYXRp
dmUgY2FwYWJpbGl0aWVzLCB1bm1vZGlmaWVkIGJ5IGdsOjpDb250ZXh0LgorICAgIGNvbnN0IGds
OjpDYXBzICZnZXROYXRpdmVDYXBzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgZ2w6OlRl
eHR1cmVDYXBzTWFwICZnZXROYXRpdmVUZXh0dXJlQ2FwcygpIGNvbnN0IG92ZXJyaWRlOworICAg
IGNvbnN0IGdsOjpFeHRlbnNpb25zICZnZXROYXRpdmVFeHRlbnNpb25zKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgY29uc3QgZ2w6OkxpbWl0YXRpb25zICZnZXROYXRpdmVMaW1pdGF0aW9ucygpIGNv
bnN0IG92ZXJyaWRlOworCisgICAgLy8gU2hhZGVyIGNyZWF0aW9uCisgICAgQ29tcGlsZXJJbXBs
ICpjcmVhdGVDb21waWxlcigpIG92ZXJyaWRlOworICAgIFNoYWRlckltcGwgKmNyZWF0ZVNoYWRl
cihjb25zdCBnbDo6U2hhZGVyU3RhdGUgJnN0YXRlKSBvdmVycmlkZTsKKyAgICBQcm9ncmFtSW1w
bCAqY3JlYXRlUHJvZ3JhbShjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZzdGF0ZSkgb3ZlcnJpZGU7
CisKKyAgICAvLyBGcmFtZWJ1ZmZlciBjcmVhdGlvbgorICAgIEZyYW1lYnVmZmVySW1wbCAqY3Jl
YXRlRnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJnN0YXRlKSBvdmVycmlk
ZTsKKworICAgIC8vIFRleHR1cmUgY3JlYXRpb24KKyAgICBUZXh0dXJlSW1wbCAqY3JlYXRlVGV4
dHVyZShjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZzdGF0ZSkgb3ZlcnJpZGU7CisKKyAgICAvLyBS
ZW5kZXJidWZmZXIgY3JlYXRpb24KKyAgICBSZW5kZXJidWZmZXJJbXBsICpjcmVhdGVSZW5kZXJi
dWZmZXIoKSBvdmVycmlkZTsKKworICAgIC8vIEJ1ZmZlciBjcmVhdGlvbgorICAgIEJ1ZmZlcklt
cGwgKmNyZWF0ZUJ1ZmZlcigpIG92ZXJyaWRlOworCisgICAgLy8gVmVydGV4IEFycmF5IGNyZWF0
aW9uCisgICAgVmVydGV4QXJyYXlJbXBsICpjcmVhdGVWZXJ0ZXhBcnJheShjb25zdCBnbDo6VmVy
dGV4QXJyYXlTdGF0ZSAmc3RhdGUpIG92ZXJyaWRlOworCisgICAgLy8gUXVlcnkgYW5kIEZlbmNl
IGNyZWF0aW9uCisgICAgUXVlcnlJbXBsICpjcmVhdGVRdWVyeShHTGVudW0gdHlwZSkgb3ZlcnJp
ZGU7CisgICAgRmVuY2VOVkltcGwgKmNyZWF0ZUZlbmNlTlYoKSBvdmVycmlkZTsKKyAgICBGZW5j
ZVN5bmNJbXBsICpjcmVhdGVGZW5jZVN5bmMoKSBvdmVycmlkZTsKKworICAgIC8vIFRyYW5zZm9y
bSBGZWVkYmFjayBjcmVhdGlvbgorICAgIFRyYW5zZm9ybUZlZWRiYWNrSW1wbCAqY3JlYXRlVHJh
bnNmb3JtRmVlZGJhY2soCisgICAgICAgIGNvbnN0IGdsOjpUcmFuc2Zvcm1GZWVkYmFja1N0YXRl
ICZzdGF0ZSkgb3ZlcnJpZGU7CisKKyAgICAvLyBTYW1wbGVyIG9iamVjdCBjcmVhdGlvbgorICAg
IFNhbXBsZXJJbXBsICpjcmVhdGVTYW1wbGVyKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBQYXRoIG9i
amVjdCBjcmVhdGlvbgorICAgIHN0ZDo6dmVjdG9yPFBhdGhJbXBsICo+IGNyZWF0ZVBhdGhzKEdM
c2l6ZWkpIG92ZXJyaWRlOworCisgIHByaXZhdGU6CisgICAgUmVuZGVyZXJWayAqbVJlbmRlcmVy
OworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVS
RVJfVlVMS0FOX0NPTlRFWFRWS19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9EZXZpY2VWay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9EZXZpY2VW
ay5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL3Z1bGthbi9EZXZpY2VWay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw0OCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorLy8KKy8vIERldmljZVZrLmNwcDoKKy8vICAgIEltcGxlbWVudHMgdGhl
IGNsYXNzIG1ldGhvZHMgZm9yIERldmljZVZrLgorLy8KKworI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL3Z1bGthbi9EZXZpY2VWay5oIgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisK
K25hbWVzcGFjZSByeAoreworCitEZXZpY2VWazo6RGV2aWNlVmsoKSA6IERldmljZUltcGwoKQor
eworfQorCitEZXZpY2VWazo6fkRldmljZVZrKCkKK3sKK30KKworZWdsOjpFcnJvciBEZXZpY2VW
azo6Z2V0RGV2aWNlKHZvaWQgKipvdXRWYWx1ZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cisg
ICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BQ0NFU1MpOworfQorCitFR0xpbnQgRGV2aWNl
Vms6OmdldFR5cGUoKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gRUdMaW50
KCk7Cit9CisKK3ZvaWQgRGV2aWNlVms6OmdlbmVyYXRlRXh0ZW5zaW9ucyhlZ2w6OkRldmljZUV4
dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMpIGNvbnN0Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOwor
fQorCitib29sIERldmljZVZrOjpkZXZpY2VFeHRlcm5hbGx5U291cmNlZCgpCit7CisgICAgVU5J
TVBMRU1FTlRFRCgpOworICAgIHJldHVybiBib29sKCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBy
eApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1
bGthbi9EZXZpY2VWay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRGV2aWNlVmsuaAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0Rldmlj
ZVZrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBAQAorLy8KKy8vIENvcHlyaWdodCAy
MDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIERldmlj
ZVZrLmg6CisvLyAgICBEZWZpbmVzIHRoZSBjbGFzcyBpbnRlcmZhY2UgZm9yIERldmljZVZrLCBp
bXBsZW1lbnRpbmcgRGV2aWNlSW1wbC4KKy8vCisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJf
VlVMS0FOX0RFVklDRVZLX0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9ERVZJ
Q0VWS19IXworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvRGV2aWNlSW1wbC5oIgorCitu
YW1lc3BhY2UgcngKK3sKKworY2xhc3MgRGV2aWNlVmsgOiBwdWJsaWMgRGV2aWNlSW1wbAorewor
ICBwdWJsaWM6CisgICAgRGV2aWNlVmsoKTsKKyAgICB+RGV2aWNlVmsoKSBvdmVycmlkZTsKKwor
ICAgIGVnbDo6RXJyb3IgZ2V0RGV2aWNlKHZvaWQgKipvdXRWYWx1ZSkgb3ZlcnJpZGU7CisgICAg
RUdMaW50IGdldFR5cGUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGdlbmVyYXRlRXh0ZW5zaW9ucyhl
Z2w6OkRldmljZUV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMpIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgZGV2aWNlRXh0ZXJuYWxseVNvdXJjZWQoKSBvdmVycmlkZTsKK307CisKK30gIC8vIG5h
bWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9ERVZJQ0VW
S19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9EaXNwbGF5VmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRGlzcGxheVZrLmNwcAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVs
a2FuL0Rpc3BsYXlWay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNjcgQEAKKy8vCisv
LyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisvLyBEaXNwbGF5VmsuY3BwOgorLy8gICAgSW1wbGVtZW50cyB0aGUgY2xhc3MgbWV0aG9k
cyBmb3IgRGlzcGxheVZrLgorLy8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGth
bi9EaXNwbGF5VmsuaCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db250ZXh0VmsuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisK
K0Rpc3BsYXlWazo6RGlzcGxheVZrKCkgOiBEaXNwbGF5SW1wbCgpLCBtUmVuZGVyZXIobnVsbHB0
cikKK3sKK30KKworRGlzcGxheVZrOjp+RGlzcGxheVZrKCkKK3sKK30KKworZWdsOjpFcnJvciBE
aXNwbGF5Vms6OmluaXRpYWxpemUoZWdsOjpEaXNwbGF5ICpkaXNwbGF5KQoreworICAgIFVOSU1Q
TEVNRU5URUQoKTsKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FDQ0VTUyk7Cit9CisK
K3ZvaWQgRGlzcGxheVZrOjp0ZXJtaW5hdGUoKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30K
KworZWdsOjpFcnJvciBEaXNwbGF5Vms6Om1ha2VDdXJyZW50KGVnbDo6U3VyZmFjZSAqZHJhd1N1
cmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpTdXJmYWNlICpy
ZWFkU3VyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6Q29udGV4
dCAqY29udGV4dCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGVnbDo6RXJy
b3IoRUdMX0JBRF9BQ0NFU1MpOworfQorCitlZ2w6OkNvbmZpZ1NldCBEaXNwbGF5Vms6OmdlbmVy
YXRlQ29uZmlncygpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBlZ2w6OkNv
bmZpZ1NldCgpOworfQorCitib29sIERpc3BsYXlWazo6dGVzdERldmljZUxvc3QoKQoreworICAg
IFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gYm9vbCgpOworfQorCitlZ2w6OkVycm9yIERp
c3BsYXlWazo6cmVzdG9yZUxvc3REZXZpY2UoKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FDQ0VTUyk7Cit9CisKK2Jvb2wgRGlzcGxheVZr
Ojppc1ZhbGlkTmF0aXZlV2luZG93KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KSBjb25zdAor
eworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gYm9vbCgpOworfQorCitzdGQ6OnN0
cmluZyBEaXNwbGF5Vms6OmdldFZlbmRvclN0cmluZygpIGNvbnN0Cit7CisgICAgVU5JTVBMRU1F
TlRFRCgpOworICAgIHJldHVybiBzdGQ6OnN0cmluZygpOworfQorCitlZ2w6OkVycm9yIERpc3Bs
YXlWazo6Z2V0RGV2aWNlKERldmljZUltcGwgKipkZXZpY2UpCit7CisgICAgVU5JTVBMRU1FTlRF
RCgpOworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfQUNDRVNTKTsKK30KKworZWdsOjpF
cnJvciBEaXNwbGF5Vms6OndhaXRDbGllbnQoKSBjb25zdAoreworICAgIFVOSU1QTEVNRU5URUQo
KTsKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FDQ0VTUyk7Cit9CisKK2VnbDo6RXJy
b3IgRGlzcGxheVZrOjp3YWl0TmF0aXZlKEVHTGludCBlbmdpbmUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlZ2w6OlN1cmZhY2UgKmRyYXdTdXJmYWNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZWdsOjpTdXJmYWNlICpyZWFkU3VyZmFjZSkgY29uc3QKK3sK
KyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BQ0NF
U1MpOworfQorCitTdXJmYWNlSW1wbCAqRGlzcGxheVZrOjpjcmVhdGVXaW5kb3dTdXJmYWNlKGNv
bnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2ZVdpbmRvd1R5
cGUgd2luZG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFN1cmZhY2VJbXBsICo+KDApOworfQorCitTdXJmYWNl
SW1wbCAqRGlzcGxheVZrOjpjcmVhdGVQYnVmZmVyU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VT
dGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJz
KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U3VyZmFj
ZUltcGwgKj4oMCk7Cit9CisKK1N1cmZhY2VJbXBsICpEaXNwbGF5Vms6OmNyZWF0ZVBidWZmZXJG
cm9tQ2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6
Q29uZmlnICpjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIHNoYXJlSGFuZGxlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWds
OjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxTdXJmYWNlSW1wbCAqPigwKTsKK30KKworU3VyZmFjZUltcGwgKkRp
c3BsYXlWazo6Y3JlYXRlUGl4bWFwU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3Rh
dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVn
bDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOYXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAg
JmF0dHJpYnMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxTdXJmYWNlSW1wbCAqPigwKTsKK30KKworSW1hZ2VJbXBsICpEaXNwbGF5Vms6OmNyZWF0ZUlt
YWdlKEVHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVn
bDo6SW1hZ2VTaWJsaW5nICpidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCit7CisgICAgVU5JTVBMRU1FTlRF
RCgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbWFnZUltcGwgKj4oMCk7Cit9CisKK0NvbnRl
eHRJbXBsICpEaXNwbGF5Vms6OmNyZWF0ZUNvbnRleHQoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAm
c3RhdGUpCit7CisgICAgcmV0dXJuIG5ldyBDb250ZXh0Vmsoc3RhdGUsIG1SZW5kZXJlcik7Cit9
CisKK1N0cmVhbVByb2R1Y2VySW1wbCAqRGlzcGxheVZrOjpjcmVhdGVTdHJlYW1Qcm9kdWNlckQz
RFRleHR1cmVOVjEyKAorICAgIGVnbDo6U3RyZWFtOjpDb25zdW1lclR5cGUgY29uc3VtZXJUeXBl
LAorICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQoreworICAgIFVOSU1QTEVN
RU5URUQoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U3RyZWFtUHJvZHVjZXJJbXBsICo+KDAp
OworfQorCitnbDo6VmVyc2lvbiBEaXNwbGF5Vms6OmdldE1heFN1cHBvcnRlZEVTVmVyc2lvbigp
IGNvbnN0Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6VmVyc2lvbigw
LCAwKTsKK30KKwordm9pZCBEaXNwbGF5Vms6OmdlbmVyYXRlRXh0ZW5zaW9ucyhlZ2w6OkRpc3Bs
YXlFeHRlbnNpb25zICpvdXRFeHRlbnNpb25zKSBjb25zdAoreworICAgIFVOSU1QTEVNRU5URUQo
KTsKK30KKwordm9pZCBEaXNwbGF5Vms6OmdlbmVyYXRlQ2FwcyhlZ2w6OkNhcHMgKm91dENhcHMp
IGNvbnN0Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCit9ICAvLyBuYW1lc3BhY2UgcngK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vRGlzcGxheVZrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9EaXNwbGF5VmsuaAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0Rpc3Bs
YXlWay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODQgQEAKKy8vCisvLyBDb3B5cmlnaHQg
MjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBEaXNw
bGF5VmsuaDoKKy8vICAgIERlZmluZXMgdGhlIGNsYXNzIGludGVyZmFjZSBmb3IgRGlzcGxheVZr
LCBpbXBsZW1lbnRpbmcgRGlzcGxheUltcGwuCisvLworCisjaWZuZGVmIExJQkFOR0xFX1JFTkRF
UkVSX1ZVTEtBTl9ESVNQTEFZVktfSF8KKyNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfVlVMS0FO
X0RJU1BMQVlWS19IXworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvRGlzcGxheUltcGwu
aCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJlclZrOworCitjbGFzcyBEaXNwbGF5
VmsgOiBwdWJsaWMgRGlzcGxheUltcGwKK3sKKyAgcHVibGljOgorICAgIERpc3BsYXlWaygpOwor
ICAgIH5EaXNwbGF5VmsoKSBvdmVycmlkZTsKKworICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZShl
Z2w6OkRpc3BsYXkgKmRpc3BsYXkpIG92ZXJyaWRlOworICAgIHZvaWQgdGVybWluYXRlKCkgb3Zl
cnJpZGU7CisKKyAgICBlZ2w6OkVycm9yIG1ha2VDdXJyZW50KGVnbDo6U3VyZmFjZSAqZHJhd1N1
cmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OlN1cmZhY2UgKnJlYWRTdXJm
YWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQpIG92
ZXJyaWRlOworCisgICAgZWdsOjpDb25maWdTZXQgZ2VuZXJhdGVDb25maWdzKCkgb3ZlcnJpZGU7
CisKKyAgICBib29sIHRlc3REZXZpY2VMb3N0KCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBy
ZXN0b3JlTG9zdERldmljZSgpIG92ZXJyaWRlOworCisgICAgYm9vbCBpc1ZhbGlkTmF0aXZlV2lu
ZG93KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KSBjb25zdCBvdmVycmlkZTsKKworICAgIHN0
ZDo6c3RyaW5nIGdldFZlbmRvclN0cmluZygpIGNvbnN0IG92ZXJyaWRlOworCisgICAgZWdsOjpF
cnJvciBnZXREZXZpY2UoRGV2aWNlSW1wbCAqKmRldmljZSkgb3ZlcnJpZGU7CisKKyAgICBlZ2w6
OkVycm9yIHdhaXRDbGllbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIHdhaXRO
YXRpdmUoRUdMaW50IGVuZ2luZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpTdXJm
YWNlICpkcmF3U3VyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpTdXJmYWNl
ICpyZWFkU3VyZmFjZSkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBTdXJmYWNlSW1wbCAqY3JlYXRl
V2luZG93U3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93
VHlwZSB3aW5kb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
ZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOworICAgIFN1cmZhY2VJbXBsICpj
cmVhdGVQYnVmZmVyU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25m
aWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBl
Z2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CisgICAgU3VyZmFjZUltcGwgKmNy
ZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
ZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBzaGFyZUhhbmRsZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1
dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOworICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQaXhtYXBT
dXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYXRpdmVQaXhtYXBUeXBlIG5hdGl2
ZVBpeG1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6
OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CisKKyAgICBJbWFnZUltcGwgKmNyZWF0
ZUltYWdlKEVHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpJ
bWFnZVNpYmxpbmcgKmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVn
bDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKKworICAgIENvbnRleHRJbXBsICpj
cmVhdGVDb250ZXh0KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJnN0YXRlKSBvdmVycmlkZTsKKwor
ICAgIFN0cmVhbVByb2R1Y2VySW1wbCAqY3JlYXRlU3RyZWFtUHJvZHVjZXJEM0RUZXh0dXJlTlYx
MigKKyAgICAgICAgZWdsOjpTdHJlYW06OkNvbnN1bWVyVHlwZSBjb25zdW1lclR5cGUsCisgICAg
ICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKKyAgICBnbDo6
VmVyc2lvbiBnZXRNYXhTdXBwb3J0ZWRFU1ZlcnNpb24oKSBjb25zdCBvdmVycmlkZTsKKworICBw
cml2YXRlOgorICAgIHZvaWQgZ2VuZXJhdGVFeHRlbnNpb25zKGVnbDo6RGlzcGxheUV4dGVuc2lv
bnMgKm91dEV4dGVuc2lvbnMpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZ2VuZXJhdGVDYXBz
KGVnbDo6Q2FwcyAqb3V0Q2FwcykgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBSZW5kZXJlclZrICpt
UmVuZGVyZXI7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJBTkdM
RV9SRU5ERVJFUl9WVUxLQU5fRElTUExBWVZLX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0ZlbmNlTlZWay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGth
bi9GZW5jZU5WVmsuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRmVuY2VOVlZrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQzIEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gRmVuY2VOVlZrLmNwcDoKKy8vICAgIElt
cGxlbWVudHMgdGhlIGNsYXNzIG1ldGhvZHMgZm9yIEZlbmNlTlZWay4KKy8vCisKKyNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRmVuY2VOVlZrLmgiCisKKyNpbmNsdWRlICJjb21t
b24vZGVidWcuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK0ZlbmNlTlZWazo6RmVuY2VOVlZrKCkg
OiBGZW5jZU5WSW1wbCgpCit7Cit9CisKK0ZlbmNlTlZWazo6fkZlbmNlTlZWaygpCit7Cit9CisK
K2dsOjpFcnJvciBGZW5jZU5WVms6OnNldChHTGVudW0gY29uZGl0aW9uKQoreworICAgIFVOSU1Q
TEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
K30KKworZ2w6OkVycm9yIEZlbmNlTlZWazo6dGVzdChHTGJvb2xlYW4gKm91dEZpbmlzaGVkKQor
eworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIEZlbmNlTlZWazo6ZmluaXNoKCkKK3sKKyAgICBV
TklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7Cit9CisKK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9GZW5jZU5WVmsuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0Zl
bmNlTlZWay5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRmVuY2VOVlZrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwzMSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEZlbmNlTlZWay5oOgorLy8gICAgRGVmaW5lcyB0aGUg
Y2xhc3MgaW50ZXJmYWNlIGZvciBGZW5jZU5WVmssIGltcGxlbWVudGluZyBGZW5jZU5WSW1wbC4K
Ky8vCisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX0ZFTkNFTlZWS19IXworI2Rl
ZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5fRkVOQ0VOVlZLX0hfCisKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9GZW5jZU5WSW1wbC5oIgorCituYW1lc3BhY2UgcngKK3sKKworY2xh
c3MgRmVuY2VOVlZrIDogcHVibGljIEZlbmNlTlZJbXBsCit7CisgIHB1YmxpYzoKKyAgICBGZW5j
ZU5WVmsoKTsKKyAgICB+RmVuY2VOVlZrKCkgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJyb3Igc2V0
KEdMZW51bSBjb25kaXRpb24pIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciB0ZXN0KEdMYm9vbGVh
biAqb3V0RmluaXNoZWQpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBmaW5pc2goKSBvdmVycmlk
ZTsKK307CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRF
UkVSX1ZVTEtBTl9GRU5DRU5WVktfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRmVuY2VTeW5jVmsuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRmVu
Y2VTeW5jVmsuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRmVuY2VTeW5jVmsuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDkgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBGZW5jZVN5bmNWay5jcHA6CisvLyAgICBJ
bXBsZW1lbnRzIHRoZSBjbGFzcyBtZXRob2RzIGZvciBGZW5jZVN5bmNWay4KKy8vCisKKyNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRmVuY2VTeW5jVmsuaCIKKworI2luY2x1ZGUg
ImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgcngKK3sKKworRmVuY2VTeW5jVms6OkZlbmNl
U3luY1ZrKCkgOiBGZW5jZVN5bmNJbXBsKCkKK3sKK30KKworRmVuY2VTeW5jVms6On5GZW5jZVN5
bmNWaygpCit7Cit9CisKK2dsOjpFcnJvciBGZW5jZVN5bmNWazo6c2V0KEdMZW51bSBjb25kaXRp
b24sIEdMYml0ZmllbGQgZmxhZ3MpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgRmVuY2VT
eW5jVms6OmNsaWVudFdhaXQoR0xiaXRmaWVsZCBmbGFncywgR0x1aW50NjQgdGltZW91dCwgR0xl
bnVtICpvdXRSZXN1bHQpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgRmVuY2VTeW5jVms6
OnNlcnZlcldhaXQoR0xiaXRmaWVsZCBmbGFncywgR0x1aW50NjQgdGltZW91dCkKK3sKKyAgICBV
TklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7Cit9CisKK2dsOjpFcnJvciBGZW5jZVN5bmNWazo6Z2V0U3RhdHVzKEdMaW50ICpvdXRSZXN1
bHQpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOworfQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRmVuY2VTeW5jVmsu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvdnVsa2FuL0ZlbmNlU3luY1ZrLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9GZW5jZVN5bmNWay5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzIgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBGZW5jZVN5bmNWay5o
OgorLy8gICAgRGVmaW5lcyB0aGUgY2xhc3MgaW50ZXJmYWNlIGZvciBGZW5jZVN5bmNWaywgaW1w
bGVtZW50aW5nIEZlbmNlU3luY0ltcGwuCisvLworCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVS
X1ZVTEtBTl9GRU5DRVNZTkNWS19IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5f
RkVOQ0VTWU5DVktfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0ZlbmNlU3luY0lt
cGwuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIEZlbmNlU3luY1ZrIDogcHVibGljIEZl
bmNlU3luY0ltcGwKK3sKKyAgcHVibGljOgorICAgIEZlbmNlU3luY1ZrKCk7CisgICAgfkZlbmNl
U3luY1ZrKCkgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJyb3Igc2V0KEdMZW51bSBjb25kaXRpb24s
IEdMYml0ZmllbGQgZmxhZ3MpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBjbGllbnRXYWl0KEdM
Yml0ZmllbGQgZmxhZ3MsIEdMdWludDY0IHRpbWVvdXQsIEdMZW51bSAqb3V0UmVzdWx0KSBvdmVy
cmlkZTsKKyAgICBnbDo6RXJyb3Igc2VydmVyV2FpdChHTGJpdGZpZWxkIGZsYWdzLCBHTHVpbnQ2
NCB0aW1lb3V0KSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgZ2V0U3RhdHVzKEdMaW50ICpvdXRS
ZXN1bHQpIG92ZXJyaWRlOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8g
TElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX0ZFTkNFU1lOQ1ZLX0hfCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0ZyYW1lYnVmZmVyVmsu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vRnJhbWVidWZmZXJWay5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9GcmFtZWJ1ZmZl
clZrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzMSBAQAorLy8KKy8vIENvcHlyaWdo
dCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEZy
YW1lYnVmZmVyVmsuY3BwOgorLy8gICAgSW1wbGVtZW50cyB0aGUgY2xhc3MgbWV0aG9kcyBmb3Ig
RnJhbWVidWZmZXJWay4KKy8vCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
RnJhbWVidWZmZXJWay5oIgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK25hbWVzcGFj
ZSByeAoreworCitGcmFtZWJ1ZmZlclZrOjpGcmFtZWJ1ZmZlclZrKGNvbnN0IGdsOjpGcmFtZWJ1
ZmZlclN0YXRlICZzdGF0ZSkgOiBGcmFtZWJ1ZmZlckltcGwoc3RhdGUpCit7Cit9CisKK0ZyYW1l
YnVmZmVyVms6On5GcmFtZWJ1ZmZlclZrKCkKK3sKK30KKworZ2w6OkVycm9yIEZyYW1lYnVmZmVy
Vms6OmRpc2NhcmQoc2l6ZV90IGNvdW50LCBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKQorewor
ICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKK30KKworZ2w6OkVycm9yIEZyYW1lYnVmZmVyVms6OmludmFsaWRhdGUoc2l6ZV90
IGNvdW50LCBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKQoreworICAgIFVOSU1QTEVNRU5URUQo
KTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6
OkVycm9yIEZyYW1lYnVmZmVyVms6OmludmFsaWRhdGVTdWIoc2l6ZV90IGNvdW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICphdHRhY2htZW50
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0
YW5nbGUgJmFyZWEpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgRnJhbWVidWZmZXJWazo6
Y2xlYXIoQ29udGV4dEltcGwgKmNvbnRleHQsIEdMYml0ZmllbGQgbWFzaykKK3sKKyAgICBVTklN
UExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
Cit9CisKK2dsOjpFcnJvciBGcmFtZWJ1ZmZlclZrOjpjbGVhckJ1ZmZlcmZ2KENvbnRleHRJbXBs
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRy
YXdidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICp2YWx1ZXMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgRnJhbWVidWZmZXJW
azo6Y2xlYXJCdWZmZXJ1aXYoQ29udGV4dEltcGwgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWVzKQoreworICAgIFVO
SU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKK30KKworZ2w6OkVycm9yIEZyYW1lYnVmZmVyVms6OmNsZWFyQnVmZmVyaXYoQ29udGV4dElt
cGwgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
ZHJhd2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMaW50ICp2YWx1ZXMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgRnJhbWVidWZmZXJW
azo6Y2xlYXJCdWZmZXJmaShDb250ZXh0SW1wbCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBidWZmZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHN0ZW5jaWwpCit7CisgICAgVU5JTVBMRU1FTlRFRCgp
OworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitHTGVu
dW0gRnJhbWVidWZmZXJWazo6Z2V0SW1wbGVtZW50YXRpb25Db2xvclJlYWRGb3JtYXQoKSBjb25z
dAoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gR0xlbnVtKCk7Cit9CisKK0dM
ZW51bSBGcmFtZWJ1ZmZlclZrOjpnZXRJbXBsZW1lbnRhdGlvbkNvbG9yUmVhZFR5cGUoKSBjb25z
dAoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gR0xlbnVtKCk7Cit9CisKK2ds
OjpFcnJvciBGcmFtZWJ1ZmZlclZrOjpyZWFkUGl4ZWxzKENvbnRleHRJbXBsICpjb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAm
YXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqcGl4ZWxzKSBjb25zdAorewor
ICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKK30KKworZ2w6OkVycm9yIEZyYW1lYnVmZmVyVms6OmJsaXQoQ29udGV4dEltcGwg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFu
Z2xlICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OlJlY3RhbmdsZSAmZGVzdEFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJp
dGZpZWxkIG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsdGVy
KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKK30KKworYm9vbCBGcmFtZWJ1ZmZlclZrOjpjaGVja1N0YXR1cygpIGNv
bnN0Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBib29sKCk7Cit9CisKK3Zv
aWQgRnJhbWVidWZmZXJWazo6c3luY1N0YXRlKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGlydHlC
aXRzICZkaXJ0eUJpdHMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCit9ICAvLyBuYW1l
c3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4vRnJhbWVidWZmZXJWay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRnJhbWVidWZmZXJWay5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4vRnJhbWVidWZmZXJWay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzAg
QEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisvLyBGcmFtZWJ1ZmZlclZrLmg6CisvLyAgICBEZWZpbmVzIHRoZSBjbGFz
cyBpbnRlcmZhY2UgZm9yIEZyYW1lYnVmZmVyVmssIGltcGxlbWVudGluZyBGcmFtZWJ1ZmZlcklt
cGwuCisvLworCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9GUkFNRUJVRkZFUlZL
X0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9GUkFNRUJVRkZFUlZLX0hfCisK
KyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9GcmFtZWJ1ZmZlckltcGwuaCIKKworbmFtZXNw
YWNlIHJ4Cit7CisKK2NsYXNzIEZyYW1lYnVmZmVyVmsgOiBwdWJsaWMgRnJhbWVidWZmZXJJbXBs
Cit7CisgIHB1YmxpYzoKKyAgICBGcmFtZWJ1ZmZlclZrKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0
YXRlICZzdGF0ZSk7CisgICAgfkZyYW1lYnVmZmVyVmsoKSBvdmVycmlkZTsKKworICAgIGdsOjpF
cnJvciBkaXNjYXJkKHNpemVfdCBjb3VudCwgY29uc3QgR0xlbnVtICphdHRhY2htZW50cykgb3Zl
cnJpZGU7CisgICAgZ2w6OkVycm9yIGludmFsaWRhdGUoc2l6ZV90IGNvdW50LCBjb25zdCBHTGVu
dW0gKmF0dGFjaG1lbnRzKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgaW52YWxpZGF0ZVN1Yihz
aXplX3QgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICph
dHRhY2htZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFu
Z2xlICZhcmVhKSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBjbGVhcihDb250ZXh0SW1wbCAq
Y29udGV4dCwgR0xiaXRmaWVsZCBtYXNrKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgY2xlYXJC
dWZmZXJmdihDb250ZXh0SW1wbCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRyYXdi
dWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWVz
KSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgY2xlYXJCdWZmZXJ1aXYoQ29udGV4dEltcGwgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBidWZmZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWVzKSBvdmVycmlkZTsKKyAgICBnbDo6
RXJyb3IgY2xlYXJCdWZmZXJpdihDb250ZXh0SW1wbCAqY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGRyYXdidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xp
bnQgKnZhbHVlcykgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGNsZWFyQnVmZmVyZmkoQ29udGV4
dEltcGwgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgZGVwdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgc3RlbmNpbCkgb3ZlcnJpZGU7CisKKyAgICBHTGVudW0gZ2V0SW1wbGVt
ZW50YXRpb25Db2xvclJlYWRGb3JtYXQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBHTGVudW0gZ2V0
SW1wbGVtZW50YXRpb25Db2xvclJlYWRUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgZ2w6OkVy
cm9yIHJlYWRQaXhlbHMoQ29udGV4dEltcGwgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmYXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqcGl4ZWxzKSBjb25zdCBvdmVycmlkZTsK
KworICAgIGdsOjpFcnJvciBibGl0KENvbnRleHRJbXBsICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmZGVzdEFyZWEsCisgICAgICAgICAgICAgICAgICAgR0xi
aXRmaWVsZCBtYXNrLAorICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWx0ZXIpIG92ZXJyaWRl
OworCisgICAgYm9vbCBjaGVja1N0YXR1cygpIGNvbnN0IG92ZXJyaWRlOworCisgICAgdm9pZCBz
eW5jU3RhdGUoY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykgb3Zl
cnJpZGU7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJBTkdMRV9S
RU5ERVJFUl9WVUxLQU5fRlJBTUVCVUZGRVJWS19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9JbWFnZVZrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2Fu
L0ltYWdlVmsuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vSW1hZ2VWay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwzNyBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEltYWdlVmsuY3BwOgorLy8gICAgSW1wbGVtZW50
cyB0aGUgY2xhc3MgbWV0aG9kcyBmb3IgSW1hZ2VWay4KKy8vCisKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vSW1hZ2VWay5oIgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgi
CisKK25hbWVzcGFjZSByeAoreworCitJbWFnZVZrOjpJbWFnZVZrKCkgOiBJbWFnZUltcGwoKQor
eworfQorCitJbWFnZVZrOjp+SW1hZ2VWaygpCit7Cit9CisKK2VnbDo6RXJyb3IgSW1hZ2VWazo6
aW5pdGlhbGl6ZSgpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBlZ2w6OkVy
cm9yKEVHTF9CQURfQUNDRVNTKTsKK30KKworZ2w6OkVycm9yIEltYWdlVms6Om9ycGhhbihlZ2w6
OkltYWdlU2libGluZyAqc2libGluZykKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9JbWFnZVZrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9JbWFnZVZrLmgJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9JbWFn
ZVZrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMCBAQAorLy8KKy8vIENvcHlyaWdodCAy
MDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEltYWdl
VmsuaDoKKy8vICAgIERlZmluZXMgdGhlIGNsYXNzIGludGVyZmFjZSBmb3IgSW1hZ2VWaywgaW1w
bGVtZW50aW5nIEltYWdlSW1wbC4KKy8vCisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfVlVM
S0FOX0lNQUdFVktfSF8KKyNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX0lNQUdFVktf
SF8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0ltYWdlSW1wbC5oIgorCituYW1lc3Bh
Y2UgcngKK3sKKworY2xhc3MgSW1hZ2VWayA6IHB1YmxpYyBJbWFnZUltcGwKK3sKKyAgcHVibGlj
OgorICAgIEltYWdlVmsoKTsKKyAgICB+SW1hZ2VWaygpIG92ZXJyaWRlOworICAgIGVnbDo6RXJy
b3IgaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIG9ycGhhbihlZ2w6Oklt
YWdlU2libGluZyAqc2libGluZykgb3ZlcnJpZGU7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcngK
KworI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5fSU1BR0VWS19IXwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Qcm9n
cmFtVmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vUHJvZ3JhbVZrLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Byb2dyYW1W
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMTIgQEAKKy8vCisvLyBDb3B5cmlnaHQg
MjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBQcm9n
cmFtVmsuY3BwOgorLy8gICAgSW1wbGVtZW50cyB0aGUgY2xhc3MgbWV0aG9kcyBmb3IgUHJvZ3Jh
bVZrLgorLy8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Qcm9ncmFtVmsu
aCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgcngKK3sKKworUHJv
Z3JhbVZrOjpQcm9ncmFtVmsoY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmc3RhdGUpIDogUHJvZ3Jh
bUltcGwoc3RhdGUpCit7Cit9CisKK1Byb2dyYW1Wazo6flByb2dyYW1WaygpCit7Cit9CisKK0xp
bmtSZXN1bHQgUHJvZ3JhbVZrOjpsb2FkKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBnbDo6QmluYXJ5
SW5wdXRTdHJlYW0gKnN0cmVhbSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJu
IExpbmtSZXN1bHQoZmFsc2UsIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworfQor
CitnbDo6RXJyb3IgUHJvZ3JhbVZrOjpzYXZlKGdsOjpCaW5hcnlPdXRwdXRTdHJlYW0gKnN0cmVh
bSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7Cit9CisKK3ZvaWQgUHJvZ3JhbVZrOjpzZXRCaW5hcnlSZXRyaWV2YWJs
ZUhpbnQoYm9vbCByZXRyaWV2YWJsZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK0xp
bmtSZXN1bHQgUHJvZ3JhbVZrOjpsaW5rKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsIGds
OjpJbmZvTG9nICZpbmZvTG9nKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4g
TGlua1Jlc3VsdChmYWxzZSwgZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Cit9CisK
K0dMYm9vbGVhbiBQcm9ncmFtVms6OnZhbGlkYXRlKGNvbnN0IGdsOjpDYXBzICZjYXBzLCBnbDo6
SW5mb0xvZyAqaW5mb0xvZykKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIEdM
Ym9vbGVhbigpOworfQorCit2b2lkIFByb2dyYW1Wazo6c2V0VW5pZm9ybTFmdihHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikKK3sKKyAgICBVTklNUExFTUVO
VEVEKCk7Cit9CisKK3ZvaWQgUHJvZ3JhbVZrOjpzZXRVbmlmb3JtMmZ2KEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KQoreworICAgIFVOSU1QTEVNRU5URUQo
KTsKK30KKwordm9pZCBQcm9ncmFtVms6OnNldFVuaWZvcm0zZnYoR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOwor
fQorCit2b2lkIFByb2dyYW1Wazo6c2V0VW5pZm9ybTRmdihHTGludCBsb2NhdGlvbiwgR0xzaXpl
aSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisK
K3ZvaWQgUHJvZ3JhbVZrOjpzZXRVbmlmb3JtMWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNv
dW50LCBjb25zdCBHTGludCAqdikKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQg
UHJvZ3JhbVZrOjpzZXRVbmlmb3JtMml2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBj
b25zdCBHTGludCAqdikKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgUHJvZ3Jh
bVZrOjpzZXRVbmlmb3JtM2l2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBH
TGludCAqdikKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgUHJvZ3JhbVZrOjpz
ZXRVbmlmb3JtNGl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAq
dikKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgUHJvZ3JhbVZrOjpzZXRVbmlm
b3JtMXVpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2KQor
eworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwordm9pZCBQcm9ncmFtVms6OnNldFVuaWZvcm0y
dWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnYpCit7Cisg
ICAgVU5JTVBMRU1FTlRFRCgpOworfQorCit2b2lkIFByb2dyYW1Wazo6c2V0VW5pZm9ybTN1aXYo
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdikKK3sKKyAgICBV
TklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgUHJvZ3JhbVZrOjpzZXRVbmlmb3JtNHVpdihHTGlu
dCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2KQoreworICAgIFVOSU1Q
TEVNRU5URUQoKTsKK30KKwordm9pZCBQcm9ncmFtVms6OnNldFVuaWZvcm1NYXRyaXgyZnYoR0xp
bnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRy
YW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxv
YXQgKnZhbHVlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwordm9pZCBQcm9ncmFtVms6
OnNldFVuaWZvcm1NYXRyaXgzZnYoR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQoreworICAgIFVOSU1QTEVNRU5URUQo
KTsKK30KKwordm9pZCBQcm9ncmFtVms6OnNldFVuaWZvcm1NYXRyaXg0ZnYoR0xpbnQgbG9jYXRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVl
KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwordm9pZCBQcm9ncmFtVms6OnNldFVuaWZv
cm1NYXRyaXgyeDNmdihHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit7CisgICAgVU5JTVBMRU1FTlRFRCgp
OworfQorCit2b2lkIFByb2dyYW1Wazo6c2V0VW5pZm9ybU1hdHJpeDN4MmZ2KEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNw
b3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0
ICp2YWx1ZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgUHJvZ3JhbVZrOjpz
ZXRVbmlmb3JtTWF0cml4Mng0ZnYoR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQoreworICAgIFVOSU1QTEVN
RU5URUQoKTsKK30KKwordm9pZCBQcm9ncmFtVms6OnNldFVuaWZvcm1NYXRyaXg0eDJmdihHTGlu
dCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFu
IHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqdmFsdWUpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCit2b2lkIFByb2dy
YW1Wazo6c2V0VW5pZm9ybU1hdHJpeDN4NGZ2KEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3sKKyAgICBV
TklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgUHJvZ3JhbVZrOjpzZXRVbmlmb3JtTWF0cml4NHgz
ZnYoR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Ym9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKnZhbHVlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwordm9p
ZCBQcm9ncmFtVms6OnNldFVuaWZvcm1CbG9ja0JpbmRpbmcoR0x1aW50IHVuaWZvcm1CbG9ja0lu
ZGV4LCBHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7
Cit9CisKK2Jvb2wgUHJvZ3JhbVZrOjpnZXRVbmlmb3JtQmxvY2tTaXplKGNvbnN0IHN0ZDo6c3Ry
aW5nICZibG9ja05hbWUsIHNpemVfdCAqc2l6ZU91dCkgY29uc3QKK3sKKyAgICBVTklNUExFTUVO
VEVEKCk7CisgICAgcmV0dXJuIGJvb2woKTsKK30KKworYm9vbCBQcm9ncmFtVms6OmdldFVuaWZv
cm1CbG9ja01lbWJlckluZm8oY29uc3Qgc3RkOjpzdHJpbmcgJm1lbWJlclVuaWZvcm1OYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2g6OkJsb2NrTWVtYmVy
SW5mbyAqbWVtYmVySW5mb091dCkgY29uc3QKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAg
cmV0dXJuIGJvb2woKTsKK30KKwordm9pZCBQcm9ncmFtVms6OnNldFBhdGhGcmFnbWVudElucHV0
R2VuKGNvbnN0IHN0ZDo6c3RyaW5nICZpbnB1dE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGdlbk1vZGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgY29tcG9uZW50cywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpjb2VmZnMpCit7CisgICAgVU5JTVBM
RU1FTlRFRCgpOworfQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUHJvZ3JhbVZrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1
bGthbi9Qcm9ncmFtVmsuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Byb2dyYW1Way5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTAwIEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gUHJvZ3JhbVZrLmg6CisvLyAgICBEZWZp
bmVzIHRoZSBjbGFzcyBpbnRlcmZhY2UgZm9yIFByb2dyYW1WaywgaW1wbGVtZW50aW5nIFByb2dy
YW1JbXBsLgorLy8KKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5fUFJPR1JBTVZL
X0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9QUk9HUkFNVktfSF8KKworI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1Byb2dyYW1JbXBsLmgiCisKK25hbWVzcGFjZSByeAor
eworCitjbGFzcyBQcm9ncmFtVmsgOiBwdWJsaWMgUHJvZ3JhbUltcGwKK3sKKyAgcHVibGljOgor
ICAgIFByb2dyYW1Wayhjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZzdGF0ZSk7CisgICAgflByb2dy
YW1WaygpIG92ZXJyaWRlOworCisgICAgTGlua1Jlc3VsdCBsb2FkKGdsOjpJbmZvTG9nICZpbmZv
TG9nLCBnbDo6QmluYXJ5SW5wdXRTdHJlYW0gKnN0cmVhbSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVy
cm9yIHNhdmUoZ2w6OkJpbmFyeU91dHB1dFN0cmVhbSAqc3RyZWFtKSBvdmVycmlkZTsKKyAgICB2
b2lkIHNldEJpbmFyeVJldHJpZXZhYmxlSGludChib29sIHJldHJpZXZhYmxlKSBvdmVycmlkZTsK
KworICAgIExpbmtSZXN1bHQgbGluayhjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLCBnbDo6
SW5mb0xvZyAmaW5mb0xvZykgb3ZlcnJpZGU7CisgICAgR0xib29sZWFuIHZhbGlkYXRlKGNvbnN0
IGdsOjpDYXBzICZjYXBzLCBnbDo6SW5mb0xvZyAqaW5mb0xvZykgb3ZlcnJpZGU7CisKKyAgICB2
b2lkIHNldFVuaWZvcm0xZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
ZmxvYXQgKnYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VW5pZm9ybTJmdihHTGludCBsb2NhdGlv
biwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZXRVbmlmb3JtM2Z2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0
ICp2KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFVuaWZvcm00ZnYoR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VW5p
Zm9ybTFpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpIG92
ZXJyaWRlOworICAgIHZvaWQgc2V0VW5pZm9ybTJpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBj
b3VudCwgY29uc3QgR0xpbnQgKnYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VW5pZm9ybTNpdihH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc2V0VW5pZm9ybTRpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29u
c3QgR0xpbnQgKnYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VW5pZm9ybTF1aXYoR0xpbnQgbG9j
YXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzZXRVbmlmb3JtMnVpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1
aW50ICp2KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFVuaWZvcm0zdWl2KEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
VW5pZm9ybTR1aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAq
dikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRVbmlmb3JtTWF0cml4MmZ2KEdMaW50IGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZXRVbmlmb3JtTWF0cml4M2Z2KEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJv
b2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICp2YWx1ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRVbmlmb3JtTWF0cml4NGZ2KEdMaW50
IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzZXRVbmlmb3JtTWF0cml4MngzZnYoR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFVuaWZv
cm1NYXRyaXgzeDJmdihHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xm
bG9hdCAqdmFsdWUpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VW5pZm9ybU1hdHJpeDJ4NGZ2KEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZXRVbmlmb3JtTWF0cml4NHgyZnYoR0xpbnQgbG9jYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKSBvdmVycmlkZTsKKyAgICB2b2lk
IHNldFVuaWZvcm1NYXRyaXgzeDRmdihHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmbG9hdCAqdmFsdWUpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VW5pZm9ybU1hdHJp
eDR4M2Z2KEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRy
YW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2
YWx1ZSkgb3ZlcnJpZGU7CisKKyAgICAvLyBUT0RPOiBzeW5jaHJvbml6ZSBpbiBzeW5jU3RhdGUg
d2hlbiBkaXJ0eSBiaXRzIGV4aXN0LgorICAgIHZvaWQgc2V0VW5pZm9ybUJsb2NrQmluZGluZyhH
THVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKSBvdmVy
cmlkZTsKKworICAgIC8vIE1heSBvbmx5IGJlIGNhbGxlZCBhZnRlciBhIHN1Y2Nlc3NmdWwgbGlu
ayBvcGVyYXRpb24uCisgICAgLy8gUmV0dXJuIGZhbHNlIGZvciBpbmFjdGl2ZSBibG9ja3MuCisg
ICAgYm9vbCBnZXRVbmlmb3JtQmxvY2tTaXplKGNvbnN0IHN0ZDo6c3RyaW5nICZibG9ja05hbWUs
IHNpemVfdCAqc2l6ZU91dCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICAvLyBNYXkgb25seSBiZSBj
YWxsZWQgYWZ0ZXIgYSBzdWNjZXNzZnVsIGxpbmsgb3BlcmF0aW9uLgorICAgIC8vIFJldHVybnMg
ZmFsc2UgZm9yIGluYWN0aXZlIG1lbWJlcnMuCisgICAgYm9vbCBnZXRVbmlmb3JtQmxvY2tNZW1i
ZXJJbmZvKGNvbnN0IHN0ZDo6c3RyaW5nICZtZW1iZXJVbmlmb3JtTmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2g6OkJsb2NrTWVtYmVySW5mbyAqbWVtYmVySW5mb091
dCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNldFBhdGhGcmFnbWVudElucHV0R2VuKGNv
bnN0IHN0ZDo6c3RyaW5nICZpbnB1dE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZ2VuTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGNvbXBvbmVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICpjb2VmZnMpIG92ZXJyaWRlOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNl
bmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX1BST0dSQU1WS19IXwpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9RdWVyeVZr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvdnVsa2FuL1F1ZXJ5VmsuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUXVlcnlWay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw3MyBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFF1ZXJ5VmsuY3BwOgor
Ly8gICAgSW1wbGVtZW50cyB0aGUgY2xhc3MgbWV0aG9kcyBmb3IgUXVlcnlWay4KKy8vCisKKyNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUXVlcnlWay5oIgorCisjaW5jbHVkZSAi
Y29tbW9uL2RlYnVnLmgiCisKK25hbWVzcGFjZSByeAoreworCitRdWVyeVZrOjpRdWVyeVZrKEdM
ZW51bSB0eXBlKSA6IFF1ZXJ5SW1wbCh0eXBlKQoreworfQorCitRdWVyeVZrOjp+UXVlcnlWaygp
Cit7Cit9CisKK2dsOjpFcnJvciBRdWVyeVZrOjpiZWdpbigpCit7CisgICAgVU5JTVBMRU1FTlRF
RCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitn
bDo6RXJyb3IgUXVlcnlWazo6ZW5kKCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBRdWVy
eVZrOjpxdWVyeUNvdW50ZXIoKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIFF1ZXJ5Vms6
OmdldFJlc3VsdChHTGludCAqcGFyYW1zKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIFF1
ZXJ5Vms6OmdldFJlc3VsdChHTHVpbnQgKnBhcmFtcykKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7
CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpF
cnJvciBRdWVyeVZrOjpnZXRSZXN1bHQoR0xpbnQ2NCAqcGFyYW1zKQoreworICAgIFVOSU1QTEVN
RU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30K
KworZ2w6OkVycm9yIFF1ZXJ5Vms6OmdldFJlc3VsdChHTHVpbnQ2NCAqcGFyYW1zKQoreworICAg
IFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKK30KKworZ2w6OkVycm9yIFF1ZXJ5Vms6OmlzUmVzdWx0QXZhaWxhYmxlKGJvb2wgKmF2
YWlsYWJsZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9RdWVyeVZr
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL3Z1bGthbi9RdWVyeVZrLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9RdWVyeVZrLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwzNiBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFF1ZXJ5VmsuaDoKKy8vICAgIERl
ZmluZXMgdGhlIGNsYXNzIGludGVyZmFjZSBmb3IgUXVlcnlWaywgaW1wbGVtZW50aW5nIFF1ZXJ5
SW1wbC4KKy8vCisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX1FVRVJZVktfSF8K
KyNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX1FVRVJZVktfSF8KKworI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL1F1ZXJ5SW1wbC5oIgorCituYW1lc3BhY2UgcngKK3sKKworY2xh
c3MgUXVlcnlWayA6IHB1YmxpYyBRdWVyeUltcGwKK3sKKyAgcHVibGljOgorICAgIFF1ZXJ5Vmso
R0xlbnVtIHR5cGUpOworICAgIH5RdWVyeVZrKCkgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJyb3Ig
YmVnaW4oKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgZW5kKCkgb3ZlcnJpZGU7CisgICAgZ2w6
OkVycm9yIHF1ZXJ5Q291bnRlcigpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBnZXRSZXN1bHQo
R0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGdldFJlc3VsdChHTHVpbnQg
KnBhcmFtcykgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGdldFJlc3VsdChHTGludDY0ICpwYXJh
bXMpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBnZXRSZXN1bHQoR0x1aW50NjQgKnBhcmFtcykg
b3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGlzUmVzdWx0QXZhaWxhYmxlKGJvb2wgKmF2YWlsYWJs
ZSkgb3ZlcnJpZGU7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJB
TkdMRV9SRU5ERVJFUl9WVUxLQU5fUVVFUllWS19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJidWZmZXJWay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9SZW5kZXJidWZmZXJWay5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJidWZmZXJWay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFJlbmRlcmJ1
ZmZlclZrLmNwcDoKKy8vICAgIEltcGxlbWVudHMgdGhlIGNsYXNzIG1ldGhvZHMgZm9yIFJlbmRl
cmJ1ZmZlclZrLgorLy8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5k
ZXJidWZmZXJWay5oIgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK25hbWVzcGFjZSBy
eAoreworCitSZW5kZXJidWZmZXJWazo6UmVuZGVyYnVmZmVyVmsoKSA6IFJlbmRlcmJ1ZmZlcklt
cGwoKQoreworfQorCitSZW5kZXJidWZmZXJWazo6flJlbmRlcmJ1ZmZlclZrKCkKK3sKK30KKwor
Z2w6OkVycm9yIFJlbmRlcmJ1ZmZlclZrOjpzZXRTdG9yYWdlKEdMZW51bSBpbnRlcm5hbGZvcm1h
dCwgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsK
KyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVy
cm9yIFJlbmRlcmJ1ZmZlclZrOjpzZXRTdG9yYWdlTXVsdGlzYW1wbGUoc2l6ZV90IHNhbXBsZXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
aW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9y
IFJlbmRlcmJ1ZmZlclZrOjpzZXRTdG9yYWdlRUdMSW1hZ2VUYXJnZXQoZWdsOjpJbWFnZSAqaW1h
Z2UpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgUmVuZGVyYnVmZmVyVms6OmdldEF0dGFj
aG1lbnRSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0
ICZ0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRnJhbWVidWZmZXJBdHRhY2htZW50UmVuZGVyVGFyZ2V0ICoqcnRPdXQpCit7CisgICAg
VU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOworfQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyYnVmZmVyVmsuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVs
a2FuL1JlbmRlcmJ1ZmZlclZrLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJidWZmZXJWay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMzcgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBSZW5kZXJidWZmZXJWay5o
OgorLy8gICAgRGVmaW5lcyB0aGUgY2xhc3MgaW50ZXJmYWNlIGZvciBSZW5kZXJidWZmZXJWaywg
aW1wbGVtZW50aW5nIFJlbmRlcmJ1ZmZlckltcGwuCisvLworCisjaWZuZGVmIExJQkFOR0xFX1JF
TkRFUkVSX1ZVTEtBTl9SRU5ERVJCVUZGRVJWS19IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJF
Ul9WVUxLQU5fUkVOREVSQlVGRkVSVktfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L1JlbmRlcmJ1ZmZlckltcGwuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIFJlbmRlcmJ1
ZmZlclZrIDogcHVibGljIFJlbmRlcmJ1ZmZlckltcGwKK3sKKyAgcHVibGljOgorICAgIFJlbmRl
cmJ1ZmZlclZrKCk7CisgICAgflJlbmRlcmJ1ZmZlclZrKCkgb3ZlcnJpZGU7CisKKyAgICBnbDo6
RXJyb3Igc2V0U3RvcmFnZShHTGVudW0gaW50ZXJuYWxmb3JtYXQsIHNpemVfdCB3aWR0aCwgc2l6
ZV90IGhlaWdodCkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHNldFN0b3JhZ2VNdWx0aXNhbXBs
ZShzaXplX3Qgc2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBoZWlnaHQpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBzZXRTdG9yYWdlRUdMSW1hZ2VUYXJn
ZXQoZWdsOjpJbWFnZSAqaW1hZ2UpIG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIGdldEF0dGFj
aG1lbnRSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0
ICZ0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVi
dWZmZXJBdHRhY2htZW50UmVuZGVyVGFyZ2V0ICoqcnRPdXQpIG92ZXJyaWRlOworfTsKKworfSAg
Ly8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX1JF
TkRFUkJVRkZFUlZLX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRlcmVyVmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyZXJWay5j
cHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJlclZrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDY2IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisvLworLy8gUmVuZGVyZXJWay5jcHA6CisvLyAgICBJbXBsZW1lbnRzIHRo
ZSBjbGFzcyBtZXRob2RzIGZvciBSZW5kZXJlclZrLgorLy8KKworI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJlclZrLmgiCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcu
aCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK1JlbmRlcmVyVms6OlJlbmRlcmVyVmsoKSA6IG1DYXBz
SW5pdGlhbGl6ZWQoZmFsc2UpCit7Cit9CisKK1JlbmRlcmVyVms6On5SZW5kZXJlclZrKCkKK3sK
K30KKwordm9pZCBSZW5kZXJlclZrOjplbnN1cmVDYXBzSW5pdGlhbGl6ZWQoKSBjb25zdAorewor
ICAgIGlmICghbUNhcHNJbml0aWFsaXplZCkKKyAgICB7CisgICAgICAgIGdlbmVyYXRlQ2Fwcygm
bU5hdGl2ZUNhcHMsICZtTmF0aXZlVGV4dHVyZUNhcHMsICZtTmF0aXZlRXh0ZW5zaW9ucywgJm1O
YXRpdmVMaW1pdGF0aW9ucyk7CisgICAgICAgIG1DYXBzSW5pdGlhbGl6ZWQgPSB0cnVlOworICAg
IH0KK30KKwordm9pZCBSZW5kZXJlclZrOjpnZW5lcmF0ZUNhcHMoZ2w6OkNhcHMgKiAvKm91dENh
cHMqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlQ2Fwc01hcCAq
IC8qb3V0VGV4dHVyZUNhcHMqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpF
eHRlbnNpb25zICogLypvdXRFeHRlbnNpb25zKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnbDo6TGltaXRhdGlvbnMgKiAvKiBvdXRMaW1pdGF0aW9ucyAqLykgY29uc3QKK3sKKyAg
ICAvLyBUT0RPKGptYWRpbGwpOiBDYXBzCit9CisKK2NvbnN0IGdsOjpDYXBzICZSZW5kZXJlclZr
OjpnZXROYXRpdmVDYXBzKCkgY29uc3QKK3sKKyAgICBlbnN1cmVDYXBzSW5pdGlhbGl6ZWQoKTsK
KyAgICByZXR1cm4gbU5hdGl2ZUNhcHM7Cit9CisKK2NvbnN0IGdsOjpUZXh0dXJlQ2Fwc01hcCAm
UmVuZGVyZXJWazo6Z2V0TmF0aXZlVGV4dHVyZUNhcHMoKSBjb25zdAoreworICAgIGVuc3VyZUNh
cHNJbml0aWFsaXplZCgpOworICAgIHJldHVybiBtTmF0aXZlVGV4dHVyZUNhcHM7Cit9CisKK2Nv
bnN0IGdsOjpFeHRlbnNpb25zICZSZW5kZXJlclZrOjpnZXROYXRpdmVFeHRlbnNpb25zKCkgY29u
c3QKK3sKKyAgICBlbnN1cmVDYXBzSW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbU5hdGl2ZUV4
dGVuc2lvbnM7Cit9CisKK2NvbnN0IGdsOjpMaW1pdGF0aW9ucyAmUmVuZGVyZXJWazo6Z2V0TmF0
aXZlTGltaXRhdGlvbnMoKSBjb25zdAoreworICAgIGVuc3VyZUNhcHNJbml0aWFsaXplZCgpOwor
ICAgIHJldHVybiBtTmF0aXZlTGltaXRhdGlvbnM7Cit9CisKK30gIC8vIG5hbWVzcGFjZSByeApJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGth
bi9SZW5kZXJlclZrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJlclZrLmgJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5k
ZXJlclZrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NiBAQAorLy8KKy8vIENvcHlyaWdo
dCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFJl
bmRlcmVyVmsuaDoKKy8vICAgIERlZmluZXMgdGhlIGNsYXNzIGludGVyZmFjZSBmb3IgUmVuZGVy
ZXJWay4KKy8vCisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX1JFTkRFUkVSVktf
SF8KKyNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX1JFTkRFUkVSVktfSF8KKworI2lu
Y2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvQ2Fwcy5oIgor
CituYW1lc3BhY2UgcngKK3sKKworY2xhc3MgUmVuZGVyZXJWayA6IGFuZ2xlOjpOb25Db3B5YWJs
ZQoreworICBwdWJsaWM6CisgICAgUmVuZGVyZXJWaygpOworICAgIH5SZW5kZXJlclZrKCk7CisK
KyAgICBjb25zdCBnbDo6Q2FwcyAmZ2V0TmF0aXZlQ2FwcygpIGNvbnN0OworICAgIGNvbnN0IGds
OjpUZXh0dXJlQ2Fwc01hcCAmZ2V0TmF0aXZlVGV4dHVyZUNhcHMoKSBjb25zdDsKKyAgICBjb25z
dCBnbDo6RXh0ZW5zaW9ucyAmZ2V0TmF0aXZlRXh0ZW5zaW9ucygpIGNvbnN0OworICAgIGNvbnN0
IGdsOjpMaW1pdGF0aW9ucyAmZ2V0TmF0aXZlTGltaXRhdGlvbnMoKSBjb25zdDsKKworICBwcml2
YXRlOgorICAgIHZvaWQgZW5zdXJlQ2Fwc0luaXRpYWxpemVkKCkgY29uc3Q7CisgICAgdm9pZCBn
ZW5lcmF0ZUNhcHMoZ2w6OkNhcHMgKm91dENhcHMsCisgICAgICAgICAgICAgICAgICAgICAgZ2w6
OlRleHR1cmVDYXBzTWFwICpvdXRUZXh0dXJlQ2FwcywKKyAgICAgICAgICAgICAgICAgICAgICBn
bDo6RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucywKKyAgICAgICAgICAgICAgICAgICAgICBnbDo6
TGltaXRhdGlvbnMgKm91dExpbWl0YXRpb25zKSBjb25zdDsKKworICAgIG11dGFibGUgYm9vbCBt
Q2Fwc0luaXRpYWxpemVkOworICAgIG11dGFibGUgZ2w6OkNhcHMgbU5hdGl2ZUNhcHM7CisgICAg
bXV0YWJsZSBnbDo6VGV4dHVyZUNhcHNNYXAgbU5hdGl2ZVRleHR1cmVDYXBzOworICAgIG11dGFi
bGUgZ2w6OkV4dGVuc2lvbnMgbU5hdGl2ZUV4dGVuc2lvbnM7CisgICAgbXV0YWJsZSBnbDo6TGlt
aXRhdGlvbnMgbU5hdGl2ZUxpbWl0YXRpb25zOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJ4CisK
KyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX1JFTkRFUkVSVktfSF8KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU2Ft
cGxlclZrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL1NhbXBsZXJWay5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TYW1wbGVy
VmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjUgQEAKKy8vCisvLyBDb3B5cmlnaHQg
MjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBTYW1w
bGVyVmsuY3BwOgorLy8gICAgSW1wbGVtZW50cyB0aGUgY2xhc3MgbWV0aG9kcyBmb3IgU2FtcGxl
clZrLgorLy8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TYW1wbGVyVmsu
aCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgcngKK3sKKworU2Ft
cGxlclZrOjpTYW1wbGVyVmsoKSA6IFNhbXBsZXJJbXBsKCkKK3sKK30KKworU2FtcGxlclZrOjp+
U2FtcGxlclZrKCkKK3sKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1NhbXBsZXJWay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci92dWxrYW4vU2FtcGxlclZrLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TYW1wbGVyVmsuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDI3IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gU2FtcGxlclZrLmg6CisvLyAgICBE
ZWZpbmVzIHRoZSBjbGFzcyBpbnRlcmZhY2UgZm9yIFNhbXBsZXJWaywgaW1wbGVtZW50aW5nIFNh
bXBsZXJJbXBsLgorLy8KKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5fU0FNUExF
UlZLX0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9TQU1QTEVSVktfSF8KKwor
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1NhbXBsZXJJbXBsLmgiCisKK25hbWVzcGFjZSBy
eAoreworCitjbGFzcyBTYW1wbGVyVmsgOiBwdWJsaWMgU2FtcGxlckltcGwKK3sKKyAgcHVibGlj
OgorICAgIFNhbXBsZXJWaygpOworICAgIH5TYW1wbGVyVmsoKSBvdmVycmlkZTsKK307CisKK30g
IC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9T
QU1QTEVSVktfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vU2hhZGVyVmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU2hhZGVyVmsuY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci92dWxrYW4vU2hhZGVyVmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8v
CisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisvLyBTaGFkZXJWay5jcHA6CisvLyAgICBJbXBsZW1lbnRzIHRoZSBjbGFzcyBtZXRo
b2RzIGZvciBTaGFkZXJWay4KKy8vCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vU2hhZGVyVmsuaCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2Ug
cngKK3sKKworU2hhZGVyVms6OlNoYWRlclZrKGNvbnN0IGdsOjpTaGFkZXJTdGF0ZSAmZGF0YSkg
OiBTaGFkZXJJbXBsKGRhdGEpCit7Cit9CisKK1NoYWRlclZrOjp+U2hhZGVyVmsoKQoreworfQor
CitTaENvbXBpbGVPcHRpb25zIFNoYWRlclZrOjpwcmVwYXJlU291cmNlQW5kUmV0dXJuT3B0aW9u
cyhzdGQ6OnN0cmluZ3N0cmVhbSAqc291cmNlU3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgKnNvdXJjZVBh
dGgpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBpbnQoKTsKK30KKworYm9v
bCBTaGFkZXJWazo6cG9zdFRyYW5zbGF0ZUNvbXBpbGUoZ2w6OkNvbXBpbGVyICpjb21waWxlciwg
c3RkOjpzdHJpbmcgKmluZm9Mb2cpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVy
biBib29sKCk7Cit9CisKK3N0ZDo6c3RyaW5nIFNoYWRlclZrOjpnZXREZWJ1Z0luZm8oKSBjb25z
dAoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKK30K
KworfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1NoYWRlclZrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TaGFkZXJWay5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vU2hhZGVyVmsuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1IEBA
CisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworLy8gU2hhZGVyVmsuaDoKKy8vICAgIERlZmluZXMgdGhlIGNsYXNzIGludGVy
ZmFjZSBmb3IgU2hhZGVyVmssIGltcGxlbWVudGluZyBTaGFkZXJJbXBsLgorLy8KKworI2lmbmRl
ZiBMSUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5fU0hBREVSVktfSF8KKyNkZWZpbmUgTElCQU5HTEVf
UkVOREVSRVJfVlVMS0FOX1NIQURFUlZLX0hfCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9TaGFkZXJJbXBsLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBTaGFkZXJWayA6IHB1
YmxpYyBTaGFkZXJJbXBsCit7CisgIHB1YmxpYzoKKyAgICBTaGFkZXJWayhjb25zdCBnbDo6U2hh
ZGVyU3RhdGUgJmRhdGEpOworICAgIH5TaGFkZXJWaygpIG92ZXJyaWRlOworCisgICAgLy8gUmV0
dXJucyBhZGRpdGlvbmFsIFNoQ29tcGlsZSBvcHRpb25zLgorICAgIFNoQ29tcGlsZU9wdGlvbnMg
cHJlcGFyZVNvdXJjZUFuZFJldHVybk9wdGlvbnMoc3RkOjpzdHJpbmdzdHJlYW0gKnNvdXJjZVN0
cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nICpzb3VyY2VQYXRoKSBvdmVycmlkZTsKKyAgICAvLyBSZXR1cm5zIHN1Y2Nl
c3MgZm9yIGNvbXBpbGluZyBvbiB0aGUgZHJpdmVyLiBSZXR1cm5zIHN1Y2Nlc3MuCisgICAgYm9v
bCBwb3N0VHJhbnNsYXRlQ29tcGlsZShnbDo6Q29tcGlsZXIgKmNvbXBpbGVyLCBzdGQ6OnN0cmlu
ZyAqaW5mb0xvZykgb3ZlcnJpZGU7CisKKyAgICBzdGQ6OnN0cmluZyBnZXREZWJ1Z0luZm8oKSBj
b25zdCBvdmVycmlkZTsKK307CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJ
QkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9TSEFERVJWS19IXwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TdXJmYWNlVmsuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92
dWxrYW4vU3VyZmFjZVZrLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1N1cmZhY2VWay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMDkgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBTdXJmYWNlVmsuY3BwOgorLy8g
ICAgSW1wbGVtZW50cyB0aGUgY2xhc3MgbWV0aG9kcyBmb3IgU3VyZmFjZVZrLgorLy8KKworI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TdXJmYWNlVmsuaCIKKworI2luY2x1ZGUg
ImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgcngKK3sKKworU3VyZmFjZVZrOjpTdXJmYWNl
VmsoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN1cmZhY2VTdGF0ZSkgOiBTdXJmYWNlSW1wbChz
dXJmYWNlU3RhdGUpCit7Cit9CisKK1N1cmZhY2VWazo6flN1cmZhY2VWaygpCit7Cit9CisKK2Vn
bDo6RXJyb3IgU3VyZmFjZVZrOjppbml0aWFsaXplKCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7
CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BQ0NFU1MpOworfQorCitGcmFtZWJ1ZmZl
ckltcGwgKlN1cmZhY2VWazo6Y3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFt
ZWJ1ZmZlclN0YXRlICZzdGF0ZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEZyYW1lYnVmZmVySW1wbCAqPigwKTsKK30KKworZWdsOjpFcnJvciBTdXJm
YWNlVms6OnN3YXAoKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZWdsOjpF
cnJvcihFR0xfQkFEX0FDQ0VTUyk7Cit9CisKK2VnbDo6RXJyb3IgU3VyZmFjZVZrOjpwb3N0U3Vi
QnVmZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KQor
eworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FD
Q0VTUyk7Cit9CisKK2VnbDo6RXJyb3IgU3VyZmFjZVZrOjpxdWVyeVN1cmZhY2VQb2ludGVyQU5H
TEUoRUdMaW50IGF0dHJpYnV0ZSwgdm9pZCAqKnZhbHVlKQoreworICAgIFVOSU1QTEVNRU5URUQo
KTsKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FDQ0VTUyk7Cit9CisKK2VnbDo6RXJy
b3IgU3VyZmFjZVZrOjpiaW5kVGV4SW1hZ2UoZ2w6OlRleHR1cmUgKnRleHR1cmUsIEVHTGludCBi
dWZmZXIpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBlZ2w6OkVycm9yKEVH
TF9CQURfQUNDRVNTKTsKK30KKworZWdsOjpFcnJvciBTdXJmYWNlVms6OnJlbGVhc2VUZXhJbWFn
ZShFR0xpbnQgYnVmZmVyKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZWds
OjpFcnJvcihFR0xfQkFEX0FDQ0VTUyk7Cit9CisKK2VnbDo6RXJyb3IgU3VyZmFjZVZrOjpnZXRT
eW5jVmFsdWVzKEVHTHVpbnQ2NEtIUiAqdXN0LCBFR0x1aW50NjRLSFIgKm1zYywgRUdMdWludDY0
S0hSICpzYmMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBlZ2w6OkVycm9y
KEVHTF9CQURfQUNDRVNTKTsKK30KKwordm9pZCBTdXJmYWNlVms6OnNldFN3YXBJbnRlcnZhbChF
R0xpbnQgaW50ZXJ2YWwpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCitFR0xpbnQgU3Vy
ZmFjZVZrOjpnZXRXaWR0aCgpIGNvbnN0Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJl
dHVybiBFR0xpbnQoKTsKK30KKworRUdMaW50IFN1cmZhY2VWazo6Z2V0SGVpZ2h0KCkgY29uc3QK
K3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIEVHTGludCgpOworfQorCitFR0xp
bnQgU3VyZmFjZVZrOjppc1Bvc3RTdWJCdWZmZXJTdXBwb3J0ZWQoKSBjb25zdAoreworICAgIFVO
SU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gRUdMaW50KCk7Cit9CisKK0VHTGludCBTdXJmYWNl
Vms6OmdldFN3YXBCZWhhdmlvcigpIGNvbnN0Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAg
IHJldHVybiBFR0xpbnQoKTsKK30KKworZ2w6OkVycm9yIFN1cmZhY2VWazo6Z2V0QXR0YWNobWVu
dFJlbmRlclRhcmdldChjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50OjpUYXJnZXQgJnRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJh
bWVidWZmZXJBdHRhY2htZW50UmVuZGVyVGFyZ2V0ICoqcnRPdXQpCit7CisgICAgVU5JTVBMRU1F
TlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQor
Cit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU3VyZmFjZVZrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TdXJmYWNlVmsu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvdnVsa2FuL1N1cmZhY2VWay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcg
QEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisvLyBTdXJmYWNlVmsuaDoKKy8vICAgIERlZmluZXMgdGhlIGNsYXNzIGlu
dGVyZmFjZSBmb3IgU3VyZmFjZVZrLCBpbXBsZW1lbnRpbmcgU3VyZmFjZUltcGwuCisvLworCisj
aWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9TVVJGQUNFVktfSF8KKyNkZWZpbmUgTElC
QU5HTEVfUkVOREVSRVJfVlVMS0FOX1NVUkZBQ0VWS19IXworCisjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvU3VyZmFjZUltcGwuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIFN1cmZh
Y2VWayA6IHB1YmxpYyBTdXJmYWNlSW1wbAoreworICBwdWJsaWM6CisgICAgU3VyZmFjZVZrKGNv
bnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdXJmYWNlU3RhdGUpOworICAgIH5TdXJmYWNlVmsoKSBv
dmVycmlkZTsKKworICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOworICAgIEZy
YW1lYnVmZmVySW1wbCAqY3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1
ZmZlclN0YXRlICZzdGF0ZSkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBzd2FwKCkgb3ZlcnJp
ZGU7CisgICAgZWdsOjpFcnJvciBwb3N0U3ViQnVmZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdM
aW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIHF1ZXJ5
U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUpIG92ZXJy
aWRlOworICAgIGVnbDo6RXJyb3IgYmluZFRleEltYWdlKGdsOjpUZXh0dXJlICp0ZXh0dXJlLCBF
R0xpbnQgYnVmZmVyKSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIHJlbGVhc2VUZXhJbWFnZShF
R0xpbnQgYnVmZmVyKSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIGdldFN5bmNWYWx1ZXMoRUdM
dWludDY0S0hSICp1c3QsIEVHTHVpbnQ2NEtIUiAqbXNjLCBFR0x1aW50NjRLSFIgKnNiYykgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZXRTd2FwSW50ZXJ2YWwoRUdMaW50IGludGVydmFsKSBvdmVycmlk
ZTsKKworICAgIC8vIHdpZHRoIGFuZCBoZWlnaHQgY2FuIGNoYW5nZSB3aXRoIGNsaWVudCB3aW5k
b3cgcmVzaXppbmcKKyAgICBFR0xpbnQgZ2V0V2lkdGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICBF
R0xpbnQgZ2V0SGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBFR0xpbnQgaXNQb3N0U3Vi
QnVmZmVyU3VwcG9ydGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRUdMaW50IGdldFN3YXBCZWhh
dmlvcigpIGNvbnN0IG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIGdldEF0dGFjaG1lbnRSZW5k
ZXJUYXJnZXQoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJBdHRh
Y2htZW50UmVuZGVyVGFyZ2V0ICoqcnRPdXQpIG92ZXJyaWRlOworfTsKKworfSAgLy8gbmFtZXNw
YWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX1NVUkZBQ0VWS19I
XwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1
bGthbi9UZXh0dXJlVmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVGV4dHVyZVZrLmNwcAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2Fu
L1RleHR1cmVWay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNTAgQEAKKy8vCisvLyBD
b3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8v
CisvLyBUZXh0dXJlVmsuY3BwOgorLy8gICAgSW1wbGVtZW50cyB0aGUgY2xhc3MgbWV0aG9kcyBm
b3IgVGV4dHVyZVZrLgorLy8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9U
ZXh0dXJlVmsuaCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgcngK
K3sKKworVGV4dHVyZVZrOjpUZXh0dXJlVmsoY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmc3RhdGUp
IDogVGV4dHVyZUltcGwoc3RhdGUpCit7Cit9CisKK1RleHR1cmVWazo6flRleHR1cmVWaygpCit7
Cit9CisKK2dsOjpFcnJvciBUZXh0dXJlVms6OnNldEltYWdlKEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhl
bFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB1aW50OF90ICpwaXhlbHMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgVGV4dHVyZVZr
OjpzZXRTdWJJbWFnZShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OkJveCAmYXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0
YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50
OF90ICpwaXhlbHMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgVGV4dHVyZVZrOjpzZXRD
b21wcmVzc2VkSW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1
bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlt
YWdlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
aW50OF90ICpwaXhlbHMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgVGV4dHVyZVZrOjpz
ZXRDb21wcmVzc2VkU3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmYXJlYSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0
YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGltYWdlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3Ig
VGV4dHVyZVZrOjpjb3B5SW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2UpCit7CisgICAgVU5JTVBMRU1FTlRF
RCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitn
bDo6RXJyb3IgVGV4dHVyZVZrOjpjb3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVh
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZl
ciAqc291cmNlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIFRleHR1cmVWazo6c2V0U3Rv
cmFnZShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgbGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJu
YWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRl
bnRzICZzaXplKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworZ2w6OkVycm9yIFRleHR1cmVWazo6c2V0RUdM
SW1hZ2VUYXJnZXQoR0xlbnVtIHRhcmdldCwgZWdsOjpJbWFnZSAqaW1hZ2UpCit7CisgICAgVU5J
TVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OworfQorCitnbDo6RXJyb3IgVGV4dHVyZVZrOjpzZXRJbWFnZUV4dGVybmFsKEdMZW51bSB0YXJn
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3RyZWFtICpz
dHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6
U3RyZWFtOjpHTFRleHR1cmVEZXNjcmlwdGlvbiAmZGVzYykKK3sKKyAgICBVTklNUExFTUVOVEVE
KCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2ds
OjpFcnJvciBUZXh0dXJlVms6OmdlbmVyYXRlTWlwbWFwKCkKK3sKKyAgICBVTklNUExFTUVOVEVE
KCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK3Zv
aWQgVGV4dHVyZVZrOjpzZXRCYXNlTGV2ZWwoR0x1aW50IGJhc2VMZXZlbCkKK3sKKyAgICBVTklN
UExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgVGV4dHVyZVZrOjpiaW5kVGV4SW1hZ2UoZWdsOjpTdXJm
YWNlICpzdXJmYWNlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwordm9pZCBUZXh0dXJl
Vms6OnJlbGVhc2VUZXhJbWFnZSgpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCitnbDo6
RXJyb3IgVGV4dHVyZVZrOjpnZXRBdHRhY2htZW50UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnQ6OlRhcmdldCAmdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJn
ZXQgKipydE91dCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK3ZvaWQgVGV4dHVyZVZrOjpzeW5jU3RhdGUo
Y29uc3QgZ2w6OlRleHR1cmU6OkRpcnR5Qml0cyAmZGlydHlCaXRzKQoreworICAgIFVOSU1QTEVN
RU5URUQoKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1RleHR1cmVWay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vVGV4dHVyZVZrLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9UZXh0dXJlVmsuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDkyIEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gVGV4dHVyZVZrLmg6CisvLyAgICBEZWZpbmVz
IHRoZSBjbGFzcyBpbnRlcmZhY2UgZm9yIFRleHR1cmVWaywgaW1wbGVtZW50aW5nIFRleHR1cmVJ
bXBsLgorLy8KKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5fVEVYVFVSRVZLX0hf
CisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9URVhUVVJFVktfSF8KKworI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1RleHR1cmVJbXBsLmgiCisKK25hbWVzcGFjZSByeAorewor
CitjbGFzcyBUZXh0dXJlVmsgOiBwdWJsaWMgVGV4dHVyZUltcGwKK3sKKyAgcHVibGljOgorICAg
IFRleHR1cmVWayhjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZzdGF0ZSk7CisgICAgflRleHR1cmVW
aygpIG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIHNldEltYWdlKEdMZW51bSB0YXJnZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHNl
dFN1YkltYWdlKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmYXJlYSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJyb3Igc2V0Q29t
cHJlc3NlZEltYWdlKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaW1hZ2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3Igc2V0
Q29tcHJlc3NlZFN1YkltYWdlKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6Qm94ICZhcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VTaXplLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsKKworICAg
IGdsOjpFcnJvciBjb3B5SW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0
YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJu
YWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIg
KnNvdXJjZSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGNvcHlTdWJJbWFnZShHTGVudW0gdGFy
Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZSkgb3Zl
cnJpZGU7CisKKyAgICBnbDo6RXJyb3Igc2V0U3RvcmFnZShHTGVudW0gdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpFeHRlbnRzICZzaXplKSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBzZXRFR0xJbWFn
ZVRhcmdldChHTGVudW0gdGFyZ2V0LCBlZ2w6OkltYWdlICppbWFnZSkgb3ZlcnJpZGU7CisKKyAg
ICBnbDo6RXJyb3Igc2V0SW1hZ2VFeHRlcm5hbChHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVnbDo6U3RyZWFtICpzdHJlYW0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZWdsOjpTdHJlYW06OkdMVGV4dHVyZURlc2NyaXB0aW9uICZk
ZXNjKSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBnZW5lcmF0ZU1pcG1hcCgpIG92ZXJyaWRl
OworCisgICAgdm9pZCBzZXRCYXNlTGV2ZWwoR0x1aW50IGJhc2VMZXZlbCkgb3ZlcnJpZGU7CisK
KyAgICB2b2lkIGJpbmRUZXhJbWFnZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpIG92ZXJyaWRlOwor
ICAgIHZvaWQgcmVsZWFzZVRleEltYWdlKCkgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJyb3IgZ2V0
QXR0YWNobWVudFJlbmRlclRhcmdldChjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50OjpU
YXJnZXQgJnRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQgKipydE91dCkgb3ZlcnJpZGU7CisKKyAg
ICB2b2lkIHN5bmNTdGF0ZShjb25zdCBnbDo6VGV4dHVyZTo6RGlydHlCaXRzICZkaXJ0eUJpdHMp
IG92ZXJyaWRlOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5H
TEVfUkVOREVSRVJfVlVMS0FOX1RFWFRVUkVWS19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9UcmFuc2Zvcm1GZWVkYmFja1ZrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvdnVsa2FuL1RyYW5zZm9ybUZlZWRiYWNrVmsuY3BwCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVHJhbnNm
b3JtRmVlZGJhY2tWay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NyBAQAorLy8KKy8v
IENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKy8vIFRyYW5zZm9ybUZlZWRiYWNrVmsuY3BwOgorLy8gICAgSW1wbGVtZW50cyB0aGUgY2xh
c3MgbWV0aG9kcyBmb3IgVHJhbnNmb3JtRmVlZGJhY2tWay4KKy8vCisKKyNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vVHJhbnNmb3JtRmVlZGJhY2tWay5oIgorCisjaW5jbHVkZSAi
Y29tbW9uL2RlYnVnLmgiCisKK25hbWVzcGFjZSByeAoreworCitUcmFuc2Zvcm1GZWVkYmFja1Zr
OjpUcmFuc2Zvcm1GZWVkYmFja1ZrKGNvbnN0IGdsOjpUcmFuc2Zvcm1GZWVkYmFja1N0YXRlICZz
dGF0ZSkKKyAgICA6IFRyYW5zZm9ybUZlZWRiYWNrSW1wbChzdGF0ZSkKK3sKK30KKworVHJhbnNm
b3JtRmVlZGJhY2tWazo6flRyYW5zZm9ybUZlZWRiYWNrVmsoKQoreworfQorCit2b2lkIFRyYW5z
Zm9ybUZlZWRiYWNrVms6OmJlZ2luKEdMZW51bSBwcmltaXRpdmVNb2RlKQoreworICAgIFVOSU1Q
TEVNRU5URUQoKTsKK30KKwordm9pZCBUcmFuc2Zvcm1GZWVkYmFja1ZrOjplbmQoKQoreworICAg
IFVOSU1QTEVNRU5URUQoKTsKK30KKwordm9pZCBUcmFuc2Zvcm1GZWVkYmFja1ZrOjpwYXVzZSgp
Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCit2b2lkIFRyYW5zZm9ybUZlZWRiYWNrVms6
OnJlc3VtZSgpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCit2b2lkIFRyYW5zZm9ybUZl
ZWRiYWNrVms6OmJpbmRHZW5lcmljQnVmZmVyKGNvbnN0IEJpbmRpbmdQb2ludGVyPGdsOjpCdWZm
ZXI+ICZiaW5kaW5nKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwordm9pZCBUcmFuc2Zv
cm1GZWVkYmFja1ZrOjpiaW5kSW5kZXhlZEJ1ZmZlcihzaXplX3QgaW5kZXgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE9mZnNldEJpbmRpbmdQb2lu
dGVyPGdsOjpCdWZmZXI+ICZiaW5kaW5nKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwor
fSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL1RyYW5zZm9ybUZlZWRiYWNrVmsuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Ry
YW5zZm9ybUZlZWRiYWNrVmsuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1RyYW5zZm9ybUZlZWRiYWNrVmsuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gVHJhbnNmb3JtRmVl
ZGJhY2tWay5oOgorLy8gICAgRGVmaW5lcyB0aGUgY2xhc3MgaW50ZXJmYWNlIGZvciBUcmFuc2Zv
cm1GZWVkYmFja1ZrLCBpbXBsZW1lbnRpbmcgVHJhbnNmb3JtRmVlZGJhY2tJbXBsLgorLy8KKwor
I2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5fVFJBTlNGT1JNRkVFREJBQ0tWS19IXwor
I2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5fVFJBTlNGT1JNRkVFREJBQ0tWS19IXwor
CisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvVHJhbnNmb3JtRmVlZGJhY2tJbXBsLmgiCisK
K25hbWVzcGFjZSByeAoreworCitjbGFzcyBUcmFuc2Zvcm1GZWVkYmFja1ZrIDogcHVibGljIFRy
YW5zZm9ybUZlZWRiYWNrSW1wbAoreworICBwdWJsaWM6CisgICAgVHJhbnNmb3JtRmVlZGJhY2tW
ayhjb25zdCBnbDo6VHJhbnNmb3JtRmVlZGJhY2tTdGF0ZSAmc3RhdGUpOworICAgIH5UcmFuc2Zv
cm1GZWVkYmFja1ZrKCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGJlZ2luKEdMZW51bSBwcmltaXRp
dmVNb2RlKSBvdmVycmlkZTsKKyAgICB2b2lkIGVuZCgpIG92ZXJyaWRlOworICAgIHZvaWQgcGF1
c2UoKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc3VtZSgpIG92ZXJyaWRlOworCisgICAgdm9pZCBi
aW5kR2VuZXJpY0J1ZmZlcihjb25zdCBCaW5kaW5nUG9pbnRlcjxnbDo6QnVmZmVyPiAmYmluZGlu
Zykgb3ZlcnJpZGU7CisgICAgdm9pZCBiaW5kSW5kZXhlZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNv
bnN0IE9mZnNldEJpbmRpbmdQb2ludGVyPGdsOjpCdWZmZXI+ICZiaW5kaW5nKSBvdmVycmlkZTsK
K307CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVS
X1ZVTEtBTl9UUkFOU0ZPUk1GRUVEQkFDS1ZLX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1ZlcnRleEFycmF5VmsuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92
dWxrYW4vVmVydGV4QXJyYXlWay5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9WZXJ0ZXhBcnJheVZrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI1IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gVmVydGV4QXJyYXlW
ay5jcHA6CisvLyAgICBJbXBsZW1lbnRzIHRoZSBjbGFzcyBtZXRob2RzIGZvciBWZXJ0ZXhBcnJh
eVZrLgorLy8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9WZXJ0ZXhBcnJh
eVZrLmgiCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisK
K1ZlcnRleEFycmF5Vms6OlZlcnRleEFycmF5VmsoY29uc3QgZ2w6OlZlcnRleEFycmF5U3RhdGUg
JmRhdGEpIDogVmVydGV4QXJyYXlJbXBsKGRhdGEpCit7Cit9CisKK1ZlcnRleEFycmF5Vms6On5W
ZXJ0ZXhBcnJheVZrKCkKK3sKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1ZlcnRleEFycmF5
VmsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvdnVsa2FuL1ZlcnRleEFycmF5VmsuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1ZlcnRleEFycmF5
VmsuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI3IEBACisvLworLy8gQ29weXJpZ2h0IDIw
MTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gVmVydGV4
QXJyYXlWay5oOgorLy8gICAgRGVmaW5lcyB0aGUgY2xhc3MgaW50ZXJmYWNlIGZvciBWZXJ0ZXhB
cnJheVZrLCBpbXBsZW1lbnRpbmcgVmVydGV4QXJyYXlJbXBsLgorLy8KKworI2lmbmRlZiBMSUJB
TkdMRV9SRU5ERVJFUl9WVUxLQU5fVkVSVEVYQVJSQVlWS19IXworI2RlZmluZSBMSUJBTkdMRV9S
RU5ERVJFUl9WVUxLQU5fVkVSVEVYQVJSQVlWS19IXworCisjaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvVmVydGV4QXJyYXlJbXBsLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBWZXJ0
ZXhBcnJheVZrIDogcHVibGljIFZlcnRleEFycmF5SW1wbAoreworICBwdWJsaWM6CisgICAgVmVy
dGV4QXJyYXlWayhjb25zdCBnbDo6VmVydGV4QXJyYXlTdGF0ZSAmZGF0YSk7CisgICAgflZlcnRl
eEFycmF5VmsoKSBvdmVycmlkZTsKK307CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYg
IC8vIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9WRVJURVhBUlJBWVZLX0hfCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvc2lnbmFsX3V0aWxzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvc2lnbmFsX3V0aWxz
LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvc2lnbmFsX3V0aWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwMyBAQAorLy8K
Ky8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKy8vIHNpZ25hbF91dGlsczoKKy8vICAgSGVscGVyIGNsYXNzZXMgZm9yIHRyYWNraW5n
IGRlcGVuZGVudCBzdGF0ZSBjaGFuZ2VzIGJldHdlZW4gb2JqZWN0cy4KKy8vICAgVGhlc2UgY2hh
bmdlcyBhcmUgc2lnbmFsZWQgdG8gdGhlIGRlcGVuZGVudCBjbGFzcyB2aWEgY2hhbm5lbHMuCisK
KyNpbmNsdWRlICJsaWJBTkdMRS9zaWduYWxfdXRpbHMuaCIKKworI2luY2x1ZGUgPGFsZ29yaXRo
bT4KKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgYW5nbGUKK3sKKwor
QnJvYWRjYXN0Q2hhbm5lbDo6QnJvYWRjYXN0Q2hhbm5lbCgpCit7Cit9CisKK0Jyb2FkY2FzdENo
YW5uZWw6On5Ccm9hZGNhc3RDaGFubmVsKCkKK3sKKyAgICByZXNldCgpOworfQorCit2b2lkIEJy
b2FkY2FzdENoYW5uZWw6OmFkZFJlY2VpdmVyKENoYW5uZWxCaW5kaW5nICpyZWNlaXZlcikKK3sK
KyAgICBBU1NFUlQoc3RkOjpmaW5kKG1SZWNlaXZlcnMuYmVnaW4oKSwgbVJlY2VpdmVycy5lbmQo
KSwgcmVjZWl2ZXIpID09IG1SZWNlaXZlcnMuZW5kKCkpOworICAgIG1SZWNlaXZlcnMucHVzaF9i
YWNrKHJlY2VpdmVyKTsKK30KKwordm9pZCBCcm9hZGNhc3RDaGFubmVsOjpyZW1vdmVSZWNlaXZl
cihDaGFubmVsQmluZGluZyAqcmVjZWl2ZXIpCit7CisgICAgYXV0byBpdGVyID0gc3RkOjpmaW5k
KG1SZWNlaXZlcnMuYmVnaW4oKSwgbVJlY2VpdmVycy5lbmQoKSwgcmVjZWl2ZXIpOworICAgIEFT
U0VSVChpdGVyICE9IG1SZWNlaXZlcnMuZW5kKCkpOworICAgIG1SZWNlaXZlcnMuZXJhc2UoaXRl
cik7Cit9CisKK3ZvaWQgQnJvYWRjYXN0Q2hhbm5lbDo6c2lnbmFsKCkgY29uc3QKK3sKKyAgICBp
ZiAobVJlY2VpdmVycy5lbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGNvbnN0
IGF1dG8gKnJlY2VpdmVyIDogbVJlY2VpdmVycykKKyAgICB7CisgICAgICAgIHJlY2VpdmVyLT5z
aWduYWwoKTsKKyAgICB9Cit9CisKK3ZvaWQgQnJvYWRjYXN0Q2hhbm5lbDo6cmVzZXQoKQorewor
ICAgIGZvciAoYXV0byByZWNlaXZlciA6IG1SZWNlaXZlcnMpCisgICAgeworICAgICAgICByZWNl
aXZlci0+b25DaGFubmVsQ2xvc2VkKCk7CisgICAgfQorICAgIG1SZWNlaXZlcnMuY2xlYXIoKTsK
K30KKworQ2hhbm5lbEJpbmRpbmc6OkNoYW5uZWxCaW5kaW5nKFNpZ25hbFJlY2VpdmVyICpyZWNl
aXZlciwgU2lnbmFsVG9rZW4gdG9rZW4pCisgICAgOiBtQ2hhbm5lbChudWxscHRyKSwgbVJlY2Vp
dmVyKHJlY2VpdmVyKSwgbVRva2VuKHRva2VuKQoreworICAgIEFTU0VSVChyZWNlaXZlcik7Cit9
CisKK0NoYW5uZWxCaW5kaW5nOjp+Q2hhbm5lbEJpbmRpbmcoKQoreworICAgIHJlc2V0KCk7Cit9
CisKK3ZvaWQgQ2hhbm5lbEJpbmRpbmc6OmJpbmQoQnJvYWRjYXN0Q2hhbm5lbCAqY2hhbm5lbCkK
K3sKKyAgICBBU1NFUlQobVJlY2VpdmVyKTsKKyAgICBpZiAobUNoYW5uZWwpCisgICAgeworICAg
ICAgICBtQ2hhbm5lbC0+cmVtb3ZlUmVjZWl2ZXIodGhpcyk7CisgICAgfQorCisgICAgbUNoYW5u
ZWwgPSBjaGFubmVsOworCisgICAgaWYgKG1DaGFubmVsKQorICAgIHsKKyAgICAgICAgbUNoYW5u
ZWwtPmFkZFJlY2VpdmVyKHRoaXMpOworICAgIH0KK30KKwordm9pZCBDaGFubmVsQmluZGluZzo6
cmVzZXQoKQoreworICAgIGJpbmQobnVsbHB0cik7Cit9CisKK3ZvaWQgQ2hhbm5lbEJpbmRpbmc6
OnNpZ25hbCgpIGNvbnN0Cit7CisgICAgbVJlY2VpdmVyLT5zaWduYWwobVRva2VuKTsKK30KKwor
dm9pZCBDaGFubmVsQmluZGluZzo6b25DaGFubmVsQ2xvc2VkKCkKK3sKKyAgICBtQ2hhbm5lbCA9
IG51bGxwdHI7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmdsZQpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3NpZ25hbF91dGlscy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9zaWduYWxfdXRpbHMuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvc2lnbmFsX3V0
aWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NCBAQAorLy8KKy8vIENvcHlyaWdodCAy
MDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIHNpZ25h
bF91dGlsczoKKy8vICAgSGVscGVyIGNsYXNzZXMgZm9yIHRyYWNraW5nIGRlcGVuZGVudCBzdGF0
ZSBjaGFuZ2VzIGJldHdlZW4gb2JqZWN0cy4KKy8vICAgVGhlc2UgY2hhbmdlcyBhcmUgc2lnbmFs
ZWQgdG8gdGhlIGRlcGVuZGVudCBjbGFzcyB2aWEgY2hhbm5lbHMuCisKKyNpZm5kZWYgTElCQU5H
TEVfU0lHTkFMX1VUSUxTX0hfCisjZGVmaW5lIExJQkFOR0xFX1NJR05BTF9VVElMU19IXworCisj
aW5jbHVkZSA8c2V0PgorCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNw
YWNlIGFuZ2xlCit7CisKKy8vIE1lc3NhZ2UgdG9rZW4gcGFzc2VkIHRvIHRoZSByZWNlaXZlcjsK
K3VzaW5nIFNpZ25hbFRva2VuID0gdWludDMyX3Q7CisKKy8vIEludGVyZmFjZSB0aGF0IHRoZSBk
ZXBlbmRpbmcgY2xhc3MgaW5oZXJpdHMgZnJvbS4KK2NsYXNzIFNpZ25hbFJlY2VpdmVyCit7Cisg
IHB1YmxpYzoKKyAgICB2aXJ0dWFsIH5TaWduYWxSZWNlaXZlcigpID0gZGVmYXVsdDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2lnbmFsKFNpZ25hbFRva2VuIHRva2VuKSA9IDA7Cit9OworCitjbGFzcyBD
aGFubmVsQmluZGluZzsKKworLy8gVGhlIGhvc3QgY2xhc3Mgb3ducyB0aGUgY2hhbm5lbC4gSXQg
dXNlcyB0aGUgY2hhbm5lbCB0byBmaXJlIHNpZ25hbHMgdG8gdGhlIHJlY2VpdmVyLgorY2xhc3Mg
QnJvYWRjYXN0Q2hhbm5lbCBmaW5hbCA6IE5vbkNvcHlhYmxlCit7CisgIHB1YmxpYzoKKyAgICBC
cm9hZGNhc3RDaGFubmVsKCk7CisgICAgfkJyb2FkY2FzdENoYW5uZWwoKTsKKworICAgIHZvaWQg
c2lnbmFsKCkgY29uc3Q7CisgICAgdm9pZCByZXNldCgpOworCisgIHByaXZhdGU6CisgICAgLy8g
T25seSB0aGUgQ2hhbm5lbEJpbmRpbmcgY2xhc3Mgc2hvdWxkIGFkZCBvciByZW1vdmUgcmVjZWl2
ZXJzLgorICAgIGZyaWVuZCBjbGFzcyBDaGFubmVsQmluZGluZzsKKyAgICB2b2lkIGFkZFJlY2Vp
dmVyKENoYW5uZWxCaW5kaW5nICpyZWNlaXZlcik7CisgICAgdm9pZCByZW1vdmVSZWNlaXZlcihD
aGFubmVsQmluZGluZyAqcmVjZWl2ZXIpOworCisgICAgc3RkOjp2ZWN0b3I8Q2hhbm5lbEJpbmRp
bmcgKj4gbVJlY2VpdmVyczsKK307CisKKy8vIFRoZSBkZXBlbmRlbnQgY2xhc3Mga2VlcHMgYmlu
ZGluZ3MgdG8gdGhlIGhvc3QncyBCcm9hZGNhc3RDaGFubmVsLgorY2xhc3MgQ2hhbm5lbEJpbmRp
bmcgZmluYWwKK3sKKyAgcHVibGljOgorICAgIENoYW5uZWxCaW5kaW5nKFNpZ25hbFJlY2VpdmVy
ICpyZWNlaXZlciwgU2lnbmFsVG9rZW4gdG9rZW4pOworICAgIH5DaGFubmVsQmluZGluZygpOwor
ICAgIENoYW5uZWxCaW5kaW5nKGNvbnN0IENoYW5uZWxCaW5kaW5nICZvdGhlcikgPSBkZWZhdWx0
OworICAgIENoYW5uZWxCaW5kaW5nICZvcGVyYXRvcj0oY29uc3QgQ2hhbm5lbEJpbmRpbmcgJm90
aGVyKSA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIGJpbmQoQnJvYWRjYXN0Q2hhbm5lbCAqY2hhbm5l
bCk7CisgICAgdm9pZCByZXNldCgpOworICAgIHZvaWQgc2lnbmFsKCkgY29uc3Q7CisgICAgdm9p
ZCBvbkNoYW5uZWxDbG9zZWQoKTsKKworICBwcml2YXRlOgorICAgIEJyb2FkY2FzdENoYW5uZWwg
Km1DaGFubmVsOworICAgIFNpZ25hbFJlY2VpdmVyICptUmVjZWl2ZXI7CisgICAgU2lnbmFsVG9r
ZW4gbVRva2VuOworfTsKKworfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCisKKyNlbmRpZiAgLy8gTElC
QU5HTEVfU0lHTkFMX1VUSUxTX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvc2lnbmFsX3V0aWxzX3VuaXR0ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvc2lnbmFsX3V0aWxzX3VuaXR0ZXN0LmNwcAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvc2ln
bmFsX3V0aWxzX3VuaXR0ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM4IEBACisv
LworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKy8vIHNpZ25hbF91dGlsc191bml0dGVzdDoKKy8vICAgVW5pdCB0ZXN0cyBm
b3Igc2lnbmFscyBhbmQgcmVsYXRlZCB1dGlscy4KKworI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
CisKKyNpbmNsdWRlICJsaWJBTkdMRS9zaWduYWxfdXRpbHMuaCIKKwordXNpbmcgbmFtZXNwYWNl
IGFuZ2xlOwordXNpbmcgbmFtZXNwYWNlIHRlc3Rpbmc7CisKK25hbWVzcGFjZQoreworCitzdHJ1
Y3QgU2lnbmFsVGhpbmcgOiBwdWJsaWMgU2lnbmFsUmVjZWl2ZXIKK3sKKyAgICB2b2lkIHNpZ25h
bChTaWduYWxUb2tlbiB0b2tlbikgb3ZlcnJpZGUgeyB3YXNTaWduYWxlZCA9IHRydWU7IH0KKyAg
ICBib29sIHdhc1NpZ25hbGVkID0gZmFsc2U7Cit9OworCisvLyBUZXN0IHRoYXQgYnJvYWRjYXN0
IHNpZ25hbHMgd29yay4KK1RFU1QoU2lnbmFsVGVzdCwgQnJvYWRjYXN0U2lnbmFscykKK3sKKyAg
ICBCcm9hZGNhc3RDaGFubmVsIGNoYW5uZWw7CisgICAgU2lnbmFsVGhpbmcgdGhpbmc7CisgICAg
Q2hhbm5lbEJpbmRpbmcgYmluZGluZygmdGhpbmcsIDB1KTsKKworICAgIGJpbmRpbmcuYmluZCgm
Y2hhbm5lbCk7CisgICAgQVNTRVJUX0ZBTFNFKHRoaW5nLndhc1NpZ25hbGVkKTsKKyAgICBjaGFu
bmVsLnNpZ25hbCgpOworICAgIEFTU0VSVF9UUlVFKHRoaW5nLndhc1NpZ25hbGVkKTsKK30KKwor
fSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FR0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRUdMLmNwcAkocmV2aXNpb24gMjA4
MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25F
R0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNiw2ICsxNiw4IEBACiAjaW5jbHVkZSAibGliQU5H
TEUvSW1hZ2UuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9TdHJlYW0uaCIKICNpbmNsdWRlICJsaWJB
TkdMRS9TdXJmYWNlLmgiCisjaW5jbHVkZSAibGliQU5HTEUvVGV4dHVyZS5oIgorI2luY2x1ZGUg
ImxpYkFOR0xFL2Zvcm1hdHV0aWxzLmgiCiAKICNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CiAKQEAg
LTU3LDcgKzU5LDcgQEAKICAgICAgICAgICAgIGZvciAoR0xlbnVtIGZhY2UgPSBnbDo6Rmlyc3RD
dWJlTWFwVGV4dHVyZVRhcmdldDsgZmFjZSA8PSBnbDo6TGFzdEN1YmVNYXBUZXh0dXJlVGFyZ2V0
OwogICAgICAgICAgICAgICAgICBmYWNlKyspCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgaWYgKHRleHR1cmUtPmdldEludGVybmFsRm9ybWF0KGZhY2UsIGxldmVsKSAhPSBHTF9OT05F
KQorICAgICAgICAgICAgICAgIGlmICh0ZXh0dXJlLT5nZXRGb3JtYXQoZmFjZSwgbGV2ZWwpLnZh
bGlkKCkpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgICAgICAgICB9CkBAIC02NSw3ICs2Nyw3IEBACiAgICAgICAgIH0KICAgICAg
ICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodGV4dHVyZS0+Z2V0SW50ZXJuYWxG
b3JtYXQodGV4dHVyZS0+Z2V0VGFyZ2V0KCksIGxldmVsKSAhPSBHTF9OT05FKQorICAgICAgICAg
ICAgaWYgKHRleHR1cmUtPmdldEZvcm1hdCh0ZXh0dXJlLT5nZXRUYXJnZXQoKSwgbGV2ZWwpLnZh
bGlkKCkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgICB9CkBAIC04MCw3ICs4Miw3IEBACiAgICAgQVNTRVJUKHRleHR1cmUtPmdldFRhcmdl
dCgpID09IEdMX1RFWFRVUkVfQ1VCRV9NQVApOwogICAgIGZvciAoR0xlbnVtIGZhY2UgPSBnbDo6
Rmlyc3RDdWJlTWFwVGV4dHVyZVRhcmdldDsgZmFjZSA8PSBnbDo6TGFzdEN1YmVNYXBUZXh0dXJl
VGFyZ2V0OyBmYWNlKyspCiAgICAgewotICAgICAgICBpZiAodGV4dHVyZS0+Z2V0SW50ZXJuYWxG
b3JtYXQoZmFjZSwgMCkgPT0gR0xfTk9ORSkKKyAgICAgICAgaWYgKCF0ZXh0dXJlLT5nZXRGb3Jt
YXQoZmFjZSwgMCkudmFsaWQoKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KQEAgLTEyMiw2ICsxMjQsMzQgQEAKICAgICB9CiAgICAgcmV0dXJuIGVnbDo6
RXJyb3IoRUdMX1NVQ0NFU1MpOwogfQorCitlZ2w6OkVycm9yIFZhbGlkYXRlQ3JlYXRlSW1hZ2VL
SFJNaXBMZXZlbENvbW1vbihnbDo6Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpUZXh0dXJlICp0ZXh0dXJl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQXR0
cmliIGxldmVsKQoreworICAgIC8vIE5vdGUgdGhhdCB0aGUgc3BlYyBFR0xfS0hSX2NyZWF0ZV9p
bWFnZSBzcGVjIGRvZXMgbm90IGV4cGxpY2l0bHkgc3BlY2lmeSBhbiBlcnJvcgorICAgIC8vIHdo
ZW4gdGhlIGxldmVsIGlzIG91dHNpZGUgdGhlIGJhc2UvbWF4IGxldmVsIHJhbmdlLCBidXQgaXQg
ZG9lcyBtZW50aW9uIHRoYXQgdGhlCisgICAgLy8gbGV2ZWwgIm11c3QgYmUgYSBwYXJ0IG9mIHRo
ZSBjb21wbGV0ZSB0ZXh0dXJlIG9iamVjdCA8YnVmZmVyPiIuIEl0IGNhbiBiZSBhcmd1ZWQKKyAg
ICAvLyB0aGF0IG91dC1vZi1yYW5nZSBsZXZlbHMgYXJlIG5vdCBhIHBhcnQgb2YgdGhlIGNvbXBs
ZXRlIHRleHR1cmUuCisgICAgY29uc3QgR0x1aW50IGVmZmVjdGl2ZUJhc2VMZXZlbCA9IHRleHR1
cmUtPmdldFRleHR1cmVTdGF0ZSgpLmdldEVmZmVjdGl2ZUJhc2VMZXZlbCgpOworICAgIGlmIChs
ZXZlbCA+IDAgJiYKKyAgICAgICAgKCF0ZXh0dXJlLT5pc01pcG1hcENvbXBsZXRlKCkgfHwgc3Rh
dGljX2Nhc3Q8R0x1aW50PihsZXZlbCkgPCBlZmZlY3RpdmVCYXNlTGV2ZWwgfHwKKyAgICAgICAg
IHN0YXRpY19jYXN0PEdMdWludD4obGV2ZWwpID4gdGV4dHVyZS0+Z2V0VGV4dHVyZVN0YXRlKCku
Z2V0TWlwbWFwTWF4TGV2ZWwoKSkpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihF
R0xfQkFEX1BBUkFNRVRFUiwgInRleHR1cmUgbXVzdCBiZSBjb21wbGV0ZSBpZiBsZXZlbCBpcyBu
b24temVyby4iKTsKKyAgICB9CisKKyAgICBpZiAobGV2ZWwgPT0gMCAmJiAhdGV4dHVyZS0+aXNN
aXBtYXBDb21wbGV0ZSgpICYmCisgICAgICAgIFRleHR1cmVIYXNOb25aZXJvTWlwTGV2ZWxzU3Bl
Y2lmaWVkKGNvbnRleHQsIHRleHR1cmUpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJy
b3IoRUdMX0JBRF9QQVJBTUVURVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJpZiBsZXZl
bCBpcyB6ZXJvIGFuZCB0aGUgdGV4dHVyZSBpcyBpbmNvbXBsZXRlLCBpdCBtdXN0IGhhdmUgbm8g
bWlwICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImxldmVscyBzcGVjaWZpZWQgZXhjZXB0
IHplcm8uIik7CisgICAgfQorCisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwor
fQorCiB9ICAvLyBuYW1lc3BhY2UKIAogbmFtZXNwYWNlIGVnbApAQCAtMTQ0LDE2ICsxNzQsMTcg
QEAKICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9OT1RfSU5JVElBTElaRUQsICJkaXNwbGF5IGlz
IG5vdCBpbml0aWFsaXplZC4iKTsKICAgICB9CiAKKyAgICBpZiAoZGlzcGxheS0+aXNEZXZpY2VM
b3N0KCkpCisgICAgeworICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0NPTlRFWFRfTE9TVCwgImRp
c3BsYXkgaGFkIGEgY29udGV4dCBsb3NzIik7CisgICAgfQorCiAgICAgcmV0dXJuIEVycm9yKEVH
TF9TVUNDRVNTKTsKIH0KIAogRXJyb3IgVmFsaWRhdGVTdXJmYWNlKGNvbnN0IERpc3BsYXkgKmRp
c3BsYXksIFN1cmZhY2UgKnN1cmZhY2UpCiB7Ci0gICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZURp
c3BsYXkoZGlzcGxheSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKFZhbGlkYXRlRGlzcGxheShkaXNw
bGF5KSk7CiAKICAgICBpZiAoIWRpc3BsYXktPmlzVmFsaWRTdXJmYWNlKHN1cmZhY2UpKQogICAg
IHsKQEAgLTE2NSwxMSArMTk2LDcgQEAKIAogRXJyb3IgVmFsaWRhdGVDb25maWcoY29uc3QgRGlz
cGxheSAqZGlzcGxheSwgY29uc3QgQ29uZmlnICpjb25maWcpCiB7Ci0gICAgRXJyb3IgZXJyb3Ig
PSBWYWxpZGF0ZURpc3BsYXkoZGlzcGxheSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKFZhbGlkYXRl
RGlzcGxheShkaXNwbGF5KSk7CiAKICAgICBpZiAoIWRpc3BsYXktPmlzVmFsaWRDb25maWcoY29u
ZmlnKSkKICAgICB7CkBAIC0xODEsMTEgKzIwOCw3IEBACiAKIEVycm9yIFZhbGlkYXRlQ29udGV4
dChjb25zdCBEaXNwbGF5ICpkaXNwbGF5LCBnbDo6Q29udGV4dCAqY29udGV4dCkKIHsKLSAgICBF
cnJvciBlcnJvciA9IFZhbGlkYXRlRGlzcGxheShkaXNwbGF5KTsKLSAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9U
UlkoVmFsaWRhdGVEaXNwbGF5KGRpc3BsYXkpKTsKIAogICAgIGlmICghZGlzcGxheS0+aXNWYWxp
ZENvbnRleHQoY29udGV4dCkpCiAgICAgewpAQCAtMTk3LDExICsyMjAsNyBAQAogCiBFcnJvciBW
YWxpZGF0ZUltYWdlKGNvbnN0IERpc3BsYXkgKmRpc3BsYXksIGNvbnN0IEltYWdlICppbWFnZSkK
IHsKLSAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlRGlzcGxheShkaXNwbGF5KTsKLSAgICBpZiAo
ZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAg
ICBBTkdMRV9UUlkoVmFsaWRhdGVEaXNwbGF5KGRpc3BsYXkpKTsKIAogICAgIGlmICghZGlzcGxh
eS0+aXNWYWxpZEltYWdlKGltYWdlKSkKICAgICB7CkBAIC0yMTMsMTEgKzIzMiw3IEBACiAKIEVy
cm9yIFZhbGlkYXRlU3RyZWFtKGNvbnN0IERpc3BsYXkgKmRpc3BsYXksIGNvbnN0IFN0cmVhbSAq
c3RyZWFtKQogewotICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVEaXNwbGF5KGRpc3BsYXkpOwot
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0g
ICAgfQorICAgIEFOR0xFX1RSWShWYWxpZGF0ZURpc3BsYXkoZGlzcGxheSkpOwogCiAgICAgY29u
c3QgRGlzcGxheUV4dGVuc2lvbnMgJmRpc3BsYXlFeHRlbnNpb25zID0gZGlzcGxheS0+Z2V0RXh0
ZW5zaW9ucygpOwogICAgIGlmICghZGlzcGxheUV4dGVuc2lvbnMuc3RyZWFtKQpAQCAtMjM2LDEx
ICsyNTEsNyBAQAogRXJyb3IgVmFsaWRhdGVDcmVhdGVDb250ZXh0KERpc3BsYXkgKmRpc3BsYXks
IENvbmZpZyAqY29uZmlndXJhdGlvbiwgZ2w6OkNvbnRleHQgKnNoYXJlQ29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGVNYXAmIGF0dHJpYnV0ZXMpCiB7
Ci0gICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZUNvbmZpZyhkaXNwbGF5LCBjb25maWd1cmF0aW9u
KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9y
OwotICAgIH0KKyAgICBBTkdMRV9UUlkoVmFsaWRhdGVDb25maWcoZGlzcGxheSwgY29uZmlndXJh
dGlvbikpOwogCiAgICAgLy8gR2V0IHRoZSByZXF1ZXN0ZWQgY2xpZW50IHZlcnNpb24gKGRlZmF1
bHQgaXMgMSkgYW5kIGNoZWNrIGl0IGlzIDIgb3IgMy4KICAgICBFR0xBdHRyaWIgY2xpZW50TWFq
b3JWZXJzaW9uID0gMTsKQEAgLTMxNiwyMSArMzI3LDcwIEBACiAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgICBjYXNlIEVHTF9DT05URVhUX1dFQkdMX0NP
TVBBVElCSUxJVFlfQU5HTEU6CisgICAgICAgICAgICAgIGlmICghZGlzcGxheS0+Z2V0RXh0ZW5z
aW9ucygpLmNyZWF0ZUNvbnRleHRXZWJHTENvbXBhdGliaWxpdHkpCisgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX0FUVFJJQlVURSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiQXR0cmlidXRlIEVHTF9DT05URVhUX1dFQkdMX0NP
TVBBVElCSUxJVFlfQU5HTEUgcmVxdWlyZXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJFR0xfQU5HTEVfY3JlYXRlX2NvbnRleHRfd2ViZ2xfY29tcGF0aWJpbGl0eS4iKTsKKyAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICBpZiAodmFsdWUgIT0gRUdMX1RSVUUgJiYgdmFs
dWUgIT0gRUdMX0ZBTFNFKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICByZXR1
cm4gRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgRUdMX0JBRF9BVFRSSUJVVEUsCisgICAg
ICAgICAgICAgICAgICAgICAgIkVHTF9DT05URVhUX1dFQkdMX0NPTVBBVElCSUxJVFlfQU5HTEUg
bXVzdCBiZSBFR0xfVFJVRSBvciBFR0xfRkFMU0UuIik7CisgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBjYXNlIEVHTF9DT05URVhUX0JJTkRfR0VORVJB
VEVTX1JFU09VUkNFX0NIUk9NSVVNOgorICAgICAgICAgICAgICBpZiAoIWRpc3BsYXktPmdldEV4
dGVuc2lvbnMoKS5jcmVhdGVDb250ZXh0QmluZEdlbmVyYXRlc1Jlc291cmNlKQorICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkF0dHJpYnV0ZSBFR0xfQ09OVEVYVF9C
SU5EX0dFTkVSQVRFU19SRVNPVVJDRV9DSFJPTUlVTSByZXF1aXJlcyAiCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkVHTF9DSFJPTUlVTV9jcmVhdGVfY29udGV4dF9iaW5kX2dlbmVy
YXRlc19yZXNvdXJjZS4iKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBpZiAodmFs
dWUgIT0gRUdMX1RSVUUgJiYgdmFsdWUgIT0gRUdMX0ZBTFNFKQorICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkVHTF9DT05URVhUX0JJTkRfR0VORVJBVEVTX1JFU09V
UkNFX0NIUk9NSVVNIG11c3QgYmUgRUdMX1RSVUUgb3IgIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJFR0xfRkFMU0UuIik7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
YnJlYWs7CisKICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVH
TF9CQURfQVRUUklCVVRFKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICgoY2xpZW50TWFq
b3JWZXJzaW9uICE9IDIgJiYgY2xpZW50TWFqb3JWZXJzaW9uICE9IDMpIHx8IGNsaWVudE1pbm9y
VmVyc2lvbiAhPSAwKQorICAgIHN3aXRjaCAoY2xpZW50TWFqb3JWZXJzaW9uKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQ09ORklHKTsKKyAgICAgICAgY2FzZSAyOgorICAg
ICAgICAgICAgaWYgKGNsaWVudE1pbm9yVmVyc2lvbiAhPSAwKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX0NPTkZJRyk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgaWYgKGNs
aWVudE1pbm9yVmVyc2lvbiAhPSAwICYmIGNsaWVudE1pbm9yVmVyc2lvbiAhPSAxKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX0NPTkZJRyk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIShjb25maWd1cmF0aW9uLT5jb25mb3JtYW50
ICYgRUdMX09QRU5HTF9FUzNfQklUX0tIUikpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQ09ORklHKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmIChkaXNwbGF5LT5nZXRNYXhTdXBwb3J0ZWRFU1ZlcnNpb24oKSA8CisgICAgICAgICAg
ICAgICAgZ2w6OlZlcnNpb24oc3RhdGljX2Nhc3Q8R0x1aW50PihjbGllbnRNYWpvclZlcnNpb24p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMdWludD4oY2xpZW50
TWlub3JWZXJzaW9uKSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVy
cm9yKEVHTF9CQURfQ09ORklHLCAiUmVxdWVzdGVkIEdMRVMgdmVyc2lvbiBpcyBub3Qgc3VwcG9y
dGVkLiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9DT05GSUcpOworICAgICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKGNsaWVudE1ham9yVmVyc2lvbiA9PSAzICYmICEo
Y29uZmlndXJhdGlvbi0+Y29uZm9ybWFudCAmIEVHTF9PUEVOR0xfRVMzX0JJVF9LSFIpKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQ09ORklHKTsKLSAgICB9Ci0KICAgICAv
LyBOb3RlOiBFR0xfQ09OVEVYVF9PUEVOR0xfRk9SV0FSRF9DT01QQVRJQkxFX0JJVF9LSFIgZG9l
cyBub3QgYXBwbHkgdG8gRVMKICAgICBjb25zdCBFR0xpbnQgdmFsaWRDb250ZXh0RmxhZ3MgPSAo
RUdMX0NPTlRFWFRfT1BFTkdMX0RFQlVHX0JJVF9LSFIgfAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFR0xfQ09OVEVYVF9PUEVOR0xfUk9CVVNUX0FDQ0VTU19CSVRfS0hS
KTsKQEAgLTM2Myw3ICs0MjMsOCBAQAogICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURf
TUFUQ0gpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHNoYXJlQ29udGV4dC0+Z2V0Q2xpZW50
VmVyc2lvbigpICE9IGNsaWVudE1ham9yVmVyc2lvbikKKyAgICAgICAgaWYgKHNoYXJlQ29udGV4
dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgIT0gY2xpZW50TWFqb3JWZXJzaW9uIHx8CisgICAg
ICAgICAgICBzaGFyZUNvbnRleHQtPmdldENsaWVudE1pbm9yVmVyc2lvbigpICE9IGNsaWVudE1p
bm9yVmVyc2lvbikKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURf
Q09OVEVYVCk7CiAgICAgICAgIH0KQEAgLTM3NSwxMSArNDM2LDcgQEAKIEVycm9yIFZhbGlkYXRl
Q3JlYXRlV2luZG93U3VyZmFjZShEaXNwbGF5ICpkaXNwbGF5LCBDb25maWcgKmNvbmZpZywgRUdM
TmF0aXZlV2luZG93VHlwZSB3aW5kb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgQXR0cmlidXRlTWFwJiBhdHRyaWJ1dGVzKQogewotICAgIEVycm9yIGVycm9yID0g
VmFsaWRhdGVDb25maWcoZGlzcGxheSwgY29uZmlnKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigp
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkoVmFs
aWRhdGVDb25maWcoZGlzcGxheSwgY29uZmlnKSk7CiAKICAgICBpZiAoIWRpc3BsYXktPmlzVmFs
aWROYXRpdmVXaW5kb3cod2luZG93KSkKICAgICB7CkBAIC00NzUsMTEgKzUzMiw3IEBACiAKIEVy
cm9yIFZhbGlkYXRlQ3JlYXRlUGJ1ZmZlclN1cmZhY2UoRGlzcGxheSAqZGlzcGxheSwgQ29uZmln
ICpjb25maWcsIGNvbnN0IEF0dHJpYnV0ZU1hcCYgYXR0cmlidXRlcykKIHsKLSAgICBFcnJvciBl
cnJvciA9IFZhbGlkYXRlQ29uZmlnKGRpc3BsYXksIGNvbmZpZyk7Ci0gICAgaWYgKGVycm9yLmlz
RXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVf
VFJZKFZhbGlkYXRlQ29uZmlnKGRpc3BsYXksIGNvbmZpZykpOwogCiAgICAgY29uc3QgRGlzcGxh
eUV4dGVuc2lvbnMgJmRpc3BsYXlFeHRlbnNpb25zID0gZGlzcGxheS0+Z2V0RXh0ZW5zaW9ucygp
OwogCkBAIC01ODMsMTEgKzYzNiw3IEBACiBFcnJvciBWYWxpZGF0ZUNyZWF0ZVBidWZmZXJGcm9t
Q2xpZW50QnVmZmVyKERpc3BsYXkgKmRpc3BsYXksIEVHTGVudW0gYnVmdHlwZSwgRUdMQ2xpZW50
QnVmZmVyIGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ29uZmlnICpjb25maWcsIGNvbnN0IEF0dHJpYnV0ZU1hcCYgYXR0cmlidXRlcykKIHsKLSAg
ICBFcnJvciBlcnJvciA9IFZhbGlkYXRlQ29uZmlnKGRpc3BsYXksIGNvbmZpZyk7Ci0gICAgaWYg
KGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Cisg
ICAgQU5HTEVfVFJZKFZhbGlkYXRlQ29uZmlnKGRpc3BsYXksIGNvbmZpZykpOwogCiAgICAgY29u
c3QgRGlzcGxheUV4dGVuc2lvbnMgJmRpc3BsYXlFeHRlbnNpb25zID0gZGlzcGxheS0+Z2V0RXh0
ZW5zaW9ucygpOwogCkBAIC03NTYsMTEgKzgwNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVHTENsaWVudEJ1ZmZlciBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0cmlidXRlcykKIHsKLSAgICBFcnJvciBlcnJvciA9
IFZhbGlkYXRlQ29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJv
cigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlko
VmFsaWRhdGVDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpKTsKIAogICAgIGNvbnN0IERpc3BsYXlF
eHRlbnNpb25zICZkaXNwbGF5RXh0ZW5zaW9ucyA9IGRpc3BsYXktPmdldEV4dGVuc2lvbnMoKTsK
IApAQCAtODYxLDE5ICs5MDYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGFy
Z2V0IDJEIHRleHR1cmUgZG9lcyBub3QgaGF2ZSBhIHZhbGlkIHNpemUgYXQgc3BlY2lmaWVkIGxl
dmVsLiIpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAobGV2ZWwgPiAwICYmICgh
dGV4dHVyZS0+aXNNaXBtYXBDb21wbGV0ZSgpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxzaXplX3Q+KGxldmVsKSA+PSB0ZXh0dXJlLT5nZXRNaXBDb21wbGV0
ZUxldmVscygpKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3Io
RUdMX0JBRF9QQVJBTUVURVIsICJ0ZXh0dXJlIG11c3QgYmUgY29tcGxldGUgaWYgbGV2ZWwgaXMg
bm9uLXplcm8uIik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChsZXZlbCA9PSAw
ICYmICF0ZXh0dXJlLT5pc01pcG1hcENvbXBsZXRlKCkgJiYKLSAgICAgICAgICAgICAgICBUZXh0
dXJlSGFzTm9uWmVyb01pcExldmVsc1NwZWNpZmllZChjb250ZXh0LCB0ZXh0dXJlKSkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9QQVJBTUVURVIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpZiBsZXZlbCBpcyB6ZXJvIGFuZCB0aGUg
dGV4dHVyZSBpcyBpbmNvbXBsZXRlLCBpdCBtdXN0IGhhdmUgbm8gbWlwICIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImxldmVscyBzcGVjaWZpZWQgZXhjZXB0IHplcm8uIik7Ci0gICAg
ICAgICAgICB9CisgICAgICAgICAgICBBTkdMRV9UUlkoVmFsaWRhdGVDcmVhdGVJbWFnZUtIUk1p
cExldmVsQ29tbW9uKGNvbnRleHQsIHRleHR1cmUsIGxldmVsKSk7CiAgICAgICAgIH0KICAgICAg
ICAgYnJlYWs7CiAKQEAgLTkxNywyMSArOTUwLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImFuZCBmYWNlLiIpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAobGV2
ZWwgPiAwICYmICghdGV4dHVyZS0+aXNNaXBtYXBDb21wbGV0ZSgpIHx8Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxzaXplX3Q+KGxldmVsKSA+PSB0ZXh0dXJlLT5n
ZXRNaXBDb21wbGV0ZUxldmVscygpKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gRXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsICJ0ZXh0dXJlIG11c3QgYmUgY29tcGxldGUg
aWYgbGV2ZWwgaXMgbm9uLXplcm8uIik7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBBTkdM
RV9UUlkoVmFsaWRhdGVDcmVhdGVJbWFnZUtIUk1pcExldmVsQ29tbW9uKGNvbnRleHQsIHRleHR1
cmUsIGxldmVsKSk7CiAKICAgICAgICAgICAgIGlmIChsZXZlbCA9PSAwICYmICF0ZXh0dXJlLT5p
c01pcG1hcENvbXBsZXRlKCkgJiYKLSAgICAgICAgICAgICAgICBUZXh0dXJlSGFzTm9uWmVyb01p
cExldmVsc1NwZWNpZmllZChjb250ZXh0LCB0ZXh0dXJlKSkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJpZiBsZXZlbCBpcyB6ZXJvIGFuZCB0aGUgdGV4dHVyZSBpcyBpbmNv
bXBsZXRlLCBpdCBtdXN0IGhhdmUgbm8gbWlwICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImxldmVscyBzcGVjaWZpZWQgZXhjZXB0IHplcm8uIik7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIGlmIChsZXZlbCA9PSAwICYmICF0ZXh0dXJlLT5pc01pcG1hcENvbXBsZXRlKCkg
JiYKICAgICAgICAgICAgICAgICBDdWJlVGV4dHVyZUhhc1Vuc3BlY2lmaWVkTGV2ZWwwRmFjZSh0
ZXh0dXJlKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3IoRUdM
X0JBRF9QQVJBTUVURVIsCkBAIC05ODQsMTkgKzEwMDUsNyBAQAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAib2Zmc2V0IGF0IHRoZSBzcGVjaWZpZWQgbGV2ZWwuIik7CiAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIGlmIChsZXZlbCA+IDAgJiYgKCF0ZXh0dXJlLT5pc01pcG1hcENv
bXBsZXRlKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHNp
emVfdD4obGV2ZWwpID49IHRleHR1cmUtPmdldE1pcENvbXBsZXRlTGV2ZWxzKCkpKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwg
InRleHR1cmUgbXVzdCBiZSBjb21wbGV0ZSBpZiBsZXZlbCBpcyBub24temVyby4iKTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGxldmVsID09IDAgJiYgIXRleHR1cmUtPmlzTWlw
bWFwQ29tcGxldGUoKSAmJgotICAgICAgICAgICAgICAgIFRleHR1cmVIYXNOb25aZXJvTWlwTGV2
ZWxzU3BlY2lmaWVkKGNvbnRleHQsIHRleHR1cmUpKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImlmIGxldmVsIGlzIHplcm8gYW5kIHRoZSB0ZXh0dXJlIGlzIGluY29tcGxl
dGUsIGl0IG11c3QgaGF2ZSBubyBtaXAgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
bGV2ZWxzIHNwZWNpZmllZCBleGNlcHQgemVyby4iKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIEFOR0xFX1RSWShWYWxpZGF0ZUNyZWF0ZUltYWdlS0hSTWlwTGV2ZWxDb21tb24oY29udGV4
dCwgdGV4dHVyZSwgbGV2ZWwpKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKIApAQCAtMTA0
MywxMSArMTA1Miw3IEBACiAKIEVycm9yIFZhbGlkYXRlRGVzdHJveUltYWdlS0hSKGNvbnN0IERp
c3BsYXkgKmRpc3BsYXksIGNvbnN0IEltYWdlICppbWFnZSkKIHsKLSAgICBFcnJvciBlcnJvciA9
IFZhbGlkYXRlSW1hZ2UoZGlzcGxheSwgaW1hZ2UpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
Ci0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RSWShWYWxp
ZGF0ZUltYWdlKGRpc3BsYXksIGltYWdlKSk7CiAKICAgICBpZiAoIWRpc3BsYXktPmdldEV4dGVu
c2lvbnMoKS5pbWFnZUJhc2UgJiYgIWRpc3BsYXktPmdldEV4dGVuc2lvbnMoKS5pbWFnZSkKICAg
ICB7CkBAIC0xMTE0LDExICsxMTE5LDcgQEAKIAogRXJyb3IgVmFsaWRhdGVDcmVhdGVTdHJlYW1L
SFIoY29uc3QgRGlzcGxheSAqZGlzcGxheSwgY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJ1dGVz
KQogewotICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVEaXNwbGF5KGRpc3BsYXkpOwotICAgIGlm
IChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQor
ICAgIEFOR0xFX1RSWShWYWxpZGF0ZURpc3BsYXkoZGlzcGxheSkpOwogCiAgICAgY29uc3QgRGlz
cGxheUV4dGVuc2lvbnMgJmRpc3BsYXlFeHRlbnNpb25zID0gZGlzcGxheS0+Z2V0RXh0ZW5zaW9u
cygpOwogICAgIGlmICghZGlzcGxheUV4dGVuc2lvbnMuc3RyZWFtKQpAQCAtMTEzMSwxMSArMTEz
Miw3IEBACiAgICAgICAgIEVHTEF0dHJpYiBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVJdGVyLmZpcnN0
OwogICAgICAgICBFR0xBdHRyaWIgdmFsdWUgICAgID0gYXR0cmlidXRlSXRlci5zZWNvbmQ7CiAK
LSAgICAgICAgZXJyb3IgPSBWYWxpZGF0ZVN0cmVhbUF0dHJpYnV0ZShhdHRyaWJ1dGUsIHZhbHVl
LCBkaXNwbGF5RXh0ZW5zaW9ucyk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBBTkdM
RV9UUlkoVmFsaWRhdGVTdHJlYW1BdHRyaWJ1dGUoYXR0cmlidXRlLCB2YWx1ZSwgZGlzcGxheUV4
dGVuc2lvbnMpKTsKICAgICB9CiAKICAgICByZXR1cm4gRXJyb3IoRUdMX1NVQ0NFU1MpOwpAQCAt
MTE0MywxMiArMTE0MCw3IEBACiAKIEVycm9yIFZhbGlkYXRlRGVzdHJveVN0cmVhbUtIUihjb25z
dCBEaXNwbGF5ICpkaXNwbGF5LCBjb25zdCBTdHJlYW0gKnN0cmVhbSkKIHsKLSAgICBFcnJvciBl
cnJvciA9IFZhbGlkYXRlU3RyZWFtKGRpc3BsYXksIHN0cmVhbSk7Ci0gICAgaWYgKGVycm9yLmlz
RXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Ci0KKyAgICBBTkdM
RV9UUlkoVmFsaWRhdGVTdHJlYW0oZGlzcGxheSwgc3RyZWFtKSk7CiAgICAgcmV0dXJuIEVycm9y
KEVHTF9TVUNDRVNTKTsKIH0KIApAQCAtMTE1NywxMSArMTE0OSw3IEBACiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFR0xpbnQgYXR0cmlidXRlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRUdMaW50IHZhbHVlKQogewotICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVTdHJl
YW0oZGlzcGxheSwgc3RyZWFtKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkoVmFsaWRhdGVTdHJlYW0o
ZGlzcGxheSwgc3RyZWFtKSk7CiAKICAgICBpZiAoc3RyZWFtLT5nZXRTdGF0ZSgpID09IEVHTF9T
VFJFQU1fU1RBVEVfRElTQ09OTkVDVEVEX0tIUikKICAgICB7CkBAIC0xMTc2LDExICsxMTY0LDcg
QEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMZW51bSBhdHRyaWJ1dGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCAqdmFsdWUpCiB7Ci0gICAgRXJyb3IgZXJy
b3IgPSBWYWxpZGF0ZVN0cmVhbShkaXNwbGF5LCBzdHJlYW0pOwotICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFOR0xFX1RS
WShWYWxpZGF0ZVN0cmVhbShkaXNwbGF5LCBzdHJlYW0pKTsKIAogICAgIHN3aXRjaCAoYXR0cmli
dXRlKQogICAgIHsKQEAgLTEyMDUsMTEgKzExODksNyBAQAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFR0xlbnVtIGF0dHJpYnV0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRUdMdWludDY0S0hSICp2YWx1ZSkKIHsKLSAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRl
U3RyZWFtKGRpc3BsYXksIHN0cmVhbSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKFZhbGlkYXRlU3Ry
ZWFtKGRpc3BsYXksIHN0cmVhbSkpOwogCiAgICAgc3dpdGNoIChhdHRyaWJ1dGUpCiAgICAgewpA
QCAtMTIyNywxOCArMTIwNyw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyZWFtICpzdHJlYW0pCiB7Ci0g
ICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZURpc3BsYXkoZGlzcGxheSk7Ci0gICAgaWYgKGVycm9y
LmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5H
TEVfVFJZKFZhbGlkYXRlRGlzcGxheShkaXNwbGF5KSk7CisgICAgQU5HTEVfVFJZKFZhbGlkYXRl
Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KSk7CiAKLSAgICBlcnJvciA9IFZhbGlkYXRlQ29udGV4
dChkaXNwbGF5LCBjb250ZXh0KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KLQogICAgIGNvbnN0IERpc3BsYXlFeHRlbnNpb25z
ICZkaXNwbGF5RXh0ZW5zaW9ucyA9IGRpc3BsYXktPmdldEV4dGVuc2lvbnMoKTsKICAgICBpZiAo
IWRpc3BsYXlFeHRlbnNpb25zLnN0cmVhbUNvbnN1bWVyR0xUZXh0dXJlKQogICAgIHsKQEAgLTEy
NDUsNiArMTIxNiwxMSBAQAogICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9BQ0NFU1MsICJT
dHJlYW0gY29uc3VtZXIgZXh0ZW5zaW9uIG5vdCBhY3RpdmUiKTsKICAgICB9CiAKKyAgICBpZiAo
IWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lZ2xTdHJlYW1Db25zdW1lckV4dGVybmFsKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQUNDRVNTLCAiRUdMIHN0cmVhbSBjb25z
dW1lciBleHRlcm5hbCBHTCBleHRlbnNpb24gbm90IGVuYWJsZWQiKTsKKyAgICB9CisKICAgICBp
ZiAoc3RyZWFtID09IEVHTF9OT19TVFJFQU1fS0hSIHx8ICFkaXNwbGF5LT5pc1ZhbGlkU3RyZWFt
KHN0cmVhbSkpCiAgICAgewogICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9TVFJFQU1fS0hS
LCAiSW52YWxpZCBzdHJlYW0iKTsKQEAgLTEyNTUsNiArMTIzMSwxMyBAQAogICAgICAgICByZXR1
cm4gRXJyb3IoRUdMX0JBRF9TVEFURV9LSFIsICJJbnZhbGlkIHN0cmVhbSBzdGF0ZSIpOwogICAg
IH0KIAorICAgIC8vIExvb2t1cCB0aGUgdGV4dHVyZSBhbmQgZW5zdXJlIGl0IGlzIGNvcnJlY3QK
KyAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRUYXJn
ZXRUZXh0dXJlKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTKTsKKyAgICBpZiAodGV4dHVyZSA9PSBu
dWxscHRyIHx8IHRleHR1cmUtPmdldElkKCkgPT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBF
cnJvcihFR0xfQkFEX0FDQ0VTUywgIk5vIGV4dGVybmFsIHRleHR1cmUgYm91bmQiKTsKKyAgICB9
CisKICAgICByZXR1cm4gRXJyb3IoRUdMX1NVQ0NFU1MpOwogfQogCkBAIC0xMjYyLDE4ICsxMjQ1
LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
U3RyZWFtICpzdHJlYW0pCiB7Ci0gICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZURpc3BsYXkoZGlz
cGxheSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBl
cnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKFZhbGlkYXRlRGlzcGxheShkaXNwbGF5KSk7CiAK
LSAgICBlcnJvciA9IFZhbGlkYXRlQ29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKLSAgICBpZiAo
ZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KLQog
ICAgIGNvbnN0IERpc3BsYXlFeHRlbnNpb25zICZkaXNwbGF5RXh0ZW5zaW9ucyA9IGRpc3BsYXkt
PmdldEV4dGVuc2lvbnMoKTsKICAgICBpZiAoIWRpc3BsYXlFeHRlbnNpb25zLnN0cmVhbUNvbnN1
bWVyR0xUZXh0dXJlKQogICAgIHsKQEAgLTEyODUsNiArMTI1OCwyNyBAQAogICAgICAgICByZXR1
cm4gRXJyb3IoRUdMX0JBRF9TVFJFQU1fS0hSLCAiSW52YWxpZCBzdHJlYW0iKTsKICAgICB9CiAK
KyAgICBpZiAoIWNvbnRleHQpCisgICAgeworICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9B
Q0NFU1MsICJObyBHTCBjb250ZXh0IGN1cnJlbnQgdG8gY2FsbGluZyB0aHJlYWQuIik7CisgICAg
fQorCisgICAgQU5HTEVfVFJZKFZhbGlkYXRlQ29udGV4dChkaXNwbGF5LCBjb250ZXh0KSk7CisK
KyAgICBpZiAoIXN0cmVhbS0+aXNDb25zdW1lckJvdW5kVG9Db250ZXh0KGNvbnRleHQpKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQUNDRVNTLCAiQ3VycmVudCBHTCBjb250
ZXh0IG5vdCBhc3NvY2lhdGVkIHdpdGggc3RyZWFtIGNvbnN1bWVyIik7CisgICAgfQorCisgICAg
aWYgKHN0cmVhbS0+Z2V0Q29uc3VtZXJUeXBlKCkgIT0gU3RyZWFtOjpDb25zdW1lclR5cGU6OkdM
VGV4dHVyZVJHQiAmJgorICAgICAgICBzdHJlYW0tPmdldENvbnN1bWVyVHlwZSgpICE9IFN0cmVh
bTo6Q29uc3VtZXJUeXBlOjpHTFRleHR1cmVZVVYpCisgICAgeworICAgICAgICByZXR1cm4gRXJy
b3IoRUdMX0JBRF9BQ0NFU1MsICJJbnZhbGlkIHN0cmVhbSBjb25zdW1lciB0eXBlIik7CisgICAg
fQorCisgICAgLy8gTm90ZTogdGVjaG5pY2FsbHkgRUdMX1NUUkVBTV9TVEFURV9FTVBUWV9LSFIg
aXMgYSB2YWxpZCBzdGF0ZSB3aGVuIHRoZSB0aW1lb3V0IGlzIG5vbi16ZXJvLgorICAgIC8vIEhv
d2V2ZXIsIHRoZSB0aW1lb3V0IGlzIGVmZmVjdGl2ZWx5IGlnbm9yZWQgc2luY2UgaXQgaGFzIG5v
IHVzZWZ1bCBmdW5jdGlvbmFsaXR5IHdpdGggdGhlCisgICAgLy8gY3VycmVudCBwcm9kdWNlcnMg
dGhhdCBhcmUgaW1wbGVtZW50ZWQsIHNvIHdlIGRvbid0IGFsbG93IHRoYXQgc3RhdGUKICAgICBp
ZiAoc3RyZWFtLT5nZXRTdGF0ZSgpICE9IEVHTF9TVFJFQU1fU1RBVEVfTkVXX0ZSQU1FX0FWQUlM
QUJMRV9LSFIgJiYKICAgICAgICAgc3RyZWFtLT5nZXRTdGF0ZSgpICE9IEVHTF9TVFJFQU1fU1RB
VEVfT0xEX0ZSQU1FX0FWQUlMQUJMRV9LSFIpCiAgICAgewpAQCAtMTI5OCwxOCArMTI5Miw4IEBA
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmVh
bSAqc3RyZWFtKQogewotICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVEaXNwbGF5KGRpc3BsYXkp
OwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7
Ci0gICAgfQorICAgIEFOR0xFX1RSWShWYWxpZGF0ZURpc3BsYXkoZGlzcGxheSkpOwogCi0gICAg
ZXJyb3IgPSBWYWxpZGF0ZUNvbnRleHQoZGlzcGxheSwgY29udGV4dCk7Ci0gICAgaWYgKGVycm9y
LmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Ci0KICAgICBj
b25zdCBEaXNwbGF5RXh0ZW5zaW9ucyAmZGlzcGxheUV4dGVuc2lvbnMgPSBkaXNwbGF5LT5nZXRF
eHRlbnNpb25zKCk7CiAgICAgaWYgKCFkaXNwbGF5RXh0ZW5zaW9ucy5zdHJlYW1Db25zdW1lckdM
VGV4dHVyZSkKICAgICB7CkBAIC0xMzIxLDYgKzEzMDUsMjQgQEAKICAgICAgICAgcmV0dXJuIEVy
cm9yKEVHTF9CQURfU1RSRUFNX0tIUiwgIkludmFsaWQgc3RyZWFtIik7CiAgICAgfQogCisgICAg
aWYgKCFjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQUNDRVNT
LCAiTm8gR0wgY29udGV4dCBjdXJyZW50IHRvIGNhbGxpbmcgdGhyZWFkLiIpOworICAgIH0KKwor
ICAgIEFOR0xFX1RSWShWYWxpZGF0ZUNvbnRleHQoZGlzcGxheSwgY29udGV4dCkpOworCisgICAg
aWYgKCFzdHJlYW0tPmlzQ29uc3VtZXJCb3VuZFRvQ29udGV4dChjb250ZXh0KSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX0FDQ0VTUywgIkN1cnJlbnQgR0wgY29udGV4dCBu
b3QgYXNzb2NpYXRlZCB3aXRoIHN0cmVhbSBjb25zdW1lciIpOworICAgIH0KKworICAgIGlmIChz
dHJlYW0tPmdldENvbnN1bWVyVHlwZSgpICE9IFN0cmVhbTo6Q29uc3VtZXJUeXBlOjpHTFRleHR1
cmVSR0IgJiYKKyAgICAgICAgc3RyZWFtLT5nZXRDb25zdW1lclR5cGUoKSAhPSBTdHJlYW06OkNv
bnN1bWVyVHlwZTo6R0xUZXh0dXJlWVVWKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVycm9yKEVH
TF9CQURfQUNDRVNTLCAiSW52YWxpZCBzdHJlYW0gY29uc3VtZXIgdHlwZSIpOworICAgIH0KKwog
ICAgIGlmIChzdHJlYW0tPmdldFN0YXRlKCkgIT0gRUdMX1NUUkVBTV9TVEFURV9ORVdfRlJBTUVf
QVZBSUxBQkxFX0tIUiAmJgogICAgICAgICBzdHJlYW0tPmdldFN0YXRlKCkgIT0gRUdMX1NUUkVB
TV9TVEFURV9PTERfRlJBTUVfQVZBSUxBQkxFX0tIUikKICAgICB7CkBAIC0xMzM1LDE4ICsxMzM3
LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBTdHJlYW0gKnN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiB7
Ci0gICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZURpc3BsYXkoZGlzcGxheSk7Ci0gICAgaWYgKGVy
cm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAg
QU5HTEVfVFJZKFZhbGlkYXRlRGlzcGxheShkaXNwbGF5KSk7CiAKLSAgICBlcnJvciA9IFZhbGlk
YXRlQ29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQUNDRVNTLCAiSW52YWxpZCBjb250
ZXh0Iik7Ci0gICAgfQotCiAgICAgY29uc3QgRGlzcGxheUV4dGVuc2lvbnMgJmRpc3BsYXlFeHRl
bnNpb25zID0gZGlzcGxheS0+Z2V0RXh0ZW5zaW9ucygpOwogICAgIGlmICghZGlzcGxheUV4dGVu
c2lvbnMuc3RyZWFtQ29uc3VtZXJHTFRleHR1cmUpCiAgICAgewpAQCAtMTM1MywxNiArMTM0NSwz
MyBAQAogICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9BQ0NFU1MsICJTdHJlYW0gY29uc3Vt
ZXIgZXh0ZW5zaW9uIG5vdCBhY3RpdmUiKTsKICAgICB9CiAKKyAgICAvLyBBbHRob3VnaCB0ZWNo
bmljYWxseSBub3QgYSByZXF1aXJlbWVudCBpbiBzcGVjLCB0aGUgY29udGV4dCBuZWVkcyB0byBi
ZSBjaGVja2VkIGZvciBzdXBwb3J0CisgICAgLy8gZm9yIGV4dGVybmFsIHRleHR1cmVzIG9yIGZ1
dHVyZSBsb2dpYyB3aWxsIGNhdXNlIGFzc2VydGF0aW9ucy4gVGhpcyBleHRlbnNpb24gaXMgYWxz
bworICAgIC8vIGVmZmVjdGl2ZWx5IHVzZWxlc3Mgd2l0aG91dCBleHRlcm5hbCB0ZXh0dXJlcy4K
KyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lZ2xTdHJlYW1Db25zdW1lckV4dGVy
bmFsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQUNDRVNTLCAiRUdMIHN0
cmVhbSBjb25zdW1lciBleHRlcm5hbCBHTCBleHRlbnNpb24gbm90IGVuYWJsZWQiKTsKKyAgICB9
CisKICAgICBpZiAoc3RyZWFtID09IEVHTF9OT19TVFJFQU1fS0hSIHx8ICFkaXNwbGF5LT5pc1Zh
bGlkU3RyZWFtKHN0cmVhbSkpCiAgICAgewogICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9T
VFJFQU1fS0hSLCAiSW52YWxpZCBzdHJlYW0iKTsKICAgICB9CiAKKyAgICBpZiAoIWNvbnRleHQp
CisgICAgeworICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9BQ0NFU1MsICJObyBHTCBjb250
ZXh0IGN1cnJlbnQgdG8gY2FsbGluZyB0aHJlYWQuIik7CisgICAgfQorCisgICAgQU5HTEVfVFJZ
KFZhbGlkYXRlQ29udGV4dChkaXNwbGF5LCBjb250ZXh0KSk7CisKICAgICBpZiAoc3RyZWFtLT5n
ZXRTdGF0ZSgpICE9IEVHTF9TVFJFQU1fU1RBVEVfQ1JFQVRFRF9LSFIpCiAgICAgewogICAgICAg
ICByZXR1cm4gRXJyb3IoRUdMX0JBRF9TVEFURV9LSFIsICJJbnZhbGlkIHN0cmVhbSBzdGF0ZSIp
OwogICAgIH0KIAorICAgIGNvbnN0IGdsOjpDYXBzICZnbENhcHMgPSBjb250ZXh0LT5nZXRDYXBz
KCk7CisKICAgICBFR0xBdHRyaWIgY29sb3JCdWZmZXJUeXBlID0gRUdMX1JHQl9CVUZGRVI7CiAg
ICAgRUdMQXR0cmliIHBsYW5lQ291bnQgICAgICA9IC0xOwogICAgIEVHTEF0dHJpYiBwbGFuZVsz
XTsKQEAgLTEzNzgsNyArMTM4Nyw3IEBACiAgICAgICAgIHN3aXRjaCAoYXR0cmlidXRlKQogICAg
ICAgICB7CiAgICAgICAgICAgICBjYXNlIEVHTF9DT0xPUl9CVUZGRVJfVFlQRToKLSAgICAgICAg
ICAgICAgICBpZiAodmFsdWUgIT0gRUdMX1JHQl9CVUZGRVIgfHwgdmFsdWUgIT0gRUdMX1lVVl9C
VUZGRVJfRVhUKQorICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBFR0xfUkdCX0JVRkZFUiAm
JiB2YWx1ZSAhPSBFR0xfWVVWX0JVRkZFUl9FWFQpCiAgICAgICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsICJJbnZhbGlkIGNv
bG9yIGJ1ZmZlciB0eXBlIik7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTM5OCw3ICsxNDA3LDkg
QEAKICAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlID49IEVHTF9ZVVZfUExBTkUwX1RFWFRV
UkVfVU5JVF9OViAmJgogICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgPD0gRUdMX1lVVl9Q
TEFORTJfVEVYVFVSRV9VTklUX05WKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHZhbHVlIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCh2YWx1ZSA8IDAg
fHwKKyAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA+PSBzdGF0aWNfY2FzdDxFR0xBdHRy
aWI+KGdsQ2Fwcy5tYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKSkgJiYKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHZhbHVlICE9IEVHTF9OT05FKQogICAgICAgICAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9BQ0NFU1MsICJJbnZh
bGlkIHRleHR1cmUgdW5pdCIpOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0xNDI0LDYgKzE0
MzUsMTMgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9NQVRDSCwgIlBs
YW5lcyBjYW5ub3QgYmUgc3BlY2lmaWVkIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKwor
ICAgICAgICAvLyBMb29rdXAgdGhlIHRleHR1cmUgYW5kIGVuc3VyZSBpdCBpcyBjb3JyZWN0Cisg
ICAgICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFRh
cmdldFRleHR1cmUoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMpOworICAgICAgICBpZiAodGV4dHVy
ZSA9PSBudWxscHRyIHx8IHRleHR1cmUtPmdldElkKCkgPT0gMCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQUNDRVNTLCAiTm8gZXh0ZXJuYWwgdGV4dHVyZSBi
b3VuZCIpOworICAgICAgICB9CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC0xNDM1LDYgKzE0
NTMsMTYgQEAKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfTUFU
Q0gsICJJbnZhbGlkIFlVViBwbGFuZSBjb3VudCIpOwogICAgICAgICB9CisgICAgICAgIGZvciAo
RUdMQXR0cmliIGkgPSBwbGFuZUNvdW50OyBpIDwgMzsgaSsrKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAocGxhbmVbaV0gIT0gLTEpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIEVycm9yKEVHTF9CQURfTUFUQ0gsICJJbnZhbGlkIHBsYW5lIHNwZWNpZmllZCIpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gU2V0IHRvIGVuc3VyZSBubyB0
ZXh0dXJlIGlzIHJlZmVyZW5jZWQgbW9yZSB0aGFuIG9uY2UKKyAgICAgICAgc3RkOjpzZXQ8Z2w6
OlRleHR1cmUgKj4gdGV4dHVyZVNldDsKICAgICAgICAgZm9yIChFR0xBdHRyaWIgaSA9IDA7IGkg
PCBwbGFuZUNvdW50OyBpKyspCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChwbGFuZVtpXSA9
PSAtMSkKQEAgLTE0NDEsMTIgKzE0NjksMjEgQEAKICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9NQVRDSCwgIk5vdCBhbGwgcGxhbmVzIHNwZWNpZmll
ZCIpOwogICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGZvciAoRUdMQXR0cmliIGkg
PSBwbGFuZUNvdW50OyBpIDwgMzsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAocGxh
bmVbaV0gIT0gLTEpCisgICAgICAgICAgICBpZiAocGxhbmVbaV0gIT0gRUdMX05PTkUpCiAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfTUFUQ0gsICJJ
bnZhbGlkIHBsYW5lIHNwZWNpZmllZCIpOworICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlICp0
ZXh0dXJlID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFNhbXBsZXJUZXh0dXJlKAorICAgICAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHBsYW5lW2ldKSwgR0xfVEVY
VFVSRV9FWFRFUk5BTF9PRVMpOworICAgICAgICAgICAgICAgIGlmICh0ZXh0dXJlID09IG51bGxw
dHIgfHwgdGV4dHVyZS0+Z2V0SWQoKSA9PSAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgRUdMX0JB
RF9BQ0NFU1MsCisgICAgICAgICAgICAgICAgICAgICAgICAiTm8gZXh0ZXJuYWwgdGV4dHVyZSBi
b3VuZCBhdCBvbmUgb3IgbW9yZSBzcGVjaWZpZWQgdGV4dHVyZSB1bml0cyIpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAodGV4dHVyZVNldC5maW5kKHRleHR1cmUpICE9
IHRleHR1cmVTZXQuZW5kKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gRXJyb3IoRUdMX0JBRF9BQ0NFU1MsICJNdWx0aXBsZSBwbGFuZXMgYm91bmQgdG8g
c2FtZSB0ZXh0dXJlIG9iamVjdCIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB0ZXh0dXJlU2V0Lmluc2VydCh0ZXh0dXJlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KQEAgLTE0NTgsNiArMTQ5NSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJlYW0gKnN0cmVhbSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJp
YnV0ZU1hcCAmYXR0cmlicykKIHsKKyAgICBBTkdMRV9UUlkoVmFsaWRhdGVEaXNwbGF5KGRpc3Bs
YXkpKTsKKwogICAgIGNvbnN0IERpc3BsYXlFeHRlbnNpb25zICZkaXNwbGF5RXh0ZW5zaW9ucyA9
IGRpc3BsYXktPmdldEV4dGVuc2lvbnMoKTsKICAgICBpZiAoIWRpc3BsYXlFeHRlbnNpb25zLnN0
cmVhbVByb2R1Y2VyRDNEVGV4dHVyZU5WMTIpCiAgICAgewpAQCAtMTQ2NCwxMSArMTUwMyw3IEBA
CiAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX0FDQ0VTUywgIlN0cmVhbSBwcm9kdWNlciBl
eHRlbnNpb24gbm90IGFjdGl2ZSIpOwogICAgIH0KIAotICAgIEVycm9yIGVycm9yID0gVmFsaWRh
dGVTdHJlYW0oZGlzcGxheSwgc3RyZWFtKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkoVmFsaWRhdGVT
dHJlYW0oZGlzcGxheSwgc3RyZWFtKSk7CiAKICAgICBpZiAoIWF0dHJpYnMuaXNFbXB0eSgpKQog
ICAgIHsKQEAgLTE0ODAsMTQgKzE1MTUsMjIgQEAKICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9C
QURfU1RBVEVfS0hSLCAiU3RyZWFtIG5vdCBpbiBjb25uZWN0aW5nIHN0YXRlIik7CiAgICAgfQog
CisgICAgaWYgKHN0cmVhbS0+Z2V0Q29uc3VtZXJUeXBlKCkgIT0gU3RyZWFtOjpDb25zdW1lclR5
cGU6OkdMVGV4dHVyZVlVViB8fAorICAgICAgICBzdHJlYW0tPmdldFBsYW5lQ291bnQoKSAhPSAy
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfTUFUQ0gsICJJbmNvbXBhdGli
bGUgc3RyZWFtIGNvbnN1bWVyIHR5cGUiKTsKKyAgICB9CisKICAgICByZXR1cm4gRXJyb3IoRUdM
X1NVQ0NFU1MpOwogfQogCiBFcnJvciBWYWxpZGF0ZVN0cmVhbVBvc3REM0RUZXh0dXJlTlYxMkFO
R0xFKGNvbnN0IERpc3BsYXkgKmRpc3BsYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFN0cmVhbSAqc3RyZWFtLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICp0ZXh0dXJlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp0ZXh0dXJlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGVNYXAg
JmF0dHJpYnMpCiB7CisgICAgQU5HTEVfVFJZKFZhbGlkYXRlRGlzcGxheShkaXNwbGF5KSk7CisK
ICAgICBjb25zdCBEaXNwbGF5RXh0ZW5zaW9ucyAmZGlzcGxheUV4dGVuc2lvbnMgPSBkaXNwbGF5
LT5nZXRFeHRlbnNpb25zKCk7CiAgICAgaWYgKCFkaXNwbGF5RXh0ZW5zaW9ucy5zdHJlYW1Qcm9k
dWNlckQzRFRleHR1cmVOVjEyKQogICAgIHsKQEAgLTE0OTQsMTEgKzE1MzcsNyBAQAogICAgICAg
ICByZXR1cm4gRXJyb3IoRUdMX0JBRF9BQ0NFU1MsICJTdHJlYW0gcHJvZHVjZXIgZXh0ZW5zaW9u
IG5vdCBhY3RpdmUiKTsKICAgICB9CiAKLSAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlU3RyZWFt
KGRpc3BsYXksIHN0cmVhbSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKFZhbGlkYXRlU3RyZWFtKGRp
c3BsYXksIHN0cmVhbSkpOwogCiAgICAgZm9yIChhdXRvICZhdHRyaWJ1dGVJdGVyIDogYXR0cmli
cykKICAgICB7CkBAIC0xNTI1LDExICsxNTY0LDY0IEBACiAgICAgICAgIHJldHVybiBFcnJvcihF
R0xfQkFEX1NUQVRFX0tIUiwgIlN0cmVhbSBub3QgZnVsbHkgY29uZmlndXJlZCIpOwogICAgIH0K
IAorICAgIGlmIChzdHJlYW0tPmdldFByb2R1Y2VyVHlwZSgpICE9IFN0cmVhbTo6UHJvZHVjZXJU
eXBlOjpEM0QxMVRleHR1cmVOVjEyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9C
QURfTUFUQ0gsICJJbmNvbXBhdGlibGUgc3RyZWFtIHByb2R1Y2VyIik7CisgICAgfQorCiAgICAg
aWYgKHRleHR1cmUgPT0gbnVsbHB0cikKICAgICB7Ci0gICAgICAgIHJldHVybiBFcnJvcihFR0xf
QkFEX1BBUkFNRVRFUiwgIlRleHR1cmUgbXVzdCBub3QgYmUgbnVsbCIpOworICAgICAgICByZXR1
cm4gZWdsOjpFcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgIlRleHR1cmUgaXMgbnVsbCIpOwogICAg
IH0KIAorICAgIHJldHVybiBzdHJlYW0tPnZhbGlkYXRlRDNEMTFOVjEyVGV4dHVyZSh0ZXh0dXJl
KTsKK30KKworRXJyb3IgVmFsaWRhdGVHZXRTeW5jVmFsdWVzQ0hST01JVU0oY29uc3QgRGlzcGxh
eSAqZGlzcGxheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN1
cmZhY2UgKnN1cmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBFR0x1aW50NjRLSFIgKnVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEVHTHVpbnQ2NEtIUiAqbXNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgRUdMdWludDY0S0hSICpzYmMpCit7CisgICAgQU5HTEVfVFJZKFZhbGlkYXRl
RGlzcGxheShkaXNwbGF5KSk7CisKKyAgICBjb25zdCBEaXNwbGF5RXh0ZW5zaW9ucyAmZGlzcGxh
eUV4dGVuc2lvbnMgPSBkaXNwbGF5LT5nZXRFeHRlbnNpb25zKCk7CisgICAgaWYgKCFkaXNwbGF5
RXh0ZW5zaW9ucy5nZXRTeW5jVmFsdWVzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVycm9yKEVH
TF9CQURfQUNDRVNTLCAiZ2V0U3luY1ZhbHVlcyBleHRlbnNpb24gbm90IGFjdGl2ZSIpOworICAg
IH0KKworICAgIGlmIChkaXNwbGF5LT5pc0RldmljZUxvc3QoKSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBFcnJvcihFR0xfQ09OVEVYVF9MT1NULCAiQ29udGV4dCBpcyBsb3N0LiIpOworICAgIH0K
KworICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIEVycm9yKEVHTF9CQURfU1VSRkFDRSwgImdldFN5bmNWYWx1ZXMgc3VyZmFjZSBjYW5ub3Qg
YmUgRUdMX05PX1NVUkZBQ0UiKTsKKyAgICB9CisKKyAgICBpZiAoIXN1cmZhY2UtPmRpcmVjdENv
bXBvc2l0aW9uKCkpCisgICAgeworICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9TVVJGQUNF
LAorICAgICAgICAgICAgICAgICAgICAgImdldFN5bmNWYWx1ZXMgc3VyZmFjZSByZXF1aXJlcyBE
aXJlY3QgQ29tcG9zaXRpb24gdG8gYmUgZW5hYmxlZCIpOworICAgIH0KKworICAgIGlmICh1c3Qg
PT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfUEFS
QU1FVEVSLCAidXN0IGlzIG51bGwiKTsKKyAgICB9CisKKyAgICBpZiAobXNjID09IG51bGxwdHIp
CisgICAgeworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgIm1z
YyBpcyBudWxsIik7CisgICAgfQorCisgICAgaWYgKHNiYyA9PSBudWxscHRyKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsICJzYmMgaXMgbnVsbCIp
OworICAgIH0KKwogICAgIHJldHVybiBFcnJvcihFR0xfU1VDQ0VTUyk7CiB9Ci19Cit9ICAvLyBu
YW1lc3BhY2UgZ2wKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92
YWxpZGF0aW9uRUdMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3ZhbGlkYXRpb25FR0wuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FR0wuaAkod29ya2luZyBjb3B5
KQpAQCAtOTIsOCArOTIsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0cmlicyk7CiBFcnJvciBW
YWxpZGF0ZVN0cmVhbVBvc3REM0RUZXh0dXJlTlYxMkFOR0xFKGNvbnN0IERpc3BsYXkgKmRpc3Bs
YXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0
cmVhbSAqc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICp0ZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2b2lkICp0ZXh0dXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpOworRXJyb3IgVmFsaWRh
dGVHZXRTeW5jVmFsdWVzQ0hST01JVU0oY29uc3QgRGlzcGxheSAqZGlzcGxheSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN1cmZhY2UgKnN1cmZhY2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFR0x1aW50NjRLSFIgKnVzdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVHTHVpbnQ2NEtIUiAq
bXNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRUdMdWludDY0
S0hSICpzYmMpOwogCiAvLyBPdGhlciB2YWxpZGF0aW9uCiBFcnJvciBWYWxpZGF0ZUNvbXBhdGli
bGVDb25maWdzKGNvbnN0IERpc3BsYXkgKmRpc3BsYXksCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTLmNwcAkocmV2aXNp
b24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlk
YXRpb25FUy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNyw3IEBACiAvLyB2YWxpZGF0aW9u
RVMuaDogVmFsaWRhdGlvbiBmdW5jdGlvbnMgZm9yIGdlbmVyaWMgT3BlbkdMIEVTIGVudHJ5IHBv
aW50IHBhcmFtZXRlcnMKIAogI2luY2x1ZGUgImxpYkFOR0xFL3ZhbGlkYXRpb25FUy5oIgorCiAj
aW5jbHVkZSAibGliQU5HTEUvdmFsaWRhdGlvbkVTMi5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3Zh
bGlkYXRpb25FUzMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Db250ZXh0LmgiCkBAIC0yNSw2ICsy
Niw4IEBACiAjaW5jbHVkZSAiY29tbW9uL21hdGh1dGlsLmgiCiAjaW5jbHVkZSAiY29tbW9uL3V0
aWxpdGllcy5oIgogCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKIG5hbWVzcGFjZSBnbAogewog
Y29uc3QgY2hhciAqZ19FeGNlZWRzTWF4RWxlbWVudEVycm9yTWVzc2FnZSA9ICJFbGVtZW50IHZh
bHVlIGV4Y2VlZHMgbWF4aW11bSBlbGVtZW50IGluZGV4LiI7CkBAIC0zMyw3ICszNiw3IEBACiB7
CiBib29sIFZhbGlkYXRlRHJhd0F0dHJpYnMoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdM
aW50IHByaW1jb3VudCwgR0xpbnQgbWF4VmVydGV4KQogewotICAgIGNvbnN0IGdsOjpTdGF0ZSAm
c3RhdGUgICAgID0gY29udGV4dC0+Z2V0U3RhdGUoKTsKKyAgICBjb25zdCBnbDo6U3RhdGUgJnN0
YXRlICAgICA9IGNvbnRleHQtPmdldEdMU3RhdGUoKTsKICAgICBjb25zdCBnbDo6UHJvZ3JhbSAq
cHJvZ3JhbSA9IHN0YXRlLmdldFByb2dyYW0oKTsKIAogICAgIGNvbnN0IFZlcnRleEFycmF5ICp2
YW8gICAgID0gc3RhdGUuZ2V0VmVydGV4QXJyYXkoKTsKQEAgLTc1LDcgKzc4LDcgQEAKICAgICAg
ICAgICAgICAgICAgICAgLy8gZW5vdWdoIGJhY2tpbmcgZGF0YS4KICAgICAgICAgICAgICAgICAg
ICAgaWYgKGF0dHJpYkRhdGFTaXplICsgYXR0cmliT2Zmc2V0ID4gYnVmZmVyLT5nZXRTaXplKCkp
CiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZlcnRleCBidWZmZXIgaXMg
bm90IGJpZyBlbm91Z2ggZm9yIHRoZSBkcmF3IGNhbGwiKSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC04Niw3ICs4OSw3IEBACiAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgLy8gVGhpcyBpcyBhbiBhcHBsaWNhdGlvbiBlcnJvciB0aGF0IHdvdWxkIG5v
cm1hbGx5IHJlc3VsdCBpbiBhIGNyYXNoLAogICAgICAgICAgICAgICAgIC8vIGJ1dCB3ZSBjYXRj
aCBpdCBhbmQgcmV0dXJuIGFuIGVycm9yCi0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoCisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
CiAgICAgICAgICAgICAgICAgICAgIEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQW4gZW5hYmxlZCB2
ZXJ0ZXggYXJyYXkgaGFzIG5vIGJ1ZmZlciBhbmQgbm8gcG9pbnRlci4iKSk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQpAQCAtOTYsMzYgKzk5LDExMzIgQEAK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorYm9vbCBW
YWxpZFJlYWRQaXhlbHNGb3JtYXRUeXBlKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmcmFtZWJ1ZmZlckNvbXBvbmVudFR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKGZy
YW1lYnVmZmVyQ29tcG9uZW50VHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURf
Tk9STUFMSVpFRDoKKyAgICAgICAgICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogRG9uJ3QgYWNjZXB0
IEJHUkEgaGVyZS4gIFNvbWUgY2hyb21lIGludGVybmFscyBhcHBlYXIgdG8gdHJ5IHRvIHVzZQor
ICAgICAgICAgICAgLy8gUmVhZFBpeGVscyB3aXRoIEJHUkEgZXZlbiBpZiB0aGUgZXh0ZW5zaW9u
IGlzIG5vdCBwcmVzZW50CisgICAgICAgICAgICByZXR1cm4gKGZvcm1hdCA9PSBHTF9SR0JBICYm
IHR5cGUgPT0gR0xfVU5TSUdORURfQllURSkgfHwKKyAgICAgICAgICAgICAgICAgICAoY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLnJlYWRGb3JtYXRCR1JBICYmIGZvcm1hdCA9PSBHTF9CR1JBX0VY
VCAmJgorICAgICAgICAgICAgICAgICAgICB0eXBlID09IEdMX1VOU0lHTkVEX0JZVEUpOwogCi1i
b29sIFZhbGlkQ2FwKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjYXApCisgICAgICAg
IGNhc2UgR0xfU0lHTkVEX05PUk1BTElaRUQ6CisgICAgICAgICAgICByZXR1cm4gKGZvcm1hdCA9
PSBHTF9SR0JBICYmIHR5cGUgPT0gR0xfVU5TSUdORURfQllURSk7CisKKyAgICAgICAgY2FzZSBH
TF9JTlQ6CisgICAgICAgICAgICByZXR1cm4gKGZvcm1hdCA9PSBHTF9SR0JBX0lOVEVHRVIgJiYg
dHlwZSA9PSBHTF9JTlQpOworCisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgorICAgICAg
ICAgICAgcmV0dXJuIChmb3JtYXQgPT0gR0xfUkdCQV9JTlRFR0VSICYmIHR5cGUgPT0gR0xfVU5T
SUdORURfSU5UKTsKKworICAgICAgICBjYXNlIEdMX0ZMT0FUOgorICAgICAgICAgICAgcmV0dXJu
IChmb3JtYXQgPT0gR0xfUkdCQSAmJiB0eXBlID09IEdMX0ZMT0FUKTsKKworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9Cit9CisKK2Jvb2wgVmFsaWRDYXAoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIGNhcCwgYm9vbCBxdWVyeU9ubHkpCiB7CiAgICAgc3dpdGNoIChjYXApCiAgICAgewotICAg
ICAgY2FzZSBHTF9DVUxMX0ZBQ0U6Ci0gICAgICBjYXNlIEdMX1BPTFlHT05fT0ZGU0VUX0ZJTEw6
Ci0gICAgICBjYXNlIEdMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRToKLSAgICAgIGNhc2UgR0xf
U0FNUExFX0NPVkVSQUdFOgotICAgICAgY2FzZSBHTF9TQ0lTU09SX1RFU1Q6Ci0gICAgICBjYXNl
IEdMX1NURU5DSUxfVEVTVDoKLSAgICAgIGNhc2UgR0xfREVQVEhfVEVTVDoKLSAgICAgIGNhc2Ug
R0xfQkxFTkQ6Ci0gICAgICBjYXNlIEdMX0RJVEhFUjoKLSAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIC8vIEVYVF9tdWx0aXNhbXBsZV9jb21wYXRpYmlsaXR5CisgICAgICAgIGNhc2UgR0xf
TVVMVElTQU1QTEVfRVhUOgorICAgICAgICBjYXNlIEdMX1NBTVBMRV9BTFBIQV9UT19PTkVfRVhU
OgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5tdWx0aXNhbXBs
ZUNvbXBhdGliaWxpdHk7CiAKLSAgICAgIGNhc2UgR0xfUFJJTUlUSVZFX1JFU1RBUlRfRklYRURf
SU5ERVg6Ci0gICAgICBjYXNlIEdMX1JBU1RFUklaRVJfRElTQ0FSRDoKLSAgICAgICAgcmV0dXJu
IChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPj0gMyk7CisgICAgICAgIGNhc2UgR0xfQ1VM
TF9GQUNFOgorICAgICAgICBjYXNlIEdMX1BPTFlHT05fT0ZGU0VUX0ZJTEw6CisgICAgICAgIGNh
c2UgR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFOgorICAgICAgICBjYXNlIEdMX1NBTVBMRV9D
T1ZFUkFHRToKKyAgICAgICAgY2FzZSBHTF9TQ0lTU09SX1RFU1Q6CisgICAgICAgIGNhc2UgR0xf
U1RFTkNJTF9URVNUOgorICAgICAgICBjYXNlIEdMX0RFUFRIX1RFU1Q6CisgICAgICAgIGNhc2Ug
R0xfQkxFTkQ6CisgICAgICAgIGNhc2UgR0xfRElUSEVSOgorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICAgIGNhc2UgR0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTOgotICAgICAgY2Fz
ZSBHTF9ERUJVR19PVVRQVVQ6Ci0gICAgICAgICAgcmV0dXJuIGNvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5kZWJ1ZzsKKyAgICAgICAgY2FzZSBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRF
WDoKKyAgICAgICAgY2FzZSBHTF9SQVNURVJJWkVSX0RJU0NBUkQ6CisgICAgICAgICAgICByZXR1
cm4gKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpID49IDMpOwogCi0gICAgICBkZWZh
dWx0OgorICAgICAgICBjYXNlIEdMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9VUzoKKyAgICAgICAg
Y2FzZSBHTF9ERUJVR19PVVRQVVQ6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLmRlYnVnOworCisgICAgICAgIGNhc2UgR0xfQklORF9HRU5FUkFURVNfUkVTT1VS
Q0VfQ0hST01JVU06CisgICAgICAgICAgICByZXR1cm4gcXVlcnlPbmx5ICYmIGNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5iaW5kR2VuZXJhdGVzUmVzb3VyY2U7CisKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgVmFsaWRhdGVSZWFk
UGl4ZWxzQmFzZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x2b2lkICpwaXhlbHMpCit7CisgICAgaWYgKGxlbmd0aCAhPSBudWxscHRy
KQorICAgIHsKKyAgICAgICAgKmxlbmd0aCA9IDA7CisgICAgfQorCisgICAgaWYgKHdpZHRoIDwg
MCB8fCBoZWlnaHQgPCAwKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSwgIndpZHRoIGFuZCBoZWlnaHQgbXVzdCBiZSBwb3NpdGl2ZSIp
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKworICAgIGF1dG8gcmVhZEZyYW1lYnVm
ZmVyID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFJlYWRGcmFtZWJ1ZmZlcigpOworCisgICAg
aWYgKHJlYWRGcmFtZWJ1ZmZlci0+Y2hlY2tTdGF0dXMoY29udGV4dC0+Z2V0Q29udGV4dFN0YXRl
KCkpICE9IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04pKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChyZWFkRnJhbWVidWZmZXItPmlk
KCkgIT0gMCAmJiByZWFkRnJhbWVidWZmZXItPmdldFNhbXBsZXMoY29udGV4dC0+Z2V0Q29udGV4
dFN0YXRlKCkpICE9IDApCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgY29uc3QgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gY29udGV4dC0+Z2V0R0xTdGF0
ZSgpLmdldFJlYWRGcmFtZWJ1ZmZlcigpOworICAgIEFTU0VSVChmcmFtZWJ1ZmZlcik7CisKKyAg
ICBpZiAoZnJhbWVidWZmZXItPmdldFJlYWRCdWZmZXJTdGF0ZSgpID09IEdMX05PTkUpCisgICAg
eworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TiwgIlJlYWQgYnVmZmVyIGlzIEdMX05PTkUiKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKnJlYWRCdWZmZXIgPSBmcmFt
ZWJ1ZmZlci0+Z2V0UmVhZENvbG9yYnVmZmVyKCk7CisgICAgaWYgKCFyZWFkQnVmZmVyKQorICAg
IHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEdMZW51bSBjdXJyZW50
Rm9ybWF0ICAgICAgICAgPSBmcmFtZWJ1ZmZlci0+Z2V0SW1wbGVtZW50YXRpb25Db2xvclJlYWRG
b3JtYXQoKTsKKyAgICBHTGVudW0gY3VycmVudFR5cGUgICAgICAgICAgID0gZnJhbWVidWZmZXIt
PmdldEltcGxlbWVudGF0aW9uQ29sb3JSZWFkVHlwZSgpOworICAgIEdMZW51bSBjdXJyZW50SW50
ZXJuYWxGb3JtYXQgPSByZWFkQnVmZmVyLT5nZXRGb3JtYXQoKS5hc1NpemVkKCk7CisKKyAgICBj
b25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJmludGVybmFsRm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRl
cm5hbEZvcm1hdEluZm8oY3VycmVudEludGVybmFsRm9ybWF0KTsKKyAgICBib29sIHZhbGlkRm9y
bWF0VHlwZUNvbWJpbmF0aW9uID0KKyAgICAgICAgVmFsaWRSZWFkUGl4ZWxzRm9ybWF0VHlwZShj
b250ZXh0LCBpbnRlcm5hbEZvcm1hdEluZm8uY29tcG9uZW50VHlwZSwgZm9ybWF0LCB0eXBlKTsK
KworICAgIGlmICghKGN1cnJlbnRGb3JtYXQgPT0gZm9ybWF0ICYmIGN1cnJlbnRUeXBlID09IHR5
cGUpICYmICF2YWxpZEZvcm1hdFR5cGVDb21iaW5hdGlvbikKKyAgICB7CisgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBDaGVjayBmb3IgcGl4ZWwgcGFjayBidWZmZXIg
cmVsYXRlZCBBUEkgZXJyb3JzCisgICAgZ2w6OkJ1ZmZlciAqcGl4ZWxQYWNrQnVmZmVyID0gY29u
dGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFRhcmdldEJ1ZmZlcihHTF9QSVhFTF9QQUNLX0JVRkZFUik7
CisgICAgaWYgKHBpeGVsUGFja0J1ZmZlciAhPSBudWxscHRyICYmIHBpeGVsUGFja0J1ZmZlci0+
aXNNYXBwZWQoKSkKKyAgICB7CisgICAgICAgIC8vIC4uLnRoZSBidWZmZXIgb2JqZWN0J3MgZGF0
YSBzdG9yZSBpcyBjdXJyZW50bHkgbWFwcGVkLgorICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIlBpeGVsIHBhY2sgYnVmZmVyIGlzIG1hcHBl
ZC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyAuLiAgdGhlIGRh
dGEgd291bGQgYmUgcGFja2VkIHRvIHRoZSBidWZmZXIgb2JqZWN0IHN1Y2ggdGhhdCB0aGUgbWVt
b3J5IHdyaXRlcyByZXF1aXJlZAorICAgIC8vIHdvdWxkIGV4Y2VlZCB0aGUgZGF0YSBzdG9yZSBz
aXplLgorICAgIEdMZW51bSBzaXplZEludGVybmFsRm9ybWF0ICAgICAgID0gR2V0U2l6ZWRJbnRl
cm5hbEZvcm1hdChmb3JtYXQsIHR5cGUpOworICAgIGNvbnN0IEludGVybmFsRm9ybWF0ICZmb3Jt
YXRJbmZvID0gR2V0SW50ZXJuYWxGb3JtYXRJbmZvKHNpemVkSW50ZXJuYWxGb3JtYXQpOworICAg
IGNvbnN0IGdsOjpFeHRlbnRzIHNpemUod2lkdGgsIGhlaWdodCwgMSk7CisgICAgY29uc3QgYXV0
byAmcGFjayA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRQYWNrU3RhdGUoKTsKKworICAgIGF1
dG8gZW5kQnl0ZU9yRXJyID0gZm9ybWF0SW5mby5jb21wdXRlUGFja1VucGFja0VuZEJ5dGUodHlw
ZSwgc2l6ZSwgcGFjaywgZmFsc2UpOworICAgIGlmIChlbmRCeXRlT3JFcnIuaXNFcnJvcigpKQor
ICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoZW5kQnl0ZU9yRXJyLmdldEVycm9y
KCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc2l6ZV90IGVuZEJ5dGUg
PSBlbmRCeXRlT3JFcnIuZ2V0UmVzdWx0KCk7CisgICAgaWYgKGJ1ZlNpemUgPj0gMCkKKyAgICB7
CisKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4oYnVmU2l6ZSkgPCBlbmRCeXRlKQor
ICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAg
ICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgImJ1ZlNpemUgbXVzdCBiZSBhdCBsZWFz
dCAldSBieXRlcy4iLCBlbmRCeXRlKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBpZiAocGl4ZWxQYWNrQnVmZmVyICE9IG51bGxwdHIpCisgICAg
eworICAgICAgICBDaGVja2VkTnVtZXJpYzxzaXplX3Q+IGNoZWNrZWRFbmRCeXRlKGVuZEJ5dGUp
OworICAgICAgICBDaGVja2VkTnVtZXJpYzxzaXplX3Q+IGNoZWNrZWRPZmZzZXQocmVpbnRlcnBy
ZXRfY2FzdDxzaXplX3Q+KHBpeGVscykpOworICAgICAgICBjaGVja2VkRW5kQnl0ZSArPSBjaGVj
a2VkT2Zmc2V0OworCisgICAgICAgIGlmIChjaGVja2VkRW5kQnl0ZS5WYWx1ZU9yRGllKCkgPiBz
dGF0aWNfY2FzdDxzaXplX3Q+KHBpeGVsUGFja0J1ZmZlci0+Z2V0U2l6ZSgpKSkKKyAgICAgICAg
eworICAgICAgICAgICAgLy8gT3ZlcmZsb3cgcGFzdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIKKyAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgICAgIEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLCAiV3JpdGVzIHdvdWxkIG92ZXJmbG93IHRoZSBwaXhlbCBwYWNr
IGJ1ZmZlci4iKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBpZiAobGVuZ3RoICE9IG51bGxwdHIpCisgICAgeworICAgICAgICBpZiAoZW5kQnl0
ZSA+IHN0YXRpY19jYXN0PHNpemVfdD4oc3RkOjpudW1lcmljX2xpbWl0czxHTHNpemVpPjo6bWF4
KCkpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAg
ICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgImxlbmd0aCB3b3VsZCBvdmVy
ZmxvdyBHTHNpemVpLiIsIGVuZEJ5dGUpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorCisgICAgICAgICpsZW5ndGggPSBzdGF0aWNfY2FzdDxHTHNpemVpPihlbmRCeXRl
KTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBWYWxpZGF0ZUdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcml2QmFzZShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCkKK3sKKyAg
ICBpZiAobGVuZ3RoKQorICAgIHsKKyAgICAgICAgKmxlbmd0aCA9IDA7CisgICAgfQorCisgICAg
aWYgKHRhcmdldCAhPSBHTF9SRU5ERVJCVUZGRVIpCisgICAgeworICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIHRhcmdldC4iKSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBSZW5kZXJidWZmZXIgKnJlbmRlcmJ1
ZmZlciA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRDdXJyZW50UmVuZGVyYnVmZmVyKCk7Cisg
ICAgaWYgKHJlbmRlcmJ1ZmZlciA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJObyByZW5kZXJidWZmZXIg
Ym91bmQuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3dpdGNoIChw
bmFtZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX1dJRFRIOgorICAgICAg
ICBjYXNlIEdMX1JFTkRFUkJVRkZFUl9IRUlHSFQ6CisgICAgICAgIGNhc2UgR0xfUkVOREVSQlVG
RkVSX0lOVEVSTkFMX0ZPUk1BVDoKKyAgICAgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVJfUkVEX1NJ
WkU6CisgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0dSRUVOX1NJWkU6CisgICAgICAgIGNh
c2UgR0xfUkVOREVSQlVGRkVSX0JMVUVfU0laRToKKyAgICAgICAgY2FzZSBHTF9SRU5ERVJCVUZG
RVJfQUxQSEFfU0laRToKKyAgICAgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVJfREVQVEhfU0laRToK
KyAgICAgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFOgorICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVJfU0FNUExFU19BTkdMRToKKyAg
ICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmZyYW1lYnVmZmVyTXVsdGlz
YW1wbGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoCisgICAgICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkdMX0FOR0xF
X2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIGlzIG5vdCBlbmFibGVkLiIpKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9FTlVNLCAiVW5rbm93biBwbmFtZS4iKSk7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgaWYgKGxlbmd0aCkKKyAgICB7CisgICAgICAgICpsZW5ndGgg
PSAxOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFNoYWRl
cml2QmFzZShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgc2hhZGVyLCBHTGVudW0gcG5hbWUsIEdM
c2l6ZWkgKmxlbmd0aCkKK3sKKyAgICBpZiAobGVuZ3RoKQorICAgIHsKKyAgICAgICAgKmxlbmd0
aCA9IDA7CisgICAgfQorCisgICAgaWYgKEdldFZhbGlkU2hhZGVyKGNvbnRleHQsIHNoYWRlcikg
PT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBz
d2l0Y2ggKHBuYW1lKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9TSEFERVJfVFlQRToKKyAgICAg
ICAgY2FzZSBHTF9ERUxFVEVfU1RBVFVTOgorICAgICAgICBjYXNlIEdMX0NPTVBJTEVfU1RBVFVT
OgorICAgICAgICBjYXNlIEdMX0lORk9fTE9HX0xFTkdUSDoKKyAgICAgICAgY2FzZSBHTF9TSEFE
RVJfU09VUkNFX0xFTkdUSDoKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xf
VFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRToKKyAgICAgICAgICAgIGlmICgh
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAg
ICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hh
ZGVyX3NvdXJjZSBpcyBub3QgZW5hYmxlZC4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSwgIlVua25vd24gcG5hbWUuIikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIGlmIChsZW5ndGgpCisgICAgeworICAgICAgICAqbGVuZ3RoID0gMTsKKyAgICB9Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJCYXNlKENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xzaXplaSAqbGVu
Z3RoKQoreworICAgIGlmIChsZW5ndGgpCisgICAgeworICAgICAgICAqbGVuZ3RoID0gMDsKKyAg
ICB9CisKKyAgICBpZiAoIVZhbGlkVGV4dHVyZVRhcmdldChjb250ZXh0LCB0YXJnZXQpICYmICFW
YWxpZFRleHR1cmVFeHRlcm5hbFRhcmdldChjb250ZXh0LCB0YXJnZXQpKQorICAgIHsKKyAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCB0
ZXh0dXJlIHRhcmdldCIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlm
IChjb250ZXh0LT5nZXRUYXJnZXRUZXh0dXJlKHRhcmdldCkgPT0gbnVsbHB0cikKKyAgICB7Cisg
ICAgICAgIC8vIFNob3VsZCBvbmx5IGJlIHBvc3NpYmxlIGZvciBleHRlcm5hbCB0ZXh0dXJlcwor
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJObyB0
ZXh0dXJlIGJvdW5kLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN3
aXRjaCAocG5hbWUpCisgICAgeworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUjoK
KyAgICAgICAgY2FzZSBHTF9URVhUVVJFX01JTl9GSUxURVI6CisgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV9XUkFQX1M6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1Q6CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfVVNBR0VfQU5HTEU6CisgICAgICAg
ICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlVXNhZ2UpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAg
ICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkdMX0FOR0xFX3RleHR1cmVfdXNhZ2Ug
aXMgbm90IGVuYWJsZWQuIikpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9N
QVhfQU5JU09UUk9QWV9FWFQ6CisgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS50ZXh0dXJlRmlsdGVyQW5pc290cm9waWMpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEVycm9yKEdM
X0lOVkFMSURfRU5VTSwgIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyBpcyBub3Qg
ZW5hYmxlZC4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0lNTVVUQUJM
RV9GT1JNQVQ6CisgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9u
KCkgPCAzICYmICFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZVN0b3JhZ2UpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAg
ICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkdMX0VYVF90ZXh0dXJlX3N0b3Jh
Z2UgaXMgbm90IGVuYWJsZWQuIikpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfVEVYVFVS
RV9XUkFQX1I6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9JTU1VVEFCTEVfTEVWRUxTOgorICAg
ICAgICBjYXNlIEdMX1RFWFRVUkVfU1dJWlpMRV9SOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVf
U1dJWlpMRV9HOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfU1dJWlpMRV9COgorICAgICAgICBj
YXNlIEdMX1RFWFRVUkVfU1dJWlpMRV9BOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQkFTRV9M
RVZFTDoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9MRVZFTDoKKyAgICAgICAgY2FzZSBH
TF9URVhUVVJFX01JTl9MT0Q6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfTE9EOgorICAg
ICAgICBjYXNlIEdMX1RFWFRVUkVfQ09NUEFSRV9NT0RFOgorICAgICAgICBjYXNlIEdMX1RFWFRV
UkVfQ09NUEFSRV9GVU5DOgorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9y
VmVyc2lvbigpIDwgMykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJwbmFtZSByZXF1aXJlcyBPcGVuR0wg
RVMgMy4wLiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiVW5rbm93biBwbmFtZS4i
KSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGxlbmd0aCkK
KyAgICB7CisgICAgICAgICpsZW5ndGggPSAxOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFBhcmFtVHlwZT4KK2Jvb2wgVmFsaWRhdGVUZXh0dXJlV3Jh
cE1vZGVWYWx1ZShDb250ZXh0ICpjb250ZXh0LCBQYXJhbVR5cGUgKnBhcmFtcywgYm9vbCBpc0V4
dGVybmFsVGV4dHVyZVRhcmdldCkKK3sKKyAgICBzd2l0Y2ggKENvbnZlcnRUb0dMZW51bShwYXJh
bXNbMF0pKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9DTEFNUF9UT19FREdFOgorICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9SRVBFQVQ6CisgICAgICAgIGNhc2UgR0xfTUlS
Uk9SRURfUkVQRUFUOgorICAgICAgICAgICAgaWYgKGlzRXh0ZXJuYWxUZXh0dXJlVGFyZ2V0KQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIE9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwg
c3BlY2lmaWVzIHRoaXMgZXJyb3IuCisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEdMX0lOVkFMSURfRU5VTSwgImV4dGVybmFs
IHRleHR1cmVzIG9ubHkgc3VwcG9ydCBDTEFNUF9UT19FREdFIHdyYXAgbW9kZSIpKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiVW5rbm93biBwYXJhbSB2YWx1ZS4iKSk7CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBQYXJhbVR5cGU+Citib29sIFZhbGlkYXRlVGV4dHVyZU1pbkZpbHRlclZh
bHVlKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBhcmFtVHlwZSAqcGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGlzRXh0ZXJuYWxUZXh0dXJlVGFyZ2V0KQoreworICAgIHN3aXRjaCAoQ29udmVydFRvR0xl
bnVtKHBhcmFtc1swXSkpCisgICAgeworICAgICAgICBjYXNlIEdMX05FQVJFU1Q6CisgICAgICAg
IGNhc2UgR0xfTElORUFSOgorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9O
RUFSRVNUX01JUE1BUF9ORUFSRVNUOgorICAgICAgICBjYXNlIEdMX0xJTkVBUl9NSVBNQVBfTkVB
UkVTVDoKKyAgICAgICAgY2FzZSBHTF9ORUFSRVNUX01JUE1BUF9MSU5FQVI6CisgICAgICAgIGNh
c2UgR0xfTElORUFSX01JUE1BUF9MSU5FQVI6CisgICAgICAgICAgICBpZiAoaXNFeHRlcm5hbFRl
eHR1cmVUYXJnZXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gT0VTX0VHTF9p
bWFnZV9leHRlcm5hbCBzcGVjaWZpZXMgdGhpcyBlcnJvci4KKyAgICAgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9F
TlVNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiZXh0ZXJuYWwgdGV4dHVyZXMgb25seSBz
dXBwb3J0IE5FQVJFU1QgYW5kIExJTkVBUiBmaWx0ZXJpbmciKSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfRU5VTSwgIlVua25vd24gcGFyYW0gdmFsdWUuIikpOworICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgUGFyYW1UeXBlPgorYm9vbCBWYWxpZGF0ZVRleHR1cmVNYWdGaWx0ZXJWYWx1ZShDb250ZXh0
ICpjb250ZXh0LCBQYXJhbVR5cGUgKnBhcmFtcykKK3sKKyAgICBzd2l0Y2ggKENvbnZlcnRUb0dM
ZW51bShwYXJhbXNbMF0pKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9ORUFSRVNUOgorICAgICAg
ICBjYXNlIEdMX0xJTkVBUjoKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0s
ICJVbmtub3duIHBhcmFtIHZhbHVlLiIpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFBhcmFtVHlw
ZT4KK2Jvb2wgVmFsaWRhdGVUZXh0dXJlQ29tcGFyZU1vZGVWYWx1ZShDb250ZXh0ICpjb250ZXh0
LCBQYXJhbVR5cGUgKnBhcmFtcykKK3sKKyAgICAvLyBBY2NlcHRhYmxlIG1vZGUgcGFyYW1ldGVy
cyBmcm9tIEdMRVMgMy4wLjIgc3BlYywgdGFibGUgMy4xNworICAgIHN3aXRjaCAoQ29udmVydFRv
R0xlbnVtKHBhcmFtc1swXSkpCisgICAgeworICAgICAgICBjYXNlIEdMX05PTkU6CisgICAgICAg
IGNhc2UgR0xfQ09NUEFSRV9SRUZfVE9fVEVYVFVSRToKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX0VOVU0sICJVbmtub3duIHBhcmFtIHZhbHVlLiIpKTsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIFBhcmFtVHlwZT4KK2Jvb2wgVmFsaWRhdGVUZXh0dXJlQ29tcGFyZUZ1bmNWYWx1ZShD
b250ZXh0ICpjb250ZXh0LCBQYXJhbVR5cGUgKnBhcmFtcykKK3sKKyAgICAvLyBBY2NlcHRhYmxl
IGZ1bmN0aW9uIHBhcmFtZXRlcnMgZnJvbSBHTEVTIDMuMC4yIHNwZWMsIHRhYmxlIDMuMTcKKyAg
ICBzd2l0Y2ggKENvbnZlcnRUb0dMZW51bShwYXJhbXNbMF0pKQorICAgIHsKKyAgICAgICAgY2Fz
ZSBHTF9MRVFVQUw6CisgICAgICAgIGNhc2UgR0xfR0VRVUFMOgorICAgICAgICBjYXNlIEdMX0xF
U1M6CisgICAgICAgIGNhc2UgR0xfR1JFQVRFUjoKKyAgICAgICAgY2FzZSBHTF9FUVVBTDoKKyAg
ICAgICAgY2FzZSBHTF9OT1RFUVVBTDoKKyAgICAgICAgY2FzZSBHTF9BTFdBWVM6CisgICAgICAg
IGNhc2UgR0xfTkVWRVI6CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAi
VW5rbm93biBwYXJhbSB2YWx1ZS4iKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQYXJhbVR5cGU+
Citib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVyQmFzZShDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtVHlw
ZSAqcGFyYW1zKQoreworICAgIGlmICghVmFsaWRUZXh0dXJlVGFyZ2V0KGNvbnRleHQsIHRhcmdl
dCkgJiYgIVZhbGlkVGV4dHVyZUV4dGVybmFsVGFyZ2V0KGNvbnRleHQsIHRhcmdldCkpCisgICAg
eworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJ
bnZhbGlkIHRleHR1cmUgdGFyZ2V0IikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgaWYgKGNvbnRleHQtPmdldFRhcmdldFRleHR1cmUodGFyZ2V0KSA9PSBudWxscHRyKQor
ICAgIHsKKyAgICAgICAgLy8gU2hvdWxkIG9ubHkgYmUgcG9zc2libGUgZm9yIGV4dGVybmFsIHRl
eHR1cmVzCisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSwgIk5vIHRleHR1cmUgYm91bmQuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgY29uc3QgR0xzaXplaSBtaW5CdWZTaXplID0gMTsKKyAgICBpZiAoYnVmU2l6ZSA+PSAw
ICYmIGJ1ZlNpemUgPCBtaW5CdWZTaXplKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgImJ1ZlNpemUg
bXVzdCBiZSBhdCBsZWFzdCAlaS4iLCBtaW5CdWZTaXplKSk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9U
RVhUVVJFX1dSQVBfUjoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX1NXSVpaTEVfUjoKKyAgICAg
ICAgY2FzZSBHTF9URVhUVVJFX1NXSVpaTEVfRzoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX1NX
SVpaTEVfQjoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX1NXSVpaTEVfQToKKyAgICAgICAgY2Fz
ZSBHTF9URVhUVVJFX0JBU0VfTEVWRUw6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfTEVW
RUw6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX01PREU6CisgICAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9DT01QQVJFX0ZVTkM6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NSU5fTE9E
OgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUFYX0xPRDoKKyAgICAgICAgICAgIGlmIChjb250
ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAicG5h
bWUgcmVxdWlyZXMgT3BlbkdMIEVTIDMuMC4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHRhcmdldCA9PSBHTF9URVhUVVJF
X0VYVEVSTkFMX09FUyAmJgorICAgICAgICAgICAgICAgICFjb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuZWdsSW1hZ2VFeHRlcm5hbEVzc2wzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRVMzIHRleHR1cmUgcGFyYW1ldGVycyBh
cmUgbm90IGF2YWlsYWJsZSB3aXRob3V0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbF9lc3NsMy4iKSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAg
IHN3aXRjaCAocG5hbWUpCisgICAgeworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9TOgor
ICAgICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9UOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVf
V1JBUF9SOgorICAgICAgICAgICAgaWYgKCFWYWxpZGF0ZVRleHR1cmVXcmFwTW9kZVZhbHVlKGNv
bnRleHQsIHBhcmFtcywgdGFyZ2V0ID09IEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTKSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUjoK
KyAgICAgICAgICAgIGlmICghVmFsaWRhdGVUZXh0dXJlTWluRmlsdGVyVmFsdWUoY29udGV4dCwg
cGFyYW1zLCB0YXJnZXQgPT0gR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMpKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQUdfRklMVEVSOgorICAgICAg
ICAgICAgaWYgKCFWYWxpZGF0ZVRleHR1cmVNYWdGaWx0ZXJWYWx1ZShjb250ZXh0LCBwYXJhbXMp
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9VU0FH
RV9BTkdMRToKKyAgICAgICAgICAgIHN3aXRjaCAoQ29udmVydFRvR0xlbnVtKHBhcmFtc1swXSkp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9OT05FOgorICAgICAgICAg
ICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9BTkdMRToKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJVbmtu
b3duIHBhcmFtIHZhbHVlLiIpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9URVhU
VVJFX01BWF9BTklTT1RST1BZX0VYVDoKKyAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYykKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgRXJy
b3IoR0xfSU5WQUxJRF9FTlVNLCAiR0xfRVhUX3RleHR1cmVfYW5pc290cm9waWMgaXMgbm90IGVu
YWJsZWQuIikpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gd2UgYXNzdW1lIHRoZSBwYXJhbWV0ZXIgcGFzc2VkIHRvIHRoaXMg
dmFsaWRhdGlvbiBtZXRob2QgaXMgdHJ1bmNhdGVkLCBub3Qgcm91bmRlZAorICAgICAgICAgICAg
aWYgKHBhcmFtc1swXSA8IDEpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIk1heCBhbmlzb3Ryb3B5IG11
c3QgYmUgYXQgbGVhc3QgMS4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9URVhUVVJF
X01JTl9MT0Q6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfTE9EOgorICAgICAgICAgICAg
Ly8gYW55IHZhbHVlIGlzIHBlcm1pc3NpYmxlCisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBjYXNlIEdMX1RFWFRVUkVfQ09NUEFSRV9NT0RFOgorICAgICAgICAgICAgaWYgKCFWYWxpZGF0
ZVRleHR1cmVDb21wYXJlTW9kZVZhbHVlKGNvbnRleHQsIHBhcmFtcykpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQzoKKyAgICAg
ICAgICAgIGlmICghVmFsaWRhdGVUZXh0dXJlQ29tcGFyZUZ1bmNWYWx1ZShjb250ZXh0LCBwYXJh
bXMpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9T
V0laWkxFX1I6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9TV0laWkxFX0c6CisgICAgICAgIGNh
c2UgR0xfVEVYVFVSRV9TV0laWkxFX0I6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9TV0laWkxF
X0E6CisgICAgICAgICAgICBzd2l0Y2ggKENvbnZlcnRUb0dMZW51bShwYXJhbXNbMF0pKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgR0xfUkVEOgorICAgICAgICAgICAgICAg
IGNhc2UgR0xfR1JFRU46CisgICAgICAgICAgICAgICAgY2FzZSBHTF9CTFVFOgorICAgICAgICAg
ICAgICAgIGNhc2UgR0xfQUxQSEE6CisgICAgICAgICAgICAgICAgY2FzZSBHTF9aRVJPOgorICAg
ICAgICAgICAgICAgIGNhc2UgR0xfT05FOgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIlVua25vd24gcGFyYW0gdmFsdWUuIikp
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQkFTRV9MRVZFTDoKKyAg
ICAgICAgICAgIGlmIChwYXJhbXNbMF0gPCAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJCYXNlIGxl
dmVsIG11c3QgYmUgYXQgbGVhc3QgMC4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHRhcmdldCA9PSBHTF9URVhUVVJFX0VY
VEVSTkFMX09FUyAmJiBzdGF0aWNfY2FzdDxHTHVpbnQ+KHBhcmFtc1swXSkgIT0gMCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAg
ICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJCYXNlIGxldmVsIG11c3Qg
YmUgMCBmb3IgZXh0ZXJuYWwgdGV4dHVyZXMuIikpOworICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9NQVhfTEVWRUw6CisgICAgICAgICAgICBpZiAocGFyYW1zWzBdIDwgMCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX1ZBTFVFLCAiTWF4IGxldmVsIG11c3QgYmUgYXQgbGVhc3QgMC4iKSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIlVua25vd24gcG5hbWUuIikpOworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgUGFyYW1UeXBlPgorYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJCYXNlKENv
bnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHNhbXBsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbVR5cGUgKnBhcmFtcykKK3sKKyAg
ICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQorICAgIHsKKyAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgIkNvbnRleHQgZG9lcyBub3Qgc3VwcG9ydCBPcGVuR0wgRVMgMy4wLiIpKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghY29udGV4dC0+aXNTYW1wbGVy
KHNhbXBsZXIpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sICJTYW1wbGVyIGlzIG5vdCB2YWxpZC4iKSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBjb25zdCBHTHNpemVpIG1pbkJ1ZlNpemUgPSAxOwor
ICAgIGlmIChidWZTaXplID49IDAgJiYgYnVmU2l6ZSA8IG1pbkJ1ZlNpemUpCisgICAgeworICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OLCAiYnVmU2l6ZSBtdXN0IGJlIGF0IGxlYXN0ICVpLiIsIG1pbkJ1ZlNpemUpKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN3aXRjaCAocG5hbWUpCisgICAg
eworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9TOgorICAgICAgICBjYXNlIEdMX1RFWFRV
UkVfV1JBUF9UOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9SOgorICAgICAgICAgICAg
aWYgKCFWYWxpZGF0ZVRleHR1cmVXcmFwTW9kZVZhbHVlKGNvbnRleHQsIHBhcmFtcywgZmFsc2Up
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NSU5f
RklMVEVSOgorICAgICAgICAgICAgaWYgKCFWYWxpZGF0ZVRleHR1cmVNaW5GaWx0ZXJWYWx1ZShj
b250ZXh0LCBwYXJhbXMsIGZhbHNlKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBjYXNlIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUjoKKyAgICAgICAgICAgIGlmICghVmFsaWRhdGVU
ZXh0dXJlTWFnRmlsdGVyVmFsdWUoY29udGV4dCwgcGFyYW1zKSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUlOX0xPRDoKKyAgICAgICAgY2FzZSBH
TF9URVhUVVJFX01BWF9MT0Q6CisgICAgICAgICAgICAvLyBhbnkgdmFsdWUgaXMgcGVybWlzc2li
bGUKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DT01QQVJF
X01PREU6CisgICAgICAgICAgICBpZiAoIVZhbGlkYXRlVGV4dHVyZUNvbXBhcmVNb2RlVmFsdWUo
Y29udGV4dCwgcGFyYW1zKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNl
IEdMX1RFWFRVUkVfQ09NUEFSRV9GVU5DOgorICAgICAgICAgICAgaWYgKCFWYWxpZGF0ZVRleHR1
cmVDb21wYXJlRnVuY1ZhbHVlKGNvbnRleHQsIHBhcmFtcykpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIlVua25vd24gcG5hbWUuIikpOworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlk
YXRlR2V0U2FtcGxlclBhcmFtZXRlckJhc2UoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc2FtcGxlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoKQoreworICAgIGlmIChsZW5ndGgpCisg
ICAgeworICAgICAgICAqbGVuZ3RoID0gMDsKKyAgICB9CisKKyAgICBpZiAoY29udGV4dC0+Z2V0
Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkNvbnRleHQg
ZG9lcyBub3Qgc3VwcG9ydCBPcGVuR0wgRVMgMy4wLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIGlmICghY29udGV4dC0+aXNTYW1wbGVyKHNhbXBsZXIpKQorICAgIHsK
KyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04s
ICJTYW1wbGVyIGlzIG5vdCB2YWxpZC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX1dS
QVBfUzoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX1dSQVBfVDoKKyAgICAgICAgY2FzZSBHTF9U
RVhUVVJFX1dSQVBfUjoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX01JTl9GSUxURVI6CisgICAg
ICAgIGNhc2UgR0xfVEVYVFVSRV9NQUdfRklMVEVSOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVf
TUlOX0xPRDoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9MT0Q6CisgICAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9DT01QQVJFX01PREU6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DT01QQVJF
X0ZVTkM6CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiVW5rbm93biBw
bmFtZS4iKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGxl
bmd0aCkKKyAgICB7CisgICAgICAgICpsZW5ndGggPSAxOworICAgIH0KKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYkJhc2UoQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgcG9pbnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgcHVyZUludGVnZXJFbnRyeVBvaW50KQoreworICAgIGlmIChsZW5ndGgpCisgICAg
eworICAgICAgICAqbGVuZ3RoID0gMDsKKyAgICB9CisKKyAgICBpZiAocHVyZUludGVnZXJFbnRy
eVBvaW50ICYmIGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKKyAgICB7Cisg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04sICJDb250ZXh0IGRvZXMgbm90IHN1cHBvcnQgT3BlbkdMIEVTIDMuMC4iKSk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoaW5kZXggPj0gY29udGV4
dC0+Z2V0Q2FwcygpLm1heFZlcnRleEF0dHJpYnV0ZXMpCisgICAgeworICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcigKKyAgICAgICAgICAgIEdMX0lOVkFMSURfVkFMVUUsICJpbmRl
eCBtdXN0IGJlIGxlc3MgdGhhbiB0aGUgdmFsdWUgb2YgR0xfTUFYX1ZFUlRFWF9BVFRSSUJVVEVT
LiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChwb2ludGVyKQor
ICAgIHsKKyAgICAgICAgaWYgKHBuYW1lICE9IEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfUE9JTlRF
UikKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9FTlVNLCAiVW5rbm93biBwbmFtZS4iKSk7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgc3dpdGNoIChw
bmFtZSkKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZ
X0VOQUJMRUQ6CisgICAgICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRToK
KyAgICAgICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREU6CisgICAgICAg
ICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRToKKyAgICAgICAgICAgIGNhc2Ug
R0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEOgorICAgICAgICAgICAgY2FzZSBHTF9W
RVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HOgorICAgICAgICAgICAgY2FzZSBHTF9D
VVJSRU5UX1ZFUlRFWF9BVFRSSUI6CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJU09SOgorICAgICAgICAgICAgICAg
IHN0YXRpY19hc3NlcnQoCisgICAgICAgICAgICAgICAgICAgIEdMX1ZFUlRFWF9BVFRSSUJfQVJS
QVlfRElWSVNPUiA9PSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX0RJVklTT1JfQU5HTEUsCisgICAg
ICAgICAgICAgICAgICAgICJBTkdMRSBleHRlbnNpb24gZW51bXMgbm90IGVxdWFsIHRvIEdMIGVu
dW1zLiIpOworICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNp
b24oKSA8IDMgJiYKKyAgICAgICAgICAgICAgICAgICAgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5pbnN0YW5jZWRBcnJheXMpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHTF9WRVJURVhfQVRUUklCX0FS
UkFZX0RJVklTT1IgcmVxdWlyZXMgT3BlbkdMIEVTICIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIjMuMCBvciBHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlz
LiIpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBHTF9WRVJURVhf
QVRUUklCX0FSUkFZX0lOVEVHRVI6CisgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENs
aWVudE1ham9yVmVyc2lvbigpIDwgMykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgInBuYW1l
IHJlcXVpcmVzIE9wZW5HTCBFUyAzLjAuIikpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfRU5VTSwgIlVua25vd24gcG5hbWUuIikpOworICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChsZW5ndGgpCisgICAg
eworICAgICAgICBpZiAocG5hbWUgPT0gR0xfQ1VSUkVOVF9WRVJURVhfQVRUUklCKQorICAgICAg
ICB7CisgICAgICAgICAgICAqbGVuZ3RoID0gNDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisg
ICAgICAgIHsKKyAgICAgICAgICAgICpsZW5ndGggPSAxOworICAgICAgICB9CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVHZXRBY3RpdmVVbmlmb3JtQmxvY2tp
dkJhc2UoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgpCit7CisgICAgaWYgKGxlbmd0aCkK
KyAgICB7CisgICAgICAgICpsZW5ndGggPSAwOworICAgIH0KKworICAgIGlmIChjb250ZXh0LT5n
ZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ29udGV4
dCBkb2VzIG5vdCBzdXBwb3J0IE9wZW5HTCBFUyAzLjAuIikpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IEdldFZhbGlkUHJvZ3Jh
bShjb250ZXh0LCBwcm9ncmFtKTsKKyAgICBpZiAoIXByb2dyYW1PYmplY3QpCisgICAgeworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKHVuaWZvcm1CbG9ja0luZGV4ID49
IHByb2dyYW1PYmplY3QtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja0NvdW50KCkpCisgICAgeworICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURf
VkFMVUUsICJ1bmlmb3JtQmxvY2tJbmRleCBleGNlZWRzIGFjdGl2ZSB1bmlmb3JtIGJsb2NrIGNv
dW50LiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN3aXRjaCAocG5h
bWUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOSUZPUk1fQkxPQ0tfQklORElORzoKKyAgICAg
ICAgY2FzZSBHTF9VTklGT1JNX0JMT0NLX0RBVEFfU0laRToKKyAgICAgICAgY2FzZSBHTF9VTklG
T1JNX0JMT0NLX05BTUVfTEVOR1RIOgorICAgICAgICBjYXNlIEdMX1VOSUZPUk1fQkxPQ0tfQUNU
SVZFX1VOSUZPUk1TOgorICAgICAgICBjYXNlIEdMX1VOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZP
Uk1fSU5ESUNFUzoKKyAgICAgICAgY2FzZSBHTF9VTklGT1JNX0JMT0NLX1JFRkVSRU5DRURfQllf
VkVSVEVYX1NIQURFUjoKKyAgICAgICAgY2FzZSBHTF9VTklGT1JNX0JMT0NLX1JFRkVSRU5DRURf
QllfRlJBR01FTlRfU0hBREVSOgorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSwgIlVua25vd24gcG5hbWUuIikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIGlmIChsZW5ndGgpCisgICAgeworICAgICAgICBpZiAocG5hbWUgPT0gR0xfVU5JRk9S
TV9CTE9DS19BQ1RJVkVfVU5JRk9STV9JTkRJQ0VTKQorICAgICAgICB7CisgICAgICAgICAgICBj
b25zdCBVbmlmb3JtQmxvY2sgJnVuaWZvcm1CbG9jayA9CisgICAgICAgICAgICAgICAgcHJvZ3Jh
bU9iamVjdC0+Z2V0VW5pZm9ybUJsb2NrQnlJbmRleCh1bmlmb3JtQmxvY2tJbmRleCk7CisgICAg
ICAgICAgICAqbGVuZ3RoID0gc3RhdGljX2Nhc3Q8R0xzaXplaT4odW5pZm9ybUJsb2NrLm1lbWJl
clVuaWZvcm1JbmRleGVzLnNpemUoKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAg
ICB7CisgICAgICAgICAgICAqbGVuZ3RoID0gMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlR2V0QnVmZmVyUGFyYW1ldGVyQmFzZShWYWxp
ZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHBv
aW50ZXJWZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSAqbnVtUGFyYW1zKQoreworICAgIGlmIChudW1QYXJhbXMpCisgICAgeworICAgICAgICAqbnVt
UGFyYW1zID0gMDsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlkQnVmZmVyVGFyZ2V0KGNvbnRleHQs
IHRhcmdldCkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX0VOVU0sICJJbnZhbGlkIGJ1ZmZlciB0YXJnZXQuIikpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgY29uc3QgQnVmZmVyICpidWZmZXIgPSBjb250ZXh0LT5nZXRH
TFN0YXRlKCkuZ2V0VGFyZ2V0QnVmZmVyKHRhcmdldCk7CisgICAgaWYgKCFidWZmZXIpCisgICAg
eworICAgICAgICAvLyBBIG51bGwgYnVmZmVyIG1lYW5zIHRoYXQgIjAiIGlzIGJvdW5kIHRvIHRo
ZSByZXF1ZXN0ZWQgYnVmZmVyIHRhcmdldAorICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIk5vIGJ1ZmZlciBib3VuZC4iKSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBjb25zdCBFeHRlbnNpb25zICZleHRlbnNpb25z
ID0gY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpOworCisgICAgc3dpdGNoIChwbmFtZSkKKyAgICB7
CisgICAgICAgIGNhc2UgR0xfQlVGRkVSX1VTQUdFOgorICAgICAgICBjYXNlIEdMX0JVRkZFUl9T
SVpFOgorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9CVUZGRVJfQUNDRVNT
X09FUzoKKyAgICAgICAgICAgIGlmICghZXh0ZW5zaW9ucy5tYXBCdWZmZXIpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAg
ICAgICAgIEVycm9yKEdMX0lOVkFMSURfRU5VTSwgInBuYW1lIHJlcXVpcmVzIE9wZW5HTCBFUyAz
LjAgb3IgR0xfT0VTX21hcF9idWZmZXIuIikpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xf
QlVGRkVSX01BUFBFRDoKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoR0xfQlVGRkVSX01BUFBF
RCA9PSBHTF9CVUZGRVJfTUFQUEVEX09FUywgIkdMIGVudW1zIHNob3VsZCBiZSBlcXVhbC4iKTsK
KyAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMgJiYg
IWV4dGVuc2lvbnMubWFwQnVmZmVyICYmCisgICAgICAgICAgICAgICAgIWV4dGVuc2lvbnMubWFw
QnVmZmVyUmFuZ2UpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEdMX0lOVkFMSURfRU5VTSwKKyAg
ICAgICAgICAgICAgICAgICAgInBuYW1lIHJlcXVpcmVzIE9wZW5HTCBFUyAzLjAsIEdMX09FU19t
YXBfYnVmZmVyIG9yIEdMX0VYVF9tYXBfYnVmZmVyX3JhbmdlLiIpKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBjYXNlIEdMX0JVRkZFUl9NQVBfUE9JTlRFUjoKKyAgICAgICAgICAgIGlmICghcG9pbnRl
clZlcnNpb24pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfRU5VTSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIkdMX0JVRkZFUl9NQVBfUE9JTlRFUiBjYW4gb25seSBiZSBx
dWVyaWVkIHdpdGggR2V0QnVmZmVyUG9pbnRlcnYuIikpOworICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNh
c2UgR0xfQlVGRkVSX0FDQ0VTU19GTEFHUzoKKyAgICAgICAgY2FzZSBHTF9CVUZGRVJfTUFQX09G
RlNFVDoKKyAgICAgICAgY2FzZSBHTF9CVUZGRVJfTUFQX0xFTkdUSDoKKyAgICAgICAgICAgIGlm
IChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMgJiYgIWV4dGVuc2lvbnMubWFw
QnVmZmVyUmFuZ2UpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEdMX0lOVkFMSURfRU5VTSwgInBu
YW1lIHJlcXVpcmVzIE9wZW5HTCBFUyAzLjAgb3IgR0xfRVhUX21hcF9idWZmZXJfcmFuZ2UuIikp
OworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJVbmtub3duIHBuYW1lLiIpKTsKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBBbGwgYnVmZmVyIHBhcmFtZXRl
ciBxdWVyaWVzIHJldHVybiBvbmUgdmFsdWUuCisgICAgaWYgKG51bVBhcmFtcykKKyAgICB7Cisg
ICAgICAgICpudW1QYXJhbXMgPSAxOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIFZhbGlkYXRlR2V0SW50ZXJuYWxGb3JtYXRpdkJhc2UoQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKm51bVBhcmFtcykKK3sKKyAgICBp
ZiAobnVtUGFyYW1zKQorICAgIHsKKyAgICAgICAgKm51bVBhcmFtcyA9IDA7CisgICAgfQorCisg
ICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKKyAgICB7CisgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04sICJDb250ZXh0IGRvZXMgbm90IHN1cHBvcnQgT3BlbkdMIEVTIDMuMC4iKSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBjb25zdCBUZXh0dXJlQ2FwcyAmZm9y
bWF0Q2FwcyA9IGNvbnRleHQtPmdldFRleHR1cmVDYXBzKCkuZ2V0KGludGVybmFsZm9ybWF0KTsK
KyAgICBpZiAoIWZvcm1hdENhcHMucmVuZGVyYWJsZSkKKyAgICB7CisgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludGVybmFsIGZvcm1hdCBpcyBu
b3QgcmVuZGVyYWJsZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBz
d2l0Y2ggKHRhcmdldCkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSOgorICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgdGFyZ2V0LiIpKTsK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoYnVmU2l6ZSA8IDAp
CisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZB
TFVFLCAiYnVmU2l6ZSBjYW5ub3QgYmUgbmVnYXRpdmUuIikpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgR0xzaXplaSBtYXhXcml0ZVBhcmFtcyA9IDA7CisgICAgc3dpdGNo
IChwbmFtZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfTlVNX1NBTVBMRV9DT1VOVFM6CisgICAg
ICAgICAgICBtYXhXcml0ZVBhcmFtcyA9IDE7CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBjYXNlIEdMX1NBTVBMRVM6CisgICAgICAgICAgICBtYXhXcml0ZVBhcmFtcyA9IHN0YXRpY19j
YXN0PEdMc2l6ZWk+KGZvcm1hdENhcHMuc2FtcGxlQ291bnRzLnNpemUoKSk7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiVW5rbm93biBwbmFtZS4iKSk7CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKG51bVBhcmFtcykKKyAgICB7Cisg
ICAgICAgIC8vIGdsR2V0SW50ZXJuYWxGb3JtYXRpdiB3aWxsIG5vdCBvdmVyZmxvdyBidWZTaXpl
CisgICAgICAgICpudW1QYXJhbXMgPSBzdGQ6Om1pbihidWZTaXplLCBtYXhXcml0ZVBhcmFtcyk7
CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gIC8vIGFub255bW91cyBuYW1lc3Bh
Y2UKKwogYm9vbCBWYWxpZFRleHR1cmVUYXJnZXQoY29uc3QgVmFsaWRhdGlvbkNvbnRleHQgKmNv
bnRleHQsIEdMZW51bSB0YXJnZXQpCiB7CiAgICAgc3dpdGNoICh0YXJnZXQpCkBAIC0xMzYsNyAr
MTIzNSw3IEBACiAKICAgICAgIGNhc2UgR0xfVEVYVFVSRV8zRDoKICAgICAgIGNhc2UgR0xfVEVY
VFVSRV8yRF9BUlJBWToKLSAgICAgICAgcmV0dXJuIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9u
KCkgPj0gMyk7CisgICAgICAgICAgcmV0dXJuIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNp
b24oKSA+PSAzKTsKIAogICAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MTYyLDcgKzEyNjEsNyBAQAogICAgIHsKICAgICAgICAgY2FzZSBHTF9URVhUVVJFXzNEOgogICAg
ICAgICBjYXNlIEdMX1RFWFRVUkVfMkRfQVJSQVk6Ci0gICAgICAgICAgICByZXR1cm4gKGNvbnRl
eHQtPmdldENsaWVudFZlcnNpb24oKSA+PSAzKTsKKyAgICAgICAgICAgIHJldHVybiAoY29udGV4
dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPj0gMyk7CiAKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE2OSw2ICsxMjY4LDE1IEBACiAgICAgfQogfQog
CisvLyBNb3N0IHRleHR1cmUgR0wgY2FsbHMgYXJlIG5vdCBjb21wYXRpYmxlIHdpdGggZXh0ZXJu
YWwgdGV4dHVyZXMsIHNvIHdlIGhhdmUgYSBzZXBhcmF0ZSB2YWxpZGF0aW9uCisvLyBmdW5jdGlv
biBmb3IgdXNlIGluIHRoZSBHTCBjYWxscyB0aGF0IGRvCitib29sIFZhbGlkVGV4dHVyZUV4dGVy
bmFsVGFyZ2V0KGNvbnN0IFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0
KQoreworICAgIHJldHVybiAodGFyZ2V0ID09IEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTKSAmJgor
ICAgICAgICAgICAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVnbEltYWdlRXh0ZXJuYWwgfHwK
KyAgICAgICAgICAgIGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lZ2xTdHJlYW1Db25zdW1lckV4
dGVybmFsKTsKK30KKwogLy8gVGhpcyBmdW5jdGlvbiBkaWZmZXJzIGZyb20gVmFsaWRUZXh0dXJl
VGFyZ2V0IGluIHRoYXQgdGhlIHRhcmdldCBtdXN0IGJlCiAvLyB1c2FibGUgYXMgdGhlIGRlc3Rp
bmF0aW9uIG9mIGEgMkQgb3BlcmF0aW9uLS0gc28gYSBjdWJlIGZhY2UgaXMgdmFsaWQsIGJ1dAog
Ly8gR0xfVEVYVFVSRV9DVUJFX01BUCBpcyBub3QuCkBAIC0yMTYsNyArMTMyNCw3IEBACiAgICAg
fQogfQogCi1ib29sIFZhbGlkQnVmZmVyVGFyZ2V0KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSB0YXJnZXQpCitib29sIFZhbGlkQnVmZmVyVGFyZ2V0KGNvbnN0IFZhbGlkYXRpb25Db250
ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0KQogewogICAgIHN3aXRjaCAodGFyZ2V0KQogICAg
IHsKQEAgLTIyNiwxMyArMTMzNCwxNCBAQAogCiAgICAgICBjYXNlIEdMX1BJWEVMX1BBQ0tfQlVG
RkVSOgogICAgICAgY2FzZSBHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSOgotICAgICAgICAgIHJldHVy
biAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnBpeGVsQnVmZmVyT2JqZWN0IHx8IGNvbnRleHQt
PmdldENsaWVudFZlcnNpb24oKSA+PSAzKTsKKyAgICAgICAgICByZXR1cm4gKGNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5waXhlbEJ1ZmZlck9iamVjdCB8fAorICAgICAgICAgICAgICAgICAgY29u
dGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPj0gMyk7CiAKICAgICAgIGNhc2UgR0xfQ09Q
WV9SRUFEX0JVRkZFUjoKICAgICAgIGNhc2UgR0xfQ09QWV9XUklURV9CVUZGRVI6CiAgICAgICBj
YXNlIEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVI6CiAgICAgICBjYXNlIEdMX1VOSUZPUk1f
QlVGRkVSOgotICAgICAgICByZXR1cm4gKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA+PSAz
KTsKKyAgICAgICAgICByZXR1cm4gKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpID49
IDMpOwogCiAgICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzksMzUg
KzEzNDgsNiBAQAogICAgIH0KIH0KIAotYm9vbCBWYWxpZEJ1ZmZlclBhcmFtZXRlcihjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUpCi17Ci0gICAgY29uc3QgRXh0ZW5zaW9ucyAm
ZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKTsKLQotICAgIHN3aXRjaCAocG5h
bWUpCi0gICAgewotICAgICAgY2FzZSBHTF9CVUZGRVJfVVNBR0U6Ci0gICAgICBjYXNlIEdMX0JV
RkZFUl9TSVpFOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgY2FzZSBHTF9CVUZGRVJf
QUNDRVNTX09FUzoKLSAgICAgICAgcmV0dXJuIGV4dGVuc2lvbnMubWFwQnVmZmVyOwotCi0gICAg
ICBjYXNlIEdMX0JVRkZFUl9NQVBQRUQ6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoR0xfQlVGRkVS
X01BUFBFRCA9PSBHTF9CVUZGRVJfTUFQUEVEX09FUywgIkdMIGVudW1zIHNob3VsZCBiZSBlcXVh
bC4iKTsKLSAgICAgICAgcmV0dXJuIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPj0gMykg
fHwgZXh0ZW5zaW9ucy5tYXBCdWZmZXIgfHwgZXh0ZW5zaW9ucy5tYXBCdWZmZXJSYW5nZTsKLQot
ICAgICAgLy8gR0xfQlVGRkVSX01BUF9QT0lOVEVSIGlzIGEgc3BlY2lhbCBjYXNlLCBhbmQgbWF5
IG9ubHkgYmUKLSAgICAgIC8vIHF1ZXJpZWQgd2l0aCBHZXRCdWZmZXJQb2ludGVydgotICAgICAg
Y2FzZSBHTF9CVUZGRVJfQUNDRVNTX0ZMQUdTOgotICAgICAgY2FzZSBHTF9CVUZGRVJfTUFQX09G
RlNFVDoKLSAgICAgIGNhc2UgR0xfQlVGRkVSX01BUF9MRU5HVEg6Ci0gICAgICAgIHJldHVybiAo
Y29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpID49IDMpIHx8IGV4dGVuc2lvbnMubWFwQnVmZmVy
UmFuZ2U7Ci0KLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19
Ci0KIGJvb2wgVmFsaWRNaXBMZXZlbChjb25zdCBWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwpCiB7CiAgICAgY29uc3QgYXV0byAmY2FwcyAgICA9
IGNvbnRleHQtPmdldENhcHMoKTsKQEAgLTM3NSw2ICsxNDU1LDc0IEBACiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK2Jvb2wgVmFsaWRJbWFnZURhdGFTaXplKFZhbGlkYXRpb25Db250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRleHR1cmVUYXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRlcHRo
LAorICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHZvaWQgKnBpeGVscywKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW1h
Z2VTaXplKQoreworICAgIGdsOjpCdWZmZXIgKnBpeGVsVW5wYWNrQnVmZmVyID0gY29udGV4dC0+
Z2V0R0xTdGF0ZSgpLmdldFRhcmdldEJ1ZmZlcihHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSKTsKKyAg
ICBpZiAocGl4ZWxVbnBhY2tCdWZmZXIgPT0gbnVsbHB0ciAmJiBpbWFnZVNpemUgPCAwKQorICAg
IHsKKyAgICAgICAgLy8gQ2hlY2tzIGFyZSBub3QgcmVxdWlyZWQKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCisgICAgLy8gLi4udGhlIGRhdGEgd291bGQgYmUgdW5wYWNrZWQgZnJvbSB0
aGUgYnVmZmVyIG9iamVjdCBzdWNoIHRoYXQgdGhlIG1lbW9yeSByZWFkcyByZXF1aXJlZAorICAg
IC8vIHdvdWxkIGV4Y2VlZCB0aGUgZGF0YSBzdG9yZSBzaXplLgorICAgIEdMZW51bSBzaXplZEZv
cm1hdCAgICAgICAgICAgICAgICAgICA9IEdldFNpemVkSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxG
b3JtYXQsIHR5cGUpOworICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9
IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oc2l6ZWRGb3JtYXQpOworICAgIGNvbnN0IGdsOjpF
eHRlbnRzIHNpemUod2lkdGgsIGhlaWdodCwgZGVwdGgpOworICAgIGNvbnN0IGF1dG8gJnVucGFj
ayA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRVbnBhY2tTdGF0ZSgpOworCisgICAgYm9vbCB0
YXJnZXRJczNEICAgPSB0ZXh0dXJlVGFyZ2V0ID09IEdMX1RFWFRVUkVfM0QgfHwgdGV4dHVyZVRh
cmdldCA9PSBHTF9URVhUVVJFXzJEX0FSUkFZOworICAgIGF1dG8gZW5kQnl0ZU9yRXJyID0gZm9y
bWF0SW5mby5jb21wdXRlUGFja1VucGFja0VuZEJ5dGUodHlwZSwgc2l6ZSwgdW5wYWNrLCB0YXJn
ZXRJczNEKTsKKyAgICBpZiAoZW5kQnl0ZU9yRXJyLmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKGVuZEJ5dGVPckVyci5nZXRFcnJvcigpKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEdMdWludCBlbmRCeXRlID0gZW5kQnl0ZU9yRXJy
LmdldFJlc3VsdCgpOworCisgICAgaWYgKHBpeGVsVW5wYWNrQnVmZmVyKQorICAgIHsKKyAgICAg
ICAgQ2hlY2tlZE51bWVyaWM8c2l6ZV90PiBjaGVja2VkRW5kQnl0ZShlbmRCeXRlT3JFcnIuZ2V0
UmVzdWx0KCkpOworICAgICAgICBDaGVja2VkTnVtZXJpYzxzaXplX3Q+IGNoZWNrZWRPZmZzZXQo
cmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KHBpeGVscykpOworICAgICAgICBjaGVja2VkRW5kQnl0
ZSArPSBjaGVja2VkT2Zmc2V0OworCisgICAgICAgIGlmICghY2hlY2tlZEVuZEJ5dGUuSXNWYWxp
ZCgpIHx8CisgICAgICAgICAgICAoY2hlY2tlZEVuZEJ5dGUuVmFsdWVPckRpZSgpID4gc3RhdGlj
X2Nhc3Q8c2l6ZV90PihwaXhlbFVucGFja0J1ZmZlci0+Z2V0U2l6ZSgpKSkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIC8vIE92ZXJmbG93IHBhc3QgdGhlIGVuZCBvZiB0aGUgYnVmZmVyCisgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UK
KyAgICB7CisgICAgICAgIEFTU0VSVChpbWFnZVNpemUgPj0gMCk7CisgICAgICAgIGlmIChwaXhl
bHMgPT0gbnVsbHB0ciAmJiBpbWFnZVNpemUgIT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04sICJpbWFnZVNpemUgbXVzdCBiZSAwIGlmIG5vIHRleHR1cmUgZGF0YSBpcyBwcm92
aWRlZC4iKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZW5kQnl0ZSA+IHN0YXRpY19jYXN0
PEdMdWludD4oaW1hZ2VTaXplKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoCisgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJp
bWFnZVNpemUgbXVzdCBiZSBhdCBsZWFzdCAldS4iLCBlbmRCeXRlKSk7CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwog
Ym9vbCBWYWxpZFF1ZXJ5VHlwZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcXVlcnlU
eXBlKQogewogICAgIHN0YXRpY19hc3NlcnQoR0xfQU5ZX1NBTVBMRVNfUEFTU0VEID09IEdMX0FO
WV9TQU1QTEVTX1BBU1NFRF9FWFQsICJHTCBleHRlbnNpb24gZW51bXMgbm90IGVxdWFsLiIpOwpA
QCAtMzg2LDE1ICsxNTM0LDE3IEBACiAgICAgICBjYXNlIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9D
T05TRVJWQVRJVkU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgY2FzZSBHTF9UUkFOU0ZP
Uk1fRkVFREJBQ0tfUFJJTUlUSVZFU19XUklUVEVOOgotICAgICAgICByZXR1cm4gKGNvbnRleHQt
PmdldENsaWVudFZlcnNpb24oKSA+PSAzKTsKKyAgICAgICAgICByZXR1cm4gKGNvbnRleHQtPmdl
dENsaWVudE1ham9yVmVyc2lvbigpID49IDMpOwogICAgICAgY2FzZSBHTF9USU1FX0VMQVBTRURf
RVhUOgogICAgICAgICAgIHJldHVybiBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGlzam9pbnRU
aW1lclF1ZXJ5OworICAgICAgY2FzZSBHTF9DT01NQU5EU19DT01QTEVURURfQ0hST01JVU06Cisg
ICAgICAgICAgcmV0dXJuIGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zeW5jUXVlcnk7CiAgICAg
ICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQogCi1Qcm9ncmFtICpH
ZXRWYWxpZFByb2dyYW0oQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGlkKQorUHJvZ3JhbSAqR2V0
VmFsaWRQcm9ncmFtKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaWQpCiB7CiAg
ICAgLy8gRVMzIHNwZWMgKHNlY3Rpb24gMi4xMS4xKSAtLSAiQ29tbWFuZHMgdGhhdCBhY2NlcHQg
c2hhZGVyIG9yIHByb2dyYW0gb2JqZWN0IG5hbWVzIHdpbGwgZ2VuZXJhdGUgdGhlCiAgICAgLy8g
ZXJyb3IgSU5WQUxJRF9WQUxVRSBpZiB0aGUgcHJvdmlkZWQgbmFtZSBpcyBub3QgdGhlIG5hbWUg
b2YgZWl0aGVyIGEgc2hhZGVyIG9yIHByb2dyYW0gb2JqZWN0IGFuZApAQCAtNDA2LDEyICsxNTU2
LDEyIEBACiAgICAgewogICAgICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyKGlkKSkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoCisgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcigKICAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwgIkV4cGVjdGVkIGEgcHJvZ3JhbSBuYW1lLCBidXQgZm91bmQgYSBzaGFkZXIgbmFtZSIp
KTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJQcm9ncmFtIG5hbWUgaXMg
bm90IHZhbGlkIikpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSwgIlByb2dyYW0gbmFtZSBpcyBub3QgdmFsaWQiKSk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTQxOCw3ICsxNTY4LDcgQEAKICAgICByZXR1cm4gdmFsaWRQcm9ncmFtOwog
fQogCi1TaGFkZXIgKkdldFZhbGlkU2hhZGVyKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpZCkK
K1NoYWRlciAqR2V0VmFsaWRTaGFkZXIoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMdWlu
dCBpZCkKIHsKICAgICAvLyBTZWUgVmFsaWRQcm9ncmFtIGZvciBzcGVjIGRldGFpbHMuCiAKQEAg
LTQyOCwxMiArMTU3OCwxMiBAQAogICAgIHsKICAgICAgICAgaWYgKGNvbnRleHQtPmdldFByb2dy
YW0oaWQpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcigKKyAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAogICAgICAgICAgICAgICAgIEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLCAiRXhwZWN0ZWQgYSBzaGFkZXIgbmFtZSwgYnV0IGZvdW5kIGEg
cHJvZ3JhbSBuYW1lIikpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIlNo
YWRlciBuYW1lIGlzIGludmFsaWQiKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiU2hhZGVyIG5hbWUgaXMgaW52YWxpZCIpKTsKICAg
ICAgICAgfQogICAgIH0KIApAQCAtNDQ4LDcgKzE1OTgsNyBAQAogCiAgICAgICAgIGlmIChjb2xv
ckF0dGFjaG1lbnQgPj0gY29udGV4dC0+Z2V0Q2FwcygpLm1heENvbG9yQXR0YWNobWVudHMpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFM
SURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAg
IH0KQEAgLTQ1OCwxOSArMTYwOCwyMCBAQAogICAgICAgICB7CiAgICAgICAgICAgY2FzZSBHTF9E
RVBUSF9BVFRBQ0hNRU5UOgogICAgICAgICAgIGNhc2UgR0xfU1RFTkNJTF9BVFRBQ0hNRU5UOgot
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgY2Fz
ZSBHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQ6Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+
Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkud2ViZ2xDb21wYXRpYmls
aXR5ICYmCisgICAgICAgICAgICAgICAgICBjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24o
KSA8IDMpCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfRU5VTSkpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQogCkBAIC00ODUsMTMgKzE2MzYsMTMg
QEAKICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSOgogICAgICAgICBicmVhazsKICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSkpOworICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKHdpZHRoIDwgMCB8
fCBoZWlnaHQgPCAwIHx8IHNhbXBsZXMgPCAwKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKQEAgLTQ5OCw3ICsxNjQ5LDcgQEAKICAgICBjb25zdCBUZXh0dXJlQ2FwcyAmZm9y
bWF0Q2FwcyA9IGNvbnRleHQtPmdldFRleHR1cmVDYXBzKCkuZ2V0KGludGVybmFsZm9ybWF0KTsK
ICAgICBpZiAoIWZvcm1hdENhcHMucmVuZGVyYWJsZSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIApAQCAtNTA4LDIwICsxNjU5LDIwIEBACiAgICAgY29uc3QgZ2w6OkludGVybmFs
Rm9ybWF0ICZmb3JtYXRJbmZvID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhpbnRlcm5hbGZv
cm1hdCk7CiAgICAgaWYgKGZvcm1hdEluZm8ucGl4ZWxCeXRlcyA9PSAwKQogICAgIHsKLSAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKHN0YXRpY19jYXN0PEdMdWludD4oc3RkOjpt
YXgod2lkdGgsIGhlaWdodCkpID4gY29udGV4dC0+Z2V0Q2FwcygpLm1heFJlbmRlcmJ1ZmZlclNp
emUpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X1ZBTFVFKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
VkFMVUUpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIEdMdWludCBoYW5k
bGUgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFJlbmRlcmJ1ZmZlcklkKCk7CisgICAgR0x1aW50
IGhhbmRsZSA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRSZW5kZXJidWZmZXJJZCgpOwogICAg
IGlmIChoYW5kbGUgPT0gMCkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKQEAgLTUzOCw3ICsxNjg5LDcgQEAKICAgICAvLyBnZW5lcmF0ZWQuCiAgICAgaWYgKHN0
YXRpY19jYXN0PEdMdWludD4oc2FtcGxlcykgPiBjb250ZXh0LT5nZXRDYXBzKCkubWF4U2FtcGxl
cykKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURf
VkFMVUUpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC01NDYsMTIgKzE2OTcs
MTIgQEAKICAgICAvLyB0aGUgc3BlY2lmaWVkIHN0b3JhZ2UuIFRoaXMgaXMgZGlmZmVyZW50IHRo
YW4gRVMgMy4wIGluIHdoaWNoIGEgc2FtcGxlIG51bWJlciBoaWdoZXIKICAgICAvLyB0aGFuIHRo
ZSBtYXhpbXVtIHNhbXBsZSBudW1iZXIgc3VwcG9ydGVkICBieSB0aGlzIGZvcm1hdCBnZW5lcmF0
ZXMgYSBHTF9JTlZBTElEX1ZBTFVFLgogICAgIC8vIFRoZSBUZXh0dXJlQ2Fwczo6Z2V0TWF4U2Ft
cGxlcyBtZXRob2QgaXMgb25seSBndWFyZW50ZWVkIHRvIGJlIHZhbGlkIHdoZW4gdGhlIGNvbnRl
eHQgaXMgRVMzLgotICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPj0gMykKKyAg
ICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPj0gMykKICAgICB7CiAgICAg
ICAgIGNvbnN0IFRleHR1cmVDYXBzICZmb3JtYXRDYXBzID0gY29udGV4dC0+Z2V0VGV4dHVyZUNh
cHMoKS5nZXQoaW50ZXJuYWxmb3JtYXQpOwogICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8R0x1aW50
PihzYW1wbGVzKSA+IGZvcm1hdENhcHMuZ2V0TWF4U2FtcGxlcygpKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9PVVRfT0ZfTUVNT1JZKSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9PVVRfT0ZfTUVNT1JZKSk7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC01NjQsMTYg
KzE3MTUsMTcgQEAKIHsKICAgICBpZiAoIVZhbGlkRnJhbWVidWZmZXJUYXJnZXQodGFyZ2V0KSkK
ICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSkpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0p
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGdsOjpGcmFtZWJ1ZmZlciAq
ZnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFRhcmdldEZyYW1lYnVmZmVyKHRh
cmdldCk7CisgICAgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldEdM
U3RhdGUoKS5nZXRUYXJnZXRGcmFtZWJ1ZmZlcih0YXJnZXQpOwogCiAgICAgQVNTRVJUKGZyYW1l
YnVmZmVyKTsKICAgICBpZiAoZnJhbWVidWZmZXItPmlkKCkgPT0gMCkKICAgICB7Ci0gICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ2Fubm90
IGNoYW5nZSBkZWZhdWx0IEZCTydzIGF0dGFjaG1lbnRzIikpOworICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ2Fu
bm90IGNoYW5nZSBkZWZhdWx0IEZCTydzIGF0dGFjaG1lbnRzIikpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCkBAIC01OTAsNyArMTc0Miw3IEBACiAgICAgewogICAgICAgICBpZiAo
IWNvbnRleHQtPmdldFJlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAg
LTU5OCw3ICsxNzUwLDcgQEAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUJs
aXRGcmFtZWJ1ZmZlclBhcmFtZXRlcnMoZ2w6OkNvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlQmxpdEZyYW1lYnVmZmVyUGFyYW1ldGVycyhWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNyY1gwLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3JjWTAsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzcmNYMSwKQEAgLTYxNywxMyAr
MTc2OSwxMyBAQAogICAgICAgY2FzZSBHTF9MSU5FQVI6CiAgICAgICAgIGJyZWFrOwogICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9F
TlVNKSk7CisgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9F
TlVNKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoKG1hc2sgJiB+
KEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9C
VUZGRVJfQklUKSkgIT0gMCkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBA
IC02MzgsNDAgKzE3OTAsNDEgQEAKICAgICAvLyBjb2xvciBidWZmZXIsIGxlYXZpbmcgb25seSBu
ZWFyZXN0IGJlaW5nIHVuZmlsdGVyZWQgZnJvbSBhYm92ZQogICAgIGlmICgobWFzayAmIH5HTF9D
T0xPUl9CVUZGRVJfQklUKSAhPSAwICYmIGZpbHRlciAhPSBHTF9ORUFSRVNUKQogICAgIHsKLSAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsK
KyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChjb250ZXh0LT5nZXRT
dGF0ZSgpLmdldFJlYWRGcmFtZWJ1ZmZlcigpLT5pZCgpID09IGNvbnRleHQtPmdldFN0YXRlKCku
Z2V0RHJhd0ZyYW1lYnVmZmVyKCktPmlkKCkpCisgICAgY29uc3QgYXV0byAmZ2xTdGF0ZSAgICAg
ICAgICAgICAgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCk7CisgICAgZ2w6OkZyYW1lYnVmZmVyICpy
ZWFkRnJhbWVidWZmZXIgPSBnbFN0YXRlLmdldFJlYWRGcmFtZWJ1ZmZlcigpOworICAgIGdsOjpG
cmFtZWJ1ZmZlciAqZHJhd0ZyYW1lYnVmZmVyID0gZ2xTdGF0ZS5nZXREcmF3RnJhbWVidWZmZXIo
KTsKKworICAgIGlmICghcmVhZEZyYW1lYnVmZmVyIHx8ICFkcmF3RnJhbWVidWZmZXIpCiAgICAg
ewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0ZSQU1F
QlVGRkVSX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAg
Y29uc3QgZ2w6OkZyYW1lYnVmZmVyICpyZWFkRnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXRTdGF0
ZSgpLmdldFJlYWRGcmFtZWJ1ZmZlcigpOwotICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZHJh
d0ZyYW1lYnVmZmVyID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXREcmF3RnJhbWVidWZmZXIoKTsK
LQotICAgIGlmICghcmVhZEZyYW1lYnVmZmVyIHx8ICFkcmF3RnJhbWVidWZmZXIpCisgICAgaWYg
KHJlYWRGcmFtZWJ1ZmZlci0+aWQoKSA9PSBkcmF3RnJhbWVidWZmZXItPmlkKCkpCiAgICAgewot
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0ZSQU1FQlVGRkVS
X09QRVJBVElPTikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYg
KCFyZWFkRnJhbWVidWZmZXItPmNoZWNrU3RhdHVzKGNvbnRleHQtPmdldERhdGEoKSkpCisgICAg
aWYgKHJlYWRGcmFtZWJ1ZmZlci0+Y2hlY2tTdGF0dXMoY29udGV4dC0+Z2V0Q29udGV4dFN0YXRl
KCkpICE9IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04pKTsKKyAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9P
UEVSQVRJT04pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmICghZHJh
d0ZyYW1lYnVmZmVyLT5jaGVja1N0YXR1cyhjb250ZXh0LT5nZXREYXRhKCkpKQorICAgIGlmIChk
cmF3RnJhbWVidWZmZXItPmNoZWNrU3RhdHVzKGNvbnRleHQtPmdldENvbnRleHRTdGF0ZSgpKSAh
PSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OKSk7CisgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFU
SU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoZHJhd0ZyYW1l
YnVmZmVyLT5nZXRTYW1wbGVzKGNvbnRleHQtPmdldERhdGEoKSkgIT0gMCkKKyAgICBpZiAoZHJh
d0ZyYW1lYnVmZmVyLT5nZXRTYW1wbGVzKGNvbnRleHQtPmdldENvbnRleHRTdGF0ZSgpKSAhPSAw
KQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNjg1LDgg
KzE4MzgsNyBAQAogCiAgICAgICAgIGlmIChyZWFkQ29sb3JCdWZmZXIgJiYgZHJhd0NvbG9yQnVm
ZmVyKQogICAgICAgICB7Ci0gICAgICAgICAgICBHTGVudW0gcmVhZEludGVybmFsRm9ybWF0ID0g
cmVhZENvbG9yQnVmZmVyLT5nZXRJbnRlcm5hbEZvcm1hdCgpOwotICAgICAgICAgICAgY29uc3Qg
SW50ZXJuYWxGb3JtYXQgJnJlYWRGb3JtYXRJbmZvID0gR2V0SW50ZXJuYWxGb3JtYXRJbmZvKHJl
YWRJbnRlcm5hbEZvcm1hdCk7CisgICAgICAgICAgICBjb25zdCBGb3JtYXQgJnJlYWRGb3JtYXQg
PSByZWFkQ29sb3JCdWZmZXItPmdldEZvcm1hdCgpOwogCiAgICAgICAgICAgICBmb3IgKHNpemVf
dCBkcmF3YnVmZmVySWR4ID0gMDsKICAgICAgICAgICAgICAgICAgZHJhd2J1ZmZlcklkeCA8IGRy
YXdGcmFtZWJ1ZmZlci0+Z2V0RHJhd2J1ZmZlclN0YXRlQ291bnQoKTsgKytkcmF3YnVmZmVySWR4
KQpAQCAtNjk1LDggKzE4NDcsNyBAQAogICAgICAgICAgICAgICAgICAgICBkcmF3RnJhbWVidWZm
ZXItPmdldERyYXdCdWZmZXIoZHJhd2J1ZmZlcklkeCk7CiAgICAgICAgICAgICAgICAgaWYgKGF0
dGFjaG1lbnQpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBHTGVudW0g
ZHJhd0ludGVybmFsRm9ybWF0ICAgICAgICAgICAgPSBhdHRhY2htZW50LT5nZXRJbnRlcm5hbEZv
cm1hdCgpOwotICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRlcm5hbEZvcm1hdCAmZHJhd0Zv
cm1hdEluZm8gPSBHZXRJbnRlcm5hbEZvcm1hdEluZm8oZHJhd0ludGVybmFsRm9ybWF0KTsKKyAg
ICAgICAgICAgICAgICAgICAgY29uc3QgRm9ybWF0ICZkcmF3Rm9ybWF0ID0gYXR0YWNobWVudC0+
Z2V0Rm9ybWF0KCk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIEdMIEVTIDMuMC4yIHNw
ZWMgKHBnIDE5Mykgc3RhdGVzIHRoYXQ6CiAgICAgICAgICAgICAgICAgICAgIC8vIDEpIElmIHRo
ZSByZWFkIGJ1ZmZlciBpcyBmaXhlZCBwb2ludCBmb3JtYXQsIHRoZSBkcmF3IGJ1ZmZlciBtdXN0
IGJlIGFzIHdlbGwKQEAgLTcwNCw4ICsxODU1LDggQEAKICAgICAgICAgICAgICAgICAgICAgLy8g
MykgSWYgdGhlIHJlYWQgYnVmZmVyIGlzIGEgc2lnbmVkIGludGVnZXIgZm9ybWF0LCB0aGUgZHJh
dyBidWZmZXIgbXVzdCBiZSBhcyB3ZWxsCiAgICAgICAgICAgICAgICAgICAgIC8vIENoYW5nZXMg
d2l0aCBFWFRfY29sb3JfYnVmZmVyX2Zsb2F0OgogICAgICAgICAgICAgICAgICAgICAvLyBDYXNl
IDEpIGlzIGNoYW5nZWQgdG8gZml4ZWQgcG9pbnQgT1IgZmxvYXRpbmcgcG9pbnQKLSAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHJlYWRDb21wb25lbnRUeXBlID0gcmVhZEZvcm1hdEluZm8uY29t
cG9uZW50VHlwZTsKLSAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRyYXdDb21wb25lbnRUeXBl
ID0gZHJhd0Zvcm1hdEluZm8uY29tcG9uZW50VHlwZTsKKyAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHJlYWRDb21wb25lbnRUeXBlID0gcmVhZEZvcm1hdC5pbmZvLT5jb21wb25lbnRUeXBlOwor
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHJhd0NvbXBvbmVudFR5cGUgPSBkcmF3Rm9ybWF0
LmluZm8tPmNvbXBvbmVudFR5cGU7CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVhZEZpeGVk
UG9pbnQgPSAocmVhZENvbXBvbmVudFR5cGUgPT0gR0xfVU5TSUdORURfTk9STUFMSVpFRCB8fAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRDb21wb25lbnRU
eXBlID09IEdMX1NJR05FRF9OT1JNQUxJWkVEKTsKICAgICAgICAgICAgICAgICAgICAgYm9vbCBk
cmF3Rml4ZWRQb2ludCA9IChkcmF3Q29tcG9uZW50VHlwZSA9PSBHTF9VTlNJR05FRF9OT1JNQUxJ
WkVEIHx8CkBAIC03MTgsNyArMTg2OSw3IEBACiAKICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChyZWFkRml4ZWRPckZsb2F0ICE9IGRyYXdGaXhlZE9yRmxvYXQpCiAgICAgICAgICAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIklmIHRo
ZSByZWFkIGJ1ZmZlciBjb250YWlucyBmaXhlZC1wb2ludCBvciAiCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0aW5nLXBvaW50IHZh
bHVlcywgdGhlIGRyYXcgYnVmZmVyICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBhcyB3ZWxsLiIpKTsKQEAgLTcyNyw3ICsxODc4
LDcgQEAKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBlbHNlIGlm
IChyZWFkRml4ZWRQb2ludCAhPSBkcmF3Rml4ZWRQb2ludCkKICAgICAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJZiB0aGUgcmVhZCBidWZmZXIgY29udGFp
bnMgZml4ZWQtcG9pbnQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInZhbHVlcywgdGhlIGRyYXcgYnVmZmVyIG11c3QgYXMgd2VsbC4iKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03MzYsMjcgKzE4ODcsMzAg
QEAKICAgICAgICAgICAgICAgICAgICAgaWYgKHJlYWRDb21wb25lbnRUeXBlID09IEdMX1VOU0lH
TkVEX0lOVCAmJgogICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0NvbXBvbmVudFR5cGUgIT0g
R0xfVU5TSUdORURfSU5UKQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OworICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIGlmIChyZWFk
Q29tcG9uZW50VHlwZSA9PSBHTF9JTlQgJiYgZHJhd0NvbXBvbmVudFR5cGUgIT0gR0xfSU5UKQog
ICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIGlmIChyZWFkQ29sb3JCdWZmZXItPmdldFNh
bXBsZXMoKSA+IDAgJiYgKHJlYWRJbnRlcm5hbEZvcm1hdCAhPSBkcmF3SW50ZXJuYWxGb3JtYXQg
fHwgIXNhbWVCb3VuZHMpKQorICAgICAgICAgICAgICAgICAgICBpZiAocmVhZENvbG9yQnVmZmVy
LT5nZXRTYW1wbGVzKCkgPiAwICYmCisgICAgICAgICAgICAgICAgICAgICAgICAoIUZvcm1hdDo6
U2FtZVNpemVkKHJlYWRGb3JtYXQsIGRyYXdGb3JtYXQpIHx8ICFzYW1lQm91bmRzKSkKICAgICAg
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICgo
cmVhZEZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9JTlQgfHwgcmVhZEZvcm1hdEluZm8u
Y29tcG9uZW50VHlwZSA9PSBHTF9VTlNJR05FRF9JTlQpICYmIGZpbHRlciA9PSBHTF9MSU5FQVIp
CisgICAgICAgICAgICBpZiAoKHJlYWRGb3JtYXQuaW5mby0+Y29tcG9uZW50VHlwZSA9PSBHTF9J
TlQgfHwKKyAgICAgICAgICAgICAgICAgcmVhZEZvcm1hdC5pbmZvLT5jb21wb25lbnRUeXBlID09
IEdMX1VOU0lHTkVEX0lOVCkgJiYKKyAgICAgICAgICAgICAgICBmaWx0ZXIgPT0gR0xfTElORUFS
KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTc3MywxNSArMTkyNywx
NSBAQAogCiAgICAgICAgICAgICBpZiAocmVhZEJ1ZmZlciAmJiBkcmF3QnVmZmVyKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGlmIChyZWFkQnVmZmVyLT5nZXRJbnRlcm5hbEZvcm1h
dCgpICE9IGRyYXdCdWZmZXItPmdldEludGVybmFsRm9ybWF0KCkpCisgICAgICAgICAgICAgICAg
aWYgKCFGb3JtYXQ6OlNhbWVTaXplZChyZWFkQnVmZmVyLT5nZXRGb3JtYXQoKSwgZHJhd0J1ZmZl
ci0+Z2V0Rm9ybWF0KCkpKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgICAgIGlmIChyZWFkQnVmZmVyLT5nZXRTYW1wbGVzKCkgPiAw
ICYmICFzYW1lQm91bmRzKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KQEAgLTc5MSwyMjkgKzE5NDUsNyBAQAogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliUGFyYW1ldGVycyhDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gcG5hbWUpCi17Ci0gICAgc3dpdGNoIChwbmFtZSkKLSAgICB7Ci0g
ICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRDoKLSAgICAgIGNhc2UgR0xf
VkVSVEVYX0FUVFJJQl9BUlJBWV9TSVpFOgotICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FS
UkFZX1NUUklERToKLSAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFOgotICAg
ICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRUQ6Ci0gICAgICBjYXNlIEdM
X1ZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkc6Ci0gICAgICBjYXNlIEdMX0NVUlJF
TlRfVkVSVEVYX0FUVFJJQjoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgIGNhc2UgR0xf
VkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJU09SOgotICAgICAgICAvLyBEb24ndCB2ZXJpZnkgRVMz
IGNvbnRleHQgYmVjYXVzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX0RJVklTT1JfQU5HTEUgdXNl
cwotICAgICAgICAvLyB0aGUgc2FtZSBjb25zdGFudC4KLSAgICAgICAgc3RhdGljX2Fzc2VydChH
TF9WRVJURVhfQVRUUklCX0FSUkFZX0RJVklTT1IgPT0gR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9E
SVZJU09SX0FOR0xFLAotICAgICAgICAgICAgICAgICAgICAgICJBTkdMRSBleHRlbnNpb24gZW51
bXMgbm90IGVxdWFsIHRvIEdMIGVudW1zLiIpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg
ICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX0lOVEVHRVI6Ci0gICAgICAgIGlmIChjb250
ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgZGVm
YXVsdDoKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVN
KSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLWJvb2wgVmFsaWRhdGVUZXhQ
YXJhbVBhcmFtZXRlcnMoZ2w6OkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xpbnQg
cGFyYW0pCi17Ci0gICAgc3dpdGNoIChwbmFtZSkKLSAgICB7Ci0gICAgICBjYXNlIEdMX1RFWFRV
UkVfV1JBUF9SOgotICAgICAgY2FzZSBHTF9URVhUVVJFX1NXSVpaTEVfUjoKLSAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9TV0laWkxFX0c6Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfU1dJWlpMRV9COgot
ICAgICAgY2FzZSBHTF9URVhUVVJFX1NXSVpaTEVfQToKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9C
QVNFX0xFVkVMOgotICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9MRVZFTDoKLSAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9DT01QQVJFX01PREU6Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQ09NUEFSRV9G
VU5DOgotICAgICAgY2FzZSBHTF9URVhUVVJFX01JTl9MT0Q6Ci0gICAgICBjYXNlIEdMX1RFWFRV
UkVfTUFYX0xPRDoKLSAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfRU5VTSkpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAg
ICAgIGJyZWFrOwotCi0gICAgICBkZWZhdWx0OiBicmVhazsKLSAgICB9Ci0KLSAgICBzd2l0Y2gg
KHBuYW1lKQotICAgIHsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1M6Ci0gICAgICBjYXNl
IEdMX1RFWFRVUkVfV1JBUF9UOgotICAgICAgY2FzZSBHTF9URVhUVVJFX1dSQVBfUjoKLSAgICAg
ICAgc3dpdGNoIChwYXJhbSkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfUkVQRUFUOgot
ICAgICAgICAgIGNhc2UgR0xfQ0xBTVBfVE9fRURHRToKLSAgICAgICAgICBjYXNlIEdMX01JUlJP
UkVEX1JFUEVBVDoKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0p
KTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICBjYXNlIEdM
X1RFWFRVUkVfTUlOX0ZJTFRFUjoKLSAgICAgICAgc3dpdGNoIChwYXJhbSkKLSAgICAgICAgewot
ICAgICAgICAgIGNhc2UgR0xfTkVBUkVTVDoKLSAgICAgICAgICBjYXNlIEdMX0xJTkVBUjoKLSAg
ICAgICAgICBjYXNlIEdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1Q6Ci0gICAgICAgICAgY2FzZSBH
TF9MSU5FQVJfTUlQTUFQX05FQVJFU1Q6Ci0gICAgICAgICAgY2FzZSBHTF9ORUFSRVNUX01JUE1B
UF9MSU5FQVI6Ci0gICAgICAgICAgY2FzZSBHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUjoKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLQotICAgICAgY2FzZSBHTF9U
RVhUVVJFX01BR19GSUxURVI6Ci0gICAgICAgIHN3aXRjaCAocGFyYW0pCi0gICAgICAgIHsKLSAg
ICAgICAgICBjYXNlIEdMX05FQVJFU1Q6Ci0gICAgICAgICAgY2FzZSBHTF9MSU5FQVI6Ci0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGNhc2UgR0xf
VEVYVFVSRV9VU0FHRV9BTkdMRToKLSAgICAgICAgc3dpdGNoIChwYXJhbSkKLSAgICAgICAgewot
ICAgICAgICAgIGNhc2UgR0xfTk9ORToKLSAgICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FU
VEFDSE1FTlRfQU5HTEU6Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9F
TlVNKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgYnJl
YWs7Ci0KLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6Ci0gICAgICAg
IGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYykK
LSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAg
ICAgICAvLyB3ZSBhc3N1bWUgdGhlIHBhcmFtZXRlciBwYXNzZWQgdG8gdGhpcyB2YWxpZGF0aW9u
IG1ldGhvZCBpcyB0cnVuY2F0ZWQsIG5vdCByb3VuZGVkCi0gICAgICAgIGlmIChwYXJhbSA8IDEp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfVkFMVUUpKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgY2FzZSBHTF9URVhUVVJFX01JTl9MT0Q6Ci0gICAg
ICBjYXNlIEdMX1RFWFRVUkVfTUFYX0xPRDoKLSAgICAgICAgLy8gYW55IHZhbHVlIGlzIHBlcm1p
c3NpYmxlCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICBjYXNlIEdMX1RFWFRVUkVfQ09N
UEFSRV9NT0RFOgotICAgICAgICAvLyBBY2NlcHRhYmxlIG1vZGUgcGFyYW1ldGVycyBmcm9tIEdM
RVMgMy4wLjIgc3BlYywgdGFibGUgMy4xNwotICAgICAgICBzd2l0Y2ggKHBhcmFtKQotICAgICAg
ICB7Ci0gICAgICAgICAgY2FzZSBHTF9OT05FOgotICAgICAgICAgIGNhc2UgR0xfQ09NUEFSRV9S
RUZfVE9fVEVYVFVSRToKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VO
VU0pKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBicmVh
azsKLQotICAgICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQzoKLSAgICAgICAgLy8gQWNj
ZXB0YWJsZSBmdW5jdGlvbiBwYXJhbWV0ZXJzIGZyb20gR0xFUyAzLjAuMiBzcGVjLCB0YWJsZSAz
LjE3Ci0gICAgICAgIHN3aXRjaCAocGFyYW0pCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdM
X0xFUVVBTDoKLSAgICAgICAgICBjYXNlIEdMX0dFUVVBTDoKLSAgICAgICAgICBjYXNlIEdMX0xF
U1M6Ci0gICAgICAgICAgY2FzZSBHTF9HUkVBVEVSOgotICAgICAgICAgIGNhc2UgR0xfRVFVQUw6
Ci0gICAgICAgICAgY2FzZSBHTF9OT1RFUVVBTDoKLSAgICAgICAgICBjYXNlIEdMX0FMV0FZUzoK
LSAgICAgICAgICBjYXNlIEdMX05FVkVSOgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0g
ICAgICAgIGJyZWFrOwotCi0gICAgICBjYXNlIEdMX1RFWFRVUkVfU1dJWlpMRV9SOgotICAgICAg
Y2FzZSBHTF9URVhUVVJFX1NXSVpaTEVfRzoKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9TV0laWkxF
X0I6Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfU1dJWlpMRV9BOgotICAgICAgICBzd2l0Y2ggKHBh
cmFtKQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9SRUQ6Ci0gICAgICAgICAgY2FzZSBH
TF9HUkVFTjoKLSAgICAgICAgICBjYXNlIEdMX0JMVUU6Ci0gICAgICAgICAgY2FzZSBHTF9BTFBI
QToKLSAgICAgICAgICBjYXNlIEdMX1pFUk86Ci0gICAgICAgICAgY2FzZSBHTF9PTkU6Ci0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGNhc2UgR0xf
VEVYVFVSRV9CQVNFX0xFVkVMOgotICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9MRVZFTDoKLSAg
ICAgICAgaWYgKHBhcmFtIDwgMCkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICBkZWZhdWx0Ogot
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQotYm9vbCBWYWxpZGF0ZVNhbXBsZXJPYmpl
Y3RQYXJhbWV0ZXIoZ2w6OkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSkKLXsKLSAgICBz
d2l0Y2ggKHBuYW1lKQotICAgIHsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9NSU5fRklMVEVSOgot
ICAgICAgY2FzZSBHTF9URVhUVVJFX01BR19GSUxURVI6Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVf
V1JBUF9TOgotICAgICAgY2FzZSBHTF9URVhUVVJFX1dSQVBfVDoKLSAgICAgIGNhc2UgR0xfVEVY
VFVSRV9XUkFQX1I6Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfTUlOX0xPRDoKLSAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9NQVhfTE9EOgotICAgICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfTU9ERToK
LSAgICAgIGNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkM6Ci0gICAgICAgIHJldHVybiB0cnVl
OwotCi0gICAgICBkZWZhdWx0OgotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQotYm9v
bCBWYWxpZGF0ZVJlYWRQaXhlbHMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVSZWFk
UGl4ZWxzKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgeCwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCiAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLApAQCAtMTAyMiw0OSArMTk1NCwzNiBAQAogICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHZvaWQgKnBpeGVscykKIHsKLSAgICBpZiAod2lkdGggPCAwIHx8IGhlaWdodCA8IDApCi0g
ICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVF
LCAid2lkdGggYW5kIGhlaWdodCBtdXN0IGJlIHBvc2l0aXZlIikpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQorICAgIHJldHVybiBWYWxpZGF0ZVJlYWRQaXhlbHNCYXNlKGNvbnRleHQs
IHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgLTEsIG51bGxwdHIsIHBpeGVscyk7
Cit9CiAKLSAgICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXRTdGF0ZSgp
LmdldFJlYWRGcmFtZWJ1ZmZlcigpOwotICAgIEFTU0VSVChmcmFtZWJ1ZmZlcik7Ci0KLSAgICBp
ZiAoZnJhbWVidWZmZXItPmNoZWNrU3RhdHVzKGNvbnRleHQtPmdldERhdGEoKSkgIT0gR0xfRlJB
TUVCVUZGRVJfQ09NUExFVEUpCitib29sIFZhbGlkYXRlUmVhZFBpeGVsc1JvYnVzdEFOR0xFKFZh
bGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHZvaWQgKnBpeGVscykKK3sKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0RW50cnlQb2lu
dChjb250ZXh0LCBidWZTaXplKSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRSZWFkRnJh
bWVidWZmZXIoKS0+aWQoKSAhPSAwICYmCi0gICAgICAgIGZyYW1lYnVmZmVyLT5nZXRTYW1wbGVz
KGNvbnRleHQtPmdldERhdGEoKSkgIT0gMCkKKyAgICBpZiAoIVZhbGlkYXRlUmVhZFBpeGVsc0Jh
c2UoY29udGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBs
ZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVscykpCiAgICAgewot
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgY29uc3QgRnJhbWVidWZmZXJB
dHRhY2htZW50ICpyZWFkQnVmZmVyID0gZnJhbWVidWZmZXItPmdldFJlYWRDb2xvcmJ1ZmZlcigp
OwotICAgIGlmICghcmVhZEJ1ZmZlcikKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0QnVmZmVyU2l6
ZShjb250ZXh0LCBidWZTaXplLCAqbGVuZ3RoKSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKLSAgICBHTGVudW0gY3VycmVudEZvcm1hdCA9IGZyYW1lYnVmZmVyLT5n
ZXRJbXBsZW1lbnRhdGlvbkNvbG9yUmVhZEZvcm1hdCgpOwotICAgIEdMZW51bSBjdXJyZW50VHlw
ZSA9IGZyYW1lYnVmZmVyLT5nZXRJbXBsZW1lbnRhdGlvbkNvbG9yUmVhZFR5cGUoKTsKLSAgICBH
TGVudW0gY3VycmVudEludGVybmFsRm9ybWF0ID0gcmVhZEJ1ZmZlci0+Z2V0SW50ZXJuYWxGb3Jt
YXQoKTsKLSAgICBHTHVpbnQgY2xpZW50VmVyc2lvbiA9IGNvbnRleHQtPmdldENsaWVudFZlcnNp
b24oKTsKLQotICAgIGJvb2wgdmFsaWRSZWFkRm9ybWF0ID0gKGNsaWVudFZlcnNpb24gPCAzKSA/
IFZhbGlkRVMyUmVhZEZvcm1hdFR5cGUoY29udGV4dCwgZm9ybWF0LCB0eXBlKSA6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRFUzNSZWFkRm9y
bWF0VHlwZShjb250ZXh0LCBjdXJyZW50SW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSk7Ci0K
LSAgICBpZiAoIShjdXJyZW50Rm9ybWF0ID09IGZvcm1hdCAmJiBjdXJyZW50VHlwZSA9PSB0eXBl
KSAmJiAhdmFsaWRSZWFkRm9ybWF0KQotICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLQogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMDgwLDI1ICsxOTk5LDQxIEBACiB7
CiAgICAgaWYgKGJ1ZlNpemUgPCAwKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgImJ1ZlNpemUgbXVzdCBiZSBhIHBvc2l0aXZlIG51
bWJlciIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSwgImJ1ZlNpemUgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlciIpKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotICAgIEdMZW51bSBzaXplZEludGVybmFsRm9ybWF0ID0gR2V0
U2l6ZWRJbnRlcm5hbEZvcm1hdChmb3JtYXQsIHR5cGUpOwotICAgIGNvbnN0IEludGVybmFsRm9y
bWF0ICZzaXplZEZvcm1hdEluZm8gPSBHZXRJbnRlcm5hbEZvcm1hdEluZm8oc2l6ZWRJbnRlcm5h
bEZvcm1hdCk7CisgICAgcmV0dXJuIFZhbGlkYXRlUmVhZFBpeGVsc0Jhc2UoY29udGV4dCwgeCwg
eSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBudWxscHRyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVscyk7Cit9CiAKLSAgICBHTHNpemVpIG91
dHB1dFBpdGNoID0KLSAgICAgICAgc2l6ZWRGb3JtYXRJbmZvLmNvbXB1dGVSb3dQaXRjaCh0eXBl
LCB3aWR0aCwgY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRQYWNrQWxpZ25tZW50KCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRQ
YWNrUm93TGVuZ3RoKCkpOwotICAgIC8vIHNpemVkIHF1ZXJ5IHNhbml0eSBjaGVjawotICAgIGlu
dCByZXF1aXJlZFNpemUgPSBvdXRwdXRQaXRjaCAqIGhlaWdodDsKLSAgICBpZiAocmVxdWlyZWRT
aXplID4gYnVmU2l6ZSkKK2Jvb2wgVmFsaWRhdGVSZWFkblBpeGVsc1JvYnVzdEFOR0xFKFZhbGlk
YXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHZvaWQgKmRhdGEpCit7CisgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEVudHJ5
UG9pbnQoY29udGV4dCwgYnVmU2l6ZSkpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgcmV0dXJuIFZhbGlkYXRlUmVhZFBpeGVscyhjb250ZXh0LCB4LCB5LCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CisgICAgaWYgKCFWYWxpZGF0ZVJl
YWRQaXhlbHNCYXNlKGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
YnVmU2l6ZSwgbGVuZ3RoLCBkYXRhKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0QnVmZmVyU2l6ZShjb250ZXh0LCBidWZTaXpl
LCAqbGVuZ3RoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBWYWxpZGF0ZUdlblF1ZXJpZXNFWFQoZ2w6OkNvbnRleHQg
KmNvbnRleHQsIEdMc2l6ZWkgbikKQEAgLTExMDYsNyArMjA0MSw3IEBACiAgICAgaWYgKCFjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkub2NjbHVzaW9uUXVlcnlCb29sZWFuICYmCiAgICAgICAgICFj
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGlzam9pbnRUaW1lclF1ZXJ5KQogICAgIHsKLSAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJRdWVy
eSBleHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiUXVlcnkgZXh0ZW5zaW9uIG5vdCBlbmFibGVk
IikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMTE4LDcgKzIwNTMsNyBA
QAogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLm9jY2x1c2lvblF1ZXJ5Qm9vbGVh
biAmJgogICAgICAgICAhY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRpc2pvaW50VGltZXJRdWVy
eSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OLCAiUXVlcnkgZXh0ZW5zaW9uIG5vdCBlbmFibGVkIikpOworICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIlF1ZXJ5IGV4dGVu
c2lvbiBub3QgZW5hYmxlZCIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAt
MTEyOSwxMyArMjA2NCwxMyBAQAogewogICAgIGlmICghVmFsaWRRdWVyeVR5cGUoY29udGV4dCwg
dGFyZ2V0KSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfRU5VTSwgIkludmFsaWQgcXVlcnkgdGFyZ2V0IikpOworICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIHF1ZXJ5IHRhcmdldCIp
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChpZCA9PSAwKQogICAg
IHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04sICJRdWVyeSBpZCBpcyAwIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTiwgIlF1ZXJ5IGlkIGlzIDAiKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKQEAgLTExNTUsMTEgKzIwOTAsOSBAQAogICAgIC8vICAgICAgIG9m
IEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9FWFQgYW5kIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05T
RVJWQVRJVkVfRVhULAogICAgIC8vICAgICAgIG5vIHF1ZXJ5IG1heSBiZSBhY3RpdmUgZm9yIGVp
dGhlciBpZiBnbEJlZ2luUXVlcnkgdGFyZ2V0cyBlaXRoZXIuCiAKLSAgICAvLyBUT0RPKGV3ZWxs
KTogSSB0aGluayB0aGlzIG5lZWRzIHRvIGJlIGNoYW5nZWQgZm9yIHRpbWVyIGFuZCBvY2NsdXNp
b24gcXVlcmllcyB0byB3b3JrIGF0IHRoZQotICAgIC8vIHNhbWUgdGltZQotICAgIGlmIChjb250
ZXh0LT5nZXRTdGF0ZSgpLmlzUXVlcnlBY3RpdmUoKSkKKyAgICBpZiAoY29udGV4dC0+Z2V0R0xT
dGF0ZSgpLmlzUXVlcnlBY3RpdmUodGFyZ2V0KSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiT3RoZXIgcXVlcnkgaXMgYWN0
aXZlIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgIk90aGVyIHF1ZXJ5IGlzIGFjdGl2ZSIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIApAQCAtMTE2OCw3ICsyMTAxLDcgQEAKICAgICAvLyBjaGVjayB0aGF0IG5hbWUg
d2FzIG9idGFpbmVkIHdpdGggZ2xHZW5RdWVyaWVzCiAgICAgaWYgKCFxdWVyeU9iamVjdCkKICAg
ICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OLCAiSW52YWxpZCBxdWVyeSBpZCIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJJbnZhbGlkIHF1ZXJ5IGlkIikpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMTc1LDcgKzIxMDgsNyBAQAogICAgIC8vIGNo
ZWNrIGZvciB0eXBlIG1pc21hdGNoCiAgICAgaWYgKHF1ZXJ5T2JqZWN0LT5nZXRUeXBlKCkgIT0g
dGFyZ2V0KQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04sICJRdWVyeSB0eXBlIGRvZXMgbm90IG1hdGNoIHRhcmdldCIpKTsKKyAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJR
dWVyeSB0eXBlIGRvZXMgbm90IG1hdGNoIHRhcmdldCIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIApAQCAtMTE4NSw5ICsyMTE4LDkgQEAKIGJvb2wgVmFsaWRhdGVCZWdpblF1ZXJ5
RVhUKGdsOjpDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaWQpCiB7CiAg
ICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkub2NjbHVzaW9uUXVlcnlCb29sZWFuICYm
Ci0gICAgICAgICFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGlzam9pbnRUaW1lclF1ZXJ5KQor
ICAgICAgICAhY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRpc2pvaW50VGltZXJRdWVyeSAmJiAh
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN5bmNRdWVyeSkKICAgICB7Ci0gICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiUXVlcnkgZXh0ZW5z
aW9uIG5vdCBlbmFibGVkIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTiwgIlF1ZXJ5IGV4dGVuc2lvbiBub3QgZW5hYmxlZCIpKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTE5OCwxNSArMjEzMSwxNSBAQAogewog
ICAgIGlmICghVmFsaWRRdWVyeVR5cGUoY29udGV4dCwgdGFyZ2V0KSkKICAgICB7Ci0gICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgcXVl
cnkgdGFyZ2V0IikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX0VOVU0sICJJbnZhbGlkIHF1ZXJ5IHRhcmdldCIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIGNvbnN0IFF1ZXJ5ICpxdWVyeU9iamVjdCA9IGNvbnRleHQtPmdldFN0
YXRlKCkuZ2V0QWN0aXZlUXVlcnkodGFyZ2V0KTsKKyAgICBjb25zdCBRdWVyeSAqcXVlcnlPYmpl
Y3QgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0QWN0aXZlUXVlcnkodGFyZ2V0KTsKIAogICAg
IGlmIChxdWVyeU9iamVjdCA9PSBudWxscHRyKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJRdWVyeSB0YXJnZXQgbm90IGFj
dGl2ZSIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04sICJRdWVyeSB0YXJnZXQgbm90IGFjdGl2ZSIpKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIApAQCAtMTIxNiw5ICsyMTQ5LDkgQEAKIGJvb2wgVmFsaWRhdGVFbmRRdWVy
eUVYVChnbDo6Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCkKIHsKICAgICBpZiAoIWNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5vY2NsdXNpb25RdWVyeUJvb2xlYW4gJiYKLSAgICAgICAg
IWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kaXNqb2ludFRpbWVyUXVlcnkpCisgICAgICAgICFj
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGlzam9pbnRUaW1lclF1ZXJ5ICYmICFjb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuc3luY1F1ZXJ5KQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJRdWVyeSBleHRlbnNpb24gbm90IGVu
YWJsZWQiKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OLCAiUXVlcnkgZXh0ZW5zaW9uIG5vdCBlbmFibGVkIikpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMjI5LDEzICsyMTYyLDEzIEBACiB7CiAgICAgaWYgKCFj
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGlzam9pbnRUaW1lclF1ZXJ5KQogICAgIHsKLSAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJEaXNq
b2ludCB0aW1lciBxdWVyeSBub3QgZW5hYmxlZCIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJEaXNqb2ludCB0aW1lciBxdWVyeSBu
b3QgZW5hYmxlZCIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmICh0
YXJnZXQgIT0gR0xfVElNRVNUQU1QX0VYVCkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgcXVlcnkgdGFyZ2V0IikpOwor
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZh
bGlkIHF1ZXJ5IHRhcmdldCIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAt
MTI0MiwxMyArMjE3NSwxMyBAQAogICAgIFF1ZXJ5ICpxdWVyeU9iamVjdCA9IGNvbnRleHQtPmdl
dFF1ZXJ5KGlkLCB0cnVlLCB0YXJnZXQpOwogICAgIGlmIChxdWVyeU9iamVjdCA9PSBudWxscHRy
KQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04sICJJbnZhbGlkIHF1ZXJ5IGlkIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkludmFsaWQgcXVlcnkgaWQiKSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoY29udGV4dC0+Z2V0U3RhdGUo
KS5pc1F1ZXJ5QWN0aXZlKHF1ZXJ5T2JqZWN0KSkKKyAgICBpZiAoY29udGV4dC0+Z2V0R0xTdGF0
ZSgpLmlzUXVlcnlBY3RpdmUocXVlcnlPYmplY3QpKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJRdWVyeSBpcyBhY3RpdmUi
KSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OLCAiUXVlcnkgaXMgYWN0aXZlIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CkBAIC0xMjU1LDExICsyMTg4LDE2IEBACiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVHZXRRdWVyeWl2QmFzZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gcG5hbWUpCitib29sIFZhbGlkYXRlR2V0UXVlcnlpdkJhc2UoQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpICpudW1QYXJhbXMpCiB7CisgICAg
aWYgKG51bVBhcmFtcykKKyAgICB7CisgICAgICAgICpudW1QYXJhbXMgPSAwOworICAgIH0KKwog
ICAgIGlmICghVmFsaWRRdWVyeVR5cGUoY29udGV4dCwgdGFyZ2V0KSAmJiB0YXJnZXQgIT0gR0xf
VElNRVNUQU1QX0VYVCkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgcXVlcnkgdHlwZSIpKTsKKyAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBxdWVyeSB0eXBl
IikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMjY4LDcgKzIyMDYsNyBA
QAogICAgICAgICBjYXNlIEdMX0NVUlJFTlRfUVVFUllfRVhUOgogICAgICAgICAgICAgaWYgKHRh
cmdldCA9PSBHTF9USU1FU1RBTVBfRVhUKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKAorICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKAogICAgICAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX0VOVU0sICJDYW5ub3Qg
dXNlIGN1cnJlbnQgcXVlcnkgZm9yIHRpbWVzdGFtcCIpKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICB9CkBAIC0xMjc3LDE1ICsyMjE1LDIxIEBACiAgICAgICAg
ICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kaXNqb2ludFRpbWVyUXVlcnkgfHwK
ICAgICAgICAgICAgICAgICAodGFyZ2V0ICE9IEdMX1RJTUVTVEFNUF9FWFQgJiYgdGFyZ2V0ICE9
IEdMX1RJTUVfRUxBUFNFRF9FWFQpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgcG5hbWUi
KSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9FTlVNLCAiSW52YWxpZCBwbmFtZSIpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIklu
dmFsaWQgcG5hbWUiKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIHBuYW1lIikpOwogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAorICAgIGlmIChudW1QYXJhbXMpCisgICAgeworICAgICAgICAvLyBBbGwg
cXVlcmllcyByZXR1cm4gb25seSBvbmUgdmFsdWUKKyAgICAgICAgKm51bVBhcmFtcyA9IDE7Cisg
ICAgfQorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEyOTIsMjggKzIyMzYsNTggQEAKIGJv
b2wgVmFsaWRhdGVHZXRRdWVyeWl2RVhUKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQs
IEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5vY2NsdXNpb25RdWVyeUJvb2xlYW4gJiYKLSAgICAgICAgIWNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5kaXNqb2ludFRpbWVyUXVlcnkpCisgICAgICAgICFjb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuZGlzam9pbnRUaW1lclF1ZXJ5ICYmICFjb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuc3luY1F1ZXJ5KQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sICJRdWVyeSBleHRlbnNpb24gbm90IGVuYWJsZWQiKSk7Cisg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAi
UXVlcnkgZXh0ZW5zaW9uIG5vdCBlbmFibGVkIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCi0gICAgcmV0dXJuIFZhbGlkYXRlR2V0UXVlcnlpdkJhc2UoY29udGV4dCwgdGFyZ2V0
LCBwbmFtZSk7CisgICAgcmV0dXJuIFZhbGlkYXRlR2V0UXVlcnlpdkJhc2UoY29udGV4dCwgdGFy
Z2V0LCBwbmFtZSwgbnVsbHB0cik7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdFZh
bHVlQmFzZShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSkKK2Jvb2wg
VmFsaWRhdGVHZXRRdWVyeWl2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgKnBhcmFtcykKIHsKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0RW50cnlQb2lu
dChjb250ZXh0LCBidWZTaXplKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBpZiAoIVZhbGlkYXRlR2V0UXVlcnlpdkJhc2UoY29udGV4dCwgdGFyZ2V0LCBwbmFt
ZSwgbGVuZ3RoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBp
ZiAoIVZhbGlkYXRlUm9idXN0QnVmZmVyU2l6ZShjb250ZXh0LCBidWZTaXplLCAqbGVuZ3RoKSkK
KyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0VmFsdWVCYXNlKENvbnRleHQgKmNvbnRl
eHQsIEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpICpudW1QYXJhbXMpCit7CisgICAg
aWYgKG51bVBhcmFtcykKKyAgICB7CisgICAgICAgICpudW1QYXJhbXMgPSAwOworICAgIH0KKwog
ICAgIFF1ZXJ5ICpxdWVyeU9iamVjdCA9IGNvbnRleHQtPmdldFF1ZXJ5KGlkLCBmYWxzZSwgR0xf
Tk9ORSk7CiAKICAgICBpZiAoIXF1ZXJ5T2JqZWN0KQogICAgIHsKLSAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJRdWVyeSBkb2VzIG5vdCBl
eGlzdCIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04sICJRdWVyeSBkb2VzIG5vdCBleGlzdCIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIGlmIChjb250ZXh0LT5nZXRTdGF0ZSgpLmlzUXVlcnlBY3RpdmUocXVl
cnlPYmplY3QpKQorICAgIGlmIChjb250ZXh0LT5nZXRHTFN0YXRlKCkuaXNRdWVyeUFjdGl2ZShx
dWVyeU9iamVjdCkpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTiwgIlF1ZXJ5IGN1cnJlbnRseSBhY3RpdmUiKSk7CisgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiUXVlcnkg
Y3VycmVudGx5IGFjdGl2ZSIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAt
MTMyNCwxMCArMjI5OCwxNSBAQAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSwgIkludmFsaWQgcG5hbWUgZW51bSIpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgcG5hbWUgZW51bSIpKTsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBpZiAobnVtUGFyYW1zKQorICAgIHsK
KyAgICAgICAgKm51bVBhcmFtcyA9IDE7CisgICAgfQorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTEzMzUsNDMgKzIzMTQsMTY4IEBACiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkuZGlzam9pbnRUaW1lclF1ZXJ5KQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJUaW1lciBxdWVyeSBleHRlbnNpb24g
bm90IGVuYWJsZWQiKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAiVGltZXIgcXVlcnkgZXh0ZW5zaW9uIG5vdCBlbmFibGVkIikpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIHJldHVybiBWYWxpZGF0ZUdldFF1ZXJ5
T2JqZWN0VmFsdWVCYXNlKGNvbnRleHQsIGlkLCBwbmFtZSk7CisgICAgcmV0dXJuIFZhbGlkYXRl
R2V0UXVlcnlPYmplY3RWYWx1ZUJhc2UoY29udGV4dCwgaWQsIHBuYW1lLCBudWxscHRyKTsKIH0K
IAorYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJh
bXMpCit7CisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGlzam9pbnRUaW1lclF1
ZXJ5KQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04sICJUaW1lciBxdWVyeSBleHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0RW50cnlQ
b2ludChjb250ZXh0LCBidWZTaXplKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBpZiAoIVZhbGlkYXRlR2V0UXVlcnlPYmplY3RWYWx1ZUJhc2UoY29udGV4dCwg
aWQsIHBuYW1lLCBsZW5ndGgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIGlmICghVmFsaWRhdGVSb2J1c3RCdWZmZXJTaXplKGNvbnRleHQsIGJ1ZlNpemUsICps
ZW5ndGgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVy
biB0cnVlOworfQorCiBib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aXZFWFQoQ29udGV4dCAq
Y29udGV4dCwgR0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMdWludCAqcGFyYW1zKQogewogICAg
IGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRpc2pvaW50VGltZXJRdWVyeSAmJgotICAg
ICAgICAhY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLm9jY2x1c2lvblF1ZXJ5Qm9vbGVhbikKKyAg
ICAgICAgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5vY2NsdXNpb25RdWVyeUJvb2xlYW4gJiYg
IWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zeW5jUXVlcnkpCiAgICAgewotICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIlF1ZXJ5IGV4dGVu
c2lvbiBub3QgZW5hYmxlZCIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sICJRdWVyeSBleHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgcmV0dXJuIFZhbGlkYXRlR2V0UXVlcnlP
YmplY3RWYWx1ZUJhc2UoY29udGV4dCwgaWQsIHBuYW1lKTsKKyAgICByZXR1cm4gVmFsaWRhdGVH
ZXRRdWVyeU9iamVjdFZhbHVlQmFzZShjb250ZXh0LCBpZCwgcG5hbWUsIG51bGxwdHIpOwogfQog
Citib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZT
aXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAq
bGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
ICpwYXJhbXMpCit7CisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGlzam9pbnRU
aW1lclF1ZXJ5ICYmCisgICAgICAgICFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkub2NjbHVzaW9u
UXVlcnlCb29sZWFuICYmICFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3luY1F1ZXJ5KQorICAg
IHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04sICJRdWVyeSBleHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0RW50cnlQb2ludChjb250ZXh0LCBi
dWZTaXplKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAo
IVZhbGlkYXRlR2V0UXVlcnlPYmplY3RWYWx1ZUJhc2UoY29udGV4dCwgaWQsIHBuYW1lLCBsZW5n
dGgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghVmFs
aWRhdGVSb2J1c3RCdWZmZXJTaXplKGNvbnRleHQsIGJ1ZlNpemUsICpsZW5ndGgpKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiBi
b29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RpNjR2RVhUKENvbnRleHQgKmNvbnRleHQsIEdMdWlu
dCBpZCwgR0xlbnVtIHBuYW1lLCBHTGludDY0ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFjb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkuZGlzam9pbnRUaW1lclF1ZXJ5KQogICAgIHsKLSAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJUaW1lciBxdWVy
eSBleHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiVGltZXIgcXVlcnkgZXh0ZW5zaW9uIG5vdCBl
bmFibGVkIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIHJldHVybiBWYWxp
ZGF0ZUdldFF1ZXJ5T2JqZWN0VmFsdWVCYXNlKGNvbnRleHQsIGlkLCBwbmFtZSk7CisgICAgcmV0
dXJuIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RWYWx1ZUJhc2UoY29udGV4dCwgaWQsIHBuYW1lLCBu
dWxscHRyKTsKIH0KIAorYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xF
KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50NjQgKnBhcmFtcykKK3sKKyAgICBpZiAoIWNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5kaXNqb2ludFRpbWVyUXVlcnkpCisgICAgeworICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIlRpbWVyIHF1ZXJ5IGV4dGVu
c2lvbiBub3QgZW5hYmxlZCIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IGlmICghVmFsaWRhdGVSb2J1c3RFbnRyeVBvaW50KGNvbnRleHQsIGJ1ZlNpemUpKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghVmFsaWRhdGVHZXRRdWVy
eU9iamVjdFZhbHVlQmFzZShjb250ZXh0LCBpZCwgcG5hbWUsIGxlbmd0aCkpCisgICAgeworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEJ1ZmZl
clNpemUoY29udGV4dCwgYnVmU2l6ZSwgKmxlbmd0aCkpCisgICAgeworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgVmFsaWRhdGVHZXRR
dWVyeU9iamVjdHVpNjR2RVhUKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpZCwgR0xlbnVtIHBu
YW1lLCBHTHVpbnQ2NCAqcGFyYW1zKQogewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLmRpc2pvaW50VGltZXJRdWVyeSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiVGltZXIgcXVlcnkgZXh0ZW5zaW9uIG5v
dCBlbmFibGVkIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTiwgIlRpbWVyIHF1ZXJ5IGV4dGVuc2lvbiBub3QgZW5hYmxlZCIpKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICByZXR1cm4gVmFsaWRhdGVHZXRRdWVyeU9i
amVjdFZhbHVlQmFzZShjb250ZXh0LCBpZCwgcG5hbWUpOworICAgIHJldHVybiBWYWxpZGF0ZUdl
dFF1ZXJ5T2JqZWN0VmFsdWVCYXNlKGNvbnRleHQsIGlkLCBwbmFtZSwgbnVsbHB0cik7CiB9CiAK
K2Jvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQ2NCAqcGFyYW1zKQoreworICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLmRpc2pvaW50VGltZXJRdWVyeSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiVGltZXIgcXVlcnkgZXh0ZW5zaW9uIG5v
dCBlbmFibGVkIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFW
YWxpZGF0ZVJvYnVzdEVudHJ5UG9pbnQoY29udGV4dCwgYnVmU2l6ZSkpCisgICAgeworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0
VmFsdWVCYXNlKGNvbnRleHQsIGlkLCBwbmFtZSwgbGVuZ3RoKSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0QnVmZmVyU2l6ZShj
b250ZXh0LCBidWZTaXplLCAqbGVuZ3RoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGljIGJvb2wgVmFsaWRhdGVVbmlm
b3JtQ29tbW9uQmFzZShnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldFVuaWZvcm1UeXBlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKQEAgLTEzODAsMTggKzI0
ODQsMTggQEAKIHsKICAgICBpZiAoY291bnQgPCAwKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbSA9IGNvbnRleHQtPmdldFN0YXRl
KCkuZ2V0UHJvZ3JhbSgpOworICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtID0gY29udGV4dC0+Z2V0
R0xTdGF0ZSgpLmdldFByb2dyYW0oKTsKICAgICBpZiAoIXByb2dyYW0pCiAgICAgewotICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKGxvY2F0aW9uID09IC0xKQor
ICAgIGlmIChwcm9ncmFtLT5pc0lnbm9yZWRVbmlmb3JtTG9jYXRpb24obG9jYXRpb24pKQogICAg
IHsKICAgICAgICAgLy8gU2lsZW50bHkgaWdub3JlIHRoZSB1bmlmb3JtIGNvbW1hbmQKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTM5OSw3ICsyNTAzLDcgQEAKIAogICAgIGlmICghcHJvZ3Jh
bS0+aXNWYWxpZFVuaWZvcm1Mb2NhdGlvbihsb2NhdGlvbikpCiAgICAgewotICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xNDA4LDcgKzI1MTIsNyBAQAogICAgIC8vIGF0
dGVtcHRpbmcgdG8gd3JpdGUgYW4gYXJyYXkgdG8gYSBub24tYXJyYXkgdW5pZm9ybSBpcyBhbiBJ
TlZBTElEX09QRVJBVElPTgogICAgIGlmICghdW5pZm9ybS5pc0FycmF5KCkgJiYgY291bnQgPiAx
KQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTQxOSw5
ICsyNTIzLDEwIEBACiBib29sIFZhbGlkYXRlVW5pZm9ybShnbDo6Q29udGV4dCAqY29udGV4dCwg
R0xlbnVtIHVuaWZvcm1UeXBlLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCkKIHsKICAg
ICAvLyBDaGVjayBmb3IgRVMzIHVuaWZvcm0gZW50cnkgcG9pbnRzCi0gICAgaWYgKFZhcmlhYmxl
Q29tcG9uZW50VHlwZSh1bmlmb3JtVHlwZSkgPT0gR0xfVU5TSUdORURfSU5UICYmIGNvbnRleHQt
PmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgaWYgKFZhcmlhYmxlQ29tcG9uZW50VHlwZSh1
bmlmb3JtVHlwZSkgPT0gR0xfVU5TSUdORURfSU5UICYmCisgICAgICAgIGNvbnRleHQtPmdldENs
aWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKQEAgLTE0MzUsNyArMjU0MCw3IEBACiAgICAgYm9vbCBzYW1wbGVyVW5pZm9y
bUNoZWNrID0gKElzU2FtcGxlclR5cGUodW5pZm9ybS0+dHlwZSkgJiYgdW5pZm9ybVR5cGUgPT0g
R0xfSU5UKTsKICAgICBpZiAoIXNhbXBsZXJVbmlmb3JtQ2hlY2sgJiYgdW5pZm9ybVR5cGUgIT0g
dW5pZm9ybS0+dHlwZSAmJiB0YXJnZXRCb29sVHlwZSAhPSB1bmlmb3JtLT50eXBlKQogICAgIHsK
LSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
KTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTQ0OCwxNSArMjU1Mywx
NSBAQAogICAgIC8vIENoZWNrIGZvciBFUzMgdW5pZm9ybSBlbnRyeSBwb2ludHMKICAgICBpbnQg
cm93cyA9IFZhcmlhYmxlUm93Q291bnQobWF0cml4VHlwZSk7CiAgICAgaW50IGNvbHMgPSBWYXJp
YWJsZUNvbHVtbkNvdW50KG1hdHJpeFR5cGUpOwotICAgIGlmIChyb3dzICE9IGNvbHMgJiYgY29u
dGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICBpZiAocm93cyAhPSBjb2xzICYmIGNv
bnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7Ci0gICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAodHJhbnNwb3NlICE9IEdMX0ZBTFNFICYm
IGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgaWYgKHRyYW5zcG9zZSAhPSBH
TF9GQUxTRSAmJiBjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgewot
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Cisg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTQ2OCw3ICsyNTczLDcgQEAKIAogICAg
IGlmICh1bmlmb3JtLT50eXBlICE9IG1hdHJpeFR5cGUpCiAgICAgewotICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xNDc1LDExICsyNTgwLDE0IEBACiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVTdGF0ZVF1ZXJ5KGdsOjpDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gcG5hbWUsIEdMZW51bSAqbmF0aXZlVHlwZSwgdW5zaWduZWQgaW50ICpudW1QYXJh
bXMpCitib29sIFZhbGlkYXRlU3RhdGVRdWVyeShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSAqbmF0aXZlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCAqbnVtUGFyYW1zKQogewogICAgIGlmICghY29udGV4dC0+Z2V0UXVlcnlQYXJhbWV0
ZXJJbmZvKHBuYW1lLCBuYXRpdmVUeXBlLCBudW1QYXJhbXMpKQogICAgIHsKLSAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCkBAIC0xNDkxLDcgKzI1OTksNyBAQAogCiAgICAgICAgIGlmIChjb2xv
ckF0dGFjaG1lbnQgPj0gY2Fwcy5tYXhEcmF3QnVmZmVycykKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNTA0
LDEwICsyNjEyLDEyIEBACiAgICAgICBjYXNlIEdMX1RFWFRVUkVfQklORElOR18yRF9BUlJBWToK
ICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEdMX1RFWFRVUkVfQklORElOR19FWFRFUk5BTF9P
RVM6Ci0gICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZWdsU3RyZWFtQ29u
c3VtZXJFeHRlcm5hbCkKKyAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5l
Z2xTdHJlYW1Db25zdW1lckV4dGVybmFsICYmCisgICAgICAgICAgICAgICFjb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuZWdsSW1hZ2VFeHRlcm5hbCkKICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKAotICAgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJ
RF9FTlVNLCAiTlZfRUdMX3N0cmVhbV9jb25zdW1lcl9leHRlcm5hbCBleHRlbnNpb24gbm90IGVu
YWJsZWQiKSk7CisgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfRU5VTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5l
aXRoZXIgTlZfRUdMX3N0cmVhbV9jb25zdW1lcl9leHRlcm5hbCBub3IgIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCBl
eHRlbnNpb25zIGVuYWJsZWQiKSk7CiAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICB9CiAgICAgICAgICAgYnJlYWs7CkBAIC0xNTE1LDExICsyNjI1LDE5IEBACiAgICAgICBj
YXNlIEdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRToKICAgICAgIGNhc2UgR0xfSU1Q
TEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JNQVQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIEZy
YW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0UmVhZEZyYW1l
YnVmZmVyKCk7CisgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFJlYWRG
cmFtZWJ1ZmZlcigpLT5jaGVja1N0YXR1cygKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+
Z2V0Q29udGV4dFN0YXRlKCkpICE9IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBjb250
ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0UmVhZEZyYW1lYnVmZmVyKCk7CiAgICAgICAgICAgICBBU1NF
UlQoZnJhbWVidWZmZXIpOwotICAgICAgICAgICAgaWYgKGZyYW1lYnVmZmVyLT5jaGVja1N0YXR1
cyhjb250ZXh0LT5nZXREYXRhKCkpICE9IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQorCisgICAg
ICAgICAgICBpZiAoZnJhbWVidWZmZXItPmdldFJlYWRCdWZmZXJTdGF0ZSgpID09IEdMX05PTkUp
CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIlJlYWQgYnVmZmVyIGlzIEdMX05P
TkUiKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogCkBA
IC0xNTI2LDcgKzI2NDQsNyBAQAogICAgICAgICAgICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2ht
ZW50ICphdHRhY2htZW50ID0gZnJhbWVidWZmZXItPmdldFJlYWRDb2xvcmJ1ZmZlcigpOwogICAg
ICAgICAgICAgaWYgKCFhdHRhY2htZW50KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAg
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KQEAgLTE1MzcsNyArMjY1NSw3IEBACiAgICAgfQogCiAgICAgLy8gcG5hbWUgaXMgdmFs
aWQsIGJ1dCB0aGVyZSBhcmUgbm8gcGFyYW1ldGVycyB0byByZXR1cm4KLSAgICBpZiAobnVtUGFy
YW1zID09IDApCisgICAgaWYgKCpudW1QYXJhbXMgPT0gMCkKICAgICB7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CkBAIC0xNTQ1LDYgKzI2NjMsMzAgQEAKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorYm9vbCBWYWxpZGF0ZVJvYnVzdFN0YXRlUXVlcnkoVmFsaWRhdGlvbkNvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gKm5hdGl2ZVR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgKm51bVBhcmFtcykKK3sKKyAgICBpZiAoIVZhbGlkYXRl
Um9idXN0RW50cnlQb2ludChjb250ZXh0LCBidWZTaXplKSkKKyAgICB7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlkYXRlU3RhdGVRdWVyeShjb250ZXh0LCBw
bmFtZSwgbmF0aXZlVHlwZSwgbnVtUGFyYW1zKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0QnVmZmVyU2l6ZShjb250ZXh0LCBi
dWZTaXplLCAqbnVtUGFyYW1zKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBWYWxpZGF0ZUNvcHlUZXhJbWFnZVBhcmFt
ZXRlcnNCYXNlKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCkBAIC0xNTU4LDQ2ICsyNzAwLDUyIEBA
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICp0ZXh0dXJlRm9y
bWF0T3V0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdCAq
dGV4dHVyZUZvcm1hdE91dCkKIHsKICAgICBpZiAobGV2ZWwgPCAwIHx8IHhvZmZzZXQgPCAwIHx8
IHlvZmZzZXQgPCAwIHx8IHpvZmZzZXQgPCAwIHx8IHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwKQog
ICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSkpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVF
KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoc3RkOjpudW1lcmlj
X2xpbWl0czxHTHNpemVpPjo6bWF4KCkgLSB4b2Zmc2V0IDwgd2lkdGggfHwgc3RkOjpudW1lcmlj
X2xpbWl0czxHTHNpemVpPjo6bWF4KCkgLSB5b2Zmc2V0IDwgaGVpZ2h0KQogICAgIHsKLSAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoYm9yZGVyICE9IDApCiAgICAgewotICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmICghVmFsaWRNaXBMZXZlbChjb250ZXh0
LCB0YXJnZXQsIGxldmVsKSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldFN0YXRl
KCkuZ2V0UmVhZEZyYW1lYnVmZmVyKCk7Ci0gICAgaWYgKGZyYW1lYnVmZmVyLT5jaGVja1N0YXR1
cyhjb250ZXh0LT5nZXREYXRhKCkpICE9IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQorICAgIGNv
bnN0IGF1dG8gJnN0YXRlICAgID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpOworICAgIGF1dG8gcmVh
ZEZyYW1lYnVmZmVyID0gc3RhdGUuZ2V0UmVhZEZyYW1lYnVmZmVyKCk7CisgICAgaWYgKHJlYWRG
cmFtZWJ1ZmZlci0+Y2hlY2tTdGF0dXMoY29udGV4dC0+Z2V0Q29udGV4dFN0YXRlKCkpICE9IEdM
X0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04pKTsKKyAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04p
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGNvbnN0IGF1dG8gJnN0YXRl
ID0gY29udGV4dC0+Z2V0U3RhdGUoKTsKLSAgICBpZiAoc3RhdGUuZ2V0UmVhZEZyYW1lYnVmZmVy
KCktPmlkKCkgIT0gMCAmJiBmcmFtZWJ1ZmZlci0+Z2V0U2FtcGxlcyhjb250ZXh0LT5nZXREYXRh
KCkpICE9IDApCisgICAgaWYgKHJlYWRGcmFtZWJ1ZmZlci0+aWQoKSAhPSAwICYmIHJlYWRGcmFt
ZWJ1ZmZlci0+Z2V0U2FtcGxlcyhjb250ZXh0LT5nZXRDb250ZXh0U3RhdGUoKSkgIT0gMCkKICAg
ICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBpZiAocmVhZEZy
YW1lYnVmZmVyLT5nZXRSZWFkQnVmZmVyU3RhdGUoKSA9PSBHTF9OT05FKQorICAgIHsKKyAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJSZWFk
IGJ1ZmZlciBpcyBHTF9OT05FIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAg
ICAgY29uc3QgZ2w6OkNhcHMgJmNhcHMgPSBjb250ZXh0LT5nZXRDYXBzKCk7CiAKICAgICBHTHVp
bnQgbWF4RGltZW5zaW9uID0gMDsKQEAgLTE2MjUsNyArMjc3Myw3IEBACiAgICAgICAgIGJyZWFr
OwogCiAgICAgICBkZWZhdWx0OgotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTYz
MywxMyArMjc4MSwxMyBAQAogICAgICAgICBzdGF0ZS5nZXRUYXJnZXRUZXh0dXJlKElzQ3ViZU1h
cFRleHR1cmVUYXJnZXQodGFyZ2V0KSA/IEdMX1RFWFRVUkVfQ1VCRV9NQVAgOiB0YXJnZXQpOwog
ICAgIGlmICghdGV4dHVyZSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKICAgICBpZiAodGV4dHVyZS0+Z2V0SW1tdXRhYmxlRm9ybWF0KCkgJiYgIWlzU3ViSW1h
Z2UpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xNjQ3
LDEzICsyNzk1LDEzIEBACiAKICAgICBpZiAoZm9ybWF0SW5mby5kZXB0aEJpdHMgPiAwKQogICAg
IHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChmb3JtYXRJ
bmZvLmNvbXByZXNzZWQgJiYgIVZhbGlkQ29tcHJlc3NlZEltYWdlU2l6ZShjb250ZXh0LCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCkpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCkBAIC0xNjYzLDcgKzI4MTEsNyBAQAogICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8c2l6ZV90Pih5b2Zmc2V0ICsgaGVpZ2h0KSA+IHRleHR1cmUtPmdldEhlaWdodCh0YXJn
ZXQsIGxldmVsKSB8fAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c2l6ZV90Pih6b2Zmc2V0KSA+
PSB0ZXh0dXJlLT5nZXREZXB0aCh0YXJnZXQsIGxldmVsKSkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtMTY3MSwxMyArMjgx
OSwxMyBAQAogICAgIHsKICAgICAgICAgaWYgKElzQ3ViZU1hcFRleHR1cmVUYXJnZXQodGFyZ2V0
KSAmJiB3aWR0aCAhPSBoZWlnaHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghZm9ybWF0SW5mby50ZXh0dXJlU3Vw
cG9ydChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCksIGNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KSkpCisgICAgICAgIGlmICghZm9ybWF0SW5mby50ZXh0dXJlU3VwcG9ydChjb250ZXh0LT5nZXRD
bGllbnRNYWpvclZlcnNpb24oKSwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKSkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVN
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VO
VU0pKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCkBAIC0xNjg0LDEy
ICsyODMyLDE1IEBACiAgICAgICAgIGludCBtYXhMZXZlbERpbWVuc2lvbiA9IChtYXhEaW1lbnNp
b24gPj4gbGV2ZWwpOwogICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50Pih3aWR0aCkgPiBtYXhM
ZXZlbERpbWVuc2lvbiB8fCBzdGF0aWNfY2FzdDxpbnQ+KGhlaWdodCkgPiBtYXhMZXZlbERpbWVu
c2lvbikKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAgICAgfQogCi0gICAgKnRleHR1cmVGb3JtYXRPdXQgPSB0ZXh0dXJlLT5nZXRJbnRlcm5h
bEZvcm1hdCh0YXJnZXQsIGxldmVsKTsKKyAgICBpZiAodGV4dHVyZUZvcm1hdE91dCkKKyAgICB7
CisgICAgICAgICp0ZXh0dXJlRm9ybWF0T3V0ID0gdGV4dHVyZS0+Z2V0Rm9ybWF0KHRhcmdldCwg
bGV2ZWwpOworICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTcwOSwyOCArMjg2MCwy
OCBAQAogICAgICAgY2FzZSBHTF9UUklBTkdMRV9GQU46CiAgICAgICAgIGJyZWFrOwogICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9F
TlVNKSk7CisgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9F
TlVNKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoY291bnQgPCAw
KQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSkpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZB
TFVFKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBjb25zdCBTdGF0ZSAm
c3RhdGUgPSBjb250ZXh0LT5nZXRTdGF0ZSgpOworICAgIGNvbnN0IFN0YXRlICZzdGF0ZSA9IGNv
bnRleHQtPmdldEdMU3RhdGUoKTsKIAogICAgIC8vIENoZWNrIGZvciBtYXBwZWQgYnVmZmVycwog
ICAgIGlmIChzdGF0ZS5oYXNNYXBwZWRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSKSkKICAgICB7Ci0g
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7
CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBGcmFtZWJ1ZmZlciAqZnJh
bWVidWZmZXIgPSBzdGF0ZS5nZXREcmF3RnJhbWVidWZmZXIoKTsKICAgICBpZiAoY29udGV4dC0+
Z2V0TGltaXRhdGlvbnMoKS5ub1NlcGFyYXRlU3RlbmNpbFJlZnNBbmRNYXNrcykKICAgICB7Ci0g
ICAgICAgIGNvbnN0IEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciAgICAgICAgICAgICA9IGNvbnRl
eHQtPmdldFN0YXRlKCkuZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7CiAgICAgICAgIGNvbnN0IEZyYW1l
YnVmZmVyQXR0YWNobWVudCAqc3RlbmNpbEJ1ZmZlciA9IGZyYW1lYnVmZmVyLT5nZXRTdGVuY2ls
YnVmZmVyKCk7CiAgICAgICAgIEdMdWludCBzdGVuY2lsQml0cyAgICAgICAgICAgICAgICAgICAg
ICAgICA9IHN0ZW5jaWxCdWZmZXIgPyBzdGVuY2lsQnVmZmVyLT5nZXRTdGVuY2lsU2l6ZSgpIDog
MDsKICAgICAgICAgR0x1aW50IG1pbmltdW1SZXF1aXJlZFN0ZW5jaWxNYXNrICAgICAgICAgID0g
KDEgPDwgc3RlbmNpbEJpdHMpIC0gMTsKQEAgLTE3NDYsMTUgKzI4OTcsMTQgQEAKICAgICAgICAg
ICAgIEVSUigKICAgICAgICAgICAgICAgICAiVGhpcyBBTkdMRSBpbXBsZW1lbnRhdGlvbiBkb2Vz
IG5vdCBzdXBwb3J0IHNlcGFyYXRlIGZyb250L2JhY2sgc3RlbmNpbCAiCiAgICAgICAgICAgICAg
ICAgIndyaXRlbWFza3MsIHJlZmVyZW5jZSB2YWx1ZXMsIG9yIHN0ZW5jaWwgbWFzayB2YWx1ZXMu
Iik7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTikpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgIH0KIAotICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZmJvID0gc3RhdGUuZ2V0RHJhd0Zy
YW1lYnVmZmVyKCk7Ci0gICAgaWYgKCFmYm8gfHwgZmJvLT5jaGVja1N0YXR1cyhjb250ZXh0LT5n
ZXREYXRhKCkpICE9IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQorICAgIGlmIChmcmFtZWJ1ZmZl
ci0+Y2hlY2tTdGF0dXMoY29udGV4dC0+Z2V0Q29udGV4dFN0YXRlKCkpICE9IEdMX0ZSQU1FQlVG
RkVSX0NPTVBMRVRFKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04pKTsKKyAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04pKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTc2MSwxMyArMjkxMSwxMyBAQAogICAgIGds
OjpQcm9ncmFtICpwcm9ncmFtID0gc3RhdGUuZ2V0UHJvZ3JhbSgpOwogICAgIGlmICghcHJvZ3Jh
bSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAo
IXByb2dyYW0tPnZhbGlkYXRlU2FtcGxlcnMoTlVMTCwgY29udGV4dC0+Z2V0Q2FwcygpKSkKICAg
ICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE3ODIsNyArMjkz
Miw5IEBACiAgICAgICAgIGlmICh1bmlmb3JtQnVmZmVyLmdldCgpID09IG51bGxwdHIpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIC8vIHVuZGVmaW5lZCBiZWhhdmlvdXIKLSAgICAgICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiSXQgaXMgdW5k
ZWZpbmVkIGJlaGF2aW91ciB0byBoYXZlIGEgdXNlZCBidXQgdW5ib3VuZCB1bmlmb3JtIGJ1ZmZl
ci4iKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgICAg
ICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAiSXQg
aXMgdW5kZWZpbmVkIGJlaGF2aW91ciB0byBoYXZlIGEgdXNlZCBidXQgdW5ib3VuZCB1bmlmb3Jt
IGJ1ZmZlci4iKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApAQCAt
MTc5Niw3ICsyOTQ4LDkgQEAKICAgICAgICAgaWYgKHVuaWZvcm1CdWZmZXJTaXplIDwgdW5pZm9y
bUJsb2NrLmRhdGFTaXplKQogICAgICAgICB7CiAgICAgICAgICAgICAvLyB1bmRlZmluZWQgYmVo
YXZpb3VyCi0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTiwgIkl0IGlzIHVuZGVmaW5lZCBiZWhhdmlvdXIgdG8gdXNlIGEgdW5pZm9ybSBi
dWZmZXIgdGhhdCBpcyB0b28gc21hbGwuIikpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoCisgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCisgICAg
ICAgICAgICAgICAgICAgICAgIkl0IGlzIHVuZGVmaW5lZCBiZWhhdmlvdXIgdG8gdXNlIGEgdW5p
Zm9ybSBidWZmZXIgdGhhdCBpcyB0b28gc21hbGwuIikpOwogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtMTgwNSwxNSArMjk1OSwxOSBAQAogICAgIHJldHVy
biAoY291bnQgPiAwKTsKIH0KIAotYm9vbCBWYWxpZGF0ZURyYXdBcnJheXMoQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIHBy
aW1jb3VudCkKK2Jvb2wgVmFsaWRhdGVEcmF3QXJyYXlzKFZhbGlkYXRpb25Db250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBmaXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHByaW1jb3VudCkKIHsKICAg
ICBpZiAoZmlyc3QgPCAwKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAg
ICBjb25zdCBTdGF0ZSAmc3RhdGUgPSBjb250ZXh0LT5nZXRTdGF0ZSgpOworICAgIGNvbnN0IFN0
YXRlICZzdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgPSBjb250ZXh0LT5nZXRHTFN0YXRl
KCk7CiAgICAgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrICpjdXJUcmFuc2Zvcm1GZWVkYmFjayA9IHN0
YXRlLmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpOwogICAgIGlmIChjdXJUcmFuc2Zvcm1G
ZWVkYmFjayAmJiBjdXJUcmFuc2Zvcm1GZWVkYmFjay0+aXNBY3RpdmUoKSAmJiAhY3VyVHJhbnNm
b3JtRmVlZGJhY2stPmlzUGF1c2VkKCkgJiYKICAgICAgICAgY3VyVHJhbnNmb3JtRmVlZGJhY2st
PmdldFByaW1pdGl2ZU1vZGUoKSAhPSBtb2RlKQpAQCAtMTgyMSw3ICsyOTc5LDcgQEAKICAgICAg
ICAgLy8gSXQgaXMgYW4gaW52YWxpZCBvcGVyYXRpb24gdG8gY2FsbCBEcmF3QXJyYXlzIG9yIERy
YXdBcnJheXNJbnN0YW5jZWQgd2l0aCBhIGRyYXcgbW9kZQogICAgICAgICAvLyB0aGF0IGRvZXMg
bm90IG1hdGNoIHRoZSBjdXJyZW50IHRyYW5zZm9ybSBmZWVkYmFjayBvYmplY3QncyBkcmF3IG1v
ZGUgKGlmIHRyYW5zZm9ybSBmZWVkYmFjawogICAgICAgICAvLyBpcyBhY3RpdmUpLCAoMy4wLjIs
IHNlY3Rpb24gMi4xNCwgcGcgODYpCi0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKQEAgLTE4NDIsNyArMzAwMCw3IEBACiB7CiAgICAgaWYgKHByaW1jb3VudCA8IDApCiAgICAg
ewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7
CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTg1OCw3ICszMDE2LDcgQEAKIHN0
YXRpYyBib29sIFZhbGlkYXRlRHJhd0luc3RhbmNlZEFOR0xFKENvbnRleHQgKmNvbnRleHQpCiB7
CiAgICAgLy8gVmVyaWZ5IHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBhY3RpdmUgYXR0cmlidXRlIHdp
dGggYSBkaXZpc29yIG9mIHplcm8KLSAgICBjb25zdCBnbDo6U3RhdGUmIHN0YXRlID0gY29udGV4
dC0+Z2V0U3RhdGUoKTsKKyAgICBjb25zdCBnbDo6U3RhdGUgJnN0YXRlID0gY29udGV4dC0+Z2V0
R0xTdGF0ZSgpOwogCiAgICAgZ2w6OlByb2dyYW0gKnByb2dyYW0gPSBzdGF0ZS5nZXRQcm9ncmFt
KCk7CiAKQEAgLTE4NzIsOCArMzAzMCw5IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkFOR0xFX2luc3Rh
bmNlZF9hcnJheXMgcmVxdWlyZXMgdGhhdCBhdCBsZWFzdCBvbmUgYWN0aXZlIGF0dHJpYnV0ZSIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhh
cyBhIGRpdmlzb3Igb2YgemVyby4iKSk7CisgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFO
R0xFX2luc3RhbmNlZF9hcnJheXMgcmVxdWlyZXMgdGhhdCBhdCBsZWFzdCBvbmUgYWN0aXZlIGF0
dHJpYnV0ZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzIGEgZGl2aXNvciBv
ZiB6ZXJvLiIpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTE4OTksMjAgKzMwNTgsMjAg
QEAKICAgICB7CiAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CiAgICAgICBjYXNlIEdMX1VO
U0lHTkVEX1NIT1JUOgotICAgICAgICBicmVhazsKKyAgICAgICAgICBicmVhazsKICAgICAgIGNh
c2UgR0xfVU5TSUdORURfSU5UOgotICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJz
aW9uKCkgPCAzICYmICFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZWxlbWVudEluZGV4VWludCkK
LSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigp
IDwgMyAmJiAhY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVsZW1lbnRJbmRleFVpbnQpCisgICAg
ICAgICAgeworICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH0KKyAg
ICAgICAgICBicmVhazsKICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGNvbnN0IFN0YXRlICZzdGF0ZSA9IGNv
bnRleHQtPmdldFN0YXRlKCk7CisgICAgY29uc3QgU3RhdGUgJnN0YXRlID0gY29udGV4dC0+Z2V0
R0xTdGF0ZSgpOwogCiAgICAgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrICpjdXJUcmFuc2Zvcm1GZWVk
YmFjayA9IHN0YXRlLmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpOwogICAgIGlmIChjdXJU
cmFuc2Zvcm1GZWVkYmFjayAmJiBjdXJUcmFuc2Zvcm1GZWVkYmFjay0+aXNBY3RpdmUoKSAmJiAh
Y3VyVHJhbnNmb3JtRmVlZGJhY2stPmlzUGF1c2VkKCkpCkBAIC0xOTE5LDcgKzMwNzgsNyBAQAog
ICAgIHsKICAgICAgICAgLy8gSXQgaXMgYW4gaW52YWxpZCBvcGVyYXRpb24gdG8gY2FsbCBEcmF3
RWxlbWVudHMsIERyYXdSYW5nZUVsZW1lbnRzIG9yIERyYXdFbGVtZW50c0luc3RhbmNlZAogICAg
ICAgICAvLyB3aGlsZSB0cmFuc2Zvcm0gZmVlZGJhY2sgaXMgYWN0aXZlLCAoMy4wLjIsIHNlY3Rp
b24gMi4xNCwgcGcgODYpCi0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAg
LTE5MjYsNyArMzA4NSw3IEBACiAgICAgLy8gQ2hlY2sgZm9yIG1hcHBlZCBidWZmZXJzCiAgICAg
aWYgKHN0YXRlLmhhc01hcHBlZEJ1ZmZlcihHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUikpCiAgICAg
ewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xOTM0LDcgKzMwOTMs
NyBAQAogICAgIGdsOjpCdWZmZXIgKmVsZW1lbnRBcnJheUJ1ZmZlciA9IHZhby0+Z2V0RWxlbWVu
dEFycmF5QnVmZmVyKCkuZ2V0KCk7CiAgICAgaWYgKCFpbmRpY2VzICYmICFlbGVtZW50QXJyYXlC
dWZmZXIpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0x
OTQ5LDcgKzMxMDgsNyBAQAogICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8R0x1aW50Pihjb3VudCkg
PiAoc3RkOjpudW1lcmljX2xpbWl0czxHTHVpbnQ+OjptYXgoKSAvIHR5cGVJbmZvLmJ5dGVzKSB8
fAogICAgICAgICAgICAgYnl0ZUNvdW50ID4gc3RhdGljX2Nhc3Q8R0xpbnQ2ND4oc3RkOjpudW1l
cmljX2xpbWl0czxHTHVpbnQ+OjptYXgoKSkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX09VVF9PRl9NRU1PUlkpKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX09VVF9PRl9NRU1PUlkpKTsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCkBAIC0xOTU2LDcgKzMxMTUsNyBAQAogICAgICAg
ICAvLyBDaGVjayBmb3IgcmVhZGluZyBwYXN0IHRoZSBlbmQgb2YgdGhlIGJvdW5kIGJ1ZmZlciBv
YmplY3QKICAgICAgICAgaWYgKGJ5dGVDb3VudCA+IGVsZW1lbnRBcnJheUJ1ZmZlci0+Z2V0U2l6
ZSgpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQogICAgIH0KQEAgLTE5NjMsNyArMzEyMiw3IEBACiAgICAgZWxzZSBpZiAoIWlu
ZGljZXMpCiAgICAgewogICAgICAgICAvLyBDYXRjaCB0aGlzIHByb2dyYW1taW5nIGVycm9yIGhl
cmUKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTk4Myw3ICszMTQy
LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
ZS5pc1ByaW1pdGl2ZVJlc3RhcnRFbmFibGVkKCksIGluZGV4UmFuZ2VPdXQpOwogICAgICAgICBp
ZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihlcnJvcik7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0xOTk3LDcg
KzMxNTYsNyBAQAogICAgIC8vIHJldHVybiBhbiBlcnJvciBpZiBwb3NzaWJsZSBoZXJlLgogICAg
IGlmIChzdGF0aWNfY2FzdDxHTHVpbnQ2ND4oaW5kZXhSYW5nZU91dC0+ZW5kKSA+PSBjb250ZXh0
LT5nZXRDYXBzKCkubWF4RWxlbWVudEluZGV4KQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGdfRXhjZWVkc01heEVsZW1lbnRF
cnJvck1lc3NhZ2UpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04sIGdfRXhjZWVkc01heEVsZW1lbnRFcnJvck1lc3NhZ2UpKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjAyMCw3ICszMTc5LDcgQEAKIHsKICAgICBp
ZiAocHJpbWNvdW50IDwgMCkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBA
IC0yMDU0LDcgKzMyMTMsNyBAQAogewogICAgIGlmICghVmFsaWRGcmFtZWJ1ZmZlclRhcmdldCh0
YXJnZXQpKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfRU5VTSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0yMDY5LDIzICsz
MjI4LDI0IEBACiAKICAgICAgICAgaWYgKHRleCA9PSBOVUxMKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwor
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChsZXZlbCA8IDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQogICAgIH0KIAotICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZm
ZXIgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFRhcmdldEZyYW1lYnVmZmVyKHRhcmdldCk7Cisg
ICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldEdMU3Rh
dGUoKS5nZXRUYXJnZXRGcmFtZWJ1ZmZlcih0YXJnZXQpOwogICAgIEFTU0VSVChmcmFtZWJ1ZmZl
cik7CiAKICAgICBpZiAoZnJhbWVidWZmZXItPmlkKCkgPT0gMCkKICAgICB7Ci0gICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ2Fubm90IGNo
YW5nZSBkZWZhdWx0IEZCTydzIGF0dGFjaG1lbnRzIikpOworICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ2Fubm90
IGNoYW5nZSBkZWZhdWx0IEZCTydzIGF0dGFjaG1lbnRzIikpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCkBAIC0yMDk2LDkgKzMyNTYsMTAgQEAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdGV4dGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2
ZWwpCiB7CiAgICAgLy8gQXR0YWNobWVudHMgYXJlIHJlcXVpcmVkIHRvIGJlIGJvdW5kIHRvIGxl
dmVsIDAgd2l0aG91dCBFUzMgb3IgdGhlIEdMX09FU19mYm9fcmVuZGVyX21pcG1hcCBleHRlbnNp
b24KLSAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMyAmJiAhY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmZib1JlbmRlck1pcG1hcCAmJiBsZXZlbCAhPSAwKQorICAgIGlmIChj
b250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMgJiYgIWNvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5mYm9SZW5kZXJNaXBtYXAgJiYKKyAgICAgICAgbGV2ZWwgIT0gMCkKICAgICB7Ci0g
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0yMTIwLDEyICszMjgxLDEyIEBACiAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYgKGxldmVsID4gZ2w6OmxvZzIoY2Fwcy5tYXgy
RFRleHR1cmVTaXplKSkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGlmICh0ZXgtPmdldFRhcmdldCgpICE9IEdMX1RFWFRVUkVfMkQpCiAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpA
QCAtMjE0MCwxMiArMzMwMSwxMiBAQAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGlm
IChsZXZlbCA+IGdsOjpsb2cyKGNhcHMubWF4Q3ViZU1hcFRleHR1cmVTaXplKSkKICAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICh0ZXgtPmdl
dFRhcmdldCgpICE9IEdMX1RFWFRVUkVfQ1VCRV9NQVApCiAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTikpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjE1MiwxNCArMzMxMywx
NCBAQAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgY29uc3QgZ2w6Oklu
dGVybmFsRm9ybWF0ICZpbnRlcm5hbEZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJ
bmZvKHRleC0+Z2V0SW50ZXJuYWxGb3JtYXQodGV4dGFyZ2V0LCBsZXZlbCkpOwotICAgICAgICBp
ZiAoaW50ZXJuYWxGb3JtYXRJbmZvLmNvbXByZXNzZWQpCisgICAgICAgIGNvbnN0IEZvcm1hdCAm
Zm9ybWF0ID0gdGV4LT5nZXRGb3JtYXQodGV4dGFyZ2V0LCBsZXZlbCk7CisgICAgICAgIGlmIChm
b3JtYXQuaW5mby0+Y29tcHJlc3NlZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0yMTcxLDcgKzMzMzIsNyBA
QAogewogICAgIGlmIChwcm9ncmFtID09IDApCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIApAQCAtMjE4MywxMyArMzM0NCwxMyBAQAogCiAgICAgaWYgKCFwcm9ncmFtT2JqZWN0
IHx8ICFwcm9ncmFtT2JqZWN0LT5pc0xpbmtlZCgpKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmICghcHJvZ3JhbU9iamVjdC0+aXNWYWxpZFVuaWZv
cm1Mb2NhdGlvbihsb2NhdGlvbikpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCkBAIC0yMjA2LDEzICszMzY3LDI4IEBACiAgICAgcmV0dXJuIFZhbGlkYXRlR2V0
VW5pZm9ybUJhc2UoY29udGV4dCwgcHJvZ3JhbSwgbG9jYXRpb24pOwogfQogCi1zdGF0aWMgYm9v
bCBWYWxpZGF0ZVNpemVkR2V0VW5pZm9ybShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcHJvZ3Jh
bSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6ZSkKK3N0YXRpYyBib29sIFZhbGlkYXRl
U2l6ZWRHZXRVbmlmb3JtKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSAqbGVuZ3RoKQogeworICAgIGlmIChsZW5ndGgpCisgICAgeworICAgICAgICAq
bGVuZ3RoID0gMDsKKyAgICB9CisKICAgICBpZiAoIVZhbGlkYXRlR2V0VW5pZm9ybUJhc2UoY29u
dGV4dCwgcHJvZ3JhbSwgbG9jYXRpb24pKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAorICAgIGlmIChidWZTaXplIDwgMCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJidWZTaXplIGNhbm5vdCBiZSBuZWdh
dGl2ZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICBnbDo6UHJvZ3Jh
bSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7CiAgICAgQVNT
RVJUKHByb2dyYW1PYmplY3QpOwogCkBAIC0yMjIxLDI5ICszMzk3LDkxIEBACiAgICAgc2l6ZV90
IHJlcXVpcmVkQnl0ZXMgPSBWYXJpYWJsZUV4dGVybmFsU2l6ZSh1bmlmb3JtLnR5cGUpOwogICAg
IGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KGJ1ZlNpemUpIDwgcmVxdWlyZWRCeXRlcykKICAgICB7
Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sICJidWZTaXplIG9mIGF0IGxlYXN0ICV1IGlzIHJlcXVpcmVkLiIs
IHJlcXVpcmVkQnl0ZXMpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIGlm
IChsZW5ndGgpCisgICAgeworICAgICAgICAvLyBDYXN0IGlzIHNhZmUgYmVjYXVzZSBvZiBjb21w
YXJpc29uIHRvIGJ1ZlNpemUuCisgICAgICAgICpsZW5ndGggPSBzdGF0aWNfY2FzdDxHTHNpemVp
PihyZXF1aXJlZEJ5dGVzKTsKKyAgICB9CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBW
YWxpZGF0ZUdldG5Vbmlmb3JtZnZFWFQoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHByb2dyYW0s
IEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMZmxvYXQqIHBhcmFtcykKIHsKLSAg
ICByZXR1cm4gVmFsaWRhdGVTaXplZEdldFVuaWZvcm0oY29udGV4dCwgcHJvZ3JhbSwgbG9jYXRp
b24sIGJ1ZlNpemUpOworICAgIHJldHVybiBWYWxpZGF0ZVNpemVkR2V0VW5pZm9ybShjb250ZXh0
LCBwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbnVsbHB0cik7CiB9CiAKIGJvb2wgVmFsaWRh
dGVHZXRuVW5pZm9ybWl2RVhUKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBwcm9ncmFtLCBHTGlu
dCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCBHTGludCogcGFyYW1zKQogewotICAgIHJldHVy
biBWYWxpZGF0ZVNpemVkR2V0VW5pZm9ybShjb250ZXh0LCBwcm9ncmFtLCBsb2NhdGlvbiwgYnVm
U2l6ZSk7CisgICAgcmV0dXJuIFZhbGlkYXRlU2l6ZWRHZXRVbmlmb3JtKGNvbnRleHQsIHByb2dy
YW0sIGxvY2F0aW9uLCBidWZTaXplLCBudWxscHRyKTsKIH0KIAorYm9vbCBWYWxpZGF0ZUdldFVu
aWZvcm1mdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGZsb2F0ICpwYXJhbXMpCit7CisgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEVudHJ5
UG9pbnQoY29udGV4dCwgYnVmU2l6ZSkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgLy8gYnVmU2l6ZSBpcyB2YWxpZGF0ZWQgaW4gVmFsaWRhdGVTaXplZEdldFVu
aWZvcm0KKyAgICByZXR1cm4gVmFsaWRhdGVTaXplZEdldFVuaWZvcm0oY29udGV4dCwgcHJvZ3Jh
bSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCk7Cit9CisKK2Jvb2wgVmFsaWRhdGVHZXRVbmlm
b3JtaXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0RW50cnlQb2lu
dChjb250ZXh0LCBidWZTaXplKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICAvLyBidWZTaXplIGlzIHZhbGlkYXRlZCBpbiBWYWxpZGF0ZVNpemVkR2V0VW5pZm9y
bQorICAgIHJldHVybiBWYWxpZGF0ZVNpemVkR2V0VW5pZm9ybShjb250ZXh0LCBwcm9ncmFtLCBs
b2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoKTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm11
aXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgKnBhcmFtcykKK3sKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0RW50cnlQ
b2ludChjb250ZXh0LCBidWZTaXplKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQorICAg
IHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IHJlcXVpcmVzIGF0IGxlYXN0IE9wZW5HTCBF
UyAzLjAuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gYnVmU2l6
ZSBpcyB2YWxpZGF0ZWQgaW4gVmFsaWRhdGVTaXplZEdldFVuaWZvcm0KKyAgICByZXR1cm4gVmFs
aWRhdGVTaXplZEdldFVuaWZvcm0oY29udGV4dCwgcHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUs
IGxlbmd0aCk7Cit9CisKIGJvb2wgVmFsaWRhdGVEaXNjYXJkRnJhbWVidWZmZXJCYXNlKENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRz
LCBib29sIGRlZmF1bHRGcmFtZWJ1ZmZlcikKIHsKICAgICBpZiAobnVtQXR0YWNobWVudHMgPCAw
KQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSwgIm51bUF0dGFjaG1lbnRzIG11c3Qgbm90IGJlIGxlc3MgdGhhbiB6ZXJvIikpOworICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAibnVtQXR0
YWNobWVudHMgbXVzdCBub3QgYmUgbGVzcyB0aGFuIHplcm8iKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKQEAgLTIyNTMsMTQgKzM0OTEsMTYgQEAKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKGRlZmF1bHRGcmFtZWJ1ZmZlcikKICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlk
IGF0dGFjaG1lbnQgd2hlbiB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciBpcyBib3VuZCIpKTsKKyAg
ICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcigKKyAgICAgICAgICAgICAg
ICAgICAgR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBhdHRhY2htZW50IHdoZW4gdGhlIGRlZmF1
bHQgZnJhbWVidWZmZXIgaXMgYm91bmQiKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXR0YWNobWVudHNbaV0gPj0gR0xf
Q09MT1JfQVRUQUNITUVOVDAgKyBjb250ZXh0LT5nZXRDYXBzKCkubWF4Q29sb3JBdHRhY2htZW50
cykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiUmVxdWVzdGVkIGNvbG9yIGF0dGFjaG1lbnQgaXMgZ3JlYXRlciB0aGFu
IHRoZSBtYXhpbXVtIHN1cHBvcnRlZCBjb2xvciBhdHRhY2htZW50cyIpKTsKKyAgICAgICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVxdWVzdGVkIGNvbG9y
IGF0dGFjaG1lbnQgaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtICIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3VwcG9ydGVkIGNvbG9yIGF0dGFjaG1lbnRz
IikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpAQCAtMjI3Myw3ICszNTEzLDkgQEAKICAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9T
VEVOQ0lMX0FUVEFDSE1FTlQ6CiAgICAgICAgICAgICAgICAgaWYgKGRlZmF1bHRGcmFtZWJ1ZmZl
cikKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgYXR0YWNobWVudCB3aGVuIHRo
ZSBkZWZhdWx0IGZyYW1lYnVmZmVyIGlzIGJvdW5kIikpOworICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yKEdMX0lO
VkFMSURfRU5VTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGF0dGFj
aG1lbnQgd2hlbiB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciBpcyBib3VuZCIpKTsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBicmVhazsKQEAgLTIyODIsMTIgKzM1MjQsMTQgQEAKICAgICAgICAgICAgICAgY2FzZSBH
TF9TVEVOQ0lMOgogICAgICAgICAgICAgICAgIGlmICghZGVmYXVsdEZyYW1lYnVmZmVyKQogICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBhdHRhY2htZW50IHdoZW4gdGhlIGRlZmF1
bHQgZnJhbWVidWZmZXIgaXMgbm90IGJvdW5kIikpOworICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFM
SURfRU5VTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGF0dGFjaG1l
bnQgd2hlbiB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciBpcyBub3QgYm91bmQiKSk7CiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBhdHRhY2ht
ZW50IikpOworICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9FTlVNLCAiSW52YWxpZCBhdHRhY2htZW50IikpOwogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjMzNyw3ICszNTgxLDcg
QEAKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lZ2xJbWFnZSAmJiAhY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVnbEltYWdlRXh0ZXJuYWwpCiAgICAgewotICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0yMzQ0LDMwICszNTg4LDQ0IEBACiAgICAg
c3dpdGNoICh0YXJnZXQpCiAgICAgewogICAgICAgICBjYXNlIEdMX1RFWFRVUkVfMkQ6CisgICAg
ICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lZ2xJbWFnZSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcigKKyAgICAg
ICAgICAgICAgICAgICAgR0xfSU5WQUxJRF9FTlVNLCAiR0xfVEVYVFVSRV8yRCB0ZXh0dXJlIHRh
cmdldCByZXF1aXJlcyBHTF9PRVNfRUdMX2ltYWdlLiIpKTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVM6Cisg
ICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lZ2xJbWFnZUV4dGVybmFs
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKAorICAgICAgICAgICAgICAgICAgICBHTF9JTlZBTElEX0VOVU0sCisgICAgICAgICAgICAg
ICAgICAgICJHTF9URVhUVVJFX0VYVEVSTkFMX09FUyB0ZXh0dXJlIHRhcmdldCByZXF1aXJlcyBH
TF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsLiIpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGJyZWFrOworCiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJpbnZhbGlkIHRleHR1cmUgdGFyZ2V0LiIpKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwg
ImludmFsaWQgdGV4dHVyZSB0YXJnZXQuIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAogICAgIGlmICghZGlzcGxheS0+aXNWYWxpZEltYWdlKGltYWdlKSkKICAgICB7Ci0g
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJFR0wg
aW1hZ2UgaXMgbm90IHZhbGlkLiIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSwgIkVHTCBpbWFnZSBpcyBub3QgdmFsaWQuIikpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKGltYWdlLT5nZXRTYW1wbGVzKCkgPiAw
KQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04sCisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IGNy
ZWF0ZSBhIDJEIHRleHR1cmUgZnJvbSBhIG11bHRpc2FtcGxlZCBFR0wgaW1hZ2UuIikpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgY29uc3QgVGV4dHVyZUNhcHMgJnRleHR1
cmVDYXBzID0gY29udGV4dC0+Z2V0VGV4dHVyZUNhcHMoKS5nZXQoaW1hZ2UtPmdldEludGVybmFs
Rm9ybWF0KCkpOworICAgIGNvbnN0IFRleHR1cmVDYXBzICZ0ZXh0dXJlQ2FwcyA9IGNvbnRleHQt
PmdldFRleHR1cmVDYXBzKCkuZ2V0KGltYWdlLT5nZXRGb3JtYXQoKS5hc1NpemVkKCkpOwogICAg
IGlmICghdGV4dHVyZUNhcHMudGV4dHVyYWJsZSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkVHTCBpbWFnZSBpbnRlcm5hbCBmb3JtYXQgaXMgbm90IHN1cHBv
cnRlZCBhcyBhIHRleHR1cmUuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAt
MjM4Miw3ICszNjQwLDcgQEAKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5l
Z2xJbWFnZSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAg
LTIzOTIsMjAgKzM2NTAsMjAgQEAKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VO
VU0sICJpbnZhbGlkIHJlbmRlcmJ1ZmZlciB0YXJnZXQuIikpOworICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiaW52YWxpZCByZW5kZXJidWZm
ZXIgdGFyZ2V0LiIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBp
ZiAoIWRpc3BsYXktPmlzVmFsaWRJbWFnZShpbWFnZSkpCiAgICAgewotICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiRUdMIGltYWdlIGlzIG5vdCB2
YWxpZC4iKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
VkFMVUUsICJFR0wgaW1hZ2UgaXMgbm90IHZhbGlkLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIGNvbnN0IFRleHR1cmVDYXBzICZ0ZXh0dXJlQ2FwcyA9IGNvbnRleHQt
PmdldFRleHR1cmVDYXBzKCkuZ2V0KGltYWdlLT5nZXRJbnRlcm5hbEZvcm1hdCgpKTsKKyAgICBj
b25zdCBUZXh0dXJlQ2FwcyAmdGV4dHVyZUNhcHMgPSBjb250ZXh0LT5nZXRUZXh0dXJlQ2Fwcygp
LmdldChpbWFnZS0+Z2V0Rm9ybWF0KCkuYXNTaXplZCgpKTsKICAgICBpZiAoIXRleHR1cmVDYXBz
LnJlbmRlcmFibGUpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcigK
KyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoCiAgICAgICAgICAgICBHTF9JTlZB
TElEX09QRVJBVElPTiwgIkVHTCBpbWFnZSBpbnRlcm5hbCBmb3JtYXQgaXMgbm90IHN1cHBvcnRl
ZCBhcyBhIHJlbmRlcmJ1ZmZlci4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBA
IC0yNDE5LDcgKzM2NzcsNyBAQAogICAgIHsKICAgICAgICAgLy8gVGhlIGRlZmF1bHQgVkFPIHNo
b3VsZCBhbHdheXMgZXhpc3QKICAgICAgICAgQVNTRVJUKGFycmF5ICE9IDApOwotICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0yNDMxLDcgKzM2ODksNyBAQAogICAgIGlm
IChjb250ZXh0LT5oYXNBY3RpdmVUcmFuc2Zvcm1GZWVkYmFjayhwcm9ncmFtKSkKICAgICB7CiAg
ICAgICAgIC8vIEVTIDMuMC40IHNlY3Rpb24gMi4xNSBwYWdlIDkxCi0gICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBsaW5rIHByb2dyYW0gd2hpbGUgcHJvZ3JhbSBp
cyBhc3NvY2lhdGVkIHdpdGggYW4gYWN0aXZlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInRyYW5zZm9ybSBmZWVkYmFjayBvYmplY3QuIikpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0yNDU1LDcgKzM3MTMsNyBAQAogICAgIGlmIChzdGQ6OmZpbmQocHJvZ3JhbUJp
bmFyeUZvcm1hdHMuYmVnaW4oKSwgcHJvZ3JhbUJpbmFyeUZvcm1hdHMuZW5kKCksIGJpbmFyeUZv
cm1hdCkgPT0KICAgICAgICAgcHJvZ3JhbUJpbmFyeUZvcm1hdHMuZW5kKCkpCiAgICAgewotICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJQcm9ncmFt
IGJpbmFyeSBmb3JtYXQgaXMgbm90IHZhbGlkLiIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiUHJvZ3JhbSBiaW5hcnkgZm9ybWF0IGlzIG5v
dCB2YWxpZC4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTI0NjIsNyAr
MzcyMCw3IEBACiAgICAgaWYgKGNvbnRleHQtPmhhc0FjdGl2ZVRyYW5zZm9ybUZlZWRiYWNrKHBy
b2dyYW0pKQogICAgIHsKICAgICAgICAgLy8gRVMgMy4wLjQgc2VjdGlvbiAyLjE1IHBhZ2UgOTEK
LSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04s
CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IGNoYW5nZSBwcm9n
cmFtIGJpbmFyeSB3aGlsZSBwcm9ncmFtIGlzIGFzc29jaWF0ZWQgd2l0aCAiCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJhbiBhY3RpdmUgdHJhbnNmb3JtIGZlZWRiYWNrIG9i
amVjdC4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI0ODYsNyArMzc0NCw3IEBACiAK
ICAgICBpZiAoIXByb2dyYW1PYmplY3QtPmlzTGlua2VkKCkpCiAgICAgewotICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIlByb2dyYW0gaXMg
bm90IGxpbmtlZC4iKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAiUHJvZ3JhbSBpcyBub3QgbGlua2VkLiIpKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjUwMyw3ICszNzYxLDcgQEAKICAgICAgICAgICAgIC8v
IEVTIDMuMS4wIHNlY3Rpb24gNy4zIHBhZ2UgNzIKICAgICAgICAgICAgIGlmIChjb250ZXh0LT5n
ZXRTaGFkZXIocHJvZ3JhbSkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoCisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCiAg
ICAgICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAiQXR0ZW1wdGVkIHRvIHVzZSBhIHNpbmdsZSBzaGFkZXIgaW5zdGVh
ZCBvZiBhIHNoYWRlciBwcm9ncmFtLiIpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0yNTEwLDIwICszNzY4LDIwIEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSwgIlByb2dyYW0gaW52YWxpZC4iKSk7CisgICAgICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIlByb2dyYW0g
aW52YWxpZC4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdC0+aXNMaW5rZWQoKSkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04sICJQcm9ncmFtIG5vdCBsaW5rZWQuIikpOworICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJQcm9ncmFtIG5vdCBs
aW5rZWQuIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQot
ICAgIGlmIChjb250ZXh0LT5nZXRTdGF0ZSgpLmlzVHJhbnNmb3JtRmVlZGJhY2tBY3RpdmVVbnBh
dXNlZCgpKQorICAgIGlmIChjb250ZXh0LT5nZXRHTFN0YXRlKCkuaXNUcmFuc2Zvcm1GZWVkYmFj
a0FjdGl2ZVVucGF1c2VkKCkpCiAgICAgewogICAgICAgICAvLyBFUyAzLjAuNCBzZWN0aW9uIDIu
MTUgcGFnZSA5MQotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcigKKyAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoCiAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwK
ICAgICAgICAgICAgICAgICAgICJDYW5ub3QgY2hhbmdlIGFjdGl2ZSBwcm9ncmFtIHdoaWxlIHRy
YW5zZm9ybSBmZWVkYmFjayBpcyB1bnBhdXNlZC4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTI1NDIsMTMgKzM4MDAsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIpCiB7
Ci0gICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgaWYgKGNvbnRl
eHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7CiAgICAgICAgIHJldHVybiBW
YWxpZGF0ZUVTMkNvcHlUZXhJbWFnZVBhcmFtZXRlcnMoY29udGV4dCwgdGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIGZhbHNlLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlcik7CiAgICAg
fQogCi0gICAgQVNTRVJUKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA9PSAzKTsKKyAgICBB
U1NFUlQoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPT0gMyk7CiAgICAgcmV0dXJu
IFZhbGlkYXRlRVMzQ29weVRleEltYWdlMkRQYXJhbWV0ZXJzKGNvbnRleHQsIHRhcmdldCwgbGV2
ZWwsIGludGVybmFsZm9ybWF0LCBmYWxzZSwgMCwgMCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKTsK
IH0KQEAgLTI1NjIsNyArMzgyMCw3IEBACiAgICAgaWYgKCFWYWxpZEZyYW1lYnVmZmVyVGFyZ2V0
KHRhcmdldCkgfHwKICAgICAgICAgKHJlbmRlcmJ1ZmZlcnRhcmdldCAhPSBHTF9SRU5ERVJCVUZG
RVIgJiYgcmVuZGVyYnVmZmVyICE9IDApKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCkBAIC0yNTc1LDEzICszODMzLDEzIEBACiAgICAgLy8gSU5WQUxJRF9WQUxVRSBpcyBnZW5l
cmF0ZWQgaWYgbiBpcyBuZWdhdGl2ZSBvciBncmVhdGVyIHRoYW4gdmFsdWUgb2YgTUFYX0RSQVdf
QlVGRkVSUwogICAgIGlmIChuIDwgMCB8fCBzdGF0aWNfY2FzdDxHTHVpbnQ+KG4pID4gY29udGV4
dC0+Z2V0Q2FwcygpLm1heERyYXdCdWZmZXJzKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoCisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAogICAgICAgICAgICAgRXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSwgIm4gbXVzdCBiZSBub24tbmVnYXRpdmUgYW5kIG5vIGdyZWF0
ZXIgdGhhbiBNQVhfRFJBV19CVUZGRVJTIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCi0gICAgQVNTRVJUKGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0RHJhd0ZyYW1lYnVmZmVyKCkp
OwotICAgIEdMdWludCBmcmFtZUJ1ZmZlcklkICAgICAgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdl
dERyYXdGcmFtZWJ1ZmZlcigpLT5pZCgpOworICAgIEFTU0VSVChjb250ZXh0LT5nZXRHTFN0YXRl
KCkuZ2V0RHJhd0ZyYW1lYnVmZmVyKCkpOworICAgIEdMdWludCBmcmFtZUJ1ZmZlcklkICAgICAg
PSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0RHJhd0ZyYW1lYnVmZmVyKCktPmlkKCk7CiAgICAg
R0x1aW50IG1heENvbG9yQXR0YWNobWVudCA9IEdMX0NPTE9SX0FUVEFDSE1FTlQwX0VYVCArIGNv
bnRleHQtPmdldENhcHMoKS5tYXhDb2xvckF0dGFjaG1lbnRzOwogCiAgICAgLy8gVGhpcyBzaG91
bGQgY29tZSBmaXJzdCBiZWZvcmUgdGhlIGNoZWNrIGZvciB0aGUgZGVmYXVsdCBmcmFtZSBidWZm
ZXIKQEAgLTI2MDAsMTIgKzM4NTgsMTIgQEAKICAgICAgICAgICAgIC8vIHdhcyBjaGFuZ2VkIHRv
IEdMX0lOVkFMSURfRU5VTSBpbiAzLjEsIHdoaWNoIGRFUVAgYWxzbyBleHBlY3RzLgogICAgICAg
ICAgICAgLy8gMy4xIGlzIHN0aWxsIGEgYml0IGFtYmlndW91cyBhYm91dCB0aGUgZXJyb3IsIGJ1
dCBmdXR1cmUgc3BlY3MgYXJlCiAgICAgICAgICAgICAvLyBleHBlY3RlZCB0byBjbGFyaWZ5IHRo
YXQgR0xfSU5WQUxJRF9FTlVNIGlzIHRoZSBjb3JyZWN0IGVycm9yLgotICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBidWZmZXIg
dmFsdWUiKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX0VOVU0sICJJbnZhbGlkIGJ1ZmZlciB2YWx1ZSIpKTsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChidWZzW2NvbG9yQXR0YWNobWVudF0g
Pj0gbWF4Q29sb3JBdHRhY2htZW50KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcigKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAogICAgICAgICAg
ICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQnVmZmVyIHZhbHVlIGlzIGdyZWF0
ZXIgdGhhbiBNQVhfRFJBV19CVUZGRVJTIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CkBAIC0yNjE0LDcgKzM4NzIsNyBAQAogICAgICAgICB7CiAgICAgICAgICAgICAv
LyBJTlZBTElEX09QRVJBVElPTi1HTCBpcyBib3VuZCB0byBidWZmZXIgYW5kIGl0aCBhcmd1bWVu
dAogICAgICAgICAgICAgLy8gaXMgbm90IENPTE9SX0FUVEFDSE1FTlRpIG9yIE5PTkUKLSAgICAg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKAorICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoCiAgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJJdGgg
dmFsdWUgZG9lcyBub3QgbWF0Y2ggQ09MT1JfQVRUQUNITUVOVGkgb3IgTk9ORSIpKTsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMjYyNiw3ICszODg0LDcgQEAKICAg
ICB7CiAgICAgICAgIGlmIChuICE9IDEpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibiBtdXN0IGJlIDEgd2hlbiBHTCBpcyBib3Vu
ZCB0byB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQpAQCAtMjYzMyw3ICszODkxLDcgQEAKIAogICAgICAgICBpZiAoYnVmc1sw
XSAhPSBHTF9OT05FICYmIGJ1ZnNbMF0gIT0gR0xfQkFDSykKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoCisgICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcigKICAgICAgICAgICAgICAgICBHTF9JTlZBTElEX09QRVJBVElPTiwKICAg
ICAgICAgICAgICAgICAiT25seSBOT05FIG9yIEJBQ0sgYXJlIHZhbGlkIHZhbHVlcyB3aGVuIGRy
YXdpbmcgdG8gdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIiKSk7CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0yNjUzLDcgKzM5MTEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBoZWlnaHQpCiB7Ci0gICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisg
ICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7CiAgICAg
ICAgIHJldHVybiBWYWxpZGF0ZUVTMkNvcHlUZXhJbWFnZVBhcmFtZXRlcnMoY29udGV4dCwgdGFy
Z2V0LCBsZXZlbCwgR0xfTk9ORSwgdHJ1ZSwgeG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0
LCAwKTsKQEAgLTI2NjMsMzIgKzM5MjEsNTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeW9mZnNldCwgMCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgMCk7
CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRCdWZmZXJQb2ludGVydkJhc2UoQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCB2b2lkICoqcGFyYW1zKQorYm9vbCBWYWxp
ZGF0ZUdldEJ1ZmZlclBvaW50ZXJ2QmFzZShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdm9pZCAqKnBhcmFtcykKIHsKLSAgICBpZiAoIVZhbGlkQnVmZmVyVGFyZ2V0KGNvbnRl
eHQsIHRhcmdldCkpCisgICAgaWYgKGxlbmd0aCkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkJ1ZmZlciB0YXJnZXQgbm90IHZhbGlk
OiAweCVYIiwgdGFyZ2V0KSk7CisgICAgICAgICpsZW5ndGggPSAwOworICAgIH0KKworICAgIGlm
IChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMgJiYgIWNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5tYXBCdWZmZXIpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAgICAg
ICAgICAgIkNvbnRleHQgZG9lcyBub3Qgc3VwcG9ydCBPcGVuR0wgRVMgMy4wIG9yIEdMX09FU19t
YXBfYnVmZmVyIGlzIG5vdCBlbmFibGVkLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIGlmIChwbmFtZSAhPSBHTF9CVUZGRVJfTUFQX1BPSU5URVIpCisgICAgaWYgKCFW
YWxpZEJ1ZmZlclRhcmdldChjb250ZXh0LCB0YXJnZXQpKQogICAgIHsKLSAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAicG5hbWUgbm90IHZhbGlkOiAw
eCVYIiwgcG5hbWUpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNLCAiQnVmZmVyIHRhcmdldCBub3QgdmFsaWQ6IDB4JVgiLCB0YXJnZXQpKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIEJ1ZmZlciAqYnVmZmVyID0gY29udGV4
dC0+Z2V0U3RhdGUoKS5nZXRUYXJnZXRCdWZmZXIodGFyZ2V0KTsKKyAgICBzd2l0Y2ggKHBuYW1l
KQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9CVUZGRVJfTUFQX1BPSU5URVI6CisgICAgICAgICAg
ICBicmVhazsKIAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiVW5rbm93biBwbmFtZS4iKSk7CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgLy8gR0xFUyAzLjAgc2VjdGlvbiAyLjEw
LjE6ICJBdHRlbXB0cyB0byBhdHRlbXB0cyB0byBtb2RpZnkgb3IgcXVlcnkgYnVmZmVyIG9iamVj
dCBzdGF0ZSBmb3IgYQogICAgIC8vIHRhcmdldCBib3VuZCB0byB6ZXJvIGdlbmVyYXRlIGFuIElO
VkFMSURfT1BFUkFUSU9OIGVycm9yLiIKICAgICAvLyBHTEVTIDMuMSBzZWN0aW9uIDYuNiBleHBs
aWNpdGx5IHNwZWNpZmllcyB0aGlzIGVycm9yLgotICAgIGlmICghYnVmZmVyKQorICAgIGlmIChj
b250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VGFyZ2V0QnVmZmVyKHRhcmdldCkgPT0gbnVsbHB0cikK
ICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKAorICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcigKICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ2Fu
IG5vdCBnZXQgcG9pbnRlciBmb3IgcmVzZXJ2ZWQgYnVmZmVyIG5hbWUgemVyby4iKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBpZiAobGVuZ3RoKQorICAgIHsKKyAgICAg
ICAgKmxlbmd0aCA9IDE7CisgICAgfQorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI2OTYs
MTUgKzM5NzgsMTUgQEAKIHsKICAgICBpZiAoIVZhbGlkQnVmZmVyVGFyZ2V0KGNvbnRleHQsIHRh
cmdldCkpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZB
TElEX0VOVU0sICJJbnZhbGlkIGJ1ZmZlciB0YXJnZXQuIikpOworICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGJ1ZmZlciB0YXJnZXQu
IikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgQnVmZmVyICpidWZmZXIg
PSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFRhcmdldEJ1ZmZlcih0YXJnZXQpOworICAgIEJ1ZmZl
ciAqYnVmZmVyID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFRhcmdldEJ1ZmZlcih0YXJnZXQp
OwogCiAgICAgaWYgKGJ1ZmZlciA9PSBudWxscHRyIHx8ICFidWZmZXItPmlzTWFwcGVkKCkpCiAg
ICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwgIkJ1ZmZlciBub3QgbWFwcGVkLiIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJCdWZmZXIgbm90IG1hcHBlZC4iKSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTI3MTksMzIgKzQwMDEsMzEgQEAKIHsK
ICAgICBpZiAoIVZhbGlkQnVmZmVyVGFyZ2V0KGNvbnRleHQsIHRhcmdldCkpCiAgICAgewotICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlk
IGJ1ZmZlciB0YXJnZXQuIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGJ1ZmZlciB0YXJnZXQuIikpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKG9mZnNldCA8IDAgfHwgbGVuZ3RoIDwgMCkKICAg
ICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUs
ICJJbnZhbGlkIG9mZnNldCBvciBsZW5ndGguIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiSW52YWxpZCBvZmZzZXQgb3IgbGVuZ3RoLiIp
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIEJ1ZmZlciAqYnVmZmVyID0g
Y29udGV4dC0+Z2V0U3RhdGUoKS5nZXRUYXJnZXRCdWZmZXIodGFyZ2V0KTsKKyAgICBCdWZmZXIg
KmJ1ZmZlciA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRUYXJnZXRCdWZmZXIodGFyZ2V0KTsK
IAogICAgIGlmICghYnVmZmVyKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJBdHRlbXB0ZWQgdG8gbWFwIGJ1ZmZlciBvYmpl
Y3QgemVyby4iKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OLCAiQXR0ZW1wdGVkIHRvIG1hcCBidWZmZXIgb2JqZWN0IHplcm8uIikpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgLy8gQ2hlY2sgZm9yIGJ1ZmZlciBv
dmVyZmxvdwotICAgIHNpemVfdCBvZmZzZXRTaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihvZmZz
ZXQpOwotICAgIHNpemVfdCBsZW5ndGhTaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgp
OworICAgIENoZWNrZWROdW1lcmljPHNpemVfdD4gY2hlY2tlZE9mZnNldChvZmZzZXQpOworICAg
IGF1dG8gY2hlY2tlZFNpemUgPSBjaGVja2VkT2Zmc2V0ICsgbGVuZ3RoOwogCi0gICAgaWYgKCFy
eDo6SXNVbnNpZ25lZEFkZGl0aW9uU2FmZShvZmZzZXRTaXplLCBsZW5ndGhTaXplKSB8fAotICAg
ICAgICBvZmZzZXRTaXplICsgbGVuZ3RoU2l6ZSA+IHN0YXRpY19jYXN0PHNpemVfdD4oYnVmZmVy
LT5nZXRTaXplKCkpKQorICAgIGlmICghY2hlY2tlZFNpemUuSXNWYWxpZCgpIHx8IGNoZWNrZWRT
aXplLlZhbHVlT3JEaWUoKSA+IHN0YXRpY19jYXN0PHNpemVfdD4oYnVmZmVyLT5nZXRTaXplKCkp
KQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoCisgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKAogICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIk1hcHBl
ZCByYW5nZSBkb2VzIG5vdCBmaXQgaW50byBidWZmZXIgZGltZW5zaW9ucy4iKSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0yNzU2LDE5ICs0MDM3LDE5IEBACiAKICAgICBpZiAo
YWNjZXNzICYgfihhbGxBY2Nlc3NCaXRzKSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJJbnZhbGlkIGFjY2VzcyBiaXRzOiAweCVY
LiIsIGFjY2VzcykpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX1ZBTFVFLCAiSW52YWxpZCBhY2Nlc3MgYml0czogMHglWC4iLCBhY2Nlc3MpKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChsZW5ndGggPT0gMCkKICAgICB7Ci0g
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAi
QnVmZmVyIG1hcHBpbmcgbGVuZ3RoIGlzIHplcm8uIikpOworICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkJ1ZmZlciBtYXBwaW5nIGxlbmd0
aCBpcyB6ZXJvLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChi
dWZmZXItPmlzTWFwcGVkKCkpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkJ1ZmZlciBpcyBhbHJlYWR5IG1hcHBlZC4iKSk7
CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCAiQnVmZmVyIGlzIGFscmVhZHkgbWFwcGVkLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIApAQCAtMjc3NSw3ICs0MDU2LDcgQEAKICAgICAvLyBDaGVjayBmb3IgaW52YWxpZCBi
aXQgY29tYmluYXRpb25zCiAgICAgaWYgKChhY2Nlc3MgJiAoR0xfTUFQX1JFQURfQklUIHwgR0xf
TUFQX1dSSVRFX0JJVCkpID09IDApCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cigKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCiAgICAgICAgICAgICBFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTiwgIk5lZWQgdG8gbWFwIGJ1ZmZlciBmb3IgZWl0aGVyIHJlYWRpbmcg
b3Igd3JpdGluZy4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0yNzg1LDcg
KzQwNjYsNyBAQAogCiAgICAgaWYgKChhY2Nlc3MgJiBHTF9NQVBfUkVBRF9CSVQpICE9IDAgJiYg
KGFjY2VzcyAmIHdyaXRlT25seUJpdHMpICE9IDApCiAgICAgewotICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGFjY2VzcyBiaXRzIHdoZW4gbWFwcGluZyBidWZm
ZXIgZm9yIHJlYWRpbmc6IDB4JVguIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWNjZXNzKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI3OTMsNyArNDA3NCw3IEBA
CiAKICAgICBpZiAoKGFjY2VzcyAmIEdMX01BUF9XUklURV9CSVQpID09IDAgJiYgKGFjY2VzcyAm
IEdMX01BUF9GTFVTSF9FWFBMSUNJVF9CSVQpICE9IDApCiAgICAgewotICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcigKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
CiAgICAgICAgICAgICBHTF9JTlZBTElEX09QRVJBVElPTiwKICAgICAgICAgICAgICJUaGUgZXhw
bGljaXQgZmx1c2hpbmcgYml0IG1heSBvbmx5IGJlIHNldCBpZiB0aGUgYnVmZmVyIGlzIG1hcHBl
ZCBmb3Igd3JpdGluZy4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI4MDgsMzkgKzQw
ODksMzkgQEAKIHsKICAgICBpZiAob2Zmc2V0IDwgMCB8fCBsZW5ndGggPCAwKQogICAgIHsKLSAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIkludmFs
aWQgb2Zmc2V0L2xlbmd0aCBwYXJhbWV0ZXJzLiIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIkludmFsaWQgb2Zmc2V0L2xlbmd0aCBwYXJh
bWV0ZXJzLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmICghVmFs
aWRCdWZmZXJUYXJnZXQoY29udGV4dCwgdGFyZ2V0KSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgYnVmZmVyIHRhcmdl
dC4iKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSwgIkludmFsaWQgYnVmZmVyIHRhcmdldC4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICBCdWZmZXIgKmJ1ZmZlciA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0VGFyZ2V0
QnVmZmVyKHRhcmdldCk7CisgICAgQnVmZmVyICpidWZmZXIgPSBjb250ZXh0LT5nZXRHTFN0YXRl
KCkuZ2V0VGFyZ2V0QnVmZmVyKHRhcmdldCk7CiAKICAgICBpZiAoYnVmZmVyID09IG51bGxwdHIp
CiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgIkF0dGVtcHRlZCB0byBmbHVzaCBidWZmZXIgb2JqZWN0IHplcm8uIikpOworICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkF0
dGVtcHRlZCB0byBmbHVzaCBidWZmZXIgb2JqZWN0IHplcm8uIikpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKCFidWZmZXItPmlzTWFwcGVkKCkgfHwgKGJ1ZmZlci0+
Z2V0QWNjZXNzRmxhZ3MoKSAmIEdMX01BUF9GTFVTSF9FWFBMSUNJVF9CSVQpID09IDApCiAgICAg
ewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcigKKyAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoCiAgICAgICAgICAgICBHTF9JTlZBTElEX09QRVJBVElPTiwgIkF0
dGVtcHRlZCB0byBmbHVzaCBhIGJ1ZmZlciBub3QgbWFwcGVkIGZvciBleHBsaWNpdCBmbHVzaGlu
Zy4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICAvLyBDaGVjayBmb3Ig
YnVmZmVyIG92ZXJmbG93Ci0gICAgc2l6ZV90IG9mZnNldFNpemUgPSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KG9mZnNldCk7Ci0gICAgc2l6ZV90IGxlbmd0aFNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+
KGxlbmd0aCk7CisgICAgQ2hlY2tlZE51bWVyaWM8c2l6ZV90PiBjaGVja2VkT2Zmc2V0KG9mZnNl
dCk7CisgICAgYXV0byBjaGVja2VkU2l6ZSA9IGNoZWNrZWRPZmZzZXQgKyBsZW5ndGg7CiAKLSAg
ICBpZiAoIXJ4OjpJc1Vuc2lnbmVkQWRkaXRpb25TYWZlKG9mZnNldFNpemUsIGxlbmd0aFNpemUp
IHx8Ci0gICAgICAgIG9mZnNldFNpemUgKyBsZW5ndGhTaXplID4gc3RhdGljX2Nhc3Q8c2l6ZV90
PihidWZmZXItPmdldE1hcExlbmd0aCgpKSkKKyAgICBpZiAoIWNoZWNrZWRTaXplLklzVmFsaWQo
KSB8fAorICAgICAgICBjaGVja2VkU2l6ZS5WYWx1ZU9yRGllKCkgPiBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGJ1ZmZlci0+Z2V0TWFwTGVuZ3RoKCkpKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoCisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAogICAgICAgICAgICAgRXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSwgIkZsdXNoZWQgcmFuZ2UgZG9lcyBub3QgZml0IGludG8gYnVm
ZmVyIG1hcHBpbmcgZGltZW5zaW9ucy4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CkBAIC0yODQ4LDYgKzQxMjksNzkgQEAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBWYWxp
ZGF0ZUdlbmVyYXRlTWlwbWFwKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQpCit7Cisg
ICAgaWYgKCFWYWxpZFRleHR1cmVUYXJnZXQoY29udGV4dCwgdGFyZ2V0KSkKKyAgICB7CisgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgVGV4dHVyZSAqdGV4dHVyZSA9IGNvbnRleHQt
PmdldFRhcmdldFRleHR1cmUodGFyZ2V0KTsKKworICAgIGlmICh0ZXh0dXJlID09IG51bGxwdHIp
CisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uc3QgR0x1
aW50IGVmZmVjdGl2ZUJhc2VMZXZlbCA9IHRleHR1cmUtPmdldFRleHR1cmVTdGF0ZSgpLmdldEVm
ZmVjdGl2ZUJhc2VMZXZlbCgpOworCisgICAgLy8gVGhpcyBlcnJvciBpc24ndCBzcGVsbGVkIG91
dCBpbiB0aGUgc3BlYyBpbiBhIHZlcnkgZXhwbGljaXQgd2F5LCBidXQgd2UgaW50ZXJwcmV0IHRo
ZSBzcGVjIHNvCisgICAgLy8gdGhhdCBvdXQtb2YtcmFuZ2UgYmFzZSBsZXZlbCBoYXMgYSBub24t
Y29sb3ItcmVuZGVyYWJsZSAvIG5vbi10ZXh0dXJlLWZpbHRlcmFibGUgZm9ybWF0LgorICAgIGlm
IChlZmZlY3RpdmVCYXNlTGV2ZWwgPj0gZ2w6OklNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xF
VkVMUykKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBHTGVu
dW0gYmFzZVRhcmdldCAgPSAodGFyZ2V0ID09IEdMX1RFWFRVUkVfQ1VCRV9NQVApID8gR0xfVEVY
VFVSRV9DVUJFX01BUF9QT1NJVElWRV9YIDogdGFyZ2V0OworICAgIGNvbnN0IGF1dG8gJmZvcm1h
dCA9IHRleHR1cmUtPmdldEZvcm1hdChiYXNlVGFyZ2V0LCBlZmZlY3RpdmVCYXNlTGV2ZWwpOwor
ICAgIGNvbnN0IFRleHR1cmVDYXBzICZmb3JtYXRDYXBzID0gY29udGV4dC0+Z2V0VGV4dHVyZUNh
cHMoKS5nZXQoZm9ybWF0LmFzU2l6ZWQoKSk7CisKKyAgICAvLyBHZW5lcmF0ZU1pcG1hcCBzaG91
bGQgbm90IGdlbmVyYXRlIGFuIElOVkFMSURfT1BFUkFUSU9OIGZvciB0ZXh0dXJlcyBjcmVhdGVk
IHdpdGgKKyAgICAvLyB1bnNpemVkIGZvcm1hdHMgb3IgdGhhdCBhcmUgY29sb3IgcmVuZGVyYWJs
ZSBhbmQgZmlsdGVyYWJsZS4gIFNpbmNlIHdlIGRvIG5vdCB0cmFjayBpZgorICAgIC8vIHRoZSB0
ZXh0dXJlIHdhcyBjcmVhdGVkIHdpdGggc2l6ZWQgb3IgdW5zaXplZCBmb3JtYXQgKG9ubHkgc2l6
ZWQgZm9ybWF0cyBhcmUgc3RvcmVkKSwKKyAgICAvLyBpdCBpcyBub3QgcG9zc2libGUgdG8gbWFr
ZSBzdXJlIHRoZSB0aGUgTFVNQSBmb3JtYXRzIGNhbiBnZW5lcmF0ZSBtaXBtYXBzICh0aGV5IHNo
b3VsZAorICAgIC8vIGJlIGFibGUgdG8pIGJlY2F1c2UgdGhleSBhcmVuJ3QgY29sb3IgcmVuZGVy
YWJsZS4gIFNpbXBseSBkbyBhIHNwZWNpYWwgY2FzZSBmb3IgTFVNQQorICAgIC8vIHRleHR1cmVz
IHNpbmNlIHRoZXkncmUgdGhlIG9ubHkgdGV4dHVyZSBmb3JtYXQgdGhhdCBjYW4gYmUgY3JlYXRl
ZCB3aXRoIHVuc2l6ZWQgZm9ybWF0cworICAgIC8vIHRoYXQgaXMgbm90IGNvbG9yIHJlbmRlcmFi
bGUuICBOZXcgdW5zaXplZCBmb3JtYXRzIGFyZSB1bmxpa2VseSB0byBiZSBhZGRlZCwgc2luY2Ug
RVMyCisgICAgLy8gd2FzIHRoZSBsYXN0IHZlcnNpb24gdG8gdXNlIGFkZCB0aGVtLgorICAgIGlm
IChmb3JtYXQuaW5mby0+ZGVwdGhCaXRzID4gMCB8fCBmb3JtYXQuaW5mby0+c3RlbmNpbEJpdHMg
PiAwIHx8ICFmb3JtYXRDYXBzLmZpbHRlcmFibGUgfHwKKyAgICAgICAgKCFmb3JtYXRDYXBzLnJl
bmRlcmFibGUgJiYgIWZvcm1hdC5pbmZvLT5pc0xVTUEoKSkgfHwgZm9ybWF0LmluZm8tPmNvbXBy
ZXNzZWQpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8g
R0xfRVhUX3NSR0IgZG9lcyBub3Qgc3VwcG9ydCBtaXBtYXAgZ2VuZXJhdGlvbiBvbiBzUkdCIHRl
eHR1cmVzCisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpID09IDIgJiYg
Zm9ybWF0LmluZm8tPmNvbG9yRW5jb2RpbmcgPT0gR0xfU1JHQikKKyAgICB7CisgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBOb24tcG93ZXIgb2YgMiBFUzIgY2hlY2sK
KyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlTlBPVCAmJgorICAgICAg
ICAoIWlzUG93MihzdGF0aWNfY2FzdDxpbnQ+KHRleHR1cmUtPmdldFdpZHRoKGJhc2VUYXJnZXQs
IDApKSkgfHwKKyAgICAgICAgICFpc1BvdzIoc3RhdGljX2Nhc3Q8aW50Pih0ZXh0dXJlLT5nZXRI
ZWlnaHQoYmFzZVRhcmdldCwgMCkpKSkpCisgICAgeworICAgICAgICBBU1NFUlQoY29udGV4dC0+
Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPD0gMiAmJgorICAgICAgICAgICAgICAgKHRhcmdldCA9
PSBHTF9URVhUVVJFXzJEIHx8IHRhcmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQKSk7CisgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBDdWJlIGNvbXBsZXRlbmVzcyBj
aGVjaworICAgIGlmICh0YXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01BUCAmJiAhdGV4dHVyZS0+
Z2V0VGV4dHVyZVN0YXRlKCkuaXNDdWJlQ29tcGxldGUoKSkKKyAgICB7CisgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBWYWxpZGF0
ZUdlbkJ1ZmZlcnMoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbiwgR0x1aW50ICopCiB7CiAgICAg
cmV0dXJuIFZhbGlkYXRlR2VuT3JEZWxldGUoY29udGV4dCwgbik7CkBAIC0yODkyLDEwICs0MjQ2
LDk4NyBAQAogewogICAgIGlmIChuIDwgMCkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJuIDwgMCIpKTsKKyAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIm4gPCAwIikpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFZhbGlk
YXRlRW5hYmxlKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjYXApCit7CisgICAgaWYgKCFWYWxp
ZENhcChjb250ZXh0LCBjYXAsIGZhbHNlKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgY2FwLiIpKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChjb250ZXh0LT5nZXRMaW1pdGF0aW9ucygp
Lm5vU2FtcGxlQWxwaGFUb0NvdmVyYWdlU3VwcG9ydCAmJgorICAgICAgICBjYXAgPT0gR0xfU0FN
UExFX0FMUEhBX1RPX0NPVkVSQUdFKQorICAgIHsKKyAgICAgICAgY29uc3QgY2hhciAqZXJyb3JN
ZXNzYWdlID0gIkN1cnJlbnQgcmVuZGVyZXIgZG9lc24ndCBzdXBwb3J0IGFscGhhLXRvLWNvdmVy
YWdlIjsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04sIGVycm9yTWVzc2FnZSkpOworCisgICAgICAgIC8vIFdlIGFsc28gb3V0cHV0IGFuIGVy
cm9yIG1lc3NhZ2UgdG8gdGhlIGRlYnVnZ2VyIHdpbmRvdyBpZiB0cmFjaW5nIGlzIGFjdGl2ZSwg
c28gdGhhdAorICAgICAgICAvLyBkZXZlbG9wZXJzIGNhbiBzZWUgdGhlIGVycm9yIG1lc3NhZ2Uu
CisgICAgICAgIEVSUigiJXMiLCBlcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVEaXNhYmxlKENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSBjYXApCit7CisgICAgaWYgKCFWYWxpZENhcChjb250ZXh0
LCBjYXAsIGZhbHNlKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgY2FwLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlSXNFbmFibGVk
KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjYXApCit7CisgICAgaWYgKCFWYWxpZENhcChjb250
ZXh0LCBjYXAsIHRydWUpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBjYXAuIikpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVSb2J1c3RF
bnRyeVBvaW50KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTHNpemVpIGJ1ZlNpemUpCit7
CisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkucm9idXN0Q2xpZW50TWVtb3J5KQor
ICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTiwgIkdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5IGlzIG5v
dCBhdmFpbGFibGUuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYg
KGJ1ZlNpemUgPCAwKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSwgImJ1ZlNpemUgY2Fubm90IGJlIG5lZ2F0aXZlLiIpKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZh
bGlkYXRlUm9idXN0QnVmZmVyU2l6ZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xzaXpl
aSBidWZTaXplLCBHTHNpemVpIG51bVBhcmFtcykKK3sKKyAgICBpZiAoYnVmU2l6ZSA8IG51bVBh
cmFtcykKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXUgcGFy
YW1ldGVycyBhcmUgcmVxdWlyZWQgYnV0ICVpIHdlcmUgcHJvdmlkZWQuIiwgbnVtUGFyYW1zLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZTaXplKSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0
ZUdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KFZhbGlkYXRpb25Db250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKm51bVBhcmFtcykKK3sKKyAgICAv
LyBPbmx5IG9uZSBwYXJhbWV0ZXIgaXMgcmV0dXJuZWQgZnJvbSBnbEdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcml2CisgICAgKm51bVBhcmFtcyA9IDE7CisKKyAgICBpZiAoIVZhbGlk
RnJhbWVidWZmZXJUYXJnZXQodGFyZ2V0KSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgaW50IGNsaWVudFZlcnNpb24gPSBjb250ZXh0LT5nZXRDbGllbnRNYWpvclZl
cnNpb24oKTsKKworICAgIHN3aXRjaCAocG5hbWUpCisgICAgeworICAgICAgICBjYXNlIEdMX0ZS
QU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEU6CisgICAgICAgIGNhc2UgR0xfRlJBTUVC
VUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRToKKyAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZF
Ul9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUw6CisgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0U6CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkc6Cisg
ICAgICAgICAgICBpZiAoY2xpZW50VmVyc2lvbiA8IDMgJiYgIWNvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5zUkdCKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug
R0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9SRURfU0laRToKKyAgICAgICAgY2FzZSBHTF9GUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX0dSRUVOX1NJWkU6CisgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZG
RVJfQVRUQUNITUVOVF9CTFVFX1NJWkU6CisgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfQVRU
QUNITUVOVF9BTFBIQV9TSVpFOgorICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1F
TlRfREVQVEhfU0laRToKKyAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1NU
RU5DSUxfU0laRToKKyAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTVBP
TkVOVF9UWVBFOgorICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVS
RV9MQVlFUjoKKyAgICAgICAgICAgIGlmIChjbGllbnRWZXJzaW9uIDwgMykKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X0VOVU0pKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBhdHRhY2htZW50IGlz
IGEgdmFsaWQgZW51bQorICAgIHN3aXRjaCAoYXR0YWNobWVudCkKKyAgICB7CisgICAgICAgIGNh
c2UgR0xfQkFDSzoKKyAgICAgICAgY2FzZSBHTF9GUk9OVDoKKyAgICAgICAgY2FzZSBHTF9ERVBU
SDoKKyAgICAgICAgY2FzZSBHTF9TVEVOQ0lMOgorICAgICAgICBjYXNlIEdMX0RFUFRIX1NURU5D
SUxfQVRUQUNITUVOVDoKKyAgICAgICAgICAgIGlmIChjbGllbnRWZXJzaW9uIDwgMykKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX0RFUFRIX0FUVEFDSE1F
TlQ6CisgICAgICAgIGNhc2UgR0xfU1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlmIChhdHRhY2htZW50IDwgR0xf
Q09MT1JfQVRUQUNITUVOVDBfRVhUIHx8CisgICAgICAgICAgICAgICAgKGF0dGFjaG1lbnQgLSBH
TF9DT0xPUl9BVFRBQ0hNRU5UMF9FWFQpID49IGNvbnRleHQtPmdldENhcHMoKS5tYXhDb2xvckF0
dGFjaG1lbnRzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNv
bnN0IEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRU
YXJnZXRGcmFtZWJ1ZmZlcih0YXJnZXQpOworICAgIEFTU0VSVChmcmFtZWJ1ZmZlcik7CisKKyAg
ICBpZiAoZnJhbWVidWZmZXItPmlkKCkgPT0gMCkKKyAgICB7CisgICAgICAgIGlmIChjbGllbnRW
ZXJzaW9uIDwgMykKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAoYXR0YWNobWVudCkKKyAgICAgICAgeworICAg
ICAgICAgICAgY2FzZSBHTF9CQUNLOgorICAgICAgICAgICAgY2FzZSBHTF9ERVBUSDoKKyAgICAg
ICAgICAgIGNhc2UgR0xfU1RFTkNJTDoKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBpZiAoYXR0YWNobWVu
dCA+PSBHTF9DT0xPUl9BVFRBQ0hNRU5UMF9FWFQgJiYgYXR0YWNobWVudCA8PSBHTF9DT0xPUl9B
VFRBQ0hNRU5UMTVfRVhUKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBWYWxpZCBhdHRhY2ht
ZW50IHF1ZXJ5CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAg
ICBzd2l0Y2ggKGF0dGFjaG1lbnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2Fz
ZSBHTF9ERVBUSF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgICAgIGNhc2UgR0xfU1RFTkNJTF9B
VFRBQ0hNRU5UOgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGNhc2UgR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgICAgICAgICBp
ZiAoIWZyYW1lYnVmZmVyLT5oYXNWYWxpZERlcHRoU3RlbmNpbCgpKQorICAgICAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
CisgICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICphdHRhY2htZW50T2JqZWN0ID0gZnJh
bWVidWZmZXItPmdldEF0dGFjaG1lbnQoYXR0YWNobWVudCk7CisgICAgaWYgKGF0dGFjaG1lbnRP
YmplY3QpCisgICAgeworICAgICAgICBBU1NFUlQoYXR0YWNobWVudE9iamVjdC0+dHlwZSgpID09
IEdMX1JFTkRFUkJVRkZFUiB8fAorICAgICAgICAgICAgICAgYXR0YWNobWVudE9iamVjdC0+dHlw
ZSgpID09IEdMX1RFWFRVUkUgfHwKKyAgICAgICAgICAgICAgIGF0dGFjaG1lbnRPYmplY3QtPnR5
cGUoKSA9PSBHTF9GUkFNRUJVRkZFUl9ERUZBVUxUKTsKKworICAgICAgICBzd2l0Y2ggKHBuYW1l
KQorICAgICAgICB7CisgICAgICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRf
T0JKRUNUX05BTUU6CisgICAgICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnRPYmplY3QtPnR5cGUo
KSAhPSBHTF9SRU5ERVJCVUZGRVIgJiYKKyAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudE9i
amVjdC0+dHlwZSgpICE9IEdMX1RFWFRVUkUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9B
VFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUw6CisgICAgICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnRP
YmplY3QtPnR5cGUoKSAhPSBHTF9URVhUVVJFKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0U6CisgICAgICAgICAgICAgICAgaWYgKGF0
dGFjaG1lbnRPYmplY3QtPnR5cGUoKSAhPSBHTF9URVhUVVJFKQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgR0xfRlJB
TUVCVUZGRVJfQVRUQUNITUVOVF9DT01QT05FTlRfVFlQRToKKyAgICAgICAgICAgICAgICBpZiAo
YXR0YWNobWVudCA9PSBHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQpCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBj
YXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MQVlFUjoKKyAgICAgICAgICAg
ICAgICBpZiAoYXR0YWNobWVudE9iamVjdC0+dHlwZSgpICE9IEdMX1RFWFRVUkUpCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBl
bHNlCisgICAgeworICAgICAgICAvLyBFUyAyLjAuMjUgc3BlYyBwZyAxMjcgc3RhdGVzIHRoYXQg
aWYgdGhlIHZhbHVlIG9mIEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUKKyAgICAg
ICAgLy8gaXMgTk9ORSwgdGhlbiBxdWVyeWluZyBhbnkgb3RoZXIgcG5hbWUgd2lsbCBnZW5lcmF0
ZSBJTlZBTElEX0VOVU0uCisKKyAgICAgICAgLy8gRVMgMy4wLjIgc3BlYyBwZyAyMzUgc3RhdGVz
IHRoYXQgaWYgdGhlIGF0dGFjaG1lbnQgdHlwZSBpcyBub25lLAorICAgICAgICAvLyBHTF9GUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FIHdpbGwgcmV0dXJuIHplcm8gYW5kIGJlIGFu
CisgICAgICAgIC8vIElOVkFMSURfT1BFUkFUSU9OIGZvciBhbGwgb3RoZXIgcG5hbWVzCisKKyAg
ICAgICAgc3dpdGNoIChwbmFtZSkKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSBHTF9GUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFOgorICAgICAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUU6
CisgICAgICAgICAgICAgICAgaWYgKGNsaWVudFZlcnNpb24gPCAzKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgaWYgKGNsaWVudFZlcnNpb24gPCAzKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZh
bGlkYXRlR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShWYWxp
ZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYXR0
YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgKm51bVBhcmFtcykKK3sKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0RW50cnlQb2ludChjb250
ZXh0LCBidWZTaXplKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBpZiAoIVZhbGlkYXRlR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoY29udGV4
dCwgdGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgbnVtUGFyYW1zKSkKKyAgICB7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0QnVmZmVyU2l6
ZShjb250ZXh0LCBidWZTaXplLCAqbnVtUGFyYW1zKSkKKyAgICB7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdldEJ1
ZmZlclBhcmFtZXRlcml2KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50ICpwYXJhbXMpCit7CisgICAgcmV0dXJuIFZhbGlkYXRlR2V0QnVmZmVyUGFy
YW1ldGVyQmFzZShjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBmYWxzZSwgbnVsbHB0cik7Cit9CisK
K2Jvb2wgVmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKFZhbGlkYXRpb25D
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCit7CisgICAgaWYgKCFWYWxp
ZGF0ZVJvYnVzdEVudHJ5UG9pbnQoY29udGV4dCwgYnVmU2l6ZSkpCisgICAgeworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZGF0ZUdldEJ1ZmZlclBhcmFtZXRl
ckJhc2UoY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgZmFsc2UsIGxlbmd0aCkpCisgICAgeworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEJ1ZmZl
clNpemUoY29udGV4dCwgYnVmU2l6ZSwgKmxlbmd0aCkpCisgICAgeworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVHZXRC
dWZmZXJQYXJhbWV0ZXJpNjR2KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50NjQgKnBhcmFtcykKK3sKKyAgICByZXR1cm4gVmFsaWRhdGVH
ZXRCdWZmZXJQYXJhbWV0ZXJCYXNlKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIGZhbHNlLCBudWxs
cHRyKTsKK30KKworYm9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdM
RShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQ2NCAq
cGFyYW1zKQoreworICAgIGlmICghVmFsaWRhdGVSb2J1c3RFbnRyeVBvaW50KGNvbnRleHQsIGJ1
ZlNpemUpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICgh
VmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0ZXJCYXNlKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIGZh
bHNlLCBsZW5ndGgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IGlmICghVmFsaWRhdGVSb2J1c3RCdWZmZXJTaXplKGNvbnRleHQsIGJ1ZlNpemUsICpsZW5ndGgp
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIFZhbGlkYXRlR2V0UHJvZ3JhbWl2KENvbnRleHQgKmNvbnRleHQsIEdMdWlu
dCBwcm9ncmFtLCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgKm51bVBhcmFtcykKK3sKKyAgICAvLyBD
dXJyZW50bHksIGFsbCBHZXRQcm9ncmFtaXYgcXVlcmllcyByZXR1cm4gMSBwYXJhbWV0ZXIKKyAg
ICAqbnVtUGFyYW1zID0gMTsKKworICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBHZXRWYWxp
ZFByb2dyYW0oY29udGV4dCwgcHJvZ3JhbSk7CisgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN3aXRjaCAocG5hbWUpCisg
ICAgeworICAgICAgICBjYXNlIEdMX0RFTEVURV9TVEFUVVM6CisgICAgICAgIGNhc2UgR0xfTElO
S19TVEFUVVM6CisgICAgICAgIGNhc2UgR0xfVkFMSURBVEVfU1RBVFVTOgorICAgICAgICBjYXNl
IEdMX0lORk9fTE9HX0xFTkdUSDoKKyAgICAgICAgY2FzZSBHTF9BVFRBQ0hFRF9TSEFERVJTOgor
ICAgICAgICBjYXNlIEdMX0FDVElWRV9BVFRSSUJVVEVTOgorICAgICAgICBjYXNlIEdMX0FDVElW
RV9BVFRSSUJVVEVfTUFYX0xFTkdUSDoKKyAgICAgICAgY2FzZSBHTF9BQ1RJVkVfVU5JRk9STVM6
CisgICAgICAgIGNhc2UgR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSDoKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfUFJPR1JBTV9CSU5BUllfTEVOR1RIOgorICAgICAg
ICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAmJiAhY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmdldFByb2dyYW1CaW5hcnkpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJRdWVyeWluZyBHTF9Q
Uk9HUkFNX0JJTkFSWV9MRU5HVEggcmVxdWlyZXMgIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJHTF9PRVNfZ2V0X3Byb2dyYW1fYmluYXJ5IG9yIEVTIDMuMC4i
KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9BQ1RJVkVfVU5JRk9STV9CTE9DS1M6Cisg
ICAgICAgIGNhc2UgR0xfQUNUSVZFX1VOSUZPUk1fQkxPQ0tfTUFYX05BTUVfTEVOR1RIOgorICAg
ICAgICBjYXNlIEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfTU9ERToKKyAgICAgICAgY2Fz
ZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlOR1M6CisgICAgICAgIGNhc2UgR0xfVFJBTlNG
T1JNX0ZFRURCQUNLX1ZBUllJTkdfTUFYX0xFTkdUSDoKKyAgICAgICAgY2FzZSBHTF9QUk9HUkFN
X0JJTkFSWV9SRVRSSUVWQUJMRV9ISU5UOgorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENs
aWVudE1ham9yVmVyc2lvbigpIDwgMykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJRdWVyeWluZyByZXF1
aXJlcyBhdCBsZWFzdCBFUyAzLjAuIikpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJV
bmtub3duIHBhcmFtZXRlciBuYW1lLiIpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1pdlJv
YnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpICpudW1QYXJhbXMpCit7CisgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEVudHJ5UG9pbnQo
Y29udGV4dCwgYnVmU2l6ZSkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgaWYgKCFWYWxpZGF0ZUdldFByb2dyYW1pdihjb250ZXh0LCBwcm9ncmFtLCBwbmFtZSwg
bnVtUGFyYW1zKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBp
ZiAoIVZhbGlkYXRlUm9idXN0QnVmZmVyU2l6ZShjb250ZXh0LCBidWZTaXplLCAqbnVtUGFyYW1z
KSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBh
cmFtcykKK3sKKyAgICByZXR1cm4gVmFsaWRhdGVHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdkJh
c2UoY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgbnVsbHB0cik7Cit9CisKK2Jvb2wgVmFsaWRhdGVH
ZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3sKKyAg
ICBpZiAoIVZhbGlkYXRlUm9idXN0RW50cnlQb2ludChjb250ZXh0LCBidWZTaXplKSkKKyAgICB7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlkYXRlR2V0UmVu
ZGVyYnVmZmVyUGFyYW1ldGVyaXZCYXNlKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIGxlbmd0aCkp
CisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZGF0
ZVJvYnVzdEJ1ZmZlclNpemUoY29udGV4dCwgYnVmU2l6ZSwgKmxlbmd0aCkpCisgICAgeworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
VmFsaWRhdGVHZXRTaGFkZXJpdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgc2hhZGVyLCBHTGVu
dW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCit7CisgICAgcmV0dXJuIFZhbGlkYXRlR2V0U2hhZGVy
aXZCYXNlKGNvbnRleHQsIHNoYWRlciwgcG5hbWUsIG51bGxwdHIpOworfQorCitib29sIFZhbGlk
YXRlR2V0U2hhZGVyaXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNoYWRlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50ICpwYXJhbXMpCit7CisgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEVudHJ5UG9p
bnQoY29udGV4dCwgYnVmU2l6ZSkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgaWYgKCFWYWxpZGF0ZUdldFNoYWRlcml2QmFzZShjb250ZXh0LCBzaGFkZXIsIHBu
YW1lLCBsZW5ndGgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IGlmICghVmFsaWRhdGVSb2J1c3RCdWZmZXJTaXplKGNvbnRleHQsIGJ1ZlNpemUsICpsZW5ndGgp
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVyZnYoQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpCit7CisgICAgcmV0
dXJuIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVyQmFzZShjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBu
dWxscHRyKTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUo
Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpCit7CisgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEVu
dHJ5UG9pbnQoY29udGV4dCwgYnVmU2l6ZSkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgaWYgKCFWYWxpZGF0ZUdldFRleFBhcmFtZXRlckJhc2UoY29udGV4dCwg
dGFyZ2V0LCBwbmFtZSwgbGVuZ3RoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0QnVmZmVyU2l6ZShjb250ZXh0LCBidWZTaXpl
LCAqbGVuZ3RoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFtZXRlcml2KENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKK3sK
KyAgICByZXR1cm4gVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJCYXNlKGNvbnRleHQsIHRhcmdldCwg
cG5hbWUsIG51bGxwdHIpOworfQorCitib29sIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVyaXZSb2J1
c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCit7CisgICAgaWYgKCFWYWxpZGF0ZVJv
YnVzdEVudHJ5UG9pbnQoY29udGV4dCwgYnVmU2l6ZSkpCisgICAgeworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZGF0ZUdldFRleFBhcmFtZXRlckJhc2UoY29u
dGV4dCwgdGFyZ2V0LCBwbmFtZSwgbGVuZ3RoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0QnVmZmVyU2l6ZShjb250ZXh0LCBi
dWZTaXplLCAqbGVuZ3RoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlcmYoQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQor
eworICAgIHJldHVybiBWYWxpZGF0ZVRleFBhcmFtZXRlckJhc2UoY29udGV4dCwgdGFyZ2V0LCBw
bmFtZSwgLTEsICZwYXJhbSk7Cit9CisKK2Jvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJmdihDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQg
KnBhcmFtcykKK3sKKyAgICByZXR1cm4gVmFsaWRhdGVUZXhQYXJhbWV0ZXJCYXNlKGNvbnRleHQs
IHRhcmdldCwgcG5hbWUsIC0xLCBwYXJhbXMpOworfQorCitib29sIFZhbGlkYXRlVGV4UGFyYW1l
dGVyZnZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykKK3sKKyAgICBpZiAoIVZhbGlkYXRl
Um9idXN0RW50cnlQb2ludChjb250ZXh0LCBidWZTaXplKSkKKyAgICB7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gVmFsaWRhdGVUZXhQYXJhbWV0ZXJCYXNlKGNv
bnRleHQsIHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcyk7Cit9CisKK2Jvb2wgVmFsaWRh
dGVUZXhQYXJhbWV0ZXJpKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBw
bmFtZSwgR0xpbnQgcGFyYW0pCit7CisgICAgcmV0dXJuIFZhbGlkYXRlVGV4UGFyYW1ldGVyQmFz
ZShjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCAtMSwgJnBhcmFtKTsKK30KKworYm9vbCBWYWxpZGF0
ZVRleFBhcmFtZXRlcml2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBw
bmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcykKK3sKKyAgICByZXR1cm4gVmFsaWRhdGVUZXhQYXJh
bWV0ZXJCYXNlKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIC0xLCBwYXJhbXMpOworfQorCitib29s
IFZhbGlkYXRlVGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCit7Cisg
ICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEVudHJ5UG9pbnQoY29udGV4dCwgYnVmU2l6ZSkpCisgICAg
eworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIFZhbGlkYXRlVGV4
UGFyYW1ldGVyQmFzZShjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBwYXJhbXMpOwor
fQorCitib29sIFZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlcmZ2KENvbnRleHQgKmNvbnRleHQs
IEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcykKK3sKKyAgICBy
ZXR1cm4gVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVyQmFzZShjb250ZXh0LCBzYW1wbGVyLCBw
bmFtZSwgbnVsbHB0cik7Cit9CisKK2Jvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVyZnZS
b2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBzYW1wbGVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYnVmU2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1z
KQoreworICAgIGlmICghVmFsaWRhdGVSb2J1c3RFbnRyeVBvaW50KGNvbnRleHQsIGJ1ZlNpemUp
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghVmFsaWRh
dGVHZXRTYW1wbGVyUGFyYW1ldGVyQmFzZShjb250ZXh0LCBzYW1wbGVyLCBwbmFtZSwgbGVuZ3Ro
KSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlk
YXRlUm9idXN0QnVmZmVyU2l6ZShjb250ZXh0LCBidWZTaXplLCAqbGVuZ3RoKSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJpdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQg
c2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQoreworICAgIHJldHVybiBWYWxp
ZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJCYXNlKGNvbnRleHQsIHNhbXBsZXIsIHBuYW1lLCBudWxs
cHRyKTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IHNhbXBsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQoreworICAgIGlm
ICghVmFsaWRhdGVSb2J1c3RFbnRyeVBvaW50KGNvbnRleHQsIGJ1ZlNpemUpKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghVmFsaWRhdGVHZXRTYW1wbGVy
UGFyYW1ldGVyQmFzZShjb250ZXh0LCBzYW1wbGVyLCBwbmFtZSwgbGVuZ3RoKSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0QnVm
ZmVyU2l6ZShjb250ZXh0LCBidWZTaXplLCAqbGVuZ3RoKSkKKyAgICB7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZVNh
bXBsZXJQYXJhbWV0ZXJmKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBzYW1wbGVyLCBHTGVudW0g
cG5hbWUsIEdMZmxvYXQgcGFyYW0pCit7CisgICAgcmV0dXJuIFZhbGlkYXRlU2FtcGxlclBhcmFt
ZXRlckJhc2UoY29udGV4dCwgc2FtcGxlciwgcG5hbWUsIC0xLCAmcGFyYW0pOworfQorCitib29s
IFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcmZ2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzYW1wbGVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykKK3sKKyAgICByZXR1cm4gVmFsaWRhdGVTYW1wbGVy
UGFyYW1ldGVyQmFzZShjb250ZXh0LCBzYW1wbGVyLCBwbmFtZSwgLTEsIHBhcmFtcyk7Cit9CisK
K2Jvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBz
YW1wbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmbG9hdCAqcGFyYW1zKQoreworICAgIGlmICghVmFsaWRhdGVSb2J1c3RFbnRyeVBv
aW50KGNvbnRleHQsIGJ1ZlNpemUpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIHJldHVybiBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJCYXNlKGNvbnRleHQsIHNh
bXBsZXIsIHBuYW1lLCBidWZTaXplLCBwYXJhbXMpOworfQorCitib29sIFZhbGlkYXRlU2FtcGxl
clBhcmFtZXRlcmkoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFt
ZSwgR0xpbnQgcGFyYW0pCit7CisgICAgcmV0dXJuIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlckJh
c2UoY29udGV4dCwgc2FtcGxlciwgcG5hbWUsIC0xLCAmcGFyYW0pOworfQorCitib29sIFZhbGlk
YXRlU2FtcGxlclBhcmFtZXRlcml2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBzYW1wbGVyLCBH
TGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpCit7CisgICAgcmV0dXJuIFZhbGlkYXRl
U2FtcGxlclBhcmFtZXRlckJhc2UoY29udGV4dCwgc2FtcGxlciwgcG5hbWUsIC0xLCBwYXJhbXMp
OworfQorCitib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgc2FtcGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCit7CisgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEVu
dHJ5UG9pbnQoY29udGV4dCwgYnVmU2l6ZSkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgcmV0dXJuIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlckJhc2UoY29udGV4
dCwgc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcyk7Cit9CisKK2Jvb2wgVmFsaWRhdGVH
ZXRWZXJ0ZXhBdHRyaWJmdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMZW51bSBw
bmFtZSwgR0xmbG9hdCAqcGFyYW1zKQoreworICAgIHJldHVybiBWYWxpZGF0ZUdldFZlcnRleEF0
dHJpYkJhc2UoY29udGV4dCwgaW5kZXgsIHBuYW1lLCBudWxscHRyLCBmYWxzZSwgZmFsc2UpOwor
fQorCitib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xmbG9hdCAqcGFyYW1zKQoreworICAgIGlmICghVmFsaWRhdGVSb2J1c3RFbnRyeVBvaW50KGNv
bnRleHQsIGJ1ZlNpemUpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIGlmICghVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJCYXNlKGNvbnRleHQsIGluZGV4LCBwbmFt
ZSwgbGVuZ3RoLCBmYWxzZSwgZmFsc2UpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGlmICghVmFsaWRhdGVSb2J1c3RCdWZmZXJTaXplKGNvbnRleHQsIGJ1ZlNp
emUsICpsZW5ndGgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliaXYoQ29udGV4
dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCit7
CisgICAgcmV0dXJuIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliQmFzZShjb250ZXh0LCBpbmRleCwg
cG5hbWUsIG51bGxwdHIsIGZhbHNlLCBmYWxzZSk7Cit9CisKK2Jvb2wgVmFsaWRhdGVHZXRWZXJ0
ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQoreworICAgIGlm
ICghVmFsaWRhdGVSb2J1c3RFbnRyeVBvaW50KGNvbnRleHQsIGJ1ZlNpemUpKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghVmFsaWRhdGVHZXRWZXJ0ZXhB
dHRyaWJCYXNlKGNvbnRleHQsIGluZGV4LCBwbmFtZSwgbGVuZ3RoLCBmYWxzZSwgZmFsc2UpKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghVmFsaWRhdGVS
b2J1c3RCdWZmZXJTaXplKGNvbnRleHQsIGJ1ZlNpemUsICpsZW5ndGgpKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZh
bGlkYXRlR2V0VmVydGV4QXR0cmliUG9pbnRlcnYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGlu
ZGV4LCBHTGVudW0gcG5hbWUsIHZvaWQgKipwb2ludGVyKQoreworICAgIHJldHVybiBWYWxpZGF0
ZUdldFZlcnRleEF0dHJpYkJhc2UoY29udGV4dCwgaW5kZXgsIHBuYW1lLCBudWxscHRyLCB0cnVl
LCBmYWxzZSk7Cit9CisKK2Jvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVz
dEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqcG9p
bnRlcikKK3sKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0RW50cnlQb2ludChjb250ZXh0LCBidWZT
aXplKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIVZh
bGlkYXRlR2V0VmVydGV4QXR0cmliQmFzZShjb250ZXh0LCBpbmRleCwgcG5hbWUsIGxlbmd0aCwg
dHJ1ZSwgZmFsc2UpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IGlmICghVmFsaWRhdGVSb2J1c3RCdWZmZXJTaXplKGNvbnRleHQsIGJ1ZlNpemUsICpsZW5ndGgp
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliSWl2KENvbnRleHQgKmNvbnRleHQs
IEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQoreworICAgIHJldHVy
biBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYkJhc2UoY29udGV4dCwgaW5kZXgsIHBuYW1lLCBudWxs
cHRyLCBmYWxzZSwgdHJ1ZSk7Cit9CisKK2Jvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJJaXZS
b2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQoreworICAgIGlmICghVmFs
aWRhdGVSb2J1c3RFbnRyeVBvaW50KGNvbnRleHQsIGJ1ZlNpemUpKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJC
YXNlKGNvbnRleHQsIGluZGV4LCBwbmFtZSwgbGVuZ3RoLCBmYWxzZSwgdHJ1ZSkpCisgICAgewor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEJ1
ZmZlclNpemUoY29udGV4dCwgYnVmU2l6ZSwgKmxlbmd0aCkpCisgICAgeworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVH
ZXRWZXJ0ZXhBdHRyaWJJdWl2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgR0xlbnVt
IHBuYW1lLCBHTHVpbnQgKnBhcmFtcykKK3sKKyAgICByZXR1cm4gVmFsaWRhdGVHZXRWZXJ0ZXhB
dHRyaWJCYXNlKGNvbnRleHQsIGluZGV4LCBwbmFtZSwgbnVsbHB0ciwgZmFsc2UsIHRydWUpOwor
fQorCitib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpCit7CisgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEVu
dHJ5UG9pbnQoY29udGV4dCwgYnVmU2l6ZSkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgaWYgKCFWYWxpZGF0ZUdldFZlcnRleEF0dHJpYkJhc2UoY29udGV4dCwg
aW5kZXgsIHBuYW1lLCBsZW5ndGgsIGZhbHNlLCB0cnVlKSkKKyAgICB7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0QnVmZmVyU2l6ZShjb250
ZXh0LCBidWZTaXplLCAqbGVuZ3RoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZv
cm1CbG9ja2l2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCAqcGFyYW1zKQoreworICAgIHJldHVybiBWYWxpZGF0ZUdldEFjdGl2ZVVu
aWZvcm1CbG9ja2l2QmFzZShjb250ZXh0LCBwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5h
bWUsIG51bGxwdHIpOworfQorCitib29sIFZhbGlkYXRlR2V0QWN0aXZlVW5pZm9ybUJsb2NraXZS
b2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQoreworICAgIGlmICghVmFsaWRhdGVSb2J1c3RF
bnRyeVBvaW50KGNvbnRleHQsIGJ1ZlNpemUpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIGlmICghVmFsaWRhdGVHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdkJhc2Uo
Y29udGV4dCwgcHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBsZW5ndGgpKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghVmFsaWRhdGVSb2J1
c3RCdWZmZXJTaXplKGNvbnRleHQsIGJ1ZlNpemUsICpsZW5ndGgpKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlk
YXRlR2V0SW50ZXJuYWxGb3JtYXRpdihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
ICpwYXJhbXMpCit7CisgICAgcmV0dXJuIFZhbGlkYXRlR2V0SW50ZXJuYWxGb3JtYXRpdkJhc2Uo
Y29udGV4dCwgdGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgcG5hbWUsIGJ1ZlNpemUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Cit9CisKK2Jvb2wg
VmFsaWRhdGVHZXRJbnRlcm5hbEZvcm1hdGl2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGlu
dGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQoreworICAgIGlmICghVmFsaWRhdGVSb2J1c3RF
bnRyeVBvaW50KGNvbnRleHQsIGJ1ZlNpemUpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIGlmICghVmFsaWRhdGVHZXRJbnRlcm5hbEZvcm1hdGl2QmFzZShjb250
ZXh0LCB0YXJnZXQsIGludGVybmFsZm9ybWF0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoKSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlkYXRlUm9i
dXN0QnVmZmVyU2l6ZShjb250ZXh0LCBidWZTaXplLCAqbGVuZ3RoKSkKKyAgICB7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAgLy8gbmFt
ZXNwYWNlIGdsCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFs
aWRhdGlvbkVTLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3ZhbGlkYXRpb25FUy5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzLDYgKzEzLDcgQEAKIAogI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgogI2luY2x1ZGUgPEdMRVMz
L2dsMy5oPgorI2luY2x1ZGUgPEdMRVMzL2dsMzEuaD4KIAogbmFtZXNwYWNlIGVnbAogewpAQCAt
MjMsMTkgKzI0LDIwIEBACiBuYW1lc3BhY2UgZ2wKIHsKIGNsYXNzIENvbnRleHQ7CitzdHJ1Y3Qg
Rm9ybWF0OwogY2xhc3MgUHJvZ3JhbTsKIGNsYXNzIFNoYWRlcjsKIGNsYXNzIFZhbGlkYXRpb25D
b250ZXh0OwogCi1ib29sIFZhbGlkQ2FwKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBj
YXApOwogYm9vbCBWYWxpZFRleHR1cmVUYXJnZXQoY29uc3QgVmFsaWRhdGlvbkNvbnRleHQgKmNv
bnRleHQsIEdMZW51bSB0YXJnZXQpOwogYm9vbCBWYWxpZFRleHR1cmUyRFRhcmdldChjb25zdCBW
YWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCk7CiBib29sIFZhbGlkVGV4
dHVyZTNEVGFyZ2V0KGNvbnN0IFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFy
Z2V0KTsKK2Jvb2wgVmFsaWRUZXh0dXJlRXh0ZXJuYWxUYXJnZXQoY29uc3QgVmFsaWRhdGlvbkNv
bnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQpOwogYm9vbCBWYWxpZFRleHR1cmUyRERlc3Rp
bmF0aW9uVGFyZ2V0KGNvbnN0IFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFy
Z2V0KTsKIGJvb2wgVmFsaWRUZXh0dXJlM0REZXN0aW5hdGlvblRhcmdldChjb25zdCBWYWxpZGF0
aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCk7CiBib29sIFZhbGlkRnJhbWVidWZm
ZXJUYXJnZXQoR0xlbnVtIHRhcmdldCk7Ci1ib29sIFZhbGlkQnVmZmVyVGFyZ2V0KGNvbnN0IENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQpOwotYm9vbCBWYWxpZEJ1ZmZlclBhcmFtZXRl
cihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUpOworYm9vbCBWYWxpZEJ1ZmZl
clRhcmdldChjb25zdCBWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCk7
Citib29sIFZhbGlkQnVmZmVyUGFyYW1ldGVyKGNvbnN0IFZhbGlkYXRpb25Db250ZXh0ICpjb250
ZXh0LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgKm51bVBhcmFtcyk7CiBib29sIFZhbGlkTWlwTGV2
ZWwoY29uc3QgVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMaW50
IGxldmVsKTsKIGJvb2wgVmFsaWRJbWFnZVNpemVQYXJhbWV0ZXJzKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LApAQCAt
NDgsMTcgKzUwLDI3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50
ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRo
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQpOworYm9vbCBW
YWxpZEltYWdlRGF0YVNpemUoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdGV4dHVyZVRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdo
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZGVwdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcGl4
ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbWFnZVNpemUpOworCiBib29s
IFZhbGlkUXVlcnlUeXBlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBxdWVyeVR5cGUp
OwogCiAvLyBSZXR1cm5zIHZhbGlkIHByb2dyYW0gaWYgaWQgaXMgYSB2YWxpZCBwcm9ncmFtIG5h
bWUKIC8vIEVycm9ycyBJTlZBTElEX09QRVJBVElPTiBpZiB2YWxpZCBzaGFkZXIgaXMgZ2l2ZW4g
YW5kIHJldHVybnMgTlVMTAogLy8gRXJyb3JzIElOVkFMSURfVkFMVUUgb3RoZXJ3aXNlIGFuZCBy
ZXR1cm5zIE5VTEwKLVByb2dyYW0gKkdldFZhbGlkUHJvZ3JhbShDb250ZXh0ICpjb250ZXh0LCBH
THVpbnQgaWQpOworUHJvZ3JhbSAqR2V0VmFsaWRQcm9ncmFtKFZhbGlkYXRpb25Db250ZXh0ICpj
b250ZXh0LCBHTHVpbnQgaWQpOwogCiAvLyBSZXR1cm5zIHZhbGlkIHNoYWRlciBpZiBpZCBpcyBh
IHZhbGlkIHNoYWRlciBuYW1lCiAvLyBFcnJvcnMgSU5WQUxJRF9PUEVSQVRJT04gaWYgdmFsaWQg
cHJvZ3JhbSBpcyBnaXZlbiBhbmQgcmV0dXJucyBOVUxMCiAvLyBFcnJvcnMgSU5WQUxJRF9WQUxV
RSBvdGhlcndpc2UgYW5kIHJldHVybnMgTlVMTAotU2hhZGVyICpHZXRWYWxpZFNoYWRlcihDb250
ZXh0ICpjb250ZXh0LCBHTHVpbnQgaWQpOworU2hhZGVyICpHZXRWYWxpZFNoYWRlcihWYWxpZGF0
aW9uQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGlkKTsKIAogYm9vbCBWYWxpZGF0ZUF0dGFjaG1l
bnRUYXJnZXQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGF0dGFjaG1lbnQpOwogYm9vbCBWYWxp
ZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VQYXJhbWV0ZXJzQmFzZShDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gdGFyZ2V0LCBHTHNpemVpIHNhbXBsZXMsCkBAIC02OSw3ICs4MSw3IEBACiBib29sIFZh
bGlkYXRlRnJhbWVidWZmZXJSZW5kZXJidWZmZXJQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBHTHVp
bnQgcmVuZGVyYnVmZmVyKTsKIAotYm9vbCBWYWxpZGF0ZUJsaXRGcmFtZWJ1ZmZlclBhcmFtZXRl
cnMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVCbGl0RnJhbWVidWZmZXJQYXJhbWV0
ZXJzKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgc3JjWDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBzcmNZMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IHNyY1gxLApAQCAtODEsMTMgKzkzLDcgQEAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQgbWFzaywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWx0ZXIpOwogCi1ib29sIFZhbGlkYXRlR2V0
VmVydGV4QXR0cmliUGFyYW1ldGVycyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUpOwot
Ci1ib29sIFZhbGlkYXRlVGV4UGFyYW1QYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwotCi1ib29sIFZhbGlkYXRlU2FtcGxlck9iamVjdFBhcmFt
ZXRlcihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUpOwotCi1ib29sIFZhbGlkYXRlUmVh
ZFBpeGVscyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVJlYWRQaXhlbHMoVmFsaWRh
dGlvbkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LAog
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgd2lkdGgsCkBAIC05NSw2ICsxMDEsMTYgQEAKICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqcGl4ZWxzKTsKK2Jvb2wgVmFsaWRhdGVS
ZWFkUGl4ZWxzUm9idXN0QU5HTEUoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
Zm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqcGl4ZWxzKTsKIGJvb2wgVmFsaWRh
dGVSZWFkblBpeGVsc0VYVChDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKQEAg
LTEwNCw2ICsxMjAsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlw
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x2b2lkICpwaXhlbHMpOworYm9vbCBWYWxpZGF0ZVJlYWRu
UGl4ZWxzUm9idXN0QU5HTEUoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqZGF0YSk7CiAKIGJvb2wg
VmFsaWRhdGVHZW5RdWVyaWVzRVhUKGdsOjpDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4pOwog
Ym9vbCBWYWxpZGF0ZURlbGV0ZVF1ZXJpZXNFWFQoZ2w6OkNvbnRleHQgKmNvbnRleHQsIEdMc2l6
ZWkgbik7CkBAIC0xMTIsMjAgKzEzOCw2MiBAQAogYm9vbCBWYWxpZGF0ZUVuZFF1ZXJ5QmFzZShD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0KTsKIGJvb2wgVmFsaWRhdGVFbmRRdWVyeUVY
VChDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0KTsKIGJvb2wgVmFsaWRhdGVRdWVyeUNv
dW50ZXJFWFQoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGlkLCBHTGVudW0gdGFyZ2V0KTsKLWJv
b2wgVmFsaWRhdGVHZXRRdWVyeWl2QmFzZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0
LCBHTGVudW0gcG5hbWUpOworYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5aXZCYXNlKENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xzaXplaSAqbnVtUGFyYW1zKTsK
IGJvb2wgVmFsaWRhdGVHZXRRdWVyeWl2RVhUKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJn
ZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0UXVlcnlP
YmplY3RWYWx1ZUJhc2UoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBu
YW1lKTsKK2Jvb2wgVmFsaWRhdGVHZXRRdWVyeWl2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0UXVlcnlP
YmplY3RWYWx1ZUJhc2UoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpICpudW1QYXJhbXMpOwogYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0aXZF
WFQoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJh
bXMpOworYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZT
aXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICps
ZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpw
YXJhbXMpOwogYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWl2RVhUKENvbnRleHQgKmNvbnRl
eHQsIEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBhcmFtcyk7Citib29sIFZhbGlk
YXRlR2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpOwog
Ym9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0aTY0dkVYVChDb250ZXh0ICpjb250ZXh0LCBHTHVp
bnQgaWQsIEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRR
dWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludDY0ICpwYXJhbXMpOwog
Ym9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWk2NHZFWFQoQ29udGV4dCAqY29udGV4dCwgR0x1
aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMdWludDY0ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdl
dFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludDY0ICpw
YXJhbXMpOwogCiBib29sIFZhbGlkYXRlVW5pZm9ybShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
dW5pZm9ybVR5cGUsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50KTsKIGJvb2wgVmFsaWRh
dGVVbmlmb3JtTWF0cml4KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtYXRyaXhUeXBlLCBHTGlu
dCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Ym9vbGVhbiB0cmFuc3Bvc2UpOwogCi1ib29sIFZhbGlkYXRlU3RhdGVRdWVyeShDb250ZXh0ICpj
b250ZXh0LCBHTGVudW0gcG5hbWUsIEdMZW51bSAqbmF0aXZlVHlwZSwgdW5zaWduZWQgaW50ICpu
dW1QYXJhbXMpOworYm9vbCBWYWxpZGF0ZVN0YXRlUXVlcnkoVmFsaWRhdGlvbkNvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gKm5hdGl2ZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgKm51bVBhcmFtcyk7CiAKK2Jvb2wgVmFsaWRhdGVSb2J1c3RTdGF0ZVF1
ZXJ5KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICpuYXRpdmVU
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpudW1QYXJh
bXMpOworCiBib29sIFZhbGlkYXRlQ29weVRleEltYWdlUGFyYW1ldGVyc0Jhc2UoVmFsaWRhdGlv
bkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsZXZlbCwKQEAgLTEzOSw5ICsyMDcsMTMgQEAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGJvcmRlciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gKnRleHR1cmVJbnRlcm5hbEZvcm1hdE91dCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0ICp0ZXh0dXJlRm9ybWF0
T3V0KTsKIAotYm9vbCBWYWxpZGF0ZURyYXdBcnJheXMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIHByaW1jb3VudCk7Citi
b29sIFZhbGlkYXRlRHJhd0FycmF5cyhWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgZmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBwcmltY291bnQpOwogYm9vbCBWYWxpZGF0ZURy
YXdBcnJheXNJbnN0YW5jZWQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGUsIEdMaW50IGZp
cnN0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIHByaW1jb3VudCk7CiBib29sIFZhbGlkYXRlRHJh
d0FycmF5c0luc3RhbmNlZEFOR0xFKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtb2RlLCBHTGlu
dCBmaXJzdCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBwcmltY291bnQpOwogCkBAIC0xODMsNiAr
MjU1LDI0IEBACiBib29sIFZhbGlkYXRlR2V0VW5pZm9ybWl2KENvbnRleHQgKmNvbnRleHQsIEdM
dWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQqIHBhcmFtcyk7CiBib29sIFZhbGlk
YXRlR2V0blVuaWZvcm1mdkVYVChDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcHJvZ3JhbSwgR0xp
bnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xmbG9hdCogcGFyYW1zKTsKIGJvb2wgVmFs
aWRhdGVHZXRuVW5pZm9ybWl2RVhUKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBwcm9ncmFtLCBH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCBHTGludCogcGFyYW1zKTsKK2Jvb2wgVmFs
aWRhdGVHZXRVbmlmb3JtZnZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRVbmlm
b3JtaXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0VW5pZm9ybXVpdlJvYnVzdEFO
R0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCAqcGFyYW1zKTsKIAogYm9vbCBWYWxpZGF0ZURpc2NhcmRGcmFtZWJ1ZmZlckJhc2UoQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xzaXplaSBudW1BdHRhY2htZW50cywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51bSAqYXR0YWNobWVu
dHMsIGJvb2wgZGVmYXVsdEZyYW1lYnVmZmVyKTsKQEAgLTIzNSw3ICszMjUsMTEgQEAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KTsKIAotYm9vbCBWYWxpZGF0ZUdldEJ1ZmZl
clBvaW50ZXJ2QmFzZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5h
bWUsIHZvaWQgKipwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBvaW50ZXJ2QmFzZShD
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKnBhcmFtcyk7CiBib29s
IFZhbGlkYXRlVW5tYXBCdWZmZXJCYXNlKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQp
OwogYm9vbCBWYWxpZGF0ZU1hcEJ1ZmZlclJhbmdlQmFzZShDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LApAQCAtMjQ3LDYgKzM0
MSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIg
b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlw
dHIgbGVuZ3RoKTsKIAorYm9vbCBWYWxpZGF0ZUdlbmVyYXRlTWlwbWFwKENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSB0YXJnZXQpOworCiBib29sIFZhbGlkYXRlR2VuQnVmZmVycyhDb250ZXh0ICpj
b250ZXh0LCBHTGludCBuLCBHTHVpbnQgKmJ1ZmZlcnMpOwogYm9vbCBWYWxpZGF0ZURlbGV0ZUJ1
ZmZlcnMoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbiwgY29uc3QgR0x1aW50ICpidWZmZXJzKTsK
IGJvb2wgVmFsaWRhdGVHZW5GcmFtZWJ1ZmZlcnMoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbiwg
R0x1aW50ICpmcmFtZWJ1ZmZlcnMpOwpAQCAtMjU4LDYgKzM1NCwyMDYgQEAKIAogYm9vbCBWYWxp
ZGF0ZUdlbk9yRGVsZXRlKENvbnRleHQgKmNvbnRleHQsIEdMaW50IG4pOwogCitib29sIFZhbGlk
YXRlRW5hYmxlKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjYXApOworYm9vbCBWYWxpZGF0ZURp
c2FibGUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNhcCk7Citib29sIFZhbGlkYXRlSXNFbmFi
bGVkKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjYXApOworCitib29sIFZhbGlkYXRlUm9idXN0
RW50cnlQb2ludChWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBidWZTaXplKTsK
K2Jvb2wgVmFsaWRhdGVSb2J1c3RCdWZmZXJTaXplKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0
LCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgbnVtUGFyYW1zKTsKKworYm9vbCBWYWxpZGF0ZUdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KFZhbGlkYXRpb25Db250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKm51bVBhcmFtcyk7Citib29sIFZhbGlk
YXRlR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShWYWxpZGF0
aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYXR0YWNo
bWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Km51bVBhcmFtcyk7CisKK2Jvb2wgVmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0ZXJpdihWYWxpZGF0
aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsK
K2Jvb2wgVmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKFZhbGlkYXRpb25D
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOworCitib29sIFZhbGlkYXRl
R2V0QnVmZmVyUGFyYW1ldGVyaTY0dihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludDY0ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldEJ1
ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQ2NCAqcGFyYW1zKTsKKworYm9vbCBWYWxpZGF0ZUdldFBy
b2dyYW1pdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHBuYW1lLCBH
THNpemVpICpudW1QYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1pdlJvYnVzdEFOR0xF
KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
YnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpu
dW1QYXJhbXMpOworCitib29sIFZhbGlkYXRlR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYoQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgKnBhcmFtcyk7CisKK2Jvb2wgVmFsaWRhdGVHZXRTaGFkZXJpdihDb250ZXh0
ICpjb250ZXh0LCBHTHVpbnQgc2hhZGVyLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwor
Ym9vbCBWYWxpZGF0ZUdldFNoYWRlcml2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzaGFkZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKKworYm9vbCBWYWxpZGF0ZUdldFRleFBh
cmFtZXRlcmZ2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwg
R0xmbG9hdCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRUZXhQYXJh
bWV0ZXJpdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdM
aW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUo
Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKKworYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlcmYo
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBh
cmFtKTsKK2Jvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJmdihDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Citib29sIFZh
bGlkYXRlVGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Citib29s
IFZhbGlkYXRlVGV4UGFyYW1ldGVyaShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBH
TGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKK2Jvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJpdihD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50
ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1
ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGlu
dCAqcGFyYW1zKTsKKworYm9vbCBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJmdihDb250ZXh0
ICpjb250ZXh0LCBHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMp
OworYm9vbCBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IHNhbXBsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdl
dFNhbXBsZXJQYXJhbWV0ZXJpdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgc2FtcGxlciwgR0xl
bnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzYW1wbGVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYnVmU2l6ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBh
cmFtcyk7CisKK2Jvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyZihDb250ZXh0ICpjb250ZXh0
LCBHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKK2Jvb2wgVmFs
aWRhdGVTYW1wbGVyUGFyYW1ldGVyZnYoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IHNhbXBsZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyZnZS
b2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBzYW1wbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKK2Jvb2wgVmFs
aWRhdGVTYW1wbGVyUGFyYW1ldGVyaShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgc2FtcGxlciwg
R0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7Citib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRl
cml2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBzYW1wbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMp
OworYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHNhbXBsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGludCAqcGFyYW1zKTsKKworYm9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYmZ2
KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpw
YXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUoQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZmxvYXQgKnBhcmFtcyk7CisKK2Jvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJpdihD
b250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFt
cyk7Citib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgKnBhcmFtcyk7CisKK2Jvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihD
b250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgdm9pZCAqKnBvaW50
ZXIpOworYm9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipwb2ludGVyKTsKKwor
Ym9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYklpdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQg
aW5kZXgsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0VmVy
dGV4QXR0cmliSWl2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7CisK
K2Jvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJJdWl2KENvbnRleHQgKmNvbnRleHQsIEdMdWlu
dCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0
VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpw
YXJhbXMpOworCitib29sIFZhbGlkYXRlR2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJv
Z3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdW5pZm9y
bUJsb2NrSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJh
bXMpOworYm9vbCBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUoQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAq
bGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgKnBhcmFtcyk7CisKK2Jvb2wgVmFsaWRhdGVHZXRJbnRlcm5hbEZvcm1hdGl2KENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9y
bWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0
SW50ZXJuYWxGb3JtYXRpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgKnBhcmFtcyk7CisKIC8vIEVycm9yIG1lc3NhZ2VzIHNoYXJlZCBoZXJlIGZvciB1
c2UgaW4gdGVzdGluZy4KIGV4dGVybiBjb25zdCBjaGFyICpnX0V4Y2VlZHNNYXhFbGVtZW50RXJy
b3JNZXNzYWdlOwogfSAgLy8gbmFtZXNwYWNlIGdsCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzIuY3BwCShyZXZpc2lv
biAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRh
dGlvbkVTMi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcsMTggKzcsMjMgQEAKIC8vIHZhbGlkYXRp
b25FUzIuY3BwOiBWYWxpZGF0aW9uIGZ1bmN0aW9ucyBmb3IgT3BlbkdMIEVTIDIuMCBlbnRyeSBw
b2ludCBwYXJhbWV0ZXJzCiAKICNpbmNsdWRlICJsaWJBTkdMRS92YWxpZGF0aW9uRVMyLmgiCi0j
aW5jbHVkZSAibGliQU5HTEUvdmFsaWRhdGlvbkVTLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvdmFs
aWRhdGlvbkVTMy5oIgorCisjaW5jbHVkZSA8Y3N0ZGludD4KKworI2luY2x1ZGUgImNvbW1vbi9t
YXRodXRpbC5oIgorI2luY2x1ZGUgImNvbW1vbi9zdHJpbmdfdXRpbHMuaCIKKyNpbmNsdWRlICJj
b21tb24vdXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dC5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL1RleHR1cmUuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlci5o
IgorI2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL1JlbmRlcmJ1ZmZlci5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1NoYWRlci5oIgor
I2luY2x1ZGUgImxpYkFOR0xFL1VuaWZvcm0uaCIKICNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1
dGlscy5oIgotI2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5oIgorI2lu
Y2x1ZGUgImxpYkFOR0xFL3ZhbGlkYXRpb25FUy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3ZhbGlk
YXRpb25FUzMuaCIKIAotI2luY2x1ZGUgImNvbW1vbi9tYXRodXRpbC5oIgotI2luY2x1ZGUgImNv
bW1vbi91dGlsaXRpZXMuaCIKLQogbmFtZXNwYWNlIGdsCiB7CiAKQEAgLTQ2LDkgKzUxLDkgQEAK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaWYgKGNvbnRleHQtPmdldFN0YXRl
KCkuaXNTY2lzc29yVGVzdEVuYWJsZWQoKSkKKyAgICBpZiAoY29udGV4dC0+Z2V0R0xTdGF0ZSgp
LmlzU2Npc3NvclRlc3RFbmFibGVkKCkpCiAgICAgewotICAgICAgICBjb25zdCBSZWN0YW5nbGUg
JnNjaXNzb3IgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFNjaXNzb3IoKTsKKyAgICAgICAgY29u
c3QgUmVjdGFuZ2xlICZzY2lzc29yID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFNjaXNzb3Io
KTsKICAgICAgICAgcmV0dXJuIHNjaXNzb3IueCA+IDAgfHwgc2Npc3Nvci55ID4gMCB8fCBzY2lz
c29yLndpZHRoIDwgd3JpdGVTaXplLndpZHRoIHx8CiAgICAgICAgICAgICAgICBzY2lzc29yLmhl
aWdodCA8IHdyaXRlU2l6ZS5oZWlnaHQ7CiAgICAgfQpAQCAtNTYsMjEgKzYxLDI1NSBAQAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citib29sIFZhbGlkYXRl
UGF0aEluc3RhbmNlcyhnbDo6Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgbnVtUGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB2b2lkICpwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFz
ZSkKK3sKKyAgICBjb25zdCBhdXRvICphcnJheSA9IHN0YXRpY19jYXN0PGNvbnN0IFQgKj4ocGF0
aHMpOworCisgICAgZm9yIChHTHNpemVpIGkgPSAwOyBpIDwgbnVtUGF0aHM7ICsraSkKKyAgICB7
CisgICAgICAgIGNvbnN0IEdMdWludCBwYXRoTmFtZSA9IGFycmF5W2ldICsgcGF0aEJhc2U7Cisg
ICAgICAgIGlmIChjb250ZXh0LT5oYXNQYXRoKHBhdGhOYW1lKSAmJiAhY29udGV4dC0+aGFzUGF0
aERhdGEocGF0aE5hbWUpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJObyBzdWNoIHBhdGggb2JqZWN0
LiIpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUluc3RhbmNlZFBhdGhQYXJhbWV0ZXJzKGds
OjpDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgbnVtUGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHBhdGhOYW1lVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICpwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgcGF0aEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQoreworICAgIGlmICghY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLnBhdGhSZW5kZXJpbmcpCisgICAgeworICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcigKKyAgICAgICAgICAgIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwg
IkdMX0NIUk9NSVVNX3BhdGhfcmVuZGVyaW5nIGlzIG5vdCBhdmFpbGFibGUuIikpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKHBhdGhzID09IG51bGxwdHIpCisgICAg
eworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihnbDo6RXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSwgIk5vIHBhdGggbmFtZSBhcnJheS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBpZiAobnVtUGF0aHMgPCAwKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoZ2w6OkVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJJbnZhbGlkIChuZWdhdGl2ZSkgbnVt
UGF0aHMuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFhbmds
ZTo6SXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlwZTxzdGQ6OnVpbnQzMl90PihudW1QYXRocykp
CisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihnbDo6RXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04sICJPdmVyZmxvdyBpbiBudW1QYXRocy4iKSk7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBzdGQ6OnVpbnQzMl90IHBhdGhOYW1lVHlwZVNpemUgPSAwOwor
ICAgIHN0ZDo6dWludDMyX3QgY29tcG9uZW50Q291bnQgICA9IDA7CisKKyAgICBzd2l0Y2ggKHBh
dGhOYW1lVHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAg
ICAgICAgIHBhdGhOYW1lVHlwZVNpemUgPSBzaXplb2YoR0x1Ynl0ZSk7CisgICAgICAgICAgICBp
ZiAoIVZhbGlkYXRlUGF0aEluc3RhbmNlczxHTHVieXRlPihjb250ZXh0LCBudW1QYXRocywgcGF0
aHMsIHBhdGhCYXNlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIEdMX0JZVEU6CisgICAgICAgICAgICBwYXRoTmFtZVR5
cGVTaXplID0gc2l6ZW9mKEdMYnl0ZSk7CisgICAgICAgICAgICBpZiAoIVZhbGlkYXRlUGF0aElu
c3RhbmNlczxHTGJ5dGU+KGNvbnRleHQsIG51bVBhdGhzLCBwYXRocywgcGF0aEJhc2UpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAgICAgICAgICBwYXRoTmFtZVR5cGVTaXplID0g
c2l6ZW9mKEdMdXNob3J0KTsKKyAgICAgICAgICAgIGlmICghVmFsaWRhdGVQYXRoSW5zdGFuY2Vz
PEdMdXNob3J0Pihjb250ZXh0LCBudW1QYXRocywgcGF0aHMsIHBhdGhCYXNlKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNl
IEdMX1NIT1JUOgorICAgICAgICAgICAgcGF0aE5hbWVUeXBlU2l6ZSA9IHNpemVvZihHTHNob3J0
KTsKKyAgICAgICAgICAgIGlmICghVmFsaWRhdGVQYXRoSW5zdGFuY2VzPEdMc2hvcnQ+KGNvbnRl
eHQsIG51bVBhdGhzLCBwYXRocywgcGF0aEJhc2UpKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5U
OgorICAgICAgICAgICAgcGF0aE5hbWVUeXBlU2l6ZSA9IHNpemVvZihHTHVpbnQpOworICAgICAg
ICAgICAgaWYgKCFWYWxpZGF0ZVBhdGhJbnN0YW5jZXM8R0x1aW50Pihjb250ZXh0LCBudW1QYXRo
cywgcGF0aHMsIHBhdGhCYXNlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX0lOVDoKKyAgICAgICAgICAgIHBhdGhO
YW1lVHlwZVNpemUgPSBzaXplb2YoR0xpbnQpOworICAgICAgICAgICAgaWYgKCFWYWxpZGF0ZVBh
dGhJbnN0YW5jZXM8R0xpbnQ+KGNvbnRleHQsIG51bVBhdGhzLCBwYXRocywgcGF0aEJhc2UpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihnbDo6RXJyb3Io
R0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBwYXRoIG5hbWUgdHlwZS4iKSk7CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3dpdGNoICh0cmFuc2Zvcm1UeXBlKQorICAg
IHsKKyAgICAgICAgY2FzZSBHTF9OT05FOgorICAgICAgICAgICAgY29tcG9uZW50Q291bnQgPSAw
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVFJBTlNMQVRFX1hfQ0hST01J
VU06CisgICAgICAgIGNhc2UgR0xfVFJBTlNMQVRFX1lfQ0hST01JVU06CisgICAgICAgICAgICBj
b21wb25lbnRDb3VudCA9IDE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9U
UkFOU0xBVEVfMkRfQ0hST01JVU06CisgICAgICAgICAgICBjb21wb25lbnRDb3VudCA9IDI7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9UUkFOU0xBVEVfM0RfQ0hST01JVU06
CisgICAgICAgICAgICBjb21wb25lbnRDb3VudCA9IDM7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBHTF9BRkZJTkVfMkRfQ0hST01JVU06CisgICAgICAgIGNhc2UgR0xfVFJBTlNQ
T1NFX0FGRklORV8yRF9DSFJPTUlVTToKKyAgICAgICAgICAgIGNvbXBvbmVudENvdW50ID0gNjsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX0FGRklORV8zRF9DSFJPTUlVTToK
KyAgICAgICAgY2FzZSBHTF9UUkFOU1BPU0VfQUZGSU5FXzNEX0NIUk9NSVVNOgorICAgICAgICAg
ICAgY29tcG9uZW50Q291bnQgPSAxMjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoZ2w6OkVycm9yKEdMX0lOVkFM
SURfRU5VTSwgIkludmFsaWQgdHJhbnNmb3JtYXRpb24uIikpOworICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICBpZiAoY29tcG9uZW50Q291bnQgIT0gMCAmJiB0cmFuc2Zvcm1W
YWx1ZXMgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKGds
OjpFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiTm8gdHJhbnNmb3JtIGFycmF5IGdpdmVuLiIpKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGFuZ2xlOjpDaGVja2VkTnVtZXJp
YzxzdGQ6OnVpbnQzMl90PiBjaGVja2VkU2l6ZSgwKTsKKyAgICBjaGVja2VkU2l6ZSArPSAobnVt
UGF0aHMgKiBwYXRoTmFtZVR5cGVTaXplKTsKKyAgICBjaGVja2VkU2l6ZSArPSAobnVtUGF0aHMg
KiBzaXplb2YoR0xmbG9hdCkgKiBjb21wb25lbnRDb3VudCk7CisgICAgaWYgKCFjaGVja2VkU2l6
ZS5Jc1ZhbGlkKCkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihnbDo6RXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJPdmVyZmxvdyBpbiBudW0gcGF0aHMuIikpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
SXNWYWxpZENvcHlUZXh0dXJlRm9ybWF0KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBpbnRlcm5h
bEZvcm1hdCkKK3sKKyAgICBjb25zdCBJbnRlcm5hbEZvcm1hdCAmaW50ZXJuYWxGb3JtYXRJbmZv
ID0gR2V0SW50ZXJuYWxGb3JtYXRJbmZvKGludGVybmFsRm9ybWF0KTsKKyAgICBzd2l0Y2ggKGlu
dGVybmFsRm9ybWF0SW5mby5mb3JtYXQpCisgICAgeworICAgICAgICBjYXNlIEdMX0FMUEhBOgor
ICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRToKKyAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQ
SEE6CisgICAgICAgIGNhc2UgR0xfUkdCOgorICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBjYXNlIEdMX1JFRDoKKyAgICAgICAgICAgIHJl
dHVybiBjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA+PSAzIHx8IGNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS50ZXh0dXJlUkc7CisKKyAgICAgICAgY2FzZSBHTF9CR1JBX0VYVDoKKyAg
ICAgICAgICAgIHJldHVybiBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZUZvcm1hdEJH
UkE4ODg4OworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorfQorCitib29sIElzVmFsaWRDb3B5VGV4dHVyZURlc3RpbmF0aW9uRm9ybWF0VHlwZShD
b250ZXh0ICpjb250ZXh0LCBHTGludCBpbnRlcm5hbEZvcm1hdCwgR0xlbnVtIHR5cGUpCit7Cisg
ICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfUkdCOgor
ICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNl
IEdMX0JHUkFfRVhUOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS50ZXh0dXJlRm9ybWF0QkdSQTg4ODg7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAg
ICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIElzVmFsaWRDb3B5VGV4dHVyZURlc3RpbmF0aW9uVGFyZ2V0KENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQpCit7CisgICAgc3dpdGNoICh0YXJnZXQpCisgICAg
eworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfMkQ6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgICAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IGFjY2VwdCBHTF9URVhUVVJFX1JFQ1RBTkdM
RV9BUkIgaWYgdGhlIHRleHR1cmVfcmVjdGFuZ2xlIGV4dGVuc2lvbiBpcworICAgICAgICAvLyBz
dXBwb3J0ZWQKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KK30KKworYm9vbCBJc1ZhbGlkQ29weVRleHR1cmVTb3VyY2VUYXJnZXQoQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHRhcmdldCkKK3sKKyAgICBpZiAoSXNWYWxpZENvcHlUZXh0dXJlRGVz
dGluYXRpb25UYXJnZXQoY29udGV4dCwgdGFyZ2V0KSkKKyAgICB7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogYWNjZXB0IEdMX1RFWFRVUkVf
RVhURVJOQUxfT0VTIGlmIHRoZSB0ZXh0dXJlX2V4dGVybmFsIGV4dGVuc2lvbiBpcworICAgIC8v
IHN1cHBvcnRlZAorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9ICAvLyBhbm9ueW1vdXMgbmFt
ZXNwYWNlCiAKLWJvb2wgVmFsaWRhdGVFUzJUZXhJbWFnZVBhcmFtZXRlcnMoQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwg
Ym9vbCBpc0NvbXByZXNzZWQsIGJvb2wgaXNTdWJJbWFnZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqcGl4
ZWxzKQorYm9vbCBWYWxpZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVycyhDb250ZXh0ICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ29tcHJlc3NlZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1N1YkltYWdlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgYm9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9y
bWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbWFnZVNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcGl4ZWxzKQogewog
ICAgIGlmICghVmFsaWRUZXh0dXJlMkREZXN0aW5hdGlvblRhcmdldChjb250ZXh0LCB0YXJnZXQp
KQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9F
TlVNKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKCFWYWxpZEltYWdl
U2l6ZVBhcmFtZXRlcnMoY29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgd2lkdGgsIGhlaWdodCwgMSwg
aXNTdWJJbWFnZSkpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNzgs
MTMgKzMxNywxMyBAQAogICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPEdMc2l6ZWk+OjptYXgo
KSAtIHhvZmZzZXQgPCB3aWR0aCB8fAogICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPEdMc2l6
ZWk+OjptYXgoKSAtIHlvZmZzZXQgPCBoZWlnaHQpCiAgICAgewotICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAogICAgIGlmICghaXNTdWJJbWFnZSAmJiAhaXNDb21wcmVzc2VkICYmIGludGVy
bmFsZm9ybWF0ICE9IGZvcm1hdCkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKQEAgLTk1LDcgKzMzNCw3IEBACiAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxHTHVp
bnQ+KHdpZHRoKSA+IChjYXBzLm1heDJEVGV4dHVyZVNpemUgPj4gbGV2ZWwpIHx8CiAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+KGhlaWdodCkgPiAoY2Fwcy5tYXgyRFRleHR1cmVTaXpl
ID4+IGxldmVsKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAgICAgfQpAQCAtMTAzLDcgKzM0Miw3IEBACiAgICAgewogICAgICAgICBpZiAo
IWlzU3ViSW1hZ2UgJiYgd2lkdGggIT0gaGVpZ2h0KQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApAQCAtMTEwLDEzICszNDksMTMgQEAKICAg
ICAgICAgaWYgKHN0YXRpY19jYXN0PEdMdWludD4od2lkdGgpID4gKGNhcHMubWF4Q3ViZU1hcFRl
eHR1cmVTaXplID4+IGxldmVsKSB8fAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0x1aW50Piho
ZWlnaHQpID4gKGNhcHMubWF4Q3ViZU1hcFRleHR1cmVTaXplID4+IGxldmVsKSkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQogICAg
IGVsc2UKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFM
SURfRU5VTSkpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X0VOVU0pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTIzLDcgKzM2Miw3
IEBACiAgICAgZ2w6OlRleHR1cmUgKnRleHR1cmUgPSBjb250ZXh0LT5nZXRUYXJnZXRUZXh0dXJl
KElzQ3ViZU1hcFRleHR1cmVUYXJnZXQodGFyZ2V0KSA/IEdMX1RFWFRVUkVfQ1VCRV9NQVAgOiB0
YXJnZXQpOwogICAgIGlmICghdGV4dHVyZSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKQEAgLTEzMSw5ICszNzAsMTAgQEAKICAgICB7CiAgICAgICAgIGlmIChm
b3JtYXQgIT0gR0xfTk9ORSkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKGdsOjpHZXRTaXpl
ZEludGVybmFsRm9ybWF0KGZvcm1hdCwgdHlwZSkgIT0gdGV4dHVyZS0+Z2V0SW50ZXJuYWxGb3Jt
YXQodGFyZ2V0LCBsZXZlbCkpCisgICAgICAgICAgICBpZiAoZ2w6OkdldFNpemVkSW50ZXJuYWxG
b3JtYXQoZm9ybWF0LCB0eXBlKSAhPQorICAgICAgICAgICAgICAgIHRleHR1cmUtPmdldEZvcm1h
dCh0YXJnZXQsIGxldmVsKS5hc1NpemVkKCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAg
ICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpAQCAtMTQxLDcgKzM4MSw3IEBACiAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxzaXpl
X3Q+KHhvZmZzZXQgKyB3aWR0aCkgPiB0ZXh0dXJlLT5nZXRXaWR0aCh0YXJnZXQsIGxldmVsKSB8
fAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c2l6ZV90Pih5b2Zmc2V0ICsgaGVpZ2h0KSA+IHRl
eHR1cmUtPmdldEhlaWdodCh0YXJnZXQsIGxldmVsKSkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtMTQ5LDcgKzM4OSw3IEBA
CiAgICAgewogICAgICAgICBpZiAodGV4dHVyZS0+Z2V0SW1tdXRhYmxlRm9ybWF0KCkpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAgICAgfQpAQCAtMTU3LDcgKzM5Nyw3IEBACiAgICAgLy8gVmVyaWZ5IHplcm8gYm9yZGVyCiAg
ICAgaWYgKGJvcmRlciAhPSAwKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
QEAgLTE2NCw3ICs0MDQsNyBAQAogICAgIGlmIChpc0NvbXByZXNzZWQpCiAgICAgewogICAgICAg
ICBHTGVudW0gYWN0dWFsSW50ZXJuYWxGb3JtYXQgPQotICAgICAgICAgICAgaXNTdWJJbWFnZSA/
IHRleHR1cmUtPmdldEludGVybmFsRm9ybWF0KHRhcmdldCwgbGV2ZWwpIDogaW50ZXJuYWxmb3Jt
YXQ7CisgICAgICAgICAgICBpc1N1YkltYWdlID8gdGV4dHVyZS0+Z2V0Rm9ybWF0KHRhcmdldCwg
bGV2ZWwpLmFzU2l6ZWQoKSA6IGludGVybmFsZm9ybWF0OwogICAgICAgICBzd2l0Y2ggKGFjdHVh
bEludGVybmFsRm9ybWF0KQogICAgICAgICB7CiAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VE
X1JHQl9TM1RDX0RYVDFfRVhUOgpAQCAtMTcxLDcgKzQxMSw3IEBACiAgICAgICAgICAgY2FzZSBH
TF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKICAgICAgICAgICAgIGlmICghY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVDb21wcmVzc2lvbkRYVDEpCiAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9F
TlVNKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNzgsNyArNDE4LDcgQEAKICAgICAgICAgICBjYXNl
IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU6CiAgICAgICAgICAgICBpZiAoIWNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlQ29tcHJlc3Npb25EWFQxKQogICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFM
SURfRU5VTSkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTg1LDcgKzQyNSw3IEBACiAgICAgICAgICAg
Y2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFOgogICAgICAgICAgICAgaWYg
KCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZUNvbXByZXNzaW9uRFhUNSkKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTE5Miw3ICs0MzIsNyBAQAogICAgICAg
ICAgIGNhc2UgR0xfRVRDMV9SR0I4X09FUzoKICAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRFVEMxUkdCOFRleHR1cmUpCiAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVN
KSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTksMTkgKzQzOSwxOSBAQAogICAgICAgICAgIGNhc2Ug
R0xfRVRDMV9SR0I4X0xPU1NZX0RFQ09ERV9BTkdMRToKICAgICAgICAgICAgICAgaWYgKCFjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkubG9zc3lFVENEZWNvZGUpCiAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKAorICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5W
QUxJRF9FTlVNLCAiQU5HTEVfbG9zc3lfZXRjX2RlY29kZSBleHRlbnNpb24gaXMgbm90IHN1cHBv
cnRlZCIpKTsKICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcigKKyAgICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoCiAgICAgICAgICAgICAgICAgICBHTF9JTlZBTElEX0VOVU0sICJpbnRl
cm5hbGZvcm1hdCBpcyBub3QgYSBzdXBwb3J0ZWQgY29tcHJlc3NlZCBpbnRlcm5hbCBmb3JtYXQi
KSk7CiAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBpZiAo
IVZhbGlkQ29tcHJlc3NlZEltYWdlU2l6ZShjb250ZXh0LCBhY3R1YWxJbnRlcm5hbEZvcm1hdCwg
d2lkdGgsIGhlaWdodCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtMjMxLDcgKzQ3MSw3IEBACiAgICAgICAg
ICAgY2FzZSBHTF9GTE9BVDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0p
KTsKKyAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9F
TlVNKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApAQCAtMjUwLDcg
KzQ5MCw3IEBACiAgICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pKTsKICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjU4LDcgKzQ5OCw3IEBACiAgICAgICAgICAgY2FzZSBH
TF9SRzoKICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVy
ZVJHKQogICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIHN3aXRjaCAodHlw
ZSkKQEAgLTI2OCw3ICs1MDgsNyBAQAogICAgICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9B
VF9PRVM6CiAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICBicmVhazsKQEAgLTI4MSw3ICs1
MjEsNyBAQAogICAgICAgICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVRfT0VTOgogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMjk1LDcgKzUzNSw3IEBACiAgICAgICAgICAgICAgIGNhc2UgR0xf
SEFMRl9GTE9BVF9PRVM6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC0zMDUsNyArNTQ1LDcg
QEAKICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMzEzLDcgKzU1Myw3IEBACiAgICAgICAgICAgY2FzZSBHTF9TUkdCX0FMUEhB
X0VYVDoKICAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnNSR0IpCiAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgc3dpdGNoICh0eXBlKQpAQCAtMzIxLDcgKzU2MSw3
IEBACiAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTMzNyw3ICs1NzcsNyBAQAogICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lH
TkVEX0lOVDoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTikpOworICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTM0NywxMiArNTg3LDEyIEBACiAg
ICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UXzI0XzhfT0VTOgogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KIApAQCAtMzYyLDEyICs2MDIsMTIgQEAKICAgICAgICAgICBjYXNl
IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgogICAgICAgICAgICAgaWYgKGNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlQ29tcHJlc3Npb25EWFQxKQogICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAg
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgYnJlYWs7CkBAIC0zNzQsMTIgKzYxNCwxMiBAQAogICAgICAgICAgIGNhc2UgR0xfQ09NUFJF
U1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRToKICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkudGV4dHVyZUNvbXByZXNzaW9uRFhUMykKICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TikpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMzg2LDEyICs2MjYsMTIgQEAKICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdC
QV9TM1RDX0RYVDVfQU5HTEU6CiAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLnRleHR1cmVDb21wcmVzc2lvbkRYVDUpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAg
ICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTM5
OCwxMiArNjM4LDEyIEBACiAgICAgICAgICAgY2FzZSBHTF9FVEMxX1JHQjhfT0VTOgogICAgICAg
ICAgICAgaWYgKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2VkRVRDMVJHQjhUZXh0
dXJlKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC00MTAsNyArNjUwLDcgQEAKICAgICAgICAg
ICBjYXNlIEdMX0VUQzFfUkdCOF9MT1NTWV9ERUNPREVfQU5HTEU6CiAgICAgICAgICAgICAgIGlm
IChjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkubG9zc3lFVENEZWNvZGUpCiAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKAorICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVUQzFf
UkdCOF9MT1NTWV9ERUNPREVfQU5HTEUgY2FuJ3Qgd29yayB3aXRoIHRoaXMgdHlwZS4iKSk7CiAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MTcsNyArNjU3LDcgQEAKICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKAorICAgICAgICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9F
TlVNLCAiQU5HTEVfbG9zc3lfZXRjX2RlY29kZSBleHRlbnNpb24gaXMgbm90IHN1cHBvcnRlZC4i
KSk7CiAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgIH0KQEAg
LTQyNiwxMiArNjY2LDEyIEBACiAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9TVEVOQ0lMX09FUzoK
ICAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRlcHRoVGV4dHVyZXMp
CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9IEdMX1RFWFRVUkVf
MkQpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIE9FU19kZXB0aF90
ZXh0dXJlIHN1cHBvcnRzIGxvYWRpbmcgZGVwdGggZGF0YSBhbmQgbXVsdGlwbGUgbGV2ZWxzLApA
QCAtNDM4LDcgKzY3OCw3IEBACiAgICAgICAgICAgICAvLyBidXQgQU5HTEVfZGVwdGhfdGV4dHVy
ZSBkb2VzIG5vdAogICAgICAgICAgICAgaWYgKHBpeGVscyAhPSBOVUxMIHx8IGxldmVsICE9IDAp
CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDUwLDcg
KzY5MCw3IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLnRleHR1cmVGbG9hdCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ1OCwx
MiArNjk4LDE4IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnRleHR1cmVIYWxmRmxvYXQpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQogCisgICAgaWYgKCFWYWxpZEltYWdlRGF0YVNpemUoY29udGV4dCwgdGFyZ2V0LCB3aWR0
aCwgaGVpZ2h0LCAxLCBpbnRlcm5hbGZvcm1hdCwgdHlwZSwgcGl4ZWxzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGltYWdlU2l6ZSkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTQ4MCwyOSArNzI2LDI4IEBACiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJvcmRlcikKIHsKLSAg
ICBHTGVudW0gdGV4dHVyZUludGVybmFsRm9ybWF0ID0gR0xfTk9ORTsKLQogICAgIGlmICghVmFs
aWRUZXh0dXJlMkREZXN0aW5hdGlvblRhcmdldChjb250ZXh0LCB0YXJnZXQpKQogICAgIHsKLSAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxp
ZCB0ZXh0dXJlIHRhcmdldCIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCB0ZXh0dXJlIHRhcmdldCIpKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAorICAgIEZvcm1hdCB0ZXh0dXJlRm9ybWF0ID0gRm9ybWF0OjpJ
bnZhbGlkKCk7CiAgICAgaWYgKCFWYWxpZGF0ZUNvcHlUZXhJbWFnZVBhcmFtZXRlcnNCYXNlKGNv
bnRleHQsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCBpc1N1YkltYWdlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4b2Zmc2V0LCB5b2Zmc2V0LCAw
LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsICZ0ZXh0dXJlSW50ZXJuYWxGb3JtYXQpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4b2Zmc2V0LCB5b2Zm
c2V0LCAwLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZ0ZXh0dXJlRm9ybWF0KSkKICAgICB7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1l
YnVmZmVyID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRSZWFkRnJhbWVidWZmZXIoKTsKLSAgICBH
TGVudW0gY29sb3JidWZmZXJGb3JtYXQgPSBmcmFtZWJ1ZmZlci0+Z2V0UmVhZENvbG9yYnVmZmVy
KCktPmdldEludGVybmFsRm9ybWF0KCk7Ci0gICAgY29uc3QgYXV0byAmaW50ZXJuYWxGb3JtYXRJ
bmZvID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyh0ZXh0dXJlSW50ZXJuYWxGb3JtYXQpOwot
ICAgIEdMZW51bSB0ZXh0dXJlRm9ybWF0ID0gaW50ZXJuYWxGb3JtYXRJbmZvLmZvcm1hdDsKKyAg
ICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gY29udGV4dC0+Z2V0R0xTdGF0
ZSgpLmdldFJlYWRGcmFtZWJ1ZmZlcigpOworICAgIEdMZW51bSBjb2xvcmJ1ZmZlckZvcm1hdCAg
ICAgICAgICAgPSBmcmFtZWJ1ZmZlci0+Z2V0UmVhZENvbG9yYnVmZmVyKCktPmdldEZvcm1hdCgp
LmFzU2l6ZWQoKTsKKyAgICBjb25zdCBhdXRvICZmb3JtYXRJbmZvICAgICAgICAgICAgID0gKnRl
eHR1cmVGb3JtYXQuaW5mbzsKIAogICAgIC8vIFtPcGVuR0wgRVMgMi4wLjI0XSB0YWJsZSAzLjkK
ICAgICBpZiAoaXNTdWJJbWFnZSkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAodGV4dHVyZUZvcm1h
dCkKKyAgICAgICAgc3dpdGNoIChmb3JtYXRJbmZvLmZvcm1hdCkKICAgICAgICAgewogICAgICAg
ICAgIGNhc2UgR0xfQUxQSEE6CiAgICAgICAgICAgICBpZiAoY29sb3JidWZmZXJGb3JtYXQgIT0g
R0xfQUxQSEE4X0VYVCAmJgpAQCAtNTEwLDcgKzc1NSw3IEBACiAgICAgICAgICAgICAgICAgY29s
b3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCNV9BMSAmJgogICAgICAgICAgICAgICAgIGNvbG9yYnVm
ZmVyRm9ybWF0ICE9IEdMX1JHQkE4X09FUykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgYnJlYWs7CkBAIC01MjMsNyArNzY4LDcgQEAKICAgICAgICAgICAgICAgICAgIGNv
bG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjVfQTEgJiYKICAgICAgICAgICAgICAgICAgIGNvbG9y
YnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE4X09FUykKICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
KTsKKyAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgYnJlYWs7CkBAIC01NDAsNyArNzg1LDcgQEAKICAgICAg
ICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjMyRiAmJgogICAgICAgICAg
ICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQTMyRikKICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgYnJlYWs7CkBAIC01NTUsNyArODAw
LDcgQEAKICAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjMyRiAm
JgogICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQTMyRikKICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC01NjgsNyArODEzLDcgQEAKICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBH
TF9SR0IzMkYgJiYKICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JB
MzJGKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTU3
OSw3ICs4MjQsNyBAQAogICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JH
QkE4X09FUyAmJgogICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkEz
MkYpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTg5
LDIxICs4MzQsMjAgQEAKICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RY
VDVfQU5HTEU6CiAgICAgICAgICAgY2FzZSBHTF9FVEMxX1JHQjhfT0VTOgogICAgICAgICAgIGNh
c2UgR0xfRVRDMV9SR0I4X0xPU1NZX0RFQ09ERV9BTkdMRToKLSAgICAgICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQ6
CiAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9TVEVOQ0lMX09FUzoKLSAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo
aW50ZXJuYWxGb3JtYXRJbmZvLnR5cGUgPT0gR0xfRkxPQVQgJiYKLSAgICAgICAgICAgICFjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZUZsb2F0KQorICAgICAgICBpZiAoZm9ybWF0SW5m
by50eXBlID09IEdMX0ZMT0FUICYmICFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZUZs
b2F0KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQogICAgIH0KQEAgLTYxOSw3ICs4NjMsNyBAQAogICAgICAgICAgICAgICAgIGNv
bG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE4X09FUyAmJgogICAgICAgICAgICAgICAgIGNvbG9y
YnVmZmVyRm9ybWF0ICE9IEdMX0JHUjVfQTFfQU5HTEVYKQogICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTYzNCw3ICs4NzgsNyBAQAogICAgICAgICAgICAg
ICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQThfT0VTICYmCiAgICAgICAgICAgICAg
ICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9CR1I1X0ExX0FOR0xFWCkKICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgYnJlYWs7CkBAIC02NDksNyAr
ODkzLDcgQEAKICAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE4
X09FUyAmJgogICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfQkdSNV9B
MV9BTkdMRVgpCiAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtNjYzLDcgKzkwNyw3IEBACiAgICAgICAgICAgICAgICAgICBjb2xvcmJ1
ZmZlckZvcm1hdCAhPSBHTF9SR0JBOF9PRVMgJiYKICAgICAgICAgICAgICAgICAgIGNvbG9yYnVm
ZmVyRm9ybWF0ICE9IEdMX0JHUjVfQTFfQU5HTEVYKQogICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TikpOworICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICBicmVhazsKQEAgLTY3Niw3ICs5MjAsNyBAQAogICAg
ICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE4X09FUyAmJgogICAgICAg
ICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX0JHUjVfQTFfQU5HTEVYKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTY4OCw3ICs5MzIsNyBA
QAogICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE4X09FUyAmJgog
ICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX0JHUjVfQTFfQU5HTEVYKQog
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTY5NiwxMiAr
OTQwLDEyIEBACiAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VY
VDoKICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZUNvbXBy
ZXNzaW9uRFhUMSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzA4LDEyICs5NTIsMTIgQEAK
ICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU6CiAgICAg
ICAgICAgICBpZiAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVDb21wcmVzc2lvbkRY
VDMpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZB
TElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTcyMCwxMiArOTY0LDEyIEBACiAgICAgICAg
ICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFOgogICAgICAgICAgICAg
aWYgKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlQ29tcHJlc3Npb25EWFQ1KQogICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVN
KSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgYnJlYWs7CkBAIC03MzIsMTIgKzk3NiwxMiBAQAogICAgICAgICAgIGNhc2Ug
R0xfRVRDMV9SR0I4X09FUzoKICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuY29tcHJlc3NlZEVUQzFSR0I4VGV4dHVyZSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwor
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAt
NzQ0LDEzICs5ODgsMTMgQEAKICAgICAgICAgICBjYXNlIEdMX0VUQzFfUkdCOF9MT1NTWV9ERUNP
REVfQU5HTEU6CiAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkubG9z
c3lFVENEZWNvZGUpCiAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRVRDMV9SR0I4X0xPU1NZ
X0RFQ09ERV9BTkdMRSBjYW4ndCBiZSBjb3BpZWQgdG8uIikpOwogICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoCisgICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKICAgICAgICAgICAgICAgICAgICAg
ICBFcnJvcihHTF9JTlZBTElEX0VOVU0sICJBTkdMRV9sb3NzeV9ldGNfZGVjb2RlIGV4dGVuc2lv
biBpcyBub3Qgc3VwcG9ydGVkLiIpKTsKICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgICAgfQpAQCAtNzYyLDE2ICsxMDA2LDE2IEBACiAgICAgICAgICAgY2FzZSBH
TF9ERVBUSDI0X1NURU5DSUw4X09FUzoKICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkuZGVwdGhUZXh0dXJlcykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtNzg1LDI1ICsxMDI5
LDI1IEBACiB7CiAgICAgaWYgKHRhcmdldCAhPSBHTF9URVhUVVJFXzJEICYmIHRhcmdldCAhPSBH
TF9URVhUVVJFX0NVQkVfTUFQKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAg
ICAgaWYgKHdpZHRoIDwgMSB8fCBoZWlnaHQgPCAxIHx8IGxldmVscyA8IDEpCiAgICAgewotICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmICh0YXJnZXQgPT0gR0xfVEVYVFVSRV9D
VUJFX01BUCAmJiB3aWR0aCAhPSBoZWlnaHQpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAogICAgIGlmIChsZXZlbHMgIT0gMSAmJiBsZXZlbHMgIT0gZ2w6OmxvZzIoc3RkOjpt
YXgod2lkdGgsIGhlaWdodCkpICsgMSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKQEAgLTgxMCw3ICsxMDU0LDcgQEAKICAgICBjb25zdCBnbDo6SW50ZXJuYWxG
b3JtYXQgJmZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGludGVybmFsZm9y
bWF0KTsKICAgICBpZiAoZm9ybWF0SW5mby5mb3JtYXQgPT0gR0xfTk9ORSB8fCBmb3JtYXRJbmZv
LnR5cGUgPT0gR0xfTk9ORSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAt
ODIyLDcgKzEwNjYsNyBAQAogICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8R0x1aW50Pih3aWR0aCkg
PiBjYXBzLm1heDJEVGV4dHVyZVNpemUgfHwKICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMdWlu
dD4oaGVpZ2h0KSA+IGNhcHMubWF4MkRUZXh0dXJlU2l6ZSkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtODMw
LDEyICsxMDc0LDEyIEBACiAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxHTHVpbnQ+KHdpZHRoKSA+
IGNhcHMubWF4Q3ViZU1hcFRleHR1cmVTaXplIHx8CiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxH
THVpbnQ+KGhlaWdodCkgPiBjYXBzLm1heEN1YmVNYXBUZXh0dXJlU2l6ZSkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkp
OworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFr
OwogICAgICAgZGVmYXVsdDoKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9FTlVNKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTg0Myw3
ICsxMDg3LDcgQEAKICAgICB7CiAgICAgICAgIGlmICghZ2w6OmlzUG93Mih3aWR0aCkgfHwgIWds
Ojppc1BvdzIoaGVpZ2h0KSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC04NTQsNyArMTA5OCw3IEBACiAgICAg
ICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgogICAgICAgICBpZiAoIWNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlQ29tcHJlc3Npb25EWFQxKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0p
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFr
OwpAQCAtODYxLDcgKzExMDUsNyBAQAogICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNU
Q19EWFQzX0FOR0xFOgogICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0
dXJlQ29tcHJlc3Npb25EWFQzKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtODY4LDcgKzExMTIsNyBAQAogICAg
ICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFOgogICAgICAgICBpZiAo
IWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlQ29tcHJlc3Npb25EWFQ1KQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VO
VU0pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
RU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGJy
ZWFrOwpAQCAtODc1LDcgKzExMTksNyBAQAogICAgICAgY2FzZSBHTF9FVEMxX1JHQjhfT0VTOgog
ICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jb21wcmVzc2VkRVRDMVJHQjhU
ZXh0dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAgICAgICAgIGJyZWFrOwpAQCAtODgyLDcgKzExMjYsNyBAQAogICAgICAgY2FzZSBHTF9F
VEMxX1JHQjhfTE9TU1lfREVDT0RFX0FOR0xFOgogICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLmxvc3N5RVRDRGVjb2RlKQogICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3JkRXJyb3IoCisgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KAogICAgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiQU5HTEVfbG9zc3lf
ZXRjX2RlY29kZSBleHRlbnNpb24gaXMgbm90IHN1cHBvcnRlZC4iKSk7CiAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICB9CkBAIC04OTQsNyArMTEzOCw3IEBACiAgICAgICBj
YXNlIEdMX0xVTUlOQU5DRV9BTFBIQTMyRl9FWFQ6CiAgICAgICAgIGlmICghY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLnRleHR1cmVGbG9hdCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTkwNSw3ICsxMTQ5LDcg
QEAKICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBMTZGX0VYVDoKICAgICAgICAgaWYgKCFj
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZUhhbGZGbG9hdCkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAg
LTkxNyw3ICsxMTYxLDcgQEAKICAgICAgIGNhc2UgR0xfUkczMkZfRVhUOgogICAgICAgICBpZiAo
IWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlUkcpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC05MjYs
MTggKzExNzAsMTggQEAKICAgICAgIGNhc2UgR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVM6CiAgICAg
ICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRlcHRoVGV4dHVyZXMpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9F
TlVNKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KHRhcmdldCAhPSBHTF9URVhUVVJFXzJEKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICAvLyBBTkdMRV9kZXB0aF90
ZXh0dXJlIG9ubHkgc3VwcG9ydHMgMS1sZXZlbCB0ZXh0dXJlcwogICAgICAgICBpZiAobGV2ZWxz
ICE9IDEpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtOTQ4LDEzICsxMTkyLDEzIEBACiAgICAg
Z2w6OlRleHR1cmUgKnRleHR1cmUgPSBjb250ZXh0LT5nZXRUYXJnZXRUZXh0dXJlKHRhcmdldCk7
CiAgICAgaWYgKCF0ZXh0dXJlIHx8IHRleHR1cmUtPmlkKCkgPT0gMCkKICAgICB7Ci0gICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAodGV4dHVyZS0+Z2V0SW1tdXRh
YmxlRm9ybWF0KCkpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CkBAIC05NjEsNTggKzEyMDUsMTIgQEAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotLy8gY2hlY2sg
Zm9yIGNvbWJpbmF0aW9ucyBvZiBmb3JtYXQgYW5kIHR5cGUgdGhhdCBhcmUgdmFsaWQgZm9yIFJl
YWRQaXhlbHMKLWJvb2wgVmFsaWRFUzJSZWFkRm9ybWF0VHlwZShDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSkKLXsKLSAgICBzd2l0Y2ggKGZvcm1hdCkKLSAgICB7
Ci0gICAgICBjYXNlIEdMX1JHQkE6Ci0gICAgICAgIHN3aXRjaCAodHlwZSkKLSAgICAgICAgewot
ICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAg
ICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX0JHUkFfRVhUOgotICAgICAgICBzd2l0Y2ggKHR5
cGUpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6Ci0gICAgICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80X1JFVl9FWFQ6Ci0gICAgICAgICAgY2Fz
ZSBHTF9VTlNJR05FRF9TSE9SVF8xXzVfNV81X1JFVl9FWFQ6Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9
Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9SR19FWFQ6Ci0gICAgICBjYXNlIEdMX1JF
RF9FWFQ6Ci0gICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVSRykK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAg
IHN3aXRjaCAodHlwZSkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllU
RToKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIGJv
b2wgVmFsaWRhdGVEaXNjYXJkRnJhbWVidWZmZXJFWFQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHRhcmdldCwgR0xzaXplaSBudW1BdHRhY2htZW50cywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xlbnVtICphdHRhY2htZW50cykKIHsKICAgICBpZiAoIWNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5kaXNjYXJkRnJhbWVidWZmZXIpCiAgICAgewotICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkV4dGVuc2lv
biBub3QgZW5hYmxlZCIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sICJFeHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEwMjEsMTAgKzEyMTksMTEgQEAKICAgICBzd2l0Y2gg
KHRhcmdldCkKICAgICB7CiAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSOgotICAgICAgICBkZWZh
dWx0RnJhbWVidWZmZXIgPSAoY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRUYXJnZXRGcmFtZWJ1ZmZl
cihHTF9GUkFNRUJVRkZFUiktPmlkKCkgPT0gMCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICAg
IGRlZmF1bHRGcmFtZWJ1ZmZlciA9CisgICAgICAgICAgICAgIChjb250ZXh0LT5nZXRHTFN0YXRl
KCkuZ2V0VGFyZ2V0RnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIpLT5pZCgpID09IDApOworICAg
ICAgICAgIGJyZWFrOwogICAgICAgZGVmYXVsdDoKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBmcmFtZWJ1ZmZlciB0YXJnZXQiKSk7
CisgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAi
SW52YWxpZCBmcmFtZWJ1ZmZlciB0YXJnZXQiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKQEAgLTEwMzUsNyArMTIzNCw3IEBACiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkudmVydGV4QXJyYXlPYmplY3QpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkV4dGVuc2lvbiBub3QgZW5hYmxl
ZCIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04sICJFeHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKQEAgLTEwNDYsNyArMTI0NSw3IEBACiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkudmVydGV4QXJyYXlPYmplY3QpCiAgICAgewotICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkV4dGVuc2lvbiBub3QgZW5h
YmxlZCIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04sICJFeHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKQEAgLTEwNTcsNyArMTI1Niw3IEBACiB7CiAgICAgaWYgKCFjb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkudmVydGV4QXJyYXlPYmplY3QpCiAgICAgewotICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkV4dGVuc2lvbiBub3Qg
ZW5hYmxlZCIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04sICJFeHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKQEAgLTEwNjgsNyArMTI2Nyw3IEBACiB7CiAgICAgaWYgKCFjb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkudmVydGV4QXJyYXlPYmplY3QpCiAgICAgewotICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkV4dGVuc2lvbiBu
b3QgZW5hYmxlZCIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04sICJFeHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKQEAgLTEwODMsNyArMTI4Miw3IEBACiB7CiAgICAgaWYgKCFjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0UHJvZ3JhbUJpbmFyeSkKICAgICB7Ci0gICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRXh0ZW5zaW9u
IG5vdCBlbmFibGVkIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTiwgIkV4dGVuc2lvbiBub3QgZW5hYmxlZCIpKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTA5OSw3ICsxMjk4LDcgQEAKIHsKICAgICBpZiAoIWNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRQcm9ncmFtQmluYXJ5KQogICAgIHsKLSAgICAgICAg
Y29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFeHRlbnNp
b24gbm90IGVuYWJsZWQiKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLCAiRXh0ZW5zaW9uIG5vdCBlbmFibGVkIikpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMTcxLDI1ICsxMzcwLDI1IEBACiB7CiAgICAgaWYg
KCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGVidWcpCiAgICAgewotICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkV4dGVuc2lvbiBub3Qg
ZW5hYmxlZCIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04sICJFeHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKICAgICBpZiAoIVZhbGlkRGVidWdTb3VyY2Uoc291cmNlLCBmYWxzZSkg
JiYgc291cmNlICE9IEdMX0RPTlRfQ0FSRSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgZGVidWcgc291cmNlLiIpKTsK
KyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52
YWxpZCBkZWJ1ZyBzb3VyY2UuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAg
ICAgaWYgKCFWYWxpZERlYnVnVHlwZSh0eXBlKSAmJiB0eXBlICE9IEdMX0RPTlRfQ0FSRSkKICAg
ICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwg
IkludmFsaWQgZGVidWcgdHlwZS4iKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgZGVidWcgdHlwZS4iKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoIVZhbGlkRGVidWdTZXZlcml0eShzZXZlcml0
eSkgJiYgc2V2ZXJpdHkgIT0gR0xfRE9OVF9DQVJFKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBkZWJ1ZyBzZXZlcml0
eS4iKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSwgIkludmFsaWQgZGVidWcgc2V2ZXJpdHkuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCkBAIC0xMTk3LDcgKzEzOTYsNyBAQAogICAgIHsKICAgICAgICAgaWYgKHNvdXJjZSA9
PSBHTF9ET05UX0NBUkUgfHwgdHlwZSA9PSBHTF9ET05UX0NBUkUpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKAorICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoCiAgICAgICAgICAgICAgICAgR0xfSU5WQUxJRF9PUEVSQVRJT04s
CiAgICAgICAgICAgICAgICAgIklmIGNvdW50IGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLCBzb3VyY2Ug
YW5kIHNldmVyaXR5IGNhbm5vdCBiZSBHTF9ET05UX0NBUkUuIikpOwogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTIwNSw3ICsxNDA0LDcgQEAKIAogICAgICAgICBpZiAoc2V2ZXJpdHkg
IT0gR0xfRE9OVF9DQVJFKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcigKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAogICAgICAgICAgICAgICAg
IEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAogICAgICAgICAgICAgICAgICAgICAgICJJZiBj
b3VudCBpcyBncmVhdGVyIHRoYW4gemVybywgc2V2ZXJpdHkgbXVzdCBiZSBHTF9ET05UX0NBUkUu
IikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTIyNSwxMSArMTQyNCwxMSBAQAog
ewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRlYnVnKQogICAgIHsKLSAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFeHRl
bnNpb24gbm90IGVuYWJsZWQiKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRXh0ZW5zaW9uIG5vdCBlbmFibGVkIikpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFjb250ZXh0LT5nZXRTdGF0ZSgpLmdl
dERlYnVnKCkuaXNPdXRwdXRFbmFibGVkKCkpCisgICAgaWYgKCFjb250ZXh0LT5nZXRHTFN0YXRl
KCkuZ2V0RGVidWcoKS5pc091dHB1dEVuYWJsZWQoKSkKICAgICB7CiAgICAgICAgIC8vIElmIHRo
ZSBERUJVR19PVVRQVVQgc3RhdGUgaXMgZGlzYWJsZWQgY2FsbHMgdG8gRGVidWdNZXNzYWdlSW5z
ZXJ0IGFyZSBkaXNjYXJkZWQgYW5kIGRvCiAgICAgICAgIC8vIG5vdCBnZW5lcmF0ZSBhbiBlcnJv
ci4KQEAgLTEyMzgsMTkgKzE0MzcsMTkgQEAKIAogICAgIGlmICghVmFsaWREZWJ1Z1NldmVyaXR5
KHNldmVyaXR5KSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfRU5VTSwgIkludmFsaWQgZGVidWcgc2V2ZXJpdHkuIikpOworICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGRlYnVnIHNl
dmVyaXR5LiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmICghVmFs
aWREZWJ1Z1R5cGUodHlwZSkpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGRlYnVnIHR5cGUuIikpOworICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGRlYnVn
IHR5cGUuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKCFWYWxp
ZERlYnVnU291cmNlKHNvdXJjZSwgdHJ1ZSkpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGRlYnVnIHNvdXJjZS4iKSk7
CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIklu
dmFsaWQgZGVidWcgc291cmNlLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApA
QCAtMTI1Nyw3ICsxNDU2LDcgQEAKICAgICBzaXplX3QgbWVzc2FnZUxlbmd0aCA9IChsZW5ndGgg
PCAwKSA/IHN0cmxlbihidWYpIDogbGVuZ3RoOwogICAgIGlmIChtZXNzYWdlTGVuZ3RoID4gY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLm1heERlYnVnTWVzc2FnZUxlbmd0aCkKICAgICB7Ci0gICAg
ICAgIGNvbnRleHQtPnJlY29yZEVycm9yKAorICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigK
ICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJNZXNzYWdlIGxlbmd0aCBpcyBs
YXJnZXIgdGhhbiBHTF9NQVhfREVCVUdfTUVTU0FHRV9MRU5HVEguIikpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQpAQCAtMTI3MSw3ICsxNDcwLDcgQEAKIHsKICAgICBpZiAoIWNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5kZWJ1ZykKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRXh0ZW5zaW9uIG5vdCBlbmFibGVk
IikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwgIkV4dGVuc2lvbiBub3QgZW5hYmxlZCIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIApAQCAtMTI5MCwxMyArMTQ4OSwxMyBAQAogewogICAgIGlmICghY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLmRlYnVnKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFeHRlbnNpb24gbm90IGVuYWJsZWQiKSk7Cisg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAi
RXh0ZW5zaW9uIG5vdCBlbmFibGVkIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CiAgICAgaWYgKGJ1ZlNpemUgPCAwICYmIG1lc3NhZ2VMb2cgIT0gbnVsbHB0cikKICAgICB7Ci0g
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKAorICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cigKICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJidWZTaXplIG11c3QgYmUg
cG9zaXRpdmUgaWYgbWVzc2FnZUxvZyBpcyBub3QgbnVsbC4iKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CkBAIC0xMzEyLDEzICsxNTExLDEzIEBACiB7CiAgICAgaWYgKCFjb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkuZGVidWcpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkV4dGVuc2lvbiBub3QgZW5hYmxlZCIp
KTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04sICJFeHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKICAgICBpZiAoIVZhbGlkRGVidWdTb3VyY2Uoc291cmNlLCB0cnVlKSkKICAgICB7Ci0g
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFs
aWQgZGVidWcgc291cmNlLiIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBkZWJ1ZyBzb3VyY2UuIikpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMzI1LDE1ICsxNTI0LDE1IEBACiAgICAgc2l6ZV90IG1l
c3NhZ2VMZW5ndGggPSAobGVuZ3RoIDwgMCkgPyBzdHJsZW4obWVzc2FnZSkgOiBsZW5ndGg7CiAg
ICAgaWYgKG1lc3NhZ2VMZW5ndGggPiBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkubWF4RGVidWdN
ZXNzYWdlTGVuZ3RoKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoCisgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAogICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSwgIk1lc3NhZ2UgbGVuZ3RoIGlzIGxhcmdlciB0aGFuIEdMX01BWF9ERUJVR19NRVNTQUdF
X0xFTkdUSC4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBzaXplX3Qg
Y3VycmVudFN0YWNrU2l6ZSA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0RGVidWcoKS5nZXRHcm91
cFN0YWNrRGVwdGgoKTsKKyAgICBzaXplX3QgY3VycmVudFN0YWNrU2l6ZSA9IGNvbnRleHQtPmdl
dEdMU3RhdGUoKS5nZXREZWJ1ZygpLmdldEdyb3VwU3RhY2tEZXB0aCgpOwogICAgIGlmIChjdXJy
ZW50U3RhY2tTaXplID49IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5tYXhEZWJ1Z0dyb3VwU3Rh
Y2tEZXB0aCkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKAorICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcigKICAgICAgICAgICAgIEVycm9yKEdMX1NUQUNLX09WRVJGTE9X
LAogICAgICAgICAgICAgICAgICAgIkNhbm5vdCBwdXNoIG1vcmUgdGhhbiBHTF9NQVhfREVCVUdf
R1JPVVBfU1RBQ0tfREVQVEggZGVidWcgZ3JvdXBzLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMTM0NiwxNCArMTU0NSwxNCBAQAogewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmRlYnVnKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sICJFeHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CisgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRXh0ZW5z
aW9uIG5vdCBlbmFibGVkIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAg
c2l6ZV90IGN1cnJlbnRTdGFja1NpemUgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldERlYnVnKCku
Z2V0R3JvdXBTdGFja0RlcHRoKCk7CisgICAgc2l6ZV90IGN1cnJlbnRTdGFja1NpemUgPSBjb250
ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0RGVidWcoKS5nZXRHcm91cFN0YWNrRGVwdGgoKTsKICAgICBp
ZiAoY3VycmVudFN0YWNrU2l6ZSA8PSAxKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfU1RBQ0tfVU5ERVJGTE9XLCAiQ2Fubm90IHBvcCB0aGUgZGVmYXVsdCBk
ZWJ1ZyBncm91cC4iKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX1NU
QUNLX1VOREVSRkxPVywgIkNhbm5vdCBwb3AgdGhlIGRlZmF1bHQgZGVidWcgZ3JvdXAuIikpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMzY3LDcgKzE1NjYsNyBAQAogICAg
ICAgICBjYXNlIEdMX0JVRkZFUjoKICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRCdWZmZXIo
bmFtZSkgPT0gbnVsbHB0cikKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAibmFtZSBpcyBub3QgYSB2YWxp
ZCBidWZmZXIuIikpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfVkFMVUUsICJuYW1lIGlzIG5vdCBhIHZhbGlkIGJ1ZmZlci4iKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CkBAIC0xMzc1LDcgKzE1NzQsNyBAQAogICAgICAgICBjYXNlIEdMX1NIQURFUjoK
ICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXIobmFtZSkgPT0gbnVsbHB0cikKICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX1ZBTFVFLCAibmFtZSBpcyBub3QgYSB2YWxpZCBzaGFkZXIuIikpOworICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJu
YW1lIGlzIG5vdCBhIHZhbGlkIHNoYWRlci4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMzgzLDcg
KzE1ODIsNyBAQAogICAgICAgICBjYXNlIEdMX1BST0dSQU06CiAgICAgICAgICAgICBpZiAoY29u
dGV4dC0+Z2V0UHJvZ3JhbShuYW1lKSA9PSBudWxscHRyKQogICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJu
YW1lIGlzIG5vdCBhIHZhbGlkIHByb2dyYW0uIikpOworICAgICAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJuYW1lIGlzIG5vdCBhIHZhbGlk
IHByb2dyYW0uIikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTM5MSw3ICsxNTkwLDcgQEAKICAgICAg
ICAgY2FzZSBHTF9WRVJURVhfQVJSQVk6CiAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0VmVy
dGV4QXJyYXkobmFtZSkgPT0gbnVsbHB0cikKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAibmFtZSBpcyBu
b3QgYSB2YWxpZCB2ZXJ0ZXggYXJyYXkuIikpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJuYW1lIGlzIG5vdCBhIHZhbGlkIHZl
cnRleCBhcnJheS4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMzk5LDcgKzE1OTgsNyBAQAogICAg
ICAgICBjYXNlIEdMX1FVRVJZOgogICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFF1ZXJ5KG5h
bWUpID09IG51bGxwdHIpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIm5hbWUgaXMgbm90IGEgdmFsaWQg
cXVlcnkuIikpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfVkFMVUUsICJuYW1lIGlzIG5vdCBhIHZhbGlkIHF1ZXJ5LiIpKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTE0MDcsNyArMTYwNiw3IEBACiAgICAgICAgIGNhc2UgR0xfVFJBTlNGT1JNX0ZF
RURCQUNLOgogICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFRyYW5zZm9ybUZlZWRiYWNrKG5h
bWUpID09IG51bGxwdHIpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoCisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCiAgICAg
ICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJuYW1lIGlzIG5vdCBhIHZh
bGlkIHRyYW5zZm9ybSBmZWVkYmFjay4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgfQpAQCAtMTQxNiw3ICsxNjE1LDcgQEAKICAgICAgICAgY2FzZSBHTF9T
QU1QTEVSOgogICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFNhbXBsZXIobmFtZSkgPT0gbnVs
bHB0cikKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAibmFtZSBpcyBub3QgYSB2YWxpZCBzYW1wbGVyLiIp
KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X1ZBTFVFLCAibmFtZSBpcyBub3QgYSB2YWxpZCBzYW1wbGVyLiIpKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTE0MjQsNyArMTYyMyw3IEBACiAgICAgICAgIGNhc2UgR0xfVEVYVFVSRToKICAgICAgICAg
ICAgIGlmIChjb250ZXh0LT5nZXRUZXh0dXJlKG5hbWUpID09IG51bGxwdHIpCiAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSwgIm5hbWUgaXMgbm90IGEgdmFsaWQgdGV4dHVyZS4iKSk7CisgICAgICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIm5hbWUgaXMg
bm90IGEgdmFsaWQgdGV4dHVyZS4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xNDMyLDcgKzE2MzEs
NyBAQAogICAgICAgICBjYXNlIEdMX1JFTkRFUkJVRkZFUjoKICAgICAgICAgICAgIGlmIChjb250
ZXh0LT5nZXRSZW5kZXJidWZmZXIobmFtZSkgPT0gbnVsbHB0cikKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVF
LCAibmFtZSBpcyBub3QgYSB2YWxpZCByZW5kZXJidWZmZXIuIikpOworICAgICAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJuYW1lIGlzIG5v
dCBhIHZhbGlkIHJlbmRlcmJ1ZmZlci4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xNDQwLDE2ICsx
NjM5LDQwIEBACiAgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVI6CiAgICAgICAgICAgICBpZiAo
Y29udGV4dC0+Z2V0RnJhbWVidWZmZXIobmFtZSkgPT0gbnVsbHB0cikKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZB
TFVFLCAibmFtZSBpcyBub3QgYSB2YWxpZCBmcmFtZWJ1ZmZlci4iKSk7CisgICAgICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIm5hbWUgaXMg
bm90IGEgdmFsaWQgZnJhbWVidWZmZXIuIikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X0VOVU0sICJJbnZhbGlkIGlkZW50aWZpZXIuIikpOworICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBpZGVudGlmaWVyLiIpKTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Cit9CiAKK3N0YXRpYyBib29sIFZhbGlk
YXRlTGFiZWxMZW5ndGgoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdM
Y2hhciAqbGFiZWwpCit7CisgICAgc2l6ZV90IGxhYmVsTGVuZ3RoID0gMDsKKworICAgIGlmIChs
ZW5ndGggPCAwKQorICAgIHsKKyAgICAgICAgaWYgKGxhYmVsICE9IG51bGxwdHIpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGxhYmVsTGVuZ3RoID0gc3RybGVuKGxhYmVsKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBsYWJlbExlbmd0aCA9IHN0YXRpY19jYXN0
PHNpemVfdD4obGVuZ3RoKTsKKyAgICB9CisKKyAgICBpZiAobGFiZWxMZW5ndGggPiBjb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkubWF4TGFiZWxMZW5ndGgpCisgICAgeworICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJMYWJl
bCBsZW5ndGggaXMgbGFyZ2VyIHRoYW4gR0xfTUFYX0xBQkVMX0xFTkdUSC4iKSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTQ2MSw3
ICsxNjg0LDcgQEAKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kZWJ1ZykK
ICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OLCAiRXh0ZW5zaW9uIG5vdCBlbmFibGVkIikpOworICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkV4dGVuc2lvbiBub3QgZW5hYmxl
ZCIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTQ3MCwxMSArMTY5Myw4
IEBACiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBzaXplX3QgbGFiZWxMZW5n
dGggPSAobGVuZ3RoIDwgMCkgPyBzdHJsZW4obGFiZWwpIDogbGVuZ3RoOwotICAgIGlmIChsYWJl
bExlbmd0aCA+IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5tYXhMYWJlbExlbmd0aCkKKyAgICBp
ZiAoIVZhbGlkYXRlTGFiZWxMZW5ndGgoY29udGV4dCwgbGVuZ3RoLCBsYWJlbCkpCiAgICAgewot
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcigKLSAgICAgICAgICAgIEVycm9yKEdMX0lOVkFM
SURfVkFMVUUsICJMYWJlbCBsZW5ndGggaXMgbGFyZ2VyIHRoYW4gR0xfTUFYX0xBQkVMX0xFTkdU
SC4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE0OTAsMTMgKzE3MTAs
MTMgQEAKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kZWJ1ZykKICAgICB7
Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCAiRXh0ZW5zaW9uIG5vdCBlbmFibGVkIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkV4dGVuc2lvbiBub3QgZW5hYmxlZCIpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChidWZTaXplIDwgMCkKICAg
ICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUs
ICJidWZTaXplIGNhbm5vdCBiZSBuZWdhdGl2ZS4iKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJidWZTaXplIGNhbm5vdCBiZSBuZWdhdGl2
ZS4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE1MDUsOCArMTcyNSw3
IEBACiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICAvLyBDYW4gbm8tb3AgaWYg
YnVmU2l6ZSBpcyB6ZXJvLgotICAgIHJldHVybiBidWZTaXplID4gMDsKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogc3RhdGljIGJvb2wgVmFsaWRhdGVPYmplY3RQdHJOYW1lKENvbnRleHQgKmNvbnRl
eHQsIGNvbnN0IHZvaWQgKnB0cikKQEAgLTE1MTMsNyArMTczMiw3IEBACiB7CiAgICAgaWYgKGNv
bnRleHQtPmdldEZlbmNlU3luYyhyZWludGVycHJldF9jYXN0PEdMc3luYz4oY29uc3RfY2FzdDx2
b2lkICo+KHB0cikpKSA9PSBudWxscHRyKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIm5hbWUgaXMgbm90IGEgdmFsaWQgc3luYy4i
KSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUs
ICJuYW1lIGlzIG5vdCBhIHZhbGlkIHN5bmMuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCkBAIC0xNTI3LDcgKzE3NDYsNyBAQAogewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLmRlYnVnKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFeHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CisgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRXh0
ZW5zaW9uIG5vdCBlbmFibGVkIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBA
IC0xNTM2LDExICsxNzU1LDggQEAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IHNpemVfdCBsYWJlbExlbmd0aCA9IChsZW5ndGggPCAwKSA/IHN0cmxlbihsYWJlbCkgOiBsZW5n
dGg7Ci0gICAgaWYgKGxhYmVsTGVuZ3RoID4gY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLm1heExh
YmVsTGVuZ3RoKQorICAgIGlmICghVmFsaWRhdGVMYWJlbExlbmd0aChjb250ZXh0LCBsZW5ndGgs
IGxhYmVsKSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKAotICAgICAgICAg
ICAgRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIkxhYmVsIGxlbmd0aCBpcyBsYXJnZXIgdGhhbiBH
TF9NQVhfTEFCRUxfTEVOR1RILiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApA
QCAtMTU1NSwxMyArMTc3MSwxMyBAQAogewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLmRlYnVnKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sICJFeHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CisgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRXh0ZW5zaW9u
IG5vdCBlbmFibGVkIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYg
KGJ1ZlNpemUgPCAwKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSwgImJ1ZlNpemUgY2Fubm90IGJlIG5lZ2F0aXZlLiIpKTsKKyAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgImJ1ZlNpemUg
Y2Fubm90IGJlIG5lZ2F0aXZlLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApA
QCAtMTU3MCw4ICsxNzg2LDcgQEAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IC8vIENhbiBuby1vcCBpZiBidWZTaXplIGlzIHplcm8uCi0gICAgcmV0dXJuIGJ1ZlNpemUgPiAw
OworICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIFZhbGlkYXRlR2V0UG9pbnRlcnZLSFIoQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCB2b2lkICoqcGFyYW1zKQpAQCAtMTU3OCw3ICsx
NzkzLDcgQEAKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kZWJ1ZykKICAg
ICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OLCAiRXh0ZW5zaW9uIG5vdCBlbmFibGVkIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkV4dGVuc2lvbiBub3QgZW5hYmxlZCIp
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTU5MCw3ICsxODA1LDcgQEAK
ICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIHBuYW1lLiIp
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSwgIkludmFsaWQgcG5hbWUuIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IApAQCAtMTYxMSw3ICsxODI2LDcgQEAKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5mcmFtZWJ1ZmZlckJsaXQpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkJsaXQgZXh0ZW5zaW9uIG5vdCBhdmFpbGFi
bGUuIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgIkJsaXQgZXh0ZW5zaW9uIG5vdCBhdmFpbGFibGUuIikpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xNjE4LDcgKzE4MzMsNyBAQAogICAgIGlmIChzcmNYMSAt
IHNyY1gwICE9IGRzdFgxIC0gZHN0WDAgfHwgc3JjWTEgLSBzcmNZMCAhPSBkc3RZMSAtIGRzdFkw
KQogICAgIHsKICAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogRGV0ZXJtaW5lIGlmIHRoaXMgc2hv
dWxkIGJlIGF2YWlsYWJsZSBvbiBvdGhlciBpbXBsZW1lbnRhdGlvbnMuCi0gICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKAorICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cigKICAgICAgICAgICAgIEdMX0lOVkFMSURfT1BFUkFUSU9OLAogICAgICAgICAgICAgIlNjYWxp
bmcgYW5kIGZsaXBwaW5nIGluIEJsaXRGcmFtZWJ1ZmZlckFOR0xFIG5vdCBzdXBwb3J0ZWQgYnkg
dGhpcyBpbXBsZW1lbnRhdGlvbi4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE2MjYs
MTIgKzE4NDEsMTIgQEAKIAogICAgIGlmIChmaWx0ZXIgPT0gR0xfTElORUFSKQogICAgIHsKLSAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiTGluZWFy
IGJsaXQgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGV4dGVuc2lvbiIpKTsKKyAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiTGluZWFyIGJsaXQgbm90IHN1
cHBvcnRlZCBpbiB0aGlzIGV4dGVuc2lvbiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIGNvbnN0IEZyYW1lYnVmZmVyICpyZWFkRnJhbWVidWZmZXIgPSBjb250ZXh0LT5n
ZXRTdGF0ZSgpLmdldFJlYWRGcmFtZWJ1ZmZlcigpOwotICAgIGNvbnN0IEZyYW1lYnVmZmVyICpk
cmF3RnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldERyYXdGcmFtZWJ1ZmZlcigp
OworICAgIEZyYW1lYnVmZmVyICpyZWFkRnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXRHTFN0YXRl
KCkuZ2V0UmVhZEZyYW1lYnVmZmVyKCk7CisgICAgRnJhbWVidWZmZXIgKmRyYXdGcmFtZWJ1ZmZl
ciA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXREcmF3RnJhbWVidWZmZXIoKTsKIAogICAgIGlm
IChtYXNrICYgR0xfQ09MT1JfQlVGRkVSX0JJVCkKICAgICB7CkBAIC0xNjQ1LDcgKzE4NjAsNyBA
QAogICAgICAgICAgICAgICAgIHJlYWRDb2xvckF0dGFjaG1lbnQtPnR5cGUoKSAhPSBHTF9SRU5E
RVJCVUZGRVIgJiYKICAgICAgICAgICAgICAgICByZWFkQ29sb3JBdHRhY2htZW50LT50eXBlKCkg
IT0gR0xfRlJBTUVCVUZGRVJfREVGQVVMVCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogCkBA
IC0xNjYxLDI2ICsxODc2LDI1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50
LT50eXBlKCkgIT0gR0xfUkVOREVSQlVGRkVSICYmCiAgICAgICAgICAgICAgICAgICAgICAgICBh
dHRhY2htZW50LT50eXBlKCkgIT0gR0xfRlJBTUVCVUZGRVJfREVGQVVMVCkKICAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgICAgICAgICAvLyBSZXR1cm4gYW4gZXJyb3IgaWYgdGhlIGRlc3RpbmF0aW9u
IGZvcm1hdHMgZG8gbm90IG1hdGNoCi0gICAgICAgICAgICAgICAgICAgIGlmIChhdHRhY2htZW50
LT5nZXRJbnRlcm5hbEZvcm1hdCgpICE9IHJlYWRDb2xvckF0dGFjaG1lbnQtPmdldEludGVybmFs
Rm9ybWF0KCkpCisgICAgICAgICAgICAgICAgICAgIGlmICghRm9ybWF0OjpTYW1lU2l6ZWQoYXR0
YWNobWVudC0+Z2V0Rm9ybWF0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVhZENvbG9yQXR0YWNobWVudC0+Z2V0Rm9ybWF0KCkpKQogICAgICAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaW50IHJlYWRTYW1w
bGVzID0gcmVhZEZyYW1lYnVmZmVyLT5nZXRTYW1wbGVzKGNvbnRleHQtPmdldERhdGEoKSk7Ci0K
LSAgICAgICAgICAgIGlmIChyZWFkU2FtcGxlcyAhPSAwICYmCisgICAgICAgICAgICBpZiAocmVh
ZEZyYW1lYnVmZmVyLT5nZXRTYW1wbGVzKGNvbnRleHQtPmdldENvbnRleHRTdGF0ZSgpKSAhPSAw
ICYmCiAgICAgICAgICAgICAgICAgSXNQYXJ0aWFsQmxpdChjb250ZXh0LCByZWFkQ29sb3JBdHRh
Y2htZW50LCBkcmF3Q29sb3JBdHRhY2htZW50LCBzcmNYMCwgc3JjWTAsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkx
KSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNzA2LDEzICsxOTIw
LDEzIEBACiAgICAgICAgICAgICAgICAgICAgIEVSUigKICAgICAgICAgICAgICAgICAgICAgICAg
ICJPbmx5IHdob2xlLWJ1ZmZlciBkZXB0aCBhbmQgc3RlbmNpbCBibGl0cyBhcmUgc3VwcG9ydGVk
IGJ5IHRoaXMgIgogICAgICAgICAgICAgICAgICAgICAgICAgImltcGxlbWVudGF0aW9uLiIpOwot
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTikpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKHJlYWRCdWZm
ZXItPmdldFNhbXBsZXMoKSAhPSAwIHx8IGRyYXdCdWZmZXItPmdldFNhbXBsZXMoKSAhPSAwKQog
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KQEAgLTE3MjUsMTggKzE5MzksMTYgQEAKIAogYm9vbCBWYWxpZGF0ZUNsZWFyKFZhbGlkYXRp
b25Db250ZXh0ICpjb250ZXh0LCBHTGJpdGZpZWxkIG1hc2spCiB7Ci0gICAgY29uc3QgRnJhbWVi
dWZmZXIgKmZyYW1lYnVmZmVyT2JqZWN0ID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXREcmF3RnJh
bWVidWZmZXIoKTsKLSAgICBBU1NFUlQoZnJhbWVidWZmZXJPYmplY3QpOwotCi0gICAgaWYgKGZy
YW1lYnVmZmVyT2JqZWN0LT5jaGVja1N0YXR1cyhjb250ZXh0LT5nZXREYXRhKCkpICE9IEdMX0ZS
QU1FQlVGRkVSX0NPTVBMRVRFKQorICAgIGF1dG8gZmJvID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgp
LmdldERyYXdGcmFtZWJ1ZmZlcigpOworICAgIGlmIChmYm8tPmNoZWNrU3RhdHVzKGNvbnRleHQt
PmdldENvbnRleHRTdGF0ZSgpKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKICAgICB7Ci0g
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRlJBTUVCVUZGRVJf
T1BFUkFUSU9OKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKICAgICBpZiAoKG1hc2sgJiB+KEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZG
RVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKSkgIT0gMCkKICAgICB7Ci0gICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xNzQ3LDcgKzE5NTksNyBAQAogewogICAgIGlmICghY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzKQogICAgIHsKLSAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFeHRlbnNpb24gbm90
IHN1cHBvcnRlZC4iKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAiRXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQuIikpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xNzY1LDE3ICsxOTc3LDQ4IEBACiAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMdm9pZCAqcGl4ZWxzKQogewotICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkg
PCAzKQorICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAg
ewogICAgICAgICByZXR1cm4gVmFsaWRhdGVFUzJUZXhJbWFnZVBhcmFtZXRlcnMoY29udGV4dCwg
dGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIGZhbHNlLCBmYWxzZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIHdpZHRoLCBoZWlnaHQsIGJv
cmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMCwgMCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5
cGUsIC0xLCBwaXhlbHMpOwogICAgIH0KIAotICAgIEFTU0VSVChjb250ZXh0LT5nZXRDbGllbnRW
ZXJzaW9uKCkgPj0gMyk7CisgICAgQVNTRVJUKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lv
bigpID49IDMpOwogICAgIHJldHVybiBWYWxpZGF0ZUVTM1RleEltYWdlMkRQYXJhbWV0ZXJzKGNv
bnRleHQsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCBmYWxzZSwgZmFsc2UsIDAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgd2lkdGgsIGhl
aWdodCwgMSwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgd2lkdGgsIGhlaWdodCwgMSwgYm9yZGVy
LCBmb3JtYXQsIHR5cGUsIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBpeGVscyk7CiB9CiAKK2Jvb2wgVmFsaWRhdGVUZXhJbWFnZTJEUm9idXN0KENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGJvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMdm9pZCAqcGl4ZWxzKQoreworICAgIGlmICghVmFsaWRhdGVSb2J1c3RF
bnRyeVBvaW50KGNvbnRleHQsIGJ1ZlNpemUpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMp
CisgICAgeworICAgICAgICByZXR1cm4gVmFsaWRhdGVFUzJUZXhJbWFnZVBhcmFtZXRlcnMoY29u
dGV4dCwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIGZhbHNlLCBmYWxzZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIHdpZHRoLCBoZWln
aHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxzKTsKKyAgICB9CisKKyAgICBBU1NFUlQoY29u
dGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPj0gMyk7CisgICAgcmV0dXJuIFZhbGlkYXRl
RVMzVGV4SW1hZ2UyRFBhcmFtZXRlcnMoY29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIGZhbHNlLCBmYWxzZSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLCAwLCB3aWR0aCwgaGVpZ2h0LCAxLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwg
YnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhl
bHMpOworfQorCiBib29sIFZhbGlkYXRlVGV4U3ViSW1hZ2UyRChDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxldmVsLApAQCAtMTc4OCwxNyArMjAzMSw0OCBAQAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwaXhlbHMpCiB7CiAKLSAgICBpZiAo
Y29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICBpZiAoY29udGV4dC0+Z2V0Q2xp
ZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKICAgICAgICAgcmV0dXJuIFZhbGlkYXRlRVMy
VGV4SW1hZ2VQYXJhbWV0ZXJzKGNvbnRleHQsIHRhcmdldCwgbGV2ZWwsIEdMX05PTkUsIGZhbHNl
LCB0cnVlLCB4b2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgMCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW9mZnNldCwgd2lk
dGgsIGhlaWdodCwgMCwgZm9ybWF0LCB0eXBlLCAtMSwgcGl4ZWxzKTsKICAgICB9CiAKLSAgICBB
U1NFUlQoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpID49IDMpOworICAgIEFTU0VSVChjb250
ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA+PSAzKTsKICAgICByZXR1cm4gVmFsaWRhdGVF
UzNUZXhJbWFnZTJEUGFyYW1ldGVycyhjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBHTF9OT05FLCBm
YWxzZSwgdHJ1ZSwgeG9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB5b2Zmc2V0LCAwLCB3aWR0aCwgaGVpZ2h0LCAxLCAwLCBmb3JtYXQsIHR5cGUsIHBp
eGVscyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW9mZnNl
dCwgMCwgd2lkdGgsIGhlaWdodCwgMSwgMCwgZm9ybWF0LCB0eXBlLCAtMSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbHMpOwogfQogCitib29sIFZhbGlk
YXRlVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0x2b2lkICpwaXhlbHMpCit7CisgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEVudHJ5UG9p
bnQoY29udGV4dCwgYnVmU2l6ZSkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKKyAgICB7
CisgICAgICAgIHJldHVybiBWYWxpZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVycyhjb250ZXh0LCB0
YXJnZXQsIGxldmVsLCBHTF9OT05FLCBmYWxzZSwgdHJ1ZSwgeG9mZnNldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQs
IDAsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBpeGVscyk7CisgICAgfQorCisgICAgQVNTRVJUKGNvbnRleHQtPmdl
dENsaWVudE1ham9yVmVyc2lvbigpID49IDMpOworICAgIHJldHVybiBWYWxpZGF0ZUVTM1RleElt
YWdlMkRQYXJhbWV0ZXJzKGNvbnRleHQsIHRhcmdldCwgbGV2ZWwsIEdMX05PTkUsIGZhbHNlLCB0
cnVlLCB4b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHlvZmZzZXQsIDAsIHdpZHRoLCBoZWlnaHQsIDEsIDAsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbHMpOworfQor
CiBib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleEltYWdlMkQoQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLApAQCAtMTgwOSwxMCArMjA4Mywx
MCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW1hZ2VTaXpl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqZGF0YSkK
IHsKLSAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICBpZiAoY29u
dGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKICAgICAgICAgaWYgKCFW
YWxpZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVycyhjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBpbnRl
cm5hbGZvcm1hdCwgdHJ1ZSwgZmFsc2UsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBHTF9OT05FLCBHTF9OT05F
LCBkYXRhKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCB3
aWR0aCwgaGVpZ2h0LCBib3JkZXIsIEdMX05PTkUsIEdMX05PTkUsIC0xLCBkYXRhKSkKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0xODE5LDkgKzIw
OTMsOSBAQAogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBBU1NFUlQoY29udGV4dC0+
Z2V0Q2xpZW50VmVyc2lvbigpID49IDMpOworICAgICAgICBBU1NFUlQoY29udGV4dC0+Z2V0Q2xp
ZW50TWFqb3JWZXJzaW9uKCkgPj0gMyk7CiAgICAgICAgIGlmICghVmFsaWRhdGVFUzNUZXhJbWFn
ZTJEUGFyYW1ldGVycyhjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgdHJ1
ZSwgZmFsc2UsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLCAwLCB3aWR0aCwgaGVpZ2h0LCAxLCBib3JkZXIsIEdMX05PTkUsIEdMX05PTkUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCB3aWR0aCwgaGVp
Z2h0LCAxLCBib3JkZXIsIEdMX05PTkUsIEdMX05PTkUsIC0xLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSkpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTE4MjksMTQgKzIxMDMsMjAgQEAKICAgICB9CiAKICAgICBjb25z
dCBJbnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9IEdldEludGVybmFsRm9ybWF0SW5mbyhpbnRl
cm5hbGZvcm1hdCk7Ci0gICAgaWYgKGltYWdlU2l6ZSA8IDAgfHwKLSAgICAgICAgc3RhdGljX2Nh
c3Q8R0x1aW50PihpbWFnZVNpemUpICE9Ci0gICAgICAgICAgICBmb3JtYXRJbmZvLmNvbXB1dGVC
bG9ja1NpemUoR0xfVU5TSUdORURfQllURSwgd2lkdGgsIGhlaWdodCkpCisgICAgYXV0byBibG9j
a1NpemVPckVyciA9CisgICAgICAgIGZvcm1hdEluZm8uY29tcHV0ZUNvbXByZXNzZWRJbWFnZVNp
emUoR0xfVU5TSUdORURfQllURSwgZ2w6OkV4dGVudHMod2lkdGgsIGhlaWdodCwgMSkpOworICAg
IGlmIChibG9ja1NpemVPckVyci5pc0Vycm9yKCkpCiAgICAgewotICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKGJsb2NrU2l6ZU9yRXJyLmdldEVycm9yKCkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCisgICAgaWYgKGltYWdlU2l6ZSA8IDAgfHwgc3RhdGljX2Nhc3Q8R0x1aW50
PihpbWFnZVNpemUpICE9IGJsb2NrU2l6ZU9yRXJyLmdldFJlc3VsdCgpKQorICAgIHsKKyAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE4NTEs
MTAgKzIxMzEsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGltYWdlU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTHZvaWQgKmRhdGEpCiB7Ci0gICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8
IDMpCisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7
CiAgICAgICAgIGlmICghVmFsaWRhdGVFUzJUZXhJbWFnZVBhcmFtZXRlcnMoY29udGV4dCwgdGFy
Z2V0LCBsZXZlbCwgR0xfTk9ORSwgdHJ1ZSwgdHJ1ZSwgeG9mZnNldCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCAwLCBH
TF9OT05FLCBHTF9OT05FLCBkYXRhKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCAwLCBHTF9OT05FLCBHTF9OT05FLCAt
MSwgZGF0YSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQpAQCAtMTg2MSw5ICsyMTQxLDkgQEAKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAg
QVNTRVJUKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA+PSAzKTsKKyAgICAgICAgQVNTRVJU
KGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpID49IDMpOwogICAgICAgICBpZiAoIVZh
bGlkYXRlRVMzVGV4SW1hZ2UyRFBhcmFtZXRlcnMoY29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgR0xf
Tk9ORSwgdHJ1ZSwgdHJ1ZSwgeG9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHlvZmZzZXQsIDAsIHdpZHRoLCBoZWlnaHQsIDEsIDAsIEdMX05PTkUs
IEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5
b2Zmc2V0LCAwLCB3aWR0aCwgaGVpZ2h0LCAxLCAwLCBHTF9OT05FLCBHTF9OT05FLCAtMSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEpKQogICAgICAg
ICB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xODcxLDI2ICsyMTUxLDI2IEBACiAg
ICAgfQogCiAgICAgY29uc3QgSW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBHZXRJbnRlcm5h
bEZvcm1hdEluZm8oZm9ybWF0KTsKLSAgICBpZiAoaW1hZ2VTaXplIDwgMCB8fAotICAgICAgICBz
dGF0aWNfY2FzdDxHTHVpbnQ+KGltYWdlU2l6ZSkgIT0KLSAgICAgICAgICAgIGZvcm1hdEluZm8u
Y29tcHV0ZUJsb2NrU2l6ZShHTF9VTlNJR05FRF9CWVRFLCB3aWR0aCwgaGVpZ2h0KSkKKyAgICBh
dXRvIGJsb2NrU2l6ZU9yRXJyID0KKyAgICAgICAgZm9ybWF0SW5mby5jb21wdXRlQ29tcHJlc3Nl
ZEltYWdlU2l6ZShHTF9VTlNJR05FRF9CWVRFLCBnbDo6RXh0ZW50cyh3aWR0aCwgaGVpZ2h0LCAx
KSk7CisgICAgaWYgKGJsb2NrU2l6ZU9yRXJyLmlzRXJyb3IoKSkKICAgICB7Ci0gICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoYmxvY2tTaXplT3JFcnIuZ2V0RXJyb3IoKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBpZiAoaW1hZ2VTaXplIDwgMCB8fCBzdGF0aWNfY2Fz
dDxHTHVpbnQ+KGltYWdlU2l6ZSkgIT0gYmxvY2tTaXplT3JFcnIuZ2V0UmVzdWx0KCkpCisgICAg
eworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
Ym9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBvaW50ZXJ2T0VTKENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgdm9pZCAqKnBhcmFtcykKIHsKLSAgICBpZiAoIWNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5tYXBCdWZmZXIpCi0gICAgewotICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIk1hcCBidWZmZXIgZXh0ZW5z
aW9uIG5vdCBhdmFpbGFibGUuIikpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIFZhbGlkYXRlR2V0QnVmZmVyUG9pbnRlcnZCYXNlKGNvbnRleHQsIHRhcmdldCwg
cG5hbWUsIHBhcmFtcyk7CisgICAgcmV0dXJuIFZhbGlkYXRlR2V0QnVmZmVyUG9pbnRlcnZCYXNl
KGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIG51bGxwdHIsIHBhcmFtcyk7CiB9CiAKIGJvb2wgVmFs
aWRhdGVNYXBCdWZmZXJPRVMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVt
IGFjY2VzcykKQEAgLTE4OTcsMzMgKzIxNzcsMzMgQEAKIHsKICAgICBpZiAoIWNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5tYXBCdWZmZXIpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIk1hcCBidWZmZXIgZXh0ZW5zaW9uIG5v
dCBhdmFpbGFibGUuIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTiwgIk1hcCBidWZmZXIgZXh0ZW5zaW9uIG5vdCBhdmFpbGFibGUuIikp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKCFWYWxpZEJ1ZmZlclRh
cmdldChjb250ZXh0LCB0YXJnZXQpKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBidWZmZXIgdGFyZ2V0LiIpKTsKKyAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxp
ZCBidWZmZXIgdGFyZ2V0LiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IEJ1ZmZlciAqYnVmZmVyID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRUYXJnZXRCdWZmZXIodGFy
Z2V0KTsKKyAgICBCdWZmZXIgKmJ1ZmZlciA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRUYXJn
ZXRCdWZmZXIodGFyZ2V0KTsKIAogICAgIGlmIChidWZmZXIgPT0gbnVsbHB0cikKICAgICB7Ci0g
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAi
QXR0ZW1wdGVkIHRvIG1hcCBidWZmZXIgb2JqZWN0IHplcm8uIikpOworICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkF0dGVtcHRlZCB0byBt
YXAgYnVmZmVyIG9iamVjdCB6ZXJvLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAogICAgIGlmIChhY2Nlc3MgIT0gR0xfV1JJVEVfT05MWV9PRVMpCiAgICAgewotICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJOb24td3JpdGUgYnVm
ZmVyIG1hcHBpbmcgbm90IHN1cHBvcnRlZC4iKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIk5vbi13cml0ZSBidWZmZXIgbWFwcGluZyBub3Qg
c3VwcG9ydGVkLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChi
dWZmZXItPmlzTWFwcGVkKCkpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkJ1ZmZlciBpcyBhbHJlYWR5IG1hcHBlZC4iKSk7
CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCAiQnVmZmVyIGlzIGFscmVhZHkgbWFwcGVkLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIApAQCAtMTkzNCw3ICsyMjE0LDcgQEAKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5tYXBCdWZmZXIpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIk1hcCBidWZmZXIgZXh0ZW5zaW9uIG5vdCBh
dmFpbGFibGUuIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTiwgIk1hcCBidWZmZXIgZXh0ZW5zaW9uIG5vdCBhdmFpbGFibGUuIikpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xOTQ5LDcgKzIyMjksNyBAQAogewog
ICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLm1hcEJ1ZmZlclJhbmdlKQogICAgIHsK
LSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoCisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKAogICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJNYXAgYnVmZmVy
IHJhbmdlIGV4dGVuc2lvbiBub3QgYXZhaWxhYmxlLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KQEAgLTE5NjQsNyArMjI0NCw3IEBACiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkubWFwQnVmZmVyUmFuZ2UpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcigKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCiAgICAgICAgICAgICBFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTiwgIk1hcCBidWZmZXIgcmFuZ2UgZXh0ZW5zaW9uIG5vdCBh
dmFpbGFibGUuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTk3NywxMCAr
MjI1NywxNyBAQAogICAgIFRleHR1cmUgKnRleHR1cmVPYmplY3QgPSBjb250ZXh0LT5nZXRUZXh0
dXJlKHRleHR1cmUpOwogICAgIGlmICh0ZXh0dXJlT2JqZWN0ICYmIHRleHR1cmVPYmplY3QtPmdl
dFRhcmdldCgpICE9IHRhcmdldCAmJiB0ZXh0dXJlICE9IDApCiAgICAgewotICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkludmFsaWQgdGV4
dHVyZSIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04sICJJbnZhbGlkIHRleHR1cmUiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKKyAgICBpZiAoIWNvbnRleHQtPmdldEdMU3RhdGUoKS5pc0JpbmRHZW5lcmF0ZXNSZXNv
dXJjZUVuYWJsZWQoKSAmJgorICAgICAgICAhY29udGV4dC0+aXNUZXh0dXJlR2VuZXJhdGVkKHRl
eHR1cmUpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04sICJUZXh0dXJlIHdhcyBub3QgZ2VuZXJhdGVkIikpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgc3dpdGNoICh0YXJnZXQpCiAgICAgewogICAgICAg
ICBjYXNlIEdMX1RFWFRVUkVfMkQ6CkBAIC0xOTg5LDIyICsyMjc2LDIzIEBACiAKICAgICAgICAg
Y2FzZSBHTF9URVhUVVJFXzNEOgogICAgICAgICBjYXNlIEdMX1RFWFRVUkVfMkRfQVJSQVk6Ci0g
ICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICAgICAg
ICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9FTlVNLCAiR0xFUyAzLjAgZGlzYWJsZWQiKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiR0xFUyAzLjAgZGlzYWJsZWQiKSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVM6Ci0gICAgICAg
ICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lZ2xTdHJlYW1Db25zdW1lckV4dGVy
bmFsKQorICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZWdsSW1hZ2VF
eHRlcm5hbCAmJgorICAgICAgICAgICAgICAgICFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZWds
U3RyZWFtQ29uc3VtZXJFeHRlcm5hbCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcigKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cigKICAgICAgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiRXh0ZXJuYWwg
dGV4dHVyZSBleHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VO
VU0sICJJbnZhbGlkIHRhcmdldCIpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgdGFyZ2V0IikpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjAxMSw0ICsyMjk5LDEzMTggQEAKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAorYm9vbCBWYWxpZGF0ZUJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTShD
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMY2hhciAqbmFtZSkKK3sKKyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5iaW5kVW5pZm9ybUxvY2F0aW9uKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkdMX0NIUk9N
SVVNX2JpbmRfdW5pZm9ybV9sb2NhdGlvbiBpcyBub3QgYXZhaWxhYmxlLiIpKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBHZXRW
YWxpZFByb2dyYW0oY29udGV4dCwgcHJvZ3JhbSk7CisgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChsb2NhdGlvbiA8
IDApCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X1ZBTFVFLCAiTG9jYXRpb24gY2Fubm90IGJlIGxlc3MgdGhhbiAwLiIpKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGNvbnN0IENhcHMgJmNhcHMgPSBjb250ZXh0LT5nZXRD
YXBzKCk7CisgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4obG9jYXRpb24pID49CisgICAgICAg
IChjYXBzLm1heFZlcnRleFVuaWZvcm1WZWN0b3JzICsgY2Fwcy5tYXhGcmFnbWVudFVuaWZvcm1W
ZWN0b3JzKSAqIDQpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX1ZBTFVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTG9j
YXRpb24gbXVzdCBiZSBsZXNzIHRoYW4gKE1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTICsgIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUFYX0ZSQUdNRU5UX1VOSUZPUk1f
VkVDVE9SUykgKiA0IikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYg
KHN0cm5jbXAobmFtZSwgImdsXyIsIDMpID09IDApCisgICAgeworICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiTmFt
ZSBjYW5ub3Qgc3RhcnQgd2l0aCB0aGUgcmVzZXJ2ZWQgXCJnbF9cIiBwcmVmaXguIikpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
VmFsaWRhdGVDb3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gY29tcG9uZW50cykKK3sKKyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5mcmFt
ZWJ1ZmZlck1peGVkU2FtcGxlcykKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJHTF9DSFJPTUlVTV9m
cmFtZWJ1ZmZlcl9taXhlZF9zYW1wbGVzIGlzIG5vdCBhdmFpbGFibGUuIikpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHN3aXRjaCAoY29tcG9uZW50cykKKyAgICB7CisgICAg
ICAgIGNhc2UgR0xfUkdCOgorICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAgIGNhc2UgR0xf
QUxQSEE6CisgICAgICAgIGNhc2UgR0xfTk9ORToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAg
ICAgICAgRXJyb3IoR0xfSU5WQUxJRF9FTlVNLAorICAgICAgICAgICAgICAgICAgICAgICJHTGVu
dW0gY29tcG9uZW50cyBpcyBub3Qgb25lIG9mIEdMX1JHQiwgR0xfUkdCQSwgR0xfQUxQSEEgb3Ig
R0xfTk9ORS4iKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0
dXJuIHRydWU7Cit9CisKKy8vIENIUk9NSVVNX3BhdGhfcmVuZGVyaW5nCisKK2Jvb2wgVmFsaWRh
dGVNYXRyaXgoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1hdHJpeE1vZGUsIGNvbnN0IEdMZmxv
YXQgKm1hdHJpeCkKK3sKKyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5wYXRoUmVu
ZGVyaW5nKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAg
ICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkdMX0NIUk9NSVVNX3BhdGhfcmVuZGVyaW5n
IGlzIG5vdCBhdmFpbGFibGUuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IGlmIChtYXRyaXhNb2RlICE9IEdMX1BBVEhfTU9ERUxWSUVXX0NIUk9NSVVNICYmIG1hdHJpeE1v
ZGUgIT0gR0xfUEFUSF9QUk9KRUNUSU9OX0NIUk9NSVVNKQorICAgIHsKKyAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBtYXRyaXggbW9k
ZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKG1hdHJpeCA9PSBu
dWxscHRyKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04sICJJbnZhbGlkIG1hdHJpeC4iKSk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVNYXRyaXhNb2Rl
KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtYXRyaXhNb2RlKQoreworICAgIGlmICghY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLnBhdGhSZW5kZXJpbmcpCisgICAgeworICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAi
R0xfQ0hST01JVU1fcGF0aF9yZW5kZXJpbmcgaXMgbm90IGF2YWlsYWJsZS4iKSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKG1hdHJpeE1vZGUgIT0gR0xfUEFUSF9NT0RF
TFZJRVdfQ0hST01JVU0gJiYgbWF0cml4TW9kZSAhPSBHTF9QQVRIX1BST0pFQ1RJT05fQ0hST01J
VU0pCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X0VOVU0sICJJbnZhbGlkIG1hdHJpeCBtb2RlLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdlblBhdGhzKENvbnRl
eHQgKmNvbnRleHQsIEdMc2l6ZWkgcmFuZ2UpCit7CisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkucGF0aFJlbmRlcmluZykKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJHTF9DSFJPTUlV
TV9wYXRoX3JlbmRlcmluZyBpcyBub3QgYXZhaWxhYmxlLiIpKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIC8vIHJhbmdlID0gMCBpcyB1bmRlZmluZWQgaW4gTlZfcGF0aF9y
ZW5kZXJpbmcuCisgICAgLy8gd2UgYWRkIHN0cmljdGVyIHNlbWFudGljIGNoZWNrIGhlcmUgYW5k
IHJlcXVpcmUgYSBub24gemVybyBwb3NpdGl2ZSByYW5nZS4KKyAgICBpZiAocmFuZ2UgPD0gMCkK
KyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFM
VUUsICJJbnZhbGlkIHJhbmdlLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIGlmICghYW5nbGU6OklzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8c3RkOjp1aW50MzJf
dD4ocmFuZ2UpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sICJSYW5nZSBvdmVyZmxvdy4iKSk7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZURlbGV0
ZVBhdGhzKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBwYXRoLCBHTHNpemVpIHJhbmdlKQorewor
ICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnBhdGhSZW5kZXJpbmcpCisgICAgewor
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OLCAiR0xfQ0hST01JVU1fcGF0aF9yZW5kZXJpbmcgaXMgbm90IGF2YWlsYWJs
ZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyByYW5nZSA9IDAg
aXMgdW5kZWZpbmVkIGluIE5WX3BhdGhfcmVuZGVyaW5nLgorICAgIC8vIHdlIGFkZCBzdHJpY3Rl
ciBzZW1hbnRpYyBjaGVjayBoZXJlIGFuZCByZXF1aXJlIGEgbm9uIHplcm8gcG9zaXRpdmUgcmFu
Z2UuCisgICAgaWYgKHJhbmdlIDw9IDApCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiSW52YWxpZCByYW5nZS4iKSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBhbmdsZTo6Q2hlY2tlZE51bWVyaWM8c3RkOjp1
aW50MzJfdD4gY2hlY2tlZFJhbmdlKHBhdGgpOworICAgIGNoZWNrZWRSYW5nZSArPSByYW5nZTsK
KworICAgIGlmICghYW5nbGU6OklzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5cGU8c3RkOjp1aW50
MzJfdD4ocmFuZ2UpIHx8ICFjaGVja2VkUmFuZ2UuSXNWYWxpZCgpKQorICAgIHsKKyAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJSYW5nZSBv
dmVyZmxvdy4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVQYXRoQ29tbWFuZHMoQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgbnVtQ29tbWFuZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMdWJ5dGUgKmNvbW1hbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IG51bUNvb3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvb3JkVHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqY29vcmRzKQoreworICAgIGlm
ICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnBhdGhSZW5kZXJpbmcpCisgICAgeworICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OLCAiR0xfQ0hST01JVU1fcGF0aF9yZW5kZXJpbmcgaXMgbm90IGF2YWlsYWJsZS4iKSk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKCFjb250ZXh0LT5oYXNQYXRo
KHBhdGgpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04sICJObyBzdWNoIHBhdGggb2JqZWN0LiIpKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIGlmIChudW1Db21tYW5kcyA8IDApCisgICAgeworICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiSW52YWxpZCBu
dW1iZXIgb2YgY29tbWFuZHMuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IGVsc2UgaWYgKG51bUNvbW1hbmRzID4gMCkKKyAgICB7CisgICAgICAgIGlmICghY29tbWFuZHMp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfVkFMVUUsICJObyBjb21tYW5kcyBhcnJheSBnaXZlbi4iKSk7CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobnVtQ29vcmRzIDwgMCkK
KyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFM
VUUsICJJbnZhbGlkIG51bWJlciBvZiBjb29yZGluYXRlcy4iKSk7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgZWxzZSBpZiAobnVtQ29vcmRzID4gMCkKKyAgICB7CisgICAgICAg
IGlmICghY29vcmRzKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiTm8gY29vcmRpbmF0ZSBhcnJheSBnaXZlbi4iKSk7
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGQ6
OnVpbnQzMl90IGNvb3JkVHlwZVNpemUgPSAwOworICAgIHN3aXRjaCAoY29vcmRUeXBlKQorICAg
IHsKKyAgICAgICAgY2FzZSBHTF9CWVRFOgorICAgICAgICAgICAgY29vcmRUeXBlU2l6ZSA9IHNp
emVvZihHTGJ5dGUpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9VTlNJ
R05FRF9CWVRFOgorICAgICAgICAgICAgY29vcmRUeXBlU2l6ZSA9IHNpemVvZihHTHVieXRlKTsK
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfU0hPUlQ6CisgICAgICAgICAg
ICBjb29yZFR5cGVTaXplID0gc2l6ZW9mKEdMc2hvcnQpOworICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAgICAgICAgICAgIGNvb3JkVHlwZVNp
emUgPSBzaXplb2YoR0x1c2hvcnQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2Fz
ZSBHTF9GTE9BVDoKKyAgICAgICAgICAgIGNvb3JkVHlwZVNpemUgPSBzaXplb2YoR0xmbG9hdCk7
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBjb29yZGlu
YXRlIHR5cGUuIikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGFu
Z2xlOjpDaGVja2VkTnVtZXJpYzxzdGQ6OnVpbnQzMl90PiBjaGVja2VkU2l6ZShudW1Db21tYW5k
cyk7CisgICAgY2hlY2tlZFNpemUgKz0gKGNvb3JkVHlwZVNpemUgKiBudW1Db29yZHMpOworICAg
IGlmICghY2hlY2tlZFNpemUuSXNWYWxpZCgpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJDb29yZCBzaXplIG92ZXJmbG93
LiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIGVhcmx5IHJldHVy
biBza2lwcyBjb21tYW5kIGRhdGEgdmFsaWRhdGlvbiB3aGVuIGl0IGRvZXNuJ3QgZXhpc3QuCisg
ICAgaWYgKCFjb21tYW5kcykKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBHTHNpemVpIGV4
cGVjdGVkTnVtQ29vcmRzID0gMDsKKyAgICBmb3IgKEdMc2l6ZWkgaSA9IDA7IGkgPCBudW1Db21t
YW5kczsgKytpKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChjb21tYW5kc1tpXSkKKyAgICAgICAg
eworICAgICAgICAgICAgY2FzZSBHTF9DTE9TRV9QQVRIX0NIUk9NSVVNOiAgLy8gbm8gY29vcmRp
bmF0ZXMuCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdMX01PVkVf
VE9fQ0hST01JVU06CisgICAgICAgICAgICBjYXNlIEdMX0xJTkVfVE9fQ0hST01JVU06CisgICAg
ICAgICAgICAgICAgZXhwZWN0ZWROdW1Db29yZHMgKz0gMjsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgR0xfUVVBRFJBVElDX0NVUlZFX1RPX0NIUk9NSVVNOgorICAg
ICAgICAgICAgICAgIGV4cGVjdGVkTnVtQ29vcmRzICs9IDQ7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIEdMX0NVQklDX0NVUlZFX1RPX0NIUk9NSVVNOgorICAgICAg
ICAgICAgICAgIGV4cGVjdGVkTnVtQ29vcmRzICs9IDY7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIEdMX0NPTklDX0NVUlZFX1RPX0NIUk9NSVVNOgorICAgICAgICAg
ICAgICAgIGV4cGVjdGVkTnVtQ29vcmRzICs9IDU7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgY29tbWFuZC4iKSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIGlmIChleHBlY3RlZE51
bUNvb3JkcyAhPSBudW1Db29yZHMpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiSW52YWxpZCBudW1iZXIgb2YgY29vcmRpbmF0ZXMu
IikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgVmFsaWRhdGVTZXRQYXRoUGFyYW1ldGVyKENvbnRleHQgKmNvbnRleHQsIEdMdWlu
dCBwYXRoLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgdmFsdWUpCit7CisgICAgaWYgKCFjb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkucGF0aFJlbmRlcmluZykKKyAgICB7CisgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJH
TF9DSFJPTUlVTV9wYXRoX3JlbmRlcmluZyBpcyBub3QgYXZhaWxhYmxlLiIpKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAoIWNvbnRleHQtPmhhc1BhdGgocGF0aCkpCisg
ICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwgIk5vIHN1Y2ggcGF0aCBvYmplY3QuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgc3dpdGNoIChwbmFtZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfUEFUSF9T
VFJPS0VfV0lEVEhfQ0hST01JVU06CisgICAgICAgICAgICBpZiAodmFsdWUgPCAwLjBmKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfVkFMVUUsICJJbnZhbGlkIHN0cm9rZSB3aWR0aC4iKSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgR0xfUEFUSF9FTkRfQ0FQU19DSFJPTUlVTToKKyAgICAgICAgICAgIHN3aXRjaCAo
c3RhdGljX2Nhc3Q8R0xlbnVtPih2YWx1ZSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgY2FzZSBHTF9GTEFUX0NIUk9NSVVNOgorICAgICAgICAgICAgICAgIGNhc2UgR0xfU1FVQVJF
X0NIUk9NSVVNOgorICAgICAgICAgICAgICAgIGNhc2UgR0xfUk9VTkRfQ0hST01JVU06CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwg
IkludmFsaWQgZW5kIGNhcHMuIikpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9QQVRI
X0pPSU5fU1RZTEVfQ0hST01JVU06CisgICAgICAgICAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PEdM
ZW51bT4odmFsdWUpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgR0xfTUlU
RVJfUkVWRVJUX0NIUk9NSVVNOgorICAgICAgICAgICAgICAgIGNhc2UgR0xfQkVWRUxfQ0hST01J
VU06CisgICAgICAgICAgICAgICAgY2FzZSBHTF9ST1VORF9DSFJPTUlVTToKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxp
ZCBqb2luIHN0eWxlLiIpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1BBVEhfTUlURVJfTElNSVRfQ0hST01JVU06Cisg
ICAgICAgICAgICBpZiAodmFsdWUgPCAwLjBmKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJJbnZhbGlk
IG1pdGVyIGxpbWl0LiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX1BBVEhfU1RST0tF
X0JPVU5EX0NIUk9NSVVNOgorICAgICAgICAgICAgLy8gbm8gZXJyb3JzLCBvbmx5IGNsYW1waW5n
LgorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgcGF0aCBw
YXJhbWV0ZXIuIikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFBhdGhQYXJhbWV0ZXIoQ29udGV4dCAqY29u
dGV4dCwgR0x1aW50IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqdmFsdWUpCit7CisgICAg
aWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkucGF0aFJlbmRlcmluZykKKyAgICB7CisgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04sICJHTF9DSFJPTUlVTV9wYXRoX3JlbmRlcmluZyBpcyBub3QgYXZhaWxhYmxlLiIp
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghY29udGV4dC0+aGFz
UGF0aChwYXRoKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLCAiTm8gc3VjaCBwYXRoIG9iamVjdC4iKSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKCF2YWx1ZSkKKyAgICB7CisgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJObyB2YWx1ZSBhcnJheS4i
KSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHBuYW1lKQor
ICAgIHsKKyAgICAgICAgY2FzZSBHTF9QQVRIX1NUUk9LRV9XSURUSF9DSFJPTUlVTToKKyAgICAg
ICAgY2FzZSBHTF9QQVRIX0VORF9DQVBTX0NIUk9NSVVNOgorICAgICAgICBjYXNlIEdMX1BBVEhf
Sk9JTl9TVFlMRV9DSFJPTUlVTToKKyAgICAgICAgY2FzZSBHTF9QQVRIX01JVEVSX0xJTUlUX0NI
Uk9NSVVNOgorICAgICAgICBjYXNlIEdMX1BBVEhfU1RST0tFX0JPVU5EX0NIUk9NSVVNOgorICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgcGF0aCBwYXJhbWV0
ZXIuIikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIFZhbGlkYXRlUGF0aFN0ZW5jaWxGdW5jKENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKQoreworICAgIGlmICghY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLnBhdGhSZW5kZXJpbmcpCisgICAgeworICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAi
R0xfQ0hST01JVU1fcGF0aF9yZW5kZXJpbmcgaXMgbm90IGF2YWlsYWJsZS4iKSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKGZ1bmMpCisgICAgeworICAgICAg
ICBjYXNlIEdMX05FVkVSOgorICAgICAgICBjYXNlIEdMX0FMV0FZUzoKKyAgICAgICAgY2FzZSBH
TF9MRVNTOgorICAgICAgICBjYXNlIEdMX0xFUVVBTDoKKyAgICAgICAgY2FzZSBHTF9FUVVBTDoK
KyAgICAgICAgY2FzZSBHTF9HRVFVQUw6CisgICAgICAgIGNhc2UgR0xfR1JFQVRFUjoKKyAgICAg
ICAgY2FzZSBHTF9OT1RFUVVBTDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVN
LCAiSW52YWxpZCBzdGVuY2lsIGZ1bmN0aW9uLiIpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gTm90ZSB0aGF0IHRoZSBzcGVj
IHNwZWNpZmllcyB0aGF0IGZvciB0aGUgcGF0aCBkcmF3aW5nIGNvbW1hbmRzCisvLyBpZiB0aGUg
cGF0aCBvYmplY3QgaXMgbm90IGFuIGV4aXN0aW5nIHBhdGggb2JqZWN0IHRoZSBjb21tYW5kCisv
LyBkb2VzIG5vdGhpbmcgYW5kIG5vIGVycm9yIGlzIGdlbmVyYXRlZC4KKy8vIEhvd2V2ZXIgaWYg
dGhlIHBhdGggb2JqZWN0IGV4aXN0cyBidXQgaGFzIG5vdCBiZWVuIHNwZWNpZmllZCBhbnkKKy8v
IGNvbW1hbmRzIHRoZW4gYW4gZXJyb3IgaXMgZ2VuZXJhdGVkLgorCitib29sIFZhbGlkYXRlU3Rl
bmNpbEZpbGxQYXRoKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBwYXRoLCBHTGVudW0gZmlsbE1v
ZGUsIEdMdWludCBtYXNrKQoreworICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnBh
dGhSZW5kZXJpbmcpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAg
ICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiR0xfQ0hST01JVU1fcGF0aF9yZW5k
ZXJpbmcgaXMgbm90IGF2YWlsYWJsZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgaWYgKGNvbnRleHQtPmhhc1BhdGgocGF0aCkgJiYgIWNvbnRleHQtPmhhc1BhdGhEYXRh
KHBhdGgpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04sICJObyBzdWNoIHBhdGggb2JqZWN0LiIpKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIHN3aXRjaCAoZmlsbE1vZGUpCisgICAgeworICAgICAgICBj
YXNlIEdMX0NPVU5UX1VQX0NIUk9NSVVNOgorICAgICAgICBjYXNlIEdMX0NPVU5UX0RPV05fQ0hS
T01JVU06CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgZmls
bCBtb2RlLiIpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAo
IWlzUG93MihtYXNrICsgMSkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiSW52YWxpZCBzdGVuY2lsIGJpdCBtYXNrLiIpKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IFZhbGlkYXRlU3RlbmNpbFN0cm9rZVBhdGgoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHBhdGgs
IEdMaW50IHJlZmVyZW5jZSwgR0x1aW50IG1hc2spCit7CisgICAgaWYgKCFjb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkucGF0aFJlbmRlcmluZykKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJHTF9DSFJP
TUlVTV9wYXRoX3JlbmRlcmluZyBpcyBub3QgYXZhaWxhYmxlLiIpKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICBpZiAoY29udGV4dC0+aGFzUGF0aChwYXRoKSAmJiAhY29udGV4
dC0+aGFzUGF0aERhdGEocGF0aCkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIk5vIHN1Y2ggcGF0aCBvciBwYXRoIGhhcyBu
byBkYXRhLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIFZhbGlkYXRlQ292ZXJQYXRoKENvbnRleHQgKmNvbnRleHQsIEdMdWlu
dCBwYXRoLCBHTGVudW0gY292ZXJNb2RlKQoreworICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLnBhdGhSZW5kZXJpbmcpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiR0xfQ0hST01JVU1f
cGF0aF9yZW5kZXJpbmcgaXMgbm90IGF2YWlsYWJsZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgaWYgKGNvbnRleHQtPmhhc1BhdGgocGF0aCkgJiYgIWNvbnRleHQtPmhh
c1BhdGhEYXRhKHBhdGgpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJObyBzdWNoIHBhdGggb2JqZWN0LiIpKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN3aXRjaCAoY292ZXJNb2RlKQorICAgIHsK
KyAgICAgICAgY2FzZSBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTToKKyAgICAgICAgY2FzZSBHTF9C
T1VORElOR19CT1hfQ0hST01JVU06CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSwgIkludmFsaWQgY292ZXIgbW9kZS4iKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlU3RlbmNpbFRoZW5Db3Zl
ckZpbGxQYXRoKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZmlsbE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gY292ZXJNb2RlKQoreworICAgIHJldHVybiBWYWxpZGF0ZVN0ZW5jaWxGaWxsUGF0aChj
b250ZXh0LCBwYXRoLCBmaWxsTW9kZSwgbWFzaykgJiYKKyAgICAgICAgICAgVmFsaWRhdGVDb3Zl
clBhdGgoY29udGV4dCwgcGF0aCwgY292ZXJNb2RlKTsKK30KKworYm9vbCBWYWxpZGF0ZVN0ZW5j
aWxUaGVuQ292ZXJTdHJva2VQYXRoKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpCit7CisgICAgcmV0dXJuIFZhbGlk
YXRlU3RlbmNpbFN0cm9rZVBhdGgoY29udGV4dCwgcGF0aCwgcmVmZXJlbmNlLCBtYXNrKSAmJgor
ICAgICAgICAgICBWYWxpZGF0ZUNvdmVyUGF0aChjb250ZXh0LCBwYXRoLCBjb3Zlck1vZGUpOwor
fQorCitib29sIFZhbGlkYXRlSXNQYXRoKENvbnRleHQgKmNvbnRleHQpCit7CisgICAgaWYgKCFj
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkucGF0aFJlbmRlcmluZykKKyAgICB7CisgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04sICJHTF9DSFJPTUlVTV9wYXRoX3JlbmRlcmluZyBpcyBub3QgYXZhaWxhYmxlLiIpKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBW
YWxpZGF0ZUNvdmVyRmlsbFBhdGhJbnN0YW5jZWQoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0aHMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCit7
CisgICAgaWYgKCFWYWxpZGF0ZUluc3RhbmNlZFBhdGhQYXJhbWV0ZXJzKGNvbnRleHQsIG51bVBh
dGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3dpdGNoIChjb3Zlck1vZGUpCisgICAgeworICAg
ICAgICBjYXNlIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNOgorICAgICAgICBjYXNlIEdMX0JPVU5E
SU5HX0JPWF9DSFJPTUlVTToKKyAgICAgICAgY2FzZSBHTF9CT1VORElOR19CT1hfT0ZfQk9VTkRJ
TkdfQk9YRVNfQ0hST01JVU06CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwg
IkludmFsaWQgY292ZXIgbW9kZS4iKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVDb3ZlclN0cm9rZVBhdGhJ
bnN0YW5jZWQoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBudW1QYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKK3sKKyAgICBp
ZiAoIVZhbGlkYXRlSW5zdGFuY2VkUGF0aFBhcmFtZXRlcnMoY29udGV4dCwgbnVtUGF0aHMsIHBh
dGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBzd2l0Y2ggKGNvdmVyTW9kZSkKKyAgICB7CisgICAgICAgIGNh
c2UgR0xfQ09OVkVYX0hVTExfQ0hST01JVU06CisgICAgICAgIGNhc2UgR0xfQk9VTkRJTkdfQk9Y
X0NIUk9NSVVNOgorICAgICAgICBjYXNlIEdMX0JPVU5ESU5HX0JPWF9PRl9CT1VORElOR19CT1hF
U19DSFJPTUlVTToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxp
ZCBjb3ZlciBtb2RlLiIpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZVN0ZW5jaWxGaWxsUGF0aEluc3RhbmNl
ZChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIG51bVBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB2b2lkICpwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IHBhdGhCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZmlsbE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQoreworCisgICAgaWYgKCFWYWxpZGF0
ZUluc3RhbmNlZFBhdGhQYXJhbWV0ZXJzKGNvbnRleHQsIG51bVBhdGhzLCBwYXRoTmFtZVR5cGUs
IHBhdGhzLCBwYXRoQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgc3dpdGNoIChmaWxsTW9kZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfQ09VTlRf
VVBfQ0hST01JVU06CisgICAgICAgIGNhc2UgR0xfQ09VTlRfRE9XTl9DSFJPTUlVTToKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBmaWxsIG1vZGUuIikpOwor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAoIWlzUG93MihtYXNrICsg
MSkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X1ZBTFVFLCAiSW52YWxpZCBzdGVuY2lsIGJpdCBtYXNrLiIpKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZVN0ZW5jaWxT
dHJva2VQYXRoSW5zdGFuY2VkKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1QYXRocywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNm
b3JtVmFsdWVzKQoreworICAgIGlmICghVmFsaWRhdGVJbnN0YW5jZWRQYXRoUGFyYW1ldGVycyhj
b250ZXh0LCBudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9y
bVZhbHVlcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIG5vIG1vcmUgdmFsaWRh
dGlvbiBoZXJlLgorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVTdGVuY2ls
VGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWQoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1QYXRocywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhO
YW1lVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgdm9pZCAqcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKK3sKKyAgICBpZiAoIVZhbGlkYXRlSW5zdGFuY2Vk
UGF0aFBhcmFtZXRlcnMoY29udGV4dCwgbnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBh
dGhCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zv
cm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBz
d2l0Y2ggKGNvdmVyTW9kZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfQ09OVkVYX0hVTExfQ0hS
T01JVU06CisgICAgICAgIGNhc2UgR0xfQk9VTkRJTkdfQk9YX0NIUk9NSVVNOgorICAgICAgICBj
YXNlIEdMX0JPVU5ESU5HX0JPWF9PRl9CT1VORElOR19CT1hFU19DSFJPTUlVTToKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBjb3ZlciBtb2RlLiIpKTsKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKGZpbGxNb2RlKQor
ICAgIHsKKyAgICAgICAgY2FzZSBHTF9DT1VOVF9VUF9DSFJPTUlVTToKKyAgICAgICAgY2FzZSBH
TF9DT1VOVF9ET1dOX0NIUk9NSVVNOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VO
VU0sICJJbnZhbGlkIGZpbGwgbW9kZS4iKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIGlmICghaXNQb3cyKG1hc2sgKyAxKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJJbnZhbGlkIHN0ZW5jaWwgYml0
IG1hc2suIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNl
ZChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
cGF0aEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgcmVmZXJlbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9h
dCAqdHJhbnNmb3JtVmFsdWVzKQoreworICAgIGlmICghVmFsaWRhdGVJbnN0YW5jZWRQYXRoUGFy
YW1ldGVycyhjb250ZXh0LCBudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVR5cGUs
IHRyYW5zZm9ybVZhbHVlcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN3aXRjaCAo
Y292ZXJNb2RlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTToK
KyAgICAgICAgY2FzZSBHTF9CT1VORElOR19CT1hfQ0hST01JVU06CisgICAgICAgIGNhc2UgR0xf
Qk9VTkRJTkdfQk9YX09GX0JPVU5ESU5HX0JPWEVTX0NIUk9NSVVNOgorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGNvdmVyIG1vZGUuIikpOworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZh
bGlkYXRlQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbihDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSkKK3sKKyAg
ICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5wYXRoUmVuZGVyaW5nKQorICAgIHsKKyAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTiwgIkdMX0NIUk9NSVVNX3BhdGhfcmVuZGVyaW5nIGlzIG5vdCBhdmFpbGFibGUu
IikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uc3QgR0xpbnQgTWF4
TG9jYXRpb24gPSBjb250ZXh0LT5nZXRDYXBzKCkubWF4VmFyeWluZ1ZlY3RvcnMgKiA0OworICAg
IGlmIChsb2NhdGlvbiA+PSBNYXhMb2NhdGlvbikKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJMb2NhdGlvbiBleGNlZWRzIG1heCB2
YXJ5aW5nLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGNvbnN0IGF1
dG8gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworICAgIGlm
ICghcHJvZ3JhbU9iamVjdCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiTm8gc3VjaCBwcm9ncmFtLiIpKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghbmFtZSkKKyAgICB7CisgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJObyBuYW1lIGdpdmVu
LiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChhbmdsZTo6QmVn
aW5zV2l0aChuYW1lLCAiZ2xfIikpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkNhbm5vdCBiaW5kIGEgYnVpbHQtaW4gdmFy
aWFibGUuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW4oQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gZ2VuTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgY29tcG9uZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqY29lZmZzKQoreworICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLnBhdGhSZW5kZXJpbmcpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiR0xfQ0hST01JVU1f
cGF0aF9yZW5kZXJpbmcgaXMgbm90IGF2YWlsYWJsZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBjb25zdCBhdXRvICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0
UHJvZ3JhbShwcm9ncmFtKTsKKyAgICBpZiAoIXByb2dyYW1PYmplY3QgfHwgcHJvZ3JhbU9iamVj
dC0+aXNGbGFnZ2VkRm9yRGVsZXRpb24oKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiTm8gc3VjaCBwcm9ncmFtLiIpKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghcHJvZ3JhbU9iamVjdC0+
aXNMaW5rZWQoKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLCAiUHJvZ3JhbSBpcyBub3QgbGlua2VkLiIpKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN3aXRjaCAoZ2VuTW9kZSkKKyAgICB7CisgICAg
ICAgIGNhc2UgR0xfTk9ORToKKyAgICAgICAgICAgIGlmIChjb21wb25lbnRzICE9IDApCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSwgIkludmFsaWQgY29tcG9uZW50cy4iKSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgY2FzZSBHTF9PQkpFQ1RfTElORUFSX0NIUk9NSVVNOgorICAgICAgICBjYXNlIEdMX0VZRV9M
SU5FQVJfQ0hST01JVU06CisgICAgICAgIGNhc2UgR0xfQ09OU1RBTlRfQ0hST01JVU06CisgICAg
ICAgICAgICBpZiAoY29tcG9uZW50cyA8IDEgfHwgY29tcG9uZW50cyA+IDQpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSwgIkludmFsaWQgY29tcG9uZW50cy4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFjb2VmZnMpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSwgIk5vIGNvZWZmaWNpZW50cyBhcnJheSBnaXZlbi4iKSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgZ2VuIG1vZGUuIikpOworICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIElmIHRoZSBsb2NhdGlvbiBpcyAtMSB0aGVuIHRo
ZSBjb21tYW5kIGlzIHNpbGVudGx5IGlnbm9yZWQKKyAgICAvLyBhbmQgbm8gZnVydGhlciB2YWxp
ZGF0aW9uIGlzIG5lZWRlZC4KKyAgICBpZiAobG9jYXRpb24gPT0gLTEpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgY29uc3QgYXV0byAmYmluZGluZyA9IHByb2dyYW1PYmplY3QtPmdldEZy
YWdtZW50SW5wdXRCaW5kaW5nSW5mbyhsb2NhdGlvbik7CisKKyAgICBpZiAoIWJpbmRpbmcudmFs
aWQpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTiwgIk5vIHN1Y2ggYmluZGluZy4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBpZiAoYmluZGluZy50eXBlICE9IEdMX05PTkUpCisgICAgeworICAgICAg
ICBHTGludCBleHBlY3RlZENvbXBvbmVudHMgPSAwOworICAgICAgICBzd2l0Y2ggKGJpbmRpbmcu
dHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAgICAgICAg
ICAgICBleHBlY3RlZENvbXBvbmVudHMgPSAxOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUMyOgorICAgICAgICAgICAgICAgIGV4cGVjdGVkQ29t
cG9uZW50cyA9IDI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdM
X0ZMT0FUX1ZFQzM6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRDb21wb25lbnRzID0gMzsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDNDoKKyAg
ICAgICAgICAgICAgICBleHBlY3RlZENvbXBvbmVudHMgPSA0OworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICAgICAgICAgICAgICAg
IkZyYWdtZW50IGlucHV0IHR5cGUgaXMgbm90IGEgZmxvYXRpbmcgcG9pbnQgc2NhbGFyIG9yIHZl
Y3Rvci4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
ICAgIGlmIChleHBlY3RlZENvbXBvbmVudHMgIT0gY29tcG9uZW50cyAmJiBnZW5Nb2RlICE9IEdM
X05PTkUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiVW5leHBlY3RlZCBudW1iZXIgb2YgY29tcG9uZW50cyIp
KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUNvcHlUZXh0dXJlQ0hST01JVU0oQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzb3VyY2VJ
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBkZXN0SWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbEZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0VHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBhY2tGbGlwWSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFja1VubXVsdGlw
bHlBbHBoYSkKK3sKKyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jb3B5VGV4dHVy
ZSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJHTF9DSFJPTUlVTV9jb3B5X3RleHR1cmUgZXh0ZW5z
aW9uIG5vdCBhdmFpbGFibGUuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgY29uc3QgZ2w6OlRleHR1cmUgKnNvdXJjZSA9IGNvbnRleHQtPmdldFRleHR1cmUoc291cmNl
SWQpOworICAgIGlmIChzb3VyY2UgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIlNvdXJj
ZSB0ZXh0dXJlIGlzIG5vdCBhIHZhbGlkIHRleHR1cmUgb2JqZWN0LiIpKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghSXNWYWxpZENvcHlUZXh0dXJlU291cmNlVGFy
Z2V0KGNvbnRleHQsIHNvdXJjZS0+Z2V0VGFyZ2V0KCkpKQorICAgIHsKKyAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIlNvdXJjZSB0ZXh0dXJlIGEg
dmFsaWQgdGV4dHVyZSB0eXBlLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIEdMZW51bSBzb3VyY2VUYXJnZXQgPSBzb3VyY2UtPmdldFRhcmdldCgpOworICAgIEFTU0VS
VChzb3VyY2VUYXJnZXQgIT0gR0xfVEVYVFVSRV9DVUJFX01BUCk7CisgICAgaWYgKHNvdXJjZS0+
Z2V0V2lkdGgoc291cmNlVGFyZ2V0LCAwKSA9PSAwIHx8IHNvdXJjZS0+Z2V0SGVpZ2h0KHNvdXJj
ZVRhcmdldCwgMCkgPT0gMCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAor
ICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIkxldmVsIDAgb2YgdGhlIHNvdXJj
ZSB0ZXh0dXJlIG11c3QgYmUgZGVmaW5lZC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBjb25zdCBnbDo6Rm9ybWF0ICZzb3VyY2VGb3JtYXQgPSBzb3VyY2UtPmdldEZv
cm1hdChzb3VyY2VUYXJnZXQsIDApOworICAgIGlmICghSXNWYWxpZENvcHlUZXh0dXJlRm9ybWF0
KGNvbnRleHQsIHNvdXJjZUZvcm1hdC5mb3JtYXQpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIlNv
dXJjZSB0ZXh0dXJlIGludGVybmFsIGZvcm1hdCBpcyBpbnZhbGlkLiIpKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGNvbnN0IGdsOjpUZXh0dXJlICpkZXN0ID0gY29udGV4
dC0+Z2V0VGV4dHVyZShkZXN0SWQpOworICAgIGlmIChkZXN0ID09IG51bGxwdHIpCisgICAgewor
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFM
SURfVkFMVUUsICJEZXN0aW5hdGlvbiB0ZXh0dXJlIGlzIG5vdCBhIHZhbGlkIHRleHR1cmUgb2Jq
ZWN0LiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghSXNWYWxp
ZENvcHlUZXh0dXJlRGVzdGluYXRpb25UYXJnZXQoY29udGV4dCwgZGVzdC0+Z2V0VGFyZ2V0KCkp
KQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSwgIkRlc3RpbmF0aW9uIHRleHR1cmUgYSB2YWxpZCB0ZXh0dXJlIHR5cGUuIikpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFJc1ZhbGlkQ29weVRleHR1cmVE
ZXN0aW5hdGlvbkZvcm1hdFR5cGUoY29udGV4dCwgaW50ZXJuYWxGb3JtYXQsIGRlc3RUeXBlKSkK
KyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAgICAgICAiRGVzdGluYXRpb24gaW50
ZXJuYWwgZm9ybWF0IGFuZCB0eXBlIGNvbWJpbmF0aW9uIGlzIG5vdCB2YWxpZC4iKSk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoZGVzdC0+Z2V0SW1tdXRhYmxlRm9y
bWF0KCkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTiwgIkRlc3RpbmF0aW9uIHRleHR1cmUgaXMgaW1tdXRhYmxlLiIpKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IFZhbGlkYXRlQ29weVN1YlRleHR1cmVDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNvdXJjZUlkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGRlc3RJZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdp
ZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNrRmxp
cFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNr
UHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Ym9vbGVhbiB1bnBhY2tVbm11bHRpcGx5QWxwaGEpCit7CisgICAgaWYgKCFjb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuY29weVRleHR1cmUpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiR0xfQ0hST01J
VU1fY29weV90ZXh0dXJlIGV4dGVuc2lvbiBub3QgYXZhaWxhYmxlLiIpKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGNvbnN0IGdsOjpUZXh0dXJlICpzb3VyY2UgPSBjb250
ZXh0LT5nZXRUZXh0dXJlKHNvdXJjZUlkKTsKKyAgICBpZiAoc291cmNlID09IG51bGxwdHIpCisg
ICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdM
X0lOVkFMSURfVkFMVUUsICJTb3VyY2UgdGV4dHVyZSBpcyBub3QgYSB2YWxpZCB0ZXh0dXJlIG9i
amVjdC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIUlzVmFs
aWRDb3B5VGV4dHVyZVNvdXJjZVRhcmdldChjb250ZXh0LCBzb3VyY2UtPmdldFRhcmdldCgpKSkK
KyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFM
VUUsICJTb3VyY2UgdGV4dHVyZSBhIHZhbGlkIHRleHR1cmUgdHlwZS4iKSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBHTGVudW0gc291cmNlVGFyZ2V0ID0gc291cmNlLT5n
ZXRUYXJnZXQoKTsKKyAgICBBU1NFUlQoc291cmNlVGFyZ2V0ICE9IEdMX1RFWFRVUkVfQ1VCRV9N
QVApOworICAgIGlmIChzb3VyY2UtPmdldFdpZHRoKHNvdXJjZVRhcmdldCwgMCkgPT0gMCB8fCBz
b3VyY2UtPmdldEhlaWdodChzb3VyY2VUYXJnZXQsIDApID09IDApCisgICAgeworICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfVkFMVUUs
ICJMZXZlbCAwIG9mIHRoZSBzb3VyY2UgdGV4dHVyZSBtdXN0IGJlIGRlZmluZWQuIikpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKHggPCAwIHx8IHkgPCAwKQorICAg
IHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwg
InggYW5kIHkgY2Fubm90IGJlIG5lZ2F0aXZlLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGlmICh3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkKKyAgICB7CisgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJ3aWR0aCBhbmQg
aGVpZ2h0IGNhbm5vdCBiZSBuZWdhdGl2ZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90Pih4ICsgd2lkdGgpID4gc291cmNlLT5n
ZXRXaWR0aChzb3VyY2VUYXJnZXQsIDApIHx8CisgICAgICAgIHN0YXRpY19jYXN0PHNpemVfdD4o
eSArIGhlaWdodCkgPiBzb3VyY2UtPmdldEhlaWdodChzb3VyY2VUYXJnZXQsIDApKQorICAgIHsK
KyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZB
TElEX1ZBTFVFLCAiU291cmNlIHRleHR1cmUgbm90IGxhcmdlIGVub3VnaCB0byBjb3B5IGZyb20u
IikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uc3QgZ2w6OkZvcm1h
dCAmc291cmNlRm9ybWF0ID0gc291cmNlLT5nZXRGb3JtYXQoc291cmNlVGFyZ2V0LCAwKTsKKyAg
ICBpZiAoIUlzVmFsaWRDb3B5VGV4dHVyZUZvcm1hdChjb250ZXh0LCBzb3VyY2VGb3JtYXQuZm9y
bWF0KSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAg
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJTb3VyY2UgdGV4dHVyZSBpbnRlcm5hbCBmb3Jt
YXQgaXMgaW52YWxpZC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBj
b25zdCBnbDo6VGV4dHVyZSAqZGVzdCA9IGNvbnRleHQtPmdldFRleHR1cmUoZGVzdElkKTsKKyAg
ICBpZiAoZGVzdCA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiRGVzdGluYXRpb24gdGV4
dHVyZSBpcyBub3QgYSB2YWxpZCB0ZXh0dXJlIG9iamVjdC4iKSk7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBpZiAoIUlzVmFsaWRDb3B5VGV4dHVyZURlc3RpbmF0aW9uVGFy
Z2V0KGNvbnRleHQsIGRlc3QtPmdldFRhcmdldCgpKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJEZXN0aW5hdGlvbiB0ZXh0dXJl
IGEgdmFsaWQgdGV4dHVyZSB0eXBlLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIEdMZW51bSBkZXN0VGFyZ2V0ID0gZGVzdC0+Z2V0VGFyZ2V0KCk7CisgICAgQVNTRVJU
KGRlc3RUYXJnZXQgIT0gR0xfVEVYVFVSRV9DVUJFX01BUCk7CisgICAgaWYgKGRlc3QtPmdldFdp
ZHRoKHNvdXJjZVRhcmdldCwgMCkgPT0gMCB8fCBkZXN0LT5nZXRIZWlnaHQoc291cmNlVGFyZ2V0
LCAwKSA9PSAwKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAg
ICAgICBFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiTGV2ZWwgMCBvZiB0aGUgZGVzdGluYXRpb24g
dGV4dHVyZSBtdXN0IGJlIGRlZmluZWQuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgY29uc3QgZ2w6OkZvcm1hdCAmZGVzdEZvcm1hdCA9IGRlc3QtPmdldEZvcm1hdChk
ZXN0VGFyZ2V0LCAwKTsKKyAgICBpZiAoIUlzVmFsaWRDb3B5VGV4dHVyZURlc3RpbmF0aW9uRm9y
bWF0VHlwZShjb250ZXh0LCBkZXN0Rm9ybWF0LmZvcm1hdCwgZGVzdEZvcm1hdC50eXBlKSkKKyAg
ICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAgICAgICAiRGVzdGluYXRpb24gaW50ZXJu
YWwgZm9ybWF0IGFuZCB0eXBlIGNvbWJpbmF0aW9uIGlzIG5vdCB2YWxpZC4iKSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoeG9mZnNldCA8IDAgfHwgeW9mZnNldCA8
IDApCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X1ZBTFVFLCAieG9mZnNldCBhbmQgeW9mZnNldCBjYW5ub3QgYmUgbmVnYXRpdmUuIikpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4o
eG9mZnNldCArIHdpZHRoKSA+IGRlc3QtPmdldFdpZHRoKGRlc3RUYXJnZXQsIDApIHx8CisgICAg
ICAgIHN0YXRpY19jYXN0PHNpemVfdD4oeW9mZnNldCArIGhlaWdodCkgPiBkZXN0LT5nZXRIZWln
aHQoZGVzdFRhcmdldCwgMCkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigK
KyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJEZXN0aW5hdGlvbiB0ZXh0dXJl
IG5vdCBsYXJnZSBlbm91Z2ggdG8gY29weSB0by4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRD
b3B5VGV4dHVyZUNIUk9NSVVNKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBzb3VyY2VJZCwgR0x1
aW50IGRlc3RJZCkKK3sKKyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jb3B5Q29t
cHJlc3NlZFRleHR1cmUpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkdMX0NIUk9NSVVNX2NvcHlfY29tcHJlc3NlZF90ZXh0dXJlIGV4dGVuc2lvbiBub3QgYXZh
aWxhYmxlLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGNvbnN0IGds
OjpUZXh0dXJlICpzb3VyY2UgPSBjb250ZXh0LT5nZXRUZXh0dXJlKHNvdXJjZUlkKTsKKyAgICBp
ZiAoc291cmNlID09IG51bGxwdHIpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJTb3VyY2UgdGV4dHVyZSBp
cyBub3QgYSB2YWxpZCB0ZXh0dXJlIG9iamVjdC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBpZiAoc291cmNlLT5nZXRUYXJnZXQoKSAhPSBHTF9URVhUVVJFXzJEKQor
ICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBFcnJvcihH
TF9JTlZBTElEX1ZBTFVFLCAiU291cmNlIHRleHR1cmUgbXVzdCBiZSBvZiB0eXBlIEdMX1RFWFRV
UkVfMkQuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKHNvdXJj
ZS0+Z2V0V2lkdGgoR0xfVEVYVFVSRV8yRCwgMCkgPT0gMCB8fCBzb3VyY2UtPmdldEhlaWdodChH
TF9URVhUVVJFXzJELCAwKSA9PSAwKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIlNvdXJjZSB0ZXh0dXJlIG11c3QgbGV2ZWwgMCBk
ZWZpbmVkLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGNvbnN0IGds
OjpGb3JtYXQgJnNvdXJjZUZvcm1hdCA9IHNvdXJjZS0+Z2V0Rm9ybWF0KEdMX1RFWFRVUkVfMkQs
IDApOworICAgIGlmICghc291cmNlRm9ybWF0LmluZm8tPmNvbXByZXNzZWQpCisgICAgeworICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OLCAiU291cmNlIHRleHR1cmUgbXVzdCBoYXZlIGEgY29tcHJlc3NlZCBpbnRlcm5h
bCBmb3JtYXQuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uc3Qg
Z2w6OlRleHR1cmUgKmRlc3QgPSBjb250ZXh0LT5nZXRUZXh0dXJlKGRlc3RJZCk7CisgICAgaWYg
KGRlc3QgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAor
ICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIkRlc3RpbmF0aW9uIHRleHR1cmUg
aXMgbm90IGEgdmFsaWQgdGV4dHVyZSBvYmplY3QuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgaWYgKGRlc3QtPmdldFRhcmdldCgpICE9IEdMX1RFWFRVUkVfMkQpCisg
ICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdM
X0lOVkFMSURfVkFMVUUsICJEZXN0aW5hdGlvbiB0ZXh0dXJlIG11c3QgYmUgb2YgdHlwZSBHTF9U
RVhUVVJFXzJELiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChk
ZXN0LT5nZXRJbW11dGFibGVGb3JtYXQoKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRGVzdGluYXRpb24gY2Fubm90IGJl
IGltbXV0YWJsZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUNyZWF0ZVNoYWRlcihDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNl
IEdMX1ZFUlRFWF9TSEFERVI6CisgICAgICAgIGNhc2UgR0xfRlJBR01FTlRfU0hBREVSOgorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfQ09NUFVURV9TSEFERVI6CisgICAgICAg
ICAgICBpZiAoY29udGV4dC0+Z2V0R0xWZXJzaW9uKCkuaXNFUzMxKCkpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0p
KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBWYWxpZGF0ZUJ1ZmZlckRhdGEoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaXB0ciBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0x2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHVzYWdlKQorewor
ICAgIGlmIChzaXplIDwgMCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIHN3aXRjaCAodXNhZ2UpCisgICAgeworICAgICAgICBjYXNlIEdMX1NUUkVBTV9EUkFXOgor
ICAgICAgICBjYXNlIEdMX1NUQVRJQ19EUkFXOgorICAgICAgICBjYXNlIEdMX0RZTkFNSUNfRFJB
VzoKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfU1RSRUFNX1JFQUQ6Cisg
ICAgICAgIGNhc2UgR0xfU1RSRUFNX0NPUFk6CisgICAgICAgIGNhc2UgR0xfU1RBVElDX1JFQUQ6
CisgICAgICAgIGNhc2UgR0xfU1RBVElDX0NPUFk6CisgICAgICAgIGNhc2UgR0xfRFlOQU1JQ19S
RUFEOgorICAgICAgICBjYXNlIEdMX0RZTkFNSUNfQ09QWToKKyAgICAgICAgICAgIGlmIChjb250
ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGlmICghVmFsaWRCdWZmZXJUYXJnZXQoY29udGV4dCwgdGFyZ2V0KSkKKyAg
ICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgQnVmZmVyICpidWZmZXIgPSBj
b250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VGFyZ2V0QnVmZmVyKHRhcmdldCk7CisKKyAgICBpZiAo
IWJ1ZmZlcikKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUJ1ZmZlclN1YkRhdGEoVmFsaWRhdGlvbkNv
bnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgb2Zmc2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0x2b2lkICpkYXRhKQoreworICAgIGlmIChzaXplIDwgMCB8fCBvZmZzZXQg
PCAwKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFWYWxp
ZEJ1ZmZlclRhcmdldChjb250ZXh0LCB0YXJnZXQpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBCdWZmZXIgKmJ1ZmZlciA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5n
ZXRUYXJnZXRCdWZmZXIodGFyZ2V0KTsKKworICAgIGlmICghYnVmZmVyKQorICAgIHsKKyAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChidWZmZXItPmlzTWFwcGVkKCkp
CisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gQ2hlY2sg
Zm9yIHBvc3NpYmxlIG92ZXJmbG93IG9mIHNpemUgKyBvZmZzZXQKKyAgICBhbmdsZTo6Q2hlY2tl
ZE51bWVyaWM8c2l6ZV90PiBjaGVja2VkU2l6ZShzaXplKTsKKyAgICBjaGVja2VkU2l6ZSArPSBv
ZmZzZXQ7CisgICAgaWYgKCFjaGVja2VkU2l6ZS5Jc1ZhbGlkKCkpCisgICAgeworICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9PVVRfT0ZfTUVNT1JZKSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoc2l6ZSArIG9mZnNldCA+IGJ1ZmZlci0+Z2V0
U2l6ZSgpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVFbmFibGVFeHRlbnNpb25BTkdMRShWYWxpZGF0aW9u
Q29udGV4dCAqY29udGV4dCwgY29uc3QgR0xjaGFyICpuYW1lKQoreworICAgIGlmICghY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLndlYmdsQ29tcGF0aWJpbGl0eSkKKyAgICB7CisgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04sICJHTF9BTkdMRV93ZWJnbF9jb21wYXRpYmlsaXR5IGlzIG5vdCBhdmFpbGFibGUuIikpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uc3QgRXh0ZW5zaW9uSW5mb01h
cCAmZXh0ZW5zaW9uSW5mb3MgPSBHZXRFeHRlbnNpb25JbmZvTWFwKCk7CisgICAgYXV0byBleHRl
bnNpb24gICAgICAgICAgICAgICAgICAgICAgICAgPSBleHRlbnNpb25JbmZvcy5maW5kKG5hbWUp
OworICAgIGlmIChleHRlbnNpb24gPT0gZXh0ZW5zaW9uSW5mb3MuZW5kKCkgfHwgIWV4dGVuc2lv
bi0+c2Vjb25kLkVuYWJsZWFibGUpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkV4dGVuc2lvbiAlcyBpcyBub3QgZW5hYmxl
YWJsZS4iLCBuYW1lKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUFjdGl2ZVRleHR1cmUoVmFsaWRhdGlvbkNvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSB0ZXh0dXJlKQoreworICAgIGlmICh0ZXh0dXJlIDwgR0xfVEVY
VFVSRTAgfHwKKyAgICAgICAgdGV4dHVyZSA+IEdMX1RFWFRVUkUwICsgY29udGV4dC0+Z2V0Q2Fw
cygpLm1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMgLSAxKQorICAgIHsKKyAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUF0
dGFjaFNoYWRlcihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHByb2dyYW0sIEdM
dWludCBzaGFkZXIpCit7CisgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IEdldFZhbGlkUHJv
Z3JhbShjb250ZXh0LCBwcm9ncmFtKTsKKyAgICBpZiAoIXByb2dyYW1PYmplY3QpCisgICAgewor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgU2hhZGVyICpzaGFkZXJPYmplY3Qg
PSBHZXRWYWxpZFNoYWRlcihjb250ZXh0LCBzaGFkZXIpOworICAgIGlmICghc2hhZGVyT2JqZWN0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN3aXRjaCAoc2hh
ZGVyT2JqZWN0LT5nZXRUeXBlKCkpCisgICAgeworICAgICAgICBjYXNlIEdMX1ZFUlRFWF9TSEFE
RVI6CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChwcm9ncmFtT2JqZWN0LT5nZXRBdHRhY2hl
ZFZlcnRleFNoYWRlcigpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBHTF9GUkFHTUVOVF9TSEFERVI6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmIChwcm9ncmFtT2JqZWN0LT5nZXRBdHRhY2hlZEZyYWdtZW50U2hhZGVyKCkpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IEdMX0NPTVBVVEVfU0hBREVSOgorICAgICAgICB7CisgICAgICAgICAgICBpZiAocHJvZ3JhbU9i
amVjdC0+Z2V0QXR0YWNoZWRDb21wdXRlU2hhZGVyKCkpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5S
RUFDSEFCTEUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiB0cnVl
OworfQorCiB9ICAvLyBuYW1lc3BhY2UgZ2wKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzIuaAkocmV2aXNpb24gMjA4MDIx
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzIu
aAkod29ya2luZyBjb3B5KQpAQCAtMTgsOSArMTgsMjEgQEAKIGNsYXNzIFZhbGlkYXRpb25Db250
ZXh0OwogY2xhc3MgVGV4dHVyZTsKIAotYm9vbCBWYWxpZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVy
cyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBib29sIGlzQ29tcHJlc3NlZCwgYm9vbCBpc1N1YkltYWdlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0
LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29u
c3QgR0x2b2lkICpwaXhlbHMpOworYm9vbCBWYWxpZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVycyhD
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZl
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9y
bWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ29tcHJlc3Nl
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1N1YkltYWdlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgYm9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBp
bWFnZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9p
ZCAqcGl4ZWxzKTsKIAogYm9vbCBWYWxpZGF0ZUVTMkNvcHlUZXhJbWFnZVBhcmFtZXRlcnMoVmFs
aWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LApAQCAtMzgsOCArNTAsNiBAQAogYm9vbCBWYWxpZGF0ZUVT
MlRleFN0b3JhZ2VQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdM
c2l6ZWkgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCk7CiAKLWJvb2wgVmFsaWRFUzJSZWFkRm9ybWF0VHlwZShDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSk7Ci0KIGJvb2wgVmFsaWRhdGVEaXNjYXJkRnJhbWVi
dWZmZXJFWFQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xzaXplaSBudW1BdHRh
Y2htZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVt
ICphdHRhY2htZW50cyk7CiAKQEAgLTEzOSw2ICsxNDksMTcgQEAKICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlw
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcGl4ZWxzKTsKK2Jvb2wg
VmFsaWRhdGVUZXhJbWFnZTJEUm9idXN0KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBp
bnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lk
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJvcmRlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVm
U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcGl4ZWxz
KTsKIGJvb2wgVmFsaWRhdGVUZXhTdWJJbWFnZTJEKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbGV2ZWwsCkBAIC0xNDksNiArMTcwLDE3IEBACiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVs
cyk7Citib29sIFZhbGlkYXRlVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwaXhlbHMpOwogYm9vbCBWYWxpZGF0ZUNvbXBy
ZXNzZWRUZXhJbWFnZTJEKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsZXZlbCwKQEAgLTE4Myw2ICsyMTUsMTQ2IEBACiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIGxlbmd0aCk7CiAKK2Jvb2wgVmFsaWRh
dGVCaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU0oQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpOwor
Citib29sIFZhbGlkYXRlQ292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU0oQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIGNvbXBvbmVudHMpOworCisvLyBDSFJPTUlVTV9wYXRoX3JlbmRlcmluZworYm9v
bCBWYWxpZGF0ZU1hdHJpeChDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbWF0cml4TW9kZSwgY29u
c3QgR0xmbG9hdCAqbWF0cml4KTsKK2Jvb2wgVmFsaWRhdGVNYXRyaXhNb2RlKENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSBtYXRyaXhNb2RlKTsKK2Jvb2wgVmFsaWRhdGVHZW5QYXRocyhDb250ZXh0
ICpjb250ZXh0LCBHTHNpemVpIHJhbmdlKTsKK2Jvb2wgVmFsaWRhdGVEZWxldGVQYXRocyhDb250
ZXh0ICpjb250ZXh0LCBHTHVpbnQgZmlyc3QsIEdMc2l6ZWkgcmFuZ2UpOworYm9vbCBWYWxpZGF0
ZVBhdGhDb21tYW5kcyhDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1Db21t
YW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSAqY29tbWFuZHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29vcmRzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gY29vcmRUeXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB2b2lkICpjb29yZHMpOworYm9vbCBWYWxpZGF0ZVNldFBhdGhQYXJhbWV0ZXIo
Q29udGV4dCAqY29udGV4dCwgR0x1aW50IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCB2YWx1
ZSk7Citib29sIFZhbGlkYXRlR2V0UGF0aFBhcmFtZXRlcihDb250ZXh0ICpjb250ZXh0LCBHTHVp
bnQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICp2YWx1ZSk7Citib29sIFZhbGlkYXRlUGF0
aFN0ZW5jaWxGdW5jKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdM
dWludCBtYXNrKTsKK2Jvb2wgVmFsaWRhdGVTdGVuY2lsRmlsbFBhdGgoQ29udGV4dCAqY29udGV4
dCwgR0x1aW50IHBhdGgsIEdMZW51bSBmaWxsTW9kZSwgR0x1aW50IG1hc2spOworYm9vbCBWYWxp
ZGF0ZVN0ZW5jaWxTdHJva2VQYXRoKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBwYXRoLCBHTGlu
dCByZWZlcmVuY2UsIEdMdWludCBtYXNrKTsKK2Jvb2wgVmFsaWRhdGVDb3ZlclBhdGgoQ29udGV4
dCAqY29udGV4dCwgR0x1aW50IHBhdGgsIEdMZW51bSBjb3Zlck1vZGUpOworYm9vbCBWYWxpZGF0
ZVN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSk7Citib29sIFZhbGlkYXRlU3RlbmNpbFRo
ZW5Db3ZlclN0cm9rZVBhdGgoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSk7Citib29sIFZhbGlkYXRlSXNQYXRoKENv
bnRleHQgKmNvbnRleHQpOworYm9vbCBWYWxpZGF0ZUNvdmVyRmlsbFBhdGhJbnN0YW5jZWQoQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgbnVtUGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cGF0aE5hbWVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dm9pZCAqcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
cGF0aEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292
ZXJNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5z
Zm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOworYm9vbCBWYWxpZGF0ZUNvdmVyU3Ryb2tlUGF0aEluc3Rh
bmNlZChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIG51bVBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB2b2lkICpwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gY292ZXJNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKK2Jvb2wgVmFsaWRh
dGVTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWQoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1QYXRocywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQkFzZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVl
cyk7Citib29sIFZhbGlkYXRlU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWQoQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51
bVBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
YXRoTmFtZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgdm9pZCAqcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IHBhdGhCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IHJlZmVyZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOworYm9vbCBWYWxpZGF0ZVN0ZW5j
aWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bVBhdGhzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0
aE5hbWVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICpwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3Jt
VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKK2Jvb2wgVmFsaWRhdGVTdGVuY2lsVGhlbkNv
dmVyU3Ryb2tlUGF0aEluc3RhbmNlZChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0aHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhO
YW1lVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICpwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKK2Jvb2wgVmFsaWRhdGVC
aW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKTsKK2Jvb2wgVmFsaWRh
dGVQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW4oQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZ2VuTW9kZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY29tcG9uZW50cywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqY29l
ZmZzKTsKKworYm9vbCBWYWxpZGF0ZUNvcHlUZXh0dXJlQ0hST01JVU0oQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzb3VyY2VJZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBkZXN0SWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0VHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBhY2tGbGlwWSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFja1VubXVsdGlwbHlBbHBo
YSk7Citib29sIFZhbGlkYXRlQ29weVN1YlRleHR1cmVDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNvdXJjZUlkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGRlc3RJZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
dW5wYWNrRmxpcFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xl
YW4gdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMYm9vbGVhbiB1bnBhY2tVbm11bHRpcGx5QWxwaGEpOworYm9vbCBWYWxpZGF0ZUNv
bXByZXNzZWRDb3B5VGV4dHVyZUNIUk9NSVVNKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBzb3Vy
Y2VJZCwgR0x1aW50IGRlc3RJZCk7CisKK2Jvb2wgVmFsaWRhdGVDcmVhdGVTaGFkZXIoQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHR5cGUpOworYm9vbCBWYWxpZGF0ZUJ1ZmZlckRhdGEoVmFsaWRh
dGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplLAorICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHVzYWdlKTsKK2Jvb2wgVmFsaWRhdGVCdWZmZXJTdWJEYXRhKFZhbGlkYXRpb25D
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMdm9pZCAqZGF0YSk7CisKK2Jvb2wgVmFsaWRhdGVFbmFibGVFeHRlbnNp
b25BTkdMRShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xjaGFyICpuYW1lKTsK
KworYm9vbCBWYWxpZGF0ZUFjdGl2ZVRleHR1cmUoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQs
IEdMZW51bSB0ZXh0dXJlKTsKK2Jvb2wgVmFsaWRhdGVBdHRhY2hTaGFkZXIoVmFsaWRhdGlvbkNv
bnRleHQgKmNvbnRleHQsIEdMdWludCBwcm9ncmFtLCBHTHVpbnQgc2hhZGVyKTsKKwogfSAgLy8g
bmFtZXNwYWNlIGdsCiAKICNlbmRpZiAvLyBMSUJBTkdMRV9WQUxJREFUSU9OX0VTMl9IXwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxp
ZGF0aW9uRVMzLmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03LDYg
KzcsNyBAQAogLy8gdmFsaWRhdGlvbkVTMy5jcHA6IFZhbGlkYXRpb24gZnVuY3Rpb25zIGZvciBP
cGVuR0wgRVMgMy4wIGVudHJ5IHBvaW50IHBhcmFtZXRlcnMKIAogI2luY2x1ZGUgImxpYkFOR0xF
L3ZhbGlkYXRpb25FUzMuaCIKKwogI2luY2x1ZGUgImxpYkFOR0xFL3ZhbGlkYXRpb25FUy5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHQuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9UZXh0dXJl
LmgiCkBAIC0xOCwxODggKzE5LDExIEBACiAjaW5jbHVkZSAiY29tbW9uL21hdGh1dGlsLmgiCiAj
aW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5oIgogCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisK
IG5hbWVzcGFjZSBnbAogewogCi1zdHJ1Y3QgRVMzRm9ybWF0Q29tYmluYXRpb24KLXsKLSAgICBH
TGVudW0gaW50ZXJuYWxGb3JtYXQ7Ci0gICAgR0xlbnVtIGZvcm1hdDsKLSAgICBHTGVudW0gdHlw
ZTsKLX07Ci0KLWJvb2wgb3BlcmF0b3I8KGNvbnN0IEVTM0Zvcm1hdENvbWJpbmF0aW9uJiBhLCBj
b25zdCBFUzNGb3JtYXRDb21iaW5hdGlvbiYgYikKLXsKLSAgICByZXR1cm4gbWVtY21wKCZhLCAm
Yiwgc2l6ZW9mKEVTM0Zvcm1hdENvbWJpbmF0aW9uKSkgPCAwOwotfQotCi10eXBlZGVmIHN0ZDo6
c2V0PEVTM0Zvcm1hdENvbWJpbmF0aW9uPiBFUzNGb3JtYXRDb21iaW5hdGlvblNldDsKLQotc3Rh
dGljIGlubGluZSB2b2lkIEluc2VydEVTM0Zvcm1hdENvbWJvKEVTM0Zvcm1hdENvbWJpbmF0aW9u
U2V0ICpzZXQsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5
cGUpCi17Ci0gICAgRVMzRm9ybWF0Q29tYmluYXRpb24gaW5mbzsKLSAgICBpbmZvLmludGVybmFs
Rm9ybWF0ID0gaW50ZXJuYWxGb3JtYXQ7Ci0gICAgaW5mby5mb3JtYXQgPSBmb3JtYXQ7Ci0gICAg
aW5mby50eXBlID0gdHlwZTsKLSAgICBzZXQtPmluc2VydChpbmZvKTsKLX0KLQotRVMzRm9ybWF0
Q29tYmluYXRpb25TZXQmIEJ1aWxkRVMzRm9ybWF0U2V0KCkKLXsKLSAgICBhdXRvJiBzZXQgPSAq
bmV3IEVTM0Zvcm1hdENvbWJpbmF0aW9uU2V0OwotCi0gICAgLy8gRm9ybWF0IGNvbWJpbmF0aW9u
cyBmcm9tIEVTIDMuMC4xIHNwZWMsIHRhYmxlIDMuMgotCi0gICAgLy8gICAgICAgICAgICAgICAg
ICAgICAgICB8IEludGVybmFsIGZvcm1hdCAgICAgIHwgRm9ybWF0ICAgICAgICAgICAgfCBUeXBl
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAvLyAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQs
IEdMX1JHQkE4LCAgICAgICAgICAgICAgR0xfUkdCQSwgICAgICAgICAgICBHTF9VTlNJR05FRF9C
WVRFICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdM
X1JHQjVfQTEsICAgICAgICAgICAgR0xfUkdCQSwgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRF
ICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JH
QkE0LCAgICAgICAgICAgICAgR0xfUkdCQSwgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFICAg
ICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1NSR0I4
X0FMUEhBOCwgICAgICAgR0xfUkdCQSwgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFICAgICAg
ICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JHQkE4X1NO
T1JNLCAgICAgICAgR0xfUkdCQSwgICAgICAgICAgICBHTF9CWVRFICAgICAgICAgICAgICAgICAg
ICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JHQkE0LCAgICAg
ICAgICAgICAgR0xfUkdCQSwgICAgICAgICAgICBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80ICAg
ICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JHQjEwX0EyLCAgICAg
ICAgICAgR0xfUkdCQSwgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYg
ICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JHQjVfQTEsICAgICAgICAg
ICAgR0xfUkdCQSwgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYgICAp
OwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JHQjVfQTEsICAgICAgICAgICAg
R0xfUkdCQSwgICAgICAgICAgICBHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xICAgICAgICApOwot
ICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JHQkExNkYsICAgICAgICAgICAgR0xf
UkdCQSwgICAgICAgICAgICBHTF9IQUxGX0ZMT0FUICAgICAgICAgICAgICAgICAgICApOwotICAg
IEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JHQkExNkYsICAgICAgICAgICAgR0xfUkdC
QSwgICAgICAgICAgICBHTF9IQUxGX0ZMT0FUX09FUyAgICAgICAgICAgICAgICApOwotICAgIElu
c2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JHQkEzMkYsICAgICAgICAgICAgR0xfUkdCQSwg
ICAgICAgICAgICBHTF9GTE9BVCAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2Vy
dEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JHQkExNkYsICAgICAgICAgICAgR0xfUkdCQSwgICAg
ICAgICAgICBHTF9GTE9BVCAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVT
M0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JHQkE4VUksICAgICAgICAgICAgR0xfUkdCQV9JTlRFR0VS
LCAgICBHTF9VTlNJR05FRF9CWVRFICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zv
cm1hdENvbWJvKCZzZXQsIEdMX1JHQkE4SSwgICAgICAgICAgICAgR0xfUkdCQV9JTlRFR0VSLCAg
ICBHTF9CWVRFICAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1h
dENvbWJvKCZzZXQsIEdMX1JHQkExNlVJLCAgICAgICAgICAgR0xfUkdCQV9JTlRFR0VSLCAgICBH
TF9VTlNJR05FRF9TSE9SVCAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENv
bWJvKCZzZXQsIEdMX1JHQkExNkksICAgICAgICAgICAgR0xfUkdCQV9JTlRFR0VSLCAgICBHTF9T
SE9SVCAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJv
KCZzZXQsIEdMX1JHQkEzMlVJLCAgICAgICAgICAgR0xfUkdCQV9JTlRFR0VSLCAgICBHTF9VTlNJ
R05FRF9JTlQgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZz
ZXQsIEdMX1JHQkEzMkksICAgICAgICAgICAgR0xfUkdCQV9JTlRFR0VSLCAgICBHTF9JTlQgICAg
ICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQs
IEdMX1JHQjEwX0EyVUksICAgICAgICAgR0xfUkdCQV9JTlRFR0VSLCAgICBHTF9VTlNJR05FRF9J
TlRfMl8xMF8xMF8xMF9SRVYgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdM
X1JHQjgsICAgICAgICAgICAgICAgR0xfUkdCLCAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRF
ICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JH
QjU2NSwgICAgICAgICAgICAgR0xfUkdCLCAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFICAg
ICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1NSR0I4
LCAgICAgICAgICAgICAgR0xfUkdCLCAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFICAgICAg
ICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JHQjhfU05P
Uk0sICAgICAgICAgR0xfUkdCLCAgICAgICAgICAgICBHTF9CWVRFICAgICAgICAgICAgICAgICAg
ICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JHQjU2NSwgICAg
ICAgICAgICAgR0xfUkdCLCAgICAgICAgICAgICBHTF9VTlNJR05FRF9TSE9SVF81XzZfNSAgICAg
ICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1IxMUZfRzExRl9CMTBG
LCAgICAgR0xfUkdCLCAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVW
ICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JHQjlfRTUsICAgICAgICAg
ICAgR0xfUkdCLCAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlRfNV85XzlfOV9SRVYgICAgICAp
OwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JHQjE2RiwgICAgICAgICAgICAg
R0xfUkdCLCAgICAgICAgICAgICBHTF9IQUxGX0ZMT0FUICAgICAgICAgICAgICAgICAgICApOwot
ICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JHQjE2RiwgICAgICAgICAgICAgR0xf
UkdCLCAgICAgICAgICAgICBHTF9IQUxGX0ZMT0FUX09FUyAgICAgICAgICAgICAgICApOwotICAg
IEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1IxMUZfRzExRl9CMTBGLCAgICAgR0xfUkdC
LCAgICAgICAgICAgICBHTF9IQUxGX0ZMT0FUICAgICAgICAgICAgICAgICAgICApOwotICAgIElu
c2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1IxMUZfRzExRl9CMTBGLCAgICAgR0xfUkdCLCAg
ICAgICAgICAgICBHTF9IQUxGX0ZMT0FUX09FUyAgICAgICAgICAgICAgICApOwotICAgIEluc2Vy
dEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JHQjlfRTUsICAgICAgICAgICAgR0xfUkdCLCAgICAg
ICAgICAgICBHTF9IQUxGX0ZMT0FUICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVT
M0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JHQjlfRTUsICAgICAgICAgICAgR0xfUkdCLCAgICAgICAg
ICAgICBHTF9IQUxGX0ZMT0FUX09FUyAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zv
cm1hdENvbWJvKCZzZXQsIEdMX1JHQjMyRiwgICAgICAgICAgICAgR0xfUkdCLCAgICAgICAgICAg
ICBHTF9GTE9BVCAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1h
dENvbWJvKCZzZXQsIEdMX1JHQjE2RiwgICAgICAgICAgICAgR0xfUkdCLCAgICAgICAgICAgICBH
TF9GTE9BVCAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENv
bWJvKCZzZXQsIEdMX1IxMUZfRzExRl9CMTBGLCAgICAgR0xfUkdCLCAgICAgICAgICAgICBHTF9G
TE9BVCAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJv
KCZzZXQsIEdMX1JHQjlfRTUsICAgICAgICAgICAgR0xfUkdCLCAgICAgICAgICAgICBHTF9GTE9B
VCAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZz
ZXQsIEdMX1JHQjhVSSwgICAgICAgICAgICAgR0xfUkdCX0lOVEVHRVIsICAgICBHTF9VTlNJR05F
RF9CWVRFICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQs
IEdMX1JHQjhJLCAgICAgICAgICAgICAgR0xfUkdCX0lOVEVHRVIsICAgICBHTF9CWVRFICAgICAg
ICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdM
X1JHQjE2VUksICAgICAgICAgICAgR0xfUkdCX0lOVEVHRVIsICAgICBHTF9VTlNJR05FRF9TSE9S
VCAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JH
QjE2SSwgICAgICAgICAgICAgR0xfUkdCX0lOVEVHRVIsICAgICBHTF9TSE9SVCAgICAgICAgICAg
ICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JHQjMy
VUksICAgICAgICAgICAgR0xfUkdCX0lOVEVHRVIsICAgICBHTF9VTlNJR05FRF9JTlQgICAgICAg
ICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JHQjMySSwg
ICAgICAgICAgICAgR0xfUkdCX0lOVEVHRVIsICAgICBHTF9JTlQgICAgICAgICAgICAgICAgICAg
ICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JHOCwgICAgICAg
ICAgICAgICAgR0xfUkcsICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFICAgICAgICAgICAg
ICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JHOF9TTk9STSwgICAg
ICAgICAgR0xfUkcsICAgICAgICAgICAgICBHTF9CWVRFICAgICAgICAgICAgICAgICAgICAgICAg
ICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JHMTZGLCAgICAgICAgICAg
ICAgR0xfUkcsICAgICAgICAgICAgICBHTF9IQUxGX0ZMT0FUICAgICAgICAgICAgICAgICAgICAp
OwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JHMTZGLCAgICAgICAgICAgICAg
R0xfUkcsICAgICAgICAgICAgICBHTF9IQUxGX0ZMT0FUX09FUyAgICAgICAgICAgICAgICApOwot
ICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JHMzJGLCAgICAgICAgICAgICAgR0xf
UkcsICAgICAgICAgICAgICBHTF9GTE9BVCAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAg
IEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JHMTZGLCAgICAgICAgICAgICAgR0xfUkcs
ICAgICAgICAgICAgICBHTF9GTE9BVCAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIElu
c2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JHOFVJLCAgICAgICAgICAgICAgR0xfUkdfSU5U
RUdFUiwgICAgICBHTF9VTlNJR05FRF9CWVRFICAgICAgICAgICAgICAgICApOwotICAgIEluc2Vy
dEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JHOEksICAgICAgICAgICAgICAgR0xfUkdfSU5URUdF
UiwgICAgICBHTF9CWVRFICAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVT
M0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JHMTZVSSwgICAgICAgICAgICAgR0xfUkdfSU5URUdFUiwg
ICAgICBHTF9VTlNJR05FRF9TSE9SVCAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zv
cm1hdENvbWJvKCZzZXQsIEdMX1JHMTZJLCAgICAgICAgICAgICAgR0xfUkdfSU5URUdFUiwgICAg
ICBHTF9TSE9SVCAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1h
dENvbWJvKCZzZXQsIEdMX1JHMzJVSSwgICAgICAgICAgICAgR0xfUkdfSU5URUdFUiwgICAgICBH
TF9VTlNJR05FRF9JTlQgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENv
bWJvKCZzZXQsIEdMX1JHMzJJLCAgICAgICAgICAgICAgR0xfUkdfSU5URUdFUiwgICAgICBHTF9J
TlQgICAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJv
KCZzZXQsIEdMX1I4LCAgICAgICAgICAgICAgICAgR0xfUkVELCAgICAgICAgICAgICBHTF9VTlNJ
R05FRF9CWVRFICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZz
ZXQsIEdMX1I4X1NOT1JNLCAgICAgICAgICAgR0xfUkVELCAgICAgICAgICAgICBHTF9CWVRFICAg
ICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQs
IEdMX1IxNkYsICAgICAgICAgICAgICAgR0xfUkVELCAgICAgICAgICAgICBHTF9IQUxGX0ZMT0FU
ICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdM
X1IxNkYsICAgICAgICAgICAgICAgR0xfUkVELCAgICAgICAgICAgICBHTF9IQUxGX0ZMT0FUX09F
UyAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1Iz
MkYsICAgICAgICAgICAgICAgR0xfUkVELCAgICAgICAgICAgICBHTF9GTE9BVCAgICAgICAgICAg
ICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1IxNkYs
ICAgICAgICAgICAgICAgR0xfUkVELCAgICAgICAgICAgICBHTF9GTE9BVCAgICAgICAgICAgICAg
ICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1I4VUksICAg
ICAgICAgICAgICAgR0xfUkVEX0lOVEVHRVIsICAgICBHTF9VTlNJR05FRF9CWVRFICAgICAgICAg
ICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1I4SSwgICAgICAg
ICAgICAgICAgR0xfUkVEX0lOVEVHRVIsICAgICBHTF9CWVRFICAgICAgICAgICAgICAgICAgICAg
ICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1IxNlVJLCAgICAgICAg
ICAgICAgR0xfUkVEX0lOVEVHRVIsICAgICBHTF9VTlNJR05FRF9TSE9SVCAgICAgICAgICAgICAg
ICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1IxNkksICAgICAgICAgICAg
ICAgR0xfUkVEX0lOVEVHRVIsICAgICBHTF9TSE9SVCAgICAgICAgICAgICAgICAgICAgICAgICAp
OwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1IzMlVJLCAgICAgICAgICAgICAg
R0xfUkVEX0lOVEVHRVIsICAgICBHTF9VTlNJR05FRF9JTlQgICAgICAgICAgICAgICAgICApOwot
ICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1IzMkksICAgICAgICAgICAgICAgR0xf
UkVEX0lOVEVHRVIsICAgICBHTF9JTlQgICAgICAgICAgICAgICAgICAgICAgICAgICApOwotCi0g
ICAgLy8gVW5zaXplZCBmb3JtYXRzCi0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xf
UkdCQSwgICAgICAgICAgICAgICBHTF9SR0JBLCAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUg
ICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkdC
QSwgICAgICAgICAgICAgICBHTF9SR0JBLCAgICAgICAgICAgIEdMX1VOU0lHTkVEX1NIT1JUXzRf
NF80XzQgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkdCQSwg
ICAgICAgICAgICAgICBHTF9SR0JBLCAgICAgICAgICAgIEdMX1VOU0lHTkVEX1NIT1JUXzVfNV81
XzEgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkdCLCAgICAg
ICAgICAgICAgICBHTF9SR0IsICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUgICAgICAgICAg
ICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkdCLCAgICAgICAg
ICAgICAgICBHTF9SR0IsICAgICAgICAgICAgIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81ICAgICAg
ICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfTFVNSU5BTkNFX0FMUEhB
LCAgICBHTF9MVU1JTkFOQ0VfQUxQSEEsIEdMX1VOU0lHTkVEX0JZVEUgICAgICAgICAgICAgICAg
ICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfTFVNSU5BTkNFLCAgICAgICAg
ICBHTF9MVU1JTkFOQ0UsICAgICAgIEdMX1VOU0lHTkVEX0JZVEUgICAgICAgICAgICAgICAgICk7
Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfQUxQSEEsICAgICAgICAgICAgICBH
TF9BTFBIQSwgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUgICAgICAgICAgICAgICAgICk7Ci0g
ICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfU1JHQl9BTFBIQV9FWFQsICAgICBHTF9T
UkdCX0FMUEhBX0VYVCwgIEdMX1VOU0lHTkVEX0JZVEUgICAgICAgICAgICAgICAgICk7Ci0gICAg
SW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfU1JHQl9FWFQsICAgICAgICAgICBHTF9TUkdC
X0VYVCwgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5z
ZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkcsICAgICAgICAgICAgICAgICBHTF9SRywgICAg
ICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0
RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkcsICAgICAgICAgICAgICAgICBHTF9SRywgICAgICAg
ICAgICAgIEdMX0ZMT0FUICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMz
Rm9ybWF0Q29tYm8oJnNldCwgR0xfUkcsICAgICAgICAgICAgICAgICBHTF9SRywgICAgICAgICAg
ICAgIEdMX0hBTEZfRkxPQVQgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9y
bWF0Q29tYm8oJnNldCwgR0xfUkcsICAgICAgICAgICAgICAgICBHTF9SRywgICAgICAgICAgICAg
IEdMX0hBTEZfRkxPQVRfT0VTICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0
Q29tYm8oJnNldCwgR0xfUkVELCAgICAgICAgICAgICAgICBHTF9SRUQsICAgICAgICAgICAgIEdM
X1VOU0lHTkVEX0JZVEUgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29t
Ym8oJnNldCwgR0xfUkVELCAgICAgICAgICAgICAgICBHTF9SRUQsICAgICAgICAgICAgIEdMX0ZM
T0FUICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8o
JnNldCwgR0xfUkVELCAgICAgICAgICAgICAgICBHTF9SRUQsICAgICAgICAgICAgIEdMX0hBTEZf
RkxPQVQgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNl
dCwgR0xfUkVELCAgICAgICAgICAgICAgICBHTF9SRUQsICAgICAgICAgICAgIEdMX0hBTEZfRkxP
QVRfT0VTICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwg
R0xfREVQVEhfU1RFTkNJTCwgICAgICBHTF9ERVBUSF9TVEVOQ0lMLCAgIEdMX1VOU0lHTkVEX0lO
VF8yNF84ICAgICAgICAgICAgICk7Ci0KLSAgICAvLyBEZXB0aCBzdGVuY2lsIGZvcm1hdHMKLSAg
ICBJbnNlcnRFUzNGb3JtYXRDb21ibygmc2V0LCBHTF9ERVBUSF9DT01QT05FTlQxNiwgIEdMX0RF
UFRIX0NPTVBPTkVOVCwgR0xfVU5TSUdORURfU0hPUlQgICAgICAgICAgICAgICAgKTsKLSAgICBJ
bnNlcnRFUzNGb3JtYXRDb21ibygmc2V0LCBHTF9ERVBUSF9DT01QT05FTlQyNCwgIEdMX0RFUFRI
X0NPTVBPTkVOVCwgR0xfVU5TSUdORURfSU5UICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNl
cnRFUzNGb3JtYXRDb21ibygmc2V0LCBHTF9ERVBUSF9DT01QT05FTlQxNiwgIEdMX0RFUFRIX0NP
TVBPTkVOVCwgR0xfVU5TSUdORURfSU5UICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRF
UzNGb3JtYXRDb21ibygmc2V0LCBHTF9ERVBUSF9DT01QT05FTlQzMkYsIEdMX0RFUFRIX0NPTVBP
TkVOVCwgR0xfRkxPQVQgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRFUzNG
b3JtYXRDb21ibygmc2V0LCBHTF9ERVBUSDI0X1NURU5DSUw4LCAgIEdMX0RFUFRIX1NURU5DSUws
ICAgR0xfVU5TSUdORURfSU5UXzI0XzggICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRFUzNGb3Jt
YXRDb21ibygmc2V0LCBHTF9ERVBUSDMyRl9TVEVOQ0lMOCwgIEdMX0RFUFRIX1NURU5DSUwsICAg
R0xfRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWKTsKLQotICAgIC8vIEZyb20gR0xfRVhU
X3NSR0IKLSAgICBJbnNlcnRFUzNGb3JtYXRDb21ibygmc2V0LCBHTF9TUkdCOF9BTFBIQThfRVhU
LCAgIEdMX1NSR0JfQUxQSEFfRVhULCBHTF9VTlNJR05FRF9CWVRFICAgICAgICAgICAgICAgICAg
KTsKLSAgICBJbnNlcnRFUzNGb3JtYXRDb21ibygmc2V0LCBHTF9TUkdCOCwgICAgICAgICAgICAg
IEdMX1NSR0JfRVhULCAgICAgICBHTF9VTlNJR05FRF9CWVRFICAgICAgICAgICAgICAgICAgKTsK
LQotICAgIC8vIEZyb20gR0xfT0VTX3RleHR1cmVfZmxvYXQKLSAgICBJbnNlcnRFUzNGb3JtYXRD
b21ibygmc2V0LCBHTF9SR0JBLCAgICAgICAgICAgICAgIEdMX1JHQkEsICAgICAgICAgICAgR0xf
RkxPQVQgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRFUzNGb3JtYXRDb21i
bygmc2V0LCBHTF9SR0IsICAgICAgICAgICAgICAgIEdMX1JHQiwgICAgICAgICAgICAgR0xfRkxP
QVQgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRFUzNGb3JtYXRDb21ibygm
c2V0LCBHTF9MVU1JTkFOQ0VfQUxQSEEsICAgIEdMX0xVTUlOQU5DRV9BTFBIQSwgR0xfRkxPQVQg
ICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRFUzNGb3JtYXRDb21ibygmc2V0
LCBHTF9MVU1JTkFOQ0UsICAgICAgICAgIEdMX0xVTUlOQU5DRSwgICAgICAgR0xfRkxPQVQgICAg
ICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRFUzNGb3JtYXRDb21ibygmc2V0LCBH
TF9BTFBIQSwgICAgICAgICAgICAgIEdMX0FMUEhBLCAgICAgICAgICAgR0xfRkxPQVQgICAgICAg
ICAgICAgICAgICAgICAgICAgKTsKLQotICAgIC8vIEZyb20gR0xfT0VTX3RleHR1cmVfaGFsZl9m
bG9hdAotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX0xVTUlOQU5DRV9BTFBIQSwg
ICAgR0xfTFVNSU5BTkNFX0FMUEhBLCBHTF9IQUxGX0ZMT0FUICAgICAgICAgICAgICAgICAgICAp
OwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX0xVTUlOQU5DRV9BTFBIQSwgICAg
R0xfTFVNSU5BTkNFX0FMUEhBLCBHTF9IQUxGX0ZMT0FUX09FUyAgICAgICAgICAgICAgICApOwot
ICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX0xVTUlOQU5DRSwgICAgICAgICAgR0xf
TFVNSU5BTkNFLCAgICAgICBHTF9IQUxGX0ZMT0FUICAgICAgICAgICAgICAgICAgICApOwotICAg
IEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX0xVTUlOQU5DRSwgICAgICAgICAgR0xfTFVN
SU5BTkNFLCAgICAgICBHTF9IQUxGX0ZMT0FUX09FUyAgICAgICAgICAgICAgICApOwotICAgIElu
c2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX0FMUEhBLCAgICAgICAgICAgICAgR0xfQUxQSEEs
ICAgICAgICAgICBHTF9IQUxGX0ZMT0FUICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2Vy
dEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX0FMUEhBLCAgICAgICAgICAgICAgR0xfQUxQSEEsICAg
ICAgICAgICBHTF9IQUxGX0ZMT0FUX09FUyAgICAgICAgICAgICAgICApOwotCi0gICAgLy8gRnJv
bSBHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgKLSAgICBJbnNlcnRFUzNGb3JtYXRDb21i
bygmc2V0LCBHTF9CR1JBX0VYVCwgICAgICAgICAgIEdMX0JHUkFfRVhULCAgICAgICAgR0xfVU5T
SUdORURfQllURSAgICAgICAgICAgICAgICAgKTsKLQotICAgIC8vIEZyb20gR0xfRVhUX3RleHR1
cmVfc3RvcmFnZQotICAgIC8vICAgICAgICAgICAgICAgICAgICB8IEludGVybmFsIGZvcm1hdCAg
ICAgICAgICB8IEZvcm1hdCAgICAgICAgICAgIHwgVHlwZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8Ci0gICAgLy8gICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKLSAgICBJbnNlcnRFUzNGb3JtYXRDb21ibygmc2V0LCBHTF9BTFBIQThfRVhULCAgICAgICAg
ICAgICBHTF9BTFBIQSwgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUgICAgICAgICAgICAgICAg
ICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfTFVNSU5BTkNFOF9FWFQsICAg
ICAgICAgR0xfTFVNSU5BTkNFLCAgICAgICBHTF9VTlNJR05FRF9CWVRFICAgICAgICAgICAgICAg
ICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX0xVTUlOQU5DRThfQUxQSEE4
X0VYVCwgIEdMX0xVTUlOQU5DRV9BTFBIQSwgR0xfVU5TSUdORURfQllURSAgICAgICAgICAgICAg
ICAgKTsKLSAgICBJbnNlcnRFUzNGb3JtYXRDb21ibygmc2V0LCBHTF9BTFBIQTMyRl9FWFQsICAg
ICAgICAgICBHTF9BTFBIQSwgICAgICAgICAgIEdMX0ZMT0FUICAgICAgICAgICAgICAgICAgICAg
ICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfTFVNSU5BTkNFMzJGX0VY
VCwgICAgICAgR0xfTFVNSU5BTkNFLCAgICAgICBHTF9GTE9BVCAgICAgICAgICAgICAgICAgICAg
ICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX0xVTUlOQU5DRV9BTFBI
QTMyRl9FWFQsIEdMX0xVTUlOQU5DRV9BTFBIQSwgR0xfRkxPQVQgICAgICAgICAgICAgICAgICAg
ICAgICAgKTsKLSAgICBJbnNlcnRFUzNGb3JtYXRDb21ibygmc2V0LCBHTF9BTFBIQTE2Rl9FWFQs
ICAgICAgICAgICBHTF9BTFBIQSwgICAgICAgICAgIEdMX0hBTEZfRkxPQVQgICAgICAgICAgICAg
ICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfQUxQSEExNkZfRVhU
LCAgICAgICAgICAgR0xfQUxQSEEsICAgICAgICAgICBHTF9IQUxGX0ZMT0FUX09FUyAgICAgICAg
ICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX0xVTUlOQU5DRTE2
Rl9FWFQsICAgICAgIEdMX0xVTUlOQU5DRSwgICAgICAgR0xfSEFMRl9GTE9BVCAgICAgICAgICAg
ICAgICAgICAgKTsKLSAgICBJbnNlcnRFUzNGb3JtYXRDb21ibygmc2V0LCBHTF9MVU1JTkFOQ0Ux
NkZfRVhULCAgICAgICBHTF9MVU1JTkFOQ0UsICAgICAgIEdMX0hBTEZfRkxPQVRfT0VTICAgICAg
ICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfTFVNSU5BTkNF
X0FMUEhBMTZGX0VYVCwgR0xfTFVNSU5BTkNFX0FMUEhBLCBHTF9IQUxGX0ZMT0FUICAgICAgICAg
ICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX0xVTUlOQU5D
RV9BTFBIQTE2Rl9FWFQsIEdMX0xVTUlOQU5DRV9BTFBIQSwgR0xfSEFMRl9GTE9BVF9PRVMgICAg
ICAgICAgICAgICAgKTsKLQotICAgIC8vIEZyb20gR0xfRVhUX3RleHR1cmVfc3RvcmFnZSBhbmQg
R0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8o
JnNldCwgR0xfQkdSQThfRVhULCAgICAgICAgICAgICAgR0xfQkdSQV9FWFQsICAgICAgICBHTF9V
TlNJR05FRF9CWVRFICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJv
KCZzZXQsIEdMX0JHUkE0X0FOR0xFWCwgICAgICAgICAgIEdMX0JHUkFfRVhULCAgICAgICAgR0xf
VU5TSUdORURfU0hPUlRfNF80XzRfNF9SRVZfRVhUKTsKLSAgICBJbnNlcnRFUzNGb3JtYXRDb21i
bygmc2V0LCBHTF9CR1JBNF9BTkdMRVgsICAgICAgICAgICBHTF9CR1JBX0VYVCwgICAgICAgIEdM
X1VOU0lHTkVEX0JZVEUgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29t
Ym8oJnNldCwgR0xfQkdSNV9BMV9BTkdMRVgsICAgICAgICAgR0xfQkdSQV9FWFQsICAgICAgICBH
TF9VTlNJR05FRF9TSE9SVF8xXzVfNV81X1JFVl9FWFQpOwotICAgIEluc2VydEVTM0Zvcm1hdENv
bWJvKCZzZXQsIEdMX0JHUjVfQTFfQU5HTEVYLCAgICAgICAgIEdMX0JHUkFfRVhULCAgICAgICAg
R0xfVU5TSUdORURfQllURSAgICAgICAgICAgICAgICAgKTsKLQotICAgIC8vIEZyb20gR0xfQU5H
TEVfZGVwdGhfdGV4dHVyZQotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX0RFUFRI
X0NPTVBPTkVOVDMyX09FUywgIEdMX0RFUFRIX0NPTVBPTkVOVCwgR0xfVU5TSUdORURfSU5UXzI0
XzhfT0VTICAgICAgICAgKTsKLQotICAgIHJldHVybiBzZXQ7Ci19Ci0KIHN0YXRpYyBib29sIFZh
bGlkYXRlVGV4SW1hZ2VGb3JtYXRDb21iaW5hdGlvbihnbDo6Q29udGV4dCAqY29udGV4dCwgR0xl
bnVtIGludGVybmFsRm9ybWF0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSkKIHsKICAgICAv
LyBGb3IgaGlzdG9yaWNhbCByZWFzb25zLCBnbFRleEltYWdlMkQgYW5kIGdsVGV4SW1hZ2UzRCBw
YXNzIGluIHRoZWlyIGludGVybmFsIGZvcm1hdCBhcyBhCkBAIC0yMDcsNTUgKzMxLDIzIEBACiAg
ICAgLy8gZXJyb3IgaW5zdGVhZCBvZiBhIEdMX0lOVkFMSURfRU5VTSBlcnJvci4gQXMgdGhpcyB2
YWxpZGF0aW9uIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGluCiAgICAgLy8gdGhlIHZhbGlkYXRp
b24gY29kZXBhdGhzIGZvciBnbFRleEltYWdlMkQvM0QsIHdlIHJlY29yZCBhIEdMX0lOVkFMSURf
VkFMVUUgZXJyb3IuCiAgICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZmb3JtYXRJbmZvID0g
Z2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhpbnRlcm5hbEZvcm1hdCk7Ci0gICAgaWYgKCFmb3Jt
YXRJbmZvLnRleHR1cmVTdXBwb3J0KGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSwgY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpKSkKKyAgICBpZiAoIWZvcm1hdEluZm8udGV4dHVyZVN1cHBvcnQo
Y29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCksIGNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KSkpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X1ZBTFVFKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
VkFMVUUpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIC8vIFRoZSB0eXBl
IGFuZCBmb3JtYXQgYXJlIHZhbGlkIGlmIGFueSBzdXBwb3J0ZWQgaW50ZXJuYWwgZm9ybWF0IGhh
cyB0aGF0IHR5cGUgYW5kIGZvcm1hdAotICAgIGJvb2wgZm9ybWF0U3VwcG9ydGVkID0gZmFsc2U7
Ci0gICAgYm9vbCB0eXBlU3VwcG9ydGVkID0gZmFsc2U7Ci0KLSAgICBzdGF0aWMgY29uc3QgRVMz
Rm9ybWF0Q29tYmluYXRpb25TZXQmIGVzM0Zvcm1hdFNldCA9IEJ1aWxkRVMzRm9ybWF0U2V0KCk7
Ci0gICAgZm9yIChFUzNGb3JtYXRDb21iaW5hdGlvblNldDo6Y29uc3RfaXRlcmF0b3IgaSA9IGVz
M0Zvcm1hdFNldC5iZWdpbigpOyBpICE9IGVzM0Zvcm1hdFNldC5lbmQoKTsgaSsrKQorICAgIGlm
ICghVmFsaWRFUzNGb3JtYXQoZm9ybWF0KSB8fCAhVmFsaWRFUzNUeXBlKHR5cGUpKQogICAgIHsK
LSAgICAgICAgaWYgKGktPmZvcm1hdCA9PSBmb3JtYXQgfHwgaS0+dHlwZSA9PSB0eXBlKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJmluZm8gPSBnbDo6
R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGktPmludGVybmFsRm9ybWF0KTsKLSAgICAgICAgICAgIGJv
b2wgc3VwcG9ydGVkID0gaW5mby50ZXh0dXJlU3VwcG9ydChjb250ZXh0LT5nZXRDbGllbnRWZXJz
aW9uKCksIGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7Ci0gICAgICAgICAgICBpZiAoc3VwcG9y
dGVkICYmIGktPnR5cGUgPT0gdHlwZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0
eXBlU3VwcG9ydGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChzdXBw
b3J0ZWQgJiYgaS0+Zm9ybWF0ID09IGZvcm1hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBmb3JtYXRTdXBwb3J0ZWQgPSB0cnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICAvLyBFYXJseS1vdXQgaWYgYm90aCB0eXBlIGFuZCBmb3JtYXQgYXJlIHN1cHBvcnRlZCBub3cK
LSAgICAgICAgICAgIGlmICh0eXBlU3VwcG9ydGVkICYmIGZvcm1hdFN1cHBvcnRlZCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgIH0KLQotICAgIGlmICghdHlwZVN1cHBvcnRlZCB8fCAhZm9ybWF0U3VwcG9ydGVkKQot
ICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVN
KSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgLy8gQ2hlY2sgaWYgdGhpcyBp
cyBhIHZhbGlkIGZvcm1hdCBjb21iaW5hdGlvbiB0byBsb2FkIHRleHR1cmUgZGF0YQotICAgIEVT
M0Zvcm1hdENvbWJpbmF0aW9uIHNlYXJjaEZvcm1hdDsKLSAgICBzZWFyY2hGb3JtYXQuaW50ZXJu
YWxGb3JtYXQgPSBpbnRlcm5hbEZvcm1hdDsKLSAgICBzZWFyY2hGb3JtYXQuZm9ybWF0ID0gZm9y
bWF0OwotICAgIHNlYXJjaEZvcm1hdC50eXBlID0gdHlwZTsKLQotICAgIGlmIChlczNGb3JtYXRT
ZXQuZmluZChzZWFyY2hGb3JtYXQpID09IGVzM0Zvcm1hdFNldC5lbmQoKSkKKyAgICBpZiAoIVZh
bGlkRVMzRm9ybWF0Q29tYmluYXRpb24oZm9ybWF0LCB0eXBlLCBpbnRlcm5hbEZvcm1hdCkpCiAg
ICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0yNzcsMTIgKzY5
LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3Jk
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGltYWdlU2l6ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcGl4
ZWxzKQogewogICAgIC8vIFZhbGlkYXRlIGltYWdlIHNpemUKICAgICBpZiAoIVZhbGlkSW1hZ2VT
aXplUGFyYW1ldGVycyhjb250ZXh0LCB0YXJnZXQsIGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBkZXB0
aCwgaXNTdWJJbWFnZSkpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAt
Mjg5LDcgKzgyLDcgQEAKICAgICAvLyBWZXJpZnkgemVybyBib3JkZXIKICAgICBpZiAoYm9yZGVy
ICE9IDApCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZB
TElEX1ZBTFVFKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfVkFMVUUpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjk4LDcgKzkx
LDcgQEAKICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxHTHNpemVpPjo6bWF4KCkgLSB5b2Zm
c2V0IDwgaGVpZ2h0IHx8CiAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8R0xzaXplaT46Om1h
eCgpIC0gem9mZnNldCA8IGRlcHRoKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKQEAgLTMxMCw3ICsxMDMsNyBAQAogICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8R0x1aW50Pih3
aWR0aCkgPiAoY2Fwcy5tYXgyRFRleHR1cmVTaXplID4+IGxldmVsKSB8fAogICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8R0x1aW50PihoZWlnaHQpID4gKGNhcHMubWF4MkRUZXh0dXJlU2l6ZSA+PiBs
ZXZlbCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfQogICAgICAgICBicmVhazsKQEAgLTMyMywxMyArMTE2LDEzIEBACiAgICAgICBjYXNlIEdM
X1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWjoKICAgICAgICAgaWYgKCFpc1N1YkltYWdlICYm
IHdpZHRoICE9IGhlaWdodCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHN0YXRpY19jYXN0PEdMdWludD4od2lkdGgp
ID4gKGNhcHMubWF4Q3ViZU1hcFRleHR1cmVTaXplID4+IGxldmVsKSkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwor
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpA
QCAtMzM5LDcgKzEzMiw3IEBACiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+KGhlaWdo
dCkgPiAoY2Fwcy5tYXgzRFRleHR1cmVTaXplID4+IGxldmVsKSB8fAogICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8R0x1aW50PihkZXB0aCkgPiAoY2Fwcy5tYXgzRFRleHR1cmVTaXplID4+IGxldmVs
KSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAgICAgICAgIGJyZWFrOwpAQCAtMzQ5LDEzICsxNDIsMTMgQEAKICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PEdMdWludD4oaGVpZ2h0KSA+IChjYXBzLm1heDJEVGV4dHVyZVNpemUgPj4gbGV2ZWwp
IHx8CiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+KGRlcHRoKSA+IGNhcHMubWF4QXJy
YXlUZXh0dXJlTGF5ZXJzKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0zNjIsMjQgKzE1NSwyNSBAQAogICAgIGdsOjpUZXh0
dXJlICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGFyZ2V0VGV4dHVyZShJc0N1YmVNYXBUZXh0dXJl
VGFyZ2V0KHRhcmdldCkgPyBHTF9URVhUVVJFX0NVQkVfTUFQIDogdGFyZ2V0KTsKICAgICBpZiAo
IXRleHR1cmUpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAg
ICAgaWYgKHRleHR1cmUtPmdldEltbXV0YWJsZUZvcm1hdCgpICYmICFpc1N1YkltYWdlKQogICAg
IHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIC8vIFZhbGlkYXRl
IHRleHR1cmUgZm9ybWF0cwotICAgIEdMZW51bSBhY3R1YWxJbnRlcm5hbEZvcm1hdCA9IGlzU3Vi
SW1hZ2UgPyB0ZXh0dXJlLT5nZXRJbnRlcm5hbEZvcm1hdCh0YXJnZXQsIGxldmVsKSA6IGludGVy
bmFsZm9ybWF0OworICAgIEdMZW51bSBhY3R1YWxJbnRlcm5hbEZvcm1hdCA9CisgICAgICAgIGlz
U3ViSW1hZ2UgPyB0ZXh0dXJlLT5nZXRGb3JtYXQodGFyZ2V0LCBsZXZlbCkuYXNTaXplZCgpIDog
aW50ZXJuYWxmb3JtYXQ7CiAgICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZhY3R1YWxGb3Jt
YXRJbmZvID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhhY3R1YWxJbnRlcm5hbEZvcm1hdCk7
CiAgICAgaWYgKGlzQ29tcHJlc3NlZCkKICAgICB7CiAgICAgICAgIGlmICghYWN0dWFsRm9ybWF0
SW5mby5jb21wcmVzc2VkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcigKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKAogICAg
ICAgICAgICAgICAgIEdMX0lOVkFMSURfRU5VTSwgImludGVybmFsZm9ybWF0IGlzIG5vdCBhIHN1
cHBvcnRlZCBjb21wcmVzc2VkIGludGVybmFsIGZvcm1hdC4iKSk7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTM4NiwxOSArMTgwLDIwIEBACiAKICAgICAgICAgaWYg
KCFWYWxpZENvbXByZXNzZWRJbWFnZVNpemUoY29udGV4dCwgYWN0dWFsSW50ZXJuYWxGb3JtYXQs
IHdpZHRoLCBoZWlnaHQpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghYWN0dWFsRm9ybWF0SW5mby50
ZXh0dXJlU3VwcG9ydChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCksIGNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKSkpCisgICAgICAgIGlmICghYWN0dWFsRm9ybWF0SW5mby50ZXh0dXJlU3VwcG9y
dChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSkpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURf
RU5VTSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAodGFyZ2V0ID09IEdMX1RFWFRVUkVfM0QpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtNDExLDcgKzIw
Niw3IEBACiAKICAgICAgICAgaWYgKHRhcmdldCA9PSBHTF9URVhUVVJFXzNEICYmIChmb3JtYXQg
PT0gR0xfREVQVEhfQ09NUE9ORU5UIHx8IGZvcm1hdCA9PSBHTF9ERVBUSF9TVEVOQ0lMKSkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KICAgICB9CkBAIC00MjEsNyArMjE2LDcgQEAKICAgICB7CiAgICAgICAgIGlmIChpc0NvbXBy
ZXNzZWQgIT0gYWN0dWFsRm9ybWF0SW5mby5jb21wcmVzc2VkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwor
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCkBAIC00MzIsNyAr
MjI3LDcgQEAKIAogICAgICAgICBpZiAoeG9mZnNldCA8IDAgfHwgeW9mZnNldCA8IDAgfHwgem9m
ZnNldCA8IDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQogCkBAIC00NDAsNyArMjM1LDcgQEAKICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19s
aW1pdHM8R0xzaXplaT46Om1heCgpIC0geW9mZnNldCA8IGhlaWdodCB8fAogICAgICAgICAgICAg
c3RkOjpudW1lcmljX2xpbWl0czxHTHNpemVpPjo6bWF4KCkgLSB6b2Zmc2V0IDwgZGVwdGgpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFM
SURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCkBA
IC00NDgsNTQgKzI0MywzMiBAQAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c2l6ZV90Pih5b2Zm
c2V0ICsgaGVpZ2h0KSA+IHRleHR1cmUtPmdldEhlaWdodCh0YXJnZXQsIGxldmVsKSB8fAogICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8c2l6ZV90Pih6b2Zmc2V0ICsgZGVwdGgpID4gdGV4dHVyZS0+
Z2V0RGVwdGgodGFyZ2V0LCBsZXZlbCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KIAorICAgIGlmICghVmFsaWRJbWFnZURhdGFT
aXplKGNvbnRleHQsIHRhcmdldCwgd2lkdGgsIGhlaWdodCwgMSwgYWN0dWFsSW50ZXJuYWxGb3Jt
YXQsIHR5cGUsIHBpeGVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZVNpemUp
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIC8vIENoZWNrIGZv
ciBwaXhlbCB1bnBhY2sgYnVmZmVyIHJlbGF0ZWQgQVBJIGVycm9ycwotICAgIGdsOjpCdWZmZXIg
KnBpeGVsVW5wYWNrQnVmZmVyID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRUYXJnZXRCdWZmZXIo
R0xfUElYRUxfVU5QQUNLX0JVRkZFUik7Ci0gICAgaWYgKHBpeGVsVW5wYWNrQnVmZmVyICE9IE5V
TEwpCisgICAgZ2w6OkJ1ZmZlciAqcGl4ZWxVbnBhY2tCdWZmZXIgPSBjb250ZXh0LT5nZXRHTFN0
YXRlKCkuZ2V0VGFyZ2V0QnVmZmVyKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIpOworICAgIGlmIChw
aXhlbFVucGFja0J1ZmZlciAhPSBudWxscHRyKQogICAgIHsKLSAgICAgICAgLy8gLi4udGhlIGRh
dGEgd291bGQgYmUgdW5wYWNrZWQgZnJvbSB0aGUgYnVmZmVyIG9iamVjdCBzdWNoIHRoYXQgdGhl
IG1lbW9yeSByZWFkcyByZXF1aXJlZAotICAgICAgICAvLyB3b3VsZCBleGNlZWQgdGhlIGRhdGEg
c3RvcmUgc2l6ZS4KLSAgICAgICAgc2l6ZV90IHdpZHRoU2l6ZSA9IHN0YXRpY19jYXN0PHNpemVf
dD4od2lkdGgpOwotICAgICAgICBzaXplX3QgaGVpZ2h0U2l6ZSA9IHN0YXRpY19jYXN0PHNpemVf
dD4oaGVpZ2h0KTsKLSAgICAgICAgc2l6ZV90IGRlcHRoU2l6ZSA9IHN0YXRpY19jYXN0PHNpemVf
dD4oZGVwdGgpOwotICAgICAgICBHTGVudW0gc2l6ZWRGb3JtYXQgPSBHZXRTaXplZEludGVybmFs
Rm9ybWF0KGFjdHVhbEludGVybmFsRm9ybWF0LCB0eXBlKTsKLQotICAgICAgICBzaXplX3QgcGl4
ZWxCeXRlcyA9IHN0YXRpY19jYXN0PHNpemVfdD4oZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhz
aXplZEZvcm1hdCkucGl4ZWxCeXRlcyk7Ci0KLSAgICAgICAgaWYgKCFyeDo6SXNVbnNpZ25lZE11
bHRpcGxpY2F0aW9uU2FmZSh3aWR0aFNpemUsIGhlaWdodFNpemUpIHx8Ci0gICAgICAgICAgICAh
cng6OklzVW5zaWduZWRNdWx0aXBsaWNhdGlvblNhZmUod2lkdGhTaXplICogaGVpZ2h0U2l6ZSwg
ZGVwdGhTaXplKSB8fAotICAgICAgICAgICAgIXJ4OjpJc1Vuc2lnbmVkTXVsdGlwbGljYXRpb25T
YWZlKHdpZHRoU2l6ZSAqIGhlaWdodFNpemUgKiBkZXB0aFNpemUsIHBpeGVsQnl0ZXMpKQotICAg
ICAgICB7Ci0gICAgICAgICAgICAvLyBPdmVyZmxvdyBwYXN0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZl
cgotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAg
IGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZv
cm1hdEluZm8oc2l6ZWRGb3JtYXQpOwotICAgICAgICBzaXplX3QgY29weUJ5dGVzID0gZm9ybWF0
SW5mby5jb21wdXRlQmxvY2tTaXplKHR5cGUsIHdpZHRoLCBoZWlnaHQpOwotICAgICAgICBzaXpl
X3Qgb2Zmc2V0ID0gcmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KHBpeGVscyk7Ci0KLSAgICAgICAg
aWYgKCFyeDo6SXNVbnNpZ25lZEFkZGl0aW9uU2FmZShvZmZzZXQsIGNvcHlCeXRlcykgfHwKLSAg
ICAgICAgICAgICgob2Zmc2V0ICsgY29weUJ5dGVzKSA+IHN0YXRpY19jYXN0PHNpemVfdD4ocGl4
ZWxVbnBhY2tCdWZmZXItPmdldFNpemUoKSkpKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBP
dmVyZmxvdyBwYXN0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlcgotICAgICAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgfQotCiAgICAgICAgIC8vIC4uLmRhdGEgaXMgbm90IGV2ZW5s
eSBkaXZpc2libGUgaW50byB0aGUgbnVtYmVyIG9mIGJ5dGVzIG5lZWRlZCB0byBzdG9yZSBpbiBt
ZW1vcnkgYSBkYXR1bQogICAgICAgICAvLyBpbmRpY2F0ZWQgYnkgdHlwZS4KICAgICAgICAgaWYg
KCFpc0NvbXByZXNzZWQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgICAg
ICAgICAgICA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihwaXhlbHMpOwogICAgICAgICAgICAg
c2l6ZV90IGRhdGFCeXRlc1BlclBpeGVsID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihnbDo6R2V0VHlw
ZUluZm8odHlwZSkuYnl0ZXMpOwogCiAgICAgICAgICAgICBpZiAoKG9mZnNldCAlIGRhdGFCeXRl
c1BlclBpeGVsKSAhPSAwKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAiUmVhZHMgd291bGQgb3ZlcmZsb3cgdGhlIHBpeGVsIHVucGFjayBi
dWZmZXIuIikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQpAQCAtNTAzLDcgKzI3Niw3IEBACiAgICAgICAgIC8vIC4uLnRoZSBidWZmZXIg
b2JqZWN0J3MgZGF0YSBzdG9yZSBpcyBjdXJyZW50bHkgbWFwcGVkLgogICAgICAgICBpZiAocGl4
ZWxVbnBhY2tCdWZmZXItPmlzTWFwcGVkKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIlBpeGVs
IHVucGFjayBidWZmZXIgaXMgbWFwcGVkLiIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQogICAgIH0KQEAgLTUyNiwxNyArMjk5LDE4IEBACiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYm9yZGVyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBpbWFnZVNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0x2b2lkICpwaXhlbHMpCiB7CiAgICAgaWYgKCFWYWxpZFRleHR1cmUyRERl
c3RpbmF0aW9uVGFyZ2V0KGNvbnRleHQsIHRhcmdldCkpCiAgICAgewotICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKICAgICByZXR1cm4gVmFsaWRhdGVFUzNUZXhJbWFnZVBhcmFtZXRlcnNCYXNl
KGNvbnRleHQsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCBpc0NvbXByZXNzZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1N1YkltYWdlLCB4
b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBl
LCBwaXhlbHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBpbWFnZVNpemUsIHBpeGVscyk7CiB9CiAKIGJv
b2wgVmFsaWRhdGVFUzNUZXhJbWFnZTNEUGFyYW1ldGVycyhDb250ZXh0ICpjb250ZXh0LApAQCAt
NTU0LDExNyArMzI4LDEyNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGJvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBp
eGVscykKIHsKICAgICBpZiAoIVZhbGlkVGV4dHVyZTNERGVzdGluYXRpb25UYXJnZXQoY29udGV4
dCwgdGFyZ2V0KSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfRU5VTSkpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX0VOVU0pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHJldHVy
biBWYWxpZGF0ZUVTM1RleEltYWdlUGFyYW1ldGVyc0Jhc2UoY29udGV4dCwgdGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxmb3JtYXQsIGlzQ29tcHJlc3NlZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlzU3ViSW1hZ2UsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZz
ZXQsIHdpZHRoLCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aCwgYm9yZGVyLCBmb3JtYXQs
IHR5cGUsIGJ1ZlNpemUsIHBpeGVscyk7CiB9CiAKIHN0cnVjdCBFZmZlY3RpdmVJbnRlcm5hbEZv
cm1hdEluZm8KIHsKLSAgICBHTGVudW0gbUVmZmVjdGl2ZUZvcm1hdDsKLSAgICBHTGVudW0gbURl
c3RGb3JtYXQ7Ci0gICAgR0x1aW50IG1NaW5SZWRCaXRzOwotICAgIEdMdWludCBtTWF4UmVkQml0
czsKLSAgICBHTHVpbnQgbU1pbkdyZWVuQml0czsKLSAgICBHTHVpbnQgbU1heEdyZWVuQml0czsK
LSAgICBHTHVpbnQgbU1pbkJsdWVCaXRzOwotICAgIEdMdWludCBtTWF4Qmx1ZUJpdHM7Ci0gICAg
R0x1aW50IG1NaW5BbHBoYUJpdHM7Ci0gICAgR0x1aW50IG1NYXhBbHBoYUJpdHM7Ci0KLSAgICBF
ZmZlY3RpdmVJbnRlcm5hbEZvcm1hdEluZm8oR0xlbnVtIGVmZmVjdGl2ZUZvcm1hdCwgR0xlbnVt
IGRlc3RGb3JtYXQsIEdMdWludCBtaW5SZWRCaXRzLCBHTHVpbnQgbWF4UmVkQml0cywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1pbkdyZWVuQml0cywgR0x1aW50IG1h
eEdyZWVuQml0cywgR0x1aW50IG1pbkJsdWVCaXRzLCBHTHVpbnQgbWF4Qmx1ZUJpdHMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtaW5BbHBoYUJpdHMsIEdMdWludCBt
YXhBbHBoYUJpdHMpCi0gICAgICAgIDogbUVmZmVjdGl2ZUZvcm1hdChlZmZlY3RpdmVGb3JtYXQp
LCBtRGVzdEZvcm1hdChkZXN0Rm9ybWF0KSwgbU1pblJlZEJpdHMobWluUmVkQml0cyksCi0gICAg
ICAgICAgbU1heFJlZEJpdHMobWF4UmVkQml0cyksIG1NaW5HcmVlbkJpdHMobWluR3JlZW5CaXRz
KSwgbU1heEdyZWVuQml0cyhtYXhHcmVlbkJpdHMpLAotICAgICAgICAgIG1NaW5CbHVlQml0cyht
aW5CbHVlQml0cyksIG1NYXhCbHVlQml0cyhtYXhCbHVlQml0cyksIG1NaW5BbHBoYUJpdHMobWlu
QWxwaGFCaXRzKSwKLSAgICAgICAgICBtTWF4QWxwaGFCaXRzKG1heEFscGhhQml0cykge307Cisg
ICAgR0xlbnVtIGVmZmVjdGl2ZUZvcm1hdDsKKyAgICBHTGVudW0gZGVzdEZvcm1hdDsKKyAgICBH
THVpbnQgbWluUmVkQml0czsKKyAgICBHTHVpbnQgbWF4UmVkQml0czsKKyAgICBHTHVpbnQgbWlu
R3JlZW5CaXRzOworICAgIEdMdWludCBtYXhHcmVlbkJpdHM7CisgICAgR0x1aW50IG1pbkJsdWVC
aXRzOworICAgIEdMdWludCBtYXhCbHVlQml0czsKKyAgICBHTHVpbnQgbWluQWxwaGFCaXRzOwor
ICAgIEdMdWludCBtYXhBbHBoYUJpdHM7CiB9OwogCi10eXBlZGVmIHN0ZDo6dmVjdG9yPEVmZmVj
dGl2ZUludGVybmFsRm9ybWF0SW5mbz4gRWZmZWN0aXZlSW50ZXJuYWxGb3JtYXRMaXN0Oworc3Rh
dGljIGJvb2wgUXVlcnlFZmZlY3RpdmVGb3JtYXRMaXN0KGNvbnN0IEludGVybmFsRm9ybWF0ICZz
cmNGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBF
ZmZlY3RpdmVJbnRlcm5hbEZvcm1hdEluZm8gKmxpc3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtICpvdXRFZmZlY3RpdmVGb3JtYXQpCit7CisgICAgZm9yIChzaXplX3Qg
Y3VyRm9ybWF0ID0gMDsgY3VyRm9ybWF0IDwgc2l6ZTsgKytjdXJGb3JtYXQpCisgICAgeworICAg
ICAgICBjb25zdCBFZmZlY3RpdmVJbnRlcm5hbEZvcm1hdEluZm8gJmZvcm1hdEluZm8gPSBsaXN0
W2N1ckZvcm1hdF07CisgICAgICAgIGlmICgoZm9ybWF0SW5mby5kZXN0Rm9ybWF0ID09IHRhcmdl
dEZvcm1hdCkgJiYKKyAgICAgICAgICAgIChmb3JtYXRJbmZvLm1pblJlZEJpdHMgPD0gc3JjRm9y
bWF0LnJlZEJpdHMgJiYKKyAgICAgICAgICAgICBmb3JtYXRJbmZvLm1heFJlZEJpdHMgPj0gc3Jj
Rm9ybWF0LnJlZEJpdHMpICYmCisgICAgICAgICAgICAoZm9ybWF0SW5mby5taW5HcmVlbkJpdHMg
PD0gc3JjRm9ybWF0LmdyZWVuQml0cyAmJgorICAgICAgICAgICAgIGZvcm1hdEluZm8ubWF4R3Jl
ZW5CaXRzID49IHNyY0Zvcm1hdC5ncmVlbkJpdHMpICYmCisgICAgICAgICAgICAoZm9ybWF0SW5m
by5taW5CbHVlQml0cyA8PSBzcmNGb3JtYXQuYmx1ZUJpdHMgJiYKKyAgICAgICAgICAgICBmb3Jt
YXRJbmZvLm1heEJsdWVCaXRzID49IHNyY0Zvcm1hdC5ibHVlQml0cykgJiYKKyAgICAgICAgICAg
IChmb3JtYXRJbmZvLm1pbkFscGhhQml0cyA8PSBzcmNGb3JtYXQuYWxwaGFCaXRzICYmCisgICAg
ICAgICAgICAgZm9ybWF0SW5mby5tYXhBbHBoYUJpdHMgPj0gc3JjRm9ybWF0LmFscGhhQml0cykp
CisgICAgICAgIHsKKyAgICAgICAgICAgICpvdXRFZmZlY3RpdmVGb3JtYXQgPSBmb3JtYXRJbmZv
LmVmZmVjdGl2ZUZvcm1hdDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Cisg
ICAgfQogCi1zdGF0aWMgRWZmZWN0aXZlSW50ZXJuYWxGb3JtYXRMaXN0JiBCdWlsZFNpemVkRWZm
ZWN0aXZlSW50ZXJuYWxGb3JtYXRMaXN0KCkKKyAgICAqb3V0RWZmZWN0aXZlRm9ybWF0ID0gR0xf
Tk9ORTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgR2V0U2l6ZWRFZmZlY3RpdmVJbnRl
cm5hbEZvcm1hdEluZm8oY29uc3QgSW50ZXJuYWxGb3JtYXQgJnNyY0Zvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICpvdXRFZmZlY3RpdmVGb3Jt
YXQpCiB7Ci0gICAgYXV0byYgbGlzdCA9ICpuZXcgRWZmZWN0aXZlSW50ZXJuYWxGb3JtYXRMaXN0
OworICAgIC8vIE9wZW5HTCBFUyAzLjAuMyBTcGVjaWZpY2F0aW9uLCBUYWJsZSAzLjE3LCBwZyAx
NDE6CisgICAgLy8gRWZmZWN0aXZlIGludGVybmFsIGZvcm1hdCBjb3Jlc3BvbmRpbmcgdG8gZGVz
dGluYXRpb24gaW50ZXJuYWwgZm9ybWF0IGFuZCBsaW5lYXIgc291cmNlCisgICAgLy8gYnVmZmVy
IGNvbXBvbmVudCBzaXplcy4KKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgU291cmNlIGNoYW5uZWwgbWluL21heCBzaXplcyB8CisgICAgLy8gICBFZmZlY3Rp
dmUgSW50ZXJuYWwgRm9ybWF0ICAgfCAgTi9BICB8ICBSICAgfCAgRyAgIHwgIEIgICB8ICBBICAg
ICAgfAorICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgICBjb25zdGV4cHIgRWZmZWN0aXZlSW50
ZXJuYWxGb3JtYXRJbmZvIGxpc3RbXSA9IHsKKyAgICAgICAgeyBHTF9BTFBIQThfRVhULCAgICAg
ICAgICAgICAgR0xfTk9ORSwgMCwgIDAsIDAsICAwLCAwLCAgMCwgMSwgOCB9LAorICAgICAgICB7
IEdMX1I4LCAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLCAxLCAgOCwgMCwgIDAsIDAsICAw
LCAwLCAwIH0sCisgICAgICAgIHsgR0xfUkc4LCAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUs
IDEsICA4LCAxLCAgOCwgMCwgIDAsIDAsIDAgfSwKKyAgICAgICAgeyBHTF9SR0I1NjUsICAgICAg
ICAgICAgICAgICAgR0xfTk9ORSwgMSwgIDUsIDEsICA2LCAxLCAgNSwgMCwgMCB9LAorICAgICAg
ICB7IEdMX1JHQjgsICAgICAgICAgICAgICAgICAgICBHTF9OT05FLCA2LCAgOCwgNywgIDgsIDYs
ICA4LCAwLCAwIH0sCisgICAgICAgIHsgR0xfUkdCQTQsICAgICAgICAgICAgICAgICAgIEdMX05P
TkUsIDEsICA0LCAxLCAgNCwgMSwgIDQsIDEsIDQgfSwKKyAgICAgICAgeyBHTF9SR0I1X0ExLCAg
ICAgICAgICAgICAgICAgR0xfTk9ORSwgNSwgIDUsIDUsICA1LCA1LCAgNSwgMSwgMSB9LAorICAg
ICAgICB7IEdMX1JHQkE4LCAgICAgICAgICAgICAgICAgICBHTF9OT05FLCA1LCAgOCwgNSwgIDgs
IDUsICA4LCAyLCA4IH0sCisgICAgICAgIHsgR0xfUkdCMTBfQTIsICAgICAgICAgICAgICAgIEdM
X05PTkUsIDksIDEwLCA5LCAxMCwgOSwgMTAsIDIsIDIgfSwKKyAgICB9OworICAgIC8vIGNsYW5n
LWZvcm1hdCBvbgogCi0gICAgLy8gT3BlbkdMIEVTIDMuMC4zIFNwZWNpZmljYXRpb24sIFRhYmxl
IDMuMTcsIHBnIDE0MTogRWZmZWN0aXZlIGludGVybmFsIGZvcm1hdCBjb3Jlc3BvbmRpbmcgdG8g
ZGVzdGluYXRpb24gaW50ZXJuYWwgZm9ybWF0IGFuZAotICAgIC8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVhciBzb3VyY2UgYnVmZmVyIGNv
bXBvbmVudCBzaXplcy4KLSAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNvdXJjZSBjaGFubmVs
IG1pbi9tYXggc2l6ZXMgfAotICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFZmZlY3RpdmUgSW50ZXJuYWwgRm9ybWF0IHwgIE4vQSAgIHwgIFIgICB8ICBHICAg
fCAgQiAgIHwgIEEgICAgICB8Ci0gICAgbGlzdC5wdXNoX2JhY2soRWZmZWN0aXZlSW50ZXJuYWxG
b3JtYXRJbmZvKEdMX0FMUEhBOF9FWFQsICAgICAgICAgICAgICBHTF9OT05FLCAwLCAgMCwgMCwg
IDAsIDAsICAwLCAxLCA4KSk7Ci0gICAgbGlzdC5wdXNoX2JhY2soRWZmZWN0aXZlSW50ZXJuYWxG
b3JtYXRJbmZvKEdMX1I4LCAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLCAxLCAgOCwgMCwg
IDAsIDAsICAwLCAwLCAwKSk7Ci0gICAgbGlzdC5wdXNoX2JhY2soRWZmZWN0aXZlSW50ZXJuYWxG
b3JtYXRJbmZvKEdMX1JHOCwgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLCAxLCAgOCwgMSwg
IDgsIDAsICAwLCAwLCAwKSk7Ci0gICAgbGlzdC5wdXNoX2JhY2soRWZmZWN0aXZlSW50ZXJuYWxG
b3JtYXRJbmZvKEdMX1JHQjU2NSwgICAgICAgICAgICAgICAgICBHTF9OT05FLCAxLCAgNSwgMSwg
IDYsIDEsICA1LCAwLCAwKSk7Ci0gICAgbGlzdC5wdXNoX2JhY2soRWZmZWN0aXZlSW50ZXJuYWxG
b3JtYXRJbmZvKEdMX1JHQjgsICAgICAgICAgICAgICAgICAgICBHTF9OT05FLCA2LCAgOCwgNywg
IDgsIDYsICA4LCAwLCAwKSk7Ci0gICAgbGlzdC5wdXNoX2JhY2soRWZmZWN0aXZlSW50ZXJuYWxG
b3JtYXRJbmZvKEdMX1JHQkE0LCAgICAgICAgICAgICAgICAgICBHTF9OT05FLCAxLCAgNCwgMSwg
IDQsIDEsICA0LCAxLCA0KSk7Ci0gICAgbGlzdC5wdXNoX2JhY2soRWZmZWN0aXZlSW50ZXJuYWxG
b3JtYXRJbmZvKEdMX1JHQjVfQTEsICAgICAgICAgICAgICAgICBHTF9OT05FLCA1LCAgNSwgNSwg
IDUsIDUsICA1LCAxLCAxKSk7Ci0gICAgbGlzdC5wdXNoX2JhY2soRWZmZWN0aXZlSW50ZXJuYWxG
b3JtYXRJbmZvKEdMX1JHQkE4LCAgICAgICAgICAgICAgICAgICBHTF9OT05FLCA1LCAgOCwgNSwg
IDgsIDUsICA4LCAyLCA4KSk7Ci0gICAgbGlzdC5wdXNoX2JhY2soRWZmZWN0aXZlSW50ZXJuYWxG
b3JtYXRJbmZvKEdMX1JHQjEwX0EyLCAgICAgICAgICAgICAgICBHTF9OT05FLCA5LCAxMCwgOSwg
MTAsIDksIDEwLCAyLCAyKSk7Ci0KLSAgICByZXR1cm4gbGlzdDsKKyAgICByZXR1cm4gUXVlcnlF
ZmZlY3RpdmVGb3JtYXRMaXN0KHNyY0Zvcm1hdCwgR0xfTk9ORSwgbGlzdCwgQXJyYXlTaXplKGxp
c3QpLCBvdXRFZmZlY3RpdmVGb3JtYXQpOwogfQogCi1zdGF0aWMgRWZmZWN0aXZlSW50ZXJuYWxG
b3JtYXRMaXN0JiBCdWlsZFVuc2l6ZWRFZmZlY3RpdmVJbnRlcm5hbEZvcm1hdExpc3QoKQorYm9v
bCBHZXRVbnNpemVkRWZmZWN0aXZlSW50ZXJuYWxGb3JtYXRJbmZvKGNvbnN0IEludGVybmFsRm9y
bWF0ICZzcmNGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgSW50ZXJuYWxGb3JtYXQgJmRlc3RGb3JtYXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICpvdXRFZmZlY3RpdmVGb3JtYXQpCiB7Ci0g
ICAgYXV0byYgbGlzdCA9ICpuZXcgRWZmZWN0aXZlSW50ZXJuYWxGb3JtYXRMaXN0OworICAgIGNv
bnN0ZXhwciBHTHVpbnQgdW1heCA9IFVJTlRfTUFYOwogCi0gICAgLy8gT3BlbkdMIEVTIDMuMC4z
IFNwZWNpZmljYXRpb24sIFRhYmxlIDMuMTcsIHBnIDE0MTogRWZmZWN0aXZlIGludGVybmFsIGZv
cm1hdCBjb3Jlc3BvbmRpbmcgdG8gZGVzdGluYXRpb24gaW50ZXJuYWwgZm9ybWF0IGFuZAotICAg
IC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxp
bmVhciBzb3VyY2UgYnVmZmVyIGNvbXBvbmVudCBzaXplcy4KLSAgICAvLyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgICAgICAgIFNvdXJjZSBjaGFubmVsIG1pbi9tYXggc2l6ZXMg
ICAgICAgICAgICB8Ci0gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEVmZmVjdGl2ZSBJbnRlcm5hbCBGb3JtYXQgfCAgICBEZXN0IEZvcm1hdCAgICAgfCAgICAg
UiAgICAgfCAgICAgIEcgICAgIHwgICAgICBCICAgICB8ICAgICAgQSAgICAgfAotICAgIGxpc3Qu
cHVzaF9iYWNrKEVmZmVjdGl2ZUludGVybmFsRm9ybWF0SW5mbyhHTF9BTFBIQThfRVhULCAgICAg
ICAgICAgICAgR0xfQUxQSEEsICAgICAgICAgICAwLCBVSU5UX01BWCwgMCwgVUlOVF9NQVgsIDAs
IFVJTlRfTUFYLCAxLCAgICAgICAgOCkpOwotICAgIGxpc3QucHVzaF9iYWNrKEVmZmVjdGl2ZUlu
dGVybmFsRm9ybWF0SW5mbyhHTF9MVU1JTkFOQ0U4X0VYVCwgICAgICAgICAgR0xfTFVNSU5BTkNF
LCAgICAgICAxLCAgICAgICAgOCwgMCwgVUlOVF9NQVgsIDAsIFVJTlRfTUFYLCAwLCBVSU5UX01B
WCkpOwotICAgIGxpc3QucHVzaF9iYWNrKEVmZmVjdGl2ZUludGVybmFsRm9ybWF0SW5mbyhHTF9M
VU1JTkFOQ0U4X0FMUEhBOF9FWFQsICAgR0xfTFVNSU5BTkNFX0FMUEhBLCAxLCAgICAgICAgOCwg
MCwgVUlOVF9NQVgsIDAsIFVJTlRfTUFYLCAxLCAgICAgICAgOCkpOwotICAgIGxpc3QucHVzaF9i
YWNrKEVmZmVjdGl2ZUludGVybmFsRm9ybWF0SW5mbyhHTF9SR0I1NjUsICAgICAgICAgICAgICAg
ICAgR0xfUkdCLCAgICAgICAgICAgICAxLCAgICAgICAgNSwgMSwgICAgICAgIDYsIDEsICAgICAg
ICA1LCAwLCBVSU5UX01BWCkpOwotICAgIGxpc3QucHVzaF9iYWNrKEVmZmVjdGl2ZUludGVybmFs
Rm9ybWF0SW5mbyhHTF9SR0I4LCAgICAgICAgICAgICAgICAgICAgR0xfUkdCLCAgICAgICAgICAg
ICA2LCAgICAgICAgOCwgNywgICAgICAgIDgsIDYsICAgICAgICA4LCAwLCBVSU5UX01BWCkpOwot
ICAgIGxpc3QucHVzaF9iYWNrKEVmZmVjdGl2ZUludGVybmFsRm9ybWF0SW5mbyhHTF9SR0JBNCwg
ICAgICAgICAgICAgICAgICAgR0xfUkdCQSwgICAgICAgICAgICAxLCAgICAgICAgNCwgMSwgICAg
ICAgIDQsIDEsICAgICAgICA0LCAxLCAgICAgICAgNCkpOwotICAgIGxpc3QucHVzaF9iYWNrKEVm
ZmVjdGl2ZUludGVybmFsRm9ybWF0SW5mbyhHTF9SR0I1X0ExLCAgICAgICAgICAgICAgICAgR0xf
UkdCQSwgICAgICAgICAgICA1LCAgICAgICAgNSwgNSwgICAgICAgIDUsIDUsICAgICAgICA1LCAx
LCAgICAgICAgMSkpOwotICAgIGxpc3QucHVzaF9iYWNrKEVmZmVjdGl2ZUludGVybmFsRm9ybWF0
SW5mbyhHTF9SR0JBOCwgICAgICAgICAgICAgICAgICAgR0xfUkdCQSwgICAgICAgICAgICA1LCAg
ICAgICAgOCwgNSwgICAgICAgIDgsIDUsICAgICAgICA4LCA1LCAgICAgICAgOCkpOworICAgIC8v
IE9wZW5HTCBFUyAzLjAuMyBTcGVjaWZpY2F0aW9uLCBUYWJsZSAzLjE3LCBwZyAxNDE6CisgICAg
Ly8gRWZmZWN0aXZlIGludGVybmFsIGZvcm1hdCBjb3Jlc3BvbmRpbmcgdG8gZGVzdGluYXRpb24g
aW50ZXJuYWwgZm9ybWF0IGFuZGxpbmVhciBzb3VyY2UgYnVmZmVyCisgICAgLy8gY29tcG9uZW50
IHNpemVzLgorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIFNvdXJjZSBjaGFubmVsIG1pbi9tYXggc2l6ZXMgICB8CisgICAgLy8gICAg
IEVmZmVjdGl2ZSBJbnRlcm5hbCBGb3JtYXQgfCAgIERlc3QgRm9ybWF0ICAgICB8ICAgUiAgIHwg
ICAgRyAgIHwgICAgQiAgIHwgICAgQSAgIHwKKyAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgICAg
Y29uc3RleHByIEVmZmVjdGl2ZUludGVybmFsRm9ybWF0SW5mbyBsaXN0W10gPSB7CisgICAgICAg
IHsgR0xfQUxQSEE4X0VYVCwgICAgICAgICAgICAgR0xfQUxQSEEsICAgICAgICAgICAwLCB1bWF4
LCAwLCB1bWF4LCAwLCB1bWF4LCAxLCAgICA4IH0sCisgICAgICAgIHsgR0xfTFVNSU5BTkNFOF9F
WFQsICAgICAgICAgR0xfTFVNSU5BTkNFLCAgICAgICAxLCAgICA4LCAwLCB1bWF4LCAwLCB1bWF4
LCAwLCB1bWF4IH0sCisgICAgICAgIHsgR0xfTFVNSU5BTkNFOF9BTFBIQThfRVhULCAgR0xfTFVN
SU5BTkNFX0FMUEhBLCAxLCAgICA4LCAwLCB1bWF4LCAwLCB1bWF4LCAxLCAgICA4IH0sCisgICAg
ICAgIHsgR0xfUkdCNTY1LCAgICAgICAgICAgICAgICAgR0xfUkdCLCAgICAgICAgICAgICAxLCAg
ICA1LCAxLCAgICA2LCAxLCAgICA1LCAwLCB1bWF4IH0sCisgICAgICAgIHsgR0xfUkdCOCwgICAg
ICAgICAgICAgICAgICAgR0xfUkdCLCAgICAgICAgICAgICA2LCAgICA4LCA3LCAgICA4LCA2LCAg
ICA4LCAwLCB1bWF4IH0sCisgICAgICAgIHsgR0xfUkdCQTQsICAgICAgICAgICAgICAgICAgR0xf
UkdCQSwgICAgICAgICAgICAxLCAgICA0LCAxLCAgICA0LCAxLCAgICA0LCAxLCAgICA0IH0sCisg
ICAgICAgIHsgR0xfUkdCNV9BMSwgICAgICAgICAgICAgICAgR0xfUkdCQSwgICAgICAgICAgICA1
LCAgICA1LCA1LCAgICA1LCA1LCAgICA1LCAxLCAgICAxIH0sCisgICAgICAgIHsgR0xfUkdCQTgs
ICAgICAgICAgICAgICAgICAgR0xfUkdCQSwgICAgICAgICAgICA1LCAgICA4LCA1LCAgICA4LCA1
LCAgICA4LCA1LCAgICA4IH0sCisgICAgfTsKKyAgICAvLyBjbGFuZy1mb3JtYXQgb24KIAotICAg
IHJldHVybiBsaXN0OworICAgIHJldHVybiBRdWVyeUVmZmVjdGl2ZUZvcm1hdExpc3Qoc3JjRm9y
bWF0LCBkZXN0Rm9ybWF0LmZvcm1hdCwgbGlzdCwgQXJyYXlTaXplKGxpc3QpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0RWZmZWN0aXZlRm9ybWF0KTsKIH0KIAogc3Rh
dGljIGJvb2wgR2V0RWZmZWN0aXZlSW50ZXJuYWxGb3JtYXQoY29uc3QgSW50ZXJuYWxGb3JtYXQg
JnNyY0Zvcm1hdCwgY29uc3QgSW50ZXJuYWxGb3JtYXQgJmRlc3RGb3JtYXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKm91dEVmZmVjdGl2ZUZvcm1hdCkK
IHsKLSAgICBjb25zdCBFZmZlY3RpdmVJbnRlcm5hbEZvcm1hdExpc3QgKmxpc3QgPSBOVUxMOwot
ICAgIEdMZW51bSB0YXJnZXRGb3JtYXQgPSBHTF9OT05FOwotCiAgICAgaWYgKGRlc3RGb3JtYXQu
cGl4ZWxCeXRlcyA+IDApCiAgICAgewotICAgICAgICBzdGF0aWMgY29uc3QgRWZmZWN0aXZlSW50
ZXJuYWxGb3JtYXRMaXN0JiBzaXplZExpc3QgPSBCdWlsZFNpemVkRWZmZWN0aXZlSW50ZXJuYWxG
b3JtYXRMaXN0KCk7Ci0gICAgICAgIGxpc3QgPSAmc2l6ZWRMaXN0OworICAgICAgICByZXR1cm4g
R2V0U2l6ZWRFZmZlY3RpdmVJbnRlcm5hbEZvcm1hdEluZm8oc3JjRm9ybWF0LCBvdXRFZmZlY3Rp
dmVGb3JtYXQpOwogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBzdGF0aWMgY29uc3Qg
RWZmZWN0aXZlSW50ZXJuYWxGb3JtYXRMaXN0JiB1bnNpemVkTGlzdCA9IEJ1aWxkVW5zaXplZEVm
ZmVjdGl2ZUludGVybmFsRm9ybWF0TGlzdCgpOwotICAgICAgICBsaXN0ID0gJnVuc2l6ZWRMaXN0
OwotICAgICAgICB0YXJnZXRGb3JtYXQgPSBkZXN0Rm9ybWF0LmZvcm1hdDsKKyAgICAgICAgcmV0
dXJuIEdldFVuc2l6ZWRFZmZlY3RpdmVJbnRlcm5hbEZvcm1hdEluZm8oc3JjRm9ybWF0LCBkZXN0
Rm9ybWF0LCBvdXRFZmZlY3RpdmVGb3JtYXQpOwogICAgIH0KLQotICAgIGZvciAoc2l6ZV90IGN1
ckZvcm1hdCA9IDA7IGN1ckZvcm1hdCA8IGxpc3QtPnNpemUoKTsgKytjdXJGb3JtYXQpCi0gICAg
ewotICAgICAgICBjb25zdCBFZmZlY3RpdmVJbnRlcm5hbEZvcm1hdEluZm8mIGZvcm1hdEluZm8g
PSBsaXN0LT5hdChjdXJGb3JtYXQpOwotICAgICAgICBpZiAoKGZvcm1hdEluZm8ubURlc3RGb3Jt
YXQgPT0gdGFyZ2V0Rm9ybWF0KSAmJgotICAgICAgICAgICAgKGZvcm1hdEluZm8ubU1pblJlZEJp
dHMgICA8PSBzcmNGb3JtYXQucmVkQml0cyAgICYmIGZvcm1hdEluZm8ubU1heFJlZEJpdHMgICA+
PSBzcmNGb3JtYXQucmVkQml0cykgICAmJgotICAgICAgICAgICAgKGZvcm1hdEluZm8ubU1pbkdy
ZWVuQml0cyA8PSBzcmNGb3JtYXQuZ3JlZW5CaXRzICYmIGZvcm1hdEluZm8ubU1heEdyZWVuQml0
cyA+PSBzcmNGb3JtYXQuZ3JlZW5CaXRzKSAmJgotICAgICAgICAgICAgKGZvcm1hdEluZm8ubU1p
bkJsdWVCaXRzICA8PSBzcmNGb3JtYXQuYmx1ZUJpdHMgICYmIGZvcm1hdEluZm8ubU1heEJsdWVC
aXRzICA+PSBzcmNGb3JtYXQuYmx1ZUJpdHMpICAmJgotICAgICAgICAgICAgKGZvcm1hdEluZm8u
bU1pbkFscGhhQml0cyA8PSBzcmNGb3JtYXQuYWxwaGFCaXRzICYmIGZvcm1hdEluZm8ubU1heEFs
cGhhQml0cyA+PSBzcmNGb3JtYXQuYWxwaGFCaXRzKSkKLSAgICAgICAgewotICAgICAgICAgICAg
Km91dEVmZmVjdGl2ZUZvcm1hdCA9IGZvcm1hdEluZm8ubUVmZmVjdGl2ZUZvcm1hdDsKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNl
OwogfQogCiBzdHJ1Y3QgQ29weUNvbnZlcnNpb24KQEAgLTY4Myw5ICs0NjYsOSBAQAogCiB0eXBl
ZGVmIHN0ZDo6c2V0PENvcHlDb252ZXJzaW9uPiBDb3B5Q29udmVyc2lvblNldDsKIAotc3RhdGlj
IENvcHlDb252ZXJzaW9uU2V0JiBCdWlsZFZhbGlkRVMzQ29weVRleEltYWdlQ29tYmluYXRpb25z
KCkKK3N0YXRpYyBDb3B5Q29udmVyc2lvblNldCBCdWlsZFZhbGlkRVMzQ29weVRleEltYWdlQ29t
YmluYXRpb25zKCkKIHsKLSAgICBhdXRvJiBzZXQgPSAqbmV3IENvcHlDb252ZXJzaW9uU2V0Owor
ICAgIENvcHlDb252ZXJzaW9uU2V0IHNldDsKIAogICAgIC8vIEZyb20gRVMgMy4wLjEgc3BlYywg
dGFibGUgMy4xNQogICAgIHNldC5pbnNlcnQoQ29weUNvbnZlcnNpb24oR0xfQUxQSEEsIEdMX1JH
QkEpKTsKQEAgLTcxMyw2ICs0OTYsNyBAQAogICAgIHNldC5pbnNlcnQoQ29weUNvbnZlcnNpb24o
R0xfUkcsIEdMX0JHUkFfRVhUKSk7CiAgICAgc2V0Lmluc2VydChDb3B5Q29udmVyc2lvbihHTF9S
R0IsIEdMX0JHUkFfRVhUKSk7CiAgICAgc2V0Lmluc2VydChDb3B5Q29udmVyc2lvbihHTF9SR0JB
LCBHTF9CR1JBX0VYVCkpOworICAgIHNldC5pbnNlcnQoQ29weUNvbnZlcnNpb24oR0xfQkdSQV9F
WFQsIEdMX0JHUkFfRVhUKSk7CiAKICAgICBzZXQuaW5zZXJ0KENvcHlDb252ZXJzaW9uKEdMX1JF
RF9JTlRFR0VSLCBHTF9SRURfSU5URUdFUikpOwogICAgIHNldC5pbnNlcnQoQ29weUNvbnZlcnNp
b24oR0xfUkVEX0lOVEVHRVIsIEdMX1JHX0lOVEVHRVIpKTsKQEAgLTcyOCwxMyArNTEyLDI0IEBA
CiAgICAgcmV0dXJuIHNldDsKIH0KIAotc3RhdGljIGJvb2wgSXNWYWxpZEVTM0NvcHlUZXhJbWFn
ZUNvbWJpbmF0aW9uKEdMZW51bSB0ZXh0dXJlSW50ZXJuYWxGb3JtYXQsIEdMZW51bSBmcmFtZUJ1
ZmZlckludGVybmFsRm9ybWF0LCBHTHVpbnQgcmVhZEJ1ZmZlckhhbmRsZSkKK3N0YXRpYyBib29s
IEVxdWFsT3JGaXJzdFplcm8oR0x1aW50IGZpcnN0LCBHTHVpbnQgc2Vjb25kKQogewotICAgIGNv
bnN0IEludGVybmFsRm9ybWF0ICZ0ZXh0dXJlSW50ZXJuYWxGb3JtYXRJbmZvID0gR2V0SW50ZXJu
YWxGb3JtYXRJbmZvKHRleHR1cmVJbnRlcm5hbEZvcm1hdCk7Ci0gICAgY29uc3QgSW50ZXJuYWxG
b3JtYXQgJmZyYW1lYnVmZmVySW50ZXJuYWxGb3JtYXRJbmZvID0gR2V0SW50ZXJuYWxGb3JtYXRJ
bmZvKGZyYW1lQnVmZmVySW50ZXJuYWxGb3JtYXQpOworICAgIHJldHVybiBmaXJzdCA9PSAwIHx8
IGZpcnN0ID09IHNlY29uZDsKK30KIAotICAgIHN0YXRpYyBjb25zdCBDb3B5Q29udmVyc2lvblNl
dCYgY29udmVyc2lvblNldCA9IEJ1aWxkVmFsaWRFUzNDb3B5VGV4SW1hZ2VDb21iaW5hdGlvbnMo
KTsKLSAgICBpZiAoY29udmVyc2lvblNldC5maW5kKENvcHlDb252ZXJzaW9uKHRleHR1cmVJbnRl
cm5hbEZvcm1hdEluZm8uZm9ybWF0LCBmcmFtZWJ1ZmZlckludGVybmFsRm9ybWF0SW5mby5mb3Jt
YXQpKSAhPSBjb252ZXJzaW9uU2V0LmVuZCgpKQorc3RhdGljIGJvb2wgSXNWYWxpZEVTM0NvcHlU
ZXhJbWFnZUNvbWJpbmF0aW9uKGNvbnN0IEZvcm1hdCAmdGV4dHVyZUZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGb3JtYXQgJmZyYW1l
YnVmZmVyRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCByZWFkQnVmZmVySGFuZGxlKQoreworICAgIGNvbnN0IGF1dG8gJnRleHR1cmVG
b3JtYXRJbmZvICAgICA9ICp0ZXh0dXJlRm9ybWF0LmluZm87CisgICAgY29uc3QgYXV0byAmZnJh
bWVidWZmZXJGb3JtYXRJbmZvID0gKmZyYW1lYnVmZmVyRm9ybWF0LmluZm87CisKKyNwcmFnbWEg
R0NDIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2V4
aXQtdGltZS1kZXN0cnVjdG9ycyIKKyAgICBzdGF0aWMgY29uc3QgQ29weUNvbnZlcnNpb25TZXQg
Y29udmVyc2lvblNldCA9IEJ1aWxkVmFsaWRFUzNDb3B5VGV4SW1hZ2VDb21iaW5hdGlvbnMoKTsK
KyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCisgICAgaWYgKGNvbnZlcnNpb25TZXQuZmluZChD
b3B5Q29udmVyc2lvbih0ZXh0dXJlRm9ybWF0SW5mby5mb3JtYXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlckZvcm1hdEluZm8uZm9ybWF0KSkg
IT0gY29udmVyc2lvblNldC5lbmQoKSkKICAgICB7CiAgICAgICAgIC8vIFNlY3Rpb24gMy44LjUg
b2YgdGhlIEdMRVMgMy4wLjMgc3BlYyBzdGF0ZXMgdGhhdCBzb3VyY2UgYW5kIGRlc3RpbmF0aW9u
IGZvcm1hdHMKICAgICAgICAgLy8gbXVzdCBib3RoIGJlIHNpZ25lZCwgdW5zaWduZWQsIG9yIGZp
eGVkIHBvaW50IGFuZCBib3RoIHNvdXJjZSBhbmQgZGVzdGluYXRpb25zCkBAIC03NDEsMjMgKzUz
NiwyNiBAQAogICAgICAgICAvLyBtdXN0IGJlIGVpdGhlciBib3RoIFNSR0Igb3IgYm90aCBub3Qg
U1JHQi4gRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCBhZGRzIGFsbG93ZWQKICAgICAgICAgLy8gY29u
dmVyc2lvbiBiZXR3ZWVuIGZpeGVkIGFuZCBmbG9hdGluZyBwb2ludC4KIAotICAgICAgICBpZiAo
KHRleHR1cmVJbnRlcm5hbEZvcm1hdEluZm8uY29sb3JFbmNvZGluZyA9PSBHTF9TUkdCKSAhPSAo
ZnJhbWVidWZmZXJJbnRlcm5hbEZvcm1hdEluZm8uY29sb3JFbmNvZGluZyA9PSBHTF9TUkdCKSkK
KyAgICAgICAgaWYgKCh0ZXh0dXJlRm9ybWF0SW5mby5jb2xvckVuY29kaW5nID09IEdMX1NSR0Ip
ICE9CisgICAgICAgICAgICAoZnJhbWVidWZmZXJGb3JtYXRJbmZvLmNvbG9yRW5jb2RpbmcgPT0g
R0xfU1JHQikpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQogCi0gICAgICAgIGlmICgoKHRleHR1cmVJbnRlcm5hbEZvcm1hdEluZm8uY29tcG9uZW50VHlw
ZSA9PSBHTF9JTlQpICAgICAgICAgICE9IChmcmFtZWJ1ZmZlckludGVybmFsRm9ybWF0SW5mby5j
b21wb25lbnRUeXBlID09IEdMX0lOVCAgICAgICAgICkpIHx8Ci0gICAgICAgICAgICAoKHRleHR1
cmVJbnRlcm5hbEZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9VTlNJR05FRF9JTlQpICE9
IChmcmFtZWJ1ZmZlckludGVybmFsRm9ybWF0SW5mby5jb21wb25lbnRUeXBlID09IEdMX1VOU0lH
TkVEX0lOVCkpKQorICAgICAgICBpZiAoKCh0ZXh0dXJlRm9ybWF0SW5mby5jb21wb25lbnRUeXBl
ID09IEdMX0lOVCkgIT0KKyAgICAgICAgICAgICAoZnJhbWVidWZmZXJGb3JtYXRJbmZvLmNvbXBv
bmVudFR5cGUgPT0gR0xfSU5UKSkgfHwKKyAgICAgICAgICAgICgodGV4dHVyZUZvcm1hdEluZm8u
Y29tcG9uZW50VHlwZSA9PSBHTF9VTlNJR05FRF9JTlQpICE9CisgICAgICAgICAgICAgKGZyYW1l
YnVmZmVyRm9ybWF0SW5mby5jb21wb25lbnRUeXBlID09IEdMX1VOU0lHTkVEX0lOVCkpKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBp
ZiAoKHRleHR1cmVJbnRlcm5hbEZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9VTlNJR05F
RF9OT1JNQUxJWkVEIHx8Ci0gICAgICAgICAgICAgdGV4dHVyZUludGVybmFsRm9ybWF0SW5mby5j
b21wb25lbnRUeXBlID09IEdMX1NJR05FRF9OT1JNQUxJWkVEIHx8Ci0gICAgICAgICAgICAgdGV4
dHVyZUludGVybmFsRm9ybWF0SW5mby5jb21wb25lbnRUeXBlID09IEdMX0ZMT0FUKSAmJgotICAg
ICAgICAgICAgIShmcmFtZWJ1ZmZlckludGVybmFsRm9ybWF0SW5mby5jb21wb25lbnRUeXBlID09
IEdMX1VOU0lHTkVEX05PUk1BTElaRUQgfHwKLSAgICAgICAgICAgICAgZnJhbWVidWZmZXJJbnRl
cm5hbEZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9TSUdORURfTk9STUFMSVpFRCB8fAot
ICAgICAgICAgICAgICBmcmFtZWJ1ZmZlckludGVybmFsRm9ybWF0SW5mby5jb21wb25lbnRUeXBl
ID09IEdMX0ZMT0FUKSkKKyAgICAgICAgaWYgKCh0ZXh0dXJlRm9ybWF0SW5mby5jb21wb25lbnRU
eXBlID09IEdMX1VOU0lHTkVEX05PUk1BTElaRUQgfHwKKyAgICAgICAgICAgICB0ZXh0dXJlRm9y
bWF0SW5mby5jb21wb25lbnRUeXBlID09IEdMX1NJR05FRF9OT1JNQUxJWkVEIHx8CisgICAgICAg
ICAgICAgdGV4dHVyZUZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9GTE9BVCkgJiYKKyAg
ICAgICAgICAgICEoZnJhbWVidWZmZXJGb3JtYXRJbmZvLmNvbXBvbmVudFR5cGUgPT0gR0xfVU5T
SUdORURfTk9STUFMSVpFRCB8fAorICAgICAgICAgICAgICBmcmFtZWJ1ZmZlckZvcm1hdEluZm8u
Y29tcG9uZW50VHlwZSA9PSBHTF9TSUdORURfTk9STUFMSVpFRCB8fAorICAgICAgICAgICAgICBm
cmFtZWJ1ZmZlckZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9GTE9BVCkpCiAgICAgICAg
IHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtNzc5LDE1ICs1Nzcs
MTYgQEAKICAgICAgICAgaWYgKHJlYWRCdWZmZXJIYW5kbGUgIT0gMCkKICAgICAgICAgewogICAg
ICAgICAgICAgLy8gTm90IHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyLCB0aGVyZWZvcmUgdGhlIHJl
YWQgYnVmZmVyIG11c3QgYmUgYSB1c2VyLWNyZWF0ZWQgdGV4dHVyZSBvciByZW5kZXJidWZmZXIK
LSAgICAgICAgICAgIGlmIChmcmFtZWJ1ZmZlckludGVybmFsRm9ybWF0SW5mby5waXhlbEJ5dGVz
ID4gMCkKKyAgICAgICAgICAgIGlmIChmcmFtZWJ1ZmZlckZvcm1hdC5zaXplZCkKICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBzb3VyY2VFZmZlY3RpdmVGb3JtYXQgPSAmZnJhbWVidWZm
ZXJJbnRlcm5hbEZvcm1hdEluZm87CisgICAgICAgICAgICAgICAgc291cmNlRWZmZWN0aXZlRm9y
bWF0ID0gJmZyYW1lYnVmZmVyRm9ybWF0SW5mbzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAvLyBSZW5kZXJidWZmZXJzIGNh
bm5vdCBiZSBjcmVhdGVkIHdpdGggYW4gdW5zaXplZCBpbnRlcm5hbCBmb3JtYXQsIHNvIHRoaXMg
bXVzdCBiZSBhbiB1bnNpemVkLWZvcm1hdAogICAgICAgICAgICAgICAgIC8vIHRleHR1cmUuIFdl
IGNhbiB1c2UgdGhlIHNhbWUgdGFibGUgd2UgdXNlIHdoZW4gY3JlYXRpbmcgdGV4dHVyZXMgdG8g
Z2V0IGl0cyBlZmZlY3RpdmUgc2l6ZWQgZm9ybWF0LgotICAgICAgICAgICAgICAgIEdMZW51bSBz
aXplZEludGVybmFsRm9ybWF0ID0gR2V0U2l6ZWRJbnRlcm5hbEZvcm1hdChmcmFtZWJ1ZmZlcklu
dGVybmFsRm9ybWF0SW5mby5mb3JtYXQsIGZyYW1lYnVmZmVySW50ZXJuYWxGb3JtYXRJbmZvLnR5
cGUpOworICAgICAgICAgICAgICAgIEdMZW51bSBzaXplZEludGVybmFsRm9ybWF0ID0gR2V0U2l6
ZWRJbnRlcm5hbEZvcm1hdChmcmFtZWJ1ZmZlckZvcm1hdEluZm8uZm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmcmFtZWJ1ZmZlckZvcm1hdEluZm8udHlwZSk7CiAgICAgICAgICAgICAgICAgc291cmNlRWZm
ZWN0aXZlRm9ybWF0ID0gJkdldEludGVybmFsRm9ybWF0SW5mbyhzaXplZEludGVybmFsRm9ybWF0
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNzk1LDEwICs1OTQsMTEgQEAKICAgICAg
ICAgewogICAgICAgICAgICAgLy8gVGhlIGVmZmVjdGl2ZSBpbnRlcm5hbCBmb3JtYXQgbXVzdCBi
ZSBkZXJpdmVkIGZyb20gdGhlIHNvdXJjZSBmcmFtZWJ1ZmZlcidzIGNoYW5uZWwgc2l6ZXMuCiAg
ICAgICAgICAgICAvLyBUaGlzIGlzIGRvbmUgaW4gR2V0RWZmZWN0aXZlSW50ZXJuYWxGb3JtYXQg
Zm9yIGxpbmVhciBidWZmZXJzICh0YWJsZSAzLjE3KQotICAgICAgICAgICAgaWYgKGZyYW1lYnVm
ZmVySW50ZXJuYWxGb3JtYXRJbmZvLmNvbG9yRW5jb2RpbmcgPT0gR0xfTElORUFSKQorICAgICAg
ICAgICAgaWYgKGZyYW1lYnVmZmVyRm9ybWF0SW5mby5jb2xvckVuY29kaW5nID09IEdMX0xJTkVB
UikKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBHTGVudW0gZWZmZWN0aXZlRm9ybWF0
OwotICAgICAgICAgICAgICAgIGlmIChHZXRFZmZlY3RpdmVJbnRlcm5hbEZvcm1hdChmcmFtZWJ1
ZmZlckludGVybmFsRm9ybWF0SW5mbywgdGV4dHVyZUludGVybmFsRm9ybWF0SW5mbywgJmVmZmVj
dGl2ZUZvcm1hdCkpCisgICAgICAgICAgICAgICAgaWYgKEdldEVmZmVjdGl2ZUludGVybmFsRm9y
bWF0KGZyYW1lYnVmZmVyRm9ybWF0SW5mbywgdGV4dHVyZUZvcm1hdEluZm8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlZmZlY3RpdmVGb3JtYXQpKQog
ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgc291cmNlRWZmZWN0aXZlRm9y
bWF0ID0gJkdldEludGVybmFsRm9ybWF0SW5mbyhlZmZlY3RpdmVGb3JtYXQpOwogICAgICAgICAg
ICAgICAgIH0KQEAgLTgwNywxNCArNjA3LDE1IEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBl
bHNlIGlmIChmcmFtZWJ1ZmZlckludGVybmFsRm9ybWF0SW5mby5jb2xvckVuY29kaW5nID09IEdM
X1NSR0IpCisgICAgICAgICAgICBlbHNlIGlmIChmcmFtZWJ1ZmZlckZvcm1hdEluZm8uY29sb3JF
bmNvZGluZyA9PSBHTF9TUkdCKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIC8vIFNS
R0IgYnVmZmVycyBjYW4gb25seSBiZSBjb3BpZWQgdG8gc2l6ZWQgZm9ybWF0IGRlc3RpbmF0aW9u
cyBhY2NvcmRpbmcgdG8gdGFibGUgMy4xOAotICAgICAgICAgICAgICAgIGlmICgodGV4dHVyZUlu
dGVybmFsRm9ybWF0SW5mby5waXhlbEJ5dGVzID4gMCkgJiYKLSAgICAgICAgICAgICAgICAgICAg
KGZyYW1lYnVmZmVySW50ZXJuYWxGb3JtYXRJbmZvLnJlZEJpdHMgICA+PSAxICYmIGZyYW1lYnVm
ZmVySW50ZXJuYWxGb3JtYXRJbmZvLnJlZEJpdHMgICA8PSA4KSAmJgotICAgICAgICAgICAgICAg
ICAgICAoZnJhbWVidWZmZXJJbnRlcm5hbEZvcm1hdEluZm8uZ3JlZW5CaXRzID49IDEgJiYgZnJh
bWVidWZmZXJJbnRlcm5hbEZvcm1hdEluZm8uZ3JlZW5CaXRzIDw9IDgpICYmCi0gICAgICAgICAg
ICAgICAgICAgIChmcmFtZWJ1ZmZlckludGVybmFsRm9ybWF0SW5mby5ibHVlQml0cyAgPj0gMSAm
JiBmcmFtZWJ1ZmZlckludGVybmFsRm9ybWF0SW5mby5ibHVlQml0cyAgPD0gOCkgJiYKLSAgICAg
ICAgICAgICAgICAgICAgKGZyYW1lYnVmZmVySW50ZXJuYWxGb3JtYXRJbmZvLmFscGhhQml0cyA+
PSAxICYmIGZyYW1lYnVmZmVySW50ZXJuYWxGb3JtYXRJbmZvLmFscGhhQml0cyA8PSA4KSkKKyAg
ICAgICAgICAgICAgICBpZiAodGV4dHVyZUZvcm1hdC5zaXplZCAmJgorICAgICAgICAgICAgICAg
ICAgICAoZnJhbWVidWZmZXJGb3JtYXRJbmZvLnJlZEJpdHMgPj0gMSAmJiBmcmFtZWJ1ZmZlckZv
cm1hdEluZm8ucmVkQml0cyA8PSA4KSAmJgorICAgICAgICAgICAgICAgICAgICAoZnJhbWVidWZm
ZXJGb3JtYXRJbmZvLmdyZWVuQml0cyA+PSAxICYmCisgICAgICAgICAgICAgICAgICAgICBmcmFt
ZWJ1ZmZlckZvcm1hdEluZm8uZ3JlZW5CaXRzIDw9IDgpICYmCisgICAgICAgICAgICAgICAgICAg
IChmcmFtZWJ1ZmZlckZvcm1hdEluZm8uYmx1ZUJpdHMgPj0gMSAmJiBmcmFtZWJ1ZmZlckZvcm1h
dEluZm8uYmx1ZUJpdHMgPD0gOCkgJiYKKyAgICAgICAgICAgICAgICAgICAgKGZyYW1lYnVmZmVy
Rm9ybWF0SW5mby5hbHBoYUJpdHMgPj0gMSAmJiBmcmFtZWJ1ZmZlckZvcm1hdEluZm8uYWxwaGFC
aXRzIDw9IDgpKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgc291cmNl
RWZmZWN0aXZlRm9ybWF0ID0gJkdldEludGVybmFsRm9ybWF0SW5mbyhHTF9TUkdCOF9BTFBIQTgp
OwogICAgICAgICAgICAgICAgIH0KQEAgLTgzMCwyMCArNjMxLDIwIEBACiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodGV4dHVyZUludGVybmFsRm9ybWF0SW5mby5waXhl
bEJ5dGVzID4gMCkKKyAgICAgICAgaWYgKHRleHR1cmVGb3JtYXQuc2l6ZWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIC8vIFNlY3Rpb24gMy44LjUgb2YgdGhlIEdMRVMgMy4wLjMgc3BlYywgcGcg
MTM5LCByZXF1aXJlcyB0aGF0LCBpZiB0aGUgZGVzdGluYXRpb24gZm9ybWF0IGlzIHNpemVkLAot
ICAgICAgICAgICAgLy8gY29tcG9uZW50IHNpemVzIG9mIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0
aW9uIGZvcm1hdHMgbXVzdCBleGFjdGx5IG1hdGNoCi0gICAgICAgICAgICBpZiAodGV4dHVyZUlu
dGVybmFsRm9ybWF0SW5mby5yZWRCaXRzICAgIT0gc291cmNlRWZmZWN0aXZlRm9ybWF0LT5yZWRC
aXRzICAgfHwKLSAgICAgICAgICAgICAgICB0ZXh0dXJlSW50ZXJuYWxGb3JtYXRJbmZvLmdyZWVu
Qml0cyAhPSBzb3VyY2VFZmZlY3RpdmVGb3JtYXQtPmdyZWVuQml0cyB8fAotICAgICAgICAgICAg
ICAgIHRleHR1cmVJbnRlcm5hbEZvcm1hdEluZm8uYmx1ZUJpdHMgICE9IHNvdXJjZUVmZmVjdGl2
ZUZvcm1hdC0+Ymx1ZUJpdHMgIHx8Ci0gICAgICAgICAgICAgICAgdGV4dHVyZUludGVybmFsRm9y
bWF0SW5mby5hbHBoYUJpdHMgIT0gc291cmNlRWZmZWN0aXZlRm9ybWF0LT5hbHBoYUJpdHMpCisg
ICAgICAgICAgICAvLyBTZWN0aW9uIDMuOC41IG9mIHRoZSBHTEVTIDMuMC4zIHNwZWMsIHBnIDEz
OSwgcmVxdWlyZXMgdGhhdCwgaWYgdGhlIGRlc3RpbmF0aW9uCisgICAgICAgICAgICAvLyBmb3Jt
YXQgaXMgc2l6ZWQsIGNvbXBvbmVudCBzaXplcyBvZiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlv
biBmb3JtYXRzIG11c3QgZXhhY3RseQorICAgICAgICAgICAgLy8gbWF0Y2ggaWYgdGhlIGRlc3Rp
bmF0aW9uIGZvcm1hdCBleGlzdHMuCisgICAgICAgICAgICBpZiAoIUVxdWFsT3JGaXJzdFplcm8o
dGV4dHVyZUZvcm1hdEluZm8ucmVkQml0cywgc291cmNlRWZmZWN0aXZlRm9ybWF0LT5yZWRCaXRz
KSB8fAorICAgICAgICAgICAgICAgICFFcXVhbE9yRmlyc3RaZXJvKHRleHR1cmVGb3JtYXRJbmZv
LmdyZWVuQml0cywgc291cmNlRWZmZWN0aXZlRm9ybWF0LT5ncmVlbkJpdHMpIHx8CisgICAgICAg
ICAgICAgICAgIUVxdWFsT3JGaXJzdFplcm8odGV4dHVyZUZvcm1hdEluZm8uYmx1ZUJpdHMsIHNv
dXJjZUVmZmVjdGl2ZUZvcm1hdC0+Ymx1ZUJpdHMpIHx8CisgICAgICAgICAgICAgICAgIUVxdWFs
T3JGaXJzdFplcm8odGV4dHVyZUZvcm1hdEluZm8uYWxwaGFCaXRzLCBzb3VyY2VFZmZlY3RpdmVG
b3JtYXQtPmFscGhhQml0cykpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLQogICAgICAgICByZXR1cm4gdHJ1
ZTsgLy8gQSBjb252ZXJzaW9uIGZ1bmN0aW9uIGV4aXN0cywgYW5kIG5vIHJ1bGUgaW4gdGhlIHNw
ZWNpZmljYXRpb24gaGFzIHByZWNsdWRlZCBjb252ZXJzaW9uCiAgICAgICAgICAgICAgICAgICAg
ICAvLyBiZXR3ZWVuIHRoZXNlIGZvcm1hdHMuCiAgICAgfQpAQCAtODY1LDQ4ICs2NjYsNTAgQEAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdo
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3Jk
ZXIpCiB7Ci0gICAgR0xlbnVtIHRleHR1cmVJbnRlcm5hbEZvcm1hdDsKKyAgICBGb3JtYXQgdGV4
dHVyZUZvcm1hdCA9IEZvcm1hdDo6SW52YWxpZCgpOwogICAgIGlmICghVmFsaWRhdGVDb3B5VGV4
SW1hZ2VQYXJhbWV0ZXJzQmFzZShjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgaXNTdWJJbWFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLCAmdGV4dHVyZUlu
dGVybmFsRm9ybWF0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGV4dHVyZUZv
cm1hdCkpCiAgICAgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorICAgIEFTU0VSVCh0
ZXh0dXJlRm9ybWF0LnZhbGlkKCkgfHwgIWlzU3ViSW1hZ2UpOwogCi0gICAgY29uc3QgYXV0byAm
c3RhdGUgICAgICAgICAgICAgICAgICA9IGNvbnRleHQtPmdldFN0YXRlKCk7Ci0gICAgY29uc3Qg
Z2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IHN0YXRlLmdldFJlYWRGcmFtZWJ1ZmZlcigp
OwotICAgIEdMdWludCByZWFkRnJhbWVidWZmZXJJRCAgICAgICAgICAgPSBmcmFtZWJ1ZmZlci0+
aWQoKTsKKyAgICBjb25zdCBhdXRvICZzdGF0ZSAgICAgICAgICAgID0gY29udGV4dC0+Z2V0R0xT
dGF0ZSgpOworICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBzdGF0ZS5nZXRSZWFk
RnJhbWVidWZmZXIoKTsKKyAgICBHTHVpbnQgcmVhZEZyYW1lYnVmZmVySUQgICAgID0gZnJhbWVi
dWZmZXItPmlkKCk7CiAKLSAgICBpZiAoZnJhbWVidWZmZXItPmNoZWNrU3RhdHVzKGNvbnRleHQt
PmdldERhdGEoKSkgIT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpCisgICAgaWYgKGZyYW1lYnVm
ZmVyLT5jaGVja1N0YXR1cyhjb250ZXh0LT5nZXRDb250ZXh0U3RhdGUoKSkgIT0gR0xfRlJBTUVC
VUZGRVJfQ09NUExFVEUpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTikpOworICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTikpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKHJlYWRGcmFtZWJ1ZmZlcklEICE9
IDAgJiYgZnJhbWVidWZmZXItPmdldFNhbXBsZXMoY29udGV4dC0+Z2V0RGF0YSgpKSAhPSAwKQor
ICAgIGlmIChyZWFkRnJhbWVidWZmZXJJRCAhPSAwICYmIGZyYW1lYnVmZmVyLT5nZXRTYW1wbGVz
KGNvbnRleHQtPmdldENvbnRleHRTdGF0ZSgpKSAhPSAwKQogICAgIHsKLSAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1l
bnQgKnNvdXJjZSA9IGZyYW1lYnVmZmVyLT5nZXRSZWFkQ29sb3JidWZmZXIoKTsKLSAgICBHTGVu
dW0gY29sb3JidWZmZXJJbnRlcm5hbEZvcm1hdCA9IHNvdXJjZS0+Z2V0SW50ZXJuYWxGb3JtYXQo
KTsKKyAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKnNvdXJjZSA9IGZyYW1lYnVmZmVy
LT5nZXRSZWFkQ29sb3JidWZmZXIoKTsKIAogICAgIGlmIChpc1N1YkltYWdlKQogICAgIHsKLSAg
ICAgICAgaWYgKCFJc1ZhbGlkRVMzQ29weVRleEltYWdlQ29tYmluYXRpb24odGV4dHVyZUludGVy
bmFsRm9ybWF0LCBjb2xvcmJ1ZmZlckludGVybmFsRm9ybWF0LAorICAgICAgICBpZiAoIUlzVmFs
aWRFUzNDb3B5VGV4SW1hZ2VDb21iaW5hdGlvbih0ZXh0dXJlRm9ybWF0LCBzb3VyY2UtPmdldEZv
cm1hdCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWFkRnJhbWVidWZmZXJJRCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAg
IGlmICghZ2w6OklzVmFsaWRFUzNDb3B5VGV4SW1hZ2VDb21iaW5hdGlvbihpbnRlcm5hbGZvcm1h
dCwgY29sb3JidWZmZXJJbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRGcmFtZWJ1ZmZlcklEKSkKKyAgICAgICAgLy8g
VXNlIGZvcm1hdC90eXBlIGZyb20gdGhlIHNvdXJjZSBGQk8uIChNaWdodCBub3QgYmUgcGVyZmVj
dCBmb3IgYWxsIGNhc2VzPykKKyAgICAgICAgY29uc3QgYXV0byBmcmFtZWJ1ZmZlckZvcm1hdCA9
IHNvdXJjZS0+Z2V0Rm9ybWF0KCk7CisgICAgICAgIEZvcm1hdCBjb3B5Rm9ybWF0KGludGVybmFs
Zm9ybWF0LCBmcmFtZWJ1ZmZlckZvcm1hdC5mb3JtYXQsIGZyYW1lYnVmZmVyRm9ybWF0LnR5cGUp
OworICAgICAgICBpZiAoIUlzVmFsaWRFUzNDb3B5VGV4SW1hZ2VDb21iaW5hdGlvbihjb3B5Rm9y
bWF0LCBmcmFtZWJ1ZmZlckZvcm1hdCwgcmVhZEZyYW1lYnVmZmVySUQpKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TikpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0K
QEAgLTkzMSw3ICs3MzQsNyBAQAogewogICAgIGlmICghVmFsaWRUZXh0dXJlMkREZXN0aW5hdGlv
blRhcmdldChjb250ZXh0LCB0YXJnZXQpKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCkBAIC05NTYsNyArNzU5LDcgQEAKIHsKICAgICBpZiAoIVZhbGlkVGV4dHVyZTNERGVzdGlu
YXRpb25UYXJnZXQoY29udGV4dCwgdGFyZ2V0KSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIApAQCAtOTc1LDcgKzc3OCw3IEBACiB7CiAgICAgaWYgKHdpZHRoIDwgMSB8fCBoZWln
aHQgPCAxIHx8IGRlcHRoIDwgMSB8fCBsZXZlbHMgPCAxKQogICAgIHsKLSAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKQEAgLTk4Nyw3ICs3OTAsNyBAQAogCiAgICAgaWYgKGxldmVscyA+IGds
Ojpsb2cyKG1heERpbSkgKyAxKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIApAQCAtMTAwMCw3ICs4MDMsNyBAQAogICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0
PEdMdWludD4od2lkdGgpID4gY2Fwcy5tYXgyRFRleHR1cmVTaXplIHx8CiAgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8R0x1aW50PihoZWlnaHQpID4gY2Fwcy5tYXgyRFRleHR1cmVTaXplKQog
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xMDEwLDEzICs4MTMsMTMgQEAKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKHdpZHRoICE9IGhlaWdodCkKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVF
KSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PEdMdWludD4od2lkdGgpID4gY2Fwcy5tYXhD
dWJlTWFwVGV4dHVyZVNpemUpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTEwMjgs
NyArODMxLDcgQEAKICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+KGhlaWdodCkg
PiBjYXBzLm1heDNEVGV4dHVyZVNpemUgfHwKICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxH
THVpbnQ+KGRlcHRoKSA+IGNhcHMubWF4M0RUZXh0dXJlU2l6ZSkKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVF
KSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQpAQCAtMTA0MCw3ICs4NDMsNyBAQAogICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PEdMdWludD4oaGVpZ2h0KSA+IGNhcHMubWF4MkRUZXh0dXJlU2l6ZSB8fAogICAgICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PEdMdWludD4oZGVwdGgpID4gY2Fwcy5tYXhBcnJheVRleHR1cmVM
YXllcnMpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTEwNTQsMjYgKzg1NywyNiBA
QAogICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGFyZ2V0VGV4dHVyZSh0
YXJnZXQpOwogICAgIGlmICghdGV4dHVyZSB8fCB0ZXh0dXJlLT5pZCgpID09IDApCiAgICAgewot
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKHRleHR1cmUtPmdl
dEltbXV0YWJsZUZvcm1hdCgpKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAogICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9IGdsOjpH
ZXRJbnRlcm5hbEZvcm1hdEluZm8oaW50ZXJuYWxmb3JtYXQpOwotICAgIGlmICghZm9ybWF0SW5m
by50ZXh0dXJlU3VwcG9ydChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCksIGNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKSkpCisgICAgaWYgKCFmb3JtYXRJbmZvLnRleHR1cmVTdXBwb3J0KGNvbnRl
eHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpLCBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpKQog
ICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVN
KSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKGZvcm1hdEluZm8ucGl4
ZWxCeXRlcyA9PSAwKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfRU5VTSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMDkw
LDcgKzg5Myw3IEBACiB7CiAgICAgaWYgKCFWYWxpZFRleHR1cmUyRFRhcmdldChjb250ZXh0LCB0
YXJnZXQpKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfRU5VTSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMTA4LDcgKzkx
MSw3IEBACiB7CiAgICAgaWYgKCFWYWxpZFRleHR1cmUzRFRhcmdldChjb250ZXh0LCB0YXJnZXQp
KQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9F
TlVNKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMTE4LDkgKzkyMSw5IEBA
CiAKIGJvb2wgVmFsaWRhdGVCZWdpblF1ZXJ5KGdsOjpDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
dGFyZ2V0LCBHTHVpbnQgaWQpCiB7Ci0gICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24o
KSA8IDMpCisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAg
ICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OLCAiR0xFUyB2ZXJzaW9uIDwgMy4wIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkdMRVMgdmVyc2lvbiA8IDMuMCIpKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTEyOSw5ICs5MzIsOSBAQAogCiBib29s
IFZhbGlkYXRlRW5kUXVlcnkoZ2w6OkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQpCiB7
Ci0gICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgaWYgKGNvbnRl
eHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7Ci0gICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiR0xFUyB2ZXJzaW9uIDwg
My4wIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgIkdMRVMgdmVyc2lvbiA8IDMuMCIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIApAQCAtMTE0MCwzOCArOTQzLDM4IEBACiAKIGJvb2wgVmFsaWRhdGVHZXRRdWVyeWl2
KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBh
cmFtcykKIHsKLSAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICBp
ZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKLSAgICAgICAg
Y29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJHTEVTIHZl
cnNpb24gPCAzLjAiKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAiR0xFUyB2ZXJzaW9uIDwgMy4wIikpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCi0gICAgcmV0dXJuIFZhbGlkYXRlR2V0UXVlcnlpdkJhc2UoY29udGV4
dCwgdGFyZ2V0LCBwbmFtZSk7CisgICAgcmV0dXJuIFZhbGlkYXRlR2V0UXVlcnlpdkJhc2UoY29u
dGV4dCwgdGFyZ2V0LCBwbmFtZSwgbnVsbHB0cik7CiB9CiAKIGJvb2wgVmFsaWRhdGVHZXRRdWVy
eU9iamVjdHVpdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0x1
aW50ICpwYXJhbXMpCiB7Ci0gICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMp
CisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7Ci0g
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAi
R0xFUyB2ZXJzaW9uIDwgMy4wIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTiwgIkdMRVMgdmVyc2lvbiA8IDMuMCIpKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHJldHVybiBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0
VmFsdWVCYXNlKGNvbnRleHQsIGlkLCBwbmFtZSk7CisgICAgcmV0dXJuIFZhbGlkYXRlR2V0UXVl
cnlPYmplY3RWYWx1ZUJhc2UoY29udGV4dCwgaWQsIHBuYW1lLCBudWxscHRyKTsKIH0KIAogYm9v
bCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCB0ZXh0dXJlLCBHTGludCBsZXZlbCwgR0xpbnQgbGF5ZXIpCiB7Ci0g
ICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgaWYgKGNvbnRleHQt
PmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKICAgICBpZiAobGF5ZXIgPCAwKQogICAgIHsKLSAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKQEAgLTExOTIsMTMgKzk5NSwxMyBAQAogICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgIGlmIChsZXZlbCA+IGdsOjpsb2cyKGNhcHMubWF4MkRUZXh0dXJlU2l6
ZSkpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
ICAgIGlmIChzdGF0aWNfY2FzdDxHTHVpbnQ+KGxheWVyKSA+PSBjYXBzLm1heEFycmF5VGV4dHVy
ZUxheWVycykKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQpAQCAtMTIwOCwxMyArMTAxMSwxMyBAQAogICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgIGlmIChsZXZlbCA+IGdsOjpsb2cyKGNhcHMubWF4M0RUZXh0dXJlU2l6ZSkpCiAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmIChzdGF0
aWNfY2FzdDxHTHVpbnQ+KGxheWVyKSA+PSBjYXBzLm1heDNEVGV4dHVyZVNpemUpCiAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTEyMjEsMTQg
KzEwMjQsMTQgQEAKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KSk7CisgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAg
ICAgICBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJmludGVybmFsRm9ybWF0SW5mbyA9IGdsOjpH
ZXRJbnRlcm5hbEZvcm1hdEluZm8odGV4LT5nZXRJbnRlcm5hbEZvcm1hdCh0ZXgtPmdldFRhcmdl
dCgpLCBsZXZlbCkpOwotICAgICAgICBpZiAoaW50ZXJuYWxGb3JtYXRJbmZvLmNvbXByZXNzZWQp
CisgICAgICAgIGNvbnN0IGF1dG8gJmZvcm1hdCA9IHRleC0+Z2V0Rm9ybWF0KHRleC0+Z2V0VGFy
Z2V0KCksIGxldmVsKTsKKyAgICAgICAgaWYgKGZvcm1hdC5pbmZvLT5jb21wcmVzc2VkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTikpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQogICAgIH0KQEAgLTEyMzYsODMgKzEwMzksNiBAQAogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkRVMzUmVhZEZvcm1hdFR5cGUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGludGVy
bmFsRm9ybWF0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSkKLXsKLSAgICBjb25zdCBnbDo6
SW50ZXJuYWxGb3JtYXQgJmludGVybmFsRm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZvcm1h
dEluZm8oaW50ZXJuYWxGb3JtYXQpOwotCi0gICAgc3dpdGNoIChmb3JtYXQpCi0gICAgewotICAg
ICAgY2FzZSBHTF9SR0JBOgotICAgICAgICBzd2l0Y2ggKHR5cGUpCi0gICAgICAgIHsKLSAgICAg
ICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICBjYXNlIEdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVjoKLSAgICAgICAgICAgIGlmIChp
bnRlcm5hbEZvcm1hdCAhPSBHTF9SR0IxMF9BMikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICBjYXNlIEdMX0ZMT0FUOgotICAgICAgICAgICAgaWYgKGludGVybmFsRm9ybWF0SW5m
by5jb21wb25lbnRUeXBlICE9IEdMX0ZMT0FUKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAg
ICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1JHQkFfSU5URUdFUjoKLSAgICAgICAgc3dpdGNo
ICh0eXBlKQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9JTlQ6Ci0gICAgICAgICAgICBp
ZiAoaW50ZXJuYWxGb3JtYXRJbmZvLmNvbXBvbmVudFR5cGUgIT0gR0xfSU5UKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgotICAgICAgICAg
ICAgaWYgKGludGVybmFsRm9ybWF0SW5mby5jb21wb25lbnRUeXBlICE9IEdMX1VOU0lHTkVEX0lO
VCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBH
TF9CR1JBX0VYVDoKLSAgICAgICAgc3dpdGNoICh0eXBlKQotICAgICAgICB7Ci0gICAgICAgICAg
Y2FzZSBHTF9VTlNJR05FRF9CWVRFOgotICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRf
NF80XzRfNF9SRVZfRVhUOgotICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfMV81XzVf
NV9SRVZfRVhUOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICAgIGNh
c2UgR0xfUkdfRVhUOgotICAgICAgY2FzZSBHTF9SRURfRVhUOgotICAgICAgICBpZiAoIWNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlUkcpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBzd2l0Y2ggKHR5cGUpCi0gICAgICAgIHsK
LSAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAg
ICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
ICAgIHJldHVybiB0cnVlOwotfQotCiBib29sIFZhbGlkYXRlRVMzUmVuZGVyYnVmZmVyU3RvcmFn
ZVBhcmFtZXRlcnMoZ2w6OkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkg
c2FtcGxlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQogewpA
QCAtMTMyNSw3ICsxMDUxLDcgQEAKICAgICBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJmZvcm1h
dEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGludGVybmFsZm9ybWF0KTsKICAgICBp
ZiAoKGZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9VTlNJR05FRF9JTlQgfHwgZm9ybWF0
SW5mby5jb21wb25lbnRUeXBlID09IEdMX0lOVCkgJiYgc2FtcGxlcyA+IDApCiAgICAgewotICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwor
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMzMzLDcgKzEwNTksNyBAQAog
ICAgIGNvbnN0IFRleHR1cmVDYXBzICZmb3JtYXRDYXBzID0gY29udGV4dC0+Z2V0VGV4dHVyZUNh
cHMoKS5nZXQoaW50ZXJuYWxmb3JtYXQpOwogICAgIGlmIChzdGF0aWNfY2FzdDxHTHVpbnQ+KHNh
bXBsZXMpID4gZm9ybWF0Q2Fwcy5nZXRNYXhTYW1wbGVzKCkpCiAgICAgewotICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcigKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCiAgICAgICAg
ICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKICAgICAgICAgICAgICAgICAgICJTYW1w
bGVzIG11c3Qgbm90IGJlIGdyZWF0ZXIgdGhhbiBtYXhpbXVtIHN1cHBvcnRlZCB2YWx1ZSBmb3Ig
dGhlIGZvcm1hdC4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzNDUsOSArMTA3MSwx
MCBAQAogYm9vbCBWYWxpZGF0ZUludmFsaWRhdGVGcmFtZWJ1ZmZlcihDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdGFyZ2V0LCBHTHNpemVpIG51bUF0dGFjaG1lbnRzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKQogewotICAgIGlm
IChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgIGlmIChjb250ZXh0LT5nZXRD
bGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIk9wZXJhdGlvbiBvbmx5IHN1cHBvcnRl
ZCBvbiBFUyAzLjAgYW5kIGFib3ZlIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigK
KyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiT3BlcmF0aW9uIG9ubHkg
c3VwcG9ydGVkIG9uIEVTIDMuMCBhbmQgYWJvdmUiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKQEAgLTEzNTcsMTMgKzEwODQsMTMgQEAKICAgICB7CiAgICAgICBjYXNlIEdMX0RS
QVdfRlJBTUVCVUZGRVI6CiAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSOgotICAgICAgICBkZWZh
dWx0RnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldERyYXdGcmFtZWJ1ZmZlcigp
LT5pZCgpID09IDA7Ci0gICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHRGcmFtZWJ1ZmZl
ciA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXREcmF3RnJhbWVidWZmZXIoKS0+aWQoKSA9PSAw
OworICAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBHTF9SRUFEX0ZSQU1FQlVGRkVSOgotICAg
ICAgICBkZWZhdWx0RnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFJlYWRGcmFt
ZWJ1ZmZlcigpLT5pZCgpID09IDA7Ci0gICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHRG
cmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRSZWFkRnJhbWVidWZmZXIoKS0+
aWQoKSA9PSAwOworICAgICAgICAgIGJyZWFrOwogICAgICAgZGVmYXVsdDoKLSAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBmcmFtZWJ1
ZmZlciB0YXJnZXQiKSk7CisgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9FTlVNLCAiSW52YWxpZCBmcmFtZWJ1ZmZlciB0YXJnZXQiKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEzNzIsMTYgKzEwOTksMTYgQEAKIAogYm9vbCBWYWxp
ZGF0ZUNsZWFyQnVmZmVyKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0KQogewotICAgIGlmIChj
b250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgIGlmIChjb250ZXh0LT5nZXRDbGll
bnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmYm8gPSBjb250ZXh0LT5nZXRT
dGF0ZSgpLmdldERyYXdGcmFtZWJ1ZmZlcigpOwotICAgIGlmICghZmJvIHx8IGZiby0+Y2hlY2tT
dGF0dXMoY29udGV4dC0+Z2V0RGF0YSgpKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKKyAg
ICBpZiAoY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldERyYXdGcmFtZWJ1ZmZlcigpLT5jaGVja1N0
YXR1cyhjb250ZXh0LT5nZXRDb250ZXh0U3RhdGUoKSkgIT0KKyAgICAgICAgR0xfRlJBTUVCVUZG
RVJfQ09NUExFVEUpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTikpOworICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTikpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMzk3LDE1ICsxMTI0LDE1IEBACiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEluZGV4UmFuZ2UgKmluZGV4UmFuZ2UpCiB7Ci0gICAgaWYg
KGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgaWYgKGNvbnRleHQtPmdldENs
aWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ29udGV4dCBkb2VzIG5vdCBzdXBwb3J0
IEdMRVMzLiIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04sICJDb250ZXh0IGRvZXMgbm90IHN1cHBvcnQgR0xFUzMuIikpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKGVuZCA8IHN0YXJ0KQogICAgIHsKLSAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgImVuZCA8
IHN0YXJ0IikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X1ZBTFVFLCAiZW5kIDwgc3RhcnQiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
QEAgLTE0MTcsNyArMTE0NCw3IEBACiAgICAgaWYgKGluZGV4UmFuZ2UtPmVuZCA+IGVuZCB8fCBp
bmRleFJhbmdlLT5zdGFydCA8IHN0YXJ0KQogICAgIHsKICAgICAgICAgLy8gR0wgc3BlYyBzYXlz
IHRoYXQgYmVoYXZpb3IgaW4gdGhpcyBjYXNlIGlzIHVuZGVmaW5lZCAtIGdlbmVyYXRpbmcgYW4g
ZXJyb3IgaXMgZmluZS4KLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoCisgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKAogICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04sICJJbmRpY2VzIGFyZSBvdXQgb2YgdGhlIHN0YXJ0LCBlbmQgcmFuZ2UuIikpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTQyNiw5ICsxMTUzLDkgQEAKIAogYm9vbCBWYWxp
ZGF0ZUdldFVuaWZvcm11aXYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHByb2dyYW0sIEdMaW50
IGxvY2F0aW9uLCBHTHVpbnQqIHBhcmFtcykKIHsKLSAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50
VmVyc2lvbigpIDwgMykKKyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkg
PCAzKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTQz
NywxNyArMTE2NCwxNyBAQAogCiBib29sIFZhbGlkYXRlUmVhZEJ1ZmZlcihDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gc3JjKQogewotICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkg
PCAzKQorICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAg
ewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgRnJhbWVidWZmZXIg
KnJlYWRGQk8gPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFJlYWRGcmFtZWJ1ZmZlcigpOworICAg
IGNvbnN0IEZyYW1lYnVmZmVyICpyZWFkRkJPID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFJl
YWRGcmFtZWJ1ZmZlcigpOwogCiAgICAgaWYgKHJlYWRGQk8gPT0gbnVsbHB0cikKICAgICB7Ci0g
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TiwgIk5vIGFjdGl2ZSByZWFkIGZyYW1lYnVmZmVyLiIpKTsKKyAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiTm8gYWN0aXZlIHJlYWQg
ZnJhbWVidWZmZXIuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xNDU4
LDcgKzExODUsNyBAQAogCiAgICAgaWYgKHNyYyAhPSBHTF9CQUNLICYmIChzcmMgPCBHTF9DT0xP
Ul9BVFRBQ0hNRU5UMCB8fCBzcmMgPiBHTF9DT0xPUl9BVFRBQ0hNRU5UMzEpKQogICAgIHsKLSAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZ2w6OkVycm9yKEdMX0lOVkFMSURfRU5VTSwgIlVu
a25vd24gZW51bSBmb3IgJ3NyYycgaW4gUmVhZEJ1ZmZlciIpKTsKKyAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoZ2w6OkVycm9yKEdMX0lOVkFMSURfRU5VTSwgIlVua25vd24gZW51bSBmb3Ig
J3NyYycgaW4gUmVhZEJ1ZmZlciIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApA
QCAtMTQ2Nyw3ICsxMTk0LDcgQEAKICAgICAgICAgaWYgKHNyYyAhPSBHTF9CQUNLKQogICAgICAg
ICB7CiAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvck1zZyA9ICInc3JjJyBtdXN0IGJlIEdM
X05PTkUgb3IgR0xfQkFDSyB3aGVuIHJlYWRpbmcgZnJvbSB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZl
ci4iOwotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZ2w6OkVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OLCBlcnJvck1zZykpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBlcnJvck1zZykpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtMTQ3OCw3ICsxMjA1LDcgQEAK
ICAgICAgICAgaWYgKGRyYXdCdWZmZXIgPj0gY29udGV4dC0+Z2V0Q2FwcygpLm1heERyYXdCdWZm
ZXJzKQogICAgICAgICB7CiAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvck1zZyA9ICInc3Jj
JyBpcyBncmVhdGVyIHRoYW4gTUFYX0RSQVdfQlVGRkVSUy4iOwotICAgICAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBlcnJvck1zZykp
OworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoZ2w6OkVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OLCBlcnJvck1zZykpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMTQ5NywyNSArMTIyNCw0OSBAQAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgaW1hZ2VTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMdm9pZCAqZGF0YSkKIHsKLSAgICBpZiAoY29udGV4dC0+Z2V0Q2xp
ZW50VmVyc2lvbigpIDwgMykKKyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9u
KCkgPCAzKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAg
IGlmICghVmFsaWRUZXh0dXJlVGFyZ2V0KGNvbnRleHQsIHRhcmdldCkpCisgICAgeworICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIFZhbGlkYXRlIGltYWdlIHNpemUKKyAgICBp
ZiAoIVZhbGlkSW1hZ2VTaXplUGFyYW1ldGVycyhjb250ZXh0LCB0YXJnZXQsIGxldmVsLCB3aWR0
aCwgaGVpZ2h0LCBkZXB0aCwgZmFsc2UpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCiAgICAgY29uc3QgSW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBHZXRJbnRlcm5h
bEZvcm1hdEluZm8oaW50ZXJuYWxmb3JtYXQpOwotICAgIGlmIChpbWFnZVNpemUgPCAwIHx8Ci0g
ICAgICAgIHN0YXRpY19jYXN0PEdMdWludD4oaW1hZ2VTaXplKSAhPQotICAgICAgICAgICAgZm9y
bWF0SW5mby5jb21wdXRlQmxvY2tTaXplKEdMX1VOU0lHTkVEX0JZVEUsIHdpZHRoLCBoZWlnaHQp
KQorICAgIGlmICghZm9ybWF0SW5mby5jb21wcmVzc2VkKQogICAgIHsKLSAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJOb3QgYSB2YWxpZCBjb21wcmVz
c2VkIHRleHR1cmUgZm9ybWF0IikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisg
ICAgYXV0byBibG9ja1NpemVPckVyciA9CisgICAgICAgIGZvcm1hdEluZm8uY29tcHV0ZUNvbXBy
ZXNzZWRJbWFnZVNpemUoR0xfVU5TSUdORURfQllURSwgZ2w6OkV4dGVudHMod2lkdGgsIGhlaWdo
dCwgZGVwdGgpKTsKKyAgICBpZiAoYmxvY2tTaXplT3JFcnIuaXNFcnJvcigpKQorICAgIHsKKyAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmIChpbWFnZVNpemUgPCAwIHx8IHN0YXRp
Y19jYXN0PEdMdWludD4oaW1hZ2VTaXplKSAhPSBibG9ja1NpemVPckVyci5nZXRSZXN1bHQoKSkK
KyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFM
VUUpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIC8vIDNEIHRleHR1cmUg
dGFyZ2V0IHZhbGlkYXRpb24KICAgICBpZiAodGFyZ2V0ICE9IEdMX1RFWFRVUkVfM0QgJiYgdGFy
Z2V0ICE9IEdMX1RFWFRVUkVfMkRfQVJSQVkpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcigKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCiAgICAgICAgICAgICBFcnJv
cihHTF9JTlZBTElEX0VOVU0sICJNdXN0IHNwZWNpZnkgYSB2YWxpZCAzRCB0ZXh0dXJlIGRlc3Rp
bmF0aW9uIHRhcmdldCIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTE1MjIs
NyArMTI3Myw4IEBACiAKICAgICAvLyB2YWxpZGF0ZUVTM1RleEltYWdlRm9ybWF0IHNldHMgdGhl
IGVycm9yIGNvZGUgaWYgdGhlcmUgaXMgYW4gZXJyb3IKICAgICBpZiAoIVZhbGlkYXRlRVMzVGV4
SW1hZ2UzRFBhcmFtZXRlcnMoY29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQs
IHRydWUsIGZhbHNlLCAwLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBHTF9OT05FLCBHTF9OT05FLCBk
YXRhKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgd2lkdGgs
IGhlaWdodCwgZGVwdGgsIGJvcmRlciwgR0xfTk9ORSwgR0xfTk9ORSwgLTEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEpKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KQEAgLTE1MzIsOSArMTI4NCw5IEBACiAKIGJvb2wgVmFsaWRhdGVC
aW5kVmVydGV4QXJyYXkoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGFycmF5KQogewotICAgIGlm
IChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgIGlmIChjb250ZXh0LT5nZXRD
bGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCkBAIC0xNTQzLDkgKzEyOTUsOSBAQAogCiBib29sIFZhbGlkYXRlSXNWZXJ0
ZXhBcnJheShDb250ZXh0ICpjb250ZXh0KQogewotICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRW
ZXJzaW9uKCkgPCAzKQorICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8
IDMpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xNTU4
LDkgKzEzMTAsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYmlu
YXJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGVuZ3RoKQogewotICAgIGlm
IChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgIGlmIChjb250ZXh0LT5nZXRD
bGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCkBAIC0xNTc0LDkgKzEzMjYsOSBAQAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtICpiaW5hcnlGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2b2lkICpiaW5hcnkpCiB7Ci0gICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24o
KSA8IDMpCisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAg
ICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE1ODUsOSArMTMz
Nyw5IEBACiAKIGJvb2wgVmFsaWRhdGVQcm9ncmFtUGFyYW1ldGVyaShDb250ZXh0ICpjb250ZXh0
LCBHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHBuYW1lLCBHTGludCB2YWx1ZSkKIHsKLSAgICBpZiAo
Y29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICBpZiAoY29udGV4dC0+Z2V0Q2xp
ZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJDb250ZXh0IGRvZXMgbm90IHN1cHBvcnQg
R0xFUzMuIikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTiwgIkNvbnRleHQgZG9lcyBub3Qgc3VwcG9ydCBHTEVTMy4iKSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE2MDEsNyArMTM1Myw3IEBACiAgICAgICAgIGNh
c2UgR0xfUFJPR1JBTV9CSU5BUllfUkVUUklFVkFCTEVfSElOVDoKICAgICAgICAgICAgIGlmICh2
YWx1ZSAhPSBHTF9GQUxTRSAmJiB2YWx1ZSAhPSBHTF9UUlVFKQogICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKAorICAgICAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKAogICAgICAgICAgICAgICAgICAgICBHTF9JTlZB
TElEX1ZBTFVFLCAiSW52YWxpZCB2YWx1ZSwgZXhwZWN0ZWQgR0xfRkFMU0Ugb3IgR0xfVFJVRTog
JWkiLCB2YWx1ZSkpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IH0KQEAgLTE2MDgsNyArMTM2MCw3IEBACiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9FTlVNLCAiSW52YWxpZCBwbmFtZTogMHglWCIsIHBuYW1lKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIHBuYW1lOiAw
eCVYIiwgcG5hbWUpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE2
MjcsOSArMTM3OSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQg
bWFzaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbHRlcikKIHsKLSAg
ICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICBpZiAoY29udGV4dC0+
Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIApAQCAtMTY0OCw3ICsxNDAwLDcgQEAKICAgICAgICAgICAgIGlmIChk
cmF3YnVmZmVyIDwgMCB8fAogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMdWludD4oZHJh
d2J1ZmZlcikgPj0gY29udGV4dC0+Z2V0Q2FwcygpLm1heERyYXdCdWZmZXJzKQogICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFM
SURfVkFMVUUpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNjU2LDEzICsxNDA4LDEzIEBACiAgICAg
ICAgIGNhc2UgR0xfU1RFTkNJTDoKICAgICAgICAgICAgIGlmIChkcmF3YnVmZmVyICE9IDApCiAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7
CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0p
KTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE2ODAsMTMgKzE0MzIs
MTMgQEAKICAgICAgICAgICAgIGlmIChkcmF3YnVmZmVyIDwgMCB8fAogICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PEdMdWludD4oZHJhd2J1ZmZlcikgPj0gY29udGV4dC0+Z2V0Q2FwcygpLm1h
eERyYXdCdWZmZXJzKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBA
IC0xNzA0LDcgKzE0NTYsNyBAQAogICAgICAgICAgICAgaWYgKGRyYXdidWZmZXIgPCAwIHx8CiAg
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0x1aW50PihkcmF3YnVmZmVyKSA+PSBjb250ZXh0
LT5nZXRDYXBzKCkubWF4RHJhd0J1ZmZlcnMpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTE3MTIsMTMgKzE0NjQsMTMgQEAKICAgICAgICAgY2FzZSBHTF9ERVBUSDoK
ICAgICAgICAgICAgIGlmIChkcmF3YnVmZmVyICE9IDApCiAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwor
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFM
VUUpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBicmVhazsKIAogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKQEAgLTE3MzYsMTMgKzE0ODgsMTMgQEAKICAgICAgICAgY2FzZSBH
TF9ERVBUSF9TVEVOQ0lMOgogICAgICAgICAgICAgaWYgKGRyYXdidWZmZXIgIT0gMCkKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTc1MSw5ICsxNTAzLDkgQEAK
IAogYm9vbCBWYWxpZGF0ZURyYXdCdWZmZXJzKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBH
THNpemVpIG4sIGNvbnN0IEdMZW51bSAqYnVmcykKIHsKLSAgICBpZiAoY29udGV4dC0+Z2V0Q2xp
ZW50VmVyc2lvbigpIDwgMykKKyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9u
KCkgPCAzKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04sICJDb250ZXh0IGRvZXMgbm90IHN1cHBvcnQgR0xFUzMuIikpOworICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkNv
bnRleHQgZG9lcyBub3Qgc3VwcG9ydCBHTEVTMy4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKQEAgLTE3NzEsOSArMTUyMyw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGhlaWdodCkKIHsKLSAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykK
KyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKLSAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsK
KyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTc5MywxNyArMTU0NSw0NiBA
QAogICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscykKIHsKLSAgICBpZiAoY29udGV4dC0+Z2V0Q2xp
ZW50VmVyc2lvbigpIDwgMykKKyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9u
KCkgPCAzKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAg
IHJldHVybiBWYWxpZGF0ZUVTM1RleEltYWdlM0RQYXJhbWV0ZXJzKGNvbnRleHQsIHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCBmYWxzZSwgZmFsc2UsIDAsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJv
cmRlciwgZm9ybWF0LCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAsIDAsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwg
LTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxzKTsK
IH0KIAorYm9vbCBWYWxpZGF0ZVRleEltYWdlM0RSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBib3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNp
emUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcGl4
ZWxzKQoreworICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCisg
ICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZGF0
ZVJvYnVzdEVudHJ5UG9pbnQoY29udGV4dCwgYnVmU2l6ZSkpCisgICAgeworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIFZhbGlkYXRlRVMzVGV4SW1hZ2UzRFBhcmFt
ZXRlcnMoY29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIGZhbHNlLCBmYWxz
ZSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCB3
aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmU2l6ZSwgcGl4ZWxzKTsKK30KKwogYm9v
bCBWYWxpZGF0ZVRleFN1YkltYWdlM0QoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsZXZlbCwKQEAgLTE4MTcsMTcgKzE1OTgsNDcgQEAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2
b2lkICpwaXhlbHMpCiB7Ci0gICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMp
CisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7Ci0g
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7
CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICByZXR1cm4gVmFsaWRhdGVF
UzNUZXhJbWFnZTNEUGFyYW1ldGVycyhjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBHTF9OT05FLCBm
YWxzZSwgdHJ1ZSwgeG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgMCwgZm9ybWF0
LCB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVs
cyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsIHBpeGVs
cyk7CiB9CiAKK2Jvb2wgVmFsaWRhdGVUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHlvZmZzZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHpvZmZzZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRlcHRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscykKK3sKKyAgICBpZiAoY29udGV4dC0+
Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGlmICghVmFsaWRhdGVSb2J1c3RFbnRyeVBvaW50KGNvbnRleHQs
IGJ1ZlNpemUpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJl
dHVybiBWYWxpZGF0ZUVTM1RleEltYWdlM0RQYXJhbWV0ZXJzKGNvbnRleHQsIHRhcmdldCwgbGV2
ZWwsIEdMX05PTkUsIGZhbHNlLCB0cnVlLCB4b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRl
cHRoLCAwLCBmb3JtYXQsIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnVmU2l6ZSwgcGl4ZWxzKTsKK30KKwogYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRU
ZXhTdWJJbWFnZTNEKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsZXZlbCwKQEAgLTE4NDEsMjkgKzE2NTIsMzQgQEAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGltYWdlU2l6ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmRhdGEpCiB7Ci0gICAgaWYg
KGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgaWYgKGNvbnRleHQtPmdldENs
aWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKICAgICBjb25zdCBJbnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9IEdldElu
dGVybmFsRm9ybWF0SW5mbyhmb3JtYXQpOwotICAgIGlmIChpbWFnZVNpemUgPCAwIHx8Ci0gICAg
ICAgIHN0YXRpY19jYXN0PEdMdWludD4oaW1hZ2VTaXplKSAhPQotICAgICAgICAgICAgZm9ybWF0
SW5mby5jb21wdXRlQmxvY2tTaXplKEdMX1VOU0lHTkVEX0JZVEUsIHdpZHRoLCBoZWlnaHQpKQor
ICAgIGF1dG8gYmxvY2tTaXplT3JFcnIgPQorICAgICAgICBmb3JtYXRJbmZvLmNvbXB1dGVDb21w
cmVzc2VkSW1hZ2VTaXplKEdMX1VOU0lHTkVEX0JZVEUsIGdsOjpFeHRlbnRzKHdpZHRoLCBoZWln
aHQsIGRlcHRoKSk7CisgICAgaWYgKGJsb2NrU2l6ZU9yRXJyLmlzRXJyb3IoKSkKICAgICB7Ci0g
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoYmxvY2tTaXplT3JFcnIuZ2V0RXJyb3IoKSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CisgICAgaWYgKGltYWdlU2l6ZSA8IDAgfHwgc3Rh
dGljX2Nhc3Q8R0x1aW50PihpbWFnZVNpemUpICE9IGJsb2NrU2l6ZU9yRXJyLmdldFJlc3VsdCgp
KQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCiAgICAgaWYgKCFkYXRhKQog
ICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSkpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVF
KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICByZXR1cm4gVmFsaWRhdGVF
UzNUZXhJbWFnZTNEUGFyYW1ldGVycyhjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBHTF9OT05FLCB0
cnVlLCB0cnVlLCAwLCAwLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCAwLCBHTF9OT05FLCBHTF9OT05FLCBkYXRhKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0
LCBkZXB0aCwgMCwgR0xfTk9ORSwgR0xfTk9ORSwgLTEsIGRhdGEpOwogfQogCiBib29sIFZhbGlk
YXRlR2VuUXVlcmllcyhDb250ZXh0ICpjb250ZXh0LCBHTGludCBuLCBHTHVpbnQgKikKQEAgLTE5
MDMsNyArMTcxOSw3IEBACiAgICAgICAgIGlmICh0cmFuc2Zvcm1GZWVkYmFjayAhPSBudWxscHRy
ICYmIHRyYW5zZm9ybUZlZWRiYWNrLT5pc0FjdGl2ZSgpKQogICAgICAgICB7CiAgICAgICAgICAg
ICAvLyBFUyAzLjAuNCBzZWN0aW9uIDIuMTUuMSBwYWdlIDg2Ci0gICAgICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcigKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAogICAgICAg
ICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQXR0ZW1wdCB0byBkZWxldGUg
YWN0aXZlIHRyYW5zZm9ybSBmZWVkYmFjay4iKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KQEAgLTE5MjMsOSArMTczOSw5IEBACiAKIGJvb2wgVmFsaWRhdGVHZW5PckRl
bGV0ZUVTMyhDb250ZXh0ICpjb250ZXh0LCBHTGludCBuKQogewotICAgIGlmIChjb250ZXh0LT5n
ZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZl
cnNpb24oKSA8IDMpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTiwgIkNvbnRleHQgZG9lcyBub3Qgc3VwcG9ydCBHTEVTMy4iKSk7
CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCAiQ29udGV4dCBkb2VzIG5vdCBzdXBwb3J0IEdMRVMzLiIpKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICByZXR1cm4gVmFsaWRhdGVHZW5PckRlbGV0ZShjb250ZXh0LCBuKTsK
QEAgLTE5MzMsMTQgKzE3NDksMTQgQEAKIAogYm9vbCBWYWxpZGF0ZUdlbk9yRGVsZXRlQ291bnRF
UzMoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgY291bnQpCiB7Ci0gICAgaWYgKGNvbnRleHQtPmdl
dENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVy
c2lvbigpIDwgMykKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLCAiQ29udGV4dCBkb2VzIG5vdCBzdXBwb3J0IEdMRVMzLiIpKTsK
KyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04s
ICJDb250ZXh0IGRvZXMgbm90IHN1cHBvcnQgR0xFUzMuIikpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogICAgIGlmIChjb3VudCA8IDApCiAgICAgewotICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiY291bnQgPCAwIikpOworICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiY291bnQgPCAw
IikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpAQCAt
MTk0OCw5ICsxNzY0LDkgQEAKIAogYm9vbCBWYWxpZGF0ZUJlZ2luVHJhbnNmb3JtRmVlZGJhY2so
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHByaW1pdGl2ZU1vZGUpCiB7Ci0gICAgaWYgKGNvbnRl
eHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1h
am9yVmVyc2lvbigpIDwgMykKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ29udGV4dCBkb2VzIG5vdCBzdXBwb3J0IEdMRVMz
LiIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04sICJDb250ZXh0IGRvZXMgbm90IHN1cHBvcnQgR0xFUzMuIikpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICAgIHN3aXRjaCAocHJpbWl0aXZlTW9kZSkKQEAgLTE5NjEsNzAg
KzE3NzcsNTYgQEAKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZh
bGlkIHByaW1pdGl2ZSBtb2RlLiIpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgcHJpbWl0aXZlIG1vZGUuIikpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFRyYW5zZm9ybUZlZWRiYWNrICp0
cmFuc2Zvcm1GZWVkYmFjayA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0Q3VycmVudFRyYW5zZm9y
bUZlZWRiYWNrKCk7CisgICAgVHJhbnNmb3JtRmVlZGJhY2sgKnRyYW5zZm9ybUZlZWRiYWNrID0g
Y29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpOwogICAg
IEFTU0VSVCh0cmFuc2Zvcm1GZWVkYmFjayAhPSBudWxscHRyKTsKIAogICAgIGlmICh0cmFuc2Zv
cm1GZWVkYmFjay0+aXNBY3RpdmUoKSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiVHJhbnNmb3JtIGZlZWRiYWNrIGlzIGFs
cmVhZHkgYWN0aXZlLiIpKTsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sICJUcmFuc2Zvcm0gZmVlZGJhY2sgaXMgYWxyZWFkeSBhY3RpdmUu
IikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcmkoQ29udGV4dCAqY29udGV4dCwgR0x1aW50
IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCitib29sIFZhbGlkYXRlR2V0QnVm
ZmVyUG9pbnRlcnYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1l
LCBHTHZvaWQgKipwYXJhbXMpCiB7Ci0gICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24o
KSA8IDMpCisgICAgcmV0dXJuIFZhbGlkYXRlR2V0QnVmZmVyUG9pbnRlcnZCYXNlKGNvbnRleHQs
IHRhcmdldCwgcG5hbWUsIG51bGxwdHIsIHBhcmFtcyk7Cit9CisKK2Jvb2wgVmFsaWRhdGVHZXRC
dWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x2b2lkICoqcGFyYW1zKQorewor
ICAgIGlmICghVmFsaWRhdGVSb2J1c3RFbnRyeVBvaW50KGNvbnRleHQsIGJ1ZlNpemUpKQogICAg
IHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04sICJDb250ZXh0IGRvZXMgbm90IHN1cHBvcnQgR0xFUzMuIikpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFjb250ZXh0LT5pc1NhbXBsZXIoc2FtcGxlcikpCisg
ICAgaWYgKCFWYWxpZGF0ZUdldEJ1ZmZlclBvaW50ZXJ2QmFzZShjb250ZXh0LCB0YXJnZXQsIHBu
YW1lLCBsZW5ndGgsIHBhcmFtcykpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCi0gICAgaWYgKCFWYWxpZGF0ZVNhbXBsZXJPYmplY3RQYXJhbWV0ZXIoY29udGV4dCwg
cG5hbWUpKQorICAgIGlmICghVmFsaWRhdGVSb2J1c3RCdWZmZXJTaXplKGNvbnRleHQsIGJ1ZlNp
emUsICpsZW5ndGgpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IGlmICghVmFsaWRhdGVUZXhQYXJhbVBhcmFtZXRlcnMoY29udGV4dCwgcG5hbWUsIHBhcmFtKSkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyZihDb250ZXh0ICpjb250ZXh0LCBHTHVp
bnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQotewotICAgIC8vIFRoZSBv
bmx5IGZsb2F0IHBhcmFtZXRlcnMgYXJlIE1JTl9MT0QgYW5kIE1BWF9MT0QuIEZvciB0aGVzZSBh
bnkgdmFsdWUgaXMgcGVybWlzc2libGUsIHNvCi0gICAgLy8gVmFsaWRhdGVTYW1wbGVyUGFyYW1l
dGVyaSBjYW4gYmUgdXNlZCBmb3IgdmFsaWRhdGlvbiBoZXJlLgotICAgIHJldHVybiBWYWxpZGF0
ZVNhbXBsZXJQYXJhbWV0ZXJpKGNvbnRleHQsIHNhbXBsZXIsIHBuYW1lLCBzdGF0aWNfY2FzdDxH
TGludD4ocGFyYW0pKTsKLX0KLQotYm9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBvaW50ZXJ2KENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0x2b2lkICoqcGFyYW1z
KQotewotICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQotICAgIHsKLSAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJD
b250ZXh0IGRvZXMgbm90IHN1cHBvcnQgR0xFUzMuIikpOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCi0gICAgcmV0dXJuIFZhbGlkYXRlR2V0QnVmZmVyUG9pbnRlcnZCYXNlKGNvbnRl
eHQsIHRhcmdldCwgcG5hbWUsIHBhcmFtcyk7Ci19Ci0KIGJvb2wgVmFsaWRhdGVVbm1hcEJ1ZmZl
cihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0KQogewotICAgIGlmIChjb250ZXh0LT5n
ZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZl
cnNpb24oKSA8IDMpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CkBAIC0yMDM3LDkgKzE4MzksOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWlwdHIgbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQgYWNj
ZXNzKQogewotICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgIGlm
IChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgewotICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkNvbnRleHQg
ZG9lcyBub3Qgc3VwcG9ydCBHTEVTMy4iKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ29udGV4dCBkb2VzIG5vdCBzdXBwb3J0IEdM
RVMzLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjA1MSw5ICsxODUz
LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgbGVuZ3Ro
KQogewotICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgIGlmIChj
b250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgewotICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkNvbnRleHQgZG9l
cyBub3Qgc3VwcG9ydCBHTEVTMy4iKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ29udGV4dCBkb2VzIG5vdCBzdXBwb3J0IEdMRVMz
LiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjA2MCw0ICsxODYyLDE0
NyBAQAogICAgIHJldHVybiBWYWxpZGF0ZUZsdXNoTWFwcGVkQnVmZmVyUmFuZ2VCYXNlKGNvbnRl
eHQsIHRhcmdldCwgb2Zmc2V0LCBsZW5ndGgpOwogfQogCitib29sIFZhbGlkYXRlSW5kZXhlZFN0
YXRlUXVlcnkoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICps
ZW5ndGgpCit7CisgICAgaWYgKGxlbmd0aCkKKyAgICB7CisgICAgICAgICpsZW5ndGggPSAwOwor
ICAgIH0KKworICAgIEdMZW51bSBuYXRpdmVUeXBlOworICAgIHVuc2lnbmVkIGludCBudW1QYXJh
bXM7CisgICAgaWYgKCFjb250ZXh0LT5nZXRJbmRleGVkUXVlcnlQYXJhbWV0ZXJJbmZvKHBuYW1l
LCAmbmF0aXZlVHlwZSwgJm51bVBhcmFtcykpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGNvbnN0IENhcHMgJmNhcHMgPSBjb250ZXh0LT5nZXRDYXBzKCk7CisgICAg
c3dpdGNoIChwbmFtZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURCQUNL
X0JVRkZFUl9TVEFSVDoKKyAgICAgICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVS
X1NJWkU6CisgICAgICAgIGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5H
OgorICAgICAgICAgICAgaWYgKGluZGV4ID49IGNhcHMubWF4VHJhbnNmb3JtRmVlZGJhY2tTZXBh
cmF0ZUF0dHJpYnV0ZXMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGNhc2UgR0xfVU5JRk9STV9CVUZGRVJfU1RBUlQ6CisgICAgICAgIGNhc2UgR0xfVU5JRk9STV9C
VUZGRVJfU0laRToKKyAgICAgICAgY2FzZSBHTF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HOgorICAg
ICAgICAgICAgaWYgKGluZGV4ID49IGNhcHMubWF4VW5pZm9ybUJ1ZmZlckJpbmRpbmdzKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9NQVhfQ09NUFVURV9X
T1JLX0dST1VQX1NJWkU6CisgICAgICAgIGNhc2UgR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9D
T1VOVDoKKyAgICAgICAgICAgIGlmIChpbmRleCA+PSAzdSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBpZiAobGVuZ3RoKQorICAgIHsKKyAgICAgICAgKmxlbmd0aCA9IDE7Cisg
ICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVHZXRJbnRlZ2VyaV92
KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgs
IEdMaW50ICpkYXRhKQoreworICAgIGlmICghY29udGV4dC0+Z2V0R0xWZXJzaW9uKCkuaXNFUzNP
ckdyZWF0ZXIoKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLCAiQ29udGV4dCBkb2VzIG5vdCBzdXBwb3J0IEdMRVMzLjAiKSk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIFZhbGlkYXRlSW5kZXhl
ZFN0YXRlUXVlcnkoY29udGV4dCwgdGFyZ2V0LCBpbmRleCwgbnVsbHB0cik7Cit9CisKK2Jvb2wg
VmFsaWRhdGVHZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpkYXRhKQoreworICAgIGlm
ICghY29udGV4dC0+Z2V0R0xWZXJzaW9uKCkuaXNFUzNPckdyZWF0ZXIoKSkKKyAgICB7CisgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ29u
dGV4dCBkb2VzIG5vdCBzdXBwb3J0IEdMRVMzLjAiKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBpZiAoIVZhbGlkYXRlUm9idXN0RW50cnlQb2ludChjb250ZXh0LCBidWZT
aXplKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIVZh
bGlkYXRlSW5kZXhlZFN0YXRlUXVlcnkoY29udGV4dCwgdGFyZ2V0LCBpbmRleCwgbGVuZ3RoKSkK
KyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlkYXRl
Um9idXN0QnVmZmVyU2l6ZShjb250ZXh0LCBidWZTaXplLCAqbGVuZ3RoKSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBW
YWxpZGF0ZUdldEludGVnZXI2NGlfdihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGludDY0ICpkYXRhKQoreworICAgIGlmICghY29udGV4
dC0+Z2V0R0xWZXJzaW9uKCkuaXNFUzNPckdyZWF0ZXIoKSkKKyAgICB7CisgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ29udGV4dCBkb2Vz
IG5vdCBzdXBwb3J0IEdMRVMzLjAiKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgcmV0dXJuIFZhbGlkYXRlSW5kZXhlZFN0YXRlUXVlcnkoY29udGV4dCwgdGFyZ2V0LCBpbmRl
eCwgbnVsbHB0cik7Cit9CisKK2Jvb2wgVmFsaWRhdGVHZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdM
RShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50NjQgKmRhdGEpCit7CisgICAgaWYgKCFjb250ZXh0LT5nZXRHTFZl
cnNpb24oKS5pc0VTM09yR3JlYXRlcigpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJDb250ZXh0IGRvZXMgbm90IHN1cHBv
cnQgR0xFUzMuMCIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICgh
VmFsaWRhdGVSb2J1c3RFbnRyeVBvaW50KGNvbnRleHQsIGJ1ZlNpemUpKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghVmFsaWRhdGVJbmRleGVkU3RhdGVR
dWVyeShjb250ZXh0LCB0YXJnZXQsIGluZGV4LCBsZW5ndGgpKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghVmFsaWRhdGVSb2J1c3RCdWZmZXJTaXplKGNv
bnRleHQsIGJ1ZlNpemUsICpsZW5ndGgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiB9ICAvLyBuYW1lc3BhY2UgZ2wKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRp
b25FUzMuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBA
QAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYm9yZGVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbWFnZVNpemUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscyk7
CiAKIGJvb2wgVmFsaWRhdGVFUzNUZXhTdG9yYWdlUGFyYW1ldGVycyhDb250ZXh0ICpjb250ZXh0
LApAQCAtNTcsNiArNTgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGJvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW1hZ2VT
aXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAq
cGl4ZWxzKTsKIAogYm9vbCBWYWxpZGF0ZUVTM1RleEltYWdlM0RQYXJhbWV0ZXJzKENvbnRleHQg
KmNvbnRleHQsCkBAIC03NCw2ICs3Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgYm9yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
dm9pZCAqcGl4ZWxzKTsKIAogYm9vbCBWYWxpZGF0ZUVTM0NvcHlUZXhJbWFnZVBhcmFtZXRlcnNC
YXNlKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LApAQCAtMTUzLDggKzE1Niw2IEBACiBib29s
IFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVsLCBHTGludCBsYXllcik7CiAKLWJv
b2wgVmFsaWRFUzNSZWFkRm9ybWF0VHlwZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gaW50ZXJu
YWxGb3JtYXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlKTsKLQogYm9vbCBWYWxpZGF0ZUVT
M1JlbmRlcmJ1ZmZlclN0b3JhZ2VQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0
YXJnZXQsIEdMc2l6ZWkgc2FtcGxlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0KTsKIApAQCAtMjUyLDYgKzI1MywxOCBAQAogICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwaXhlbHMpOworYm9vbCBWYWxp
ZGF0ZVRleEltYWdlM0RSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBi
b3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcGl4ZWxzKTsKIGJvb2wgVmFs
aWRhdGVUZXhTdWJJbWFnZTNEKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bGV2ZWwsCkBAIC0yNjQsNiArMjc3LDE5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscyk7Citib29sIFZh
bGlkYXRlVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCB6b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0x2b2lkICpwaXhlbHMpOwogYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTNE
KENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsZXZlbCwKQEAgLTI5MSwxMCArMzE3LDEzIEBACiAKIGJvb2wgVmFsaWRhdGVCZWdpblRyYW5z
Zm9ybUZlZWRiYWNrKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwcmltaXRpdmVNb2RlKTsKIAot
Ym9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJpKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBz
YW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKLWJvb2wgVmFsaWRhdGVTYW1wbGVy
UGFyYW1ldGVyZihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1l
LCBHTGZsb2F0IHBhcmFtKTsKLQogYm9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBvaW50ZXJ2KENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0x2b2lkICoqcGFyYW1z
KTsKK2Jvb2wgVmFsaWRhdGVHZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKENvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x2b2lkICoqcGFyYW1zKTsKIGJvb2wgVmFsaWRhdGVVbm1hcEJ1ZmZlcihDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdGFyZ2V0KTsKIGJvb2wgVmFsaWRhdGVNYXBCdWZmZXJSYW5nZShDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCkBA
IC0zMDYsNiArMzM1LDI3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludHB0ciBvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpcHRyIGxlbmd0aCk7CiAKK2Jvb2wgVmFsaWRhdGVJbmRleGVkU3RhdGVRdWVyeShWYWxpZGF0
aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCk7Citib29sIFZh
bGlkYXRlR2V0SW50ZWdlcmlfdihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRh
cmdldCwgR0x1aW50IGluZGV4LCBHTGludCAqZGF0YSk7Citib29sIFZhbGlkYXRlR2V0SW50ZWdl
cmlfdlJvYnVzdEFOR0xFKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCAqZGF0YSk7Citib29sIFZhbGlkYXRlR2V0SW50ZWdlcjY0
aV92KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
aW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50NjQgKmRhdGEpOworYm9v
bCBWYWxpZGF0ZUdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFKFZhbGlkYXRpb25Db250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlu
ZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVm
U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICps
ZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQ2NCAq
ZGF0YSk7CiB9ICAvLyBuYW1lc3BhY2UgZ2wKIAogI2VuZGlmIC8vIExJQkFOR0xFX1ZBTElEQVRJ
T05fRVMzX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFs
aWRhdGlvbkVTMzEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS92YWxpZGF0aW9uRVMzMS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMxLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDY3IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gdmFsaWRhdGlvbkVTMzEu
Y3BwOiBWYWxpZGF0aW9uIGZ1bmN0aW9ucyBmb3IgT3BlbkdMIEVTIDMuMSBlbnRyeSBwb2ludCBw
YXJhbWV0ZXJzCisKKyNpbmNsdWRlICJsaWJBTkdMRS92YWxpZGF0aW9uRVMzMS5oIgorCisjaW5j
bHVkZSAibGliQU5HTEUvQ29udGV4dC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3ZhbGlkYXRpb25F
Uy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3ZhbGlkYXRpb25FUzMuaCIKKwordXNpbmcgbmFtZXNw
YWNlIGFuZ2xlOworCituYW1lc3BhY2UgZ2wKK3sKKworYm9vbCBWYWxpZGF0ZUdldEJvb2xlYW5p
X3YoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGJvb2xl
YW4gKmRhdGEpCit7CisgICAgaWYgKCFjb250ZXh0LT5nZXRHTFZlcnNpb24oKS5pc0VTMzEoKSkK
KyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OLCAiQ29udGV4dCBkb2VzIG5vdCBzdXBwb3J0IEdMRVMzLjEiKSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlkYXRlSW5kZXhlZFN0YXRlUXVlcnko
Y29udGV4dCwgdGFyZ2V0LCBpbmRleCwgbnVsbHB0cikpCisgICAgeworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVHZXRC
b29sZWFuaV92Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xib29sZWFuICpkYXRhKQoreworICAgIGlmICghY29udGV4dC0+Z2V0R0xW
ZXJzaW9uKCkuaXNFUzMxKCkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkNvbnRleHQgZG9lcyBub3Qgc3VwcG9ydCBHTEVT
My4xIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZGF0
ZVJvYnVzdEVudHJ5UG9pbnQoY29udGV4dCwgYnVmU2l6ZSkpCisgICAgeworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZGF0ZUluZGV4ZWRTdGF0ZVF1ZXJ5KGNv
bnRleHQsIHRhcmdldCwgaW5kZXgsIGxlbmd0aCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEJ1ZmZlclNpemUoY29udGV4dCwg
YnVmU2l6ZSwgKmxlbmd0aCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBnbApJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMxLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMx
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3ZhbGlkYXRpb25FUzMxLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAorLy8KKy8v
IENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisKKy8vIHZhbGlkYXRpb25FUzMxLmg6IFZhbGlkYXRpb24gZnVuY3Rpb25zIGZvciBP
cGVuR0wgRVMgMy4xIGVudHJ5IHBvaW50IHBhcmFtZXRlcnMKKworI2lmbmRlZiBMSUJBTkdMRV9W
QUxJREFUSU9OX0VTMzFfSF8KKyNkZWZpbmUgTElCQU5HTEVfVkFMSURBVElPTl9FUzMxX0hfCisK
KyNpbmNsdWRlIDxHTEVTMy9nbDMxLmg+CisKK25hbWVzcGFjZSBnbAoreworY2xhc3MgQ29udGV4
dDsKKworYm9vbCBWYWxpZGF0ZUdldEJvb2xlYW5pX3YoQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGJvb2xlYW4gKmRhdGEpOworYm9vbCBWYWxpZGF0ZUdl
dEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGJvb2xlYW4gKmRhdGEpOworCit9ICAvLyBuYW1lc3BhY2UgZ2wKKwor
I2VuZGlmICAvLyBMSUJBTkdMRV9WQUxJREFUSU9OX0VTMzFfSF8KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVNfdW5pdHRlc3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9u
RVNfdW5pdHRlc3QuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTX3VuaXR0ZXN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTAsNyArMTAsNyBAQAogI2luY2x1ZGUgPGdtb2NrL2dtb2NrLmg+CiAjaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KIAotI2luY2x1ZGUgImxpYkFOR0xFL0RhdGEuaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9Db250ZXh0U3RhdGUuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9GcmFt
ZWJ1ZmZlckltcGxfbW9jay5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1Byb2dyYW1J
bXBsX21vY2suaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9UZXh0dXJlSW1wbF9tb2Nr
LmgiCkBAIC0yNiwxOSArMjYsMTIgQEAKIG5hbWVzcGFjZQogewogCi1jbGFzcyBNb2NrRmFjdG9y
eSA6IHB1YmxpYyBOdWxsRmFjdG9yeQotewotICBwdWJsaWM6Ci0gICAgTU9DS19NRVRIT0QxKGNy
ZWF0ZUZyYW1lYnVmZmVyLCBGcmFtZWJ1ZmZlckltcGwgKihjb25zdCBnbDo6RnJhbWVidWZmZXI6
OkRhdGEgJikpOwotICAgIE1PQ0tfTUVUSE9EMShjcmVhdGVQcm9ncmFtLCBQcm9ncmFtSW1wbCAq
KGNvbnN0IGdsOjpQcm9ncmFtOjpEYXRhICYpKTsKLSAgICBNT0NLX01FVEhPRDEoY3JlYXRlVmVy
dGV4QXJyYXksIFZlcnRleEFycmF5SW1wbCAqKGNvbnN0IGdsOjpWZXJ0ZXhBcnJheTo6RGF0YSAm
KSk7Ci19OwotCiBjbGFzcyBNb2NrVmFsaWRhdGlvbkNvbnRleHQgOiBwdWJsaWMgVmFsaWRhdGlv
bkNvbnRleHQKIHsKICAgcHVibGljOgotICAgIE1vY2tWYWxpZGF0aW9uQ29udGV4dChHTGludCBj
bGllbnRWZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdGF0ZSAmc3Rh
dGUsCisgICAgTW9ja1ZhbGlkYXRpb25Db250ZXh0KEdMaW50IG1ham9yQ2xpZW50VmVyc2lvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbWlub3JDbGllbnRWZXJzaW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSAqc3RhdGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IENhcHMgJmNhcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRleHR1cmVDYXBzTWFwICZ0ZXh0dXJlQ2FwcywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgRXh0ZW5zaW9ucyAmZXh0ZW5zaW9ucywKQEAgLTQ2LDExICszOSwxMiBAQAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBMaW1pdGF0aW9ucyAmbGltaXRhdGlvbnMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2tpcFZhbGlkYXRpb24pOwogCi0gICAgTU9DS19N
RVRIT0QxKHJlY29yZEVycm9yLCB2b2lkKGNvbnN0IEVycm9yICYpKTsKKyAgICBNT0NLX01FVEhP
RDEoaGFuZGxlRXJyb3IsIHZvaWQoY29uc3QgRXJyb3IgJikpOwogfTsKIAotTW9ja1ZhbGlkYXRp
b25Db250ZXh0OjpNb2NrVmFsaWRhdGlvbkNvbnRleHQoR0xpbnQgY2xpZW50VmVyc2lvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0YXRlICZz
dGF0ZSwKK01vY2tWYWxpZGF0aW9uQ29udGV4dDo6TW9ja1ZhbGlkYXRpb25Db250ZXh0KEdMaW50
IG1ham9yQ2xpZW50VmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IG1pbm9yQ2xpZW50VmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlICpzdGF0ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENhcHMgJmNhcHMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXh0dXJlQ2Fwc01hcCAm
dGV4dHVyZUNhcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBFeHRlbnNpb25zICZleHRlbnNpb25zLApAQCAtNTcsNyArNTEsOCBAQAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VNYW5h
Z2VyICpyZXNvdXJjZU1hbmFnZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBMaW1pdGF0aW9ucyAmbGltaXRhdGlvbnMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNraXBWYWxpZGF0aW9uKQotICAg
IDogVmFsaWRhdGlvbkNvbnRleHQoY2xpZW50VmVyc2lvbiwKKyAgICA6IFZhbGlkYXRpb25Db250
ZXh0KG1ham9yQ2xpZW50VmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbm9yQ2xp
ZW50VmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgY2FwcywKICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmVDYXBzLApA
QCAtNzcsNyArNzIsNyBAQAogICAgIGF1dG8gcHJvZ3JhbUltcGwgICAgID0gTWFrZVByb2dyYW1N
b2NrKCk7CiAKICAgICAvLyBUT0RPKGptYWRpbGwpOiBHZW5lcmFsaXplIHNvbWUgb2YgdGhpcyBj
b2RlIHNvIHdlIGNhbiByZS11c2UgaXQgZm9yIG90aGVyIHRlc3RzLgotICAgIE5pY2VNb2NrPE1v
Y2tGYWN0b3J5PiBtb2NrRmFjdG9yeTsKKyAgICBOaWNlTW9jazxNb2NrR0xGYWN0b3J5PiBtb2Nr
RmFjdG9yeTsKICAgICBFWFBFQ1RfQ0FMTChtb2NrRmFjdG9yeSwgY3JlYXRlRnJhbWVidWZmZXIo
XykpLldpbGxPbmNlKFJldHVybihmcmFtZWJ1ZmZlckltcGwpKTsKICAgICBFWFBFQ1RfQ0FMTCht
b2NrRmFjdG9yeSwgY3JlYXRlUHJvZ3JhbShfKSkuV2lsbE9uY2UoUmV0dXJuKHByb2dyYW1JbXBs
KSk7CiAgICAgRVhQRUNUX0NBTEwobW9ja0ZhY3RvcnksIGNyZWF0ZVZlcnRleEFycmF5KF8pKS5X
aWxsT25jZShSZXR1cm4obnVsbHB0cikpOwpAQCAtOTIsMTMgKzg3LDE0IEBACiAgICAgY2Fwcy5t
YXhFbGVtZW50SW5kZXggICAgID0gMTAwOwogICAgIGNhcHMubWF4RHJhd0J1ZmZlcnMgICAgICA9
IDE7CiAgICAgY2Fwcy5tYXhDb2xvckF0dGFjaG1lbnRzID0gMTsKLSAgICBzdGF0ZS5pbml0aWFs
aXplKGNhcHMsIGV4dGVuc2lvbnMsIDMsIGZhbHNlKTsKKyAgICBzdGF0ZS5pbml0aWFsaXplKGNh
cHMsIGV4dGVuc2lvbnMsIDMsIGZhbHNlLCB0cnVlKTsKIAogICAgIE5pY2VNb2NrPE1vY2tUZXh0
dXJlSW1wbD4gKnRleHR1cmVJbXBsID0gbmV3IE5pY2VNb2NrPE1vY2tUZXh0dXJlSW1wbD4oKTsK
KyAgICBFWFBFQ1RfQ0FMTChtb2NrRmFjdG9yeSwgY3JlYXRlVGV4dHVyZShfKSkuV2lsbE9uY2Uo
UmV0dXJuKHRleHR1cmVJbXBsKSk7CiAgICAgRVhQRUNUX0NBTEwoKnRleHR1cmVJbXBsLCBzZXRT
dG9yYWdlKF8sIF8sIF8sIF8pKS5XaWxsT25jZShSZXR1cm4oRXJyb3IoR0xfTk9fRVJST1IpKSk7
CiAgICAgRVhQRUNUX0NBTEwoKnRleHR1cmVJbXBsLCBkZXN0cnVjdG9yKCkpLlRpbWVzKDEpLlJl
dGlyZXNPblNhdHVyYXRpb24oKTsKIAotICAgIFRleHR1cmUgKnRleHR1cmUgPSBuZXcgVGV4dHVy
ZSh0ZXh0dXJlSW1wbCwgMCwgR0xfVEVYVFVSRV8yRCk7CisgICAgVGV4dHVyZSAqdGV4dHVyZSA9
IG5ldyBUZXh0dXJlKCZtb2NrRmFjdG9yeSwgMCwgR0xfVEVYVFVSRV8yRCk7CiAgICAgdGV4dHVy
ZS0+YWRkUmVmKCk7CiAgICAgdGV4dHVyZS0+c2V0U3RvcmFnZShHTF9URVhUVVJFXzJELCAxLCBH
TF9SR0JBOCwgRXh0ZW50cygxLCAxLCAwKSk7CiAKQEAgLTExMiwxMiArMTA4LDEyIEBACiAgICAg
c3RhdGUuc2V0RHJhd0ZyYW1lYnVmZmVyQmluZGluZyhmcmFtZWJ1ZmZlcik7CiAgICAgc3RhdGUu
c2V0UHJvZ3JhbShwcm9ncmFtKTsKIAotICAgIE5pY2VNb2NrPE1vY2tWYWxpZGF0aW9uQ29udGV4
dD4gdGVzdENvbnRleHQoMywgc3RhdGUsIGNhcHMsIHRleHR1cmVDYXBzLCBleHRlbnNpb25zLCBu
dWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bGltaXRhdGlvbnMsIGZhbHNlKTsKKyAgICBOaWNlTW9jazxNb2NrVmFsaWRhdGlvbkNvbnRleHQ+
IHRlc3RDb250ZXh0KDMsIDAsICZzdGF0ZSwgY2FwcywgdGV4dHVyZUNhcHMsIGV4dGVuc2lvbnMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRy
LCBsaW1pdGF0aW9ucywgZmFsc2UpOwogCiAgICAgLy8gU2V0IHRoZSBleHBlY3RhdGlvbiBmb3Ig
dGhlIHZhbGlkYXRpb24gZXJyb3IgaGVyZS4KICAgICBFcnJvciBleHBlY3RlZEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCBnX0V4Y2VlZHNNYXhFbGVtZW50RXJyb3JNZXNzYWdlKTsKLSAgICBF
WFBFQ1RfQ0FMTCh0ZXN0Q29udGV4dCwgcmVjb3JkRXJyb3IoZXhwZWN0ZWRFcnJvcikpLlRpbWVz
KDEpOworICAgIEVYUEVDVF9DQUxMKHRlc3RDb250ZXh0LCBoYW5kbGVFcnJvcihleHBlY3RlZEVy
cm9yKSkuVGltZXMoMSk7CiAKICAgICAvLyBDYWxsIG9uY2Ugd2l0aCBtYXhpbXVtIGluZGV4LCBh
bmQgb25jZSB3aXRoIGFuIGV4Y2Vzc2l2ZSBpbmRleC4KICAgICBHTHVpbnQgaW5kZXhEYXRhW10g
PSB7MCwgMSwgc3RhdGljX2Nhc3Q8R0x1aW50PihjYXBzLm1heEVsZW1lbnRJbmRleCAtIDEpLApJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9saWJFR0wuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGliRUdMLmNwcAko
cmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9s
aWJFR0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTgsNCArMzU4LDEzIEBACiB7CiAgICAgcmV0
dXJuIGVnbDo6U3RyZWFtUG9zdEQzRFRleHR1cmVOVjEyQU5HTEUoZHB5LCBzdHJlYW0sIHRleHR1
cmUsIGF0dHJpYl9saXN0KTsKIH0KKworRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xHZXRTeW5j
VmFsdWVzQ0hST01JVU0oRUdMRGlzcGxheSBkcHksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFR0xTdXJmYWNlIHN1cmZhY2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0x1aW50NjRLSFIgKnVzdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTHVpbnQ2NEtI
UiAqbXNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RUdMdWludDY0S0hSICpzYmMpCit7CisgICAgcmV0dXJuIGVnbDo6R2V0U3luY1ZhbHVlc0NIUk9N
SVVNKGRweSwgc3VyZmFjZSwgdXN0LCBtc2MsIHNiYyk7CiB9Cit9CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC5kZWYKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9saWJFR0wuZGVmCShyZXZpc2lvbiAyMDgwMjEp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC5kZWYJKHdvcmtp
bmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAKICAgICBlZ2xTdHJlYW1Db25zdW1lckdMVGV4dHVy
ZUV4dGVybmFsQXR0cmlic05WIEA2MwogICAgIGVnbENyZWF0ZVN0cmVhbVByb2R1Y2VyRDNEVGV4
dHVyZU5WMTJBTkdMRSAgQDY0CiAgICAgZWdsU3RyZWFtUG9zdEQzRFRleHR1cmVOVjEyQU5HTEUg
ICAgICAgICAgICBANjUKKyAgICBlZ2xHZXRTeW5jVmFsdWVzQ0hST01JVU0gICAgICAgICAgICAg
ICAgICAgIEA2NgogCiAgICAgOyAxLjUgZW50cnkgcG9pbnRzCiAgICAgZWdsQ3JlYXRlU3luYyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMzgKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJFR0wuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliRUdMLmd5cGkJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJFR0wuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtNSwxMCArNSw2IEBA
CiB7CiAgICAgIyBFdmVyeXRoaW5nIGJlbG93IHRoaXMgaXMgZHVwbGljYXRlZCBpbiB0aGUgR04g
YnVpbGQuIElmIHlvdSBjaGFuZ2UKICAgICAjIGFueXRoaW5nIGFsc28gY2hhbmdlIGFuZ2xlL0JV
SUxELmduCi0gICAgJ3ZhcmlhYmxlcyc6Ci0gICAgewotICAgICAgICAnYW5nbGVfc3RhbmRhbG9u
ZSUnOiAwLAotICAgIH0sCiAgICAgJ3RhcmdldHMnOgogICAgIFsKICAgICAgICAgewpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZWdsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2Vu
dHJ5X3BvaW50c19lZ2wuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19lZ2wuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSAibGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVz
XzJfMC5oIgogI2luY2x1ZGUgImxpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18yXzBfZXh0Lmgi
CiAjaW5jbHVkZSAibGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMC5oIgorI2luY2x1ZGUg
ImxpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzEuaCIKICNpbmNsdWRlICJsaWJHTEVTdjIv
Z2xvYmFsX3N0YXRlLmgiCiAKICNpbmNsdWRlICJsaWJBTkdMRS9Db250ZXh0LmgiCkBAIC01ODIs
MTkgKzU4MywxMCBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGRpc3BsYXktPmlzSW5p
dGlhbGl6ZWQoKSkKKyAgICBpZiAoZGlzcGxheS0+aXNJbml0aWFsaXplZCgpICYmIGRpc3BsYXkt
PnRlc3REZXZpY2VMb3N0KCkpCiAgICAgewotICAgICAgICBpZiAoZGlzcGxheS0+dGVzdERldmlj
ZUxvc3QoKSkKLSAgICAgICAgewotICAgICAgICAgICAgZGlzcGxheS0+bm90aWZ5RGV2aWNlTG9z
dCgpOwotICAgICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmIChkaXNwbGF5LT5pc0RldmljZUxvc3QoKSkKLSAgICAgICAgewotICAgICAgICAgICAgU2V0
R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0NPTlRFWFRfTE9TVCkpOwotICAgICAgICAgICAgcmV0dXJu
IEVHTF9GQUxTRTsKLSAgICAgICAgfQorICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xf
Q09OVEVYVF9MT1NUKSk7CisgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQogCiAgICAg
U3VyZmFjZSAqZHJhd1N1cmZhY2UgPSBzdGF0aWNfY2FzdDxTdXJmYWNlKj4oZHJhdyk7CkBAIC03
MjgsOCArNzIwLDggQEAKICAgICAgICAgKnZhbHVlID0gY29udGV4dC0+Z2V0Q2xpZW50VHlwZSgp
OwogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgRUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT046
Ci0gICAgICAgICp2YWx1ZSA9IGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKTsKLSAgICAgICAg
YnJlYWs7CisgICAgICAgICAgKnZhbHVlID0gY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9u
KCk7CisgICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVHTF9SRU5ERVJfQlVGRkVSOgogICAg
ICAgICAqdmFsdWUgPSBjb250ZXh0LT5nZXRSZW5kZXJCdWZmZXIoKTsKICAgICAgICAgYnJlYWs7
CkBAIC04MTIsNyArODA0LDcgQEAKICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAK
LSAgICBpZiAoZGlzcGxheS0+aXNEZXZpY2VMb3N0KCkpCisgICAgaWYgKGRpc3BsYXktPnRlc3RE
ZXZpY2VMb3N0KCkpCiAgICAgewogICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQ09O
VEVYVF9MT1NUKSk7CiAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CkBAIC04NDksNyArODQxLDcg
QEAKICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKLSAgICBpZiAoZGlzcGxheS0+
aXNEZXZpY2VMb3N0KCkpCisgICAgaWYgKGRpc3BsYXktPnRlc3REZXZpY2VMb3N0KCkpCiAgICAg
ewogICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQ09OVEVYVF9MT1NUKSk7CiAgICAg
ICAgIHJldHVybiBFR0xfRkFMU0U7CkBAIC0xNDExLDYgKzE0MDMsMTkgQEAKICAgICAgICAgSU5T
RVJUX1BST0NfQUREUkVTUyhnbCwgR2V0UXVlcnlpdkVYVCk7CiAgICAgICAgIElOU0VSVF9QUk9D
X0FERFJFU1MoZ2wsIEdldFF1ZXJ5T2JqZWN0dWl2RVhUKTsKIAorICAgICAgICAvLyBHTF9FWFRf
ZGlzam9pbnRfdGltZXJfcXVlcnkKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2Vu
UXVlcmllc0VYVCk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIERlbGV0ZVF1ZXJp
ZXNFWFQpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBJc1F1ZXJ5RVhUKTsKKyAg
ICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgQmVnaW5RdWVyeUVYVCk7CisgICAgICAgIElO
U0VSVF9QUk9DX0FERFJFU1MoZ2wsIEVuZFF1ZXJ5RVhUKTsKKyAgICAgICAgSU5TRVJUX1BST0Nf
QUREUkVTUyhnbCwgUXVlcnlDb3VudGVyRVhUKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVT
UyhnbCwgR2V0UXVlcnlpdkVYVCk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdl
dFF1ZXJ5T2JqZWN0aXZFWFQpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRR
dWVyeU9iamVjdHVpdkVYVCk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFF1
ZXJ5T2JqZWN0aTY0dkVYVCk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFF1
ZXJ5T2JqZWN0dWk2NHZFWFQpOworCiAgICAgICAgIC8vIEdMX0VYVF9kcmF3X2J1ZmZlcnMKICAg
ICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgRHJhd0J1ZmZlcnNFWFQpOwogCkBAIC0xNDYw
LDYgKzE0NjUsODEgQEAKICAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0T2JqZWN0
UHRyTGFiZWxLSFIpOwogICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRQb2ludGVy
dktIUik7CiAKKyAgICAgICAgLy8gR0xfQ0hST01JVU1fYmluZF91bmlmb3JtX2xvY2F0aW9uCisg
ICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlV
TSk7CisKKyAgICAgICAgLy8gR0xfQ0hST01JVU1fY29weV90ZXh0dXJlCisgICAgICAgIElOU0VS
VF9QUk9DX0FERFJFU1MoZ2wsIENvcHlUZXh0dXJlQ0hST01JVU0pOworICAgICAgICBJTlNFUlRf
UFJPQ19BRERSRVNTKGdsLCBDb3B5U3ViVGV4dHVyZUNIUk9NSVVNKTsKKworICAgICAgICAvLyBH
TF9DSFJPTUlVTV9jb3B5X2NvbXByZXNzZWRfdGV4dHVyZQorICAgICAgICBJTlNFUlRfUFJPQ19B
RERSRVNTKGdsLCBDb21wcmVzc2VkQ29weVRleHR1cmVDSFJPTUlVTSk7CisKKyAgICAgICAgLy8g
R0xfQU5HTEVfd2ViZ2xfY29tcGF0aWJpbGl0eQorICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNT
KGdsLCBFbmFibGVFeHRlbnNpb25BTkdMRSk7CisKKyAgICAgICAgLy8gR0xfQU5HTEVfcm9idXN0
X2NsaWVudF9tZW1vcnkKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0Qm9vbGVh
bnZSb2J1c3RBTkdMRSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldEJ1ZmZl
clBhcmFtZXRlcml2Um9idXN0QU5HTEUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGds
LCBHZXRGbG9hdHZSb2J1c3RBTkdMRSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2ws
IEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUpOworICAgICAg
ICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRJbnRlZ2VydlJvYnVzdEFOR0xFKTsKKyAgICAg
ICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUpOworICAg
ICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0U2hhZGVyaXZS
b2J1c3RBTkdMRSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFRleFBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRU
ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhn
bCwgR2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNT
KGdsLCBHZXRVbmlmb3JtaXZSb2J1c3RBTkdMRSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJF
U1MoZ2wsIEdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUpOworICAgICAgICBJTlNFUlRfUFJP
Q19BRERSRVNTKGdsLCBHZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKTsKKyAgICAgICAgSU5T
RVJUX1BST0NfQUREUkVTUyhnbCwgR2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRSk7
CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFJlYWRQaXhlbHNSb2J1c3RBTkdMRSk7
CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFRleEltYWdlMkRSb2J1c3RBTkdMRSk7
CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFRleFBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBUZXhQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgVGV4U3ViSW1hZ2UyRFJv
YnVzdEFOR0xFKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgVGV4SW1hZ2UzRFJv
YnVzdEFOR0xFKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgVGV4U3ViSW1hZ2Uz
RFJvYnVzdEFOR0xFKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0UXVlcnlp
dlJvYnVzdEFOR0xFKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0UXVlcnlP
YmplY3R1aXZSb2J1c3RBTkdMRSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdl
dEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNT
KGdsLCBHZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERS
RVNTKGdsLCBHZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUpOworICAgICAgICBJTlNFUlRf
UFJPQ19BRERSRVNTKGdsLCBHZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRSk7CisgICAgICAg
IElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRSk7
CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFVuaWZvcm11aXZSb2J1c3RBTkdM
RSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldEFjdGl2ZVVuaWZvcm1CbG9j
a2l2Um9idXN0QU5HTEUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRJbnRl
Z2VyNjR2Um9idXN0QU5HTEUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRJ
bnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2ws
IEdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRSk7CisgICAgICAgIElOU0VSVF9QUk9D
X0FERFJFU1MoZ2wsIFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTsKKyAgICAgICAgSU5T
RVJUX1BST0NfQUREUkVTUyhnbCwgU2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOworICAg
ICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFNhbXBsZXJQYXJhbWV0
ZXJmdlJvYnVzdEFOR0xFKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0RnJh
bWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQURE
UkVTUyhnbCwgR2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUpOworICAgICAgICBJTlNF
UlRfUFJPQ19BRERSRVNTKGdsLCBHZXRCb29sZWFuaV92Um9idXN0QU5HTEUpOworICAgICAgICBJ
TlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUpOworICAg
ICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0
QU5HTEUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRUZXhMZXZlbFBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRQ
b2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERS
RVNTKGdsLCBSZWFkblBpeGVsc1JvYnVzdEFOR0xFKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQURE
UkVTUyhnbCwgR2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKTsKKyAgICAgICAgSU5TRVJUX1BST0Nf
QUREUkVTUyhnbCwgR2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKTsKKyAgICAgICAgSU5TRVJUX1BS
T0NfQUREUkVTUyhnbCwgR2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRSk7CisgICAgICAgIElOU0VS
VF9QUk9DX0FERFJFU1MoZ2wsIFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKTsKKyAgICAgICAg
SU5TRVJUX1BST0NfQUREUkVTUyhnbCwgVGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKTsKKyAg
ICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5H
TEUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRUZXhQYXJhbWV0ZXJJdWl2
Um9idXN0QU5HTEUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBTYW1wbGVyUGFy
YW1ldGVySWl2Um9idXN0QU5HTEUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBT
YW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQURE
UkVTUyhnbCwgR2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKTsKKyAgICAgICAgSU5T
RVJUX1BST0NfQUREUkVTUyhnbCwgR2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk7
CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RB
TkdMRSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFF1ZXJ5T2JqZWN0aTY0
dlJvYnVzdEFOR0xFKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0UXVlcnlP
YmplY3R1aTY0dlJvYnVzdEFOR0xFKTsKKwogICAgICAgICAvLyBHTEVTMyBjb3JlCiAgICAgICAg
IElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFJlYWRCdWZmZXIpOwogICAgICAgICBJTlNFUlRfUFJP
Q19BRERSRVNTKGdsLCBEcmF3UmFuZ2VFbGVtZW50cyk7CkBAIC0xNTY3LDYgKzE2NDcsNzYgQEAK
ICAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgVGV4U3RvcmFnZTNEKTsKICAgICAgICAg
SU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0SW50ZXJuYWxmb3JtYXRpdik7CiAKKyAgICAgICAg
Ly8gR0xFUzMxIGNvcmUKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgRGlzcGF0Y2hD
b21wdXRlKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgRGlzcGF0Y2hDb21wdXRl
SW5kaXJlY3QpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBEcmF3QXJyYXlzSW5k
aXJlY3QpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBEcmF3RWxlbWVudHNJbmRp
cmVjdCk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEZyYW1lYnVmZmVyUGFyYW1l
dGVyaSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldEZyYW1lYnVmZmVyUGFy
YW1ldGVyaXYpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRQcm9ncmFtSW50
ZXJmYWNlaXYpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRQcm9ncmFtUmVz
b3VyY2VJbmRleCk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFByb2dyYW1S
ZXNvdXJjZU5hbWUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRQcm9ncmFt
UmVzb3VyY2Vpdik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFByb2dyYW1S
ZXNvdXJjZUxvY2F0aW9uKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgVXNlUHJv
Z3JhbVN0YWdlcyk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEFjdGl2ZVNoYWRl
clByb2dyYW0pOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBDcmVhdGVTaGFkZXJQ
cm9ncmFtdik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEJpbmRQcm9ncmFtUGlw
ZWxpbmUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBEZWxldGVQcm9ncmFtUGlw
ZWxpbmVzKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2VuUHJvZ3JhbVBpcGVs
aW5lcyk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIElzUHJvZ3JhbVBpcGVsaW5l
KTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0UHJvZ3JhbVBpcGVsaW5laXYp
OworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBQcm9ncmFtVW5pZm9ybTFpKTsKKyAg
ICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgUHJvZ3JhbVVuaWZvcm0yaSk7CisgICAgICAg
IElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFByb2dyYW1Vbmlmb3JtM2kpOworICAgICAgICBJTlNF
UlRfUFJPQ19BRERSRVNTKGdsLCBQcm9ncmFtVW5pZm9ybTRpKTsKKyAgICAgICAgSU5TRVJUX1BS
T0NfQUREUkVTUyhnbCwgUHJvZ3JhbVVuaWZvcm0xdWkpOworICAgICAgICBJTlNFUlRfUFJPQ19B
RERSRVNTKGdsLCBQcm9ncmFtVW5pZm9ybTJ1aSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJF
U1MoZ2wsIFByb2dyYW1Vbmlmb3JtM3VpKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhn
bCwgUHJvZ3JhbVVuaWZvcm00dWkpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBQ
cm9ncmFtVW5pZm9ybTFmKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgUHJvZ3Jh
bVVuaWZvcm0yZik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFByb2dyYW1Vbmlm
b3JtM2YpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBQcm9ncmFtVW5pZm9ybTRm
KTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgUHJvZ3JhbVVuaWZvcm0xaXYpOwor
ICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBQcm9ncmFtVW5pZm9ybTJpdik7CisgICAg
ICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFByb2dyYW1Vbmlmb3JtM2l2KTsKKyAgICAgICAg
SU5TRVJUX1BST0NfQUREUkVTUyhnbCwgUHJvZ3JhbVVuaWZvcm00aXYpOworICAgICAgICBJTlNF
UlRfUFJPQ19BRERSRVNTKGdsLCBQcm9ncmFtVW5pZm9ybTF1aXYpOworICAgICAgICBJTlNFUlRf
UFJPQ19BRERSRVNTKGdsLCBQcm9ncmFtVW5pZm9ybTJ1aXYpOworICAgICAgICBJTlNFUlRfUFJP
Q19BRERSRVNTKGdsLCBQcm9ncmFtVW5pZm9ybTN1aXYpOworICAgICAgICBJTlNFUlRfUFJPQ19B
RERSRVNTKGdsLCBQcm9ncmFtVW5pZm9ybTR1aXYpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERS
RVNTKGdsLCBQcm9ncmFtVW5pZm9ybTFmdik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1Mo
Z2wsIFByb2dyYW1Vbmlmb3JtMmZ2KTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwg
UHJvZ3JhbVVuaWZvcm0zZnYpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBQcm9n
cmFtVW5pZm9ybTRmdik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFByb2dyYW1V
bmlmb3JtTWF0cml4MmZ2KTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgUHJvZ3Jh
bVVuaWZvcm1NYXRyaXgzZnYpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBQcm9n
cmFtVW5pZm9ybU1hdHJpeDRmdik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFBy
b2dyYW1Vbmlmb3JtTWF0cml4MngzZnYpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGds
LCBQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmZ2KTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVT
UyhnbCwgUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRmdik7CisgICAgICAgIElOU0VSVF9QUk9DX0FE
RFJFU1MoZ2wsIFByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYpOworICAgICAgICBJTlNFUlRfUFJP
Q19BRERSRVNTKGdsLCBQcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGZ2KTsKKyAgICAgICAgSU5TRVJU
X1BST0NfQUREUkVTUyhnbCwgUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNmdik7CisgICAgICAgIElO
U0VSVF9QUk9DX0FERFJFU1MoZ2wsIFZhbGlkYXRlUHJvZ3JhbVBpcGVsaW5lKTsKKyAgICAgICAg
SU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0UHJvZ3JhbVBpcGVsaW5lSW5mb0xvZyk7CisgICAg
ICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEJpbmRJbWFnZVRleHR1cmUpOworICAgICAgICBJ
TlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRCb29sZWFuaV92KTsKKyAgICAgICAgSU5TRVJUX1BS
T0NfQUREUkVTUyhnbCwgTWVtb3J5QmFycmllcik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJF
U1MoZ2wsIE1lbW9yeUJhcnJpZXJCeVJlZ2lvbik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJF
U1MoZ2wsIFRleFN0b3JhZ2UyRE11bHRpc2FtcGxlKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQURE
UkVTUyhnbCwgR2V0TXVsdGlzYW1wbGVmdik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1Mo
Z2wsIFNhbXBsZU1hc2tpKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFRl
eExldmVsUGFyYW1ldGVyZnYpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBCaW5k
VmVydGV4QnVmZmVyKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgVmVydGV4QXR0
cmliRm9ybWF0KTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgVmVydGV4QXR0cmli
SUZvcm1hdCk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFZlcnRleEF0dHJpYkJp
bmRpbmcpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBWZXJ0ZXhCaW5kaW5nRGl2
aXNvcik7CisKICAgICAgICAgLy8gRUdMIDEuMAogICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNT
KGVnbCwgQ2hvb3NlQ29uZmlnKTsKICAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhlZ2wsIENv
cHlCdWZmZXJzKTsKQEAgLTE2NTgsNiArMTgwOCwxMiBAQAogICAgICAgICAvLyBFR0xfTlZfc3Ry
ZWFtX2NvbnN1bWVyX2dsdGV4dHVyZV95dXYKICAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhl
Z2wsIFN0cmVhbUNvbnN1bWVyR0xUZXh0dXJlRXh0ZXJuYWxBdHRyaWJzTlYpOwogCisgICAgICAg
IC8vIEVHTF9BTkdMRV9zdHJlYW1fcHJvZHVjZXJfZDNkX3RleHR1cmVfbnYxMgorICAgICAgICBJ
TlNFUlRfUFJPQ19BRERSRVNTKGVnbCwgQ3JlYXRlU3RyZWFtUHJvZHVjZXJEM0RUZXh0dXJlTlYx
MkFOR0xFKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhlZ2wsIFN0cmVhbVBvc3REM0RU
ZXh0dXJlTlYxMkFOR0xFKTsKKworICAgICAgICAvLyBFR0xfQ0hST01JVU1fZ2V0X3N5bmNfdmFs
dWVzCisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZWdsLCBHZXRTeW5jVmFsdWVzQ0hST01J
VU0pOwogI3VuZGVmIElOU0VSVF9QUk9DX0FERFJFU1MKICAgICAgICAgcmV0dXJuIG1hcDsKICAg
ICB9OwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9w
b2ludHNfZWdsX2V4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZWdsX2V4dC5jcHAJKHJldmlzaW9uIDIwODAyMSkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2Vn
bF9leHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3IEBACiAgICAgICAgIHJldHVy
biBFR0xfRkFMU0U7CiAgICAgfQogCi0gICAgaWYgKGRpc3BsYXktPmlzRGV2aWNlTG9zdCgpKQor
ICAgIGlmIChkaXNwbGF5LT50ZXN0RGV2aWNlTG9zdCgpKQogICAgIHsKICAgICAgICAgU2V0R2xv
YmFsRXJyb3IoRXJyb3IoRUdMX0NPTlRFWFRfTE9TVCkpOwogICAgICAgICByZXR1cm4gRUdMX0ZB
TFNFOwpAQCAtMTk3LDYgKzE5NywxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9OVUxMX0FOR0xFOgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICghY2xpZW50RXh0ZW5zaW9ucy5wbGF0Zm9ybUFOR0xFTlVM
TCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfQVRUUklCVVRFLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGlzcGxheSB0
eXBlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkVHTF9QTEFURk9STV9BTkdMRV9UWVBFX05VTExfQU5HTEUgIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVxdWlyZXMgRUdMX0FOR0xF
X3BsYXRmb3JtX2FuZ2xlX251bGwuIikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gRUdMX05PX0RJU1BMQVk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJy
b3IoRUdMX0JBRF9BVFRSSUJVVEUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBF
R0xfTk9fRElTUExBWTsKQEAgLTQzMyw4ICs0NDQsMTQgQEAKICAgICAgICAgICBkcHksIGF0dHJp
YnV0ZSwgdmFsdWUpOwogCiAgICAgRGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PERpc3Bs
YXkqPihkcHkpOwotICAgIEVycm9yIGVycm9yKEVHTF9TVUNDRVNTKTsKIAorICAgIEVycm9yIGVy
cm9yID0gVmFsaWRhdGVEaXNwbGF5KGRpc3BsYXkpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
CisgICAgeworICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiBF
R0xfRkFMU0U7CisgICAgfQorCiAgICAgaWYgKCFkaXNwbGF5LT5nZXRFeHRlbnNpb25zKCkuZGV2
aWNlUXVlcnkpCiAgICAgewogICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX0FD
Q0VTUykpOwpAQCAtNzI1LDggKzc0MiwxNiBAQAogICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJv
cik7CiAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQorCisgICAgZXJyb3IgPSBzdHJl
YW1PYmplY3QtPmNyZWF0ZUNvbnN1bWVyR0xUZXh0dXJlRXh0ZXJuYWwoQXR0cmlidXRlTWFwKCks
IGNvbnRleHQpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICBTZXRH
bG9iYWxFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAgfQorCiAg
ICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOwotICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAgcmV0
dXJuIEVHTF9UUlVFOwogfQogCiBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFN0cmVhbUNvbnN1bWVy
QWNxdWlyZUtIUihFR0xEaXNwbGF5IGRweSwgRUdMU3RyZWFtS0hSIHN0cmVhbSkKQEAgLTc0Miw4
ICs3NjcsMTYgQEAKICAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOwogICAgICAgICByZXR1
cm4gRUdMX0ZBTFNFOwogICAgIH0KKworICAgIGVycm9yID0gc3RyZWFtT2JqZWN0LT5jb25zdW1l
ckFjcXVpcmUoKTsKKyAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgU2V0
R2xvYmFsRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgIH0KKwog
ICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKLSAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgIHJl
dHVybiBFR0xfVFJVRTsKIH0KIAogRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBTdHJlYW1Db25zdW1l
clJlbGVhc2VLSFIoRUdMRGlzcGxheSBkcHksIEVHTFN0cmVhbUtIUiBzdHJlYW0pCkBAIC03NTks
OCArNzkyLDE2IEBACiAgICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKICAgICAgICAgcmV0
dXJuIEVHTF9GQUxTRTsKICAgICB9CisKKyAgICBlcnJvciA9IHN0cmVhbU9iamVjdC0+Y29uc3Vt
ZXJSZWxlYXNlKCk7CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIFNl
dEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICB9CisK
ICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7Ci0gICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICBy
ZXR1cm4gRUdMX1RSVUU7CiB9CiAKIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgU3RyZWFtQ29uc3Vt
ZXJHTFRleHR1cmVFeHRlcm5hbEF0dHJpYnNOVihFR0xEaXNwbGF5IGRweSwKQEAgLTc4Miw4ICs4
MjMsMTYgQEAKICAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOwogICAgICAgICByZXR1cm4g
RUdMX0ZBTFNFOwogICAgIH0KKworICAgIGVycm9yID0gc3RyZWFtT2JqZWN0LT5jcmVhdGVDb25z
dW1lckdMVGV4dHVyZUV4dGVybmFsKGF0dHJpYnV0ZXMsIGNvbnRleHQpOworICAgIGlmIChlcnJv
ci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAg
ICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAgfQorCiAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3Ip
OwotICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAgcmV0dXJuIEVHTF9UUlVFOwogfQogCiBFR0xC
b29sZWFuIEVHTEFQSUVOVFJZIENyZWF0ZVN0cmVhbVByb2R1Y2VyRDNEVGV4dHVyZU5WMTJBTkdM
RShFR0xEaXNwbGF5IGRweSwKQEAgLTgwNSw4ICs4NTQsMTUgQEAKICAgICAgICAgcmV0dXJuIEVH
TF9GQUxTRTsKICAgICB9CiAKKyAgICBlcnJvciA9IHN0cmVhbU9iamVjdC0+Y3JlYXRlUHJvZHVj
ZXJEM0QxMVRleHR1cmVOVjEyKGF0dHJpYnV0ZXMpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
CisgICAgeworICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiBF
R0xfRkFMU0U7CisgICAgfQorCiAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOwotICAgIHJldHVy
biBFR0xfRkFMU0U7CisgICAgcmV0dXJuIEVHTF9UUlVFOwogfQogCiBFR0xCb29sZWFuIEVHTEFQ
SUVOVFJZIFN0cmVhbVBvc3REM0RUZXh0dXJlTlYxMkFOR0xFKEVHTERpc3BsYXkgZHB5LApAQCAt
ODI5LDcgKzg4NSw0NiBAQAogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAgIH0KIAorICAg
IGVycm9yID0gc3RyZWFtT2JqZWN0LT5wb3N0RDNEMTFOVjEyVGV4dHVyZSh0ZXh0dXJlLCBhdHRy
aWJ1dGVzKTsKKyAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgU2V0R2xv
YmFsRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgIH0KKwogICAg
IFNldEdsb2JhbEVycm9yKGVycm9yKTsKLSAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgIHJldHVy
biBFR0xfVFJVRTsKIH0KKworRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBHZXRTeW5jVmFsdWVzQ0hS
T01JVU0oRUdMRGlzcGxheSBkcHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFR0xTdXJmYWNlIHN1cmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFR0x1aW50NjRLSFIgKnVzdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTHVpbnQ2NEtIUiAqbXNjLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMdWludDY0S0hSICpzYmMpCit7
CisgICAgRVZFTlQoCisgICAgICAgICIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xTdXJm
YWNlIHN1cmZhY2UgPSAweCUwLjhwLCBFR0x1aW50NjRLSFIqIHVzdCA9IDB4JTAuOHAsICIKKyAg
ICAgICAgIkVHTHVpbnQ2NEtIUiogbXNjID0gMHglMC44cCwgRUdMdWludDY0S0hSKiBzYmMgPSAw
eCUwLjhwIiwKKyAgICAgICAgZHB5LCBzdXJmYWNlLCB1c3QsIG1zYywgc2JjKTsKKworICAgIERp
c3BsYXkgKmRpc3BsYXkgICAgPSBzdGF0aWNfY2FzdDxEaXNwbGF5ICo+KGRweSk7CisgICAgU3Vy
ZmFjZSAqZWdsU3VyZmFjZSA9IHN0YXRpY19jYXN0PFN1cmZhY2UgKj4oc3VyZmFjZSk7CisKKyAg
ICBFcnJvciBlcnJvciA9IFZhbGlkYXRlR2V0U3luY1ZhbHVlc0NIUk9NSVVNKGRpc3BsYXksIGVn
bFN1cmZhY2UsIHVzdCwgbXNjLCBzYmMpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAg
eworICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiBFR0xfRkFM
U0U7CisgICAgfQorCisgICAgZXJyb3IgPSBlZ2xTdXJmYWNlLT5nZXRTeW5jVmFsdWVzKHVzdCwg
bXNjLCBzYmMpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICBTZXRH
bG9iYWxFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAgfQorCisg
ICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAgIHJldHVybiBFR0xfVFJVRTsKIH0KK30KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2Vn
bF9leHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL2VudHJ5X3BvaW50c19lZ2xfZXh0LmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2VnbF9leHQuaAkod29y
a2luZyBjb3B5KQpAQCAtNzksNiArNzksMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTFN0cmVhbUtIUiBzdHJl
YW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2b2lkICp0ZXh0dXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRUdMQXR0cmliICph
dHRyaWJfbGlzdCk7CisKKy8vIEVHTF9DSFJPTUlVTV9nZXRfc3luY192YWx1ZXMKK0FOR0xFX0VY
UE9SVCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIEdldFN5bmNWYWx1ZXNDSFJPTUlVTShFR0xEaXNw
bGF5IGRweSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFR0xTdXJmYWNlIHN1cmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMdWludDY0S0hSICp1c3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdM
dWludDY0S0hSICptc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRUdMdWludDY0S0hSICpzYmMpOworCiB9ICAvLyBuYW1lc3BhY2Ug
ZWdsCiAKICNlbmRpZiAvLyBMSUJHTEVTVjJfRU5UUllQT0lOVFNFR0xFWFRfSF8KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfMl8w
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L2VudHJ5X3BvaW50c19nbGVzXzJfMC5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfMl8wLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNyw2ICs3LDcgQEAKIC8vIGVudHJ5X3BvaW50c19nbGVzXzJfMC5j
cHAgOiBJbXBsZW1lbnRzIHRoZSBHTEVTIDIuMCBlbnRyeSBwb2ludHMuCiAKICNpbmNsdWRlICJs
aWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfMl8wLmgiCisKICNpbmNsdWRlICJsaWJHTEVTdjIv
Z2xvYmFsX3N0YXRlLmgiCiAKICNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgpAQCAt
MjcsNiArMjgsNyBAQAogI2luY2x1ZGUgImxpYkFOR0xFL3ZhbGlkYXRpb25FUzIuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS92YWxpZGF0aW9uRVMzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcXVlcnlj
b252ZXJzaW9ucy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3F1ZXJ5dXRpbHMuaCIKIAogI2luY2x1
ZGUgImNvbW1vbi9kZWJ1Zy5oIgogI2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKQEAgLTQy
LDEzICs0NCwxMiBAQAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICh0ZXh0dXJlIDwgR0xf
VEVYVFVSRTAgfHwgdGV4dHVyZSA+IEdMX1RFWFRVUkUwICsgY29udGV4dC0+Z2V0Q2FwcygpLm1h
eENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMgLSAxKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlQWN0aXZlVGV4dHVyZShjb250ZXh0LCB0ZXh0dXJl
KSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBjb250ZXh0LT5nZXRTdGF0ZSgpLnNldEFjdGl2ZVNhbXBsZXIodGV4dHVyZSAtIEdMX1RFWFRV
UkUwKTsKKyAgICAgICAgY29udGV4dC0+YWN0aXZlVGV4dHVyZSh0ZXh0dXJlKTsKICAgICB9CiB9
CiAKQEAgLTU5LDIzICs2MCwxMiBAQAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFByb2dyYW0g
KnByb2dyYW1PYmplY3QgPSBHZXRWYWxpZFByb2dyYW0oY29udGV4dCwgcHJvZ3JhbSk7Ci0gICAg
ICAgIGlmICghcHJvZ3JhbU9iamVjdCkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpICYmICFWYWxpZGF0ZUF0dGFjaFNoYWRlcihjb250ZXh0LCBwcm9ncmFtLCBzaGFkZXIp
KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBT
aGFkZXIgKnNoYWRlck9iamVjdCA9IEdldFZhbGlkU2hhZGVyKGNvbnRleHQsIHNoYWRlcik7Ci0g
ICAgICAgIGlmICghc2hhZGVyT2JqZWN0KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QtPmF0dGFjaFNoYWRlcihz
aGFkZXJPYmplY3QpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9CisgICAgICAgIGNvbnRleHQtPmF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOwog
ICAgIH0KIH0KIApAQCAtODgsNyArNzgsNyBAQAogICAgIHsKICAgICAgICAgaWYgKGluZGV4ID49
IE1BWF9WRVJURVhfQVRUUklCUykKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKQEAgLTEwMSw3ICs5MSw3IEBACiAKICAgICAgICAgaWYgKHN0cm5jbXAo
bmFtZSwgImdsXyIsIDMpID09IDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTExOCwxMCArMTA4LDE3IEBACiAgICAgewogICAg
ICAgICBpZiAoIVZhbGlkQnVmZmVyVGFyZ2V0KGNvbnRleHQsIHRhcmdldCkpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkp
OworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVN
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoIWNvbnRl
eHQtPmdldEdMU3RhdGUoKS5pc0JpbmRHZW5lcmF0ZXNSZXNvdXJjZUVuYWJsZWQoKSAmJgorICAg
ICAgICAgICAgIWNvbnRleHQtPmlzQnVmZmVyR2VuZXJhdGVkKGJ1ZmZlcikpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OLCAiQnVmZmVyIHdhcyBub3QgZ2VuZXJhdGVkIikpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKICAgICAgICAgc3dpdGNoICh0YXJnZXQpCiAgICAgICAgIHsKICAgICAgICAg
ICBjYXNlIEdMX0FSUkFZX0JVRkZFUjoKQEAgLTE1MCw3ICsxNDcsNyBAQAogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgIH0KQEAgLTE2NSwxMCArMTYyLDE3IEBACiAgICAgewogICAgICAgICBp
ZiAoIVZhbGlkRnJhbWVidWZmZXJUYXJnZXQodGFyZ2V0KSkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCisgICAgICAgIGlmICghY29udGV4dC0+Z2V0R0xT
dGF0ZSgpLmlzQmluZEdlbmVyYXRlc1Jlc291cmNlRW5hYmxlZCgpICYmCisgICAgICAgICAgICAh
Y29udGV4dC0+aXNGcmFtZWJ1ZmZlckdlbmVyYXRlZChmcmFtZWJ1ZmZlcikpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OLCAiRnJhbWVidWZmZXIgd2FzIG5vdCBnZW5lcmF0ZWQiKSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKwogICAgICAgICBpZiAodGFyZ2V0ID09IEdMX1JFQURfRlJBTUVCVUZG
RVJfQU5HTEUgfHwgdGFyZ2V0ID09IEdMX0ZSQU1FQlVGRkVSKQogICAgICAgICB7CiAgICAgICAg
ICAgICBjb250ZXh0LT5iaW5kUmVhZEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsKQEAgLTE5MCwx
MCArMTk0LDE3IEBACiAgICAgewogICAgICAgICBpZiAodGFyZ2V0ICE9IEdMX1JFTkRFUkJVRkZF
UikKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCisgICAg
ICAgIGlmICghY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmlzQmluZEdlbmVyYXRlc1Jlc291cmNlRW5h
YmxlZCgpICYmCisgICAgICAgICAgICAhY29udGV4dC0+aXNSZW5kZXJidWZmZXJHZW5lcmF0ZWQo
cmVuZGVyYnVmZmVyKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJSZW5kZXJidWZmZXIgd2FzIG5vdCBnZW5l
cmF0ZWQiKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBjb250
ZXh0LT5iaW5kUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcik7CiAgICAgfQogfQpAQCAtMjIyLDcg
KzIzMyw3IEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
OwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgY29udGV4dC0+Z2V0U3RhdGUoKS5z
ZXRCbGVuZENvbG9yKGNsYW1wMDEocmVkKSwgY2xhbXAwMShncmVlbiksIGNsYW1wMDEoYmx1ZSks
IGNsYW1wMDEoYWxwaGEpKTsKKyAgICAgICAgY29udGV4dC0+YmxlbmRDb2xvcihyZWQsIGdyZWVu
LCBibHVlLCBhbHBoYSk7CiAgICAgfQogfQogCkBAIC0yNDgsNyArMjU5LDcgQEAKICAgICAgICAg
ICAgIGJyZWFrOwogCiAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCkBAIC0yNjIsMTEgKzI3MywxMSBAQAogICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgY29udGV4dC0+Z2V0U3RhdGUoKS5zZXRCbGVuZEVxdWF0aW9uKG1vZGVS
R0IsIG1vZGVBbHBoYSk7CisgICAgICAgIGNvbnRleHQtPmJsZW5kRXF1YXRpb25TZXBhcmF0ZSht
b2RlUkdCLCBtb2RlQWxwaGEpOwogICAgIH0KIH0KIApAQCAtMzAzLDM5ICszMTQsMzkgQEAKICAg
ICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBzd2l0Y2ggKGRzdFJHQikKICAgICAg
ICAgewotICAgICAgICAgIGNhc2UgR0xfWkVSTzoKLSAgICAgICAgICBjYXNlIEdMX09ORToKLSAg
ICAgICAgICBjYXNlIEdMX1NSQ19DT0xPUjoKLSAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19T
UkNfQ09MT1I6Ci0gICAgICAgICAgY2FzZSBHTF9EU1RfQ09MT1I6Ci0gICAgICAgICAgY2FzZSBH
TF9PTkVfTUlOVVNfRFNUX0NPTE9SOgotICAgICAgICAgIGNhc2UgR0xfU1JDX0FMUEhBOgotICAg
ICAgICAgIGNhc2UgR0xfT05FX01JTlVTX1NSQ19BTFBIQToKLSAgICAgICAgICBjYXNlIEdMX0RT
VF9BTFBIQToKLSAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19EU1RfQUxQSEE6Ci0gICAgICAg
ICAgY2FzZSBHTF9DT05TVEFOVF9DT0xPUjoKLSAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19D
T05TVEFOVF9DT0xPUjoKLSAgICAgICAgICBjYXNlIEdMX0NPTlNUQU5UX0FMUEhBOgotICAgICAg
ICAgIGNhc2UgR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBOgotICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIEdMX1pFUk86CisgICAgICAgICAgICBjYXNlIEdMX09ORToKKyAg
ICAgICAgICAgIGNhc2UgR0xfU1JDX0NPTE9SOgorICAgICAgICAgICAgY2FzZSBHTF9PTkVfTUlO
VVNfU1JDX0NPTE9SOgorICAgICAgICAgICAgY2FzZSBHTF9EU1RfQ09MT1I6CisgICAgICAgICAg
ICBjYXNlIEdMX09ORV9NSU5VU19EU1RfQ09MT1I6CisgICAgICAgICAgICBjYXNlIEdMX1NSQ19B
TFBIQToKKyAgICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX1NSQ19BTFBIQToKKyAgICAgICAg
ICAgIGNhc2UgR0xfRFNUX0FMUEhBOgorICAgICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfRFNU
X0FMUEhBOgorICAgICAgICAgICAgY2FzZSBHTF9DT05TVEFOVF9DT0xPUjoKKyAgICAgICAgICAg
IGNhc2UgR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SOgorICAgICAgICAgICAgY2FzZSBHTF9D
T05TVEFOVF9BTFBIQToKKyAgICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0NPTlNUQU5UX0FM
UEhBOgorICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgY2FzZSBHTF9TUkNfQUxQ
SEFfU0FUVVJBVEU6Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigp
IDwgMykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgIGNhc2UgR0xfU1JDX0FMUEhB
X1NBVFVSQVRFOgorICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZl
cnNpb24oKSA8IDMpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsK
LSAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHN3aXRjaCAoc3JjQWxw
aGEpCkBAIC0zNTgsMzkgKzM2OSwzOSBAQAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAg
ICAgICAgIHN3aXRjaCAoZHN0QWxwaGEpCiAgICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX1pF
Uk86Ci0gICAgICAgICAgY2FzZSBHTF9PTkU6Ci0gICAgICAgICAgY2FzZSBHTF9TUkNfQ09MT1I6
Ci0gICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfU1JDX0NPTE9SOgotICAgICAgICAgIGNhc2Ug
R0xfRFNUX0NPTE9SOgotICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0RTVF9DT0xPUjoKLSAg
ICAgICAgICBjYXNlIEdMX1NSQ19BTFBIQToKLSAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19T
UkNfQUxQSEE6Ci0gICAgICAgICAgY2FzZSBHTF9EU1RfQUxQSEE6Ci0gICAgICAgICAgY2FzZSBH
TF9PTkVfTUlOVVNfRFNUX0FMUEhBOgotICAgICAgICAgIGNhc2UgR0xfQ09OU1RBTlRfQ09MT1I6
Ci0gICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1I6Ci0gICAgICAgICAg
Y2FzZSBHTF9DT05TVEFOVF9BTFBIQToKLSAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19DT05T
VEFOVF9BTFBIQToKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBHTF9aRVJP
OgorICAgICAgICAgICAgY2FzZSBHTF9PTkU6CisgICAgICAgICAgICBjYXNlIEdMX1NSQ19DT0xP
UjoKKyAgICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX1NSQ19DT0xPUjoKKyAgICAgICAgICAg
IGNhc2UgR0xfRFNUX0NPTE9SOgorICAgICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfRFNUX0NP
TE9SOgorICAgICAgICAgICAgY2FzZSBHTF9TUkNfQUxQSEE6CisgICAgICAgICAgICBjYXNlIEdM
X09ORV9NSU5VU19TUkNfQUxQSEE6CisgICAgICAgICAgICBjYXNlIEdMX0RTVF9BTFBIQToKKyAg
ICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0RTVF9BTFBIQToKKyAgICAgICAgICAgIGNhc2Ug
R0xfQ09OU1RBTlRfQ09MT1I6CisgICAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19DT05TVEFO
VF9DT0xPUjoKKyAgICAgICAgICAgIGNhc2UgR0xfQ09OU1RBTlRfQUxQSEE6CisgICAgICAgICAg
ICBjYXNlIEdMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQToKKyAgICAgICAgICAgICAgICBicmVh
azsKIAotICAgICAgICAgIGNhc2UgR0xfU1JDX0FMUEhBX1NBVFVSQVRFOgotICAgICAgICAgICAg
aWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7
CisgICAgICAgICAgICBjYXNlIEdMX1NSQ19BTFBIQV9TQVRVUkFURToKKyAgICAgICAgICAgICAg
ICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVN
KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
YnJlYWs7Ci0KLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoY29udGV4dC0+Z2V0TGltaXRhdGlvbnMoKS5ub1NpbXVsdGFu
ZW91c0NvbnN0YW50Q29sb3JBbmRBbHBoYUJsZW5kRnVuYykKQEAgLTQwOSwxMiArNDIwLDEyIEBA
CiAgICAgICAgICAgICAgICAgICAgICJTaW11bHRhbmVvdXMgdXNlIG9mIEdMX0NPTlNUQU5UX0FM
UEhBL0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQSBhbmQgIgogICAgICAgICAgICAgICAgICAg
ICAiR0xfQ09OU1RBTlRfQ09MT1IvR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SIG5vdCBzdXBw
b3J0ZWQgYnkgdGhpcyAiCiAgICAgICAgICAgICAgICAgICAgICJpbXBsZW1lbnRhdGlvbi4iKTsK
LSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTikpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKLSAgICAgICAgY29udGV4dC0+Z2V0U3RhdGUoKS5zZXRCbGVuZEZh
Y3RvcnMoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7CisgICAgICAgIGNvbnRl
eHQtPmJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEp
OwogICAgIH0KIH0KIApAQCAtNDI2LDU3ICs0MzcsMTIgQEAKICAgICBDb250ZXh0ICpjb250ZXh0
ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBpZiAoc2l6ZSA8IDApCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSAmJiAhVmFsaWRhdGVCdWZmZXJEYXRhKGNvbnRleHQsIHRhcmdldCwgc2l6ZSwgZGF0YSwgdXNh
Z2UpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBzd2l0Y2ggKHVzYWdlKQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9TVFJFQU1f
RFJBVzoKLSAgICAgICAgICBjYXNlIEdMX1NUQVRJQ19EUkFXOgotICAgICAgICAgIGNhc2UgR0xf
RFlOQU1JQ19EUkFXOgotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICBjYXNlIEdMX1NU
UkVBTV9SRUFEOgotICAgICAgICAgIGNhc2UgR0xfU1RSRUFNX0NPUFk6Ci0gICAgICAgICAgY2Fz
ZSBHTF9TVEFUSUNfUkVBRDoKLSAgICAgICAgICBjYXNlIEdMX1NUQVRJQ19DT1BZOgotICAgICAg
ICAgIGNhc2UgR0xfRFlOQU1JQ19SRUFEOgotICAgICAgICAgIGNhc2UgR0xfRFlOQU1JQ19DT1BZ
OgotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFWYWxpZEJ1ZmZlclRhcmdldChj
b250ZXh0LCB0YXJnZXQpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0gICAgICAgIEJ1ZmZlciAqYnVmZmVyID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRU
YXJnZXRCdWZmZXIodGFyZ2V0KTsKLQotICAgICAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIEVycm9yIGVy
cm9yID0gYnVmZmVyLT5idWZmZXJEYXRhKGRhdGEsIHNpemUsIHVzYWdlKTsKLSAgICAgICAgaWYg
KGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGNv
bnRleHQtPmJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCBkYXRhLCB1c2FnZSk7CiAgICAgfQogfQog
CkBAIC00ODgsNTYgKzQ1NCwxMyBAQAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChzaXpl
IDwgMCB8fCBvZmZzZXQgPCAwKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0ZUJ1ZmZlclN1YkRhdGEoY29udGV4dCwgdGFyZ2V0
LCBvZmZzZXQsIHNpemUsIGRhdGEpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIVZhbGlkQnVmZmVyVGFyZ2V0KGNvbnRleHQsIHRh
cmdldCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAg
ICAgICAgQnVmZmVyICpidWZmZXIgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFRhcmdldEJ1ZmZl
cih0YXJnZXQpOwotCi0gICAgICAgIGlmICghYnVmZmVyKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGJ1ZmZlci0+aXNNYXBw
ZWQoKSkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIENoZWNrIGZvciBwb3NzaWJsZSBvdmVyZmxvdyBvZiBzaXplICsgb2Zmc2V0
Ci0gICAgICAgIGlmICghcng6OklzVW5zaWduZWRBZGRpdGlvblNhZmU8c2l6ZV90PihzaXplLCBv
ZmZzZXQpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9PVVRfT0ZfTUVNT1JZKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoc2l6ZSArIG9mZnNldCA+IGJ1ZmZlci0+Z2V0U2l6ZSgpKQotICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVF
KSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZGF0YSA9
PSBOVUxMKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAg
ICAgICBFcnJvciBlcnJvciA9IGJ1ZmZlci0+YnVmZmVyU3ViRGF0YShkYXRhLCBzaXplLCBvZmZz
ZXQpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KKyAgICAgICAgY29udGV4dC0+YnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgc2l6
ZSwgZGF0YSk7CiAgICAgfQogfQogCkBAIC01NTAsMTQgKzQ3MywxNCBAQAogICAgIHsKICAgICAg
ICAgaWYgKCFWYWxpZEZyYW1lYnVmZmVyVGFyZ2V0KHRhcmdldCkpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAg
ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCi0gICAgICAgIEZyYW1lYnVmZmVyICpm
cmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0VGFyZ2V0RnJhbWVidWZmZXIodGFy
Z2V0KTsKKyAgICAgICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gY29udGV4dC0+Z2V0R0xT
dGF0ZSgpLmdldFRhcmdldEZyYW1lYnVmZmVyKHRhcmdldCk7CiAgICAgICAgIEFTU0VSVChmcmFt
ZWJ1ZmZlcik7CiAKLSAgICAgICAgcmV0dXJuIGZyYW1lYnVmZmVyLT5jaGVja1N0YXR1cyhjb250
ZXh0LT5nZXREYXRhKCkpOworICAgICAgICByZXR1cm4gZnJhbWVidWZmZXItPmNoZWNrU3RhdHVz
KGNvbnRleHQtPmdldENvbnRleHRTdGF0ZSgpKTsKICAgICB9CiAKICAgICByZXR1cm4gMDsKQEAg
LTU4Nyw3ICs1MTAsNyBAQAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPmdldFN0
YXRlKCkuc2V0Q29sb3JDbGVhclZhbHVlKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKKyAgICAg
ICAgY29udGV4dC0+Y2xlYXJDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CiAgICAgfQog
fQogCkBAIC01OTgsNyArNTIxLDcgQEAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBjb250ZXh0
LT5nZXRTdGF0ZSgpLnNldERlcHRoQ2xlYXJWYWx1ZShkZXB0aCk7CisgICAgICAgIGNvbnRleHQt
PmNsZWFyRGVwdGhmKGRlcHRoKTsKICAgICB9CiB9CiAKQEAgLTYwOSw3ICs1MzIsNyBAQAogICAg
IENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPmdldFN0YXRlKCkuc2V0U3RlbmNpbENsZWFy
VmFsdWUocyk7CisgICAgICAgIGNvbnRleHQtPmNsZWFyU3RlbmNpbChzKTsKICAgICB9CiB9CiAK
QEAgLTYyMSw3ICs1NDQsNyBAQAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPmdl
dFN0YXRlKCkuc2V0Q29sb3JNYXNrKHJlZCA9PSBHTF9UUlVFLCBncmVlbiA9PSBHTF9UUlVFLCBi
bHVlID09IEdMX1RSVUUsIGFscGhhID09IEdMX1RSVUUpOworICAgICAgICBjb250ZXh0LT5jb2xv
ck1hc2socmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwogICAgIH0KIH0KIApAQCAtNzQ1LDE4ICs2
NjgsMTMgQEAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzd2l0Y2ggKHR5cGUpCisKKyAgICAg
ICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZUNyZWF0ZVNoYWRl
cihjb250ZXh0LCB0eXBlKSkKICAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfRlJBR01FTlRf
U0hBREVSOgotICAgICAgICAgIGNhc2UgR0xfVkVSVEVYX1NIQURFUjoKLSAgICAgICAgICAgIHJl
dHVybiBjb250ZXh0LT5jcmVhdGVTaGFkZXIodHlwZSk7Ci0KLSAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7
CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQorICAgICAgICByZXR1cm4gY29udGV4
dC0+Y3JlYXRlU2hhZGVyKHR5cGUpOwogICAgIH0KLQogICAgIHJldHVybiAwOwogfQogCkBAIC03
NzUsMTEgKzY5MywxMSBAQAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVN
KSk7CisgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
RU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY29udGV4
dC0+Z2V0U3RhdGUoKS5zZXRDdWxsTW9kZShtb2RlKTsKKyAgICAgICAgY29udGV4dC0+Y3VsbEZh
Y2UobW9kZSk7CiAgICAgfQogfQogCkBAIC04NDAsMTIgKzc1OCwxMiBAQAogICAgICAgICB7CiAg
ICAgICAgICAgICBpZihjb250ZXh0LT5nZXRTaGFkZXIocHJvZ3JhbSkpCiAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtODg5LDEy
ICs4MDcsMTIgQEAKICAgICAgICAgewogICAgICAgICAgICAgaWYoY29udGV4dC0+Z2V0UHJvZ3Jh
bShzaGFkZXIpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KQEAgLTk0MiwxMyArODYwLDE0IEBACiAgICAgICAgICAgY2FzZSBHTF9H
UkVBVEVSOgogICAgICAgICAgIGNhc2UgR0xfR0VRVUFMOgogICAgICAgICAgIGNhc2UgR0xfTk9U
RVFVQUw6Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRTdGF0ZSgpLnNldERlcHRoRnVuYyhmdW5j
KTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZB
TElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKworICAgICAg
ICBjb250ZXh0LT5kZXB0aEZ1bmMoZnVuYyk7CiAgICAgfQogfQogCkBAIC05NTksNyArODc4LDcg
QEAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBjb250ZXh0LT5nZXRTdGF0ZSgpLnNldERlcHRo
TWFzayhmbGFnICE9IEdMX0ZBTFNFKTsKKyAgICAgICAgY29udGV4dC0+ZGVwdGhNYXNrKGZsYWcp
OwogICAgIH0KIH0KIApAQCAtOTcwLDcgKzg4OSw3IEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgY29udGV4dC0+Z2V0U3RhdGUoKS5zZXREZXB0aFJhbmdlKHpOZWFyLCB6RmFyKTsKKyAgICAg
ICAgY29udGV4dC0+ZGVwdGhSYW5nZWYoek5lYXIsIHpGYXIpOwogICAgIH0KIH0KIApAQCAtOTk1
LDcgKzkxNCw3IEBACiAKICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0LT5kZXRhY2hTaGFkZXIo
c2hhZGVyT2JqZWN0KSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDA4LDEzICs5MjcsMTIgQEAKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBpZiAoIVZhbGlkQ2FwKGNvbnRleHQsIGNhcCkpCisgICAgICAgIGlmICgh
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVEaXNhYmxlKGNvbnRleHQsIGNh
cCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgY29udGV4dC0+Z2V0U3RhdGUoKS5zZXRFbmFibGVGZWF0dXJlKGNhcCwgZmFsc2UpOworICAg
ICAgICBjb250ZXh0LT5kaXNhYmxlKGNhcCk7CiAgICAgfQogfQogCkBAIC0xMDI3LDExICs5NDUs
MTEgQEAKICAgICB7CiAgICAgICAgIGlmIChpbmRleCA+PSBNQVhfVkVSVEVYX0FUVFJJQlMpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFM
SURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IGNvbnRleHQtPmdldFN0YXRlKCkuc2V0RW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgsIGZh
bHNlKTsKKyAgICAgICAgY29udGV4dC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsK
ICAgICB9CiB9CiAKQEAgLTEwNTAsNyArOTY4LDcgQEAKICAgICAgICAgRXJyb3IgZXJyb3IgPSBj
b250ZXh0LT5kcmF3QXJyYXlzKG1vZGUsIGZpcnN0LCBjb3VudCk7CiAgICAgICAgIGlmIChlcnJv
ci5pc0Vycm9yKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KGVycm9yKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKGVycm9yKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTEwNzMsNyArOTkxLDcgQEAKICAg
ICAgICAgRXJyb3IgZXJyb3IgPSBjb250ZXh0LT5kcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5
cGUsIGluZGljZXMsIGluZGV4UmFuZ2UpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7CisgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDg2LDI3ICsxMDA0LDEyIEBACiAgICAgQ29udGV4dCAq
Y29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgaWYgKCFWYWxpZENhcChjb250ZXh0LCBjYXApKQorICAgICAgICBpZiAoIWNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlRW5hYmxlKGNvbnRleHQsIGNhcCkp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
aWYgKGNvbnRleHQtPmdldExpbWl0YXRpb25zKCkubm9TYW1wbGVBbHBoYVRvQ292ZXJhZ2VTdXBw
b3J0KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoY2FwID09IEdMX1NBTVBMRV9BTFBIQV9U
T19DT1ZFUkFHRSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpl
cnJvck1lc3NhZ2UgPSAiQ3VycmVudCByZW5kZXJlciBkb2Vzbid0IHN1cHBvcnQgYWxwaGEtdG8t
Y292ZXJhZ2UiOwotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLCBlcnJvck1lc3NhZ2UpKTsKLQotICAgICAgICAgICAgICAgIC8v
IFdlIGFsc28gb3V0cHV0IGFuIGVycm9yIG1lc3NhZ2UgdG8gdGhlIGRlYnVnZ2VyIHdpbmRvdyBp
ZiB0cmFjaW5nIGlzIGFjdGl2ZSwgc28gdGhhdCBkZXZlbG9wZXJzIGNhbiBzZWUgdGhlIGVycm9y
IG1lc3NhZ2UuCi0gICAgICAgICAgICAgICAgRVJSKCIlcyIsIGVycm9yTWVzc2FnZSk7Ci0KLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAg
ICBjb250ZXh0LT5nZXRTdGF0ZSgpLnNldEVuYWJsZUZlYXR1cmUoY2FwLCB0cnVlKTsKKyAgICAg
ICAgY29udGV4dC0+ZW5hYmxlKGNhcCk7CiAgICAgfQogfQogCkBAIC0xMTE5LDExICsxMDIyLDEx
IEBACiAgICAgewogICAgICAgICBpZiAoaW5kZXggPj0gTUFYX1ZFUlRFWF9BVFRSSUJTKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X1ZBTFVFKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBj
b250ZXh0LT5nZXRTdGF0ZSgpLnNldEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4LCB0cnVl
KTsKKyAgICAgICAgY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOwogICAg
IH0KIH0KIApAQCAtMTEzNyw3ICsxMDQwLDcgQEAKICAgICAgICAgRXJyb3IgZXJyb3IgPSBjb250
ZXh0LT5maW5pc2goKTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgfQpAQCAtMTE1Myw3ICsxMDU2LDcgQEAKICAgICAgICAgRXJyb3IgZXJyb3IgPSBjb250
ZXh0LT5mbHVzaCgpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7CisgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICB9CkBAIC0xMjA3LDEyICsxMTEwLDEzIEBACiAgICAgICAgIHsKICAgICAgICAgICBjYXNl
IEdMX0NXOgogICAgICAgICAgIGNhc2UgR0xfQ0NXOgotICAgICAgICAgICAgY29udGV4dC0+Z2V0
U3RhdGUoKS5zZXRGcm9udEZhY2UobW9kZSk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQorCisgICAgICAgIGNvbnRleHQtPmZyb250RmFjZShtb2RlKTsKICAgICB9
CiB9CiAKQEAgLTEyNDIsNzQgKzExNDYsMTIgQEAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBp
ZiAoIVZhbGlkVGV4dHVyZVRhcmdldChjb250ZXh0LCB0YXJnZXQpKQorICAgICAgICBpZiAoIWNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlR2VuZXJhdGVNaXBtYXAoY29udGV4
dCwgdGFyZ2V0KSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBUZXh0dXJlICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGFyZ2V0VGV4dHVyZSh0
YXJnZXQpOwotCi0gICAgICAgIGlmICh0ZXh0dXJlID09IE5VTEwpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBHTGVudW0gYmFzZVRh
cmdldCA9ICh0YXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01BUCkgPyBHTF9URVhUVVJFX0NVQkVf
TUFQX1BPU0lUSVZFX1ggOiB0YXJnZXQ7Ci0gICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCA9
IHRleHR1cmUtPmdldEludGVybmFsRm9ybWF0KGJhc2VUYXJnZXQsIDApOwotICAgICAgICBjb25z
dCBUZXh0dXJlQ2FwcyAmZm9ybWF0Q2FwcyA9IGNvbnRleHQtPmdldFRleHR1cmVDYXBzKCkuZ2V0
KGludGVybmFsRm9ybWF0KTsKLSAgICAgICAgY29uc3QgSW50ZXJuYWxGb3JtYXQgJmZvcm1hdElu
Zm8gPSBHZXRJbnRlcm5hbEZvcm1hdEluZm8oaW50ZXJuYWxGb3JtYXQpOwotCi0gICAgICAgIC8v
IEdlbmVyYXRlTWlwbWFwIHNob3VsZCBub3QgZ2VuZXJhdGUgYW4gSU5WQUxJRF9PUEVSQVRJT04g
Zm9yIHRleHR1cmVzIGNyZWF0ZWQgd2l0aAotICAgICAgICAvLyB1bnNpemVkIGZvcm1hdHMgb3Ig
dGhhdCBhcmUgY29sb3IgcmVuZGVyYWJsZSBhbmQgZmlsdGVyYWJsZS4gIFNpbmNlIHdlIGRvIG5v
dCB0cmFjayBpZgotICAgICAgICAvLyB0aGUgdGV4dHVyZSB3YXMgY3JlYXRlZCB3aXRoIHNpemVk
IG9yIHVuc2l6ZWQgZm9ybWF0IChvbmx5IHNpemVkIGZvcm1hdHMgYXJlIHN0b3JlZCksCi0gICAg
ICAgIC8vIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBtYWtlIHN1cmUgdGhlIHRoZSBMVU1BIGZvcm1h
dHMgY2FuIGdlbmVyYXRlIG1pcG1hcHMgKHRoZXkgc2hvdWxkCi0gICAgICAgIC8vIGJlIGFibGUg
dG8pIGJlY2F1c2UgdGhleSBhcmVuJ3QgY29sb3IgcmVuZGVyYWJsZS4gIFNpbXBseSBkbyBhIHNw
ZWNpYWwgY2FzZSBmb3IgTFVNQQotICAgICAgICAvLyB0ZXh0dXJlcyBzaW5jZSB0aGV5J3JlIHRo
ZSBvbmx5IHRleHR1cmUgZm9ybWF0IHRoYXQgY2FuIGJlIGNyZWF0ZWQgd2l0aCB1bnNpemVkIGZv
cm1hdHMKLSAgICAgICAgLy8gdGhhdCBpcyBub3QgY29sb3IgcmVuZGVyYWJsZS4gIE5ldyB1bnNp
emVkIGZvcm1hdHMgYXJlIHVubGlrZWx5IHRvIGJlIGFkZGVkLCBzaW5jZSBFUzIKLSAgICAgICAg
Ly8gd2FzIHRoZSBsYXN0IHZlcnNpb24gdG8gdXNlIGFkZCB0aGVtLgotICAgICAgICBib29sIGlz
TFVNQSA9IGludGVybmFsRm9ybWF0ID09IEdMX0xVTUlOQU5DRThfRVhUIHx8Ci0gICAgICAgICAg
ICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXQgPT0gR0xfTFVNSU5BTkNFOF9BTFBIQThfRVhUIHx8
Ci0gICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXQgPT0gR0xfQUxQSEE4X0VYVDsK
LQotICAgICAgICBpZiAoZm9ybWF0SW5mby5kZXB0aEJpdHMgPiAwIHx8IGZvcm1hdEluZm8uc3Rl
bmNpbEJpdHMgPiAwIHx8ICFmb3JtYXRDYXBzLmZpbHRlcmFibGUgfHwKLSAgICAgICAgICAgICgh
Zm9ybWF0Q2Fwcy5yZW5kZXJhYmxlICYmICFpc0xVTUEpIHx8IGZvcm1hdEluZm8uY29tcHJlc3Nl
ZCkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIC8vIEdMX0VYVF9zUkdCIGRvZXMgbm90IHN1cHBvcnQgbWlwbWFwIGdlbmVyYXRpb24g
b24gc1JHQiB0ZXh0dXJlcwotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigp
ID09IDIgJiYgZm9ybWF0SW5mby5jb2xvckVuY29kaW5nID09IEdMX1NSR0IpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBOb24t
cG93ZXIgb2YgMiBFUzIgY2hlY2sKLSAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkudGV4dHVyZU5QT1QgJiYKLSAgICAgICAgICAgICghaXNQb3cyKHN0YXRpY19jYXN0PGludD4o
dGV4dHVyZS0+Z2V0V2lkdGgoYmFzZVRhcmdldCwgMCkpKSB8fAotICAgICAgICAgICAgICFpc1Bv
dzIoc3RhdGljX2Nhc3Q8aW50Pih0ZXh0dXJlLT5nZXRIZWlnaHQoYmFzZVRhcmdldCwgMCkpKSkp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9u
KCkgPD0gMiAmJiAodGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQgfHwgdGFyZ2V0ID09IEdMX1RFWFRV
UkVfQ1VCRV9NQVApKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBDdWJlIGNvbXBsZXRlbmVzcyBjaGVjawotICAgICAgICBpZiAodGFyZ2V0ID09
IEdMX1RFWFRVUkVfQ1VCRV9NQVAgJiYgIXRleHR1cmUtPmlzQ3ViZUNvbXBsZXRlKCkpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBF
cnJvciBlcnJvciA9IHRleHR1cmUtPmdlbmVyYXRlTWlwbWFwcygpOwotICAgICAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cihlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4
dC0+Z2VuZXJhdGVNaXBtYXAodGFyZ2V0KTsKICAgICB9CiB9CiAKQEAgLTEzODEsNyArMTIyMyw3
IEBACiAgICAgewogICAgICAgICBpZiAoYnVmc2l6ZSA8IDApCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMzk0LDcgKzEyMzYsNyBAQAogCiAg
ICAgICAgIGlmIChpbmRleCA+PSAoR0x1aW50KXByb2dyYW1PYmplY3QtPmdldEFjdGl2ZUF0dHJp
YnV0ZUNvdW50KCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCkBAIC0xNDE0LDcgKzEyNTYsNyBAQAogICAgIHsKICAgICAgICAgaWYgKGJ1ZnNpemUg
PCAwKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApA
QCAtMTQyNyw3ICsxMjY5LDcgQEAKIAogICAgICAgICBpZiAoaW5kZXggPj0gKEdMdWludClwcm9n
cmFtT2JqZWN0LT5nZXRBY3RpdmVVbmlmb3JtQ291bnQoKSkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE0NDUsNyArMTI4Nyw3IEBACiAgICAg
ewogICAgICAgICBpZiAobWF4Y291bnQgPCAwKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTQ3Niw3ICsxMzE4LDcgQEAKIAogICAgICAgICBp
ZiAoIXByb2dyYW1PYmplY3QtPmlzTGlua2VkKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwog
ICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAKQEAgLTE1MTgsNTMgKzEzNjAsMTQg
QEAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIVZhbGlkQnVmZmVyVGFyZ2V0KGNvbnRl
eHQsIHRhcmdldCkpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgor
ICAgICAgICAgICAgIVZhbGlkYXRlR2V0QnVmZmVyUGFyYW1ldGVyaXYoY29udGV4dCwgdGFyZ2V0
LCBwbmFtZSwgcGFyYW1zKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBpZiAoIVZhbGlkQnVmZmVyUGFyYW1ldGVyKGNvbnRleHQsIHBuYW1l
KSkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg
ICBCdWZmZXIgKmJ1ZmZlciA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0VGFyZ2V0QnVmZmVyKHRh
cmdldCk7Ci0KLSAgICAgICAgaWYgKCFidWZmZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8v
IEEgbnVsbCBidWZmZXIgbWVhbnMgdGhhdCAiMCIgaXMgYm91bmQgdG8gdGhlIHJlcXVlc3RlZCBi
dWZmZXIgdGFyZ2V0Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAg
ICAgICAgc3dpdGNoIChwbmFtZSkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfQlVGRkVS
X1VTQUdFOgotICAgICAgICAgICAgKnBhcmFtcyA9IHN0YXRpY19jYXN0PEdMaW50PihidWZmZXIt
PmdldFVzYWdlKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9CVUZG
RVJfU0laRToKLSAgICAgICAgICAgICpwYXJhbXMgPSBjbGFtcENhc3Q8R0xpbnQ+KGJ1ZmZlci0+
Z2V0U2l6ZSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfQlVGRkVS
X0FDQ0VTU19GTEFHUzoKLSAgICAgICAgICAgICpwYXJhbXMgPSBidWZmZXItPmdldEFjY2Vzc0Zs
YWdzKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX0JVRkZFUl9BQ0NF
U1NfT0VTOgotICAgICAgICAgICAgKnBhcmFtcyA9IGJ1ZmZlci0+Z2V0QWNjZXNzKCk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX0JVRkZFUl9NQVBQRUQ6Ci0gICAgICAg
ICAgICBzdGF0aWNfYXNzZXJ0KEdMX0JVRkZFUl9NQVBQRUQgPT0gR0xfQlVGRkVSX01BUFBFRF9P
RVMsICJHTCBlbnVtcyBzaG91bGQgYmUgZXF1YWwuIik7Ci0gICAgICAgICAgICAqcGFyYW1zID0g
c3RhdGljX2Nhc3Q8R0xpbnQ+KGJ1ZmZlci0+aXNNYXBwZWQoKSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICBjYXNlIEdMX0JVRkZFUl9NQVBfT0ZGU0VUOgotICAgICAgICAgICAgKnBh
cmFtcyA9IGNsYW1wQ2FzdDxHTGludD4oYnVmZmVyLT5nZXRNYXBPZmZzZXQoKSk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX0JVRkZFUl9NQVBfTEVOR1RIOgotICAgICAg
ICAgICAgKnBhcmFtcyA9IGNsYW1wQ2FzdDxHTGludD4oYnVmZmVyLT5nZXRNYXBMZW5ndGgoKSk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyBi
cmVhazsKLSAgICAgICAgfQorICAgICAgICBCdWZmZXIgKmJ1ZmZlciA9IGNvbnRleHQtPmdldEdM
U3RhdGUoKS5nZXRUYXJnZXRCdWZmZXIodGFyZ2V0KTsKKyAgICAgICAgUXVlcnlCdWZmZXJQYXJh
bWV0ZXJpdihidWZmZXIsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIApAQCAtMTYxNSwyNTkg
KzE0MTgsMTYgQEAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIVZhbGlkRnJhbWVidWZm
ZXJUYXJnZXQodGFyZ2V0KSkKKyAgICAgICAgR0xzaXplaSBudW1QYXJhbXMgPSAwOworICAgICAg
ICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0
ZUdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KGNvbnRleHQsIHRhcmdldCwgYXR0
YWNobWVudCwgcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmbnVtUGFyYW1zKSkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpbnQgY2xpZW50VmVyc2lvbiA9IGNvbnRleHQt
PmdldENsaWVudFZlcnNpb24oKTsKLQotICAgICAgICBzd2l0Y2ggKHBuYW1lKQotICAgICAgICB7
Ci0gICAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFOgot
ICAgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRToKLSAg
ICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTDoKLSAg
ICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9G
QUNFOgotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVS
X0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkc6Ci0gICAgICAgICAgICBpZiAoY2xpZW50VmVyc2lv
biA8IDMgJiYgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zUkdCKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGJyZWFrOwotCi0gICAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1JFRF9T
SVpFOgotICAgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9HUkVFTl9TSVpF
OgotICAgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9CTFVFX1NJWkU6Ci0g
ICAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0FMUEhBX1NJWkU6Ci0gICAg
ICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0RFUFRIX1NJWkU6Ci0gICAgICAg
ICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1NURU5DSUxfU0laRToKLSAgICAgICAg
ICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZUEU6Ci0gICAgICAg
ICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEFZRVI6Ci0gICAgICAg
ICAgICBpZiAoY2xpZW50VmVyc2lvbiA8IDMpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAg
ICAgICAvLyBEZXRlcm1pbmUgaWYgdGhlIGF0dGFjaG1lbnQgaXMgYSB2YWxpZCBlbnVtCi0gICAg
ICAgIHN3aXRjaCAoYXR0YWNobWVudCkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfQkFD
SzoKLSAgICAgICAgICBjYXNlIEdMX0ZST05UOgotICAgICAgICAgIGNhc2UgR0xfREVQVEg6Ci0g
ICAgICAgICAgY2FzZSBHTF9TVEVOQ0lMOgotICAgICAgICAgIGNhc2UgR0xfREVQVEhfU1RFTkNJ
TF9BVFRBQ0hNRU5UOgotICAgICAgICAgICAgaWYgKGNsaWVudFZlcnNpb24gPCAzKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfRU5VTSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgY2FzZSBHTF9ERVBUSF9BVFRBQ0hNRU5UOgot
ICAgICAgICAgIGNhc2UgR0xfU1RFTkNJTF9BVFRBQ0hNRU5UOgotICAgICAgICAgICAgYnJlYWs7
Ci0KLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnQgPCBHTF9D
T0xPUl9BVFRBQ0hNRU5UMF9FWFQgfHwKLSAgICAgICAgICAgICAgICAoYXR0YWNobWVudCAtIEdM
X0NPTE9SX0FUVEFDSE1FTlQwX0VYVCkgPj0gY29udGV4dC0+Z2V0Q2FwcygpLm1heENvbG9yQXR0
YWNobWVudHMpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBj
b25zdCBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFRh
cmdldEZyYW1lYnVmZmVyKHRhcmdldCk7Ci0gICAgICAgIEFTU0VSVChmcmFtZWJ1ZmZlcik7Ci0K
LSAgICAgICAgaWYgKGZyYW1lYnVmZmVyLT5pZCgpID09IDApCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGlmIChjbGllbnRWZXJzaW9uIDwgMykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc3dpdGNo
IChhdHRhY2htZW50KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBjYXNlIEdMX0JBQ0s6
Ci0gICAgICAgICAgICAgIGNhc2UgR0xfREVQVEg6Ci0gICAgICAgICAgICAgIGNhc2UgR0xfU1RF
TkNJTDoKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnQg
Pj0gR0xfQ09MT1JfQVRUQUNITUVOVDBfRVhUICYmIGF0dGFjaG1lbnQgPD0gR0xfQ09MT1JfQVRU
QUNITUVOVDE1X0VYVCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBWYWxpZCBh
dHRhY2htZW50IHF1ZXJ5Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChhdHRhY2htZW50KQotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgIGNhc2UgR0xfREVQVEhfQVRUQUNITUVOVDoKLSAgICAg
ICAgICAgICAgICAgIGNhc2UgR0xfU1RFTkNJTF9BVFRBQ0hNRU5UOgotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9TVEVOQ0lMX0FU
VEFDSE1FTlQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmICghZnJhbWVidWZmZXItPmhhc1ZhbGlk
RGVwdGhTdGVuY2lsKCkpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCBGcmFtZWJ1
ZmZlckF0dGFjaG1lbnQgKmF0dGFjaG1lbnRPYmplY3QgPSBmcmFtZWJ1ZmZlci0+Z2V0QXR0YWNo
bWVudChhdHRhY2htZW50KTsKLSAgICAgICAgaWYgKGF0dGFjaG1lbnRPYmplY3QpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIEFTU0VSVChhdHRhY2htZW50T2JqZWN0LT50eXBlKCkgPT0gR0xfUkVO
REVSQlVGRkVSIHx8Ci0gICAgICAgICAgICAgICAgICAgYXR0YWNobWVudE9iamVjdC0+dHlwZSgp
ID09IEdMX1RFWFRVUkUgfHwKLSAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50T2JqZWN0LT50
eXBlKCkgPT0gR0xfRlJBTUVCVUZGRVJfREVGQVVMVCk7Ci0KLSAgICAgICAgICAgIHN3aXRjaCAo
cG5hbWUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9PQkpFQ1RfVFlQRToKLSAgICAgICAgICAgICAgICAqcGFyYW1zID0gYXR0YWNo
bWVudE9iamVjdC0+dHlwZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAg
ICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRToKLSAgICAgICAg
ICAgICAgICBpZiAoYXR0YWNobWVudE9iamVjdC0+dHlwZSgpICE9IEdMX1JFTkRFUkJVRkZFUiAm
JiBhdHRhY2htZW50T2JqZWN0LT50eXBlKCkgIT0gR0xfVEVYVFVSRSkKLSAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfRU5VTSkpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICpwYXJhbXMgPSBhdHRhY2htZW50T2JqZWN0LT5pZCgpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZG
RVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMOgotICAgICAgICAgICAgICAgIGlmIChhdHRhY2ht
ZW50T2JqZWN0LT50eXBlKCkgIT0gR0xfVEVYVFVSRSkKLSAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSkpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICpwYXJhbXMgPSBhdHRhY2htZW50T2JqZWN0LT5taXBMZXZlbCgpOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0U6Ci0gICAgICAgICAgICAgICAgaWYgKGF0
dGFjaG1lbnRPYmplY3QtPnR5cGUoKSAhPSBHTF9URVhUVVJFKQotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgKnBhcmFtcyA9IGF0dGFjaG1lbnRPYmplY3QtPmN1YmVNYXBGYWNl
KCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgY2FzZSBHTF9GUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX1JFRF9TSVpFOgotICAgICAgICAgICAgICAgICpwYXJhbXMgPSBh
dHRhY2htZW50T2JqZWN0LT5nZXRSZWRTaXplKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0K
LSAgICAgICAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0dSRUVOX1NJWkU6
Ci0gICAgICAgICAgICAgICAgKnBhcmFtcyA9IGF0dGFjaG1lbnRPYmplY3QtPmdldEdyZWVuU2l6
ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgIGNhc2UgR0xfRlJB
TUVCVUZGRVJfQVRUQUNITUVOVF9CTFVFX1NJWkU6Ci0gICAgICAgICAgICAgICAgKnBhcmFtcyA9
IGF0dGFjaG1lbnRPYmplY3QtPmdldEJsdWVTaXplKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0KLSAgICAgICAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0FMUEhBX1NJ
WkU6Ci0gICAgICAgICAgICAgICAgKnBhcmFtcyA9IGF0dGFjaG1lbnRPYmplY3QtPmdldEFscGhh
U2l6ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgIGNhc2UgR0xf
RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9ERVBUSF9TSVpFOgotICAgICAgICAgICAgICAgICpwYXJh
bXMgPSBhdHRhY2htZW50T2JqZWN0LT5nZXREZXB0aFNpemUoKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfU1RF
TkNJTF9TSVpFOgotICAgICAgICAgICAgICAgICpwYXJhbXMgPSBhdHRhY2htZW50T2JqZWN0LT5n
ZXRTdGVuY2lsU2l6ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAg
IGNhc2UgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT01QT05FTlRfVFlQRToKLSAgICAgICAg
ICAgICAgICBpZiAoYXR0YWNobWVudCA9PSBHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQpCi0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICpwYXJhbXMgPSBhdHRhY2ht
ZW50T2JqZWN0LT5nZXRDb21wb25lbnRUeXBlKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0K
LSAgICAgICAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09E
SU5HOgotICAgICAgICAgICAgICAgICpwYXJhbXMgPSBhdHRhY2htZW50T2JqZWN0LT5nZXRDb2xv
ckVuY29kaW5nKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgY2Fz
ZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEFZRVI6Ci0gICAgICAgICAgICAg
ICAgaWYgKGF0dGFjaG1lbnRPYmplY3QtPnR5cGUoKSAhPSBHTF9URVhUVVJFKQotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgKnBhcmFtcyA9IGF0dGFjaG1lbnRPYmplY3QtPmxh
eWVyKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAg
ICAgICAgLy8gRVMgMi4wLjI1IHNwZWMgcGcgMTI3IHN0YXRlcyB0aGF0IGlmIHRoZSB2YWx1ZSBv
ZiBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFCi0gICAgICAgICAgICAvLyBpcyBO
T05FLCB0aGVuIHF1ZXJ5aW5nIGFueSBvdGhlciBwbmFtZSB3aWxsIGdlbmVyYXRlIElOVkFMSURf
RU5VTS4KLQotICAgICAgICAgICAgLy8gRVMgMy4wLjIgc3BlYyBwZyAyMzUgc3RhdGVzIHRoYXQg
aWYgdGhlIGF0dGFjaG1lbnQgdHlwZSBpcyBub25lLAotICAgICAgICAgICAgLy8gR0xfRlJBTUVC
VUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRSB3aWxsIHJldHVybiB6ZXJvIGFuZCBiZSBhbgot
ICAgICAgICAgICAgLy8gSU5WQUxJRF9PUEVSQVRJT04gZm9yIGFsbCBvdGhlciBwbmFtZXMKLQot
ICAgICAgICAgICAgc3dpdGNoIChwbmFtZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
Y2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFOgotICAgICAgICAgICAg
ICAgICpwYXJhbXMgPSBHTF9OT05FOwotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAg
ICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRToKLSAgICAg
ICAgICAgICAgICBpZiAoY2xpZW50VmVyc2lvbiA8IDMpCi0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VO
VU0pKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAqcGFyYW1zID0gMDsKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGlmIChjbGllbnRWZXJzaW9uIDwg
MykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgY29uc3QgRnJh
bWVidWZmZXIgKmZyYW1lYnVmZmVyID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFRhcmdldEZy
YW1lYnVmZmVyKHRhcmdldCk7CisgICAgICAgIFF1ZXJ5RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaXYoZnJhbWVidWZmZXIsIGF0dGFjaG1lbnQsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0K
IH0KIApAQCAtMTkwNCw4MyArMTQ2NCwxNSBAQAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFBy
b2dyYW0gKnByb2dyYW1PYmplY3QgPSBHZXRWYWxpZFByb2dyYW0oY29udGV4dCwgcHJvZ3JhbSk7
Ci0KLSAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQorICAgICAgICBHTHNpemVpIG51bVBhcmFt
cyA9IDA7CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAg
ICAgICAgIVZhbGlkYXRlR2V0UHJvZ3JhbWl2KGNvbnRleHQsIHByb2dyYW0sIHBuYW1lLCAmbnVt
UGFyYW1zKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHN3aXRjaCAocG5hbWUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNh
c2UgR0xfQUNUSVZFX1VOSUZPUk1fQkxPQ0tTOgotICAgICAgICAgICAgICBjYXNlIEdMX0FDVElW
RV9VTklGT1JNX0JMT0NLX01BWF9OQU1FX0xFTkdUSDoKLSAgICAgICAgICAgICAgY2FzZSBHTF9U
UkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX01PREU6Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVFJB
TlNGT1JNX0ZFRURCQUNLX1ZBUllJTkdTOgotICAgICAgICAgICAgICBjYXNlIEdMX1RSQU5TRk9S
TV9GRUVEQkFDS19WQVJZSU5HX01BWF9MRU5HVEg6Ci0gICAgICAgICAgICAgIGNhc2UgR0xfUFJP
R1JBTV9CSU5BUllfUkVUUklFVkFCTEVfSElOVDoKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBzd2l0Y2ggKHBuYW1lKQot
ICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9ERUxFVEVfU1RBVFVTOgotICAgICAgICAgICAg
KnBhcmFtcyA9IHByb2dyYW1PYmplY3QtPmlzRmxhZ2dlZEZvckRlbGV0aW9uKCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgY2FzZSBHTF9MSU5LX1NUQVRVUzoKLSAgICAgICAgICAg
ICpwYXJhbXMgPSBwcm9ncmFtT2JqZWN0LT5pc0xpbmtlZCgpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgIGNhc2UgR0xfVkFMSURBVEVfU1RBVFVTOgotICAgICAgICAgICAgKnBhcmFt
cyA9IHByb2dyYW1PYmplY3QtPmlzVmFsaWRhdGVkKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgY2FzZSBHTF9JTkZPX0xPR19MRU5HVEg6Ci0gICAgICAgICAgICAqcGFyYW1zID0g
cHJvZ3JhbU9iamVjdC0+Z2V0SW5mb0xvZ0xlbmd0aCgpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgIGNhc2UgR0xfQVRUQUNIRURfU0hBREVSUzoKLSAgICAgICAgICAgICpwYXJhbXMg
PSBwcm9ncmFtT2JqZWN0LT5nZXRBdHRhY2hlZFNoYWRlcnNDb3VudCgpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgIGNhc2UgR0xfQUNUSVZFX0FUVFJJQlVURVM6Ci0gICAgICAgICAg
ICAqcGFyYW1zID0gcHJvZ3JhbU9iamVjdC0+Z2V0QWN0aXZlQXR0cmlidXRlQ291bnQoKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICBjYXNlIEdMX0FDVElWRV9BVFRSSUJVVEVfTUFY
X0xFTkdUSDoKLSAgICAgICAgICAgICpwYXJhbXMgPSBwcm9ncmFtT2JqZWN0LT5nZXRBY3RpdmVB
dHRyaWJ1dGVNYXhMZW5ndGgoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICBjYXNl
IEdMX0FDVElWRV9VTklGT1JNUzoKLSAgICAgICAgICAgICpwYXJhbXMgPSBwcm9ncmFtT2JqZWN0
LT5nZXRBY3RpdmVVbmlmb3JtQ291bnQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICBjYXNlIEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEg6Ci0gICAgICAgICAgICAqcGFyYW1z
ID0gcHJvZ3JhbU9iamVjdC0+Z2V0QWN0aXZlVW5pZm9ybU1heExlbmd0aCgpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgIGNhc2UgR0xfUFJPR1JBTV9CSU5BUllfTEVOR1RIX09FUzoK
LSAgICAgICAgICAgICpwYXJhbXMgPSBwcm9ncmFtT2JqZWN0LT5nZXRCaW5hcnlMZW5ndGgoKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICBjYXNlIEdMX0FDVElWRV9VTklGT1JNX0JM
T0NLUzoKLSAgICAgICAgICAgICpwYXJhbXMgPSBwcm9ncmFtT2JqZWN0LT5nZXRBY3RpdmVVbmlm
b3JtQmxvY2tDb3VudCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgIGNhc2UgR0xf
QUNUSVZFX1VOSUZPUk1fQkxPQ0tfTUFYX05BTUVfTEVOR1RIOgotICAgICAgICAgICAgKnBhcmFt
cyA9IHByb2dyYW1PYmplY3QtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja01heExlbmd0aCgpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVG
RkVSX01PREU6Ci0gICAgICAgICAgICAqcGFyYW1zID0gcHJvZ3JhbU9iamVjdC0+Z2V0VHJhbnNm
b3JtRmVlZGJhY2tCdWZmZXJNb2RlKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBj
YXNlIEdMX1RSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HUzoKLSAgICAgICAgICAgICpwYXJhbXMg
PSBwcm9ncmFtT2JqZWN0LT5nZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdDb3VudCgpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfVkFS
WUlOR19NQVhfTEVOR1RIOgotICAgICAgICAgICAgKnBhcmFtcyA9IHByb2dyYW1PYmplY3QtPmdl
dFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ01heExlbmd0aCgpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgY2FzZSBHTF9QUk9HUkFNX0JJTkFSWV9SRVRSSUVWQUJMRV9ISU5UOgotICAg
ICAgICAgICAgICAqcGFyYW1zID0gcHJvZ3JhbU9iamVjdC0+Z2V0QmluYXJ5UmV0cmlldmFibGVI
aW50KCk7Ci0gICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmpl
Y3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworICAgICAgICBRdWVyeVByb2dyYW1p
dihwcm9ncmFtT2JqZWN0LCBwbmFtZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKQEAgLTE5OTQsNyAr
MTQ4Niw3IEBACiAgICAgewogICAgICAgICBpZiAoYnVmc2l6ZSA8IDApCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMDE1LDQ1ICsxNTA3LDE0
IEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKHRhcmdldCAhPSBHTF9SRU5ERVJCVUZG
RVIpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAg
ICAgIVZhbGlkYXRlR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYoY29udGV4dCwgdGFyZ2V0LCBw
bmFtZSwgcGFyYW1zKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAoY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRSZW5kZXJidWZmZXJJZCgp
ID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICBSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlciA9IGNvbnRleHQtPmdldFJlbmRl
cmJ1ZmZlcihjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFJlbmRlcmJ1ZmZlcklkKCkpOwotCi0gICAg
ICAgIHN3aXRjaCAocG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX1JFTkRFUkJV
RkZFUl9XSURUSDogICAgICAgICAgICpwYXJhbXMgPSByZW5kZXJidWZmZXItPmdldFdpZHRoKCk7
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0hFSUdIVDog
ICAgICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0SGVpZ2h0KCk7ICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUOiAqcGFy
YW1zID0gcmVuZGVyYnVmZmVyLT5nZXRJbnRlcm5hbEZvcm1hdCgpOyBicmVhazsKLSAgICAgICAg
ICBjYXNlIEdMX1JFTkRFUkJVRkZFUl9SRURfU0laRTogICAgICAgICpwYXJhbXMgPSByZW5kZXJi
dWZmZXItPmdldFJlZFNpemUoKTsgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfUkVO
REVSQlVGRkVSX0dSRUVOX1NJWkU6ICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0R3Jl
ZW5TaXplKCk7ICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVJfQkxV
RV9TSVpFOiAgICAgICAqcGFyYW1zID0gcmVuZGVyYnVmZmVyLT5nZXRCbHVlU2l6ZSgpOyAgICAg
ICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1JFTkRFUkJVRkZFUl9BTFBIQV9TSVpFOiAgICAg
ICpwYXJhbXMgPSByZW5kZXJidWZmZXItPmdldEFscGhhU2l6ZSgpOyAgICAgIGJyZWFrOwotICAg
ICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0RFUFRIX1NJWkU6ICAgICAgKnBhcmFtcyA9IHJl
bmRlcmJ1ZmZlci0+Z2V0RGVwdGhTaXplKCk7ICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBH
TF9SRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFOiAgICAqcGFyYW1zID0gcmVuZGVyYnVmZmVyLT5n
ZXRTdGVuY2lsU2l6ZSgpOyAgICBicmVhazsKLQotICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVG
RkVSX1NBTVBMRVNfQU5HTEU6Ci0gICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5mcmFtZWJ1ZmZlck11bHRpc2FtcGxlKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICpwYXJhbXMgPSBy
ZW5kZXJidWZmZXItPmdldFNhbXBsZXMoKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfRU5VTSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIFJl
bmRlcmJ1ZmZlciAqcmVuZGVyYnVmZmVyID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldEN1cnJl
bnRSZW5kZXJidWZmZXIoKTsKKyAgICAgICAgUXVlcnlSZW5kZXJidWZmZXJpdihyZW5kZXJidWZm
ZXIsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIApAQCAtMjA2NCwzNyArMTUyNSwxMyBAQAog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlciAqc2hhZGVyT2JqZWN0ID0gR2V0VmFsaWRT
aGFkZXIoY29udGV4dCwgc2hhZGVyKTsKLSAgICAgICAgaWYgKCFzaGFkZXJPYmplY3QpCisgICAg
ICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVHZXRTaGFkZXJp
dihjb250ZXh0LCBzaGFkZXIsIHBuYW1lLCBwYXJhbXMpKQogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBzd2l0Y2ggKHBuYW1lKQotICAgICAgICB7
Ci0gICAgICAgICAgY2FzZSBHTF9TSEFERVJfVFlQRToKLSAgICAgICAgICAgICpwYXJhbXMgPSBz
aGFkZXJPYmplY3QtPmdldFR5cGUoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICBj
YXNlIEdMX0RFTEVURV9TVEFUVVM6Ci0gICAgICAgICAgICAqcGFyYW1zID0gc2hhZGVyT2JqZWN0
LT5pc0ZsYWdnZWRGb3JEZWxldGlvbigpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
IGNhc2UgR0xfQ09NUElMRV9TVEFUVVM6Ci0gICAgICAgICAgICAqcGFyYW1zID0gc2hhZGVyT2Jq
ZWN0LT5pc0NvbXBpbGVkKCkgPyBHTF9UUlVFIDogR0xfRkFMU0U7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgY2FzZSBHTF9JTkZPX0xPR19MRU5HVEg6Ci0gICAgICAgICAgICAqcGFy
YW1zID0gc2hhZGVyT2JqZWN0LT5nZXRJbmZvTG9nTGVuZ3RoKCk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgY2FzZSBHTF9TSEFERVJfU09VUkNFX0xFTkdUSDoKLSAgICAgICAgICAg
ICpwYXJhbXMgPSBzaGFkZXJPYmplY3QtPmdldFNvdXJjZUxlbmd0aCgpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgIGNhc2UgR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdU
SF9BTkdMRToKLSAgICAgICAgICAgICpwYXJhbXMgPSBzaGFkZXJPYmplY3QtPmdldFRyYW5zbGF0
ZWRTb3VyY2VXaXRoRGVidWdJbmZvTGVuZ3RoKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAg
ICAgU2hhZGVyICpzaGFkZXJPYmplY3QgPSBjb250ZXh0LT5nZXRTaGFkZXIoc2hhZGVyKTsKKyAg
ICAgICAgUXVlcnlTaGFkZXJpdihzaGFkZXJPYmplY3QsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0K
IH0KIApAQCAtMjEwOCw3ICsxNTQ1LDcgQEAKICAgICB7CiAgICAgICAgIGlmIChidWZzaXplIDwg
MCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAg
LTIxNTYsNyArMTU5Myw3IEBACiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjE4NCwxMiArMTYyMSwxMiBAQAogICAg
ICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0p
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKQEAgLTIyMDYsNyArMTY0Myw3IEBACiAgICAgewogICAgICAgICBpZiAoYnVmc2l6
ZSA8IDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CkBAIC0yMjM0LDEwICsxNjcxLDEwIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSAqPigiR29vZ2xlIEluYy4iKTsKIAogICAgICAgICAgICAg
Y2FzZSBHTF9SRU5ERVJFUjoKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHTHVieXRlICo+KGNvbnRleHQtPmdldFJlbmRlcmVyU3RyaW5nKCkuY19zdHIoKSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSAq
Pihjb250ZXh0LT5nZXRSZW5kZXJlclN0cmluZygpKTsKIAogICAgICAgICAgICAgY2FzZSBHTF9W
RVJTSU9OOgotICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkg
PT0gMikKKyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9u
KCkgPT0gMikKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdMdWJ5dGUgKj4oCiAgICAgICAgICAgICAgICAgICAgICAg
ICAiT3BlbkdMIEVTIDIuMCAoQU5HTEUgIiBBTkdMRV9WRVJTSU9OX1NUUklORyAiKSIpOwpAQCAt
MjI0OSw3ICsxNjg2LDcgQEAKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGNhc2Ug
R0xfU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OOgotICAgICAgICAgICAgICAgIGlmIChjb250ZXh0
LT5nZXRDbGllbnRWZXJzaW9uKCkgPT0gMikKKyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+
Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPT0gMikKICAgICAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEdMdWJ5dGUgKj4oCiAg
ICAgICAgICAgICAgICAgICAgICAgICAiT3BlbkdMIEVTIEdMU0wgRVMgMS4wMCAoQU5HTEUgIiBB
TkdMRV9WRVJTSU9OX1NUUklORyAiKSIpOwpAQCAtMjI2MSwxMCArMTY5OCwxMCBAQAogICAgICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgY2FzZSBHTF9FWFRFTlNJT05TOgotICAgICAgICAg
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEdMdWJ5dGUgKj4oY29udGV4dC0+
Z2V0RXh0ZW5zaW9uU3RyaW5nKCkuY19zdHIoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSAqPihjb250ZXh0LT5nZXRFeHRlbnNpb25TdHJp
bmcoKSk7CiAKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICB9CiAgICAgfQpAQCAtMjI3OSwxNTMgKzE3MTYsMTQgQEAKICAg
ICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBpZiAoIVZhbGlkVGV4dHVyZVRhcmdldChjb250ZXh0LCB0
YXJnZXQpKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAg
ICAgICAgICFWYWxpZGF0ZUdldFRleFBhcmFtZXRlcmZ2KGNvbnRleHQsIHRhcmdldCwgcG5hbWUs
IHBhcmFtcykpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgdGV4dHVyZSB0YXJnZXQiKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBUZXh0dXJlICp0ZXh0dXJlID0gY29u
dGV4dC0+Z2V0VGFyZ2V0VGV4dHVyZSh0YXJnZXQpOwotCi0gICAgICAgIGlmICghdGV4dHVyZSkK
LSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBz
d2l0Y2ggKHBuYW1lKQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BR19G
SUxURVI6Ci0gICAgICAgICAgICAgICpwYXJhbXMgPSAoR0xmbG9hdCl0ZXh0dXJlLT5nZXRNYWdG
aWx0ZXIoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9N
SU5fRklMVEVSOgotICAgICAgICAgICAgICAqcGFyYW1zID0gKEdMZmxvYXQpdGV4dHVyZS0+Z2V0
TWluRmlsdGVyKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRV
UkVfV1JBUF9TOgotICAgICAgICAgICAgICAqcGFyYW1zID0gKEdMZmxvYXQpdGV4dHVyZS0+Z2V0
V3JhcFMoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9X
UkFQX1Q6Ci0gICAgICAgICAgICAgICpwYXJhbXMgPSAoR0xmbG9hdCl0ZXh0dXJlLT5nZXRXcmFw
VCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX1dSQVBf
UjoKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICpwYXJhbXMgPSAoR0xmbG9hdCl0ZXh0dXJlLT5nZXRXcmFwUigpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0lNTVVUQUJMRV9GT1JN
QVQ6Ci0gICAgICAgICAgICAvLyBFeHBvc2VkIHRvIEVTMi4wIHRocm91Z2ggRVhUX3RleHR1cmVf
c3RvcmFnZSwgbm8gY2xpZW50IHZlcnNpb24gdmFsaWRhdGlvbi4KLSAgICAgICAgICAgICpwYXJh
bXMgPSAoR0xmbG9hdCkodGV4dHVyZS0+Z2V0SW1tdXRhYmxlRm9ybWF0KCkgPyBHTF9UUlVFIDog
R0xfRkFMU0UpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJF
X0lNTVVUQUJMRV9MRVZFTFM6Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVy
c2lvbigpIDwgMykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAqcGFyYW1zID0gKEdMZmxvYXQpdGV4dHVyZS0+
Z2V0SW1tdXRhYmxlTGV2ZWxzKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNl
IEdMX1RFWFRVUkVfVVNBR0VfQU5HTEU6Ci0gICAgICAgICAgICAqcGFyYW1zID0gKEdMZmxvYXQp
dGV4dHVyZS0+Z2V0VXNhZ2UoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6Ci0gICAgICAgICAgICBpZiAoIWNvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlRmlsdGVyQW5pc290cm9waWMpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9F
TlVNKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgKnBhcmFtcyA9IChHTGZsb2F0KXRleHR1cmUtPmdldE1heEFuaXNvdHJvcHkoKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9TV0laWkxFX1I6Ci0gICAg
ICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X0VOVU0pKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAqcGFyYW1zID0gKEdMZmxvYXQpdGV4dHVyZS0+Z2V0U3dpenpsZVJlZCgpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX1NXSVpaTEVfRzoKLSAgICAg
ICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURf
RU5VTSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICpwYXJhbXMgPSAoR0xmbG9hdCl0ZXh0dXJlLT5nZXRTd2l6emxlR3JlZW4oKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9TV0laWkxFX0I6Ci0gICAg
ICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X0VOVU0pKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAqcGFyYW1zID0gKEdMZmxvYXQpdGV4dHVyZS0+Z2V0U3dpenpsZUJsdWUoKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9TV0laWkxFX0E6Ci0gICAg
ICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X0VOVU0pKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAqcGFyYW1zID0gKEdMZmxvYXQpdGV4dHVyZS0+Z2V0U3dpenpsZUFscGhhKCk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQkFTRV9MRVZFTDoKLSAg
ICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFM
SURfRU5VTSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICpwYXJhbXMgPSAoR0xmbG9hdCl0ZXh0dXJlLT5nZXRCYXNlTGV2ZWwoKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfTEVWRUw6Ci0gICAg
ICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X0VOVU0pKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAqcGFyYW1zID0gKEdMZmxvYXQpdGV4dHVyZS0+Z2V0TWF4TGV2ZWwoKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NSU5fTE9EOgotICAgICAgICAg
ICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVN
KSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
KnBhcmFtcyA9IHRleHR1cmUtPmdldFNhbXBsZXJTdGF0ZSgpLm1pbkxvZDsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfTE9EOgotICAgICAgICAgICAg
aWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgKnBh
cmFtcyA9IHRleHR1cmUtPmdldFNhbXBsZXJTdGF0ZSgpLm1heExvZDsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX01PREU6Ci0gICAgICAgICAg
ICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcigKLSAgICAgICAgICAgICAgICAgICAg
RXJyb3IoR0xfSU5WQUxJRF9FTlVNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiR0xfVEVY
VFVSRV9DT01QQVJFX01PREUgbm90IGF2YWlsYWJsZSBpbiBFUyB2ZXJzaW9ucyA8IDMuMCIpKTsK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAqcGFy
YW1zID0gc3RhdGljX2Nhc3Q8R0xmbG9hdD4odGV4dHVyZS0+Z2V0Q29tcGFyZU1vZGUoKSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ09NUEFSRV9GVU5D
OgotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoCi0gICAgICAg
ICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfRU5VTSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkdMX1RFWFRVUkVfQ09NUEFSRV9GVU5DIG5vdCBhdmFpbGFibGUgaW4gRVMgdmVyc2lv
bnMgPCAzLjAiKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgKnBhcmFtcyA9IHN0YXRpY19jYXN0PEdMZmxvYXQ+KHRleHR1cmUtPmdldENvbXBh
cmVGdW5jKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIFF1ZXJ5VGV4UGFyYW1ldGVyZnYo
dGV4dHVyZSwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCkBAIC0yNDM2LDE1MyArMTczNCwx
NCBAQAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghVmFsaWRUZXh0dXJlVGFyZ2V0KGNv
bnRleHQsIHRhcmdldCkpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAm
JgorICAgICAgICAgICAgIVZhbGlkYXRlR2V0VGV4UGFyYW1ldGVyaXYoY29udGV4dCwgdGFyZ2V0
LCBwbmFtZSwgcGFyYW1zKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCB0ZXh0dXJlIHRhcmdldCIpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIFRleHR1cmUgKnRleHR1
cmUgPSBjb250ZXh0LT5nZXRUYXJnZXRUZXh0dXJlKHRhcmdldCk7Ci0KLSAgICAgICAgaWYgKCF0
ZXh0dXJlKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIHN3aXRjaCAocG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRV
UkVfTUFHX0ZJTFRFUjoKLSAgICAgICAgICAgICpwYXJhbXMgPSB0ZXh0dXJlLT5nZXRTYW1wbGVy
U3RhdGUoKS5tYWdGaWx0ZXI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdM
X1RFWFRVUkVfTUlOX0ZJTFRFUjoKLSAgICAgICAgICAgICpwYXJhbXMgPSB0ZXh0dXJlLT5nZXRT
YW1wbGVyU3RhdGUoKS5taW5GaWx0ZXI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBj
YXNlIEdMX1RFWFRVUkVfV1JBUF9TOgotICAgICAgICAgICAgKnBhcmFtcyA9IHRleHR1cmUtPmdl
dFNhbXBsZXJTdGF0ZSgpLndyYXBTOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2Fz
ZSBHTF9URVhUVVJFX1dSQVBfVDoKLSAgICAgICAgICAgICpwYXJhbXMgPSB0ZXh0dXJlLT5nZXRT
YW1wbGVyU3RhdGUoKS53cmFwVDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9XUkFQX1I6Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVy
c2lvbigpIDwgMykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAqcGFyYW1zID0gdGV4dHVyZS0+Z2V0U2FtcGxl
clN0YXRlKCkud3JhcFI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1RF
WFRVUkVfSU1NVVRBQkxFX0ZPUk1BVDoKLSAgICAgICAgICAgIC8vIEV4cG9zZWQgdG8gRVMyLjAg
dGhyb3VnaCBFWFRfdGV4dHVyZV9zdG9yYWdlLCBubyBjbGllbnQgdmVyc2lvbiB2YWxpZGF0aW9u
LgotICAgICAgICAgICAgKnBhcmFtcyA9IHRleHR1cmUtPmdldEltbXV0YWJsZUZvcm1hdCgpID8g
R0xfVFJVRSA6IEdMX0ZBTFNFOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBH
TF9URVhUVVJFX0lNTVVUQUJMRV9MRVZFTFM6Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0
Q2xpZW50VmVyc2lvbigpIDwgMykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAqcGFyYW1zID0gc3RhdGljX2Nh
c3Q8R0xpbnQ+KHRleHR1cmUtPmdldEltbXV0YWJsZUxldmVscygpKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9VU0FHRV9BTkdMRToKLSAgICAgICAgICAg
ICpwYXJhbXMgPSB0ZXh0dXJlLT5nZXRVc2FnZSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVDoKLSAgICAgICAgICAgIGlm
ICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYykKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICAqcGFyYW1zID0gKEdMaW50KXRleHR1cmUtPmdldE1heEFuaXNvdHJvcHko
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9TV0laWkxF
X1I6Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICAqcGFyYW1zID0gdGV4dHVyZS0+Z2V0U3dpenpsZVJlZCgpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX1NXSVpaTEVfRzoKLSAgICAg
ICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURf
RU5VTSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICpwYXJhbXMgPSB0ZXh0dXJlLT5nZXRTd2l6emxlR3JlZW4oKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9TV0laWkxFX0I6Ci0gICAgICAgICAgICBp
ZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAqcGFy
YW1zID0gdGV4dHVyZS0+Z2V0U3dpenpsZUJsdWUoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgIGNhc2UgR0xfVEVYVFVSRV9TV0laWkxFX0E6Ci0gICAgICAgICAgICBpZiAoY29udGV4
dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAqcGFyYW1zID0gdGV4
dHVyZS0+Z2V0U3dpenpsZUFscGhhKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBj
YXNlIEdMX1RFWFRVUkVfQkFTRV9MRVZFTDoKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRD
bGllbnRWZXJzaW9uKCkgPCAzKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICpwYXJhbXMgPSB0ZXh0dXJlLT5n
ZXRCYXNlTGV2ZWwoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV9NQVhfTEVWRUw6Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lv
bigpIDwgMykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAqcGFyYW1zID0gdGV4dHVyZS0+Z2V0TWF4TGV2ZWwo
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NSU5fTE9E
OgotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgKnBhcmFtcyA9IGlyb3VuZDxHTGludD4odGV4dHVyZS0+Z2V0TWluTG9kKCkp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9MT0Q6
Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAqcGFyYW1zID0gaXJvdW5kPEdMaW50Pih0ZXh0dXJlLT5nZXRNYXhMb2QoKSk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ09NUEFSRV9N
T0RFOgotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoCi0gICAg
ICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfRU5VTSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkdMX1RFWFRVUkVfQ09NUEFSRV9NT0RFIG5vdCBhdmFpbGFibGUgaW4gRVMgdmVy
c2lvbnMgPCAzLjAiKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgKnBhcmFtcyA9IHRleHR1cmUtPmdldENvbXBhcmVNb2RlKCk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ09NUEFSRV9GVU5DOgotICAg
ICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoCi0gICAgICAgICAgICAg
ICAgICAgIEVycm9yKEdMX0lOVkFMSURfRU5VTSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IkdMX1RFWFRVUkVfQ09NUEFSRV9GVU5DIG5vdCBhdmFpbGFibGUgaW4gRVMgdmVyc2lvbnMgPCAz
LjAiKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgKnBhcmFtcyA9IHRleHR1cmUtPmdldENvbXBhcmVGdW5jKCk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
KyAgICAgICAgUXVlcnlUZXhQYXJhbWV0ZXJpdih0ZXh0dXJlLCBwbmFtZSwgcGFyYW1zKTsKICAg
ICB9CiB9CiAKQEAgLTI2NDUsNyArMTgwNCw3IEBACiAKICAgICAgICAgaWYgKCFwcm9ncmFtT2Jq
ZWN0LT5pc0xpbmtlZCgpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJl
dHVybiAtMTsKICAgICAgICAgfQogCkBAIC0yNjYyLDMwICsxODIxLDE2IEBACiAgICAgQ29udGV4
dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgaWYgKGluZGV4ID49IE1BWF9WRVJURVhfQVRUUklCUykKKyAgICAgICAg
aWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZUdldFZlcnRleEF0dHJp
YmZ2KGNvbnRleHQsIGluZGV4LCBwbmFtZSwgcGFyYW1zKSkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFWYWxpZGF0ZUdldFZlcnRl
eEF0dHJpYlBhcmFtZXRlcnMoY29udGV4dCwgcG5hbWUpKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAocG5hbWUgPT0gR0xfQ1VSUkVOVF9W
RVJURVhfQVRUUklCKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJD
dXJyZW50VmFsdWVEYXRhICZjdXJyZW50VmFsdWVEYXRhID0gY29udGV4dC0+Z2V0U3RhdGUoKS5n
ZXRWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWUoaW5kZXgpOwotICAgICAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCA0OyArK2kpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcGFyYW1z
W2ldID0gY3VycmVudFZhbHVlRGF0YS5GbG9hdFZhbHVlc1tpXTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IFZlcnRl
eEF0dHJpYnV0ZSAmYXR0cmliU3RhdGUgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFZlcnRleEFy
cmF5KCktPmdldFZlcnRleEF0dHJpYnV0ZShpbmRleCk7Ci0gICAgICAgICAgICAqcGFyYW1zID0g
UXVlcnlTaW5nbGVWZXJ0ZXhBdHRyaWJ1dGVQYXJhbWV0ZXI8R0xmbG9hdD4oYXR0cmliU3RhdGUs
IHBuYW1lKTsKLSAgICAgICAgfQorICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJDdXJyZW50VmFs
dWVEYXRhICZjdXJyZW50VmFsdWVzID0KKyAgICAgICAgICAgIGNvbnRleHQtPmdldEdMU3RhdGUo
KS5nZXRWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWUoaW5kZXgpOworICAgICAgICBjb25zdCBWZXJ0
ZXhBdHRyaWJ1dGUgJmF0dHJpYiA9CisgICAgICAgICAgICBjb250ZXh0LT5nZXRHTFN0YXRlKCku
Z2V0VmVydGV4QXJyYXkoKS0+Z2V0VmVydGV4QXR0cmlidXRlKGluZGV4KTsKKyAgICAgICAgUXVl
cnlWZXJ0ZXhBdHRyaWJmdihhdHRyaWIsIGN1cnJlbnRWYWx1ZXMsIHBuYW1lLCBwYXJhbXMpOwog
ICAgIH0KIH0KIApAQCAtMjY5NiwzMSArMTg0MSwxNiBAQAogICAgIENvbnRleHQgKmNvbnRleHQg
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIGlmIChpbmRleCA+PSBNQVhfVkVSVEVYX0FUVFJJQlMpCisgICAgICAgIGlmICghY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJpdihjb250ZXh0
LCBpbmRleCwgcG5hbWUsIHBhcmFtcykpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJQYXJh
bWV0ZXJzKGNvbnRleHQsIHBuYW1lKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHBuYW1lID09IEdMX0NVUlJFTlRfVkVSVEVYX0FUVFJJ
QikKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgVmVydGV4QXR0cmliQ3VycmVudFZhbHVl
RGF0YSAmY3VycmVudFZhbHVlRGF0YSA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0VmVydGV4QXR0
cmliQ3VycmVudFZhbHVlKGluZGV4KTsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
NDsgKytpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZsb2F0IGN1cnJlbnRWYWx1
ZSA9IGN1cnJlbnRWYWx1ZURhdGEuRmxvYXRWYWx1ZXNbaV07Ci0gICAgICAgICAgICAgICAgcGFy
YW1zW2ldID0gaXJvdW5kPEdMaW50PihjdXJyZW50VmFsdWUpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgVmVydGV4
QXR0cmlidXRlICZhdHRyaWJTdGF0ZSA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0VmVydGV4QXJy
YXkoKS0+Z2V0VmVydGV4QXR0cmlidXRlKGluZGV4KTsKLSAgICAgICAgICAgICpwYXJhbXMgPSBR
dWVyeVNpbmdsZVZlcnRleEF0dHJpYnV0ZVBhcmFtZXRlcjxHTGludD4oYXR0cmliU3RhdGUsIHBu
YW1lKTsKLSAgICAgICAgfQorICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVE
YXRhICZjdXJyZW50VmFsdWVzID0KKyAgICAgICAgICAgIGNvbnRleHQtPmdldEdMU3RhdGUoKS5n
ZXRWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWUoaW5kZXgpOworICAgICAgICBjb25zdCBWZXJ0ZXhB
dHRyaWJ1dGUgJmF0dHJpYiA9CisgICAgICAgICAgICBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0
VmVydGV4QXJyYXkoKS0+Z2V0VmVydGV4QXR0cmlidXRlKGluZGV4KTsKKyAgICAgICAgUXVlcnlW
ZXJ0ZXhBdHRyaWJpdihhdHRyaWIsIGN1cnJlbnRWYWx1ZXMsIHBuYW1lLCBwYXJhbXMpOwogICAg
IH0KIH0KIApAQCAtMjczMSwxOSArMTg2MSwxNSBAQAogICAgIENvbnRleHQgKmNvbnRleHQgPSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IGlmIChpbmRleCA+PSBNQVhfVkVSVEVYX0FUVFJJQlMpCisgICAgICAgIGlmICghY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRlR2V0VmVydGV4QXR0cmli
UG9pbnRlcnYoY29udGV4dCwgaW5kZXgsIHBuYW1lLCBwb2ludGVyKSkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHBuYW1lICE9IEdM
X1ZFUlRFWF9BVFRSSUJfQVJSQVlfUE9JTlRFUikKLSAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAqcG9pbnRlciA9IGNvbnN0X2Nhc3Q8R0x2b2lk
Kj4oY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRWZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4KSk7Cisg
ICAgICAgIGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliID0KKyAgICAgICAgICAgIGNvbnRl
eHQtPmdldEdMU3RhdGUoKS5nZXRWZXJ0ZXhBcnJheSgpLT5nZXRWZXJ0ZXhBdHRyaWJ1dGUoaW5k
ZXgpOworICAgICAgICBRdWVyeVZlcnRleEF0dHJpYlBvaW50ZXJ2KGF0dHJpYiwgcG5hbWUsIHBv
aW50ZXIpOwogICAgIH0KIH0KIApAQCAtMjc2Miw3ICsxODg4LDcgQEAKICAgICAgICAgICAgIGJy
ZWFrOwogCiAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCkBAIC0yNzY5LDE3ICsxODk1LDE1IEBACiAgICAgICAgIHN3aXRjaCAodGFyZ2V0
KQogICAgICAgICB7CiAgICAgICAgICAgY2FzZSBHTF9HRU5FUkFURV9NSVBNQVBfSElOVDoKLSAg
ICAgICAgICAgIGNvbnRleHQtPmdldFN0YXRlKCkuc2V0R2VuZXJhdGVNaXBtYXBIaW50KG1vZGUp
OwotICAgICAgICAgICAgYnJlYWs7Ci0KICAgICAgICAgICBjYXNlIEdMX0ZSQUdNRU5UX1NIQURF
Ul9ERVJJVkFUSVZFX0hJTlRfT0VTOgotICAgICAgICAgICAgY29udGV4dC0+Z2V0U3RhdGUoKS5z
ZXRGcmFnbWVudFNoYWRlckRlcml2YXRpdmVIaW50KG1vZGUpOwotICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQorCisgICAgICAgIGNvbnRleHQtPmhpbnQodGFyZ2V0
LCBtb2RlKTsKICAgICB9CiB9CiAKQEAgLTI4MDgsMTMgKzE5MzIsMTIgQEAKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBpZiAoIVZhbGlkQ2FwKGNvbnRleHQsIGNhcCkpCisgICAgICAgIGlmICgh
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVJc0VuYWJsZWQoY29udGV4dCwg
Y2FwKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgICAg
IH0KIAotICAgICAgICByZXR1cm4gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRFbmFibGVGZWF0dXJl
KGNhcCk7CisgICAgICAgIHJldHVybiBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0RW5hYmxlRmVh
dHVyZShjYXApOwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTI5MTksMTEgKzIwNDIs
MTEgQEAKICAgICB7CiAgICAgICAgIGlmICh3aWR0aCA8PSAwLjBmKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjb250ZXh0LT5nZXRT
dGF0ZSgpLnNldExpbmVXaWR0aCh3aWR0aCk7CisgICAgICAgIGNvbnRleHQtPmxpbmVXaWR0aCh3
aWR0aCk7CiAgICAgfQogfQogCkBAIC0yOTQ1LDEwICsyMDY4LDEwIEBACiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBFcnJvciBlcnJvciA9IHByb2dyYW1PYmplY3Qt
PmxpbmsoY29udGV4dC0+Z2V0RGF0YSgpKTsKKyAgICAgICAgRXJyb3IgZXJyb3IgPSBwcm9ncmFt
T2JqZWN0LT5saW5rKGNvbnRleHQtPmdldENvbnRleHRTdGF0ZSgpKTsKICAgICAgICAgaWYgKGVy
cm9yLmlzRXJyb3IoKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoZXJyb3IpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoZXJyb3IpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMjk2MSwxMyArMjA4NCwxMyBA
QAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9u
KCkgPCAzKQorICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAz
KQogICAgICAgICB7CiAgICAgICAgICAgICBzd2l0Y2ggKHBuYW1lKQogICAgICAgICAgICAgewog
ICAgICAgICAgICAgICBjYXNlIEdMX1VOUEFDS19JTUFHRV9IRUlHSFQ6CiAgICAgICAgICAgICAg
IGNhc2UgR0xfVU5QQUNLX1NLSVBfSU1BR0VTOgotICAgICAgICAgICAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgICBjYXNlIEdMX1VOUEFDS19ST1dfTEVOR1RI
OgpAQCAtMjk3NSw3ICsyMDk4LDcgQEAKICAgICAgICAgICAgICAgY2FzZSBHTF9VTlBBQ0tfU0tJ
UF9QSVhFTFM6CiAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS51bnBhY2tTdWJpbWFnZSkKICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VO
VU0pKTsKICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI5ODUsNyArMjEwOCw3IEBACiAgICAgICAg
ICAgICAgIGNhc2UgR0xfUEFDS19TS0lQX1BJWEVMUzoKICAgICAgICAgICAgICAgICAgIGlmICgh
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnBhY2tTdWJpbWFnZSkKICAgICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI5OTQs
ODIgKzIxMTcsNDYgQEAKIAogICAgICAgICBpZiAocGFyYW0gPCAwKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiQ2Fu
bm90IHVzZSBuZWdhdGl2ZSB2YWx1ZXMgaW4gUGl4ZWxTdG9yZWkiKSk7CisgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX1ZB
TFVFLCAiQ2Fubm90IHVzZSBuZWdhdGl2ZSB2YWx1ZXMgaW4gUGl4ZWxTdG9yZWkiKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBTdGF0ZSAmc3RhdGUgPSBjb250
ZXh0LT5nZXRTdGF0ZSgpOwotCiAgICAgICAgIHN3aXRjaCAocG5hbWUpCiAgICAgICAgIHsKICAg
ICAgICAgICBjYXNlIEdMX1VOUEFDS19BTElHTk1FTlQ6CiAgICAgICAgICAgICBpZiAocGFyYW0g
IT0gMSAmJiBwYXJhbSAhPSAyICYmIHBhcmFtICE9IDQgJiYgcGFyYW0gIT0gOCkKICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZB
TElEX1ZBTFVFKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgc3RhdGUuc2V0VW5wYWNrQWxpZ25tZW50KHBhcmFtKTsKICAgICAg
ICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgY2FzZSBHTF9QQUNLX0FMSUdOTUVOVDoKICAgICAg
ICAgICAgIGlmIChwYXJhbSAhPSAxICYmIHBhcmFtICE9IDIgJiYgcGFyYW0gIT0gNCAmJiBwYXJh
bSAhPSA4KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzdGF0ZS5zZXRQYWNrQWxpZ25tZW50
KHBhcmFtKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgY2FzZSBHTF9QQUNLX1JF
VkVSU0VfUk9XX09SREVSX0FOR0xFOgotICAgICAgICAgICAgc3RhdGUuc2V0UGFja1JldmVyc2VS
b3dPcmRlcihwYXJhbSAhPSAwKTsKLSAgICAgICAgICAgIGJyZWFrOwotCiAgICAgICAgICAgY2Fz
ZSBHTF9VTlBBQ0tfUk9XX0xFTkdUSDoKLSAgICAgICAgICAgICAgQVNTRVJUKChjb250ZXh0LT5n
ZXRDbGllbnRWZXJzaW9uKCkgPj0gMykgfHwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnVucGFj
a1N1YmltYWdlKTsKLSAgICAgICAgICAgIHN0YXRlLnNldFVucGFja1Jvd0xlbmd0aChwYXJhbSk7
Ci0gICAgICAgICAgICBicmVhazsKLQogICAgICAgICAgIGNhc2UgR0xfVU5QQUNLX0lNQUdFX0hF
SUdIVDoKLSAgICAgICAgICAgIEFTU0VSVChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPj0g
Myk7Ci0gICAgICAgICAgICBzdGF0ZS5zZXRVbnBhY2tJbWFnZUhlaWdodChwYXJhbSk7Ci0gICAg
ICAgICAgICBicmVhazsKLQogICAgICAgICAgIGNhc2UgR0xfVU5QQUNLX1NLSVBfSU1BR0VTOgot
ICAgICAgICAgICAgICBBU1NFUlQoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpID49IDMpOwot
ICAgICAgICAgICAgICBzdGF0ZS5zZXRVbnBhY2tTa2lwSW1hZ2VzKHBhcmFtKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotCiAgICAgICAgICAgY2FzZSBHTF9VTlBBQ0tfU0tJUF9ST1dTOgotICAgICAg
ICAgICAgICBBU1NFUlQoKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA+PSAzKSB8fCBjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkudW5wYWNrU3ViaW1hZ2UpOwotICAgICAgICAgICAgICBzdGF0
ZS5zZXRVbnBhY2tTa2lwUm93cyhwYXJhbSk7Ci0gICAgICAgICAgICBicmVhazsKLQogICAgICAg
ICAgIGNhc2UgR0xfVU5QQUNLX1NLSVBfUElYRUxTOgotICAgICAgICAgICAgICBBU1NFUlQoKGNv
bnRleHQtPmdldENsaWVudFZlcnNpb24oKSA+PSAzKSB8fCBjb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkudW5wYWNrU3ViaW1hZ2UpOwotICAgICAgICAgICAgICBzdGF0ZS5zZXRVbnBhY2tTa2lwUGl4
ZWxzKHBhcmFtKTsKLSAgICAgICAgICAgIGJyZWFrOwotCiAgICAgICAgICAgY2FzZSBHTF9QQUNL
X1JPV19MRU5HVEg6Ci0gICAgICAgICAgICAgIEFTU0VSVCgoY29udGV4dC0+Z2V0Q2xpZW50VmVy
c2lvbigpID49IDMpIHx8IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5wYWNrU3ViaW1hZ2UpOwot
ICAgICAgICAgICAgICBzdGF0ZS5zZXRQYWNrUm93TGVuZ3RoKHBhcmFtKTsKLSAgICAgICAgICAg
IGJyZWFrOwotCiAgICAgICAgICAgY2FzZSBHTF9QQUNLX1NLSVBfUk9XUzoKLSAgICAgICAgICAg
ICAgQVNTRVJUKChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPj0gMykgfHwgY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLnBhY2tTdWJpbWFnZSk7Ci0gICAgICAgICAgICAgIHN0YXRlLnNldFBh
Y2tTa2lwUm93cyhwYXJhbSk7Ci0gICAgICAgICAgICBicmVhazsKLQogICAgICAgICAgIGNhc2Ug
R0xfUEFDS19TS0lQX1BJWEVMUzoKLSAgICAgICAgICAgICAgQVNTRVJUKChjb250ZXh0LT5nZXRD
bGllbnRWZXJzaW9uKCkgPj0gMykgfHwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnBhY2tTdWJp
bWFnZSk7Ci0gICAgICAgICAgICAgIHN0YXRlLnNldFBhY2tTa2lwUGl4ZWxzKHBhcmFtKTsKICAg
ICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQorCisgICAgICAgIGNvbnRleHQtPnBpeGVsU3RvcmVpKHBuYW1l
LCBwYXJhbSk7CiAgICAgfQogfQogCkBAIC0zMDgwLDcgKzIxNjcsNyBAQAogICAgIENvbnRleHQg
KmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIGNvbnRleHQtPmdldFN0YXRlKCkuc2V0UG9seWdvbk9mZnNldFBhcmFtcyhm
YWN0b3IsIHVuaXRzKTsKKyAgICAgICAgY29udGV4dC0+cG9seWdvbk9mZnNldChmYWN0b3IsIHVu
aXRzKTsKICAgICB9CiB9CiAKQEAgLTMxMTYsNyArMjIwMyw3IEBACiAgICAgICAgIEVycm9yIGVy
cm9yID0gY29tcGlsZXItPnJlbGVhc2UoKTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkK
ICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZXJyb3IpOworICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQpAQCAtMzEzNiwxMSArMjIyMywxMSBAQAogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmVuZGVyYnVmZmVyICpyZW5kZXJidWZmZXIg
PSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldEN1cnJlbnRSZW5kZXJidWZmZXIoKTsKKyAgICAgICAg
UmVuZGVyYnVmZmVyICpyZW5kZXJidWZmZXIgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0Q3Vy
cmVudFJlbmRlcmJ1ZmZlcigpOwogICAgICAgICBFcnJvciBlcnJvciA9IHJlbmRlcmJ1ZmZlci0+
c2V0U3RvcmFnZShpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgIGlmIChl
cnJvci5pc0Vycm9yKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKGVycm9yKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKGVycm9yKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTMxNTQsNyArMjI0MSw3IEBA
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPmdldFN0YXRlKCku
c2V0U2FtcGxlQ292ZXJhZ2VQYXJhbXMoY2xhbXAwMSh2YWx1ZSksIGludmVydCA9PSBHTF9UUlVF
KTsKKyAgICAgICAgY29udGV4dC0+c2FtcGxlQ292ZXJhZ2UodmFsdWUsIGludmVydCk7CiAgICAg
fQogfQogCkBAIC0zMTY3LDExICsyMjU0LDExIEBACiAgICAgewogICAgICAgICBpZiAod2lkdGgg
PCAwIHx8IGhlaWdodCA8IDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCi0gICAgICAgIGNvbnRleHQtPmdldFN0YXRlKCkuc2V0U2Npc3NvclBhcmFt
cyh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgY29udGV4dC0+c2Npc3Nvcih4LCB5LCB3
aWR0aCwgaGVpZ2h0KTsKICAgICB9CiB9CiAKQEAgLTMxODcsNyArMjI3NCw3IEBACiAgICAgICAg
IGNvbnN0IHN0ZDo6dmVjdG9yPEdMZW51bT4gJnNoYWRlckJpbmFyeUZvcm1hdHMgPSBjb250ZXh0
LT5nZXRDYXBzKCkuc2hhZGVyQmluYXJ5Rm9ybWF0czsKICAgICAgICAgaWYgKHN0ZDo6ZmluZChz
aGFkZXJCaW5hcnlGb3JtYXRzLmJlZ2luKCksIHNoYWRlckJpbmFyeUZvcm1hdHMuZW5kKCksIGJp
bmFyeWZvcm1hdCkgPT0gc2hhZGVyQmluYXJ5Rm9ybWF0cy5lbmQoKSkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0zMjA2LDcgKzIyOTMsNyBAQAog
ICAgIHsKICAgICAgICAgaWYgKGNvdW50IDwgMCkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTMyMzksNyArMjMyNiw3IEBACiAgICAgICAgICAg
ICBicmVhazsKIAogICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtMzI1NiwxOSArMjM0MywxMSBAQAogICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgaWYgKGZhY2UgPT0gR0xfRlJPTlQgfHwgZmFjZSA9PSBHTF9GUk9OVF9B
TkRfQkFDSykKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0U3RhdGUoKS5zZXRT
dGVuY2lsUGFyYW1zKGZ1bmMsIHJlZiwgbWFzayk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
ZmFjZSA9PSBHTF9CQUNLIHx8IGZhY2UgPT0gR0xfRlJPTlRfQU5EX0JBQ0spCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmdldFN0YXRlKCkuc2V0U3RlbmNpbEJhY2tQYXJhbXMoZnVu
YywgcmVmLCBtYXNrKTsKLSAgICAgICAgfQorICAgICAgICBjb250ZXh0LT5zdGVuY2lsRnVuY1Nl
cGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzayk7CiAgICAgfQogfQogCkBAIC0zMjkyLDE5ICsy
MzcxLDExIEBACiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAg
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoZmFjZSA9PSBH
TF9GUk9OVCB8fCBmYWNlID09IEdMX0ZST05UX0FORF9CQUNLKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5nZXRTdGF0ZSgpLnNldFN0ZW5jaWxXcml0ZW1hc2sobWFzayk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAoZmFjZSA9PSBHTF9CQUNLIHx8IGZhY2UgPT0gR0xfRlJPTlRf
QU5EX0JBQ0spCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFN0YXRlKCkuc2V0
U3RlbmNpbEJhY2tXcml0ZW1hc2sobWFzayk7Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+
c3RlbmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNrKTsKICAgICB9CiB9CiAKQEAgLTMzMjksNyAr
MjQwMCw3IEBACiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAg
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMzM0Niw3ICsyNDE3LDcgQEAK
ICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0zMzYzLDcgKzI0MzQsNyBAQAogICAgICAgICAg
ICAgYnJlYWs7CiAKICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKQEAgLTMzODAsMTkgKzI0NTEsMTEgQEAKICAgICAgICAgICAgIGJyZWFr
OwogCiAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIGlmIChmYWNlID09IEdMX0ZST05UIHx8IGZhY2UgPT0gR0xfRlJPTlRf
QU5EX0JBQ0spCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFN0YXRlKCkuc2V0
U3RlbmNpbE9wZXJhdGlvbnMoZmFpbCwgemZhaWwsIHpwYXNzKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGlmIChmYWNlID09IEdMX0JBQ0sgfHwgZmFjZSA9PSBHTF9GUk9OVF9BTkRfQkFDSykKLSAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0U3RhdGUoKS5zZXRTdGVuY2lsQmFja09w
ZXJhdGlvbnMoZmFpbCwgemZhaWwsIHpwYXNzKTsKLSAgICAgICAgfQorICAgICAgICBjb250ZXh0
LT5zdGVuY2lsT3BTZXBhcmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpOwogICAgIH0KIH0K
IApAQCAtMzQyNSw1NiArMjQ4OCwzNCBAQAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICgh
VmFsaWRUZXh0dXJlVGFyZ2V0KGNvbnRleHQsIHRhcmdldCkpCisgICAgICAgIGlmICghY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVUZXhQYXJhbWV0ZXJmKGNvbnRleHQsIHRh
cmdldCwgcG5hbWUsIHBhcmFtKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCB0ZXh0dXJlIHRhcmdldCIp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghVmFsaWRh
dGVUZXhQYXJhbVBhcmFtZXRlcnMoY29udGV4dCwgcG5hbWUsIHN0YXRpY19jYXN0PEdMaW50Pihw
YXJhbSkpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQogICAg
ICAgICBUZXh0dXJlICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGFyZ2V0VGV4dHVyZSh0YXJnZXQp
OworICAgICAgICBTZXRUZXhQYXJhbWV0ZXJmKHRleHR1cmUsIHBuYW1lLCBwYXJhbSk7CisgICAg
fQorfQogCi0gICAgICAgIGlmICghdGV4dHVyZSkKK3ZvaWQgR0xfQVBJRU5UUlkgVGV4UGFyYW1l
dGVyZnYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMp
Cit7CisgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xlbnVtIHBuYW1lID0gMHgl
WCwgY29uc3QgR0xmbG9hdCogcGFyYW1zID0gMHglMC44cCkiLCB0YXJnZXQsCisgICAgICAgICAg
cG5hbWUsIHBhcmFtcyk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlVGV4UGFyYW1ldGVyZnYoY29udGV4dCwgdGFy
Z2V0LCBwbmFtZSwgcGFyYW1zKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCi0gICAgICAgIHN3aXRjaCAo
cG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9TOiAgICAg
ICAgICAgICAgIHRleHR1cmUtPnNldFdyYXBTKHVpcm91bmQ8R0xlbnVtPihwYXJhbSkpOyAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX1dSQVBfVDogICAgICAgICAgICAg
ICB0ZXh0dXJlLT5zZXRXcmFwVCh1aXJvdW5kPEdMZW51bT4ocGFyYW0pKTsgICAgICAgIGJyZWFr
OwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1I6ICAgICAgICAgICAgICAgdGV4dHVy
ZS0+c2V0V3JhcFIodWlyb3VuZDxHTGVudW0+KHBhcmFtKSk7ICAgICAgICBicmVhazsKLSAgICAg
ICAgICBjYXNlIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUjogICAgICAgICAgIHRleHR1cmUtPnNldE1p
bkZpbHRlcih1aXJvdW5kPEdMZW51bT4ocGFyYW0pKTsgICAgYnJlYWs7Ci0gICAgICAgICAgY2Fz
ZSBHTF9URVhUVVJFX01BR19GSUxURVI6ICAgICAgICAgICB0ZXh0dXJlLT5zZXRNYWdGaWx0ZXIo
dWlyb3VuZDxHTGVudW0+KHBhcmFtKSk7ICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV9VU0FHRV9BTkdMRTogICAgICAgICAgdGV4dHVyZS0+c2V0VXNhZ2UodWlyb3VuZDxHTGVu
dW0+KHBhcmFtKSk7ICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUFY
X0FOSVNPVFJPUFlfRVhUOiAgIHRleHR1cmUtPnNldE1heEFuaXNvdHJvcHkoc3RkOjptaW4ocGFy
YW0sIGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5tYXhUZXh0dXJlQW5pc290cm9weSkpOyBicmVh
azsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ09NUEFSRV9NT0RFOiAgICAgICAgIHRleHR1
cmUtPnNldENvbXBhcmVNb2RlKHVpcm91bmQ8R0xlbnVtPihwYXJhbSkpOyAgYnJlYWs7Ci0gICAg
ICAgICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQzogICAgICAgICB0ZXh0dXJlLT5zZXRD
b21wYXJlRnVuYyh1aXJvdW5kPEdMZW51bT4ocGFyYW0pKTsgIGJyZWFrOwotICAgICAgICAgIGNh
c2UgR0xfVEVYVFVSRV9TV0laWkxFX1I6ICAgICAgICAgICAgdGV4dHVyZS0+c2V0U3dpenpsZVJl
ZCh1aXJvdW5kPEdMZW51bT4ocGFyYW0pKTsgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1RF
WFRVUkVfU1dJWlpMRV9HOiAgICAgICAgICAgIHRleHR1cmUtPnNldFN3aXp6bGVHcmVlbih1aXJv
dW5kPEdMZW51bT4ocGFyYW0pKTsgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX1NX
SVpaTEVfQjogICAgICAgICAgICB0ZXh0dXJlLT5zZXRTd2l6emxlQmx1ZSh1aXJvdW5kPEdMZW51
bT4ocGFyYW0pKTsgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9TV0laWkxFX0E6
ICAgICAgICAgICAgdGV4dHVyZS0+c2V0U3dpenpsZUFscGhhKHVpcm91bmQ8R0xlbnVtPihwYXJh
bSkpOyBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQkFTRV9MRVZFTDogICAgICAg
ICAgIHRleHR1cmUtPnNldEJhc2VMZXZlbCh1aXJvdW5kPEdMdWludD4ocGFyYW0pKTsgICAgYnJl
YWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9MRVZFTDogICAgICAgICAgICB0ZXh0
dXJlLT5zZXRNYXhMZXZlbCh1aXJvdW5kPEdMdWludD4ocGFyYW0pKTsgICAgIGJyZWFrOwotICAg
ICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NSU5fTE9EOiAgICAgICAgICAgICAgdGV4dHVyZS0+c2V0
TWluTG9kKHBhcmFtKTsgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBj
YXNlIEdMX1RFWFRVUkVfTUFYX0xPRDogICAgICAgICAgICAgIHRleHR1cmUtPnNldE1heExvZChw
YXJhbSk7ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDog
VU5SRUFDSEFCTEUoKTsgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gY2xhbmctZm9ybWF0
IG9uCisgICAgICAgIFRleHR1cmUgKnRleHR1cmUgPSBjb250ZXh0LT5nZXRUYXJnZXRUZXh0dXJl
KHRhcmdldCk7CisgICAgICAgIFNldFRleFBhcmFtZXRlcmZ2KHRleHR1cmUsIHBuYW1lLCBwYXJh
bXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJmdihHTGVudW0g
dGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQqIHBhcmFtcykKLXsKLSAgICBUZXhQ
YXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUsIChHTGZsb2F0KSpwYXJhbXMpOwotfQotCiB2b2lkIEdM
X0FQSUVOVFJZIFRleFBhcmFtZXRlcmkoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGlu
dCBwYXJhbSkKIHsKICAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGVudW0gcG5h
bWUgPSAweCVYLCBHTGludCBwYXJhbSA9ICVkKSIsIHRhcmdldCwgcG5hbWUsIHBhcmFtKTsKQEAg
LTM0ODIsNTYgKzI1MjMsMzQgQEAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIVZhbGlk
VGV4dHVyZVRhcmdldChjb250ZXh0LCB0YXJnZXQpKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlVGV4UGFyYW1ldGVyaShjb250ZXh0LCB0YXJnZXQs
IHBuYW1lLCBwYXJhbSkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgVGV4dHVyZSB0YXJnZXQiKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIVZhbGlkYXRlVGV4
UGFyYW1QYXJhbWV0ZXJzKGNvbnRleHQsIHBuYW1lLCBwYXJhbSkpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCiAgICAgICAgIFRleHR1cmUgKnRleHR1cmUgPSBj
b250ZXh0LT5nZXRUYXJnZXRUZXh0dXJlKHRhcmdldCk7CisgICAgICAgIFNldFRleFBhcmFtZXRl
cmkodGV4dHVyZSwgcG5hbWUsIHBhcmFtKTsKKyAgICB9Cit9CiAKLSAgICAgICAgaWYgKCF0ZXh0
dXJlKQordm9pZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJpdihHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpCit7CisgICAgRVZFTlQoIihHTGVudW0gdGFy
Z2V0ID0gMHglWCwgR0xlbnVtIHBuYW1lID0gMHglWCwgY29uc3QgR0xpbnQqIHBhcmFtcyA9IDB4
JTAuOHApIiwgdGFyZ2V0LAorICAgICAgICAgIHBuYW1lLCBwYXJhbXMpOworCisgICAgQ29udGV4
dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQor
ICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0
ZVRleFBhcmFtZXRlcml2KGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIHBhcmFtcykpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gY2xhbmct
Zm9ybWF0IG9mZgotICAgICAgICBzd2l0Y2ggKHBuYW1lKQotICAgICAgICB7Ci0gICAgICAgICAg
Y2FzZSBHTF9URVhUVVJFX1dSQVBfUzogICAgICAgICAgICAgICB0ZXh0dXJlLT5zZXRXcmFwUyhz
dGF0aWNfY2FzdDxHTGVudW0+KHBhcmFtKSk7ICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNl
IEdMX1RFWFRVUkVfV1JBUF9UOiAgICAgICAgICAgICAgIHRleHR1cmUtPnNldFdyYXBUKHN0YXRp
Y19jYXN0PEdMZW51bT4ocGFyYW0pKTsgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV9XUkFQX1I6ICAgICAgICAgICAgICAgdGV4dHVyZS0+c2V0V3JhcFIoc3RhdGljX2Nh
c3Q8R0xlbnVtPihwYXJhbSkpOyAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhU
VVJFX01JTl9GSUxURVI6ICAgICAgICAgICB0ZXh0dXJlLT5zZXRNaW5GaWx0ZXIoc3RhdGljX2Nh
c3Q8R0xlbnVtPihwYXJhbSkpOyAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVf
TUFHX0ZJTFRFUjogICAgICAgICAgIHRleHR1cmUtPnNldE1hZ0ZpbHRlcihzdGF0aWNfY2FzdDxH
TGVudW0+KHBhcmFtKSk7ICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9VU0FH
RV9BTkdMRTogICAgICAgICAgdGV4dHVyZS0+c2V0VXNhZ2Uoc3RhdGljX2Nhc3Q8R0xlbnVtPihw
YXJhbSkpOyAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9BTklT
T1RST1BZX0VYVDogICB0ZXh0dXJlLT5zZXRNYXhBbmlzb3Ryb3B5KHN0ZDo6bWluKHN0YXRpY19j
YXN0PEdMZmxvYXQ+KHBhcmFtKSwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLm1heFRleHR1cmVB
bmlzb3Ryb3B5KSk7IGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX01P
REU6ICAgICAgICAgdGV4dHVyZS0+c2V0Q29tcGFyZU1vZGUoc3RhdGljX2Nhc3Q8R0xlbnVtPihw
YXJhbSkpOyAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQzog
ICAgICAgICB0ZXh0dXJlLT5zZXRDb21wYXJlRnVuYyhzdGF0aWNfY2FzdDxHTGVudW0+KHBhcmFt
KSk7ICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfU1dJWlpMRV9SOiAgICAgICAg
ICAgIHRleHR1cmUtPnNldFN3aXp6bGVSZWQoc3RhdGljX2Nhc3Q8R0xlbnVtPihwYXJhbSkpOyAg
IGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9TV0laWkxFX0c6ICAgICAgICAgICAg
dGV4dHVyZS0+c2V0U3dpenpsZUdyZWVuKHN0YXRpY19jYXN0PEdMZW51bT4ocGFyYW0pKTsgYnJl
YWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX1NXSVpaTEVfQjogICAgICAgICAgICB0ZXh0
dXJlLT5zZXRTd2l6emxlQmx1ZShzdGF0aWNfY2FzdDxHTGVudW0+KHBhcmFtKSk7ICBicmVhazsK
LSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfU1dJWlpMRV9BOiAgICAgICAgICAgIHRleHR1cmUt
PnNldFN3aXp6bGVBbHBoYShzdGF0aWNfY2FzdDxHTGVudW0+KHBhcmFtKSk7IGJyZWFrOwotICAg
ICAgICAgIGNhc2UgR0xfVEVYVFVSRV9CQVNFX0xFVkVMOiAgICAgICAgICAgdGV4dHVyZS0+c2V0
QmFzZUxldmVsKHN0YXRpY19jYXN0PEdMdWludD4ocGFyYW0pKTsgICAgYnJlYWs7Ci0gICAgICAg
ICAgY2FzZSBHTF9URVhUVVJFX01BWF9MRVZFTDogICAgICAgICAgICB0ZXh0dXJlLT5zZXRNYXhM
ZXZlbChzdGF0aWNfY2FzdDxHTHVpbnQ+KHBhcmFtKSk7ICAgICBicmVhazsKLSAgICAgICAgICBj
YXNlIEdMX1RFWFRVUkVfTUlOX0xPRDogICAgICAgICAgICAgIHRleHR1cmUtPnNldE1pbkxvZChz
dGF0aWNfY2FzdDxHTGZsb2F0PihwYXJhbSkpOyAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9NQVhfTE9EOiAgICAgICAgICAgICAgdGV4dHVyZS0+c2V0TWF4TG9kKHN0YXRp
Y19jYXN0PEdMZmxvYXQ+KHBhcmFtKSk7ICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDog
VU5SRUFDSEFCTEUoKTsgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gY2xhbmctZm9ybWF0
IG9uCisgICAgICAgIFRleHR1cmUgKnRleHR1cmUgPSBjb250ZXh0LT5nZXRUYXJnZXRUZXh0dXJl
KHRhcmdldCk7CisgICAgICAgIFNldFRleFBhcmFtZXRlcml2KHRleHR1cmUsIHBuYW1lLCBwYXJh
bXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJpdihHTGVudW0g
dGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50KiBwYXJhbXMpCi17Ci0gICAgVGV4UGFy
YW1ldGVyaSh0YXJnZXQsIHBuYW1lLCAqcGFyYW1zKTsKLX0KLQogdm9pZCBHTF9BUElFTlRSWSBU
ZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBH
TGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2
b2lkKiBwaXhlbHMpCiB7CkBAIC0zNTcyLDcgKzI1OTEsNyBAQAogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IGNvbnRleHQtPmdldFN0
YXRlKCkuZ2V0UHJvZ3JhbSgpOworICAgICAgICBQcm9ncmFtICpwcm9ncmFtID0gY29udGV4dC0+
Z2V0R0xTdGF0ZSgpLmdldFByb2dyYW0oKTsKICAgICAgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybTFm
dihsb2NhdGlvbiwgY291bnQsIHYpOwogICAgIH0KIH0KQEAgLTM1OTQsNyArMjYxMyw3IEBACiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBQcm9ncmFtICpwcm9ncmFt
ID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRQcm9ncmFtKCk7CisgICAgICAgIFByb2dyYW0gKnBy
b2dyYW0gPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0UHJvZ3JhbSgpOwogICAgICAgICBwcm9n
cmFtLT5zZXRVbmlmb3JtMWl2KGxvY2F0aW9uLCBjb3VudCwgdik7CiAgICAgfQogfQpAQCAtMzYx
OCw3ICsyNjM3LDcgQEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IFByb2dyYW0gKnByb2dyYW0gPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFByb2dyYW0oKTsKKyAg
ICAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRQcm9ncmFt
KCk7CiAgICAgICAgIHByb2dyYW0tPnNldFVuaWZvcm0yZnYobG9jYXRpb24sIGNvdW50LCB2KTsK
ICAgICB9CiB9CkBAIC0zNjQyLDcgKzI2NjEsNyBAQAogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IGNvbnRleHQtPmdldFN0YXRlKCku
Z2V0UHJvZ3JhbSgpOworICAgICAgICBQcm9ncmFtICpwcm9ncmFtID0gY29udGV4dC0+Z2V0R0xT
dGF0ZSgpLmdldFByb2dyYW0oKTsKICAgICAgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybTJpdihsb2Nh
dGlvbiwgY291bnQsIHYpOwogICAgIH0KIH0KQEAgLTM2NjYsNyArMjY4NSw3IEBACiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBQcm9ncmFtICpwcm9ncmFtID0gY29u
dGV4dC0+Z2V0U3RhdGUoKS5nZXRQcm9ncmFtKCk7CisgICAgICAgIFByb2dyYW0gKnByb2dyYW0g
PSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0UHJvZ3JhbSgpOwogICAgICAgICBwcm9ncmFtLT5z
ZXRVbmlmb3JtM2Z2KGxvY2F0aW9uLCBjb3VudCwgdik7CiAgICAgfQogfQpAQCAtMzY5MCw3ICsy
NzA5LDcgQEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFByb2dy
YW0gKnByb2dyYW0gPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFByb2dyYW0oKTsKKyAgICAgICAg
UHJvZ3JhbSAqcHJvZ3JhbSA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRQcm9ncmFtKCk7CiAg
ICAgICAgIHByb2dyYW0tPnNldFVuaWZvcm0zaXYobG9jYXRpb24sIGNvdW50LCB2KTsKICAgICB9
CiB9CkBAIC0zNzE0LDcgKzI3MzMsNyBAQAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0UHJv
Z3JhbSgpOworICAgICAgICBQcm9ncmFtICpwcm9ncmFtID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgp
LmdldFByb2dyYW0oKTsKICAgICAgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybTRmdihsb2NhdGlvbiwg
Y291bnQsIHYpOwogICAgIH0KIH0KQEAgLTM3MzgsNyArMjc1Nyw3IEBACiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBQcm9ncmFtICpwcm9ncmFtID0gY29udGV4dC0+
Z2V0U3RhdGUoKS5nZXRQcm9ncmFtKCk7CisgICAgICAgIFByb2dyYW0gKnByb2dyYW0gPSBjb250
ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0UHJvZ3JhbSgpOwogICAgICAgICBwcm9ncmFtLT5zZXRVbmlm
b3JtNGl2KGxvY2F0aW9uLCBjb3VudCwgdik7CiAgICAgfQogfQpAQCAtMzc1Niw3ICsyNzc1LDcg
QEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFByb2dyYW0gKnBy
b2dyYW0gPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFByb2dyYW0oKTsKKyAgICAgICAgUHJvZ3Jh
bSAqcHJvZ3JhbSA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRQcm9ncmFtKCk7CiAgICAgICAg
IHByb2dyYW0tPnNldFVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2Us
IHZhbHVlKTsKICAgICB9CiB9CkBAIC0zNzc0LDcgKzI3OTMsNyBAQAogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IGNvbnRleHQtPmdl
dFN0YXRlKCkuZ2V0UHJvZ3JhbSgpOworICAgICAgICBQcm9ncmFtICpwcm9ncmFtID0gY29udGV4
dC0+Z2V0R0xTdGF0ZSgpLmdldFByb2dyYW0oKTsKICAgICAgICAgcHJvZ3JhbS0+c2V0VW5pZm9y
bU1hdHJpeDNmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgIH0KIH0K
QEAgLTM3OTIsNyArMjgxMSw3IEBACiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBQcm9ncmFtICpwcm9ncmFtID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRQcm9ncmFt
KCk7CisgICAgICAgIFByb2dyYW0gKnByb2dyYW0gPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0
UHJvZ3JhbSgpOwogICAgICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9u
LCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgfQogfQpAQCAtMzg0MCwxMiArMjg1OSwx
MSBAQAogICAgIHsKICAgICAgICAgaWYgKGluZGV4ID49IE1BWF9WRVJURVhfQVRUUklCUykKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
R0xmbG9hdCB2YWxzWzRdID0geyB4LCAwLCAwLCAxIH07Ci0gICAgICAgIGNvbnRleHQtPmdldFN0
YXRlKCkuc2V0VmVydGV4QXR0cmliZihpbmRleCwgdmFscyk7CisgICAgICAgIGNvbnRleHQtPnZl
cnRleEF0dHJpYjFmKGluZGV4LCB4KTsKICAgICB9CiB9CiAKQEAgLTM4NTgsMTIgKzI4NzYsMTEg
QEAKICAgICB7CiAgICAgICAgIGlmIChpbmRleCA+PSBNQVhfVkVSVEVYX0FUVFJJQlMpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURf
VkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIEdM
ZmxvYXQgdmFsc1s0XSA9IHsgdmFsdWVzWzBdLCAwLCAwLCAxIH07Ci0gICAgICAgIGNvbnRleHQt
PmdldFN0YXRlKCkuc2V0VmVydGV4QXR0cmliZihpbmRleCwgdmFscyk7CisgICAgICAgIGNvbnRl
eHQtPnZlcnRleEF0dHJpYjFmdihpbmRleCwgdmFsdWVzKTsKICAgICB9CiB9CiAKQEAgLTM4NzYs
MTIgKzI4OTMsMTEgQEAKICAgICB7CiAgICAgICAgIGlmIChpbmRleCA+PSBNQVhfVkVSVEVYX0FU
VFJJQlMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIEdMZmxvYXQgdmFsc1s0XSA9IHsgeCwgeSwgMCwgMSB9OwotICAgICAgICBjb250
ZXh0LT5nZXRTdGF0ZSgpLnNldFZlcnRleEF0dHJpYmYoaW5kZXgsIHZhbHMpOworICAgICAgICBj
b250ZXh0LT52ZXJ0ZXhBdHRyaWIyZihpbmRleCwgeCwgeSk7CiAgICAgfQogfQogCkBAIC0zODk0
LDEyICsyOTEwLDExIEBACiAgICAgewogICAgICAgICBpZiAoaW5kZXggPj0gTUFYX1ZFUlRFWF9B
VFRSSUJTKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBHTGZsb2F0IHZhbHNbNF0gPSB7IHZhbHVlc1swXSwgdmFsdWVzWzFdLCAwLCAx
IH07Ci0gICAgICAgIGNvbnRleHQtPmdldFN0YXRlKCkuc2V0VmVydGV4QXR0cmliZihpbmRleCwg
dmFscyk7CisgICAgICAgIGNvbnRleHQtPnZlcnRleEF0dHJpYjJmdihpbmRleCwgdmFsdWVzKTsK
ICAgICB9CiB9CiAKQEAgLTM5MTIsMTIgKzI5MjcsMTEgQEAKICAgICB7CiAgICAgICAgIGlmIChp
bmRleCA+PSBNQVhfVkVSVEVYX0FUVFJJQlMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIEdMZmxvYXQgdmFsc1s0XSA9IHsgeCwgeSwg
eiwgMSB9OwotICAgICAgICBjb250ZXh0LT5nZXRTdGF0ZSgpLnNldFZlcnRleEF0dHJpYmYoaW5k
ZXgsIHZhbHMpOworICAgICAgICBjb250ZXh0LT52ZXJ0ZXhBdHRyaWIzZihpbmRleCwgeCwgeSwg
eik7CiAgICAgfQogfQogCkBAIC0zOTMwLDEyICsyOTQ0LDExIEBACiAgICAgewogICAgICAgICBp
ZiAoaW5kZXggPj0gTUFYX1ZFUlRFWF9BVFRSSUJTKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBHTGZsb2F0IHZhbHNbNF0gPSB7IHZh
bHVlc1swXSwgdmFsdWVzWzFdLCB2YWx1ZXNbMl0sIDEgfTsKLSAgICAgICAgY29udGV4dC0+Z2V0
U3RhdGUoKS5zZXRWZXJ0ZXhBdHRyaWJmKGluZGV4LCB2YWxzKTsKKyAgICAgICAgY29udGV4dC0+
dmVydGV4QXR0cmliM2Z2KGluZGV4LCB2YWx1ZXMpOwogICAgIH0KIH0KIApAQCAtMzk0OCwxMiAr
Mjk2MSwxMSBAQAogICAgIHsKICAgICAgICAgaWYgKGluZGV4ID49IE1BWF9WRVJURVhfQVRUUklC
UykKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgR0xmbG9hdCB2YWxzWzRdID0geyB4LCB5LCB6LCB3IH07Ci0gICAgICAgIGNvbnRleHQt
PmdldFN0YXRlKCkuc2V0VmVydGV4QXR0cmliZihpbmRleCwgdmFscyk7CisgICAgICAgIGNvbnRl
eHQtPnZlcnRleEF0dHJpYjRmKGluZGV4LCB4LCB5LCB6LCB3KTsKICAgICB9CiB9CiAKQEAgLTM5
NjYsMTEgKzI5NzgsMTEgQEAKICAgICB7CiAgICAgICAgIGlmIChpbmRleCA+PSBNQVhfVkVSVEVY
X0FUVFJJQlMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIGNvbnRleHQtPmdldFN0YXRlKCkuc2V0VmVydGV4QXR0cmliZihpbmRleCwg
dmFsdWVzKTsKKyAgICAgICAgY29udGV4dC0+dmVydGV4QXR0cmliNGZ2KGluZGV4LCB2YWx1ZXMp
OwogICAgIH0KIH0KIApAQCAtMzk4NSw1MiArMjk5Nyw1MiBAQAogICAgIHsKICAgICAgICAgaWYg
KGluZGV4ID49IE1BWF9WRVJURVhfQVRUUklCUykKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHNpemUgPCAxIHx8IHNpemUgPiA0
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAg
ICAgICBzd2l0Y2ggKHR5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX0JZVEU6Ci0g
ICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgotICAgICAgICAgIGNhc2UgR0xfU0hPUlQ6
Ci0gICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKLSAgICAgICAgICBjYXNlIEdMX0ZJ
WEVEOgotICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6Ci0gICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgR0xfQllURToKKyAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToK
KyAgICAgICAgICAgIGNhc2UgR0xfU0hPUlQ6CisgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVE
X1NIT1JUOgorICAgICAgICAgICAgY2FzZSBHTF9GSVhFRDoKKyAgICAgICAgICAgIGNhc2UgR0xf
RkxPQVQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBjYXNlIEdMX0hBTEZf
RkxPQVQ6Ci0gICAgICAgICAgY2FzZSBHTF9JTlQ6Ci0gICAgICAgICAgY2FzZSBHTF9VTlNJR05F
RF9JTlQ6Ci0gICAgICAgICAgY2FzZSBHTF9JTlRfMl8xMF8xMF8xMF9SRVY6Ci0gICAgICAgICAg
Y2FzZSBHTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVY6Ci0gICAgICAgICAgICBpZiAoY29u
dGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAg
ICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVDoKKyAgICAgICAgICAgIGNhc2UgR0xfSU5UOgorICAg
ICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6CisgICAgICAgICAgICBjYXNlIEdMX0lOVF8y
XzEwXzEwXzEwX1JFVjoKKyAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UXzJfMTBfMTBf
MTBfUkVWOgorICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNp
b24oKSA8IDMpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChzdHJpZGUgPCAwKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZB
TElEX1ZBTFVFKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoKHR5cGUgPT0gR0xfSU5UXzJfMTBfMTBfMTBfUkVWIHx8IHR5cGUgPT0gR0xfVU5TSUdO
RURfSU5UXzJfMTBfMTBfMTBfUkVWKSAmJiBzaXplICE9IDQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTQwMzgsMTQgKzMwNTAs
MTQgQEAKICAgICAgICAgLy8gQW4gSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IgaXMgZ2VuZXJhdGVk
IHdoZW4gYSBub24temVybyB2ZXJ0ZXggYXJyYXkgb2JqZWN0CiAgICAgICAgIC8vIGlzIGJvdW5k
LCB6ZXJvIGlzIGJvdW5kIHRvIHRoZSBBUlJBWV9CVUZGRVIgYnVmZmVyIG9iamVjdCBiaW5kaW5n
IHBvaW50LAogICAgICAgICAvLyBhbmQgdGhlIHBvaW50ZXIgYXJndW1lbnQgaXMgbm90IE5VTEwu
Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFZlcnRleEFycmF5KCktPmlkKCkg
IT0gMCAmJiBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldEFycmF5QnVmZmVySWQoKSA9PSAwICYmIHB0
ciAhPSBOVUxMKQorICAgICAgICBpZiAoY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFZlcnRleEFy
cmF5KCktPmlkKCkgIT0gMCAmJgorICAgICAgICAgICAgY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdl
dEFycmF5QnVmZmVySWQoKSA9PSAwICYmIHB0ciAhPSBOVUxMKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwor
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGNvbnRleHQt
PmdldFN0YXRlKCkuc2V0VmVydGV4QXR0cmliU3RhdGUoaW5kZXgsIGNvbnRleHQtPmdldFN0YXRl
KCkuZ2V0VGFyZ2V0QnVmZmVyKEdMX0FSUkFZX0JVRkZFUiksIHNpemUsIHR5cGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZCA9PSBH
TF9UUlVFLCBmYWxzZSwgc3RyaWRlLCBwdHIpOworICAgICAgICBjb250ZXh0LT52ZXJ0ZXhBdHRy
aWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBub3JtYWxpemVkLCBzdHJpZGUsIHB0cik7CiAg
ICAgfQogfQogCkBAIC00MDU4LDEyICszMDcwLDEyIEBACiAgICAgewogICAgICAgICBpZiAod2lk
dGggPCAwIHx8IGhlaWdodCA8IDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIGNvbnRleHQtPmdldFN0YXRlKCkuc2V0Vmlld3BvcnRQ
YXJhbXMoeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIGNvbnRleHQtPnZpZXdwb3J0KHgs
IHksIHdpZHRoLCBoZWlnaHQpOwogICAgIH0KIH0KIAotfQorfSAgLy8gbmFtZXNwYWNlIGdsCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19n
bGVzXzJfMF9leHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfMl8wX2V4dC5jcHAJKHJldmlzaW9uIDIwODAy
MSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRz
X2dsZXNfMl8wX2V4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2LDEwICsxNiwxNCBAQAogI2lu
Y2x1ZGUgImxpYkFOR0xFL0ZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvU2hhZGVy
LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvUXVlcnkuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9xdWVy
eWNvbnZlcnNpb25zLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcXVlcnl1dGlscy5oIgorI2luY2x1
ZGUgImxpYkFOR0xFL1ZlcnRleEFycmF5LmgiCiAKICNpbmNsdWRlICJsaWJBTkdMRS92YWxpZGF0
aW9uRVMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS92YWxpZGF0aW9uRVMyLmgiCiAjaW5jbHVkZSAi
bGliQU5HTEUvdmFsaWRhdGlvbkVTMy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3ZhbGlkYXRpb25F
UzMxLmgiCiAKICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKICNpbmNsdWRlICJjb21tb24vdXRp
bGl0aWVzLmgiCkBAIC0yNyw2ICszMSwxOSBAQAogbmFtZXNwYWNlIGdsCiB7CiAKK25hbWVzcGFj
ZQoreworCit2b2lkIFNldFJvYnVzdExlbmd0aFBhcmFtKEdMc2l6ZWkgKmxlbmd0aCwgR0xzaXpl
aSB2YWx1ZSkKK3sKKyAgICBpZiAobGVuZ3RoKQorICAgIHsKKyAgICAgICAgKmxlbmd0aCA9IHZh
bHVlOworICAgIH0KK30KKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCiB2b2lkIEdMX0FQ
SUVOVFJZIEdlblF1ZXJpZXNFWFQoR0xzaXplaSBuLCBHTHVpbnQgKmlkcykKIHsKICAgICBFVkVO
VCgiKEdMc2l6ZWkgbiA9ICVkLCBHTHVpbnQqIGlkcyA9IDB4JTAuOHApIiwgbiwgaWRzKTsKQEAg
LTkzLDcgKzExMCw3IEBACiAgICAgICAgIEVycm9yIGVycm9yID0gY29udGV4dC0+YmVnaW5RdWVy
eSh0YXJnZXQsIGlkKTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgfQpAQCAtMTE0LDcgKzEzMSw3IEBACiAgICAgICAgIEVycm9yIGVycm9yID0gY29udGV4
dC0+ZW5kUXVlcnkodGFyZ2V0KTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZXJyb3IpOworICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgfQpAQCAtMTM1LDcgKzE1Miw3IEBACiAgICAgICAgIEVycm9yIGVycm9yID0g
Y29udGV4dC0+cXVlcnlDb3VudGVyKGlkLCB0YXJnZXQpOwogICAgICAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJv
cik7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0xNzAsMTIgKzE4Nyw3IEBACiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBFcnJvciBlcnJvciA9IGNvbnRleHQt
PmdldFF1ZXJ5T2JqZWN0aXYoaWQsIHBuYW1lLCBwYXJhbXMpOwotICAgICAgICBpZiAoZXJyb3Iu
aXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihl
cnJvcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+
Z2V0UXVlcnlPYmplY3RpdihpZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCkBAIC0xOTEs
MTIgKzIwMyw3IEBACiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBF
cnJvciBlcnJvciA9IGNvbnRleHQtPmdldFF1ZXJ5T2JqZWN0dWl2KGlkLCBwbmFtZSwgcGFyYW1z
KTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3JkRXJyb3IoZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9CisgICAgICAgIGNvbnRleHQtPmdldFF1ZXJ5T2JqZWN0dWl2KGlkLCBwbmFtZSwgcGFyYW1z
KTsKICAgICB9CiB9CiAKQEAgLTIxMiwxMiArMjE5LDcgQEAKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCi0gICAgICAgIEVycm9yIGVycm9yID0gY29udGV4dC0+Z2V0UXVlcnlPYmpl
Y3RpNjR2KGlkLCBwbmFtZSwgcGFyYW1zKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkK
LSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZXJyb3IpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPmdldFF1ZXJ5T2Jq
ZWN0aTY0dihpZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCkBAIC0yMzMsMTIgKzIzNSw3
IEBACiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBFcnJvciBlcnJv
ciA9IGNvbnRleHQtPmdldFF1ZXJ5T2JqZWN0dWk2NHYoaWQsIHBuYW1lLCBwYXJhbXMpOwotICAg
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAg
ICAgICAgY29udGV4dC0+Z2V0UXVlcnlPYmplY3R1aTY0dihpZCwgcG5hbWUsIHBhcmFtcyk7CiAg
ICAgfQogfQogCkBAIC0yNTEsNyArMjQ4LDcgQEAKICAgICB7CiAgICAgICAgIGlmIChuIDwgMCkK
ICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTI4
MSw3ICsyNzgsNyBAQAogICAgICAgICBFcnJvciBlcnJvciA9IGNvbnRleHQtPmRyYXdBcnJheXNJ
bnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOwogICAgICAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cihlcnJvcik7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0zMTIsNyArMzA5LDcgQEAKICAg
ICAgICAgICAgIGNvbnRleHQtPmRyYXdFbGVtZW50c0luc3RhbmNlZChtb2RlLCBjb3VudCwgdHlw
ZSwgaW5kaWNlcywgcHJpbWNvdW50LCBpbmRleFJhbmdlKTsKICAgICAgICAgaWYgKGVycm9yLmlz
RXJyb3IoKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZXJy
b3IpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoZXJyb3IpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMzI5LDEzICszMjYsMTMgQEAKIAogICAg
ICAgICBpZiAoZmVuY2VPYmplY3QgPT0gTlVMTCkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZmVuY2VPYmplY3Qt
PmlzU2V0KCkgIT0gR0xfVFJVRSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMzUyLDcgKzM0OSw3IEBACiAgICAgewogICAgICAg
ICBpZiAobiA8IDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCkBAIC0zNzQsMTMgKzM3MSwxMyBAQAogCiAgICAgICAgIGlmIChmZW5jZU9iamVjdCA9
PSBOVUxMKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChmZW5jZU9iamVjdC0+aXNTZXQoKSAhPSBHTF9UUlVFKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTikpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CkBAIC0zOTcsNyArMzk0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgRXJyb3IgZXJyb3IgPSBm
ZW5jZU9iamVjdC0+dGVzdCgmc3RhdHVzKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9y
LmlzRXJyb3IoKSkKICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoZXJyb3IpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtNDEzLDcg
KzQxMCw3IEBACiAKICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAt
NDQ0LDcgKzQ0MSw3IEBACiAgICAgewogICAgICAgICBpZiAoYnVmc2l6ZSA8IDApCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFM
VUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
VkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC00NTIsNyArNDQ5
LDcgQEAKIAogICAgICAgICBpZiAoIXNoYWRlck9iamVjdCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNTU3LDExICs1NTQsMTEg
QEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJlbmRlcmJ1ZmZl
ciAqcmVuZGVyYnVmZmVyID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRDdXJyZW50UmVuZGVyYnVm
ZmVyKCk7CisgICAgICAgIFJlbmRlcmJ1ZmZlciAqcmVuZGVyYnVmZmVyID0gY29udGV4dC0+Z2V0
R0xTdGF0ZSgpLmdldEN1cnJlbnRSZW5kZXJidWZmZXIoKTsKICAgICAgICAgRXJyb3IgZXJyb3Ig
PSByZW5kZXJidWZmZXItPnNldFN0b3JhZ2VNdWx0aXNhbXBsZShzYW1wbGVzLCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKGVycm9yKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKGVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgIH0KQEAgLTU3Niw3ICs1NzMsNyBAQAogICAgIHsKICAgICAgICAgaWYgKGNv
bmRpdGlvbiAhPSBHTF9BTExfQ09NUExFVEVEX05WKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTU4NCw3ICs1ODEsNyBAQAogCiAgICAgICAgIGlm
IChmZW5jZU9iamVjdCA9PSBOVUxMKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC01OTEsNyArNTg4LDcgQEAKICAgICAgICAgRXJy
b3IgZXJyb3IgPSBmZW5jZU9iamVjdC0+c2V0KGNvbmRpdGlvbik7CiAgICAgICAgIGlmIChlcnJv
ci5pc0Vycm9yKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KGVycm9yKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKGVycm9yKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTYwOCwxMyArNjA1LDEzIEBACiAK
ICAgICAgICAgaWYgKGZlbmNlT2JqZWN0ID09IE5VTEwpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OwogICAgICAgICAgICAgcmV0dXJuIEdMX1RSVUU7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
ZmVuY2VPYmplY3QtPmlzU2V0KCkgIT0gR0xfVFJVRSkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7
CiAgICAgICAgICAgICByZXR1cm4gR0xfVFJVRTsKICAgICAgICAgfQogCkBAIC02MjIsNyArNjE5
LDcgQEAKICAgICAgICAgRXJyb3IgZXJyb3IgPSBmZW5jZU9iamVjdC0+dGVzdCgmcmVzdWx0KTsK
ICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIEdMX1RSVUU7CiAgICAgICAgIH0KIApAQCAt
NjQyLDE3ICs2MzksMTggQEAKICAgICB7CiAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLnRleHR1cmVTdG9yYWdlKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRW
ZXJzaW9uKCkgPCAzICYmCi0gICAgICAgICAgICAhVmFsaWRhdGVFUzJUZXhTdG9yYWdlUGFyYW1l
dGVycyhjb250ZXh0LCB0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQpKQorICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYm
CisgICAgICAgICAgICAhVmFsaWRhdGVFUzJUZXhTdG9yYWdlUGFyYW1ldGVycyhjb250ZXh0LCB0
YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0KSkKICAgICAgICAgewogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZl
cnNpb24oKSA+PSAzICYmCisgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNp
b24oKSA+PSAzICYmCiAgICAgICAgICAgICAhVmFsaWRhdGVFUzNUZXhTdG9yYWdlMkRQYXJhbWV0
ZXJzKGNvbnRleHQsIHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCwgMSkpCiAg
ICAgICAgIHsKQEAgLTY2NCw3ICs2NjIsNyBAQAogICAgICAgICBFcnJvciBlcnJvciA9IHRleHR1
cmUtPnNldFN0b3JhZ2UodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCBzaXplKTsKICAg
ICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
ZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtNjc5LDcg
KzY3Nyw3IEBACiAgICAgewogICAgICAgICBpZiAoaW5kZXggPj0gTUFYX1ZFUlRFWF9BVFRSSUJT
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAt
Njg5LDcgKzY4Nyw3IEBACiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciAqZXJyb3JNZXNzYWdlID0gIlRoZSBjdXJyZW50IGNvbnRleHQgZG9lc24ndCBzdXBwb3J0IHNl
dHRpbmcgYSBub24temVybyBkaXZpc29yIG9uIHRoZSBhdHRyaWJ1dGUgd2l0aCBpbmRleCB6ZXJv
LiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBsZWFzZSBy
ZW9yZGVyIHRoZSBhdHRyaWJ1dGVzIGluIHlvdXIgdmVydGV4IHNoYWRlciBzbyB0aGF0IGF0dHJp
YnV0ZSB6ZXJvIGNhbiBoYXZlIGEgemVybyBkaXZpc29yLiI7Ci0gICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGVycm9yTWVzc2Fn
ZSkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OLCBlcnJvck1lc3NhZ2UpKTsKIAogICAgICAgICAgICAgICAgIC8vIFdlIGFs
c28gb3V0cHV0IGFuIGVycm9yIG1lc3NhZ2UgdG8gdGhlIGRlYnVnZ2VyIHdpbmRvdyBpZiB0cmFj
aW5nIGlzIGFjdGl2ZSwgc28gdGhhdCBkZXZlbG9wZXJzIGNhbiBzZWUgdGhlIGVycm9yIG1lc3Nh
Z2UuCiAgICAgICAgICAgICAgICAgRVJSKCIlcyIsIGVycm9yTWVzc2FnZSk7CkBAIC03NzIsNyAr
NzcwLDcgQEAKICAgICAgICAgRXJyb3IgZXJyb3IgPSBwcm9ncmFtT2JqZWN0LT5zYXZlQmluYXJ5
KGJpbmFyeUZvcm1hdCwgYmluYXJ5LCBidWZTaXplLCBsZW5ndGgpOwogICAgICAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cihlcnJvcik7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC03OTcsNyArNzk1LDcgQEAKICAg
ICAgICAgRXJyb3IgZXJyb3IgPSBwcm9ncmFtT2JqZWN0LT5sb2FkQmluYXJ5KGJpbmFyeUZvcm1h
dCwgYmluYXJ5LCBsZW5ndGgpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7CisgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICB9CkBAIC05MjEsNyArOTE5LDcgQEAKICAgICAgICAgewogICAgICAgICAgICAg
Ly8gVGhlIGRlYnVnIG1hcmtlciBjYWxscyBzaG91bGQgbm90IHNldCBlcnJvciBzdGF0ZQogICAg
ICAgICAgICAgLy8gSG93ZXZlciwgaXQgc2VlbXMgcmVhc29uYWJsZSB0byBzZXQgYW4gZXJyb3Ig
c3RhdGUgaWYgdGhlIGV4dGVuc2lvbiBpcyBub3QgZW5hYmxlZAotICAgICAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFeHRlbnNpb24gbm90
IGVuYWJsZWQiKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTiwgIkV4dGVuc2lvbiBub3QgZW5hYmxlZCIpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCkBAIC05NDYsNyArOTQ0LDcgQEAKICAgICAgICAgewogICAg
ICAgICAgICAgLy8gVGhlIGRlYnVnIG1hcmtlciBjYWxscyBzaG91bGQgbm90IHNldCBlcnJvciBz
dGF0ZQogICAgICAgICAgICAgLy8gSG93ZXZlciwgaXQgc2VlbXMgcmVhc29uYWJsZSB0byBzZXQg
YW4gZXJyb3Igc3RhdGUgaWYgdGhlIGV4dGVuc2lvbiBpcyBub3QgZW5hYmxlZAotICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFeHRl
bnNpb24gbm90IGVuYWJsZWQiKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkV4dGVuc2lvbiBub3QgZW5hYmxlZCIpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC05ODAsNyArOTc4LDcgQEAKICAgICAg
ICAgewogICAgICAgICAgICAgLy8gVGhlIGRlYnVnIG1hcmtlciBjYWxscyBzaG91bGQgbm90IHNl
dCBlcnJvciBzdGF0ZQogICAgICAgICAgICAgLy8gSG93ZXZlciwgaXQgc2VlbXMgcmVhc29uYWJs
ZSB0byBzZXQgYW4gZXJyb3Igc3RhdGUgaWYgdGhlIGV4dGVuc2lvbiBpcyBub3QgZW5hYmxlZAot
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04sICJFeHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkV4dGVuc2lvbiBub3QgZW5hYmxl
ZCIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMDA2LDcgKzEwMDQs
NyBAQAogICAgICAgICBFcnJvciBlcnJvciA9IHRleHR1cmUtPnNldEVHTEltYWdlVGFyZ2V0KHRh
cmdldCwgaW1hZ2VPYmplY3QpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7CisgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICB9CkBAIC0xMDI3LDExICsxMDI1LDExIEBACiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlciA9IGNvbnRl
eHQtPmdldFN0YXRlKCkuZ2V0Q3VycmVudFJlbmRlcmJ1ZmZlcigpOworICAgICAgICBSZW5kZXJi
dWZmZXIgKnJlbmRlcmJ1ZmZlciA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRDdXJyZW50UmVu
ZGVyYnVmZmVyKCk7CiAgICAgICAgIEVycm9yIGVycm9yID0gcmVuZGVyYnVmZmVyLT5zZXRTdG9y
YWdlRUdMSW1hZ2VUYXJnZXQoaW1hZ2VPYmplY3QpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJv
cigpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7
CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTM5LDkgKzExMzcsNyBAQAogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgc3RkOjp2ZWN0b3I8R0x1aW50PiBpZFZl
Y3RvcihpZHMsIGlkcyArIGNvdW50KTsKLSAgICAgICAgY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRE
ZWJ1ZygpLnNldE1lc3NhZ2VDb250cm9sKAotICAgICAgICAgICAgc291cmNlLCB0eXBlLCBzZXZl
cml0eSwgc3RkOjptb3ZlKGlkVmVjdG9yKSwgKGVuYWJsZWQgIT0gR0xfRkFMU0UpKTsKKyAgICAg
ICAgY29udGV4dC0+ZGVidWdNZXNzYWdlQ29udHJvbChzb3VyY2UsIHR5cGUsIHNldmVyaXR5LCBj
b3VudCwgaWRzLCBlbmFibGVkKTsKICAgICB9CiB9CiAKQEAgLTExNjUsOCArMTE2MSw3IEBACiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBzdGQ6OnN0cmluZyBtc2co
YnVmLCAobGVuZ3RoID4gMCkgPyBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgOiBzdHJsZW4o
YnVmKSk7Ci0gICAgICAgIGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0RGVidWcoKS5pbnNlcnRNZXNz
YWdlKHNvdXJjZSwgdHlwZSwgaWQsIHNldmVyaXR5LCBzdGQ6Om1vdmUobXNnKSk7CisgICAgICAg
IGNvbnRleHQtPmRlYnVnTWVzc2FnZUluc2VydChzb3VyY2UsIHR5cGUsIGlkLCBzZXZlcml0eSwg
bGVuZ3RoLCBidWYpOwogICAgIH0KIH0KIApAQCAtMTE4Myw3ICsxMTc4LDcgQEAKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0
RGVidWcoKS5zZXRDYWxsYmFjayhjYWxsYmFjaywgdXNlclBhcmFtKTsKKyAgICAgICAgY29udGV4
dC0+ZGVidWdNZXNzYWdlQ2FsbGJhY2soY2FsbGJhY2ssIHVzZXJQYXJhbSk7CiAgICAgfQogfQog
CkBAIC0xMjExLDggKzEyMDYsOCBAQAogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0K
IAotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0x1aW50Pihjb250ZXh0LT5nZXRTdGF0ZSgp
LmdldERlYnVnKCkuZ2V0TWVzc2FnZXMoCi0gICAgICAgICAgICBjb3VudCwgYnVmU2l6ZSwgc291
cmNlcywgdHlwZXMsIGlkcywgc2V2ZXJpdGllcywgbGVuZ3RocywgbWVzc2FnZUxvZykpOworICAg
ICAgICByZXR1cm4gY29udGV4dC0+Z2V0RGVidWdNZXNzYWdlTG9nKGNvdW50LCBidWZTaXplLCBz
b3VyY2VzLCB0eXBlcywgaWRzLCBzZXZlcml0aWVzLCBsZW5ndGhzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VMb2cpOwogICAgIH0KIAogICAgIHJl
dHVybiAwOwpAQCAtMTIzNCw3ICsxMjI5LDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIHN0ZDo6
c3RyaW5nIG1zZyhtZXNzYWdlLCAobGVuZ3RoID4gMCkgPyBzdGF0aWNfY2FzdDxzaXplX3Q+KGxl
bmd0aCkgOiBzdHJsZW4obWVzc2FnZSkpOwotICAgICAgICBjb250ZXh0LT5nZXRTdGF0ZSgpLmdl
dERlYnVnKCkucHVzaEdyb3VwKHNvdXJjZSwgaWQsIHN0ZDo6bW92ZShtc2cpKTsKKyAgICAgICAg
Y29udGV4dC0+cHVzaERlYnVnR3JvdXAoc291cmNlLCBpZCwgbGVuZ3RoLCBtZXNzYWdlKTsKICAg
ICB9CiB9CiAKQEAgLTEyNTAsNyArMTI0NSw3IEBACiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldERlYnVnKCkucG9wR3JvdXAo
KTsKKyAgICAgICAgY29udGV4dC0+cG9wRGVidWdHcm91cCgpOwogICAgIH0KIH0KIApAQCAtMTI2
OSwxMSArMTI2NCw3IEBACiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBMYWJlbGVkT2JqZWN0ICpvYmplY3QgPSBjb250ZXh0LT5nZXRMYWJlbGVkT2JqZWN0KGlkZW50
aWZpZXIsIG5hbWUpOwotICAgICAgICBBU1NFUlQob2JqZWN0ICE9IG51bGxwdHIpOwotCi0gICAg
ICAgIHN0ZDo6c3RyaW5nIGxibChsYWJlbCwgKGxlbmd0aCA+IDApID8gc3RhdGljX2Nhc3Q8c2l6
ZV90PihsZW5ndGgpIDogc3RybGVuKGxhYmVsKSk7Ci0gICAgICAgIG9iamVjdC0+c2V0TGFiZWwo
bGJsKTsKKyAgICAgICAgY29udGV4dC0+b2JqZWN0TGFiZWwoaWRlbnRpZmllciwgbmFtZSwgbGVu
Z3RoLCBsYWJlbCk7CiAgICAgfQogfQogCkBAIC0xMjkzLDE0ICsxMjg0LDcgQEAKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIExhYmVsZWRPYmplY3QgKm9iamVjdCA9
IGNvbnRleHQtPmdldExhYmVsZWRPYmplY3QoaWRlbnRpZmllciwgbmFtZSk7Ci0gICAgICAgIEFT
U0VSVChvYmplY3QgIT0gbnVsbHB0cik7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm9i
amVjdExhYmVsID0gb2JqZWN0LT5nZXRMYWJlbCgpOwotICAgICAgICBzaXplX3Qgd3JpdGVMZW5n
dGggPSBzdGQ6Om1pbihzdGF0aWNfY2FzdDxzaXplX3Q+KGJ1ZlNpemUpIC0gMSwgb2JqZWN0TGFi
ZWwubGVuZ3RoKCkpOwotICAgICAgICBzdGQ6OmNvcHkob2JqZWN0TGFiZWwuYmVnaW4oKSwgb2Jq
ZWN0TGFiZWwuYmVnaW4oKSArIHdyaXRlTGVuZ3RoLCBsYWJlbCk7Ci0gICAgICAgIGxhYmVsW3dy
aXRlTGVuZ3RoXSA9ICdcMCc7Ci0gICAgICAgICpsZW5ndGggICAgICAgICAgICA9IHN0YXRpY19j
YXN0PEdMc2l6ZWk+KHdyaXRlTGVuZ3RoKTsKKyAgICAgICAgY29udGV4dC0+Z2V0T2JqZWN0TGFi
ZWwoaWRlbnRpZmllciwgbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBsYWJlbCk7CiAgICAgfQogfQog
CkBAIC0xMzE3LDExICsxMzAxLDcgQEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIExhYmVsZWRPYmplY3QgKm9iamVjdCA9IGNvbnRleHQtPmdldExhYmVsZWRPYmpl
Y3RGcm9tUHRyKHB0cik7Ci0gICAgICAgIEFTU0VSVChvYmplY3QgIT0gbnVsbHB0cik7Ci0KLSAg
ICAgICAgc3RkOjpzdHJpbmcgbGJsKGxhYmVsLCAobGVuZ3RoID4gMCkgPyBzdGF0aWNfY2FzdDxz
aXplX3Q+KGxlbmd0aCkgOiBzdHJsZW4obGFiZWwpKTsKLSAgICAgICAgb2JqZWN0LT5zZXRMYWJl
bChsYmwpOworICAgICAgICBjb250ZXh0LT5vYmplY3RQdHJMYWJlbChwdHIsIGxlbmd0aCwgbGFi
ZWwpOwogICAgIH0KIH0KIApAQCAtMTM0MywxNCArMTMyMyw3IEBACiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICBMYWJlbGVkT2JqZWN0ICpvYmplY3QgPSBjb250ZXh0
LT5nZXRMYWJlbGVkT2JqZWN0RnJvbVB0cihwdHIpOwotICAgICAgICBBU1NFUlQob2JqZWN0ICE9
IG51bGxwdHIpOwotCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZvYmplY3RMYWJlbCA9IG9i
amVjdC0+Z2V0TGFiZWwoKTsKLSAgICAgICAgc2l6ZV90IHdyaXRlTGVuZ3RoID0gc3RkOjptaW4o
c3RhdGljX2Nhc3Q8c2l6ZV90PihidWZTaXplKSAtIDEsIG9iamVjdExhYmVsLmxlbmd0aCgpKTsK
LSAgICAgICAgc3RkOjpjb3B5KG9iamVjdExhYmVsLmJlZ2luKCksIG9iamVjdExhYmVsLmJlZ2lu
KCkgKyB3cml0ZUxlbmd0aCwgbGFiZWwpOwotICAgICAgICBsYWJlbFt3cml0ZUxlbmd0aF0gPSAn
XDAnOwotICAgICAgICAqbGVuZ3RoICAgICAgICAgICAgPSBzdGF0aWNfY2FzdDxHTHNpemVpPih3
cml0ZUxlbmd0aCk7CisgICAgICAgIGNvbnRleHQtPmdldE9iamVjdFB0ckxhYmVsKHB0ciwgYnVm
U2l6ZSwgbGVuZ3RoLCBsYWJlbCk7CiAgICAgfQogfQogCkBAIC0xMzY5LDQgKzEzNDIsMjAzMiBA
QAogICAgICAgICBjb250ZXh0LT5nZXRQb2ludGVydihwbmFtZSwgcGFyYW1zKTsKICAgICB9CiB9
CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEJpbmRVbmlmb3JtTG9jYXRpb25DSFJP
TUlVTShHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5h
bWUpCit7CisgICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9
ICVkLCBjb25zdCBHTGNoYXIgKm5hbWUgPSAweCUwLjhwKSIsIHByb2dyYW0sCisgICAgICAgICAg
bG9jYXRpb24sIG5hbWUpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFWYWxpZGF0
ZUJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTShjb250ZXh0LCBwcm9ncmFtLCBsb2NhdGlvbiwg
bmFtZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIGNvbnRleHQtPmJpbmRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbG9jYXRpb24sIG5hbWUp
OworICAgIH0KIH0KKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQ292ZXJhZ2VNb2R1
bGF0aW9uQ0hST01JVU0oR0xlbnVtIGNvbXBvbmVudHMpCit7CisgICAgRVZFTlQoIihHTGVudW0g
Y29tcG9uZW50cyA9ICV1KSIsIGNvbXBvbmVudHMpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAg
ICAgaWYgKCFWYWxpZGF0ZUNvdmVyYWdlTW9kdWxhdGlvbkNIUk9NSVVNKGNvbnRleHQsIGNvbXBv
bmVudHMpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgY29udGV4dC0+c2V0Q292ZXJhZ2VNb2R1bGF0aW9uKGNvbXBvbmVudHMpOworICAgIH0KK30K
KworLy8gQ0hST01JVU1fcGF0aF9yZW5kZXJpbmcKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVO
VFJZIE1hdHJpeExvYWRmQ0hST01JVU0oR0xlbnVtIG1hdHJpeE1vZGUsIGNvbnN0IEdMZmxvYXQg
Km1hdHJpeCkKK3sKKyAgICBFVkVOVCgiKEdMZW51bSBtYXRyaXhNb2RlID0gJXUpIiwgbWF0cml4
TW9kZSk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7
CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgJiYgIVZhbGlkYXRlTWF0cml4KGNvbnRleHQsIG1hdHJpeE1vZGUsIG1hdHJpeCkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjb250
ZXh0LT5sb2FkUGF0aFJlbmRlcmluZ01hdHJpeChtYXRyaXhNb2RlLCBtYXRyaXgpOworICAgIH0K
K30KKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgTWF0cml4TG9hZElkZW50aXR5Q0hS
T01JVU0oR0xlbnVtIG1hdHJpeE1vZGUpCit7CisgICAgRVZFTlQoIihHTGVudW0gbWF0cml4TW9k
ZSA9ICV1KSIsIG1hdHJpeE1vZGUpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZU1hdHJpeE1vZGUoY29udGV4dCwg
bWF0cml4TW9kZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBjb250ZXh0LT5sb2FkUGF0aFJlbmRlcmluZ0lkZW50aXR5TWF0cml4KG1hdHJpeE1v
ZGUpOworICAgIH0KK30KKworQU5HTEVfRVhQT1JUIEdMdWludCBHTF9BUElFTlRSWSBHZW5QYXRo
c0NIUk9NSVVNKEdMc2l6ZWkgcmFuZ2UpCit7CisgICAgRVZFTlQoIihHTHNpemVpIHJhbmdlID0g
JWQpIiwgcmFuZ2UpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZUdlblBhdGhzKGNvbnRleHQsIHJhbmdlKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IGNvbnRleHQtPmNyZWF0ZVBhdGhzKHJhbmdlKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisK
K0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVBhdGhzQ0hST01JVU0oR0x1aW50
IGZpcnN0LCBHTHNpemVpIHJhbmdlKQoreworICAgIEVWRU5UKCIoR0x1aW50IGZpcnN0ID0gJXUs
IEdMc2l6ZWkgcmFuZ2UgPSAlZCkiLCBmaXJzdCwgcmFuZ2UpOworCisgICAgQ29udGV4dCAqY29u
dGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsK
KyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZURlbGV0
ZVBhdGhzKGNvbnRleHQsIGZpcnN0LCByYW5nZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICBjb250ZXh0LT5kZWxldGVQYXRocyhmaXJzdCwgcmFu
Z2UpOworICAgIH0KK30KKworQU5HTEVfRVhQT1JUIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc1Bh
dGhDSFJPTUlVTShHTHVpbnQgcGF0aCkKK3sKKyAgICBFVkVOVCgiKEdMdWludCBwYXRoID0gJXUp
IiwgcGF0aCk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlSXNQYXRoKGNvbnRleHQpKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gR0xfRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNvbnRl
eHQtPmhhc1BhdGhEYXRhKHBhdGgpOworICAgIH0KKyAgICByZXR1cm4gR0xfRkFMU0U7Cit9CisK
K0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFBhdGhDb21tYW5kc0NIUk9NSVVNKEdMdWlu
dCBwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBudW1Db21tYW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgKmNvbW1hbmRzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1Db29yZHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gY29vcmRUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgdm9pZCAqY29vcmRzKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdM
dWludCBwYXRoID0gJXUsIEdMc2l6ZWkgbnVtQ29tbWFuZHMgPSAlZCwgY29tbWFuZHMgPSAlcCwg
IgorICAgICAgICAiR0xzaXplaSBudW1Db29yZHMgPSAlZCwgR0xlbnVtIGNvb3JkVHlwZSA9ICV1
LCB2b2lkKiBjb29yZHMgPSAlcCkiLAorICAgICAgICBwYXRoLCBudW1Db21tYW5kcywgY29tbWFu
ZHMsIG51bUNvb3JkcywgY29vcmRUeXBlLCBjb29yZHMpOworCisgICAgQ29udGV4dCAqY29udGV4
dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAg
ICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoIVZhbGlkYXRlUGF0aENvbW1hbmRzKGNvbnRleHQsIHBhdGgsIG51bUNvbW1hbmRz
LCBjb21tYW5kcywgbnVtQ29vcmRzLCBjb29yZFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvb3JkcykpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPnNldFBh
dGhDb21tYW5kcyhwYXRoLCBudW1Db21tYW5kcywgY29tbWFuZHMsIG51bUNvb3JkcywgY29vcmRU
eXBlLCBjb29yZHMpOworICAgIH0KK30KKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkg
UGF0aFBhcmFtZXRlcmZDSFJPTUlVTShHTHVpbnQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0
IHZhbHVlKQoreworICAgIEVWRU5UKCIoR0x1aW50IHBhdGggPSAldSwgR0xlbnVtIHBuYW1lID0g
JXUsIEdMZmxvYXQgdmFsdWUgPSAlZikiLCBwYXRoLCBwbmFtZSwgdmFsdWUpOworCisgICAgQ29u
dGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0
KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxp
ZGF0ZVNldFBhdGhQYXJhbWV0ZXIoY29udGV4dCwgcGF0aCwgcG5hbWUsIHZhbHVlKSkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPnNl
dFBhdGhQYXJhbWV0ZXJmKHBhdGgsIHBuYW1lLCB2YWx1ZSk7CisgICAgfQorfQorCitBTkdMRV9F
WFBPUlQgdm9pZCBHTF9BUElFTlRSWSBQYXRoUGFyYW1ldGVyaUNIUk9NSVVNKEdMdWludCBwYXRo
LCBHTGVudW0gcG5hbWUsIEdMaW50IHZhbHVlKQoreworICAgIFBhdGhQYXJhbWV0ZXJmQ0hST01J
VU0ocGF0aCwgcG5hbWUsIHN0YXRpY19jYXN0PEdMZmxvYXQ+KHZhbHVlKSk7Cit9CisKK0FOR0xF
X0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldFBhdGhQYXJhbWV0ZXJmQ0hST01JVU0oR0x1aW50
IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqdmFsdWUpCit7CisgICAgRVZFTlQoIihHTHVp
bnQgcGF0aCA9ICV1LCBHTGVudW0gcG5hbWUgPSAldSkiLCBwYXRoLCBwbmFtZSk7CisKKyAgICBD
b250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRl
eHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZh
bGlkYXRlR2V0UGF0aFBhcmFtZXRlcihjb250ZXh0LCBwYXRoLCBwbmFtZSwgdmFsdWUpKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+
Z2V0UGF0aFBhcmFtZXRlcmZ2KHBhdGgsIHBuYW1lLCB2YWx1ZSk7CisgICAgfQorfQorCitBTkdM
RV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRQYXRoUGFyYW1ldGVyaUNIUk9NSVVNKEdMdWlu
dCBwYXRoLCBHTGVudW0gcG5hbWUsIEdMaW50ICp2YWx1ZSkKK3sKKyAgICBHTGZsb2F0IHZhbCA9
IDAuMGY7CisgICAgR2V0UGF0aFBhcmFtZXRlcmZDSFJPTUlVTShwYXRoLCBwbmFtZSwgdmFsdWUg
IT0gbnVsbHB0ciA/ICZ2YWwgOiBudWxscHRyKTsKKyAgICBpZiAodmFsdWUpCisgICAgICAgICp2
YWx1ZSA9IHN0YXRpY19jYXN0PEdMaW50Pih2YWwpOworfQorCitBTkdMRV9FWFBPUlQgdm9pZCBH
TF9BUElFTlRSWSBQYXRoU3RlbmNpbEZ1bmNDSFJPTUlVTShHTGVudW0gZnVuYywgR0xpbnQgcmVm
LCBHTHVpbnQgbWFzaykKK3sKKyAgICBFVkVOVCgiKEdMZW51bSBmdW5jID0gJXUsIEdMaW50IHJl
ZiA9ICVkLCBHTHVpbnQgbWFzayA9ICV1KSIsIGZ1bmMsIHJlZiwgbWFzayk7CisKKyAgICBDb250
ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQp
CisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlk
YXRlUGF0aFN0ZW5jaWxGdW5jKGNvbnRleHQsIGZ1bmMsIHJlZiwgbWFzaykpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjb250ZXh0LT5zZXRQYXRo
U3RlbmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNrKTsKKyAgICB9Cit9CisKK0FOR0xFX0VYUE9SVCB2
b2lkIEdMX0FQSUVOVFJZIFN0ZW5jaWxGaWxsUGF0aENIUk9NSVVNKEdMdWludCBwYXRoLCBHTGVu
dW0gZmlsbE1vZGUsIEdMdWludCBtYXNrKQoreworICAgIEVWRU5UKCIoR0x1aW50IHBhdGggPSAl
dSwgR0xlbnVtIGZpbGxNb2RlID0gJXUsIEdMdWludCBtYXNrID0gJXUpIiwgcGF0aCwgZmlsbE1v
ZGUsIG1hc2spOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZVN0ZW5jaWxGaWxsUGF0aChjb250ZXh0LCBwYXRoLCBm
aWxsTW9kZSwgbWFzaykpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBjb250ZXh0LT5zdGVuY2lsRmlsbFBhdGgocGF0aCwgZmlsbE1vZGUsIG1hc2sp
OworICAgIH0KK30KKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgU3RlbmNpbFN0cm9r
ZVBhdGhDSFJPTUlVTShHTHVpbnQgcGF0aCwgR0xpbnQgcmVmZXJlbmNlLCBHTHVpbnQgbWFzaykK
K3sKKyAgICBFVkVOVCgiKEdMdWludCBwYXRoID0gJXUsIEdMaW50IGZlcmVuY2UgPSAlZCwgR0x1
aW50IG1hc2sgPSAldSkiLCBwYXRoLCByZWZlcmVuY2UsIG1hc2spOworCisgICAgQ29udGV4dCAq
Y29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAg
IHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmCisgICAgICAgICAg
ICAhVmFsaWRhdGVTdGVuY2lsU3Ryb2tlUGF0aChjb250ZXh0LCBwYXRoLCByZWZlcmVuY2UsIG1h
c2spKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
Y29udGV4dC0+c3RlbmNpbFN0cm9rZVBhdGgocGF0aCwgcmVmZXJlbmNlLCBtYXNrKTsKKyAgICB9
Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIENvdmVyRmlsbFBhdGhDSFJPTUlV
TShHTHVpbnQgcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSkKK3sKKyAgICBFVkVOVCgiKEdMdWludCBw
YXRoID0gJXUsIEdMZW51bSBjb3Zlck1vZGUgPSAldSkiLCBwYXRoLCBjb3Zlck1vZGUpOworCisg
ICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChj
b250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYm
ICFWYWxpZGF0ZUNvdmVyUGF0aChjb250ZXh0LCBwYXRoLCBjb3Zlck1vZGUpKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+Y292ZXJG
aWxsUGF0aChwYXRoLCBjb3Zlck1vZGUpOworICAgIH0KK30KKworQU5HTEVfRVhQT1JUIHZvaWQg
R0xfQVBJRU5UUlkgQ292ZXJTdHJva2VQYXRoQ0hST01JVU0oR0x1aW50IHBhdGgsIEdMZW51bSBj
b3Zlck1vZGUpCit7CisgICAgRVZFTlQoIihHTHVpbnQgcGF0aCA9ICV1LCBHTGVudW0gY292ZXJN
b2RlID0gJXUpIiwgcGF0aCwgY292ZXJNb2RlKTsKKworICAgIENvbnRleHQgKmNvbnRleHQgPSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAg
IGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVDb3ZlclBhdGgoY29u
dGV4dCwgcGF0aCwgY292ZXJNb2RlKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPmNvdmVyU3Ryb2tlUGF0aChwYXRoLCBjb3Zlck1v
ZGUpOworICAgIH0KK30KKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgU3RlbmNpbFRo
ZW5Db3ZlckZpbGxQYXRoQ0hST01JVU0oR0x1aW50IHBhdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1v
ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpCit7CisgICAg
RVZFTlQoIihHTHVpbnQgcGF0aCA9ICV1LCBHTGVudW0gZmlsbE1vZGUgPSAldSwgR0x1aW50IG1h
c2sgPSAldSwgR0xlbnVtIGNvdmVyTW9kZSA9ICV1KSIsIHBhdGgsCisgICAgICAgICAgZmlsbE1v
ZGUsIG1hc2ssIGNvdmVyTW9kZSk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0ZVN0ZW5jaWxU
aGVuQ292ZXJGaWxsUGF0aChjb250ZXh0LCBwYXRoLCBmaWxsTW9kZSwgbWFzaywgY292ZXJNb2Rl
KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNv
bnRleHQtPnN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aChwYXRoLCBmaWxsTW9kZSwgbWFzaywgY292
ZXJNb2RlKTsKKyAgICB9Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFN0ZW5j
aWxUaGVuQ292ZXJTdHJva2VQYXRoQ0hST01JVU0oR0x1aW50IHBhdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHJlZmVyZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1v
ZGUpCit7CisgICAgRVZFTlQoIihHTHVpbnQgcGF0aCA9ICV1LCBHTGludCByZWZlcmVuY2UgPSAl
ZCwgR0x1aW50IG1hc2sgPSAldSwgR0xlbnVtIGNvdmVyTW9kZSA9ICV1KSIsIHBhdGgsCisgICAg
ICAgICAgcmVmZXJlbmNlLCBtYXNrLCBjb3Zlck1vZGUpOworCisgICAgQ29udGV4dCAqY29udGV4
dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAg
ICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFs
aWRhdGVTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aChjb250ZXh0LCBwYXRoLCByZWZlcmVuY2Us
IG1hc2ssIGNvdmVyTW9kZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBjb250ZXh0LT5zdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aChwYXRoLCBy
ZWZlcmVuY2UsIG1hc2ssIGNvdmVyTW9kZSk7CisgICAgfQorfQorCitBTkdMRV9FWFBPUlQgdm9p
ZCBHTF9BUElFTlRSWSBDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oR0xzaXplaSBudW1Q
YXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBwYXRoQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKK3sKKyAg
ICBFVkVOVCgKKyAgICAgICAgIihHTHNpemVpIG51bVBhdGhzID0gJWQsIEdMZW51bSBwYXRoTmFt
ZVR5cGUgPSAldSwgY29uc3Qgdm9pZCAqcGF0aHMgPSAlcCAiCisgICAgICAgICJHTHVpbnQgcGF0
aEJhc2UgPSAldSwgR0xlbnVtIGNvdmVyTW9kZSA9ICV1LCBHTGVudW0gdHJhbnNmb3JtVHlwZSA9
ICV1ICIKKyAgICAgICAgImNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyA9ICVwKSIsCisg
ICAgICAgIG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZSwgY292ZXJNb2Rl
LCB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpOworCisgICAgQ29udGV4dCAqY29udGV4
dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAg
ICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFs
aWRhdGVDb3ZlckZpbGxQYXRoSW5zdGFuY2VkKGNvbnRleHQsIG51bVBhdGhzLCBwYXRoTmFtZVR5
cGUsIHBhdGhzLCBwYXRoQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY292ZXJNb2RlLCB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+
Y292ZXJGaWxsUGF0aEluc3RhbmNlZChudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0
aEJhc2UsIGNvdmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpOworICAgIH0KK30KKworQU5HTEVfRVhQ
T1JUIHZvaWQgR0xfQVBJRU5UUlkgQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oR0xz
aXplaSBudW1QYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2
b2lkICpwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1v
ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRy
YW5zZm9ybVZhbHVlcykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHNpemVpIG51bVBhdGhz
ID0gJWQsIEdMZW51bSBwYXRoTmFtZVR5cGUgPSAldSwgY29uc3Qgdm9pZCAqcGF0aHMgPSAlcCAi
CisgICAgICAgICJHTHVpbnQgcGF0aEJhc2UgPSAldSwgR0xlbnVtIGNvdmVyTW9kZSA9ICV1LCBH
TGVudW0gdHJhbnNmb3JtVHlwZSA9ICV1ICIKKyAgICAgICAgImNvbnN0IEdMZmxvYXQgKnRyYW5z
Zm9ybVZhbHVlcyA9ICVwKSIsCisgICAgICAgIG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhz
LCBwYXRoQmFzZSwgY292ZXJNb2RlLCB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpOwor
CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlm
IChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
ICYmCisgICAgICAgICAgICAhVmFsaWRhdGVDb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWQoY29udGV4
dCwgbnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdmVyTW9kZSwgdHJhbnNmb3JtVHlw
ZSwgdHJhbnNmb3JtVmFsdWVzKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIGNvbnRleHQtPmNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZChudW1QYXRo
cywgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2UsIGNvdmVyTW9kZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZh
bHVlcyk7CisgICAgfQorfQorCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBTdGVuY2ls
U3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKEdMc2l6ZWkgbnVtUGF0aHMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwYXRoTmFtZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgcGF0aEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0xzaXplaSBu
dW1QYXRocyA9ICV1LCBHTGVudW0gcGF0aE5hbWVUeXBlID0gJXUsIGNvbnN0IHZvaWQgKnBhdGhz
ID0gJXAgIgorICAgICAgICAiR0x1aW50IHBhdGhCYXNlID0gJXUsIEdMaW50IHJlZmVyZW5jZSA9
ICVkIEdMdWludCBtYXNrID0gJXUgR0xlbnVtIHRyYW5zZm9ybVR5cGUgPSAldSAiCisgICAgICAg
ICJjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMgPSAlcCkiLAorICAgICAgICBudW1QYXRo
cywgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2UsIHJlZmVyZW5jZSwgbWFzaywgdHJhbnNm
b3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzKTsKKworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlm
ICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRlU3Rl
bmNpbFN0cm9rZVBhdGhJbnN0YW5jZWQoY29udGV4dCwgbnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwg
cGF0aHMsIHBhdGhCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVmZXJlbmNlLCBtYXNrLCB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMp
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY29u
dGV4dC0+c3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWQobnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwg
cGF0aHMsIHBhdGhCYXNlLCByZWZlcmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1hc2ssIHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcyk7Cisg
ICAgfQorfQorCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsRmlsbFBhdGhJ
bnN0YW5jZWRDSFJPTUlVTShHTHNpemVpIG51bVBhdGhzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1l
VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGZpbGxNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKK3sK
KyAgICBFVkVOVCgKKyAgICAgICAgIihHTHNpemVpIG51bVBhdGhzID0gJXUsIEdMZW51bSBwYXRo
TmFtZVR5cGUgPSAldSBjb25zdCB2b2lkICpwYXRocyA9ICVwICIKKyAgICAgICAgIkdMdWludCBw
YXRoQmFzZSA9ICV1LCBHTGVudW0gZmlsbE1vZGUgPSAldSwgR0x1aW50IG1hc2sgPSAldSwgR0xl
bnVtIHRyYW5zZm9ybVR5cGUgPSAldSAiCisgICAgICAgICJjb25zdCBHTGZsb2F0ICp0cmFuc2Zv
cm1WYWx1ZXMgPSAlcCkiLAorICAgICAgICBudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRocywg
cGF0aEJhc2UsIGZpbGxNb2RlLCBtYXNrLCB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMp
OworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAg
IGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWQoY29u
dGV4dCwgbnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxNb2RlLCBtYXNrLCB0cmFu
c2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+c3RlbmNpbEZpbGxQYXRoSW5zdGFuY2Vk
KG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZSwgZmlsbE1vZGUsIG1hc2ss
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1UeXBl
LCB0cmFuc2Zvcm1WYWx1ZXMpOworICAgIH0KK30KKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJ
RU5UUlkKK1N0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKEdMc2l6ZWkg
bnVtUGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcGF0aE5hbWVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgdm9pZCAqcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykK
K3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHNpemVpIG51bVBhdGhzID0gJXUsIEdMZW51bSBw
YXRoTmFtZVR5cGUgPSAldSBjb25zdCB2b2lkICpwYXRocyA9ICVwICIKKyAgICAgICAgIkdMdWlu
dCBwYXRoQmFzZSA9ICV1LCBHTGVudW0gY292ZXJNb2RlID0gJXUsIEdMdWludCBtYXNrID0gJXUs
IEdMZW51bSB0cmFuc2Zvcm1UeXBlID0gJXUgIgorICAgICAgICAiY29uc3QgR0xmbG9hdCAqdHJh
bnNmb3JtVmFsdWVzID0gJXApIiwKKyAgICAgICAgbnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0
aHMsIHBhdGhCYXNlLCBjb3Zlck1vZGUsIG1hc2ssIHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZh
bHVlcyk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7
CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0ZVN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0
aEluc3RhbmNlZChjb250ZXh0LCBudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRocywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoQmFz
ZSwgZmlsbE1vZGUsIG1hc2ssIGNvdmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1
ZXMpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
Y29udGV4dC0+c3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkKG51bVBhdGhzLCBwYXRo
TmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZpbGxNb2RlLCBtYXNrLCBjb3Zlck1vZGUsIHRyYW5zZm9y
bVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0cmFuc2Zvcm1WYWx1ZXMpOworICAgIH0KK30KKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJ
RU5UUlkKK1N0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oR0xzaXpl
aSBudW1QYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHBhdGhOYW1lVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KnRyYW5zZm9ybVZhbHVlcykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHNpemVpIG51bVBh
dGhzID0gJXUsIEdMZW51bSBwYXRoTmFtZVR5cGUgPSAldSwgY29uc3Qgdm9pZCAqcGF0aHMgPSAl
cCAiCisgICAgICAgICJHTHVpbnQgcGF0aEJhc2UgPSAldSBHTGVudW0gY292ZXJNb2RlID0gJXUg
R0xpbnQgcmVmZXJlbmNlID0gJWQgR0x1aW50IG1hc2sgPSAldSBHTGVudW0gIgorICAgICAgICAi
dHJhbnNmb3JtVHlwZSA9ICV1ICIKKyAgICAgICAgImNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZh
bHVlcyA9ICVwKSIsCisgICAgICAgIG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRo
QmFzZSwgY292ZXJNb2RlLCByZWZlcmVuY2UsIG1hc2ssIHRyYW5zZm9ybVR5cGUsCisgICAgICAg
IHRyYW5zZm9ybVZhbHVlcyk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0ZVN0ZW5jaWxUaGVu
Q292ZXJTdHJva2VQYXRoSW5zdGFuY2VkKGNvbnRleHQsIG51bVBhdGhzLCBwYXRoTmFtZVR5cGUs
IHBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGF0aEJhc2UsIHJlZmVyZW5jZSwgbWFzaywgY292ZXJNb2RlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3Jt
VHlwZSwgdHJhbnNmb3JtVmFsdWVzKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPnN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5z
dGFuY2VkKG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlLCBt
YXNrLCBjb3Zlck1vZGUsIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVZhbHVlcyk7CisgICAgfQorfQor
CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9u
Q0hST01JVU0oR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xjaGFyICpuYW1lKQoreworICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAldSwg
R0xpbnQgbG9jYXRpb24gPSAlZCwgY29uc3QgR0xjaGFyICpuYW1lID0gJXApIiwgcHJvZ3JhbSwg
bG9jYXRpb24sCisgICAgICAgICAgbmFtZSk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBp
ZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0ZUJp
bmRGcmFnbWVudElucHV0TG9jYXRpb24oY29udGV4dCwgcHJvZ3JhbSwgbG9jYXRpb24sIG5hbWUp
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY29u
dGV4dC0+YmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbihwcm9ncmFtLCBsb2NhdGlvbiwgbmFtZSk7
CisgICAgfQorfQorCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtUGF0aEZy
YWdtZW50SW5wdXRHZW5DSFJPTUlVTShHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGdlbk1vZGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBjb21wb25l
bnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqY29lZmZzKQoreworICAgIEVWRU5UKAorICAg
ICAgICAiKEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uICVkLCBHTGVudW0gZ2Vu
TW9kZSA9ICV1LCBHTGludCBjb21wb25lbnRzID0gJWQsICIKKyAgICAgICAgImNvbnN0IEdMZmxv
YXQgKiBjb2VmZnMgPSAlcCkiLAorICAgICAgICBwcm9ncmFtLCBsb2NhdGlvbiwgZ2VuTW9kZSwg
Y29tcG9uZW50cywgY29lZmZzKTsKKworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRlUHJvZ3JhbVBh
dGhGcmFnbWVudElucHV0R2VuKGNvbnRleHQsIHByb2dyYW0sIGxvY2F0aW9uLCBnZW5Nb2RlLCBj
b21wb25lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvZWZmcykpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBjb250ZXh0LT5wcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW4ocHJvZ3JhbSwgbG9j
YXRpb24sIGdlbk1vZGUsIGNvbXBvbmVudHMsIGNvZWZmcyk7CisgICAgfQorfQorCitBTkdMRV9F
WFBPUlQgdm9pZCBHTF9BUElFTlRSWSBDb3B5VGV4dHVyZUNIUk9NSVVNKEdMdWludCBzb3VyY2VJ
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IGRlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0VHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFja0ZsaXBZLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xl
YW4gdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFja1VubXVsdGlwbHlBbHBoYSkKK3sK
KyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQgc291cmNlSWQgPSAldSwgR0x1aW50IGRlc3RJ
ZCA9ICV1LCBHTGludCBpbnRlcm5hbEZvcm1hdCA9IDB4JVgsIEdMZW51bSBkZXN0VHlwZSA9ICIK
KyAgICAgICAgIjB4JVgsIEdMYm9vbGVhbiB1bnBhY2tGbGlwWSA9ICV1LCBHTGJvb2xlYW4gdW5w
YWNrUHJlbXVsdGlwbHlBbHBoYSA9ICV1LCBHTGJvb2xlYW4gIgorICAgICAgICAidW5wYWNrVW5t
dWx0aXBseUFscGhhID0gJXUpIiwKKyAgICAgICAgc291cmNlSWQsIGRlc3RJZCwgaW50ZXJuYWxG
b3JtYXQsIGRlc3RUeXBlLCB1bnBhY2tGbGlwWSwgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAg
ICAgICAgdW5wYWNrVW5tdWx0aXBseUFscGhhKTsKKworICAgIENvbnRleHQgKmNvbnRleHQgPSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAg
IGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRl
Q29weVRleHR1cmVDSFJPTUlVTShjb250ZXh0LCBzb3VyY2VJZCwgZGVzdElkLCBpbnRlcm5hbEZv
cm1hdCwgZGVzdFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVucGFja0ZsaXBZLCB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnBhY2tVbm11bHRpcGx5QWxwaGEpKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb250ZXh0LT5jb3B5
VGV4dHVyZUNIUk9NSVVNKHNvdXJjZUlkLCBkZXN0SWQsIGludGVybmFsRm9ybWF0LCBkZXN0VHlw
ZSwgdW5wYWNrRmxpcFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5w
YWNrUHJlbXVsdGlwbHlBbHBoYSwgdW5wYWNrVW5tdWx0aXBseUFscGhhKTsKKyAgICB9Cit9CisK
K0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIENvcHlTdWJUZXh0dXJlQ0hST01JVU0oR0x1
aW50IHNvdXJjZUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgZGVzdElkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFja0ZsaXBZLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
dW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFja1VubXVsdGlwbHlBbHBoYSkKK3sK
KyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQgc291cmNlSWQgPSAldSwgR0x1aW50IGRlc3RJ
ZCA9ICV1LCAsIEdMYm9vbGVhbiB1bnBhY2tGbGlwWSA9ICV1LCBHTGludCB4b2Zmc2V0ID0gIgor
ICAgICAgICAiJWQsIEdMaW50IHlvZmZzZXQgPSAlZCwgR0xpbnQgeCA9ICVkLCBHTGludCB5ID0g
JWQsIEdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAiCisgICAgICAgICIlZCwg
R0xib29sZWFuIHVucGFja1ByZW11bHRpcGx5QWxwaGEgPSAldSwgR0xib29sZWFuIHVucGFja1Vu
bXVsdGlwbHlBbHBoYSA9ICV1KSIsCisgICAgICAgIHNvdXJjZUlkLCBkZXN0SWQsIHhvZmZzZXQs
IHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIHVucGFja0ZsaXBZLAorICAgICAgICB1bnBh
Y2tQcmVtdWx0aXBseUFscGhhLCB1bnBhY2tVbm11bHRpcGx5QWxwaGEpOworCisgICAgQ29udGV4
dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQor
ICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmCisgICAgICAg
ICAgICAhVmFsaWRhdGVDb3B5U3ViVGV4dHVyZUNIUk9NSVVNKGNvbnRleHQsIHNvdXJjZUlkLCBk
ZXN0SWQsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQsIHVucGFja0ZsaXBZLCB1bnBhY2tQcmVt
dWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnBhY2tVbm11bHRpcGx5QWxwaGEpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBjb250ZXh0LT5jb3B5U3ViVGV4dHVyZUNIUk9NSVVNKHNv
dXJjZUlkLCBkZXN0SWQsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5wYWNrRmxpcFksIHVucGFj
a1ByZW11bHRpcGx5QWxwaGEsIHVucGFja1VubXVsdGlwbHlBbHBoYSk7CisgICAgfQorfQorCitB
TkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBDb21wcmVzc2VkQ29weVRleHR1cmVDSFJPTUlV
TShHTHVpbnQgc291cmNlSWQsIEdMdWludCBkZXN0SWQpCit7CisgICAgRVZFTlQoIihHTHVpbnQg
c291cmNlSWQgPSAldSwgR0x1aW50IGRlc3RJZCA9ICV1KSIsIHNvdXJjZUlkLCBkZXN0SWQpOwor
CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlm
IChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
ICYmCisgICAgICAgICAgICAhVmFsaWRhdGVDb21wcmVzc2VkQ29weVRleHR1cmVDSFJPTUlVTShj
b250ZXh0LCBzb3VyY2VJZCwgZGVzdElkKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgY29udGV4dC0+Y29tcHJlc3NlZENvcHlUZXh0dXJlQ0hS
T01JVU0oc291cmNlSWQsIGRlc3RJZCk7CisgICAgfQorfQorCitHTF9BUElDQUxMIEdMYm9vbGVh
biBHTF9BUElFTlRSWSBFbmFibGVFeHRlbnNpb25BTkdMRShjb25zdCBHTGNoYXIgKm5hbWUpCit7
CisgICAgRVZFTlQoIihjb25zdCBHTGNoYXIgKm5hbWUgPSAlcCkiLCBuYW1lKTsKKworICAgIENv
bnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4
dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFs
aWRhdGVFbmFibGVFeHRlbnNpb25BTkdMRShjb250ZXh0LCBuYW1lKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNv
bnRleHQtPmVuYWJsZUV4dGVuc2lvbihuYW1lKSA/IEdMX1RSVUUgOiBHTF9GQUxTRTsKKyAgICB9
CisKKyAgICByZXR1cm4gR0xfRkFMU0U7Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVO
VFJZIEdldEJvb2xlYW52Um9idXN0QU5HTEUoR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xib29sZWFuICpwYXJhbXMpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0xl
bnVtIHBuYW1lID0gMHglWCwgR0xzaXplaSBidWZzaXplID0gJWQsIEdMc2l6ZWkqIGxlbmd0aCA9
IDB4JTAuOHAsIEdMYm9vbGVhbiogcGFyYW1zICIKKyAgICAgICAgIj0gMHglMC44cCkiLAorICAg
ICAgICBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOworCisgICAgQ29udGV4dCAqY29u
dGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsK
KyAgICAgICAgR0xlbnVtIG5hdGl2ZVR5cGU7CisgICAgICAgIHVuc2lnbmVkIGludCBudW1QYXJh
bXMgPSAwOworICAgICAgICBpZiAoIVZhbGlkYXRlUm9idXN0U3RhdGVRdWVyeShjb250ZXh0LCBw
bmFtZSwgYnVmU2l6ZSwgJm5hdGl2ZVR5cGUsICZudW1QYXJhbXMpKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAobmF0aXZlVHlwZSA9PSBH
TF9CT09MKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRCb29sZWFudihwbmFt
ZSwgcGFyYW1zKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAg
ICAgIENhc3RTdGF0ZVZhbHVlcyhjb250ZXh0LCBuYXRpdmVUeXBlLCBwbmFtZSwgbnVtUGFyYW1z
LCBwYXJhbXMpOworICAgICAgICB9CisKKyAgICAgICAgU2V0Um9idXN0TGVuZ3RoUGFyYW0obGVu
Z3RoLCBudW1QYXJhbXMpOworICAgIH0KK30KKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5U
UlkgR2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3Ro
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCAqcGFyYW1zKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4
JVgsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIsIHRhcmdl
dCwgcG5hbWUsCisgICAgICAgICAgcGFyYW1zKTsKKworICAgIENvbnRleHQgKmNvbnRleHQgPSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAg
IEdMc2l6ZWkgbnVtUGFyYW1zID0gMDsKKyAgICAgICAgaWYgKCFWYWxpZGF0ZUdldEJ1ZmZlclBh
cmFtZXRlcml2Um9idXN0QU5HTEUoY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgJm51
bVBhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGFyYW1zKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgQnVmZmVyICpidWZmZXIgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VGFy
Z2V0QnVmZmVyKHRhcmdldCk7CisgICAgICAgIFF1ZXJ5QnVmZmVyUGFyYW1ldGVyaXYoYnVmZmVy
LCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgU2V0Um9idXN0TGVuZ3RoUGFyYW0obGVuZ3RoLCBu
dW1QYXJhbXMpOworICAgIH0KK30KKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0
RmxvYXR2Um9idXN0QU5HTEUoR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9h
dCAqcGFyYW1zKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdMZW51bSBwbmFtZSA9IDB4JVgs
IEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTHNpemVpKiBsZW5ndGggPSAweCUwLjhwLCBHTGZsb2F0
KiBwYXJhbXMgPSAiCisgICAgICAgICIweCUwLjhwKSIsCisgICAgICAgIHBuYW1lLCBidWZTaXpl
LCBsZW5ndGgsIHBhcmFtcyk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBHTGVudW0gbmF0
aXZlVHlwZTsKKyAgICAgICAgdW5zaWduZWQgaW50IG51bVBhcmFtcyA9IDA7CisgICAgICAgIGlm
ICghVmFsaWRhdGVSb2J1c3RTdGF0ZVF1ZXJ5KGNvbnRleHQsIHBuYW1lLCBidWZTaXplLCAmbmF0
aXZlVHlwZSwgJm51bVBhcmFtcykpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChuYXRpdmVUeXBlID09IEdMX0ZMT0FUKQorICAgICAgICB7
CisgICAgICAgICAgICBjb250ZXh0LT5nZXRGbG9hdHYocG5hbWUsIHBhcmFtcyk7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBDYXN0U3RhdGVWYWx1ZXMo
Y29udGV4dCwgbmF0aXZlVHlwZSwgcG5hbWUsIG51bVBhcmFtcywgcGFyYW1zKTsKKyAgICAgICAg
fQorCisgICAgICAgIFNldFJvYnVzdExlbmd0aFBhcmFtKGxlbmd0aCwgbnVtUGFyYW1zKTsKKyAg
ICB9Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJh
bXMpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMZW51
bSBhdHRhY2htZW50ID0gMHglWCwgR0xlbnVtIHBuYW1lID0gMHglWCwgIEdMc2l6ZWkgYnVmc2l6
ZSA9ICIKKyAgICAgICAgIiVkLCBHTHNpemVpKiBsZW5ndGggPSAweCUwLjhwLCBHTGludCogcGFy
YW1zID0gMHglMC44cCkiLAorICAgICAgICB0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCBidWZT
aXplLCBsZW5ndGgsIHBhcmFtcyk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBHTHNpemVp
IG51bVBhcmFtcyA9IDA7CisgICAgICAgIGlmICghVmFsaWRhdGVHZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcG5hbWUsIGJ1ZlNpemUsICZudW1QYXJhbXMpKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlciAq
ZnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VGFyZ2V0RnJhbWVidWZmZXIo
dGFyZ2V0KTsKKyAgICAgICAgUXVlcnlGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdihm
cmFtZWJ1ZmZlciwgYXR0YWNobWVudCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIFNldFJvYnVz
dExlbmd0aFBhcmFtKGxlbmd0aCwgbnVtUGFyYW1zKTsKKyAgICB9Cit9CisKK0FOR0xFX0VYUE9S
VCB2b2lkIEdMX0FQSUVOVFJZIEdldEludGVnZXJ2Um9idXN0QU5HTEUoR0xlbnVtIHBuYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKmRhdGEpCit7CisgICAgRVZFTlQoCisgICAg
ICAgICIoR0xlbnVtIHBuYW1lID0gMHglWCwgR0xzaXplaSBidWZzaXplID0gJWQsIEdMc2l6ZWkq
IGxlbmd0aCA9IDB4JTAuOHAsIEdMaW50KiBwYXJhbXMgPSAiCisgICAgICAgICIweCUwLjhwKSIs
CisgICAgICAgIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIGRhdGEpOworCisgICAgQ29udGV4dCAq
Y29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAg
IHsKKyAgICAgICAgR0xlbnVtIG5hdGl2ZVR5cGU7CisgICAgICAgIHVuc2lnbmVkIGludCBudW1Q
YXJhbXMgPSAwOworICAgICAgICBpZiAoIVZhbGlkYXRlUm9idXN0U3RhdGVRdWVyeShjb250ZXh0
LCBwbmFtZSwgYnVmU2l6ZSwgJm5hdGl2ZVR5cGUsICZudW1QYXJhbXMpKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAobmF0aXZlVHlwZSA9
PSBHTF9JTlQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldEludGVnZXJ2KHBu
YW1lLCBkYXRhKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAg
ICAgIENhc3RTdGF0ZVZhbHVlcyhjb250ZXh0LCBuYXRpdmVUeXBlLCBwbmFtZSwgbnVtUGFyYW1z
LCBkYXRhKTsKKyAgICAgICAgfQorICAgICAgICBTZXRSb2J1c3RMZW5ndGhQYXJhbShsZW5ndGgs
IG51bVBhcmFtcyk7CisgICAgfQorfQorCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBH
ZXRQcm9ncmFtaXZSb2J1c3RBTkdMRShHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
YnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCit7CisgICAgRVZFTlQoCisgICAg
ICAgICIoR0x1aW50IHByb2dyYW0gPSAlZCwgR0xlbnVtIHBuYW1lID0gJWQsIEdMc2l6ZWkgYnVm
c2l6ZSA9ICVkLCBHTHNpemVpKiBsZW5ndGggPSAweCUwLjhwLCAiCisgICAgICAgICJHTGludCog
cGFyYW1zID0gMHglMC44cCkiLAorICAgICAgICBwcm9ncmFtLCBwbmFtZSwgYnVmU2l6ZSwgbGVu
Z3RoLCBwYXJhbXMpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgR0xzaXplaSBudW1QYXJh
bXMgPSAwOworICAgICAgICBpZiAoIVZhbGlkYXRlR2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUoY29u
dGV4dCwgcHJvZ3JhbSwgcG5hbWUsIGJ1ZlNpemUsICZudW1QYXJhbXMpKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBQcm9ncmFtICpwcm9ncmFt
T2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgUXVlcnlQcm9n
cmFtaXYocHJvZ3JhbU9iamVjdCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIFNldFJvYnVzdExl
bmd0aFBhcmFtKGxlbmd0aCwgbnVtUGFyYW1zKTsKKyAgICB9Cit9CisKK0FOR0xFX0VYUE9SVCB2
b2lkIEdMX0FQSUVOVFJZIEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0xl
bnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
KnBhcmFtcykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTGVudW0gdGFyZ2V0ID0gMHglWCwg
R0xlbnVtIHBuYW1lID0gMHglWCwgR0xzaXplaSBidWZzaXplID0gJWQsIEdMc2l6ZWkqIGxlbmd0
aCA9ICIKKyAgICAgICAgIjB4JTAuOHAsIEdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIsCisgICAg
ICAgIHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKKworICAgIENvbnRl
eHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkK
KyAgICB7CisgICAgICAgIEdMc2l6ZWkgbnVtUGFyYW1zID0gMDsKKyAgICAgICAgaWYgKCFWYWxp
ZGF0ZUdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoY29udGV4dCwgdGFyZ2V0
LCBwbmFtZSwgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJm51bVBhcmFtcywgcGFyYW1zKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgUmVuZGVyYnVmZmVyICpyZW5k
ZXJidWZmZXIgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0Q3VycmVudFJlbmRlcmJ1ZmZlcigp
OworICAgICAgICBRdWVyeVJlbmRlcmJ1ZmZlcml2KHJlbmRlcmJ1ZmZlciwgcG5hbWUsIHBhcmFt
cyk7CisgICAgICAgIFNldFJvYnVzdExlbmd0aFBhcmFtKGxlbmd0aCwgbnVtUGFyYW1zKTsKKyAg
ICB9Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZCitHZXRTaGFkZXJpdlJvYnVz
dEFOR0xFKEdMdWludCBzaGFkZXIsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNp
emVpICpsZW5ndGgsIEdMaW50ICpwYXJhbXMpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0x1
aW50IHNoYWRlciA9ICVkLCBHTGVudW0gcG5hbWUgPSAlZCwgR0xzaXplaSBidWZzaXplID0gJWQs
IEdMc2l6ZWkqIGxlbmd0aCA9IDB4JTAuOHAsICIKKyAgICAgICAgIkdMaW50KiBwYXJhbXMgPSAw
eCUwLjhwKSIsCisgICAgICAgIHNoYWRlciwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1z
KTsKKworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAg
ICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIEdMc2l6ZWkgbnVtUGFyYW1zID0gMDsKKyAg
ICAgICAgaWYgKCFWYWxpZGF0ZUdldFNoYWRlcml2Um9idXN0QU5HTEUoY29udGV4dCwgc2hhZGVy
LCBwbmFtZSwgYnVmU2l6ZSwgJm51bVBhcmFtcywgcGFyYW1zKSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgU2hhZGVyICpzaGFkZXJPYmplY3Qg
PSBjb250ZXh0LT5nZXRTaGFkZXIoc2hhZGVyKTsKKyAgICAgICAgUXVlcnlTaGFkZXJpdihzaGFk
ZXJPYmplY3QsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBTZXRSb2J1c3RMZW5ndGhQYXJhbShs
ZW5ndGgsIG51bVBhcmFtcyk7CisgICAgfQorfQorCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElF
TlRSWSBHZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdMZW51bSB0YXJnZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgKnBhcmFtcykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTGVudW0gdGFyZ2V0ID0gMHgl
WCwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xzaXplaSBidWZzaXplID0gJWQsIEdMc2l6ZWkqIGxl
bmd0aCA9ICIKKyAgICAgICAgIjB4JTAuOHAsIEdMZmxvYXQqIHBhcmFtcyA9IDB4JTAuOHApIiwK
KyAgICAgICAgdGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOworCisgICAg
Q29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250
ZXh0KQorICAgIHsKKyAgICAgICAgR0xzaXplaSBudW1QYXJhbXMgPSAwOworICAgICAgICBpZiAo
IVZhbGlkYXRlR2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShjb250ZXh0LCB0YXJnZXQsIHBu
YW1lLCBidWZTaXplLCAmbnVtUGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwYXJhbXMpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBUZXh0dXJlICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0
VGFyZ2V0VGV4dHVyZSh0YXJnZXQpOworICAgICAgICBRdWVyeVRleFBhcmFtZXRlcmZ2KHRleHR1
cmUsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBTZXRSb2J1c3RMZW5ndGhQYXJhbShsZW5ndGgs
IG51bVBhcmFtcyk7CisgICAgfQorfQorCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBH
ZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJh
bXMpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMZW51
bSBwbmFtZSA9IDB4JVgsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTHNpemVpKiBsZW5ndGggPSAi
CisgICAgICAgICIweCUwLjhwLCBHTGZsb2F0KiBwYXJhbXMgPSAweCUwLjhwKSIsCisgICAgICAg
IHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKKworICAgIENvbnRleHQg
KmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAg
ICB7CisgICAgICAgIEdMc2l6ZWkgbnVtUGFyYW1zID0gMDsKKyAgICAgICAgaWYgKCFWYWxpZGF0
ZUdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgYnVm
U2l6ZSwgJm51bVBhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyYW1zKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgVGV4dHVyZSAqdGV4dHVyZSA9IGNvbnRleHQtPmdldFRhcmdldFRl
eHR1cmUodGFyZ2V0KTsKKyAgICAgICAgUXVlcnlUZXhQYXJhbWV0ZXJpdih0ZXh0dXJlLCBwbmFt
ZSwgcGFyYW1zKTsKKyAgICAgICAgU2V0Um9idXN0TGVuZ3RoUGFyYW0obGVuZ3RoLCBudW1QYXJh
bXMpOworICAgIH0KK30KKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0VW5pZm9y
bWZ2Um9idXN0QU5HTEUoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAg
IihHTHVpbnQgcHJvZ3JhbSA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGJ1ZnNp
emUgPSAlZCwgR0xzaXplaSogbGVuZ3RoID0gIgorICAgICAgICAiMHglMC44cCwgR0xmbG9hdCog
cGFyYW1zID0gMHglMC44cCkiLAorICAgICAgICBwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwg
bGVuZ3RoLCBwYXJhbXMpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgR0xzaXplaSB3cml0
ZUxlbmd0aCA9IDA7CisgICAgICAgIGlmICghVmFsaWRhdGVHZXRVbmlmb3JtZnZSb2J1c3RBTkdM
RShjb250ZXh0LCBwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgJndyaXRlTGVuZ3RoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zKSkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgUHJvZ3JhbSAq
cHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAgIEFT
U0VSVChwcm9ncmFtT2JqZWN0KTsKKworICAgICAgICBwcm9ncmFtT2JqZWN0LT5nZXRVbmlmb3Jt
ZnYobG9jYXRpb24sIHBhcmFtcyk7CisgICAgICAgIFNldFJvYnVzdExlbmd0aFBhcmFtKGxlbmd0
aCwgd3JpdGVMZW5ndGgpOworICAgIH0KK30KKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5U
UlkgR2V0VW5pZm9ybWl2Um9idXN0QU5HTEUoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCit7CisgICAgRVZFTlQo
CisgICAgICAgICIoR0x1aW50IHByb2dyYW0gPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xz
aXplaSBidWZzaXplID0gJWQsIEdMc2l6ZWkqIGxlbmd0aCA9ICIKKyAgICAgICAgIjB4JTAuOHAs
IEdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIsCisgICAgICAgIHByb2dyYW0sIGxvY2F0aW9uLCBi
dWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBHTHNp
emVpIHdyaXRlTGVuZ3RoID0gMDsKKyAgICAgICAgaWYgKCFWYWxpZGF0ZUdldFVuaWZvcm1pdlJv
YnVzdEFOR0xFKGNvbnRleHQsIHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCAmd3JpdGVMZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMp
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBQ
cm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKKyAg
ICAgICAgQVNTRVJUKHByb2dyYW1PYmplY3QpOworCisgICAgICAgIHByb2dyYW1PYmplY3QtPmdl
dFVuaWZvcm1pdihsb2NhdGlvbiwgcGFyYW1zKTsKKyAgICAgICAgU2V0Um9idXN0TGVuZ3RoUGFy
YW0obGVuZ3RoLCB3cml0ZUxlbmd0aCk7CisgICAgfQorfQorCitBTkdMRV9FWFBPUlQgdm9pZCBH
TF9BUElFTlRSWSBHZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKEdMdWludCBpbmRleCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xmbG9hdCAqcGFyYW1zKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdMdWludCBpbmRleCA9
ICVkLCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTHNpemVpIGJ1ZnNpemUgPSAlZCwgR0xzaXplaSog
bGVuZ3RoID0gMHglMC44cCwgIgorICAgICAgICAiR0xmbG9hdCogcGFyYW1zID0gMHglMC44cCki
LAorICAgICAgICBpbmRleCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKKworICAg
IENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29u
dGV4dCkKKyAgICB7CisgICAgICAgIEdMc2l6ZWkgd3JpdGVMZW5ndGggPSAwOworICAgICAgICBp
ZiAoIVZhbGlkYXRlR2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShjb250ZXh0LCBpbmRleCwg
cG5hbWUsIGJ1ZlNpemUsICZ3cml0ZUxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zKSkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgVmVydGV4QXR0cmliQ3VycmVudFZh
bHVlRGF0YSAmY3VycmVudFZhbHVlcyA9CisgICAgICAgICAgICBjb250ZXh0LT5nZXRHTFN0YXRl
KCkuZ2V0VmVydGV4QXR0cmliQ3VycmVudFZhbHVlKGluZGV4KTsKKyAgICAgICAgY29uc3QgVmVy
dGV4QXR0cmlidXRlICZhdHRyaWIgPQorICAgICAgICAgICAgY29udGV4dC0+Z2V0R0xTdGF0ZSgp
LmdldFZlcnRleEFycmF5KCktPmdldFZlcnRleEF0dHJpYnV0ZShpbmRleCk7CisgICAgICAgIFF1
ZXJ5VmVydGV4QXR0cmliZnYoYXR0cmliLCBjdXJyZW50VmFsdWVzLCBwbmFtZSwgcGFyYW1zKTsK
KyAgICAgICAgU2V0Um9idXN0TGVuZ3RoUGFyYW0obGVuZ3RoLCB3cml0ZUxlbmd0aCk7CisgICAg
fQorfQorCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRWZXJ0ZXhBdHRyaWJpdlJv
YnVzdEFOR0xFKEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNp
emUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBFVkVOVCgK
KyAgICAgICAgIihHTHVpbnQgaW5kZXggPSAlZCwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xzaXpl
aSBidWZzaXplID0gJWQsIEdMc2l6ZWkqIGxlbmd0aCA9IDB4JTAuOHAsICIKKyAgICAgICAgIkdM
aW50KiBwYXJhbXMgPSAweCUwLjhwKSIsCisgICAgICAgIGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwg
bGVuZ3RoLCBwYXJhbXMpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgR0xzaXplaSB3cml0
ZUxlbmd0aCA9IDA7CisgICAgICAgIGlmICghVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJpdlJvYnVz
dEFOR0xFKGNvbnRleHQsIGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwgJndyaXRlTGVuZ3RoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMpKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb25z
dCBWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZjdXJyZW50VmFsdWVzID0KKyAgICAgICAg
ICAgIGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWUoaW5k
ZXgpOworICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiA9CisgICAgICAgICAg
ICBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VmVydGV4QXJyYXkoKS0+Z2V0VmVydGV4QXR0cmli
dXRlKGluZGV4KTsKKyAgICAgICAgUXVlcnlWZXJ0ZXhBdHRyaWJpdihhdHRyaWIsIGN1cnJlbnRW
YWx1ZXMsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBTZXRSb2J1c3RMZW5ndGhQYXJhbShsZW5n
dGgsIHdyaXRlTGVuZ3RoKTsKKyAgICB9Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVO
VFJZIEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoR0x1aW50IGluZGV4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqcG9pbnRlcikKK3sKKyAgICBFVkVOVCgKKyAg
ICAgICAgIihHTHVpbnQgaW5kZXggPSAlZCwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xzaXplaSBi
dWZzaXplID0gJWQsIEdMc2l6ZWkqIGxlbmd0aCA9IDB4JTAuOHAsICIKKyAgICAgICAgIkdMdm9p
ZCoqIHBvaW50ZXIgPSAweCUwLjhwKSIsCisgICAgICAgIGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwg
bGVuZ3RoLCBwb2ludGVyKTsKKworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIEdMc2l6ZWkgd3Jp
dGVMZW5ndGggPSAwOworICAgICAgICBpZiAoIVZhbGlkYXRlR2V0VmVydGV4QXR0cmliUG9pbnRl
cnZSb2J1c3RBTkdMRShjb250ZXh0LCBpbmRleCwgcG5hbWUsIGJ1ZlNpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3cml0ZUxlbmd0
aCwgcG9pbnRlcikpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliID0KKyAgICAgICAgICAgIGNv
bnRleHQtPmdldEdMU3RhdGUoKS5nZXRWZXJ0ZXhBcnJheSgpLT5nZXRWZXJ0ZXhBdHRyaWJ1dGUo
aW5kZXgpOworICAgICAgICBRdWVyeVZlcnRleEF0dHJpYlBvaW50ZXJ2KGF0dHJpYiwgcG5hbWUs
IHBvaW50ZXIpOworICAgICAgICBTZXRSb2J1c3RMZW5ndGhQYXJhbShsZW5ndGgsIHdyaXRlTGVu
Z3RoKTsKKyAgICB9Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFJlYWRQaXhl
bHNSb2J1c3RBTkdMRShHTGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9y
bWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcGl4ZWxzKQoreworICAg
IEVWRU5UKAorICAgICAgICAiKEdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVpIHdp
ZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsICIKKyAgICAgICAgIkdMZW51bSBmb3JtYXQg
PSAweCVYLCBHTGVudW0gdHlwZSA9IDB4JVgsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTHNpemVp
KiBsZW5ndGggPSAiCisgICAgICAgICIweCUwLjhwLCBHTHZvaWQqIHBpeGVscyA9IDB4JTAuOHAp
IiwKKyAgICAgICAgeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBs
ZW5ndGgsIHBpeGVscyk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBHTHNpemVpIHdyaXRl
TGVuZ3RoID0gMDsKKyAgICAgICAgaWYgKCFWYWxpZGF0ZVJlYWRQaXhlbHNSb2J1c3RBTkdMRShj
b250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJndyaXRlTGVuZ3RoLCBwaXhl
bHMpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBjb250ZXh0LT5yZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
cGl4ZWxzKTsKKworICAgICAgICBTZXRSb2J1c3RMZW5ndGhQYXJhbShsZW5ndGgsIHdyaXRlTGVu
Z3RoKTsKKyAgICB9Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFRleEltYWdl
MkRSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGludGVybmFsZm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgYm9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBi
dWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHZvaWQgKnBpeGVscykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTGVudW0g
dGFyZ2V0ID0gMHglWCwgR0xpbnQgbGV2ZWwgPSAlZCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQgPSAl
ZCwgR0xzaXplaSB3aWR0aCA9ICVkLCAiCisgICAgICAgICJHTHNpemVpIGhlaWdodCA9ICVkLCBH
TGludCBib3JkZXIgPSAlZCwgR0xlbnVtIGZvcm1hdCA9IDB4JVgsIEdMZW51bSB0eXBlID0gMHgl
WCwgR0xzaXplaSAiCisgICAgICAgICJidWZTaXplID0gJWQsIGNvbnN0IEdMdm9pZCogcGl4ZWxz
ID0gMHglMC44cCkiLAorICAgICAgICB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIHBpeGVscyk7CisKKyAg
ICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNv
bnRleHQpCisgICAgeworICAgICAgICBpZiAoIVZhbGlkYXRlVGV4SW1hZ2UyRFJvYnVzdChjb250
ZXh0LCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIHR5cGUsIGJ1
ZlNpemUsIHBpeGVscykpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIGNvbnRleHQtPnRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBpeGVscyk7CisgICAgfQorfQorCitBTkdMRV9FWFBPUlQgdm9pZCBH
TF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCit7CisgICAg
RVZFTlQoCisgICAgICAgICIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMZW51bSBwbmFtZSA9IDB4
JVgsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTGZsb2F0KiBwYXJhbXMgPSAiCisgICAgICAgICIw
eCUwLjhwKSIsCisgICAgICAgIHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcyk7CisKKyAg
ICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNv
bnRleHQpCisgICAgeworICAgICAgICBpZiAoIVZhbGlkYXRlVGV4UGFyYW1ldGVyZnZSb2J1c3RB
TkdMRShjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBwYXJhbXMpKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBUZXh0dXJlICp0ZXh0
dXJlID0gY29udGV4dC0+Z2V0VGFyZ2V0VGV4dHVyZSh0YXJnZXQpOworICAgICAgICBTZXRUZXhQ
YXJhbWV0ZXJmdih0ZXh0dXJlLCBwbmFtZSwgcGFyYW1zKTsKKyAgICB9Cit9CisKK0FOR0xFX0VY
UE9SVCB2b2lkIEdMX0FQSUVOVFJZIFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0xlbnVtIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMp
Cit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMZW51bSBw
bmFtZSA9IDB4JVgsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTGZsb2F0KiBwYXJhbXMgPSAiCisg
ICAgICAgICIweCUwLjhwKSIsCisgICAgICAgIHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFt
cyk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Cisg
ICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIVZhbGlkYXRlVGV4UGFyYW1ldGVy
aXZSb2J1c3RBTkdMRShjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBwYXJhbXMpKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBUZXh0
dXJlICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGFyZ2V0VGV4dHVyZSh0YXJnZXQpOworICAgICAg
ICBTZXRUZXhQYXJhbWV0ZXJpdih0ZXh0dXJlLCBwbmFtZSwgcGFyYW1zKTsKKyAgICB9Cit9CisK
K0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShH
TGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeW9mZnNldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHZvaWQgKnBpeGVscykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihH
TGVudW0gdGFyZ2V0ID0gMHglWCwgR0xpbnQgbGV2ZWwgPSAlZCwgR0xpbnQgeG9mZnNldCA9ICVk
LCBHTGludCB5b2Zmc2V0ID0gJWQsICIKKyAgICAgICAgIkdMc2l6ZWkgd2lkdGggPSAlZCwgR0xz
aXplaSBoZWlnaHQgPSAlZCwgR0xlbnVtIGZvcm1hdCA9IDB4JVgsIEdMZW51bSB0eXBlID0gMHgl
WCwgIgorICAgICAgICAiR0xzaXplaSBidWZzaXplID0gJWQsIGNvbnN0IEdMdm9pZCogcGl4ZWxz
ID0gMHglMC44cCkiLAorICAgICAgICB0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIHBpeGVscyk7CisKKyAgICBDb250
ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQp
CisgICAgeworICAgICAgICBpZiAoIVZhbGlkYXRlVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKGNv
bnRleHQsIHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCBidWZTaXplLCBwaXhlbHMpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBjb250ZXh0LT50ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhv
ZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwaXhlbHMpOworICAgIH0KK30KKworQU5HTEVfRVhQT1JUIHZv
aWQgR0xfQVBJRU5UUlkgVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2
ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRlcHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGJvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwaXhlbHMp
Cit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMaW50IGxl
dmVsID0gJWQsIEdMaW50IGludGVybmFsZm9ybWF0ID0gJWQsIEdMc2l6ZWkgd2lkdGggPSAlZCwg
IgorICAgICAgICAiR0xzaXplaSBoZWlnaHQgPSAlZCwgR0xzaXplaSBkZXB0aCA9ICVkLCBHTGlu
dCBib3JkZXIgPSAlZCwgR0xlbnVtIGZvcm1hdCA9IDB4JVgsICIKKyAgICAgICAgIkdMZW51bSB0
eXBlID0gMHglWCwgR0xzaXplaSBidWZzaXplID0gJWQsIGNvbnN0IEdMdm9pZCogcGl4ZWxzID0g
MHglMC44cCkiLAorICAgICAgICB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBwaXhlbHMpOwor
CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlm
IChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFWYWxpZGF0ZVRleEltYWdlM0RSb2J1c3RB
TkdMRShjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aCwgYm9y
ZGVyLCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIHBpeGVscykpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnRleHQtPnRleEltYWdlM0QodGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIs
IGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLCBwaXhlbHMpOworICAg
IH0KK30KKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgVGV4U3ViSW1hZ2UzRFJvYnVz
dEFOR0xFKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zm
c2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHpvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRl
cHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQg
KnBpeGVscykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTGVudW0gdGFyZ2V0ID0gMHglWCwg
R0xpbnQgbGV2ZWwgPSAlZCwgR0xpbnQgeG9mZnNldCA9ICVkLCBHTGludCB5b2Zmc2V0ID0gJWQs
ICIKKyAgICAgICAgIkdMaW50IHpvZmZzZXQgPSAlZCwgR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNp
emVpIGhlaWdodCA9ICVkLCBHTHNpemVpIGRlcHRoID0gJWQsICIKKyAgICAgICAgIkdMZW51bSBm
b3JtYXQgPSAweCVYLCBHTGVudW0gdHlwZSA9IDB4JVgsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBj
b25zdCBHTHZvaWQqIHBpeGVscyA9ICIKKyAgICAgICAgIjB4JTAuOHApIiwKKyAgICAgICAgdGFy
Z2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVw
dGgsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwKKyAgICAgICAgcGl4ZWxzKTsKKworICAgIENvbnRl
eHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkK
KyAgICB7CisgICAgICAgIGlmICghVmFsaWRhdGVUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoY29u
dGV4dCwgdGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0LCBkZXB0
aCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBwaXhlbHMpKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb250ZXh0LT50ZXhTdWJJbWFnZTNEKHRh
cmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRl
cHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlwZSwgcGl4ZWxz
KTsKKyAgICB9Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZCitHZXRRdWVyeWl2
Um9idXN0QU5HTEUoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUs
IEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAg
IihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xzaXplaSBidWZz
aXplID0gJWQsIEdMc2l6ZWkqIGxlbmd0aCA9ICIKKyAgICAgICAgIjB4JTAuOHAsIEdMaW50KiBw
YXJhbXMgPSAweCUwLjhwKSIsCisgICAgICAgIHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0
aCwgcGFyYW1zKTsKKworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIEdMc2l6ZWkgbnVtUGFyYW1z
ID0gMDsKKyAgICAgICAgaWYgKCFWYWxpZGF0ZUdldFF1ZXJ5aXZSb2J1c3RBTkdMRShjb250ZXh0
LCB0YXJnZXQsIHBuYW1lLCBidWZTaXplLCAmbnVtUGFyYW1zLCBwYXJhbXMpKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb250ZXh0LT5nZXRR
dWVyeWl2KHRhcmdldCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIFNldFJvYnVzdExlbmd0aFBh
cmFtKGxlbmd0aCwgbnVtUGFyYW1zKTsKKyAgICB9Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdM
X0FQSUVOVFJZIEdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0x1aW50IGlkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgKnBhcmFtcykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQgaWQgPSAldSwgR0xl
bnVtIHBuYW1lID0gMHglWCwgR0xzaXplaSBidWZzaXplID0gJWQsIEdMc2l6ZWkqIGxlbmd0aCA9
IDB4JTAuOHAsICIKKyAgICAgICAgIkdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIsCisgICAgICAg
IGlkLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOworCisgICAgQ29udGV4dCAqY29u
dGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsK
KyAgICAgICAgR0xzaXplaSBudW1QYXJhbXMgPSAwOworICAgICAgICBpZiAoIVZhbGlkYXRlR2V0
UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShjb250ZXh0LCBpZCwgcG5hbWUsIGJ1ZlNpemUsICZu
dW1QYXJhbXMsIHBhcmFtcykpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGNvbnRleHQtPmdldFF1ZXJ5T2JqZWN0dWl2KGlkLCBwbmFtZSwgcGFy
YW1zKTsKKyAgICAgICAgU2V0Um9idXN0TGVuZ3RoUGFyYW0obGVuZ3RoLCBudW1QYXJhbXMpOwor
ICAgIH0KK30KKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0QnVmZmVyUG9pbnRl
cnZSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
YnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqcGFyYW1zKQoreworICAgIEVW
RU5UKAorICAgICAgICAiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGVudW0gcG5hbWUgPSAweCVY
LCAgR0xzaXplaSBidWZzaXplID0gJWQsIEdMc2l6ZWkqIGxlbmd0aCA9ICIKKyAgICAgICAgIjB4
JTAuOHAsIEdMdm9pZCoqIHBhcmFtcyA9IDB4JTAuOHApIiwKKyAgICAgICAgdGFyZ2V0LCBwbmFt
ZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAg
R0xzaXplaSBudW1QYXJhbXMgPSAwOworICAgICAgICBpZiAoIVZhbGlkYXRlR2V0QnVmZmVyUG9p
bnRlcnZSb2J1c3RBTkdMRShjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBidWZTaXplLCAmbnVtUGFy
YW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJhbXMpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBjb250ZXh0LT5nZXRCdWZmZXJQb2ludGVydih0YXJnZXQsIHBuYW1lLCBwYXJhbXMpOwor
ICAgICAgICBTZXRSb2J1c3RMZW5ndGhQYXJhbShsZW5ndGgsIG51bVBhcmFtcyk7CisgICAgfQor
fQorCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWQorR2V0SW50ZWdlcmlfdlJvYnVzdEFO
R0xFKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVp
ICpsZW5ndGgsIEdMaW50ICpkYXRhKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdMZW51bSB0
YXJnZXQgPSAweCVYLCBHTHVpbnQgaW5kZXggPSAldSwgR0xzaXplaSBidWZzaXplID0gJWQsIEdM
c2l6ZWkqIGxlbmd0aCA9ICIKKyAgICAgICAgIjB4JTAuOHAsIEdMaW50KiBkYXRhID0gMHglMC44
cCkiLAorICAgICAgICB0YXJnZXQsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIGRhdGEpOworCisg
ICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChj
b250ZXh0KQorICAgIHsKKyAgICAgICAgR0xzaXplaSBudW1QYXJhbXMgPSAwOworICAgICAgICBp
ZiAoIVZhbGlkYXRlR2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKGNvbnRleHQsIHRhcmdldCwgaW5k
ZXgsIGJ1ZlNpemUsICZudW1QYXJhbXMsIGRhdGEpKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb250ZXh0LT5nZXRJbnRlZ2VyaV92KHRhcmdl
dCwgaW5kZXgsIGRhdGEpOworICAgICAgICBTZXRSb2J1c3RMZW5ndGhQYXJhbShsZW5ndGgsIG51
bVBhcmFtcyk7CisgICAgfQorfQorCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRJ
bnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50
ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBFVkVOVCgKKyAg
ICAgICAgIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gMHgl
WCwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xzaXplaSBidWZTaXplICIKKyAgICAgICAgIj0gJWQs
IEdMc2l6ZWkqIGxlbmd0aCA9IDB4JTAuOHAsIEdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIsCisg
ICAgICAgIHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBh
cmFtcyk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7
CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBHTHNpemVpIG51bVBhcmFtcyA9IDA7
CisgICAgICAgIGlmICghVmFsaWRhdGVHZXRJbnRlcm5hbEZvcm1hdGl2Um9idXN0QU5HTEUoY29u
dGV4dCwgdGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgcG5hbWUsIGJ1ZlNpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm51bVBhcmFtcywgcGFy
YW1zKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgY29uc3QgVGV4dHVyZUNhcHMgJmZvcm1hdENhcHMgPSBjb250ZXh0LT5nZXRUZXh0dXJlQ2Fw
cygpLmdldChpbnRlcm5hbGZvcm1hdCk7CisgICAgICAgIFF1ZXJ5SW50ZXJuYWxGb3JtYXRpdihm
b3JtYXRDYXBzLCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKKyAgICAgICAgU2V0Um9idXN0TGVu
Z3RoUGFyYW0obGVuZ3RoLCBudW1QYXJhbXMpOworICAgIH0KK30KKworQU5HTEVfRVhQT1JUIHZv
aWQgR0xfQVBJRU5UUlkgR2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0x1aW50IGluZGV4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVu
Z3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQg
aW5kZXggPSAldSwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xzaXplaSBidWZzaXplID0gJWQsIEdM
c2l6ZWkqIGxlbmd0aCA9IDB4JTAuOHAsICIKKyAgICAgICAgIkdMaW50KiBwYXJhbXMgPSAweCUw
LjhwKSIsCisgICAgICAgIGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwor
CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlm
IChjb250ZXh0KQorICAgIHsKKyAgICAgICAgR0xzaXplaSB3cml0ZUxlbmd0aCA9IDA7CisgICAg
ICAgIGlmICghVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShjb250ZXh0LCBp
bmRleCwgcG5hbWUsIGJ1ZlNpemUsICZ3cml0ZUxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcykpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IFZlcnRleEF0dHJpYkN1
cnJlbnRWYWx1ZURhdGEgJmN1cnJlbnRWYWx1ZXMgPQorICAgICAgICAgICAgY29udGV4dC0+Z2V0
R0xTdGF0ZSgpLmdldFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZShpbmRleCk7CisgICAgICAgIGNv
bnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliID0KKyAgICAgICAgICAgIGNvbnRleHQtPmdldEdM
U3RhdGUoKS5nZXRWZXJ0ZXhBcnJheSgpLT5nZXRWZXJ0ZXhBdHRyaWJ1dGUoaW5kZXgpOworICAg
ICAgICBRdWVyeVZlcnRleEF0dHJpYklpdihhdHRyaWIsIGN1cnJlbnRWYWx1ZXMsIHBuYW1lLCBw
YXJhbXMpOworICAgICAgICBTZXRSb2J1c3RMZW5ndGhQYXJhbShsZW5ndGgsIHdyaXRlTGVuZ3Ro
KTsKKyAgICB9Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldFZlcnRleEF0
dHJpYkl1aXZSb2J1c3RBTkdMRShHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJh
bXMpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0x1aW50IGluZGV4ID0gJXUsIEdMZW51bSBw
bmFtZSA9IDB4JVgsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTHNpemVpKiBsZW5ndGggPSAweCUw
LjhwLCAiCisgICAgICAgICJHTHVpbnQqIHBhcmFtcyA9IDB4JTAuOHApIiwKKyAgICAgICAgaW5k
ZXgsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CisKKyAgICBDb250ZXh0ICpjb250
ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgewor
ICAgICAgICBHTHNpemVpIHdyaXRlTGVuZ3RoID0gMDsKKyAgICAgICAgaWYgKCFWYWxpZGF0ZUdl
dFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShjb250ZXh0LCBpbmRleCwgcG5hbWUsIGJ1ZlNp
emUsICZ3cml0ZUxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJhbXMpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZj
dXJyZW50VmFsdWVzID0KKyAgICAgICAgICAgIGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRWZXJ0
ZXhBdHRyaWJDdXJyZW50VmFsdWUoaW5kZXgpOworICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJ1
dGUgJmF0dHJpYiA9CisgICAgICAgICAgICBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VmVydGV4
QXJyYXkoKS0+Z2V0VmVydGV4QXR0cmlidXRlKGluZGV4KTsKKyAgICAgICAgUXVlcnlWZXJ0ZXhB
dHRyaWJJdWl2KGF0dHJpYiwgY3VycmVudFZhbHVlcywgcG5hbWUsIHBhcmFtcyk7CisgICAgICAg
IFNldFJvYnVzdExlbmd0aFBhcmFtKGxlbmd0aCwgd3JpdGVMZW5ndGgpOworICAgIH0KK30KKwor
QU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdM
dWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50ICpwYXJhbXMpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0x1aW50IHByb2dy
YW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBidWZzaXplID0gJWQsIEdMc2l6
ZWkqIGxlbmd0aCA9ICIKKyAgICAgICAgIjB4JTAuOHAsIEdMdWludCogcGFyYW1zID0gMHglMC44
cCkiLAorICAgICAgICBwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMp
OworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAg
IGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgR0xzaXplaSB3cml0ZUxlbmd0aCA9IDA7Cisg
ICAgICAgIGlmICghVmFsaWRhdGVHZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoY29udGV4dCwgcHJv
Z3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsICZ3cml0ZUxlbmd0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMpKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0
ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgQVNTRVJUKHByb2dyYW1P
YmplY3QpOworCisgICAgICAgIHByb2dyYW1PYmplY3QtPmdldFVuaWZvcm11aXYobG9jYXRpb24s
IHBhcmFtcyk7CisgICAgICAgIFNldFJvYnVzdExlbmd0aFBhcmFtKGxlbmd0aCwgd3JpdGVMZW5n
dGgpOworICAgIH0KK30KKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0QWN0aXZl
VW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRShHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHVuaWZvcm1CbG9ja0luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFy
YW1zKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdMdWludCBwcm9ncmFtID0gJXUsIEdMdWlu
dCB1bmlmb3JtQmxvY2tJbmRleCA9ICV1LCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTHNpemVpIGJ1
ZnNpemUgIgorICAgICAgICAiPSAlZCwgR0xzaXplaSogbGVuZ3RoID0gMHglMC44cCwgR0xpbnQq
IHBhcmFtcyA9IDB4JTAuOHApIiwKKyAgICAgICAgcHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgs
IHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0
ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAg
ICAgICBHTHNpemVpIHdyaXRlTGVuZ3RoID0gMDsKKyAgICAgICAgaWYgKCFWYWxpZGF0ZUdldEFj
dGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUoY29udGV4dCwgcHJvZ3JhbSwgdW5pZm9ybUJs
b2NrSW5kZXgsIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBidWZTaXplLCAmd3JpdGVMZW5ndGgsIHBhcmFtcykpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IFByb2dy
YW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworICAgICAg
ICBRdWVyeUFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW1PYmplY3QsIHVuaWZvcm1CbG9ja0lu
ZGV4LCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgU2V0Um9idXN0TGVuZ3RoUGFyYW0obGVuZ3Ro
LCB3cml0ZUxlbmd0aCk7CisgICAgfQorfQorCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRS
WSBHZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUoR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQ2NCAqZGF0YSkKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihH
TGVudW0gcG5hbWUgPSAweCVYLCBHTHNpemVpIGJ1ZnNpemUgPSAlZCwgR0xzaXplaSogbGVuZ3Ro
ID0gMHglMC44cCwgR0xpbnQ2NCogcGFyYW1zID0gIgorICAgICAgICAiMHglMC44cCkiLAorICAg
ICAgICBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBkYXRhKTsKKworICAgIENvbnRleHQgKmNvbnRl
eHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7Cisg
ICAgICAgIEdMZW51bSBuYXRpdmVUeXBlOworICAgICAgICB1bnNpZ25lZCBpbnQgbnVtUGFyYW1z
ID0gMDsKKyAgICAgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdFN0YXRlUXVlcnkoY29udGV4dCwgcG5h
bWUsIGJ1ZlNpemUsICZuYXRpdmVUeXBlLCAmbnVtUGFyYW1zKSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG5hdGl2ZVR5cGUgPT0gR0xf
SU5UXzY0X0FOR0xFWCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+Z2V0SW50ZWdl
cjY0dihwbmFtZSwgZGF0YSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7Cisg
ICAgICAgICAgICBDYXN0U3RhdGVWYWx1ZXMoY29udGV4dCwgbmF0aXZlVHlwZSwgcG5hbWUsIG51
bVBhcmFtcywgZGF0YSk7CisgICAgICAgIH0KKyAgICAgICAgU2V0Um9idXN0TGVuZ3RoUGFyYW0o
bGVuZ3RoLCBudW1QYXJhbXMpOworICAgIH0KK30KKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJ
RU5UUlkgR2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUoR0xlbnVtIHRhcmdldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBp
bmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50NjQgKmRhdGEp
Cit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMdWludCBp
bmRleCA9ICV1LCBHTHNpemVpIGJ1ZnNpemUgPSAlZCwgR0xzaXplaSogbGVuZ3RoID0gIgorICAg
ICAgICAiMHglMC44cCwgR0xpbnQ2NCogZGF0YSA9IDB4JTAuOHApIiwKKyAgICAgICAgdGFyZ2V0
LCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLCBkYXRhKTsKKworICAgIENvbnRleHQgKmNvbnRleHQg
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAg
ICAgIEdMc2l6ZWkgbnVtUGFyYW1zID0gMDsKKyAgICAgICAgaWYgKCFWYWxpZGF0ZUdldEludGVn
ZXI2NGlfdlJvYnVzdEFOR0xFKGNvbnRleHQsIHRhcmdldCwgaW5kZXgsIGJ1ZlNpemUsICZudW1Q
YXJhbXMsIGRhdGEpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBjb250ZXh0LT5nZXRJbnRlZ2VyNjRpX3YodGFyZ2V0LCBpbmRleCwgZGF0YSk7
CisgICAgICAgIFNldFJvYnVzdExlbmd0aFBhcmFtKGxlbmd0aCwgbnVtUGFyYW1zKTsKKyAgICB9
Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldEJ1ZmZlclBhcmFtZXRlcmk2
NHZSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
NjQgKnBhcmFtcykKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGVudW0g
cG5hbWUgPSAweCVYLCBHTGludDY0KiBwYXJhbXMgPSAweCUwLjhwKSIsIHRhcmdldCwgcG5hbWUs
CisgICAgICAgICAgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOworCisgICAgQ29udGV4dCAqY29u
dGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsK
KyAgICAgICAgR0xzaXplaSBudW1QYXJhbXMgPSAwOworICAgICAgICBpZiAoIVZhbGlkYXRlR2V0
QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIGJ1
ZlNpemUsICZudW1QYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGFyYW1zKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgQnVmZmVyICpidWZmZXIgPSBjb250ZXh0LT5nZXRHTFN0
YXRlKCkuZ2V0VGFyZ2V0QnVmZmVyKHRhcmdldCk7CisgICAgICAgIFF1ZXJ5QnVmZmVyUGFyYW1l
dGVyaTY0dihidWZmZXIsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBTZXRSb2J1c3RMZW5ndGhQ
YXJhbShsZW5ndGgsIG51bVBhcmFtcyk7CisgICAgfQorfQorCitBTkdMRV9FWFBPUlQgdm9pZCBH
TF9BUElFTlRSWSBTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHTHVpbnQgc2FtcGxlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpw
YXJhbSkKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQgc2FtcGxlciA9ICV1LCBHTGVu
dW0gcG5hbWUgPSAweCVYLCBHTHNpemVpIGJ1ZnNpemUgPSAlZCwgY29uc3QgR0xpbnQqIHBhcmFt
cyA9ICIKKyAgICAgICAgIjB4JTAuOHApIiwKKyAgICAgICAgc2FtcGxlciwgcG5hbWUsIGJ1ZlNp
emUsIHBhcmFtKTsKKworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICghVmFsaWRhdGVTYW1w
bGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShjb250ZXh0LCBzYW1wbGVyLCBwbmFtZSwgYnVmU2l6
ZSwgcGFyYW0pKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBjb250ZXh0LT5zYW1wbGVyUGFyYW1ldGVyaXYoc2FtcGxlciwgcG5hbWUsIHBhcmFt
KTsKKyAgICB9Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFNhbXBsZXJQYXJh
bWV0ZXJmdlJvYnVzdEFOR0xFKEdMdWludCBzYW1wbGVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW0pCit7CisgICAgRVZFTlQo
CisgICAgICAgICIoR0x1aW50IHNhbXBsZXIgPSAldSwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xz
aXplaSBidWZzaXplID0gJWQsIGNvbnN0IEdMZmxvYXQqIHBhcmFtcyA9ICIKKyAgICAgICAgIjB4
JTAuOHApIiwKKyAgICAgICAgc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtKTsKKworICAg
IENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29u
dGV4dCkKKyAgICB7CisgICAgICAgIGlmICghVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyZnZSb2J1
c3RBTkdMRShjb250ZXh0LCBzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW0pKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb250ZXh0LT5z
YW1wbGVyUGFyYW1ldGVyZnYoc2FtcGxlciwgcG5hbWUsIHBhcmFtKTsKKyAgICB9Cit9CisKK0FO
R0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKEdMdWludCBzYW1wbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBi
dWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3sK
KyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQgc2FtcGxlciA9ICV1LCBHTGVudW0gcG5hbWUg
PSAweCVYLCBHTHNpemVpIGJ1ZnNpemUgPSAlZCwgR0xzaXplaSogbGVuZ3RoID0gIgorICAgICAg
ICAiMHglMC44cCwgR0xpbnQqIHBhcmFtcyA9IDB4JTAuOHApIiwKKyAgICAgICAgc2FtcGxlciwg
cG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKKworICAgIENvbnRleHQgKmNvbnRleHQg
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAg
ICAgIEdMc2l6ZWkgbnVtUGFyYW1zID0gMDsKKyAgICAgICAgaWYgKCFWYWxpZGF0ZUdldFNhbXBs
ZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKGNvbnRleHQsIHNhbXBsZXIsIHBuYW1lLCBidWZTaXpl
LCAmbnVtUGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyYW1zKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgY29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcml2KHNhbXBsZXIs
IHBuYW1lLCBwYXJhbXMpOworICAgICAgICBTZXRSb2J1c3RMZW5ndGhQYXJhbShsZW5ndGgsIG51
bVBhcmFtcyk7CisgICAgfQorfQorCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRT
YW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHTHVpbnQgc2FtcGxlciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZmxvYXQgKnBhcmFtcykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQg
c2FtcGxlID0gJXVyLCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTHNpemVpIGJ1ZnNpemUgPSAlZCwg
R0xzaXplaSogbGVuZ3RoID0gIgorICAgICAgICAiMHglMC44cCwgR0xmbG9hdCogcGFyYW1zID0g
MHglMC44cCkiLAorICAgICAgICBzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJh
bXMpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwor
ICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgR0xzaXplaSBudW1QYXJhbXMgPSAwOwor
ICAgICAgICBpZiAoIVZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoY29u
dGV4dCwgc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsICZudW1QYXJhbXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMpKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb250ZXh0LT5n
ZXRTYW1wbGVyUGFyYW1ldGVyZnYoc2FtcGxlciwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIFNl
dFJvYnVzdExlbmd0aFBhcmFtKGxlbmd0aCwgbnVtUGFyYW1zKTsKKyAgICB9Cit9CisKK0FOR0xF
X0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50ICpwYXJhbXMpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0xlbnVtIHRhcmdldCA9IDB4
JVgsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTHNpemVpKiBs
ZW5ndGggPSAiCisgICAgICAgICIweCUwLjhwLCBHTGludCogcGFyYW1zID0gMHglMC44cCkiLAor
ICAgICAgICB0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CisgICAgVU5J
TVBMRU1FTlRFRCgpOworfQorCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRQcm9n
cmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
cm9ncmFtSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZT
aXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3sKKyAg
ICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGVudW0gcHJvZ3JhbUlu
dGVyZmFjZSA9IDB4JVgsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMc2l6ZWkgIgorICAgICAgICAi
YnVmc2l6ZSA9ICVkLCBHTHNpemVpKiBsZW5ndGggPSAweCUwLjhwLCBHTGludCogcGFyYW1zID0g
MHglMC44cCkiLAorICAgICAgICBwcm9ncmFtLCBwcm9ncmFtSW50ZXJmYWNlLCBwbmFtZSwgYnVm
U2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKworQU5HTEVf
RVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdMZW51bSB0
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuICpkYXRhKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdMZW51bSB0YXJnZXQgPSAweCVY
LCBHTHVpbnQgaW5kZXggPSAldSwgR0xzaXplaSBidWZzaXplID0gJWQsIEdMc2l6ZWkqIGxlbmd0
aCA9ICIKKyAgICAgICAgIjB4JTAuOHAsIEdMYm9vbGVhbiogZGF0YSA9IDB4JTAuOHApIiwKKyAg
ICAgICAgdGFyZ2V0LCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLCBkYXRhKTsKKyAgICBDb250ZXh0
ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisg
ICAgeworICAgICAgICBHTHNpemVpIG51bVBhcmFtcyA9IDA7CisgICAgICAgIGlmICghVmFsaWRh
dGVHZXRCb29sZWFuaV92Um9idXN0QU5HTEUoY29udGV4dCwgdGFyZ2V0LCBpbmRleCwgYnVmU2l6
ZSwgJm51bVBhcmFtcywgZGF0YSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGNvbnRleHQtPmdldEJvb2xlYW5pX3YodGFyZ2V0LCBpbmRleCwg
ZGF0YSk7CisgICAgICAgIFNldFJvYnVzdExlbmd0aFBhcmFtKGxlbmd0aCwgbnVtUGFyYW1zKTsK
KyAgICB9Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldE11bHRpc2FtcGxl
ZnZSb2J1c3RBTkdMRShHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVm
U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqdmFsKQoreworICAgIEVWRU5UKAor
ICAgICAgICAiKEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMdWludCBpbmRleCA9ICV1LCBHTHNpemVp
IGJ1ZnNpemUgPSAlZCwgR0xzaXplaSogbGVuZ3RoID0gMHglMC44cCwgIgorICAgICAgICAiR0xm
bG9hdCogdmFsID0gMHglMC44cCkiLAorICAgICAgICBwbmFtZSwgaW5kZXgsIGJ1ZlNpemUsIGxl
bmd0aCwgdmFsKTsKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lk
IEdMX0FQSUVOVFJZIEdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHTGVudW0gdGFy
Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpw
YXJhbXMpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdM
aW50IGxldmVsID0gJWQsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVk
LCAiCisgICAgICAgICJHTHNpemVpKiBsZW5ndGggPSAweCUwLjhwLCBHTGludCogcGFyYW1zID0g
MHglMC44cCkiLAorICAgICAgICB0YXJnZXQsIGxldmVsLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3Ro
LCBwYXJhbXMpOworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKworQU5HTEVfRVhQT1JUIHZvaWQg
R0xfQVBJRU5UUlkgR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdMZW51bSB0YXJn
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAq
cGFyYW1zKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBH
TGludCBsZXZlbCA9ICVkLCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTHNpemVpIGJ1ZnNpemUgPSAl
ZCwgIgorICAgICAgICAiR0xzaXplaSogbGVuZ3RoID0gMHglMC44cCwgR0xmbG9hdCogcGFyYW1z
ID0gMHglMC44cCkiLAorICAgICAgICB0YXJnZXQsIGxldmVsLCBwbmFtZSwgYnVmU2l6ZSwgbGVu
Z3RoLCBwYXJhbXMpOworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKworQU5HTEVfRVhQT1JUIHZv
aWQgR0xfQVBJRU5UUlkgR2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdMZW51bSBw
bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZvaWQgKipwYXJhbXMpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0xlbnVtIHBu
YW1lID0gMHglWCwgR0xzaXplaSBidWZzaXplID0gJWQsIEdMc2l6ZWkqIGxlbmd0aCA9IDB4JTAu
OHAsIHZvaWQgKipwYXJhbXMgPSAiCisgICAgICAgICIweCUwLjhwKSIsCisgICAgICAgIHBuYW1l
LCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCitB
TkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBSZWFkblBpeGVsc1JvYnVzdEFOR0xFKEdMaW50
IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEpCit7CisgICAgRVZFTlQoCisgICAg
ICAgICIoR0xpbnQgeCA9ICVkLCBHTGludCB5ID0gJWQsIEdMc2l6ZWkgd2lkdGggPSAlZCwgR0xz
aXplaSBoZWlnaHQgPSAlZCwgIgorICAgICAgICAiR0xlbnVtIGZvcm1hdCA9IDB4JVgsIEdMZW51
bSB0eXBlID0gMHglWCwgR0xzaXplaSBidWZzaXplID0gJWQsIEdMc2l6ZWkqIGxlbmd0aCA9ICIK
KyAgICAgICAgIjB4JTAuOHAsIEdMdm9pZCAqZGF0YSA9IDB4JTAuOHApIiwKKyAgICAgICAgeCwg
eSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIGRhdGEpOwor
CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlm
IChjb250ZXh0KQorICAgIHsKKyAgICAgICAgR0xzaXplaSB3cml0ZUxlbmd0aCA9IDA7CisgICAg
ICAgIGlmICghVmFsaWRhdGVSZWFkblBpeGVsc1JvYnVzdEFOR0xFKGNvbnRleHQsIHgsIHksIHdp
ZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJndyaXRlTGVuZ3RoLCBkYXRhKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29udGV4dC0+cmVhZFBp
eGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEpOworCisgICAgICAg
IFNldFJvYnVzdExlbmd0aFBhcmFtKGxlbmd0aCwgd3JpdGVMZW5ndGgpOworICAgIH0KK30KKwor
QU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdM
dWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xmbG9hdCAqcGFyYW1zKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdMdWludCBwcm9n
cmFtID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTHNp
emVpKiBsZW5ndGggPSAiCisgICAgICAgICIweCUwLjhwLCBHTGZsb2F0KiBwYXJhbXMgPSAweCUw
LjhwKSIsCisgICAgICAgIHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFt
cyk7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElF
TlRSWSBHZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQoreworICAg
IEVWRU5UKAorICAgICAgICAiKEdMdWludCBwcm9ncmFtID0gJWQsIEdMaW50IGxvY2F0aW9uID0g
JWQsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTHNpemVpKiBsZW5ndGggPSAiCisgICAgICAgICIw
eCUwLjhwLCBHTGludCogcGFyYW1zID0gMHglMC44cCkiLAorICAgICAgICBwcm9ncmFtLCBsb2Nh
dGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOworICAgIFVOSU1QTEVNRU5URUQoKTsKK30K
KworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0blVuaWZvcm11aXZSb2J1c3RBTkdM
RShHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgKnBhcmFtcykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVp
bnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGJ1ZnNpemUgPSAl
ZCwgR0xzaXplaSogbGVuZ3RoID0gIgorICAgICAgICAiMHglMC44cCwgR0x1aW50KiBwYXJhbXMg
PSAweCUwLjhwKSIsCisgICAgICAgIHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgs
IHBhcmFtcyk7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCitBTkdMRV9FWFBPUlQgdm9pZCBH
TF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKK3sKKyAg
ICBFVkVOVCgKKyAgICAgICAgIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xlbnVtIHBuYW1lID0g
MHglWCwgR0xzaXplaSBidWZzaXplID0gJWQsIGNvbnN0IEdMaW50ICpwYXJhbXMgPSAiCisgICAg
ICAgICIweCUwLjhwKSIsCisgICAgICAgIHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcyk7
CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRS
WSBUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqcGFyYW1zKQoreworICAgIEVW
RU5UKAorICAgICAgICAiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGVudW0gcG5hbWUgPSAweCVY
LCBHTHNpemVpIGJ1ZnNpemUgPSAlZCwgY29uc3QgR0x1aW50ICpwYXJhbXMgPSAiCisgICAgICAg
ICIweCUwLjhwKSIsCisgICAgICAgIHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcyk7Cisg
ICAgVU5JTVBMRU1FTlRFRCgpOworfQorCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBH
ZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
KnBhcmFtcykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTGVudW0gdGFyZ2V0ID0gMHglWCwg
R0xlbnVtIHBuYW1lID0gMHglWCwgR0xzaXplaSBidWZzaXplID0gJWQsIEdMc2l6ZWkqIGxlbmd0
aCA9ICIKKyAgICAgICAgIjB4JTAuOHAsIEdMaW50ICpwYXJhbXMgPSAweCUwLjhwKSIsCisgICAg
ICAgIHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKKyAgICBVTklNUExF
TUVOVEVEKCk7Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldFRleFBhcmFt
ZXRlckl1aXZSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFy
YW1zKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGVu
dW0gcG5hbWUgPSAweCVYLCBHTHNpemVpIGJ1ZnNpemUgPSAlZCwgR0xzaXplaSogbGVuZ3RoID0g
IgorICAgICAgICAiMHglMC44cCwgR0x1aW50ICpwYXJhbXMgPSAweCUwLjhwKSIsCisgICAgICAg
IHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKKyAgICBVTklNUExFTUVO
VEVEKCk7Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRShHTHVpbnQgc2FtcGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbSkKK3sKKyAgICBFVkVOVCgK
KyAgICAgICAgIihHTHVpbnQgc2FtcGxlciA9ICVkLCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTHNp
emVpIGJ1ZnNpemUgPSAlZCwgY29uc3QgR0xpbnQgKnBhcmFtID0gIgorICAgICAgICAiMHglMC44
cCkiLAorICAgICAgICBzYW1wbGVyLCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW0pOworICAgIFVOSU1Q
TEVNRU5URUQoKTsKK30KKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgU2FtcGxlclBh
cmFtZXRlckl1aXZSb2J1c3RBTkdMRShHTHVpbnQgc2FtcGxlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqcGFyYW0pCit7Cisg
ICAgRVZFTlQoCisgICAgICAgICIoR0x1aW50IHNhbXBsZXIgPSAlZCwgR0xlbnVtIHBuYW1lID0g
MHglWCwgR0xzaXplaSBidWZzaXplID0gJWQsIGNvbnN0IEdMdWludCAqcGFyYW0gPSAiCisgICAg
ICAgICIweCUwLjhwKSIsCisgICAgICAgIHNhbXBsZXIsIHBuYW1lLCBidWZTaXplLCBwYXJhbSk7
CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRS
WSBHZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0x1aW50IHNhbXBsZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
ICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAg
IihHTHVpbnQgc2FtcGxlciA9ICVkLCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTHNpemVpIGJ1ZnNp
emUgPSAlZCwgR0xzaXplaSogbGVuZ3RoID0gIgorICAgICAgICAiMHglMC44cCwgR0xpbnQgKnBh
cmFtcyA9IDB4JTAuOHApIiwKKyAgICAgICAgc2FtcGxlciwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0
aCwgcGFyYW1zKTsKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK0FOR0xFX0VYUE9SVCB2b2lk
IEdMX0FQSUVOVFJZIEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0x1aW50IHNh
bXBsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKQoreworICAg
IEVWRU5UKAorICAgICAgICAiKEdMdWludCBzYW1wbGVyID0gJWQsIEdMZW51bSBwbmFtZSA9IDB4
JVgsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTHNpemVpKiBsZW5ndGggPSAiCisgICAgICAgICIw
eCUwLjhwLCBHTHVpbnQgKnBhcmFtcyA9IDB4JTAuOHApIiwKKyAgICAgICAgc2FtcGxlciwgcG5h
bWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisK
K0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdM
RShHTHVpbnQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
ICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVp
bnQgaWQgPSAlZCwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xzaXplaSBidWZzaXplID0gJWQsIEdM
c2l6ZWkqIGxlbmd0aCA9IDB4JTAuOHAsICIKKyAgICAgICAgIkdMdWludCAqcGFyYW1zID0gMHgl
MC44cCkiLAorICAgICAgICBpZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKKwor
ICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAo
Y29udGV4dCkKKyAgICB7CisgICAgICAgIEdMc2l6ZWkgbnVtUGFyYW1zID0gMDsKKyAgICAgICAg
aWYgKCFWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShjb250ZXh0LCBpZCwgcG5h
bWUsIGJ1ZlNpemUsICZudW1QYXJhbXMsIHBhcmFtcykpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnRleHQtPmdldFF1ZXJ5T2JqZWN0aXYo
aWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBTZXRSb2J1c3RMZW5ndGhQYXJhbShsZW5ndGgs
IG51bVBhcmFtcyk7CisgICAgfQorfQorCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBH
ZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHTHVpbnQgaWQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludDY0ICpw
YXJhbXMpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0x1aW50IGlkID0gJWQsIEdMZW51bSBw
bmFtZSA9IDB4JVgsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTHNpemVpKiBsZW5ndGggPSAweCUw
LjhwLCAiCisgICAgICAgICJHTGludDY0ICpwYXJhbXMgPSAweCUwLjhwKSIsCisgICAgICAgIGlk
LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOworCisgICAgQ29udGV4dCAqY29udGV4
dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAg
ICAgICAgR0xzaXplaSBudW1QYXJhbXMgPSAwOworICAgICAgICBpZiAoIVZhbGlkYXRlR2V0UXVl
cnlPYmplY3RpNjR2Um9idXN0QU5HTEUoY29udGV4dCwgaWQsIHBuYW1lLCBidWZTaXplLCAmbnVt
UGFyYW1zLCBwYXJhbXMpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBjb250ZXh0LT5nZXRRdWVyeU9iamVjdGk2NHYoaWQsIHBuYW1lLCBwYXJh
bXMpOworICAgICAgICBTZXRSb2J1c3RMZW5ndGhQYXJhbShsZW5ndGgsIG51bVBhcmFtcyk7Cisg
ICAgfQorfQorCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRRdWVyeU9iamVjdHVp
NjR2Um9idXN0QU5HTEUoR0x1aW50IGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludDY0ICpwYXJhbXMpCit7
CisgICAgRVZFTlQoCisgICAgICAgICIoR0x1aW50IGlkID0gJWQsIEdMZW51bSBwbmFtZSA9IDB4
JVgsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTHNpemVpKiBsZW5ndGggPSAweCUwLjhwLCAiCisg
ICAgICAgICJHTHVpbnQ2NCAqcGFyYW1zID0gMHglMC44cCkiLAorICAgICAgICBpZCwgcG5hbWUs
IGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKKworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIEdM
c2l6ZWkgbnVtUGFyYW1zID0gMDsKKyAgICAgICAgaWYgKCFWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0
dWk2NHZSb2J1c3RBTkdMRShjb250ZXh0LCBpZCwgcG5hbWUsIGJ1ZlNpemUsICZudW1QYXJhbXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFy
YW1zKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgY29udGV4dC0+Z2V0UXVlcnlPYmplY3R1aTY0dihpZCwgcG5hbWUsIHBhcmFtcyk7CisgICAg
ICAgIFNldFJvYnVzdExlbmd0aFBhcmFtKGxlbmd0aCwgbnVtUGFyYW1zKTsKKyAgICB9Cit9CisK
K30gIC8vIGdsCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2Vu
dHJ5X3BvaW50c19nbGVzXzJfMF9leHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzJfMF9leHQuaAkocmV2aXNp
b24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRy
eV9wb2ludHNfZ2xlc18yXzBfZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw2ICsxNDAsNDU3
IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpICpsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGNoYXIgKmxhYmVsKTsKIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZ
IEdldFBvaW50ZXJ2S0hSKEdMZW51bSBwbmFtZSwgdm9pZCAqKnBhcmFtcyk7Ci19CiAKKy8vIEdM
X0NIUk9NSVVNX2JpbmRfdW5pZm9ybV9sb2NhdGlvbgorQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJ
RU5UUlkgQmluZFVuaWZvcm1Mb2NhdGlvbkNIUk9NSVVNKEdMdWludCBwcm9ncmFtLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSk7CisKKy8vIEdMX0NIUk9NSVVNX2ZyYW1l
YnVmZmVyX21peGVkX3NhbXBsZXMKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIE1hdHJp
eExvYWRmQ0hST01JVU0oR0xlbnVtIG1hdHJpeE1vZGUsIGNvbnN0IEdMZmxvYXQgKm1hdHJpeCk7
CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBNYXRyaXhMb2FkSWRlbnRpdHlDSFJPTUlV
TShHTGVudW0gbWF0cml4TW9kZSk7CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIENv
dmVyYWdlTW9kdWxhdGlvbkNIUk9NSVVNKEdMZW51bSBjb21wb25lbnRzKTsKKworLy8gR0xfQ0hS
T01JVU1fcGF0aF9yZW5kZXJpbmcKK0FOR0xFX0VYUE9SVCBHTHVpbnQgR0xfQVBJRU5UUlkgR2Vu
UGF0aHNDSFJPTUlVTShHTHNpemVpIGNocm9taXVtKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQ
SUVOVFJZIERlbGV0ZVBhdGhzQ0hST01JVU0oR0x1aW50IGZpcnN0LCBHTHNpemVpIHJhbmdlKTsK
K0FOR0xFX0VYUE9SVCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNQYXRoQ0hST01JVU0oR0x1aW50
IHBhdGgpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgUGF0aENvbW1hbmRzQ0hST01J
VU0oR0x1aW50IHBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIG51bUNvbW1hbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSAqY29tbWFuZHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51
bUNvb3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBjb29yZFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpjb29yZHMpOworQU5HTEVfRVhQT1JUIHZvaWQg
R0xfQVBJRU5UUlkgUGF0aFBhcmFtZXRlcmZDSFJPTUlVTShHTHVpbnQgcGF0aCwgR0xlbnVtIHBu
YW1lLCBHTGZsb2F0IHZhbHVlKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFBhdGhQ
YXJhbWV0ZXJpQ0hST01JVU0oR0x1aW50IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xpbnQgdmFsdWUp
OworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0UGF0aFBhcmFtZXRlcmZDSFJPTUlV
TShHTHVpbnQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICp2YWx1ZSk7CitBTkdMRV9FWFBP
UlQgdm9pZCBHTF9BUElFTlRSWSBHZXRQYXRoUGFyYW1ldGVyaUNIUk9NSVVNKEdMdWludCBwYXRo
LCBHTGVudW0gcG5hbWUsIEdMaW50ICp2YWx1ZSk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElF
TlRSWSBQYXRoU3RlbmNpbEZ1bmNDSFJPTUlVTShHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVp
bnQgbWFzayk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsRmlsbFBhdGhD
SFJPTUlVTShHTHVpbnQgcGF0aCwgR0xlbnVtIGZpbGxNb2RlLCBHTHVpbnQgbWFzayk7CitBTkdM
RV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsU3Ryb2tlUGF0aENIUk9NSVVNKEdMdWlu
dCBwYXRoLCBHTGludCByZWZlcmVuY2UsIEdMdWludCBtYXNrKTsKK0FOR0xFX0VYUE9SVCB2b2lk
IEdMX0FQSUVOVFJZIENvdmVyRmlsbFBhdGhDSFJPTUlVTShHTHVpbnQgcGF0aCwgR0xlbnVtIGNv
dmVyTW9kZSk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBDb3ZlclN0cm9rZVBhdGhD
SFJPTUlVTShHTHVpbnQgcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSk7CitBTkdMRV9FWFBPUlQgdm9p
ZCBHTF9BUElFTlRSWSBTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTShHTHVpbnQgcGF0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGNvdmVyTW9kZSk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsVGhl
bkNvdmVyU3Ryb2tlUGF0aENIUk9NSVVNKEdMdWludCBwYXRoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZl
cmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlKTsK
K0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIENvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJP
TUlVTShHTHNpemVpIG51bVBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgdm9pZCAqcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1v
ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNm
b3JtVmFsdWVzKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIENvdmVyU3Ryb2tlUGF0
aEluc3RhbmNlZENIUk9NSVVNKEdMc2l6ZWkgbnVtUGF0aHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5h
bWVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gY292ZXJNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOworQU5HTEVfRVhQT1JUIHZvaWQg
R0xfQVBJRU5UUlkgU3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oR0xzaXplaSBudW1Q
YXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRo
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBwYXRoQkFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkg
U3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTShHTHNpemVpIG51bVBhdGhzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IHBhdGhCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVO
VFJZCitTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTShHTHNpemVpIG51
bVBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBhdGhOYW1lVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHZvaWQgKnBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IHBhdGhCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwor
QU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkKK1N0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRo
SW5zdGFuY2VkQ0hST01JVU0oR0xzaXplaSBudW1QYXRocywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJl
bmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
bWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGNvdmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7CitBTkdMRV9FWFBPUlQg
dm9pZCBHTF9BUElFTlRSWSBCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0oR0x1aW50
IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpu
YW1lKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1QYXRoRnJhZ21lbnRJ
bnB1dEdlbkNIUk9NSVVNKEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gZ2VuTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGNvbXBvbmVudHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICpjb2VmZnMpOworCisvLyBHTF9DSFJPTUlVTV9jb3B5X3Rl
eHR1cmUKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIENvcHlUZXh0dXJlQ0hST01JVU0o
R0x1aW50IHNvdXJjZUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgZGVzdElkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RUeXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
dW5wYWNrRmxpcFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMYm9vbGVhbiB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNrVW5tdWx0
aXBseUFscGhhKTsKKworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQ29weVN1YlRleHR1
cmVDSFJPTUlVTShHTHVpbnQgc291cmNlSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBkZXN0SWQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHlv
ZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNr
RmxpcFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMYm9vbGVhbiB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNrVW5tdWx0
aXBseUFscGhhKTsKKworLy8gR0xfQ0hST01JVU1fY29weV9jb21wcmVzc2VkX3RleHR1cmUKK0FO
R0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIENvbXByZXNzZWRDb3B5VGV4dHVyZUNIUk9NSVVN
KEdMdWludCBzb3VyY2VJZCwgR0x1aW50IGRlc3RJZCk7CisKKy8vIEdMX0FOR0xFX3dlYmdsX2Nv
bXBhdGliaWxpdHkKK0dMX0FQSUNBTEwgR0xib29sZWFuIEdMX0FQSUVOVFJZIEVuYWJsZUV4dGVu
c2lvbkFOR0xFKGNvbnN0IEdMY2hhciAqbmFtZSk7CisKKy8vIEdMX0FOR0xFX3JvYnVzdF9jbGll
bnRfbWVtb3J5CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRCb29sZWFudlJvYnVz
dEFOR0xFKEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiAq
ZGF0YSk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRCdWZmZXJQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMp
OworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0RmxvYXR2Um9idXN0QU5HTEUoR0xl
bnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqZGF0YSk7CitBTkdMRV9FWFBP
UlQgdm9pZCBHTF9BUElFTlRSWSBHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRh
Y2htZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVu
Z3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKK0FOR0xFX0VYUE9SVCB2
b2lkIEdMX0FQSUVOVFJZIEdldEludGVnZXJ2Um9idXN0QU5HTEUoR0xlbnVtIHBuYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKmRhdGEpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xf
QVBJRU5UUlkgR2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUoR0x1aW50IHByb2dyYW0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKK0FOR0xFX0VY
UE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgKnBhcmFtcyk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRTaGFkZXJp
dlJvYnVzdEFOR0xFKEdMdWludCBzaGFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
ICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50ICpwYXJhbXMpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0
VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJh
bXMpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4UGFyYW1ldGVyaXZSb2J1
c3RBTkdMRShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKK0FOR0xFX0VYUE9SVCB2
b2lkIEdMX0FQSUVOVFJZIEdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdMdWludCBwcm9ncmFtLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMp
OworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0VW5pZm9ybWl2Um9idXN0QU5HTEUo
R0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50ICpwYXJhbXMpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0VmVydGV4
QXR0cmliZnZSb2J1c3RBTkdMRShHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcyk7CitB
TkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xF
KEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9B
UElFTlRSWSBHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKEdMdWludCBpbmRleCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKnBvaW50ZXIpOworQU5HTEVfRVhQT1JU
IHZvaWQgR0xfQVBJRU5UUlkgUmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdMaW50IHgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Kmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2b2lkICpwaXhlbHMpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgVGV4SW1h
Z2UyRFJvYnVzdEFOR0xFKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxmb3JtYXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZ
IFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CitBTkdMRV9FWFBPUlQgdm9p
ZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdMZW51bSB0YXJnZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKK0FOR0xF
X0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHTGVudW0g
dGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeW9mZnNldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdp
ZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZT
aXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHZvaWQgKnBpeGVscyk7CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZ
IFRleEltYWdlM0RSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGludGVybmFs
Zm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZv
cm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKK0FOR0xFX0VYUE9S
VCB2b2lkIEdMX0FQSUVOVFJZIFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeW9mZnNldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB6b2Zmc2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwaXhlbHMpOworQU5HTEVfRVhQ
T1JUIHZvaWQgR0xfQVBJRU5UUlkKK0dldFF1ZXJ5aXZSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0
LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAq
cGFyYW1zKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5T2JqZWN0dWl2
Um9idXN0QU5HTEUoR0x1aW50IGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcyk7CitBTkdMRV9FWFBPUlQg
dm9pZCBHTF9BUElFTlRSWSBHZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdMZW51bSB0YXJn
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZvaWQgKipwYXJhbXMpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0
SW50ZWdlcmlfdlJvYnVzdEFOR0xFKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
YnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKmRhdGEpOworQU5HTEVfRVhQT1JUIHZvaWQg
R0xfQVBJRU5UUlkgR2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdMZW51bSB0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOwor
QU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5H
TEUoR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7CitBTkdMRV9FWFBPUlQgdm9p
ZCBHTF9BUElFTlRSWSBHZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0x1aW50IGluZGV4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAq
bGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVO
VFJZIEdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKTsKK0FOR0xF
X0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5H
TEUoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7CitBTkdMRV9FWFBPUlQgdm9p
ZCBHTF9BUElFTlRSWSBHZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUoR0xlbnVtIHBuYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQ2NCAqZGF0YSk7CitBTkdMRV9FWFBPUlQg
dm9pZCBHTF9BUElFTlRSWSBHZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQ2NCAqZGF0YSk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRCdWZmZXJQYXJh
bWV0ZXJpNjR2Um9idXN0QU5HTEUoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludDY0ICpwYXJhbXMpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgU2FtcGxl
clBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0x1aW50IHNhbXBsZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW0pOworQU5HTEVfRVhQ
T1JUIHZvaWQgR0xfQVBJRU5UUlkgU2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0x1aW50
IHNhbXBsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGZsb2F0ICpwYXJhbSk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRTYW1w
bGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHTHVpbnQgc2FtcGxlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50ICpwYXJhbXMpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0U2Ft
cGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0x1aW50IHNhbXBsZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGZsb2F0ICpwYXJhbXMpOworCitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBH
ZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0xlbnVtIHRhcmdldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKK0FOR0xFX0VYUE9S
VCB2b2lkIEdMX0FQSUVOVFJZIEdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdMdWlu
dCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCAqcGFyYW1zKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldEJv
b2xlYW5pX3ZSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1
ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiAqZGF0YSk7CitBTkdMRV9FWFBPUlQgdm9p
ZCBHTF9BUElFTlRSWSBHZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0xlbnVtIHBuYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZmxvYXQgKnZhbCk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhMZXZlbFBh
cmFtZXRlcml2Um9idXN0QU5HTEUoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKK0FOR0xFX0VYUE9SVCB2b2lk
IEdMX0FQSUVOVFJZIEdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHTGVudW0gdGFy
Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQg
KnBhcmFtcyk7CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldFBvaW50ZXJ2Um9i
dXN0QU5HTEVSb2J1c3RBTkdMRShHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqcGFyYW1zKTsKK0FOR0xF
X0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoR0xpbnQgeCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9B
UElFTlRSWSBHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0x1aW50IHByb2dyYW0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9j
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpOwor
QU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdM
dWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgKnBhcmFtcyk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRuVW5p
Zm9ybXVpdlJvYnVzdEFOR0xFKEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKTsKK0FOR0xFX0VYUE9S
VCB2b2lkIEdMX0FQSUVOVFJZIFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdMZW51bSB0YXJn
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1z
KTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFRleFBhcmFtZXRlckl1aXZSb2J1c3RB
TkdMRShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0x1aW50ICpwYXJhbXMpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0
VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpw
YXJhbXMpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4UGFyYW1ldGVySXVp
dlJvYnVzdEFOR0xFKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpOwor
QU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgU2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFO
R0xFKEdMdWludCBzYW1wbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNp
emUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVO
VFJZIFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0x1aW50IHNhbXBsZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQg
KnBhcmFtKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldFNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRShHTHVpbnQgc2FtcGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCAqcGFyYW1zKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldFNhbXBsZXJQ
YXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0x1aW50IHNhbXBsZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCAqcGFyYW1zKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZ
IEdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHTHVpbnQgaWQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7CitB
TkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdM
RShHTHVpbnQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludDY0ICpwYXJhbXMpOworQU5HTEVfRVhQT1JUIHZvaWQg
R0xfQVBJRU5UUlkgR2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdMdWludCBpZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQ2NCAqcGFyYW1zKTsKKworfSAgLy8gbmFtZXNwYWNlIGdsCisKICNlbmRp
ZiAvLyBMSUJHTEVTVjJfRU5UUllQT0lOVEdMRVMyMEVYVF9IXwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzAuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9p
bnRzX2dsZXNfM18wLmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzAuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAibGliQU5HTEUvdmFsaWRhdGlvbkVTLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvdmFsaWRhdGlvbkVTMy5oIgogI2luY2x1ZGUgImxpYkFOR0xF
L3F1ZXJ5Y29udmVyc2lvbnMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9xdWVyeXV0aWxzLmgiCiAK
ICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKIApAQCAtNjgsNyArNjksNyBAQAogICAgICAgICAg
ICAgY29udGV4dC0+ZHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwgY291bnQsIHR5
cGUsIGluZGljZXMsIGluZGV4UmFuZ2UpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7CisgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICB9CkBAIC0yMjcsOSArMjI4LDkgQEAKICAgICBDb250ZXh0ICpjb250
ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICAgICAgaWYg
KGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKSk7CiAgICAgICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgICAgIH0KIApAQCAtMjU0
LDcgKzI1NSw3IEBACiAgICAgICAgIEVycm9yIGVycm9yID0gY29udGV4dC0+YmVnaW5RdWVyeSh0
YXJnZXQsIGlkKTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgfQpAQCAtMjc1LDcgKzI3Niw3IEBACiAgICAgICAgIEVycm9yIGVycm9yID0gY29udGV4dC0+
ZW5kUXVlcnkodGFyZ2V0KTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZXJyb3IpOworICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMzA5LDEyICszMTAsNyBAQAogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgRXJyb3IgZXJyb3IgPSBjb250ZXh0LT5nZXRRdWVyeU9iamVjdHVp
dihpZCwgcG5hbWUsIHBhcmFtcyk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKGVycm9yKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBjb250ZXh0LT5nZXRRdWVyeU9iamVjdHVp
dihpZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCkBAIC0zODAsNyArMzc2LDcgQEAKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFByb2dyYW0gKnByb2dyYW0g
PSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFByb2dyYW0oKTsKKyAgICAgICAgUHJvZ3JhbSAqcHJv
Z3JhbSA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRQcm9ncmFtKCk7CiAgICAgICAgIHByb2dy
YW0tPnNldFVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFs
dWUpOwogICAgIH0KIH0KQEAgLTM5OCw3ICszOTQsNyBAQAogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IGNvbnRleHQtPmdldFN0YXRl
KCkuZ2V0UHJvZ3JhbSgpOworICAgICAgICBQcm9ncmFtICpwcm9ncmFtID0gY29udGV4dC0+Z2V0
R0xTdGF0ZSgpLmdldFByb2dyYW0oKTsKICAgICAgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybU1hdHJp
eDN4MmZ2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgfQogfQpAQCAt
NDE2LDcgKzQxMiw3IEBACiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBQcm9ncmFtICpwcm9ncmFtID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRQcm9ncmFtKCk7Cisg
ICAgICAgIFByb2dyYW0gKnByb2dyYW0gPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0UHJvZ3Jh
bSgpOwogICAgICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtTWF0cml4Mng0ZnYobG9jYXRpb24sIGNv
dW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICB9CiB9CkBAIC00MzQsNyArNDMwLDcgQEAKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFByb2dyYW0gKnByb2dyYW0g
PSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFByb2dyYW0oKTsKKyAgICAgICAgUHJvZ3JhbSAqcHJv
Z3JhbSA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRQcm9ncmFtKCk7CiAgICAgICAgIHByb2dy
YW0tPnNldFVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFs
dWUpOwogICAgIH0KIH0KQEAgLTQ1Miw3ICs0NDgsNyBAQAogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IGNvbnRleHQtPmdldFN0YXRl
KCkuZ2V0UHJvZ3JhbSgpOworICAgICAgICBQcm9ncmFtICpwcm9ncmFtID0gY29udGV4dC0+Z2V0
R0xTdGF0ZSgpLmdldFByb2dyYW0oKTsKICAgICAgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybU1hdHJp
eDN4NGZ2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgfQogfQpAQCAt
NDcwLDcgKzQ2Niw3IEBACiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBQcm9ncmFtICpwcm9ncmFtID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRQcm9ncmFtKCk7Cisg
ICAgICAgIFByb2dyYW0gKnByb2dyYW0gPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0UHJvZ3Jh
bSgpOwogICAgICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtTWF0cml4NHgzZnYobG9jYXRpb24sIGNv
dW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICB9CiB9CkBAIC01MDQsOSArNTAwLDkgQEAKICAg
ICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwg
MykKKyAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApA
QCAtNTE1LDcgKzUxMSw3IEBACiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlciA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0
Q3VycmVudFJlbmRlcmJ1ZmZlcigpOworICAgICAgICBSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZl
ciA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRDdXJyZW50UmVuZGVyYnVmZmVyKCk7CiAgICAg
ICAgIHJlbmRlcmJ1ZmZlci0+c2V0U3RvcmFnZU11bHRpc2FtcGxlKHNhbXBsZXMsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKICAgICB9CiB9CkBAIC02NTcsNyArNjUzLDcgQEAKICAg
ICByZXR1cm4gR0xfRkFMU0U7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0SW50ZWdlcmlfdihH
TGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMaW50KiBkYXRhKQordm9pZCBHTF9BUElFTlRS
WSBHZXRJbnRlZ2VyaV92KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xpbnQgKmRhdGEp
CiB7CiAgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0x1aW50IGluZGV4ID0gJXUs
IEdMaW50KiBkYXRhID0gMHglMC44cCkiLAogICAgICAgICAgIHRhcmdldCwgaW5kZXgsIGRhdGEp
OwpAQCAtNjY1LDc2ICs2NjEsMTEgQEAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoY29u
dGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZUdldEludGVnZXJpX3YoY29udGV4dCwgdGFyZ2V0LCBp
bmRleCwgZGF0YSkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KLQotICAgICAgICBjb25zdCBDYXBzICZjYXBzID0gY29udGV4dC0+Z2V0Q2FwcygpOwot
ICAgICAgICBzd2l0Y2ggKHRhcmdldCkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfVFJB
TlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TVEFSVDoKLSAgICAgICAgICBjYXNlIEdMX1RSQU5TRk9S
TV9GRUVEQkFDS19CVUZGRVJfU0laRToKLSAgICAgICAgICBjYXNlIEdMX1RSQU5TRk9STV9GRUVE
QkFDS19CVUZGRVJfQklORElORzoKLSAgICAgICAgICAgIGlmIChpbmRleCA+PSBjYXBzLm1heFRy
YW5zZm9ybUZlZWRiYWNrU2VwYXJhdGVBdHRyaWJ1dGVzKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVh
azsKLQotICAgICAgICAgIGNhc2UgR0xfVU5JRk9STV9CVUZGRVJfU1RBUlQ6Ci0gICAgICAgICAg
Y2FzZSBHTF9VTklGT1JNX0JVRkZFUl9TSVpFOgotICAgICAgICAgIGNhc2UgR0xfVU5JRk9STV9C
VUZGRVJfQklORElORzoKLSAgICAgICAgICAgIGlmIChpbmRleCA+PSBjYXBzLm1heENvbWJpbmVk
VW5pZm9ybUJsb2NrcykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9F
TlVNKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIShj
b250ZXh0LT5nZXRJbmRleGVkSW50ZWdlcnYodGFyZ2V0LCBpbmRleCwgZGF0YSkpKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBHTGVudW0gbmF0aXZlVHlwZTsKLSAgICAgICAgICAgIHVuc2lnbmVk
IGludCBudW1QYXJhbXMgPSAwOwotICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRJbmRleGVk
UXVlcnlQYXJhbWV0ZXJJbmZvKHRhcmdldCwgJm5hdGl2ZVR5cGUsICZudW1QYXJhbXMpKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgaWYgKG51bVBhcmFtcyA9PSAwKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIHJldHVybjsgLy8gaXQgaXMga25vd24gdGhhdCBwbmFtZSBpcyB2YWxpZCwgYnV0
IHRoZXJlIGFyZSBubyBwYXJhbWV0ZXJzIHRvIHJldHVybgotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBpZiAobmF0aXZlVHlwZSA9PSBHTF9JTlRfNjRfQU5HTEVYKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIEdMaW50NjQgbWluSW50VmFsdWUgPSBzdGF0aWNfY2FzdDxHTGlu
dDY0PihzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpKTsKLSAgICAgICAgICAgICAgICBH
TGludDY0IG1heEludFZhbHVlID0gc3RhdGljX2Nhc3Q8R0xpbnQ2ND4oc3RkOjpudW1lcmljX2xp
bWl0czxpbnQ+OjptYXgoKSk7Ci0gICAgICAgICAgICAgICAgR0xpbnQ2NCAqaW50NjRQYXJhbXMg
PSBuZXcgR0xpbnQ2NFtudW1QYXJhbXNdOwotCi0gICAgICAgICAgICAgICAgY29udGV4dC0+Z2V0
SW5kZXhlZEludGVnZXI2NHYodGFyZ2V0LCBpbmRleCwgaW50NjRQYXJhbXMpOwotCi0gICAgICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBudW1QYXJhbXM7ICsraSkKLSAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIEdMaW50NjQgY2xhbXBlZFZhbHVl
ID0gc3RkOjptYXgoc3RkOjptaW4oaW50NjRQYXJhbXNbaV0sIG1heEludFZhbHVlKSwgbWluSW50
VmFsdWUpOwotICAgICAgICAgICAgICAgICAgICBkYXRhW2ldID0gc3RhdGljX2Nhc3Q8R0xpbnQ+
KGNsYW1wZWRWYWx1ZSk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgZGVs
ZXRlIFtdIGludDY0UGFyYW1zOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+Z2V0SW50ZWdlcmlfdih0YXJnZXQsIGluZGV4
LCBkYXRhKTsKICAgICB9CiB9CiAKQEAgLTc2MSwxOCArNjkyLDE4IEBACiAgICAgQ29udGV4dCAq
Y29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgICAg
IGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgVHJh
bnNmb3JtRmVlZGJhY2sgKnRyYW5zZm9ybUZlZWRiYWNrID0gY29udGV4dC0+Z2V0U3RhdGUoKS5n
ZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2sg
KnRyYW5zZm9ybUZlZWRiYWNrID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldEN1cnJlbnRUcmFu
c2Zvcm1GZWVkYmFjaygpOwogICAgICAgICBBU1NFUlQodHJhbnNmb3JtRmVlZGJhY2sgIT0gTlVM
TCk7CiAKICAgICAgICAgaWYgKCF0cmFuc2Zvcm1GZWVkYmFjay0+aXNBY3RpdmUoKSkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAt
Nzg4LDkgKzcxOSw5IEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdl
dENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpv
clZlcnNpb24oKSA8IDMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKQEAgLTgwMCw3ICs3MzEsNyBAQAogICAgICAgICAgIGNhc2UgR0xf
VFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUjoKICAgICAgICAgICAgIGlmIChpbmRleCA+PSBjYXBz
Lm1heFRyYW5zZm9ybUZlZWRiYWNrU2VwYXJhdGVBdHRyaWJ1dGVzKQogICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFM
VUUpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX1ZBTFVFKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgYnJlYWs7CkBAIC04MDgsMjIgKzczOSwyOSBAQAogICAgICAgICAgIGNhc2UgR0xf
VU5JRk9STV9CVUZGRVI6CiAgICAgICAgICAgICBpZiAoaW5kZXggPj0gY2Fwcy5tYXhVbmlmb3Jt
QnVmZmVyQmluZGluZ3MpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoYnVmZmVyICE9IDAgJiYgc2l6ZSA8PSAwKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoIWNvbnRleHQtPmdldEdM
U3RhdGUoKS5pc0JpbmRHZW5lcmF0ZXNSZXNvdXJjZUVuYWJsZWQoKSAmJgorICAgICAgICAgICAg
IWNvbnRleHQtPmlzQnVmZmVyR2VuZXJhdGVkKGJ1ZmZlcikpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQnVm
ZmVyIHdhcyBub3QgZ2VuZXJhdGVkIikpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKICAgICAgICAgc3dpdGNoICh0YXJnZXQpCiAgICAgICAgIHsKICAgICAgICAgICBjYXNlIEdM
X1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVI6CkBAIC04MzEsMTUgKzc2OSwxNiBAQAogICAgICAg
ICAgICAgICAgIC8vIHNpemUgYW5kIG9mZnNldCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNAogICAg
ICAgICAgICAgICAgIGlmIChidWZmZXIgIT0gMCAmJiAoKG9mZnNldCAlIDQpICE9IDAgfHwgKHNp
emUgJSA0KSAhPSAwKSkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwog
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICAgICAgLy8gQ2Fubm90IGJpbmQgYSB0cmFuc2Zvcm0gZmVlZGJhY2sgYnVmZmVyIGlmIHRo
ZSBjdXJyZW50IHRyYW5zZm9ybSBmZWVkYmFjayBpcyBhY3RpdmUgKDMuMC40IHBnIDkxIHNlY3Rp
b24gMi4xNS4yKQotICAgICAgICAgICAgICAgIFRyYW5zZm9ybUZlZWRiYWNrICpjdXJUcmFuc2Zv
cm1GZWVkYmFjayA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0Q3VycmVudFRyYW5zZm9ybUZlZWRi
YWNrKCk7CisgICAgICAgICAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2sgKmN1clRyYW5zZm9ybUZl
ZWRiYWNrID0KKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldEN1
cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpOwogICAgICAgICAgICAgICAgIGlmIChjdXJUcmFuc2Zv
cm1GZWVkYmFjayAmJiBjdXJUcmFuc2Zvcm1GZWVkYmFjay0+aXNBY3RpdmUoKSkKICAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTg1Myw3ICs3OTIsNyBAQAogICAg
ICAgICAgICAgLy8gaXQgaXMgYW4gZXJyb3IgdG8gYmluZCBhbiBvZmZzZXQgbm90IGEgbXVsdGlw
bGUgb2YgdGhlIGFsaWdubWVudAogICAgICAgICAgICAgaWYgKGJ1ZmZlciAhPSAwICYmIChvZmZz
ZXQgJSBjYXBzLnVuaWZvcm1CdWZmZXJPZmZzZXRBbGlnbm1lbnQpICE9IDApCiAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CiAKQEAgLTg3NSw5ICs4MTQsOSBAQAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250
ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xp
ZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC04ODcsNyArODI2LDcgQEAKICAgICAgICAgICBj
YXNlIEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVI6CiAgICAgICAgICAgICBpZiAoaW5kZXgg
Pj0gY2Fwcy5tYXhUcmFuc2Zvcm1GZWVkYmFja1NlcGFyYXRlQXR0cmlidXRlcykKICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZB
TElEX1ZBTFVFKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtODk1LDI1ICs4MzQsMzMgQEAKICAgICAgICAgICBj
YXNlIEdMX1VOSUZPUk1fQlVGRkVSOgogICAgICAgICAgICAgaWYgKGluZGV4ID49IGNhcHMubWF4
VW5pZm9ybUJ1ZmZlckJpbmRpbmdzKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAK
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKKyAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRHTFN0YXRlKCkuaXNCaW5kR2VuZXJhdGVzUmVz
b3VyY2VFbmFibGVkKCkgJiYKKyAgICAgICAgICAgICFjb250ZXh0LT5pc0J1ZmZlckdlbmVyYXRl
ZChidWZmZXIpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkJ1ZmZlciB3YXMgbm90IGdlbmVyYXRlZCIpKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIHN3aXRjaCAodGFyZ2V0
KQogICAgICAgICB7CiAgICAgICAgICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVS
OgogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIC8vIENhbm5vdCBiaW5kIGEgdHJhbnNm
b3JtIGZlZWRiYWNrIGJ1ZmZlciBpZiB0aGUgY3VycmVudCB0cmFuc2Zvcm0gZmVlZGJhY2sgaXMg
YWN0aXZlICgzLjAuNCBwZyA5MSBzZWN0aW9uIDIuMTUuMikKLSAgICAgICAgICAgICAgICBUcmFu
c2Zvcm1GZWVkYmFjayAqY3VyVHJhbnNmb3JtRmVlZGJhY2sgPSBjb250ZXh0LT5nZXRTdGF0ZSgp
LmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgICAgICAgICAgICAgIFRyYW5zZm9y
bUZlZWRiYWNrICpjdXJUcmFuc2Zvcm1GZWVkYmFjayA9CisgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQtPmdldEdMU3RhdGUoKS5nZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJhY2soKTsKICAgICAg
ICAgICAgICAgICBpZiAoY3VyVHJhbnNmb3JtRmVlZGJhY2sgJiYgY3VyVHJhbnNmb3JtRmVlZGJh
Y2stPmlzQWN0aXZlKCkpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTikpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQog
CkBAIC05NDAsMTUgKzg4NywxNSBAQAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250
ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xp
ZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjb3VudCA8IDApCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFM
VUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
VkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC05NjAsMTIgKzkw
NywxMiBAQAogICAgICAgICAgIGNhc2UgR0xfU0VQQVJBVEVfQVRUUklCUzoKICAgICAgICAgICAg
IGlmIChzdGF0aWNfY2FzdDxHTHVpbnQ+KGNvdW50KSA+IGNhcHMubWF4VHJhbnNmb3JtRmVlZGJh
Y2tTZXBhcmF0ZUF0dHJpYnV0ZXMpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
QEAgLTk4OCwxNSArOTM1LDE1IEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGNvbnRl
eHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGll
bnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGJ1ZlNpemUgPCAwKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZB
TFVFKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTAwOCw3ICs5
NTUsNyBAQAogCiAgICAgICAgIGlmIChpbmRleCA+PSBzdGF0aWNfY2FzdDxHTHVpbnQ+KHByb2dy
YW1PYmplY3QtPmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ0NvdW50KCkpKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVF
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZB
TFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTAyNCwyMSArOTcx
LDIxIEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZl
cnNpb24oKSA8IDMpCisgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24o
KSA8IDMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKGluZGV4ID49IE1BWF9WRVJURVhfQVRUUklCUykKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KHNpemUgPCAxIHx8IHNpemUgPiA0KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIApAQCAtMTA1MCwzOSArOTk3LDMxIEBACiAgICAgICAgICAgY2FzZSBH
TF9VTlNJR05FRF9TSE9SVDoKICAgICAgICAgICBjYXNlIEdMX0lOVDoKICAgICAgICAgICBjYXNl
IEdMX1VOU0lHTkVEX0lOVDoKLSAgICAgICAgICBjYXNlIEdMX0lOVF8yXzEwXzEwXzEwX1JFVjoK
LSAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVjoKICAgICAgICAg
ICAgIGJyZWFrOwogCiAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChzdHJpZGUgPCAwKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoKHR5cGUgPT0g
R0xfSU5UXzJfMTBfMTBfMTBfUkVWIHx8IHR5cGUgPT0gR0xfVU5TSUdORURfSU5UXzJfMTBfMTBf
MTBfUkVWKSAmJiBzaXplICE9IDQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLQogICAgICAgICAvLyBbT3BlbkdMIEVTIDMuMC4yXSBTZWN0aW9uIDIu
OCBwYWdlIDI0OgogICAgICAgICAvLyBBbiBJTlZBTElEX09QRVJBVElPTiBlcnJvciBpcyBnZW5l
cmF0ZWQgd2hlbiBhIG5vbi16ZXJvIHZlcnRleCBhcnJheSBvYmplY3QKICAgICAgICAgLy8gaXMg
Ym91bmQsIHplcm8gaXMgYm91bmQgdG8gdGhlIEFSUkFZX0JVRkZFUiBidWZmZXIgb2JqZWN0IGJp
bmRpbmcgcG9pbnQsCiAgICAgICAgIC8vIGFuZCB0aGUgcG9pbnRlciBhcmd1bWVudCBpcyBub3Qg
TlVMTC4KLSAgICAgICAgaWYgKGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0VmVydGV4QXJyYXkoKS0+
aWQoKSAhPSAwICYmIGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0QXJyYXlCdWZmZXJJZCgpID09IDAg
JiYgcG9pbnRlciAhPSBOVUxMKQorICAgICAgICBpZiAoY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdl
dFZlcnRleEFycmF5KCktPmlkKCkgIT0gMCAmJgorICAgICAgICAgICAgY29udGV4dC0+Z2V0R0xT
dGF0ZSgpLmdldEFycmF5QnVmZmVySWQoKSA9PSAwICYmIHBvaW50ZXIgIT0gTlVMTCkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBjb250ZXh0LT5nZXRTdGF0ZSgpLnNldFZlcnRleEF0dHJpYlN0YXRlKGluZGV4LCBjb250
ZXh0LT5nZXRTdGF0ZSgpLmdldFRhcmdldEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIpLCBzaXplLCB0
eXBlLCBmYWxzZSwgdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJpZGUsIHBvaW50ZXIpOworICAgICAgICBjb250ZXh0LT52ZXJ0ZXhBdHRy
aWJJUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBwb2ludGVyKTsKICAgICB9CiB9
CiAKQEAgLTEwOTQsMzYgKzEwMzMsMTcgQEAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAo
Y29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICAgICAgaWYgKCFjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJJ
aXYoY29udGV4dCwgaW5kZXgsIHBuYW1lLCBwYXJhbXMpKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGluZGV4ID49IE1BWF9W
RVJURVhfQVRUUklCUykKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKCFWYWxpZGF0ZUdldFZlcnRleEF0dHJpYlBhcmFtZXRlcnMoY29u
dGV4dCwgcG5hbWUpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAocG5hbWUgPT0gR0xfQ1VSUkVOVF9WRVJURVhfQVRUUklCKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZjdXJy
ZW50VmFsdWVEYXRhID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRWZXJ0ZXhBdHRyaWJDdXJyZW50
VmFsdWUoaW5kZXgpOwotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyArK2kpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcGFyYW1zW2ldID0gY3VycmVudFZhbHVlRGF0
YS5JbnRWYWx1ZXNbaV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQot
ICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYlN0YXRl
ID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRWZXJ0ZXhBcnJheSgpLT5nZXRWZXJ0ZXhBdHRyaWJ1
dGUoaW5kZXgpOwotICAgICAgICAgICAgKnBhcmFtcyA9IFF1ZXJ5U2luZ2xlVmVydGV4QXR0cmli
dXRlUGFyYW1ldGVyPEdMaW50PihhdHRyaWJTdGF0ZSwgcG5hbWUpOwotICAgICAgICB9CisgICAg
ICAgIGNvbnN0IFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGEgJmN1cnJlbnRWYWx1ZXMgPQor
ICAgICAgICAgICAgY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFZlcnRleEF0dHJpYkN1cnJlbnRW
YWx1ZShpbmRleCk7CisgICAgICAgIGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliID0KKyAg
ICAgICAgICAgIGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRWZXJ0ZXhBcnJheSgpLT5nZXRWZXJ0
ZXhBdHRyaWJ1dGUoaW5kZXgpOworICAgICAgICBRdWVyeVZlcnRleEF0dHJpYklpdihhdHRyaWIs
IGN1cnJlbnRWYWx1ZXMsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIApAQCAtMTEzNSwzNiAr
MTA1NSwxNyBAQAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGll
bnRWZXJzaW9uKCkgPCAzKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
JiYKKyAgICAgICAgICAgICFWYWxpZGF0ZUdldFZlcnRleEF0dHJpYkl1aXYoY29udGV4dCwgaW5k
ZXgsIHBuYW1lLCBwYXJhbXMpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGluZGV4ID49IE1BWF9WRVJURVhfQVRUUklCUykK
LSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKCFWYWxpZGF0ZUdldFZlcnRleEF0dHJpYlBhcmFtZXRlcnMoY29udGV4dCwgcG5hbWUpKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
cG5hbWUgPT0gR0xfQ1VSUkVOVF9WRVJURVhfQVRUUklCKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBjb25zdCBWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZjdXJyZW50VmFsdWVEYXRhID0g
Y29udGV4dC0+Z2V0U3RhdGUoKS5nZXRWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWUoaW5kZXgpOwot
ICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyArK2kpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgcGFyYW1zW2ldID0gY3VycmVudFZhbHVlRGF0YS5VbnNpZ25lZEludFZh
bHVlc1tpXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliU3RhdGUgPSBjb250
ZXh0LT5nZXRTdGF0ZSgpLmdldFZlcnRleEFycmF5KCktPmdldFZlcnRleEF0dHJpYnV0ZShpbmRl
eCk7Ci0gICAgICAgICAgICAqcGFyYW1zID0gUXVlcnlTaW5nbGVWZXJ0ZXhBdHRyaWJ1dGVQYXJh
bWV0ZXI8R0x1aW50PihhdHRyaWJTdGF0ZSwgcG5hbWUpOwotICAgICAgICB9CisgICAgICAgIGNv
bnN0IFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGEgJmN1cnJlbnRWYWx1ZXMgPQorICAgICAg
ICAgICAgY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZShp
bmRleCk7CisgICAgICAgIGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliID0KKyAgICAgICAg
ICAgIGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRWZXJ0ZXhBcnJheSgpLT5nZXRWZXJ0ZXhBdHRy
aWJ1dGUoaW5kZXgpOworICAgICAgICBRdWVyeVZlcnRleEF0dHJpYkl1aXYoYXR0cmliLCBjdXJy
ZW50VmFsdWVzLCBwbmFtZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKQEAgLTExNzYsMjAgKzEwNzcs
MTkgQEAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVy
c2lvbigpIDwgMykKKyAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigp
IDwgMykKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoaW5kZXggPj0gTUFYX1ZFUlRFWF9BVFRSSUJTKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZB
TFVFKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBHTGlu
dCB2YWxzWzRdID0geyB4LCB5LCB6LCB3IH07Ci0gICAgICAgIGNvbnRleHQtPmdldFN0YXRlKCku
c2V0VmVydGV4QXR0cmliaShpbmRleCwgdmFscyk7CisgICAgICAgIGNvbnRleHQtPnZlcnRleEF0
dHJpYkk0aShpbmRleCwgeCwgeSwgeiwgdyk7CiAgICAgfQogfQogCkBAIC0xMjAxLDIwICsxMTAx
LDE5IEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZl
cnNpb24oKSA8IDMpCisgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24o
KSA8IDMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKGluZGV4ID49IE1BWF9WRVJURVhfQVRUUklCUykKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgR0x1
aW50IHZhbHNbNF0gPSB7IHgsIHksIHosIHcgfTsKLSAgICAgICAgY29udGV4dC0+Z2V0U3RhdGUo
KS5zZXRWZXJ0ZXhBdHRyaWJ1KGluZGV4LCB2YWxzKTsKKyAgICAgICAgY29udGV4dC0+dmVydGV4
QXR0cmliSTR1aShpbmRleCwgeCwgeSwgeiwgdyk7CiAgICAgfQogfQogCkBAIC0xMjI1LDE5ICsx
MTI0LDE5IEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
OwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVu
dFZlcnNpb24oKSA8IDMpCisgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNp
b24oKSA8IDMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKGluZGV4ID49IE1BWF9WRVJURVhfQVRUUklCUykKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
Y29udGV4dC0+Z2V0U3RhdGUoKS5zZXRWZXJ0ZXhBdHRyaWJpKGluZGV4LCB2KTsKKyAgICAgICAg
Y29udGV4dC0+dmVydGV4QXR0cmliSTRpdihpbmRleCwgdik7CiAgICAgfQogfQogCkBAIC0xMjQ4
LDE5ICsxMTQ3LDE5IEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdl
dENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpv
clZlcnNpb24oKSA8IDMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGluZGV4ID49IE1BWF9WRVJURVhfQVRUUklC
UykKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgY29udGV4dC0+Z2V0U3RhdGUoKS5zZXRWZXJ0ZXhBdHRyaWJ1KGluZGV4LCB2KTsKKyAg
ICAgICAgY29udGV4dC0+dmVydGV4QXR0cmliSTR1aXYoaW5kZXgsIHYpOwogICAgIH0KIH0KIApA
QCAtMTI5MiwxNSArMTE5MSwxNSBAQAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250
ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xp
ZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAg
ICAgIHJldHVybiAtMTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChwcm9ncmFtID09IDApCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFM
SURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogCkBAIC0x
MzA4LDcgKzEyMDcsNyBAQAogCiAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCB8fCAhcHJvZ3Jh
bU9iamVjdC0+aXNMaW5rZWQoKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAg
ICByZXR1cm4gLTE7CiAgICAgICAgIH0KIApAQCAtMTM1NCw3ICsxMjUzLDcgQEAKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFByb2dyYW0gKnByb2dyYW0gPSBjb250
ZXh0LT5nZXRTdGF0ZSgpLmdldFByb2dyYW0oKTsKKyAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9
IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRQcm9ncmFtKCk7CiAgICAgICAgIHByb2dyYW0tPnNl
dFVuaWZvcm0xdWl2KGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOwogICAgIH0KIH0KQEAgLTEzNzIs
NyArMTI3MSw3IEBACiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBQ
cm9ncmFtICpwcm9ncmFtID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRQcm9ncmFtKCk7CisgICAg
ICAgIFByb2dyYW0gKnByb2dyYW0gPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0UHJvZ3JhbSgp
OwogICAgICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtMnVpdihsb2NhdGlvbiwgY291bnQsIHZhbHVl
KTsKICAgICB9CiB9CkBAIC0xMzkwLDcgKzEyODksNyBAQAogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IGNvbnRleHQtPmdldFN0YXRl
KCkuZ2V0UHJvZ3JhbSgpOworICAgICAgICBQcm9ncmFtICpwcm9ncmFtID0gY29udGV4dC0+Z2V0
R0xTdGF0ZSgpLmdldFByb2dyYW0oKTsKICAgICAgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybTN1aXYo
bG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CiAgICAgfQogfQpAQCAtMTQwOCw3ICsxMzA3LDcgQEAK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFByb2dyYW0gKnByb2dy
YW0gPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFByb2dyYW0oKTsKKyAgICAgICAgUHJvZ3JhbSAq
cHJvZ3JhbSA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRQcm9ncmFtKCk7CiAgICAgICAgIHBy
b2dyYW0tPnNldFVuaWZvcm00dWl2KGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOwogICAgIH0KIH0K
QEAgLTE0OTIsMjUgKzEzOTEsMjUgQEAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoY29u
dGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICAgICAgaWYgKGNvbnRleHQtPmdldENs
aWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAg
ICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChuYW1lICE9IEdMX0VY
VEVOU0lPTlMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmIChpbmRleCA+PSBjb250ZXh0LT5nZXRFeHRlbnNpb25TdHJpbmdD
b3VudCgpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAg
ICAgfQogCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEdMdWJ5dGUqPihj
b250ZXh0LT5nZXRFeHRlbnNpb25TdHJpbmcoaW5kZXgpLmNfc3RyKCkpOworICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBHTHVieXRlICo+KGNvbnRleHQtPmdldEV4dGVuc2lv
blN0cmluZyhpbmRleCkpOwogICAgIH0KIAogICAgIHJldHVybiBOVUxMOwpAQCAtMTUyNCwyNCAr
MTQyMywyNCBAQAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGll
bnRWZXJzaW9uKCkgPCAzKQorICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJz
aW9uKCkgPCAzKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmICghVmFsaWRCdWZmZXJUYXJnZXQoY29udGV4dCwgcmVh
ZFRhcmdldCkgfHwgIVZhbGlkQnVmZmVyVGFyZ2V0KGNvbnRleHQsIHdyaXRlVGFyZ2V0KSkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX0VOVU0pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIEJ1
ZmZlciAqcmVhZEJ1ZmZlciA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0VGFyZ2V0QnVmZmVyKHJl
YWRUYXJnZXQpOwotICAgICAgICBCdWZmZXIgKndyaXRlQnVmZmVyID0gY29udGV4dC0+Z2V0U3Rh
dGUoKS5nZXRUYXJnZXRCdWZmZXIod3JpdGVUYXJnZXQpOworICAgICAgICBCdWZmZXIgKnJlYWRC
dWZmZXIgID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFRhcmdldEJ1ZmZlcihyZWFkVGFyZ2V0
KTsKKyAgICAgICAgQnVmZmVyICp3cml0ZUJ1ZmZlciA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5n
ZXRUYXJnZXRCdWZmZXIod3JpdGVUYXJnZXQpOwogCiAgICAgICAgIGlmICghcmVhZEJ1ZmZlciB8
fCAhd3JpdGVCdWZmZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKQEAgLTE1NDgsNyArMTQ0Nyw3IEBACiAgICAgICAgIC8vIFZlcmlm
eSB0aGF0IHJlYWRCdWZmZXIgYW5kIHdyaXRlQnVmZmVyIGFyZSBub3QgY3VycmVudGx5IG1hcHBl
ZAogICAgICAgICBpZiAocmVhZEJ1ZmZlci0+aXNNYXBwZWQoKSB8fCB3cml0ZUJ1ZmZlci0+aXNN
YXBwZWQoKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApAQCAtMTU1NiwxMyArMTQ1NSwxMyBAQAogICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8dW5zaWduZWQgaW50PihyZWFkT2Zmc2V0ICsgc2l6ZSkgPiByZWFkQnVmZmVyLT5nZXRTaXpl
KCkgfHwKICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4od3JpdGVPZmZzZXQg
KyBzaXplKSA+IHdyaXRlQnVmZmVyLT5nZXRTaXplKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChyZWFkQnVmZmVyID09IHdy
aXRlQnVmZmVyICYmIHN0ZDo6YWJzKHJlYWRPZmZzZXQgLSB3cml0ZU9mZnNldCkgPCBzaXplKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZB
TElEX1ZBTFVFKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTU3
Miw3ICsxNDcxLDcgQEAKICAgICAgICAgICAgIEVycm9yIGVycm9yID0gd3JpdGVCdWZmZXItPmNv
cHlCdWZmZXJTdWJEYXRhKHJlYWRCdWZmZXIsIHJlYWRPZmZzZXQsIHdyaXRlT2Zmc2V0LCBzaXpl
KTsKICAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKGVycm9yKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE1ODcsMTUgKzE0ODYsMTUgQEAKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAg
ICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAodW5pZm9ybUNvdW50IDwgMCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKQEAgLTE2MzEsMTUgKzE1MzAsMTUgQEAKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICAgICAg
aWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
dW5pZm9ybUNvdW50IDwgMCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTE2NjMsMTMgKzE1NjIsMTMgQEAKICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCiAgICAgICAgIGlmICh1bmlmb3JtQ291bnQgPiBwcm9ncmFtT2JqZWN0LT5nZXRBY3RpdmVV
bmlmb3JtQ291bnQoKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKQEAgLTE2NzksNyArMTU3OCw3IEBACiAKICAgICAgICAgICAgIGlmIChpbmRleCA+
PSBzdGF0aWNfY2FzdDxHTHVpbnQ+KHByb2dyYW1PYmplY3QtPmdldEFjdGl2ZVVuaWZvcm1Db3Vu
dCgpKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTY5OSw5ICsxNTk4LDkgQEAKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykK
KyAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm4gR0xfSU5WQUxJRF9JTkRFWDsK
ICAgICAgICAgfQogCkBAIC0xNzI1LDQzICsxNjI0LDE0IEBACiAgICAgQ29udGV4dCAqY29udGV4
dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgICAgIGlmICgh
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRlR2V0QWN0
aXZlVW5pZm9ybUJsb2NraXYoY29udGV4dCwgcHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBu
YW1lLCBwYXJhbXMpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9Ci0gICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBHZXRWYWxpZFByb2dyYW0o
Y29udGV4dCwgcHJvZ3JhbSk7CiAKLSAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodW5pZm9y
bUJsb2NrSW5kZXggPj0gcHJvZ3JhbU9iamVjdC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NrQ291bnQo
KSkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgc3dpdGNoIChwbmFtZSkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfVU5JRk9STV9C
TE9DS19CSU5ESU5HOgotICAgICAgICAgICAgKnBhcmFtcyA9IHN0YXRpY19jYXN0PEdMaW50Pihw
cm9ncmFtT2JqZWN0LT5nZXRVbmlmb3JtQmxvY2tCaW5kaW5nKHVuaWZvcm1CbG9ja0luZGV4KSk7
Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgIGNhc2UgR0xfVU5JRk9STV9CTE9DS19E
QVRBX1NJWkU6Ci0gICAgICAgICAgY2FzZSBHTF9VTklGT1JNX0JMT0NLX05BTUVfTEVOR1RIOgot
ICAgICAgICAgIGNhc2UgR0xfVU5JRk9STV9CTE9DS19BQ1RJVkVfVU5JRk9STVM6Ci0gICAgICAg
ICAgY2FzZSBHTF9VTklGT1JNX0JMT0NLX0FDVElWRV9VTklGT1JNX0lORElDRVM6Ci0gICAgICAg
ICAgY2FzZSBHTF9VTklGT1JNX0JMT0NLX1JFRkVSRU5DRURfQllfVkVSVEVYX1NIQURFUjoKLSAg
ICAgICAgICBjYXNlIEdMX1VOSUZPUk1fQkxPQ0tfUkVGRVJFTkNFRF9CWV9GUkFHTUVOVF9TSEFE
RVI6Ci0gICAgICAgICAgICBwcm9ncmFtT2JqZWN0LT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpdih1
bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUsIHBhcmFtcyk7Ci0gICAgICAgICAgICBicmVhazsKLQot
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAg
ICAgICBjb25zdCBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShw
cm9ncmFtKTsKKyAgICAgICAgUXVlcnlBY3RpdmVVbmlmb3JtQmxvY2tpdihwcm9ncmFtT2JqZWN0
LCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCkBAIC0xNzcz
LDkgKzE2NDMsOSBAQAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRD
bGllbnRWZXJzaW9uKCkgPCAzKQorICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JW
ZXJzaW9uKCkgPCAzKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCkBAIC0xNzg4LDcgKzE2NTgsNyBAQAogCiAgICAgICAgIGlmICh1bmlm
b3JtQmxvY2tJbmRleCA+PSBwcm9ncmFtT2JqZWN0LT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tDb3Vu
dCgpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApA
QCAtMTgwNCwxNSArMTY3NCwxNSBAQAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250
ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xp
ZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmICh1bmlmb3JtQmxvY2tCaW5kaW5n
ID49IGNvbnRleHQtPmdldENhcHMoKS5tYXhVbmlmb3JtQnVmZmVyQmluZGluZ3MpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFM
VUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
VkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xODI2LDcgKzE2
OTYsNyBAQAogICAgICAgICAvLyBpZiBuZXZlciBsaW5rZWQsIHRoZXJlIHdvbid0IGJlIGFueSB1
bmlmb3JtIGJsb2NrcwogICAgICAgICBpZiAodW5pZm9ybUJsb2NrSW5kZXggPj0gcHJvZ3JhbU9i
amVjdC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NrQ291bnQoKSkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE4NDIsOSArMTcxMiw5IEBACiAgICAg
Q29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMp
CisgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAg
LTE4NTYsNyArMTcyNiw3IEBACiAgICAgICAgIEVycm9yIGVycm9yID0gY29udGV4dC0+ZHJhd0Fy
cmF5c0luc3RhbmNlZChtb2RlLCBmaXJzdCwgY291bnQsIGluc3RhbmNlQ291bnQpOwogICAgICAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihlcnJvcik7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihlcnJv
cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0xODcwLDkgKzE3
NDAsOSBAQAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRW
ZXJzaW9uKCkgPCAzKQorICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9u
KCkgPCAzKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCkBAIC0xODg2LDcgKzE3NTYsNyBAQAogICAgICAgICAgICAgY29udGV4dC0+ZHJh
d0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBpbmRpY2VzLCBpbnN0YW5jZUNv
dW50LCBpbmRleFJhbmdlKTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZXJyb3IpOworICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMTg5OSwyMSArMTc2OSwyMSBAQAogICAgIENvbnRleHQgKmNvbnRleHQg
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgICAgICBpZiAoY29u
dGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
KTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGNvbmRp
dGlvbiAhPSBHTF9TWU5DX0dQVV9DT01NQU5EU19DT01QTEVURSkKICAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAg
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGZsYWdzICE9IDAp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAKQEAg
LTE5MjQsNyArMTc5NCw3IEBACiAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAg
IHsKICAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZUZlbmNlU3luYyhmZW5jZVN5bmMpOwotICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAg
IH0KIApAQCAtMTk0MSw5ICsxODExLDkgQEAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAo
Y29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICAgICAgaWYgKGNvbnRleHQtPmdl
dENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAg
ICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgICAgIH0KIApAQCAtMTk2MCwxNSArMTgzMCwx
NSBAQAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJz
aW9uKCkgPCAzKQorICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkg
PCAzKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmIChzeW5jICE9IHN0YXRpY19jYXN0PEdMc3luYz4oMCkgJiYgIWNv
bnRleHQtPmdldEZlbmNlU3luYyhzeW5jKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE5ODQsMTUgKzE4NTQsMTUgQEAKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICAg
ICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm4gR0xfV0FJVF9GQUlMRUQ7CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoKGZsYWdzICYgfihHTF9TWU5DX0ZMVVNIX0NPTU1BTkRTX0JJVCkp
ICE9IDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybiBHTF9XQUlUX0ZBSUxF
RDsKICAgICAgICAgfQogCkBAIC0yMDAwLDcgKzE4NzAsNyBAQAogCiAgICAgICAgIGlmICghZmVu
Y2VTeW5jKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm4gR0xfV0FJVF9GQUlM
RUQ7CiAgICAgICAgIH0KIApAQCAtMjAwOCw3ICsxODc4LDcgQEAKICAgICAgICAgRXJyb3IgZXJy
b3IgPSBmZW5jZVN5bmMtPmNsaWVudFdhaXQoZmxhZ3MsIHRpbWVvdXQsICZyZXN1bHQpOwogICAg
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihlcnJvcik7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihl
cnJvcik7CiAgICAgICAgICAgICByZXR1cm4gR0xfV0FJVF9GQUlMRUQ7CiAgICAgICAgIH0KIApA
QCAtMjAyNiwyMSArMTg5NiwyMSBAQAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250
ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xp
ZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChmbGFncyAhPSAwKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZB
TFVFKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
dGltZW91dCAhPSBHTF9USU1FT1VUX0lHTk9SRUQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMDQ4LDcgKzE5MTgsNyBAQAogCiAgICAgICAg
IGlmICghZmVuY2VTeW5jKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApAQCAtMjA1NSw3ICsxOTI1LDcgQEAKICAgICAgICAgRXJyb3IgZXJyb3IgPSBm
ZW5jZVN5bmMtPnNlcnZlcldhaXQoZmxhZ3MsIHRpbWVvdXQpOwogICAgICAgICBpZiAoZXJyb3Iu
aXNFcnJvcigpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihl
cnJvcik7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7CiAgICAgICAg
IH0KICAgICB9CiB9CkBAIC0yMDY4LDkgKzE5MzgsOSBAQAogICAgIENvbnRleHQgKmNvbnRleHQg
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgICAgICBpZiAoY29u
dGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMTAwLDE1ICsxOTcwLDE1
IEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNp
b24oKSA8IDMpCisgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8
IDMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKGJ1ZlNpemUgPCAwKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjExNiw3ICsxOTg2LDcgQEAKIAogICAgICAg
ICBpZiAoIWZlbmNlU3luYykKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTIxMzEsNyArMjAwMSw3IEBACiAgICAgICAgICAgICAgICAgRXJyb3Ig
ZXJyb3IgPSBmZW5jZVN5bmMtPmdldFN0YXR1cyh2YWx1ZXMpOwogICAgICAgICAgICAgICAgIGlm
IChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7CisgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKGVycm9yKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIxMzgsNyArMjAwOCw3
IEBACiAgICAgICAgICAgICB9CiAKICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMjE1Miw3MSArMjAyMiwxMSBAQAogICAg
IENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAz
KQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlR2V0
SW50ZWdlcjY0aV92KGNvbnRleHQsIHRhcmdldCwgaW5kZXgsIGRhdGEpKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0KLSAgICAgICAgY29uc3QgQ2Fw
cyAmY2FwcyA9IGNvbnRleHQtPmdldENhcHMoKTsKLSAgICAgICAgc3dpdGNoICh0YXJnZXQpCi0g
ICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU1RB
UlQ6Ci0gICAgICAgICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NJWkU6Ci0g
ICAgICAgICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkc6Ci0gICAg
ICAgICAgICBpZiAoaW5kZXggPj0gY2Fwcy5tYXhUcmFuc2Zvcm1GZWVkYmFja1NlcGFyYXRlQXR0
cmlidXRlcykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICBjYXNlIEdMX1VO
SUZPUk1fQlVGRkVSX1NUQVJUOgotICAgICAgICAgIGNhc2UgR0xfVU5JRk9STV9CVUZGRVJfU0la
RToKLSAgICAgICAgICBjYXNlIEdMX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkc6Ci0gICAgICAgICAg
ICBpZiAoaW5kZXggPj0gY2Fwcy5tYXhVbmlmb3JtQnVmZmVyQmluZGluZ3MpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCEoY29udGV4dC0+Z2V0SW5kZXhlZEludGVnZXI2
NHYodGFyZ2V0LCBpbmRleCwgZGF0YSkpKQotICAgICAgICB7Ci0gICAgICAgICAgICBHTGVudW0g
bmF0aXZlVHlwZTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGludCBudW1QYXJhbXMgPSAwOwotICAg
ICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRJbmRleGVkUXVlcnlQYXJhbWV0ZXJJbmZvKHRhcmdl
dCwgJm5hdGl2ZVR5cGUsICZudW1QYXJhbXMpKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKG51bVBh
cmFtcyA9PSAwKQotICAgICAgICAgICAgICAgIHJldHVybjsgLy8gaXQgaXMga25vd24gdGhhdCBw
bmFtZSBpcyB2YWxpZCwgYnV0IHRoZXJlIGFyZSBubyBwYXJhbWV0ZXJzIHRvIHJldHVybgotCi0g
ICAgICAgICAgICBpZiAobmF0aXZlVHlwZSA9PSBHTF9JTlQpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgR0xpbnQgKmludFBhcmFtcyA9IG5ldyBHTGludFtudW1QYXJhbXNdOwotCi0g
ICAgICAgICAgICAgICAgY29udGV4dC0+Z2V0SW5kZXhlZEludGVnZXJ2KHRhcmdldCwgaW5kZXgs
IGludFBhcmFtcyk7Ci0KLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IG51bVBhcmFtczsgKytpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgZGF0YVtpXSA9IHN0YXRpY19jYXN0PEdMaW50NjQ+KGludFBhcmFtc1tpXSk7Ci0gICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgZGVsZXRlIFtdIGludFBhcmFtczsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIGNvbnRl
eHQtPmdldEludGVnZXI2NGlfdih0YXJnZXQsIGluZGV4LCBkYXRhKTsKICAgICB9CiB9CiAKQEAg
LTIyMjgsNTUgKzIwMzgsMTQgQEAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoY29udGV4
dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2
KGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIHBhcmFtcykpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIVZhbGlkQnVmZmVyVGFy
Z2V0KGNvbnRleHQsIHRhcmdldCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFWYWxpZEJ1ZmZlclBhcmFtZXRlcihjb250ZXh0LCBw
bmFtZSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAg
ICAgICAgQnVmZmVyICpidWZmZXIgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFRhcmdldEJ1ZmZl
cih0YXJnZXQpOwotCi0gICAgICAgIGlmICghYnVmZmVyKQotICAgICAgICB7Ci0gICAgICAgICAg
ICAvLyBBIG51bGwgYnVmZmVyIG1lYW5zIHRoYXQgIjAiIGlzIGJvdW5kIHRvIHRoZSByZXF1ZXN0
ZWQgYnVmZmVyIHRhcmdldAotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
Ci0gICAgICAgIHN3aXRjaCAocG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX0JV
RkZFUl9VU0FHRToKLSAgICAgICAgICAgICpwYXJhbXMgPSBzdGF0aWNfY2FzdDxHTGludDY0Pihi
dWZmZXItPmdldFVzYWdlKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBH
TF9CVUZGRVJfU0laRToKLSAgICAgICAgICAgICpwYXJhbXMgPSBidWZmZXItPmdldFNpemUoKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfQlVGRkVSX0FDQ0VTU19GTEFH
UzoKLSAgICAgICAgICAgICpwYXJhbXMgPSBzdGF0aWNfY2FzdDxHTGludDY0PihidWZmZXItPmdl
dEFjY2Vzc0ZsYWdzKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9C
VUZGRVJfTUFQUEVEOgotICAgICAgICAgICAgKnBhcmFtcyA9IHN0YXRpY19jYXN0PEdMaW50NjQ+
KGJ1ZmZlci0+aXNNYXBwZWQoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNl
IEdMX0JVRkZFUl9NQVBfT0ZGU0VUOgotICAgICAgICAgICAgKnBhcmFtcyA9IGJ1ZmZlci0+Z2V0
TWFwT2Zmc2V0KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX0JVRkZF
Ul9NQVBfTEVOR1RIOgotICAgICAgICAgICAgKnBhcmFtcyA9IGJ1ZmZlci0+Z2V0TWFwTGVuZ3Ro
KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgp
OyBicmVhazsKLSAgICAgICAgfQorICAgICAgICBCdWZmZXIgKmJ1ZmZlciA9IGNvbnRleHQtPmdl
dEdMU3RhdGUoKS5nZXRUYXJnZXRCdWZmZXIodGFyZ2V0KTsKKyAgICAgICAgUXVlcnlCdWZmZXJQ
YXJhbWV0ZXJpNjR2KGJ1ZmZlciwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCkBAIC0yMzI1
LDkgKzIwOTQsOSBAQAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRD
bGllbnRWZXJzaW9uKCkgPCAzKQorICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JW
ZXJzaW9uKCkgPCAzKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVy
biBHTF9GQUxTRTsKICAgICAgICAgfQogCkBAIC0yMzQ0LDIxICsyMTEzLDIxIEBACiAgICAgQ29u
dGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisg
ICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKHNhbXBsZXIgIT0gMCAmJiAhY29udGV4dC0+aXNTYW1wbGVyKHNhbXBsZXIpKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTikpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmICh1bml0ID49IGNvbnRleHQtPmdldENhcHMoKS5tYXhDb21iaW5lZFRleHR1cmVJ
bWFnZVVuaXRzKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIApAQCAtMjM4NSw3ICsyMTU0LDIwIEBACiAKIHZvaWQgR0xfQVBJRU5UUlkgU2FtcGxlclBh
cmFtZXRlcml2KEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50KiBwYXJh
bSkKIHsKLSAgICBTYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyLCBwbmFtZSwgKnBhcmFtKTsKKyAg
ICBFVkVOVCgiKEdMdWludCBzYW1wbGVyID0gJXUsIEdMZW51bSBwbmFtZSA9IDB4JVgsIGNvbnN0
IEdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIsIHNhbXBsZXIsCisgICAgICAgICAgcG5hbWUsIHBh
cmFtKTsKKworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsK
KyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcml2KGNvbnRl
eHQsIHNhbXBsZXIsIHBuYW1lLCBwYXJhbSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnRleHQtPnNhbXBsZXJQYXJhbWV0ZXJpdihzYW1w
bGVyLCBwbmFtZSwgcGFyYW0pOworICAgIH0KIH0KIAogdm9pZCBHTF9BUElFTlRSWSBTYW1wbGVy
UGFyYW1ldGVyZihHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQpA
QCAtMjQwNywzNCArMjE4OSwzNyBAQAogCiB2b2lkIEdMX0FQSUVOVFJZIFNhbXBsZXJQYXJhbWV0
ZXJmdihHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0KiBwYXJhbSkK
IHsKLSAgICBTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSwgKnBhcmFtKTsKLX0KKyAg
ICBFVkVOVCgiKEdMdWludCBzYW1wbGVyID0gJXUsIEdMZW51bSBwbmFtZSA9IDB4JVgsIGNvbnN0
IEdMZmxvYXQqIHBhcmFtcyA9IDB4JTAuOHApIiwgc2FtcGxlciwKKyAgICAgICAgICBwbmFtZSwg
cGFyYW0pOwogCi12b2lkIEdMX0FQSUVOVFJZIEdldFNhbXBsZXJQYXJhbWV0ZXJpdihHTHVpbnQg
c2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKQotewotICAgIEVWRU5UKCIoR0x1
aW50IHNhbXBsZXIgPSAldSwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xpbnQqIHBhcmFtcyA9IDB4
JTAuOHApIiwgc2FtcGxlciwgcG5hbWUsIHBhcmFtcyk7Ci0KICAgICBDb250ZXh0ICpjb250ZXh0
ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICAgICAgaWYgKCFj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVTYW1wbGVy
UGFyYW1ldGVyZnYoY29udGV4dCwgc2FtcGxlciwgcG5hbWUsIHBhcmFtKSkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghVmFs
aWRhdGVTYW1wbGVyT2JqZWN0UGFyYW1ldGVyKGNvbnRleHQsIHBuYW1lKSkKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPnNhbXBsZXJQ
YXJhbWV0ZXJmdihzYW1wbGVyLCBwbmFtZSwgcGFyYW0pOworICAgIH0KK30KIAotICAgICAgICBp
ZiAoIWNvbnRleHQtPmlzU2FtcGxlcihzYW1wbGVyKSkKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0U2Ft
cGxlclBhcmFtZXRlcml2KEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJh
bXMpCit7CisgICAgRVZFTlQoIihHTHVpbnQgc2FtcGxlciA9ICV1LCBHTGVudW0gcG5hbWUgPSAw
eCVYLCBHTGludCogcGFyYW1zID0gMHglMC44cCkiLCBzYW1wbGVyLCBwbmFtZSwKKyAgICAgICAg
ICBwYXJhbXMpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVy
aXYoY29udGV4dCwgc2FtcGxlciwgcG5hbWUsIHBhcmFtcykpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICAqcGFyYW1zID0gY29udGV4
dC0+Z2V0U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUpOworICAgICAgICBjb250ZXh0
LT5nZXRTYW1wbGVyUGFyYW1ldGVyaXYoc2FtcGxlciwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQog
fQogCkBAIC0yNDQ1LDI0ICsyMjMwLDEzIEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYg
KGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgICAgIGlmICghY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRlR2V0U2FtcGxlclBhcmFt
ZXRlcmZ2KGNvbnRleHQsIHNhbXBsZXIsIHBuYW1lLCBwYXJhbXMpKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFWYWxpZGF0
ZVNhbXBsZXJPYmplY3RQYXJhbWV0ZXIoY29udGV4dCwgcG5hbWUpKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIWNvbnRleHQtPmlzU2Ft
cGxlcihzYW1wbGVyKSkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgICpwYXJhbXMgPSBjb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVy
ZihzYW1wbGVyLCBwbmFtZSk7CisgICAgICAgIGNvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJm
dihzYW1wbGVyLCBwbmFtZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKQEAgLTI0NzMsMTUgKzIyNDcs
MTUgQEAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVy
c2lvbigpIDwgMykKKyAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigp
IDwgMykKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoaW5kZXggPj0gTUFYX1ZFUlRFWF9BVFRSSUJTKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZB
TFVFKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjQ5Niw5ICsy
MjcwLDkgQEAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50
VmVyc2lvbigpIDwgMykKKyAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lv
bigpIDwgMykKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApAQCAtMjUwNywxMCArMjI4MSwxMSBAQAogICAgICAgICAgIGNhc2UgR0xfVFJB
TlNGT1JNX0ZFRURCQUNLOgogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIC8vIENhbm5v
dCBiaW5kIGEgdHJhbnNmb3JtIGZlZWRiYWNrIG9iamVjdCBpZiB0aGUgY3VycmVudCBvbmUgaXMg
c3RhcnRlZCBhbmQgbm90IHBhdXNlZCAoMy4wLjIgcGcgODUgc2VjdGlvbiAyLjE0LjEpCi0gICAg
ICAgICAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2sgKmN1clRyYW5zZm9ybUZlZWRiYWNrID0gY29u
dGV4dC0+Z2V0U3RhdGUoKS5nZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICAgICAg
ICAgICAgICBUcmFuc2Zvcm1GZWVkYmFjayAqY3VyVHJhbnNmb3JtRmVlZGJhY2sgPQorICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0Q3VycmVudFRyYW5zZm9ybUZl
ZWRiYWNrKCk7CiAgICAgICAgICAgICAgICAgaWYgKGN1clRyYW5zZm9ybUZlZWRiYWNrICYmIGN1
clRyYW5zZm9ybUZlZWRiYWNrLT5pc0FjdGl2ZSgpICYmICFjdXJUcmFuc2Zvcm1GZWVkYmFjay0+
aXNQYXVzZWQoKSkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAKQEAg
LTI1MTcsNyArMjI5Miw3IEBACiAgICAgICAgICAgICAgICAgLy8gQ2Fubm90IGJpbmQgYSB0cmFu
c2Zvcm0gZmVlZGJhY2sgb2JqZWN0IHRoYXQgZG9lcyBub3QgZXhpc3QgKDMuMC4yIHBnIDg1IHNl
Y3Rpb24gMi4xNC4xKQogICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+aXNUcmFuc2Zvcm1G
ZWVkYmFja0dlbmVyYXRlZChpZCkpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgYmluZCBhIHRy
YW5zZm9ybSBmZWVkYmFjayBvYmplY3QgdGhhdCBkb2VzIG5vdCBleGlzdC4iKSk7CiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTI1MjgsNyArMjMwMyw3IEBACiAgICAgICAgICAgICBi
cmVhazsKIAogICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICB9CkBAIC0yNTc5LDkgKzIzNTQsOSBAQAogICAgIENvbnRleHQgKmNvbnRl
eHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgICAgICBpZiAo
Y29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwor
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKICAgICAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAgICAgICAgfQogCkBAIC0yNjA2
LDE5ICsyMzgxLDE5IEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdl
dENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpv
clZlcnNpb24oKSA8IDMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2sgKnRyYW5zZm9ybUZl
ZWRiYWNrID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJhY2so
KTsKKyAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2sgKnRyYW5zZm9ybUZlZWRiYWNrID0gY29udGV4
dC0+Z2V0R0xTdGF0ZSgpLmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpOwogICAgICAgICBB
U1NFUlQodHJhbnNmb3JtRmVlZGJhY2sgIT0gTlVMTCk7CiAKICAgICAgICAgLy8gQ3VycmVudCB0
cmFuc2Zvcm0gZmVlZGJhY2sgbXVzdCBiZSBhY3RpdmUgYW5kIG5vdCBwYXVzZWQgaW4gb3JkZXIg
dG8gcGF1c2UgKDMuMC4yIHBnIDg2KQogICAgICAgICBpZiAoIXRyYW5zZm9ybUZlZWRiYWNrLT5p
c0FjdGl2ZSgpIHx8IHRyYW5zZm9ybUZlZWRiYWNrLT5pc1BhdXNlZCgpKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TikpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yNjMzLDE5
ICsyNDA4LDE5IEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdldENs
aWVudFZlcnNpb24oKSA8IDMpCisgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZl
cnNpb24oKSA8IDMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2sgKnRyYW5zZm9ybUZlZWRi
YWNrID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJhY2soKTsK
KyAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2sgKnRyYW5zZm9ybUZlZWRiYWNrID0gY29udGV4dC0+
Z2V0R0xTdGF0ZSgpLmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpOwogICAgICAgICBBU1NF
UlQodHJhbnNmb3JtRmVlZGJhY2sgIT0gTlVMTCk7CiAKICAgICAgICAgLy8gQ3VycmVudCB0cmFu
c2Zvcm0gZmVlZGJhY2sgbXVzdCBiZSBhY3RpdmUgYW5kIHBhdXNlZCBpbiBvcmRlciB0byByZXN1
bWUgKDMuMC4yIHBnIDg2KQogICAgICAgICBpZiAoIXRyYW5zZm9ybUZlZWRiYWNrLT5pc0FjdGl2
ZSgpIHx8ICF0cmFuc2Zvcm1GZWVkYmFjay0+aXNQYXVzZWQoKSkKICAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjY3Miw3ICsyNDQ3
LDcgQEAKICAgICAgICAgRXJyb3IgZXJyb3IgPSBwcm9ncmFtT2JqZWN0LT5zYXZlQmluYXJ5KGJp
bmFyeUZvcm1hdCwgYmluYXJ5LCBidWZTaXplLCBsZW5ndGgpOwogICAgICAgICBpZiAoZXJyb3Iu
aXNFcnJvcigpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihl
cnJvcik7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0yNjk3LDcgKzI0NzIsNyBAQAogICAg
ICAgICBFcnJvciBlcnJvciA9IHByb2dyYW1PYmplY3QtPmxvYWRCaW5hcnkoYmluYXJ5Rm9ybWF0
LCBiaW5hcnksIGxlbmd0aCk7CiAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKGVycm9yKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKGVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgIH0KQEAgLTI3NjYsOSArMjU0MSw5IEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgICAgIGlmIChjb250
ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTI3ODMsNyArMjU1OCw3IEBA
CiAgICAgICAgIEVycm9yIGVycm9yID0gdGV4dHVyZS0+c2V0U3RvcmFnZSh0YXJnZXQsIGxldmVs
cywgaW50ZXJuYWxmb3JtYXQsIHNpemUpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7CisgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICB9CkBAIC0yNzk4LDkgKzI1NzMsOSBAQAogICAgIENvbnRleHQgKmNv
bnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgICAgICBp
ZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yODE1LDcgKzI1
OTAsNyBAQAogICAgICAgICBFcnJvciBlcnJvciA9IHRleHR1cmUtPnNldFN0b3JhZ2UodGFyZ2V0
LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCBzaXplKTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJy
b3IoKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZXJyb3Ip
OworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoZXJyb3IpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMjgzMCw1NSArMjYwNSwxNCBAQAogICAgIENv
bnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQor
ICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFW
YWxpZGF0ZUdldEludGVybmFsRm9ybWF0aXYoY29udGV4dCwgdGFyZ2V0LCBpbnRlcm5hbGZvcm1h
dCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcykpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBjb25zdCBUZXh0dXJlQ2FwcyAmZm9ybWF0
Q2FwcyA9IGNvbnRleHQtPmdldFRleHR1cmVDYXBzKCkuZ2V0KGludGVybmFsZm9ybWF0KTsKLSAg
ICAgICAgaWYgKCFmb3JtYXRDYXBzLnJlbmRlcmFibGUpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHRhcmdldCAhPSBHTF9SRU5ERVJC
VUZGRVIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKGJ1ZlNpemUgPCAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBzd2l0Y2ggKHBuYW1lKQotICAgICAgICB7Ci0gICAgICAg
ICAgY2FzZSBHTF9OVU1fU0FNUExFX0NPVU5UUzoKLSAgICAgICAgICAgIGlmIChidWZTaXplICE9
IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgKnBhcmFtcyA9IHN0YXRpY19jYXN0
PEdMaW50Pihmb3JtYXRDYXBzLnNhbXBsZUNvdW50cy5zaXplKCkpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICBjYXNlIEdMX1NBTVBMRVM6Ci0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgc2l6ZV90IHJldHVybkNvdW50ID0gc3RkOjptaW48c2l6
ZV90PihidWZTaXplLCBmb3JtYXRDYXBzLnNhbXBsZUNvdW50cy5zaXplKCkpOwotICAgICAgICAg
ICAgICAgIGF1dG8gc2FtcGxlUmV2ZXJzZUl0ID0gZm9ybWF0Q2Fwcy5zYW1wbGVDb3VudHMucmJl
Z2luKCk7Ci0gICAgICAgICAgICAgICAgZm9yIChzaXplX3Qgc2FtcGxlSW5kZXggPSAwOyBzYW1w
bGVJbmRleCA8IHJldHVybkNvdW50OyArK3NhbXBsZUluZGV4KQotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgcGFyYW1zW3NhbXBsZUluZGV4XSA9ICpzYW1wbGVSZXZlcnNl
SXQrKzs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJl
YWs7Ci0KLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KKyAgICAgICAgUXVlcnlJbnRlcm5hbEZvcm1hdGl2KGZvcm1hdENhcHMsIHBuYW1lLCBidWZT
aXplLCBwYXJhbXMpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzBfZXh0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVz
XzNfMF9leHQuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMF9leHQuY3BwCShub25leGlzdGVu
dCkKQEAgLTEsMTQgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodChjKSAyMDE0IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0v
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gZW50cnlfcG9pbnRzX2dsZXNf
M18wX2V4dC5jcHAgOiBJbXBsZW1lbnRzIHRoZSBHTEVTIDMuMCBleHRlbnNpb24gZW50cnkgcG9p
bnRzLgotCi0jaW5jbHVkZSAibGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMF9leHQuaCIK
LSNpbmNsdWRlICJsaWJHTEVTdjIvZ2xvYmFsX3N0YXRlLmgiCi0KLW5hbWVzcGFjZSBnbAotewot
fQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2lu
dHNfZ2xlc18zXzBfZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzBfZXh0LmgJKHJldmlzaW9uIDIwODAy
MSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRz
X2dsZXNfM18wX2V4dC5oCShub25leGlzdGVudCkKQEAgLTEsMjMgKzAsMCBAQAotLy8KLS8vIENv
cHlyaWdodChjKSAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgot
Ly8KLQotLy8gZW50cnlfcG9pbnRzX2dsZXNfM18wX2V4dC5oIDogRGVmaW5lcyB0aGUgR0xFUyAz
LjAgZXh0ZW5zaW9uIGVudHJ5IHBvaW50cy4KLQotI2lmbmRlZiBMSUJHTEVTVjJfRU5UUllQT0lO
VEdMRVMzMEVYVF9IXwotI2RlZmluZSBMSUJHTEVTVjJfRU5UUllQT0lOVEdMRVMzMEVYVF9IXwot
Ci0jaW5jbHVkZSA8R0xFUzMvZ2wzLmg+Ci0jaW5jbHVkZSA8R0xFUzMvZ2wzZXh0Lmg+Ci0jaW5j
bHVkZSA8ZXhwb3J0Lmg+Ci0KLW5hbWVzcGFjZSBnbAotewotCi0vLyBObyBHTEVTIDMuMCBleHRl
bnNpb25zIHlldAotCi19Ci0KLSNlbmRpZiAvLyBMSUJHTEVTVjJfRU5UUllQT0lOVEdMRVMzMEVY
VF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9w
b2ludHNfZ2xlc18zXzEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfM18xLmNwcAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVz
XzNfMS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjAxIEBACisvLworLy8gQ29weXJp
Z2h0KGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLwor
CisvLyBlbnRyeV9wb2ludHNfZ2xlc18zXzEuY3BwIDogSW1wbGVtZW50cyB0aGUgR0xFUyAzLjEg
RW50cnkgcG9pbnQuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfM18x
LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL2dsb2JhbF9zdGF0ZS5oIgorCisjaW5jbHVkZSAibGli
QU5HTEUvQ29udGV4dC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0Vycm9yLmgiCisKKyNpbmNsdWRl
ICJsaWJBTkdMRS92YWxpZGF0aW9uRVMzMS5oIgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgi
CisKK25hbWVzcGFjZSBnbAoreworCit2b2lkIEdMX0FQSUVOVFJZIERpc3BhdGNoQ29tcHV0ZShH
THVpbnQgbnVtR3JvdXBzWCwgR0x1aW50IG51bUdyb3Vwc1ksIEdMdWludCBudW1Hcm91cHNaKQor
eworICAgIEVWRU5UKCIoR0x1aW50IG51bUdyb3Vwc1ggPSAldSwgR0x1aW50IG51bUdyb3Vwc1kg
PSAldSwgbnVtR3JvdXBzWiA9ICV1IiwgbnVtR3JvdXBzWCwKKyAgICAgICAgICBudW1Hcm91cHNZ
LCBudW1Hcm91cHNaKTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVu
dGVkIikpOworICAgICAgICB9CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9Cit9CisK
K3ZvaWQgR0xfQVBJRU5UUlkgRGlzcGF0Y2hDb21wdXRlSW5kaXJlY3QoR0xpbnRwdHIgaW5kaXJl
Y3QpCit7CisgICAgRVZFTlQoIihHTGludHB0ciBpbmRpcmVjdCA9ICVkKSIsIGluZGlyZWN0KTsK
KyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYg
KGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAg
ICB9CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5U
UlkgRHJhd0FycmF5c0luZGlyZWN0KEdMZW51bSBtb2RlLCBjb25zdCB2b2lkICppbmRpcmVjdCkK
K3sKKyAgICBFVkVOVCgiKEdMZW51bSBtb2RlID0gMHglWCwgY29uc3Qgdm9pZCogaW5kaXJlY3Qp
IiwgbW9kZSwgaW5kaXJlY3QpOworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1w
bGVtZW50ZWQiKSk7CisgICAgICAgIH0KKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0K
K30KKwordm9pZCBHTF9BUElFTlRSWSBEcmF3RWxlbWVudHNJbmRpcmVjdChHTGVudW0gbW9kZSwg
R0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKmluZGlyZWN0KQoreworICAgIEVWRU5UKCIoR0xlbnVt
IG1vZGUgPSAweCVYLCBHTGVudW0gdHlwZSA9IDB4JVgsIGNvbnN0IHZvaWQqIGluZGlyZWN0KSIs
IG1vZGUsIHR5cGUsIGluZGlyZWN0KTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90
IGltcGxlbWVudGVkIikpOworICAgICAgICB9CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgRnJhbWVidWZmZXJQYXJhbWV0ZXJpKEdMZW51bSB0
YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCit7CisgICAgRVZFTlQoIihHTGVudW0g
dGFyZ2V0ID0gMHglWCwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xpbnQgcGFyYW0gPSAlZCkiLCB0
YXJnZXQsIHBuYW1lLCBwYXJhbSk7CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBp
bXBsZW1lbnRlZCIpKTsKKyAgICAgICAgfQorICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAg
fQorfQorCit2b2lkIEdMX0FQSUVOVFJZIEdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXYoR0xlbnVt
IHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQoreworICAgIEVWRU5UKCIoR0xl
bnVtIHRhcmdldCA9IDB4JVgsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMaW50KiBwYXJhbXMgPSAw
eCUwLjhwKSIsIHRhcmdldCwgcG5hbWUsCisgICAgICAgICAgcGFyYW1zKTsKKyAgICBDb250ZXh0
ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisg
ICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICB9CisgICAgICAg
IFVOSU1QTEVNRU5URUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0UHJvZ3Jh
bUludGVyZmFjZWl2KEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQoreworICAgIEVWRU5UKAorICAgICAgICAi
KEdMdWludCBwcm9ncmFtID0gJXUsIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNlID0gMHglWCwgR0xl
bnVtIHBuYW1lID0gMHglWCwgR0xpbnQqIHBhcmFtcyAiCisgICAgICAgICI9IDB4JTAuOHApIiwK
KyAgICAgICAgcHJvZ3JhbSwgcHJvZ3JhbUludGVyZmFjZSwgcG5hbWUsIHBhcmFtcyk7CisgICAg
Q29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250
ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAg
ICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgfQor
ICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQorfQorCitHTHVpbnQgR0xfQVBJRU5UUlkg
R2V0UHJvZ3JhbVJlc291cmNlSW5kZXgoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1l
KQoreworICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAldSwgR0xlbnVtIHByb2dyYW1JbnRl
cmZhY2UgPSAweCVYLCBjb25zdCBHTGNoYXIqIG5hbWUgPSAweCUwLjhwKSIsCisgICAgICAgICAg
cHJvZ3JhbSwgcHJvZ3JhbUludGVyZmFjZSwgbmFtZSk7CisgICAgQ29udGV4dCAqY29udGV4dCA9
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAg
ICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAgICB7CisgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5
IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgfQorICAgICAgICBVTklNUExFTUVO
VEVEKCk7CisgICAgfQorICAgIHJldHVybiAwdTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBHZXRQ
cm9ncmFtUmVzb3VyY2VOYW1lKEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqbmFtZSkKK3sKKyAgICBFVkVOVCgK
KyAgICAgICAgIihHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSA9
IDB4JVgsIEdMdWludCBpbmRleCA9ICV1LCBHTHNpemVpIGJ1ZlNpemUgIgorICAgICAgICAiPSAl
ZCwgR0xzaXplaSogbGVuZ3RoID0gMHglMC44cCwgR0xjaGFyKiBuYW1lID0gMHglMC44cCkiLAor
ICAgICAgICBwcm9ncmFtLCBwcm9ncmFtSW50ZXJmYWNlLCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3Ro
LCBuYW1lKTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7
CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikp
OworICAgICAgICB9CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9Cit9CisKK3ZvaWQg
R0xfQVBJRU5UUlkgR2V0UHJvZ3JhbVJlc291cmNlaXYoR0x1aW50IHByb2dyYW0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgcHJvcENvdW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKnByb3BzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3sKKyAg
ICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGVudW0gcHJvZ3JhbUlu
dGVyZmFjZSA9IDB4JVgsIEdMdWludCBpbmRleCA9ICV1LCBHTHNpemVpICIKKyAgICAgICAgInBy
b3BDb3VudCA9ICVkLCBjb25zdCBHTGVudW0qIHByb3BzID0gMHglMC44cCwgR0xzaXplaSBidWZT
aXplID0gJWQsIEdMc2l6ZWkqIGxlbmd0aCA9ICIKKyAgICAgICAgIjB4JTAuOHAsIEdMaW50KiBw
YXJhbXMgPSAweCUwLjhwKSIsCisgICAgICAgIHByb2dyYW0sIHByb2dyYW1JbnRlcmZhY2UsIGlu
ZGV4LCBwcm9wQ291bnQsIHByb3BzLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CisgICAgQ29u
dGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0
KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAg
ICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgfQorICAg
ICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQorfQorCitHTGludCBHTF9BUElFTlRSWSBHZXRQ
cm9ncmFtUmVzb3VyY2VMb2NhdGlvbihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpu
YW1lKQoreworICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAldSwgR0xlbnVtIHByb2dyYW1J
bnRlcmZhY2UgPSAweCVYLCBjb25zdCBHTGNoYXIqIG5hbWUgPSAweCUwLjhwKSIsCisgICAgICAg
ICAgcHJvZ3JhbSwgcHJvZ3JhbUludGVyZmFjZSwgbmFtZSk7CisgICAgQ29udGV4dCAqY29udGV4
dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAg
ICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAgICB7CisgICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVu
dHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgfQorICAgICAgICBVTklNUExF
TUVOVEVEKCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCit2b2lkIEdMX0FQSUVOVFJZIFVz
ZVByb2dyYW1TdGFnZXMoR0x1aW50IHBpcGVsaW5lLCBHTGJpdGZpZWxkIHN0YWdlcywgR0x1aW50
IHByb2dyYW0pCit7CisgICAgRVZFTlQoIihHTHVpbnQgcGlwZWxpbmUgPSAldSwgR0xiaXRmaWVs
ZCBzdGFnZXMgPSAweCVYLCBHTHVpbnQgcHJvZ3JhbSA9ICV1KSIsIHBpcGVsaW5lLCBzdGFnZXMs
CisgICAgICAgICAgcHJvZ3JhbSk7CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBp
bXBsZW1lbnRlZCIpKTsKKyAgICAgICAgfQorICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAg
fQorfQorCit2b2lkIEdMX0FQSUVOVFJZIEFjdGl2ZVNoYWRlclByb2dyYW0oR0x1aW50IHBpcGVs
aW5lLCBHTHVpbnQgcHJvZ3JhbSkKK3sKKyAgICBFVkVOVCgiKEdMdWludCBwaXBlbGluZSA9ICV1
LCBHTHVpbnQgcHJvZ3JhbSA9ICV1KSIsIHBpcGVsaW5lLCBwcm9ncmFtKTsKKyAgICBDb250ZXh0
ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisg
ICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICB9CisgICAgICAg
IFVOSU1QTEVNRU5URUQoKTsKKyAgICB9Cit9CisKK0dMdWludCBHTF9BUElFTlRSWSBDcmVhdGVT
aGFkZXJQcm9ncmFtdihHTGVudW0gdHlwZSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xjaGFyICpj
b25zdCAqc3RyaW5ncykKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0eXBlID0gJTB4JVgsIEdMc2l6
ZWkgY291bnQgPSAlZCwgY29uc3QgR0xjaGFyICpjb25zdCogPSAweCUwLjhwKSIsIHR5cGUsIGNv
dW50LAorICAgICAgICAgIHN0cmluZ3MpOworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICgh
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBu
b3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgIH0KKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgIH0KKyAgICByZXR1cm4gMHU7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgQmluZFByb2dyYW1Q
aXBlbGluZShHTHVpbnQgcGlwZWxpbmUpCit7CisgICAgRVZFTlQoIihHTHVpbnQgcGlwZWxpbmUg
PSAldSkiLCBwaXBlbGluZSk7CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBs
ZW1lbnRlZCIpKTsKKyAgICAgICAgfQorICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQor
fQorCit2b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVByb2dyYW1QaXBlbGluZXMoR0xzaXplaSBuLCBj
b25zdCBHTHVpbnQgKnBpcGVsaW5lcykKK3sKKyAgICBFVkVOVCgiKEdMc2l6ZWkgbiA9ICVkLCBj
b25zdCBHTHVpbnQqIHBpcGVsaW5lcyA9IDB4JTAuOHApIiwgbiwgcGlwZWxpbmVzKTsKKyAgICBD
b250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRl
eHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICB9Cisg
ICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgR2Vu
UHJvZ3JhbVBpcGVsaW5lcyhHTHNpemVpIG4sIEdMdWludCAqcGlwZWxpbmVzKQoreworICAgIEVW
RU5UKCIoR0xzaXplaSBuID0gJWQsIEdMdWludCogcGlwZWxpbmVzID0gMHglMC44cCkiLCBuLCBw
aXBlbGluZXMpOworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQi
KSk7CisgICAgICAgIH0KKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0KK30KKworR0xi
b29sZWFuIEdMX0FQSUVOVFJZIElzUHJvZ3JhbVBpcGVsaW5lKEdMdWludCBwaXBlbGluZSkKK3sK
KyAgICBFVkVOVCgiKEdMdWludCBwaXBlbGluZSA9ICV1KSIsIHBpcGVsaW5lKTsKKyAgICBDb250
ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQp
CisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICB9CisgICAg
ICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lk
IEdMX0FQSUVOVFJZIEdldFByb2dyYW1QaXBlbGluZWl2KEdMdWludCBwaXBlbGluZSwgR0xlbnVt
IHBuYW1lLCBHTGludCAqcGFyYW1zKQoreworICAgIEVWRU5UKCIoR0x1aW50IHBpcGVsaW5lID0g
JXUsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIsIHBpcGVs
aW5lLCBwbmFtZSwKKyAgICAgICAgICBwYXJhbXMpOworICAgIENvbnRleHQgKmNvbnRleHQgPSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAg
IGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgeworICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBw
b2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgIH0KKyAgICAgICAgVU5JTVBMRU1FTlRF
RCgpOworICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTFpKEdMdWlu
dCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQgdjApCit7CisgICAgRVZFTlQoIihHTHVp
bnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTGludCB2MCA9ICVkKSIsIHBy
b2dyYW0sIGxvY2F0aW9uLCB2MCk7CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBp
bXBsZW1lbnRlZCIpKTsKKyAgICAgICAgfQorICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAg
fQorfQorCit2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMmkoR0x1aW50IHByb2dyYW0s
IEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCwgR0xpbnQgdjEpCit7CisgICAgRVZFTlQoIihHTHVp
bnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTGludCB2MCA9ICVkLCBHTGlu
dCB2MSA9ICVkKSIsIHByb2dyYW0sCisgICAgICAgICAgbG9jYXRpb24sIHYwLCB2MSk7CisgICAg
Q29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250
ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAg
ICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgfQor
ICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQorfQorCit2b2lkIEdMX0FQSUVOVFJZIFBy
b2dyYW1Vbmlmb3JtM2koR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCwg
R0xpbnQgdjEsIEdMaW50IHYyKQoreworICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAldSwg
R0xpbnQgbG9jYXRpb24gPSAlZCwgR0xpbnQgdjAgPSAlZCwgR0xpbnQgdjEgPSAlZCwgR0xpbnQg
djIgPSAlZCkiLAorICAgICAgICAgIHByb2dyYW0sIGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAg
ICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNv
bnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICB9
CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkK
K1Byb2dyYW1Vbmlmb3JtNGkoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCB2
MCwgR0xpbnQgdjEsIEdMaW50IHYyLCBHTGludCB2MykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAg
IihHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTGludCB2MCA9ICVk
LCBHTGludCB2MSA9ICVkLCBHTGludCB2MiA9ICVkLCAiCisgICAgICAgICJHTGludCB2MyA9ICVk
KSIsCisgICAgICAgIHByb2dyYW0sIGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CisgICAgQ29u
dGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0
KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAg
ICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgfQorICAg
ICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQorfQorCit2b2lkIEdMX0FQSUVOVFJZIFByb2dy
YW1Vbmlmb3JtMXVpKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0x1aW50IHYwKQor
eworICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwg
R0x1aW50IHYwID0gJXUpIiwgcHJvZ3JhbSwgbG9jYXRpb24sIHYwKTsKKyAgICBDb250ZXh0ICpj
b250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAg
eworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICB9CisgICAgICAgIFVO
SU1QTEVNRU5URUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZv
cm0ydWkoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2
MSkKK3sKKyAgICBFVkVOVCgiKEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0g
JWQsIEdMdWludCB2MCA9ICV1LCBHTHVpbnQgdjEgPSAldSkiLCBwcm9ncmFtLAorICAgICAgICAg
IGxvY2F0aW9uLCB2MCwgdjEpOworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1w
bGVtZW50ZWQiKSk7CisgICAgICAgIH0KKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0K
K30KKwordm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTN1aShHTHVpbnQgcHJvZ3JhbSwg
R0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCwgR0x1aW50IHYxLCBHTHVpbnQgdjIpCit7CisgICAg
RVZFTlQoCisgICAgICAgICIoR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAl
ZCwgR0x1aW50IHYwID0gJXUsIEdMdWludCB2MSA9ICV1LCBHTHVpbnQgdjIgPSAiCisgICAgICAg
ICIldSkiLAorICAgICAgICBwcm9ncmFtLCBsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CisgICAgQ29u
dGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0
KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAg
ICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgfQorICAg
ICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQorfQorCit2b2lkIEdMX0FQSUVOVFJZCitQcm9n
cmFtVW5pZm9ybTR1aShHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCwg
R0x1aW50IHYxLCBHTHVpbnQgdjIsIEdMdWludCB2MykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAg
IihHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHVpbnQgdjAgPSAl
dSwgR0x1aW50IHYxID0gJXUsIEdMdWludCB2MiA9ICIKKyAgICAgICAgIiV1LCBHTHVpbnQgdjMg
PSAldSkiLAorICAgICAgICBwcm9ncmFtLCBsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAg
IENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29u
dGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgIH0K
KyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBQ
cm9ncmFtVW5pZm9ybTFmKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2
MCkKK3sKKyAgICBFVkVOVCgiKEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0g
JWQsIEdMZmxvYXQgdjAgPSAlZykiLCBwcm9ncmFtLCBsb2NhdGlvbiwgdjApOworICAgIENvbnRl
eHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkK
KyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAg
eworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgIH0KKyAgICAg
ICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBQcm9ncmFt
VW5pZm9ybTJmKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCwgR0xm
bG9hdCB2MSkKK3sKKyAgICBFVkVOVCgiKEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0
aW9uID0gJWQsIEdMZmxvYXQgdjAgPSAlZywgR0xmbG9hdCB2MSA9ICVnKSIsIHByb2dyYW0sCisg
ICAgICAgICAgbG9jYXRpb24sIHYwLCB2MSk7CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYg
KCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50
IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgfQorICAgICAgICBVTklNUExFTUVOVEVEKCk7
CisgICAgfQorfQorCit2b2lkIEdMX0FQSUVOVFJZCitQcm9ncmFtVW5pZm9ybTNmKEdMdWludCBw
cm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCwgR0xmbG9hdCB2MSwgR0xmbG9hdCB2
MikKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBs
b2NhdGlvbiA9ICVkLCBHTGZsb2F0IHYwID0gJWcsIEdMZmxvYXQgdjEgPSAlZywgR0xmbG9hdCB2
MiA9ICIKKyAgICAgICAgIiVnKSIsCisgICAgICAgIHByb2dyYW0sIGxvY2F0aW9uLCB2MCwgdjEs
IHYyKTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Cisg
ICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOwor
ICAgICAgICB9CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgR0xf
QVBJRU5UUlkKK1Byb2dyYW1Vbmlmb3JtNGYoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9u
LCBHTGZsb2F0IHYwLCBHTGZsb2F0IHYxLCBHTGZsb2F0IHYyLCBHTGZsb2F0IHYzKQoreworICAg
IEVWRU5UKAorICAgICAgICAiKEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0g
JWQsIEdMZmxvYXQgdjAgPSAlZywgR0xmbG9hdCB2MSA9ICVnLCBHTGZsb2F0IHYyID0gIgorICAg
ICAgICAiJWcsIEdMZmxvYXQgdjMgPSAlZykiLAorICAgICAgICBwcm9ncmFtLCBsb2NhdGlvbiwg
djAsIHYxLCB2MiwgdjMpOworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVt
ZW50ZWQiKSk7CisgICAgICAgIH0KKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0KK30K
Kwordm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTFpdihHTHVpbnQgcHJvZ3JhbSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSkKK3sKKyAgICBFVkVOVCgK
KyAgICAgICAgIihHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNp
emVpIGNvdW50ID0gJWQsIGNvbnN0IEdMaW50KiB2YWx1ZSA9ICIKKyAgICAgICAgIjB4JTAuOHAp
IiwKKyAgICAgICAgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgQ29udGV4
dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQor
ICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAgICB7
CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgfQorICAgICAg
ICBVTklNUExFTUVOVEVEKCk7CisgICAgfQorfQorCit2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1V
bmlmb3JtMml2KEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xpbnQgKnZhbHVlKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdMdWludCBwcm9ncmFtID0g
JXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0xpbnQq
IHZhbHVlID0gIgorICAgICAgICAiMHglMC44cCkiLAorICAgICAgICBwcm9ncmFtLCBsb2NhdGlv
biwgY291bnQsIHZhbHVlKTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxl
bWVudGVkIikpOworICAgICAgICB9CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9Cit9
CisKK3ZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0zaXYoR0x1aW50IHByb2dyYW0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUpCit7CisgICAgRVZFTlQo
CisgICAgICAgICIoR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xz
aXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGludCogdmFsdWUgPSAiCisgICAgICAgICIweCUwLjhw
KSIsCisgICAgICAgIHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgIENvbnRl
eHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkK
KyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAg
eworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgIH0KKyAgICAg
ICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBQcm9ncmFt
VW5pZm9ybTRpdihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMaW50ICp2YWx1ZSkKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQgcHJvZ3JhbSA9
ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0IEdMaW50
KiB2YWx1ZSA9ICIKKyAgICAgICAgIjB4JTAuOHApIiwKKyAgICAgICAgcHJvZ3JhbSwgbG9jYXRp
b24sIGNvdW50LCB2YWx1ZSk7CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBs
ZW1lbnRlZCIpKTsKKyAgICAgICAgfQorICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQor
fQorCit2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMXVpdihHTHVpbnQgcHJvZ3JhbSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpCit7CisgICAg
RVZFTlQoCisgICAgICAgICIoR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAl
ZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTHVpbnQqIHZhbHVlID0gIgorICAgICAgICAi
MHglMC44cCkiLAorICAgICAgICBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAg
ICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNv
bnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICB9
CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkg
UHJvZ3JhbVVuaWZvcm0ydWl2KEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSkKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVp
bnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQs
IGNvbnN0IEdMdWludCogdmFsdWUgPSAiCisgICAgICAgICIweCUwLjhwKSIsCisgICAgICAgIHBy
b2dyYW0sIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgIENvbnRleHQgKmNvbnRleHQgPSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAg
IGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgeworICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBw
b2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgIH0KKyAgICAgICAgVU5JTVBMRU1FTlRF
RCgpOworICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTN1aXYoR0x1
aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
b2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZh
bHVlKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50
IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0x1aW50KiB2YWx1ZSA9
ICIKKyAgICAgICAgIjB4JTAuOHApIiwKKyAgICAgICAgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50
LCB2YWx1ZSk7CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
OworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIp
KTsKKyAgICAgICAgfQorICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQorfQorCit2b2lk
IEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtNHVpdihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpCit7CisgICAgRVZFTlQoCisg
ICAgICAgICIoR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXpl
aSBjb3VudCA9ICVkLCBjb25zdCBHTHVpbnQqIHZhbHVlID0gIgorICAgICAgICAiMHglMC44cCki
LAorICAgICAgICBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICBDb250ZXh0
ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisg
ICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICB9CisgICAgICAg
IFVOSU1QTEVNRU5URUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVu
aWZvcm0xZnYoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICp2YWx1ZSkKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQgcHJvZ3JhbSA9
ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0IEdMZmxv
YXQqIHZhbHVlID0gIgorICAgICAgICAiMHglMC44cCkiLAorICAgICAgICBwcm9ncmFtLCBsb2Nh
dGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGlt
cGxlbWVudGVkIikpOworICAgICAgICB9CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9
Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0yZnYoR0x1aW50IHByb2dyYW0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3sKKyAgICBF
VkVOVCgKKyAgICAgICAgIihHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVk
LCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0IEdMZmxvYXQqIHZhbHVlID0gIgorICAgICAgICAi
MHglMC44cCkiLAorICAgICAgICBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAg
ICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNv
bnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICB9
CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkg
UHJvZ3JhbVVuaWZvcm0zZnYoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQg
cHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIGNv
bnN0IEdMZmxvYXQqIHZhbHVlID0gIgorICAgICAgICAiMHglMC44cCkiLAorICAgICAgICBwcm9n
cmFtLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBp
ZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9p
bnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICB9CisgICAgICAgIFVOSU1QTEVNRU5URUQo
KTsKKyAgICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm00ZnYoR0x1aW50
IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkK
K3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2Nh
dGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0IEdMZmxvYXQqIHZhbHVlID0gIgor
ICAgICAgICAiMHglMC44cCkiLAorICAgICAgICBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsIHZh
bHVlKTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Cisg
ICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOwor
ICAgICAgICB9CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgR0xf
QVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnYoR0x1aW50IHByb2dyYW0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2
YWx1ZSkKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGlu
dCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIEdMYm9vbGVhbiB0cmFuc3Bvc2Ug
PSAldSwgIgorICAgICAgICAiY29uc3QgR0xmbG9hdCogdmFsdWUgPSAweCUwLjhwKSIsCisgICAg
ICAgIHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgQ29u
dGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0
KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAg
ICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgfQorICAg
ICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQorfQorCit2b2lkIEdMX0FQSUVOVFJZIFByb2dy
YW1Vbmlmb3JtTWF0cml4M2Z2KEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit7CisgICAg
RVZFTlQoCisgICAgICAgICIoR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAl
ZCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTGJvb2xlYW4gdHJhbnNwb3NlID0gJXUsICIKKyAgICAg
ICAgImNvbnN0IEdMZmxvYXQqIHZhbHVlID0gMHglMC44cCkiLAorICAgICAgICBwcm9ncmFtLCBs
b2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgIENvbnRleHQgKmNvbnRleHQg
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAg
ICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRy
eSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgIH0KKyAgICAgICAgVU5JTVBMRU1F
TlRFRCgpOworICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJp
eDRmdihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQoreworICAgIEVWRU5UKAorICAgICAg
ICAiKEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291
bnQgPSAlZCwgR0xib29sZWFuIHRyYW5zcG9zZSA9ICV1LCAiCisgICAgICAgICJjb25zdCBHTGZs
b2F0KiB2YWx1ZSA9IDB4JTAuOHApIiwKKyAgICAgICAgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50
LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGlt
cGxlbWVudGVkIikpOworICAgICAgICB9CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9
Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdihHTHVpbnQg
cHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit7CisgICAgRVZFTlQoCisgICAgICAgICIo
R0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9
ICVkLCBHTGJvb2xlYW4gdHJhbnNwb3NlID0gJXUsICIKKyAgICAgICAgImNvbnN0IEdMZmxvYXQq
IHZhbHVlID0gMHglMC44cCkiLAorICAgICAgICBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsIHRy
YW5zcG9zZSwgdmFsdWUpOworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVt
ZW50ZWQiKSk7CisgICAgICAgIH0KKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0KK30K
Kwordm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmZ2KEdMdWludCBwcm9n
cmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi
b29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVp
bnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQs
IEdMYm9vbGVhbiB0cmFuc3Bvc2UgPSAldSwgIgorICAgICAgICAiY29uc3QgR0xmbG9hdCogdmFs
dWUgPSAweCUwLjhwKSIsCisgICAgICAgIHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNw
b3NlLCB2YWx1ZSk7CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRl
ZCIpKTsKKyAgICAgICAgfQorICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQorfQorCit2
b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnYoR0x1aW50IHByb2dyYW0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBj
b3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xl
YW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKnZhbHVlKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdMdWludCBw
cm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xi
b29sZWFuIHRyYW5zcG9zZSA9ICV1LCAiCisgICAgICAgICJjb25zdCBHTGZsb2F0KiB2YWx1ZSA9
IDB4JTAuOHApIiwKKyAgICAgICAgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2Us
IHZhbHVlKTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7
CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikp
OworICAgICAgICB9CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9Cit9CisKK3ZvaWQg
R0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJmdihHTHVpbnQgcHJvZ3JhbSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0
cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xmbG9hdCAqdmFsdWUpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0x1aW50IHByb2dy
YW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTGJvb2xl
YW4gdHJhbnNwb3NlID0gJXUsICIKKyAgICAgICAgImNvbnN0IEdMZmxvYXQqIHZhbHVlID0gMHgl
MC44cCkiLAorICAgICAgICBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFs
dWUpOworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAg
ICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0KK30KKwordm9pZCBHTF9B
UElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGZ2KEdMdWludCBwcm9ncmFtLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5z
cG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICp2YWx1ZSkKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQgcHJvZ3JhbSA9
ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIEdMYm9vbGVhbiB0
cmFuc3Bvc2UgPSAldSwgIgorICAgICAgICAiY29uc3QgR0xmbG9hdCogdmFsdWUgPSAweCUwLjhw
KSIsCisgICAgICAgIHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7
CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlm
IChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
KQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAg
ICAgfQorICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQorfQorCit2b2lkIEdMX0FQSUVO
VFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4NHgzZnYoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3Nl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxv
YXQgKnZhbHVlKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEdMdWludCBwcm9ncmFtID0gJXUs
IEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xib29sZWFuIHRyYW5z
cG9zZSA9ICV1LCAiCisgICAgICAgICJjb25zdCBHTGZsb2F0KiB2YWx1ZSA9IDB4JTAuOHApIiwK
KyAgICAgICAgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAg
ICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNv
bnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICB9
CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkg
VmFsaWRhdGVQcm9ncmFtUGlwZWxpbmUoR0x1aW50IHBpcGVsaW5lKQoreworICAgIEVWRU5UKCIo
R0x1aW50IHBpcGVsaW5lID0gJXUpIiwgcGlwZWxpbmUpOworICAgIENvbnRleHQgKmNvbnRleHQg
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAg
ICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRy
eSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgIH0KKyAgICAgICAgVU5JTVBMRU1F
TlRFRCgpOworICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtUGlwZWxpbmVJ
bmZvTG9nKEdMdWludCBwaXBlbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMY2hhciAqaW5mb0xvZykKK3sKKyAgICBFVkVOVCgKKyAgICAg
ICAgIihHTHVpbnQgcGlwZWxpbmUgPSAldSwgR0xzaXplaSBidWZTaXplID0gJWQsIEdMc2l6ZWkq
IGxlbmd0aCA9IDB4JTAuOHAsIEdMY2hhciogaW5mb0xvZyA9ICIKKyAgICAgICAgIjB4JTAuOHAp
IiwKKyAgICAgICAgcGlwZWxpbmUsIGJ1ZlNpemUsIGxlbmd0aCwgaW5mb0xvZyk7CisgICAgQ29u
dGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0
KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAg
ICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgfQorICAg
ICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQorfQorCit2b2lkIEdMX0FQSUVOVFJZIEJpbmRJ
bWFnZVRleHR1cmUoR0x1aW50IHVuaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IHRleHR1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGxh
eWVyZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGF5ZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGFjY2VzcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0KQoreworICAgIEVWRU5UKAor
ICAgICAgICAiKEdMdWludCB1bml0ID0gJXUsIEdMdWludCB0ZXh0dXJlID0gJXUsIEdMaW50IGxl
dmVsID0gJWQsIEdMYm9vbGVhbiBsYXllcmVkID0gJXUsIEdMaW50ICIKKyAgICAgICAgImxheWVy
ID0gJWQsIEdMZW51bSBhY2Nlc3MgPSAweCVYLCBHTGVudW0gZm9ybWF0ID0gMHglWCkiLAorICAg
ICAgICB1bml0LCB0ZXh0dXJlLCBsZXZlbCwgbGF5ZXJlZCwgbGF5ZXIsIGFjY2VzcywgZm9ybWF0
KTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAg
aWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAg
ICAgICB9CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgR0xfQVBJ
RU5UUlkgR2V0Qm9vbGVhbmlfdihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMYm9vbGVh
biAqZGF0YSkKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTHVpbnQgaW5k
ZXggPSAldSwgR0xib29sZWFuKiBkYXRhID0gMHglMC44cCkiLCB0YXJnZXQsIGluZGV4LAorICAg
ICAgICAgIGRhdGEpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZUdldEJvb2xlYW5pX3YoY29udGV4dCwgdGFyZ2V0
LCBpbmRleCwgZGF0YSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBjb250ZXh0LT5nZXRCb29sZWFuaV92KHRhcmdldCwgaW5kZXgsIGRhdGEpOwor
ICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBNZW1vcnlCYXJyaWVyKEdMYml0ZmllbGQgYmFy
cmllcnMpCit7CisgICAgRVZFTlQoIihHTGJpdGZpZWxkIGJhcnJpZXJzID0gMHglWCkiLCBiYXJy
aWVycyk7CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwor
ICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsK
KyAgICAgICAgfQorICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQorfQorCit2b2lkIEdM
X0FQSUVOVFJZIE1lbW9yeUJhcnJpZXJCeVJlZ2lvbihHTGJpdGZpZWxkIGJhcnJpZXJzKQorewor
ICAgIEVWRU5UKCIoR0xiaXRmaWVsZCBiYXJyaWVycyA9IDB4JVgpIiwgYmFycmllcnMpOworICAg
IENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29u
dGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgIH0K
KyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBU
ZXhTdG9yYWdlMkRNdWx0aXNhbXBsZShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBmaXhlZHNhbXBsZWxv
Y2F0aW9ucykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTGVudW0gdGFyZ2V0ID0gMHglWCwg
R0xzaXplaSBzYW1wbGVzID0gJWQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCA9IDB4JVgsIEdMc2l6
ZWkgd2lkdGggIgorICAgICAgICAiPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwgR0xib29sZWFu
IGZpeGVkc2FtcGxlbG9jYXRpb25zID0gJXUpIiwKKyAgICAgICAgdGFyZ2V0LCBzYW1wbGVzLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZml4ZWRzYW1wbGVsb2NhdGlvbnMpOworICAg
IENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29u
dGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgIH0K
KyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBH
ZXRNdWx0aXNhbXBsZWZ2KEdMZW51bSBwbmFtZSwgR0x1aW50IGluZGV4LCBHTGZsb2F0ICp2YWwp
Cit7CisgICAgRVZFTlQoIihHTGVudW0gcG5hbWUgPSAweCVYLCBHTHVpbnQgaW5kZXggPSAldSwg
R0xmbG9hdCogdmFsID0gMHglMC44cCkiLCBwbmFtZSwgaW5kZXgsIHZhbCk7CisgICAgVU5JTVBM
RU1FTlRFRCgpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIFNhbXBsZU1hc2tpKEdMdWludCBtYXNr
TnVtYmVyLCBHTGJpdGZpZWxkIG1hc2spCit7CisgICAgRVZFTlQoIihHTHVpbnQgbWFza051bWJl
ciA9ICV1LCBHTGJpdGZpZWxkIG1hc2sgPSAweCVYKSIsIG1hc2tOdW1iZXIsIG1hc2spOworICAg
IENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29u
dGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgIH0K
KyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBH
ZXRUZXhMZXZlbFBhcmFtZXRlcml2KEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0g
cG5hbWUsIEdMaW50ICpwYXJhbXMpCit7CisgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHgl
WCwgR0xpbnQgbGV2ZWwgPSAlZCwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xpbnQqIHBhcmFtcyA9
IDB4JTAuOHApIiwKKyAgICAgICAgICB0YXJnZXQsIGxldmVsLCBwbmFtZSwgcGFyYW1zKTsKKyAg
ICBVTklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4TGV2ZWxQYXJh
bWV0ZXJmdihHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0
ICpwYXJhbXMpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0xlbnVtIHRhcmdldCA9IDB4JVgs
IEdMaW50IGxldmVsID0gJWQsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMZmxvYXQqIHBhcmFtcyA9
IDB4JTAuOHApIiwKKyAgICAgICAgdGFyZ2V0LCBsZXZlbCwgcG5hbWUsIHBhcmFtcyk7CisgICAg
Q29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250
ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAg
ICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgfQor
ICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQorfQorCit2b2lkIEdMX0FQSUVOVFJZIEJp
bmRWZXJ0ZXhCdWZmZXIoR0x1aW50IGJpbmRpbmdpbmRleCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50cHRyIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIHN0cmlkZSkKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTHVpbnQgYmluZGlu
Z2luZGV4ID0gJXUsIEdMdWludCBidWZmZXIgPSAldSwgR0xpbnRwdHIgb2Zmc2V0ID0gJWQsIEdM
c2l6ZWkgc3RyaWRlID0gJWQpIiwKKyAgICAgICAgYmluZGluZ2luZGV4LCBidWZmZXIsIG9mZnNl
dCwgc3RyaWRlKTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVk
IikpOworICAgICAgICB9CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9Cit9CisKK3Zv
aWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliRm9ybWF0KEdMdWludCBhdHRyaWJpbmRleCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBub3JtYWxpemVkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHJlbGF0aXZlb2Zmc2V0KQoreworICAgIEVWRU5U
KAorICAgICAgICAiKEdMdWludCBhdHRyaWJpbmRleCA9ICV1LCBHTGludCBzaXplID0gJWQsIEdM
ZW51bSB0eXBlID0gMHglWCwgR0xib29sZWFuIG5vcm1hbGl6ZWQgPSAldSwgIgorICAgICAgICAi
R0x1aW50IHJlbGF0aXZlb2Zmc2V0ID0gJXUpIiwKKyAgICAgICAgYXR0cmliaW5kZXgsIHNpemUs
IHR5cGUsIG5vcm1hbGl6ZWQsIHJlbGF0aXZlb2Zmc2V0KTsKKyAgICBDb250ZXh0ICpjb250ZXh0
ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAg
ICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50
cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICB9CisgICAgICAgIFVOSU1QTEVN
RU5URUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliSUZvcm1h
dChHTHVpbnQgYXR0cmliaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcmVs
YXRpdmVvZmZzZXQpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0x1aW50IGF0dHJpYmluZGV4
ID0gJXUsIEdMaW50IHNpemUgPSAlZCwgR0xlbnVtIHR5cGUgPSAweCVYLCBHTHVpbnQgcmVsYXRp
dmVvZmZzZXQgPSAiCisgICAgICAgICIldSkiLAorICAgICAgICBhdHRyaWJpbmRleCwgc2l6ZSwg
dHlwZSwgcmVsYXRpdmVvZmZzZXQpOworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3Qg
aW1wbGVtZW50ZWQiKSk7CisgICAgICAgIH0KKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAg
IH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJCaW5kaW5nKEdMdWludCBhdHRy
aWJpbmRleCwgR0x1aW50IGJpbmRpbmdpbmRleCkKK3sKKyAgICBFVkVOVCgiKEdMdWludCBhdHRy
aWJpbmRleCA9ICV1LCBHTHVpbnQgYmluZGluZ2luZGV4ID0gJXUpIiwgYXR0cmliaW5kZXgsIGJp
bmRpbmdpbmRleCk7CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRl
ZCIpKTsKKyAgICAgICAgfQorICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQorfQorCit2
b2lkIEdMX0FQSUVOVFJZIFZlcnRleEJpbmRpbmdEaXZpc29yKEdMdWludCBiaW5kaW5naW5kZXgs
IEdMdWludCBkaXZpc29yKQoreworICAgIEVWRU5UKCIoR0x1aW50IGJpbmRpbmdpbmRleCA9ICV1
LCBHTHVpbnQgZGl2aXNvciA9ICV1KSIsIGJpbmRpbmdpbmRleCwgZGl2aXNvcik7CisgICAgQ29u
dGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0
KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAg
ICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgfQorICAg
ICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQorfQorfSAgLy8gbmFtZXNwYWNlIGdsCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVz
XzNfMS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvZW50cnlfcG9pbnRzX2dsZXNfM18xLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzEuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDIyOSBAQAorLy8KKy8vIENvcHlyaWdodChjKSAyMDE2IFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gZW50cnlfcG9pbnRz
X2dsZXNfM18xLmggOiBEZWZpbmVzIHRoZSBHTEVTIDMuMSBlbnRyeSBwb2ludHMuCisKKyNpZm5k
ZWYgTElCR0xFU1YyX0VOVFJZUE9JTlRHTEVTMzFfSF8KKyNkZWZpbmUgTElCR0xFU1YyX0VOVFJZ
UE9JTlRHTEVTMzFfSF8KKworI2luY2x1ZGUgPEdMRVMzL2dsMzEuaD4KKyNpbmNsdWRlIDxleHBv
cnQuaD4KKworLy8gd2UgaW5jbHVkZSB0aGUgcGxhdGZvcm0uaCBoZWFkZXIgc2luY2UgaXQgdW5k
ZWZpbmVzIHRoZSBjb25mbGljdGluZyBNZW1vcnlCYXJyaWVyIG1hY3JvCisjaW5jbHVkZSAiY29t
bW9uL3BsYXRmb3JtLmgiCisKK25hbWVzcGFjZSBnbAoreworCitBTkdMRV9FWFBPUlQgdm9pZCBH
TF9BUElFTlRSWSBEaXNwYXRjaENvbXB1dGUoR0x1aW50IG51bUdyb3Vwc1gsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG51bUdyb3Vwc1ksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG51bUdy
b3Vwc1opOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgRGlzcGF0Y2hDb21wdXRlSW5k
aXJlY3QoR0xpbnRwdHIgaW5kaXJlY3QpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkg
RHJhd0FycmF5c0luZGlyZWN0KEdMZW51bSBtb2RlLCBjb25zdCB2b2lkICppbmRpcmVjdCk7CitB
TkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBEcmF3RWxlbWVudHNJbmRpcmVjdChHTGVudW0g
bW9kZSwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKmluZGlyZWN0KTsKK0FOR0xFX0VYUE9SVCB2
b2lkIEdMX0FQSUVOVFJZIEZyYW1lYnVmZmVyUGFyYW1ldGVyaShHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdl
dEZyYW1lYnVmZmVyUGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGlu
dCAqcGFyYW1zKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldFByb2dyYW1JbnRl
cmZhY2VpdihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
KnBhcmFtcyk7CitBTkdMRV9FWFBPUlQgR0x1aW50IEdMX0FQSUVOVFJZIEdldFByb2dyYW1SZXNv
dXJjZUluZGV4KEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xjaGFyICpuYW1lKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldFByb2dyYW1S
ZXNvdXJjZU5hbWUoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5k
ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKm5hbWUpOworQU5HTEVfRVhQT1JU
IHZvaWQgR0xfQVBJRU5UUlkgR2V0UHJvZ3JhbVJlc291cmNlaXYoR0x1aW50IHByb2dyYW0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cHJvZ3JhbUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgcHJvcENvdW50LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICpwcm9wcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOworQU5HTEVfRVhQT1JUIEdMaW50IEdM
X0FQSUVOVFJZIEdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uKEdMdWludCBwcm9ncmFtLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwcm9ncmFtSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSk7CitBTkdMRV9FWFBP
UlQgdm9pZCBHTF9BUElFTlRSWSBVc2VQcm9ncmFtU3RhZ2VzKEdMdWludCBwaXBlbGluZSwgR0xi
aXRmaWVsZCBzdGFnZXMsIEdMdWludCBwcm9ncmFtKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQ
SUVOVFJZIEFjdGl2ZVNoYWRlclByb2dyYW0oR0x1aW50IHBpcGVsaW5lLCBHTHVpbnQgcHJvZ3Jh
bSk7CitBTkdMRV9FWFBPUlQgR0x1aW50IEdMX0FQSUVOVFJZIENyZWF0ZVNoYWRlclByb2dyYW12
KEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKmNvbnN0ICpzdHJpbmdzKTsKK0FO
R0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEJpbmRQcm9ncmFtUGlwZWxpbmUoR0x1aW50IHBp
cGVsaW5lKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVByb2dyYW1QaXBl
bGluZXMoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKnBpcGVsaW5lcyk7CitBTkdMRV9FWFBPUlQg
dm9pZCBHTF9BUElFTlRSWSBHZW5Qcm9ncmFtUGlwZWxpbmVzKEdMc2l6ZWkgbiwgR0x1aW50ICpw
aXBlbGluZXMpOworQU5HTEVfRVhQT1JUIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc1Byb2dyYW1Q
aXBlbGluZShHTHVpbnQgcGlwZWxpbmUpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkg
R2V0UHJvZ3JhbVBpcGVsaW5laXYoR0x1aW50IHBpcGVsaW5lLCBHTGVudW0gcG5hbWUsIEdMaW50
ICpwYXJhbXMpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0x
aShHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwKTsKK0FOR0xFX0VYUE9S
VCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMmkoR0x1aW50IHByb2dyYW0sIEdMaW50
IGxvY2F0aW9uLCBHTGludCB2MCwgR0xpbnQgdjEpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJ
RU5UUlkKK1Byb2dyYW1Vbmlmb3JtM2koR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBH
TGludCB2MCwgR0xpbnQgdjEsIEdMaW50IHYyKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVO
VFJZCitQcm9ncmFtVW5pZm9ybTRpKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xp
bnQgdjAsIEdMaW50IHYxLCBHTGludCB2MiwgR0xpbnQgdjMpOworQU5HTEVfRVhQT1JUIHZvaWQg
R0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0xdWkoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0
aW9uLCBHTHVpbnQgdjApOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVu
aWZvcm0ydWkoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MSk7CitBTkdMRV9FWFBPUlQgdm9p
ZCBHTF9BUElFTlRSWQorUHJvZ3JhbVVuaWZvcm0zdWkoR0x1aW50IHByb2dyYW0sIEdMaW50IGxv
Y2F0aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2MSwgR0x1aW50IHYyKTsKK0FOR0xFX0VYUE9SVCB2
b2lkIEdMX0FQSUVOVFJZCitQcm9ncmFtVW5pZm9ybTR1aShHTHVpbnQgcHJvZ3JhbSwgR0xpbnQg
bG9jYXRpb24sIEdMdWludCB2MCwgR0x1aW50IHYxLCBHTHVpbnQgdjIsIEdMdWludCB2Myk7CitB
TkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTFmKEdMdWludCBwcm9n
cmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9B
UElFTlRSWSBQcm9ncmFtVW5pZm9ybTJmKEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MSk7CitB
TkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWQorUHJvZ3JhbVVuaWZvcm0zZihHTHVpbnQgcHJv
Z3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgdjAsIEdMZmxvYXQgdjEsIEdMZmxvYXQgdjIp
OworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkKK1Byb2dyYW1Vbmlmb3JtNGYoR0x1aW50
IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwLCBHTGZsb2F0IHYxLCBHTGZsb2F0
IHYyLCBHTGZsb2F0IHYzKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1V
bmlmb3JtMWl2KEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlKTsKK0FO
R0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMml2KEdMdWludCBwcm9n
cmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQ
SUVOVFJZIFByb2dyYW1Vbmlmb3JtM2l2KEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xp
bnQgKnZhbHVlKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3Jt
NGl2KEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlKTsKK0FOR0xFX0VY
UE9SVCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMXVpdihHTHVpbnQgcHJvZ3JhbSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
b2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJ
RU5UUlkgUHJvZ3JhbVVuaWZvcm0ydWl2KEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0x1aW50ICp2YWx1ZSk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5p
Zm9ybTN1aXYoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlKTsK
K0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtNHVpdihHTHVpbnQg
cHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpOworQU5HTEVfRVhQT1JUIHZv
aWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0xZnYoR0x1aW50IHByb2dyYW0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp2YWx1ZSk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBQcm9n
cmFtVW5pZm9ybTJmdihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVl
KTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtM2Z2KEdMdWlu
dCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOworQU5HTEVfRVhQT1JUIHZv
aWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm00ZnYoR0x1aW50IHByb2dyYW0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp2YWx1ZSk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBQcm9n
cmFtVW5pZm9ybU1hdHJpeDJmdihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBj
b3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitBTkdMRV9FWFBP
UlQgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDNmdihHTHVpbnQgcHJvZ3Jh
bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICp2YWx1ZSk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9y
bU1hdHJpeDRmdihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitBTkdMRV9FWFBPUlQgdm9pZCBH
TF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2KEdMdWludCBwcm9ncmFtLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xm
bG9hdCAqdmFsdWUpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZv
cm1NYXRyaXgzeDJmdihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK0FOR0xFX0VY
UE9SVCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnYoR0x1aW50IHBy
b2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3Nl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBQ
cm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2KEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUp
OworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRm
dihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVh
biB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdM
X0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4NHgzZnYoR0x1aW50IHByb2dyYW0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICp2YWx1ZSk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBWYWxpZGF0ZVByb2dy
YW1QaXBlbGluZShHTHVpbnQgcGlwZWxpbmUpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5U
UlkgR2V0UHJvZ3JhbVBpcGVsaW5lSW5mb0xvZyhHTHVpbnQgcGlwZWxpbmUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVm
U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKmluZm9Mb2cpOworQU5HTEVfRVhQT1JUIHZv
aWQgR0xfQVBJRU5UUlkgQmluZEltYWdlVGV4dHVyZShHTHVpbnQgdW5pdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRleHR1cmUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
bGF5ZXJlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbGF5ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBhY2Nlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBmb3JtYXQpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkg
R2V0Qm9vbGVhbmlfdihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMYm9vbGVhbiAqZGF0
YSk7CisKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIE1lbW9yeUJhcnJpZXIoR0xiaXRm
aWVsZCBiYXJyaWVycyk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBNZW1vcnlCYXJy
aWVyQnlSZWdpb24oR0xiaXRmaWVsZCBiYXJyaWVycyk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9B
UElFTlRSWSBUZXhTdG9yYWdlMkRNdWx0aXNhbXBsZShHTGVudW0gdGFyZ2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1w
bGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIGZpeGVkc2FtcGxlbG9jYXRpb25zKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZ
IEdldE11bHRpc2FtcGxlZnYoR0xlbnVtIHBuYW1lLCBHTHVpbnQgaW5kZXgsIEdMZmxvYXQgKnZh
bCk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBTYW1wbGVNYXNraShHTHVpbnQgbWFz
a051bWJlciwgR0xiaXRmaWVsZCBtYXNrKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZ
IEdldFRleExldmVsUGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgKnBhcmFtcyk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhMZXZl
bFBhcmFtZXRlcmZ2KEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBh
cmFtcyk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBCaW5kVmVydGV4QnVmZmVyKEdM
dWludCBiaW5kaW5naW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzdHJpZGUpOworQU5HTEVfRVhQT1JUIHZv
aWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliRm9ybWF0KEdMdWludCBhdHRyaWJpbmRleCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMYm9vbGVhbiBub3JtYWxpemVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCByZWxhdGl2ZW9mZnNldCk7CitBTkdMRV9FWFBPUlQgdm9p
ZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJJRm9ybWF0KEdMdWludCBhdHRyaWJpbmRleCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCByZWxhdGl2ZW9mZnNldCk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRS
WSBWZXJ0ZXhBdHRyaWJCaW5kaW5nKEdMdWludCBhdHRyaWJpbmRleCwgR0x1aW50IGJpbmRpbmdp
bmRleCk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhCaW5kaW5nRGl2aXNv
cihHTHVpbnQgYmluZGluZ2luZGV4LCBHTHVpbnQgZGl2aXNvcik7Cit9OworCisjZW5kaWYgIC8v
IExJQkdMRVNWMl9FTlRSWVBPSU5UR0xFUzMxX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL2dsb2JhbF9zdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9nbG9iYWxfc3RhdGUuY3BwCShyZXZpc2lv
biAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2dsb2Jh
bF9zdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw3ICsxMzMsNyBAQAogICAgIHsKICAg
ICAgICAgaWYgKGNvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJDb250
ZXh0IGhhcyBiZWVuIGxvc3QuIikpOworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
Z2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJDb250ZXh0IGhhcyBiZWVuIGxvc3QuIikpOwog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xF
U3YyLmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9saWJHTEVTdjIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05LDYgKzksNyBAQAog
I2luY2x1ZGUgImxpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18yXzAuaCIKICNpbmNsdWRlICJs
aWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfMl8wX2V4dC5oIgogI2luY2x1ZGUgImxpYkdMRVN2
Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzAuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvZW50cnlfcG9p
bnRzX2dsZXNfM18xLmgiCiAKICNpbmNsdWRlICJjb21tb24vZXZlbnRfdHJhY2VyLmgiCiAKQEAg
LTE1NjIsNCArMTU2Myw2NjkgQEAKIHsKICAgICByZXR1cm4gZ2w6OkdldFBvaW50ZXJ2S0hSKHBu
YW1lLCBwYXJhbXMpOwogfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsQmluZFVuaWZvcm1Mb2NhdGlv
bkNIUk9NSVVNKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgY29uc3QgR0xjaGFyICpu
YW1lKQoreworICAgIHJldHVybiBnbDo6QmluZFVuaWZvcm1Mb2NhdGlvbkNIUk9NSVVNKHByb2dy
YW0sIGxvY2F0aW9uLCBuYW1lKTsKIH0KKwordm9pZCBHTF9BUElFTlRSWSBnbENvdmVyYWdlTW9k
dWxhdGlvbkNIUk9NSVVNKEdMZW51bSBjb21wb25lbnRzKQoreworICAgIHJldHVybiBnbDo6Q292
ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU0oY29tcG9uZW50cyk7Cit9CisKKy8vIENIUk9NSVVNX3Bh
dGhfcmVuZGVuZGVyaW5nCit2b2lkIEdMX0FQSUVOVFJZIGdsTWF0cml4TG9hZGZDSFJPTUlVTShH
TGVudW0gbWF0cml4TW9kZSwgY29uc3QgR0xmbG9hdCAqbWF0cml4KQoreworICAgIGdsOjpNYXRy
aXhMb2FkZkNIUk9NSVVNKG1hdHJpeE1vZGUsIG1hdHJpeCk7Cit9CisKK3ZvaWQgR0xfQVBJRU5U
UlkgZ2xNYXRyaXhMb2FkSWRlbnRpdHlDSFJPTUlVTShHTGVudW0gbWF0cml4TW9kZSkKK3sKKyAg
ICBnbDo6TWF0cml4TG9hZElkZW50aXR5Q0hST01JVU0obWF0cml4TW9kZSk7Cit9CisKK0dMdWlu
dCBHTF9BUElFTlRSWSBnbEdlblBhdGhzQ0hST01JVU0oR0xzaXplaSByYW5nZSkKK3sKKyAgICBy
ZXR1cm4gZ2w6OkdlblBhdGhzQ0hST01JVU0ocmFuZ2UpOworfQorCit2b2lkIEdMX0FQSUVOVFJZ
IGdsRGVsZXRlUGF0aHNDSFJPTUlVTShHTHVpbnQgZmlyc3QsIEdMc2l6ZWkgcmFuZ2UpCit7Cisg
ICAgZ2w6OkRlbGV0ZVBhdGhzQ0hST01JVU0oZmlyc3QsIHJhbmdlKTsKK30KKworR0xib29sZWFu
IEdMX0FQSUVOVFJZIGdsSXNQYXRoQ0hST01JVU0oR0x1aW50IHBhdGgpCit7CisgICAgcmV0dXJu
IGdsOjpJc1BhdGhDSFJPTUlVTShwYXRoKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbFBhdGhD
b21tYW5kc0NIUk9NSVVNKEdMdWludCBwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29tbWFuZHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSAqY29tbWFuZHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1Db29yZHMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvb3JkVHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpjb29yZHMpCit7Cisg
ICAgZ2w6OlBhdGhDb21tYW5kc0NIUk9NSVVNKHBhdGgsIG51bUNvbW1hbmRzLCBjb21tYW5kcywg
bnVtQ29vcmRzLCBjb29yZFR5cGUsIGNvb3Jkcyk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xQ
YXRoUGFyYW1ldGVyZkNIUk9NSVVNKEdMdWludCBwYXRoLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQg
dmFsdWUpCit7CisgICAgZ2w6OlBhdGhQYXJhbWV0ZXJmQ0hST01JVU0ocGF0aCwgcG5hbWUsIHZh
bHVlKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbFBhdGhQYXJhbWV0ZXJpQ0hST01JVU0oR0x1
aW50IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xpbnQgdmFsdWUpCit7CisgICAgZ2w6OlBhdGhQYXJh
bWV0ZXJpQ0hST01JVU0ocGF0aCwgcG5hbWUsIHZhbHVlKTsKK30KKwordm9pZCBHTF9BUElFTlRS
WSBnbEdldFBhdGhQYXJhbWV0ZXJmdkNIUk9NSVVNKEdMdWludCBwYXRoLCBHTGVudW0gcG5hbWUs
IEdMZmxvYXQgKnZhbHVlKQoreworICAgIGdsOjpHZXRQYXRoUGFyYW1ldGVyZkNIUk9NSVVNKHBh
dGgsIHBuYW1lLCB2YWx1ZSk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRQYXRoUGFyYW1l
dGVyaXZDSFJPTUlVTShHTHVpbnQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGludCAqdmFsdWUpCit7
CisgICAgZ2w6OkdldFBhdGhQYXJhbWV0ZXJpQ0hST01JVU0ocGF0aCwgcG5hbWUsIHZhbHVlKTsK
K30KKwordm9pZCBHTF9BUElFTlRSWSBnbFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNKEdMZW51bSBm
dW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKQoreworICAgIGdsOjpQYXRoU3RlbmNpbEZ1bmND
SFJPTUlVTShmdW5jLCByZWYsIG1hc2spOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsU3RlbmNp
bEZpbGxQYXRoQ0hST01JVU0oR0x1aW50IHBhdGgsIEdMZW51bSBmaWxsTW9kZSwgR0x1aW50IG1h
c2spCit7CisgICAgZ2w6OlN0ZW5jaWxGaWxsUGF0aENIUk9NSVVNKHBhdGgsIGZpbGxNb2RlLCBt
YXNrKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbFN0ZW5jaWxTdHJva2VQYXRoQ0hST01JVU0o
R0x1aW50IHBhdGgsIEdMaW50IHJlZmVyZW5jZSwgR0x1aW50IG1hc2spCit7CisgICAgZ2w6OlN0
ZW5jaWxTdHJva2VQYXRoQ0hST01JVU0ocGF0aCwgcmVmZXJlbmNlLCBtYXNrKTsKK30KKwordm9p
ZCBHTF9BUElFTlRSWSBnbENvdmVyRmlsbFBhdGhDSFJPTUlVTShHTHVpbnQgcGF0aCwgR0xlbnVt
IGNvdmVyTW9kZSkKK3sKKyAgICBnbDo6Q292ZXJGaWxsUGF0aENIUk9NSVVNKHBhdGgsIGNvdmVy
TW9kZSk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xDb3ZlclN0cm9rZVBhdGhDSFJPTUlVTShH
THVpbnQgcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSkKK3sKKyAgICBnbDo6Q292ZXJTdHJva2VQYXRo
Q0hST01JVU0ocGF0aCwgY292ZXJNb2RlKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbFN0ZW5j
aWxUaGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNKEdMdWludCBwYXRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
bWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gY292ZXJNb2RlKQoreworICAgIGdsOjpTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhD
SFJPTUlVTShwYXRoLCBmaWxsTW9kZSwgbWFzaywgY292ZXJNb2RlKTsKK30KKwordm9pZCBHTF9B
UElFTlRSWSBnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoQ0hST01JVU0oR0x1aW50IHBhdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCByZWZlcmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpCit7CisgICAgZ2w6OlN0
ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoQ0hST01JVU0ocGF0aCwgcmVmZXJlbmNlLCBtYXNrLCBj
b3Zlck1vZGUpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsQ292ZXJGaWxsUGF0aEluc3RhbmNl
ZENIUk9NSVVNKEdMc2l6ZWkgbnVtUGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
cGF0aEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1W
YWx1ZXMpCit7CisgICAgZ2w6OkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTShudW1QYXRo
cywgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2UsIGNvdmVyTW9kZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVl
cyk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xDb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJP
TUlVTShHTHNpemVpIG51bVBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHBhdGhCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJh
bnNmb3JtVmFsdWVzKQoreworICAgIGdsOjpDb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlV
TShudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2UsIGNvdmVyTW9kZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSwgdHJh
bnNmb3JtVmFsdWVzKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbFN0ZW5jaWxGaWxsUGF0aElu
c3RhbmNlZENIUk9NSVVNKEdMc2l6ZWkgbnVtUGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lk
ICpwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgcGF0aEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1U
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKK3sKKyAgICBnbDo6U3RlbmNpbEZpbGxQ
YXRoSW5zdGFuY2VkQ0hST01JVU0obnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhC
YXNlLCBmaWxsTW9kZSwgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzKTsKK30KKwordm9pZCBHTF9BUElF
TlRSWSBnbFN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oR0xzaXplaSBudW1QYXRo
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwYXRoTmFtZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHJlZmVyZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0
cmFuc2Zvcm1WYWx1ZXMpCit7CisgICAgZ2w6OlN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hS
T01JVU0obnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlLCByZWZlcmVuY2Us
IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNm
b3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbFN0ZW5j
aWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKEdMc2l6ZWkgbnVtUGF0aHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgcGF0aEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBjb3Zlck1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQoreworICAgIGdsOjpTdGVuY2lsVGhlbkNvdmVyRmls
bFBhdGhJbnN0YW5jZWRDSFJPTUlVTShudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0
aEJhc2UsIGZpbGxNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXNrLCBjb3Zlck1vZGUsIHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVl
cyk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aElu
c3RhbmNlZENIUk9NSVVNKEdMc2l6ZWkgbnVtUGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVU
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCByZWZlcmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBj
b3Zlck1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxv
YXQgKnRyYW5zZm9ybVZhbHVlcykKK3sKKyAgICBnbDo6U3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBh
dGhJbnN0YW5jZWRDSFJPTUlVTShudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJh
c2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVmZXJlbmNlLCBtYXNrLCBjb3Zlck1vZGUsIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtVmFsdWVzKTsK
K30KKwordm9pZCBHTF9BUElFTlRSWSBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlV
TShHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSkKK3sKKyAgICBn
bDo6QmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNKHByb2dyYW0sIGxvY2F0aW9uLCBu
YW1lKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdl
bkNIUk9NSVVNKEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBnZW5Nb2RlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGNvbXBvbmVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqY29lZmZzKQoreworICAgIGdsOjpQcm9ncmFt
UGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShwcm9ncmFtLCBsb2NhdGlvbiwgZ2VuTW9kZSwg
Y29tcG9uZW50cywgY29lZmZzKTsKK30KKworLy8gR0xFUyAzLjEKK3ZvaWQgR0xfQVBJRU5UUlkg
Z2xEaXNwYXRjaENvbXB1dGUoR0x1aW50IG51bUdyb3Vwc1gsIEdMdWludCBudW1Hcm91cHNZLCBH
THVpbnQgbnVtR3JvdXBzWikKK3sKKyAgICBnbDo6RGlzcGF0Y2hDb21wdXRlKG51bUdyb3Vwc1gs
IG51bUdyb3Vwc1ksIG51bUdyb3Vwc1opOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsRGlzcGF0
Y2hDb21wdXRlSW5kaXJlY3QoR0xpbnRwdHIgaW5kaXJlY3QpCit7CisgICAgZ2w6OkRpc3BhdGNo
Q29tcHV0ZUluZGlyZWN0KGluZGlyZWN0KTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbERyYXdB
cnJheXNJbmRpcmVjdChHTGVudW0gbW9kZSwgY29uc3Qgdm9pZCAqaW5kaXJlY3QpCit7CisgICAg
Z2w6OkRyYXdBcnJheXNJbmRpcmVjdChtb2RlLCBpbmRpcmVjdCk7Cit9CisKK3ZvaWQgR0xfQVBJ
RU5UUlkgZ2xEcmF3RWxlbWVudHNJbmRpcmVjdChHTGVudW0gbW9kZSwgR0xlbnVtIHR5cGUsIGNv
bnN0IHZvaWQgKmluZGlyZWN0KQoreworICAgIGdsOjpEcmF3RWxlbWVudHNJbmRpcmVjdChtb2Rl
LCB0eXBlLCBpbmRpcmVjdCk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xGcmFtZWJ1ZmZlclBh
cmFtZXRlcmkoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSkKK3sKKyAg
ICBnbDo6RnJhbWVidWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUsIHBhcmFtKTsKK30KKwor
dm9pZCBHTF9BUElFTlRSWSBnbEdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdl
dCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQoreworICAgIGdsOjpHZXRGcmFtZWJ1ZmZl
clBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsIHBhcmFtcyk7Cit9CisKK3ZvaWQgR0xfQVBJRU5U
UlkgZ2xHZXRQcm9ncmFtSW50ZXJmYWNlaXYoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCit7Cisg
ICAgZ2w6OkdldFByb2dyYW1JbnRlcmZhY2Vpdihwcm9ncmFtLCBwcm9ncmFtSW50ZXJmYWNlLCBw
bmFtZSwgcGFyYW1zKTsKK30KKworR0x1aW50IEdMX0FQSUVOVFJZIGdsR2V0UHJvZ3JhbVJlc291
cmNlSW5kZXgoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSkKK3sKKyAgICBy
ZXR1cm4gZ2w6OkdldFByb2dyYW1SZXNvdXJjZUluZGV4KHByb2dyYW0sIHByb2dyYW1JbnRlcmZh
Y2UsIG5hbWUpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UHJvZ3JhbVJlc291cmNlTmFt
ZShHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpuYW1lKQoreworICAgIGdsOjpHZXRQcm9ncmFt
UmVzb3VyY2VOYW1lKHByb2dyYW0sIHByb2dyYW1JbnRlcmZhY2UsIGluZGV4LCBidWZTaXplLCBs
ZW5ndGgsIG5hbWUpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UHJvZ3JhbVJlc291cmNl
aXYoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgcHJvcENvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZW51bSAqcHJvcHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQoreworICAgIGdsOjpHZXRQcm9ncmFt
UmVzb3VyY2Vpdihwcm9ncmFtLCBwcm9ncmFtSW50ZXJmYWNlLCBpbmRleCwgcHJvcENvdW50LCBw
cm9wcywgYnVmU2l6ZSwgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJh
bXMpOworfQorCitHTGludCBHTF9BUElFTlRSWSBnbEdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9u
KEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKQoreworICAgIHJldHVy
biBnbDo6R2V0UHJvZ3JhbVJlc291cmNlTG9jYXRpb24ocHJvZ3JhbSwgcHJvZ3JhbUludGVyZmFj
ZSwgbmFtZSk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xVc2VQcm9ncmFtU3RhZ2VzKEdMdWlu
dCBwaXBlbGluZSwgR0xiaXRmaWVsZCBzdGFnZXMsIEdMdWludCBwcm9ncmFtKQoreworICAgIGds
OjpVc2VQcm9ncmFtU3RhZ2VzKHBpcGVsaW5lLCBzdGFnZXMsIHByb2dyYW0pOworfQorCit2b2lk
IEdMX0FQSUVOVFJZIGdsQWN0aXZlU2hhZGVyUHJvZ3JhbShHTHVpbnQgcGlwZWxpbmUsIEdMdWlu
dCBwcm9ncmFtKQoreworICAgIGdsOjpBY3RpdmVTaGFkZXJQcm9ncmFtKHBpcGVsaW5lLCBwcm9n
cmFtKTsKK30KKworR0x1aW50IEdMX0FQSUVOVFJZIGdsQ3JlYXRlU2hhZGVyUHJvZ3JhbXYoR0xl
bnVtIHR5cGUsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMY2hhciAqY29uc3QgKnN0cmluZ3MpCit7
CisgICAgcmV0dXJuIGdsOjpDcmVhdGVTaGFkZXJQcm9ncmFtdih0eXBlLCBjb3VudCwgc3RyaW5n
cyk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xCaW5kUHJvZ3JhbVBpcGVsaW5lKEdMdWludCBw
aXBlbGluZSkKK3sKKyAgICBnbDo6QmluZFByb2dyYW1QaXBlbGluZShwaXBlbGluZSk7Cit9CisK
K3ZvaWQgR0xfQVBJRU5UUlkgZ2xEZWxldGVQcm9ncmFtUGlwZWxpbmVzKEdMc2l6ZWkgbiwgY29u
c3QgR0x1aW50ICpwaXBlbGluZXMpCit7CisgICAgZ2w6OkRlbGV0ZVByb2dyYW1QaXBlbGluZXMo
biwgcGlwZWxpbmVzKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbEdlblByb2dyYW1QaXBlbGlu
ZXMoR0xzaXplaSBuLCBHTHVpbnQgKnBpcGVsaW5lcykKK3sKKyAgICBnbDo6R2VuUHJvZ3JhbVBp
cGVsaW5lcyhuLCBwaXBlbGluZXMpOworfQorCitHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJc1By
b2dyYW1QaXBlbGluZShHTHVpbnQgcGlwZWxpbmUpCit7CisgICAgcmV0dXJuIGdsOjpJc1Byb2dy
YW1QaXBlbGluZShwaXBlbGluZSk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRQcm9ncmFt
UGlwZWxpbmVpdihHTHVpbnQgcGlwZWxpbmUsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykK
K3sKKyAgICBnbDo6R2V0UHJvZ3JhbVBpcGVsaW5laXYocGlwZWxpbmUsIHBuYW1lLCBwYXJhbXMp
OworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm0xaShHTHVpbnQgcHJvZ3Jh
bSwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwKQoreworICAgIGdsOjpQcm9ncmFtVW5pZm9ybTFp
KHByb2dyYW0sIGxvY2F0aW9uLCB2MCk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFt
VW5pZm9ybTJpKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQgdjAsIEdMaW50
IHYxKQoreworICAgIGdsOjpQcm9ncmFtVW5pZm9ybTJpKHByb2dyYW0sIGxvY2F0aW9uLCB2MCwg
djEpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm0zaShHTHVpbnQgcHJv
Z3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwLCBHTGludCB2MSwgR0xpbnQgdjIpCit7Cisg
ICAgZ2w6OlByb2dyYW1Vbmlmb3JtM2kocHJvZ3JhbSwgbG9jYXRpb24sIHYwLCB2MSwgdjIpOwor
fQorCit2b2lkIEdMX0FQSUVOVFJZCitnbFByb2dyYW1Vbmlmb3JtNGkoR0x1aW50IHByb2dyYW0s
IEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCwgR0xpbnQgdjEsIEdMaW50IHYyLCBHTGludCB2MykK
K3sKKyAgICBnbDo6UHJvZ3JhbVVuaWZvcm00aShwcm9ncmFtLCBsb2NhdGlvbiwgdjAsIHYxLCB2
MiwgdjMpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm0xdWkoR0x1aW50
IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjApCit7CisgICAgZ2w6OlByb2dyYW1V
bmlmb3JtMXVpKHByb2dyYW0sIGxvY2F0aW9uLCB2MCk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkg
Z2xQcm9ncmFtVW5pZm9ybTJ1aShHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWlu
dCB2MCwgR0x1aW50IHYxKQoreworICAgIGdsOjpQcm9ncmFtVW5pZm9ybTJ1aShwcm9ncmFtLCBs
b2NhdGlvbiwgdjAsIHYxKTsKK30KKwordm9pZCBHTF9BUElFTlRSWQorZ2xQcm9ncmFtVW5pZm9y
bTN1aShHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCwgR0x1aW50IHYx
LCBHTHVpbnQgdjIpCit7CisgICAgZ2w6OlByb2dyYW1Vbmlmb3JtM3VpKHByb2dyYW0sIGxvY2F0
aW9uLCB2MCwgdjEsIHYyKTsKK30KKwordm9pZCBHTF9BUElFTlRSWQorZ2xQcm9ncmFtVW5pZm9y
bTR1aShHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCwgR0x1aW50IHYx
LCBHTHVpbnQgdjIsIEdMdWludCB2MykKK3sKKyAgICBnbDo6UHJvZ3JhbVVuaWZvcm00dWkocHJv
Z3JhbSwgbG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBn
bFByb2dyYW1Vbmlmb3JtMWYoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0
IHYwKQoreworICAgIGdsOjpQcm9ncmFtVW5pZm9ybTFmKHByb2dyYW0sIGxvY2F0aW9uLCB2MCk7
Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTJmKEdMdWludCBwcm9ncmFt
LCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCwgR0xmbG9hdCB2MSkKK3sKKyAgICBnbDo6UHJv
Z3JhbVVuaWZvcm0yZihwcm9ncmFtLCBsb2NhdGlvbiwgdjAsIHYxKTsKK30KKwordm9pZCBHTF9B
UElFTlRSWQorZ2xQcm9ncmFtVW5pZm9ybTNmKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlv
biwgR0xmbG9hdCB2MCwgR0xmbG9hdCB2MSwgR0xmbG9hdCB2MikKK3sKKyAgICBnbDo6UHJvZ3Jh
bVVuaWZvcm0zZihwcm9ncmFtLCBsb2NhdGlvbiwgdjAsIHYxLCB2Mik7Cit9CisKK3ZvaWQgR0xf
QVBJRU5UUlkKK2dsUHJvZ3JhbVVuaWZvcm00ZihHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRp
b24sIEdMZmxvYXQgdjAsIEdMZmxvYXQgdjEsIEdMZmxvYXQgdjIsIEdMZmxvYXQgdjMpCit7Cisg
ICAgZ2w6OlByb2dyYW1Vbmlmb3JtNGYocHJvZ3JhbSwgbG9jYXRpb24sIHYwLCB2MSwgdjIsIHYz
KTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtMWl2KEdMdWludCBwcm9n
cmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlKQor
eworICAgIGdsOjpQcm9ncmFtVW5pZm9ybTFpdihwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsIHZh
bHVlKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtMml2KEdMdWludCBw
cm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVl
KQoreworICAgIGdsOjpQcm9ncmFtVW5pZm9ybTJpdihwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQs
IHZhbHVlKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtM2l2KEdMdWlu
dCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZh
bHVlKQoreworICAgIGdsOjpQcm9ncmFtVW5pZm9ybTNpdihwcm9ncmFtLCBsb2NhdGlvbiwgY291
bnQsIHZhbHVlKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtNGl2KEdM
dWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQg
KnZhbHVlKQoreworICAgIGdsOjpQcm9ncmFtVW5pZm9ybTRpdihwcm9ncmFtLCBsb2NhdGlvbiwg
Y291bnQsIHZhbHVlKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtMXVp
dihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMdWludCAqdmFsdWUpCit7CisgICAgZ2w6OlByb2dyYW1Vbmlmb3JtMXVpdihwcm9ncmFtLCBs
b2NhdGlvbiwgY291bnQsIHZhbHVlKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1V
bmlmb3JtMnVpdihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMdWludCAqdmFsdWUpCit7CisgICAgZ2w6OlByb2dyYW1Vbmlmb3JtMnVpdihw
cm9ncmFtLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBn
bFByb2dyYW1Vbmlmb3JtM3VpdihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpCit7CisgICAgZ2w6OlByb2dyYW1Vbmlm
b3JtM3Vpdihwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKK30KKwordm9pZCBHTF9B
UElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtNHVpdihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpCit7CisgICAgZ2w6OlBy
b2dyYW1Vbmlmb3JtNHVpdihwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKK30KKwor
dm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtMWZ2KEdMdWludCBwcm9ncmFtLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit7CisgICAg
Z2w6OlByb2dyYW1Vbmlmb3JtMWZ2KHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOwor
fQorCit2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm0yZnYoR0x1aW50IHByb2dyYW0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3sK
KyAgICBnbDo6UHJvZ3JhbVVuaWZvcm0yZnYocHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCB2YWx1
ZSk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTNmdihHTHVpbnQgcHJv
Z3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVl
KQoreworICAgIGdsOjpQcm9ncmFtVW5pZm9ybTNmdihwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQs
IHZhbHVlKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtNGZ2KEdMdWlu
dCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
dmFsdWUpCit7CisgICAgZ2w6OlByb2dyYW1Vbmlmb3JtNGZ2KHByb2dyYW0sIGxvY2F0aW9uLCBj
b3VudCwgdmFsdWUpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm1NYXRy
aXgyZnYoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQoreworICAgIGdsOjpQ
cm9ncmFtVW5pZm9ybU1hdHJpeDJmdihwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9z
ZSwgdmFsdWUpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgz
ZnYoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQoreworICAgIGdsOjpQcm9n
cmFtVW5pZm9ybU1hdHJpeDNmdihwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwg
dmFsdWUpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZnYo
R0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQoreworICAgIGdsOjpQcm9ncmFt
VW5pZm9ybU1hdHJpeDRmdihwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFs
dWUpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdihH
THVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3sKKyAgICBnbDo6
UHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdihwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsIHRyYW5z
cG9zZSwgdmFsdWUpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm1NYXRy
aXgzeDJmdihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3sK
KyAgICBnbDo6UHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJmdihwcm9ncmFtLCBsb2NhdGlvbiwgY291
bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVu
aWZvcm1NYXRyaXgyeDRmdihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2
YWx1ZSkKK3sKKyAgICBnbDo6UHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRmdihwcm9ncmFtLCBsb2Nh
dGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGds
UHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJmdihHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bv
c2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICp2YWx1ZSkKK3sKKyAgICBnbDo6UHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJmdihwcm9n
cmFtLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworfQorCit2b2lkIEdMX0FQ
SUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdihHTHVpbnQgcHJvZ3JhbSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVh
biB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3sKKyAgICBnbDo6UHJvZ3JhbVVuaWZvcm1NYXRyaXgz
eDRmdihwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworfQorCit2
b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNmdihHTHVpbnQgcHJvZ3Jh
bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3sKKyAgICBnbDo6UHJvZ3JhbVVuaWZv
cm1NYXRyaXg0eDNmdihwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUp
OworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsVmFsaWRhdGVQcm9ncmFtUGlwZWxpbmUoR0x1aW50
IHBpcGVsaW5lKQoreworICAgIGdsOjpWYWxpZGF0ZVByb2dyYW1QaXBlbGluZShwaXBlbGluZSk7
Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRQcm9ncmFtUGlwZWxpbmVJbmZvTG9nKEdMdWlu
dCBwaXBlbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMY2hhciAqaW5mb0xvZykKK3sKKyAgICBnbDo6R2V0UHJvZ3JhbVBpcGVs
aW5lSW5mb0xvZyhwaXBlbGluZSwgYnVmU2l6ZSwgbGVuZ3RoLCBpbmZvTG9nKTsKK30KKwordm9p
ZCBHTF9BUElFTlRSWSBnbEJpbmRJbWFnZVRleHR1cmUoR0x1aW50IHVuaXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdGV4dHVyZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xib29sZWFuIGxheWVyZWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsYXllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBhY2Nlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZm9ybWF0KQoreworICAgIGdsOjpCaW5kSW1hZ2VUZXh0dXJlKHVuaXQsIHRleHR1
cmUsIGxldmVsLCBsYXllcmVkLCBsYXllciwgYWNjZXNzLCBmb3JtYXQpOworfQorCit2b2lkIEdM
X0FQSUVOVFJZIGdsR2V0Qm9vbGVhbmlfdihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdM
Ym9vbGVhbiAqZGF0YSkKK3sKKyAgICBnbDo6R2V0Qm9vbGVhbmlfdih0YXJnZXQsIGluZGV4LCBk
YXRhKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbE1lbW9yeUJhcnJpZXIoR0xiaXRmaWVsZCBi
YXJyaWVycykKK3sKKyAgICBnbDo6TWVtb3J5QmFycmllcihiYXJyaWVycyk7Cit9CisKK3ZvaWQg
R0xfQVBJRU5UUlkgZ2xNZW1vcnlCYXJyaWVyQnlSZWdpb24oR0xiaXRmaWVsZCBiYXJyaWVycykK
K3sKKyAgICBnbDo6TWVtb3J5QmFycmllckJ5UmVnaW9uKGJhcnJpZXJzKTsKK30KKwordm9pZCBH
TF9BUElFTlRSWSBnbFRleFN0b3JhZ2UyRE11bHRpc2FtcGxlKEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5h
bGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMYm9vbGVhbiBmaXhlZHNhbXBsZWxvY2F0aW9ucykKK3sKKyAgICBnbDo6VGV4U3RvcmFnZTJE
TXVsdGlzYW1wbGUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4ZWRzYW1wbGVsb2NhdGlvbnMp
OworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsR2V0TXVsdGlzYW1wbGVmdihHTGVudW0gcG5hbWUs
IEdMdWludCBpbmRleCwgR0xmbG9hdCAqdmFsKQoreworICAgIGdsOjpHZXRNdWx0aXNhbXBsZWZ2
KHBuYW1lLCBpbmRleCwgdmFsKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbFNhbXBsZU1hc2tp
KEdMdWludCBtYXNrTnVtYmVyLCBHTGJpdGZpZWxkIG1hc2spCit7CisgICAgZ2w6OlNhbXBsZU1h
c2tpKG1hc2tOdW1iZXIsIG1hc2spOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsR2V0VGV4TGV2
ZWxQYXJhbWV0ZXJpdihHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIHBuYW1lLCBH
TGludCAqcGFyYW1zKQoreworICAgIGdsOjpHZXRUZXhMZXZlbFBhcmFtZXRlcml2KHRhcmdldCwg
bGV2ZWwsIHBuYW1lLCBwYXJhbXMpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsR2V0VGV4TGV2
ZWxQYXJhbWV0ZXJmdihHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIHBuYW1lLCBH
TGZsb2F0ICpwYXJhbXMpCit7CisgICAgZ2w6OkdldFRleExldmVsUGFyYW1ldGVyZnYodGFyZ2V0
LCBsZXZlbCwgcG5hbWUsIHBhcmFtcyk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xCaW5kVmVy
dGV4QnVmZmVyKEdMdWludCBiaW5kaW5naW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnRwdHIgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBzdHJpZGUpCit7CisgICAgZ2w6OkJpbmRWZXJ0ZXhCdWZmZXIoYmluZGluZ2lu
ZGV4LCBidWZmZXIsIG9mZnNldCwgc3RyaWRlKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbFZl
cnRleEF0dHJpYkZvcm1hdChHTHVpbnQgYXR0cmliaW5kZXgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGJvb2xlYW4gbm9ybWFsaXplZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IHJlbGF0aXZlb2Zmc2V0KQoreworICAgIGdsOjpWZXJ0ZXhBdHRy
aWJGb3JtYXQoYXR0cmliaW5kZXgsIHNpemUsIHR5cGUsIG5vcm1hbGl6ZWQsIHJlbGF0aXZlb2Zm
c2V0KTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbFZlcnRleEF0dHJpYklGb3JtYXQoR0x1aW50
IGF0dHJpYmluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHJlbGF0
aXZlb2Zmc2V0KQoreworICAgIGdsOjpWZXJ0ZXhBdHRyaWJJRm9ybWF0KGF0dHJpYmluZGV4LCBz
aXplLCB0eXBlLCByZWxhdGl2ZW9mZnNldCk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xWZXJ0
ZXhBdHRyaWJCaW5kaW5nKEdMdWludCBhdHRyaWJpbmRleCwgR0x1aW50IGJpbmRpbmdpbmRleCkK
K3sKKyAgICBnbDo6VmVydGV4QXR0cmliQmluZGluZyhhdHRyaWJpbmRleCwgYmluZGluZ2luZGV4
KTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbFZlcnRleEJpbmRpbmdEaXZpc29yKEdMdWludCBi
aW5kaW5naW5kZXgsIEdMdWludCBkaXZpc29yKQoreworICAgIGdsOjpWZXJ0ZXhCaW5kaW5nRGl2
aXNvcihiaW5kaW5naW5kZXgsIGRpdmlzb3IpOworfQorfSAgLy8gZXh0ZXJuICJDIgpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIuZGVmCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3Yy
LmRlZgkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9saWJHTEVTdjIuZGVmCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIsNyArMjAyLDM1IEBA
CiAgICAgZ2xHZXRRdWVyeU9iamVjdGl2RVhUICAgICAgICAgICBAMzE1CiAgICAgZ2xHZXRRdWVy
eU9iamVjdGk2NHZFWFQgICAgICAgICBAMzE2CiAgICAgZ2xHZXRRdWVyeU9iamVjdHVpNjR2RVhU
ICAgICAgICBAMzE3CisgICAgZ2xCaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU0gICBAMzE4Cisg
ICAgZ2xDb3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTSAgICBAMzE5CiAKKyAgICBnbE1hdHJpeExv
YWRmQ0hST01JVU0gICAgICAgICAgIEAzMjAKKyAgICBnbE1hdHJpeExvYWRJZGVudGl0eUNIUk9N
SVVNICAgIEAzMjEKKyAgICBnbEdlblBhdGhzQ0hST01JVU0gICAgICAgICAgICAgIEAzMjIKKyAg
ICBnbERlbGV0ZVBhdGhzQ0hST01JVU0gICAgICAgICAgIEAzMjMKKyAgICBnbElzUGF0aENIUk9N
SVVNICAgICAgICAgICAgICAgIEAzMjQKKyAgICBnbFBhdGhDb21tYW5kc0NIUk9NSVVNICAgICAg
ICAgIEAzMjUKKyAgICBnbFBhdGhQYXJhbWV0ZXJmQ0hST01JVU0gICAgICAgIEAzMjYKKyAgICBn
bFBhdGhQYXJhbWV0ZXJpQ0hST01JVU0gICAgICAgIEAzMjcKKyAgICBnbEdldFBhdGhQYXJhbWV0
ZXJmdkNIUk9NSVVNICAgIEAzMjgKKyAgICBnbEdldFBhdGhQYXJhbWV0ZXJpdkNIUk9NSVVNICAg
IEAzMjkKKyAgICBnbFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNICAgICAgIEAzMzAKKyAgICBnbFN0
ZW5jaWxGaWxsUGF0aENIUk9NSVVNICAgICAgIEAzMzEKKyAgICBnbFN0ZW5jaWxTdHJva2VQYXRo
Q0hST01JVU0gICAgIEAzMzIKKyAgICBnbENvdmVyRmlsbFBhdGhDSFJPTUlVTSAgICAgICAgIEAz
MzMKKyAgICBnbENvdmVyU3Ryb2tlUGF0aENIUk9NSVVNICAgICAgIEAzMzQKKyAgICBnbFN0ZW5j
aWxUaGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNICAgICAgICAgICAgQDMzNQorICAgIGdsU3RlbmNp
bFRoZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlVTSAgICAgICAgICBAMzM2CisgICAgZ2xDb3ZlckZp
bGxQYXRoSW5zdGFuY2VkQ0hST01JVU0gICAgICAgICAgICAgIEAzMzcKKyAgICBnbENvdmVyU3Ry
b2tlUGF0aEluc3RhbmNlZENIUk9NSVVNICAgICAgICAgICAgQDMzOAorICAgIGdsU3RlbmNpbFN0
cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSAgICAgICAgICBAMzM5CisgICAgZ2xTdGVuY2lsRmls
bFBhdGhJbnN0YW5jZWRDSFJPTUlVTSAgICAgICAgICAgIEAzNDAKKyAgICBnbFN0ZW5jaWxUaGVu
Q292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNICAgQDM0MQorICAgIGdsU3RlbmNpbFRoZW5D
b3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSBAMzQyCisgICAgZ2xCaW5kRnJhZ21lbnRJ
bnB1dExvY2F0aW9uQ0hST01JVU0gICAgICAgICAgIEAzNDMKKyAgICBnbFByb2dyYW1QYXRoRnJh
Z21lbnRJbnB1dEdlbkNIUk9NSVVNICAgICAgICAgQDM0NAorCiAgICAgOyBHTEVTIDMuMCBGdW5j
dGlvbnMKICAgICBnbFJlYWRCdWZmZXIgICAgICAgICAgICAgICAgICAgIEAxODAKICAgICBnbERy
YXdSYW5nZUVsZW1lbnRzICAgICAgICAgICAgIEAxODEKQEAgLTMwOSw2ICszMzcsNzYgQEAKICAg
ICBnbFRleFN0b3JhZ2UzRCAgICAgICAgICAgICAgICAgIEAyODIKICAgICBnbEdldEludGVybmFs
Zm9ybWF0aXYgICAgICAgICAgIEAyODMKIAorICAgIDsgR0xFUyAzLjEgRnVuY3Rpb25zCisgICAg
Z2xEaXNwYXRjaENvbXB1dGUgICAgICAgICAgICAgICBAMzQ1CisgICAgZ2xEaXNwYXRjaENvbXB1
dGVJbmRpcmVjdCAgICAgICBAMzQ2CisgICAgZ2xEcmF3QXJyYXlzSW5kaXJlY3QgICAgICAgICAg
ICBAMzQ3CisgICAgZ2xEcmF3RWxlbWVudHNJbmRpcmVjdCAgICAgICAgICBAMzQ4CisgICAgZ2xG
cmFtZWJ1ZmZlclBhcmFtZXRlcmkgICAgICAgICBAMzQ5CisgICAgZ2xHZXRGcmFtZWJ1ZmZlclBh
cmFtZXRlcml2ICAgICBAMzUwCisgICAgZ2xHZXRQcm9ncmFtSW50ZXJmYWNlaXYgICAgICAgICBA
MzUxCisgICAgZ2xHZXRQcm9ncmFtUmVzb3VyY2VJbmRleCAgICAgICBAMzUyCisgICAgZ2xHZXRQ
cm9ncmFtUmVzb3VyY2VOYW1lICAgICAgICBAMzUzCisgICAgZ2xHZXRQcm9ncmFtUmVzb3VyY2Vp
diAgICAgICAgICBAMzU0CisgICAgZ2xHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbiAgICBAMzU1
CisgICAgZ2xVc2VQcm9ncmFtU3RhZ2VzICAgICAgICAgICAgICBAMzU2CisgICAgZ2xBY3RpdmVT
aGFkZXJQcm9ncmFtICAgICAgICAgICBAMzU3CisgICAgZ2xDcmVhdGVTaGFkZXJQcm9ncmFtdiAg
ICAgICAgICBAMzU4CisgICAgZ2xCaW5kUHJvZ3JhbVBpcGVsaW5lICAgICAgICAgICBAMzU5Cisg
ICAgZ2xEZWxldGVQcm9ncmFtUGlwZWxpbmVzICAgICAgICBAMzYwCisgICAgZ2xHZW5Qcm9ncmFt
UGlwZWxpbmVzICAgICAgICAgICBAMzYxCisgICAgZ2xJc1Byb2dyYW1QaXBlbGluZSAgICAgICAg
ICAgICBAMzYyCisgICAgZ2xHZXRQcm9ncmFtUGlwZWxpbmVpdiAgICAgICAgICBAMzYzCisgICAg
Z2xQcm9ncmFtVW5pZm9ybTFpICAgICAgICAgICAgICBAMzY0CisgICAgZ2xQcm9ncmFtVW5pZm9y
bTJpICAgICAgICAgICAgICBAMzY1CisgICAgZ2xQcm9ncmFtVW5pZm9ybTNpICAgICAgICAgICAg
ICBAMzY2CisgICAgZ2xQcm9ncmFtVW5pZm9ybTRpICAgICAgICAgICAgICBAMzY3CisgICAgZ2xQ
cm9ncmFtVW5pZm9ybTF1aSAgICAgICAgICAgICBAMzY4CisgICAgZ2xQcm9ncmFtVW5pZm9ybTJ1
aSAgICAgICAgICAgICBAMzY5CisgICAgZ2xQcm9ncmFtVW5pZm9ybTN1aSAgICAgICAgICAgICBA
MzcwCisgICAgZ2xQcm9ncmFtVW5pZm9ybTR1aSAgICAgICAgICAgICBAMzcxCisgICAgZ2xQcm9n
cmFtVW5pZm9ybTFmICAgICAgICAgICAgICBAMzcyCisgICAgZ2xQcm9ncmFtVW5pZm9ybTJmICAg
ICAgICAgICAgICBAMzczCisgICAgZ2xQcm9ncmFtVW5pZm9ybTNmICAgICAgICAgICAgICBAMzc0
CisgICAgZ2xQcm9ncmFtVW5pZm9ybTRmICAgICAgICAgICAgICBAMzc1CisgICAgZ2xQcm9ncmFt
VW5pZm9ybTFpdiAgICAgICAgICAgICBAMzc2CisgICAgZ2xQcm9ncmFtVW5pZm9ybTJpdiAgICAg
ICAgICAgICBAMzc3CisgICAgZ2xQcm9ncmFtVW5pZm9ybTNpdiAgICAgICAgICAgICBAMzc4Cisg
ICAgZ2xQcm9ncmFtVW5pZm9ybTRpdiAgICAgICAgICAgICBAMzc5CisgICAgZ2xQcm9ncmFtVW5p
Zm9ybTF1aXYgICAgICAgICAgICBAMzgwCisgICAgZ2xQcm9ncmFtVW5pZm9ybTJ1aXYgICAgICAg
ICAgICBAMzgxCisgICAgZ2xQcm9ncmFtVW5pZm9ybTN1aXYgICAgICAgICAgICBAMzgyCisgICAg
Z2xQcm9ncmFtVW5pZm9ybTR1aXYgICAgICAgICAgICBAMzgzCisgICAgZ2xQcm9ncmFtVW5pZm9y
bTFmdiAgICAgICAgICAgICBAMzg0CisgICAgZ2xQcm9ncmFtVW5pZm9ybTJmdiAgICAgICAgICAg
ICBAMzg1CisgICAgZ2xQcm9ncmFtVW5pZm9ybTNmdiAgICAgICAgICAgICBAMzg2CisgICAgZ2xQ
cm9ncmFtVW5pZm9ybTRmdiAgICAgICAgICAgICBAMzg3CisgICAgZ2xQcm9ncmFtVW5pZm9ybU1h
dHJpeDJmdiAgICAgICBAMzg4CisgICAgZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDNmdiAgICAgICBA
Mzg5CisgICAgZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDRmdiAgICAgICBAMzkwCisgICAgZ2xQcm9n
cmFtVW5pZm9ybU1hdHJpeDJ4M2Z2ICAgICBAMzkxCisgICAgZ2xQcm9ncmFtVW5pZm9ybU1hdHJp
eDN4MmZ2ICAgICBAMzkyCisgICAgZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGZ2ICAgICBAMzkz
CisgICAgZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2ICAgICBAMzk0CisgICAgZ2xQcm9ncmFt
VW5pZm9ybU1hdHJpeDN4NGZ2ICAgICBAMzk1CisgICAgZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDR4
M2Z2ICAgICBAMzk2CisgICAgZ2xWYWxpZGF0ZVByb2dyYW1QaXBlbGluZSAgICAgICBAMzk3Cisg
ICAgZ2xHZXRQcm9ncmFtUGlwZWxpbmVJbmZvTG9nICAgICBAMzk4CisgICAgZ2xCaW5kSW1hZ2VU
ZXh0dXJlICAgICAgICAgICAgICBAMzk5CisgICAgZ2xHZXRCb29sZWFuaV92ICAgICAgICAgICAg
ICAgICBANDAwCisgICAgZ2xNZW1vcnlCYXJyaWVyICAgICAgICAgICAgICAgICBANDAxCisgICAg
Z2xNZW1vcnlCYXJyaWVyQnlSZWdpb24gICAgICAgICBANDAyCisgICAgZ2xUZXhTdG9yYWdlMkRN
dWx0aXNhbXBsZSAgICAgICBANDAzCisgICAgZ2xHZXRNdWx0aXNhbXBsZWZ2ICAgICAgICAgICAg
ICBANDA0CisgICAgZ2xTYW1wbGVNYXNraSAgICAgICAgICAgICAgICAgICBANDA1CisgICAgZ2xH
ZXRUZXhMZXZlbFBhcmFtZXRlcml2ICAgICAgICBANDA2CisgICAgZ2xHZXRUZXhMZXZlbFBhcmFt
ZXRlcmZ2ICAgICAgICBANDA3CisgICAgZ2xCaW5kVmVydGV4QnVmZmVyICAgICAgICAgICAgICBA
NDA4CisgICAgZ2xWZXJ0ZXhBdHRyaWJGb3JtYXQgICAgICAgICAgICBANDA5CisgICAgZ2xWZXJ0
ZXhBdHRyaWJJRm9ybWF0ICAgICAgICAgICBANDEwCisgICAgZ2xWZXJ0ZXhBdHRyaWJCaW5kaW5n
ICAgICAgICAgICBANDExCisgICAgZ2xWZXJ0ZXhCaW5kaW5nRGl2aXNvciAgICAgICAgICBANDEy
CisKICAgICA7IEFOR0xFIFBsYXRmb3JtIEltcGxlbWVudGF0aW9uCiAgICAgQU5HTEVQbGF0Zm9y
bUN1cnJlbnQgICAgICAgICAgICBAMjkwCiAgICAgQU5HTEVQbGF0Zm9ybUluaXRpYWxpemUgICAg
ICAgICBAMjkxCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyLmd5
cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi5n
eXBpCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTUsMTIgKzUsMTIgQEAKIHsKICAgICAndmFy
aWFibGVzJzoKICAgICB7Ci0gICAgICAgICdhbmdsZV9zdGFuZGFsb25lJSc6IDAsCi0KICAgICAg
ICAgIyBUaGVzZSBmaWxlIGxpc3RzIGFyZSBzaGFyZWQgd2l0aCB0aGUgR04gYnVpbGQuCiAgICAg
ICAgICdsaWJhbmdsZV9jb21tb25fc291cmNlcyc6CiAgICAgICAgIFsKICAgICAgICAgICAgICdj
b21tb24vQml0U2V0SXRlcmF0b3IuaCcsCisgICAgICAgICAgICAnY29tbW9uL0NvbG9yLmgnLAor
ICAgICAgICAgICAgJ2NvbW1vbi9Db2xvci5pbmwnLAogICAgICAgICAgICAgJ2NvbW1vbi9GbG9h
dDE2VG9GbG9hdDMyLmNwcCcsCiAgICAgICAgICAgICAnY29tbW9uL01lbW9yeUJ1ZmZlci5jcHAn
LAogICAgICAgICAgICAgJ2NvbW1vbi9NZW1vcnlCdWZmZXIuaCcsCkBAIC0yNSw2ICsyNSwxMSBA
QAogICAgICAgICAgICAgJ2NvbW1vbi9wbGF0Zm9ybS5oJywKICAgICAgICAgICAgICdjb21tb24v
c3RyaW5nX3V0aWxzLmNwcCcsCiAgICAgICAgICAgICAnY29tbW9uL3N0cmluZ191dGlscy5oJywK
KyAgICAgICAgICAgICdjb21tb24vdGhpcmRfcGFydHkvbnVtZXJpY3MvYmFzZS9sb2dnaW5nLmgn
LAorICAgICAgICAgICAgJ2NvbW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcy9iYXNlL251bWVyaWNz
L3NhZmVfY29udmVyc2lvbnMuaCcsCisgICAgICAgICAgICAnY29tbW9uL3RoaXJkX3BhcnR5L251
bWVyaWNzL2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9uc19pbXBsLmgnLAorICAgICAgICAg
ICAgJ2NvbW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcy9iYXNlL251bWVyaWNzL3NhZmVfbWF0aC5o
JywKKyAgICAgICAgICAgICdjb21tb24vdGhpcmRfcGFydHkvbnVtZXJpY3MvYmFzZS9udW1lcmlj
cy9zYWZlX21hdGhfaW1wbC5oJywKICAgICAgICAgICAgICdjb21tb24vdGxzLmNwcCcsCiAgICAg
ICAgICAgICAnY29tbW9uL3Rscy5oJywKICAgICAgICAgICAgICdjb21tb24vdXRpbGl0aWVzLmNw
cCcsCkBAIC0zMSw2ICszNiwyMCBAQAogICAgICAgICAgICAgJ2NvbW1vbi91dGlsaXRpZXMuaCcs
CiAgICAgICAgICAgICAnY29tbW9uL3ZlcnNpb24uaCcsCiAgICAgICAgIF0sCisgICAgICAgICds
aWJhbmdsZV9pbWFnZV91dGlsX3NvdXJjZXMnOgorICAgICAgICBbCisgICAgICAgICAgICAnaW1h
Z2VfdXRpbC9jb3B5aW1hZ2UuY3BwJywKKyAgICAgICAgICAgICdpbWFnZV91dGlsL2NvcHlpbWFn
ZS5oJywKKyAgICAgICAgICAgICdpbWFnZV91dGlsL2NvcHlpbWFnZS5pbmwnLAorICAgICAgICAg
ICAgJ2ltYWdlX3V0aWwvZ2VuZXJhdGVtaXAuaCcsCisgICAgICAgICAgICAnaW1hZ2VfdXRpbC9n
ZW5lcmF0ZW1pcC5pbmwnLAorICAgICAgICAgICAgJ2ltYWdlX3V0aWwvaW1hZ2Vmb3JtYXRzLmNw
cCcsCisgICAgICAgICAgICAnaW1hZ2VfdXRpbC9pbWFnZWZvcm1hdHMuaCcsCisgICAgICAgICAg
ICAnaW1hZ2VfdXRpbC9sb2FkaW1hZ2UuY3BwJywKKyAgICAgICAgICAgICdpbWFnZV91dGlsL2xv
YWRpbWFnZS5oJywKKyAgICAgICAgICAgICdpbWFnZV91dGlsL2xvYWRpbWFnZS5pbmwnLAorICAg
ICAgICAgICAgJ2ltYWdlX3V0aWwvbG9hZGltYWdlX2V0Yy5jcHAnLAorICAgICAgICBdLAogICAg
ICAgICAnbGliYW5nbGVfaW5jbHVkZXMnOgogICAgICAgICBbCiAgICAgICAgICAgICAnLi4vaW5j
bHVkZS9hbmdsZV9nbC5oJywKQEAgLTY4LDggKzg3LDggQEAKICAgICAgICAgICAgICdsaWJBTkdM
RS9Db25zdGFudHMuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvQ29udGV4dC5jcHAnLAogICAg
ICAgICAgICAgJ2xpYkFOR0xFL0NvbnRleHQuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvRGF0
YS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL0RhdGEuaCcsCisgICAgICAgICAgICAnbGli
QU5HTEUvQ29udGV4dFN0YXRlLmNwcCcsCisgICAgICAgICAgICAnbGliQU5HTEUvQ29udGV4dFN0
YXRlLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL0RlYnVnLmNwcCcsCiAgICAgICAgICAgICAn
bGliQU5HTEUvRGVidWcuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvRGV2aWNlLmNwcCcsCkBA
IC04Nyw2ICsxMDYsOCBAQAogICAgICAgICAgICAgJ2xpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNo
bWVudC5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuY3BwJywKICAg
ICAgICAgICAgICdsaWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuaCcsCisgICAgICAgICAgICAnbGli
QU5HTEUvSGFuZGxlUmFuZ2VBbGxvY2F0b3IuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvSGFu
ZGxlUmFuZ2VBbGxvY2F0b3IuY3BwJywKICAgICAgICAgICAgICdsaWJBTkdMRS9JbWFnZS5oJywK
ICAgICAgICAgICAgICdsaWJBTkdMRS9JbWFnZS5jcHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xF
L0ltYWdlSW5kZXguaCcsCkBAIC05Myw2ICsxMTQsOCBAQAogICAgICAgICAgICAgJ2xpYkFOR0xF
L0ltYWdlSW5kZXguY3BwJywKICAgICAgICAgICAgICdsaWJBTkdMRS9JbmRleFJhbmdlQ2FjaGUu
Y3BwJywKICAgICAgICAgICAgICdsaWJBTkdMRS9JbmRleFJhbmdlQ2FjaGUuaCcsCisgICAgICAg
ICAgICAnbGliQU5HTEUvUGF0aC5oJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9QYXRoLmNwcCcs
CiAgICAgICAgICAgICAnbGliQU5HTEUvUGxhdGZvcm0uY3BwJywKICAgICAgICAgICAgICdsaWJB
TkdMRS9Qcm9ncmFtLmNwcCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvUHJvZ3JhbS5oJywKQEAg
LTEzMCwzNSArMTUzLDUxIEBACiAgICAgICAgICAgICAnbGliQU5HTEUvYW5nbGV0eXBlcy5oJywK
ICAgICAgICAgICAgICdsaWJBTkdMRS9hbmdsZXR5cGVzLmlubCcsCiAgICAgICAgICAgICAnbGli
QU5HTEUvZmVhdHVyZXMuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvZm9ybWF0X21hcF9hdXRv
Z2VuLmNwcCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvZm9ybWF0dXRpbHMuY3BwJywKICAgICAg
ICAgICAgICdsaWJBTkdMRS9mb3JtYXR1dGlscy5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9o
aXN0b2dyYW1fbWFjcm9zLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3F1ZXJ5Y29udmVyc2lv
bnMuY3BwJywKICAgICAgICAgICAgICdsaWJBTkdMRS9xdWVyeWNvbnZlcnNpb25zLmgnLAorICAg
ICAgICAgICAgJ2xpYkFOR0xFL3F1ZXJ5dXRpbHMuY3BwJywKKyAgICAgICAgICAgICdsaWJBTkdM
RS9xdWVyeXV0aWxzLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL0J1ZmZlcklt
cGwuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvQ29tcGlsZXJJbXBsLmgnLAor
ICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL0NvbnRleHRJbXBsLmNwcCcsCisgICAgICAg
ICAgICAnbGliQU5HTEUvcmVuZGVyZXIvQ29udGV4dEltcGwuaCcsCiAgICAgICAgICAgICAnbGli
QU5HTEUvcmVuZGVyZXIvRGV2aWNlSW1wbC5jcHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL0RldmljZUltcGwuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvRGlz
cGxheUltcGwuY3BwJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9EaXNwbGF5SW1w
bC5oJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9FR0xJbXBsRmFjdG9yeS5oJywK
ICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9GZW5jZU5WSW1wbC5oJywKICAgICAgICAg
ICAgICdsaWJBTkdMRS9yZW5kZXJlci9GZW5jZVN5bmNJbXBsLmgnLAorICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL0Zvcm1hdF9JRF9hdXRvZ2VuLmlubCcsCisgICAgICAgICAgICAnbGli
QU5HTEUvcmVuZGVyZXIvRm9ybWF0X2F1dG9nZW4uY3BwJywKKyAgICAgICAgICAgICdsaWJBTkdM
RS9yZW5kZXJlci9Gb3JtYXQuY3BwJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9G
b3JtYXQuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvRnJhbWVidWZmZXJBdHRh
Y2htZW50T2JqZWN0SW1wbC5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9GcmFt
ZWJ1ZmZlckltcGwuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvR0xJbXBsRmFj
dG9yeS5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9JbWFnZUltcGwuaCcsCi0g
ICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvSW1wbEZhY3RvcnkuaCcsCiAgICAgICAgICAg
ICAnbGliQU5HTEUvcmVuZGVyZXIvUHJvZ3JhbUltcGwuaCcsCiAgICAgICAgICAgICAnbGliQU5H
TEUvcmVuZGVyZXIvUXVlcnlJbXBsLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVy
L1JlbmRlcmJ1ZmZlckltcGwuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvUmVu
ZGVyZXIuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9SZW5kZXJlci5oJywK
ICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9TYW1wbGVySW1wbC5oJywKICAgICAgICAg
ICAgICdsaWJBTkdMRS9yZW5kZXJlci9TaGFkZXJJbXBsLmgnLAotICAgICAgICAgICAgJ2xpYkFO
R0xFL3JlbmRlcmVyL1N0cmVhbUltcGwuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvU3RyZWFtUHJvZHVjZXJJbXBsLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVy
L1N1cmZhY2VJbXBsLmNwcCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvU3VyZmFj
ZUltcGwuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvVGV4dHVyZUltcGwuY3Bw
JywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9UZXh0dXJlSW1wbC5oJywKICAgICAg
ICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9UcmFuc2Zvcm1GZWVkYmFja0ltcGwuaCcsCiAgICAg
ICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvVmVydGV4QXJyYXlJbXBsLmgnLAorICAgICAgICAg
ICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2xvYWRfZnVuY3Rpb25zX3RhYmxlLmgnLAorICAgICAgICAg
ICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2xvYWRfZnVuY3Rpb25zX3RhYmxlX2F1dG9nZW4uY3BwJywK
KyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9yZW5kZXJlcl91dGlscy5jcHAnLAorICAg
ICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL3JlbmRlcmVyX3V0aWxzLmgnLAorICAgICAgICAg
ICAgJ2xpYkFOR0xFL3NpZ25hbF91dGlscy5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3Np
Z25hbF91dGlscy5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS92YWxpZGF0aW9uRUdMLmNwcCcs
CiAgICAgICAgICAgICAnbGliQU5HTEUvdmFsaWRhdGlvbkVHTC5oJywKICAgICAgICAgICAgICds
aWJBTkdMRS92YWxpZGF0aW9uRVMuY3BwJywKQEAgLTE2Nyw2ICsyMDYsOCBAQAogICAgICAgICAg
ICAgJ2xpYkFOR0xFL3ZhbGlkYXRpb25FUzIuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvdmFs
aWRhdGlvbkVTMy5jcHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMuaCcs
CisgICAgICAgICAgICAnbGliQU5HTEUvdmFsaWRhdGlvbkVTMzEuY3BwJywKKyAgICAgICAgICAg
ICdsaWJBTkdMRS92YWxpZGF0aW9uRVMzMS5oJywKICAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9t
dXJtdXJoYXNoL011cm11ckhhc2gzLmNwcCcsCiAgICAgICAgICAgICAndGhpcmRfcGFydHkvbXVy
bXVyaGFzaC9NdXJtdXJIYXNoMy5oJywKICAgICAgICAgXSwKQEAgLTE3Niw5ICsyMTcsNiBAQAog
ICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9CdWZmZXJEM0QuaCcsCiAgICAgICAg
ICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL0NvbXBpbGVyRDNELmNwcCcsCiAgICAgICAgICAg
ICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL0NvbXBpbGVyRDNELmgnLAotICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9jb3B5aW1hZ2UuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdM
RS9yZW5kZXJlci9kM2QvY29weWltYWdlLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9jb3B5aW1hZ2UuaW5sJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9k
M2QvRGV2aWNlRDNELmNwcCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL0Rl
dmljZUQzRC5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvRGlzcGxheUQz
RC5jcHAnLApAQCAtMTg3LDI3ICsyMjUsMTkgQEAKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvRHluYW1pY0hMU0wuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL0VHTEltYWdlRDNELmNwcCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNk
L0VHTEltYWdlRDNELmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9mb3Jt
YXR1dGlsc0QzRC5jcHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9mb3Jt
YXR1dGlsc0QzRC5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvRnJhbWVi
dWZmZXJEM0QuY3BwJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvRnJhbWVi
dWZmZXJEM0QuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2dlbmVyYXRl
bWlwLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9nZW5lcmF0ZW1pcC5p
bmwnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9ITFNMQ29tcGlsZXIuY3Bw
JywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvSExTTENvbXBpbGVyLmgnLAog
ICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9JbWFnZUQzRC5jcHAnLAogICAgICAg
ICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9JbWFnZUQzRC5oJywKLSAgICAgICAgICAgICds
aWJBTkdMRS9yZW5kZXJlci9kM2QvaW1hZ2Vmb3JtYXRzLmgnLAogICAgICAgICAgICAgJ2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9JbmRleEJ1ZmZlci5jcHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9JbmRleEJ1ZmZlci5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvSW5kZXhEYXRhTWFuYWdlci5jcHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9JbmRleERhdGFNYW5hZ2VyLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9sb2FkaW1hZ2UuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvbG9hZGltYWdlLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9s
b2FkaW1hZ2UuaW5sJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvbG9hZGlt
YWdlU1NFMi5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9sb2FkaW1h
Z2VfZXRjLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2xvYWRpbWFn
ZV9ldGMuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL05hdGl2ZVdpbmRv
d0QzRC5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9OYXRpdmVXaW5k
b3dEM0QuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL1Byb2dyYW1EM0Qu
Y3BwJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvUHJvZ3JhbUQzRC5oJywK
ICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyYnVmZmVyRDNELmNwcCcs
CkBAIC0yMjcsOCArMjU3LDYgQEAKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
VGV4dHVyZUQzRC5jcHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9UZXh0
dXJlRDNELmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9UZXh0dXJlU3Rv
cmFnZS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvVHJhbnNmb3JtRmVl
ZGJhY2tEM0QuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvVHJhbnNm
b3JtRmVlZGJhY2tEM0QuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL1Zh
cnlpbmdQYWNraW5nLmNwcCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL1Zh
cnlpbmdQYWNraW5nLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9WZXJ0
ZXhCdWZmZXIuY3BwJywKQEAgLTI0Myw2ICsyNzEsOCBAQAogICAgICAgICAgICAgJ2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2Q5L0JsaXQ5LmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2Q5L0J1ZmZlcjkuY3BwJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkOS9CdWZmZXI5LmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2Q5L0NvbnRleHQ5LmNwcCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDkvQ29udGV4dDkuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDkvRGVidWdBbm5vdGF0b3I5LmNwcCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDkvRGVidWdBbm5vdGF0b3I5LmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2Q5L0ZlbmNlOS5jcHAnLApAQCAtMjU1LDYgKzI4NSw4IEBACiAgICAgICAgICAg
ICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvSW1hZ2U5LmgnLAogICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0luZGV4QnVmZmVyOS5jcHAnLAogICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0luZGV4QnVmZmVyOS5oJywKKyAgICAgICAgICAg
ICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9OYXRpdmVXaW5kb3c5LmNwcCcsCisgICAgICAg
ICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvTmF0aXZlV2luZG93OS5oJywKICAgICAg
ICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9RdWVyeTkuY3BwJywKICAgICAgICAg
ICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9RdWVyeTkuaCcsCiAgICAgICAgICAgICAn
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvUmVuZGVyZXI5LmNwcCcsCkBAIC0yOTIsMTAgKzMy
NCwxMyBAQAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9CdWZmZXIx
MS5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQ2xlYXIxMS5j
cHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9DbGVhcjExLmgn
LAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Db250ZXh0MTEuY3Bw
JywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQ29udGV4dDExLmgn
LAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9jb3B5dmVydGV4Lmgn
LAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9jb3B5dmVydGV4Lmlu
bCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0RlYnVnQW5ub3Rh
dG9yMTEuY3BwJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvRGVi
dWdBbm5vdGF0b3IxMS5oJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvZHhnaV9mb3JtYXRfbWFwX2F1dG9nZW4uY3BwJywKICAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9zdXBwb3J0X3RhYmxlLmNwcCcsCiAgICAgICAgICAgICAn
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfc3VwcG9ydF90YWJsZS5oJywKICAgICAg
ICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvRmVuY2UxMS5jcHAnLApAQCAtMzEw
LDkgKzM0NSw3IEBACiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0lu
ZGV4QnVmZmVyMTEuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L0lucHV0TGF5b3V0Q2FjaGUuY3BwJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvSW5wdXRMYXlvdXRDYWNoZS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvbG9hZF9mdW5jdGlvbnNfdGFibGUuaCcsCi0gICAgICAgICAgICAnbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2xvYWRfZnVuY3Rpb25zX3RhYmxlX2F1dG9nZW4uY3Bw
JywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvTmF0aXZlV2luZG93
LmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9OYXRpdmVXaW5k
b3cxMS5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUGl4ZWxU
cmFuc2ZlcjExLmNwcCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L1BpeGVsVHJhbnNmZXIxMS5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvUXVlcnkxMS5jcHAnLApAQCAtMzU5LDYgKzM5Miw4IEBACiAgICAgICAgICAgICAnbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZzNk
aTExcHMuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRl
cnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZzNkdWkxMXBzLmgnLAogICAgICAgICAgICAgJ2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiMmQx
MXBzLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJz
L2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdicHJlbXVsdGlwbHkyZDExcHMuaCcsCisgICAgICAgICAg
ICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91
Z2hyZ2J1bm11bHRpcGx5MmQxMXBzLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiMmRpMTFwcy5oJywKICAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9w
YXNzdGhyb3VnaHJnYjJkdWkxMXBzLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiM2QxMXBzLmgnLApAQCAt
MzY1LDYgKzQwMCw4IEBACiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2IzZGkxMXBzLmgnLAogICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdo
cmdiM2R1aTExcHMuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2JhMmQxMXBzLmgnLAorICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdo
cmdiYXByZW11bHRpcGx5MmQxMXBzLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiYXVubXVsdGlwbHkyZDEx
cHMuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMv
Y29tcGlsZWQvcGFzc3Rocm91Z2hyZ2JhMmRpMTFwcy5oJywKICAgICAgICAgICAgICdsaWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYmEyZHVp
MTFwcy5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVy
cy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYmEzZDExcHMuaCcsCkBAIC0zODEsMTYgKzQxOCwxOSBA
QAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBp
bGVkL3N3aXp6bGV1aTNkcHMuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL1N0YXRlTWFuYWdlcjExLmNwcCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL1N0YXRlTWFuYWdlcjExLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9TdHJlYW0xMS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9TdHJlYW0xMS5oJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvU3RyZWFtUHJvZHVjZXJOVjEyLmNwcCcsCisgICAgICAgICAgICAnbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0cmVhbVByb2R1Y2VyTlYxMi5oJywKICAgICAgICAg
ICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3dhcENoYWluMTEuY3BwJywKICAgICAg
ICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3dhcENoYWluMTEuaCcsCiAgICAg
ICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1RleHR1cmVTdG9yYWdlMTEuY3Bw
JywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVGV4dHVyZVN0b3Jh
Z2UxMS5oJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVHJhbnNm
b3JtRmVlZGJhY2sxMS5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9UcmFuc2Zvcm1GZWVkYmFjazExLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9UcmltMTEuY3BwJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvVHJpbTExLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZV9hdXRvZ2VuLmNwcCcsCi0gICAgICAgICAgICAn
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlX2F1dG9nZW4u
aCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9y
bWF0X3RhYmxlX3V0aWxzLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZS5jcHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZS5oJywKICAgICAgICAgICAgICds
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVmVydGV4QXJyYXkxMS5jcHAnLAogICAgICAgICAg
ICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9WZXJ0ZXhBcnJheTExLmgnLApAQCAtMzk5
LDE4ICs0MzksMjEgQEAKICAgICAgICAgXSwKICAgICAgICAgJ2xpYmFuZ2xlX2QzZDExX3dpbjMy
X3NvdXJjZXMnOgogICAgICAgICBbCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL3dpbjMyL05hdGl2ZVdpbmRvdy5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS93aW4zMi9OYXRpdmVXaW5kb3cxMVdpbjMyLmNwcCcsCisgICAgICAg
ICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbjMyL05hdGl2ZVdpbmRvdzExV2lu
MzIuaCcsCiAgICAgICAgICAgICAndGhpcmRfcGFydHkvc3lzdGVtaW5mby9TeXN0ZW1JbmZvLmNw
cCcsCiAgICAgICAgICAgICAndGhpcmRfcGFydHkvc3lzdGVtaW5mby9TeXN0ZW1JbmZvLmgnLAog
ICAgICAgICBdLAogICAgICAgICAnbGliYW5nbGVfZDNkMTFfd2lucnRfc291cmNlcyc6CiAgICAg
ICAgIFsKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQvU3dh
cENoYWluUGFuZWxOYXRpdmVXaW5kb3cuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvd2lucnQvU3dhcENoYWluUGFuZWxOYXRpdmVXaW5kb3cuaCcsCiAgICAg
ICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbnJ0L0NvcmVXaW5kb3dOYXRp
dmVXaW5kb3cuY3BwJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
d2lucnQvQ29yZVdpbmRvd05hdGl2ZVdpbmRvdy5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvd2lucnQvSW5zcGVjdGFibGVOYXRpdmVXaW5kb3cuY3BwJywKICAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQvSW5zcGVjdGFibGVO
YXRpdmVXaW5kb3cuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L3dpbnJ0L05hdGl2ZVdpbmRvdzExV2luUlQuY3BwJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvd2lucnQvTmF0aXZlV2luZG93MTFXaW5SVC5oJywKKyAgICAgICAg
ICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQvU3dhcENoYWluUGFuZWxOYXRp
dmVXaW5kb3cuY3BwJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
d2lucnQvU3dhcENoYWluUGFuZWxOYXRpdmVXaW5kb3cuaCcsCiAgICAgICAgIF0sCiAgICAgICAg
ICdsaWJhbmdsZV9nbF9zb3VyY2VzJzoKICAgICAgICAgWwpAQCAtNDIwLDYgKzQ2Myw4IEBACiAg
ICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvQnVmZmVyR0wuaCcsCiAgICAgICAgICAg
ICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvQ29tcGlsZXJHTC5jcHAnLAogICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL2dsL0NvbXBpbGVyR0wuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUv
cmVuZGVyZXIvZ2wvQ29udGV4dEdMLmNwcCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvQ29udGV4dEdMLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Rp
c3BsYXlHTC5jcHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Rpc3BsYXlH
TC5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9GZW5jZU5WR0wuY3BwJywK
QEAgLTQzMCw2ICs0NzUsOCBAQAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Zy
YW1lYnVmZmVyR0wuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvRnVuY3Rp
b25zR0wuY3BwJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9GdW5jdGlvbnNH
TC5oJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9QYXRoR0wuaCcsCisgICAg
ICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvUGF0aEdMLmNwcCcsCiAgICAgICAgICAgICAn
bGliQU5HTEUvcmVuZGVyZXIvZ2wvUHJvZ3JhbUdMLmNwcCcsCiAgICAgICAgICAgICAnbGliQU5H
TEUvcmVuZGVyZXIvZ2wvUHJvZ3JhbUdMLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRl
cmVyL2dsL1F1ZXJ5R0wuY3BwJywKQEAgLTQ5MSw2ICs1MzgsMzcgQEAKICAgICAgICAgICAgICds
aWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvZnVuY3Rpb25zZ2x4X3R5cGVkZWZzLmgnLAogICAgICAg
ICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9wbGF0Zm9ybV9nbHguaCcsCiAgICAgICAg
IF0sCisgICAgICAgICdsaWJhbmdsZV9nbF9lZ2xfc291cmNlcyc6CisgICAgICAgIFsKKyAgICAg
ICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvRGlzcGxheUVHTC5jcHAnLAorICAgICAg
ICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9EaXNwbGF5RUdMLmgnLAorICAgICAgICAg
ICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9GdW5jdGlvbnNFR0wuY3BwJywKKyAgICAgICAg
ICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvRnVuY3Rpb25zRUdMLmgnLAorICAgICAgICAg
ICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9mdW5jdGlvbnNlZ2xfdHlwZWRlZnMuaCcsCisg
ICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1BidWZmZXJTdXJmYWNlRUdMLmNw
cCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1BidWZmZXJTdXJmYWNl
RUdMLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9TdXJmYWNlRUdM
LmNwcCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1N1cmZhY2VFR0wu
aCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1dpbmRvd1N1cmZhY2VF
R0wuY3BwJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvV2luZG93U3Vy
ZmFjZUVHTC5oJywKKyAgICAgICAgXSwKKyAgICAgICAgJ2xpYmFuZ2xlX2dsX2VnbF9kbF9zb3Vy
Y2VzJzoKKyAgICAgICAgWworICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9G
dW5jdGlvbnNFR0xETC5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Vn
bC9GdW5jdGlvbnNFR0xETC5oJywKKyAgICAgICAgXSwKKyAgICAgICAgJ2xpYmFuZ2xlX2dsX296
b25lX3NvdXJjZXMnOgorICAgICAgICBbCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
Z2wvZWdsL296b25lL0Rpc3BsYXlPem9uZS5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL2VnbC9vem9uZS9EaXNwbGF5T3pvbmUuaCcsCisgICAgICAgICAgICAnbGliQU5H
TEUvcmVuZGVyZXIvZ2wvZWdsL296b25lL1N1cmZhY2VPem9uZS5jcHAnLAorICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9vem9uZS9TdXJmYWNlT3pvbmUuaCcsCisgICAgICAg
IF0sCisgICAgICAgICdsaWJhbmdsZV9nbF9lZ2xfYW5kcm9pZF9zb3VyY2VzJzoKKyAgICAgICAg
WworICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9hbmRyb2lkL0Rpc3BsYXlB
bmRyb2lkLmNwcCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL2FuZHJv
aWQvRGlzcGxheUFuZHJvaWQuaCcsCisgICAgICAgIF0sCiAgICAgICAgICdsaWJhbmdsZV9nbF9j
Z2xfc291cmNlcyc6CiAgICAgICAgIFsKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9n
bC9jZ2wvRGlzcGxheUNHTC5tbScsCkBAIC01MDAsNiArNTc4LDg4IEBACiAgICAgICAgICAgICAn
bGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1dpbmRvd1N1cmZhY2VDR0wubW0nLAogICAgICAgICAg
ICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9XaW5kb3dTdXJmYWNlQ0dMLmgnLAogICAgICAg
ICBdLAorICAgICAgICAnbGliYW5nbGVfdnVsa2FuX3NvdXJjZXMnOgorICAgICAgICBbCisgICAg
ICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0J1ZmZlclZrLmNwcCcsCisgICAgICAg
ICAgICAnbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0J1ZmZlclZrLmgnLAorICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db21waWxlclZrLmNwcCcsCisgICAgICAgICAgICAn
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbXBpbGVyVmsuaCcsCisgICAgICAgICAgICAnbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbnRleHRWay5jcHAnLAorICAgICAgICAgICAgJ2xpYkFO
R0xFL3JlbmRlcmVyL3Z1bGthbi9Db250ZXh0VmsuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUv
cmVuZGVyZXIvdnVsa2FuL0RldmljZVZrLmNwcCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVu
ZGVyZXIvdnVsa2FuL0RldmljZVZrLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9EaXNwbGF5VmsuY3BwJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92
dWxrYW4vRGlzcGxheVZrLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGth
bi9GZW5jZU5WVmsuY3BwJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
RmVuY2VOVlZrLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9GZW5j
ZVN5bmNWay5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9GZW5j
ZVN5bmNWay5oJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRnJhbWVi
dWZmZXJWay5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9GcmFt
ZWJ1ZmZlclZrLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9JbWFn
ZVZrLmNwcCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0ltYWdlVmsu
aCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Byb2dyYW1Way5jcHAn
LAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Qcm9ncmFtVmsuaCcsCisg
ICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1F1ZXJ5VmsuY3BwJywKKyAgICAg
ICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUXVlcnlWay5oJywKKyAgICAgICAgICAg
ICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyYnVmZmVyVmsuY3BwJywKKyAgICAgICAg
ICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyYnVmZmVyVmsuaCcsCisgICAgICAg
ICAgICAnbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRlcmVyVmsuY3BwJywKKyAgICAgICAg
ICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyZXJWay5oJywKKyAgICAgICAgICAg
ICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU2FtcGxlclZrLmNwcCcsCisgICAgICAgICAgICAn
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1NhbXBsZXJWay5oJywKKyAgICAgICAgICAgICdsaWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vU2hhZGVyVmsuY3BwJywKKyAgICAgICAgICAgICdsaWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vU2hhZGVyVmsuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVu
ZGVyZXIvdnVsa2FuL1N1cmZhY2VWay5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRl
cmVyL3Z1bGthbi9TdXJmYWNlVmsuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
dnVsa2FuL1RleHR1cmVWay5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL3Z1
bGthbi9UZXh0dXJlVmsuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvdnVsa2Fu
L1RyYW5zZm9ybUZlZWRiYWNrVmsuY3BwJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJl
ci92dWxrYW4vVHJhbnNmb3JtRmVlZGJhY2tWay5oJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vVmVydGV4QXJyYXlWay5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xF
L3JlbmRlcmVyL3Z1bGthbi9WZXJ0ZXhBcnJheVZrLmgnLAorICAgICAgICBdLAorICAgICAgICAn
bGliYW5nbGVfbnVsbF9zb3VyY2VzJzoKKyAgICAgICAgWworICAgICAgICAgICAgJ2xpYkFOR0xF
L3JlbmRlcmVyL251bGwvQnVmZmVyTlVMTC5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL251bGwvQnVmZmVyTlVMTC5oJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJl
ci9udWxsL0NvbXBpbGVyTlVMTC5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVy
L251bGwvQ29tcGlsZXJOVUxMLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251
bGwvQ29udGV4dE5VTEwuY3BwJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxs
L0NvbnRleHROVUxMLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRGV2
aWNlTlVMTC5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRGV2aWNl
TlVMTC5oJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxsL0Rpc3BsYXlOVUxM
LmNwcCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9EaXNwbGF5TlVMTC5o
JywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxsL0ZlbmNlTlZOVUxMLmNwcCcs
CisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9GZW5jZU5WTlVMTC5oJywKKyAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxsL0ZlbmNlU3luY05VTEwuY3BwJywKKyAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxsL0ZlbmNlU3luY05VTEwuaCcsCisgICAg
ICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9GcmFtZWJ1ZmZlck5VTEwuY3BwJywKKyAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxsL0ZyYW1lYnVmZmVyTlVMTC5oJywKKyAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxsL0ltYWdlTlVMTC5jcHAnLAorICAgICAg
ICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvSW1hZ2VOVUxMLmgnLAorICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUGF0aE5VTEwuY3BwJywKKyAgICAgICAgICAgICdsaWJB
TkdMRS9yZW5kZXJlci9udWxsL1BhdGhOVUxMLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL251bGwvUHJvZ3JhbU5VTEwuY3BwJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5k
ZXJlci9udWxsL1Byb2dyYW1OVUxMLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVy
L251bGwvUXVlcnlOVUxMLmNwcCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbnVs
bC9RdWVyeU5VTEwuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9SZW5k
ZXJidWZmZXJOVUxMLmNwcCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9S
ZW5kZXJidWZmZXJOVUxMLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwv
U2FtcGxlck5VTEwuY3BwJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxsL1Nh
bXBsZXJOVUxMLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvU2hhZGVy
TlVMTC5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvU2hhZGVyTlVM
TC5oJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxsL1N1cmZhY2VOVUxMLmNw
cCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9TdXJmYWNlTlVMTC5oJywK
KyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxsL1RleHR1cmVOVUxMLmNwcCcsCisg
ICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9UZXh0dXJlTlVMTC5oJywKKyAgICAg
ICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxsL1RyYW5zZm9ybUZlZWRiYWNrTlVMTC5jcHAn
LAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvVHJhbnNmb3JtRmVlZGJhY2tO
VUxMLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvVmVydGV4QXJyYXlO
VUxMLmNwcCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9WZXJ0ZXhBcnJh
eU5VTEwuaCcsCisgICAgICAgIF0sCiAgICAgICAgICdsaWJnbGVzdjJfc291cmNlcyc6CiAgICAg
ICAgIFsKICAgICAgICAgICAgICdjb21tb24vYW5nbGV1dGlscy5oJywKQEAgLTUxNCw2ICs2NzQs
OCBAQAogICAgICAgICAgICAgJ2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18yXzBfZXh0Lmgn
LAogICAgICAgICAgICAgJ2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzAuY3BwJywKICAg
ICAgICAgICAgICdsaWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfM18wLmgnLAorICAgICAgICAg
ICAgJ2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzEuY3BwJywKKyAgICAgICAgICAgICds
aWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfM18xLmgnLAogICAgICAgICAgICAgJ2xpYkdMRVN2
Mi9nbG9iYWxfc3RhdGUuY3BwJywKICAgICAgICAgICAgICdsaWJHTEVTdjIvZ2xvYmFsX3N0YXRl
LmgnLAogICAgICAgICAgICAgJ2xpYkdMRVN2Mi9saWJHTEVTdjIuY3BwJywKQEAgLTU0MSw2ICs3
MDMsNyBAQAogICAgICAgICAgICAgICAgICd0cmFuc2xhdG9yX3N0YXRpYycsCiAgICAgICAgICAg
ICAgICAgJ2NvbW1pdF9pZCcsCiAgICAgICAgICAgICAgICAgJ2FuZ2xlX2NvbW1vbicsCisgICAg
ICAgICAgICAgICAgJ2FuZ2xlX2ltYWdlX3V0aWwnLAogICAgICAgICAgICAgXSwKICAgICAgICAg
ICAgICdpbmNsdWRlcyc6IFsgJy4uL2J1aWxkL2NvbW1vbl9kZWZpbmVzLmd5cGknLCBdLAogICAg
ICAgICAgICAgJ2luY2x1ZGVfZGlycyc6CkBAIC01NTgsNiArNzIxLDEwIEBACiAgICAgICAgICAg
ICBbCiAgICAgICAgICAgICAgICAgJ0xJQkFOR0xFX0lNUExFTUVOVEFUSU9OJywKICAgICAgICAg
ICAgIF0sCisgICAgICAgICAgICAnZXhwb3J0X2RlcGVuZGVudF9zZXR0aW5ncyc6CisgICAgICAg
ICAgICBbCisgICAgICAgICAgICAgICAgJ2FuZ2xlX2NvbW1vbicsCisgICAgICAgICAgICBdLAog
ICAgICAgICAgICAgJ2RpcmVjdF9kZXBlbmRlbnRfc2V0dGluZ3MnOgogICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgICdpbmNsdWRlX2RpcnMnOgpAQCAtNjIzLDYgKzc5MCwxMyBAQAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgICAgICAgICAgXSwK
ICAgICAgICAgICAgICAgICAgICAgfV0sCisgICAgICAgICAgICAgICAgICAgIFsnYW5nbGVfZW5h
YmxlX3Z1bGthbj09MScsCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICdkZWZpbmVzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnQU5HTEVfRU5BQkxFX1ZVTEtBTicsCisgICAgICAgICAgICAgICAg
ICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgICBdLAog
ICAgICAgICAgICAgfSwKICAgICAgICAgICAgICdjb25kaXRpb25zJzoKQEAgLTc1NSw2ICs5Mjks
MzEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgfV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICBbJ3VzZV9vem9uZT09MScsCisgICAgICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FOR0xFX1VT
RV9PWk9ORScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnc291cmNlcyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPEAobGliYW5nbGVfZ2xfZWdsX3NvdXJj
ZXMpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxAKGxpYmFuZ2xlX2dsX2Vn
bF9kbF9zb3VyY2VzKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8QChsaWJh
bmdsZV9nbF9vem9uZV9zb3VyY2VzKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2ZsYWdzJzoKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8IUAoPChwa2ct
Y29uZmlnKSAtLWNmbGFncyBsaWJkcm0gZ2JtKScsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGlua19zZXR0aW5ncyc6IHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xkZmxhZ3MnOiBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnPCFAKDwocGtnLWNvbmZpZykgLS1saWJzLW9ubHktTCAt
LWxpYnMtb25seS1vdGhlciBsaWJkcm0gZ2JtKScsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaWJyYXJpZXMnOiBb
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPCFAKDwocGtnLWNvbmZpZykg
LS1saWJzLW9ubHktbCBsaWJkcm0gZ2JtKSAtbGRsJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgfV0sCiAgICAgICAgICAgICAgICAgICAgICAgICBbJ2FuZ2xlX2xpbmtfZ2x4
PT0xJywKICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnbGlua19zZXR0aW5ncyc6CkBAIC03NzksOSArOTc4LDkgQEAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaWJyYXJp
ZXMnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnJChTREtST09UKS9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvY29hLmZyYW1ld29yaycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
JChTREtST09UKS9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPU3VyZmFjZS5mcmFtZXdvcmsn
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyQoU0RLUk9PVCkvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICckKFNES1JPT1QpL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
SU9TdXJmYWNlLmZyYW1ld29yaycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnJChTREtST09UKS9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvY29hLmZyYW1ld29yaycs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJChTREtST09UKS9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrJywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LApAQCAt
Nzk0LDYgKzk5MywyOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgfV0sCiAgICAgICAgICAg
ICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgfV0sCisgICAgICAgICAgICAgICAgWydhbmds
ZV9lbmFibGVfdnVsa2FuPT0xJywKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICdzb3VyY2VzJzoKKyAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAg
ICAgICAgJzxAKGxpYmFuZ2xlX3Z1bGthbl9zb3VyY2VzKScsCisgICAgICAgICAgICAgICAgICAg
IF0sCisgICAgICAgICAgICAgICAgICAgICdkZWZpbmVzJzoKKyAgICAgICAgICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgICAgICAgICAgJ0FOR0xFX0VOQUJMRV9WVUxLQU4nLAorICAgICAg
ICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIH1dLAorICAgICAgICAgICAgICAgIFsn
YW5nbGVfZW5hYmxlX251bGw9PTEnLAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgJ3NvdXJjZXMnOgorICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAg
ICAgICAgICAnPEAobGliYW5nbGVfbnVsbF9zb3VyY2VzKScsCisgICAgICAgICAgICAgICAgICAg
IF0sCisgICAgICAgICAgICAgICAgICAgICdkZWZpbmVzJzoKKyAgICAgICAgICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgICAgICAgICAgJ0FOR0xFX0VOQUJMRV9OVUxMJywKKyAgICAgICAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgICBbJ2Fu
Z2xlX2J1aWxkX3dpbnJ0PT0wIGFuZCBPUz09IndpbiInLAogICAgICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6CkBAIC04MjYsMTAgKzEwNDcsNiBAQAog
ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgJ21zdnNfcmVxdWlyZXNfaW1w
b3J0bGlicmFyeScgOiAndHJ1ZScsCiAgICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAg
ICAgWydhbmdsZV9idWlsZF93aW5waG9uZT09MScsCi0gICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAnbXN2c19lbmFibGVfd2lucGhvbmUnIDogJzEnLAotICAgICAgICAgICAg
ICAgIH1dLAogICAgICAgICAgICAgXSwKICAgICAgICAgfSwKICAgICBdLApJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL0JVSUxELmduCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9CVUlMRC5nbgkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvQlVJTEQuZ24JKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwzNDggQEAKKyMgQ29weXJpZ2h0IDIwMTUgVGhlIENocm9taXVtIEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKworaW1wb3J0KCIvL3Rlc3RpbmcvdGVzdC5nbmkiKQoraW1wb3J0KCIvL2J1
aWxkL2NvbmZpZy9jaHJvbWVjYXN0X2J1aWxkLmduaSIpCitpbXBvcnQoIi8vdGhpcmRfcGFydHkv
YW5nbGUvYnVpbGQvYW5nbGVfY29tbW9uLmduaSIpCisKK3VuaXR0ZXN0c19neXBpID0gZXhlY19z
Y3JpcHQoIi8vYnVpbGQvZ3lwaV90b19nbi5weSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWJhc2VfcGF0aCgiYW5nbGVf
dW5pdHRlc3RzLmd5cGkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1yZXBs
YWNlPTwoYW5nbGVfcGF0aCk9LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsgImFuZ2xlX3VuaXR0ZXN0cy5neXBpIiBdKQorCit0ZXN0KCJhbmdsZV91bml0
dGVzdHMiKSB7CisgIGluY2x1ZGVfZGlycyA9IFsKKyAgICAidGVzdGluZy9ndGVzdC9pbmNsdWRl
IiwKKyAgICAiLi4vLi4vc3JjIiwKKyAgXQorCisgIHNvdXJjZXMgPSByZWJhc2VfcGF0aCh1bml0
dGVzdHNfZ3lwaS5hbmdsZV91bml0dGVzdHNfc291cmNlcywgIi4iLCAiLi4vLi4iKQorCisgIGlm
IChhbmdsZV9lbmFibGVfaGxzbCkgeworICAgIHNvdXJjZXMgKz0KKyAgICAgICAgcmViYXNlX3Bh
dGgodW5pdHRlc3RzX2d5cGkuYW5nbGVfdW5pdHRlc3RzX2hsc2xfc291cmNlcywgIi4iLCAiLi4v
Li4iKQorICAgIGRlZmluZXMgPSBbICJBTkdMRV9FTkFCTEVfSExTTCIgXQorICB9CisKKyAgc291
cmNlcyArPSBbICIvL2dwdS9hbmdsZV91bml0dGVzdF9tYWluLmNjIiBdCisKKyAgZGVwcyA9IFsK
KyAgICAiLy9iYXNlIiwKKyAgICAiLy9iYXNlL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKKyAgICAiLy90
ZXN0aW5nL2dtb2NrIiwKKyAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKKyAgICAiLy90aGlyZF9wYXJ0
eS9hbmdsZTpsaWJBTkdMRSIsCisgICAgIi8vdGhpcmRfcGFydHkvYW5nbGU6cHJlcHJvY2Vzc29y
IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hbmdsZTp0cmFuc2xhdG9yX3N0YXRpYyIsCisgIF0KK30K
KworaWYgKGlzX3dpbiB8fCBpc19saW51eCB8fCBpc19tYWMgfHwgaXNfYW5kcm9pZCkgeworICBl
bmQyZW5kX2d5cGkgPSBleGVjX3NjcmlwdCgiLy9idWlsZC9neXBpX3RvX2duLnB5IiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlYmFzZV9wYXRoKCJhbmdsZV9lbmQyZW5kX3Rlc3RzLmd5cGkiKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiLS1yZXBsYWNlPTwoYW5nbGVfcGF0aCk9LiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29w
ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgImFuZ2xlX2VuZDJlbmRfdGVzdHMu
Z3lwaSIgXSkKKworICB0ZXN0KCJhbmdsZV9lbmQyZW5kX3Rlc3RzIikgeworICAgIGluY2x1ZGVf
ZGlycyA9IFsKKyAgICAgICJ0ZXN0aW5nL2d0ZXN0L2luY2x1ZGUiLAorICAgICAgIi4uLy4uL3Ny
Yy90ZXN0cyIsCisgICAgICAiLi4vLi4vdXRpbCIsCisgICAgXQorCisgICAgaWYgKGlzX2FuZHJv
aWQpIHsKKyAgICAgIHVzZV9uYXRpdmVfYWN0aXZpdHkgPSB0cnVlCisgICAgfQorCisgICAgc291
cmNlcyA9CisgICAgICAgIHJlYmFzZV9wYXRoKGVuZDJlbmRfZ3lwaS5hbmdsZV9lbmQyZW5kX3Rl
c3RzX3NvdXJjZXMsICIuIiwgIi4uLy4uIikKKworICAgIGlmIChpc193aW4pIHsKKyAgICAgIHNv
dXJjZXMgKz0gcmViYXNlX3BhdGgoZW5kMmVuZF9neXBpLmFuZ2xlX2VuZDJlbmRfdGVzdHNfd2lu
X3NvdXJjZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIuIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIi4uLy4uIikKKyAgICB9CisgICAgaWYgKHVzZV94MTEpIHsKKyAg
ICAgIHNvdXJjZXMgKz0gcmViYXNlX3BhdGgoZW5kMmVuZF9neXBpLmFuZ2xlX2VuZDJlbmRfdGVz
dHNfeDExX3NvdXJjZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIuIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIi4uLy4uIikKKyAgICB9CisKKyAgICBzb3VyY2VzICs9
IFsgIi8vZ3B1L2FuZ2xlX2VuZDJlbmRfdGVzdHNfbWFpbi5jYyIgXQorCisgICAgY29uZmlncyAr
PSBbCisgICAgICAiLy90aGlyZF9wYXJ0eS9hbmdsZTppbnRlcm5hbF9jb25maWciLAorICAgICAg
Ii8vdGhpcmRfcGFydHkvYW5nbGU6bGliQU5HTEVfY29uZmlnIiwKKyAgICBdCisKKyAgICBpZiAo
aXNfbGludXggJiYgIWlzX2NvbXBvbmVudF9idWlsZCkgeworICAgICAgIyBTZXQgcnBhdGggdG8g
ZmluZCBsaWJFR0wuc28gYW5kIGxpYkdMRVN2Mi5zbyBldmVuIGluIGEgbm9uLWNvbXBvbmVudCBi
dWlsZC4KKyAgICAgIGNvbmZpZ3MgKz0gWyAiLy9idWlsZC9jb25maWcvZ2NjOnJwYXRoX2Zvcl9i
dWlsdF9zaGFyZWRfbGlicmFyaWVzIiBdCisgICAgfQorCisgICAgZGVwcyA9IFsKKyAgICAgICIv
L2Jhc2UiLAorICAgICAgIi8vYmFzZS90ZXN0OnRlc3Rfc3VwcG9ydCIsCisgICAgICAiLy90ZXN0
aW5nL2dtb2NrIiwKKyAgICAgICIvL3Rlc3RpbmcvZ3Rlc3QiLAorICAgICAgIi8vdGhpcmRfcGFy
dHkvYW5nbGU6YW5nbGVfdXRpbCIsCisgICAgICAiLy90aGlyZF9wYXJ0eS9hbmdsZTpsaWJBTkdM
RSIsCisgICAgICAiLy90aGlyZF9wYXJ0eS9hbmdsZTpsaWJFR0wiLAorICAgICAgIi8vdGhpcmRf
cGFydHkvYW5nbGU6bGliR0xFU3YyIiwKKyAgICAgICIvL3RoaXJkX3BhcnR5L2FuZ2xlOnByZXBy
b2Nlc3NvciIsCisgICAgICAiLy90aGlyZF9wYXJ0eS9hbmdsZTp0cmFuc2xhdG9yX3N0YXRpYyIs
CisgICAgXQorICB9Cit9CisKK2lmIChpc193aW4pIHsKKyAgcGVyZnRlc3RzX2d5cGkgPSBleGVj
X3NjcmlwdCgiLy9idWlsZC9neXBpX3RvX2duLnB5IiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWJhc2VfcGF0aCgi
YW5nbGVfcGVyZnRlc3RzLmd5cGkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICItLXJlcGxhY2U9PChhbmdsZV9wYXRoKT0uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWyAiYW5nbGVfcGVyZnRlc3RzLmd5cGkiIF0pCisKKyAg
dGVzdCgiYW5nbGVfcGVyZnRlc3RzIikgeworICAgIGluY2x1ZGVfZGlycyA9IFsKKyAgICAgICJ0
ZXN0aW5nL2d0ZXN0L2luY2x1ZGUiLAorICAgICAgIi4uLy4uL3NyYy90ZXN0cyIsCisgICAgICAi
Li4vLi4vdXRpbCIsCisgICAgXQorCisgICAgc291cmNlcyA9IHJlYmFzZV9wYXRoKHBlcmZ0ZXN0
c19neXBpLmFuZ2xlX3BlcmZfdGVzdHNfc291cmNlcywgIi4iLCAiLi4vLi4iKQorCisgICAgc291
cmNlcyArPQorICAgICAgICByZWJhc2VfcGF0aChwZXJmdGVzdHNfZ3lwaS5hbmdsZV9wZXJmX3Rl
c3RzX3dpbl9zb3VyY2VzLCAiLiIsICIuLi8uLiIpCisKKyAgICBzb3VyY2VzICs9IFsgIi8vZ3B1
L2FuZ2xlX3BlcmZ0ZXN0c19tYWluLmNjIiBdCisKKyAgICBjb25maWdzICs9IFsKKyAgICAgICIv
L3RoaXJkX3BhcnR5L2FuZ2xlOmludGVybmFsX2NvbmZpZyIsCisgICAgICAiLy90aGlyZF9wYXJ0
eS9hbmdsZTpsaWJBTkdMRV9jb25maWciLAorICAgIF0KKworICAgIGRlcHMgPSBbCisgICAgICAi
Ly9iYXNlIiwKKyAgICAgICIvL2Jhc2UvdGVzdDp0ZXN0X3N1cHBvcnQiLAorICAgICAgIi8vdGVz
dGluZy9nbW9jayIsCisgICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKKyAgICAgICIvL3RoaXJkX3Bh
cnR5L2FuZ2xlOmFuZ2xlX3V0aWwiLAorICAgICAgIi8vdGhpcmRfcGFydHkvYW5nbGU6bGliQU5H
TEUiLAorICAgICAgIi8vdGhpcmRfcGFydHkvYW5nbGU6bGliRUdMIiwKKyAgICAgICIvL3RoaXJk
X3BhcnR5L2FuZ2xlOmxpYkdMRVN2MiIsCisgICAgXQorICB9Cit9CisKKyMjIy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIyMgZEVRUCB0ZXN0
cworIyMjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworZGVjbGFyZV9hcmdzKCkgeworICAjIERvbid0IGJ1aWxkIGRFUVAgYnkgZGVmYXVsdC4K
KyAgYnVpbGRfYW5nbGVfZGVxcF90ZXN0cyA9IGZhbHNlCit9CisKKyMgVE9ETyhqbWFkaWxsKTog
T3RoZXIgcGxhdGZvcm1zLgoraWYgKGJ1aWxkX2FuZ2xlX2RlcXBfdGVzdHMpIHsKKyAgZGVxcF9n
eXBpID0gZXhlY19zY3JpcHQoIi8vYnVpbGQvZ3lwaV90b19nbi5weSIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWJhc2VfcGF0aCgi
ZGVxcC5neXBpIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tcmVwbGFjZT08KGFu
Z2xlX3BhdGgpPS4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLXJlcGxhY2U9PChk
ZXFwX3BhdGgpPS4uL2RlcXAvc3JjIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgWyAiZGVxcC5neXBpIiBdKQorCisgIGNvbmZpZygiYW5nbGVfZGVxcF9zdXBwb3J0Iikgewor
ICAgIGluY2x1ZGVfZGlycyA9IHJlYmFzZV9wYXRoKGRlcXBfZ3lwaS5kZXFwX2luY2x1ZGVfZGly
cywgIi4iLCAiLi4vLi4iKQorICAgIGlmIChpc193aW4pIHsKKyAgICAgIGluY2x1ZGVfZGlycyAr
PSBbICIuLi9kZXFwL3NyYy9mcmFtZXdvcmsvcGxhdGZvcm0vd2luMzIiIF0KKyAgICAgIGNmbGFn
cyA9IGRlcXBfZ3lwaS5kZXFwX3dpbl9jZmxhZ3MKKyAgICB9CisgICAgZGVmaW5lcyA9IGRlcXBf
Z3lwaS5kZXFwX2RlZmluZXMKKyAgICBkZWZpbmVzICs9IFsgIl9NQkNTIiBdCisKKyAgICAjIEFz
ayB0aGUgc3lzdGVtIGhlYWRlcnMgdG8gZXhwb3NlIGFsbCB0aGUgcmVndWxhciBmdW5jdGlvbiBv
dGhlcndpc2UKKyAgICAjIGRFUVAgZG9lc24ndCBjb21waWxlIGFuZCBwcm9kdWNlcyB3YXJuaW5n
cyBhYm91dCBpbXBsaWNpdGx5IGRlZmluZWQKKyAgICAjIGZ1bmN0aW9ucy4KKyAgICBpZiAoaXNf
bGludXgpIHsKKyAgICAgICMgVGhpcyBoYXMgdG8gYmUgR05VX1NPVVJDRSBhcyBvbiBMaW51eCBk
RVFQIHVzZXMgc3lzY2FsbCgpCisgICAgICBkZWZpbmVzICs9IFsgIl9HTlVfU09VUkNFIiBdCisg
ICAgfQorICAgIGlmIChpc19hbmRyb2lkKSB7CisgICAgICAjIF9YT1BFTl9TT1VSQ0U9NjAwIGlz
IHdoYXQgaXMgdXNlZCBpbiBkZXFwL3NyYy9BbmRyb2lkLm1rCisgICAgICBkZWZpbmVzICs9IFsg
Il9YT1BFTl9TT1VSQ0U9NjAwIiBdCisgICAgfQorICB9CisKKyAgZGVxcF91bmRlZmluZV9jb25m
aWdzID0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiwKKyAg
ICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fcnR0aSIsCisgIF0KKworICBpZiAoaXNfd2lu
KSB7CisgICAgZGVxcF91bmRlZmluZV9jb25maWdzICs9IFsKKyAgICAgICIvL2J1aWxkL2NvbmZp
Zy93aW46bGVhbl9hbmRfbWVhbiIsCisgICAgICAiLy9idWlsZC9jb25maWcvd2luOm5vbWlubWF4
IiwKKyAgICAgICIvL2J1aWxkL2NvbmZpZy93aW46dW5pY29kZSIsCisgICAgXQorICB9CisKKyAg
aWYgKGlzX2xpbnV4IHx8IGlzX2FuZHJvaWQpIHsKKyAgICBkZXFwX3VuZGVmaW5lX2NvbmZpZ3Mg
Kz0gWyAiLy9idWlsZC9jb25maWcvZ2NjOm5vX2V4Y2VwdGlvbnMiIF0KKyAgfQorCisgIHN0YXRp
Y19saWJyYXJ5KCJhbmdsZV9kZXFwX2RlY3BwIikgeworICAgIGNvbmZpZ3MgLT0gZGVxcF91bmRl
ZmluZV9jb25maWdzCisgICAgcHVibGljX2NvbmZpZ3MgPSBbCisgICAgICAiOmFuZ2xlX2RlcXBf
c3VwcG9ydCIsCisgICAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29k
ZSIsCisgICAgICAiLy90aGlyZF9wYXJ0eS9hbmdsZTppbnRlcm5hbF9jb25maWciLAorICAgIF0K
KyAgICBzb3VyY2VzID0gcmViYXNlX3BhdGgoZGVxcF9neXBpLmRlcXBfbGlidGVzdGVyX2RlY3Bw
X3NvdXJjZXMsICIuIiwgIi4uLy4uIikKKyAgfQorCisgIGNvbmZpZygiYW5nbGVfZGVxcF9saWJ0
ZXN0ZXJfY29uZmlnIikgeworICAgIGRlZmluZXMgPSBbICJBTkdMRV9ERVFQX0xJQlRFU1RFUl9J
TVBMRU1FTlRBVElPTiIgXQorCisgICAgaWYgKGlzX2NsYW5nKSB7CisgICAgICAjIFRPRE8oam1h
ZGlsbCk6IFJlbW92ZSB0aGlzIG9uY2Ugd2UgZml4IGRFUVAuCisgICAgICBjZmxhZ3NfY2MgPSBb
ICItV25vLWRlbGV0ZS1ub24tdmlydHVhbC1kdG9yIiBdCisgICAgfQorICB9CisKKyAgc3RhdGlj
X2xpYnJhcnkoImFuZ2xlX2RlcXBfbGlidGVzdGVyIikgeworICAgIHB1YmxpY19kZXBzID0gWwor
ICAgICAgIjphbmdsZV9kZXFwX2RlY3BwIiwKKyAgICAgICIvL3RoaXJkX3BhcnR5L2FuZ2xlOmFu
Z2xlX3V0aWwiLAorICAgICAgIi8vdGhpcmRfcGFydHkvYW5nbGU6bGliRUdMIiwKKyAgICAgICIv
L3RoaXJkX3BhcnR5L2xpYnBuZzpsaWJwbmciLAorICAgIF0KKyAgICBjb25maWdzIC09IGRlcXBf
dW5kZWZpbmVfY29uZmlncworICAgIHB1YmxpY19jb25maWdzID0gWyAiOmFuZ2xlX2RlcXBfbGli
dGVzdGVyX2NvbmZpZyIgXQorICAgIHNvdXJjZXMgPSByZWJhc2VfcGF0aChkZXFwX2d5cGkuZGVx
cF9saWJ0ZXN0ZXJfc291cmNlcywgIi4iLCAiLi4vLi4iKQorICAgIGlmIChpc193aW4pIHsKKyAg
ICAgIHNvdXJjZXMgKz0gcmViYXNlX3BhdGgoZGVxcF9neXBpLmRlcXBfbGlidGVzdGVyX3NvdXJj
ZXNfd2luLCAiLiIsICIuLi8uLiIpCisgICAgfQorICAgIGlmIChpc19saW51eCB8fCBpc19hbmRy
b2lkKSB7CisgICAgICBzb3VyY2VzICs9CisgICAgICAgICAgcmViYXNlX3BhdGgoZGVxcF9neXBp
LmRlcXBfbGlidGVzdGVyX3NvdXJjZXNfdW5peCwgIi4iLCAiLi4vLi4iKQorICAgIH0KKyAgICBp
ZiAoaXNfYW5kcm9pZCkgeworICAgICAgbGlicyA9IFsgImxvZyIgXQorICAgIH0KKyAgfQorCisg
IGNvbmZpZygiYW5nbGVfZGVxcF9ndGVzdF9zdXBwb3J0X2NvbmZpZyIpIHsKKyAgICBpbmNsdWRl
X2RpcnMgPSBbICJ0aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBlY3RhdGlvbnMiIF0KKyAgfQorCisg
IHNvdXJjZV9zZXQoImFuZ2xlX2RlcXBfZ3Rlc3Rfc3VwcG9ydCIpIHsKKyAgICB0ZXN0b25seSA9
IHRydWUKKyAgICBwdWJsaWNfZGVwcyA9IFsKKyAgICAgICIvL2Jhc2UiLAorICAgICAgIi8vYmFz
ZS90ZXN0OnRlc3Rfc3VwcG9ydCIsCisgICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKKyAgICAgICIv
L3RoaXJkX3BhcnR5L2FuZ2xlOmFuZ2xlX2NvbW1vbiIsCisgICAgICAiLy90aGlyZF9wYXJ0eS9h
bmdsZTphbmdsZV91dGlsIiwKKyAgICBdCisgICAgcHVibGljX2NvbmZpZ3MgPSBbICI6YW5nbGVf
ZGVxcF9ndGVzdF9zdXBwb3J0X2NvbmZpZyIgXQorICAgIHNvdXJjZXMgPSBkZXFwX2d5cGkuZGVx
cF9ncHVfdGVzdF9leHBlY3RhdGlvbnNfc291cmNlcworICAgIHNvdXJjZXMgKz0gWyAiLy9ncHUv
YW5nbGVfZGVxcF90ZXN0c19tYWluLmNjIiBdCisKKyAgICAjIFRha2VuIGZyb20gZ3B1L0JVSUxE
LmduCisgICAgIyBUT0RPKGptYWRpbGwpOiB0aGlzIHNob3VsZCBiZSBpbiBhIHNoYXJlZCBsb2Nh
dGlvbgorICAgIGlmIChpc19saW51eCAmJiAhaXNfY2hyb21lY2FzdCkgeworICAgICAgbGlicyA9
IFsgInBjaSIgXQorICAgIH0KKyAgfQorCisgIGFwaV9uYW1lcyA9IFsKKyAgICAiZ2xlczIiLAor
ICAgICJnbGVzMyIsCisgICAgImdsZXMzMSIsCisgICAgImVnbCIsCisgIF0KKyAgdGFyZ2V0X2Rl
ZmluZXMgPSBbCisgICAgIkFOR0xFX0RFUVBfR0xFUzJfVEVTVFMiLAorICAgICJBTkdMRV9ERVFQ
X0dMRVMzX1RFU1RTIiwKKyAgICAiQU5HTEVfREVRUF9HTEVTMzFfVEVTVFMiLAorICAgICJBTkdM
RV9ERVFQX0VHTF9URVNUUyIsCisgIF0KKyAgdGFyZ2V0X3NvdXJjZXMgPSBbCisgICAgZGVxcF9n
eXBpLmRlcXBfZ2xlczJfc291cmNlcywKKyAgICBkZXFwX2d5cGkuZGVxcF9nbGVzM19zb3VyY2Vz
LAorICAgIGRlcXBfZ3lwaS5kZXFwX2dsZXMzMV9zb3VyY2VzLAorICAgIGRlcXBfZ3lwaS5kZXFw
X2VnbF9zb3VyY2VzLAorICBdCisKKyAgZm9yZWFjaChpbmRleCwKKyAgICAgICAgICBbCisgICAg
ICAgICAgICAwLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIDIsCisgICAgICAgICAgICAz
LAorICAgICAgICAgIF0pIHsKKyAgICBhcGlfbmFtZSA9IGFwaV9uYW1lc1tpbmRleF0KKyAgICBj
b25maWdfbmFtZSA9ICJhbmdsZV9kZXFwX2xpYiR7YXBpX25hbWV9X2NvbmZpZyIKKyAgICBjb25m
aWcoY29uZmlnX25hbWUpIHsKKyAgICAgIGRlZmluZXMgPSBbIHRhcmdldF9kZWZpbmVzW2luZGV4
XSBdCisgICAgfQorCisgICAgc2hhcmVkX2xpYnJhcnlfbmFtZSA9ICJhbmdsZV9kZXFwX2xpYiR7
YXBpX25hbWV9IgorICAgIHNoYXJlZF9saWJyYXJ5KHNoYXJlZF9saWJyYXJ5X25hbWUpIHsKKyAg
ICAgIGRlcHMgPSBbCisgICAgICAgICI6YW5nbGVfZGVxcF9saWJ0ZXN0ZXIiLAorICAgICAgICAi
Ly90aGlyZF9wYXJ0eS9hbmdsZTphbmdsZV91dGlsIiwKKyAgICAgIF0KKworICAgICAgY29uZmln
cyAtPSBkZXFwX3VuZGVmaW5lX2NvbmZpZ3MKKyAgICAgIHB1YmxpY19jb25maWdzID0gWyAiOiR7
Y29uZmlnX25hbWV9IiBdCisKKyAgICAgIHNvdXJjZXMgPSByZWJhc2VfcGF0aCh0YXJnZXRfc291
cmNlc1tpbmRleF0sICIuIiwgIi4uLy4uIikKKyAgICAgIHNvdXJjZXMgKz0gWworICAgICAgICAi
ZGVxcF9zdXBwb3J0L2FuZ2xlX2RlcXBfbGlidGVzdGVyX21haW4uY3BwIiwKKyAgICAgICAgImRl
cXBfc3VwcG9ydC90Y3VBTkdMRVBsYXRmb3JtLmNwcCIsCisgICAgICAgICJkZXFwX3N1cHBvcnQv
dGN1QU5HTEVQbGF0Zm9ybS5oIiwKKyAgICAgIF0KKyAgICB9CisKKyAgICB0ZXN0X25hbWUgPSAi
YW5nbGVfZGVxcF8ke2FwaV9uYW1lfV90ZXN0cyIKKyAgICB0ZXN0KHRlc3RfbmFtZSkgeworICAg
ICAgZGVwcyA9IFsKKyAgICAgICAgIjoke3NoYXJlZF9saWJyYXJ5X25hbWV9IiwKKyAgICAgICAg
IjphbmdsZV9kZXFwX2d0ZXN0X3N1cHBvcnQiLAorICAgICAgXQorCisgICAgICAjIE11c3QgYmUg
aW5jbHVkZWQgb3V0c2lkZSBvZiB0aGUgc291cmNlIHNldCBmb3IgdGhlIGRlZmluZQorICAgICAg
c291cmNlcyA9IFsKKyAgICAgICAgImRlcXBfc3VwcG9ydC9hbmdsZV9kZXFwX2d0ZXN0LmNwcCIs
CisgICAgICBdCisKKyAgICAgIGRhdGEgPSBbCisgICAgICAgICJkZXFwX3N1cHBvcnQvZGVxcF8k
e2FwaV9uYW1lfV90ZXN0X2V4cGVjdGF0aW9ucy50eHQiLAorICAgICAgICAiLi4vLi4vLi4vZGVx
cC9zcmMvYW5kcm9pZC9jdHMvbWFzdGVyLyR7YXBpX25hbWV9LW1hc3Rlci50eHQiLAorICAgICAg
ICAiLi4vLi4vLi4vZGVxcC9zcmMvZGF0YS8iLAorICAgICAgXQorCisgICAgICBpZiAoaXNfbGlu
dXggJiYgIWlzX2NvbXBvbmVudF9idWlsZCkgeworICAgICAgICAjIFNldCBycGF0aCB0byBmaW5k
ICouc28gZmlsZXMgZXZlbiBpbiBhIG5vbi1jb21wb25lbnQgYnVpbGQuCisgICAgICAgIGNvbmZp
Z3MgKz0gWyAiLy9idWlsZC9jb25maWcvZ2NjOnJwYXRoX2Zvcl9idWlsdF9zaGFyZWRfbGlicmFy
aWVzIiBdCisgICAgICB9CisKKyAgICAgIGlmIChpc19hbmRyb2lkKSB7CisgICAgICAgIHVzZV9u
YXRpdmVfYWN0aXZpdHkgPSB0cnVlCisgICAgICB9CisgICAgfQorICB9Cit9CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvV2ViR0wtQ1RTLWtub3duLWZhaWx1cmVzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvV2ViR0wt
Q1RTLWtub3duLWZhaWx1cmVzLnR4dAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvV2ViR0wtQ1RTLWtub3duLWZhaWx1cmVzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDkgQEAKK0tub3duIGZhaWx1cmVzIGluIHRoZSBXZWJHTCBDVFMgMS4w
LjQsIHVzaW5nIENhbmFyeSA0OC4wLjI1NDcuMCB3aXRoIEFOR0xFIGEzMzQ3NWIzNmY3YjAKK2h0
dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3dlYmdsL3Nkay90ZXN0cy93ZWJnbC1jb25m
b3JtYW5jZS10ZXN0cy5odG1sCisKK2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvZXh0LXNSR0IuaHRt
bDogNSB0ZXN0cyBmYWlsZWQKK2NvbmZvcm1hbmNlL2dsc2wvYnVncy9wb3ctb2Ytc21hbGwtY29u
c3RhbnQtaW4tdXNlci1kZWZpbmVkLWZ1bmN0aW9uLmh0bWw6IDEgdGVzdHMgZmFpbGVkCitjb25m
b3JtYW5jZS9nbHNsL2J1Z3Mvc2FtcGxlci1zdHJ1Y3QtZnVuY3Rpb24tYXJnLmh0bWw6IDEgdGVz
dHMgZmFpbGVkCitjb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL2N1YmUtaW5jb21wbGV0ZS1mYm8u
aHRtbDogMSB0ZXN0cyBmYWlsZWQKK2RlcXAvZGF0YS9nbGVzMi9zaGFkZXJzL2Z1bmN0aW9ucy5o
dG1sOiA4IHRlc3RzIGZhaWxlZAorZGVxcC9kYXRhL2dsZXMyL3NoYWRlcnMvc2NvcGluZy5odG1s
OiA0IHRlc3RzIGZhaWxlZApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2FuZ2xlX2VuZDJlbmRfdGVzdHMuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvYW5nbGVfZW5kMmVuZF90ZXN0cy5neXBpCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV9lbmQyZW5kX3Rlc3Rz
Lmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNDkgQEAKKyMgQ29weXJpZ2h0IChjKSAy
MDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIyBUaGlzIC5neXBp
IGRlc2NyaWJlcyBhbGwgb2YgdGhlIHNvdXJjZXMgYW5kIGRlcGVuZGVuY2llcyB0byBidWlsZCBh
CisjIHVuaWZpZWQgImFuZ2xlX2VuZDJlbmRfdGVzdHMiIHRhcmdldCwgd2hpY2ggY29udGFpbnMg
YWxsIG9mIHRoZQorIyB0ZXN0cyB0aGF0IGV4ZXJjaXNlIHRoZSBBTkdMRSBpbXBsZW1lbnRhdGlv
bi4gSXQgcmVxdWlyZXMgYSBwYXJlbnQKKyMgdGFyZ2V0IHRvIGluY2x1ZGUgdGhpcyBneXBpIGlu
IGFuIGV4ZWN1dGFibGUgdGFyZ2V0IGNvbnRhaW5pbmcgYQorIyBndGVzdCBoYXJuZXNzIGluIGEg
bWFpbi5jcHAuCisKK3sKKyAgICAjIEV2ZXJ5dGhpbmcgYmVsb3cgdGhpcyBpcyBkdXBsaWNhdGVk
IGluIHRoZSBHTiBidWlsZC4KKyAgICAjIElmIHlvdSBjaGFuZ2UgYW55dGhpbmcgYWxzbyBjaGFu
Z2UgYW5nbGUvc3JjL3Rlc3RzL0JVSUxELmduCisgICAgJ3ZhcmlhYmxlcyc6CisgICAgeworICAg
ICAgICAnYW5nbGVfZW5kMmVuZF90ZXN0c19zb3VyY2VzJzoKKyAgICAgICAgWworICAgICAgICAg
ICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0JpbmRHZW5lcmF0ZXNSZXNvdXJj
ZVRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0
cy9CaW5kVW5pZm9ybUxvY2F0aW9uVGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0
aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0JsZW5kTWluTWF4VGVzdC5jcHAnLAorICAgICAgICAgICAg
JzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0JsaXRGcmFtZWJ1ZmZlckFOR0xFVGVz
dC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0J1
ZmZlckRhdGFUZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMv
Z2xfdGVzdHMvQnVpbHRpblZhcmlhYmxlVGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVf
cGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NsZWFyVGVzdC5jcHAnLAorICAgICAgICAgICAgJzwo
YW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NvbG9yTWFza1Rlc3QuY3BwJywKKyAgICAg
ICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9Db21wdXRlU2hhZGVyVGVz
dC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0Nv
cHlDb21wcmVzc2VkVGV4dHVyZVRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgp
L3NyYy90ZXN0cy9nbF90ZXN0cy9Db3B5VGV4SW1hZ2VUZXN0LmNwcCcsCisgICAgICAgICAgICAn
PChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvQ29weVRleHR1cmVUZXN0LmNwcCcsCisg
ICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvQ3ViZU1hcFRleHR1
cmVUZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVz
dHMvRGVidWdNYXJrZXJUZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMv
dGVzdHMvZ2xfdGVzdHMvRGVidWdUZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRo
KS9zcmMvdGVzdHMvZ2xfdGVzdHMvRGVwdGhTdGVuY2lsRm9ybWF0c1Rlc3QuY3BwJywKKyAgICAg
ICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9EaXNjYXJkRnJhbWVidWZm
ZXJFWFRUZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xf
dGVzdHMvRHJhd0J1ZmZlcnNUZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9z
cmMvdGVzdHMvZ2xfdGVzdHMvRHJhd0VsZW1lbnRzVGVzdC5jcHAnLAorICAgICAgICAgICAgJzwo
YW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0RYVDFDb21wcmVzc2VkVGV4dHVyZVRlc3Qu
Y3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9FVENU
ZXh0dXJlVGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2ds
X3Rlc3RzL0ZlbmNlU3luY1Rlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9z
cmMvdGVzdHMvZ2xfdGVzdHMvRnJhbWVidWZmZXJNaXhlZFNhbXBsZXNUZXN0LmNwcCcsCisgICAg
ICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvRnJhbWVidWZmZXJSZW5k
ZXJNaXBtYXBUZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMv
Z2xfdGVzdHMvRnJhbWVidWZmZXJUZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRo
KS9zcmMvdGVzdHMvZ2xfdGVzdHMvR0xTTFRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xl
X3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9JbWFnZVRlc3QuY3BwJywKKyAgICAgICAgICAgICc8
KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9JbmNvbXBsZXRlVGV4dHVyZVRlc3QuY3Bw
JywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9JbmRleEJ1
ZmZlck9mZnNldFRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0
cy9nbF90ZXN0cy9JbmRleGVkUG9pbnRzVGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVf
cGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0luc3RhbmNpbmdUZXN0LmNwcCcsCisgICAgICAgICAg
ICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvTGluZUxvb3BUZXN0LmNwcCcsCisg
ICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvTWF4VGV4dHVyZVNp
emVUZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVz
dHMvTWlwbWFwVGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3Rz
L2dsX3Rlc3RzL011bHRpc2FtcGxlQ29tcGF0aWJpbGl0eVRlc3QuY3BwJywKKyAgICAgICAgICAg
ICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9tZWRpYS9waXhlbC5pbmwnLAorICAg
ICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL1BhY2tVbnBhY2tUZXN0
LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvUGF0
aFJlbmRlcmluZ1Rlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0
cy9nbF90ZXN0cy9QYnVmZmVyVGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkv
c3JjL3Rlc3RzL2dsX3Rlc3RzL1BCT0V4dGVuc2lvblRlc3QuY3BwJywKKyAgICAgICAgICAgICc8
KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9Qb2ludFNwcml0ZXNUZXN0LmNwcCcsCisg
ICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvUHJvdm9raW5nVmVy
dGV4VGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rl
c3RzL09iamVjdEFsbG9jYXRpb25UZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRo
KS9zcmMvdGVzdHMvZ2xfdGVzdHMvT2NjbHVzaW9uUXVlcmllc1Rlc3QuY3BwJywKKyAgICAgICAg
ICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9Qcm9ncmFtQmluYXJ5VGVzdC5j
cHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL1JlYWRQ
aXhlbHNUZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xf
dGVzdHMvUmVuZGVyZXJUZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMv
dGVzdHMvZ2xfdGVzdHMvUm9idXN0Q2xpZW50TWVtb3J5VGVzdC5jcHAnLAorICAgICAgICAgICAg
JzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL1NpbXBsZU9wZXJhdGlvblRlc3QuY3Bw
JywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9TaXh0ZWVu
QnBwVGV4dHVyZVRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0
cy9nbF90ZXN0cy9TUkdCVGV4dHVyZVRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3Bh
dGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9TdGF0ZUNoYW5nZVRlc3QuY3BwJywKKyAgICAgICAgICAg
ICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9Td2l6emxlVGVzdC5jcHAnLAorICAg
ICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL1N5bmNRdWVyaWVzVGVz
dC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL1Rl
eHR1cmVUZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xf
dGVzdHMvVGltZXJRdWVyaWVzVGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkv
c3JjL3Rlc3RzL2dsX3Rlc3RzL1RyYW5zZm9ybUZlZWRiYWNrVGVzdC5jcHAnLAorICAgICAgICAg
ICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL1VuaWZvcm1CdWZmZXJUZXN0LmNw
cCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvVW5pZm9y
bVRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0
cy9VbnBhY2tBbGlnbm1lbnRUZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9z
cmMvdGVzdHMvZ2xfdGVzdHMvVW5wYWNrUm93TGVuZ3RoLmNwcCcsCisgICAgICAgICAgICAnPChh
bmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvVmVydGV4QXR0cmlidXRlVGVzdC5jcHAnLAor
ICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL1ZpZXdwb3J0VGVz
dC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL1dl
YkdMQ29tcGF0aWJpbGl0eVRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3Ny
Yy90ZXN0cy9lZ2xfdGVzdHMvRUdMQ29udGV4dENvbXBhdGliaWxpdHlUZXN0LmNwcCcsCisgICAg
ICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTENvbnRleHRTaGFy
aW5nVGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2VnbF90
ZXN0cy9FR0xRdWVyeUNvbnRleHRUZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRo
KS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFJvYnVzdG5lc3NUZXN0LmNwcCcsCisgICAgICAgICAg
ICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFNhbml0eUNoZWNrVGVzdC5j
cHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xT
dXJmYWNlVGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3Rl
c3RfdXRpbHMvQU5HTEVUZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMv
dGVzdHMvdGVzdF91dGlscy9BTkdMRVRlc3QuaCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRo
KS9zcmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2NvbmZpZ3MuY3BwJywKKyAgICAgICAg
ICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmln
cy5oJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2Fu
Z2xlX3Rlc3RfaW5zdGFudGlhdGUuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3Ny
Yy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfaW5zdGFudGlhdGUuaCcsCisgICAgICAgICAg
ICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvdGVzdF91dGlscy9nbF9yYWlpLmgnLAorICAgICAg
ICBdLAorICAgICAgICAnYW5nbGVfZW5kMmVuZF90ZXN0c193aW5fc291cmNlcyc6CisgICAgICAg
IFsKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9EM0RJbWFn
ZUZvcm1hdENvbnZlcnNpb25UZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9z
cmMvdGVzdHMvZ2xfdGVzdHMvRDNEMTFFbXVsYXRlZEluZGV4ZWRCdWZmZXJUZXN0LmNwcCcsCisg
ICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvRDNEMTFGb3JtYXRU
YWJsZXNUZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xf
dGVzdHMvRDNEMTFJbnB1dExheW91dENhY2hlVGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5n
bGVfcGF0aCkvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xEZXZpY2VUZXN0LmNwcCcsCisgICAgICAg
ICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFByZXNlbnRQYXRoRDNE
MTFUZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZWdsX3Rl
c3RzL0VHTFN0cmVhbVRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90
ZXN0cy9lZ2xfdGVzdHMvRUdMU3luY0NvbnRyb2xUZXN0LmNwcCcsCisgICAgICAgICAgICAjIFRP
RE8oY3dhbGxleikgZm9yIExpbnV4LCByZXF1aXJlcyBhIHBvcnRhYmxlIGltcGxlbWVudGF0aW9u
IG9mIHRocmVhZHMKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9lZ2xfdGVz
dHMvRUdMVGhyZWFkVGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rl
c3RzL2VnbF90ZXN0cy9tZWRpYS95dXZ0ZXN0LmlubCcsCisgICAgICAgIF0sCisgICAgICAgICdh
bmdsZV9lbmQyZW5kX3Rlc3RzX3gxMV9zb3VyY2VzJzoKKyAgICAgICAgWworICAgICAgICAgICAg
JzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xYMTFWaXN1YWxUZXN0LmNwcCcs
CisgICAgICAgIF0sCisgICAgfSwKKyAgICAnZGVwZW5kZW5jaWVzJzoKKyAgICBbCisgICAgICAg
ICc8KGFuZ2xlX3BhdGgpL3NyYy9hbmdsZS5neXA6bGliQU5HTEUnLAorICAgICAgICAnPChhbmds
ZV9wYXRoKS9zcmMvYW5nbGUuZ3lwOmxpYkVHTCcsCisgICAgICAgICc8KGFuZ2xlX3BhdGgpL3Ny
Yy9hbmdsZS5neXA6bGliR0xFU3YyJywKKyAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3Rz
L3Rlc3RzLmd5cDphbmdsZV90ZXN0X3N1cHBvcnQnLAorICAgICAgICAnPChhbmdsZV9wYXRoKS91
dGlsL3V0aWwuZ3lwOmFuZ2xlX3V0aWwnLAorICAgIF0sCisgICAgJ2luY2x1ZGVfZGlycyc6Cisg
ICAgWworICAgICAgICAnPChhbmdsZV9wYXRoKS9pbmNsdWRlJywKKyAgICAgICAgJzwoYW5nbGVf
cGF0aCkvc3JjL3Rlc3RzJworICAgIF0sCisgICAgJ3NvdXJjZXMnOgorICAgIFsKKyAgICAgICAg
JzxAKGFuZ2xlX2VuZDJlbmRfdGVzdHNfc291cmNlcyknLAorICAgIF0sCisgICAgJ2NvbmRpdGlv
bnMnOgorICAgIFsKKyAgICAgICAgWydPUz09IndpbiInLAorICAgICAgICB7CisgICAgICAgICAg
ICAnc291cmNlcyc6CisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgJzxAKGFuZ2xlX2Vu
ZDJlbmRfdGVzdHNfd2luX3NvdXJjZXMpJywKKyAgICAgICAgICAgIF0sCisgICAgICAgIH1dLAor
ICAgICAgICBbJ3VzZV94MTE9PTEnLAorICAgICAgICB7CisgICAgICAgICAgICAnc291cmNlcyc6
CisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgJzxAKGFuZ2xlX2VuZDJlbmRfdGVzdHNf
eDExX3NvdXJjZXMpJywKKyAgICAgICAgICAgIF0sCisgICAgICAgIH1dLAorICAgIF0KK30KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV9lbmQyZW5kX3Rlc3Rz
X21haW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9hbmdsZV9lbmQyZW5kX3Rlc3RzX21haW4uY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV9lbmQyZW5kX3Rlc3RzX21haW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTMg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorCitpbnQg
bWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAgdGVzdGluZzo6SW5pdEdvb2dsZVRl
c3QoJmFyZ2MsIGFyZ3YpOworICAgIHRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChu
ZXcgQU5HTEVUZXN0RW52aXJvbm1lbnQoKSk7CisgICAgaW50IHJ0ID0gUlVOX0FMTF9URVNUUygp
OworICAgIHJldHVybiBydDsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9hbmdsZV9wZXJmdGVzdHMuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvYW5nbGVfcGVyZnRlc3RzLmd5cGkJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2FuZ2xlX3BlcmZ0ZXN0cy5neXBpCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzQgQEAKKyMgQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
IyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIworIyBhbmdsZV9wZXJmdGVzdHMuZ3lwaToK
KyMKKyMgVGhpcyAuZ3lwaSBkZXNjcmliZXMgYWxsIG9mIHRoZSBzb3VyY2VzIGFuZCBkZXBlbmRl
bmNpZXMgdG8gYnVpbGQgYQorIyB1bmlmaWVkICJhbmdsZV9wZXJmdGVzdHMiIHRhcmdldCwgd2hp
Y2ggY29udGFpbnMgYWxsIG9mIEFOR0xFJ3MKKyMgcGVyZm9ybWFuY2UgdGVzdHMgKGJ1ZmZlciB1
cGRhdGVzLCB0ZXh0dXJlIHVwZGF0ZXMsIGRyYXcgY2FsbHMsIGV0YykKKyMgSXQgcmVxdWlyZXMg
YSBwYXJlbnQgdGFyZ2V0IHRvIGluY2x1ZGUgdGhpcyBneXBpIGluIGFuIGV4ZWN1dGFibGUKKyMg
dGFyZ2V0IGNvbnRhaW5pbmcgYSBndGVzdCBoYXJuZXNzIGluIGEgbWFpbi5jcHAuCisKK3sKKyAg
ICAndmFyaWFibGVzJzoKKyAgICB7CisgICAgICAgICdhbmdsZV9wZXJmX3Rlc3RzX3NvdXJjZXMn
OgorICAgICAgICBbCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcGVyZl90
ZXN0cy9BTkdMRVBlcmZUZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMv
dGVzdHMvcGVyZl90ZXN0cy9BTkdMRVBlcmZUZXN0LmgnLAorICAgICAgICAgICAgJzwoYW5nbGVf
cGF0aCkvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvQnVmZmVyU3ViRGF0YS5jcHAnLAorICAgICAgICAg
ICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvRHJhd0NhbGxQZXJmLmNwcCcs
CisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9EeW5hbWlj
UHJvbW90aW9uUGVyZlRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90
ZXN0cy9wZXJmX3Rlc3RzL0VHTEluaXRpYWxpemVQZXJmLmNwcCcsCisgICAgICAgICAgICAnPChh
bmdsZV9wYXRoKS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9JbmRleENvbnZlcnNpb25QZXJmLmNwcCcs
CisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9JbnN0YW5j
aW5nUGVyZi5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3BlcmZf
dGVzdHMvSW50ZXJsZWF2ZWRBdHRyaWJ1dGVEYXRhLmNwcCcsCisgICAgICAgICAgICAnPChhbmds
ZV9wYXRoKS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9Qb2ludFNwcml0ZXMuY3BwJywKKyAgICAgICAg
ICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL1RleFN1YkltYWdlLmNwcCcs
CisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9UZXh0dXJl
U2FtcGxpbmcuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9wZXJm
X3Rlc3RzL1RleHR1cmVzUGVyZi5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3Jj
L3Rlc3RzL3BlcmZfdGVzdHMvVW5pZm9ybXNQZXJmLmNwcCcsCisgICAgICAgICAgICAnPChhbmds
ZV9wYXRoKS9zcmMvdGVzdHMvcGVyZl90ZXN0cy90aGlyZF9wYXJ0eS9wZXJmL3BlcmZfdGVzdC5j
YycsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcGVyZl90ZXN0cy90aGly
ZF9wYXJ0eS9wZXJmL3BlcmZfdGVzdC5oJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3Ny
Yy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmlncy5jcHAnLAorICAgICAgICAgICAg
JzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvYW5nbGVfdGVzdF9jb25maWdzLmgn
LAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvYW5nbGVf
dGVzdF9pbnN0YW50aWF0ZS5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rl
c3RzL3Rlc3RfdXRpbHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0ZS5oJywKKyAgICAgICAgXSwKKyAg
ICAgICAgJ2FuZ2xlX3BlcmZfdGVzdHNfd2luX3NvdXJjZXMnOgorICAgICAgICBbCisgICAgICAg
ICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9JbmRleERhdGFNYW5hZ2Vy
VGVzdC5jcHAnLAorICAgICAgICBdCisgICAgfSwKKyAgICAjIEV2ZXJ5dGhpbmcgYmVsb3cgKGV4
Y2VwdCBXaW5SVC1yZWxhdGVkIGNvbmZpZykgbXVzdCBiZSBhbHNvIG1haW50YWluZWQgZm9yIEdO
LgorICAgICMgSWYgeW91IGNoYW5nZSBhbnl0aGluZyBiZWxvdywgYWxzbyB1cGRhdGUgYW5nbGUv
c3JjL3Rlc3RzL0JVSUxELmduLgorICAgICdkZXBlbmRlbmNpZXMnOgorICAgIFsKKyAgICAgICAg
JzwoYW5nbGVfcGF0aCkvc3JjL2FuZ2xlLmd5cDphbmdsZV9jb21tb24nLAorICAgICAgICAnPChh
bmdsZV9wYXRoKS9zcmMvYW5nbGUuZ3lwOmxpYkFOR0xFJywgIyBmb3IgdW5pdCB0ZXN0aW5nCisg
ICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9hbmdsZS5neXA6bGliR0xFU3YyJywKKyAgICAgICAg
JzwoYW5nbGVfcGF0aCkvc3JjL2FuZ2xlLmd5cDpsaWJFR0wnLAorICAgICAgICAnPChhbmdsZV9w
YXRoKS9zcmMvdGVzdHMvdGVzdHMuZ3lwOmFuZ2xlX3Rlc3Rfc3VwcG9ydCcsCisgICAgICAgICc8
KGFuZ2xlX3BhdGgpL3V0aWwvdXRpbC5neXA6YW5nbGVfdXRpbCcsCisgICAgXSwKKyAgICAnaW5j
bHVkZV9kaXJzJzoKKyAgICBbCisgICAgICAgICc8KGFuZ2xlX3BhdGgpL2luY2x1ZGUnLAorICAg
ICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMnCisgICAgXSwKKyAgICAnc291cmNlcyc6Cisg
ICAgWworICAgICAgICAnPEAoYW5nbGVfcGVyZl90ZXN0c19zb3VyY2VzKScsCisgICAgXSwKKyAg
ICAnY29uZGl0aW9ucyc6CisgICAgWworICAgICAgICBbJ09TPT0id2luIicsCisgICAgICAgIHsK
KyAgICAgICAgICAgICdzb3VyY2VzJzoKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAn
PEAoYW5nbGVfcGVyZl90ZXN0c193aW5fc291cmNlcyknLAorICAgICAgICAgICAgXSwKKyAgICAg
ICAgfV0sCisgICAgXQorfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2FuZ2xlX3BlcmZ0ZXN0c19tYWluLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvYW5nbGVfcGVyZnRlc3RzX21haW4uY3BwCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV9wZXJmdGVzdHNfbWFp
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOCBAQAorLy8KKy8vIENvcHlyaWdodCAo
YykgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBh
bmdsZV9wZXJmdGVzdHNfbWFpbi5jcHAKKy8vICAgRW50cnkgcG9pbnQgZm9yIHRoZSBndGVzdC1i
YXNlZCBwZXJmb3JtYW5jZSB0ZXN0cy4KKy8vCisKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgor
CitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisgICAgdGVzdGluZzo6SW5pdEdv
b2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICAgIHRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9u
bWVudChuZXcgdGVzdGluZzo6RW52aXJvbm1lbnQoKSk7CisgICAgaW50IHJ0ID0gUlVOX0FMTF9U
RVNUUygpOworICAgIHJldHVybiBydDsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9hbmdsZV91bml0dGVzdHMuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvYW5nbGVfdW5pdHRlc3RzLmd5cGkJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2FuZ2xlX3VuaXR0ZXN0cy5n
eXBpCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTUyIEBACisjIENvcHlyaWdodCAoYykgMjAx
NSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKyMgVGhpcyAuZ3lwaSBk
ZXNjcmliZXMgYWxsIG9mIHRoZSBzb3VyY2VzIGFuZCBkZXBlbmRlbmNpZXMgdG8gYnVpbGQgYQor
IyB1bmlmaWVkICJhbmdsZV91bml0dGVzdHMiIHRhcmdldCwgd2hpY2ggY29udGFpbnMgYWxsIG9m
IEFOR0xFJ3MKKyMgdGVzdHMgdGhhdCBkb24ndCByZXF1aXJlIGEgZnVsbHkgZnVuY3Rpb25hbCBB
TkdMRSBpbiBvcmRlciB0byBydW4KKyMgKGNvbXBpbGVyIHRlc3RzLCBwcmVwcm9jZXNzb3IgdGVz
dHMsIGV0Yy4pLiBJdCByZXF1aXJlcyBhIHBhcmVudAorIyB0YXJnZXQgdG8gaW5jbHVkZSB0aGlz
IGd5cGkgaW4gYW4gZXhlY3V0YWJsZSB0YXJnZXQgY29udGFpbmluZyBhCisjIGd0ZXN0IGhhcm5l
c3MgaW4gYSBtYWluLmNwcC4KKworeworICAgICd2YXJpYWJsZXMnOgorICAgIHsKKyAgICAgICAg
J2FuZ2xlX3VuaXR0ZXN0c19zb3VyY2VzJzoKKyAgICAgICAgWworICAgICAgICAgICAgJzwoYW5n
bGVfcGF0aCkvc3JjL2NvbW1vbi9CaXRTZXRJdGVyYXRvcl91bml0dGVzdC5jcHAnLAorICAgICAg
ICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2NvbW1vbi9PcHRpb25hbF91bml0dGVzdC5jcHAnLAor
ICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2NvbW1vbi9tYXRodXRpbF91bml0dGVzdC5j
cHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2NvbW1vbi9tYXRyaXhfdXRpbHNf
dW5pdHRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9jb21tb24vc3Ry
aW5nX3V0aWxzX3VuaXR0ZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMv
Y29tbW9uL3V0aWxpdGllc191bml0dGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0
aCkvc3JjL2xpYkFOR0xFL0JpbmFyeVN0cmVhbV91bml0dGVzdC5jcHAnLAorICAgICAgICAgICAg
JzwoYW5nbGVfcGF0aCkvc3JjL2xpYkFOR0xFL0NvbmZpZ191bml0dGVzdC5jcHAnLAorICAgICAg
ICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2xpYkFOR0xFL0ZlbmNlX3VuaXR0ZXN0LmNwcCcsCisg
ICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvbGliQU5HTEUvSGFuZGxlQWxsb2NhdG9yX3Vu
aXR0ZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvbGliQU5HTEUvSGFu
ZGxlUmFuZ2VBbGxvY2F0b3JfdW5pdHRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3Bh
dGgpL3NyYy9saWJBTkdMRS9JbWFnZV91bml0dGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5n
bGVfcGF0aCkvc3JjL2xpYkFOR0xFL0ltYWdlSW5kZXhJdGVyYXRvcl91bml0dGVzdC5jcHAnLAor
ICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2xpYkFOR0xFL1Byb2dyYW1fdW5pdHRlc3Qu
Y3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9saWJBTkdMRS9SZXNvdXJjZU1h
bmFnZXJfdW5pdHRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9saWJB
TkdMRS9TdXJmYWNlX3VuaXR0ZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9z
cmMvbGliQU5HTEUvVHJhbnNmb3JtRmVlZGJhY2tfdW5pdHRlc3QuY3BwJywKKyAgICAgICAgICAg
ICc8KGFuZ2xlX3BhdGgpL3NyYy9saWJBTkdMRS9yZW5kZXJlci9CdWZmZXJJbXBsX21vY2suaCcs
CisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRnJhbWVi
dWZmZXJJbXBsX21vY2suaCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvUHJvZ3JhbUltcGxfbW9jay5oJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3Bh
dGgpL3NyYy9saWJBTkdMRS9yZW5kZXJlci9SZW5kZXJidWZmZXJJbXBsX21vY2suaCcsCisgICAg
ICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvSW1hZ2VJbXBsX21v
Y2suaCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
VGV4dHVyZUltcGxfbW9jay5oJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9UcmFuc2Zvcm1GZWVkYmFja0ltcGxfbW9jay5oJywKKyAgICAgICAgICAg
ICc8KGFuZ2xlX3BhdGgpL3NyYy9saWJBTkdMRS9zaWduYWxfdXRpbHNfdW5pdHRlc3QuY3BwJywK
KyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVNfdW5p
dHRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9hbmdsZV91
bml0dGVzdHNfdXRpbHMuaCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMv
Y29tcGlsZXJfdGVzdHMvQVBJX3Rlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgp
L3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9Db2xsZWN0VmFyaWFibGVzX3Rlc3QuY3BwJywKKyAg
ICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9Db25zdGFu
dEZvbGRpbmdfdGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3Rz
L2NvbXBpbGVyX3Rlc3RzL0RlYnVnU2hhZGVyUHJlY2lzaW9uX3Rlc3QuY3BwJywKKyAgICAgICAg
ICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9FbXVsYXRlR0xGcmFn
Q29sb3JCcm9hZGNhc3RfdGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3Jj
L3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0V4cHJlc3Npb25MaW1pdF90ZXN0LmNwcCcsCisgICAgICAg
ICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvRVhUX2JsZW5kX2Z1
bmNfZXh0ZW5kZWRfdGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rl
c3RzL2NvbXBpbGVyX3Rlc3RzL0ZyYWdEZXB0aF90ZXN0LmNwcCcsCisgICAgICAgICAgICAnPChh
bmdsZV9wYXRoKS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvR0xTTENvbXBhdGliaWxpdHlPdXRw
dXRfdGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2NvbXBp
bGVyX3Rlc3RzL0ludGVybU5vZGVfdGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0
aCkvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL01hbGZvcm1lZFNoYWRlcl90ZXN0LmNwcCcsCisg
ICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvTlZfZHJh
d19idWZmZXJzX3Rlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0
cy9jb21waWxlcl90ZXN0cy9QYWNrX1VucGFja190ZXN0LmNwcCcsCisgICAgICAgICAgICAnPChh
bmdsZV9wYXRoKS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvUHJ1bmVFbXB0eURlY2xhcmF0aW9u
c190ZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvY29tcGls
ZXJfdGVzdHMvUHJ1bmVVbnVzZWRGdW5jdGlvbnNfdGVzdC5jcHAnLAorICAgICAgICAgICAgJzwo
YW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1F1YWxpZmljYXRpb25PcmRlckVT
U0wzMV90ZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvY29t
cGlsZXJfdGVzdHMvUXVhbGlmaWNhdGlvbk9yZGVyX3Rlc3QuY3BwJywKKyAgICAgICAgICAgICc8
KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9SZWNvcmRDb25zdGFudFByZWNp
c2lvbl90ZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvY29t
cGlsZXJfdGVzdHMvUmVtb3ZlUG93X3Rlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3Bh
dGgpL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9TaGFkZXJFeHRlbnNpb25fdGVzdC5jcHAnLAor
ICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1NoYWRl
clZhcmlhYmxlX3Rlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0
cy9jb21waWxlcl90ZXN0cy9TaENvbXBpbGVfdGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5n
bGVfcGF0aCkvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1R5cGVUcmFja2luZ190ZXN0LmNwcCcs
CisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvVmFy
aWFibGVQYWNrZXJfdGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rl
c3RzL2NvbXBpbGVyX3Rlc3RzL1dvcmtHcm91cFNpemVfdGVzdC5jcHAnLAorICAgICAgICAgICAg
JzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9jaGFyX3Rlc3QuY3Bw
JywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVz
dHMvY29tbWVudF90ZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVz
dHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2RlZmluZV90ZXN0LmNwcCcsCisgICAgICAgICAgICAnPChh
bmdsZV9wYXRoKS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2Vycm9yX3Rlc3QuY3BwJywK
KyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMv
ZXh0ZW5zaW9uX3Rlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0
cy9wcmVwcm9jZXNzb3JfdGVzdHMvaWRlbnRpZmllcl90ZXN0LmNwcCcsCisgICAgICAgICAgICAn
PChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2lmX3Rlc3QuY3BwJywK
KyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMv
aW5wdXRfdGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3By
ZXByb2Nlc3Nvcl90ZXN0cy9sb2NhdGlvbl90ZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmds
ZV9wYXRoKS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL01vY2tEaWFnbm9zdGljcy5oJywK
KyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMv
TW9ja0RpcmVjdGl2ZUhhbmRsZXIuaCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMv
dGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL251bWJlcl90ZXN0LmNwcCcsCisgICAgICAgICAgICAn
PChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL29wZXJhdG9yX3Rlc3Qu
Y3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3Jf
dGVzdHMvcHJhZ21hX3Rlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90
ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvUHJlcHJvY2Vzc29yVGVzdC5jcHAnLAorICAgICAgICAg
ICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9QcmVwcm9jZXNz
b3JUZXN0LmgnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3ByZXByb2Nl
c3Nvcl90ZXN0cy9zcGFjZV90ZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9z
cmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL3Rva2VuX3Rlc3QuY3BwJywKKyAgICAgICAgICAg
ICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvdmVyc2lvbl90ZXN0
LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvdGVzdF91dGlscy9j
b21waWxlcl90ZXN0LmNwcCcsCisgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMv
dGVzdF91dGlscy9jb21waWxlcl90ZXN0LmgnLAorICAgICAgICBdLAorICAgICAgICAjIFRPRE8o
am1hZGlsbCk6IHNob3VsZCBwcm9iYWJseSBjYWxsIHRoaXMgd2luZG93cyBzb3VyY2VzCisgICAg
ICAgICdhbmdsZV91bml0dGVzdHNfaGxzbF9zb3VyY2VzJzoKKyAgICAgICAgWworICAgICAgICAg
ICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1Vucm9sbEZsYXR0ZW5f
dGVzdC5jcHAnLAorICAgICAgICBdLAorICAgIH0sCisgICAgIyBFdmVyeXRoaW5nIGJlbG93IHRo
aXMgYnV0IHRoZSBXaW5SVCBjb25maWd1cmF0aW9uIGlzIGR1cGxpY2F0ZWQgaW4gdGhlIEdOIGJ1
aWxkLgorICAgICMgSWYgeW91IGNoYW5nZSBhbnl0aGluZyBhbHNvIGNoYW5nZSBhbmdsZS9zcmMv
dGVzdHMvQlVJTEQuZ24KKyAgICAnZGVwZW5kZW5jaWVzJzoKKyAgICBbCisgICAgICAgICc8KGFu
Z2xlX3BhdGgpL3NyYy9hbmdsZS5neXA6bGliQU5HTEUnLAorICAgICAgICAnPChhbmdsZV9wYXRo
KS9zcmMvYW5nbGUuZ3lwOnByZXByb2Nlc3NvcicsCisgICAgICAgICc8KGFuZ2xlX3BhdGgpL3Ny
Yy9hbmdsZS5neXA6dHJhbnNsYXRvcl9zdGF0aWMnLAorICAgICAgICAnPChhbmdsZV9wYXRoKS9z
cmMvdGVzdHMvdGVzdHMuZ3lwOmFuZ2xlX3Rlc3Rfc3VwcG9ydCcsCisgICAgXSwKKyAgICAnaW5j
bHVkZV9kaXJzJzoKKyAgICBbCisgICAgICAgICc8KGFuZ2xlX3BhdGgpL2luY2x1ZGUnLAorICAg
ICAgICAnPChhbmdsZV9wYXRoKS9zcmMnLAorICAgIF0sCisgICAgJ3NvdXJjZXMnOgorICAgIFsK
KyAgICAgICAgJzxAKGFuZ2xlX3VuaXR0ZXN0c19zb3VyY2VzKScsCisgICAgXSwKKyAgICAnY29u
ZGl0aW9ucyc6CisgICAgWworICAgICAgICBbJ2FuZ2xlX2J1aWxkX3dpbnJ0PT0xJywKKyAgICAg
ICAgeworICAgICAgICAgICAgJ3NvdXJjZXMnOgorICAgICAgICAgICAgWworICAgICAgICAgICAg
ICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQv
Q29yZVdpbmRvd05hdGl2ZVdpbmRvd191bml0dGVzdC5jcHAnLAorICAgICAgICAgICAgICAgICc8
KGFuZ2xlX3BhdGgpL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQvU3dhcENo
YWluUGFuZWxOYXRpdmVXaW5kb3dfdW5pdHRlc3QuY3BwJywKKyAgICAgICAgICAgIF0sCisgICAg
ICAgICAgICAnZGVmaW5lcyc6CisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgJ0FOR0xF
X0VOQUJMRV9EM0QxMScsCisgICAgICAgICAgICBdLAorICAgICAgICAgICAgJ21zdnNfc2V0dGlu
Z3MnOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICdWQ0xpbmtlclRvb2wnOgorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgJ0FkZGl0aW9uYWxEZXBlbmRlbmNp
ZXMnOgorICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAncnVu
dGltZW9iamVjdC5saWInLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICB9LAorICAgICAgICB9XSwKKyAgICAgICAgWydPUz09IndpbiInLAor
ICAgICAgICB7CisgICAgICAgICAgICAjIFRPRE8oY3dhbGxleik6IG1ha2UgdGhpcyBhbmdsZV9l
bmFibGVfaGxzbCBpbnN0ZWFkIChyZXF1aXJlcyBneXAgZmlsZSByZWZhY3RvcmluZykKKyAgICAg
ICAgICAgICdkZWZpbmVzJzoKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAnQU5HTEVf
RU5BQkxFX0hMU0wnLAorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICdzb3VyY2VzJzoKKyAg
ICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAnPEAoYW5nbGVfdW5pdHRlc3RzX2hsc2xfc291
cmNlcyknLAorICAgICAgICAgICAgXSwKKyAgICAgICAgfV0sCisgICAgXSwKK30KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV91bml0dGVzdHNfbWFpbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2FuZ2xlX3Vu
aXR0ZXN0c19tYWluLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvYW5nbGVfdW5pdHRlc3RzX21haW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMzYgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNp
bmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKKworY2xhc3MgQ29tcGlsZXJUZXN0RW52aXJv
bm1lbnQgOiBwdWJsaWMgdGVzdGluZzo6RW52aXJvbm1lbnQKK3sKKyAgcHVibGljOgorICAgIHZp
cnR1YWwgdm9pZCBTZXRVcCgpCisgICAgeworICAgICAgICBpZiAoIVNoSW5pdGlhbGl6ZSgpKQor
ICAgICAgICB7CisgICAgICAgICAgICBGQUlMKCkgPDwgIkZhaWxlZCB0byBpbml0aWFsaXplIHRo
ZSBjb21waWxlci4iOworICAgICAgICB9CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIFRlYXJE
b3duKCkKKyAgICB7CisgICAgICAgIGlmICghU2hGaW5hbGl6ZSgpKQorICAgICAgICB7CisgICAg
ICAgICAgICBGQUlMKCkgPDwgIkZhaWxlZCB0byBmaW5hbGl6ZSB0aGUgY29tcGlsZXIuIjsKKyAg
ICAgICAgfQorICAgIH0KK307CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sK
KyAgICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgICAgdGVzdGluZzo6
QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KG5ldyBDb21waWxlclRlc3RFbnZpcm9ubWVudCgpKTsK
KyAgICBpbnQgcnQgPSBSVU5fQUxMX1RFU1RTKCk7CisgICAgcmV0dXJuIHJ0OworfQpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2FuZ2xlX3VuaXR0ZXN0c191dGlscy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV91
bml0dGVzdHNfdXRpbHMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvYW5nbGVfdW5pdHRlc3RzX3V0aWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMjQgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBhbmdsZV91bml0dGVzdHNfdXRpbHMuaDoKKy8vICAg
SGVscGVycyBmb3IgbW9ja2luZyBhbmQgdW5pdCB0ZXN0aW5nLgorCisjaWZuZGVmIFRFU1RTX0FO
R0xFX1VOSVRURVNUU19VVElMU19IXworI2RlZmluZSBURVNUU19BTkdMRV9VTklUVEVTVFNfVVRJ
TFNfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL1N1cmZhY2UuaCIKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9Db250ZXh0SW1wbC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0VH
TEltcGxGYWN0b3J5LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvR0xJbXBsRmFjdG9y
eS5oIgorCituYW1lc3BhY2UgcngKK3sKKworLy8gVXNlZnVsIHdoZW4gbW9ja2luZyBhIHBhcnQg
b2YgdGhlIEdMSW1wbEZhY3RvcnkgY2xhc3MKK2NsYXNzIE51bGxGYWN0b3J5IDogcHVibGljIEdM
SW1wbEZhY3RvcnkKK3sKKyAgcHVibGljOgorICAgIE51bGxGYWN0b3J5KCkge30KKworICAgIC8v
IFNoYWRlciBjcmVhdGlvbgorICAgIENvbXBpbGVySW1wbCAqY3JlYXRlQ29tcGlsZXIoKSBvdmVy
cmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgU2hhZGVySW1wbCAqY3JlYXRlU2hhZGVyKGNv
bnN0IGdsOjpTaGFkZXJTdGF0ZSAmZGF0YSkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQor
ICAgIFByb2dyYW1JbXBsICpjcmVhdGVQcm9ncmFtKGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJmRh
dGEpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIC8vIEZyYW1lYnVmZmVyIGNy
ZWF0aW9uCisgICAgRnJhbWVidWZmZXJJbXBsICpjcmVhdGVGcmFtZWJ1ZmZlcihjb25zdCBnbDo6
RnJhbWVidWZmZXJTdGF0ZSAmZGF0YSkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKworICAgIC8vIFRleHR1cmUgY3JlYXRpb24KKyAgICBUZXh0dXJlSW1w
bCAqY3JlYXRlVGV4dHVyZShjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZkYXRhKSBvdmVycmlkZSB7
IHJldHVybiBudWxscHRyOyB9CisKKyAgICAvLyBSZW5kZXJidWZmZXIgY3JlYXRpb24KKyAgICBS
ZW5kZXJidWZmZXJJbXBsICpjcmVhdGVSZW5kZXJidWZmZXIoKSBvdmVycmlkZSB7IHJldHVybiBu
dWxscHRyOyB9CisKKyAgICAvLyBCdWZmZXIgY3JlYXRpb24KKyAgICBCdWZmZXJJbXBsICpjcmVh
dGVCdWZmZXIoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisKKyAgICAvLyBWZXJ0ZXgg
QXJyYXkgY3JlYXRpb24KKyAgICBWZXJ0ZXhBcnJheUltcGwgKmNyZWF0ZVZlcnRleEFycmF5KGNv
bnN0IGdsOjpWZXJ0ZXhBcnJheVN0YXRlICZkYXRhKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgLy8gUXVlcnkgYW5kIEZlbmNlIGNyZWF0aW9u
CisgICAgUXVlcnlJbXBsICpjcmVhdGVRdWVyeShHTGVudW0gdHlwZSkgb3ZlcnJpZGUgeyByZXR1
cm4gbnVsbHB0cjsgfQorICAgIEZlbmNlTlZJbXBsICpjcmVhdGVGZW5jZU5WKCkgb3ZlcnJpZGUg
eyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEZlbmNlU3luY0ltcGwgKmNyZWF0ZUZlbmNlU3luYygp
IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIC8vIFRyYW5zZm9ybSBGZWVkYmFj
ayBjcmVhdGlvbgorICAgIFRyYW5zZm9ybUZlZWRiYWNrSW1wbCAqY3JlYXRlVHJhbnNmb3JtRmVl
ZGJhY2soY29uc3QgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrU3RhdGUgJnN0YXRlKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgLy8gU2FtcGxlciBv
YmplY3QgY3JlYXRpb24KKyAgICBTYW1wbGVySW1wbCAqY3JlYXRlU2FtcGxlcigpIG92ZXJyaWRl
IHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIHN0ZDo6dmVjdG9yPFBhdGhJbXBsICo+IGNyZWF0
ZVBhdGhzKEdMc2l6ZWkgcmFuZ2UpIG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gc3Rk
Ojp2ZWN0b3I8UGF0aEltcGwgKj4oKTsKKyAgICB9Cit9OworCisvLyBBIGNsYXNzIHdpdGggYWxs
IHRoZSBmYWN0b3J5IG1ldGhvZHMgbW9ja2VkLgorY2xhc3MgTW9ja0dMRmFjdG9yeSA6IHB1Ymxp
YyBHTEltcGxGYWN0b3J5Cit7CisgIHB1YmxpYzoKKyAgICBNT0NLX01FVEhPRDEoY3JlYXRlQ29u
dGV4dCwgQ29udGV4dEltcGwgKihjb25zdCBnbDo6Q29udGV4dFN0YXRlICYpKTsKKyAgICBNT0NL
X01FVEhPRDAoY3JlYXRlQ29tcGlsZXIsIENvbXBpbGVySW1wbCAqKCkpOworICAgIE1PQ0tfTUVU
SE9EMShjcmVhdGVTaGFkZXIsIFNoYWRlckltcGwgKihjb25zdCBnbDo6U2hhZGVyU3RhdGUgJikp
OworICAgIE1PQ0tfTUVUSE9EMShjcmVhdGVQcm9ncmFtLCBQcm9ncmFtSW1wbCAqKGNvbnN0IGds
OjpQcm9ncmFtU3RhdGUgJikpOworICAgIE1PQ0tfTUVUSE9EMShjcmVhdGVGcmFtZWJ1ZmZlciwg
RnJhbWVidWZmZXJJbXBsICooY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJikpOworICAgIE1P
Q0tfTUVUSE9EMShjcmVhdGVUZXh0dXJlLCBUZXh0dXJlSW1wbCAqKGNvbnN0IGdsOjpUZXh0dXJl
U3RhdGUgJikpOworICAgIE1PQ0tfTUVUSE9EMChjcmVhdGVSZW5kZXJidWZmZXIsIFJlbmRlcmJ1
ZmZlckltcGwgKigpKTsKKyAgICBNT0NLX01FVEhPRDAoY3JlYXRlQnVmZmVyLCBCdWZmZXJJbXBs
ICooKSk7CisgICAgTU9DS19NRVRIT0QxKGNyZWF0ZVZlcnRleEFycmF5LCBWZXJ0ZXhBcnJheUlt
cGwgKihjb25zdCBnbDo6VmVydGV4QXJyYXlTdGF0ZSAmKSk7CisgICAgTU9DS19NRVRIT0QxKGNy
ZWF0ZVF1ZXJ5LCBRdWVyeUltcGwgKihHTGVudW0gdHlwZSkpOworICAgIE1PQ0tfTUVUSE9EMChj
cmVhdGVGZW5jZU5WLCBGZW5jZU5WSW1wbCAqKCkpOworICAgIE1PQ0tfTUVUSE9EMChjcmVhdGVG
ZW5jZVN5bmMsIEZlbmNlU3luY0ltcGwgKigpKTsKKyAgICBNT0NLX01FVEhPRDEoY3JlYXRlVHJh
bnNmb3JtRmVlZGJhY2ssCisgICAgICAgICAgICAgICAgIFRyYW5zZm9ybUZlZWRiYWNrSW1wbCAq
KGNvbnN0IGdsOjpUcmFuc2Zvcm1GZWVkYmFja1N0YXRlICYpKTsKKyAgICBNT0NLX01FVEhPRDAo
Y3JlYXRlU2FtcGxlciwgU2FtcGxlckltcGwgKigpKTsKKyAgICBNT0NLX01FVEhPRDEoY3JlYXRl
UGF0aHMsIHN0ZDo6dmVjdG9yPFBhdGhJbXBsICo+KEdMc2l6ZWkpKTsKK307CisKK2NsYXNzIE1v
Y2tFR0xGYWN0b3J5IDogcHVibGljIEVHTEltcGxGYWN0b3J5Cit7CisgIHB1YmxpYzoKKyAgICBN
T0NLX01FVEhPRDQoY3JlYXRlV2luZG93U3VyZmFjZSwKKyAgICAgICAgICAgICAgICAgU3VyZmFj
ZUltcGwgKihjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICosCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmKSk7CisgICAgTU9DS19NRVRIT0QzKGNyZWF0ZVBi
dWZmZXJTdXJmYWNlLAorICAgICAgICAgICAgICAgICBTdXJmYWNlSW1wbCAqKGNvbnN0IGVnbDo6
U3VyZmFjZVN0YXRlICYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWds
OjpDb25maWcgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0
dHJpYnV0ZU1hcCAmKSk7CisgICAgTU9DS19NRVRIT0Q0KGNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50
QnVmZmVyLAorICAgICAgICAgICAgICAgICBTdXJmYWNlSW1wbCAqKGNvbnN0IGVnbDo6U3VyZmFj
ZVN0YXRlICYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25m
aWcgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJikp
OworICAgIE1PQ0tfTUVUSE9ENChjcmVhdGVQaXhtYXBTdXJmYWNlLAorICAgICAgICAgICAgICAg
ICBTdXJmYWNlSW1wbCAqKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICYsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOYXRpdmVQaXhtYXBUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICYpKTsKKyAgICBNT0NLX01FVEhPRDMoY3Jl
YXRlSW1hZ2UsIEltYWdlSW1wbCAqKEVHTGVudW0sIGVnbDo6SW1hZ2VTaWJsaW5nICosIGNvbnN0
IGVnbDo6QXR0cmlidXRlTWFwICYpKTsKKyAgICBNT0NLX01FVEhPRDEoY3JlYXRlQ29udGV4dCwg
Q29udGV4dEltcGwgKihjb25zdCBnbDo6Q29udGV4dFN0YXRlICYpKTsKKyAgICBNT0NLX01FVEhP
RDIoY3JlYXRlU3RyZWFtUHJvZHVjZXJEM0RUZXh0dXJlTlYxMiwKKyAgICAgICAgICAgICAgICAg
U3RyZWFtUHJvZHVjZXJJbXBsICooZWdsOjpTdHJlYW06OkNvbnN1bWVyVHlwZSwgY29uc3QgZWds
OjpBdHRyaWJ1dGVNYXAgJikpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAv
LyBURVNUU19BTkdMRV9VTklUVEVTVFNfVVRJTFNfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9BUElfdGVzdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0FQSV90
ZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvY29tcGlsZXJfdGVzdHMvQVBJX3Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MjYgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisvLworLy8gQVBJX3Rlc3QuY3BwOgorLy8gICBTb21lIHRlc3RzIGZv
ciB0aGUgY29tcGlsZXIgQVBJLgorLy8KKworI2luY2x1ZGUgImFuZ2xlX2dsLmgiCisjaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKKworVEVT
VChBUElUZXN0LCBDb21wYXJlU2hCdWlsdEluUmVzb3VyY2VzKQoreworICAgIFNoQnVpbHRJblJl
c291cmNlcyBhX3Jlc291cmNlczsKKyAgICBtZW1zZXQoJmFfcmVzb3VyY2VzLCA4OCwgc2l6ZW9m
KGFfcmVzb3VyY2VzKSk7CisgICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmYV9yZXNvdXJjZXMp
OworCisgICAgU2hCdWlsdEluUmVzb3VyY2VzIGJfcmVzb3VyY2VzOworICAgIG1lbXNldCgmYl9y
ZXNvdXJjZXMsIDc3LCBzaXplb2YoYl9yZXNvdXJjZXMpKTsKKyAgICBTaEluaXRCdWlsdEluUmVz
b3VyY2VzKCZiX3Jlc291cmNlcyk7CisKKyAgICBFWFBFQ1RfVFJVRShtZW1jbXAoJmFfcmVzb3Vy
Y2VzLCAmYl9yZXNvdXJjZXMsIHNpemVvZihhX3Jlc291cmNlcykpID09IDApOworfQorCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvQ29sbGVj
dFZhcmlhYmxlc190ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvQ29sbGVjdFZhcmlhYmxlc190ZXN0LmNwcAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJf
dGVzdHMvQ29sbGVjdFZhcmlhYmxlc190ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDc0MCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBDb2xsZWN0VmFyaWFibGVzX3Rlc3QuY3BwOgorLy8g
ICBTb21lIHRlc3RzIGZvciBzaGFkZXIgaW5zcGVjdGlvbgorLy8KKworI2luY2x1ZGUgPG1lbW9y
eT4KKworI2luY2x1ZGUgImFuZ2xlX2dsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNp
bmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xh
dG9yL1RyYW5zbGF0b3JHTFNMLmgiCisKKyNkZWZpbmUgRVhQRUNUX0dMRU5VTV9FUShleHBlY3Rl
ZCwgYWN0dWFsKSBcCisgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PEdMZW51bT4oZXhwZWN0ZWQp
LCBzdGF0aWNfY2FzdDxHTGVudW0+KGFjdHVhbCkpCisKK2NsYXNzIENvbGxlY3RWYXJpYWJsZXNU
ZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QKK3sKKyAgcHVibGljOgorICAgIENvbGxlY3RWYXJp
YWJsZXNUZXN0KEdMZW51bSBzaGFkZXJUeXBlKSA6IG1TaGFkZXJUeXBlKHNoYWRlclR5cGUpIHt9
CisKKyAgcHJvdGVjdGVkOgorICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgU2hCdWlsdEluUmVzb3VyY2VzIHJlc291cmNlczsKKyAgICAgICAgU2hJbml0QnVpbHRJblJl
c291cmNlcygmcmVzb3VyY2VzKTsKKyAgICAgICAgcmVzb3VyY2VzLk1heERyYXdCdWZmZXJzID0g
ODsKKworICAgICAgICBpbml0VHJhbnNsYXRvcihyZXNvdXJjZXMpOworICAgIH0KKworICAgIHZv
aWQgaW5pdFRyYW5zbGF0b3IoY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzICZyZXNvdXJjZXMpCisg
ICAgeworICAgICAgICBtVHJhbnNsYXRvci5yZXNldCgKKyAgICAgICAgICAgIG5ldyBUcmFuc2xh
dG9yR0xTTChtU2hhZGVyVHlwZSwgU0hfR0xFUzNfU1BFQywgU0hfR0xTTF9DT01QQVRJQklMSVRZ
X09VVFBVVCkpOworICAgICAgICBBU1NFUlRfVFJVRShtVHJhbnNsYXRvci0+SW5pdChyZXNvdXJj
ZXMpKTsKKyAgICB9CisKKyAgICAvLyBGb3IgdXNlIGluIHRoZSBnbF9EZXB0aFJhbmdlIHRlc3Rz
LgorICAgIHZvaWQgdmFsaWRhdGVEZXB0aFJhbmdlU2hhZGVyKGNvbnN0IHN0ZDo6c3RyaW5nICZz
aGFkZXJTdHJpbmcpCisgICAgeworICAgICAgICBjb25zdCBjaGFyICpzaGFkZXJTdHJpbmdzW10g
PSB7IHNoYWRlclN0cmluZy5jX3N0cigpIH07CisgICAgICAgIEFTU0VSVF9UUlVFKG1UcmFuc2xh
dG9yLT5jb21waWxlKHNoYWRlclN0cmluZ3MsIDEsIFNIX1ZBUklBQkxFUykpOworCisgICAgICAg
IGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpVbmlmb3JtPiAmdW5pZm9ybXMgPSBtVHJhbnNsYXRvci0+
Z2V0VW5pZm9ybXMoKTsKKyAgICAgICAgQVNTRVJUX0VRKDF1LCB1bmlmb3Jtcy5zaXplKCkpOwor
CisgICAgICAgIGNvbnN0IHNoOjpVbmlmb3JtICZ1bmlmb3JtID0gdW5pZm9ybXNbMF07CisgICAg
ICAgIEVYUEVDVF9FUSgiZ2xfRGVwdGhSYW5nZSIsIHVuaWZvcm0ubmFtZSk7CisgICAgICAgIEFT
U0VSVF9UUlVFKHVuaWZvcm0uaXNTdHJ1Y3QoKSk7CisgICAgICAgIEFTU0VSVF9FUSgzdSwgdW5p
Zm9ybS5maWVsZHMuc2l6ZSgpKTsKKworICAgICAgICBib29sIGZvdW5kTmVhciA9IGZhbHNlOwor
ICAgICAgICBib29sIGZvdW5kRmFyID0gZmFsc2U7CisgICAgICAgIGJvb2wgZm91bmREaWZmID0g
ZmFsc2U7CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRvICZmaWVsZCA6IHVuaWZvcm0uZmllbGRz
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZmllbGQubmFtZSA9PSAibmVhciIpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGZvdW5kTmVhcik7CisgICAg
ICAgICAgICAgICAgZm91bmROZWFyID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGVsc2UgaWYgKGZpZWxkLm5hbWUgPT0gImZhciIpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgRVhQRUNUX0ZBTFNFKGZvdW5kRmFyKTsKKyAgICAgICAgICAgICAgICBmb3VuZEZhciA9
IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUX0VRKCJkaWZmIiwgZmllbGQubmFtZSk7CisgICAgICAgICAg
ICAgICAgRVhQRUNUX0ZBTFNFKGZvdW5kRGlmZik7CisgICAgICAgICAgICAgICAgZm91bmREaWZm
ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgRVhQRUNUX0VRKDB1LCBmaWVs
ZC5hcnJheVNpemUpOworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGZpZWxkLmlzU3RydWN0KCkp
OworICAgICAgICAgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9ISUdIX0ZMT0FULCBmaWVsZC5wcmVj
aXNpb24pOworICAgICAgICAgICAgRVhQRUNUX1RSVUUoZmllbGQuc3RhdGljVXNlKTsKKyAgICAg
ICAgICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRkxPQVQsIGZpZWxkLnR5cGUpOworICAgICAgICB9
CisKKyAgICAgICAgRVhQRUNUX1RSVUUoZm91bmROZWFyICYmIGZvdW5kRmFyICYmIGZvdW5kRGlm
Zik7CisgICAgfQorCisgICAgLy8gRm9yIHVzZSBpbiB0ZXN0cyBmb3Igb3V0cHV0IHZhcmlibGVz
LgorICAgIHZvaWQgdmFsaWRhdGVPdXRwdXRWYXJpYWJsZUZvclNoYWRlcihjb25zdCBzdGQ6OnN0
cmluZyAmc2hhZGVyU3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgdmFySW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnZhck5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHNoOjpPdXRwdXRWYXJpYWJsZSAqKm91dFJlc3VsdCkK
KyAgICB7CisgICAgICAgIGNvbnN0IGNoYXIgKnNoYWRlclN0cmluZ3NbXSA9IHtzaGFkZXJTdHJp
bmcuY19zdHIoKX07CisgICAgICAgIEFTU0VSVF9UUlVFKG1UcmFuc2xhdG9yLT5jb21waWxlKHNo
YWRlclN0cmluZ3MsIDEsIFNIX1ZBUklBQkxFUykpCisgICAgICAgICAgICA8PCBtVHJhbnNsYXRv
ci0+Z2V0SW5mb1NpbmsoKS5pbmZvLnN0cigpOworCisgICAgICAgIGNvbnN0IGF1dG8gJm91dHB1
dFZhcmlhYmxlcyA9IG1UcmFuc2xhdG9yLT5nZXRPdXRwdXRWYXJpYWJsZXMoKTsKKyAgICAgICAg
QVNTRVJUX0xUKHZhckluZGV4LCBvdXRwdXRWYXJpYWJsZXMuc2l6ZSgpKTsKKyAgICAgICAgY29u
c3Qgc2g6Ok91dHB1dFZhcmlhYmxlICZvdXRwdXRWYXJpYWJsZSA9IG91dHB1dFZhcmlhYmxlc1t2
YXJJbmRleF07CisgICAgICAgIEVYUEVDVF9FUSgtMSwgb3V0cHV0VmFyaWFibGUubG9jYXRpb24p
OworICAgICAgICBFWFBFQ1RfVFJVRShvdXRwdXRWYXJpYWJsZS5zdGF0aWNVc2UpOworICAgICAg
ICBFWFBFQ1RfRVEodmFyTmFtZSwgb3V0cHV0VmFyaWFibGUubmFtZSk7CisgICAgICAgICpvdXRS
ZXN1bHQgPSAmb3V0cHV0VmFyaWFibGU7CisgICAgfQorCisgICAgdm9pZCBjb21waWxlKGNvbnN0
IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcpCisgICAgeworICAgICAgICBjb25zdCBjaGFyICpz
aGFkZXJTdHJpbmdzW10gPSB7c2hhZGVyU3RyaW5nLmNfc3RyKCl9OworICAgICAgICBBU1NFUlRf
VFJVRShtVHJhbnNsYXRvci0+Y29tcGlsZShzaGFkZXJTdHJpbmdzLCAxLCBTSF9WQVJJQUJMRVMp
KTsKKyAgICB9CisKKyAgICBHTGVudW0gbVNoYWRlclR5cGU7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFRyYW5zbGF0b3JHTFNMPiBtVHJhbnNsYXRvcjsKK307CisKK2NsYXNzIENvbGxlY3RWZXJ0ZXhW
YXJpYWJsZXNUZXN0IDogcHVibGljIENvbGxlY3RWYXJpYWJsZXNUZXN0Cit7CisgIHB1YmxpYzoK
KyAgICBDb2xsZWN0VmVydGV4VmFyaWFibGVzVGVzdCgpIDogQ29sbGVjdFZhcmlhYmxlc1Rlc3Qo
R0xfVkVSVEVYX1NIQURFUikge30KK307CisKK2NsYXNzIENvbGxlY3RGcmFnbWVudFZhcmlhYmxl
c1Rlc3QgOiBwdWJsaWMgQ29sbGVjdFZhcmlhYmxlc1Rlc3QKK3sKKyAgcHVibGljOgorICAgICAg
Q29sbGVjdEZyYWdtZW50VmFyaWFibGVzVGVzdCgpIDogQ29sbGVjdFZhcmlhYmxlc1Rlc3QoR0xf
RlJBR01FTlRfU0hBREVSKSB7fQorfTsKKworVEVTVF9GKENvbGxlY3RGcmFnbWVudFZhcmlhYmxl
c1Rlc3QsIFNpbXBsZU91dHB1dFZhcikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVy
U3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgdmVjNCBvdXRfZnJhZ0NvbG9yO1xuIgor
ICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgb3V0X2ZyYWdDb2xvciA9IHZl
YzQoMS4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7
CisKKyAgICBjb25zdCBhdXRvICZvdXRwdXRWYXJpYWJsZXMgPSBtVHJhbnNsYXRvci0+Z2V0T3V0
cHV0VmFyaWFibGVzKCk7CisgICAgQVNTRVJUX0VRKDF1LCBvdXRwdXRWYXJpYWJsZXMuc2l6ZSgp
KTsKKworICAgIGNvbnN0IHNoOjpPdXRwdXRWYXJpYWJsZSAmb3V0cHV0VmFyaWFibGUgPSBvdXRw
dXRWYXJpYWJsZXNbMF07CisKKyAgICBFWFBFQ1RfRVEoMHUsIG91dHB1dFZhcmlhYmxlLmFycmF5
U2l6ZSk7CisgICAgRVhQRUNUX0VRKC0xLCBvdXRwdXRWYXJpYWJsZS5sb2NhdGlvbik7CisgICAg
RVhQRUNUX0dMRU5VTV9FUShHTF9NRURJVU1fRkxPQVQsIG91dHB1dFZhcmlhYmxlLnByZWNpc2lv
bik7CisgICAgRVhQRUNUX1RSVUUob3V0cHV0VmFyaWFibGUuc3RhdGljVXNlKTsKKyAgICBFWFBF
Q1RfR0xFTlVNX0VRKEdMX0ZMT0FUX1ZFQzQsIG91dHB1dFZhcmlhYmxlLnR5cGUpOworICAgIEVY
UEVDVF9FUSgib3V0X2ZyYWdDb2xvciIsIG91dHB1dFZhcmlhYmxlLm5hbWUpOworfQorCitURVNU
X0YoQ29sbGVjdEZyYWdtZW50VmFyaWFibGVzVGVzdCwgTG9jYXRpb25PdXRwdXRWYXIpCit7Cisg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAz
MDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAi
bGF5b3V0KGxvY2F0aW9uPTUpIG91dCB2ZWM0IG91dF9mcmFnQ29sb3I7XG4iCisgICAgICAgICJ2
b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBvdXRfZnJhZ0NvbG9yID0gdmVjNCgxLjApO1xu
IgorICAgICAgICAifVxuIjsKKworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKworICAgIGNv
bnN0IGF1dG8gJm91dHB1dFZhcmlhYmxlcyA9IG1UcmFuc2xhdG9yLT5nZXRPdXRwdXRWYXJpYWJs
ZXMoKTsKKyAgICBBU1NFUlRfRVEoMXUsIG91dHB1dFZhcmlhYmxlcy5zaXplKCkpOworCisgICAg
Y29uc3Qgc2g6Ok91dHB1dFZhcmlhYmxlICZvdXRwdXRWYXJpYWJsZSA9IG91dHB1dFZhcmlhYmxl
c1swXTsKKworICAgIEVYUEVDVF9FUSgwdSwgb3V0cHV0VmFyaWFibGUuYXJyYXlTaXplKTsKKyAg
ICBFWFBFQ1RfRVEoNSwgb3V0cHV0VmFyaWFibGUubG9jYXRpb24pOworICAgIEVYUEVDVF9HTEVO
VU1fRVEoR0xfTUVESVVNX0ZMT0FULCBvdXRwdXRWYXJpYWJsZS5wcmVjaXNpb24pOworICAgIEVY
UEVDVF9UUlVFKG91dHB1dFZhcmlhYmxlLnN0YXRpY1VzZSk7CisgICAgRVhQRUNUX0dMRU5VTV9F
UShHTF9GTE9BVF9WRUM0LCBvdXRwdXRWYXJpYWJsZS50eXBlKTsKKyAgICBFWFBFQ1RfRVEoIm91
dF9mcmFnQ29sb3IiLCBvdXRwdXRWYXJpYWJsZS5uYW1lKTsKK30KKworVEVTVF9GKENvbGxlY3RW
ZXJ0ZXhWYXJpYWJsZXNUZXN0LCBMb2NhdGlvbkF0dHJpYnV0ZSkKK3sKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAg
ICAgICAibGF5b3V0KGxvY2F0aW9uPTUpIGluIHZlYzQgaW5fUG9zaXRpb247XG4iCisgICAgICAg
ICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBnbF9Qb3NpdGlvbiA9IGluX1Bvc2l0aW9u
O1xuIgorICAgICAgICAifVxuIjsKKworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKworICAg
IGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpBdHRyaWJ1dGU+ICZhdHRyaWJ1dGVzID0gbVRyYW5zbGF0
b3ItPmdldEF0dHJpYnV0ZXMoKTsKKyAgICBBU1NFUlRfRVEoMXUsIGF0dHJpYnV0ZXMuc2l6ZSgp
KTsKKworICAgIGNvbnN0IHNoOjpBdHRyaWJ1dGUgJmF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXNbMF07
CisKKyAgICBFWFBFQ1RfRVEoMHUsIGF0dHJpYnV0ZS5hcnJheVNpemUpOworICAgIEVYUEVDVF9F
USg1LCBhdHRyaWJ1dGUubG9jYXRpb24pOworICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfSElHSF9G
TE9BVCwgYXR0cmlidXRlLnByZWNpc2lvbik7CisgICAgRVhQRUNUX1RSVUUoYXR0cmlidXRlLnN0
YXRpY1VzZSk7CisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GTE9BVF9WRUM0LCBhdHRyaWJ1dGUu
dHlwZSk7CisgICAgRVhQRUNUX0VRKCJpbl9Qb3NpdGlvbiIsIGF0dHJpYnV0ZS5uYW1lKTsKK30K
KworVEVTVF9GKENvbGxlY3RWZXJ0ZXhWYXJpYWJsZXNUZXN0LCBTaW1wbGVJbnRlcmZhY2VCbG9j
aykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2
ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAidW5pZm9ybSBiIHtcbiIKKyAgICAgICAgIiAgZmxv
YXQgZjtcbiIKKyAgICAgICAgIn07IgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAg
ICAiICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGYsIDAuMCwgMC4wLCAxLjApO1xuIgorICAgICAgICAi
fVxuIjsKKworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKworICAgIGNvbnN0IHN0ZDo6dmVj
dG9yPHNoOjpJbnRlcmZhY2VCbG9jaz4gJmludGVyZmFjZUJsb2NrcyA9IG1UcmFuc2xhdG9yLT5n
ZXRJbnRlcmZhY2VCbG9ja3MoKTsKKyAgICBBU1NFUlRfRVEoMXUsIGludGVyZmFjZUJsb2Nrcy5z
aXplKCkpOworCisgICAgY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrICZpbnRlcmZhY2VCbG9jayA9
IGludGVyZmFjZUJsb2Nrc1swXTsKKworICAgIEVYUEVDVF9FUSgwdSwgaW50ZXJmYWNlQmxvY2su
YXJyYXlTaXplKTsKKyAgICBFWFBFQ1RfRkFMU0UoaW50ZXJmYWNlQmxvY2suaXNSb3dNYWpvckxh
eW91dCk7CisgICAgRVhQRUNUX0VRKHNoOjpCTE9DS0xBWU9VVF9TSEFSRUQsIGludGVyZmFjZUJs
b2NrLmxheW91dCk7CisgICAgRVhQRUNUX0VRKCJiIiwgaW50ZXJmYWNlQmxvY2submFtZSk7Cisg
ICAgRVhQRUNUX1RSVUUoaW50ZXJmYWNlQmxvY2suc3RhdGljVXNlKTsKKworICAgIEFTU0VSVF9F
USgxdSwgaW50ZXJmYWNlQmxvY2suZmllbGRzLnNpemUoKSk7CisKKyAgICBjb25zdCBzaDo6SW50
ZXJmYWNlQmxvY2tGaWVsZCAmZmllbGQgPSBpbnRlcmZhY2VCbG9jay5maWVsZHNbMF07CisKKyAg
ICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0hJR0hfRkxPQVQsIGZpZWxkLnByZWNpc2lvbik7CisgICAg
RVhQRUNUX1RSVUUoZmllbGQuc3RhdGljVXNlKTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZM
T0FULCBmaWVsZC50eXBlKTsKKyAgICBFWFBFQ1RfRVEoImYiLCBmaWVsZC5uYW1lKTsKKyAgICBF
WFBFQ1RfRkFMU0UoZmllbGQuaXNSb3dNYWpvckxheW91dCk7CisgICAgRVhQRUNUX1RSVUUoZmll
bGQuZmllbGRzLmVtcHR5KCkpOworfQorCitURVNUX0YoQ29sbGVjdFZlcnRleFZhcmlhYmxlc1Rl
c3QsIFNpbXBsZUluc3RhbmNlZEludGVyZmFjZUJsb2NrKQoreworICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAg
ICJ1bmlmb3JtIGIge1xuIgorICAgICAgICAiICBmbG9hdCBmO1xuIgorICAgICAgICAifSBibG9j
a0luc3RhbmNlOyIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGdsX1Bv
c2l0aW9uID0gdmVjNChibG9ja0luc3RhbmNlLmYsIDAuMCwgMC4wLCAxLjApO1xuIgorICAgICAg
ICAifVxuIjsKKworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKworICAgIGNvbnN0IHN0ZDo6
dmVjdG9yPHNoOjpJbnRlcmZhY2VCbG9jaz4gJmludGVyZmFjZUJsb2NrcyA9IG1UcmFuc2xhdG9y
LT5nZXRJbnRlcmZhY2VCbG9ja3MoKTsKKyAgICBBU1NFUlRfRVEoMXUsIGludGVyZmFjZUJsb2Nr
cy5zaXplKCkpOworCisgICAgY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrICZpbnRlcmZhY2VCbG9j
ayA9IGludGVyZmFjZUJsb2Nrc1swXTsKKworICAgIEVYUEVDVF9FUSgwdSwgaW50ZXJmYWNlQmxv
Y2suYXJyYXlTaXplKTsKKyAgICBFWFBFQ1RfRkFMU0UoaW50ZXJmYWNlQmxvY2suaXNSb3dNYWpv
ckxheW91dCk7CisgICAgRVhQRUNUX0VRKHNoOjpCTE9DS0xBWU9VVF9TSEFSRUQsIGludGVyZmFj
ZUJsb2NrLmxheW91dCk7CisgICAgRVhQRUNUX0VRKCJiIiwgaW50ZXJmYWNlQmxvY2submFtZSk7
CisgICAgRVhQRUNUX0VRKCJibG9ja0luc3RhbmNlIiwgaW50ZXJmYWNlQmxvY2suaW5zdGFuY2VO
YW1lKTsKKyAgICBFWFBFQ1RfVFJVRShpbnRlcmZhY2VCbG9jay5zdGF0aWNVc2UpOworCisgICAg
QVNTRVJUX0VRKDF1LCBpbnRlcmZhY2VCbG9jay5maWVsZHMuc2l6ZSgpKTsKKworICAgIGNvbnN0
IHNoOjpJbnRlcmZhY2VCbG9ja0ZpZWxkICZmaWVsZCA9IGludGVyZmFjZUJsb2NrLmZpZWxkc1sw
XTsKKworICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfSElHSF9GTE9BVCwgZmllbGQucHJlY2lzaW9u
KTsKKyAgICBFWFBFQ1RfVFJVRShmaWVsZC5zdGF0aWNVc2UpOworICAgIEVYUEVDVF9HTEVOVU1f
RVEoR0xfRkxPQVQsIGZpZWxkLnR5cGUpOworICAgIEVYUEVDVF9FUSgiZiIsIGZpZWxkLm5hbWUp
OworICAgIEVYUEVDVF9GQUxTRShmaWVsZC5pc1Jvd01ham9yTGF5b3V0KTsKKyAgICBFWFBFQ1Rf
VFJVRShmaWVsZC5maWVsZHMuZW1wdHkoKSk7Cit9CisKK1RFU1RfRihDb2xsZWN0VmVydGV4VmFy
aWFibGVzVGVzdCwgU3RydWN0SW50ZXJmYWNlQmxvY2spCit7CisgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAg
InN0cnVjdCBzdCB7IGZsb2F0IGY7IH07IgorICAgICAgICAidW5pZm9ybSBiIHtcbiIKKyAgICAg
ICAgIiAgc3QgcztcbiIKKyAgICAgICAgIn07IgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgor
ICAgICAgICAiICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHMuZiwgMC4wLCAwLjAsIDEuMCk7XG4iCisg
ICAgICAgICJ9XG4iOworCisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworCisgICAgY29uc3Qg
c3RkOjp2ZWN0b3I8c2g6OkludGVyZmFjZUJsb2NrPiAmaW50ZXJmYWNlQmxvY2tzID0gbVRyYW5z
bGF0b3ItPmdldEludGVyZmFjZUJsb2NrcygpOworICAgIEFTU0VSVF9FUSgxdSwgaW50ZXJmYWNl
QmxvY2tzLnNpemUoKSk7CisKKyAgICBjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2sgJmludGVyZmFj
ZUJsb2NrID0gaW50ZXJmYWNlQmxvY2tzWzBdOworCisgICAgRVhQRUNUX0VRKDB1LCBpbnRlcmZh
Y2VCbG9jay5hcnJheVNpemUpOworICAgIEVYUEVDVF9GQUxTRShpbnRlcmZhY2VCbG9jay5pc1Jv
d01ham9yTGF5b3V0KTsKKyAgICBFWFBFQ1RfRVEoc2g6OkJMT0NLTEFZT1VUX1NIQVJFRCwgaW50
ZXJmYWNlQmxvY2subGF5b3V0KTsKKyAgICBFWFBFQ1RfRVEoImIiLCBpbnRlcmZhY2VCbG9jay5u
YW1lKTsKKyAgICBFWFBFQ1RfVFJVRShpbnRlcmZhY2VCbG9jay5zdGF0aWNVc2UpOworCisgICAg
QVNTRVJUX0VRKDF1LCBpbnRlcmZhY2VCbG9jay5maWVsZHMuc2l6ZSgpKTsKKworICAgIGNvbnN0
IHNoOjpJbnRlcmZhY2VCbG9ja0ZpZWxkICZmaWVsZCA9IGludGVyZmFjZUJsb2NrLmZpZWxkc1sw
XTsKKworICAgIEVYUEVDVF9UUlVFKGZpZWxkLmlzU3RydWN0KCkpOworICAgIEVYUEVDVF9UUlVF
KGZpZWxkLnN0YXRpY1VzZSk7CisgICAgRVhQRUNUX0VRKCJzIiwgZmllbGQubmFtZSk7CisgICAg
RVhQRUNUX0ZBTFNFKGZpZWxkLmlzUm93TWFqb3JMYXlvdXQpOworCisgICAgY29uc3Qgc2g6OlNo
YWRlclZhcmlhYmxlICZtZW1iZXIgPSBmaWVsZC5maWVsZHNbMF07CisKKyAgICAvLyBOT1RFOiB3
ZSBkb24ndCBjdXJyZW50bHkgbWFyayBzdHJ1Y3QgbWVtYmVycyBhcyBzdGF0aWNhbGx5IHVzZWQg
b3Igbm90CisgICAgRVhQRUNUX0ZBTFNFKG1lbWJlci5pc1N0cnVjdCgpKTsKKyAgICBFWFBFQ1Rf
RVEoImYiLCBtZW1iZXIubmFtZSk7CisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GTE9BVCwgbWVt
YmVyLnR5cGUpOworICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfSElHSF9GTE9BVCwgbWVtYmVyLnBy
ZWNpc2lvbik7Cit9CisKK1RFU1RfRihDb2xsZWN0VmVydGV4VmFyaWFibGVzVGVzdCwgU3RydWN0
SW5zdGFuY2VkSW50ZXJmYWNlQmxvY2spCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRl
clN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInN0cnVjdCBz
dCB7IGZsb2F0IGY7IH07IgorICAgICAgICAidW5pZm9ybSBiIHtcbiIKKyAgICAgICAgIiAgc3Qg
cztcbiIKKyAgICAgICAgIn0gaW5zdGFuY2VOYW1lOyIKKyAgICAgICAgInZvaWQgbWFpbigpIHtc
biIKKyAgICAgICAgIiAgIGdsX1Bvc2l0aW9uID0gdmVjNChpbnN0YW5jZU5hbWUucy5mLCAwLjAs
IDAuMCwgMS4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBjb21waWxlKHNoYWRlclN0cmlu
Zyk7CisKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6SW50ZXJmYWNlQmxvY2s+ICZpbnRlcmZh
Y2VCbG9ja3MgPSBtVHJhbnNsYXRvci0+Z2V0SW50ZXJmYWNlQmxvY2tzKCk7CisgICAgQVNTRVJU
X0VRKDF1LCBpbnRlcmZhY2VCbG9ja3Muc2l6ZSgpKTsKKworICAgIGNvbnN0IHNoOjpJbnRlcmZh
Y2VCbG9jayAmaW50ZXJmYWNlQmxvY2sgPSBpbnRlcmZhY2VCbG9ja3NbMF07CisKKyAgICBFWFBF
Q1RfRVEoMHUsIGludGVyZmFjZUJsb2NrLmFycmF5U2l6ZSk7CisgICAgRVhQRUNUX0ZBTFNFKGlu
dGVyZmFjZUJsb2NrLmlzUm93TWFqb3JMYXlvdXQpOworICAgIEVYUEVDVF9FUShzaDo6QkxPQ0tM
QVlPVVRfU0hBUkVELCBpbnRlcmZhY2VCbG9jay5sYXlvdXQpOworICAgIEVYUEVDVF9FUSgiYiIs
IGludGVyZmFjZUJsb2NrLm5hbWUpOworICAgIEVYUEVDVF9FUSgiaW5zdGFuY2VOYW1lIiwgaW50
ZXJmYWNlQmxvY2suaW5zdGFuY2VOYW1lKTsKKyAgICBFWFBFQ1RfVFJVRShpbnRlcmZhY2VCbG9j
ay5zdGF0aWNVc2UpOworCisgICAgQVNTRVJUX0VRKDF1LCBpbnRlcmZhY2VCbG9jay5maWVsZHMu
c2l6ZSgpKTsKKworICAgIGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9ja0ZpZWxkICZmaWVsZCA9IGlu
dGVyZmFjZUJsb2NrLmZpZWxkc1swXTsKKworICAgIEVYUEVDVF9UUlVFKGZpZWxkLmlzU3RydWN0
KCkpOworICAgIEVYUEVDVF9UUlVFKGZpZWxkLnN0YXRpY1VzZSk7CisgICAgRVhQRUNUX0VRKCJz
IiwgZmllbGQubmFtZSk7CisgICAgRVhQRUNUX0ZBTFNFKGZpZWxkLmlzUm93TWFqb3JMYXlvdXQp
OworCisgICAgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZtZW1iZXIgPSBmaWVsZC5maWVsZHNb
MF07CisKKyAgICAvLyBOT1RFOiB3ZSBkb24ndCBjdXJyZW50bHkgbWFyayBzdHJ1Y3QgbWVtYmVy
cyBhcyBzdGF0aWNhbGx5IHVzZWQgb3Igbm90CisgICAgRVhQRUNUX0ZBTFNFKG1lbWJlci5pc1N0
cnVjdCgpKTsKKyAgICBFWFBFQ1RfRVEoImYiLCBtZW1iZXIubmFtZSk7CisgICAgRVhQRUNUX0dM
RU5VTV9FUShHTF9GTE9BVCwgbWVtYmVyLnR5cGUpOworICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xf
SElHSF9GTE9BVCwgbWVtYmVyLnByZWNpc2lvbik7Cit9CisKK1RFU1RfRihDb2xsZWN0VmVydGV4
VmFyaWFibGVzVGVzdCwgTmVzdGVkU3RydWN0Um93TWFqb3JJbnRlcmZhY2VCbG9jaykKK3sKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMw
MCBlc1xuIgorICAgICAgICAic3RydWN0IHN0IHsgbWF0MiBtOyB9OyIKKyAgICAgICAgImxheW91
dChyb3dfbWFqb3IpIHVuaWZvcm0gYiB7XG4iCisgICAgICAgICIgIHN0IHM7XG4iCisgICAgICAg
ICJ9OyIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGdsX1Bvc2l0aW9u
ID0gdmVjNChzLm0pO1xuIgorICAgICAgICAifVxuIjsKKworICAgIGNvbXBpbGUoc2hhZGVyU3Ry
aW5nKTsKKworICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpJbnRlcmZhY2VCbG9jaz4gJmludGVy
ZmFjZUJsb2NrcyA9IG1UcmFuc2xhdG9yLT5nZXRJbnRlcmZhY2VCbG9ja3MoKTsKKyAgICBBU1NF
UlRfRVEoMXUsIGludGVyZmFjZUJsb2Nrcy5zaXplKCkpOworCisgICAgY29uc3Qgc2g6OkludGVy
ZmFjZUJsb2NrICZpbnRlcmZhY2VCbG9jayA9IGludGVyZmFjZUJsb2Nrc1swXTsKKworICAgIEVY
UEVDVF9FUSgwdSwgaW50ZXJmYWNlQmxvY2suYXJyYXlTaXplKTsKKyAgICBFWFBFQ1RfVFJVRShp
bnRlcmZhY2VCbG9jay5pc1Jvd01ham9yTGF5b3V0KTsKKyAgICBFWFBFQ1RfRVEoc2g6OkJMT0NL
TEFZT1VUX1NIQVJFRCwgaW50ZXJmYWNlQmxvY2subGF5b3V0KTsKKyAgICBFWFBFQ1RfRVEoImIi
LCBpbnRlcmZhY2VCbG9jay5uYW1lKTsKKyAgICBFWFBFQ1RfVFJVRShpbnRlcmZhY2VCbG9jay5z
dGF0aWNVc2UpOworCisgICAgQVNTRVJUX0VRKDF1LCBpbnRlcmZhY2VCbG9jay5maWVsZHMuc2l6
ZSgpKTsKKworICAgIGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9ja0ZpZWxkICZmaWVsZCA9IGludGVy
ZmFjZUJsb2NrLmZpZWxkc1swXTsKKworICAgIEVYUEVDVF9UUlVFKGZpZWxkLmlzU3RydWN0KCkp
OworICAgIEVYUEVDVF9UUlVFKGZpZWxkLnN0YXRpY1VzZSk7CisgICAgRVhQRUNUX0VRKCJzIiwg
ZmllbGQubmFtZSk7CisgICAgRVhQRUNUX1RSVUUoZmllbGQuaXNSb3dNYWpvckxheW91dCk7CisK
KyAgICBjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUgJm1lbWJlciA9IGZpZWxkLmZpZWxkc1swXTsK
KworICAgIC8vIE5PVEU6IHdlIGRvbid0IGN1cnJlbnRseSBtYXJrIHN0cnVjdCBtZW1iZXJzIGFz
IHN0YXRpY2FsbHkgdXNlZCBvciBub3QKKyAgICBFWFBFQ1RfRkFMU0UobWVtYmVyLmlzU3RydWN0
KCkpOworICAgIEVYUEVDVF9FUSgibSIsIG1lbWJlci5uYW1lKTsKKyAgICBFWFBFQ1RfR0xFTlVN
X0VRKEdMX0ZMT0FUX01BVDIsIG1lbWJlci50eXBlKTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdM
X0hJR0hfRkxPQVQsIG1lbWJlci5wcmVjaXNpb24pOworfQorCitURVNUX0YoQ29sbGVjdFZlcnRl
eFZhcmlhYmxlc1Rlc3QsIFZhcnlpbmdJbnRlcnBvbGF0aW9uKQoreworICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAg
ICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgImNlbnRyb2lkIG91dCBm
bG9hdCB2YXJ5O1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgZ2xf
UG9zaXRpb24gPSB2ZWM0KDEuMCk7XG4iCisgICAgICAgICIgICB2YXJ5ID0gMS4wO1xuIgorICAg
ICAgICAifVxuIjsKKworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKworICAgIGNvbnN0IHN0
ZDo6dmVjdG9yPHNoOjpWYXJ5aW5nPiAmdmFyeWluZ3MgPSBtVHJhbnNsYXRvci0+Z2V0VmFyeWlu
Z3MoKTsKKyAgICBBU1NFUlRfRVEoMnUsIHZhcnlpbmdzLnNpemUoKSk7CisKKyAgICBjb25zdCBz
aDo6VmFyeWluZyAqdmFyeWluZyA9ICZ2YXJ5aW5nc1swXTsKKworICAgIGlmICh2YXJ5aW5nLT5u
YW1lID09ICJnbF9Qb3NpdGlvbiIpCisgICAgeworICAgICAgICB2YXJ5aW5nID0gJnZhcnlpbmdz
WzFdOworICAgIH0KKworICAgIEVYUEVDVF9FUSgwdSwgdmFyeWluZy0+YXJyYXlTaXplKTsKKyAg
ICBFWFBFQ1RfR0xFTlVNX0VRKEdMX01FRElVTV9GTE9BVCwgdmFyeWluZy0+cHJlY2lzaW9uKTsK
KyAgICBFWFBFQ1RfVFJVRSh2YXJ5aW5nLT5zdGF0aWNVc2UpOworICAgIEVYUEVDVF9HTEVOVU1f
RVEoR0xfRkxPQVQsIHZhcnlpbmctPnR5cGUpOworICAgIEVYUEVDVF9FUSgidmFyeSIsIHZhcnlp
bmctPm5hbWUpOworICAgIEVYUEVDVF9FUShzaDo6SU5URVJQT0xBVElPTl9DRU5UUk9JRCwgdmFy
eWluZy0+aW50ZXJwb2xhdGlvbik7Cit9CisKKy8vIFRlc3QgZm9yIGJ1aWx0aW4gdW5pZm9ybSAi
Z2xfRGVwdGhSYW5nZSIgKFZlcnRleCBzaGFkZXIpCitURVNUX0YoQ29sbGVjdFZlcnRleFZhcmlh
Ymxlc1Rlc3QsIERlcHRoUmFuZ2UpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0
cmluZyA9CisgICAgICAgICJhdHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjtcbiIKKyAgICAgICAgInZv
aWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb24gKyB2ZWM0
KGdsX0RlcHRoUmFuZ2UubmVhciwgZ2xfRGVwdGhSYW5nZS5mYXIsIGdsX0RlcHRoUmFuZ2UuZGlm
ZiwgMS4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICB2YWxpZGF0ZURlcHRoUmFuZ2VTaGFk
ZXIoc2hhZGVyU3RyaW5nKTsKK30KKworLy8gVGVzdCBmb3IgYnVpbHRpbiB1bmlmb3JtICJnbF9E
ZXB0aFJhbmdlIiAoRnJhZ21lbnQgc2hhZGVyKQorVEVTVF9GKENvbGxlY3RGcmFnbWVudFZhcmlh
Ymxlc1Rlc3QsIERlcHRoUmFuZ2UpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0
cmluZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInZv
aWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoZ2xfRGVwdGhS
YW5nZS5uZWFyLCBnbF9EZXB0aFJhbmdlLmZhciwgZ2xfRGVwdGhSYW5nZS5kaWZmLCAxLjApO1xu
IgorICAgICAgICAifVxuIjsKKworICAgIHZhbGlkYXRlRGVwdGhSYW5nZVNoYWRlcihzaGFkZXJT
dHJpbmcpOworfQorCisvLyBUZXN0IHRoYXQgZ2xfRnJhZ0NvbG9yIGJ1aWx0LWluIHVzYWdlIGlu
IEVTU0wxIGZyYWdtZW50IHNoYWRlciBpcyByZWZsZWN0ZWQgaW4gdGhlIG91dHB1dAorLy8gdmFy
aWFibGVzIGxpc3QuCitURVNUX0YoQ29sbGVjdEZyYWdtZW50VmFyaWFibGVzVGVzdCwgT3V0cHV0
VmFyRVNTTDFGcmFnQ29sb3IpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdDb2xvclNo
YWRlciA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInZv
aWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wKTtcbiIK
KyAgICAgICAgIn1cbiI7CisKKyAgICBjb25zdCBzaDo6T3V0cHV0VmFyaWFibGUgKm91dHB1dFZh
cmlhYmxlID0gbnVsbHB0cjsKKyAgICB2YWxpZGF0ZU91dHB1dFZhcmlhYmxlRm9yU2hhZGVyKGZy
YWdDb2xvclNoYWRlciwgMHUsICJnbF9GcmFnQ29sb3IiLCAmb3V0cHV0VmFyaWFibGUpOworICAg
IEFTU0VSVF9ORShvdXRwdXRWYXJpYWJsZSwgbnVsbHB0cik7CisgICAgRVhQRUNUX0VRKDB1LCBv
dXRwdXRWYXJpYWJsZS0+YXJyYXlTaXplKTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZMT0FU
X1ZFQzQsIG91dHB1dFZhcmlhYmxlLT50eXBlKTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX01F
RElVTV9GTE9BVCwgb3V0cHV0VmFyaWFibGUtPnByZWNpc2lvbik7Cit9CisKKy8vIFRlc3QgdGhh
dCBnbF9GcmFnRGF0YSBidWlsdC1pbiB1c2FnZSBpbiBFU1NMMSBmcmFnbWVudCBzaGFkZXIgaXMg
cmVmbGVjdGVkIGluIHRoZSBvdXRwdXQKKy8vIHZhcmlhYmxlcyBsaXN0LgorVEVTVF9GKENvbGxl
Y3RGcmFnbWVudFZhcmlhYmxlc1Rlc3QsIE91dHB1dFZhckVTU0wxRnJhZ0RhdGEpCit7CisgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdEYXRhU2hhZGVyID0KKyAgICAgICAgIiNleHRlbnNpb24g
R0xfRVhUX2RyYXdfYnVmZmVycyA6IHJlcXVpcmVcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0O1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgZ2xf
RnJhZ0RhdGFbMF0gPSB2ZWM0KDEuMCk7XG4iCisgICAgICAgICIgICBnbF9GcmFnRGF0YVsxXSA9
IHZlYzQoMC41KTtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBTaEJ1aWx0SW5SZXNvdXJjZXMg
cmVzb3VyY2VzICAgICAgID0gbVRyYW5zbGF0b3ItPmdldFJlc291cmNlcygpOworICAgIHJlc291
cmNlcy5FWFRfZHJhd19idWZmZXJzICAgICAgICAgPSAxOworICAgIGNvbnN0IHVuc2lnbmVkIGlu
dCBrTWF4RHJhd0J1ZmZlcnMgPSAzdTsKKyAgICByZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMgPSBr
TWF4RHJhd0J1ZmZlcnM7CisgICAgaW5pdFRyYW5zbGF0b3IocmVzb3VyY2VzKTsKKworICAgIGNv
bnN0IHNoOjpPdXRwdXRWYXJpYWJsZSAqb3V0cHV0VmFyaWFibGUgPSBudWxscHRyOworICAgIHZh
bGlkYXRlT3V0cHV0VmFyaWFibGVGb3JTaGFkZXIoZnJhZ0RhdGFTaGFkZXIsIDB1LCAiZ2xfRnJh
Z0RhdGEiLCAmb3V0cHV0VmFyaWFibGUpOworICAgIEFTU0VSVF9ORShvdXRwdXRWYXJpYWJsZSwg
bnVsbHB0cik7CisgICAgRVhQRUNUX0VRKGtNYXhEcmF3QnVmZmVycywgb3V0cHV0VmFyaWFibGUt
PmFycmF5U2l6ZSk7CisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GTE9BVF9WRUM0LCBvdXRwdXRW
YXJpYWJsZS0+dHlwZSk7CisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9NRURJVU1fRkxPQVQsIG91
dHB1dFZhcmlhYmxlLT5wcmVjaXNpb24pOworfQorCisvLyBUZXN0IHRoYXQgZ2xfRnJhZ0RhdGFF
WFQgYnVpbHQtaW4gdXNhZ2UgaW4gRVNTTDEgZnJhZ21lbnQgc2hhZGVyIGlzIHJlZmxlY3RlZCBp
biB0aGUgb3V0cHV0CisvLyB2YXJpYWJsZXMgbGlzdC4gQWxzbyB0ZXN0IHRoYXQgdGhlIHByZWNp
c2lvbiBpcyBtZWRpdW1wLgorVEVTVF9GKENvbGxlY3RGcmFnbWVudFZhcmlhYmxlc1Rlc3QsIE91
dHB1dFZhckVTU0wxRnJhZ0RlcHRoTWVkaXVtcCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAm
ZnJhZ0RlcHRoU2hhZGVyID0KKyAgICAgICAgIiNleHRlbnNpb24gR0xfRVhUX2ZyYWdfZGVwdGgg
OiByZXF1aXJlXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAg
ICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdEZXB0aEVYVCA9IDAuNzsi
CisgICAgICAgICJ9XG4iOworCisgICAgU2hCdWlsdEluUmVzb3VyY2VzIHJlc291cmNlcyA9IG1U
cmFuc2xhdG9yLT5nZXRSZXNvdXJjZXMoKTsKKyAgICByZXNvdXJjZXMuRVhUX2ZyYWdfZGVwdGgg
PSAxOworICAgIGluaXRUcmFuc2xhdG9yKHJlc291cmNlcyk7CisKKyAgICBjb25zdCBzaDo6T3V0
cHV0VmFyaWFibGUgKm91dHB1dFZhcmlhYmxlID0gbnVsbHB0cjsKKyAgICB2YWxpZGF0ZU91dHB1
dFZhcmlhYmxlRm9yU2hhZGVyKGZyYWdEZXB0aFNoYWRlciwgMHUsICJnbF9GcmFnRGVwdGhFWFQi
LCAmb3V0cHV0VmFyaWFibGUpOworICAgIEFTU0VSVF9ORShvdXRwdXRWYXJpYWJsZSwgbnVsbHB0
cik7CisgICAgRVhQRUNUX0VRKDB1LCBvdXRwdXRWYXJpYWJsZS0+YXJyYXlTaXplKTsKKyAgICBF
WFBFQ1RfR0xFTlVNX0VRKEdMX0ZMT0FULCBvdXRwdXRWYXJpYWJsZS0+dHlwZSk7CisgICAgRVhQ
RUNUX0dMRU5VTV9FUShHTF9NRURJVU1fRkxPQVQsIG91dHB1dFZhcmlhYmxlLT5wcmVjaXNpb24p
OworfQorCisvLyBUZXN0IHRoYXQgZ2xfRnJhZ0RhdGFFWFQgYnVpbHQtaW4gdXNhZ2UgaW4gRVNT
TDEgZnJhZ21lbnQgc2hhZGVyIGlzIHJlZmxlY3RlZCBpbiB0aGUgb3V0cHV0CisvLyB2YXJpYWJs
ZXMgbGlzdC4gQWxzbyB0ZXN0IHRoYXQgdGhlIHByZWNpc2lvbiBpcyBoaWdocCBpZiB1c2VyIHJl
cXVlc3RzIGl0LgorVEVTVF9GKENvbGxlY3RGcmFnbWVudFZhcmlhYmxlc1Rlc3QsIE91dHB1dFZh
ckVTU0wxRnJhZ0RlcHRoSGlnaHApCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdEZXB0
aEhpZ2hTaGFkZXIgPQorICAgICAgICAiI2V4dGVuc2lvbiBHTF9FWFRfZnJhZ19kZXB0aCA6IHJl
cXVpcmVcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdE
ZXB0aEVYVCA9IDAuNzsiCisgICAgICAgICJ9XG4iOworCisgICAgU2hCdWlsdEluUmVzb3VyY2Vz
IHJlc291cmNlcyAgICA9IG1UcmFuc2xhdG9yLT5nZXRSZXNvdXJjZXMoKTsKKyAgICByZXNvdXJj
ZXMuRVhUX2ZyYWdfZGVwdGggICAgICAgID0gMTsKKyAgICByZXNvdXJjZXMuRnJhZ21lbnRQcmVj
aXNpb25IaWdoID0gMTsKKyAgICBpbml0VHJhbnNsYXRvcihyZXNvdXJjZXMpOworCisgICAgY29u
c3Qgc2g6Ok91dHB1dFZhcmlhYmxlICpvdXRwdXRWYXJpYWJsZSA9IG51bGxwdHI7CisgICAgdmFs
aWRhdGVPdXRwdXRWYXJpYWJsZUZvclNoYWRlcihmcmFnRGVwdGhIaWdoU2hhZGVyLCAwdSwgImds
X0ZyYWdEZXB0aEVYVCIsICZvdXRwdXRWYXJpYWJsZSk7CisgICAgQVNTRVJUX05FKG91dHB1dFZh
cmlhYmxlLCBudWxscHRyKTsKKyAgICBFWFBFQ1RfRVEoMHUsIG91dHB1dFZhcmlhYmxlLT5hcnJh
eVNpemUpOworICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRkxPQVQsIG91dHB1dFZhcmlhYmxlLT50
eXBlKTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0hJR0hfRkxPQVQsIG91dHB1dFZhcmlhYmxl
LT5wcmVjaXNpb24pOworfQorCisvLyBUZXN0IHRoYXQgZ2xfRnJhZ0RhdGEgYnVpbHQtaW4gdXNh
Z2UgaW4gRVNTTDMgZnJhZ21lbnQgc2hhZGVyIGlzIHJlZmxlY3RlZCBpbiB0aGUgb3V0cHV0Cisv
LyB2YXJpYWJsZXMgbGlzdC4gQWxzbyB0ZXN0IHRoYXQgdGhlIHByZWNpc2lvbiBpcyBoaWdocC4K
K1RFU1RfRihDb2xsZWN0RnJhZ21lbnRWYXJpYWJsZXNUZXN0LCBPdXRwdXRWYXJFU1NMM0ZyYWdE
ZXB0aEhpZ2hwKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnRGVwdGhIaWdoU2hhZGVy
ID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBnbF9G
cmFnRGVwdGggPSAwLjc7IgorICAgICAgICAifVxuIjsKKworICAgIFNoQnVpbHRJblJlc291cmNl
cyByZXNvdXJjZXMgPSBtVHJhbnNsYXRvci0+Z2V0UmVzb3VyY2VzKCk7CisgICAgcmVzb3VyY2Vz
LkVYVF9mcmFnX2RlcHRoID0gMTsKKyAgICBpbml0VHJhbnNsYXRvcihyZXNvdXJjZXMpOworCisg
ICAgY29uc3Qgc2g6Ok91dHB1dFZhcmlhYmxlICpvdXRwdXRWYXJpYWJsZSA9IG51bGxwdHI7Cisg
ICAgdmFsaWRhdGVPdXRwdXRWYXJpYWJsZUZvclNoYWRlcihmcmFnRGVwdGhIaWdoU2hhZGVyLCAw
dSwgImdsX0ZyYWdEZXB0aCIsICZvdXRwdXRWYXJpYWJsZSk7CisgICAgQVNTRVJUX05FKG91dHB1
dFZhcmlhYmxlLCBudWxscHRyKTsKKyAgICBFWFBFQ1RfRVEoMHUsIG91dHB1dFZhcmlhYmxlLT5h
cnJheVNpemUpOworICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRkxPQVQsIG91dHB1dFZhcmlhYmxl
LT50eXBlKTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0hJR0hfRkxPQVQsIG91dHB1dFZhcmlh
YmxlLT5wcmVjaXNpb24pOworfQorCisvLyBUZXN0IHRoYXQgZ2xfU2Vjb25kYXJ5RnJhZ0NvbG9y
RVhUIGJ1aWx0LWluIHVzYWdlIGluIEVTU0wxIGZyYWdtZW50IHNoYWRlciBpcyByZWZsZWN0ZWQg
aW4gdGhlCisvLyBvdXRwdXQgdmFyaWFibGVzIGxpc3QuCitURVNUX0YoQ29sbGVjdEZyYWdtZW50
VmFyaWFibGVzVGVzdCwgT3V0cHV0VmFyRVNTTDFFWFRCbGVuZEZ1bmNFeHRlbmRlZFNlY29uZGFy
eUZyYWdDb2xvcikKK3sKKyAgICBjb25zdCBjaGFyICpzZWNvbmRhcnlGcmFnQ29sb3JTaGFkZXIg
PQorICAgICAgICAiI2V4dGVuc2lvbiBHTF9FWFRfYmxlbmRfZnVuY19leHRlbmRlZCA6IHJlcXVp
cmVcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidm9p
ZCBtYWluKCkge1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgor
ICAgICAgICAiICAgZ2xfU2Vjb25kYXJ5RnJhZ0NvbG9yRVhUID0gdmVjNCgxLjApO1xuIgorICAg
ICAgICAifVxuIjsKKworICAgIGNvbnN0IHVuc2lnbmVkIGludCBrTWF4RHJhd0J1ZmZlcnMgPSAz
dTsKKyAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgcmVzb3VyY2VzICAgICAgID0gbVRyYW5zbGF0b3It
PmdldFJlc291cmNlcygpOworICAgIHJlc291cmNlcy5FWFRfYmxlbmRfZnVuY19leHRlbmRlZCAg
PSAxOworICAgIHJlc291cmNlcy5FWFRfZHJhd19idWZmZXJzICAgICAgICAgPSAxOworICAgIHJl
c291cmNlcy5NYXhEcmF3QnVmZmVycyAgICAgICAgICAgPSBrTWF4RHJhd0J1ZmZlcnM7CisgICAg
cmVzb3VyY2VzLk1heER1YWxTb3VyY2VEcmF3QnVmZmVycyA9IHJlc291cmNlcy5NYXhEcmF3QnVm
ZmVyczsKKyAgICBpbml0VHJhbnNsYXRvcihyZXNvdXJjZXMpOworCisgICAgY29uc3Qgc2g6Ok91
dHB1dFZhcmlhYmxlICpvdXRwdXRWYXJpYWJsZSA9IG51bGxwdHI7CisgICAgdmFsaWRhdGVPdXRw
dXRWYXJpYWJsZUZvclNoYWRlcihzZWNvbmRhcnlGcmFnQ29sb3JTaGFkZXIsIDB1LCAiZ2xfRnJh
Z0NvbG9yIiwgJm91dHB1dFZhcmlhYmxlKTsKKyAgICBBU1NFUlRfTkUob3V0cHV0VmFyaWFibGUs
IG51bGxwdHIpOworICAgIEVYUEVDVF9FUSgwdSwgb3V0cHV0VmFyaWFibGUtPmFycmF5U2l6ZSk7
CisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GTE9BVF9WRUM0LCBvdXRwdXRWYXJpYWJsZS0+dHlw
ZSk7CisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9NRURJVU1fRkxPQVQsIG91dHB1dFZhcmlhYmxl
LT5wcmVjaXNpb24pOworCisgICAgb3V0cHV0VmFyaWFibGUgPSBudWxscHRyOworICAgIHZhbGlk
YXRlT3V0cHV0VmFyaWFibGVGb3JTaGFkZXIoc2Vjb25kYXJ5RnJhZ0NvbG9yU2hhZGVyLCAxdSwg
ImdsX1NlY29uZGFyeUZyYWdDb2xvckVYVCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmb3V0cHV0VmFyaWFibGUpOworICAgIEFTU0VSVF9ORShvdXRwdXRWYXJpYWJsZSwg
bnVsbHB0cik7CisgICAgRVhQRUNUX0VRKDB1LCBvdXRwdXRWYXJpYWJsZS0+YXJyYXlTaXplKTsK
KyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZMT0FUX1ZFQzQsIG91dHB1dFZhcmlhYmxlLT50eXBl
KTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX01FRElVTV9GTE9BVCwgb3V0cHV0VmFyaWFibGUt
PnByZWNpc2lvbik7Cit9CisKKy8vIFRlc3QgdGhhdCBnbF9TZWNvbmRhcnlGcmFnRGF0YUVYVCBi
dWlsdC1pbiB1c2FnZSBpbiBFU1NMMSBmcmFnbWVudCBzaGFkZXIgaXMgcmVmbGVjdGVkIGluIHRo
ZQorLy8gb3V0cHV0IHZhcmlhYmxlcyBsaXN0LgorVEVTVF9GKENvbGxlY3RGcmFnbWVudFZhcmlh
Ymxlc1Rlc3QsIE91dHB1dFZhckVTU0wxRVhUQmxlbmRGdW5jRXh0ZW5kZWRTZWNvbmRhcnlGcmFn
RGF0YSkKK3sKKyAgICBjb25zdCBjaGFyICpzZWNvbmRhcnlGcmFnRGF0YVNoYWRlciA9CisgICAg
ICAgICIjZXh0ZW5zaW9uIEdMX0VYVF9ibGVuZF9mdW5jX2V4dGVuZGVkIDogcmVxdWlyZVxuIgor
ICAgICAgICAiI2V4dGVuc2lvbiBHTF9FWFRfZHJhd19idWZmZXJzIDogcmVxdWlyZVxuIgorICAg
ICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7
XG4iCisgICAgICAgICIgICBnbF9GcmFnRGF0YVswXSA9IHZlYzQoMS4wKTtcbiIKKyAgICAgICAg
IiAgIGdsX0ZyYWdEYXRhWzFdID0gdmVjNCgwLjUpO1xuIgorICAgICAgICAiICAgZ2xfU2Vjb25k
YXJ5RnJhZ0RhdGFFWFRbMF0gPSB2ZWM0KDEuMCk7XG4iCisgICAgICAgICIgICBnbF9TZWNvbmRh
cnlGcmFnRGF0YUVYVFsxXSA9IHZlYzQoMC44KTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29u
c3QgdW5zaWduZWQgaW50IGtNYXhEcmF3QnVmZmVycyA9IDN1OworICAgIFNoQnVpbHRJblJlc291
cmNlcyByZXNvdXJjZXMgICAgICAgPSBtVHJhbnNsYXRvci0+Z2V0UmVzb3VyY2VzKCk7CisgICAg
cmVzb3VyY2VzLkVYVF9ibGVuZF9mdW5jX2V4dGVuZGVkICA9IDE7CisgICAgcmVzb3VyY2VzLkVY
VF9kcmF3X2J1ZmZlcnMgICAgICAgICA9IDE7CisgICAgcmVzb3VyY2VzLk1heERyYXdCdWZmZXJz
ICAgICAgICAgICA9IGtNYXhEcmF3QnVmZmVyczsKKyAgICByZXNvdXJjZXMuTWF4RHVhbFNvdXJj
ZURyYXdCdWZmZXJzID0gcmVzb3VyY2VzLk1heERyYXdCdWZmZXJzOworICAgIGluaXRUcmFuc2xh
dG9yKHJlc291cmNlcyk7CisKKyAgICBjb25zdCBzaDo6T3V0cHV0VmFyaWFibGUgKm91dHB1dFZh
cmlhYmxlID0gbnVsbHB0cjsKKyAgICB2YWxpZGF0ZU91dHB1dFZhcmlhYmxlRm9yU2hhZGVyKHNl
Y29uZGFyeUZyYWdEYXRhU2hhZGVyLCAwdSwgImdsX0ZyYWdEYXRhIiwgJm91dHB1dFZhcmlhYmxl
KTsKKyAgICBBU1NFUlRfTkUob3V0cHV0VmFyaWFibGUsIG51bGxwdHIpOworICAgIEVYUEVDVF9F
UShrTWF4RHJhd0J1ZmZlcnMsIG91dHB1dFZhcmlhYmxlLT5hcnJheVNpemUpOworICAgIEVYUEVD
VF9HTEVOVU1fRVEoR0xfRkxPQVRfVkVDNCwgb3V0cHV0VmFyaWFibGUtPnR5cGUpOworICAgIEVY
UEVDVF9HTEVOVU1fRVEoR0xfTUVESVVNX0ZMT0FULCBvdXRwdXRWYXJpYWJsZS0+cHJlY2lzaW9u
KTsKKworICAgIG91dHB1dFZhcmlhYmxlID0gbnVsbHB0cjsKKyAgICB2YWxpZGF0ZU91dHB1dFZh
cmlhYmxlRm9yU2hhZGVyKHNlY29uZGFyeUZyYWdEYXRhU2hhZGVyLCAxdSwgImdsX1NlY29uZGFy
eUZyYWdEYXRhRVhUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRw
dXRWYXJpYWJsZSk7CisgICAgQVNTRVJUX05FKG91dHB1dFZhcmlhYmxlLCBudWxscHRyKTsKKyAg
ICBFWFBFQ1RfRVEoa01heERyYXdCdWZmZXJzLCBvdXRwdXRWYXJpYWJsZS0+YXJyYXlTaXplKTsK
KyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZMT0FUX1ZFQzQsIG91dHB1dFZhcmlhYmxlLT50eXBl
KTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX01FRElVTV9GTE9BVCwgb3V0cHV0VmFyaWFibGUt
PnByZWNpc2lvbik7Cit9CisKK3N0YXRpYyBraHJvbm9zX3VpbnQ2NF90IFNpbXBsZVRlc3RIYXNo
KGNvbnN0IGNoYXIgKnN0ciwgc2l6ZV90IGxlbikKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KGxlbik7Cit9CisKK2NsYXNzIENvbGxlY3RIYXNoZWRWZXJ0ZXhWYXJpYWJsZXNU
ZXN0IDogcHVibGljIENvbGxlY3RWZXJ0ZXhWYXJpYWJsZXNUZXN0Cit7CisgIHByb3RlY3RlZDoK
KyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIC8vIEluaXRpYWxpemUg
dGhlIHRyYW5zbGF0ZSB3aXRoIGEgaGFzaCBmdW5jdGlvbgorICAgICAgICBTaEJ1aWx0SW5SZXNv
dXJjZXMgcmVzb3VyY2VzOworICAgICAgICBTaEluaXRCdWlsdEluUmVzb3VyY2VzKCZyZXNvdXJj
ZXMpOworICAgICAgICByZXNvdXJjZXMuSGFzaEZ1bmN0aW9uID0gU2ltcGxlVGVzdEhhc2g7Cisg
ICAgICAgIGluaXRUcmFuc2xhdG9yKHJlc291cmNlcyk7CisgICAgfQorfTsKKworVEVTVF9GKENv
bGxlY3RIYXNoZWRWZXJ0ZXhWYXJpYWJsZXNUZXN0LCBJbnN0YW5jZWRJbnRlcmZhY2VCbG9jaykK
K3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJz
aW9uIDMwMCBlc1xuIgorICAgICAgICAidW5pZm9ybSBibG9ja05hbWUge1xuIgorICAgICAgICAi
ICBmbG9hdCBmaWVsZDtcbiIKKyAgICAgICAgIn0gYmxvY2tJbnN0YW5jZTsiCisgICAgICAgICJ2
b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBnbF9Qb3NpdGlvbiA9IHZlYzQoYmxvY2tJbnN0
YW5jZS5maWVsZCwgMC4wLCAwLjAsIDEuMCk7XG4iCisgICAgICAgICJ9XG4iOworCisgICAgY29t
cGlsZShzaGFkZXJTdHJpbmcpOworCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OkludGVyZmFj
ZUJsb2NrPiAmaW50ZXJmYWNlQmxvY2tzID0gbVRyYW5zbGF0b3ItPmdldEludGVyZmFjZUJsb2Nr
cygpOworICAgIEFTU0VSVF9FUSgxdSwgaW50ZXJmYWNlQmxvY2tzLnNpemUoKSk7CisKKyAgICBj
b25zdCBzaDo6SW50ZXJmYWNlQmxvY2sgJmludGVyZmFjZUJsb2NrID0gaW50ZXJmYWNlQmxvY2tz
WzBdOworCisgICAgRVhQRUNUX0VRKDB1LCBpbnRlcmZhY2VCbG9jay5hcnJheVNpemUpOworICAg
IEVYUEVDVF9GQUxTRShpbnRlcmZhY2VCbG9jay5pc1Jvd01ham9yTGF5b3V0KTsKKyAgICBFWFBF
Q1RfRVEoc2g6OkJMT0NLTEFZT1VUX1NIQVJFRCwgaW50ZXJmYWNlQmxvY2subGF5b3V0KTsKKyAg
ICBFWFBFQ1RfRVEoImJsb2NrTmFtZSIsIGludGVyZmFjZUJsb2NrLm5hbWUpOworICAgIEVYUEVD
VF9FUSgiYmxvY2tJbnN0YW5jZSIsIGludGVyZmFjZUJsb2NrLmluc3RhbmNlTmFtZSk7CisgICAg
RVhQRUNUX0VRKCJ3ZWJnbF85IiwgaW50ZXJmYWNlQmxvY2subWFwcGVkTmFtZSk7CisgICAgRVhQ
RUNUX1RSVUUoaW50ZXJmYWNlQmxvY2suc3RhdGljVXNlKTsKKworICAgIEFTU0VSVF9FUSgxdSwg
aW50ZXJmYWNlQmxvY2suZmllbGRzLnNpemUoKSk7CisKKyAgICBjb25zdCBzaDo6SW50ZXJmYWNl
QmxvY2tGaWVsZCAmZmllbGQgPSBpbnRlcmZhY2VCbG9jay5maWVsZHNbMF07CisKKyAgICBFWFBF
Q1RfR0xFTlVNX0VRKEdMX0hJR0hfRkxPQVQsIGZpZWxkLnByZWNpc2lvbik7CisgICAgRVhQRUNU
X1RSVUUoZmllbGQuc3RhdGljVXNlKTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZMT0FULCBm
aWVsZC50eXBlKTsKKyAgICBFWFBFQ1RfRVEoImZpZWxkIiwgZmllbGQubmFtZSk7CisgICAgRVhQ
RUNUX0VRKCJ3ZWJnbF81IiwgZmllbGQubWFwcGVkTmFtZSk7CisgICAgRVhQRUNUX0ZBTFNFKGZp
ZWxkLmlzUm93TWFqb3JMYXlvdXQpOworICAgIEVYUEVDVF9UUlVFKGZpZWxkLmZpZWxkcy5lbXB0
eSgpKTsKK30KKworVEVTVF9GKENvbGxlY3RIYXNoZWRWZXJ0ZXhWYXJpYWJsZXNUZXN0LCBTdHJ1
Y3RVbmlmb3JtKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAg
ICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJzdHJ1Y3Qgc1R5cGUge1xuIgorICAg
ICAgICAiICBmbG9hdCBmaWVsZDtcbiIKKyAgICAgICAgIn07IgorICAgICAgICAidW5pZm9ybSBz
VHlwZSB1OyIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGdsX1Bvc2l0
aW9uID0gdmVjNCh1LmZpZWxkLCAwLjAsIDAuMCwgMS4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisK
KyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisKKyAgICBjb25zdCBhdXRvICZ1bmlmb3JtcyA9
IG1UcmFuc2xhdG9yLT5nZXRVbmlmb3JtcygpOworICAgIEFTU0VSVF9FUSgxdSwgdW5pZm9ybXMu
c2l6ZSgpKTsKKworICAgIGNvbnN0IHNoOjpVbmlmb3JtICZ1bmlmb3JtID0gdW5pZm9ybXNbMF07
CisKKyAgICBFWFBFQ1RfRVEoMHUsIHVuaWZvcm0uYXJyYXlTaXplKTsKKyAgICBFWFBFQ1RfRVEo
InUiLCB1bmlmb3JtLm5hbWUpOworICAgIEVYUEVDVF9FUSgid2ViZ2xfMSIsIHVuaWZvcm0ubWFw
cGVkTmFtZSk7CisgICAgRVhQRUNUX1RSVUUodW5pZm9ybS5zdGF0aWNVc2UpOworCisgICAgQVNT
RVJUX0VRKDF1LCB1bmlmb3JtLmZpZWxkcy5zaXplKCkpOworCisgICAgY29uc3Qgc2g6OlNoYWRl
clZhcmlhYmxlICZmaWVsZCA9IHVuaWZvcm0uZmllbGRzWzBdOworCisgICAgRVhQRUNUX0dMRU5V
TV9FUShHTF9ISUdIX0ZMT0FULCBmaWVsZC5wcmVjaXNpb24pOworICAgIC8vIEVYUEVDVF9UUlVF
KGZpZWxkLnN0YXRpY1VzZSk7IC8vIHdlIGRvbid0IHlldCBzdXBwb3J0IHN0cnVjdCBzdGF0aWMg
dXNlCisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GTE9BVCwgZmllbGQudHlwZSk7CisgICAgRVhQ
RUNUX0VRKCJmaWVsZCIsIGZpZWxkLm5hbWUpOworICAgIEVYUEVDVF9FUSgid2ViZ2xfNSIsIGZp
ZWxkLm1hcHBlZE5hbWUpOworICAgIEVYUEVDVF9UUlVFKGZpZWxkLmZpZWxkcy5lbXB0eSgpKTsK
K30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0
cy9Db25zdGFudEZvbGRpbmdfdGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0NvbnN0YW50Rm9sZGluZ190ZXN0LmNw
cAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29t
cGlsZXJfdGVzdHMvQ29uc3RhbnRGb2xkaW5nX3Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTAyNiBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBDb25zdGFudEZvbGRpbmdfdGVzdC5jcHA6
CisvLyAgIFRlc3RzIGZvciBjb25zdGFudCBmb2xkaW5nCisvLworCisjaW5jbHVkZSA8dmVjdG9y
PgorCisjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2lu
Y2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0
b3IvUG9vbEFsbG9jLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9y
RVNTTC5oIgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIENvbnN0YW50RmluZGVyIDog
cHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKK3sKKyAgcHVibGljOgorICAgIENvbnN0YW50RmluZGVy
KGNvbnN0IHN0ZDo6dmVjdG9yPFQ+ICZjb25zdGFudFZlY3RvcikKKyAgICAgICAgOiBUSW50ZXJt
VHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSksCisgICAgICAgICAgbUNvbnN0YW50VmVjdG9y
KGNvbnN0YW50VmVjdG9yKSwKKyAgICAgICAgICBtRmF1bHRUb2xlcmFuY2UoVCgpKSwKKyAgICAg
ICAgICBtRm91bmQoZmFsc2UpCisgICAge30KKworICAgIENvbnN0YW50RmluZGVyKGNvbnN0IHN0
ZDo6dmVjdG9yPFQ+ICZjb25zdGFudFZlY3RvciwgY29uc3QgVCAmZmF1bHRUb2xlcmFuY2UpCisg
ICAgICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2UpLAorICAgICAgICBt
Q29uc3RhbnRWZWN0b3IoY29uc3RhbnRWZWN0b3IpLAorICAgICAgICBtRmF1bHRUb2xlcmFuY2Uo
ZmF1bHRUb2xlcmFuY2UpLAorICAgICAgICBtRm91bmQoZmFsc2UpCisgICAge30KKworICAgIENv
bnN0YW50RmluZGVyKGNvbnN0IFQgJnZhbHVlKQorICAgICAgICA6IFRJbnRlcm1UcmF2ZXJzZXIo
dHJ1ZSwgZmFsc2UsIGZhbHNlKSwKKyAgICAgICAgICBtRmF1bHRUb2xlcmFuY2UoVCgpKSwKKyAg
ICAgICAgICBtRm91bmQoZmFsc2UpCisgICAgeworICAgICAgICBtQ29uc3RhbnRWZWN0b3IucHVz
aF9iYWNrKHZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIHZpc2l0Q29uc3RhbnRVbmlvbihUSW50
ZXJtQ29uc3RhbnRVbmlvbiAqbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLT5nZXRUeXBl
KCkuZ2V0T2JqZWN0U2l6ZSgpID09IG1Db25zdGFudFZlY3Rvci5zaXplKCkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGJvb2wgZm91bmQgPSB0cnVlOworICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtQ29uc3RhbnRWZWN0b3Iuc2l6ZSgpOyBpKyspCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFpc0VxdWFsKG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKClb
aV0sIG1Db25zdGFudFZlY3RvcltpXSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBmb3VuZCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZm91bmQpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgbUZvdW5kID0gZm91bmQ7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBib29sIGZvdW5kKCkgY29uc3QgeyByZXR1cm4gbUZv
dW5kOyB9CisKKyAgcHJpdmF0ZToKKyAgICBib29sIGlzRXF1YWwoY29uc3QgVENvbnN0YW50VW5p
b24gJm5vZGUsIGNvbnN0IGZsb2F0ICZ2YWx1ZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtRmF1bHRUb2xlcmFuY2UgPj0gZmFic2Yobm9kZS5nZXRGQ29uc3QoKSAtIHZhbHVlKTsKKyAg
ICB9CisKKyAgICBib29sIGlzRXF1YWwoY29uc3QgVENvbnN0YW50VW5pb24gJm5vZGUsIGNvbnN0
IGludCAmdmFsdWUpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobUZhdWx0VG9sZXJhbmNl
IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSk7CisgICAgICAgIC8vIGFicygpIHJl
dHVybnMgMCBhdCBsZWFzdCBvbiBzb21lIHBsYXRmb3JtcyB3aGVuIHRoZSBtaW5pbXVtIGludCB2
YWx1ZSBpcyBwYXNzZWQgaW4gKGl0CisgICAgICAgIC8vIGRvZXNuJ3QgaGF2ZSBhIHBvc2l0aXZl
IGNvdW50ZXJwYXJ0KS4KKyAgICAgICAgcmV0dXJuIG1GYXVsdFRvbGVyYW5jZSA+PSBhYnMobm9k
ZS5nZXRJQ29uc3QoKSAtIHZhbHVlKSAmJgorICAgICAgICAgICAgICAgKG5vZGUuZ2V0SUNvbnN0
KCkgLSB2YWx1ZSkgIT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKTsKKyAgICB9CisK
KyAgICBib29sIGlzRXF1YWwoY29uc3QgVENvbnN0YW50VW5pb24gJm5vZGUsIGNvbnN0IHVuc2ln
bmVkIGludCAmdmFsdWUpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobUZhdWx0VG9sZXJh
bmNlIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihzdGQ6Om51bWVyaWNfbGltaXRzPGludD46
Om1heCgpKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KG1GYXVsdFRvbGVyYW5j
ZSkgPj0KKyAgICAgICAgICAgICAgICAgICBhYnMoc3RhdGljX2Nhc3Q8aW50Pihub2RlLmdldFVD
b25zdCgpIC0gdmFsdWUpKSAmJgorICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pihub2Rl
LmdldFVDb25zdCgpIC0gdmFsdWUpICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCk7
CisgICAgfQorCisgICAgYm9vbCBpc0VxdWFsKGNvbnN0IFRDb25zdGFudFVuaW9uICZub2RlLCBj
b25zdCBib29sICZ2YWx1ZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBub2RlLmdldEJD
b25zdCgpID09IHZhbHVlOworICAgIH0KKworICAgIHN0ZDo6dmVjdG9yPFQ+IG1Db25zdGFudFZl
Y3RvcjsKKyAgICBUIG1GYXVsdFRvbGVyYW5jZTsKKyAgICBib29sIG1Gb3VuZDsKK307CisKK2Ns
YXNzIENvbnN0YW50Rm9sZGluZ1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdAoreworICBwdWJs
aWM6CisgICAgQ29uc3RhbnRGb2xkaW5nVGVzdCgpIHt9CisKKyAgcHJvdGVjdGVkOgorICAgIHZp
cnR1YWwgdm9pZCBTZXRVcCgpCisgICAgeworICAgICAgICBhbGxvY2F0b3IucHVzaCgpOworICAg
ICAgICBTZXRHbG9iYWxQb29sQWxsb2NhdG9yKCZhbGxvY2F0b3IpOworICAgICAgICBTaEJ1aWx0
SW5SZXNvdXJjZXMgcmVzb3VyY2VzOworICAgICAgICBTaEluaXRCdWlsdEluUmVzb3VyY2VzKCZy
ZXNvdXJjZXMpOworCisgICAgICAgIG1UcmFuc2xhdG9yRVNTTCA9IG5ldyBUcmFuc2xhdG9yRVNT
TChHTF9GUkFHTUVOVF9TSEFERVIsIFNIX0dMRVMzX1NQRUMpOworICAgICAgICBBU1NFUlRfVFJV
RShtVHJhbnNsYXRvckVTU0wtPkluaXQocmVzb3VyY2VzKSk7CisgICAgfQorCisgICAgdmlydHVh
bCB2b2lkIFRlYXJEb3duKCkKKyAgICB7CisgICAgICAgIGRlbGV0ZSBtVHJhbnNsYXRvckVTU0w7
CisgICAgICAgIFNldEdsb2JhbFBvb2xBbGxvY2F0b3IoTlVMTCk7CisgICAgICAgIGFsbG9jYXRv
ci5wb3AoKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGUoY29uc3Qgc3RkOjpzdHJpbmcmIHNo
YWRlclN0cmluZykKKyAgICB7CisgICAgICAgIGNvbnN0IGNoYXIgKnNoYWRlclN0cmluZ3NbXSA9
IHsgc2hhZGVyU3RyaW5nLmNfc3RyKCkgfTsKKworICAgICAgICBtQVNUUm9vdCA9IG1UcmFuc2xh
dG9yRVNTTC0+Y29tcGlsZVRyZWVGb3JUZXN0aW5nKHNoYWRlclN0cmluZ3MsIDEsIFNIX09CSkVD
VF9DT0RFKTsKKyAgICAgICAgaWYgKCFtQVNUUm9vdCkKKyAgICAgICAgeworICAgICAgICAgICAg
VEluZm9TaW5rICZpbmZvU2luayA9IG1UcmFuc2xhdG9yRVNTTC0+Z2V0SW5mb1NpbmsoKTsKKyAg
ICAgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGludG8gRVNTTCBmYWlsZWQg
IiA8PCBpbmZvU2luay5pbmZvLmNfc3RyKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KKyAgICBib29sIGNvbnN0YW50Rm91bmRJbkFTVChUIGNvbnN0YW50
KQorICAgIHsKKyAgICAgICAgQ29uc3RhbnRGaW5kZXI8VD4gZmluZGVyKGNvbnN0YW50KTsKKyAg
ICAgICAgbUFTVFJvb3QtPnRyYXZlcnNlKCZmaW5kZXIpOworICAgICAgICByZXR1cm4gZmluZGVy
LmZvdW5kKCk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgYm9vbCBj
b25zdGFudFZlY3RvckZvdW5kSW5BU1QoY29uc3Qgc3RkOjp2ZWN0b3I8VD4gJmNvbnN0YW50VmVj
dG9yKQorICAgIHsKKyAgICAgICAgQ29uc3RhbnRGaW5kZXI8VD4gZmluZGVyKGNvbnN0YW50VmVj
dG9yKTsKKyAgICAgICAgbUFTVFJvb3QtPnRyYXZlcnNlKCZmaW5kZXIpOworICAgICAgICByZXR1
cm4gZmluZGVyLmZvdW5kKCk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cisg
ICAgYm9vbCBjb25zdGFudENvbHVtbk1ham9yTWF0cml4Rm91bmRJbkFTVChjb25zdCBzdGQ6OnZl
Y3RvcjxUPiAmY29uc3RhbnRNYXRyaXgpCisgICAgeworICAgICAgICByZXR1cm4gY29uc3RhbnRW
ZWN0b3JGb3VuZEluQVNUKGNvbnN0YW50TWF0cml4KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KKyAgICBib29sIGNvbnN0YW50VmVjdG9yTmVhckZvdW5kSW5BU1QoY29uc3Qg
c3RkOjp2ZWN0b3I8VD4gJmNvbnN0YW50VmVjdG9yLCBjb25zdCBUICZmYXVsdFRvbGVyYW5jZSkK
KyAgICB7CisgICAgICAgIENvbnN0YW50RmluZGVyPFQ+IGZpbmRlcihjb25zdGFudFZlY3Rvciwg
ZmF1bHRUb2xlcmFuY2UpOworICAgICAgICBtQVNUUm9vdC0+dHJhdmVyc2UoJmZpbmRlcik7Cisg
ICAgICAgIHJldHVybiBmaW5kZXIuZm91bmQoKTsKKyAgICB9CisKKyAgcHJpdmF0ZToKKyAgICBU
cmFuc2xhdG9yRVNTTCAqbVRyYW5zbGF0b3JFU1NMOworICAgIFRJbnRlcm1Ob2RlICptQVNUUm9v
dDsKKworICAgIFRQb29sQWxsb2NhdG9yIGFsbG9jYXRvcjsKK307CisKK1RFU1RfRihDb25zdGFu
dEZvbGRpbmdUZXN0LCBGb2xkSW50ZWdlckFkZCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAm
c2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgaW50IG15X0ludDtcbiIKKyAg
ICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGNvbnN0IGludCBpID0gMTEyNCAr
IDU7XG4iCisgICAgICAgICIgICBteV9JbnQgPSBpO1xuIgorICAgICAgICAifVxuIjsKKyAgICBj
b21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX0ZBTFNFKGNvbnN0YW50Rm91bmRJbkFT
VCgxMTI0KSk7CisgICAgQVNTRVJUX0ZBTFNFKGNvbnN0YW50Rm91bmRJbkFTVCg1KSk7CisgICAg
QVNTRVJUX1RSVUUoY29uc3RhbnRGb3VuZEluQVNUKDExMjkpKTsKK30KKworVEVTVF9GKENvbnN0
YW50Rm9sZGluZ1Rlc3QsIEZvbGRJbnRlZ2VyU3ViKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCBpbnQgbXlfSW50O1xuIgor
ICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgY29uc3QgaW50IGkgPSAxMTI0
IC0gNTtcbiIKKyAgICAgICAgIiAgIG15X0ludCA9IGk7XG4iCisgICAgICAgICJ9XG4iOworICAg
IGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBBU1NFUlRfRkFMU0UoY29uc3RhbnRGb3VuZElu
QVNUKDExMjQpKTsKKyAgICBBU1NFUlRfRkFMU0UoY29uc3RhbnRGb3VuZEluQVNUKDUpKTsKKyAg
ICBBU1NFUlRfVFJVRShjb25zdGFudEZvdW5kSW5BU1QoMTExOSkpOworfQorCitURVNUX0YoQ29u
c3RhbnRGb2xkaW5nVGVzdCwgRm9sZEludGVnZXJNdWwpCit7CisgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAg
InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0IGludCBteV9JbnQ7XG4i
CisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBjb25zdCBpbnQgaSA9IDEx
MjQgKiA1O1xuIgorICAgICAgICAiICAgbXlfSW50ID0gaTtcbiIKKyAgICAgICAgIn1cbiI7Cisg
ICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VSVF9GQUxTRShjb25zdGFudEZvdW5k
SW5BU1QoMTEyNCkpOworICAgIEFTU0VSVF9GQUxTRShjb25zdGFudEZvdW5kSW5BU1QoNSkpOwor
ICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Rm91bmRJbkFTVCg1NjIwKSk7Cit9CisKK1RFU1RfRihD
b25zdGFudEZvbGRpbmdUZXN0LCBGb2xkSW50ZWdlckRpdikKK3sKKyAgICBjb25zdCBzdGQ6OnN0
cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAg
ICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgaW50IG15X0ludDtc
biIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGNvbnN0IGludCBpID0g
MTEyNCAvIDU7XG4iCisgICAgICAgICIgICBteV9JbnQgPSBpO1xuIgorICAgICAgICAifVxuIjsK
KyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX0ZBTFNFKGNvbnN0YW50Rm91
bmRJbkFTVCgxMTI0KSk7CisgICAgQVNTRVJUX0ZBTFNFKGNvbnN0YW50Rm91bmRJbkFTVCg1KSk7
CisgICAgLy8gUm91bmRpbmcgbW9kZSBvZiBkaXZpc2lvbiBpcyB1bmRlZmluZWQgaW4gdGhlIHNw
ZWMgYnV0IEFOR0xFIGNhbiBiZSBleHBlY3RlZCB0byByb3VuZCBkb3duLgorICAgIEFTU0VSVF9U
UlVFKGNvbnN0YW50Rm91bmRJbkFTVCgyMjQpKTsKK30KKworVEVTVF9GKENvbnN0YW50Rm9sZGlu
Z1Rlc3QsIEZvbGRJbnRlZ2VyTW9kdWx1cykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hh
ZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgaW50IG15X0ludDtcbiIKKyAgICAg
ICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGNvbnN0IGludCBpID0gMTEyNCAlIDU7
XG4iCisgICAgICAgICIgICBteV9JbnQgPSBpO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21w
aWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX0ZBTFNFKGNvbnN0YW50Rm91bmRJbkFTVCgx
MTI0KSk7CisgICAgQVNTRVJUX0ZBTFNFKGNvbnN0YW50Rm91bmRJbkFTVCg1KSk7CisgICAgQVNT
RVJUX1RSVUUoY29uc3RhbnRGb3VuZEluQVNUKDQpKTsKK30KKworVEVTVF9GKENvbnN0YW50Rm9s
ZGluZ1Rlc3QsIEZvbGRWZWN0b3JDcm9zc1Byb2R1Y3QpCit7CisgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAg
InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0IHZlYzMgbXlfVmVjMzsi
CisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBjb25zdCB2ZWMzIHYzID0g
Y3Jvc3ModmVjMygxLjBmLCAxLjBmLCAxLjBmKSwgdmVjMygxLjBmLCAtMS4wZiwgMS4wZikpO1xu
IgorICAgICAgICAiICAgbXlfVmVjMyA9IHYzO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21w
aWxlKHNoYWRlclN0cmluZyk7CisgICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IGlucHV0MSgzLCAxLjBm
KTsKKyAgICBBU1NFUlRfRkFMU0UoY29uc3RhbnRWZWN0b3JGb3VuZEluQVNUKGlucHV0MSkpOwor
ICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiBpbnB1dDI7CisgICAgaW5wdXQyLnB1c2hfYmFjaygxLjBm
KTsKKyAgICBpbnB1dDIucHVzaF9iYWNrKC0xLjBmKTsKKyAgICBpbnB1dDIucHVzaF9iYWNrKDEu
MGYpOworICAgIEFTU0VSVF9GQUxTRShjb25zdGFudFZlY3RvckZvdW5kSW5BU1QoaW5wdXQyKSk7
CisgICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IHJlc3VsdDsKKyAgICByZXN1bHQucHVzaF9iYWNrKDIu
MGYpOworICAgIHJlc3VsdC5wdXNoX2JhY2soMC4wZik7CisgICAgcmVzdWx0LnB1c2hfYmFjaygt
Mi4wZik7CisgICAgQVNTRVJUX1RSVUUoY29uc3RhbnRWZWN0b3JGb3VuZEluQVNUKHJlc3VsdCkp
OworfQorCisvLyBGb2xkTXhOTWF0cml4SW52ZXJzZSB0ZXN0cyBjaGVjayBpZiB0aGUgbWF0cml4
ICdpbnZlcnNlJyBvcGVyYXRpb24KKy8vIG9uIE14TiBtYXRyaXggaXMgY29uc3RhbnQgZm9sZGVk
IHdoZW4gYXJndW1lbnQgaXMgY29uc3RhbnQgZXhwcmVzc2lvbiBhbmQgYWxzbworLy8gY2hlY2tz
IHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUgcmVzdWx0IHJldHVybmVkIGJ5IHRoZSBjb25zdGFudCBm
b2xkaW5nIG9wZXJhdGlvbi4KKy8vIEFsbCB0aGUgbWF0cmljZXMgaW5jbHVkaW5nIG1hdHJpY2Vz
IGluIHRoZSBzaGFkZXIgY29kZSBhcmUgaW4gY29sdW1uLW1ham9yIG9yZGVyLgorVEVTVF9GKENv
bnN0YW50Rm9sZGluZ1Rlc3QsIEZvbGQyeDJNYXRyaXhJbnZlcnNlKQoreworICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisg
ICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgImluIGZsb2F0IGk7
XG4iCisgICAgICAgICJvdXQgdmVjMiBteV9WZWM7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7
XG4iCisgICAgICAgICIgICBjb25zdCBtYXQyIG0yID0gaW52ZXJzZShtYXQyKDIuMGYsIDMuMGYs
XG4iCisgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuMGYsIDcuMGYp
KTtcbiIKKyAgICAgICAgIiAgIG1hdDIgbSA9IG0yICogbWF0MihpKTtcbiIKKyAgICAgICAgIiAg
IG15X1ZlYyA9IG1bMF07XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3Ry
aW5nKTsKKyAgICBmbG9hdCBpbnB1dEVsZW1lbnRzW10gPQorICAgIHsKKyAgICAgICAgMi4wZiwg
My4wZiwKKyAgICAgICAgNS4wZiwgNy4wZgorICAgIH07CisgICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+
IGlucHV0KGlucHV0RWxlbWVudHMsIGlucHV0RWxlbWVudHMgKyA0KTsKKyAgICBBU1NFUlRfRkFM
U0UoY29uc3RhbnRDb2x1bW5NYWpvck1hdHJpeEZvdW5kSW5BU1QoaW5wdXQpKTsKKyAgICBmbG9h
dCBvdXRwdXRFbGVtZW50c1tdID0KKyAgICB7CisgICAgICAgIC03LjBmLCAzLjBmLAorICAgICAg
ICA1LjBmLCAtMi4wZgorICAgIH07CisgICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IHJlc3VsdChvdXRw
dXRFbGVtZW50cywgb3V0cHV0RWxlbWVudHMgKyA0KTsKKyAgICBBU1NFUlRfVFJVRShjb25zdGFu
dENvbHVtbk1ham9yTWF0cml4Rm91bmRJbkFTVChyZXN1bHQpKTsKK30KKworLy8gQ2hlY2sgaWYg
dGhlIG1hdHJpeCAnaW52ZXJzZScgb3BlcmF0aW9uIG9uIDN4MyBtYXRyaXggaXMgY29uc3RhbnQg
Zm9sZGVkLgorVEVTVF9GKENvbnN0YW50Rm9sZGluZ1Rlc3QsIEZvbGQzeDNNYXRyaXhJbnZlcnNl
KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3Zl
cnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAg
ICAgICAgImluIGZsb2F0IGk7XG4iCisgICAgICAgICJvdXQgdmVjMyBteV9WZWM7XG4iCisgICAg
ICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBjb25zdCBtYXQzIG0zID0gaW52ZXJz
ZShtYXQzKDExLjBmLCAxMy4wZiwgMTkuMGYsXG4iCisgICAgICAgICIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIzLjBmLCAyOS4wZiwgMzEuMGYsXG4iCisgICAgICAgICIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDM3LjBmLCA0MS4wZiwgNDMuMGYpKTtcbiIKKyAgICAg
ICAgIiAgIG1hdDMgbSA9IG0zICogbWF0MyhpKTtcbiIKKyAgICAgICAgIiAgIG15X1ZlYyA9IG0z
WzBdO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAg
ZmxvYXQgaW5wdXRFbGVtZW50c1tdID0KKyAgICB7CisgICAgICAgIDExLjBmLCAxMy4wZiwgMTku
MGYsCisgICAgICAgIDIzLjBmLCAyOS4wZiwgMzEuMGYsCisgICAgICAgIDM3LjBmLCA0MS4wZiwg
NDMuMGYKKyAgICB9OworICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiBpbnB1dChpbnB1dEVsZW1lbnRz
LCBpbnB1dEVsZW1lbnRzICsgOSk7CisgICAgQVNTRVJUX0ZBTFNFKGNvbnN0YW50VmVjdG9yRm91
bmRJbkFTVChpbnB1dCkpOworICAgIGZsb2F0IG91dHB1dEVsZW1lbnRzW10gPQorICAgIHsKKyAg
ICAgICAgMy4wZiAvIDg1LjBmLCAtMTEuMGYgLyAzNC4wZiwgMzcuMGYgLyAxNzAuMGYsCisgICAg
ICAgIC03OS4wZiAvIDM0MC4wZiwgMjMuMGYgLyA2OC4wZiwgLTEyLjBmIC8gODUuMGYsCisgICAg
ICAgIDEzLjBmIC8gNjguMGYsIC0zLjBmIC8gNjguMGYsIC0xLjBmIC8gMzQuMGYKKyAgICB9Owor
ICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiByZXN1bHQob3V0cHV0RWxlbWVudHMsIG91dHB1dEVsZW1l
bnRzICsgOSk7CisgICAgY29uc3QgZmxvYXQgZmxvYXRGYXVsdFRvbGVyYW5jZSA9IDAuMDAwMDAx
ZjsKKyAgICBBU1NFUlRfVFJVRShjb25zdGFudFZlY3Rvck5lYXJGb3VuZEluQVNUKHJlc3VsdCwg
ZmxvYXRGYXVsdFRvbGVyYW5jZSkpOworfQorCisvLyBDaGVjayBpZiB0aGUgbWF0cml4ICdpbnZl
cnNlJyBvcGVyYXRpb24gb24gNHg0IG1hdHJpeCBpcyBjb25zdGFudCBmb2xkZWQuCitURVNUX0Yo
Q29uc3RhbnRGb2xkaW5nVGVzdCwgRm9sZDR4NE1hdHJpeEludmVyc2UpCit7CisgICAgY29uc3Qg
c3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIK
KyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAiaW4gZmxvYXQg
aTtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X1ZlYztcbiIKKyAgICAgICAgInZvaWQgbWFpbigp
IHtcbiIKKyAgICAgICAgIiAgIGNvbnN0IG1hdDQgbTQgPSBpbnZlcnNlKG1hdDQoMjkuMGYsIDMx
LjBmLCAzNy4wZiwgNDEuMGYsXG4iCisgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDQzLjBmLCA0Ny4wZiwgNTMuMGYsIDU5LjBmLFxuIgorICAgICAgICAiICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA2MS4wZiwgNjcuMGYsIDcxLjBmLCA3My4wZixcbiIKKyAg
ICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzkuMGYsIDgzLjBmLCA4OS4w
ZiwgOTcuMGYpKTtcbiIKKyAgICAgICAgIiAgIG1hdDQgbSA9IG00ICogbWF0NChpKTtcbiIKKyAg
ICAgICAgIiAgIG15X1ZlYyA9IG1bMF07XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUo
c2hhZGVyU3RyaW5nKTsKKyAgICBmbG9hdCBpbnB1dEVsZW1lbnRzW10gPQorICAgIHsKKyAgICAg
ICAgMjkuMGYsIDMxLjBmLCAzNy4wZiwgNDEuMGYsCisgICAgICAgIDQzLjBmLCA0Ny4wZiwgNTMu
MGYsIDU5LjBmLAorICAgICAgICA2MS4wZiwgNjcuMGYsIDcxLjBmLCA3My4wZiwKKyAgICAgICAg
NzkuMGYsIDgzLjBmLCA4OS4wZiwgOTcuMGYKKyAgICB9OworICAgIHN0ZDo6dmVjdG9yPGZsb2F0
PiBpbnB1dChpbnB1dEVsZW1lbnRzLCBpbnB1dEVsZW1lbnRzICsgMTYpOworICAgIEFTU0VSVF9G
QUxTRShjb25zdGFudFZlY3RvckZvdW5kSW5BU1QoaW5wdXQpKTsKKyAgICBmbG9hdCBvdXRwdXRF
bGVtZW50c1tdID0KKyAgICB7CisgICAgICAgIDQzLjBmIC8gMTI2LjBmLCAtMTEuMGYgLyAyMS4w
ZiwgLTIuMGYgLyAyMS4wZiwgMzEuMGYgLyAxMjYuMGYsCisgICAgICAgIC01LjBmIC8gNy4wZiwg
OS4wZiAvIDE0LjBmLCAxLjBmIC8gMTQuMGYsIC0xLjBmIC8gNy4wZiwKKyAgICAgICAgODUuMGYg
LyAxMjYuMGYsIC0xMS4wZiAvIDIxLjBmLCA0My4wZiAvIDIxMC4wZiwgLTM4LjBmIC8gMzE1LjBm
LAorICAgICAgICAtMi4wZiAvIDcuMGYsIDUuMGYgLyAxNC4wZiwgLTYuMGYgLyAzNS4wZiwgMy4w
ZiAvIDcwLjBmCisgICAgfTsKKyAgICBzdGQ6OnZlY3RvcjxmbG9hdD4gcmVzdWx0KG91dHB1dEVs
ZW1lbnRzLCBvdXRwdXRFbGVtZW50cyArIDE2KTsKKyAgICBjb25zdCBmbG9hdCBmbG9hdEZhdWx0
VG9sZXJhbmNlID0gMC4wMDAwMWY7CisgICAgQVNTRVJUX1RSVUUoY29uc3RhbnRWZWN0b3JOZWFy
Rm91bmRJbkFTVChyZXN1bHQsIGZsb2F0RmF1bHRUb2xlcmFuY2UpKTsKK30KKworLy8gRm9sZE14
Tk1hdHJpeERldGVybWluYW50IHRlc3RzIGNoZWNrIGlmIHRoZSBtYXRyaXggJ2RldGVybWluYW50
JyBvcGVyYXRpb24KKy8vIG9uIE14TiBtYXRyaXggaXMgY29uc3RhbnQgZm9sZGVkIHdoZW4gYXJn
dW1lbnQgaXMgY29uc3RhbnQgZXhwcmVzc2lvbiBhbmQgYWxzbworLy8gY2hlY2tzIHRoZSBjb3Jy
ZWN0bmVzcyBvZiB0aGUgcmVzdWx0IHJldHVybmVkIGJ5IHRoZSBjb25zdGFudCBmb2xkaW5nIG9w
ZXJhdGlvbi4KKy8vIEFsbCB0aGUgbWF0cmljZXMgaW5jbHVkaW5nIG1hdHJpY2VzIGluIHRoZSBz
aGFkZXIgY29kZSBhcmUgaW4gY29sdW1uLW1ham9yIG9yZGVyLgorVEVTVF9GKENvbnN0YW50Rm9s
ZGluZ1Rlc3QsIEZvbGQyeDJNYXRyaXhEZXRlcm1pbmFudCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0
cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAg
ICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgZmxvYXQgbXlfRmxv
YXQ7IgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgY29uc3QgZmxvYXQg
ZiA9IGRldGVybWluYW50KG1hdDIoMi4wZiwgMy4wZixcbiIKKyAgICAgICAgIiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDUuMGYsIDcuMGYpKTtcbiIKKyAgICAgICAgIiAgIG15
X0Zsb2F0ID0gZjtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcp
OworICAgIGZsb2F0IGlucHV0RWxlbWVudHNbXSA9CisgICAgeworICAgICAgICAyLjBmLCAzLjBm
LAorICAgICAgICA1LjBmLCA3LjBmCisgICAgfTsKKyAgICBzdGQ6OnZlY3RvcjxmbG9hdD4gaW5w
dXQoaW5wdXRFbGVtZW50cywgaW5wdXRFbGVtZW50cyArIDQpOworICAgIEFTU0VSVF9GQUxTRShj
b25zdGFudENvbHVtbk1ham9yTWF0cml4Rm91bmRJbkFTVChpbnB1dCkpOworICAgIEFTU0VSVF9U
UlVFKGNvbnN0YW50Rm91bmRJbkFTVCgtMS4wZikpOworfQorCisvLyBDaGVjayBpZiB0aGUgbWF0
cml4ICdkZXRlcm1pbmFudCcgb3BlcmF0aW9uIG9uIDN4MyBtYXRyaXggaXMgY29uc3RhbnQgZm9s
ZGVkLgorVEVTVF9GKENvbnN0YW50Rm9sZGluZ1Rlc3QsIEZvbGQzeDNNYXRyaXhEZXRlcm1pbmFu
dCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2
ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisg
ICAgICAgICJvdXQgZmxvYXQgbXlfRmxvYXQ7IgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgor
ICAgICAgICAiICAgY29uc3QgZmxvYXQgZiA9IGRldGVybWluYW50KG1hdDMoMTEuMGYsIDEzLjBm
LCAxOS4wZixcbiIKKyAgICAgICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDIzLjBmLCAyOS4wZiwgMzEuMGYsXG4iCisgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAzNy4wZiwgNDEuMGYsIDQzLjBmKSk7XG4iCisgICAgICAgICIgICBteV9G
bG9hdCA9IGY7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsK
KyAgICBmbG9hdCBpbnB1dEVsZW1lbnRzW10gPQorICAgIHsKKyAgICAgICAgMTEuMGYsIDEzLjBm
LCAxOS4wZiwKKyAgICAgICAgMjMuMGYsIDI5LjBmLCAzMS4wZiwKKyAgICAgICAgMzcuMGYsIDQx
LjBmLCA0My4wZgorICAgIH07CisgICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IGlucHV0KGlucHV0RWxl
bWVudHMsIGlucHV0RWxlbWVudHMgKyA5KTsKKyAgICBBU1NFUlRfRkFMU0UoY29uc3RhbnRDb2x1
bW5NYWpvck1hdHJpeEZvdW5kSW5BU1QoaW5wdXQpKTsKKyAgICBBU1NFUlRfVFJVRShjb25zdGFu
dEZvdW5kSW5BU1QoLTY4MC4wZikpOworfQorCisvLyBDaGVjayBpZiB0aGUgbWF0cml4ICdkZXRl
cm1pbmFudCcgb3BlcmF0aW9uIG9uIDR4NCBtYXRyaXggaXMgY29uc3RhbnQgZm9sZGVkLgorVEVT
VF9GKENvbnN0YW50Rm9sZGluZ1Rlc3QsIEZvbGQ0eDRNYXRyaXhEZXRlcm1pbmFudCkKK3sKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMw
MCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJv
dXQgZmxvYXQgbXlfRmxvYXQ7IgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAi
ICAgY29uc3QgZmxvYXQgZiA9IGRldGVybWluYW50KG1hdDQoMjkuMGYsIDMxLjBmLCAzNy4wZiwg
NDEuMGYsXG4iCisgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0
My4wZiwgNDcuMGYsIDUzLjBmLCA1OS4wZixcbiIKKyAgICAgICAgIiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDYxLjBmLCA2Ny4wZiwgNzEuMGYsIDczLjBmLFxuIgorICAgICAg
ICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzkuMGYsIDgzLjBmLCA4OS4w
ZiwgOTcuMGYpKTtcbiIKKyAgICAgICAgIiAgIG15X0Zsb2F0ID0gZjtcbiIKKyAgICAgICAgIn1c
biI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIGZsb2F0IGlucHV0RWxlbWVudHNb
XSA9CisgICAgeworICAgICAgICAyOS4wZiwgMzEuMGYsIDM3LjBmLCA0MS4wZiwKKyAgICAgICAg
NDMuMGYsIDQ3LjBmLCA1My4wZiwgNTkuMGYsCisgICAgICAgIDYxLjBmLCA2Ny4wZiwgNzEuMGYs
IDczLjBmLAorICAgICAgICA3OS4wZiwgODMuMGYsIDg5LjBmLCA5Ny4wZgorICAgIH07CisgICAg
c3RkOjp2ZWN0b3I8ZmxvYXQ+IGlucHV0KGlucHV0RWxlbWVudHMsIGlucHV0RWxlbWVudHMgKyAx
Nik7CisgICAgQVNTRVJUX0ZBTFNFKGNvbnN0YW50Q29sdW1uTWFqb3JNYXRyaXhGb3VuZEluQVNU
KGlucHV0KSk7CisgICAgQVNTRVJUX1RSVUUoY29uc3RhbnRGb3VuZEluQVNUKC0yNTIwLjBmKSk7
Cit9CisKKy8vIENoZWNrIGlmIHRoZSBtYXRyaXggJ3RyYW5zcG9zZScgb3BlcmF0aW9uIG9uIDN4
MyBtYXRyaXggaXMgY29uc3RhbnQgZm9sZGVkLgorLy8gQWxsIHRoZSBtYXRyaWNlcyBpbmNsdWRp
bmcgbWF0cmljZXMgaW4gdGhlIHNoYWRlciBjb2RlIGFyZSBpbiBjb2x1bW4tbWFqb3Igb3JkZXIu
CitURVNUX0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwgRm9sZDN4M01hdHJpeFRyYW5zcG9zZSkKK3sK
KyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9u
IDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAg
ICJpbiBmbG9hdCBpO1xuIgorICAgICAgICAib3V0IHZlYzMgbXlfVmVjO1xuIgorICAgICAgICAi
dm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgY29uc3QgbWF0MyBtMyA9IHRyYW5zcG9zZSht
YXQzKDExLjBmLCAxMy4wZiwgMTkuMGYsXG4iCisgICAgICAgICIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMjMuMGYsIDI5LjBmLCAzMS4wZixcbiIKKyAgICAgICAgIiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzNy4wZiwgNDEuMGYsIDQzLjBmKSk7XG4iCisgICAg
ICAgICIgICBtYXQzIG0gPSBtMyAqIG1hdDMoaSk7XG4iCisgICAgICAgICIgICBteV9WZWMgPSBt
WzBdO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAg
ZmxvYXQgaW5wdXRFbGVtZW50c1tdID0KKyAgICB7CisgICAgICAgIDExLjBmLCAxMy4wZiwgMTku
MGYsCisgICAgICAgIDIzLjBmLCAyOS4wZiwgMzEuMGYsCisgICAgICAgIDM3LjBmLCA0MS4wZiwg
NDMuMGYKKyAgICB9OworICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiBpbnB1dChpbnB1dEVsZW1lbnRz
LCBpbnB1dEVsZW1lbnRzICsgOSk7CisgICAgQVNTRVJUX0ZBTFNFKGNvbnN0YW50Q29sdW1uTWFq
b3JNYXRyaXhGb3VuZEluQVNUKGlucHV0KSk7CisgICAgZmxvYXQgb3V0cHV0RWxlbWVudHNbXSA9
CisgICAgeworICAgICAgICAxMS4wZiwgMjMuMGYsIDM3LjBmLAorICAgICAgICAxMy4wZiwgMjku
MGYsIDQxLjBmLAorICAgICAgICAxOS4wZiwgMzEuMGYsIDQzLjBmCisgICAgfTsKKyAgICBzdGQ6
OnZlY3RvcjxmbG9hdD4gcmVzdWx0KG91dHB1dEVsZW1lbnRzLCBvdXRwdXRFbGVtZW50cyArIDkp
OworICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Q29sdW1uTWFqb3JNYXRyaXhGb3VuZEluQVNUKHJl
c3VsdCkpOworfQorCisvLyBUZXN0IHRoYXQgMHhGRkZGRkZGRiB3cmFwcyB0byAtMSB3aGVuIHBh
cnNlZCBhcyBpbnRlZ2VyLgorLy8gVGhpcyBpcyBmZWF0dXJlZCBpbiB0aGUgZXhhbXBsZXMgb2Yg
RVNTTDMgc2VjdGlvbiA0LjEuMy4gRVNTTDMgc2VjdGlvbiAxMi40MgorLy8gbWVhbnMgdGhhdCBh
bnkgMzItYml0IHVuc2lnbmVkIGludGVnZXIgdmFsdWUgaXMgYSB2YWxpZCBsaXRlcmFsLgorVEVT
VF9GKENvbnN0YW50Rm9sZGluZ1Rlc3QsIFBhcnNlV3JhcHBlZEhleEludExpdGVyYWwpCit7Cisg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAz
MDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAi
cHJlY2lzaW9uIGhpZ2hwIGludDtcbiIKKyAgICAgICAgInVuaWZvcm0gaW50IGluSW50O1xuIgor
ICAgICAgICAib3V0IHZlYzQgbXlfVmVjO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgor
ICAgICAgICAiICAgY29uc3QgaW50IGkgPSAweEZGRkZGRkZGO1xuIgorICAgICAgICAiICAgbXlf
VmVjID0gdmVjNChpICogaW5JbnQpO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNo
YWRlclN0cmluZyk7CisgICAgQVNTRVJUX1RSVUUoY29uc3RhbnRGb3VuZEluQVNUKC0xKSk7Cit9
CisKKy8vIFRlc3QgdGhhdCAzMDAwMDAwMDAwIHdyYXBzIHRvIC0xMjk0OTY3Mjk2IHdoZW4gcGFy
c2VkIGFzIGludGVnZXIuCisvLyBUaGlzIGlzIGZlYXR1cmVkIGluIHRoZSBleGFtcGxlcyBvZiBH
TFNMIDQuNSwgYW5kIEVTU0wgYmVoYXZpb3Igc2hvdWxkIG1hdGNoCisvLyBkZXNrdG9wIEdMU0wg
d2hlbiBpdCBjb21lcyB0byBpbnRlZ2VyIHBhcnNpbmcuCitURVNUX0YoQ29uc3RhbnRGb2xkaW5n
VGVzdCwgUGFyc2VXcmFwcGVkRGVjaW1hbEludExpdGVyYWwpCit7CisgICAgY29uc3Qgc3RkOjpz
dHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAg
ICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAicHJlY2lzaW9uIGhpZ2hw
IGludDtcbiIKKyAgICAgICAgInVuaWZvcm0gaW50IGluSW50O1xuIgorICAgICAgICAib3V0IHZl
YzQgbXlfVmVjO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgY29u
c3QgaW50IGkgPSAzMDAwMDAwMDAwO1xuIgorICAgICAgICAiICAgbXlfVmVjID0gdmVjNChpICog
aW5JbnQpO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Cisg
ICAgQVNTRVJUX1RSVUUoY29uc3RhbnRGb3VuZEluQVNUKC0xMjk0OTY3Mjk2KSk7Cit9CisKKy8v
IFRlc3QgdGhhdCAweEZGRkZGRkZGdSBpcyBwYXJzZWQgY29ycmVjdGx5IGFzIGFuIHVuc2lnbmVk
IGludGVnZXIgbGl0ZXJhbC4KKy8vIFRoaXMgaXMgZmVhdHVyZWQgaW4gdGhlIGV4YW1wbGVzIG9m
IEVTU0wzIHNlY3Rpb24gNC4xLjMuIEVTU0wzIHNlY3Rpb24gMTIuNDIKKy8vIG1lYW5zIHRoYXQg
YW55IDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlIGlzIGEgdmFsaWQgbGl0ZXJhbC4KK1RF
U1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBQYXJzZU1heFVpbnRMaXRlcmFsKQoreworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVz
XG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInByZWNp
c2lvbiBoaWdocCBpbnQ7XG4iCisgICAgICAgICJ1bmlmb3JtIHVpbnQgaW5JbnQ7XG4iCisgICAg
ICAgICJvdXQgdmVjNCBteV9WZWM7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAg
ICAgICIgICBjb25zdCB1aW50IGkgPSAweEZGRkZGRkZGdTtcbiIKKyAgICAgICAgIiAgIG15X1Zl
YyA9IHZlYzQoaSAqIGluSW50KTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFk
ZXJTdHJpbmcpOworICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Rm91bmRJbkFTVCgweEZGRkZGRkZG
dSkpOworfQorCisvLyBUZXN0IHRoYXQgdW5hcnkgbWludXMgYXBwbGllZCB0byB1bnNpZ25lZCBp
bnQgaXMgY29uc3RhbnQgZm9sZGVkIGNvcnJlY3RseS4KKy8vIFRoaXMgaXMgZmVhdHVyZWQgaW4g
dGhlIGV4YW1wbGVzIG9mIEVTU0wzIHNlY3Rpb24gNC4xLjMuIEVTU0wzIHNlY3Rpb24gMTIuNDIK
Ky8vIG1lYW5zIHRoYXQgYW55IDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlIGlzIGEgdmFs
aWQgbGl0ZXJhbC4KK1RFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBGb2xkVW5hcnlNaW51c09u
VWludExpdGVyYWwpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Cisg
ICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0O1xuIgorICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGludDtcbiIKKyAgICAgICAgInVuaWZv
cm0gdWludCBpbkludDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X1ZlYztcbiIKKyAgICAgICAg
InZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGNvbnN0IHVpbnQgaSA9IC0xdTtcbiIKKyAg
ICAgICAgIiAgIG15X1ZlYyA9IHZlYzQoaSAqIGluSW50KTtcbiIKKyAgICAgICAgIn1cbiI7Cisg
ICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Rm91bmRJ
bkFTVCgweEZGRkZGRkZGdSkpOworfQorCisvLyBUZXN0IHRoYXQgY29uc3RhbnQgbWF0MiBpbml0
aWFsaXphdGlvbiB3aXRoIGEgbWF0MiBwYXJhbWV0ZXIgd29ya3MgY29ycmVjdGx5LgorVEVTVF9G
KENvbnN0YW50Rm9sZGluZ1Rlc3QsIEZvbGRNYXQyQ29uc3RydWN0b3JUYWtpbmdNYXQyKQorewor
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ1bmlmb3JtIGZsb2F0IG11bHQ7XG4iCisgICAg
ICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBjb25zdCBtYXQyIGNtID0gbWF0Miht
YXQyKDAuMCwgMS4wLCAyLjAsIDMuMCkpO1xuIgorICAgICAgICAiICAgbWF0MiBtID0gY20gKiBt
dWx0O1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChtWzBdLCBtWzFdKTtcbiIK
KyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIGZsb2F0IG91
dHB1dEVsZW1lbnRzW10gPQorICAgIHsKKyAgICAgICAgMC4wZiwgMS4wZiwKKyAgICAgICAgMi4w
ZiwgMy4wZgorICAgIH07CisgICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IHJlc3VsdChvdXRwdXRFbGVt
ZW50cywgb3V0cHV0RWxlbWVudHMgKyA0KTsKKyAgICBBU1NFUlRfVFJVRShjb25zdGFudENvbHVt
bk1ham9yTWF0cml4Rm91bmRJbkFTVChyZXN1bHQpKTsKK30KKworLy8gVGVzdCB0aGF0IGNvbnN0
YW50IG1hdDIgaW5pdGlhbGl6YXRpb24gd2l0aCBhbiBpbnQgcGFyYW1ldGVyIHdvcmtzIGNvcnJl
Y3RseS4KK1RFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBGb2xkTWF0MkNvbnN0cnVjdG9yVGFr
aW5nU2NhbGFyKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAg
ICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ1bmlmb3JtIGZsb2F0
IG11bHQ7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBjb25zdCBt
YXQyIGNtID0gbWF0MigzKTtcbiIKKyAgICAgICAgIiAgIG1hdDIgbSA9IGNtICogbXVsdDtcbiIK
KyAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHZlYzQobVswXSwgbVsxXSk7XG4iCisgICAgICAg
ICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBmbG9hdCBvdXRwdXRFbGVt
ZW50c1tdID0KKyAgICB7CisgICAgICAgIDMuMGYsIDAuMGYsCisgICAgICAgIDAuMGYsIDMuMGYK
KyAgICB9OworICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiByZXN1bHQob3V0cHV0RWxlbWVudHMsIG91
dHB1dEVsZW1lbnRzICsgNCk7CisgICAgQVNTRVJUX1RSVUUoY29uc3RhbnRDb2x1bW5NYWpvck1h
dHJpeEZvdW5kSW5BU1QocmVzdWx0KSk7Cit9CisKKy8vIFRlc3QgdGhhdCBjb25zdGFudCBtYXQy
IGluaXRpYWxpemF0aW9uIHdpdGggYSBtaXggb2YgcGFyYW1ldGVycyB3b3JrcyBjb3JyZWN0bHku
CitURVNUX0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwgRm9sZE1hdDJDb25zdHJ1Y3RvclRha2luZ01p
eCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidW5pZm9ybSBmbG9hdCBtdWx0O1xu
IgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgY29uc3QgbWF0MiBjbSA9
IG1hdDIoLTEsIHZlYzIoMC4wLCAxLjApLCB2ZWM0KDIuMCkpO1xuIgorICAgICAgICAiICAgbWF0
MiBtID0gY20gKiBtdWx0O1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChtWzBd
LCBtWzFdKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwor
ICAgIGZsb2F0IG91dHB1dEVsZW1lbnRzW10gPQorICAgIHsKKyAgICAgICAgLTEuMCwgMC4wZiwK
KyAgICAgICAgMS4wZiwgMi4wZgorICAgIH07CisgICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IHJlc3Vs
dChvdXRwdXRFbGVtZW50cywgb3V0cHV0RWxlbWVudHMgKyA0KTsKKyAgICBBU1NFUlRfVFJVRShj
b25zdGFudENvbHVtbk1ham9yTWF0cml4Rm91bmRJbkFTVChyZXN1bHQpKTsKK30KKworLy8gVGVz
dCB0aGF0IGNvbnN0YW50IG1hdDIgaW5pdGlhbGl6YXRpb24gd2l0aCBhIG1hdDMgcGFyYW1ldGVy
IHdvcmtzIGNvcnJlY3RseS4KK1RFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBGb2xkTWF0MkNv
bnN0cnVjdG9yVGFraW5nTWF0MykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3Ry
aW5nID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidW5p
Zm9ybSBmbG9hdCBtdWx0O1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAi
ICAgY29uc3QgbWF0MiBjbSA9IG1hdDIobWF0MygwLjAsIDEuMCwgMi4wLCAzLjAsIDQuMCwgNS4w
LCA2LjAsIDcuMCwgOC4wKSk7XG4iCisgICAgICAgICIgICBtYXQyIG0gPSBjbSAqIG11bHQ7XG4i
CisgICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KG1bMF0sIG1bMV0pO1xuIgorICAgICAg
ICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgZmxvYXQgb3V0cHV0RWxl
bWVudHNbXSA9CisgICAgeworICAgICAgICAwLjBmLCAxLjBmLAorICAgICAgICAzLjBmLCA0LjBm
CisgICAgfTsKKyAgICBzdGQ6OnZlY3RvcjxmbG9hdD4gcmVzdWx0KG91dHB1dEVsZW1lbnRzLCBv
dXRwdXRFbGVtZW50cyArIDQpOworICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Q29sdW1uTWFqb3JN
YXRyaXhGb3VuZEluQVNUKHJlc3VsdCkpOworfQorCisvLyBUZXN0IHRoYXQgY29uc3RhbnQgbWF0
NHgzIGluaXRpYWxpemF0aW9uIHdpdGggYSBtYXQzeDIgcGFyYW1ldGVyIHdvcmtzIGNvcnJlY3Rs
eS4KK1RFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBGb2xkTWF0NHgzQ29uc3RydWN0b3JUYWtp
bmdNYXQzeDIpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAg
ICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
O1xuIgorICAgICAgICAidW5pZm9ybSBmbG9hdCBtdWx0O1xuIgorICAgICAgICAib3V0IHZlYzQg
bXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAg
Y29uc3QgbWF0NHgzIGNtID0gbWF0NHgzKG1hdDN4MigxLjAsIDIuMCxcbiIKKyAgICAgICAgIiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4wLCA0LjAsXG4iCisgICAgICAgICIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuMCwgNi4wKSk7XG4iCisgICAgICAg
ICIgICBtYXQ0eDMgbSA9IGNtICogbXVsdDtcbiIKKyAgICAgICAgIiAgIG15X0ZyYWdDb2xvciA9
IHZlYzQobVswXSwgbVsxXVswXSk7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hh
ZGVyU3RyaW5nKTsKKyAgICBmbG9hdCBvdXRwdXRFbGVtZW50c1tdID0KKyAgICB7CisgICAgICAg
IDEuMGYsIDIuMGYsIDAuMGYsCisgICAgICAgIDMuMGYsIDQuMGYsIDAuMGYsCisgICAgICAgIDUu
MGYsIDYuMGYsIDEuMGYsCisgICAgICAgIDAuMGYsIDAuMGYsIDAuMGYKKyAgICB9OworICAgIHN0
ZDo6dmVjdG9yPGZsb2F0PiByZXN1bHQob3V0cHV0RWxlbWVudHMsIG91dHB1dEVsZW1lbnRzICsg
MTIpOworICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Q29sdW1uTWFqb3JNYXRyaXhGb3VuZEluQVNU
KHJlc3VsdCkpOworfQorCisKKy8vIFRlc3QgdGhhdCBjb25zdGFudCBtYXQyIGluaXRpYWxpemF0
aW9uIHdpdGggYSB2ZWM0IHBhcmFtZXRlciB3b3JrcyBjb3JyZWN0bHkuCitURVNUX0YoQ29uc3Rh
bnRGb2xkaW5nVGVzdCwgRm9sZE1hdDJDb25zdHJ1Y3RvclRha2luZ1ZlYzQpCit7CisgICAgY29u
c3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gZmxvYXQgbXVsdDtcbiIKKyAgICAgICAgInZv
aWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGNvbnN0IG1hdDIgY20gPSBtYXQyKHZlYzQoMC4w
LCAxLjAsIDIuMCwgMy4wKSk7XG4iCisgICAgICAgICIgICBtYXQyIG0gPSBjbSAqIG11bHQ7XG4i
CisgICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KG1bMF0sIG1bMV0pO1xuIgorICAgICAg
ICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgZmxvYXQgb3V0cHV0RWxl
bWVudHNbXSA9CisgICAgeworICAgICAgICAwLjBmLCAxLjBmLAorICAgICAgICAyLjBmLCAzLjBm
CisgICAgfTsKKyAgICBzdGQ6OnZlY3RvcjxmbG9hdD4gcmVzdWx0KG91dHB1dEVsZW1lbnRzLCBv
dXRwdXRFbGVtZW50cyArIDQpOworICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Q29sdW1uTWFqb3JN
YXRyaXhGb3VuZEluQVNUKHJlc3VsdCkpOworfQorCisvLyBUZXN0IHRoYXQgZXF1YWxpdHkgY29t
cGFyaXNvbiBvZiB0d28gZGlmZmVyZW50IHN0cnVjdHMgd2l0aCBhIG5lc3RlZCBzdHJ1Y3QgaW5z
aWRlIHJldHVybnMgZmFsc2UuCitURVNUX0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwgRm9sZE5lc3Rl
ZERpZmZlcmVudFN0cnVjdEVxdWFsaXR5Q29tcGFyaXNvbikKK3sKKyAgICBjb25zdCBzdGQ6OnN0
cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xu
IgorICAgICAgICAic3RydWN0IG5lc3RlZCB7XG4iCisgICAgICAgICIgICAgZmxvYXQgZlxuOyIK
KyAgICAgICAgIn07XG4iCisgICAgICAgICJzdHJ1Y3QgUyB7XG4iCisgICAgICAgICIgICAgbmVz
dGVkIGE7XG4iCisgICAgICAgICIgICAgZmxvYXQgZjtcbiIKKyAgICAgICAgIn07XG4iCisgICAg
ICAgICJ1bmlmb3JtIHZlYzQgbXVsdDtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAg
ICAgICJ7XG4iCisgICAgICAgICIgICAgY29uc3QgUyBzMSA9IFMobmVzdGVkKDAuMCksIDIuMCk7
XG4iCisgICAgICAgICIgICAgY29uc3QgUyBzMiA9IFMobmVzdGVkKDAuMCksIDMuMCk7XG4iCisg
ICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gKHMxID09IHMyID8gMS4wIDogMC41KSAqIG11bHQ7
XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBBU1NF
UlRfVFJVRShjb25zdGFudEZvdW5kSW5BU1QoMC41ZikpOworfQorCisvLyBUZXN0IHRoYXQgZXF1
YWxpdHkgY29tcGFyaXNvbiBvZiB0d28gaWRlbnRpY2FsIHN0cnVjdHMgd2l0aCBhIG5lc3RlZCBz
dHJ1Y3QgaW5zaWRlIHJldHVybnMgdHJ1ZS4KK1RFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBG
b2xkTmVzdGVkSWRlbnRpY2FsU3RydWN0RXF1YWxpdHlDb21wYXJpc29uKQoreworICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7XG4iCisgICAgICAgICJzdHJ1Y3QgbmVzdGVkIHtcbiIKKyAgICAgICAgIiAgICBmbG9h
dCBmXG47IgorICAgICAgICAifTtcbiIKKyAgICAgICAgInN0cnVjdCBTIHtcbiIKKyAgICAgICAg
IiAgICBuZXN0ZWQgYTtcbiIKKyAgICAgICAgIiAgICBmbG9hdCBmO1xuIgorICAgICAgICAiICAg
IGludCBpO1xuIgorICAgICAgICAifTtcbiIKKyAgICAgICAgInVuaWZvcm0gdmVjNCBtdWx0O1xu
IgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBj
b25zdCBTIHMxID0gUyhuZXN0ZWQoMC4wKSwgMi4wLCAzKTtcbiIKKyAgICAgICAgIiAgICBjb25z
dCBTIHMyID0gUyhuZXN0ZWQoMC4wKSwgMi4wLCAzKTtcbiIKKyAgICAgICAgIiAgICBnbF9GcmFn
Q29sb3IgPSAoczEgPT0gczIgPyAxLjAgOiAwLjUpICogbXVsdDtcbiIKKyAgICAgICAgIn1cbiI7
CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Rm91
bmRJbkFTVCgxLjBmKSk7Cit9CisKKy8vIFRlc3QgdGhhdCByaWdodCBlbGVtZW50cyBhcmUgY2hv
c2VuIGZyb20gbm9uLXNxdWFyZSBtYXRyaXgKK1RFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBG
b2xkTm9uU3F1YXJlTWF0cml4SW5kZXhpbmcpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNo
YWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xu
IgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBt
eV9GcmFnQ29sb3IgPSBtYXQzeDQoMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDEx
KVsxXTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAg
IGZsb2F0IG91dHB1dEVsZW1lbnRzW10gPSB7NC4wZiwgNS4wZiwgNi4wZiwgNy4wZn07CisgICAg
c3RkOjp2ZWN0b3I8ZmxvYXQ+IHJlc3VsdChvdXRwdXRFbGVtZW50cywgb3V0cHV0RWxlbWVudHMg
KyA0KTsKKyAgICBBU1NFUlRfVFJVRShjb25zdGFudFZlY3RvckZvdW5kSW5BU1QocmVzdWx0KSk7
Cit9CisKKy8vIFRlc3QgdGhhdCBmb2xkaW5nIG91dGVyIHByb2R1Y3Qgb2YgdmVjdG9ycyB3aXRo
IG5vbi1tYXRjaGluZyBsZW5ndGhzIHdvcmtzLgorVEVTVF9GKENvbnN0YW50Rm9sZGluZ1Rlc3Qs
IEZvbGROb25TcXVhcmVPdXRlclByb2R1Y3QpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNo
YWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xu
IgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBt
YXQzeDIgcHJvZCA9IG91dGVyUHJvZHVjdCh2ZWMyKDIuMCwgMy4wKSwgdmVjMyg1LjAsIDcuMCwg
MTEuMCkpO1xuIgorICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQocHJvZFswXS54KTtc
biIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIC8vIGNs
YW5nLWZvcm1hdCBvZmYKKyAgICBmbG9hdCBvdXRwdXRFbGVtZW50c1tdID0KKyAgICB7CisgICAg
ICAgIDEwLjBmLCAxNS4wZiwKKyAgICAgICAgMTQuMGYsIDIxLjBmLAorICAgICAgICAyMi4wZiwg
MzMuMGYKKyAgICB9OworICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorICAgIHN0ZDo6dmVjdG9yPGZs
b2F0PiByZXN1bHQob3V0cHV0RWxlbWVudHMsIG91dHB1dEVsZW1lbnRzICsgNik7CisgICAgQVNT
RVJUX1RSVUUoY29uc3RhbnRDb2x1bW5NYWpvck1hdHJpeEZvdW5kSW5BU1QocmVzdWx0KSk7Cit9
CisKKy8vIFRlc3QgdGhhdCBmb2xkaW5nIGJpdCBzaGlmdCBsZWZ0IHdpdGggbm9uLW1hdGNoaW5n
IHNpZ25lZG5lc3Mgd29ya3MuCitURVNUX0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwgRm9sZEJpdFNo
aWZ0TGVmdERpZmZlcmVudFNpZ25lZG5lc3MpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNo
YWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xu
IgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICB1
aW50IHUgPSAweGZmZmZmZmZmdSA8PCAzMTtcbiIKKyAgICAgICAgIiAgICBteV9GcmFnQ29sb3Ig
PSB2ZWM0KHUpO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7
CisgICAgQVNTRVJUX1RSVUUoY29uc3RhbnRGb3VuZEluQVNUKDB4ODAwMDAwMDB1KSk7Cit9CisK
Ky8vIFRlc3QgdGhhdCBmb2xkaW5nIGJpdCBzaGlmdCByaWdodCB3aXRoIG5vbi1tYXRjaGluZyBz
aWduZWRuZXNzIHdvcmtzLgorVEVTVF9GKENvbnN0YW50Rm9sZGluZ1Rlc3QsIEZvbGRCaXRTaGlm
dFJpZ2h0RGlmZmVyZW50U2lnbmVkbmVzcykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hh
ZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4i
CisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIHVp
bnQgdSA9IDB4ZmZmZmZmZmZ1ID4+IDMwO1xuIgorICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9
IHZlYzQodSk7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsK
KyAgICBBU1NFUlRfVFJVRShjb25zdGFudEZvdW5kSW5BU1QoMHgzdSkpOworfQorCisvLyBUZXN0
IHRoYXQgZm9sZGluZyBzaWduZWQgYml0IHNoaWZ0IHJpZ2h0IGV4dGVuZHMgdGhlIHNpZ24gYml0
LgorLy8gRVNTTCAzLjAwLjYgc2VjdGlvbiA1LjkgRXhwcmVzc2lvbnMuCitURVNUX0YoQ29uc3Rh
bnRGb2xkaW5nVGVzdCwgRm9sZEJpdFNoaWZ0UmlnaHRFeHRlbmRTaWduQml0KQoreworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVz
XG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2
ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7
XG4iCisgICAgICAgICIgICAgY29uc3QgaW50IGkgPSAweDhmZmZlMDAwID4+IDY7XG4iCisgICAg
ICAgICIgICAgdWludCB1ID0gdWludChpKTsiCisgICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0g
dmVjNCh1KTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwor
ICAgIC8vIFRoZSBiaXRzIG9mIHRoZSBvcGVyYW5kIGFyZSAweDhmZmZlMDAwID0gMTAwMCAxMTEx
IDExMTEgMTExMSAxMTEwIDAwMDAgMDAwMCAwMDAwCisgICAgLy8gQWZ0ZXIgc2hpZnRpbmcsIHRo
ZXkgYmVjb21lICAgICAgICAgICAgICAxMTExIDExMTAgMDAxMSAxMTExIDExMTEgMTExMSAxMDAw
IDAwMDAgPSAweGZlM2ZmZjgwCisgICAgQVNTRVJUX1RSVUUoY29uc3RhbnRGb3VuZEluQVNUKDB4
ZmUzZmZmODB1KSk7Cit9CisKKy8vIFNpZ25lZCBiaXQgc2hpZnQgbGVmdCBzaG91bGQgaW50ZXJw
cmV0IGl0cyBvcGVyYW5kIGFzIGEgYml0IHBhdHRlcm4uIEFzIGEgY29uc2VxdWVuY2UgYSBudW1i
ZXIKKy8vIG1heSB0dXJuIGZyb20gcG9zaXRpdmUgdG8gbmVnYXRpdmUgd2hlbiBzaGlmdGVkIGxl
ZnQuCisvLyBFU1NMIDMuMDAuNiBzZWN0aW9uIDUuOSBFeHByZXNzaW9ucy4KK1RFU1RfRihDb25z
dGFudEZvbGRpbmdUZXN0LCBGb2xkQml0U2hpZnRMZWZ0SW50ZXJwcmV0ZWRBc0JpdFBhdHRlcm4p
Cit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVy
c2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAg
ICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIK
KyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBjb25zdCBpbnQgaSA9IDB4MWZmZmZmZmYgPDwg
MztcbiIKKyAgICAgICAgIiAgICB1aW50IHUgPSB1aW50KGkpOyIKKyAgICAgICAgIiAgICBteV9G
cmFnQ29sb3IgPSB2ZWM0KHUpO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRl
clN0cmluZyk7CisgICAgQVNTRVJUX1RSVUUoY29uc3RhbnRGb3VuZEluQVNUKDB4ZmZmZmZmZjh1
KSk7Cit9CisKKy8vIFRlc3QgdGhhdCBkaXZpZGluZyB0aGUgbWluaW11bSBzaWduZWQgaW50ZWdl
ciBieSAtMSB3b3Jrcy4KKy8vIEVTU0wgMy4wMC42IHNlY3Rpb24gNC4xLjMgSW50ZWdlcnM6Cisv
LyAiSG93ZXZlciwgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZSBtaW5pbXVtIHJlcHJlc2VudGFibGUg
dmFsdWUgaXMgZGl2aWRlZCBieSAtMSwgaXQgaXMgYWxsb3dlZCB0bworLy8gcmV0dXJuIGVpdGhl
ciB0aGUgbWluaW11bSByZXByZXNlbnRhYmxlIHZhbHVlIG9yIHRoZSBtYXhpbXVtIHJlcHJlc2Vu
dGFibGUgdmFsdWUuIgorVEVTVF9GKENvbnN0YW50Rm9sZGluZ1Rlc3QsIEZvbGREaXZpZGVNaW5p
bXVtSW50ZWdlckJ5TWludXNPbmUpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0
cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAg
ICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBpbnQgaSA9
IDB4ODAwMDAwMDAgLyAoLTEpO1xuIgorICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQo
aSk7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBB
U1NFUlRfVFJVRShjb25zdGFudEZvdW5kSW5BU1QoMHg3ZmZmZmZmZikgfHwgY29uc3RhbnRGb3Vu
ZEluQVNUKC0weDdmZmZmZmZmIC0gMSkpOworfQorCisvLyBUZXN0IHRoYXQgZm9sZGluZyBhbiB1
bnNpZ25lZCBpbnRlZ2VyIGFkZGl0aW9uIHRoYXQgb3ZlcmZsb3dzIHdvcmtzLgorLy8gRVNTTCAz
LjAwLjYgc2VjdGlvbiA0LjEuMyBJbnRlZ2VyczoKKy8vICJGb3IgYWxsIHByZWNpc2lvbnMsIG9w
ZXJhdGlvbnMgcmVzdWx0aW5nIGluIG92ZXJmbG93IG9yIHVuZGVyZmxvdyB3aWxsIG5vdCBjYXVz
ZSBhbnkgZXhjZXB0aW9uLAorLy8gbm9yIHdpbGwgdGhleSBzYXR1cmF0ZSwgcmF0aGVyIHRoZXkg
d2lsbCAnd3JhcCcgdG8geWllbGQgdGhlIGxvdy1vcmRlciBuIGJpdHMgb2YgdGhlIHJlc3VsdCB3
aGVyZQorLy8gbiBpcyB0aGUgc2l6ZSBpbiBiaXRzIG9mIHRoZSBpbnRlZ2VyLiIKK1RFU1RfRihD
b25zdGFudEZvbGRpbmdUZXN0LCBGb2xkVW5zaWduZWRJbnRlZ2VyQWRkT3ZlcmZsb3cpCit7Cisg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAz
MDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAi
b3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAg
ICAgIntcbiIKKyAgICAgICAgIiAgICB1aW50IHUgPSAweGZmZmZmZmZmdSArIDQzdTtcbiIKKyAg
ICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KHUpO1xuIgorICAgICAgICAifVxuIjsKKyAg
ICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX1RSVUUoY29uc3RhbnRGb3VuZElu
QVNUKDQydSkpOworfQorCisvLyBUZXN0IHRoYXQgZm9sZGluZyBhIHNpZ25lZCBpbnRlZ2VyIGFk
ZGl0aW9uIHRoYXQgb3ZlcmZsb3dzIHdvcmtzLgorLy8gRVNTTCAzLjAwLjYgc2VjdGlvbiA0LjEu
MyBJbnRlZ2VyczoKKy8vICJGb3IgYWxsIHByZWNpc2lvbnMsIG9wZXJhdGlvbnMgcmVzdWx0aW5n
IGluIG92ZXJmbG93IG9yIHVuZGVyZmxvdyB3aWxsIG5vdCBjYXVzZSBhbnkgZXhjZXB0aW9uLAor
Ly8gbm9yIHdpbGwgdGhleSBzYXR1cmF0ZSwgcmF0aGVyIHRoZXkgd2lsbCAnd3JhcCcgdG8geWll
bGQgdGhlIGxvdy1vcmRlciBuIGJpdHMgb2YgdGhlIHJlc3VsdCB3aGVyZQorLy8gbiBpcyB0aGUg
c2l6ZSBpbiBiaXRzIG9mIHRoZSBpbnRlZ2VyLiIKK1RFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0
LCBGb2xkU2lnbmVkSW50ZWdlckFkZE92ZXJmbG93KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xv
cjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIg
ICAgaW50IGkgPSAweDdmZmZmZmZmICsgNDtcbiIKKyAgICAgICAgIiAgICBteV9GcmFnQ29sb3Ig
PSB2ZWM0KGkpO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7
CisgICAgQVNTRVJUX1RSVUUoY29uc3RhbnRGb3VuZEluQVNUKC0weDdmZmZmZmZkKSk7Cit9CisK
Ky8vIFRlc3QgdGhhdCBmb2xkaW5nIGFuIHVuc2lnbmVkIGludGVnZXIgc3VidHJhY3Rpb24gdGhh
dCBvdmVyZmxvd3Mgd29ya3MuCisvLyBFU1NMIDMuMDAuNiBzZWN0aW9uIDQuMS4zIEludGVnZXJz
OgorLy8gIkZvciBhbGwgcHJlY2lzaW9ucywgb3BlcmF0aW9ucyByZXN1bHRpbmcgaW4gb3ZlcmZs
b3cgb3IgdW5kZXJmbG93IHdpbGwgbm90IGNhdXNlIGFueSBleGNlcHRpb24sCisvLyBub3Igd2ls
bCB0aGV5IHNhdHVyYXRlLCByYXRoZXIgdGhleSB3aWxsICd3cmFwJyB0byB5aWVsZCB0aGUgbG93
LW9yZGVyIG4gYml0cyBvZiB0aGUgcmVzdWx0IHdoZXJlCisvLyBuIGlzIHRoZSBzaXplIGluIGJp
dHMgb2YgdGhlIGludGVnZXIuIgorVEVTVF9GKENvbnN0YW50Rm9sZGluZ1Rlc3QsIEZvbGRVbnNp
Z25lZEludGVnZXJEaWZmT3ZlcmZsb3cpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRl
clN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lv
biBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgor
ICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICB1aW50
IHUgPSAwdSAtIDV1O1xuIgorICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQodSk7XG4i
CisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBBU1NFUlRf
VFJVRShjb25zdGFudEZvdW5kSW5BU1QoMHhmZmZmZmZmYnUpKTsKK30KKworLy8gVGVzdCB0aGF0
IGZvbGRpbmcgYSBzaWduZWQgaW50ZWdlciBzdWJ0cmFjdGlvbiB0aGF0IG92ZXJmbG93cyB3b3Jr
cy4KKy8vIEVTU0wgMy4wMC42IHNlY3Rpb24gNC4xLjMgSW50ZWdlcnM6CisvLyAiRm9yIGFsbCBw
cmVjaXNpb25zLCBvcGVyYXRpb25zIHJlc3VsdGluZyBpbiBvdmVyZmxvdyBvciB1bmRlcmZsb3cg
d2lsbCBub3QgY2F1c2UgYW55IGV4Y2VwdGlvbiwKKy8vIG5vciB3aWxsIHRoZXkgc2F0dXJhdGUs
IHJhdGhlciB0aGV5IHdpbGwgJ3dyYXAnIHRvIHlpZWxkIHRoZSBsb3ctb3JkZXIgbiBiaXRzIG9m
IHRoZSByZXN1bHQgd2hlcmUKKy8vIG4gaXMgdGhlIHNpemUgaW4gYml0cyBvZiB0aGUgaW50ZWdl
ci4iCitURVNUX0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwgRm9sZFNpZ25lZEludGVnZXJEaWZmT3Zl
cmZsb3cpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAg
ICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xu
IgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWlu
KClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBpbnQgaSA9IC0weDdmZmZmZmZmIC0g
NztcbiIKKyAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KGkpO1xuIgorICAgICAgICAi
fVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX1RSVUUoY29uc3Rh
bnRGb3VuZEluQVNUKDB4N2ZmZmZmZmEpKTsKK30KKworLy8gVGVzdCB0aGF0IGZvbGRpbmcgYW4g
dW5zaWduZWQgaW50ZWdlciBtdWx0aXBsaWNhdGlvbiB0aGF0IG92ZXJmbG93cyB3b3Jrcy4KKy8v
IEVTU0wgMy4wMC42IHNlY3Rpb24gNC4xLjMgSW50ZWdlcnM6CisvLyAiRm9yIGFsbCBwcmVjaXNp
b25zLCBvcGVyYXRpb25zIHJlc3VsdGluZyBpbiBvdmVyZmxvdyBvciB1bmRlcmZsb3cgd2lsbCBu
b3QgY2F1c2UgYW55IGV4Y2VwdGlvbiwKKy8vIG5vciB3aWxsIHRoZXkgc2F0dXJhdGUsIHJhdGhl
ciB0aGV5IHdpbGwgJ3dyYXAnIHRvIHlpZWxkIHRoZSBsb3ctb3JkZXIgbiBiaXRzIG9mIHRoZSBy
ZXN1bHQgd2hlcmUKKy8vIG4gaXMgdGhlIHNpemUgaW4gYml0cyBvZiB0aGUgaW50ZWdlci4iCitU
RVNUX0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwgRm9sZFVuc2lnbmVkSW50ZWdlck11bHRpcGx5T3Zl
cmZsb3cpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAg
ICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xu
IgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWlu
KClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICB1aW50IHUgPSAweGZmZmZmZmZmdSAq
IDEwdTtcbiIKKyAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KHUpO1xuIgorICAgICAg
ICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX1RSVUUoY29u
c3RhbnRGb3VuZEluQVNUKDB4ZmZmZmZmZjZ1KSk7Cit9CisKKy8vIFRlc3QgdGhhdCBmb2xkaW5n
IGEgc2lnbmVkIGludGVnZXIgbXVsdGlwbGljYXRpb24gdGhhdCBvdmVyZmxvd3Mgd29ya3MuCisv
LyBFU1NMIDMuMDAuNiBzZWN0aW9uIDQuMS4zIEludGVnZXJzOgorLy8gIkZvciBhbGwgcHJlY2lz
aW9ucywgb3BlcmF0aW9ucyByZXN1bHRpbmcgaW4gb3ZlcmZsb3cgb3IgdW5kZXJmbG93IHdpbGwg
bm90IGNhdXNlIGFueSBleGNlcHRpb24sCisvLyBub3Igd2lsbCB0aGV5IHNhdHVyYXRlLCByYXRo
ZXIgdGhleSB3aWxsICd3cmFwJyB0byB5aWVsZCB0aGUgbG93LW9yZGVyIG4gYml0cyBvZiB0aGUg
cmVzdWx0IHdoZXJlCisvLyBuIGlzIHRoZSBzaXplIGluIGJpdHMgb2YgdGhlIGludGVnZXIuIgor
VEVTVF9GKENvbnN0YW50Rm9sZGluZ1Rlc3QsIEZvbGRTaWduZWRJbnRlZ2VyTXVsdGlwbHlPdmVy
ZmxvdykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAg
IiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
CisgICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4o
KVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGludCBpID0gMHg3ZmZmZmZmZiAqIDQy
O1xuIgorICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoaSk7XG4iCisgICAgICAgICJ9
XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBBU1NFUlRfVFJVRShjb25zdGFu
dEZvdW5kSW5BU1QoLTQyKSk7Cit9CisKKy8vIFRlc3QgdGhhdCBmb2xkaW5nIG9mIG5lZ2F0aW5n
IHRoZSBtaW5pbXVtIHJlcHJlc2VudGFibGUgaW50ZWdlciB3b3Jrcy4gTm90ZSB0aGF0IGluIHRo
ZSB0ZXN0CisvLyAiMHg4MDAwMDAwMCIgaXMgYSBuZWdhdGl2ZSBsaXRlcmFsLCBhbmQgdGhlIG1p
bnVzIHNpZ24gYmVmb3JlIGl0IGlzIHRoZSBuZWdhdGlvbiBvcGVyYXRvci4KKy8vIEVTU0wgMy4w
MC42IHNlY3Rpb24gNC4xLjMgSW50ZWdlcnM6CisvLyAiRm9yIGFsbCBwcmVjaXNpb25zLCBvcGVy
YXRpb25zIHJlc3VsdGluZyBpbiBvdmVyZmxvdyBvciB1bmRlcmZsb3cgd2lsbCBub3QgY2F1c2Ug
YW55IGV4Y2VwdGlvbiwKKy8vIG5vciB3aWxsIHRoZXkgc2F0dXJhdGUsIHJhdGhlciB0aGV5IHdp
bGwgJ3dyYXAnIHRvIHlpZWxkIHRoZSBsb3ctb3JkZXIgbiBiaXRzIG9mIHRoZSByZXN1bHQgd2hl
cmUKKy8vIG4gaXMgdGhlIHNpemUgaW4gYml0cyBvZiB0aGUgaW50ZWdlci4iCitURVNUX0YoQ29u
c3RhbnRGb2xkaW5nVGVzdCwgRm9sZE1pbmltdW1TaWduZWRJbnRlZ2VyTmVnYXRpb24pCit7Cisg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAz
MDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAi
b3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAg
ICAgIntcbiIKKyAgICAgICAgIiAgICBpbnQgaSA9IC0weDgwMDAwMDAwO1xuIgorICAgICAgICAi
ICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoaSk7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBp
bGUoc2hhZGVyU3RyaW5nKTsKKyAgICAvLyBOZWdhdGluZyB0aGUgbWluaW11bSBzaWduZWQgaW50
ZWdlciBvdmVyZmxvd3MgdGhlIHBvc2l0aXZlIHJhbmdlLCBzbyBpdCB3cmFwcyBiYWNrIHRvIGl0
c2VsZi4KKyAgICBBU1NFUlRfVFJVRShjb25zdGFudEZvdW5kSW5BU1QoLTB4N2ZmZmZmZmYgLSAx
KSk7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJf
dGVzdHMvRGVidWdTaGFkZXJQcmVjaXNpb25fdGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0RlYnVnU2hhZGVyUHJl
Y2lzaW9uX3Rlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9EZWJ1Z1NoYWRlclByZWNpc2lvbl90ZXN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwNDUgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIw
MTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gRGVidWdT
aGFkZXJQcmVjaXNpb25fdGVzdC5jcHA6CisvLyAgIFRlc3RzIGZvciB3cml0aW5nIHRoZSBjb2Rl
IGZvciBzaGFkZXIgcHJlY2lzaW9uIGVtdWxhdGlvbi4KKy8vCisKKyNpbmNsdWRlICJhbmdsZV9n
bC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJM
YW5nLmgiCisjaW5jbHVkZSAidGVzdHMvdGVzdF91dGlscy9jb21waWxlcl90ZXN0LmgiCisKK2Ns
YXNzIERlYnVnU2hhZGVyUHJlY2lzaW9uVGVzdCA6IHB1YmxpYyBNYXRjaE91dHB1dENvZGVUZXN0
Cit7CisgIHB1YmxpYzoKKyAgICBEZWJ1Z1NoYWRlclByZWNpc2lvblRlc3QoKSA6IE1hdGNoT3V0
cHV0Q29kZVRlc3QoR0xfRlJBR01FTlRfU0hBREVSLCAwLCBTSF9FU1NMX09VVFBVVCkKKyAgICB7
CisgICAgICAgIGFkZE91dHB1dFR5cGUoU0hfR0xTTF9DT01QQVRJQklMSVRZX09VVFBVVCk7Cisj
aWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfSExTTCkKKyAgICAgICAgYWRkT3V0cHV0VHlwZShTSF9I
TFNMXzRfMV9PVVRQVVQpOworI2VuZGlmCisgICAgICAgIGdldFJlc291cmNlcygpLT5XRUJHTF9k
ZWJ1Z19zaGFkZXJfcHJlY2lzaW9uID0gMTsKKyAgICB9CisKKyAgcHJvdGVjdGVkOgorICAgIGJv
b2wgZm91bmRJbkFsbEdMU0xDb2RlKGNvbnN0IGNoYXIgKnN0cikKKyAgICB7CisgICAgICAgIHJl
dHVybiBmb3VuZEluQ29kZShTSF9HTFNMX0NPTVBBVElCSUxJVFlfT1VUUFVULCBzdHIpICYmIGZv
dW5kSW5Db2RlKFNIX0VTU0xfT1VUUFVULCBzdHIpOworICAgIH0KKworICAgIGJvb2wgZm91bmRJ
bkhMU0xDb2RlKGNvbnN0IGNoYXIgKnN0cmluZ1RvRmluZCkgY29uc3QKKyAgICB7CisjaWYgZGVm
aW5lZChBTkdMRV9FTkFCTEVfSExTTCkKKyAgICAgICAgcmV0dXJuIGZvdW5kSW5Db2RlKFNIX0hM
U0xfNF8xX09VVFBVVCwgc3RyaW5nVG9GaW5kKTsKKyNlbHNlCisgICAgICAgIHJldHVybiB0cnVl
OworI2VuZGlmCisgICAgfQorfTsKKworY2xhc3MgTm9EZWJ1Z1NoYWRlclByZWNpc2lvblRlc3Qg
OiBwdWJsaWMgTWF0Y2hPdXRwdXRDb2RlVGVzdAoreworICBwdWJsaWM6CisgICAgTm9EZWJ1Z1No
YWRlclByZWNpc2lvblRlc3QoKQorICAgICAgICA6IE1hdGNoT3V0cHV0Q29kZVRlc3QoR0xfRlJB
R01FTlRfU0hBREVSLCAwLCBTSF9HTFNMX0NPTVBBVElCSUxJVFlfT1VUUFVUKQorICAgIHsKKyAg
ICB9Cit9OworCitURVNUX0YoRGVidWdTaGFkZXJQcmVjaXNpb25UZXN0LCBSb3VuZGluZ0Z1bmN0
aW9uc0RlZmluZWQpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Cisg
ICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gZmxv
YXQgdTtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdD
b2xvciA9IHZlYzQodSk7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3Ry
aW5nKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluRVNTTENvZGUoImhpZ2hwIGZsb2F0IGFuZ2xl
X2ZybShpbiBoaWdocCBmbG9hdCIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluRVNTTENvZGUo
ImhpZ2hwIHZlYzIgYW5nbGVfZnJtKGluIGhpZ2hwIHZlYzIiKSk7CisgICAgQVNTRVJUX1RSVUUo
Zm91bmRJbkVTU0xDb2RlKCJoaWdocCB2ZWMzIGFuZ2xlX2ZybShpbiBoaWdocCB2ZWMzIikpOwor
ICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgiaGlnaHAgdmVjNCBhbmdsZV9mcm0oaW4g
aGlnaHAgdmVjNCIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluRVNTTENvZGUoImhpZ2hwIG1h
dDIgYW5nbGVfZnJtKGluIGhpZ2hwIG1hdDIiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkVT
U0xDb2RlKCJoaWdocCBtYXQzIGFuZ2xlX2ZybShpbiBoaWdocCBtYXQzIikpOworICAgIEFTU0VS
VF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgiaGlnaHAgbWF0NCBhbmdsZV9mcm0oaW4gaGlnaHAgbWF0
NCIpKTsKKworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgiaGlnaHAgZmxvYXQgYW5n
bGVfZnJsKGluIGhpZ2hwIGZsb2F0IikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5FU1NMQ29k
ZSgiaGlnaHAgdmVjMiBhbmdsZV9mcmwoaW4gaGlnaHAgdmVjMiIpKTsKKyAgICBBU1NFUlRfVFJV
RShmb3VuZEluRVNTTENvZGUoImhpZ2hwIHZlYzMgYW5nbGVfZnJsKGluIGhpZ2hwIHZlYzMiKSk7
CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKCJoaWdocCB2ZWM0IGFuZ2xlX2ZybChp
biBoaWdocCB2ZWM0IikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgiaGlnaHAg
bWF0MiBhbmdsZV9mcmwoaW4gaGlnaHAgbWF0MiIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZElu
RVNTTENvZGUoImhpZ2hwIG1hdDMgYW5nbGVfZnJsKGluIGhpZ2hwIG1hdDMiKSk7CisgICAgQVNT
RVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKCJoaWdocCBtYXQ0IGFuZ2xlX2ZybChpbiBoaWdocCBt
YXQ0IikpOworCisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKCJmbG9hdCBhbmdsZV9m
cm0oaW4gZmxvYXQiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKCJ2ZWMyIGFu
Z2xlX2ZybShpbiB2ZWMyIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5HTFNMQ29kZSgidmVj
MyBhbmdsZV9mcm0oaW4gdmVjMyIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluR0xTTENvZGUo
InZlYzQgYW5nbGVfZnJtKGluIHZlYzQiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xD
b2RlKCJtYXQyIGFuZ2xlX2ZybShpbiBtYXQyIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5H
TFNMQ29kZSgibWF0MyBhbmdsZV9mcm0oaW4gbWF0MyIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3Vu
ZEluR0xTTENvZGUoIm1hdDQgYW5nbGVfZnJtKGluIG1hdDQiKSk7CisKKyAgICBBU1NFUlRfVFJV
RShmb3VuZEluR0xTTENvZGUoImZsb2F0IGFuZ2xlX2ZybChpbiBmbG9hdCIpKTsKKyAgICBBU1NF
UlRfVFJVRShmb3VuZEluR0xTTENvZGUoInZlYzIgYW5nbGVfZnJsKGluIHZlYzIiKSk7CisgICAg
QVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKCJ2ZWMzIGFuZ2xlX2ZybChpbiB2ZWMzIikpOwor
ICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5HTFNMQ29kZSgidmVjNCBhbmdsZV9mcmwoaW4gdmVjNCIp
KTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluR0xTTENvZGUoIm1hdDIgYW5nbGVfZnJsKGluIG1h
dDIiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKCJtYXQzIGFuZ2xlX2ZybChp
biBtYXQzIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5HTFNMQ29kZSgibWF0NCBhbmdsZV9m
cmwoaW4gbWF0NCIpKTsKKworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiZmxvYXQx
IGFuZ2xlX2ZybShmbG9hdDEiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJm
bG9hdDIgYW5nbGVfZnJtKGZsb2F0MiIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENv
ZGUoImZsb2F0MyBhbmdsZV9mcm0oZmxvYXQzIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5I
TFNMQ29kZSgiZmxvYXQ0IGFuZ2xlX2ZybShmbG9hdDQiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91
bmRJbkhMU0xDb2RlKCJmbG9hdDJ4MiBhbmdsZV9mcm0oZmxvYXQyeDIiKSk7CisgICAgQVNTRVJU
X1RSVUUoZm91bmRJbkhMU0xDb2RlKCJmbG9hdDN4MyBhbmdsZV9mcm0oZmxvYXQzeDMiKSk7Cisg
ICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJmbG9hdDR4NCBhbmdsZV9mcm0oZmxvYXQ0
eDQiKSk7CisKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoImZsb2F0MSBhbmdsZV9m
cmwoZmxvYXQxIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiZmxvYXQyIGFu
Z2xlX2ZybChmbG9hdDIiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJmbG9h
dDMgYW5nbGVfZnJsKGZsb2F0MyIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUo
ImZsb2F0NCBhbmdsZV9mcmwoZmxvYXQ0IikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNM
Q29kZSgiZmxvYXQyeDIgYW5nbGVfZnJsKGZsb2F0MngyIikpOworICAgIEFTU0VSVF9UUlVFKGZv
dW5kSW5ITFNMQ29kZSgiZmxvYXQzeDMgYW5nbGVfZnJsKGZsb2F0M3gzIikpOworICAgIEFTU0VS
VF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiZmxvYXQ0eDQgYW5nbGVfZnJsKGZsb2F0NHg0IikpOwor
CisgICAgLy8gQ2hlY2sgdGhhdCBFU1NMIDMuMDAgcm91bmRpbmcgZnVuY3Rpb25zIGZvciBub24t
c3F1YXJlIG1hdHJpY2VzIGFyZSBub3QgZGVmaW5lZC4KKyAgICBBU1NFUlRfVFJVRShub3RGb3Vu
ZEluQ29kZSgibWF0MngiKSk7CisgICAgQVNTRVJUX1RSVUUobm90Rm91bmRJbkNvZGUoIm1hdDN4
IikpOworICAgIEFTU0VSVF9UUlVFKG5vdEZvdW5kSW5Db2RlKCJtYXQ0eCIpKTsKK30KKworLy8g
VGVzdCB0aGF0IGFsbCBFU1NMIDMuMDAgc2hhZGVycyBnZXQgcm91bmRpbmcgZnVuY3Rpb24gZGVm
aW5pdGlvbnMgZm9yIG5vbi1zcXVhcmUgbWF0cmljZXMuCitURVNUX0YoRGVidWdTaGFkZXJQcmVj
aXNpb25UZXN0LCBOb25TcXVhcmVNYXRyaXhSb3VuZGluZ0Z1bmN0aW9uc0RlZmluZWRFUzMpCit7
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lv
biAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAg
ICAidW5pZm9ybSBmbG9hdCB1O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xu
IgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgbXlfRnJhZ0NvbG9yID0g
dmVjNCh1KTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwor
ICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgiaGlnaHAgbWF0MngzIGFuZ2xlX2ZybShp
biBoaWdocCBtYXQyeDMiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKCJoaWdo
cCBtYXQyeDQgYW5nbGVfZnJtKGluIGhpZ2hwIG1hdDJ4NCIpKTsKKyAgICBBU1NFUlRfVFJVRShm
b3VuZEluRVNTTENvZGUoImhpZ2hwIG1hdDN4MiBhbmdsZV9mcm0oaW4gaGlnaHAgbWF0M3gyIikp
OworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgiaGlnaHAgbWF0M3g0IGFuZ2xlX2Zy
bShpbiBoaWdocCBtYXQzeDQiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKCJo
aWdocCBtYXQ0eDIgYW5nbGVfZnJtKGluIGhpZ2hwIG1hdDR4MiIpKTsKKyAgICBBU1NFUlRfVFJV
RShmb3VuZEluRVNTTENvZGUoImhpZ2hwIG1hdDR4MyBhbmdsZV9mcm0oaW4gaGlnaHAgbWF0NHgz
IikpOworCisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKCJoaWdocCBtYXQyeDMgYW5n
bGVfZnJsKGluIGhpZ2hwIG1hdDJ4MyIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluRVNTTENv
ZGUoImhpZ2hwIG1hdDJ4NCBhbmdsZV9mcmwoaW4gaGlnaHAgbWF0Mng0IikpOworICAgIEFTU0VS
VF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgiaGlnaHAgbWF0M3gyIGFuZ2xlX2ZybChpbiBoaWdocCBt
YXQzeDIiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKCJoaWdocCBtYXQzeDQg
YW5nbGVfZnJsKGluIGhpZ2hwIG1hdDN4NCIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluRVNT
TENvZGUoImhpZ2hwIG1hdDR4MiBhbmdsZV9mcmwoaW4gaGlnaHAgbWF0NHgyIikpOworICAgIEFT
U0VSVF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgiaGlnaHAgbWF0NHgzIGFuZ2xlX2ZybChpbiBoaWdo
cCBtYXQ0eDMiKSk7CisKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluR0xTTENvZGUoIm1hdDJ4MyBh
bmdsZV9mcm0oaW4gbWF0MngzIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5HTFNMQ29kZSgi
bWF0Mng0IGFuZ2xlX2ZybShpbiBtYXQyeDQiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkdM
U0xDb2RlKCJtYXQzeDIgYW5nbGVfZnJtKGluIG1hdDN4MiIpKTsKKyAgICBBU1NFUlRfVFJVRShm
b3VuZEluR0xTTENvZGUoIm1hdDN4NCBhbmdsZV9mcm0oaW4gbWF0M3g0IikpOworICAgIEFTU0VS
VF9UUlVFKGZvdW5kSW5HTFNMQ29kZSgibWF0NHgyIGFuZ2xlX2ZybShpbiBtYXQ0eDIiKSk7Cisg
ICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKCJtYXQ0eDMgYW5nbGVfZnJtKGluIG1hdDR4
MyIpKTsKKworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5HTFNMQ29kZSgibWF0MngzIGFuZ2xlX2Zy
bChpbiBtYXQyeDMiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKCJtYXQyeDQg
YW5nbGVfZnJsKGluIG1hdDJ4NCIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluR0xTTENvZGUo
Im1hdDN4MiBhbmdsZV9mcmwoaW4gbWF0M3gyIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5H
TFNMQ29kZSgibWF0M3g0IGFuZ2xlX2ZybChpbiBtYXQzeDQiKSk7CisgICAgQVNTRVJUX1RSVUUo
Zm91bmRJbkdMU0xDb2RlKCJtYXQ0eDIgYW5nbGVfZnJsKGluIG1hdDR4MiIpKTsKKyAgICBBU1NF
UlRfVFJVRShmb3VuZEluR0xTTENvZGUoIm1hdDR4MyBhbmdsZV9mcmwoaW4gbWF0NHgzIikpOwor
CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJmbG9hdDJ4MyBhbmdsZV9mcm0oZmxv
YXQyeDMiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJmbG9hdDJ4NCBhbmds
ZV9mcm0oZmxvYXQyeDQiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJmbG9h
dDN4MiBhbmdsZV9mcm0oZmxvYXQzeDIiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xD
b2RlKCJmbG9hdDN4NCBhbmdsZV9mcm0oZmxvYXQzeDQiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91
bmRJbkhMU0xDb2RlKCJmbG9hdDR4MiBhbmdsZV9mcm0oZmxvYXQ0eDIiKSk7CisgICAgQVNTRVJU
X1RSVUUoZm91bmRJbkhMU0xDb2RlKCJmbG9hdDR4MyBhbmdsZV9mcm0oZmxvYXQ0eDMiKSk7CisK
KyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoImZsb2F0MngzIGFuZ2xlX2ZybChmbG9h
dDJ4MyIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoImZsb2F0Mng0IGFuZ2xl
X2ZybChmbG9hdDJ4NCIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoImZsb2F0
M3gyIGFuZ2xlX2ZybChmbG9hdDN4MiIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENv
ZGUoImZsb2F0M3g0IGFuZ2xlX2ZybChmbG9hdDN4NCIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3Vu
ZEluSExTTENvZGUoImZsb2F0NHgyIGFuZ2xlX2ZybChmbG9hdDR4MiIpKTsKKyAgICBBU1NFUlRf
VFJVRShmb3VuZEluSExTTENvZGUoImZsb2F0NHgzIGFuZ2xlX2ZybChmbG9hdDR4MyIpKTsKK30K
KworVEVTVF9GKERlYnVnU2hhZGVyUHJlY2lzaW9uVGVzdCwgUHJhZ21hRGlzYWJsZXNFbXVsYXRp
b24pCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIj
cHJhZ21hIHdlYmdsX2RlYnVnX3NoYWRlcl9wcmVjaXNpb24ob2ZmKVxuIgorICAgICAgICAicHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ1bmlmb3JtIGZsb2F0IHU7XG4iCisg
ICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0
KHUpO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAg
QVNTRVJUX1RSVUUobm90Rm91bmRJbkNvZGUoImFuZ2xlX2ZybSIpKTsKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyAmc2hhZGVyU3RyaW5nUHJhZ21hT24gPQorICAgICAgICAiI3ByYWdtYSB3ZWJnbF9k
ZWJ1Z19zaGFkZXJfcHJlY2lzaW9uKG9uKVxuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7XG4iCisgICAgICAgICJ1bmlmb3JtIGZsb2F0IHU7XG4iCisgICAgICAgICJ2b2lkIG1h
aW4oKSB7XG4iCisgICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHUpO1xuIgorICAgICAg
ICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZ1ByYWdtYU9uKTsKKyAgICBBU1NFUlRf
VFJVRShmb3VuZEluQ29kZSgiYW5nbGVfZnJtIikpOworfQorCisvLyBFbXVsYXRpb24gY2FuJ3Qg
YmUgdG9nZ2xlZCBvbiBmb3Igb25seSBhIHBhcnQgb2YgYSBzaGFkZXIuCisvLyBPbmx5IHRoZSBs
YXN0IHByYWdtYSBpbiB0aGUgc2hhZGVyIGhhcyBhbiBlZmZlY3QuCitURVNUX0YoRGVidWdTaGFk
ZXJQcmVjaXNpb25UZXN0LCBNdWx0aXBsZVByYWdtYXMpCit7CisgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjcHJhZ21hIHdlYmdsX2RlYnVnX3NoYWRlcl9w
cmVjaXNpb24ob2ZmKVxuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisg
ICAgICAgICJ1bmlmb3JtIGZsb2F0IHU7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisg
ICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHUpO1xuIgorICAgICAgICAifVxuIgorICAg
ICAgICAiI3ByYWdtYSB3ZWJnbF9kZWJ1Z19zaGFkZXJfcHJlY2lzaW9uKG9uKVxuIjsKKyAgICBj
b21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkNvZGUoImFuZ2xl
X2ZybSIpKTsKK30KKworVEVTVF9GKE5vRGVidWdTaGFkZXJQcmVjaXNpb25UZXN0LCBIZWxwZXJz
V3JpdHRlbk9ubHlXaXRoRXh0ZW5zaW9uKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFk
ZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAg
ICJ1bmlmb3JtIGZsb2F0IHU7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAg
ICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHUpO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21w
aWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX0ZBTFNFKGZvdW5kSW5Db2RlKCJhbmdsZV9m
cm0iKSk7Cit9CisKK1RFU1RfRihOb0RlYnVnU2hhZGVyUHJlY2lzaW9uVGVzdCwgUHJhZ21hSGFz
RWZmZWN0c09ubHlXaXRoRXh0ZW5zaW9uKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFk
ZXJTdHJpbmcgPQorICAgICAgICAiI3ByYWdtYSB3ZWJnbF9kZWJ1Z19zaGFkZXJfcHJlY2lzaW9u
KG9uKVxuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ1
bmlmb3JtIGZsb2F0IHU7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIg
ICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHUpO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxl
KHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX0ZBTFNFKGZvdW5kSW5Db2RlKCJhbmdsZV9mcm0i
KSk7Cit9CisKK1RFU1RfRihEZWJ1Z1NoYWRlclByZWNpc2lvblRlc3QsIERlY2xhcmF0aW9uc0Fu
ZENvbnN0YW50cykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAg
ICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidW5pZm9ybSB2ZWM0
IGY7XG4iCisgICAgICAgICJ1bmlmb3JtIGZsb2F0IHV1LCB1dTI7XG4iCisgICAgICAgICJ2YXJ5
aW5nIGZsb2F0IHZ2LCB2djI7XG4iCisgICAgICAgICJmbG9hdCBnZyA9IDAuMCwgZ2cyO1xuIgor
ICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgZmxvYXQgYWEgPSAwLjAsIGFh
MjtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IGY7XG4iCisgICAgICAgICJ9XG4iOwor
ICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICAvLyBEZWNsYXJhdGlvbnMgb3IgY29uc3Rh
bnRzIHNob3VsZCBub3QgaGF2ZSByb3VuZGluZyBpbnNlcnRlZCBhcm91bmQgdGhlbQorICAgIEFT
U0VSVF9UUlVFKG5vdEZvdW5kSW5Db2RlKCJhbmdsZV9mcm0oMCIpKTsKKyAgICBBU1NFUlRfVFJV
RShub3RGb3VuZEluQ29kZSgiYW5nbGVfZnJtKHV1IikpOworICAgIEFTU0VSVF9UUlVFKG5vdEZv
dW5kSW5Db2RlKCJhbmdsZV9mcm0odnYiKSk7CisgICAgQVNTRVJUX1RSVUUobm90Rm91bmRJbkNv
ZGUoImFuZ2xlX2ZybShnZyIpKTsKKyAgICBBU1NFUlRfVFJVRShub3RGb3VuZEluQ29kZSgiYW5n
bGVfZnJtKGFhIikpOworfQorCisvLyBUZXN0IHRoYXQgZXhwcmVzc2lvbnMgdGhhdCBhcmUgcGFy
dCBvZiBpbml0aWFsaXphdGlvbiBoYXZlIHJvdW5kaW5nLgorVEVTVF9GKERlYnVnU2hhZGVyUHJl
Y2lzaW9uVGVzdCwgSW5pdGlhbGl6ZXJSb3VuZGluZykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgor
ICAgICAgICAidW5pZm9ybSBmbG9hdCB1O1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgor
ICAgICAgICAiICAgZmxvYXQgYSA9IHU7XG4iCisgICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2
ZWM0KGEpO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Cisg
ICAgLy8gQW4gZXhwcmVzc2lvbiB0aGF0J3MgcGFydCBvZiBpbml0aWFsaXphdGlvbiBzaG91bGQg
aGF2ZSByb3VuZGluZworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgiYW5nbGVf
ZnJtKHUpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiYW5nbGVfZnJtKF91
KSIpKTsKK30KKworLy8gVGVzdCB0aGF0IGNvbXBvdW5kIGFkZGl0aW9ucyBoYXZlIHJvdW5kaW5n
IGluIHRoZSBHTFNMIHRyYW5zbGF0aW9ucy4KK1RFU1RfRihEZWJ1Z1NoYWRlclByZWNpc2lvblRl
c3QsIENvbXBvdW5kQWRkRnVuY3Rpb24pCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRl
clN0cmluZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAg
InVuaWZvcm0gdmVjNCB1O1xuIgorICAgICAgICAidW5pZm9ybSB2ZWM0IHUyO1xuIgorICAgICAg
ICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgdmVjNCB2ID0gdTtcbiIKKyAgICAgICAg
IiAgIHYgKz0gdTI7XG4iCisgICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2O1xuIgorICAgICAg
ICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX1RSVUUoZm91
bmRJbkVTU0xDb2RlKAorICAgICAgICAiaGlnaHAgdmVjNCBhbmdsZV9jb21wb3VuZF9hZGRfZnJt
KGlub3V0IGhpZ2hwIHZlYzQgeCwgaW4gaGlnaHAgdmVjNCB5KSB7XG4iCisgICAgICAgICIgICAg
eCA9IGFuZ2xlX2ZybShhbmdsZV9mcm0oeCkgKyB5KTsiCisgICAgKSk7CisgICAgQVNTRVJUX1RS
VUUoZm91bmRJbkdMU0xDb2RlKAorICAgICAgICAidmVjNCBhbmdsZV9jb21wb3VuZF9hZGRfZnJt
KGlub3V0IHZlYzQgeCwgaW4gdmVjNCB5KSB7XG4iCisgICAgICAgICIgICAgeCA9IGFuZ2xlX2Zy
bShhbmdsZV9mcm0oeCkgKyB5KTsiCisgICAgKSk7CisgICAgQVNTRVJUX1RSVUUoCisgICAgICAg
IGZvdW5kSW5ITFNMQ29kZSgiZmxvYXQ0IGFuZ2xlX2NvbXBvdW5kX2FkZF9mcm0oaW5vdXQgZmxv
YXQ0IHgsIGluIGZsb2F0NCB5KSB7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHgg
PSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICsgeSk7IikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5k
SW5BbGxHTFNMQ29kZSgiYW5nbGVfY29tcG91bmRfYWRkX2ZybSh2LCBhbmdsZV9mcm0odTIpKTsi
KSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJhbmdsZV9jb21wb3VuZF9hZGRf
ZnJtKF92LCBhbmdsZV9mcm0oX3UyKSk7IikpOworICAgIEFTU0VSVF9UUlVFKG5vdEZvdW5kSW5D
b2RlKCIrPSIpKTsKK30KKworVEVTVF9GKERlYnVnU2hhZGVyUHJlY2lzaW9uVGVzdCwgQ29tcG91
bmRTdWJGdW5jdGlvbikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0K
KyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidW5pZm9ybSB2
ZWM0IHU7XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzQgdTI7XG4iCisgICAgICAgICJ2b2lkIG1h
aW4oKSB7XG4iCisgICAgICAgICIgICB2ZWM0IHYgPSB1O1xuIgorICAgICAgICAiICAgdiAtPSB1
MjtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHY7XG4iCisgICAgICAgICJ9XG4iOwor
ICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluRVNTTENv
ZGUoCisgICAgICAgICJoaWdocCB2ZWM0IGFuZ2xlX2NvbXBvdW5kX3N1Yl9mcm0oaW5vdXQgaGln
aHAgdmVjNCB4LCBpbiBoaWdocCB2ZWM0IHkpIHtcbiIKKyAgICAgICAgIiAgICB4ID0gYW5nbGVf
ZnJtKGFuZ2xlX2ZybSh4KSAtIHkpOyIKKyAgICApKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZElu
R0xTTENvZGUoCisgICAgICAgICJ2ZWM0IGFuZ2xlX2NvbXBvdW5kX3N1Yl9mcm0oaW5vdXQgdmVj
NCB4LCBpbiB2ZWM0IHkpIHtcbiIKKyAgICAgICAgIiAgICB4ID0gYW5nbGVfZnJtKGFuZ2xlX2Zy
bSh4KSAtIHkpOyIKKyAgICApKTsKKyAgICBBU1NFUlRfVFJVRSgKKyAgICAgICAgZm91bmRJbkhM
U0xDb2RlKCJmbG9hdDQgYW5nbGVfY29tcG91bmRfc3ViX2ZybShpbm91dCBmbG9hdDQgeCwgaW4g
ZmxvYXQ0IHkpIHtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICIgICAgeCA9IGFuZ2xlX2Zy
bShhbmdsZV9mcm0oeCkgLSB5KTsiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xD
b2RlKCJhbmdsZV9jb21wb3VuZF9zdWJfZnJtKHYsIGFuZ2xlX2ZybSh1MikpOyIpKTsKKyAgICBB
U1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoImFuZ2xlX2NvbXBvdW5kX3N1Yl9mcm0oX3YsIGFu
Z2xlX2ZybShfdTIpKTsiKSk7CisgICAgQVNTRVJUX1RSVUUobm90Rm91bmRJbkNvZGUoIi09Iikp
OworfQorCitURVNUX0YoRGVidWdTaGFkZXJQcmVjaXNpb25UZXN0LCBDb21wb3VuZERpdkZ1bmN0
aW9uKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAi
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzQgdTtcbiIK
KyAgICAgICAgInVuaWZvcm0gdmVjNCB1MjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIK
KyAgICAgICAgIiAgIHZlYzQgdiA9IHU7XG4iCisgICAgICAgICIgICB2IC89IHUyO1xuIgorICAg
ICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdjtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGls
ZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgKKyAgICAg
ICAgImhpZ2hwIHZlYzQgYW5nbGVfY29tcG91bmRfZGl2X2ZybShpbm91dCBoaWdocCB2ZWM0IHgs
IGluIGhpZ2hwIHZlYzQgeSkge1xuIgorICAgICAgICAiICAgIHggPSBhbmdsZV9mcm0oYW5nbGVf
ZnJtKHgpIC8geSk7IgorICAgICkpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5HTFNMQ29kZSgK
KyAgICAgICAgInZlYzQgYW5nbGVfY29tcG91bmRfZGl2X2ZybShpbm91dCB2ZWM0IHgsIGluIHZl
YzQgeSkge1xuIgorICAgICAgICAiICAgIHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpIC8geSk7
IgorICAgICkpOworICAgIEFTU0VSVF9UUlVFKAorICAgICAgICBmb3VuZEluSExTTENvZGUoImZs
b2F0NCBhbmdsZV9jb21wb3VuZF9kaXZfZnJtKGlub3V0IGZsb2F0NCB4LCBpbiBmbG9hdDQgeSkg
e1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB4ID0gYW5nbGVfZnJtKGFuZ2xlX2Zy
bSh4KSAvIHkpOyIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoImFuZ2xl
X2NvbXBvdW5kX2Rpdl9mcm0odiwgYW5nbGVfZnJtKHUyKSk7IikpOworICAgIEFTU0VSVF9UUlVF
KGZvdW5kSW5ITFNMQ29kZSgiYW5nbGVfY29tcG91bmRfZGl2X2ZybShfdiwgYW5nbGVfZnJtKF91
MikpOyIpKTsKKyAgICBBU1NFUlRfVFJVRShub3RGb3VuZEluQ29kZSgiLz0iKSk7Cit9CisKK1RF
U1RfRihEZWJ1Z1NoYWRlclByZWNpc2lvblRlc3QsIENvbXBvdW5kTXVsRnVuY3Rpb24pCit7Cisg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gdmVjNCB1O1xuIgorICAgICAgICAi
dW5pZm9ybSB2ZWM0IHUyO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAi
ICAgdmVjNCB2ID0gdTtcbiIKKyAgICAgICAgIiAgIHYgKj0gdTI7XG4iCisgICAgICAgICIgICBn
bF9GcmFnQ29sb3IgPSB2O1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0
cmluZyk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKAorICAgICAgICAiaGlnaHAg
dmVjNCBhbmdsZV9jb21wb3VuZF9tdWxfZnJtKGlub3V0IGhpZ2hwIHZlYzQgeCwgaW4gaGlnaHAg
dmVjNCB5KSB7XG4iCisgICAgICAgICIgICAgeCA9IGFuZ2xlX2ZybShhbmdsZV9mcm0oeCkgKiB5
KTsiCisgICAgKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKAorICAgICAgICAi
dmVjNCBhbmdsZV9jb21wb3VuZF9tdWxfZnJtKGlub3V0IHZlYzQgeCwgaW4gdmVjNCB5KSB7XG4i
CisgICAgICAgICIgICAgeCA9IGFuZ2xlX2ZybShhbmdsZV9mcm0oeCkgKiB5KTsiCisgICAgKSk7
CisgICAgQVNTRVJUX1RSVUUoCisgICAgICAgIGZvdW5kSW5ITFNMQ29kZSgiZmxvYXQ0IGFuZ2xl
X2NvbXBvdW5kX211bF9mcm0oaW5vdXQgZmxvYXQ0IHgsIGluIGZsb2F0NCB5KSB7XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAiICAgIHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICogeSk7
IikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgiYW5nbGVfY29tcG91bmRf
bXVsX2ZybSh2LCBhbmdsZV9mcm0odTIpKTsiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhM
U0xDb2RlKCJhbmdsZV9jb21wb3VuZF9tdWxfZnJtKF92LCBhbmdsZV9mcm0oX3UyKSk7IikpOwor
ICAgIEFTU0VSVF9UUlVFKG5vdEZvdW5kSW5Db2RlKCIqPSIpKTsKK30KKworVEVTVF9GKERlYnVn
U2hhZGVyUHJlY2lzaW9uVGVzdCwgQ29tcG91bmRBZGRWZWN0b3JQbHVzU2NhbGFyRnVuY3Rpb24p
Cit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gdmVjNCB1O1xuIgorICAg
ICAgICAidW5pZm9ybSBmbG9hdCB1MjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAg
ICAgICAgIiAgIHZlYzQgdiA9IHU7XG4iCisgICAgICAgICIgICB2ICs9IHUyO1xuIgorICAgICAg
ICAiICAgZ2xfRnJhZ0NvbG9yID0gdjtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShz
aGFkZXJTdHJpbmcpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgKKyAgICAgICAg
ImhpZ2hwIHZlYzQgYW5nbGVfY29tcG91bmRfYWRkX2ZybShpbm91dCBoaWdocCB2ZWM0IHgsIGlu
IGhpZ2hwIGZsb2F0IHkpIHtcbiIKKyAgICAgICAgIiAgICB4ID0gYW5nbGVfZnJtKGFuZ2xlX2Zy
bSh4KSArIHkpOyIKKyAgICApKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluR0xTTENvZGUoCisg
ICAgICAgICJ2ZWM0IGFuZ2xlX2NvbXBvdW5kX2FkZF9mcm0oaW5vdXQgdmVjNCB4LCBpbiBmbG9h
dCB5KSB7XG4iCisgICAgICAgICIgICAgeCA9IGFuZ2xlX2ZybShhbmdsZV9mcm0oeCkgKyB5KTsi
CisgICAgKSk7CisgICAgQVNTRVJUX1RSVUUoCisgICAgICAgIGZvdW5kSW5ITFNMQ29kZSgiZmxv
YXQ0IGFuZ2xlX2NvbXBvdW5kX2FkZF9mcm0oaW5vdXQgZmxvYXQ0IHgsIGluIGZsb2F0IHkpIHtc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICIgICAgeCA9IGFuZ2xlX2ZybShhbmdsZV9mcm0o
eCkgKyB5KTsiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJhbmdsZV9j
b21wb3VuZF9hZGRfZnJtKHYsIGFuZ2xlX2ZybSh1MikpOyIpKTsKKyAgICBBU1NFUlRfVFJVRShm
b3VuZEluSExTTENvZGUoImFuZ2xlX2NvbXBvdW5kX2FkZF9mcm0oX3YsIGFuZ2xlX2ZybShfdTIp
KTsiKSk7CisgICAgQVNTRVJUX1RSVUUobm90Rm91bmRJbkNvZGUoIis9IikpOworfQorCitURVNU
X0YoRGVidWdTaGFkZXJQcmVjaXNpb25UZXN0LCBDb21wb3VuZE1hdHJpeFRpbWVzTWF0cml4RnVu
Y3Rpb24pCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAg
ICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gbWF0NCB1O1xu
IgorICAgICAgICAidW5pZm9ybSBtYXQ0IHUyO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xu
IgorICAgICAgICAiICAgbWF0NCBtID0gdTtcbiIKKyAgICAgICAgIiAgIG0gKj0gdTI7XG4iCisg
ICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSBtWzBdO1xuIgorICAgICAgICAifVxuIjsKKyAgICBj
b21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKAor
ICAgICAgICAiaGlnaHAgbWF0NCBhbmdsZV9jb21wb3VuZF9tdWxfZnJtKGlub3V0IGhpZ2hwIG1h
dDQgeCwgaW4gaGlnaHAgbWF0NCB5KSB7XG4iCisgICAgICAgICIgICAgeCA9IGFuZ2xlX2ZybShh
bmdsZV9mcm0oeCkgKiB5KTsiCisgICAgKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xD
b2RlKAorICAgICAgICAibWF0NCBhbmdsZV9jb21wb3VuZF9tdWxfZnJtKGlub3V0IG1hdDQgeCwg
aW4gbWF0NCB5KSB7XG4iCisgICAgICAgICIgICAgeCA9IGFuZ2xlX2ZybShhbmdsZV9mcm0oeCkg
KiB5KTsiCisgICAgKSk7CisgICAgQVNTRVJUX1RSVUUoCisgICAgICAgIGZvdW5kSW5ITFNMQ29k
ZSgiZmxvYXQ0eDQgYW5nbGVfY29tcG91bmRfbXVsX2ZybShpbm91dCBmbG9hdDR4NCB4LCBpbiBm
bG9hdDR4NCB5KSB7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHggPSBhbmdsZV9m
cm0oYW5nbGVfZnJtKHgpICogeSk7IikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNM
Q29kZSgiYW5nbGVfY29tcG91bmRfbXVsX2ZybShtLCBhbmdsZV9mcm0odTIpKTsiKSk7CisgICAg
QVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJhbmdsZV9jb21wb3VuZF9tdWxfZnJtKF9tLCBh
bmdsZV9mcm0oX3UyKSk7IikpOworICAgIEFTU0VSVF9UUlVFKG5vdEZvdW5kSW5Db2RlKCIqPSIp
KTsKK30KKworLy8gVGVzdCB0aGF0IGNvbXBvdW5kIG11bHRpcGx5aW5nIGEgbm9uLXNxdWFyZSBt
YXRyaXggd2l0aCBhbm90aGVyIG1hdHJpeCBnZXRzIHRyYW5zbGF0ZWQgaW50byBhbgorLy8gYW5n
bGVfY29tcG91bmRfbXVsIGZ1bmN0aW9uIGNhbGwuCitURVNUX0YoRGVidWdTaGFkZXJQcmVjaXNp
b25UZXN0LCBDb21wb3VuZE5vblNxdWFyZU1hdHJpeFRpbWVzTWF0cml4RnVuY3Rpb24pCit7Cisg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAz
MDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAi
dW5pZm9ybSBtYXQyeDQgdTtcbiIKKyAgICAgICAgInVuaWZvcm0gbWF0MiB1MjtcbiIKKyAgICAg
ICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIK
KyAgICAgICAgIiAgIG1hdDJ4NCBtID0gdTtcbiIKKyAgICAgICAgIiAgIG0gKj0gdTI7XG4iCisg
ICAgICAgICIgICBteV9GcmFnQ29sb3IgPSBtWzBdO1xuIgorICAgICAgICAifVxuIjsKKyAgICBj
b21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKAor
ICAgICAgICAiaGlnaHAgbWF0Mng0IGFuZ2xlX2NvbXBvdW5kX211bF9mcm0oaW5vdXQgaGlnaHAg
bWF0Mng0IHgsIGluIGhpZ2hwIG1hdDIgeSkge1xuIgorICAgICAgICAiICAgIHggPSBhbmdsZV9m
cm0oYW5nbGVfZnJtKHgpICogeSk7IikpOworICAgIEFTU0VSVF9UUlVFKAorICAgICAgICBmb3Vu
ZEluR0xTTENvZGUoIm1hdDJ4NCBhbmdsZV9jb21wb3VuZF9tdWxfZnJtKGlub3V0IG1hdDJ4NCB4
LCBpbiBtYXQyIHkpIHtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICIgICAgeCA9IGFuZ2xl
X2ZybShhbmdsZV9mcm0oeCkgKiB5KTsiKSk7CisgICAgQVNTRVJUX1RSVUUoCisgICAgICAgIGZv
dW5kSW5ITFNMQ29kZSgiZmxvYXQyeDQgYW5nbGVfY29tcG91bmRfbXVsX2ZybShpbm91dCBmbG9h
dDJ4NCB4LCBpbiBmbG9hdDJ4MiB5KSB7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiICAg
IHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICogeSk7IikpOworICAgIEFTU0VSVF9UUlVFKGZv
dW5kSW5BbGxHTFNMQ29kZSgiYW5nbGVfY29tcG91bmRfbXVsX2ZybShtLCBhbmdsZV9mcm0odTIp
KTsiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJhbmdsZV9jb21wb3VuZF9t
dWxfZnJtKF9tLCBhbmdsZV9mcm0oX3UyKSk7IikpOworICAgIEFTU0VSVF9UUlVFKG5vdEZvdW5k
SW5Db2RlKCIqPSIpKTsKK30KKworVEVTVF9GKERlYnVnU2hhZGVyUHJlY2lzaW9uVGVzdCwgQ29t
cG91bmRNYXRyaXhUaW1lc1NjYWxhckZ1bmN0aW9uKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisg
ICAgICAgICJ1bmlmb3JtIG1hdDQgdTtcbiIKKyAgICAgICAgInVuaWZvcm0gZmxvYXQgdTI7XG4i
CisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBtYXQ0IG0gPSB1O1xuIgor
ICAgICAgICAiICAgbSAqPSB1MjtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IG1bMF07
XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBBU1NF
UlRfVFJVRShmb3VuZEluRVNTTENvZGUoCisgICAgICAgICJoaWdocCBtYXQ0IGFuZ2xlX2NvbXBv
dW5kX211bF9mcm0oaW5vdXQgaGlnaHAgbWF0NCB4LCBpbiBoaWdocCBmbG9hdCB5KSB7XG4iCisg
ICAgICAgICIgICAgeCA9IGFuZ2xlX2ZybShhbmdsZV9mcm0oeCkgKiB5KTsiCisgICAgKSk7Cisg
ICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKAorICAgICAgICAibWF0NCBhbmdsZV9jb21w
b3VuZF9tdWxfZnJtKGlub3V0IG1hdDQgeCwgaW4gZmxvYXQgeSkge1xuIgorICAgICAgICAiICAg
IHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICogeSk7IgorICAgICkpOworICAgIEFTU0VSVF9U
UlVFKAorICAgICAgICBmb3VuZEluSExTTENvZGUoImZsb2F0NHg0IGFuZ2xlX2NvbXBvdW5kX211
bF9mcm0oaW5vdXQgZmxvYXQ0eDQgeCwgaW4gZmxvYXQgeSkge1xuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgIiAgICB4ID0gYW5nbGVfZnJtKGFuZ2xlX2ZybSh4KSAqIHkpOyIpKTsKKyAgICBB
U1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoImFuZ2xlX2NvbXBvdW5kX211bF9mcm0obSwg
YW5nbGVfZnJtKHUyKSk7IikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiYW5n
bGVfY29tcG91bmRfbXVsX2ZybShfbSwgYW5nbGVfZnJtKF91MikpOyIpKTsKKyAgICBBU1NFUlRf
VFJVRShub3RGb3VuZEluQ29kZSgiKj0iKSk7Cit9CisKK1RFU1RfRihEZWJ1Z1NoYWRlclByZWNp
c2lvblRlc3QsIENvbXBvdW5kVmVjdG9yVGltZXNNYXRyaXhGdW5jdGlvbikKK3sKKyAgICBjb25z
dCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0O1xuIgorICAgICAgICAidW5pZm9ybSB2ZWM0IHU7XG4iCisgICAgICAgICJ1bmlmb3Jt
IG1hdDQgdTI7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICB2ZWM0
IHYgPSB1O1xuIgorICAgICAgICAiICAgdiAqPSB1MjtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdD
b2xvciA9IHY7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsK
KyAgICBBU1NFUlRfVFJVRShmb3VuZEluRVNTTENvZGUoCisgICAgICAgICJoaWdocCB2ZWM0IGFu
Z2xlX2NvbXBvdW5kX211bF9mcm0oaW5vdXQgaGlnaHAgdmVjNCB4LCBpbiBoaWdocCBtYXQ0IHkp
IHtcbiIKKyAgICAgICAgIiAgICB4ID0gYW5nbGVfZnJtKGFuZ2xlX2ZybSh4KSAqIHkpOyIKKyAg
ICApKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluR0xTTENvZGUoInZlYzQgYW5nbGVfY29tcG91
bmRfbXVsX2ZybShpbm91dCB2ZWM0IHgsIGluIG1hdDQgeSkge1xuIgorICAgICAgICAiICAgIHgg
PSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICogeSk7IgorICAgICkpOworICAgIEFTU0VSVF9UUlVF
KAorICAgICAgICBmb3VuZEluSExTTENvZGUoImZsb2F0NCBhbmdsZV9jb21wb3VuZF9tdWxfZnJt
KGlub3V0IGZsb2F0NCB4LCBpbiBmbG9hdDR4NCB5KSB7XG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAiICAgIHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICogeSk7IikpOworICAgIEFTU0VS
VF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgiYW5nbGVfY29tcG91bmRfbXVsX2ZybSh2LCBhbmds
ZV9mcm0odTIpKTsiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJhbmdsZV9j
b21wb3VuZF9tdWxfZnJtKF92LCBhbmdsZV9mcm0oX3UyKSk7IikpOworICAgIEFTU0VSVF9UUlVF
KG5vdEZvdW5kSW5Db2RlKCIqPSIpKTsKK30KKworVEVTVF9GKERlYnVnU2hhZGVyUHJlY2lzaW9u
VGVzdCwgQ29tcG91bmRWZWN0b3JUaW1lc1NjYWxhckZ1bmN0aW9uKQoreworICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzQgdTtcbiIKKyAgICAgICAgInVuaWZvcm0gZmxv
YXQgdTI7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICB2ZWM0IHYg
PSB1O1xuIgorICAgICAgICAiICAgdiAqPSB1MjtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xv
ciA9IHY7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAg
ICBBU1NFUlRfVFJVRShmb3VuZEluRVNTTENvZGUoCisgICAgICAgICJoaWdocCB2ZWM0IGFuZ2xl
X2NvbXBvdW5kX211bF9mcm0oaW5vdXQgaGlnaHAgdmVjNCB4LCBpbiBoaWdocCBmbG9hdCB5KSB7
XG4iCisgICAgICAgICIgICAgeCA9IGFuZ2xlX2ZybShhbmdsZV9mcm0oeCkgKiB5KTsiCisgICAg
KSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKAorICAgICAgICAidmVjNCBhbmds
ZV9jb21wb3VuZF9tdWxfZnJtKGlub3V0IHZlYzQgeCwgaW4gZmxvYXQgeSkge1xuIgorICAgICAg
ICAiICAgIHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICogeSk7IgorICAgICkpOworICAgIEFT
U0VSVF9UUlVFKAorICAgICAgICBmb3VuZEluSExTTENvZGUoImZsb2F0NCBhbmdsZV9jb21wb3Vu
ZF9tdWxfZnJtKGlub3V0IGZsb2F0NCB4LCBpbiBmbG9hdCB5KSB7XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAiICAgIHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICogeSk7IikpOworICAg
IEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgiYW5nbGVfY29tcG91bmRfbXVsX2ZybSh2
LCBhbmdsZV9mcm0odTIpKTsiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJh
bmdsZV9jb21wb3VuZF9tdWxfZnJtKF92LCBhbmdsZV9mcm0oX3UyKSk7IikpOworICAgIEFTU0VS
VF9UUlVFKG5vdEZvdW5kSW5Db2RlKCIqPSIpKTsKK30KKworVEVTVF9GKERlYnVnU2hhZGVyUHJl
Y2lzaW9uVGVzdCwgQmluYXJ5TWF0aFJvdW5kaW5nKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisg
ICAgICAgICJ1bmlmb3JtIHZlYzQgdTE7XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzQgdTI7XG4i
CisgICAgICAgICJ1bmlmb3JtIHZlYzQgdTM7XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzQgdTQ7
XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzQgdTU7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7
XG4iCisgICAgICAgICIgICB2ZWM0IHYxID0gdTEgKyB1MjtcbiIKKyAgICAgICAgIiAgIHZlYzQg
djIgPSB1MiAtIHUzO1xuIgorICAgICAgICAiICAgdmVjNCB2MyA9IHUzICogdTQ7XG4iCisgICAg
ICAgICIgICB2ZWM0IHY0ID0gdTQgLyB1NTtcbiIKKyAgICAgICAgIiAgIHZlYzQgdjU7XG4iCisg
ICAgICAgICIgICB2ZWM0IHY2ID0gKHY1ID0gdTUpO1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0Nv
bG9yID0gdjEgKyB2MiArIHYzICsgdjQ7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUo
c2hhZGVyU3RyaW5nKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoInYxID0g
YW5nbGVfZnJtKChhbmdsZV9mcm0odTEpICsgYW5nbGVfZnJtKHUyKSkpIikpOworICAgIEFTU0VS
VF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgidjIgPSBhbmdsZV9mcm0oKGFuZ2xlX2ZybSh1Mikg
LSBhbmdsZV9mcm0odTMpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2Rl
KCJ2MyA9IGFuZ2xlX2ZybSgoYW5nbGVfZnJtKHUzKSAqIGFuZ2xlX2ZybSh1NCkpKSIpKTsKKyAg
ICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoInY0ID0gYW5nbGVfZnJtKChhbmdsZV9m
cm0odTQpIC8gYW5nbGVfZnJtKHU1KSkpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxH
TFNMQ29kZSgidjYgPSBhbmdsZV9mcm0oKHY1ID0gYW5nbGVfZnJtKHU1KSkpIikpOworCisgICAg
QVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2MSA9IGFuZ2xlX2ZybSgoYW5nbGVfZnJtKF91
MSkgKyBhbmdsZV9mcm0oX3UyKSkpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29k
ZSgidjIgPSBhbmdsZV9mcm0oKGFuZ2xlX2ZybShfdTIpIC0gYW5nbGVfZnJtKF91MykpKSIpKTsK
KyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoInYzID0gYW5nbGVfZnJtKChhbmdsZV9m
cm0oX3UzKSAqIGFuZ2xlX2ZybShfdTQpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhM
U0xDb2RlKCJ2NCA9IGFuZ2xlX2ZybSgoYW5nbGVfZnJtKF91NCkgLyBhbmdsZV9mcm0oX3U1KSkp
IikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidjYgPSBhbmdsZV9mcm0oKF92
NSA9IGFuZ2xlX2ZybShfdTUpKSkiKSk7Cit9CisKK1RFU1RfRihEZWJ1Z1NoYWRlclByZWNpc2lv
blRlc3QsIEJ1aWx0SW5NYXRoRnVuY3Rpb25Sb3VuZGluZykKK3sKKyAgICBjb25zdCBzdGQ6OnN0
cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xu
IgorICAgICAgICAidW5pZm9ybSB2ZWM0IHUxO1xuIgorICAgICAgICAidW5pZm9ybSB2ZWM0IHUy
O1xuIgorICAgICAgICAidW5pZm9ybSB2ZWM0IHUzO1xuIgorICAgICAgICAidW5pZm9ybSBmbG9h
dCB1ZjtcbiIKKyAgICAgICAgInVuaWZvcm0gZmxvYXQgdWYyO1xuIgorICAgICAgICAidW5pZm9y
bSB2ZWMzIHVmMzE7XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzMgdWYzMjtcbiIKKyAgICAgICAg
InVuaWZvcm0gbWF0NCB1bTE7XG4iCisgICAgICAgICJ1bmlmb3JtIG1hdDQgdW0yO1xuIgorICAg
ICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgdmVjNCB2MSA9IHJhZGlhbnModTEp
O1xuIgorICAgICAgICAiICAgdmVjNCB2MiA9IGRlZ3JlZXModTEpO1xuIgorICAgICAgICAiICAg
dmVjNCB2MyA9IHNpbih1MSk7XG4iCisgICAgICAgICIgICB2ZWM0IHY0ID0gY29zKHUxKTtcbiIK
KyAgICAgICAgIiAgIHZlYzQgdjUgPSB0YW4odTEpO1xuIgorICAgICAgICAiICAgdmVjNCB2NiA9
IGFzaW4odTEpO1xuIgorICAgICAgICAiICAgdmVjNCB2NyA9IGFjb3ModTEpO1xuIgorICAgICAg
ICAiICAgdmVjNCB2OCA9IGF0YW4odTEpO1xuIgorICAgICAgICAiICAgdmVjNCB2OSA9IGF0YW4o
dTEsIHUyKTtcbiIKKyAgICAgICAgIiAgIHZlYzQgdjEwID0gcG93KHUxLCB1Mik7XG4iCisgICAg
ICAgICIgICB2ZWM0IHYxMSA9IGV4cCh1MSk7XG4iCisgICAgICAgICIgICB2ZWM0IHYxMiA9IGxv
Zyh1MSk7XG4iCisgICAgICAgICIgICB2ZWM0IHYxMyA9IGV4cDIodTEpO1xuIgorICAgICAgICAi
ICAgdmVjNCB2MTQgPSBsb2cyKHUxKTtcbiIKKyAgICAgICAgIiAgIHZlYzQgdjE1ID0gc3FydCh1
MSk7XG4iCisgICAgICAgICIgICB2ZWM0IHYxNiA9IGludmVyc2VzcXJ0KHUxKTtcbiIKKyAgICAg
ICAgIiAgIHZlYzQgdjE3ID0gYWJzKHUxKTtcbiIKKyAgICAgICAgIiAgIHZlYzQgdjE4ID0gc2ln
bih1MSk7XG4iCisgICAgICAgICIgICB2ZWM0IHYxOSA9IGZsb29yKHUxKTtcbiIKKyAgICAgICAg
IiAgIHZlYzQgdjIwID0gY2VpbCh1MSk7XG4iCisgICAgICAgICIgICB2ZWM0IHYyMSA9IGZyYWN0
KHUxKTtcbiIKKyAgICAgICAgIiAgIHZlYzQgdjIyID0gbW9kKHUxLCB1Zik7XG4iCisgICAgICAg
ICIgICB2ZWM0IHYyMyA9IG1vZCh1MSwgdTIpO1xuIgorICAgICAgICAiICAgdmVjNCB2MjQgPSBt
aW4odTEsIHVmKTtcbiIKKyAgICAgICAgIiAgIHZlYzQgdjI1ID0gbWluKHUxLCB1Mik7XG4iCisg
ICAgICAgICIgICB2ZWM0IHYyNiA9IG1heCh1MSwgdWYpO1xuIgorICAgICAgICAiICAgdmVjNCB2
MjcgPSBtYXgodTEsIHUyKTtcbiIKKyAgICAgICAgIiAgIHZlYzQgdjI4ID0gY2xhbXAodTEsIHUy
LCB1Myk7XG4iCisgICAgICAgICIgICB2ZWM0IHYyOSA9IGNsYW1wKHUxLCB1ZiwgdWYyKTtcbiIK
KyAgICAgICAgIiAgIHZlYzQgdjMwID0gbWl4KHUxLCB1MiwgdTMpO1xuIgorICAgICAgICAiICAg
dmVjNCB2MzEgPSBtaXgodTEsIHUyLCB1Zik7XG4iCisgICAgICAgICIgICB2ZWM0IHYzMiA9IHN0
ZXAodTEsIHUyKTtcbiIKKyAgICAgICAgIiAgIHZlYzQgdjMzID0gc3RlcCh1ZiwgdTEpO1xuIgor
ICAgICAgICAiICAgdmVjNCB2MzQgPSBzbW9vdGhzdGVwKHUxLCB1MiwgdTMpO1xuIgorICAgICAg
ICAiICAgdmVjNCB2MzUgPSBzbW9vdGhzdGVwKHVmLCB1ZjIsIHUxKTtcbiIKKyAgICAgICAgIiAg
IHZlYzQgdjM2ID0gbm9ybWFsaXplKHUxKTtcbiIKKyAgICAgICAgIiAgIHZlYzQgdjM3ID0gZmFj
ZWZvcndhcmQodTEsIHUyLCB1Myk7XG4iCisgICAgICAgICIgICB2ZWM0IHYzOCA9IHJlZmxlY3Qo
dTEsIHUyKTtcbiIKKyAgICAgICAgIiAgIHZlYzQgdjM5ID0gcmVmcmFjdCh1MSwgdTIsIHVmKTtc
biIKKworICAgICAgICAiICAgZmxvYXQgZjEgPSBsZW5ndGgodTEpO1xuIgorICAgICAgICAiICAg
ZmxvYXQgZjIgPSBkaXN0YW5jZSh1MSwgdTIpO1xuIgorICAgICAgICAiICAgZmxvYXQgZjMgPSBk
b3QodTEsIHUyKTtcbiIKKyAgICAgICAgIiAgIHZlYzMgdmYzMSA9IGNyb3NzKHVmMzEsIHVmMzIp
O1xuIgorICAgICAgICAiICAgbWF0NCBtMSA9IG1hdHJpeENvbXBNdWx0KHVtMSwgdW0yKTtcbiIK
KworICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdjEgKyB2MiArIHYzICsgdjQgKyB2NSArIHY2
ICsgdjcgKyB2OCArIHY5ICsgdjEwICsiCisgICAgICAgICAgICAidjExICsgdjEyICsgdjEzICsg
djE0ICsgdjE1ICsgdjE2ICsgdjE3ICsgdjE4ICsgdjE5ICsgdjIwICsiCisgICAgICAgICAgICAi
djIxICsgdjIyICsgdjIzICsgdjI0ICsgdjI1ICsgdjI2ICsgdjI3ICsgdjI4ICsgdjI5ICsgdjMw
ICsiCisgICAgICAgICAgICAidjMxICsgdjMyICsgdjMzICsgdjM0ICsgdjM1ICsgdjM2ICsgdjM3
ICsgdjM4ICsgdjM5ICsiCisgICAgICAgICAgICAidmVjNChmMSwgZjIsIGYzLCAwLjApICsgdmVj
NCh2ZjMxLCAwLjApICsgbTFbMF07XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hh
ZGVyU3RyaW5nKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoInYxID0gYW5n
bGVfZnJtKHJhZGlhbnMoYW5nbGVfZnJtKHUxKSkpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5k
SW5BbGxHTFNMQ29kZSgidjIgPSBhbmdsZV9mcm0oZGVncmVlcyhhbmdsZV9mcm0odTEpKSkiKSk7
CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2MyA9IGFuZ2xlX2ZybShzaW4o
YW5nbGVfZnJtKHUxKSkpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgi
djQgPSBhbmdsZV9mcm0oY29zKGFuZ2xlX2ZybSh1MSkpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShm
b3VuZEluQWxsR0xTTENvZGUoInY1ID0gYW5nbGVfZnJtKHRhbihhbmdsZV9mcm0odTEpKSkiKSk7
CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2NiA9IGFuZ2xlX2ZybShhc2lu
KGFuZ2xlX2ZybSh1MSkpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUo
InY3ID0gYW5nbGVfZnJtKGFjb3MoYW5nbGVfZnJtKHUxKSkpIikpOworICAgIEFTU0VSVF9UUlVF
KGZvdW5kSW5BbGxHTFNMQ29kZSgidjggPSBhbmdsZV9mcm0oYXRhbihhbmdsZV9mcm0odTEpKSki
KSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2OSA9IGFuZ2xlX2ZybShh
dGFuKGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1MikpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShm
b3VuZEluQWxsR0xTTENvZGUoInYxMCA9IGFuZ2xlX2ZybShwb3coYW5nbGVfZnJtKHUxKSwgYW5n
bGVfZnJtKHUyKSkpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgidjEx
ID0gYW5nbGVfZnJtKGV4cChhbmdsZV9mcm0odTEpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91
bmRJbkFsbEdMU0xDb2RlKCJ2MTIgPSBhbmdsZV9mcm0obG9nKGFuZ2xlX2ZybSh1MSkpKSIpKTsK
KyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoInYxMyA9IGFuZ2xlX2ZybShleHAy
KGFuZ2xlX2ZybSh1MSkpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUo
InYxNCA9IGFuZ2xlX2ZybShsb2cyKGFuZ2xlX2ZybSh1MSkpKSIpKTsKKyAgICBBU1NFUlRfVFJV
RShmb3VuZEluQWxsR0xTTENvZGUoInYxNSA9IGFuZ2xlX2ZybShzcXJ0KGFuZ2xlX2ZybSh1MSkp
KSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoInYxNiA9IGFuZ2xlX2Zy
bShpbnZlcnNlc3FydChhbmdsZV9mcm0odTEpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJ
bkFsbEdMU0xDb2RlKCJ2MTcgPSBhbmdsZV9mcm0oYWJzKGFuZ2xlX2ZybSh1MSkpKSIpKTsKKyAg
ICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoInYxOCA9IGFuZ2xlX2ZybShzaWduKGFu
Z2xlX2ZybSh1MSkpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoInYx
OSA9IGFuZ2xlX2ZybShmbG9vcihhbmdsZV9mcm0odTEpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUo
Zm91bmRJbkFsbEdMU0xDb2RlKCJ2MjAgPSBhbmdsZV9mcm0oY2VpbChhbmdsZV9mcm0odTEpKSki
KSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2MjEgPSBhbmdsZV9mcm0o
ZnJhY3QoYW5nbGVfZnJtKHUxKSkpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNM
Q29kZSgidjIyID0gYW5nbGVfZnJtKG1vZChhbmdsZV9mcm0odTEpLCBhbmdsZV9mcm0odWYpKSki
KSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2MjMgPSBhbmdsZV9mcm0o
bW9kKGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1MikpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShm
b3VuZEluQWxsR0xTTENvZGUoInYyNCA9IGFuZ2xlX2ZybShtaW4oYW5nbGVfZnJtKHUxKSwgYW5n
bGVfZnJtKHVmKSkpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgidjI1
ID0gYW5nbGVfZnJtKG1pbihhbmdsZV9mcm0odTEpLCBhbmdsZV9mcm0odTIpKSkiKSk7CisgICAg
QVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2MjYgPSBhbmdsZV9mcm0obWF4KGFuZ2xl
X2ZybSh1MSksIGFuZ2xlX2ZybSh1ZikpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxs
R0xTTENvZGUoInYyNyA9IGFuZ2xlX2ZybShtYXgoYW5nbGVfZnJtKHUxKSwgYW5nbGVfZnJtKHUy
KSkpIikpOworICAgIEFTU0VSVF9UUlVFKAorICAgICAgICBmb3VuZEluQWxsR0xTTENvZGUoInYy
OCA9IGFuZ2xlX2ZybShjbGFtcChhbmdsZV9mcm0odTEpLCBhbmdsZV9mcm0odTIpLCBhbmdsZV9m
cm0odTMpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoCisgICAgICAgIGZvdW5kSW5BbGxHTFNMQ29k
ZSgidjI5ID0gYW5nbGVfZnJtKGNsYW1wKGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1ZiksIGFu
Z2xlX2ZybSh1ZjIpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoCisgICAgICAgIGZvdW5kSW5BbGxH
TFNMQ29kZSgidjMwID0gYW5nbGVfZnJtKG1peChhbmdsZV9mcm0odTEpLCBhbmdsZV9mcm0odTIp
LCBhbmdsZV9mcm0odTMpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoCisgICAgICAgIGZvdW5kSW5B
bGxHTFNMQ29kZSgidjMxID0gYW5nbGVfZnJtKG1peChhbmdsZV9mcm0odTEpLCBhbmdsZV9mcm0o
dTIpLCBhbmdsZV9mcm0odWYpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xD
b2RlKCJ2MzIgPSBhbmdsZV9mcm0oc3RlcChhbmdsZV9mcm0odTEpLCBhbmdsZV9mcm0odTIpKSki
KSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2MzMgPSBhbmdsZV9mcm0o
c3RlcChhbmdsZV9mcm0odWYpLCBhbmdsZV9mcm0odTEpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUo
Zm91bmRJbkFsbEdMU0xDb2RlKAorICAgICAgICAidjM0ID0gYW5nbGVfZnJtKHNtb290aHN0ZXAo
YW5nbGVfZnJtKHUxKSwgYW5nbGVfZnJtKHUyKSwgYW5nbGVfZnJtKHUzKSkpIikpOworICAgIEFT
U0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgKKyAgICAgICAgInYzNSA9IGFuZ2xlX2ZybShz
bW9vdGhzdGVwKGFuZ2xlX2ZybSh1ZiksIGFuZ2xlX2ZybSh1ZjIpLCBhbmdsZV9mcm0odTEpKSki
KSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2MzYgPSBhbmdsZV9mcm0o
bm9ybWFsaXplKGFuZ2xlX2ZybSh1MSkpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxs
R0xTTENvZGUoCisgICAgICAgICJ2MzcgPSBhbmdsZV9mcm0oZmFjZWZvcndhcmQoYW5nbGVfZnJt
KHUxKSwgYW5nbGVfZnJtKHUyKSwgYW5nbGVfZnJtKHUzKSkpIikpOworICAgIEFTU0VSVF9UUlVF
KGZvdW5kSW5BbGxHTFNMQ29kZSgidjM4ID0gYW5nbGVfZnJtKHJlZmxlY3QoYW5nbGVfZnJtKHUx
KSwgYW5nbGVfZnJtKHUyKSkpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29k
ZSgKKyAgICAgICAgInYzOSA9IGFuZ2xlX2ZybShyZWZyYWN0KGFuZ2xlX2ZybSh1MSksIGFuZ2xl
X2ZybSh1MiksIGFuZ2xlX2ZybSh1ZikpKSIpKTsKKworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5B
bGxHTFNMQ29kZSgiZjEgPSBhbmdsZV9mcm0obGVuZ3RoKGFuZ2xlX2ZybSh1MSkpKSIpKTsKKyAg
ICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoImYyID0gYW5nbGVfZnJtKGRpc3RhbmNl
KGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1MikpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3Vu
ZEluQWxsR0xTTENvZGUoImYzID0gYW5nbGVfZnJtKGRvdChhbmdsZV9mcm0odTEpLCBhbmdsZV9m
cm0odTIpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2ZjMxID0g
YW5nbGVfZnJtKGNyb3NzKGFuZ2xlX2ZybSh1ZjMxKSwgYW5nbGVfZnJtKHVmMzIpKSkiKSk7Cisg
ICAgQVNTRVJUX1RSVUUoCisgICAgICAgIGZvdW5kSW5BbGxHTFNMQ29kZSgibTEgPSBhbmdsZV9m
cm0obWF0cml4Q29tcE11bHQoYW5nbGVfZnJtKHVtMSksIGFuZ2xlX2ZybSh1bTIpKSkiKSk7CisK
KyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoInYxID0gYW5nbGVfZnJtKHJhZGlhbnMo
YW5nbGVfZnJtKF91MSkpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoInYy
ID0gYW5nbGVfZnJtKGRlZ3JlZXMoYW5nbGVfZnJtKF91MSkpKSIpKTsKKyAgICBBU1NFUlRfVFJV
RShmb3VuZEluSExTTENvZGUoInYzID0gYW5nbGVfZnJtKHNpbihhbmdsZV9mcm0oX3UxKSkpIikp
OworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidjQgPSBhbmdsZV9mcm0oY29zKGFu
Z2xlX2ZybShfdTEpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2NSA9
IGFuZ2xlX2ZybSh0YW4oYW5nbGVfZnJtKF91MSkpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3Vu
ZEluSExTTENvZGUoInY2ID0gYW5nbGVfZnJtKGFzaW4oYW5nbGVfZnJtKF91MSkpKSIpKTsKKyAg
ICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoInY3ID0gYW5nbGVfZnJtKGFjb3MoYW5nbGVf
ZnJtKF91MSkpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoInY4ID0gYW5n
bGVfZnJtKGF0YW4oYW5nbGVfZnJtKF91MSkpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZElu
SExTTENvZGUoInY5ID0gYW5nbGVfZnJtKHdlYmdsX2F0YW5fZW11KGFuZ2xlX2ZybShfdTEpLCBh
bmdsZV9mcm0oX3UyKSkpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidjEw
ID0gYW5nbGVfZnJtKHBvdyhhbmdsZV9mcm0oX3UxKSwgYW5nbGVfZnJtKF91MikpKSIpKTsKKyAg
ICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoInYxMSA9IGFuZ2xlX2ZybShleHAoYW5nbGVf
ZnJtKF91MSkpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoInYxMiA9IGFu
Z2xlX2ZybShsb2coYW5nbGVfZnJtKF91MSkpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZElu
SExTTENvZGUoInYxMyA9IGFuZ2xlX2ZybShleHAyKGFuZ2xlX2ZybShfdTEpKSkiKSk7CisgICAg
QVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2MTQgPSBhbmdsZV9mcm0obG9nMihhbmdsZV9m
cm0oX3UxKSkpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidjE1ID0gYW5n
bGVfZnJtKHNxcnQoYW5nbGVfZnJtKF91MSkpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZElu
SExTTENvZGUoInYxNiA9IGFuZ2xlX2ZybShyc3FydChhbmdsZV9mcm0oX3UxKSkpIikpOworICAg
IEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidjE3ID0gYW5nbGVfZnJtKGFicyhhbmdsZV9m
cm0oX3UxKSkpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidjE4ID0gYW5n
bGVfZnJtKHNpZ24oYW5nbGVfZnJtKF91MSkpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZElu
SExTTENvZGUoInYxOSA9IGFuZ2xlX2ZybShmbG9vcihhbmdsZV9mcm0oX3UxKSkpIikpOworICAg
IEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidjIwID0gYW5nbGVfZnJtKGNlaWwoYW5nbGVf
ZnJtKF91MSkpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoInYyMSA9IGFu
Z2xlX2ZybShmcmFjKGFuZ2xlX2ZybShfdTEpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJ
bkhMU0xDb2RlKCJ2MjIgPSBhbmdsZV9mcm0od2ViZ2xfbW9kX2VtdShhbmdsZV9mcm0oX3UxKSwg
YW5nbGVfZnJtKF91ZikpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoInYy
MyA9IGFuZ2xlX2ZybSh3ZWJnbF9tb2RfZW11KGFuZ2xlX2ZybShfdTEpLCBhbmdsZV9mcm0oX3Uy
KSkpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidjI0ID0gYW5nbGVfZnJt
KG1pbihhbmdsZV9mcm0oX3UxKSwgYW5nbGVfZnJtKF91ZikpKSIpKTsKKyAgICBBU1NFUlRfVFJV
RShmb3VuZEluSExTTENvZGUoInYyNSA9IGFuZ2xlX2ZybShtaW4oYW5nbGVfZnJtKF91MSksIGFu
Z2xlX2ZybShfdTIpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2MjYg
PSBhbmdsZV9mcm0obWF4KGFuZ2xlX2ZybShfdTEpLCBhbmdsZV9mcm0oX3VmKSkpIikpOworICAg
IEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidjI3ID0gYW5nbGVfZnJtKG1heChhbmdsZV9m
cm0oX3UxKSwgYW5nbGVfZnJtKF91MikpKSIpKTsKKyAgICBBU1NFUlRfVFJVRSgKKyAgICAgICAg
Zm91bmRJbkhMU0xDb2RlKCJ2MjggPSBhbmdsZV9mcm0oY2xhbXAoYW5nbGVfZnJtKF91MSksIGFu
Z2xlX2ZybShfdTIpLCBhbmdsZV9mcm0oX3UzKSkpIikpOworICAgIEFTU0VSVF9UUlVFKAorICAg
ICAgICBmb3VuZEluSExTTENvZGUoInYyOSA9IGFuZ2xlX2ZybShjbGFtcChhbmdsZV9mcm0oX3Ux
KSwgYW5nbGVfZnJtKF91ZiksIGFuZ2xlX2ZybShfdWYyKSkpIikpOworICAgIEFTU0VSVF9UUlVF
KAorICAgICAgICBmb3VuZEluSExTTENvZGUoInYzMCA9IGFuZ2xlX2ZybShsZXJwKGFuZ2xlX2Zy
bShfdTEpLCBhbmdsZV9mcm0oX3UyKSwgYW5nbGVfZnJtKF91MykpKSIpKTsKKyAgICBBU1NFUlRf
VFJVRSgKKyAgICAgICAgZm91bmRJbkhMU0xDb2RlKCJ2MzEgPSBhbmdsZV9mcm0obGVycChhbmds
ZV9mcm0oX3UxKSwgYW5nbGVfZnJtKF91MiksIGFuZ2xlX2ZybShfdWYpKSkiKSk7CisgICAgQVNT
RVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2MzIgPSBhbmdsZV9mcm0oc3RlcChhbmdsZV9mcm0o
X3UxKSwgYW5nbGVfZnJtKF91MikpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENv
ZGUoInYzMyA9IGFuZ2xlX2ZybShzdGVwKGFuZ2xlX2ZybShfdWYpLCBhbmdsZV9mcm0oX3UxKSkp
IikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgKKyAgICAgICAgInYzNCA9IGFu
Z2xlX2ZybShzbW9vdGhzdGVwKGFuZ2xlX2ZybShfdTEpLCBhbmdsZV9mcm0oX3UyKSwgYW5nbGVf
ZnJtKF91MykpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoCisgICAgICAg
ICJ2MzUgPSBhbmdsZV9mcm0oc21vb3Roc3RlcChhbmdsZV9mcm0oX3VmKSwgYW5nbGVfZnJtKF91
ZjIpLCBhbmdsZV9mcm0oX3UxKSkpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29k
ZSgidjM2ID0gYW5nbGVfZnJtKG5vcm1hbGl6ZShhbmdsZV9mcm0oX3UxKSkpIikpOworICAgIEFT
U0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgKKyAgICAgICAgInYzNyA9IGFuZ2xlX2ZybSh3ZWJn
bF9mYWNlZm9yd2FyZF9lbXUoYW5nbGVfZnJtKF91MSksIGFuZ2xlX2ZybShfdTIpLCBhbmdsZV9m
cm0oX3UzKSkpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidjM4ID0gYW5n
bGVfZnJtKHJlZmxlY3QoYW5nbGVfZnJtKF91MSksIGFuZ2xlX2ZybShfdTIpKSkiKSk7CisgICAg
QVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKAorICAgICAgICAidjM5ID0gYW5nbGVfZnJtKHJl
ZnJhY3QoYW5nbGVfZnJtKF91MSksIGFuZ2xlX2ZybShfdTIpLCBhbmdsZV9mcm0oX3VmKSkpIikp
OworCisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJmMSA9IGFuZ2xlX2ZybShsZW5n
dGgoYW5nbGVfZnJtKF91MSkpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUo
ImYyID0gYW5nbGVfZnJtKGRpc3RhbmNlKGFuZ2xlX2ZybShfdTEpLCBhbmdsZV9mcm0oX3UyKSkp
IikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiZjMgPSBhbmdsZV9mcm0oZG90
KGFuZ2xlX2ZybShfdTEpLCBhbmdsZV9mcm0oX3UyKSkpIikpOworICAgIEFTU0VSVF9UUlVFKGZv
dW5kSW5ITFNMQ29kZSgidmYzMSA9IGFuZ2xlX2ZybShjcm9zcyhhbmdsZV9mcm0oX3VmMzEpLCBh
bmdsZV9mcm0oX3VmMzIpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJt
MSA9IGFuZ2xlX2ZybSgoYW5nbGVfZnJtKF91bTEpICogYW5nbGVfZnJtKF91bTIpKSkiKSk7Cit9
CisKK1RFU1RfRihEZWJ1Z1NoYWRlclByZWNpc2lvblRlc3QsIEJ1aWx0SW5SZWxhdGlvbmFsRnVu
Y3Rpb25Sb3VuZGluZykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0K
KyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidW5pZm9ybSB2
ZWM0IHUxO1xuIgorICAgICAgICAidW5pZm9ybSB2ZWM0IHUyO1xuIgorICAgICAgICAidm9pZCBt
YWluKCkge1xuIgorICAgICAgICAiICAgYnZlYzQgYnYxID0gbGVzc1RoYW4odTEsIHUyKTtcbiIK
KyAgICAgICAgIiAgIGJ2ZWM0IGJ2MiA9IGxlc3NUaGFuRXF1YWwodTEsIHUyKTtcbiIKKyAgICAg
ICAgIiAgIGJ2ZWM0IGJ2MyA9IGdyZWF0ZXJUaGFuKHUxLCB1Mik7XG4iCisgICAgICAgICIgICBi
dmVjNCBidjQgPSBncmVhdGVyVGhhbkVxdWFsKHUxLCB1Mik7XG4iCisgICAgICAgICIgICBidmVj
NCBidjUgPSBlcXVhbCh1MSwgdTIpO1xuIgorICAgICAgICAiICAgYnZlYzQgYnY2ID0gbm90RXF1
YWwodTEsIHUyKTtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoYnYxKSArIHZl
YzQoYnYyKSArIHZlYzQoYnYzKSArIHZlYzQoYnY0KSArIHZlYzQoYnY1KSArIHZlYzQoYnY2KTtc
biIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VS
VF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgiYnYxID0gbGVzc1RoYW4oYW5nbGVfZnJtKHUxKSwg
YW5nbGVfZnJtKHUyKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJi
djIgPSBsZXNzVGhhbkVxdWFsKGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1MikpIikpOworICAg
IEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgiYnYzID0gZ3JlYXRlclRoYW4oYW5nbGVf
ZnJtKHUxKSwgYW5nbGVfZnJtKHUyKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdM
U0xDb2RlKCJidjQgPSBncmVhdGVyVGhhbkVxdWFsKGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1
MikpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgiYnY1ID0gZXF1YWwo
YW5nbGVfZnJtKHUxKSwgYW5nbGVfZnJtKHUyKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJ
bkFsbEdMU0xDb2RlKCJidjYgPSBub3RFcXVhbChhbmdsZV9mcm0odTEpLCBhbmdsZV9mcm0odTIp
KSIpKTsKKworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiYnYxID0gKGFuZ2xlX2Zy
bShfdTEpIDwgYW5nbGVfZnJtKF91MikpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNM
Q29kZSgiYnYyID0gKGFuZ2xlX2ZybShfdTEpIDw9IGFuZ2xlX2ZybShfdTIpKSIpKTsKKyAgICBB
U1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoImJ2MyA9IChhbmdsZV9mcm0oX3UxKSA+IGFuZ2xl
X2ZybShfdTIpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoImJ2NCA9IChh
bmdsZV9mcm0oX3UxKSA+PSBhbmdsZV9mcm0oX3UyKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91
bmRJbkhMU0xDb2RlKCJidjUgPSAoYW5nbGVfZnJtKF91MSkgPT0gYW5nbGVfZnJtKF91MikpIikp
OworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiYnY2ID0gKGFuZ2xlX2ZybShfdTEp
ICE9IGFuZ2xlX2ZybShfdTIpKSIpKTsKK30KKworVEVTVF9GKERlYnVnU2hhZGVyUHJlY2lzaW9u
VGVzdCwgQ29uc3RydWN0b3JSb3VuZGluZykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hh
ZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAg
ICAicHJlY2lzaW9uIG1lZGl1bXAgaW50O1xuIgorICAgICAgICAidW5pZm9ybSBmbG9hdCB1MTtc
biIKKyAgICAgICAgInVuaWZvcm0gZmxvYXQgdTI7XG4iCisgICAgICAgICJ1bmlmb3JtIGZsb2F0
IHUzO1xuIgorICAgICAgICAidW5pZm9ybSBmbG9hdCB1NDtcbiIKKyAgICAgICAgInVuaWZvcm0g
aXZlYzQgdWl2O1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgdmVj
NCB2MSA9IHZlYzQodTEsIHUyLCB1MywgdTQpO1xuIgorICAgICAgICAiICAgdmVjNCB2MiA9IHZl
YzQodWl2KTtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHYxICsgdjI7XG4iCisgICAg
ICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICAvLyBOb3RlOiB0aGlz
IGlzIHN1Ym9wdGltYWwgZm9yIHRoZSBjYXNlIHRha2luZyBmb3VyIGZsb2F0cywgYnV0IG9wdGlt
aXppbmcgd291bGQgYmUgdHJpY2t5LgorICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29k
ZSgKKyAgICAgICAgInYxID0gYW5nbGVfZnJtKHZlYzQoYW5nbGVfZnJtKHUxKSwgYW5nbGVfZnJt
KHUyKSwgYW5nbGVfZnJtKHUzKSwgYW5nbGVfZnJtKHU0KSkpIikpOworICAgIEFTU0VSVF9UUlVF
KGZvdW5kSW5BbGxHTFNMQ29kZSgidjIgPSBhbmdsZV9mcm0odmVjNCh1aXYpKSIpKTsKKworICAg
IEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgKKyAgICAgICAgInYxID0gYW5nbGVfZnJtKHZl
YzQoYW5nbGVfZnJtKF91MSksIGFuZ2xlX2ZybShfdTIpLCBhbmdsZV9mcm0oX3UzKSwgYW5nbGVf
ZnJtKF91NCkpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoInYyID0gYW5n
bGVfZnJtKHZlYzQoX3VpdikpIikpOworfQorCitURVNUX0YoRGVidWdTaGFkZXJQcmVjaXNpb25U
ZXN0LCBTdHJ1Y3RDb25zdHJ1Y3Rvck5vUm91bmRpbmcpCit7CisgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIK
KyAgICAgICAgInN0cnVjdCBTIHsgbWVkaXVtcCB2ZWM0IGE7IH07XG4iCisgICAgICAgICJ1bmlm
b3JtIHZlYzQgdTtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIFMg
cyA9IFModSk7XG4iCisgICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSBzLmE7XG4iCisgICAgICAg
ICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBBU1NFUlRfVFJVRShmb3Vu
ZEluQWxsR0xTTENvZGUoInMgPSBTKGFuZ2xlX2ZybSh1KSkiKSk7CisgICAgQVNTRVJUX1RSVUUo
Zm91bmRJbkhMU0xDb2RlKCJzID0gX1NfY3RvcihhbmdsZV9mcm0oX3UpKSIpKTsKKyAgICBBU1NF
UlRfVFJVRShub3RGb3VuZEluQ29kZSgiYW5nbGVfZnJtKFMiKSk7Cit9CisKK1RFU1RfRihEZWJ1
Z1NoYWRlclByZWNpc2lvblRlc3QsIFN3aXp6bGVSb3VuZGluZykKK3sKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
O1xuIgorICAgICAgICAidW5pZm9ybSB2ZWM0IHU7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7
XG4iCisgICAgICAgICIgICB2ZWM0IHYgPSB1Lnh5eHk7IgorICAgICAgICAiICAgZ2xfRnJhZ0Nv
bG9yID0gdjtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwor
ICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgidiA9IGFuZ2xlX2ZybSh1KS54eXh5
IikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidiA9IGFuZ2xlX2ZybShfdSku
eHl4eSIpKTsKK30KKworVEVTVF9GKERlYnVnU2hhZGVyUHJlY2lzaW9uVGVzdCwgQnVpbHRJblRl
eEZ1bmN0aW9uUm91bmRpbmcpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmlu
ZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInByZWNp
c2lvbiBsb3dwIHNhbXBsZXIyRDtcbiIKKyAgICAgICAgInVuaWZvcm0gdmVjMiB1O1xuIgorICAg
ICAgICAidW5pZm9ybSBzYW1wbGVyMkQgcztcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIK
KyAgICAgICAgIiAgIGxvd3AgdmVjNCB2ID0gdGV4dHVyZTJEKHMsIHUpO1xuIgorICAgICAgICAi
ICAgZ2xfRnJhZ0NvbG9yID0gdjtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFk
ZXJTdHJpbmcpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgidiA9IGFuZ2xl
X2ZybCh0ZXh0dXJlMkQocywgYW5nbGVfZnJtKHUpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91
bmRJbkhMU0xDb2RlKCJ2ID0gYW5nbGVfZnJsKGdsX3RleHR1cmUyRChfcywgYW5nbGVfZnJtKF91
KSkpIikpOworfQorCitURVNUX0YoRGVidWdTaGFkZXJQcmVjaXNpb25UZXN0LCBGdW5jdGlvbkNh
bGxQYXJhbWV0ZXJRdWFsaWZpZXJzRnJvbURlZmluaXRpb24pCit7CisgICAgY29uc3Qgc3RkOjpz
dHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtc
biIKKyAgICAgICAgInVuaWZvcm0gdmVjNCB1MTtcbiIKKyAgICAgICAgInVuaWZvcm0gdmVjNCB1
MjtcbiIKKyAgICAgICAgInVuaWZvcm0gdmVjNCB1MztcbiIKKyAgICAgICAgInVuaWZvcm0gdmVj
NCB1NDtcbiIKKyAgICAgICAgInVuaWZvcm0gdmVjNCB1NTtcbiIKKyAgICAgICAgInZlYzQgYWRk
KGluIHZlYzQgeCwgaW4gdmVjNCB5KSB7XG4iCisgICAgICAgICIgICByZXR1cm4geCArIHk7XG4i
CisgICAgICAgICJ9XG4iCisgICAgICAgICJ2b2lkIGNvbXBvdW5kX2FkZChpbm91dCB2ZWM0IHgs
IGluIHZlYzQgeSkge1xuIgorICAgICAgICAiICAgeCA9IHggKyB5O1xuIgorICAgICAgICAifVxu
IgorICAgICAgICAidm9pZCBhZGRfdG9fbGFzdChpbiB2ZWM0IHgsIGluIHZlYzQgeSwgb3V0IHZl
YzQgeikge1xuIgorICAgICAgICAiICAgeiA9IHggKyB5O1xuIgorICAgICAgICAifVxuIgorICAg
ICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgdmVjNCB2ID0gYWRkKHUxLCB1Mik7
XG4iCisgICAgICAgICIgICBjb21wb3VuZF9hZGQodiwgdTMpO1xuIgorICAgICAgICAiICAgdmVj
NCB2MjtcbiIKKyAgICAgICAgIiAgIGFkZF90b19sYXN0KHU0LCB1NSwgdjIpO1xuIgorICAgICAg
ICAiICAgZ2xfRnJhZ0NvbG9yID0gdiArIHYyO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21w
aWxlKHNoYWRlclN0cmluZyk7CisgICAgLy8gTm90ZSB0aGF0IHRoaXMgaXMgbm90IG9wdGltYWwg
Y29kZSwgdGhlcmUgYXJlIHJlZHVuZGFudCBmcm0gY2FsbHMuCisgICAgLy8gSG93ZXZlciwgZ2V0
dGluZyB0aGUgaW1wbGVtZW50YXRpb24gd29ya2luZyB3aGVuIG90aGVyIG9wZXJhdGlvbnMKKyAg
ICAvLyBhcmUgbmVzdGVkIHdpdGhpbiBmdW5jdGlvbiBjYWxscyB3b3VsZCBiZSB0cmlja3kgaWYg
dG8gZ2V0IHJpZ2h0CisgICAgLy8gb3RoZXJ3aXNlLgorICAgIC8vIFRlc3QgaW4gcGFyYW1ldGVy
cworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgidiA9IGFkZChhbmdsZV9mcm0o
dTEpLCBhbmdsZV9mcm0odTIpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUo
InYgPSBfYWRkX2Zsb2F0NF9mbG9hdDQoYW5nbGVfZnJtKF91MSksIGFuZ2xlX2ZybShfdTIpKSIp
KTsKKyAgICAvLyBUZXN0IGlub3V0IHBhcmFtZXRlcgorICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5B
bGxHTFNMQ29kZSgiY29tcG91bmRfYWRkKHYsIGFuZ2xlX2ZybSh1MykpIikpOworICAgIEFTU0VS
VF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiY29tcG91bmRfYWRkX2Zsb2F0NF9mbG9hdDQoX3YsIGFu
Z2xlX2ZybShfdTMpKSIpKTsKKyAgICAvLyBUZXN0IG91dCBwYXJhbWV0ZXIKKyAgICBBU1NFUlRf
VFJVRShmb3VuZEluQWxsR0xTTENvZGUoImFkZF90b19sYXN0KGFuZ2xlX2ZybSh1NCksIGFuZ2xl
X2ZybSh1NSksIHYyKSIpKTsKKyAgICBBU1NFUlRfVFJVRSgKKyAgICAgICAgZm91bmRJbkhMU0xD
b2RlKCJhZGRfdG9fbGFzdF9mbG9hdDRfZmxvYXQ0X2Zsb2F0NChhbmdsZV9mcm0oX3U0KSwgYW5n
bGVfZnJtKF91NSksIF92MikiKSk7Cit9CisKK1RFU1RfRihEZWJ1Z1NoYWRlclByZWNpc2lvblRl
c3QsIEZ1bmN0aW9uQ2FsbFBhcmFtZXRlclF1YWxpZmllcnNGcm9tUHJvdG90eXBlKQoreworICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzQgdTE7XG4iCisgICAgICAgICJ1
bmlmb3JtIHZlYzQgdTI7XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzQgdTM7XG4iCisgICAgICAg
ICJ1bmlmb3JtIHZlYzQgdTQ7XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzQgdTU7XG4iCisgICAg
ICAgICJ2ZWM0IGFkZChpbiB2ZWM0IHgsIGluIHZlYzQgeSk7XG4iCisgICAgICAgICJ2b2lkIGNv
bXBvdW5kX2FkZChpbm91dCB2ZWM0IHgsIGluIHZlYzQgeSk7XG4iCisgICAgICAgICJ2b2lkIGFk
ZF90b19sYXN0KGluIHZlYzQgeCwgaW4gdmVjNCB5LCBvdXQgdmVjNCB6KTtcbiIKKyAgICAgICAg
InZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIHZlYzQgdiA9IGFkZCh1MSwgdTIpO1xuIgor
ICAgICAgICAiICAgY29tcG91bmRfYWRkKHYsIHUzKTtcbiIKKyAgICAgICAgIiAgIHZlYzQgdjI7
XG4iCisgICAgICAgICIgICBhZGRfdG9fbGFzdCh1NCwgdTUsIHYyKTtcbiIKKyAgICAgICAgIiAg
IGdsX0ZyYWdDb2xvciA9IHYgKyB2MjtcbiIKKyAgICAgICAgIn1cbiIKKyAgICAgICAgInZlYzQg
YWRkKGluIHZlYzQgeCwgaW4gdmVjNCB5KSB7XG4iCisgICAgICAgICIgICByZXR1cm4geCArIHk7
XG4iCisgICAgICAgICJ9XG4iCisgICAgICAgICJ2b2lkIGNvbXBvdW5kX2FkZChpbm91dCB2ZWM0
IHgsIGluIHZlYzQgeSkge1xuIgorICAgICAgICAiICAgeCA9IHggKyB5O1xuIgorICAgICAgICAi
fVxuIgorICAgICAgICAidm9pZCBhZGRfdG9fbGFzdChpbiB2ZWM0IHgsIGluIHZlYzQgeSwgb3V0
IHZlYzQgeikge1xuIgorICAgICAgICAiICAgeiA9IHggKyB5O1xuIgorICAgICAgICAifVxuIjsK
KyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgLy8gVGVzdCBpbiBwYXJhbWV0ZXJzCisg
ICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2ID0gYWRkKGFuZ2xlX2ZybSh1MSks
IGFuZ2xlX2ZybSh1MikpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidiA9
IF9hZGRfZmxvYXQ0X2Zsb2F0NChhbmdsZV9mcm0oX3UxKSwgYW5nbGVfZnJtKF91MikpIikpOwor
ICAgIC8vIFRlc3QgaW5vdXQgcGFyYW1ldGVyCisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdM
U0xDb2RlKCJjb21wb3VuZF9hZGQodiwgYW5nbGVfZnJtKHUzKSkiKSk7CisgICAgQVNTRVJUX1RS
VUUoZm91bmRJbkhMU0xDb2RlKCJjb21wb3VuZF9hZGRfZmxvYXQ0X2Zsb2F0NChfdiwgYW5nbGVf
ZnJtKF91MykpIikpOworICAgIC8vIFRlc3Qgb3V0IHBhcmFtZXRlcgorICAgIEFTU0VSVF9UUlVF
KGZvdW5kSW5BbGxHTFNMQ29kZSgiYWRkX3RvX2xhc3QoYW5nbGVfZnJtKHU0KSwgYW5nbGVfZnJt
KHU1KSwgdjIpIikpOworICAgIEFTU0VSVF9UUlVFKAorICAgICAgICBmb3VuZEluSExTTENvZGUo
ImFkZF90b19sYXN0X2Zsb2F0NF9mbG9hdDRfZmxvYXQ0KGFuZ2xlX2ZybShfdTQpLCBhbmdsZV9m
cm0oX3U1KSwgX3YyKSIpKTsKK30KKworVEVTVF9GKERlYnVnU2hhZGVyUHJlY2lzaW9uVGVzdCwg
TmVzdGVkRnVuY3Rpb25DYWxscykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3Ry
aW5nID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidW5p
Zm9ybSB2ZWM0IHUxO1xuIgorICAgICAgICAidW5pZm9ybSB2ZWM0IHUyO1xuIgorICAgICAgICAi
dW5pZm9ybSB2ZWM0IHUzO1xuIgorICAgICAgICAidmVjNCBhZGQoaW4gdmVjNCB4LCBpbiB2ZWM0
IHkpIHtcbiIKKyAgICAgICAgIiAgIHJldHVybiB4ICsgeTtcbiIKKyAgICAgICAgIn1cbiIKKyAg
ICAgICAgInZlYzQgY29tcG91bmRfYWRkKGlub3V0IHZlYzQgeCwgaW4gdmVjNCB5KSB7XG4iCisg
ICAgICAgICIgICB4ID0geCArIHk7XG4iCisgICAgICAgICIgICByZXR1cm4geDtcbiIKKyAgICAg
ICAgIn1cbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIHZlYzQgdiA9
IHUxO1xuIgorICAgICAgICAiICAgdmVjNCB2MiA9IGFkZChjb21wb3VuZF9hZGQodiwgdTIpLCBm
cmFjdCh1MykpO1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdiArIHYyO1xuIgorICAg
ICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgLy8gVGVzdCBuZXN0
ZWQgY2FsbHMKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoCisgICAgICAgICJ2
MiA9IGFkZChjb21wb3VuZF9hZGQodiwgYW5nbGVfZnJtKHUyKSksIGFuZ2xlX2ZybShmcmFjdChh
bmdsZV9mcm0odTMpKSkpIikpOworICAgIEFTU0VSVF9UUlVFKAorICAgICAgICBmb3VuZEluSExT
TENvZGUoInYyID0gX2FkZF9mbG9hdDRfZmxvYXQ0KF9jb21wb3VuZF9hZGRfZmxvYXQ0X2Zsb2F0
NChfdiwgYW5nbGVfZnJtKF91MikpLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAiYW5nbGVf
ZnJtKGZyYWMoYW5nbGVfZnJtKF91MykpKSkiKSk7Cit9CisKKy8vIFRlc3QgdGhhdCBjb2RlIGlu
c2lkZSBhbiBpbmRleCBvZiBhIGZ1bmN0aW9uIG91dCBwYXJhbWV0ZXIgZ2V0cyBwcm9jZXNzZWQu
CitURVNUX0YoRGVidWdTaGFkZXJQcmVjaXNpb25UZXN0LCBPcEluSW5kZXhPZkZ1bmN0aW9uT3V0
UGFyYW1ldGVyKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAg
ICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ2b2lkIGZvbyhvdXQg
dmVjNCBmKSB7IGYueCA9IDAuMDsgfVxuIgorICAgICAgICAidW5pZm9ybSBmbG9hdCB1MjtcbiIK
KyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIHZlYzQgdlsyXTtcbiIKKyAg
ICAgICAgIiAgIGZvbyh2W2ludChleHAyKHUyKSldKTtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdD
b2xvciA9IHZbMF07XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5n
KTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoImFuZ2xlX2ZybShleHAyKGFu
Z2xlX2ZybSh1MikpKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoImFuZ2xl
X2ZybShleHAyKGFuZ2xlX2ZybShfdTIpKSkiKSk7Cit9CisKKy8vIFRlc3QgdGhhdCBjb2RlIGlu
c2lkZSBhbiBpbmRleCBvZiBhbiBsLXZhbHVlIGdldHMgcHJvY2Vzc2VkLgorVEVTVF9GKERlYnVn
U2hhZGVyUHJlY2lzaW9uVGVzdCwgT3BJbkluZGV4T2ZMVmFsdWUpCit7CisgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDtcbiIKKyAgICAgICAgInVuaWZvcm0gdmVjNCB1MTtcbiIKKyAgICAgICAgInVuaWZvcm0gZmxv
YXQgdTI7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICB2ZWM0IHZb
Ml07XG4iCisgICAgICAgICIgICB2W2ludChleHAyKHUyKSldID0gdTE7XG4iCisgICAgICAgICIg
ICBnbF9GcmFnQ29sb3IgPSB2WzBdO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNo
YWRlclN0cmluZyk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJhbmdsZV9m
cm0oZXhwMihhbmdsZV9mcm0odTIpKSkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xD
b2RlKCJhbmdsZV9mcm0oZXhwMihhbmdsZV9mcm0oX3UyKSkpIikpOworfQorCisvLyBUZXN0IHRo
YXQgdGhlIG91dCBwYXJhbWV0ZXIgb2YgbW9kZiBkb2Vzbid0IGdldCByb3VuZGVkCitURVNUX0Yo
RGVidWdTaGFkZXJQcmVjaXNpb25UZXN0LCBNb2RmT3V0UGFyYW1ldGVyKQoreworICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4i
CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0g
ZmxvYXQgdTtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAg
InZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGZsb2F0IG87XG4iCisgICAgICAgICIgICBm
bG9hdCBmID0gbW9kZih1LCBvKTtcbiIKKyAgICAgICAgIiAgIG15X0ZyYWdDb2xvciA9IHZlYzQo
ZiwgbywgMCwgMSk7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5n
KTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoIm1vZGYoYW5nbGVfZnJtKHUp
LCBvKSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoIm1vZGYoYW5nbGVfZnJt
KF91KSwgX28pIikpOworfQorCisjaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfSExTTCkKKy8vIFRl
c3RzIHByZWNpc2lvbiBlbXVsYXRpb24gd2l0aCBITFNMIDMuMCBvdXRwdXQgLS0gc2hvdWxkIGVy
cm9yIGdyYWNlZnVsbHkuCitURVNUKERlYnVnU2hhZGVyUHJlY2lzaW9uTmVnYXRpdmVUZXN0LCBI
TFNMM1Vuc3VwcG9ydGVkKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcg
PQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ1bmlmb3Jt
IGZsb2F0IHU7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBnbF9G
cmFnQ29sb3IgPSB2ZWM0KHUpO1xuIgorICAgICAgICAifVxuIjsKKyAgICBzdGQ6OnN0cmluZyBp
bmZvTG9nOworICAgIHN0ZDo6c3RyaW5nIHRyYW5zbGF0ZWRDb2RlOworICAgIFNoQnVpbHRJblJl
c291cmNlcyByZXNvdXJjZXM7CisgICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmcmVzb3VyY2Vz
KTsKKyAgICByZXNvdXJjZXMuV0VCR0xfZGVidWdfc2hhZGVyX3ByZWNpc2lvbiA9IDE7CisgICAg
QVNTRVJUX0ZBTFNFKGNvbXBpbGVUZXN0U2hhZGVyKEdMX0ZSQUdNRU5UX1NIQURFUiwgU0hfR0xF
UzNfU1BFQywgU0hfSExTTF8zXzBfT1VUUFVULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaGFkZXJTdHJpbmcsICZyZXNvdXJjZXMsIDAsICZ0cmFuc2xhdGVkQ29kZSwgJmlu
Zm9Mb2cpKTsKK30KKyNlbmRpZiAgLy8gZGVmaW5lZChBTkdMRV9FTkFCTEVfSExTTCkKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9FWFRfYmxl
bmRfZnVuY19leHRlbmRlZF90ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWRf
dGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2NvbXBpbGVyX3Rlc3RzL0VYVF9ibGVuZF9mdW5jX2V4dGVuZGVkX3Rlc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMjg1IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEVYVF9ibGVuZF9m
dW5jX2V4dGVuZGVkLmNwcDoKKy8vICAgVGVzdCBmb3IgRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWRf
dGVzdAorLy8KKworI2luY2x1ZGUgImFuZ2xlX2dsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKKyNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKKwordXNpbmcgdGVzdGluZzo6Q29t
YmluZTsKK3VzaW5nIHRlc3Rpbmc6OlZhbHVlczsKK3VzaW5nIHRlc3Rpbmc6Om1ha2VfdHVwbGU7
CisKK25hbWVzcGFjZQoreworY29uc3QgY2hhciBFU1NMVmVyc2lvbjEwMFtdID0gIiN2ZXJzaW9u
IDEwMFxuIjsKK2NvbnN0IGNoYXIgRVNTTFZlcnNpb24zMDBbXSA9ICIjdmVyc2lvbiAzMDAgZXNc
biI7Citjb25zdCBjaGFyIEVTU0xWZXJzaW9uMzEwW10gPSAiI3ZlcnNpb24gMzEwIGVzXG4iOwor
Y29uc3QgY2hhciBFWFRCRkVQcmFnbWFbXSAgID0gIiNleHRlbnNpb24gR0xfRVhUX2JsZW5kX2Z1
bmNfZXh0ZW5kZWQgOiByZXF1aXJlXG4iOworCitjb25zdCBjaGFyIEVTU0wxMDBfU2ltcGxlU2hh
ZGVyMVtdID0KKyAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgInZvaWQgbWFp
bigpIHsgXG4iCisgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XG4iCisgICAgIiAg
ICBnbF9TZWNvbmRhcnlGcmFnQ29sb3JFWFQgPSB2ZWM0KGdsX01heER1YWxTb3VyY2VEcmF3QnVm
ZmVyc0VYVCAvIDEwKTtcbiIKKyAgICAifVxuIjsKKworLy8gU2hhZGVyIHRoYXQgdGVzdHMgb25s
eSB0aGUgYWNjZXNzIHRvIGdsX01heER1YWxTb3VyY2VEcmF3QnVmZmVyc0VYVC4KK2NvbnN0IGNo
YXIgRVNTTDEwMF9NYXhEdWFsU291cmNlQWNjZXNzU2hhZGVyW10gPQorICAgICJwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDtcbiIKKyAgICAidm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2ZWM0
KGdsX01heER1YWxTb3VyY2VEcmF3QnVmZmVyc0VYVCAvIDEwKTsgfVxuIjsKKworLy8gU2hhZGVy
IHRoYXQgd3JpdGVzIHRvIFNlY29uZGFyeUZyYWdEYXRhLgorY29uc3QgY2hhciBFU1NMMTAwX0Zy
YWdEYXRhU2hhZGVyW10gPQorICAgICIjZXh0ZW5zaW9uIEdMX0VYVF9kcmF3X2J1ZmZlcnMgOiBy
ZXF1aXJlXG4iCisgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICJ2b2lkIG1h
aW4oKSB7XG4iCisgICAgIiAgICBnbF9GcmFnRGF0YVtnbF9NYXhEcmF3QnVmZmVycyAtIDFdID0g
dmVjNCgxLjApO1xuIgorICAgICIgICAgZ2xfU2Vjb25kYXJ5RnJhZ0RhdGFFWFRbZ2xfTWF4RHVh
bFNvdXJjZURyYXdCdWZmZXJzRVhUIC0gMV0gPSB2ZWM0KDAuMSk7XG4iCisgICAgIn1cbiI7CisK
Ky8vIFNoYWRlciB0aGF0IHdyaXRlcyB0byBTZWNvbmRhcnlGcmFnQ29sb3IgYW5kIFNlY29uZGFy
eUZyYWdEYXRhIGRvZXMgbm90IGNvbXBpbGUuCitjb25zdCBjaGFyIEVTU0wxMDBfQ29sb3JBbmRE
YXRhV3JpdGVGYWlsdXJlU2hhZGVyMVtdID0KKyAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
XG4iCisgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAiICAgIGdsX1NlY29uZGFyeUZyYWdDb2xv
ckVYVCA9IHZlYzQoMS4wKTtcbiIKKyAgICAiICAgIGdsX1NlY29uZGFyeUZyYWdEYXRhRVhUW2ds
X01heER1YWxTb3VyY2VEcmF3QnVmZmVyc0VYVF0gPSB2ZWM0KDAuMSk7XG4iCisgICAgIn1cbiI7
CisKKy8vIFNoYWRlciB0aGF0IHdyaXRlcyB0byBGcmFnQ29sb3IgYW5kIFNlY29uZGFyeUZyYWdE
YXRhIGRvZXMgbm90IGNvbXBpbGUuCitjb25zdCBjaGFyIEVTU0wxMDBfQ29sb3JBbmREYXRhV3Jp
dGVGYWlsdXJlU2hhZGVyMltdID0KKyAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisg
ICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wKTtc
biIKKyAgICAiICAgIGdsX1NlY29uZGFyeUZyYWdEYXRhRVhUW2dsX01heER1YWxTb3VyY2VEcmF3
QnVmZmVyc0VYVF0gPSB2ZWM0KDAuMSk7XG4iCisgICAgIn1cbiI7CisKKy8vIFNoYWRlciB0aGF0
IHdyaXRlcyB0byBGcmFnRGF0YSBhbmQgU2Vjb25kYXJ5RnJhZ0NvbG9yLgorY29uc3QgY2hhciBF
U1NMMTAwX0NvbG9yQW5kRGF0YVdyaXRlRmFpbHVyZVNoYWRlcjNbXSA9CisgICAgIiNleHRlbnNp
b24gR0xfRVhUX2RyYXdfYnVmZmVycyA6IHJlcXVpcmVcbiIKKyAgICAicHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7XG4iCisgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAiICAgIGdsX1NlY29uZGFy
eUZyYWdDb2xvckVYVCA9IHZlYzQoMS4wKTtcbiIKKyAgICAiICAgIGdsX0ZyYWdEYXRhW2dsX01h
eERyYXdCdWZmZXJzXSA9IHZlYzQoMC4xKTtcbiIKKyAgICAifVxuIjsKKworLy8gSW4gR0xTTCB2
ZXJzaW9uIDMwMCBlcywgdGhlIGdsX01heER1YWxTb3VyY2VEcmF3QnVmZmVyc0VYVCBpcyBhdmFp
bGFibGUuCitjb25zdCBjaGFyIEVTU0wzMDBfTWF4RHVhbFNvdXJjZUFjY2Vzc1NoYWRlcltdID0K
KyAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgImxheW91dChsb2NhdGlvbiA9
IDApIG91dCBtZWRpdW1wIHZlYzQgZnJhZ0NvbG9yOyIKKyAgICAidm9pZCBtYWluKCkge1xuIgor
ICAgICIgICAgZnJhZ0NvbG9yID0gdmVjNChnbF9NYXhEdWFsU291cmNlRHJhd0J1ZmZlcnNFWFQg
LyAxMCk7XG4iCisgICAgIn1cbiI7CisKKy8vIEluIEdMU0wgdmVyc2lvbiAzMDAgZXMsIHRoZSBv
bmx5IHdheSB0byB3cml0ZSBhIGNvcnJlY3Qgc2hhZGVyIGlzIHRvIHJlcXVpcmUgdGhlIGV4dGVu
c2lvbiBhbmQKKy8vIHRoZW4gbGVhdmUgdGhlIGxvY2F0aW9ucyB1bnNwZWNpZmllZC4gVGhlIGNh
bGxlciB3aWxsIHRoZW4gYmluZCB0aGUgdmFyaWFibGVzIHdpdGggdGhlIGV4dGVuc2lvbgorLy8g
YmluZGluZyBmdW5jdGlvbnMuCitjb25zdCBjaGFyIEVTU0wzMDBfTG9jYXRpb25BbmRVbnNwZWNp
ZmllZE91dHB1dFNoYWRlcltdID0KKyAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisg
ICAgImxheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgZnJhZ0NvbG9yOyIKKyAg
ICAib3V0IG1lZGl1bXAgdmVjNCBzZWNvbmRhcnlGcmFnQ29sb3I7IgorICAgICJ2b2lkIG1haW4o
KSB7XG4iCisgICAgIiAgICBmcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XG4iCisgICAgIiAgICBzZWNv
bmRhcnlGcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XG4iCisgICAgIn1cbiI7CisKK2NvbnN0IGNoYXIg
RVNTTDMwMF9Ud29VbnNwZWNpZmllZExvY2F0aW9uT3V0cHV0c1NoYWRlcltdID0KKyAgICAicHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgIm91dCBtZWRpdW1wIHZlYzQgZnJhZ0NvbG9y
OyIKKyAgICAib3V0IG1lZGl1bXAgdmVjNCBzZWNvbmRhcnlGcmFnQ29sb3I7IgorICAgICJ2b2lk
IG1haW4oKSB7XG4iCisgICAgIiAgICBmcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XG4iCisgICAgIiAg
ICBzZWNvbmRhcnlGcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XG4iCisgICAgIn1cbiI7CisKKy8vIFNo
YWRlciB0aGF0IGlzIGNvcnJlY3QgaW4gR0xTTCBFUyAzLjEwIGZhaWxzIHdoZW4gdXNlZCBpbiB2
ZXJzaW9uIDMwMCBlcy4KK2NvbnN0IGNoYXIgRVNTTDMxMF9Mb2NhdGlvbkluZGV4U2hhZGVyW10g
PQorICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAibGF5b3V0KGxvY2F0aW9u
ID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBmcmFnQ29sb3I7IgorICAgICJsYXlvdXQobG9jYXRpb24g
PSAwLCBpbmRleCA9IDEpIG91dCBtZWRpdW1wIHZlYzQgc2Vjb25kYXJ5RnJhZ0NvbG9yOyIKKyAg
ICAidm9pZCBtYWluKCkge1xuIgorICAgICIgICBmcmFnQ29sb3IgPSB2ZWM0KDEpO1xuIgorICAg
ICIgICBzZWNvbmRhcnlGcmFnQ29sb3IgPSB2ZWM0KDEpO1xuIgorICAgICJ9XG4iOworCisvLyBT
aGFkZXIgdGhhdCBzcGVjaWZpZXMgaW5kZXggbGF5b3V0IHF1YWxpZmllciBidXQgbm90IGxvY2F0
aW9uIGZhaWxzIHRvIGNvbXBpbGUuIEN1cnJlbnRseSBmYWlscworLy8gdG8gY29tcGlsZSBkdWUg
dG8gdmVyc2lvbiAzMTAgZXMgbm90IGJlaW5nIHN1cHBvcnRlZC4KK2NvbnN0IGNoYXIgRVNTTDMx
MF9Mb2NhdGlvbkluZGV4RmFpbHVyZVNoYWRlcltdID0KKyAgICAicHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7XG4iCisgICAgImxheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgZnJh
Z0NvbG9yOyIKKyAgICAibGF5b3V0KGluZGV4ID0gMSkgb3V0IG1lZGl1bXAgdmVjNCBzZWNvbmRh
cnlGcmFnQ29sb3I7IgorICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgIiAgIGZyYWdDb2xvciA9
IHZlYzQoMS4wKTtcbiIKKyAgICAiICAgc2Vjb25kYXJ5RnJhZ0NvbG9yID0gdmVjNCgxLjApO1xu
IgorICAgICJ9XG4iOworCitjbGFzcyBFWFRCbGVuZEZ1bmNFeHRlbmRlZFRlc3QKKyAgICA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPHRlc3Rpbmc6OnR1cGxlPFNoU2hhZGVyU3BlYywg
Y29uc3QgY2hhciAqLCBjb25zdCBjaGFyICo+PgoreworICBwcm90ZWN0ZWQ6CisgICAgdmlydHVh
bCB2b2lkIFNldFVwKCkKKyAgICB7CisgICAgICAgIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoJm1S
ZXNvdXJjZXMpOworICAgICAgICAvLyBFWFRfZHJhd19idWZmZXJzIGlzIHVzZWQgaW4gc29tZSBv
ZiB0aGUgc2hhZGVycyBmb3IgdGVzdCBwdXJwb3Nlcy4KKyAgICAgICAgbVJlc291cmNlcy5FWFRf
ZHJhd19idWZmZXJzID0gMTsKKyAgICAgICAgbVJlc291cmNlcy5OVl9kcmF3X2J1ZmZlcnMgID0g
MjsKKworICAgICAgICBtQ29tcGlsZXIgPSBOVUxMOworICAgIH0KKworICAgIHZpcnR1YWwgdm9p
ZCBUZWFyRG93bigpIHsgRGVzdHJveUNvbXBpbGVyKCk7IH0KKyAgICB2b2lkIERlc3Ryb3lDb21w
aWxlcigpCisgICAgeworICAgICAgICBpZiAobUNvbXBpbGVyKQorICAgICAgICB7CisgICAgICAg
ICAgICBTaERlc3RydWN0KG1Db21waWxlcik7CisgICAgICAgICAgICBtQ29tcGlsZXIgPSBOVUxM
OworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBJbml0aWFsaXplQ29tcGlsZXIoKQorICAg
IHsKKyAgICAgICAgRGVzdHJveUNvbXBpbGVyKCk7CisgICAgICAgIG1Db21waWxlciA9IFNoQ29u
c3RydWN0Q29tcGlsZXIoR0xfRlJBR01FTlRfU0hBREVSLCB0ZXN0aW5nOjpnZXQ8MD4oR2V0UGFy
YW0oKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hfR0xTTF9D
T01QQVRJQklMSVRZX09VVFBVVCwgJm1SZXNvdXJjZXMpOworICAgICAgICBBU1NFUlRfVFJVRSht
Q29tcGlsZXIgIT0gTlVMTCkgPDwgIkNvbXBpbGVyIGNvdWxkIG5vdCBiZSBjb25zdHJ1Y3RlZC4i
OworICAgIH0KKworICAgIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBUZXN0U2hhZGVyQ29tcGls
ZShjb25zdCBjaGFyICpwcmFnbWEpCisgICAgeworICAgICAgICByZXR1cm4gVGVzdFNoYWRlckNv
bXBpbGUodGVzdGluZzo6Z2V0PDE+KEdldFBhcmFtKCkpLCAgLy8gVmVyc2lvbi4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHByYWdtYSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRlc3Rpbmc6OmdldDwyPihHZXRQYXJhbSgpKSAgLy8gU2hhZGVyLgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICB9CisKKyAgICB0ZXN0aW5nOjpBc3Nl
cnRpb25SZXN1bHQgVGVzdFNoYWRlckNvbXBpbGUoY29uc3QgY2hhciAqdmVyc2lvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcHJh
Z21hLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyICpzaGFkZXIpCisgICAgeworICAgICAgICBjb25zdCBjaGFyICpzaGFkZXJTdHJpbmdz
W10gPSB7dmVyc2lvbiwgcHJhZ21hLCBzaGFkZXJ9OworICAgICAgICBib29sIHN1Y2Nlc3MgPSBT
aENvbXBpbGUobUNvbXBpbGVyLCBzaGFkZXJTdHJpbmdzLCAzLCAwKTsKKyAgICAgICAgaWYgKHN1
Y2Nlc3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlv
blN1Y2Nlc3MoKSA8PCAiQ29tcGlsYXRpb24gc3VjY2VzcyI7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpIDw8IFNoR2V0SW5mb0xvZyhtQ29t
cGlsZXIpOworICAgIH0KKworICBwcm90ZWN0ZWQ6CisgICAgU2hCdWlsdEluUmVzb3VyY2VzIG1S
ZXNvdXJjZXM7CisgICAgU2hIYW5kbGUgbUNvbXBpbGVyOworfTsKKworLy8gRXh0ZW5zaW9uIGZs
YWcgaXMgcmVxdWlyZWQgdG8gY29tcGlsZSBwcm9wZXJseS4gRXhwZWN0IGZhaWx1cmUgd2hlbiBp
dCBpcworLy8gbm90IHByZXNlbnQuCitURVNUX1AoRVhUQmxlbmRGdW5jRXh0ZW5kZWRUZXN0LCBD
b21waWxlRmFpbHNXaXRob3V0RXh0ZW5zaW9uKQoreworICAgIG1SZXNvdXJjZXMuRVhUX2JsZW5k
X2Z1bmNfZXh0ZW5kZWQgPSAwOworICAgIEluaXRpYWxpemVDb21waWxlcigpOworICAgIEVYUEVD
VF9GQUxTRShUZXN0U2hhZGVyQ29tcGlsZShFWFRCRkVQcmFnbWEpKTsKK30KKworLy8gRXh0ZW5z
aW9uIGRpcmVjdGl2ZSBpcyByZXF1aXJlZCB0byBjb21waWxlIHByb3Blcmx5LiBFeHBlY3QgZmFp
bHVyZSB3aGVuCisvLyBpdCBpcyBub3QgcHJlc2VudC4KK1RFU1RfUChFWFRCbGVuZEZ1bmNFeHRl
bmRlZFRlc3QsIENvbXBpbGVGYWlsc1dpdGhFeHRlbnNpb25XaXRob3V0UHJhZ21hKQoreworICAg
IG1SZXNvdXJjZXMuRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWQgID0gMTsKKyAgICBtUmVzb3VyY2Vz
Lk1heER1YWxTb3VyY2VEcmF3QnVmZmVycyA9IDE7CisgICAgSW5pdGlhbGl6ZUNvbXBpbGVyKCk7
CisgICAgRVhQRUNUX0ZBTFNFKFRlc3RTaGFkZXJDb21waWxlKCIiKSk7Cit9CisKKy8vIFdpdGgg
ZXh0ZW5zaW9uIGZsYWcgYW5kIGV4dGVuc2lvbiBkaXJlY3RpdmUsIGNvbXBpbGluZyBzdWNjZWVk
cy4KKy8vIEFsc28gdGVzdCB0aGF0IHRoZSBleHRlbnNpb24gZGlyZWN0aXZlIHN0YXRlIGlzIHJl
c2V0IGNvcnJlY3RseS4KK1RFU1RfUChFWFRCbGVuZEZ1bmNFeHRlbmRlZFRlc3QsIENvbXBpbGVT
dWNjZWVkc1dpdGhFeHRlbnNpb25BbmRQcmFnbWEpCit7CisgICAgbVJlc291cmNlcy5FWFRfYmxl
bmRfZnVuY19leHRlbmRlZCAgPSAxOworICAgIG1SZXNvdXJjZXMuTWF4RHVhbFNvdXJjZURyYXdC
dWZmZXJzID0gMTsKKyAgICBJbml0aWFsaXplQ29tcGlsZXIoKTsKKyAgICBFWFBFQ1RfVFJVRShU
ZXN0U2hhZGVyQ29tcGlsZShFWFRCRkVQcmFnbWEpKTsKKyAgICAvLyBUZXN0IHJlc2V0IGZ1bmN0
aW9uYWxpdHkuCisgICAgRVhQRUNUX0ZBTFNFKFRlc3RTaGFkZXJDb21waWxlKCIiKSk7CisgICAg
RVhQRUNUX1RSVUUoVGVzdFNoYWRlckNvbXBpbGUoRVhUQkZFUHJhZ21hKSk7Cit9CisKKy8vIFRo
ZSBTTCAjdmVyc2lvbiAxMDAgc2hhZGVycyB0aGF0IGFyZSBjb3JyZWN0IHdvcmsgc2ltaWxhcmx5
CisvLyBpbiBib3RoIEdMMiBhbmQgR0wzLCB3aXRoIGFuZCB3aXRob3V0IHRoZSB2ZXJzaW9uIHN0
cmluZy4KK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKENvcnJlY3RFU1NMMTAwU2hhZGVycywKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEVYVEJsZW5kRnVuY0V4dGVuZGVkVGVzdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIENvbWJpbmUoVmFsdWVzKFNIX0dMRVMyX1NQRUMsIFNIX0dMRVMzX1NQ
RUMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoIiIsIEVTU0xWZXJz
aW9uMTAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKEVTU0wxMDBf
U2ltcGxlU2hhZGVyMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVT
U0wxMDBfTWF4RHVhbFNvdXJjZUFjY2Vzc1NoYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEVTU0wxMDBfRnJhZ0RhdGFTaGFkZXIpKSk7CisKK0lOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QKENvcnJlY3RFU1NMMzAwU2hhZGVycywKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEVYVEJsZW5kRnVuY0V4dGVuZGVkVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIENv
bWJpbmUoVmFsdWVzKFNIX0dMRVMzX1NQRUMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWx1ZXMoRVNTTFZlcnNpb24zMDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWx1ZXMoRVNTTDMwMF9NYXhEdWFsU291cmNlQWNjZXNzU2hhZGVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVNTTDMwMF9Mb2NhdGlvbkFuZFVuc3BlY2lm
aWVkT3V0cHV0U2hhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RVNTTDMwMF9Ud29VbnNwZWNpZmllZExvY2F0aW9uT3V0cHV0c1NoYWRlcikpKTsKKworY2xhc3Mg
RVhUQmxlbmRGdW5jRXh0ZW5kZWRDb21waWxlRmFpbHVyZVRlc3QgOiBwdWJsaWMgRVhUQmxlbmRG
dW5jRXh0ZW5kZWRUZXN0Cit7Cit9OworCitURVNUX1AoRVhUQmxlbmRGdW5jRXh0ZW5kZWRDb21w
aWxlRmFpbHVyZVRlc3QsIENvbXBpbGVGYWlscykKK3sKKyAgICAvLyBFeHBlY3QgY29tcGlsZSBm
YWlsdXJlIGR1ZSB0byBzaGFkZXIgZXJyb3IsIHdpdGggc2hhZGVyIGhhdmluZyBjb3JyZWN0IHBy
YWdtYS4KKyAgICBtUmVzb3VyY2VzLkVYVF9ibGVuZF9mdW5jX2V4dGVuZGVkICA9IDE7CisgICAg
bVJlc291cmNlcy5NYXhEdWFsU291cmNlRHJhd0J1ZmZlcnMgPSAxOworICAgIEluaXRpYWxpemVD
b21waWxlcigpOworICAgIEVYUEVDVF9GQUxTRShUZXN0U2hhZGVyQ29tcGlsZShFWFRCRkVQcmFn
bWEpKTsKK30KKworLy8gSW5jb3JyZWN0ICN2ZXJzaW9uIDEwMCBzaGFkZXJzIGZhaWwuCitJTlNU
QU5USUFURV9URVNUX0NBU0VfUChJbmNvcnJlY3RFU1NMMTAwU2hhZGVycywKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEVYVEJsZW5kRnVuY0V4dGVuZGVkQ29tcGlsZUZhaWx1cmVUZXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgQ29tYmluZShWYWx1ZXMoU0hfR0xFUzJfU1BFQyksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyhFU1NMVmVyc2lvbjEwMCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyhFU1NMMTAwX0NvbG9yQW5kRGF0YVdy
aXRlRmFpbHVyZVNoYWRlcjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBFU1NMMTAwX0NvbG9yQW5kRGF0YVdyaXRlRmFpbHVyZVNoYWRlcjIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFU1NMMTAwX0NvbG9yQW5kRGF0YVdyaXRlRmFpbHVy
ZVNoYWRlcjMpKSk7CisKKy8vIENvcnJlY3QgI3ZlcnNpb24gMzAwIGVzIHNoYWRlcnMgZmFpbCBp
biBHTEVTMiBjb250ZXh0LCByZWdhcmRsZXNzIG9mIHZlcnNpb24gc3RyaW5nLgorSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AoQ29ycmVjdEVTU0wzMDBTaGFkZXJzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgRVhUQmxlbmRGdW5jRXh0ZW5kZWRDb21waWxlRmFpbHVyZVRlc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICBDb21iaW5lKFZhbHVlcyhTSF9HTEVTMl9TUEVDKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKCIiLCBFU1NMVmVyc2lvbjEwMCwgRVNTTFZlcnNp
b24zMDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoRVNTTDMwMF9M
b2NhdGlvbkFuZFVuc3BlY2lmaWVkT3V0cHV0U2hhZGVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRVNTTDMwMF9Ud29VbnNwZWNpZmllZExvY2F0aW9uT3V0cHV0c1No
YWRlcikpKTsKKworLy8gQ29ycmVjdCAjdmVyc2lvbiAxMDAgc2hhZGVycyBmYWlsIHdoZW4gdXNl
ZCB3aXRoICN2ZXJzaW9uIDMwMCBlcy4KK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKENvcnJlY3RF
U1NMMTAwU2hhZGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgIEVYVEJsZW5kRnVuY0V4dGVu
ZGVkQ29tcGlsZUZhaWx1cmVUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgQ29tYmluZShW
YWx1ZXMoU0hfR0xFUzNfU1BFQyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bHVlcyhFU1NMVmVyc2lvbjMwMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bHVlcyhFU1NMMTAwX1NpbXBsZVNoYWRlcjEsIEVTU0wxMDBfRnJhZ0RhdGFTaGFkZXIpKSk7CisK
Ky8vIEluY29ycmVjdCAjdmVyc2lvbiAzMTAgZXMgYWx3YXlzIGZhaWxzLgorSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoSW5jb3JyZWN0RVNTTDMxMFNoYWRlcnMsCisgICAgICAgICAgICAgICAgICAg
ICAgICBFWFRCbGVuZEZ1bmNFeHRlbmRlZENvbXBpbGVGYWlsdXJlVGVzdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIENvbWJpbmUoVmFsdWVzKFNIX0dMRVMzX1NQRUMpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoRVNTTFZlcnNpb24zMDAsIEVTU0xWZXJzaW9uMzEw
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKEVTU0wzMTBfTG9jYXRp
b25JbmRleEZhaWx1cmVTaGFkZXIpKSk7CisKKy8vIENvcnJlY3QgI3ZlcnNpb24gMzEwIGVzIGZh
aWxzIGluICN2ZXJzaW9uIDMwMCBlcy4KK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKAorICAgIENv
cnJlY3RFU1NMMzEwU2hhZGVyc0luRVNTTDMwMCwKKyAgICBFWFRCbGVuZEZ1bmNFeHRlbmRlZENv
bXBpbGVGYWlsdXJlVGVzdCwKKyAgICBWYWx1ZXMobWFrZV90dXBsZShTSF9HTEVTM19TUEVDLCAm
RVNTTFZlcnNpb24zMDBbMF0sICZFU1NMMzEwX0xvY2F0aW9uSW5kZXhTaGFkZXJbMF0pKSk7CisK
Ky8vIENvcnJlY3QgI3ZlcnNpb24gMzEwIGVzIGZhaWxzIGluICN2ZXJzaW9uIDMxMCBlcywgZHVl
IHRvIDMuMSBub3QgYmVpbmcgc3VwcG9ydGVkLgorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoCisg
ICAgQ29ycmVjdEVTU0wzMTBTaGFkZXJzLAorICAgIEVYVEJsZW5kRnVuY0V4dGVuZGVkQ29tcGls
ZUZhaWx1cmVUZXN0LAorICAgIFZhbHVlcyhtYWtlX3R1cGxlKFNIX0dMRVMzX1NQRUMsICZFU1NM
VmVyc2lvbjMxMFswXSwgJkVTU0wzMTBfTG9jYXRpb25JbmRleFNoYWRlclswXSkpKTsKKworfSAg
Ly8gbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29t
cGlsZXJfdGVzdHMvRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0X3Rlc3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9F
bXVsYXRlR0xGcmFnQ29sb3JCcm9hZGNhc3RfdGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0VtdWxhdGVHTEZy
YWdDb2xvckJyb2FkY2FzdF90ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc5IEBA
CisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKy8vIEVtdWxhdGVHTEZyYWdDb2xvckJyb2FkY2FzdF90ZXN0LmNwcDoK
Ky8vICAgVGVzdHMgZm9yIGdsX0ZyYWdDb2xvciBicm9hZGNhc3QgYmVoYXZpb3IgZW11bGF0aW9u
LgorLy8KKworI2luY2x1ZGUgImFuZ2xlX2dsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIK
KyNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKKyNpbmNsdWRlICJ0ZXN0cy90ZXN0X3V0
aWxzL2NvbXBpbGVyX3Rlc3QuaCIKKworbmFtZXNwYWNlCit7CisKK2NvbnN0IGludCBrTWF4RHJh
d0J1ZmZlcnMgPSAyOworCitjbGFzcyBFbXVsYXRlR0xGcmFnQ29sb3JCcm9hZGNhc3RUZXN0IDog
cHVibGljIE1hdGNoT3V0cHV0Q29kZVRlc3QKK3sKKyAgcHVibGljOgorICAgIEVtdWxhdGVHTEZy
YWdDb2xvckJyb2FkY2FzdFRlc3QoKQorICAgICAgICA6IE1hdGNoT3V0cHV0Q29kZVRlc3QoR0xf
RlJBR01FTlRfU0hBREVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgIC8vIGNv
bXBpbGUgb3B0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hfR0xTTF9DT01Q
QVRJQklMSVRZX09VVFBVVCkKKyAgICB7CisgICAgICAgIGdldFJlc291cmNlcygpLT5NYXhEcmF3
QnVmZmVycyAgID0ga01heERyYXdCdWZmZXJzOworICAgICAgICBnZXRSZXNvdXJjZXMoKS0+RVhU
X2RyYXdfYnVmZmVycyA9IDE7CisgICAgfQorfTsKKworLy8gVmVyaWZpZXMgdGhhdCB3aXRob3V0
IGV4cGxpY2l0bHkgZW5hYmxpbmcgR0xfRVhUX2RyYXdfYnVmZmVycyBleHRlbnNpb24KKy8vIGlu
IHRoZSBzaGFkZXIsIG5vIGJyb2FkY2FzdCBlbXVsYXRpb24uCitURVNUX0YoRW11bGF0ZUdMRnJh
Z0NvbG9yQnJvYWRjYXN0VGVzdCwgRnJhZ0NvbG9yTm9Ccm9hZGNhc3QpCit7CisgICAgY29uc3Qg
c3RkOjpzdHJpbmcgc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAg
ICAgICJ7XG4iCisgICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLCAwLCAwLCAwKTtc
biIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEVYUEVD
VF9UUlVFKGZvdW5kSW5Db2RlKCJnbF9GcmFnQ29sb3IiKSk7CisgICAgRVhQRUNUX0ZBTFNFKGZv
dW5kSW5Db2RlKCJnbF9GcmFnRGF0YVswXSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoZm91bmRJbkNv
ZGUoImdsX0ZyYWdEYXRhWzFdIikpOworfQorCisvLyBWZXJpZmllcyB0aGF0IHdpdGggZXhwbGlj
aXRseSBlbmFibGluZyBHTF9FWFRfZHJhd19idWZmZXJzIGV4dGVuc2lvbgorLy8gaW4gdGhlIHNo
YWRlciwgYnJvYWRjYXN0IGlzIGVtdWFsdGVkIGJ5IHJlcGxhY2luZyBnbF9GcmFnQ29sb3Igd2l0
aCBnbF9GcmFnRGF0YS4KK1RFU1RfRihFbXVsYXRlR0xGcmFnQ29sb3JCcm9hZGNhc3RUZXN0LCBG
cmFnQ29sb3JCcm9hZGNhc3QpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgc2hhZGVyU3RyaW5n
ID0KKyAgICAgICAgIiNleHRlbnNpb24gR0xfRVhUX2RyYXdfYnVmZmVycyA6IHJlcXVpcmVcbiIK
KyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgZ2xf
RnJhZ0NvbG9yID0gdmVjNCgxLCAwLCAwLCAwKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29t
cGlsZShzaGFkZXJTdHJpbmcpOworICAgIEVYUEVDVF9GQUxTRShmb3VuZEluQ29kZSgiZ2xfRnJh
Z0NvbG9yIikpOworICAgIEVYUEVDVF9UUlVFKGZvdW5kSW5Db2RlKCJnbF9GcmFnRGF0YVswXSIp
KTsKKyAgICBFWFBFQ1RfVFJVRShmb3VuZEluQ29kZSgiZ2xfRnJhZ0RhdGFbMV0iKSk7Cit9CisK
Ky8vIFZlcmlmaWVzIHRoYXQgd2l0aCBleHBsaWNpdGx5IGVuYWJsaW5nIEdMX0VYVF9kcmF3X2J1
ZmZlcnMgZXh0ZW5zaW9uCisvLyBpbiB0aGUgc2hhZGVyIHdpdGggYW4gZW1wdHkgbWFpbigpLCBh
bm90aGluZyBoYXBwZW5zLgorVEVTVF9GKEVtdWxhdGVHTEZyYWdDb2xvckJyb2FkY2FzdFRlc3Qs
IEVtcHR5TWFpbikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBzaGFkZXJTdHJpbmcgPQorICAg
ICAgICAiI2V4dGVuc2lvbiBHTF9FWFRfZHJhd19idWZmZXJzIDogcmVxdWlyZVxuIgorICAgICAg
ICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29t
cGlsZShzaGFkZXJTdHJpbmcpOworICAgIEVYUEVDVF9GQUxTRShmb3VuZEluQ29kZSgiZ2xfRnJh
Z0NvbG9yIikpOworICAgIEVYUEVDVF9GQUxTRShmb3VuZEluQ29kZSgiZ2xfRnJhZ0RhdGFbMF0i
KSk7CisgICAgRVhQRUNUX0ZBTFNFKGZvdW5kSW5Db2RlKCJnbF9GcmFnRGF0YVsxXSIpKTsKK30K
KworfSAgLy8gbmFtZXNwYWNlIGFub255bW91cwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0V4cHJlc3Npb25MaW1pdF90ZXN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVz
dHMvRXhwcmVzc2lvbkxpbWl0X3Rlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9FeHByZXNzaW9uTGltaXRfdGVz
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NjIgQEAKKy8vCisvLyBDb3B5cmlnaHQg
KGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8v
CisjaW5jbHVkZSA8c3N0cmVhbT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9y
PgorI2luY2x1ZGUgImFuZ2xlX2dsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNs
dWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKKworI2RlZmluZSBTSEFERVIoU3JjKSAjU3JjCisK
K2NsYXNzIEV4cHJlc3Npb25MaW1pdFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Citwcm90
ZWN0ZWQ6CisgICAgc3RhdGljIGNvbnN0IGludCBrTWF4RXhwcmVzc2lvbkNvbXBsZXhpdHkgPSAx
NjsKKyAgICBzdGF0aWMgY29uc3QgaW50IGtNYXhDYWxsU3RhY2tEZXB0aCAgICAgICA9IDE2Owor
ICAgIHN0YXRpYyBjb25zdCBpbnQga01heEZ1bmN0aW9uUGFyYW1ldGVycyAgID0gMTY7CisgICAg
c3RhdGljIGNvbnN0IGNoYXIqIGtFeHByZXNzaW9uVG9vQ29tcGxleDsKKyAgICBzdGF0aWMgY29u
c3QgY2hhcioga0NhbGxTdGFja1Rvb0RlZXA7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGtIYXNS
ZWN1cnNpb247CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKmtUb29NYW55UGFyYW1ldGVyczsKKwor
ICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCisgICAgeworICAgICAgICBtZW1zZXQoJnJlc291cmNl
cywgMCwgc2l6ZW9mKHJlc291cmNlcykpOworCisgICAgICAgIEdlbmVyYXRlUmVzb3VyY2VzKCZy
ZXNvdXJjZXMpOworICAgIH0KKworICAgIC8vIFNldCB1cCB0aGUgcGVyIGNvbXBpbGUgcmVzb3Vy
Y2VzCisgICAgc3RhdGljIHZvaWQgR2VuZXJhdGVSZXNvdXJjZXMoU2hCdWlsdEluUmVzb3VyY2Vz
ICpyZXMpCisgICAgeworICAgICAgICBTaEluaXRCdWlsdEluUmVzb3VyY2VzKHJlcyk7CisKKyAg
ICAgICAgcmVzLT5NYXhWZXJ0ZXhBdHRyaWJzICAgICAgICAgICAgID0gODsKKyAgICAgICAgcmVz
LT5NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyAgICAgID0gMTI4OworICAgICAgICByZXMtPk1heFZh
cnlpbmdWZWN0b3JzICAgICAgICAgICAgPSA4OworICAgICAgICByZXMtPk1heFZlcnRleFRleHR1
cmVJbWFnZVVuaXRzICAgPSAwOworICAgICAgICByZXMtPk1heENvbWJpbmVkVGV4dHVyZUltYWdl
VW5pdHMgPSA4OworICAgICAgICByZXMtPk1heFRleHR1cmVJbWFnZVVuaXRzICAgICAgICAgPSA4
OworICAgICAgICByZXMtPk1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMgICAgPSAxNjsKKyAgICAg
ICAgcmVzLT5NYXhEcmF3QnVmZmVycyAgICAgICAgICAgICAgID0gMTsKKworICAgICAgICByZXMt
Pk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyA9IDA7CisgICAgICAgIHJlcy0+T0VTX0VHTF9pbWFn
ZV9leHRlcm5hbCAgID0gMDsKKworICAgICAgICByZXMtPk1heEV4cHJlc3Npb25Db21wbGV4aXR5
ID0ga01heEV4cHJlc3Npb25Db21wbGV4aXR5OworICAgICAgICByZXMtPk1heENhbGxTdGFja0Rl
cHRoICAgICAgID0ga01heENhbGxTdGFja0RlcHRoOworICAgICAgICByZXMtPk1heEZ1bmN0aW9u
UGFyYW1ldGVycyAgID0ga01heEZ1bmN0aW9uUGFyYW1ldGVyczsKKyAgICB9CisKKyAgICB2b2lk
IEdlbmVyYXRlTG9uZ0V4cHJlc3Npb24oaW50IGxlbmd0aCwgc3RkOjpzdHJpbmdzdHJlYW0qIHNz
KQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgaWkgPSAwOyBpaSA8IGxlbmd0aDsgKytpaSkgewor
ICAgICAgICAgICpzcyA8PCAiKyB2ZWM0KCIgPDwgaWkgPDwgIikiOworICAgICAgICB9CisgICAg
fQorCisgICAgc3RkOjpzdHJpbmcgR2VuZXJhdGVTaGFkZXJXaXRoTG9uZ0V4cHJlc3Npb24oaW50
IGxlbmd0aCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJTdGFydCA9
IFNIQURFUigKKyAgICAgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICAg
ICAgdW5pZm9ybSB2ZWM0IHVfY29sb3I7CisgICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdV9jb2xvcgorICAgICAgICAp
OworCisgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICAgICAgICBzcyA8PCBzaGFkZXJT
dGFydDsKKyAgICAgICAgR2VuZXJhdGVMb25nRXhwcmVzc2lvbihsZW5ndGgsICZzcyk7CisgICAg
ICAgIHNzIDw8ICI7IH0iOworCisgICAgICAgIHJldHVybiBzcy5zdHIoKTsKKyAgICB9CisKKyAg
ICBzdGQ6OnN0cmluZyBHZW5lcmF0ZVNoYWRlcldpdGhVbnVzZWRMb25nRXhwcmVzc2lvbihpbnQg
bGVuZ3RoKQorICAgIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYWRlclN0YXJ0ID0g
U0hBREVSKAorICAgICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgICAg
ICB1bmlmb3JtIHZlYzQgdV9jb2xvcjsKKyAgICAgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB1X2NvbG9yOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgdmVjNCBzb21lRnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgIHJl
dHVybiB1X2NvbG9yCisgICAgICAgICk7CisKKyAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7
CisKKyAgICAgICAgc3MgPDwgc2hhZGVyU3RhcnQ7CisgICAgICAgIEdlbmVyYXRlTG9uZ0V4cHJl
c3Npb24obGVuZ3RoLCAmc3MpOworICAgICAgICBzcyA8PCAiOyB9IjsKKworICAgICAgICByZXR1
cm4gc3Muc3RyKCk7CisgICAgfQorCisgICAgdm9pZCBHZW5lcmF0ZURlZXBGdW5jdGlvblN0YWNr
KGludCBsZW5ndGgsIHN0ZDo6c3RyaW5nc3RyZWFtKiBzcykKKyAgICB7CisgICAgICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBzaGFkZXJTdGFydCA9IFNIQURFUigKKyAgICAgICAgICAgIHByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworICAgICAgICAgICAgdW5pZm9ybSB2ZWM0IHVfY29sb3I7CisgICAg
ICAgICAgICB2ZWM0IGZ1bmN0aW9uMCgpICB7CisgICAgICAgICAgICAgIHJldHVybiB1X2NvbG9y
OworICAgICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAgICpzcyA8PCBzaGFkZXJTdGFy
dDsKKyAgICAgICAgZm9yIChpbnQgaWkgPSAwOyBpaSA8IGxlbmd0aDsgKytpaSkgeworICAgICAg
ICAgICpzcyA8PCAidmVjNCBmdW5jdGlvbiIgPDwgKGlpICsgMSkgPDwgIigpIHtcbiIKKyAgICAg
ICAgICAgICAgPDwgIiAgcmV0dXJuIGZ1bmN0aW9uIiA8PCBpaSA8PCAiKCk7XG4iCisgICAgICAg
ICAgICAgIDw8ICJ9XG4iOworICAgICAgICB9CisgICAgfQorCisgICAgc3RkOjpzdHJpbmcgR2Vu
ZXJhdGVTaGFkZXJXaXRoRGVlcEZ1bmN0aW9uU3RhY2soaW50IGxlbmd0aCkKKyAgICB7CisgICAg
ICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOworCisgICAgICAgIEdlbmVyYXRlRGVlcEZ1bmN0aW9u
U3RhY2sobGVuZ3RoLCAmc3MpOworCisgICAgICAgIHNzIDw8ICJ2b2lkIG1haW4oKSB7XG4iCisg
ICAgICAgICAgIDw8ICIgIGdsX0ZyYWdDb2xvciA9IGZ1bmN0aW9uIiA8PCBsZW5ndGggPDwgIigp
O1xuIgorICAgICAgICAgICA8PCAifSI7CisKKyAgICAgICAgcmV0dXJuIHNzLnN0cigpOworICAg
IH0KKworICAgIHN0ZDo6c3RyaW5nIEdlbmVyYXRlU2hhZGVyV2l0aFVudXNlZERlZXBGdW5jdGlv
blN0YWNrKGludCBsZW5ndGgpCisgICAgeworICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsK
KworICAgICAgICBHZW5lcmF0ZURlZXBGdW5jdGlvblN0YWNrKGxlbmd0aCwgJnNzKTsKKworICAg
ICAgICBzcyA8PCAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAgICA8PCAiICBnbF9GcmFnQ29s
b3IgPSB2ZWM0KDAsMCwwLDApO1xuIgorICAgICAgICAgICA8PCAifSI7CisKKworICAgICAgICBy
ZXR1cm4gc3Muc3RyKCk7CisgICAgfQorCisgICAgc3RkOjpzdHJpbmcgR2VuZXJhdGVTaGFkZXJX
aXRoRnVuY3Rpb25QYXJhbWV0ZXJzKGludCBwYXJhbWV0ZXJzKQorICAgIHsKKyAgICAgICAgc3Rk
OjpzdHJpbmdzdHJlYW0gc3M7CisKKyAgICAgICAgc3MgPDwgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0O1xuIgorICAgICAgICAgICA8PCAiXG4iCisgICAgICAgICAgIDw8ICJmbG9hdCBmb28oIjsK
KyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzOyArK2kpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHNzIDw8ICJmbG9hdCBmIiA8PCBpOworICAgICAgICAgICAgaWYgKGkgKyAx
IDwgcGFyYW1ldGVycykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzcyA8PCAiLCAi
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHNzIDw8ICIpXG4iCisgICAgICAg
ICAgIDw8ICJ7XG4iCisgICAgICAgICAgIDw8ICIgICAgcmV0dXJuIGYwO1xuIgorICAgICAgICAg
ICA8PCAifVxuIgorICAgICAgICAgICA8PCAiXG4iCisgICAgICAgICAgIDw8ICJ2b2lkIG1haW4o
KVxuIgorICAgICAgICAgICA8PCAie1xuIgorICAgICAgICAgICA8PCAiICAgIGdsX0ZyYWdDb2xv
ciA9IHZlYzQoMCwwLDAsMCk7XG4iCisgICAgICAgICAgIDw8ICJ9IjsKKworICAgICAgICByZXR1
cm4gc3Muc3RyKCk7CisgICAgfQorCisgICAgLy8gQ29tcGlsZXMgYSBzaGFkZXIgYW5kIGlmIHRo
ZXJlJ3MgYW4gZXJyb3IgY2hlY2tzIGZvciBhIHNwZWNpZmljCisgICAgLy8gc3Vic3RyaW5nIGlu
IHRoZSBlcnJvciBsb2cuIFRoaXMgd2F5IHdlIGtub3cgdGhlIGVycm9yIGlzIHNwZWNpZmljCisg
ICAgLy8gdG8gdGhlIGlzc3VlIHdlIGFyZSB0ZXN0aW5nLgorICAgIGJvb2wgQ2hlY2tTaGFkZXJD
b21waWxhdGlvbihTaEhhbmRsZSBjb21waWxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciAqc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25zLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyICpleHBlY3RlZF9lcnJvcikKKyAgICB7CisgICAgICAgIGJv
b2wgc3VjY2VzcyA9IFNoQ29tcGlsZShjb21waWxlciwgJnNvdXJjZSwgMSwgY29tcGlsZU9wdGlv
bnMpICE9IDA7CisgICAgICAgIGlmIChzdWNjZXNzKQorICAgICAgICB7CisgICAgICAgICAgICBz
dWNjZXNzID0gIWV4cGVjdGVkX2Vycm9yOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RkOjpzdHJpbmcgbG9nID0gU2hHZXRJbmZvTG9nKGNvbXBpbGVy
KTsKKyAgICAgICAgICAgIGlmIChleHBlY3RlZF9lcnJvcikKKyAgICAgICAgICAgICAgICBzdWNj
ZXNzID0gbG9nLmZpbmQoZXhwZWN0ZWRfZXJyb3IpICE9IHN0ZDo6c3RyaW5nOjpucG9zOworCisg
ICAgICAgICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKSA8PCBsb2cgPDwgIlxuLS0tLXNoYWRlci0t
LS1cbiIgPDwgc291cmNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzdWNjZXNzOworICAg
IH0KKworICAgIFNoQnVpbHRJblJlc291cmNlcyByZXNvdXJjZXM7Cit9OworCitjb25zdCBjaGFy
KiBFeHByZXNzaW9uTGltaXRUZXN0OjprRXhwcmVzc2lvblRvb0NvbXBsZXggPQorICAgICJFeHBy
ZXNzaW9uIHRvbyBjb21wbGV4IjsKK2NvbnN0IGNoYXIqIEV4cHJlc3Npb25MaW1pdFRlc3Q6OmtD
YWxsU3RhY2tUb29EZWVwID0KKyAgICAiQ2FsbCBzdGFjayB0b28gZGVlcCI7Citjb25zdCBjaGFy
KiBFeHByZXNzaW9uTGltaXRUZXN0OjprSGFzUmVjdXJzaW9uID0KKyAgICAiRnVuY3Rpb24gcmVj
dXJzaW9uIGRldGVjdGVkIjsKK2NvbnN0IGNoYXIqIEV4cHJlc3Npb25MaW1pdFRlc3Q6OmtUb29N
YW55UGFyYW1ldGVycyA9CisgICAgIkZ1bmN0aW9uIGhhcyB0b28gbWFueSBwYXJhbWV0ZXJzIjsK
KworVEVTVF9GKEV4cHJlc3Npb25MaW1pdFRlc3QsIEV4cHJlc3Npb25Db21wbGV4aXR5KQorewor
ICAgIFNoU2hhZGVyU3BlYyBzcGVjID0gU0hfV0VCR0xfU1BFQzsKKyAgICBTaFNoYWRlck91dHB1
dCBvdXRwdXQgPSBTSF9FU1NMX09VVFBVVDsKKyAgICBTaEhhbmRsZSB2ZXJ0ZXhDb21waWxlciA9
IFNoQ29uc3RydWN0Q29tcGlsZXIoCisgICAgICAgIEdMX0ZSQUdNRU5UX1NIQURFUiwgc3BlYywg
b3V0cHV0LCAmcmVzb3VyY2VzKTsKKyAgICBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25z
ID0gU0hfTElNSVRfRVhQUkVTU0lPTl9DT01QTEVYSVRZOworCisgICAgLy8gVGVzdCBleHByZXNz
aW9uIHVuZGVyIHRoZSBsaW1pdCBwYXNzZXMuCisgICAgRVhQRUNUX1RSVUUoQ2hlY2tTaGFkZXJD
b21waWxhdGlvbigKKyAgICAgICAgdmVydGV4Q29tcGlsZXIsCisgICAgICAgIEdlbmVyYXRlU2hh
ZGVyV2l0aExvbmdFeHByZXNzaW9uKAorICAgICAgICAgICAga01heEV4cHJlc3Npb25Db21wbGV4
aXR5IC0gMTApLmNfc3RyKCksCisgICAgICAgIGNvbXBpbGVPcHRpb25zLCBOVUxMKSk7CisgICAg
Ly8gVGVzdCBleHByZXNzaW9uIG92ZXIgdGhlIGxpbWl0IGZhaWxzLgorICAgIEVYUEVDVF9UUlVF
KENoZWNrU2hhZGVyQ29tcGlsYXRpb24oCisgICAgICAgIHZlcnRleENvbXBpbGVyLAorICAgICAg
ICBHZW5lcmF0ZVNoYWRlcldpdGhMb25nRXhwcmVzc2lvbigKKyAgICAgICAgICAgIGtNYXhFeHBy
ZXNzaW9uQ29tcGxleGl0eSArIDEwKS5jX3N0cigpLAorICAgICAgICBjb21waWxlT3B0aW9ucywg
a0V4cHJlc3Npb25Ub29Db21wbGV4KSk7CisgICAgLy8gVGVzdCBleHByZXNzaW9uIG92ZXIgdGhl
IGxpbWl0IHdpdGhvdXQgYSBsaW1pdCBkb2VzIG5vdCBmYWlsLgorICAgIEVYUEVDVF9UUlVFKENo
ZWNrU2hhZGVyQ29tcGlsYXRpb24oCisgICAgICAgIHZlcnRleENvbXBpbGVyLAorICAgICAgICBH
ZW5lcmF0ZVNoYWRlcldpdGhMb25nRXhwcmVzc2lvbigKKyAgICAgICAgICAgIGtNYXhFeHByZXNz
aW9uQ29tcGxleGl0eSArIDEwKS5jX3N0cigpLAorICAgICAgICBjb21waWxlT3B0aW9ucyAmIH5T
SF9MSU1JVF9FWFBSRVNTSU9OX0NPTVBMRVhJVFksIE5VTEwpKTsKKyAgICBTaERlc3RydWN0KHZl
cnRleENvbXBpbGVyKTsKK30KKworVEVTVF9GKEV4cHJlc3Npb25MaW1pdFRlc3QsIFVudXNlZEV4
cHJlc3Npb25Db21wbGV4aXR5KQoreworICAgIFNoU2hhZGVyU3BlYyBzcGVjID0gU0hfV0VCR0xf
U1BFQzsKKyAgICBTaFNoYWRlck91dHB1dCBvdXRwdXQgPSBTSF9FU1NMX09VVFBVVDsKKyAgICBT
aEhhbmRsZSB2ZXJ0ZXhDb21waWxlciA9IFNoQ29uc3RydWN0Q29tcGlsZXIoCisgICAgICAgIEdM
X0ZSQUdNRU5UX1NIQURFUiwgc3BlYywgb3V0cHV0LCAmcmVzb3VyY2VzKTsKKyAgICBTaENvbXBp
bGVPcHRpb25zIGNvbXBpbGVPcHRpb25zID0gU0hfTElNSVRfRVhQUkVTU0lPTl9DT01QTEVYSVRZ
OworCisgICAgLy8gVGVzdCBleHByZXNzaW9uIHVuZGVyIHRoZSBsaW1pdCBwYXNzZXMuCisgICAg
RVhQRUNUX1RSVUUoQ2hlY2tTaGFkZXJDb21waWxhdGlvbigKKyAgICAgICAgdmVydGV4Q29tcGls
ZXIsCisgICAgICAgIEdlbmVyYXRlU2hhZGVyV2l0aFVudXNlZExvbmdFeHByZXNzaW9uKAorICAg
ICAgICAgICAga01heEV4cHJlc3Npb25Db21wbGV4aXR5IC0gMTApLmNfc3RyKCksCisgICAgICAg
IGNvbXBpbGVPcHRpb25zLCBOVUxMKSk7CisgICAgLy8gVGVzdCBleHByZXNzaW9uIG92ZXIgdGhl
IGxpbWl0IGZhaWxzLgorICAgIEVYUEVDVF9UUlVFKENoZWNrU2hhZGVyQ29tcGlsYXRpb24oCisg
ICAgICAgIHZlcnRleENvbXBpbGVyLAorICAgICAgICBHZW5lcmF0ZVNoYWRlcldpdGhVbnVzZWRM
b25nRXhwcmVzc2lvbigKKyAgICAgICAgICAgIGtNYXhFeHByZXNzaW9uQ29tcGxleGl0eSArIDEw
KS5jX3N0cigpLAorICAgICAgICBjb21waWxlT3B0aW9ucywga0V4cHJlc3Npb25Ub29Db21wbGV4
KSk7CisgICAgLy8gVGVzdCBleHByZXNzaW9uIG92ZXIgdGhlIGxpbWl0IHdpdGhvdXQgYSBsaW1p
dCBkb2VzIG5vdCBmYWlsLgorICAgIEVYUEVDVF9UUlVFKENoZWNrU2hhZGVyQ29tcGlsYXRpb24o
CisgICAgICAgIHZlcnRleENvbXBpbGVyLAorICAgICAgICBHZW5lcmF0ZVNoYWRlcldpdGhVbnVz
ZWRMb25nRXhwcmVzc2lvbigKKyAgICAgICAgICAgIGtNYXhFeHByZXNzaW9uQ29tcGxleGl0eSAr
IDEwKS5jX3N0cigpLAorICAgICAgICBjb21waWxlT3B0aW9ucyAmIH5TSF9MSU1JVF9FWFBSRVNT
SU9OX0NPTVBMRVhJVFksIE5VTEwpKTsKKyAgICBTaERlc3RydWN0KHZlcnRleENvbXBpbGVyKTsK
K30KKworVEVTVF9GKEV4cHJlc3Npb25MaW1pdFRlc3QsIENhbGxTdGFja0RlcHRoKQoreworICAg
IFNoU2hhZGVyU3BlYyBzcGVjID0gU0hfV0VCR0xfU1BFQzsKKyAgICBTaFNoYWRlck91dHB1dCBv
dXRwdXQgPSBTSF9FU1NMX09VVFBVVDsKKyAgICBTaEhhbmRsZSB2ZXJ0ZXhDb21waWxlciA9IFNo
Q29uc3RydWN0Q29tcGlsZXIoCisgICAgICAgIEdMX0ZSQUdNRU5UX1NIQURFUiwgc3BlYywgb3V0
cHV0LCAmcmVzb3VyY2VzKTsKKyAgICBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25zID0g
U0hfTElNSVRfQ0FMTF9TVEFDS19ERVBUSDsKKworICAgIC8vIFRlc3QgY2FsbCBzdGFjayB1bmRl
ciB0aGUgbGltaXQgcGFzc2VzLgorICAgIEVYUEVDVF9UUlVFKENoZWNrU2hhZGVyQ29tcGlsYXRp
b24oCisgICAgICAgIHZlcnRleENvbXBpbGVyLAorICAgICAgICBHZW5lcmF0ZVNoYWRlcldpdGhE
ZWVwRnVuY3Rpb25TdGFjaygKKyAgICAgICAgICAgIGtNYXhDYWxsU3RhY2tEZXB0aCAtIDEwKS5j
X3N0cigpLAorICAgICAgICBjb21waWxlT3B0aW9ucywgTlVMTCkpOworICAgIC8vIFRlc3QgY2Fs
bCBzdGFjayBvdmVyIHRoZSBsaW1pdCBmYWlscy4KKyAgICBFWFBFQ1RfVFJVRShDaGVja1NoYWRl
ckNvbXBpbGF0aW9uKAorICAgICAgICB2ZXJ0ZXhDb21waWxlciwKKyAgICAgICAgR2VuZXJhdGVT
aGFkZXJXaXRoRGVlcEZ1bmN0aW9uU3RhY2soCisgICAgICAgICAgICBrTWF4Q2FsbFN0YWNrRGVw
dGggKyAxMCkuY19zdHIoKSwKKyAgICAgICAgY29tcGlsZU9wdGlvbnMsIGtDYWxsU3RhY2tUb29E
ZWVwKSk7CisgICAgLy8gVGVzdCBjYWxsIHN0YWNrIG92ZXIgdGhlIGxpbWl0IHdpdGhvdXQgbGlt
aXQgZG9lcyBub3QgZmFpbC4KKyAgICBFWFBFQ1RfVFJVRShDaGVja1NoYWRlckNvbXBpbGF0aW9u
KAorICAgICAgICB2ZXJ0ZXhDb21waWxlciwKKyAgICAgICAgR2VuZXJhdGVTaGFkZXJXaXRoRGVl
cEZ1bmN0aW9uU3RhY2soCisgICAgICAgICAgICBrTWF4Q2FsbFN0YWNrRGVwdGggKyAxMCkuY19z
dHIoKSwKKyAgICAgICAgY29tcGlsZU9wdGlvbnMgJiB+U0hfTElNSVRfQ0FMTF9TVEFDS19ERVBU
SCwgTlVMTCkpOworICAgIFNoRGVzdHJ1Y3QodmVydGV4Q29tcGlsZXIpOworfQorCitURVNUX0Yo
RXhwcmVzc2lvbkxpbWl0VGVzdCwgVW51c2VkQ2FsbFN0YWNrRGVwdGgpCit7CisgICAgU2hTaGFk
ZXJTcGVjIHNwZWMgPSBTSF9XRUJHTF9TUEVDOworICAgIFNoU2hhZGVyT3V0cHV0IG91dHB1dCA9
IFNIX0VTU0xfT1VUUFVUOworICAgIFNoSGFuZGxlIHZlcnRleENvbXBpbGVyID0gU2hDb25zdHJ1
Y3RDb21waWxlcigKKyAgICAgICAgR0xfRlJBR01FTlRfU0hBREVSLCBzcGVjLCBvdXRwdXQsICZy
ZXNvdXJjZXMpOworICAgIFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMgPSBTSF9MSU1J
VF9DQUxMX1NUQUNLX0RFUFRIOworCisgICAgLy8gVGVzdCBjYWxsIHN0YWNrIHVuZGVyIHRoZSBs
aW1pdCBwYXNzZXMuCisgICAgRVhQRUNUX1RSVUUoQ2hlY2tTaGFkZXJDb21waWxhdGlvbigKKyAg
ICAgICAgdmVydGV4Q29tcGlsZXIsCisgICAgICAgIEdlbmVyYXRlU2hhZGVyV2l0aFVudXNlZERl
ZXBGdW5jdGlvblN0YWNrKAorICAgICAgICAgICAga01heENhbGxTdGFja0RlcHRoIC0gMTApLmNf
c3RyKCksCisgICAgICAgIGNvbXBpbGVPcHRpb25zLCBOVUxMKSk7CisgICAgLy8gVGVzdCBjYWxs
IHN0YWNrIG92ZXIgdGhlIGxpbWl0IGZhaWxzLgorICAgIEVYUEVDVF9UUlVFKENoZWNrU2hhZGVy
Q29tcGlsYXRpb24oCisgICAgICAgIHZlcnRleENvbXBpbGVyLAorICAgICAgICBHZW5lcmF0ZVNo
YWRlcldpdGhVbnVzZWREZWVwRnVuY3Rpb25TdGFjaygKKyAgICAgICAgICAgIGtNYXhDYWxsU3Rh
Y2tEZXB0aCArIDEwKS5jX3N0cigpLAorICAgICAgICBjb21waWxlT3B0aW9ucywga0NhbGxTdGFj
a1Rvb0RlZXApKTsKKyAgICAvLyBUZXN0IGNhbGwgc3RhY2sgb3ZlciB0aGUgbGltaXQgd2l0aG91
dCBsaW1pdCBkb2VzIG5vdCBmYWlsLgorICAgIEVYUEVDVF9UUlVFKENoZWNrU2hhZGVyQ29tcGls
YXRpb24oCisgICAgICAgIHZlcnRleENvbXBpbGVyLAorICAgICAgICBHZW5lcmF0ZVNoYWRlcldp
dGhVbnVzZWREZWVwRnVuY3Rpb25TdGFjaygKKyAgICAgICAgICAgIGtNYXhDYWxsU3RhY2tEZXB0
aCArIDEwKS5jX3N0cigpLAorICAgICAgICBjb21waWxlT3B0aW9ucyAmIH5TSF9MSU1JVF9DQUxM
X1NUQUNLX0RFUFRILCBOVUxMKSk7CisgICAgU2hEZXN0cnVjdCh2ZXJ0ZXhDb21waWxlcik7Cit9
CisKK1RFU1RfRihFeHByZXNzaW9uTGltaXRUZXN0LCBSZWN1cnNpb24pCit7CisgICAgU2hTaGFk
ZXJTcGVjIHNwZWMgPSBTSF9XRUJHTF9TUEVDOworICAgIFNoU2hhZGVyT3V0cHV0IG91dHB1dCA9
IFNIX0VTU0xfT1VUUFVUOworICAgIFNoSGFuZGxlIHZlcnRleENvbXBpbGVyID0gU2hDb25zdHJ1
Y3RDb21waWxlcigKKyAgICAgICAgR0xfRlJBR01FTlRfU0hBREVSLCBzcGVjLCBvdXRwdXQsICZy
ZXNvdXJjZXMpOworICAgIFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMgPSAwOworCisg
ICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYWRlcldpdGhSZWN1cnNpb24wID0gU0hBREVSKAorICAg
ICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgICAgICAgdW5pZm9ybSB2ZWM0IHVfY29s
b3I7CisgICAgICAgIHZlYzQgc29tZUZ1bmMoKSAgeworICAgICAgICAgICAgcmV0dXJuIHNvbWVG
dW5jKCk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIG1haW4oKSB7CisgICAgICAgICAgICBn
bF9GcmFnQ29sb3IgPSB1X2NvbG9yICogc29tZUZ1bmMoKTsKKyAgICAgICAgfQorICAgICk7CisK
KyAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyV2l0aFJlY3Vyc2lvbjEgPSBTSEFERVIoCisg
ICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICB1bmlmb3JtIHZlYzQgdV9j
b2xvcjsKKworICAgICAgICB2ZWM0IHNvbWVGdW5jKCk7CisKKyAgICAgICAgdmVjNCBzb21lRnVu
YzEoKSAgeworICAgICAgICAgICAgcmV0dXJuIHNvbWVGdW5jKCk7CisgICAgICAgIH0KKworICAg
ICAgICB2ZWM0IHNvbWVGdW5jKCkgIHsKKyAgICAgICAgICAgIHJldHVybiBzb21lRnVuYzEoKTsK
KyAgICAgICAgfQorCisgICAgICAgIHZvaWQgbWFpbigpIHsKKyAgICAgICAgICAgIGdsX0ZyYWdD
b2xvciA9IHVfY29sb3IgKiBzb21lRnVuYygpOworICAgICAgICB9CisgICAgKTsKKworICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJXaXRoUmVjdXJzaW9uMiA9IFNIQURFUigKKyAgICAgICAg
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgIHVuaWZvcm0gdmVjNCB1X2NvbG9yOwor
ICAgICAgICB2ZWM0IHNvbWVGdW5jKCkgIHsKKyAgICAgICAgICAgIGlmICh1X2NvbG9yLnggPiAw
LjUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc29tZUZ1bmMoKTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZlYzQoMSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICB2b2lkIG1haW4oKSB7CisgICAgICAgICAgICBnbF9GcmFnQ29s
b3IgPSBzb21lRnVuYygpOworICAgICAgICB9CisgICAgKTsKKworICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBzaGFkZXJXaXRoUmVjdXJzaW9uMyA9IFNIQURFUigKKyAgICAgICAgcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisgICAgICAgIHVuaWZvcm0gdmVjNCB1X2NvbG9yOworICAgICAgICB2ZWM0
IHNvbWVGdW5jKCkgIHsKKyAgICAgICAgICAgIGlmICh1X2NvbG9yLnggPiAwLjUpIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdmVjNCgxKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHNvbWVGdW5jKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICB2b2lkIG1haW4oKSB7CisgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSBzb21lRnVu
YygpOworICAgICAgICB9CisgICAgKTsKKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJX
aXRoUmVjdXJzaW9uNCA9IFNIQURFUigKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisgICAgICAgIHVuaWZvcm0gdmVjNCB1X2NvbG9yOworICAgICAgICB2ZWM0IHNvbWVGdW5jKCkg
IHsKKyAgICAgICAgICAgIHJldHVybiAodV9jb2xvci54ID4gMC41KSA/IHZlYzQoMSkgOiBzb21l
RnVuYygpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBtYWluKCkgeworICAgICAgICAgICAg
Z2xfRnJhZ0NvbG9yID0gc29tZUZ1bmMoKTsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBzdGF0
aWMgY29uc3QgY2hhciogc2hhZGVyV2l0aFJlY3Vyc2lvbjUgPSBTSEFERVIoCisgICAgICAgIHBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICB1bmlmb3JtIHZlYzQgdV9jb2xvcjsKKyAg
ICAgICAgdmVjNCBzb21lRnVuYygpICB7CisgICAgICAgICAgICByZXR1cm4gKHVfY29sb3IueCA+
IDAuNSkgPyBzb21lRnVuYygpIDogdmVjNCgxKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQg
bWFpbigpIHsKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHNvbWVGdW5jKCk7CisgICAgICAg
IH0KKyAgICApOworCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYWRlcldpdGhSZWN1cnNpb242
ID0gU0hBREVSKAorICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgICAgICAgdW5p
Zm9ybSB2ZWM0IHVfY29sb3I7CisgICAgICAgIHZlYzQgc29tZUZ1bmMoKSAgeworICAgICAgICAg
ICAgcmV0dXJuIHNvbWVGdW5jKCk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIG1haW4oKSB7
CisgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB1X2NvbG9yOworICAgICAgICB9CisgICAgKTsK
KworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJXaXRoTm9SZWN1cnNpb24gPSBTSEFERVIo
CisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICB1bmlmb3JtIHZlYzQg
dV9jb2xvcjsKKworICAgICAgICB2ZWMzIHJnYihpbnQgciwgaW50IGcsIGludCBiKSB7CisgICAg
ICAgICAgICByZXR1cm4gdmVjMyhmbG9hdChyKSAvIDI1NS4wLCBmbG9hdChnKSAvIDI1NS4wLCBm
bG9hdChiKSAvIDI1NS4wKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgbWFpbigpIHsKKyAg
ICAgICAgICAgIHZlYzMgaGFpckNvbG9yMCA9IHJnYigxNTEsIDIwMCwgMjM0KTsKKyAgICAgICAg
ICAgIHZlYzMgZmFjZUNvbG9yMiA9IHJnYigxODMsIDE0OCwgMTMzKTsKKyAgICAgICAgICAgIGds
X0ZyYWdDb2xvciA9IHVfY29sb3IgKyB2ZWM0KGhhaXJDb2xvcjAgKyBmYWNlQ29sb3IyLCAwKTsK
KyAgICAgICAgfQorICAgICk7CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyV2l0aFJl
Y3Vyc2lvbjcgPSBTSEFERVIoCisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAg
ICAgICB1bmlmb3JtIHZlYzQgdV9jb2xvcjsKKworICAgICAgICB2ZWM0IGZ1bmN0aW9uMigpIHsK
KyAgICAgICAgICAgIHJldHVybiB1X2NvbG9yOworICAgICAgICB9CisKKyAgICAgICAgdmVjNCBm
dW5jdGlvbjEoKSB7CisgICAgICAgICAgICB2ZWM0IGEgPSBmdW5jdGlvbjIoKTsKKyAgICAgICAg
ICAgIHZlYzQgYiA9IGZ1bmN0aW9uMSgpOworICAgICAgICAgICAgcmV0dXJuIGEgKyBiOworICAg
ICAgICB9CisKKyAgICAgICAgdm9pZCBtYWluKCkgeworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9y
ID0gZnVuY3Rpb24xKCk7CisgICAgICAgIH0KKyAgICApOworCisgICAgc3RhdGljIGNvbnN0IGNo
YXIqIHNoYWRlcldpdGhSZWN1cnNpb244ID0gU0hBREVSKAorICAgICAgICBwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKyAgICAgICAgdW5pZm9ybSB2ZWM0IHVfY29sb3I7CisKKyAgICAgICAgdmVj
NCBmdW5jdGlvbjEoKTsKKworICAgICAgICB2ZWM0IGZ1bmN0aW9uMygpIHsKKyAgICAgICAgICAg
IHJldHVybiBmdW5jdGlvbjEoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZlYzQgZnVuY3Rpb24y
KCkgeworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uMygpOworICAgICAgICB9CisKKyAgICAg
ICAgdmVjNCBmdW5jdGlvbjEoKSB7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24yKCk7Cisg
ICAgICAgIH0KKworICAgICAgICB2b2lkIG1haW4oKSB7CisgICAgICAgICAgICBnbF9GcmFnQ29s
b3IgPSBmdW5jdGlvbjEoKTsKKyAgICAgICAgfQorICAgICk7CisKKyAgICAvLyBDaGVjayBzaW1w
bGUgcmVjdXJzaW9ucyBmYWlscy4KKyAgICBFWFBFQ1RfVFJVRShDaGVja1NoYWRlckNvbXBpbGF0
aW9uKAorICAgICAgICB2ZXJ0ZXhDb21waWxlciwgc2hhZGVyV2l0aFJlY3Vyc2lvbjAsCisgICAg
ICAgIGNvbXBpbGVPcHRpb25zLCBrSGFzUmVjdXJzaW9uKSk7CisgICAgLy8gQ2hlY2sgc2ltcGxl
IHJlY3Vyc2lvbnMgZmFpbHMuCisgICAgRVhQRUNUX1RSVUUoQ2hlY2tTaGFkZXJDb21waWxhdGlv
bigKKyAgICAgICAgdmVydGV4Q29tcGlsZXIsIHNoYWRlcldpdGhSZWN1cnNpb24xLAorICAgICAg
ICBjb21waWxlT3B0aW9ucywga0hhc1JlY3Vyc2lvbikpOworICAgIC8vIENoZWNrIGlmIHJlY3Vy
c2lvbnMgZmFpbHMuCisgICAgRVhQRUNUX1RSVUUoQ2hlY2tTaGFkZXJDb21waWxhdGlvbigKKyAg
ICAgICAgdmVydGV4Q29tcGlsZXIsIHNoYWRlcldpdGhSZWN1cnNpb24yLAorICAgICAgICBjb21w
aWxlT3B0aW9ucywga0hhc1JlY3Vyc2lvbikpOworICAgIC8vIENoZWNrIGlmIHJlY3Vyc2lvbnMg
ZmFpbHMuCisgICAgRVhQRUNUX1RSVUUoQ2hlY2tTaGFkZXJDb21waWxhdGlvbigKKyAgICAgICAg
dmVydGV4Q29tcGlsZXIsIHNoYWRlcldpdGhSZWN1cnNpb24zLAorICAgICAgICBjb21waWxlT3B0
aW9ucywga0hhc1JlY3Vyc2lvbikpOworICAgIC8vIENoZWNrIHRlcm5hcnkgcmVjdXJzaW9ucyBm
YWlscy4KKyAgICBFWFBFQ1RfVFJVRShDaGVja1NoYWRlckNvbXBpbGF0aW9uKAorICAgICAgICB2
ZXJ0ZXhDb21waWxlciwgc2hhZGVyV2l0aFJlY3Vyc2lvbjQsCisgICAgICAgIGNvbXBpbGVPcHRp
b25zLCBrSGFzUmVjdXJzaW9uKSk7CisgICAgLy8gQ2hlY2sgdGVybmFyeSByZWN1cnNpb25zIGZh
aWxzLgorICAgIEVYUEVDVF9UUlVFKENoZWNrU2hhZGVyQ29tcGlsYXRpb24oCisgICAgICAgIHZl
cnRleENvbXBpbGVyLCBzaGFkZXJXaXRoUmVjdXJzaW9uNSwKKyAgICAgICAgY29tcGlsZU9wdGlv
bnMsIGtIYXNSZWN1cnNpb24pKTsKKworICAgIC8vIENoZWNrIHNvbWUgbW9yZSBmb3JtcyBvZiBy
ZWN1cnNpb24KKyAgICBFWFBFQ1RfVFJVRShDaGVja1NoYWRlckNvbXBpbGF0aW9uKAorICAgICAg
ICB2ZXJ0ZXhDb21waWxlciwgc2hhZGVyV2l0aFJlY3Vyc2lvbjYsCisgICAgICAgIGNvbXBpbGVP
cHRpb25zLCBrSGFzUmVjdXJzaW9uKSk7CisgICAgRVhQRUNUX1RSVUUoQ2hlY2tTaGFkZXJDb21w
aWxhdGlvbigKKyAgICAgICAgdmVydGV4Q29tcGlsZXIsIHNoYWRlcldpdGhSZWN1cnNpb243LAor
ICAgICAgICBjb21waWxlT3B0aW9ucywga0hhc1JlY3Vyc2lvbikpOworICAgIEVYUEVDVF9UUlVF
KENoZWNrU2hhZGVyQ29tcGlsYXRpb24oCisgICAgICAgIHZlcnRleENvbXBpbGVyLCBzaGFkZXJX
aXRoUmVjdXJzaW9uOCwKKyAgICAgICAgY29tcGlsZU9wdGlvbnMsIGtIYXNSZWN1cnNpb24pKTsK
KyAgICAvLyBDaGVjayB1bnVzZWQgcmVjdXJzaW9ucyBmYWlscyBpZiBsaW1pdGluZyBjYWxsIHN0
YWNrCisgICAgLy8gc2luY2Ugd2UgY2hlY2sgYWxsIHBhdGhzLgorICAgIEVYUEVDVF9UUlVFKENo
ZWNrU2hhZGVyQ29tcGlsYXRpb24oCisgICAgICAgIHZlcnRleENvbXBpbGVyLCBzaGFkZXJXaXRo
UmVjdXJzaW9uNiwKKyAgICAgICAgY29tcGlsZU9wdGlvbnMgfCBTSF9MSU1JVF9DQUxMX1NUQUNL
X0RFUFRILCBrSGFzUmVjdXJzaW9uKSk7CisKKyAgICAvLyBDaGVjayB1bnVzZWQgcmVjdXJzaW9u
cyBwYXNzZXMuCisgICAgRVhQRUNUX1RSVUUoQ2hlY2tTaGFkZXJDb21waWxhdGlvbigKKyAgICAg
ICAgdmVydGV4Q29tcGlsZXIsIHNoYWRlcldpdGhOb1JlY3Vyc2lvbiwKKyAgICAgICAgY29tcGls
ZU9wdGlvbnMsIE5VTEwpKTsKKyAgICAvLyBDaGVjayB1bnVzZWQgcmVjdXJzaW9ucyBwYXNzZXMg
aWYgbGltaXRpbmcgY2FsbCBzdGFjay4KKyAgICBFWFBFQ1RfVFJVRShDaGVja1NoYWRlckNvbXBp
bGF0aW9uKAorICAgICAgICB2ZXJ0ZXhDb21waWxlciwgc2hhZGVyV2l0aE5vUmVjdXJzaW9uLAor
ICAgICAgICBjb21waWxlT3B0aW9ucyB8IFNIX0xJTUlUX0NBTExfU1RBQ0tfREVQVEgsIE5VTEwp
KTsKKyAgICBTaERlc3RydWN0KHZlcnRleENvbXBpbGVyKTsKK30KKworVEVTVF9GKEV4cHJlc3Np
b25MaW1pdFRlc3QsIEZ1bmN0aW9uUGFyYW1ldGVyQ291bnQpCit7CisgICAgU2hTaGFkZXJTcGVj
IHNwZWMgICAgID0gU0hfV0VCR0xfU1BFQzsKKyAgICBTaFNoYWRlck91dHB1dCBvdXRwdXQgPSBT
SF9FU1NMX09VVFBVVDsKKyAgICBTaEhhbmRsZSBjb21waWxlciAgICAgPSBTaENvbnN0cnVjdENv
bXBpbGVyKEdMX0ZSQUdNRU5UX1NIQURFUiwgc3BlYywgb3V0cHV0LCAmcmVzb3VyY2VzKTsKKyAg
ICBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25zID0gU0hfTElNSVRfRVhQUkVTU0lPTl9D
T01QTEVYSVRZOworCisgICAgLy8gVGVzdCBwYXJhbWV0ZXJzIHVuZGVyIHRoZSBsaW1pdCBzdWNj
ZWVkcy4KKyAgICBFWFBFQ1RfVFJVRShDaGVja1NoYWRlckNvbXBpbGF0aW9uKAorICAgICAgICBj
b21waWxlciwgR2VuZXJhdGVTaGFkZXJXaXRoRnVuY3Rpb25QYXJhbWV0ZXJzKGtNYXhGdW5jdGlv
blBhcmFtZXRlcnMpLmNfc3RyKCksCisgICAgICAgIGNvbXBpbGVPcHRpb25zLCBudWxscHRyKSk7
CisgICAgLy8gVGVzdCBwYXJhbWV0ZXJzIG92ZXIgdGhlIGxpbWl0IGZhaWxzLgorICAgIEVYUEVD
VF9UUlVFKENoZWNrU2hhZGVyQ29tcGlsYXRpb24oCisgICAgICAgIGNvbXBpbGVyLCBHZW5lcmF0
ZVNoYWRlcldpdGhGdW5jdGlvblBhcmFtZXRlcnMoa01heEZ1bmN0aW9uUGFyYW1ldGVycyArIDEp
LmNfc3RyKCksCisgICAgICAgIGNvbXBpbGVPcHRpb25zLCBrVG9vTWFueVBhcmFtZXRlcnMpKTsK
KyAgICAvLyBUZXN0IHBhcmFtZXRlcnMgb3ZlciB0aGUgbGltaXQgd2l0aG91dCBsaW1pdCBkb2Vz
IG5vdCBmYWlsLgorICAgIEVYUEVDVF9UUlVFKENoZWNrU2hhZGVyQ29tcGlsYXRpb24oCisgICAg
ICAgIGNvbXBpbGVyLCBHZW5lcmF0ZVNoYWRlcldpdGhGdW5jdGlvblBhcmFtZXRlcnMoa01heEZ1
bmN0aW9uUGFyYW1ldGVycyArIDEpLmNfc3RyKCksCisgICAgICAgIGNvbXBpbGVPcHRpb25zICYg
flNIX0xJTUlUX0VYUFJFU1NJT05fQ09NUExFWElUWSwgbnVsbHB0cikpOworICAgIFNoRGVzdHJ1
Y3QoY29tcGlsZXIpOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2NvbXBpbGVyX3Rlc3RzL0ZyYWdEZXB0aF90ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvRnJhZ0RlcHRoX3Rlc3Qu
Y3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9j
b21waWxlcl90ZXN0cy9GcmFnRGVwdGhfdGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMTkgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gRnJhZ0RlcHRoX3Rlc3QuY3BwOgorLy8gICBUZXN0
IGZvciBHTEVTIFNMIDMuMCBnbF9GcmFnRGVwdGggdmFyaWFibGUgaW1wbGVtZW50YXRpb24uCisv
LworCisjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2lu
Y2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgorCituYW1lc3BhY2UKK3sKK2NvbnN0IGNoYXIg
RVNTTFZlcnNpb24xMDBbXSA9ICIjdmVyc2lvbiAxMDBcbiI7Citjb25zdCBjaGFyIEVTU0xWZXJz
aW9uMzAwW10gPSAiI3ZlcnNpb24gMzAwIGVzXG4iOworY29uc3QgY2hhciBFWFRGRFByYWdtYVtd
ICAgID0gIiNleHRlbnNpb24gR0xfRVhUX2ZyYWdfZGVwdGggOiByZXF1aXJlXG4iOworfSAgLy8g
bmFtZXNwYWNlCisKK2NsYXNzIEZyYWdEZXB0aFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdp
dGhQYXJhbTxib29sPgoreworICBwcm90ZWN0ZWQ6CisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRl
CisgICAgeworICAgICAgICBTaEluaXRCdWlsdEluUmVzb3VyY2VzKCZtUmVzb3VyY2VzKTsKKyAg
ICAgICAgbUNvbXBpbGVyICAgICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgICAgIG1SZXNv
dXJjZXMuRVhUX2ZyYWdfZGVwdGggPSBHZXRQYXJhbSgpOworICAgIH0KKworICAgIHZvaWQgVGVh
ckRvd24oKSBvdmVycmlkZSB7IERlc3Ryb3lDb21waWxlcigpOyB9CisgICAgdm9pZCBEZXN0cm95
Q29tcGlsZXIoKQorICAgIHsKKyAgICAgICAgaWYgKG1Db21waWxlcikKKyAgICAgICAgeworICAg
ICAgICAgICAgU2hEZXN0cnVjdChtQ29tcGlsZXIpOworICAgICAgICAgICAgbUNvbXBpbGVyID0g
bnVsbHB0cjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgSW5pdGlhbGl6ZUNvbXBpbGVy
KCkKKyAgICB7CisgICAgICAgIERlc3Ryb3lDb21waWxlcigpOworICAgICAgICBtQ29tcGlsZXIg
PSBTaENvbnN0cnVjdENvbXBpbGVyKEdMX0ZSQUdNRU5UX1NIQURFUiwgU0hfR0xFUzNfU1BFQywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSF9HTFNMX0NPTVBBVElC
SUxJVFlfT1VUUFVULCAmbVJlc291cmNlcyk7CisgICAgICAgIEFTU0VSVF9UUlVFKG1Db21waWxl
ciAhPSBudWxscHRyKSA8PCAiQ29tcGlsZXIgY291bGQgbm90IGJlIGNvbnN0cnVjdGVkLiI7Cisg
ICAgfQorCisgICAgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFRlc3RTaGFkZXJDb21waWxlKGNv
bnN0IGNoYXIgKnZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIgKnByYWdtYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2hhZGVyKQorICAgIHsKKyAgICAgICAg
Y29uc3QgY2hhciAqc2hhZGVyU3RyaW5nc1tdID0ge3ZlcnNpb24sIHByYWdtYSwgc2hhZGVyfTsK
KyAgICAgICAgYm9vbCBzdWNjZXNzID0gU2hDb21waWxlKG1Db21waWxlciwgc2hhZGVyU3RyaW5n
cywgMywgMCk7CisgICAgICAgIGlmIChzdWNjZXNzKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCkgPDwgIkNvbXBpbGF0aW9uIHN1Y2Nl
c3MiOworICAgICAgICB9CisgICAgICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1
cmUoKSA8PCBTaEdldEluZm9Mb2cobUNvbXBpbGVyKTsKKyAgICB9CisKKyAgcHJvdGVjdGVkOgor
ICAgIFNoQnVpbHRJblJlc291cmNlcyBtUmVzb3VyY2VzOworICAgIFNoSGFuZGxlIG1Db21waWxl
cjsKK307CisKKy8vIFRoZSBHTEVTIFNMIDMuMCBidWlsdC1pbiB2YXJpYWJsZSBnbF9GcmFnRGVw
dGggZmFpbHMgdG8gY29tcGlsZSB3aXRoIEdMRVMgU0wgMS4wLgorVEVTVF9QKEZyYWdEZXB0aFRl
c3QsIENvbXBpbGVGYWlsc0VTU0wxMDApCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgc2hhZGVy
U3RyaW5nW10gPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAg
ICJ2b2lkIG1haW4oKSB7IFxuIgorICAgICAgICAiICAgIGdsX0ZyYWdEZXB0aCA9IDEuMDtcbiIK
KyAgICAgICAgIn1cbiI7CisKKyAgICBJbml0aWFsaXplQ29tcGlsZXIoKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoVGVzdFNoYWRlckNvbXBpbGUoRVNTTFZlcnNpb24xMDAsICIiLCBzaGFkZXJTdHJpbmcp
KTsKKyAgICBFWFBFQ1RfRkFMU0UoVGVzdFNoYWRlckNvbXBpbGUoIiIsICIiLCBzaGFkZXJTdHJp
bmcpKTsKKyAgICBFWFBFQ1RfRkFMU0UoVGVzdFNoYWRlckNvbXBpbGUoIiIsIEVYVEZEUHJhZ21h
LCBzaGFkZXJTdHJpbmcpKTsKK30KKworLy8gVGhlIEdMRVMgU0wgMy4wIGJ1aWx0LWluIHZhcmlh
YmxlIGdsX0ZyYWdEZXB0aCBjb21waWxlcyB3aXRoIEdMRVMgU0wgMy4wLgorVEVTVF9QKEZyYWdE
ZXB0aFRlc3QsIENvbXBpbGVTdWNjZWVkc0VTU0wzMDApCit7CisgICAgc3RhdGljIGNvbnN0IGNo
YXIgc2hhZGVyU3RyaW5nW10gPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
CisgICAgICAgICJ2b2lkIG1haW4oKSB7IFxuIgorICAgICAgICAiICAgIGdsX0ZyYWdEZXB0aCA9
IDEuMDtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgSW5pdGlhbGl6ZUNvbXBpbGVyKCk7CisgICAg
RVhQRUNUX1RSVUUoVGVzdFNoYWRlckNvbXBpbGUoRVNTTFZlcnNpb24zMDAsICIiLCBzaGFkZXJT
dHJpbmcpKTsKK30KKworLy8gVXNpbmcgI2V4dGVuc2lvbiBHTF9FWFRfZnJhZ19kZXB0aCBpbiBH
TFNMIEVTIDMuMCBzaGFkZXIgZmFpbHMgdG8gY29tcGlsZS4KK1RFU1RfUChGcmFnRGVwdGhUZXN0
LCBFeHRlbnNpb25GREZhaWxzRVNTTDMwMCkKK3sKKyAgICBzdGF0aWMgY29uc3QgY2hhciBzaGFk
ZXJTdHJpbmdbXSA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAg
ICAgIm91dCB2ZWM0IGZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHsgXG4iCisg
ICAgICAgICIgICAgZnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgorICAgICAgICAifVxuIjsKKyAg
ICBJbml0aWFsaXplQ29tcGlsZXIoKTsKKyAgICBpZiAobVJlc291cmNlcy5FWFRfZnJhZ19kZXB0
aCA9PSAxKQorICAgIHsKKyAgICAgICAgLy8gVE9ETyhra2lubnVuZW4sIGdlb2ZmbGFuZyk6IHRo
aXMgc2hvdWxkIGZhaWwuIEV4dGVuc2lvbnMgbmVlZCB0byBoYXZlIHNpbWlsYXIgbGV2ZWwKKyAg
ICAgICAgLy8gc3lzdGVtIHRvIFN5bWJvbFRhYmxlLiAgVGhlIGJpZ2dlc3QgdGFzayBpcyB0byBp
bXBsZW1lbnQgdmVyc2lvbi1hd2FyZSBwcmVwcm9jZXNzb3IsIHNvCisgICAgICAgIC8vIHRoYXQg
dGhlIGV4dGVuc2lvbiBkZWZpbmVzIGNhbiBiZSBkZWZpbmVkIGRlcGVuZGluZyBvbiB0aGUgdmVy
c2lvbiB0aGF0IHRoZSBwcmVwcm9jZXNzb3IKKyAgICAgICAgLy8gc2F3IG9yIGRpZCBub3Qgc2Vl
LgorICAgICAgICBFWFBFQ1RfVFJVRShUZXN0U2hhZGVyQ29tcGlsZShFU1NMVmVyc2lvbjMwMCwg
RVhURkRQcmFnbWEsIHNoYWRlclN0cmluZykpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAg
ICAgICBFWFBFQ1RfRkFMU0UoVGVzdFNoYWRlckNvbXBpbGUoRVNTTFZlcnNpb24zMDAsIEVYVEZE
UHJhZ21hLCBzaGFkZXJTdHJpbmcpKTsKKyAgICB9Cit9CisKKy8vIFRoZSB0ZXN0cyBzaG91bGQg
cGFzcyByZWdhcmRsZXNzIHdoZXRoZXIgdGhlIEVYVF9mcmFnX2RlcHRoIGlzIG9uIG9yIG5vdC4K
K0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEZyYWdEZXB0aFRlc3RzLCBGcmFnRGVwdGhUZXN0LCB0
ZXN0aW5nOjpWYWx1ZXMoZmFsc2UsIHRydWUpKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9HTFNMQ29tcGF0aWJpbGl0eU91dHB1dF90ZXN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29t
cGlsZXJfdGVzdHMvR0xTTENvbXBhdGliaWxpdHlPdXRwdXRfdGVzdC5jcHAJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0dM
U0xDb21wYXRpYmlsaXR5T3V0cHV0X3Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MzMgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisvLworLy8gR0xTTENvbXBhdGliaWxpdHlPdXRwdXRUZXN0LmNwcAor
Ly8gICBUZXN0IGNvbXBpbGVyIG91dHB1dCBmb3IgZ2xzbCBjb21wYXRpYmlsaXR5IG1vZGUKKy8v
CisKKyNpbmNsdWRlICJhbmdsZV9nbC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5j
bHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCisjaW5jbHVkZSAidGVzdHMvdGVzdF91dGlscy9j
b21waWxlcl90ZXN0LmgiCisKK2NsYXNzIEdMU0xDb21wYXRpYmlsaXR5T3V0cHV0VGVzdCA6IHB1
YmxpYyBNYXRjaE91dHB1dENvZGVUZXN0Cit7CisgIHB1YmxpYzoKKyAgICBHTFNMQ29tcGF0aWJp
bGl0eU91dHB1dFRlc3QoKQorICAgICAgICA6IE1hdGNoT3V0cHV0Q29kZVRlc3QoR0xfVkVSVEVY
X1NIQURFUiwgU0hfVkFSSUFCTEVTLCBTSF9HTFNMX0NPTVBBVElCSUxJVFlfT1VUUFVUKQorICAg
IHsKKyAgICB9Cit9OworCisvLyBWZXJpZnkgZ2xfUG9zaXRpb24gaXMgd3JpdHRlbiB3aGVuIGNv
bXBpbGluZyBpbiBjb21wYXRpYmlsaXR5IG1vZGUKK1RFU1RfRihHTFNMQ29tcGF0aWJpbGl0eU91
dHB1dFRlc3QsIEdMUG9zaXRpb25Xcml0dGVuVGVzdCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgor
ICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAifSI7CisgICAgY29tcGlsZShzaGFk
ZXJTdHJpbmcpOworICAgIEVYUEVDVF9UUlVFKGZvdW5kSW5Db2RlKCJnbF9Qb3NpdGlvbiIpKTsK
K30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvSW50ZXJtTm9kZV90ZXN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMv
SW50ZXJtTm9kZV90ZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvSW50ZXJtTm9kZV90ZXN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDIzMCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNSBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBJbnRlcm1Ob2RlX3Rl
c3QuY3BwOgorLy8gICBVbml0IHRlc3RzIGZvciB0aGUgQVNUIG5vZGUgY2xhc3Nlcy4KKy8vCisK
KyNpbmNsdWRlICJhbmdsZV9nbC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVk
ZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbmZvU2luay5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3Ry
YW5zbGF0b3IvSW50ZXJtTm9kZS5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvUG9v
bEFsbG9jLmgiCisKK2NsYXNzIEludGVybU5vZGVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QK
K3sKKyAgcHVibGljOgorICAgIEludGVybU5vZGVUZXN0KCkgOiBtVW5pcXVlSW5kZXgoMCkge30K
KworICBwcm90ZWN0ZWQ6CisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAg
ICBhbGxvY2F0b3IucHVzaCgpOworICAgICAgICBTZXRHbG9iYWxQb29sQWxsb2NhdG9yKCZhbGxv
Y2F0b3IpOworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgU2V0R2xvYmFsUG9vbEFsbG9jYXRvcihudWxscHRyKTsKKyAgICAgICAgYWxsb2NhdG9y
LnBvcCgpOworICAgIH0KKworICAgIFRJbnRlcm1TeW1ib2wgKmNyZWF0ZVRlc3RTeW1ib2woY29u
c3QgVFR5cGUgJnR5cGUpCisgICAgeworICAgICAgICBUSW5mb1NpbmtCYXNlIHN5bWJvbE5hbWVP
dXQ7CisgICAgICAgIHN5bWJvbE5hbWVPdXQgPDwgInRlc3QiIDw8IG1VbmlxdWVJbmRleDsKKyAg
ICAgICAgVFN0cmluZyBzeW1ib2xOYW1lID0gc3ltYm9sTmFtZU91dC5jX3N0cigpOworICAgICAg
ICArK21VbmlxdWVJbmRleDsKKworICAgICAgICBUSW50ZXJtU3ltYm9sICpub2RlID0gbmV3IFRJ
bnRlcm1TeW1ib2woMCwgc3ltYm9sTmFtZSwgdHlwZSk7CisgICAgICAgIG5vZGUtPnNldExpbmUo
Y3JlYXRlVW5pcXVlU291cmNlTG9jKCkpOworICAgICAgICBub2RlLT5zZXRJbnRlcm5hbCh0cnVl
KTsKKyAgICAgICAgbm9kZS0+Z2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVyKEV2cVRlbXBv
cmFyeSk7CisgICAgICAgIHJldHVybiBub2RlOworICAgIH0KKworICAgIFRJbnRlcm1TeW1ib2wg
KmNyZWF0ZVRlc3RTeW1ib2woKQorICAgIHsKKyAgICAgICAgVFR5cGUgdHlwZShFYnRGbG9hdCwg
RWJwSGlnaCk7CisgICAgICAgIHJldHVybiBjcmVhdGVUZXN0U3ltYm9sKHR5cGUpOworICAgIH0K
KworICAgIHZvaWQgY2hlY2tUeXBlRXF1YWxXaXRoUXVhbGlmaWVycyhjb25zdCBUVHlwZSAmb3Jp
Z2luYWwsIGNvbnN0IFRUeXBlICZjb3B5KQorICAgIHsKKyAgICAgICAgQVNTRVJUX0VRKG9yaWdp
bmFsLCBjb3B5KTsKKyAgICAgICAgQVNTRVJUX0VRKG9yaWdpbmFsLmdldFByZWNpc2lvbigpLCBj
b3B5LmdldFByZWNpc2lvbigpKTsKKyAgICAgICAgQVNTRVJUX0VRKG9yaWdpbmFsLmdldFF1YWxp
ZmllcigpLCBjb3B5LmdldFF1YWxpZmllcigpKTsKKyAgICB9CisKKyAgICB2b2lkIGNoZWNrU3lt
Ym9sQ29weShUSW50ZXJtTm9kZSAqYU9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqYUNvcHkpCisgICAg
eworICAgICAgICBBU1NFUlRfTkUoYU9yaWdpbmFsLCBhQ29weSk7CisgICAgICAgIFRJbnRlcm1T
eW1ib2wgKmNvcHkgICAgID0gYUNvcHktPmdldEFzU3ltYm9sTm9kZSgpOworICAgICAgICBUSW50
ZXJtU3ltYm9sICpvcmlnaW5hbCA9IGFPcmlnaW5hbC0+Z2V0QXNTeW1ib2xOb2RlKCk7CisgICAg
ICAgIEFTU0VSVF9ORShudWxscHRyLCBjb3B5KTsKKyAgICAgICAgQVNTRVJUX05FKG51bGxwdHIs
IG9yaWdpbmFsKTsKKyAgICAgICAgQVNTRVJUX05FKG9yaWdpbmFsLCBjb3B5KTsKKyAgICAgICAg
QVNTRVJUX0VRKG9yaWdpbmFsLT5nZXRJZCgpLCBjb3B5LT5nZXRJZCgpKTsKKyAgICAgICAgQVNT
RVJUX0VRKG9yaWdpbmFsLT5nZXROYW1lKCkuZ2V0U3RyaW5nKCksIGNvcHktPmdldE5hbWUoKS5n
ZXRTdHJpbmcoKSk7CisgICAgICAgIEFTU0VSVF9FUShvcmlnaW5hbC0+Z2V0TmFtZSgpLmlzSW50
ZXJuYWwoKSwgY29weS0+Z2V0TmFtZSgpLmlzSW50ZXJuYWwoKSk7CisgICAgICAgIGNoZWNrVHlw
ZUVxdWFsV2l0aFF1YWxpZmllcnMob3JpZ2luYWwtPmdldFR5cGUoKSwgY29weS0+Z2V0VHlwZSgp
KTsKKyAgICAgICAgQVNTRVJUX0VRKG9yaWdpbmFsLT5nZXRMaW5lKCkuZmlyc3RfZmlsZSwgY29w
eS0+Z2V0TGluZSgpLmZpcnN0X2ZpbGUpOworICAgICAgICBBU1NFUlRfRVEob3JpZ2luYWwtPmdl
dExpbmUoKS5maXJzdF9saW5lLCBjb3B5LT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CisgICAgICAg
IEFTU0VSVF9FUShvcmlnaW5hbC0+Z2V0TGluZSgpLmxhc3RfZmlsZSwgY29weS0+Z2V0TGluZSgp
Lmxhc3RfZmlsZSk7CisgICAgICAgIEFTU0VSVF9FUShvcmlnaW5hbC0+Z2V0TGluZSgpLmxhc3Rf
bGluZSwgY29weS0+Z2V0TGluZSgpLmxhc3RfbGluZSk7CisgICAgfQorCisgICAgVFNvdXJjZUxv
YyBjcmVhdGVVbmlxdWVTb3VyY2VMb2MoKQorICAgIHsKKyAgICAgICAgVFNvdXJjZUxvYyBsb2M7
CisgICAgICAgIGxvYy5maXJzdF9maWxlID0gbVVuaXF1ZUluZGV4OworICAgICAgICBsb2MuZmly
c3RfbGluZSA9IG1VbmlxdWVJbmRleCArIDE7CisgICAgICAgIGxvYy5sYXN0X2ZpbGUgID0gbVVu
aXF1ZUluZGV4ICsgMjsKKyAgICAgICAgbG9jLmxhc3RfbGluZSAgPSBtVW5pcXVlSW5kZXggKyAz
OworICAgICAgICArK21VbmlxdWVJbmRleDsKKyAgICAgICAgcmV0dXJuIGxvYzsKKyAgICB9CisK
KyAgICBzdGF0aWMgVFNvdXJjZUxvYyBnZXRUZXN0U291cmNlTG9jKCkKKyAgICB7CisgICAgICAg
IFRTb3VyY2VMb2MgbG9jOworICAgICAgICBsb2MuZmlyc3RfZmlsZSA9IDE7CisgICAgICAgIGxv
Yy5maXJzdF9saW5lID0gMjsKKyAgICAgICAgbG9jLmxhc3RfZmlsZSAgPSAzOworICAgICAgICBs
b2MubGFzdF9saW5lICA9IDQ7CisgICAgICAgIHJldHVybiBsb2M7CisgICAgfQorCisgICAgc3Rh
dGljIHZvaWQgY2hlY2tUZXN0U291cmNlTG9jKGNvbnN0IFRTb3VyY2VMb2MgJmxvYykKKyAgICB7
CisgICAgICAgIEFTU0VSVF9FUSgxLCBsb2MuZmlyc3RfZmlsZSk7CisgICAgICAgIEFTU0VSVF9F
USgyLCBsb2MuZmlyc3RfbGluZSk7CisgICAgICAgIEFTU0VSVF9FUSgzLCBsb2MubGFzdF9maWxl
KTsKKyAgICAgICAgQVNTRVJUX0VRKDQsIGxvYy5sYXN0X2xpbmUpOworICAgIH0KKworICBwcml2
YXRlOgorICAgIFRQb29sQWxsb2NhdG9yIGFsbG9jYXRvcjsKKyAgICBpbnQgbVVuaXF1ZUluZGV4
OworfTsKKworLy8gQ2hlY2sgdGhhdCB0aGUgZGVlcCBjb3B5IG9mIGEgc3ltYm9sIG5vZGUgaXMg
YW4gYWN0dWFsIGNvcHkgd2l0aCB0aGUgc2FtZSBhdHRyaWJ1dGVzIGFzIHRoZQorLy8gb3JpZ2lu
YWwuCitURVNUX0YoSW50ZXJtTm9kZVRlc3QsIERlZXBDb3B5U3ltYm9sTm9kZSkKK3sKKyAgICBU
VHlwZSB0eXBlKEVidEludCwgRWJwSGlnaCk7CisgICAgVEludGVybVN5bWJvbCAqb3JpZ2luYWwg
PSBuZXcgVEludGVybVN5bWJvbCgwLCBUU3RyaW5nKCJuYW1lIiksIHR5cGUpOworICAgIG9yaWdp
bmFsLT5zZXRMaW5lKGdldFRlc3RTb3VyY2VMb2MoKSk7CisgICAgb3JpZ2luYWwtPnNldEludGVy
bmFsKHRydWUpOworICAgIFRJbnRlcm1UeXBlZCAqY29weSA9IG9yaWdpbmFsLT5kZWVwQ29weSgp
OworICAgIGNoZWNrU3ltYm9sQ29weShvcmlnaW5hbCwgY29weSk7CisgICAgY2hlY2tUZXN0U291
cmNlTG9jKGNvcHktPmdldExpbmUoKSk7Cit9CisKKy8vIENoZWNrIHRoYXQgdGhlIGRlZXAgY29w
eSBvZiBhIGNvbnN0YW50IHVuaW9uIG5vZGUgaXMgYW4gYWN0dWFsIGNvcHkgd2l0aCB0aGUgc2Ft
ZSBhdHRyaWJ1dGVzIGFzCisvLyB0aGUgb3JpZ2luYWwuCitURVNUX0YoSW50ZXJtTm9kZVRlc3Qs
IERlZXBDb3B5Q29uc3RhbnRVbmlvbk5vZGUpCit7CisgICAgVFR5cGUgdHlwZShFYnRJbnQsIEVi
cEhpZ2gpOworICAgIFRDb25zdGFudFVuaW9uICpjb25zdFZhbHVlID0gbmV3IFRDb25zdGFudFVu
aW9uWzFdOworICAgIGNvbnN0VmFsdWVbMF0uc2V0SUNvbnN0KDEwMSk7CisgICAgVEludGVybUNv
bnN0YW50VW5pb24gKm9yaWdpbmFsID0gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9uKGNvbnN0VmFs
dWUsIHR5cGUpOworICAgIG9yaWdpbmFsLT5zZXRMaW5lKGdldFRlc3RTb3VyY2VMb2MoKSk7Cisg
ICAgVEludGVybVR5cGVkICpjb3B5VHlwZWQgICAgPSBvcmlnaW5hbC0+ZGVlcENvcHkoKTsKKyAg
ICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqY29weSA9IGNvcHlUeXBlZC0+Z2V0QXNDb25zdGFudFVu
aW9uKCk7CisgICAgQVNTRVJUX05FKG51bGxwdHIsIGNvcHkpOworICAgIEFTU0VSVF9ORShvcmln
aW5hbCwgY29weSk7CisgICAgY2hlY2tUZXN0U291cmNlTG9jKGNvcHktPmdldExpbmUoKSk7Cisg
ICAgY2hlY2tUeXBlRXF1YWxXaXRoUXVhbGlmaWVycyhvcmlnaW5hbC0+Z2V0VHlwZSgpLCBjb3B5
LT5nZXRUeXBlKCkpOworICAgIEFTU0VSVF9FUSgxMDEsIGNvcHktPmdldElDb25zdCgwKSk7Cit9
CisKKy8vIENoZWNrIHRoYXQgdGhlIGRlZXAgY29weSBvZiBhIGJpbmFyeSBub2RlIGlzIGFuIGFj
dHVhbCBjb3B5IHdpdGggdGhlIHNhbWUgYXR0cmlidXRlcyBhcyB0aGUKKy8vIG9yaWdpbmFsLiBD
aGlsZCBub2RlcyBhbHNvIG5lZWQgdG8gYmUgY29waWVzIHdpdGggdGhlIHNhbWUgYXR0cmlidXRl
cyBhcyB0aGUgb3JpZ2luYWwgY2hpbGRyZW4uCitURVNUX0YoSW50ZXJtTm9kZVRlc3QsIERlZXBD
b3B5QmluYXJ5Tm9kZSkKK3sKKyAgICBUVHlwZSB0eXBlKEVidEZsb2F0LCBFYnBIaWdoKTsKKwor
ICAgIFRJbnRlcm1CaW5hcnkgKm9yaWdpbmFsID0gbmV3IFRJbnRlcm1CaW5hcnkoRU9wQWRkLCBj
cmVhdGVUZXN0U3ltYm9sKCksIGNyZWF0ZVRlc3RTeW1ib2woKSk7CisgICAgb3JpZ2luYWwtPnNl
dExpbmUoZ2V0VGVzdFNvdXJjZUxvYygpKTsKKyAgICBUSW50ZXJtVHlwZWQgKmNvcHlUeXBlZCA9
IG9yaWdpbmFsLT5kZWVwQ29weSgpOworICAgIFRJbnRlcm1CaW5hcnkgKmNvcHkgPSBjb3B5VHlw
ZWQtPmdldEFzQmluYXJ5Tm9kZSgpOworICAgIEFTU0VSVF9ORShudWxscHRyLCBjb3B5KTsKKyAg
ICBBU1NFUlRfTkUob3JpZ2luYWwsIGNvcHkpOworICAgIGNoZWNrVGVzdFNvdXJjZUxvYyhjb3B5
LT5nZXRMaW5lKCkpOworICAgIGNoZWNrVHlwZUVxdWFsV2l0aFF1YWxpZmllcnMob3JpZ2luYWwt
PmdldFR5cGUoKSwgY29weS0+Z2V0VHlwZSgpKTsKKworICAgIGNoZWNrU3ltYm9sQ29weShvcmln
aW5hbC0+Z2V0TGVmdCgpLCBjb3B5LT5nZXRMZWZ0KCkpOworICAgIGNoZWNrU3ltYm9sQ29weShv
cmlnaW5hbC0+Z2V0UmlnaHQoKSwgY29weS0+Z2V0UmlnaHQoKSk7Cit9CisKKy8vIENoZWNrIHRo
YXQgdGhlIGRlZXAgY29weSBvZiBhIHVuYXJ5IG5vZGUgaXMgYW4gYWN0dWFsIGNvcHkgd2l0aCB0
aGUgc2FtZSBhdHRyaWJ1dGVzIGFzIHRoZQorLy8gb3JpZ2luYWwuIFRoZSBjaGlsZCBub2RlIGFs
c28gbmVlZHMgdG8gYmUgYSBjb3B5IHdpdGggdGhlIHNhbWUgYXR0cmlidXRlcyBhcyB0aGUgb3Jp
Z2luYWwgY2hpbGQuCitURVNUX0YoSW50ZXJtTm9kZVRlc3QsIERlZXBDb3B5VW5hcnlOb2RlKQor
eworICAgIFRUeXBlIHR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gpOworCisgICAgVEludGVybVVuYXJ5
ICpvcmlnaW5hbCA9IG5ldyBUSW50ZXJtVW5hcnkoRU9wUHJlSW5jcmVtZW50LCBjcmVhdGVUZXN0
U3ltYm9sKCkpOworICAgIG9yaWdpbmFsLT5zZXRMaW5lKGdldFRlc3RTb3VyY2VMb2MoKSk7Cisg
ICAgVEludGVybVR5cGVkICpjb3B5VHlwZWQgPSBvcmlnaW5hbC0+ZGVlcENvcHkoKTsKKyAgICBU
SW50ZXJtVW5hcnkgKmNvcHkgPSBjb3B5VHlwZWQtPmdldEFzVW5hcnlOb2RlKCk7CisgICAgQVNT
RVJUX05FKG51bGxwdHIsIGNvcHkpOworICAgIEFTU0VSVF9ORShvcmlnaW5hbCwgY29weSk7Cisg
ICAgY2hlY2tUZXN0U291cmNlTG9jKGNvcHktPmdldExpbmUoKSk7CisgICAgY2hlY2tUeXBlRXF1
YWxXaXRoUXVhbGlmaWVycyhvcmlnaW5hbC0+Z2V0VHlwZSgpLCBjb3B5LT5nZXRUeXBlKCkpOwor
CisgICAgY2hlY2tTeW1ib2xDb3B5KG9yaWdpbmFsLT5nZXRPcGVyYW5kKCksIGNvcHktPmdldE9w
ZXJhbmQoKSk7Cit9CisKKy8vIENoZWNrIHRoYXQgdGhlIGRlZXAgY29weSBvZiBhbiBhZ2dyZWdh
dGUgbm9kZSBpcyBhbiBhY3R1YWwgY29weSB3aXRoIHRoZSBzYW1lIGF0dHJpYnV0ZXMgYXMgdGhl
CisvLyBvcmlnaW5hbC4gQ2hpbGQgbm9kZXMgYWxzbyBuZWVkIHRvIGJlIGNvcGllcyB3aXRoIHRo
ZSBzYW1lIGF0dHJpYnV0ZXMgYXMgdGhlIG9yaWdpbmFsIGNoaWxkcmVuLgorVEVTVF9GKEludGVy
bU5vZGVUZXN0LCBEZWVwQ29weUFnZ3JlZ2F0ZU5vZGUpCit7CisgICAgVFR5cGUgdHlwZShFYnRG
bG9hdCwgRWJwSGlnaCk7CisKKyAgICBUSW50ZXJtQWdncmVnYXRlICpvcmlnaW5hbCA9IG5ldyBU
SW50ZXJtQWdncmVnYXRlKEVPcE1peCk7CisgICAgb3JpZ2luYWwtPnNldExpbmUoZ2V0VGVzdFNv
dXJjZUxvYygpKTsKKyAgICBUSW50ZXJtU2VxdWVuY2UgKm9yaWdpbmFsU2VxID0gb3JpZ2luYWwt
PmdldFNlcXVlbmNlKCk7CisgICAgb3JpZ2luYWxTZXEtPnB1c2hfYmFjayhjcmVhdGVUZXN0U3lt
Ym9sKCkpOworICAgIG9yaWdpbmFsU2VxLT5wdXNoX2JhY2soY3JlYXRlVGVzdFN5bWJvbCgpKTsK
KyAgICBvcmlnaW5hbFNlcS0+cHVzaF9iYWNrKGNyZWF0ZVRlc3RTeW1ib2woKSk7CisgICAgVElu
dGVybVR5cGVkICpjb3B5VHlwZWQgPSBvcmlnaW5hbC0+ZGVlcENvcHkoKTsKKyAgICBUSW50ZXJt
QWdncmVnYXRlICpjb3B5ID0gY29weVR5cGVkLT5nZXRBc0FnZ3JlZ2F0ZSgpOworICAgIEFTU0VS
VF9ORShudWxscHRyLCBjb3B5KTsKKyAgICBBU1NFUlRfTkUob3JpZ2luYWwsIGNvcHkpOworICAg
IGNoZWNrVGVzdFNvdXJjZUxvYyhjb3B5LT5nZXRMaW5lKCkpOworICAgIGNoZWNrVHlwZUVxdWFs
V2l0aFF1YWxpZmllcnMob3JpZ2luYWwtPmdldFR5cGUoKSwgY29weS0+Z2V0VHlwZSgpKTsKKwor
ICAgIEFTU0VSVF9FUShvcmlnaW5hbC0+Z2V0U2VxdWVuY2UoKS0+c2l6ZSgpLCBjb3B5LT5nZXRT
ZXF1ZW5jZSgpLT5zaXplKCkpOworICAgIFRJbnRlcm1TZXF1ZW5jZTo6c2l6ZV90eXBlIGkgPSAw
OworICAgIGZvciAoYXV0byAqY29weUNoaWxkIDogKmNvcHktPmdldFNlcXVlbmNlKCkpCisgICAg
eworICAgICAgICBUSW50ZXJtTm9kZSAqb3JpZ2luYWxDaGlsZCA9IG9yaWdpbmFsU2VxLT5hdChp
KTsKKyAgICAgICAgY2hlY2tTeW1ib2xDb3B5KG9yaWdpbmFsQ2hpbGQsIGNvcHlDaGlsZCk7Cisg
ICAgICAgICsraTsKKyAgICB9Cit9CisKKy8vIENoZWNrIHRoYXQgdGhlIGRlZXAgY29weSBvZiBh
IHRlcm5hcnkgbm9kZSBpcyBhbiBhY3R1YWwgY29weSB3aXRoIHRoZSBzYW1lIGF0dHJpYnV0ZXMg
YXMgdGhlCisvLyBvcmlnaW5hbC4gQ2hpbGQgbm9kZXMgYWxzbyBuZWVkIHRvIGJlIGNvcGllcyB3
aXRoIHRoZSBzYW1lIGF0dHJpYnV0ZXMgYXMgdGhlIG9yaWdpbmFsIGNoaWxkcmVuLgorVEVTVF9G
KEludGVybU5vZGVUZXN0LCBEZWVwQ29weVRlcm5hcnlOb2RlKQoreworICAgIFRUeXBlIHR5cGUo
RWJ0RmxvYXQsIEVicEhpZ2gpOworCisgICAgVEludGVybVRlcm5hcnkgKm9yaWdpbmFsID0gbmV3
IFRJbnRlcm1UZXJuYXJ5KGNyZWF0ZVRlc3RTeW1ib2woVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZp
bmVkKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNyZWF0ZVRlc3RTeW1ib2woKSwgY3JlYXRlVGVzdFN5bWJvbCgpKTsKKyAgICBvcmlnaW5hbC0+
c2V0TGluZShnZXRUZXN0U291cmNlTG9jKCkpOworICAgIFRJbnRlcm1UeXBlZCAqY29weVR5cGVk
ID0gb3JpZ2luYWwtPmRlZXBDb3B5KCk7CisgICAgVEludGVybVRlcm5hcnkgKmNvcHkgICAgPSBj
b3B5VHlwZWQtPmdldEFzVGVybmFyeU5vZGUoKTsKKyAgICBBU1NFUlRfTkUobnVsbHB0ciwgY29w
eSk7CisgICAgQVNTRVJUX05FKG9yaWdpbmFsLCBjb3B5KTsKKyAgICBjaGVja1Rlc3RTb3VyY2VM
b2MoY29weS0+Z2V0TGluZSgpKTsKKyAgICBjaGVja1R5cGVFcXVhbFdpdGhRdWFsaWZpZXJzKG9y
aWdpbmFsLT5nZXRUeXBlKCksIGNvcHktPmdldFR5cGUoKSk7CisKKyAgICBjaGVja1N5bWJvbENv
cHkob3JpZ2luYWwtPmdldENvbmRpdGlvbigpLCBjb3B5LT5nZXRDb25kaXRpb24oKSk7CisgICAg
Y2hlY2tTeW1ib2xDb3B5KG9yaWdpbmFsLT5nZXRUcnVlRXhwcmVzc2lvbigpLCBjb3B5LT5nZXRU
cnVlRXhwcmVzc2lvbigpKTsKKyAgICBjaGVja1N5bWJvbENvcHkob3JpZ2luYWwtPmdldEZhbHNl
RXhwcmVzc2lvbigpLCBjb3B5LT5nZXRGYWxzZUV4cHJlc3Npb24oKSk7Cit9CisKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9NYWxmb3JtZWRT
aGFkZXJfdGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL01hbGZvcm1lZFNoYWRlcl90ZXN0LmNwcAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMv
TWFsZm9ybWVkU2hhZGVyX3Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjU4NiBA
QAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKy8vCisvLyBNYWxmb3JtZWRTaGFkZXJfdGVzdC5jcHA6CisvLyAgIFRlc3Rz
IHRoYXQgbWFsZm9ybWVkIHNoYWRlcnMgZmFpbCBjb21waWxhdGlvbi4KKy8vCisKKyNpbmNsdWRl
ICJhbmdsZV9nbC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiR0xTTEFO
Ry9TaGFkZXJMYW5nLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9y
RVNTTC5oIgorCitjbGFzcyBNYWxmb3JtZWRTaGFkZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QKK3sKKyAgcHVibGljOgorICAgIE1hbGZvcm1lZFNoYWRlclRlc3QoKSA6IG1FeHRyYUNvbXBp
bGVPcHRpb25zKDApIHt9CisKKyAgcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgp
CisgICAgeworICAgICAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgcmVzb3VyY2VzOworICAgICAgICBT
aEluaXRCdWlsdEluUmVzb3VyY2VzKCZyZXNvdXJjZXMpOworCisgICAgICAgIG1UcmFuc2xhdG9y
ID0gbmV3IFRyYW5zbGF0b3JFU1NMKEdMX0ZSQUdNRU5UX1NIQURFUiwgU0hfR0xFUzNfU1BFQyk7
CisgICAgICAgIEFTU0VSVF9UUlVFKG1UcmFuc2xhdG9yLT5Jbml0KHJlc291cmNlcykpOworICAg
IH0KKworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCisgICAgeworICAgICAgICBkZWxldGUg
bVRyYW5zbGF0b3I7CisgICAgfQorCisgICAgLy8gUmV0dXJuIHRydWUgd2hlbiBjb21waWxhdGlv
biBzdWNjZWVkcworICAgIGJvb2wgY29tcGlsZShjb25zdCBzdGQ6OnN0cmluZyYgc2hhZGVyU3Ry
aW5nKQorICAgIHsKKyAgICAgICAgY29uc3QgY2hhciAqc2hhZGVyU3RyaW5nc1tdID0geyBzaGFk
ZXJTdHJpbmcuY19zdHIoKSB9OworICAgICAgICBib29sIGNvbXBpbGF0aW9uU3VjY2VzcyA9Cisg
ICAgICAgICAgICBtVHJhbnNsYXRvci0+Y29tcGlsZShzaGFkZXJTdHJpbmdzLCAxLCBTSF9JTlRF
Uk1FRElBVEVfVFJFRSB8IG1FeHRyYUNvbXBpbGVPcHRpb25zKTsKKyAgICAgICAgVEluZm9TaW5r
ICZpbmZvU2luayA9IG1UcmFuc2xhdG9yLT5nZXRJbmZvU2luaygpOworICAgICAgICBtSW5mb0xv
ZyA9IGluZm9TaW5rLmluZm8uY19zdHIoKTsKKyAgICAgICAgcmV0dXJuIGNvbXBpbGF0aW9uU3Vj
Y2VzczsKKyAgICB9CisKKyAgICBib29sIGhhc1dhcm5pbmcoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1JbmZvTG9nLmZpbmQoIldBUk5JTkc6ICIpICE9IHN0ZDo6c3RyaW5nOjpucG9z
OworICAgIH0KKworICBwcm90ZWN0ZWQ6CisgICAgc3RkOjpzdHJpbmcgbUluZm9Mb2c7CisgICAg
VHJhbnNsYXRvckVTU0wgKm1UcmFuc2xhdG9yOworICAgIFNoQ29tcGlsZU9wdGlvbnMgbUV4dHJh
Q29tcGlsZU9wdGlvbnM7Cit9OworCitjbGFzcyBNYWxmb3JtZWRWZXJ0ZXhTaGFkZXJUZXN0IDog
cHVibGljIE1hbGZvcm1lZFNoYWRlclRlc3QKK3sKKyAgcHVibGljOgorICAgIE1hbGZvcm1lZFZl
cnRleFNoYWRlclRlc3QoKSB7fQorCisgIHByb3RlY3RlZDoKKyAgICB2b2lkIFNldFVwKCkgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIFNoQnVpbHRJblJlc291cmNlcyByZXNvdXJjZXM7CisgICAg
ICAgIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoJnJlc291cmNlcyk7CisKKyAgICAgICAgbVRyYW5z
bGF0b3IgPSBuZXcgVHJhbnNsYXRvckVTU0woR0xfVkVSVEVYX1NIQURFUiwgU0hfR0xFUzNfU1BF
Qyk7CisgICAgICAgIEFTU0VSVF9UUlVFKG1UcmFuc2xhdG9yLT5Jbml0KHJlc291cmNlcykpOwor
ICAgIH0KK307CisKK2NsYXNzIE1hbGZvcm1lZFdlYkdMMlNoYWRlclRlc3QgOiBwdWJsaWMgTWFs
Zm9ybWVkU2hhZGVyVGVzdAoreworICBwdWJsaWM6CisgICAgTWFsZm9ybWVkV2ViR0wyU2hhZGVy
VGVzdCgpIHt9CisKKyAgcHJvdGVjdGVkOgorICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgU2hCdWlsdEluUmVzb3VyY2VzIHJlc291cmNlczsKKyAgICAgICAgU2hJbml0
QnVpbHRJblJlc291cmNlcygmcmVzb3VyY2VzKTsKKworICAgICAgICBtVHJhbnNsYXRvciA9IG5l
dyBUcmFuc2xhdG9yRVNTTChHTF9GUkFHTUVOVF9TSEFERVIsIFNIX1dFQkdMMl9TUEVDKTsKKyAg
ICAgICAgQVNTRVJUX1RSVUUobVRyYW5zbGF0b3ItPkluaXQocmVzb3VyY2VzKSk7CisgICAgfQor
fTsKKworY2xhc3MgTWFsZm9ybWVkV2ViR0wxU2hhZGVyVGVzdCA6IHB1YmxpYyBNYWxmb3JtZWRT
aGFkZXJUZXN0Cit7CisgIHB1YmxpYzoKKyAgICBNYWxmb3JtZWRXZWJHTDFTaGFkZXJUZXN0KCkg
e30KKworICBwcm90ZWN0ZWQ6CisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAg
ICAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgcmVzb3VyY2VzOworICAgICAgICBTaEluaXRCdWlsdElu
UmVzb3VyY2VzKCZyZXNvdXJjZXMpOworCisgICAgICAgIG1UcmFuc2xhdG9yID0gbmV3IFRyYW5z
bGF0b3JFU1NMKEdMX0ZSQUdNRU5UX1NIQURFUiwgU0hfV0VCR0xfU1BFQyk7CisgICAgICAgIEFT
U0VSVF9UUlVFKG1UcmFuc2xhdG9yLT5Jbml0KHJlc291cmNlcykpOworICAgIH0KK307CisKK2Ns
YXNzIE1hbGZvcm1lZFZlcnRleFNoYWRlckdMRVMzMVRlc3QgOiBwdWJsaWMgTWFsZm9ybWVkU2hh
ZGVyVGVzdAoreworICBwdWJsaWM6CisgICAgTWFsZm9ybWVkVmVydGV4U2hhZGVyR0xFUzMxVGVz
dCgpIHt9CisKKyAgcHJpdmF0ZToKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIFNoQnVpbHRJblJlc291cmNlcyByZXNvdXJjZXM7CisgICAgICAgIFNoSW5pdEJ1aWx0
SW5SZXNvdXJjZXMoJnJlc291cmNlcyk7CisgICAgICAgIG1UcmFuc2xhdG9yID0gbmV3IFRyYW5z
bGF0b3JFU1NMKEdMX1ZFUlRFWF9TSEFERVIsIFNIX0dMRVMzXzFfU1BFQyk7CisgICAgICAgIEFT
U0VSVF9UUlVFKG1UcmFuc2xhdG9yLT5Jbml0KHJlc291cmNlcykpOworICAgIH0KK307CisKK2Ns
YXNzIE1hbGZvcm1lZEZyYWdtZW50U2hhZGVyR0xFUzMxVGVzdCA6IHB1YmxpYyBNYWxmb3JtZWRT
aGFkZXJUZXN0Cit7CisgIHB1YmxpYzoKKyAgICBNYWxmb3JtZWRGcmFnbWVudFNoYWRlckdMRVMz
MVRlc3QoKSB7fQorCisgIHByaXZhdGU6CisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAg
eworICAgICAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgcmVzb3VyY2VzOworICAgICAgICBTaEluaXRC
dWlsdEluUmVzb3VyY2VzKCZyZXNvdXJjZXMpOworICAgICAgICBtVHJhbnNsYXRvciA9IG5ldyBU
cmFuc2xhdG9yRVNTTChHTF9GUkFHTUVOVF9TSEFERVIsIFNIX0dMRVMzXzFfU1BFQyk7CisgICAg
ICAgIEFTU0VSVF9UUlVFKG1UcmFuc2xhdG9yLT5Jbml0KHJlc291cmNlcykpOworICAgIH0KK307
CisKK2NsYXNzIE1hbGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0IDogcHVibGljIE1hbGZvcm1lZFNo
YWRlclRlc3QKK3sKKyAgcHVibGljOgorICAgIE1hbGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0KCkg
e30KKworICBwcml2YXRlOgorICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgU2hCdWlsdEluUmVzb3VyY2VzIHJlc291cmNlczsKKyAgICAgICAgU2hJbml0QnVpbHRJblJl
c291cmNlcygmcmVzb3VyY2VzKTsKKyAgICAgICAgbVRyYW5zbGF0b3IgPSBuZXcgVHJhbnNsYXRv
ckVTU0woR0xfQ09NUFVURV9TSEFERVIsIFNIX0dMRVMzXzFfU1BFQyk7CisgICAgICAgIEFTU0VS
VF9UUlVFKG1UcmFuc2xhdG9yLT5Jbml0KHJlc291cmNlcykpOworICAgIH0KK307CisKK2NsYXNz
IFVucm9sbEZvckxvb3BzVGVzdCA6IHB1YmxpYyBNYWxmb3JtZWRTaGFkZXJUZXN0Cit7CisgIHB1
YmxpYzoKKyAgICBVbnJvbGxGb3JMb29wc1Rlc3QoKSB7IG1FeHRyYUNvbXBpbGVPcHRpb25zID0g
U0hfVU5ST0xMX0ZPUl9MT09QX1dJVEhfSU5URUdFUl9JTkRFWDsgfQorfTsKKworLy8gVGhpcyBp
cyBhIHRlc3QgZm9yIGEgYnVnIHRoYXQgdXNlZCB0byBleGlzdCBpbiBBTkdMRToKKy8vIENhbGxp
bmcgYSBmdW5jdGlvbiB3aXRoIGFsbCBwYXJhbWV0ZXJzIG1pc3Npbmcgc2hvdWxkIG5vdCBzdWNj
ZWVkLgorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIEZ1bmN0aW9uUGFyYW1ldGVyTWlzbWF0
Y2gpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgImZsb2F0IGZ1bihmbG9hdCBhKSB7
XG4iCisgICAgICAgICIgICByZXR1cm4gYSAqIDIuMDtcbiIKKyAgICAgICAgIn1cbiIKKyAgICAg
ICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGZsb2F0IGZmID0gZnVuKCk7XG4iCisg
ICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGZmKTtcbiIKKyAgICAgICAgIn1cbiI7Cisg
ICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAi
U2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5m
b0xvZzsKKyAgICB9Cit9CisKKy8vIEZ1bmN0aW9ucyBjYW4ndCBiZSByZWRlY2xhcmVkIGFzIHZh
cmlhYmxlcyBpbiB0aGUgc2FtZSBzY29wZSAoRVNTTCAxLjAwIHNlY3Rpb24gNC4yLjcpCitURVNU
X0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgUmVkZWNsYXJpbmdGdW5jdGlvbkFzVmFyaWFibGUpCit7
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgImZsb2F0IGZ1bihmbG9hdCBhKSB7XG4iCisg
ICAgICAgICIgICByZXR1cm4gYSAqIDIuMDtcbiIKKyAgICAgICAgIn1cbiIKKyAgICAgICAgImZs
b2F0IGZ1bjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGdsX0Zy
YWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUo
c2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0
aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9
CisKKy8vIEZ1bmN0aW9ucyBjYW4ndCBiZSByZWRlY2xhcmVkIGFzIHN0cnVjdHMgaW4gdGhlIHNh
bWUgc2NvcGUgKEVTU0wgMS4wMCBzZWN0aW9uIDQuMi43KQorVEVTVF9GKE1hbGZvcm1lZFNoYWRl
clRlc3QsIFJlZGVjbGFyaW5nRnVuY3Rpb25Bc1N0cnVjdCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0
cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xu
IgorICAgICAgICAiZmxvYXQgZnVuKGZsb2F0IGEpIHtcbiIKKyAgICAgICAgIiAgIHJldHVybiBh
ICogMi4wO1xuIgorICAgICAgICAifVxuIgorICAgICAgICAic3RydWN0IGZ1biB7IGZsb2F0IGE7
IH07XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBnbF9GcmFnQ29s
b3IgPSB2ZWM0KDAuMCk7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRl
clN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBz
dWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisv
LyBGdW5jdGlvbnMgY2FuJ3QgYmUgcmVkZWNsYXJlZCB3aXRoIGRpZmZlcmVudCBxdWFsaWZpZXJz
IChFU1NMIDEuMDAgc2VjdGlvbiA2LjEuMCkKK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBS
ZWRlY2xhcmluZ0Z1bmN0aW9uV2l0aERpZmZlcmVudFF1YWxpZmllcnMpCit7CisgICAgY29uc3Qg
c3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDtcbiIKKyAgICAgICAgImZsb2F0IGZ1bihvdXQgZmxvYXQgYSk7XG4iCisgICAgICAgICJm
bG9hdCBmdW4oZmxvYXQgYSkge1xuIgorICAgICAgICAiICAgcmV0dXJuIGEgKiAyLjA7XG4iCisg
ICAgICAgICJ9XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBnbF9G
cmFnQ29sb3IgPSB2ZWM0KDAuMCk7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxl
KHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxh
dGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQor
fQorCisvLyBBc3NpZ25tZW50IGFuZCBlcXVhbGl0eSBhcmUgdW5kZWZpbmVkIGZvciBzdHJ1Y3R1
cmVzIGNvbnRhaW5pbmcgYXJyYXlzIChFU1NMIDEuMDAgc2VjdGlvbiA1LjcpCitURVNUX0YoTWFs
Zm9ybWVkU2hhZGVyVGVzdCwgQ29tcGFyZVN0cnVjdHNDb250YWluaW5nQXJyYXlzKQoreworICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJzdHJ1Y3QgcyB7IGZsb2F0IGFbM107IH07XG4iCisg
ICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBzIGE7XG4iCisgICAgICAgICIg
ICBzIGI7XG4iCisgICAgICAgICIgICBib29sIGMgPSAoYSA9PSBiKTtcbiIKKyAgICAgICAgIiAg
IGdsX0ZyYWdDb2xvciA9IHZlYzQoYyA/IDEuMCA6IDAuMCk7XG4iCisgICAgICAgICJ9XG4iOwor
ICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwg
IlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUlu
Zm9Mb2c7CisgICAgfQorfQorCisvLyBBc3NpZ25tZW50IGFuZCBlcXVhbGl0eSBhcmUgdW5kZWZp
bmVkIGZvciBzdHJ1Y3R1cmVzIGNvbnRhaW5pbmcgYXJyYXlzIChFU1NMIDEuMDAgc2VjdGlvbiA1
LjcpCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgQXNzaWduU3RydWN0c0NvbnRhaW5pbmdB
cnJheXMpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAg
ICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInN0cnVjdCBzIHsgZmxvYXQg
YVszXTsgfTtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIHMgYTtc
biIKKyAgICAgICAgIiAgIHMgYjtcbiIKKyAgICAgICAgIiAgIGIuYVswXSA9IDAuMDtcbiIKKyAg
ICAgICAgIiAgIGEgPSBiO1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChhLmFb
MF0pO1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQor
ICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBl
eHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gQXNzaWdubWVu
dCBhbmQgZXF1YWxpdHkgYXJlIHVuZGVmaW5lZCBmb3Igc3RydWN0dXJlcyBjb250YWluaW5nIHNh
bXBsZXJzIChFU1NMIDEuMDAgc2VjdGlvbnMgNS43IGFuZCA1LjkpCitURVNUX0YoTWFsZm9ybWVk
U2hhZGVyVGVzdCwgQ29tcGFyZVN0cnVjdHNDb250YWluaW5nU2FtcGxlcnMpCit7CisgICAgY29u
c3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDtcbiIKKyAgICAgICAgInN0cnVjdCBzIHsgc2FtcGxlcjJEIGZvbzsgfTtcbiIKKyAg
ICAgICAgInVuaWZvcm0gcyBhO1xuIgorICAgICAgICAidW5pZm9ybSBzIGI7XG4iCisgICAgICAg
ICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBib29sIGMgPSAoYSA9PSBiKTtcbiIKKyAg
ICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoYyA/IDEuMCA6IDAuMCk7XG4iCisgICAgICAg
ICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBG
QUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJl
ICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBTYW1wbGVycyBhcmUgbm90IGFsbG93ZWQg
YXMgbC12YWx1ZXMgKEVTU0wgMy4wMCBzZWN0aW9uIDQuMS43KSwgb3VyIGludGVycHJldGF0aW9u
IGlzIHRoYXQgdGhpcworLy8gZXh0ZW5kcyB0byBzdHJ1Y3RzIGNvbnRhaW5pbmcgc2FtcGxlcnMu
IEVTU0wgMS4wMCBzcGVjIGlzIGNsZWFyZXIgYWJvdXQgdGhpcy4KK1RFU1RfRihNYWxmb3JtZWRT
aGFkZXJUZXN0LCBBc3NpZ25TdHJ1Y3RzQ29udGFpbmluZ1NhbXBsZXJzKQoreworICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4i
CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInN0cnVjdCBz
IHsgc2FtcGxlcjJEIGZvbzsgfTtcbiIKKyAgICAgICAgInVuaWZvcm0gcyBhO1xuIgorICAgICAg
ICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgor
ICAgICAgICAiICAgcyBiO1xuIgorICAgICAgICAiICAgYiA9IGE7XG4iCisgICAgICAgICIgICBt
eV9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21w
aWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21w
aWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAg
fQorfQorCisvLyBUaGlzIGlzIGEgcmVncmVzc2lvbiB0ZXN0IGZvciBhIHBhcnRpY3VsYXIgYnVn
IHRoYXQgd2FzIGluIEFOR0xFLgorLy8gSXQgYWxzbyB2ZXJpZmllcyB0aGF0IEVTU0wzIGZ1bmN0
aW9uYWxpdHkgZG9lc24ndCBsZWFrIHRvIEVTU0wxLgorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRl
c3QsIEFycmF5V2l0aE5vU2l6ZUluSW5pdGlhbGl6ZXJMaXN0KQoreworICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBmbG9hdCBhWzJdLCBi
W107XG4iCisgICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XG4iCisgICAgICAg
ICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBG
QUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJl
ICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBDb25zdCB2YXJpYWJsZXMgbmVlZCBhbiBp
bml0aWFsaXplci4KK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBDb25zdFZhck5vdEluaXRp
YWxpemVkKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAg
ICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtc
biIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFp
bigpIHtcbiIKKyAgICAgICAgIiAgIGNvbnN0IGZsb2F0IGE7XG4iCisgICAgICAgICIgICBteV9G
cmFnQ29sb3IgPSB2ZWM0KDEuMCk7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxl
KHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxh
dGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQor
fQorCisvLyBDb25zdCB2YXJpYWJsZXMgbmVlZCBhbiBpbml0aWFsaXplci4gSW4gRVNTTDEgY29u
c3Qgc3RydWN0cyBjb250YWluaW5nCisvLyBhcnJheXMgYXJlIG5vdCBhbGxvd2VkIGF0IGFsbCBz
aW5jZSBpdCdzIGltcG9zc2libGUgdG8gaW5pdGlhbGl6ZSB0aGVtLgorLy8gRXZlbiB0aG91Z2gg
dGhpcyB0ZXN0IGlzIGZvciBFU1NMMyB0aGUgb25seSB0aGluZyB0aGF0J3MgY3JpdGljYWwgZm9y
CisvLyBFU1NMMSBpcyB0aGUgbm9uLWluaXRpYWxpemF0aW9uIGNoZWNrIHRoYXQncyB1c2VkIGZv
ciBib3RoIGxhbmd1YWdlIHZlcnNpb25zLgorLy8gV2hldGhlciBFU1NMMSBjb21waWxhdGlvbiBn
ZW5lcmF0ZXMgdGhlIG1vc3QgaGVscGZ1bCBlcnJvciBtZXNzYWdlcyBpcyBhCisvLyBzZWNvbmRh
cnkgY29uY2Vybi4KK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBDb25zdFN0cnVjdE5vdElu
aXRpYWxpemVkKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAg
ICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDtcbiIKKyAgICAgICAgInN0cnVjdCBTIHtcbiIKKyAgICAgICAgIiAgIGZsb2F0IGFbM107XG4i
CisgICAgICAgICJ9O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAg
ICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgY29uc3QgUyBiO1xuIgorICAgICAg
ICAiICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgorICAgICAgICAifVxuIjsKKyAgICBp
ZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFk
ZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9n
OworICAgIH0KK30KKworLy8gQ29uc3QgdmFyaWFibGVzIG5lZWQgYW4gaW5pdGlhbGl6ZXIuIElu
IEVTU0wxIGNvbnN0IGFycmF5cyBhcmUgbm90IGFsbG93ZWQKKy8vIGF0IGFsbCBzaW5jZSBpdCdz
IGltcG9zc2libGUgdG8gaW5pdGlhbGl6ZSB0aGVtLgorLy8gRXZlbiB0aG91Z2ggdGhpcyB0ZXN0
IGlzIGZvciBFU1NMMyB0aGUgb25seSB0aGluZyB0aGF0J3MgY3JpdGljYWwgZm9yCisvLyBFU1NM
MSBpcyB0aGUgbm9uLWluaXRpYWxpemF0aW9uIGNoZWNrIHRoYXQncyB1c2VkIGZvciBib3RoIGxh
bmd1YWdlIHZlcnNpb25zLgorLy8gV2hldGhlciBFU1NMMSBjb21waWxhdGlvbiBnZW5lcmF0ZXMg
dGhlIG1vc3QgaGVscGZ1bCBlcnJvciBtZXNzYWdlcyBpcyBhCisvLyBzZWNvbmRhcnkgY29uY2Vy
bi4KK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBDb25zdEFycmF5Tm90SW5pdGlhbGl6ZWQp
Cit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVy
c2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAg
ICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xu
IgorICAgICAgICAiICAgY29uc3QgZmxvYXQgYVszXTtcbiIKKyAgICAgICAgIiAgIG15X0ZyYWdD
b2xvciA9IHZlYzQoMS4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hh
ZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9u
IHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisK
Ky8vIEJsb2NrIGxheW91dCBxdWFsaWZpZXJzIGNhbid0IGJlIHVzZWQgb24gbm9uLWJsb2NrIHVu
aWZvcm1zIChFU1NMIDMuMDAgc2VjdGlvbiA0LjMuOC4zKQorVEVTVF9GKE1hbGZvcm1lZFNoYWRl
clRlc3QsIEJsb2NrTGF5b3V0UXVhbGlmaWVyT25SZWd1bGFyVW5pZm9ybSkKK3sKKyAgICBjb25z
dCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xu
IgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJsYXlvdXQo
cGFja2VkKSB1bmlmb3JtIG1hdDIgeDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xv
cjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIG15X0ZyYWdDb2xv
ciA9IHZlYzQoMS4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVy
U3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1
Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8v
IEJsb2NrIGxheW91dCBxdWFsaWZpZXJzIGNhbid0IGJlIHVzZWQgb24gbm9uLWJsb2NrIHVuaWZv
cm1zIChFU1NMIDMuMDAgc2VjdGlvbiA0LjMuOC4zKQorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRl
c3QsIEJsb2NrTGF5b3V0UXVhbGlmaWVyT25Vbmlmb3JtV2l0aEVtcHR5RGVjbCkKK3sKKyAgICAv
LyBZZXMsIHRoZSBjb21tYSBpbiB0aGUgZGVjbGFyYXRpb24gYmVsb3cgaXMgbm90IGEgdHlwby4K
KyAgICAvLyBFbXB0eSBkZWNsYXJhdGlvbnMgYXJlIGFsbG93ZWQgaW4gR0xTTC4KKyAgICBjb25z
dCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xu
IgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJsYXlvdXQo
cGFja2VkKSB1bmlmb3JtIG1hdDIsIHg7XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29s
b3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBteV9GcmFnQ29s
b3IgPSB2ZWM0KDEuMCk7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRl
clN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBz
dWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisv
LyBBcnJheXMgb2YgYXJyYXlzIGFyZSBub3QgYWxsb3dlZCAoRVNTTCAzLjAwIHNlY3Rpb24gNC4x
LjkpCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgQXJyYXlzT2ZBcnJheXMxKQoreworICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAw
IGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91
dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAg
ICAgIiAgIGZsb2F0WzVdIGFbM107XG4iCisgICAgICAgICIgICBteV9GcmFnQ29sb3IgPSB2ZWM0
KDEuMCk7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykp
CisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQs
IGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBBcnJheXMg
b2YgYXJyYXlzIGFyZSBub3QgYWxsb3dlZCAoRVNTTCAzLjAwIHNlY3Rpb24gNC4xLjkpCitURVNU
X0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgQXJyYXlzT2ZBcnJheXMyKQoreworICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisg
ICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15
X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGZs
b2F0WzJdIGEsIGJbM107XG4iCisgICAgICAgICIgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7
XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAg
eworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVj
dGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBJbXBsaWNpdGx5IHNp
emVkIGFycmF5cyBuZWVkIHRvIGJlIGluaXRpYWxpemVkIChFU1NMIDMuMDAgc2VjdGlvbiA0LjEu
OSkKK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBVbmluaXRpYWxpemVkSW1wbGljaXRBcnJh
eVNpemUpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAg
ICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xu
IgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWlu
KCkge1xuIgorICAgICAgICAiICAgZmxvYXRbXSBhO1xuIgorICAgICAgICAiICAgbXlfRnJhZ0Nv
bG9yID0gdmVjNCgxLjApO1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFk
ZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24g
c3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKwor
Ly8gQW4gb3BlcmF0b3IgY2FuIG9ubHkgZm9ybSBhIGNvbnN0YW50IGV4cHJlc3Npb24gaWYgYWxs
IHRoZSBvcGVyYW5kcyBhcmUgY29uc3RhbnQgZXhwcmVzc2lvbnMKKy8vIC0gZXZlbiBvcGVyYW5k
cyBvZiB0ZXJuYXJ5IG9wZXJhdG9yIHRoYXQgYXJlIG5ldmVyIGV2YWx1YXRlZC4gKEVTU0wgMy4w
MCBzZWN0aW9uIDQuMy4zKQorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIFRlcm5hcnlPcGVy
YXRvck5vdENvbnN0YW50RXhwcmVzc2lvbikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hh
ZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4i
CisgICAgICAgICJ1bmlmb3JtIGJvb2wgdTtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIK
KyAgICAgICAgIiAgIGNvbnN0IGJvb2wgYSA9IHRydWUgPyB0cnVlIDogdTtcbiIKKyAgICAgICAg
IiAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMS4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYg
KGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVy
IGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsK
KyAgICB9Cit9CisKKy8vIFRlcm5hcnkgb3BlcmF0b3IgY2FuJ3Qgb3BlcmF0ZSBvbiBhcnJheXMg
KEVTU0wgMy4wMCBzZWN0aW9uIDUuNykKK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBUZXJu
YXJ5T3BlcmF0b3JPbkFycmF5cykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3Ry
aW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAg
ICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBmbG9hdFsxXSBhID0gZmxvYXRbMV0o
MC4wKTtcbiIKKyAgICAgICAgIiAgIGZsb2F0WzFdIGIgPSBmbG9hdFsxXSgxLjApO1xuIgorICAg
ICAgICAiICAgZmxvYXRbMV0gYyA9IHRydWUgPyBhIDogYjtcbiIKKyAgICAgICAgIiAgIG15X0Zy
YWdDb2xvciA9IHZlYzQoMS4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUo
c2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0
aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9
CisKKy8vIFRlcm5hcnkgb3BlcmF0b3IgY2FuJ3Qgb3BlcmF0ZSBvbiBzdHJ1Y3RzIChFU1NMIDMu
MDAgc2VjdGlvbiA1LjcpCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgVGVybmFyeU9wZXJh
dG9yT25TdHJ1Y3RzKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQor
ICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInN0
cnVjdCBTIHsgZmxvYXQgZm9vOyB9O1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAg
ICAgICAiICAgUyBhID0gUygwLjApO1xuIgorICAgICAgICAiICAgUyBiID0gUygxLjApO1xuIgor
ICAgICAgICAiICAgUyBjID0gdHJ1ZSA/IGEgOiBiO1xuIgorICAgICAgICAiICAgbXlfRnJhZ0Nv
bG9yID0gdmVjNCgxLjApO1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFk
ZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24g
c3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKwor
Ly8gQXJyYXkgbGVuZ3RoKCkgcmV0dXJucyBhIGNvbnN0YW50IHNpZ25lZCBpbnRlZ3JhbCBleHBy
ZXNzaW9uIChFU1NMIDMuMDAgc2VjdGlvbiA0LjEuOSkKKy8vIEFzc2lnbmluZyBpdCB0byB1bnNp
Z25lZCBzaG91bGQgcmVzdWx0IGluIGFuIGVycm9yLgorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRl
c3QsIEFzc2lnbkFycmF5TGVuZ3RoVG9VbnNpZ25lZCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAi
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29s
b3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBpbnRbMV0gYXJy
O1xuIgorICAgICAgICAiICAgdWludCBsID0gYXJyLmxlbmd0aCgpO1xuIgorICAgICAgICAiICAg
bXlfRnJhZ0NvbG9yID0gdmVjNChmbG9hdChsKSk7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlm
IChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRl
ciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7
CisgICAgfQorfQorCisvLyBHbG9iYWwgdmFyaWFibGUgaW5pdGlhbGl6ZXJzIG5lZWQgdG8gYmUg
Y29uc3RhbnQgZXhwcmVzc2lvbnMgKEVTU0wgMS4wMCBzZWN0aW9uIDQuMykKKy8vIEluaXRpYWxp
emluZyB3aXRoIGEgdmFyeWluZyBzaG91bGQgYmUgYW4gZXJyb3IuCitURVNUX0YoTWFsZm9ybWVk
U2hhZGVyVGVzdCwgQXNzaWduVmFyeWluZ1RvR2xvYmFsKQoreworICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
CisgICAgICAgICJ2YXJ5aW5nIGZsb2F0IGE7XG4iCisgICAgICAgICJmbG9hdCBiID0gYSAqIDIu
MDtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xv
ciA9IHZlYzQoYik7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0
cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNj
ZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBH
bG9iYWwgdmFyaWFibGUgaW5pdGlhbGl6ZXJzIG5lZWQgdG8gYmUgY29uc3RhbnQgZXhwcmVzc2lv
bnMgKEVTU0wgMy4wMCBzZWN0aW9uIDQuMykKKy8vIEluaXRpYWxpemluZyB3aXRoIGFuIHVuaWZv
cm0gc2hvdWxkIGJlIGFuIGVycm9yLgorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIEFzc2ln
blVuaWZvcm1Ub0dsb2JhbEVTU0wzKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJT
dHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gZmxvYXQgYTtcbiIKKyAgICAgICAg
ImZsb2F0IGIgPSBhICogMi4wO1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xu
IgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgbXlfRnJhZ0NvbG9yID0g
dmVjNChiKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5n
KSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRl
ZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIEdsb2Jh
bCB2YXJpYWJsZSBpbml0aWFsaXplcnMgbmVlZCB0byBiZSBjb25zdGFudCBleHByZXNzaW9ucyAo
RVNTTCAxLjAwIHNlY3Rpb24gNC4zKQorLy8gSW5pdGlhbGl6aW5nIHdpdGggYW4gdW5pZm9ybSBz
aG91bGQgZ2VuZXJhdGUgYSB3YXJuaW5nCisvLyAod2UgZG9uJ3QgZ2VuZXJhdGUgYW4gZXJyb3Ig
b24gRVNTTCAxLjAwIGJlY2F1c2Ugb2YgbGVnYWN5IGNvbXBhdGliaWxpdHkpCitURVNUX0YoTWFs
Zm9ybWVkU2hhZGVyVGVzdCwgQXNzaWduVW5pZm9ybVRvR2xvYmFsRVNTTDEpCit7CisgICAgY29u
c3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gZmxvYXQgYTtcbiIKKyAgICAgICAgImZsb2F0
IGIgPSBhICogMi4wO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAg
Z2xfRnJhZ0NvbG9yID0gdmVjNChiKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBp
bGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIGlmICghaGFzV2FybmluZygpKQorICAg
ICAgICB7CisgICAgICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVk
ZWQgd2l0aG91dCB3YXJuaW5ncywgZXhwZWN0aW5nIHdhcm5pbmcgIiA8PCBtSW5mb0xvZzsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRl
ciBjb21waWxhdGlvbiBmYWlsZWQsIGV4cGVjdGluZyBzdWNjZXNzIHdpdGggd2FybmluZyAiIDw8
IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gR2xvYmFsIHZhcmlhYmxlIGluaXRpYWxpemVycyBu
ZWVkIHRvIGJlIGNvbnN0YW50IGV4cHJlc3Npb25zIChFU1NMIDEuMDAgc2VjdGlvbiA0LjMpCisv
LyBJbml0aWFsaXppbmcgd2l0aCBhbiB1c2VyLWRlZmluZWQgZnVuY3Rpb24gY2FsbCBzaG91bGQg
YmUgYW4gZXJyb3IuCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgQXNzaWduRnVuY3Rpb25D
YWxsVG9HbG9iYWwpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Cisg
ICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgImZsb2F0IGZvbygp
IHsgcmV0dXJuIDEuMDsgfVxuIgorICAgICAgICAiZmxvYXQgYiA9IGZvbygpO1xuIgorICAgICAg
ICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChiKTtc
biIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7
CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0
aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIEdsb2JhbCB2YXJpYWJs
ZSBpbml0aWFsaXplcnMgbmVlZCB0byBiZSBjb25zdGFudCBleHByZXNzaW9ucyAoRVNTTCAxLjAw
IHNlY3Rpb24gNC4zKQorLy8gSW5pdGlhbGl6aW5nIHdpdGggYW4gYXNzaWdubWVudCB0byBhbm90
aGVyIGdsb2JhbCBzaG91bGQgYmUgYW4gZXJyb3IuCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVz
dCwgQXNzaWduQXNzaWdubWVudFRvR2xvYmFsKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZz
aGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAg
ICAgICJmbG9hdCBjID0gMS4wO1xuIgorICAgICAgICAiZmxvYXQgYiA9IChjID0gMC4wKTtcbiIK
KyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHZl
YzQoYik7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykp
CisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQs
IGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBHbG9iYWwg
dmFyaWFibGUgaW5pdGlhbGl6ZXJzIG5lZWQgdG8gYmUgY29uc3RhbnQgZXhwcmVzc2lvbnMgKEVT
U0wgMS4wMCBzZWN0aW9uIDQuMykKKy8vIEluaXRpYWxpemluZyB3aXRoIGluY3JlbWVudGluZyBh
bm90aGVyIGdsb2JhbCBzaG91bGQgYmUgYW4gZXJyb3IuCitURVNUX0YoTWFsZm9ybWVkU2hhZGVy
VGVzdCwgQXNzaWduSW5jcmVtZW50VG9HbG9iYWwpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcg
JnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAg
ICAgICAgImZsb2F0IGMgPSAxLjA7XG4iCisgICAgICAgICJmbG9hdCBiID0gKGMrKyk7XG4iCisg
ICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0
KGIpO1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQor
ICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBl
eHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gR2xvYmFsIHZh
cmlhYmxlIGluaXRpYWxpemVycyBuZWVkIHRvIGJlIGNvbnN0YW50IGV4cHJlc3Npb25zIChFU1NM
IDEuMDAgc2VjdGlvbiA0LjMpCisvLyBJbml0aWFsaXppbmcgd2l0aCBhIHRleHR1cmUgbG9va3Vw
IGZ1bmN0aW9uIGNhbGwgc2hvdWxkIGJlIGFuIGVycm9yLgorVEVTVF9GKE1hbGZvcm1lZFNoYWRl
clRlc3QsIEFzc2lnblRleHR1cmUyRFRvR2xvYmFsKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisg
ICAgICAgICJ1bmlmb3JtIG1lZGl1bXAgc2FtcGxlcjJEIHM7XG4iCisgICAgICAgICJmbG9hdCBi
ID0gdGV4dHVyZTJEKHMsIHZlYzIoMC41LCAwLjUpKS54O1xuIgorICAgICAgICAidm9pZCBtYWlu
KCkge1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChiKTtcbiIKKyAgICAgICAg
In1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZB
SUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUg
IiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIEdsb2JhbCB2YXJpYWJsZSBpbml0aWFsaXpl
cnMgbmVlZCB0byBiZSBjb25zdGFudCBleHByZXNzaW9ucyAoRVNTTCAzLjAwIHNlY3Rpb24gNC4z
KQorLy8gSW5pdGlhbGl6aW5nIHdpdGggYSBub24tY29uc3RhbnQgZ2xvYmFsIHNob3VsZCBiZSBh
biBlcnJvci4KK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBBc3NpZ25Ob25Db25zdEdsb2Jh
bFRvR2xvYmFsKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAg
ICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDtcbiIKKyAgICAgICAgImZsb2F0IGEgPSAxLjA7XG4iCisgICAgICAgICJmbG9hdCBiID0gYSAq
IDIuMDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZv
aWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIG15X0ZyYWdDb2xvciA9IHZlYzQoYik7XG4iCisg
ICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAg
ICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBm
YWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBHbG9iYWwgdmFyaWFibGUgaW5p
dGlhbGl6ZXJzIG5lZWQgdG8gYmUgY29uc3RhbnQgZXhwcmVzc2lvbnMgKEVTU0wgMy4wMCBzZWN0
aW9uIDQuMykKKy8vIEluaXRpYWxpemluZyB3aXRoIGEgY29uc3RhbnQgZ2xvYmFsIHNob3VsZCBi
ZSBmaW5lLgorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIEFzc2lnbkNvbnN0R2xvYmFsVG9H
bG9iYWwpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAg
ICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xu
IgorICAgICAgICAiY29uc3QgZmxvYXQgYSA9IDEuMDtcbiIKKyAgICAgICAgImZsb2F0IGIgPSBh
ICogMi4wO1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAi
dm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgbXlfRnJhZ0NvbG9yID0gdmVjNChiKTtcbiIK
KyAgICAgICAgIn1cbiI7CisgICAgaWYgKCFjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgewor
ICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQsIGV4cGVjdGluZyBz
dWNjZXNzICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBTdGF0aWNhbGx5IGFzc2lnbmlu
ZyB0byBib3RoIGdsX0ZyYWdEYXRhIGFuZCBnbF9GcmFnQ29sb3IgaXMgZm9yYmlkZGVuIChFU1NM
IDEuMDAgc2VjdGlvbiA3LjIpCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgV3JpdGVCb3Ro
RnJhZ0RhdGFBbmRGcmFnQ29sb3IpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0
cmluZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInZv
aWQgZm9vKCkge1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0RhdGFbMF0uYSsrO1xuIgorICAgICAg
ICAifVxuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0Nv
bG9yLnggKz0gMC4wO1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJT
dHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3Vj
Y2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8g
VmVyc2lvbiBkaXJlY3RpdmUgbXVzdCBiZSBvbiB0aGUgZmlyc3QgbGluZSAoRVNTTCAzLjAwIHNl
Y3Rpb24gMy4zKQorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIFZlcnNpb25PblNlY29uZExp
bmUpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJc
biIKKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAg
ICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCk7
XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAg
eworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVj
dGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBMYXlvdXQgcXVhbGlm
aWVyIGNhbiBvbmx5IGFwcGVhciBpbiBnbG9iYWwgc2NvcGUgKEVTU0wgMy4wMCBzZWN0aW9uIDQu
My44KQorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIExheW91dFF1YWxpZmllckluQ29uZGl0
aW9uKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAi
I3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIK
KyAgICAgICAgInVuaWZvcm0gdmVjNCB1O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0Nv
bG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgIGludCBpID0g
MDtcbiIKKyAgICAgICAgIiAgICBmb3IgKGludCBqID0gMDsgbGF5b3V0KGxvY2F0aW9uID0gMCkg
Ym9vbCBiID0gZmFsc2U7ICsraikge1xuIgorICAgICAgICAiICAgICAgICArK2k7XG4iCisgICAg
ICAgICIgICAgfVxuIgorICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHU7XG4iCisgICAgICAg
ICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBG
QUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJl
ICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBMYXlvdXQgcXVhbGlmaWVyIGNhbiBvbmx5
IGFwcGVhciB3aGVyZSBzcGVjaWZpZWQgKEVTU0wgMy4wMCBzZWN0aW9uIDQuMy44KQorVEVTVF9G
KE1hbGZvcm1lZFNoYWRlclRlc3QsIExheW91dFF1YWxpZmllckluRnVuY3Rpb25SZXR1cm5UeXBl
KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3Zl
cnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAg
ICAgICAgInVuaWZvcm0gdmVjNCB1O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9y
O1xuIgorICAgICAgICAibGF5b3V0KGxvY2F0aW9uID0gMCkgdmVjNCBmb28oKSB7XG4iCisgICAg
ICAgICIgICAgcmV0dXJuIHU7XG4iCisgICAgICAgICJ9XG4iCisgICAgICAgICJ2b2lkIG1haW4o
KSB7XG4iCisgICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gZm9vKCk7XG4iCisgICAgICAgICJ9
XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlM
KCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIg
PDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIG91
dHB1dCwgdGhlIGxvY2F0aW9uIG11c3QgYmUgc3BlY2lmaWVkIGZvciBhbGwgb3V0cHV0cy4KKy8v
IChFU1NMIDMuMDAuMDQgc2VjdGlvbiA0LjMuOC4yKQorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRl
c3QsIFR3b091dHB1dHNOb0xheW91dFF1YWxpZmllcnMpCit7CisgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAg
InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidW5pZm9ybSB2ZWM0IHU7XG4i
CisgICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJvdXQgdmVjNCBt
eV9TZWNvbmRhcnlGcmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAg
ICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgorICAgICAgICAiICAgIG15X1Nl
Y29uZGFyeUZyYWdDb2xvciA9IHZlYzQoMC41KTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYg
KGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVy
IGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsK
KyAgICB9Cit9CisKKy8vIChFU1NMIDMuMDAuMDQgc2VjdGlvbiA0LjMuOC4yKQorVEVTVF9GKE1h
bGZvcm1lZFNoYWRlclRlc3QsIFR3b091dHB1dHNGaXJzdExheW91dFF1YWxpZmllcikKK3sKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMw
MCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ1
bmlmb3JtIHZlYzQgdTtcbiIKKyAgICAgICAgImxheW91dChsb2NhdGlvbiA9IDApIG91dCB2ZWM0
IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X1NlY29uZGFyeUZyYWdDb2xv
cjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgICBteV9GcmFnQ29s
b3IgPSB2ZWM0KDEuMCk7XG4iCisgICAgICAgICIgICAgbXlfU2Vjb25kYXJ5RnJhZ0NvbG9yID0g
dmVjNCgwLjUpO1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJp
bmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2Vl
ZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gKEVT
U0wgMy4wMC4wNCBzZWN0aW9uIDQuMy44LjIpCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwg
VHdvT3V0cHV0c1NlY29uZExheW91dFF1YWxpZmllcikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAi
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzQgdTtcbiIK
KyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgImxheW91dChsb2Nh
dGlvbiA9IDApIG91dCB2ZWM0IG15X1NlY29uZGFyeUZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZv
aWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XG4i
CisgICAgICAgICIgICAgbXlfU2Vjb25kYXJ5RnJhZ0NvbG9yID0gdmVjNCgwLjUpO1xuIgorICAg
ICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAg
ICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFp
bHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gVW5pZm9ybXMgY2FuIGJlIGFycmF5
cyAoRVNTTCAzLjAwIHNlY3Rpb24gNC4zLjUpCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwg
VW5pZm9ybUFycmF5KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQor
ICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gdmVjNFsyXSB1O1xuIgorICAgICAgICAib3V0IHZl
YzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAi
ICAgIG15X0ZyYWdDb2xvciA9IHVbMF07XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmICghY29t
cGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29t
cGlsYXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2VzcyAiIDw8IG1JbmZvTG9nOworICAgIH0K
K30KKworLy8gRnJhZ21lbnQgc2hhZGVyIGlucHV0IHZhcmlhYmxlcyBjYW5ub3QgYmUgYXJyYXlz
IG9mIHN0cnVjdHMgKEVTU0wgMy4wMCBzZWN0aW9uIDQuMy40KQorVEVTVF9GKE1hbGZvcm1lZFNo
YWRlclRlc3QsIEZyYWdtZW50SW5wdXRBcnJheU9mU3RydWN0cykKK3sKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAg
ICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJzdHJ1Y3QgUyB7XG4i
CisgICAgICAgICIgICAgdmVjNCBmb287XG4iCisgICAgICAgICJ9O1xuIgorICAgICAgICAiaW4g
UyBpWzJdO1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAi
dm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IGlbMF0uZm9vO1xu
IgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsK
KyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3Rp
bmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gVmVydGV4IHNoYWRlciBp
bnB1dHMgY2FuJ3QgYmUgYXJyYXlzIChFU1NMIDMuMDAgc2VjdGlvbiA0LjMuNCkKKy8vIFRoaXMg
dGVzdCBpcyB0ZXN0aW5nIHRoZSBjYXNlIHdoZXJlIHRoZSBhcnJheSBicmFja2V0cyBhcmUgYWZ0
ZXIgdGhlIHZhcmlhYmxlIG5hbWUsIHNvCisvLyB0aGUgYXJyYXluZXNzIGlzbid0IGtub3duIHdo
ZW4gdGhlIHR5cGUgYW5kIHF1YWxpZmllcnMgYXJlIGluaXRpYWxseSBwYXJzZWQuCitURVNUX0Yo
TWFsZm9ybWVkVmVydGV4U2hhZGVyVGVzdCwgVmVydGV4U2hhZGVySW5wdXRBcnJheSkKK3sKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMw
MCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJp
biB2ZWM0IGlbMl07XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICAg
Z2xfUG9zaXRpb24gPSBpWzBdO1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShz
aGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRp
b24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30K
KworLy8gVmVydGV4IHNoYWRlciBpbnB1dHMgY2FuJ3QgYmUgYXJyYXlzIChFU1NMIDMuMDAgc2Vj
dGlvbiA0LjMuNCkKKy8vIFRoaXMgdGVzdCBpcyB0ZXN0aW5nIHRoZSBjYXNlIHdoZXJlIHRoZSBh
cnJheSBicmFja2V0cyBhcmUgYWZ0ZXIgdGhlIHR5cGUuCitURVNUX0YoTWFsZm9ybWVkVmVydGV4
U2hhZGVyVGVzdCwgVmVydGV4U2hhZGVySW5wdXRBcnJheVR5cGUpCit7CisgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAg
ICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAiaW4gdmVjNFsyXSBp
O1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgIGdsX1Bvc2l0aW9u
ID0gaVswXTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5n
KSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRl
ZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIEZyYWdt
ZW50IHNoYWRlciBpbnB1dHMgY2FuJ3QgY29udGFpbiBib29sZWFucyAoRVNTTCAzLjAwIHNlY3Rp
b24gNC4zLjQpCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgRnJhZ21lbnRTaGFkZXJJbnB1
dFN0cnVjdFdpdGhCb29sKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcg
PQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDtcbiIKKyAgICAgICAgInN0cnVjdCBTIHtcbiIKKyAgICAgICAgIiAgICBib29sIGZv
bztcbiIKKyAgICAgICAgIn07XG4iCisgICAgICAgICJpbiBTIHM7XG4iCisgICAgICAgICJvdXQg
dmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAg
ICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLjApO1xuIgorICAgICAgICAifVxuIjsKKyAgICBp
ZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFk
ZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9n
OworICAgIH0KK30KKworLy8gRnJhZ21lbnQgc2hhZGVyIGlucHV0cyB3aXRob3V0IGEgZmxhdCBx
dWFsaWZpZXIgY2FuJ3QgY29udGFpbiBpbnRlZ2VycyAoRVNTTCAzLjAwIHNlY3Rpb24gNC4zLjQp
CitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgRnJhZ21lbnRTaGFkZXJJbnB1dFN0cnVjdFdp
dGhJbnQpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAg
ICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xu
IgorICAgICAgICAic3RydWN0IFMge1xuIgorICAgICAgICAiICAgIGludCBmb287XG4iCisgICAg
ICAgICJ9O1xuIgorICAgICAgICAiaW4gUyBzO1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJh
Z0NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgIG15X0Zy
YWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUo
c2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0
aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9
CisKKy8vIFNlbGVjdGluZyBhIGZpZWxkIG9mIGEgdmVjdG9yIHRoYXQncyB0aGUgcmVzdWx0IG9m
IGR5bmFtaWMgaW5kZXhpbmcgYSBjb25zdGFudCBhcnJheSBzaG91bGQgd29yay4KK1RFU1RfRihN
YWxmb3JtZWRTaGFkZXJUZXN0LCBTaGFkZXJTZWxlY3RpbmdGaWVsZE9mVmVjdG9ySW5kZXhlZEZy
b21BcnJheSkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAg
ICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJ1bmlmb3Jt
IGludCBpO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgIGZsb2F0
IGYgPSB2ZWMyWzFdKHZlYzIoMC4wLCAwLjEpKVtpXS54O1xuIgorICAgICAgICAiICAgIG15X0Zy
YWdDb2xvciA9IHZlYzQoZik7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmICghY29tcGlsZShz
aGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRp
b24gZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2VzcyAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKwor
Ly8gUGFzc2luZyBhbiBhcnJheSBpbnRvIGEgZnVuY3Rpb24gYW5kIHRoZW4gcGFzc2luZyBhIHZh
bHVlIGZyb20gdGhhdCBhcnJheSBpbnRvIGFub3RoZXIgZnVuY3Rpb24KKy8vIHNob3VsZCB3b3Jr
LiBUaGlzIGlzIGEgcmVncmVzc2lvbiB0ZXN0IGZvciBhIGJ1ZyB3aGVyZSB0aGUgbWFuZ2xlZCBu
YW1lIG9mIGEgVFR5cGUgd2FzIG5vdAorLy8gcHJvcGVybHkgdXBkYXRlZCB3aGVuIGRldGVybWlu
aW5nIHRoZSB0eXBlIHJlc3VsdGluZyBmcm9tIGFycmF5IGluZGV4aW5nLgorVEVTVF9GKE1hbGZv
cm1lZFNoYWRlclRlc3QsIEFycmF5VmFsdWVGcm9tRnVuY3Rpb25QYXJhbWV0ZXJBc1BhcmFtZXRl
cikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidW5pZm9ybSBmbG9hdCB1O1xuIgor
ICAgICAgICAiZmxvYXQgZm9vKGZsb2F0IGYpIHtcbiIKKyAgICAgICAgIiAgIHJldHVybiBmICog
Mi4wO1xuIgorICAgICAgICAifVxuIgorICAgICAgICAiZmxvYXQgYmFyKGZsb2F0WzJdIGYpIHtc
biIKKyAgICAgICAgIiAgICByZXR1cm4gZm9vKGZbMF0pO1xuIgorICAgICAgICAifVxuIgorICAg
ICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBmbG9hdCBh
cnJbMl07XG4iCisgICAgICAgICIgICAgYXJyWzBdID0gdTtcbiIKKyAgICAgICAgIiAgICBnbF9G
cmFnQ29sb3IgPSB2ZWM0KGJhcihhcnIpKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKCFj
b21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBj
b21waWxhdGlvbiBmYWlsZWQsIGV4cGVjdGluZyBzdWNjZXNzICIgPDwgbUluZm9Mb2c7CisgICAg
fQorfQorCisvLyBUZXN0IHRoYXQgb3V0LW9mLXJhbmdlIGludGVnZXIgbGl0ZXJhbCBnZW5lcmF0
ZXMgYW4gZXJyb3IgaW4gRVNTTCAzLjAwLgorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIE91
dE9mUmFuZ2VJbnRlZ2VyTGl0ZXJhbCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVy
U3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJwcmVjaXNpb24gaGlnaHAgaW50O1xuIgorICAg
ICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xu
IgorICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMHgxMDAwMDAwMDApO1xuIgorICAg
ICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAg
ICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFp
bHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gVGVzdCB0aGF0IHZlY3RvciBmaWVs
ZCBzZWxlY3Rpb24gZnJvbSBhIHZhbHVlIHRha2VuIGZyb20gYW4gYXJyYXkgY29uc3RydWN0b3Ig
aXMgYWNjZXB0ZWQgYXMgYQorLy8gY29uc3RhbnQgZXhwcmVzc2lvbi4KK1RFU1RfRihNYWxmb3Jt
ZWRTaGFkZXJUZXN0LCBGaWVsZFNlbGVjdGlvbkZyb21WZWN0b3JBcnJheUNvbnN0cnVjdG9ySXND
b25zdCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAg
IiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
CisgICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4o
KVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGNvbnN0IGZsb2F0IGYgPSB2ZWMyWzFd
KHZlYzIoMC4wLCAxLjApKVswXS54O1xuIgorICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZl
YzQoZik7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmICghY29tcGlsZShzaGFkZXJTdHJpbmcp
KQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLCBl
eHBlY3Rpbmcgc3VjY2VzcyAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gVGVzdCB0aGF0
IHN0cnVjdHVyZSBmaWVsZCBzZWxlY3Rpb24gZnJvbSBhIHZhbHVlIHRha2VuIGZyb20gYW4gYXJy
YXkgY29uc3RydWN0b3IgaXMgYWNjZXB0ZWQgYXMgYQorLy8gY29uc3RhbnQgZXhwcmVzc2lvbi4K
K1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBGaWVsZFNlbGVjdGlvbkZyb21TdHJ1Y3RBcnJh
eUNvbnN0cnVjdG9ySXNDb25zdCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3Ry
aW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAg
ICAgICJzdHJ1Y3QgUyB7IGZsb2F0IG1lbWJlcjsgfTtcbiIKKyAgICAgICAgInZvaWQgbWFpbigp
XG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgY29uc3QgZmxvYXQgZiA9IFNbMV0oUygw
LjApKVswXS5tZW1iZXI7XG4iCisgICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNChmKTtc
biIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKCFjb21waWxlKHNoYWRlclN0cmluZykpCisgICAg
eworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQsIGV4cGVjdGlu
ZyBzdWNjZXNzICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBUZXN0IHRoYXQgYSByZWZl
cmVuY2UgdG8gYSBjb25zdCBhcnJheSBpcyBhY2NlcHRlZCBhcyBhIGNvbnN0YW50IGV4cHJlc3Np
b24uCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgQXJyYXlTeW1ib2xJc0NvbnN0KQorewor
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24g
MzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAg
Im91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAg
ICAgICJ7XG4iCisgICAgICAgICIgICAgY29uc3QgZmxvYXRbMl0gYXJyID0gZmxvYXRbMl0oMC4w
LCAxLjApO1xuIgorICAgICAgICAiICAgIGNvbnN0IGZsb2F0IGYgPSBhcnJbMF07XG4iCisgICAg
ICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNChmKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAg
aWYgKCFjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNo
YWRlciBjb21waWxhdGlvbiBmYWlsZWQsIGV4cGVjdGluZyBzdWNjZXNzICIgPDwgbUluZm9Mb2c7
CisgICAgfQorfQorCisvLyBUZXN0IHRoYXQgdXNpbmcgYW4gYXJyYXkgY29uc3RydWN0b3IgaW4g
YSBwYXJhbWV0ZXIgdG8gYSBidWlsdC1pbiBmdW5jdGlvbiBpcyBhY2NlcHRlZCBhcyBhCisvLyBj
b25zdGFudCBleHByZXNzaW9uLgorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIEJ1aWx0SW5G
dW5jdGlvbkFwcGxpZWRUb0FycmF5Q29uc3RydWN0b3JJc0NvbnN0KQoreworICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisg
ICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15
X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisg
ICAgICAgICIgICAgY29uc3QgZmxvYXQgZiA9IHNpbihmbG9hdFsyXSgwLjAsIDEuMClbMF0pO1xu
IgorICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoZik7XG4iCisgICAgICAgICJ9XG4i
OworICAgIGlmICghY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgp
IDw8ICJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2VzcyAiIDw8IG1J
bmZvTG9nOworICAgIH0KK30KKworLy8gVGVzdCB0aGF0IHVzaW5nIGFuIGFycmF5IGNvbnN0cnVj
dG9yIGluIGEgcGFyYW1ldGVyIHRvIGEgYnVpbHQtaW4gZnVuY3Rpb24gaXMgYWNjZXB0ZWQgYXMg
YQorLy8gY29uc3RhbnQgZXhwcmVzc2lvbi4KK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBC
dWlsdEluRnVuY3Rpb25XaXRoTXVsdGlwbGVQYXJhbWV0ZXJzQXBwbGllZFRvQXJyYXlDb25zdHJ1
Y3RvcklzQ29uc3QpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Cisg
ICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9p
ZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBjb25zdCBmbG9hdCBmID0g
cG93KDEuMCwgZmxvYXRbMl0oMC4wLCAxLjApWzBdKTtcbiIKKyAgICAgICAgIiAgICBteV9GcmFn
Q29sb3IgPSB2ZWM0KGYpO1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoIWNvbXBpbGUoc2hh
ZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9u
IGZhaWxlZCwgZXhwZWN0aW5nIHN1Y2Nlc3MgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8v
IFRlc3QgdGhhdCB1c2luZyBhbiBhcnJheSBjb25zdHJ1Y3RvciBpbiBhIHBhcmFtZXRlciB0byBh
IGNvbnN0cnVjdG9yIGlzIGFjY2VwdGVkIGFzIGEgY29uc3RhbnQKKy8vIGV4cHJlc3Npb24uCitU
RVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgQ29uc3RydWN0b3JXaXRoTXVsdGlwbGVQYXJhbWV0
ZXJzQXBwbGllZFRvQXJyYXlDb25zdHJ1Y3RvcklzQ29uc3QpCit7CisgICAgY29uc3Qgc3RkOjpz
dHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAg
ICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJh
Z0NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAg
ICAgIiAgICBjb25zdCB2ZWMyIGYgPSB2ZWMyKDEuMCwgZmxvYXRbMl0oMC4wLCAxLjApWzBdKTtc
biIKKyAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KGYueCk7XG4iCisgICAgICAgICJ9
XG4iOworICAgIGlmICghY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJ
TCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2VzcyAiIDw8
IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gVGVzdCB0aGF0IHVzaW5nIGFuIGFycmF5IGNvbnN0
cnVjdG9yIGluIGFuIG9wZXJhbmQgb2YgdGhlIHRlcm5hcnkgc2VsZWN0aW9uIG9wZXJhdG9yIGlz
IGFjY2VwdGVkCisvLyBhcyBhIGNvbnN0YW50IGV4cHJlc3Npb24uCitURVNUX0YoTWFsZm9ybWVk
U2hhZGVyVGVzdCwgVGVybmFyeU9wZXJhdG9yQXBwbGllZFRvQXJyYXlDb25zdHJ1Y3RvcklzQ29u
c3QpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIj
dmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgor
ICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKClc
biIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBjb25zdCBmbG9hdCBmID0gdHJ1ZSA/IGZs
b2F0WzJdKDAuMCwgMS4wKVswXSA6IDEuMDtcbiIKKyAgICAgICAgIiAgICBteV9GcmFnQ29sb3Ig
PSB2ZWM0KGYpO1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoIWNvbXBpbGUoc2hhZGVyU3Ry
aW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxl
ZCwgZXhwZWN0aW5nIHN1Y2Nlc3MgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIFRlc3Qg
dGhhdCBhIHRlcm5hcnkgb3BlcmF0b3Igd2l0aCBvbmUgdW5ldmFsdWF0ZWQgbm9uLWNvbnN0YW50
IG9wZXJhbmQgaXMgbm90IGEgY29uc3RhbnQKKy8vIGV4cHJlc3Npb24uCitURVNUX0YoTWFsZm9y
bWVkU2hhZGVyVGVzdCwgVGVybmFyeU9wZXJhdG9yTm9uQ29uc3RhbnRPcGVyYW5kKQoreworICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ1bmlmb3JtIGZsb2F0IHU7XG4iCisgICAgICAgICJ2
b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGNvbnN0IGZsb2F0IGYg
PSB0cnVlID8gMS4wIDogdTtcbiIKKyAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGYp
O1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAg
IHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBl
Y3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gVGVzdCB0aGF0IGEg
c2FtcGxlciBjYW4ndCBiZSB1c2VkIGluIGNvbnN0cnVjdG9yIGFyZ3VtZW50IGxpc3QKK1RFU1Rf
RihNYWxmb3JtZWRTaGFkZXJUZXN0LCBTYW1wbGVySW5Db25zdHJ1Y3RvckFyZ3VtZW50cykKK3sK
KyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNpc2lv
biBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQgcztcbiIKKyAg
ICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgdmVjMiB2
ID0gdmVjMigwLjAsIHMpO1xuIgorICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQodiwg
MC4wLCAwLjApO1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJp
bmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2Vl
ZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gVGVz
dCB0aGF0IHZvaWQgY2FuJ3QgYmUgdXNlZCBpbiBjb25zdHJ1Y3RvciBhcmd1bWVudCBsaXN0CitU
RVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgVm9pZEluQ29uc3RydWN0b3JBcmd1bWVudHMpCit7
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInZvaWQgZm9vKCkge31cbiIKKyAgICAgICAg
InZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgdmVjMiB2ID0gdmVj
MigwLjAsIGZvbygpKTtcbiIKKyAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHYsIDAu
MCwgMC4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5n
KSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRl
ZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIFRlc3Qg
dGhhdCBhIHNoYWRlciBwYXNzaW5nIGEgc3RydWN0IGludG8gYSBjb25zdHJ1Y3RvciBvZiBhcnJh
eSBvZiBzdHJ1Y3RzIHdpdGggMSBlbGVtZW50IHdvcmtzLgorVEVTVF9GKE1hbGZvcm1lZFNoYWRl
clRlc3QsIFNpbmdsZVN0cnVjdEFycmF5Q29uc3RydWN0b3IpCit7CisgICAgY29uc3Qgc3RkOjpz
dHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAg
ICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJh
Z0NvbG9yO1xuIgorICAgICAgICAidW5pZm9ybSBmbG9hdCB1O1xuIgorICAgICAgICAic3RydWN0
IFMgeyBmbG9hdCBtZW1iZXI7IH07XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAg
ICAie1xuIgorICAgICAgICAiICAgIFNbMV0gc2FyciA9IFNbMV0oUyh1KSk7XG4iCisgICAgICAg
ICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNChzYXJyWzBdLm1lbWJlcik7XG4iCisgICAgICAgICJ9
XG4iOworICAgIGlmICghY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJ
TCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2VzcyAiIDw8
IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gVGVzdCB0aGF0IGEgc2hhZGVyIHdpdGggZW1wdHkg
Y29uc3RydWN0b3IgcGFyYW1ldGVyIGxpc3QgaXMgbm90IGFjY2VwdGVkLgorVEVTVF9GKE1hbGZv
cm1lZFNoYWRlclRlc3QsIEVtcHR5QXJyYXlDb25zdHJ1Y3RvcikKK3sKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAg
ICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9G
cmFnQ29sb3I7XG4iCisgICAgICAgICJ1bmlmb3JtIGZsb2F0IHU7XG4iCisgICAgICAgICJjb25z
dCBmbG9hdFtdIGYgPSBmW10oKTtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAg
ICJ7XG4iCisgICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLjApO1xuIgorICAgICAg
ICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAg
RkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVy
ZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gVGVzdCB0aGF0IGluZGV4aW5nIGZyYWdt
ZW50IG91dHB1dHMgd2l0aCBhIG5vbi1jb25zdGFudCBleHByZXNzaW9uIGlzIGZvcmJpZGRlbiwg
ZXZlbiBpZiBBTkdMRQorLy8gaXMgYWJsZSB0byBjb25zdGFudCBmb2xkIHRoZSBpbmRleCBleHBy
ZXNzaW9uLiBFU1NMIDMuMDAgc2VjdGlvbiA0LjMuNi4KK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJU
ZXN0LCBEeW5hbWljYWxseUluZGV4ZWRGcmFnbWVudE91dHB1dCkKK3sKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAg
ICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ1bmlmb3JtIGludCBh
O1xuIgorICAgICAgICAib3V0IHZlYzRbMl0gbXlfRnJhZ0RhdGE7XG4iCisgICAgICAgICJ2b2lk
IG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIG15X0ZyYWdEYXRhW3RydWUg
PyAwIDogYV0gPSB2ZWM0KDAuMCk7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxl
KHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxh
dGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQor
fQorCisvLyBUZXN0IHRoYXQgaW5kZXhpbmcgYW4gaW50ZXJmYWNlIGJsb2NrIGFycmF5IHdpdGgg
YSBub24tY29uc3RhbnQgZXhwcmVzc2lvbiBpcyBmb3JiaWRkZW4sIGV2ZW4gaWYKKy8vIEFOR0xF
IGlzIGFibGUgdG8gY29uc3RhbnQgZm9sZCB0aGUgaW5kZXggZXhwcmVzc2lvbi4gRVNTTCAzLjAw
IHNlY3Rpb24gNC4zLjcuCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgRHluYW1pY2FsbHlJ
bmRleGVkSW50ZXJmYWNlQmxvY2spCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0
cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidW5pZm9ybSBpbnQgYTtcbiIKKyAgICAgICAgInVu
aWZvcm0gQlxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIHZlYzQgZjtcbiIKKyAgICAg
ICAgIn1cbiIKKyAgICAgICAgImJsb2Nrc1syXTtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0Zy
YWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAg
ICAgICIgICAgbXlfRnJhZ0NvbG9yID0gYmxvY2tzW3RydWUgPyAwIDogYV0uZjtcbiIKKyAgICAg
ICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAg
IEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1
cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIFRlc3QgdGhhdCBhIHNoYWRlciB0aGF0
IHVzZXMgYSBzdHJ1Y3QgZGVmaW5pdGlvbiBpbiBwbGFjZSBvZiBhIHN0cnVjdCBjb25zdHJ1Y3Rv
ciBkb2VzIG5vdAorLy8gY29tcGlsZS4gU2VlIEdMU0wgRVMgMS4wMCBzZWN0aW9uIDUuNC4zLgor
VEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIFN0cnVjdENvbnN0cnVjdG9yV2l0aFN0cnVjdERl
ZmluaXRpb24pCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAg
ICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4i
CisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgc3RydWN0IHMgeyBmbG9hdCBmOyB9ICgwLjAp
O1xuIgorICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKKyAgICAgICAg
In1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZB
SUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUg
IiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIFRlc3QgdGhhdCBpbmRleGluZyBnbF9GcmFn
RGF0YSB3aXRoIGEgbm9uLWNvbnN0YW50IGV4cHJlc3Npb24gaXMgZm9yYmlkZGVuIGluIFdlYkdM
IDIuMCwgZXZlbgorLy8gd2hlbiBBTkdMRSBpcyBhYmxlIHRvIGNvbnN0YW50IGZvbGQgdGhlIGlu
ZGV4LgorLy8gV2ViR0wgMi4wIHNwZWMgc2VjdGlvbiAnR0xTTCBFUyAxLjAwIEZyYWdtZW50IFNo
YWRlciBPdXRwdXQnCitURVNUX0YoTWFsZm9ybWVkV2ViR0wyU2hhZGVyVGVzdCwgSW5kZXhGcmFn
RGF0YVdpdGhOb25Db25zdGFudCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3Ry
aW5nID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidm9p
ZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBmb3IgKGludCBpID0gMDsg
aSA8IDI7ICsraSkge1xuIgorICAgICAgICAiICAgICAgICBnbF9GcmFnRGF0YVt0cnVlID8gMCA6
IGldID0gdmVjNCgwLjApO1xuIgorICAgICAgICAiICAgIH1cbiIKKyAgICAgICAgIn1cbiI7Cisg
ICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAi
U2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5m
b0xvZzsKKyAgICB9Cit9CisKKy8vIFRlc3QgdGhhdCBhIG5vbi1jb25zdGFudCB0ZXh0dXJlIG9m
ZnNldCBpcyBub3QgYWNjZXB0ZWQgZm9yIHRleHR1cmVPZmZzZXQuCisvLyBFU1NMIDMuMDAgc2Vj
dGlvbiA4LjgKK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBUZXh0dXJlT2Zmc2V0Tm9uQ29u
c3QpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIj
dmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgor
ICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidW5pZm9ybSB2ZWMz
IHVfdGV4Q29vcmQ7XG4iCisgICAgICAgICJ1bmlmb3JtIG1lZGl1bXAgc2FtcGxlcjNEIHVfc2Ft
cGxlcjtcbiIKKyAgICAgICAgInVuaWZvcm0gaW50IHg7XG4iCisgICAgICAgICJ2b2lkIG1haW4o
KVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgbXlfRnJhZ0NvbG9yID0gdGV4dHVyZU9m
ZnNldCh1X3NhbXBsZXIsIHVfdGV4Q29vcmQsIGl2ZWMzKHgsIDMsIC04KSk7XG4iCisgICAgICAg
ICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBG
QUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJl
ICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBUZXN0IHRoYXQgYSBub24tY29uc3RhbnQg
dGV4dHVyZSBvZmZzZXQgaXMgbm90IGFjY2VwdGVkIGZvciB0ZXh0dXJlUHJvak9mZnNldCB3aXRo
IGJpYXMuCisvLyBFU1NMIDMuMDAgc2VjdGlvbiA4LjgKK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJU
ZXN0LCBUZXh0dXJlUHJvak9mZnNldE5vbkNvbnN0KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xv
cjtcbiIKKyAgICAgICAgInVuaWZvcm0gdmVjNCB1X3RleENvb3JkO1xuIgorICAgICAgICAidW5p
Zm9ybSBtZWRpdW1wIHNhbXBsZXIzRCB1X3NhbXBsZXI7XG4iCisgICAgICAgICJ1bmlmb3JtIGlu
dCB4O1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAg
IiAgIG15X0ZyYWdDb2xvciA9IHRleHR1cmVQcm9qT2Zmc2V0KHVfc2FtcGxlciwgdV90ZXhDb29y
ZCwgaXZlYzMoeCwgMywgLTgpLCAwLjApO1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29t
cGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29t
cGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAg
IH0KK30KKworLy8gVGVzdCB0aGF0IGFuIG91dC1vZi1yYW5nZSB0ZXh0dXJlIG9mZnNldCBpcyBu
b3QgYWNjZXB0ZWQuCisvLyBHTEVTIDMuMC40IHNlY3Rpb24gMy44LjEwIHNwZWNpZmllcyB0aGF0
IG91dC1vZi1yYW5nZSBvZmZzZXQgaGFzIHVuZGVmaW5lZCBiZWhhdmlvci4KK1RFU1RfRihNYWxm
b3JtZWRTaGFkZXJUZXN0LCBUZXh0dXJlTG9kT2Zmc2V0T3V0T2ZSYW5nZSkKK3sKKyAgICBjb25z
dCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xu
IgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgdmVj
NCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzMgdV90ZXhDb29yZDtcbiIK
KyAgICAgICAgInVuaWZvcm0gbWVkaXVtcCBzYW1wbGVyM0QgdV9zYW1wbGVyO1xuIgorICAgICAg
ICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgIG15X0ZyYWdDb2xv
ciA9IHRleHR1cmVMb2RPZmZzZXQodV9zYW1wbGVyLCB1X3RleENvb3JkLCAwLjAsIGl2ZWMzKDAs
IDAsIDgpKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5n
KSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRl
ZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIFRlc3Qg
dGhhdCBkZWZhdWx0IHByZWNpc2lvbiBxdWFsaWZpZXIgZm9yIHVpbnQgaXMgbm90IGFjY2VwdGVk
LgorLy8gRVNTTCAzLjAwLjQgc2VjdGlvbiA0LjUuNDogT25seSBhbGxvd2VkIGZvciBmbG9hdCwg
aW50IGFuZCBzYW1wbGVyIHR5cGVzLgorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIERlZmF1
bHRQcmVjaXNpb25VaW50KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcg
PQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDtcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIHVpbnQ7XG4iCisgICAgICAg
ICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAg
ICAgICAie1xuIgorICAgICAgICAiICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLjApO1xuIgorICAg
ICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAg
ICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFp
bHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gVGVzdCB0aGF0IHNhbXBsZXIzRCBu
ZWVkcyB0byBiZSBwcmVjaXNpb24gcXVhbGlmaWVkLgorLy8gRVNTTCAzLjAwLjQgc2VjdGlvbiA0
LjUuNDogTmV3IEVTU0wgMy4wMCBzYW1wbGVyIHR5cGVzIGRvbid0IGhhdmUgcHJlZGVmaW5lZCBw
cmVjaXNpb24uCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgTm9QcmVjaXNpb25TYW1wbGVy
M0QpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIj
dmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgor
ICAgICAgICAidW5pZm9ybSBzYW1wbGVyM0QgcztcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0Zy
YWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAg
ICAgICIgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCk7XG4iCisgICAgICAgICJ9XG4iOworICAg
IGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNo
YWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9M
b2c7CisgICAgfQorfQorCisvLyBUZXN0IHRoYXQgdXNpbmcgYSBub24tY29uc3RhbnQgZXhwcmVz
c2lvbiBpbiBhIGZvciBsb29wIGluaXRpYWxpemVyIGlzIGZvcmJpZGRlbiBpbiBXZWJHTCAxLjAs
CisvLyBldmVuIHdoZW4gQU5HTEUgaXMgYWJsZSB0byBjb25zdGFudCBmb2xkIHRoZSBpbml0aWFs
aXplci4KKy8vIEVTU0wgMS4wMCBBcHBlbmRpeCBBLgorVEVTVF9GKE1hbGZvcm1lZFdlYkdMMVNo
YWRlclRlc3QsIE5vbkNvbnN0YW50TG9vcEluZGV4KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisg
ICAgICAgICJ1bmlmb3JtIGludCB1O1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAg
ICAgIntcbiIKKyAgICAgICAgIiAgICBmb3IgKGludCBpID0gKHRydWUgPyAxIDogdSk7IGkgPCA1
OyArK2kpIHtcbiIKKyAgICAgICAgIiAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjApO1xu
IgorICAgICAgICAiICAgIH1cbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hh
ZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9u
IHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisK
Ky8vIFJlZ3Jlc3Npb24gdGVzdCBmb3IgYW4gb2xkIGNyYXNoIGJ1ZyBpbiBBTkdMRS4KKy8vIEZv
ckxvb3BVbnJvbGwgdXNlZCB0byBjcmFzaCB3aGVuIGl0IGVuY291bnRlcmVkIGEgd2hpbGUgbG9v
cC4KK1RFU1RfRihVbnJvbGxGb3JMb29wc1Rlc3QsIFdoaWxlTG9vcCkKK3sKKyAgICBjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0O1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAg
IiAgICB3aGlsZSAodHJ1ZSkge1xuIgorICAgICAgICAiICAgICAgICBnbF9GcmFnQ29sb3IgPSB2
ZWM0KDAuMCk7XG4iCisgICAgICAgICIgICAgICAgIGJyZWFrO1xuIgorICAgICAgICAiICAgIH1c
biIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKCFjb21waWxlKHNoYWRlclN0cmluZykpCisgICAg
eworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQsIGV4cGVjdGlu
ZyBzdWNjZXNzICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBSZWdyZXNzaW9uIHRlc3Qg
Zm9yIGFuIG9sZCBjcmFzaCBidWcgaW4gQU5HTEUuCisvLyBGb3JMb29wVW5yb2xsIHVzZWQgdG8g
Y3Jhc2ggd2hlbiBpdCBlbmNvdW50ZXJlZCBhIGxvb3AgdGhhdCBkaWRuJ3QgZml0IHRoZSBFU1NM
IDEuMDAKKy8vIEFwcGVuZGl4IEEgbGltaXRhdGlvbnMuCitURVNUX0YoVW5yb2xsRm9yTG9vcHNU
ZXN0LCBVbmxpbWl0ZWRGb3JMb29wKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJT
dHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ2
b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGZvciAoO3RydWU7KSB7
XG4iCisgICAgICAgICIgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKKyAgICAg
ICAgIiAgICAgICAgYnJlYWs7XG4iCisgICAgICAgICIgICAgfVxuIgorICAgICAgICAifVxuIjsK
KyAgICBpZiAoIWNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8
PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCwgZXhwZWN0aW5nIHN1Y2Nlc3MgIiA8PCBtSW5m
b0xvZzsKKyAgICB9Cit9CisKKy8vIENoZWNrIHRoYXQgaW5kaWNlcyB0aGF0IGFyZSBub3QgaW50
ZWdlcnMgYXJlIHJlamVjdGVkLgorLy8gVGhlIGNoZWNrIHNob3VsZCBiZSBkb25lIGV2ZW4gaWYg
RVNTTCAxLjAwIEFwcGVuZGl4IEEgbGltaXRhdGlvbnMgYXJlIG5vdCBhcHBsaWVkLgorVEVTVF9G
KE1hbGZvcm1lZFNoYWRlclRlc3QsIE5vbkludGVnZXJJbmRleCkKK3sKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
O1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAg
ICBmbG9hdCBmWzNdO1xuIgorICAgICAgICAiICAgIGNvbnN0IGZsb2F0IGkgPSAyLjA7XG4iCisg
ICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChmW2ldKTtcbiIKKyAgICAgICAgIn1cbiI7
CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8
PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBt
SW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIEVTU0wxIHNoYWRlcnMgd2l0aCBhIGR1cGxpY2F0ZSBm
dW5jdGlvbiBwcm90b3R5cGUgc2hvdWxkIGJlIHJlamVjdGVkLgorLy8gRVNTTCAxLjAwLjE3IHNl
Y3Rpb24gNC4yLjcuCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgRHVwbGljYXRlUHJvdG90
eXBlRVNTTDEpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAg
ICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInZvaWQgZm9vKCk7XG4i
CisgICAgICAgICJ2b2lkIGZvbygpO1xuIgorICAgICAgICAidm9pZCBmb28oKSB7fVxuIgorICAg
ICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBnbF9GcmFn
Q29sb3IgPSB2ZWM0KDAuMCk7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNo
YWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlv
biBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQor
CisvLyBFU1NMMyBzaGFkZXJzIHdpdGggYSBkdXBsaWNhdGUgZnVuY3Rpb24gcHJvdG90eXBlIHNo
b3VsZCBiZSBhbGxvd2VkLgorLy8gRVNTTCAzLjAwLjQgc2VjdGlvbiA0LjIuMy4KK1RFU1RfRihN
YWxmb3JtZWRTaGFkZXJUZXN0LCBEdXBsaWNhdGVQcm90b3R5cGVFU1NMMykKK3sKKyAgICBjb25z
dCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xu
IgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgdmVj
NCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lkIGZvbygpO1xuIgorICAgICAgICAidm9p
ZCBmb28oKTtcbiIKKyAgICAgICAgInZvaWQgZm9vKCkge31cbiIKKyAgICAgICAgInZvaWQgbWFp
bigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgw
LjApO1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoIWNvbXBpbGUoc2hhZGVyU3RyaW5nKSkK
KyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCwgZXhw
ZWN0aW5nIHN1Y2Nlc3MgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIFNoYWRlcnMgd2l0
aCBhIGxvY2FsIGZ1bmN0aW9uIHByb3RvdHlwZSBzaG91bGQgYmUgcmVqZWN0ZWQuCisvLyBFU1NM
IDMuMDAuNCBzZWN0aW9uIDQuMi40LgorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIExvY2Fs
RnVuY3Rpb25Qcm90b3R5cGUpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmlu
ZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAg
ICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICB2b2lkIGZvbygp
O1xuIgorICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKKyAgICAgICAg
In1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZB
SUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUg
IiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIEVTU0wgMy4wMCBmcmFnbWVudCBzaGFkZXJz
IGNhbiBub3QgdXNlICNwcmFnbWEgU1RER0wgaW52YXJpYW50KGFsbCkuCisvLyBFU1NMIDMuMDAu
NCBzZWN0aW9uIDQuNi4xLiBEb2VzIG5vdCBhcHBseSB0byBvdGhlciB2ZXJzaW9ucyBvZiBFU1NM
LgorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIEVTU0wzMDBGcmFnbWVudEludmFyaWFudEFs
bCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2
ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAiI3ByYWdtYSBTVERHTCBpbnZhcmlhbnQoYWxsKVxu
IgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgdmVj
NCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xu
IgorICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKKyAgICAgICAgIn1c
biI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwo
KSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8
PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIEJ1aWx0LWluIGZ1bmN0aW9ucyBjYW4gYmUgb3Zl
cmxvYWRlZCBpbiBFU1NMIDEuMDAuCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgRVNTTDEw
MEJ1aWx0SW5GdW5jdGlvbk92ZXJsb2FkKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFk
ZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAg
ICJpbnQgc2luKGludCB4KVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIHJldHVybiBp
bnQoc2luKGZsb2F0KHgpKSk7XG4iCisgICAgICAgICJ9XG4iCisgICAgICAgICJ2b2lkIG1haW4o
KVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChzaW4o
MSkpOyIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKCFjb21waWxlKHNoYWRlclN0cmluZykpCisg
ICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQsIGV4cGVj
dGluZyBzdWNjZXNzICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBCdWlsdC1pbiBmdW5j
dGlvbnMgY2FuIG5vdCBiZSBvdmVybG9hZGVkIGluIEVTU0wgMy4wMC4KK1RFU1RfRihNYWxmb3Jt
ZWRTaGFkZXJUZXN0LCBFU1NMMzAwQnVpbHRJbkZ1bmN0aW9uT3ZlcmxvYWQpCit7CisgICAgY29u
c3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNc
biIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0IHZl
YzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAiaW50IHNpbihpbnQgeClcbiIKKyAgICAgICAg
IntcbiIKKyAgICAgICAgIiAgICByZXR1cm4gaW50KHNpbihmbG9hdCh4KSkpO1xuIgorICAgICAg
ICAifVxuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAg
IiAgIG15X0ZyYWdDb2xvciA9IHZlYzQoc2luKDEpKTsiCisgICAgICAgICJ9XG4iOworICAgIGlm
IChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRl
ciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7
CisgICAgfQorfQorCisvLyBNdWx0aXBseWluZyBhIDR4MiBtYXRyaXggd2l0aCBhIDR4MiBtYXRy
aXggc2hvdWxkIG5vdCB3b3JrLgorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIENvbXBvdW5k
TXVsdGlwbHlNYXRyaXhJZGVudGljYWxOb25TcXVhcmVEaW1lbnNpb25zKQoreworICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4i
CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0
IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4i
CisgICAgICAgICIgICBtYXQ0eDIgZm9vO1xuIgorICAgICAgICAiICAgZm9vICo9IG1hdDR4Mig0
LjApO1xuIgorICAgICAgICAiICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLjApO1xuIgorICAgICAg
ICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAg
RkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVy
ZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gTXVsdGlwbHlpbmcgYSBtYXRyaXggd2l0
aCAyIGNvbHVtbnMgYW5kIDQgcm93cyB3aXRoIGEgMngyIG1hdHJpeCBzaG91bGQgd29yay4KK1RF
U1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBDb21wb3VuZE11bHRpcGx5TWF0cml4VmFsaWROb25T
cXVhcmVEaW1lbnNpb25zKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcg
PQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAg
InZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICBtYXQyeDQgZm9vO1xu
IgorICAgICAgICAiICAgZm9vICo9IG1hdDJ4Mig0LjApO1xuIgorICAgICAgICAiICAgbXlfRnJh
Z0NvbG9yID0gdmVjNCgwLjApO1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoIWNvbXBpbGUo
c2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0
aW9uIGZhaWxlZCwgZXhwZWN0aW5nIHN1Y2Nlc3MgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisK
Ky8vIENvdmVycyBhIGJ1ZyB3aGVyZSB3ZSB3b3VsZCBzZXQgdGhlIGluY29ycmVjdCByZXN1bHQg
c2l6ZSBvbiBhbiBvdXQtb2YtYm91bmRzIHZlY3RvciBzd2l6emxlLgorVEVTVF9GKE1hbGZvcm1l
ZFNoYWRlclRlc3QsIE91dE9mQm91bmRzVmVjdG9yU3dpenpsZSkKK3sKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAg
ICAgIiAgIHZlYzIoMCkucXE7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNo
YWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlv
biBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQor
CisvLyBDb3ZlcnMgYSBidWcgd2hlcmUgc3RyYW5nZSBwcmVwcm9jZXNzb3IgZGVmaW5lcyBjb3Vs
ZCB0cmlnZ2VyIGFzc2VydHMuCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgRGVmaW5lV2l0
aFNlbWljb2xvbikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAg
ICAgICAgIiNkZWZpbmUgRGVmOyBoaWdocFxuIgorICAgICAgICAidW5pZm9ybSBEZWYgdmVjMiBh
O1xuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJ
TCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAi
IDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gQ292ZXJzIGEgYnVnIGluIG91ciBwYXJzaW5n
IG9mIG1hbGZvcm1lZCBzaGlmdCBwcmVwcm9jZXNzb3IgZXhwcmVzc2lvbnMuCitURVNUX0YoTWFs
Zm9ybWVkU2hhZGVyVGVzdCwgTGluZURpcmVjdGl2ZVVuZGVmaW5lZFNoaWZ0KQoreworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPSAiI2xpbmUgeCA8PCB5IjsKKyAgICBpZiAo
Y29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIg
Y29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwor
ICAgIH0KK30KKworLy8gQ292ZXJzIGEgYnVnIGluIG91ciBwYXJzaW5nIG9mIG1hbGZvcm1lZCBz
aGlmdCBwcmVwcm9jZXNzb3IgZXhwcmVzc2lvbnMuCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVz
dCwgTGluZURpcmVjdGl2ZU5lZ2F0aXZlU2hpZnQpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcg
JnNoYWRlclN0cmluZyA9ICIjbGluZSB4IDw8IC0xIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJT
dHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3Vj
Y2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8g
Z2xfTWF4SW1hZ2VVbml0cyBpcyBvbmx5IGF2YWlsYWJsZSBpbiBFUyAzLjEgc2hhZGVycy4KK1RF
U1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBNYXhJbWFnZVVuaXRzSW5FUzNTaGFkZXIpCit7Cisg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAz
MDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAi
b3V0IHZlYzQgbXlPdXRwdXQ7IgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAi
ICAgZmxvYXQgZmYgPSBmbG9hdChnbF9NYXhJbWFnZVVuaXRzKTtcbiIKKyAgICAgICAgIiAgIG15
T3V0cHV0ID0gdmVjNChmZik7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNo
YWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlv
biBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQor
CisvLyBzdHJ1Y3QgKz0gc3RydWN0IGlzIGFuIGludmFsaWQgb3BlcmF0aW9uLgorVEVTVF9GKE1h
bGZvcm1lZFNoYWRlclRlc3QsIFN0cnVjdENvbXBvdW5kQXNzaWduU3RydWN0KQoreworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVz
XG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2
ZWM0IG15T3V0cHV0O1xuIgorICAgICAgICAic3RydWN0IFMgeyBmbG9hdCBmb287IH07XG4iCisg
ICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBTIGEsIGI7XG4iCisgICAgICAg
ICIgICBhICs9IGI7XG4iCisgICAgICAgICIgICBteU91dHB1dCA9IHZlYzQoMCk7XG4iCisgICAg
ICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAg
ICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWls
dXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBzdHJ1Y3QgPT0gZGlmZmVyZW50IHN0
cnVjdCBpcyBhbiBpbnZhbGlkIG9wZXJhdGlvbi4KK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0
LCBTdHJ1Y3RFcURpZmZlcmVudFN0cnVjdCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hh
ZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgdmVjNCBteU91dHB1dDtcbiIKKyAg
ICAgICAgInN0cnVjdCBTIHsgZmxvYXQgZm9vOyB9O1xuIgorICAgICAgICAic3RydWN0IFMyIHsg
ZmxvYXQgZm9vYmFyOyB9O1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAi
ICAgUyBhO1xuIgorICAgICAgICAiICAgUzIgYjtcbiIKKyAgICAgICAgIiAgIGEgPT0gYjtcbiIK
KyAgICAgICAgIiAgIG15T3V0cHV0ID0gdmVjNCgwKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAg
aWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hh
ZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xv
ZzsKKyAgICB9Cit9CisKKy8vIENvbXB1dGUgc2hhZGVycyBhcmUgbm90IHN1cHBvcnRlZCBpbiB2
ZXJzaW9ucyBsb3dlciB0aGFuIDMxMC4KK1RFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVz
dCwgVmVyc2lvbjEwMCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0K
KyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94PTEp
IGluO1xuIgorICAgICAgICAie1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShz
aGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRp
b24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30K
KworLy8gQ29tcHV0ZSBzaGFkZXJzIGFyZSBub3Qgc3VwcG9ydGVkIGluIHZlcnNpb25zIGxvd2Vy
IHRoYW4gMzEwLgorVEVTVF9GKE1hbGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0LCBWZXJzaW9uMzAw
KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3Zl
cnNpb24gMzAwIGVzXG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAibGF5b3V0
KGxvY2FsX3NpemVfeD0xKSBpbjtcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIn1cbiI7Cisg
ICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAi
U2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5m
b0xvZzsKKyAgICB9Cit9CisKKy8vIENvbXB1dGUgc2hhZGVycyBzaG91bGQgaGF2ZSB3b3JrIGdy
b3VwIHNpemUgc3BlY2lmaWVkLiBIb3dldmVyLCBpdCBpcyBub3QgYSBjb21waWxlIHRpbWUgZXJy
b3IKKy8vIHRvIG5vdCBoYXZlIHRoZSBzaXplIHNwZWNpZmllZCwgYnV0IHJhdGhlciBhIGxpbmsg
dGltZSBvbmUuCisvLyBHTFNMIEVTIDMuMTAgUmV2aXNpb24gNCwgNC40LjEuMSBDb21wdXRlIFNo
YWRlciBJbnB1dHMKK1RFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCwgTm9Xb3JrR3Jv
dXBTaXplU3BlY2lmaWVkKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcg
PQorICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgor
ICAgICAgICAie1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoIWNvbXBpbGUoc2hhZGVyU3Ry
aW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxl
ZCwgZXhwZWN0aW5nIHN1Y2Nlc3MgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIFdvcmsg
Z3JvdXAgc2l6ZSBpcyBsZXNzIHRoYW4gMS4gSXQgc2hvdWxkIGJlIGF0IGxlYXN0IDEuCisvLyBH
TFNMIEVTIDMuMTAgUmV2aXNpb24gNCwgNy4xLjMgQ29tcHV0ZSBTaGFkZXIgU3BlY2lhbCBWYXJp
YWJsZXMKKy8vIFRoZSBzcGVjIGlzIG5vdCBjbGVhciB3aGV0aGVyIGhhdmluZyBhIGxvY2FsIHNp
emUgcXVhbGlmaWVyIGVxdWFsIHplcm8KKy8vIGlzIGNvcnJlY3QuCisvLyBUT0RPIChtcmFkZXYp
OiBBc2sgcGVvcGxlIGZyb20gS2hyb25vcyB0byBjbGFyaWZ5IHRoZSBzcGVjLgorVEVTVF9GKE1h
bGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0LCBXb3JrR3JvdXBTaXplVG9vU21hbGxYZGltZW5zaW9u
KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3Zl
cnNpb24gMzEwIGVzXG4iCisgICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94ID0gMCkgaW47XG4i
CisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAifVxuIjsK
KyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8
ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1J
bmZvTG9nOworICAgIH0KK30KKworLy8gV29yayBncm91cCBzaXplIGlzIGNvcnJlY3QgZm9yIHRo
ZSB4IGFuZCB5IGRpbWVuc2lvbnMsIGJ1dCBub3QgZm9yIHRoZSB6IGRpbWVuc2lvbi4KKy8vIEdM
U0wgRVMgMy4xMCBSZXZpc2lvbiA0LCA3LjEuMyBDb21wdXRlIFNoYWRlciBTcGVjaWFsIFZhcmlh
YmxlcworVEVTVF9GKE1hbGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0LCBXb3JrR3JvdXBTaXplVG9v
U21hbGxaRGltZW5zaW9uKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcg
PQorICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCisgICAgICAgICJsYXlvdXQobG9jYWxfc2l6
ZV94ID0gNCwgbG9jYWxfc2l6ZV95ID0gNiwgbG9jYWxfc2l6ZV96ID0gMCkgaW47XG4iCisgICAg
ICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAifVxuIjsKKyAgICBp
ZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFk
ZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9n
OworICAgIH0KK30KKworLy8gV29yayBncm91cCBzaXplIGlzIGJpZ2dlciB0aGFuIHRoZSBtaW5p
bXVtIGluIHRoZSB4IGRpbWVuc2lvbi4KKy8vIEdMU0wgRVMgMy4xMCBSZXZpc2lvbiA0LCA0LjQu
MS4xIENvbXB1dGUgU2hhZGVyIElucHV0cworVEVTVF9GKE1hbGZvcm1lZENvbXB1dGVTaGFkZXJU
ZXN0LCBXb3JrR3JvdXBTaXplVG9vQmlnWERpbWVuc2lvbikKK3sKKyAgICBjb25zdCBzdGQ6OnN0
cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgorICAgICAg
ICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDk5ODk4OTkpIGluO1xuIgorICAgICAgICAidm9pZCBt
YWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUo
c2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0
aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9
CisKKy8vIFdvcmsgZ3JvdXAgc2l6ZSBpcyBiaWdnZXIgdGhhbiB0aGUgbWluaW11bSBpbiB0aGUg
eSBkaW1lbnNpb24uCisvLyBHTFNMIEVTIDMuMTAgUmV2aXNpb24gNCwgNC40LjEuMSBDb21wdXRl
IFNoYWRlciBJbnB1dHMKK1RFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCwgV29ya0dy
b3VwU2l6ZVRvb0JpZ1lEaW1lbnNpb24pCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRl
clN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKKyAgICAgICAgImxheW91dChs
b2NhbF9zaXplX3ggPSA1LCBsb2NhbF9zaXplX3kgPSA5OTg5ODk5KSBpbjtcbiIKKyAgICAgICAg
InZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChj
b21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBj
b21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Cisg
ICAgfQorfQorCisvLyBXb3JrIGdyb3VwIHNpemUgaXMgZGVmaW5pdGVseSBiaWdnZXIgdGhhbiB0
aGUgbWluaW11bSBpbiB0aGUgeiBkaW1lbnNpb24uCisvLyBHTFNMIEVTIDMuMTAgUmV2aXNpb24g
NCwgNC40LjEuMSBDb21wdXRlIFNoYWRlciBJbnB1dHMKK1RFU1RfRihNYWxmb3JtZWRDb21wdXRl
U2hhZGVyVGVzdCwgV29ya0dyb3VwU2l6ZVRvb0JpZ1pEaW1lbnNpb24pCit7CisgICAgY29uc3Qg
c3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIK
KyAgICAgICAgImxheW91dChsb2NhbF9zaXplX3ggPSA1LCBsb2NhbF9zaXplX3kgPSA1LCBsb2Nh
bF9zaXplX3ogPSA5OTg5ODk5KSBpbjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAg
ICAgICJ7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykp
CisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQs
IGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBXb3JrIGdy
b3VwIHNpemUgc3BlY2lmaWVkIHRocm91Z2ggbWFjcm8gZXhwYW5zaW9uLgorVEVTVF9GKE1hbGZv
cm1lZENvbXB1dGVTaGFkZXJUZXN0LCBXb3JrR3JvdXBTaXplTWFjcm8pCit7CisgICAgY29uc3Qg
c3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIK
KyAgICAgICAgIiNkZWZpbmUgTVlERUYoeCkgeCIKKyAgICAgICAgImxheW91dChsb2NhbF9zaXpl
X3ggPSBNWURFRigxMjcpKSBpbjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAg
ICJ7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmICghY29tcGlsZShzaGFkZXJTdHJpbmcpKQor
ICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLCBleHBl
Y3Rpbmcgc3VjY2VzcyAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gV29yayBncm91cCBz
aXplIHNwZWNpZmllZCBhcyBhbiB1bnNpZ25lZCBpbnRlZ2VyLgorVEVTVF9GKE1hbGZvcm1lZENv
bXB1dGVTaGFkZXJUZXN0LCBXb3JrR3JvdXBTaXplVW5zaWduZWRJbnRlZ2VyKQoreworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzEwIGVz
XG4iCisgICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94ID0gMTIzdSkgaW47XG4iCisgICAgICAg
ICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAo
IWNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVy
IGNvbXBpbGF0aW9uIGZhaWxlZCwgZXhwZWN0aW5nIHN1Y2Nlc3MgIiA8PCBtSW5mb0xvZzsKKyAg
ICB9Cit9CisKKy8vIFdvcmsgZ3JvdXAgc2l6ZSBzcGVjaWZpZWQgaW4gaGV4YWRlY2ltYWwuCitU
RVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIFdvcmtHcm91cFNpemVIZXhhZGVjaW1h
bCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2
ZXJzaW9uIDMxMCBlc1xuIgorICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDB4M0EpIGlu
O1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIn1c
biI7CisgICAgaWYgKCFjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlM
KCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQsIGV4cGVjdGluZyBzdWNjZXNzICIgPDwg
bUluZm9Mb2c7CisgICAgfQorfQorCisvLyBsb2NhbF9zaXplX3ggaXMgLTEgaW4gaGV4YWRlY2lt
YWwgZm9ybWF0LgorLy8gLTEgaXMgdXNlZCBhcyB1bnNwZWNpZmllZCB2YWx1ZSBpbiB0aGUgVExh
eW91dFF1YWxpZmllciBzdHJ1Y3R1cmUuCitURVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRl
c3QsIFdvcmtHcm91cFNpemVNaW51c09uZUhleGFkZWNpbWFsKQoreworICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCisgICAg
ICAgICJsYXlvdXQobG9jYWxfc2l6ZV94ID0gMHhGRkZGRkZGRikgaW47XG4iCisgICAgICAgICJ2
b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29t
cGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29t
cGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAg
IH0KK30KKworLy8gV29yayBncm91cCBzaXplIHNwZWNpZmllZCBpbiBvY3RhbC4KK1RFU1RfRihN
YWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCwgV29ya0dyb3VwU2l6ZU9jdGFsKQoreworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzEwIGVz
XG4iCisgICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94ID0gMDEzKSBpbjtcbiIKKyAgICAgICAg
InZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmICgh
Y29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIg
Y29tcGlsYXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2VzcyAiIDw8IG1JbmZvTG9nOworICAg
IH0KK30KKworLy8gV29yayBncm91cCBzaXplIGlzIG5lZ2F0aXZlLiBJdCBpcyBzcGVjaWZpZWQg
aW4gaGV4YWRlY2ltYWwuCitURVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIFdvcmtH
cm91cFNpemVOZWdhdGl2ZUhleGFkZWNpbWFsKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZz
aGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCisgICAgICAgICJsYXlv
dXQobG9jYWxfc2l6ZV94ID0gMHhGRkZGRkZFQykgaW47XG4iCisgICAgICAgICJ2b2lkIG1haW4o
KVxuIgorICAgICAgICAie1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFk
ZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24g
c3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKwor
Ly8gTXVsdGlwbGUgd29yayBncm91cCBsYXlvdXQgcXVhbGlmaWVycyB3aXRoIGRpZmZlcmluZyB2
YWx1ZXMuCisvLyBHTFNMIEVTIDMuMTAgUmV2aXNpb24gNCwgNC40LjEuMSBDb21wdXRlIFNoYWRl
ciBJbnB1dHMKK1RFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCwgRGlmZmVyaW5nTGF5
b3V0UXVhbGlmaWVycykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0K
KyAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgorICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVf
eCA9IDUsIGxvY2FsX3NpemVfeCA9IDYpIGluO1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIK
KyAgICAgICAgIntcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3Ry
aW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2Nl
ZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIE11
bHRpcGxlIHdvcmsgZ3JvdXAgaW5wdXQgdmFyaWFibGVzIHdpdGggZGlmZmVyaW5nIGxvY2FsIHNp
emUgdmFsdWVzLgorLy8gR0xTTCBFUyAzLjEwIFJldmlzaW9uIDQsIDQuNC4xLjEgQ29tcHV0ZSBT
aGFkZXIgSW5wdXRzCitURVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIE11bHRpcGxl
SW5wdXRWYXJpYWJsZXNEaWZmZXJpbmdMb2NhbFNpemUpCit7CisgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKKyAgICAgICAg
ImxheW91dChsb2NhbF9zaXplX3ggPSA1LCBsb2NhbF9zaXplX3kgPSA2KSBpbjtcbiIKKyAgICAg
ICAgImxheW91dChsb2NhbF9zaXplX3ggPSA1LCBsb2NhbF9zaXplX3kgPSA3KSBpbjtcbiIKKyAg
ICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICJ9XG4iOworICAg
IGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNo
YWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9M
b2c7CisgICAgfQorfQorCisvLyBNdWx0aXBsZSB3b3JrIGdyb3VwIGlucHV0IHZhcmlhYmxlcyB3
aXRoIGRpZmZlcmluZyBsb2NhbCBzaXplIHZhbHVlcy4KKy8vIEdMU0wgRVMgMy4xMCBSZXZpc2lv
biA0LCA0LjQuMS4xIENvbXB1dGUgU2hhZGVyIElucHV0cworVEVTVF9GKE1hbGZvcm1lZENvbXB1
dGVTaGFkZXJUZXN0LCBNdWx0aXBsZUlucHV0VmFyaWFibGVzRGlmZmVyaW5nTG9jYWxTaXplMikK
K3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJz
aW9uIDMxMCBlc1xuIgorICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDUpIGluO1xuIgor
ICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDUsIGxvY2FsX3NpemVfeSA9IDcpIGluO1xu
IgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIn1cbiI7
CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8
PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBt
SW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIE11bHRpcGxlIHdvcmsgZ3JvdXAgaW5wdXQgdmFyaWFi
bGVzIHdpdGggdGhlIHNhbWUgbG9jYWwgc2l6ZSB2YWx1ZXMuIEl0IHNob3VsZCBjb21waWxlLgor
Ly8gR0xTTCBFUyAzLjEwIFJldmlzaW9uIDQsIDQuNC4xLjEgQ29tcHV0ZSBTaGFkZXIgSW5wdXRz
CitURVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIE11bHRpcGxlSW5wdXRWYXJpYWJs
ZXNTYW1lTG9jYWxTaXplKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcg
PQorICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCisgICAgICAgICJsYXlvdXQobG9jYWxfc2l6
ZV94ID0gNSwgbG9jYWxfc2l6ZV95ID0gNikgaW47XG4iCisgICAgICAgICJsYXlvdXQobG9jYWxf
c2l6ZV94ID0gNSwgbG9jYWxfc2l6ZV95ID0gNikgaW47XG4iCisgICAgICAgICJ2b2lkIG1haW4o
KVxuIgorICAgICAgICAie1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoIWNvbXBpbGUoc2hh
ZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9u
IGZhaWxlZCwgZXhwZWN0aW5nIHN1Y2Nlc3MgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8v
IE11bHRpcGxlIHdvcmsgZ3JvdXAgaW5wdXQgdmFyaWFibGVzIHdpdGggdGhlIHNhbWUgbG9jYWwg
c2l6ZSB2YWx1ZXMuIEl0IHNob3VsZCBjb21waWxlLgorLy8gU2luY2UgdGhlIGRlZmF1bHQgdmFs
dWUgaXMgMSwgaXQgc2hvdWxkIGNvbXBpbGUuCisvLyBHTFNMIEVTIDMuMTAgUmV2aXNpb24gNCwg
NC40LjEuMSBDb21wdXRlIFNoYWRlciBJbnB1dHMKK1RFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hh
ZGVyVGVzdCwgTXVsdGlwbGVJbnB1dFZhcmlhYmxlc1NhbWVMb2NhbFNpemUyKQoreworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzEwIGVz
XG4iCisgICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94ID0gNSkgaW47XG4iCisgICAgICAgICJs
YXlvdXQobG9jYWxfc2l6ZV94ID0gNSwgbG9jYWxfc2l6ZV95ID0gMSkgaW47XG4iCisgICAgICAg
ICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAo
IWNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVy
IGNvbXBpbGF0aW9uIGZhaWxlZCwgZXhwZWN0aW5nIHN1Y2Nlc3MgIiA8PCBtSW5mb0xvZzsKKyAg
ICB9Cit9CisKKy8vIE11bHRpcGxlIHdvcmsgZ3JvdXAgaW5wdXQgdmFyaWFibGVzIHdpdGggdGhl
IHNhbWUgbG9jYWwgc2l6ZSB2YWx1ZXMuIEl0IHNob3VsZCBjb21waWxlLgorLy8gU2luY2UgdGhl
IGRlZmF1bHQgdmFsdWUgaXMgMSwgaXQgc2hvdWxkIGNvbXBpbGUuCisvLyBHTFNMIEVTIDMuMTAg
UmV2aXNpb24gNCwgNC40LjEuMSBDb21wdXRlIFNoYWRlciBJbnB1dHMKK1RFU1RfRihNYWxmb3Jt
ZWRDb21wdXRlU2hhZGVyVGVzdCwgTXVsdGlwbGVJbnB1dFZhcmlhYmxlc1NhbWVMb2NhbFNpemUz
KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3Zl
cnNpb24gMzEwIGVzXG4iCisgICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94ID0gNSwgbG9jYWxf
c2l6ZV95ID0gMSkgaW47XG4iCisgICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94ID0gNSkgaW47
XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAifVxu
IjsKKyAgICBpZiAoIWNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwo
KSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCwgZXhwZWN0aW5nIHN1Y2Nlc3MgIiA8PCBt
SW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIFNwZWNpZnlpbmcgcm93X21ham9yIHF1YWxpZmllciBp
biBhIHdvcmsgZ3JvdXAgc2l6ZSBsYXlvdXQuCisvLyBHTFNMIEVTIDMuMTAgUmV2aXNpb24gNCwg
NC40LjEuMSBDb21wdXRlIFNoYWRlciBJbnB1dHMKK1RFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hh
ZGVyVGVzdCwgUm93TWFqb3JJbkNvbXB1dGVJbnB1dExheW91dCkKK3sKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgorICAg
ICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDUsIHJvd19tYWpvcikgaW47XG4iCisgICAgICAg
ICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAo
Y29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIg
Y29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwor
ICAgIH0KK30KKworLy8gbG9jYWwgc2l6ZSBsYXlvdXQgY2FuIGJlIHVzZWQgb25seSB3aXRoIGNv
bXB1dGUgaW5wdXQgdmFyaWFibGVzCisvLyBHTFNMIEVTIDMuMTAgUmV2aXNpb24gNCwgNC40LjEu
MSBDb21wdXRlIFNoYWRlciBJbnB1dHMKK1RFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVz
dCwgVW5pZm9ybUNvbXB1dGVJbnB1dExheW91dCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAm
c2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgorICAgICAgICAibGF5
b3V0KGxvY2FsX3NpemVfeCA9IDUpIHVuaWZvcm07XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxu
IgorICAgICAgICAie1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJT
dHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3Vj
Y2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8g
bG9jYWwgc2l6ZSBsYXlvdXQgY2FuIGJlIHVzZWQgb25seSB3aXRoIGNvbXB1dGUgaW5wdXQgdmFy
aWFibGVzCisvLyBHTFNMIEVTIDMuMTAgUmV2aXNpb24gNCwgNC40LjEuMSBDb21wdXRlIFNoYWRl
ciBJbnB1dHMKK1RFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCwgVW5pZm9ybUJ1ZmZl
ckNvbXB1dGVJbnB1dExheW91dCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3Ry
aW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgorICAgICAgICAibGF5b3V0KGxvY2Fs
X3NpemVfeCA9IDUpIHVuaWZvcm0gU29tZUJ1ZmZlciB7IHZlYzQgc29tZXRoaW5nOyB9O1xuIgor
ICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIn1cbiI7Cisg
ICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAi
U2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5m
b0xvZzsKKyAgICB9Cit9CisKKy8vIGxvY2FsIHNpemUgbGF5b3V0IGNhbiBiZSB1c2VkIG9ubHkg
d2l0aCBjb21wdXRlIGlucHV0IHZhcmlhYmxlcworLy8gR0xTTCBFUyAzLjEwIFJldmlzaW9uIDQs
IDQuNC4xLjEgQ29tcHV0ZSBTaGFkZXIgSW5wdXRzCitURVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNo
YWRlclRlc3QsIFN0cnVjdENvbXB1dGVJbnB1dExheW91dCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0
cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgorICAgICAg
ICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDUpIHN0cnVjdCBTb21lQnVmZmVyIHsgdmVjNCBzb21l
dGhpbmc7IH07XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAg
ICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAg
ICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFp
bHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gbG9jYWwgc2l6ZSBsYXlvdXQgY2Fu
IGJlIHVzZWQgb25seSB3aXRoIGNvbXB1dGUgaW5wdXQgdmFyaWFibGVzCisvLyBHTFNMIEVTIDMu
MTAgUmV2aXNpb24gNCwgNC40LjEuMSBDb21wdXRlIFNoYWRlciBJbnB1dHMKK1RFU1RfRihNYWxm
b3JtZWRDb21wdXRlU2hhZGVyVGVzdCwgU3RydWN0Qm9keUNvbXB1dGVJbnB1dExheW91dCkKK3sK
KyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9u
IDMxMCBlc1xuIgorICAgICAgICAic3RydWN0IFMge1xuIgorICAgICAgICAiICAgbGF5b3V0KGxv
Y2FsX3NpemVfeCA9IDEyKSB2ZWM0IGZvbztcbiIKKyAgICAgICAgIn07XG4iCisgICAgICAgICJ2
b2lkIG1haW4oKSIKKyAgICAgICAgInsiCisgICAgICAgICJ9IjsKKyAgICBpZiAoY29tcGlsZShz
aGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRp
b24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30K
KworLy8gbG9jYWwgc2l6ZSBsYXlvdXQgY2FuIGJlIHVzZWQgb25seSB3aXRoIGNvbXB1dGUgaW5w
dXQgdmFyaWFibGVzCisvLyBHTFNMIEVTIDMuMTAgUmV2aXNpb24gNCwgNC40LjEuMSBDb21wdXRl
IFNoYWRlciBJbnB1dHMKK1RFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCwgVHlwZUNv
bXB1dGVJbnB1dExheW91dCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5n
ID0KKyAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgorICAgICAgICAibGF5b3V0KGxvY2FsX3Np
emVfeCA9IDUpIHZlYzQ7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xu
IgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsK
KyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3Rp
bmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gSW52YWxpZCB1c2Ugb2Yg
dGhlIG91dCBzdG9yYWdlIHF1YWxpZmllciBpbiBhIGNvbXB1dGUgc2hhZGVyLgorLy8gR0xTTCBF
UyAzLjEwIFJldmlzaW9uIDQsIDQuNC4xLjEgQ29tcHV0ZSBTaGFkZXIgSW5wdXRzCitURVNUX0Yo
TWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIEludmFsaWRPdXRTdG9yYWdlUXVhbGlmaWVyKQor
eworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNp
b24gMzEwIGVzXG4iCisgICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94ID0gMTUpIGluO1xuIgor
ICAgICAgICAib3V0IHZlYzQgbXlPdXRwdXQ7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4i
CisgICAgICAgICJ9XG4iOworCisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7
CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0
aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIEludmFsaWQgdXNlIG9m
IHRoZSBvdXQgc3RvcmFnZSBxdWFsaWZpZXIgaW4gYSBjb21wdXRlIHNoYWRlci4KKy8vIEdMU0wg
RVMgMy4xMCBSZXZpc2lvbiA0LCA0LjQuMS4xIENvbXB1dGUgU2hhZGVyIElucHV0cworVEVTVF9G
KE1hbGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0LCBJbnZhbGlkT3V0U3RvcmFnZVF1YWxpZmllcjIp
Cit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVy
c2lvbiAzMTAgZXNcbiIKKyAgICAgICAgImxheW91dChsb2NhbF9zaXplX3ggPSAxNSkgaW47XG4i
CisgICAgICAgICJvdXQgbXlPdXRwdXQ7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisg
ICAgICAgICJ9XG4iOworCisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7Cisg
ICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5n
IGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIEludmFsaWQgdXNlIG9mIHRo
ZSBpbiBzdG9yYWdlIHF1YWxpZmllci4gQ2FuIGJlIG9ubHkgdXNlZCB0byBkZXNjcmliZSB0aGUg
bG9jYWwgYmxvY2sgc2l6ZS4KKy8vIEdMU0wgRVMgMy4xMCBSZXZpc2lvbiA0LCA0LjQuMS4xIENv
bXB1dGUgU2hhZGVyIElucHV0cworVEVTVF9GKE1hbGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0LCBJ
bnZhbGlkSW5TdG9yYWdlUXVhbGlmaWVyKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFk
ZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCisgICAgICAgICJsYXlvdXQo
bG9jYWxfc2l6ZV94ID0gMTUpIGluO1xuIgorICAgICAgICAiaW4gdmVjNCBteUlucHV0O1xuIgor
ICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAifVxuIjsKKworICAgIGlmIChjb21w
aWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21w
aWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAg
fQorfQorCisvLyBJbnZhbGlkIHVzZSBvZiB0aGUgaW4gc3RvcmFnZSBxdWFsaWZpZXIuIENhbiBi
ZSBvbmx5IHVzZWQgdG8gZGVzY3JpYmUgdGhlIGxvY2FsIGJsb2NrIHNpemUuCisvLyBUaGUgdGVz
dCBjaGVja3MgYSBkaWZmZXJlbnQgcGFydCBvZiB0aGUgR0xTTCBncmFtbWFyIHRoYW4gd2hhdCBJ
bnZhbGlkSW5TdG9yYWdlUXVhbGlmaWVyIGNoZWNrcy4KKy8vIEdMU0wgRVMgMy4xMCBSZXZpc2lv
biA0LCA0LjQuMS4xIENvbXB1dGUgU2hhZGVyIElucHV0cworVEVTVF9GKE1hbGZvcm1lZENvbXB1
dGVTaGFkZXJUZXN0LCBJbnZhbGlkSW5TdG9yYWdlUXVhbGlmaWVyMikKK3sKKyAgICBjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgor
ICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDE1KSBpbjtcbiIKKyAgICAgICAgImluIG15
SW5wdXQ7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICJ9XG4iOworCisg
ICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAi
U2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5m
b0xvZzsKKyAgICB9Cit9CisKKy8vIFRoZSBsb2NhbF9zaXplIGxheW91dCBxdWFsaWZpZXIgaXMg
b25seSBhdmFpbGFibGUgaW4gY29tcHV0ZSBzaGFkZXJzLgorVEVTVF9GKE1hbGZvcm1lZFZlcnRl
eFNoYWRlckdMRVMzMVRlc3QsIEludmFsaWRVc2VPZkxvY2FsU2l6ZVgpCit7CisgICAgY29uc3Qg
c3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIK
KyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAibGF5b3V0KGxv
Y2FsX3NpemVfeCA9IDE1KSBpbiB2ZWM0IG15SW5wdXQ7XG4iCisgICAgICAgICJvdXQgdmVjNCBt
eU91dHB1dDtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIG15T3V0
cHV0ID0gbXlJbnB1dDtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBpZiAoY29tcGlsZShzaGFk
ZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24g
c3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKwor
Ly8gVGhlIGxvY2FsX3NpemUgbGF5b3V0IHF1YWxpZmllciBpcyBvbmx5IGF2YWlsYWJsZSBpbiBj
b21wdXRlIHNoYWRlcnMuCitURVNUX0YoTWFsZm9ybWVkRnJhZ21lbnRTaGFkZXJHTEVTMzFUZXN0
LCBJbnZhbGlkVXNlT2ZMb2NhbFNpemVYKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFk
ZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCisgICAgICAgICJwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgImxheW91dChsb2NhbF9zaXplX3ggPSAxNSkg
aW4gdmVjNCBteUlucHV0O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlPdXRwdXQ7XG4iCisgICAg
ICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBteU91dHB1dCA9IG15SW5wdXQ7XG4i
CisgICAgICAgICJ9XG4iOworCisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7
CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0
aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIEl0IGlzIGEgY29tcGls
ZSB0aW1lIGVycm9yIHRvIHVzZSB0aGUgZ2xfV29ya0dyb3VwU2l6ZSBjb25zdGFudCBpZgorLy8g
dGhlIGxvY2FsIHNpemUgaGFzIG5vdCBiZWVuIGRlY2xhcmVkIHlldC4KKy8vIEdMU0wgRVMgMy4x
MCBSZXZpc2lvbiA0LCA3LjEuMyBDb21wdXRlIFNoYWRlciBTcGVjaWFsIFZhcmlhYmxlcworVEVT
VF9GKE1hbGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0LCBJbnZhbGlkVXNhZ2VPZldvcmtHcm91cFNp
emUpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIj
dmVyc2lvbiAzMTAgZXNcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4i
CisgICAgICAgICIgICB1dmVjMyBXb3JrR3JvdXBTaXplID0gZ2xfV29ya0dyb3VwU2l6ZTtcbiIK
KyAgICAgICAgIn1cbiIKKyAgICAgICAgImxheW91dChsb2NhbF9zaXplX3ggPSAxMikgaW47XG4i
OworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkg
PDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwg
bUluZm9Mb2c7CisgICAgfQorfQorCisvLyBUaGUgdGVzdCBjb3ZlcnMgdGhlIGNvbXB1dGUgc2hh
ZGVyIGJ1aWx0LWluIHZhcmlhYmxlcyBhbmQgY29uc3RhbnRzLgorVEVTVF9GKE1hbGZvcm1lZENv
bXB1dGVTaGFkZXJUZXN0LCBDb3JyZWN0VXNhZ2VPZkNvbXB1dGVCdWlsdGlucykKK3sKKyAgICBj
b25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMxMCBl
c1xuIgorICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDEyKSBpbjtcbiIKKyAgICAgICAg
InZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICB1dmVjMyBOdW1Xb3Jr
R3JvdXBzID0gZ2xfTnVtV29ya0dyb3VwcztcbiIKKyAgICAgICAgIiAgIHV2ZWMzIFdvcmtHcm91
cFNpemUgPSBnbF9Xb3JrR3JvdXBTaXplO1xuIgorICAgICAgICAiICAgdXZlYzMgV29ya0dyb3Vw
SUQgPSBnbF9Xb3JrR3JvdXBJRDtcbiIKKyAgICAgICAgIiAgIHV2ZWMzIEdsb2JhbEludm9jYXRp
b25JRCA9IGdsX0dsb2JhbEludm9jYXRpb25JRDtcbiIKKyAgICAgICAgIiAgIHV2ZWMzIExvY2Fs
SW52b2NhdGlvbklEID0gZ2xfTG9jYWxJbnZvY2F0aW9uSUQ7XG4iCisgICAgICAgICIgICB1aW50
IExvY2FsSW52b2NhdGlvbkluZGV4ID0gZ2xfTG9jYWxJbnZvY2F0aW9uSW5kZXg7XG4iCisgICAg
ICAgICJ9XG4iOworICAgIGlmICghY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAg
ICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2Vz
cyAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gSXQgaXMgaWxsZWdhbCB0byB3cml0ZSB0
byBhIHNwZWNpYWwgdmFyaWFibGUuCitURVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3Qs
IFNwZWNpYWxWYXJpYWJsZU51bVdvcmtHcm91cHMpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcg
JnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKKyAgICAgICAgImxh
eW91dChsb2NhbF9zaXplX3ggPSAxMikgaW47XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgor
ICAgICAgICAie1xuIgorICAgICAgICAiICAgZ2xfTnVtV29ya0dyb3VwcyA9IHV2ZWMzKDEpOyBc
biIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7
CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0
aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIEl0IGlzIGlsbGVnYWwg
dG8gd3JpdGUgdG8gYSBzcGVjaWFsIHZhcmlhYmxlLgorVEVTVF9GKE1hbGZvcm1lZENvbXB1dGVT
aGFkZXJUZXN0LCBTcGVjaWFsVmFyaWFibGVXb3JrR3JvdXBJRCkKK3sKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgorICAg
ICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDEyKSBpbjtcbiIKKyAgICAgICAgInZvaWQgbWFp
bigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICBnbF9Xb3JrR3JvdXBJRCA9IHV2ZWMz
KDEpOyBcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkK
KyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwg
ZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIEl0IGlzIGls
bGVnYWwgdG8gd3JpdGUgdG8gYSBzcGVjaWFsIHZhcmlhYmxlLgorVEVTVF9GKE1hbGZvcm1lZENv
bXB1dGVTaGFkZXJUZXN0LCBTcGVjaWFsVmFyaWFibGVMb2NhbEludm9jYXRpb25JRCkKK3sKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMx
MCBlc1xuIgorICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDEyKSBpbjtcbiIKKyAgICAg
ICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICBnbF9Mb2NhbElu
dm9jYXRpb25JRCA9IHV2ZWMzKDEpOyBcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBp
bGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBp
bGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9
Cit9CisKKy8vIEl0IGlzIGlsbGVnYWwgdG8gd3JpdGUgdG8gYSBzcGVjaWFsIHZhcmlhYmxlLgor
VEVTVF9GKE1hbGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0LCBTcGVjaWFsVmFyaWFibGVHbG9iYWxJ
bnZvY2F0aW9uSUQpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Cisg
ICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKKyAgICAgICAgImxheW91dChsb2NhbF9zaXplX3gg
PSAxMikgaW47XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAg
ICAgICAiICAgZ2xfR2xvYmFsSW52b2NhdGlvbklEID0gdXZlYzMoMSk7IFxuIgorICAgICAgICAi
fVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJ
TCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAi
IDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gSXQgaXMgaWxsZWdhbCB0byB3cml0ZSB0byBh
IHNwZWNpYWwgdmFyaWFibGUuCitURVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIFNw
ZWNpYWxWYXJpYWJsZUxvY2FsSW52b2NhdGlvbkluZGV4KQoreworICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCisgICAgICAg
ICJsYXlvdXQobG9jYWxfc2l6ZV94ID0gMTIpIGluO1xuIgorICAgICAgICAidm9pZCBtYWluKClc
biIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgIGdsX0xvY2FsSW52b2NhdGlvbkluZGV4ID0g
MTsgXG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisg
ICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4
cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBJdCBpcyBpbGxl
Z2FsIHRvIHdyaXRlIHRvIGEgc3BlY2lhbCB2YXJpYWJsZS4KK1RFU1RfRihNYWxmb3JtZWRDb21w
dXRlU2hhZGVyVGVzdCwgU3BlY2lhbFZhcmlhYmxlV29ya0dyb3VwU2l6ZSkKK3sKKyAgICBjb25z
dCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xu
IgorICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDEyKSBpbjtcbiIKKyAgICAgICAgInZv
aWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICBnbF9Xb3JrR3JvdXBTaXpl
ID0gdXZlYzMoMSk7IFxuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoY29tcGlsZShzaGFkZXJT
dHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3Vj
Y2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8g
SXQgaXMgaWxsZWdhbCB0byBhcHBseSBhbiB1bmFyeSBvcGVyYXRvciB0byBhIHNhbXBsZXIuCitU
RVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgU2FtcGxlclVuYXJ5T3BlcmF0b3IpCit7CisgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHM7XG4iCisgICAgICAg
ICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgLXM7XG4iCisgICAg
ICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDApO1xuIgorICAgICAgICAifVxuIjsKKyAgICBp
ZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFk
ZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9n
OworICAgIH0KK30KKworLy8gSW52YXJpYW50IGNhbm5vdCBiZSB1c2VkIHdpdGggYSB3b3JrIGdy
b3VwIHNpemUgZGVjbGFyYXRpb24uCitURVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3Qs
IEludmFyaWFudEJsb2NrU2l6ZSkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3Ry
aW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgorICAgICAgICAiaW52YXJpYW50IGxh
eW91dChsb2NhbF9zaXplX3ggPSAxNSkgaW47XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4i
CisgICAgICAgICJ9XG4iOworCisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7
CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0
aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIEludmFyaWFudCBjYW5u
b3QgYmUgdXNlZCB3aXRoIGEgbm9uLW91dHB1dCB2YXJpYWJsZSBpbiBFU1NMMy4KK1RFU1RfRihN
YWxmb3JtZWRTaGFkZXJUZXN0LCBJbnZhcmlhbnROb25PdXB1dCkKK3sKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAg
ICAgICAiaW52YXJpYW50IGludCB2YWx1ZTtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIK
KyAgICAgICAgIn1cbiI7CisKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorICAgIHsK
KyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3Rp
bmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gSW52YXJpYW50IGRlY2xh
cmF0aW9uIHNob3VsZCBmb2xsb3cgdGhlIGZvbGxvd2luZyBmb3JtYXQgImludmFyaWFudCA8b3V0
IHZhcmlhYmxlIG5hbWU+Ii4KKy8vIFRlc3QgaGF2aW5nIGFuIGluY29ycmVjdCBxdWFsaWZpZXIg
aW4gdGhlIGludmFyaWFudCBkZWNsYXJhdGlvbi4KK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0
LCBJbnZhcmlhbnREZWNsYXJhdGlvbldpdGhTdG9yYWdlUXVhbGlmaWVyKQoreworICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4i
CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0
IGZvbztcbiIKKyAgICAgICAgImludmFyaWFudCBjZW50cm9pZCBmb287XG4iCisgICAgICAgICJ2
b2lkIG1haW4oKSB7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0
cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNj
ZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBJ
bnZhcmlhbnQgZGVjbGFyYXRpb24gc2hvdWxkIGZvbGxvdyB0aGUgZm9sbG93aW5nIGZvcm1hdCAi
aW52YXJpYW50IDxvdXQgdmFyaWFibGUgbmFtZT4iLgorLy8gVGVzdCBoYXZpbmcgYW4gaW5jb3Jy
ZWN0IHByZWNpc2lvbiBxdWFsaWZpZXIgaW4gdGhlIGludmFyaWFudCBkZWNsYXJhdGlvbi4KK1RF
U1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBJbnZhcmlhbnREZWNsYXJhdGlvbldpdGhQcmVjaXNp
b25RdWFsaWZpZXIpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Cisg
ICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0O1xuIgorICAgICAgICAib3V0IHZlYzQgZm9vO1xuIgorICAgICAgICAiaW52YXJpYW50IGhp
Z2hwIGZvbztcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIn1cbiI7Cisg
ICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAi
U2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5m
b0xvZzsKKyAgICB9Cit9CisKKy8vIEludmFyaWFudCBkZWNsYXJhdGlvbiBzaG91bGQgZm9sbG93
IHRoZSBmb2xsb3dpbmcgZm9ybWF0ICJpbnZhcmlhbnQgPG91dCB2YXJpYWJsZSBuYW1lPiIuCisv
LyBUZXN0IGhhdmluZyBhbiBpbmNvcnJlY3QgbGF5b3V0IHF1YWxpZmllciBpbiB0aGUgaW52YXJp
YW50IGRlY2xhcmF0aW9uLgorVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIEludmFyaWFudERl
Y2xhcmF0aW9uV2l0aExheW91dFF1YWxpZmllcikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAm
c2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgdmVjNCBmb287XG4iCisgICAg
ICAgICJpbnZhcmlhbnQgbGF5b3V0KGxvY2F0aW9uPTApIGZvbztcbiIKKyAgICAgICAgInZvaWQg
bWFpbigpIHtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5n
KSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRl
ZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIFZhcmlh
YmxlIGRlY2xhcmF0aW9uIHdpdGggYm90aCBpbnZhcmlhbnQgYW5kIGxheW91dCBxdWFsaWZpZXJz
IGlzIG5vdCB2YWxpZCBpbiB0aGUgZm9ybWFsIGdyYW1tYXIKKy8vIHByb3ZpZGVkIGluIHRoZSBF
U1NMIDMuMDAgc3BlYy4gRVNTTCAzLjEwIHN0YXJ0cyBhbGxvd2luZyB0aGlzIGNvbWJpbmF0aW9u
LCBidXQgRVNTTCAzLjAwIHNob3VsZAorLy8gc3RpbGwgZGlzYWxsb3cgaXQuCitURVNUX0YoTWFs
Zm9ybWVkU2hhZGVyVGVzdCwgVmFyaWFibGVEZWNsYXJhdGlvbldpdGhJbnZhcmlhbnRBbmRMYXlv
dXRRdWFsaWZpZXJFU1NMMzAwKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJp
bmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDtcbiIKKyAgICAgICAgImludmFyaWFudCBsYXlvdXQobG9jYXRpb24gPSAwKSBv
dXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAg
ICAgICJ9XG4iOworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAg
ICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWls
dXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBCaXQgc2hpZnQgd2l0aCBhIHJocyB2
YWx1ZSA+IDMxIGhhcyBhbiB1bmRlZmluZWQgcmVzdWx0IGluIHRoZSBHTFNMIHNwZWMuIFdlIGRp
c2FsbG93IGl0LgorLy8gRVNTTCAzLjAwLjYgc2VjdGlvbiA1LjkuCitURVNUX0YoTWFsZm9ybWVk
U2hhZGVyVGVzdCwgU2hpZnRCeTMyKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJT
dHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAg
IHVpbnQgdSA9IDF1IDw8IDMydTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKGNvbXBpbGUo
c2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0
aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9
CisKKy8vIFRlc3QgdGhhdCBkZWZlcnJpbmcgZ2xvYmFsIHZhcmlhYmxlIGluaXQgd29ya3Mgd2l0
aCBhbiBlbXB0eSBtYWluKCkuCitURVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgRGVmZXJHbG9i
YWxWYXJpYWJsZUluaXRXaXRoRW1wdHlNYWluKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZz
aGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAg
ICAgICJ1bmlmb3JtIGZsb2F0IHU7XG4iCisgICAgICAgICJmbG9hdCBmb28gPSB1O1xuIgorICAg
ICAgICAidm9pZCBtYWluKCkge31cbiI7CisgICAgaWYgKCFjb21waWxlKHNoYWRlclN0cmluZykp
CisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQsIGV4
cGVjdGluZyBzdWNjZXNzICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBUZXN0IHRoYXQg
cHJ1bmluZyBlbXB0eSBkZWNsYXJhdGlvbnMgZnJvbSBsb29wIGluaXQgZXhwcmVzc2lvbiB3b3Jr
cy4KK1RFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBFbXB0eURlY2xhcmF0aW9uQXNMb29wSW5p
dCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2
ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisg
ICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxu
IgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGludCBpID0gMDtcbiIKKyAgICAgICAgIiAg
ICBmb3IgKGludDsgaSA8IDM7IGkrKylcbiIKKyAgICAgICAgIiAgICB7XG4iCisgICAgICAgICIg
ICAgICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoaSk7XG4iCisgICAgICAgICIgICAgfVxuIgorICAg
ICAgICAifVxuIjsKKyAgICBpZiAoIWNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKKyAgICB7CisgICAg
ICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCwgZXhwZWN0aW5nIHN1Y2Nl
c3MgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvTlZfZHJhd19idWZmZXJzX3Rlc3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0
cy9OVl9kcmF3X2J1ZmZlcnNfdGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL05WX2RyYXdfYnVmZmVyc190ZXN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM5IEBACisvLworLy8gQ29weXJpZ2h0IChj
KSAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIE5W
X2RyYXdfYnVmZmVyc190ZXN0LmNwcDoKKy8vICAgVGVzdCBmb3IgTlZfZHJhd19idWZmZXJzIHNl
dHRpbmcKKy8vCisKKyNpbmNsdWRlICJhbmdsZV9nbC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiCisjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCisjaW5jbHVkZSAidGVzdHMvdGVz
dF91dGlscy9jb21waWxlcl90ZXN0LmgiCisKK2NsYXNzIE5WRHJhd0J1ZmZlcnNUZXN0IDogcHVi
bGljIE1hdGNoT3V0cHV0Q29kZVRlc3QKK3sKKyAgcHVibGljOgorICAgIE5WRHJhd0J1ZmZlcnNU
ZXN0KCkgOiBNYXRjaE91dHB1dENvZGVUZXN0KEdMX0ZSQUdNRU5UX1NIQURFUiwgMCwgU0hfRVNT
TF9PVVRQVVQpCisgICAgeworICAgICAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgKnJlc291cmNlcyA9
IGdldFJlc291cmNlcygpOworICAgICAgICByZXNvdXJjZXMtPk1heERyYXdCdWZmZXJzICAgICA9
IDg7CisgICAgICAgIHJlc291cmNlcy0+RVhUX2RyYXdfYnVmZmVycyAgID0gMTsKKyAgICAgICAg
cmVzb3VyY2VzLT5OVl9kcmF3X2J1ZmZlcnMgICAgPSAxOworICAgIH0KK307CisKK1RFU1RfRihO
VkRyYXdCdWZmZXJzVGVzdCwgTlZEcmF3QnVmZmVycykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiNleHRlbnNpb24gR0xfRVhUX2RyYXdfYnVmZmVy
cyA6IHJlcXVpcmVcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAg
ICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0RhdGFbMF0gPSB2ZWM0
KDEuMCk7XG4iCisgICAgICAgICIgICBnbF9GcmFnRGF0YVsxXSA9IHZlYzQoMC4wKTtcbiIKKyAg
ICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VSVF9UUlVF
KGZvdW5kSW5Db2RlKCJHTF9OVl9kcmF3X2J1ZmZlcnMiKSk7CisgICAgQVNTRVJUX0ZBTFNFKGZv
dW5kSW5Db2RlKCJHTF9FWFRfZHJhd19idWZmZXJzIikpOworfQpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1BhY2tfVW5wYWNrX3Rlc3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxl
cl90ZXN0cy9QYWNrX1VucGFja190ZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvUGFja19VbnBhY2tfdGVzdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjAgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMp
IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gUGFj
a19VbnBhY2tfdGVzdC5jcHA6CisvLyAgIFRlc3RzIGZvciB0aGUgZW11bGF0aW5nIHBhY2tfdW5w
YWNrIGZ1bmN0aW9ucyBmb3IgR0xTTC4KKy8vCisKKyNpbmNsdWRlICJhbmdsZV9nbC5oIgorI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCisj
aW5jbHVkZSAidGVzdHMvdGVzdF91dGlscy9jb21waWxlcl90ZXN0LmgiCisKK25hbWVzcGFjZQor
eworCitjbGFzcyBQYWNrVW5wYWNrVGVzdCA6IHB1YmxpYyBNYXRjaE91dHB1dENvZGVUZXN0Cit7
CisgIHB1YmxpYzoKKyAgICBQYWNrVW5wYWNrVGVzdCgpIDogTWF0Y2hPdXRwdXRDb2RlVGVzdChH
TF9GUkFHTUVOVF9TSEFERVIsIDAsIFNIX0dMU0xfNDAwX0NPUkVfT1VUUFVUKSB7fQorfTsKKwor
Ly8gQ2hlY2sgaWYgUGFja1Nub3JtMngxNiBFbXVsYXRpb24gZm9yIEdMU0wgPCA0LjIgY29tcGls
ZSBjb3JyZWN0bHkuCitURVNUX0YoUGFja1VucGFja1Rlc3QsIFBhY2tTbm9ybTJ4MTZFbXVsYXRp
b24pCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIj
dmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgor
ICAgICAgICAibGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBmcmFnQ29sb3I7
IgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgdmVjMiB2O1xuIgorICAg
ICAgICAiICAgdWludCB1ID0gcGFja1Nub3JtMngxNih2KTtcbiIKKyAgICAgICAgIiAgIGZyYWdD
b2xvciA9IHZlYzQoMC4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJT
dHJpbmcpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5Db2RlKCJ1aW50IHdlYmdsX3BhY2tTbm9y
bTJ4MTZfZW11KHZlYzIgdikiKSk7Cit9CisKKy8vIENoZWNrIGlmIFVucGFja1Nub3JtMngxNiBF
bXVsYXRpb24gZm9yIEdMU0wgPCA0LjIgY29tcGlsZSBjb3JyZWN0bHkuCitURVNUX0YoUGFja1Vu
cGFja1Rlc3QsIFVucGFja1Nub3JtMngxNkVtdWxhdGlvbikKK3sKKyAgICBjb25zdCBzdGQ6OnN0
cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAg
ICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJsYXlvdXQobG9jYXRpb24g
PSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGZyYWdDb2xvcjsiCisgICAgICAgICJ2b2lkIG1haW4oKSB7
XG4iCisgICAgICAgICIgICB1aW50IHU7XG4iCisgICAgICAgICIgICB2ZWMyIHY9dW5wYWNrU25v
cm0yeDE2KHUpO1xuIgorICAgICAgICAiICAgZnJhZ0NvbG9yID0gdmVjNCgwLjApO1xuIgorICAg
ICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX1RSVUUo
Zm91bmRJbkNvZGUoInZlYzIgd2ViZ2xfdW5wYWNrU25vcm0yeDE2X2VtdSh1aW50IHUpIikpOwor
fQorCisvLyBDaGVjayBpZiBQYWNrVW5vcm0yeDE2IEVtdWxhdGlvbiBmb3IgR0xTTCA8IDQuMSBj
b21waWxlcyBjb3JyZWN0bHkuCitURVNUX0YoUGFja1VucGFja1Rlc3QsIFBhY2tVbm9ybTJ4MTZF
bXVsYXRpb24pCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAg
ICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
O1xuIgorICAgICAgICAibGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBmcmFn
Q29sb3I7IgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgdmVjMiB2O1xu
IgorICAgICAgICAiICAgdWludCB1ID0gcGFja1Vub3JtMngxNih2KTtcbiIKKyAgICAgICAgIiAg
IGZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShz
aGFkZXJTdHJpbmcpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5Db2RlKCJ1aW50IHdlYmdsX3Bh
Y2tVbm9ybTJ4MTZfZW11KHZlYzIgdikiKSk7Cit9CisKKy8vIENoZWNrIGlmIFVucGFja1Nub3Jt
MngxNiBFbXVsYXRpb24gZm9yIEdMU0wgPCA0LjEgY29tcGlsZXMgY29ycmVjdGx5LgorVEVTVF9G
KFBhY2tVbnBhY2tUZXN0LCBVbnBhY2tVbm9ybTJ4MTZFbXVsYXRpb24pCit7CisgICAgY29uc3Qg
c3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIK
KyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAibGF5b3V0KGxv
Y2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBmcmFnQ29sb3I7IgorICAgICAgICAidm9pZCBt
YWluKCkge1xuIgorICAgICAgICAiICAgdWludCB1O1xuIgorICAgICAgICAiICAgdmVjMiB2PXVu
cGFja1Vub3JtMngxNih1KTtcbiIKKyAgICAgICAgIiAgIGZyYWdDb2xvciA9IHZlYzQoMC4wKTtc
biIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VS
VF9UUlVFKGZvdW5kSW5Db2RlKCJ2ZWMyIHdlYmdsX3VucGFja1Vub3JtMngxNl9lbXUodWludCB1
KSIpKTsKK30KKworLy8gQ2hlY2sgaWYgUGFja0hhbGYyeDE2IEVtdWxhdGlvbiBmb3IgR0xTTCA8
IDQuMiBjb21waWxlcyBjb3JyZWN0bHkuCitURVNUX0YoUGFja1VucGFja1Rlc3QsIFBhY2tIYWxm
MngxNkVtdWxhdGlvbikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0K
KyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7XG4iCisgICAgICAgICJsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0
IGZyYWdDb2xvcjsiCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICB2ZWMy
IHY7XG4iCisgICAgICAgICIgICB1aW50IHU9cGFja0hhbGYyeDE2KHYpO1xuIgorICAgICAgICAi
ICAgZnJhZ0NvbG9yID0gdmVjNCgwLjApO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxl
KHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkNvZGUoInVpbnQgd2ViZ2xf
cGFja0hhbGYyeDE2X2VtdSh2ZWMyIHYpIikpOworfQorCisvLyBDaGVjayBpZiBVbnBhY2tIYWxm
MngxNiBFbXVsYXRpb24gZm9yIEdMU0wgPCA0LjIgY29tcGlsZXMgY29ycmVjdGx5LgorVEVTVF9G
KFBhY2tVbnBhY2tUZXN0LCBVbnBhY2tIYWxmMngxNkVtdWxhdGlvbikKK3sKKyAgICBjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgor
ICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJsYXlvdXQobG9j
YXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGZyYWdDb2xvcjsiCisgICAgICAgICJ2b2lkIG1h
aW4oKSB7XG4iCisgICAgICAgICIgICB1aW50IHU7XG4iCisgICAgICAgICIgICB2ZWMyIHY9dW5w
YWNrSGFsZjJ4MTYodSk7XG4iCisgICAgICAgICIgICBmcmFnQ29sb3IgPSB2ZWM0KDAuMCk7XG4i
CisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBBU1NFUlRf
VFJVRShmb3VuZEluQ29kZSgidmVjMiB3ZWJnbF91bnBhY2tIYWxmMngxNl9lbXUodWludCB1KSIp
KTsKK30KKworfSAvLyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9jb21waWxlcl90ZXN0cy9QcnVuZUVtcHR5RGVjbGFyYXRpb25zX3Rlc3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90
ZXN0cy9QcnVuZUVtcHR5RGVjbGFyYXRpb25zX3Rlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9QcnVuZUVtcHR5
RGVjbGFyYXRpb25zX3Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTggQEAKKy8v
CisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworLy8gUHJ1bmVFbXB0eURlY2xhcmF0aW9uc190ZXN0LmNwcDoKKy8vICAgVGVz
dHMgZm9yIHBydW5pbmcgZW1wdHkgZGVjbGFyYXRpb25zLgorLy8KKworI2luY2x1ZGUgImFuZ2xl
X2dsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJHTFNMQU5HL1NoYWRl
ckxhbmcuaCIKKyNpbmNsdWRlICJ0ZXN0cy90ZXN0X3V0aWxzL2NvbXBpbGVyX3Rlc3QuaCIKKwor
bmFtZXNwYWNlCit7CisKK2NsYXNzIFBydW5lRW1wdHlEZWNsYXJhdGlvbnNUZXN0IDogcHVibGlj
IE1hdGNoT3V0cHV0Q29kZVRlc3QKK3sKKyAgcHVibGljOgorICAgIFBydW5lRW1wdHlEZWNsYXJh
dGlvbnNUZXN0KCkKKyAgICAgICAgOiBNYXRjaE91dHB1dENvZGVUZXN0KEdMX1ZFUlRFWF9TSEFE
RVIsIDAsIFNIX0dMU0xfQ09NUEFUSUJJTElUWV9PVVRQVVQpCisgICAgeworICAgIH0KK307CisK
K1RFU1RfRihQcnVuZUVtcHR5RGVjbGFyYXRpb25zVGVzdCwgRW1wdHlEZWNsYXJhdGlvblN0YXJ0
c0RlY2xhcmF0b3JMaXN0KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHNoYWRlclN0cmluZyA9
CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0g
ZmxvYXQgdTtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAg
ICAgICIgICBmbG9hdCwgZjtcbiIKKyAgICAgICAgIiAgIGdsX1Bvc2l0aW9uID0gdmVjNCh1ICog
Zik7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBB
U1NFUlRfVFJVRShmb3VuZEluQ29kZSgiZmxvYXQgZiIpKTsKKyAgICBBU1NFUlRfVFJVRShub3RG
b3VuZEluQ29kZSgiZmxvYXQsIGYiKSk7Cit9CisKK1RFU1RfRihQcnVuZUVtcHR5RGVjbGFyYXRp
b25zVGVzdCwgRW1wdHlTdHJ1Y3REZWNsYXJhdGlvbldpdGhRdWFsaWZpZXJzKQoreworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nIHNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDtcbiIKKyAgICAgICAgImNvbnN0IHN0cnVjdCBTIHsgZmxvYXQgZjsgfTtcbiIKKyAg
ICAgICAgInVuaWZvcm0gUyBzOyIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7
XG4iCisgICAgICAgICIgICBnbF9Qb3NpdGlvbiA9IHZlYzQocy5mKTtcbiIKKyAgICAgICAgIn1c
biI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5D
b2RlKCJzdHJ1Y3QgUyIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQ29kZSgidW5pZm9ybSBT
IikpOworICAgIEFTU0VSVF9UUlVFKG5vdEZvdW5kSW5Db2RlKCJjb25zdCBzdHJ1Y3QgUyIpKTsK
K30KKworfSAgLy8gbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvY29tcGlsZXJfdGVzdHMvUHJ1bmVVbnVzZWRGdW5jdGlvbnNfdGVzdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3Rz
L1BydW5lVW51c2VkRnVuY3Rpb25zX3Rlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9QcnVuZVVudXNlZEZ1bmN0
aW9uc190ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkxIEBACisvLworLy8gQ29w
eXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKy8vIFBydW5lVW51c2VkRnVuY3Rpb25zX3Rlc3QuY3BwOgorLy8gICBUZXN0IGZvciB0aGUg
cHJ1bmluZyBvZiB1bnVzZWQgZnVuY3Rpb24gd2l0aCB0aGUgU0hfUFJVTkVfVU5VU0VEX0ZVTkNU
SU9OUyBjb21waWxlIGZsYWcKKy8vCisKKyNpbmNsdWRlICJhbmdsZV9nbC5oIgorI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCisjaW5jbHVk
ZSAidGVzdHMvdGVzdF91dGlscy9jb21waWxlcl90ZXN0LmgiCisKK25hbWVzcGFjZQoreworCitj
bGFzcyBQcnVuZVVudXNlZEZ1bmN0aW9uc1Rlc3QgOiBwdWJsaWMgTWF0Y2hPdXRwdXRDb2RlVGVz
dAoreworICBwdWJsaWM6CisgICAgUHJ1bmVVbnVzZWRGdW5jdGlvbnNUZXN0KCkgOiBNYXRjaE91
dHB1dENvZGVUZXN0KEdMX0ZSQUdNRU5UX1NIQURFUiwgMCwgU0hfRVNTTF9PVVRQVVQpIHt9CisK
KyAgcHJvdGVjdGVkOgorICAgIHZvaWQgY29tcGlsZShjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVy
U3RyaW5nLCBib29sIHBydW5lKQorICAgIHsKKyAgICAgICAgaW50IGNvbXBpbGF0aW9uRmxhZ3Mg
PSBTSF9WQVJJQUJMRVMgfCAocHJ1bmUgPyAwIDogU0hfRE9OVF9QUlVORV9VTlVTRURfRlVOQ1RJ
T05TKTsKKyAgICAgICAgTWF0Y2hPdXRwdXRDb2RlVGVzdDo6Y29tcGlsZShzaGFkZXJTdHJpbmcs
IGNvbXBpbGF0aW9uRmxhZ3MpOworICAgIH0KK307CisKKy8vIENoZWNrIHRoYXQgdW51c2VkIGZ1
bmN0aW9uIGFuZCBwcm90b3R5cGVzIGFyZSByZW1vdmVkIGlmZiB0aGUgb3B0aW9ucyBpcyBzZXQK
K1RFU1RfRihQcnVuZVVudXNlZEZ1bmN0aW9uc1Rlc3QsIFVudXNlZEZ1bmN0aW9uQW5kUHJvdG8p
Cit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgImZsb2F0IHVudXNlZChmbG9hdCBhKTtc
biIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgICBnbF9GcmFnQ29sb3Ig
PSB2ZWM0KDEuMCk7XG4iCisgICAgICAgICJ9XG4iCisgICAgICAgICJmbG9hdCB1bnVzZWQoZmxv
YXQgYSkge1xuIgorICAgICAgICAiICAgIHJldHVybiBhO1xuIgorICAgICAgICAifVxuIjsKKyAg
ICBjb21waWxlKHNoYWRlclN0cmluZywgdHJ1ZSk7CisgICAgRVhQRUNUX1RSVUUobm90Rm91bmRJ
bkNvZGUoInVudXNlZCgiKSk7CisgICAgRVhQRUNUX1RSVUUoZm91bmRJbkNvZGUoIm1haW4oIiwg
MSkpOworCisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcsIGZhbHNlKTsKKyAgICBFWFBFQ1RfVFJV
RShmb3VuZEluQ29kZSgidW51c2VkKCIsIDIpKTsKKyAgICBFWFBFQ1RfVFJVRShmb3VuZEluQ29k
ZSgibWFpbigiLCAxKSk7Cit9CisKKy8vIENoZWNrIHRoYXQgdW5pbXBsZW1lbnRlZCBwcm90b3R5
cGVzIGFyZSByZW1vdmVkIGlmZiB0aGUgb3B0aW9ucyBpcyBzZXQKK1RFU1RfRihQcnVuZVVudXNl
ZEZ1bmN0aW9uc1Rlc3QsIFVuaW1wbGVtZW50ZWRQcm90b3R5cGUpCit7CisgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDtcbiIKKyAgICAgICAgImZsb2F0IHVudXNlZChmbG9hdCBhKTtcbiIKKyAgICAgICAgInZvaWQg
bWFpbigpIHtcbiIKKyAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XG4iCisg
ICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nLCB0cnVlKTsKKyAgICBFWFBF
Q1RfVFJVRShub3RGb3VuZEluQ29kZSgidW51c2VkKCIpKTsKKyAgICBFWFBFQ1RfVFJVRShmb3Vu
ZEluQ29kZSgibWFpbigiLCAxKSk7CisKKyAgICBjb21waWxlKHNoYWRlclN0cmluZywgZmFsc2Up
OworICAgIEVYUEVDVF9UUlVFKGZvdW5kSW5Db2RlKCJ1bnVzZWQoIiwgMSkpOworICAgIEVYUEVD
VF9UUlVFKGZvdW5kSW5Db2RlKCJtYWluKCIsIDEpKTsKK30KKworLy8gQ2hlY2sgdGhhdCB1c2Vk
IGZ1bmN0aW9ucyBhcmUgbm90IHBydW51ZWQgKGR1aCkKK1RFU1RfRihQcnVuZVVudXNlZEZ1bmN0
aW9uc1Rlc3QsIFVzZWRGdW5jdGlvbikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVy
U3RyaW5nID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAi
ZmxvYXQgdXNlZChmbG9hdCBhKTtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAg
ICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHVzZWQoMS4wKSk7XG4iCisgICAgICAgICJ9XG4i
CisgICAgICAgICJmbG9hdCB1c2VkKGZsb2F0IGEpIHtcbiIKKyAgICAgICAgIiAgICByZXR1cm4g
YTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcsIHRydWUpOwor
ICAgIEVYUEVDVF9UUlVFKGZvdW5kSW5Db2RlKCJ1c2VkKCIsIDMpKTsKKyAgICBFWFBFQ1RfVFJV
RShmb3VuZEluQ29kZSgibWFpbigiLCAxKSk7CisKKyAgICBjb21waWxlKHNoYWRlclN0cmluZywg
ZmFsc2UpOworICAgIEVYUEVDVF9UUlVFKGZvdW5kSW5Db2RlKCJ1c2VkKCIsIDMpKTsKKyAgICBF
WFBFQ1RfVFJVRShmb3VuZEluQ29kZSgibWFpbigiLCAxKSk7Cit9CisKK30KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9RdWFsaWZpY2F0aW9u
T3JkZXJFU1NMMzFfdGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1F1YWxpZmljYXRpb25PcmRlckVTU0wzMV90ZXN0
LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
Y29tcGlsZXJfdGVzdHMvUXVhbGlmaWNhdGlvbk9yZGVyRVNTTDMxX3Rlc3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTgyIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFF1YWxpZmljYXRpb25P
cmRlckVTU0wzMV90ZXN0LmNwcDoKKy8vICAgT3BlbkdMIEVTIDMuMSByZW1vdmVzIHRoZSBzdHJp
Y3Qgb3JkZXIgb2YgcXVhbGlmaWVycyBpbXBvc2VkIGJ5IHRoZSBncmFtbWFyLgorLy8gICBUaGlz
IGZpbGUgY29udGFpbnMgdGVzdHMgZm9yIGludmFsaWQgb3JkZXIgYW5kIHVzYWdlIG9mIHF1YWxp
ZmllcnMgaW4gR0xTTCBFUyAzLjEwLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworI2lu
Y2x1ZGUgImFuZ2xlX2dsLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xh
dG9yRVNTTC5oIgorI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgorI2luY2x1ZGUgInRl
c3RzL3Rlc3RfdXRpbHMvY29tcGlsZXJfdGVzdC5oIgorCitjbGFzcyBRdWFsaWZpY2F0aW9uVmVy
dGV4U2hhZGVyVGVzdEVTU0wzMSA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0Cit7CisgIHB1YmxpYzoK
KyAgICBRdWFsaWZpY2F0aW9uVmVydGV4U2hhZGVyVGVzdEVTU0wzMSgpIHt9CisgIHByb3RlY3Rl
ZDoKKyAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQorICAgIHsKKyAgICAgICAgU2hCdWlsdEluUmVz
b3VyY2VzIHJlc291cmNlczsKKyAgICAgICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmcmVzb3Vy
Y2VzKTsKKworICAgICAgICBtVHJhbnNsYXRvciA9IG5ldyBUcmFuc2xhdG9yRVNTTChHTF9WRVJU
RVhfU0hBREVSLCBTSF9HTEVTM18xX1NQRUMpOworICAgICAgICBBU1NFUlRfVFJVRShtVHJhbnNs
YXRvci0+SW5pdChyZXNvdXJjZXMpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRv
d24oKSB7IGRlbGV0ZSBtVHJhbnNsYXRvcjsgfQorCisgICAgLy8gUmV0dXJuIHRydWUgd2hlbiBj
b21waWxhdGlvbiBzdWNjZWVkcworICAgIGJvb2wgY29tcGlsZShjb25zdCBzdGQ6OnN0cmluZyAm
c2hhZGVyU3RyaW5nKQorICAgIHsKKyAgICAgICAgY29uc3QgY2hhciAqc2hhZGVyU3RyaW5nc1td
ID0ge3NoYWRlclN0cmluZy5jX3N0cigpfTsKKyAgICAgICAgbUFTVFJvb3QgICAgICAgICAgICAg
ICAgICAgID0gbVRyYW5zbGF0b3ItPmNvbXBpbGVUcmVlRm9yVGVzdGluZyhzaGFkZXJTdHJpbmdz
LCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU0hfSU5URVJNRURJQVRFX1RSRUUgfCBTSF9WQVJJQUJMRVMpOworICAgICAgICBUSW5mb1Np
bmsgJmluZm9TaW5rID0gbVRyYW5zbGF0b3ItPmdldEluZm9TaW5rKCk7CisgICAgICAgIG1JbmZv
TG9nICAgICAgICAgICAgPSBpbmZvU2luay5pbmZvLmNfc3RyKCk7CisgICAgICAgIHJldHVybiBt
QVNUUm9vdCAhPSBudWxscHRyOworICAgIH0KKworICAgIGNvbnN0IFRJbnRlcm1TeW1ib2wgKmZp
bmRTeW1ib2xJbkFTVChjb25zdCBUU3RyaW5nICZzeW1ib2xOYW1lLCBUQmFzaWNUeXBlIGJhc2lj
VHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBGaW5kU3ltYm9sTm9kZShtQVNUUm9vdCwgc3lt
Ym9sTmFtZSwgYmFzaWNUeXBlKTsKKyAgICB9CisKKyAgcHJvdGVjdGVkOgorICAgIFRyYW5zbGF0
b3JFU1NMICptVHJhbnNsYXRvcjsKKyAgICBUSW50ZXJtTm9kZSAqbUFTVFJvb3Q7CisgICAgc3Rk
OjpzdHJpbmcgbUluZm9Mb2c7Cit9OworCisvLyBHTFNMIEVTIDMuMTAgaGFzIHJlbGF4ZWQgY2hl
Y2tzIG9uIHF1YWxpZmllciBvcmRlci4gQW55IG9yZGVyIGlzIGNvcnJlY3QuCitURVNUX0YoUXVh
bGlmaWNhdGlvblZlcnRleFNoYWRlclRlc3RFU1NMMzEsIENlbnRyb2lkT3V0KQoreworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzEwIGVz
XG4iCisgICAgICAgICJwcmVjaXNpb24gbG93cCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCBjZW50
cm9pZCBmbG9hdCBzb21ldGhpbmc7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKXtcbiIKKyAgICAg
ICAgIiAgIHNvbWV0aGluZyA9IDEuMDtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKCFjb21w
aWxlKHNoYWRlclN0cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21w
aWxhdGlvbiBmYWlsZWQsIGV4cGVjdGluZyBzdWNjZXNzIiA8PCBtSW5mb0xvZzsKKyAgICB9Cisg
ICAgZWxzZQorICAgIHsKKyAgICAgICAgY29uc3QgVEludGVybVN5bWJvbCAqbm9kZSA9IGZpbmRT
eW1ib2xJbkFTVCgic29tZXRoaW5nIiwgRWJ0RmxvYXQpOworICAgICAgICBBU1NFUlRfTkUobnVs
bHB0ciwgbm9kZSk7CisKKyAgICAgICAgY29uc3QgVFR5cGUgJnR5cGUgPSBub2RlLT5nZXRUeXBl
KCk7CisgICAgICAgIEVYUEVDVF9FUShFdnFDZW50cm9pZE91dCwgdHlwZS5nZXRRdWFsaWZpZXIo
KSk7CisgICAgfQorfQorCisvLyBHTFNMIEVTIDMuMTAgaGFzIHJlbGF4ZWQgY2hlY2tzIG9uIHF1
YWxpZmllciBvcmRlci4gQW55IG9yZGVyIGlzIGNvcnJlY3QuCitURVNUX0YoUXVhbGlmaWNhdGlv
blZlcnRleFNoYWRlclRlc3RFU1NMMzEsIEFsbFF1YWxpZmllcnNNaXhlZCkKK3sKKyAgICBjb25z
dCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xu
IgorICAgICAgICAicHJlY2lzaW9uIGxvd3AgZmxvYXQ7XG4iCisgICAgICAgICJoaWdocCBvdXQg
aW52YXJpYW50IGNlbnRyb2lkIGZsYXQgdmVjNCBzb21ldGhpbmc7XG4iCisgICAgICAgICJ2b2lk
IG1haW4oKXtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKCFjb21waWxlKHNoYWRlclN0cmlu
ZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQs
IGV4cGVjdGluZyBzdWNjZXNzIiA8PCBtSW5mb0xvZzsKKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgY29uc3QgVEludGVybVN5bWJvbCAqbm9kZSA9IGZpbmRTeW1ib2xJbkFTVCgic29t
ZXRoaW5nIiwgRWJ0RmxvYXQpOworICAgICAgICBBU1NFUlRfTkUobnVsbHB0ciwgbm9kZSk7CisK
KyAgICAgICAgY29uc3QgVFR5cGUgJnR5cGUgPSBub2RlLT5nZXRUeXBlKCk7CisgICAgICAgIEVY
UEVDVF9UUlVFKHR5cGUuaXNJbnZhcmlhbnQoKSk7CisgICAgICAgIEVYUEVDVF9FUShFdnFGbGF0
T3V0LCB0eXBlLmdldFF1YWxpZmllcigpKTsKKyAgICAgICAgRVhQRUNUX0VRKEVicEhpZ2gsIHR5
cGUuZ2V0UHJlY2lzaW9uKCkpOworICAgIH0KK30KKworLy8gR0xTTCBFUyAzLjEwIGFsbG93cyBt
dWx0aXBsZSBsYXlvdXQgcXVhbGlmaWVycyB0byBiZSBzcGVjaWZpZWQuCitURVNUX0YoUXVhbGlm
aWNhdGlvblZlcnRleFNoYWRlclRlc3RFU1NMMzEsIE11bHRpcGxlTGF5b3V0cykKK3sKKyAgICBj
b25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMxMCBl
c1xuIgorICAgICAgICAicHJlY2lzaW9uIGxvd3AgZmxvYXQ7XG4iCisgICAgICAgICJpbiBsYXlv
dXQobG9jYXRpb249MSkgbGF5b3V0KGxvY2F0aW9uPTIpIHZlYzQgc29tZXRoaW5nO1xuIgorICAg
ICAgICAidm9pZCBtYWluKCl7XG4iCisgICAgICAgICJ9XG4iOworICAgIGlmICghY29tcGlsZShz
aGFkZXJTdHJpbmcpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRp
b24gZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2VzcyIgPDwgbUluZm9Mb2c7CisgICAgfQorICAgIGVs
c2UKKyAgICB7CisgICAgICAgIGNvbnN0IFRJbnRlcm1TeW1ib2wgKm5vZGUgPSBmaW5kU3ltYm9s
SW5BU1QoInNvbWV0aGluZyIsIEVidEZsb2F0KTsKKyAgICAgICAgQVNTRVJUX05FKG51bGxwdHIs
IG5vZGUpOworCisgICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlID0gbm9kZS0+Z2V0VHlwZSgpOwor
ICAgICAgICBFWFBFQ1RfRVEoRXZxVmVydGV4SW4sIHR5cGUuZ2V0UXVhbGlmaWVyKCkpOworICAg
ICAgICBFWFBFQ1RfRVEoMiwgdHlwZS5nZXRMYXlvdXRRdWFsaWZpZXIoKS5sb2NhdGlvbik7Cisg
ICAgfQorfQorCisvLyBUaGUgdGVzdCBjaGVja3MgbGF5b3V0IHF1YWxpZmllciBvdmVycmlkaW5n
IHdoZW4gbXVsdGlwbGUgbGF5b3V0cyBhcmUgc3BlY2lmaWVkLgorVEVTVF9GKFF1YWxpZmljYXRp
b25WZXJ0ZXhTaGFkZXJUZXN0RVNTTDMxLCBNdWx0aXBsZUxheW91dHNJbnRlcmZhY2VCbG9jaykK
K3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJz
aW9uIDMxMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIGxvd3AgZmxvYXQ7XG4iCisgICAgICAg
ICJvdXQgZmxvYXQgc29tZVZhbHVlO1xuIgorICAgICAgICAibGF5b3V0KHNoYXJlZCkgbGF5b3V0
KHN0ZDE0MCkgbGF5b3V0KGNvbHVtbl9tYWpvcikgdW5pZm9ybSBNeUludGVyZmFjZVxuIgorICAg
ICAgICAieyB2ZWM0IHNvbWV0aGluZzsgfSBNeUludGVyZmFjZU5hbWU7XG4iCisgICAgICAgICJ2
b2lkIG1haW4oKXtcbiIKKyAgICAgICAgIiAgIHNvbWVWYWx1ZSA9IE15SW50ZXJmYWNlTmFtZS5z
b21ldGhpbmcucjtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgaWYgKCFjb21waWxlKHNoYWRlclN0
cmluZykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWls
ZWQsIGV4cGVjdGluZyBzdWNjZXNzIiA8PCBtSW5mb0xvZzsKKyAgICB9CisgICAgZWxzZQorICAg
IHsKKyAgICAgICAgY29uc3QgVEludGVybVN5bWJvbCAqbm9kZSA9IGZpbmRTeW1ib2xJbkFTVCgi
TXlJbnRlcmZhY2VOYW1lIiwgRWJ0SW50ZXJmYWNlQmxvY2spOworICAgICAgICBBU1NFUlRfTkUo
bnVsbHB0ciwgbm9kZSk7CisKKyAgICAgICAgY29uc3QgVFR5cGUgJnR5cGUgICAgICAgICAgICAg
ICAgPSBub2RlLT5nZXRUeXBlKCk7CisgICAgICAgIFRMYXlvdXRRdWFsaWZpZXIgbGF5b3V0UXVh
bGlmaWVyID0gdHlwZS5nZXRMYXlvdXRRdWFsaWZpZXIoKTsKKyAgICAgICAgRVhQRUNUX0VRKEVi
c1N0ZDE0MCwgbGF5b3V0UXVhbGlmaWVyLmJsb2NrU3RvcmFnZSk7CisgICAgICAgIEVYUEVDVF9F
UShFbXBDb2x1bW5NYWpvciwgbGF5b3V0UXVhbGlmaWVyLm1hdHJpeFBhY2tpbmcpOworICAgIH0K
K30KKworLy8gVGhlIHRlc3QgY2hlY2tzIGxheW91dCBxdWFsaWZpZXIgb3ZlcnJpZGluZyB3aGVu
IG11bHRpcGxlIGxheW91dHMgYXJlIHNwZWNpZmllZC4KK1RFU1RfRihRdWFsaWZpY2F0aW9uVmVy
dGV4U2hhZGVyVGVzdEVTU0wzMSwgTXVsdGlwbGVMYXlvdXRzSW50ZXJmYWNlQmxvY2syKQorewor
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24g
MzEwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbG93cCBmbG9hdDtcbiIKKyAgICAgICAgIm91
dCBmbG9hdCBzb21lVmFsdWU7XG4iCisgICAgICAgICJsYXlvdXQocm93X21ham9yKSBsYXlvdXQo
c3RkMTQwKSBsYXlvdXQoc2hhcmVkKSB1bmlmb3JtIE15SW50ZXJmYWNlXG4iCisgICAgICAgICJ7
IHZlYzQgc29tZXRoaW5nOyB9IE15SW50ZXJmYWNlTmFtZTtcbiIKKyAgICAgICAgInZvaWQgbWFp
bigpe1xuIgorICAgICAgICAiICAgc29tZVZhbHVlID0gTXlJbnRlcmZhY2VOYW1lLnNvbWV0aGlu
Zy5yO1xuIgorICAgICAgICAifVxuIjsKKyAgICBpZiAoIWNvbXBpbGUoc2hhZGVyU3RyaW5nKSkK
KyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCwgZXhw
ZWN0aW5nIHN1Y2Nlc3MiIDw8IG1JbmZvTG9nOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAg
ICAgICBjb25zdCBUSW50ZXJtU3ltYm9sICpub2RlID0gZmluZFN5bWJvbEluQVNUKCJNeUludGVy
ZmFjZU5hbWUiLCBFYnRJbnRlcmZhY2VCbG9jayk7CisgICAgICAgIEFTU0VSVF9ORShudWxscHRy
LCBub2RlKTsKKworICAgICAgICBjb25zdCBUVHlwZSAmdHlwZSAgICAgICAgICAgICAgICA9IG5v
ZGUtPmdldFR5cGUoKTsKKyAgICAgICAgVExheW91dFF1YWxpZmllciBsYXlvdXRRdWFsaWZpZXIg
PSB0eXBlLmdldExheW91dFF1YWxpZmllcigpOworICAgICAgICBFWFBFQ1RfRVEoRWJzU2hhcmVk
LCBsYXlvdXRRdWFsaWZpZXIuYmxvY2tTdG9yYWdlKTsKKyAgICAgICAgRVhQRUNUX0VRKEVtcFJv
d01ham9yLCBsYXlvdXRRdWFsaWZpZXIubWF0cml4UGFja2luZyk7CisgICAgfQorfQpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1F1YWxpZmlj
YXRpb25PcmRlcl90ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvUXVhbGlmaWNhdGlvbk9yZGVyX3Rlc3QuY3BwCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxl
cl90ZXN0cy9RdWFsaWZpY2F0aW9uT3JkZXJfdGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw1NjkgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gUXVhbGlmaWNhdGlvbk9yZGVyX3Rlc3QuY3Bw
OgorLy8gICBPcGVuR0wgRVMgMy4xIHJlbW92ZXMgdGhlIHN0cmljdCBvcmRlciBvZiBxdWFsaWZp
ZXJzIGltcG9zZWQgYnkgdGhlIGdyYW1tYXIuCisvLyAgIFRoaXMgZmlsZSBjb250YWlucyB0ZXN0
cyBmb3IgaW52YWxpZCBvcmRlciBhbmQgdXNhZ2Ugb2YgcXVhbGlmaWVycy4KKworI2luY2x1ZGUg
ImFuZ2xlX2dsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJHTFNMQU5H
L1NoYWRlckxhbmcuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JF
U1NMLmgiCisKK2NsYXNzIFF1YWxpZmljYXRpb25PcmRlclNoYWRlclRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdAoreworICBwdWJsaWM6CisgICAgUXVhbGlmaWNhdGlvbk9yZGVyU2hhZGVyVGVz
dCgpIHt9CisKKyAgcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHt9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7fQorCisgICAgLy8gUmV0dXJuIHRydWUgd2hlbiBj
b21waWxhdGlvbiBzdWNjZWVkcworICAgIGJvb2wgY29tcGlsZShjb25zdCBzdGQ6OnN0cmluZyAm
c2hhZGVyU3RyaW5nLCBHTGVudW0gc2hhZGVyVHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMpCisgICAg
eworICAgICAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgcmVzb3VyY2VzOworICAgICAgICBTaEluaXRC
dWlsdEluUmVzb3VyY2VzKCZyZXNvdXJjZXMpOworICAgICAgICByZXNvdXJjZXMuTWF4RHJhd0J1
ZmZlcnMgPSAoc3BlYyA9PSBTSF9HTEVTMl9TUEVDKSA/IDEgOiA4OworCisgICAgICAgIFRyYW5z
bGF0b3JFU1NMICp0cmFuc2xhdG9yID0gbmV3IFRyYW5zbGF0b3JFU1NMKHNoYWRlclR5cGUsIHNw
ZWMpOworICAgICAgICBFWFBFQ1RfVFJVRSh0cmFuc2xhdG9yLT5Jbml0KHJlc291cmNlcykpOwor
CisgICAgICAgIGNvbnN0IGNoYXIgKnNoYWRlclN0cmluZ3NbXSA9IHtzaGFkZXJTdHJpbmcuY19z
dHIoKX07CisgICAgICAgIGJvb2wgY29tcGlsYXRpb25TdWNjZXNzICAgICA9IHRyYW5zbGF0b3It
PmNvbXBpbGUoc2hhZGVyU3RyaW5ncywgMSwgU0hfSU5URVJNRURJQVRFX1RSRUUpOworICAgICAg
ICBUSW5mb1NpbmsgJmluZm9TaW5rICAgICAgICAgPSB0cmFuc2xhdG9yLT5nZXRJbmZvU2luaygp
OworICAgICAgICBtSW5mb0xvZyAgICAgICAgICAgICAgICAgICAgPSBpbmZvU2luay5pbmZvLmNf
c3RyKCk7CisKKyAgICAgICAgZGVsZXRlIHRyYW5zbGF0b3I7CisKKyAgICAgICAgcmV0dXJuIGNv
bXBpbGF0aW9uU3VjY2VzczsKKyAgICB9CisKKyAgcHJvdGVjdGVkOgorICAgIHN0ZDo6c3RyaW5n
IG1JbmZvTG9nOworfTsKKworLy8gUmVwZWF0aW5nIGNlbnRyb2lkIHF1YWxpZmllciBpcyBpbnZh
bGlkLgorVEVTVF9GKFF1YWxpZmljYXRpb25PcmRlclNoYWRlclRlc3QsIFJlcGVhdGluZ0NlbnRy
b2lkKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAi
I3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIK
KyAgICAgICAgImZsYXQgY2VudHJvaWQgY2VudHJvaWQgaW4gZmxvYXQgbXlWYWx1ZTtcbiIKKyAg
ICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBpZiAoY29tcGls
ZShzaGFkZXJTdHJpbmcsIEdMX0ZSQUdNRU5UX1NIQURFUiwgU0hfR0xFUzNfMV9TUEVDKSkKKyAg
ICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhw
ZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIFJlcGVhdGluZyB1
bmlmb3JtIHN0b3JhZ2UgcXVhbGlmaWVycyBpcyBpbnZhbGlkLgorVEVTVF9GKFF1YWxpZmljYXRp
b25PcmRlclNoYWRlclRlc3QsIFJlcGVhdGluZ1VuaWZvcm1zKQoreworICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAg
ICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gdW5pZm9y
bSBmbG9hdCBteVZhbHVlO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAi
fVxuIjsKKworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZywgR0xfRlJBR01FTlRfU0hBREVS
LCBTSF9HTEVTM18xX1NQRUMpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29t
cGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAg
IH0KK30KKworLy8gUmVwZWF0aW5nIHZhcnlpbmcgc3RvcmFnZSBxdWFsaWZpZXJzIGlzIGludmFs
aWQuCitURVNUX0YoUXVhbGlmaWNhdGlvbk9yZGVyU2hhZGVyVGVzdCwgUmVwZWF0aW5nVmFyeWlu
Z3MpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInZhcnlpbmcgdmFyeWluZyB2ZWM0
IG15Q29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICJ9XG4iOwor
CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nLCBHTF9GUkFHTUVOVF9TSEFERVIsIFNIX0dM
RVMzXzFfU1BFQykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlv
biBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQor
CisvLyBMYXlvdXQgcXVhbGlmaWVyIHNob3VsZCBiZSBiZWZvcmUgdGhlIHN0b3JhZ2UgcXVhbGlm
aWVycy4KK1RFU1RfRihRdWFsaWZpY2F0aW9uT3JkZXJTaGFkZXJUZXN0LCBXcm9uZ09yZGVyUXVh
bGlmaWVycykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAg
ICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
XG4iCisgICAgICAgICJvdXQgbGF5b3V0KGxvY2F0aW9uPTEpIHZlYzQgbXlDb2xvcjtcbiIKKyAg
ICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBpZiAoY29tcGls
ZShzaGFkZXJTdHJpbmcsIEdMX0ZSQUdNRU5UX1NIQURFUiwgU0hfR0xFUzNfMV9TUEVDKSkKKyAg
ICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhw
ZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIENlbnRyb2lkIG91
dCBpcyB0aGUgY29ycmVjdCBvcmRlci4gT3V0IGNlbnRyb2lkIGlzIGluY29ycmVjdC4KK1RFU1Rf
RihRdWFsaWZpY2F0aW9uT3JkZXJTaGFkZXJUZXN0LCBXcm9uZ09yZGVyQ2VudHJvaWRPdXQpCit7
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lv
biAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAg
ICAiaW4gdmVjNCB1djtcbiIKKyAgICAgICAgIm91dCBjZW50cm9pZCB2ZWM0IHBvc2l0aW9uO1xu
IgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAicG9zaXRpb24gPSB1djtcbiIK
KyAgICAgICAgImdsX1Bvc2l0aW9uID0gdXY7XG4iCisgICAgICAgICJ9XG4iOworCisgICAgaWYg
KGNvbXBpbGUoc2hhZGVyU3RyaW5nLCBHTF9WRVJURVhfU0hBREVSLCBTSF9HTEVTM19TUEVDKSkK
KyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwg
ZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIENlbnRyb2lk
IGluIGlzIHRoZSBjb3JyZWN0IG9yZGVyLiBJbiBjZW50cm9pZCBpcyBpbmNvcnJlY3QuCitURVNU
X0YoUXVhbGlmaWNhdGlvbk9yZGVyU2hhZGVyVGVzdCwgV3JvbmdPcmRlckNlbnRyb2lkSW4pCit7
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lv
biAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAg
ICAiaW4gY2VudHJvaWQgdmVjNCBjb2xvcklOO1xuIgorICAgICAgICAib3V0IHZlYzQgY29sb3JP
VVQ7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICJjb2xvck9VVCA9IGNv
bG9ySU47XG4iCisgICAgICAgICJ9XG4iOworCisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5n
LCBHTF9GUkFHTUVOVF9TSEFERVIsIFNIX0dMRVMzX1NQRUMpKQorICAgIHsKKyAgICAgICAgRkFJ
TCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAi
IDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gVHlwZSBjYW5ub3QgYmUgYmVmb3JlIHRoZSBz
dG9yYWdlIHF1YWxpZmllci4KK1RFU1RfRihRdWFsaWZpY2F0aW9uT3JkZXJTaGFkZXJUZXN0LCBX
cm9uZ09yZGVyVHlwZVN0b3JhZ2UpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0
cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAiY2VudHJvaWQgaW4gdmVjNCBjb2xvcklOO1xuIgor
ICAgICAgICAidmVjNCBvdXQgY29sb3JPVVQ7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4i
CisgICAgICAgICJjb2xvck9VVCA9IGNvbG9ySU47XG4iCisgICAgICAgICJ9XG4iOworCisgICAg
aWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nLCBHTF9GUkFHTUVOVF9TSEFERVIsIFNIX0dMRVMzX1NQ
RUMpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2Vl
ZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gQSB2
YXJpYWJsZSBjYW5ub3QgaGF2ZSB0d28gY29uZmxpY3Rpbmcgc3RvcmFnZSBxdWFsaWZpZXJzLgor
VEVTVF9GKFF1YWxpZmljYXRpb25PcmRlclNoYWRlclRlc3QsIFJlcGVhdGluZ0RpZmZlcmVudFN0
b3JhZ2VRdWFsaWZpZXJzKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcg
PQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDtcbiIKKyAgICAgICAgImNlbnRyb2lkIGluIHZlYzQgY29sb3JJTjtcbiIKKyAgICAg
ICAgInVuaWZvcm0gb3V0IHZlYzQgY29sb3JPVVQ7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7
XG4iCisgICAgICAgICJjb2xvck9VVCA9IGNvbG9ySU47XG4iCisgICAgICAgICJ9XG4iOworCisg
ICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nLCBHTF9GUkFHTUVOVF9TSEFERVIsIFNIX0dMRVMz
X1NQRUMpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3Vj
Y2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8g
QSB2YXJpYWJsZSBjYW5ub3QgaGF2ZSB0d28gZGlmZmVyZW50IGxheW91dCBxdWFsaWZpZXJzLgor
VEVTVF9GKFF1YWxpZmljYXRpb25PcmRlclNoYWRlclRlc3QsIFJlcGVhdGluZ0xheW91dFF1YWxp
ZmllcnMpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAg
ICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xu
IgorICAgICAgICAiaW4gdmVjNCBjb2xvcklOO1xuIgorICAgICAgICAibGF5b3V0KGxvY2F0aW9u
PTApIGxheW91dChsb2NhdGlvbj0wKSBvdXQgdmVjNCBjb2xvck9VVDtcbiIKKyAgICAgICAgInZv
aWQgbWFpbigpIHtcbiIKKyAgICAgICAgImNvbG9yT1VUID0gY29sb3JJTjtcbiIKKyAgICAgICAg
In1cbiI7CisKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcsIEdMX0ZSQUdNRU5UX1NIQURF
UiwgU0hfR0xFUzNfU1BFQykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21w
aWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAg
fQorfQorCisvLyBBIHZhcmlhYmxlIGNhbm5vdCBoYXZlIHJlcGVhdGluZyBpbnZhcmlhbnQgcXVh
bGlmaWVycy4KK1RFU1RfRihRdWFsaWZpY2F0aW9uT3JkZXJTaGFkZXJUZXN0LCBSZXBlYXRpbmdJ
bnZhcmlhbnRRdWFsaWZpZXJzKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJp
bmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDtcbiIKKyAgICAgICAgImluIHZlYzQgY29sb3JJTjtcbiIKKyAgICAgICAgImlu
dmFyaWFudCBpbnZhcmlhbnQgb3V0IHZlYzQgY29sb3JPVVQ7XG4iCisgICAgICAgICJ2b2lkIG1h
aW4oKSB7XG4iCisgICAgICAgICJjb2xvck9VVCA9IGNvbG9ySU47XG4iCisgICAgICAgICJ9XG4i
OworCisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nLCBHTF9GUkFHTUVOVF9TSEFERVIsIFNI
X0dMRVMzX1NQRUMpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRp
b24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30K
KworLy8gQSB2YXJpYWJsZSBjYW5ub3QgaGF2ZSByZXBlYXRpbmcgc3RvcmFnZSBxdWFsaWZpZXJz
LgorVEVTVF9GKFF1YWxpZmljYXRpb25PcmRlclNoYWRlclRlc3QsIFJlcGVhdGluZ0F0dHJpYnV0
ZXMpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgImF0dHJpYnV0ZSBhdHRyaWJ1dGUg
dmVjNCBwb3NpdGlvbklOO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAi
Z2xfUG9zaXRpb24gPSBwb3NpdGlvbklOO1xuIgorICAgICAgICAifVxuIjsKKworICAgIGlmIChj
b21waWxlKHNoYWRlclN0cmluZywgR0xfVkVSVEVYX1NIQURFUiwgU0hfR0xFUzNfU1BFQykpCisg
ICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4
cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBXcm9uZyBvcmRl
ciBmb3IgaW52YXJpYW50IHZhcnlpbmcuIEl0IHNob3VsZCBiZSAnaW52YXJpYW50IHZhcnlpbmcn
LCBub3QgJ3ZhcnlpbmcgaW52YXJpYW50Jy4KK1RFU1RfRihRdWFsaWZpY2F0aW9uT3JkZXJTaGFk
ZXJUZXN0LCBWYXJ5aW5nSW52YXJpYW50V3JvbmdPcmRlcikKK3sKKyAgICBjb25zdCBzdGQ6OnN0
cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xu
IgorICAgICAgICAiYXR0cmlidXRlIHZlYzQgcG9zaXRpb25JTjtcbiIKKyAgICAgICAgInZhcnlp
bmcgaW52YXJpYW50IHZlYzQgZGF0YU9VVDtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIK
KyAgICAgICAgImdsX1Bvc2l0aW9uID0gcG9zaXRpb25JTjtcbiIKKyAgICAgICAgImRhdGFPVVQg
PSAwLjUgKiBkYXRhT1VUICsgdmVjNCgwLjUpO1xuIgorICAgICAgICAifVxuIjsKKworICAgIGlm
IChjb21waWxlKHNoYWRlclN0cmluZywgR0xfVkVSVEVYX1NIQURFUiwgU0hfR0xFUzNfU1BFQykp
CisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQs
IGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBBIHZhcmlh
YmxlIGNhbm5vdCBoYXZlIHJlcGVhdGluZyBzdG9yYWdlIHF1YWxpZmllcnMuCitURVNUX0YoUXVh
bGlmaWNhdGlvbk9yZGVyU2hhZGVyVGVzdCwgQXR0cmlidXRlVmFyeWluZ01peCkKK3sKKyAgICBj
b25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nMSA9CisgICAgICAgICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDtcbiIKKyAgICAgICAgImF0dHJpYnV0ZSB2YXJ5aW5nIHZlYzQgcG9zaXRpb25J
TjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgImdsX1Bvc2l0aW9uID0g
cG9zaXRpb25JTjtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAm
c2hhZGVyU3RyaW5nMiA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAg
ICAgICAgInZhcnlpbmcgYXR0cmlidXRlIHZlYzQgcG9zaXRpb25JTjtcbiIKKyAgICAgICAgInZv
aWQgbWFpbigpIHtcbiIKKyAgICAgICAgImdsX1Bvc2l0aW9uID0gcG9zaXRpb25JTjtcbiIKKyAg
ICAgICAgIn1cbiI7CisKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcxLCBHTF9WRVJURVhf
U0hBREVSLCBTSF9HTEVTM19TUEVDKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVy
IGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsK
KyAgICB9CisKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcyLCBHTF9WRVJURVhfU0hBREVS
LCBTSF9HTEVTM19TUEVDKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBp
bGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKKyAgICB9
Cit9CisKKy8vIEEgdmFyaWFibGUgY2Fubm90IGhhdmUgcmVwZWF0aW5nIGludGVycG9sYXRpb24g
cXVhbGlmaWVycy4KK1RFU1RfRihRdWFsaWZpY2F0aW9uT3JkZXJTaGFkZXJUZXN0LCBSZXBlYXRp
bmdJbnRlcnBvbGF0aW9uUXVhbGlmaWVycykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hh
ZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJpbiB2ZWM0IHBvc2l0aW9uSU47XG4iCisg
ICAgICAgICJmbGF0IGZsYXQgb3V0IHZlYzQgZGF0YU9VVDtcbiIKKyAgICAgICAgInZvaWQgbWFp
bigpIHtcbiIKKyAgICAgICAgImdsX1Bvc2l0aW9uID0gcG9zaXRpb25JTjtcbiIKKyAgICAgICAg
ImRhdGFPVVQgPSAwLjUgKiBkYXRhT1VUICsgdmVjNCgwLjUpO1xuIgorICAgICAgICAifVxuIjsK
KworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZywgR0xfVkVSVEVYX1NIQURFUiwgU0hfR0xF
UzNfU1BFQykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBz
dWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisv
LyBXcm9uZyBvcmRlciBmb3IgdGhlIGludGVycG9sYXRpb24gYW5kIHN0b3JhZ2UgcXVhbGlmaWVy
LiBUaGUgY29ycmVjdCBvcmRlciBpcyBpbnRlcnBvbGF0aW9uCisvLyBxdWFsaWZpZXIgYW5kIHRo
ZW4gc3RvcmFnZSBxdWFsaWZpZXIuCitURVNUX0YoUXVhbGlmaWNhdGlvbk9yZGVyU2hhZGVyVGVz
dCwgV3JvbmdPcmRlckludGVycG9sYXRpb25TdG9yYWdlUXVhbGlmaWVycykKK3sKKyAgICBjb25z
dCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xu
IgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJpbiB2ZWM0
IHBvc2l0aW9uSU47XG4iCisgICAgICAgICJvdXQgZmxhdCB2ZWM0IGRhdGFPVVQ7XG4iCisgICAg
ICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICJnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uSU47
XG4iCisgICAgICAgICJkYXRhT1VUID0gMC41ICogZGF0YU9VVCArIHZlYzQoMC41KTtcbiIKKyAg
ICAgICAgIn1cbiI7CisKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcsIEdMX1ZFUlRFWF9T
SEFERVIsIFNIX0dMRVMzX1NQRUMpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIg
Y29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwor
ICAgIH0KK30KKworLy8gVGhlIGNvcnJlY3Qgb3JkZXIgaXMgaW52YXJpYW50LCBpbnRlcnBvbGF0
aW9uLCBzdG9yYWdlLgorVEVTVF9GKFF1YWxpZmljYXRpb25PcmRlclNoYWRlclRlc3QsIFdyb25n
T3JkZXJJbnZhcmlhbnRJbnRlcnBvbGF0aW9uU3RvcmFnZVF1YWxpZmllcnMpCit7CisgICAgY29u
c3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNc
biIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAiaW4gdmVj
NCBwb3NpdGlvbklOO1xuIgorICAgICAgICAiZmxhdCBpbnZhcmlhbnQgb3V0IHZlYzQgZGF0YU9V
VDtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgImdsX1Bvc2l0aW9uID0g
cG9zaXRpb25JTjtcbiIKKyAgICAgICAgImRhdGFPVVQgPSAwLjUgKiBkYXRhT1VUICsgdmVjNCgw
LjUpO1xuIgorICAgICAgICAifVxuIjsKKworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZywg
R0xfVkVSVEVYX1NIQURFUiwgU0hfR0xFUzNfU1BFQykpCisgICAgeworICAgICAgICBGQUlMKCkg
PDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwg
bUluZm9Mb2c7CisgICAgfQorfQorCisvLyBUaGUgaW52YXJpYW50IHF1YWxpZmVyIGhhcyB0byBi
ZSBiZWZvcmUgdGhlIHN0b3JhZ2UgcXVhbGlmaWVycy4KK1RFU1RfRihRdWFsaWZpY2F0aW9uT3Jk
ZXJTaGFkZXJUZXN0LCBXcm9uZ09yZGVySW52YXJpYW50Tm90Rmlyc3QpCit7CisgICAgY29uc3Qg
c3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIK
KyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAiaW4gdmVjNCBw
b3NpdGlvbklOO1xuIgorICAgICAgICAiY2VudHJvaWQgb3V0IGludmFyaWFudCB2ZWM0IGRhdGFP
VVQ7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICJnbF9Qb3NpdGlvbiA9
IHBvc2l0aW9uSU47XG4iCisgICAgICAgICJkYXRhT1VUID0gMC41ICogZGF0YU9VVCArIHZlYzQo
MC41KTtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcs
IEdMX1ZFUlRFWF9TSEFERVIsIFNIX0dMRVMzX1NQRUMpKQorICAgIHsKKyAgICAgICAgRkFJTCgp
IDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8
IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gVGhlIHByZWNpc2lvbiBxdWFsaWZpZXIgaXMgYWZ0
ZXIgdGhlIHN0b3JhZ2UgcXVhbGlmaWVycy4KK1RFU1RfRihRdWFsaWZpY2F0aW9uT3JkZXJTaGFk
ZXJUZXN0LCBXcm9uZ09yZGVyUHJlY2lzaW9uKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZz
aGFkZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgImluIHZlYzQgcG9zaXRpb25JTjtcbiIK
KyAgICAgICAgImhpZ2hwIGNlbnRyb2lkIG91dCB2ZWM0IGRhdGFPVVQ7XG4iCisgICAgICAgICJ2
b2lkIG1haW4oKSB7XG4iCisgICAgICAgICJnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uSU47XG4iCisg
ICAgICAgICJkYXRhT1VUID0gMC41ICogZGF0YU9VVCArIHZlYzQoMC41KTtcbiIKKyAgICAgICAg
In1cbiI7CisKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcsIEdMX1ZFUlRFWF9TSEFERVIs
IFNIX0dMRVMzX1NQRUMpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGls
YXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0K
K30KKworLy8gQSB2YXJpYWJsZSBjYW5ub3QgaGF2ZSBtdWx0aXBsZSBkZWNsYXJhdGlvbnMgb2Yg
dGhlICdpbicgc3RvcmFnZSBxdWFsaWZpZXIuCitURVNUX0YoUXVhbGlmaWNhdGlvbk9yZGVyU2hh
ZGVyVGVzdCwgUmVwZWF0aW5nSW5RdWFsaWZpZXIpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcg
JnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAiaW4gaW4gdmVjNCBwb3NpdGlvbklO
O1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiZ2xfUG9zaXRpb24gPSBw
b3NpdGlvbklOO1xuIgorICAgICAgICAifVxuIjsKKworICAgIGlmIChjb21waWxlKHNoYWRlclN0
cmluZywgR0xfVkVSVEVYX1NIQURFUiwgU0hfR0xFUzNfU1BFQykpCisgICAgeworICAgICAgICBG
QUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJl
ICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBBIHZhcmlhYmxlIGNhbm5vdCBoYXZlIG11
bHRpcGxlIGRlY2xhcmF0aW9ucyBvZiB0aGUgJ2F0dHJpYnV0ZScgc3RvcmFnZSBxdWFsaWZpZXIu
CitURVNUX0YoUXVhbGlmaWNhdGlvbk9yZGVyU2hhZGVyVGVzdCwgUmVwZWF0aW5nQXR0cmlidXRl
UXVhbGlmaWVyKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAg
ICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJhdHRyaWJ1dGUgYXR0
cmlidXRlIHZlYzQgcG9zaXRpb25JTjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAg
ICAgICAgImdsX1Bvc2l0aW9uID0gcG9zaXRpb25JTjtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAg
ICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcsIEdMX1ZFUlRFWF9TSEFERVIsIFNIX0dMRVMzX1NQ
RUMpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2Vl
ZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gVmVy
dGV4IGlucHV0IGNhbm5vdCBiZSBxdWFsaWZpZWQgd2l0aCBpbnZhcmlhbnQuCitURVNUX0YoUXVh
bGlmaWNhdGlvbk9yZGVyU2hhZGVyVGVzdCwgSW52YXJpYW50VmVydGV4SW5wdXQpCit7CisgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDtcbiIKKyAgICAgICAgImludmFyaWFudCBhdHRyaWJ1dGUgdmVjNCBwb3NpdGlv
bklOO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiZ2xfUG9zaXRpb24g
PSBwb3NpdGlvbklOO1xuIgorICAgICAgICAifVxuIjsKKworICAgIGlmIChjb21waWxlKHNoYWRl
clN0cmluZywgR0xfVkVSVEVYX1NIQURFUiwgU0hfR0xFUzNfU1BFQykpCisgICAgeworICAgICAg
ICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWls
dXJlICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisvLyBDYW5ub3QgaGF2ZSBhIGZ1bmN0aW9u
IHBhcmFtZXRlciB3aXRoIHRoZSBpbnZhcmlhbnQgcXVhbGlmaWVyLgorVEVTVF9GKFF1YWxpZmlj
YXRpb25PcmRlclNoYWRlclRlc3QsIEludmFsaWRGdW5jdGlvblBhcmFtZXRlcnNJbnZhcmlhbnQp
Cit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVj
aXNpb24gbG93cCBmbG9hdDtcbiIKKyAgICAgICAgInZhcnlpbmcgZmxvYXQgdmFsdWU7XG4iCisg
ICAgICAgICJmbG9hdCBmb28wIChpbnZhcmlhbnQgaW4gZmxvYXQgeCkge1xuIgorICAgICAgICAi
ICAgcmV0dXJuIDIuMCp4O1xuIgorICAgICAgICAifVxuIgorICAgICAgICAidm9pZCBtYWluKClc
biIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIglnbF9GcmFnQ29sb3IgPSB2ZWM0KGZvbzAodmFs
dWUpKTtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcs
IEdMX0ZSQUdNRU5UX1NIQURFUiwgU0hfR0xFUzNfU1BFQykpCisgICAgeworICAgICAgICBGQUlM
KCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlIiA8
PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIENhbm5vdCBoYXZlIGEgZnVuY3Rpb24gcGFyYW1l
dGVyIHdpdGggdGhlIGF0dHJpYnV0ZSBxdWFsaWZpZXIuCitURVNUX0YoUXVhbGlmaWNhdGlvbk9y
ZGVyU2hhZGVyVGVzdCwgSW52YWxpZEZ1bmN0aW9uUGFyYW1ldGVyc0F0dHJpYnV0ZSkKK3sKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNpc2lvbiBs
b3dwIGZsb2F0O1xuIgorICAgICAgICAidmFyeWluZyBmbG9hdCB2YWx1ZTtcbiIKKyAgICAgICAg
ImZsb2F0IGZvbzAgKGF0dHJpYnV0ZSBmbG9hdCB4KSB7XG4iCisgICAgICAgICIgICByZXR1cm4g
Mi4wKng7XG4iCisgICAgICAgICJ9XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAg
ICAie1xuIgorICAgICAgICAiCWdsX0ZyYWdDb2xvciA9IHZlYzQoZm9vMCh2YWx1ZSkpO1xuIgor
ICAgICAgICAifVxuIjsKKworICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZywgR0xfRlJBR01F
TlRfU0hBREVSLCBTSF9HTEVTM19TUEVDKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hh
ZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUiIDw8IG1JbmZvTG9n
OworICAgIH0KK30KKworLy8gQ2Fubm90IGhhdmUgYSBmdW5jdGlvbiBwYXJhbWV0ZXIgd2l0aCB0
aGUgdmFyeWluZyBxdWFsaWZpZXIuCitURVNUX0YoUXVhbGlmaWNhdGlvbk9yZGVyU2hhZGVyVGVz
dCwgSW52YWxpZEZ1bmN0aW9uUGFyYW1ldGVyc1ZhcnlpbmcpCit7CisgICAgY29uc3Qgc3RkOjpz
dHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNpb24gbG93cCBmbG9hdDtcbiIK
KyAgICAgICAgInZhcnlpbmcgZmxvYXQgdmFsdWU7XG4iCisgICAgICAgICJmbG9hdCBmb28wICh2
YXJ5aW5nIGZsb2F0IHgpIHtcbiIKKyAgICAgICAgIiAgIHJldHVybiAyLjAqeDtcbiIKKyAgICAg
ICAgIn1cbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAg
ICIJZ2xfRnJhZ0NvbG9yID0gdmVjNChmb28wKHZhbHVlKSk7XG4iCisgICAgICAgICJ9XG4iOwor
CisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nLCBHTF9GUkFHTUVOVF9TSEFERVIsIFNIX0dM
RVMzX1NQRUMpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24g
c3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSIgPDwgbUluZm9Mb2c7CisgICAgfQorfQorCisv
LyBDYW5ub3QgaGF2ZSBhIGZ1bmN0aW9uIHBhcmFtZXRlciB3aXRoIHRoZSBsYXlvdXQgcXVhbGlm
aWVyCitURVNUX0YoUXVhbGlmaWNhdGlvbk9yZGVyU2hhZGVyVGVzdCwgSW52YWxpZEZ1bmN0aW9u
UGFyYW1ldGVyc0xheW91dCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5n
ID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIGxvd3Ag
ZmxvYXQ7XG4iCisgICAgICAgICJpbiBmbG9hdCB2YWx1ZTtcbiIKKyAgICAgICAgImZsb2F0IGZv
bzAgKGxheW91dChsb2NhdGlvbiA9IDMpIGluIGZsb2F0IHgpIHtcbiIKKyAgICAgICAgIiAgIHJl
dHVybiAyLjAqeDtcbiIKKyAgICAgICAgIn1cbiIKKyAgICAgICAgIm91dCB2ZWM0IGNvbG9yT1VU
O1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIglj
b2xvck9VVCA9IHZlYzQoZm9vMCh2YWx1ZSkpO1xuIgorICAgICAgICAifVxuIjsKKworICAgIGlm
IChjb21waWxlKHNoYWRlclN0cmluZywgR0xfRlJBR01FTlRfU0hBREVSLCBTSF9HTEVTM19TUEVD
KSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRl
ZCwgZXhwZWN0aW5nIGZhaWx1cmUiIDw8IG1JbmZvTG9nOworICAgIH0KK30KKworLy8gQ2Fubm90
IGhhdmUgYSBmdW5jdGlvbiBwYXJhbWV0ZXIgd2l0aCB0aGUgY2VudHJvaWQgcXVhbGlmaWVyCitU
RVNUX0YoUXVhbGlmaWNhdGlvbk9yZGVyU2hhZGVyVGVzdCwgSW52YWxpZEZ1bmN0aW9uUGFyYW1l
dGVyc0NlbnRyb2lkSW4pCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9
CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBsb3dwIGZs
b2F0O1xuIgorICAgICAgICAiaW4gZmxvYXQgdmFsdWU7XG4iCisgICAgICAgICJmbG9hdCBmb28w
IChjZW50cm9pZCBpbiBmbG9hdCB4KSB7XG4iCisgICAgICAgICIgICByZXR1cm4gMi4wKng7XG4i
CisgICAgICAgICJ9XG4iCisgICAgICAgICJvdXQgdmVjNCBjb2xvck9VVDtcbiIKKyAgICAgICAg
InZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIJY29sb3JPVVQgPSB2ZWM0
KGZvbzAodmFsdWUpKTtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBpZiAoY29tcGlsZShzaGFk
ZXJTdHJpbmcsIEdMX0ZSQUdNRU5UX1NIQURFUiwgU0hfR0xFUzNfU1BFQykpCisgICAgeworICAg
ICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBm
YWlsdXJlIiA8PCBtSW5mb0xvZzsKKyAgICB9Cit9CisKKy8vIENhbm5vdCBoYXZlIGEgZnVuY3Rp
b24gcGFyYW1ldGVyIHdpdGggdGhlIGZsYXQgcXVhbGlmaWVyCitURVNUX0YoUXVhbGlmaWNhdGlv
bk9yZGVyU2hhZGVyVGVzdCwgSW52YWxpZEZ1bmN0aW9uUGFyYW1ldGVyc0ZsYXRJbikKK3sKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMw
MCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIGxvd3AgZmxvYXQ7XG4iCisgICAgICAgICJpbiBm
bG9hdCB2YWx1ZTtcbiIKKyAgICAgICAgImZsb2F0IGZvbzAgKGZsYXQgaW4gZmxvYXQgeCkge1xu
IgorICAgICAgICAiICAgcmV0dXJuIDIuMCp4O1xuIgorICAgICAgICAifVxuIgorICAgICAgICAi
b3V0IHZlYzQgY29sb3JPVVQ7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAi
e1xuIgorICAgICAgICAiCWNvbG9yT1VUID0gdmVjNChmb28wKHZhbHVlKSk7XG4iCisgICAgICAg
ICJ9XG4iOworCisgICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nLCBHTF9GUkFHTUVOVF9TSEFE
RVIsIFNIX0dMRVMzX1NQRUMpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29t
cGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSIgPDwgbUluZm9Mb2c7CisgICAg
fQorfQorCisvLyBPdXRwdXQgbGF5b3V0IGxvY2F0aW9uIHF1YWxpZmllciBjYW4ndCBhcHBlYXIg
bW9yZSB0aGFuIG9uY2Ugd2l0aGluIGEgZGVjbGFyYXRpb24uCisvLyBHTFNMIEVTIDMuMDAuNiBz
ZWN0aW9uIDQuMy44LjIgT3V0cHV0IExheW91dCBRdWFsaWZpZXJzLgorVEVTVF9GKFF1YWxpZmlj
YXRpb25PcmRlclNoYWRlclRlc3QsIFR3b091dHB1dExvY2F0aW9ucykKK3sKKyAgICBjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgor
ICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJsYXlvdXQobG9j
YXRpb249MSwgbG9jYXRpb249Mikgb3V0IHZlYzQgbXlDb2xvcjtcbiIKKyAgICAgICAgInZvaWQg
bWFpbigpIHtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJp
bmcsIEdMX0ZSQUdNRU5UX1NIQURFUiwgU0hfR0xFUzNfU1BFQykpCisgICAgeworICAgICAgICBG
QUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJl
ICIgPDwgbUluZm9Mb2c7CisgICAgfQorfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1JlY29yZENvbnN0YW50UHJlY2lzaW9uX3Rlc3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxl
cl90ZXN0cy9SZWNvcmRDb25zdGFudFByZWNpc2lvbl90ZXN0LmNwcAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvUmVjb3Jk
Q29uc3RhbnRQcmVjaXNpb25fdGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MyBA
QAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKy8vCisvLyBSZWNvcmRDb25zdGFudFByZWNpc2lvbl90ZXN0LmNwcDoKKy8v
ICAgVGVzdCBmb3IgcmVjb3JkaW5nIGNvbnN0YW50IHZhcmlhYmxlIHByZWNpc2lvbiB3aGVuIGl0
IGFmZmVjdHMgY29uc3VtaW5nIGV4cHJlc3Npb24uCisvLworCisjaW5jbHVkZSAiYW5nbGVfZ2wu
aCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFu
Zy5oIgorI2luY2x1ZGUgInRlc3RzL3Rlc3RfdXRpbHMvY29tcGlsZXJfdGVzdC5oIgorCitjbGFz
cyBSZWNvcmRDb25zdGFudFByZWNpc2lvblRlc3QgOiBwdWJsaWMgTWF0Y2hPdXRwdXRDb2RlVGVz
dAoreworICBwdWJsaWM6CisgICAgUmVjb3JkQ29uc3RhbnRQcmVjaXNpb25UZXN0KCkgOiBNYXRj
aE91dHB1dENvZGVUZXN0KEdMX0ZSQUdNRU5UX1NIQURFUiwgMCwgU0hfRVNTTF9PVVRQVVQpIHt9
Cit9OworCisvLyBUaGUgY29uc3RhbnQgY2Fubm90IGJlIGZvbGRlZCBpZiBpdHMgcHJlY2lzaW9u
IGlzIGhpZ2hlciB0aGFuIHRoZSBvdGhlciBvcGVyYW5kcywgc2luY2UgaXQKKy8vIGluY3JlYXNl
cyB0aGUgcHJlY2lzaW9uIG9mIHRoZSBjb25zdW1pbmcgZXhwcmVzc2lvbi4KK1RFU1RfRihSZWNv
cmRDb25zdGFudFByZWNpc2lvblRlc3QsIEhpZ2hlclByZWNpc2lvbkNvbnN0YW50QXNQYXJhbWV0
ZXIpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJ1
bmlmb3JtIG1lZGl1bXAgZmxvYXQgdTsiCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAg
ICAie1xuIgorICAgICAgICAiICAgIGNvbnN0IGhpZ2hwIGZsb2F0IGEgPSA0MDk2LjU7XG4iCisg
ICAgICAgICIgICAgbWVkaXVtcCBmbG9hdCBiID0gZnJhY3QoYSArIHUpO1xuIgorICAgICAgICAi
ICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoYik7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBp
bGUoc2hhZGVyU3RyaW5nKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluQ29kZSgiY29uc3QgaGln
aHAgZmxvYXQgcyIpKTsKKyAgICBBU1NFUlRfRkFMU0UoZm91bmRJbkNvZGUoImZyYWN0KDQwOTYu
NSIpKTsKKyAgICBBU1NFUlRfRkFMU0UoZm91bmRJbkNvZGUoImZyYWN0KCg0MDk2LjUiKSk7Cit9
CisKKy8vIFRoZSBjb25zdGFudCBjYW4gYmUgZm9sZGVkIGlmIGl0cyBwcmVjaXNpb24gaXMgZXF1
YWwgdG8gdGhlIG90aGVyIG9wZXJhbmRzLCBhcyBpdCBkb2VzIG5vdAorLy8gaW5jcmVhc2UgdGhl
IHByZWNpc2lvbiBvZiB0aGUgY29uc3VtaW5nIGV4cHJlc3Npb24uCitURVNUX0YoUmVjb3JkQ29u
c3RhbnRQcmVjaXNpb25UZXN0LCBFcXVhbFByZWNpc2lvbkNvbnN0YW50QXNQYXJhbWV0ZXIpCit7
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJ1bmlmb3Jt
IG1lZGl1bXAgZmxvYXQgdTsiCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xu
IgorICAgICAgICAiICAgIGNvbnN0IG1lZGl1bXAgZmxvYXQgYSA9IDQwOTYuNTtcbiIKKyAgICAg
ICAgIiAgICBtZWRpdW1wIGZsb2F0IGIgPSBmcmFjdChhICsgdSk7XG4iCisgICAgICAgICIgICAg
Z2xfRnJhZ0NvbG9yID0gdmVjNChiKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShz
aGFkZXJTdHJpbmcpOworICAgIEFTU0VSVF9GQUxTRShmb3VuZEluQ29kZSgiY29uc3QgbWVkaXVt
cCBmbG9hdCBzIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5Db2RlKCJmcmFjdCgoNDA5Ni41
IikpOworfQorCisvLyBUaGUgY29uc3RhbnQgY2Fubm90IGJlIGZvbGRlZCBpZiBpdHMgcHJlY2lz
aW9uIGlzIGhpZ2hlciB0aGFuIHRoZSBvdGhlciBvcGVyYW5kcywgc2luY2UgaXQKKy8vIGluY3Jl
YXNlcyB0aGUgcHJlY2lzaW9uIG9mIHRoZSBjb25zdW1pbmcgZXhwcmVzc2lvbi4gVGhpcyBhcHBs
aWVzIGFsc28gd2hlbiB0aGUgY29uc3RhbnQgaXMKKy8vIHBhcnQgb2YgYSBjb25zdGFudCBleHBy
ZXNzaW9uIHRoYXQgY2FuIGJlIGZvbGRlZC4KK1RFU1RfRihSZWNvcmRDb25zdGFudFByZWNpc2lv
blRlc3QsIEZvbGRlZEJpbmFyeUNvbnN0YW50UHJlY2lzaW9uSXNIaWdoZXIpCit7CisgICAgY29u
c3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJ1bmlmb3JtIG1lZGl1bXAg
ZmxvYXQgdTsiCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAg
ICAiICAgIGNvbnN0IGhpZ2hwIGZsb2F0IGEgPSA0MDk1LjU7XG4iCisgICAgICAgICIgICAgbWVk
aXVtcCBmbG9hdCBiID0gZnJhY3QoKGEgKyAxLjApICsgdSk7XG4iCisgICAgICAgICIgICAgZ2xf
RnJhZ0NvbG9yID0gdmVjNChiKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFk
ZXJTdHJpbmcpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5Db2RlKCJjb25zdCBoaWdocCBmbG9h
dCBzIikpOworICAgIEFTU0VSVF9GQUxTRShmb3VuZEluQ29kZSgiZnJhY3QoNDA5Ni41IikpOwor
ICAgIEFTU0VSVF9GQUxTRShmb3VuZEluQ29kZSgiZnJhY3QoKDQwOTYuNSIpKTsKK30KKworCisv
LyBUaGUgY29uc3RhbnQgY2Fubm90IGJlIGZvbGRlZCBpZiBpdHMgcHJlY2lzaW9uIGlzIGhpZ2hl
ciB0aGFuIHRoZSBvdGhlciBvcGVyYW5kcywgc2luY2UgaXQKKy8vIGluY3JlYXNlcyB0aGUgcHJl
Y2lzaW9uIG9mIHRoZSBjb25zdW1pbmcgZXhwcmVzc2lvbi4gVGhpcyBhcHBsaWVzIGFsc28gd2hl
biB0aGUgY29uc3RhbnQgaXMKKy8vIHBhcnQgb2YgYSBjb25zdGFudCBleHByZXNzaW9uIHRoYXQg
Y2FuIGJlIGZvbGRlZC4KK1RFU1RfRihSZWNvcmRDb25zdGFudFByZWNpc2lvblRlc3QsIEZvbGRl
ZFVuYXJ5Q29uc3RhbnRQcmVjaXNpb25Jc0hpZ2hlcikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInVuaWZvcm0gbWVkaXVtcCBmbG9hdCB1OyIKKyAg
ICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgY29uc3Qg
aGlnaHAgZmxvYXQgYSA9IDAuNTtcbiIKKyAgICAgICAgIiAgICBtZWRpdW1wIGZsb2F0IGIgPSBz
aW4oZnJhY3QoYSkgKyB1KTtcbiIKKyAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGIp
O1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNT
RVJUX1RSVUUoZm91bmRJbkNvZGUoImNvbnN0IGhpZ2hwIGZsb2F0IHMiKSk7CisgICAgQVNTRVJU
X0ZBTFNFKGZvdW5kSW5Db2RlKCJzaW4oMC41IikpOworICAgIEFTU0VSVF9GQUxTRShmb3VuZElu
Q29kZSgic2luKCgwLjUiKSk7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvY29tcGlsZXJfdGVzdHMvUmVtb3ZlUG93X3Rlc3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9SZW1vdmVQb3df
dGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2NvbXBpbGVyX3Rlc3RzL1JlbW92ZVBvd190ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE1NSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBSZW1vdmVQb3dfdGVzdC5jcHA6CisvLyAg
IFRlc3RzIGZvciByZW1vdmluZyBwb3coKSBmdW5jdGlvbiBjYWxscyBmcm9tIHRoZSBBU1QuCisv
LworCisjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2lu
Y2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0
b3IvTm9kZVNlYXJjaC5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRv
ckdMU0wuaCIKKworY2xhc3MgUmVtb3ZlUG93VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0Cit7
CisgIHB1YmxpYzoKKyAgICBSZW1vdmVQb3dUZXN0KCkge30KKworICBwcm90ZWN0ZWQ6CisgICAg
dm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBhbGxvY2F0b3IucHVzaCgpOwor
ICAgICAgICBTZXRHbG9iYWxQb29sQWxsb2NhdG9yKCZhbGxvY2F0b3IpOworICAgICAgICBTaEJ1
aWx0SW5SZXNvdXJjZXMgcmVzb3VyY2VzOworICAgICAgICBTaEluaXRCdWlsdEluUmVzb3VyY2Vz
KCZyZXNvdXJjZXMpOworICAgICAgICBtVHJhbnNsYXRvckdMU0wgPSBuZXcgVHJhbnNsYXRvckdM
U0woR0xfRlJBR01FTlRfU0hBREVSLCBTSF9HTEVTMl9TUEVDLCBTSF9HTFNMX0NPTVBBVElCSUxJ
VFlfT1VUUFVUKTsKKyAgICAgICAgQVNTRVJUX1RSVUUobVRyYW5zbGF0b3JHTFNMLT5Jbml0KHJl
c291cmNlcykpOworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgU2FmZURlbGV0ZShtVHJhbnNsYXRvckdMU0wpOworICAgICAgICBTZXRHbG9iYWxQ
b29sQWxsb2NhdG9yKG51bGxwdHIpOworICAgICAgICBhbGxvY2F0b3IucG9wKCk7CisgICAgfQor
CisgICAgdm9pZCBjb21waWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBzaGFkZXJTdHJpbmcpCisgICAg
eworICAgICAgICBjb25zdCBjaGFyICpzaGFkZXJTdHJpbmdzW10gPSB7IHNoYWRlclN0cmluZy5j
X3N0cigpIH07CisgICAgICAgIG1BU1RSb290ID0gbVRyYW5zbGF0b3JHTFNMLT5jb21waWxlVHJl
ZUZvclRlc3Rpbmcoc2hhZGVyU3RyaW5ncywgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSF9PQkpFQ1RfQ09ERSB8IFNIX1JFTU9W
RV9QT1dfV0lUSF9DT05TVEFOVF9FWFBPTkVOVCk7CisgICAgICAgIGlmICghbUFTVFJvb3QpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIFRJbmZvU2luayAmaW5mb1NpbmsgPSBtVHJhbnNsYXRvckdM
U0wtPmdldEluZm9TaW5rKCk7CisgICAgICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxh
dGlvbiBpbnRvIEVTU0wgZmFpbGVkICIgPDwgaW5mb1NpbmsuaW5mby5jX3N0cigpOworICAgICAg
ICB9CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+CisgICAgYm9vbCBmb3VuZEluQVNU
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBUOjpzZWFyY2gobUFTVFJvb3QpOworICAgIH0KKwor
ICBwcml2YXRlOgorICAgIFRyYW5zbGF0b3JHTFNMICptVHJhbnNsYXRvckdMU0w7CisgICAgVElu
dGVybU5vZGUgKm1BU1RSb290OworCisgICAgVFBvb2xBbGxvY2F0b3IgYWxsb2NhdG9yOworfTsK
KworLy8gQ2hlY2sgaWYgdGhlcmUncyBhIHBvdygpIG5vZGUgYW55d2hlcmUgaW4gdGhlIHRyZWUu
CitjbGFzcyBGaW5kUG93IDogcHVibGljIHNoOjpOb2RlU2VhcmNoVHJhdmVyc2VyPEZpbmRQb3c+
Cit7CisgIHB1YmxpYzoKKyAgICBib29sIHZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJt
QmluYXJ5ICpub2RlKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUtPmdldE9wKCkg
PT0gRU9wUG93KQorICAgICAgICB7CisgICAgICAgICAgICBtRm91bmQgPSB0cnVlOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiAhbUZvdW5kOworICAgIH0KK307CisKKy8vIENoZWNrIGlmIHRo
ZSB0cmVlIHN0YXJ0aW5nIGF0IG5vZGUgY29ycmVzcG9uZHMgdG8gZXhwMih5ICogbG9nMih4KSkK
Ky8vIElmIHRoZSB0cmVlIG1hdGNoZXMsIHNldCBiYXNlIHRvIHRoZSBub2RlIGNvcnJlc3BvbmRp
bmcgdG8geC4KK2Jvb2wgSXNQb3dXb3JrYXJvdW5kKFRJbnRlcm1Ob2RlICpub2RlLCBUSW50ZXJt
Tm9kZSAqKmJhc2UpCit7CisgICAgVEludGVybVVuYXJ5ICpleHAgPSBub2RlLT5nZXRBc1VuYXJ5
Tm9kZSgpOworICAgIGlmIChleHAgIT0gbnVsbHB0ciAmJiBleHAtPmdldE9wKCkgPT0gRU9wRXhw
MikKKyAgICB7CisgICAgICAgIFRJbnRlcm1CaW5hcnkgKm11bCA9IGV4cC0+Z2V0T3BlcmFuZCgp
LT5nZXRBc0JpbmFyeU5vZGUoKTsKKyAgICAgICAgaWYgKG11bCAhPSBudWxscHRyICYmIG11bC0+
aXNNdWx0aXBsaWNhdGlvbigpKQorICAgICAgICB7CisgICAgICAgICAgICBUSW50ZXJtVW5hcnkg
KmxvZyA9IG11bC0+Z2V0UmlnaHQoKS0+Z2V0QXNVbmFyeU5vZGUoKTsKKyAgICAgICAgICAgIGlm
IChtdWwtPmdldExlZnQoKS0+Z2V0QXNDb25zdGFudFVuaW9uKCkgJiYgbG9nICE9IG51bGxwdHIp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGxvZy0+Z2V0T3AoKSA9PSBFT3BM
b2cyKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2UpCisg
ICAgICAgICAgICAgICAgICAgICAgICAqYmFzZSA9IGxvZy0+Z2V0T3BlcmFuZCgpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCisvLyBDaGVjayBp
ZiB0aGVyZSdzIGEgbm9kZSB3aXRoIHRoZSBjb3JyZWN0IHdvcmthcm91bmQgdG8gcG93IGFueXdo
ZXJlIGluIHRoZSB0cmVlLgorY2xhc3MgRmluZFBvd1dvcmthcm91bmQgOiBwdWJsaWMgc2g6Ok5v
ZGVTZWFyY2hUcmF2ZXJzZXI8RmluZFBvd1dvcmthcm91bmQ+Cit7CisgIHB1YmxpYzoKKyAgICBi
b29sIHZpc2l0VW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1VbmFyeSAqbm9kZSkgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIG1Gb3VuZCA9IElzUG93V29ya2Fyb3VuZChub2RlLCBudWxscHRyKTsK
KyAgICAgICAgcmV0dXJuICFtRm91bmQ7CisgICAgfQorfTsKKworLy8gQ2hlY2sgaWYgdGhlcmUn
cyBhIG5vZGUgd2l0aCB0aGUgY29ycmVjdCB3b3JrYXJvdW5kIHRvIHBvdyB3aXRoIGFub3RoZXIg
d29ya2Fyb3VuZCB0byBwb3cKKy8vIG5lc3RlZCB3aXRoaW4gaXQgYW55d2hlcmUgaW4gdGhlIHRy
ZWUuCitjbGFzcyBGaW5kTmVzdGVkUG93V29ya2Fyb3VuZCA6IHB1YmxpYyBzaDo6Tm9kZVNlYXJj
aFRyYXZlcnNlcjxGaW5kTmVzdGVkUG93V29ya2Fyb3VuZD4KK3sKKyAgcHVibGljOgorICAgIGJv
b2wgdmlzaXRVbmFyeShWaXNpdCB2aXNpdCwgVEludGVybVVuYXJ5ICpub2RlKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgVEludGVybU5vZGUgKmJhc2UgPSBudWxscHRyOworICAgICAgICBib29s
IG9uZUZvdW5kID0gSXNQb3dXb3JrYXJvdW5kKG5vZGUsICZiYXNlKTsKKyAgICAgICAgaWYgKG9u
ZUZvdW5kICYmIGJhc2UpCisgICAgICAgICAgICBtRm91bmQgPSBJc1Bvd1dvcmthcm91bmQoYmFz
ZSwgbnVsbHB0cik7CisgICAgICAgIHJldHVybiAhbUZvdW5kOworICAgIH0KK307CisKK1RFU1Rf
RihSZW1vdmVQb3dUZXN0LCBQb3dXaXRoQ29uc3RhbnRFeHBvbmVudCkKK3sKKyAgICBjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0O1xuIgorICAgICAgICAidW5pZm9ybSBmbG9hdCB1O1xuIgorICAgICAgICAidm9pZCBtYWlu
KCkge1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gcG93KHZlYzQodSksIHZlYzQoMC41
KSk7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBB
U1NFUlRfRkFMU0UoZm91bmRJbkFTVDxGaW5kUG93PigpKTsKKyAgICBBU1NFUlRfVFJVRShmb3Vu
ZEluQVNUPEZpbmRQb3dXb3JrYXJvdW5kPigpKTsKKyAgICBBU1NFUlRfRkFMU0UoZm91bmRJbkFT
VDxGaW5kTmVzdGVkUG93V29ya2Fyb3VuZD4oKSk7Cit9CisKK1RFU1RfRihSZW1vdmVQb3dUZXN0
LCBOZXN0ZWRQb3dXaXRoQ29uc3RhbnRFeHBvbmVudCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgor
ICAgICAgICAidW5pZm9ybSBmbG9hdCB1O1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgor
ICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gcG93KHBvdyh2ZWM0KHUpLCB2ZWM0KDIuMCkpLCB2
ZWM0KDAuNSkpO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7
CisgICAgQVNTRVJUX0ZBTFNFKGZvdW5kSW5BU1Q8RmluZFBvdz4oKSk7CisgICAgQVNTRVJUX1RS
VUUoZm91bmRJbkFTVDxGaW5kTmVzdGVkUG93V29ya2Fyb3VuZD4oKSk7Cit9CisKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9TaENvbXBpbGVf
dGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2NvbXBpbGVyX3Rlc3RzL1NoQ29tcGlsZV90ZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvU2hDb21waWxlX3Rl
c3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODMgQEAKKy8vCisvLyBDb3B5cmlnaHQg
KGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8g
U2hDb21waWxlX3Rlc3QuY3BwCisvLyAgIFRlc3QgdGhlIFNoQ29tcGlsZSBpbnRlcmZhY2Ugd2l0
aCBkaWZmZXJlbnQgcGFyYW1ldGVycy4KKy8vCisKKyNpbmNsdWRlICJhbmdsZV9nbC5oIgorI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCisK
K2NsYXNzIFNoQ29tcGlsZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdAoreworICBwdWJsaWM6
CisgICAgU2hDb21waWxlVGVzdCgpIHt9CisKKyAgcHJvdGVjdGVkOgorICAgIHZvaWQgU2V0VXAo
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmbVJlc291
cmNlcyk7CisgICAgICAgIG1Db21waWxlciA9IFNoQ29uc3RydWN0Q29tcGlsZXIoR0xfRlJBR01F
TlRfU0hBREVSLCBTSF9XRUJHTF9TUEVDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNIX0dMU0xfQ09NUEFUSUJJTElUWV9PVVRQVVQsICZtUmVzb3VyY2VzKTsKKyAg
ICAgICAgQVNTRVJUX1RSVUUobUNvbXBpbGVyICE9IG51bGxwdHIpIDw8ICJDb21waWxlciBjb3Vs
ZCBub3QgYmUgY29uc3RydWN0ZWQuIjsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIGlmIChtQ29tcGlsZXIpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIFNoRGVzdHJ1Y3QobUNvbXBpbGVyKTsKKyAgICAgICAgICAgIG1Db21waWxlciA9IG51bGxw
dHI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHRlc3RDb21waWxlKGNvbnN0IGNoYXIg
KipzaGFkZXJTdHJpbmdzLCBpbnQgc3RyaW5nQ291bnQsIGJvb2wgZXhwZWN0YXRpb24pCisgICAg
eworICAgICAgICBib29sIHN1Y2Nlc3MgICAgICAgICAgICAgICAgICA9IFNoQ29tcGlsZShtQ29t
cGlsZXIsIHNoYWRlclN0cmluZ3MsIHN0cmluZ0NvdW50LCAwKTsKKyAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJmNvbXBpbGVMb2cgPSBTaEdldEluZm9Mb2cobUNvbXBpbGVyKTsKKyAgICAgICAg
RVhQRUNUX0VRKGV4cGVjdGF0aW9uLCBzdWNjZXNzKSA8PCBjb21waWxlTG9nOworICAgIH0KKwor
ICBwcml2YXRlOgorICAgIFNoQnVpbHRJblJlc291cmNlcyBtUmVzb3VyY2VzOworICAgIFNoSGFu
ZGxlIG1Db21waWxlcjsKK307CisKKy8vIFRlc3QgY2FsbGluZyBTaENvbXBpbGUgd2l0aCBtb3Jl
IHRoYW4gb25lIHNoYWRlciBzb3VyY2Ugc3RyaW5nLgorVEVTVF9GKFNoQ29tcGlsZVRlc3QsIE11
bHRpcGxlU2hhZGVyU3RyaW5ncykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3Ry
aW5nMSA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInZv
aWQgbWFpbigpIHtcbiI7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZzIgPQor
ICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKKyAgICAgICAgIn0iOwor
CisgICAgY29uc3QgY2hhciAqc2hhZGVyU3RyaW5nc1tdID0ge3NoYWRlclN0cmluZzEuY19zdHIo
KSwgc2hhZGVyU3RyaW5nMi5jX3N0cigpfTsKKworICAgIHRlc3RDb21waWxlKHNoYWRlclN0cmlu
Z3MsIDIsIHRydWUpOworfQorCisvLyBUZXN0IGNhbGxpbmcgU2hDb21waWxlIHdpdGggYSB0b2tl
bnMgc3BsaXQgaW50byBkaWZmZXJlbnQgc2hhZGVyIHNvdXJjZSBzdHJpbmdzLgorVEVTVF9GKFNo
Q29tcGlsZVRlc3QsIFRva2Vuc1NwbGl0SW5TaGFkZXJTdHJpbmdzKQoreworICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcxID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0O1xuIgorICAgICAgICAidm9pZCBtYSI7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRl
clN0cmluZzIgPQorICAgICAgICAiaW4oKSB7XG4iCisgICAgICAgICIjaSI7CisgICAgY29uc3Qg
c3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZzMgPQorICAgICAgICAiZiAxXG4iCisgICAgICAgICIg
ICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjApO1xuIgorICAgICAgICAiI2VuZGlmXG4iCisgICAg
ICAgICJ9IjsKKworICAgIGNvbnN0IGNoYXIgKnNoYWRlclN0cmluZ3NbXSA9IHtzaGFkZXJTdHJp
bmcxLmNfc3RyKCksIHNoYWRlclN0cmluZzIuY19zdHIoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2hhZGVyU3RyaW5nMy5jX3N0cigpfTsKKworICAgIHRlc3RDb21waWxl
KHNoYWRlclN0cmluZ3MsIDMsIHRydWUpOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1NoYWRlckV4dGVuc2lvbl90ZXN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVz
dHMvU2hhZGVyRXh0ZW5zaW9uX3Rlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9TaGFkZXJFeHRlbnNpb25fdGVz
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMTggQEAKKy8vCisvLyBDb3B5cmlnaHQg
KGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8g
RXh0ZW5zaW9uX3Rlc3QuY3BwCisvLyAgIFRlc3QgdGhhdCBzaGFkZXJzIG5lZWQgdmFyaW91cyBl
eHRlbnNpb25zIHRvIGJlIGNvbXBpbGVkLgorLy8KKworI2luY2x1ZGUgImFuZ2xlX2dsLmgiCisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIK
Kworc3RhdGljIGNvbnN0IGNoYXIgKkZyYWdEZXB0aEV4dFNoZHJbXSA9Cit7CisgICAgLy8gRmly
c3Qgc3RyaW5nIG9mIHRoZSBzaGFkZXIuIFRoZSByZXF1aXJlZCBwcmFnbWEgZGVjbGFyYXRpb24u
CisgICAgIiNleHRlbnNpb24gR0xfRVhUX2ZyYWdfZGVwdGggOiBlbmFibGVcbiIsCisKKyAgICAv
LyBTZWNvbmQgc3RyaW5nIG9mIHRoZSBzaGFkZXIuIFRoZSByZXN0IG9mIHRoZSBzaGFkZXIgYm9k
eS4KKyAgICAidm9pZCBtYWluKCkgeyBnbF9GcmFnRGVwdGhFWFQgPSAxLjA7IH1cbiIKK307CisK
K3N0YXRpYyBjb25zdCBjaGFyICpTdGFuZERlcml2RXh0U2hkcltdID0KK3sKKyAgICAvLyBGaXJz
dCBzdHJpbmcgb2YgdGhlIHNoYWRlci4gVGhlIHJlcXVpcmVkIHByYWdtYSBkZWNsYXJhdGlvbi4K
KyAgICAiI2V4dGVuc2lvbiBHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgOiBlbmFibGVcbiIs
CisKKyAgICAvLyBTZWNvbmQgc3RyaW5nIG9mIHRoZSBzaGFkZXIuIFRoZSByZXN0IG9mIHRoZSBz
aGFkZXIgYm9keS4KKyAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgInZhcnlp
bmcgdmVjMiB0ZXhDb29yZDtcbiIKKyAgICAidm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2
ZWM0KGRGZHgodGV4Q29vcmQueCksIGRGZHkodGV4Q29vcmQueSksIGZ3aWR0aCh0ZXhDb29yZC54
KSwgMS4wKTsgfVxuIgorfTsKKworc3RhdGljIGNvbnN0IGNoYXIgKlRleHR1cmVMT0RTaGRyW10g
PQoreworICAgIC8vIEZpcnN0IHN0cmluZyBvZiB0aGUgc2hhZGVyLiBUaGUgcmVxdWlyZWQgcHJh
Z21hIGRlY2xhcmF0aW9uLgorICAgICIjZXh0ZW5zaW9uIEdMX0VYVF9zaGFkZXJfdGV4dHVyZV9s
b2QgOiBlbmFibGVcbiIsCisKKyAgICAvLyBTZWNvbmQgc3RyaW5nIG9mIHRoZSBzaGFkZXIuIFRo
ZSByZXN0IG9mIHRoZSBzaGFkZXIgYm9keS4KKyAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
XG4iCisgICAgInZhcnlpbmcgdmVjMiB0ZXhDb29yZDB2O1xuIgorICAgICJ1bmlmb3JtIGZsb2F0
IGxvZDtcbiIKKyAgICAidW5pZm9ybSBzYW1wbGVyMkQgdGV4O1xuIgorICAgICJ2b2lkIG1haW4o
KSB7IHZlYzQgY29sb3IgPSB0ZXh0dXJlMkRMb2RFWFQodGV4LCB0ZXhDb29yZDB2LCBsb2QpOyB9
XG4iCit9OworCitjbGFzcyBTaGFkZXJFeHRlbnNpb25UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QKK3sKKyAgcHVibGljOgorICAgIFNoYWRlckV4dGVuc2lvblRlc3QoKSB7fQorCisgIHByb3Rl
Y3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQorICAgIHsKKyAgICAgICAgU2hJbml0QnVp
bHRJblJlc291cmNlcygmbVJlc291cmNlcyk7CisgICAgICAgIG1Db21waWxlciA9IE5VTEw7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKKyAgICB7CisgICAgICAgIERlc3Ry
b3lDb21waWxlcigpOworICAgIH0KKworICAgIHZvaWQgRGVzdHJveUNvbXBpbGVyKCkKKyAgICB7
CisgICAgICAgIGlmIChtQ29tcGlsZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIFNoRGVzdHJ1
Y3QobUNvbXBpbGVyKTsKKyAgICAgICAgICAgIG1Db21waWxlciA9IE5VTEw7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICB2b2lkIEluaXRpYWxpemVDb21waWxlcigpCisgICAgeworICAgICAgICBE
ZXN0cm95Q29tcGlsZXIoKTsKKyAgICAgICAgbUNvbXBpbGVyID0gU2hDb25zdHJ1Y3RDb21waWxl
cihHTF9GUkFHTUVOVF9TSEFERVIsIFNIX1dFQkdMX1NQRUMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU0hfR0xTTF9DT01QQVRJQklMSVRZX09VVFBVVCwgJm1SZXNv
dXJjZXMpOworICAgICAgICBBU1NFUlRfVFJVRShtQ29tcGlsZXIgIT0gTlVMTCkgPDwgIkNvbXBp
bGVyIGNvdWxkIG5vdCBiZSBjb25zdHJ1Y3RlZC4iOworICAgIH0KKworICAgIHZvaWQgVGVzdFNo
YWRlckV4dGVuc2lvbihjb25zdCBjaGFyICoqc2hhZGVyU3RyaW5ncywgaW50IHN0cmluZ0NvdW50
LCBib29sIGV4cGVjdGF0aW9uKQorICAgIHsKKyAgICAgICAgYm9vbCBzdWNjZXNzID0gU2hDb21w
aWxlKG1Db21waWxlciwgc2hhZGVyU3RyaW5ncywgc3RyaW5nQ291bnQsIDApOworICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgY29tcGlsZUxvZyA9IFNoR2V0SW5mb0xvZyhtQ29tcGlsZXIpOwor
ICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0YXRpb24sIHN1Y2Nlc3MpIDw8IGNvbXBpbGVMb2c7Cisg
ICAgfQorCisgIHByb3RlY3RlZDoKKyAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgbVJlc291cmNlczsK
KyAgICBTaEhhbmRsZSBtQ29tcGlsZXI7Cit9OworCitURVNUX0YoU2hhZGVyRXh0ZW5zaW9uVGVz
dCwgRnJhZ0RlcHRoRXh0UmVxdWlyZXNFeHQpCit7CisgICAgLy8gRXh0ZW5zaW9uIGlzIHJlcXVp
cmVkIHRvIGNvbXBpbGUgcHJvcGVybHkuCisgICAgbVJlc291cmNlcy5FWFRfZnJhZ19kZXB0aCA9
IDA7CisgICAgSW5pdGlhbGl6ZUNvbXBpbGVyKCk7CisgICAgVGVzdFNoYWRlckV4dGVuc2lvbihG
cmFnRGVwdGhFeHRTaGRyLCAyLCBmYWxzZSk7Cit9CisKK1RFU1RfRihTaGFkZXJFeHRlbnNpb25U
ZXN0LCBGcmFnRGVwdGhFeHRSZXF1aXJlc1ByYWdtYSkKK3sKKyAgICAvLyBQcmFnbWEgaXMgcmVx
dWlyZWQgdG8gY29tcGlsZSBwcm9wZXJseS4KKyAgICBtUmVzb3VyY2VzLkVYVF9mcmFnX2RlcHRo
ID0gMTsKKyAgICBJbml0aWFsaXplQ29tcGlsZXIoKTsKKyAgICBUZXN0U2hhZGVyRXh0ZW5zaW9u
KCZGcmFnRGVwdGhFeHRTaGRyWzFdLCAxLCBmYWxzZSk7Cit9CisKK1RFU1RfRihTaGFkZXJFeHRl
bnNpb25UZXN0LCBGcmFnRGVwdGhFeHRDb21waWxlcykKK3sKKyAgICAvLyBUZXN0IHRoYXQgaXQg
Y29tcGlsZXMgcHJvcGVybHkgd2l0aCBleHRlbnNpb24gZW5hYmxlZC4KKyAgICBtUmVzb3VyY2Vz
LkVYVF9mcmFnX2RlcHRoID0gMTsKKyAgICBJbml0aWFsaXplQ29tcGlsZXIoKTsKKyAgICBUZXN0
U2hhZGVyRXh0ZW5zaW9uKEZyYWdEZXB0aEV4dFNoZHIsIDIsIHRydWUpOworfQorCitURVNUX0Yo
U2hhZGVyRXh0ZW5zaW9uVGVzdCwgRnJhZ0RlcHRoRXh0UmVzZXRzSW50ZXJuYWxTdGF0ZXMpCit7
CisgICAgLy8gVGVzdCB0aGF0IGV4dGVuc2lvbiBpbnRlcm5hbCBzdGF0ZXMgYXJlIHJlc2V0IHBy
b3Blcmx5IGJldHdlZW4gY29tcGlsZXMuCisgICAgbVJlc291cmNlcy5FWFRfZnJhZ19kZXB0aCA9
IDE7CisgICAgSW5pdGlhbGl6ZUNvbXBpbGVyKCk7CisKKyAgICBUZXN0U2hhZGVyRXh0ZW5zaW9u
KEZyYWdEZXB0aEV4dFNoZHIsIDIsIHRydWUpOworICAgIFRlc3RTaGFkZXJFeHRlbnNpb24oJkZy
YWdEZXB0aEV4dFNoZHJbMV0sIDEsIGZhbHNlKTsKKyAgICBUZXN0U2hhZGVyRXh0ZW5zaW9uKEZy
YWdEZXB0aEV4dFNoZHIsIDIsIHRydWUpOworfQorCitURVNUX0YoU2hhZGVyRXh0ZW5zaW9uVGVz
dCwgU3RhbmREZXJpdkV4dFJlcXVpcmVzRXh0KQoreworICAgIC8vIEV4dGVuc2lvbiBpcyByZXF1
aXJlZCB0byBjb21waWxlIHByb3Blcmx5LgorICAgIG1SZXNvdXJjZXMuT0VTX3N0YW5kYXJkX2Rl
cml2YXRpdmVzID0gMDsKKyAgICBJbml0aWFsaXplQ29tcGlsZXIoKTsKKyAgICBUZXN0U2hhZGVy
RXh0ZW5zaW9uKFN0YW5kRGVyaXZFeHRTaGRyLCAyLCBmYWxzZSk7Cit9CisKK1RFU1RfRihTaGFk
ZXJFeHRlbnNpb25UZXN0LCBTdGFuZERlcml2RXh0UmVxdWlyZXNQcmFnbWEpCit7CisgICAgLy8g
UHJhZ21hIGlzIHJlcXVpcmVkIHRvIGNvbXBpbGUgcHJvcGVybHkuCisgICAgbVJlc291cmNlcy5P
RVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgPSAxOworICAgIEluaXRpYWxpemVDb21waWxlcigpOwor
ICAgIFRlc3RTaGFkZXJFeHRlbnNpb24oJlN0YW5kRGVyaXZFeHRTaGRyWzFdLCAxLCBmYWxzZSk7
Cit9CisKK1RFU1RfRihTaGFkZXJFeHRlbnNpb25UZXN0LCBTdGFuZERlcml2RXh0Q29tcGlsZXMp
Cit7CisgICAgLy8gVGVzdCB0aGF0IGl0IGNvbXBpbGVzIHByb3Blcmx5IHdpdGggZXh0ZW5zaW9u
IGVuYWJsZWQuCisgICAgbVJlc291cmNlcy5PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgPSAxOwor
ICAgIEluaXRpYWxpemVDb21waWxlcigpOworICAgIFRlc3RTaGFkZXJFeHRlbnNpb24oU3RhbmRE
ZXJpdkV4dFNoZHIsIDIsIHRydWUpOworfQorCitURVNUX0YoU2hhZGVyRXh0ZW5zaW9uVGVzdCwg
U3RhbmREZXJpdkV4dFJlc2V0c0ludGVybmFsU3RhdGVzKQoreworICAgIC8vIFRlc3QgdGhhdCBl
eHRlbnNpb24gaW50ZXJuYWwgc3RhdGVzIGFyZSByZXNldCBwcm9wZXJseSBiZXR3ZWVuIGNvbXBp
bGVzLgorICAgIG1SZXNvdXJjZXMuT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzID0gMTsKKyAgICBJ
bml0aWFsaXplQ29tcGlsZXIoKTsKKworICAgIFRlc3RTaGFkZXJFeHRlbnNpb24oU3RhbmREZXJp
dkV4dFNoZHIsIDIsIHRydWUpOworICAgIFRlc3RTaGFkZXJFeHRlbnNpb24oJlN0YW5kRGVyaXZF
eHRTaGRyWzFdLCAxLCBmYWxzZSk7CisgICAgVGVzdFNoYWRlckV4dGVuc2lvbihTdGFuZERlcml2
RXh0U2hkciwgMiwgdHJ1ZSk7CisgICAgVGVzdFNoYWRlckV4dGVuc2lvbigmU3RhbmREZXJpdkV4
dFNoZHJbMV0sIDEsIGZhbHNlKTsKK30KKworVEVTVF9GKFNoYWRlckV4dGVuc2lvblRlc3QsIFRl
eHR1cmVMT0RFeHRSZXF1aXJlc0V4dCkKK3sKKyAgICAvLyBFeHRlbnNpb24gaXMgcmVxdWlyZWQg
dG8gY29tcGlsZSBwcm9wZXJseS4KKyAgICBtUmVzb3VyY2VzLkVYVF9zaGFkZXJfdGV4dHVyZV9s
b2QgPSAwOworICAgIEluaXRpYWxpemVDb21waWxlcigpOworICAgIFRlc3RTaGFkZXJFeHRlbnNp
b24oVGV4dHVyZUxPRFNoZHIsIDIsIGZhbHNlKTsKK30KKworVEVTVF9GKFNoYWRlckV4dGVuc2lv
blRlc3QsIFRleHR1cmVMT0RFeHRSZXF1aXJlc1ByYWdtYSkKK3sKKyAgICAvLyBQcmFnbWEgaXMg
cmVxdWlyZWQgdG8gY29tcGlsZSBwcm9wZXJseS4KKyAgICBtUmVzb3VyY2VzLkVYVF9zaGFkZXJf
dGV4dHVyZV9sb2QgPSAxOworICAgIEluaXRpYWxpemVDb21waWxlcigpOworICAgIFRlc3RTaGFk
ZXJFeHRlbnNpb24oJlRleHR1cmVMT0RTaGRyWzFdLCAxLCBmYWxzZSk7Cit9CisKK1RFU1RfRihT
aGFkZXJFeHRlbnNpb25UZXN0LCBUZXh0dXJlTE9ERXh0Q29tcGlsZXMpCit7CisgICAgLy8gVGVz
dCB0aGF0IGl0IGNvbXBpbGVzIHByb3Blcmx5IHdpdGggZXh0ZW5zaW9uIGVuYWJsZWQuCisgICAg
bVJlc291cmNlcy5FWFRfc2hhZGVyX3RleHR1cmVfbG9kID0gMTsKKyAgICBJbml0aWFsaXplQ29t
cGlsZXIoKTsKKyAgICBUZXN0U2hhZGVyRXh0ZW5zaW9uKFRleHR1cmVMT0RTaGRyLCAyLCB0cnVl
KTsKK30KKworVEVTVF9GKFNoYWRlckV4dGVuc2lvblRlc3QsIFRleHR1cmVMT0RFeHRSZXNldHNJ
bnRlcm5hbFN0YXRlcykKK3sKKyAgICAvLyBUZXN0IHRoYXQgZXh0ZW5zaW9uIGludGVybmFsIHN0
YXRlcyBhcmUgcmVzZXQgcHJvcGVybHkgYmV0d2VlbiBjb21waWxlcy4KKyAgICBtUmVzb3VyY2Vz
LkVYVF9zaGFkZXJfdGV4dHVyZV9sb2QgPSAxOworICAgIEluaXRpYWxpemVDb21waWxlcigpOwor
CisgICAgVGVzdFNoYWRlckV4dGVuc2lvbigmVGV4dHVyZUxPRFNoZHJbMV0sIDEsIGZhbHNlKTsK
KyAgICBUZXN0U2hhZGVyRXh0ZW5zaW9uKFRleHR1cmVMT0RTaGRyLCAyLCB0cnVlKTsKKyAgICBU
ZXN0U2hhZGVyRXh0ZW5zaW9uKCZUZXh0dXJlTE9EU2hkclsxXSwgMSwgZmFsc2UpOworICAgIFRl
c3RTaGFkZXJFeHRlbnNpb24oVGV4dHVyZUxPRFNoZHIsIDIsIHRydWUpOworfQorCisvLyBUZXN0
IGEgYnVnIHdoZXJlIHdlIGNvdWxkIG1vZGlmeSB0aGUgdmFsdWUgb2YgYSBidWlsdGluIHZhcmlh
YmxlLgorVEVTVF9GKFNoYWRlckV4dGVuc2lvblRlc3QsIEJ1aWx0aW5SZXdyaXRpbmdCdWcpCit7
CisgICAgbVJlc291cmNlcy5NYXhEcmF3QnVmZmVycyA9IDQ7CisgICAgbVJlc291cmNlcy5FWFRf
ZHJhd19idWZmZXJzID0gMTsKKyAgICBJbml0aWFsaXplQ29tcGlsZXIoKTsKKworICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAiI2V4dGVuc2lvbiBHTF9FWFRf
ZHJhd19idWZmZXJzIDogcmVxdWlyZVxuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICAgZ2xfRnJhZ0Rh
dGFbZ2xfTWF4RHJhd0J1ZmZlcnNdID0gdmVjNCgwLjApO1xuIgorICAgICAgICAifSI7CisKKyAg
ICBjb25zdCBjaGFyICpzaGFkZXJTdHJpbmdzW10gPSB7IHNoYWRlclN0cmluZy5jX3N0cigpIH07
CisKKyAgICBUZXN0U2hhZGVyRXh0ZW5zaW9uKHNoYWRlclN0cmluZ3MsIDEsIGZhbHNlKTsKKyAg
ICBUZXN0U2hhZGVyRXh0ZW5zaW9uKHNoYWRlclN0cmluZ3MsIDEsIGZhbHNlKTsKK30KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9TaGFkZXJW
YXJpYWJsZV90ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvU2hhZGVyVmFyaWFibGVfdGVzdC5jcHAJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3Rz
L1NoYWRlclZhcmlhYmxlX3Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDIxIEBA
CisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKy8vIENvbGxlY3RWYXJpYWJsZXNfdGVzdC5jcHA6CisvLyAgIFNvbWUg
dGVzdHMgZm9yIHNoYWRlciBpbnNwZWN0aW9uCisvLworCisjaW5jbHVkZSAiYW5nbGVfZ2wuaCIK
KyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0NvbXBpbGVyLmgiCisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKKworbmFtZXNwYWNl
IHNoCit7CisKK1RFU1QoU2hhZGVyVmFyaWFibGVUZXN0LCBGaW5kSW5mb0J5TWFwcGVkTmFtZSkK
K3sKKyAgICAvLyBzdHJ1Y3QgQSB7CisgICAgLy8gICBmbG9hdCB4WzJdOworICAgIC8vICAgdmVj
MyB5OworICAgIC8vIH07CisgICAgLy8gc3RydWN0IEIgeworICAgIC8vICAgQSBhWzNdOworICAg
IC8vIH07CisgICAgLy8gQiB1bmlbMl07CisgICAgU2hhZGVyVmFyaWFibGUgdW5pOworICAgIHVu
aS5hcnJheVNpemUgPSAyOworICAgIHVuaS5uYW1lID0gInVuaSI7CisgICAgdW5pLm1hcHBlZE5h
bWUgPSAibV91bmkiOworICAgIHVuaS5zdHJ1Y3ROYW1lID0gIkIiOworICAgIHsKKyAgICAgICAg
U2hhZGVyVmFyaWFibGUgYTsKKyAgICAgICAgYS5hcnJheVNpemUgPSAzOworICAgICAgICBhLm5h
bWUgPSAiYSI7CisgICAgICAgIGEubWFwcGVkTmFtZSA9ICJtX2EiOworICAgICAgICBhLnN0cnVj
dE5hbWUgPSAiQSI7CisgICAgICAgIHsKKyAgICAgICAgICAgIFNoYWRlclZhcmlhYmxlIHgoR0xf
RkxPQVQsIDIpOworICAgICAgICAgICAgeC5uYW1lID0gIngiOworICAgICAgICAgICAgeC5tYXBw
ZWROYW1lID0gIm1feCI7CisgICAgICAgICAgICBhLmZpZWxkcy5wdXNoX2JhY2soeCk7CisKKyAg
ICAgICAgICAgIFNoYWRlclZhcmlhYmxlIHkoR0xfRkxPQVRfVkVDMywgMCk7CisgICAgICAgICAg
ICB5Lm5hbWUgPSAieSI7CisgICAgICAgICAgICB5Lm1hcHBlZE5hbWUgPSAibV95IjsKKyAgICAg
ICAgICAgIGEuZmllbGRzLnB1c2hfYmFjayh5KTsKKyAgICAgICAgfQorICAgICAgICB1bmkuZmll
bGRzLnB1c2hfYmFjayhhKTsKKyAgICB9CisKKyAgICBjb25zdCBTaGFkZXJWYXJpYWJsZSAqbGVh
ZlZhciA9IG51bGxwdHI7CisgICAgc3RkOjpzdHJpbmcgb3JpZ2luYWxGdWxsTmFtZTsKKworICAg
IHN0ZDo6c3RyaW5nIG1hcHBlZEZ1bGxOYW1lID0gIndyb25nTmFtZSI7CisgICAgRVhQRUNUX0ZB
TFNFKHVuaS5maW5kSW5mb0J5TWFwcGVkTmFtZSgKKyAgICAgICAgbWFwcGVkRnVsbE5hbWUsICZs
ZWFmVmFyLCAmb3JpZ2luYWxGdWxsTmFtZSkpOworCisgICAgbWFwcGVkRnVsbE5hbWUgPSAibV91
bmkiOworICAgIEVYUEVDVF9UUlVFKHVuaS5maW5kSW5mb0J5TWFwcGVkTmFtZSgKKyAgICAgICAg
bWFwcGVkRnVsbE5hbWUsICZsZWFmVmFyLCAmb3JpZ2luYWxGdWxsTmFtZSkpOworICAgIEVYUEVD
VF9FUSgmdW5pLCBsZWFmVmFyKTsKKyAgICBFWFBFQ1RfU1RSRVEoInVuaSIsIG9yaWdpbmFsRnVs
bE5hbWUuY19zdHIoKSk7CisKKyAgICBtYXBwZWRGdWxsTmFtZSA9ICJtX3VuaVswXS5tX2FbMV0u
d3JvbmdOYW1lIjsKKyAgICBFWFBFQ1RfRkFMU0UodW5pLmZpbmRJbmZvQnlNYXBwZWROYW1lKAor
ICAgICAgICBtYXBwZWRGdWxsTmFtZSwgJmxlYWZWYXIsICZvcmlnaW5hbEZ1bGxOYW1lKSk7CisK
KyAgICBtYXBwZWRGdWxsTmFtZSA9ICJtX3VuaVswXS5tX2FbMV0ubV94IjsKKyAgICBFWFBFQ1Rf
VFJVRSh1bmkuZmluZEluZm9CeU1hcHBlZE5hbWUoCisgICAgICAgIG1hcHBlZEZ1bGxOYW1lLCAm
bGVhZlZhciwgJm9yaWdpbmFsRnVsbE5hbWUpKTsKKyAgICBFWFBFQ1RfRVEoJih1bmkuZmllbGRz
WzBdLmZpZWxkc1swXSksIGxlYWZWYXIpOworICAgIEVYUEVDVF9TVFJFUSgidW5pWzBdLmFbMV0u
eCIsIG9yaWdpbmFsRnVsbE5hbWUuY19zdHIoKSk7CisKKyAgICBtYXBwZWRGdWxsTmFtZSA9ICJt
X3VuaVswXS5tX2FbMV0ubV94WzBdIjsKKyAgICBFWFBFQ1RfVFJVRSh1bmkuZmluZEluZm9CeU1h
cHBlZE5hbWUoCisgICAgICAgIG1hcHBlZEZ1bGxOYW1lLCAmbGVhZlZhciwgJm9yaWdpbmFsRnVs
bE5hbWUpKTsKKyAgICBFWFBFQ1RfRVEoJih1bmkuZmllbGRzWzBdLmZpZWxkc1swXSksIGxlYWZW
YXIpOworICAgIEVYUEVDVF9TVFJFUSgidW5pWzBdLmFbMV0ueFswXSIsIG9yaWdpbmFsRnVsbE5h
bWUuY19zdHIoKSk7CisKKyAgICBtYXBwZWRGdWxsTmFtZSA9ICJtX3VuaVswXS5tX2FbMV0ubV95
IjsKKyAgICBFWFBFQ1RfVFJVRSh1bmkuZmluZEluZm9CeU1hcHBlZE5hbWUoCisgICAgICAgIG1h
cHBlZEZ1bGxOYW1lLCAmbGVhZlZhciwgJm9yaWdpbmFsRnVsbE5hbWUpKTsKKyAgICBFWFBFQ1Rf
RVEoJih1bmkuZmllbGRzWzBdLmZpZWxkc1sxXSksIGxlYWZWYXIpOworICAgIEVYUEVDVF9TVFJF
USgidW5pWzBdLmFbMV0ueSIsIG9yaWdpbmFsRnVsbE5hbWUuY19zdHIoKSk7Cit9CisKK1RFU1Qo
U2hhZGVyVmFyaWFibGVUZXN0LCBJc1NhbWVVbmlmb3JtV2l0aERpZmZlcmVudEZpZWxkT3JkZXIp
Cit7CisgICAgLy8gc3RydWN0IEEgeworICAgIC8vICAgZmxvYXQgeDsKKyAgICAvLyAgIGZsb2F0
IHk7CisgICAgLy8gfTsKKyAgICAvLyB1bmlmb3JtIEEgdW5pOworICAgIFVuaWZvcm0gdnhfYTsK
KyAgICB2eF9hLmFycmF5U2l6ZSA9IDA7CisgICAgdnhfYS5uYW1lID0gInVuaSI7CisgICAgdnhf
YS5tYXBwZWROYW1lID0gIm1fdW5pIjsKKyAgICB2eF9hLnN0cnVjdE5hbWUgPSAiQSI7CisgICAg
eworICAgICAgICBTaGFkZXJWYXJpYWJsZSB4KEdMX0ZMT0FULCAwKTsKKyAgICAgICAgeC5uYW1l
ID0gIngiOworICAgICAgICB4Lm1hcHBlZE5hbWUgPSAibV94IjsKKyAgICAgICAgdnhfYS5maWVs
ZHMucHVzaF9iYWNrKHgpOworCisgICAgICAgIFNoYWRlclZhcmlhYmxlIHkoR0xfRkxPQVQsIDAp
OworICAgICAgICB5Lm5hbWUgPSAieSI7CisgICAgICAgIHkubWFwcGVkTmFtZSA9ICJtX3kiOwor
ICAgICAgICB2eF9hLmZpZWxkcy5wdXNoX2JhY2soeSk7CisgICAgfQorCisgICAgLy8gc3RydWN0
IEEgeworICAgIC8vICAgZmxvYXQgeTsKKyAgICAvLyAgIGZsb2F0IHg7CisgICAgLy8gfTsKKyAg
ICAvLyB1bmlmb3JtIEEgdW5pOworICAgIFVuaWZvcm0gZnhfYTsKKyAgICBmeF9hLmFycmF5U2l6
ZSA9IDA7CisgICAgZnhfYS5uYW1lID0gInVuaSI7CisgICAgZnhfYS5tYXBwZWROYW1lID0gIm1f
dW5pIjsKKyAgICBmeF9hLnN0cnVjdE5hbWUgPSAiQSI7CisgICAgeworICAgICAgICBTaGFkZXJW
YXJpYWJsZSB5KEdMX0ZMT0FULCAwKTsKKyAgICAgICAgeS5uYW1lID0gInkiOworICAgICAgICB5
Lm1hcHBlZE5hbWUgPSAibV95IjsKKyAgICAgICAgZnhfYS5maWVsZHMucHVzaF9iYWNrKHkpOwor
CisgICAgICAgIFNoYWRlclZhcmlhYmxlIHgoR0xfRkxPQVQsIDApOworICAgICAgICB4Lm5hbWUg
PSAieCI7CisgICAgICAgIHgubWFwcGVkTmFtZSA9ICJtX3giOworICAgICAgICBmeF9hLmZpZWxk
cy5wdXNoX2JhY2soeCk7CisgICAgfQorCisgICAgRVhQRUNUX0ZBTFNFKHZ4X2EuaXNTYW1lVW5p
Zm9ybUF0TGlua1RpbWUoZnhfYSkpOworfQorCitURVNUKFNoYWRlclZhcmlhYmxlVGVzdCwgSXNT
YW1lVW5pZm9ybVdpdGhEaWZmZXJlbnRTdHJ1Y3ROYW1lcykKK3sKKyAgICAvLyBzdHJ1Y3QgQSB7
CisgICAgLy8gICBmbG9hdCB4OworICAgIC8vICAgZmxvYXQgeTsKKyAgICAvLyB9OworICAgIC8v
IHVuaWZvcm0gQSB1bmk7CisgICAgVW5pZm9ybSB2eF9hOworICAgIHZ4X2EuYXJyYXlTaXplID0g
MDsKKyAgICB2eF9hLm5hbWUgPSAidW5pIjsKKyAgICB2eF9hLm1hcHBlZE5hbWUgPSAibV91bmki
OworICAgIHZ4X2Euc3RydWN0TmFtZSA9ICJBIjsKKyAgICB7CisgICAgICAgIFNoYWRlclZhcmlh
YmxlIHgoR0xfRkxPQVQsIDApOworICAgICAgICB4Lm5hbWUgPSAieCI7CisgICAgICAgIHgubWFw
cGVkTmFtZSA9ICJtX3giOworICAgICAgICB2eF9hLmZpZWxkcy5wdXNoX2JhY2soeCk7CisKKyAg
ICAgICAgU2hhZGVyVmFyaWFibGUgeShHTF9GTE9BVCwgMCk7CisgICAgICAgIHkubmFtZSA9ICJ5
IjsKKyAgICAgICAgeS5tYXBwZWROYW1lID0gIm1feSI7CisgICAgICAgIHZ4X2EuZmllbGRzLnB1
c2hfYmFjayh5KTsKKyAgICB9CisKKyAgICAvLyBzdHJ1Y3QgQiB7CisgICAgLy8gICBmbG9hdCB4
OworICAgIC8vICAgZmxvYXQgeTsKKyAgICAvLyB9OworICAgIC8vIHVuaWZvcm0gQiB1bmk7Cisg
ICAgVW5pZm9ybSBmeF9hOworICAgIGZ4X2EuYXJyYXlTaXplID0gMDsKKyAgICBmeF9hLm5hbWUg
PSAidW5pIjsKKyAgICBmeF9hLm1hcHBlZE5hbWUgPSAibV91bmkiOworICAgIHsKKyAgICAgICAg
U2hhZGVyVmFyaWFibGUgeChHTF9GTE9BVCwgMCk7CisgICAgICAgIHgubmFtZSA9ICJ4IjsKKyAg
ICAgICAgeC5tYXBwZWROYW1lID0gIm1feCI7CisgICAgICAgIGZ4X2EuZmllbGRzLnB1c2hfYmFj
ayh4KTsKKworICAgICAgICBTaGFkZXJWYXJpYWJsZSB5KEdMX0ZMT0FULCAwKTsKKyAgICAgICAg
eS5uYW1lID0gInkiOworICAgICAgICB5Lm1hcHBlZE5hbWUgPSAibV95IjsKKyAgICAgICAgZnhf
YS5maWVsZHMucHVzaF9iYWNrKHkpOworICAgIH0KKworICAgIGZ4X2Euc3RydWN0TmFtZSA9ICJC
IjsKKyAgICBFWFBFQ1RfRkFMU0UodnhfYS5pc1NhbWVVbmlmb3JtQXRMaW5rVGltZShmeF9hKSk7
CisKKyAgICBmeF9hLnN0cnVjdE5hbWUgPSAiQSI7CisgICAgRVhQRUNUX1RSVUUodnhfYS5pc1Nh
bWVVbmlmb3JtQXRMaW5rVGltZShmeF9hKSk7CisKKyAgICBmeF9hLnN0cnVjdE5hbWUgPSAiIjsK
KyAgICBFWFBFQ1RfRkFMU0UodnhfYS5pc1NhbWVVbmlmb3JtQXRMaW5rVGltZShmeF9hKSk7Cit9
CisKK1RFU1QoU2hhZGVyVmFyaWFibGVUZXN0LCBJc1NhbWVWYXJ5aW5nV2l0aERpZmZlcmVudElu
dmFyaWFuY2UpCit7CisgICAgLy8gaW52YXJpYW50IHZhcnlpbmcgZmxvYXQgdmFyeTsKKyAgICBW
YXJ5aW5nIHZ4OworICAgIHZ4LnR5cGUgPSBHTF9GTE9BVDsKKyAgICB2eC5hcnJheVNpemUgPSAw
OworICAgIHZ4LnByZWNpc2lvbiA9IEdMX01FRElVTV9GTE9BVDsKKyAgICB2eC5uYW1lID0gInZh
cnkiOworICAgIHZ4Lm1hcHBlZE5hbWUgPSAibV92YXJ5IjsKKyAgICB2eC5zdGF0aWNVc2UgPSB0
cnVlOworICAgIHZ4LmlzSW52YXJpYW50ID0gdHJ1ZTsKKworICAgIC8vIHZhcnlpbmcgZmxvYXQg
dmFyeTsKKyAgICBWYXJ5aW5nIGZ4OworICAgIGZ4LnR5cGUgPSBHTF9GTE9BVDsKKyAgICBmeC5h
cnJheVNpemUgPSAwOworICAgIGZ4LnByZWNpc2lvbiA9IEdMX01FRElVTV9GTE9BVDsKKyAgICBm
eC5uYW1lID0gInZhcnkiOworICAgIGZ4Lm1hcHBlZE5hbWUgPSAibV92YXJ5IjsKKyAgICBmeC5z
dGF0aWNVc2UgPSB0cnVlOworICAgIGZ4LmlzSW52YXJpYW50ID0gZmFsc2U7CisKKyAgICAvLyBE
ZWZhdWx0IHRvIEVTU0wxIGJlaGF2aW9yOiBpbnZhcmlhbmNlIG11c3QgbWF0Y2gKKyAgICBFWFBF
Q1RfRkFMU0UodnguaXNTYW1lVmFyeWluZ0F0TGlua1RpbWUoZngpKTsKKyAgICBFWFBFQ1RfRkFM
U0UodnguaXNTYW1lVmFyeWluZ0F0TGlua1RpbWUoZngsIDEwMCkpOworICAgIC8vIEVTU0wzIGJl
aGF2aW9yOiBpbnZhcmlhbmNlIGRvZXNuJ3QgbmVlZCB0byBtYXRjaAorICAgIEVYUEVDVF9UUlVF
KHZ4LmlzU2FtZVZhcnlpbmdBdExpbmtUaW1lKGZ4LCAzMDApKTsKKworICAgIC8vIGludmFyaWFu
dCB2YXJ5aW5nIGZsb2F0IHZhcnk7CisgICAgZnguaXNJbnZhcmlhbnQgPSB0cnVlOworICAgIEVY
UEVDVF9UUlVFKHZ4LmlzU2FtZVZhcnlpbmdBdExpbmtUaW1lKGZ4KSk7CisgICAgRVhQRUNUX1RS
VUUodnguaXNTYW1lVmFyeWluZ0F0TGlua1RpbWUoZngsIDEwMCkpOworICAgIEVYUEVDVF9UUlVF
KHZ4LmlzU2FtZVZhcnlpbmdBdExpbmtUaW1lKGZ4LCAzMDApKTsKK30KKworLy8gVGVzdCB0aGF0
IHVzaW5nIGludmFyaWFudCB2YXJ5aW5ncyBkb2Vzbid0IHRyaWdnZXIgYSBkb3VibGUgZGVsZXRl
LgorVEVTVChTaGFkZXJWYXJpYWJsZVRlc3QsIEludmFyaWFudERvdWJsZURlbGV0ZUJ1ZykKK3sK
KyAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgcmVzb3VyY2VzOworICAgIFNoSW5pdEJ1aWx0SW5SZXNv
dXJjZXMoJnJlc291cmNlcyk7CisKKyAgICBTaEhhbmRsZSBjb21waWxlciA9IFNoQ29uc3RydWN0
Q29tcGlsZXIoR0xfVkVSVEVYX1NIQURFUiwgU0hfR0xFUzJfU1BFQywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hfR0xTTF9DT01QQVRJQklMSVRZX09VVFBV
VCwgJnJlc291cmNlcyk7CisgICAgRVhQRUNUX05FKHN0YXRpY19jYXN0PFNoSGFuZGxlPigwKSwg
Y29tcGlsZXIpOworCisgICAgY29uc3QgY2hhciAqcHJvZ3JhbVtdID0KKyAgICB7CisgICAgICAg
ICJhdHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjtcbiIKKyAgICAgICAgInZhcnlpbmcgZmxvYXQgdjtc
biIKKyAgICAgICAgImludmFyaWFudCB2O1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgor
ICAgICAgICAiICB2ID0gMS4wO1xuIgorICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9u
O1xuIgorICAgICAgICAifSIKKyAgICB9OworCisgICAgRVhQRUNUX1RSVUUoU2hDb21waWxlKGNv
bXBpbGVyLCBwcm9ncmFtLCAxLCBTSF9PQkpFQ1RfQ09ERSkpOworICAgIEVYUEVDVF9UUlVFKFNo
Q29tcGlsZShjb21waWxlciwgcHJvZ3JhbSwgMSwgU0hfT0JKRUNUX0NPREUpKTsKKyAgICBTaERl
c3RydWN0KGNvbXBpbGVyKTsKK30KKworVEVTVChTaGFkZXJWYXJpYWJsZVRlc3QsIElsbGVnYWxJ
bnZhcmlhbnRWYXJ5aW5nKQoreworICAgIFNoQnVpbHRJblJlc291cmNlcyByZXNvdXJjZXM7Cisg
ICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmcmVzb3VyY2VzKTsKKworICAgIFNoSGFuZGxlIGNv
bXBpbGVyID0gU2hDb25zdHJ1Y3RDb21waWxlcihHTF9WRVJURVhfU0hBREVSLCBTSF9HTEVTMl9T
UEVDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSF9HTFNM
X0NPTVBBVElCSUxJVFlfT1VUUFVULCAmcmVzb3VyY2VzKTsKKyAgICBFWFBFQ1RfTkUoc3RhdGlj
X2Nhc3Q8U2hIYW5kbGU+KDApLCBjb21waWxlcik7CisKKyAgICBjb25zdCBjaGFyICpwcm9ncmFt
MVtdID0KKyAgICB7CisgICAgICAgICJ2b2lkIGZvbygpIHtcbiIKKyAgICAgICAgIiAgdmVjNCB2
O1xuIgorICAgICAgICAifVxuIgorICAgICAgICAidmFyeWluZyB2ZWM0IHZfdmFyeWluZztcbiIK
KyAgICAgICAgImludmFyaWFudCB2X3Zhcnlpbmc7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7
XG4iCisgICAgICAgICIgIGZvbygpO1xuIgorICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IHZfdmFy
eWluZztcbiIKKyAgICAgICAgIn0iCisgICAgfTsKKyAgICBjb25zdCBjaGFyICpwcm9ncmFtMltd
ID0KKyAgICB7CisgICAgICAgICJ2YXJ5aW5nIHZlYzQgdl92YXJ5aW5nO1xuIgorICAgICAgICAi
dm9pZCBmb28oKSB7XG4iCisgICAgICAgICIgIGludmFyaWFudCB2X3Zhcnlpbmc7XG4iCisgICAg
ICAgICJ9XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgIGZvbygpO1xu
IgorICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IHZfdmFyeWluZztcbiIKKyAgICAgICAgIn0iCisg
ICAgfTsKKworICAgIEVYUEVDVF9UUlVFKFNoQ29tcGlsZShjb21waWxlciwgcHJvZ3JhbTEsIDEs
IFNIX1ZBUklBQkxFUykpOworICAgIEVYUEVDVF9GQUxTRShTaENvbXBpbGUoY29tcGlsZXIsIHBy
b2dyYW0yLCAxLCBTSF9WQVJJQUJMRVMpKTsKK30KKworVEVTVChTaGFkZXJWYXJpYWJsZVRlc3Qs
IEludmFyaWFudExlYWtBY3Jvc3NTaGFkZXJzKQoreworICAgIFNoQnVpbHRJblJlc291cmNlcyBy
ZXNvdXJjZXM7CisgICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmcmVzb3VyY2VzKTsKKworICAg
IFNoSGFuZGxlIGNvbXBpbGVyID0gU2hDb25zdHJ1Y3RDb21waWxlcihHTF9WRVJURVhfU0hBREVS
LCBTSF9HTEVTMl9TUEVDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTSF9HTFNMX0NPTVBBVElCSUxJVFlfT1VUUFVULCAmcmVzb3VyY2VzKTsKKyAgICBFWFBF
Q1RfTkUoc3RhdGljX2Nhc3Q8U2hIYW5kbGU+KDApLCBjb21waWxlcik7CisKKyAgICBjb25zdCBj
aGFyICpwcm9ncmFtMVtdID0KKyAgICB7CisgICAgICAgICJ2YXJ5aW5nIHZlYzQgdl92YXJ5aW5n
O1xuIgorICAgICAgICAiaW52YXJpYW50IHZfdmFyeWluZztcbiIKKyAgICAgICAgInZvaWQgbWFp
bigpIHtcbiIKKyAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSB2X3Zhcnlpbmc7XG4iCisgICAgICAg
ICJ9IgorICAgIH07CisgICAgY29uc3QgY2hhciAqcHJvZ3JhbTJbXSA9CisgICAgeworICAgICAg
ICAidmFyeWluZyB2ZWM0IHZfdmFyeWluZztcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIK
KyAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSB2X3Zhcnlpbmc7XG4iCisgICAgICAgICJ9IgorICAg
IH07CisKKyAgICBFWFBFQ1RfVFJVRShTaENvbXBpbGUoY29tcGlsZXIsIHByb2dyYW0xLCAxLCBT
SF9WQVJJQUJMRVMpKTsKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6VmFyeWluZz4gKnZhcnlp
bmdzID0gU2hHZXRWYXJ5aW5ncyhjb21waWxlcik7CisgICAgZm9yIChjb25zdCBzaDo6VmFyeWlu
ZyAmdmFyeWluZyA6ICp2YXJ5aW5ncykKKyAgICB7CisgICAgICAgIGlmICh2YXJ5aW5nLm5hbWUg
PT0gInZfdmFyeWluZyIpCisgICAgICAgICAgICBFWFBFQ1RfVFJVRSh2YXJ5aW5nLmlzSW52YXJp
YW50KTsKKyAgICB9CisgICAgRVhQRUNUX1RSVUUoU2hDb21waWxlKGNvbXBpbGVyLCBwcm9ncmFt
MiwgMSwgU0hfVkFSSUFCTEVTKSk7CisgICAgdmFyeWluZ3MgPSBTaEdldFZhcnlpbmdzKGNvbXBp
bGVyKTsKKyAgICBmb3IgKGNvbnN0IHNoOjpWYXJ5aW5nICZ2YXJ5aW5nIDogKnZhcnlpbmdzKQor
ICAgIHsKKyAgICAgICAgaWYgKHZhcnlpbmcubmFtZSA9PSAidl92YXJ5aW5nIikKKyAgICAgICAg
ICAgIEVYUEVDVF9GQUxTRSh2YXJ5aW5nLmlzSW52YXJpYW50KTsKKyAgICB9Cit9CisKK1RFU1Qo
U2hhZGVyVmFyaWFibGVUZXN0LCBHbG9iYWxJbnZhcmlhbnRMZWFrQWNyb3NzU2hhZGVycykKK3sK
KyAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgcmVzb3VyY2VzOworICAgIFNoSW5pdEJ1aWx0SW5SZXNv
dXJjZXMoJnJlc291cmNlcyk7CisKKyAgICBTaEhhbmRsZSBjb21waWxlciA9IFNoQ29uc3RydWN0
Q29tcGlsZXIoR0xfVkVSVEVYX1NIQURFUiwgU0hfR0xFUzJfU1BFQywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hfR0xTTF9DT01QQVRJQklMSVRZX09VVFBV
VCwgJnJlc291cmNlcyk7CisgICAgRVhQRUNUX05FKHN0YXRpY19jYXN0PFNoSGFuZGxlPigwKSwg
Y29tcGlsZXIpOworCisgICAgY29uc3QgY2hhciAqcHJvZ3JhbTFbXSA9CisgICAgeworICAgICAg
ICAiI3ByYWdtYSBTVERHTCBpbnZhcmlhbnQoYWxsKVxuIgorICAgICAgICAidmFyeWluZyB2ZWM0
IHZfdmFyeWluZztcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgZ2xf
UG9zaXRpb24gPSB2X3Zhcnlpbmc7XG4iCisgICAgICAgICJ9IgorICAgIH07CisgICAgY29uc3Qg
Y2hhciAqcHJvZ3JhbTJbXSA9CisgICAgeworICAgICAgICAidmFyeWluZyB2ZWM0IHZfdmFyeWlu
ZztcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgZ2xfUG9zaXRpb24g
PSB2X3Zhcnlpbmc7XG4iCisgICAgICAgICJ9IgorICAgIH07CisKKyAgICBFWFBFQ1RfVFJVRShT
aENvbXBpbGUoY29tcGlsZXIsIHByb2dyYW0xLCAxLCBTSF9WQVJJQUJMRVMpKTsKKyAgICBjb25z
dCBzdGQ6OnZlY3RvcjxzaDo6VmFyeWluZz4gKnZhcnlpbmdzID0gU2hHZXRWYXJ5aW5ncyhjb21w
aWxlcik7CisgICAgZm9yIChjb25zdCBzaDo6VmFyeWluZyAmdmFyeWluZyA6ICp2YXJ5aW5ncykK
KyAgICB7CisgICAgICAgIGlmICh2YXJ5aW5nLm5hbWUgPT0gInZfdmFyeWluZyIpCisgICAgICAg
ICAgICBFWFBFQ1RfVFJVRSh2YXJ5aW5nLmlzSW52YXJpYW50KTsKKyAgICB9CisgICAgRVhQRUNU
X1RSVUUoU2hDb21waWxlKGNvbXBpbGVyLCBwcm9ncmFtMiwgMSwgU0hfVkFSSUFCTEVTKSk7Cisg
ICAgdmFyeWluZ3MgPSBTaEdldFZhcnlpbmdzKGNvbXBpbGVyKTsKKyAgICBmb3IgKGNvbnN0IHNo
OjpWYXJ5aW5nICZ2YXJ5aW5nIDogKnZhcnlpbmdzKQorICAgIHsKKyAgICAgICAgaWYgKHZhcnlp
bmcubmFtZSA9PSAidl92YXJ5aW5nIikKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRSh2YXJ5aW5n
LmlzSW52YXJpYW50KTsKKyAgICB9Cit9CisKK1RFU1QoU2hhZGVyVmFyaWFibGVUZXN0LCBCdWls
dGluSW52YXJpYW50VmFyeWluZykKK3sKKworICAgIFNoQnVpbHRJblJlc291cmNlcyByZXNvdXJj
ZXM7CisgICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmcmVzb3VyY2VzKTsKKworICAgIFNoSGFu
ZGxlIGNvbXBpbGVyID0gU2hDb25zdHJ1Y3RDb21waWxlcihHTF9WRVJURVhfU0hBREVSLCBTSF9H
TEVTMl9TUEVDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
SF9HTFNMX0NPTVBBVElCSUxJVFlfT1VUUFVULCAmcmVzb3VyY2VzKTsKKyAgICBFWFBFQ1RfTkUo
c3RhdGljX2Nhc3Q8U2hIYW5kbGU+KDApLCBjb21waWxlcik7CisKKyAgICBjb25zdCBjaGFyICpw
cm9ncmFtMVtdID0KKyAgICB7CisgICAgICAgICJpbnZhcmlhbnQgZ2xfUG9zaXRpb247XG4iCisg
ICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgIGdsX1Bvc2l0aW9uID0gdmVjNCgw
LCAwLCAwLCAwKTtcbiIKKyAgICAgICAgIn0iCisgICAgfTsKKyAgICBjb25zdCBjaGFyICpwcm9n
cmFtMltdID0KKyAgICB7CisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgIGds
X1Bvc2l0aW9uID0gdmVjNCgwLCAwLCAwLCAwKTtcbiIKKyAgICAgICAgIn0iCisgICAgfTsKKyAg
ICBjb25zdCBjaGFyICpwcm9ncmFtM1tdID0KKyAgICB7CisgICAgICAgICJ2b2lkIG1haW4oKSB7
XG4iCisgICAgICAgICIgIGludmFyaWFudCBnbF9Qb3NpdGlvbjtcbiIKKyAgICAgICAgIiAgZ2xf
UG9zaXRpb24gPSB2ZWM0KDAsIDAsIDAsIDApO1xuIgorICAgICAgICAifSIKKyAgICB9OworCisg
ICAgRVhQRUNUX1RSVUUoU2hDb21waWxlKGNvbXBpbGVyLCBwcm9ncmFtMSwgMSwgU0hfVkFSSUFC
TEVTKSk7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlZhcnlpbmc+ICp2YXJ5aW5ncyA9IFNo
R2V0VmFyeWluZ3MoY29tcGlsZXIpOworICAgIGZvciAoY29uc3Qgc2g6OlZhcnlpbmcgJnZhcnlp
bmcgOiAqdmFyeWluZ3MpCisgICAgeworICAgICAgICBpZiAodmFyeWluZy5uYW1lID09ICJnbF9Q
b3NpdGlvbiIpCisgICAgICAgICAgICBFWFBFQ1RfVFJVRSh2YXJ5aW5nLmlzSW52YXJpYW50KTsK
KyAgICB9CisgICAgRVhQRUNUX1RSVUUoU2hDb21waWxlKGNvbXBpbGVyLCBwcm9ncmFtMiwgMSwg
U0hfVkFSSUFCTEVTKSk7CisgICAgdmFyeWluZ3MgPSBTaEdldFZhcnlpbmdzKGNvbXBpbGVyKTsK
KyAgICBmb3IgKGNvbnN0IHNoOjpWYXJ5aW5nICZ2YXJ5aW5nIDogKnZhcnlpbmdzKQorICAgIHsK
KyAgICAgICAgaWYgKHZhcnlpbmcubmFtZSA9PSAiZ2xfUG9zaXRpb24iKQorICAgICAgICAgICAg
RVhQRUNUX0ZBTFNFKHZhcnlpbmcuaXNJbnZhcmlhbnQpOworICAgIH0KKyAgICBFWFBFQ1RfRkFM
U0UoU2hDb21waWxlKGNvbXBpbGVyLCBwcm9ncmFtMywgMSwgU0hfVkFSSUFCTEVTKSk7Cit9CisK
K30gIC8vIG5hbWVzcGFjZSBzaApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2NvbXBpbGVyX3Rlc3RzL1R5cGVUcmFja2luZ190ZXN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvVHlwZVRyYWNr
aW5nX3Rlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9jb21waWxlcl90ZXN0cy9UeXBlVHJhY2tpbmdfdGVzdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0NTcgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gVHlwZVRyYWNraW5nX3Rlc3Qu
Y3BwOgorLy8gICBUZXN0IGZvciB0cmFja2luZyB0eXBlcyByZXN1bHRpbmcgZnJvbSBtYXRoIG9w
ZXJhdGlvbnMsIGluY2x1ZGluZyB0aGVpcgorLy8gICBwcmVjaXNpb24uCisvLworCisjaW5jbHVk
ZSAiYW5nbGVfZ2wuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgIkdMU0xB
TkcvU2hhZGVyTGFuZy5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRv
ckVTU0wuaCIKKworY2xhc3MgVHlwZVRyYWNraW5nVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
Cit7CisgIHB1YmxpYzoKKyAgICBUeXBlVHJhY2tpbmdUZXN0KCkge30KKworICBwcm90ZWN0ZWQ6
CisgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKKyAgICB7CisgICAgICAgIFNoQnVpbHRJblJlc291
cmNlcyByZXNvdXJjZXM7CisgICAgICAgIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoJnJlc291cmNl
cyk7CisgICAgICAgIHJlc291cmNlcy5GcmFnbWVudFByZWNpc2lvbkhpZ2ggPSAxOworCisgICAg
ICAgIG1UcmFuc2xhdG9yID0gbmV3IFRyYW5zbGF0b3JFU1NMKEdMX0ZSQUdNRU5UX1NIQURFUiwg
U0hfR0xFUzNfU1BFQyk7CisgICAgICAgIEFTU0VSVF9UUlVFKG1UcmFuc2xhdG9yLT5Jbml0KHJl
c291cmNlcykpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCisgICAgewor
ICAgICAgICBkZWxldGUgbVRyYW5zbGF0b3I7CisgICAgfQorCisgICAgdm9pZCBjb21waWxlKGNv
bnN0IHN0ZDo6c3RyaW5nJiBzaGFkZXJTdHJpbmcpCisgICAgeworICAgICAgICBjb25zdCBjaGFy
ICpzaGFkZXJTdHJpbmdzW10gPSB7IHNoYWRlclN0cmluZy5jX3N0cigpIH07CisgICAgICAgIGJv
b2wgY29tcGlsYXRpb25TdWNjZXNzID0gbVRyYW5zbGF0b3ItPmNvbXBpbGUoc2hhZGVyU3RyaW5n
cywgMSwgU0hfSU5URVJNRURJQVRFX1RSRUUpOworICAgICAgICBUSW5mb1NpbmsgJmluZm9TaW5r
ID0gbVRyYW5zbGF0b3ItPmdldEluZm9TaW5rKCk7CisgICAgICAgIG1JbmZvTG9nICAgICAgICAg
ICAgICAgICAgICA9IFJlbW92ZVN5bWJvbElkc0Zyb21JbmZvTG9nKGluZm9TaW5rLmluZm8uY19z
dHIoKSk7CisgICAgICAgIGlmICghY29tcGlsYXRpb25TdWNjZXNzKQorICAgICAgICAgICAgRkFJ
TCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkICIgPDwgbUluZm9Mb2c7CisgICAgfQor
CisgICAgYm9vbCBmb3VuZEVycm9ySW5JbnRlcm1lZGlhdGVUcmVlKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBmb3VuZEluSW50ZXJtZWRpYXRlVHJlZSgiRVJST1I6Iik7CisgICAgfQor
CisgICAgYm9vbCBmb3VuZEluSW50ZXJtZWRpYXRlVHJlZShjb25zdCBjaGFyKiBzdHJpbmdUb0Zp
bmQpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbUluZm9Mb2cuZmluZChzdHJpbmdUb0Zp
bmQpICE9IHN0ZDo6c3RyaW5nOjpucG9zOworICAgIH0KKworICBwcml2YXRlOgorICAgIC8vIFJl
bW92ZSBzeW1ib2wgaWRzIGZyb20gaW5mbyBsb2cgLSB0aGUgdGVzdHMgZG9uJ3QgY2FyZSBhYm91
dCB0aGVtLgorICAgIHN0YXRpYyBzdGQ6OnN0cmluZyBSZW1vdmVTeW1ib2xJZHNGcm9tSW5mb0xv
Zyhjb25zdCBjaGFyICppbmZvTG9nKQorICAgIHsKKyAgICAgICAgc3RkOjpzdHJpbmcgZmlsdGVy
ZWRMb2coaW5mb0xvZyk7CisgICAgICAgIHNpemVfdCBpZFByZWZpeFBvcyA9IDB1OworICAgICAg
ICBkbworICAgICAgICB7CisgICAgICAgICAgICBpZFByZWZpeFBvcyA9IGZpbHRlcmVkTG9nLmZp
bmQoIiAoc3ltYm9sIGlkIik7CisgICAgICAgICAgICBpZiAoaWRQcmVmaXhQb3MgIT0gc3RkOjpz
dHJpbmc6Om5wb3MpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc2l6ZV90IGlkU3Vm
Zml4UG9zID0gZmlsdGVyZWRMb2cuZmluZCgiKSIsIGlkUHJlZml4UG9zKTsKKyAgICAgICAgICAg
ICAgICBmaWx0ZXJlZExvZy5lcmFzZShpZFByZWZpeFBvcywgaWRTdWZmaXhQb3MgLSBpZFByZWZp
eFBvcyArIDF1KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSB3aGlsZSAoaWRQcmVmaXhQb3Mg
IT0gc3RkOjpzdHJpbmc6Om5wb3MpOworICAgICAgICByZXR1cm4gZmlsdGVyZWRMb2c7CisgICAg
fQorCisgICAgVHJhbnNsYXRvckVTU0wgKm1UcmFuc2xhdG9yOworICAgIHN0ZDo6c3RyaW5nIG1J
bmZvTG9nOworfTsKKworVEVTVF9GKFR5cGVUcmFja2luZ1Rlc3QsIEZ1bmN0aW9uUHJvdG90eXBl
TWFuZ2xpbmcpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAg
ICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgImZsb2F0IGZ1bihmbG9h
dCBhKTtcbiIKKyAgICAgICAgInVuaWZvcm0gZmxvYXQgZjtcbiIKKyAgICAgICAgInZvaWQgbWFp
bigpIHtcbiIKKyAgICAgICAgIiAgIGZsb2F0IGZmID0gZnVuKGYpO1xuIgorICAgICAgICAiICAg
Z2xfRnJhZ0NvbG9yID0gdmVjNChmZik7XG4iCisgICAgICAgICJ9XG4iCisgICAgICAgICJmbG9h
dCBmdW4oZmxvYXQgYSkge1xuIgorICAgICAgICAiICAgcmV0dXJuIGEgKiAyLjA7XG4iCisgICAg
ICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBBU1NFUlRfRkFMU0Uo
Zm91bmRFcnJvckluSW50ZXJtZWRpYXRlVHJlZSgpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZElu
SW50ZXJtZWRpYXRlVHJlZSgiRnVuY3Rpb24gUHJvdG90eXBlOiBmdW4oZjE7IikpOworICAgIEFT
U0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJGdW5jdGlvbiBEZWZpbml0aW9uOiBm
dW4oZjE7IikpOworfQorCitURVNUX0YoVHlwZVRyYWNraW5nVGVzdCwgQnVpbHRJbkZ1bmN0aW9u
UmVzdWx0UHJlY2lzaW9uKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcg
PQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ1bmlmb3Jt
IGZsb2F0IGY7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBmbG9h
dCBmZiA9IHNpbihmKTtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoZmYpO1xu
IgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJU
X0ZBTFNFKGZvdW5kRXJyb3JJbkludGVybWVkaWF0ZVRyZWUoKSk7CisgICAgQVNTRVJUX1RSVUUo
Zm91bmRJbkludGVybWVkaWF0ZVRyZWUoInNpbmUgKG1lZGl1bXAgZmxvYXQpIikpOworfQorCitU
RVNUX0YoVHlwZVRyYWNraW5nVGVzdCwgQmluYXJ5TWF0aFJlc3VsdFByZWNpc2lvbikKK3sKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidW5pZm9ybSBmbG9hdCBmO1xuIgorICAgICAgICAi
dm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgZmxvYXQgZmYgPSBmICogMC41O1xuIgorICAg
ICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChmZik7XG4iCisgICAgICAgICJ9XG4iOworICAg
IGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBBU1NFUlRfRkFMU0UoZm91bmRFcnJvckluSW50
ZXJtZWRpYXRlVHJlZSgpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSW50ZXJtZWRpYXRlVHJl
ZSgibXVsdGlwbHkgKG1lZGl1bXAgZmxvYXQpIikpOworfQorCitURVNUX0YoVHlwZVRyYWNraW5n
VGVzdCwgQnVpbHRJblZlY0Z1bmN0aW9uUmVzdWx0VHlwZUFuZFByZWNpc2lvbikKK3sKKyAgICBj
b25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0O1xuIgorICAgICAgICAidW5pZm9ybSB2ZWMyIGE7XG4iCisgICAgICAgICJ2b2lk
IG1haW4oKSB7XG4iCisgICAgICAgICIgICBmbG9hdCBiID0gbGVuZ3RoKGEpO1xuIgorICAgICAg
ICAiICAgZmxvYXQgYyA9IGRvdChhLCB2ZWMyKDAuNSkpO1xuIgorICAgICAgICAiICAgZmxvYXQg
ZCA9IGRpc3RhbmNlKHZlYzIoMC41KSwgYSk7XG4iCisgICAgICAgICIgICBnbF9GcmFnQ29sb3Ig
PSB2ZWM0KGIsIGMsIGQsIDEuMCk7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hh
ZGVyU3RyaW5nKTsKKyAgICBBU1NFUlRfRkFMU0UoZm91bmRFcnJvckluSW50ZXJtZWRpYXRlVHJl
ZSgpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSW50ZXJtZWRpYXRlVHJlZSgibGVuZ3RoICht
ZWRpdW1wIGZsb2F0KSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSW50ZXJtZWRpYXRlVHJl
ZSgiZG90LXByb2R1Y3QgKG1lZGl1bXAgZmxvYXQpIikpOworICAgIEFTU0VSVF9UUlVFKGZvdW5k
SW5JbnRlcm1lZGlhdGVUcmVlKCJkaXN0YW5jZSAobWVkaXVtcCBmbG9hdCkiKSk7Cit9CisKK1RF
U1RfRihUeXBlVHJhY2tpbmdUZXN0LCBCdWlsdEluTWF0RnVuY3Rpb25SZXN1bHRUeXBlQW5kUHJl
Y2lzaW9uKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAg
ICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtc
biIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInVuaWZvcm0g
bWF0NCBtO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgbWF0M3gy
IHRtcDMyID0gbWF0M3gyKG0pO1xuIgorICAgICAgICAiICAgbWF0MngzIHRtcDIzID0gbWF0Mngz
KG0pO1xuIgorICAgICAgICAiICAgbWF0NHgyIHRtcDQyID0gbWF0NHgyKG0pO1xuIgorICAgICAg
ICAiICAgbWF0Mng0IHRtcDI0ID0gbWF0Mng0KG0pO1xuIgorICAgICAgICAiICAgbWF0NHgzIHRt
cDQzID0gbWF0NHgzKG0pO1xuIgorICAgICAgICAiICAgbWF0M3g0IHRtcDM0ID0gbWF0M3g0KG0p
O1xuIgorICAgICAgICAiICAgbXlfRnJhZ0NvbG9yID0gdmVjNCh0bXAzMlsyXVsxXSAqIHRtcDIz
WzFdWzJdLCB0bXA0MlszXVsxXSAqIHRtcDI0WzFdWzNdLCB0bXA0M1szXVsyXSAqIHRtcDM0WzJd
WzNdLCAxLjApO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7
CisgICAgQVNTRVJUX0ZBTFNFKGZvdW5kRXJyb3JJbkludGVybWVkaWF0ZVRyZWUoKSk7CisgICAg
QVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoIkNvbnN0cnVjdCBtYXQyeDMgKG1l
ZGl1bXAgMlgzIG1hdHJpeCBvZiBmbG9hdCkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbklu
dGVybWVkaWF0ZVRyZWUoIkNvbnN0cnVjdCBtYXQzeDIgKG1lZGl1bXAgM1gyIG1hdHJpeCBvZiBm
bG9hdCkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoIkNvbnN0
cnVjdCBtYXQyeDQgKG1lZGl1bXAgMlg0IG1hdHJpeCBvZiBmbG9hdCkiKSk7CisgICAgQVNTRVJU
X1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoIkNvbnN0cnVjdCBtYXQ0eDIgKG1lZGl1bXAg
NFgyIG1hdHJpeCBvZiBmbG9hdCkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVk
aWF0ZVRyZWUoIkNvbnN0cnVjdCBtYXQzeDQgKG1lZGl1bXAgM1g0IG1hdHJpeCBvZiBmbG9hdCki
KSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoIkNvbnN0cnVjdCBt
YXQ0eDMgKG1lZGl1bXAgNFgzIG1hdHJpeCBvZiBmbG9hdCkiKSk7Cit9CisKK1RFU1RfRihUeXBl
VHJhY2tpbmdUZXN0LCBCdWlsdEluRnVuY3Rpb25DaG9vc2VzSGlnaGVyUHJlY2lzaW9uKQorewor
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9u
IGxvd3AgZmxvYXQ7XG4iCisgICAgICAgICJ1bmlmb3JtIG1lZGl1bXAgdmVjMiBhO1xuIgorICAg
ICAgICAidW5pZm9ybSBsb3dwIHZlYzIgYjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIK
KyAgICAgICAgIiAgIGZsb2F0IGMgPSBkb3QoYSwgYik7XG4iCisgICAgICAgICIgICBmbG9hdCBk
ID0gZGlzdGFuY2UoYiwgYSk7XG4iCisgICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGMs
IGQsIDAuMCwgMS4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJp
bmcpOworICAgIEFTU0VSVF9GQUxTRShmb3VuZEVycm9ySW5JbnRlcm1lZGlhdGVUcmVlKCkpOwor
ICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJkb3QtcHJvZHVjdCAobWVk
aXVtcCBmbG9hdCkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUo
ImRpc3RhbmNlIChtZWRpdW1wIGZsb2F0KSIpKTsKK30KKworVEVTVF9GKFR5cGVUcmFja2luZ1Rl
c3QsIEJ1aWx0SW5Cb29sRnVuY3Rpb25SZXN1bHRUeXBlKQoreworICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAidW5pZm9ybSBidmVjNCBiZWVzO1xuIgorICAg
ICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgYm9vbCBiID0gYW55KGJlZXMpO1xu
IgorICAgICAgICAiICAgYm9vbCBjID0gYWxsKGJlZXMpO1xuIgorICAgICAgICAiICAgYnZlYzQg
ZCA9IG5vdChiZWVzKTtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoYiA/IDEu
MCA6IDAuMCwgYyA/IDEuMCA6IDAuMCwgZC54ID8gMS4wIDogMC4wLCAxLjApO1xuIgorICAgICAg
ICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX0ZBTFNFKGZv
dW5kRXJyb3JJbkludGVybWVkaWF0ZVRyZWUoKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbklu
dGVybWVkaWF0ZVRyZWUoImFueSAoYm9vbCkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbklu
dGVybWVkaWF0ZVRyZWUoImFsbCAoYm9vbCkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbklu
dGVybWVkaWF0ZVRyZWUoIk5lZ2F0ZSBjb25kaXRpb25hbCAoNC1jb21wb25lbnQgdmVjdG9yIG9m
IGJvb2wpIikpOworfQorCitURVNUX0YoVHlwZVRyYWNraW5nVGVzdCwgQnVpbHRJblZlY1RvQm9v
bEZ1bmN0aW9uUmVzdWx0VHlwZSkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3Ry
aW5nID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidW5p
Zm9ybSB2ZWMyIGFwcGxlcztcbiIKKyAgICAgICAgInVuaWZvcm0gdmVjMiBvcmFuZ2VzO1xuIgor
ICAgICAgICAidW5pZm9ybSBpdmVjMiBmb287XG4iCisgICAgICAgICJ1bmlmb3JtIGl2ZWMyIGJh
cjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIGJ2ZWMyIGEgPSBs
ZXNzVGhhbihhcHBsZXMsIG9yYW5nZXMpO1xuIgorICAgICAgICAiICAgYnZlYzIgYiA9IGdyZWF0
ZXJUaGFuKGZvbywgYmFyKTtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoYW55
KGEpID8gMS4wIDogMC4wLCBhbnkoYikgPyAxLjAgOiAwLjAsIDAuMCwgMS4wKTtcbiIKKyAgICAg
ICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VSVF9GQUxTRShm
b3VuZEVycm9ySW5JbnRlcm1lZGlhdGVUcmVlKCkpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5J
bnRlcm1lZGlhdGVUcmVlKCJMZXNzIFRoYW4gKDItY29tcG9uZW50IHZlY3RvciBvZiBib29sKSIp
KTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSW50ZXJtZWRpYXRlVHJlZSgiR3JlYXRlciBUaGFu
ICgyLWNvbXBvbmVudCB2ZWN0b3Igb2YgYm9vbCkiKSk7Cit9CisKK1RFU1RfRihUeXBlVHJhY2tp
bmdUZXN0LCBUZXh0dXJlMkRSZXN1bHRUeXBlQW5kUHJlY2lzaW9uKQoreworICAgIC8vIEVTU0wg
c3BlYyBzZWN0aW9uIDQuNS4zOiBzYW1wbGVyMkQgYW5kIHNhbXBsZXJDdWJlIGFyZSBsb3dwIGJ5
IGRlZmF1bHQKKyAgICAvLyBFU1NMIHNwZWMgc2VjdGlvbiA4OiBGb3IgdGhlIHRleHR1cmUgZnVu
Y3Rpb25zLCB0aGUgcHJlY2lzaW9uIG9mIHRoZSByZXR1cm4gdHlwZSBtYXRjaGVzIHRoZSBwcmVj
aXNpb24gb2YgdGhlIHNhbXBsZXIgdHlwZS4KKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVy
U3RyaW5nID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAi
dW5pZm9ybSBzYW1wbGVyMkQgcztcbiIKKyAgICAgICAgInVuaWZvcm0gdmVjMiBhO1xuIgorICAg
ICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgdmVjNCBjID0gdGV4dHVyZTJEKHMs
IGEpO1xuIgorICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gYztcbiIKKyAgICAgICAgIn1cbiI7
CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VSVF9GQUxTRShmb3VuZEVycm9y
SW5JbnRlcm1lZGlhdGVUcmVlKCkpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlh
dGVUcmVlKCJ0ZXh0dXJlMkQoczIxO3ZmMjsgKGxvd3AgNC1jb21wb25lbnQgdmVjdG9yIG9mIGZs
b2F0KSIpKTsKK30KKworVEVTVF9GKFR5cGVUcmFja2luZ1Rlc3QsIFRleHR1cmVDdWJlUmVzdWx0
VHlwZUFuZFByZWNpc2lvbikKK3sKKyAgICAvLyBFU1NMIHNwZWMgc2VjdGlvbiA0LjUuMzogc2Ft
cGxlcjJEIGFuZCBzYW1wbGVyQ3ViZSBhcmUgbG93cCBieSBkZWZhdWx0CisgICAgLy8gRVNTTCBz
cGVjIHNlY3Rpb24gODogRm9yIHRoZSB0ZXh0dXJlIGZ1bmN0aW9ucywgdGhlIHByZWNpc2lvbiBv
ZiB0aGUgcmV0dXJuIHR5cGUgbWF0Y2hlcyB0aGUgcHJlY2lzaW9uIG9mIHRoZSBzYW1wbGVyIHR5
cGUuCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gc2FtcGxlckN1YmUgc2M7
XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzMgYTtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtc
biIKKyAgICAgICAgIiAgIHZlYzQgYyA9IHRleHR1cmVDdWJlKHNjLCBhKTtcbiIKKyAgICAgICAg
IiAgIGdsX0ZyYWdDb2xvciA9IGM7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hh
ZGVyU3RyaW5nKTsKKyAgICBBU1NFUlRfRkFMU0UoZm91bmRFcnJvckluSW50ZXJtZWRpYXRlVHJl
ZSgpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSW50ZXJtZWRpYXRlVHJlZSgidGV4dHVyZUN1
YmUoc0MxO3ZmMzsgKGxvd3AgNC1jb21wb25lbnQgdmVjdG9yIG9mIGZsb2F0KSIpKTsKK30KKwor
VEVTVF9GKFR5cGVUcmFja2luZ1Rlc3QsIFRleHR1cmVTaXplUmVzdWx0VHlwZUFuZFByZWNpc2lv
bikKK3sKKyAgICAvLyBFU1NMIDMuMCBzcGVjIHNlY3Rpb24gODogdGV4dHVyZVNpemUgaGFzIHBy
ZWRlZmluZWQgcHJlY2lzaW9uIGhpZ2hwCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0
cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAg
ICAgICAidW5pZm9ybSBzYW1wbGVyMkQgcztcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIK
KyAgICAgICAgIiAgIGl2ZWMyIHNpemUgPSB0ZXh0dXJlU2l6ZShzLCAwKTtcbiIKKyAgICAgICAg
IiAgIGlmIChzaXplLnggPiAxMDApIHtcbiIKKyAgICAgICAgIiAgICAgICBteV9GcmFnQ29sb3Ig
PSB2ZWM0KDAuMCwgMS4wLCAwLjAsIDEuMCk7XG4iCisgICAgICAgICIgICB9IGVsc2Uge1xuIgor
ICAgICAgICAiICAgICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTtc
biIKKyAgICAgICAgIiAgIH1cbiIKKyAgICAgICAgIn1cbiI7CisgICAgY29tcGlsZShzaGFkZXJT
dHJpbmcpOworICAgIEFTU0VSVF9GQUxTRShmb3VuZEVycm9ySW5JbnRlcm1lZGlhdGVUcmVlKCkp
OworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJ0ZXh0dXJlU2l6ZShz
MjE7aTE7IChoaWdocCAyLWNvbXBvbmVudCB2ZWN0b3Igb2YgaW50KSIpKTsKK30KKworVEVTVF9G
KFR5cGVUcmFja2luZ1Rlc3QsIEJ1aWx0SW5Db25zdHJ1Y3RvclJlc3VsdFR5cGVBbmRQcmVjaXNp
b24pCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gZmxvYXQgdTE7XG4i
CisgICAgICAgICJ1bmlmb3JtIGZsb2F0IHUyO1xuIgorICAgICAgICAidW5pZm9ybSBmbG9hdCB1
MztcbiIKKyAgICAgICAgInVuaWZvcm0gZmxvYXQgdTQ7XG4iCisgICAgICAgICJ2b2lkIG1haW4o
KSB7XG4iCisgICAgICAgICIgICB2ZWM0IGEgPSB2ZWM0KHUxLCB1MiwgdTMsIHU0KTtcbiIKKyAg
ICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IGE7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBp
bGUoc2hhZGVyU3RyaW5nKTsKKyAgICBBU1NFUlRfRkFMU0UoZm91bmRFcnJvckluSW50ZXJtZWRp
YXRlVHJlZSgpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSW50ZXJtZWRpYXRlVHJlZSgiQ29u
c3RydWN0IHZlYzQgKG1lZGl1bXAgNC1jb21wb25lbnQgdmVjdG9yIG9mIGZsb2F0KSIpKTsKK30K
KworVEVTVF9GKFR5cGVUcmFja2luZ1Rlc3QsIFN0cnVjdENvbnN0cnVjdG9yUmVzdWx0Tm9QcmVj
aXNpb24pCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAg
ICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gdmVjNCB1MTtc
biIKKyAgICAgICAgInVuaWZvcm0gdmVjNCB1MjtcbiIKKyAgICAgICAgInN0cnVjdCBTIHsgaGln
aHAgdmVjNCBhOyBoaWdocCB2ZWM0IGI7IH07XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4i
CisgICAgICAgICIgICBTIHMgPSBTKHUxLCB1Mik7XG4iCisgICAgICAgICIgICBnbF9GcmFnQ29s
b3IgPSBzLmE7XG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsK
KyAgICBBU1NFUlRfRkFMU0UoZm91bmRFcnJvckluSW50ZXJtZWRpYXRlVHJlZSgpKTsKKyAgICBB
U1NFUlRfVFJVRShmb3VuZEluSW50ZXJtZWRpYXRlVHJlZSgiQ29uc3RydWN0IHN0cnVjdHVyZSAo
c3RydWN0dXJlKSIpKTsKK30KKworVEVTVF9GKFR5cGVUcmFja2luZ1Rlc3QsIFBhY2tSZXN1bHRU
eXBlQW5kUHJlY2lzaW9uKQoreworICAgIC8vIEVTU0wgMy4wIHNwZWMgc2VjdGlvbiA4LjQ6IHBh
Y2sgZnVuY3Rpb25zIGhhdmUgcHJlZGVmaW5lZCBwcmVjaXNpb24gaGlnaHAKKyAgICBjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgor
ICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJwcmVjaXNpb24g
bWVkaXVtcCBpbnQ7XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzIgdXY7XG4iCisgICAgICAgICJv
dXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAg
ICAgICIgICB1aW50IHUwID0gcGFja1Nub3JtMngxNih1dik7XG4iCisgICAgICAgICIgICB1aW50
IHUxID0gcGFja1Vub3JtMngxNih1dik7XG4iCisgICAgICAgICIgICB1aW50IHUyID0gcGFja0hh
bGYyeDE2KHV2KTtcbiIKKyAgICAgICAgIiAgIGlmICh1MCArIHUxICsgdTIgPiAxMDB1KSB7XG4i
CisgICAgICAgICIgICAgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDEuMCwgMC4wLCAxLjAp
O1xuIgorICAgICAgICAiICAgfSBlbHNlIHtcbiIKKyAgICAgICAgIiAgICAgICBteV9GcmFnQ29s
b3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7XG4iCisgICAgICAgICIgICB9XG4iCisgICAg
ICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBBU1NFUlRfRkFMU0Uo
Zm91bmRFcnJvckluSW50ZXJtZWRpYXRlVHJlZSgpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZElu
SW50ZXJtZWRpYXRlVHJlZSgicGFjayBTbm9ybSAyeDE2IChoaWdocCB1aW50KSIpKTsKKyAgICBB
U1NFUlRfVFJVRShmb3VuZEluSW50ZXJtZWRpYXRlVHJlZSgicGFjayBVbm9ybSAyeDE2IChoaWdo
cCB1aW50KSIpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSW50ZXJtZWRpYXRlVHJlZSgicGFj
ayBoYWxmIDJ4MTYgKGhpZ2hwIHVpbnQpIikpOworfQorCitURVNUX0YoVHlwZVRyYWNraW5nVGVz
dCwgVW5wYWNrTm9ybVJlc3VsdFR5cGVBbmRQcmVjaXNpb24pCit7CisgICAgLy8gRVNTTCAzLjAg
c3BlYyBzZWN0aW9uIDguNDogdW5wYWNrKFMvVSlub3JtMngxNiBoYXMgcHJlZGVmaW5lZCBwcmVj
aXNpb24gaGlnaHAKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KKyAgICAg
ICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
XG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBpbnQ7XG4iCisgICAgICAgICJ1bmlmb3Jt
IHVpbnQgdXU7XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAg
ICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICB2ZWMyIHYwID0gdW5wYWNrU25vcm0yeDE2
KHV1KTtcbiIKKyAgICAgICAgIiAgIHZlYzIgdjEgPSB1bnBhY2tVbm9ybTJ4MTYodXUpO1xuIgor
ICAgICAgICAiICAgaWYgKHYwLnggKiB2MS54ID4gMS4wKSB7XG4iCisgICAgICAgICIgICAgICAg
bXlfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDEuMCwgMC4wLCAxLjApO1xuIgorICAgICAgICAiICAg
fSBlbHNlIHtcbiIKKyAgICAgICAgIiAgICAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4w
LCAwLjAsIDEuMCk7XG4iCisgICAgICAgICIgICB9XG4iCisgICAgICAgICJ9XG4iOworICAgIGNv
bXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBBU1NFUlRfRkFMU0UoZm91bmRFcnJvckluSW50ZXJt
ZWRpYXRlVHJlZSgpKTsKKyAgICBBU1NFUlRfVFJVRShmb3VuZEluSW50ZXJtZWRpYXRlVHJlZSgi
dW5wYWNrIFNub3JtIDJ4MTYgKGhpZ2hwIDItY29tcG9uZW50IHZlY3RvciBvZiBmbG9hdCkiKSk7
CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoInVucGFjayBVbm9ybSAy
eDE2IChoaWdocCAyLWNvbXBvbmVudCB2ZWN0b3Igb2YgZmxvYXQpIikpOworfQorCitURVNUX0Yo
VHlwZVRyYWNraW5nVGVzdCwgVW5wYWNrSGFsZlJlc3VsdFR5cGVBbmRQcmVjaXNpb24pCit7Cisg
ICAgLy8gRVNTTCAzLjAgc3BlYyBzZWN0aW9uIDguNDogdW5wYWNrSGFsZjJ4MTYgaGFzIHByZWRl
ZmluZWQgcHJlY2lzaW9uIG1lZGl1bXAKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3Ry
aW5nID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIGhp
Z2hwIGZsb2F0O1xuIgorICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGludDtcbiIKKyAgICAgICAg
InVuaWZvcm0gdWludCB1dTtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIK
KyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIHZlYzIgdiA9IHVucGFja0hh
bGYyeDE2KHV1KTtcbiIKKyAgICAgICAgIiAgIGlmICh2LnggPiAxLjApIHtcbiIKKyAgICAgICAg
IiAgICAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMS4wLCAwLjAsIDEuMCk7XG4iCisgICAg
ICAgICIgICB9IGVsc2Uge1xuIgorICAgICAgICAiICAgICAgIG15X0ZyYWdDb2xvciA9IHZlYzQo
MS4wLCAwLjAsIDAuMCwgMS4wKTtcbiIKKyAgICAgICAgIiAgIH1cbiIKKyAgICAgICAgIn1cbiI7
CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VSVF9GQUxTRShmb3VuZEVycm9y
SW5JbnRlcm1lZGlhdGVUcmVlKCkpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlh
dGVUcmVlKCJ1bnBhY2sgaGFsZiAyeDE2IChtZWRpdW1wIDItY29tcG9uZW50IHZlY3RvciBvZiBm
bG9hdCkiKSk7Cit9CisKK1RFU1RfRihUeXBlVHJhY2tpbmdUZXN0LCBCdWlsdEluQWJzU2lnbkZ1
bmN0aW9uRmxvYXRSZXN1bHRUeXBlQW5kUHJlY2lzaW9uKQoreworICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZzaGFkZXJTdHJpbmcgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
CisgICAgICAgICJ1bmlmb3JtIGZsb2F0IGZ2YWwxO1xuIgorICAgICAgICAidm9pZCBtYWluKCkg
e1xuIgorICAgICAgICAiICAgZmxvYXQgZnZhbDIgPSBhYnMoZnZhbDEpO1xuIgorICAgICAgICAi
ICAgZmxvYXQgZnZhbDMgPSBzaWduKGZ2YWwxKTtcbiIKKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xv
ciA9IHZlYzQoZnZhbDEsIDAuMCwgMC4wLCAxLjApOyBcbiIKKyAgICAgICAgIn1cbiI7CisgICAg
Y29tcGlsZShzaGFkZXJTdHJpbmcpOworICAgIEFTU0VSVF9GQUxTRShmb3VuZEVycm9ySW5JbnRl
cm1lZGlhdGVUcmVlKCkpOworICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVl
KCJBYnNvbHV0ZSB2YWx1ZSAobWVkaXVtcCBmbG9hdCkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91
bmRJbkludGVybWVkaWF0ZVRyZWUoIlNpZ24gKG1lZGl1bXAgZmxvYXQpIikpOworfQorCitURVNU
X0YoVHlwZVRyYWNraW5nVGVzdCwgQnVpbHRJbkFic1NpZ25GdW5jdGlvbkludFJlc3VsdFR5cGVB
bmRQcmVjaXNpb24pCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Cisg
ICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0O1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgaW50O1xuIgorICAgICAgICAidW5p
Zm9ybSBpbnQgaXZhbDE7XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisg
ICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICBpbnQgaXZhbDIgPSBhYnMoaXZh
bDEpO1xuIgorICAgICAgICAiICAgaW50IGl2YWwzID0gc2lnbihpdmFsMSk7XG4iCisgICAgICAg
ICIgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCk7IFxuIgorICAgICAg
ICAifVxuIjsKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX0ZBTFNFKGZv
dW5kRXJyb3JJbkludGVybWVkaWF0ZVRyZWUoKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbklu
dGVybWVkaWF0ZVRyZWUoIkFic29sdXRlIHZhbHVlIChtZWRpdW1wIGludCkiKSk7CisgICAgQVNT
RVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoIlNpZ24gKG1lZGl1bXAgaW50KSIpKTsK
K30KKworVEVTVF9GKFR5cGVUcmFja2luZ1Rlc3QsIEJ1aWx0SW5GbG9hdEJpdHNUb0ludFJlc3Vs
dFR5cGVBbmRQcmVjaXNpb24pCit7CisgICAgLy8gRVNTTCAzLjAwIHNlY3Rpb24gOC4zOiBmbG9h
dEJpdHNUbyhVKWludCByZXR1cm5zIGEgaGlnaHAgdmFsdWUuCisgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAg
InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAg
aW50O1xuIgorICAgICAgICAidW5pZm9ybSBmbG9hdCBmO1xuIgorICAgICAgICAib3V0IHZlYzQg
bXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAg
aW50IGkgPSBmbG9hdEJpdHNUb0ludChmKTtcbiIKKyAgICAgICAgIiAgIHVpbnQgdSA9IGZsb2F0
Qml0c1RvVWludChmKTtcbiIKKyAgICAgICAgIiAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAw
LjAsIDAuMCwgMS4wKTsgXG4iCisgICAgICAgICJ9XG4iOworICAgIGNvbXBpbGUoc2hhZGVyU3Ry
aW5nKTsKKyAgICBBU1NFUlRfRkFMU0UoZm91bmRFcnJvckluSW50ZXJtZWRpYXRlVHJlZSgpKTsK
KyAgICBBU1NFUlRfVFJVRShmb3VuZEluSW50ZXJtZWRpYXRlVHJlZSgiZmxvYXQgYml0cyB0byBp
bnQgKGhpZ2hwIGludCkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRy
ZWUoImZsb2F0IGJpdHMgdG8gdWludCAoaGlnaHAgdWludCkiKSk7Cit9CisKK1RFU1RfRihUeXBl
VHJhY2tpbmdUZXN0LCBCdWlsdEluSW50Qml0c1RvRmxvYXRSZXN1bHRUeXBlQW5kUHJlY2lzaW9u
KQoreworICAgIC8vIEVTU0wgMy4wMCBzZWN0aW9uIDguMzogKHUpaW50Qml0c1RvRmxvYXQgcmV0
dXJucyBhIGhpZ2hwIHZhbHVlLgorICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcg
PQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDtcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGludDtcbiIKKyAgICAgICAg
InVuaWZvcm0gaW50IGk7XG4iCisgICAgICAgICJ1bmlmb3JtIHVpbnQgdTtcbiIKKyAgICAgICAg
Im91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAg
ICAgICAgIiAgIGZsb2F0IGYxID0gaW50Qml0c1RvRmxvYXQoaSk7XG4iCisgICAgICAgICIgICBm
bG9hdCBmMiA9IHVpbnRCaXRzVG9GbG9hdCh1KTtcbiIKKyAgICAgICAgIiAgIG15X0ZyYWdDb2xv
ciA9IHZlYzQoZjEsIGYyLCAwLjAsIDEuMCk7IFxuIgorICAgICAgICAifVxuIjsKKyAgICBjb21w
aWxlKHNoYWRlclN0cmluZyk7CisgICAgQVNTRVJUX0ZBTFNFKGZvdW5kRXJyb3JJbkludGVybWVk
aWF0ZVRyZWUoKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoImlu
dCBiaXRzIHRvIGZsb2F0IChoaWdocCBmbG9hdCkiKSk7CisgICAgQVNTRVJUX1RSVUUoZm91bmRJ
bkludGVybWVkaWF0ZVRyZWUoInVpbnQgYml0cyB0byBmbG9hdCAoaGlnaHAgZmxvYXQpIikpOwor
fQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3Rz
L1Vucm9sbEZsYXR0ZW5fdGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1Vucm9sbEZsYXR0ZW5fdGVzdC5jcHAJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVy
X3Rlc3RzL1Vucm9sbEZsYXR0ZW5fdGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwy
MDcgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisvLworLy8gVW5yb2xsRmxhdHRlbl90ZXN0LmNwcDoKKy8vICAgVGVz
dCBmb3IgdGhlIG91dHB1dHRpbmcgb2YgW1t1bnJvbGxdXSBhbmQgW1tmbGF0dGVuXV0gZm9yIHRo
ZSBEM0QgY29tcGlsZXIuCisvLyAgIFRoaXMgdGVzdCBjYW4gb25seSBiZSBlbmFibGVkIHdoZW4g
SExTTCBzdXBwb3J0IGlzIGVuYWJsZWQuCisvLworCisjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKKyNp
bmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisj
aW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCisjaW5jbHVkZSAidGVzdHMvdGVzdF91dGls
cy9jb21waWxlcl90ZXN0LmgiCisKK25hbWVzcGFjZQoreworCitjbGFzcyBVbnJvbGxGbGF0dGVu
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0Cit7CisgIHB1YmxpYzoKKyAgICBVbnJvbGxGbGF0
dGVuVGVzdCgpIHt9CisKKyAgcHJvdGVjdGVkOgorICAgIHZvaWQgY29tcGlsZShjb25zdCBzdGQ6
OnN0cmluZyAmc2hhZGVyU3RyaW5nKQorICAgIHsKKyAgICAgICAgc3RkOjpzdHJpbmcgaW5mb0xv
ZzsKKyAgICAgICAgYm9vbCBjb21waWxhdGlvblN1Y2Nlc3MgPQorICAgICAgICAgICAgY29tcGls
ZVRlc3RTaGFkZXIoR0xfRlJBR01FTlRfU0hBREVSLCBTSF9HTEVTMl9TUEVDLCBTSF9ITFNMXzRf
MV9PVVRQVVQsIHNoYWRlclN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNI
X1ZBUklBQkxFUywgJm1UcmFuc2xhdGVkU291cmNlLCAmaW5mb0xvZyk7CisgICAgICAgIGlmICgh
Y29tcGlsYXRpb25TdWNjZXNzKQorICAgICAgICB7CisgICAgICAgICAgICBGQUlMKCkgPDwgIlNo
YWRlciBjb21waWxhdGlvbiBmYWlsZWQgIiA8PCBpbmZvTG9nOworICAgICAgICB9CisgICAgICAg
IC8vIElnbm9yZSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzaGFkZXIgdG8gYXZvaWQgdGhlIGRlZmlu
aXRpb25zIG9mIExPT1AgYW5kIEZMQVRURU4KKyAgICAgICAgbUN1cnJlbnRQb3NpdGlvbiA9IHN0
YXRpY19jYXN0PGludD4obVRyYW5zbGF0ZWRTb3VyY2UuZmluZCgiR0xfVVNFU19GUkFHX0NPTE9S
IikpOworICAgIH0KKworICAgIHZvaWQgZXhwZWN0KGNvbnN0IGNoYXIgKnBhdHRlcm5zW10sIHNp
emVfdCBjb3VudCkKKyAgICB7CisgICAgICAgIGNvbnN0IGNoYXIgKmJhZFBhdHRlcm5zW10gPSB7
IFVOUk9MTCwgRkxBVFRFTiB9OworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50
OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdHRlcm4gPSBwYXR0
ZXJuc1tpXTsKKyAgICAgICAgICAgIGF1dG8gcG9zaXRpb24gPSBtVHJhbnNsYXRlZFNvdXJjZS5m
aW5kKHBhdHRlcm4sIG1DdXJyZW50UG9zaXRpb24pOworICAgICAgICAgICAgaWYgKHBvc2l0aW9u
ID09IHN0ZDo6c3RyaW5nOjpucG9zKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEZB
SUwoKSA8PCAiQ291bGRuJ3QgZmluZCAnIiA8PCBwYXR0ZXJuIDw8ICInIGFmdGVyIGV4cGVjdGF0
aW9ucyAnIgorICAgICAgICAgICAgICAgICAgICAgICA8PCBtRXhwZWN0YXRpb25MaXN0IDw8ICIn
IGluIHRyYW5zbGF0ZWQgc291cmNlOlxuIiA8PCBtVHJhbnNsYXRlZFNvdXJjZTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBBcnJheVNpemUoYmFk
UGF0dGVybnMpOyBqKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciAqYmFkUGF0dGVybiA9IGJhZFBhdHRlcm5zW2pdOworICAgICAgICAgICAgICAgIGlmIChwYXR0
ZXJuICE9IGJhZFBhdHRlcm4gJiYKKyAgICAgICAgICAgICAgICAgICAgbVRyYW5zbGF0ZWRTb3Vy
Y2UuZmluZChiYWRQYXR0ZXJuLCBtQ3VycmVudFBvc2l0aW9uKSA8IHBvc2l0aW9uKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgRkFJTCgpIDw8ICJGb3VuZCAnIiA8PCBi
YWRQYXR0ZXJuIDw8ICInIGJlZm9yZSAnIiA8PCBwYXR0ZXJuIDw8ICInIGFmdGVyIGV4cGVjdGF0
aW9ucyAnIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgbUV4cGVjdGF0aW9uTGlzdCA8
PCAiJyBpbiB0cmFuc2xhdGVkIHNvdXJjZTpcbiIgPDwgbVRyYW5zbGF0ZWRTb3VyY2U7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbUV4cGVjdGF0aW9uTGlz
dCArPSAiIC0gIiArIHN0ZDo6c3RyaW5nKHBhdHRlcm4pOworICAgICAgICAgICAgbUN1cnJlbnRQ
b3NpdGlvbiA9IHN0YXRpY19jYXN0PGludD4ocG9zaXRpb24pICsgMTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHN0YXRpYyBjb25zdCBjaGFyICpVTlJPTEw7CisgICAgc3RhdGljIGNvbnN0IGNo
YXIgKkZMQVRURU47CisKKyAgcHJpdmF0ZToKKyAgICBzdGQ6OnN0cmluZyBtVHJhbnNsYXRlZFNv
dXJjZTsKKworICAgIGludCBtQ3VycmVudFBvc2l0aW9uOworICAgIHN0ZDo6c3RyaW5nIG1FeHBl
Y3RhdGlvbkxpc3Q7Cit9OworCitjb25zdCBjaGFyICpVbnJvbGxGbGF0dGVuVGVzdDo6VU5ST0xM
ID0gIkxPT1AiOworY29uc3QgY2hhciAqVW5yb2xsRmxhdHRlblRlc3Q6OkZMQVRURU4gPSAiRkxB
VFRFTiI7CisKKy8vIENoZWNrIHRoYXQgdGhlIG5vdGhpbmcgaXMgYWRkZWQgaWYgdGhlcmUgaXMg
bm8gZ3JhZGllbnQgb3BlcmF0aW9uCisvLyBldmVuIHdoZW4gdGhlcmUgaXMgaWZzIGFuZCBkaXNj
b250aW51b3VzIGxvb3BzCitURVNUX0YoVW5yb2xsRmxhdHRlblRlc3QsIE5vR3JhZGllbnQpCit7
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gZmxvYXQgZjtcbiIKKyAgICAg
ICAgImZsb2F0IGZ1bihmbG9hdCBhKXtcbiIgLy8gMQorICAgICAgICAiICAgIGlmIChhID4gMS4w
KSB7cmV0dXJuIGY7fVxuIiAvLyAyCisgICAgICAgICIgICAgZWxzZSB7cmV0dXJuIGEgKyAxLjA7
fVxuIgorICAgICAgICAifVxuIgorICAgICAgICAiZmxvYXQgZnVuMihmbG9hdCBhKXtcbiIgLy8g
MworICAgICAgICAiICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykge1xuIiAvLyA0Cisg
ICAgICAgICIgICAgICAgIGlmIChhID4gMS4wKSB7YnJlYWs7fVxuIiAvLyA1CisgICAgICAgICIg
ICAgICAgIGEgPSBmdW4oYSk7XG4iIC8vIDYKKyAgICAgICAgIiAgICB9XG4iCisgICAgICAgICIg
ICAgcmV0dXJuIGE7XG4iCisgICAgICAgICJ9XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4i
CisgICAgICAgICIgICAgZmxvYXQgYWNjdW0gPSAwLjA7XG4iCisgICAgICAgICIgICAgaWYgKGYg
PCA1LjApIHthY2N1bSA9IGZ1bjIoYWNjdW0pO31cbiIgLy8gNworICAgICAgICAiICAgIGdsX0Zy
YWdDb2xvciA9IHZlYzQoYWNjdW0pO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb21waWxlKHNo
YWRlclN0cmluZyk7CisgICAgLy8gMSAtIHNob3VsZG4ndCBnZXQgYSBMb2QwIHZlcnNpb24gZ2Vu
ZXJhdGVkCisgICAgLy8gMiAtIG5vIEZMQVRURU4gYmVjYXVzZSBkb2VzIG5vdCBjb250YWluIGRp
c2NvbnQgbG9vcAorICAgIC8vIDMgLSBzaG91bGRuJ3QgZ2V0IGEgTG9kMCB2ZXJzaW9uIGdlbmVy
YXRlZAorICAgIC8vIDQgLSBubyBMT09QIGJlY2F1c2UgZGlzY29udCwgYW5kIGFsc28gbm8gZ3Jh
ZGllbnQKKyAgICAvLyA1IC0gbm8gRkxBVFRFTiBiZWNhdXNlIGRvZXMgbm90IGNvbnRhaW4gbG9v
cCB3aXRoIGEgZ3JhZGllbnQKKyAgICAvLyA2IC0gY2FsbCBub24tTG9kMCB2ZXJzaW9uCisgICAg
Ly8gNyAtIG5vIEZMQVRURU4KKyAgICBjb25zdCBjaGFyICpleHBlY3RhdGlvbnNbXSA9CisgICAg
eworICAgICAgICAiZnVuKCIsICJpZiIsCisgICAgICAgICJmdW4yKCIsICJmb3IiLCAiaWYiLCAi
YnJlYWsiLCAiZnVuKCIsCisgICAgICAgICJtYWluKCIsICJpZiIsICJmdW4yKCIKKyAgICB9Owor
ICAgIGV4cGVjdChleHBlY3RhdGlvbnMsIEFycmF5U2l6ZShleHBlY3RhdGlvbnMpKTsKK30KKwor
Ly8gQ2hlY2sgdGhhdCB3aGVuIHdlIGhhdmUgYSBncmFkaWVudCBpbiBhIG5vbi1kaXNjb250aW51
b3VzIGxvb3AKKy8vIHdlIHVzZSB0aGUgcmVndWxhciB2ZXJzaW9uIG9mIHRoZSBmdW5jdGlvbnMu
IEFsc28gY2hlY2tzIHRoYXQKKy8vIExPT1AgaXMgZ2VuZXJhdGVkIGZvciB0aGUgbG9vcCBjb250
YWluaW5nIHRoZSBncmFkaWVudC4KK1RFU1RfRihVbnJvbGxGbGF0dGVuVGVzdCwgR3JhZGllbnRO
b3RJbkRpc2NvbnQpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Cisg
ICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gZmxv
YXQgZjtcbiIKKyAgICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHRleDsiCisgICAgICAgICJmbG9h
dCBmdW4oZmxvYXQgYSl7XG4iIC8vIDEKKyAgICAgICAgIiAgICByZXR1cm4gdGV4dHVyZTJEKHRl
eCwgdmVjMigwLjUsIGYpKS54O1xuIiAvLyAyCisgICAgICAgICJ9XG4iCisgICAgICAgICJmbG9h
dCBmdW4yKGZsb2F0IGEpe1xuIiAvLyAzCisgICAgICAgICIgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCAxMDsgaSsrKSB7XG4iIC8vIDQKKyAgICAgICAgIiAgICAgICAgaWYgKGEgPiAxLjApIHt9XG4i
IC8vIDUKKyAgICAgICAgIiAgICAgICAgYSA9IGZ1bihhKTtcbiIgLy8gNgorICAgICAgICAiICAg
ICAgICBhICs9IHRleHR1cmUyRCh0ZXgsIHZlYzIoYSwgMC4wKSkueDsiIC8vIDcKKyAgICAgICAg
IiAgICB9XG4iCisgICAgICAgICIgICAgcmV0dXJuIGE7XG4iCisgICAgICAgICJ9XG4iCisgICAg
ICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICAgZmxvYXQgYWNjdW0gPSAwLjA7XG4i
CisgICAgICAgICIgICAgaWYgKGYgPCA1LjApIHthY2N1bSA9IGZ1bjIoYWNjdW0pO31cbiIgLy8g
OAorICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoYWNjdW0pO1xuIgorICAgICAgICAi
fVxuIjsKKyAgICAvLyAxIC0gc2hvdWxkbid0IGdldCBhIExvZDAgdmVyc2lvbiBnZW5lcmF0ZWQK
KyAgICAvLyAyIC0gbm8gTG9kMCB2ZXJzaW9uIGdlbmVyYXRlZAorICAgIC8vIDMgLSBzaG91bGRu
J3QgZ2V0IGEgTG9kMCB2ZXJzaW9uIGdlbmVyYXRlZCAobm90IGluIGRpc2NvbnQgbG9vcCkKKyAg
ICAvLyA0IC0gc2hvdWxkIGhhdmUgTE9PUCBiZWNhdXNlIGl0IGNvbnRhaW5zIGEgZ3JhZGllbnQg
b3BlcmF0aW9uIChldmVuIGlmIExvZDApCisgICAgLy8gNSAtIG5vIEZMQVRURU4gYmVjYXVzZSBk
b2Vzbid0IGNvbnRhaW4gbG9vcCB3aXRoIGEgZ3JhZGllbnQKKyAgICAvLyA2IC0gY2FsbCBub24t
TG9kMCB2ZXJzaW9uCisgICAgLy8gNyAtIGNhbGwgbm9uLUxvZDAgdmVyc2lvbgorICAgIC8vIDgg
LSBGTEFUVEVOIGJlY2F1c2UgaXQgY29udGFpbnMgYSBsb29wIHdpdGggYSBncmFkaWVudAorICAg
IGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKyAgICBjb25zdCBjaGFyICpleHBlY3RhdGlvbnNbXSA9
CisgICAgeworICAgICAgICAiZnVuKCIsICJ0ZXh0dXJlMkQoIiwKKyAgICAgICAgImZ1bjIoIiwg
IkxPT1AiLCAiZm9yIiwgImlmIiwgImZ1bigiLCAidGV4dHVyZTJEKCIsCisgICAgICAgICJtYWlu
KCIsICJGTEFUVEVOIiwgImlmIiwgImZ1bjIoIgorICAgIH07CisgICAgZXhwZWN0KGV4cGVjdGF0
aW9ucywgQXJyYXlTaXplKGV4cGVjdGF0aW9ucykpOworfQorCisvLyBDaGVjayB0aGF0IHdoZW4g
d2UgaGF2ZSBhIGdyYWRpZW50IGluIGEgZGlzY29udGludW91cyBsb29wCisvLyB3ZSB1c2UgdGhl
IExvZDAgdmVyc2lvbiBvZiB0aGUgZnVuY3Rpb25zLgorVEVTVF9GKFVucm9sbEZsYXR0ZW5UZXN0
LCBHcmFkaWVudEluRGlzY29udCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3Ry
aW5nID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidW5p
Zm9ybSBmbG9hdCBmO1xuIgorICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQgdGV4OyIKKyAgICAg
ICAgImZsb2F0IGZ1bihmbG9hdCBhKXtcbiIgLy8gMQorICAgICAgICAiICAgIHJldHVybiB0ZXh0
dXJlMkQodGV4LCB2ZWMyKDAuNSwgZikpLng7XG4iIC8vIDIKKyAgICAgICAgIn1cbiIKKyAgICAg
ICAgImZsb2F0IGZ1bjIoZmxvYXQgYSl7XG4iIC8vIDMKKyAgICAgICAgIiAgICBmb3IgKGludCBp
ID0gMDsgaSA8IDEwOyBpKyspIHtcbiIgLy8gNAorICAgICAgICAiICAgICAgICBpZiAoYSA+IDEu
MCkge2JyZWFrO31cbiIgLy8gNQorICAgICAgICAiICAgICAgICBhID0gZnVuKGEpO1xuIiAvLyA2
CisgICAgICAgICIgICAgICAgIGEgKz0gdGV4dHVyZTJEKHRleCwgdmVjMihhLCAwLjApKS54OyIg
Ly8gNworICAgICAgICAiICAgIH1cbiIKKyAgICAgICAgIiAgICByZXR1cm4gYTtcbiIKKyAgICAg
ICAgIn1cbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgICBmbG9hdCBh
Y2N1bSA9IDAuMDtcbiIKKyAgICAgICAgIiAgICBpZiAoZiA8IDUuMCkge2FjY3VtID0gZnVuMihh
Y2N1bSk7fVxuIiAvLyA4CisgICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChhY2N1bSk7
XG4iCisgICAgICAgICJ9XG4iOworICAgIC8vIDEgLSBzaG91bGQgZ2V0IGEgTG9kMCB2ZXJzaW9u
IGdlbmVyYXRlZCAoZ3JhZGllbnQgKyBkaXNjb250IGxvb3ApCisgICAgLy8gMiAtIHdpbGwgZ2V0
IHRoZSBMb2QwIGlmIGluIGZ1bkxvZDAKKyAgICAvLyAzIC0gc2hvdWxkbid0IGdldCBhIExvZDAg
dmVyc2lvbiBnZW5lcmF0ZWQgKG5vdCBpbiBkaXNjb250IGxvb3ApCisgICAgLy8gNCAtIHNob3Vs
ZCBoYXZlIExPT1AgYmVjYXVzZSBpdCBjb250YWlucyBhIGdyYWRpZW50IG9wZXJhdGlvbiAoZXZl
biBpZiBMb2QwKQorICAgIC8vIDUgLSBubyBGTEFUVEVOIGJlY2F1c2UgZG9lc24ndCBjb250YWlu
IGEgbG9vcCB3aXRoIGEgZ3JhZGllbnQKKyAgICAvLyA2IC0gY2FsbCBMb2QwIHZlcnNpb24KKyAg
ICAvLyA3IC0gY2FsbCBMb2QwIHZlcnNpb24KKyAgICAvLyA4IC0gRkxBVFRFTiBiZWNhdXNlIGl0
IGNvbnRhaW5zIGEgbG9vcCB3aXRoIGEgZ3JhZGllbnQKKyAgICBjb21waWxlKHNoYWRlclN0cmlu
Zyk7CisgICAgY29uc3QgY2hhciAqZXhwZWN0YXRpb25zW10gPQorICAgIHsKKyAgICAgICAgImZ1
bigiLCAidGV4dHVyZTJEKCIsCisgICAgICAgICJmdW5Mb2QwKCIsICJ0ZXh0dXJlMkRMb2QwKCIs
CisgICAgICAgICJmdW4yKCIsICJMT09QIiwgImZvciIsICJpZiIsICJicmVhayIsICJmdW5Mb2Qw
KCIsICJ0ZXh0dXJlMkRMb2QwIiwKKyAgICAgICAgIm1haW4oIiwgIkZMQVRURU4iLCAiaWYiLCAi
ZnVuMigiCisgICAgfTsKKyAgICBleHBlY3QoZXhwZWN0YXRpb25zLCBBcnJheVNpemUoZXhwZWN0
YXRpb25zKSk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9jb21waWxlcl90ZXN0cy9WYXJpYWJsZVBhY2tlcl90ZXN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvVmFyaWFibGVQ
YWNrZXJfdGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1ZhcmlhYmxlUGFja2VyX3Rlc3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMjM3IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworI2luY2x1ZGUgImd0
ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKKyNpbmNsdWRlICJjb21tb24vdXRp
bGl0aWVzLmgiCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJjb21w
aWxlci90cmFuc2xhdG9yL1ZhcmlhYmxlUGFja2VyLmgiCisKK3N0YXRpYyBzaDo6R0xlbnVtIHR5
cGVzW10gPSB7CisgIEdMX0ZMT0FUX01BVDQsICAgICAgICAgICAgLy8gMAorICBHTF9GTE9BVF9N
QVQyLCAgICAgICAgICAgIC8vIDEKKyAgR0xfRkxPQVRfVkVDNCwgICAgICAgICAgICAvLyAyCisg
IEdMX0lOVF9WRUM0LCAgICAgICAgICAgICAgLy8gMworICBHTF9CT09MX1ZFQzQsICAgICAgICAg
ICAgIC8vIDQKKyAgR0xfRkxPQVRfTUFUMywgICAgICAgICAgICAvLyA1CisgIEdMX0ZMT0FUX1ZF
QzMsICAgICAgICAgICAgLy8gNgorICBHTF9JTlRfVkVDMywgICAgICAgICAgICAgIC8vIDcKKyAg
R0xfQk9PTF9WRUMzLCAgICAgICAgICAgICAvLyA4CisgIEdMX0ZMT0FUX1ZFQzIsICAgICAgICAg
ICAgLy8gOQorICBHTF9JTlRfVkVDMiwgICAgICAgICAgICAgIC8vIDEwCisgIEdMX0JPT0xfVkVD
MiwgICAgICAgICAgICAgLy8gMTEKKyAgR0xfRkxPQVQsICAgICAgICAgICAgICAgICAvLyAxMgor
ICBHTF9JTlQsICAgICAgICAgICAgICAgICAgIC8vIDEzCisgIEdMX0JPT0wsICAgICAgICAgICAg
ICAgICAgLy8gMTQKKyAgR0xfU0FNUExFUl8yRCwgICAgICAgICAgICAvLyAxNQorICBHTF9TQU1Q
TEVSX0NVQkUsICAgICAgICAgIC8vIDE2CisgIEdMX1NBTVBMRVJfRVhURVJOQUxfT0VTLCAgLy8g
MTcKKyAgR0xfU0FNUExFUl8yRF9SRUNUX0FSQiwgICAvLyAxOAorICBHTF9VTlNJR05FRF9JTlQs
ICAgICAgICAgIC8vIDE5CisgIEdMX1VOU0lHTkVEX0lOVF9WRUMyLCAgICAgLy8gMjAKKyAgR0xf
VU5TSUdORURfSU5UX1ZFQzMsICAgICAvLyAyMQorICBHTF9VTlNJR05FRF9JTlRfVkVDNCwgICAg
IC8vIDIyCisgIEdMX0ZMT0FUX01BVDJ4MywgICAgICAgICAgLy8gMjMKKyAgR0xfRkxPQVRfTUFU
Mng0LCAgICAgICAgICAvLyAyNAorICBHTF9GTE9BVF9NQVQzeDIsICAgICAgICAgIC8vIDI1Cisg
IEdMX0ZMT0FUX01BVDN4NCwgICAgICAgICAgLy8gMjYKKyAgR0xfRkxPQVRfTUFUNHgyLCAgICAg
ICAgICAvLyAyNworICBHTF9GTE9BVF9NQVQ0eDMsICAgICAgICAgIC8vIDI4CisgIEdMX1NBTVBM
RVJfM0QsICAgICAgICAgICAgLy8gMjkKKyAgR0xfU0FNUExFUl8yRF9BUlJBWSwgICAgICAvLyAz
MAorICBHTF9TQU1QTEVSXzJEX1NIQURPVywgICAgIC8vIDMxCisgIEdMX1NBTVBMRVJfQ1VCRV9T
SEFET1csICAgLy8gMzIKKyAgR0xfU0FNUExFUl8yRF9BUlJBWV9TSEFET1csIC8vIDMzCisgIEdM
X0lOVF9TQU1QTEVSXzJELCAgICAgICAgLy8gMzQKKyAgR0xfSU5UX1NBTVBMRVJfQ1VCRSwgICAg
ICAvLyAzNQorICBHTF9JTlRfU0FNUExFUl8zRCwgICAgICAgIC8vIDM2CisgIEdMX0lOVF9TQU1Q
TEVSXzJEX0FSUkFZLCAgLy8gMzcKKyAgR0xfVU5TSUdORURfSU5UX1NBTVBMRVJfMkQsIC8vIDM4
CisgIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSX0NVQkUsIC8vIDM5CisgIEdMX1VOU0lHTkVEX0lO
VF9TQU1QTEVSXzNELCAvLyA0MAorICBHTF9VTlNJR05FRF9JTlRfU0FNUExFUl8yRF9BUlJBWSwg
Ly8gNDEKK307CisKK3N0YXRpYyBzaDo6R0xlbnVtIG5vblNxTWF0VHlwZXNbXSA9IHsKKyAgR0xf
RkxPQVRfTUFUMngzLAorICBHTF9GTE9BVF9NQVQyeDQsCisgIEdMX0ZMT0FUX01BVDN4MiwKKyAg
R0xfRkxPQVRfTUFUM3g0LAorICBHTF9GTE9BVF9NQVQ0eDIsCisgIEdMX0ZMT0FUX01BVDR4Mwor
fTsKKworVEVTVChWYXJpYWJsZVBhY2tpbmcsIFBhY2spIHsKKyAgICBWYXJpYWJsZVBhY2tlciBw
YWNrZXI7CisgICAgc3RkOjp2ZWN0b3I8c2g6OlNoYWRlclZhcmlhYmxlPiB2YXJzOworICAgIGNv
bnN0IGludCBrTWF4Um93cyA9IDE2OworICAgIC8vIHRlc3Qgbm8gdmFycy4KKyAgICBFWFBFQ1Rf
VFJVRShwYWNrZXIuQ2hlY2tWYXJpYWJsZXNXaXRoaW5QYWNraW5nTGltaXRzKGtNYXhSb3dzLCB2
YXJzKSk7CisKKyAgICBmb3IgKHNpemVfdCB0dCA9IDA7IHR0IDwgQXJyYXlTaXplKHR5cGVzKTsg
Kyt0dCkKKyAgICB7CisgICAgICAgIHNoOjpHTGVudW0gdHlwZSAgICAgICAgICAgID0gdHlwZXNb
dHRdOworICAgICAgICBpbnQgbnVtX3Jvd3MgICAgICAgICAgICAgICA9IFZhcmlhYmxlUGFja2Vy
OjpHZXROdW1Sb3dzKHR5cGUpOworICAgICAgICBpbnQgbnVtX2NvbXBvbmVudHNfcGVyX3JvdyA9
IFZhcmlhYmxlUGFja2VyOjpHZXROdW1Db21wb25lbnRzUGVyUm93KHR5cGUpOworICAgICAgICAv
LyBDaGVjayAxIG9mIHRoZSB0eXBlLgorICAgICAgICB2YXJzLmNsZWFyKCk7CisgICAgICAgIHZh
cnMucHVzaF9iYWNrKHNoOjpTaGFkZXJWYXJpYWJsZSh0eXBlLCAwKSk7CisgICAgICAgIEVYUEVD
VF9UUlVFKHBhY2tlci5DaGVja1ZhcmlhYmxlc1dpdGhpblBhY2tpbmdMaW1pdHMoa01heFJvd3Ms
IHZhcnMpKTsKKworICAgICAgICAvLyBDaGVjayBleGFjdGx5IHRoZSByaWdodCBhbW91bnQgb2Yg
MSB0eXBlIGFzIGFuIGFycmF5LgorICAgICAgICBpbnQgbnVtX3ZhcnMgPSBrTWF4Um93cyAvIG51
bV9yb3dzOworICAgICAgICB2YXJzLmNsZWFyKCk7CisgICAgICAgIHZhcnMucHVzaF9iYWNrKHNo
OjpTaGFkZXJWYXJpYWJsZSh0eXBlLCBudW1fdmFycyA9PSAxID8gMCA6IG51bV92YXJzKSk7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKHBhY2tlci5DaGVja1ZhcmlhYmxlc1dpdGhpblBhY2tpbmdMaW1p
dHMoa01heFJvd3MsIHZhcnMpKTsKKworICAgICAgICAvLyB0ZXN0IHRvbyBtYW55CisgICAgICAg
IHZhcnMuY2xlYXIoKTsKKyAgICAgICAgdmFycy5wdXNoX2JhY2soc2g6OlNoYWRlclZhcmlhYmxl
KHR5cGUsIG51bV92YXJzID09IDAgPyAwIDogKG51bV92YXJzICsgMSkpKTsKKyAgICAgICAgRVhQ
RUNUX0ZBTFNFKHBhY2tlci5DaGVja1ZhcmlhYmxlc1dpdGhpblBhY2tpbmdMaW1pdHMoa01heFJv
d3MsIHZhcnMpKTsKKworICAgICAgICAvLyBDaGVjayBleGFjdGx5IHRoZSByaWdodCBhbW91bnQg
b2YgMSB0eXBlIGFzIGluZGl2aWR1YWwgdmFycy4KKyAgICAgICAgbnVtX3ZhcnMgPQorICAgICAg
ICAgICAga01heFJvd3MgLyBudW1fcm93cyAqICgobnVtX2NvbXBvbmVudHNfcGVyX3JvdyA+IDIp
ID8gMSA6ICg0IC8gbnVtX2NvbXBvbmVudHNfcGVyX3JvdykpOworICAgICAgICB2YXJzLmNsZWFy
KCk7CisgICAgICAgIGZvciAoaW50IGlpID0gMDsgaWkgPCBudW1fdmFyczsgKytpaSkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFycy5wdXNoX2JhY2soc2g6OlNoYWRlclZhcmlhYmxlKHR5cGUs
IDApKTsKKyAgICAgICAgfQorICAgICAgICBFWFBFQ1RfVFJVRShwYWNrZXIuQ2hlY2tWYXJpYWJs
ZXNXaXRoaW5QYWNraW5nTGltaXRzKGtNYXhSb3dzLCB2YXJzKSk7CisKKyAgICAgICAgLy8gQ2hl
Y2sgMSB0b28gbWFueS4KKyAgICAgICAgdmFycy5wdXNoX2JhY2soc2g6OlNoYWRlclZhcmlhYmxl
KHR5cGUsIDApKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHBhY2tlci5DaGVja1ZhcmlhYmxlc1dp
dGhpblBhY2tpbmdMaW1pdHMoa01heFJvd3MsIHZhcnMpKTsKKyAgICB9CisKKyAgICAvLyBUZXN0
IGV4YW1wbGUgZnJvbSBHTFNMIEVTIDMuMCBzcGVjIGNoYXB0ZXIgMTEuCisgICAgdmFycy5jbGVh
cigpOworICAgIHZhcnMucHVzaF9iYWNrKHNoOjpTaGFkZXJWYXJpYWJsZShHTF9GTE9BVF9WRUM0
LCAwKSk7CisgICAgdmFycy5wdXNoX2JhY2soc2g6OlNoYWRlclZhcmlhYmxlKEdMX0ZMT0FUX01B
VDMsIDApKTsKKyAgICB2YXJzLnB1c2hfYmFjayhzaDo6U2hhZGVyVmFyaWFibGUoR0xfRkxPQVRf
TUFUMywgMCkpOworICAgIHZhcnMucHVzaF9iYWNrKHNoOjpTaGFkZXJWYXJpYWJsZShHTF9GTE9B
VF9WRUMyLCA2KSk7CisgICAgdmFycy5wdXNoX2JhY2soc2g6OlNoYWRlclZhcmlhYmxlKEdMX0ZM
T0FUX1ZFQzIsIDQpKTsKKyAgICB2YXJzLnB1c2hfYmFjayhzaDo6U2hhZGVyVmFyaWFibGUoR0xf
RkxPQVRfVkVDMiwgMCkpOworICAgIHZhcnMucHVzaF9iYWNrKHNoOjpTaGFkZXJWYXJpYWJsZShH
TF9GTE9BVCwgMykpOworICAgIHZhcnMucHVzaF9iYWNrKHNoOjpTaGFkZXJWYXJpYWJsZShHTF9G
TE9BVCwgMikpOworICAgIHZhcnMucHVzaF9iYWNrKHNoOjpTaGFkZXJWYXJpYWJsZShHTF9GTE9B
VCwgMCkpOworICAgIEVYUEVDVF9UUlVFKHBhY2tlci5DaGVja1ZhcmlhYmxlc1dpdGhpblBhY2tp
bmdMaW1pdHMoa01heFJvd3MsIHZhcnMpKTsKK30KKworVEVTVChWYXJpYWJsZVBhY2tpbmcsIFBh
Y2tTaXplcykgeworICBmb3IgKHNpemVfdCB0dCA9IDA7IHR0IDwgQXJyYXlTaXplKHR5cGVzKTsg
Kyt0dCkgeworICAgIEdMZW51bSB0eXBlID0gdHlwZXNbdHRdOworCisgICAgaW50IGV4cGVjdGVk
Q29tcG9uZW50cyA9IGdsOjpWYXJpYWJsZUNvbXBvbmVudENvdW50KHR5cGUpOworICAgIGludCBl
eHBlY3RlZFJvd3MgPSBnbDo6VmFyaWFibGVSb3dDb3VudCh0eXBlKTsKKworICAgIGlmICh0eXBl
ID09IEdMX0ZMT0FUX01BVDIpIHsKKyAgICAgIGV4cGVjdGVkQ29tcG9uZW50cyA9IDQ7CisgICAg
fSBlbHNlIGlmIChnbDo6SXNNYXRyaXhUeXBlKHR5cGUpKSB7CisgICAgICBpbnQgc3F1YXJlU2l6
ZSA9IHN0ZDo6bWF4KGdsOjpWYXJpYWJsZVJvd0NvdW50KHR5cGUpLAorICAgICAgICAgIGdsOjpW
YXJpYWJsZUNvbHVtbkNvdW50KHR5cGUpKTsKKyAgICAgIGV4cGVjdGVkQ29tcG9uZW50cyA9IHNx
dWFyZVNpemU7CisgICAgICBleHBlY3RlZFJvd3MgPSBzcXVhcmVTaXplOworICAgIH0KKworICAg
IEVYUEVDVF9FUShleHBlY3RlZENvbXBvbmVudHMsCisgICAgICBWYXJpYWJsZVBhY2tlcjo6R2V0
TnVtQ29tcG9uZW50c1BlclJvdyh0eXBlKSk7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkUm93cywg
VmFyaWFibGVQYWNrZXI6OkdldE51bVJvd3ModHlwZSkpOworICB9Cit9CisKKy8vIENoZWNrIHNw
ZWNpYWwgYXNzdW1wdGlvbnMgYWJvdXQgcGFja2luZyBub24tc3F1YXJlIG1hdHMKK1RFU1QoVmFy
aWFibGVQYWNraW5nLCBOb25TcXVhcmVNYXRzKSB7CisKKyAgZm9yIChzaXplX3QgbXQgPSAwOyBt
dCA8IEFycmF5U2l6ZShub25TcU1hdFR5cGVzKTsgKyttdCkgeworICAgIAorICAgIEdMZW51bSB0
eXBlID0gbm9uU3FNYXRUeXBlc1ttdF07CisKKyAgICBpbnQgcm93cyA9IGdsOjpWYXJpYWJsZVJv
d0NvdW50KHR5cGUpOworICAgIGludCBjb2xzID0gZ2w6OlZhcmlhYmxlQ29sdW1uQ291bnQodHlw
ZSk7CisgICAgaW50IHNxdWFyZVNpemUgPSBzdGQ6Om1heChyb3dzLCBjb2xzKTsKKworICAgIHN0
ZDo6dmVjdG9yPHNoOjpTaGFkZXJWYXJpYWJsZT4gdmFyczsKKyAgICB2YXJzLnB1c2hfYmFjayhz
aDo6U2hhZGVyVmFyaWFibGUodHlwZSwgMCkpOworCisgICAgLy8gRmlsbCBjb2x1bW5zCisgICAg
Zm9yIChpbnQgcm93ID0gMDsgcm93IDwgc3F1YXJlU2l6ZTsgcm93KyspIHsKKyAgICAgIGZvciAo
aW50IGNvbCA9IHNxdWFyZVNpemU7IGNvbCA8IDQ7ICsrY29sKSB7CisgICAgICAgIHZhcnMucHVz
aF9iYWNrKHNoOjpTaGFkZXJWYXJpYWJsZShHTF9GTE9BVCwgMCkpOworICAgICAgfQorICAgIH0K
KworICAgIFZhcmlhYmxlUGFja2VyIHBhY2tlcjsKKworICAgIEVYUEVDVF9UUlVFKHBhY2tlci5D
aGVja1ZhcmlhYmxlc1dpdGhpblBhY2tpbmdMaW1pdHMoc3F1YXJlU2l6ZSwgdmFycykpOworCisg
ICAgLy8gYW5kIG9uZSBzY2FsYXIgYW5kIHBhY2tpbmcgc2hvdWxkIGZhaWwKKyAgICB2YXJzLnB1
c2hfYmFjayhzaDo6U2hhZGVyVmFyaWFibGUoR0xfRkxPQVQsIDApKTsKKyAgICBFWFBFQ1RfRkFM
U0UocGFja2VyLkNoZWNrVmFyaWFibGVzV2l0aGluUGFja2luZ0xpbWl0cyhzcXVhcmVTaXplLCB2
YXJzKSk7CisgIH0KK30KKworLy8gU2NhbGFyIHR5cGUgdmFyaWFibGVzIGNhbiBiZSBwYWNrZWQg
c2hhcmluZyByb3dzIHdpdGggb3RoZXIgdmFyaWFibGVzLgorVEVTVChWYXJpYWJsZVBhY2tpbmcs
IFJldXNlUm93cykKK3sKKyAgICBWYXJpYWJsZVBhY2tlciBwYWNrZXI7CisgICAgc3RkOjp2ZWN0
b3I8c2g6OlNoYWRlclZhcmlhYmxlPiB2YXJzOworICAgIGNvbnN0IGludCBrTWF4Um93cyA9IDUx
MjsKKworICAgIC8vIHVuaWZvcm0gYm9vbCB1MFsxMjldOworICAgIC8vIHVuaWZvcm0gYm9vbCB1
MVsxMjldOworICAgIC8vIHVuaWZvcm0gYm9vbCB1MlsxMjldOworICAgIC8vIHVuaWZvcm0gYm9v
bCB1M1sxMjldOworICAgIHsKKyAgICAgICAgaW50IG51bV9hcnJheXMgPSA0OworICAgICAgICBp
bnQgbnVtX2VsZW1lbnRzX3Blcl9hcnJheSA9IGtNYXhSb3dzIC8gbnVtX2FycmF5cyArIDE7Cisg
ICAgICAgIGZvciAoaW50IGlpID0gMDsgaWkgPCBudW1fYXJyYXlzOyArK2lpKQorICAgICAgICB7
CisgICAgICAgICAgICB2YXJzLnB1c2hfYmFjayhzaDo6U2hhZGVyVmFyaWFibGUoR0xfQk9PTCwg
bnVtX2VsZW1lbnRzX3Blcl9hcnJheSkpOworICAgICAgICB9CisgICAgICAgIEVYUEVDVF9UUlVF
KHBhY2tlci5DaGVja1ZhcmlhYmxlc1dpdGhpblBhY2tpbmdMaW1pdHMoa01heFJvd3MsIHZhcnMp
KTsKKyAgICB9CisKKyAgICB2YXJzLmNsZWFyKCk7CisgICAgLy8gdW5pZm9ybSB2ZWMyIHUwWzI1
N107CisgICAgLy8gdW5pZm9ybSBmbG9hdCB1MVsyNTddOworICAgIC8vIHVuaWZvcm0gaW50IHUx
WzI1N107CisgICAgeworICAgICAgICBpbnQgbnVtX2VsZW1lbnRzX3Blcl9hcnJheSA9IGtNYXhS
b3dzIC8gMiArIDE7CisgICAgICAgIHZhcnMucHVzaF9iYWNrKHNoOjpTaGFkZXJWYXJpYWJsZShH
TF9GTE9BVF9WRUMyLCBudW1fZWxlbWVudHNfcGVyX2FycmF5KSk7CisgICAgICAgIHZhcnMucHVz
aF9iYWNrKHNoOjpTaGFkZXJWYXJpYWJsZShHTF9GTE9BVCwgbnVtX2VsZW1lbnRzX3Blcl9hcnJh
eSkpOworICAgICAgICB2YXJzLnB1c2hfYmFjayhzaDo6U2hhZGVyVmFyaWFibGUoR0xfSU5ULCBu
dW1fZWxlbWVudHNfcGVyX2FycmF5KSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHBhY2tlci5DaGVj
a1ZhcmlhYmxlc1dpdGhpblBhY2tpbmdMaW1pdHMoa01heFJvd3MsIHZhcnMpKTsKKyAgICB9Cit9
CisKKy8vIENoZWNrIHRoZSBwYWNrZXIgc3VwcG9ydHMgYW5kIGZsYXR0ZW5zIHN0cnVjdHVyZXMu
CitURVNUKFZhcmlhYmxlUGFja2luZywgU3RydWN0KQoreworICAgIFZhcmlhYmxlUGFja2VyIHBh
Y2tlcjsKKyAgICBzdGQ6OnZlY3RvcjxzaDo6U2hhZGVyVmFyaWFibGU+IGZpZWxkczsKKyAgICBj
b25zdCBpbnQga01heFJvd3MgPSAxNjsKKworICAgIC8vIFRlc3QgZXhhbXBsZSBmcm9tIEdMU0wg
RVMgMy4wIHNwZWMgY2hhcHRlciAxMSwgYnV0IHdpdGggc3RydWN0cworICAgIHN0ZDo6dmVjdG9y
PHNoOjpTaGFkZXJWYXJpYWJsZT4gdmFyczsKKyAgICB2YXJzLnB1c2hfYmFjayhzaDo6U2hhZGVy
VmFyaWFibGUoR0xfU1RSVUNUX0FOR0xFWCwgMCkpOworCisgICAgc2g6OlNoYWRlclZhcmlhYmxl
ICZwYXJlbnRTdHJ1Y3QgPSB2YXJzWzBdOworICAgIHBhcmVudFN0cnVjdC5maWVsZHMucHVzaF9i
YWNrKHNoOjpTaGFkZXJWYXJpYWJsZShHTF9GTE9BVF9WRUM0LCAwKSk7CisgICAgcGFyZW50U3Ry
dWN0LmZpZWxkcy5wdXNoX2JhY2soc2g6OlNoYWRlclZhcmlhYmxlKEdMX0ZMT0FUX01BVDMsIDAp
KTsKKworICAgIHBhcmVudFN0cnVjdC5maWVsZHMucHVzaF9iYWNrKHNoOjpTaGFkZXJWYXJpYWJs
ZShHTF9TVFJVQ1RfQU5HTEVYLCAwKSk7CisgICAgc2g6OlNoYWRlclZhcmlhYmxlICZpbm5lclN0
cnVjdCA9IHBhcmVudFN0cnVjdC5maWVsZHMuYmFjaygpOworICAgIGlubmVyU3RydWN0LmZpZWxk
cy5wdXNoX2JhY2soc2g6OlNoYWRlclZhcmlhYmxlKEdMX0ZMT0FUX01BVDMsIDApKTsKKyAgICBp
bm5lclN0cnVjdC5maWVsZHMucHVzaF9iYWNrKHNoOjpTaGFkZXJWYXJpYWJsZShHTF9GTE9BVF9W
RUMyLCA2KSk7CisgICAgaW5uZXJTdHJ1Y3QuZmllbGRzLnB1c2hfYmFjayhzaDo6U2hhZGVyVmFy
aWFibGUoR0xfRkxPQVRfVkVDMiwgNCkpOworCisgICAgcGFyZW50U3RydWN0LmZpZWxkcy5wdXNo
X2JhY2soc2g6OlNoYWRlclZhcmlhYmxlKEdMX0ZMT0FUX1ZFQzIsIDApKTsKKyAgICBwYXJlbnRT
dHJ1Y3QuZmllbGRzLnB1c2hfYmFjayhzaDo6U2hhZGVyVmFyaWFibGUoR0xfRkxPQVQsIDMpKTsK
KyAgICBwYXJlbnRTdHJ1Y3QuZmllbGRzLnB1c2hfYmFjayhzaDo6U2hhZGVyVmFyaWFibGUoR0xf
RkxPQVQsIDIpKTsKKyAgICBwYXJlbnRTdHJ1Y3QuZmllbGRzLnB1c2hfYmFjayhzaDo6U2hhZGVy
VmFyaWFibGUoR0xfRkxPQVQsIDApKTsKKworICAgIEVYUEVDVF9UUlVFKHBhY2tlci5DaGVja1Zh
cmlhYmxlc1dpdGhpblBhY2tpbmdMaW1pdHMoa01heFJvd3MsIHZhcnMpKTsKK30KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9Xb3JrR3JvdXBT
aXplX3Rlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9jb21waWxlcl90ZXN0cy9Xb3JrR3JvdXBTaXplX3Rlc3QuY3BwCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9Xb3Jr
R3JvdXBTaXplX3Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTcgQEAKKy8vCisv
LyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworLy8gV29ya0dyb3VwU2l6ZV90ZXN0LmNwcDoKKy8vIHRlc3RzIGZvciBsb2NhbCBn
cm91cCBzaXplIGluIGEgY29tcHV0ZSBzaGFkZXIKKy8vCisKKyNpbmNsdWRlICJhbmdsZV9nbC5o
IgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5n
LmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yRVNTTC5oIgorI2lu
Y2x1ZGUgInRlc3RzL3Rlc3RfdXRpbHMvY29tcGlsZXJfdGVzdC5oIgorCitjbGFzcyBXb3JrR3Jv
dXBTaXplVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0Cit7CisgIHB1YmxpYzoKKyAgICBXb3Jr
R3JvdXBTaXplVGVzdCgpIHt9CisKKyAgcHJvdGVjdGVkOgorICAgIHZvaWQgU2V0VXAoKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgU2hCdWlsdEluUmVzb3VyY2VzIHJlc291cmNlczsKKyAgICAg
ICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmcmVzb3VyY2VzKTsKKworICAgICAgICBtVHJhbnNs
YXRvciA9IG5ldyBUcmFuc2xhdG9yRVNTTChHTF9DT01QVVRFX1NIQURFUiwgU0hfR0xFUzNfMV9T
UEVDKTsKKyAgICAgICAgQVNTRVJUX1RSVUUobVRyYW5zbGF0b3ItPkluaXQocmVzb3VyY2VzKSk7
CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlIHsgU2FmZURlbGV0ZShtVHJh
bnNsYXRvcik7IH0KKworICAgIC8vIFJldHVybiB0cnVlIHdoZW4gY29tcGlsYXRpb24gc3VjY2Vl
ZHMKKyAgICBib29sIGNvbXBpbGUoY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZykKKyAg
ICB7CisgICAgICAgIGNvbnN0IGNoYXIgKnNoYWRlclN0cmluZ3NbXSA9IHtzaGFkZXJTdHJpbmcu
Y19zdHIoKX07CisgICAgICAgIGJvb2wgc3RhdHVzID0gbVRyYW5zbGF0b3ItPmNvbXBpbGUoc2hh
ZGVyU3RyaW5ncywgMSwgU0hfSU5URVJNRURJQVRFX1RSRUUgfCBTSF9WQVJJQUJMRVMpOworICAg
ICAgICBUSW5mb1NpbmsgJmluZm9TaW5rID0gbVRyYW5zbGF0b3ItPmdldEluZm9TaW5rKCk7Cisg
ICAgICAgIG1JbmZvTG9nICAgICAgICAgICAgPSBpbmZvU2luay5pbmZvLmNfc3RyKCk7CisgICAg
ICAgIHJldHVybiBzdGF0dXM7CisgICAgfQorCisgIHByb3RlY3RlZDoKKyAgICBzdGQ6OnN0cmlu
ZyBtSW5mb0xvZzsKKyAgICBUcmFuc2xhdG9yRVNTTCAqbVRyYW5zbGF0b3IgPSBudWxscHRyOwor
fTsKKworLy8gY2hlY2tzIHdoZXRoZXIgY29tcGlsZXIgaGFzIHBhcnNlZCB0aGUgbG9jYWwgc2l6
ZSBsYXlvdXQgcXVhbGlmaWVycyBxY29ycmVjdGx5CitURVNUX0YoV29ya0dyb3VwU2l6ZVRlc3Qs
IE9ubHlMb2NhbFNpemVYU3BlY2lmaWVkKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFk
ZXJTdHJpbmcgPQorICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCisgICAgICAgICJsYXlvdXQo
bG9jYWxfc2l6ZV94PTUpIGluO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAg
ICAifVxuIjsKKworICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKKworICAgIGNvbnN0IHNoOjpX
b3JrR3JvdXBTaXplICZsb2NhbFNpemUgPSBtVHJhbnNsYXRvci0+Z2V0Q29tcHV0ZVNoYWRlckxv
Y2FsU2l6ZSgpOworICAgIEFTU0VSVF9FUSg1LCBsb2NhbFNpemVbMF0pOworICAgIEFTU0VSVF9F
USgxLCBsb2NhbFNpemVbMV0pOworICAgIEFTU0VSVF9FUSgxLCBsb2NhbFNpemVbMl0pOworfQor
CisvLyBjaGVja3Mgd2hldGhlciBjb21waWxlciBoYXMgcGFyc2VkIHRoZSBsb2NhbCBzaXplIGxh
eW91dCBxdWFsaWZpZXJzIHFjb3JyZWN0bHkKK1RFU1RfRihXb3JrR3JvdXBTaXplVGVzdCwgTG9j
YWxTaXplWGFuZFopCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Cisg
ICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKKyAgICAgICAgImxheW91dChsb2NhbF9zaXplX3g9
NSwgbG9jYWxfc2l6ZV96PTEwKSBpbjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAg
ICAgICAgIn1cbiI7CisKKyAgICBjb21waWxlKHNoYWRlclN0cmluZyk7CisKKyAgICBjb25zdCBz
aDo6V29ya0dyb3VwU2l6ZSAmbG9jYWxTaXplID0gbVRyYW5zbGF0b3ItPmdldENvbXB1dGVTaGFk
ZXJMb2NhbFNpemUoKTsKKyAgICBBU1NFUlRfRVEoNSwgbG9jYWxTaXplWzBdKTsKKyAgICBBU1NF
UlRfRVEoMSwgbG9jYWxTaXplWzFdKTsKKyAgICBBU1NFUlRfRVEoMTAsIGxvY2FsU2l6ZVsyXSk7
Cit9CisKKy8vIGNoZWNrcyB3aGV0aGVyIGNvbXBpbGVyIGhhcyBwYXJzZWQgdGhlIGxvY2FsIHNp
emUgbGF5b3V0IHF1YWxpZmllcnMgcWNvcnJlY3RseQorVEVTVF9GKFdvcmtHcm91cFNpemVUZXN0
LCBMb2NhbFNpemVBbGwpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9
CisgICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKKyAgICAgICAgImxheW91dChsb2NhbF9zaXpl
X3g9NSwgbG9jYWxfc2l6ZV96PTEwLCBsb2NhbF9zaXplX3k9MTUpIGluO1xuIgorICAgICAgICAi
dm9pZCBtYWluKCkge1xuIgorICAgICAgICAifVxuIjsKKworICAgIGNvbXBpbGUoc2hhZGVyU3Ry
aW5nKTsKKworICAgIGNvbnN0IHNoOjpXb3JrR3JvdXBTaXplICZsb2NhbFNpemUgPSBtVHJhbnNs
YXRvci0+Z2V0Q29tcHV0ZVNoYWRlckxvY2FsU2l6ZSgpOworICAgIEFTU0VSVF9FUSg1LCBsb2Nh
bFNpemVbMF0pOworICAgIEFTU0VSVF9FUSgxNSwgbG9jYWxTaXplWzFdKTsKKyAgICBBU1NFUlRf
RVEoMTAsIGxvY2FsU2l6ZVsyXSk7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvZGVxcC5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9kZXFwLmd5cGkJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2RlcXAuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5MDQg
QEAKKyMgQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorCit7CisgICAgJ3ZhcmlhYmxlcyc6CisgICAgeworICAgICAgICAjIERlZmluZSB0aGVzZSB2
YXJpYWJsZXMgd2l0aGluIGFuIGlubmVyIHZhcmlhYmxlcyBkaWN0LgorICAgICAgICAjIFRoaXMg
aXMgbmVjZXNzYXJ5IHRvIGdldCB0aGVzZSB2YXJpYWJsZXMgZGVmaW5lZCBmb3IgdGhlIGNvbmRp
dGlvbnMKKyAgICAgICAgIyB3aXRoaW4gdGhlIG91dGVyIHZhcmlhYmxlcyBkaWN0IHdoaWNoIG9w
ZXJhdGUgb24gdGhlc2UgdmFyaWFibGVzLgorICAgICAgICAndmFyaWFibGVzJzoKKyAgICAgICAg
eworICAgICAgICAgICAgJ2FuZ2xlX2J1aWxkX3dpbnJ0JSc6IDAsCisgICAgICAgIH0sCisKKyAg
ICAgICAgIyBDb3B5IGNvbmRpdGlvbmFsbHktc2V0IHZhcmlhYmxlcyB0byB0aGUgb3V0ZXIgdmFy
aWFibGVzIGRpY3QuCisgICAgICAgICdhbmdsZV9idWlsZF93aW5ydCUnOiAnPChhbmdsZV9idWls
ZF93aW5ydCknLAorCisgICAgICAgICdkZXFwX3BhdGgnOiAnPChERVBUSCkvdGhpcmRfcGFydHkv
ZGVxcC9zcmMnLAorICAgICAgICAnbGlicG5nX3BhdGgnOiAnPChERVBUSCkvdGhpcmRfcGFydHkv
bGlicG5nJywKKyAgICAgICAgJ3psaWJfcGF0aCc6ICc8KERFUFRIKS90aGlyZF9wYXJ0eS96bGli
JywKKworICAgICAgICAnYW5nbGVfYnVpbGRfZGVxcF9saWJyYXJpZXMlJyA6IDAsCisgICAgICAg
ICdhbmdsZV9idWlsZF9kZXFwX2d0ZXN0X3N1cHBvcnQlJyA6IDAsCisgICAgICAgICdhbmdsZV9i
dWlsZF9kZXFwX2V4ZWN1dGFibGVzJScgOiAwLAorICAgICAgICAnYW5nbGVfYnVpbGRfZGVxcF9n
dGVzdF9leGVjdXRhYmxlcyUnIDowLAorCisgICAgICAgICdjbGFuZ193YXJuaW5nX2ZsYWdzJzoK
KyAgICAgICAgWworICAgICAgICAgICAgICMgdGN1OjpDb21tYW5kTGluZSBoYXMgdmlydHVhbCBm
dW5jdGlvbnMgYnV0IG5vIHZpcnR1YWwgZGVzdHJ1Y3RvcgorICAgICAgICAgICAgJy1Xbm8tbm8t
ZGVsZXRlLW5vbi12aXJ0dWFsLWR0b3InLAorICAgICAgICBdLAorCisgICAgICAgICdkZXFwX3dp
bl9jZmxhZ3MnOgorICAgICAgICBbCisgICAgICAgICAgICAnL0VIc2MnLCAgICMgZEVRUCByZXF1
aXJlcyBleGNlcHRpb25zCisgICAgICAgICAgICAnL3dkNDA5MScsICMgdHlwZWRlZiBpZ25vcmVk
IHdoZW4gbm8gdmFyaWFibGUgaXMgZGVjbGFyZWQKKyAgICAgICAgICAgICcvd2Q0MTAwJywKKyAg
ICAgICAgICAgICcvd2Q0MTI1JywgIyBkZWNpbWFsIGRpZ2l0IHRlcm1pbmF0ZXMgb2N0YWwgZXNj
YXBlIHNlcXVlbmNlCisgICAgICAgICAgICAnL3dkNDEyNycsICMgY29uZGl0aW9uYWwgZXhwcmVz
c2lvbiBjb25zdGFudAorICAgICAgICAgICAgJy93ZDQyNDQnLCAjIHBvc3NpYmxlIGxvc3Mgb2Yg
ZGF0YQorICAgICAgICAgICAgJy93ZDQyNDUnLCAjIGFyZ3VtZW50IHNpZ25lZC91bnNpZ25lZCBt
aXNtYXRjaAorICAgICAgICAgICAgJy93ZDQyOTcnLCAjIGZ1bmN0aW9uIGFzc3VtZWQgbm90IHRv
IHRocm93IGFuIGV4Y2VwdGlvbiBidXQgZG9lcworICAgICAgICAgICAgJy93ZDQzODknLCAjIHNp
Z25lZC91bnNpZ25lZCBtaXNtYXRjaAorICAgICAgICAgICAgJy93ZDQ1MTAnLCAjIGRlZmF1bHQg
Y29uc3RydWN0b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZAorICAgICAgICAgICAgJy93ZDQ1MTIn
LAorICAgICAgICAgICAgJy93ZDQ2MTAnLCAjIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQKKyAgICAg
ICAgICAgICcvd2Q0NjExJywgIyBzZXRqbXAgaW50ZXJhY3Rpb24gbm9uLXBvcnRhYmxlCisgICAg
ICAgICAgICAnL3dkNDcwMScsICMgcG90ZW50aWFsbHkgdW5pbml0IHVzZWQKKyAgICAgICAgICAg
ICcvd2Q0NzAyJywgIyB1bnJlYWNoYWJsZSBjb2RlCisgICAgICAgICAgICAnL3dkNDcwNicsICMg
YXNzaWdubWVudCB3aXRoaW4gY29uZGl0aW9uYWwgZXhwcmVzc2lvbgorICAgICAgICAgICAgJy93
ZDQ4MzgnLCAjIGNvbnZlcnNpb24gcmVxdWlyZXMgYSBuYXJyb3dpbmcgY29udmVyc2lvbgorICAg
ICAgICAgICAgJy93ZDQ5OTYnLCAjIGRlcHJlY2F0ZWQKKyAgICAgICAgXSwKKyAgICAgICAgJ2Rl
cXBfZGVmaW5lcyc6CisgICAgICAgIFsKKyAgICAgICAgICAgICdERVFQX1NVUFBPUlRfR0xFUzMx
PTEnLAorICAgICAgICAgICAgJ0RFUVBfU1VQUE9SVF9HTEVTMz0xJywKKyAgICAgICAgICAgICdE
RVFQX1NVUFBPUlRfR0xFUzI9MScsCisgICAgICAgICAgICAnREVRUF9TVVBQT1JUX0VHTD0xJywK
KyAgICAgICAgICAgICdERVFQX1RBUkdFVF9OQU1FPSJhbmdsZSInLAorICAgICAgICAgICAgJ0RF
UVBfR0xFUzMxX1JVTlRJTUVfTE9BRD0xJywKKyAgICAgICAgICAgICdERVFQX0dMRVMzX1JVTlRJ
TUVfTE9BRD0xJywKKyAgICAgICAgICAgICdERVFQX0dMRVMyX1JVTlRJTUVfTE9BRD0xJywKKyAg
ICAgICAgICAgICdRUF9TVVBQT1JUX1BORz0xJywKKyAgICAgICAgICAgICdfSEFTX0VYQ0VQVElP
TlM9MScsCisgICAgICAgIF0sCisgICAgICAgICdkZXFwX3VuZGVmaW5lcyc6CisgICAgICAgIFsK
KyAgICAgICAgICAgICdXSU4zMl9MRUFOX0FORF9NRUFOJywKKyAgICAgICAgICAgICdOT01JTk1B
WCcsCisgICAgICAgICAgICAnX0hBU19FWENFUFRJT05TPTAnLAorICAgICAgICBdLAorICAgICAg
ICAnZGVxcF9pbmNsdWRlX2RpcnMnOgorICAgICAgICBbCisgICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL2V4ZWN1dG9yJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZXhlY3NlcnZlcicsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9jb21tb24nLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlYmFzZScsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlcG9vbCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L2ZyYW1ld29yay9kZWxpYnMvZGV0aHJlYWQnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9m
cmFtZXdvcmsvZGVsaWJzL2RldXRpbCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1l
d29yay9kZWxpYnMvZGVzdHJlYW0nLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdv
cmsvZWdsJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2VnbC93cmFwcGVy
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9vcGVuZ2wvc2ltcGxlcmVmZXJlbmNlJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbC93cmFwcGVyJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3BsYXRmb3JtL251bGwnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcXBoZWxwZXInLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9mcmFtZXdvcmsvcmFuZG9tc2hhZGVycycsCisgICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL2ZyYW1ld29yay9yZWZlcmVuY2VyZW5kZXJlcicsCisgICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczInLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMyL2Z1bmN0aW9uYWwnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMy
L2FjY3VyYWN5JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9wZXJm
b3JtYW5jZScsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvc3RyZXNz
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi91c2VjYXNlcycsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzL2FjY3VyYWN5JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMy9wZXJmb3JtYW5jZScsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMvc3RyZXNzJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMy91c2VjYXNlcycsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMxJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25h
bCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL3N0cmVzcycsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xzaGFyZWQnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsdXNlY2FzZXMnLAorICAgICAgICAgICAgJzwobGlicG5n
X3BhdGgpJywKKyAgICAgICAgICAgICc8KHpsaWJfcGF0aCknLAorICAgICAgICBdLAorICAgICAg
ICAnZGVxcF9nbGVzMl9zb3VyY2VzJzoKKyAgICAgICAgWworICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMyL2FjY3VyYWN5L2VzMmFBY2N1cmFjeVRlc3RzLmNwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvYWNjdXJhY3kvZXMyYUFjY3VyYWN5
VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9hY2N1
cmFjeS9lczJhVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczIvYWNjdXJhY3kvZXMyYVRleHR1cmVGaWx0ZXJpbmdUZXN0cy5o
cHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2FjY3VyYWN5L2Vz
MmFUZXh0dXJlTWlwbWFwVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMi9hY2N1cmFjeS9lczJhVGV4dHVyZU1pcG1hcFRlc3RzLmhwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvYWNjdXJhY3kvZXMyYVZhcnlpbmdJbnRl
cnBvbGF0aW9uVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMi9hY2N1cmFjeS9lczJhVmFyeWluZ0ludGVycG9sYXRpb25UZXN0cy5ocHAnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkFwaUNhc2Uu
Y3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFs
L2VzMmZBcGlDYXNlLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czIvZnVuY3Rpb25hbC9lczJmQXR0cmliTG9jYXRpb25UZXN0cy5jcHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkF0dHJpYkxvY2F0aW9u
VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5j
dGlvbmFsL2VzMmZCbGVuZFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmQmxlbmRUZXN0cy5ocHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkJvb2xlYW5TdGF0ZVF1
ZXJ5VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9m
dW5jdGlvbmFsL2VzMmZCb29sZWFuU3RhdGVRdWVyeVRlc3RzLmhwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmQnVmZmVyT2JqZWN0UXVl
cnlUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1
bmN0aW9uYWwvZXMyZkJ1ZmZlck9iamVjdFF1ZXJ5VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZCdWZmZXJUZXN0VXRpbC5j
cHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwv
ZXMyZkJ1ZmZlclRlc3RVdGlsLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmQnVmZmVyV3JpdGVUZXN0cy5jcHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkJ1ZmZlcldyaXRl
VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5j
dGlvbmFsL2VzMmZDbGlwcGluZ1Rlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmQ2xpcHBpbmdUZXN0cy5ocHAnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkNvbG9yQ2xl
YXJUZXN0LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVu
Y3Rpb25hbC9lczJmQ29sb3JDbGVhclRlc3QuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZEZWJ1Z01hcmtlclRlc3RzLmNwcCcsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmRGVi
dWdNYXJrZXJUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMyL2Z1bmN0aW9uYWwvZXMyZkRlZmF1bHRWZXJ0ZXhBdHRyaWJ1dGVUZXN0cy5jcHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkRlZmF1
bHRWZXJ0ZXhBdHRyaWJ1dGVUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkRlcHRoUmFuZ2VUZXN0cy5jcHAnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkRlcHRoUmFu
Z2VUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1
bmN0aW9uYWwvZXMyZkRlcHRoU3RlbmNpbENsZWFyVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZEZXB0aFN0ZW5jaWxDbGVh
clRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVu
Y3Rpb25hbC9lczJmRGVwdGhTdGVuY2lsVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZEZXB0aFN0ZW5jaWxUZXN0cy5ocHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMy
ZkRlcHRoVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
Mi9mdW5jdGlvbmFsL2VzMmZEZXB0aFRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmRGl0aGVyaW5nVGVzdHMuY3BwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZEaXRo
ZXJpbmdUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMy
L2Z1bmN0aW9uYWwvZXMyZkRyYXdUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkRyYXdUZXN0cy5ocHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkZib0FwaVRlc3Qu
Y3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFs
L2VzMmZGYm9BcGlUZXN0LmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczIvZnVuY3Rpb25hbC9lczJmRmJvQ29tcGxldGVuZXNzVGVzdHMuY3BwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZGYm9Db21wbGV0
ZW5lc3NUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMy
L2Z1bmN0aW9uYWwvZXMyZkZib1JlbmRlclRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZGYm9SZW5kZXJUZXN0LmhwcCcsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmRmJv
U3RhdGVRdWVyeVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczIvZnVuY3Rpb25hbC9lczJmRmJvU3RhdGVRdWVyeVRlc3RzLmhwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmRmxvYXRTdGF0ZVF1
ZXJ5VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9m
dW5jdGlvbmFsL2VzMmZGbG9hdFN0YXRlUXVlcnlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkZsdXNoRmluaXNoVGVzdHMu
Y3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFs
L2VzMmZGbHVzaEZpbmlzaFRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmRnJhZ09wSW50ZXJhY3Rpb25UZXN0cy5jcHAnLAor
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkZy
YWdPcEludGVyYWN0aW9uVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZGdW5jdGlvbmFsVGVzdHMuY3BwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZGdW5jdGlvbmFs
VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5j
dGlvbmFsL2VzMmZJbXBsZW1lbnRhdGlvbkxpbWl0VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZJbXBsZW1lbnRhdGlvbkxp
bWl0VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9m
dW5jdGlvbmFsL2VzMmZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLmNwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmSW50ZWdlclN0YXRlUXVl
cnlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1
bmN0aW9uYWwvZXMyZkxpZmV0aW1lVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZMaWZldGltZVRlc3RzLmhwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmTGlnaHRB
bW91bnRUZXN0LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIv
ZnVuY3Rpb25hbC9lczJmTGlnaHRBbW91bnRUZXN0LmhwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmTXVsdGlzYW1wbGVUZXN0cy5jcHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMy
Zk11bHRpc2FtcGxlVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZOZWdhdGl2ZUJ1ZmZlckFwaVRlc3RzLmNwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmTmVnYXRp
dmVCdWZmZXJBcGlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMyL2Z1bmN0aW9uYWwvZXMyZk5lZ2F0aXZlRnJhZ21lbnRBcGlUZXN0cy5jcHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZk5lZ2F0
aXZlRnJhZ21lbnRBcGlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZk5lZ2F0aXZlU2hhZGVyQXBpVGVzdHMuY3BwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZOZWdh
dGl2ZVNoYWRlckFwaVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmTmVnYXRpdmVTdGF0ZUFwaVRlc3RzLmNwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmTmVnYXRp
dmVTdGF0ZUFwaVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczIvZnVuY3Rpb25hbC9lczJmTmVnYXRpdmVUZXh0dXJlQXBpVGVzdHMuY3BwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZOZWdhdGl2
ZVRleHR1cmVBcGlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMyL2Z1bmN0aW9uYWwvZXMyZk5lZ2F0aXZlVmVydGV4QXJyYXlBcGlUZXN0cy5jcHAnLAor
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZk5l
Z2F0aXZlVmVydGV4QXJyYXlBcGlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlBvbHlnb25PZmZzZXRUZXN0cy5jcHAnLAor
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlBv
bHlnb25PZmZzZXRUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlByZXJlcXVpc2l0ZVRlc3RzLmNwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmUHJlcmVxdWlzaXRl
VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5j
dGlvbmFsL2VzMmZSYW5kb21GcmFnbWVudE9wVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZSYW5kb21GcmFnbWVudE9wVGVz
dHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlv
bmFsL2VzMmZSYW5kb21TaGFkZXJUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlJhbmRvbVNoYWRlclRlc3RzLmhwcCcsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmUmFz
dGVyaXphdGlvblRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczIvZnVuY3Rpb25hbC9lczJmUmFzdGVyaXphdGlvblRlc3RzLmhwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmUmJvU3RhdGVRdWVy
eVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVu
Y3Rpb25hbC9lczJmUmJvU3RhdGVRdWVyeVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmUmVhZFBpeGVsc1Rlc3RzLmNwcCcs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJm
UmVhZFBpeGVsc1Rlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczIvZnVuY3Rpb25hbC9lczJmU2Npc3NvclRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmU2Npc3NvclRlc3RzLmhwcCcs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJm
U2hhZGVyQWxnb3JpdGhtVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJBbGdvcml0aG1UZXN0cy5ocHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlNoYWRl
ckFwaVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIv
ZnVuY3Rpb25hbC9lczJmU2hhZGVyQXBpVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJCdWlsdGluVmFyVGVzdHMu
Y3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFs
L2VzMmZTaGFkZXJCdWlsdGluVmFyVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJDb25zdEV4cHJUZXN0cy5jcHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMy
ZlNoYWRlckNvbnN0RXhwclRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmU2hhZGVyRGlzY2FyZFRlc3RzLmNwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmU2hhZGVy
RGlzY2FyZFRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czIvZnVuY3Rpb25hbC9lczJmU2hhZGVyRXhlY3V0ZVRlc3QuY3BwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJFeGVjdXRlVGVz
dC5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9u
YWwvZXMyZlNoYWRlckZyYWdEYXRhVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJGcmFnRGF0YVRlc3RzLmhwcCcs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJm
U2hhZGVySW5kZXhpbmdUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlNoYWRlckluZGV4aW5nVGVzdHMuaHBwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJJ
bnZhcmlhbmNlVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJJbnZhcmlhbmNlVGVzdHMuaHBwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJMb29w
VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5j
dGlvbmFsL2VzMmZTaGFkZXJMb29wVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJNYXRyaXhUZXN0cy5jcHAnLAor
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlNo
YWRlck1hdHJpeFRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczIvZnVuY3Rpb25hbC9lczJmU2hhZGVyT3BlcmF0b3JUZXN0cy5jcHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlNoYWRlck9wZXJh
dG9yVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9m
dW5jdGlvbmFsL2VzMmZTaGFkZXJSZXR1cm5UZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlNoYWRlclJldHVyblRlc3RzLmhw
cCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9l
czJmU2hhZGVyU3RhdGVRdWVyeVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmU2hhZGVyU3RhdGVRdWVyeVRlc3RzLmhwcCcs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJm
U2hhZGVyU3RydWN0VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJTdHJ1Y3RUZXN0cy5ocHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlNoYWRlclRleHR1
cmVGdW5jdGlvblRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczIvZnVuY3Rpb25hbC9lczJmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuaHBwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTdGVu
Y2lsVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9m
dW5jdGlvbmFsL2VzMmZTdGVuY2lsVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTdHJpbmdRdWVyeVRlc3RzLmNwcCcsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmU3Ry
aW5nUXVlcnlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMyL2Z1bmN0aW9uYWwvZXMyZlRleHR1cmVDb21wbGV0ZW5lc3NUZXN0cy5jcHAnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlRleHR1cmVD
b21wbGV0ZW5lc3NUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5jcHAnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlRleHR1cmVG
aWx0ZXJpbmdUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMyL2Z1bmN0aW9uYWwvZXMyZlRleHR1cmVGb3JtYXRUZXN0cy5jcHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlRleHR1cmVGb3JtYXRU
ZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0
aW9uYWwvZXMyZlRleHR1cmVNaXBtYXBUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlRleHR1cmVNaXBtYXBUZXN0cy5ocHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMy
ZlRleHR1cmVTaXplVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZUZXh0dXJlU2l6ZVRlc3RzLmhwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmVGV4dHVyZVNwZWNp
ZmljYXRpb25UZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMyL2Z1bmN0aW9uYWwvZXMyZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuaHBwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZUZXh0dXJl
U3RhdGVRdWVyeVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczIvZnVuY3Rpb25hbC9lczJmVGV4dHVyZVN0YXRlUXVlcnlUZXN0cy5ocHAnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlRleHR1cmVV
bml0VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9m
dW5jdGlvbmFsL2VzMmZUZXh0dXJlVW5pdFRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmVGV4dHVyZVdyYXBUZXN0cy5jcHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMy
ZlRleHR1cmVXcmFwVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZVbmlmb3JtQXBpVGVzdHMuY3BwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZVbmlmb3JtQXBpVGVz
dHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlv
bmFsL2VzMmZWZXJ0ZXhBcnJheVRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZWZXJ0ZXhBcnJheVRlc3QuaHBwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZWZXJ0ZXhU
ZXh0dXJlVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
Mi9mdW5jdGlvbmFsL2VzMmZWZXJ0ZXhUZXh0dXJlVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9wZXJmb3JtYW5jZS9lczJwQmxlbmRUZXN0cy5jcHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNlL2Vz
MnBCbGVuZFRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czIvcGVyZm9ybWFuY2UvZXMycERyYXdDYWxsQmF0Y2hpbmdUZXN0cy5jcHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNlL2VzMnBEcmF3Q2FsbEJh
dGNoaW5nVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
Mi9wZXJmb3JtYW5jZS9lczJwUGVyZm9ybWFuY2VUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNlL2VzMnBQZXJmb3JtYW5jZVRlc3Rz
LmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvcGVyZm9ybWFu
Y2UvZXMycFJlZHVuZGFudFN0YXRlQ2hhbmdlVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9wZXJmb3JtYW5jZS9lczJwUmVkdW5kYW50U3RhdGVDaGFu
Z2VUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3Bl
cmZvcm1hbmNlL2VzMnBTaGFkZXJDb21waWxhdGlvbkNhc2VzLmNwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvcGVyZm9ybWFuY2UvZXMycFNoYWRlckNvbXBpbGF0
aW9uQ2FzZXMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9w
ZXJmb3JtYW5jZS9lczJwU2hhZGVyQ29tcGlsZXJUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNlL2VzMnBTaGFkZXJDb21waWxlclRl
c3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvcGVyZm9y
bWFuY2UvZXMycFNoYWRlckNvbnRyb2xTdGF0ZW1lbnRUZXN0cy5jcHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNlL2VzMnBTaGFkZXJDb250cm9s
U3RhdGVtZW50VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMi9wZXJmb3JtYW5jZS9lczJwU2hhZGVyT3BlcmF0b3JUZXN0cy5jcHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNlL2VzMnBTaGFkZXJPcGVy
YXRvclRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIv
cGVyZm9ybWFuY2UvZXMycFNoYWRlck9wdGltaXphdGlvblRlc3RzLmNwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvcGVyZm9ybWFuY2UvZXMycFNoYWRlck9wdGlt
aXphdGlvblRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czIvcGVyZm9ybWFuY2UvZXMycFN0YXRlQ2hhbmdlQ2FsbFRlc3RzLmNwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvcGVyZm9ybWFuY2UvZXMycFN0YXRlQ2hhbmdl
Q2FsbFRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIv
cGVyZm9ybWFuY2UvZXMycFN0YXRlQ2hhbmdlVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9wZXJmb3JtYW5jZS9lczJwU3RhdGVDaGFuZ2VUZXN0cy5o
cHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNl
L2VzMnBUZXh0dXJlQ2FzZXMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMi9wZXJmb3JtYW5jZS9lczJwVGV4dHVyZUNhc2VzLmhwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvcGVyZm9ybWFuY2UvZXMycFRleHR1cmVDb3VudFRl
c3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvcGVyZm9y
bWFuY2UvZXMycFRleHR1cmVDb3VudFRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczIvcGVyZm9ybWFuY2UvZXMycFRleHR1cmVGaWx0ZXJpbmdUZXN0cy5j
cHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNl
L2VzMnBUZXh0dXJlRmlsdGVyaW5nVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMi9wZXJmb3JtYW5jZS9lczJwVGV4dHVyZUZvcm1hdFRlc3RzLmNwcCcs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvcGVyZm9ybWFuY2UvZXMy
cFRleHR1cmVGb3JtYXRUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMyL3BlcmZvcm1hbmNlL2VzMnBUZXh0dXJlVXBsb2FkVGVzdHMuY3BwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9wZXJmb3JtYW5jZS9lczJwVGV4dHVy
ZVVwbG9hZFRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czIvc3RyZXNzL2VzMnNEcmF3VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMi9zdHJlc3MvZXMyc0RyYXdUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3N0cmVzcy9lczJzTG9uZ1J1bm5pbmdUZXN0cy5jcHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3N0cmVzcy9lczJzTG9u
Z1J1bm5pbmdUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMyL3N0cmVzcy9lczJzTWVtb3J5VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMi9zdHJlc3MvZXMyc01lbW9yeVRlc3RzLmhwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvc3RyZXNzL2VzMnNTcGVjaWFsRmxvYXRUZXN0
cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3N0cmVzcy9l
czJzU3BlY2lhbEZsb2F0VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMi9zdHJlc3MvZXMyc1N0cmVzc1Rlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvc3RyZXNzL2VzMnNTdHJlc3NUZXN0cy5ocHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3N0cmVzcy9lczJzVmVydGV4QXJy
YXlUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3N0
cmVzcy9lczJzVmVydGV4QXJyYXlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMyL3RlczJDYXBhYmlsaXR5VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi90ZXMyQ2FwYWJpbGl0eVRlc3RzLmhwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvdGVzMkNvbnRleHQuY3BwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi90ZXMyQ29udGV4dC5ocHAnLAor
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3RlczJJbmZvVGVzdHMuY3Bw
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi90ZXMySW5mb1Rlc3Rz
LmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvdGVzMlRlc3RD
YXNlLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvdGVzMlRl
c3RDYXNlLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvdGVz
MlRlc3RQYWNrYWdlLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czIvdGVzMlRlc3RQYWNrYWdlLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczIvdGVzMlRlc3RQYWNrYWdlRW50cnkuY3BwJywKKyAgICAgICAgXSwKKyAgICAgICAg
J2RlcXBfZ2xlczNfc291cmNlcyc6CisgICAgICAgIFsKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMy9hY2N1cmFjeS9lczNhQWNjdXJhY3lUZXN0cy5jcHAnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2FjY3VyYWN5L2VzM2FBY2N1cmFjeVRl
c3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvYWNjdXJh
Y3kvZXMzYVRleHR1cmVGaWx0ZXJpbmdUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzL2FjY3VyYWN5L2VzM2FUZXh0dXJlRmlsdGVyaW5nVGVzdHMuaHBw
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9hY2N1cmFjeS9lczNh
VGV4dHVyZU1pcG1hcFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMvYWNjdXJhY3kvZXMzYVRleHR1cmVNaXBtYXBUZXN0cy5ocHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2FjY3VyYWN5L2VzM2FWYXJ5aW5nSW50ZXJw
b2xhdGlvblRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMvYWNjdXJhY3kvZXMzYVZhcnlpbmdJbnRlcnBvbGF0aW9uVGVzdHMuaHBwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZBcGlDYXNlLmNw
cCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9l
czNmQXBpQ2FzZS5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
L2Z1bmN0aW9uYWwvZXMzZkFTVENEZWNvbXByZXNzaW9uQ2FzZXMuY3BwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZBU1RDRGVjb21wcmVz
c2lvbkNhc2VzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMv
ZnVuY3Rpb25hbC9lczNmQXR0cmliTG9jYXRpb25UZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkF0dHJpYkxvY2F0aW9uVGVz
dHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlv
bmFsL2VzM2ZCbGVuZFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmQmxlbmRUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkJvb2xlYW5TdGF0ZVF1ZXJ5
VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5j
dGlvbmFsL2VzM2ZCb29sZWFuU3RhdGVRdWVyeVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmQnVmZmVyQ29weVRlc3RzLmNw
cCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9l
czNmQnVmZmVyQ29weVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmQnVmZmVyTWFwVGVzdHMuY3BwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZCdWZmZXJNYXBUZXN0
cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9u
YWwvZXMzZkJ1ZmZlck9iamVjdFF1ZXJ5VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZCdWZmZXJPYmplY3RRdWVyeVRlc3Rz
LmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25h
bC9lczNmQnVmZmVyV3JpdGVUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkJ1ZmZlcldyaXRlVGVzdHMuaHBwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZCdWlsdGlu
UHJlY2lzaW9uVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMy9mdW5jdGlvbmFsL2VzM2ZCdWlsdGluUHJlY2lzaW9uVGVzdHMuaHBwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZDbGlwcGluZ1Rl
c3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rp
b25hbC9lczNmQ2xpcHBpbmdUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkNvbG9yQ2xlYXJUZXN0LmNwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmQ29sb3JDbGVh
clRlc3QuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5j
dGlvbmFsL2VzM2ZDb21wcmVzc2VkVGV4dHVyZVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmQ29tcHJlc3NlZFRleHR1cmVU
ZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0
aW9uYWwvZXMzZkRlZmF1bHRWZXJ0ZXhBcnJheU9iamVjdFRlc3RzLmNwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRGVmYXVsdFZlcnRl
eEFycmF5T2JqZWN0VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZEZWZhdWx0VmVydGV4QXR0cmlidXRlVGVzdHMuY3BwJywK
KyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZE
ZWZhdWx0VmVydGV4QXR0cmlidXRlVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZEZXB0aFN0ZW5jaWxDbGVhclRlc3RzLmNw
cCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9l
czNmRGVwdGhTdGVuY2lsQ2xlYXJUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkRlcHRoU3RlbmNpbFRlc3RzLmNwcCcsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRGVw
dGhTdGVuY2lsVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMy9mdW5jdGlvbmFsL2VzM2ZEZXB0aFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRGVwdGhUZXN0cy5ocHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkRpdGhl
cmluZ1Rlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMv
ZnVuY3Rpb25hbC9lczNmRGl0aGVyaW5nVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZEcmF3VGVzdHMuY3BwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZEcmF3VGVz
dHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlv
bmFsL2VzM2ZGYm9BcGlUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZib0FwaVRlc3RzLmhwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRmJvQ29sb3JidWZmZXJU
ZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0
aW9uYWwvZXMzZkZib0NvbG9yYnVmZmVyVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZGYm9Db21wbGV0ZW5lc3NUZXN0cy5j
cHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwv
ZXMzZkZib0NvbXBsZXRlbmVzc1Rlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRmJvRGVwdGhidWZmZXJUZXN0cy5jcHAnLAor
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZi
b0RlcHRoYnVmZmVyVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZGYm9JbnZhbGlkYXRlVGVzdHMuY3BwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZGYm9JbnZhbGlk
YXRlVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9m
dW5jdGlvbmFsL2VzM2ZGYm9NdWx0aXNhbXBsZVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRmJvTXVsdGlzYW1wbGVUZXN0
cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9u
YWwvZXMzZkZib1JlbmRlclRlc3QuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZGYm9SZW5kZXJUZXN0LmhwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRmJvU3RhdGVRdWVy
eVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVu
Y3Rpb25hbC9lczNmRmJvU3RhdGVRdWVyeVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRmJvU3RlbmNpbGJ1ZmZlclRlc3Rz
LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25h
bC9lczNmRmJvU3RlbmNpbGJ1ZmZlclRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRmJvVGVzdENhc2UuY3BwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZGYm9UZXN0
Q2FzZS5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0
aW9uYWwvZXMzZkZib1Rlc3RVdGlsLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRmJvVGVzdFV0aWwuaHBwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZGbG9hdFN0YXRlUXVl
cnlUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1
bmN0aW9uYWwvZXMzZkZsb2F0U3RhdGVRdWVyeVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRmx1c2hGaW5pc2hUZXN0cy5j
cHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwv
ZXMzZkZsdXNoRmluaXNoVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZGcmFnRGVwdGhUZXN0cy5jcHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZyYWdEZXB0aFRl
c3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rp
b25hbC9lczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuaHBw
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2Vz
M2ZGcmFnT3BJbnRlcmFjdGlvblRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRnJhZ09wSW50ZXJhY3Rpb25UZXN0cy5ocHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMz
ZkZyYW1lYnVmZmVyQmxpdFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRnJhbWVidWZmZXJCbGl0VGVzdHMuaHBwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZGdW5j
dGlvbmFsVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
My9mdW5jdGlvbmFsL2VzM2ZGdW5jdGlvbmFsVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZJbXBsZW1lbnRhdGlvbkxpbWl0
VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5j
dGlvbmFsL2VzM2ZJbXBsZW1lbnRhdGlvbkxpbWl0VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZJbmRleGVkU3RhdGVRdWVy
eVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVu
Y3Rpb25hbC9lczNmSW5kZXhlZFN0YXRlUXVlcnlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkluc3RhbmNlZFJlbmRlcmlu
Z1Rlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVu
Y3Rpb25hbC9lczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZJbnRlZ2VyNjRTdGF0ZVF1
ZXJ5VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9m
dW5jdGlvbmFsL2VzM2ZJbnRlZ2VyNjRTdGF0ZVF1ZXJ5VGVzdHMuaHBwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZJbnRlZ2VyU3RhdGVR
dWVyeVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMv
ZnVuY3Rpb25hbC9lczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5ocHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkludGVybmFsRm9ybWF0
UXVlcnlUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
L2Z1bmN0aW9uYWwvZXMzZkludGVybmFsRm9ybWF0UXVlcnlUZXN0cy5ocHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkxpZmV0aW1lVGVz
dHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlv
bmFsL2VzM2ZMaWZldGltZVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmTXVsdGlzYW1wbGVUZXN0cy5jcHAnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZk11bHRpc2Ft
cGxlVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9m
dW5jdGlvbmFsL2VzM2ZOZWdhdGl2ZUJ1ZmZlckFwaVRlc3RzLmNwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmTmVnYXRpdmVCdWZmZXJB
cGlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1
bmN0aW9uYWwvZXMzZk5lZ2F0aXZlRnJhZ21lbnRBcGlUZXN0cy5jcHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZk5lZ2F0aXZlRnJhZ21l
bnRBcGlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
L2Z1bmN0aW9uYWwvZXMzZk5lZ2F0aXZlU2hhZGVyQXBpVGVzdHMuY3BwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZOZWdhdGl2ZVNoYWRl
ckFwaVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMv
ZnVuY3Rpb25hbC9lczNmTmVnYXRpdmVTdGF0ZUFwaVRlc3RzLmNwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmTmVnYXRpdmVTdGF0ZUFw
aVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVu
Y3Rpb25hbC9lczNmTmVnYXRpdmVUZXh0dXJlQXBpVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZOZWdhdGl2ZVRleHR1cmVB
cGlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1
bmN0aW9uYWwvZXMzZk5lZ2F0aXZlVmVydGV4QXJyYXlBcGlUZXN0cy5jcHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZk5lZ2F0aXZlVmVy
dGV4QXJyYXlBcGlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzL2Z1bmN0aW9uYWwvZXMzZk9jY2x1c2lvblF1ZXJ5VGVzdHMuY3BwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZPY2NsdXNpb25R
dWVyeVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMv
ZnVuY3Rpb25hbC9lczNmUGl4ZWxCdWZmZXJPYmplY3RUZXN0cy5jcHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlBpeGVsQnVmZmVyT2Jq
ZWN0VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9m
dW5jdGlvbmFsL2VzM2ZQb2x5Z29uT2Zmc2V0VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZQb2x5Z29uT2Zmc2V0VGVzdHMu
aHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFs
L2VzM2ZQcmVyZXF1aXNpdGVUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlByZXJlcXVpc2l0ZVRlc3RzLmhwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmUHJpbWl0
aXZlUmVzdGFydFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczMvZnVuY3Rpb25hbC9lczNmUHJpbWl0aXZlUmVzdGFydFRlc3RzLmhwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmUmFuZG9tRnJh
Z21lbnRPcFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMvZnVuY3Rpb25hbC9lczNmUmFuZG9tRnJhZ21lbnRPcFRlc3RzLmhwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmUmFuZG9tU2hhZGVy
VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5j
dGlvbmFsL2VzM2ZSYW5kb21TaGFkZXJUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlJhc3Rlcml6YXRpb25UZXN0cy5jcHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMz
ZlJhc3Rlcml6YXRpb25UZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuY3BwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZSYXN0
ZXJpemVyRGlzY2FyZFRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmUmJvU3RhdGVRdWVyeVRlc3RzLmNwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmUmJvU3RhdGVR
dWVyeVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMv
ZnVuY3Rpb25hbC9lczNmUmVhZFBpeGVsc1Rlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmUmVhZFBpeGVsc1Rlc3RzLmhwcCcs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNm
U2FtcGxlck9iamVjdFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2FtcGxlck9iamVjdFRlc3RzLmhwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2FtcGxlclN0
YXRlUXVlcnlUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzL2Z1bmN0aW9uYWwvZXMzZlNhbXBsZXJTdGF0ZVF1ZXJ5VGVzdHMuaHBwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTY2lzc29yVGVz
dHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlv
bmFsL2VzM2ZTY2lzc29yVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJBcGlUZXN0cy5jcHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlckFwaVRl
c3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rp
b25hbC9lczNmU2hhZGVyQnVpbHRpblZhclRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hhZGVyQnVpbHRpblZhclRlc3Rz
LmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25h
bC9lczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9u
VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5j
dGlvbmFsL2VzM2ZTaGFkZXJDb25zdEV4cHJUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlckNvbnN0RXhwclRlc3Rz
LmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25h
bC9lczNmU2hhZGVyRGVyaXZhdGVUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuaHBwJywK
KyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZT
aGFkZXJEaXNjYXJkVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJEaXNjYXJkVGVzdHMuaHBwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJGcmFn
RGF0YVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMv
ZnVuY3Rpb25hbC9lczNmU2hhZGVyRnJhZ0RhdGFUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlckluZGV4aW5nVGVz
dHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlv
bmFsL2VzM2ZTaGFkZXJJbmRleGluZ1Rlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hhZGVySW52YXJpYW5jZVRlc3RzLmNw
cCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9l
czNmU2hhZGVySW52YXJpYW5jZVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hhZGVyTG9vcFRlc3RzLmNwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hhZGVy
TG9vcFRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMv
ZnVuY3Rpb25hbC9lczNmU2hhZGVyTWF0cml4VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJNYXRyaXhUZXN0cy5o
cHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwv
ZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmhwcCcsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hh
ZGVyUGFja2luZ0Z1bmN0aW9uVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0cy5o
cHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwv
ZXMzZlNoYWRlclByZWNpc2lvblRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hhZGVyUHJlY2lzaW9uVGVzdHMuaHBwJywK
KyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZT
aGFkZXJSZXR1cm5UZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlclJldHVyblRlc3RzLmhwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hhZGVyU3RhdGVR
dWVyeVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMv
ZnVuY3Rpb25hbC9lczNmU2hhZGVyU3RhdGVRdWVyeVRlc3RzLmhwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hhZGVyU3RydWN0VGVz
dHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlv
bmFsL2VzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlclN3aXRjaFRlc3RzLmNwcCcsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hh
ZGVyU3dpdGNoVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5jcHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRl
clRleHR1cmVGdW5jdGlvblRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU3RlbmNpbFRlc3RzLmNwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU3RlbmNpbFRlc3Rz
LmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25h
bC9lczNmU3RyaW5nUXVlcnlUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlN0cmluZ1F1ZXJ5VGVzdHMuaHBwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTeW5jVGVz
dHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlv
bmFsL2VzM2ZTeW5jVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZUZXh0dXJlRmlsdGVyaW5nVGVzdHMuY3BwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZUZXh0dXJl
RmlsdGVyaW5nVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMy9mdW5jdGlvbmFsL2VzM2ZUZXh0dXJlRm9ybWF0VGVzdHMuY3BwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZUZXh0dXJlRm9ybWF0
VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5j
dGlvbmFsL2VzM2ZUZXh0dXJlTWlwbWFwVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZUZXh0dXJlTWlwbWFwVGVzdHMuaHBw
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2Vz
M2ZUZXh0dXJlU2hhZG93VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZUZXh0dXJlU2hhZG93VGVzdHMuaHBwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZUZXh0dXJl
U2l6ZVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMv
ZnVuY3Rpb25hbC9lczNmVGV4dHVyZVNpemVUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlRleHR1cmVTcGVjaWZpY2F0aW9u
VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5j
dGlvbmFsL2VzM2ZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLmhwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmVGV4dHVyZVN0YXRlUXVl
cnlUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1
bmN0aW9uYWwvZXMzZlRleHR1cmVTdGF0ZVF1ZXJ5VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZUZXh0dXJlU3dpenpsZVRl
c3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rp
b25hbC9lczNmVGV4dHVyZVN3aXp6bGVUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlRleHR1cmVVbml0VGVzdHMuY3BwJywK
KyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZU
ZXh0dXJlVW5pdFRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczMvZnVuY3Rpb25hbC9lczNmVGV4dHVyZVdyYXBUZXN0cy5jcHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlRleHR1cmVXcmFwVGVz
dHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlv
bmFsL2VzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0
cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9u
YWwvZXMzZlVuaWZvcm1BcGlUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlVuaWZvcm1BcGlUZXN0cy5ocHAnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlVuaWZvcm1C
bG9ja1Rlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMv
ZnVuY3Rpb25hbC9lczNmVW5pZm9ybUJsb2NrVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZWZXJ0ZXhBcnJheU9iamVjdFRl
c3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rp
b25hbC9lczNmVmVydGV4QXJyYXlPYmplY3RUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlZlcnRleEFycmF5VGVzdC5jcHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMz
ZlZlcnRleEFycmF5VGVzdC5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlZlcnRleFRleHR1cmVUZXN0cy5jcHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlZlcnRleFRleHR1
cmVUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3Bl
cmZvcm1hbmNlL2VzM3BCbGVuZFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMvcGVyZm9ybWFuY2UvZXMzcEJsZW5kVGVzdHMuaHBwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9wZXJmb3JtYW5jZS9lczNwQnVmZmVyRGF0
YVVwbG9hZFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMvcGVyZm9ybWFuY2UvZXMzcEJ1ZmZlckRhdGFVcGxvYWRUZXN0cy5ocHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZvcm1hbmNlL2VzM3BEZXB0aFRlc3Rz
LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVyZm9ybWFu
Y2UvZXMzcERlcHRoVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMy9wZXJmb3JtYW5jZS9lczNwUGVyZm9ybWFuY2VUZXN0cy5jcHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZvcm1hbmNlL2VzM3BQZXJmb3JtYW5j
ZVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVy
Zm9ybWFuY2UvZXMzcFJlZHVuZGFudFN0YXRlQ2hhbmdlVGVzdHMuY3BwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9wZXJmb3JtYW5jZS9lczNwUmVkdW5kYW50U3Rh
dGVDaGFuZ2VUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzL3BlcmZvcm1hbmNlL2VzM3BTaGFkZXJDb21waWxhdGlvbkNhc2VzLmNwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVyZm9ybWFuY2UvZXMzcFNoYWRlckNv
bXBpbGF0aW9uQ2FzZXMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMy9wZXJmb3JtYW5jZS9lczNwU2hhZGVyQ29tcGlsZXJUZXN0cy5jcHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZvcm1hbmNlL2VzM3BTaGFkZXJDb21w
aWxlclRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMv
cGVyZm9ybWFuY2UvZXMzcFNoYWRlckNvbnRyb2xTdGF0ZW1lbnRUZXN0cy5jcHAnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZvcm1hbmNlL2VzM3BTaGFkZXJD
b250cm9sU3RhdGVtZW50VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMy9wZXJmb3JtYW5jZS9lczNwU2hhZGVyT3BlcmF0b3JUZXN0cy5jcHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZvcm1hbmNlL2VzM3BTaGFk
ZXJPcGVyYXRvclRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczMvcGVyZm9ybWFuY2UvZXMzcFNoYWRlck9wdGltaXphdGlvblRlc3RzLmNwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVyZm9ybWFuY2UvZXMzcFNoYWRl
ck9wdGltaXphdGlvblRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMvcGVyZm9ybWFuY2UvZXMzcFN0YXRlQ2hhbmdlQ2FsbFRlc3RzLmNwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVyZm9ybWFuY2UvZXMzcFN0YXRl
Q2hhbmdlQ2FsbFRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczMvcGVyZm9ybWFuY2UvZXMzcFN0YXRlQ2hhbmdlVGVzdHMuY3BwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9wZXJmb3JtYW5jZS9lczNwU3RhdGVDaGFuZ2VU
ZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZv
cm1hbmNlL2VzM3BUZXh0dXJlQ2FzZXMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMy9wZXJmb3JtYW5jZS9lczNwVGV4dHVyZUNhc2VzLmhwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVyZm9ybWFuY2UvZXMzcFRleHR1cmVD
b3VudFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMv
cGVyZm9ybWFuY2UvZXMzcFRleHR1cmVDb3VudFRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVyZm9ybWFuY2UvZXMzcFRleHR1cmVGaWx0ZXJpbmdU
ZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZv
cm1hbmNlL2VzM3BUZXh0dXJlRmlsdGVyaW5nVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9wZXJmb3JtYW5jZS9lczNwVGV4dHVyZUZvcm1hdFRlc3Rz
LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVyZm9ybWFu
Y2UvZXMzcFRleHR1cmVGb3JtYXRUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzL3N0cmVzcy9lczNzRHJhd1Rlc3RzLmNwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvc3RyZXNzL2VzM3NEcmF3VGVzdHMuaHBwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9zdHJlc3MvZXMzc0xvbmdSdW5u
aW5nU2hhZGVyVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMy9zdHJlc3MvZXMzc0xvbmdSdW5uaW5nU2hhZGVyVGVzdHMuaHBwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9zdHJlc3MvZXMzc0xvbmdSdW5uaW5nVGVzdHMu
Y3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9zdHJlc3MvZXMz
c0xvbmdSdW5uaW5nVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMy9zdHJlc3MvZXMzc0xvbmdTaGFkZXJUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3N0cmVzcy9lczNzTG9uZ1NoYWRlclRlc3RzLmhwcCcs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvc3RyZXNzL2VzM3NNZW1v
cnlUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3N0
cmVzcy9lczNzTWVtb3J5VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMy9zdHJlc3MvZXMzc09jY2x1c2lvblF1ZXJ5VGVzdHMuY3BwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9zdHJlc3MvZXMzc09jY2x1c2lvblF1ZXJ5
VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9zdHJl
c3MvZXMzc1NwZWNpYWxGbG9hdFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMvc3RyZXNzL2VzM3NTcGVjaWFsRmxvYXRUZXN0cy5ocHAnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3N0cmVzcy9lczNzU3RyZXNzVGVzdHMu
Y3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9zdHJlc3MvZXMz
c1N0cmVzc1Rlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMvc3RyZXNzL2VzM3NTeW5jVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMy9zdHJlc3MvZXMzc1N5bmNUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3N0cmVzcy9lczNzVmVydGV4QXJyYXlUZXN0cy5jcHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3N0cmVzcy9lczNzVmVy
dGV4QXJyYXlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzL3RlczNDb250ZXh0LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczMvdGVzM0NvbnRleHQuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMy90ZXMzSW5mb1Rlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMvdGVzM0luZm9UZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzL3RlczNUZXN0Q2FzZS5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzL3RlczNUZXN0Q2FzZS5ocHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzL3RlczNUZXN0UGFja2FnZS5jcHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3RlczNUZXN0UGFja2FnZS5ocHAnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3RlczNUZXN0UGFja2FnZUVudHJ5LmNw
cCcsCisgICAgICAgIF0sCisgICAgICAgICdkZXFwX2dsZXMzMV9zb3VyY2VzJzoKKyAgICAgICAg
WworICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2Vz
MzFmQWR2YW5jZWRCbGVuZFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZBZHZhbmNlZEJsZW5kVGVzdHMuaHBwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkFu
ZHJvaWRFeHRlbnNpb25QYWNrRVMzMUFUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmQW5kcm9pZEV4dGVuc2lvblBhY2tF
UzMxQVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMx
L2Z1bmN0aW9uYWwvZXMzMWZBdG9taWNDb3VudGVyVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkF0b21pY0NvdW50ZXJU
ZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5j
dGlvbmFsL2VzMzFmQmFzaWNDb21wdXRlU2hhZGVyVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkJhc2ljQ29tcHV0ZVNo
YWRlclRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMx
L2Z1bmN0aW9uYWwvZXMzMWZCb29sZWFuU3RhdGVRdWVyeVRlc3RzLmNwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZCb29sZWFuU3Rh
dGVRdWVyeVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMxL2Z1bmN0aW9uYWwvZXMzMWZCdWlsdGluUHJlY2lzaW9uVGVzdHMuY3BwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkJ1aWx0aW5Q
cmVjaXNpb25UZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzMS9mdW5jdGlvbmFsL2VzMzFmQ29tcHV0ZVNoYWRlckJ1aWx0aW5WYXJUZXN0cy5jcHAnLAor
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFm
Q29tcHV0ZVNoYWRlckJ1aWx0aW5WYXJUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmQ29weUltYWdlVGVzdHMuY3BwJywK
KyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMx
ZkNvcHlJbWFnZVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZEZWJ1Z1Rlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZEZWJ1Z1Rlc3RzLmhwcCcs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMz
MWZEZWZhdWx0VmVydGV4QXJyYXlPYmplY3RUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmRGVmYXVsdFZlcnRleEFycmF5
T2JqZWN0VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
MzEvZnVuY3Rpb25hbC9lczMxZkRyYXdCdWZmZXJzSW5kZXhlZFRlc3RzLmNwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZEcmF3QnVm
ZmVyc0luZGV4ZWRUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmRHJhd1Rlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZEcmF3VGVzdHMuaHBwJywK
KyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMx
ZkZib0NvbG9yYnVmZmVyVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkZib0NvbG9yYnVmZmVyVGVzdHMuaHBwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkZi
b05vQXR0YWNobWVudFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZGYm9Ob0F0dGFjaG1lbnRUZXN0cy5ocHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmRmJv
VGVzdENhc2UuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEv
ZnVuY3Rpb25hbC9lczMxZkZib1Rlc3RDYXNlLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZGYm9UZXN0VXRpbC5jcHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmRmJv
VGVzdFV0aWwuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEv
ZnVuY3Rpb25hbC9lczMxZkZyYW1lYnVmZmVyRGVmYXVsdFN0YXRlUXVlcnlUZXN0cy5jcHAnLAor
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFm
RnJhbWVidWZmZXJEZWZhdWx0U3RhdGVRdWVyeVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZGdW5jdGlvbmFsVGVzdHMu
Y3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25h
bC9lczMxZkZ1bmN0aW9uYWxUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmR2VvbWV0cnlTaGFkZXJUZXN0cy5jcHAnLAor
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFm
R2VvbWV0cnlTaGFkZXJUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmSW5kZXhlZFN0YXRlUXVlcnlUZXN0cy5jcHAnLAor
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFm
SW5kZXhlZFN0YXRlUXVlcnlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmSW5kaXJlY3RDb21wdXRlRGlzcGF0Y2hUZXN0
cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlv
bmFsL2VzMzFmSW5kaXJlY3RDb21wdXRlRGlzcGF0Y2hUZXN0cy5ocHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmSW5mb0xvZ1F1ZXJ5
U2hhcmVkLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1
bmN0aW9uYWwvZXMzMWZJbmZvTG9nUXVlcnlTaGFyZWQuaHBwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkludGVnZXJTdGF0ZVF1ZXJ5
VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVu
Y3Rpb25hbC9lczMxZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkludGVybmFsRm9ybWF0
UXVlcnlUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
MS9mdW5jdGlvbmFsL2VzMzFmSW50ZXJuYWxGb3JtYXRRdWVyeVRlc3RzLmhwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZMYXlvdXRC
aW5kaW5nVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
MzEvZnVuY3Rpb25hbC9lczMxZkxheW91dEJpbmRpbmdUZXN0cy5ocHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTXVsdGlzYW1wbGVT
aGFkZXJSZW5kZXJDYXNlLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZNdWx0aXNhbXBsZVNoYWRlclJlbmRlckNhc2UuaHBwJywK
KyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMx
Zk11bHRpc2FtcGxlVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk11bHRpc2FtcGxlVGVzdHMuaHBwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk5lZ2F0aXZl
QWR2YW5jZWRCbGVuZEVxdWF0aW9uVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk5lZ2F0aXZlQWR2YW5jZWRCbGVuZEVx
dWF0aW9uVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
MzEvZnVuY3Rpb25hbC9lczMxZk5lZ2F0aXZlQXRvbWljQ291bnRlclRlc3RzLmNwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZOZWdh
dGl2ZUF0b21pY0NvdW50ZXJUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVCdWZmZXJBcGlUZXN0cy5jcHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2Vz
MzFmTmVnYXRpdmVCdWZmZXJBcGlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVGcmFnbWVudEFwaVRlc3Rz
LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9u
YWwvZXMzMWZOZWdhdGl2ZUZyYWdtZW50QXBpVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk5lZ2F0aXZlUHJlY2lzZVRl
c3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0
aW9uYWwvZXMzMWZOZWdhdGl2ZVByZWNpc2VUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVTaGFkZXJBcGlU
ZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5j
dGlvbmFsL2VzMzFmTmVnYXRpdmVTaGFkZXJBcGlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVTaGFkZXJE
aXJlY3RpdmVUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVTaGFkZXJEaXJlY3RpdmVUZXN0cy5ocHAnLAor
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFm
TmVnYXRpdmVTaGFkZXJGdW5jdGlvblRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZOZWdhdGl2ZVNoYWRlckZ1bmN0aW9u
VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVu
Y3Rpb25hbC9lczMxZk5lZ2F0aXZlU2hhZGVySW1hZ2VMb2FkU3RvcmVUZXN0cy5jcHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVn
YXRpdmVTaGFkZXJJbWFnZUxvYWRTdG9yZVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZOZWdhdGl2ZVN0YXRlQXBpVGVz
dHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rp
b25hbC9lczMxZk5lZ2F0aXZlU3RhdGVBcGlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVUZXN0U2hhcmVk
LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9u
YWwvZXMzMWZOZWdhdGl2ZVRlc3RTaGFyZWQuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk5lZ2F0aXZlVGV4dHVyZUFwaVRlc3Rz
LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9u
YWwvZXMzMWZOZWdhdGl2ZVRleHR1cmVBcGlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVWZXJ0ZXhBcnJh
eUFwaVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMx
L2Z1bmN0aW9uYWwvZXMzMWZOZWdhdGl2ZVZlcnRleEFycmF5QXBpVGVzdHMuaHBwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk9wYXF1
ZVR5cGVJbmRleGluZ1Rlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZPcGFxdWVUeXBlSW5kZXhpbmdUZXN0cy5ocHAnLAor
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFm
UHJpbWl0aXZlQm91bmRpbmdCb3hUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmUHJpbWl0aXZlQm91bmRpbmdCb3hUZXN0
cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlv
bmFsL2VzMzFmUHJvZ3JhbUludGVyZmFjZURlZmluaXRpb24uY3BwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlByb2dyYW1JbnRlcmZh
Y2VEZWZpbml0aW9uLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMxL2Z1bmN0aW9uYWwvZXMzMWZQcm9ncmFtSW50ZXJmYWNlRGVmaW5pdGlvblV0aWwuY3BwJywK
KyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMx
ZlByb2dyYW1JbnRlcmZhY2VEZWZpbml0aW9uVXRpbC5ocHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmUHJvZ3JhbUludGVyZmFjZVF1
ZXJ5VGVzdENhc2UuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
MzEvZnVuY3Rpb25hbC9lczMxZlByb2dyYW1JbnRlcmZhY2VRdWVyeVRlc3RDYXNlLmhwcCcsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZQ
cm9ncmFtSW50ZXJmYWNlUXVlcnlUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmUHJvZ3JhbUludGVyZmFjZVF1ZXJ5VGVz
dHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rp
b25hbC9lczMxZlByb2dyYW1QaXBlbGluZVN0YXRlUXVlcnlUZXN0cy5jcHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmUHJvZ3JhbVBp
cGVsaW5lU3RhdGVRdWVyeVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZQcm9ncmFtU3RhdGVRdWVyeVRlc3RzLmNwcCcs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMz
MWZQcm9ncmFtU3RhdGVRdWVyeVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZQcm9ncmFtVW5pZm9ybVRlc3RzLmNwcCcs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMz
MWZQcm9ncmFtVW5pZm9ybVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTU0JPQXJyYXlMZW5ndGhUZXN0cy5jcHAnLAor
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFm
U1NCT0FycmF5TGVuZ3RoVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlNTQk9MYXlvdXRDYXNlLmNwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTU0JPTGF5
b3V0Q2FzZS5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9m
dW5jdGlvbmFsL2VzMzFmU1NCT0xheW91dFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTU0JPTGF5b3V0VGVzdHMuaHBw
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9l
czMxZlNhbXBsZVNoYWRpbmdUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmU2FtcGxlU2hhZGluZ1Rlc3RzLmhwcCcsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZT
YW1wbGVWYXJpYWJsZVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTYW1wbGVWYXJpYWJsZVRlc3RzLmhwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTYW1w
bGVyU3RhdGVRdWVyeVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTYW1wbGVyU3RhdGVRdWVyeVRlc3RzLmhwcCcsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZT
ZXBhcmF0ZVNoYWRlclRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTZXBhcmF0ZVNoYWRlclRlc3RzLmhwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTaGFk
ZXJBdG9taWNPcFRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTaGFkZXJBdG9taWNPcFRlc3RzLmhwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTaGFkZXJC
dWlsdGluQ29uc3RhbnRUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmU2hhZGVyQnVpbHRpbkNvbnN0YW50VGVzdHMuaHBw
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9l
czMxZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlNoYWRlckNvbW1vbkZ1bmN0aW9u
VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVu
Y3Rpb25hbC9lczMxZlNoYWRlckhlbHBlckludm9jYXRpb25UZXN0cy5jcHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmU2hhZGVySGVs
cGVySW52b2NhdGlvblRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTaGFkZXJJbWFnZUxvYWRTdG9yZVRlc3RzLmNwcCcs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMz
MWZTaGFkZXJJbWFnZUxvYWRTdG9yZVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTaGFkZXJJbnRlZ2VyRnVuY3Rpb25U
ZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5j
dGlvbmFsL2VzMzFmU2hhZGVySW50ZWdlckZ1bmN0aW9uVGVzdHMuaHBwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlNoYWRlck11bHRp
c2FtcGxlSW50ZXJwb2xhdGlvblN0YXRlUXVlcnlUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmU2hhZGVyTXVsdGlzYW1w
bGVJbnRlcnBvbGF0aW9uU3RhdGVRdWVyeVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTaGFkZXJNdWx0aXNhbXBsZUlu
dGVycG9sYXRpb25UZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmU2hhZGVyTXVsdGlzYW1wbGVJbnRlcnBvbGF0aW9uVGVz
dHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rp
b25hbC9lczMxZlNoYWRlclBhY2tpbmdGdW5jdGlvblRlc3RzLmNwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTaGFkZXJQYWNraW5n
RnVuY3Rpb25UZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzMS9mdW5jdGlvbmFsL2VzMzFmU2hhZGVyU2hhcmVkVmFyVGVzdHMuY3BwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlNoYWRlclNo
YXJlZFZhclRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMxL2Z1bmN0aW9uYWwvZXMzMWZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuY3BwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlNoYWRlclN0
YXRlUXVlcnlUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzMS9mdW5jdGlvbmFsL2VzMzFmU2hhZGVyVGV4dHVyZVNpemVUZXN0cy5jcHAnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmU2hhZGVy
VGV4dHVyZVNpemVUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmU3RlbmNpbFRleHR1cmluZ1Rlc3RzLmNwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTdGVu
Y2lsVGV4dHVyaW5nVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlN5bmNocm9uaXphdGlvblRlc3RzLmNwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTeW5j
aHJvbml6YXRpb25UZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmVGVzc2VsbGF0aW9uR2VvbWV0cnlJbnRlcmFjdGlvblRl
c3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0
aW9uYWwvZXMzMWZUZXNzZWxsYXRpb25HZW9tZXRyeUludGVyYWN0aW9uVGVzdHMuaHBwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlRl
c3NlbGxhdGlvblRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZUZXNzZWxsYXRpb25UZXN0cy5ocHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmVGV4dHVyZUJv
cmRlckNsYW1wVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMzEvZnVuY3Rpb25hbC9lczMxZlRleHR1cmVCb3JkZXJDbGFtcFRlc3RzLmhwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZUZXh0
dXJlQnVmZmVyVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMzEvZnVuY3Rpb25hbC9lczMxZlRleHR1cmVCdWZmZXJUZXN0cy5ocHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmVGV4dHVyZUZp
bHRlcmluZ1Rlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMxL2Z1bmN0aW9uYWwvZXMzMWZUZXh0dXJlRmlsdGVyaW5nVGVzdHMuaHBwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlRleHR1cmVG
b3JtYXRUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
MS9mdW5jdGlvbmFsL2VzMzFmVGV4dHVyZUZvcm1hdFRlc3RzLmhwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZUZXh0dXJlR2F0aGVy
VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVu
Y3Rpb25hbC9lczMxZlRleHR1cmVHYXRoZXJUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmVGV4dHVyZUxldmVsU3RhdGVR
dWVyeVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMx
L2Z1bmN0aW9uYWwvZXMzMWZUZXh0dXJlTGV2ZWxTdGF0ZVF1ZXJ5VGVzdHMuaHBwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlRleHR1
cmVNdWx0aXNhbXBsZVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZUZXh0dXJlTXVsdGlzYW1wbGVUZXN0cy5ocHAnLAor
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFm
VGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0
cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlv
bmFsL2VzMzFmVGV4dHVyZVN0YXRlUXVlcnlUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmVGV4dHVyZVN0YXRlUXVlcnlU
ZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5j
dGlvbmFsL2VzMzFmVW5pZm9ybUJsb2NrVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlVuaWZvcm1CbG9ja1Rlc3RzLmhw
cCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwv
ZXMzMWZVbmlmb3JtTG9jYXRpb25UZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmVW5pZm9ybUxvY2F0aW9uVGVzdHMuaHBw
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9l
czMxZlZlcnRleEF0dHJpYnV0ZUJpbmRpbmdTdGF0ZVF1ZXJ5VGVzdHMuY3BwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlZlcnRleEF0
dHJpYnV0ZUJpbmRpbmdTdGF0ZVF1ZXJ5VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlZlcnRleEF0dHJpYnV0ZUJpbmRp
bmdUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9m
dW5jdGlvbmFsL2VzMzFmVmVydGV4QXR0cmlidXRlQmluZGluZ1Rlc3RzLmhwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL3N0cmVzcy9lczMxc0RyYXdUZXN0cy5j
cHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9zdHJlc3MvZXMz
MXNEcmF3VGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
MzEvc3RyZXNzL2VzMzFzU3RyZXNzVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMzEvc3RyZXNzL2VzMzFzU3RyZXNzVGVzdHMuaHBwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvc3RyZXNzL2VzMzFzVGVzc2VsbGF0aW9u
R2VvbWV0cnlJbnRlcmFjdGlvblRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMxL3N0cmVzcy9lczMxc1Rlc3NlbGxhdGlvbkdlb21ldHJ5SW50ZXJhY3Rp
b25UZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9z
dHJlc3MvZXMzMXNWZXJ0ZXhBdHRyaWJ1dGVCaW5kaW5nVGVzdHMuY3BwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvc3RyZXNzL2VzMzFzVmVydGV4QXR0cmlidXRl
QmluZGluZ1Rlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMxL3RlczMxQ29udGV4dC5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzMS90ZXMzMUNvbnRleHQuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMzEvdGVzMzFJbmZvVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMzEvdGVzMzFJbmZvVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvdGVzMzFUZXN0Q2FzZS5jcHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS90ZXMzMVRlc3RDYXNlLmhwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL3RlczMxVGVzdFBhY2thZ2UuY3BwJywK
KyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvdGVzMzFUZXN0UGFja2Fn
ZS5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS90ZXMzMVRl
c3RQYWNrYWdlRW50cnkuY3BwJworICAgICAgICBdLAorICAgICAgICAnZGVxcF9lZ2xfc291cmNl
cyc6CisgICAgICAgIFsKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVn
bEFuZHJvaWRVdGlsLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWds
L3RlZ2xBbmRyb2lkVXRpbC5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2VnbC90ZWdsQXBpQ2FzZS5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2VnbC90ZWdsQXBpQ2FzZS5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2VnbC90ZWdsQnVmZmVyQWdlVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9lZ2wvdGVnbEJ1ZmZlckFnZVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xDaG9vc2VDb25maWdSZWZlcmVuY2UuY3BwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbENob29zZUNvbmZpZ1JlZmVyZW5j
ZS5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsQ2hvb3Nl
Q29uZmlnVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wv
dGVnbENob29zZUNvbmZpZ1Rlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZWdsL3RlZ2xDbGllbnRFeHRlbnNpb25UZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsQ2xpZW50RXh0ZW5zaW9uVGVzdHMuaHBwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbENvbG9yQ2xlYXJDYXNlLmNw
cCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xDb2xvckNsZWFy
Q2FzZS5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsQ29s
b3JDbGVhclRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWds
L3RlZ2xDb2xvckNsZWFyVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9lZ2wvdGVnbENvbmZpZ0xpc3QuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9lZ2wvdGVnbENvbmZpZ0xpc3QuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9lZ2wvdGVnbENyZWF0ZUNvbnRleHRFeHRUZXN0cy5jcHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsQ3JlYXRlQ29udGV4dEV4dFRlc3RzLmhw
cCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xDcmVhdGVDb250
ZXh0VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVn
bENyZWF0ZUNvbnRleHRUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2VnbC90ZWdsQ3JlYXRlU3VyZmFjZVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xDcmVhdGVTdXJmYWNlVGVzdHMuaHBwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEdldFByb2NBZGRyZXNzVGVzdHMuY3Bw
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEdldFByb2NBZGRy
ZXNzVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVn
bEdMRVMxUmVuZGVyVXRpbC5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2VnbC90ZWdsR0xFUzFSZW5kZXJVdGlsLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZWdsL3RlZ2xHTEVTMlJlbmRlclV0aWwuY3BwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEdMRVMyUmVuZGVyVXRpbC5ocHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsR0xFUzJTaGFyZWRSZW5kZXJpbmdQZXJm
VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEdM
RVMyU2hhcmVkUmVuZGVyaW5nUGVyZlRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZWdsL3RlZ2xHTEVTMlNoYXJpbmdUZXN0cy5jcHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsR0xFUzJTaGFyaW5nVGVzdHMuaHBwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEdMRVMyU2hhcmluZ1RocmVh
ZGVkVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVn
bEdMRVMyU2hhcmluZ1RocmVhZGVkVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9lZ2wvdGVnbEltYWdlRm9ybWF0VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEltYWdlRm9ybWF0VGVzdHMuaHBwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEltYWdlVGVzdHMuY3BwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEltYWdlVGVzdHMuaHBwJywK
KyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEltYWdlVXRpbC5jcHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsSW1hZ2VVdGlsLmhw
cCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xJbmZvVGVzdHMu
Y3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEluZm9UZXN0
cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsTWFrZUN1
cnJlbnRQZXJmVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9l
Z2wvdGVnbE1ha2VDdXJyZW50UGVyZlRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZWdsL3RlZ2xNZW1vcnlTdHJlc3NUZXN0cy5jcHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsTWVtb3J5U3RyZXNzVGVzdHMuaHBwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbE11bHRpQ29udGV4dFRlc3Rz
LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xNdWx0aUNv
bnRleHRUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90
ZWdsTXVsdGlUaHJlYWRUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2VnbC90ZWdsTXVsdGlUaHJlYWRUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2VnbC90ZWdsTmF0aXZlQ29sb3JNYXBwaW5nVGVzdHMuY3BwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbE5hdGl2ZUNvbG9yTWFwcGluZ1Rl
c3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xOYXRp
dmVDb29yZE1hcHBpbmdUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2VnbC90ZWdsTmF0aXZlQ29vcmRNYXBwaW5nVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbE5lZ2F0aXZlQXBpVGVzdHMuY3BwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbE5lZ2F0aXZlQXBpVGVzdHMuaHBw
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbE5lZ2F0aXZlUGFy
dGlhbFVwZGF0ZVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
ZWdsL3RlZ2xOZWdhdGl2ZVBhcnRpYWxVcGRhdGVUZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsUHJlc2VydmluZ1N3YXBUZXN0cy5jcHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsUHJlc2VydmluZ1N3YXBUZXN0
cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsUGFydGlh
bFVwZGF0ZVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWds
L3RlZ2xQYXJ0aWFsVXBkYXRlVGVzdHMuaHBwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9lZ2wvdGVnbFF1ZXJ5Q29uZmlnVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbFF1ZXJ5Q29uZmlnVGVzdHMuaHBwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbFF1ZXJ5Q29udGV4dFRlc3RzLmNwcCcs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xRdWVyeUNvbnRleHRU
ZXN0cy5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsUXVl
cnlTdXJmYWNlVGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9l
Z2wvdGVnbFF1ZXJ5U3VyZmFjZVRlc3RzLmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZWdsL3RlZ2xSZW5kZXJDYXNlLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZWdsL3RlZ2xSZW5kZXJDYXNlLmhwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xSZW5kZXJUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsUmVuZGVyVGVzdHMuaHBwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbFJlc2l6ZVRlc3RzLmNwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xSZXNpemVUZXN0cy5ocHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsU2ltcGxlQ29uZmlnQ2FzZS5j
cHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsU2ltcGxlQ29u
ZmlnQ2FzZS5ocHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWds
U3VyZmFjZWxlc3NDb250ZXh0VGVzdHMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9lZ2wvdGVnbFN1cmZhY2VsZXNzQ29udGV4dFRlc3RzLmhwcCcsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xTd2FwQnVmZmVyc1Rlc3RzLmNwcCcsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xTd2FwQnVmZmVyc1Rlc3Rz
LmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xTd2FwQnVm
ZmVyc1dpdGhEYW1hZ2VUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2VnbC90ZWdsU3dhcEJ1ZmZlcnNXaXRoRGFtYWdlVGVzdHMuaHBwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbFN5bmNUZXN0cy5jcHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsU3luY1Rlc3RzLmhwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xUZXN0Q2FzZS5jcHAnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsVGVzdENhc2UuaHBwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbFRlc3RQYWNrYWdlLmNwcCcsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xUZXN0UGFja2FnZS5ocHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsVGVzdFBhY2thZ2VF
bnRyeS5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsVkdS
ZW5kZXJVdGlsLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3Rl
Z2xWR1JlbmRlclV0aWwuaHBwJywKKyAgICAgICAgXSwKKyAgICAgICAgJ2RlcXBfbGlidGVzdGVy
X2RlY3BwX3NvdXJjZXMnOgorICAgICAgICBbCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2Zy
YW1ld29yay9kZWxpYnMvZGVjcHAvZGVBcnJheUJ1ZmZlci5jcHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlY3BwL2RlQmxvY2tCdWZmZXIuY3BwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZWNwcC9kZUNvbW1hbmRM
aW5lLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVj
cHAvZGVEZWZzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxp
YnMvZGVjcHAvZGVEaXJlY3RvcnlJdGVyYXRvci5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlY3BwL2RlRHluYW1pY0xpYnJhcnkuY3BwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZWNwcC9kZUZpbGVQYXRoLmNw
cCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAvZGVN
ZW1Qb29sLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMv
ZGVjcHAvZGVNdXRleC5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsv
ZGVsaWJzL2RlY3BwL2RlUG9vbEFycmF5LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L2ZyYW1ld29yay9kZWxpYnMvZGVjcHAvZGVQb29sU3RyaW5nLmNwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAvZGVQcm9jZXNzLmNwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAvZGVSYW5kb20uY3Bw
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZWNwcC9kZVJp
bmdCdWZmZXIuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGli
cy9kZWNwcC9kZVNlbWFwaG9yZS5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFt
ZXdvcmsvZGVsaWJzL2RlY3BwL2RlU2hhcmVkUHRyLmNwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAvZGVTaGExLmNwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAvZGVTb2NrZXQuY3BwJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZWNwcC9kZVNUTFV0aWwuY3Bw
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZWNwcC9kZVN0
cmluZ1V0aWwuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGli
cy9kZWNwcC9kZVRocmVhZC5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdv
cmsvZGVsaWJzL2RlY3BwL2RlVGhyZWFkTG9jYWwuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZWNwcC9kZVRocmVhZFNhZmVSaW5nQnVmZmVyLmNwcCcs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAvZGVVbmlx
dWVQdHIuY3BwJywKKyAgICAgICAgXSwKKyAgICAgICAgJ2RlcXBfbGlidGVzdGVyX3NvdXJjZXMn
OgorICAgICAgICBbCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2V4ZWNzZXJ2ZXIveHNEZWZz
LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2V4ZWNzZXJ2ZXIveHNFeGVjdXRpb25T
ZXJ2ZXIuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZXhlY3NlcnZlci94c1Bvc2l4
RmlsZVJlYWRlci5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9leGVjc2VydmVyL3hz
UG9zaXhUZXN0UHJvY2Vzcy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9leGVjc2Vy
dmVyL3hzUHJvdG9jb2wuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZXhlY3NlcnZl
ci94c1RjcFNlcnZlci5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9leGVjc2VydmVy
L3hzVGVzdERyaXZlci5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9leGVjc2VydmVy
L3hzVGVzdFByb2Nlc3MuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZXhlY3V0b3Iv
eGVCYXRjaEV4ZWN1dG9yLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2V4ZWN1dG9y
L3hlQmF0Y2hSZXN1bHQuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZXhlY3V0b3Iv
eGVDYWxsUXVldWUuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZXhlY3V0b3IveGVD
b21tTGluay5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9leGVjdXRvci94ZUNvbnRh
aW5lckZvcm1hdFBhcnNlci5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9leGVjdXRv
ci94ZURlZnMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZXhlY3V0b3IveGVMb2Nh
bFRjcElwTGluay5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9leGVjdXRvci94ZVRj
cElwTGluay5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9leGVjdXRvci94ZVRlc3RD
YXNlLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2V4ZWN1dG9yL3hlVGVzdENhc2VM
aXN0UGFyc2VyLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2V4ZWN1dG9yL3hlVGVz
dENhc2VSZXN1bHQuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZXhlY3V0b3IveGVU
ZXN0TG9nUGFyc2VyLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2V4ZWN1dG9yL3hl
VGVzdExvZ1dyaXRlci5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9leGVjdXRvci94
ZVRlc3RSZXN1bHRQYXJzZXIuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZXhlY3V0
b3IveGVYTUxQYXJzZXIuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZXhlY3V0b3Iv
eGVYTUxXcml0ZXIuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2Nv
bW1vbi90Y3VBcHAuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2Nv
bW1vbi90Y3VBc3RjVXRpbC5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdv
cmsvY29tbW9uL3RjdUJpbGluZWFySW1hZ2VDb21wYXJlLmNwcCcsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL2ZyYW1ld29yay9jb21tb24vdGN1Q29tbWFuZExpbmUuY3BwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1vbi90Y3VDb21wcmVzc2VkVGV4dHVyZS5j
cHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdUNQVVdh
cm11cC5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3Rj
dURlZnMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1vbi90
Y3VFaXRoZXIuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1v
bi90Y3VGYWN0b3J5UmVnaXN0cnkuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJh
bWV3b3JrL2NvbW1vbi90Y3VGbG9hdEZvcm1hdC5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdUZ1bmN0aW9uTGlicmFyeS5jcHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdUZ1enp5SW1hZ2VDb21wYXJlLmNw
cCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9jb21tb24vdGN1SW1hZ2VD
b21wYXJlLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9jb21tb24v
dGN1SW1hZ2VJTy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29t
bW9uL3RjdUludGVydmFsLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29y
ay9jb21tb24vdGN1UGxhdGZvcm0uY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJh
bWV3b3JrL2NvbW1vbi90Y3VSYW5kb21WYWx1ZUl0ZXJhdG9yLmNwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL2ZyYW1ld29yay9jb21tb24vdGN1UmVuZGVyVGFyZ2V0LmNwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9jb21tb24vdGN1UmVzb3VyY2UuY3BwJywK
KyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1vbi90Y3VSZXN1bHRDb2xs
ZWN0b3IuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1vbi90
Y3VSR0JBLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9jb21tb24v
dGN1U3RyaW5nVGVtcGxhdGUuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3
b3JrL2NvbW1vbi90Y3VTdXJmYWNlLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2Zy
YW1ld29yay9jb21tb24vdGN1VGVzdENhc2UuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvZnJhbWV3b3JrL2NvbW1vbi90Y3VUZXN0Q29udGV4dC5jcHAnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdVRlc3RIaWVyYXJjaHlJdGVyYXRvci5jcHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdVRlc3RIaWVy
YXJjaHlVdGlsLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9jb21t
b24vdGN1VGVzdExvZy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsv
Y29tbW9uL3RjdVRlc3RQYWNrYWdlLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2Zy
YW1ld29yay9jb21tb24vdGN1VGVzdFNlc3Npb25FeGVjdXRvci5jcHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdVRleENvbXBhcmVWZXJpZmllci5jcHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdVRleExvb2t1
cFZlcmlmaWVyLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9jb21t
b24vdGN1VGV4dHVyZS5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsv
Y29tbW9uL3RjdVRleHR1cmVVdGlsLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2Zy
YW1ld29yay9jb21tb24vdGN1VGV4VmVyaWZpZXJVdGlsLmNwcCcsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL2ZyYW1ld29yay9jb21tb24vdGN1VGhyZWFkVXRpbC5jcHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdVNlZWRCdWlsZGVyLmNwcCcsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGViYXNlL2RlRGVmcy5j
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZWJhc2UvZGVG
bG9hdDE2LmMnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2Rl
YmFzZS9kZUludDMyLmMnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVs
aWJzL2RlYmFzZS9kZUludDMyVGVzdC5jJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJh
bWV3b3JrL2RlbGlicy9kZWJhc2UvZGVNYXRoLmMnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9mcmFtZXdvcmsvZGVsaWJzL2RlYmFzZS9kZU1lbW9yeS5jJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZWJhc2UvZGVSYW5kb20uYycsCisgICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGViYXNlL2RlU3RyaW5nLmMnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlYmFzZS9kZVNoYTEuYycs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVpbWFnZS9kZUlt
YWdlLmMnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlaW1h
Z2UvZGVUYXJnYS5jJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGli
cy9kZXBvb2wvZGVNZW1Qb29sLmMnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdv
cmsvZGVsaWJzL2RlcG9vbC9kZVBvb2xBcnJheS5jJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvZnJhbWV3b3JrL2RlbGlicy9kZXBvb2wvZGVQb29sSGFzaEFycmF5LmMnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlcG9vbC9kZVBvb2xIYXNoLmMnLAor
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlcG9vbC9kZVBvb2xI
YXNoU2V0LmMnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2Rl
cG9vbC9kZVBvb2xIZWFwLmMnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsv
ZGVsaWJzL2RlcG9vbC9kZVBvb2xNdWx0aVNldC5jJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvZnJhbWV3b3JrL2RlbGlicy9kZXBvb2wvZGVQb29sU2V0LmMnLAorICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlcG9vbC9kZVBvb2xTdHJpbmdCdWlsZGVyLmMn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlcG9vbC9kZVBv
b2xUZXN0LmMnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2Rl
c3RyZWFtL2RlRmlsZVN0cmVhbS5jJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3
b3JrL2RlbGlicy9kZXN0cmVhbS9kZVJpbmdidWZmZXIuYycsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVzdHJlYW0vZGVTdHJlYW1DcHlUaHJlYWQuYycsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVzdHJlYW0vZGVUaHJl
YWRTdHJlYW0uYycsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMv
ZGV0aHJlYWQvZGVBdG9taWMuYycsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29y
ay9kZWxpYnMvZGV0aHJlYWQvZGVTaW5nbGV0b24uYycsCisgICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL2ZyYW1ld29yay9kZWxpYnMvZGV0aHJlYWQvZGVUaHJlYWRUZXN0LmMnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RldXRpbC9kZUNsb2NrLmMnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RldXRpbC9kZUNvbW1hbmRM
aW5lLmMnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RldXRp
bC9kZUR5bmFtaWNMaWJyYXJ5LmMnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdv
cmsvZGVsaWJzL2RldXRpbC9kZUZpbGUuYycsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2Zy
YW1ld29yay9kZWxpYnMvZGV1dGlsL2RlUHJvY2Vzcy5jJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZXV0aWwvZGVTb2NrZXQuYycsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGV1dGlsL2RlVGltZXIuYycsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGV1dGlsL2RlVGltZXJUZXN0LmMn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZWdsL2VnbHVDYWxsTG9nV3Jh
cHBlci5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZWdsL2VnbHVD
b25maWdGaWx0ZXIuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2Vn
bC9lZ2x1Q29uZmlnSW5mby5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdv
cmsvZWdsL2VnbHVEZWZzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29y
ay9lZ2wvZWdsdUdMQ29udGV4dEZhY3RvcnkuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvZnJhbWV3b3JrL2VnbC9lZ2x1R0xGdW5jdGlvbkxvYWRlci5jcHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZWdsL2VnbHVHTFV0aWwuY3BwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2VnbC9lZ2x1TmF0aXZlRGlzcGxheS5jcHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZWdsL2VnbHVOYXRpdmVQaXhtYXAuY3Bw
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2VnbC9lZ2x1TmF0aXZlV2lu
ZG93LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9lZ2wvZWdsdVBs
YXRmb3JtLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9lZ2wvZWds
dVN0YXRpY0VTTGlicmFyeS5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdv
cmsvZWdsL2VnbHVTdHJVdGlsLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1l
d29yay9lZ2wvZWdsdVVuaXF1ZS5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFt
ZXdvcmsvZWdsL2VnbHVVdGlsLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1l
d29yay9lZ2wvd3JhcHBlci9lZ2x3RGVmcy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9mcmFtZXdvcmsvZWdsL3dyYXBwZXIvZWdsd0Z1bmN0aW9ucy5jcHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZWdsL3dyYXBwZXIvZWdsd0xpYnJhcnkuY3BwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbC9nbHVDYWxsTG9nV3JhcHBl
ci5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL2dsdUNv
bnRleHRGYWN0b3J5LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9v
cGVuZ2wvZ2x1Q29udGV4dEluZm8uY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJh
bWV3b3JrL29wZW5nbC9nbHVEZWZzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2Zy
YW1ld29yay9vcGVuZ2wvZ2x1RHJhd1V0aWwuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvZnJhbWV3b3JrL29wZW5nbC9nbHVEdW1teVJlbmRlckNvbnRleHQuY3BwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbC9nbHVFUzNQbHVzV3JhcHBlckNvbnRl
eHQuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbC9nbHVG
Ym9SZW5kZXJDb250ZXh0LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29y
ay9vcGVuZ2wvZ2x1T2JqZWN0V3JhcHBlci5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9mcmFtZXdvcmsvb3BlbmdsL2dsdVBpeGVsVHJhbnNmZXIuY3BwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbC9nbHVQbGF0Zm9ybS5jcHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL2dsdVByb2dyYW1JbnRlcmZhY2VRdWVy
eS5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL2dsdVJl
bmRlckNvbmZpZy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3Bl
bmdsL2dsdVJlbmRlckNvbnRleHQuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJh
bWV3b3JrL29wZW5nbC9nbHVTaGFkZXJMaWJyYXJ5LmNwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL2ZyYW1ld29yay9vcGVuZ2wvZ2x1U2hhZGVyUHJvZ3JhbS5jcHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL2dsdVNoYWRlclV0aWwuY3BwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbC9nbHVTdGF0ZVJlc2V0LmNw
cCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9vcGVuZ2wvZ2x1U3RyVXRp
bC5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL2dsdVRl
eHR1cmUuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbC9n
bHVUZXh0dXJlVXRpbC5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsv
b3BlbmdsL2dsdVZhclR5cGUuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3
b3JrL29wZW5nbC9nbHVWYXJUeXBlVXRpbC5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9mcmFtZXdvcmsvb3BlbmdsL3NpbXBsZXJlZmVyZW5jZS9zZ2xyQ29udGV4dC5jcHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL3NpbXBsZXJlZmVyZW5jZS9z
Z2xyQ29udGV4dFV0aWwuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3Jr
L29wZW5nbC9zaW1wbGVyZWZlcmVuY2Uvc2dsckNvbnRleHRXcmFwcGVyLmNwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9vcGVuZ2wvc2ltcGxlcmVmZXJlbmNlL3NnbHJH
TENvbnRleHQuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5n
bC9zaW1wbGVyZWZlcmVuY2Uvc2dsclJlZmVyZW5jZUNvbnRleHQuY3BwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbC9zaW1wbGVyZWZlcmVuY2Uvc2dsclJlZmVy
ZW5jZVV0aWxzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9vcGVu
Z2wvc2ltcGxlcmVmZXJlbmNlL3NnbHJTaGFkZXJQcm9ncmFtLmNwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL2ZyYW1ld29yay9vcGVuZ2wvd3JhcHBlci9nbHdEZWZzLmNwcCcsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9vcGVuZ2wvd3JhcHBlci9nbHdGdW5jdGlv
bnMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbC93cmFw
cGVyL2dsd0luaXRFUzIwRGlyZWN0LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2Zy
YW1ld29yay9vcGVuZ2wvd3JhcHBlci9nbHdJbml0RVMzMERpcmVjdC5jcHAnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL3dyYXBwZXIvZ2x3SW5pdEZ1bmN0aW9u
cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL3dyYXBw
ZXIvZ2x3V3JhcHBlci5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsv
cGxhdGZvcm0vbnVsbC90Y3VOdWxsQ29udGV4dEZhY3RvcnkuY3BwJywKKyAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3BsYXRmb3JtL251bGwvdGN1TnVsbENvbnRleHRGYWN0b3J5
LmhwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9wbGF0Zm9ybS9udWxs
L3RjdU51bGxSZW5kZXJDb250ZXh0LmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2Zy
YW1ld29yay9xcGhlbHBlci9xcENyYXNoSGFuZGxlci5jJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvZnJhbWV3b3JrL3FwaGVscGVyL3FwRGVidWdPdXQuYycsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL2ZyYW1ld29yay9xcGhlbHBlci9xcEluZm8uYycsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL2ZyYW1ld29yay9xcGhlbHBlci9xcFRlc3RMb2cuYycsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL2ZyYW1ld29yay9xcGhlbHBlci9xcFdhdGNoRG9nLmMnLAorICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcXBoZWxwZXIvcXBYbWxXcml0ZXIuYycsCisgICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9yYW5kb21zaGFkZXJzL3JzZ0JpbmFyeU9w
cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcmFuZG9tc2hhZGVy
cy9yc2dCdWlsdGluRnVuY3Rpb25zLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2Zy
YW1ld29yay9yYW5kb21zaGFkZXJzL3JzZ0RlZnMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvZnJhbWV3b3JrL3JhbmRvbXNoYWRlcnMvcnNnRXhlY3V0aW9uQ29udGV4dC5jcHAnLAor
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcmFuZG9tc2hhZGVycy9yc2dFeHBy
ZXNzaW9uLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9yYW5kb21z
aGFkZXJzL3JzZ0V4cHJlc3Npb25HZW5lcmF0b3IuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvZnJhbWV3b3JrL3JhbmRvbXNoYWRlcnMvcnNnRnVuY3Rpb25HZW5lcmF0b3IuY3BwJywK
KyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3JhbmRvbXNoYWRlcnMvcnNnR2Vu
ZXJhdG9yU3RhdGUuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3Jh
bmRvbXNoYWRlcnMvcnNnTmFtZUFsbG9jYXRvci5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9mcmFtZXdvcmsvcmFuZG9tc2hhZGVycy9yc2dQYXJhbWV0ZXJzLmNwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9yYW5kb21zaGFkZXJzL3JzZ1ByZXR0eVByaW50
ZXIuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3JhbmRvbXNoYWRl
cnMvcnNnUHJvZ3JhbUV4ZWN1dG9yLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2Zy
YW1ld29yay9yYW5kb21zaGFkZXJzL3JzZ1Byb2dyYW1HZW5lcmF0b3IuY3BwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3JhbmRvbXNoYWRlcnMvcnNnU2FtcGxlcnMuY3Bw
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3JhbmRvbXNoYWRlcnMvcnNn
U2hhZGVyLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9yYW5kb21z
aGFkZXJzL3JzZ1NoYWRlckdlbmVyYXRvci5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9mcmFtZXdvcmsvcmFuZG9tc2hhZGVycy9yc2dTdGF0ZW1lbnQuY3BwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3JhbmRvbXNoYWRlcnMvcnNnVG9rZW4uY3BwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3JhbmRvbXNoYWRlcnMvcnNnVXRpbHMu
Y3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3JhbmRvbXNoYWRlcnMv
cnNnVmFyaWFibGUuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3Jh
bmRvbXNoYWRlcnMvcnNnVmFyaWFibGVNYW5hZ2VyLmNwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL2ZyYW1ld29yay9yYW5kb21zaGFkZXJzL3JzZ1ZhcmlhYmxlVHlwZS5jcHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcmFuZG9tc2hhZGVycy9yc2dWYXJpYWJs
ZVZhbHVlLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9yZWZlcmVu
Y2VyZW5kZXJlci9yckRlZnMuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3
b3JrL3JlZmVyZW5jZXJlbmRlcmVyL3JyRnJhZ21lbnRPcGVyYXRpb25zLmNwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9yZWZlcmVuY2VyZW5kZXJlci9yck11bHRpc2Ft
cGxlUGl4ZWxCdWZmZXJBY2Nlc3MuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJh
bWV3b3JrL3JlZmVyZW5jZXJlbmRlcmVyL3JyUHJpbWl0aXZlUGFja2V0LmNwcCcsCisgICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9yZWZlcmVuY2VyZW5kZXJlci9yclJhc3Rlcml6
ZXIuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3JlZmVyZW5jZXJl
bmRlcmVyL3JyUmVuZGVyZXIuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3
b3JrL3JlZmVyZW5jZXJlbmRlcmVyL3JyU2hhZGVycy5jcHAnLAorICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9mcmFtZXdvcmsvcmVmZXJlbmNlcmVuZGVyZXIvcnJTaGFkaW5nQ29udGV4dC5jcHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcmVmZXJlbmNlcmVuZGVyZXIv
cnJWZXJ0ZXhBdHRyaWIuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3Jr
L3JlZmVyZW5jZXJlbmRlcmVyL3JyVmVydGV4UGFja2V0LmNwcCcsCisgICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xzaGFyZWQvZ2xzQXR0cmlidXRlTG9jYXRpb25UZXN0cy5jcHAn
LAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2dsc0J1ZmZlclRl
c3RVdGlsLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xzaGFyZWQv
Z2xzQnVpbHRpblByZWNpc2lvblRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xzaGFyZWQvZ2xzQ2FsaWJyYXRpb24uY3BwJywKKyAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbHNoYXJlZC9nbHNEcmF3VGVzdC5jcHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2dsc0Zib0NvbXBsZXRlbmVzc1Rlc3RzLmNw
cCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xzaGFyZWQvZ2xzRmJvVXRp
bC5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2dsc0Zy
YWdtZW50T3BVdGlsLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xz
aGFyZWQvZ2xzRnJhZ09wSW50ZXJhY3Rpb25DYXNlLmNwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xzaGFyZWQvZ2xzSW50ZXJhY3Rpb25UZXN0VXRpbC5jcHAnLAorICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2dsc0xpZmV0aW1lVGVzdHMu
Y3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbHNoYXJlZC9nbHNMb25n
U3RyZXNzQ2FzZS5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hh
cmVkL2dsc0xvbmdTdHJlc3NUZXN0VXRpbC5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsc2hhcmVkL2dsc01lbW9yeVN0cmVzc0Nhc2UuY3BwJywKKyAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbHNoYXJlZC9nbHNSYW5kb21TaGFkZXJDYXNlLmNwcCcs
CisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xzaGFyZWQvZ2xzUmFuZG9tU2hh
ZGVyUHJvZ3JhbS5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hh
cmVkL2dsc1JhbmRvbVVuaWZvcm1CbG9ja0Nhc2UuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbHNoYXJlZC9nbHNSYXN0ZXJpemF0aW9uVGVzdFV0aWwuY3BwJywKKyAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbHNoYXJlZC9nbHNTYW1wbGVyT2JqZWN0
VGVzdC5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2ds
c1NjaXNzb3JUZXN0cy5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
c2hhcmVkL2dsc1NoYWRlckNvbnN0RXhwclRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xzaGFyZWQvZ2xzU2hhZGVyRXhlY1V0aWwuY3BwJywKKyAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbHNoYXJlZC9nbHNTaGFkZXJMaWJyYXJ5Q2FzZS5j
cHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2dsc1NoYWRl
ckxpYnJhcnkuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbHNoYXJl
ZC9nbHNTaGFkZXJQZXJmb3JtYW5jZUNhc2UuY3BwJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbHNoYXJlZC9nbHNTaGFkZXJQZXJmb3JtYW5jZU1lYXN1cmVyLmNwcCcsCisg
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xzaGFyZWQvZ2xzU2hhZGVyUmVuZGVy
Q2FzZS5jcHAnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2ds
c1N0YXRlUXVlcnlVdGlsLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xzaGFyZWQvZ2xzU3RhdGVDaGFuZ2VQZXJmVGVzdENhc2VzLmNwcCcsCisgICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xzaGFyZWQvZ2xzVGV4dHVyZUJ1ZmZlckNhc2UuY3BwJywK
KyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbHNoYXJlZC9nbHNUZXh0dXJlU3Rh
dGVRdWVyeVRlc3RzLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xz
aGFyZWQvZ2xzVGV4dHVyZVRlc3RVdGlsLmNwcCcsCisgICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xzaGFyZWQvZ2xzVW5pZm9ybUJsb2NrQ2FzZS5jcHAnLAorICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2dsc1ZlcnRleEFycmF5VGVzdHMuY3BwJywK
KyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvdGN1QU5H
TEVOYXRpdmVEaXNwbGF5RmFjdG9yeS5jcHAnLAorICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkv
c3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC90Y3VBTkdMRU5hdGl2ZURpc3BsYXlGYWN0b3J5LmgnLAor
ICAgICAgICAgICAgIyBUT0RPKGptYWRpbGwpOiBpbnRlZ3JhdGUgd2l0aCBkRVFQCisgICAgICAg
ICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L3RjdVJhbmRvbU9yZGVy
RXhlY3V0b3IuY3BwJywKKyAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9kZXFw
X3N1cHBvcnQvdGN1UmFuZG9tT3JkZXJFeGVjdXRvci5oJywKKyAgICAgICAgXSwKKyAgICAgICAg
J2RlcXBfbGlidGVzdGVyX3NvdXJjZXNfd2luJzoKKyAgICAgICAgWworICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RldGhyZWFkL3dpbjMyL2RlTXV0ZXhXaW4zMi5j
JywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZXRocmVhZC93
aW4zMi9kZVNlbWFwaG9yZVdpbjMyLmMnLAorICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFt
ZXdvcmsvZGVsaWJzL2RldGhyZWFkL3dpbjMyL2RlVGhyZWFkTG9jYWxXaW4zMi5jJywKKyAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZXRocmVhZC93aW4zMi9kZVRo
cmVhZFdpbjMyLmMnLAorICAgICAgICBdLAorICAgICAgICAnZGVxcF9saWJ0ZXN0ZXJfc291cmNl
c191bml4JzoKKyAgICAgICAgWworICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsv
ZGVsaWJzL2RldGhyZWFkL3VuaXgvZGVNdXRleFVuaXguYycsCisgICAgICAgICAgICAnPChkZXFw
X3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGV0aHJlYWQvdW5peC9kZU5hbWVkU2VtYXBob3JlVW5p
eC5jJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZXRocmVh
ZC91bml4L2RlU2VtYXBob3JlVW5peC5jJywKKyAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJh
bWV3b3JrL2RlbGlicy9kZXRocmVhZC91bml4L2RlVGhyZWFkTG9jYWxVbml4LmMnLAorICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RldGhyZWFkL3VuaXgvZGVUaHJl
YWRVbml4LmMnLAorICAgICAgICBdLAorICAgICAgICAnZGVxcF9ncHVfdGVzdF9leHBlY3RhdGlv
bnNfc291cmNlcyc6CisgICAgICAgIFsKKyAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9ncHVfdGVz
dF9leHBlY3RhdGlvbnMvZ3B1X2luZm8uY2MnLAorICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L2dw
dV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfaW5mby5oJywKKyAgICAgICAgICAgICd0aGlyZF9wYXJ0
eS9ncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X3Rlc3RfY29uZmlnLmNjJywKKyAgICAgICAgICAg
ICd0aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X3Rlc3RfY29uZmlnLmgnLAor
ICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9l
eHBlY3RhdGlvbnNfcGFyc2VyLmNjJywKKyAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9ncHVfdGVz
dF9leHBlY3RhdGlvbnMvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3BhcnNlci5oJywKKyAgICAgICAg
XSwKKyAgICAgICAgJ2NvbmRpdGlvbnMnOgorICAgICAgICBbCisgICAgICAgICAgICBbJyhPUz09
IndpbiIgb3IgT1M9PSJsaW51eCIgb3IgT1M9PSJtYWMiKScsCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgIyBCdWlsZCB0aGUgZEVRUCBsaWJyYXJpZXMgZm9yIGFsbCBXaW5kb3dzL0xp
bnV4IGJ1aWxkcworICAgICAgICAgICAgICAgICdhbmdsZV9idWlsZF9kZXFwX2xpYnJhcmllcyUn
OiAxLAorICAgICAgICAgICAgfV0sCisgICAgICAgICAgICBbJygoT1M9PSJ3aW4iIG9yIE9TPT0i
bGludXgiIG9yIE9TPT0ibWFjIikgYW5kIGFuZ2xlX2J1aWxkX3dpbnJ0PT0wKScsCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgIyBCdWlsZCB0aGUgZEVRUCBHb29nbGVUZXN0IHN1cHBv
cnQgaGVscGVycyBmb3IgYWxsIFdpbmRvd3MvTGludXggYnVpbGRzIGV4Y2VwdCBXaW5SVAorICAg
ICAgICAgICAgICAgICMgR29vZ2xlVGVzdCBkb2Vzbid0IHN1cHBvcnQgV2luUlQKKyAgICAgICAg
ICAgICAgICAnYW5nbGVfYnVpbGRfZGVxcF9ndGVzdF9zdXBwb3J0JSc6IDEsCisgICAgICAgICAg
ICB9XSwKKyAgICAgICAgICAgIFsnKChPUz09IndpbiIgb3IgT1M9PSJsaW51eCIgb3IgT1M9PSJt
YWMiKSBhbmQgYW5nbGVfYnVpbGRfd2lucnQ9PTApJywKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAjIEJ1aWxkIHRoZSBkRVFQIGV4ZWN1dGFibGVzIGZvciBhbGwgc3RhbmRhbG9uZSBX
aW5kb3dzL0xpbnV4IGJ1aWxkcyBleGNlcHQgV2luUlQKKyAgICAgICAgICAgICAgICAjIEdZUCBk
b2Vzbid0IHN1cHBvcnQgZ2VuZXJhdGluZyBzdGFuZGFsb25lIFdpblJUIGV4ZWN1dGFibGVzCisg
ICAgICAgICAgICAgICAgJ2FuZ2xlX2J1aWxkX2RlcXBfZXhlY3V0YWJsZXMlJzogMSwKKworICAg
ICAgICAgICAgICAgICMgQnVpbGQgdGhlIEdvb2dsZVRlc3QgdmVyc2lvbnMgb2YgZEVRUCBmb3Ig
YWxsIHN0YW5kYWxvbmUgV2luZG93cy9MaW51eCBidWlsZHMgZXhjZXB0IFdpblJUCisgICAgICAg
ICAgICAgICAgIyBHb29nbGVUZXN0IGRvZXNuJ3Qgc3VwcG9ydCBXaW5SVAorICAgICAgICAgICAg
ICAgICdhbmdsZV9idWlsZF9kZXFwX2d0ZXN0X2V4ZWN1dGFibGVzJSc6IDEsCisgICAgICAgICAg
ICB9XSwKKyAgICAgICAgICAgIFsnT1M9PSJsaW51eCIgYW5kIHVzZV94MTE9PTEnLAorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICdkZXFwX2luY2x1ZGVfZGlycyc6CisgICAgICAgICAg
ICAgICAgWworICAgICAgICAgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9wbGF0
Zm9ybS94MTEnLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICB9XSwKKyAgICAgICAg
ICAgIFsnT1M9PSJsaW51eCInLAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICdkZXFw
X2RlZmluZXMnOgorICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgIyBBc2sg
dGhlIHN5c3RlbSBoZWFkZXJzIHRvIGV4cG9zZSBhbGwgdGhlIHJlZ3VsYXIgZnVuY3Rpb24gb3Ro
ZXJ3aXNlCisgICAgICAgICAgICAgICAgICAgICMgZEVRUCBkb2Vzbid0IGNvbXBpbGUgYW5kIHBy
b2R1Y2VzIHdhcm5pbmdzIGFib3V0IGltcGxpY2l0bHkgZGVmaW5lZAorICAgICAgICAgICAgICAg
ICAgICAjIGZ1bmN0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGhhcyB0byBiZSBH
TlVfU09VUkNFIGFzIG9uIExpbnV4IGRFUVAgdXNlcyBzeXNjYWxsKCkKKyAgICAgICAgICAgICAg
ICAgICAgJ19HTlVfU09VUkNFJywKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgfV0s
CisgICAgICAgICAgICBbJ09TPT0ibWFjIicsCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgJ2RlcXBfaW5jbHVkZV9kaXJzJzoKKyAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3BsYXRmb3JtL29zeCcsCisgICAgICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgICAgICAnZGVxcF9kZWZpbmVzJzoKKyAgICAgICAgICAgICAg
ICBbCisgICAgICAgICAgICAgICAgICAgICMgQXNrIHRoZSBzeXN0ZW0gaGVhZGVycyB0byBleHBv
c2UgYWxsIHRoZSByZWd1bGFyIGZ1bmN0aW9uIG90aGVyd2lzZQorICAgICAgICAgICAgICAgICAg
ICAjIGRFUVAgZG9lc24ndCBjb21waWxlIGFuZCBwcm9kdWNlcyB3YXJuaW5ncyBhYm91dCBpbXBs
aWNpdGx5IGRlZmluZWQKKyAgICAgICAgICAgICAgICAgICAgIyBmdW5jdGlvbnMuCisgICAgICAg
ICAgICAgICAgICAgICdfWE9QRU5fU09VUkNFPTYwMCcsCisgICAgICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgIH1dLAorICAgICAgICAgICAgWyd1c2Vfb3pvbmU9PTEnLAorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICdkZXFwX2RlZmluZXMnOgorICAgICAgICAgICAgICAgIFsKKyAg
ICAgICAgICAgICAgICAgICAgJ0FOR0xFX1VTRV9PWk9ORScsCisgICAgICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgIH1dLAorICAgICAgICBdLAorICAgIH0sCisgICAgJ2NvbmRpdGlvbnMnOgor
ICAgIFsKKyAgICAgICAgWydhbmdsZV9idWlsZF9kZXFwX2xpYnJhcmllcz09MScsCisgICAgICAg
IHsKKyAgICAgICAgICAgICd0YXJnZXRzJzoKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV96bGliJywKKyAg
ICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnc3RhdGljX2xpYnJhcnknLAorICAgICAgICAgICAg
ICAgICAgICAnaW5jbHVkZXMnOiBbICcuLi8uLi9idWlsZC9jb21tb25fZGVmaW5lcy5neXBpJywg
XSwKKyAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6CisgICAgICAgICAgICAgICAg
ICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICc8KHpsaWJfcGF0aCknLAorICAgICAgICAg
ICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAnZGlyZWN0X2RlcGVuZGVudF9zZXR0
aW5ncyc6CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICdp
bmNsdWRlX2RpcnMnOgorICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICc8KHpsaWJfcGF0aCknLAorICAgICAgICAgICAgICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgJ21zdnNfc2V0dGlu
Z3MnOgorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAnVkND
TENvbXBpbGVyVG9vbCc6CisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ0FkZGl0aW9uYWxPcHRpb25zJzoKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvd2Q0MTMxJywgIyBv
bGQtc3R5bGUgZGVjbGFyYXRvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL3dk
NDI0NCcsICMgQ29udmVyc2lvbiBmcm9tICd0eXBlMScgdG8gJ3R5cGUyJywgcG9zc2libGUgbG9z
cyBvZiBkYXRhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvd2Q0MzI0JywgIyBz
dHJ1Y3R1cmUgd2FzIHBhZGRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL3dk
NDcwMScsICMgcG90ZW50aWFsbHkgdW5pbml0IHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJy93ZDQ5OTYnLCAjIGRlcHJlY2F0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOgorICAgICAgICAgICAgICAgICAg
ICBbCisgICAgICAgICAgICAgICAgICAgICAgICBbJ2FuZ2xlX2J1aWxkX3dpbnJ0PT0xJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIElu
IHpsaWIsIGRlZmxhdGUuYy9pbnNlcnRfc3RyaW5nX3NzZSBhc3N1bWVzIF9NU0NfVkVSIGlzIG9u
bHkgdXNlZCBmb3IgeDg2IG9yIHg2NAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVG8g
Y29tcGlsZSB0aGlzIGZ1bmN0aW9uIGZvciBBUk0gdXNpbmcgTVNDLCB3ZSB0cmljayBpdCBieSBk
ZWZpbmluZyBfX2NsYW5nX18KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIF9fY2xhbmdf
XyBpc24ndCB1c2VkIGVsc2V3aGVyZSB6bGliLCBzbyB0aGlzIHdvcmthcm91bmQgc2hvdWxkbid0
IGltcGFjdCBhbnl0aGluZyBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmlu
ZXMnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ19fY2xhbmdfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIH1dLAorICAgICAgICAgICAgICAgICAgICBdLAorICAg
ICAgICAgICAgICAgICAgICAnc291cmNlcyc6CisgICAgICAgICAgICAgICAgICAgIFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICc8KHpsaWJfcGF0aCkvYWRsZXIzMi5jJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICc8KHpsaWJfcGF0aCkvY29tcHJlc3MuYycsCisgICAgICAgICAgICAgICAg
ICAgICAgICAnPCh6bGliX3BhdGgpL2NyYzMyLmMnLAorICAgICAgICAgICAgICAgICAgICAgICAg
JzwoemxpYl9wYXRoKS9jcmMzMi5oJywKKyAgICAgICAgICAgICAgICAgICAgICAgICc8KHpsaWJf
cGF0aCkvZGVmbGF0ZS5jJywKKyAgICAgICAgICAgICAgICAgICAgICAgICc8KHpsaWJfcGF0aCkv
ZGVmbGF0ZS5oJywKKyAgICAgICAgICAgICAgICAgICAgICAgICc8KHpsaWJfcGF0aCkvZ3pjbG9z
ZS5jJywKKyAgICAgICAgICAgICAgICAgICAgICAgICc8KHpsaWJfcGF0aCkvZ3pndXRzLmgnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgJzwoemxpYl9wYXRoKS9nemxpYi5jJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICc8KHpsaWJfcGF0aCkvZ3pyZWFkLmMnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgJzwoemxpYl9wYXRoKS9nendyaXRlLmMnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgJzwoemxpYl9wYXRoKS9pbmZiYWNrLmMnLAorICAgICAgICAgICAgICAgICAgICAgICAgJzwo
emxpYl9wYXRoKS9pbmZmYXN0LmMnLAorICAgICAgICAgICAgICAgICAgICAgICAgJzwoemxpYl9w
YXRoKS9pbmZmYXN0LmgnLAorICAgICAgICAgICAgICAgICAgICAgICAgJzwoemxpYl9wYXRoKS9p
bmZmaXhlZC5oJywKKyAgICAgICAgICAgICAgICAgICAgICAgICc8KHpsaWJfcGF0aCkvaW5mbGF0
ZS5jJywKKyAgICAgICAgICAgICAgICAgICAgICAgICc8KHpsaWJfcGF0aCkvaW5mbGF0ZS5oJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICc8KHpsaWJfcGF0aCkvaW5mdHJlZXMuYycsCisgICAg
ICAgICAgICAgICAgICAgICAgICAnPCh6bGliX3BhdGgpL2luZnRyZWVzLmgnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgJzwoemxpYl9wYXRoKS9tb3p6Y29uZi5oJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICc8KHpsaWJfcGF0aCkvdHJlZXMuYycsCisgICAgICAgICAgICAgICAgICAgICAg
ICAnPCh6bGliX3BhdGgpL3RyZWVzLmgnLAorICAgICAgICAgICAgICAgICAgICAgICAgJzwoemxp
Yl9wYXRoKS91bmNvbXByLmMnLAorICAgICAgICAgICAgICAgICAgICAgICAgJzwoemxpYl9wYXRo
KS94ODYuaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAnPCh6bGliX3BhdGgpL3pjb25mLmgn
LAorICAgICAgICAgICAgICAgICAgICAgICAgJzwoemxpYl9wYXRoKS96bGliLmgnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgJzwoemxpYl9wYXRoKS96dXRpbC5jJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICc8KHpsaWJfcGF0aCkvenV0aWwuaCcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAnPCh6bGliX3BhdGgpL3NpbWRfc3R1Yi5jJywKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAndGFyZ2V0X25hbWUnOiAnYW5nbGVfbGlicG5nJywKKyAgICAgICAgICAgICAgICAgICAgJ3R5
cGUnOiAnc3RhdGljX2xpYnJhcnknLAorICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZXMnOiBb
ICcuLi8uLi9idWlsZC9jb21tb25fZGVmaW5lcy5neXBpJywgXSwKKyAgICAgICAgICAgICAgICAg
ICAgJ2RlcGVuZGVuY2llcyc6CisgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICdhbmdsZV96bGliJworICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgICAgICAgICAnbXN2c19zZXR0aW5ncyc6CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICdWQ0NMQ29tcGlsZXJUb29sJzoKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWRkaXRpb25hbE9wdGlvbnMn
OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJy93ZDQwMTgnLCAjIHNpZ25lZC91bnNpZ25lZCBtaXNtYXRjaAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnL3dkNDAyOCcsICMgcGFyYW1ldGVyIGRpZmZlcnMgZnJv
bSBkZWNsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvd2Q0MTAxJywgIyB1bnJl
ZmVyZW5jZWQgbG9jYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy93ZDQxODkn
LCAjIHVucmVmZXJlbmNlZCBidXQgaW5pdHRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnL3dkNDI0NCcsICMgQ29udmVyc2lvbiBmcm9tICd0eXBlMScgdG8gJ3R5cGUyJywgcG9z
c2libGUgbG9zcyBvZiBkYXRhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvd2Q0
MjY3JywgIyBDb252ZXJzaW9uIGZyb20gJ3NpemVfdCcgdG8gJ3R5cGUnLCBwb3NzaWJsZSBsb3Nz
IG9mIGRhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAg
J3NvdXJjZXMnOgorICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAg
ICAnPChsaWJwbmdfcGF0aCkvcG5nLmMnLAorICAgICAgICAgICAgICAgICAgICAgICAgJzwobGli
cG5nX3BhdGgpL3BuZ2Vycm9yLmMnLAorICAgICAgICAgICAgICAgICAgICAgICAgJzwobGlicG5n
X3BhdGgpL3BuZ2dldC5jJywKKyAgICAgICAgICAgICAgICAgICAgICAgICc8KGxpYnBuZ19wYXRo
KS9wbmdtZW0uYycsCisgICAgICAgICAgICAgICAgICAgICAgICAnPChsaWJwbmdfcGF0aCkvcG5n
cHJlYWQuYycsCisgICAgICAgICAgICAgICAgICAgICAgICAnPChsaWJwbmdfcGF0aCkvcG5ncmVh
ZC5jJywKKyAgICAgICAgICAgICAgICAgICAgICAgICc8KGxpYnBuZ19wYXRoKS9wbmdyaW8uYycs
CisgICAgICAgICAgICAgICAgICAgICAgICAnPChsaWJwbmdfcGF0aCkvcG5ncnRyYW4uYycsCisg
ICAgICAgICAgICAgICAgICAgICAgICAnPChsaWJwbmdfcGF0aCkvcG5ncnV0aWwuYycsCisgICAg
ICAgICAgICAgICAgICAgICAgICAnPChsaWJwbmdfcGF0aCkvcG5nc2V0LmMnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgJzwobGlicG5nX3BhdGgpL3BuZ3RyYW5zLmMnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgJzwobGlicG5nX3BhdGgpL3BuZ3dpby5jJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICc8KGxpYnBuZ19wYXRoKS9wbmd3cml0ZS5jJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICc8KGxpYnBuZ19wYXRoKS9wbmd3dHJhbi5jJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICc8KGxpYnBuZ19wYXRoKS9wbmd3dXRpbC5jJywKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgXSwgIyB0YXJnZXRzCisgICAgICAgIH1dLCAj
IGFuZ2xlX2J1aWxkX2RlcXBfbGlicmFyaWVzPT0xCisgICAgICAgIFsnYW5nbGVfYnVpbGRfZGVx
cF9saWJyYXJpZXM9PTEnLAorICAgICAgICB7CisgICAgICAgICAgICAndGFyZ2V0cyc6CisgICAg
ICAgICAgICBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAndGFyZ2V0
X25hbWUnOiAnYW5nbGVfZGVxcF9zdXBwb3J0JywKKyAgICAgICAgICAgICAgICAgICAgJ3R5cGUn
OiAnbm9uZScsCisgICAgICAgICAgICAgICAgICAgICdkaXJlY3RfZGVwZW5kZW50X3NldHRpbmdz
JzoKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmZp
Z3VyYXRpb25zJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnQ29tbW9uX0Jhc2UnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21zdnNfY29uZmlndXJhdGlvbl9hdHRy
aWJ1dGVzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIyBkRVFQIHJlcXVpcmVzIEFTQ0lJCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnQ2hhcmFjdGVyU2V0JzogJzAnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnbXN2c19zZXR0aW5ncyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWQ0xpbmtlclRvb2wnOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdjb25kaXRpb25zJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFsnYW5nbGVfYnVpbGRfd2lucnQ9PTAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnQWRkaXRpb25hbERlcGVuZGVuY2llcyc6CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RiZ2hlbHAubGliJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2RpMzIubGliJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlcjMyLmxp
YicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3dzMl8zMi5saWInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnYW5nbGVfYnVp
bGRfd2lucnQ9PTEnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIERp
c2FibGUgQ09NREFUIG9wdGltaXphdGlvbnMsIGRpc2FibGVkIGJ5IGRlZmF1bHQgZm9yIG5vbi1X
aW5SVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Fk
ZGl0aW9uYWxPcHRpb25zJzogWycvT1BUOk5PUkVGJywgJy9PUFQ6Tk9JQ0YnXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkaXRpb25hbERlcGVu
ZGVuY2llcyBhdXRvbWF0aWNhbGx5IGNvbmZpZ3VyZXMgdGhlIHJlcXVpcmVkIC5saWJzCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWRkaXRpb25hbERl
cGVuZGVuY2llcyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyknCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAor
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RlYnVnX0Jhc2UnOgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21zdnNf
c2V0dGluZ3MnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnVkNDTENvbXBpbGVyVG9vbCc6CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ1J1bnRpbWVUeXBlSW5mbyc6ICd0cnVlJywgIyBkRVFQIG5lZWRzIFJUVEkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdSZWxlYXNlX0Jhc2UnOgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21zdnNfc2V0
dGluZ3MnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnVkNDTENvbXBpbGVyVG9vbCc6CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ1J1bnRpbWVUeXBlSW5mbyc6ICd0cnVlJywgIyBkRVFQIG5lZWRzIFJUVEkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAjIFJlLWVuYWJsZSBS
VFRJIGFuZCBleGNlcHRpb25zLCBkRVFQIG5lZWRzIHRoZW0uCisgICAgICAgICAgICAgICAgICAg
ICAgICAnY2ZsYWdzX2NjISc6CisgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJy1mbm8tZXhjZXB0aW9ucycsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJy1mbm8tcnR0aScsCisgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6IFsnPEAoZGVxcF9pbmNsdWRlX2RpcnMp
J10sCisgICAgICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6IFsnPEAoZGVxcF9kZWZpbmVz
KSddLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMhJzogWyAnPEAoZGVxcF91bmRl
ZmluZXMpJyBdLAorICAgICAgICAgICAgICAgICAgICAgICAgJ21zdnNfc2V0dGluZ3MnOgorICAg
ICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWQ0NM
Q29tcGlsZXJUb29sJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdBZGRpdGlvbmFsT3B0aW9ucyc6IFsnPEAoZGVxcF93aW5f
Y2ZsYWdzKSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOgorICAg
ICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnY2xh
bmc9PTEnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIyBUT0RPKGptYWRpbGwpOiBSZW1vdmUgdGhpcyBvbmNlIHdlIGZpeCBk
RVFQLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2ZsYWdzX2NjJzoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJy1Xbm8tZGVsZXRlLW5vbi12aXJ0dWFsLWR0b3InLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsnT1M9PSJ3aW4iJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjZmxhZ3MnOiBb
JzxAKGRlcXBfd2luX2NmbGFncyknXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2NmbGFnc19jYyc6IFsnPEAoZGVxcF93aW5fY2ZsYWdzKSddLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9mcmFtZXdvcmsvcGxhdGZvcm0vd2luMzInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dLAorICAgICAgICAgICAgICAg
ICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAg
J2NvbmRpdGlvbnMnOgorICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAg
ICAgICBbJ2FuZ2xlX2J1aWxkX3dpbnJ0PT0xJywKKyAgICAgICAgICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgOiAnc2hhcmVkX2xpYnJhcnknLAor
ICAgICAgICAgICAgICAgICAgICAgICAgfV0sCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAg
ICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgICAgICMgQ29tcGlsZSBkZWNwcCBzZXBhcmF0
ZWx5IGJlY2F1c2UgTVNWQyBpZ25vcmVzIHRoZSBleHRlbnNpb24gb2YgdGhlIGZpbGVzIHdoZW4K
KyAgICAgICAgICAgICAgICAjIG91dHB1dHRpbmcgdGhlIG9iaiBmaWxlLCBhbmQgbGF0ZXIgdGhp
bmtzIHRoYXQgYSBkZWNwcCBvYmogYW5kIGFub3RoZXIgb2JqIGFyZSB0aGUKKyAgICAgICAgICAg
ICAgICAjIHNhbWUsIGlnbm9yaW5nIG9uZSBhbmQgZXZlbnR1YWxseSBwcm9kdWNpbmcgYSBsaW5r
IGVycm9yLiBUaGUgcHJvYmxlbSBvY2N1cnMgZm9yCisgICAgICAgICAgICAgICAgIyBleGFtcGxl
IGJldHdlZW4gZGVjcHAvZGVSYW5kb20uY3BwIGFuZCBkZWJhc2UvZGVSYW5kb20uYworICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2FuZ2xlX2Rl
cXBfZGVjcHAnLAorICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdzdGF0aWNfbGlicmFyeScs
CisgICAgICAgICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiBbICdhbmdsZV9kZXFwX3N1cHBv
cnQnIF0sCisgICAgICAgICAgICAgICAgICAgICdzb3VyY2VzJzoKKyAgICAgICAgICAgICAgICAg
ICAgWworICAgICAgICAgICAgICAgICAgICAgICAgJzxAKGRlcXBfbGlidGVzdGVyX2RlY3BwX3Nv
dXJjZXMpJywKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgIyBJ
biBhIGNocm9taXVtIGJ1aWxkIGRsIGlzIHJlcXVpcmVkIGZvciBkZUR5bmFtaWNMaWJyYXJ5Cisg
ICAgICAgICAgICAgICAgICAgICdjb25kaXRpb25zJzoKKyAgICAgICAgICAgICAgICAgICAgWwor
ICAgICAgICAgICAgICAgICAgICAgICAgWydPUz09ImxpbnV4IicsCisgICAgICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xpbmtfc2V0dGluZ3MnOgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2xpYnJhcmllcyc6IFsnLWxkbCddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIH1dLAorICAgICAgICAgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV9kZXFwX2xpYnRlc3RlcicsCisgICAgICAgICAgICAg
ICAgICAgICd0eXBlJzogJ3N0YXRpY19saWJyYXJ5JywKKyAgICAgICAgICAgICAgICAgICAgJ2Rl
cGVuZGVuY2llcyc6CisgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICdhbmdsZV9kZXFwX2RlY3BwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdhbmdsZV9k
ZXFwX3N1cHBvcnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZ2xlX2xpYnBuZycsCisg
ICAgICAgICAgICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvYW5nbGUuZ3lwOmxpYkVH
TCcsCisgICAgICAgICAgICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS91dGlsL3V0aWwuZ3lw
OmFuZ2xlX3V0aWwnLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAg
ICAnZXhwb3J0X2RlcGVuZGVudF9zZXR0aW5ncyc6CisgICAgICAgICAgICAgICAgICAgIFsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICdhbmdsZV9kZXFwX3N1cHBvcnQnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvdXRpbC91dGlsLmd5cDphbmdsZV91dGlsJywKKyAg
ICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6
CisgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICc8KGFuZ2xl
X3BhdGgpL2luY2x1ZGUnLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAg
ICAgICAnZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5ncyc6CisgICAgICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlX2RpcnMnOgorICAgICAgICAgICAgICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL2lu
Y2x1ZGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICdkZWZpbmVzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnQU5HTEVfREVRUF9MSUJURVNURVJfSU1QTEVNRU5UQVRJT04nLAorICAg
ICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAgICAgJ21zdnNfc2V0dGluZ3MnOgorICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAnVkNDTENvbXBpbGVyVG9vbCc6CisgICAgICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FkZGl0aW9uYWxPcHRpb25z
JzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICcvYmlnb2JqJywgIyBuZWVkZWQgZm9yIGdsc0J1aWx0aW5QcmVjaXNpb25UZXN0
cy5jcHAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy93ZDQyNTEnLCAjIG5lZWRl
ZCBmb3IgYW5nbGVfdXRpbCBTVEwgb2JqZWN0cyBub3QgaGF2aW5nIERMTCBpbnRlcmZhY2UKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgor
ICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAnPEAoZGVxcF9s
aWJ0ZXN0ZXJfc291cmNlcyknLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAg
ICAgICAgICAnY29uZGl0aW9ucyc6CisgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFsnT1M9PSJtYWMiJywKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5ncyc6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAneGNvZGVfc2V0dGluZ3MnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRFlMSUJfSU5TVEFMTF9OQU1F
X0JBU0UnOiAnQHJwYXRoJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgfV0s
CisgICAgICAgICAgICAgICAgICAgICAgICBbJ09TPT0id2luIicsCisgICAgICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOiBbICc8QChk
ZXFwX2xpYnRlc3Rlcl9zb3VyY2VzX3dpbiknLCBdLAorICAgICAgICAgICAgICAgICAgICAgICAg
fV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbJ09TPT0ibGludXgiIG9yIE9TPT0ibWFjIics
CisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3NvdXJjZXMnOiBbICc8QChkZXFwX2xpYnRlc3Rlcl9zb3VyY2VzX3VuaXgpJywgXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH1dLAorICAgICAgICAgICAgICAgICAgICAgICAgWydPUz09Imxp
bnV4IicsCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2xpbmtfc2V0dGluZ3MnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xpYnJhcmllcyc6IFsnLWxydCddCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIH1dLAor
ICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV9kZXFwX2xp
YmdsZXMyJywKKyAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnc2hhcmVkX2xpYnJhcnknLAor
ICAgICAgICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzoKKyAgICAgICAgICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZ2xlX2RlcXBfbGlidGVzdGVyJywKKyAgICAg
ICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOgorICAgICAg
ICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAnQU5HTEVfREVRUF9HTEVT
Ml9URVNUUycsCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICdk
aXJlY3RfZGVwZW5kZW50X3NldHRpbmdzJzoKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOgorICAgICAgICAgICAgICAgICAgICAgICAgWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBTkdMRV9ERVFQX0dMRVMyX1RFU1RTJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAgICAgICAgICdzb3VyY2VzJzoKKyAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAg
ICAgICAgICAgICAgICAgJzxAKGRlcXBfZ2xlczJfc291cmNlcyknLAorICAgICAgICAgICAgICAg
ICAgICAgICAgJ2RlcXBfc3VwcG9ydC9hbmdsZV9kZXFwX2xpYnRlc3Rlcl9tYWluLmNwcCcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAnZGVxcF9zdXBwb3J0L3RjdUFOR0xFUGxhdGZvcm0uY3Bw
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICdkZXFwX3N1cHBvcnQvdGN1QU5HTEVQbGF0Zm9y
bS5oJywKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICB9LAorCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAnYW5nbGVf
ZGVxcF9saWJnbGVzMycsCisgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ3NoYXJlZF9saWJy
YXJ5JywKKyAgICAgICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6CisgICAgICAgICAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICdhbmdsZV9kZXFwX2xpYnRlc3Rlcics
CisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICdkZWZpbmVzJzoK
KyAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgJ0FOR0xFX0RF
UVBfR0xFUzNfVEVTVFMnLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAg
ICAgICAnZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5ncyc6CisgICAgICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICdkZWZpbmVzJzoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQU5HTEVfREVRUF9HTEVTM19URVNU
UycsCisgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6CisgICAgICAgICAgICAgICAgICAgIFsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICc8QChkZXFwX2dsZXMzX3NvdXJjZXMpJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICdkZXFwX3N1cHBvcnQvYW5nbGVfZGVxcF9saWJ0ZXN0ZXJfbWFpbi5j
cHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcXBfc3VwcG9ydC90Y3VBTkdMRVBsYXRm
b3JtLmNwcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGVxcF9zdXBwb3J0L3RjdUFOR0xF
UGxhdGZvcm0uaCcsCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgfSwK
KworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzog
J2FuZ2xlX2RlcXBfbGliZ2xlczMxJywKKyAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnc2hh
cmVkX2xpYnJhcnknLAorICAgICAgICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzoKKyAgICAg
ICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZ2xlX2RlcXBfbGli
dGVzdGVyJywKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgJ2Rl
ZmluZXMnOgorICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAn
QU5HTEVfREVRUF9HTEVTMzFfVEVTVFMnLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAg
ICAgICAgICAgICAgICAnZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5ncyc6CisgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICdkZWZpbmVzJzoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQU5HTEVfREVRUF9H
TEVTMzFfVEVTVFMnLAorICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgorICAgICAgICAgICAgICAg
ICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAnPEAoZGVxcF9nbGVzMzFfc291cmNlcykn
LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcXBfc3VwcG9ydC9hbmdsZV9kZXFwX2xpYnRl
c3Rlcl9tYWluLmNwcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGVxcF9zdXBwb3J0L3Rj
dUFOR0xFUGxhdGZvcm0uY3BwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdkZXFwX3N1cHBv
cnQvdGN1QU5HTEVQbGF0Zm9ybS5oJywKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgICAgICB9LAorCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAndGFy
Z2V0X25hbWUnOiAnYW5nbGVfZGVxcF9saWJlZ2wnLAorICAgICAgICAgICAgICAgICAgICAndHlw
ZSc6ICdzaGFyZWRfbGlicmFyeScsCisgICAgICAgICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMn
OgorICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAnYW5nbGVf
ZGVxcF9saWJ0ZXN0ZXInLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAg
ICAgICAnZGVmaW5lcyc6CisgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICdBTkdMRV9ERVFQX0VHTF9URVNUUycsCisgICAgICAgICAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICAgICAgICAgICdkaXJlY3RfZGVwZW5kZW50X3NldHRpbmdzJzoKKyAgICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOgorICAgICAg
ICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBTkdMRV9E
RVFQX0VHTF9URVNUUycsCisgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6CisgICAgICAgICAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICc8QChkZXFwX2VnbF9zb3VyY2VzKScs
CisgICAgICAgICAgICAgICAgICAgICAgICAnZGVxcF9zdXBwb3J0L2FuZ2xlX2RlcXBfbGlidGVz
dGVyX21haW4uY3BwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdkZXFwX3N1cHBvcnQvdGN1
QU5HTEVQbGF0Zm9ybS5jcHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcXBfc3VwcG9y
dC90Y3VBTkdMRVBsYXRmb3JtLmgnLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICBdLCAjIHRhcmdldHMKKyAgICAgICAgfV0sICMgYW5nbGVf
YnVpbGRfZGVxcF9saWJyYXJpZXMKKyAgICAgICAgWydhbmdsZV9idWlsZF9kZXFwX2V4ZWN1dGFi
bGVzPT0xJywKKyAgICAgICAgeworICAgICAgICAgICAgInRhcmdldHMiOgorICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzog
J2FuZ2xlX2RlcXBfZ2xlczJfdGVzdHMnLAorICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdl
eGVjdXRhYmxlJywKKyAgICAgICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6CisgICAgICAg
ICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICdhbmdsZV9kZXFwX2xpYmds
ZXMyJywKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgJ3NvdXJj
ZXMnOgorICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAnZGVx
cF9zdXBwb3J0L2FuZ2xlX2RlcXBfdGVzdHNfbWFpbi5jcHAnLAorICAgICAgICAgICAgICAgICAg
ICBdLAorICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV9kZXFwX2dsZXMzX3Rlc3RzJywKKyAgICAg
ICAgICAgICAgICAgICAgJ3R5cGUnOiAnZXhlY3V0YWJsZScsCisgICAgICAgICAgICAgICAgICAg
ICdkZXBlbmRlbmNpZXMnOgorICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAg
ICAgICAgICAnYW5nbGVfZGVxcF9saWJnbGVzMycsCisgICAgICAgICAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICAgICAgICAgICdzb3VyY2VzJzoKKyAgICAgICAgICAgICAgICAgICAgWworICAg
ICAgICAgICAgICAgICAgICAgICAgJ2RlcXBfc3VwcG9ydC9hbmdsZV9kZXFwX3Rlc3RzX21haW4u
Y3BwJywKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICB9LAorCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAnYW5nbGVf
ZGVxcF9nbGVzMzFfdGVzdHMnLAorICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdleGVjdXRh
YmxlJywKKyAgICAgICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6CisgICAgICAgICAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICdhbmdsZV9kZXFwX2xpYmdsZXMzMScs
CisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICdzb3VyY2VzJzoK
KyAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcXBfc3Vw
cG9ydC9hbmdsZV9kZXFwX3Rlc3RzX21haW4uY3BwJywKKyAgICAgICAgICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAndGFyZ2V0X25hbWUnOiAnYW5nbGVfZGVxcF9lZ2xfdGVzdHMnLAorICAgICAgICAgICAg
ICAgICAgICAndHlwZSc6ICdleGVjdXRhYmxlJywKKyAgICAgICAgICAgICAgICAgICAgJ2RlcGVu
ZGVuY2llcyc6CisgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICdhbmdsZV9kZXFwX2xpYmVnbCcsCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAg
ICAgICAgICAgICdzb3VyY2VzJzoKKyAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAg
ICAgICAgICAgICAgJ2RlcXBfc3VwcG9ydC9hbmdsZV9kZXFwX3Rlc3RzX21haW4uY3BwJywKKyAg
ICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgXSwg
IyB0YXJnZXRzCisgICAgICAgIH1dLCAjIGFuZ2xlX2J1aWxkX2RlcXBfZXhlY3V0YWJsZXMKKyAg
ICAgICAgWydhbmdsZV9idWlsZF9kZXFwX2d0ZXN0X3N1cHBvcnQ9PTEnLAorICAgICAgICB7Cisg
ICAgICAgICAgICAndGFyZ2V0cyc6CisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgIyBI
ZWxwZXIgdGFyZ2V0IGZvciBzeW5jaGluZyBvdXIgaW1wbGVtZW50YXRpb24gd2l0aCBjaHJvbWUn
cworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzog
J2FuZ2xlX2RlcXBfZ3Rlc3Rfc3VwcG9ydCcsCisgICAgICAgICAgICAgICAgICAgICd0eXBlJzog
J25vbmUnLAorICAgICAgICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzoKKyAgICAgICAgICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZ2xlX3Rlc3Rfc3VwcG9ydCcs
CisgICAgICAgICAgICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS91dGlsL3V0aWwuZ3lwOmFu
Z2xlX3V0aWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2Fu
Z2xlLmd5cDphbmdsZV9jb21tb24nLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgICAgICAgICAnZXhwb3J0X2RlcGVuZGVudF9zZXR0aW5ncyc6CisgICAgICAgICAgICAgICAg
ICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICdhbmdsZV90ZXN0X3N1cHBvcnQnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvdXRpbC91dGlsLmd5cDphbmdsZV91
dGlsJywKKyAgICAgICAgICAgICAgICAgICAgXSwKKworICAgICAgICAgICAgICAgICAgICAnZGly
ZWN0X2RlcGVuZGVudF9zZXR0aW5ncyc6CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICdpbmNsdWRlX2RpcnMnOgorICAgICAgICAgICAgICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXFwX3N1cHBvcnQnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBlY3RhdGlvbnMnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdzb3Vy
Y2VzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnPEAoZGVxcF9ncHVfdGVzdF9leHBlY3RhdGlvbnNfc291cmNlcyknLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdkZXFwX3N1cHBvcnQvYW5nbGVfZGVxcF9ndGVzdC5jcHAnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgXSwKKworICAgICAgICAgICAgICAgICAgICAgICAgJ2Rl
ZmluZXMnOgorICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMgUmUtZGVmaW5lIHRoZSBtaXNzaW5nIFdpbmRvd3MgbWFjcm9zCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJzxAKGRlcXBfdW5kZWZpbmVzKScsCisgICAgICAgICAgICAgICAg
ICAgICAgICBdLAorCisgICAgICAgICAgICAgICAgICAgICAgICAnbXN2c19zZXR0aW5ncyc6Cisg
ICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZD
TGlua2VyVG9vbCc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnQWRkaXRpb25hbERlcGVuZGVuY2llcyc6CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICd1c2VyMzIubGliJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgfSwK
KworICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOgorICAgICAgICAgICAgICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTk9URShzbWNncnVlcik6
IEd1YXJkaW5nIHdpdGggdXNlX2xpYnBjaSBhbGxvd3MgZ3lwIHRvIHJ1biBzdWNjZXNzZnVsbHkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9uIHN5c3RlbXMgd2l0aG91dCBsaWJwY2ks
IGJ1dCB0aGUgdGVzdCB0YXJnZXRzIHdpbGwgbm90IGNvbXBpbGUgb3IgbGluay4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbJ09TPT0ibGludXgiIGFuZCB1c2VfbGlicGNpPT0xJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdsZGZsYWdzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwhQCg8KHBrZy1jb25maWcpIC0tbGlicy1v
bmx5LUwgLS1saWJzLW9ubHktb3RoZXIgbGlicGNpKScsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaWJyYXJpZXMn
OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnPCFAKDwocGtnLWNvbmZpZykgLS1saWJzLW9ubHktbCBsaWJwY2kp
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ09TPT0ibWFjIics
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnc291cmNlcyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9ncHVfdGVzdF9l
eHBlY3RhdGlvbnMvZ3B1X3Rlc3RfY29uZmlnX21hYy5tbScsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaW5rX3Nl
dHRpbmdzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2xpYnJhcmllcyc6CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJyQoU0RLUk9PVCkvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgIF0sICMgdGFyZ2V0cworICAgICAgICB9XSwgIyBhbmds
ZV9idWlsZF9kZXFwX2d0ZXN0X3N1cHBvcnQKKyAgICAgICAgWydhbmdsZV9idWlsZF9kZXFwX2d0
ZXN0X2V4ZWN1dGFibGVzPT0xJywKKyAgICAgICAgeworICAgICAgICAgICAgInRhcmdldHMiOgor
ICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgJ3Rh
cmdldF9uYW1lJzogJ2FuZ2xlX2RlcXBfZ3Rlc3RfZ2xlczJfdGVzdHMnLAorICAgICAgICAgICAg
ICAgICAgICAndHlwZSc6ICdleGVjdXRhYmxlJywKKyAgICAgICAgICAgICAgICAgICAgJ2luY2x1
ZGVzJzogWyAnLi4vLi4vYnVpbGQvY29tbW9uX2RlZmluZXMuZ3lwaScsIF0sCisgICAgICAgICAg
ICAgICAgICAgICdkZXBlbmRlbmNpZXMnOgorICAgICAgICAgICAgICAgICAgICBbCisgICAgICAg
ICAgICAgICAgICAgICAgICAnYW5nbGVfZGVxcF9ndGVzdF9zdXBwb3J0JywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICdhbmdsZV9kZXFwX2xpYmdsZXMyJywKKyAgICAgICAgICAgICAgICAgICAg
XSwKKyAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgorICAgICAgICAgICAgICAgICAgICBb
CisgICAgICAgICAgICAgICAgICAgICAgICAnZGVxcF9zdXBwb3J0L2FuZ2xlX2RlcXBfZ3Rlc3Rf
bWFpbi5jcHAnLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIH0sCisK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdh
bmdsZV9kZXFwX2d0ZXN0X2dsZXMzX3Rlc3RzJywKKyAgICAgICAgICAgICAgICAgICAgJ3R5cGUn
OiAnZXhlY3V0YWJsZScsCisgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlcyc6IFsgJy4uLy4u
L2J1aWxkL2NvbW1vbl9kZWZpbmVzLmd5cGknLCBdLAorICAgICAgICAgICAgICAgICAgICAnZGVw
ZW5kZW5jaWVzJzoKKyAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAg
ICAgJ2FuZ2xlX2RlcXBfZ3Rlc3Rfc3VwcG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAgICAn
YW5nbGVfZGVxcF9saWJnbGVzMycsCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAg
ICAgICAgICAgICdzb3VyY2VzJzoKKyAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAg
ICAgICAgICAgICAgJ2RlcXBfc3VwcG9ydC9hbmdsZV9kZXFwX2d0ZXN0X21haW4uY3BwJywKKyAg
ICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAnYW5nbGVfZGVxcF9ndGVz
dF9nbGVzMzFfdGVzdHMnLAorICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdleGVjdXRhYmxl
JywKKyAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGVzJzogWyAnLi4vLi4vYnVpbGQvY29tbW9u
X2RlZmluZXMuZ3lwaScsIF0sCisgICAgICAgICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOgor
ICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAnYW5nbGVfZGVx
cF9ndGVzdF9zdXBwb3J0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICdhbmdsZV9kZXFwX2xp
YmdsZXMzMScsCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICdz
b3VyY2VzJzoKKyAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAg
J2RlcXBfc3VwcG9ydC9hbmdsZV9kZXFwX2d0ZXN0X21haW4uY3BwJywKKyAgICAgICAgICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAnYW5nbGVfZGVxcF9ndGVzdF9lZ2xfdGVzdHMn
LAorICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdleGVjdXRhYmxlJywKKyAgICAgICAgICAg
ICAgICAgICAgJ2luY2x1ZGVzJzogWyAnLi4vLi4vYnVpbGQvY29tbW9uX2RlZmluZXMuZ3lwaScs
IF0sCisgICAgICAgICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOgorICAgICAgICAgICAgICAg
ICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAnYW5nbGVfZGVxcF9ndGVzdF9zdXBwb3J0
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICdhbmdsZV9kZXFwX2xpYmVnbCcsCisgICAgICAg
ICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICdzb3VyY2VzJzoKKyAgICAgICAg
ICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcXBfc3VwcG9ydC9hbmds
ZV9kZXFwX2d0ZXN0X21haW4uY3BwJywKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgXSwgIyB0YXJnZXRzCisgICAgICAgIH1dLCAjIGFuZ2xl
X2J1aWxkX2RlcXBfZ3Rlc3RfZXhlY3V0YWJsZXMKKyAgICBdLCAjIGNvbmRpdGlvbnMKK30KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvYW5nbGVf
ZGVxcF9ndGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL2RlcXBfc3VwcG9ydC9hbmdsZV9kZXFwX2d0ZXN0LmNwcAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2FuZ2xlX2Rl
cXBfZ3Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzEyIEBACisvLworLy8gQ29w
eXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLwor
Ly8gYW5nbGVfZGVxcF9ndGVzdDoKKy8vICAgZEVRUCBhbmQgR29vZ2xlVGVzdCBpbnRlZ3JhdGlv
biBsb2dpYy4gQ2FsbHMgdGhyb3VnaCB0byB0aGUgcmFuZG9tCisvLyAgIG9yZGVyIGV4ZWN1dG9y
LgorCisjaW5jbHVkZSA8ZnN0cmVhbT4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI2luY2x1ZGUg
PGd0ZXN0L2d0ZXN0Lmg+CisKKyNpbmNsdWRlICJhbmdsZV9kZXFwX2xpYnRlc3Rlci5oIgorI2lu
Y2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisj
aW5jbHVkZSAiY29tbW9uL09wdGlvbmFsLmgiCisjaW5jbHVkZSAiY29tbW9uL3BsYXRmb3JtLmgi
CisjaW5jbHVkZSAiY29tbW9uL3N0cmluZ191dGlscy5oIgorI2luY2x1ZGUgImdwdV90ZXN0X2V4
cGVjdGF0aW9uc19wYXJzZXIuaCIKKyNpbmNsdWRlICJzeXN0ZW1fdXRpbHMuaCIKKworbmFtZXNw
YWNlCit7CisKKyNpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0FORFJPSUQpCitjb25zdCBjaGFy
ICpnX0Nhc2VMaXN0UmVsYXRpdmVQYXRoID0KKyAgICAiLy4uLy4uL3NkY2FyZC9jaHJvbWl1bV90
ZXN0c19yb290L3RoaXJkX3BhcnR5L2RlcXAvc3JjL2FuZHJvaWQvY3RzL21hc3Rlci8iOworI2Vs
c2UKK2NvbnN0IGNoYXIgKmdfQ2FzZUxpc3RSZWxhdGl2ZVBhdGggPSAiLy4uLy4uL3RoaXJkX3Bh
cnR5L2RlcXAvc3JjL2FuZHJvaWQvY3RzL21hc3Rlci8iOworI2VuZGlmCisKK2NvbnN0IGNoYXIg
KmdfVGVzdEV4cGVjdGF0aW9uc1NlYXJjaFBhdGhzW10gPSB7CisgICAgIi8uLi8uLi9zcmMvdGVz
dHMvZGVxcF9zdXBwb3J0LyIsICIvLi4vLi4vdGhpcmRfcGFydHkvYW5nbGUvc3JjL3Rlc3RzL2Rl
cXBfc3VwcG9ydC8iLAorICAgICIvZGVxcF9zdXBwb3J0LyIsICIvLi4vLi4vc2RjYXJkL2Nocm9t
aXVtX3Rlc3RzX3Jvb3QvdGhpcmRfcGFydHkvYW5nbGUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC8i
LAorfTsKKworY29uc3QgY2hhciAqZ19DYXNlTGlzdEZpbGVzW10gPSB7CisgICAgImdsZXMyLW1h
c3Rlci50eHQiLCAiZ2xlczMtbWFzdGVyLnR4dCIsICJnbGVzMzEtbWFzdGVyLnR4dCIsICJlZ2wt
bWFzdGVyLnR4dCIsCit9OworCitjb25zdCBjaGFyICpnX1Rlc3RFeHBlY3RhdGlvbnNGaWxlc1td
ID0geworICAgICJkZXFwX2dsZXMyX3Rlc3RfZXhwZWN0YXRpb25zLnR4dCIsICJkZXFwX2dsZXMz
X3Rlc3RfZXhwZWN0YXRpb25zLnR4dCIsCisgICAgImRlcXBfZ2xlczMxX3Rlc3RfZXhwZWN0YXRp
b25zLnR4dCIsICJkZXFwX2VnbF90ZXN0X2V4cGVjdGF0aW9ucy50eHQiLAorfTsKKworLy8gRHVy
aW5nIHRoZSBDYXNlTGlzdCBpbml0aWFsaXphdGlvbiB3ZSBjYW5ub3QgdXNlIHRoZSBHVEVTVCBG
QUlMIG1hY3JvIHRvIHF1aXQgdGhlIHByb2dyYW0gYmVjYXVzZQorLy8gdGhlIGluaXRpYWxpemF0
aW9uIGlzIGNhbGxlZCBvdXRzaWRlIG9mIHRlc3RzIHRoZSBmaXJzdCB0aW1lLgordm9pZCBEaWUo
KQoreworICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKK30KKworT3B0aW9uYWw8c3RkOjpzdHJpbmc+
IEZpbmRUZXN0RXhwZWN0YXRpb25zUGF0aChjb25zdCBzdGQ6OnN0cmluZyAmZXhlRGlyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IHRlc3RNb2R1bGVJbmRleCkKK3sKKyAgICBmb3IgKGNvbnN0IGNoYXIgKnRlc3RQYXRoIDogZ19U
ZXN0RXhwZWN0YXRpb25zU2VhcmNoUGF0aHMpCisgICAgeworICAgICAgICBzdGQ6OnN0cmluZ3N0
cmVhbSB0ZXN0RXhwZWN0YXRpb25zUGF0aFN0cjsKKyAgICAgICAgdGVzdEV4cGVjdGF0aW9uc1Bh
dGhTdHIgPDwgZXhlRGlyIDw8IHRlc3RQYXRoIDw8IGdfVGVzdEV4cGVjdGF0aW9uc0ZpbGVzW3Rl
c3RNb2R1bGVJbmRleF07CisKKyAgICAgICAgc3RkOjpzdHJpbmcgcGF0aCA9IHRlc3RFeHBlY3Rh
dGlvbnNQYXRoU3RyLnN0cigpOworICAgICAgICBzdGQ6Omlmc3RyZWFtIGluRmlsZShwYXRoLmNf
c3RyKCkpOworICAgICAgICBpZiAoIWluRmlsZS5mYWlsKCkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGluRmlsZS5jbG9zZSgpOworICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPHN0ZDo6c3Ry
aW5nPihwYXRoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBPcHRpb25hbDxzdGQ6
OnN0cmluZz46OkludmFsaWQoKTsKK30KKworY2xhc3MgZEVRUENhc2VMaXN0Cit7CisgIHB1Ymxp
YzoKKyAgICBkRVFQQ2FzZUxpc3Qoc2l6ZV90IHRlc3RNb2R1bGVJbmRleCk7CisKKyAgICBzdHJ1
Y3QgQ2FzZUluZm8KKyAgICB7CisgICAgICAgIENhc2VJbmZvKGNvbnN0IHN0ZDo6c3RyaW5nICZk
RVFQTmFtZSwKKyAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmdUZXN0TmFtZSwK
KyAgICAgICAgICAgICAgICAgaW50IGV4cGVjdGF0aW9uKQorICAgICAgICAgICAgOiBtREVRUE5h
bWUoZEVRUE5hbWUpLAorICAgICAgICAgICAgICBtR1Rlc3ROYW1lKGdUZXN0TmFtZSksCisgICAg
ICAgICAgICAgIG1FeHBlY3RhdGlvbihleHBlY3RhdGlvbikKKyAgICAgICAgeworICAgICAgICB9
CisKKyAgICAgICAgc3RkOjpzdHJpbmcgbURFUVBOYW1lOworICAgICAgICBzdGQ6OnN0cmluZyBt
R1Rlc3ROYW1lOworICAgICAgICBpbnQgbUV4cGVjdGF0aW9uOworICAgIH07CisKKyAgICB2b2lk
IGluaXRpYWxpemUoKTsKKworICAgIGNvbnN0IENhc2VJbmZvICZnZXRDYXNlSW5mbyhzaXplX3Qg
Y2FzZUluZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1Jbml0aWFsaXplZCk7Cisg
ICAgICAgIEFTU0VSVChjYXNlSW5kZXggPCBtQ2FzZUluZm9MaXN0LnNpemUoKSk7CisgICAgICAg
IHJldHVybiBtQ2FzZUluZm9MaXN0W2Nhc2VJbmRleF07CisgICAgfQorCisgICAgc2l6ZV90IG51
bUNhc2VzKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtSW5pdGlhbGl6ZWQpOworICAg
ICAgICByZXR1cm4gbUNhc2VJbmZvTGlzdC5zaXplKCk7CisgICAgfQorCisgIHByaXZhdGU6Cisg
ICAgc3RkOjp2ZWN0b3I8Q2FzZUluZm8+IG1DYXNlSW5mb0xpc3Q7CisgICAgZ3B1OjpHUFVUZXN0
RXhwZWN0YXRpb25zUGFyc2VyIG1UZXN0RXhwZWN0YXRpb25zUGFyc2VyOworICAgIGdwdTo6R1BV
VGVzdEJvdENvbmZpZyBtVGVzdENvbmZpZzsKKyAgICBzaXplX3QgbVRlc3RNb2R1bGVJbmRleDsK
KyAgICBib29sIG1Jbml0aWFsaXplZDsKK307CisKK2RFUVBDYXNlTGlzdDo6ZEVRUENhc2VMaXN0
KHNpemVfdCB0ZXN0TW9kdWxlSW5kZXgpCisgICAgOiBtVGVzdE1vZHVsZUluZGV4KHRlc3RNb2R1
bGVJbmRleCksCisgICAgICBtSW5pdGlhbGl6ZWQoZmFsc2UpCit7Cit9CisKK3ZvaWQgZEVRUENh
c2VMaXN0Ojppbml0aWFsaXplKCkKK3sKKyAgICBpZiAobUluaXRpYWxpemVkKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1Jbml0aWFsaXplZCA9IHRydWU7CisKKyAgICBz
dGQ6OnN0cmluZyBleGVEaXIgPSBhbmdsZTo6R2V0RXhlY3V0YWJsZURpcmVjdG9yeSgpOworCisg
ICAgc3RkOjpzdHJpbmdzdHJlYW0gY2FzZUxpc3RQYXRoU3RyOworICAgIGNhc2VMaXN0UGF0aFN0
ciA8PCBleGVEaXIgPDwgZ19DYXNlTGlzdFJlbGF0aXZlUGF0aCA8PCBnX0Nhc2VMaXN0RmlsZXNb
bVRlc3RNb2R1bGVJbmRleF07CisgICAgc3RkOjpzdHJpbmcgY2FzZUxpc3RQYXRoID0gY2FzZUxp
c3RQYXRoU3RyLnN0cigpOworCisgICAgT3B0aW9uYWw8c3RkOjpzdHJpbmc+IHRlc3RFeHBlY3Rh
dGlvbnNQYXRoID0gRmluZFRlc3RFeHBlY3RhdGlvbnNQYXRoKGV4ZURpciwgbVRlc3RNb2R1bGVJ
bmRleCk7CisgICAgaWYgKCF0ZXN0RXhwZWN0YXRpb25zUGF0aC52YWxpZCgpKQorICAgIHsKKyAg
ICAgICAgc3RkOjpjZXJyIDw8ICJGYWlsZWQgdG8gZmluZCB0ZXN0IGV4cGVjdGF0aW9ucyBmaWxl
LiIgPDwgc3RkOjplbmRsOworICAgICAgICBEaWUoKTsKKyAgICB9CisKKyAgICBpZiAoIW1UZXN0
RXhwZWN0YXRpb25zUGFyc2VyLkxvYWRUZXN0RXhwZWN0YXRpb25zRnJvbUZpbGUodGVzdEV4cGVj
dGF0aW9uc1BhdGgudmFsdWUoKSkpCisgICAgeworICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBl
cnJvck1zZ1N0cmVhbTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvICZtZXNzYWdlIDogbVRlc3RF
eHBlY3RhdGlvbnNQYXJzZXIuR2V0RXJyb3JNZXNzYWdlcygpKQorICAgICAgICB7CisgICAgICAg
ICAgICBlcnJvck1zZ1N0cmVhbSA8PCBzdGQ6OmVuZGwgPDwgIiAiIDw8IG1lc3NhZ2U7CisgICAg
ICAgIH0KKworICAgICAgICBzdGQ6OmNlcnIgPDwgIkZhaWxlZCB0byBsb2FkIHRlc3QgZXhwZWN0
YXRpb25zLiIgPDwgZXJyb3JNc2dTdHJlYW0uc3RyKCkgPDwgc3RkOjplbmRsOworICAgICAgICBE
aWUoKTsKKyAgICB9CisKKyAgICBpZiAoIW1UZXN0Q29uZmlnLkxvYWRDdXJyZW50Q29uZmlnKG51
bGxwdHIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjZXJyIDw8ICJGYWlsZWQgdG8gbG9hZCB0ZXN0
IGNvbmZpZ3VyYXRpb24uIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIERpZSgpOworICAgIH0KKwor
ICAgIHN0ZDo6aWZzdHJlYW0gY2FzZUxpc3RTdHJlYW0oY2FzZUxpc3RQYXRoKTsKKyAgICBpZiAo
Y2FzZUxpc3RTdHJlYW0uZmFpbCgpKQorICAgIHsKKyAgICAgICAgc3RkOjpjZXJyIDw8ICJGYWls
ZWQgdG8gbG9hZCB0aGUgY2FzZSBsaXN0LiIgPDwgc3RkOjplbmRsOworICAgICAgICBEaWUoKTsK
KyAgICB9CisKKyAgICB3aGlsZSAoIWNhc2VMaXN0U3RyZWFtLmVvZigpKQorICAgIHsKKyAgICAg
ICAgc3RkOjpzdHJpbmcgaW5TdHJpbmc7CisgICAgICAgIHN0ZDo6Z2V0bGluZShjYXNlTGlzdFN0
cmVhbSwgaW5TdHJpbmcpOworCisgICAgICAgIHN0ZDo6c3RyaW5nIGRFUVBOYW1lID0gYW5nbGU6
OlRyaW1TdHJpbmcoaW5TdHJpbmcsIGFuZ2xlOjprV2hpdGVzcGFjZUFTQ0lJKTsKKyAgICAgICAg
aWYgKGRFUVBOYW1lLmVtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgc3Rk
OjpzdHJpbmcgZ1Rlc3ROYW1lID0gZEVRUE5hbWUuc3Vic3RyKGRFUVBOYW1lLmZpbmQoJy4nKSAr
IDEpOworICAgICAgICBpZiAoZ1Rlc3ROYW1lLmVtcHR5KCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgc3RkOjpyZXBsYWNlKGdUZXN0TmFtZS5iZWdpbigpLCBnVGVzdE5hbWUuZW5k
KCksICcuJywgJ18nKTsKKworICAgICAgICAvLyBPY2N1cnMgaW4gc29tZSBsdW1pbmFuY2UgdGVz
dHMKKyAgICAgICAgZ1Rlc3ROYW1lLmVyYXNlKHN0ZDo6cmVtb3ZlKGdUZXN0TmFtZS5iZWdpbigp
LCBnVGVzdE5hbWUuZW5kKCksICctJyksIGdUZXN0TmFtZS5lbmQoKSk7CisKKyAgICAgICAgaW50
IGV4cGVjdGF0aW9uID0gbVRlc3RFeHBlY3RhdGlvbnNQYXJzZXIuR2V0VGVzdEV4cGVjdGF0aW9u
KGRFUVBOYW1lLCBtVGVzdENvbmZpZyk7CisgICAgICAgIGlmIChleHBlY3RhdGlvbiAhPSBncHU6
OkdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXI6OmtHcHVUZXN0U2tpcCkKKyAgICAgICAgeworICAg
ICAgICAgICAgbUNhc2VJbmZvTGlzdC5wdXNoX2JhY2soQ2FzZUluZm8oZEVRUE5hbWUsIGdUZXN0
TmFtZSwgZXhwZWN0YXRpb24pKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordGVtcGxhdGUgPHNp
emVfdCBUZXN0TW9kdWxlSW5kZXg+CitjbGFzcyBkRVFQVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0V2l0aFBhcmFtPHNpemVfdD4KK3sKKyAgcHVibGljOgorICAgIHN0YXRpYyB0ZXN0aW5nOjpp
bnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8c2l6ZV90PiBHZXRUZXN0aW5nUmFuZ2UoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRlc3Rpbmc6OlJhbmdlPHNpemVfdD4oMCwgR2V0Q2FzZUxpc3QoKS5u
dW1DYXNlcygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgc3RkOjpzdHJpbmcgR2V0Q2FzZUdUZXN0
TmFtZShzaXplX3QgY2FzZUluZGV4KQorICAgIHsKKyAgICAgICAgY29uc3QgYXV0byAmY2FzZUlu
Zm8gPSBHZXRDYXNlTGlzdCgpLmdldENhc2VJbmZvKGNhc2VJbmRleCk7CisgICAgICAgIHJldHVy
biBjYXNlSW5mby5tR1Rlc3ROYW1lOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBkRVFQQ2Fz
ZUxpc3QgJkdldENhc2VMaXN0KCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBkRVFQQ2FzZUxpc3Qg
c0Nhc2VMaXN0KFRlc3RNb2R1bGVJbmRleCk7CisgICAgICAgIHNDYXNlTGlzdC5pbml0aWFsaXpl
KCk7CisgICAgICAgIHJldHVybiBzQ2FzZUxpc3Q7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQg
U2V0VXBUZXN0Q2FzZSgpCisgICAgeworICAgICAgICBzUGFzc2VzICAgICAgICAgICA9IDA7Cisg
ICAgICAgIHNGYWlscyAgICAgICAgICAgID0gMDsKKyAgICAgICAgc1VuZXhwZWN0ZWRQYXNzZXMg
PSAwOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKTsKKworICBw
cm90ZWN0ZWQ6CisgICAgdm9pZCBydW5UZXN0KCkKKyAgICB7CisgICAgICAgIGNvbnN0IGF1dG8g
JmNhc2VJbmZvID0gR2V0Q2FzZUxpc3QoKS5nZXRDYXNlSW5mbyhHZXRQYXJhbSgpKTsKKyAgICAg
ICAgc3RkOjpjb3V0IDw8IGNhc2VJbmZvLm1ERVFQTmFtZSA8PCBzdGQ6OmVuZGw7CisKKyAgICAg
ICAgYm9vbCByZXN1bHQgPSBkZXFwX2xpYnRlc3Rlcl9ydW4oY2FzZUluZm8ubURFUVBOYW1lLmNf
c3RyKCkpOworCisgICAgICAgIGlmIChjYXNlSW5mby5tRXhwZWN0YXRpb24gPT0gZ3B1OjpHUFVU
ZXN0RXhwZWN0YXRpb25zUGFyc2VyOjprR3B1VGVzdFBhc3MpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7CisgICAgICAgICAgICBzUGFzc2VzICs9IChyZXN1bHQg
PyAxdSA6IDB1KTsKKyAgICAgICAgICAgIHNGYWlscyArPSAoIXJlc3VsdCA/IDF1IDogMHUpOwor
ICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHJlc3VsdCkKKyAgICAgICAgeworICAgICAgICAg
ICAgc3RkOjpjb3V0IDw8ICJUZXN0IGV4cGVjdGVkIHRvIGZhaWwgYnV0IHBhc3NlZCEiIDw8IHN0
ZDo6ZW5kbDsKKyAgICAgICAgICAgIHNVbmV4cGVjdGVkUGFzc2VzKys7CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBzRmFpbHMrKzsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgc1Bhc3NlczsKKyAgICBzdGF0aWMgdW5z
aWduZWQgaW50IHNGYWlsczsKKyAgICBzdGF0aWMgdW5zaWduZWQgaW50IHNVbmV4cGVjdGVkUGFz
c2VzOworfTsKKwordGVtcGxhdGUgPHNpemVfdCBUZXN0TW9kdWxlSW5kZXg+Cit1bnNpZ25lZCBp
bnQgZEVRUFRlc3Q8VGVzdE1vZHVsZUluZGV4Pjo6c1Bhc3NlcyAgICAgICAgICAgPSAwOwordGVt
cGxhdGUgPHNpemVfdCBUZXN0TW9kdWxlSW5kZXg+Cit1bnNpZ25lZCBpbnQgZEVRUFRlc3Q8VGVz
dE1vZHVsZUluZGV4Pjo6c0ZhaWxzICAgICAgICAgICAgPSAwOwordGVtcGxhdGUgPHNpemVfdCBU
ZXN0TW9kdWxlSW5kZXg+Cit1bnNpZ25lZCBpbnQgZEVRUFRlc3Q8VGVzdE1vZHVsZUluZGV4Pjo6
c1VuZXhwZWN0ZWRQYXNzZXMgPSAwOworCisvLyBzdGF0aWMKK3RlbXBsYXRlIDxzaXplX3QgVGVz
dE1vZHVsZUluZGV4Pgordm9pZCBkRVFQVGVzdDxUZXN0TW9kdWxlSW5kZXg+OjpUZWFyRG93blRl
c3RDYXNlKCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgdG90YWwgPSBzUGFzc2VzICsgc0ZhaWxzOwor
ICAgIGZsb2F0IHBhc3NGcmFjICAgICA9IHN0YXRpY19jYXN0PGZsb2F0PihzUGFzc2VzKSAvIHN0
YXRpY19jYXN0PGZsb2F0Pih0b3RhbCkgKiAxMDAuMGY7CisgICAgZmxvYXQgZmFpbEZyYWMgICAg
ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNGYWlscykgLyBzdGF0aWNfY2FzdDxmbG9hdD4odG90YWwp
ICogMTAwLjBmOworICAgIHN0ZDo6Y291dCA8PCAiUGFzc2VkOiAiIDw8IHNQYXNzZXMgPDwgIi8i
IDw8IHRvdGFsIDw8ICIgdGVzdHMuICgiIDw8IHBhc3NGcmFjIDw8ICIlKSIKKyAgICAgICAgICAg
ICAgPDwgc3RkOjplbmRsOworICAgIGlmIChzRmFpbHMgPiAwKQorICAgIHsKKyAgICAgICAgc3Rk
Ojpjb3V0IDw8ICJGYWlsZWQ6ICIgPDwgc0ZhaWxzIDw8ICIvIiA8PCB0b3RhbCA8PCAiIHRlc3Rz
LiAoIiA8PCBmYWlsRnJhYyA8PCAiJSkiCisgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7
CisgICAgfQorICAgIGlmIChzVW5leHBlY3RlZFBhc3NlcyA+IDApCisgICAgeworICAgICAgICBz
dGQ6OmNvdXQgPDwgc1VuZXhwZWN0ZWRQYXNzZXMgPDwgIiB0ZXN0cyB1bmV4cGVjdGVkbHkgcGFz
c2VkLiIgPDwgc3RkOjplbmRsOworICAgIH0KK30KKworLy8gVE9ETyhqbWFkaWxsKTogYWRkIGRp
ZmZlcmVudCBwbGF0Zm9ybSBjb25maWdzLCBvciBhYmlsaXR5IHRvIGNob29zZSBwbGF0Zm9ybQor
I2RlZmluZSBBTkdMRV9JTlNUQU5USUFURV9ERVFQX1RFU1RfQ0FTRShERVFQX1RFU1QsIE4pICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhc3MgREVRUF9URVNUIDogcHVibGljIGRF
UVBUZXN0PE4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgVEVTVF9Q
KERFUVBfVEVTVCwgRGVmYXVsdCkgeyBydW5UZXN0KCk7IH0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIElOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QKCwgREVRUF9URVNULCBERVFQX1RFU1Q6OkdldFRlc3RpbmdSYW5nZSgpLCAg
ICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10oY29uc3QgdGVzdGluZzo6
VGVzdFBhcmFtSW5mbzxzaXplX3Q+ICZpbmZvKSB7ICAgIFwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIERFUVBfVEVTVDo6R2V0Q2FzZUdUZXN0TmFtZShpbmZvLnBhcmFt
KTsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCisKKyNpZmRlZiBBTkdMRV9ERVFQ
X0dMRVMyX1RFU1RTCitBTkdMRV9JTlNUQU5USUFURV9ERVFQX1RFU1RfQ0FTRShkRVFQX0dMRVMy
LCAwKTsKKyNlbmRpZgorCisjaWZkZWYgQU5HTEVfREVRUF9HTEVTM19URVNUUworQU5HTEVfSU5T
VEFOVElBVEVfREVRUF9URVNUX0NBU0UoZEVRUF9HTEVTMywgMSk7CisjZW5kaWYKKworI2lmZGVm
IEFOR0xFX0RFUVBfR0xFUzMxX1RFU1RTCitBTkdMRV9JTlNUQU5USUFURV9ERVFQX1RFU1RfQ0FT
RShkRVFQX0dMRVMzMSwgMik7CisjZW5kaWYKKworI2lmZGVmIEFOR0xFX0RFUVBfRUdMX1RFU1RT
CitBTkdMRV9JTlNUQU5USUFURV9ERVFQX1RFU1RfQ0FTRShkRVFQX0VHTCwgMyk7CisjZW5kaWYK
KworfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2FuZ2xlX2RlcXBfZ3Rlc3RfbWFpbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9h
bmdsZV9kZXFwX2d0ZXN0X21haW4uY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvYW5nbGVfZGVxcF9ndGVzdF9tYWluLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gYW5nbGVfZGVx
cF9ndGVzdF9tYWluOgorLy8gICBFbnRyeSBwb2ludCBmb3Igc3RhbmRhbG9uZSBkRVFQIHRlc3Rz
LgorCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKworI2luY2x1ZGUgImFuZ2xlX2RlcXBfbGli
dGVzdGVyLmgiCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgICB0ZXN0
aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgICAgaW50IHJ0ID0gUlVOX0FMTF9U
RVNUUygpOworICAgIGRlcXBfbGlidGVzdGVyX3NodXRkb3duX3BsYXRmb3JtKCk7CisgICAgcmV0
dXJuIHJ0OworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBf
c3VwcG9ydC9hbmdsZV9kZXFwX2xpYnRlc3Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvYW5nbGVfZGVxcF9saWJ0ZXN0ZXIu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVx
cF9zdXBwb3J0L2FuZ2xlX2RlcXBfbGlidGVzdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwzNCBAQAorLy8KKy8vIENvcHlyaWdodChjKSAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gYW5nbGVfZGVxcF9saWJ0ZXN0ZXIuaDoKKy8vICAg
RXhwb3J0cyBmb3IgdGhlIEFOR0xFIGRFUVAgbGlidGVzdGVyIG1vZHVsZS4KKworI2lmbmRlZiBB
TkdMRV9ERVFQX0xJQlRFU1RFUl9IXworI2RlZmluZSBBTkdMRV9ERVFQX0xJQlRFU1RFUl9IXwor
CisjaWYgZGVmaW5lZChfV0lOMzIpCisjICAgaWYgZGVmaW5lZChBTkdMRV9ERVFQX0xJQlRFU1RF
Ul9JTVBMRU1FTlRBVElPTikKKyMgICAgICAgZGVmaW5lIEFOR0xFX0xJQlRFU1RFUl9FWFBPUlQg
X19kZWNsc3BlYyhkbGxleHBvcnQpCisjICAgZWxzZQorIyAgICAgICBkZWZpbmUgQU5HTEVfTElC
VEVTVEVSX0VYUE9SVCBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyMgICBlbmRpZgorI2VsaWYgZGVm
aW5lZChfX0dOVUNfXykKKyMgICBpZiBkZWZpbmVkKEFOR0xFX0RFUVBfTElCVEVTVEVSX0lNUExF
TUVOVEFUSU9OKQorIyAgICAgICBkZWZpbmUgQU5HTEVfTElCVEVTVEVSX0VYUE9SVCBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKKyMgICBlbHNlCisjICAgICAgIGRlZmlu
ZSBBTkdMRV9MSUJURVNURVJfRVhQT1JUCisjICAgZW5kaWYKKyNlbHNlCisjICAgZGVmaW5lIEFO
R0xFX0xJQlRFU1RFUl9FWFBPUlQKKyNlbmRpZgorCisvLyBFeHBvcnRlZCB0byB0aGUgdGVzdGVy
IGFwcC4KK0FOR0xFX0xJQlRFU1RFUl9FWFBPUlQgaW50IGRlcXBfbGlidGVzdGVyX21haW4oaW50
IGFyZ2MsIGNvbnN0IGNoYXIgKmFyZ3ZbXSk7CitBTkdMRV9MSUJURVNURVJfRVhQT1JUIHZvaWQg
ZGVxcF9saWJ0ZXN0ZXJfc2h1dGRvd25fcGxhdGZvcm0oKTsKK0FOR0xFX0xJQlRFU1RFUl9FWFBP
UlQgYm9vbCBkZXFwX2xpYnRlc3Rlcl9ydW4oY29uc3QgY2hhciAqY2FzZU5hbWUpOworCisjZW5k
aWYgLy8gQU5HTEVfREVRUF9MSUJURVNURVJfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvYW5nbGVfZGVxcF9saWJ0ZXN0ZXJfbWFpbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3Vw
cG9ydC9hbmdsZV9kZXFwX2xpYnRlc3Rlcl9tYWluLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2FuZ2xlX2RlcXBfbGli
dGVzdGVyX21haW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjQzIEBACisvLworLy8g
Q29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworLy8gZGVxcF9saWJ0ZXN0ZXJfbWFpbi5jcHA6IEVudHJ5IHBvaW50IGZvciB0ZXN0ZXIgRExM
LgorCisjaW5jbHVkZSA8Y3N0ZGlvPgorI2luY2x1ZGUgPGlvc3RyZWFtPgorCisjaW5jbHVkZSAi
YW5nbGVfZGVxcF9saWJ0ZXN0ZXIuaCIKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgor
I2luY2x1ZGUgImRlTWF0aC5oIgorI2luY2x1ZGUgImRlVW5pcXVlUHRyLmhwcCIKKyNpbmNsdWRl
ICJ0Y3VBcHAuaHBwIgorI2luY2x1ZGUgInRjdUNvbW1hbmRMaW5lLmhwcCIKKyNpbmNsdWRlICJ0
Y3VEZWZzLmhwcCIKKyNpbmNsdWRlICJ0Y3VQbGF0Zm9ybS5ocHAiCisjaW5jbHVkZSAidGN1UmFu
ZG9tT3JkZXJFeGVjdXRvci5oIgorI2luY2x1ZGUgInRjdVJlc291cmNlLmhwcCIKKyNpbmNsdWRl
ICJ0Y3VUZXN0TG9nLmhwcCIKKyNpbmNsdWRlICJzeXN0ZW1fdXRpbHMuaCIKKworI2lmIChERV9P
UyA9PSBERV9PU19XSU4zMikKKyNpbmNsdWRlIDxXaW5kb3dzLmg+CisjZWxpZiAoREVfT1MgPT0g
REVfT1NfVU5JWCkgfHwgKERFX09TID09IERFX09TX09TWCkKKyNpbmNsdWRlIDxzeXMvdW5pc3Rk
Lmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbGlm
IChERV9PUyA9PSBERV9PU19BTkRST0lEKQorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjZW5kaWYK
KwordGN1OjpQbGF0Zm9ybSAqY3JlYXRlUGxhdGZvcm0oKTsKKworbmFtZXNwYWNlCit7CisKK3Rj
dTo6UGxhdGZvcm0gKmdfcGxhdGZvcm0gPSBudWxscHRyOwordGN1OjpDb21tYW5kTGluZSAqZ19j
bWRMaW5lID0gbnVsbHB0cjsKK3RjdTo6RGlyQXJjaGl2ZSAqZ19hcmNoaXZlID0gbnVsbHB0cjsK
K3RjdTo6VGVzdExvZyAqZ19sb2cgPSBudWxscHRyOwordGN1OjpUZXN0Q29udGV4dCAqZ190ZXN0
Q3R4ID0gbnVsbHB0cjsKK3RjdTo6VGVzdFBhY2thZ2VSb290ICpnX3Jvb3QgPSBudWxscHRyOwor
dGN1OjpSYW5kb21PcmRlckV4ZWN1dG9yICpnX2V4ZWN1dG9yID0gbnVsbHB0cjsKKworY29uc3Qg
Y2hhciAqZ19kRVFQRGF0YVNlYXJjaERpcnNbXSA9IHsKKyAgICAiZGF0YSIsCisgICAgInRoaXJk
X3BhcnR5L2RlcXAvZGF0YSIsCisgICAgIi4uL3RoaXJkX3BhcnR5L2RlcXAvc3JjL2RhdGEiLAor
ICAgICJkZXFwX3N1cHBvcnQvZGF0YSIsCisgICAgInRoaXJkX3BhcnR5L2RlcXAvc3JjL2RhdGEi
LAorICAgICIuLi8uLi90aGlyZF9wYXJ0eS9kZXFwL3NyYy9kYXRhIiwKKyAgICAiLi4vLi4vLi4v
dGhpcmRfcGFydHkvZGVxcC9zcmMvZGF0YSIsCisgICAgIi4uLy4uL3NkY2FyZC9jaHJvbWl1bV90
ZXN0c19yb290L3RoaXJkX3BhcnR5L2RlcXAvc3JjL2RhdGEiLAorfTsKKworLy8gVE9ETyhqbWFk
aWxsKTogdXBzdHJlYW0gdG8gZEVRUD8KKyNpZiAoREVfT1MgPT0gREVfT1NfV0lOMzIpCitkZUJv
b2wgZGVJc0Rpcihjb25zdCBjaGFyICpmaWxlbmFtZSkKK3sKKyAgICBXSU4zMl9GSUxFX0FUVFJJ
QlVURV9EQVRBIGZpbGVJbmZvcm1hdGlvbjsKKworICAgIEJPT0wgcmVzdWx0ID0gR2V0RmlsZUF0
dHJpYnV0ZXNFeEEoZmlsZW5hbWUsIEdldEZpbGVFeEluZm9TdGFuZGFyZCwgJmZpbGVJbmZvcm1h
dGlvbik7CisgICAgaWYgKHJlc3VsdCkKKyAgICB7CisgICAgICAgIERXT1JEIGF0dHJpYnMgPSBm
aWxlSW5mb3JtYXRpb24uZHdGaWxlQXR0cmlidXRlczsKKyAgICAgICAgcmV0dXJuIChhdHRyaWJz
ICE9IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKSAmJiAoKGF0dHJpYnMgJiBGSUxFX0FUVFJJQlVU
RV9ESVJFQ1RPUlkpID4gMCk7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorI2VsaWYg
KERFX09TID09IERFX09TX1VOSVgpIHx8IChERV9PUyA9PSBERV9PU19PU1gpIHx8IChERV9PUyA9
PSBERV9PU19BTkRST0lEKQorZGVCb29sIGRlSXNEaXIoY29uc3QgY2hhciAqZmlsZW5hbWUpCit7
CisgICAgc3RydWN0IHN0YXQgc3Q7CisgICAgaW50IHJlc3VsdCA9IHN0YXQoZmlsZW5hbWUsICZz
dCk7CisgICAgcmV0dXJuIHJlc3VsdCA9PSAwICYmICgoc3Quc3RfbW9kZSAmIFNfSUZESVIpID09
IFNfSUZESVIpOworfQorI2Vsc2UKKyNlcnJvciBUT0RPKGptYWRpbGwpOiBzdXBwb3J0IG90aGVy
IHBsYXRmb3JtcworI2VuZGlmCisKK2Jvb2wgRmluZERhdGFEaXIoc3RkOjpzdHJpbmcgKmRhdGFE
aXJPdXQpCit7CisgICAgZm9yIChhdXRvIHNlYXJjaERpciA6IGdfZEVRUERhdGFTZWFyY2hEaXJz
KQorICAgIHsKKyAgICAgICAgaWYgKGRlSXNEaXIoKHN0ZDo6c3RyaW5nKHNlYXJjaERpcikgKyAi
L2dsZXMyIikuY19zdHIoKSkpCisgICAgICAgIHsKKyAgICAgICAgICAgICpkYXRhRGlyT3V0ID0g
c2VhcmNoRGlyOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAg
ICBzdGQ6OnN0cmluZ3N0cmVhbSBkaXJTdHJlYW07CisgICAgICAgIGRpclN0cmVhbSA8PCBhbmds
ZTo6R2V0RXhlY3V0YWJsZURpcmVjdG9yeSgpIDw8ICIvIiA8PCBzZWFyY2hEaXI7CisgICAgICAg
IHN0ZDo6c3RyaW5nIGRhdGFEaXIgPSBkaXJTdHJlYW0uc3RyKCk7CisgICAgICAgIGRpclN0cmVh
bSA8PCAiL2dsZXMyIjsKKyAgICAgICAgc3RkOjpzdHJpbmcgc2VhcmNoUGF0aCA9IGRpclN0cmVh
bS5zdHIoKTsKKworICAgICAgICBpZiAoZGVJc0RpcihzZWFyY2hQYXRoLmNfc3RyKCkpKQorICAg
ICAgICB7CisgICAgICAgICAgICAqZGF0YURpck91dCA9IGRhdGFEaXI7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwor
c3RkOjpzdHJpbmcgR2V0TG9nRmlsZU5hbWUoc3RkOjpzdHJpbmcgZGVxcERhdGFEaXIpCit7Cisj
aWYgKERFX09TID09IERFX09TX0FORFJPSUQpCisgICAgLy8gT24gQW5kcm9pZCBleGVjdXRhYmxl
IGRpciBpcyBub3Qgd3JpdGFibGUsIHNvIHVzZSBkYXRhIGRpciBpbnN0ZWFkCisgICAgcmV0dXJu
IGRlcXBEYXRhRGlyICsgIi8iICsgZ19jbWRMaW5lLT5nZXRMb2dGaWxlTmFtZSgpOworI2Vsc2UK
KyAgICByZXR1cm4gZ19jbWRMaW5lLT5nZXRMb2dGaWxlTmFtZSgpOworI2VuZGlmCit9CisKK2Jv
b2wgSW5pdFBsYXRmb3JtKGludCBhcmdjLCBjb25zdCBjaGFyICphcmd2W10pCit7CisgICAgdHJ5
CisgICAgeworI2lmIChERV9PUyAhPSBERV9PU19XSU4zMikKKyAgICAgICAgLy8gU2V0IHN0ZG91
dCB0byBsaW5lLWJ1ZmZlcmVkIG1vZGUgKHdpbGwgYmUgZnVsbHkgYnVmZmVyZWQgYnkgZGVmYXVs
dCBpZiBzdGRvdXQgaXMgcGlwZSkuCisgICAgICAgIHNldHZidWYoc3Rkb3V0LCBERV9OVUxMLCBf
SU9MQkYsIDQgKiAxMDI0KTsKKyNlbmRpZgorICAgICAgICBnX3BsYXRmb3JtID0gY3JlYXRlUGxh
dGZvcm0oKTsKKworICAgICAgICBpZiAoIWRlU2V0Um91bmRpbmdNb2RlKERFX1JPVU5ESU5HTU9E
RV9UT19ORUFSRVNUKSkKKyAgICAgICAgeworICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJGYWls
ZWQgdG8gc2V0IGZsb2F0aW5nIHBvaW50IHJvdW5kaW5nIG1vZGUuIiA8PCBzdGQ6OmVuZGw7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBzdGQ6OnN0cmlu
ZyBkZXFwRGF0YURpcjsKKyAgICAgICAgaWYgKCFGaW5kRGF0YURpcigmZGVxcERhdGFEaXIpKQor
ICAgICAgICB7CisgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIkZhaWxlZCB0byBmaW5kIGRFUVAg
ZGF0YSBkaXJlY3RvcnkuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKworICAgICAgICBnX2NtZExpbmUgPSBuZXcgdGN1OjpDb21tYW5kTGluZShh
cmdjLCBhcmd2KTsKKyAgICAgICAgZ19hcmNoaXZlID0gbmV3IHRjdTo6RGlyQXJjaGl2ZShkZXFw
RGF0YURpci5jX3N0cigpKTsKKyAgICAgICAgZ19sb2cgICAgID0gbmV3IHRjdTo6VGVzdExvZyhH
ZXRMb2dGaWxlTmFtZShkZXFwRGF0YURpcikuY19zdHIoKSwgZ19jbWRMaW5lLT5nZXRMb2dGbGFn
cygpKTsKKyAgICAgICAgZ190ZXN0Q3R4ID0gbmV3IHRjdTo6VGVzdENvbnRleHQoKmdfcGxhdGZv
cm0sICpnX2FyY2hpdmUsICpnX2xvZywgKmdfY21kTGluZSwgREVfTlVMTCk7CisgICAgICAgIGdf
cm9vdCA9IG5ldyB0Y3U6OlRlc3RQYWNrYWdlUm9vdCgqZ190ZXN0Q3R4LCB0Y3U6OlRlc3RQYWNr
YWdlUmVnaXN0cnk6OmdldFNpbmdsZXRvbigpKTsKKyAgICAgICAgZ19leGVjdXRvciA9IG5ldyB0
Y3U6OlJhbmRvbU9yZGVyRXhlY3V0b3IoKmdfcm9vdCwgKmdfdGVzdEN0eCk7CisgICAgfQorICAg
IGNhdGNoIChjb25zdCBzdGQ6OmV4Y2VwdGlvbiYgZSkKKyAgICB7CisgICAgICAgIHRjdTo6ZGll
KCIlcyIsIGUud2hhdCgpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJl
dHVybiB0cnVlOworfQorCit9IC8vIGFub255bW91cyBuYW1lc3BhY2UKKworLy8gRXhwb3J0ZWQg
dG8gdGhlIHRlc3RlciBhcHAuCitBTkdMRV9MSUJURVNURVJfRVhQT1JUIGludCBkZXFwX2xpYnRl
c3Rlcl9tYWluKGludCBhcmdjLCBjb25zdCBjaGFyICphcmd2W10pCit7CisgICAgaWYgKCFJbml0
UGxhdGZvcm0oYXJnYywgYXJndikpCisgICAgeworICAgICAgICB0Y3U6OmRpZSgiQ291bGQgbm90
IGluaXRpYWxpemUgdGhlIGRFUVAgcGxhdGZvcm0iKTsKKyAgICB9CisKKyAgICB0cnkKKyAgICB7
CisgICAgICAgIGRlOjpVbmlxdWVQdHI8dGN1OjpBcHA+IGFwcChuZXcgdGN1OjpBcHAoKmdfcGxh
dGZvcm0sICpnX2FyY2hpdmUsICpnX2xvZywgKmdfY21kTGluZSkpOworCisgICAgICAgIC8vIE1h
aW4gbG9vcC4KKyAgICAgICAgZm9yICg7OykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFh
cHAtPml0ZXJhdGUoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0K
KyAgICBjYXRjaCAoY29uc3Qgc3RkOjpleGNlcHRpb24gJmUpCisgICAgeworICAgICAgICBkZXFw
X2xpYnRlc3Rlcl9zaHV0ZG93bl9wbGF0Zm9ybSgpOworICAgICAgICB0Y3U6OmRpZSgiJXMiLCBl
LndoYXQoKSk7CisgICAgfQorCisgICAgZGVxcF9saWJ0ZXN0ZXJfc2h1dGRvd25fcGxhdGZvcm0o
KTsKKyAgICByZXR1cm4gMDsKK30KKworQU5HTEVfTElCVEVTVEVSX0VYUE9SVCB2b2lkIGRlcXBf
bGlidGVzdGVyX3NodXRkb3duX3BsYXRmb3JtKCkKK3sKKyAgICBkZWxldGUgZ19leGVjdXRvcjsK
KyAgICBkZWxldGUgZ19yb290OworICAgIGRlbGV0ZSBnX3Rlc3RDdHg7CisgICAgZGVsZXRlIGdf
bG9nOworICAgIGRlbGV0ZSBnX2FyY2hpdmU7CisgICAgZGVsZXRlIGdfY21kTGluZTsKKyAgICBk
ZWxldGUgZ19wbGF0Zm9ybTsKK30KKworQU5HTEVfTElCVEVTVEVSX0VYUE9SVCBib29sIGRlcXBf
bGlidGVzdGVyX3J1bihjb25zdCBjaGFyICpjYXNlTmFtZSkKK3sKKyAgICBjb25zdCBjaGFyICpl
bXB0eVN0cmluZyA9ICIiOworICAgIGlmIChnX3BsYXRmb3JtID09IG51bGxwdHIgJiYgIUluaXRQ
bGF0Zm9ybSgxLCAmZW1wdHlTdHJpbmcpKQorICAgIHsKKyAgICAgICAgdGN1OjpkaWUoIkZhaWxl
ZCB0byBpbml0aWFsaXplIHBsYXRmb3JtLiIpOworICAgIH0KKworICAgIHRyeQorICAgIHsKKyAg
ICAgICAgLy8gUG9sbCBwbGF0Zm9ybSBldmVudHMKKyAgICAgICAgY29uc3QgYm9vbCBwbGF0Zm9y
bU9rID0gZ19wbGF0Zm9ybS0+cHJvY2Vzc0V2ZW50cygpOworCisgICAgICAgIGlmIChwbGF0Zm9y
bU9rKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCB0Y3U6OlRlc3RTdGF0dXMgJnJlc3Vs
dCA9IGdfZXhlY3V0b3ItPmV4ZWN1dGUoY2FzZU5hbWUpOworICAgICAgICAgICAgc3dpdGNoIChy
ZXN1bHQuZ2V0Q29kZSgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgUVBf
VEVTVF9SRVNVTFRfUEFTUzoKKyAgICAgICAgICAgICAgICBjYXNlIFFQX1RFU1RfUkVTVUxUX05P
VF9TVVBQT1JURUQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgICAgIGNhc2UgUVBfVEVTVF9SRVNVTFRfUVVBTElUWV9XQVJOSU5HOgorICAgICAgICAgICAg
ICAgICAgICBzdGQ6OmNvdXQgPDwgIlF1YWxpdHkgd2FybmluZyEgIiA8PCByZXN1bHQuZ2V0RGVz
Y3JpcHRpb24oKSA8PCBzdGQ6OmVuZGw7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICAgICAgICAgIGNhc2UgUVBfVEVTVF9SRVNVTFRfQ09NUEFUSUJJTElUWV9XQVJO
SU5HOgorICAgICAgICAgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIkNvbXBhdGlibGl0eSB3YXJu
aW5nISAiIDw8IHJlc3VsdC5nZXREZXNjcmlwdGlvbigpIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJBYm9ydGVk
IHRlc3QhIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2ggKGNvbnN0
IHN0ZDo6ZXhjZXB0aW9uICZlKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJFeGNlcHRp
b24gcnVubmluZyB0ZXN0OiAiIDw8IGUud2hhdCgpIDw8IHN0ZDo6ZW5kbDsKKyAgICB9CisKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvZGVxcF9zdXBwb3J0L2FuZ2xlX2RlcXBfdGVzdHNfbWFpbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9hbmdsZV9kZXFw
X3Rlc3RzX21haW4uY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvYW5nbGVfZGVxcF90ZXN0c19tYWluLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBhbmdsZV9kZXFwX3Rlc3Rz
X21haW4uY3BwOiBFbnRyeSBwb2ludCBmb3IgQU5HTEUncyBkRVFQIHRlc3RzLgorCisjaW5jbHVk
ZSAiYW5nbGVfZGVxcF9saWJ0ZXN0ZXIuaCIKKworaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNo
YXIgKmFyZ3ZbXSkKK3sKKyAgICByZXR1cm4gZGVxcF9saWJ0ZXN0ZXJfbWFpbihhcmdjLCBhcmd2
KTsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBv
cnQvZGVxcF9lZ2xfdGVzdF9leHBlY3RhdGlvbnMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvZGVxcF9lZ2xfdGVzdF9leHBl
Y3RhdGlvbnMudHh0CShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9kZXFwX3N1cHBvcnQvZGVxcF9lZ2xfdGVzdF9leHBlY3RhdGlvbnMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMjYwIEBACisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gVGhpcyBmaWxlIGNvbnRhaW5zIGEg
bGlzdCBvZiBkZWZlY3RpdmUgZEVRUCBjb25mb3JtYW5jZSB0ZXN0cy4gVGhlIGV4cGVjdGVkCisv
LyBmb3JtYXQgaXM6CisvLyAge0JVRyN9IHtNT0RJRklFUlN9IDoge1RFU1RfTkFNRX0gPSB7UEFT
UyxGQUlMLEZMQUtZLFRJTUVPVVQsU0tJUH0KKy8vCisvLyBNT0RJRklFUlMgY2FuIGJlIGEgY29t
YmluYXRpb24gb2YgdGhlIGJlbG93IGxpc3Q6CisvLyAgV0lOIFhQIFZJU1RBIFdJTjcgTUFDIExF
T1BBUkQgU05PV0xFT1BBUkQgTElPTiBMSU5VWCBDSFJPTUVPUyBNT1VOVEFJTkxJT04KKy8vICBN
QVZFUklDS1MKKy8vICBOVklESUEgQU1EIElOVEVMCisvLyAgMHhhYmNkIC0gR1BVIFBDSSBkZXZp
Y2UgSUQuIFNwZWNpZnlpbmcgYSBQQ0kgaWQgcmVxdWlyZXMgYSB2ZW5kb3IuCisvLyAgREVCVUcg
UkVMRUFTRQorLy8gVE9ETyhqbWFkaWxsKTogQWRkIEFOR0xFIFJlbmRlcmVyIHNlbGVjdGlvbiBt
b2RpZmllcnMKKy8vCisvLyBURVNUX05BTUUgY2FuIGJlIGEgc3BlY2lmaWMgdGVzdCBuYW1lLCBv
ciBoYXZlIGEgJyonIGluIHRoZSBlbmQsIHdoaWNoCisvLyBpbmRpY2F0ZXMgYSBwcmVmaXggbWF0
Y2hpbmcuCisvLworLy8gRXhhbXBsZXM6CisvLyAgOTE1MzAgTUFDIFdJTiBMSU5VWCA6IGNvbnRl
eHRfbG9zdF9yZXN0b3JlZCA9IFRJTUVPVVQKKy8vICA5MTUzMyBXSU4gOiBnbF9taW5fdW5pZm9y
bXMgPSBGQUlMCisvLyAgOTE1MzEgTUFDIFdJTiBMSU5VWCA6IGNvbmZvcm1hbmNlX21vcmVfKiA9
IFNLSVAKKy8vICA5MTUzMiBNQUMgTlZJRElBIDB4MDY0MCA6IHRleF9pbWFnZV9hbmRfc3ViX2lt
YWdlXzJkX3dpdGhfdmlkZW8gPSBQQVNTIEZBSUwKKworLy8gQU5HTEUgZG9lcyBub3QgeWV0IHN1
cHBvcnQgbXVsdGl0aHJlYWRpbmcKKzEzNDAgV0lOIE1BQyBMSU5VWCA6IGRFUVAtRUdMLmZ1bmN0
aW9uYWwuc2hhcmluZy5nbGVzMi5tdWx0aXRocmVhZC4qID0gU0tJUAorMTM0MCBXSU4gTUFDIExJ
TlVYIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5tdWx0aXRocmVhZC4qID0gU0tJUAorMTM0MCBXSU4g
TUFDIExJTlVYIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5yZW5kZXIubXVsdGlfdGhyZWFkLiogPSBT
S0lQCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gIFRlbXByb3J5IGVudHJpZXM6
IHRoZXkgc2hvdWxkIGJlIHJlbW92ZWQgb25jZSB0aGUgYnVncyBhcmUgZml4ZWQuCisvLworLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KKworLy8gVE9ETyhqbWFkaWxsKTogVHJpYWdlIHRoZXNlIGlu
dG8gcGVybWFuYW5lbnQgYW5kIHRlbXBvcmFyeSBmYWlsdXJlcy4KKzEzNDAgV0lOIDogZEVRUC1F
R0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS53aW5kb3cucmdiNTY1X25vX2RlcHRo
X25vX3N0ZW5jaWwgPSBTS0lQCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlf
c3VyZmFjZS5zaW1wbGUud2luZG93LnJnYjU2NV9kZXB0aF9ub19zdGVuY2lsID0gU0tJUAorMTM0
MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLndpbmRvdy5y
Z2I1NjVfZGVwdGhfc3RlbmNpbCA9IFNLSVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25h
bC5xdWVyeV9zdXJmYWNlLnNpbXBsZS53aW5kb3cucmdiODg4X25vX2RlcHRoX25vX3N0ZW5jaWwg
PSBTS0lQCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zaW1w
bGUud2luZG93LnJnYjg4OF9kZXB0aF9ub19zdGVuY2lsID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQ
LUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLndpbmRvdy5yZ2I4ODhfZGVwdGhf
c3RlbmNpbCA9IFNLSVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJm
YWNlLnNpbXBsZS53aW5kb3cucmdiYTQ0NDRfbm9fZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAKKzEz
NDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS53aW5kb3cu
cmdiYTQ0NDRfZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVu
Y3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS53aW5kb3cucmdiYTQ0NDRfZGVwdGhfc3RlbmNp
bCA9IFNLSVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNp
bXBsZS53aW5kb3cucmdiYTU1NTFfbm9fZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAKKzEzNDAgV0lO
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS53aW5kb3cucmdiYTU1
NTFfZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25h
bC5xdWVyeV9zdXJmYWNlLnNpbXBsZS53aW5kb3cucmdiYTU1NTFfZGVwdGhfc3RlbmNpbCA9IFNL
SVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS53
aW5kb3cucmdiYTg4ODhfbm9fZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAKKzEzNDAgV0lOIDogZEVR
UC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS53aW5kb3cucmdiYTg4ODhfZGVw
dGhfbm9fc3RlbmNpbCA9IFNLSVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVy
eV9zdXJmYWNlLnNpbXBsZS53aW5kb3cucmdiYTg4ODhfZGVwdGhfc3RlbmNpbCA9IFNLSVAKKzEz
NDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS5wYnVmZmVy
LnJnYjU2NV9ub19kZXB0aF9ub19zdGVuY2lsID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5m
dW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLnBidWZmZXIucmdiNTY1X2RlcHRoX25vX3N0
ZW5jaWwgPSBTS0lQCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFj
ZS5zaW1wbGUucGJ1ZmZlci5yZ2I1NjVfZGVwdGhfc3RlbmNpbCA9IFNLSVAKKzEzNDAgV0lOIDog
ZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS5wYnVmZmVyLnJnYjg4OF9u
b19kZXB0aF9ub19zdGVuY2lsID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFs
LnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLnBidWZmZXIucmdiODg4X2RlcHRoX25vX3N0ZW5jaWwgPSBT
S0lQCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zaW1wbGUu
cGJ1ZmZlci5yZ2I4ODhfZGVwdGhfc3RlbmNpbCA9IFNLSVAKKzEzNDAgV0lOIDogZEVRUC1FR0wu
ZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS5wYnVmZmVyLnJnYmE0NDQ0X25vX2RlcHRo
X25vX3N0ZW5jaWwgPSBTS0lQCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlf
c3VyZmFjZS5zaW1wbGUucGJ1ZmZlci5yZ2JhNDQ0NF9kZXB0aF9ub19zdGVuY2lsID0gU0tJUAor
MTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLnBidWZm
ZXIucmdiYTQ0NDRfZGVwdGhfc3RlbmNpbCA9IFNLSVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVu
Y3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS5wYnVmZmVyLnJnYmE1NTUxX25vX2RlcHRoX25v
X3N0ZW5jaWwgPSBTS0lQCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3Vy
ZmFjZS5zaW1wbGUucGJ1ZmZlci5yZ2JhNTU1MV9kZXB0aF9ub19zdGVuY2lsID0gU0tJUAorMTM0
MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLnBidWZmZXIu
cmdiYTU1NTFfZGVwdGhfc3RlbmNpbCA9IFNLSVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rp
b25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS5wYnVmZmVyLnJnYmE4ODg4X25vX2RlcHRoX25vX3N0
ZW5jaWwgPSBTS0lQCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFj
ZS5zaW1wbGUucGJ1ZmZlci5yZ2JhODg4OF9kZXB0aF9ub19zdGVuY2lsID0gU0tJUAorMTM0MCBX
SU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLnBidWZmZXIucmdi
YTg4ODhfZGVwdGhfc3RlbmNpbCA9IFNLSVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25h
bC5xdWVyeV9zdXJmYWNlLnNldF9hdHRyaWJ1dGUud2luZG93LnJnYjU2NV9ub19kZXB0aF9ub19z
dGVuY2lsID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZh
Y2Uuc2V0X2F0dHJpYnV0ZS53aW5kb3cucmdiNTY1X2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQCisx
MzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zZXRfYXR0cmlidXRl
LndpbmRvdy5yZ2I1NjVfZGVwdGhfc3RlbmNpbCA9IFNLSVAKKzEzNDAgV0lOIDogZEVRUC1FR0wu
ZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNldF9hdHRyaWJ1dGUud2luZG93LnJnYjg4OF9ub19k
ZXB0aF9ub19zdGVuY2lsID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1
ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0ZS53aW5kb3cucmdiODg4X2RlcHRoX25vX3N0ZW5jaWwg
PSBTS0lQCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zZXRf
YXR0cmlidXRlLndpbmRvdy5yZ2I4ODhfZGVwdGhfc3RlbmNpbCA9IFNLSVAKKzEzNDAgV0lOIDog
ZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNldF9hdHRyaWJ1dGUud2luZG93LnJn
YmE0NDQ0X25vX2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1
bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zZXRfYXR0cmlidXRlLndpbmRvdy5yZ2JhNDQ0NF9kZXB0
aF9ub19zdGVuY2lsID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5
X3N1cmZhY2Uuc2V0X2F0dHJpYnV0ZS53aW5kb3cucmdiYTQ0NDRfZGVwdGhfc3RlbmNpbCA9IFNL
SVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNldF9hdHRy
aWJ1dGUud2luZG93LnJnYmE1NTUxX25vX2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQCisxMzQwIFdJ
TiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zZXRfYXR0cmlidXRlLndpbmRv
dy5yZ2JhNTU1MV9kZXB0aF9ub19zdGVuY2lsID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5m
dW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0ZS53aW5kb3cucmdiYTU1NTFfZGVw
dGhfc3RlbmNpbCA9IFNLSVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9z
dXJmYWNlLnNldF9hdHRyaWJ1dGUud2luZG93LnJnYmE4ODg4X25vX2RlcHRoX25vX3N0ZW5jaWwg
PSBTS0lQCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zZXRf
YXR0cmlidXRlLndpbmRvdy5yZ2JhODg4OF9kZXB0aF9ub19zdGVuY2lsID0gU0tJUAorMTM0MCBX
SU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0ZS53aW5k
b3cucmdiYTg4ODhfZGVwdGhfc3RlbmNpbCA9IFNLSVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVu
Y3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNldF9hdHRyaWJ1dGUucGJ1ZmZlci5yZ2I1NjVfbm9fZGVw
dGhfbm9fc3RlbmNpbCA9IFNLSVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVy
eV9zdXJmYWNlLnNldF9hdHRyaWJ1dGUucGJ1ZmZlci5yZ2I1NjVfZGVwdGhfbm9fc3RlbmNpbCA9
IFNLSVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNldF9h
dHRyaWJ1dGUucGJ1ZmZlci5yZ2I1NjVfZGVwdGhfc3RlbmNpbCA9IFNLSVAKKzEzNDAgV0lOIDog
ZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNldF9hdHRyaWJ1dGUucGJ1ZmZlci5y
Z2I4ODhfbm9fZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVu
Y3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNldF9hdHRyaWJ1dGUucGJ1ZmZlci5yZ2I4ODhfZGVwdGhf
bm9fc3RlbmNpbCA9IFNLSVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9z
dXJmYWNlLnNldF9hdHRyaWJ1dGUucGJ1ZmZlci5yZ2I4ODhfZGVwdGhfc3RlbmNpbCA9IFNLSVAK
KzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNldF9hdHRyaWJ1
dGUucGJ1ZmZlci5yZ2JhNDQ0NF9ub19kZXB0aF9ub19zdGVuY2lsID0gU0tJUAorMTM0MCBXSU4g
OiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0ZS5wYnVmZmVy
LnJnYmE0NDQ0X2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1
bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zZXRfYXR0cmlidXRlLnBidWZmZXIucmdiYTQ0NDRfZGVw
dGhfc3RlbmNpbCA9IFNLSVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9z
dXJmYWNlLnNldF9hdHRyaWJ1dGUucGJ1ZmZlci5yZ2JhNTU1MV9ub19kZXB0aF9ub19zdGVuY2ls
ID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0
X2F0dHJpYnV0ZS5wYnVmZmVyLnJnYmE1NTUxX2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQCisxMzQw
IFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zZXRfYXR0cmlidXRlLnBi
dWZmZXIucmdiYTU1NTFfZGVwdGhfc3RlbmNpbCA9IFNLSVAKKzEzNDAgV0lOIDogZEVRUC1FR0wu
ZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNldF9hdHRyaWJ1dGUucGJ1ZmZlci5yZ2JhODg4OF9u
b19kZXB0aF9ub19zdGVuY2lsID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFs
LnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0ZS5wYnVmZmVyLnJnYmE4ODg4X2RlcHRoX25vX3N0
ZW5jaWwgPSBTS0lQCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFj
ZS5zZXRfYXR0cmlidXRlLnBidWZmZXIucmdiYTg4ODhfZGVwdGhfc3RlbmNpbCA9IFNLSVAKKzEz
NDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9jb25maWcuZ2V0X2NvbmZpZ3MuZ2V0
X2NvbmZpZ3NfYm91bmRzID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNo
b29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9vbmx5LmJ1ZmZlcl9zaXplID0gRkFJTAorMTM0
MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlv
bl9vbmx5LnJlZF9zaXplID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNo
b29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9vbmx5LmdyZWVuX3NpemUgPSBGQUlMCisxMzQw
IFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9u
X29ubHkuYmx1ZV9zaXplID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNo
b29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9vbmx5Lmx1bWluYW5jZV9zaXplID0gRkFJTAor
MTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVj
dGlvbl9vbmx5LmFscGhhX3NpemUgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9u
YWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX29ubHkuYWxwaGFfbWFza19zaXplID0g
RkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxl
LnNlbGVjdGlvbl9vbmx5LmJpbmRfdG9fdGV4dHVyZV9yZ2IgPSBGQUlMCisxMzQwIFdJTiA6IGRF
UVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX29ubHkuYmlu
ZF90b190ZXh0dXJlX3JnYmEgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwu
Y2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX29ubHkuY29sb3JfYnVmZmVyX3R5cGUgPSBG
QUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUu
c2VsZWN0aW9uX29ubHkuY29uZmlnX2NhdmVhdCA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wu
ZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fb25seS5jb25maWdfaWQg
PSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1w
bGUuc2VsZWN0aW9uX29ubHkuZGVwdGhfc2l6ZSA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wu
ZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fb25seS5sZXZlbCA9IEZB
SUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5z
ZWxlY3Rpb25fb25seS5tYXhfc3dhcF9pbnRlcnZhbCA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1F
R0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fb25seS5taW5fc3dh
cF9pbnRlcnZhbCA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2Vf
Y29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fb25seS5uYXRpdmVfcmVuZGVyYWJsZSA9IEZBSUwKKzEz
NDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rp
b25fb25seS5uYXRpdmVfdmlzdWFsX3R5cGUgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1
bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX29ubHkuc2FtcGxlX2J1ZmZl
cnMgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5z
aW1wbGUuc2VsZWN0aW9uX29ubHkuc2FtcGxlcyA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wu
ZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fb25seS5zdGVuY2lsX3Np
emUgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5z
aW1wbGUuc2VsZWN0aW9uX29ubHkuc3VyZmFjZV90eXBlID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQ
LUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9vbmx5LnRyYW5z
cGFyZW50X3JlZF92YWx1ZSA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5j
aG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fb25seS50cmFuc3BhcmVudF9ncmVlbl92YWx1
ZSA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNp
bXBsZS5zZWxlY3Rpb25fb25seS50cmFuc3BhcmVudF9ibHVlX3ZhbHVlID0gRkFJTAorMTM0MCBX
SU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9h
bmRfc29ydC5idWZmZXJfc2l6ZSA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25h
bC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fYW5kX3NvcnQucmVkX3NpemUgPSBGQUlM
CisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2Vs
ZWN0aW9uX2FuZF9zb3J0LmdyZWVuX3NpemUgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1
bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX2FuZF9zb3J0LmJsdWVfc2l6
ZSA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNp
bXBsZS5zZWxlY3Rpb25fYW5kX3NvcnQubHVtaW5hbmNlX3NpemUgPSBGQUlMCisxMzQwIFdJTiA6
IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX2FuZF9z
b3J0LmFscGhhX3NpemUgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hv
b3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX2FuZF9zb3J0LmFscGhhX21hc2tfc2l6ZSA9IEZB
SUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5z
ZWxlY3Rpb25fYW5kX3NvcnQuYmluZF90b190ZXh0dXJlX3JnYiA9IEZBSUwKKzEzNDAgV0lOIDog
ZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fYW5kX3Nv
cnQuYmluZF90b190ZXh0dXJlX3JnYmEgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0
aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX2FuZF9zb3J0LmNvbG9yX2J1ZmZl
cl90eXBlID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25m
aWcuc2ltcGxlLnNlbGVjdGlvbl9hbmRfc29ydC5jb25maWdfY2F2ZWF0ID0gRkFJTAorMTM0MCBX
SU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9h
bmRfc29ydC5jb25maWdfaWQgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwu
Y2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX2FuZF9zb3J0LmRlcHRoX3NpemUgPSBGQUlM
CisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2Vs
ZWN0aW9uX2FuZF9zb3J0LmxldmVsID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlv
bmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9hbmRfc29ydC5tYXhfc3dhcF9pbnRl
cnZhbCA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmln
LnNpbXBsZS5zZWxlY3Rpb25fYW5kX3NvcnQubWluX3N3YXBfaW50ZXJ2YWwgPSBGQUlMCisxMzQw
IFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9u
X2FuZF9zb3J0Lm5hdGl2ZV9yZW5kZXJhYmxlID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5m
dW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9hbmRfc29ydC5uYXRpdmVf
dmlzdWFsX3R5cGUgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3Nl
X2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX2FuZF9zb3J0LnNhbXBsZV9idWZmZXJzID0gRkFJTAor
MTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVj
dGlvbl9hbmRfc29ydC5zYW1wbGVzID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlv
bmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9hbmRfc29ydC5zdGVuY2lsX3NpemUg
PSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1w
bGUuc2VsZWN0aW9uX2FuZF9zb3J0LnN1cmZhY2VfdHlwZSA9IEZBSUwKKzEzNDAgV0lOIDogZEVR
UC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fYW5kX3NvcnQu
dHJhbnNwYXJlbnRfcmVkX3ZhbHVlID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlv
bmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9hbmRfc29ydC50cmFuc3BhcmVudF9n
cmVlbl92YWx1ZSA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2Vf
Y29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fYW5kX3NvcnQudHJhbnNwYXJlbnRfYmx1ZV92YWx1ZSA9
IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnJhbmRv
bS5jb2xvcl9zaXplcyA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9v
c2VfY29uZmlnLnJhbmRvbS5jb2xvcl9kZXB0aF9zdGVuY2lsX3NpemVzID0gRkFJTAorMTM0MCBX
SU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcucmFuZG9tLmJ1ZmZlcl9zaXpl
cyA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnJh
bmRvbS5zdXJmYWNlX3R5cGUgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwu
Y2hvb3NlX2NvbmZpZy5yYW5kb20uc2FtcGxlX2J1ZmZlcnMgPSBGQUlMCisxMzQwIFdJTiA6IGRF
UVAtRUdMLmZ1bmN0aW9uYWwucmVuZGVyLnNpbmdsZV9jb250ZXh0LmdsZXMyLnJnYmE1NTUxX3dp
bmRvdyA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5yZW5kZXIuc2luZ2xl
X2NvbnRleHQuZ2xlczIucmdiYTU1NTFfcGJ1ZmZlciA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1F
R0wuZnVuY3Rpb25hbC5yZW5kZXIuc2luZ2xlX2NvbnRleHQuZ2xlczMucmdiYTU1NTFfd2luZG93
ID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJlbmRlci5zaW5nbGVfY29u
dGV4dC5nbGVzMy5yZ2JhNTU1MV9wYnVmZmVyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5m
dW5jdGlvbmFsLnJlbmRlci5tdWx0aV9jb250ZXh0LmdsZXMyLnJnYmE1NTUxX3dpbmRvdyA9IEZB
SUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5yZW5kZXIubXVsdGlfY29udGV4dC5n
bGVzMi5yZ2JhNTU1MV9wYnVmZmVyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlv
bmFsLnJlbmRlci5tdWx0aV9jb250ZXh0LmdsZXMzLnJnYmE1NTUxX3dpbmRvdyA9IEZBSUwKKzEz
NDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5yZW5kZXIubXVsdGlfY29udGV4dC5nbGVzMy5y
Z2JhNTU1MV9wYnVmZmVyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJl
bmRlci5tdWx0aV9jb250ZXh0LmdsZXMyX2dsZXMzLnJnYmE1NTUxX3dpbmRvdyA9IEZBSUwKKzEz
NDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5yZW5kZXIubXVsdGlfY29udGV4dC5nbGVzMl9n
bGVzMy5yZ2JhNTU1MV9wYnVmZmVyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlv
bmFsLmltYWdlLm1vZGlmeS50ZXhfcmdiOF90ZXhfc3ViaW1hZ2VfcmdiNTY1ID0gRkFJTAorMTM0
MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmltYWdlLm1vZGlmeS50ZXhfcmdiNTY1X3RleF9z
dWJpbWFnZV9yZ2I4ID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmltYWdl
Lm1vZGlmeS50ZXhfcmdiYThfdGV4X3N1YmltYWdlX3JnYmE1X2ExID0gRkFJTAorMTM0MCBXSU4g
OiBkRVFQLUVHTC5mdW5jdGlvbmFsLmltYWdlLm1vZGlmeS50ZXhfcmdiYThfdGV4X3N1YmltYWdl
X3JnYmE0ID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmltYWdlLm1vZGlm
eS50ZXhfcmdiYTVfYTFfdGV4X3N1YmltYWdlX3JnYmE4ID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQ
LUVHTC5mdW5jdGlvbmFsLmltYWdlLm1vZGlmeS50ZXhfcmdiYTVfYTFfdGV4X3N1YmltYWdlX3Jn
YmE0ID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmltYWdlLm1vZGlmeS50
ZXhfcmdiYTRfdGV4X3N1YmltYWdlX3JnYmE4ID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5m
dW5jdGlvbmFsLmltYWdlLm1vZGlmeS50ZXhfcmdiYTRfdGV4X3N1YmltYWdlX3JnYmE1X2ExID0g
RkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmltYWdlLm1vZGlmeS5yZW5kZXJi
dWZmZXJfcmdiYTRfdGV4X3N1YmltYWdlX3JnYmE4ID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLmltYWdlLm1vZGlmeS5yZW5kZXJidWZmZXJfcmdiYTRfdGV4X3N1YmltYWdl
X3JnYmE1X2ExID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmltYWdlLm1v
ZGlmeS5yZW5kZXJidWZmZXJfcmdiNV9hMV90ZXhfc3ViaW1hZ2VfcmdiYTggPSBGQUlMCisxMzQw
IFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuaW1hZ2UubW9kaWZ5LnJlbmRlcmJ1ZmZlcl9yZ2I1
X2ExX3RleF9zdWJpbWFnZV9yZ2JhNCA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rp
b25hbC5pbWFnZS5tb2RpZnkucmVuZGVyYnVmZmVyX3JnYjU2NV90ZXhfc3ViaW1hZ2VfcmdiOCA9
IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uZWdhdGl2ZV9hcGkuY2hvb3Nl
X2NvbmZpZyA9IFNLSVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uZWdhdGl2ZV9h
cGkuZ2V0X2Rpc3BsYXkgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmVn
YXRpdmVfYXBpLnN1cmZhY2VfYXR0cmliID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLm5lZ2F0aXZlX2FwaS5zd2FwX2ludGVydmFsID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQ
LUVHTC5mdW5jdGlvbmFsLnN3YXBfYnVmZmVycy5yZ2I1NjVfbm9fZGVwdGhfbm9fc3RlbmNpbCA9
IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5zd2FwX2J1ZmZlcnMucmdiNTY1
X2RlcHRoX25vX3N0ZW5jaWwgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwu
c3dhcF9idWZmZXJzLnJnYjU2NV9kZXB0aF9zdGVuY2lsID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQ
LUVHTC5mdW5jdGlvbmFsLnN3YXBfYnVmZmVycy5yZ2I4ODhfbm9fZGVwdGhfbm9fc3RlbmNpbCA9
IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5zd2FwX2J1ZmZlcnMucmdiODg4
X2RlcHRoX25vX3N0ZW5jaWwgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwu
c3dhcF9idWZmZXJzLnJnYjg4OF9kZXB0aF9zdGVuY2lsID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQ
LUVHTC5mdW5jdGlvbmFsLnN3YXBfYnVmZmVycy5yZ2JhNDQ0NF9ub19kZXB0aF9ub19zdGVuY2ls
ID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnN3YXBfYnVmZmVycy5yZ2Jh
NDQ0NF9kZXB0aF9ub19zdGVuY2lsID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlv
bmFsLnN3YXBfYnVmZmVycy5yZ2JhNDQ0NF9kZXB0aF9zdGVuY2lsID0gRkFJTAorMTM0MCBXSU4g
OiBkRVFQLUVHTC5mdW5jdGlvbmFsLnN3YXBfYnVmZmVycy5yZ2JhNTU1MV9ub19kZXB0aF9ub19z
dGVuY2lsID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnN3YXBfYnVmZmVy
cy5yZ2JhNTU1MV9kZXB0aF9ub19zdGVuY2lsID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5m
dW5jdGlvbmFsLnN3YXBfYnVmZmVycy5yZ2JhNTU1MV9kZXB0aF9zdGVuY2lsID0gRkFJTAorMTM0
MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnN3YXBfYnVmZmVycy5yZ2JhODg4OF9ub19kZXB0
aF9ub19zdGVuY2lsID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnN3YXBf
YnVmZmVycy5yZ2JhODg4OF9kZXB0aF9ub19zdGVuY2lsID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQ
LUVHTC5mdW5jdGlvbmFsLnN3YXBfYnVmZmVycy5yZ2JhODg4OF9kZXB0aF9zdGVuY2lsID0gRkFJ
TAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5h
dGl2ZV93aW5kb3cucmdiNTY1X25vX2RlcHRoX25vX3N0ZW5jaWxfY2xlYXIgPSBGQUlMCisxMzQw
IFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZlX3dp
bmRvdy5yZ2I1NjVfbm9fZGVwdGhfbm9fc3RlbmNpbF9yZW5kZXIgPSBGQUlMCisxMzQwIFdJTiA6
IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZlX3dpbmRvdy5y
Z2I1NjVfZGVwdGhfbm9fc3RlbmNpbF9jbGVhciA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wu
ZnVuY3Rpb25hbC5uYXRpdmVfY29sb3JfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYjU2NV9kZXB0
aF9ub19zdGVuY2lsX3JlbmRlciA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25h
bC5uYXRpdmVfY29sb3JfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYjU2NV9kZXB0aF9zdGVuY2ls
X2NsZWFyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xv
cl9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiNTY1X2RlcHRoX3N0ZW5jaWxfcmVuZGVyID0gRkFJ
TAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5h
dGl2ZV93aW5kb3cucmdiODg4X25vX2RlcHRoX25vX3N0ZW5jaWxfY2xlYXIgPSBGQUlMCisxMzQw
IFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZlX3dp
bmRvdy5yZ2I4ODhfbm9fZGVwdGhfbm9fc3RlbmNpbF9yZW5kZXIgPSBGQUlMCisxMzQwIFdJTiA6
IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZlX3dpbmRvdy5y
Z2I4ODhfZGVwdGhfbm9fc3RlbmNpbF9jbGVhciA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wu
ZnVuY3Rpb25hbC5uYXRpdmVfY29sb3JfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYjg4OF9kZXB0
aF9ub19zdGVuY2lsX3JlbmRlciA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25h
bC5uYXRpdmVfY29sb3JfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYjg4OF9kZXB0aF9zdGVuY2ls
X2NsZWFyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xv
cl9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiODg4X2RlcHRoX3N0ZW5jaWxfcmVuZGVyID0gRkFJ
TAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5h
dGl2ZV93aW5kb3cucmdiYTQ0NDRfbm9fZGVwdGhfbm9fc3RlbmNpbF9jbGVhciA9IEZBSUwKKzEz
NDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29sb3JfbWFwcGluZy5uYXRpdmVf
d2luZG93LnJnYmE0NDQ0X25vX2RlcHRoX25vX3N0ZW5jaWxfcmVuZGVyID0gRkFJTAorMTM0MCBX
SU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5hdGl2ZV93aW5k
b3cucmdiYTQ0NDRfZGVwdGhfbm9fc3RlbmNpbF9jbGVhciA9IEZBSUwKKzEzNDAgV0lOIDogZEVR
UC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29sb3JfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYmE0
NDQ0X2RlcHRoX25vX3N0ZW5jaWxfcmVuZGVyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5m
dW5jdGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTQ0NDRfZGVw
dGhfc3RlbmNpbF9jbGVhciA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5u
YXRpdmVfY29sb3JfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYmE0NDQ0X2RlcHRoX3N0ZW5jaWxf
cmVuZGVyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xv
cl9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTU1NTFfbm9fZGVwdGhfbm9fc3RlbmNpbF9jbGVh
ciA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29sb3JfbWFw
cGluZy5uYXRpdmVfd2luZG93LnJnYmE1NTUxX25vX2RlcHRoX25vX3N0ZW5jaWxfcmVuZGVyID0g
RkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5n
Lm5hdGl2ZV93aW5kb3cucmdiYTU1NTFfZGVwdGhfbm9fc3RlbmNpbF9jbGVhciA9IEZBSUwKKzEz
NDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29sb3JfbWFwcGluZy5uYXRpdmVf
d2luZG93LnJnYmE1NTUxX2RlcHRoX25vX3N0ZW5jaWxfcmVuZGVyID0gRkFJTAorMTM0MCBXSU4g
OiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5hdGl2ZV93aW5kb3cu
cmdiYTU1NTFfZGVwdGhfc3RlbmNpbF9jbGVhciA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wu
ZnVuY3Rpb25hbC5uYXRpdmVfY29sb3JfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYmE1NTUxX2Rl
cHRoX3N0ZW5jaWxfcmVuZGVyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFs
Lm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTg4ODhfbm9fZGVwdGhfbm9f
c3RlbmNpbF9jbGVhciA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRp
dmVfY29sb3JfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYmE4ODg4X25vX2RlcHRoX25vX3N0ZW5j
aWxfcmVuZGVyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9j
b2xvcl9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTg4ODhfZGVwdGhfbm9fc3RlbmNpbF9jbGVh
ciA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29sb3JfbWFw
cGluZy5uYXRpdmVfd2luZG93LnJnYmE4ODg4X2RlcHRoX25vX3N0ZW5jaWxfcmVuZGVyID0gRkFJ
TAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5h
dGl2ZV93aW5kb3cucmdiYTg4ODhfZGVwdGhfc3RlbmNpbF9jbGVhciA9IEZBSUwKKzEzNDAgV0lO
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29sb3JfbWFwcGluZy5uYXRpdmVfd2luZG93
LnJnYmE4ODg4X2RlcHRoX3N0ZW5jaWxfcmVuZGVyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiNTY1X25v
X2RlcHRoX25vX3N0ZW5jaWxfY2xlYXIgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0
aW9uYWwubmF0aXZlX2Nvb3JkX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2I1NjVfbm9fZGVwdGhf
bm9fc3RlbmNpbF9yZW5kZXIgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwu
bmF0aXZlX2Nvb3JkX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2I1NjVfZGVwdGhfbm9fc3RlbmNp
bF9jbGVhciA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29v
cmRfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYjU2NV9kZXB0aF9ub19zdGVuY2lsX3JlbmRlciA9
IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29vcmRfbWFwcGlu
Zy5uYXRpdmVfd2luZG93LnJnYjU2NV9kZXB0aF9zdGVuY2lsX2NsZWFyID0gRkFJTAorMTM0MCBX
SU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93aW5k
b3cucmdiNTY1X2RlcHRoX3N0ZW5jaWxfcmVuZGVyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiODg4X25v
X2RlcHRoX25vX3N0ZW5jaWxfY2xlYXIgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0
aW9uYWwubmF0aXZlX2Nvb3JkX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2I4ODhfbm9fZGVwdGhf
bm9fc3RlbmNpbF9yZW5kZXIgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwu
bmF0aXZlX2Nvb3JkX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2I4ODhfZGVwdGhfbm9fc3RlbmNp
bF9jbGVhciA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29v
cmRfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYjg4OF9kZXB0aF9ub19zdGVuY2lsX3JlbmRlciA9
IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29vcmRfbWFwcGlu
Zy5uYXRpdmVfd2luZG93LnJnYjg4OF9kZXB0aF9zdGVuY2lsX2NsZWFyID0gRkFJTAorMTM0MCBX
SU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93aW5k
b3cucmdiODg4X2RlcHRoX3N0ZW5jaWxfcmVuZGVyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTQ0NDRf
bm9fZGVwdGhfbm9fc3RlbmNpbF9jbGVhciA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVu
Y3Rpb25hbC5uYXRpdmVfY29vcmRfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYmE0NDQ0X25vX2Rl
cHRoX25vX3N0ZW5jaWxfcmVuZGVyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlv
bmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTQ0NDRfZGVwdGhfbm9f
c3RlbmNpbF9jbGVhciA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRp
dmVfY29vcmRfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYmE0NDQ0X2RlcHRoX25vX3N0ZW5jaWxf
cmVuZGVyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29y
ZF9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTQ0NDRfZGVwdGhfc3RlbmNpbF9jbGVhciA9IEZB
SUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29vcmRfbWFwcGluZy5u
YXRpdmVfd2luZG93LnJnYmE0NDQ0X2RlcHRoX3N0ZW5jaWxfcmVuZGVyID0gRkFJTAorMTM0MCBX
SU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93aW5k
b3cucmdiYTU1NTFfbm9fZGVwdGhfbm9fc3RlbmNpbF9jbGVhciA9IEZBSUwKKzEzNDAgV0lOIDog
ZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29vcmRfbWFwcGluZy5uYXRpdmVfd2luZG93LnJn
YmE1NTUxX25vX2RlcHRoX25vX3N0ZW5jaWxfcmVuZGVyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQ
LUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTU1
NTFfZGVwdGhfbm9fc3RlbmNpbF9jbGVhciA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVu
Y3Rpb25hbC5uYXRpdmVfY29vcmRfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYmE1NTUxX2RlcHRo
X25vX3N0ZW5jaWxfcmVuZGVyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFs
Lm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTU1NTFfZGVwdGhfc3RlbmNp
bF9jbGVhciA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29v
cmRfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYmE1NTUxX2RlcHRoX3N0ZW5jaWxfcmVuZGVyID0g
RkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5n
Lm5hdGl2ZV93aW5kb3cucmdiYTg4ODhfbm9fZGVwdGhfbm9fc3RlbmNpbF9jbGVhciA9IEZBSUwK
KzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29vcmRfbWFwcGluZy5uYXRp
dmVfd2luZG93LnJnYmE4ODg4X25vX2RlcHRoX25vX3N0ZW5jaWxfcmVuZGVyID0gRkFJTAorMTM0
MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93
aW5kb3cucmdiYTg4ODhfZGVwdGhfbm9fc3RlbmNpbF9jbGVhciA9IEZBSUwKKzEzNDAgV0lOIDog
ZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29vcmRfbWFwcGluZy5uYXRpdmVfd2luZG93LnJn
YmE4ODg4X2RlcHRoX25vX3N0ZW5jaWxfcmVuZGVyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTg4ODhf
ZGVwdGhfc3RlbmNpbF9jbGVhciA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25h
bC5uYXRpdmVfY29vcmRfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYmE4ODg4X2RlcHRoX3N0ZW5j
aWxfcmVuZGVyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmdldF9wcm9j
X2FkZHJlc3MuZXh0ZW5zaW9uLmVnbF9leHRfcGxhdGZvcm1fYmFzZSA9IEZBSUwKKzEzNDAgV0lO
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5wcmVzZXJ2ZV9zd2FwLnByZXNlcnZlLm5vX3JlYWRfYmVm
b3JlX3N3YXAuKiA9IFNLSVAKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5wcmVzZXJ2
ZV9zd2FwLnByZXNlcnZlLnJlYWRfYmVmb3JlX3N3YXAuKiA9IFNLSVAKKzEzNDAgV0lOIDogZEVR
UC1FR0wuZnVuY3Rpb25hbC5yZXNpemUuYmFja19idWZmZXIuKiA9IFNLSVAKKzEzNDAgV0lOIDog
ZEVRUC1FR0wuZnVuY3Rpb25hbC5yZXNpemUucGl4ZWxfZGVuc2l0eS4qID0gU0tJUApJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9kZXFwX2dsZXMy
X3Rlc3RfZXhwZWN0YXRpb25zLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2RlcXBfZ2xlczJfdGVzdF9leHBlY3RhdGlvbnMu
dHh0CShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9k
ZXFwX3N1cHBvcnQvZGVxcF9nbGVzMl90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwyNDQgQEAKKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBUaGlzIGZpbGUgY29udGFpbnMgYSBsaXN0IG9m
IGRlZmVjdGl2ZSBkRVFQIGNvbmZvcm1hbmNlIHRlc3RzLiBUaGUgZXhwZWN0ZWQKKy8vIGZvcm1h
dCBpczoKKy8vICB7QlVHI30ge01PRElGSUVSU30gOiB7VEVTVF9OQU1FfSA9IHtQQVNTLEZBSUws
RkxBS1ksVElNRU9VVCxTS0lQfQorLy8KKy8vIE1PRElGSUVSUyBjYW4gYmUgYSBjb21iaW5hdGlv
biBvZiB0aGUgYmVsb3cgbGlzdDoKKy8vICBXSU4gWFAgVklTVEEgV0lONyBNQUMgTEVPUEFSRCBT
Tk9XTEVPUEFSRCBMSU9OIExJTlVYIENIUk9NRU9TIE1PVU5UQUlOTElPTgorLy8gIE1BVkVSSUNL
UworLy8gIE5WSURJQSBBTUQgSU5URUwKKy8vICAweGFiY2QgLSBHUFUgUENJIGRldmljZSBJRC4g
U3BlY2lmeWluZyBhIFBDSSBpZCByZXF1aXJlcyBhIHZlbmRvci4KKy8vICBERUJVRyBSRUxFQVNF
CisvLyBUT0RPKGptYWRpbGwpOiBBZGQgQU5HTEUgUmVuZGVyZXIgc2VsZWN0aW9uIG1vZGlmaWVy
cworLy8KKy8vIFRFU1RfTkFNRSBjYW4gYmUgYSBzcGVjaWZpYyB0ZXN0IG5hbWUsIG9yIGhhdmUg
YSAnKicgaW4gdGhlIGVuZCwgd2hpY2gKKy8vIGluZGljYXRlcyBhIHByZWZpeCBtYXRjaGluZy4K
Ky8vCisvLyBFeGFtcGxlczoKKy8vICA5MTUzMCBNQUMgV0lOIExJTlVYIDogY29udGV4dF9sb3N0
X3Jlc3RvcmVkID0gVElNRU9VVAorLy8gIDkxNTMzIFdJTiA6IGdsX21pbl91bmlmb3JtcyA9IEZB
SUwKKy8vICA5MTUzMSBNQUMgV0lOIExJTlVYIDogY29uZm9ybWFuY2VfbW9yZV8qID0gU0tJUAor
Ly8gIDkxNTMyIE1BQyBOVklESUEgMHgwNjQwIDogdGV4X2ltYWdlX2FuZF9zdWJfaW1hZ2VfMmRf
d2l0aF92aWRlbyA9IFBBU1MgRkFJTAorCisvLyBUT0RPKGptYWRpbGwpOiBGaWd1cmUgb3V0IHdo
eSB0aGVzZSBmYWlsIG9uIHRoZSBib3RzLCBidXQgbm90IGxvY2FsbHkuCisxMDE4IFdJTiA6IGRF
UVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLmludmFyaWFuY2UuaGlnaHAubG9vcF8yID0gRkFJ
TAorMTAxOCBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNlLm1l
ZGl1bXAubG9vcF8yID0gRkFJTAorCisvLyBTa2lwIHRoZXNlIHRlc3RzIGR1ZSB0byB0aW1lb3V0
cworMTAzNCBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZsdXNoX2Zpbmlz
aC4qID0gU0tJUAorCisvLyBEb24ndCBydW4gdGhlc2UgdGVzdHMgZm9yIGZhc3RlciB0dXJub3Zl
cgorOTk4IFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLnBlcmZvcm1hbmNlLiogPSBTS0lQCis5
OTggV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuc3RyZXNzLiogPSBTS0lQCisKKy8vIFRlc3Rz
IHRoYXQgd2UgZmFpbCBiZWNhdXNlIHRoZXkncmUgbm90IGluIGxpbmUgd2l0aCB0aGUgV2ViR0wg
c3BlYworMTMzNSBXSU4gTElOVVggTUFDIEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwu
c2hhZGVycy5wcmVwcm9jZXNzb3IuY29uZGl0aW9uYWxfaW5jbHVzaW9uLmJhc2ljXzIqID0gRkFJ
TAorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vICBUZW1wb3JhcnkgZW50cmllczog
dGhleSBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIHRoZSBidWdzIGFyZSBmaXhlZC4KKy8vCisvLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLworCisvLyBXaW5kb3dzIG9ubHkgZmFpbHVyZXMKKworLy8gVGhl
c2UgdGVzdHMgY3Jhc2ggZm9yIHVua25vd24gcmVhc29uIHVuZGVyIGEgbmV3ZXIgRDNEQ29tcGls
ZXJfNDcuZGxsCisvLyBUT0RPKGptYWRpbGwpOiBGaWd1cmUgb3V0IGlmIHdlIGNhbiBzb2x2ZSB0
aGVzZSBjcmFzaGVzCisxMjUyIFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLnJh
bmRvbS50cmlnb25vbWV0cmljLnZlcnRleC42MyA9IFNLSVAKKzEyNTIgV0lOIDogZEVRUC1HTEVT
Mi5mdW5jdGlvbmFsLnNoYWRlcnMucmFuZG9tLnRyaWdvbm9tZXRyaWMuZnJhZ21lbnQuNjMgPSBT
S0lQCisKKy8vIFRPRE8oam1hZGlsbCk6IHRyaWFnZSB0aGVzZSBpbnRvIHRlbXBvcmFyeSBhbmQg
cGVybWFuZW50IHN1cHByZXNzaW9ucworCisxMDI3IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25h
bC5mYm8ucmVuZGVyLmNvbG9yX2NsZWFyLnJib19yZ2I1X2ExID0gRkFJTAorMTAyNyBXSU4gOiBk
RVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLnJlbmRlci5jb2xvcl9jbGVhci5yYm9fcmdiNV9hMV9z
dGVuY2lsX2luZGV4OCA9IEZBSUwKKzEwMjcgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZi
by5yZW5kZXIuY29sb3JfY2xlYXIucmJvX3JnYjVfYTFfZGVwdGhfY29tcG9uZW50MTYgPSBGQUlM
CisxMDI3IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8ucmVuZGVyLnN0ZW5jaWxfY2xl
YXIucmJvX3JnYjVfYTFfc3RlbmNpbF9pbmRleDggPSBGQUlMCisxMDI3IFdJTiA6IGRFUVAtR0xF
UzIuZnVuY3Rpb25hbC5mYm8ucmVuZGVyLnNoYXJlZF9jb2xvcmJ1ZmZlci50ZXgyZF9yZ2Jfc3Rl
bmNpbF9pbmRleDggPSBGQUlMCisxMDI3IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8u
cmVuZGVyLnNoYXJlZF9jb2xvcmJ1ZmZlci50ZXgyZF9yZ2JhX3N0ZW5jaWxfaW5kZXg4ID0gRkFJ
TAorMTAyNyBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLnJlbmRlci5zaGFyZWRfY29s
b3JidWZmZXIucmJvX3JnYjU2NV9zdGVuY2lsX2luZGV4OCA9IEZBSUwKKzEwMjcgV0lOIDogZEVR
UC1HTEVTMi5mdW5jdGlvbmFsLmZiby5yZW5kZXIuc2hhcmVkX2NvbG9yYnVmZmVyLnJib19yZ2I1
X2ExX3N0ZW5jaWxfaW5kZXg4ID0gRkFJTAorMTAyNyBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9u
YWwuZmJvLnJlbmRlci5zaGFyZWRfY29sb3JidWZmZXIucmJvX3JnYmE0X3N0ZW5jaWxfaW5kZXg4
ID0gRkFJTAorMTAyNyBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLnJlbmRlci5yZWNy
ZWF0ZV9jb2xvcmJ1ZmZlci5yZWJpbmRfdGV4MmRfcmdiX3N0ZW5jaWxfaW5kZXg4ID0gRkFJTAor
MTAyNyBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLnJlbmRlci5yZWNyZWF0ZV9jb2xv
cmJ1ZmZlci5yZWJpbmRfdGV4MmRfcmdiYV9zdGVuY2lsX2luZGV4OCA9IEZBSUwKKzEwMjcgV0lO
IDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5yZW5kZXIucmVjcmVhdGVfY29sb3JidWZmZXIu
cmViaW5kX3Jib19yZ2I1NjVfc3RlbmNpbF9pbmRleDggPSBGQUlMCisxMDI3IFdJTiA6IGRFUVAt
R0xFUzIuZnVuY3Rpb25hbC5mYm8ucmVuZGVyLnJlY3JlYXRlX2NvbG9yYnVmZmVyLnJlYmluZF9y
Ym9fcmdiNV9hMV9zdGVuY2lsX2luZGV4OCA9IEZBSUwKKzEwMjcgV0lOIDogZEVRUC1HTEVTMi5m
dW5jdGlvbmFsLmZiby5yZW5kZXIucmVjcmVhdGVfY29sb3JidWZmZXIucmViaW5kX3Jib19yZ2Jh
NF9zdGVuY2lsX2luZGV4OCA9IEZBSUwKKzEwMjcgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFs
LmZiby5yZW5kZXIucmVjcmVhdGVfY29sb3JidWZmZXIubm9fcmViaW5kX3RleDJkX3JnYl9zdGVu
Y2lsX2luZGV4OCA9IEZBSUwKKzEwMjcgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5y
ZW5kZXIucmVjcmVhdGVfY29sb3JidWZmZXIubm9fcmViaW5kX3RleDJkX3JnYmFfc3RlbmNpbF9p
bmRleDggPSBGQUlMCisxMDMzIFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5wb2x5Z29uX29m
ZnNldC5maXhlZDE2X3JlbmRlcl93aXRoX3VuaXRzID0gRkFJTAorMTAxNyBXSU4gOiBkRVFQLUdM
RVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5mb3JfY29uc3RhbnRfaXRlcmF0aW9ucy5uZXN0
ZWRfdHJpY2t5X2RhdGFmbG93XyogPSBGQUlMCisxMDE3IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rp
b25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX2NvbnN0YW50X2l0ZXJhdGlvbnMubmVzdGVkX3RyaWNr
eV9kYXRhZmxvd18qID0gRkFJTAorMTAxNyBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hh
ZGVycy5sb29wcy5kb193aGlsZV9jb25zdGFudF9pdGVyYXRpb25zLm5lc3RlZF90cmlja3lfZGF0
YWZsb3dfKiA9IEZBSUwKKzk4OSBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5w
cmVwcm9jZXNzb3IucHJhZ21hcy5pbnZhbGlkX3ByYWdtYV9pbnZhbGlkXyogPSBGQUlMCisxMDE4
IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnZl
cnRleC50ZXh0dXJlY3ViZWxvZCA9IEZBSUwKKzEwMjAgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlv
bmFsLnRleHR1cmUubWlwbWFwLmN1YmUuYmFzaWMubGluZWFyX25lYXJlc3QgPSBGQUlMCisxMDIw
IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC5jdWJlLmJhc2ljLmxp
bmVhcl9saW5lYXIgPSBGQUlMCisxMDIwIFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0
dXJlLm1pcG1hcC5jdWJlLnByb2plY3RlZC5saW5lYXJfbmVhcmVzdCA9IEZBSUwKKzEwMjAgV0lO
IDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLmN1YmUuYmlhcy5saW5lYXJf
bmVhcmVzdCA9IEZBSUwKKzEwMjAgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUu
bWlwbWFwLmN1YmUuYmlhcy5saW5lYXJfbGluZWFyID0gRkFJTAorMTAyNSBXSU4gOiBkRVFQLUdM
RVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmRlcHRoX3N0ZW5jaWwuc3RlbmNpbF9kZXB0aF9m
dW5jcy5zdGVuY2lsXyogPSBGQUlMCisxMDI1IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5m
cmFnbWVudF9vcHMuZGVwdGhfc3RlbmNpbC5zdGVuY2lsX29wcy4qID0gRkFJTAorMTAyNSBXSU4g
OiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmRlcHRoX3N0ZW5jaWwud3JpdGVf
bWFzay4qID0gRkFJTAorMTAyNSBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRf
b3BzLmRlcHRoX3N0ZW5jaWwucmFuZG9tLiogPSBGQUlMCisxMDI1IFdJTiA6IGRFUVAtR0xFUzIu
ZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMu
YWRkX2NvbnN0YW50X2NvbG9yX2NvbnN0YW50X2FscGhhID0gRkFJTAorMTAyNSBXSU4gOiBkRVFQ
LUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmVxdWF0aW9uX3NyY19mdW5jX2Rz
dF9mdW5jLmFkZF9jb25zdGFudF9jb2xvcl9vbmVfbWludXNfY29uc3RhbnRfYWxwaGEgPSBGQUlM
CisxMDI1IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZXF1
YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX29uZV9taW51c19jb25zdGFudF9jb2xvcl9jb25z
dGFudF9hbHBoYSA9IEZBSUwKKzEwMjUgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdt
ZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfb25lX21pbnVzX2Nv
bnN0YW50X2NvbG9yX29uZV9taW51c19jb25zdGFudF9hbHBoYSA9IEZBSUwKKzEwMjUgV0lOIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVu
Y19kc3RfZnVuYy5hZGRfY29uc3RhbnRfYWxwaGFfY29uc3RhbnRfY29sb3IgPSBGQUlMCisxMDI1
IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZXF1YXRpb25f
c3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX2NvbnN0YW50X2FscGhhX29uZV9taW51c19jb25zdGFudF9j
b2xvciA9IEZBSUwKKzEwMjUgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29w
cy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfb25lX21pbnVzX2NvbnN0YW50
X2FscGhhX2NvbnN0YW50X2NvbG9yID0gRkFJTAorMTAyNSBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0
aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLmFkZF9v
bmVfbWludXNfY29uc3RhbnRfYWxwaGFfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yID0gRkFJTAor
MTAyNSBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmVxdWF0
aW9uX3NyY19mdW5jX2RzdF9mdW5jLnN1YnRyYWN0X2NvbnN0YW50X2NvbG9yX2NvbnN0YW50X2Fs
cGhhID0gRkFJTAorMTAyNSBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3Bz
LmJsZW5kLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnN1YnRyYWN0X2NvbnN0YW50X2NvbG9y
X29uZV9taW51c19jb25zdGFudF9hbHBoYSA9IEZBSUwKKzEwMjUgV0lOIDogZEVRUC1HTEVTMi5m
dW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5z
dWJ0cmFjdF9vbmVfbWludXNfY29uc3RhbnRfY29sb3JfY29uc3RhbnRfYWxwaGEgPSBGQUlMCisx
MDI1IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZXF1YXRp
b25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3Rfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yX29u
ZV9taW51c19jb25zdGFudF9hbHBoYSA9IEZBSUwKKzEwMjUgV0lOIDogZEVRUC1HTEVTMi5mdW5j
dGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0
cmFjdF9jb25zdGFudF9hbHBoYV9jb25zdGFudF9jb2xvciA9IEZBSUwKKzEwMjUgV0lOIDogZEVR
UC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19k
c3RfZnVuYy5zdWJ0cmFjdF9jb25zdGFudF9hbHBoYV9vbmVfbWludXNfY29uc3RhbnRfY29sb3Ig
PSBGQUlMCisxMDI1IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxl
bmQuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3Rfb25lX21pbnVzX2NvbnN0YW50
X2FscGhhX2NvbnN0YW50X2NvbG9yID0gRkFJTAorMTAyNSBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0
aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnN1YnRy
YWN0X29uZV9taW51c19jb25zdGFudF9hbHBoYV9vbmVfbWludXNfY29uc3RhbnRfY29sb3IgPSBG
QUlMCisxMDI1IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQu
ZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFjdF9jb25zdGFudF9jb2xv
cl9jb25zdGFudF9hbHBoYSA9IEZBSUwKKzEwMjUgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFs
LmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1
YnRyYWN0X2NvbnN0YW50X2NvbG9yX29uZV9taW51c19jb25zdGFudF9hbHBoYSA9IEZBSUwKKzEw
MjUgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlv
bl9zcmNfZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1YnRyYWN0X29uZV9taW51c19jb25zdGFudF9j
b2xvcl9jb25zdGFudF9hbHBoYSA9IEZBSUwKKzEwMjUgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlv
bmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZlcnNl
X3N1YnRyYWN0X29uZV9taW51c19jb25zdGFudF9jb2xvcl9vbmVfbWludXNfY29uc3RhbnRfYWxw
aGEgPSBGQUlMCisxMDI1IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMu
YmxlbmQuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFjdF9jb25zdGFu
dF9hbHBoYV9jb25zdGFudF9jb2xvciA9IEZBSUwKKzEwMjUgV0lOIDogZEVRUC1HTEVTMi5mdW5j
dGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZl
cnNlX3N1YnRyYWN0X2NvbnN0YW50X2FscGhhX29uZV9taW51c19jb25zdGFudF9jb2xvciA9IEZB
SUwKKzEwMjUgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5l
cXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1YnRyYWN0X29uZV9taW51c19jb25z
dGFudF9hbHBoYV9jb25zdGFudF9jb2xvciA9IEZBSUwKKzEwMjUgV0lOIDogZEVRUC1HTEVTMi5m
dW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5y
ZXZlcnNlX3N1YnRyYWN0X29uZV9taW51c19jb25zdGFudF9hbHBoYV9vbmVfbWludXNfY29uc3Rh
bnRfY29sb3IgPSBGQUlMCisxNDE4IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5jbGlwcGlu
Zy50cmlhbmdsZV92ZXJ0ZXguY2xpcF90aHJlZS5jbGlwX3Bvc194X3Bvc195X3Bvc196X2FuZF9u
ZWdfeF9wb3NfeV9wb3Nfel9hbmRfbmVnX3hfbmVnX3lfbmVnX3ogPSBGQUlMCisKKy8vIEZhaWx1
cmVzIG9uIHRoZSBkRVFQIFdpbmRvd3MgYm90cyB0aGF0IGRvIG5vdCByZXByb2R1Y2UgbG9jYWxs
eQorMTEwOCBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5zdHJ1Y3QubG9jYWwu
ZHluYW1pY19sb29wX3N0cnVjdF9hcnJheV9mcmFnbWVudCA9IEZBSUwKKworLy8gTGludXggb25s
eSBmYWlsdXJlcworCisxMDUxIExJTlVYIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMu
ZnVuY3Rpb25zLmFycmF5X2FyZ3VtZW50cy5jb3B5X2dsb2JhbF9pbm91dF9vbl9jYWxsX2ZyYWdt
ZW50ID0gRkFJTAorMTA1MSBMSU5VWCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLmZ1
bmN0aW9ucy5hcnJheV9hcmd1bWVudHMuY29weV9nbG9iYWxfaW5vdXRfb25fY2FsbF92ZXJ0ZXgg
PSBGQUlMCisxMDE5IExJTlVYIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUuc2l6ZS5j
dWJlLjI1NngyNTZfcmdiYTQ0NDQgPSBGQUlMCisxMDE5IExJTlVYIDogZEVRUC1HTEVTMi5mdW5j
dGlvbmFsLnRleHR1cmUuc2l6ZS5jdWJlLjUxMng1MTJfcmdiYTQ0NDQgPSBGQUlMCisxMDIwIExJ
TlVYIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLjJkLnByb2plY3RlZC5u
ZWFyZXN0X2xpbmVhciogPSBGQUlMCisxMDIwIExJTlVYIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFs
LnRleHR1cmUubWlwbWFwLjJkLnByb2plY3RlZC5saW5lYXJfbGluZWFyKiA9IEZBSUwKKworLy8g
RmFpbHVyZXMgb24gdGhlIExpbnV4IGRFUVAgYm90IHRoYXQgZG8gbm90IGFwcGVhciBvbiB0aGUg
d29ya3N0YXRpb24KKzExNDMgTElOVVggOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5y
YW5kb20uYWxsX2ZlYXR1cmVzLnZlcnRleC4xMyA9IEZBSUwKKzExNDMgTElOVVggOiBkRVFQLUdM
RVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNlLm1lZGl1bXAuY29tbW9uX3N1YmV4cHJl
c3Npb25fMSA9IEZBSUwKKzExNDMgTElOVVggOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVy
cy5pbnZhcmlhbmNlLmhpZ2hwLmNvbW1vbl9zdWJleHByZXNzaW9uXzEgPSBGQUlMCisxMTQzIExJ
TlVYIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLmN1YmUucHJvamVjdGVk
LmxpbmVhcl9uZWFyZXN0ID0gRkFJTAorCisvLyBNYWMgc3BlY2lmaWMgZmFpbHVyZXMKKzExNDMg
TUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMuaW52YXJpYW5jZS5tZWRpdW1wLmNv
bW1vbl9zdWJleHByZXNzaW9uXzEgPSBGQUlMCisxMTQzIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rp
b25hbC5zaGFkZXJzLmludmFyaWFuY2UuaGlnaHAuY29tbW9uX3N1YmV4cHJlc3Npb25fMSA9IEZB
SUwKKzExNDMgTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMucHJlcHJvY2Vzc29y
LnByYWdtYXMucHJhZ21hXyogPSBGQUlMCisxMTQzIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25h
bC5zaGFkZXJzLmxpbmthZ2UudmFyeWluZ180ID0gRkFJTAorMTE0MyBNQUMgOiBkRVFQLUdMRVMy
LmZ1bmN0aW9uYWwuc2hhZGVycy5zY29waW5nLnZhbGlkLmxvY2FsX2ludF92YXJpYWJsZV9oaWRl
c19zdHJ1Y3RfdHlwZV8qID0gRkFJTAorMTE0MyBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwu
c2hhZGVycy5zY29waW5nLnZhbGlkLmxvY2FsX3N0cnVjdF92YXJpYWJsZV9oaWRlc19zdHJ1Y3Rf
dHlwZV8qID0gRkFJTAorMTE0MyBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5z
Y29waW5nLnZhbGlkLmZ1bmN0aW9uX3BhcmFtZXRlcl9oaWRlc19zdHJ1Y3RfdHlwZV8qID0gRkFJ
TAorMTE0MyBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNlLmhp
Z2hwLmNvbW1vbl9zdWJleHByZXNzaW9uXzMgPSBGQUlMCisxMTQzIE1BQyA6IGRFUVAtR0xFUzIu
ZnVuY3Rpb25hbC5zaGFkZXJzLmludmFyaWFuY2UuaGlnaHAubG9vcF8wID0gRkFJTAorMTE0MyBN
QUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNlLmhpZ2hwLmxvb3Bf
MSA9IEZBSUwKKzExNDMgTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMuaW52YXJp
YW5jZS5tZWRpdW1wLmNvbW1vbl9zdWJleHByZXNzaW9uXzMgPSBGQUlMCisxMTQzIE1BQyA6IGRF
UVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLmludmFyaWFuY2UubWVkaXVtcC5sb29wXzAgPSBG
QUlMCisxMTQzIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLmludmFyaWFuY2Uu
bWVkaXVtcC5sb29wXzEgPSBGQUlMCisxMTQzIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5z
aGFkZXJzLmludmFyaWFuY2UubG93cC5jb21tb25fc3ViZXhwcmVzc2lvbl8xID0gRkFJTAorMTE0
MyBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNlLmxvd3AuY29t
bW9uX3N1YmV4cHJlc3Npb25fMyA9IEZBSUwKKzExNDMgTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlv
bmFsLnNoYWRlcnMuaW52YXJpYW5jZS5sb3dwLmxvb3BfMCA9IEZBSUwKKzExNDMgTUFDIDogZEVR
UC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMuaW52YXJpYW5jZS5sb3dwLmxvb3BfMSA9IEZBSUwK
KzExNDMgTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMucmFuZG9tLnRyaWdvbm9t
ZXRyaWMudmVydGV4LjQzID0gRkFJTAorMTE0MyBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwu
c2hhZGVycy5yYW5kb20udHJpZ29ub21ldHJpYy52ZXJ0ZXguNjUgPSBGQUlMCisxMTQzIE1BQyA6
IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLnNpemUuY3ViZS4yNTZ4MjU2X3JnYmE0NDQ0
ID0gRkFJTAorMTE0MyBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5zaXplLmN1
YmUuNTEyeDUxMl9yZ2JhNDQ0NCA9IEZBSUwKKzExNDMgTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlv
bmFsLnRleHR1cmUubWlwbWFwLmN1YmUucHJvamVjdGVkLmxpbmVhcl9saW5lYXIgPSBGQUlMCisx
MTQzIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLnNwZWNpZmljYXRpb24uYmFz
aWNfY29weXRleGltYWdlMmQuY3ViZV8qID0gRkFJTAorCisvLyBBbmRyb2lkIG9ubHkgZmFpbHVy
ZXMKKzE0ODQgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC52ZXJ0ZXhfYXJyYXlzLiog
PSBTS0lQCisxNDg1IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuY2xpcHBpbmcudHJp
YW5nbGVfdmVydGV4LmNsaXBfdGhyZWUuY2xpcF9uZWdfeF9uZWdfel9hbmRfcG9zX3hfcG9zX3pf
YW5kX25lZ194X25lZ195X3Bvc196ID0gRkFJTAorMTQ4NiBBTkRST0lEIDogZEVRUC1HTEVTMi5m
dW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MuYXR0YWNobWVudF9jb21iaW5hdGlvbnMubm9uZV9u
b25lX25vbmVfdGV4ID0gRkFJTAorMTQ4NiBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFs
LmZiby5jb21wbGV0ZW5lc3MuYXR0YWNobWVudF9jb21iaW5hdGlvbnMubm9uZV9ub25lX3Jib190
ZXggPSBGQUlMCisxNDg2IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLmNvbXBs
ZXRlbmVzcy5hdHRhY2htZW50X2NvbWJpbmF0aW9ucy5ub25lX25vbmVfdGV4X25vbmUgPSBGQUlM
CisxNDg2IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5h
dHRhY2htZW50X2NvbWJpbmF0aW9ucy5ub25lX25vbmVfdGV4X3JibyA9IEZBSUwKKzE0ODYgQU5E
Uk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNzLmF0dGFjaG1lbnRf
Y29tYmluYXRpb25zLm5vbmVfbm9uZV90ZXhfdGV4ID0gRkFJTAorMTQ4NiBBTkRST0lEIDogZEVR
UC1HTEVTMi5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MuYXR0YWNobWVudF9jb21iaW5hdGlv
bnMucmJvX25vbmVfbm9uZV90ZXggPSBGQUlMCisxNDg2IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1
bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5hdHRhY2htZW50X2NvbWJpbmF0aW9ucy5yYm9fbm9u
ZV9yYm9fdGV4ID0gRkFJTAorMTQ4NiBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZi
by5jb21wbGV0ZW5lc3MuYXR0YWNobWVudF9jb21iaW5hdGlvbnMucmJvX25vbmVfdGV4X25vbmUg
PSBGQUlMCisxNDg2IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRl
bmVzcy5hdHRhY2htZW50X2NvbWJpbmF0aW9ucy5yYm9fbm9uZV90ZXhfcmJvID0gRkFJTAorMTQ4
NiBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MuYXR0YWNo
bWVudF9jb21iaW5hdGlvbnMucmJvX25vbmVfdGV4X3RleCA9IEZBSUwKKzE0ODYgQU5EUk9JRCA6
IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNzLmF0dGFjaG1lbnRfY29tYmlu
YXRpb25zLnRleF9ub25lX25vbmVfdGV4ID0gRkFJTAorMTQ4NiBBTkRST0lEIDogZEVRUC1HTEVT
Mi5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MuYXR0YWNobWVudF9jb21iaW5hdGlvbnMudGV4
X25vbmVfcmJvX3RleCA9IEZBSUwKKzE0ODYgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25h
bC5mYm8uY29tcGxldGVuZXNzLmF0dGFjaG1lbnRfY29tYmluYXRpb25zLnRleF9ub25lX3RleF9u
b25lID0gRkFJTAorMTQ4NiBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5jb21w
bGV0ZW5lc3MuYXR0YWNobWVudF9jb21iaW5hdGlvbnMudGV4X25vbmVfdGV4X3JibyA9IEZBSUwK
KzE0ODYgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNzLmF0
dGFjaG1lbnRfY29tYmluYXRpb25zLnRleF9ub25lX3RleF90ZXggPSBGQUlMCisxNDg3IEFORFJP
SUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5yZW5kZXJhYmxlLnRl
eHR1cmUuY29sb3IwLmRlcHRoX3N0ZW5jaWxfdW5zaWduZWRfaW50XzI0XzggPSBGQUlMCisxNDg3
IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5yZW5kZXJh
YmxlLnRleHR1cmUuY29sb3IwLnNyZ2I4ID0gRkFJTAorMTQ4NyBBTkRST0lEIDogZEVRUC1HTEVT
Mi5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MucmVuZGVyYWJsZS50ZXh0dXJlLnN0ZW5jaWwu
ZGVwdGhfc3RlbmNpbF91bnNpZ25lZF9pbnRfMjRfOCA9IEZBSUwKKzE0ODcgQU5EUk9JRCA6IGRF
UVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNzLnJlbmRlcmFibGUudGV4dHVyZS5z
dGVuY2lsLnNyZ2I4ID0gRkFJTAorMTQ4NyBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFs
LmZiby5jb21wbGV0ZW5lc3MucmVuZGVyYWJsZS50ZXh0dXJlLmRlcHRoLmRlcHRoX3N0ZW5jaWxf
dW5zaWduZWRfaW50XzI0XzggPSBGQUlMCisxNDg3IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0
aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5yZW5kZXJhYmxlLnRleHR1cmUuZGVwdGguc3JnYjggPSBG
QUlMCisxNDg4IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5yZXR1cm4u
Y29uZGl0aW9uYWxfcmV0dXJuX2Fsd2F5c192ZXJ0ZXggPSBGQUlMCisxNDg4IEFORFJPSUQgOiBk
RVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5yZXR1cm4uY29uZGl0aW9uYWxfcmV0dXJuX2Fs
d2F5c19mcmFnbWVudCA9IEZBSUwKKzE0ODggQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25h
bC5zaGFkZXJzLnJldHVybi5vdXRwdXRfd3JpdGVfYWx3YXlzX3ZlcnRleCA9IEZBSUwKKzE0ODgg
QU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLnJldHVybi5vdXRwdXRfd3Jp
dGVfYWx3YXlzX2ZyYWdtZW50ID0gRkFJTAorMTQ4OSBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5j
dGlvbmFsLnRleHR1cmUubWlwbWFwLjJkLmdlbmVyYXRlLmE4X2Zhc3Rlc3QgPSBGQUlMCisxNDg5
IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuMmQuZ2VuZXJh
dGUuYThfbmljZXN0ID0gRkFJTAorMTQ4OSBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFs
LnRleHR1cmUubWlwbWFwLjJkLmdlbmVyYXRlLmw4X2Zhc3Rlc3QgPSBGQUlMCisxNDg5IEFORFJP
SUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuMmQuZ2VuZXJhdGUubDhf
bmljZXN0ID0gRkFJTAorMTQ4OSBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1
cmUubWlwbWFwLjJkLmdlbmVyYXRlLmxhODhfZmFzdGVzdCA9IEZBSUwKKzE0ODkgQU5EUk9JRCA6
IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC4yZC5nZW5lcmF0ZS5sYTg4X25p
Y2VzdCA9IEZBSUwKKzE0ODkgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJl
Lm1pcG1hcC5jdWJlLmdlbmVyYXRlLmE4X2Zhc3Rlc3QgPSBGQUlMCisxNDg5IEFORFJPSUQgOiBk
RVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuY3ViZS5nZW5lcmF0ZS5hOF9uaWNl
c3QgPSBGQUlMCisxNDg5IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5t
aXBtYXAuY3ViZS5nZW5lcmF0ZS5sOF9mYXN0ZXN0ID0gRkFJTAorMTQ4OSBBTkRST0lEIDogZEVR
UC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLmN1YmUuZ2VuZXJhdGUubDhfbmljZXN0
ID0gRkFJTAorMTQ4OSBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUubWlw
bWFwLmN1YmUuZ2VuZXJhdGUubGE4OF9mYXN0ZXN0ID0gRkFJTAorMTQ4OSBBTkRST0lEIDogZEVR
UC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLmN1YmUuZ2VuZXJhdGUubGE4OF9uaWNl
c3QgPSBGQUlMCisKKy8vIFdpbmRvd3MgYW5kIExpbnV4IGZhaWx1cmVzCisxMDIwIFdJTiBMSU5V
WCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC5jdWJlLnByb2plY3RlZC5s
aW5lYXJfbGluZWFyID0gRkFJTAorCisvLyBXaW5kb3dzIExpbnV4IGFuZCBNYWMgZmFpbHVyZXMK
Kzk4OSBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMucHJlcHJv
Y2Vzc29yLmV4dGVuc2lvbnMuYWZ0ZXJfbm9uX3ByZXByb2Nlc3NpbmdfdG9rZW5zX3ZlcnRleCA9
IEZBSUwKKzk4OSBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMu
cHJlcHJvY2Vzc29yLmV4dGVuc2lvbnMuYWZ0ZXJfbm9uX3ByZXByb2Nlc3NpbmdfdG9rZW5zX2Zy
YWdtZW50ID0gRkFJTAorMTAxNSBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFs
LnNoYWRlcnMuZnVuY3Rpb25zLmludmFsaWQucmV0dXJuX2FycmF5X2luX3N0cnVjdF92ZXJ0ZXgg
PSBGQUlMCisxMDE1IFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVy
cy5mdW5jdGlvbnMuaW52YWxpZC5yZXR1cm5fYXJyYXlfaW5fc3RydWN0X2ZyYWdtZW50ID0gRkFJ
TAorMTAxNiBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMuc2Nv
cGluZy52YWxpZC5sb2NhbF92YXJpYWJsZV9oaWRlc19mdW5jdGlvbl9wYXJhbWV0ZXJfdmVydGV4
ID0gRkFJTAorMTAxNiBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRl
cnMuc2NvcGluZy52YWxpZC5sb2NhbF92YXJpYWJsZV9oaWRlc19mdW5jdGlvbl9wYXJhbWV0ZXJf
ZnJhZ21lbnQgPSBGQUlMCisxMDE2IFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9u
YWwuc2hhZGVycy5zY29waW5nLmludmFsaWQucmVkZWNsYXJlX2Z1bmN0aW9uX3ZlcnRleCA9IEZB
SUwKKzEwMTYgV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLnNj
b3BpbmcuaW52YWxpZC5yZWRlY2xhcmVfZnVuY3Rpb25fZnJhZ21lbnQgPSBGQUlMCisxMDIwIFdJ
TiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuMmQucHJv
amVjdGVkLm5lYXJlc3RfbmVhcmVzdCogPSBGQUlMCisxMDIwIFdJTiBMSU5VWCBNQUMgOiBkRVFQ
LUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuMmQucHJvamVjdGVkLmxpbmVhcl9uZWFy
ZXN0KiA9IEZBSUwKKzEwMjUgV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5m
cmFnbWVudF9vcHMucmFuZG9tLiogPSBGQUlMCisxMDI1IFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdM
RVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmludGVyYWN0aW9uLmJhc2ljX3NoYWRlci4qID0g
RkFJTAorMTAyNyBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5yZW5k
ZXIucmVwZWF0ZWRfY2xlYXIudGV4MmRfcmdiID0gRkFJTAorMTAyNyBXSU4gTElOVVggTUFDIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5yZW5kZXIucmVwZWF0ZWRfY2xlYXIudGV4MmRfcmdi
YSA9IEZBSUwKKzEwMjggV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8u
Y29tcGxldGVuZXNzLnJlbmRlcmFibGUudGV4dHVyZS5jb2xvcjAucmdiX2Zsb2F0ID0gRkFJTAor
MTAyOCBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5l
c3MucmVuZGVyYWJsZS50ZXh0dXJlLmNvbG9yMC5yZ2JfaGFsZl9mbG9hdF9vZXMgPSBGQUlMCisx
MDI4IFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVz
cy5yZW5kZXJhYmxlLnRleHR1cmUuY29sb3IwLnJnYmFfZmxvYXQgPSBGQUlMCisxMDI4IFdJTiBM
SU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5yZW5kZXJh
YmxlLnRleHR1cmUuY29sb3IwLnJnYmFfaGFsZl9mbG9hdF9vZXMgPSBGQUlMCisxMDI4IFdJTiBM
SU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5yZW5kZXJh
YmxlLnRleHR1cmUuY29sb3IwLnNyZ2I4ID0gRkFJTAorMTAyOCBXSU4gTElOVVggTUFDIDogZEVR
UC1HTEVTMi5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MucmVuZGVyYWJsZS50ZXh0dXJlLnN0
ZW5jaWwuc3JnYjggPSBGQUlMCisxMDI4IFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0
aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5yZW5kZXJhYmxlLnRleHR1cmUuZGVwdGguZGVwdGhfY29t
cG9uZW50X3Vuc2lnbmVkX3Nob3J0ID0gRkFJTAorMTAyOCBXSU4gTElOVVggTUFDIDogZEVRUC1H
TEVTMi5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MucmVuZGVyYWJsZS50ZXh0dXJlLmRlcHRo
LmRlcHRoX2NvbXBvbmVudF91bnNpZ25lZF9pbnQgPSBGQUlMCisxMDI4IFdJTiBMSU5VWCBNQUMg
OiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5yZW5kZXJhYmxlLnRleHR1
cmUuZGVwdGguc3JnYjggPSBGQUlMCisxMTI4IFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1
bmN0aW9uYWwubmVnYXRpdmVfYXBpLnRleHR1cmUuY29tcHJlc3NlZHRleHN1YmltYWdlMmRfaW52
YWxpZF9zaXplID0gRkFJTAorMTAyOSBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlv
bmFsLm5lZ2F0aXZlX2FwaS50ZXh0dXJlLnRleGltYWdlMmRfaW52YWxpZF9mb3JtYXQgPSBGQUlM
CisxMDI5IFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwubmVnYXRpdmVfYXBp
LnRleHR1cmUudGV4aW1hZ2UyZF9pbnZhbGlkX2ludGVybmFsZm9ybWF0ID0gRkFJTAorMTAyOSBX
SU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLm5lZ2F0aXZlX2FwaS50ZXh0dXJl
LnRleHN1YmltYWdlMmRfaW52YWxpZF90eXBlID0gRkFJTAorMTAyOSBXSU4gTElOVVggTUFDIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLm5lZ2F0aXZlX2FwaS50ZXh0dXJlLnRleHN1YmltYWdlMmRf
b2Zmc2V0X2FsbG93ZWQgPSBGQUlMCisxMDMwIFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1
bmN0aW9uYWwuYXR0cmlidXRlX2xvY2F0aW9uLmJpbmRfYWxpYXNpbmcuY29uZF9mbG9hdCA9IEZB
SUwKKzEwMzAgV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5hdHRyaWJ1dGVf
bG9jYXRpb24uYmluZF9hbGlhc2luZy5tYXhfY29uZF9mbG9hdCA9IEZBSUwKKzEwMzAgV0lOIExJ
TlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5hdHRyaWJ1dGVfbG9jYXRpb24uYmluZF9h
bGlhc2luZy5jb25kX3ZlYzIgPSBGQUlMCisxMDMwIFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMy
LmZ1bmN0aW9uYWwuYXR0cmlidXRlX2xvY2F0aW9uLmJpbmRfYWxpYXNpbmcubWF4X2NvbmRfdmVj
MiA9IEZBSUwKKzEwMzAgV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5hdHRy
aWJ1dGVfbG9jYXRpb24uYmluZF9hbGlhc2luZy5jb25kX3ZlYzMgPSBGQUlMCisxMDMwIFdJTiBM
SU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuYXR0cmlidXRlX2xvY2F0aW9uLmJpbmRf
YWxpYXNpbmcubWF4X2NvbmRfdmVjMyA9IEZBSUwKKzEwMzAgV0lOIExJTlVYIE1BQyA6IGRFUVAt
R0xFUzIuZnVuY3Rpb25hbC5hdHRyaWJ1dGVfbG9jYXRpb24uYmluZF9hbGlhc2luZy5jb25kX3Zl
YzQgPSBGQUlMCisxMDMwIFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuYXR0
cmlidXRlX2xvY2F0aW9uLmJpbmRfYWxpYXNpbmcubWF4X2NvbmRfdmVjNCA9IEZBSUwKKzEwMzAg
V0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5hdHRyaWJ1dGVfbG9jYXRpb24u
YmluZF9hbGlhc2luZy5jb25kX21hdDIgPSBGQUlMCisxMDMwIFdJTiBMSU5VWCBNQUMgOiBkRVFQ
LUdMRVMyLmZ1bmN0aW9uYWwuYXR0cmlidXRlX2xvY2F0aW9uLmJpbmRfYWxpYXNpbmcuY29uZF9t
YXQyX29mZnNldF8xID0gRkFJTAorMTAzMCBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5j
dGlvbmFsLmF0dHJpYnV0ZV9sb2NhdGlvbi5iaW5kX2FsaWFzaW5nLm1heF9jb25kX21hdDIgPSBG
QUlMCisxMDMwIFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuYXR0cmlidXRl
X2xvY2F0aW9uLmJpbmRfYWxpYXNpbmcuY29uZF9tYXQzID0gRkFJTAorMTAzMCBXSU4gTElOVVgg
TUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmF0dHJpYnV0ZV9sb2NhdGlvbi5iaW5kX2FsaWFz
aW5nLmNvbmRfbWF0M19vZmZzZXRfMSA9IEZBSUwKKzEwMzAgV0lOIExJTlVYIE1BQyA6IGRFUVAt
R0xFUzIuZnVuY3Rpb25hbC5hdHRyaWJ1dGVfbG9jYXRpb24uYmluZF9hbGlhc2luZy5tYXhfY29u
ZF9tYXQzID0gRkFJTAorMTAzMCBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFs
LmF0dHJpYnV0ZV9sb2NhdGlvbi5iaW5kX2FsaWFzaW5nLmNvbmRfbWF0NCA9IEZBSUwKKzEwMzAg
V0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5hdHRyaWJ1dGVfbG9jYXRpb24u
YmluZF9hbGlhc2luZy5jb25kX21hdDRfb2Zmc2V0XzEgPSBGQUlMCisxMDMwIFdJTiBMSU5VWCBN
QUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuYXR0cmlidXRlX2xvY2F0aW9uLmJpbmRfYWxpYXNp
bmcubWF4X2NvbmRfbWF0NCA9IEZBSUwKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9kZXFwX3N1cHBvcnQvZGVxcF9nbGVzMzFfdGVzdF9leHBlY3RhdGlvbnMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBv
cnQvZGVxcF9nbGVzMzFfdGVzdF9leHBlY3RhdGlvbnMudHh0CShub25leGlzdGVudCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvZGVxcF9nbGVzMzFf
dGVzdF9leHBlY3RhdGlvbnMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjcgQEAKKy8v
IENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
CisvLyBUaGlzIGZpbGUgY29udGFpbnMgYSBsaXN0IG9mIGRlZmVjdGl2ZSBkRVFQIGNvbmZvcm1h
bmNlIHRlc3RzLiBUaGUgZXhwZWN0ZWQKKy8vIGZvcm1hdCBpczoKKy8vICB7QlVHI30ge01PRElG
SUVSU30gOiB7VEVTVF9OQU1FfSA9IHtQQVNTLEZBSUwsRkxBS1ksVElNRU9VVCxTS0lQfQorLy8K
Ky8vIE1PRElGSUVSUyBjYW4gYmUgYSBjb21iaW5hdGlvbiBvZiB0aGUgYmVsb3cgbGlzdDoKKy8v
ICBXSU4gWFAgVklTVEEgV0lONyBNQUMgTEVPUEFSRCBTTk9XTEVPUEFSRCBMSU9OIExJTlVYIENI
Uk9NRU9TIE1PVU5UQUlOTElPTgorLy8gIE1BVkVSSUNLUworLy8gIE5WSURJQSBBTUQgSU5URUwK
Ky8vICAweGFiY2QgLSBHUFUgUENJIGRldmljZSBJRC4gU3BlY2lmeWluZyBhIFBDSSBpZCByZXF1
aXJlcyBhIHZlbmRvci4KKy8vICBERUJVRyBSRUxFQVNFCisvLyBUT0RPKGptYWRpbGwpOiBBZGQg
QU5HTEUgUmVuZGVyZXIgc2VsZWN0aW9uIG1vZGlmaWVycworLy8KKy8vIFRFU1RfTkFNRSBjYW4g
YmUgYSBzcGVjaWZpYyB0ZXN0IG5hbWUsIG9yIGhhdmUgYSAnKicgaW4gdGhlIGVuZCwgd2hpY2gK
Ky8vIGluZGljYXRlcyBhIHByZWZpeCBtYXRjaGluZy4KKy8vCisvLyBFeGFtcGxlczoKKy8vICA5
MTUzMCBNQUMgV0lOIExJTlVYIDogY29udGV4dF9sb3N0X3Jlc3RvcmVkID0gVElNRU9VVAorLy8g
IDkxNTMzIFdJTiA6IGdsX21pbl91bmlmb3JtcyA9IEZBSUwKKy8vICA5MTUzMSBNQUMgV0lOIExJ
TlVYIDogY29uZm9ybWFuY2VfbW9yZV8qID0gU0tJUAorLy8gIDkxNTMyIE1BQyBOVklESUEgMHgw
NjQwIDogdGV4X2ltYWdlX2FuZF9zdWJfaW1hZ2VfMmRfd2l0aF92aWRlbyA9IFBBU1MgRkFJTAor
CisxNDQyIERFQlVHIDogZEVRUF9HTEVTMzEuKiA9IEZBSUwKKzE0NDIgUkVMRUFTRSA6IGRFUVBf
R0xFUzMxLiogPSBGQUlMCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
ZGVxcF9zdXBwb3J0L2RlcXBfZ2xlczNfdGVzdF9leHBlY3RhdGlvbnMudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvZGVxcF9n
bGVzM190ZXN0X2V4cGVjdGF0aW9ucy50eHQJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9kZXFwX2dsZXMzX3Rlc3RfZXhwZWN0
YXRpb25zLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5MiBAQAorLy8gQ29weXJpZ2h0
IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIFRoaXMg
ZmlsZSBjb250YWlucyBhIGxpc3Qgb2YgZGVmZWN0aXZlIGRFUVAgY29uZm9ybWFuY2UgdGVzdHMu
IFRoZSBleHBlY3RlZAorLy8gZm9ybWF0IGlzOgorLy8gIHtCVUcjfSB7TU9ESUZJRVJTfSA6IHtU
RVNUX05BTUV9ID0ge1BBU1MsRkFJTCxGTEFLWSxUSU1FT1VULFNLSVB9CisvLworLy8gTU9ESUZJ
RVJTIGNhbiBiZSBhIGNvbWJpbmF0aW9uIG9mIHRoZSBiZWxvdyBsaXN0OgorLy8gIFdJTiBYUCBW
SVNUQSBXSU43IE1BQyBMRU9QQVJEIFNOT1dMRU9QQVJEIExJT04gTElOVVggQ0hST01FT1MgTU9V
TlRBSU5MSU9OCisvLyAgTUFWRVJJQ0tTCisvLyAgTlZJRElBIEFNRCBJTlRFTAorLy8gIDB4YWJj
ZCAtIEdQVSBQQ0kgZGV2aWNlIElELiBTcGVjaWZ5aW5nIGEgUENJIGlkIHJlcXVpcmVzIGEgdmVu
ZG9yLgorLy8gIERFQlVHIFJFTEVBU0UKKy8vIFRPRE8oam1hZGlsbCk6IEFkZCBBTkdMRSBSZW5k
ZXJlciBzZWxlY3Rpb24gbW9kaWZpZXJzCisvLworLy8gVEVTVF9OQU1FIGNhbiBiZSBhIHNwZWNp
ZmljIHRlc3QgbmFtZSwgb3IgaGF2ZSBhICcqJyBpbiB0aGUgZW5kLCB3aGljaAorLy8gaW5kaWNh
dGVzIGEgcHJlZml4IG1hdGNoaW5nLgorLy8KKy8vIEV4YW1wbGVzOgorLy8gIDkxNTMwIE1BQyBX
SU4gTElOVVggOiBjb250ZXh0X2xvc3RfcmVzdG9yZWQgPSBUSU1FT1VUCisvLyAgOTE1MzMgV0lO
IDogZ2xfbWluX3VuaWZvcm1zID0gRkFJTAorLy8gIDkxNTMxIE1BQyBXSU4gTElOVVggOiBjb25m
b3JtYW5jZV9tb3JlXyogPSBTS0lQCisvLyAgOTE1MzIgTUFDIE5WSURJQSAweDA2NDAgOiB0ZXhf
aW1hZ2VfYW5kX3N1Yl9pbWFnZV8yZF93aXRoX3ZpZGVvID0gUEFTUyBGQUlMCisKKy8vIERvbid0
IHJ1biB0aGVzZSB0ZXN0cyBmb3IgZmFzdGVyIHR1cm5vdmVyCis5OTggV0lOIExJTlVYIDogZEVR
UC1HTEVTMy5wZXJmb3JtYW5jZS4qID0gU0tJUAorOTk4IFdJTiBMSU5VWCA6IGRFUVAtR0xFUzMu
c3RyZXNzLiogPSBTS0lQCisxMTAxIFdJTiBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5m
bHVzaF9maW5pc2guKiA9IFNLSVAKKworLy8gVE9ETyhqbWFkaWxsKTogRmlndXJlIG91dCB3aHkg
dGhlc2UgZmFpbCBvbiB0aGUgYm90cywgYnV0IG5vdCBsb2NhbGx5LgorMTEwOCBXSU4gOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5zdHJ1Y3QubG9jYWwuZHluYW1pY19sb29wX3N0cnVj
dF9hcnJheV9mcmFnbWVudCA9IEZBSUwKKzEwOTQgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LnNoYWRlcnMuaW52YXJpYW5jZS5oaWdocC5sb29wXzIgPSBGQUlMCisxMDk0IFdJTiA6IGRFUVAt
R0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmludmFyaWFuY2UubWVkaXVtcC5sb29wXzIgPSBGQUlM
CisKKy8vIFdlIGNhbid0IHN1cHBvcnQgZGlzdGluY3QgdGV4dHVyZSBzaXplcyBpbiBEM0QxMS4K
KzEwOTcgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3Muc2l6ZS5k
aXN0aW5jdCA9IEZBSUwKKworLy8gRmFpbCBiZWNhdXNlIHdlIHN1cHBvcnQgdGhlc2UgZm9ybWF0
cyB0aHJvdWdoIHRoZSBBTkdMRV9kZXB0aF90ZXh0dXJlIGV4dGVuc2lvbiBpbnN0ZWFkIG9mIE9F
U19kZXB0aF90ZXh0dXJlCis2MDU3NTQgTUFDIFdJTiBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC5mYm8uY29tcGxldGVuZXNzLnJlbmRlcmFibGUudGV4dHVyZS5kZXB0aC5kZXB0aF9jb21w
b25lbnRfdW5zaWduZWRfc2hvcnQgPSBGQUlMCis2MDU3NTQgTUFDIFdJTiBMSU5VWCA6IGRFUVAt
R0xFUzMuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNzLnJlbmRlcmFibGUudGV4dHVyZS5kZXB0
aC5kZXB0aF9jb21wb25lbnRfdW5zaWduZWRfaW50ID0gRkFJTAorCisvLyBUZXN0cyB0aGF0IHdl
IGZhaWwgYmVjYXVzZSB0aGV5J3JlIG5vdCBpbiBsaW5lIHdpdGggdGhlIFdlYkdMIHNwZWMKKzEz
MzUgTUFDIFdJTiBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnByZXByb2Nl
c3Nvci5jb25kaXRpb25hbF9pbmNsdXNpb24uYmFzaWNfMiogPSBGQUlMCisxMzM1IE1BQyBXSU4g
TElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5wcmVwcm9jZXNzb3IuY29uZGl0
aW9uYWxfaW5jbHVzaW9uLmRlZmluZWRfbWFjcm9fZGVmaW5lZF90ZXN0KiA9IEZBSUwKKzEzMzUg
TUFDIFdJTiBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnByZXByb2Nlc3Nv
ci5jb25kaXRpb25hbF9pbmNsdXNpb24uZGVmaW5lZF9tYWNyb191bmRlZiogPSBGQUlMCisxMzM1
IE1BQyBXSU4gTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5wcmVwcm9jZXNz
b3IuY29uZGl0aW9uYWxfaW5jbHVzaW9uLmRlZmluZV9kZWZpbmVkKiA9IEZBSUwKKzEzMzUgTUFD
IFdJTiBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnByZXByb2Nlc3Nvci5j
b25kaXRpb25hbF9pbmNsdXNpb24uZGVmaW5lX2RlZmluZWRfb3V0c2lkZV9pZiogPSBGQUlMCisK
Ky8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gIFRlbXBvcmFyeSBlbnRyaWVzOiB0aGV5
IHNob3VsZCBiZSByZW1vdmVkIG9uY2UgdGhlIGJ1Z3MgYXJlIGZpeGVkLgorLy8KKy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCisKKy8vIFRPRE8oam1hZGlsbCk6IEZpbmQgd2h5IHRoaXMgZmFpbHMg
d2hlbiBydW4gaW4gYSBjZXJ0YWluIHNlcXVlbmNlLCBidXQgbm90IHNpbmdseS4KKzEwOTggV0lO
IDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnVuaWZvcm1fYXBpLnJhbmRvbS41MCA9IEZBSUwKKwor
Ly8gTWlzc2luZyB0aGUgU2FtcGxlQ21wIGluc3RydWN0aW9uIGluIHZlcnRleCBzaGFkZXJzLgor
MTQzNSBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9u
cy50ZXh0dXJlbG9kLnNhbXBsZXIyZHNoYWRvd192ZXJ0ZXggPSBGQUlMCisxNDM1IFdJTiA6IGRF
UVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVsb2Rv
ZmZzZXQuc2FtcGxlcjJkc2hhZG93X3ZlcnRleCA9IEZBSUwKKzE0MzUgV0lOIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZXByb2psb2Quc2Ft
cGxlcjJkc2hhZG93X3ZlcnRleCA9IEZBSUwKKzE0MzUgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlv
bmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZXByb2psb2RvZmZzZXQuc2FtcGxl
cjJkc2hhZG93X3ZlcnRleCA9IEZBSUwKKworLy8gU2FtcGxlQ21wIGlzIG1pc3NpbmcgZ3JhZGll
bnQvb2Zmc2V0IHBhcmFtZXRlcnMgaW4gSExTTC4KKzE0MzYgV0lOIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZWxvZC5zYW1wbGVyMmRzaGFk
b3dfZnJhZ21lbnQgPSBGQUlMCisxNDM2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFk
ZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVsb2RvZmZzZXQuc2FtcGxlcjJkc2hhZG93X2Zy
YWdtZW50ID0gRkFJTAorMTQzNiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50
ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlcHJvamxvZC5zYW1wbGVyMmRzaGFkb3dfZnJhZ21lbnQg
PSBGQUlMCisxNDM2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVf
ZnVuY3Rpb25zLnRleHR1cmVwcm9qbG9kb2Zmc2V0LnNhbXBsZXIyZHNoYWRvd19mcmFnbWVudCA9
IEZBSUwKKzE0MzYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9m
dW5jdGlvbnMudGV4dHVyZWdyYWQuc2FtcGxlcjJkc2hhZG93X3ZlcnRleCA9IEZBSUwKKzE0MzYg
V0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4
dHVyZWdyYWQuc2FtcGxlcjJkc2hhZG93X2ZyYWdtZW50ID0gRkFJTAorMTQzNiBXSU4gOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlZ3JhZC5z
YW1wbGVyMmRhcnJheXNoYWRvd192ZXJ0ZXggPSBGQUlMCisxNDM2IFdJTiA6IGRFUVAtR0xFUzMu
ZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVncmFkLnNhbXBsZXIy
ZGFycmF5c2hhZG93X2ZyYWdtZW50ID0gRkFJTAorMTQzNiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwuc2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlZ3JhZG9mZnNldC5zYW1wbGVy
MmRzaGFkb3dfdmVydGV4ID0gRkFJTAorMTQzNiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
c2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlZ3JhZG9mZnNldC5zYW1wbGVyMmRzaGFk
b3dfZnJhZ21lbnQgPSBGQUlMCisxNDM2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFk
ZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVncmFkb2Zmc2V0LnNhbXBsZXIyZGFycmF5c2hh
ZG93X3ZlcnRleCA9IEZBSUwKKzE0MzYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRl
cnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZWdyYWRvZmZzZXQuc2FtcGxlcjJkYXJyYXlzaGFk
b3dfZnJhZ21lbnQgPSBGQUlMCisxNDM2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFk
ZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVwcm9qZ3JhZC5zYW1wbGVyMmRzaGFkb3dfdmVy
dGV4ID0gRkFJTAorMTQzNiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0
dXJlX2Z1bmN0aW9ucy50ZXh0dXJlcHJvamdyYWQuc2FtcGxlcjJkc2hhZG93X2ZyYWdtZW50ID0g
RkFJTAorMTQzNiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0dXJlX2Z1
bmN0aW9ucy50ZXh0dXJlcHJvamdyYWRvZmZzZXQuc2FtcGxlcjJkc2hhZG93X3ZlcnRleCA9IEZB
SUwKKzE0MzYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5j
dGlvbnMudGV4dHVyZXByb2pncmFkb2Zmc2V0LnNhbXBsZXIyZHNoYWRvd19mcmFnbWVudCA9IEZB
SUwKKworLy8gVE9ETyhqbWFkaWxsLCBjd2FsbGV6KTogdHJpYWdlIHRoZSBmYWlsdXJlcyBiZWxv
dyBpbnRvIHBlcm1hbmVudCBhbmQgdGVtcG9yYXJ5IGZhaWx1cmVzCisKKy8vIFdpbmRvd3MgYW5k
IExpbnV4IGZhaWx1cmVzCisKKzExMDEgV0lOIExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
Lm5lZ2F0aXZlX2FwaS50ZXh0dXJlLmNvbXByZXNzZWR0ZXhzdWJpbWFnZTJkID0gRkFJTAorMTEw
MSBXSU4gTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwubmVnYXRpdmVfYXBpLnRleHR1cmUu
Y29tcHJlc3NlZHRleHN1YmltYWdlMmRfaW52YWxpZF9zaXplID0gRkFJTAorMTEwMSBXSU4gTElO
VVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwubmVnYXRpdmVfYXBpLnRleHR1cmUuY29tcHJlc3Nl
ZHRleHN1YmltYWdlM2QgPSBGQUlMCisxMTAxIFdJTiBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC5uZWdhdGl2ZV9hcGkudGV4dHVyZS5jb21wcmVzc2VkdGV4c3ViaW1hZ2UzZF9pbnZhbGlk
X2J1ZmZlcl90YXJnZXQgPSBGQUlMCisxMDk1IFdJTiBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC50ZXh0dXJlLm1pcG1hcC4yZC5wcm9qZWN0ZWQubmVhcmVzdF9uZWFyZXN0X2NsYW1wID0g
RkFJTAorMTA5NSBXSU4gTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBt
YXAuMmQucHJvamVjdGVkLm5lYXJlc3RfbmVhcmVzdF9yZXBlYXQgPSBGQUlMCisxMDk1IFdJTiBM
SU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC4yZC5wcm9qZWN0ZWQu
bmVhcmVzdF9uZWFyZXN0X21pcnJvciA9IEZBSUwKKzEwOTUgV0lOIExJTlVYIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLjJkLnByb2plY3RlZC5saW5lYXJfbmVhcmVzdF9j
bGFtcCA9IEZBSUwKKzEwOTUgV0lOIExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1
cmUubWlwbWFwLjJkLnByb2plY3RlZC5saW5lYXJfbmVhcmVzdF9yZXBlYXQgPSBGQUlMCisxMDk1
IFdJTiBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC4yZC5wcm9q
ZWN0ZWQubGluZWFyX25lYXJlc3RfbWlycm9yID0gRkFJTAorCisvLyBXaW5kb3dzIG9ubHkgZmFp
bHVyZQorCisxMDkzIFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmJ1aWx0aW5f
ZnVuY3Rpb25zLnByZWNpc2lvbi50YW5oLmhpZ2hwX3ZlcnRleC5zY2FsYXIgPSBGQUlMCisxMDkz
IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmJ1aWx0aW5fZnVuY3Rpb25zLnBy
ZWNpc2lvbi50YW5oLmhpZ2hwX3ZlcnRleC52ZWMyID0gRkFJTAorMTA5MyBXSU4gOiBkRVFQLUdM
RVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5idWlsdGluX2Z1bmN0aW9ucy5wcmVjaXNpb24udGFuaC5o
aWdocF92ZXJ0ZXgudmVjMyA9IEZBSUwKKzEwOTMgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LnNoYWRlcnMuYnVpbHRpbl9mdW5jdGlvbnMucHJlY2lzaW9uLnRhbmguaGlnaHBfdmVydGV4LnZl
YzQgPSBGQUlMCisxMDkzIFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmJ1aWx0
aW5fZnVuY3Rpb25zLnByZWNpc2lvbi50YW5oLmhpZ2hwX2ZyYWdtZW50LnNjYWxhciA9IEZBSUwK
KzEwOTMgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMuYnVpbHRpbl9mdW5jdGlv
bnMucHJlY2lzaW9uLnRhbmguaGlnaHBfZnJhZ21lbnQudmVjMiA9IEZBSUwKKzEwOTMgV0lOIDog
ZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMuYnVpbHRpbl9mdW5jdGlvbnMucHJlY2lzaW9u
LnRhbmguaGlnaHBfZnJhZ21lbnQudmVjMyA9IEZBSUwKKzEwOTMgV0lOIDogZEVRUC1HTEVTMy5m
dW5jdGlvbmFsLnNoYWRlcnMuYnVpbHRpbl9mdW5jdGlvbnMucHJlY2lzaW9uLnRhbmguaGlnaHBf
ZnJhZ21lbnQudmVjNCA9IEZBSUwKKzEwOTIgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNo
YWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZW9mZnNldC5zYW1wbGVyM2RfZml4ZWRfZnJh
Z21lbnQgPSBGQUlMCisxMDkyIFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRl
eHR1cmVfZnVuY3Rpb25zLnRleHR1cmVvZmZzZXQuc2FtcGxlcjNkX2Zsb2F0X2ZyYWdtZW50ID0g
RkFJTAorMTA5MiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0dXJlX2Z1
bmN0aW9ucy50ZXh0dXJlcHJvam9mZnNldC5zYW1wbGVyM2RfZml4ZWRfZnJhZ21lbnQgPSBGQUlM
CisxMDkyIFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rp
b25zLnRleHR1cmVwcm9qb2Zmc2V0LnNhbXBsZXIzZF9mbG9hdF9mcmFnbWVudCA9IEZBSUwKKzEw
OTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5kZXB0aF9zdGVuY2ls
LnN0ZW5jaWxfZGVwdGhfZnVuY3Muc3RlbmNpbF8qID0gRkFJTAorMTA5NiBXSU4gOiBkRVFQLUdM
RVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmRlcHRoX3N0ZW5jaWwuc3RlbmNpbF9vcHMuKiA9
IEZBSUwKKzEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5kZXB0
aF9zdGVuY2lsLndyaXRlX21hc2suKiA9IEZBSUwKKzEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLmZyYWdtZW50X29wcy5kZXB0aF9zdGVuY2lsLnJhbmRvbS4qID0gRkFJTAorMTA5NiBX
SU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJh
bWVidWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX2NvbnN0YW50X2NvbG9yX2Nv
bnN0YW50X2FscGhhID0gRkFJTAorMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJh
Z21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0
X2Z1bmMuYWRkX2NvbnN0YW50X2NvbG9yX29uZV9taW51c19jb25zdGFudF9hbHBoYSA9IEZBSUwK
KzEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5kZWZh
dWx0X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLmFkZF9vbmVfbWludXNf
Y29uc3RhbnRfY29sb3JfY29uc3RhbnRfYWxwaGEgPSBGQUlMCisxMDk2IFdJTiA6IGRFUVAtR0xF
UzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVh
dGlvbl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yX29uZV9t
aW51c19jb25zdGFudF9hbHBoYSA9IEZBSUwKKzEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlv
bmFsLmZyYWdtZW50X29wcy5ibGVuZC5kZWZhdWx0X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3NyY19m
dW5jX2RzdF9mdW5jLmFkZF9jb25zdGFudF9hbHBoYV9jb25zdGFudF9jb2xvciA9IEZBSUwKKzEw
OTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5kZWZhdWx0
X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLmFkZF9jb25zdGFudF9hbHBo
YV9vbmVfbWludXNfY29uc3RhbnRfY29sb3IgPSBGQUlMCisxMDk2IFdJTiA6IGRFUVAtR0xFUzMu
ZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlv
bl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfb25lX21pbnVzX2NvbnN0YW50X2FscGhhX2NvbnN0YW50
X2NvbG9yID0gRkFJTAorMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRf
b3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMu
YWRkX29uZV9taW51c19jb25zdGFudF9hbHBoYV9vbmVfbWludXNfY29uc3RhbnRfY29sb3IgPSBG
QUlMCisxMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQu
ZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFjdF9j
b25zdGFudF9jb2xvcl9jb25zdGFudF9hbHBoYSA9IEZBSUwKKzEwOTYgV0lOIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5kZWZhdWx0X2ZyYW1lYnVmZmVyLmVxdWF0
aW9uX3NyY19mdW5jX2RzdF9mdW5jLnN1YnRyYWN0X2NvbnN0YW50X2NvbG9yX29uZV9taW51c19j
b25zdGFudF9hbHBoYSA9IEZBSUwKKzEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZy
YWdtZW50X29wcy5ibGVuZC5kZWZhdWx0X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5jX2Rz
dF9mdW5jLnN1YnRyYWN0X29uZV9taW51c19jb25zdGFudF9jb2xvcl9jb25zdGFudF9hbHBoYSA9
IEZBSUwKKzEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVu
ZC5kZWZhdWx0X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnN1YnRyYWN0
X29uZV9taW51c19jb25zdGFudF9jb2xvcl9vbmVfbWludXNfY29uc3RhbnRfYWxwaGEgPSBGQUlM
CisxMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZGVm
YXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFjdF9jb25z
dGFudF9hbHBoYV9jb25zdGFudF9jb2xvciA9IEZBSUwKKzEwOTYgV0lOIDogZEVRUC1HTEVTMy5m
dW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5kZWZhdWx0X2ZyYW1lYnVmZmVyLmVxdWF0aW9u
X3NyY19mdW5jX2RzdF9mdW5jLnN1YnRyYWN0X2NvbnN0YW50X2FscGhhX29uZV9taW51c19jb25z
dGFudF9jb2xvciA9IEZBSUwKKzEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdt
ZW50X29wcy5ibGVuZC5kZWZhdWx0X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9m
dW5jLnN1YnRyYWN0X29uZV9taW51c19jb25zdGFudF9hbHBoYV9jb25zdGFudF9jb2xvciA9IEZB
SUwKKzEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5k
ZWZhdWx0X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnN1YnRyYWN0X29u
ZV9taW51c19jb25zdGFudF9hbHBoYV9vbmVfbWludXNfY29uc3RhbnRfY29sb3IgPSBGQUlMCisx
MDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZGVmYXVs
dF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1YnRyYWN0
X2NvbnN0YW50X2NvbG9yX2NvbnN0YW50X2FscGhhID0gRkFJTAorMTA5NiBXSU4gOiBkRVFQLUdM
RVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1
YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFjdF9jb25zdGFudF9jb2xvcl9v
bmVfbWludXNfY29uc3RhbnRfYWxwaGEgPSBGQUlMCisxMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9z
cmNfZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1YnRyYWN0X29uZV9taW51c19jb25zdGFudF9jb2xv
cl9jb25zdGFudF9hbHBoYSA9IEZBSUwKKzEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LmZyYWdtZW50X29wcy5ibGVuZC5kZWZhdWx0X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5j
X2RzdF9mdW5jLnJldmVyc2Vfc3VidHJhY3Rfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yX29uZV9t
aW51c19jb25zdGFudF9hbHBoYSA9IEZBSUwKKzEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlv
bmFsLmZyYWdtZW50X29wcy5ibGVuZC5kZWZhdWx0X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3NyY19m
dW5jX2RzdF9mdW5jLnJldmVyc2Vfc3VidHJhY3RfY29uc3RhbnRfYWxwaGFfY29uc3RhbnRfY29s
b3IgPSBGQUlMCisxMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMu
YmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZl
cnNlX3N1YnRyYWN0X2NvbnN0YW50X2FscGhhX29uZV9taW51c19jb25zdGFudF9jb2xvciA9IEZB
SUwKKzEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5k
ZWZhdWx0X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnJldmVyc2Vfc3Vi
dHJhY3Rfb25lX21pbnVzX2NvbnN0YW50X2FscGhhX2NvbnN0YW50X2NvbG9yID0gRkFJTAorMTA5
NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1bHRf
ZnJhbWVidWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFjdF9v
bmVfbWludXNfY29uc3RhbnRfYWxwaGFfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yID0gRkFJTAor
MTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19z
cmdiLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLmFkZF9jb25zdGFudF9jb2xvcl9jb25zdGFu
dF9hbHBoYSA9IEZBSUwKKzEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50
X29wcy5ibGVuZC5mYm9fc3JnYi5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfY29uc3Rh
bnRfY29sb3Jfb25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJTAorMTA5NiBXSU4gOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3Ny
Y19mdW5jX2RzdF9mdW5jLmFkZF9vbmVfbWludXNfY29uc3RhbnRfY29sb3JfY29uc3RhbnRfYWxw
aGEgPSBGQUlMCisxMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMu
YmxlbmQuZmJvX3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX29uZV9taW51c19j
b25zdGFudF9jb2xvcl9vbmVfbWludXNfY29uc3RhbnRfYWxwaGEgPSBGQUlMCisxMDk2IFdJTiA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZmJvX3NyZ2IuZXF1YXRp
b25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX2NvbnN0YW50X2FscGhhX2NvbnN0YW50X2NvbG9yID0g
RkFJTAorMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5k
LmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLmFkZF9jb25zdGFudF9hbHBoYV9v
bmVfbWludXNfY29uc3RhbnRfY29sb3IgPSBGQUlMCisxMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZmJvX3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNfZHN0
X2Z1bmMuYWRkX29uZV9taW51c19jb25zdGFudF9hbHBoYV9jb25zdGFudF9jb2xvciA9IEZBSUwK
KzEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9f
c3JnYi5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfb25lX21pbnVzX2NvbnN0YW50X2Fs
cGhhX29uZV9taW51c19jb25zdGFudF9jb2xvciA9IEZBSUwKKzEwOTYgV0lOIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9fc3JnYi5lcXVhdGlvbl9zcmNfZnVu
Y19kc3RfZnVuYy5zdWJ0cmFjdF9jb25zdGFudF9jb2xvcl9jb25zdGFudF9hbHBoYSA9IEZBSUwK
KzEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9f
c3JnYi5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFjdF9jb25zdGFudF9jb2xvcl9v
bmVfbWludXNfY29uc3RhbnRfYWxwaGEgPSBGQUlMCisxMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZmJvX3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNfZHN0
X2Z1bmMuc3VidHJhY3Rfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yX2NvbnN0YW50X2FscGhhID0g
RkFJTAorMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5k
LmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnN1YnRyYWN0X29uZV9taW51c19j
b25zdGFudF9jb2xvcl9vbmVfbWludXNfY29uc3RhbnRfYWxwaGEgPSBGQUlMCisxMDk2IFdJTiA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZmJvX3NyZ2IuZXF1YXRp
b25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3RfY29uc3RhbnRfYWxwaGFfY29uc3RhbnRfY29s
b3IgPSBGQUlMCisxMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMu
YmxlbmQuZmJvX3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3RfY29uc3Rh
bnRfYWxwaGFfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yID0gRkFJTAorMTA5NiBXSU4gOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3Ny
Y19mdW5jX2RzdF9mdW5jLnN1YnRyYWN0X29uZV9taW51c19jb25zdGFudF9hbHBoYV9jb25zdGFu
dF9jb2xvciA9IEZBSUwKKzEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50
X29wcy5ibGVuZC5mYm9fc3JnYi5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFjdF9v
bmVfbWludXNfY29uc3RhbnRfYWxwaGFfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yID0gRkFJTAor
MTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19z
cmdiLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnJldmVyc2Vfc3VidHJhY3RfY29uc3RhbnRf
Y29sb3JfY29uc3RhbnRfYWxwaGEgPSBGQUlMCisxMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZmJvX3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1
bmMucmV2ZXJzZV9zdWJ0cmFjdF9jb25zdGFudF9jb2xvcl9vbmVfbWludXNfY29uc3RhbnRfYWxw
aGEgPSBGQUlMCisxMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMu
YmxlbmQuZmJvX3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFj
dF9vbmVfbWludXNfY29uc3RhbnRfY29sb3JfY29uc3RhbnRfYWxwaGEgPSBGQUlMCisxMDk2IFdJ
TiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZmJvX3NyZ2IuZXF1
YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFjdF9vbmVfbWludXNfY29uc3Rh
bnRfY29sb3Jfb25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJTAorMTA5NiBXSU4gOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3Ny
Y19mdW5jX2RzdF9mdW5jLnJldmVyc2Vfc3VidHJhY3RfY29uc3RhbnRfYWxwaGFfY29uc3RhbnRf
Y29sb3IgPSBGQUlMCisxMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9v
cHMuYmxlbmQuZmJvX3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0
cmFjdF9jb25zdGFudF9hbHBoYV9vbmVfbWludXNfY29uc3RhbnRfY29sb3IgPSBGQUlMCisxMDk2
IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZmJvX3NyZ2Iu
ZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFjdF9vbmVfbWludXNfY29u
c3RhbnRfYWxwaGFfY29uc3RhbnRfY29sb3IgPSBGQUlMCisxMDk2IFdJTiA6IGRFUVAtR0xFUzMu
ZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZmJvX3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNf
ZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFjdF9vbmVfbWludXNfY29uc3RhbnRfYWxwaGFfb25lX21p
bnVzX2NvbnN0YW50X2NvbG9yID0gRkFJTAorMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9u
YWwuZnJhZ21lbnRfb3BzLnJhbmRvbS4qID0gRkFJTAorMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmludGVyYWN0aW9uLmJhc2ljX3NoYWRlci4qID0gRkFJTAor
MTA5OCBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudW5pZm9ybV9hcGkucmFuZG9tLjggPSBG
QUlMCisxMDk4IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC51bmlmb3JtX2FwaS5yYW5kb20u
ODEgPSBGQUlMCisxMTAxIFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5wb2x5Z29uX29mZnNl
dC5maXhlZDE2X3JlbmRlcl93aXRoX3VuaXRzID0gRkFJTAorMTEwMSBXSU4gOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwucG9seWdvbl9vZmZzZXQuZml4ZWQyNF9yZW5kZXJfd2l0aF91bml0cyA9IEZB
SUwKKzExMDEgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmxpZmV0aW1lLmF0dGFjaC5kZWxl
dGVkX2lucHV0LmJ1ZmZlcl92ZXJ0ZXhfYXJyYXkgPSBGQUlMCisKKy8vIFdpbmRvd3MgSW50ZWwt
c3BlY2lmaWMgZmFpbHVyZXMKKworMTM0OSBXSU4gSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9u
YWwuc2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlbG9kLmlzYW1wbGVyY3ViZV8qID0g
RkFJTAorMTM0OSBXSU4gSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0
dXJlX2Z1bmN0aW9ucy50ZXh0dXJlbG9kLnVzYW1wbGVyY3ViZV8qID0gRkFJTAorMTM0OSBXSU4g
SU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50
ZXh0dXJlZ3JhZC5pc2FtcGxlcmN1YmVfdmVydGV4ID0gRkFJTAorMTM0OSBXSU4gSU5URUwgOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlZ3Jh
ZC51c2FtcGxlcmN1YmVfdmVydGV4ID0gRkFJTAorMTM0OSBXSU4gSU5URUwgOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlZ3JhZC51c2FtcGxl
cmN1YmVfZnJhZ21lbnQgPSBGQUlMCisxMzQ5IFdJTiBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC50ZXh0dXJlLnVuaXRzLjJfdW5pdHMub25seV9jdWJlLjAgPSBGQUlMCisxMzQ5IFdJTiBJ
TlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRzLjJfdW5pdHMub25seV9j
dWJlLjIgPSBGQUlMCisxMzQ5IFdJTiBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0
dXJlLnVuaXRzLjJfdW5pdHMub25seV9jdWJlLjQgPSBGQUlMCisxMzQ5IFdJTiBJTlRFTCA6IGRF
UVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRzLjJfdW5pdHMub25seV9jdWJlLjcgPSBG
QUlMCisxMzQ5IFdJTiBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRz
LjJfdW5pdHMub25seV9jdWJlLjggPSBGQUlMCisxMzQ5IFdJTiBJTlRFTCA6IGRFUVAtR0xFUzMu
ZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRzLjJfdW5pdHMubWl4ZWQuNCA9IEZBSUwKKzEzNDkgV0lO
IElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUudW5pdHMuNF91bml0cy5vbmx5
X2N1YmUuMCA9IEZBSUwKKzEzNDkgV0lOIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRl
eHR1cmUudW5pdHMuNF91bml0cy5vbmx5X2N1YmUuMSA9IEZBSUwKKzEzNDkgV0lOIElOVEVMIDog
ZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUudW5pdHMuNF91bml0cy5vbmx5X2N1YmUuMiA9
IEZBSUwKKzEzNDkgV0lOIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUudW5p
dHMuNF91bml0cy5vbmx5X2N1YmUuNiA9IEZBSUwKKzEzNDkgV0lOIElOVEVMIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLnRleHR1cmUudW5pdHMuNF91bml0cy5vbmx5X2N1YmUuNyA9IEZBSUwKKzEz
NDkgV0lOIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUudW5pdHMuNF91bml0
cy5vbmx5X2N1YmUuOCA9IEZBSUwKKzEzNDkgV0lOIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlv
bmFsLnRleHR1cmUudW5pdHMuNF91bml0cy5vbmx5X2N1YmUuOSA9IEZBSUwKKzEzNDkgV0lOIElO
VEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUudW5pdHMuNF91bml0cy5taXhlZC40
ID0gRkFJTAorMTM0OSBXSU4gSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS51
bml0cy40X3VuaXRzLm1peGVkLjYgPSBGQUlMCisxMzQ5IFdJTiBJTlRFTCA6IGRFUVAtR0xFUzMu
ZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRzLjRfdW5pdHMubWl4ZWQuNyA9IEZBSUwKKzEzNDkgV0lO
IElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUudW5pdHMuOF91bml0cy5vbmx5
X2N1YmUuKiA9IEZBSUwKKzEzNDkgV0lOIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRl
eHR1cmUudW5pdHMuOF91bml0cy5taXhlZC4yID0gRkFJTAorMTM0OSBXSU4gSU5URUwgOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS51bml0cy44X3VuaXRzLm1peGVkLjMgPSBGQUlMCisx
MzQ5IFdJTiBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRzLjhfdW5p
dHMubWl4ZWQuNCA9IEZBSUwKKzEzNDkgV0lOIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LnRleHR1cmUudW5pdHMuOF91bml0cy5taXhlZC42ID0gRkFJTAorMTM0OSBXSU4gSU5URUwgOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS51bml0cy44X3VuaXRzLm1peGVkLjcgPSBGQUlM
CisxMzQ5IFdJTiBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRzLmFs
bF91bml0cy5vbmx5X2N1YmUuKiA9IEZBSUwKKzEzNDkgV0lOIElOVEVMIDogZEVRUC1HTEVTMy5m
dW5jdGlvbmFsLnRleHR1cmUudW5pdHMuYWxsX3VuaXRzLm1peGVkLjIgPSBGQUlMCisxMzQ5IFdJ
TiBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRzLmFsbF91bml0cy5t
aXhlZC4zID0gRkFJTAorMTM0OSBXSU4gSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4
dHVyZS51bml0cy5hbGxfdW5pdHMubWl4ZWQuNCA9IEZBSUwKKzEzNDkgV0lOIElOVEVMIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUudW5pdHMuYWxsX3VuaXRzLm1peGVkLjYgPSBGQUlM
CisxMzQ5IFdJTiBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRzLmFs
bF91bml0cy5taXhlZC43ID0gRkFJTAorCisvLyBMaW51eCBvbmx5IGZhaWx1cmVzCisKKy8vIFVC
TyB0ZXN0cyB0cmlnZ2VyIGNyYXNoZXMgd2hlbiBnZXR0aW5nIHRoZSBwcm9ncmFtIGluZm8gbG9n
LCBza2lwIHRoZW0gdW50aWwgdGhpcyBpcyBmaXhlZC4KKzEzMjMgTElOVVggOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwudWJvLiogPSBTS0lQCisKKzEzMjMgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwuZHJhdy5yYW5kb20uMjEwID0gRkFJTAorMTMyMyBMSU5VWCA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5mYm8uYmxpdC5kZWZhdWx0X2ZyYW1lYnVmZmVyLnNyZ2I4X2FscGhhOCA9IEZBSUwK
KzEzMjMgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmJsaXQuZGVmYXVsdF9mcmFt
ZWJ1ZmZlci5zcmdiOF9hbHBoYThfbGluZWFyX291dF9vZl9ib3VuZHNfYmxpdF90b19kZWZhdWx0
ID0gRkFJTAorMTMyMyBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uYmxpdC5kZWZh
dWx0X2ZyYW1lYnVmZmVyLnNyZ2I4X2FscGhhOF9saW5lYXJfc2NhbGVfYmxpdF90b19kZWZhdWx0
ID0gRkFJTAorMTMyMyBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uYmxpdC5kZWZh
dWx0X2ZyYW1lYnVmZmVyLnNyZ2I4X2FscGhhOF9uZWFyZXN0X3NjYWxlX2JsaXRfdG9fZGVmYXVs
dCA9IEZBSUwKKzEzMjMgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmRlcHRoLmRl
cHRoX3Rlc3RfY2xhbXAuZGVwdGhfY29tcG9uZW50MzJmID0gRkFJTAorMTMyMyBMSU5VWCA6IGRF
UVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uZGVwdGguZGVwdGhfdGVzdF9jbGFtcC5kZXB0aDMyZl9z
dGVuY2lsOCA9IEZBSUwKKzEzMjMgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmRl
cHRoLmRlcHRoX3dyaXRlX2NsYW1wLmRlcHRoX2NvbXBvbmVudDMyZiA9IEZBSUwKKzEzMjMgTElO
VVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmRlcHRoLmRlcHRoX3dyaXRlX2NsYW1wLmRl
cHRoMzJmX3N0ZW5jaWw4ID0gRkFJTAorMTMyMyBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC5yYXN0ZXJpemF0aW9uLmZiby5yYm9fbXVsdGlzYW1wbGVfbWF4LnByaW1pdGl2ZXMucG9pbnRz
ID0gRkFJTAorMTMyMyBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zdGF0ZV9xdWVyeS5p
bnRlZ2VyczY0Lm1heF9zZXJ2ZXJfd2FpdF90aW1lb3V0X2dldGZsb2F0ID0gRkFJTAorMTMyMyBM
SU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC4yZC5wcm9qZWN0ZWQu
bGluZWFyX2xpbmVhcl9jbGFtcCA9IEZBSUwKKzEzMjMgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwudGV4dHVyZS5taXBtYXAuMmQucHJvamVjdGVkLmxpbmVhcl9saW5lYXJfbWlycm9yID0g
RkFJTAorMTMyMyBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC4y
ZC5wcm9qZWN0ZWQubGluZWFyX2xpbmVhcl9yZXBlYXQgPSBGQUlMCisxMzIzIExJTlVYIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLjJkLnByb2plY3RlZC5uZWFyZXN0X2xp
bmVhcl9jbGFtcCA9IEZBSUwKKzEzMjMgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4
dHVyZS5taXBtYXAuMmQucHJvamVjdGVkLm5lYXJlc3RfbGluZWFyX21pcnJvciA9IEZBSUwKKzEz
MjMgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuMmQucHJvamVj
dGVkLm5lYXJlc3RfbGluZWFyX3JlcGVhdCA9IEZBSUwKKzEwOTggTElOVVggOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwudW5pZm9ybV9hcGkucmFuZG9tLjYgPSBGQUlMCisKKy8vIFdoaWxlIGxvb3Bz
IHdpdGggJ2NvbnRpbnVlJyBzZWVtIGZsYWt5IG9uIExpbnV4LiAoUG9zc2libHkgYWxsIEdMIHJl
bmRlcmVycykKKzEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29w
cy53aGlsZV9jb25zdGFudF9pdGVyYXRpb25zLmNvbmRpdGlvbmFsX2NvbnRpbnVlX3ZlcnRleCA9
IEZBSUwKKzEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy53
aGlsZV9jb25zdGFudF9pdGVyYXRpb25zLmNvbmRpdGlvbmFsX2NvbnRpbnVlX2ZyYWdtZW50ID0g
RkFJTAorMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndo
aWxlX2NvbnN0YW50X2l0ZXJhdGlvbnMudW5jb25kaXRpb25hbF9jb250aW51ZV92ZXJ0ZXggPSBG
QUlMCisxMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hp
bGVfY29uc3RhbnRfaXRlcmF0aW9ucy51bmNvbmRpdGlvbmFsX2NvbnRpbnVlX2ZyYWdtZW50ID0g
RkFJTAorMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndo
aWxlX2NvbnN0YW50X2l0ZXJhdGlvbnMub25seV9jb250aW51ZV92ZXJ0ZXggPSBGQUlMCisxMzI0
IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfY29uc3Rh
bnRfaXRlcmF0aW9ucy5vbmx5X2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJTAorMTMyNCBMSU5VWCA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX2NvbnN0YW50X2l0ZXJh
dGlvbnMuZG91YmxlX2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKKzEzMjQgTElOVVggOiBkRVFQLUdM
RVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV9jb25zdGFudF9pdGVyYXRpb25zLmRv
dWJsZV9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKKzEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV9jb25zdGFudF9pdGVyYXRpb25zLm1peGVkX2Jy
ZWFrX2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKKzEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV9jb25zdGFudF9pdGVyYXRpb25zLm1peGVkX2JyZWFr
X2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJTAorMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX3VuaWZvcm1faXRlcmF0aW9ucy5jb25kaXRpb25hbF9j
b250aW51ZV92ZXJ0ZXggPSBGQUlMCisxMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LnNoYWRlcnMubG9vcHMud2hpbGVfdW5pZm9ybV9pdGVyYXRpb25zLmNvbmRpdGlvbmFsX2NvbnRp
bnVlX2ZyYWdtZW50ID0gRkFJTAorMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5z
aGFkZXJzLmxvb3BzLndoaWxlX3VuaWZvcm1faXRlcmF0aW9ucy51bmNvbmRpdGlvbmFsX2NvbnRp
bnVlX3ZlcnRleCA9IEZBSUwKKzEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hh
ZGVycy5sb29wcy53aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMudW5jb25kaXRpb25hbF9jb250aW51
ZV9mcmFnbWVudCA9IEZBSUwKKzEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hh
ZGVycy5sb29wcy53aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMub25seV9jb250aW51ZV92ZXJ0ZXgg
PSBGQUlMCisxMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMu
d2hpbGVfdW5pZm9ybV9pdGVyYXRpb25zLm9ubHlfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCisx
MzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfdW5p
Zm9ybV9pdGVyYXRpb25zLmRvdWJsZV9jb250aW51ZV92ZXJ0ZXggPSBGQUlMCisxMzI0IExJTlVY
IDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfdW5pZm9ybV9pdGVy
YXRpb25zLmRvdWJsZV9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKKzEzMjQgTElOVVggOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMu
bWl4ZWRfYnJlYWtfY29udGludWVfdmVydGV4ID0gRkFJTAorMTMyNCBMSU5VWCA6IGRFUVAtR0xF
UzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX3VuaWZvcm1faXRlcmF0aW9ucy5taXhl
ZF9icmVha19jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKKzEzMjQgTElOVVggOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV9keW5hbWljX2l0ZXJhdGlvbnMuY29uZGl0
aW9uYWxfY29udGludWVfdmVydGV4ID0gRkFJTAorMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX2R5bmFtaWNfaXRlcmF0aW9ucy5jb25kaXRpb25h
bF9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKKzEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV9keW5hbWljX2l0ZXJhdGlvbnMudW5jb25kaXRpb25h
bF9jb250aW51ZV92ZXJ0ZXggPSBGQUlMCisxMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlv
bmFsLnNoYWRlcnMubG9vcHMud2hpbGVfZHluYW1pY19pdGVyYXRpb25zLnVuY29uZGl0aW9uYWxf
Y29udGludWVfZnJhZ21lbnQgPSBGQUlMCisxMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlv
bmFsLnNoYWRlcnMubG9vcHMud2hpbGVfZHluYW1pY19pdGVyYXRpb25zLm9ubHlfY29udGludWVf
dmVydGV4ID0gRkFJTAorMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJz
Lmxvb3BzLndoaWxlX2R5bmFtaWNfaXRlcmF0aW9ucy5vbmx5X2NvbnRpbnVlX2ZyYWdtZW50ID0g
RkFJTAorMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndo
aWxlX2R5bmFtaWNfaXRlcmF0aW9ucy5kb3VibGVfY29udGludWVfdmVydGV4ID0gRkFJTAorMTMy
NCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX2R5bmFt
aWNfaXRlcmF0aW9ucy5kb3VibGVfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCisxMzI0IExJTlVY
IDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfZHluYW1pY19pdGVy
YXRpb25zLm1peGVkX2JyZWFrX2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKKzEzMjQgTElOVVggOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV9keW5hbWljX2l0ZXJhdGlv
bnMubWl4ZWRfYnJlYWtfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCisxMzI0IExJTlVYIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfY29uc3RhbnRfaXRlcmF0
aW9ucy5jb25kaXRpb25hbF9jb250aW51ZV92ZXJ0ZXggPSBGQUlMCisxMzI0IExJTlVYIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfY29uc3RhbnRfaXRlcmF0
aW9ucy5jb25kaXRpb25hbF9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKKzEzMjQgTElOVVggOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV9jb25zdGFudF9pdGVy
YXRpb25zLnVuY29uZGl0aW9uYWxfY29udGludWVfdmVydGV4ID0gRkFJTAorMTMyNCBMSU5VWCA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX2NvbnN0YW50X2l0
ZXJhdGlvbnMudW5jb25kaXRpb25hbF9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKKzEzMjQgTElO
VVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV9jb25zdGFu
dF9pdGVyYXRpb25zLm9ubHlfY29udGludWVfdmVydGV4ID0gRkFJTAorMTMyNCBMSU5VWCA6IGRF
UVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX2NvbnN0YW50X2l0ZXJh
dGlvbnMub25seV9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKKzEzMjQgTElOVVggOiBkRVFQLUdM
RVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV9jb25zdGFudF9pdGVyYXRpb25z
LmRvdWJsZV9jb250aW51ZV92ZXJ0ZXggPSBGQUlMCisxMzI0IExJTlVYIDogZEVRUC1HTEVTMy5m
dW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfY29uc3RhbnRfaXRlcmF0aW9ucy5kb3Vi
bGVfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCisxMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfY29uc3RhbnRfaXRlcmF0aW9ucy5taXhlZF9i
cmVha19jb250aW51ZV92ZXJ0ZXggPSBGQUlMCisxMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfY29uc3RhbnRfaXRlcmF0aW9ucy5taXhlZF9i
cmVha19jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKKzEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMuY29uZGl0
aW9uYWxfY29udGludWVfdmVydGV4ID0gRkFJTAorMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX3VuaWZvcm1faXRlcmF0aW9ucy5jb25kaXRp
b25hbF9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKKzEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMudW5jb25k
aXRpb25hbF9jb250aW51ZV92ZXJ0ZXggPSBGQUlMCisxMzI0IExJTlVYIDogZEVRUC1HTEVTMy5m
dW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfdW5pZm9ybV9pdGVyYXRpb25zLnVuY29u
ZGl0aW9uYWxfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCisxMzI0IExJTlVYIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfdW5pZm9ybV9pdGVyYXRpb25zLm9u
bHlfY29udGludWVfdmVydGV4ID0gRkFJTAorMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX3VuaWZvcm1faXRlcmF0aW9ucy5vbmx5X2NvbnRp
bnVlX2ZyYWdtZW50ID0gRkFJTAorMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5z
aGFkZXJzLmxvb3BzLmRvX3doaWxlX3VuaWZvcm1faXRlcmF0aW9ucy5kb3VibGVfY29udGludWVf
dmVydGV4ID0gRkFJTAorMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJz
Lmxvb3BzLmRvX3doaWxlX3VuaWZvcm1faXRlcmF0aW9ucy5kb3VibGVfY29udGludWVfZnJhZ21l
bnQgPSBGQUlMCisxMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9v
cHMuZG9fd2hpbGVfdW5pZm9ybV9pdGVyYXRpb25zLm1peGVkX2JyZWFrX2NvbnRpbnVlX3ZlcnRl
eCA9IEZBSUwKKzEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29w
cy5kb193aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMubWl4ZWRfYnJlYWtfY29udGludWVfZnJhZ21l
bnQgPSBGQUlMCisxMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9v
cHMuZG9fd2hpbGVfZHluYW1pY19pdGVyYXRpb25zLmNvbmRpdGlvbmFsX2NvbnRpbnVlX3ZlcnRl
eCA9IEZBSUwKKzEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29w
cy5kb193aGlsZV9keW5hbWljX2l0ZXJhdGlvbnMuY29uZGl0aW9uYWxfY29udGludWVfZnJhZ21l
bnQgPSBGQUlMCisxMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9v
cHMuZG9fd2hpbGVfZHluYW1pY19pdGVyYXRpb25zLnVuY29uZGl0aW9uYWxfY29udGludWVfdmVy
dGV4ID0gRkFJTAorMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxv
b3BzLmRvX3doaWxlX2R5bmFtaWNfaXRlcmF0aW9ucy51bmNvbmRpdGlvbmFsX2NvbnRpbnVlX2Zy
YWdtZW50ID0gRkFJTAorMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJz
Lmxvb3BzLmRvX3doaWxlX2R5bmFtaWNfaXRlcmF0aW9ucy5vbmx5X2NvbnRpbnVlX3ZlcnRleCA9
IEZBSUwKKzEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5k
b193aGlsZV9keW5hbWljX2l0ZXJhdGlvbnMub25seV9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwK
KzEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGls
ZV9keW5hbWljX2l0ZXJhdGlvbnMuZG91YmxlX2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKKzEzMjQg
TElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV9keW5h
bWljX2l0ZXJhdGlvbnMuZG91YmxlX2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJTAorMTMyNCBMSU5V
WCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX2R5bmFtaWNf
aXRlcmF0aW9ucy5taXhlZF9icmVha19jb250aW51ZV92ZXJ0ZXggPSBGQUlMCisxMzI0IExJTlVY
IDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfZHluYW1pY19p
dGVyYXRpb25zLm1peGVkX2JyZWFrX2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJTApJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC90Y3VBTkdMRU5hdGl2
ZURpc3BsYXlGYWN0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L3RjdUFOR0xFTmF0aXZlRGlzcGxheUZhY3RvcnkuY3Bw
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFw
X3N1cHBvcnQvdGN1QU5HTEVOYXRpdmVEaXNwbGF5RmFjdG9yeS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwzMjYgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZHJhd0VsZW1lbnRzIFF1
YWxpdHkgUHJvZ3JhbSBUZXN0ZXIgQ29yZQorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorICoKKyAqIENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291
cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
KyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMg
bGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCisgKgorICovCisKKyNpbmNsdWRlICJ0Y3VBTkdMRU5hdGl2ZURpc3BsYXlG
YWN0b3J5LmgiCisKKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisjaW5jbHVkZSA8RUdML2VnbGV4dC5o
PgorCisjaW5jbHVkZSAiZGVDbG9jay5oIgorI2luY2x1ZGUgImRlTWVtb3J5LmgiCisjaW5jbHVk
ZSAiZGVUaHJlYWQuaCIKKyNpbmNsdWRlICJlZ2x1RGVmcy5ocHAiCisjaW5jbHVkZSAiZWdsd0xp
YnJhcnkuaHBwIgorI2luY2x1ZGUgIk9TUGl4bWFwLmgiCisjaW5jbHVkZSAiT1NXaW5kb3cuaCIK
KyNpbmNsdWRlICJ0Y3VUZXh0dXJlLmhwcCIKKworLy8gY2xhbmctZm9ybWF0IG9mZgorI2lmIChE
RV9PUyA9PSBERV9PU19XSU4zMikKKyAgICAjZGVmaW5lIEFOR0xFX0VHTF9MSUJSQVJZX05BTUUg
ImxpYkVHTC5kbGwiCisjZWxpZiAoREVfT1MgPT0gREVfT1NfVU5JWCkgfHwgKERFX09TID09IERF
X09TX0FORFJPSUQpCisgICAgI2RlZmluZSBBTkdMRV9FR0xfTElCUkFSWV9OQU1FICJsaWJFR0wu
c28iCisjZWxpZiAoREVfT1MgPT0gREVfT1NfT1NYKQorICAgICNkZWZpbmUgQU5HTEVfRUdMX0xJ
QlJBUllfTkFNRSAibGliRUdMLmR5bGliIgorI2Vsc2UKKyAgICAjZXJyb3IgIlVuc3VwcG9ydGVk
IHBsYXRmb3JtIgorI2VuZGlmCisvLyBjbGFuZy1mb3JtYXQgb24KKworbmFtZXNwYWNlIHRjdQor
eworbmFtZXNwYWNlCit7CisKK2VudW0KK3sKKyAgICBERUZBVUxUX1NVUkZBQ0VfV0lEVEggICAg
ICAgPSA0MDAsCisgICAgREVGQVVMVF9TVVJGQUNFX0hFSUdIVCAgICAgID0gMzAwLAorICAgIFdB
SVRfV0lORE9XX1ZJU0lCTEVfTVMgICAgICA9IDUwMCAgIC8vITwgVGltZSB0byB3YWl0IGJlZm9y
ZSBpc3N1aW5nIHNjcmVlbnNob3QgYWZ0ZXIgY2hhbmdpbmcgd2luZG93IHZpc2liaWxpdHkgKGhh
Y2sgZm9yIERXTSkKK307CisKK3N0YXRpYyBjb25zdCBlZ2x1OjpOYXRpdmVEaXNwbGF5OjpDYXBh
YmlsaXR5IERJU1BMQVlfQ0FQQUJJTElUSUVTID0gZWdsdTo6TmF0aXZlRGlzcGxheTo6Q0FQQUJJ
TElUWV9HRVRfRElTUExBWV9QTEFURk9STTsKK3N0YXRpYyBjb25zdCBlZ2x1OjpOYXRpdmVQaXht
YXA6OkNhcGFiaWxpdHkgIEJJVE1BUF9DQVBBQklMSVRJRVMgID0gZWdsdTo6TmF0aXZlUGl4bWFw
OjpDQVBBQklMSVRZX0NSRUFURV9TVVJGQUNFX0xFR0FDWTsKK3N0YXRpYyBjb25zdCBlZ2x1OjpO
YXRpdmVXaW5kb3c6OkNhcGFiaWxpdHkgIFdJTkRPV19DQVBBQklMSVRJRVMgID0gKGVnbHU6Ok5h
dGl2ZVdpbmRvdzo6Q2FwYWJpbGl0eSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlZ2x1OjpOYXRpdmVXaW5kb3c6
OkNBUEFCSUxJVFlfQ1JFQVRFX1NVUkZBQ0VfTEVHQUNZICAgIHwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2x1
OjpOYXRpdmVXaW5kb3c6OkNBUEFCSUxJVFlfR0VUX1NVUkZBQ0VfU0laRSAgICAgICAgIHwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlZ2x1OjpOYXRpdmVXaW5kb3c6OkNBUEFCSUxJVFlfR0VUX1NDUkVFTl9TSVpF
ICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2x1OjpOYXRpdmVXaW5kb3c6OkNBUEFCSUxJVFlf
UkVBRF9TQ1JFRU5fUElYRUxTICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2x1OjpOYXRpdmVXaW5k
b3c6OkNBUEFCSUxJVFlfU0VUX1NVUkZBQ0VfU0laRSAgICAgICAgIHwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
Z2x1OjpOYXRpdmVXaW5kb3c6OkNBUEFCSUxJVFlfQ0hBTkdFX1ZJU0lCSUxJVFkpOworCitjbGFz
cyBBTkdMRU5hdGl2ZURpc3BsYXkgOiBwdWJsaWMgZWdsdTo6TmF0aXZlRGlzcGxheQoreworICBw
dWJsaWM6CisgICAgQU5HTEVOYXRpdmVEaXNwbGF5KGNvbnN0IHN0ZDo6dmVjdG9yPGVnbHc6OkVH
TEF0dHJpYj4gJmF0dHJpYnMpOworICAgIHZpcnR1YWwgfkFOR0xFTmF0aXZlRGlzcGxheSgpIHt9
CisKKyAgICB2b2lkICpnZXRQbGF0Zm9ybU5hdGl2ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1EZXZp
Y2VDb250ZXh0OyB9CisgICAgY29uc3QgZWdsdzo6RUdMQXR0cmliICpnZXRQbGF0Zm9ybUF0dHJp
YnV0ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAmbVBsYXRmb3JtQXR0cmlidXRlc1swXTsg
fQorICAgIGNvbnN0IGVnbHc6OkxpYnJhcnkgJmdldExpYnJhcnkoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtTGlicmFyeTsgfQorCisgICAgRUdMTmF0aXZlRGlzcGxheVR5cGUgZ2V0RGV2aWNl
Q29udGV4dCgpIHsgcmV0dXJuIG1EZXZpY2VDb250ZXh0OyB9CisKKyAgcHJpdmF0ZToKKyAgICBF
R0xOYXRpdmVEaXNwbGF5VHlwZSBtRGV2aWNlQ29udGV4dDsKKyAgICBlZ2x3OjpEZWZhdWx0TGli
cmFyeSBtTGlicmFyeTsKKyAgICBzdGQ6OnZlY3RvcjxlZ2x3OjpFR0xBdHRyaWI+IG1QbGF0Zm9y
bUF0dHJpYnV0ZXM7Cit9OworCitjbGFzcyBOYXRpdmVQaXhtYXBGYWN0b3J5IDogcHVibGljIGVn
bHU6Ok5hdGl2ZVBpeG1hcEZhY3RvcnkKK3sKKyAgcHVibGljOgorICAgIE5hdGl2ZVBpeG1hcEZh
Y3RvcnkoKTsKKyAgICB+TmF0aXZlUGl4bWFwRmFjdG9yeSgpIHt9CisKKyAgICBlZ2x1OjpOYXRp
dmVQaXhtYXAgKmNyZWF0ZVBpeG1hcChlZ2x1OjpOYXRpdmVEaXNwbGF5ICpuYXRpdmVEaXNwbGF5
LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpIGNvbnN0IG92ZXJyaWRlOworICAgIGVnbHU6Ok5hdGl2
ZVBpeG1hcCAqY3JlYXRlUGl4bWFwKGVnbHU6Ok5hdGl2ZURpc3BsYXkgKm5hdGl2ZURpc3BsYXks
IGVnbHc6OkVHTERpc3BsYXkgZGlzcGxheSwgZWdsdzo6RUdMQ29uZmlnIGNvbmZpZywgY29uc3Qg
ZWdsdzo6RUdMQXR0cmliKiBhdHRyaWJMaXN0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpIGNvbnN0
IG92ZXJyaWRlOworfTsKKworY2xhc3MgTmF0aXZlUGl4bWFwIDogcHVibGljIGVnbHU6Ok5hdGl2
ZVBpeG1hcAoreworICBwdWJsaWM6CisgICAgTmF0aXZlUGl4bWFwKEVHTE5hdGl2ZURpc3BsYXlU
eXBlIGRpc3BsYXksIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGJpdERlcHRoKTsKKyAgICB2
aXJ0dWFsIH5OYXRpdmVQaXhtYXAoKTsKKworICAgIGVnbHc6OkVHTE5hdGl2ZVBpeG1hcFR5cGUg
Z2V0TGVnYWN5TmF0aXZlKCkgb3ZlcnJpZGU7CisKKyAgcHJpdmF0ZToKKyAgICBPU1BpeG1hcCAq
bVBpeG1hcDsKK307CisKK2NsYXNzIE5hdGl2ZVdpbmRvd0ZhY3RvcnkgOiBwdWJsaWMgZWdsdTo6
TmF0aXZlV2luZG93RmFjdG9yeQoreworICBwdWJsaWM6CisgICAgTmF0aXZlV2luZG93RmFjdG9y
eShFdmVudFN0YXRlICpldmVudFN0YXRlKTsKKyAgICB+TmF0aXZlV2luZG93RmFjdG9yeSgpIG92
ZXJyaWRlIHt9CisKKyAgICBlZ2x1OjpOYXRpdmVXaW5kb3cgKmNyZWF0ZVdpbmRvdyhlZ2x1OjpO
YXRpdmVEaXNwbGF5ICpuYXRpdmVEaXNwbGF5LCBjb25zdCBlZ2x1OjpXaW5kb3dQYXJhbXMgJnBh
cmFtcykgY29uc3Qgb3ZlcnJpZGU7CisKKyAgcHJpdmF0ZToKKyAgICBFdmVudFN0YXRlICptRXZl
bnRzOworfTsKKworY2xhc3MgTmF0aXZlV2luZG93IDogcHVibGljIGVnbHU6Ok5hdGl2ZVdpbmRv
dworeworICBwdWJsaWM6CisgICAgTmF0aXZlV2luZG93KEFOR0xFTmF0aXZlRGlzcGxheSAqbmF0
aXZlRGlzcGxheSwgY29uc3QgZWdsdTo6V2luZG93UGFyYW1zICZwYXJhbXMsIEV2ZW50U3RhdGUg
KmV2ZW50U3RhdGUpOworICAgIH5OYXRpdmVXaW5kb3coKSBvdmVycmlkZTsKKworICAgIGVnbHc6
OkVHTE5hdGl2ZVdpbmRvd1R5cGUgZ2V0TGVnYWN5TmF0aXZlKCkgb3ZlcnJpZGU7CisgICAgSVZl
YzIgZ2V0U3VyZmFjZVNpemUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBJVmVjMiBnZXRTY3JlZW5T
aXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZ2V0U3VyZmFjZVNpemUoKTsgfQorICAgIHZv
aWQgcHJvY2Vzc0V2ZW50cygpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0U3VyZmFjZVNpemUoSVZl
YzIgc2l6ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRWaXNpYmlsaXR5KGVnbHU6OldpbmRvd1Bh
cmFtczo6VmlzaWJpbGl0eSB2aXNpYmlsaXR5KSBvdmVycmlkZTsKKyAgICB2b2lkIHJlYWRTY3Jl
ZW5QaXhlbHModGN1OjpUZXh0dXJlTGV2ZWwqIGRzdCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgcHJp
dmF0ZToKKyAgICBPU1dpbmRvdyAqbVdpbmRvdzsKKyAgICBFdmVudFN0YXRlICptRXZlbnRzOwor
fTsKKworLy8gQU5HTEUgTmF0aXZlRGlzcGxheQorCitBTkdMRU5hdGl2ZURpc3BsYXk6OkFOR0xF
TmF0aXZlRGlzcGxheShjb25zdCBzdGQ6OnZlY3RvcjxFR0xBdHRyaWI+ICZhdHRyaWJzKQorICAg
IDogZWdsdTo6TmF0aXZlRGlzcGxheShESVNQTEFZX0NBUEFCSUxJVElFUywgRUdMX1BMQVRGT1JN
X0FOR0xFX0FOR0xFLCAiRUdMX0VYVF9wbGF0Zm9ybV9iYXNlIiksCisgICAgICBtRGV2aWNlQ29u
dGV4dChFR0xfREVGQVVMVF9ESVNQTEFZKSwKKyAgICAgIG1MaWJyYXJ5KEFOR0xFX0VHTF9MSUJS
QVJZX05BTUUpLAorICAgICAgbVBsYXRmb3JtQXR0cmlidXRlcyhhdHRyaWJzKQoreworfQorCisv
LyBOYXRpdmVQaXhtYXAKKworTmF0aXZlUGl4bWFwOjpOYXRpdmVQaXhtYXAoRUdMTmF0aXZlRGlz
cGxheVR5cGUgZGlzcGxheSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgYml0RGVwdGgpCisg
ICAgOiBlZ2x1OjpOYXRpdmVQaXhtYXAoQklUTUFQX0NBUEFCSUxJVElFUyksCisgICAgICBtUGl4
bWFwKENyZWF0ZU9TUGl4bWFwKCkpCit7CisgICAgaWYgKCFtUGl4bWFwKQorICAgIHsKKyAgICAg
ICAgdGhyb3cgUmVzb3VyY2VFcnJvcigiRmFpbGVkIHRvIGNyZWF0ZSBwaXhtYXAiLCBERV9OVUxM
LCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgIH0KKworICAgIGlmICghbVBpeG1hcC0+aW5pdGlh
bGl6ZShkaXNwbGF5LCB3aWR0aCwgaGVpZ2h0LCBiaXREZXB0aCkpCisgICAgeworICAgICAgICB0
aHJvdyBSZXNvdXJjZUVycm9yKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBwaXhtYXAiLCBERV9OVUxM
LCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgIH0KK30KKworTmF0aXZlUGl4bWFwOjp+TmF0aXZl
UGl4bWFwKCkKK3sKKyAgICBkZWxldGUgbVBpeG1hcDsKK30KKworZWdsdzo6RUdMTmF0aXZlUGl4
bWFwVHlwZSBOYXRpdmVQaXhtYXA6OmdldExlZ2FjeU5hdGl2ZSgpCit7CisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8ZWdsdzo6RUdMTmF0aXZlUGl4bWFwVHlwZT4obVBpeG1hcC0+Z2V0TmF0
aXZlUGl4bWFwKCkpOworfQorCisvLyBOYXRpdmVQaXhtYXBGYWN0b3J5CisKK05hdGl2ZVBpeG1h
cEZhY3Rvcnk6Ok5hdGl2ZVBpeG1hcEZhY3RvcnkoKQorICAgIDogZWdsdTo6TmF0aXZlUGl4bWFw
RmFjdG9yeSgiYml0bWFwIiwgIkFOR0xFIEJpdG1hcCIsIEJJVE1BUF9DQVBBQklMSVRJRVMpCit7
Cit9CisKK2VnbHU6Ok5hdGl2ZVBpeG1hcCAqTmF0aXZlUGl4bWFwRmFjdG9yeTo6Y3JlYXRlUGl4
bWFwIChlZ2x1OjpOYXRpdmVEaXNwbGF5KiBuYXRpdmVEaXNwbGF5LCBlZ2x3OjpFR0xEaXNwbGF5
IGRpc3BsYXksIGVnbHc6OkVHTENvbmZpZyBjb25maWcsIGNvbnN0IGVnbHc6OkVHTEF0dHJpYiog
YXR0cmliTGlzdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBjb25zdAoreworICAgIGNvbnN0IGVn
bHc6OkxpYnJhcnkmICAgIGVnbCAgICAgICAgID0gbmF0aXZlRGlzcGxheS0+Z2V0TGlicmFyeSgp
OworICAgIGludCAgICAgICAgICAgICByZWRCaXRzICAgICA9IDA7CisgICAgaW50ICAgICAgICAg
ICAgIGdyZWVuQml0cyAgID0gMDsKKyAgICBpbnQgICAgICAgICAgICAgYmx1ZUJpdHMgICAgPSAw
OworICAgIGludCAgICAgICAgICAgICBhbHBoYUJpdHMgICA9IDA7CisgICAgaW50ICAgICAgICAg
ICAgIGJpdFN1bSAgICAgID0gMDsKKworICAgIERFX0FTU0VSVChkaXNwbGF5ICE9IEVHTF9OT19E
SVNQTEFZKTsKKworICAgIGVnbC5nZXRDb25maWdBdHRyaWIoZGlzcGxheSwgY29uZmlnLCBFR0xf
UkVEX1NJWkUsICAgICAgJnJlZEJpdHMpOworICAgIGVnbC5nZXRDb25maWdBdHRyaWIoZGlzcGxh
eSwgY29uZmlnLCBFR0xfR1JFRU5fU0laRSwgICAgJmdyZWVuQml0cyk7CisgICAgZWdsLmdldENv
bmZpZ0F0dHJpYihkaXNwbGF5LCBjb25maWcsIEVHTF9CTFVFX1NJWkUsICAgICAmYmx1ZUJpdHMp
OworICAgIGVnbC5nZXRDb25maWdBdHRyaWIoZGlzcGxheSwgY29uZmlnLCBFR0xfQUxQSEFfU0la
RSwgICAgJmFscGhhQml0cyk7CisgICAgRUdMVV9DSEVDS19NU0coZWdsLCAiZWdsR2V0Q29uZmln
QXR0cmliKCkiKTsKKworICAgIGJpdFN1bSA9IHJlZEJpdHMrZ3JlZW5CaXRzK2JsdWVCaXRzK2Fs
cGhhQml0czsKKworICAgIHJldHVybiBuZXcgTmF0aXZlUGl4bWFwKGR5bmFtaWNfY2FzdDxBTkdM
RU5hdGl2ZURpc3BsYXkqPihuYXRpdmVEaXNwbGF5KS0+Z2V0RGV2aWNlQ29udGV4dCgpLCB3aWR0
aCwgaGVpZ2h0LCBiaXRTdW0pOworfQorCitlZ2x1OjpOYXRpdmVQaXhtYXAgKk5hdGl2ZVBpeG1h
cEZhY3Rvcnk6OmNyZWF0ZVBpeG1hcChlZ2x1OjpOYXRpdmVEaXNwbGF5KiBuYXRpdmVEaXNwbGF5
LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpIGNvbnN0Cit7CisgICAgY29uc3QgaW50IGRlZmF1bHRE
ZXB0aCA9IDMyOworICAgIHJldHVybiBuZXcgTmF0aXZlUGl4bWFwKGR5bmFtaWNfY2FzdDxBTkdM
RU5hdGl2ZURpc3BsYXkqPihuYXRpdmVEaXNwbGF5KS0+Z2V0RGV2aWNlQ29udGV4dCgpLCB3aWR0
aCwgaGVpZ2h0LCBkZWZhdWx0RGVwdGgpOworfQorCisvLyBOYXRpdmVXaW5kb3dGYWN0b3J5CisK
K05hdGl2ZVdpbmRvd0ZhY3Rvcnk6Ok5hdGl2ZVdpbmRvd0ZhY3RvcnkoRXZlbnRTdGF0ZSAqZXZl
bnRTdGF0ZSkKKyAgICA6IGVnbHU6Ok5hdGl2ZVdpbmRvd0ZhY3RvcnkoIndpbmRvdyIsICJBTkdM
RSBXaW5kb3ciLCBXSU5ET1dfQ0FQQUJJTElUSUVTKSwKKyAgICAgIG1FdmVudHMoZXZlbnRTdGF0
ZSkKK3sKK30KKworZWdsdTo6TmF0aXZlV2luZG93ICpOYXRpdmVXaW5kb3dGYWN0b3J5OjpjcmVh
dGVXaW5kb3coZWdsdTo6TmF0aXZlRGlzcGxheSogbmF0aXZlRGlzcGxheSwgY29uc3QgZWdsdTo6
V2luZG93UGFyYW1zJiBwYXJhbXMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG5ldyBOYXRpdmVXaW5k
b3coZHluYW1pY19jYXN0PEFOR0xFTmF0aXZlRGlzcGxheSo+KG5hdGl2ZURpc3BsYXkpLCBwYXJh
bXMsIG1FdmVudHMpOworfQorCisvLyBOYXRpdmVXaW5kb3cKKworTmF0aXZlV2luZG93OjpOYXRp
dmVXaW5kb3coQU5HTEVOYXRpdmVEaXNwbGF5ICpuYXRpdmVEaXNwbGF5LCBjb25zdCBlZ2x1OjpX
aW5kb3dQYXJhbXMmIHBhcmFtcywgRXZlbnRTdGF0ZSAqZXZlbnRTdGF0ZSkKKyAgICA6IGVnbHU6
Ok5hdGl2ZVdpbmRvdyhXSU5ET1dfQ0FQQUJJTElUSUVTKSwKKyAgICAgIG1XaW5kb3coQ3JlYXRl
T1NXaW5kb3coKSksCisgICAgICBtRXZlbnRzKGV2ZW50U3RhdGUpCit7CisgICAgYm9vbCBpbml0
aWFsaXplZCA9IG1XaW5kb3ctPmluaXRpYWxpemUoImRFUVAgQU5HTEUgVGVzdHMiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy53aWR0aCA9PSBlZ2x1
OjpXaW5kb3dQYXJhbXM6OlNJWkVfRE9OVF9DQVJFID8gREVGQVVMVF9TVVJGQUNFX1dJRFRIIDog
cGFyYW1zLndpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhcmFtcy5oZWlnaHQgPT0gZWdsdTo6V2luZG93UGFyYW1zOjpTSVpFX0RPTlRfQ0FSRSA/IERF
RkFVTFRfU1VSRkFDRV9IRUlHSFQgOiBwYXJhbXMuaGVpZ2h0KTsKKyAgICBUQ1VfQ0hFQ0soaW5p
dGlhbGl6ZWQpOworCisgICAgaWYgKHBhcmFtcy52aXNpYmlsaXR5ICE9IGVnbHU6OldpbmRvd1Bh
cmFtczo6VklTSUJJTElUWV9ET05UX0NBUkUpCisgICAgICAgIHNldFZpc2liaWxpdHkocGFyYW1z
LnZpc2liaWxpdHkpOworfQorCit2b2lkIE5hdGl2ZVdpbmRvdzo6c2V0VmlzaWJpbGl0eShlZ2x1
OjpXaW5kb3dQYXJhbXM6OlZpc2liaWxpdHkgdmlzaWJpbGl0eSkKK3sKKyAgICBzd2l0Y2ggKHZp
c2liaWxpdHkpCisgICAgeworICAgICAgY2FzZSBlZ2x1OjpXaW5kb3dQYXJhbXM6OlZJU0lCSUxJ
VFlfSElEREVOOgorICAgICAgICBtV2luZG93LT5zZXRWaXNpYmxlKGZhbHNlKTsKKyAgICAgICAg
YnJlYWs7CisKKyAgICAgIGNhc2UgZWdsdTo6V2luZG93UGFyYW1zOjpWSVNJQklMSVRZX1ZJU0lC
TEU6CisgICAgICBjYXNlIGVnbHU6OldpbmRvd1BhcmFtczo6VklTSUJJTElUWV9GVUxMU0NSRUVO
OgorICAgICAgICAvLyBcdG9kbyBbMjAxNC0wMy0xMiBweXJ5XSBJbXBsZW1lbnQgRlVMTFNDUkVF
Tiwgb3IgYXQgbGVhc3QgU1dfTUFYSU1JWkUuCisgICAgICAgIG1XaW5kb3ctPnNldFZpc2libGUo
dHJ1ZSk7CisgICAgICAgIGJyZWFrOworCisgICAgICBkZWZhdWx0OgorICAgICAgICBERV9BU1NF
UlQoREVfRkFMU0UpOworICAgIH0KK30KKworTmF0aXZlV2luZG93Ojp+TmF0aXZlV2luZG93KCkK
K3sKKyAgICBkZWxldGUgbVdpbmRvdzsKK30KKworZWdsdzo6RUdMTmF0aXZlV2luZG93VHlwZSBO
YXRpdmVXaW5kb3c6OmdldExlZ2FjeU5hdGl2ZSgpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8ZWdsdzo6RUdMTmF0aXZlV2luZG93VHlwZT4obVdpbmRvdy0+Z2V0TmF0aXZlV2luZG93
KCkpOworfQorCitJVmVjMiBOYXRpdmVXaW5kb3c6OmdldFN1cmZhY2VTaXplKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gSVZlYzIobVdpbmRvdy0+Z2V0V2lkdGgoKSwgbVdpbmRvdy0+Z2V0SGVpZ2h0
KCkpOworfQorCit2b2lkIE5hdGl2ZVdpbmRvdzo6cHJvY2Vzc0V2ZW50cygpCit7CisgICAgbVdp
bmRvdy0+bWVzc2FnZUxvb3AoKTsKKworICAgIC8vIExvb2sgZm9yIGEgcXVpdCBldmVudCB0byBm
b3J3YXJkIHRvIHRoZSBFdmVudFN0YXRlCisgICAgRXZlbnQgZXZlbnQ7CisgICAgd2hpbGUgKG1X
aW5kb3ctPnBvcEV2ZW50KCZldmVudCkpCisgICAgeworICAgICAgICBpZiAoZXZlbnQuVHlwZSA9
PSBFdmVudDo6RVZFTlRfQ0xPU0VEKQorICAgICAgICB7CisgICAgICAgICAgICBtRXZlbnRzLT5z
aWduYWxRdWl0RXZlbnQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBOYXRpdmVXaW5k
b3c6OnNldFN1cmZhY2VTaXplKElWZWMyIHNpemUpCit7CisgICAgbVdpbmRvdy0+cmVzaXplKHNp
emUueCgpLCBzaXplLnkoKSk7Cit9CisKK3ZvaWQgTmF0aXZlV2luZG93OjpyZWFkU2NyZWVuUGl4
ZWxzKHRjdTo6VGV4dHVyZUxldmVsICpkc3QpIGNvbnN0Cit7CisgICAgZHN0LT5zZXRTdG9yYWdl
KFRleHR1cmVGb3JtYXQoVGV4dHVyZUZvcm1hdDo6QkdSQSwgVGV4dHVyZUZvcm1hdDo6VU5PUk1f
SU5UOCksIG1XaW5kb3ctPmdldFdpZHRoKCksIG1XaW5kb3ctPmdldEhlaWdodCgpKTsKKyAgICBi
b29sIHN1Y2Nlc3MgPSBtV2luZG93LT50YWtlU2NyZWVuc2hvdChyZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPihkc3QtPmdldEFjY2VzcygpLmdldERhdGFQdHIoKSkpOworICAgIERFX0FTU0VSVChz
dWNjZXNzKTsKKyAgICBERV9VTlJFRihzdWNjZXNzKTsKK30KKworfSAvLyBhbm9ueW1vdXMKKwor
QU5HTEVOYXRpdmVEaXNwbGF5RmFjdG9yeTo6QU5HTEVOYXRpdmVEaXNwbGF5RmFjdG9yeShjb25z
dCBzdGQ6OnN0cmluZyAmbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmRlc2NyaXB0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnZlY3RvcjxlZ2x3OjpFR0xBdHRyaWI+ICZwbGF0Zm9ybUF0dHJpYnV0ZXMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50U3RhdGUgKmV2
ZW50U3RhdGUpCisgICAgOiBlZ2x1OjpOYXRpdmVEaXNwbGF5RmFjdG9yeShuYW1lLCBkZXNjcmlw
dGlvbiwgRElTUExBWV9DQVBBQklMSVRJRVMsIEVHTF9QTEFURk9STV9BTkdMRV9BTkdMRSwgIkVH
TF9FWFRfcGxhdGZvcm1fYmFzZSIpLAorICAgICAgbVBsYXRmb3JtQXR0cmlidXRlcyhwbGF0Zm9y
bUF0dHJpYnV0ZXMpCit7CisgICAgbV9uYXRpdmVXaW5kb3dSZWdpc3RyeS5yZWdpc3RlckZhY3Rv
cnkobmV3IE5hdGl2ZVdpbmRvd0ZhY3RvcnkoZXZlbnRTdGF0ZSkpOworICAgIG1fbmF0aXZlUGl4
bWFwUmVnaXN0cnkucmVnaXN0ZXJGYWN0b3J5KG5ldyBOYXRpdmVQaXhtYXBGYWN0b3J5KCkpOwor
fQorCitBTkdMRU5hdGl2ZURpc3BsYXlGYWN0b3J5Ojp+QU5HTEVOYXRpdmVEaXNwbGF5RmFjdG9y
eSgpCit7Cit9CisKK2VnbHU6Ok5hdGl2ZURpc3BsYXkgKkFOR0xFTmF0aXZlRGlzcGxheUZhY3Rv
cnk6OmNyZWF0ZURpc3BsYXkoY29uc3QgZWdsdzo6RUdMQXR0cmliICphdHRyaWJMaXN0KSBjb25z
dAoreworICAgIERFX1VOUkVGKGF0dHJpYkxpc3QpOworICAgIHJldHVybiBuZXcgQU5HTEVOYXRp
dmVEaXNwbGF5KG1QbGF0Zm9ybUF0dHJpYnV0ZXMpOworfQorCit9IC8vIHRjdQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC90Y3VBTkdMRU5hdGl2
ZURpc3BsYXlGYWN0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC90Y3VBTkdMRU5hdGl2ZURpc3BsYXlGYWN0b3J5LmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3Vw
cG9ydC90Y3VBTkdMRU5hdGl2ZURpc3BsYXlGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw2MiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQ
cm9ncmFtIFRlc3RlciBDb3JlCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJv
amVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKyAqCisgKi8KKworI2lmbmRlZiBUQ1VfQU5HTEVfV0lOMzJfTkFUSVZFX0RJU1BMQVlf
RkFDVE9SWV9IXworI2RlZmluZSBUQ1VfQU5HTEVfV0lOMzJfTkFUSVZFX0RJU1BMQVlfRkFDVE9S
WV9IXworCisjaW5jbHVkZSAidGN1RGVmcy5ocHAiCisjaW5jbHVkZSAiZWdsdU5hdGl2ZURpc3Bs
YXkuaHBwIgorI2luY2x1ZGUgImVnbHdEZWZzLmhwcCIKKworbmFtZXNwYWNlIHRjdQoreworCitj
bGFzcyBFdmVudFN0YXRlCit7CisgIHB1YmxpYzoKKyAgICBFdmVudFN0YXRlKCkKKyAgICAgICAg
OiBtUXVpdChmYWxzZSkKKyAgICB7CisgICAgfQorICAgIGJvb2wgcXVpdFNpZ25hbGVkKCkgY29u
c3QgeyByZXR1cm4gbVF1aXQ7IH07CisgICAgdm9pZCBzaWduYWxRdWl0RXZlbnQoKSB7IG1RdWl0
ID0gdHJ1ZTsgfTsKKworICBwcml2YXRlOgorICAgIGJvb2wgbVF1aXQ7Cit9OworCitjbGFzcyBB
TkdMRU5hdGl2ZURpc3BsYXlGYWN0b3J5IDogcHVibGljIGVnbHU6Ok5hdGl2ZURpc3BsYXlGYWN0
b3J5Cit7CisgIHB1YmxpYzoKKyAgICBBTkdMRU5hdGl2ZURpc3BsYXlGYWN0b3J5KGNvbnN0IHN0
ZDo6c3RyaW5nICZuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJmRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjp2ZWN0b3I8ZWdsdzo6RUdMQXR0cmliPiAmcGxhdGZvcm1BdHRyaWJ1dGVzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRTdGF0ZSAqZXZlbnRTdGF0ZSk7CisgICAg
fkFOR0xFTmF0aXZlRGlzcGxheUZhY3RvcnkoKSBvdmVycmlkZTsKKworICAgIGVnbHU6Ok5hdGl2
ZURpc3BsYXkgKmNyZWF0ZURpc3BsYXkoY29uc3QgZWdsdzo6RUdMQXR0cmliKiBhdHRyaWJMaXN0
KSBjb25zdCBvdmVycmlkZTsKKworICBwcml2YXRlOgorICAgIHN0ZDo6dmVjdG9yPGVnbHc6OkVH
TEF0dHJpYj4gbVBsYXRmb3JtQXR0cmlidXRlczsKK307CisKK30gLy8gdGN1CisKKyNlbmRpZiAv
LyBUQ1VfQU5HTEVfV0lOMzJfTkFUSVZFX0RJU1BMQVlfRkFDVE9SWV9IXwpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC90Y3VBTkdMRVBsYXRmb3Jt
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVx
cF9zdXBwb3J0L3RjdUFOR0xFUGxhdGZvcm0uY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvdGN1QU5HTEVQbGF0Zm9ybS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTggQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
ICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBUZXN0ZXIgQ29yZQorICogLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIENvcHlyaWdodCAyMDE0IFRo
ZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUg
QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
KyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNl
IGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICog
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisKKyNpbmNsdWRlICJ0Y3VB
TkdMRVBsYXRmb3JtLmgiCisKKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisjaW5jbHVkZSA8RUdML2Vn
bGV4dC5oPgorCisjaW5jbHVkZSAiZWdsdUdMQ29udGV4dEZhY3RvcnkuaHBwIgorI2luY2x1ZGUg
InN5c3RlbV91dGlscy5oIgorI2luY2x1ZGUgInRjdUFOR0xFTmF0aXZlRGlzcGxheUZhY3Rvcnku
aCIKKyNpbmNsdWRlICJ0Y3VOdWxsQ29udGV4dEZhY3RvcnkuaHBwIgorCituYW1lc3BhY2UgdGN1
Cit7CisKK0FOR0xFUGxhdGZvcm06OkFOR0xFUGxhdGZvcm0oKQoreworICAgIGFuZ2xlOjpTZXRM
b3dQcmlvcml0eVByb2Nlc3MoKTsKKworI2lmIChERV9PUyA9PSBERV9PU19XSU4zMikKKyAgICBz
dGQ6OnZlY3RvcjxlZ2x3OjpFR0xBdHRyaWI+IGQzZDExQXR0cmliczsKKyAgICBkM2QxMUF0dHJp
YnMucHVzaF9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0FOR0xFKTsKKyAgICBkM2QxMUF0
dHJpYnMucHVzaF9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFKTsKKyAg
ICBkM2QxMUF0dHJpYnMucHVzaF9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9B
TkdMRSk7CisgICAgZDNkMTFBdHRyaWJzLnB1c2hfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfREVW
SUNFX1RZUEVfSEFSRFdBUkVfQU5HTEUpOworICAgIGQzZDExQXR0cmlicy5wdXNoX2JhY2soRUdM
X05PTkUpOworCisgICAgYXV0byAqZDNkMTFGYWN0b3J5ID0gbmV3IEFOR0xFTmF0aXZlRGlzcGxh
eUZhY3RvcnkoCisgICAgICAgICJhbmdsZS1kM2QxMSIsICJBTkdMRSBEM0QxMSBEaXNwbGF5Iiwg
ZDNkMTFBdHRyaWJzLCAmbUV2ZW50cyk7CisgICAgbV9uYXRpdmVEaXNwbGF5RmFjdG9yeVJlZ2lz
dHJ5LnJlZ2lzdGVyRmFjdG9yeShkM2QxMUZhY3RvcnkpOworCisgICAgc3RkOjp2ZWN0b3I8ZWds
dzo6RUdMQXR0cmliPiBkM2Q5QXR0cmliczsKKyAgICBkM2Q5QXR0cmlicy5wdXNoX2JhY2soRUdM
X1BMQVRGT1JNX0FOR0xFX1RZUEVfQU5HTEUpOworICAgIGQzZDlBdHRyaWJzLnB1c2hfYmFjayhF
R0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0Q5X0FOR0xFKTsKKyAgICBkM2Q5QXR0cmlicy5wdXNo
X2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0FOR0xFKTsKKyAgICBkM2Q5QXR0
cmlicy5wdXNoX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0hBUkRXQVJFX0FO
R0xFKTsKKyAgICBkM2Q5QXR0cmlicy5wdXNoX2JhY2soRUdMX05PTkUpOworCisgICAgYXV0byAq
ZDNkOUZhY3RvcnkgPSBuZXcgQU5HTEVOYXRpdmVEaXNwbGF5RmFjdG9yeSgKKyAgICAgICAgImFu
Z2xlLWQzZDkiLCAiQU5HTEUgRDNEOSBEaXNwbGF5IiwgZDNkOUF0dHJpYnMsICZtRXZlbnRzKTsK
KyAgICBtX25hdGl2ZURpc3BsYXlGYWN0b3J5UmVnaXN0cnkucmVnaXN0ZXJGYWN0b3J5KGQzZDlG
YWN0b3J5KTsKKworICAgIHN0ZDo6dmVjdG9yPGVnbHc6OkVHTEF0dHJpYj4gZDNkMTE5M0F0dHJp
YnM7CisgICAgZDNkMTE5M0F0dHJpYnMucHVzaF9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9UWVBF
X0FOR0xFKTsKKyAgICBkM2QxMTkzQXR0cmlicy5wdXNoX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xF
X1RZUEVfRDNEMTFfQU5HTEUpOworICAgIGQzZDExOTNBdHRyaWJzLnB1c2hfYmFjayhFR0xfUExB
VEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfQU5HTEUpOworICAgIGQzZDExOTNBdHRyaWJzLnB1c2hf
YmFjayhFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfSEFSRFdBUkVfQU5HTEUpOworICAg
IGQzZDExOTNBdHRyaWJzLnB1c2hfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfTUFYX1ZFUlNJT05f
TUFKT1JfQU5HTEUpOworICAgIGQzZDExOTNBdHRyaWJzLnB1c2hfYmFjayg5KTsKKyAgICBkM2Qx
MTkzQXR0cmlicy5wdXNoX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX01BWF9WRVJTSU9OX01JTk9S
X0FOR0xFKTsKKyAgICBkM2QxMTkzQXR0cmlicy5wdXNoX2JhY2soMyk7CisgICAgZDNkMTE5M0F0
dHJpYnMucHVzaF9iYWNrKEVHTF9OT05FKTsKKworICAgIGF1dG8gKmQzZDExOTNGYWN0b3J5ID0g
bmV3IEFOR0xFTmF0aXZlRGlzcGxheUZhY3RvcnkoCisgICAgICAgICJhbmdsZS1kM2QxMS1mbDkz
IiwgIkFOR0xFIEQzRDExIEZMOV8zIERpc3BsYXkiLCBkM2QxMTkzQXR0cmlicywgJm1FdmVudHMp
OworICAgIG1fbmF0aXZlRGlzcGxheUZhY3RvcnlSZWdpc3RyeS5yZWdpc3RlckZhY3RvcnkoZDNk
MTE5M0ZhY3RvcnkpOworI2VuZGlmIC8vIChERV9PUyA9PSBERV9PU19XSU4zMikKKworI2lmIGRl
ZmluZWQoQU5HTEVfVVNFX09aT05FKSB8fCAoREVfT1MgPT0gREVfT1NfQU5EUk9JRCkKKyAgICBz
dGQ6OnZlY3RvcjxlZ2x3OjpFR0xBdHRyaWI+IGdsZXNBdHRyaWJzOworICAgIGdsZXNBdHRyaWJz
LnB1c2hfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9BTkdMRSk7CisgICAgZ2xlc0F0dHJp
YnMucHVzaF9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTEVTX0FOR0xFKTsKKyAg
ICBnbGVzQXR0cmlicy5wdXNoX2JhY2soRUdMX05PTkUpOworCisgICAgYXV0byAqZ2xlc0ZhY3Rv
cnkgPSBuZXcgQU5HTEVOYXRpdmVEaXNwbGF5RmFjdG9yeSgKKyAgICAgICAgImFuZ2xlLWdsZXMi
LCAiQU5HTEUgT3BlbkdMIEVTIERpc3BsYXkiLCBnbGVzQXR0cmlicywgJm1FdmVudHMpOworICAg
IG1fbmF0aXZlRGlzcGxheUZhY3RvcnlSZWdpc3RyeS5yZWdpc3RlckZhY3RvcnkoZ2xlc0ZhY3Rv
cnkpOworI2VuZGlmCisKKyAgICBzdGQ6OnZlY3RvcjxlZ2x3OjpFR0xBdHRyaWI+IGdsQXR0cmli
czsKKyAgICBnbEF0dHJpYnMucHVzaF9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0FOR0xF
KTsKKyAgICBnbEF0dHJpYnMucHVzaF9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5H
TF9BTkdMRSk7CisgICAgZ2xBdHRyaWJzLnB1c2hfYmFjayhFR0xfTk9ORSk7CisKKyAgICBhdXRv
ICpnbEZhY3RvcnkgPSBuZXcgQU5HTEVOYXRpdmVEaXNwbGF5RmFjdG9yeSgKKyAgICAgICAgImFu
Z2xlLWdsIiwgIkFOR0xFIE9wZW5HTCBEaXNwbGF5IiwgZ2xBdHRyaWJzLCAmbUV2ZW50cyk7Cisg
ICAgbV9uYXRpdmVEaXNwbGF5RmFjdG9yeVJlZ2lzdHJ5LnJlZ2lzdGVyRmFjdG9yeShnbEZhY3Rv
cnkpOworCisgICAgbV9jb250ZXh0RmFjdG9yeVJlZ2lzdHJ5LnJlZ2lzdGVyRmFjdG9yeShuZXcg
ZWdsdTo6R0xDb250ZXh0RmFjdG9yeShtX25hdGl2ZURpc3BsYXlGYWN0b3J5UmVnaXN0cnkpKTsK
KworICAgIC8vIEFkZCBOdWxsIGNvbnRleHQgdHlwZSBmb3IgdXNlIGluIGdlbmVyYXRpbmcgY2Fz
ZSBsaXN0cworICAgIG1fY29udGV4dEZhY3RvcnlSZWdpc3RyeS5yZWdpc3RlckZhY3RvcnkobmV3
IG51bGw6Ok51bGxHTENvbnRleHRGYWN0b3J5KCkpOworfQorCitBTkdMRVBsYXRmb3JtOjp+QU5H
TEVQbGF0Zm9ybSgpCit7Cit9CisKK2Jvb2wgQU5HTEVQbGF0Zm9ybTo6cHJvY2Vzc0V2ZW50cygp
Cit7CisgICAgcmV0dXJuICFtRXZlbnRzLnF1aXRTaWduYWxlZCgpOworfQorCit9IC8vIHRjdQor
CisvLyBDcmVhdGUgcGxhdGZvcm0KK3RjdTo6UGxhdGZvcm0gKmNyZWF0ZVBsYXRmb3JtKCkKK3sK
KyAgICByZXR1cm4gbmV3IHRjdTo6QU5HTEVQbGF0Zm9ybSgpOworfQpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC90Y3VBTkdMRVBsYXRmb3JtLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3Vw
cG9ydC90Y3VBTkdMRVBsYXRmb3JtLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC90Y3VBTkdMRVBsYXRmb3JtLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBkcmF3RWxl
bWVudHMgUXVhbGl0eSBQcm9ncmFtIFRlc3RlciBDb3JlCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQg
T3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworI2lmbmRlZiBUQ1VfQU5HTEVfV0lOMzJf
UExBVEZPUk1fSF8KKyNkZWZpbmUgVENVX0FOR0xFX1dJTjMyX1BMQVRGT1JNX0hfCisKKyNpbmNs
dWRlICJ0Y3VEZWZzLmhwcCIKKyNpbmNsdWRlICJ0Y3VQbGF0Zm9ybS5ocHAiCisjaW5jbHVkZSAi
Z2x1UGxhdGZvcm0uaHBwIgorCisjaWZuZGVmIF9FR0xVUExBVEZPUk1fSFBQCisjICAgaW5jbHVk
ZSAiZWdsdVBsYXRmb3JtLmhwcCIKKyNlbmRpZgorCisjaW5jbHVkZSAidGN1QU5HTEVOYXRpdmVE
aXNwbGF5RmFjdG9yeS5oIgorCituYW1lc3BhY2UgdGN1Cit7CisKK2NsYXNzIEFOR0xFUGxhdGZv
cm0gOiBwdWJsaWMgdGN1OjpQbGF0Zm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICBwcml2YXRl
IGdsdTo6UGxhdGZvcm0sCisgICAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZSBlZ2x1OjpQbGF0
Zm9ybQoreworICBwdWJsaWM6CisgICAgQU5HTEVQbGF0Zm9ybSgpOworICAgIH5BTkdMRVBsYXRm
b3JtKCk7CisKKyAgICBib29sIHByb2Nlc3NFdmVudHMoKSBvdmVycmlkZTsKKworICAgIGNvbnN0
IGdsdTo6UGxhdGZvcm0gJmdldEdMUGxhdGZvcm0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBnbHU6OlBsYXRmb3JtJj4oKnRoaXMpOyB9CisgICAgY29uc3QgZWds
dTo6UGxhdGZvcm0gJmdldEVHTFBsYXRmb3JtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgZWdsdTo6UGxhdGZvcm0mPigqdGhpcyk7IH0KKworICBwcml2YXRlOgor
ICAgIEV2ZW50U3RhdGUgbUV2ZW50czsKK307CisKK30gLy8gdGN1CisKKyNlbmRpZiAvLyBUQ1Vf
QU5HTEVfV0lOMzJfUExBVEZPUk1fSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9kZXFwX3N1cHBvcnQvdGN1UmFuZG9tT3JkZXJFeGVjdXRvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC90Y3VS
YW5kb21PcmRlckV4ZWN1dG9yLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L3RjdVJhbmRvbU9yZGVyRXhlY3V0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjgyIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq
IGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0gVGVzdGVyIENvcmUKKyAqIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb3B5cmlnaHQgMjAxNCBUaGUg
QW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisg
KiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLy8qIQorICogXGZpbGUKKyAqIFxi
cmllZiBFeGVjdXRvciB3aGljaCBjYW4gcnVuIHJhbmRvbWx5IGFjY2Vzc2VkIHRlc3RzLgorICov
LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSovCisKKyNpbmNsdWRlICJ0Y3VSYW5kb21PcmRlckV4ZWN1dG9yLmgiCisK
KyNpbmNsdWRlICJ0Y3VDb21tYW5kTGluZS5ocHAiCisjaW5jbHVkZSAidGN1VGVzdExvZy5ocHAi
CisjaW5jbHVkZSAiZGVTdHJpbmdVdGlsLmhwcCIKKyNpbmNsdWRlICJkZUNsb2NrLmgiCisKKyNp
bmNsdWRlIDxjc3RkaW8+CisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGZzdHJlYW0+
CisKK3VzaW5nIHN0ZDo6dmVjdG9yOwordXNpbmcgc3RkOjpzdHJpbmc7CisKK25hbWVzcGFjZSB0
Y3UKK3sKKworUmFuZG9tT3JkZXJFeGVjdXRvcjo6UmFuZG9tT3JkZXJFeGVjdXRvcihUZXN0UGFj
a2FnZVJvb3QgJnJvb3QsIFRlc3RDb250ZXh0ICZ0ZXN0Q3R4KQorICAgIDogbV90ZXN0Q3R4KHRl
c3RDdHgpLCBtX2luZmxhdGVyKHRlc3RDdHgpCit7CisgICAgbV9ub2RlU3RhY2sucHVzaF9iYWNr
KE5vZGVTdGFja0VudHJ5KCZyb290KSk7CisgICAgcm9vdC5nZXRDaGlsZHJlbihtX25vZGVTdGFj
a1swXS5jaGlsZHJlbik7Cit9CisKK1JhbmRvbU9yZGVyRXhlY3V0b3I6On5SYW5kb21PcmRlckV4
ZWN1dG9yKHZvaWQpCit7CisgICAgcHJ1bmVTdGFjaygxKTsKK30KKwordm9pZCBSYW5kb21PcmRl
ckV4ZWN1dG9yOjpwcnVuZVN0YWNrKHNpemVfdCBuZXdTdGFja1NpemUpCit7CisgICAgLy8gXG5v
dGUgUm9vdCBpcyBub3QgbWFuYWdlZCBieSB1cworICAgIERFX0FTU0VSVChkZTo6aW5SYW5nZShu
ZXdTdGFja1NpemUsIHNpemVfdCgxKSwgbV9ub2RlU3RhY2suc2l6ZSgpKSk7CisKKyAgICB3aGls
ZSAobV9ub2RlU3RhY2suc2l6ZSgpID4gbmV3U3RhY2tTaXplKQorICAgIHsKKyAgICAgICAgTm9k
ZVN0YWNrRW50cnkgJmN1ckVudHJ5ID0gbV9ub2RlU3RhY2suYmFjaygpOworICAgICAgICBjb25z
dCBib29sIGlzUGtnID0gY3VyRW50cnkubm9kZS0+Z2V0Tm9kZVR5cGUoKSA9PSBOT0RFVFlQRV9Q
QUNLQUdFOworCisgICAgICAgIERFX0FTU0VSVCgobV9ub2RlU3RhY2suc2l6ZSgpID09IDIpID09
IGlzUGtnKTsKKworICAgICAgICBpZiAoY3VyRW50cnkubm9kZSkgIC8vIEp1c3QgaW4gY2FzZSB3
ZSBhcmUgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGVhbnVwIHBhdGggYWZ0
ZXIgcGFydGlhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBydW5lCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmIChjdXJFbnRyeS5ub2RlLT5nZXROb2RlVHlwZSgpID09IE5PREVU
WVBFX0dST1VQKQorICAgICAgICAgICAgICAgIG1faW5mbGF0ZXIubGVhdmVHcm91cE5vZGUoc3Rh
dGljX2Nhc3Q8VGVzdENhc2VHcm91cCAqPihjdXJFbnRyeS5ub2RlKSk7CisgICAgICAgICAgICBl
bHNlIGlmIChjdXJFbnRyeS5ub2RlLT5nZXROb2RlVHlwZSgpID09IE5PREVUWVBFX1BBQ0tBR0Up
CisgICAgICAgICAgICAgICAgbV9pbmZsYXRlci5sZWF2ZVRlc3RQYWNrYWdlKHN0YXRpY19jYXN0
PFRlc3RQYWNrYWdlICo+KGN1ckVudHJ5Lm5vZGUpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBERV9BU1NFUlQoY3VyRW50cnkuY2hpbGRyZW4uZW1wdHkoKSk7CisKKyAgICAg
ICAgICAgIGN1ckVudHJ5Lm5vZGUgPSBERV9OVUxMOworICAgICAgICAgICAgY3VyRW50cnkuY2hp
bGRyZW4uY2xlYXIoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpc1BrZykKKyAgICAgICAg
ICAgIG1fY2FzZUV4ZWN1dG9yLmNsZWFyKCk7CisKKyAgICAgICAgbV9ub2RlU3RhY2sucG9wX2Jh
Y2soKTsKKyAgICB9Cit9CisKK3N0YXRpYyBUZXN0Tm9kZSAqZmluZE5vZGVCeU5hbWUodmVjdG9y
PFRlc3ROb2RlICo+ICZub2RlcywgY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpCit7CisgICAgZm9y
ICh2ZWN0b3I8VGVzdE5vZGUgKj46OmNvbnN0X2l0ZXJhdG9yIG5vZGUgPSBub2Rlcy5iZWdpbigp
OyBub2RlICE9IG5vZGVzLmVuZCgpOyArK25vZGUpCisgICAgeworICAgICAgICBpZiAobmFtZSA9
PSAoKm5vZGUpLT5nZXROYW1lKCkpCisgICAgICAgICAgICByZXR1cm4gKm5vZGU7CisgICAgfQor
CisgICAgcmV0dXJuIERFX05VTEw7Cit9CisKK1Rlc3RDYXNlICpSYW5kb21PcmRlckV4ZWN1dG9y
OjpzZWVrVG9DYXNlKGNvbnN0IHN0cmluZyAmcGF0aCkKK3sKKyAgICBjb25zdCB2ZWN0b3I8c3Ry
aW5nPiBjb21wb25lbnRzID0gZGU6OnNwbGl0U3RyaW5nKHBhdGgsICcuJyk7CisgICAgc2l6ZV90
IGNvbXBOZHg7CisKKyAgICBERV9BU1NFUlQoIW1fbm9kZVN0YWNrLmVtcHR5KCkgJiYgbV9ub2Rl
U3RhY2suZnJvbnQoKS5ub2RlLT5nZXROb2RlVHlwZSgpID09IE5PREVUWVBFX1JPT1QpOworCisg
ICAgZm9yIChjb21wTmR4ID0gMDsgY29tcE5keCA8IGNvbXBvbmVudHMuc2l6ZSgpOyBjb21wTmR4
KyspCisgICAgeworICAgICAgICBjb25zdCBzaXplX3Qgc3RhY2tQb3MgPSBjb21wTmR4ICsgMTsK
KworICAgICAgICBpZiAoc3RhY2tQb3MgPj0gbV9ub2RlU3RhY2suc2l6ZSgpKQorICAgICAgICAg
ICAgYnJlYWs7ICAvLyBTdGFjayBlbmQKKyAgICAgICAgZWxzZSBpZiAoY29tcG9uZW50c1tjb21w
TmR4XSAhPSBtX25vZGVTdGFja1tzdGFja1Bvc10ubm9kZS0+Z2V0TmFtZSgpKQorICAgICAgICB7
CisgICAgICAgICAgICAvLyBDdXJyZW50IHN0YWNrIGRvZXNuJ3QgbWF0Y2ggYW55IG1vcmUsIHBy
dW5lLgorICAgICAgICAgICAgcHJ1bmVTdGFjayhzdGFja1Bvcyk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgIH0KKworICAgIERFX0FTU0VSVChtX25vZGVTdGFjay5zaXplKCkg
PT0gY29tcE5keCArIDEpOworCisgICAgZm9yICg7IGNvbXBOZHggPCBjb21wb25lbnRzLnNpemUo
KTsgY29tcE5keCsrKQorICAgIHsKKyAgICAgICAgY29uc3Qgc2l6ZV90IHBhcmVudFN0YWNrUG9z
ID0gY29tcE5keDsKKyAgICAgICAgVGVzdE5vZGUgKmNvbnN0IGN1ck5vZGUgPQorICAgICAgICAg
ICAgZmluZE5vZGVCeU5hbWUobV9ub2RlU3RhY2tbcGFyZW50U3RhY2tQb3NdLmNoaWxkcmVuLCBj
b21wb25lbnRzW2NvbXBOZHhdKTsKKworICAgICAgICBpZiAoIWN1ck5vZGUpCisgICAgICAgICAg
ICB0aHJvdyBFeGNlcHRpb24oc3RyaW5nKCJUZXN0IGhpZXJhcmNoeSBub2RlIG5vdCBmb3VuZDog
IikgKyBwYXRoKTsKKworICAgICAgICBtX25vZGVTdGFjay5wdXNoX2JhY2soTm9kZVN0YWNrRW50
cnkoY3VyTm9kZSkpOworCisgICAgICAgIGlmIChjdXJOb2RlLT5nZXROb2RlVHlwZSgpID09IE5P
REVUWVBFX1BBQ0tBR0UpCisgICAgICAgIHsKKyAgICAgICAgICAgIFRlc3RQYWNrYWdlICpjb25z
dCB0ZXN0UGFja2FnZSA9IHN0YXRpY19jYXN0PFRlc3RQYWNrYWdlICo+KGN1ck5vZGUpOworCisg
ICAgICAgICAgICBtX2luZmxhdGVyLmVudGVyVGVzdFBhY2thZ2UodGVzdFBhY2thZ2UsIG1fbm9k
ZVN0YWNrLmJhY2soKS5jaGlsZHJlbik7CisgICAgICAgICAgICBERV9BU1NFUlQoIW1fY2FzZUV4
ZWN1dG9yKTsKKyAgICAgICAgICAgIG1fY2FzZUV4ZWN1dG9yID0gZGU6Ok1vdmVQdHI8VGVzdENh
c2VFeGVjdXRvcj4odGVzdFBhY2thZ2UtPmNyZWF0ZUV4ZWN1dG9yKCkpOworICAgICAgICB9Cisg
ICAgICAgIGVsc2UgaWYgKGN1ck5vZGUtPmdldE5vZGVUeXBlKCkgPT0gTk9ERVRZUEVfR1JPVVAp
CisgICAgICAgICAgICBtX2luZmxhdGVyLmVudGVyR3JvdXBOb2RlKHN0YXRpY19jYXN0PFRlc3RD
YXNlR3JvdXAgKj4oY3VyTm9kZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fbm9kZVN0YWNrLmJhY2soKS5jaGlsZHJlbik7CisgICAgICAgIGVsc2UgaWYgKGNvbXBO
ZHggKyAxICE9IGNvbXBvbmVudHMuc2l6ZSgpKQorICAgICAgICAgICAgdGhyb3cgRXhjZXB0aW9u
KHN0cmluZygiSW52YWxpZCB0ZXN0IGhpZXJhcmNoeSBwYXRoOiAiKSArIHBhdGgpOworICAgIH0K
KworICAgIERFX0FTU0VSVChtX25vZGVTdGFjay5zaXplKCkgPT0gY29tcG9uZW50cy5zaXplKCkg
KyAxKTsKKworICAgIGlmIChpc1Rlc3ROb2RlVHlwZUV4ZWN1dGFibGUobV9ub2RlU3RhY2suYmFj
aygpLm5vZGUtPmdldE5vZGVUeXBlKCkpKQorICAgICAgICByZXR1cm4gZHluYW1pY19jYXN0PFRl
c3RDYXNlICo+KG1fbm9kZVN0YWNrLmJhY2soKS5ub2RlKTsKKyAgICBlbHNlCisgICAgICAgIHRo
cm93IEV4Y2VwdGlvbihzdHJpbmcoIk5vdCBhIHRlc3QgY2FzZTogIikgKyBwYXRoKTsKK30KKwor
c3RhdGljIHFwVGVzdENhc2VUeXBlIG5vZGVUeXBlVG9UZXN0Q2FzZVR5cGUoVGVzdE5vZGVUeXBl
IG5vZGVUeXBlKQoreworICAgIHN3aXRjaCAobm9kZVR5cGUpCisgICAgeworICAgICAgICBjYXNl
IE5PREVUWVBFX1NFTEZfVkFMSURBVEU6CisgICAgICAgICAgICByZXR1cm4gUVBfVEVTVF9DQVNF
X1RZUEVfU0VMRl9WQUxJREFURTsKKyAgICAgICAgY2FzZSBOT0RFVFlQRV9QRVJGT1JNQU5DRToK
KyAgICAgICAgICAgIHJldHVybiBRUF9URVNUX0NBU0VfVFlQRV9QRVJGT1JNQU5DRTsKKyAgICAg
ICAgY2FzZSBOT0RFVFlQRV9DQVBBQklMSVRZOgorICAgICAgICAgICAgcmV0dXJuIFFQX1RFU1Rf
Q0FTRV9UWVBFX0NBUEFCSUxJVFk7CisgICAgICAgIGNhc2UgTk9ERVRZUEVfQUNDVVJBQ1k6Cisg
ICAgICAgICAgICByZXR1cm4gUVBfVEVTVF9DQVNFX1RZUEVfQUNDVVJBQ1k7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBERV9BU1NFUlQoZmFsc2UpOworICAgICAgICAgICAgcmV0dXJu
IFFQX1RFU1RfQ0FTRV9UWVBFX0xBU1Q7CisgICAgfQorfQorCitUZXN0U3RhdHVzIFJhbmRvbU9y
ZGVyRXhlY3V0b3I6OmV4ZWN1dGUoY29uc3Qgc3RkOjpzdHJpbmcgJmNhc2VQYXRoKQoreworICAg
IFRlc3RDYXNlICpjb25zdCB0ZXN0Q2FzZSA9IHNlZWtUb0Nhc2UoY2FzZVBhdGgpOworICAgIFRl
c3RMb2cgJmxvZyA9IG1fdGVzdEN0eC5nZXRMb2coKTsKKyAgICBjb25zdCBxcFRlc3RDYXNlVHlw
ZSBjYXNlVHlwZSA9IG5vZGVUeXBlVG9UZXN0Q2FzZVR5cGUodGVzdENhc2UtPmdldE5vZGVUeXBl
KCkpOworCisgICAgbV90ZXN0Q3R4LnNldFRlcm1pbmF0ZUFmdGVyKGZhbHNlKTsKKyAgICBsb2cu
c3RhcnRDYXNlKGNhc2VQYXRoLmNfc3RyKCksIGNhc2VUeXBlKTsKKworICAgIHsKKyAgICAgICAg
Y29uc3QgVGVzdFN0YXR1cyByZXN1bHQgPSBleGVjdXRlSW5uZXIodGVzdENhc2UsIGNhc2VQYXRo
KTsKKyAgICAgICAgbG9nLmVuZENhc2UocmVzdWx0LmdldENvZGUoKSwgcmVzdWx0LmdldERlc2Ny
aXB0aW9uKCkuY19zdHIoKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorfQorCit0
Y3U6OlRlc3RTdGF0dXMgUmFuZG9tT3JkZXJFeGVjdXRvcjo6ZXhlY3V0ZUlubmVyKFRlc3RDYXNl
ICp0ZXN0Q2FzZSwgY29uc3Qgc3RkOjpzdHJpbmcgJmNhc2VQYXRoKQoreworICAgIFRlc3RMb2cg
JmxvZyA9IG1fdGVzdEN0eC5nZXRMb2coKTsKKyAgICBjb25zdCBkZVVpbnQ2NCB0ZXN0U3RhcnRU
aW1lID0gZGVHZXRNaWNyb3NlY29uZHMoKTsKKworICAgIG1fdGVzdEN0eC5zZXRUZXN0UmVzdWx0
KFFQX1RFU1RfUkVTVUxUX0xBU1QsICIiKTsKKworICAgIC8vIEluaXRpYWxpemUsIHdpbGwgcmV0
dXJuIGltbWVkaWF0ZWx5IGlmIGZhaWxzCisgICAgdHJ5CisgICAgeworICAgICAgICBtX2Nhc2VF
eGVjdXRvci0+aW5pdCh0ZXN0Q2FzZSwgY2FzZVBhdGgpOworICAgIH0KKyAgICBjYXRjaCAoY29u
c3Qgc3RkOjpiYWRfYWxsb2MgJikKKyAgICB7CisgICAgICAgIG1fdGVzdEN0eC5zZXRUZXJtaW5h
dGVBZnRlcih0cnVlKTsKKyAgICAgICAgcmV0dXJuIFRlc3RTdGF0dXMoUVBfVEVTVF9SRVNVTFRf
UkVTT1VSQ0VfRVJST1IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gYWxs
b2NhdGUgbWVtb3J5IGluIHRlc3QgY2FzZSBpbml0Iik7CisgICAgfQorICAgIGNhdGNoIChjb25z
dCBUZXN0RXhjZXB0aW9uICZlKQorICAgIHsKKyAgICAgICAgREVfQVNTRVJUKGUuZ2V0VGVzdFJl
c3VsdCgpICE9IFFQX1RFU1RfUkVTVUxUX0xBU1QpOworICAgICAgICBtX3Rlc3RDdHguc2V0VGVy
bWluYXRlQWZ0ZXIoZS5pc0ZhdGFsKCkpOworICAgICAgICBsb2cgPDwgZTsKKyAgICAgICAgcmV0
dXJuIFRlc3RTdGF0dXMoZS5nZXRUZXN0UmVzdWx0KCksIGUuZ2V0TWVzc2FnZSgpKTsKKyAgICB9
CisgICAgY2F0Y2ggKGNvbnN0IEV4Y2VwdGlvbiAmZSkKKyAgICB7CisgICAgICAgIGxvZyA8PCBl
OworICAgICAgICByZXR1cm4gVGVzdFN0YXR1cyhRUF9URVNUX1JFU1VMVF9GQUlMLCBlLmdldE1l
c3NhZ2UoKSk7CisgICAgfQorCisgICAgLy8gRXhlY3V0ZQorICAgIGZvciAoOzspCisgICAgewor
ICAgICAgICBUZXN0Q2FzZTo6SXRlcmF0ZVJlc3VsdCBpdGVyYXRlUmVzdWx0ID0gVGVzdENhc2U6
OlNUT1A7CisKKyAgICAgICAgbV90ZXN0Q3R4LnRvdWNoV2F0Y2hkb2coKTsKKworICAgICAgICB0
cnkKKyAgICAgICAgeworICAgICAgICAgICAgaXRlcmF0ZVJlc3VsdCA9IG1fY2FzZUV4ZWN1dG9y
LT5pdGVyYXRlKHRlc3RDYXNlKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoY29uc3Qgc3Rk
OjpiYWRfYWxsb2MgJikKKyAgICAgICAgeworICAgICAgICAgICAgbV90ZXN0Q3R4LnNldFRlc3RS
ZXN1bHQoUVBfVEVTVF9SRVNVTFRfUkVTT1VSQ0VfRVJST1IsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBkdXJpbmcgdGVzdCAi
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhlY3V0aW9uIik7CisgICAg
ICAgIH0KKyAgICAgICAgY2F0Y2ggKGNvbnN0IFRlc3RFeGNlcHRpb24gJmUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGxvZyA8PCBlOworICAgICAgICAgICAgbV90ZXN0Q3R4LnNldFRlc3RSZXN1
bHQoZS5nZXRUZXN0UmVzdWx0KCksIGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgICAgIG1fdGVz
dEN0eC5zZXRUZXJtaW5hdGVBZnRlcihlLmlzRmF0YWwoKSk7CisgICAgICAgIH0KKyAgICAgICAg
Y2F0Y2ggKGNvbnN0IEV4Y2VwdGlvbiAmZSkKKyAgICAgICAgeworICAgICAgICAgICAgbG9nIDw8
IGU7CisgICAgICAgICAgICBtX3Rlc3RDdHguc2V0VGVzdFJlc3VsdChRUF9URVNUX1JFU1VMVF9G
QUlMLCBlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaXRlcmF0ZVJl
c3VsdCA9PSBUZXN0Q2FzZTo6U1RPUCkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAg
IERFX0FTU0VSVChtX3Rlc3RDdHguZ2V0VGVzdFJlc3VsdCgpICE9IFFQX1RFU1RfUkVTVUxUX0xB
U1QpOworCisgICAgaWYgKG1fdGVzdEN0eC5nZXRUZXN0UmVzdWx0KCkgPT0gUVBfVEVTVF9SRVNV
TFRfUkVTT1VSQ0VfRVJST1IpCisgICAgICAgIG1fdGVzdEN0eC5zZXRUZXJtaW5hdGVBZnRlcih0
cnVlKTsKKworICAgIC8vIERlLWluaXRpYWxpemUKKyAgICB0cnkKKyAgICB7CisgICAgICAgIG1f
Y2FzZUV4ZWN1dG9yLT5kZWluaXQodGVzdENhc2UpOworICAgIH0KKyAgICBjYXRjaCAoY29uc3Qg
dGN1OjpFeGNlcHRpb24gJmUpCisgICAgeworICAgICAgICBsb2cgPDwgZSA8PCBUZXN0TG9nOjpN
ZXNzYWdlIDw8ICJFcnJvciBpbiB0ZXN0IGNhc2UgZGVpbml0LCB0ZXN0IHByb2dyYW0gIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWxsIHRlcm1pbmF0ZS4iCisg
ICAgICAgICAgICA8PCBUZXN0TG9nOjpFbmRNZXNzYWdlOworICAgICAgICBtX3Rlc3RDdHguc2V0
VGVybWluYXRlQWZ0ZXIodHJ1ZSk7CisgICAgfQorCisgICAgaWYgKG1fdGVzdEN0eC5nZXRXYXRj
aERvZygpKQorICAgICAgICBxcFdhdGNoRG9nX3Jlc2V0KG1fdGVzdEN0eC5nZXRXYXRjaERvZygp
KTsKKworICAgIHsKKyAgICAgICAgY29uc3QgVGVzdFN0YXR1cyByZXN1bHQgPQorICAgICAgICAg
ICAgVGVzdFN0YXR1cyhtX3Rlc3RDdHguZ2V0VGVzdFJlc3VsdCgpLCBtX3Rlc3RDdHguZ2V0VGVz
dFJlc3VsdERlc2MoKSk7CisgICAgICAgIG1fdGVzdEN0eC5zZXRUZXN0UmVzdWx0KFFQX1RFU1Rf
UkVTVUxUX0xBU1QsICIiKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9Cit9CisKK30g
IC8vIHRjdQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3Vw
cG9ydC90Y3VSYW5kb21PcmRlckV4ZWN1dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC90Y3VSYW5kb21PcmRlckV4ZWN1dG9y
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2Rl
cXBfc3VwcG9ydC90Y3VSYW5kb21PcmRlckV4ZWN1dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw2NiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQ
cm9ncmFtIFRlc3RlciBDb3JlCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisgKgorICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJv
amVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKyAqCisgKi8gLyohCisgKiBcZmlsZQorICogXGJyaWVmIEdlbmVyaWMgbWFpbigpLgor
ICovIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0qLworCisjaWZuZGVmIFRDVV9SQU5ET01fT1JERVJfRVhFQ1VUT1Jf
SF8KKyNkZWZpbmUgVENVX1JBTkRPTV9PUkRFUl9FWEVDVVRPUl9IXworCisjaW5jbHVkZSAidGN1
VGVzdEhpZXJhcmNoeUl0ZXJhdG9yLmhwcCIKKyNpbmNsdWRlICJkZVVuaXF1ZVB0ci5ocHAiCisK
K25hbWVzcGFjZSB0Y3UKK3sKKworY2xhc3MgUmFuZG9tT3JkZXJFeGVjdXRvcgoreworICAgcHVi
bGljOgorICAgIFJhbmRvbU9yZGVyRXhlY3V0b3IoVGVzdFBhY2thZ2VSb290ICZyb290LCBUZXN0
Q29udGV4dCAmdGVzdEN0eCk7CisgICAgflJhbmRvbU9yZGVyRXhlY3V0b3Iodm9pZCk7CisKKyAg
ICBUZXN0U3RhdHVzIGV4ZWN1dGUoY29uc3Qgc3RkOjpzdHJpbmcgJnBhdGgpOworCisgICBwcml2
YXRlOgorICAgIHZvaWQgcHJ1bmVTdGFjayhzaXplX3QgbmV3U3RhY2tTaXplKTsKKyAgICBUZXN0
Q2FzZSAqc2Vla1RvQ2FzZShjb25zdCBzdGQ6OnN0cmluZyAmcGF0aCk7CisKKyAgICBUZXN0U3Rh
dHVzIGV4ZWN1dGVJbm5lcihUZXN0Q2FzZSAqdGVzdENhc2UsIGNvbnN0IHN0ZDo6c3RyaW5nICZj
YXNlUGF0aCk7CisKKyAgICBzdHJ1Y3QgTm9kZVN0YWNrRW50cnkKKyAgICB7CisgICAgICAgIFRl
c3ROb2RlICpub2RlOworICAgICAgICBzdGQ6OnZlY3RvcjxUZXN0Tm9kZSAqPiBjaGlsZHJlbjsK
KworICAgICAgICBOb2RlU3RhY2tFbnRyeSh2b2lkKSA6IG5vZGUoREVfTlVMTCkge30KKyAgICAg
ICAgTm9kZVN0YWNrRW50cnkoVGVzdE5vZGUgKm5vZGVfKSA6IG5vZGUobm9kZV8pIHt9CisgICAg
fTsKKworICAgIFRlc3RDb250ZXh0ICZtX3Rlc3RDdHg7CisKKyAgICBEZWZhdWx0SGllcmFyY2h5
SW5mbGF0ZXIgbV9pbmZsYXRlcjsKKyAgICBzdGQ6OnZlY3RvcjxOb2RlU3RhY2tFbnRyeT4gbV9u
b2RlU3RhY2s7CisKKyAgICBkZTo6TW92ZVB0cjxUZXN0Q2FzZUV4ZWN1dG9yPiBtX2Nhc2VFeGVj
dXRvcjsKK307CisKK30gIC8vIHRjdQorCisjZW5kaWYgIC8vIFRDVV9SQU5ET01fT1JERVJfRVhF
Q1VUT1JfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVz
dHMvRUdMQ29udGV4dENvbXBhdGliaWxpdHlUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTENvbnRleHRDb21wYXRpYmls
aXR5VGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL2VnbF90ZXN0cy9FR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMjg3IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gRUdMQ29udGV4dENv
bXBhdGliaWxpdHlUZXN0LmNwcDoKKy8vICAgVGhpcyB0ZXN0IHdpbGwgdHJ5IHRvIHVzZSBhbGwg
Y29tYmluYXRpb25zIG9mIGNvbnRleHQgY29uZmlncyBhbmQKKy8vICAgc3VyZmFjZSBjb25maWdz
LiBJZiB0aGUgY29uZmlncyBhcmUgY29tcGF0aWJsZSwgaXQgY2hlY2tzIHRoYXQgc2ltcGxlCisv
LyAgIHJlbmRlcmluZyB3b3Jrcywgb3RoZXJ3aXNlIGl0IGNoZWNrcyBhbiBlcnJvciBpcyBnZW5l
cmF0ZWQgb25lIE1ha2VDdXJyZW50LgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKKyNpbmNs
dWRlIDx2ZWN0b3I+CisjaW5jbHVkZSA8RUdML2VnbC5oPgorI2luY2x1ZGUgPEVHTC9lZ2xleHQu
aD4KKworI2luY2x1ZGUgIk9TV2luZG93LmgiCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRl
c3QuaCIKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmlncy5oIgorCit1c2lu
ZyBuYW1lc3BhY2UgYW5nbGU7CisKK25hbWVzcGFjZQoreworCitjb25zdCBFR0xpbnQgY29udGV4
dEF0dHJpYnNbXSA9Cit7CisgICAgRUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04sIDIsCisgICAg
RUdMX05PTkUKK307CisKK30KKworY2xhc3MgRUdMQ29udGV4dENvbXBhdGliaWxpdHlUZXN0IDog
cHVibGljIEFOR0xFVGVzdAoreworICBwdWJsaWM6CisgICAgRUdMQ29udGV4dENvbXBhdGliaWxp
dHlUZXN0KCkKKyAgICAgIDogbURpc3BsYXkoMCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBT
ZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBQRk5FR0xHRVRQTEFURk9STURJU1BMQVlF
WFRQUk9DIGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZORUdM
R0VUUExBVEZPUk1ESVNQTEFZRVhUUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImVnbEdldFBsYXRm
b3JtRGlzcGxheUVYVCIpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUoZWdsR2V0UGxhdGZvcm1EaXNw
bGF5RVhUICE9IG51bGxwdHIpOworCisgICAgICAgIEVHTGludCBkaXNwYXR0cnNbXSA9CisgICAg
ICAgIHsKKyAgICAgICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0FOR0xFLCBHZXRQYXJh
bSgpLmdldFJlbmRlcmVyKCksCisgICAgICAgICAgICBFR0xfTk9ORQorICAgICAgICB9OworICAg
ICAgICBtRGlzcGxheSA9IGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVCgKKyAgICAgICAgICAgIEVH
TF9QTEFURk9STV9BTkdMRV9BTkdMRSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkICo+KEVHTF9ERUZB
VUxUX0RJU1BMQVkpLCBkaXNwYXR0cnMpOworICAgICAgICBBU1NFUlRfVFJVRShtRGlzcGxheSAh
PSBFR0xfTk9fRElTUExBWSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUoZWdsSW5pdGlhbGl6ZSht
RGlzcGxheSwgbnVsbHB0ciwgbnVsbHB0cikgPT0gRUdMX1RSVUUpOworCisgICAgICAgIGludCBu
Q29uZmlncyA9IDA7CisgICAgICAgIEFTU0VSVF9UUlVFKGVnbEdldENvbmZpZ3MobURpc3BsYXks
IG51bGxwdHIsIDAsICZuQ29uZmlncykgPT0gRUdMX1RSVUUpOworICAgICAgICBBU1NFUlRfVFJV
RShuQ29uZmlncyAhPSAwKTsKKworICAgICAgICBpbnQgblJldHVybmVkQ29uZmlncyA9IDA7Cisg
ICAgICAgIG1Db25maWdzLnJlc2l6ZShuQ29uZmlncyk7CisgICAgICAgIEFTU0VSVF9UUlVFKGVn
bEdldENvbmZpZ3MobURpc3BsYXksIG1Db25maWdzLmRhdGEoKSwgbkNvbmZpZ3MsICZuUmV0dXJu
ZWRDb25maWdzKSA9PSBFR0xfVFJVRSk7CisgICAgICAgIEFTU0VSVF9UUlVFKG5Db25maWdzID09
IG5SZXR1cm5lZENvbmZpZ3MpOworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlk
ZQorICAgIHsKKyAgICAgICAgZWdsTWFrZUN1cnJlbnQobURpc3BsYXksIEVHTF9OT19TVVJGQUNF
LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOworICAgICAgICBlZ2xUZXJtaW5hdGUo
bURpc3BsYXkpOworICAgIH07CisKKyAgcHJvdGVjdGVkOgorICAgIGJvb2wgYXJlQ29uZmlnc0Nv
bXBhdGlibGUoRUdMQ29uZmlnIGMxLCBFR0xDb25maWcgYzIsIEVHTGludCBzdXJmYWNlQml0KQor
ICAgIHsKKyAgICAgICAgRUdMaW50IGNvbG9yQnVmZmVyVHlwZTEsIGNvbG9yQnVmZmVyVHlwZTI7
CisgICAgICAgIEVHTGludCByZWQxLCByZWQyLCBncmVlbjEsIGdyZWVuMiwgYmx1ZTEsIGJsdWUy
LCBhbHBoYTEsIGFscGhhMjsKKyAgICAgICAgRUdMaW50IGRlcHRoMSwgZGVwdGgyLCBzdGVuY2ls
MSwgc3RlbmNpbDI7CisgICAgICAgIEVHTGludCBzdXJmYWNlVHlwZTEsIHN1cmZhY2VUeXBlMjsK
KworICAgICAgICBlZ2xHZXRDb25maWdBdHRyaWIobURpc3BsYXksIGMxLCBFR0xfQ09MT1JfQlVG
RkVSX1RZUEUsICZjb2xvckJ1ZmZlclR5cGUxKTsKKyAgICAgICAgZWdsR2V0Q29uZmlnQXR0cmli
KG1EaXNwbGF5LCBjMiwgRUdMX0NPTE9SX0JVRkZFUl9UWVBFLCAmY29sb3JCdWZmZXJUeXBlMik7
CisKKyAgICAgICAgZWdsR2V0Q29uZmlnQXR0cmliKG1EaXNwbGF5LCBjMSwgRUdMX1JFRF9TSVpF
LCAmcmVkMSk7CisgICAgICAgIGVnbEdldENvbmZpZ0F0dHJpYihtRGlzcGxheSwgYzIsIEVHTF9S
RURfU0laRSwgJnJlZDIpOworICAgICAgICBlZ2xHZXRDb25maWdBdHRyaWIobURpc3BsYXksIGMx
LCBFR0xfR1JFRU5fU0laRSwgJmdyZWVuMSk7CisgICAgICAgIGVnbEdldENvbmZpZ0F0dHJpYiht
RGlzcGxheSwgYzIsIEVHTF9HUkVFTl9TSVpFLCAmZ3JlZW4yKTsKKyAgICAgICAgZWdsR2V0Q29u
ZmlnQXR0cmliKG1EaXNwbGF5LCBjMSwgRUdMX0JMVUVfU0laRSwgJmJsdWUxKTsKKyAgICAgICAg
ZWdsR2V0Q29uZmlnQXR0cmliKG1EaXNwbGF5LCBjMiwgRUdMX0JMVUVfU0laRSwgJmJsdWUyKTsK
KyAgICAgICAgZWdsR2V0Q29uZmlnQXR0cmliKG1EaXNwbGF5LCBjMSwgRUdMX0FMUEhBX1NJWkUs
ICZhbHBoYTEpOworICAgICAgICBlZ2xHZXRDb25maWdBdHRyaWIobURpc3BsYXksIGMyLCBFR0xf
QUxQSEFfU0laRSwgJmFscGhhMik7CisKKyAgICAgICAgZWdsR2V0Q29uZmlnQXR0cmliKG1EaXNw
bGF5LCBjMSwgRUdMX0RFUFRIX1NJWkUsICZkZXB0aDEpOworICAgICAgICBlZ2xHZXRDb25maWdB
dHRyaWIobURpc3BsYXksIGMyLCBFR0xfREVQVEhfU0laRSwgJmRlcHRoMik7CisgICAgICAgIGVn
bEdldENvbmZpZ0F0dHJpYihtRGlzcGxheSwgYzEsIEVHTF9TVEVOQ0lMX1NJWkUsICZzdGVuY2ls
MSk7CisgICAgICAgIGVnbEdldENvbmZpZ0F0dHJpYihtRGlzcGxheSwgYzIsIEVHTF9TVEVOQ0lM
X1NJWkUsICZzdGVuY2lsMik7CisKKyAgICAgICAgZWdsR2V0Q29uZmlnQXR0cmliKG1EaXNwbGF5
LCBjMSwgRUdMX1NVUkZBQ0VfVFlQRSwgJnN1cmZhY2VUeXBlMSk7CisgICAgICAgIGVnbEdldENv
bmZpZ0F0dHJpYihtRGlzcGxheSwgYzIsIEVHTF9TVVJGQUNFX1RZUEUsICZzdXJmYWNlVHlwZTIp
OworCisgICAgICAgIHJldHVybiBjb2xvckJ1ZmZlclR5cGUxID09IGNvbG9yQnVmZmVyVHlwZTIg
JiYKKyAgICAgICAgICAgICAgIHJlZDEgPT0gcmVkMiAmJiBncmVlbjEgPT0gZ3JlZW4yICYmIGJs
dWUxID09IGJsdWUyICYmIGFscGhhMSA9PSBhbHBoYTIgJiYKKyAgICAgICAgICAgICAgIGRlcHRo
MSA9PSBkZXB0aDIgJiYgc3RlbmNpbDEgPT0gc3RlbmNpbDIgJiYKKyAgICAgICAgICAgICAgIChz
dXJmYWNlVHlwZTEgJiBzdXJmYWNlQml0KSAhPSAwICYmCisgICAgICAgICAgICAgICAoc3VyZmFj
ZVR5cGUyICYgc3VyZmFjZUJpdCkgIT0gMDsKKyAgICB9CisKKyAgICB2b2lkIHRlc3RXaW5kb3dD
b21wYXRpYmlsaXR5KEVHTENvbmZpZyB3aW5kb3dDb25maWcsIEVHTENvbmZpZyBjb250ZXh0Q29u
ZmlnLCBib29sIGNvbXBhdGlibGUpIGNvbnN0CisgICAgeworICAgICAgICBPU1dpbmRvdyAqb3NX
aW5kb3cgPSBDcmVhdGVPU1dpbmRvdygpOworICAgICAgICBBU1NFUlRfVFJVRShvc1dpbmRvdyAh
PSBudWxscHRyKTsKKyAgICAgICAgb3NXaW5kb3ctPmluaXRpYWxpemUoIkVHTENvbnRleHRDb21w
YXRpYmlsaXR5VGVzdCIsIDUwMCwgNTAwKTsKKyAgICAgICAgb3NXaW5kb3ctPnNldFZpc2libGUo
dHJ1ZSk7CisKKyAgICAgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dCht
RGlzcGxheSwgY29udGV4dENvbmZpZywgRUdMX05PX0NPTlRFWFQsIGNvbnRleHRBdHRyaWJzKTsK
KyAgICAgICAgQVNTRVJUX1RSVUUoY29udGV4dCAhPSBFR0xfTk9fQ09OVEVYVCk7CisKKyAgICAg
ICAgRUdMU3VyZmFjZSB3aW5kb3cgPSBlZ2xDcmVhdGVXaW5kb3dTdXJmYWNlKG1EaXNwbGF5LCB3
aW5kb3dDb25maWcsIG9zV2luZG93LT5nZXROYXRpdmVXaW5kb3coKSwgbnVsbHB0cik7CisgICAg
ICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworCisgICAgICAgIGlmIChjb21wYXRpYmxlKQorICAg
ICAgICB7CisgICAgICAgICAgICB0ZXN0Q2xlYXJTdXJmYWNlKHdpbmRvdywgY29udGV4dCk7Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICB0ZXN0TWFrZUN1
cnJlbnRGYWlscyh3aW5kb3csIGNvbnRleHQpOworICAgICAgICB9CisKKyAgICAgICAgZWdsRGVz
dHJveVN1cmZhY2UobURpc3BsYXksIHdpbmRvdyk7CisgICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VT
UygpOworCisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KG1EaXNwbGF5LCBjb250ZXh0KTsKKyAg
ICAgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CisKKyAgICAgICAgU2FmZURlbGV0ZShvc1dpbmRv
dyk7CisgICAgfQorCisgICAgdm9pZCB0ZXN0UGJ1ZmZlckNvbXBhdGliaWxpdHkoRUdMQ29uZmln
IHBidWZmZXJDb25maWcsIEVHTENvbmZpZyBjb250ZXh0Q29uZmlnLCBib29sIGNvbXBhdGlibGUp
IGNvbnN0CisgICAgeworICAgICAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250
ZXh0KG1EaXNwbGF5LCBjb250ZXh0Q29uZmlnLCBFR0xfTk9fQ09OVEVYVCwgY29udGV4dEF0dHJp
YnMpOworICAgICAgICBBU1NFUlRfVFJVRShjb250ZXh0ICE9IEVHTF9OT19DT05URVhUKTsKKwor
ICAgICAgICBjb25zdCBFR0xpbnQgcEJ1ZmZlckF0dHJpYnNbXSA9CisgICAgICAgIHsKKyAgICAg
ICAgICAgIEVHTF9XSURUSCwgNTAwLAorICAgICAgICAgICAgRUdMX0hFSUdIVCwgNTAwLAorICAg
ICAgICAgICAgRUdMX05PTkUsCisgICAgICAgIH07CisgICAgICAgIEVHTFN1cmZhY2UgcGJ1ZmZl
ciA9IGVnbENyZWF0ZVBidWZmZXJTdXJmYWNlKG1EaXNwbGF5LCBwYnVmZmVyQ29uZmlnLCBwQnVm
ZmVyQXR0cmlicyk7CisgICAgICAgIEFTU0VSVF9UUlVFKHBidWZmZXIgIT0gRUdMX05PX1NVUkZB
Q0UpOworCisgICAgICAgIGlmIChjb21wYXRpYmxlKQorICAgICAgICB7CisgICAgICAgICAgICB0
ZXN0Q2xlYXJTdXJmYWNlKHBidWZmZXIsIGNvbnRleHQpOworICAgICAgICB9CisgICAgICAgIGVs
c2UKKyAgICAgICAgeworICAgICAgICAgICAgdGVzdE1ha2VDdXJyZW50RmFpbHMocGJ1ZmZlciwg
Y29udGV4dCk7CisgICAgICAgIH0KKworICAgICAgICBlZ2xEZXN0cm95U3VyZmFjZShtRGlzcGxh
eSwgcGJ1ZmZlcik7CisgICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworCisgICAgICAgIGVn
bERlc3Ryb3lDb250ZXh0KG1EaXNwbGF5LCBjb250ZXh0KTsKKyAgICAgICAgQVNTRVJUX0VHTF9T
VUNDRVNTKCk7CisgICAgfQorCisgICAgc3RkOjp2ZWN0b3I8RUdMQ29uZmlnPiBtQ29uZmlnczsK
KyAgICBFR0xEaXNwbGF5IG1EaXNwbGF5OworCisgIHByaXZhdGU6CisgICAgdm9pZCB0ZXN0Q2xl
YXJTdXJmYWNlKEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMQ29udGV4dCBjb250ZXh0KSBjb25zdAor
ICAgIHsKKyAgICAgICAgZWdsTWFrZUN1cnJlbnQobURpc3BsYXksIHN1cmZhY2UsIHN1cmZhY2Us
IGNvbnRleHQpOworICAgICAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKworICAgICAgICBnbFZp
ZXdwb3J0KDAsIDAsIDUwMCwgNTAwKTsKKyAgICAgICAgZ2xDbGVhckNvbG9yKDAuMGYsIDAuMGYs
IDEuMGYsIDEuMGYpOworICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAg
ICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICAgICAgRVhQRUNUX1BJWEVMX0VRKDI1MCwg
MjUwLCAwLCAwLCAyNTUsIDI1NSk7CisKKyAgICAgICAgZWdsTWFrZUN1cnJlbnQobURpc3BsYXks
IEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOworICAgICAg
ICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKyAgICB9CisKKyAgICB2b2lkIHRlc3RNYWtlQ3VycmVu
dEZhaWxzKEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMQ29udGV4dCBjb250ZXh0KSBjb25zdAorICAg
IHsKKyAgICAgICAgZWdsTWFrZUN1cnJlbnQobURpc3BsYXksIHN1cmZhY2UsIHN1cmZhY2UsIGNv
bnRleHQpOworICAgICAgICBFWFBFQ1RfRUdMX0VSUk9SKEVHTF9CQURfTUFUQ0gpOworICAgIH0K
K307CisKKy8vIFRoZSB0ZXN0IGlzIHNwbGl0IGluIHNldmVyYWwgc3VidGVzdCBzbyB0aGF0IHNp
bXBsZSBjYXNlcworLy8gYXJlIHRlc3RlZCBzZXBhcmF0ZWx5LiBBbHNvIGVhY2ggc3VyZmFjZSB0
eXBlcyBhcmUgbm90IHRlc3RlZAorLy8gdG9nZXRoZXIuCisKKy8vIEJhc2ljIHRlc3QgY2hlY2tp
bmcgY29udGV4dHMgYW5kIHdpbmRvd3MgY3JlYXRlZCB3aXRoIHRoZQorLy8gc2FtZSBjb25maWcg
Y2FuIHJlbmRlci4KK1RFU1RfUChFR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3QsIFdpbmRvd1Nh
bWVDb25maWcpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtQ29uZmlncy5zaXplKCk7
IGkrKykKKyAgICB7CisgICAgICAgIEVHTENvbmZpZyBjb25maWcgPSBtQ29uZmlnc1tpXTsKKwor
ICAgICAgICBFR0xpbnQgc3VyZmFjZVR5cGU7CisgICAgICAgIGVnbEdldENvbmZpZ0F0dHJpYiht
RGlzcGxheSwgY29uZmlnLCBFR0xfU1VSRkFDRV9UWVBFLCAmc3VyZmFjZVR5cGUpOworICAgICAg
ICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKworICAgICAgICBpZiAoKHN1cmZhY2VUeXBlICYgRUdM
X1dJTkRPV19CSVQpICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHRlc3RXaW5kb3dDb21w
YXRpYmlsaXR5KGNvbmZpZywgY29uZmlnLCB0cnVlKTsKKyAgICAgICAgfQorICAgIH0KK30KKwor
Ly8gQmFzaWMgdGVzdCBjaGVja2luZyBjb250ZXh0cyBhbmQgcGJ1ZmZlcnMgY3JlYXRlZCB3aXRo
IHRoZQorLy8gc2FtZSBjb25maWcgY2FuIHJlbmRlci4KK1RFU1RfUChFR0xDb250ZXh0Q29tcGF0
aWJpbGl0eVRlc3QsIFBidWZmZXJTYW1lQ29uZmlnKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbUNvbmZpZ3Muc2l6ZSgpOyBpKyspCisgICAgeworICAgICAgICBFR0xDb25maWcgY29u
ZmlnID0gbUNvbmZpZ3NbaV07CisKKyAgICAgICAgRUdMaW50IHN1cmZhY2VUeXBlOworICAgICAg
ICBlZ2xHZXRDb25maWdBdHRyaWIobURpc3BsYXksIGNvbmZpZywgRUdMX1NVUkZBQ0VfVFlQRSwg
JnN1cmZhY2VUeXBlKTsKKyAgICAgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CisKKyAgICAgICAg
aWYgKChzdXJmYWNlVHlwZSAmIEVHTF9QQlVGRkVSX0JJVCkgIT0gMCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdGVzdFBidWZmZXJDb21wYXRpYmlsaXR5KGNvbmZpZywgY29uZmlnLCB0cnVlKTsK
KyAgICAgICAgfQorICAgIH0KK30KKworLy8gQ2hlY2sgdGhhdCBhIGNvbnRleHQgcmVuZGVyaW5n
IHRvIGEgd2luZG93IHdpdGggYSBkaWZmZXJlbnQKKy8vIGNvbmZpZyB3b3JrcyBvciBlcnJvcnMg
YWNjb3JkaW5nIHRvIHRoZSBFR0wgY29tcGF0aWJpbGl0eSBydWxlcworVEVTVF9QKEVHTENvbnRl
eHRDb21wYXRpYmlsaXR5VGVzdCwgV2luZG93RGlmZmVyZW50Q29uZmlnKQoreworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbUNvbmZpZ3Muc2l6ZSgpOyBpKyspCisgICAgeworICAgICAgICBF
R0xDb25maWcgY29uZmlnMSA9IG1Db25maWdzW2ldOworICAgICAgICBFR0xpbnQgc3VyZmFjZVR5
cGU7CisgICAgICAgIGVnbEdldENvbmZpZ0F0dHJpYihtRGlzcGxheSwgY29uZmlnMSwgRUdMX1NV
UkZBQ0VfVFlQRSwgJnN1cmZhY2VUeXBlKTsKKyAgICAgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7
CisKKyAgICAgICAgaWYgKChzdXJmYWNlVHlwZSAmIEVHTF9XSU5ET1dfQklUKSA9PSAwKQorICAg
ICAgICB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAo
c2l6ZV90IGogPSAwOyBqIDwgbUNvbmZpZ3Muc2l6ZSgpOyBqKyspCisgICAgICAgIHsKKyAgICAg
ICAgICAgIEVHTENvbmZpZyBjb25maWcyID0gbUNvbmZpZ3Nbal07CisgICAgICAgICAgICB0ZXN0
V2luZG93Q29tcGF0aWJpbGl0eShjb25maWcxLCBjb25maWcyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXJlQ29uZmlnc0NvbXBhdGlibGUoY29uZmlnMSwgY29uZmlnMiwg
RUdMX1dJTkRPV19CSVQpKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gQ2hlY2sgdGhhdCBh
IGNvbnRleHQgcmVuZGVyaW5nIHRvIGEgcGJ1ZmZlciB3aXRoIGEgZGlmZmVyZW50CisvLyBjb25m
aWcgd29ya3Mgb3IgZXJyb3JzIGFjY29yZGluZyB0byB0aGUgRUdMIGNvbXBhdGliaWxpdHkgcnVs
ZXMKK1RFU1RfUChFR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3QsIFBidWZmZXJEaWZmZXJlbnRD
b25maWcpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtQ29uZmlncy5zaXplKCk7IGkr
KykKKyAgICB7CisgICAgICAgIEVHTENvbmZpZyBjb25maWcxID0gbUNvbmZpZ3NbaV07CisgICAg
ICAgIEVHTGludCBzdXJmYWNlVHlwZTsKKyAgICAgICAgZWdsR2V0Q29uZmlnQXR0cmliKG1EaXNw
bGF5LCBjb25maWcxLCBFR0xfU1VSRkFDRV9UWVBFLCAmc3VyZmFjZVR5cGUpOworICAgICAgICBB
U1NFUlRfRUdMX1NVQ0NFU1MoKTsKKworICAgICAgICBpZiAoKHN1cmZhY2VUeXBlICYgRUdMX1BC
VUZGRVJfQklUKSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgbUNvbmZpZ3Muc2l6ZSgpOyBq
KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIEVHTENvbmZpZyBjb25maWcyID0gbUNvbmZpZ3Nb
al07CisgICAgICAgICAgICB0ZXN0UGJ1ZmZlckNvbXBhdGliaWxpdHkoY29uZmlnMSwgY29uZmln
MiwgYXJlQ29uZmlnc0NvbXBhdGlibGUoY29uZmlnMSwgY29uZmlnMiwgRUdMX1BCVUZGRVJfQklU
KSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoRUdMQ29u
dGV4dENvbXBhdGliaWxpdHlUZXN0LCBFUzJfRDNEOSgpLCBFUzJfRDNEMTEoKSwgRVMyX09QRU5H
TCgpKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMv
RUdMQ29udGV4dFNoYXJpbmdUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTENvbnRleHRTaGFyaW5nVGVzdC5jcHAJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0
cy9FR0xDb250ZXh0U2hhcmluZ1Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODcg
QEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisvLworLy8gRUdMQ29udGV4dFNoYXJpbmdUZXN0LmNwcDoKKy8vICAgVGVz
dHMgcmVsYXRpbmcgdG8gc2hhcmVkIENvbnRleHRzLgorCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KKworI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKyNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisKKyNp
bmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorI2luY2x1ZGUgInRlc3RfdXRpbHMvYW5n
bGVfdGVzdF9jb25maWdzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNl
Cit7CisKK0VHTEJvb2xlYW4gU2FmZURlc3Ryb3lDb250ZXh0KEVHTERpc3BsYXkgZGlzcGxheSwg
RUdMQ29udGV4dCAmY29udGV4dCkKK3sKKyAgICBFR0xCb29sZWFuIHJlc3VsdCA9IEVHTF9UUlVF
OworICAgIGlmIChjb250ZXh0ICE9IEVHTF9OT19DT05URVhUKQorICAgIHsKKyAgICAgICAgcmVz
dWx0ICA9IGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOworICAgICAgICBjb250
ZXh0ID0gRUdMX05PX0NPTlRFWFQ7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Ns
YXNzIEVHTENvbnRleHRTaGFyaW5nVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHVibGlj
OgorICAgIEVHTENvbnRleHRTaGFyaW5nVGVzdCgpIDogbUNvbnRleHRze0VHTF9OT19DT05URVhU
LCBFR0xfTk9fQ09OVEVYVH0sIG1UZXh0dXJlKDApIHt9CisKKyAgICB2b2lkIFRlYXJEb3duKCkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0dXJlKTsK
KworICAgICAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBnZXRFR0xXaW5kb3coKS0+Z2V0RGlzcGxh
eSgpOworCisgICAgICAgIGlmIChkaXNwbGF5ICE9IEVHTF9OT19ESVNQTEFZKQorICAgICAgICB7
CisgICAgICAgICAgICBmb3IgKGF1dG8gJmNvbnRleHQgOiBtQ29udGV4dHMpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgU2FmZURlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93
bigpOworICAgIH0KKworICAgIEVHTENvbnRleHQgbUNvbnRleHRzWzJdOworICAgIEdMdWludCBt
VGV4dHVyZTsKK307CisKKy8vIFRlc3RzIHRoYXQgY3JlYXRpbmcgcmVzb3VyY2VzIHdvcmtzIGFm
dGVyIGZyZWVpbmcgdGhlIHNoYXJlIGNvbnRleHQuCitURVNUX1AoRUdMQ29udGV4dFNoYXJpbmdU
ZXN0LCBCaW5kVGV4dHVyZUFmdGVyU2hhcmVDb250ZXh0RnJlZSkKK3sKKyAgICBFR0xEaXNwbGF5
IGRpc3BsYXkgPSBnZXRFR0xXaW5kb3coKS0+Z2V0RGlzcGxheSgpOworICAgIEVHTENvbmZpZyBj
b25maWcgICA9IGdldEVHTFdpbmRvdygpLT5nZXRDb25maWcoKTsKKyAgICBFR0xTdXJmYWNlIHN1
cmZhY2UgPSBnZXRFR0xXaW5kb3coKS0+Z2V0U3VyZmFjZSgpOworCisgICAgY29uc3QgRUdMaW50
IGNvbnRleHRBdHRyaWJzW10gPSB7RUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RUdMV2luZG93KCktPmdldENsaWVudE1h
am9yVmVyc2lvbigpLCBFR0xfTk9ORX07CisKKyAgICBtQ29udGV4dHNbMF0gPSBlZ2xDcmVhdGVD
b250ZXh0KGRpc3BsYXksIGNvbmZpZywgbnVsbHB0ciwgY29udGV4dEF0dHJpYnMpOworICAgIEFT
U0VSVF9FR0xfU1VDQ0VTUygpOworICAgIEFTU0VSVF9UUlVFKG1Db250ZXh0c1swXSAhPSBFR0xf
Tk9fQ09OVEVYVCk7CisgICAgbUNvbnRleHRzWzFdID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5
LCBjb25maWcsIG1Db250ZXh0c1sxXSwgY29udGV4dEF0dHJpYnMpOworICAgIEFTU0VSVF9FR0xf
U1VDQ0VTUygpOworICAgIEFTU0VSVF9UUlVFKG1Db250ZXh0c1sxXSAhPSBFR0xfTk9fQ09OVEVY
VCk7CisKKyAgICBBU1NFUlRfRUdMX1RSVUUoU2FmZURlc3Ryb3lDb250ZXh0KGRpc3BsYXksIG1D
b250ZXh0c1swXSkpOworICAgIEFTU0VSVF9FR0xfVFJVRShlZ2xNYWtlQ3VycmVudChkaXNwbGF5
LCBzdXJmYWNlLCBzdXJmYWNlLCBtQ29udGV4dHNbMV0pKTsKKyAgICBBU1NFUlRfRUdMX1NVQ0NF
U1MoKTsKKworICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1UZXh0dXJlKTsKKyAgICBnbEJpbmRUZXh0
dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
K30KKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCitBTkdMRV9JTlNUQU5USUFURV9URVNU
KEVHTENvbnRleHRTaGFyaW5nVGVzdCwgRVMyX0QzRDkoKSwgRVMyX0QzRDExKCksIEVTMl9PUEVO
R0woKSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3Rz
L0VHTERldmljZVRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMRGV2aWNlVGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xEZXZpY2VUZXN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU4NyBAQAorLy8KKy8vIENvcHlyaWdodCAy
MDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2lmbmRl
ZiBBTkdMRV9FTkFCTEVfRDNEOQorI2RlZmluZSBBTkdMRV9FTkFCTEVfRDNEOQorI2VuZGlmCisK
KyNpZm5kZWYgQU5HTEVfRU5BQkxFX0QzRDExCisjZGVmaW5lIEFOR0xFX0VOQUJMRV9EM0QxMQor
I2VuZGlmCisKKyNpbmNsdWRlIDxkM2QxMS5oPgorCisjaW5jbHVkZSAiY29tX3V0aWxzLmgiCisj
aW5jbHVkZSAiT1NXaW5kb3cuaCIKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgor
Cit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKK2NsYXNzIEVHTERldmljZUNyZWF0aW9uVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBFR0xEZXZpY2VDcmVh
dGlvblRlc3QoKQorICAgICAgICA6IG1EM0QxMUF2YWlsYWJsZShmYWxzZSksCisgICAgICAgICAg
bUQzRDExTW9kdWxlKG51bGxwdHIpLAorICAgICAgICAgIG1EM0QxMUNyZWF0ZURldmljZShudWxs
cHRyKSwKKyAgICAgICAgICBtRGV2aWNlKG51bGxwdHIpLAorICAgICAgICAgIG1EZXZpY2VDb250
ZXh0KG51bGxwdHIpLAorICAgICAgICAgIG1EZXZpY2VDcmVhdGlvbkQzRDExRXh0QXZhaWxhYmxl
KGZhbHNlKSwKKyAgICAgICAgICBtT1NXaW5kb3cobnVsbHB0ciksCisgICAgICAgICAgbURpc3Bs
YXkoRUdMX05PX0RJU1BMQVkpLAorICAgICAgICAgIG1TdXJmYWNlKEVHTF9OT19TVVJGQUNFKSwK
KyAgICAgICAgICBtQ29udGV4dChFR0xfTk9fQ09OVEVYVCksCisgICAgICAgICAgbUNvbmZpZygw
KQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIG1EM0QxMU1vZHVsZSA9IExvYWRMaWJyYXJ5KFRFWFQoImQzZDExLmRsbCIpKTsKKyAgICAg
ICAgaWYgKG1EM0QxMU1vZHVsZSA9PSBudWxscHRyKQorICAgICAgICB7CisgICAgICAgICAgICBz
dGQ6OmNvdXQgPDwgIlVuYWJsZSB0byBMb2FkTGlicmFyeSBEM0QxMSIgPDwgc3RkOjplbmRsOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbUQzRDExQ3JlYXRlRGV2
aWNlID0gcmVpbnRlcnByZXRfY2FzdDxQRk5fRDNEMTFfQ1JFQVRFX0RFVklDRT4oCisgICAgICAg
ICAgICBHZXRQcm9jQWRkcmVzcyhtRDNEMTFNb2R1bGUsICJEM0QxMUNyZWF0ZURldmljZSIpKTsK
KyAgICAgICAgaWYgKG1EM0QxMUNyZWF0ZURldmljZSA9PSBudWxscHRyKQorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIkNvdWxkIG5vdCByZXRyaWV2ZSBEM0QxMUNyZWF0ZURl
dmljZSBmcm9tIGQzZDExLmRsbCIgPDwgc3RkOjplbmRsOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgbUQzRDExQXZhaWxhYmxlID0gdHJ1ZTsKKworICAgICAgICBj
b25zdCBjaGFyICpleHRlbnNpb25TdHJpbmcgPQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29u
c3QgY2hhciAqPihlZ2xRdWVyeVN0cmluZyhFR0xfTk9fRElTUExBWSwgRUdMX0VYVEVOU0lPTlMp
KTsKKyAgICAgICAgaWYgKHN0cnN0cihleHRlbnNpb25TdHJpbmcsICJFR0xfQU5HTEVfZGV2aWNl
X2NyZWF0aW9uIikpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChzdHJzdHIoZXh0ZW5zaW9u
U3RyaW5nLCAiRUdMX0FOR0xFX2RldmljZV9jcmVhdGlvbl9kM2QxMSIpKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIG1EZXZpY2VDcmVhdGlvbkQzRDExRXh0QXZhaWxhYmxlID0gdHJ1
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgVGVhckRvd24o
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgU2FmZVJlbGVhc2UobURldmljZSk7CisgICAgICAg
IFNhZmVSZWxlYXNlKG1EZXZpY2VDb250ZXh0KTsKKworICAgICAgICBTYWZlRGVsZXRlKG1PU1dp
bmRvdyk7CisKKyAgICAgICAgaWYgKG1TdXJmYWNlICE9IEVHTF9OT19TVVJGQUNFKQorICAgICAg
ICB7CisgICAgICAgICAgICBlZ2xEZXN0cm95U3VyZmFjZShtRGlzcGxheSwgbVN1cmZhY2UpOwor
ICAgICAgICAgICAgbVN1cmZhY2UgPSBFR0xfTk9fU1VSRkFDRTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChtQ29udGV4dCAhPSBFR0xfTk9fQ09OVEVYVCkKKyAgICAgICAgeworICAgICAgICAg
ICAgZWdsRGVzdHJveUNvbnRleHQobURpc3BsYXksIG1Db250ZXh0KTsKKyAgICAgICAgICAgIG1D
b250ZXh0ID0gRUdMX05PX0NPTlRFWFQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAobURpc3Bs
YXkgIT0gRUdMX05PX0RJU1BMQVkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVnbFRlcm1pbmF0
ZShtRGlzcGxheSk7CisgICAgICAgICAgICBtRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOworICAg
ICAgICB9CisgICAgfQorCisgICAgdm9pZCBDcmVhdGVEM0QxMURldmljZSgpCisgICAgeworICAg
ICAgICBBU1NFUlRfVFJVRShtRDNEMTFBdmFpbGFibGUpOworICAgICAgICBBU1NFUlRfRVEobnVs
bHB0ciwgbURldmljZSk7ICAvLyBUaGUgZGV2aWNlIHNob3VsZG4ndCBiZSBjcmVhdGVkIHR3aWNl
CisKKyAgICAgICAgSFJFU1VMVCBociA9CisgICAgICAgICAgICBtRDNEMTFDcmVhdGVEZXZpY2Uo
bnVsbHB0ciwgRDNEX0RSSVZFUl9UWVBFX0hBUkRXQVJFLCAwLCAwLCBudWxscHRyLCAwLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDExX1NES19WRVJTSU9OLCAmbURldmljZSwg
Jm1GZWF0dXJlTGV2ZWwsICZtRGV2aWNlQ29udGV4dCk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUo
U1VDQ0VFREVEKGhyKSk7CisgICAgICAgIEFTU0VSVF9HRShtRmVhdHVyZUxldmVsLCBEM0RfRkVB
VFVSRV9MRVZFTF85XzMpOworICAgIH0KKworICAgIHZvaWQgQ3JlYXRlRDNEMTFGTDlfM0Rldmlj
ZSgpCisgICAgeworICAgICAgICBBU1NFUlRfVFJVRShtRDNEMTFBdmFpbGFibGUpOworICAgICAg
ICBBU1NFUlRfRVEobnVsbHB0ciwgbURldmljZSk7CisKKyAgICAgICAgRDNEX0ZFQVRVUkVfTEVW
RUwgZmw5MyA9IEQzRF9GRUFUVVJFX0xFVkVMXzlfMzsKKworICAgICAgICBIUkVTVUxUIGhyID0K
KyAgICAgICAgICAgIG1EM0QxMUNyZWF0ZURldmljZShudWxscHRyLCBEM0RfRFJJVkVSX1RZUEVf
SEFSRFdBUkUsIDAsIDAsICZmbDkzLCAxLCBEM0QxMV9TREtfVkVSU0lPTiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmbURldmljZSwgJm1GZWF0dXJlTGV2ZWwsICZtRGV2aWNlQ29u
dGV4dCk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUoU1VDQ0VFREVEKGhyKSk7CisgICAgfQorCisg
ICAgdm9pZCBDcmVhdGVXaW5kb3dTdXJmYWNlKCkKKyAgICB7CisgICAgICAgIEVHTGludCBtYWpv
clZlcnNpb24sIG1pbm9yVmVyc2lvbjsKKyAgICAgICAgQVNTRVJUX0VHTF9UUlVFKGVnbEluaXRp
YWxpemUobURpc3BsYXksICZtYWpvclZlcnNpb24sICZtaW5vclZlcnNpb24pKTsKKworICAgICAg
ICBlZ2xCaW5kQVBJKEVHTF9PUEVOR0xfRVNfQVBJKTsKKyAgICAgICAgQVNTRVJUX0VHTF9TVUND
RVNTKCk7CisKKyAgICAgICAgLy8gQ2hvb3NlIGEgY29uZmlnCisgICAgICAgIGNvbnN0IEVHTGlu
dCBjb25maWdBdHRyaWJ1dGVzW10gPSB7RUdMX05PTkV9OworICAgICAgICBFR0xpbnQgY29uZmln
Q291bnQgPSAwOworICAgICAgICBBU1NFUlRfRUdMX1RSVUUoZWdsQ2hvb3NlQ29uZmlnKG1EaXNw
bGF5LCBjb25maWdBdHRyaWJ1dGVzLCAmbUNvbmZpZywgMSwgJmNvbmZpZ0NvdW50KSk7CisKKyAg
ICAgICAgLy8gQ3JlYXRlIGFuIE9TIFdpbmRvdworICAgICAgICBtT1NXaW5kb3cgPSBDcmVhdGVP
U1dpbmRvdygpOworICAgICAgICBtT1NXaW5kb3ctPmluaXRpYWxpemUoIkVHTFN1cmZhY2VUZXN0
IiwgNjQsIDY0KTsKKworICAgICAgICAvLyBDcmVhdGUgd2luZG93IHN1cmZhY2UKKyAgICAgICAg
bVN1cmZhY2UgPSBlZ2xDcmVhdGVXaW5kb3dTdXJmYWNlKG1EaXNwbGF5LCBtQ29uZmlnLCBtT1NX
aW5kb3ctPmdldE5hdGl2ZVdpbmRvdygpLCBudWxscHRyKTsKKyAgICAgICAgQVNTRVJUX0VHTF9T
VUNDRVNTKCk7CisKKyAgICAgICAgLy8gQ3JlYXRlIEVHTCBjb250ZXh0CisgICAgICAgIEVHTGlu
dCBjb250ZXh0QXR0aWJ1dGVzW10gPSB7RUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04sIDIsIEVH
TF9OT05FfTsKKyAgICAgICAgbUNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KG1EaXNwbGF5LCBt
Q29uZmlnLCBudWxscHRyLCBjb250ZXh0QXR0aWJ1dGVzKTsKKyAgICAgICAgQVNTRVJUX0VHTF9T
VUNDRVNTKCk7CisKKyAgICAgICAgLy8gTWFrZSB0aGUgc3VyZmFjZSBjdXJyZW50CisgICAgICAg
IGVnbE1ha2VDdXJyZW50KG1EaXNwbGF5LCBtU3VyZmFjZSwgbVN1cmZhY2UsIG1Db250ZXh0KTsK
KyAgICAgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CisgICAgfQorCisgICAgLy8gVGhpcyB0cmln
Z2VycyBhIEQzRCBkZXZpY2UgbG9zdCBvbiBjdXJyZW50IFdpbmRvd3Mgc3lzdGVtcworICAgIC8v
IFRoaXMgYmVoYXZpb3IgY291bGQgcG90ZW50aWFsbHkgY2hhbmdlIGluIHRoZSBmdXR1cmUKKyAg
ICB2b2lkIHRyaWdnZXI5XzNEZXZpY2VMb3N0KCkKKyAgICB7CisgICAgICAgIElEM0QxMUJ1ZmZl
ciAqZ3NCdWZmZXIgICAgICAgPSBudWxscHRyOworICAgICAgICBEM0QxMV9CVUZGRVJfREVTQyBi
dWZmZXJEZXNjID0gezB9OworICAgICAgICBidWZmZXJEZXNjLkJ5dGVXaWR0aCAgICAgICAgID0g
NjQ7CisgICAgICAgIGJ1ZmZlckRlc2MuVXNhZ2UgICAgICAgICAgICAgPSBEM0QxMV9VU0FHRV9E
RUZBVUxUOworICAgICAgICBidWZmZXJEZXNjLkJpbmRGbGFncyAgICAgICAgID0gRDNEMTFfQklO
RF9DT05TVEFOVF9CVUZGRVI7CisKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5D
cmVhdGVCdWZmZXIoJmJ1ZmZlckRlc2MsIG51bGxwdHIsICZnc0J1ZmZlcik7CisgICAgICAgIEFT
U0VSVF9UUlVFKFNVQ0NFRURFRChyZXN1bHQpKTsKKworICAgICAgICBtRGV2aWNlQ29udGV4dC0+
R1NTZXRDb25zdGFudEJ1ZmZlcnMoMCwgMSwgJmdzQnVmZmVyKTsKKyAgICAgICAgU2FmZVJlbGVh
c2UoZ3NCdWZmZXIpOworICAgICAgICBnc0J1ZmZlciA9IG51bGxwdHI7CisKKyAgICAgICAgcmVz
dWx0ID0gbURldmljZS0+R2V0RGV2aWNlUmVtb3ZlZFJlYXNvbigpOworICAgICAgICBBU1NFUlRf
VFJVRShGQUlMRUQocmVzdWx0KSk7CisgICAgfQorCisgICAgYm9vbCBtRDNEMTFBdmFpbGFibGU7
CisgICAgSE1PRFVMRSBtRDNEMTFNb2R1bGU7CisgICAgUEZOX0QzRDExX0NSRUFURV9ERVZJQ0Ug
bUQzRDExQ3JlYXRlRGV2aWNlOworCisgICAgSUQzRDExRGV2aWNlICptRGV2aWNlOworICAgIElE
M0QxMURldmljZUNvbnRleHQgKm1EZXZpY2VDb250ZXh0OworICAgIEQzRF9GRUFUVVJFX0xFVkVM
IG1GZWF0dXJlTGV2ZWw7CisKKyAgICBib29sIG1EZXZpY2VDcmVhdGlvbkQzRDExRXh0QXZhaWxh
YmxlOworCisgICAgT1NXaW5kb3cgKm1PU1dpbmRvdzsKKworICAgIEVHTERpc3BsYXkgbURpc3Bs
YXk7CisgICAgRUdMU3VyZmFjZSBtU3VyZmFjZTsKKyAgICBFR0xDb250ZXh0IG1Db250ZXh0Owor
ICAgIEVHTENvbmZpZyBtQ29uZmlnOworfTsKKworLy8gVGVzdCB0aGF0IGNyZWF0aW5nIGEgRUdM
RGV2aWNlRVhUIGZyb20gRDNEMTEgZGV2aWNlIHdvcmtzLCBhbmQgaXQgY2FuIGJlIHF1ZXJpZWQg
dG8gcmV0cmlldmUKKy8vIEQzRDExIGRldmljZQorVEVTVF9GKEVHTERldmljZUNyZWF0aW9uVGVz
dCwgQmFzaWNEM0QxMURldmljZSkKK3sKKyAgICBpZiAoIW1EZXZpY2VDcmVhdGlvbkQzRDExRXh0
QXZhaWxhYmxlIHx8ICFtRDNEMTFBdmFpbGFibGUpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQg
PDwgIkVHTERldmljZSBjcmVhdGlvbiBhbmQvb3IgRDNEMTEgbm90IGF2YWlsYWJsZSwgc2tpcHBp
bmcgdGVzdCIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ3Jl
YXRlRDNEMTFEZXZpY2UoKTsKKworICAgIEVHTERldmljZUVYVCBlZ2xEZXZpY2UgPQorICAgICAg
ICBlZ2xDcmVhdGVEZXZpY2VBTkdMRShFR0xfRDNEMTFfREVWSUNFX0FOR0xFLCByZWludGVycHJl
dF9jYXN0PHZvaWQgKj4obURldmljZSksIG51bGxwdHIpOworICAgIEFTU0VSVF9ORShFR0xfTk9f
REVWSUNFX0VYVCwgZWdsRGV2aWNlKTsKKyAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKworICAg
IEVHTEF0dHJpYiBkZXZpY2VBdHRyaWI7CisgICAgZWdsUXVlcnlEZXZpY2VBdHRyaWJFWFQoZWds
RGV2aWNlLCBFR0xfRDNEMTFfREVWSUNFX0FOR0xFLCAmZGV2aWNlQXR0cmliKTsKKyAgICBBU1NF
UlRfRUdMX1NVQ0NFU1MoKTsKKworICAgIElEM0QxMURldmljZSAqcXVlcmllZERldmljZSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8SUQzRDExRGV2aWNlICo+KGRldmljZUF0dHJpYik7CisgICAgQVNTRVJU
X0VRKG1GZWF0dXJlTGV2ZWwsIHF1ZXJpZWREZXZpY2UtPkdldEZlYXR1cmVMZXZlbCgpKTsKKwor
ICAgIGVnbFJlbGVhc2VEZXZpY2VBTkdMRShlZ2xEZXZpY2UpOworfQorCisvLyBUZXN0IHRoYXQg
Y3JlYXRpbmcgYSBFR0xEZXZpY2VFWFQgZnJvbSBEM0QxMSBkZXZpY2Ugd29ya3MsIGFuZCBpdCBj
YW4gYmUgcXVlcmllZCB0byByZXRyaWV2ZQorLy8gRDNEMTEgZGV2aWNlCitURVNUX0YoRUdMRGV2
aWNlQ3JlYXRpb25UZXN0LCBCYXNpY0QzRDExRGV2aWNlVmlhRnVuY1BvaW50ZXIpCit7CisgICAg
aWYgKCFtRGV2aWNlQ3JlYXRpb25EM0QxMUV4dEF2YWlsYWJsZSB8fCAhbUQzRDExQXZhaWxhYmxl
KQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJFR0xEZXZpY2UgY3JlYXRpb24gYW5kL29y
IEQzRDExIG5vdCBhdmFpbGFibGUsIHNraXBwaW5nIHRlc3QiIDw8IHN0ZDo6ZW5kbDsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIENyZWF0ZUQzRDExRGV2aWNlKCk7CisKKyAgICBQRk5F
R0xDUkVBVEVERVZJQ0VBTkdMRVBST0MgY3JlYXRlRGV2aWNlQU5HTEUgPQorICAgICAgICAoUEZO
RUdMQ1JFQVRFREVWSUNFQU5HTEVQUk9DKWVnbEdldFByb2NBZGRyZXNzKCJlZ2xDcmVhdGVEZXZp
Y2VBTkdMRSIpOworICAgIFBGTkVHTFJFTEVBU0VERVZJQ0VBTkdMRVBST0MgcmVsZWFzZURldmlj
ZUFOR0xFID0KKyAgICAgICAgKFBGTkVHTFJFTEVBU0VERVZJQ0VBTkdMRVBST0MpZWdsR2V0UHJv
Y0FkZHJlc3MoImVnbFJlbGVhc2VEZXZpY2VBTkdMRSIpOworCisgICAgRUdMRGV2aWNlRVhUIGVn
bERldmljZSA9CisgICAgICAgIGNyZWF0ZURldmljZUFOR0xFKEVHTF9EM0QxMV9ERVZJQ0VfQU5H
TEUsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqPihtRGV2aWNlKSwgbnVsbHB0cik7CisgICAgQVNT
RVJUX05FKEVHTF9OT19ERVZJQ0VfRVhULCBlZ2xEZXZpY2UpOworICAgIEFTU0VSVF9FR0xfU1VD
Q0VTUygpOworCisgICAgRUdMQXR0cmliIGRldmljZUF0dHJpYjsKKyAgICBlZ2xRdWVyeURldmlj
ZUF0dHJpYkVYVChlZ2xEZXZpY2UsIEVHTF9EM0QxMV9ERVZJQ0VfQU5HTEUsICZkZXZpY2VBdHRy
aWIpOworICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworCisgICAgSUQzRDExRGV2aWNlICpxdWVy
aWVkRGV2aWNlID0gcmVpbnRlcnByZXRfY2FzdDxJRDNEMTFEZXZpY2UgKj4oZGV2aWNlQXR0cmli
KTsKKyAgICBBU1NFUlRfRVEobUZlYXR1cmVMZXZlbCwgcXVlcmllZERldmljZS0+R2V0RmVhdHVy
ZUxldmVsKCkpOworCisgICAgcmVsZWFzZURldmljZUFOR0xFKGVnbERldmljZSk7Cit9CisKKy8v
IFRlc3QgdGhhdCBjcmVhdGluZyBhIEVHTERldmljZUVYVCBmcm9tIEQzRDExIGRldmljZSB3b3Jr
cywgYW5kIGNhbiBiZSB1c2VkIGZvciByZW5kZXJpbmcKK1RFU1RfRihFR0xEZXZpY2VDcmVhdGlv
blRlc3QsIFJlbmRlcmluZ1VzaW5nRDNEMTFEZXZpY2UpCit7CisgICAgaWYgKCFtRDNEMTFBdmFp
bGFibGUpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIkQzRDExIG5vdCBhdmFpbGFibGUs
IHNraXBwaW5nIHRlc3QiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIENyZWF0ZUQzRDExRGV2aWNlKCk7CisKKyAgICBFR0xEZXZpY2VFWFQgZWdsRGV2aWNlID0K
KyAgICAgICAgZWdsQ3JlYXRlRGV2aWNlQU5HTEUoRUdMX0QzRDExX0RFVklDRV9BTkdMRSwgcmVp
bnRlcnByZXRfY2FzdDx2b2lkICo+KG1EZXZpY2UpLCBudWxscHRyKTsKKyAgICBBU1NFUlRfRUdM
X1NVQ0NFU1MoKTsKKworICAgIC8vIENyZWF0ZSBhbiBFR0xEaXNwbGF5IHVzaW5nIHRoZSBFR0xE
ZXZpY2UKKyAgICBtRGlzcGxheSA9IGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVChFR0xfUExBVEZP
Uk1fREVWSUNFX0VYVCwgZWdsRGV2aWNlLCBudWxscHRyKTsKKyAgICBBU1NFUlRfTkUoRUdMX05P
X0RJU1BMQVksIG1EaXNwbGF5KTsKKworICAgIC8vIENyZWF0ZSBhIHN1cmZhY2UgdXNpbmcgdGhl
IGRpc3BsYXkKKyAgICBDcmVhdGVXaW5kb3dTdXJmYWNlKCk7CisKKyAgICAvLyBQZXJmb3JtIHNv
bWUgdmVyeSBiYXNpYyByZW5kZXJpbmcKKyAgICBnbENsZWFyQ29sb3IoMS4wZiwgMC4wZiwgMS4w
ZiwgMS4wZik7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBFWFBFQ1Rf
UElYRUxfRVEoMzIsIDMyLCAyNTUsIDAsIDI1NSwgMjU1KTsKKworICAgIC8vIE5vdGUgdGhhdCB3
ZSBtdXN0IGNhbGwgVGVhckRvd24oKSBiZWZvcmUgd2UgcmVsZWFzZSB0aGUgRUdMIGRldmljZSwg
c2luY2UgdGhlIGRpc3BsYXkKKyAgICAvLyBkZXBlbmRzIG9uIHRoZSBkZXZpY2UKKyAgICBUZWFy
RG93bigpOworCisgICAgZWdsUmVsZWFzZURldmljZUFOR0xFKGVnbERldmljZSk7Cit9CisKKy8v
IFRlc3QgdGhhdCBBTkdMRSBkb2Vzbid0IHRyeSB0byByZWNyZWF0ZSBhIEQzRDExIGRldmljZSBp
ZiB0aGUgaW5wdXR0ZWQgb25lIGlzIGxvc3QKK1RFU1RfRihFR0xEZXZpY2VDcmVhdGlvblRlc3Qs
IEQzRDExRGV2aWNlUmVjb3ZlcnkpCit7CisgICAgaWYgKCFtRDNEMTFBdmFpbGFibGUpCisgICAg
eworICAgICAgICBzdGQ6OmNvdXQgPDwgIkQzRDExIG5vdCBhdmFpbGFibGUsIHNraXBwaW5nIHRl
c3QiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZvcmNl
IEZlYXR1cmUgTGV2ZWwgOV8zIHNvIHdlIGNhbiBlYXNpbHkgdHJpZ2dlciBhIGRldmljZSBsb3N0
IGxhdGVyCisgICAgQ3JlYXRlRDNEMTFGTDlfM0RldmljZSgpOworCisgICAgRUdMRGV2aWNlRVhU
IGVnbERldmljZSA9CisgICAgICAgIGVnbENyZWF0ZURldmljZUFOR0xFKEVHTF9EM0QxMV9ERVZJ
Q0VfQU5HTEUsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqPihtRGV2aWNlKSwgbnVsbHB0cik7Cisg
ICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CisKKyAgICAvLyBDcmVhdGUgYW4gRUdMRGlzcGxheSB1
c2luZyB0aGUgRUdMRGV2aWNlCisgICAgbURpc3BsYXkgPSBlZ2xHZXRQbGF0Zm9ybURpc3BsYXlF
WFQoRUdMX1BMQVRGT1JNX0RFVklDRV9FWFQsIGVnbERldmljZSwgbnVsbHB0cik7CisgICAgQVNT
RVJUX1RSVUUobURpc3BsYXkgIT0gRUdMX05PX0RJU1BMQVkpOworCisgICAgLy8gQ3JlYXRlIGEg
c3VyZmFjZSB1c2luZyB0aGUgZGlzcGxheQorICAgIENyZWF0ZVdpbmRvd1N1cmZhY2UoKTsKKwor
ICAgIC8vIFBlcmZvcm0gc29tZSB2ZXJ5IGJhc2ljIHJlbmRlcmluZworICAgIGdsQ2xlYXJDb2xv
cigxLjBmLCAwLjBmLCAxLjBmLCAxLjBmKTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9C
SVQpOworICAgIEVYUEVDVF9QSVhFTF9FUSgzMiwgMzIsIDI1NSwgMCwgMjU1LCAyNTUpOworICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gQU5HTEUncyBTd2FwQ2hhaW4xMTo6aW5p
dFBhc3NUaHJvdWdoUmVzb3VyY2VzIGRvZXNuJ3QgaGFuZGxlIGRldmljZSBsb3N0IGJlZm9yZQor
ICAgIC8vIGVnbFN3YXBCdWZmZXJzLCBzbyB3ZSBtdXN0IGNhbGwgZWdsU3dhcEJ1ZmZlcnMgYmVm
b3JlIHdlIGxvc2UgdGhlIGRldmljZS4KKyAgICBBU1NFUlRfRUdMX1RSVUUoZWdsU3dhcEJ1ZmZl
cnMobURpc3BsYXksIG1TdXJmYWNlKSk7CisKKyAgICAvLyBUcmlnZ2VyIGEgbG9zdCBkZXZpY2UK
KyAgICB0cmlnZ2VyOV8zRGV2aWNlTG9zdCgpOworCisgICAgLy8gRGVzdHJveSB0aGUgb2xkIEVH
TCBXaW5kb3cgU3VyZmFjZQorICAgIGlmIChtU3VyZmFjZSAhPSBFR0xfTk9fU1VSRkFDRSkKKyAg
ICB7CisgICAgICAgIGVnbERlc3Ryb3lTdXJmYWNlKG1EaXNwbGF5LCBtU3VyZmFjZSk7CisgICAg
ICAgIG1TdXJmYWNlID0gRUdMX05PX1NVUkZBQ0U7CisgICAgfQorCisgICAgLy8gVHJ5IHRvIGNy
ZWF0ZSBhIG5ldyB3aW5kb3cgc3VyZmFjZS4gSW4gY2VydGFpbiBjb25maWd1cmF0aW9ucyB0aGlz
IHdpbGwgcmVjcmVhdGUgdGhlIEQzRDExCisgICAgLy8gZGV2aWNlLiBXZSB3YW50IHRvIHRlc3Qg
dGhhdCBpdCBkb2Vzbid0IHJlY3JlYXRlIHRoZSBEM0QxMSBkZXZpY2Ugd2hlbiBFR0xEZXZpY2VF
WFQgaXMKKyAgICAvLyB1c2VkLiBUaGUgd2luZG93IHN1cmZhY2UgY3JlYXRpb24gc2hvdWxkIGZh
aWwgaWYgYSBuZXcgRDNEMTEgZGV2aWNlIGlzbid0IGNyZWF0ZWQuCisgICAgbVN1cmZhY2UgPSBl
Z2xDcmVhdGVXaW5kb3dTdXJmYWNlKG1EaXNwbGF5LCBtQ29uZmlnLCBtT1NXaW5kb3ctPmdldE5h
dGl2ZVdpbmRvdygpLCBudWxscHRyKTsKKyAgICBBU1NFUlRfRVEoRUdMX05PX1NVUkZBQ0UsIG1T
dXJmYWNlKTsKKyAgICBBU1NFUlRfRUdMX0VSUk9SKEVHTF9CQURfQUxMT0MpOworCisgICAgLy8g
R2V0IHRoZSBEM0QxMSBkZXZpY2Ugb3V0IG9mIHRoZSBFR0xEaXNwbGF5IGFnYWluLiBJdCBzaG91
bGQgYmUgdGhlIHNhbWUgb25lIGFzIGFib3ZlLgorICAgIEVHTEF0dHJpYiBkZXZpY2UgICAgICAg
PSAwOworICAgIEVHTEF0dHJpYiBuZXdFZ2xEZXZpY2UgPSAwOworICAgIEFTU0VSVF9FR0xfVFJV
RShlZ2xRdWVyeURpc3BsYXlBdHRyaWJFWFQobURpc3BsYXksIEVHTF9ERVZJQ0VfRVhULCAmbmV3
RWdsRGV2aWNlKSk7CisgICAgQVNTRVJUX0VHTF9UUlVFKGVnbFF1ZXJ5RGV2aWNlQXR0cmliRVhU
KHJlaW50ZXJwcmV0X2Nhc3Q8RUdMRGV2aWNlRVhUPihuZXdFZ2xEZXZpY2UpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX0QzRDExX0RFVklDRV9B
TkdMRSwgJmRldmljZSkpOworICAgIElEM0QxMURldmljZSAqbmV3RGV2aWNlID0gcmVpbnRlcnBy
ZXRfY2FzdDxJRDNEMTFEZXZpY2UgKj4oZGV2aWNlKTsKKworICAgIEFTU0VSVF9FUShyZWludGVy
cHJldF9jYXN0PEVHTERldmljZUVYVD4obmV3RWdsRGV2aWNlKSwgZWdsRGV2aWNlKTsKKyAgICBB
U1NFUlRfRVEobmV3RGV2aWNlLCBtRGV2aWNlKTsKKworICAgIC8vIE5vdGUgdGhhdCB3ZSBtdXN0
IGNhbGwgVGVhckRvd24oKSBiZWZvcmUgd2UgcmVsZWFzZSB0aGUgRUdMIGRldmljZSwgc2luY2Ug
dGhlIGRpc3BsYXkKKyAgICAvLyBkZXBlbmRzIG9uIHRoZSBkZXZpY2UKKyAgICBUZWFyRG93bigp
OworCisgICAgZWdsUmVsZWFzZURldmljZUFOR0xFKGVnbERldmljZSk7Cit9CisKKy8vIFRlc3Qg
dGhhdCBjYWxsaW5nIGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVCB3aXRoIHRoZSBzYW1lIGRldmlj
ZSByZXR1cm5zIHRoZSBzYW1lIGRpc3BsYXkKK1RFU1RfRihFR0xEZXZpY2VDcmVhdGlvblRlc3Qs
IGdldFBsYXRmb3JtRGlzcGxheVR3aWNlKQoreworICAgIGlmICghbUQzRDExQXZhaWxhYmxlKQor
ICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJEM0QxMSBub3QgYXZhaWxhYmxlLCBza2lwcGlu
ZyB0ZXN0IiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDcmVh
dGVEM0QxMURldmljZSgpOworCisgICAgRUdMRGV2aWNlRVhUIGVnbERldmljZSA9CisgICAgICAg
IGVnbENyZWF0ZURldmljZUFOR0xFKEVHTF9EM0QxMV9ERVZJQ0VfQU5HTEUsIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCAqPihtRGV2aWNlKSwgbnVsbHB0cik7CisgICAgQVNTRVJUX0VHTF9TVUNDRVNT
KCk7CisKKyAgICAvLyBDcmVhdGUgYW4gRUdMRGlzcGxheSB1c2luZyB0aGUgRUdMRGV2aWNlCisg
ICAgRUdMRGlzcGxheSBkaXNwbGF5MSA9IGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVChFR0xfUExB
VEZPUk1fREVWSUNFX0VYVCwgZWdsRGV2aWNlLCBudWxscHRyKTsKKyAgICBBU1NFUlRfTkUoRUdM
X05PX0RJU1BMQVksIGRpc3BsYXkxKTsKKworICAgIEVHTERpc3BsYXkgZGlzcGxheTIgPSBlZ2xH
ZXRQbGF0Zm9ybURpc3BsYXlFWFQoRUdMX1BMQVRGT1JNX0RFVklDRV9FWFQsIGVnbERldmljZSwg
bnVsbHB0cik7CisgICAgQVNTRVJUX05FKEVHTF9OT19ESVNQTEFZLCBkaXNwbGF5Mik7CisKKyAg
ICBBU1NFUlRfRVEoZGlzcGxheTEsIGRpc3BsYXkyKTsKKworICAgIGVnbFRlcm1pbmF0ZShkaXNw
bGF5MSk7CisgICAgZWdsUmVsZWFzZURldmljZUFOR0xFKGVnbERldmljZSk7Cit9CisKKy8vIFRl
c3QgdGhhdCBjcmVhdGluZyBhIEVHTERldmljZUVYVCBmcm9tIGFuIGludmFsaWQgRDNEMTEgZGV2
aWNlIGZhaWxzCitURVNUX0YoRUdMRGV2aWNlQ3JlYXRpb25UZXN0LCBJbnZhbGlkRDNEMTFEZXZp
Y2UpCit7CisgICAgaWYgKCFtRGV2aWNlQ3JlYXRpb25EM0QxMUV4dEF2YWlsYWJsZSB8fCAhbUQz
RDExQXZhaWxhYmxlKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJFR0xEZXZpY2UgY3Jl
YXRpb24gYW5kL29yIEQzRDExIG5vdCBhdmFpbGFibGUsIHNraXBwaW5nIHRlc3QiIDw8IHN0ZDo6
ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIENyZWF0ZUQzRDExRGV2aWNlKCk7
CisKKyAgICAvLyBVc2UgbURldmljZUNvbnRleHQgaW5zdGVhZCBvZiBtRGV2aWNlCisgICAgRUdM
RGV2aWNlRVhUIGVnbERldmljZSA9IGVnbENyZWF0ZURldmljZUFOR0xFKAorICAgICAgICBFR0xf
RDNEMTFfREVWSUNFX0FOR0xFLCByZWludGVycHJldF9jYXN0PHZvaWQgKj4obURldmljZUNvbnRl
eHQpLCBudWxscHRyKTsKKyAgICBFWFBFQ1RfRVEoRUdMX05PX0RFVklDRV9FWFQsIGVnbERldmlj
ZSk7CisgICAgRVhQRUNUX0VHTF9FUlJPUihFR0xfQkFEX0FUVFJJQlVURSk7Cit9CisKKy8vIFRl
c3QgdGhhdCBFR0xEZXZpY2VFWFQgaG9sZHMgYSByZWYgdG8gdGhlIEQzRDExIGRldmljZQorVEVT
VF9GKEVHTERldmljZUNyZWF0aW9uVGVzdCwgRDNEMTFEZXZpY2VSZWZlcmVuY2VDb3VudGluZykK
K3sKKyAgICBpZiAoIW1EZXZpY2VDcmVhdGlvbkQzRDExRXh0QXZhaWxhYmxlIHx8ICFtRDNEMTFB
dmFpbGFibGUpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIkVHTERldmljZSBjcmVhdGlv
biBhbmQvb3IgRDNEMTEgbm90IGF2YWlsYWJsZSwgc2tpcHBpbmcgdGVzdCIgPDwgc3RkOjplbmRs
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ3JlYXRlRDNEMTFEZXZpY2UoKTsKKwor
ICAgIEVHTERldmljZUVYVCBlZ2xEZXZpY2UgPQorICAgICAgICBlZ2xDcmVhdGVEZXZpY2VBTkdM
RShFR0xfRDNEMTFfREVWSUNFX0FOR0xFLCByZWludGVycHJldF9jYXN0PHZvaWQgKj4obURldmlj
ZSksIG51bGxwdHIpOworICAgIEFTU0VSVF9ORShFR0xfTk9fREVWSUNFX0VYVCwgZWdsRGV2aWNl
KTsKKyAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKworICAgIC8vIE5vdyByZWxlYXNlIG91ciBE
M0QxMSBkZXZpY2UvY29udGV4dAorICAgIFNhZmVSZWxlYXNlKG1EZXZpY2UpOworICAgIFNhZmVS
ZWxlYXNlKG1EZXZpY2VDb250ZXh0KTsKKworICAgIEVHTEF0dHJpYiBkZXZpY2VBdHRyaWI7Cisg
ICAgZWdsUXVlcnlEZXZpY2VBdHRyaWJFWFQoZWdsRGV2aWNlLCBFR0xfRDNEMTFfREVWSUNFX0FO
R0xFLCAmZGV2aWNlQXR0cmliKTsKKyAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKworICAgIElE
M0QxMURldmljZSAqcXVlcmllZERldmljZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SUQzRDExRGV2aWNl
ICo+KGRldmljZUF0dHJpYik7CisgICAgQVNTRVJUX0VRKG1GZWF0dXJlTGV2ZWwsIHF1ZXJpZWRE
ZXZpY2UtPkdldEZlYXR1cmVMZXZlbCgpKTsKKworICAgIGVnbFJlbGVhc2VEZXZpY2VBTkdMRShl
Z2xEZXZpY2UpOworfQorCisvLyBUZXN0IHRoYXQgY3JlYXRpbmcgYSBFR0xEZXZpY2VFWFQgZnJv
bSBhIEQzRDkgZGV2aWNlIGZhaWxzCitURVNUX0YoRUdMRGV2aWNlQ3JlYXRpb25UZXN0LCBBbnlE
M0Q5RGV2aWNlKQoreworICAgIGlmICghbURldmljZUNyZWF0aW9uRDNEMTFFeHRBdmFpbGFibGUp
CisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIkVHTERldmljZSBjcmVhdGlvbiBub3QgYXZh
aWxhYmxlLCBza2lwcGluZyB0ZXN0IiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBzdGQ6OnN0cmluZyBmYWtlRDNERGV2aWNlID0gIlRoaXMgaXMgYSBzdHJpbmcs
IG5vdCBhIEQzRCBkZXZpY2UiOworCisgICAgRUdMRGV2aWNlRVhUIGVnbERldmljZSA9IGVnbENy
ZWF0ZURldmljZUFOR0xFKAorICAgICAgICBFR0xfRDNEOV9ERVZJQ0VfQU5HTEUsIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCAqPigmZmFrZUQzRERldmljZSksIG51bGxwdHIpOworICAgIEVYUEVDVF9F
UShFR0xfTk9fREVWSUNFX0VYVCwgZWdsRGV2aWNlKTsKKyAgICBFWFBFQ1RfRUdMX0VSUk9SKEVH
TF9CQURfQVRUUklCVVRFKTsKK30KKworY2xhc3MgRUdMRGV2aWNlUXVlcnlUZXN0IDogcHVibGlj
IEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgRUdMRGV2aWNlUXVlcnlUZXN0KCkKKyAg
ICB7CisgICAgICAgIG1RdWVyeURpc3BsYXlBdHRyaWJFWFQgPSBudWxscHRyOworICAgICAgICBt
UXVlcnlEZXZpY2VBdHRyaWJFWFQgID0gbnVsbHB0cjsKKyAgICAgICAgbVF1ZXJ5RGV2aWNlU3Ry
aW5nRVhUICA9IG51bGxwdHI7CisgICAgfQorCisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7CisKKyAgICAgICAgY29uc3QgY2hhciAq
ZXh0ZW5zaW9uU3RyaW5nID0KKyAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIgKj4o
ZWdsUXVlcnlTdHJpbmcoZ2V0RUdMV2luZG93KCktPmdldERpc3BsYXkoKSwgRUdMX0VYVEVOU0lP
TlMpKTsKKyAgICAgICAgaWYgKHN0cnN0cihleHRlbnNpb25TdHJpbmcsICJFR0xfRVhUX2Rldmlj
ZV9xdWVyeSIpKQorICAgICAgICB7CisgICAgICAgICAgICBtUXVlcnlEaXNwbGF5QXR0cmliRVhU
ID0KKyAgICAgICAgICAgICAgICAoUEZORUdMUVVFUllESVNQTEFZQVRUUklCRVhUUFJPQyllZ2xH
ZXRQcm9jQWRkcmVzcygiZWdsUXVlcnlEaXNwbGF5QXR0cmliRVhUIik7CisgICAgICAgICAgICBt
UXVlcnlEZXZpY2VBdHRyaWJFWFQgPQorICAgICAgICAgICAgICAgIChQRk5FR0xRVUVSWURFVklD
RUFUVFJJQkVYVFBST0MpZWdsR2V0UHJvY0FkZHJlc3MoImVnbFF1ZXJ5RGV2aWNlQXR0cmliRVhU
Iik7CisgICAgICAgICAgICBtUXVlcnlEZXZpY2VTdHJpbmdFWFQgPQorICAgICAgICAgICAgICAg
IChQRk5FR0xRVUVSWURFVklDRVNUUklOR0VYVFBST0MpZWdsR2V0UHJvY0FkZHJlc3MoImVnbFF1
ZXJ5RGV2aWNlU3RyaW5nRVhUIik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW1RdWVyeURl
dmljZVN0cmluZ0VYVCkKKyAgICAgICAgeworICAgICAgICAgICAgRkFJTCgpIDw8ICJBTkdMRSBl
eHRlbnNpb24gRUdMX0VYVF9kZXZpY2VfcXVlcnkgZXhwb3J0IGVnbFF1ZXJ5RGV2aWNlU3RyaW5n
RVhUIHdhcyBub3QgIgorICAgICAgICAgICAgICAgICAgICAgICJmb3VuZCI7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoIW1RdWVyeURpc3BsYXlBdHRyaWJFWFQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIEZBSUwoKSA8PCAiQU5HTEUgZXh0ZW5zaW9uIEVHTF9FWFRfZGV2aWNlX3F1ZXJ5IGV4
cG9ydCBlZ2xRdWVyeURpc3BsYXlBdHRyaWJFWFQgd2FzICIKKyAgICAgICAgICAgICAgICAgICAg
ICAibm90IGZvdW5kIjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghbVF1ZXJ5RGV2aWNlQXR0
cmliRVhUKQorICAgICAgICB7CisgICAgICAgICAgICBGQUlMKCkgPDwgIkFOR0xFIGV4dGVuc2lv
biBFR0xfRVhUX2RldmljZV9xdWVyeSBleHBvcnQgZWdsUXVlcnlEZXZpY2VBdHRyaWJFWFQgd2Fz
IG5vdCAiCisgICAgICAgICAgICAgICAgICAgICAgImZvdW5kIjsKKyAgICAgICAgfQorCisgICAg
ICAgIEVHTEF0dHJpYiBhbmdsZURldmljZSA9IDA7CisgICAgICAgIEVYUEVDVF9FR0xfVFJVRSgK
KyAgICAgICAgICAgIG1RdWVyeURpc3BsYXlBdHRyaWJFWFQoZ2V0RUdMV2luZG93KCktPmdldERp
c3BsYXkoKSwgRUdMX0RFVklDRV9FWFQsICZhbmdsZURldmljZSkpOworICAgICAgICBleHRlbnNp
b25TdHJpbmcgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyICo+KAorICAgICAgICAgICAgbVF1ZXJ5
RGV2aWNlU3RyaW5nRVhUKHJlaW50ZXJwcmV0X2Nhc3Q8RUdMRGV2aWNlRVhUPihhbmdsZURldmlj
ZSksIEVHTF9FWFRFTlNJT05TKSk7CisgICAgICAgIGlmIChzdHJzdHIoZXh0ZW5zaW9uU3RyaW5n
LCAiRUdMX0FOR0xFX2RldmljZV9kM2QiKSA9PSBOVUxMKQorICAgICAgICB7CisgICAgICAgICAg
ICBGQUlMKCkgPDwgIkFOR0xFIGV4dGVuc2lvbiBFR0xfQU5HTEVfZGV2aWNlX2QzZCB3YXMgbm90
IGZvdW5kIjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlk
ZSB7IEFOR0xFVGVzdDo6VGVhckRvd24oKTsgfQorCisgICAgUEZORUdMUVVFUllESVNQTEFZQVRU
UklCRVhUUFJPQyBtUXVlcnlEaXNwbGF5QXR0cmliRVhUOworICAgIFBGTkVHTFFVRVJZREVWSUNF
QVRUUklCRVhUUFJPQyBtUXVlcnlEZXZpY2VBdHRyaWJFWFQ7CisgICAgUEZORUdMUVVFUllERVZJ
Q0VTVFJJTkdFWFRQUk9DIG1RdWVyeURldmljZVN0cmluZ0VYVDsKK307CisKKy8vIFRoaXMgdGVz
dCBhdHRlbXB0cyB0byBvYnRhaW4gYSBEM0QxMSBkZXZpY2UgYW5kIGEgRDNEOSBkZXZpY2UgdXNp
bmcgdGhlIGVnbFF1ZXJ5RGV2aWNlQXR0cmliRVhUCisvLyBmdW5jdGlvbi4KKy8vIElmIHRoZSB0
ZXN0IGlzIGNvbmZpZ3VyZWQgdG8gdXNlIEQzRDExIHRoZW4gaXQgc2hvdWxkIHN1Y2NlZWQgdG8g
b2J0YWluIGEgRDNEMTEgZGV2aWNlLgorLy8gSWYgdGhlIHRlc3QgaXMgY29uZml0dXJlZCB0byB1
c2UgRDNEOSwgdGhlbiBpdCBzaG91bGQgc3VjY2VlZCB0byBvYnRhaW4gYSBEM0Q5IGRldmljZS4K
K1RFU1RfUChFR0xEZXZpY2VRdWVyeVRlc3QsIFF1ZXJ5RGV2aWNlKQoreworICAgIEVHTEF0dHJp
YiBkZXZpY2UgICAgICA9IDA7CisgICAgRUdMQXR0cmliIGFuZ2xlRGV2aWNlID0gMDsKKyAgICBp
ZiAoZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDEx
X0FOR0xFKQorICAgIHsKKyAgICAgICAgRVhQRUNUX0VHTF9UUlVFKAorICAgICAgICAgICAgbVF1
ZXJ5RGlzcGxheUF0dHJpYkVYVChnZXRFR0xXaW5kb3coKS0+Z2V0RGlzcGxheSgpLCBFR0xfREVW
SUNFX0VYVCwgJmFuZ2xlRGV2aWNlKSk7CisgICAgICAgIEVYUEVDVF9FR0xfVFJVRShtUXVlcnlE
ZXZpY2VBdHRyaWJFWFQocmVpbnRlcnByZXRfY2FzdDxFR0xEZXZpY2VFWFQ+KGFuZ2xlRGV2aWNl
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfRDNE
MTFfREVWSUNFX0FOR0xFLCAmZGV2aWNlKSk7CisgICAgICAgIElEM0QxMURldmljZSAqZDNkMTFE
ZXZpY2UgPSByZWludGVycHJldF9jYXN0PElEM0QxMURldmljZSAqPihkZXZpY2UpOworICAgICAg
ICBJRFhHSURldmljZSAqZHhnaURldmljZSA9IER5bmFtaWNDYXN0Q29tT2JqZWN0PElEWEdJRGV2
aWNlPihkM2QxMURldmljZSk7CisgICAgICAgIEVYUEVDVF9UUlVFKGR4Z2lEZXZpY2UgIT0gbnVs
bHB0cik7CisgICAgICAgIFNhZmVSZWxlYXNlKGR4Z2lEZXZpY2UpOworICAgIH0KKworICAgIGlm
IChnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEOV9B
TkdMRSkKKyAgICB7CisgICAgICAgIEVYUEVDVF9FR0xfVFJVRSgKKyAgICAgICAgICAgIG1RdWVy
eURpc3BsYXlBdHRyaWJFWFQoZ2V0RUdMV2luZG93KCktPmdldERpc3BsYXkoKSwgRUdMX0RFVklD
RV9FWFQsICZhbmdsZURldmljZSkpOworICAgICAgICBFWFBFQ1RfRUdMX1RSVUUobVF1ZXJ5RGV2
aWNlQXR0cmliRVhUKHJlaW50ZXJwcmV0X2Nhc3Q8RUdMRGV2aWNlRVhUPihhbmdsZURldmljZSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX0QzRDlf
REVWSUNFX0FOR0xFLCAmZGV2aWNlKSk7CisgICAgICAgIElEaXJlY3QzRERldmljZTkgKmQzZDlE
ZXZpY2UgPSByZWludGVycHJldF9jYXN0PElEaXJlY3QzRERldmljZTkgKj4oZGV2aWNlKTsKKyAg
ICAgICAgSURpcmVjdDNEOSAqZDNkOSA9IG51bGxwdHI7CisgICAgICAgIEVYUEVDVF9FUShTX09L
LCBkM2Q5RGV2aWNlLT5HZXREaXJlY3QzRCgmZDNkOSkpOworICAgICAgICBFWFBFQ1RfVFJVRShk
M2Q5ICE9IG51bGxwdHIpOworICAgICAgICBTYWZlUmVsZWFzZShkM2Q5KTsKKyAgICB9Cit9CisK
Ky8vIFRoaXMgdGVzdCBhdHRlbXB0cyB0byBvYnRhaW4gYSBEM0QxMSBkZXZpY2UgZnJvbSBhIEQz
RDkgY29uZmlndXJlZCBzeXN0ZW0gYW5kIGEgRDNEOSBkZXZpY2UgZnJvbQorLy8gYSBEM0QxMSBj
b25maWd1cmVkIHN5c3RlbSB1c2luZyB0aGUgZWdsUXVlcnlEZXZpY2VBdHRyaWJFWFQgZnVuY3Rp
b24uCisvLyBJZiB0aGUgdGVzdCBpcyBjb25maWd1cmVkIHRvIHVzZSBEM0QxMSB0aGVuIGl0IHNo
b3VsZCBmYWlsIHRvIG9idGFpbiBhIEQzRDExIGRldmljZS4KKy8vIElmIHRoZSB0ZXN0IGlzIGNv
bmZpdHVyZWQgdG8gdXNlIEQzRDksIHRoZW4gaXQgc2hvdWxkIGZhaWwgdG8gb2J0YWluIGEgRDNE
OSBkZXZpY2UuCitURVNUX1AoRUdMRGV2aWNlUXVlcnlUZXN0LCBRdWVyeURldmljZUJhZEF0dHJp
YnV0ZSkKK3sKKyAgICBFR0xBdHRyaWIgZGV2aWNlICAgICAgPSAwOworICAgIEVHTEF0dHJpYiBh
bmdsZURldmljZSA9IDA7CisgICAgaWYgKGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExB
VEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSkKKyAgICB7CisgICAgICAgIEVYUEVDVF9FR0xf
VFJVRSgKKyAgICAgICAgICAgIG1RdWVyeURpc3BsYXlBdHRyaWJFWFQoZ2V0RUdMV2luZG93KCkt
PmdldERpc3BsYXkoKSwgRUdMX0RFVklDRV9FWFQsICZhbmdsZURldmljZSkpOworICAgICAgICBF
WFBFQ1RfRUdMX0ZBTFNFKG1RdWVyeURldmljZUF0dHJpYkVYVChyZWludGVycHJldF9jYXN0PEVH
TERldmljZUVYVD4oYW5nbGVEZXZpY2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFR0xfRDNEOV9ERVZJQ0VfQU5HTEUsICZkZXZpY2UpKTsKKyAgICB9
CisKKyAgICBpZiAoZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9U
WVBFX0QzRDlfQU5HTEUpCisgICAgeworICAgICAgICBFWFBFQ1RfRUdMX1RSVUUoCisgICAgICAg
ICAgICBtUXVlcnlEaXNwbGF5QXR0cmliRVhUKGdldEVHTFdpbmRvdygpLT5nZXREaXNwbGF5KCks
IEVHTF9ERVZJQ0VfRVhULCAmYW5nbGVEZXZpY2UpKTsKKyAgICAgICAgRVhQRUNUX0VHTF9GQUxT
RShtUXVlcnlEZXZpY2VBdHRyaWJFWFQocmVpbnRlcnByZXRfY2FzdDxFR0xEZXZpY2VFWFQ+KGFu
Z2xlRGV2aWNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRUdMX0QzRDExX0RFVklDRV9BTkdMRSwgJmRldmljZSkpOworICAgIH0KK30KKworLy8gRW5z
dXJlIHRoYXQ6CisvLyAgICAtIGNhbGxpbmcgZ2V0UGxhdGZvcm1EaXNwbGF5RVhUIHVzaW5nIEFO
R0xFX1BsYXRmb3JtIHdpdGggc29tZSBwYXJhbWV0ZXJzCisvLyAgICAtIGV4dHJhY3RpbmcgdGhl
IEVHTERldmljZUVYVCBmcm9tIHRoZSBFR0xEaXNwbGF5CisvLyAgICAtIGNhbGxpbmcgZ2V0UGxh
dGZvcm1EaXNwbGF5RVhUIHdpdGggdGhpcyBFR0xEZXZpY2VFWFQKKy8vIHJlc3VsdHMgaW4gdGhl
IHNhbWUgRUdMRGlzcGxheSBiZWluZyByZXR1cm5lZCBmcm9tIGdldFBsYXRmb3JtRGlzcGxheUVY
VCBib3RoIHRpbWVzCitURVNUX1AoRUdMRGV2aWNlUXVlcnlUZXN0LCBnZXRQbGF0Zm9ybURpc3Bs
YXlEZXZpY2VSZXVzZSkKK3sKKyAgICBFR0xBdHRyaWIgZWdsRGV2aWNlID0gMDsKKyAgICBFWFBF
Q1RfRUdMX1RSVUUoCisgICAgICAgICAgICAgIGVnbFF1ZXJ5RGlzcGxheUF0dHJpYkVYVChnZXRF
R0xXaW5kb3coKS0+Z2V0RGlzcGxheSgpLCBFR0xfREVWSUNFX0VYVCwgJmVnbERldmljZSkpOwor
CisgICAgRUdMRGlzcGxheSBkaXNwbGF5MiA9IGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVCgKKyAg
ICAgICAgRUdMX1BMQVRGT1JNX0RFVklDRV9FWFQsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMRGV2aWNl
RVhUPihlZ2xEZXZpY2UpLCBudWxscHRyKTsKKyAgICBFWFBFQ1RfRVEoZ2V0RUdMV2luZG93KCkt
PmdldERpc3BsYXkoKSwgZGlzcGxheTIpOworfQorCisvLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hp
Y2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3Ig
dmVyc2lvbikgdGhlc2UKKy8vIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KK0FOR0xFX0lO
U1RBTlRJQVRFX1RFU1QoRUdMRGV2aWNlUXVlcnlUZXN0LCBFUzJfRDNEOSgpLCBFUzJfRDNEMTEo
KSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VH
TFByZXNlbnRQYXRoRDNEMTFUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFByZXNlbnRQYXRoRDNEMTFUZXN0LmNwcAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rl
c3RzL0VHTFByZXNlbnRQYXRoRDNEMTFUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDM3OCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisK
KyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgImNvbV91dGlscy5oIgorI2luY2x1ZGUgIk9T
V2luZG93LmgiCisjaW5jbHVkZSA8ZDNkMTEuaD4KKwordXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwor
CitjbGFzcyBFR0xQcmVzZW50UGF0aEQzRDExIDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFy
YW08UGxhdGZvcm1QYXJhbWV0ZXJzPgoreworICBwcm90ZWN0ZWQ6CisgICAgRUdMUHJlc2VudFBh
dGhEM0QxMSgpCisgICAgICAgIDogbURpc3BsYXkoRUdMX05PX0RJU1BMQVkpLAorICAgICAgICAg
IG1Db250ZXh0KEVHTF9OT19DT05URVhUKSwKKyAgICAgICAgICBtU3VyZmFjZShFR0xfTk9fU1VS
RkFDRSksCisgICAgICAgICAgbU9mZnNjcmVlblN1cmZhY2VEM0QxMVRleHR1cmUobnVsbHB0ciks
CisgICAgICAgICAgbUNvbmZpZygwKSwKKyAgICAgICAgICBtT1NXaW5kb3cobnVsbHB0ciksCisg
ICAgICAgICAgbVdpbmRvd1dpZHRoKDApCisgICAgeworICAgIH0KKworICAgIHZvaWQgU2V0VXAo
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgbU9TV2luZG93ICAgID0gQ3JlYXRlT1NXaW5kb3co
KTsKKyAgICAgICAgbVdpbmRvd1dpZHRoID0gNjQ7CisgICAgICAgIG1PU1dpbmRvdy0+aW5pdGlh
bGl6ZSgiRUdMUHJlc2VudFBhdGhEM0QxMSIsIG1XaW5kb3dXaWR0aCwgbVdpbmRvd1dpZHRoKTsK
KyAgICB9CisKKyAgICB2b2lkIGluaXRpYWxpemVFR0woYm9vbCB1c2VQcmVzZW50UGF0aEZhc3Qp
CisgICAgeworICAgICAgICBpbnQgY2xpZW50VmVyc2lvbiA9IEdldFBhcmFtKCkubWFqb3JWZXJz
aW9uOworCisgICAgICAgIGNvbnN0IGNoYXIgKmV4dGVuc2lvblN0cmluZyA9CisgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxjb25zdCBjaGFyICo+KGVnbFF1ZXJ5U3RyaW5nKEVHTF9OT19ESVNQTEFZ
LCBFR0xfRVhURU5TSU9OUykpOworICAgICAgICBBU1NFUlRfTkUobnVsbHB0ciwgc3Ryc3RyKGV4
dGVuc2lvblN0cmluZywgIkVHTF9BTkdMRV9leHBlcmltZW50YWxfcHJlc2VudF9wYXRoIikpOwor
CisgICAgICAgIFBGTkVHTEdFVFBMQVRGT1JNRElTUExBWUVYVFBST0MgZWdsR2V0UGxhdGZvcm1E
aXNwbGF5RVhUID0KKyAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZORUdMR0VUUExBVEZP
Uk1ESVNQTEFZRVhUUFJPQz4oCisgICAgICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImVn
bEdldFBsYXRmb3JtRGlzcGxheUVYVCIpKTsKKyAgICAgICAgQVNTRVJUX05FKG51bGxwdHIsIGVn
bEdldFBsYXRmb3JtRGlzcGxheUVYVCk7CisKKyAgICAgICAgLy8gU2V0IHVwIEVHTCBEaXNwbGF5
CisgICAgICAgIEVHTGludCBkaXNwbGF5QXR0cmlic1tdID0geworICAgICAgICAgICAgRUdMX1BM
QVRGT1JNX0FOR0xFX1RZUEVfQU5HTEUsIEdldFBhcmFtKCkuZ2V0UmVuZGVyZXIoKSwKKyAgICAg
ICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9NQVhfVkVSU0lPTl9NQUpPUl9BTkdMRSwgR2V0UGFy
YW0oKS5lZ2xQYXJhbWV0ZXJzLm1ham9yVmVyc2lvbiwKKyAgICAgICAgICAgIEVHTF9QTEFURk9S
TV9BTkdMRV9NQVhfVkVSU0lPTl9NQUpPUl9BTkdMRSwgR2V0UGFyYW0oKS5lZ2xQYXJhbWV0ZXJz
Lm1ham9yVmVyc2lvbiwKKyAgICAgICAgICAgIEVHTF9FWFBFUklNRU5UQUxfUFJFU0VOVF9QQVRI
X0FOR0xFLAorICAgICAgICAgICAgdXNlUHJlc2VudFBhdGhGYXN0ID8gRUdMX0VYUEVSSU1FTlRB
TF9QUkVTRU5UX1BBVEhfRkFTVF9BTkdMRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDogRUdMX0VYUEVSSU1FTlRBTF9QUkVTRU5UX1BBVEhfQ09QWV9BTkdMRSwKKyAgICAgICAgICAg
IEVHTF9OT05FfTsKKyAgICAgICAgbURpc3BsYXkgPQorICAgICAgICAgICAgZWdsR2V0UGxhdGZv
cm1EaXNwbGF5RVhUKEVHTF9QTEFURk9STV9BTkdMRV9BTkdMRSwgRUdMX0RFRkFVTFRfRElTUExB
WSwgZGlzcGxheUF0dHJpYnMpOworICAgICAgICBBU1NFUlRfVFJVRShFR0xfTk9fRElTUExBWSAh
PSBtRGlzcGxheSk7CisgICAgICAgIEFTU0VSVF9FR0xfVFJVRShlZ2xJbml0aWFsaXplKG1EaXNw
bGF5LCBOVUxMLCBOVUxMKSk7CisKKyAgICAgICAgLy8gQ2hvb3NlIHRoZSBFR0wgY29uZmlnCisg
ICAgICAgIEVHTGludCBudW1Db25maWdzOworICAgICAgICBFR0xpbnQgY29uZmlnQXR0cmlic1td
ID0ge0VHTF9SRURfU0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9HUkVFTl9TSVpFLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRUdMX0JMVUVfU0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9BTFBIQV9TSVpFLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRUdMX1JFTkRFUkFCTEVfVFlQRSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjbGllbnRWZXJzaW9uID09IDMgPyBFR0xfT1BFTkdMX0VTM19CSVQgOiBF
R0xfT1BFTkdMX0VTMl9CSVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdM
X1NVUkZBQ0VfVFlQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfUEJV
RkZFUl9CSVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX05PTkV9Owor
ICAgICAgICBBU1NFUlRfRUdMX1RSVUUoZWdsQ2hvb3NlQ29uZmlnKG1EaXNwbGF5LCBjb25maWdB
dHRyaWJzLCAmbUNvbmZpZywgMSwgJm51bUNvbmZpZ3MpKTsKKyAgICAgICAgQVNTRVJUX0VRKDEs
IG51bUNvbmZpZ3MpOworCisgICAgICAgIC8vIFNldCB1cCB0aGUgRUdMIGNvbnRleHQKKyAgICAg
ICAgRUdMaW50IGNvbnRleHRBdHRyaWJzW10gPSB7RUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04s
IGNsaWVudFZlcnNpb24sIEVHTF9OT05FfTsKKyAgICAgICAgbUNvbnRleHQgPSBlZ2xDcmVhdGVD
b250ZXh0KG1EaXNwbGF5LCBtQ29uZmlnLCBOVUxMLCBjb250ZXh0QXR0cmlicyk7CisgICAgICAg
IEFTU0VSVF9UUlVFKEVHTF9OT19DT05URVhUICE9IG1Db250ZXh0KTsKKyAgICB9CisKKyAgICB2
b2lkIGNyZWF0ZVdpbmRvd1N1cmZhY2UoKQorICAgIHsKKyAgICAgICAgbVN1cmZhY2UgPSBlZ2xD
cmVhdGVXaW5kb3dTdXJmYWNlKG1EaXNwbGF5LCBtQ29uZmlnLCBtT1NXaW5kb3ctPmdldE5hdGl2
ZVdpbmRvdygpLCBudWxscHRyKTsKKyAgICB9CisKKyAgICB2b2lkIGNyZWF0ZVBidWZmZXJGcm9t
Q2xpZW50QnVmZmVyU3VyZmFjZSgpCisgICAgeworICAgICAgICBFR0xBdHRyaWIgZGV2aWNlICAg
ICAgPSAwOworICAgICAgICBFR0xBdHRyaWIgYW5nbGVEZXZpY2UgPSAwOworCisgICAgICAgIFBG
TkVHTFFVRVJZRElTUExBWUFUVFJJQkVYVFBST0MgcXVlcnlEaXNwbGF5QXR0cmliRVhUOworICAg
ICAgICBQRk5FR0xRVUVSWURFVklDRUFUVFJJQkVYVFBST0MgcXVlcnlEZXZpY2VBdHRyaWJFWFQ7
CisKKyAgICAgICAgY29uc3QgY2hhciAqZXh0ZW5zaW9uU3RyaW5nID0KKyAgICAgICAgICAgIHN0
YXRpY19jYXN0PGNvbnN0IGNoYXIgKj4oZWdsUXVlcnlTdHJpbmcobURpc3BsYXksIEVHTF9FWFRF
TlNJT05TKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHN0cnN0cihleHRlbnNpb25TdHJpbmcsICJF
R0xfRVhUX2RldmljZV9xdWVyeSIpKTsKKworICAgICAgICBxdWVyeURpc3BsYXlBdHRyaWJFWFQg
PQorICAgICAgICAgICAgKFBGTkVHTFFVRVJZRElTUExBWUFUVFJJQkVYVFBST0MpZWdsR2V0UHJv
Y0FkZHJlc3MoImVnbFF1ZXJ5RGlzcGxheUF0dHJpYkVYVCIpOworICAgICAgICBxdWVyeURldmlj
ZUF0dHJpYkVYVCA9CisgICAgICAgICAgICAoUEZORUdMUVVFUllERVZJQ0VBVFRSSUJFWFRQUk9D
KWVnbEdldFByb2NBZGRyZXNzKCJlZ2xRdWVyeURldmljZUF0dHJpYkVYVCIpOworICAgICAgICBB
U1NFUlRfTkUobnVsbHB0ciwgcXVlcnlEaXNwbGF5QXR0cmliRVhUKTsKKyAgICAgICAgQVNTRVJU
X05FKG51bGxwdHIsIHF1ZXJ5RGV2aWNlQXR0cmliRVhUKTsKKworICAgICAgICBBU1NFUlRfRUdM
X1RSVUUocXVlcnlEaXNwbGF5QXR0cmliRVhUKG1EaXNwbGF5LCBFR0xfREVWSUNFX0VYVCwgJmFu
Z2xlRGV2aWNlKSk7CisgICAgICAgIEFTU0VSVF9FR0xfVFJVRShxdWVyeURldmljZUF0dHJpYkVY
VChyZWludGVycHJldF9jYXN0PEVHTERldmljZUVYVD4oYW5nbGVEZXZpY2UpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX0QzRDExX0RFVklDRV9BTkdM
RSwgJmRldmljZSkpOworICAgICAgICBJRDNEMTFEZXZpY2UgKmQzZDExRGV2aWNlID0gcmVpbnRl
cnByZXRfY2FzdDxJRDNEMTFEZXZpY2UgKj4oZGV2aWNlKTsKKworICAgICAgICBEM0QxMV9URVhU
VVJFMkRfREVTQyB0ZXh0dXJlRGVzYyA9IHswfTsKKyAgICAgICAgdGV4dHVyZURlc2MuV2lkdGgg
ICAgICAgICAgICAgICAgPSBtV2luZG93V2lkdGg7CisgICAgICAgIHRleHR1cmVEZXNjLkhlaWdo
dCAgICAgICAgICAgICAgID0gbVdpbmRvd1dpZHRoOworICAgICAgICB0ZXh0dXJlRGVzYy5Gb3Jt
YXQgICAgICAgICAgICAgICA9IERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNOworICAgICAgICB0
ZXh0dXJlRGVzYy5NaXBMZXZlbHMgICAgICAgICAgICA9IDE7CisgICAgICAgIHRleHR1cmVEZXNj
LkFycmF5U2l6ZSAgICAgICAgICAgID0gMTsKKyAgICAgICAgdGV4dHVyZURlc2MuU2FtcGxlRGVz
Yy5Db3VudCAgICAgPSAxOworICAgICAgICB0ZXh0dXJlRGVzYy5TYW1wbGVEZXNjLlF1YWxpdHkg
ICA9IDA7CisgICAgICAgIHRleHR1cmVEZXNjLlVzYWdlICAgICAgICAgICAgICAgID0gRDNEMTFf
VVNBR0VfREVGQVVMVDsKKyAgICAgICAgdGV4dHVyZURlc2MuQmluZEZsYWdzICAgICAgICAgICAg
PSBEM0QxMV9CSU5EX1JFTkRFUl9UQVJHRVQgfCBEM0QxMV9CSU5EX1NIQURFUl9SRVNPVVJDRTsK
KyAgICAgICAgdGV4dHVyZURlc2MuQ1BVQWNjZXNzRmxhZ3MgICAgICAgPSAwOworICAgICAgICB0
ZXh0dXJlRGVzYy5NaXNjRmxhZ3MgICAgICAgICAgICA9IEQzRDExX1JFU09VUkNFX01JU0NfU0hB
UkVEOworCisgICAgICAgIEFTU0VSVF9UUlVFKFNVQ0NFRURFRCgKKyAgICAgICAgICAgIGQzZDEx
RGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJnRleHR1cmVEZXNjLCBudWxscHRyLCAmbU9mZnNjcmVl
blN1cmZhY2VEM0QxMVRleHR1cmUpKSk7CisKKyAgICAgICAgSURYR0lSZXNvdXJjZSAqZHhnaVJl
c291cmNlID0KKyAgICAgICAgICAgIER5bmFtaWNDYXN0Q29tT2JqZWN0PElEWEdJUmVzb3VyY2U+
KG1PZmZzY3JlZW5TdXJmYWNlRDNEMTFUZXh0dXJlKTsKKyAgICAgICAgQVNTRVJUX05FKG51bGxw
dHIsIGR4Z2lSZXNvdXJjZSk7CisKKyAgICAgICAgSEFORExFIHNoYXJlZEhhbmRsZSA9IDA7Cisg
ICAgICAgIEFTU0VSVF9UUlVFKFNVQ0NFRURFRChkeGdpUmVzb3VyY2UtPkdldFNoYXJlZEhhbmRs
ZSgmc2hhcmVkSGFuZGxlKSkpOworICAgICAgICBTYWZlUmVsZWFzZShkeGdpUmVzb3VyY2UpOwor
CisgICAgICAgIEVHTGludCBwQnVmZmVyQXR0cmlidXRlc1tdID0ge0VHTF9XSURUSCwgICAgICAg
ICAgbVdpbmRvd1dpZHRoLCAgICAgICBFR0xfSEVJR0hULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtV2luZG93V2lkdGgsICAgICAgIEVHTF9URVhUVVJFX1RBUkdFVCwg
RUdMX1RFWFRVUkVfMkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVH
TF9URVhUVVJFX0ZPUk1BVCwgRUdMX1RFWFRVUkVfUkdCQSwgICBFR0xfTk9ORX07CisKKyAgICAg
ICAgbVN1cmZhY2UgPSBlZ2xDcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihtRGlzcGxheSwg
RUdMX0QzRF9URVhUVVJFXzJEX1NIQVJFX0hBTkRMRV9BTkdMRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWRIYW5kbGUsIG1Db25maWcs
IHBCdWZmZXJBdHRyaWJ1dGVzKTsKKyAgICAgICAgQVNTRVJUX1RSVUUoRUdMX05PX1NVUkZBQ0Ug
IT0gbVN1cmZhY2UpOworICAgIH0KKworICAgIHZvaWQgbWFrZUN1cnJlbnQoKSB7IEFTU0VSVF9F
R0xfVFJVRShlZ2xNYWtlQ3VycmVudChtRGlzcGxheSwgbVN1cmZhY2UsIG1TdXJmYWNlLCBtQ29u
dGV4dCkpOyB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IFNhZmVSZWxlYXNlKG1PZmZzY3JlZW5TdXJmYWNlRDNEMTFUZXh0dXJlKTsKKworICAgICAgICBp
ZiAobURpc3BsYXkgIT0gRUdMX05PX0RJU1BMQVkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVn
bE1ha2VDdXJyZW50KG1EaXNwbGF5LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX1NVUkZBQ0UsIEVH
TF9OT19DT05URVhUKTsKKworICAgICAgICAgICAgaWYgKG1TdXJmYWNlICE9IEVHTF9OT19TVVJG
QUNFKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVnbERlc3Ryb3lTdXJmYWNlKG1E
aXNwbGF5LCBtU3VyZmFjZSk7CisgICAgICAgICAgICAgICAgbVN1cmZhY2UgPSBFR0xfTk9fU1VS
RkFDRTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1Db250ZXh0ICE9IEVHTF9O
T19DT05URVhUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVnbERlc3Ryb3lDb250
ZXh0KG1EaXNwbGF5LCBtQ29udGV4dCk7CisgICAgICAgICAgICAgICAgbUNvbnRleHQgPSBFR0xf
Tk9fQ09OVEVYVDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZWdsVGVybWluYXRlKG1E
aXNwbGF5KTsKKyAgICAgICAgICAgIG1EaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7CisgICAgICAg
IH0KKworICAgICAgICBtT1NXaW5kb3ctPmRlc3Ryb3koKTsKKyAgICAgICAgU2FmZURlbGV0ZSht
T1NXaW5kb3cpOworICAgIH0KKworICAgIHZvaWQgZHJhd1F1YWRVc2luZ0dMKCkKKyAgICB7Cisg
ICAgICAgIEdMdWludCBtMkRQcm9ncmFtOworICAgICAgICBHTGludCBtVGV4dHVyZTJEVW5pZm9y
bUxvY2F0aW9uOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJj
ZSA9CisgICAgICAgICAgICBTSEFERVJfU09VUkNFKHByZWNpc2lvbiBoaWdocCBmbG9hdDsgYXR0
cmlidXRlIHZlYzQgcG9zaXRpb247IHZhcnlpbmcgdmVjMiB0ZXhjb29yZDsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRp
b24ueHksIDAuMCwgMS4wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleGNvb3Jk
ID0gKHBvc2l0aW9uLnh5ICogMC41KSArIDAuNTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UyRCA9
CisgICAgICAgICAgICBTSEFERVJfU09VUkNFKHByZWNpc2lvbiBoaWdocCBmbG9hdDsgdW5pZm9y
bSBzYW1wbGVyMkQgdGV4OyB2YXJ5aW5nIHZlYzIgdGV4Y29vcmQ7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHRleCwg
dGV4Y29vcmQpOworICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICBtMkRQ
cm9ncmFtICAgICAgICAgICAgICAgID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNl
LCBmcmFnbWVudFNoYWRlclNvdXJjZTJEKTsKKyAgICAgICAgbVRleHR1cmUyRFVuaWZvcm1Mb2Nh
dGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG0yRFByb2dyYW0sICJ0ZXgiKTsKKworICAgICAg
ICB1aW50OF90IHRleHR1cmVJbml0RGF0YVsxNl0gPSB7CisgICAgICAgICAgICAyNTUsIDAsICAg
MCwgICAyNTUsICAvLyBSZWQKKyAgICAgICAgICAgIDAsICAgMjU1LCAwLCAgIDI1NSwgIC8vIEdy
ZWVuCisgICAgICAgICAgICAwLCAgIDAsICAgMjU1LCAyNTUsICAvLyBCbHVlCisgICAgICAgICAg
ICAyNTUsIDI1NSwgMCwgICAyNTUgICAvLyBSZWQgKyBHcmVlbgorICAgICAgICB9OworCisgICAg
ICAgIC8vIENyZWF0ZSBhIHNpbXBsZSBSR0JBIHRleHR1cmUKKyAgICAgICAgR0x1aW50IHRleCA9
IDA7CisgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleCk7CisgICAgICAgIGdsQmluZFRleHR1
cmUoR0xfVEVYVFVSRV8yRCwgdGV4KTsKKyAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVf
MkQsIDAsIEdMX1JHQkEsIDIsIDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAg
ICAgICAgICAgICAgICAgICB0ZXh0dXJlSW5pdERhdGEpOworICAgICAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAg
ICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRF
UiwgR0xfTkVBUkVTVCk7CisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgICAg
IC8vIERyYXcgYSBxdWFkIHVzaW5nIHRoZSB0ZXh0dXJlCisgICAgICAgIGdsQ2xlYXIoR0xfQ09M
T1JfQlVGRkVSX0JJVCk7CisgICAgICAgIGdsVXNlUHJvZ3JhbShtMkRQcm9ncmFtKTsKKyAgICAg
ICAgZ2xVbmlmb3JtMWkobVRleHR1cmUyRFVuaWZvcm1Mb2NhdGlvbiwgMCk7CisKKyAgICAgICAg
R0xpbnQgcG9zaXRpb25Mb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24obTJEUHJvZ3JhbSwg
InBvc2l0aW9uIik7CisgICAgICAgIGdsVXNlUHJvZ3JhbShtMkRQcm9ncmFtKTsKKyAgICAgICAg
Y29uc3QgR0xmbG9hdCB2ZXJ0aWNlc1tdID0KKyAgICAgICAgeworICAgICAgICAgICAgLTEuMGYs
ICAxLjBmLCAwLjVmLAorICAgICAgICAgICAgLTEuMGYsIC0xLjBmLCAwLjVmLAorICAgICAgICAg
ICAgIDEuMGYsIC0xLjBmLCAwLjVmLAorICAgICAgICAgICAgLTEuMGYsICAxLjBmLCAwLjVmLAor
ICAgICAgICAgICAgIDEuMGYsIC0xLjBmLCAwLjVmLAorICAgICAgICAgICAgIDEuMGYsICAxLjBm
LCAwLjVmLAorICAgICAgICB9OworCisgICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3Np
dGlvbkxvY2F0aW9uLCAzLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIHZlcnRpY2VzKTsKKyAgICAg
ICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxvY2F0aW9uKTsKKworICAgICAg
ICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVTLCAwLCA2KTsKKyAgICAgICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7CisKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG0yRFByb2dyYW0pOworICAgIH0K
KworICAgIHZvaWQgY2hlY2tQaXhlbHNVc2luZ0dMKCkKKyAgICB7CisgICAgICAgIC8vIE5vdGUg
dGhhdCB0aGUgdGV4dHVyZSBpcyBpbiBCR1JBIGZvcm1hdAorICAgICAgICBFWFBFQ1RfUElYRUxf
RVEoMCwgMCwgMjU1LCAwLCAwLCAyNTUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBSZWQKKyAgICAgICAgRVhQRUNUX1BJWEVMX0VRKG1XaW5kb3dXaWR0aCAtIDEsIDAsIDAs
IDI1NSwgMCwgMjU1KTsgICAgICAgICAgICAgICAgICAgLy8gR3JlZW4KKyAgICAgICAgRVhQRUNU
X1BJWEVMX0VRKDAsIG1XaW5kb3dXaWR0aCAtIDEsIDAsIDAsIDI1NSwgMjU1KTsgICAgICAgICAg
ICAgICAgICAgLy8gQmx1ZQorICAgICAgICBFWFBFQ1RfUElYRUxfRVEobVdpbmRvd1dpZHRoIC0g
MSwgbVdpbmRvd1dpZHRoIC0gMSwgMjU1LCAyNTUsIDAsIDI1NSk7ICAvLyBSZWQgKyBncmVlbgor
ICAgIH0KKworICAgIHZvaWQgY2hlY2tQaXhlbHNVc2luZ0QzRChib29sIHVzaW5nUHJlc2VudFBh
dGhGYXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUX05FKG51bGxwdHIsIG1PZmZzY3JlZW5TdXJm
YWNlRDNEMTFUZXh0dXJlKTsKKworICAgICAgICBEM0QxMV9URVhUVVJFMkRfREVTQyB0ZXh0dXJl
RGVzYyA9IHswfTsKKyAgICAgICAgSUQzRDExRGV2aWNlICpkZXZpY2U7CisgICAgICAgIElEM0Qx
MURldmljZUNvbnRleHQgKmNvbnRleHQ7CisgICAgICAgIG1PZmZzY3JlZW5TdXJmYWNlRDNEMTFU
ZXh0dXJlLT5HZXREZXNjKCZ0ZXh0dXJlRGVzYyk7CisgICAgICAgIG1PZmZzY3JlZW5TdXJmYWNl
RDNEMTFUZXh0dXJlLT5HZXREZXZpY2UoJmRldmljZSk7CisgICAgICAgIGRldmljZS0+R2V0SW1t
ZWRpYXRlQ29udGV4dCgmY29udGV4dCk7CisgICAgICAgIEFTU0VSVF9ORShudWxscHRyLCBkZXZp
Y2UpOworICAgICAgICBBU1NFUlRfTkUobnVsbHB0ciwgY29udGV4dCk7CisKKyAgICAgICAgdGV4
dHVyZURlc2MuQ1BVQWNjZXNzRmxhZ3MgID0gRDNEMTFfQ1BVX0FDQ0VTU19SRUFEOworICAgICAg
ICB0ZXh0dXJlRGVzYy5Vc2FnZSAgICAgICAgICAgPSBEM0QxMV9VU0FHRV9TVEFHSU5HOworICAg
ICAgICB0ZXh0dXJlRGVzYy5CaW5kRmxhZ3MgICAgICAgPSAwOworICAgICAgICB0ZXh0dXJlRGVz
Yy5NaXNjRmxhZ3MgICAgICAgPSAwOworICAgICAgICBJRDNEMTFUZXh0dXJlMkQgKmNwdVRleHR1
cmUgPSBudWxscHRyOworICAgICAgICBBU1NFUlRfVFJVRShTVUNDRUVERUQoZGV2aWNlLT5DcmVh
dGVUZXh0dXJlMkQoJnRleHR1cmVEZXNjLCBudWxscHRyLCAmY3B1VGV4dHVyZSkpKTsKKworICAg
ICAgICBjb250ZXh0LT5Db3B5UmVzb3VyY2UoY3B1VGV4dHVyZSwgbU9mZnNjcmVlblN1cmZhY2VE
M0QxMVRleHR1cmUpOworCisgICAgICAgIEQzRDExX01BUFBFRF9TVUJSRVNPVVJDRSBtYXBwZWRT
dWJyZXNvdXJjZTsKKyAgICAgICAgY29udGV4dC0+TWFwKGNwdVRleHR1cmUsIDAsIEQzRDExX01B
UF9SRUFELCAwLCAmbWFwcGVkU3VicmVzb3VyY2UpOworICAgICAgICBBU1NFUlRfRVEoc3RhdGlj
X2Nhc3Q8VUlOVD4obVdpbmRvd1dpZHRoICogNCksIG1hcHBlZFN1YnJlc291cmNlLlJvd1BpdGNo
KTsKKyAgICAgICAgQVNTRVJUX0VRKHN0YXRpY19jYXN0PFVJTlQ+KG1XaW5kb3dXaWR0aCAqIG1X
aW5kb3dXaWR0aCAqIDQpLCBtYXBwZWRTdWJyZXNvdXJjZS5EZXB0aFBpdGNoKTsKKworICAgICAg
ICBhbmdsZTo6R0xDb2xvciAqYnl0ZURhdGEgPSByZWludGVycHJldF9jYXN0PGFuZ2xlOjpHTENv
bG9yICo+KG1hcHBlZFN1YnJlc291cmNlLnBEYXRhKTsKKworICAgICAgICAvLyBOb3RlIHRoYXQg
dGhlIHRleHR1cmUgaXMgaW4gQkdSQSBmb3JtYXQsIGFsdGhvdWdoIHRoZSBHTENvbG9yIHN0cnVj
dCBpcyBSR0JBCisgICAgICAgIEdMQ29sb3IgZXhwZWN0ZWRUb3BMZWZ0UGl4ZWwgICAgID0gR0xD
b2xvcigwLCAgIDAsIDI1NSwgMjU1KTsgIC8vIFJlZAorICAgICAgICBHTENvbG9yIGV4cGVjdGVk
VG9wUmlnaHRQaXhlbCAgICA9IEdMQ29sb3IoMCwgMjU1LCAgIDAsIDI1NSk7ICAvLyBHcmVlbgor
ICAgICAgICBHTENvbG9yIGV4cGVjdGVkQm90dG9tTGVmdFBpeGVsICA9IEdMQ29sb3IoMjU1LCAw
LCAgIDAsIDI1NSk7ICAvLyBCbHVlCisgICAgICAgIEdMQ29sb3IgZXhwZWN0ZWRCb3R0b21SaWdo
dFBpeGVsID0gR0xDb2xvcigwLCAyNTUsIDI1NSwgMjU1KTsgIC8vIFJlZCArIEdyZWVuCisKKyAg
ICAgICAgaWYgKHVzaW5nUHJlc2VudFBhdGhGYXN0KQorICAgICAgICB7CisgICAgICAgICAgICAv
LyBJbnZlcnQgdGhlIGV4cGVjdGVkIHZhbHVlcworICAgICAgICAgICAgR0xDb2xvciB0ZW1wVG9w
TGVmdCAgICAgID0gZXhwZWN0ZWRUb3BMZWZ0UGl4ZWw7CisgICAgICAgICAgICBHTENvbG9yIHRl
bXBUb3BSaWdodCAgICAgPSBleHBlY3RlZFRvcFJpZ2h0UGl4ZWw7CisgICAgICAgICAgICBleHBl
Y3RlZFRvcExlZnRQaXhlbCAgICAgPSBleHBlY3RlZEJvdHRvbUxlZnRQaXhlbDsKKyAgICAgICAg
ICAgIGV4cGVjdGVkVG9wUmlnaHRQaXhlbCAgICA9IGV4cGVjdGVkQm90dG9tUmlnaHRQaXhlbDsK
KyAgICAgICAgICAgIGV4cGVjdGVkQm90dG9tTGVmdFBpeGVsICA9IHRlbXBUb3BMZWZ0OworICAg
ICAgICAgICAgZXhwZWN0ZWRCb3R0b21SaWdodFBpeGVsID0gdGVtcFRvcFJpZ2h0OworICAgICAg
ICB9CisKKyAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkVG9wTGVmdFBpeGVsLCBieXRlRGF0YVsw
XSk7CisgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZFRvcFJpZ2h0UGl4ZWwsIGJ5dGVEYXRhWyht
V2luZG93V2lkdGggLSAxKV0pOworICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRCb3R0b21MZWZ0
UGl4ZWwsIGJ5dGVEYXRhWyhtV2luZG93V2lkdGggLSAxKSAqIG1XaW5kb3dXaWR0aF0pOworICAg
ICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRCb3R0b21SaWdodFBpeGVsLAorICAgICAgICAgICAgICAg
ICAgYnl0ZURhdGFbKG1XaW5kb3dXaWR0aCAtIDEpICogbVdpbmRvd1dpZHRoICsgKG1XaW5kb3dX
aWR0aCAtIDEpXSk7CisKKyAgICAgICAgY29udGV4dC0+VW5tYXAoY3B1VGV4dHVyZSwgMCk7Cisg
ICAgICAgIFNhZmVSZWxlYXNlKGNwdVRleHR1cmUpOworICAgICAgICBTYWZlUmVsZWFzZShkZXZp
Y2UpOworICAgICAgICBTYWZlUmVsZWFzZShjb250ZXh0KTsKKyAgICB9CisKKyAgICBFR0xEaXNw
bGF5IG1EaXNwbGF5OworICAgIEVHTENvbnRleHQgbUNvbnRleHQ7CisgICAgRUdMU3VyZmFjZSBt
U3VyZmFjZTsKKyAgICBJRDNEMTFUZXh0dXJlMkQgKm1PZmZzY3JlZW5TdXJmYWNlRDNEMTFUZXh0
dXJlOworICAgIEVHTENvbmZpZyBtQ29uZmlnOworICAgIE9TV2luZG93ICptT1NXaW5kb3c7Cisg
ICAgR0xpbnQgbVdpbmRvd1dpZHRoOworfTsKKworLy8gVGVzdCB0aGF0IHJlbmRlcmluZyBiYXNp
YyBjb250ZW50IG9udG8gYSB3aW5kb3cgc3VyZmFjZSB3aGVuIHByZXNlbnQgcGF0aCBmYXN0Cisv
LyBpcyBlbmFibGVkIHdvcmtzIGFzIGV4cGVjdGVkCitURVNUX1AoRUdMUHJlc2VudFBhdGhEM0Qx
MSwgV2luZG93UHJlc2VudFBhdGhGYXN0KQoreworICAgIGluaXRpYWxpemVFR0wodHJ1ZSk7Cisg
ICAgY3JlYXRlV2luZG93U3VyZmFjZSgpOworICAgIG1ha2VDdXJyZW50KCk7CisKKyAgICBkcmF3
UXVhZFVzaW5nR0woKTsKKworICAgIGNoZWNrUGl4ZWxzVXNpbmdHTCgpOworfQorCisvLyBUZXN0
IHRoYXQgcmVuZGVyaW5nIGJhc2ljIGNvbnRlbnQgb250byBhIGNsaWVudCBidWZmZXIgc3VyZmFj
ZSB3aGVuIHByZXNlbnQgcGF0aCBmYXN0CisvLyB3b3JrcyBhcyBleHBlY3RlZCwgYW5kIGlzIGFs
c28gb3JpZW50ZWQgdGhlIGNvcnJlY3Qgd2F5IGFyb3VuZAorVEVTVF9QKEVHTFByZXNlbnRQYXRo
RDNEMTEsIENsaWVudEJ1ZmZlclByZXNlbnRQYXRoRmFzdCkKK3sKKyAgICBpbml0aWFsaXplRUdM
KHRydWUpOworICAgIGNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyU3VyZmFjZSgpOworICAg
IG1ha2VDdXJyZW50KCk7CisKKyAgICBkcmF3UXVhZFVzaW5nR0woKTsKKworICAgIGNoZWNrUGl4
ZWxzVXNpbmdHTCgpOworICAgIGNoZWNrUGl4ZWxzVXNpbmdEM0QodHJ1ZSk7Cit9CisKKy8vIFRl
c3QgdGhhdCByZW5kZXJpbmcgYmFzaWMgY29udGVudCBvbnRvIGEgd2luZG93IHN1cmZhY2Ugd2hl
biBwcmVzZW50IHBhdGggZmFzdAorLy8gaXMgZGlzYWJsZWQgd29ya3MgYXMgZXhwZWN0ZWQKK1RF
U1RfUChFR0xQcmVzZW50UGF0aEQzRDExLCBXaW5kb3dQcmVzZW50UGF0aENvcHkpCit7CisgICAg
aW5pdGlhbGl6ZUVHTChmYWxzZSk7CisgICAgY3JlYXRlV2luZG93U3VyZmFjZSgpOworICAgIG1h
a2VDdXJyZW50KCk7CisKKyAgICBkcmF3UXVhZFVzaW5nR0woKTsKKworICAgIGNoZWNrUGl4ZWxz
VXNpbmdHTCgpOworfQorCisvLyBUZXN0IHRoYXQgcmVuZGVyaW5nIGJhc2ljIGNvbnRlbnQgb250
byBhIGNsaWVudCBidWZmZXIgc3VyZmFjZSB3aGVuIHByZXNlbnQgcGF0aAorLy8gZmFzdCBpcyBk
aXNhYmxlZCB3b3JrcyBhcyBleHBlY3RlZCwgYW5kIGlzIGFsc28gb3JpZW50ZWQgdGhlIGNvcnJl
Y3Qgd2F5IGFyb3VuZAorVEVTVF9QKEVHTFByZXNlbnRQYXRoRDNEMTEsIENsaWVudEJ1ZmZlclBy
ZXNlbnRQYXRoQ29weSkKK3sKKyAgICBpbml0aWFsaXplRUdMKGZhbHNlKTsKKyAgICBjcmVhdGVQ
YnVmZmVyRnJvbUNsaWVudEJ1ZmZlclN1cmZhY2UoKTsKKyAgICBtYWtlQ3VycmVudCgpOworCisg
ICAgZHJhd1F1YWRVc2luZ0dMKCk7CisKKyAgICBjaGVja1BpeGVsc1VzaW5nR0woKTsKKyAgICBj
aGVja1BpeGVsc1VzaW5nRDNEKGZhbHNlKTsKK30KKworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChF
R0xQcmVzZW50UGF0aEQzRDExLCBFUzJfRDNEMTEoKSwgRVMyX0QzRDExX0ZMOV8zKCkpOwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9lZ2xfdGVzdHMvRUdMUXVlcnlDb250ZXh0VGVzdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xRdWVyeUNvbnRl
eHRUZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZWdsX3Rlc3RzL0VHTFF1ZXJ5Q29udGV4dFRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTUzIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
CisKKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgorCisjaW5j
bHVkZSAidGVzdF91dGlscy9hbmdsZV90ZXN0X2NvbmZpZ3MuaCIKKwordXNpbmcgbmFtZXNwYWNl
IGFuZ2xlOworCitjbGFzcyBFR0xRdWVyeUNvbnRleHRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3RXaXRoUGFyYW08UGxhdGZvcm1QYXJhbWV0ZXJzPgoreworICBwdWJsaWM6CisgICAgdm9pZCBT
ZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpbnQgY2xpZW50VmVyc2lvbiA9IEdldFBh
cmFtKCkubWFqb3JWZXJzaW9uOworCisgICAgICAgIFBGTkVHTEdFVFBMQVRGT1JNRElTUExBWUVY
VFBST0MgZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUID0gcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xH
RVRQTEFURk9STURJU1BMQVlFWFRQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZWdsR2V0UGxhdGZv
cm1EaXNwbGF5RVhUIikpOworICAgICAgICBFWFBFQ1RfVFJVRShlZ2xHZXRQbGF0Zm9ybURpc3Bs
YXlFWFQgIT0gTlVMTCk7CisKKyAgICAgICAgRUdMaW50IGRpc3BhdHRyc1tdID0KKyAgICAgICAg
eworICAgICAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfQU5HTEUsIEdldFBhcmFtKCku
Z2V0UmVuZGVyZXIoKSwKKyAgICAgICAgICAgIEVHTF9OT05FCisgICAgICAgIH07CisgICAgICAg
IG1EaXNwbGF5ID0gZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUKAorICAgICAgICAgICAgRUdMX1BM
QVRGT1JNX0FOR0xFX0FOR0xFLCByZWludGVycHJldF9jYXN0PHZvaWQgKj4oRUdMX0RFRkFVTFRf
RElTUExBWSksIGRpc3BhdHRycyk7CisgICAgICAgIEVYUEVDVF9UUlVFKG1EaXNwbGF5ICE9IEVH
TF9OT19ESVNQTEFZKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoZWdsSW5pdGlhbGl6ZShtRGlzcGxh
eSwgTlVMTCwgTlVMTCkgIT0gRUdMX0ZBTFNFKTsKKworICAgICAgICBFR0xpbnQgbmNmZzsKKyAg
ICAgICAgRUdMaW50IGNmZ2F0dHJzW10gPQorICAgICAgICB7CisgICAgICAgICAgICBFR0xfUkVE
X1NJWkUsIDgsCisgICAgICAgICAgICBFR0xfR1JFRU5fU0laRSwgOCwKKyAgICAgICAgICAgIEVH
TF9CTFVFX1NJWkUsIDgsCisgICAgICAgICAgICBFR0xfUkVOREVSQUJMRV9UWVBFLCBjbGllbnRW
ZXJzaW9uID09IDMgPyBFR0xfT1BFTkdMX0VTM19CSVQgOiBFR0xfT1BFTkdMX0VTMl9CSVQsCisg
ICAgICAgICAgICBFR0xfU1VSRkFDRV9UWVBFLCBFR0xfUEJVRkZFUl9CSVQsCisgICAgICAgICAg
ICBFR0xfTk9ORQorICAgICAgICB9OworICAgICAgICBFWFBFQ1RfVFJVRShlZ2xDaG9vc2VDb25m
aWcobURpc3BsYXksIGNmZ2F0dHJzLCAmbUNvbmZpZywgMSwgJm5jZmcpICE9IEVHTF9GQUxTRSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKG5jZmcgPT0gMSk7CisKKyAgICAgICAgRUdMaW50IGN0eGF0
dHJzW10gPQorICAgICAgICB7CisgICAgICAgICAgICBFR0xfQ09OVEVYVF9DTElFTlRfVkVSU0lP
TiwgY2xpZW50VmVyc2lvbiwKKyAgICAgICAgICAgIEVHTF9OT05FCisgICAgICAgIH07CisgICAg
ICAgIG1Db250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChtRGlzcGxheSwgbUNvbmZpZywgTlVMTCwg
Y3R4YXR0cnMpOworICAgICAgICBFWFBFQ1RfVFJVRShtQ29udGV4dCAhPSBFR0xfTk9fQ09OVEVY
VCk7CisKKyAgICAgICAgRUdMaW50IHN1cmZhdHRyc1tdID0KKyAgICAgICAgeworICAgICAgICAg
ICAgRUdMX1dJRFRILCAxNiwKKyAgICAgICAgICAgIEVHTF9IRUlHSFQsIDE2LAorICAgICAgICAg
ICAgRUdMX05PTkUKKyAgICAgICAgfTsKKyAgICAgICAgbVN1cmZhY2UgPSBlZ2xDcmVhdGVQYnVm
ZmVyU3VyZmFjZShtRGlzcGxheSwgbUNvbmZpZywgc3VyZmF0dHJzKTsKKyAgICAgICAgRVhQRUNU
X1RSVUUobVN1cmZhY2UgIT0gRUdMX05PX1NVUkZBQ0UpOworICAgIH0KKworICAgIHZvaWQgVGVh
ckRvd24oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgZWdsTWFrZUN1cnJlbnQobURpc3BsYXks
IEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOworICAgICAg
ICBlZ2xEZXN0cm95Q29udGV4dChtRGlzcGxheSwgbUNvbnRleHQpOworICAgICAgICBlZ2xEZXN0
cm95U3VyZmFjZShtRGlzcGxheSwgbVN1cmZhY2UpOworICAgICAgICBlZ2xUZXJtaW5hdGUobURp
c3BsYXkpOworICAgIH0KKworICAgIEVHTERpc3BsYXkgbURpc3BsYXk7CisgICAgRUdMQ29uZmln
IG1Db25maWc7CisgICAgRUdMQ29udGV4dCBtQ29udGV4dDsKKyAgICBFR0xTdXJmYWNlIG1TdXJm
YWNlOworfTsKKworVEVTVF9QKEVHTFF1ZXJ5Q29udGV4dFRlc3QsIEdldENvbmZpZ0lEKQorewor
ICAgIEVHTGludCBjb25maWdJZCwgY29udGV4dENvbmZpZ0lkOworICAgIEVYUEVDVF9UUlVFKGVn
bEdldENvbmZpZ0F0dHJpYihtRGlzcGxheSwgbUNvbmZpZywgRUdMX0NPTkZJR19JRCwgJmNvbmZp
Z0lkKSAhPSBFR0xfRkFMU0UpOworICAgIEVYUEVDVF9UUlVFKGVnbFF1ZXJ5Q29udGV4dChtRGlz
cGxheSwgbUNvbnRleHQsIEVHTF9DT05GSUdfSUQsICZjb250ZXh0Q29uZmlnSWQpICE9IEVHTF9G
QUxTRSk7CisgICAgRVhQRUNUX1RSVUUoY29uZmlnSWQgPT0gY29udGV4dENvbmZpZ0lkKTsKK30K
KworVEVTVF9QKEVHTFF1ZXJ5Q29udGV4dFRlc3QsIEdldENsaWVudFR5cGUpCit7CisgICAgRUdM
aW50IGNsaWVudFR5cGU7CisgICAgRVhQRUNUX1RSVUUoZWdsUXVlcnlDb250ZXh0KG1EaXNwbGF5
LCBtQ29udGV4dCwgRUdMX0NPTlRFWFRfQ0xJRU5UX1RZUEUsICZjbGllbnRUeXBlKSAhPSBFR0xf
RkFMU0UpOworICAgIEVYUEVDVF9UUlVFKGNsaWVudFR5cGUgPT0gRUdMX09QRU5HTF9FU19BUEkp
OworfQorCitURVNUX1AoRUdMUXVlcnlDb250ZXh0VGVzdCwgR2V0Q2xpZW50VmVyc2lvbikKK3sK
KyAgICBFR0xpbnQgY2xpZW50VmVyc2lvbjsKKyAgICBFWFBFQ1RfVFJVRShlZ2xRdWVyeUNvbnRl
eHQobURpc3BsYXksIG1Db250ZXh0LCBFR0xfQ09OVEVYVF9DTElFTlRfVkVSU0lPTiwgJmNsaWVu
dFZlcnNpb24pICE9IEVHTF9GQUxTRSk7CisgICAgRVhQRUNUX1RSVUUoY2xpZW50VmVyc2lvbiA9
PSBHZXRQYXJhbSgpLm1ham9yVmVyc2lvbik7Cit9CisKK1RFU1RfUChFR0xRdWVyeUNvbnRleHRU
ZXN0LCBHZXRSZW5kZXJCdWZmZXJOb1N1cmZhY2UpCit7CisgICAgRUdMaW50IHJlbmRlckJ1ZmZl
cjsKKyAgICBFWFBFQ1RfVFJVRShlZ2xRdWVyeUNvbnRleHQobURpc3BsYXksIG1Db250ZXh0LCBF
R0xfUkVOREVSX0JVRkZFUiwgJnJlbmRlckJ1ZmZlcikgIT0gRUdMX0ZBTFNFKTsKKyAgICBFWFBF
Q1RfVFJVRShyZW5kZXJCdWZmZXIgPT0gRUdMX05PTkUpOworfQorCitURVNUX1AoRUdMUXVlcnlD
b250ZXh0VGVzdCwgR2V0UmVuZGVyQnVmZmVyQm91bmRTdXJmYWNlKQoreworICAgIEVHTGludCBy
ZW5kZXJCdWZmZXIsIGNvbnRleHRSZW5kZXJCdWZmZXI7CisgICAgRVhQRUNUX1RSVUUoZWdsUXVl
cnlTdXJmYWNlKG1EaXNwbGF5LCBtU3VyZmFjZSwgRUdMX1JFTkRFUl9CVUZGRVIsICZyZW5kZXJC
dWZmZXIpICE9IEVHTF9GQUxTRSk7CisgICAgRVhQRUNUX1RSVUUoZWdsTWFrZUN1cnJlbnQobURp
c3BsYXksIG1TdXJmYWNlLCBtU3VyZmFjZSwgbUNvbnRleHQpICE9IEVHTF9GQUxTRSk7CisgICAg
RVhQRUNUX1RSVUUoZWdsUXVlcnlDb250ZXh0KG1EaXNwbGF5LCBtQ29udGV4dCwgRUdMX1JFTkRF
Ul9CVUZGRVIsICZjb250ZXh0UmVuZGVyQnVmZmVyKSAhPSBFR0xfRkFMU0UpOworICAgIEVYUEVD
VF9UUlVFKHJlbmRlckJ1ZmZlciA9PSBjb250ZXh0UmVuZGVyQnVmZmVyKTsKK30KKworVEVTVF9Q
KEVHTFF1ZXJ5Q29udGV4dFRlc3QsIEJhZERpc3BsYXkpCit7CisgICAgRUdMaW50IHZhbDsKKyAg
ICBFWFBFQ1RfVFJVRShlZ2xRdWVyeUNvbnRleHQoRUdMX05PX0RJU1BMQVksIG1Db250ZXh0LCBF
R0xfQ09OVEVYVF9DTElFTlRfVFlQRSwgJnZhbCkgPT0gRUdMX0ZBTFNFKTsKKyAgICBFWFBFQ1Rf
VFJVRShlZ2xHZXRFcnJvcigpID09IEVHTF9CQURfRElTUExBWSk7Cit9CisKK1RFU1RfUChFR0xR
dWVyeUNvbnRleHRUZXN0LCBOb3RJbml0aWFsaXplZCkKK3sKKyAgICBFR0xpbnQgdmFsOworICAg
IFRlYXJEb3duKCk7CisgICAgRVhQRUNUX1RSVUUoZWdsUXVlcnlDb250ZXh0KG1EaXNwbGF5LCBt
Q29udGV4dCwgRUdMX0NPTlRFWFRfQ0xJRU5UX1RZUEUsICZ2YWwpID09IEVHTF9GQUxTRSk7Cisg
ICAgRVhQRUNUX1RSVUUoZWdsR2V0RXJyb3IoKSA9PSBFR0xfTk9UX0lOSVRJQUxJWkVEKTsKKwor
ICAgIG1EaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7CisgICAgbVN1cmZhY2UgPSBFR0xfTk9fU1VS
RkFDRTsKKyAgICBtQ29udGV4dCA9IEVHTF9OT19DT05URVhUOworfQorCitURVNUX1AoRUdMUXVl
cnlDb250ZXh0VGVzdCwgQmFkQ29udGV4dCkKK3sKKyAgICBFR0xpbnQgdmFsOworICAgIEVYUEVD
VF9UUlVFKGVnbFF1ZXJ5Q29udGV4dChtRGlzcGxheSwgRUdMX05PX0NPTlRFWFQsIEVHTF9DT05U
RVhUX0NMSUVOVF9UWVBFLCAmdmFsKSA9PSBFR0xfRkFMU0UpOworICAgIEVYUEVDVF9UUlVFKGVn
bEdldEVycm9yKCkgPT0gRUdMX0JBRF9DT05URVhUKTsKK30KKworVEVTVF9QKEVHTFF1ZXJ5Q29u
dGV4dFRlc3QsIEJhZEF0dHJpYnV0ZSkKK3sKKyAgICBFR0xpbnQgdmFsOworICAgIEVYUEVDVF9U
UlVFKGVnbFF1ZXJ5Q29udGV4dChtRGlzcGxheSwgbUNvbnRleHQsIEVHTF9IRUlHSFQsICZ2YWwp
ID09IEVHTF9GQUxTRSk7CisgICAgRVhQRUNUX1RSVUUoZWdsR2V0RXJyb3IoKSA9PSBFR0xfQkFE
X0FUVFJJQlVURSk7Cit9CisKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoRUdMUXVlcnlDb250ZXh0
VGVzdCwgRVMyX0QzRDkoKSwgRVMyX0QzRDExKCksIEVTMl9EM0QxMV9GTDlfMygpLCBFUzJfT1BF
TkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19EM0QxMSgpLCBFUzNfT1BFTkdMKCkp
OwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xS
b2J1c3RuZXNzVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xSb2J1c3RuZXNzVGVzdC5jcHAJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xSb2J1c3Ru
ZXNzVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMzQgQEAKKy8vCisvLyBDb3B5
cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworCisvLyBFR0xSb2J1c3RuZXNzVGVzdC5jcHA6IHRlc3RzIGZvciBFR0xfRVhUX2NyZWF0ZV9j
b250ZXh0X3JvYnVzdG5lc3MKKworI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKKyNpbmNsdWRl
IDxFR0wvZWdsLmg+CisjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgorCisjaW5jbHVkZSAiT1NXaW5k
b3cuaCIKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgYW5nbGU7CisKK2NsYXNzIEVHTFJvYnVzdG5lc3NUZXN0IDogcHVibGljIDo6dGVzdGluZzo6
VGVzdFdpdGhQYXJhbTxhbmdsZTo6UGxhdGZvcm1QYXJhbWV0ZXJzPgoreworICBwdWJsaWM6Cisg
ICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBtT1NXaW5kb3cgPSBDcmVh
dGVPU1dpbmRvdygpOworICAgICAgICBtT1NXaW5kb3ctPmluaXRpYWxpemUoIkVHTFJvYnVzdG5l
c3NUZXN0IiwgNTAwLCA1MDApOworICAgICAgICBtT1NXaW5kb3ctPnNldFZpc2libGUodHJ1ZSk7
CisKKyAgICAgICAgYXV0byBlZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQgPSByZWludGVycHJldF9j
YXN0PFBGTkVHTEdFVFBMQVRGT1JNRElTUExBWUVYVFBST0M+KAorICAgICAgICAgICAgZWdsR2V0
UHJvY0FkZHJlc3MoImVnbEdldFBsYXRmb3JtRGlzcGxheUVYVCIpKTsKKworICAgICAgICBjb25z
dCBhdXRvICZwbGF0Zm9ybSA9IEdldFBhcmFtKCkuZWdsUGFyYW1ldGVyczsKKworICAgICAgICBz
dGQ6OnZlY3RvcjxFR0xpbnQ+IGRpc3BsYXlBdHRyaWJ1dGVzOworICAgICAgICBkaXNwbGF5QXR0
cmlidXRlcy5wdXNoX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfQU5HTEUpOworICAgICAg
ICBkaXNwbGF5QXR0cmlidXRlcy5wdXNoX2JhY2socGxhdGZvcm0ucmVuZGVyZXIpOworICAgICAg
ICBkaXNwbGF5QXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX01BWF9WRVJT
SU9OX01BSk9SX0FOR0xFKTsKKyAgICAgICAgZGlzcGxheUF0dHJpYnV0ZXMucHVzaF9iYWNrKHBs
YXRmb3JtLm1ham9yVmVyc2lvbik7CisgICAgICAgIGRpc3BsYXlBdHRyaWJ1dGVzLnB1c2hfYmFj
ayhFR0xfUExBVEZPUk1fQU5HTEVfTUFYX1ZFUlNJT05fTUlOT1JfQU5HTEUpOworICAgICAgICBk
aXNwbGF5QXR0cmlidXRlcy5wdXNoX2JhY2socGxhdGZvcm0ubWlub3JWZXJzaW9uKTsKKworICAg
ICAgICBpZiAocGxhdGZvcm0uZGV2aWNlVHlwZSAhPSBFR0xfRE9OVF9DQVJFKQorICAgICAgICB7
CisgICAgICAgICAgICBkaXNwbGF5QXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX1BMQVRGT1JNX0FO
R0xFX0RFVklDRV9UWVBFX0FOR0xFKTsKKyAgICAgICAgICAgIGRpc3BsYXlBdHRyaWJ1dGVzLnB1
c2hfYmFjayhwbGF0Zm9ybS5kZXZpY2VUeXBlKTsKKyAgICAgICAgfQorCisgICAgICAgIGRpc3Bs
YXlBdHRyaWJ1dGVzLnB1c2hfYmFjayhFR0xfTk9ORSk7CisKKyAgICAgICAgbURpc3BsYXkgPSBl
Z2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQoRUdMX1BMQVRGT1JNX0FOR0xFX0FOR0xFLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZv
aWQgKj4obU9TV2luZG93LT5nZXROYXRpdmVEaXNwbGF5KCkpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmZGlzcGxheUF0dHJpYnV0ZXNbMF0pOworICAgICAg
ICBBU1NFUlRfTkUoRUdMX05PX0RJU1BMQVksIG1EaXNwbGF5KTsKKworICAgICAgICBBU1NFUlRf
VFJVRShlZ2xJbml0aWFsaXplKG1EaXNwbGF5LCBudWxscHRyLCBudWxscHRyKSA9PSBFR0xfVFJV
RSk7CisKKyAgICAgICAgY29uc3QgY2hhciAqZXh0ZW5zaW9ucyA9IGVnbFF1ZXJ5U3RyaW5nKG1E
aXNwbGF5LCBFR0xfRVhURU5TSU9OUyk7CisgICAgICAgIGlmIChzdHJzdHIoZXh0ZW5zaW9ucywg
IkVHTF9FWFRfY3JlYXRlX2NvbnRleHRfcm9idXN0bmVzcyIpID09IG51bGxwdHIpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGR1ZSB0byBtaXNzaW5n
IEVHTF9FWFRfY3JlYXRlX2NvbnRleHRfcm9idXN0bmVzcyIKKyAgICAgICAgICAgICAgICAgICAg
ICA8PCBzdGQ6OmVuZGw7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBpbnQgbkNvbmZpZ3MgPSAwOworICAgICAgICBBU1NFUlRfVFJVRShlZ2xHZXRDb25maWdzKG1E
aXNwbGF5LCBudWxscHRyLCAwLCAmbkNvbmZpZ3MpID09IEVHTF9UUlVFKTsKKyAgICAgICAgQVNT
RVJUX0xFKDEsIG5Db25maWdzKTsKKworICAgICAgICBpbnQgblJldHVybmVkQ29uZmlncyA9IDA7
CisgICAgICAgIEFTU0VSVF9UUlVFKGVnbEdldENvbmZpZ3MobURpc3BsYXksICZtQ29uZmlnLCAx
LCAmblJldHVybmVkQ29uZmlncykgPT0gRUdMX1RSVUUpOworICAgICAgICBBU1NFUlRfRVEoMSwg
blJldHVybmVkQ29uZmlncyk7CisKKyAgICAgICAgbVdpbmRvdyA9IGVnbENyZWF0ZVdpbmRvd1N1
cmZhY2UobURpc3BsYXksIG1Db25maWcsIG1PU1dpbmRvdy0+Z2V0TmF0aXZlV2luZG93KCksIG51
bGxwdHIpOworICAgICAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKworICAgICAgICBtSW5pdGlh
bGl6ZWQgPSB0cnVlOworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgZWdsRGVzdHJveVN1cmZhY2UobURpc3BsYXksIG1XaW5kb3cpOworICAgICAg
ICBlZ2xEZXN0cm95Q29udGV4dChtRGlzcGxheSwgbUNvbnRleHQpOworICAgICAgICBlZ2xNYWtl
Q3VycmVudChtRGlzcGxheSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9f
Q09OVEVYVCk7CisgICAgICAgIGVnbFRlcm1pbmF0ZShtRGlzcGxheSk7CisgICAgICAgIEVYUEVD
VF9FR0xfU1VDQ0VTUygpOworCisgICAgICAgIFNhZmVEZWxldGUobU9TV2luZG93KTsKKyAgICB9
CisKKyAgICB2b2lkIGNyZWF0ZUNvbnRleHQoRUdMaW50IHJlc2V0U3RyYXRlZ3kpCisgICAgewor
ICAgICAgICBjb25zdCBFR0xpbnQgY29udGV4dEF0dHJpYnNbXSA9IHtFR0xfQ09OVEVYVF9DTElF
TlRfVkVSU0lPTiwgMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RUdMX0NPTlRFWFRfT1BFTkdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWV9FWFQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0U3RyYXRlZ3ksIEVHTF9O
T05FfTsKKyAgICAgICAgbUNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KG1EaXNwbGF5LCBtQ29u
ZmlnLCBFR0xfTk9fQ09OVEVYVCwgY29udGV4dEF0dHJpYnMpOworICAgICAgICBBU1NFUlRfTkUo
RUdMX05PX0NPTlRFWFQsIG1Db250ZXh0KTsKKworICAgICAgICBlZ2xNYWtlQ3VycmVudChtRGlz
cGxheSwgbVdpbmRvdywgbVdpbmRvdywgbUNvbnRleHQpOworICAgICAgICBBU1NFUlRfRUdMX1NV
Q0NFU1MoKTsKKworICAgICAgICBjb25zdCBjaGFyICpleHRlbnNpb25TdHJpbmcgPSByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIgKj4oZ2xHZXRTdHJpbmcoR0xfRVhURU5TSU9OUykpOworICAg
ICAgICBBU1NFUlRfTkUobnVsbHB0ciwgc3Ryc3RyKGV4dGVuc2lvblN0cmluZywgIkdMX0FOR0xF
X2luc3RhbmNlZF9hcnJheXMiKSk7CisKKyAgICAgICAgbURyYXdFbGVtZW50c0luc3RhbmNlZEFO
R0xFID0KKyAgICAgICAgICAgIChQRk5HTERSQVdFTEVNRU5UU0lOU1RBTkNFREFOR0xFUFJPQyll
Z2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSIpOworICAgICAg
ICBBU1NFUlRfTkUobnVsbHB0ciwgbURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKTsKKyAgICB9
CisKKyAgICB2b2lkIGZvcmNlQ29udGV4dFJlc2V0KCkKKyAgICB7CisgICAgICAgIC8vIENhdXNl
IGEgR1BVIHJlc2V0IGJ5IGRyYXdpbmcgMTAwLDAwMCwwMDAgZnVsbHNjcmVlbiBxdWFkcworICAg
ICAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKAorICAgICAgICAgICAgImF0dHJp
YnV0ZSB2ZWM0IHBvcztcbiIKKyAgICAgICAgICAgICJ2b2lkIG1haW4oKSB7Z2xfUG9zaXRpb24g
PSBwb3M7fVxuIiwKKyAgICAgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAg
ICAgICAgICAgICJ2b2lkIG1haW4oKSB7Z2xfRnJhZ0NvbG9yID0gdmVjNCgxLjApO31cbiIpOwor
ICAgICAgICBBU1NFUlRfTkUoMHUsIHByb2dyYW0pOworICAgICAgICBnbFVzZVByb2dyYW0ocHJv
Z3JhbSk7CisKKyAgICAgICAgR0xmbG9hdCB2ZXJ0aWNlc1tdID0geworICAgICAgICAgICAgLTEu
MGYsIC0xLjBmLCAwLjBmLCAxLjBmLCAtMS4wZiwgMS4wZiwgMC4wZiwgMS4wZiwKKyAgICAgICAg
ICAgIDEuMGYsICAtMS4wZiwgMC4wZiwgMS4wZiwgMS4wZiwgIDEuMGYsIDAuMGYsIDEuMGYsCisg
ICAgICAgIH07CisKKyAgICAgICAgY29uc3QgaW50IGtOdW1RdWFkcyA9IDEwMDAwOworICAgICAg
ICBzdGQ6OnZlY3RvcjxHTHVzaG9ydD4gaW5kaWNlcyg2ICoga051bVF1YWRzKTsKKworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtOdW1RdWFkczsgaSsrKQorICAgICAgICB7CisgICAg
ICAgICAgICBpbmRpY2VzW2kgKiA2ICsgMF0gPSAwOworICAgICAgICAgICAgaW5kaWNlc1tpICog
NiArIDFdID0gMTsKKyAgICAgICAgICAgIGluZGljZXNbaSAqIDYgKyAyXSA9IDI7CisgICAgICAg
ICAgICBpbmRpY2VzW2kgKiA2ICsgM10gPSAxOworICAgICAgICAgICAgaW5kaWNlc1tpICogNiAr
IDRdID0gMjsKKyAgICAgICAgICAgIGluZGljZXNbaSAqIDYgKyA1XSA9IDM7CisgICAgICAgIH0K
KworICAgICAgICBnbEJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAwLCAicG9zIik7CisgICAg
ICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcigwLCA0LCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIHZl
cnRpY2VzKTsKKyAgICAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKworICAgICAg
ICBnbFZpZXdwb3J0KDAsIDAsIG1PU1dpbmRvdy0+Z2V0V2lkdGgoKSwgbU9TV2luZG93LT5nZXRI
ZWlnaHQoKSk7CisgICAgICAgIGdsQ2xlYXJDb2xvcigxLjAsIDAuMCwgMC4wLCAxLjApOworICAg
ICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAgICAgICBtRHJhd0VsZW1lbnRz
SW5zdGFuY2VkQU5HTEUoR0xfVFJJQU5HTEVTLCBrTnVtUXVhZHMgKiA2LCBHTF9VTlNJR05FRF9T
SE9SVCwgaW5kaWNlcy5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxMDAwMCk7CisKKyAgICAgICAgZ2xGaW5pc2goKTsKKyAgICB9CisKKyAgcHJvdGVjdGVkOgor
ICAgIEVHTERpc3BsYXkgbURpc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEVHTF9OT19ESVNQTEFZOworICAgIEVHTFN1cmZhY2UgbVdpbmRvdyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEVHTF9OT19TVVJGQUNF
OworICAgIGJvb2wgbUluaXRpYWxpemVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IGZhbHNlOworICAgIFBGTkdMRFJBV0VMRU1FTlRTSU5TVEFOQ0VEQU5H
TEVQUk9DIG1EcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IG51bGxwdHI7CisKKyAgcHJpdmF0
ZToKKyAgICBFR0xDb250ZXh0IG1Db250ZXh0ID0gRUdMX05PX0NPTlRFWFQ7CisgICAgRUdMQ29u
ZmlnIG1Db25maWcgICA9IDA7CisgICAgT1NXaW5kb3cgKm1PU1dpbmRvdyA9IG51bGxwdHI7Cit9
OworCisvLyBDaGVjayBnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQgcmV0dXJucyBHTF9OT19F
UlJPUiBpZiB3ZSBkaWQgbm90aGluZworVEVTVF9QKEVHTFJvYnVzdG5lc3NUZXN0LCBOb0Vycm9y
QnlEZWZhdWx0KQoreworICAgIGlmICghbUluaXRpYWxpemVkKQorICAgIHsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBBU1NFUlRfVFJVRShnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQo
KSA9PSBHTF9OT19FUlJPUik7Cit9CisKKy8vIENoZWNrcyB0aGF0IHRoZSBhcHBsaWNhdGlvbiBn
ZXRzIG5vIGxvc3Mgd2l0aCBOT19SRVNFVF9OT1RJRklDQVRJT04KK1RFU1RfUChFR0xSb2J1c3Ru
ZXNzVGVzdCwgRElTQUJMRURfTm9SZXNldE5vdGlmaWNhdGlvbikKK3sKKyAgICBpZiAoIW1Jbml0
aWFsaXplZCkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjcmVhdGVDb250
ZXh0KEVHTF9OT19SRVNFVF9OT1RJRklDQVRJT05fRVhUKTsKKworICAgIGlmICghSXNXaW5kb3dz
KCkpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3QgZGlzYWJsZWQgb24gbm9uIFdp
bmRvd3MgcGxhdGZvcm1zIGJlY2F1c2UgZHJpdmVycyBjYW4ndCByZWNvdmVyLiAiCisgICAgICAg
ICAgICAgICAgICA8PCAiU2VlICIgPDwgX19GSUxFX18gPDwgIjoiIDw8IF9fTElORV9fIDw8IHN0
ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBzdGQ6OmNvdXQgPDwgIkNhdXNp
bmcgYSBHUFUgcmVzZXQsIGJyYWNlIGZvciBpbXBhY3QuIiA8PCBzdGQ6OmVuZGw7CisKKyAgICBm
b3JjZUNvbnRleHRSZXNldCgpOworICAgIEFTU0VSVF9UUlVFKGdsR2V0R3JhcGhpY3NSZXNldFN0
YXR1c0VYVCgpID09IEdMX05PX0VSUk9SKTsKK30KKworLy8gQ2hlY2tzIHRoYXQgcmVzZXR0aW5n
IHRoZSBBTkdMRSBkaXNwbGF5IGFsbG93cyB0byBnZXQgcmlkIG9mIHRoZSBjb250ZXh0IGxvc3Mu
CisvLyBBbHNvIGNoZWNrcyB0aGF0IHRoZSBhcHBsaWNhdGlvbiBnZXRzIG5vdGlmaWVkIG9mIHRo
ZSBsb3NzIG9mIHRoZSBkaXNwbGF5LgorLy8gV2UgY29hbGVzY2UgYm90aCB0ZXN0cyB0byByZWR1
Y2UgdGhlIG51bWJlciBvZiBURFJzIGRvbmUgb24gV2luZG93czogYnkgZGVmYXVsdAorLy8gaGF2
aW5nIG1vcmUgdGhhbiA1IFREUnMgaW4gYSBtaW51dGUgd2lsbCBjYXVzZSBXaW5kb3dzIHRvIGRp
c2FibGUgdGhlIEdQVSB1bnRpbAorLy8gdGhlIGNvbXB1dGVyIGlzIHJlYm9vdGVkLgorVEVTVF9Q
KEVHTFJvYnVzdG5lc3NUZXN0LCBESVNBQkxFRF9SZXNldHRpbmdEaXNwbGF5V29ya3MpCit7Cisg
ICAgaWYgKCFtSW5pdGlhbGl6ZWQpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgY3JlYXRlQ29udGV4dChFR0xfTE9TRV9DT05URVhUX09OX1JFU0VUX0VYVCk7CisKKyAgICBp
ZiAoIUlzV2luZG93cygpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2Fi
bGVkIG9uIG5vbiBXaW5kb3dzIHBsYXRmb3JtcyBiZWNhdXNlIGRyaXZlcnMgY2FuJ3QgcmVjb3Zl
ci4gIgorICAgICAgICAgICAgICAgICAgPDwgIlNlZSAiIDw8IF9fRklMRV9fIDw8ICI6IiA8PCBf
X0xJTkVfXyA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgc3RkOjpj
b3V0IDw8ICJDYXVzaW5nIGEgR1BVIHJlc2V0LCBicmFjZSBmb3IgaW1wYWN0LiIgPDwgc3RkOjpl
bmRsOworCisgICAgZm9yY2VDb250ZXh0UmVzZXQoKTsKKyAgICBBU1NFUlRfVFJVRShnbEdldEdy
YXBoaWNzUmVzZXRTdGF0dXNFWFQoKSAhPSBHTF9OT19FUlJPUik7CisKKyAgICBUZWFyRG93bigp
OworICAgIFNldFVwKCk7CisgICAgQVNTRVJUX1RSVUUoZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVz
RVhUKCkgPT0gR0xfTk9fRVJST1IpOworfQorCisvLyBUZXN0cyBjYXVzaW5nIEdQVSByZXNldHMg
YXJlIGRpc2FibGVkLCB1c2UgdGhlIGZvbGxvd2luZyBhcmdzIHRvIHJ1biB0aGVtOgorLy8gLS1n
dGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyAtLWd0ZXN0X2ZpbHRlcj1FR0xSb2J1c3RuZXNz
VGVzdFwqCisKKy8vIE5vdGUgdGhhdCBvbiBXaW5kb3dzIHRoZSBPcGVuR0wgZHJpdmVyIGZhaWxz
IGhhcmQgKHBvcHVwIHRoYXQgY2xvc2VzIHRoZSBhcHBsaWNhdGlvbikKKy8vIGlmIHRoZXJlIHdh
cyBhIFREUiBjYXVzZWQgYnkgRDNEIHNvIHdlIGRvbid0IHJ1biBEM0QgdGVzdHMgYXQgdGhlIHNh
bWUgdGltZSBhcyB0aGUgT3BlbkdMIHRlc3RzLgorI2RlZmluZSBEM0RfSEFTX1BSSU9SSVRZIDEK
KyNpZiBEM0RfSEFTX1BSSU9SSVRZICYmIChkZWZpbmVkKEFOR0xFX0VOQUJMRV9EM0Q5KSB8fCBk
ZWZpbmVkKEFOR0xFX0VOQUJMRV9EM0QxMSkpCitBTkdMRV9JTlNUQU5USUFURV9URVNUKEVHTFJv
YnVzdG5lc3NUZXN0LCBFUzJfRDNEOSgpLCBFUzJfRDNEMTEoKSk7CisjZWxzZQorQU5HTEVfSU5T
VEFOVElBVEVfVEVTVChFR0xSb2J1c3RuZXNzVGVzdCwgRVMyX09QRU5HTCgpKTsKKyNlbmRpZgpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xTYW5p
dHlDaGVja1Rlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9lZ2xfdGVzdHMvRUdMU2FuaXR5Q2hlY2tUZXN0LmNwcAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFNhbml0eUNo
ZWNrVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMCBAQAorLy8KKy8vIENvcHly
aWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKwor
Ly8gRUdMU2FuaXR5Q2hlY2tUZXN0LmNwcDoKKy8vICAgICAgdGVzdHMgdXNlZCB0byBjaGVjayBz
ZXR1cCBpbiB3aGljaCB0ZXN0cyBhcmUgcnVuLgorCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K
KworI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKKy8vIENoZWNrcyB0aGUgdGVz
dHMgYXJlIHJ1bm5pbmcgYWdhaW5zdCBBTkdMRQorVEVTVChFR0xTYW5pdHlDaGVja1Rlc3QsIElz
UnVubmluZ09uQU5HTEUpCit7CisgICAgY29uc3QgY2hhciAqZXh0ZW5zaW9uU3RyaW5nID0KKyAg
ICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhciAqPihlZ2xRdWVyeVN0cmluZyhFR0xfTk9fRElT
UExBWSwgRUdMX0VYVEVOU0lPTlMpKTsKKyAgICBBU1NFUlRfTkUoc3Ryc3RyKGV4dGVuc2lvblN0
cmluZywgIkVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZSIpLCBudWxscHRyKTsKK30KKworLy8gQ2hl
Y2tzIHRoYXQgZ2V0dGluZyBmdW5jdGlvbiBwb2ludGVyIHdvcmtzCitURVNUKEVHTFNhbml0eUNo
ZWNrVGVzdCwgSGFzR2V0UGxhdGZvcm1EaXNwbGF5RVhUKQoreworICAgIFBGTkVHTEdFVFBMQVRG
T1JNRElTUExBWUVYVFBST0MgZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUID0KKyAgICAgICAgcmVp
bnRlcnByZXRfY2FzdDxQRk5FR0xHRVRQTEFURk9STURJU1BMQVlFWFRQUk9DPigKKyAgICAgICAg
ICAgIGVnbEdldFByb2NBZGRyZXNzKCJlZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQiKSk7CisKKyAg
ICBBU1NFUlRfTkUoZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhULCBudWxscHRyKTsKK30KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMU3RyZWFtVGVz
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2Vn
bF90ZXN0cy9FR0xTdHJlYW1UZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFN0cmVhbVRlc3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNTQ3IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gRUdMU3RyZWFtVGVzdDoKKy8v
ICAgVGVzdHMgcGVydGFpbmluZyB0byBlZ2w6OlN0cmVhbS4KKy8vCisKKyNpbmNsdWRlIDxndGVz
dC9ndGVzdC5oPgorCisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAibWVkaWEveXV2dGVz
dC5pbmwiCisjaW5jbHVkZSAiT1NXaW5kb3cuaCIKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xF
VGVzdC5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKK25hbWVzcGFjZQoreworCitjbGFz
cyBFR0xTdHJlYW1UZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAg
RUdMU3RyZWFtVGVzdCgpCisgICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOworICAg
ICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKKyAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsK
KyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAgICBzZXRDb25maWdCbHVlQml0
cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAgICAgICBzZXRDb25maWdE
ZXB0aEJpdHMoMjQpOworICAgIH0KK307CisKKy8vIFRlc3RzIHZhbGlkYXRpb24gb2YgdGhlIHN0
cmVhbSBBUEkKK1RFU1RfUChFR0xTdHJlYW1UZXN0LCBTdHJlYW1WYWxpZGF0aW9uVGVzdCkKK3sK
KyAgICBFR0xXaW5kb3cgKndpbmRvdyAgICAgICAgICAgID0gZ2V0RUdMV2luZG93KCk7CisgICAg
RUdMRGlzcGxheSBkaXNwbGF5ICAgICAgICAgICA9IHdpbmRvdy0+Z2V0RGlzcGxheSgpOworICAg
IGNvbnN0IGNoYXIgKmV4dGVuc2lvbnNTdHJpbmcgPSBlZ2xRdWVyeVN0cmluZyhkaXNwbGF5LCBF
R0xfRVhURU5TSU9OUyk7CisgICAgaWYgKHN0cnN0cihleHRlbnNpb25zU3RyaW5nLCAiRUdMX0tI
Ul9zdHJlYW0iKSA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJTdHJl
YW0gZXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGNvbnN0IEVHTGludCBzdHJlYW1BdHRyaWJ1dGVzQmFkW10gPSB7Cisg
ICAgICAgIEVHTF9TVFJFQU1fU1RBVEVfS0hSLAorICAgICAgICAwLAorICAgICAgICBFR0xfTk9O
RSwKKyAgICAgICAgRUdMX1BST0RVQ0VSX0ZSQU1FX0tIUiwKKyAgICAgICAgMCwKKyAgICAgICAg
RUdMX05PTkUsCisgICAgICAgIEVHTF9DT05TVU1FUl9GUkFNRV9LSFIsCisgICAgICAgIDAsCisg
ICAgICAgIEVHTF9OT05FLAorICAgICAgICBFR0xfQ09OU1VNRVJfTEFURU5DWV9VU0VDX0tIUiwK
KyAgICAgICAgLTEsCisgICAgICAgIEVHTF9OT05FLAorICAgICAgICBFR0xfUkVEX1NJWkUsCisg
ICAgICAgIEVHTF9ET05UX0NBUkUsCisgICAgICAgIEVHTF9OT05FLAorICAgIH07CisKKyAgICAv
LyBWYWxpZGF0ZSBjcmVhdGUgc3RyZWFtIGF0dHJpYnV0ZXMKKyAgICBFR0xTdHJlYW1LSFIgc3Ry
ZWFtID0gZWdsQ3JlYXRlU3RyZWFtS0hSKGRpc3BsYXksICZzdHJlYW1BdHRyaWJ1dGVzQmFkWzBd
KTsKKyAgICBBU1NFUlRfRUdMX0VSUk9SKEVHTF9CQURfQUNDRVNTKTsKKyAgICBBU1NFUlRfRVEo
RUdMX05PX1NUUkVBTV9LSFIsIHN0cmVhbSk7CisKKyAgICBzdHJlYW0gPSBlZ2xDcmVhdGVTdHJl
YW1LSFIoZGlzcGxheSwgJnN0cmVhbUF0dHJpYnV0ZXNCYWRbM10pOworICAgIEFTU0VSVF9FR0xf
RVJST1IoRUdMX0JBRF9BQ0NFU1MpOworICAgIEFTU0VSVF9FUShFR0xfTk9fU1RSRUFNX0tIUiwg
c3RyZWFtKTsKKworICAgIHN0cmVhbSA9IGVnbENyZWF0ZVN0cmVhbUtIUihkaXNwbGF5LCAmc3Ry
ZWFtQXR0cmlidXRlc0JhZFs2XSk7CisgICAgQVNTRVJUX0VHTF9FUlJPUihFR0xfQkFEX0FDQ0VT
Uyk7CisgICAgQVNTRVJUX0VRKEVHTF9OT19TVFJFQU1fS0hSLCBzdHJlYW0pOworCisgICAgc3Ry
ZWFtID0gZWdsQ3JlYXRlU3RyZWFtS0hSKGRpc3BsYXksICZzdHJlYW1BdHRyaWJ1dGVzQmFkWzld
KTsKKyAgICBBU1NFUlRfRUdMX0VSUk9SKEVHTF9CQURfUEFSQU1FVEVSKTsKKyAgICBBU1NFUlRf
RVEoRUdMX05PX1NUUkVBTV9LSFIsIHN0cmVhbSk7CisKKyAgICBzdHJlYW0gPSBlZ2xDcmVhdGVT
dHJlYW1LSFIoZGlzcGxheSwgJnN0cmVhbUF0dHJpYnV0ZXNCYWRbMTJdKTsKKyAgICBBU1NFUlRf
RUdMX0VSUk9SKEVHTF9CQURfQVRUUklCVVRFKTsKKyAgICBBU1NFUlRfRVEoRUdMX05PX1NUUkVB
TV9LSFIsIHN0cmVhbSk7CisKKyAgICBjb25zdCBFR0xpbnQgc3RyZWFtQXR0cmlidXRlc1tdID0g
eworICAgICAgICBFR0xfQ09OU1VNRVJfTEFURU5DWV9VU0VDX0tIUiwgMCwgRUdMX05PTkUsCisg
ICAgfTsKKworICAgIHN0cmVhbSA9IGVnbENyZWF0ZVN0cmVhbUtIUihFR0xfTk9fRElTUExBWSwg
c3RyZWFtQXR0cmlidXRlcyk7CisgICAgQVNTRVJUX0VHTF9FUlJPUihFR0xfQkFEX0RJU1BMQVkp
OworICAgIEFTU0VSVF9FUShFR0xfTk9fU1RSRUFNX0tIUiwgc3RyZWFtKTsKKworICAgIC8vIENy
ZWF0ZSBhbiBhY3R1YWwgc3RyZWFtCisgICAgc3RyZWFtID0gZWdsQ3JlYXRlU3RyZWFtS0hSKGRp
c3BsYXksIHN0cmVhbUF0dHJpYnV0ZXMpOworICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworICAg
IEFTU0VSVF9ORShFR0xfTk9fU1RSRUFNX0tIUiwgc3RyZWFtKTsKKworICAgIC8vIEFzc2VydCBp
dCBpcyBpbiB0aGUgY3JlYXRlZCBzdGF0ZQorICAgIEVHTGludCBzdGF0ZTsKKyAgICBlZ2xRdWVy
eVN0cmVhbUtIUihkaXNwbGF5LCBzdHJlYW0sIEVHTF9TVFJFQU1fU1RBVEVfS0hSLCAmc3RhdGUp
OworICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworICAgIEFTU0VSVF9FUShFR0xfU1RSRUFNX1NU
QVRFX0NSRUFURURfS0hSLCBzdGF0ZSk7CisKKyAgICAvLyBUZXN0IGdldHRpbmcgYW5kIHNldHRp
bmcgdGhlIGxhdGVuY3kKKyAgICBFR0xpbnQgbGF0ZW5jeSA9IDEwOworICAgIGVnbFN0cmVhbUF0
dHJpYktIUihkaXNwbGF5LCBzdHJlYW0sIEVHTF9DT05TVU1FUl9MQVRFTkNZX1VTRUNfS0hSLCBs
YXRlbmN5KTsKKyAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKyAgICBlZ2xRdWVyeVN0cmVhbUtI
UihkaXNwbGF5LCBzdHJlYW0sIEVHTF9DT05TVU1FUl9MQVRFTkNZX1VTRUNfS0hSLCAmbGF0ZW5j
eSk7CisgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CisgICAgQVNTRVJUX0VRKDEwLCBsYXRlbmN5
KTsKKyAgICBlZ2xTdHJlYW1BdHRyaWJLSFIoZGlzcGxheSwgc3RyZWFtLCBFR0xfQ09OU1VNRVJf
TEFURU5DWV9VU0VDX0tIUiwgLTEpOworICAgIEFTU0VSVF9FR0xfRVJST1IoRUdMX0JBRF9QQVJB
TUVURVIpOworICAgIEFTU0VSVF9FUSgxMCwgbGF0ZW5jeSk7CisKKyAgICAvLyBUZXN0IHRoZSA2
NC1iaXQgcXVlcmllcworICAgIEVHTHVpbnQ2NEtIUiB2YWx1ZTsKKyAgICBlZ2xRdWVyeVN0cmVh
bXU2NEtIUihkaXNwbGF5LCBzdHJlYW0sIEVHTF9DT05TVU1FUl9GUkFNRV9LSFIsICZ2YWx1ZSk7
CisgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CisgICAgZWdsUXVlcnlTdHJlYW11NjRLSFIoZGlz
cGxheSwgc3RyZWFtLCBFR0xfUFJPRFVDRVJfRlJBTUVfS0hSLCAmdmFsdWUpOworICAgIEFTU0VS
VF9FR0xfU1VDQ0VTUygpOworCisgICAgLy8gRGVzdHJveSB0aGUgc3RyZWFtCisgICAgZWdsRGVz
dHJveVN0cmVhbUtIUihkaXNwbGF5LCBzdHJlYW0pOworICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygp
OworfQorCisvLyBUZXN0cyB2YWxpZGF0aW9uIG9mIHN0cmVhbSBjb25zdW1lciBnbHRleHR1cmUg
QVBJCitURVNUX1AoRUdMU3RyZWFtVGVzdCwgU3RyZWFtQ29uc3VtZXJHTFRleHR1cmVWYWxpZGF0
aW9uVGVzdCkKK3sKKyAgICBFR0xXaW5kb3cgKndpbmRvdyAgICAgICAgICAgID0gZ2V0RUdMV2lu
ZG93KCk7CisgICAgRUdMRGlzcGxheSBkaXNwbGF5ICAgICAgICAgICA9IHdpbmRvdy0+Z2V0RGlz
cGxheSgpOworICAgIGNvbnN0IGNoYXIgKmV4dGVuc2lvbnNTdHJpbmcgPSBlZ2xRdWVyeVN0cmlu
ZyhkaXNwbGF5LCBFR0xfRVhURU5TSU9OUyk7CisgICAgaWYgKHN0cnN0cihleHRlbnNpb25zU3Ry
aW5nLCAiRUdMX0tIUl9zdHJlYW1fY29uc3VtZXJfZ2x0ZXh0dXJlIikgPT0gbnVsbHB0cikKKyAg
ICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiU3RyZWFtIGNvbnN1bWVyIGdsdGV4dHVyZSBleHRl
bnNpb24gbm90IHN1cHBvcnRlZCIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgY29uc3QgRUdMaW50IHN0cmVhbUF0dHJpYnV0ZXNbXSA9IHsKKyAgICAgICAgRUdM
X0NPTlNVTUVSX0xBVEVOQ1lfVVNFQ19LSFIsIDAsIEVHTF9DT05TVU1FUl9BQ1FVSVJFX1RJTUVP
VVRfVVNFQ19LSFIsIDAsIEVHTF9OT05FLAorICAgIH07CisKKyAgICBFR0xTdHJlYW1LSFIgc3Ry
ZWFtID0gZWdsQ3JlYXRlU3RyZWFtS0hSKGRpc3BsYXksIHN0cmVhbUF0dHJpYnV0ZXMpOworICAg
IEFTU0VSVF9FR0xfU1VDQ0VTUygpOworCisgICAgRUdMQm9vbGVhbiByZXN1bHQgPSBlZ2xTdHJl
YW1Db25zdW1lckdMVGV4dHVyZUV4dGVybmFsS0hSKGRpc3BsYXksIHN0cmVhbSk7CisgICAgQVNT
RVJUX0VHTF9GQUxTRShyZXN1bHQpOworICAgIEFTU0VSVF9FR0xfRVJST1IoRUdMX0JBRF9BQ0NF
U1MpOworCisgICAgR0x1aW50IHRleDsKKyAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXgpOworICAg
IGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIHRleCk7CisgICAgcmVzdWx0
ID0gZWdsU3RyZWFtQ29uc3VtZXJHTFRleHR1cmVFeHRlcm5hbEtIUihkaXNwbGF5LCBzdHJlYW0p
OworICAgIEFTU0VSVF9FR0xfVFJVRShyZXN1bHQpOworICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygp
OworCisgICAgRUdMaW50IHN0YXRlOworICAgIGVnbFF1ZXJ5U3RyZWFtS0hSKGRpc3BsYXksIHN0
cmVhbSwgRUdMX1NUUkVBTV9TVEFURV9LSFIsICZzdGF0ZSk7CisgICAgQVNTRVJUX0VHTF9TVUND
RVNTKCk7CisgICAgQVNTRVJUX0VRKEVHTF9TVFJFQU1fU1RBVEVfQ09OTkVDVElOR19LSFIsIHN0
YXRlKTsKKworICAgIGVnbERlc3Ryb3lTdHJlYW1LSFIoZGlzcGxheSwgc3RyZWFtKTsKKyAgICBB
U1NFUlRfRUdMX1NVQ0NFU1MoKTsKK30KKworLy8gVGVzdHMgdmFsaWRhdGlvbiBvZiBzdHJlYW0g
Y29uc3VtZXIgZ2x0ZXh0dXJlIHl1diBBUEkKK1RFU1RfUChFR0xTdHJlYW1UZXN0LCBTdHJlYW1D
b25zdW1lckdMVGV4dHVyZVlVVlZhbGlkYXRpb25UZXN0KQoreworICAgIEVHTFdpbmRvdyAqd2lu
ZG93ICAgICAgICAgICAgPSBnZXRFR0xXaW5kb3coKTsKKyAgICBFR0xEaXNwbGF5IGRpc3BsYXkg
ICAgICAgICAgID0gd2luZG93LT5nZXREaXNwbGF5KCk7CisgICAgY29uc3QgY2hhciAqZXh0ZW5z
aW9uc1N0cmluZyA9IGVnbFF1ZXJ5U3RyaW5nKGRpc3BsYXksIEVHTF9FWFRFTlNJT05TKTsKKyAg
ICBpZiAoc3Ryc3RyKGV4dGVuc2lvbnNTdHJpbmcsICJFR0xfTlZfc3RyZWFtX2NvbnN1bWVyX2ds
dGV4dHVyZV95dXYiKSA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJT
dHJlYW0gY29uc3VtZXIgZ2x0ZXh0dXJlIHl1diBleHRlbnNpb24gbm90IHN1cHBvcnRlZCIgPDwg
c3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3QgRUdMaW50IHN0
cmVhbUF0dHJpYnV0ZXNbXSA9IHsKKyAgICAgICAgRUdMX0NPTlNVTUVSX0xBVEVOQ1lfVVNFQ19L
SFIsIDAsIEVHTF9DT05TVU1FUl9BQ1FVSVJFX1RJTUVPVVRfVVNFQ19LSFIsIDAsIEVHTF9OT05F
LAorICAgIH07CisKKyAgICBFR0xTdHJlYW1LSFIgc3RyZWFtID0gZWdsQ3JlYXRlU3RyZWFtS0hS
KGRpc3BsYXksIHN0cmVhbUF0dHJpYnV0ZXMpOworICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwor
CisgICAgRUdMQXR0cmliIGNvbnN1bWVyQXR0cmlidXRlc0JhZFtdID0geworICAgICAgICBFR0xf
Q09MT1JfQlVGRkVSX1RZUEUsCisgICAgICAgIEVHTF9ZVVZfQlVGRkVSX0VYVCwgIC8vIDAKKyAg
ICAgICAgRUdMX1lVVl9OVU1CRVJfT0ZfUExBTkVTX0VYVCwKKyAgICAgICAgMCwKKyAgICAgICAg
RUdMX05PTkUsCisgICAgICAgIEVHTF9DT0xPUl9CVUZGRVJfVFlQRSwKKyAgICAgICAgRUdMX1lV
Vl9CVUZGRVJfRVhULCAgLy8gNQorICAgICAgICBFR0xfWVVWX05VTUJFUl9PRl9QTEFORVNfRVhU
LAorICAgICAgICAxLAorICAgICAgICBFR0xfTk9ORSwKKyAgICAgICAgRUdMX0NPTE9SX0JVRkZF
Ul9UWVBFLAorICAgICAgICBFR0xfWVVWX0JVRkZFUl9FWFQsICAvLyAxMAorICAgICAgICBFR0xf
WVVWX05VTUJFUl9PRl9QTEFORVNfRVhULAorICAgICAgICAxLAorICAgICAgICBFR0xfWVVWX1BM
QU5FMF9URVhUVVJFX1VOSVRfTlYsCisgICAgICAgIDk5OTksCisgICAgICAgIEVHTF9OT05FLAor
ICAgICAgICBFR0xfQ09MT1JfQlVGRkVSX1RZUEUsCisgICAgICAgIEVHTF9ZVVZfQlVGRkVSX0VY
VCwgIC8vIDE3CisgICAgICAgIEVHTF9ZVVZfTlVNQkVSX09GX1BMQU5FU19FWFQsCisgICAgICAg
IDEsCisgICAgICAgIEVHTF9ZVVZfUExBTkUwX1RFWFRVUkVfVU5JVF9OViwKKyAgICAgICAgMCwK
KyAgICAgICAgRUdMX1lVVl9QTEFORTFfVEVYVFVSRV9VTklUX05WLAorICAgICAgICAxLAorICAg
ICAgICBFR0xfTk9ORSwKKyAgICAgICAgRUdMX0NPTE9SX0JVRkZFUl9UWVBFLAorICAgICAgICBF
R0xfWVVWX0JVRkZFUl9FWFQsICAvLyAyNgorICAgICAgICBFR0xfWVVWX05VTUJFUl9PRl9QTEFO
RVNfRVhULAorICAgICAgICAyLAorICAgICAgICBFR0xfWVVWX1BMQU5FMF9URVhUVVJFX1VOSVRf
TlYsCisgICAgICAgIDAsCisgICAgICAgIEVHTF9ZVVZfUExBTkUxX1RFWFRVUkVfVU5JVF9OViwK
KyAgICAgICAgMCwKKyAgICAgICAgRUdMX05PTkUsCisgICAgfTsKKworICAgIEVHTEF0dHJpYiBj
b25zdW1lckF0dHJpYnV0ZXNbXSA9IHsKKyAgICAgICAgRUdMX0NPTE9SX0JVRkZFUl9UWVBFLAor
ICAgICAgICBFR0xfWVVWX0JVRkZFUl9FWFQsCisgICAgICAgIEVHTF9ZVVZfTlVNQkVSX09GX1BM
QU5FU19FWFQsCisgICAgICAgIDIsCisgICAgICAgIEVHTF9ZVVZfUExBTkUwX1RFWFRVUkVfVU5J
VF9OViwKKyAgICAgICAgMCwKKyAgICAgICAgRUdMX1lVVl9QTEFORTFfVEVYVFVSRV9VTklUX05W
LAorICAgICAgICAxLAorICAgICAgICBFR0xfTk9ORSwKKyAgICB9OworCisgICAgRUdMQm9vbGVh
biByZXN1bHQgPQorICAgICAgICBlZ2xTdHJlYW1Db25zdW1lckdMVGV4dHVyZUV4dGVybmFsQXR0
cmlic05WKGRpc3BsYXksIHN0cmVhbSwgJmNvbnN1bWVyQXR0cmlidXRlc0JhZFswXSk7CisgICAg
QVNTRVJUX0VHTF9GQUxTRShyZXN1bHQpOworICAgIEFTU0VSVF9FR0xfRVJST1IoRUdMX0JBRF9N
QVRDSCk7CisKKyAgICByZXN1bHQgPQorICAgICAgICBlZ2xTdHJlYW1Db25zdW1lckdMVGV4dHVy
ZUV4dGVybmFsQXR0cmlic05WKGRpc3BsYXksIHN0cmVhbSwgJmNvbnN1bWVyQXR0cmlidXRlc0Jh
ZFs1XSk7CisgICAgQVNTRVJUX0VHTF9GQUxTRShyZXN1bHQpOworICAgIEFTU0VSVF9FR0xfRVJS
T1IoRUdMX0JBRF9NQVRDSCk7CisKKyAgICByZXN1bHQgPQorICAgICAgICBlZ2xTdHJlYW1Db25z
dW1lckdMVGV4dHVyZUV4dGVybmFsQXR0cmlic05WKGRpc3BsYXksIHN0cmVhbSwgJmNvbnN1bWVy
QXR0cmlidXRlc0JhZFsxMF0pOworICAgIEFTU0VSVF9FR0xfRkFMU0UocmVzdWx0KTsKKyAgICBB
U1NFUlRfRUdMX0VSUk9SKEVHTF9CQURfQUNDRVNTKTsKKworICAgIHJlc3VsdCA9CisgICAgICAg
IGVnbFN0cmVhbUNvbnN1bWVyR0xUZXh0dXJlRXh0ZXJuYWxBdHRyaWJzTlYoZGlzcGxheSwgc3Ry
ZWFtLCAmY29uc3VtZXJBdHRyaWJ1dGVzQmFkWzE3XSk7CisgICAgQVNTRVJUX0VHTF9GQUxTRShy
ZXN1bHQpOworICAgIEFTU0VSVF9FR0xfRVJST1IoRUdMX0JBRF9NQVRDSCk7CisKKyAgICByZXN1
bHQgPSBlZ2xTdHJlYW1Db25zdW1lckdMVGV4dHVyZUV4dGVybmFsQXR0cmlic05WKGRpc3BsYXks
IHN0cmVhbSwgY29uc3VtZXJBdHRyaWJ1dGVzKTsKKyAgICBBU1NFUlRfRUdMX0ZBTFNFKHJlc3Vs
dCk7CisgICAgQVNTRVJUX0VHTF9FUlJPUihFR0xfQkFEX0FDQ0VTUyk7CisKKyAgICBHTHVpbnQg
dGV4WzJdOworICAgIGdsR2VuVGV4dHVyZXMoMiwgdGV4KTsKKyAgICBnbEFjdGl2ZVRleHR1cmUo
R0xfVEVYVFVSRTApOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMs
IHRleFswXSk7CisgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUxKTsKKyAgICBnbEJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCB0ZXhbMV0pOworCisgICAgcmVzdWx0ID0K
KyAgICAgICAgZWdsU3RyZWFtQ29uc3VtZXJHTFRleHR1cmVFeHRlcm5hbEF0dHJpYnNOVihkaXNw
bGF5LCBzdHJlYW0sICZjb25zdW1lckF0dHJpYnV0ZXNCYWRbMjZdKTsKKyAgICBBU1NFUlRfRUdM
X0ZBTFNFKHJlc3VsdCk7CisgICAgQVNTRVJUX0VHTF9FUlJPUihFR0xfQkFEX0FDQ0VTUyk7CisK
KyAgICByZXN1bHQgPSBlZ2xTdHJlYW1Db25zdW1lckdMVGV4dHVyZUV4dGVybmFsQXR0cmlic05W
KGRpc3BsYXksIHN0cmVhbSwgY29uc3VtZXJBdHRyaWJ1dGVzKTsKKyAgICBBU1NFUlRfRUdMX1RS
VUUocmVzdWx0KTsKKyAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKworICAgIEVHTGludCBzdGF0
ZTsKKyAgICBlZ2xRdWVyeVN0cmVhbUtIUihkaXNwbGF5LCBzdHJlYW0sIEVHTF9TVFJFQU1fU1RB
VEVfS0hSLCAmc3RhdGUpOworICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworICAgIEFTU0VSVF9F
UShFR0xfU1RSRUFNX1NUQVRFX0NPTk5FQ1RJTkdfS0hSLCBzdGF0ZSk7CisKKyAgICBlZ2xEZXN0
cm95U3RyZWFtS0hSKGRpc3BsYXksIHN0cmVhbSk7CisgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7
Cit9CisKKy8vIFRlc3RzIHRoYXQgZGVsZXRpbmcgYSB0ZXh0dXJlIGludmFsaWRhdGVzIHRoZSBh
c3NvY2lhdGVkIHN0cmVhbQorVEVTVF9QKEVHTFN0cmVhbVRlc3QsIFN0cmVhbUNvbnN1bWVyR0xU
ZXh0dXJlWVVWRGVsZXRpb25UZXN0KQoreworICAgIEVHTFdpbmRvdyAqd2luZG93ICAgICAgICAg
ICAgPSBnZXRFR0xXaW5kb3coKTsKKyAgICBFR0xEaXNwbGF5IGRpc3BsYXkgICAgICAgICAgID0g
d2luZG93LT5nZXREaXNwbGF5KCk7CisgICAgY29uc3QgY2hhciAqZXh0ZW5zaW9uc1N0cmluZyA9
IGVnbFF1ZXJ5U3RyaW5nKGRpc3BsYXksIEVHTF9FWFRFTlNJT05TKTsKKyAgICBpZiAoc3Ryc3Ry
KGV4dGVuc2lvbnNTdHJpbmcsICJFR0xfQU5HTEVfc3RyZWFtX3Byb2R1Y2VyX2QzZF90ZXh0dXJl
X252MTIiKSA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJTdHJlYW0g
cHJvZHVjZXIgZDNkIG52MTIgdGV4dHVyZSBub3Qgc3VwcG9ydGVkIiA8PCBzdGQ6OmVuZGw7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCBFR0xpbnQgc3RyZWFtQXR0cmlidXRl
c1tdID0geworICAgICAgICBFR0xfQ09OU1VNRVJfTEFURU5DWV9VU0VDX0tIUiwgMCwgRUdMX0NP
TlNVTUVSX0FDUVVJUkVfVElNRU9VVF9VU0VDX0tIUiwgMCwgRUdMX05PTkUsCisgICAgfTsKKwor
ICAgIEVHTFN0cmVhbUtIUiBzdHJlYW0gPSBlZ2xDcmVhdGVTdHJlYW1LSFIoZGlzcGxheSwgc3Ry
ZWFtQXR0cmlidXRlcyk7CisgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CisKKyAgICBFR0xBdHRy
aWIgY29uc3VtZXJBdHRyaWJ1dGVzW10gPSB7CisgICAgICAgIEVHTF9DT0xPUl9CVUZGRVJfVFlQ
RSwKKyAgICAgICAgRUdMX1lVVl9CVUZGRVJfRVhULAorICAgICAgICBFR0xfWVVWX05VTUJFUl9P
Rl9QTEFORVNfRVhULAorICAgICAgICAyLAorICAgICAgICBFR0xfWVVWX1BMQU5FMF9URVhUVVJF
X1VOSVRfTlYsCisgICAgICAgIDAsCisgICAgICAgIEVHTF9ZVVZfUExBTkUxX1RFWFRVUkVfVU5J
VF9OViwKKyAgICAgICAgMSwKKyAgICAgICAgRUdMX05PTkUsCisgICAgfTsKKworICAgIEdMdWlu
dCB0ZXhbMl07CisgICAgZ2xHZW5UZXh0dXJlcygyLCB0ZXgpOworICAgIGdsQWN0aXZlVGV4dHVy
ZShHTF9URVhUVVJFMCk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFX0VYVEVSTkFMX09F
UywgdGV4WzBdKTsKKyAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTEpOworICAgIGdsQmlu
ZFRleHR1cmUoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIHRleFsxXSk7CisKKyAgICBFR0xCb29s
ZWFuIHJlc3VsdCA9CisgICAgICAgIGVnbFN0cmVhbUNvbnN1bWVyR0xUZXh0dXJlRXh0ZXJuYWxB
dHRyaWJzTlYoZGlzcGxheSwgc3RyZWFtLCBjb25zdW1lckF0dHJpYnV0ZXMpOworICAgIEFTU0VS
VF9FR0xfVFJVRShyZXN1bHQpOworICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworCisgICAgRUdM
QXR0cmliIHByb2R1Y2VyQXR0cmlidXRlc1tdID0geworICAgICAgICBFR0xfTk9ORSwKKyAgICB9
OworCisgICAgcmVzdWx0ID0gZWdsQ3JlYXRlU3RyZWFtUHJvZHVjZXJEM0RUZXh0dXJlTlYxMkFO
R0xFKGRpc3BsYXksIHN0cmVhbSwgcHJvZHVjZXJBdHRyaWJ1dGVzKTsKKyAgICBBU1NFUlRfRUdM
X1RSVUUocmVzdWx0KTsKKyAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKworICAgIEVHTGludCBz
dGF0ZTsKKyAgICBlZ2xRdWVyeVN0cmVhbUtIUihkaXNwbGF5LCBzdHJlYW0sIEVHTF9TVFJFQU1f
U1RBVEVfS0hSLCAmc3RhdGUpOworICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworICAgIEFTU0VS
VF9FUShFR0xfU1RSRUFNX1NUQVRFX0VNUFRZX0tIUiwgc3RhdGUpOworCisgICAgLy8gRGVsZXRl
IHRoZSBmaXJzdCB0ZXh0dXJlLCB3aGljaCBzaG91bGQgYmUgZW5vdWdoIHRvIGludmFsaWRhdGUg
dGhlIHN0cmVhbQorICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgdGV4KTsKKworICAgIGVnbFF1ZXJ5
U3RyZWFtS0hSKGRpc3BsYXksIHN0cmVhbSwgRUdMX1NUUkVBTV9TVEFURV9LSFIsICZzdGF0ZSk7
CisgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CisgICAgQVNTRVJUX0VRKEVHTF9TVFJFQU1fU1RB
VEVfRElTQ09OTkVDVEVEX0tIUiwgc3RhdGUpOworCisgICAgZWdsRGVzdHJveVN0cmVhbUtIUihk
aXNwbGF5LCBzdHJlYW0pOworICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworfQorCisvLyBFbmQy
ZW5kIHRlc3QgZm9yIHJlbmRlcmluZyBhbiBOVjEyIHRleHR1cmUuIFJlbmRlcnMgYSBZVVYgcXVh
ZCwgcmVhZHMgYmFjayB0aGUgUkdCIHZhbHVlcywgYW5kCisvLyBlbnN1cmVzIHRoZXkgYXJlIGNv
cnJlY3QKK1RFU1RfUChFR0xTdHJlYW1UZXN0LCBTdHJlYW1Qcm9kdWNlclRleHR1cmVOVjEyRW5k
MkVuZCkKK3sKKyAgICBFR0xXaW5kb3cgKndpbmRvdyAgICAgICAgICAgID0gZ2V0RUdMV2luZG93
KCk7CisgICAgRUdMRGlzcGxheSBkaXNwbGF5ICAgICAgICAgICA9IHdpbmRvdy0+Z2V0RGlzcGxh
eSgpOworICAgIGlmICghZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQoZGlzcGxheSwgIkVHTF9B
TkdMRV9zdHJlYW1fcHJvZHVjZXJfZDNkX3RleHR1cmVfbnYxMiIpKQorICAgIHsKKyAgICAgICAg
c3RkOjpjb3V0IDw8ICJTdHJlYW0gcHJvZHVjZXIgZDNkIG52MTIgdGV4dHVyZSBub3Qgc3VwcG9y
dGVkIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBib29sIHVz
ZUVTU0wzU2hhZGVycyA9CisgICAgICAgIGdldENsaWVudE1ham9yVmVyc2lvbigpID49IDMgJiYg
ZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbF9lc3NsMyIpOworCisg
ICAgLy8geXV2IHRvIHJnYiBjb252ZXJzaW9uIHNoYWRlciB1c2luZyBNaWNyb3NvZnQncyBnaXZl
biBjb252ZXJzaW9uIGZvcm11bGFzCisgICAgc3RkOjpzdHJpbmcgeXV2VlMsIHl1dlBTOworICAg
IGlmICh1c2VFU1NMM1NoYWRlcnMpCisgICAgeworICAgICAgICB5dXZWUyA9CisgICAgICAgICAg
ICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICAgICAiaW4gaGlnaHAgdmVjNCBwb3NpdGlv
bjtcbiIKKyAgICAgICAgICAgICJvdXQgdmVjMiB0ZXhjb29yZDtcbiIKKyAgICAgICAgICAgICJ2
b2lkIG1haW4odm9pZClcbiIKKyAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAiICAgIGds
X1Bvc2l0aW9uID0gcG9zaXRpb247XG4iCisgICAgICAgICAgICAiICAgIHRleGNvb3JkID0gKHBv
c2l0aW9uLnh5ICogMC41KSArIDAuNTtcbiIKKyAgICAgICAgICAgICIgICAgdGV4Y29vcmQueSA9
IDEuMCAtIHRleGNvb3JkLnk7XG4iCisgICAgICAgICAgICAifVxuIjsKKyAgICAgICAgeXV2UFMg
PQorICAgICAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAgICAgIiNleHRlbnNp
b24gR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbF9lc3NsMyA6IHJlcXVpcmVcbiIKKyAgICAgICAg
ICAgICIjZXh0ZW5zaW9uIEdMX05WX0VHTF9zdHJlYW1fY29uc3VtZXJfZXh0ZXJuYWwgOiByZXF1
aXJlXG4iCisgICAgICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgorICAgICAgICAg
ICAgImluIHZlYzIgdGV4Y29vcmQ7XG4iCisgICAgICAgICAgICAib3V0IHZlYzQgY29sb3I7XG4i
CisgICAgICAgICAgICAidW5pZm9ybSBzYW1wbGVyRXh0ZXJuYWxPRVMgeTtcbiIKKyAgICAgICAg
ICAgICJ1bmlmb3JtIHNhbXBsZXJFeHRlcm5hbE9FUyB1dlxuOyIKKyAgICAgICAgICAgICJ2b2lk
IG1haW4odm9pZClcbiIKKyAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAiICAgIGZsb2F0
IGMgPSB0ZXh0dXJlKHksIHRleGNvb3JkKS5yIC0gKDE2LjAgLyAyNTYuMCk7XG4iCisgICAgICAg
ICAgICAiICAgIGZsb2F0IGQgPSB0ZXh0dXJlKHV2LCB0ZXhjb29yZCkuciAtIDAuNTtcbiIKKyAg
ICAgICAgICAgICIgICAgZmxvYXQgZSA9IHRleHR1cmUodXYsIHRleGNvb3JkKS5nIC0gMC41O1xu
IgorICAgICAgICAgICAgIiAgICBmbG9hdCByID0gMS4xNjQzODMgKiBjICsgMS41OTYwMjcgKiBl
O1xuIgorICAgICAgICAgICAgIiAgICBmbG9hdCBnID0gMS4xNjQzODMgKiBjIC0gMC4zOTE3NjIg
KiBkIC0gMC44MTI5NjggKiBlO1xuIgorICAgICAgICAgICAgIiAgICBmbG9hdCBiID0gMS4xNjQz
ODMgKiBjICsgMi4wMTcyMzIgKiBkO1xuIgorICAgICAgICAgICAgIiAgICBjb2xvciA9IHZlYzQo
ciwgZywgYiwgMS4wKTtcbiIKKyAgICAgICAgICAgICJ9XG4iOworICAgIH0KKyAgICBlbHNlCisg
ICAgeworICAgICAgICB5dXZWUyA9CisgICAgICAgICAgICAiYXR0cmlidXRlIGhpZ2hwIHZlYzQg
cG9zaXRpb247XG4iCisgICAgICAgICAgICAidmFyeWluZyB2ZWMyIHRleGNvb3JkO1xuIgorICAg
ICAgICAgICAgInZvaWQgbWFpbih2b2lkKVxuIgorICAgICAgICAgICAgIntcbiIKKyAgICAgICAg
ICAgICIgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjtcbiIKKyAgICAgICAgICAgICIgICAgdGV4
Y29vcmQgPSAocG9zaXRpb24ueHkgKiAwLjUpICsgMC41O1xuIgorICAgICAgICAgICAgIiAgICB0
ZXhjb29yZC55ID0gMS4wIC0gdGV4Y29vcmQueTtcbiIKKyAgICAgICAgICAgICJ9XG4iOworCisg
ICAgICAgIHl1dlBTID0KKyAgICAgICAgICAgICIjZXh0ZW5zaW9uIEdMX05WX0VHTF9zdHJlYW1f
Y29uc3VtZXJfZXh0ZXJuYWwgOiByZXF1aXJlXG4iCisgICAgICAgICAgICAicHJlY2lzaW9uIGhp
Z2hwIGZsb2F0O1xuIgorICAgICAgICAgICAgInZhcnlpbmcgdmVjMiB0ZXhjb29yZDtcbiIKKyAg
ICAgICAgICAgICJ1bmlmb3JtIHNhbXBsZXJFeHRlcm5hbE9FUyB5O1xuIgorICAgICAgICAgICAg
InVuaWZvcm0gc2FtcGxlckV4dGVybmFsT0VTIHV2XG47IgorICAgICAgICAgICAgInZvaWQgbWFp
bih2b2lkKVxuIgorICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICIgICAgZmxvYXQgYyA9
IHRleHR1cmUyRCh5LCB0ZXhjb29yZCkuciAtICgxNi4wIC8gMjU2LjApO1xuIgorICAgICAgICAg
ICAgIiAgICBmbG9hdCBkID0gdGV4dHVyZTJEKHV2LCB0ZXhjb29yZCkuciAtIDAuNTtcbiIKKyAg
ICAgICAgICAgICIgICAgZmxvYXQgZSA9IHRleHR1cmUyRCh1diwgdGV4Y29vcmQpLmcgLSAwLjU7
XG4iCisgICAgICAgICAgICAiICAgIGZsb2F0IHIgPSAxLjE2NDM4MyAqIGMgKyAxLjU5NjAyNyAq
IGU7XG4iCisgICAgICAgICAgICAiICAgIGZsb2F0IGcgPSAxLjE2NDM4MyAqIGMgLSAwLjM5MTc2
MiAqIGQgLSAwLjgxMjk2OCAqIGU7XG4iCisgICAgICAgICAgICAiICAgIGZsb2F0IGIgPSAxLjE2
NDM4MyAqIGMgKyAyLjAxNzIzMiAqIGQ7XG4iCisgICAgICAgICAgICAiICAgIGdsX0ZyYWdDb2xv
ciA9IHZlYzQociwgZywgYiwgMS4wKTtcbiIKKyAgICAgICAgICAgICJ9XG4iOworICAgIH0KKwor
ICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0oeXV2VlMsIHl1dlBTKTsKKyAgICBB
U1NFUlRfTkUoMHUsIHByb2dyYW0pOworICAgIEdMdWludCB5VW5pZm9ybSAgPSBnbEdldFVuaWZv
cm1Mb2NhdGlvbihwcm9ncmFtLCAieSIpOworICAgIEdMdWludCB1dlVuaWZvcm0gPSBnbEdldFVu
aWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidXYiKTsKKworICAgIC8vIEZldGNoIHRoZSBEM0QxMSBk
ZXZpY2UKKyAgICBFR0xEZXZpY2VFWFQgZWdsRGV2aWNlOworICAgIGVnbFF1ZXJ5RGlzcGxheUF0
dHJpYkVYVChkaXNwbGF5LCBFR0xfREVWSUNFX0VYVCwgKEVHTEF0dHJpYiAqKSZlZ2xEZXZpY2Up
OworICAgIElEM0QxMURldmljZSAqZGV2aWNlOworICAgIGVnbFF1ZXJ5RGV2aWNlQXR0cmliRVhU
KGVnbERldmljZSwgRUdMX0QzRDExX0RFVklDRV9BTkdMRSwgKEVHTEF0dHJpYiAqKSZkZXZpY2Up
OworCisgICAgLy8gQ3JlYXRlIHRoZSBOVjEyIEQzRDExIHRleHR1cmUKKyAgICBIUkVTVUxUIHJl
czsKKyAgICBEM0QxMV9URVhUVVJFMkRfREVTQyBkZXNjOworICAgIGRlc2MuV2lkdGggICAgICAg
ICAgICAgID0geXV2dGVzdF93aWR0aDsKKyAgICBkZXNjLkhlaWdodCAgICAgICAgICAgICA9IHl1
dnRlc3RfaGVpZ2h0OworICAgIGRlc2MuRm9ybWF0ICAgICAgICAgICAgID0gRFhHSV9GT1JNQVRf
TlYxMjsKKyAgICBkZXNjLk1pcExldmVscyAgICAgICAgICA9IDE7CisgICAgZGVzYy5BcnJheVNp
emUgICAgICAgICAgPSAxOworICAgIGRlc2MuU2FtcGxlRGVzYy5Db3VudCAgID0gMTsKKyAgICBk
ZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7CisgICAgZGVzYy5Vc2FnZSAgICAgICAgICAgICAg
PSBEM0QxMV9VU0FHRV9ERUZBVUxUOworICAgIGRlc2MuQmluZEZsYWdzICAgICAgICAgID0gRDNE
MTFfQklORF9TSEFERVJfUkVTT1VSQ0U7CisgICAgZGVzYy5DUFVBY2Nlc3NGbGFncyAgICAgPSAw
OworICAgIGRlc2MuTWlzY0ZsYWdzICAgICAgICAgID0gMDsKKworICAgIEQzRDExX1NVQlJFU09V
UkNFX0RBVEEgc3VicmVzOworICAgIHN1YnJlcy5wU3lzTWVtICAgICAgICAgID0geXV2dGVzdF9k
YXRhOworICAgIHN1YnJlcy5TeXNNZW1QaXRjaCAgICAgID0geXV2dGVzdF93aWR0aDsKKyAgICBz
dWJyZXMuU3lzTWVtU2xpY2VQaXRjaCA9IHl1dnRlc3Rfd2lkdGggKiB5dXZ0ZXN0X2hlaWdodCAq
IDMgLyAyOworCisgICAgSUQzRDExVGV4dHVyZTJEICp0ZXh0dXJlID0gbnVsbHB0cjsKKyAgICBy
ZXMgICAgICAgICAgICAgICAgICAgICAgPSBkZXZpY2UtPkNyZWF0ZVRleHR1cmUyRCgmZGVzYywg
JnN1YnJlcywgJnRleHR1cmUpOworCisgICAgLy8gQ3JlYXRlIHRoZSBzdHJlYW0KKyAgICBjb25z
dCBFR0xpbnQgc3RyZWFtQXR0cmlidXRlc1tdID0geworICAgICAgICBFR0xfQ09OU1VNRVJfTEFU
RU5DWV9VU0VDX0tIUiwgMCwgRUdMX0NPTlNVTUVSX0FDUVVJUkVfVElNRU9VVF9VU0VDX0tIUiwg
MCwgRUdMX05PTkUsCisgICAgfTsKKworICAgIEVHTFN0cmVhbUtIUiBzdHJlYW0gPSBlZ2xDcmVh
dGVTdHJlYW1LSFIoZGlzcGxheSwgc3RyZWFtQXR0cmlidXRlcyk7CisgICAgQVNTRVJUX0VHTF9T
VUNDRVNTKCk7CisKKyAgICBFR0xBdHRyaWIgY29uc3VtZXJBdHRyaWJ1dGVzW10gPSB7CisgICAg
ICAgIEVHTF9DT0xPUl9CVUZGRVJfVFlQRSwKKyAgICAgICAgRUdMX1lVVl9CVUZGRVJfRVhULAor
ICAgICAgICBFR0xfWVVWX05VTUJFUl9PRl9QTEFORVNfRVhULAorICAgICAgICAyLAorICAgICAg
ICBFR0xfWVVWX1BMQU5FMF9URVhUVVJFX1VOSVRfTlYsCisgICAgICAgIDAsCisgICAgICAgIEVH
TF9ZVVZfUExBTkUxX1RFWFRVUkVfVU5JVF9OViwKKyAgICAgICAgMSwKKyAgICAgICAgRUdMX05P
TkUsCisgICAgfTsKKworICAgIEdMdWludCB0ZXhbMl07CisgICAgZ2xHZW5UZXh0dXJlcygyLCB0
ZXgpOworICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7CisgICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFX0VYVEVSTkFMX09FUywgdGV4WzBdKTsKKyAgICBnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFS
KTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVY
VFVSRTEpOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIHRleFsx
XSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCBHTF9URVhU
VVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisK
KyAgICBFR0xCb29sZWFuIHJlc3VsdCA9CisgICAgICAgIGVnbFN0cmVhbUNvbnN1bWVyR0xUZXh0
dXJlRXh0ZXJuYWxBdHRyaWJzTlYoZGlzcGxheSwgc3RyZWFtLCBjb25zdW1lckF0dHJpYnV0ZXMp
OworICAgIEFTU0VSVF9FR0xfVFJVRShyZXN1bHQpOworICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygp
OworCisgICAgRUdMQXR0cmliIHByb2R1Y2VyQXR0cmlidXRlc1tdID0geworICAgICAgICBFR0xf
Tk9ORSwKKyAgICB9OworCisgICAgcmVzdWx0ID0gZWdsQ3JlYXRlU3RyZWFtUHJvZHVjZXJEM0RU
ZXh0dXJlTlYxMkFOR0xFKGRpc3BsYXksIHN0cmVhbSwgcHJvZHVjZXJBdHRyaWJ1dGVzKTsKKyAg
ICBBU1NFUlRfRUdMX1RSVUUocmVzdWx0KTsKKyAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKwor
ICAgIC8vIEluc2VydCB0aGUgZnJhbWUKKyAgICBFR0xBdHRyaWIgZnJhbWVBdHRyaWJ1dGVzW10g
PSB7CisgICAgICAgIEVHTF9EM0RfVEVYVFVSRV9TVUJSRVNPVVJDRV9JRF9BTkdMRSwgMCwgRUdM
X05PTkUsCisgICAgfTsKKyAgICByZXN1bHQgPSBlZ2xTdHJlYW1Qb3N0RDNEVGV4dHVyZU5WMTJB
TkdMRShkaXNwbGF5LCBzdHJlYW0sICh2b2lkICopdGV4dHVyZSwgZnJhbWVBdHRyaWJ1dGVzKTsK
KyAgICBBU1NFUlRfRUdMX1RSVUUocmVzdWx0KTsKKyAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsK
KworICAgIEVHTGludCBzdGF0ZTsKKyAgICBlZ2xRdWVyeVN0cmVhbUtIUihkaXNwbGF5LCBzdHJl
YW0sIEVHTF9TVFJFQU1fU1RBVEVfS0hSLCAmc3RhdGUpOworICAgIEFTU0VSVF9FR0xfU1VDQ0VT
UygpOworICAgIEFTU0VSVF9FUShFR0xfU1RSRUFNX1NUQVRFX05FV19GUkFNRV9BVkFJTEFCTEVf
S0hSLCBzdGF0ZSk7CisKKyAgICBlZ2xTdHJlYW1Db25zdW1lckFjcXVpcmVLSFIoZGlzcGxheSwg
c3RyZWFtKTsKKyAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKworICAgIGdsVXNlUHJvZ3JhbShw
cm9ncmFtKTsKKyAgICBnbFVuaWZvcm0xaSh5VW5pZm9ybSwgMCk7CisgICAgZ2xVbmlmb3JtMWko
dXZVbmlmb3JtLCAxKTsKKyAgICBkcmF3UXVhZChwcm9ncmFtLCAicG9zaXRpb24iLCAwLjBmKTsK
KyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIGVnbFN0cmVhbUNvbnN1bWVyUmVsZWFz
ZUtIUihkaXNwbGF5LCBzdHJlYW0pOworICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworCisgICAg
ZWdsU3dhcEJ1ZmZlcnMoZGlzcGxheSwgd2luZG93LT5nZXRTdXJmYWNlKCkpOworICAgIFNhZmVS
ZWxlYXNlKHRleHR1cmUpOworfQorCitBTkdMRV9JTlNUQU5USUFURV9URVNUKEVHTFN0cmVhbVRl
c3QsCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCisgICAgICAgICAgICAgICAg
ICAgICAgIEVTMl9EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfRDNEMTEoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAg
ICAgICBFUzNfT1BFTkdMKCkpOworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xTdXJmYWNlVGVzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90
ZXN0cy9FR0xTdXJmYWNlVGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xTdXJmYWNlVGVzdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw1MTcgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBFR0xTdXJmYWNlVGVzdDoKKy8v
ICAgVGVzdHMgcGVydGFpbmluZyB0byBlZ2w6OlN1cmZhY2UuCisvLworCisjaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KKworI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgIk9TV2luZG93Lmgi
CisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKworbmFtZXNwYWNlCit7CisKK2Ns
YXNzIEVHTFN1cmZhY2VUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QKK3sKKyAgcHJvdGVjdGVk
OgorICAgIEVHTFN1cmZhY2VUZXN0KCkKKyAgICAgICAgOiBtRGlzcGxheShFR0xfTk9fRElTUExB
WSksCisgICAgICAgICAgbVdpbmRvd1N1cmZhY2UoRUdMX05PX1NVUkZBQ0UpLAorICAgICAgICAg
IG1QYnVmZmVyU3VyZmFjZShFR0xfTk9fU1VSRkFDRSksCisgICAgICAgICAgbUNvbnRleHQoRUdM
X05PX0NPTlRFWFQpLAorICAgICAgICAgIG1TZWNvbmRDb250ZXh0KEVHTF9OT19DT05URVhUKSwK
KyAgICAgICAgICBtT1NXaW5kb3cobnVsbHB0cikKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBT
ZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBtT1NXaW5kb3cgPSBDcmVhdGVPU1dpbmRv
dygpOworICAgICAgICBtT1NXaW5kb3ctPmluaXRpYWxpemUoIkVHTFN1cmZhY2VUZXN0IiwgNjQs
IDY0KTsKKyAgICB9CisKKyAgICAvLyBSZWxlYXNlIGFueSByZXNvdXJjZXMgY3JlYXRlZCBpbiB0
aGUgdGVzdCBib2R5CisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAgeworICAgICAg
ICBpZiAobURpc3BsYXkgIT0gRUdMX05PX0RJU1BMQVkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGVnbE1ha2VDdXJyZW50KG1EaXNwbGF5LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX1NVUkZBQ0Us
IEVHTF9OT19DT05URVhUKTsKKworICAgICAgICAgICAgaWYgKG1XaW5kb3dTdXJmYWNlICE9IEVH
TF9OT19TVVJGQUNFKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVnbERlc3Ryb3lT
dXJmYWNlKG1EaXNwbGF5LCBtV2luZG93U3VyZmFjZSk7CisgICAgICAgICAgICAgICAgbVdpbmRv
d1N1cmZhY2UgPSBFR0xfTk9fU1VSRkFDRTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKG1QYnVmZmVyU3VyZmFjZSAhPSBFR0xfTk9fU1VSRkFDRSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBlZ2xEZXN0cm95U3VyZmFjZShtRGlzcGxheSwgbVBidWZmZXJTdXJmYWNl
KTsKKyAgICAgICAgICAgICAgICBtUGJ1ZmZlclN1cmZhY2UgPSBFR0xfTk9fU1VSRkFDRTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1Db250ZXh0ICE9IEVHTF9OT19DT05URVhU
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KG1EaXNw
bGF5LCBtQ29udGV4dCk7CisgICAgICAgICAgICAgICAgbUNvbnRleHQgPSBFR0xfTk9fQ09OVEVY
VDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1TZWNvbmRDb250ZXh0ICE9IEVH
TF9OT19DT05URVhUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVnbERlc3Ryb3lD
b250ZXh0KG1EaXNwbGF5LCBtU2Vjb25kQ29udGV4dCk7CisgICAgICAgICAgICAgICAgbVNlY29u
ZENvbnRleHQgPSBFR0xfTk9fQ09OVEVYVDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ZWdsVGVybWluYXRlKG1EaXNwbGF5KTsKKyAgICAgICAgICAgIG1EaXNwbGF5ID0gRUdMX05PX0RJ
U1BMQVk7CisgICAgICAgIH0KKworICAgICAgICBtT1NXaW5kb3ctPmRlc3Ryb3koKTsKKyAgICAg
ICAgU2FmZURlbGV0ZShtT1NXaW5kb3cpOworCisgICAgICAgIEFTU0VSVF9UUlVFKG1XaW5kb3dT
dXJmYWNlID09IEVHTF9OT19TVVJGQUNFICYmIG1Db250ZXh0ID09IEVHTF9OT19DT05URVhUKTsK
KyAgICB9CisKKyAgICB2b2lkIGluaXRpYWxpemVEaXNwbGF5KEVHTGVudW0gcGxhdGZvcm1UeXBl
KQorICAgIHsKKyAgICAgICAgUEZORUdMR0VUUExBVEZPUk1ESVNQTEFZRVhUUFJPQyBlZ2xHZXRQ
bGF0Zm9ybURpc3BsYXlFWFQgPSByZWludGVycHJldF9jYXN0PFBGTkVHTEdFVFBMQVRGT1JNRElT
UExBWUVYVFBST0M+KGVnbEdldFByb2NBZGRyZXNzKCJlZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQi
KSk7CisgICAgICAgIEFTU0VSVF9UUlVFKGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVCAhPSBudWxs
cHRyKTsKKworICAgICAgICBzdGQ6OnZlY3RvcjxFR0xpbnQ+IGRpc3BsYXlBdHRyaWJ1dGVzOwor
ICAgICAgICBkaXNwbGF5QXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX1RZ
UEVfQU5HTEUpOworICAgICAgICBkaXNwbGF5QXR0cmlidXRlcy5wdXNoX2JhY2socGxhdGZvcm1U
eXBlKTsKKyAgICAgICAgZGlzcGxheUF0dHJpYnV0ZXMucHVzaF9iYWNrKEVHTF9QTEFURk9STV9B
TkdMRV9NQVhfVkVSU0lPTl9NQUpPUl9BTkdMRSk7CisgICAgICAgIGRpc3BsYXlBdHRyaWJ1dGVz
LnB1c2hfYmFjayhFR0xfRE9OVF9DQVJFKTsKKyAgICAgICAgZGlzcGxheUF0dHJpYnV0ZXMucHVz
aF9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9NQVhfVkVSU0lPTl9NSU5PUl9BTkdMRSk7CisgICAg
ICAgIGRpc3BsYXlBdHRyaWJ1dGVzLnB1c2hfYmFjayhFR0xfRE9OVF9DQVJFKTsKKworICAgICAg
ICBpZiAocGxhdGZvcm1UeXBlID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDlfQU5HTEUg
fHwgcGxhdGZvcm1UeXBlID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFKQor
ICAgICAgICB7CisgICAgICAgICAgICBkaXNwbGF5QXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX1BM
QVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0FOR0xFKTsKKyAgICAgICAgICAgIGRpc3BsYXlBdHRy
aWJ1dGVzLnB1c2hfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfSEFSRFdBUkVf
QU5HTEUpOworICAgICAgICB9CisgICAgICAgIGRpc3BsYXlBdHRyaWJ1dGVzLnB1c2hfYmFjayhF
R0xfTk9ORSk7CisKKyAgICAgICAgbURpc3BsYXkgPSBlZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQo
RUdMX1BMQVRGT1JNX0FOR0xFX0FOR0xFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQgKj4obU9TV2luZG93LT5nZXROYXRp
dmVEaXNwbGF5KCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkaXNwbGF5QXR0cmlidXRlcy5kYXRhKCkpOworICAgICAgICBBU1NFUlRfVFJVRShtRGlzcGxh
eSAhPSBFR0xfTk9fRElTUExBWSk7CisKKyAgICAgICAgRUdMaW50IG1ham9yVmVyc2lvbiwgbWlu
b3JWZXJzaW9uOworICAgICAgICBBU1NFUlRfVFJVRShlZ2xJbml0aWFsaXplKG1EaXNwbGF5LCAm
bWFqb3JWZXJzaW9uLCAmbWlub3JWZXJzaW9uKSA9PSBFR0xfVFJVRSk7CisKKyAgICAgICAgZWds
QmluZEFQSShFR0xfT1BFTkdMX0VTX0FQSSk7CisgICAgICAgIEFTU0VSVF9UUlVFKGVnbEdldEVy
cm9yKCkgPT0gRUdMX1NVQ0NFU1MpOworICAgIH0KKworICAgIHZvaWQgaW5pdGlhbGl6ZVN1cmZh
Y2UoRUdMQ29uZmlnIGNvbmZpZykKKyAgICB7CisgICAgICAgIG1Db25maWcgPSBjb25maWc7CisK
KyAgICAgICAgc3RkOjp2ZWN0b3I8RUdMaW50PiBzdXJmYWNlQXR0cmlidXRlczsKKyAgICAgICAg
c3VyZmFjZUF0dHJpYnV0ZXMucHVzaF9iYWNrKEVHTF9OT05FKTsKKyAgICAgICAgc3VyZmFjZUF0
dHJpYnV0ZXMucHVzaF9iYWNrKEVHTF9OT05FKTsKKworICAgICAgICAvLyBDcmVhdGUgZmlyc3Qg
d2luZG93IHN1cmZhY2UKKyAgICAgICAgbVdpbmRvd1N1cmZhY2UgPSBlZ2xDcmVhdGVXaW5kb3dT
dXJmYWNlKG1EaXNwbGF5LCBtQ29uZmlnLCBtT1NXaW5kb3ctPmdldE5hdGl2ZVdpbmRvdygpLCAm
c3VyZmFjZUF0dHJpYnV0ZXNbMF0pOworICAgICAgICBBU1NFUlRfVFJVRShlZ2xHZXRFcnJvcigp
ID09IEVHTF9TVUNDRVNTKTsKKworICAgICAgICBtUGJ1ZmZlclN1cmZhY2UgPSBlZ2xDcmVhdGVQ
YnVmZmVyU3VyZmFjZShtRGlzcGxheSwgbUNvbmZpZywgJnN1cmZhY2VBdHRyaWJ1dGVzWzBdKTsK
KworICAgICAgICBFR0xpbnQgY29udGV4dEF0dGlidXRlc1tdID0KKyAgICAgICAgeworICAgICAg
ICAgICAgRUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04sIDIsCisgICAgICAgICAgICBFR0xfTk9O
RQorICAgICAgICB9OworCisgICAgICAgIG1Db250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChtRGlz
cGxheSwgbUNvbmZpZywgbnVsbHB0ciwgY29udGV4dEF0dGlidXRlcyk7CisgICAgICAgIEFTU0VS
VF9UUlVFKGVnbEdldEVycm9yKCkgPT0gRUdMX1NVQ0NFU1MpOworCisgICAgICAgIG1TZWNvbmRD
b250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChtRGlzcGxheSwgbUNvbmZpZywgbnVsbHB0ciwgY29u
dGV4dEF0dGlidXRlcyk7CisgICAgICAgIEFTU0VSVF9UUlVFKGVnbEdldEVycm9yKCkgPT0gRUdM
X1NVQ0NFU1MpOworICAgIH0KKworICAgIHZvaWQgaW5pdGlhbGl6ZVN1cmZhY2VXaXRoRGVmYXVs
dENvbmZpZygpCisgICAgeworICAgICAgICBjb25zdCBFR0xpbnQgY29uZmlnQXR0cmlidXRlc1td
ID0KKyAgICAgICAgeworICAgICAgICAgICAgRUdMX1JFRF9TSVpFLCBFR0xfRE9OVF9DQVJFLAor
ICAgICAgICAgICAgRUdMX0dSRUVOX1NJWkUsIEVHTF9ET05UX0NBUkUsCisgICAgICAgICAgICBF
R0xfQkxVRV9TSVpFLCBFR0xfRE9OVF9DQVJFLAorICAgICAgICAgICAgRUdMX0FMUEhBX1NJWkUs
IEVHTF9ET05UX0NBUkUsCisgICAgICAgICAgICBFR0xfREVQVEhfU0laRSwgRUdMX0RPTlRfQ0FS
RSwKKyAgICAgICAgICAgIEVHTF9TVEVOQ0lMX1NJWkUsIEVHTF9ET05UX0NBUkUsCisgICAgICAg
ICAgICBFR0xfU0FNUExFX0JVRkZFUlMsIDAsCisgICAgICAgICAgICBFR0xfTk9ORQorICAgICAg
ICB9OworCisgICAgICAgIEVHTGludCBjb25maWdDb3VudDsKKyAgICAgICAgRUdMQ29uZmlnIGNv
bmZpZzsKKyAgICAgICAgQVNTRVJUX1RSVUUoZWdsQ2hvb3NlQ29uZmlnKG1EaXNwbGF5LCBjb25m
aWdBdHRyaWJ1dGVzLCAmY29uZmlnLCAxLCAmY29uZmlnQ291bnQpIHx8IChjb25maWdDb3VudCAh
PSAxKSA9PSBFR0xfVFJVRSk7CisKKyAgICAgICAgaW5pdGlhbGl6ZVN1cmZhY2UoY29uZmlnKTsK
KyAgICB9CisKKyAgICBHTHVpbnQgY3JlYXRlUHJvZ3JhbSgpCisgICAgeworICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyB0ZXN0VmVydGV4U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQorICAg
ICAgICAoCisgICAgICAgICAgICBhdHRyaWJ1dGUgaGlnaHAgdmVjNCBwb3NpdGlvbjsKKworICAg
ICAgICAgICAgdm9pZCBtYWluKHZvaWQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Z2xfUG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyB0ZXN0RnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTSEFERVJf
U09VUkNFCisgICAgICAgICgKKyAgICAgICAgICAgIHZvaWQgbWFpbih2b2lkKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwg
MS4wKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICByZXR1cm4gQ29tcGls
ZVByb2dyYW0odGVzdFZlcnRleFNoYWRlclNvdXJjZSwgdGVzdEZyYWdtZW50U2hhZGVyU291cmNl
KTsKKyAgICB9CisKKyAgICB2b2lkIGRyYXdXaXRoUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSkKKyAg
ICB7CisgICAgICAgIGdsQ2xlYXJDb2xvcigwLCAwLCAwLCAxKTsKKyAgICAgICAgZ2xDbGVhcihH
TF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAgICAgICBHTGludCBwb3NpdGlvbkxvY2F0aW9uID0g
Z2xHZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAicG9zaXRpb24iKTsKKworICAgICAgICBnbFVz
ZVByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICAgICAgY29uc3QgR0xmbG9hdCB2ZXJ0aWNlc1tdID0K
KyAgICAgICAgeworICAgICAgICAgICAgLTEuMGYsICAxLjBmLCAwLjVmLAorICAgICAgICAgICAg
LTEuMGYsIC0xLjBmLCAwLjVmLAorICAgICAgICAgICAgIDEuMGYsIC0xLjBmLCAwLjVmLAorCisg
ICAgICAgICAgICAtMS4wZiwgIDEuMGYsIDAuNWYsCisgICAgICAgICAgICAgMS4wZiwgLTEuMGYs
IDAuNWYsCisgICAgICAgICAgICAgMS4wZiwgIDEuMGYsIDAuNWYsCisgICAgICAgIH07CisKKyAg
ICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0aW9uTG9jYXRpb24sIDMsIEdMX0ZMT0FU
LCBHTF9GQUxTRSwgMCwgdmVydGljZXMpOworICAgICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5KHBvc2l0aW9uTG9jYXRpb24pOworCisgICAgICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdM
RVMsIDAsIDYpOworCisgICAgICAgIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHBvc2l0aW9u
TG9jYXRpb24pOworICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25Mb2NhdGlv
biwgNCwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCBOVUxMKTsKKworICAgICAgICBFWFBFQ1RfUElY
RUxfRVEobU9TV2luZG93LT5nZXRXaWR0aCgpIC8gMiwgbU9TV2luZG93LT5nZXRIZWlnaHQoKSAv
IDIsIDI1NSwgMCwgMCwgMjU1KTsKKyAgICB9CisKKyAgICB2b2lkIHJ1bk1lc3NhZ2VMb29wVGVz
dChFR0xTdXJmYWNlIHNlY29uZFN1cmZhY2UsIEVHTENvbnRleHQgc2Vjb25kQ29udGV4dCkKKyAg
ICB7CisgICAgICAgIGVnbE1ha2VDdXJyZW50KG1EaXNwbGF5LCBtV2luZG93U3VyZmFjZSwgbVdp
bmRvd1N1cmZhY2UsIG1Db250ZXh0KTsKKyAgICAgICAgQVNTRVJUX1RSVUUoZWdsR2V0RXJyb3Io
KSA9PSBFR0xfU1VDQ0VTUyk7CisKKyAgICAgICAgLy8gTWFrZSBhIHNlY29uZCBjb250ZXh0IGN1
cnJlbnQKKyAgICAgICAgZWdsTWFrZUN1cnJlbnQobURpc3BsYXksIHNlY29uZFN1cmZhY2UsIHNl
Y29uZFN1cmZhY2UsIHNlY29uZENvbnRleHQpOworICAgICAgICBlZ2xEZXN0cm95U3VyZmFjZSht
RGlzcGxheSwgbVdpbmRvd1N1cmZhY2UpOworCisgICAgICAgIC8vIENyZWF0ZSBzZWNvbmQgd2lu
ZG93IHN1cmZhY2UKKyAgICAgICAgc3RkOjp2ZWN0b3I8RUdMaW50PiBzdXJmYWNlQXR0cmlidXRl
czsKKyAgICAgICAgc3VyZmFjZUF0dHJpYnV0ZXMucHVzaF9iYWNrKEVHTF9OT05FKTsKKyAgICAg
ICAgc3VyZmFjZUF0dHJpYnV0ZXMucHVzaF9iYWNrKEVHTF9OT05FKTsKKworICAgICAgICBtV2lu
ZG93U3VyZmFjZSA9IGVnbENyZWF0ZVdpbmRvd1N1cmZhY2UobURpc3BsYXksIG1Db25maWcsIG1P
U1dpbmRvdy0+Z2V0TmF0aXZlV2luZG93KCksICZzdXJmYWNlQXR0cmlidXRlc1swXSk7CisgICAg
ICAgIEFTU0VSVF9UUlVFKGVnbEdldEVycm9yKCkgPT0gRUdMX1NVQ0NFU1MpOworCisgICAgICAg
IGVnbE1ha2VDdXJyZW50KG1EaXNwbGF5LCBtV2luZG93U3VyZmFjZSwgbVdpbmRvd1N1cmZhY2Us
IG1Db250ZXh0KTsKKyAgICAgICAgQVNTRVJUX1RSVUUoZWdsR2V0RXJyb3IoKSA9PSBFR0xfU1VD
Q0VTUyk7CisKKyAgICAgICAgbU9TV2luZG93LT5zaWduYWxUZXN0RXZlbnQoKTsKKyAgICAgICAg
bU9TV2luZG93LT5tZXNzYWdlTG9vcCgpOworICAgICAgICBBU1NFUlRfVFJVRShtT1NXaW5kb3ct
PmRpZFRlc3RFdmVudEZpcmUoKSk7CisKKyAgICAgICAgLy8gU2ltcGxlIG9wZXJhdGlvbiB0byB0
ZXN0IHRoZSBGQk8gaXMgc2V0IGFwcHJvcHJpYXRlbHkKKyAgICAgICAgZ2xDbGVhcihHTF9DT0xP
Ul9CVUZGRVJfQklUKTsKKyAgICB9CisKKyAgICBFR0xEaXNwbGF5IG1EaXNwbGF5OworICAgIEVH
TFN1cmZhY2UgbVdpbmRvd1N1cmZhY2U7CisgICAgRUdMU3VyZmFjZSBtUGJ1ZmZlclN1cmZhY2U7
CisgICAgRUdMQ29udGV4dCBtQ29udGV4dDsKKyAgICBFR0xDb250ZXh0IG1TZWNvbmRDb250ZXh0
OworICAgIEVHTENvbmZpZyBtQ29uZmlnOworICAgIE9TV2luZG93ICptT1NXaW5kb3c7Cit9Owor
CisvLyBUZXN0IGEgc3VyZmFjZSBidWcgd2hlcmUgd2UgY291bGQgaGF2ZSB0d28gV2luZG93IHN1
cmZhY2VzIGFjdGl2ZQorLy8gYXQgb25lIHRpbWUsIGJsb2NraW5nIG1lc3NhZ2UgbG9vcHMuIFNl
ZSBodHRwOi8vY3JidWcuY29tLzQ3NTA4NQorVEVTVF9GKEVHTFN1cmZhY2VUZXN0LCBNZXNzYWdl
TG9vcEJ1ZykKK3sKKyAgICBjb25zdCBjaGFyICpleHRlbnNpb25zU3RyaW5nID0gZWdsUXVlcnlT
dHJpbmcoRUdMX05PX0RJU1BMQVksIEVHTF9FWFRFTlNJT05TKTsKKyAgICBpZiAoc3Ryc3RyKGV4
dGVuc2lvbnNTdHJpbmcsICJFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfZDNkIikgPT0gbnVsbHB0
cikKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiRDNEIFBsYXRmb3JtIG5vdCBzdXBwb3J0
ZWQgaW4gQU5HTEUiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGluaXRpYWxpemVEaXNwbGF5KEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFKTsK
KyAgICBpbml0aWFsaXplU3VyZmFjZVdpdGhEZWZhdWx0Q29uZmlnKCk7CisKKyAgICBydW5NZXNz
YWdlTG9vcFRlc3QoRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19DT05URVhUKTsKK30KKworLy8gVGVz
dHMgdGhlIG1lc3NhZ2UgbG9vcCBidWcsIGJ1dCB3aXRoIHNldHRpbmcgYSBzZWNvbmQgY29udGV4
dAorLy8gaW5zdGVhZCBvZiBudWxsLgorVEVTVF9GKEVHTFN1cmZhY2VUZXN0LCBNZXNzYWdlTG9v
cEJ1Z0NvbnRleHQpCit7CisgICAgY29uc3QgY2hhciAqZXh0ZW5zaW9uc1N0cmluZyA9IGVnbFF1
ZXJ5U3RyaW5nKEVHTF9OT19ESVNQTEFZLCBFR0xfRVhURU5TSU9OUyk7CisgICAgaWYgKHN0cnN0
cihleHRlbnNpb25zU3RyaW5nLCAiRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlX2QzZCIpID09IG51
bGxwdHIpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIkQzRCBQbGF0Zm9ybSBub3Qgc3Vw
cG9ydGVkIGluIEFOR0xFIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpbml0aWFsaXplRGlzcGxheShFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdM
RSk7CisgICAgaW5pdGlhbGl6ZVN1cmZhY2VXaXRoRGVmYXVsdENvbmZpZygpOworCisgICAgcnVu
TWVzc2FnZUxvb3BUZXN0KG1QYnVmZmVyU3VyZmFjZSwgbVNlY29uZENvbnRleHQpOworfQorCisv
LyBUZXN0IGEgYnVnIHdoZXJlIGNhbGxpbmcgbWFrZUN1cnJlbnQgdHdpY2Ugd291bGQgcmVsZWFz
ZSB0aGUgc3VyZmFjZQorVEVTVF9GKEVHTFN1cmZhY2VUZXN0LCBNYWtlQ3VycmVudFR3aWNlKQor
eworI2lmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fQVBQTEUpICYmICFkZWZpbmVkKEFOR0xFX1NU
QU5EQUxPTkVfQlVJTEQpCisgICAgLy8gVE9ETyhjd2FsbGV6KSBNYWtlIGNvbnRleHQgY3JlYXRp
b24gcmV0dXJuIGF0IGxlYXN0IGFuIE9wZW5HTCBFUyAyIGNvbnRleHQgb24KKyAgICAvLyB0aGUg
TWFjIHRyeWJvdHMuCisgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgdGVtcG9yYXJpbHkg
c2tpcHBlZCBvbiB0aGUgTWFjIHRyeWJvdHMiIDw8IHN0ZDo6ZW5kbDsKKyAgICByZXR1cm47Cisj
ZW5kaWYKKworICAgIGluaXRpYWxpemVEaXNwbGF5KEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0RF
RkFVTFRfQU5HTEUpOworICAgIGluaXRpYWxpemVTdXJmYWNlV2l0aERlZmF1bHRDb25maWcoKTsK
KworICAgIGVnbE1ha2VDdXJyZW50KG1EaXNwbGF5LCBtV2luZG93U3VyZmFjZSwgbVdpbmRvd1N1
cmZhY2UsIG1Db250ZXh0KTsKKyAgICBBU1NFUlRfVFJVRShlZ2xHZXRFcnJvcigpID09IEVHTF9T
VUNDRVNTKTsKKworICAgIGVnbE1ha2VDdXJyZW50KG1EaXNwbGF5LCBtV2luZG93U3VyZmFjZSwg
bVdpbmRvd1N1cmZhY2UsIG1Db250ZXh0KTsKKyAgICBBU1NFUlRfVFJVRShlZ2xHZXRFcnJvcigp
ID09IEVHTF9TVUNDRVNTKTsKKworICAgIC8vIFNpbXBsZSBvcGVyYXRpb24gdG8gdGVzdCB0aGUg
RkJPIGlzIHNldCBhcHByb3ByaWF0ZWx5CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklU
KTsKK30KKworLy8gVGVzdCB0aGF0IHRoZSBEM0Qgd2luZG93IHN1cmZhY2UgaXMgY29ycmVjdGx5
IHJlc2l6ZWQgYWZ0ZXIgY2FsbGluZyBzd2FwQnVmZmVycworVEVTVF9GKEVHTFN1cmZhY2VUZXN0
LCBSZXNpemVEM0RXaW5kb3cpCit7CisgICAgY29uc3QgY2hhciAqZXh0ZW5zaW9uc1N0cmluZyA9
IGVnbFF1ZXJ5U3RyaW5nKEVHTF9OT19ESVNQTEFZLCBFR0xfRVhURU5TSU9OUyk7CisgICAgaWYg
KHN0cnN0cihleHRlbnNpb25zU3RyaW5nLCAiRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlX2QzZCIp
ID09IG51bGxwdHIpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIkQzRCBQbGF0Zm9ybSBu
b3Qgc3VwcG9ydGVkIGluIEFOR0xFIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpbml0aWFsaXplRGlzcGxheShFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0Qx
MV9BTkdMRSk7CisgICAgaW5pdGlhbGl6ZVN1cmZhY2VXaXRoRGVmYXVsdENvbmZpZygpOworCisg
ICAgZWdsU3dhcEJ1ZmZlcnMobURpc3BsYXksIG1XaW5kb3dTdXJmYWNlKTsKKyAgICBBU1NFUlRf
RUdMX1NVQ0NFU1MoKTsKKworICAgIEVHTGludCBoZWlnaHQ7CisgICAgZWdsUXVlcnlTdXJmYWNl
KG1EaXNwbGF5LCBtV2luZG93U3VyZmFjZSwgRUdMX0hFSUdIVCwgJmhlaWdodCk7CisgICAgQVNT
RVJUX0VHTF9TVUNDRVNTKCk7CisgICAgQVNTRVJUX0VRKDY0LCBoZWlnaHQpOyAgLy8gaW5pdGlh
bCBzaXplCisKKyAgICAvLyBzZXQgd2luZG93J3MgaGVpZ2h0IHRvIDAKKyAgICBtT1NXaW5kb3ct
PnJlc2l6ZSg2NCwgMCk7CisKKyAgICBlZ2xTd2FwQnVmZmVycyhtRGlzcGxheSwgbVdpbmRvd1N1
cmZhY2UpOworICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworCisgICAgZWdsUXVlcnlTdXJmYWNl
KG1EaXNwbGF5LCBtV2luZG93U3VyZmFjZSwgRUdMX0hFSUdIVCwgJmhlaWdodCk7CisgICAgQVNT
RVJUX0VHTF9TVUNDRVNTKCk7CisgICAgQVNTRVJUX0VRKDAsIGhlaWdodCk7CisKKyAgICAvLyBy
ZXN0b3JlIHdpbmRvdydzIGhlaWdodAorICAgIG1PU1dpbmRvdy0+cmVzaXplKDY0LCA2NCk7CisK
KyAgICBlZ2xTd2FwQnVmZmVycyhtRGlzcGxheSwgbVdpbmRvd1N1cmZhY2UpOworICAgIEFTU0VS
VF9FR0xfU1VDQ0VTUygpOworCisgICAgZWdsUXVlcnlTdXJmYWNlKG1EaXNwbGF5LCBtV2luZG93
U3VyZmFjZSwgRUdMX0hFSUdIVCwgJmhlaWdodCk7CisgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7
CisgICAgQVNTRVJUX0VRKDY0LCBoZWlnaHQpOworfQorCisvLyBUZXN0IGNyZWF0aW5nIGEgc3Vy
ZmFjZSB0aGF0IHN1cHBvcnRzIGEgRUdMQ29uZmlnIHdpdGggMTZiaXQKKy8vIHN1cHBvcnQgR0xf
UkdCNTY1CitURVNUX0YoRUdMU3VyZmFjZVRlc3QsIENyZWF0ZVdpdGhFR0xDb25maWc1NjUwU3Vw
cG9ydCkKK3sKKyAgICBpZiAoIUFOR0xFVGVzdDo6ZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQo
RUdMX05PX0RJU1BMQVksICJFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfZDNkIikpCisgICAgewor
ICAgICAgICBzdGQ6OmNvdXQgPDwgIkQzRCBQbGF0Zm9ybSBub3Qgc3VwcG9ydGVkIGluIEFOR0xF
IiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCBFR0xp
bnQgY29uZmlnQXR0cmlidXRlc1tdID0KKyAgICB7CisgICAgICAgIEVHTF9SRURfU0laRSwgNSwK
KyAgICAgICAgRUdMX0dSRUVOX1NJWkUsIDYsCisgICAgICAgIEVHTF9CTFVFX1NJWkUsIDUsCisg
ICAgICAgIEVHTF9BTFBIQV9TSVpFLCAwLAorICAgICAgICBFR0xfREVQVEhfU0laRSwgMCwKKyAg
ICAgICAgRUdMX1NURU5DSUxfU0laRSwgMCwKKyAgICAgICAgRUdMX1NBTVBMRV9CVUZGRVJTLCAw
LAorICAgICAgICBFR0xfTk9ORQorICAgIH07CisKKyAgICBpbml0aWFsaXplRGlzcGxheShFR0xf
UExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSk7CisgICAgRUdMQ29uZmlnIGNvbmZpZzsK
KyAgICBpZiAoRUdMV2luZG93OjpGaW5kRUdMQ29uZmlnKG1EaXNwbGF5LCBjb25maWdBdHRyaWJ1
dGVzLCAmY29uZmlnKSA9PSBFR0xfRkFMU0UpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwg
IkVHTENvbmZpZyBmb3IgYSBHTF9SR0I1NjUgc3VyZmFjZSBpcyBub3Qgc3VwcG9ydGVkLCBza2lw
cGluZyB0ZXN0IiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
bml0aWFsaXplU3VyZmFjZShjb25maWcpOworCisgICAgZWdsTWFrZUN1cnJlbnQobURpc3BsYXks
IG1XaW5kb3dTdXJmYWNlLCBtV2luZG93U3VyZmFjZSwgbUNvbnRleHQpOworICAgIEFTU0VSVF9F
R0xfU1VDQ0VTUygpOworCisgICAgR0x1aW50IHByb2dyYW0gPSBjcmVhdGVQcm9ncmFtKCk7Cisg
ICAgQVNTRVJUX05FKDB1LCBwcm9ncmFtKTsKKyAgICBkcmF3V2l0aFByb2dyYW0ocHJvZ3JhbSk7
CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgZ2xEZWxldGVQcm9ncmFtKHByb2dyYW0p
OworfQorCisvLyBUZXN0IGNyZWF0aW5nIGEgc3VyZmFjZSB0aGF0IHN1cHBvcnRzIGEgRUdMQ29u
ZmlnIHdpdGggMTZiaXQKKy8vIHN1cHBvcnQgR0xfUkdCQTQKK1RFU1RfRihFR0xTdXJmYWNlVGVz
dCwgQ3JlYXRlV2l0aEVHTENvbmZpZzQ0NDRTdXBwb3J0KQoreworICAgIGlmICghQU5HTEVUZXN0
OjplZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZChFR0xfTk9fRElTUExBWSwgIkVHTF9BTkdMRV9w
bGF0Zm9ybV9hbmdsZV9kM2QiKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiRDNEIFBs
YXRmb3JtIG5vdCBzdXBwb3J0ZWQgaW4gQU5HTEUiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGNvbnN0IEVHTGludCBjb25maWdBdHRyaWJ1dGVzW10gPQorICAg
IHsKKyAgICAgICAgRUdMX1JFRF9TSVpFLCA0LAorICAgICAgICBFR0xfR1JFRU5fU0laRSwgNCwK
KyAgICAgICAgRUdMX0JMVUVfU0laRSwgNCwKKyAgICAgICAgRUdMX0FMUEhBX1NJWkUsIDQsCisg
ICAgICAgIEVHTF9ERVBUSF9TSVpFLCAwLAorICAgICAgICBFR0xfU1RFTkNJTF9TSVpFLCAwLAor
ICAgICAgICBFR0xfU0FNUExFX0JVRkZFUlMsIDAsCisgICAgICAgIEVHTF9OT05FCisgICAgfTsK
KworICAgIGluaXRpYWxpemVEaXNwbGF5KEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FO
R0xFKTsKKyAgICBFR0xDb25maWcgY29uZmlnOworICAgIGlmIChFR0xXaW5kb3c6OkZpbmRFR0xD
b25maWcobURpc3BsYXksIGNvbmZpZ0F0dHJpYnV0ZXMsICZjb25maWcpID09IEVHTF9GQUxTRSkK
KyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiRUdMQ29uZmlnIGZvciBhIEdMX1JHQkE0IHN1
cmZhY2UgaXMgbm90IHN1cHBvcnRlZCwgc2tpcHBpbmcgdGVzdCIgPDwgc3RkOjplbmRsOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaW5pdGlhbGl6ZVN1cmZhY2UoY29uZmlnKTsKKwor
ICAgIGVnbE1ha2VDdXJyZW50KG1EaXNwbGF5LCBtV2luZG93U3VyZmFjZSwgbVdpbmRvd1N1cmZh
Y2UsIG1Db250ZXh0KTsKKyAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKworICAgIEdMdWludCBw
cm9ncmFtID0gY3JlYXRlUHJvZ3JhbSgpOworICAgIEFTU0VSVF9ORSgwdSwgcHJvZ3JhbSk7Cisg
ICAgZHJhd1dpdGhQcm9ncmFtKHByb2dyYW0pOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwor
ICAgIGdsRGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKK30KKworLy8gVGVzdCBjcmVhdGluZyBhIHN1
cmZhY2UgdGhhdCBzdXBwb3J0cyBhIEVHTENvbmZpZyB3aXRoIDE2Yml0CisvLyBzdXBwb3J0IEdM
X1JHQjVfQTEKK1RFU1RfRihFR0xTdXJmYWNlVGVzdCwgQ3JlYXRlV2l0aEVHTENvbmZpZzU1NTFT
dXBwb3J0KQoreworICAgIGlmICghQU5HTEVUZXN0OjplZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxl
ZChFR0xfTk9fRElTUExBWSwgIkVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9kM2QiKSkKKyAgICB7
CisgICAgICAgIHN0ZDo6Y291dCA8PCAiRDNEIFBsYXRmb3JtIG5vdCBzdXBwb3J0ZWQgaW4gQU5H
TEUiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IEVH
TGludCBjb25maWdBdHRyaWJ1dGVzW10gPQorICAgIHsKKyAgICAgICAgRUdMX1JFRF9TSVpFLCA1
LAorICAgICAgICBFR0xfR1JFRU5fU0laRSwgNSwKKyAgICAgICAgRUdMX0JMVUVfU0laRSwgNSwK
KyAgICAgICAgRUdMX0FMUEhBX1NJWkUsIDEsCisgICAgICAgIEVHTF9ERVBUSF9TSVpFLCAwLAor
ICAgICAgICBFR0xfU1RFTkNJTF9TSVpFLCAwLAorICAgICAgICBFR0xfU0FNUExFX0JVRkZFUlMs
IDAsCisgICAgICAgIEVHTF9OT05FCisgICAgfTsKKworICAgIGluaXRpYWxpemVEaXNwbGF5KEVH
TF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFKTsKKyAgICBFR0xDb25maWcgY29uZmln
OworICAgIGlmIChFR0xXaW5kb3c6OkZpbmRFR0xDb25maWcobURpc3BsYXksIGNvbmZpZ0F0dHJp
YnV0ZXMsICZjb25maWcpID09IEVHTF9GQUxTRSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8
PCAiRUdMQ29uZmlnIGZvciBhIEdMX1JHQjVfQTEgc3VyZmFjZSBpcyBub3Qgc3VwcG9ydGVkLCBz
a2lwcGluZyB0ZXN0IiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBpbml0aWFsaXplU3VyZmFjZShjb25maWcpOworCisgICAgZWdsTWFrZUN1cnJlbnQobURpc3Bs
YXksIG1XaW5kb3dTdXJmYWNlLCBtV2luZG93U3VyZmFjZSwgbUNvbnRleHQpOworICAgIEFTU0VS
VF9FR0xfU1VDQ0VTUygpOworCisgICAgR0x1aW50IHByb2dyYW0gPSBjcmVhdGVQcm9ncmFtKCk7
CisgICAgQVNTRVJUX05FKDB1LCBwcm9ncmFtKTsKKyAgICBkcmF3V2l0aFByb2dyYW0ocHJvZ3Jh
bSk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgZ2xEZWxldGVQcm9ncmFtKHByb2dy
YW0pOworfQorCisvLyBUZXN0IGNyZWF0aW5nIGEgc3VyZmFjZSB0aGF0IHN1cHBvcnRzIGEgRUdM
Q29uZmlnIHdpdGhvdXQgYWxwaGEgc3VwcG9ydAorVEVTVF9GKEVHTFN1cmZhY2VUZXN0LCBDcmVh
dGVXaXRoRUdMQ29uZmlnODg4MFN1cHBvcnQpCit7CisgICAgaWYgKCFBTkdMRVRlc3Q6OmVnbERp
c3BsYXlFeHRlbnNpb25FbmFibGVkKEVHTF9OT19ESVNQTEFZLCAiRUdMX0FOR0xFX3BsYXRmb3Jt
X2FuZ2xlX2QzZCIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJEM0QgUGxhdGZvcm0g
bm90IHN1cHBvcnRlZCBpbiBBTkdMRSIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgY29uc3QgRUdMaW50IGNvbmZpZ0F0dHJpYnV0ZXNbXSA9CisgICAgeworICAg
ICAgICBFR0xfUkVEX1NJWkUsIDgsCisgICAgICAgIEVHTF9HUkVFTl9TSVpFLCA4LAorICAgICAg
ICBFR0xfQkxVRV9TSVpFLCA4LAorICAgICAgICBFR0xfQUxQSEFfU0laRSwgMCwKKyAgICAgICAg
RUdMX0RFUFRIX1NJWkUsIDAsCisgICAgICAgIEVHTF9TVEVOQ0lMX1NJWkUsIDAsCisgICAgICAg
IEVHTF9TQU1QTEVfQlVGRkVSUywgMCwKKyAgICAgICAgRUdMX05PTkUKKyAgICB9OworCisgICAg
aW5pdGlhbGl6ZURpc3BsYXkoRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUpOwor
ICAgIEVHTENvbmZpZyBjb25maWc7CisgICAgaWYgKEVHTFdpbmRvdzo6RmluZEVHTENvbmZpZyht
RGlzcGxheSwgY29uZmlnQXR0cmlidXRlcywgJmNvbmZpZykgPT0gRUdMX0ZBTFNFKQorICAgIHsK
KyAgICAgICAgc3RkOjpjb3V0IDw8ICJFR0xDb25maWcgZm9yIGEgR0xfUkdCOF9PRVMgc3VyZmFj
ZSBpcyBub3Qgc3VwcG9ydGVkLCBza2lwcGluZyB0ZXN0IgorICAgICAgICAgICAgICAgICAgPDwg
c3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW5pdGlhbGl6ZVN1cmZh
Y2UoY29uZmlnKTsKKworICAgIGVnbE1ha2VDdXJyZW50KG1EaXNwbGF5LCBtV2luZG93U3VyZmFj
ZSwgbVdpbmRvd1N1cmZhY2UsIG1Db250ZXh0KTsKKyAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsK
KworICAgIEdMdWludCBwcm9ncmFtID0gY3JlYXRlUHJvZ3JhbSgpOworICAgIEFTU0VSVF9ORSgw
dSwgcHJvZ3JhbSk7CisgICAgZHJhd1dpdGhQcm9ncmFtKHByb2dyYW0pOworICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworICAgIGdsRGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKK30KK30KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMU3luY0NvbnRy
b2xUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvZWdsX3Rlc3RzL0VHTFN5bmNDb250cm9sVGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xTeW5jQ29udHJvbFRl
c3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjcwIEBACisvLworLy8gQ29weXJpZ2h0
IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaWZu
ZGVmIEFOR0xFX0VOQUJMRV9EM0Q5CisjZGVmaW5lIEFOR0xFX0VOQUJMRV9EM0Q5CisjZW5kaWYK
KworI2lmbmRlZiBBTkdMRV9FTkFCTEVfRDNEMTEKKyNkZWZpbmUgQU5HTEVfRU5BQkxFX0QzRDEx
CisjZW5kaWYKKworI2luY2x1ZGUgPGQzZDExLmg+CisjaW5jbHVkZSA8RUdML2VnbC5oPgorI2lu
Y2x1ZGUgPEVHTC9lZ2xleHQuaD4KKworI2luY2x1ZGUgImNvbV91dGlscy5oIgorI2luY2x1ZGUg
Ik9TV2luZG93LmgiCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKwordXNpbmcg
bmFtZXNwYWNlIGFuZ2xlOworCit0eXBlZGVmIEVHTEJvb2xlYW4oRUdMQVBJRU5UUllQIFBGTkVH
TEdFVFNZTkNWQUxVRVNDSFJPTUlVTVBST0MpKEVHTERpc3BsYXkgZHB5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xT
dXJmYWNlIHN1cmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEVHTHVpbnQ2NEtIUiAqdXN0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0x1
aW50NjRLSFIgKm1zYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRUdMdWludDY0S0hSICpzYmMpOworCitjbGFzcyBFR0xT
eW5jQ29udHJvbFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdAoreworICBwcm90ZWN0ZWQ6Cisg
ICAgRUdMU3luY0NvbnRyb2xUZXN0KCkge30KKworICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgbUQzRDExTW9kdWxlID0gTG9hZExpYnJhcnkoVEVYVCgiZDNkMTEuZGxs
IikpOworICAgICAgICBpZiAobUQzRDExTW9kdWxlID09IG51bGxwdHIpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN0ZDo6Y291dCA8PCAiVW5hYmxlIHRvIExvYWRMaWJyYXJ5IEQzRDExIiA8PCBz
dGQ6OmVuZGw7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtRDNE
MTFDcmVhdGVEZXZpY2UgPSByZWludGVycHJldF9jYXN0PFBGTl9EM0QxMV9DUkVBVEVfREVWSUNF
PigKKyAgICAgICAgICAgIEdldFByb2NBZGRyZXNzKG1EM0QxMU1vZHVsZSwgIkQzRDExQ3JlYXRl
RGV2aWNlIikpOworICAgICAgICBpZiAobUQzRDExQ3JlYXRlRGV2aWNlID09IG51bGxwdHIpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiQ291bGQgbm90IHJldHJpZXZlIEQz
RDExQ3JlYXRlRGV2aWNlIGZyb20gZDNkMTEuZGxsIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtRDNEMTFBdmFpbGFibGUgPSB0cnVlOwor
CisgICAgICAgIGNvbnN0IGNoYXIgKmV4dGVuc2lvblN0cmluZyA9CisgICAgICAgICAgICBzdGF0
aWNfY2FzdDxjb25zdCBjaGFyICo+KGVnbFF1ZXJ5U3RyaW5nKEVHTF9OT19ESVNQTEFZLCBFR0xf
RVhURU5TSU9OUykpOworICAgICAgICBpZiAoc3Ryc3RyKGV4dGVuc2lvblN0cmluZywgIkVHTF9B
TkdMRV9kZXZpY2VfY3JlYXRpb24iKSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHN0cnN0
cihleHRlbnNpb25TdHJpbmcsICJFR0xfQU5HTEVfZGV2aWNlX2NyZWF0aW9uX2QzZDExIikpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbURldmljZUNyZWF0aW9uRDNEMTFFeHRBdmFp
bGFibGUgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZWdsR2V0
U3luY1ZhbHVlc0NIUk9NSVVNID0gcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xHRVRTWU5DVkFMVUVT
Q0hST01JVU1QUk9DPigKKyAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJlZ2xHZXRTeW5j
VmFsdWVzQ0hST01JVU0iKSk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRl
CisgICAgeworICAgICAgICBTYWZlUmVsZWFzZShtRGV2aWNlKTsKKyAgICAgICAgU2FmZVJlbGVh
c2UobURldmljZUNvbnRleHQpOworCisgICAgICAgIFNhZmVEZWxldGUobU9TV2luZG93KTsKKwor
ICAgICAgICBpZiAobVN1cmZhY2UgIT0gRUdMX05PX1NVUkZBQ0UpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGVnbERlc3Ryb3lTdXJmYWNlKG1EaXNwbGF5LCBtU3VyZmFjZSk7CisgICAgICAgICAg
ICBtU3VyZmFjZSA9IEVHTF9OT19TVVJGQUNFOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1D
b250ZXh0ICE9IEVHTF9OT19DT05URVhUKQorICAgICAgICB7CisgICAgICAgICAgICBlZ2xEZXN0
cm95Q29udGV4dChtRGlzcGxheSwgbUNvbnRleHQpOworICAgICAgICAgICAgbUNvbnRleHQgPSBF
R0xfTk9fQ09OVEVYVDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtRGlzcGxheSAhPSBFR0xf
Tk9fRElTUExBWSkKKyAgICAgICAgeworICAgICAgICAgICAgZWdsVGVybWluYXRlKG1EaXNwbGF5
KTsKKyAgICAgICAgICAgIG1EaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICB2b2lkIENyZWF0ZUQzRDExRGV2aWNlKCkKKyAgICB7CisgICAgICAgIEFTU0VS
VF9UUlVFKG1EM0QxMUF2YWlsYWJsZSk7CisgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBtRGV2
aWNlKTsgIC8vIFRoZSBkZXZpY2Ugc2hvdWxkbid0IGJlIGNyZWF0ZWQgdHdpY2UKKworICAgICAg
ICBIUkVTVUxUIGhyID0KKyAgICAgICAgICAgIG1EM0QxMUNyZWF0ZURldmljZShudWxscHRyLCBE
M0RfRFJJVkVSX1RZUEVfSEFSRFdBUkUsIDAsIDAsIG51bGxwdHIsIDAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRDNEMTFfU0RLX1ZFUlNJT04sICZtRGV2aWNlLCAmbUZlYXR1cmVM
ZXZlbCwgJm1EZXZpY2VDb250ZXh0KTsKKworICAgICAgICBBU1NFUlRfVFJVRShTVUNDRUVERUQo
aHIpKTsKKyAgICB9CisKKyAgICB2b2lkIEluaXRpYWxpemVEaXNwbGF5KCkKKyAgICB7CisgICAg
ICAgIEVHTGludCBkaXNwbGF5QXR0cmlic1tdID0ge0VHTF9QTEFURk9STV9BTkdMRV9UWVBFX0FO
R0xFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfUExBVEZPUk1fQU5H
TEVfVFlQRV9EM0QxMV9BTkdMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RUdMX1BMQVRGT1JNX0FOR0xFX01BWF9WRVJTSU9OX01BSk9SX0FOR0xFLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFR0xfRE9OVF9DQVJFLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfTUFYX1ZFUlNJT05fTUlOT1JfQU5H
TEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9ET05UX0NBUkUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJ
Q0VfVFlQRV9BTkdMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX1BM
QVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0hBUkRXQVJFX0FOR0xFLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFR0xfTk9ORX07CisKKyAgICAgICAgLy8gQ3JlYXRlIGFuIE9T
IFdpbmRvdworICAgICAgICBtT1NXaW5kb3cgPSBDcmVhdGVPU1dpbmRvdygpOworICAgICAgICBt
T1NXaW5kb3ctPmluaXRpYWxpemUoIkVHTFN5bmNDb250cm9sVGVzdCIsIDY0LCA2NCk7CisgICAg
ICAgIG1PU1dpbmRvdy0+c2V0VmlzaWJsZSh0cnVlKTsKKworICAgICAgICAvLyBDcmVhdGUgYW4g
RUdMRGlzcGxheSB1c2luZyB0aGUgRUdMRGV2aWNlCisgICAgICAgIG1EaXNwbGF5ID0gZWdsR2V0
UGxhdGZvcm1EaXNwbGF5RVhUKEVHTF9QTEFURk9STV9BTkdMRV9BTkdMRSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkICo+
KG1PU1dpbmRvdy0+Z2V0TmF0aXZlRGlzcGxheSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUF0dHJpYnMpOworICAgICAgICBBU1NFUlRfVFJV
RShtRGlzcGxheSAhPSBFR0xfTk9fRElTUExBWSk7CisKKyAgICAgICAgRUdMaW50IG1ham9yVmVy
c2lvbiwgbWlub3JWZXJzaW9uOworICAgICAgICBBU1NFUlRfVFJVRShlZ2xJbml0aWFsaXplKG1E
aXNwbGF5LCAmbWFqb3JWZXJzaW9uLCAmbWlub3JWZXJzaW9uKSA9PSBFR0xfVFJVRSk7CisgICAg
fQorCisgICAgdm9pZCBDcmVhdGVXaW5kb3dTdXJmYWNlKCkKKyAgICB7CisgICAgICAgIGVnbEJp
bmRBUEkoRUdMX09QRU5HTF9FU19BUEkpOworICAgICAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsK
KworICAgICAgICAvLyBDaG9vc2UgYSBjb25maWcKKyAgICAgICAgY29uc3QgRUdMaW50IGNvbmZp
Z0F0dHJpYnV0ZXNbXSA9IHtFR0xfTk9ORX07CisKKyAgICAgICAgRUdMaW50IGNvbmZpZ0NvdW50
ID0gMDsKKyAgICAgICAgQVNTRVJUX0VHTF9UUlVFKGVnbENob29zZUNvbmZpZyhtRGlzcGxheSwg
Y29uZmlnQXR0cmlidXRlcywgJm1Db25maWcsIDEsICZjb25maWdDb3VudCkpOworCisgICAgICAg
IGNvbnN0IEVHTGludCBzdXJmYWNlQXR0cmlidXRlc1tdID0ge0VHTF9ESVJFQ1RfQ09NUE9TSVRJ
T05fQU5HTEUsIEVHTF9UUlVFLCBFR0xfTk9ORX07CisKKyAgICAgICAgLy8gQ3JlYXRlIHdpbmRv
dyBzdXJmYWNlCisgICAgICAgIG1TdXJmYWNlID0gZWdsQ3JlYXRlV2luZG93U3VyZmFjZShtRGlz
cGxheSwgbUNvbmZpZywgbU9TV2luZG93LT5nZXROYXRpdmVXaW5kb3coKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cmZhY2VBdHRyaWJ1dGVzKTsKKyAgICAg
ICAgaWYgKG1TdXJmYWNlID09IG51bGxwdHIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0ZDo6
Y291dCA8PCAiVW5hYmxlIHRvIGNyZWF0ZSB3aW5kb3cgc3VyZmFjZSB3aXRoIERpcmVjdCBDb21w
b3NpdGlvbiIgPDwgc3RkOjplbmRsOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgbURpcmVjdENvbXBvc2l0aW9uU3VyZmFjZUF2YWlsYWJsZSA9IHRydWU7CisKKyAg
ICAgICAgLy8gQ3JlYXRlIEVHTCBjb250ZXh0CisgICAgICAgIEVHTGludCBjb250ZXh0QXR0aWJ1
dGVzW10gPSB7RUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04sIDIsIEVHTF9OT05FfTsKKworICAg
ICAgICBtQ29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQobURpc3BsYXksIG1Db25maWcsIG51bGxw
dHIsIGNvbnRleHRBdHRpYnV0ZXMpOworICAgICAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKwor
ICAgICAgICAvLyBNYWtlIHRoZSBzdXJmYWNlIGN1cnJlbnQKKyAgICAgICAgZWdsTWFrZUN1cnJl
bnQobURpc3BsYXksIG1TdXJmYWNlLCBtU3VyZmFjZSwgbUNvbnRleHQpOworICAgICAgICBBU1NF
UlRfRUdMX1NVQ0NFU1MoKTsKKyAgICB9CisKKyAgICBib29sIG1EM0QxMUF2YWlsYWJsZSAgICAg
ICAgICAgICAgICAgICAgICAgPSBmYWxzZTsKKyAgICBITU9EVUxFIG1EM0QxMU1vZHVsZSAgICAg
ICAgICAgICAgICAgICAgICAgPSBudWxscHRyOworICAgIFBGTl9EM0QxMV9DUkVBVEVfREVWSUNF
IG1EM0QxMUNyZWF0ZURldmljZSA9IG51bGxwdHI7CisKKyAgICBJRDNEMTFEZXZpY2UgKm1EZXZp
Y2UgICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgSUQzRDExRGV2aWNlQ29udGV4dCAqbURl
dmljZUNvbnRleHQgPSBudWxscHRyOworICAgIEQzRF9GRUFUVVJFX0xFVkVMIG1GZWF0dXJlTGV2
ZWw7CisKKyAgICBib29sIG1EZXZpY2VDcmVhdGlvbkQzRDExRXh0QXZhaWxhYmxlID0gZmFsc2U7
CisKKyAgICBib29sIG1EaXJlY3RDb21wb3NpdGlvblN1cmZhY2VBdmFpbGFibGUgPSBmYWxzZTsK
KworICAgIE9TV2luZG93ICptT1NXaW5kb3cgPSBudWxscHRyOworCisgICAgRUdMRGlzcGxheSBt
RGlzcGxheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBFR0xfTk9fRElT
UExBWTsKKyAgICBFR0xTdXJmYWNlIG1TdXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEVHTF9OT19TVVJGQUNFOworICAgIEVHTENvbnRleHQgbUNvbnRleHQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRUdMX05PX0NPTlRFWFQ7CisgICAg
RUdMQ29uZmlnIG1Db25maWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAwOworICAgIFBGTkVHTEdFVFNZTkNWQUxVRVNDSFJPTUlVTVBST0MgZWdsR2V0U3luY1ZhbHVl
c0NIUk9NSVVNID0gbnVsbHB0cjsKK307CisKKy8vIEJhc2ljIHRlc3QgZm9yIGVnbEdldFN5bmNW
YWx1ZXNDSFJPTUlVTSBleHRlbnNpb24uIFZlcmlmaWVzIHRoYXQgZWdsR2V0U3luY1ZhbHVlc0NI
Uk9NSVVNCisvLyBjYW4gYmUgY2FsbGVkIG9uIERYMTEgd2l0aCBkaXJlY3QgY29tcG9zaXRpb24g
YW5kIHRoYXQgaXQgcmV0dXJucyByZWFzb25hYmxlIGVub3VnaCB2YWx1ZXMuCitURVNUX0YoRUdM
U3luY0NvbnRyb2xUZXN0LCBTeW5jVmFsdWVzVGVzdCkKK3sKKyAgICBzdGF0aWMgY29uc3QgRFdP
UkQga1BvbGxJbnRlcnZhbCAgICA9IDEwOworICAgIHN0YXRpYyBjb25zdCBpbnQga051bVBvbGxJ
dGVyYXRpb25zID0gMTAwOworCisgICAgaWYgKCFtRDNEMTFBdmFpbGFibGUpCisgICAgeworICAg
ICAgICBzdGQ6OmNvdXQgPDwgIkQzRDExIG5vdCBhdmFpbGFibGUsIHNraXBwaW5nIHRlc3QiIDw8
IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIENyZWF0ZUQzRDExRGV2
aWNlKCk7CisgICAgSW5pdGlhbGl6ZURpc3BsYXkoKTsKKyAgICBDcmVhdGVXaW5kb3dTdXJmYWNl
KCk7CisKKyAgICBpZiAoIW1EaXJlY3RDb21wb3NpdGlvblN1cmZhY2VBdmFpbGFibGUpCisgICAg
eworICAgICAgICBzdGQ6OmNvdXQgPDwgIkRpcmVjdCBDb21wb3NpdGlvbiBzdXJmYWNlIG5vdCBh
dmFpbGFibGUsIHNraXBwaW5nIHRlc3QiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGNvbnN0IGNoYXIgKmV4dGVuc2lvblN0cmluZyA9CisgICAgICAgIHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIgKj4oZWdsUXVlcnlTdHJpbmcobURpc3BsYXksIEVHTF9FWFRFTlNJ
T05TKSk7CisgICAgQVNTRVJUX1RSVUUoc3Ryc3RyKGV4dGVuc2lvblN0cmluZywgIkVHTF9DSFJP
TUlVTV9zeW5jX2NvbnRyb2wiKSk7CisKKyAgICBFR0x1aW50NjRLSFIgdXN0ID0gMCwgbXNjID0g
MCwgc2JjID0gMDsKKyAgICAvLyBJdCBhcHBlYXJzIHRoZXJlIGlzIGEgcmFjZSBjb25kaXRpb24g
c28gdGhlIHZlcnkgZmlyc3QgY2FsbCB0byBlZ2xHZXRTeW5jVmFsdWVzQ0hST01JVU0KKyAgICAv
LyBjYW4gZmFpbCB3aXRoaW4gRDNEIHdpdGggRFhHSV9FUlJPUl9GUkFNRV9TVEFUSVNUSUNTX0RJ
U0pPSU5ULgorICAgIC8vIFNob3VsZCB0aGF0IGJlIGhhbmRsZWQgaW5zaWRlIGVnbEdldFN5bmNW
YWx1ZXNDSFJPTUlVTT8KKyAgICBlZ2xHZXRTeW5jVmFsdWVzQ0hST01JVU0obURpc3BsYXksIG1T
dXJmYWNlLCAmdXN0LCAmbXNjLCAmc2JjKTsKKworICAgIEFTU0VSVF9FR0xfVFJVRShlZ2xHZXRT
eW5jVmFsdWVzQ0hST01JVU0obURpc3BsYXksIG1TdXJmYWNlLCAmdXN0LCAmbXNjLCAmc2JjKSk7
CisgICAgLy8gSW5pdGlhbCBtc2MgYW5kIHNiYyB2YWx1ZSBzaG91bGQgYmUgdHJ1ZS4gSW5pdGlh
bCB1c3QgdmFsdWUgaXMgdW5zcGVjaWZpZWQuCisgICAgQVNTRVJUX0VRKDB1bGwsIG1zYyk7Cisg
ICAgQVNTRVJUX0VRKDB1bGwsIHNiYyk7CisKKyAgICAvLyBQZXJmb3JtIHNvbWUgdmVyeSBiYXNp
YyByZW5kZXJpbmcuCisgICAgZ2xDbGVhckNvbG9yKDEuMGYsIDAuMGYsIDEuMGYsIDEuMGYpOwor
ICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7CisKKyAgICBBU1NFUlRfRUdMX1RSVUUoZWdsU3dhcEJ1ZmZlcnMobURpc3BsYXksIG1TdXJm
YWNlKSk7CisKKyAgICAvLyBQb2xsIHVudGlsIHNiYyB2YWx1ZSBpbmNyZWFzZXMuIE5vcm1hbGx5
IGl0IHNob3VsZCBjaGFuZ2Ugd2l0aGluIDE2LTE3IG1zLgorICAgIGZvciAoaW50IGkgPSAwOyBp
IDwga051bVBvbGxJdGVyYXRpb25zOyBpKyspCisgICAgeworICAgICAgICA6OlNsZWVwKGtQb2xs
SW50ZXJ2YWwpOworICAgICAgICBBU1NFUlRfRUdMX1RSVUUoZWdsR2V0U3luY1ZhbHVlc0NIUk9N
SVVNKG1EaXNwbGF5LCBtU3VyZmFjZSwgJnVzdCwgJm1zYywgJnNiYykpOworICAgICAgICBpZiAo
c2JjID4gMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIC8vIHNiYyBzaG91bGQg
Y2hhbmdlIHRvIDEuIG1zYyBhbmQgdXN0IHRvIHNvbWUgbm9uLXplcm8gdmFsdWVzLgorICAgIEFT
U0VSVF9FUSgxdWxsLCBzYmMpOworICAgIEFTU0VSVF9HVCh1c3QsIDB1bGwpOworICAgIEFTU0VS
VF9HVChtc2MsIDB1bGwpOworCisgICAgLy8gUGVyZm9ybSBtb3JlIHJlbmRlcmluZy4KKyAgICBn
bENsZWFyQ29sb3IoMC4wZiwgMC4wZiwgMS4wZiwgMS4wZik7CisgICAgZ2xDbGVhcihHTF9DT0xP
Ul9CVUZGRVJfQklUKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIEFTU0VSVF9F
R0xfVFJVRShlZ2xTd2FwQnVmZmVycyhtRGlzcGxheSwgbVN1cmZhY2UpKTsKKworICAgIC8vIFBv
bGwgdW50aWwgc2JjIHZhbHVlIGluY3JlYXNlcy4gTm9ybWFsbHkgaXQgc2hvdWxkIGNoYW5nZSB3
aXRoaW4gMTYtMTcgbXMuCisgICAgRUdMdWludDY0S0hSIHVzdDIgPSAwLCBtc2MyID0gMCwgc2Jj
MiA9IDA7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrTnVtUG9sbEl0ZXJhdGlvbnM7IGkrKykK
KyAgICB7CisgICAgICAgIDo6U2xlZXAoa1BvbGxJbnRlcnZhbCk7CisgICAgICAgIEFTU0VSVF9F
R0xfVFJVRShlZ2xHZXRTeW5jVmFsdWVzQ0hST01JVU0obURpc3BsYXksIG1TdXJmYWNlLCAmdXN0
MiwgJm1zYzIsICZzYmMyKSk7CisgICAgICAgIGlmIChzYmMyID4gc2JjKQorICAgICAgICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgLy8gc2JjMiBzaG91bGQgYmUgMi4gbXNjMiBhbmQgdXN0MiBz
aG91bGQgYmUgZ3JlYXRlciB0aGFuIHByZXZpb3VzIG1zYyBhbmQgdXN0IHZhbHVlcy4KKyAgICBB
U1NFUlRfRVEoMnVsbCwgc2JjMik7CisgICAgQVNTRVJUX0dUKCh1c3QyIC0gdXN0KSwgMHVsbCk7
CisgICAgQVNTRVJUX0dUKChtc2MyIC0gbXNjKSwgMHVsbCk7Cit9CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFRocmVhZFRlc3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdM
VGhyZWFkVGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xUaHJlYWRUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDgzIEBACisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworI2luY2x1ZGUgPEVHTC9l
Z2wuaD4KKyNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisKK3R5cGVkZWYgRUdMQVBJIEVHTERpc3Bs
YXkgRUdMQVBJRU5UUlkgRUdMR2V0RGlzcGxheShFR0xOYXRpdmVEaXNwbGF5VHlwZSBkaXNwbGF5
X2lkKTsKK3R5cGVkZWYgRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgRUdMSW5pdGlhbGl6
ZShFR0xEaXNwbGF5IGRweSwgRUdMaW50ICptYWpvciwgRUdMaW50ICptaW5vcik7Cit0eXBlZGVm
IEVHTEFQSSBFR0xDb250ZXh0IEVHTEFQSUVOVFJZIEVHTEdldEN1cnJlbnRDb250ZXh0KHZvaWQp
OwordHlwZWRlZiBFR0xBUEkgRUdMU3VyZmFjZSBFR0xBUElFTlRSWSBFR0xHZXRDdXJyZW50U3Vy
ZmFjZShFR0xpbnQgcmVhZGRyYXcpOwordHlwZWRlZiBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElF
TlRSWSBFR0xUZXJtaW5hdGUoRUdMRGlzcGxheSBkcHkpOworCitjbGFzcyBFR0xUaHJlYWRUZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QKK3sKKyAgcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBT
ZXRVcCgpIHt9CisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkge30KKworICAgIEVHTEdldERp
c3BsYXkgKm1HZXREaXNwbGF5OworICAgIEVHTEluaXRpYWxpemUgKm1Jbml0aWFsaXplOworICAg
IEVHTEdldEN1cnJlbnRDb250ZXh0ICptR2V0Q3VycmVudENvbnRleHQ7CisgICAgRUdMR2V0Q3Vy
cmVudFN1cmZhY2UgKm1HZXRDdXJyZW50U3VyZmFjZTsKKworICAgIEVHTERpc3BsYXkgbURpc3Bs
YXk7CisKKyAgICBITU9EVUxFIG1FR0w7CisgICAgSE1PRFVMRSBtR0xFU3YyOworCisgICAgc3Rh
dGljIERXT1JEIFdJTkFQSSBUaHJlYWRpbmdUZXN0RW50cnlQb2ludChMUFZPSUQgdGhpc1BvaW50
ZXIpOworCisgIHByaXZhdGU6CisgICAgdm9pZCBUaHJlYWRpbmdUZXN0KCk7Cit9OworCitEV09S
RCBXSU5BUEkgRUdMVGhyZWFkVGVzdDo6VGhyZWFkaW5nVGVzdEVudHJ5UG9pbnQoTFBWT0lEIGxw
UGFyYW1ldGVyKQoreworICAgIEVHTFRocmVhZFRlc3QgKnRlc3QgPSAoRUdMVGhyZWFkVGVzdCAq
KWxwUGFyYW1ldGVyOworICAgIHRlc3QtPlRocmVhZGluZ1Rlc3QoKTsKKyAgICByZXR1cm4gMDsK
K30KKwordm9pZCBFR0xUaHJlYWRUZXN0OjpUaHJlYWRpbmdUZXN0KCkKK3sKKyAgICBtRUdMID0g
TG9hZExpYnJhcnkoVEVYVCgibGliRUdMLmRsbCIpKTsKKyAgICBtR0xFU3YyID0gTG9hZExpYnJh
cnkoVEVYVCgibGliR0xFU3YyLmRsbCIpKTsKKworICAgIEVYUEVDVF9UUlVFKG1FR0wgIT0gTlVM
TCk7CisgICAgRVhQRUNUX1RSVUUobUdMRVN2MiAhPSBOVUxMKTsKKworICAgIG1HZXREaXNwbGF5
ID0gKEVHTEdldERpc3BsYXkgKilHZXRQcm9jQWRkcmVzcyhtRUdMLCAiZWdsR2V0RGlzcGxheSIp
OworICAgIG1Jbml0aWFsaXplID0gKEVHTEluaXRpYWxpemUgKilHZXRQcm9jQWRkcmVzcyhtRUdM
LCAiZWdsSW5pdGlhbGl6ZSIpOworICAgIG1HZXRDdXJyZW50Q29udGV4dCA9IChFR0xHZXRDdXJy
ZW50Q29udGV4dCAqKUdldFByb2NBZGRyZXNzKG1FR0wsICJlZ2xHZXRDdXJyZW50Q29udGV4dCIp
OworICAgIG1HZXRDdXJyZW50U3VyZmFjZSA9IChFR0xHZXRDdXJyZW50U3VyZmFjZSAqKUdldFBy
b2NBZGRyZXNzKG1FR0wsICJlZ2xHZXRDdXJyZW50U3VyZmFjZSIpOworCisgICAgRVhQRUNUX1RS
VUUobUdldERpc3BsYXkgIT0gTlVMTCk7CisgICAgRVhQRUNUX1RSVUUobUluaXRpYWxpemUgIT0g
TlVMTCk7CisgICAgRVhQRUNUX1RSVUUobUdldEN1cnJlbnRDb250ZXh0ICE9IE5VTEwpOworICAg
IEVYUEVDVF9UUlVFKG1HZXRDdXJyZW50U3VyZmFjZSAhPSBOVUxMKTsKKworICAgIG1EaXNwbGF5
ID0gbUdldERpc3BsYXkoRUdMX0QzRDExX0VMU0VfRDNEOV9ESVNQTEFZX0FOR0xFKTsKKworICAg
IEVYUEVDVF9UUlVFKG1EaXNwbGF5IT0gRUdMX05PX0RJU1BMQVkpOworCisgICAgbUluaXRpYWxp
emUobURpc3BsYXksIE5VTEwsIE5VTEwpOworICAgIG1HZXRDdXJyZW50Q29udGV4dCgpOworfQor
CitURVNUX0YoRUdMVGhyZWFkVGVzdCwgdGhyZWFkX2luaXRfY3Jhc2gpCit7CisgICAgRFdPUkQg
dGhyZWFkSWQ7CisgICAgSEFORExFIHRocmVhZEhhbmRsZSA9IENyZWF0ZVRocmVhZChOVUxMLCAw
LCBFR0xUaHJlYWRUZXN0OjpUaHJlYWRpbmdUZXN0RW50cnlQb2ludCwgdGhpcywgMCwgJnRocmVh
ZElkKTsKKyAgICBFWFBFQ1RfVFJVRSh0aHJlYWRIYW5kbGUgIT0gTlVMTCk7CisKKyAgICAvLyB3
YWl0IGZvciBzaWduYWwgZnJvbSB0aHJlYWQKKyAgICBEV09SRCB3YWl0UmVzdWx0ID0gV2FpdEZv
clNpbmdsZU9iamVjdCh0aHJlYWRIYW5kbGUsIDEwMDApOworICAgIEVYUEVDVF9FUSh3YWl0UmVz
dWx0LCBXQUlUX09CSkVDVF8wKTsKKworICAgIC8vIGNyYXNoLCBiZWNhdXNlIHRoZSBUTFMgdmFs
dWUgaXMgTlVMTCBvbiBtYWluIHRocmVhZAorICAgIG1HZXRDdXJyZW50U3VyZmFjZShFR0xfRFJB
Vyk7CisgICAgbUdldEN1cnJlbnRDb250ZXh0KCk7CisKKyAgICBhdXRvIHRlcm1pbmF0ZSA9IChF
R0xUZXJtaW5hdGUgKilHZXRQcm9jQWRkcmVzcyhtRUdMLCAiZWdsVGVybWluYXRlIik7CisgICAg
dGVybWluYXRlKG1EaXNwbGF5KTsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9lZ2xfdGVzdHMvRUdMWDExVmlzdWFsVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xYMTFWaXN1YWxUZXN0
LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
ZWdsX3Rlc3RzL0VHTFgxMVZpc3VhbFRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MjE2IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gRUdMWDExVmlzdWFsVGVzdC5jcHA6IHRlc3RzIGZv
ciBFR0xfQU5HTEVfeDExX3Zpc3VhbCBleHRlbnNpb24KKworI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+CisKKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgorI2lu
Y2x1ZGUgPFgxMS9YbGliLmg+CisKKyNpbmNsdWRlICJPU1dpbmRvdy5oIgorI2luY2x1ZGUgInRl
c3RfdXRpbHMvQU5HTEVUZXN0LmgiCisjaW5jbHVkZSAieDExL1gxMVdpbmRvdy5oIgorCit1c2lu
ZyBuYW1lc3BhY2UgYW5nbGU7CisKK25hbWVzcGFjZQoreworCitjb25zdCBFR0xpbnQgY29udGV4
dEF0dHJpYnNbXSA9IHtFR0xfQ09OVEVYVF9DTElFTlRfVkVSU0lPTiwgMiwgRUdMX05PTkV9Owor
fQorCitjbGFzcyBFR0xYMTFWaXN1YWxIaW50VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RX
aXRoUGFyYW08YW5nbGU6OlBsYXRmb3JtUGFyYW1ldGVycz4KK3sKKyAgcHVibGljOgorICAgIHZv
aWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgbUVnbEdldFBsYXRmb3JtRGlzcGxh
eUVYVCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZORUdMR0VUUExBVEZPUk1ESVNQTEFZRVhUUFJPQz4o
CisgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhU
IikpOworCisgICAgICAgIG1EaXNwbGF5ID0gWE9wZW5EaXNwbGF5KE5VTEwpOworICAgIH0KKwor
ICAgIHN0ZDo6dmVjdG9yPEVHTGludD4gZ2V0RGlzcGxheUF0dHJpYnV0ZXMoaW50IHZpc3VhbElk
KSBjb25zdAorICAgIHsKKyAgICAgICAgc3RkOjp2ZWN0b3I8RUdMaW50PiBhdHRyaWJzOworCisg
ICAgICAgIGF0dHJpYnMucHVzaF9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0FOR0xFKTsK
KyAgICAgICAgYXR0cmlicy5wdXNoX2JhY2soR2V0UGFyYW0oKS5nZXRSZW5kZXJlcigpKTsKKyAg
ICAgICAgYXR0cmlicy5wdXNoX2JhY2soRUdMX1gxMV9WSVNVQUxfSURfQU5HTEUpOworICAgICAg
ICBhdHRyaWJzLnB1c2hfYmFjayh2aXN1YWxJZCk7CisgICAgICAgIGF0dHJpYnMucHVzaF9iYWNr
KEVHTF9OT05FKTsKKworICAgICAgICByZXR1cm4gYXR0cmliczsKKyAgICB9CisKKyAgICB1bnNp
Z25lZCBpbnQgY2hvb3NlRGlmZmVyZW50VmlzdWFsKHVuc2lnbmVkIGludCB2aXN1YWxJZCkKKyAg
ICB7CisgICAgICAgIGludCBudW1WaXN1YWxzOworICAgICAgICBYVmlzdWFsSW5mbyB2aXN1YWxU
ZW1wbGF0ZTsKKyAgICAgICAgdmlzdWFsVGVtcGxhdGUuc2NyZWVuID0gRGVmYXVsdFNjcmVlbiht
RGlzcGxheSk7CisKKyAgICAgICAgWFZpc3VhbEluZm8gKnZpc3VhbHMgPQorICAgICAgICAgICAg
WEdldFZpc3VhbEluZm8obURpc3BsYXksIFZpc3VhbFNjcmVlbk1hc2ssICZ2aXN1YWxUZW1wbGF0
ZSwgJm51bVZpc3VhbHMpOworICAgICAgICBFWFBFQ1RfVFJVRShudW1WaXN1YWxzID49IDIpOwor
CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVmlzdWFsczsgKytpKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAodmlzdWFsc1tpXS52aXN1YWxpZCAhPSB2aXN1YWxJZCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbnQgcmVzdWx0ID0gdmlzdWFsc1tpXS52aXN1YWxp
ZDsKKyAgICAgICAgICAgICAgICBYRnJlZSh2aXN1YWxzKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICBwcm90ZWN0ZWQ6CisgICAgUEZO
RUdMR0VUUExBVEZPUk1ESVNQTEFZRVhUUFJPQyBtRWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUOwor
ICAgIERpc3BsYXkgKm1EaXNwbGF5OworfTsKKworLy8gVGVzdCB0aGF0IGRpc3BsYXkgY3JlYXRp
b24gZmFpbHMgaWYgdGhlIHZpc3VhbCBJRCBwYXNzZWQgaW4gaW52YWxpZC4KK1RFU1RfUChFR0xY
MTFWaXN1YWxIaW50VGVzdCwgSW52YWxpZFZpc3VhbElEKQoreworICAgIC8vIFRoZSB0ZXN0IHBs
YXRmb3JtIHdpbGwgbG9nIGFuIGVycm9yIGluIHRoaXMgbmVnYXRpdmUgdGVzdC4KKyAgICBJZ25v
cmVBTkdMRVBsYXRmb3JtTWVzc2FnZXMoKTsKKworICAgIHN0YXRpYyBjb25zdCBpbnQgZ0ludmFs
aWRWaXN1YWxJZCA9IC0xOworICAgIGF1dG8gYXR0cmlidXRlcyAgICAgICAgICAgICAgICAgICA9
IGdldERpc3BsYXlBdHRyaWJ1dGVzKGdJbnZhbGlkVmlzdWFsSWQpOworCisgICAgRUdMRGlzcGxh
eSBkaXNwbGF5ID0KKyAgICAgICAgbUVnbEdldFBsYXRmb3JtRGlzcGxheUVYVChFR0xfUExBVEZP
Uk1fQU5HTEVfQU5HTEUsIEVHTF9ERUZBVUxUX0RJU1BMQVksIGF0dHJpYnV0ZXMuZGF0YSgpKTsK
KyAgICBBU1NFUlRfVFJVRShkaXNwbGF5ICE9IEVHTF9OT19ESVNQTEFZKTsKKworICAgIEFTU0VS
VF9UUlVFKEVHTF9GQUxTRSA9PSBlZ2xJbml0aWFsaXplKGRpc3BsYXksIG51bGxwdHIsIG51bGxw
dHIpKTsKKyAgICBBU1NFUlRfRUdMX0VSUk9SKEVHTF9OT1RfSU5JVElBTElaRUQpOworfQorCisv
LyBUZXN0IHRoYXQgY29udGV4dCBjcmVhdGlvbiB3aXRoIGEgdmlzdWFsIElEIHN1Y2NlZWRzLCB0
aGF0IHRoZSBjb250ZXh0IGV4cG9zZXMKKy8vIG9ubHkgb25lIGNvbmZpZywgYW5kIHRoYXQgYSBj
bGVhciBvbiBhIHN1cmZhY2Ugd2l0aCB0aGlzIGNvbmZpZyB3b3Jrcy4KK1RFU1RfUChFR0xYMTFW
aXN1YWxIaW50VGVzdCwgVmFsaWRWaXN1YWxJREFuZENsZWFyKQoreworICAgIC8vIFdlJ2xsIHRl
c3QgdGhlIGV4dGVuc2lvbiB3aXRoIG9uZSB2aXN1YWwgSUQgYnV0IHdlIGRvbid0IGNhcmUgd2hp
Y2ggb25lLiBUaGlzIG1lYW5zIHdlCisgICAgLy8gY2FuIHVzZSBPU1dpbmRvdyB0byBjcmVhdGUg
YSB3aW5kb3cgYW5kIGp1c3QgZ3JhYiBpdHMgdmlzdWFsLgorICAgIE9TV2luZG93ICpvc1dpbmRv
dyA9IENyZWF0ZU9TV2luZG93KCk7CisgICAgb3NXaW5kb3ctPmluaXRpYWxpemUoIkVHTFgxMVZp
c3VhbEhpbnRUZXN0IiwgNTAwLCA1MDApOworICAgIG9zV2luZG93LT5zZXRWaXNpYmxlKHRydWUp
OworCisgICAgV2luZG93IHhXaW5kb3cgPSBvc1dpbmRvdy0+Z2V0TmF0aXZlV2luZG93KCk7CisK
KyAgICBYV2luZG93QXR0cmlidXRlcyB3aW5kb3dBdHRyaWJ1dGVzOworICAgIEFTU0VSVF9ORSgw
LCBYR2V0V2luZG93QXR0cmlidXRlcyhtRGlzcGxheSwgeFdpbmRvdywgJndpbmRvd0F0dHJpYnV0
ZXMpKTsKKyAgICBpbnQgdmlzdWFsSWQgPSB3aW5kb3dBdHRyaWJ1dGVzLnZpc3VhbC0+dmlzdWFs
aWQ7CisKKyAgICBhdXRvIGF0dHJpYnV0ZXMgPSBnZXREaXNwbGF5QXR0cmlidXRlcyh2aXN1YWxJ
ZCk7CisgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0KKyAgICAgICAgbUVnbEdldFBsYXRmb3JtRGlz
cGxheUVYVChFR0xfUExBVEZPUk1fQU5HTEVfQU5HTEUsIEVHTF9ERUZBVUxUX0RJU1BMQVksIGF0
dHJpYnV0ZXMuZGF0YSgpKTsKKyAgICBBU1NFUlRfTkUoRUdMX05PX0RJU1BMQVksIGRpc3BsYXkp
OworCisgICAgQVNTRVJUX1RSVUUoRUdMX1RSVUUgPT0gZWdsSW5pdGlhbGl6ZShkaXNwbGF5LCBu
dWxscHRyLCBudWxscHRyKSk7CisKKyAgICAvLyBXaGlsZSB0aGlzIGlzIG5vdCByZXF1aXJlZCBi
eSB0aGUgZXh0ZW5zaW9uLCB0ZXN0IHRoYXQgb3VyIGltcGxlbWVudGF0aW9uIHJldHVybnMgb25s
eSBvbmUKKyAgICAvLyBjb25maWcsIHdpdGggdGhlIHNhbWUgbmF0aXZlIHZpc3VhbCBJZCB0aGF0
IHdlIHByb3ZpZGVkLgorICAgIGludCBuQ29uZmlncyA9IDA7CisgICAgQVNTRVJUX1RSVUUoRUdM
X1RSVUUgPT0gZWdsR2V0Q29uZmlncyhkaXNwbGF5LCBudWxscHRyLCAwLCAmbkNvbmZpZ3MpKTsK
KyAgICBBU1NFUlRfRVEoMSwgbkNvbmZpZ3MpOworCisgICAgaW50IG5SZXR1cm5lZENvbmZpZ3Mg
PSAwOworICAgIEVHTENvbmZpZyBjb25maWc7CisgICAgQVNTRVJUX1RSVUUoRUdMX1RSVUUgPT0g
ZWdsR2V0Q29uZmlncyhkaXNwbGF5LCAmY29uZmlnLCAxLCAmblJldHVybmVkQ29uZmlncykpOwor
ICAgIEFTU0VSVF9FUShuQ29uZmlncywgblJldHVybmVkQ29uZmlncyk7CisKKyAgICBFR0xpbnQg
ZWdsTmF0aXZlSWQ7CisgICAgQVNTRVJUX1RSVUUoRUdMX1RSVUUgPT0gZWdsR2V0Q29uZmlnQXR0
cmliKGRpc3BsYXksIGNvbmZpZywgRUdMX05BVElWRV9WSVNVQUxfSUQsICZlZ2xOYXRpdmVJZCkp
OworICAgIEFTU0VSVF9FUSh2aXN1YWxJZCwgZWdsTmF0aXZlSWQpOworCisgICAgLy8gRmluYWxs
eSwgdHJ5IHRvIGRvIGEgY2xlYXIgb24gdGhlIHdpbmRvdy4KKyAgICBFR0xDb250ZXh0IGNvbnRl
eHQgPSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGNvbmZpZywgRUdMX05PX0NPTlRFWFQsIGNv
bnRleHRBdHRyaWJzKTsKKyAgICBBU1NFUlRfTkUoRUdMX05PX0NPTlRFWFQsIGNvbnRleHQpOwor
CisgICAgRUdMU3VyZmFjZSB3aW5kb3cgPSBlZ2xDcmVhdGVXaW5kb3dTdXJmYWNlKGRpc3BsYXks
IGNvbmZpZywgeFdpbmRvdywgbnVsbHB0cik7CisgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CisK
KyAgICBlZ2xNYWtlQ3VycmVudChkaXNwbGF5LCB3aW5kb3csIHdpbmRvdywgY29udGV4dCk7Cisg
ICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CisKKyAgICBnbFZpZXdwb3J0KDAsIDAsIDUwMCwgNTAw
KTsKKyAgICBnbENsZWFyQ29sb3IoMC4wZiwgMC4wZiwgMS4wZiwgMS4wZik7CisgICAgZ2xDbGVh
cihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICBF
WFBFQ1RfUElYRUxfRVEoMjUwLCAyNTAsIDAsIDAsIDI1NSwgMjU1KTsKKworICAgIC8vIFRlYXJk
b3duCisgICAgZWdsRGVzdHJveVN1cmZhY2UoZGlzcGxheSwgd2luZG93KTsKKyAgICBBU1NFUlRf
RUdMX1NVQ0NFU1MoKTsKKworICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQp
OworICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworCisgICAgU2FmZURlbGV0ZShvc1dpbmRvdyk7
CisKKyAgICBlZ2xNYWtlQ3VycmVudChkaXNwbGF5LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX1NV
UkZBQ0UsIEVHTF9OT19DT05URVhUKTsKKyAgICBlZ2xUZXJtaW5hdGUoZGlzcGxheSk7Cit9CisK
Ky8vIFRlc3QgdGhhdCBFR0xfQkFEX01BVENIIGlzIGdlbmVyYXRlZCB3aGVuIHRyeWluZyB0byBj
cmVhdGUgYW4gRUdMIHdpbmRvdyBmcm9tCisvLyBhbiBYMTEgd2luZG93IHdob3NlIHZpc3VhbCBJ
RCBkb2Vzbid0IG1hdGNoIHRoZSB2aXN1YWwgSUQgcGFzc2VkIGF0IGRpc3BsYXkgY3JlYXRpb24u
CitURVNUX1AoRUdMWDExVmlzdWFsSGludFRlc3QsIEludmFsaWRXaW5kb3dWaXN1YWxJRCkKK3sK
KyAgICAvLyBHZXQgdGhlIGRlZmF1bHQgdmlzdWFsIElELCBhcyBhIGdvb2QgZ3Vlc3Mgb2YgYSB2
aXN1YWwgaWQgZm9yIHdoaWNoIGRpc3BsYXkKKyAgICAvLyBjcmVhdGlvbiB3aWxsIHN1Y2NlZWQu
CisgICAgaW50IHZpc3VhbElkOworICAgIHsKKyAgICAgICAgT1NXaW5kb3cgKm9zV2luZG93ID0g
Q3JlYXRlT1NXaW5kb3coKTsKKyAgICAgICAgb3NXaW5kb3ctPmluaXRpYWxpemUoIkVHTFgxMVZp
c3VhbEhpbnRUZXN0IiwgNTAwLCA1MDApOworICAgICAgICBvc1dpbmRvdy0+c2V0VmlzaWJsZSh0
cnVlKTsKKworICAgICAgICBXaW5kb3cgeFdpbmRvdyA9IG9zV2luZG93LT5nZXROYXRpdmVXaW5k
b3coKTsKKworICAgICAgICBYV2luZG93QXR0cmlidXRlcyB3aW5kb3dBdHRyaWJ1dGVzOworICAg
ICAgICBBU1NFUlRfTkUoMCwgWEdldFdpbmRvd0F0dHJpYnV0ZXMobURpc3BsYXksIHhXaW5kb3cs
ICZ3aW5kb3dBdHRyaWJ1dGVzKSk7CisgICAgICAgIHZpc3VhbElkID0gd2luZG93QXR0cmlidXRl
cy52aXN1YWwtPnZpc3VhbGlkOworCisgICAgICAgIFNhZmVEZWxldGUob3NXaW5kb3cpOworICAg
IH0KKworICAgIGF1dG8gYXR0cmlidXRlcyA9IGdldERpc3BsYXlBdHRyaWJ1dGVzKHZpc3VhbElk
KTsKKyAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPQorICAgICAgICBtRWdsR2V0UGxhdGZvcm1EaXNw
bGF5RVhUKEVHTF9QTEFURk9STV9BTkdMRV9BTkdMRSwgRUdMX0RFRkFVTFRfRElTUExBWSwgYXR0
cmlidXRlcy5kYXRhKCkpOworICAgIEFTU0VSVF9ORShFR0xfTk9fRElTUExBWSwgZGlzcGxheSk7
CisKKyAgICBBU1NFUlRfVFJVRShFR0xfVFJVRSA9PSBlZ2xJbml0aWFsaXplKGRpc3BsYXksIG51
bGxwdHIsIG51bGxwdHIpKTsKKworCisgICAgLy8gSW5pdGlhbGl6ZSB0aGUgd2luZG93IHdpdGgg
YSB2aXN1YWwgaWQgZGlmZmVyZW50IGZyb20gdGhlIGRpc3BsYXkncyB2aXN1YWwgaWQKKyAgICBp
bnQgb3RoZXJWaXN1YWxJZCA9IGNob29zZURpZmZlcmVudFZpc3VhbCh2aXN1YWxJZCk7CisgICAg
QVNTRVJUX05FKHZpc3VhbElkLCBvdGhlclZpc3VhbElkKTsKKworICAgIE9TV2luZG93ICpvc1dp
bmRvdyA9IG5ldyBYMTFXaW5kb3cob3RoZXJWaXN1YWxJZCk7CisgICAgb3NXaW5kb3ctPmluaXRp
YWxpemUoIkVHTFgxMVZpc3VhbEhpbnRUZXN0IiwgNTAwLCA1MDApOworICAgIG9zV2luZG93LT5z
ZXRWaXNpYmxlKHRydWUpOworCisgICAgV2luZG93IHhXaW5kb3cgPSBvc1dpbmRvdy0+Z2V0TmF0
aXZlV2luZG93KCk7CisKKyAgICAvLyBDcmVhdGluZyB0aGUgRUdMIHdpbmRvdyBzaG91bGQgZmFp
bCB3aXRoIEVHTF9CQURfTUFUQ0gKKyAgICBpbnQgblJldHVybmVkQ29uZmlncyA9IDA7CisgICAg
RUdMQ29uZmlnIGNvbmZpZzsKKyAgICBBU1NFUlRfVFJVRShFR0xfVFJVRSA9PSBlZ2xHZXRDb25m
aWdzKGRpc3BsYXksICZjb25maWcsIDEsICZuUmV0dXJuZWRDb25maWdzKSk7CisgICAgQVNTRVJU
X0VRKDEsIG5SZXR1cm5lZENvbmZpZ3MpOworCisgICAgRUdMU3VyZmFjZSB3aW5kb3cgPSBlZ2xD
cmVhdGVXaW5kb3dTdXJmYWNlKGRpc3BsYXksIGNvbmZpZywgeFdpbmRvdywgbnVsbHB0cik7Cisg
ICAgQVNTRVJUX0VRKEVHTF9OT19TVVJGQUNFLCB3aW5kb3cpOworICAgIEFTU0VSVF9FR0xfRVJS
T1IoRUdMX0JBRF9NQVRDSCk7CisKKyAgICBTYWZlRGVsZXRlKG9zV2luZG93KTsKK30KKworQU5H
TEVfSU5TVEFOVElBVEVfVEVTVChFR0xYMTFWaXN1YWxIaW50VGVzdCwgRVMyX09QRU5HTCgpKTsK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvbWVkaWEv
eXV2dGVzdC5pbmwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2VnbF90ZXN0cy9tZWRpYS95dXZ0ZXN0LmlubAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL21lZGlhL3l1dnRlc3QuaW5sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTU0OCBAQAorLy8gR0VORVJBVEVEIEZJTEUgLSBETyBO
T1QgRURJVC4KKy8vIEdlbmVyYXRlZCBieSBzY3JpcHRzL2JtcF90b195dXYucHkgdXNpbmcgZGF0
YSBmcm9tIHl1dnRlc3QuYm1wCisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKK3N0YXRpYyBjb25zdCBzaXplX3QgeXV2dGVzdF93
aWR0aCA9IDEyODsKK3N0YXRpYyBjb25zdCBzaXplX3QgeXV2dGVzdF9oZWlnaHQgPSAxMjg7Citz
dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciB5dXZ0ZXN0X2RhdGFbXSA9Cit7CisgICAgMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
KyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisg
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDEzMiwxNiwxNiwxNiwxNiwxMDUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LAorICAgIDIzNSwyMywxNiwxNiwxNiwxNiwxNiwxNiw0NCwxNTMsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwxNiwx
NiwxNiwxNiwxNiwxNiwxNiwxNiwxNiw3OCwyMjgsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisg
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMTYsMTYsMTYsMTczLDQ0LDE2LDE2LDE2
LDE2LDE2LDE2LDQ0LDE1MywyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKKyAgICAyMzUsMTYsMTYsMTYsMjI4LDIzNSwyMzUsMjIxLDExMiwxNiwxNiwxNiwxNiwxNiw3
OCwyMjgsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwzNywxNiwx
Niw5MiwyMzUsMjM1LDIzNSwyMzUsMTUzLDQ0LDE2LDE2LDE2LDE2LDE2LAorICAgIDkyLDIyOCwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKKyAgICAyMzUsMjEyLDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYs
MTg2LDIwMywyMzQsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwxNDYsMTYsMTYsMTYsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjIxLDExMiwxNiwxNiwxNiwKKyAgICAxNiwxNiwxNiw5MiwyMjgsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIxOSwxODcsMTYwLDE1MCwxNTAsMTUwLDE0MCwxMjcsMTIxLDEyMSwxMjEsCisgICAgMTUy
LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwyMDMs
MjM0LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
KyAgICAyMzUsMjM1LDE2LDE2LDE2LDEwNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTUz
LDQ0LDE2LAorICAgIDE2LDE2LDE2LDE2LDc4LDIyOCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMTksCisgICAgMTg3LDE2MCwxNTAsMTUwLDE1MCwxNTAsMTUwLDE0OSwxMzIs
MTIxLDEyMSwxMjEsMTIxLDEyMSwxMjEsMTUyLAorICAgIDE4NiwxODYsMTg2LDE4NiwxODYsMTg2
LDE4NiwxODUsMTU0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwKKyAgICAxMzQsMTM0LDEz
NCwxNjksMjMyLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisg
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjEzLDE3MSwxMzUsMTIwLDEyMCwxMjAsMTIwLDEy
MCwxMjAsMTIwLAorICAgIDEyMCwxMjAsMTIwLDEyMCwxMjAsMTY3LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzIsCisgICAgMTcyLDEzNCwyNywxNiwx
NiwxNiwxMzAsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDE2OSwxNTEsCisgICAgNDQsMTYs
MTYsMTYsMTYsNDQsMTUzLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjE5LDE4NywxNjAsMTUwLAorICAg
IDE1MCwxNTAsMTUwLDE1MCwxNTAsMTUwLDE0OSwxMjksMTIxLDEyMSwxMjEsMTIxLDEyMSwxMjEs
MTIxLDE4NSwKKyAgICAxODYsMTg2LDE4NSwxNDYsMTIxLDEyMSwxMjIsMTMxLDEzNCwxMzQsMTM0
LDEzNCwxMzQsMTM0LDEzNCwxMzQsCisgICAgMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEz
NCwxNjksMjMyLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwy
MzEsMTU2LDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwKKyAgICAxMjAs
MTIwLDEyMCwxMjAsMTIwLDEyNCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwxODcsMTM0LAorICAgIDEzNCwxMzQsMTAxLDI0LDE2LDE2LDU3LDEzNCwxMzQsMTM0
LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LAorICAgIDEzNCwxMzQsNzUsMTYsMTYsMTYsMTYsNzgs
MjI4LDIxOSwxODcsMTYwLDE1MCwxNTAsMTUwLDE1MCwKKyAgICAxNTAsMTUwLDE1MCwxNTAsMTUw
LDE0OCwxMzQsMTIxLDEyMSwxMjEsMTIxLDEzNiwxNzIsMjI1LDIxMiwxODYsCisgICAgMTg2LDE4
NiwxNjMsMTUwLDE1MCwxNDksMTM4LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0
LAorICAgIDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTY5LDIz
MiwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIxMywxNzEsMTM1LDEyMCwxMjAsMTIwLDEyMCwx
MjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsCisgICAgMTIwLDEyMCwxMjAsMTIwLDEzNSwxOTIs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTM3LDEzNCwKKyAg
ICAxMzQsMTM0LDEzNCw4NiwxNiwxNiwxNiwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0
LDEzNCwKKyAgICAxMzQsMTM0LDEzNCw4NiwyNCwxNiwxNiwxNiw0NSwxMjksMTUwLDE1MCwxNTAs
MTUwLDE1MCwxNTgsCisgICAgMTg0LDIxNCwyMzUsMjM1LDE3MiwxMjEsMTIxLDEyMSwxMjEsMTc4
LDIzNSwyMzUsMjM1LDIzNSwxODgsMTg2LAorICAgIDE4NiwxODgsMjAwLDE1OCwxNDksMTM5LDEz
NCwxMzQsMTM0LDE0MywxNTgsMTM2LDEyMSwxMjEsMTIxLDEyMSwKKyAgICAxNDYsMTc4LDE2Niwx
NDAsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxNDcsMTk3LDE5OSwxNDIsCisgICAg
MTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDE2NCwyMDYsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDEzNCwxMzQsCisgICAgMTM0LDE5NCwyMzUsMjM1LDM3
LDE2LDE2LDE2NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDE5NywxNDcsMTM0LAorICAgIDEzNCwxMzQs
MTM0LDEzNCwxMjYsNjgsMTYsMTYsMTYsMjAsODcsMTUwLDE1OCwxODQsMjE0LDIzNSwKKyAgICAy
MzUsMjM1LDIzNSwxOTksMTI1LDEyMSwxMjEsMTI1LDE4MSwyMzUsMjM1LDIzNSwyMzUsMjI2LDE4
NiwxODYsCisgICAgMTg2LDIxNywyMzUsMjMyLDE1NSwxMzQsMTM0LDEzNCwxNDEsMTUwLDE1MCwx
NzQsMjI1LDE3OCwxMzYsMTIxLAorICAgIDEyMSwxMjEsMTU0LDE4NiwxODYsMTg2LDIwMCwxOTYs
MTQ3LDEzNCwxMzQsMTM0LDEzMCwxMjMsMTIwLDEyMCwKKyAgICAxMjAsMTIwLDEyMCwxMjAsMTIw
LDEzMSwxODUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMTM0LDEzNCwKKyAgICAxMzQsMjM1LDIzNSwyMzUsMTEyLDE2LDE2LDU3LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMDYsMTQ3LDEzNCwxMzQsODIs
MjAsMTYsMTYsMTYsNzIsMjI4LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzIsMTU3LDEyMSwxMjEs
MTIxLDEyNSwyMjUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMDMsMTg2LDE4NiwKKyAgICAyMDIsMjM1
LDIzMiwxNjMsMTM0LDEzNCwxMzQsMTYxLDE1NSwxNTAsMTUwLDE1MCwxNzQsMjMyLDIzNSwyMzUs
CisgICAgMjI4LDE3MiwxMjEsMTUxLDE4NiwxODYsMTg2LDE2NSwxMTMsMTExLDEyMCwxMjIsMTIw
LDEyMCwxMjAsMTIwLAorICAgIDEyMCwxMjAsMTM1LDE2NywyMDYsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxMzQsMTM0LAorICAg
IDEzNCwyMzUsMjM1LDIzNSwyMTUsMTYsMTYsMTYsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMTQ1LDEzNiwxMzQsMTE1LDQyLDE2LDE2LDE2LDc4
LDIyOCwyMzUsMjM1LAorICAgIDIzNSwxNzIsMTIxLDEyMSwxMjEsMTI1LDE4MSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwxODgsMTg2LDE4NiwKKyAgICAyMjYsMjMyLDE2MywxMzQsMTM0LDEzNCwx
ODQsMjM1LDIzMCwxODcsMTUwLDE1MCwxNTAsMTYwLDIwMywyMzUsCisgICAgMjMxLDE1OCwxMTEs
MTExLDE0OSwxODYsMTg2LDE4NiwxNTEsMTE5LDEyMCwxMjAsMTIwLDEyMCwxMjEsMTI2LAorICAg
IDEzMywxNDIsMjMxLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzMywxNjksMTg5LAorICAgIDE4OSwxODksMTg5LDE4OSwx
ODksMTYsMTYsMTYsODcsMTg5LDE4OSwxODksMTk1LDIxNywyMzUsMjM1LAorICAgIDIzNSwyMzUs
MjM1LDIzNSwxNTAsMTUwLDE1MCwxNjcsMTM0LDcxLDE2LDE2LDE2LDcxLDIyOCwyMzUsCisgICAg
MjM1LDEyNSwxMjEsMTIxLDE2OCwyMjUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE4Niwx
ODYsMTg2LAorICAgIDIzMiwxNjMsMTM0LDEzNCwxMzQsMTg0LDIzNSwyMzUsMjM1LDIzNSwxOTIs
MTUwLDE1MCwxNTAsMTQ4LDEzMCwKKyAgICAxMTEsMTExLDExMSwxMTEsMTExLDE0OSwxNjYsMTMz
LDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIxLDEzMywxMzQsCisgICAgMTM0LDEzNCwxMzQsMTUyLDIz
MiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzMsMjAyLDE4OSwxODksCisgICAgMTg5LDE4OSwxODksMTg5LDE4OSwzMiwxNiwxNiwxNiw4Nywx
ODksMTg5LDE4OSwxODksMTk1LDIxNywKKyAgICAyMzUsMjM1LDIzNSwyMzUsMTUwLDE1MCwxNTAs
MjM1LDE4NCwxMzQsNzUsMTYsMTYsMTYsMjAsNzcsCisgICAgMTIxLDk4LDEyMSwxMjEsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTIsMTg2LDE4NiwxODUsCisgICAgMTYzLDEzNCwx
MzQsMTM0LDE4NCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMDAsMTUzLDEyNiwxMTEsMTExLAor
ICAgIDExMSwxMTEsMTExLDEyNSwxNDgsMTM0LDEyMCwxMjAsMTIwLDEyMCwxMjEsMTUyLDIyNCwy
MDAsMTI5LDEzMiwKKyAgICAxMzQsMTM0LDEzNCwxMzQsMTM3LDIzMiwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjMzLDIwMiwxODksMTg5LDE4OSwKKyAgICAx
ODksMTg5LDE4OSwxODksMTg5LDE0MCwyNywxNiwxNiwxNiwxODksMTg5LDE4OSwxODksMTg5LDE4
OSwKKyAgICAxOTUsMjE3LDIzNSwyMzUsMTUwLDE1MCwxNTAsMjM1LDIzNSwxOTQsMTQ3LDc1LDE2
LDE2LDE2LDE2LAorICAgIDE2LDE2LDUyLDE1NywyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDE4OCwxODYsMTg1LDE0OSwKKyAgICAxMzQsMTM0LDEzNCwxODQsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwxNjMsMTExLDExMSwxMTEsCisgICAgMTEyLDExOCwxMjcsMTIwLDEy
MCwxMjAsMTIwLDEyMCwxMjIsMTUwLDEzOSwxMjEsMTUzLDIzNSwyMzUsMjA2LAorICAgIDE0MCwx
MzQsMTM0LDEzNCwxMzQsMTM0LDE3NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzMywyMDIsMTg5LDE4OSwxODksMTYxLAorICAgIDEzNCwxMzQsMTM0LDIzNSwyMzUsMjM1
LDE3MywxNiwxNiwxNiwyMzUsMjMyLDIxMiwxOTIsMTg5LDE4OSwKKyAgICAxODksMTg5LDE4OSwx
ODksMTg5LDE4OSwxNzYsMjMzLDIzNSwyMzUsMjM1LDIxNiwxMDksMzEsMTYsMTYsCisgICAgMTYs
MTYsMTYsMTUyLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTg2LDE4NSwxNDksMTM0
LAorICAgIDEzNCwxMzQsMTg0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzEsMTU4LDEx
MSwxMTEsMTE1LDEyMCwKKyAgICAxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMzEsMTU5LDE4MCwx
ODYsMTc0LDEyMSwxMjEsMTk5LDIzNSwyMzUsCisgICAgMjM1LDIyNywxNDQsMTM0LDEzNCwxMzQs
MTM0LDE0NiwyMzEsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMjAsMTk4LDE4OSwxODksMTg5
LDIxMiwxOTcsCisgICAgMTM0LDEzNCwxMzQsMTYzLDIzNSwyMzUsMjM1LDM3LDE2LDE2LDE2Niwy
MzUsMjM1LDIzMiwyMTIsMTkyLAorICAgIDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODks
MTg5LDE4OSwyMDUsMjMzLDIzNSwxODQsMTE5LDg5LAorICAgIDQ5LDE2LDE2LDM3LDE1MywyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzQsMTcwLDE0NCwxMzQsMTM0LAorICAgIDEzNCwxODQsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzMSwxNDYsMTEyLDExNiwxMjAsMTIwLDEyMCwKKyAg
ICAxMjAsMTIwLDEyMCwxMjgsMTY3LDIwNiwyMzUsMjMxLDE4NiwxODYsMTg2LDEyMywxMjEsMTQz
LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMjMsMTIyLDEzMiwxMzQsMTM0LDEzNCwxMzcsMjI4LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIxMCwxODksMTg5LDE4OSwxODksMjEyLDIzNSwyMzUsCisgICAgMTQ0
LDEzNCwxMzQsMTM0LDIwMywyMzUsMjM1LDExMiwxNiwxNiw1NywyMzUsMjM1LDIzNSwyMzUsMjMy
LAorICAgIDIxMiwxOTUsMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE5
NCwyMDgsMTY1LDEzMywKKyAgICAxMjMsMjAsMTYsMTYsMTYsNTksMjI1LDIzNSwyMzUsMjM1LDIz
MiwxNTcsMTM0LDEzNCwxMzQsMTM0LAorICAgIDE4NCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDE1MywxMTcsMTIwLDEyMCwxMjAsMTIwLDEyMCwKKyAgICAxMjMsMTMyLDE0MiwxNTAs
MTc0LDIzNSwyMzUsMjM1LDE5MSwxODYsMTg2LDE2NSwxMjEsMTIxLDE5OSwyMzUsCisgICAgMjM1
LDIzNSwyMzUsMTk2LDEyOSwxMzIsMTM0LDEzNCwxMzQsMTM5LDIzMiwyMzUsMjM1LDIzNSwyMzUs
MjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjEzLDE4
OSwxODksMTg5LDE5MSwyMTMsMjM1LDIzNSwyMzUsCisgICAgMjA2LDE0NywxMzQsMTM0LDEzNCwx
NzUsMjM1LDIxNSwyMywxNiwxNiwxNjYsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1
LDE3OSwxNTAsMTY0LDE4NywxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4MywKKyAg
ICAxNjUsMTExLDI0LDE2LDE2LDE2LDU3LDIyNSwyMzUsMjM1LDE2NiwxMzUsMTY5LDE4OSwxODks
MTg5LAorICAgIDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4NSwxNzEsMTI3LDEyMCwxMjAsMTIw
LDEyMCwxMjAsMTM1LDE4OCwKKyAgICAyMDgsMTU1LDE1MCwxNTAsMTUwLDIwOCwyMzUsMjM1LDIx
NSwxODYsMTg2LDE4NiwxMjEsMTIxLDE0MywyMzIsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MjksMTUxLDEzNCwxMzQsMTM0LDE2MywyMzIsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
KyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTkxLDE4OSwxODksMTkxLDIzMSwyMzUs
MjM1LDIzNSwyMzUsCisgICAgMjM1LDIyNSwxMzcsMTM0LDEzNCwxMzQsMjM1LDIzNSwxMTIsMTYs
MTYsNTcsMjI4LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDE1MiwxNTAsMTUwLDIxOSwy
MzUsMjM1LDIxNywxOTUsMTg5LDE4OSwxODksMTg5LDE4OSwKKyAgICAxODksMTg5LDE3OCw5Miwx
NiwxNiwxNiwxNiw1NywxNDAsMTM1LDE3MywxODksMTg5LDE4OSwxODksCisgICAgMTg5LDE4OSwx
ODksMTg5LDE4MCwxNDgsMTI1LDEyMCwxMjAsMTIwLDEyMCwxMjAsMTQ5LDE5OSwyMzUsMjM1LAor
ICAgIDIzNSwyMzAsMTc5LDE1MCwxNTAsMTY2LDIzNSwyMzUsMjM1LDE4NiwxODYsMTg2LDEyNSwx
MjEsMTIxLDE2MSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTIyLDEzNCwxMzQs
MTM0LDE2OSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwxODksMTg5LDE4OSwyMTcsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAy
MzUsMjM1LDIwMywxMzQsMTM0LDEzNCwxNzAsMjE3LDIxNSwyMywxNiwxNiw5MiwyMzUsMjM1LDIz
NSwKKyAgICAyMzUsMjM1LDIzNSwxNTAsMTUwLDE1MCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MjcsMTc3LDE4MCwxODksCisgICAgMTg5LDE4OSwxODksMTg5LDEwMiwxNiwxNiwxNiwxNiw1Nywx
NjksMTg5LDE4OSwxODksMTg5LDE4OSwKKyAgICAxODksMTg5LDE3MCwxNDAsMTIwLDEyMCwxMjAs
MTIwLDEyMCwxMjIsMTQ2LDE3OCwyMzMsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMjcsMTUy
LDE1MCwxNTAsMTk1LDIzNSwyMzUsMTg2LDE4NiwxODYsMTg5LDEyMSwxMjEsMTIxLAorICAgIDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxMTEsMTIyLDEzNCwxMzQsMTM0LDE2MCwyMzUsMjM1
LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE4OSwx
ODksMTg5LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDE0NCwxMzQs
MTM0LDEzNCwxNDksMTg1LDEyNywxNiwxNiwxNiwxMDUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIz
NSwxNTAsMTUwLDE1MCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTI1LDEyMSwxMzUsCisg
ICAgMjAwLDE5MSwxODksMTg5LDE4OSwxMjQsMzgsMTYsMTYsMTYsMTI0LDE3OCwxNzIsMTQzLDE1
NiwxNDksCisgICAgMTM5LDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyOCwxNTYsMTg1LDE4OSwx
ODksMTk1LDE3Niw5NSw5NSwKKyAgICAxNTIsMjM1LDIzNSwxOTUsMTUwLDE1MCwxNTIsMjIyLDIz
NSwxODYsMTg2LDE4NiwyMzUsMTIxLDEyMSwxMjEsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDExMSwxMTEsMTMyLDEzNCwxMzQsMTM0LDIxMywyMzUsMjM1LAorICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
KyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzMsMTg5LDE4OSwxODksMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjAzLDEzOSwxMzQsMTM0LDEzNCwxNTIsMTg2
LDMzLDE2LDE2LDE2LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMTUwLDE1MCwxNTAsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjI4LDEyMSwxMjEsMTIxLAorICAgIDIwOCwxODksMTg5LDE4OSwx
ODksMTg5LDE4OSwzMiwyMyw1OCwxMDcsMTIwLDEyMCwxMjAsMTIwLDEyMCwKKyAgICAxMjAsMTIw
LDEyMCwxMjAsMTIwLDE0OSwxNTAsMTExLDExMSwxNTIsMTg5LDE4OSwxODksMTg5LDE2Myw5NywK
KyAgICA5NSw5NSw5NSwxNTIsMTY4LDE1MCwxNTAsMTY4LDIzNSwxODYsMTg2LDE4NiwyMzUsMTIx
LDEyMSwxMjEsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDExMSwxMTEsMTE3LDE0
NywxMzQsMTM0LDE4MiwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMTAsMTg5LDE4OSwxOTEsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1
LDIzNSwyMzUsMjM1LDIyOSwxNzcsMTM0LDEzNCwxMzQsMTQ5LDEzOCwxNiwxNiwxNiw3OCwyMzUs
CisgICAgMjM1LDIzNSwyMzUsMTUwLDE1MCwxNTAsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTky
LDEyMSwxMjEsMTU4LAorICAgIDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4MCwxMjYsMTE1LDEy
MCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwKKyAgICAxMjAsMTIwLDEyMywxMzQsMjAzLDIzNSwx
MTUsMTExLDExMSwxNzYsMjE2LDE5MiwxODksMTg5LDE4OSwxNjMsCisgICAgOTcsOTUsOTUsOTUs
MjI0LDE1MiwxNTAsMTUwLDIwOCwxODYsMTg2LDE4NiwyMzUsMTIxLDEyMSwxMjEsCisgICAgMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDExMSwxMTEsMTExLDIxMCwxMzQsMTM0LDE0MCwxOTcs
MjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxOTEsMTg5LDE4
OSwyMTMsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMTQ0LDEzNCwxMzQsMTM0LDE3MCwzMiwxNiwxNiwxNiwxNDQsCisgICAgMjM0LDIzNSwyMzUs
MTUwLDE1MCwxNTAsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTUzLDEyMSwxMjcsMTg5LAorICAg
IDE4OSwxODksMjAxLDIxMywxNjIsMTI4LDEyMCwxMjAsMTIwLDEyMCwxMjAsMTE3LDEwMSwxNDAs
MTU2LDE3MiwKKyAgICAxNzMsMTY2LDE0OCwxMzQsMTM3LDE4NywxMTEsMTExLDExMSwyMzUsMjM1
LDIzMiwyMTAsMTg5LDE4OSwxODksCisgICAgMTYzLDk3LDk1LDk1LDIzNSwxODcsMTUwLDE1MCwx
NjYsMTg2LDE4NiwxODYsMjM1LDEyMSwxMjEsMTIxLAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwxMTEsMTExLDExMSwyMzUsMTQ0LDEzNCwxMzQsMTM0LDE2MywKKyAgICAyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
CisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzMsMTg5LDE4OSwxODksMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIwNiwxNDcsMTM0LDEz
NCwxNDYsMTM4LDM3LDE2LDE2LDQ4LAorICAgIDE5NCwyMzQsMjM1LDE1MCwxNTAsMTUwLDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDEyNSwxNDYsMTg1LDE4OSwKKyAgICAxODUsMTY1LDEzOSwxMjEs
MTIwLDEyMCwxMjAsMTIwLDEyMCwxMjcsNjgsMjMsMTYsMjEsMTA4LDE4OSwKKyAgICAxODksMTg5
LDE4OSwxODksMTg5LDE4OSwxODIsMTU0LDEzMiwxNzUsMjEwLDIzNSwyMzUsMjEyLDE4OSwxODks
CisgICAgMTg5LDE1Nyw5NSw5NSwyMzUsMjI3LDE1MiwxNTAsMTUwLDE4NiwxODYsMTg2LDIzNSwx
MjEsMTIxLDEyMSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTExLDExMSwxMTEs
MjM1LDIxMCwxNDAsMTM0LDEzNCwxMzQsCisgICAgMjAzLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjEwLDE4OSwxODksMTkxLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjI1LDEzNywxMzQsMTM0LDE1NywxNzQsMjEsMTYs
MTYsCisgICAgNjQsMTg3LDIxNywxNTAsMTUwLDE1MCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzMywx
NjgsMTc0LDE1NiwxMzYsCisgICAgMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEzOCwxNjUs
MjEyLDE2MCwyMSwxNiwxNiwxNiw2NSwKKyAgICAxODQsMTg5LDE4OSwxODksMTg5LDE4OSwxODks
MTg5LDE4OCwxNzMsMTYwLDE0NiwxMzQsMTQ3LDE5MywxODksCisgICAgMTg5LDE4OSw5NSw5NSwy
MzUsMjM1LDE5MiwxNTAsMTUwLDE4NiwxODYsMTg2LDIzNSwxMjEsMTIxLDEyMSwKKyAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTIzLDExMSwxMTUsMjM1LDIzNSwyMjksMTY5LDEzNCwx
MzQsCisgICAgMTUzLDIzMiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMTkxLDE4OSwxODksMjEz
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDE5NCwxMzQsMTM0LDEzNCwxNDcsMTIzLDE2LDE2LAorICAgIDE2LDY0LDE4Niwx
ODIsMTYzLDE1MCwyMzUsMjM1LDIzNSwyMzUsMjM1LDE3OCwxMzQsMTIwLDEyMCwxMjAsCisgICAg
MTIwLDEyMCwxMjAsMTIwLDEyNCwxNTQsMTc4LDE4OSwxODksMjM1LDIzNSwxNjMsNTMsMTYsMTYs
MTYsCisgICAgNzAsMTg0LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwx
ODIsMTU0LDEzNCwxODQsCisgICAgMTg5LDE4OSwxNDIsOTYsMjM1LDIzNSwyMzIsMTY2LDE1MCwx
ODYsMTg2LDE4NiwyMzUsMTIxLDEyMSwxMjEsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIwMCwxNDIsMTg4LDIzNSwyMzUsMjM1LDIyNSwxMzcsMTM0LAorICAgIDEzNCwxNjMsMjMy
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDE4OSwxODksMTg5LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTg0LDEz
NCwxMzQsMTM0LDEzNCw4OSwxNiwKKyAgICAxNiwxNiwxMzMsMTg2LDE4NiwxNzgsMjI3LDIzNSwy
MzUsMTk5LDEzOSwxMjAsMTIwLDEyMCwxMjAsMTIwLAorICAgIDEyMCwxMjMsMTI3LDE3MCwyMzUs
MjI3LDE4OSwxODksMTg5LDIzNSwyMzUsMjE1LDE4Niw5NiwxNiwxNiwKKyAgICAxNiw2OSwxODks
MTg5LDE5MSwxMjgsMTUwLDE3OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODIsMTgxLAorICAg
IDE4OSwxODksMTc5LDEyMywyMzIsMjM1LDIzNSwyMTksMTUwLDE4NiwxODYsMTg2LDIzNSwxMjEs
MTIxLDEyMSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDE5NCwxMzQsCisgICAgMTM0LDEzNCwxNjksMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwy
MzUsMTg5LDE4OSwxODksMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTk0LDE0MCwxMzQsMTM0LDEzNCw5
MCwKKyAgICAxNiwxNiw0OSwxODEsMTg2LDE4NiwxODgsMTgzLDE0MiwxMjAsMTIwLDEyMCwxMjAs
MTIyLDEyNCwxMjgsCisgICAgMTMzLDEzNCwxODQsMjM1LDIzMywyMDEsMTg5LDE4OSwyMDQsMjM1
LDIzNSwyMzUsMTkxLDE4NiwxMDEsMTYsCisgICAgMTYsMTYsMTM5LDE4OSwxODksMTcyLDExMywx
MTEsMjI5LDIxNywyMDcsMTkyLDE4OSwxODksMTg5LDE4OSwKKyAgICAxODksMTg5LDE4OSwxNTEs
MTM0LDE2OSwyMzIsMjM1LDE1MCwxODYsMTg2LDE4NiwyMzUsMTIxLDEyMSwxMjEsCisgICAgMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MTg0LAorICAgIDEzNCwxMzQsMTM0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDE4OSwxODksMTg5LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMjksMTQ0LDEzNCwxMzQsMTIzLAorICAgIDIwLDE2LDE2
LDU5LDE2OCwxNTAsMTI5LDEyMCwxMjAsMTIwLDEyMCwxMjIsMTQ4LDEzMywxMzQsMTM0LAorICAg
IDEzNCwxODQsMjM1LDIzNSwyMTAsMTg5LDE4OSwxODksMjI3LDIzNSwyMzUsMjM1LDIxNSwxODYs
MTg2LDg2LAorICAgIDE2LDE2LDM2LDEyNSwxODksMTg5LDE2NywxMTMsMjM1LDIzNSwyMzUsMjMy
LDIxMiwxOTIsMTg5LDE4OSwKKyAgICAxODksMTg5LDE4OSwxODQsMTY2LDE0OCwxNjIsMTgxLDE1
MCwxODYsMTg2LDE4NiwyMzUsMTIxLDEyMSwxMjEsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDEzNCwxMzQs
MTM0LDE5NywyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
KyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDE4OSwxODksMTg5LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjAzLDE0MCwxMzQsMTM0LAorICAgIDg2LDM1LDc1LDEwNywxMjAsMTIwLDEyMCwx
MjAsMTIwLDEyMiwxNTAsMTgzLDE0OCwxMzQsMTM0LDEzNywKKyAgICAxODcsMjM1LDIzNSwyMzUs
MTkxLDE4OSwxODksMjEyLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjExLDE4NiwxNzAsCisgICAgMjEs
MTYsMTYsMTYsNjUsMTg5LDE4OSwxNjcsMjMzLDIzNSwyMzUsMjM1LDIzNSwyMzIsMjEwLDE4NCwK
KyAgICAxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODIsMTU2LDE0OCwxODYsMTg2LDE4NiwyMzUs
MTIxLDEyMSwxMjEsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDE0NCwxMzQsMTM0LDEzNCwxNjMsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwy
MzUsMjI3LDE4OSwxODksMTg5LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIyOSwx
NzksMTMzLAorICAgIDEyNCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjcsMTUwLDE4MywxODks
MTY4LDEzNCwxMzQsMTMxLDIyNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMTg5LDE4OSwxODksMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIxNywxOTIsCisgICAgMTQzLDI4LDE2LDE2LDE2LDEz
NSwxODksMTg5LDIwMiwyMzUsMjM1LDIzNSwyMzUsMTUyLDk1LDEwNSwKKyAgICAxMzcsMTc2LDE4
OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4NCwxNjUsMTIxLDEyMSwxMjEsCisg
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAorICAgIDIwMywxNDAsMTM0LDEzNCwxMzQsMjMyLDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjA1LDE4OSwxODks
MjA0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxOTIsMTIyLAorICAgIDEy
MCwxMjAsMTIwLDEyMCwxMTEsOTMsMTgyLDE4OSwxODksMTg5LDE2OSwxMzQsMTM0LDEzNCwxNzYs
MTg5LAorICAgIDIyNywyMzUsMjM1LDIzNSwxODksMTg5LDE4OSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjA5LDg0LDE2LDE2LDQxLDE4OSwxODksMTg5LDE2
NywxNTAsMTUwLDE1MCwxNTAsMTUwLDE1MCwKKyAgICAxNTAsMTUzLDE4OSwxODksMTg5LDE4Niwx
ODksMTg5LDE4OSwxODksMTg5LDE4OSwxNzMsMTMxLDEyMiwxMjUsCisgICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAg
IDIzNSwyMjksMTQ0LDEzNCwxMzQsMTY5LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMTkxLDE4OSwxODksMjI3LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMTMsMTcxLDEzNSwxMjAsMTIwLAorICAgIDEyMCwxMjAsMTA2LDQyLDE2
LDE2LDc2LDE4OSwxODksMTc1LDEzNCwxMzQsMTM0LDE2MCwxODYsMTg2LAorICAgIDE4NiwyMTIs
MjM1LDIzNSwxODksMTg5LDE4OSwxODcsMTYwLDE1MCwxNTAsMTUwLDE1MCwxNTAsMTUwLDE1MCwK
KyAgICAxNTAsMTUwLDEzNywyMCwxNiwxNiw4OCwxODksMTg5LDE4NiwxNTMsMTUwLDE1MCwxNTAs
MTUwLDE1MCwKKyAgICAxNTAsMTUwLDE4OSwxODksMTg5LDEyNiwxNTcsMTg1LDE4OSwxODksMTg5
LDE4OSwxODksMTgyLDE1NSwxOTEsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMTk0LDEzNCwx
MzQsMTM0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUs
MjM1LDIzNSwyMzUsMTg5LDE4OSwxODksMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjMxLDE1NiwxMjAs
MTIwLDEyMCwxMjAsMTIwLAorICAgIDEzOSwyMDIsMTM3LDc1LDE2LDE2LDE2LDE4NCwxODksMTM0
LDEzNCwxMzQsMTYzLDE4NiwxODYsMTg2LAorICAgIDE4NiwxODYsMTk0LDIxNywxODksMTg5LDE4
OSwxNTAsMTUwLDE1MCwxNTAsMTUwLDE1MCwxNTAsMTUwLDE1MCwKKyAgICAxNTAsMTUwLDE1MCw5
NSwxNiwxNiwxOSwxNTEsMTg5LDE4OSwxNzUsMTQ5LDEzMiwxMjEsMTIxLDEyMSwKKyAgICAxMjEs
MTIxLDE4OSwxODksMTg5LDE2MiwxODYsMTg2LDE4NiwxODIsMTY0LDE4OSwxODksMTg5LDE4OSwx
ODUsCisgICAgMjI1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDEzNCwxMzQsMTM0LDIzMiwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMTg5LDE4
OSwxODksMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzEsMTUzLDEyMCwxMjAsMTIwLDEyMCwxMzEsMTc0LAor
ICAgIDIzMSwyMzUsMjAzLDE0NywyNywxNiwxNiw2NSwxODQsMTM0LDEzNCwxODQsMjM1LDE5OSwx
MzcsMTcyLAorICAgIDE4NiwxODYsMTg2LDE4NiwxODksMTg5LDE4OSwxNTAsMTUwLDE1MCwxNTAs
MTUwLDE1MCwxNTAsMTUwLDE1MCwKKyAgICAxNTAsMTYwLDE3NCwxOTIsNTgsMTYsMTYsNDIsMTg5
LDE4OSwxODksMTMyLDEyMSwxMjEsMTIxLDEyMSwKKyAgICAxMjEsMTIxLDE4OSwxODksMTg5LDE4
NiwxODYsMTg2LDE4NiwxNTIsMTM2LDE3OSwxODgsMTg5LDE4OSwxODksCisgICAgMTg4LDE3Niwy
MzIsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwyMzUsMjM1LDE0NCwxMzQsMTM0LDE2OSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMTg5LDE4OSwxODksMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjMx
LDE2NCwxMjAsMTIwLDEyMCwxMjAsMTY0LDIwNiwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIz
NSwxMjUsMTYsMTYsMTYsNjUsMTM0LDE2MCwyMzUsMjM1LDIzNSwxOTksMTI5LAorICAgIDE1Miwx
ODIsMTg2LDE4NiwxODksMTg5LDE4OSwxODIsMjE0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMTk4LDE5LDE2LDE2LDk5LDE4OSwxODksMTc5LDEzNCwx
MzQsMTM0LDEzNCwKKyAgICAxMzQsMTM0LDE4OSwxODksMTg5LDEzNCwxMzQsMTM0LDEzNCwxMzQs
MTM0LDEzNCwxMzcsMTYxLDE4OCwxODksCisgICAgMTg5LDE4OSwxNzMsMTk3LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDE5
NCwxMzQsMTM0LDEzNCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAy
MzUsMjM1LDIzNSwyMzUsMTg5LDE4OSwxODksMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzMSwxNjQsMTIwLDEyMCwxMjAsMTIwLDEyMCwx
NzcsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwxNzUsNzYsMTYsMTYsMTYs
OTcsMTM0LDE0NywxOTcsMjM1LDIzNSwyMjUsCisgICAgMTQ5LDEyNywxNTgsMTg2LDE4OSwxODks
MTg5LDE4OCwyMTIsMjI1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjMyLAorICAgIDE3MiwxMzQsMTM0
LDEzNCwxMzQsNzUsMTYsMTYsMjAsMTYxLDE4OSwxODksMTQ2LDEzNCwxMzQsMTM0LAorICAgIDEz
NCwxMzQsMTg5LDE4OSwxODksMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTQ2
LDE4MiwKKyAgICAxODksMTg5LDE4OSwxODQsMTc4LDIyMiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDEzNCwxMzQsMTM0LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwxODks
MTg5LDE4OSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1
LDIzNSwxOTksMTQyLDEyMCwxMjAsMTIwLDEyMCwxMzUsMTg4LDIzNSwyMzUsMjM1LDIzNSwyMzUs
CisgICAgMjM1LDIzNSwyMzUsMjE2LDEzNCwxNTQsODcsMTYsMTYsMzgsMTMwLDEzNCwxMzQsMTYz
LDIyOSwxNzQsCisgICAgMTUwLDE0NiwxMjgsMTU0LDE4OSwxODksMTg5LDE4NiwxODYsMTg2LDIw
NSwyMzUsMjM1LDIzMiwxNzIsMTM0LAorICAgIDEzNCwxMzQsMTM0LDEzNCwxMzQsMTMwLDM4LDE2
LDE2LDQ5LDE4NCwxODksMTYzLDEzNCwxMzQsMTM0LAorICAgIDEzNCwxMzQsMTg5LDE4OSwxODks
MTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNywKKyAgICAxNzIsMTg5
LDE4OSwxODksMTg5LDE4OSwxOTAsMjA4LDIyNCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
CisgICAgMjM1LDIzNSwyMzUsMjM1LDEzNCwxMzQsMTM0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwxODksMTg5LDE4OSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjMxLDE1NiwxMjAsMTIwLDEyMCwx
MjAsMTM1LDE4OCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwxNzUs
MTM0LDEzNCwxNzMsMTczLDIxLDE2LDE2LDQ5LDEzNCwxMzQsMTM0LDEzNiwxNDMsCisgICAgMTUw
LDE1MCwxODQsMTc3LDE4OSwxODksMTg5LDE4NiwxODYsMTg2LDE4NiwxNzAsMjI5LDE2MywxMzQs
MTM0LAorICAgIDEzNCwxMzQsMTM0LDEzNCwxMzQsMTMxLDEwMCwxOSwxNiwxNiw2NSwxODksMTkw
LDE4NiwxODYsMTg2LAorICAgIDE4NiwxNzUsMTg5LDE4OSwxODksMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIyOSwxODQsMTQ3LDEzNCwKKyAgICAxMzQsMTU2LDE4MiwxODksMTg5LDE4OSwx
ODksMTg5LDE4OSwyMDIsMjMzLDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUs
MjM1LDEzNCwxMzQsMTM0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAg
IDIzNSwyMzUsMjM1LDIzNSwxODksMTg5LDE4OSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKKyAgICAyMzEsMTUzLDEyMCwxMjAsMTIwLDEyMCwxMTUsMTExLDExMSwxMTEsMTEx
LDExMSwxMTEsMTExLDE1NCwyMzEsCisgICAgMjM1LDIxNiwxMzQsMTM0LDEzNCwxODgsMTg5LDEx
OCwxNiwxNiwxNiwxMDIsMTM0LDEzNCwxMzQsMTM0LAorICAgIDEzNiwxNzAsMjM1LDIzNSwxODks
MTg5LDE4OSwxNDYsMTgwLDE4NiwxODUsMTU0LDEzNCwxMzQsMTM0LDEzNCwKKyAgICAxNDcsMTk0
LDE5OSwxNDIsMTExLDExMSwxMTEsODMsMTYsMTYsMTYsMTM1LDE4OSwxODgsMTg2LDE5MiwKKyAg
ICAxNzMsOTUsMTg5LDE4OSwxODksMjMxLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKKyAgICAyMjksMTc5LDEzNCwxNDQsMTY1LDE4MiwxODksMTg5LDE4OSwxODksMTcz
LDE2OSwyMzIsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDEzNCwxMzQsMTM0LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwx
ODksMTg5LDE4OSwyMzMsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzMSwKKyAgICAxNTMs
MTIwLDEyMCwxMjAsMTE3LDExMiwxMTEsMTExLDExMSwxMTEsMTExLDExMSwxMTEsMTExLDExMSwx
MTEsCisgICAgMTExLDE0MCwxMzQsMTM0LDE0NywxODksMTg5LDE4OSw3MSwxNiwxNiw0MSwxMzks
MTM0LDEzNCwxMzQsCisgICAgMTM0LDEzNCwxMzQsMTY5LDE4OSwxODksMTg5LDE5MiwxNTIsMTgy
LDE1NywxMzQsMTM0LDEzNCwxMzQsMTQ5LAorICAgIDEyMSwxMjEsMTIxLDExNCwxMTEsMTExLDEx
MywyMzQsOTIsMTYsMTYsNDksMTg0LDE4OSwyMDcsMjM1LAorICAgIDIzNSwxNjUsMTg5LDE4OSwx
ODksMTM0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUs
MjM1LDE5NywxNDcsMTM0LDEzNCwxNDQsMTY5LDE4OSwxODksMTg5LDE4OSwxODksMTcwLDEzNSwx
NDcsCisgICAgMTk3LDIzNSwyMzUsMjM1LDEzNCwxMzQsMTM0LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwxOTQsMTg5LDE4OSwyMDIsMjMz
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTk5LDE0MiwKKyAgICAxMjAsMTIwLDEyMCwxMTUsMTExLDEx
MSwxMTEsMTExLDExMSwxMTEsMTExLDExMSwxMTEsMTExLDExMSwxMTEsCisgICAgMTE1LDEzNCwx
MzQsMTM0LDExNSwxODksMTg5LDE4OSwxMDIsMTksMTYsMTYsMTYsNTEsMTQ3LDEzOCwKKyAgICAx
MzQsMTM0LDEzNCwxMzQsMTg5LDE4OSwxODksMjM1LDIzNSwxODYsMTM0LDEzNCwxMzQsMTQwLDE2
NSwxNjgsCisgICAgMTIxLDEyMSwxMTQsMTExLDExMSwxMTEsMTc2LDIwOCwxNzAsMjEsMTYsMTYs
NjUsMTg0LDE5OSwyMzUsCisgICAgMjM1LDIzNSwxODksMTg5LDE4OSw5NSwxNjksMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MTk3LDE0NywxNjEsMTg5LDE4OSwxODksMTg5LDE4OSwxODQsMTY2LAorICAgIDE0OCwxNjMsMjM1
LDIzNSwxMzQsMTM0LDEzNCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAg
ICAyMzUsMjM1LDIzNSwyMzUsMjE2LDE4OSwxODksMTg5LDIwMiwyMzMsMjM1LDIzNSwyMzEsMTU2
LDEyMCwxMjAsCisgICAgMTIwLDEyMCwxMTcsMTExLDExMSwxNzYsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDE4OCwxMjcsMTI0LAorICAgIDEzNCwxMzQsMTM0LDEyNywxMTEsMTg5LDE4OSwx
ODksMTExLDcyLDE2LDE2LDE2LDE2LDkyLDE4NSwKKyAgICAxODQsMTQ3LDEzNCwxMzQsMTg5LDE4
OSwxODksMTU2LDE3OSwxMzQsMTM0LDEzNCwxMzUsMTg2LDE4NiwxODYsCisgICAgMTQ2LDExNSwx
MTEsMTExLDExMSwxNzMsMjEyLDE4NiwxODYsMTE3LDE2LDE2LDE2LDY1LDE4NCwyMjcsCisgICAg
MjM1LDIzNSwxODksMTg5LDE4OSw5NSw5OSwyMTMsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIyOSwxODIsMTgyLDE4
OSwxODksMTg5LDE4OSwxODksCisgICAgMTg5LDE4MiwxNTQsMTM0LDEzNCwxMzQsMTM0LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjEyLDE4OSwxODksMTg5LDIwMiwyMzMsMjMxLDE1MywxMjAsMTIwLDEyMCwKKyAgICAxMjQsMTU2
LDExMSwxMTEsMTQyLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIxNiwxMzQs
CisgICAgMTM0LDEzNCwxMzQsMTE1LDExMSwxODksMTg5LDE4OSwxMTEsMTExLDc1LDI4LDE2LDE2
LDM0LDEwOCwKKyAgICAxMTEsMTExLDEyMiwxMzQsMTg5LDE4OSwxODksMTM0LDEzNCwxMzQsMTM0
LDEzMywxMjksMTgwLDE4NiwxODYsCisgICAgMTg2LDE2NSwxMTEsMTExLDE3MywyMTIsMTg2LDE4
NiwxODYsMTg4LDEyNSwxNiwxNiwxNiw2NSwyMDgsCisgICAgMjM1LDIzNSwxODksMTg5LDE4OSw5
NSw5NSwxMzAsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTk3LDE0NywxNTYsMTgyLDE4OSwxODksCisg
ICAgMTg5LDE4OSwxODksMTczLDEzNCwxMzQsMTM3LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIxMiwxODksMTg5LDE4OSwy
MDIsMTcwLDEyMCwxMjAsMTIwLDE2NywKKyAgICAyMjQsMTQ2LDExMSwxMTEsMTg0LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE2NiwxMzQsCisgICAgMTM0LDE0NywxODcsMjM1
LDIzNSwxODksMTg5LDE4OSwxNTAsMTUwLDE1MCwxNDgsMjEsMTYsMTYsNDMsCisgICAgMTA4LDEx
MSwxMTEsMTIwLDE4OSwxODksMTg5LDEzNCwxMzQsMTM0LDEzNCwxMjIsMTE2LDE0MCwxODMsMTg2
LAorICAgIDE4NiwxODYsMTQwLDEzNywyMzQsMTg4LDE4NiwxODYsMTg4LDIxNywyMzUsMTI1LDE2
LDE2LDE2LDY5LAorICAgIDIzNSwyMzUsMTg5LDE4OSwxODksOTUsOTUsOTUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTk3LDE1NSwxNjUsCisgICAgMTg2LDE4OSwxODksMTg5LDEz
NCwxMzQsMTM3LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTIsMTg5LDE4OSwxODcsMTIzLDEyMCwxMjAsMTc3LDIz
NSwKKyAgICAyMzUsMTE1LDExMSwxMTEsMjIzLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjE2LDEzNCwxMzQsCisgICAgMTM0LDIxNiwyMzUsMjM1LDIyNywxODksMTg5LDE4OSwxOTIs
MTUwLDE1MCwxNTAsMTAyLDE2LDE2LDE2LAorICAgIDQzLDEwOCwxMTEsMTExLDE4MiwxODksMTg5
LDE1MSwxMzQsMTM0LDEzNCwxMjgsMTEyLDExMSwxMjYsMTgwLAorICAgIDE4NiwxODYsMTg2LDE2
OCwxNzUsMTg2LDE4NiwxODgsMjE3LDIzNSwyMzUsMjM1LDEyMSwxNiwxNiwxNiwKKyAgICAxMzIs
MjMyLDE4OSwxODksMTg5LDk1LDk1LDk1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
CisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAorICAgIDIzMiwxOTQsMTg5LDE4OCwxMzQsMTQ3LDE5NywyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIwOSwxNDYsMTIwLDEyMCwxMjAsMTI0LDIzNSwyMzUsCisgICAgMjM1LDExMSwxMTEs
MTExLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTg3LDEzNCwxMzQsMTM0LAorICAg
IDE2NiwyMzUsMjM1LDIzNSwyMDUsMTg5LDE4OSwyMDQsMjM1LDE5MiwxNTAsMTUwLDE1MCw4Miwx
NiwxNiwKKyAgICAxNiw3OCwyMjgsMjM1LDE5MiwxODksMTg5LDE3OSwxMzUsMTM0LDEzNCwxMzQs
MTMxLDEyMCwxMTEsMTM1LAorICAgIDE4MiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwyMTIsMjM1
LDIzNSwyMzUsMjM1LDIzNSwxMDAsMTYsMTYsCisgICAgMjIsMTg2LDE4OSwxODksMjAxLDk1LDk1
LDk1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE5OSwxNDIsMTIwLAorICAgIDE1
NiwyMjIsMjAxLDIxNywyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE3MSwxMjAsMTIwLDEy
MCwxMjAsMTYzLDIzMywyMzUsCisgICAgMjM1LDExMSwxMTEsMTExLDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMTM3LDEzNCwxMzQsMTM0LAorICAgIDIxNiwyMzUsMjM1LDIzNSwxOTEs
MTg5LDE4OSwyMjcsMjM1LDIzNSwyMDAsMTU1LDE1MCwxNTAsODIsMTYsCisgICAgMTYsMTYsOTIs
MjMyLDE0NiwxODgsMTg5LDE4OSwxNzMsMTcyLDEzNCwxMzQsMTM0LDEzNCwxMzEsMTIwLAorICAg
IDExNiwxNzAsMTg2LDE4NiwxODYsMTg2LDE0OSwxMzcsMjMyLDIzNSwyMzUsMjM1LDIzNSwyMDYs
NDksMTYsCisgICAgMTYsMzksMTI0LDE4OSwyMTYsOTUsOTUsOTUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMTgxLDEyMCwxMjAsMTIwLDEyMCwxMjAsCisgICAgMTIwLDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzEsMTI0LDEyMCwxMjAsMTI5LDE2MSwxODksMjAyLDIzMywKKyAg
ICAyMzUsMTExLDExMSwxMTEsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzMiwxMzQsMTM0
LDEzNCwxODcsCisgICAgMjM1LDIzNSwyMzUsMjM1LDE4OSwxODksMTg5LDIzNSwyMzUsMjM1LDIz
NSwyMzAsMTkyLDE1NSwxNTAsODIsCisgICAgMTYsMTYsMTYsMTY3LDEzMywxNTYsMTg5LDE4OSwx
ODksMjAyLDE5MSwxMzQsMTM0LDEzNCwxMzQsMTM0LAorICAgIDEzNywxNjYsMTg2LDE4NiwxODYs
MTg2LDEzNSwxMTEsMTE4LDE4OCwyMzUsMjM1LDIzNSwyMzMsMTYzLDIxLAorICAgIDE2LDE2LDE2
LDY1LDIyNCw5NSw5NSw5NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxODEsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIw
LDEyNCwKKyAgICAxOTIsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE3MSwx
MjAsMTIwLDEyNCwyMTIsMTg5LDE4OSwxODksMTg5LAorICAgIDE4OSwxNzIsMTIzLDExMSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzIsMTYzLDEzNCwxMzQsMTM3LDIzNSwKKyAgICAyMzUsMjM1
LDIzNSwyMzUsMTg5LDE4OSwxODksMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjMwLDE4NywxNTAs
CisgICAgMjksMTYsMTYsNDgsMTMwLDEzNCwxNjEsMTg5LDE4OSwxODksMTY2LDExMiwxMjIsMTMy
LDEzNCwxMzQsCisgICAgMTM0LDEzNCwxNDksMTg1LDE4NiwxODYsMTczLDExMywxMTEsMTExLDEy
MywxNjIsMjA0LDIzNSwyMjcsMTMwLAorICAgIDI3LDE2LDE2LDE2LDc4LDkyLDk1LDk1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwxOTksMTQyLDEyMCwxMjAs
MTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEzNSwxNzEsMjI0LAorICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTI0LDEyMCwxMjAsMTgxLDIzNSwyMTIsMTg5
LDE4OSwxODksCisgICAgMTg5LDE4OSwxODcsMTQ4LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE3
OSwxMzQsMTM0LDEzNCwxMTMsOTUsCisgICAgOTUsOTUsOTUsOTUsMTg5LDE4OSwxODksMTEzLDE4
MiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxNzYsCisgICAgOTUsMTYsMTYsMTYsNTcsMTM0LDEz
NywyMTEsMTg5LDE4OSwxODcsMTIzLDExMSwxNjQsMTc3LDEzNywKKyAgICAxMzQsMTM0LDEzNCwx
NTcsMTg3LDE4NiwxODYsMTY1LDExMywxMTEsMTExLDExMSwxMTEsMTExLDEzOCwxNzgsCisgICAg
MTc4LDkyLDE2LDE2LDE2LDM4LDk1LDk1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjEzLDE3MSwxMzUs
CisgICAgMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMzUsMTky
LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzEsMTIwLDEyMCwxMjAsMjM1LDIzNSwyMzUsMjE3LDE5NSwxODksCisgICAgMTg5LDE4OSwxODks
MTg5LDE4OSwxODksMjA4LDIzNSwyMzUsMjM1LDEzNywxMzQsMTM0LDExNiw5NSw5NSwKKyAgICA5
NSw5NSw5NSw5NSwxODksMTg5LDE4OSw5NSw5NSwxMTMsMTgyLDIzNSwyMzUsMjM1LDIzNSwyMzAs
CisgICAgMTYwLDc1LDE2LDE2LDE2LDEzNiwxOTcsMjE0LDE3OCwxODksMTg5LDE3MiwxNzMsMjA4
LDE4NiwxODMsCisgICAgMTU3LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTQ5LDE4NiwxNjcsMTE0LDEx
MSwxMTEsMTExLDExMSwxMTEsMTMxLAorICAgIDE4OSwxODcsMTE0LDEyMCwxMjAsMTIwLDEyMCwx
MjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwKKyAgICAxMjAsMTIwLDEyMCwxMjAs
MTIwLDEyMCwxMjAsMTIwLDEzNSwxOTIsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE2NCwxMjAsMTIwLDEyNCwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMjgsMTcyLDE4OSwxODksMTg5LDE4OSwxODksMjE3LDIz
NSwyMTYsMTM0LDEzNCwxMzQsOTUsOTUsOTUsCisgICAgOTUsOTUsOTUsOTUsMTg5LDE4OSwxODks
OTUsOTUsOTUsOTUsMTEzLDE4MiwyMzUsMjM1LDIzNSwKKyAgICAyMTYsMTI5LDI3LDE2LDE2LDYw
LDE4NSwxMTksMTI1LDE4NywxODksMTg5LDE5NCwxODYsMTg2LDE4NiwKKyAgICAxODgsMTc1LDEz
NCwxMzQsMTM0LDEzNCwxMzQsMTcwLDE4NiwxNzgsMTY1LDE2NiwxMzEsMTExLDExMSwxMjIsCisg
ICAgMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEy
MCwxMjAsMTIwLAorICAgIDEyMCwxMjAsMTM1LDE3MSwyMjQsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMTMsMTIwLDEyMCwxMjAsMTgxLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIz
NSwxMTEsMTQ4LDE3OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg0LDE3OSwxMTksOTUs
OTUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDE4OSwxODksMTg5LDE2NSwxMDMsOTUsOTUsOTUsOTUs
MTI2LDIzMSwyMzUsCisgICAgMjE2LDEzNCw4NiwxNiwxNiwxNiw0MywxMTEsMTExLDE0OSwxODks
MTg5LDE4OSwxODgsMTg2LDE4OCwKKyAgICAyMzEsMjM1LDE5NywxNDcsMTM0LDEzNCwxMzQsMTM5
LDE2NiwxODYsMTY2LDEzNSwxMjAsMTIwLDEyMCwxMjAsCisgICAgMTIwLDEyMCwxMjAsMTIwLDEy
MCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEzNSwxNjcsMjA2LAorICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwxNjAsMTIwLDEyMCwxNTYs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwxMTEsMTExLDExMSwyMjAsMTky
LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTc4LDEzMCwKKyAgICAyMzUsMjM1LDIz
NSwyMzUsMTg5LDE4OSwxODksMjM1LDIyNiwxNjUsMTAzLDk1LDk1LDk1LDE0OCwxODcsCisgICAg
MTM0LDEzNCwxMzQsNzQsMTYsMTYsMTYsODEsMTIwLDE5OSwyMTIsMTg5LDE4OSwxODksMTkwLDIx
NiwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjI1LDEzNywxMzQsMTM0LDEzMCwxMjYsMTIwLDEyMCwx
MjAsMTIwLDEyMCwxMjAsCisgICAgMTIwLDEyMCwxMjksMTQ3LDkzLDE5LDE2LDE2LDE2LDQzLDEx
OSwxNjIsMjA0LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1
LDIzNSwyMzUsMjM1LDIzNSwxMjQsMTIwLDEyMCwyMTMsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LAorICAgIDIzNSwxMTEsMTExLDExMSwyMzUsMjMyLDIxMiwxOTQsMTg5LDE4OSwxODksMTg5
LDE4OSwxODksMTg5LDE4OSwKKyAgICAxODksMTg5LDE5NSwyMTcsMTg5LDE4OSwxODksMjM1LDIz
NSwyMzUsMjI2LDE1Nyw5NSw5NSwxMTgsMTM0LAorICAgIDEzNCwxMzQsMTM0LDExNyw1NSwxNiwx
NiwxNiw3MCwxNTAsMTkwLDE4OCwxODksMTg5LDE4OSwxOTUsCisgICAgMjE3LDIzNSwyMzUsMjM1
LDIzNSwyMDYsMTM0LDEyMywxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTI5LAorICAgIDE2
MSwxODksMTg5LDE4MywxMDMsNzcsMjIsMTYsMTYsMTYsMzcsOTYsMTExLDE0NiwyMzEsMjM1LAor
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwxMjAsMTIw
LDEyMCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwxMTEsMTExLDEx
MSwyMzUsMjM1LDIzNSwxOTcsMTM0LDEzNCwxNjAsMjI3LDIxMCwxODcsMTg5LDE4OSwKKyAgICAx
ODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMjE3LDIzNSwyMzUsMjM1LDIzNSwxMzksMTAyLDEz
NCwxMzQsCisgICAgMTM0LDEzMywxMjIsMTExLDEwMiwxOSwxNiwxNiwxNiwxNTAsMTUxLDE4Niwx
ODgsMTg5LDE4OSwxODksCisgICAgMTg5LDE5NSwxODcsMTQyLDEyMCwxMjAsMTIwLDEyMCwxMjAs
MTIwLDEyMSwxMjksMTUyLDE4NiwxODksMTg5LAorICAgIDE4OSwxODksMTg5LDE4OSw5NSwxNjUs
MjA2LDkzLDE2LDE2LDE2LDE5LDY2LDExMSwxMjMsMTYyLAorICAgIDIwNCwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzMSwxMjAsMTIwLDEyMCwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwxMTEsMTExLDExMSwyMzUsMjM1LDIzMiwxNTYsMTM0
LDEzNCwxOTQsMjM1LDIzNSwyMjAsMTQ0LDE3OCwKKyAgICAxODksMTg5LDE4OSwxODksMTg5LDE4
OSwxODksMTg5LDE5NCwyMDgsMjI0LDIzNSwyMjMsMTI5LDEzNCwxMzQsCisgICAgMTMyLDEyMCwx
MTEsMTExLDExMywxMzgsMTYsMTYsMTYsMTQ1LDE3MSwxODYsMTg2LDE4NSwxNDcsMTIwLAorICAg
IDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIyLDEyNiwxMzMsMTM0LDE1MSwxODgs
MTg5LDE4OSwKKyAgICAxODksMTg5LDE4OSwxODksMTM5LDIzNSwyMzUsMjM1LDEzOSwyMywxNiwx
NiwxNiw1OCwxMTEsMTExLAorICAgIDExMSwxNDYsMjMxLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwy
MzUsMjM1LDE3MSwxMjAsMTIwLDEyNCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwxMTEsMTExLDExMSwyMzEsMjM1LDE3OSwxMzQsMTM0LDEzNCwyMjUsMjM1LDIzNSwy
MzUsMTU3LDk1LAorICAgIDk1LDEyNiwyMTAsMTk1LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4
OSwxODksMTg5LDE4OSwxODksMTg5LAorICAgIDE4OSwxODksMTg5LDE4OSwxODksMTg5LDMyLDE2
LDE2LDkxLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLAorICAgIDEyMCwxMjAsMTIwLDEyMCwxMjAs
MTIwLDEyOSwxNTAsMTgzLDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4NywKKyAgICAxMzMsMTg5
LDE4OSwxODksMjA4LDIzNSwyMzUsMjM1LDIzNSwyMDEsNjQsMTYsMTYsMTYsNTUsMTExLAorICAg
IDExMSwxMTEsMTQ2LDIzMSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDEyNCwxMjAsMTIwLDE4
MSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwxMjMsMTExLDExMSwx
NTQsMjM1LDEzNywxMzQsMTM0LDE4NywyMzUsMjM1LDIzNSwyMzUsMjIyLDk5LAorICAgIDk1LDk1
LDEzNCwyMzEsMjM1LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODks
CisgICAgMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTE4LDgxLDEyMCwxMjAsMTIwLDEyMCwxMjAs
MTIwLDEyMCwxMjAsCisgICAgMTIwLDEyMCwxMjksMTUwLDE4MywxODksMTg5LDE4OSwxODksMTg5
LDE4OSwxODksMTg5LDE4OSwxODgsMTYyLAorICAgIDEwNiwxODksMTg5LDE4OSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMzcsMTYsMTYsMTYsMTYsCisgICAgNDksMTA4LDExMSwxMjMsMTYy
LDIwNCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LAorICAgIDIzNSwyMzUsMjM1LDIzNSwxMjAsMTIwLDEyMCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMTg0LDExMSwxMTEsMTExLDIyOSwxMzQsMTM0LDEzNCwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxNzgsCisgICAgOTUsOTUsOTUsMTM0LDIzNSwxOTQsMTg5
LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LAorICAgIDE4OSwxODksMTg5LDE3
NiwxNTAsMTI5LDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTI5LDE2MSwKKyAgICAx
ODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODgsMTY1LDEz
OSwxMzQsCisgICAgMTM0LDE4OSwxODksMTg5LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwx
NzMsMzAsMTYsMTYsMTYsCisgICAgMTYsMjgsNzUsMTExLDExMSwxMTEsMTExLDE1NCwyMzEsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwy
MzUsMTIwLDEyMCwxMjAsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAg
MjM1LDIzNSwxMTEsMTExLDExMSwxOTQsMTM0LDEzNCwxNjAsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAorICAgIDE2NSw5NSw5NSw5NSwxOTEsMjIyLDE5NCwxODksMTg5LDE4OSwxODksMTg4
LDE3MywxNTksMTM1LDExOCwKKyAgICAxMDIsMTA5LDEyMSwxMjAsMTIwLDEyMCwxMjAsMTIwLDEy
MCwxMjAsMTA3LDU1LDE2NiwyMjcsMTc5LDE1MCwKKyAgICAxNTAsMTUwLDE1MCwxNjcsMjAzLDE4
OSwxODksMTg5LDE4OSwxODksMTg5LDE4NCwxNjQsMTcwLDEzNywxMzQsCisgICAgMTM0LDE4OSwx
ODksMTg5LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTczLDQ0LDE2LDE2LAorICAg
IDE2LDE2LDE2LDE2LDE2LDQ5LDEwOCwxMTEsMTQ2LDIzMSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDEyMCwxMjAsMTIwLDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMTIzLDExMSwxMTIsMTM2
LDEzNCwxMzQsMTk0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMTUyLDk1
LDk1LDk1LDk2LDEzMiwxMzksMTg4LDE4OSwxODksMTg5LDE3OCwxNjEsMTQyLDEyNSwKKyAgICAx
MjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTI4LDE1OSw4NiwxNiwxNiw1NywyMzUsMjM1LDIx
NCwKKyAgICAxNjMsMTUwLDE1MCwxNTAsMTc0LDIxNiwxOTUsMTg5LDE4OSwxODksMTg5LDE4OSwx
ODksMTg5LDE4OCwxNjUsCisgICAgMTM0LDE4OSwxODksMTg5LDEzNCwxNTgsMjEwLDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTQ2LAorICAgIDMwLDE2LDE2LDE2LDE2LDE2LDI4LDc1
LDExMSwxMjcsMTg4LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwy
MzUsMjM1LDIzNSwxMjAsMTIwLDEyMCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKKyAgICAyMzUsMjM1LDE4NCwxMTEsMTI0LDEzNCwxMzQsMTM0LDIyNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIyMiw5OSwxMTMsMTM0LDEzNCwxMzQsMTM0LDE1MSwx
NzAsMTUwLDEyOSwxMjAsMTIwLDEyMCwxMjAsCisgICAgMTIwLDEyMCwxMjAsMTI4LDE2NywyMDAs
MTc5LDE4NiwxODYsMTY5LDIxLDE2LDE2LDEzMiwyMzUsMjM1LAorICAgIDIzNSwxOTIsMTUwLDE1
MCwxNTAsMTc1LDE3MywxNDYsMTM1LDE1NCwxNzgsMTg5LDE4OSwxODksMTg5LDE4OSwKKyAgICAx
ODQsMTg5LDE4OSwxODksMTM0LDEzNCwxMzQsMTM4LDIxNiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsCisgICAgMjIxLDEyNSw0NCwxNiwxNiwxNiwxNiwxNiwxNiwxNiw1NSwxMjMsMTYyLDIw
NCwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMTIwLDEyMCwxMjAs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMTcz
LDEzMywxMzQsMTM0LDE0NCwyMzEsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIz
NSwyMzUsMTY0LDEzMSwxMjYsMTIyLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIw
LDEyMCwKKyAgICAxMjcsMTQ2LDE2MiwyMDgsMjIzLDIwMCwxODYsMTg2LDE4NiwxNTIsNjgsMTYs
MTYsMjMsMjAxLDIzNSwKKyAgICAyMzUsMjM1LDE4NywxNTAsMTUwLDE1MCwxMTksOTUsOTUsOTUs
OTUsMTMxLDE5NiwxOTIsMTg5LDE4OSwKKyAgICAxODksMTg5LDE4OSwxODcsMTM0LDEzNCwxMzQs
MTM0LDEzMywxNTAsMjMyLDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1
LDE0NiwzMCwxNiwxNiwxNiwxNiwxNiwxNiw0OSwxMDgsMTI3LDE4OCwKKyAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisg
ICAgMjM1LDIzNSwyMzUsMjM1LDEyMCwxMjAsMTIwLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIxNiwxMzQsMTM0LDEzNCwxMTEsMTU0LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMTk3LDEyNCwxMjAsMTIwLDEyMCwxMjAs
MTIwLDEyMCwxMjAsMTIwLDEyMCwxMTgsMTEyLDExNCwxNjQsCisgICAgMTg5LDE4OSwxODksMTg5
LDE4OSwxODksMTg4LDE4NywxNTgsMTIxLDExOCwzNiwxNiwxNiw0NCwxNTMsCisgICAgMjM1LDE5
MSwxMjEsMTMyLDE1MCwxNTAsMTUwLDExMCw5NSwxMDgsMTYxLDIzMSwyMzUsMjMyLDIxMCwxODks
CisgICAgMTg5LDE4OSwxODksMTk0LDE3MCwxMzUsMTMzLDEzNCwxMzQsMTM0LDE0NCwyMzIsMjM1
LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjIxLDEyNSw0NCwxNiwxNiwx
NiwxNiwxNiw0MywxMDgsMTExLAorICAgIDE0NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMTIw
LDEyMCwxMjAsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIz
NSwyMzUsMTY5LDEzNCwxMzQsMTI3LDExMSwxMTEsMTExLDExMSwxMTEsMTExLDExMSwxMTIsMTE2
LAorICAgIDExOSwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDExNywxMTAsMTAxLDk1
LDk1LDk1LDk1LAorICAgIDEzOSwxNzgsMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE3MCwx
NjAsMTI0LDIwLDE2LDE2LDE2LAorICAgIDM4LDk1LDk1LDk2LDEzOSwxNTAsMTUwLDE1MCwyMDEs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjE3LAorICAgIDE5MiwxODksMTg3LDE4NiwyMDAsMjM1
LDE3OSwxMzQsMTM0LDEzNCwxMzQsMTQ2LDE5NywyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE3Myw0NCwxNiwxNiwxNiwxNiwxNiw0OSwKKyAgICAxMDgs
MTExLDE2MiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDEyMCwxMjAsMTIwLDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDEzNywxMzQsMTM0LDEyNSwxMTEsMTEx
LDExMiwxMTYsMTE5LDEyMCwxMjAsMTIwLDEyMCwKKyAgICAxMjAsMTIwLDEyMCwxMjEsMTIxLDEx
NCwxMTEsMTczLDIzNSwyMzEsMjAwLDE2OSwxNDMsMTIxLDk1LDk1LAorICAgIDk1LDk1LDExMywx
NDgsMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxMjksMjcsMTYsMTYsCisgICAgMTYs
MTQyLDEyMSwxMTYsMTU2LDE1OCwxNTAsMTUwLDE2MCwyMjQsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCisgICAgMjM1LDIxMSwxODYsMTg2LDE4NiwyMjAsMjM1LDIyOSwxNTIsMTM0LDEzNCwxMzQs
MTM0LDE2MywyMzIsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMTI1LDE2LDE2LDE2LDE2LAorICAgIDI4LDc1LDExNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1
LDEyMCwxMjAsMTIwLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIz
NSwyMzUsMjM1LDEzNCwxMzQsMTM0LDIwMCwxMjUsMTE5LDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIw
LDEyMCwKKyAgICAxMjAsMTIxLDEyNiwxMzIsMTExLDEyNywxODQsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMDgsCisgICAgOTUsOTUsOTUsMTEzLDE4NiwxODcsMTg4LDE3MSwxODks
MTg5LDE4OSwxODksMTg5LDE3OCwxNiwxNiwKKyAgICAxNiw3NiwxODQsMTg5LDE4OSwxOTQsMTc5
LDE2OSwxNjIsMTY4LDIyMiwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjA2LDE4
NiwxODYsMTk2LDIzNSwyMzUsMjM1LDE5MCwxNDAsMTM0LDEzNCwxMzQsMTYzLDIzMiwKKyAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxNTMsNDQsMTYs
MTYsCisgICAgMTYsMTYsNjUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwxMjAsMTIwLDEyMCwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwxMzQsMTMxLDEyNiwx
MzUsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEzNCwxMzcsCisgICAgMTMwLDEzNCwxNDcs
MTk3LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAg
IDk1LDk1LDk1LDIzNSwxODYsMTg2LDE4NiwyMzUsMjM1LDIyNCwyMTMsMjA0LDE4MCwxODksMzIs
MTYsCisgICAgMTYsMTYsNjUsMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5
LDE4OSwxODksMTk1LAorICAgIDIxNywyMzUsMjMxLDE4OCwxODYsMTg2LDIyMCwyMzUsMjM1LDIz
NSwyMjksMTc5LDEzNCwxMzQsMTM0LDE2MywKKyAgICAyMzIsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE0NiwzMCwKKyAgICAxNiwxNiwxNiw5Miwy
MjgsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUs
MjM1LDIzNSwyMzUsMTIwLDEyMCwxMjAsMTY3LDIzNSwyMzUsMjM1LDIzNSwxOTksMTQyLDEyMCwx
MjAsCisgICAgMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTI0LDE2NywyMDYs
MjM1LDIzNSwxNzksMTM0LAorICAgIDEzNCwxMzQsMjE2LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICA5NSw5NSw5NSwyMzUsMTg2LDE4Niwx
ODYsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTMsMTI1LDk4LDMxLAorICAgIDE2LDE2LDE2LDE0MSwx
ODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwKKyAgICAxODks
MTg5LDE4OSwxODksMTg4LDE4NiwxODYsMjAzLDIzNCwyMzUsMjM1LDIzNSwxODQsMTM0LDEzNCwx
MzQsCisgICAgMTQ3LDE5NywyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjIxLAorICAgIDM3LDE2LDE2LDE2LDkyLDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDEzMSwxMjAsMTIw
LDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLAorICAgIDEyMCwxMjAsMTIwLDEy
MCwxMjAsMTIwLDEyMCwxMzEsMTcxLDIyNCwyMzUsMjM1LDIzNSwyMzUsMTM3LDEzNCwKKyAgICAx
MzQsMTg0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsCisgICAgOTUsOTUsOTUsMjM1LDE4NiwxODYsMTg2LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDE5MiwxMjUsMTIxLAorICAgIDU5LDE2LDE2LDU3LDIyOCwyMjcsMjIwLDIxMiwxOTgsMTg1
LDE4OSwxODksMTg5LDE4OSwxODksMTg5LAorICAgIDE4OSwxODksMTg5LDE4OSwxODksMTg2LDE4
NiwxODYsMjAwLDIzNSwyMzUsMjM1LDIzNSwxODQsMTM0LDEzNCwKKyAgICAxMzQsMTM0LDE1Niwy
MTksMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAg
MTczLDQ0LDE2LDE2LDE2LDE2LDEwNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjAzLDEyOCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwx
MjAsMTIwLDEyMCwxMjAsCisgICAgMTIwLDEyMCwxMjAsMTIwLDEyMiwxMjYsMjA2LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzMiwxMzQsMTM0LAorICAgIDEzNCwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICA5NSw5NSw5NSwy
MzUsMTg2LDE4NiwxODYsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIxMCwxMzYsCisgICAg
MTExLDE5LDE2LDE2LDc4LDIyOCwyMzUsMjM1LDIzNSwyMzAsMTc2LDE1MCwxNTAsMTUwLDE5NSwy
MTIsCisgICAgMTk1LDE4OSwxODksMTk1LDIwOCwxOTIsMTg2LDE4NiwxODYsMjIwLDIzNSwyMzUs
MjM1LDIzNSwxOTQsMTQwLAorICAgIDEzNCwxMzQsMTM0LDEzNywxODcsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDM3LDE2LDE2LDE2LDE2
LDEwNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjAzLDEzNSwxMjAsMTIwLDEyMCwxMjAsMTIwLDEzNSwxNzEsMjI0LDIzNSwKKyAgICAy
MzUsMjM1LDIzNSwxMzQsMTM0LDEzNCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTc5LDEz
NCwxMzQsCisgICAgMTM3LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDk1LDk1LDk1LDIzNSwxODYsMTg2LDE4NiwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIyOCwKKyAgICAxNTcsNzgsMTYsMTYsMTYsNzgsMjM1
LDIzNSwyMzUsMjM1LDIzNSwxOTAsMTUwLDE1MCwxNTIsMjIyLAorICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIwNiwxODYsMTg2LDE5NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIyOSwKKyAgICAx
ODQsMTM3LDEzNCwxMzQsMTM0LDE2MywyMzIsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsCisgICAgMjM1LDIzNSwxNzMsNDQsMTYsMTYsMTYsMTYsNzgsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwxMzQsMTM0LDEzNCwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzIsMTM3LDEzNCwxMzQsCisgICAgMTg3LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAg
IDk1LDk1LDk1LDIzNSwxODYsMTg2LDE4NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwKKyAgICAyMzUsMTc1LDY4LDE2LDE2LDE2LDE2NiwyMzUsMjM1LDIzNSwyMzUsMjMyLDE2
NiwxNTAsMTUwLDE2OCwKKyAgICAyMzIsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzEsMTg4LDE4Niwx
ODYsMjIwLDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIxOSwxNTYsMTM0LDEzNCwxMzQs
MTYzLDIzMiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1
LDIzNSwxNzMsMzAsMTYsMTYsMTYsMTY2LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwxMzQsMTM0LDEzNCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwxNzUsMTM0LDEzNCwxMzcsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDk1LDk1LDk1LDIzNSwxODYsMTg2
LDE4NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjMyLDE0
Myw1OSwxNiwxNiw0NCwyMDEsMjM1LDIzNSwyMzUsMjM1LDIxOSwxNTIsMTUwLDE1MCwKKyAgICAx
NzQsMjMyLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjA4LDE4NiwxODYsMTg2LDIwMCwyMzUsMjM1LDIz
NSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMTgyLDEzNCwxMzQsMTM0LDE2MywyMzIsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMTczLDQ0LDE2LDE2
LDE2LDEwNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIz
NSwxMzQsMTM0LDEzNCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIyOSwxMzcsMTM0LDEzNCwxODcsCisg
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAorICAgIDk1LDk1LDk1LDIzNSwxODYsMTg2LDE4NiwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIxMywxMTQsMTksMTYsMTYsNDYsMTUz
LDIzNSwyMzUsMjM1LDIzNSwxOTgsMTUwLDE1MCwKKyAgICAxNTAsMTc0LDIzMiwyMzUsMjM1LDIz
NSwyMzUsMjMxLDE4OCwxODYsMTg2LDE4NiwyMjAsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwy
MzUsMjM1LDE4NCwxMzQsMTM0LDEzNCwxNjMsMjMyLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIxNSwyMywxNiwxNiwxNiwxMDUsMjM1LDIzNSwy
MzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwxMzQsMTM0LDEzNCwyMzUsMjM1
LDIzNSwyMzUsMjM1LDE5NywxMzQsMTM0LDE2MCwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDk1LDk1
LDk1LDIzNSwxODYsMTg2LDE4NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
KyAgICAyMzUsMjM1LDIzNSwyMDMsODcsMTYsMTYsMTYsNDYsMTk5LDIzNSwyMzUsMjM1LDIzNSwx
OTIsMTUwLAorICAgIDE1MCwxNTAsMTc0LDIzMiwyMzUsMjM1LDIzNSwyMzUsMjIwLDE5MiwxODYs
MTg2LDE4NiwyMDAsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDE4NCwxMzQsMTM0
LDEzNCwxNjMsMjMyLDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDE2NiwzMCwxNiwxNiwxNiwyMjgsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwyMzUsMjM1LDEzNCwxMzQsMTM0LDIzNSwyMzUsMjM1LDIzNSwyMzIsMTU2LDEzNCwx
MzQsMTk0LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMDgsCisgICAgOTUsOTUsOTUsMjM1LDE4NiwxODYsMTg2LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwy
MzUsMTE1LDE2LDE2LDE2LDk2LDE5MiwyMzUsMjM1LDIzNSwyMzUsMTkyLAorICAgIDE1MCwxNTAs
MTUwLDE3NCwyMzIsMjM1LDIzNSwyMzUsMjM1LDIzMSwxODgsMTg2LDE4NiwxODYsMjIwLDIzNSwK
KyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxODQsMTM0LDEzNCwxMzQsMTYzLDIzMiwyMzUs
MjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxNzMsMzAs
MTYsMTYsOTIsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDEzNCwx
MzQsMTM0LDIzMiwyMzUsMjM1LDIzNSwxNzIsMTM0LDEzNCwxMzQsMjI1LDIzNSwKKyAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwx
MzksCisgICAgOTUsOTUsMTM5LDIzNSwxOTEsMTg2LDE4NiwyMjAsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxMDEsMTYsMTYsMzYs
MTE4LDE1MywyMzIsMjM1LDIzNSwyMzUsCisgICAgMTkyLDE1MCwxNTAsMTUwLDE3NCwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIyMCwxOTIsMTg2LDE4NiwxOTYsMjM0LAorICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwxODQsMTM0LDEzNCwxMzQsMTYzLDIzNSwyMzUsMjM1LDIzNSwKKyAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxNDYsMTYsMTYsMjMsMjI4LDIzNSwy
MzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDE0NCwxMzQsMTM0LDE2MywyMzIsMjM1
LDIxNiwxMzQsMTM0LDEzNCwxODcsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIwOCw5NSwKKyAgICA5NSw5NSwyMDgs
MjM1LDIwOCwxODYsMTg2LDE5NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIxNSwyMiwxNiwxNiw0NiwxMTgsMTUzLDIzMiwyMzUs
MjM1LAorICAgIDIzNSwxOTIsMTUwLDE1MCwxNTAsMjA4LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjMx
LDE4OCwxODYsMTg2LDIwMCwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE4
NCwxMzQsMTM0LDEzNCwxODcsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDE1Myw3MSwxNTMsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwyMzUsMjM1LDE5NCwxMzQsMTM0LDEzNCwxNjksMjM1LDE2OSwxMzQsMTM0LDE2Niwy
MzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDEzOSw5NSwKKyAgICA5NSwxMzksMjM1LDIzNSwyMzEsMTg2LDE4Niwx
ODYsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMTQ2LDE2LDE2LDE2LDQ2LDExOCwxNTMsMjMyLDIzNSwKKyAgICAyMzUsMjM1
LDE4NCwxNTAsMTUwLDE2NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTUsMTg2LDE4NiwxODYs
CisgICAgMjIwLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTgyLDEzNCwxMzQsMTM3
LDIxOSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUs
MjM1LDE4NCwxMzQsMTM0LDEzNCwxNzUsMTM3LDEzNCwxMzQsMjE2LDIzNSwyMzUsMjM1LAorICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMDgs
OTUsOTUsCisgICAgOTUsMjA4LDIzNSwyMzUsMjM1LDE4NiwxODYsMTg2LDIzNCwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwx
MjUsMTYsMTYsMTYsMzksMTE4LDEyMSwxNjgsCisgICAgMjM1LDIzNSwyMjcsMTUyLDE1MCwxNTAs
MTk1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIwNiwxODYsMTg2LAorICAgIDE4NiwyMDMsMjM0
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzMiwxNTMsMTM0LDEzNCwxNDQsMTc1LDIxMCwKKyAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMTQ0LDEzNCwx
MzQsMTM0LDEzNCwxMzQsMTM0LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTM5LDk1LDk1LAorICAgIDEzOSwy
MzUsMjM1LDIzNSwyMzUsMTkxLDE4NiwxODYsMjAzLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxMjUsMTYsMTYsMTYs
NTYsMTIxLDEyNSwKKyAgICAyMzUsMjM1LDIzNSwxOTIsMTUwLDE1MCwxNTIsMjIyLDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjMxLDE4OCwxODYsCisgICAgMTg2LDE4NiwyMDMsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIxNiwxMzcsMTM0LDEzNCwxMzQsMTM0LAorICAgIDE2NiwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMDYsMTQwLDEzNCwxMzQsMTM0LDEzNCwx
MzcsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIyNiw5OSw5NSw5NSwKKyAgICAyMDgsMjM1LDIzNSwyMzUsMjM1LDIx
NSwxODYsMTg2LDE4NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDEyNSwxNiwxNiwxNiw5OCwxOTIsCisgICAg
MjM1LDIzNSwyMzUsMjMyLDE2NiwxNTAsMTUwLDE2OCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MjAsMTkyLAorICAgIDE4NiwxODYsMTg2LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjA2LDE0NywxMzQsMTM0LDEzNCwKKyAgICAxMzQsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIwNiwxNDcsMTM0LDEzNCwxNDcsMTk3LDIzNSwyMzUsMjM1LDIz
NSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwx
ODIsOTUsOTUsMTMwLAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE4NiwxODYsMTg2LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDg1LDE2LDE2LDMwLDIwOCwKKyAgICAyMzUsMjM1LDIzNSwyMzUs
MjE5LDE1MiwxNTAsMTUwLDIxNiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMTg2
LDE4NiwxODYsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIxNiwxNzks
MTYwLAorICAgIDE5NywyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDEzMCw5NSw5NSwxNzgsCisg
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTg2LDE4NiwxODYsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjIxLDQ0LDE2LDE2LDY0LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMTg0LDE1MCwxNTAs
MTkwLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAxODYsMTg2LDE4NiwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwxODIsOTUsOTUsOTUsMjIyLAorICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDE4NiwxODYsMTg2LDIzNCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxODcsMjMsMTYs
MTYsCisgICAgMTMyLDIzNSwyMzUsMjM1LDIzNSwyMTQsMTUwLDE1MCwxNTAsMTg0LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAorICAgIDE4NiwxODYsMTg2LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMTY5LDk1LAorICAgIDE1MiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MjIsMTAzLDk1LDk1LDE1MiwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTkxLDE4
NiwxODYsMjAzLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxMjUsMTYsMTYsCisgICAgMjMsMjAx
LDIzNSwyMzUsMjM1LDIzNSwxNTgsMTUwLDE1MCwxNTIsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
CisgICAgMTg2LDE4NiwxODYsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSw5OSw5NSwKKyAgICA5
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxNDMsOTUsOTUsMTEzLDIzMSwy
MzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjE1LDE4NiwxODYsMTg2LDIzNCwyMzUs
MjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMjgsNTcsMTYsCisgICAgMTYsNjQsMjI4LDIzNSwyMzUsMjM1LDIw
OCwxNjAsMTYwLDIwMywyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAxODYsMTg2LDE4Niwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDk1LDk1LAorICAgIDk1LDk1LDE1MiwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwxOTEsOTksOTUsOTUsMjAwLDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDE5MSwxODYsMTg2LDIwMywyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MTk0LDIzLAorICAgIDE2LDE2LDc4LDIyOCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAxODYsMTg2LDE4NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
KyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDEwOCw5NSwKKyAgICA5NSw5NSw5NSw5NSw5NSw5NSw5NSw5NSw5NSw5NSw5NSw5NSw5OSwy
MzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjE1LDE4NiwxODYs
MTg2LDIzNCwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTM5LAorICAgIDE2LDE2LDE2LDc4LDIy
OCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDE4Niwx
ODYsMTg2LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTk2LDExMywKKyAgICA5NSw5NSw5NSw5
NSw5NSw5NSw5NSw5NSw5NSw5NSw5NSw5OSwxNjksMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxOTEsMTg2LDE4NiwyMDAsMjM0LDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKKyAgICAxMjUsMTYsMTYsMTYsNzgsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNCwKKyAgICAxODYsMTg2LDE4NiwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCisgICAgMTk2LDExMyw5NSw5NSw5NSw5NSw5NSw5NSw5NSwxMTMsMTU3
LDIyMiwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMTUsMTg2LDE4NiwxODYsMjAwLDIzNCwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUs
MTI1LDE2LDE2LDE2LDE4NywyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNCwyMDAs
CisgICAgMTg2LDE4NiwxODgsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTEsMTg2
LDE4NiwxODYsMjAwLDIzNCwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsOTksMTYsMTYs
MTE5LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzQsMjAwLDE4NiwKKyAgICAxODYsMTg2
LDIxMiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
CisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTEsMTg2LDE4NiwxODYs
MTkyLDIxNywKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwxODAsMTYsMTYsNDQsMjI4LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIwOCwxODYsMTg2LAorICAgIDE4NiwyMTEsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
CisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTEsMTg2LDE4NiwxODYsMTg2LAorICAg
IDIwMCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwzNywxNiwxNiw3OCwyMjgsMjM0LDIwNSwxODYsMTg2
LDE4NiwxODYsMTg2LDE4NiwKKyAgICAyMTEsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
KyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIxNSwxOTAsMTg2LDE4NiwKKyAgICAxODYsMjIwLDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAg
MjM1LDIzNSwyMzQsMTI4LDE2LDE2LDE2LDY0LDE4MSwxODYsMTg2LDE4NiwxODYsMTg2LDE4Niwx
ODgsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjMyLDIwMywxODYsCisgICAgMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2
LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LAorICAgIDE4NiwxODYsMTg2LDE4
NiwxMDEsMTYsMTYsMTYsNjQsMTgxLDE4NiwxODYsMTg2LDE4NiwxOTIsMjE3LAorICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisg
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzEsMTg4LAorICAgIDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4Niwx
ODYsMTg2LDE4NiwxODYsMTg2LDE4NiwKKyAgICAxODYsMTg2LDE4NiwxODYsMTg2LDEwMSwxNiwx
NiwxNiw2NiwyMDksMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIyMCwKKyAg
ICAxOTIsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2
LDE4NiwxODYsCisgICAgMTg2LDE4NiwxODYsMTkyLDIxNSwyMzUsMTI1LDE2LDE2LDE2LDc4LDIy
OCwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
CisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxMjUsMTYsMTYsMTYsNzgsMjI4LDIzNSwyMzUs
MjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
KyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDEyNSwxNiwxNiwxNiw3OCwyMjgsMjM1LDIzNSwKKyAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMTI1LDE2LDE2LDE2LDc4LDIyOCwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisg
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwx
MjUsMTYsMTYsMTYsNzgsMjI4LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDEyNSwxNiwxNiwx
Niw3OCwKKyAgICAyMjgsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
CisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTI1LDE2LDE2LDE2LAorICAgIDc4
LDIyOCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
KyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxMjUsMTYsMTYsCisgICAgMTYsNzgsMjI4LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDEyNSwxNiwKKyAgICAxNiwxNiwxNiwxNiwxMDUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwxMjUsCisgICAgMTYsMTYsMTYsMTYsMjMsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
KyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAg
MTUzLDQ0LDE2LDQ0LDE1MywyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
KyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisg
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
CisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAor
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
KyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKKyAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCisgICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAorICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKKyAgICAxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisg
ICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
CisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAg
IDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAor
ICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAg
ICAxMjgsMTI4LDEzNiwxMjgsMTM2LDEyOCwxMzYsMTI4LDEzNiwxMjgsMTM2LDEyOCwxMjgsMTI4
LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTEyLDE0NSw5OSwxNTksOTksMTU5
LDgzLDE3Niw4MSwxNTMsODgsMTMxLDEwMSw4NCwxMDUsNzMsCisgICAgMTMzLDExNCwxNDQsMTI5
LDE0NCwxMjksMTQ0LDEyOSwxMzEsMTM4LDEyMywxNDMsMTIzLDE0MywxMjEsMTQzLAorICAgIDEx
NSwxNDMsMTE1LDE0MywxMjcsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMzMsMTIxLDE1Miw5NSwxNTUsOTAs
MTU1LDkwLDE1NSw5MCwKKyAgICAxNTUsOTAsMTU1LDkwLDE1NSw5MCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjIsMTM1LAorICAgIDEwNywxNTIsMTE4LDE0
MCwxMjgsMTI4LDExMSwxNDcsMTAzLDE1OCwxMDMsMTU4LDEwMywxNTgsMTA3LDE1MywKKyAgICAx
MTUsMTQzLDEyMiwxMzUsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTEyLDE0NSw5NCwxNjUsNzQs
MTg2LAorICAgIDcxLDE5MCw3MSwxOTAsNzEsMTkwLDg3LDEzOCwxMDUsNzMsMTA1LDczLDExMCw4
NSwxMjAsMTAwLAorICAgIDE0NCwxMjksMTIwLDE0Nyw4OCwxMzEsMTAwLDEyMCwxMDMsMTU4LDEw
MywxNTgsMTAzLDE1OCwxMDMsMTU4LAorICAgIDEwMywxNTgsMTAzLDE1OCwxMDMsMTU4LDEwMywx
NTgsMTA3LDE1MywxMTUsMTQzLDEyNywxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEzMywxMjEs
MTUzLDk0LDE4Myw1MiwxODMsNTIsMTgzLDUyLDE4Myw1MiwxODMsNTIsCisgICAgMTgzLDUyLDE4
Myw1MiwxNzksNTcsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAg
IDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTAzLDE1NywKKyAgICAxMDMsMTU4LDExNSwxNDMsMTI4LDEyOCwxMjgsMTI4LDExNSwxNDMsMTE1
LDE0MywxMTUsMTQzLDEwNCwxNTYsCisgICAgMTAzLDE1OCwxMDMsMTU4LDExNSwxNDMsMTI4LDEy
OCwxMjIsMTM1LDg0LDE3NSw3MywxODcsOTIsMTY3LAorICAgIDExMSwxNDYsMTI4LDEyOCwxMTAs
ODUsMTA1LDczLDExMSw4NywxMjgsMTI4LDEyOCwxMjgsMTQ0LDEyOSwKKyAgICAxNDQsMTI5LDEx
NiwxNDAsODgsMTcyLDEwMywxNTgsOTUsMTY2LDg4LDE0OCwxMTUsOTksMTA2LDc2LAorICAgIDEx
Miw4MywxMjcsMTIwLDEyMywxNDMsMTIxLDE0MywxMDQsMTU2LDEwMywxNTgsMTE3LDEzOSwxNjQs
NzgsCisgICAgMTgzLDUyLDE4Myw1MiwxODMsNTIsMTY3LDczLDEzNSwxMTgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTAzLDE1OCwKKyAgICAxMDMsMTU4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAg
MTI4LDEyOCwxMjQsMTMyLDkzLDE2NywxMDgsMTUxLDEyNSwxMzEsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsCisgICAgMTI4LDEyOCwxMDgsODEsMTA1LDczLDExMSw4OCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxNDQsMTI5LAorICAgIDEzNSwxMjgsMTE4LDEzOSwxMDMsMTU4LDEwOSwxNTAsOTks
MTU5LDcxLDE5MCw3OSwxODEsMTE3LDEzOSwKKyAgICAxMjgsMTI2LDEzMCwxMTgsMTQ3LDEzNywx
NDQsMTI5LDE1NiwxMzUsMTY2LDg5LDE4Myw1MiwxODEsNTMsCisgICAgMTQ3LDEwMCwxNTIsOTUs
MTM1LDExOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTIzLDE2MSwKKyAgICAxMjgsMTYyLDEyOCwxNjIsMTI4LDE2MiwxMjgsMTI4LDEy
OCwxMzUsMTI4LDE2MiwxMjgsMTU5LDEyOCwxNDIsCisgICAgMTI4LDEyOCwxMjgsMTI4LDcxLDE5
MCw3MSwxOTAsMTA5LDE1MCwxMjIsMTM1LDEyOCwxMjgsMTI3LDEyOCwKKyAgICAxMjcsMTI1LDEw
NSw3MywxMjEsMTExLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEzMSwxMjgsMTQ0LDEyOSwKKyAg
ICAxMTgsMTM5LDEwMywxNTgsMTA5LDE1MCwxMjgsMTI4LDEyOCwxMjgsMTEzLDE0Myw3NCwxODcs
MTEzLDE3NSwKKyAgICAxNTQsMTYxLDE1NCwxNjEsMTU5LDEyNiwxNzAsNzgsMTgzLDUyLDE4MSw1
MiwxNTcsODgsMTIyLDE1MiwKKyAgICAxMDMsMTU4LDEwMywxNTgsMTIxLDE0MiwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxNTcsMTI4LDE2MiwK
KyAgICAxMTUsMTYwLDExNSwxNjAsMTI4LDE0NSwxMjgsMTI5LDEyOCwxMjgsMTI4LDE0NSwxMjgs
MTUzLDEyOCwxNjIsCisgICAgMTI4LDE1OSwxMjgsMTQ1LDk5LDE3Niw4OSwxODAsMTI4LDEyOCwx
MTcsMTQxLDEyMywxMzMsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyNCwxMTgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxNDQsMTI5LDEyOSwxNDAsCisgICAgMTAzLDE1OCwxMDksMTUw
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTQ3LDE1NSwxNTksMTQwLAorICAgIDE3
MSw5NiwxNzksNTgsMTgzLDUyLDE4MCw1NSwxNjQsODgsMTMwLDEwMywxMDgsODAsMTI4LDEyOCwK
KyAgICAxMTcsMTQyLDExNCwxNTYsMTAzLDE1OCwxMDgsMTUyLDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEzNywxMjgsMTU4LDEyOCwxNjIsMTI4LDEzNiwKKyAgICAxMDQsMTU2LDEwMywx
NTgsMTI0LDEzMywxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMzYsCisgICAg
MTI4LDE1MywxMjgsMTYyLDEyOCwxNjIsMTI4LDE2MiwxMjgsMTYyLDEyOCwxNTYsMTI4LDE0Mywx
MTAsMTQyLAorICAgIDExMywxNDYsMTI4LDEyOCwxMjgsMTI4LDEyNywxMjgsMTI4LDEyOCwxMjcs
MTI4LDExNywxNDgsMTAzLDE1OCwKKyAgICAxMDksMTUwLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTYwLDExOSwxNzYsNzgsMTgzLDUyLAorICAgIDE3OSw1NiwxNDAsMTA0LDEyNCwx
MjgsMTI4LDEyOCwxNDMsMTI5LDE0NCwxMjksMTA1LDczLDEyNCwxMTksCisgICAgMTI4LDEyOCwx
MjksMTI5LDEyMSwxNTcsMTAzLDE1OCwxMDksMTU3LDEyNywxMjgsMTI4LDEyOCwxMjgsMTI4LAor
ICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxNjIs
MTI4LDE2MSwxMjgsMTM2LDEyOCwxMjgsCisgICAgMTI0LDEzMiwxMDMsMTU3LDEwMywxNTgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEy
OCw3MSwxOTAsMTIwLDE1MSwxMjgsMTQ1LDEyOCwxNTksMTI4LDE2MiwxMjgsMTYyLAorICAgIDEy
MywxNTMsMTI3LDE0NCwxMjgsMTI4LDEyNSwxMzEsMTIzLDEzMywxMDcsMTUzLDEyMywxNjEsMTI4
LDE2MiwKKyAgICAxMjgsMTYyLDEyOCwxNjIsMTMxLDE1NSwxNTUsMTA3LDE4MCw1OCwxODMsNTIs
MTc2LDYxLDE1Miw5NSwKKyAgICAxMjMsMTMzLDgxLDE3OSw3MSwxOTAsMTI4LDEyOCwxMzEsMTI4
LDE0NCwxMjksMTA1LDczLDEwNyw3OCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjQs
MTQwLDEwMywxNTgsMTA2LDE1MywxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDE2MiwxMjgsMTM0LDEyOCwxMjgsMTI4
LDEyOCwKKyAgICAxMjgsMTI4LDEyNCwxMzMsMTAzLDE1OCwxMTUsMTQ5LDEzNSwxMjksMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDcxLDE5MCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTMxLDExNSwxMTEsCisgICAgMTI3LDE1MiwxMjgsMTYyLDEyOCwx
NTMsMTI4LDEzMCwxMjgsMTI4LDEyMywxNTQsMTM1LDE0OCwxNDAsMTI3LAorICAgIDE1MSwxMTMs
MTYzLDkxLDE4Myw1MiwxODMsNTIsMTY4LDgxLDE0NSwxMjcsMTI4LDE0MywxMTQsMTczLAorICAg
IDExOSwxNTUsMTI1LDEzMSw3MSwxOTAsODYsMTcyLDEyOCwxMjgsMTQ0LDEyOSwxMjMsMTE3LDEw
NSw3MywKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDE0MSwxNjAsMTAzLDE1
OCwxMDYsMTU0LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMzgsMTI4LDE2MiwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4
LDEyOCwxMjgsMTE2LDE0MywxMDMsMTU4LDExMCwxNTMsMTM0LDEyOCwxMjgsMTI4LDEyOCwxMjgs
CisgICAgMTI4LDEyOCwxMjgsMTI4LDcxLDE5MCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjMs
MTE1LDEwNSw3MywKKyAgICAxMjgsMTU1LDEyOCwxNjIsMTI4LDE2MiwxMzEsMTU1LDE1NSw5MCwx
NzksNTcsMTgzLDUyLDE4Myw1MiwKKyAgICAxODMsNTIsMTc2LDYwLDE1OCw4NiwxNTUsMTM3LDE1
NCwxNjEsMTI4LDE1MiwxMjgsMTYyLDEyNCwxNzAsCisgICAgMTAwLDIxOCwxMDAsMjE5LDEwMiwx
NTYsNzEsMTkwLDExOSwxMzcsMTQ0LDEyOSwxMjgsMTI4LDEwNSw3MywKKyAgICAxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDE1NCwxNjEsMTE0LDE0NCwxMDMsMTU4LDEyMywxMzMsCisg
ICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxNjEsMTI4LDE2Miwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMTMs
MTQ2LDEwMywxNTgsMTIxLDE0NSwxMjksMTI4LDEyOCwxMjgsCisgICAgMTM0LDEyOCwxMjgsMTI4
LDcxLDE5MCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMDksODEsMTE2LDExOCwKKyAgICAxMjks
MTU4LDE0MiwxMjEsMTU4LDg1LDE4Myw1MiwxODMsNTIsMTY4LDcyLDE0OCwxMDAsMTQwLDEyOCwK
KyAgICAxMzEsMTUzLDExOCwxNjAsMTE2LDE1OSwxMzksMTYxLDEzMSwxNTksMTI1LDEzMSwxMjgs
MTM3LDEyOCwxNjIsCisgICAgMTI0LDE3MCwxMDAsMjE5LDEyOCwxMjgsNzEsMTg5LDc2LDE4NCwx
NDQsMTI5LDEyOCwxMjgsMTA1LDczLAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTU0LDE2MSwxMjgsMTI4LDEwNCwxNTcsMTAzLDE1OCwKKyAgICAxMjQsMTMzLDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDE2MiwxMjgsMTUyLDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTExLDE0OCwxMDMsMTU4
LDEyMywxNDIsMTI4LDEyOCwKKyAgICAxMzAsMTI4LDEzOSwxMjgsODQsMTc4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDE0NiwxMDIsMTY4LDgxLAorICAgIDE4Myw1MiwxODMsNTIsMTgwLDU1LDE1
OSw5OCwxMzcsMTQzLDEyOCwxMjgsMTMwLDEyOCwxMjgsMTI4LAorICAgIDEyOCwxNDcsMTI4LDE2
MiwxMjgsMTYyLDEyOCwxNjIsMTI3LDE2MSwxMjEsMTYxLDExNCwxNTksMTEzLDE1NCwKKyAgICAx
MjgsMTYyLDEwNSwxOTYsMTI4LDEyOCwxMTIsMTQ0LDcxLDE5MCwxNDQsMTI5LDEyOCwxMjgsMTA1
LDczLAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTUxLDE1NywxMjgsMTI4
LDEyNywxMjksMTAzLDE1NywKKyAgICAxMDUsMTU1LDEyNywxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDE2MiwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMTAsMTQ5LDEwMywxNTgsMTExLDE0OCwK
KyAgICAxMjgsMTI4LDEzNSwxMjgsMTQ0LDEyOSwxMzcsMTI4LDE1MCw5NywxNzgsNjAsMTgzLDUy
LDE2OSw2NywKKyAgICAxNDcsMTAwLDEzMSwxMjIsMTI4LDEyOCwxMjgsMTYyLDEyOCwxNTYsMTI4
LDEyOCwxNDMsMTI5LDEzMiwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTU1LDEyOCwxNjEsMTQ3LDE2
MSwxMjgsMTQ3LDEyOCwxNTUsMTI4LDE2MiwxMjYsMTYxLAorICAgIDEyOCwxNjIsMTI1LDE2MSwx
MTUsMTQzLDEyNywxMjgsNzEsMTkwLDE0NCwxMjksMTI4LDEyOCwxMDUsNzMsCisgICAgMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjMsMTM0
LAorICAgIDEwMywxNTgsMTA3LDE1MywxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTYyLDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTEzLDE0NiwxMDMsMTU4LAorICAgIDEyMCwxMzcsMTQz
LDEwNiwxNjUsODUsMTgwLDU3LDE4Myw1MiwxNzEsNzYsMTMzLDEyOCwxMDMsMTU4LAorICAgIDEx
MCwxNTAsMTI4LDEyOCwxMjgsMTUzLDEyOCwxNjIsMTI4LDEzMSwxMjgsMTI4LDEzMSwxMjgsMTQ0
LDEyOSwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDE1MCwxMzEsMTYxLDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTM2LDEyOCwxNTQsCisgICAgMTI4LDE2MiwxMjgsMTYyLDEyMywxNjEsMTE3LDE1NSw4
MSwxODAsMTQ0LDEyOSwxMjgsMTI4LDEwNSw3MywKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTA0LDE1Niwx
MDMsMTU4LDExOSwxMzgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAor
ICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTQyLDEyOCwxNjIsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEzMSwxMjIsCisgICAgMTcyLDY3LDE4Myw1MiwxODAsNTUsMTYyLDg3
LDE0MywxMzEsMTI1LDE1OSwxMDMsMTU4LDEyMCwxMzUsCisgICAgMTI5LDEyOCwxMjgsMTI4LDEy
OCwxNjIsMTI4LDE2MiwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMzEsMTI4LAorICAgIDEzMywx
MjgsMTI1LDEzMSwxMjgsMTI4LDEyOCwxNjIsMTI4LDE1Nyw5OSwxNTksOTksMTU5LDg1LDIwNCwK
KyAgICA4MSwxOTIsMTI4LDE2MiwxMjgsMTYyLDEyOCwxNjIsMTI4LDE2MiwxMjgsMTYyLDExNywx
MjgsMTA1LDc0LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjQsMTMzLDEwNCwxNTYsMTAzLDE1OCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4
LDEyOCwxNjEsMTI4LDE2MiwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxNDcsMTAyLDE3MSw2OCwxODMs
NTIsCisgICAgMTc4LDU4LDEyOSwxMjQsMTI4LDEyOCwxMjcsMTM0LDEyOCwxNjIsMTAzLDE1OCwx
MTMsMTUwLDE0NCwxMjksCisgICAgMTQzLDEyOCwxMzUsMTI4LDEyOCwxNjIsMTI4LDE2Miw3NCwx
ODYsNzEsMTkwLDcxLDE5MCw3MSwxOTAsCisgICAgNzEsMTkwLDczLDE4NywxMjgsMTI4LDEzMSwx
MzcsMTI4LDE2Miw5MSwxODAsODEsMTUzLDg4LDEzMSwKKyAgICA4OCwxMzEsMTI4LDE2MiwxMjgs
MTYyLDEzMCwxMjUsMTM2LDE0NSwxMjQsMTUzLDEyOCwxNjIsMTIwLDE1NCwKKyAgICAxMjcsMTMx
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
CisgICAgMTI4LDEyOCwxMjMsMTM0LDEwMywxNTgsMTI3LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTYyLDEyOCwxNjIsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjksMTI3LDE1Niw4OSwxODMsNTIsMTcyLDY2LDE1Miw5MywKKyAgICAxMjksMTI3LDEyNCwxMzMs
MTIwLDEzNywxMjgsMTI4LDEyOCwxNDksMTA2LDE1NCwxMjgsMTI4LDExNiw5NywKKyAgICAxMzMs
MTE0LDE0NCwxMjksMTI4LDE2MiwxMjgsMTYyLDkyLDE2Nyw5OSwxNTksOTksMTU5LDk5LDE1OSwK
KyAgICA5OSwxNTksMTA3LDE1MCwxMjUsMTMxLDEyOCwxMjgsMTI2LDE1MywxMjgsMTYyLDEwNCwx
MTUsMTA0LDExNSwKKyAgICAxMDQsMTE1LDEyOCwxNjIsMTI4LDE2MiwxMjMsMTQzLDEyMywxNDMs
MTA1LDExOSwxMTYsMTU5LDEyNywxNjEsCisgICAgMTI3LDE2MSwxMjMsMTQ0LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEy
OCwxMDMsMTU4LDEwNywxNTMsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAx
MjgsMTI4LDEyOCwxMjgsMTI4LDE2MiwxMjgsMTYyLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDE1MSw5NiwxODMsNTIsMTgzLDUyLDE2Niw3NCwx
MjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEwOCwxNTIsMTI4LDEzNSwxMjgs
MTI4LDEwMywxNTcsMTExLDE0OCwxMjYsMTI5LAorICAgIDg0LDE1NSwxMTIsMTAyLDEyOCwxNjIs
MTI4LDE2MiwxMzksMTI4LDEzMywxMjgsMTI4LDEyOCwxMjAsMTM3LAorICAgIDEwNywxNTIsMTAz
LDE1OCwxMDMsMTU4LDEyNSwxMzEsMTI3LDEyOCwxMjgsMTYxLDExMywxNTksMTAzLDE1OCwKKyAg
ICAxMDMsMTU4LDEyOCwxNjIsMTI4LDE2MiwxMDMsMTU4LDEwMywxNTgsMTAzLDE1OCwxMDMsMTU4
LDEwNiwxNTgsCisgICAgMTI0LDE2MSwxMjgsMTYyLDEyNCwxNTksMTI3LDE0MywxMjgsMTMyLDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMDMsMTU4LDEwMywx
NTgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgs
MTI4LDE2MiwxMjgsMTYyLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI5
LDEyNywxNzQsNjQsMTgzLDUyLDE3NSw4MSwxNTIsMTI5LDE0MSwxNDQsMTQxLDE0NCwxMzYsMTM5
LAorICAgIDEyOCwxMjgsMTA4LDE1MiwxMDMsMTU4LDEyOCwxNjAsMTI4LDEyOCwxMjQsMTMyLDEw
MywxNTgsMTAxLDE2MCwKKyAgICA4NSwxNzYsMTExLDE0NiwxMjgsMTYyLDEyOCwxNjIsMTQyLDEy
NiwxNDMsMTI5LDExNCwxNDIsMTAzLDE1OCwKKyAgICAxMDQsMTU2LDExMiwxMzQsMTI4LDE1OSwx
NDMsMTU3LDEyOCwxMjgsMTI4LDEzMywxMjksMTYwLDE0NCwxMjksCisgICAgMTM1LDE0MiwxMjgs
MTYyLDEyOCwxNjIsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI3LDEyOSwxMTcsMTQxLAorICAg
IDExNCwxNDQsMTE0LDE1OSwxMjIsMTYxLDEyOCwxNjIsMTI4LDE2MiwxMjQsMTQ1LDEyNywxMjgs
MTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTAzLDE1OCwxMDMsMTU4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxNjAsMTI4LDE2
MiwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMzYsMTE2LAorICAgIDE3NSw2MywxODMsNTIsMTYy
LDEyOCwxNTQsMTYxLDE1NCwxNjEsMTU0LDE2MSwxNTQsMTYxLDE1NCwxNjEsCisgICAgMTQ5LDE2
MCwxMDMsMTU4LDEyNSwxNTcsMTI4LDE2MiwxMjgsMTU1LDEyOCwxMjgsMTA2LDE1MSw5NywxNjQs
CisgICAgMTAzLDE1OCwxMDMsMTU4LDEyOCwxNjIsMTI4LDE2MiwxMjMsMTEyLDExMiwxNTEsMTAz
LDE1OCwxMTUsMTQ5LAorICAgIDEwNSw3MywxMjMsMTA2LDE1NCwxNjEsMTQ3LDE1MSwxMzcsMTI5
LDEyOCwxMjgsMTI4LDE0OSwxMzEsMTQ0LAorICAgIDEyOCwxMjgsMTI4LDE2MiwxMjgsMTYyLDEy
MSwxNDksMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyMywx
MzMsMTE1LDE0MywxMTMsMTQ4LDEyMiwxNjEsMTI4LDE2MiwxMjgsMTYyLDExNCwxNTksCisgICAg
MTE0LDE0OSwxMjgsMTI4LDEwMywxNTgsMTAzLDE1OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTM1LDEyOCwxNjIsMTI4LDE1NywxMjgs
MTI4LDE0OSwxMDAsMTgzLDUyLAorICAgIDE4Miw1MywxNjEsMTMzLDE1MSwxNTcsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMzcsMTQ1LAorICAgIDEwMywxNTgsMTAzLDE1OCwxNTQs
MTYxLDEyOCwxNjIsMTU0LDE2MSwxMzYsMTM4LDEyOCwxMjgsMTM4LDE0MSwKKyAgICAxMzUsMTUy
LDExNiwxNTksMTI4LDE2MiwxMjgsMTYyLDEwOCwxNTEsMTAzLDE1OCwxMDUsMTMyLDE0NCwxMjks
CisgICAgMTMyLDExMSwxNTQsMTYxLDE0NywxNTMsMTM5LDEyOCwxNDQsMTI5LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTQ5LAorICAgIDEyOCwxMjgsMTI4LDE2MiwxMjgsMTYyLDEwMCwyMTcsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyNywxMjksMTIyLDE1MCwxMjEsMTYxLDEyOCwxNjIsCisgICAgMTI4LDE2MiwxMjAs
MTYwLDEwMywxNTgsMTAzLDE1NywxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAg
IDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMzYsMTI4LDE2MiwxMjgsMTU1LDE4Myw1Miwx
NjksNzEsCisgICAgMTMwLDEyNCwxNTQsMTYxLDEzNCwxMzYsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMDcsMTUzLAorICAgIDEwMywxNTgsMTIyLDEzNSwxMjgsMTMxLDEyOCwxNjIs
ODUsMTc0LDcxLDE5MCwxMTMsMTQ0LDEyOCwxMjgsCisgICAgMTQ0LDE0OCwxNTQsMTYxLDEyOSwx
NjEsMTI4LDE2MiwxMDMsMTU4LDEwMywxNTgsMTQwLDEzNywxNDYsMTQxLAorICAgIDE0NCwxMjks
MTQ3LDEzOSwxMzEsMTIyLDE0NCwxMjksMTM5LDEyOCwxMjgsMTI4LDEyOCwxMjksMTI4LDEyOCwK
KyAgICAxMjgsMTI4LDEyOCwxNjIsMTI4LDE2MiwxMDAsMjE5LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMTksMTQxLAorICAgIDEyNywxNDUsMTI4LDE2MiwxMDMsMTU4LDEx
MSwxNDgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDE0NCwxMTMsMTgzLDUyLDE4Myw1MiwxMjgsMTI4LAorICAgIDEy
OCwxMjgsMTU0LDE2MSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDExMCwxNDksMTAz
LDE1OCwKKyAgICAxMTcsMTQxLDEyOCwxMjgsMTI4LDE1NSwxMjgsMTYyLDEyOCwxMjgsODgsMTcx
LDcxLDE5MCwxMTMsMTQzLAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMTgsMTM1LDEyOCwxNjIsMTEy
LDE1OSwxMDMsMTU4LDEwNiwxNTgsMTMyLDE1OSwKKyAgICAxNDksMTQ1LDE0NCwxMjksMTQ0LDEy
OSwxNDUsMTM0LDEyNywxMjcsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMzEsCisgICAgMTI4LDEyOCwx
MjgsMTU1LDEyOCwxNDcsMTAwLDIxOSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAor
ICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxNDEsMTEwLDE1NSw5
MCwxNzgsNTksCisgICAgMTc0LDY0LDEyOCwxNDAsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxODIsNTMsMTgyLDUzLDEzOSwxMzksMTI4LDE1NywKKyAgICAxMjgsMTQ1LDE1MiwxNjEsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI3LDEyOCwxMDMsMTU4LDEwMywxNTcsCisgICAgMTI4LDEy
OCwxMjgsMTI4LDEyOCwxNjIsMTI4LDE2MiwxMjgsMTI4LDEyOCwxMjgsMTEzLDE0Myw4MywxNzYs
CisgICAgMTI1LDEzMSwxMjgsMTI4LDEwMywxNTYsMTIyLDE2MSwxMjgsMTYyLDEyOCwxNDgsMTE2
LDE1OSwxMDMsMTU4LAorICAgIDEwNiwxNTcsMTI5LDEzOSwxNDQsMTI5LDE0OCwxNDMsMTUxLDE1
NiwxNDAsMTQzLDEzMSwxMzIsMTI4LDE0MiwKKyAgICAxMjgsMTI5LDEyOCwxMjgsMTI4LDEyOSwx
MDAsMjE5LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMzYs
MTE2LDE1NSw5MCwxNTUsOTAsMTgzLDUyLDE4Myw1MiwxODMsNTIsMTcxLDY4LAorICAgIDEzOCwx
MTMsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjksMTI3LDE4Myw1MiwxNDEsMTEwLDEy
OCwxMzYsMTI4LDE1OSwKKyAgICAxMjgsMTYyLDEyOCwxNjEsMTI4LDE0NSwxMjgsMTM4LDEyOCwx
MjgsMTA5LDE1MSwxMDMsMTU4LDEwMSwyMDQsCisgICAgMTAwLDIxOSwxMDAsMjE5LDEyOCwxNjIs
MTI4LDE2MiwxMDksMTkwLDEyMywxNDUsMTI4LDEyOCwxMjgsMTI4LAorICAgIDg2LDE3MywxMjgs
MTI4LDEyMywxMzMsMTExLDE0OCwxMzAsMTYxLDEyOCwxNjEsMTQ3LDE1MywxMzEsMTM2LAorICAg
IDExMiwxNTEsMTAzLDE1OCwxMjMsMTQ0LDEyOSwxMzksMTQ3LDE0MywxNTQsMTYxLDE1NCwxNjEs
MTUxLDE1NywKKyAgICAxMjgsMTYwLDE0NSwxMDcsMTU1LDkwLDE0MSwxMzUsMTU1LDkwLDE1NSw5
MCwxNTUsOTAsMTcxLDY4LAorICAgIDE4Myw1MiwxODMsNTIsMTgzLDUyLDE4Myw1MiwxNzksNTcs
MTU1LDkwLDEzOCwxMTMsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTcyLDY2LDE4Myw1MiwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgs
MTMwLDEzNSwxNjEsMTI4LDE2MiwxMjgsMTYyLDEyOCwxNDUsMTE1LDE2MCwxMTIsMTU3LDEwMCwy
MTksCisgICAgMTE0LDE3MywxMTQsMTczLDEyOCwxNjIsMTI4LDE2MiwxMDEsMjE2LDEwMCwyMTks
MTA5LDE5MCwxMjcsMTI5LAorICAgIDExOSwxMzgsMTIwLDEzOCwxMjgsMTI4LDEzMywxMzksMTUy
LDE2MSwxMjgsMTYyLDEyOSwxNTcsMTQ0LDEyOSwKKyAgICAxMzcsMTI4LDExMSwxNDgsMTAzLDE1
OCwxMDMsMTU4LDEzNiwxMzQsMTQzLDEwOSwxNjYsMTA0LDE2OSwxMDUsCisgICAgMTgzLDUyLDE4
Myw1MiwxODMsNTIsMTgzLDUyLDE4Myw1MiwxODMsNTIsMTgzLDUyLDE3Miw2NywKKyAgICAxNTUs
OTAsMTUyLDk1LDEzMCwxMjQsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxODMsNTIsMTUyLDk1
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTU0LDE2MSwxMjgsMTMzLDEy
OCwxNTMsMTI4LDE2MiwxMjgsMTYyLDEyOCwxNjIsMTI2LDE2NSwKKyAgICAxMjgsMTQ1LDEyOCwx
NDIsMTI4LDE2MiwxMjgsMTYyLDEyNywxMzEsMTE0LDE3MywxMDAsMjE5LDEwNywxODQsCisgICAg
MTAzLDE1OCwxMDMsMTU4LDEzMywxMzQsMTI4LDEyOCwxMjQsMTU4LDExMywxNTMsMTI4LDE2Miwx
MzAsMTU3LAorICAgIDEyOCwxMzQsMTI4LDEyOCwxMjcsMTI5LDExNiwxNDEsMTU1LDg4LDE4Myw1
MiwxODMsNTIsMTgzLDUyLAorICAgIDE2Niw4NCwxNTIsMTE0LDEzOCwxNzIsMTI4LDEyOSwxMjgs
MTI4LDE0MywxNDYsMTQ0LDE0OCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisg
ICAgMTI4LDEyOCwxMjgsMTI4LDEyOSwxMjcsMTgzLDUyLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxNTQsMTYxLDEyOCwxMjgsMTI3LDEyOCwxMDMsMTU4LDEx
MywxNDUsMTI4LDEzNywxMjEsMTc1LAorICAgIDEyOCwxNjIsMTI4LDE2MiwxMjgsMTYyLDEyOCwx
NjIsMTI4LDE0MywxMjgsMTMyLDExNywxNjMsMTAzLDE1OCwKKyAgICAxMDUsMTU5LDE0MSwxNTks
MTUyLDE1NywxMjgsMTI4LDEyOCwxMjgsOTIsMTcyLDE0MCwxMzcsMTQ1LDEyNywKKyAgICAxNTUs
MTA3LDE2NCw4MiwxODMsNTIsMTgzLDUyLDE4MSw1MywxNDUsMTAxLDExOCwxNDgsMTI4LDE2MiwK
KyAgICAxMjgsMTYyLDEyOCwxNjIsMTA0LDIwNSwxMzAsMTMwLDEyOCwxMjgsMTI4LDEyOCwxMzUs
MTM2LDE1MywxNTksCisgICAgMTQ0LDE0OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwx
MjgsMTcwLDcwLDE4Myw1MiwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEy
OCwxMjgsMTU0LDE2MSwxMzcsMTM5LDEwOSwxNTEsMTAzLDE1OCwxMjcsMTI5LDEyOCwxMjgsMTE4
LDE1NywKKyAgICAxMDAsMjE5LDExOCwxNjksMTI4LDE0NSwxMjgsMTYyLDEyOCwxNjIsMTI4LDE2
MiwxMjgsMTYyLDEyOCwxNjIsCisgICAgMTI4LDE2MiwxMjgsMTYyLDEyOCwxNjIsMTI4LDEzOCwx
NTUsOTAsMTgzLDUyLDE4Myw1MiwxODMsNTIsCisgICAgMTgzLDUyLDE3OSw1OSwxNTgsMTAxLDE1
MiwxMTQsMTMwLDE1NiwxMjgsMTYyLDEyOCwxNjIsMTI3LDE2MSwKKyAgICAxMDYsMTk3LDEyOCwx
NjIsMTI1LDEzNiwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEzMywxMzQsCisgICAg
MTQ1LDE1MCwxNTAsMTU2LDEzNiwxMzgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTgzLDUyLDE4Myw1Miwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTU0LDE2MSwxNTQs
MTYxLDEwMywxNTgsMTA2LDE1NCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMDcsMTk2
LDEwMCwyMTksMTIzLDE0MiwxMjgsMTYwLDEyOCwxNjIsMTI4LDE2MiwxMjQsMTYxLDEzMCwxNjEs
CisgICAgMTI3LDE2OSwxNTAsMTE2LDE3MSw3NiwxODMsNTIsMTgzLDUyLDE3OSw1NywxNTUsOTAs
MTMzLDExNywKKyAgICA5OSwxNzYsOTksMTc2LDEyNywxNTYsMTI4LDE2MiwxMjgsMTYyLDEyOCwx
NjIsMTI2LDE2MCwxMDYsMTU3LAorICAgIDEwMywxNTgsMTI4LDE2MiwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEzNiwxMzgsMTQx
LDE0NCwxNTQsMTYwLDEzOCwxNDAsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxODMsNTIsMTgzLDUyLDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxNDUsMTQ5LDEzOSwxNjAsMTAzLDE1OCwxMjIsMTM1
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTAwLDIxNywxMDEsMTg4LDEw
MywxNjMsMTE5LDE2MCwxNDMsMTMxLDE1OSw5OCwxNzQsNjksCisgICAgMTgzLDUyLDE4Myw1Miwx
NzIsNjcsMTU5LDg1LDE1MiwxMTMsMTI4LDEyNywxMjgsMTI4LDEyOCwxMjgsCisgICAgMTA0LDE1
NCw3MSwxOTAsNzksMTgxLDEyMiwxNjIsMTIwLDE3OCwxMjYsMTY1LDEyOCwxNjIsMTI4LDE2MCwK
KyAgICAxMTYsMTU2LDEyOCwxNjIsMTAzLDE1NCwxMTIsMTQ2LDEyNiwxMjksMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTMwLDEzMCwxNDEsMTQ0
LDEzOCwxNDAsMTM2LDEzOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwx
MjgsMTgzLDUyLDE4Myw1MiwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEy
OCwxMjgsMTI4LDEyOCwxMDQsMTU4LDEwMywxNTgsMTM3LDEzOSwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwKKyAgICAxMjgsMTI4LDE0MCwxMTQsMTY1LDc1LDE4Myw1MiwxODMsNTIsMTgzLDUyLDE3
OSw2MCwxNTksOTksCisgICAgMTUzLDExMiwxMzUsMTQ2LDEyOCwxNDksMTM5LDEzOSwxMzQsMTE1
LDExMSw4NywxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMDAsMTgyLDcxLDE5MCw3OSwx
OTgsMTAwLDIxOSwxMDYsMTk3LDEyNiwxNDEsMTI4LDE1NCwKKyAgICAxMjgsMTYyLDEyOCwxNjIs
MTA5LDEzNSwxMDMsMTU2LDEwMywxNTYsMTE3LDEyOSwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTMyLDEzMywxNTIs
MTU4LAorICAgIDEzNywxNDAsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTgzLDUyLDE4Myw1MiwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMDMsMTU4
LDEzMSwxNTgsMTU0LDE2MSwxNjIsMTMwLDE2OCwxMDYsMTcxLDk2LAorICAgIDE4MSw1OSwxODMs
NTIsMTcyLDc0LDE2OCwxMDYsMTU1LDkwLDEzNSwxMzUsMTA1LDIwMywxMDAsMjE5LAorICAgIDEw
NiwyMDUsMTE3LDE4NSwxMjksMTU5LDEyOCwxNjIsMTI4LDE2MiwxMjMsMTQyLDEyNywxMzgsMTI4
LDEyOCwKKyAgICAxMjQsMTQxLDEwNCwyMTEsOTIsMTg4LDcxLDE5MCw5NSwxNjYsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDE0MiwxNDEsMTM1LDE0MiwxMjksMTIyLDEyMywxMDUs
MTUwLDEwMywxNTgsMTExLDE0OCwxMjcsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxNDMsMTQ2LDE0
OSwxNTQsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisg
ICAgMTI4LDEyOCwxMjgsMTI4LDE4Myw1MiwxODMsNTIsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTExLDE0OCwxNTUsOTksMTgwLDYyLDE4Myw1
MiwxODMsNTIsMTc5LDU3LAorICAgIDE1Myw5MiwxMjcsMTI2LDE0MSwxNDQsMTMzLDEzNCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEwMCwyMTksMTAwLDIxOSwxNDQsMTI5
LDEzOSwxMzgsMTI4LDE0NSwxMjgsMTUzLDEyNiwxNTQsMTI4LDEyOSwKKyAgICAxMjgsMTI4LDEy
OCwxNDksMTI4LDE2MiwxMTksMTY1LDEwOCwxNzEsMTIzLDE1MCwxMjgsMTQ1LDEyOCwxNDUsCisg
ICAgMTI4LDEzNCwxMzQsMTI4LDE0NCwxMjksMTMwLDEyOCwxMjgsMTI4LDExNSwxNDMsMTAzLDE1
OCwxMDYsMTUzLAorICAgIDEyNywxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOSwxMjksMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4
LDE4MCw1NSwxODMsNTIsMTU1LDkwLDE1NSw5MCwxNjQsNzgsMTgzLDUyLAorICAgIDE4Myw1Miwx
ODMsNTIsMTgzLDUyLDE4Myw1MiwxNzEsNjgsMTQ0LDEwNSwxMjgsMTI4LDEwOSwxNTEsCisgICAg
MTAzLDE1OCwxMjUsMTMxLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LAorICAgIDEwMCwyMTksMTAwLDIxOSwxNDQsMTI5LDE0NCwxMjksMTI4LDEyOCwxMjgs
MTI4LDEyNiwxMjMsMTA5LDg1LAorICAgIDEyMywxMTcsMTI4LDEyOCwxMjgsMTQ1LDEyOCwxNTAs
MTI2LDE1OCwxMjgsMTYyLDEyOCwxNjIsMTI4LDE2MiwKKyAgICAxMjgsMTYyLDEyOCwxNjIsMTMx
LDE1NCwxNDQsMTI5LDEzNCwxMjgsMTI4LDEyOCwxMjIsMTM1LDEwMywxNTgsCisgICAgMTA0LDE1
NiwxMTgsMTQwLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTM1LDExNywxNzksNTcsMTgzLDUy
LDE4Myw1MiwxNzksNTcsMTU4LDg2LAorICAgIDE1NSw5MCwxNTUsOTAsMTM4LDExMSwxMzUsMTE4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEwMywxNTgsCisgICAgMTAzLDE1NywxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEwMCwy
MTksMTAwLDIxOSwxNDQsMTI5LDE0NCwxMjksMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI1LDEy
MiwKKyAgICAxMDksODQsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMDgsMTQ5LDcx
LDE5MCw4NywxNzIsCisgICAgMTI4LDE0MiwxMjgsMTQ1LDEyOSwxMzQsMTQxLDEyOSwxNDQsMTI5
LDEyOCwxMjgsMTI4LDEyOCwxMjMsMTM0LAorICAgIDEwOSwxNTAsMTAzLDE1OCwxMTAsMTUwLDEy
NywxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAg
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMDMsMTU4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyMCwxMzcsMTAzLDE1OCwKKyAgICAxMjIsMTM1LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTAwLDIxOSwxMDAsMjE5LDE0
NCwxMjksMTQ0LDEyOSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwx
MjgsMTEzLDkxLDEyOCwxMjgsMTI3LDEyNSwxMjgsMTI4LDEyOCwxMjgsOTksMTU5LDcxLDE5MCwK
KyAgICAxMDYsMTUxLDEyOCwxMjgsMTI4LDEyOCwxMjksMTI4LDE0NCwxMjksMTM4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMTgsMTQwLDEwMywxNTgsMTA2LDE1MywxMjcsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAg
MTI4LDEyOCwxMjgsMTI4LDEwMywxNTgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTAzLDE1Nywx
MDYsMTU0LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMDAsMjE5LDEwMCwyMTksMTQ0LDEyOSwxNDQsMTI5
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjYsMTIzLDEy
MSwxMTIsMTI4LDEyOCwxMTcsMTAyLDEyOCwxMjgsMTI4LDEyOCw4NSwxNzQsCisgICAgNzEsMTkw
LDEwNiwxNTEsMTI4LDEyOCwxMjgsMTI4LDEzOCwxMjgsMTQ0LDEyOSwxMzgsMTI4LDEyOCwxMjgs
CisgICAgMTI4LDEyOCwxMjgsMTI4LDEyMiwxMzUsMTAzLDE1OCwxMDYsMTUzLDEyNywxMjgsMTI4
LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgs
MTI4LDEwMywxNTgsMTI3LDEyOCwxMjgsMTI4LDExOSwxMzgsMTAzLDE1OCwxMjIsMTM1LAorICAg
IDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwKKyAgICAxMDAsMjE5LDEwNCwyMDUsMTQzLDEyOSwxNDQsMTI5LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI3LDEy
NywxMjgsMTI4LDExMyw5MCwxMjcsMTI3LDEyOCwxMjgsCisgICAgODUsMTc0LDcxLDE5MCwxMDYs
MTUxLDEyOCwxMjgsMTI4LDEyOCwxMzgsMTI4LDE0NCwxMjksMTM3LDEyOCwKKyAgICAxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjIsMTM1LDEwMywxNTgsMTA2LDE1MywxMjgsMTI4LDEyOCwxMjgs
CisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTAzLDE1OCwx
MDYsMTUzLDEyOCwxMjgsMTAzLDE1OCwxMDcsMTUzLDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMTYsMTY4LAorICAg
IDEwMCwyMTksMTI1LDEzNiwxMzMsMTI4LDE0NCwxMjksMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI0
LDEyMCwxMDksODEsMTI3LDEyNywKKyAgICAxMjgsMTI4LDgyLDE3Nyw3MSwxOTAsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTM5LDEyOCwxNDQsMTI5LAorICAgIDEzMCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTIyLDEzNSwxMDMsMTU4LDExMCwxNDksMTI4LDEyOCwKKyAgICAxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
CisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjIsMTM1LDEwMywxNTgsMTA4LDE1
MiwxMDMsMTU4LDEyNSwxMzEsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEwMCwyMTksCisgICAgMTA0LDIwNSwxMjgs
MTI4LDEyOCwxMjgsMTQ0LDEyOSwxMzMsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAg
IDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyNSwxMjIs
MTA1LDczLAorICAgIDEyOCwxMjgsMTI1LDEzMSw3MSwxOTAsODYsMTcyLDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDE0NCwxMjksCisgICAgMTQ0LDEyOSwxMzMsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDExNSwxNDMsMTAzLDE1OCwxMDgsMTUyLAorICAgIDExOSwxMzgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
CisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTEzLDE0NiwxMDMsMTU4LDEwNCwxNTYsMTI4
LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyMiwxNDgsMTAwLDIxOSwKKyAgICAxMjUsMTM2LDEyOCwxMjgsMTI4LDEyOCwx
NDQsMTI5LDE0NCwxMjksMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjEsMTExLAorICAg
IDEyOCwxMjgsMTI4LDEyOCw5OSwxNTksNzEsMTkwLDEyMiwxMzUsMTI4LDEyOCwxMjgsMTI4LDEz
MCwxMjgsCisgICAgMTQ0LDEyOSwxNDQsMTI5LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTE3LDE0MSwxMDgsMTUxLAorICAgIDExMSwxNDgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEw
MywyMDcsMTAwLDIxOSwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxNDQsMTI5LDE0NCwx
MjksMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDcxLDE5MCw4NCwxNzUsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAg
MTQ0LDEyOSwxNDQsMTI5LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMDgsMTkzLAorICAgIDEwNSwy
MDAsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMTcsMTYyLDEwMCwyMTksMTE5LDE1
NiwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMzksMTI4LDE0NCwxMjksMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDkzLDE2NSw3NCwxODYsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTQ0LDEyOSwxNDQs
MTI5LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAg
IDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMDEsMjE1LAorICAgIDEwMCwyMTksMTA1LDIwMCwx
MTQsMTczLDExNCwxNzMsMTE0LDE3MywxMDAsMjE3LDEwMCwyMTcsMTI4LDEyOCwKKyAgICAxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDE0NCwxMjksMTQxLDEyOSwxMjgsMTI4LDEyOCwx
MjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxNDQsMTI5LDE0NCwxMjksMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAor
ICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyNCwxNDEsCisgICAgMTEwLDE4NiwxMDAsMjE5LDEwMCwyMTksMTAw
LDIxOSwxMDAsMjE5LDEwNiwxOTksMTIxLDE0OSwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTM5LDEyOCwxNDQsMTI5LDEzNCwxMjgsMTI4LDEyOCwKKyAgICAx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDE0NCwxMjksMTQ0LDEyOSwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDE0MCwxMjgsMTQ0LDEyOSwxMzUsMTI4LAorICAgIDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAg
ICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDE0MiwxMjksCisgICAgMTQ0LDEyOSwxMzEsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMzksMTI4LDE0NCwxMjksCisgICAgMTQyLDEyOSwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTM2LDEyOCwxNDQsMTI5LDE0NCwxMjksMTQ0LDEyOSwK
KyAgICAxMzIsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAg
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTM0LDEyOCwKKyAgICAxNDQsMTI5LDE0NCwxMjksMTQ0LDEyOSwxNDQsMTI5
LDE0NCwxMjksMTQ0LDEyOSwxNDQsMTI5LDE0NCwxMjksCisgICAgMTQ0LDEyOSwxNDQsMTI5LDE0
MCwxMjksMTI4LDEyOCwxMzAsMTI4LDEzOSwxMjgsMTM2LDEyOCwxMzUsMTI4LAorICAgIDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisg
ICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LAorICAgIDEzNSwxMjgsMTM2LDEyOCwxMzYsMTI4LDEzNiwxMjgsMTM2LDEyOCwx
MzYsMTI4LDEzNiwxMjgsMTM2LDEyOCwKKyAgICAxMzYsMTI4LDEzNiwxMjgsMTMxLDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
CisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAg
IDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAor
ICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAg
ICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwK
KyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAg
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisg
ICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
CisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAg
IDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwKKyAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKKyAgICAxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsCisgICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LAorICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKK307ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0Jp
bmRHZW5lcmF0ZXNSZXNvdXJjZVRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9CaW5kR2VuZXJhdGVzUmVzb3VyY2VUZXN0LmNw
cAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xf
dGVzdHMvQmluZEdlbmVyYXRlc1Jlc291cmNlVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMjMgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEJpbmRHZW5lcmF0ZXNSZXNvdXJjZVRlc3QuY3Bw
IDogVGVzdHMgb2YgdGhlIEdMX0NIUk9NSVVNX2JpbmRfZ2VuZXJhdGVzX3Jlc291cmNlIGV4dGVu
c2lvbi4KKworI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKK25hbWVzcGFjZSBh
bmdsZQoreworCitjbGFzcyBCaW5kR2VuZXJhdGVzUmVzb3VyY2VUZXN0IDogcHVibGljIEFOR0xF
VGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgQmluZEdlbmVyYXRlc1Jlc291cmNlVGVzdCgpIHsg
c2V0QmluZEdlbmVyYXRlc1Jlc291cmNlKGZhbHNlKTsgfQorfTsKKworLy8gQ29udGV4dCBjcmVh
dGlvbiB3b3VsZCBmYWlsIGlmIEVHTF9DSFJPTUlVTV9jcmVhdGVfY29udGV4dF9iaW5kX2dlbmVy
YXRlc19yZXNvdXJjZSB3YXMgbm90CisvLyBhdmFpbGFibGUgc28gdGhlIEdMIGV4dGVuc2lvbiBz
aG91bGQgYWx3YXlzIGJlIHByZXNlbnQKK1RFU1RfUChCaW5kR2VuZXJhdGVzUmVzb3VyY2VUZXN0
LCBFeHRlbnNpb25TdHJpbmdFeHBvc2VkKQoreworICAgIEVYUEVDVF9UUlVFKGV4dGVuc2lvbkVu
YWJsZWQoIkdMX0NIUk9NSVVNX2JpbmRfZ2VuZXJhdGVzX3Jlc291cmNlIikpOworfQorCisvLyBW
ZXJpZnkgdGhhdCBHTF9CSU5EX0dFTkVSQVRFU19SRVNPVVJDRV9DSFJPTUlVTSBjYW4gYmUgcXVl
cmllZCBidXQgbm90IGNoYW5nZWQKK1RFU1RfUChCaW5kR2VuZXJhdGVzUmVzb3VyY2VUZXN0LCBR
dWVyeVZhbGlkYXRpb24pCit7CisgICAgR0xpbnQgaW50VmFsdWUgPSAyOworICAgIGdsR2V0SW50
ZWdlcnYoR0xfQklORF9HRU5FUkFURVNfUkVTT1VSQ0VfQ0hST01JVU0sICZpbnRWYWx1ZSk7Cisg
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgRVhQRUNUX0VRKGludFZhbHVlLCBHTF9GQUxT
RSk7CisKKyAgICBmbG9hdCBmbG9hdFZhbHVlID0gMi4wZjsKKyAgICBnbEdldEZsb2F0dihHTF9C
SU5EX0dFTkVSQVRFU19SRVNPVVJDRV9DSFJPTUlVTSwgJmZsb2F0VmFsdWUpOworICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9FUShmbG9hdFZhbHVlLCAwLjBmKTsKKworICAg
IEdMYm9vbGVhbiBib29sVmFsdWUgPSBHTF9UUlVFOworICAgIGdsR2V0Qm9vbGVhbnYoR0xfQklO
RF9HRU5FUkFURVNfUkVTT1VSQ0VfQ0hST01JVU0sICZib29sVmFsdWUpOworICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworICAgIEVYUEVDVF9FUShib29sVmFsdWUsIEdMX0ZBTFNFKTsKKworICAg
IGJvb2xWYWx1ZSA9IGdsSXNFbmFibGVkKEdMX0JJTkRfR0VORVJBVEVTX1JFU09VUkNFX0NIUk9N
SVVNKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfRVEoYm9vbFZhbHVl
LCBHTF9GQUxTRSk7CisKKyAgICBnbEVuYWJsZShHTF9CSU5EX0dFTkVSQVRFU19SRVNPVVJDRV9D
SFJPTUlVTSk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7CisKKyAgICBn
bERpc2FibGUoR0xfQklORF9HRU5FUkFURVNfUkVTT1VSQ0VfQ0hST01JVU0pOworICAgIEVYUEVD
VF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOworfQorCisvLyBUZXN0IHRoYXQgYnVmZmVycyBj
YW5ub3QgYmUgZ2VuZXJhdGVkIG9uIGJpbmQKK1RFU1RfUChCaW5kR2VuZXJhdGVzUmVzb3VyY2VU
ZXN0LCBCdWZmZXJzKQoreworICAgIGdsQmluZEJ1ZmZlcihHTF9FTEVNRU5UX0FSUkFZX0JVRkZF
UiwgMik7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKworICAg
IGdsQmluZEJ1ZmZlcihHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgMCk7CisgICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7CisKKyAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPj0gMykKKyAg
ICB7CisgICAgICAgIGdsQmluZEJ1ZmZlckJhc2UoR0xfVU5JRk9STV9CVUZGRVIsIDAsIDMpOwor
ICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgICAg
IGdsQmluZEJ1ZmZlckJhc2UoR0xfVU5JRk9STV9CVUZGRVIsIDAsIDApOworICAgICAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKKworICAgICAgICBnbEJpbmRCdWZmZXJSYW5nZShHTF9VTklGT1JN
X0JVRkZFUiwgMCwgNCwgMSwgMik7CisgICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElE
X09QRVJBVElPTik7CisKKyAgICAgICAgZ2xCaW5kQnVmZmVyUmFuZ2UoR0xfVU5JRk9STV9CVUZG
RVIsIDAsIDAsIDEsIDIpOworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICB9Cit9
CisKKy8vIFRlc3QgdGhhdCB0ZXh0dXJlcyBjYW5ub3QgYmUgZ2VuZXJhdGVkIG9uIGJpbmQKK1RF
U1RfUChCaW5kR2VuZXJhdGVzUmVzb3VyY2VUZXN0LCBUZXh0dXJlcykKK3sKKyAgICBnbEJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfMkQsIDIpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElE
X09QRVJBVElPTik7CisKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIDApOworICAg
IEVYUEVDVF9HTF9OT19FUlJPUigpOworfQorCisvLyBUZXN0IHRoYXQgZnJhbWVidWZmZXJzIGNh
bm5vdCBiZSBnZW5lcmF0ZWQgb24gYmluZAorVEVTVF9QKEJpbmRHZW5lcmF0ZXNSZXNvdXJjZVRl
c3QsIEZyYW1lYnVmZmVycykKK3sKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZF
UiwgMik7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKworICAg
IGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsKKyAgICBFWFBFQ1RfR0xfTk9f
RVJST1IoKTsKK30KKworLy8gVGVzdCB0aGF0IHJlbmRlcmJ1ZmZlciBjYW5ub3QgYmUgZ2VuZXJh
dGVkIG9uIGJpbmQKK1RFU1RfUChCaW5kR2VuZXJhdGVzUmVzb3VyY2VUZXN0LCBSZW5kZXJidWZm
ZXJzKQoreworICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIDIpOworICAg
IEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7CisKKyAgICBnbEJpbmRSZW5k
ZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCAwKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
K30KKworLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdo
aWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlCisvLyB0ZXN0cyBz
aG91bGQgYmUgcnVuIGFnYWluc3QuCitBTkdMRV9JTlNUQU5USUFURV9URVNUKEJpbmRHZW5lcmF0
ZXNSZXNvdXJjZVRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCisgICAg
ICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBF
UzNfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8zKCksCisg
ICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgRVMzX09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOworCit9ICAvLyBuYW1lc3Bh
Y2UKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9CaW5k
VW5pZm9ybUxvY2F0aW9uVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0JpbmRVbmlmb3JtTG9jYXRpb25UZXN0LmNwcAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMv
QmluZFVuaWZvcm1Mb2NhdGlvblRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDg0
IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworCisvLyBCaW5kVW5pZm9ybUxvY2F0aW9uVGVzdC5jcHAgOiBUZXN0cyBv
ZiB0aGUgR0xfQ0hST01JVU1fYmluZF91bmlmb3JtX2xvY2F0aW9uIGV4dGVuc2lvbi4KKworI2lu
Y2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKKyNpbmNsdWRlIDxjbWF0aD4KKwordXNp
bmcgbmFtZXNwYWNlIGFuZ2xlOworCituYW1lc3BhY2UKK3sKKworY2xhc3MgQmluZFVuaWZvcm1M
b2NhdGlvblRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBCaW5k
VW5pZm9ybUxvY2F0aW9uVGVzdCgpCisgICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgp
OworICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKKyAgICAgICAgc2V0Q29uZmlnUmVkQml0
cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAgICBzZXRDb25maWdC
bHVlQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAgIH0KKworICAg
IHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgp
OworICAgICAgICBtQmluZFVuaWZvcm1Mb2NhdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xC
SU5EVU5JRk9STUxPQ0FUSU9OQ0hST01JVU1QUk9DPigKKyAgICAgICAgICAgIGVnbEdldFByb2NB
ZGRyZXNzKCJnbEJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTSIpKTsKKyAgICB9CisKKyAgICB2
b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmIChtUHJvZ3JhbSAhPSAw
KQorICAgICAgICB7CisgICAgICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOworICAg
ICAgICB9CisgICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKKyAgICB9CisKKyAgICB0eXBl
ZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBGTkdMQklORFVOSUZPUk1MT0NBVElPTkNIUk9NSVVNUFJP
QykoR0x1aW50IG1Qcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xjaGFyICpuYW1lKTsKKyAgICBQRk5HTEJJTkRVTklGT1JNTE9DQVRJT05DSFJP
TUlVTVBST0MgbUJpbmRVbmlmb3JtTG9jYXRpb24gPSBudWxscHRyOworCisgICAgR0x1aW50IG1Q
cm9ncmFtID0gMDsKK307CisKKy8vIFRlc3QgYmFzaWMgZnVuY3Rpb25hbGl0eSBvZiBHTF9DSFJP
TUlVTV9iaW5kX3VuaWZvcm1fbG9jYXRpb24KK1RFU1RfUChCaW5kVW5pZm9ybUxvY2F0aW9uVGVz
dCwgQmFzaWMpCit7CisgICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9DSFJPTUlVTV9iaW5k
X3VuaWZvcm1fbG9jYXRpb24iKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBz
a2lwcGVkIGJlY2F1c2UgR0xfQ0hST01JVU1fYmluZF91bmlmb3JtX2xvY2F0aW9uIGlzIG5vdCBh
dmFpbGFibGUuIgorICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgQVNTRVJUX05FKG1CaW5kVW5pZm9ybUxvY2F0aW9uLCBudWxscHRy
KTsKKworICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgICBjb25zdCBzdGQ6OnN0cmluZyB2c1Nv
dXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAoCisgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IGFfcG9z
aXRpb247CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsX1Bv
c2l0aW9uID0gYV9wb3NpdGlvbjsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyBmc1NvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAoCisgICAgICAgIHByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworICAgICAgICB1bmlmb3JtIHZlYzQgdV9jb2xvckM7CisgICAgICAg
IHVuaWZvcm0gdmVjNCB1X2NvbG9yQlsyXTsKKyAgICAgICAgdW5pZm9ybSB2ZWM0IHVfY29sb3JB
OworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICBnbF9GcmFnQ29s
b3IgPSB1X2NvbG9yQSArIHVfY29sb3JCWzBdICsgdV9jb2xvckJbMV0gKyB1X2NvbG9yQzsKKyAg
ICAgICAgfQorICAgICk7CisgICAgLy8gY2xhbmctZm9ybWF0IG9uCisKKyAgICBHTGludCBjb2xv
ckFMb2NhdGlvbiA9IDM7CisgICAgR0xpbnQgY29sb3JCTG9jYXRpb24gPSAxMDsKKyAgICBHTGlu
dCBjb2xvckNMb2NhdGlvbiA9IDU7CisKKyAgICBHTHVpbnQgdnMgPSBDb21waWxlU2hhZGVyKEdM
X1ZFUlRFWF9TSEFERVIsIHZzU291cmNlKTsKKyAgICBHTHVpbnQgZnMgPSBDb21waWxlU2hhZGVy
KEdMX0ZSQUdNRU5UX1NIQURFUiwgZnNTb3VyY2UpOworCisgICAgbVByb2dyYW0gPSBnbENyZWF0
ZVByb2dyYW0oKTsKKworICAgIG1CaW5kVW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCBjb2xvckFM
b2NhdGlvbiwgInVfY29sb3JBIik7CisgICAgbUJpbmRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0s
IGNvbG9yQkxvY2F0aW9uLCAidV9jb2xvckJbMF0iKTsKKyAgICBtQmluZFVuaWZvcm1Mb2NhdGlv
bihtUHJvZ3JhbSwgY29sb3JDTG9jYXRpb24sICJ1X2NvbG9yQyIpOworCisgICAgZ2xBdHRhY2hT
aGFkZXIobVByb2dyYW0sIHZzKTsKKyAgICBnbERlbGV0ZVNoYWRlcih2cyk7CisKKyAgICBnbEF0
dGFjaFNoYWRlcihtUHJvZ3JhbSwgZnMpOworICAgIGdsRGVsZXRlU2hhZGVyKGZzKTsKKworICAg
IC8vIExpbmsgdGhlIG1Qcm9ncmFtCisgICAgZ2xMaW5rUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAg
Ly8gQ2hlY2sgdGhlIGxpbmsgc3RhdHVzCisgICAgR0xpbnQgbGlua2VkID0gMDsKKyAgICBnbEdl
dFByb2dyYW1pdihtUHJvZ3JhbSwgR0xfTElOS19TVEFUVVMsICZsaW5rZWQpOworICAgIEFTU0VS
VF9FUSgxLCBsaW5rZWQpOworCisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKKworICAgIHN0
YXRpYyBjb25zdCBmbG9hdCBjb2xvckJbXSA9IHsKKyAgICAgICAgMC4wZiwgMC41MGYsIDAuMGYs
IDAuMGYsIDAuMGYsIDAuMGYsIDAuNzVmLCAwLjBmLAorICAgIH07CisKKyAgICBnbFVuaWZvcm00
Zihjb2xvckFMb2NhdGlvbiwgMC4yNWYsIDAuMGYsIDAuMGYsIDAuMGYpOworICAgIGdsVW5pZm9y
bTRmdihjb2xvckJMb2NhdGlvbiwgMiwgY29sb3JCKTsKKyAgICBnbFVuaWZvcm00Zihjb2xvckNM
b2NhdGlvbiwgMC4wZiwgMC4wZiwgMC4wZiwgMS4wZik7CisKKyAgICBkcmF3UXVhZChtUHJvZ3Jh
bSwgImFfcG9zaXRpb24iLCAwLjVmKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAg
IEVYUEVDVF9QSVhFTF9ORUFSKDAsIDAsIDY0LCAxMjgsIDE5MiwgMjU1LCAxLjApOworfQorCisv
LyBUZXN0IHRoYXQgY29uZmxpY3RzIGFyZSBkZXRlY3RlZCB3aGVuIHR3byB1bmlmb3JtcyBhcmUg
Ym91bmQgdG8gdGhlIHNhbWUgbG9jYXRpb24KK1RFU1RfUChCaW5kVW5pZm9ybUxvY2F0aW9uVGVz
dCwgQ29uZmxpY3RzRGV0ZWN0aW9uKQoreworICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xf
Q0hST01JVU1fYmluZF91bmlmb3JtX2xvY2F0aW9uIikpCisgICAgeworICAgICAgICBzdGQ6OmNv
dXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEdMX0NIUk9NSVVNX2JpbmRfdW5pZm9ybV9sb2Nh
dGlvbiBpcyBub3QgYXZhaWxhYmxlLiIKKyAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVF9ORShudWxscHRyLCBtQmluZFVu
aWZvcm1Mb2NhdGlvbik7CisKKyAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgdnNTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgKAorICAgICAgICBhdHRyaWJ1
dGUgdmVjNCBhX3Bvc2l0aW9uOworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAg
ICAgICAgICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247CisgICAgICAgIH0KKyAgICApOworCisg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgZnNTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgKAorICAg
ICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgICAgICAgdW5pZm9ybSB2ZWM0IHVfY29s
b3JBOworICAgICAgICB1bmlmb3JtIHZlYzQgdV9jb2xvckI7CisgICAgICAgIHZvaWQgbWFpbigp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHVfY29sb3JBICsgdV9jb2xv
ckI7CisgICAgICAgIH0KKyAgICApOworICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorCisgICAgR0xp
bnQgY29sb3JBTG9jYXRpb24gPSAzOworICAgIEdMaW50IGNvbG9yQkxvY2F0aW9uID0gNDsKKwor
ICAgIEdMdWludCB2cyA9IENvbXBpbGVTaGFkZXIoR0xfVkVSVEVYX1NIQURFUiwgdnNTb3VyY2Up
OworICAgIEdMdWludCBmcyA9IENvbXBpbGVTaGFkZXIoR0xfRlJBR01FTlRfU0hBREVSLCBmc1Nv
dXJjZSk7CisKKyAgICBtUHJvZ3JhbSA9IGdsQ3JlYXRlUHJvZ3JhbSgpOworICAgIGdsQXR0YWNo
U2hhZGVyKG1Qcm9ncmFtLCB2cyk7CisgICAgZ2xEZWxldGVTaGFkZXIodnMpOworICAgIGdsQXR0
YWNoU2hhZGVyKG1Qcm9ncmFtLCBmcyk7CisgICAgZ2xEZWxldGVTaGFkZXIoZnMpOworCisgICAg
bUJpbmRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sIGNvbG9yQUxvY2F0aW9uLCAidV9jb2xvckEi
KTsKKyAgICAvLyBCaW5kIHVfY29sb3JCIHRvIGxvY2F0aW9uIGEsIGNhdXNpbmcgY29uZmxpY3Rz
LCBsaW5rIHNob3VsZCBmYWlsLgorICAgIG1CaW5kVW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCBj
b2xvckFMb2NhdGlvbiwgInVfY29sb3JCIik7CisgICAgZ2xMaW5rUHJvZ3JhbShtUHJvZ3JhbSk7
CisgICAgR0xpbnQgbGlua2VkID0gMDsKKyAgICBnbEdldFByb2dyYW1pdihtUHJvZ3JhbSwgR0xf
TElOS19TVEFUVVMsICZsaW5rZWQpOworICAgIEFTU0VSVF9FUSgwLCBsaW5rZWQpOworCisgICAg
Ly8gQmluZCB1X2NvbG9yQiB0byBsb2NhdGlvbiBiLCBubyBjb25mbGljdHMsIGxpbmsgc2hvdWxk
IHN1Y2NlZWQuCisgICAgbUJpbmRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sIGNvbG9yQkxvY2F0
aW9uLCAidV9jb2xvckIiKTsKKyAgICBnbExpbmtQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICBsaW5r
ZWQgPSAwOworICAgIGdsR2V0UHJvZ3JhbWl2KG1Qcm9ncmFtLCBHTF9MSU5LX1NUQVRVUywgJmxp
bmtlZCk7CisgICAgRVhQRUNUX0VRKDEsIGxpbmtlZCk7Cit9CisKKy8vIFRlc3QgYSB1c2UgY2Fz
ZSBvZiB0aGUgY2hyb21pdW0gY29tcG9zaXRvcgorVEVTVF9QKEJpbmRVbmlmb3JtTG9jYXRpb25U
ZXN0LCBDb21wb3NpdG9yKQoreworICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xfQ0hST01J
VU1fYmluZF91bmlmb3JtX2xvY2F0aW9uIikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwg
IlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEdMX0NIUk9NSVVNX2JpbmRfdW5pZm9ybV9sb2NhdGlvbiBp
cyBub3QgYXZhaWxhYmxlLiIKKyAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVF9ORShudWxscHRyLCBtQmluZFVuaWZvcm1M
b2NhdGlvbik7CisKKyAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgICAgY29uc3Qgc3RkOjpzdHJp
bmcgdnNTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgKAorICAgICAgICBhdHRyaWJ1dGUgdmVj
NCBhX3Bvc2l0aW9uOworICAgICAgICBhdHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOworICAgICAg
ICB1bmlmb3JtIG1hdDQgbWF0cml4OworICAgICAgICB1bmlmb3JtIHZlYzIgY29sb3JfYVs0XTsK
KyAgICAgICAgdW5pZm9ybSB2ZWM0IGNvbG9yX2I7CisgICAgICAgIHZhcnlpbmcgdmVjNCB2X2Nv
bG9yOworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICB2X2NvbG9y
Lnh5ID0gY29sb3JfYVswXSArIGNvbG9yX2FbMV07CisgICAgICAgICAgICB2X2NvbG9yLnp3ID0g
Y29sb3JfYVsyXSArIGNvbG9yX2FbM107CisgICAgICAgICAgICB2X2NvbG9yICs9IGNvbG9yX2I7
CisgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IG1hdHJpeCAqIGFfcG9zaXRpb247CisgICAgICAg
IH0KKyAgICApOworCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnNTb3VyY2UgPSBTSEFERVJfU09V
UkNFCisgICAgKAorICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgICAgICAgdmFy
eWluZyB2ZWM0IHZfY29sb3I7CisgICAgICAgIHVuaWZvcm0gZmxvYXQgYWxwaGE7CisgICAgICAg
IHVuaWZvcm0gdmVjNCBtdWx0aXBsaWVyOworICAgICAgICB1bmlmb3JtIHZlYzMgY29sb3JfY1s4
XTsKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgdmVjNCBjb2xv
cl9jX3N1bSA9IHZlYzQoMC4wKTsKKyAgICAgICAgICAgIGNvbG9yX2Nfc3VtLnh5eiArPSBjb2xv
cl9jWzBdOworICAgICAgICAgICAgY29sb3JfY19zdW0ueHl6ICs9IGNvbG9yX2NbMV07CisgICAg
ICAgICAgICBjb2xvcl9jX3N1bS54eXogKz0gY29sb3JfY1syXTsKKyAgICAgICAgICAgIGNvbG9y
X2Nfc3VtLnh5eiArPSBjb2xvcl9jWzNdOworICAgICAgICAgICAgY29sb3JfY19zdW0ueHl6ICs9
IGNvbG9yX2NbNF07CisgICAgICAgICAgICBjb2xvcl9jX3N1bS54eXogKz0gY29sb3JfY1s1XTsK
KyAgICAgICAgICAgIGNvbG9yX2Nfc3VtLnh5eiArPSBjb2xvcl9jWzZdOworICAgICAgICAgICAg
Y29sb3JfY19zdW0ueHl6ICs9IGNvbG9yX2NbN107CisgICAgICAgICAgICBjb2xvcl9jX3N1bS53
ID0gYWxwaGE7CisgICAgICAgICAgICBjb2xvcl9jX3N1bSAqPSBtdWx0aXBsaWVyOworICAgICAg
ICAgICAgZ2xfRnJhZ0NvbG9yID0gdl9jb2xvciArIGNvbG9yX2Nfc3VtOworICAgICAgICB9Cisg
ICAgKTsKKyAgICAvLyBjbGFuZy1mb3JtYXQgb24KKworICAgIGludCBjb3VudGVyICAgICAgICAg
ICAgPSA2OworICAgIGludCBtYXRyaXhMb2NhdGlvbiAgICAgPSBjb3VudGVyKys7CisgICAgaW50
IGNvbG9yQUxvY2F0aW9uICAgICA9IGNvdW50ZXIrKzsKKyAgICBpbnQgY29sb3JCTG9jYXRpb24g
ICAgID0gY291bnRlcisrOworICAgIGludCBhbHBoYUxvY2F0aW9uICAgICAgPSBjb3VudGVyKys7
CisgICAgaW50IG11bHRpcGxpZXJMb2NhdGlvbiA9IGNvdW50ZXIrKzsKKyAgICBpbnQgY29sb3JD
TG9jYXRpb24gICAgID0gY291bnRlcisrOworCisgICAgR0x1aW50IHZzID0gQ29tcGlsZVNoYWRl
cihHTF9WRVJURVhfU0hBREVSLCB2c1NvdXJjZSk7CisgICAgR0x1aW50IGZzID0gQ29tcGlsZVNo
YWRlcihHTF9GUkFHTUVOVF9TSEFERVIsIGZzU291cmNlKTsKKworICAgIG1Qcm9ncmFtID0gZ2xD
cmVhdGVQcm9ncmFtKCk7CisKKyAgICBtQmluZFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgbWF0
cml4TG9jYXRpb24sICJtYXRyaXgiKTsKKyAgICBtQmluZFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3Jh
bSwgY29sb3JBTG9jYXRpb24sICJjb2xvcl9hIik7CisgICAgbUJpbmRVbmlmb3JtTG9jYXRpb24o
bVByb2dyYW0sIGNvbG9yQkxvY2F0aW9uLCAiY29sb3JfYiIpOworICAgIG1CaW5kVW5pZm9ybUxv
Y2F0aW9uKG1Qcm9ncmFtLCBhbHBoYUxvY2F0aW9uLCAiYWxwaGEiKTsKKyAgICBtQmluZFVuaWZv
cm1Mb2NhdGlvbihtUHJvZ3JhbSwgbXVsdGlwbGllckxvY2F0aW9uLCAibXVsdGlwbGllciIpOwor
ICAgIG1CaW5kVW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCBjb2xvckNMb2NhdGlvbiwgImNvbG9y
X2MiKTsKKworICAgIGdsQXR0YWNoU2hhZGVyKG1Qcm9ncmFtLCB2cyk7CisgICAgZ2xEZWxldGVT
aGFkZXIodnMpOworICAgIGdsQXR0YWNoU2hhZGVyKG1Qcm9ncmFtLCBmcyk7CisgICAgZ2xEZWxl
dGVTaGFkZXIoZnMpOworCisgICAgLy8gTGluayB0aGUgbVByb2dyYW0KKyAgICBnbExpbmtQcm9n
cmFtKG1Qcm9ncmFtKTsKKyAgICAvLyBDaGVjayB0aGUgbGluayBzdGF0dXMKKyAgICBHTGludCBs
aW5rZWQgPSAwOworICAgIGdsR2V0UHJvZ3JhbWl2KG1Qcm9ncmFtLCBHTF9MSU5LX1NUQVRVUywg
JmxpbmtlZCk7CisgICAgQVNTRVJUX0VRKDEsIGxpbmtlZCk7CisKKyAgICBnbFVzZVByb2dyYW0o
bVByb2dyYW0pOworCisgICAgc3RhdGljIGNvbnN0IGZsb2F0IGNvbG9yQVtdID0geworICAgICAg
ICAwLjFmLCAwLjFmLCAwLjFmLCAwLjFmLCAwLjFmLCAwLjFmLCAwLjFmLCAwLjFmLAorICAgIH07
CisKKyAgICBzdGF0aWMgY29uc3QgZmxvYXQgY29sb3JDW10gPSB7CisgICAgICAgIDAuMWYsIDAu
MWYsIDAuMWYsIDAuMWYsIDAuMWYsIDAuMWYsIDAuMWYsIDAuMWYsIDAuMWYsIDAuMWYsIDAuMWYs
IDAuMWYsCisgICAgICAgIDAuMWYsIDAuMWYsIDAuMWYsIDAuMWYsIDAuMWYsIDAuMWYsIDAuMWYs
IDAuMWYsIDAuMWYsIDAuMWYsIDAuMWYsIDAuMWYsCisgICAgfTsKKworICAgIHN0YXRpYyBjb25z
dCBmbG9hdCBpZGVudGl0eVtdID0geworICAgICAgICAxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAw
LCAwLCAxLCAwLCAwLCAwLCAwLCAxLAorICAgIH07CisKKyAgICBnbFVuaWZvcm1NYXRyaXg0ZnYo
bWF0cml4TG9jYXRpb24sIDEsIGZhbHNlLCBpZGVudGl0eSk7CisgICAgZ2xVbmlmb3JtMmZ2KGNv
bG9yQUxvY2F0aW9uLCA0LCBjb2xvckEpOworICAgIGdsVW5pZm9ybTRmKGNvbG9yQkxvY2F0aW9u
LCAwLjJmLCAwLjJmLCAwLjJmLCAwLjJmKTsKKyAgICBnbFVuaWZvcm0xZihhbHBoYUxvY2F0aW9u
LCAwLjhmKTsKKyAgICBnbFVuaWZvcm00ZihtdWx0aXBsaWVyTG9jYXRpb24sIDAuNWYsIDAuNWYs
IDAuNWYsIDAuNWYpOworICAgIGdsVW5pZm9ybTNmdihjb2xvckNMb2NhdGlvbiwgOCwgY29sb3JD
KTsKKworICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDYpOworCisgICAgZHJhd1F1
YWQobVByb2dyYW0sICJhX3Bvc2l0aW9uIiwgMC41Zik7CisKKyAgICBFWFBFQ1RfUElYRUxfRVEo
MCwgMCwgMjA0LCAyMDQsIDIwNCwgMjA0KTsKK30KKworLy8gVGVzdCB0aGF0IHVudXNlZCB1bmlm
b3JtcyBkb24ndCBjb25mbGljdCB3aGVuIGJvdW5kIHRvIHRoZSBzYW1lIGxvY2F0aW9uCitURVNU
X1AoQmluZFVuaWZvcm1Mb2NhdGlvblRlc3QsIFVudXNlZFVuaWZvcm1VcGRhdGUpCit7CisgICAg
aWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9DSFJPTUlVTV9iaW5kX3VuaWZvcm1fbG9jYXRpb24i
KSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgR0xf
Q0hST01JVU1fYmluZF91bmlmb3JtX2xvY2F0aW9uIGlzIG5vdCBhdmFpbGFibGUuIgorICAgICAg
ICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
QVNTRVJUX05FKG51bGxwdHIsIG1CaW5kVW5pZm9ybUxvY2F0aW9uKTsKKworICAgIC8vIGNsYW5n
LWZvcm1hdCBvZmYKKyAgICBjb25zdCBzdGQ6OnN0cmluZyB2c1NvdXJjZSA9IFNIQURFUl9TT1VS
Q0UKKyAgICAoCisgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247CisgICAgICAgIHZv
aWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlv
bjsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBmc1NvdXJjZSA9
IFNIQURFUl9TT1VSQ0UKKyAgICAoCisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
ICAgICAgICB1bmlmb3JtIHZlYzQgdV9jb2xvckE7CisgICAgICAgIHVuaWZvcm0gZmxvYXQgdV9j
b2xvclU7CisgICAgICAgIHVuaWZvcm0gdmVjNCB1X2NvbG9yQzsKKyAgICAgICAgdm9pZCBtYWlu
KCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdV9jb2xvckEgKyB1X2Nv
bG9yQzsKKyAgICAgICAgfQorICAgICk7CisgICAgLy8gY2xhbmctZm9ybWF0IG9uCisKKyAgICBj
b25zdCBHTGludCBjb2xvclVMb2NhdGlvbiAgICAgID0gMTsKKyAgICBjb25zdCBHTGludCBub25l
eGlzdGluZ0xvY2F0aW9uID0gNTsKKyAgICBjb25zdCBHTGludCB1bmJvdW5kTG9jYXRpb24gICAg
ID0gNjsKKworICAgIEdMdWludCB2cyA9IENvbXBpbGVTaGFkZXIoR0xfVkVSVEVYX1NIQURFUiwg
dnNTb3VyY2UpOworICAgIEdMdWludCBmcyA9IENvbXBpbGVTaGFkZXIoR0xfRlJBR01FTlRfU0hB
REVSLCBmc1NvdXJjZSk7CisKKyAgICBtUHJvZ3JhbSA9IGdsQ3JlYXRlUHJvZ3JhbSgpOworICAg
IG1CaW5kVW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCBjb2xvclVMb2NhdGlvbiwgInVfY29sb3JV
Iik7CisgICAgLy8gVGhlIG5vbi1leGlzdGluZyB1bmlmb3JtIHNob3VsZCBiZWhhdmUgbGlrZSBl
eGlzdGluZywgYnV0IG9wdGltaXplZCBhd2F5CisgICAgLy8gdW5pZm9ybS4KKyAgICBtQmluZFVu
aWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgbm9uZXhpc3RpbmdMb2NhdGlvbiwgIm5vbmV4aXN0aW5n
Iik7CisgICAgLy8gTGV0IEEgYW5kIEMgYmUgYXNzaWduZWQgYXV0b21hdGljIGxvY2F0aW9ucy4K
KyAgICBnbEF0dGFjaFNoYWRlcihtUHJvZ3JhbSwgdnMpOworICAgIGdsRGVsZXRlU2hhZGVyKHZz
KTsKKyAgICBnbEF0dGFjaFNoYWRlcihtUHJvZ3JhbSwgZnMpOworICAgIGdsRGVsZXRlU2hhZGVy
KGZzKTsKKyAgICBnbExpbmtQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICBHTGludCBsaW5rZWQgPSAw
OworICAgIGdsR2V0UHJvZ3JhbWl2KG1Qcm9ncmFtLCBHTF9MSU5LX1NUQVRVUywgJmxpbmtlZCk7
CisgICAgQVNTRVJUX0VRKDEsIGxpbmtlZCk7CisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsK
KworICAgIC8vIE5vIGVycm9ycyBvbiBib3VuZCBsb2NhdGlvbnMsIHNpbmNlIGNhbGxlciBkb2Vz
IG5vdCBrbm93CisgICAgLy8gaWYgdGhlIGRyaXZlciBvcHRpbWl6ZXMgdGhlbSBhd2F5IG9yIG5v
dC4KKyAgICBnbFVuaWZvcm0xZihjb2xvclVMb2NhdGlvbiwgMC4yNWYpOworICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworCisgICAgLy8gTm8gZXJyb3JzIG9uIGJvdW5kIGxvY2F0aW9ucyBvZiBu
YW1lcyB0aGF0IGRvIG5vdCBleGlzdAorICAgIC8vIGluIHRoZSBzaGFkZXIuIE90aGVyd2lzZSBp
dCB3b3VsZCBiZSBpbmNvbnNpc3RlbnQgd3J0IHRoZQorICAgIC8vIG9wdGltaXphdGlvbiBjYXNl
LgorICAgIGdsVW5pZm9ybTFmKG5vbmV4aXN0aW5nTG9jYXRpb24sIDAuMjVmKTsKKyAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIFRoZSBhYm92ZSBhcmUgZXF1YWwgdG8gdXBkYXRp
bmcgLTEuCisgICAgZ2xVbmlmb3JtMWYoLTEsIDAuMjVmKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJS
T1IoKTsKKworICAgIC8vIE5vIGVycm9ycyB3aGVuIHVwZGF0aW5nIHdpdGggb3RoZXIgdHlwZSBl
aXRoZXIuCisgICAgLy8gVGhlIHR5cGUgY2FuIG5vdCBiZSBrbm93biB3aXRoIHRoZSBub24tZXhp
c3RpbmcgY2FzZS4KKyAgICBnbFVuaWZvcm0yZihjb2xvclVMb2NhdGlvbiwgMC4yNWYsIDAuMjVm
KTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICBnbFVuaWZvcm0yZihub25leGlzdGlu
Z0xvY2F0aW9uLCAwLjI1ZiwgMC4yNWYpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAg
IGdsVW5pZm9ybTJmKC0xLCAwLjI1ZiwgMC4yNWYpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OworCisgICAgLy8gRW5zdXJlIHRoYXQgZHJpdmVyIG9yIEFOR0xFIGhhcyBvcHRpbWl6ZWQgdGhl
IHZhcmlhYmxlCisgICAgLy8gYXdheSBhbmQgdGhlIHRlc3QgdGVzdHMgd2hhdCBpdCBpcyBzdXBw
b3NlZCB0by4KKyAgICBFWFBFQ1RfRVEoLTEsIGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFt
LCAidV9jb2xvclUiKSk7CisKKyAgICAvLyBUaGUgYm91bmQgbG9jYXRpb24gZ2V0cyBtYXJrZWQg
YXMgdXNlZCBhbmQgdGhlIGRyaXZlcgorICAgIC8vIGRvZXMgbm90IGFsbG9jYXRlIG90aGVyIHZh
cmlhYmxlcyB0byB0aGF0IGxvY2F0aW9uLgorICAgIEVYUEVDVF9ORShjb2xvclVMb2NhdGlvbiwg
Z2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ1X2NvbG9yQSIpKTsKKyAgICBFWFBFQ1Rf
TkUoY29sb3JVTG9jYXRpb24sIGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidV9jb2xv
ckMiKSk7CisgICAgRVhQRUNUX05FKG5vbmV4aXN0aW5nTG9jYXRpb24sIGdsR2V0VW5pZm9ybUxv
Y2F0aW9uKG1Qcm9ncmFtLCAidV9jb2xvckEiKSk7CisgICAgRVhQRUNUX05FKG5vbmV4aXN0aW5n
TG9jYXRpb24sIGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidV9jb2xvckMiKSk7CisK
KyAgICAvLyBVbmludHVpdGl2ZTogd2hpbGUgc3BlY2lmeWluZyB2YWx1ZSB3b3JrcywgZ2V0dGlu
ZyB0aGUgdmFsdWUgZG9lcyBub3QuCisgICAgR0xmbG9hdCBnZXRSZXN1bHQgPSAwLjBmOworICAg
IGdsR2V0VW5pZm9ybWZ2KG1Qcm9ncmFtLCBjb2xvclVMb2NhdGlvbiwgJmdldFJlc3VsdCk7Cisg
ICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICBnbEdldFVuaWZv
cm1mdihtUHJvZ3JhbSwgbm9uZXhpc3RpbmdMb2NhdGlvbiwgJmdldFJlc3VsdCk7CisgICAgRVhQ
RUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICBnbEdldFVuaWZvcm1mdiht
UHJvZ3JhbSwgLTEsICZnZXRSZXN1bHQpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElE
X09QRVJBVElPTik7CisKKyAgICAvLyBVcGRhdGluZyBhbiB1bmJvdW5kLCBub24tZXhpc3Rpbmcg
bG9jYXRpb24gc3RpbGwgY2F1c2VzCisgICAgLy8gYW4gZXJyb3IuCisgICAgZ2xVbmlmb3JtMWYo
dW5ib3VuZExvY2F0aW9uLCAwLjI1Zik7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKK30KKworLy8gVGVzdCBmb3IgYSBidWcgd2hlcmUgdXNpbmcgYSBzYW1wbGVy
IGNhdXNlZCBHTCBlcnJvciBpZiB0aGUgbVByb2dyYW0gaGFkCisvLyB1bmlmb3JtcyB0aGF0IHdl
cmUgb3B0aW1pemVkIGF3YXkgYnkgdGhlIGRyaXZlci4gVGhpcyB3YXMgb25seSBhIHByb2JsZW0g
d2l0aAorLy8gZ2xCaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU0gaW1wbGVtZW50YXRpb24uIFRo
aXMgY291bGQgYmUgcmVwcm9lZCBieQorLy8gYmluZGluZyB0aGUgc2FtcGxlciB0byBhIGxvY2F0
aW9uIGhpZ2hlciB0aGFuIHRoZSBhbW91bnQgb2YgYWN0aXZlIHVuaWZvcm1zLgorVEVTVF9QKEJp
bmRVbmlmb3JtTG9jYXRpb25UZXN0LCBVc2VTYW1wbGVyV2hlblVudXNlZFVuaWZvcm1zKQorewor
ICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xfQ0hST01JVU1fYmluZF91bmlmb3JtX2xvY2F0
aW9uIikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNl
IEdMX0NIUk9NSVVNX2JpbmRfdW5pZm9ybV9sb2NhdGlvbiBpcyBub3QgYXZhaWxhYmxlLiIKKyAg
ICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIEFTU0VSVF9ORShudWxscHRyLCBtQmluZFVuaWZvcm1Mb2NhdGlvbik7CisKKyAgICAvLyBj
bGFuZy1mb3JtYXQgb2ZmCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgdnNTb3VyY2UgPSBTSEFERVJf
U09VUkNFCisgICAgKAorICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAg
ICBnbF9Qb3NpdGlvbiA9IHZlYzQoMCk7CisgICAgICAgIH0KKyAgICApOworCisgICAgY29uc3Qg
c3RkOjpzdHJpbmcgZnNTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgKAorICAgICAgICB1bmlm
b3JtIHNhbXBsZXIyRCB0ZXg7CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh0ZXgsIHZlYzIoMSkpOworICAgICAgICB9
CisgICAgKTsKKyAgICAvLyBjbGFuZy1mb3JtYXQgb24KKworICAgIGNvbnN0IEdMdWludCB0ZXhM
b2NhdGlvbiA9IDU0OworCisgICAgR0x1aW50IHZzID0gQ29tcGlsZVNoYWRlcihHTF9WRVJURVhf
U0hBREVSLCB2c1NvdXJjZSk7CisgICAgR0x1aW50IGZzID0gQ29tcGlsZVNoYWRlcihHTF9GUkFH
TUVOVF9TSEFERVIsIGZzU291cmNlKTsKKworICAgIG1Qcm9ncmFtID0gZ2xDcmVhdGVQcm9ncmFt
KCk7CisgICAgbUJpbmRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sIHRleExvY2F0aW9uLCAidGV4
Iik7CisKKyAgICBnbEF0dGFjaFNoYWRlcihtUHJvZ3JhbSwgdnMpOworICAgIGdsRGVsZXRlU2hh
ZGVyKHZzKTsKKyAgICBnbEF0dGFjaFNoYWRlcihtUHJvZ3JhbSwgZnMpOworICAgIGdsRGVsZXRl
U2hhZGVyKGZzKTsKKworICAgIGdsTGlua1Byb2dyYW0obVByb2dyYW0pOworCisgICAgR0xpbnQg
bGlua2VkID0gMDsKKyAgICBnbEdldFByb2dyYW1pdihtUHJvZ3JhbSwgR0xfTElOS19TVEFUVVMs
ICZsaW5rZWQpOworICAgIEVYUEVDVF9ORSgwLCBsaW5rZWQpOworICAgIGdsVXNlUHJvZ3JhbSht
UHJvZ3JhbSk7CisgICAgZ2xVbmlmb3JtMWkodGV4TG9jYXRpb24sIDApOworICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworfQorCisvLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJh
dGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhl
c2UKKy8vIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KK0FOR0xFX0lOU1RBTlRJQVRFX1RF
U1QoQmluZFVuaWZvcm1Mb2NhdGlvblRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9E
M0Q5KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAorICAgICAgICAgICAg
ICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMy
X09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSk7CisKK30g
IC8vIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2ds
X3Rlc3RzL0JsZW5kTWluTWF4VGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0JsZW5kTWluTWF4VGVzdC5jcHAJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0JsZW5k
TWluTWF4VGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNTUgQEAKKy8vCisvLyBD
b3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8v
CisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorCit1c2luZyBuYW1lc3BhY2Ug
YW5nbGU7CisKK2NsYXNzIEJsZW5kTWluTWF4VGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAg
cHJvdGVjdGVkOgorICAgIEJsZW5kTWluTWF4VGVzdCgpCisgICAgeworICAgICAgICBzZXRXaW5k
b3dXaWR0aCgxMjgpOworICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKKyAgICAgICAgc2V0
Q29uZmlnUmVkQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAg
ICBzZXRDb25maWdCbHVlQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOwor
ICAgICAgICBzZXRDb25maWdEZXB0aEJpdHMoMjQpOworCisgICAgICAgIG1Qcm9ncmFtID0gMDsK
KyAgICAgICAgbUNvbG9yTG9jYXRpb24gPSAtMTsKKyAgICAgICAgbUZyYW1lYnVmZmVyID0gMDsK
KyAgICAgICAgbUNvbG9yUmVuZGVyYnVmZmVyID0gMDsKKyAgICB9CisKKyAgICBzdHJ1Y3QgQ29s
b3IKKyAgICB7CisgICAgICAgIGZsb2F0IHZhbHVlc1s0XTsKKyAgICB9OworCisgICAgc3RhdGlj
IGZsb2F0IGdldEV4cGVjdGVkKGJvb2wgYmxlbmRNaW4sIGZsb2F0IGN1ckNvbG9yLCBmbG9hdCBw
cmV2Q29sb3IpCisgICAgeworICAgICAgICByZXR1cm4gYmxlbmRNaW4gPyBzdGQ6Om1pbihjdXJD
b2xvciwgcHJldkNvbG9yKSA6IHN0ZDo6bWF4KGN1ckNvbG9yLCBwcmV2Q29sb3IpOworICAgIH0K
KworICAgIHZvaWQgcnVuVGVzdChHTGVudW0gY29sb3JGb3JtYXQsIEdMZW51bSB0eXBlKQorICAg
IHsKKyAgICAgICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAmJiAhZXh0ZW5zaW9u
RW5hYmxlZCgiR0xfRVhUX2JsZW5kX21pbm1heCIpKQorICAgICAgICB7CisgICAgICAgICAgICBz
dGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEVTMyBvciBHTF9FWFRfYmxlbmRfbWlu
bWF4IGlzIG5vdCBhdmFpbGFibGUuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IGZpZ3VyZSBvdXQgd2h5
IHRoaXMgZmFpbHMKKyAgICAgICAgaWYgKElzSW50ZWwoKSAmJiBHZXRQYXJhbSgpID09IEVTMl9P
UEVOR0woKSkKKyAgICAgICAgeworICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBw
ZWQgb24gT3BlbkdMIEludGVsIGR1ZSB0byBmbGFreW5lc3MuIiA8PCBzdGQ6OmVuZGw7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBTZXRVcEZyYW1lYnVmZmVyKGNv
bG9yRm9ybWF0KTsKKworICAgICAgICBpbnQgbWluVmFsdWUgPSAwOworICAgICAgICBpbnQgbWF4
VmFsdWUgPSAxOworICAgICAgICBpZiAodHlwZSA9PSBHTF9GTE9BVCkKKyAgICAgICAgeworICAg
ICAgICAgICAgbWluVmFsdWUgPSAtMTAyNDsKKyAgICAgICAgICAgIG1heFZhbHVlID0gMTAyNDsK
KyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IHNpemVfdCBjb2xvckNvdW50ID0gMTI4OworICAg
ICAgICBDb2xvciBjb2xvcnNbY29sb3JDb3VudF07CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY29sb3JDb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKHNpemVf
dCBqID0gMDsgaiA8IDQ7IGorKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb2xv
cnNbaV0udmFsdWVzW2pdID0KKyAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+
KG1pblZhbHVlICsgKHJhbmQoKSAlIChtYXhWYWx1ZSAtIG1pblZhbHVlKSkpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgZmxvYXQgcHJldkNvbG9yWzRdOworICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbG9yQ291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAg
ICAgICAgY29uc3QgQ29sb3IgJmNvbG9yID0gY29sb3JzW2ldOworICAgICAgICAgICAgZ2xVc2VQ
cm9ncmFtKG1Qcm9ncmFtKTsKKyAgICAgICAgICAgIGdsVW5pZm9ybTRmKG1Db2xvckxvY2F0aW9u
LCBjb2xvci52YWx1ZXNbMF0sIGNvbG9yLnZhbHVlc1sxXSwgY29sb3IudmFsdWVzWzJdLCBjb2xv
ci52YWx1ZXNbM10pOworCisgICAgICAgICAgICBib29sIGJsZW5kTWluID0gKHJhbmQoKSAlIDIg
PT0gMCk7CisgICAgICAgICAgICBnbEJsZW5kRXF1YXRpb24oYmxlbmRNaW4gPyBHTF9NSU4gOiBH
TF9NQVgpOworCisgICAgICAgICAgICBkcmF3UXVhZChtUHJvZ3JhbSwgImFQb3NpdGlvbiIsIDAu
NWYpOworCisgICAgICAgICAgICBmbG9hdCBwaXhlbFs0XTsKKyAgICAgICAgICAgIGlmICh0eXBl
ID09IEdMX1VOU0lHTkVEX0JZVEUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgR0x1
Ynl0ZSB1Ynl0ZVBpeGVsWzRdOworICAgICAgICAgICAgICAgIGdsUmVhZFBpeGVscygwLCAwLCAx
LCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCB1Ynl0ZVBpeGVsKTsKKyAgICAgICAgICAg
ICAgICBmb3IgKHNpemVfdCBjb21wb25lbnRJZHggPSAwOyBjb21wb25lbnRJZHggPCBBcnJheVNp
emUocGl4ZWwpOyBjb21wb25lbnRJZHgrKykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIHBpeGVsW2NvbXBvbmVudElkeF0gPSB1Ynl0ZVBpeGVsW2NvbXBvbmVudElkeF0g
LyAyNTUuMGY7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAg
ZWxzZSBpZiAodHlwZSA9PSBHTF9GTE9BVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBnbFJlYWRQaXhlbHMoMCwgMCwgMSwgMSwgR0xfUkdCQSwgR0xfRkxPQVQsIHBpeGVsKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBGQUlMKCkgPDwgIlVuZXhwZWN0ZWQgcGl4ZWwgdHlwZSI7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmIChpID4gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBj
b25zdCBmbG9hdCBlcnJvclJhbmdlID0gMS4wZiAvIDI1NS4wZjsKKyAgICAgICAgICAgICAgICBm
b3IgKHNpemVfdCBjb21wb25lbnRJZHggPSAwOyBjb21wb25lbnRJZHggPCBBcnJheVNpemUocGl4
ZWwpOyBjb21wb25lbnRJZHgrKykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIEVYUEVDVF9ORUFSKAorICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RXhwZWN0ZWQoYmxl
bmRNaW4sIGNvbG9yLnZhbHVlc1tjb21wb25lbnRJZHhdLCBwcmV2Q29sb3JbY29tcG9uZW50SWR4
XSksCisgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbFtjb21wb25lbnRJZHhdLCBlcnJvclJh
bmdlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1l
bWNweShwcmV2Q29sb3IsIHBpeGVsLCBzaXplb2YocGl4ZWwpKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNl
dFVwKCk7CisKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdFZlcnRleFNoYWRlclNvdXJj
ZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAgYXR0cmlidXRlIGhpZ2hw
IHZlYzQgYVBvc2l0aW9uOworCisgICAgICAgICAgICB2b2lkIG1haW4odm9pZCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IGFQb3NpdGlvbjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB0ZXN0RnJhZ21l
bnRTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgICAgICgKKyAgICAgICAgICAgIHVu
aWZvcm0gaGlnaHAgdmVjNCBjb2xvcjsKKyAgICAgICAgICAgIHZvaWQgbWFpbih2b2lkKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IGNvbG9yOworICAgICAg
ICAgICAgfQorICAgICAgICApOworCisgICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0o
dGVzdFZlcnRleFNoYWRlclNvdXJjZSwgdGVzdEZyYWdtZW50U2hhZGVyU291cmNlKTsKKyAgICAg
ICAgaWYgKG1Qcm9ncmFtID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIEZBSUwoKSA8PCAi
c2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZC4iOworICAgICAgICB9CisKKyAgICAgICAgbUNvbG9y
TG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgImNvbG9yIik7CisKKyAg
ICAgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKKworICAgICAgICBnbENsZWFyQ29sb3IoMCwg
MCwgMCwgMCk7CisgICAgICAgIGdsQ2xlYXJEZXB0aGYoMC4wKTsKKyAgICAgICAgZ2xDbGVhcihH
TF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCk7CisKKyAgICAgICAgZ2xF
bmFibGUoR0xfQkxFTkQpOworICAgICAgICBnbERpc2FibGUoR0xfREVQVEhfVEVTVCk7CisgICAg
fQorCisgICAgdm9pZCBTZXRVcEZyYW1lYnVmZmVyKEdMZW51bSBjb2xvckZvcm1hdCkKKyAgICB7
CisgICAgICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZtRnJhbWVidWZmZXIpOworICAgICAgICBn
bEJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZmZXIpOworICAg
ICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZmZXIp
OworCisgICAgICAgIGdsR2VuUmVuZGVyYnVmZmVycygxLCAmbUNvbG9yUmVuZGVyYnVmZmVyKTsK
KyAgICAgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbUNvbG9yUmVuZGVy
YnVmZmVyKTsKKyAgICAgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwg
Y29sb3JGb3JtYXQsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpKTsKKyAgICAg
ICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSLCBHTF9DT0xP
Ul9BVFRBQ0hNRU5UMCwgR0xfUkVOREVSQlVGRkVSLCBtQ29sb3JSZW5kZXJidWZmZXIpOworCisg
ICAgICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKKyAgICAgICAgZ2xD
bGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1Io
KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQorICAgIHsKKyAgICAgICAg
Z2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMo
MSwgJm1GcmFtZWJ1ZmZlcik7CisgICAgICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmbUNv
bG9yUmVuZGVyYnVmZmVyKTsKKworICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7CisgICAg
fQorCisgICAgR0x1aW50IG1Qcm9ncmFtOworICAgIEdMaW50IG1Db2xvckxvY2F0aW9uOworCisg
ICAgR0x1aW50IG1GcmFtZWJ1ZmZlcjsKKyAgICBHTHVpbnQgbUNvbG9yUmVuZGVyYnVmZmVyOwor
fTsKKworVEVTVF9QKEJsZW5kTWluTWF4VGVzdCwgUkdCQTgpCit7CisgICAgcnVuVGVzdChHTF9S
R0JBOCwgR0xfVU5TSUdORURfQllURSk7Cit9CisKK1RFU1RfUChCbGVuZE1pbk1heFRlc3QsIFJH
QkEzMkYpCit7CisgICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyB8fCAhZXh0ZW5z
aW9uRW5hYmxlZCgiR0xfRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCIpKQorICAgIHsKKyAgICAgICAg
c3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBFUzMgYW5kIEdMX0VYVF9jb2xvcl9i
dWZmZXJfZmxvYXQgYXJlIG5vdCBhdmFpbGFibGUuIgorICAgICAgICAgICAgICAgICAgPDwgc3Rk
OjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gVE9ETyhqbWFkaWxsKTog
RmlndXJlIG91dCB3aHkgdGhpcyBpcyBicm9rZW4gb24gSW50ZWwKKyAgICBpZiAoSXNJbnRlbCgp
ICYmIChHZXRQYXJhbSgpID09IEVTMl9EM0QxMSgpIHx8IEdldFBhcmFtKCkgPT0gRVMyX0QzRDko
KSkpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBP
cGVuR0wuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBU
T0RPIChidWcgMTI4NCk6IEludmVzdGlnYXRlIFJHQkEzMmYgRDNEIFNESyBMYXllcnMgbWVzc2Fn
ZXMgb24gRDNEMTFfRkw5XzMKKyAgICBpZiAoSXNEM0QxMV9GTDkzKCkpCisgICAgeworICAgICAg
ICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBGZWF0dXJlIExldmVsIDlfMy4iIDw8IHN0
ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHJ1blRlc3QoR0xfUkdCQTMy
RiwgR0xfRkxPQVQpOworfQorCitURVNUX1AoQmxlbmRNaW5NYXhUZXN0LCBSR0JBMTZGKQorewor
ICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMgJiYgIWV4dGVuc2lvbkVuYWJsZWQo
IkdMX0VYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCIpKQorICAgIHsKKyAgICAgICAgc3RkOjpj
b3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBFUzMgb3IgR0xfRVhUX2NvbG9yX2J1ZmZlcl9o
YWxmX2Zsb2F0IGlzIG5vdCBhdmFpbGFibGUuIgorICAgICAgICAgICAgICAgICAgPDwgc3RkOjpl
bmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gVE9ETyhqbWFkaWxsKTogZmln
dXJlIG91dCB3aHkgdGhpcyBmYWlscworICAgIGlmIChJc0ludGVsKCkgJiYgKEdldFBhcmFtKCkg
PT0gRVMyX0QzRDExKCkgfHwgR2V0UGFyYW0oKSA9PSBFUzJfRDNEOSgpKSkKKyAgICB7CisgICAg
ICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIGR1ZSB0byBmYWlsdXJlcy4i
IDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHJ1blRlc3QoR0xf
UkdCQTE2RiwgR0xfRkxPQVQpOworfQorCisvLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29u
ZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lv
bikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgorQU5HTEVfSU5TVEFOVElBVEVf
VEVTVChCbGVuZE1pbk1heFRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCks
CisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAorICAgICAgICAgICAgICAgICAg
ICAgICBFUzNfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8z
KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgRVMzX09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdM
RVMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOwpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0JsaXRGcmFtZWJ1ZmZlckFO
R0xFVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsX3Rlc3RzL0JsaXRGcmFtZWJ1ZmZlckFOR0xFVGVzdC5jcHAJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0JsaXRGcmFtZWJ1
ZmZlckFOR0xFVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDcwIEBACisvLwor
Ly8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisvLworCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKworI2luY2x1ZGUgInRl
c3RfdXRpbHMvZ2xfcmFpaS5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKK2NsYXNzIEJs
aXRGcmFtZWJ1ZmZlckFOR0xFVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJvdGVjdGVk
OgorICAgIEJsaXRGcmFtZWJ1ZmZlckFOR0xFVGVzdCgpCisgICAgeworICAgICAgICBzZXRXaW5k
b3dXaWR0aCgyNTYpOworICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMjU2KTsKKyAgICAgICAgc2V0
Q29uZmlnUmVkQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAg
ICBzZXRDb25maWdCbHVlQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOwor
ICAgICAgICBzZXRDb25maWdEZXB0aEJpdHMoMjQpOworICAgICAgICBzZXRDb25maWdTdGVuY2ls
Qml0cyg4KTsKKworICAgICAgICBtQ2hlY2tlclByb2dyYW0gPSAwOworICAgICAgICBtQmx1ZVBy
b2dyYW0gPSAwOworCisgICAgICAgIG1PcmlnaW5hbEZCTyA9IDA7CisKKyAgICAgICAgbVVzZXJG
Qk8gPSAwOworICAgICAgICBtVXNlckNvbG9yQnVmZmVyID0gMDsKKyAgICAgICAgbVVzZXJEZXB0
aFN0ZW5jaWxCdWZmZXIgPSAwOworCisgICAgICAgIG1TbWFsbEZCTyA9IDA7CisgICAgICAgIG1T
bWFsbENvbG9yQnVmZmVyID0gMDsKKyAgICAgICAgbVNtYWxsRGVwdGhTdGVuY2lsQnVmZmVyID0g
MDsKKworICAgICAgICBtQ29sb3JPbmx5RkJPID0gMDsKKyAgICAgICAgbUNvbG9yT25seUNvbG9y
QnVmZmVyID0gMDsKKworICAgICAgICBtRGlmZkZvcm1hdEZCTyA9IDA7CisgICAgICAgIG1EaWZm
Rm9ybWF0Q29sb3JCdWZmZXIgPSAwOworCisgICAgICAgIG1EaWZmU2l6ZUZCTyA9IDA7CisgICAg
ICAgIG1EaWZmU2l6ZUNvbG9yQnVmZmVyID0gMDsKKworICAgICAgICBtTVJURkJPID0gMDsKKyAg
ICAgICAgbU1SVENvbG9yQnVmZmVyMCA9IDA7CisgICAgICAgIG1NUlRDb2xvckJ1ZmZlcjEgPSAw
OworCisgICAgICAgIG1SR0JBQ29sb3JidWZmZXIgPSAwOworICAgICAgICBtUkdCQUZCTyA9IDA7
CisKKyAgICAgICAgbUJHUkFNdWx0aXNhbXBsZWRSZW5kZXJidWZmZXIgPSAwOworICAgICAgICBt
QkdSQU11bHRpc2FtcGxlZEZCTyA9IDA7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIFNldFVw
KCkKKyAgICB7CisgICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKKworICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyBwYXNzdGhyb3VnaFZTID0gU0hBREVSX1NPVVJDRQorICAgICAgICAoCisgICAg
ICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisgICAgICAgICAgICBhdHRyaWJ1dGUgdmVj
NCBwb3NpdGlvbjsKKyAgICAgICAgICAgIHZhcnlpbmcgdmVjNCBwb3M7CisKKyAgICAgICAgICAg
IHZvaWQgbWFpbigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24g
PSBwb3NpdGlvbjsKKyAgICAgICAgICAgICAgICBwb3MgPSBwb3NpdGlvbjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgKTsKKworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBjaGVja2VyZWRGUyA9
IFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZs
b2F0OworICAgICAgICAgICAgdmFyeWluZyB2ZWM0IHBvczsKKworICAgICAgICAgICAgdm9pZCBt
YWluKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAocG9zLnggKiBwb3MueSA+
IDAuMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xv
ciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZ2xf
RnJhZ0NvbG9yID0gdmVjNCgwLjAsIDEuMCwgMC4wLCAxLjApOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBi
bHVlRlMgPSBTSEFERVJfU09VUkNFCisgICAgICAgICgKKyAgICAgICAgICAgIHByZWNpc2lvbiBo
aWdocCBmbG9hdDsKKyAgICAgICAgICAgIHZhcnlpbmcgdmVjNCBwb3M7CisKKyAgICAgICAgICAg
IHZvaWQgbWFpbigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9y
ID0gdmVjNCgwLjAsIDAuMCwgMS4wLCAxLjApOworICAgICAgICAgICAgfQorICAgICAgICApOwor
CisgICAgICAgIG1DaGVja2VyUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHBhc3N0aHJvdWdoVlMs
IGNoZWNrZXJlZEZTKTsKKyAgICAgICAgbUJsdWVQcm9ncmFtID0gQ29tcGlsZVByb2dyYW0ocGFz
c3Rocm91Z2hWUywgYmx1ZUZTKTsKKyAgICAgICAgaWYgKG1DaGVja2VyUHJvZ3JhbSA9PSAwIHx8
IG1CbHVlUHJvZ3JhbSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBGQUlMKCkgPDwgInNo
YWRlciBjb21waWxhdGlvbiBmYWlsZWQuIjsKKyAgICAgICAgfQorCisgICAgICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworCisgICAgICAgIEdMaW50IG9yaWdpbmFsRkJPOworICAgICAgICBnbEdl
dEludGVnZXJ2KEdMX0ZSQU1FQlVGRkVSX0JJTkRJTkcsICZvcmlnaW5hbEZCTyk7CisgICAgICAg
IGlmIChvcmlnaW5hbEZCTyA+PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBtT3JpZ2luYWxG
Qk8gPSAoR0x1aW50KW9yaWdpbmFsRkJPOworICAgICAgICB9CisKKyAgICAgICAgR0xlbnVtIGZv
cm1hdCA9IEdMX0JHUkE4X0VYVDsKKyAgICAgICAgCisgICAgICAgIGdsR2VuRnJhbWVidWZmZXJz
KDEsICZtVXNlckZCTyk7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVS
LCBtVXNlckZCTyk7CisgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1Vc2VyQ29sb3JCdWZmZXIp
OworICAgICAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1Vc2VyRGVwdGhTdGVuY2lsQnVmZmVy
KTsKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVXNlckNvbG9yQnVmZmVy
KTsKKyAgICAgICAgZ2xUZXhTdG9yYWdlMkRFWFQoR0xfVEVYVFVSRV8yRCwgMSwgZm9ybWF0LCBn
ZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7CisgICAgICAgIGdsRnJhbWVidWZm
ZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhU
VVJFXzJELCBtVXNlckNvbG9yQnVmZmVyLCAwKTsKKyAgICAgICAgZ2xCaW5kUmVuZGVyYnVmZmVy
KEdMX1JFTkRFUkJVRkZFUiwgbVVzZXJEZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICBnbFJl
bmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBHTF9ERVBUSDI0X1NURU5DSUw4X09F
UywgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOworICAgICAgICBnbEZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9ERVBUSF9BVFRBQ0hNRU5ULCBH
TF9SRU5ERVJCVUZGRVIsIG1Vc2VyRGVwdGhTdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgZ2xGcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5U
LCBHTF9SRU5ERVJCVUZGRVIsIG1Vc2VyRGVwdGhTdGVuY2lsQnVmZmVyKTsKKworICAgICAgICBB
U1NFUlRfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFLCBnbENoZWNrRnJhbWVidWZm
ZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
CisKKyAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1TbWFsbEZCTyk7CisgICAgICAgIGds
QmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtU21hbGxGQk8pOworICAgICAgICBnbEdl
blRleHR1cmVzKDEsICZtU21hbGxDb2xvckJ1ZmZlcik7CisgICAgICAgIGdsR2VuUmVuZGVyYnVm
ZmVycygxLCAmbVNtYWxsRGVwdGhTdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCBtU21hbGxDb2xvckJ1ZmZlcik7CisgICAgICAgIGdsVGV4U3RvcmFn
ZTJERVhUKEdMX1RFWFRVUkVfMkQsIDEsIGZvcm1hdCwgZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdl
dFdpbmRvd0hlaWdodCgpIC8gMik7CisgICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xf
RlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBtU21hbGxD
b2xvckJ1ZmZlciwgMCk7CisgICAgICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZG
RVIsIG1TbWFsbERlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgICAgIGdsUmVuZGVyYnVmZmVyU3Rv
cmFnZShHTF9SRU5ERVJCVUZGRVIsIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTLCBnZXRXaW5kb3dX
aWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyKTsKKyAgICAgICAgZ2xGcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfREVQVEhfQVRUQUNITUVOVCwgR0xfUkVO
REVSQlVGRkVSLCBtU21hbGxEZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICBnbEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQsIEdM
X1JFTkRFUkJVRkZFUiwgbVNtYWxsRGVwdGhTdGVuY2lsQnVmZmVyKTsKKworICAgICAgICBBU1NF
UlRfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFLCBnbENoZWNrRnJhbWVidWZmZXJT
dGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisK
KyAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1Db2xvck9ubHlGQk8pOworICAgICAgICBn
bEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUNvbG9yT25seUZCTyk7CisgICAgICAg
IGdsR2VuVGV4dHVyZXMoMSwgJm1Db2xvck9ubHlDb2xvckJ1ZmZlcik7CisgICAgICAgIGdsQmlu
ZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbUNvbG9yT25seUNvbG9yQnVmZmVyKTsKKyAgICAgICAg
Z2xUZXhTdG9yYWdlMkRFWFQoR0xfVEVYVFVSRV8yRCwgMSwgZm9ybWF0LCBnZXRXaW5kb3dXaWR0
aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7CisgICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQo
R0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBtQ29s
b3JPbmx5Q29sb3JCdWZmZXIsIDApOworCisgICAgICAgIEFTU0VSVF9HTEVOVU1fRVEoR0xfRlJB
TUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZF
UikpOworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgICAgICBnbEdlbkZyYW1l
YnVmZmVycygxLCAmbURpZmZGb3JtYXRGQk8pOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihH
TF9GUkFNRUJVRkZFUiwgbURpZmZGb3JtYXRGQk8pOworICAgICAgICBnbEdlblRleHR1cmVzKDEs
ICZtRGlmZkZvcm1hdENvbG9yQnVmZmVyKTsKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFXzJELCBtRGlmZkZvcm1hdENvbG9yQnVmZmVyKTsKKyAgICAgICAgZ2xUZXhTdG9yYWdlMkRF
WFQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdCNTY1LCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5k
b3dIZWlnaHQoKSk7CisgICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZG
RVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBtRGlmZkZvcm1hdENvbG9y
QnVmZmVyLCAwKTsKKworICAgICAgICBBU1NFUlRfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NP
TVBMRVRFLCBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKKyAgICAg
ICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwg
Jm1EaWZmU2l6ZUZCTyk7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVS
LCBtRGlmZlNpemVGQk8pOworICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtRGlmZlNpemVDb2xv
ckJ1ZmZlcik7CisgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbURpZmZTaXpl
Q29sb3JCdWZmZXIpOworICAgICAgICBnbFRleFN0b3JhZ2UyREVYVChHTF9URVhUVVJFXzJELCAx
LCBmb3JtYXQsIGdldFdpbmRvd1dpZHRoKCkqMiwgZ2V0V2luZG93SGVpZ2h0KCkqMik7CisgICAg
ICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFD
SE1FTlQwLCBHTF9URVhUVVJFXzJELCBtRGlmZlNpemVDb2xvckJ1ZmZlciwgMCk7CisKKyAgICAg
ICAgQVNTRVJUX0dMRU5VTV9FUShHTF9GUkFNRUJVRkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7CisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOworCisgICAgICAgIGlmIChleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfZHJhd19idWZmZXJz
IikpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZtTVJURkJP
KTsKKyAgICAgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtTVJURkJP
KTsKKyAgICAgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1NUlRDb2xvckJ1ZmZlcjApOworICAg
ICAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbU1SVENvbG9yQnVmZmVyMSk7CisgICAgICAgICAg
ICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1NUlRDb2xvckJ1ZmZlcjApOworICAgICAg
ICAgICAgZ2xUZXhTdG9yYWdlMkRFWFQoR0xfVEVYVFVSRV8yRCwgMSwgZm9ybWF0LCBnZXRXaW5k
b3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7CisgICAgICAgICAgICBnbEZyYW1lYnVmZmVy
VGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMF9FWFQsIEdMX1RF
WFRVUkVfMkQsIG1NUlRDb2xvckJ1ZmZlcjAsIDApOworICAgICAgICAgICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCBtTVJUQ29sb3JCdWZmZXIxKTsKKyAgICAgICAgICAgIGdsVGV4U3Rv
cmFnZTJERVhUKEdMX1RFWFRVUkVfMkQsIDEsIGZvcm1hdCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0
V2luZG93SGVpZ2h0KCkpOworICAgICAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9G
UkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDFfRVhULCBHTF9URVhUVVJFXzJELCBtTVJU
Q29sb3JCdWZmZXIxLCAwKTsKKworICAgICAgICAgICAgQVNTRVJUX0dMRU5VTV9FUShHTF9GUkFN
RUJVRkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVS
KSk7CisgICAgICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChleHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBs
ZSIpKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBUZXN0IGJsaXQgYmV0d2VlbiBSR0JBIGFu
ZCBtdWx0aXNhbXBsZWQgQkdSQQorICAgICAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbVJHQkFD
b2xvcmJ1ZmZlcik7CisgICAgICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1S
R0JBQ29sb3JidWZmZXIpOworICAgICAgICAgICAgZ2xUZXhTdG9yYWdlMkRFWFQoR0xfVEVYVFVS
RV8yRCwgMSwgR0xfUkdCQThfT0VTLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQo
KSk7CisKKyAgICAgICAgICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZtUkdCQUZCTyk7CisgICAg
ICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbVJHQkFGQk8pOworICAg
ICAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1Jf
QVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1SR0JBQ29sb3JidWZmZXIsIDApOworCisgICAg
ICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICAgICAgICAgIEFTU0VSVF9HTEVOVU1f
RVEoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9G
UkFNRUJVRkZFUikpOworCisgICAgICAgICAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1CR1JB
TXVsdGlzYW1wbGVkUmVuZGVyYnVmZmVyKTsKKyAgICAgICAgICAgIGdsQmluZFJlbmRlcmJ1ZmZl
cihHTF9SRU5ERVJCVUZGRVIsIG1CR1JBTXVsdGlzYW1wbGVkUmVuZGVyYnVmZmVyKTsKKyAgICAg
ICAgICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0xfUkVOREVSQlVG
RkVSLCAxLCBHTF9CR1JBOF9FWFQsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgp
KTsKKworICAgICAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1CR1JBTXVsdGlzYW1wbGVk
RkJPKTsKKyAgICAgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtQkdS
QU11bHRpc2FtcGxlZEZCTyk7CisgICAgICAgICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfUkVOREVSQlVGRkVSLCBt
QkdSQU11bHRpc2FtcGxlZFJlbmRlcmJ1ZmZlcik7CisKKyAgICAgICAgICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOworICAgICAgICAgICAgQVNTRVJUX0dMRU5VTV9FUShHTF9GUkFNRUJVRkZFUl9D
T01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7CisgICAg
ICAgIH0KKworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbU9yaWdp
bmFsRkJPKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQorICAgIHsKKyAg
ICAgICAgZ2xEZWxldGVQcm9ncmFtKG1DaGVja2VyUHJvZ3JhbSk7CisgICAgICAgIGdsRGVsZXRl
UHJvZ3JhbShtQmx1ZVByb2dyYW0pOworCisgICAgICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEs
ICZtVXNlckZCTyk7CisgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1Vc2VyQ29sb3JCdWZm
ZXIpOworICAgICAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1Vc2VyRGVwdGhTdGVuY2ls
QnVmZmVyKTsKKworICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbVNtYWxsRkJPKTsK
KyAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbVNtYWxsQ29sb3JCdWZmZXIpOworICAgICAg
ICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1TbWFsbERlcHRoU3RlbmNpbEJ1ZmZlcik7CisK
KyAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1Db2xvck9ubHlGQk8pOworICAgICAg
ICBnbERlbGV0ZVRleHR1cmVzKDEsICZtU21hbGxEZXB0aFN0ZW5jaWxCdWZmZXIpOworCisgICAg
ICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZtRGlmZkZvcm1hdEZCTyk7CisgICAgICAgIGds
RGVsZXRlVGV4dHVyZXMoMSwgJm1EaWZmRm9ybWF0Q29sb3JCdWZmZXIpOworCisgICAgICAgIGds
RGVsZXRlRnJhbWVidWZmZXJzKDEsICZtRGlmZlNpemVGQk8pOworICAgICAgICBnbERlbGV0ZVRl
eHR1cmVzKDEsICZtRGlmZlNpemVDb2xvckJ1ZmZlcik7CisKKyAgICAgICAgaWYgKGV4dGVuc2lv
bkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKSkKKyAgICAgICAgeworICAgICAgICAgICAg
Z2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1NUlRGQk8pOworICAgICAgICAgICAgZ2xEZWxldGVU
ZXh0dXJlcygxLCAmbU1SVENvbG9yQnVmZmVyMCk7CisgICAgICAgICAgICBnbERlbGV0ZVRleHR1
cmVzKDEsICZtTVJUQ29sb3JCdWZmZXIxKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtUkdC
QUNvbG9yYnVmZmVyICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsRGVsZXRlVGV4dHVy
ZXMoMSwgJm1SR0JBQ29sb3JidWZmZXIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1SR0JB
RkJPICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEs
ICZtQkdSQU11bHRpc2FtcGxlZEZCTyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobUJHUkFN
dWx0aXNhbXBsZWRSZW5kZXJidWZmZXIgIT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xE
ZWxldGVSZW5kZXJidWZmZXJzKDEsICZtQkdSQU11bHRpc2FtcGxlZFJlbmRlcmJ1ZmZlcik7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAobUJHUkFNdWx0aXNhbXBsZWRGQk8gIT0gMCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1CR1JBTXVsdGlzYW1w
bGVkRkJPKTsKKyAgICAgICAgfQorCisgICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKKyAg
ICB9CisKKyAgICBHTHVpbnQgbUNoZWNrZXJQcm9ncmFtOworICAgIEdMdWludCBtQmx1ZVByb2dy
YW07CisKKyAgICBHTHVpbnQgbU9yaWdpbmFsRkJPOworCisgICAgR0x1aW50IG1Vc2VyRkJPOwor
ICAgIEdMdWludCBtVXNlckNvbG9yQnVmZmVyOworICAgIEdMdWludCBtVXNlckRlcHRoU3RlbmNp
bEJ1ZmZlcjsKKworICAgIEdMdWludCBtU21hbGxGQk87CisgICAgR0x1aW50IG1TbWFsbENvbG9y
QnVmZmVyOworICAgIEdMdWludCBtU21hbGxEZXB0aFN0ZW5jaWxCdWZmZXI7CisKKyAgICBHTHVp
bnQgbUNvbG9yT25seUZCTzsKKyAgICBHTHVpbnQgbUNvbG9yT25seUNvbG9yQnVmZmVyOworCisg
ICAgR0x1aW50IG1EaWZmRm9ybWF0RkJPOworICAgIEdMdWludCBtRGlmZkZvcm1hdENvbG9yQnVm
ZmVyOworCisgICAgR0x1aW50IG1EaWZmU2l6ZUZCTzsKKyAgICBHTHVpbnQgbURpZmZTaXplQ29s
b3JCdWZmZXI7CisKKyAgICBHTHVpbnQgbU1SVEZCTzsKKyAgICBHTHVpbnQgbU1SVENvbG9yQnVm
ZmVyMDsKKyAgICBHTHVpbnQgbU1SVENvbG9yQnVmZmVyMTsKKworICAgIEdMdWludCBtUkdCQUNv
bG9yYnVmZmVyOworICAgIEdMdWludCBtUkdCQUZCTzsKKworICAgIEdMdWludCBtQkdSQU11bHRp
c2FtcGxlZFJlbmRlcmJ1ZmZlcjsKKyAgICBHTHVpbnQgbUJHUkFNdWx0aXNhbXBsZWRGQk87Cit9
OworCisvLyBEcmF3IHRvIHVzZXItY3JlYXRlZCBmcmFtZWJ1ZmZlciwgYmxpdCB3aG9sZS1idWZm
ZXIgY29sb3IgdG8gb3JpZ2luYWwgZnJhbWVidWZmZXIuCitURVNUX1AoQmxpdEZyYW1lYnVmZmVy
QU5HTEVUZXN0LCBCbGl0Q29sb3JUb0RlZmF1bHQpCit7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIG1Vc2VyRkJPKTsKKworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVS
X0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOworCisg
ICAgZHJhd1F1YWQobUNoZWNrZXJQcm9ncmFtLCAicG9zaXRpb24iLCAwLjhmKTsKKworICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFN
RUJVRkZFUl9BTkdMRSwgbVVzZXJGQk8pOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0RSQVdf
RlJBTUVCVUZGRVJfQU5HTEUsIG1PcmlnaW5hbEZCTyk7CisKKyAgICBnbEJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAwLCAwLCBn
ZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9ORUFSRVNUKTsKKworICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworCisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1P
cmlnaW5hbEZCTyk7CisKKyAgICBFWFBFQ1RfUElYRUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkg
LyA0LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAyNTUsICAgMCwgICAwLCAyNTUpOworICAg
IEVYUEVDVF9QSVhFTF9FUSgzICogZ2V0V2luZG93V2lkdGgoKSAvIDQsICAgICBnZXRXaW5kb3dI
ZWlnaHQoKSAvIDQsICAgMCwgMjU1LCAgIDAsIDI1NSk7CisgICAgRVhQRUNUX1BJWEVMX0VRKDMg
KiBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgMyAqIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgMjU1LCAg
IDAsICAgMCwgMjU1KTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkg
LyA0LCAzICogZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAgIDAsIDI1NSwgICAwLCAyNTUpOworfQor
CisvLyBEcmF3IHRvIHN5c3RlbSBmcmFtZWJ1ZmZlciwgYmxpdCB3aG9sZS1idWZmZXIgY29sb3Ig
dG8gdXNlci1jcmVhdGVkIGZyYW1lYnVmZmVyLgorVEVTVF9QKEJsaXRGcmFtZWJ1ZmZlckFOR0xF
VGVzdCwgUmV2ZXJzZUNvbG9yQmxpdCkKK3sKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFN
RUJVRkZFUiwgbU9yaWdpbmFsRkJPKTsKKworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJ
VCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOworCisgICAg
ZHJhd1F1YWQobUNoZWNrZXJQcm9ncmFtLCAicG9zaXRpb24iLCAwLjhmKTsKKworICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOworCisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJV
RkZFUl9BTkdMRSwgbU9yaWdpbmFsRkJPKTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFX
X0ZSQU1FQlVGRkVSX0FOR0xFLCBtVXNlckZCTyk7CisKKyAgICBnbEJsaXRGcmFtZWJ1ZmZlckFO
R0xFKDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAwLCAwLCBnZXRX
aW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX05FQVJFU1QpOworCisgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7CisKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbVVzZXJG
Qk8pOworCisgICAgRVhQRUNUX1BJWEVMX0VRKCAgICBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgICAg
IGdldFdpbmRvd0hlaWdodCgpIC8gNCwgMjU1LCAgIDAsICAgMCwgMjU1KTsKKyAgICBFWFBFQ1Rf
UElYRUxfRVEoMyAqIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkg
LyA0LCAgIDAsIDI1NSwgICAwLCAyNTUpOworICAgIEVYUEVDVF9QSVhFTF9FUSgzICogZ2V0V2lu
ZG93V2lkdGgoKSAvIDQsIDMgKiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIDI1NSwgICAwLCAgIDAs
IDI1NSk7CisgICAgRVhQRUNUX1BJWEVMX0VRKCAgICBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgMyAq
IGdldFdpbmRvd0hlaWdodCgpIC8gNCwgICAwLCAyNTUsICAgMCwgMjU1KTsKK30KKworLy8gYmxp
dCBmcm9tIHVzZXItY3JlYXRlZCBGQk8gdG8gc3lzdGVtIGZyYW1lYnVmZmVyLCB3aXRoIHRoZSBz
Y2lzc29yIHRlc3QgZW5hYmxlZC4KK1RFU1RfUChCbGl0RnJhbWVidWZmZXJBTkdMRVRlc3QsIFNj
aXNzb3JlZEJsaXQpCit7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1V
c2VyRkJPKTsKKworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JV
RkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOworCisgICAgZHJhd1F1YWQobUNoZWNr
ZXJQcm9ncmFtLCAicG9zaXRpb24iLCAwLjhmKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OworCisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUl9BTkdMRSwgbU9y
aWdpbmFsRkJPKTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVSX0FO
R0xFLCBtVXNlckZCTyk7CisKKyAgICBnbENsZWFyQ29sb3IoMS4wLCAxLjAsIDEuMCwgMS4wKTsK
KyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwg
R0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKKworICAgIGdsU2Npc3NvcihnZXRXaW5kb3dXaWR0aCgp
IC8gMiwgMCwgZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpKTsKKyAgICBn
bEVuYWJsZShHTF9TQ0lTU09SX1RFU1QpOworCisgICAgZ2xCbGl0RnJhbWVidWZmZXJBTkdMRSgw
LCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgMCwgMCwgZ2V0V2luZG93
V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTkVBUkVTVCk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJS
T1IoKTsKKworICAgIGdsRGlzYWJsZShHTF9TQ0lTU09SX1RFU1QpOworCisgICAgZ2xCaW5kRnJh
bWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1PcmlnaW5hbEZCTyk7CisKKyAgICBFWFBFQ1RfUElY
RUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkgLyA0
LCAyNTUsIDI1NSwgMjU1LCAyNTUpOworICAgIEVYUEVDVF9QSVhFTF9FUSgzICogZ2V0V2luZG93
V2lkdGgoKSAvIDQsICAgICBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsICAgMCwgMjU1LCAgIDAsIDI1
NSk7CisgICAgRVhQRUNUX1BJWEVMX0VRKDMgKiBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgMyAqIGdl
dFdpbmRvd0hlaWdodCgpIC8gNCwgMjU1LCAgIDAsICAgMCwgMjU1KTsKKyAgICBFWFBFQ1RfUElY
RUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAzICogZ2V0V2luZG93SGVpZ2h0KCkgLyA0
LCAyNTUsIDI1NSwgMjU1LCAyNTUpOworfQorCisvLyBibGl0IGZyb20gc3lzdGVtIEZCTyB0byB1
c2VyLWNyZWF0ZWQgZnJhbWVidWZmZXIsIHdpdGggdGhlIHNjaXNzb3IgdGVzdCBlbmFibGVkLgor
VEVTVF9QKEJsaXRGcmFtZWJ1ZmZlckFOR0xFVGVzdCwgUmV2ZXJzZVNjaXNzb3JlZEJsaXQpCit7
CisgICAgLy8gVE9ETyhqbWFkaWxsKTogVHJpYWdlIHRoaXMgZHJpdmVyIGJ1Zy4KKyAgICBpZiAo
SXNBTUQoKSAmJiBJc0QzRDExKCkpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qg
c2tpcHBlZCBvbiBBTUQgRDNEMTEuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbU9yaWdpbmFsRkJP
KTsKKworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9C
SVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOworCisgICAgZHJhd1F1YWQobUNoZWNrZXJQcm9n
cmFtLCAicG9zaXRpb24iLCAwLjhmKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisg
ICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUl9BTkdMRSwgbVVzZXJGQk8p
OworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJBTUVCVUZGRVJfQU5HTEUsIG1Pcmln
aW5hbEZCTyk7CisKKyAgICBnbENsZWFyQ29sb3IoMS4wLCAxLjAsIDEuMCwgMS4wKTsKKyAgICBn
bENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RF
TkNJTF9CVUZGRVJfQklUKTsKKyAgICAKKyAgICBnbFNjaXNzb3IoZ2V0V2luZG93V2lkdGgoKSAv
IDIsIDAsIGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSk7CisgICAgZ2xF
bmFibGUoR0xfU0NJU1NPUl9URVNUKTsKKworICAgIGdsQmxpdEZyYW1lYnVmZmVyQU5HTEUoMCwg
MCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIDAsIDAsIGdldFdpbmRvd1dp
ZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X0NPTE9SX0JVRkZFUl9CSVQsIEdMX05FQVJFU1QpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7CisKKyAgICBnbERpc2FibGUoR0xfU0NJU1NPUl9URVNUKTsKKworICAgIGdsQmluZEZyYW1l
YnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtVXNlckZCTyk7CisgICAgCisgICAgRVhQRUNUX1BJWEVM
X0VRKCAgICBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgICAgIGdldFdpbmRvd0hlaWdodCgpIC8gNCwg
MjU1LCAyNTUsIDI1NSwgMjU1KTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoMyAqIGdldFdpbmRvd1dp
ZHRoKCkgLyA0LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAgIDAsIDI1NSwgICAwLCAyNTUp
OworICAgIEVYUEVDVF9QSVhFTF9FUSgzICogZ2V0V2luZG93V2lkdGgoKSAvIDQsIDMgKiBnZXRX
aW5kb3dIZWlnaHQoKSAvIDQsIDI1NSwgICAwLCAgIDAsIDI1NSk7CisgICAgRVhQRUNUX1BJWEVM
X0VRKCAgICBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgMyAqIGdldFdpbmRvd0hlaWdodCgpIC8gNCwg
MjU1LCAyNTUsIDI1NSwgMjU1KTsKK30KKworLy8gYmxpdCBmcm9tIHVzZXItY3JlYXRlZCBGQk8g
dG8gc3lzdGVtIGZyYW1lYnVmZmVyLCB1c2luZyByZWdpb24gbGFyZ2VyIHRoYW4gYnVmZmVyLgor
VEVTVF9QKEJsaXRGcmFtZWJ1ZmZlckFOR0xFVGVzdCwgT3ZlcnNpemVkQmxpdCkKK3sKKyAgICBn
bEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbVVzZXJGQk8pOworCisgICAgZ2xDbGVh
cihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxf
QlVGRkVSX0JJVCk7CisKKyAgICBkcmF3UXVhZChtQ2hlY2tlclByb2dyYW0sICJwb3NpdGlvbiIs
IDAuOGYpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbEJpbmRGcmFtZWJ1
ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSX0FOR0xFLCBtT3JpZ2luYWxGQk8pOworICAgIGdsQmlu
ZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJBTUVCVUZGRVJfQU5HTEUsIG1Vc2VyRkJPKTsKKworICAg
IGdsQ2xlYXJDb2xvcigxLjAsIDEuMCwgMS4wLCAxLjApOworICAgIGdsQ2xlYXIoR0xfQ09MT1Jf
QlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQp
OworCisgICAgZ2xCbGl0RnJhbWVidWZmZXJBTkdMRSgwLCAwLCBnZXRXaW5kb3dXaWR0aCgpICog
MiwgZ2V0V2luZG93SGVpZ2h0KCkgKiAyLCAwLCAwLCBnZXRXaW5kb3dXaWR0aCgpICogMiwgZ2V0
V2luZG93SGVpZ2h0KCkgKiAyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTE9S
X0JVRkZFUl9CSVQsIEdMX05FQVJFU1QpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisK
KyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbU9yaWdpbmFsRkJPKTsKKwor
ICAgIEVYUEVDVF9QSVhFTF9FUSggICAgZ2V0V2luZG93V2lkdGgoKSAvIDQsICAgICBnZXRXaW5k
b3dIZWlnaHQoKSAvIDQsIDI1NSwgICAwLCAgIDAsIDI1NSk7CisgICAgRVhQRUNUX1BJWEVMX0VR
KDMgKiBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgICAgIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgICAw
LCAyNTUsICAgMCwgMjU1KTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoMyAqIGdldFdpbmRvd1dpZHRo
KCkgLyA0LCAzICogZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAyNTUsICAgMCwgICAwLCAyNTUpOwor
ICAgIEVYUEVDVF9QSVhFTF9FUSggICAgZ2V0V2luZG93V2lkdGgoKSAvIDQsIDMgKiBnZXRXaW5k
b3dIZWlnaHQoKSAvIDQsICAgMCwgMjU1LCAgIDAsIDI1NSk7Cit9CisKKy8vIGJsaXQgZnJvbSBz
eXN0ZW0gRkJPIHRvIHVzZXItY3JlYXRlZCBmcmFtZWJ1ZmZlciwgdXNpbmcgcmVnaW9uIGxhcmdl
ciB0aGFuIGJ1ZmZlci4KK1RFU1RfUChCbGl0RnJhbWVidWZmZXJBTkdMRVRlc3QsIFJldmVyc2VP
dmVyc2l6ZWRCbGl0KQoreworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBt
T3JpZ2luYWxGQk8pOworCisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQ
VEhfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7CisKKyAgICBkcmF3UXVhZCht
Q2hlY2tlclByb2dyYW0sICJwb3NpdGlvbiIsIDAuOGYpOworCisgICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7CisKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSX0FOR0xF
LCBtVXNlckZCTyk7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZFUl9B
TkdMRSwgbU9yaWdpbmFsRkJPKTsKKworICAgIGdsQ2xlYXJDb2xvcigxLjAsIDEuMCwgMS4wLCAx
LjApOworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9C
SVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOworCisgICAgZ2xCbGl0RnJhbWVidWZmZXJBTkdM
RSgwLCAwLCBnZXRXaW5kb3dXaWR0aCgpICogMiwgZ2V0V2luZG93SGVpZ2h0KCkgKiAyLCAwLCAw
LCBnZXRXaW5kb3dXaWR0aCgpICogMiwgZ2V0V2luZG93SGVpZ2h0KCkgKiAyLCAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX05FQVJFU1QpOworICAg
IEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVC
VUZGRVIsIG1Vc2VyRkJPKTsKKworICAgIEVYUEVDVF9QSVhFTF9FUSggICAgZ2V0V2luZG93V2lk
dGgoKSAvIDQsICAgICBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIDI1NSwgICAwLCAgIDAsIDI1NSk7
CisgICAgRVhQRUNUX1BJWEVMX0VRKDMgKiBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgICAgIGdldFdp
bmRvd0hlaWdodCgpIC8gNCwgICAwLCAyNTUsICAgMCwgMjU1KTsKKyAgICBFWFBFQ1RfUElYRUxf
RVEoMyAqIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAzICogZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAy
NTUsICAgMCwgICAwLCAyNTUpOworICAgIEVYUEVDVF9QSVhFTF9FUSggICAgZ2V0V2luZG93V2lk
dGgoKSAvIDQsIDMgKiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsICAgMCwgMjU1LCAgIDAsIDI1NSk7
Cit9CisKKy8vIGJsaXQgZnJvbSB1c2VyLWNyZWF0ZWQgRkJPIHRvIHN5c3RlbSBmcmFtZWJ1ZmZl
ciwgd2l0aCBkZXB0aCBidWZmZXIuCitURVNUX1AoQmxpdEZyYW1lYnVmZmVyQU5HTEVUZXN0LCBC
bGl0V2l0aERlcHRoKQoreworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBt
VXNlckZCTyk7CisKKyAgICBnbERlcHRoTWFzayhHTF9UUlVFKTsKKyAgICBnbENsZWFyKEdMX0NP
TE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJf
QklUKTsKKworICAgIGdsRW5hYmxlKEdMX0RFUFRIX1RFU1QpOworCisgICAgZHJhd1F1YWQobUNo
ZWNrZXJQcm9ncmFtLCAicG9zaXRpb24iLCAwLjNmKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOworCisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUl9BTkdMRSwg
bU9yaWdpbmFsRkJPKTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVS
X0FOR0xFLCBtVXNlckZCTyk7CisKKyAgICBnbENsZWFyQ29sb3IoMS4wLCAxLjAsIDEuMCwgMS4w
KTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklU
IHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKKworICAgIGdsQmxpdEZyYW1lYnVmZmVyQU5HTEUo
MCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIDAsIDAsIGdldFdpbmRv
d1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklULCBHTF9ORUFSRVNUKTsK
KyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZS
QU1FQlVGRkVSLCBtT3JpZ2luYWxGQk8pOworCisgICAgLy8gaWYgYmxpdCBpcyBoYXBwZW5pbmcg
Y29ycmVjdGx5LCB0aGlzIHF1YWQgd2lsbCBub3QgZHJhdywgYmVjYXVzZSBpdCBpcyBiZWhpbmQg
dGhlIGJsaXR0ZWQgb25lCisgICAgZHJhd1F1YWQobUJsdWVQcm9ncmFtLCAicG9zaXRpb24iLCAw
LjhmKTsKKworICAgIGdsRGlzYWJsZShHTF9ERVBUSF9URVNUKTsKKworICAgIEVYUEVDVF9QSVhF
TF9FUSggICAgZ2V0V2luZG93V2lkdGgoKSAvIDQsICAgICBnZXRXaW5kb3dIZWlnaHQoKSAvIDQs
IDI1NSwgICAwLCAgIDAsIDI1NSk7CisgICAgRVhQRUNUX1BJWEVMX0VRKDMgKiBnZXRXaW5kb3dX
aWR0aCgpIC8gNCwgICAgIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgICAwLCAyNTUsICAgMCwgMjU1
KTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoMyAqIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAzICogZ2V0
V2luZG93SGVpZ2h0KCkgLyA0LCAyNTUsICAgMCwgICAwLCAyNTUpOworICAgIEVYUEVDVF9QSVhF
TF9FUSggICAgZ2V0V2luZG93V2lkdGgoKSAvIDQsIDMgKiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQs
ICAgMCwgMjU1LCAgIDAsIDI1NSk7Cit9CisKKy8vIGJsaXQgZnJvbSBzeXN0ZW0gRkJPIHRvIHVz
ZXItY3JlYXRlZCBmcmFtZWJ1ZmZlciwgd2l0aCBkZXB0aCBidWZmZXIuCitURVNUX1AoQmxpdEZy
YW1lYnVmZmVyQU5HTEVUZXN0LCBSZXZlcnNlQmxpdFdpdGhEZXB0aCkKK3sKKyAgICBnbEJpbmRG
cmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbU9yaWdpbmFsRkJPKTsKKworICAgIGdsQ2xlYXIo
R0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JV
RkZFUl9CSVQpOworCisgICAgZ2xFbmFibGUoR0xfREVQVEhfVEVTVCk7CisKKyAgICBkcmF3UXVh
ZChtQ2hlY2tlclByb2dyYW0sICJwb3NpdGlvbiIsIDAuM2YpOworCisgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7CisKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSX0FO
R0xFLCBtVXNlckZCTyk7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZF
Ul9BTkdMRSwgbU9yaWdpbmFsRkJPKTsKKworICAgIGdsQ2xlYXJDb2xvcigxLjBmLCAxLjBmLCAx
LjBmLCAxLjBmKTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9C
VUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKKworICAgIGdsQmxpdEZyYW1lYnVm
ZmVyQU5HTEUoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIDAsIDAs
IGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklULCBHTF9O
RUFSRVNUKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsQmluZEZyYW1lYnVm
ZmVyKEdMX0ZSQU1FQlVGRkVSLCBtVXNlckZCTyk7CisKKyAgICAvLyBpZiBibGl0IGlzIGhhcHBl
bmluZyBjb3JyZWN0bHksIHRoaXMgcXVhZCB3aWxsIG5vdCBkcmF3LCBiZWNhdXNlIGl0IGlzIGJl
aGluZCB0aGUgYmxpdHRlZCBvbmUKKworICAgIGRyYXdRdWFkKG1CbHVlUHJvZ3JhbSwgInBvc2l0
aW9uIiwgMC44Zik7CisKKyAgICBnbERpc2FibGUoR0xfREVQVEhfVEVTVCk7CisKKyAgICBFWFBF
Q1RfUElYRUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAgICAgZ2V0V2luZG93SGVpZ2h0
KCkgLyA0LCAyNTUsICAgMCwgICAwLCAyNTUpOworICAgIEVYUEVDVF9QSVhFTF9FUSgzICogZ2V0
V2luZG93V2lkdGgoKSAvIDQsICAgICBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsICAgMCwgMjU1LCAg
IDAsIDI1NSk7CisgICAgRVhQRUNUX1BJWEVMX0VRKDMgKiBnZXRXaW5kb3dXaWR0aCgpIC8gNCwg
MyAqIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgMjU1LCAgIDAsICAgMCwgMjU1KTsKKyAgICBFWFBF
Q1RfUElYRUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAzICogZ2V0V2luZG93SGVpZ2h0
KCkgLyA0LCAgIDAsIDI1NSwgICAwLCAyNTUpOworfQorCisvLyBibGl0IGZyb20gb25lIHJlZ2lv
biBvZiB0aGUgc3lzdGVtIGZibyB0byBhbm90aGVyLS0gdGhpcyBzaG91bGQgZmFpbC4KK1RFU1Rf
UChCbGl0RnJhbWVidWZmZXJBTkdMRVRlc3QsIEJsaXRTYW1lQnVmZmVyT3JpZ2luYWwpCit7Cisg
ICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1PcmlnaW5hbEZCTyk7CisKKyAg
ICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xf
U1RFTkNJTF9CVUZGRVJfQklUKTsKKworICAgIGRyYXdRdWFkKG1DaGVja2VyUHJvZ3JhbSwgInBv
c2l0aW9uIiwgMC4zZik7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsQmxp
dEZyYW1lYnVmZmVyQU5HTEUoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hl
aWdodCgpLCBnZXRXaW5kb3dXaWR0aCgpIC8gMiwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2lu
ZG93SGVpZ2h0KCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09MT1JfQlVGRkVS
X0JJVCwgR0xfTkVBUkVTVCk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKK30KKworLy8gYmxpdCBmcm9tIG9uZSByZWdpb24gb2YgdGhlIHN5c3RlbSBmYm8gdG8g
YW5vdGhlci4KK1RFU1RfUChCbGl0RnJhbWVidWZmZXJBTkdMRVRlc3QsIEJsaXRTYW1lQnVmZmVy
VXNlcikKK3sKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbVVzZXJGQk8p
OworCisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJ
VCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7CisKKyAgICBkcmF3UXVhZChtQ2hlY2tlclByb2dy
YW0sICJwb3NpdGlvbiIsIDAuM2YpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAg
ICBnbEJsaXRGcmFtZWJ1ZmZlckFOR0xFKDAsIDAsIGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRX
aW5kb3dIZWlnaHQoKSwgZ2V0V2luZG93V2lkdGgoKSAvIDIsIDAsIGdldFdpbmRvd1dpZHRoKCks
IGdldFdpbmRvd0hlaWdodCgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTE9S
X0JVRkZFUl9CSVQsIEdMX05FQVJFU1QpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElE
X09QRVJBVElPTik7Cit9CisKK1RFU1RfUChCbGl0RnJhbWVidWZmZXJBTkdMRVRlc3QsIEJsaXRQ
YXJ0aWFsQ29sb3IpCit7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1V
c2VyRkJPKTsKKworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JV
RkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOworCisgICAgZHJhd1F1YWQobUNoZWNr
ZXJQcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OworCisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUl9BTkdMRSwgbU9y
aWdpbmFsRkJPKTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVSX0FO
R0xFLCBtVXNlckZCTyk7CisKKyAgICBnbENsZWFyQ29sb3IoMS4wLCAxLjAsIDEuMCwgMS4wKTsK
KyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVR8IEdMX0RFUFRIX0JVRkZFUl9CSVQgfCBH
TF9TVEVOQ0lMX0JVRkZFUl9CSVQpOworCisgICAgZ2xCbGl0RnJhbWVidWZmZXJBTkdMRSgwLCAw
LCBnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCAwLCBnZXRXaW5k
b3dIZWlnaHQoKSAvIDIsIGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX05FQVJF
U1QpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbEJpbmRGcmFtZWJ1ZmZl
cihHTF9GUkFNRUJVRkZFUiwgbU9yaWdpbmFsRkJPKTsKKworICAgIEVYUEVDVF9QSVhFTF9FUSgg
ICAgZ2V0V2luZG93V2lkdGgoKSAvIDQsICAgICBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIDI1NSwg
MjU1LCAyNTUsIDI1NSk7CisgICAgRVhQRUNUX1BJWEVMX0VRKDMgKiBnZXRXaW5kb3dXaWR0aCgp
IC8gNCwgICAgIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgMjU1LCAyNTUsIDI1NSwgMjU1KTsKKyAg
ICBFWFBFQ1RfUElYRUxfRVEoMyAqIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAzICogZ2V0V2luZG93
SGVpZ2h0KCkgLyA0LCAyNTUsIDI1NSwgMjU1LCAyNTUpOworICAgIEVYUEVDVF9QSVhFTF9FUSgg
ICAgZ2V0V2luZG93V2lkdGgoKSAvIDQsIDMgKiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIDI1NSwg
ICAwLCAgIDAsIDI1NSk7Cit9CisKK1RFU1RfUChCbGl0RnJhbWVidWZmZXJBTkdMRVRlc3QsIEJs
aXREaWZmZXJlbnRTaXplcykKK3sKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZF
UiwgbVVzZXJGQk8pOworCisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQ
VEhfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7CisKKyAgICBkcmF3UXVhZCht
Q2hlY2tlclByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworCisgICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7CisKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSX0FOR0xF
LCBtU21hbGxGQk8pOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJBTUVCVUZGRVJf
QU5HTEUsIG1Vc2VyRkJPKTsKKworICAgIGdsQ2xlYXJDb2xvcigxLjAsIDEuMCwgMS4wLCAxLjAp
OworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVHwgR0xfREVQVEhfQlVGRkVSX0JJVCB8
IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7CisKKyAgICBnbEJsaXRGcmFtZWJ1ZmZlckFOR0xFKDAs
IDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAwLCAwLCBnZXRXaW5kb3dX
aWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X0NPTE9SX0JVRkZFUl9CSVQsIEdMX05FQVJFU1QpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7CisKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbVNtYWxsRkJPKTsK
KworICAgIEVYUEVDVF9QSVhFTF9FUSggICAgZ2V0V2luZG93V2lkdGgoKSAvIDQsICAgICBnZXRX
aW5kb3dIZWlnaHQoKSAvIDQsIDI1NSwgICAwLCAgIDAsIDI1NSk7CisKKyAgICBFWFBFQ1RfR0xf
Tk9fRVJST1IoKTsKK30KKworVEVTVF9QKEJsaXRGcmFtZWJ1ZmZlckFOR0xFVGVzdCwgQmxpdFdp
dGhNaXNzaW5nQXR0YWNobWVudHMpCit7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVC
VUZGRVIsIG1Db2xvck9ubHlGQk8pOworCisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklU
KTsKKyAgICBkcmF3UXVhZChtQ2hlY2tlclByb2dyYW0sICJwb3NpdGlvbiIsIDAuM2YpOworCisg
ICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUl9BTkdMRSwgbU9yaWdpbmFs
RkJPKTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVSX0FOR0xFLCBt
Q29sb3JPbmx5RkJPKTsKKworICAgIGdsQ2xlYXJDb2xvcigxLjAsIDEuMCwgMS4wLCAxLjApOwor
ICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVHwgR0xfREVQVEhfQlVGRkVSX0JJVCB8IEdM
X1NURU5DSUxfQlVGRkVSX0JJVCk7CisKKyAgICAvLyBkZXB0aCBibGl0IHJlcXVlc3Qgc2hvdWxk
IGJlIHNpbGVudGx5IGlnbm9yZWQsIGJlY2F1c2UgdGhlIHJlYWQgRkJPIGhhcyBubyBkZXB0aCBh
dHRhY2htZW50CisgICAgZ2xCbGl0RnJhbWVidWZmZXJBTkdMRSgwLCAwLCBnZXRXaW5kb3dXaWR0
aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93
SGVpZ2h0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT0xPUl9CVUZGRVJfQklU
IHwgR0xfREVQVEhfQlVGRkVSX0JJVCwgR0xfTkVBUkVTVCk7IAorCisgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7CisKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbU9yaWdp
bmFsRkJPKTsKKworICAgIEVYUEVDVF9QSVhFTF9FUSggICAgZ2V0V2luZG93V2lkdGgoKSAvIDQs
ICAgICBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIDI1NSwgICAwLCAgIDAsIDI1NSk7CisgICAgRVhQ
RUNUX1BJWEVMX0VRKDMgKiBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgICAgIGdldFdpbmRvd0hlaWdo
dCgpIC8gNCwgICAwLCAyNTUsICAgMCwgMjU1KTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoMyAqIGdl
dFdpbmRvd1dpZHRoKCkgLyA0LCAzICogZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAyNTUsICAgMCwg
ICAwLCAyNTUpOworICAgIEVYUEVDVF9QSVhFTF9FUSggICAgZ2V0V2luZG93V2lkdGgoKSAvIDQs
IDMgKiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsICAgMCwgMjU1LCAgIDAsIDI1NSk7CisKKyAgICAv
LyB1bmxpa2UgaW4gdGhlIGRlcHRoIGJsaXQgdGVzdHMsIHRoaXMgKnNob3VsZCogZHJhdyBhIGJs
dWUgcXVhZCwgYmVjYXVzZSBkZXB0aCBpbmZvCisgICAgLy8gaGFzIG5vdCBiZWVuIGNvcGllZAor
ICAgIGdsRW5hYmxlKEdMX0RFUFRIX1RFU1QpOworICAgIGRyYXdRdWFkKG1CbHVlUHJvZ3JhbSwg
InBvc2l0aW9uIiwgMC44Zik7CisgICAgZ2xEaXNhYmxlKEdMX0RFUFRIX1RFU1QpOworCisgICAg
RVhQRUNUX1BJWEVMX0VRKCAgICBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgICAgIGdldFdpbmRvd0hl
aWdodCgpIC8gNCwgICAwLCAgIDAsIDI1NSwgMjU1KTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoMyAq
IGdldFdpbmRvd1dpZHRoKCkgLyA0LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAgIDAsICAg
MCwgMjU1LCAyNTUpOworICAgIEVYUEVDVF9QSVhFTF9FUSgzICogZ2V0V2luZG93V2lkdGgoKSAv
IDQsIDMgKiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsICAgMCwgICAwLCAyNTUsIDI1NSk7CisgICAg
RVhQRUNUX1BJWEVMX0VRKCAgICBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgMyAqIGdldFdpbmRvd0hl
aWdodCgpIC8gNCwgICAwLCAgIDAsIDI1NSwgMjU1KTsKK30KKworVEVTVF9QKEJsaXRGcmFtZWJ1
ZmZlckFOR0xFVGVzdCwgQmxpdFN0ZW5jaWwpCit7CisgICAgLy8gVE9ETyhqbWFkaWxsKTogRmln
dXJlIG91dCBpZiB3ZSBjYW4gZml4IHRoaXMgb24gRDNEOS4KKyAgICAvLyBodHRwczovL2NvZGUu
Z29vZ2xlLmNvbS9wL2FuZ2xlcHJvamVjdC9pc3N1ZXMvZGV0YWlsP2lkPTgwOQorICAgIGlmIChJ
c0ludGVsKCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9U
WVBFX0QzRDlfQU5HTEUpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBl
ZCBvbiBJbnRlbCBEM0Q5LiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1Vc2VyRkJPKTsKKworICAg
IGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgLy8gZmlsbCB0aGUgc3RlbmNpbCBi
dWZmZXIgd2l0aCAweDEKKyAgICBnbFN0ZW5jaWxGdW5jKEdMX0FMV0FZUywgMHgxLCAweEZGKTsK
KyAgICBnbFN0ZW5jaWxPcChHTF9SRVBMQUNFLCBHTF9SRVBMQUNFLCBHTF9SRVBMQUNFKTsKKyAg
ICBnbEVuYWJsZShHTF9TVEVOQ0lMX1RFU1QpOyAKKyAgICBkcmF3UXVhZChtQ2hlY2tlclByb2dy
YW0sICJwb3NpdGlvbiIsIDAuM2YpOworCisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRFJBV19G
UkFNRUJVRkZFUl9BTkdMRSwgbU9yaWdpbmFsRkJPKTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihH
TF9SRUFEX0ZSQU1FQlVGRkVSX0FOR0xFLCBtVXNlckZCTyk7CisKKyAgICBnbENsZWFyQ29sb3Io
MS4wLCAxLjAsIDEuMCwgMS4wKTsKKyAgICBnbENsZWFyU3RlbmNpbCgweDApOworICAgIGdsQ2xl
YXIoR0xfQ09MT1JfQlVGRkVSX0JJVHwgR0xfREVQVEhfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxf
QlVGRkVSX0JJVCk7CisKKyAgICAvLyBkZXB0aCBibGl0IHJlcXVlc3Qgc2hvdWxkIGJlIHNpbGVu
dGx5IGlnbm9yZWQsIGJlY2F1c2UgdGhlIHJlYWQgRkJPIGhhcyBubyBkZXB0aCBhdHRhY2htZW50
CisgICAgZ2xCbGl0RnJhbWVidWZmZXJBTkdMRSgwLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRX
aW5kb3dIZWlnaHQoKSwgMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfU1RF
TkNJTF9CVUZGRVJfQklULCBHTF9ORUFSRVNUKTsgCisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1Io
KTsKKworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtT3JpZ2luYWxGQk8p
OworCisgICAgRVhQRUNUX1BJWEVMX0VRKCAgICBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgICAgIGdl
dFdpbmRvd0hlaWdodCgpIC8gNCwgMjU1LCAgIDAsICAgMCwgMjU1KTsKKyAgICBFWFBFQ1RfUElY
RUxfRVEoMyAqIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkgLyA0
LCAgIDAsIDI1NSwgICAwLCAyNTUpOworICAgIEVYUEVDVF9QSVhFTF9FUSgzICogZ2V0V2luZG93
V2lkdGgoKSAvIDQsIDMgKiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIDI1NSwgICAwLCAgIDAsIDI1
NSk7CisgICAgRVhQRUNUX1BJWEVMX0VRKCAgICBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgMyAqIGdl
dFdpbmRvd0hlaWdodCgpIC8gNCwgICAwLCAyNTUsICAgMCwgMjU1KTsKKworICAgIGdsU3RlbmNp
bEZ1bmMoR0xfRVFVQUwsIDB4MSwgMHhGRik7IC8vIG9ubHkgcGFzcyBpZiBzdGVuY2lsIGJ1ZmZl
ciBhdCBwaXhlbCByZWFkcyAweDEKKyAgICBkcmF3UXVhZChtQmx1ZVByb2dyYW0sICJwb3NpdGlv
biIsIDAuOGYpOyAvLyBibHVlIHF1YWQgd2lsbCBkcmF3IGlmIHN0ZW5jaWwgYnVmZmVyIHdhcyBj
b3BpZWQKKyAgICBnbERpc2FibGUoR0xfU1RFTkNJTF9URVNUKTsKKworICAgIEVYUEVDVF9QSVhF
TF9FUSggICAgZ2V0V2luZG93V2lkdGgoKSAvIDQsICAgICBnZXRXaW5kb3dIZWlnaHQoKSAvIDQs
ICAgMCwgICAwLCAyNTUsIDI1NSk7CisgICAgRVhQRUNUX1BJWEVMX0VRKDMgKiBnZXRXaW5kb3dX
aWR0aCgpIC8gNCwgICAgIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgICAwLCAgIDAsIDI1NSwgMjU1
KTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoMyAqIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAzICogZ2V0
V2luZG93SGVpZ2h0KCkgLyA0LCAgIDAsICAgMCwgMjU1LCAyNTUpOworICAgIEVYUEVDVF9QSVhF
TF9FUSggICAgZ2V0V2luZG93V2lkdGgoKSAvIDQsIDMgKiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQs
ICAgMCwgICAwLCAyNTUsIDI1NSk7Cit9CisKKy8vIG1ha2Ugc3VyZSB0aGF0IGF0dGVtcHRpbmcg
dG8gYmxpdCBhIHBhcnRpYWwgZGVwdGggYnVmZmVyIGlzc3VlcyBhbiBlcnJvcgorVEVTVF9QKEJs
aXRGcmFtZWJ1ZmZlckFOR0xFVGVzdCwgQmxpdFBhcnRpYWxEZXB0aFN0ZW5jaWwpCit7CisgICAg
Z2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1Vc2VyRkJPKTsKKworICAgIGdsQ2xl
YXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lM
X0JVRkZFUl9CSVQpOworCisgICAgZHJhd1F1YWQobUNoZWNrZXJQcm9ncmFtLCAicG9zaXRpb24i
LCAwLjVmKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xCaW5kRnJhbWVi
dWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUl9BTkdMRSwgbU9yaWdpbmFsRkJPKTsKKyAgICBnbEJp
bmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVSX0FOR0xFLCBtVXNlckZCTyk7CisKKyAg
ICBnbEJsaXRGcmFtZWJ1ZmZlckFOR0xFKDAsIDAsIGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRX
aW5kb3dIZWlnaHQoKSAvIDIsIDAsIDAsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0
V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgR0xfREVQVEhfQlVGRkVS
X0JJVCwgR0xfTkVBUkVTVCk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKK30KKworLy8gVGVzdCBibGl0IHdpdGggTVJUIGZyYW1lYnVmZmVycworVEVTVF9QKEJs
aXRGcmFtZWJ1ZmZlckFOR0xFVGVzdCwgQmxpdE1SVCkKK3sKKyAgICBpZiAoIWV4dGVuc2lvbkVu
YWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBHTGVudW0gZHJhd0J1ZmZlcnNbXSA9IHsgR0xfQ09MT1JfQVRUQUNITUVOVDBf
RVhULCBHTF9DT0xPUl9BVFRBQ0hNRU5UMV9FWFQgfTsKKworICAgIGdsQmluZEZyYW1lYnVmZmVy
KEdMX0ZSQU1FQlVGRkVSLCBtTVJURkJPKTsKKyAgICBnbERyYXdCdWZmZXJzRVhUKDIsIGRyYXdC
dWZmZXJzKTsKKworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtQ29sb3JP
bmx5RkJPKTsKKworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgCisgICAg
ZHJhd1F1YWQobUNoZWNrZXJQcm9ncmFtLCAicG9zaXRpb24iLCAwLjhmKTsKKyAgICAKKyAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJB
TUVCVUZGRVJfQU5HTEUsIG1Db2xvck9ubHlGQk8pOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdM
X0RSQVdfRlJBTUVCVUZGRVJfQU5HTEUsIG1NUlRGQk8pOworCisgICAgZ2xCbGl0RnJhbWVidWZm
ZXJBTkdMRSgwLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgMCwgMCwg
Z2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTkVBUkVTVCk7CisgICAgCisgICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZF
UiwgbU1SVEZCTyk7CisKKyAgICBFWFBFQ1RfUElYRUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkg
LyA0LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAyNTUsICAgMCwgICAwLCAyNTUpOworICAg
IEVYUEVDVF9QSVhFTF9FUSgzICogZ2V0V2luZG93V2lkdGgoKSAvIDQsICAgICBnZXRXaW5kb3dI
ZWlnaHQoKSAvIDQsICAgMCwgMjU1LCAgIDAsIDI1NSk7CisgICAgRVhQRUNUX1BJWEVMX0VRKDMg
KiBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgMyAqIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgMjU1LCAg
IDAsICAgMCwgMjU1KTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkg
LyA0LCAzICogZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAgIDAsIDI1NSwgICAwLCAyNTUpOworCisg
ICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNI
TUVOVDFfRVhULCBHTF9URVhUVVJFXzJELCAwLCAwKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVy
ZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwg
bU1SVENvbG9yQnVmZmVyMCwgMCk7CisKKyAgICBFWFBFQ1RfUElYRUxfRVEoICAgIGdldFdpbmRv
d1dpZHRoKCkgLyA0LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAyNTUsICAgMCwgICAwLCAy
NTUpOworICAgIEVYUEVDVF9QSVhFTF9FUSgzICogZ2V0V2luZG93V2lkdGgoKSAvIDQsICAgICBn
ZXRXaW5kb3dIZWlnaHQoKSAvIDQsICAgMCwgMjU1LCAgIDAsIDI1NSk7CisgICAgRVhQRUNUX1BJ
WEVMX0VRKDMgKiBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgMyAqIGdldFdpbmRvd0hlaWdodCgpIC8g
NCwgMjU1LCAgIDAsICAgMCwgMjU1KTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoICAgIGdldFdpbmRv
d1dpZHRoKCkgLyA0LCAzICogZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAgIDAsIDI1NSwgICAwLCAy
NTUpOworCisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09M
T1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1NUlRDb2xvckJ1ZmZlcjAsIDApOworICAg
IGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1F
TlQxX0VYVCwgR0xfVEVYVFVSRV8yRCwgbU1SVENvbG9yQnVmZmVyMSwgMCk7Cit9CisKKy8vIE1h
a2Ugc3VyZSB0aGF0IGF0dGVtcHRzIHRvIHN0cmV0Y2ggaW4gYSBibGl0IGNhbGwgaXNzdWUgYW4g
ZXJyb3IKK1RFU1RfUChCbGl0RnJhbWVidWZmZXJBTkdMRVRlc3QsIEVycm9yU3RyZXRjaGluZykK
K3sKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbVVzZXJGQk8pOworCisg
ICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCB8IEdM
X1NURU5DSUxfQlVGRkVSX0JJVCk7CisKKyAgICBkcmF3UXVhZChtQ2hlY2tlclByb2dyYW0sICJw
b3NpdGlvbiIsIDAuNWYpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbEJp
bmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSX0FOR0xFLCBtT3JpZ2luYWxGQk8pOwor
ICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJBTUVCVUZGRVJfQU5HTEUsIG1Vc2VyRkJP
KTsKKworICAgIGdsQmxpdEZyYW1lYnVmZmVyQU5HTEUoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSAv
IDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgMCwgMCwgCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgR0xfQ09MT1JfQlVGRkVS
X0JJVCwgR0xfTkVBUkVTVCk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKK30KKworLy8gTWFrZSBzdXJlIHRoYXQgYXR0ZW1wdHMgdG8gZmxpcCBpbiBhIGJsaXQg
Y2FsbCBpc3N1ZSBhbiBlcnJvcgorVEVTVF9QKEJsaXRGcmFtZWJ1ZmZlckFOR0xFVGVzdCwgRXJy
b3JGbGlwcGluZykKK3sKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbVVz
ZXJGQk8pOworCisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVG
RkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7CisKKyAgICBkcmF3UXVhZChtQ2hlY2tl
clByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
CisKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSX0FOR0xFLCBtT3Jp
Z2luYWxGQk8pOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJBTUVCVUZGRVJfQU5H
TEUsIG1Vc2VyRkJPKTsKKworICAgIGdsQmxpdEZyYW1lYnVmZmVyQU5HTEUoMCwgMCwgZ2V0V2lu
ZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgZ2V0V2luZG93V2lkdGgoKSAv
IDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LCAwLCBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9ORUFSRVNUKTsKKyAgICBFWFBFQ1RfR0xfRVJS
T1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitURVNUX1AoQmxpdEZyYW1lYnVmZmVyQU5H
TEVUZXN0LCBFcnJvcnMpCit7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIs
IG1Vc2VyRkJPKTsKKworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRI
X0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOworCisgICAgZHJhd1F1YWQobUNo
ZWNrZXJQcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOworCisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUl9BTkdMRSwg
bU9yaWdpbmFsRkJPKTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVS
X0FOR0xFLCBtVXNlckZCTyk7CisKKyAgICBnbEJsaXRGcmFtZWJ1ZmZlckFOR0xFKDAsIDAsIGdl
dFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAwLCAwLCBnZXRXaW5kb3dXaWR0aCgp
LCBnZXRXaW5kb3dIZWlnaHQoKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT0xP
Ul9CVUZGRVJfQklULCBHTF9MSU5FQVIpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElE
X0VOVU0pOworCisgICAgZ2xCbGl0RnJhbWVidWZmZXJBTkdMRSgwLCAwLCBnZXRXaW5kb3dXaWR0
aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93
SGVpZ2h0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT0xPUl9CVUZGRVJfQklU
IHwgMjM0LCBHTF9ORUFSRVNUKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxV
RSk7CisKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSX0FOR0xFLCBt
RGlmZkZvcm1hdEZCTyk7CisKKyAgICBnbEJsaXRGcmFtZWJ1ZmZlckFOR0xFKDAsIDAsIGdldFdp
bmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAwLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBn
ZXRXaW5kb3dIZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTE9SX0JV
RkZFUl9CSVQsIEdMX05FQVJFU1QpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09Q
RVJBVElPTik7CisKKyAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZm
ZXJfbXVsdGlzYW1wbGUiKSkKKyAgICB7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX1JF
QURfRlJBTUVCVUZGRVIsIG1CR1JBTXVsdGlzYW1wbGVkRkJPKTsKKyAgICAgICAgZ2xCaW5kRnJh
bWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUiwgbVJHQkFGQk8pOworICAgICAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKKworICAgICAgICBnbEJsaXRGcmFtZWJ1ZmZlckFOR0xFKDAsIDAsIGdl
dFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAwLCAwLCBnZXRXaW5kb3dXaWR0aCgp
LCBnZXRXaW5kb3dIZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9D
T0xPUl9CVUZGRVJfQklULCBHTF9ORUFSRVNUKTsKKyAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICB9CisKK30KKworLy8gVE9ETyhnZW9mZmxhbmcpOiBG
aXggdGhlIGRlcGVuZGVuY2Ugb24gZ2xCbGl0RnJhbWVidWZmZXJBTkdMRSB3aXRob3V0IGNoZWNr
cyBhbmQgYXNzdW1pbmcgdGhlCisvLyBkZWZhdWx0IGZyYW1lYnVmZmVyIGlzIEJHUkEgdG8gZW5h
YmxlIHRoZSBHTCBhbmQgR0xFUyBiYWNrZW5kcy4gKGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTI4OSkK
KworY2xhc3MgQmxpdEZyYW1lYnVmZmVyVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJv
dGVjdGVkOgorICAgIEJsaXRGcmFtZWJ1ZmZlclRlc3QoKQorICAgIHsKKyAgICAgICAgc2V0V2lu
ZG93V2lkdGgoMjU2KTsKKyAgICAgICAgc2V0V2luZG93SGVpZ2h0KDI1Nik7CisgICAgICAgIHNl
dENvbmZpZ1JlZEJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICAg
ICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsK
KyAgICAgICAgc2V0Q29uZmlnRGVwdGhCaXRzKDI0KTsKKyAgICAgICAgc2V0Q29uZmlnU3RlbmNp
bEJpdHMoOCk7CisgICAgfQorfTsKKworLy8gVGVzdHMgcmVzb2x2aW5nIGEgbXVsdGlzYW1wbGUg
ZGVwdGggYnVmZmVyLgorVEVTVF9QKEJsaXRGcmFtZWJ1ZmZlclRlc3QsIE11bHRpc2FtcGxlRGVw
dGgpCit7CisgICAgLy8gVE9ETyhqbWFkaWxsKTogVHJpYWdlIHRoaXMgZHJpdmVyIGJ1Zy4KKyAg
ICBpZiAoSXNBTUQoKSAmJiBJc0QzRDExKCkpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwg
IlRlc3Qgc2tpcHBlZCBvbiBBTUQgRDNEMTEuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBHTFJlbmRlcmJ1ZmZlciByZW5kZXJidWY7CisgICAgZ2xCaW5kUmVu
ZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgcmVuZGVyYnVmLmdldCgpKTsKKyAgICBnbFJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHTF9SRU5ERVJCVUZGRVIsIDIsIEdMX0RFUFRIX0NP
TVBPTkVOVDI0LCAyNTYsIDI1Nik7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmVydGV4ID0K
KyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAiaW4gdmVjMiBwb3NpdGlvbjtc
biIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSB2
ZWM0KHBvc2l0aW9uLCAwLjAsIDAuNSk7XG4iCisgICAgICAgICJ9IjsKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyAmZnJhZ21lbnQgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAg
ICJvdXQgbWVkaXVtcCB2ZWM0IHJlZDtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAg
ICAgICAgIiAgIHJlZCA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTtcbiIKKyAgICAgICAgIiAg
IGdsX0ZyYWdEZXB0aCA9IDAuNTtcbiIKKyAgICAgICAgIn0iOworCisgICAgQU5HTEVfR0xfUFJP
R1JBTShkcmF3UmVkLCB2ZXJ0ZXgsIGZyYWdtZW50KTsKKworICAgIEdMRnJhbWVidWZmZXIgZnJh
bWVidWZmZXI7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIGZyYW1lYnVm
ZmVyLmdldCgpKTsKKyAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVS
LCBHTF9ERVBUSF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZW5kZXJidWYuZ2V0KCkpOworCisgICAgQVNTRVJUX0dMRU5VTV9FUShH
TF9GUkFNRUJVRkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1F
QlVGRkVSKSk7CisKKyAgICBnbENsZWFyRGVwdGhmKDAuNWYpOworICAgIGdsQ2xlYXIoR0xfREVQ
VEhfQlVGRkVSX0JJVCk7CisKKyAgICBHTFJlbmRlcmJ1ZmZlciBkZXN0UmVuZGVyYnVmOworICAg
IGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIGRlc3RSZW5kZXJidWYuZ2V0KCkp
OworICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZGRVIsIEdMX0RFUFRIX0NP
TVBPTkVOVDI0LCAyNTYsIDI1Nik7CisKKyAgICBHTEZyYW1lYnVmZmVyIHJlc29sdmVkOworICAg
IGdsQmluZEZyYW1lYnVmZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVIsIHJlc29sdmVkLmdldCgpKTsK
KyAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVIsIEdMX0RF
UFRIX0FUVEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlc3RSZW5kZXJidWYuZ2V0KCkpOworCisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xf
UkVBRF9GUkFNRUJVRkZFUiwgZnJhbWVidWZmZXIuZ2V0KCkpOworICAgIGdsQmxpdEZyYW1lYnVm
ZmVyKDAsIDAsIDI1NiwgMjU2LCAwLCAwLCAyNTYsIDI1NiwgR0xfREVQVEhfQlVGRkVSX0JJVCwg
R0xfTkVBUkVTVCk7CisKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgcmVz
b2x2ZWQuZ2V0KCkpOworCisgICAgR0xUZXh0dXJlIGNvbG9yYnVmOworICAgIGdsQmluZFRleHR1
cmUoR0xfVEVYVFVSRV8yRCwgY29sb3JidWYuZ2V0KCkpOworICAgIGdsVGV4U3RvcmFnZTJEKEdM
X1RFWFRVUkVfMkQsIDEsIEdMX1JHQkE4LCAyNTYsIDI1Nik7CisgICAgZ2xGcmFtZWJ1ZmZlclRl
eHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVf
MkQsIGNvbG9yYnVmLmdldCgpLCAwKTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisg
ICAgLy8gQ2xlYXIgdG8gZ3JlZW4KKyAgICBnbENsZWFyQ29sb3IoMC4wZiwgMS4wZiwgMC4wZiwg
MS4wZik7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBFWFBFQ1RfUElY
RUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4pOworCisgICAgLy8gRHJhdyB3aXRoIDAu
NWYgdGVzdCBhbmQgdGhlIHRlc3Qgc2hvdWxkIHBhc3MuCisgICAgZ2xFbmFibGUoR0xfREVQVEhf
VEVTVCk7CisgICAgZ2xEZXB0aEZ1bmMoR0xfRVFVQUwpOworICAgIGRyYXdRdWFkKGRyYXdSZWQu
Z2V0KCksICJwb3NpdGlvbiIsIDAuNWYpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAw
LCBHTENvbG9yOjpyZWQpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFRl
c3QgcmVzb2x2aW5nIGEgbXVsdGlzYW1wbGVkIHN0ZW5jaWwgYnVmZmVyLgorVEVTVF9QKEJsaXRG
cmFtZWJ1ZmZlclRlc3QsIE11bHRpc2FtcGxlU3RlbmNpbCkKK3sKKyAgICBHTFJlbmRlcmJ1ZmZl
ciByZW5kZXJidWY7CisgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgcmVu
ZGVyYnVmLmdldCgpKTsKKyAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHTF9S
RU5ERVJCVUZGRVIsIDIsIEdMX1NURU5DSUxfSU5ERVg4LCAyNTYsIDI1Nik7CisKKyAgICBjb25z
dCBzdGQ6OnN0cmluZyAmdmVydGV4ID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAg
ICAgICAiaW4gdmVjMiBwb3NpdGlvbjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAg
ICAgICAgIiAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAwLjAsIDEuMCk7XG4iCisgICAg
ICAgICJ9IjsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ21lbnQgPQorICAgICAgICAiI3Zl
cnNpb24gMzAwIGVzXG4iCisgICAgICAgICJvdXQgbWVkaXVtcCB2ZWM0IHJlZDtcbiIKKyAgICAg
ICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgIHJlZCA9IHZlYzQoMS4wLCAwLjAsIDAu
MCwgMS4wKTtcbiIKKyAgICAgICAgIn0iOworCisgICAgQU5HTEVfR0xfUFJPR1JBTShkcmF3UmVk
LCB2ZXJ0ZXgsIGZyYWdtZW50KTsKKworICAgIEdMRnJhbWVidWZmZXIgZnJhbWVidWZmZXI7Cisg
ICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIGZyYW1lYnVmZmVyLmdldCgpKTsK
KyAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9TVEVOQ0lM
X0FUVEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlbmRlcmJ1Zi5nZXQoKSk7CisKKyAgICBBU1NFUlRfR0xFTlVNX0VRKEdMX0ZSQU1FQlVG
RkVSX0NPTVBMRVRFLCBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsK
KworICAgIC8vIGZpbGwgdGhlIHN0ZW5jaWwgYnVmZmVyIHdpdGggMHgxCisgICAgZ2xTdGVuY2ls
RnVuYyhHTF9BTFdBWVMsIDB4MSwgMHhGRik7CisgICAgZ2xTdGVuY2lsT3AoR0xfUkVQTEFDRSwg
R0xfUkVQTEFDRSwgR0xfUkVQTEFDRSk7CisgICAgZ2xFbmFibGUoR0xfU1RFTkNJTF9URVNUKTsK
KyAgICBkcmF3UXVhZChkcmF3UmVkLmdldCgpLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgIEdM
VGV4dHVyZSBkZXN0Q29sb3JidWY7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBk
ZXN0Q29sb3JidWYuZ2V0KCkpOworICAgIGdsVGV4U3RvcmFnZTJEKEdMX1RFWFRVUkVfMkQsIDEs
IEdMX1JHQkE4LCAyNTYsIDI1Nik7CisKKyAgICBHTFJlbmRlcmJ1ZmZlciBkZXN0UmVuZGVyYnVm
OworICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIGRlc3RSZW5kZXJidWYu
Z2V0KCkpOworICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZGRVIsIEdMX1NU
RU5DSUxfSU5ERVg4LCAyNTYsIDI1Nik7CisKKyAgICBHTEZyYW1lYnVmZmVyIHJlc29sdmVkOwor
ICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVIsIHJlc29sdmVkLmdldCgp
KTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0RSQVdfRlJBTUVCVUZGRVIsIEdMX0NP
TE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVzdENvbG9yYnVmLmdldCgpLCAwKTsKKyAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KEdMX0RSQVdfRlJBTUVCVUZGRVIsIEdMX1NURU5DSUxfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVG
RkVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFJlbmRlcmJ1Zi5nZXQoKSk7
CisKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVSLCBmcmFtZWJ1ZmZl
ci5nZXQoKSk7CisgICAgZ2xCbGl0RnJhbWVidWZmZXIoMCwgMCwgMjU2LCAyNTYsIDAsIDAsIDI1
NiwgMjU2LCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQsIEdMX05FQVJFU1QpOworCisgICAgZ2xCaW5k
RnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIHJlc29sdmVkLmdldCgpKTsKKworICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOworCisgICAgLy8gQ2xlYXIgdG8gZ3JlZW4KKyAgICBnbENsZWFyQ29s
b3IoMC4wZiwgMS4wZiwgMC4wZiwgMS4wZik7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJf
QklUKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4pOwor
CisgICAgLy8gRHJhdyByZWQgaWYgdGhlIHN0ZW5jaWwgaXMgMHgxLCB3aGljaCBzaG91bGQgYmUg
dHJ1ZSBhZnRlciB0aGUgYmxpdC9yZXNvbHZlLgorICAgIGdsU3RlbmNpbEZ1bmMoR0xfRVFVQUws
IDB4MSwgMHhGRik7CisgICAgZHJhd1F1YWQoZHJhd1JlZC5nZXQoKSwgInBvc2l0aW9uIiwgMC41
Zik7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OnJlZCk7CisKKyAg
ICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKK30KKworLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNo
IGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZl
cnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KK0FOR0xFX0lOU1RBTlRJ
QVRFX1RFU1QoQmxpdEZyYW1lYnVmZmVyQU5HTEVUZXN0LAorICAgICAgICAgICAgICAgICAgICAg
ICBFUzJfRDNEOSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoRUdMX0VYUEVS
SU1FTlRBTF9QUkVTRU5UX1BBVEhfQ09QWV9BTkdMRSksCisgICAgICAgICAgICAgICAgICAgICAg
IEVTMl9EM0QxMShFR0xfRVhQRVJJTUVOVEFMX1BSRVNFTlRfUEFUSF9GQVNUX0FOR0xFKSk7CisK
K0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoQmxpdEZyYW1lYnVmZmVyVGVzdCwgRVMzX0QzRDExKCkp
OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9CdWZmZXJEYXRhVGVzdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0J1ZmZlckRhdGFUZXN0
LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
Z2xfdGVzdHMvQnVmZmVyRGF0YVRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTQw
IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKworI2lu
Y2x1ZGUgPHN0ZGludC5oPgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKK2NsYXNzIEJ1ZmZl
ckRhdGFUZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgQnVmZmVy
RGF0YVRlc3QoKQorICAgIHsKKyAgICAgICAgc2V0V2luZG93V2lkdGgoMTYpOworICAgICAgICBz
ZXRXaW5kb3dIZWlnaHQoMTYpOworICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOworICAgICAg
ICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwor
ICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0RlcHRoQml0
cygyNCk7CisKKyAgICAgICAgbUJ1ZmZlciA9IDA7CisgICAgICAgIG1Qcm9ncmFtID0gMDsKKyAg
ICAgICAgbUF0dHJpYkxvY2F0aW9uID0gLTE7CisgICAgfQorCisgICAgdm9pZCBTZXRVcCgpIG92
ZXJyaWRlCisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7CisKKyAgICAgICAgY29u
c3QgY2hhciAqIHZzU291cmNlID0gU0hBREVSX1NPVVJDRQorICAgICAgICAoCisgICAgICAgICAg
ICBhdHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjsKKyAgICAgICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBp
bl9hdHRyaWI7CisgICAgICAgICAgICB2YXJ5aW5nIGZsb2F0IHZfYXR0cmliOworICAgICAgICAg
ICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2X2F0dHJpYiA9
IGluX2F0dHJpYjsKKyAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOworICAg
ICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAgIGNvbnN0IGNoYXIgKiBmc1NvdXJjZSA9
IFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisgICAgICAgICAgICB2YXJ5aW5nIGZsb2F0IHZfYXR0cmliOworICAgICAgICAgICAg
dm9pZCBtYWluKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3Ig
PSB2ZWM0KHZfYXR0cmliLCAwLCAwLCAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKwor
ICAgICAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1CdWZmZXIpOworICAgICAgICBBU1NFUlRfTkUobUJ1
ZmZlciwgMFUpOworCisgICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odnNTb3VyY2Us
IGZzU291cmNlKTsKKyAgICAgICAgQVNTRVJUX05FKG1Qcm9ncmFtLCAwVSk7CisKKyAgICAgICAg
bUF0dHJpYkxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgImluX2F0dHJp
YiIpOworICAgICAgICBBU1NFUlRfTkUobUF0dHJpYkxvY2F0aW9uLCAtMSk7CisKKyAgICAgICAg
Z2xDbGVhckNvbG9yKDAsIDAsIDAsIDApOworICAgICAgICBnbENsZWFyRGVwdGhmKDAuMCk7Cisg
ICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQp
OworCisgICAgICAgIGdsRGlzYWJsZShHTF9ERVBUSF9URVNUKTsKKworICAgICAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIGdsRGVsZXRlQnVmZmVycygxLCAmbUJ1ZmZlcik7CisgICAgICAgIGdsRGVs
ZXRlUHJvZ3JhbShtUHJvZ3JhbSk7CisKKyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOwor
ICAgIH0KKworICAgIEdMdWludCBtQnVmZmVyOworICAgIEdMdWludCBtUHJvZ3JhbTsKKyAgICBH
TGludCBtQXR0cmliTG9jYXRpb247Cit9OworCitURVNUX1AoQnVmZmVyRGF0YVRlc3QsIE5VTExE
YXRhKQoreworICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1CdWZmZXIpOworICAg
IEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgY29uc3QgaW50IG51bUl0ZXJhdGlvbnMgPSAx
Mjg7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1JdGVyYXRpb25zOyArK2kpCisgICAgewor
ICAgICAgICBHTHNpemVpIGJ1ZmZlclNpemUgPSBzaXplb2YoR0xmbG9hdCkgKiAoaSArIDEpOwor
ICAgICAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBidWZmZXJTaXplLCBOVUxMLCBH
TF9TVEFUSUNfRFJBVyk7CisgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgICAg
IGZvciAoaW50IGogPSAwOyBqIDwgYnVmZmVyU2l6ZTsgaisrKQorICAgICAgICB7CisgICAgICAg
ICAgICBmb3IgKGludCBrID0gMDsgayA8IGJ1ZmZlclNpemUgLSBqOyBrKyspCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgZ2xCdWZmZXJTdWJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgaywg
aiwgTlVMTCk7CisgICAgICAgICAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK1RFU1RfUChCdWZmZXJEYXRhVGVzdCwgWmVy
b05vbk5VTExEYXRhKQoreworICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1CdWZm
ZXIpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgY2hhciAqemVyb0RhdGEgPSBu
ZXcgY2hhclswXTsKKyAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCAwLCB6ZXJvRGF0
YSwgR0xfU1RBVElDX0RSQVcpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xC
dWZmZXJTdWJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgMCwgMCwgemVyb0RhdGEpOworICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOworCisgICAgZGVsZXRlIFtdIHplcm9EYXRhOworfQorCitURVNUX1Ao
QnVmZmVyRGF0YVRlc3QsIE5VTExSZXNvbHZlZERhdGEpCit7CisgICAgZ2xCaW5kQnVmZmVyKEdM
X0FSUkFZX0JVRkZFUiwgbUJ1ZmZlcik7CisgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZF
UiwgMTI4LCBOVUxMLCBHTF9EWU5BTUlDX0RSQVcpOworCisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9n
cmFtKTsKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIobUF0dHJpYkxvY2F0aW9uLCAxLCBHTF9G
TE9BVCwgR0xfRkFMU0UsIDQsIE5VTEwpOworICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXko
bUF0dHJpYkxvY2F0aW9uKTsKKyAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCAwKTsK
KworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKK30KKworLy8gVGVz
dHMgdGhhdCBhIGh1Z2UgYWxsb2NhdGlvbiByZXR1cm5zIEdMX09VVF9PRl9NRU1PUlkKKy8vIFRP
RE8oam1hZGlsbCk6IEZpZ3VyZSBvdXQgaG93IHRvIHRlc3QgdGhpcyByZWxpYWJseSBvbiB0aGUg
Q2hyb21pdW0gYm90cworVEVTVF9QKEJ1ZmZlckRhdGFUZXN0LCBESVNBQkxFRF9IdWdlU2V0RGF0
YVNob3VsZE5vdENyYXNoKQoreworICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1C
dWZmZXIpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgR0xzaXplaSBhbGxvY1Np
emUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPEdMc2l6ZWk+OjptYXgoKSA+PiAyOworCisgICAgdWlu
dDhfdCAqZGF0YSA9IE5VTEw7CisgICAgd2hpbGUgKGRhdGEgPT0gTlVMTCAmJiBhbGxvY1NpemUg
Pj0gNCkKKyAgICB7CisgICAgICAgIGRhdGEgPSBuZXcgKHN0ZDo6bm90aHJvdykgdWludDhfdFth
bGxvY1NpemVdOworCisgICAgICAgIGlmIChkYXRhID09IE5VTEwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGFsbG9jU2l6ZSA+Pj0gMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEFTU0VSVF9O
RShzdGF0aWNfY2FzdDx1aW50OF90Kj4oTlVMTCksIGRhdGEpOworICAgIG1lbXNldChkYXRhLCAw
LCBhbGxvY1NpemUpOworCisgICAgZmxvYXQgKiBmVmFsdWUgPSByZWludGVycHJldF9jYXN0PGZs
b2F0Kj4oZGF0YSk7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgZiA9IDA7IGYgPCA2OyBmKyspCisg
ICAgeworICAgICAgICBmVmFsdWVbZl0gPSAxLjBmOworICAgIH0KKworICAgIGdsQnVmZmVyRGF0
YShHTF9BUlJBWV9CVUZGRVIsIGFsbG9jU2l6ZSwgZGF0YSwgR0xfU1RBVElDX0RSQVcpOworCisg
ICAgR0xlbnVtIGVycm9yID0gZ2xHZXRFcnJvcigpOworICAgIGlmIChlcnJvciA9PSBHTF9OT19F
UlJPUikKKyAgICB7CisgICAgICAgIC8vIElmIHdlIGRpZG4ndCBmYWlsIGJlY2F1c2Ugb2YgYW4g
b3V0IG9mIG1lbW9yeSBlcnJvciwgdHJ5IGRyYXdpbmcgYSBxdWFkCisgICAgICAgIC8vIHVzaW5n
IHRoZSBsYXJnZSBidWZmZXIKKworICAgICAgICAvLyBESVNBQkxFRCBiZWNhdXNlIGl0IHRha2Vz
IGEgbG9uZyB0aW1lLCBidXQgbGVmdCBmb3IgcG9zdGVyaXR5CisKKyAgICAgICAgLy9nbFVzZVBy
b2dyYW0obVByb2dyYW0pOworICAgICAgICAvL2dsVmVydGV4QXR0cmliUG9pbnRlcihtQXR0cmli
TG9jYXRpb24sIDEsIEdMX0ZMT0FULCBHTF9GQUxTRSwgNCwgTlVMTCk7CisgICAgICAgIC8vZ2xF
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtQXR0cmliTG9jYXRpb24pOworICAgICAgICAvL2dsQmlu
ZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIDApOworICAgICAgICAvL2RyYXdRdWFkKG1Qcm9ncmFt
LCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICAgICAgLy9zd2FwQnVmZmVycygpOworCisgICAgICAg
IC8vLy8gRHJhdyBvcGVyYXRpb25zIGNhbiBhbHNvIGdlbmVyYXRlIG91dC1vZi1tZW1vcnksIHdo
aWNoIGlzIGluLXNwZWMKKyAgICAgICAgLy9lcnJvciA9IGdsR2V0RXJyb3IoKTsKKyAgICAgICAg
Ly9pZiAoZXJyb3IgPT0gR0xfTk9fRVJST1IpCisgICAgICAgIC8veworICAgICAgICAvLyAgICBH
TGludCB2aWV3cG9ydFNpemVbNF07CisgICAgICAgIC8vICAgIGdsR2V0SW50ZWdlcnYoR0xfVklF
V1BPUlQsIHZpZXdwb3J0U2l6ZSk7CisKKyAgICAgICAgLy8gICAgR0xpbnQgbWlkUGl4ZWxYID0g
KHZpZXdwb3J0U2l6ZVswXSArIHZpZXdwb3J0U2l6ZVsyXSkgLyAyOworICAgICAgICAvLyAgICBH
TGludCBtaWRQaXhlbFkgPSAodmlld3BvcnRTaXplWzFdICsgdmlld3BvcnRTaXplWzNdKSAvIDI7
CisKKyAgICAgICAgLy8gICAgRVhQRUNUX1BJWEVMX0VRKG1pZFBpeGVsWCwgbWlkUGl4ZWxZLCAy
NTUsIDAsIDAsIDI1NSk7CisgICAgICAgIC8vfQorICAgICAgICAvL2Vsc2UKKyAgICAgICAgLy97
CisgICAgICAgIC8vICAgIEVYUEVDVF9FUShHTF9PVVRfT0ZfTUVNT1JZLCBlcnJvcik7CisgICAg
ICAgIC8vfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBFWFBFQ1RfR0xFTlVNX0VR
KEdMX09VVF9PRl9NRU1PUlksIGVycm9yKTsKKyAgICB9CisKKyAgICBkZWxldGVbXSBkYXRhOwor
fQorCisvLyBJbnRlcm5hbGx5IGluIEQzRCwgd2UgcHJvbW90ZSBkeW5hbWljIGRhdGEgdG8gc3Rh
dGljIGFmdGVyIG1hbnkgZHJhdyBsb29wcy4gVGhpcyBjb2RlIHRlc3RzCisvLyBwYXRoLgorVEVT
VF9QKEJ1ZmZlckRhdGFUZXN0LCBSZXBlYXRlZERyYXdXaXRoRHluYW1pYykKK3sKKyAgICBzdGQ6
OnZlY3RvcjxHTGZsb2F0PiBkYXRhOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTY7ICsraSkK
KyAgICB7CisgICAgICAgIGRhdGEucHVzaF9iYWNrKHN0YXRpY19jYXN0PEdMZmxvYXQ+KGkpKTsK
KyAgICB9CisKKyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworICAgIGdsQmluZEJ1ZmZlcihH
TF9BUlJBWV9CVUZGRVIsIG1CdWZmZXIpOworICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZG
RVIsIHNpemVvZihHTGZsb2F0KSAqIGRhdGEuc2l6ZSgpLCBkYXRhLmRhdGEoKSwgR0xfRFlOQU1J
Q19EUkFXKTsKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIobUF0dHJpYkxvY2F0aW9uLCAxLCBH
TF9GTE9BVCwgR0xfRkFMU0UsIDAsIG51bGxwdHIpOworICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJB
WV9CVUZGRVIsIDApOworICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkobUF0dHJpYkxvY2F0
aW9uKTsKKworICAgIGZvciAoaW50IGRyYXdDb3VudCA9IDA7IGRyYXdDb3VudCA8IDQwOyArK2Ry
YXdDb3VudCkKKyAgICB7CisgICAgICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAw
LjVmKTsKKyAgICB9CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKK30KKworY2xhc3MgSW5k
ZXhlZEJ1ZmZlckNvcHlUZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6Cisg
ICAgSW5kZXhlZEJ1ZmZlckNvcHlUZXN0KCkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRo
KDE2KTsKKyAgICAgICAgc2V0V2luZG93SGVpZ2h0KDE2KTsKKyAgICAgICAgc2V0Q29uZmlnUmVk
Qml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAgICBzZXRDb25m
aWdCbHVlQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAgICAgICBz
ZXRDb25maWdEZXB0aEJpdHMoMjQpOworICAgIH0KKworICAgIHZvaWQgU2V0VXAoKSBvdmVycmlk
ZQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOworCisgICAgICAgIGNvbnN0IGNo
YXIgKiB2c1NvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAgYXR0
cmlidXRlIHZlYzMgaW5fYXR0cmliOworICAgICAgICAgICAgdmFyeWluZyB2ZWMzIHZfYXR0cmli
OworICAgICAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICB2X2F0dHJpYiA9IGluX2F0dHJpYjsKKyAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHZl
YzQoMC4wLCAwLjAsIDAuNSwgMS4wKTsKKyAgICAgICAgICAgICAgICBnbF9Qb2ludFNpemUgPSAx
MDAuMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICBjb25zdCBjaGFyICog
ZnNTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgICAgICgKKyAgICAgICAgICAgIHByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworICAgICAgICAgICAgdmFyeWluZyB2ZWMzIHZfYXR0cmliOworICAg
ICAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbF9G
cmFnQ29sb3IgPSB2ZWM0KHZfYXR0cmliLCAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsK
KworICAgICAgICBnbEdlbkJ1ZmZlcnMoMiwgbUJ1ZmZlcnMpOworICAgICAgICBBU1NFUlRfTkUo
bUJ1ZmZlcnNbMF0sIDBVKTsKKyAgICAgICAgQVNTRVJUX05FKG1CdWZmZXJzWzFdLCAwVSk7CisK
KyAgICAgICAgZ2xHZW5CdWZmZXJzKDEsICZtRWxlbWVudEJ1ZmZlcik7CisgICAgICAgIEFTU0VS
VF9ORShtRWxlbWVudEJ1ZmZlciwgMFUpOworCisgICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVBy
b2dyYW0odnNTb3VyY2UsIGZzU291cmNlKTsKKyAgICAgICAgQVNTRVJUX05FKG1Qcm9ncmFtLCAw
VSk7CisKKyAgICAgICAgbUF0dHJpYkxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJv
Z3JhbSwgImluX2F0dHJpYiIpOworICAgICAgICBBU1NFUlRfTkUobUF0dHJpYkxvY2F0aW9uLCAt
MSk7CisKKyAgICAgICAgZ2xDbGVhckNvbG9yKDAsIDAsIDAsIDApOworICAgICAgICBnbERpc2Fi
bGUoR0xfREVQVEhfVEVTVCk7CisgICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7
CisKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgfQorCisgICAgdm9pZCBUZWFy
RG93bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBnbERlbGV0ZUJ1ZmZlcnMoMiwgbUJ1ZmZl
cnMpOworICAgICAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1FbGVtZW50QnVmZmVyKTsKKyAgICAg
ICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKKworICAgICAgICBBTkdMRVRlc3Q6OlRlYXJE
b3duKCk7CisgICAgfQorCisgICAgR0x1aW50IG1CdWZmZXJzWzJdOworICAgIEdMdWludCBtRWxl
bWVudEJ1ZmZlcjsKKyAgICBHTHVpbnQgbVByb2dyYW07CisgICAgR0xpbnQgbUF0dHJpYkxvY2F0
aW9uOworfTsKKworLy8gVGhlIGZvbGxvd2luZyB0ZXN0IGNvdmVycyBhbiBBTkdMRSBidWcgd2hl
cmUgb3VyIGluZGV4IHJhbmdlcworLy8gd2VyZW4ndCB1cGRhdGVkIGZyb20gQ29weUJ1ZmZlclN1
YkRhdGEgY2FsbHMKKy8vIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvYW5nbGVwcm9qZWN0L2lz
c3Vlcy9kZXRhaWw/aWQ9NzA5CitURVNUX1AoSW5kZXhlZEJ1ZmZlckNvcHlUZXN0LCBJbmRleFJh
bmdlQnVnKQoreworICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogRmlndXJlIG91dCB3aHkgdGhpcyBm
YWlscyBvbiBBTUQgT3BlbkdMIChodHRwOi8vYW5nbGVidWcuY29tLzEyOTEpCisgICAgaWYgKElz
QU1EKCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBF
X09QRU5HTF9BTkdMRSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxl
ZCBvbiBBTUQgT3BlbkdMLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgdW5zaWduZWQgY2hhciB2ZXJ0ZXhEYXRhW10gPSB7IDI1NSwgMCwgMCwgMCwgMCwgMCB9
OworICAgIHVuc2lnbmVkIGludCBpbmRleERhdGFbXSA9IHsgMCwgMSB9OworCisgICAgZ2xCaW5k
QnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZlcnNbMF0pOworICAgIGdsQnVmZmVyRGF0YShH
TF9BUlJBWV9CVUZGRVIsIHNpemVvZihjaGFyKSAqIDYsIHZlcnRleERhdGEsIEdMX1NUQVRJQ19E
UkFXKTsKKworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgZ2xWZXJ0ZXhBdHRyaWJQ
b2ludGVyKG1BdHRyaWJMb2NhdGlvbiwgMywgR0xfVU5TSUdORURfQllURSwgR0xfVFJVRSwgMywg
TlVMTCk7CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtQXR0cmliTG9jYXRpb24pOwor
CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbEJpbmRCdWZmZXIoR0xfRUxFTUVO
VF9BUlJBWV9CVUZGRVIsIG1FbGVtZW50QnVmZmVyKTsKKyAgICBnbEJ1ZmZlckRhdGEoR0xfRUxF
TUVOVF9BUlJBWV9CVUZGRVIsIHNpemVvZihpbnQpICogMSwgaW5kZXhEYXRhLCBHTF9TVEFUSUNf
RFJBVyk7CisKKyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworCisgICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7CisKKyAgICBnbERyYXdFbGVtZW50cyhHTF9QT0lOVFMsIDEsIEdMX1VOU0lHTkVE
X0lOVCwgTlVMTCk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfUElY
RUxfRVEoMCwgMCwgMjU1LCAwLCAwLCAyNTUpOworCisgICAgZ2xCaW5kQnVmZmVyKEdMX0NPUFlf
UkVBRF9CVUZGRVIsIG1CdWZmZXJzWzFdKTsKKyAgICBnbEJ1ZmZlckRhdGEoR0xfQ09QWV9SRUFE
X0JVRkZFUiwgNCwgJmluZGV4RGF0YVsxXSwgR0xfU1RBVElDX0RSQVcpOworCisgICAgZ2xCaW5k
QnVmZmVyKEdMX0NPUFlfV1JJVEVfQlVGRkVSLCBtRWxlbWVudEJ1ZmZlcik7CisKKyAgICBnbENv
cHlCdWZmZXJTdWJEYXRhKEdMX0NPUFlfUkVBRF9CVUZGRVIsIEdMX0NPUFlfV1JJVEVfQlVGRkVS
LCAwLCAwLCBzaXplb2YoaW50KSk7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAg
IGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAs
IDAsIDAsIDAsIDApOworCisgICAgdW5zaWduZWQgY2hhciBuZXdEYXRhW10gPSB7IDAsIDI1NSwg
MCB9OworICAgIGdsQnVmZmVyU3ViRGF0YShHTF9BUlJBWV9CVUZGRVIsIDMsIDMsIG5ld0RhdGEp
OworCisgICAgZ2xEcmF3RWxlbWVudHMoR0xfUE9JTlRTLCAxLCBHTF9VTlNJR05FRF9JTlQsIE5V
TEwpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgRVhQRUNUX1BJWEVMX0VRKDAs
IDAsIDAsIDI1NSwgMCwgMjU1KTsKK30KKworY2xhc3MgQnVmZmVyRGF0YVRlc3RFUzMgOiBwdWJs
aWMgQnVmZmVyRGF0YVRlc3QKK3sKK307CisKKy8vIFRoZSBmb2xsb3dpbmcgdGVzdCBjb3ZlcnMg
YW4gQU5HTEUgYnVnIHdoZXJlIHRoZSBidWZmZXIgc3RvcmFnZQorLy8gaXMgbm90IHJlc2l6ZWQg
YnkgQnVmZmVyMTE6OmdldExhdGVzdEJ1ZmZlclN0b3JhZ2Ugd2hlbiBuZWVkZWQuCisvLyBodHRw
czovL2NvZGUuZ29vZ2xlLmNvbS9wL2FuZ2xlcHJvamVjdC9pc3N1ZXMvZGV0YWlsP2lkPTg5Nwor
VEVTVF9QKEJ1ZmZlckRhdGFUZXN0RVMzLCBCdWZmZXJSZXNpemluZykKK3sKKyAgICBnbEJpbmRC
dWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtQnVmZmVyKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1Io
KTsKKworICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIHdpdGggb25lIGJ5dGUKKyAgICB1aW50OF90
IHNpbmdsZUJ5dGVbXSA9IHsgMHhhYSB9OworICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZG
RVIsIDEsIHNpbmdsZUJ5dGUsIEdMX1NUQVRJQ19EUkFXKTsKKworICAgIC8vIFJlc2l6ZSB0aGUg
YnVmZmVyCisgICAgLy8gVG8gdHJpZ2dlciB0aGUgYnVnLCB0aGUgYnVmZmVyIG5lZWQgdG8gYmUg
YmlnIGVub3VnaCBiZWNhdXNlIHNvbWUgaGFyZHdhcmUgY29weSBidWZmZXJzCisgICAgLy8gYnkg
Y2h1bmtzIG9mIHBhZ2VzIGluc3RlYWQgb2YgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGJ5dGVzIG5l
ZWVkZWQuCisgICAgY29uc3Qgc2l6ZV90IG51bUJ5dGVzID0gNDA5Nio0OworICAgIGdsQnVmZmVy
RGF0YShHTF9BUlJBWV9CVUZGRVIsIG51bUJ5dGVzLCBOVUxMLCBHTF9TVEFUSUNfRFJBVyk7CisK
KyAgICAvLyBDb3B5IHRoZSBvcmlnaW5hbCBkYXRhIHRvIHRoZSBidWZmZXIKKyAgICB1aW50OF90
IHNyY0J5dGVzW251bUJ5dGVzXTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUJ5dGVz
OyArK2kpCisgICAgeworICAgICAgICBzcmNCeXRlc1tpXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KGkpOworICAgIH0KKworICAgIHZvaWQgKmRlc3QgPSBnbE1hcEJ1ZmZlclJhbmdlKEdMX0FSUkFZ
X0JVRkZFUiwgMCwgbnVtQnl0ZXMsIEdMX01BUF9XUklURV9CSVQgfCBHTF9NQVBfSU5WQUxJREFU
RV9CVUZGRVJfQklUKTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgbWVtY3B5
KGRlc3QsIHNyY0J5dGVzLCBudW1CeXRlcyk7CisgICAgZ2xVbm1hcEJ1ZmZlcihHTF9BUlJBWV9C
VUZGRVIpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBDcmVhdGUgYSBu
ZXcgYnVmZmVyIGFuZCBjb3B5IHRoZSBkYXRhIHRvIGl0CisgICAgR0x1aW50IHJlYWRCdWZmZXI7
CisgICAgZ2xHZW5CdWZmZXJzKDEsICZyZWFkQnVmZmVyKTsKKyAgICBnbEJpbmRCdWZmZXIoR0xf
Q09QWV9XUklURV9CVUZGRVIsIHJlYWRCdWZmZXIpOworICAgIHVpbnQ4X3QgemVyb3NbbnVtQnl0
ZXNdOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQnl0ZXM7ICsraSkKKyAgICB7Cisg
ICAgICAgIHplcm9zW2ldID0gMDsKKyAgICB9CisgICAgZ2xCdWZmZXJEYXRhKEdMX0NPUFlfV1JJ
VEVfQlVGRkVSLCBudW1CeXRlcywgemVyb3MsIEdMX1NUQVRJQ19EUkFXKTsKKyAgICBnbENvcHlC
dWZmZXJTdWJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgR0xfQ09QWV9XUklURV9CVUZGRVIsIDAsIDAs
IG51bUJ5dGVzKTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gUmVhZCBi
YWNrIHRoZSBkYXRhIGFuZCBjb21wYXJlIGl0IHRvIHRoZSBvcmlnaW5hbAorICAgIHVpbnQ4X3Qg
KmRhdGEgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihnbE1hcEJ1ZmZlclJhbmdlKEdMX0NP
UFlfV1JJVEVfQlVGRkVSLCAwLCBudW1CeXRlcywgR0xfTUFQX1JFQURfQklUKSk7CisKKyAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQnl0
ZXM7ICsraSkKKyAgICB7CisgICAgICAgIEVYUEVDVF9FUShzcmNCeXRlc1tpXSwgZGF0YVtpXSk7
CisgICAgfQorICAgIGdsVW5tYXBCdWZmZXIoR0xfQ09QWV9XUklURV9CVUZGRVIpOworCisgICAg
Z2xEZWxldGVCdWZmZXJzKDEsICZyZWFkQnVmZmVyKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOworfQorCisvLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUu
Zy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMg
c2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgorQU5HTEVfSU5TVEFOVElBVEVfVEVTVChCdWZmZXJEYXRh
VGVzdCwgRVMyX0QzRDkoKSwgRVMyX0QzRDExKCksIEVTMl9PUEVOR0woKSwgRVMyX09QRU5HTEVT
KCkpOworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChCdWZmZXJEYXRhVGVzdEVTMywgRVMzX0QzRDEx
KCksIEVTM19PUEVOR0woKSwgRVMzX09QRU5HTEVTKCkpOworQU5HTEVfSU5TVEFOVElBVEVfVEVT
VChJbmRleGVkQnVmZmVyQ29weVRlc3QsIEVTM19EM0QxMSgpLCBFUzNfT1BFTkdMKCksIEVTM19P
UEVOR0xFUygpKTsKKworI2lmZGVmIF9XSU42NAorCisvLyBUZXN0IGEgYnVnIHdoZXJlIGFuIGlu
dGVnZXIgb3ZlcmZsb3cgYnVnIGNvdWxkIHRyaWdnZXIgYSBjcmFzaCBpbiBEM0QuCisvLyBUaGUg
dGVzdCB1c2VzIDggYnVmZmVycyB3aXRoIGEgc2l6ZSBqdXN0IHVuZGVyIDB4MjAwMDAwMCB0byBv
dmVyZmxvdyBtYXggdWludAorLy8gKHdpdGggdGhlIGludGVybmFsIEQzRCByb3VuZGluZyB0byAx
Ni1ieXRlIHZhbHVlcykgYW5kIHRyaWdnZXIgdGhlIGJ1Zy4KKy8vIE9ubHkgaGFuZGxlIHRoaXMg
YnVnIG9uIDY0LWJpdCBXaW5kb3dzIGZvciBub3cuIEhhcmRlciB0byByZXBybyBvbiAzMi1iaXQu
CitjbGFzcyBCdWZmZXJEYXRhT3ZlcmZsb3dUZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBw
cm90ZWN0ZWQ6CisgICAgQnVmZmVyRGF0YU92ZXJmbG93VGVzdCgpCisgICAgICAgIDogbVByb2dy
YW0oMCkKKyAgICB7CisgICAgfQorCisgICAgfkJ1ZmZlckRhdGFPdmVyZmxvd1Rlc3QoKQorICAg
IHsKKyAgICAgICAgaWYgKCFtQnVmZmVycy5lbXB0eSgpKQorICAgICAgICB7CisgICAgICAgICAg
ICBnbERlbGV0ZUJ1ZmZlcnMoc3RhdGljX2Nhc3Q8R0xzaXplaT4obUJ1ZmZlcnMuc2l6ZSgpKSwg
Jm1CdWZmZXJzWzBdKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobVByb2dyYW0gIT0gMHUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IG1CdWZmZXJzOworICAgIEdMdWlu
dCBtUHJvZ3JhbTsKK307CisKKy8vIFNlZSBkZXNjcmlwdGlvbiBhYm92ZS4KK1RFU1RfUChCdWZm
ZXJEYXRhT3ZlcmZsb3dUZXN0LCBWZXJ0ZXhCdWZmZXJJbnRlZ2VyT3ZlcmZsb3cpCit7CisgICAg
Ly8gVGhlc2UgdmFsdWVzIGFyZSBzcGVjaWFsLCB0byB0cmlnZ2VyIHRoZSByb3VuZGluZyBidWcu
CisgICAgdW5zaWduZWQgaW50IG51bUl0ZW1zID0gMHg3RkZGRkZFOworICAgIEdMc2l6ZWkgYnVm
ZmVyQ250ID0gODsKKworICAgIG1CdWZmZXJzLnJlc2l6ZShidWZmZXJDbnQpOworCisgICAgc3Rk
OjpzdHJpbmdzdHJlYW0gdmVydGV4U2hhZGVyU3RyOworCisgICAgZm9yIChHTHNpemVpIGJ1ZmZl
ckluZGV4ID0gMDsgYnVmZmVySW5kZXggPCBidWZmZXJDbnQ7ICsrYnVmZmVySW5kZXgpCisgICAg
eworICAgICAgICB2ZXJ0ZXhTaGFkZXJTdHIgPDwgImF0dHJpYnV0ZSBmbG9hdCBhdHRyaWIiIDw8
IGJ1ZmZlckluZGV4IDw8ICI7XG4iOworICAgIH0KKworICAgIHZlcnRleFNoYWRlclN0ciA8PCAi
YXR0cmlidXRlIHZlYzIgcG9zaXRpb247XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ2YXJ5
aW5nIGZsb2F0IHZfYXR0cmliO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAidm9pZCBtYWlu
KCkge1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9z
aXRpb24sIDAsIDEpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICB2X2F0dHJpYiA9IDAu
MDtcbiI7CisKKyAgICBmb3IgKEdMc2l6ZWkgYnVmZmVySW5kZXggPSAwOyBidWZmZXJJbmRleCA8
IGJ1ZmZlckNudDsgKytidWZmZXJJbmRleCkKKyAgICB7CisgICAgICAgIHZlcnRleFNoYWRlclN0
ciA8PCAidl9hdHRyaWIgKz0gYXR0cmliIiA8PCBidWZmZXJJbmRleCA8PCAiO1xuIjsKKyAgICB9
CisKKyAgICB2ZXJ0ZXhTaGFkZXJTdHIgPDwgIn0iOworCisgICAgY29uc3Qgc3RkOjpzdHJpbmcg
JmZyYWdtZW50U2hhZGVyID0KKyAgICAgICAgInZhcnlpbmcgaGlnaHAgZmxvYXQgdl9hdHRyaWI7
XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgIGdsX0ZyYWdDb2xvciA9
IHZlYzQodl9hdHRyaWIsIDAsIDAsIDEpO1xuIgorICAgICAgICAifSI7CisKKyAgICBtUHJvZ3Jh
bSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclN0ci5zdHIoKSwgZnJhZ21lbnRTaGFkZXIp
OworICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3Jh
bSk7CisKKyAgICBnbEdlbkJ1ZmZlcnMoYnVmZmVyQ250LCAmbUJ1ZmZlcnNbMF0pOworCisgICAg
c3RkOjp2ZWN0b3I8R0xmbG9hdD4gZGF0YShudW1JdGVtcywgMS4wZik7CisKKyAgICBmb3IgKEdM
c2l6ZWkgYnVmZmVySW5kZXggPSAwOyBidWZmZXJJbmRleCA8IGJ1ZmZlckNudDsgKytidWZmZXJJ
bmRleCkKKyAgICB7CisgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1CdWZm
ZXJzW2J1ZmZlckluZGV4XSk7CisgICAgICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIs
IG51bUl0ZW1zICogc2l6ZW9mKGZsb2F0KSwgJmRhdGFbMF0sIEdMX0RZTkFNSUNfRFJBVyk7CisK
KyAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gYXR0cmliTmFtZVN0cjsKKyAgICAgICAgYXR0cmli
TmFtZVN0ciA8PCAiYXR0cmliIiA8PCBidWZmZXJJbmRleDsKKworICAgICAgICBHTGludCBhdHRy
aWJMb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sIGF0dHJpYk5hbWVTdHIu
c3RyKCkuY19zdHIoKSk7CisgICAgICAgIEFTU0VSVF9ORSgtMSwgYXR0cmliTG9jYXRpb24pOwor
CisgICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihhdHRyaWJMb2NhdGlvbiwgMSwgR0xfRkxP
QVQsIEdMX0ZBTFNFLCA0LCBudWxscHRyKTsKKyAgICAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheShhdHRyaWJMb2NhdGlvbik7CisgICAgfQorCisgICAgR0xpbnQgcG9zaXRpb25Mb2NhdGlv
biA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJwb3NpdGlvbiIpOworICAgIEFTU0VS
VF9ORSgtMSwgcG9zaXRpb25Mb2NhdGlvbik7CisgICAgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJy
YXkocG9zaXRpb25Mb2NhdGlvbik7CisgICAgZ2xWZXJ0ZXhBdHRyaWIyZihwb3NpdGlvbkxvY2F0
aW9uLCAxLjBmLCAxLjBmKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgIGdsRHJh
d0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIG51bUl0ZW1zKTsKKyAgICBFWFBFQ1RfR0xfRVJST1Io
R0xfT1VUX09GX01FTU9SWSk7Cit9CisKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoQnVmZmVyRGF0
YU92ZXJmbG93VGVzdCwgRVMzX0QzRDExKCkpOworCisjZW5kaWYgIC8vIF9XSU42NApJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0J1aWx0aW5WYXJpYWJs
ZVRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9nbF90ZXN0cy9CdWlsdGluVmFyaWFibGVUZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQnVpbHRpblZhcmlhYmxlVGVz
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMDkgQEAKKy8vCisvLyBDb3B5cmlnaHQg
MjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBCdWls
dGluVmFyaWFibGVUZXN0OgorLy8gICBUZXN0cyB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIGJ1aWx0
aW4gR0xTTCB2YXJpYWJsZXMuCisvLworCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3Qu
aCIKKwordXNpbmcgbmFtZXNwYWNlIGFuZ2xlOworCitjbGFzcyBCdWlsdGluVmFyaWFibGVWZXJ0
ZXhJZFRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBCdWlsdGlu
VmFyaWFibGVWZXJ0ZXhJZFRlc3QoKQorICAgIHsKKyAgICAgICAgc2V0V2luZG93V2lkdGgoNjQp
OworICAgICAgICBzZXRXaW5kb3dIZWlnaHQoNjQpOworICAgICAgICBzZXRDb25maWdSZWRCaXRz
KDgpOworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0Js
dWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgICAgIHNldENv
bmZpZ0RlcHRoQml0cygyNCk7CisgICAgfQorCisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7CisKKyAgICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcgdnNTb3VyY2UgPQorICAgICAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAg
ICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKKyAgICAgICAgICAgICJpbiB2ZWM0IHBv
c2l0aW9uO1xuIgorICAgICAgICAgICAgImluIGludCBleHBlY3RlZElEOyIKKyAgICAgICAgICAg
ICJvdXQgdmVjNCBjb2xvcjtcbiIKKyAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICJ2b2lk
IG1haW4oKVxuIgorICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICIgICAgZ2xfUG9zaXRp
b24gPSBwb3NpdGlvbjtcbiIKKyAgICAgICAgICAgICIgICAgY29sb3IgPSB2ZWM0KGdsX1ZlcnRl
eElEICE9IGV4cGVjdGVkSUQsIGdsX1ZlcnRleElEID09IGV4cGVjdGVkSUQsIDAuMCwgMS4wKTsi
CisgICAgICAgICAgICAifVxuIjsKKworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmc1NvdXJj
ZSA9CisgICAgICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICAgICAicHJlY2lz
aW9uIGhpZ2hwIGZsb2F0O1xuIgorICAgICAgICAgICAgImluIHZlYzQgY29sb3I7XG4iCisgICAg
ICAgICAgICAib3V0IHZlYzQgZnJhZ0NvbG9yO1xuIgorICAgICAgICAgICAgInZvaWQgbWFpbigp
XG4iCisgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgIiAgICBmcmFnQ29sb3IgPSBjb2xv
cjtcbiIKKyAgICAgICAgICAgICJ9XG4iOworCisgICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVBy
b2dyYW0odnNTb3VyY2UsIGZzU291cmNlKTsKKyAgICAgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3Jh
bSk7CisKKyAgICAgICAgbVBvc2l0aW9uTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Q
cm9ncmFtLCAicG9zaXRpb24iKTsKKyAgICAgICAgQVNTRVJUX05FKC0xLCBtUG9zaXRpb25Mb2Nh
dGlvbik7CisgICAgICAgIG1FeHBlY3RlZElkTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9u
KG1Qcm9ncmFtLCAiZXhwZWN0ZWRJRCIpOworICAgICAgICBBU1NFUlRfTkUoLTEsIG1FeHBlY3Rl
ZElkTG9jYXRpb24pOworCisgICAgICAgIHN0YXRpYyBjb25zdCBmbG9hdCBwb3NpdGlvbnNbXSA9
CisgICAgICAgIHsKKyAgICAgICAgICAgICAwLjUsICAwLjUsCisgICAgICAgICAgICAtMC41LCAg
MC41LAorICAgICAgICAgICAgIDAuNSwgLTAuNSwKKyAgICAgICAgICAgIC0wLjUsIC0wLjUKKyAg
ICAgICAgfTsKKyAgICAgICAgZ2xHZW5CdWZmZXJzKDEsICZtUG9zaXRpb25CdWZmZXIpOworICAg
ICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtUG9zaXRpb25CdWZmZXIpOworICAg
ICAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBzaXplb2YocG9zaXRpb25zKSwgcG9z
aXRpb25zLCBHTF9TVEFUSUNfRFJBVyk7CisKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBn
bERlbGV0ZUJ1ZmZlcnMoMSwgJm1Qb3NpdGlvbkJ1ZmZlcik7CisgICAgICAgIGdsRGVsZXRlQnVm
ZmVycygxLCAmbUV4cGVjdGVkSWRCdWZmZXIpOworICAgICAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwg
Jm1JbmRleEJ1ZmZlcik7CisgICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7CisKKyAg
ICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOworICAgIH0KKworICAgIC8vIFJlbmRlcnMgYSBw
cmltaXRpdmUgdXNpbmcgdGhlIHNwZWNpZmllZCBtb2RlLCBlYWNoIHZlcnRleCBjb2xvciB3aWxs
CisgICAgLy8gYmUgZ3JlZW4gaWYgZ2xfVmVydGV4SUQgaXMgY29ycmVjdCwgcmVkIG90aGVyd2lz
ZS4KKyAgICB2b2lkIHJ1blRlc3QoR0x1aW50IGRyYXdNb2RlLCBjb25zdCBzdGQ6OnZlY3RvcjxH
TGludD4gJmluZGljZXMsIGludCBjb3VudCkKKyAgICB7CisgICAgICAgIGdsQ2xlYXJDb2xvcigw
LjAsIDAuMCwgMC4wLCAxLjApOworICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQp
OworCisgICAgICAgIGdsR2VuQnVmZmVycygxLCAmbUluZGV4QnVmZmVyKTsKKyAgICAgICAgZ2xC
aW5kQnVmZmVyKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBtSW5kZXhCdWZmZXIpOworICAgICAg
ICBnbEJ1ZmZlckRhdGEoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIHNpemVvZihHTGludCkgKiBp
bmRpY2VzLnNpemUoKSwgaW5kaWNlcy5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgICBHTF9T
VEFUSUNfRFJBVyk7CisKKyAgICAgICAgc3RkOjp2ZWN0b3I8R0xpbnQ+IGV4cGVjdGVkSWRzID0g
bWFrZVJhbmdlKGNvdW50KTsKKworICAgICAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1FeHBlY3RlZElk
QnVmZmVyKTsKKyAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUV4cGVjdGVk
SWRCdWZmZXIpOworICAgICAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBzaXplb2Yo
R0xpbnQpICogZXhwZWN0ZWRJZHMuc2l6ZSgpLCBleHBlY3RlZElkcy5kYXRhKCksCisgICAgICAg
ICAgICAgICAgICAgICBHTF9TVEFUSUNfRFJBVyk7CisKKyAgICAgICAgZ2xCaW5kQnVmZmVyKEdM
X0FSUkFZX0JVRkZFUiwgbVBvc2l0aW9uQnVmZmVyKTsKKyAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQ
b2ludGVyKG1Qb3NpdGlvbkxvY2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIDApOwor
ICAgICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1Qb3NpdGlvbkxvY2F0aW9uKTsKKwor
ICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtRXhwZWN0ZWRJZEJ1ZmZlcik7
CisgICAgICAgIGdsVmVydGV4QXR0cmliSVBvaW50ZXIobUV4cGVjdGVkSWRMb2NhdGlvbiwgMSwg
R0xfSU5ULCAwLCAwKTsKKyAgICAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtRXhwZWN0
ZWRJZExvY2F0aW9uKTsKKworICAgICAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworICAgICAg
ICBnbEJpbmRCdWZmZXIoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG1JbmRleEJ1ZmZlcik7Cisg
ICAgICAgIGdsRHJhd0VsZW1lbnRzKGRyYXdNb2RlLCBjb3VudCwgR0xfVU5TSUdORURfSU5ULCAw
KTsKKworICAgICAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBwaXhlbHMoZ2V0V2luZG93V2lkdGgo
KSAqIGdldFdpbmRvd0hlaWdodCgpKTsKKyAgICAgICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIGdldFdp
bmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRF
LAorICAgICAgICAgICAgICAgICAgICAgcGl4ZWxzLmRhdGEoKSk7CisKKyAgICAgICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgY29uc3QgR0xDb2xvciBncmVlbigwLCAyNTUsIDAs
IDI1NSk7CisgICAgICAgIGNvbnN0IEdMQ29sb3IgYmxhY2soMCwgMCwgMCwgMjU1KTsKKworICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8gJnBpeGVsIDogcGl4ZWxzKQorICAgICAgICB7CisgICAgICAg
ICAgICBFWFBFQ1RfVFJVRShwaXhlbCA9PSBncmVlbiB8fCBwaXhlbCA9PSBibGFjayk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBzdGQ6OnZlY3RvcjxHTGludD4gbWFrZVJhbmdlKGludCBuKSBj
b25zdAorICAgIHsKKyAgICAgICAgc3RkOjp2ZWN0b3I8R0xpbnQ+IHJlc3VsdDsKKyAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlc3Vs
dC5wdXNoX2JhY2soaSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KKworICAgIEdMdWludCBtUG9zaXRpb25CdWZmZXIgICA9IDA7CisgICAgR0x1aW50IG1FeHBl
Y3RlZElkQnVmZmVyID0gMDsKKyAgICBHTHVpbnQgbUluZGV4QnVmZmVyICAgICAgPSAwOworCisg
ICAgR0x1aW50IG1Qcm9ncmFtICAgICAgICAgICA9IDA7CisgICAgR0xpbnQgbVBvc2l0aW9uTG9j
YXRpb24gICA9IC0xOworICAgIEdMaW50IG1FeHBlY3RlZElkTG9jYXRpb24gPSAtMTsKK307CisK
Ky8vIFRlc3QgZ2xfVmVydGV4SUQgd2hlbiByZW5kZXJpbmcgcG9pbnRzCitURVNUX1AoQnVpbHRp
blZhcmlhYmxlVmVydGV4SWRUZXN0LCBQb2ludHMpCit7CisgICAgcnVuVGVzdChHTF9QT0lOVFMs
IG1ha2VSYW5nZSg0KSwgNCk7Cit9CisKKy8vIFRlc3QgZ2xfVmVydGV4SUQgd2hlbiByZW5kZXJp
bmcgbGluZSBzdHJpcHMKK1RFU1RfUChCdWlsdGluVmFyaWFibGVWZXJ0ZXhJZFRlc3QsIExpbmVT
dHJpcCkKK3sKKyAgICBydW5UZXN0KEdMX0xJTkVfU1RSSVAsIG1ha2VSYW5nZSg0KSwgNCk7Cit9
CisKKy8vIFRlc3QgZ2xfVmVydGV4SUQgd2hlbiByZW5kZXJpbmcgbGluZSBsb29wcworVEVTVF9Q
KEJ1aWx0aW5WYXJpYWJsZVZlcnRleElkVGVzdCwgTGluZUxvb3ApCit7CisgICAgcnVuVGVzdChH
TF9MSU5FX0xPT1AsIG1ha2VSYW5nZSg0KSwgNCk7Cit9CisKKy8vIFRlc3QgZ2xfVmVydGV4SUQg
d2hlbiByZW5kZXJpbmcgbGluZXMKK1RFU1RfUChCdWlsdGluVmFyaWFibGVWZXJ0ZXhJZFRlc3Qs
IExpbmVzKQoreworICAgIHJ1blRlc3QoR0xfTElORVMsIG1ha2VSYW5nZSg0KSwgNCk7Cit9CisK
Ky8vIFRlc3QgZ2xfVmVydGV4SUQgd2hlbiByZW5kZXJpbmcgdHJpYW5nbGUgc3RyaXBzCitURVNU
X1AoQnVpbHRpblZhcmlhYmxlVmVydGV4SWRUZXN0LCBUcmlhbmdsZVN0cmlwKQoreworICAgIHJ1
blRlc3QoR0xfVFJJQU5HTEVfU1RSSVAsIG1ha2VSYW5nZSg0KSwgNCk7Cit9CisKKy8vIFRlc3Qg
Z2xfVmVydGV4SUQgd2hlbiByZW5kZXJpbmcgdHJpYW5nbGUgZmFucworVEVTVF9QKEJ1aWx0aW5W
YXJpYWJsZVZlcnRleElkVGVzdCwgVHJpYW5nbGVGYW4pCit7CisgICAgc3RkOjp2ZWN0b3I8R0xp
bnQ+IGluZGljZXM7CisgICAgaW5kaWNlcy5wdXNoX2JhY2soMCk7CisgICAgaW5kaWNlcy5wdXNo
X2JhY2soMSk7CisgICAgaW5kaWNlcy5wdXNoX2JhY2soMyk7CisgICAgaW5kaWNlcy5wdXNoX2Jh
Y2soMik7CisgICAgcnVuVGVzdChHTF9UUklBTkdMRV9GQU4sIGluZGljZXMsIDQpOworfQorCisv
LyBUZXN0IGdsX1ZlcnRleElEIHdoZW4gcmVuZGVyaW5nIHRyaWFuZ2xlcworVEVTVF9QKEJ1aWx0
aW5WYXJpYWJsZVZlcnRleElkVGVzdCwgVHJpYW5nbGVzKQoreworICAgIHN0ZDo6dmVjdG9yPEdM
aW50PiBpbmRpY2VzOworICAgIGluZGljZXMucHVzaF9iYWNrKDApOworICAgIGluZGljZXMucHVz
aF9iYWNrKDEpOworICAgIGluZGljZXMucHVzaF9iYWNrKDIpOworICAgIGluZGljZXMucHVzaF9i
YWNrKDEpOworICAgIGluZGljZXMucHVzaF9iYWNrKDIpOworICAgIGluZGljZXMucHVzaF9iYWNr
KDMpOworICAgIHJ1blRlc3QoR0xfVFJJQU5HTEVTLCBpbmRpY2VzLCA2KTsKK30KKworLy8gVXNl
IHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVy
LCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlCisvLyB0ZXN0cyBzaG91bGQgYmUgcnVu
IGFnYWluc3QuCitBTkdMRV9JTlNUQU5USUFURV9URVNUKEJ1aWx0aW5WYXJpYWJsZVZlcnRleElk
VGVzdCwgRVMzX0QzRDExKCksIEVTM19PUEVOR0woKSwgRVMzX09QRU5HTEVTKCkpOwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NsZWFyVGVzdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3Rz
L0NsZWFyVGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2dsX3Rlc3RzL0NsZWFyVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw0ODEgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgor
CisjaW5jbHVkZSAicmFuZG9tX3V0aWxzLmgiCisjaW5jbHVkZSAiVmVjdG9yLmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNlCit7CisKK1ZlY3RvcjQgUmFuZG9tVmVjNChp
bnQgc2VlZCwgZmxvYXQgbWluVmFsdWUsIGZsb2F0IG1heFZhbHVlKQoreworICAgIFJORyBybmco
c2VlZCk7CisgICAgc3JhbmQoc2VlZCk7CisgICAgcmV0dXJuIFZlY3RvcjQoCisgICAgICAgIHJu
Zy5yYW5kb21GbG9hdEJldHdlZW4obWluVmFsdWUsIG1heFZhbHVlKSwgcm5nLnJhbmRvbUZsb2F0
QmV0d2VlbihtaW5WYWx1ZSwgbWF4VmFsdWUpLAorICAgICAgICBybmcucmFuZG9tRmxvYXRCZXR3
ZWVuKG1pblZhbHVlLCBtYXhWYWx1ZSksIHJuZy5yYW5kb21GbG9hdEJldHdlZW4obWluVmFsdWUs
IG1heFZhbHVlKSk7Cit9CisKK0dMQ29sb3IgVmVjNFRvQ29sb3IoY29uc3QgVmVjdG9yNCAmdmVj
KQoreworICAgIEdMQ29sb3IgY29sb3I7CisgICAgY29sb3IuUiA9IHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KHZlYy54ICogMjU1LjBmKTsKKyAgICBjb2xvci5HID0gc3RhdGljX2Nhc3Q8dWludDhfdD4o
dmVjLnkgKiAyNTUuMGYpOworICAgIGNvbG9yLkIgPSBzdGF0aWNfY2FzdDx1aW50OF90Pih2ZWMu
eiAqIDI1NS4wZik7CisgICAgY29sb3IuQSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHZlYy53ICog
MjU1LjBmKTsKKyAgICByZXR1cm4gY29sb3I7Cit9OworCitjbGFzcyBDbGVhclRlc3RCYXNlIDog
cHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgQ2xlYXJUZXN0QmFzZSgpIDog
bVByb2dyYW0oMCkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7CisgICAgICAg
IHNldFdpbmRvd0hlaWdodCgxMjgpOworICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOworICAg
ICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgp
OworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0RlcHRo
Qml0cygyNCk7CisgICAgfQorCisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAg
ICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7CisKKyAgICAgICAgbUZCT3MucmVzaXplKDIsIDApOwor
ICAgICAgICBnbEdlbkZyYW1lYnVmZmVycygyLCBtRkJPcy5kYXRhKCkpOworCisgICAgICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlk
ZQorICAgIHsKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKKworICAgICAgICBp
ZiAoIW1GQk9zLmVtcHR5KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsRGVsZXRlRnJhbWVi
dWZmZXJzKHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1GQk9zLnNpemUoKSksIG1GQk9zLmRhdGEoKSk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW1UZXh0dXJlcy5lbXB0eSgpKQorICAgICAgICB7
CisgICAgICAgICAgICBnbERlbGV0ZVRleHR1cmVzKHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1UZXh0
dXJlcy5zaXplKCkpLCBtVGV4dHVyZXMuZGF0YSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIEFO
R0xFVGVzdDo6VGVhckRvd24oKTsKKyAgICB9CisKKyAgICB2b2lkIHNldHVwRGVmYXVsdFByb2dy
YW0oKQorICAgIHsKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNl
ID0gU0hBREVSX1NPVVJDRQorICAgICAgICAoCisgICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAg
ZmxvYXQ7CisgICAgICAgICAgICBhdHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjsKKworICAgICAgICAg
ICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbF9Qb3NpdGlv
biA9IHBvc2l0aW9uOworICAgICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQorICAgICAg
ICAoCisgICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisKKyAgICAgICAgICAgIHZv
aWQgbWFpbigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0g
dmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApOworICAgICAgICAgICAgfQorICAgICAgICApOworCisg
ICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFn
bWVudFNoYWRlclNvdXJjZSk7CisgICAgICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOworICAg
IH0KKworICAgIEdMdWludCBtUHJvZ3JhbTsKKyAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IG1GQk9z
OworICAgIHN0ZDo6dmVjdG9yPEdMdWludD4gbVRleHR1cmVzOworfTsKKworY2xhc3MgQ2xlYXJU
ZXN0IDogcHVibGljIENsZWFyVGVzdEJhc2Uge307CitjbGFzcyBDbGVhclRlc3RFUzMgOiBwdWJs
aWMgQ2xlYXJUZXN0QmFzZSB7fTsKKworLy8gVGVzdCBjbGVhcmluZyB0aGUgZGVmYXVsdCBmcmFt
ZWJ1ZmZlcgorVEVTVF9QKENsZWFyVGVzdCwgRGVmYXVsdEZyYW1lYnVmZmVyKQoreworICAgIGds
Q2xlYXJDb2xvcigwLjI1ZiwgMC41ZiwgMC41ZiwgMC41Zik7CisgICAgZ2xDbGVhcihHTF9DT0xP
Ul9CVUZGRVJfQklUKTsKKyAgICBFWFBFQ1RfUElYRUxfTkVBUigwLCAwLCA2NCwgMTI4LCAxMjgs
IDEyOCwgMS4wKTsKK30KKworLy8gVGVzdCBjbGVhcmluZyBhIFJHQkE4IEZyYW1lYnVmZmVyCitU
RVNUX1AoQ2xlYXJUZXN0LCBSR0JBOEZyYW1lYnVmZmVyKQoreworICAgIGdsQmluZEZyYW1lYnVm
ZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRkJPc1swXSk7CisKKyAgICBHTHVpbnQgdGV4dHVyZTsKKyAg
ICBnbEdlblRleHR1cmVzKDEsICZ0ZXh0dXJlKTsKKworICAgIGdsQmluZFRleHR1cmUoR0xfVEVY
VFVSRV8yRCwgdGV4dHVyZSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdM
X1JHQkEsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAwLCBHTF9SR0JBLAor
ICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKKyAgICBnbEZyYW1l
YnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xf
VEVYVFVSRV8yRCwgdGV4dHVyZSwgMCk7CisKKyAgICBnbENsZWFyQ29sb3IoMC41ZiwgMC41Ziwg
MC41ZiwgMC41Zik7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAgIEVY
UEVDVF9QSVhFTF9ORUFSKDAsIDAsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMS4wKTsKK30KKworVEVT
VF9QKENsZWFyVGVzdCwgQ2xlYXJJc3N1ZSkKK3sKKyAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IEZp
Z3VyZSBvdXQgd2h5IHRoaXMgaXMgYnJva2VuIG9uIEludGVsIE9wZW5HTAorICAgIGlmIChJc0lu
dGVsKCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBF
X09QRU5HTF9BTkdMRSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVk
IG9uIEludGVsIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGdsRW5hYmxlKEdMX0RFUFRIX1RFU1QpOworICAgIGdsRGVwdGhGdW5jKEdMX0xFUVVB
TCk7CisKKyAgICBnbENsZWFyQ29sb3IoMC4wLCAxLjAsIDAuMCwgMS4wKTsKKyAgICBnbENsZWFy
RGVwdGhmKDAuMCk7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhf
QlVGRkVSX0JJVCk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsQmluZEZy
YW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRkJPc1swXSk7CisKKyAgICBHTHVpbnQgcmJvOwor
ICAgIGdsR2VuUmVuZGVyYnVmZmVycygxLCAmcmJvKTsKKyAgICBnbEJpbmRSZW5kZXJidWZmZXIo
R0xfUkVOREVSQlVGRkVSLCByYm8pOworICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5E
RVJCVUZGRVIsIEdMX1JHQjU2NSwgMTYsIDE2KTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OworCisgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfQ09M
T1JfQVRUQUNITUVOVDAsIEdMX1JFTkRFUkJVRkZFUiwgcmJvKTsKKworICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOworCisgICAgZ2xDbGVhckNvbG9yKDEuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOwor
ICAgIGdsQ2xlYXJEZXB0aGYoMS4wZik7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklU
IHwgR0xfREVQVEhfQlVGRkVSX0JJVCk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKwor
ICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsKKyAgICBnbEJpbmRCdWZm
ZXIoR0xfQVJSQVlfQlVGRkVSLCAwKTsKKworICAgIHNldHVwRGVmYXVsdFByb2dyYW0oKTsKKyAg
ICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisKKyAgICBFWFBFQ1RfUElY
RUxfRVEoMCwgMCwgMCwgMjU1LCAwLCAyNTUpOworfQorCisvLyBSZXF1aXJlcyBFUzMKKy8vIFRo
aXMgdGVzdHMgYSBidWcgd2hlcmUgaW4gYSBtYXNrZWQgY2xlYXIgd2hlbiBjYWxsaW5nICJDbGVh
ckJ1ZmZlciIsIHdlIHdvdWxkCisvLyBtaXN0YWtlbmx5IGNsZWFyIGV2ZXJ5IGNoYW5uZWwgKGlu
Y2x1ZGluZyB0aGUgbWFza2VkLW91dCBvbmVzKQorVEVTVF9QKENsZWFyVGVzdEVTMywgTWFza2Vk
Q2xlYXJCdWZmZXJCdWcpCit7CisgICAgdW5zaWduZWQgY2hhciBwaXhlbERhdGFbXSA9IHsgMjU1
LCAyNTUsIDI1NSwgMjU1IH07CisKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZF
UiwgbUZCT3NbMF0pOworCisgICAgR0x1aW50IHRleHR1cmVzWzJdOworICAgIGdsR2VuVGV4dHVy
ZXMoMiwgJnRleHR1cmVzWzBdKTsKKworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwg
dGV4dHVyZXNbMF0pOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JB
LCAxLCAxLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbERhdGEpOworICAgIGds
RnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQw
LCBHTF9URVhUVVJFXzJELCB0ZXh0dXJlc1swXSwgMCk7CisKKyAgICBnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQsIHRleHR1cmVzWzFdKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8y
RCwgMCwgR0xfUkdCQSwgMSwgMSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxE
YXRhKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xP
Ul9BVFRBQ0hNRU5UMSwgR0xfVEVYVFVSRV8yRCwgdGV4dHVyZXNbMV0sIDApOworCisgICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7CisgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDI1NSwgMjU1LCAy
NTUsIDI1NSk7CisKKyAgICBmbG9hdCBjbGVhclZhbHVlW10gPSB7IDAsIDAuNWYsIDAuNWYsIDEu
MGYgfTsKKyAgICBHTGVudW0gZHJhd0J1ZmZlcnNbXSA9IHsgR0xfTk9ORSwgR0xfQ09MT1JfQVRU
QUNITUVOVDEgfTsKKyAgICBnbERyYXdCdWZmZXJzKDIsIGRyYXdCdWZmZXJzKTsKKyAgICBnbENv
bG9yTWFzayhHTF9UUlVFLCBHTF9UUlVFLCBHTF9GQUxTRSwgR0xfVFJVRSk7CisgICAgZ2xDbGVh
ckJ1ZmZlcmZ2KEdMX0NPTE9SLCAxLCBjbGVhclZhbHVlKTsKKworICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOworICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAyNTUsIDI1NSwgMjU1LCAyNTUpOwor
CisgICAgZ2xSZWFkQnVmZmVyKEdMX0NPTE9SX0FUVEFDSE1FTlQxKTsKKyAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKKworICAgIEVYUEVDVF9QSVhFTF9ORUFSKDAsIDAsIDAsIDEyNywgMjU1LCAy
NTUsIDEpOworCisgICAgZ2xEZWxldGVUZXh0dXJlcygyLCB0ZXh0dXJlcyk7Cit9CisKK1RFU1Rf
UChDbGVhclRlc3RFUzMsIEJhZEZCT1NlcmlhbEJ1ZykKK3sKKyAgICAvLyBGaXJzdCBtYWtlIGEg
c2ltcGxlIGZyYW1lYnVmZmVyLCBhbmQgY2xlYXIgaXQgdG8gZ3JlZW4KKyAgICBnbEJpbmRGcmFt
ZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZCT3NbMF0pOworCisgICAgR0x1aW50IHRleHR1cmVz
WzJdOworICAgIGdsR2VuVGV4dHVyZXMoMiwgJnRleHR1cmVzWzBdKTsKKworICAgIGdsQmluZFRl
eHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZXNbMF0pOworICAgIGdsVGV4U3RvcmFnZTJEKEdM
X1RFWFRVUkVfMkQsIDEsIEdMX1JHQkE4LCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWln
aHQoKSk7CisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09M
T1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIHRleHR1cmVzWzBdLCAwKTsKKworICAgIEdM
ZW51bSBkcmF3QnVmZmVyc1tdID0geyBHTF9DT0xPUl9BVFRBQ0hNRU5UMCB9OworICAgIGdsRHJh
d0J1ZmZlcnMoMSwgZHJhd0J1ZmZlcnMpOworCisgICAgZmxvYXQgY2xlYXJWYWx1ZXMxW10gPSB7
IDAuMGYsIDEuMGYsIDAuMGYsIDEuMGYgfTsKKyAgICBnbENsZWFyQnVmZmVyZnYoR0xfQ09MT1Is
IDAsIGNsZWFyVmFsdWVzMSk7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBF
Q1RfUElYRUxfRVEoMCwgMCwgMCwgMjU1LCAwLCAyNTUpOworCisgICAgLy8gTmV4dCBtYWtlIGEg
c2Vjb25kIGZyYW1lYnVmZmVyLCBhbmQgZHJhdyBpdCB0byByZWQKKyAgICAvLyAoVHJpZ2dlcnMg
YmFkIGFwcGxpZWQgcmVuZGVyIHRhcmdldCBzZXJpYWwpCisgICAgR0x1aW50IGZibzI7CisgICAg
Z2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJmZibzIpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwor
CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIGZibzIpOworCisgICAgZ2xC
aW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlc1sxXSk7CisgICAgZ2xUZXhTdG9yYWdl
MkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdCQTgsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRv
d0hlaWdodCgpKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBH
TF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgdGV4dHVyZXNbMV0sIDApOworCisg
ICAgZ2xEcmF3QnVmZmVycygxLCBkcmF3QnVmZmVycyk7CisKKyAgICBzZXR1cERlZmF1bHRQcm9n
cmFtKCk7CisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworCisgICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDI1NSwgMCwg
MCwgMjU1KTsKKworICAgIC8vIENoZWNrIHRoYXQgdGhlIGZpcnN0IGZyYW1lYnVmZmVyIGlzIHN0
aWxsIGdyZWVuLgorICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRkJPc1sw
XSk7CisgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDAsIDI1NSwgMCwgMjU1KTsKKworICAgIGds
RGVsZXRlVGV4dHVyZXMoMiwgdGV4dHVyZXMpOworICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEs
ICZmYm8yKTsKK30KKworLy8gVGVzdCB0aGF0IFNSR0IgZnJhbWVidWZmZXJzIGNsZWFyIHRvIHRo
ZSBsaW5lYXJpemVkIGNsZWFyIGNvbG9yCitURVNUX1AoQ2xlYXJUZXN0RVMzLCBTUkdCQ2xlYXIp
Cit7CisgICAgLy8gVE9ETyhqbWFkaWxsKTogZmlndXJlIG91dCB3aHkgdGhpcyBmYWlscworICAg
IGlmIChJc0ludGVsKCkgJiYgR2V0UGFyYW0oKSA9PSBFUzNfT1BFTkdMKCkpCisgICAgeworICAg
ICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBkdWUgdG8gZmFpbHVyZXMu
IiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBGaXJzdCBt
YWtlIGEgc2ltcGxlIGZyYW1lYnVmZmVyLCBhbmQgY2xlYXIgaXQKKyAgICBnbEJpbmRGcmFtZWJ1
ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZCT3NbMF0pOworCisgICAgR0x1aW50IHRleHR1cmU7Cisg
ICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4dHVyZSk7CisKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RF
WFRVUkVfMkQsIHRleHR1cmUpOworICAgIGdsVGV4U3RvcmFnZTJEKEdMX1RFWFRVUkVfMkQsIDEs
IEdMX1NSR0I4X0FMUEhBOCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwor
ICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFD
SE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXh0dXJlLCAwKTsKKworICAgIGdsQ2xlYXJDb2xvcigw
LjVmLCAwLjVmLCAwLjVmLCAwLjVmKTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQp
OworCisgICAgRVhQRUNUX1BJWEVMX05FQVIoMCwgMCwgMTg4LCAxODgsIDE4OCwgMTI4LCAxLjAp
OworfQorCisvLyBUZXN0IHRoYXQgZnJhbWVidWZmZXJzIHdpdGggbWl4ZWQgU1JHQi9MaW5lYXIg
YXR0YWNobWVudHMgY2xlYXIgdG8gdGhlIGNvcnJlY3QgY29sb3IgZm9yIGVhY2gKKy8vIGF0dGFj
aG1lbnQKK1RFU1RfUChDbGVhclRlc3RFUzMsIE1peGVkU1JHQkNsZWFyKQoreworICAgIC8vIFRP
RE8oY3dhbGxleikgZmlndXJlIG91dCB3aHkgaXQgaXMgYnJva2VuIG9uIEludGVsIG9uIE1hYwor
I2lmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fQVBQTEUpCisgICAgaWYgKElzSW50ZWwoKSAmJiBn
ZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FO
R0xFKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwg
b24gTWFjLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisK
KyAgICAvLyBUT0RPKGptYWRpbGwpOiBmaWd1cmUgb3V0IHdoeSB0aGlzIGZhaWxzCisgICAgaWYg
KElzSW50ZWwoKSAmJiBHZXRQYXJhbSgpID09IEVTM19PUEVOR0woKSkKKyAgICB7CisgICAgICAg
IHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIGR1ZSB0byBmYWlsdXJlcy4iIDw8
IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGdsQmluZEZyYW1lYnVm
ZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRkJPc1swXSk7CisKKyAgICBHTHVpbnQgdGV4dHVyZXNbMl07
CisgICAgZ2xHZW5UZXh0dXJlcygyLCAmdGV4dHVyZXNbMF0pOworCisgICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlc1swXSk7CisgICAgZ2xUZXhTdG9yYWdlMkQoR0xfVEVY
VFVSRV8yRCwgMSwgR0xfU1JHQjhfQUxQSEE4LCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dI
ZWlnaHQoKSk7CisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xf
Q09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIHRleHR1cmVzWzBdLCAwKTsKKworICAg
IGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZXNbMV0pOworICAgIGdsVGV4U3Rv
cmFnZTJEKEdMX1RFWFRVUkVfMkQsIDEsIEdMX1JHQkE4LCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRX
aW5kb3dIZWlnaHQoKSk7CisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZF
UiwgR0xfQ09MT1JfQVRUQUNITUVOVDEsIEdMX1RFWFRVUkVfMkQsIHRleHR1cmVzWzFdLCAwKTsK
KworICAgIEdMZW51bSBkcmF3QnVmZmVyc1tdID0ge0dMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9D
T0xPUl9BVFRBQ0hNRU5UMX07CisgICAgZ2xEcmF3QnVmZmVycygyLCBkcmF3QnVmZmVycyk7CisK
KyAgICAvLyBDbGVhciBib3RoIHRleHR1cmVzCisgICAgZ2xDbGVhckNvbG9yKDAuNWYsIDAuNWYs
IDAuNWYsIDAuNWYpOworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisKKyAgICBn
bEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5U
MCwgR0xfVEVYVFVSRV8yRCwgMCwgMCk7CisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9G
UkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDEsIEdMX1RFWFRVUkVfMkQsIDAsIDApOwor
CisgICAgLy8gQ2hlY2sgdmFsdWUgb2YgdGV4dHVyZTAKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVy
ZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwg
dGV4dHVyZXNbMF0sIDApOworICAgIEVYUEVDVF9QSVhFTF9ORUFSKDAsIDAsIDE4OCwgMTg4LCAx
ODgsIDEyOCwgMS4wKTsKKworICAgIC8vIENoZWNrIHZhbHVlIG9mIHRleHR1cmUxCisgICAgZ2xG
cmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAs
IEdMX1RFWFRVUkVfMkQsIHRleHR1cmVzWzFdLCAwKTsKKyAgICBFWFBFQ1RfUElYRUxfTkVBUigw
LCAwLCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEuMCk7Cit9CisKKy8vIFRoaXMgdGVzdCBjb3ZlcnMg
YSBEM0QxMSBidWcgd2hlcmUgY2FsbGluZyBDbGVhclJlbmRlclRhcmdldFZpZXcgc29tZXRpbWVz
IHdvdWxkbid0IHN5bmMKKy8vIGJlZm9yZSBhIGRyYXcgY2FsbC4gVGhlIHRlc3QgZHJhd3Mgc21h
bGwgcXVhZHMgdG8gYSBsYXJnZXIgRkJPICh0aGUgZGVmYXVsdCBiYWNrIGJ1ZmZlcikuCisvLyBC
ZWZvcmUgZWFjaCBibGl0IHRvIHRoZSBiYWNrIGJ1ZmZlciBpdCBjbGVhcnMgdGhlIHF1YWQgdG8g
YSBjZXJ0YWluIGNvbG9yIHVzaW5nCisvLyBDbGVhckJ1ZmZlcmZ2IHRvIGdpdmUgYSBzb2xpZCBj
b2xvci4gVGhlIHN5bmMgcHJvYmxlbSBnb2VzIGF3YXkgaWYgd2UgaW5zZXJ0IGEgY2FsbCB0bwor
Ly8gZmx1c2ggb3IgZmluaXNoIGFmdGVyIENsZWFyQnVmZmVyZnYgb3IgZWFjaCBkcmF3LgorVEVT
VF9QKENsZWFyVGVzdEVTMywgUmVwZWF0ZWRDbGVhcikKK3sKKyAgICBpZiAoSXNEM0QxMSgpICYm
IChJc05WSURJQSgpIHx8IElzSW50ZWwoKSkpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwg
IlRlc3Qgc2tpcHBlZCBvbiBOdmlkaWEgYW5kIEludGVsIEQzRDExLiIgPDwgc3RkOjplbmRsOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZlcnRleFNv
dXJjZSA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgImluIGhpZ2hwIHZl
YzIgcG9zaXRpb247XG4iCisgICAgICAgICJvdXQgaGlnaHAgdmVjMiB2X2Nvb3JkO1xuIgorICAg
ICAgICAidm9pZCBtYWluKHZvaWQpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgZ2xf
UG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAwLCAxKTtcbiIKKyAgICAgICAgIiAgICB2ZWMyIHRl
eENvb3JkID0gKHBvc2l0aW9uICogMC41KSArIDAuNTtcbiIKKyAgICAgICAgIiAgICB2X2Nvb3Jk
ID0gdGV4Q29vcmQ7XG4iCisgICAgICAgICJ9XG4iOworCisgICAgY29uc3Qgc3RkOjpzdHJpbmcg
JmZyYWdtZW50U291cmNlID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAi
aW4gaGlnaHAgdmVjMiB2X2Nvb3JkO1xuIgorICAgICAgICAib3V0IGhpZ2hwIHZlYzQgY29sb3I7
XG4iCisgICAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7XG4iCisgICAgICAgICJ2b2lkIG1h
aW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGNvbG9yID0gdGV4dHVyZSh0ZXgs
IHZfY29vcmQpO1xuIgorICAgICAgICAifVxuIjsKKworICAgIG1Qcm9ncmFtID0gQ29tcGlsZVBy
b2dyYW0odmVydGV4U291cmNlLCBmcmFnbWVudFNvdXJjZSk7CisgICAgQVNTRVJUX05FKDB1LCBt
UHJvZ3JhbSk7CisKKyAgICBtVGV4dHVyZXMucmVzaXplKDEsIDApOworICAgIGdsR2VuVGV4dHVy
ZXMoMSwgbVRleHR1cmVzLmRhdGEoKSk7CisKKyAgICBHTGVudW0gZm9ybWF0ICAgICAgICAgICA9
IEdMX1JHQkE4OworICAgIGNvbnN0IGludCBudW1Sb3dzQ29scyAgID0gMzsKKyAgICBjb25zdCBp
bnQgY2VsbFNpemUgICAgICA9IDMyOworICAgIGNvbnN0IGludCBmYm9TaXplICAgICAgID0gY2Vs
bFNpemU7CisgICAgY29uc3QgaW50IGJhY2tGQk9TaXplICAgPSBjZWxsU2l6ZSAqIG51bVJvd3ND
b2xzOworICAgIGNvbnN0IGZsb2F0IGZtdFZhbHVlTWluID0gMC4wZjsKKyAgICBjb25zdCBmbG9h
dCBmbXRWYWx1ZU1heCA9IDEuMGY7CisKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQs
IG1UZXh0dXJlc1swXSk7CisgICAgZ2xUZXhTdG9yYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgZm9y
bWF0LCBmYm9TaXplLCBmYm9TaXplKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7
CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRF
UiwgR0xfTkVBUkVTVCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
CisKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZCT3NbMF0pOworICAg
IGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1F
TlQwLCBHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0sIDApOworICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOworCisgICAgQVNTRVJUX0dMRU5VTV9FUShHTF9GUkFNRUJVRkZFUl9DT01QTEVURSwg
Z2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7CisKKyAgICAvLyBsYXJn
ZXIgZmJvIGJvdW5kIC0tIGNsZWFyIHRvIHRyYW5zcGFyZW50IGJsYWNrCisgICAgZ2xVc2VQcm9n
cmFtKG1Qcm9ncmFtKTsKKyAgICBHTGludCB1bmlMb2MgPSBnbEdldFVuaWZvcm1Mb2NhdGlvbiht
UHJvZ3JhbSwgInRleCIpOworICAgIEFTU0VSVF9ORSgtMSwgdW5pTG9jKTsKKyAgICBnbFVuaWZv
cm0xaSh1bmlMb2MsIDApOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1
cmVzWzBdKTsKKworICAgIEdMaW50IHBvc2l0aW9uTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0
aW9uKG1Qcm9ncmFtLCAicG9zaXRpb24iKTsKKyAgICBBU1NFUlRfTkUoLTEsIHBvc2l0aW9uTG9j
YXRpb24pOworCisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKKworICAgIGZvciAoaW50IGNl
bGxZID0gMDsgY2VsbFkgPCBudW1Sb3dzQ29sczsgY2VsbFkrKykKKyAgICB7CisgICAgICAgIGZv
ciAoaW50IGNlbGxYID0gMDsgY2VsbFggPCBudW1Sb3dzQ29sczsgY2VsbFgrKykKKyAgICAgICAg
eworICAgICAgICAgICAgaW50IHNlZWQgICAgICAgICAgICA9IGNlbGxYICsgY2VsbFkgKiBudW1S
b3dzQ29sczsKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjQgY29sb3IgPSBSYW5kb21WZWM0KHNl
ZWQsIGZtdFZhbHVlTWluLCBmbXRWYWx1ZU1heCk7CisKKyAgICAgICAgICAgIGdsQmluZEZyYW1l
YnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRkJPc1swXSk7CisgICAgICAgICAgICBnbENsZWFyQnVm
ZmVyZnYoR0xfQ09MT1IsIDAsIGNvbG9yLmRhdGEoKSk7CisKKyAgICAgICAgICAgIGdsQmluZEZy
YW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsKKworICAgICAgICAgICAgLy8gTWV0aG9kIDE6
IFNldCB2aWV3cG9ydCBhbmQgZHJhdyBmdWxsLXZpZXdwb3J0IHF1YWQKKyAgICAgICAgICAgIGds
Vmlld3BvcnQoY2VsbFggKiBjZWxsU2l6ZSwgY2VsbFkgKiBjZWxsU2l6ZSwgY2VsbFNpemUsIGNl
bGxTaXplKTsKKyAgICAgICAgICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVm
KTsKKworICAgICAgICAgICAgLy8gVW5jb21tZW50aW5nIHRoZSBnbEZpbmlzaCBjYWxsIHNlZW1z
IHRvIG1ha2UgdGhlIHRlc3QgcGFzcy4KKyAgICAgICAgICAgIC8vIGdsRmluaXNoKCk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBwaXhlbERhdGEoYmFja0ZC
T1NpemUgKiBiYWNrRkJPU2l6ZSk7CisgICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIGJhY2tGQk9TaXpl
LCBiYWNrRkJPU2l6ZSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxEYXRhLmRhdGEo
KSk7CisKKyAgICBmb3IgKGludCBjZWxsWSA9IDA7IGNlbGxZIDwgbnVtUm93c0NvbHM7IGNlbGxZ
KyspCisgICAgeworICAgICAgICBmb3IgKGludCBjZWxsWCA9IDA7IGNlbGxYIDwgbnVtUm93c0Nv
bHM7IGNlbGxYKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGludCBzZWVkICAgICAgICAgICAg
ICA9IGNlbGxYICsgY2VsbFkgKiBudW1Sb3dzQ29sczsKKyAgICAgICAgICAgIGNvbnN0IFZlY3Rv
cjQgY29sb3IgICA9IFJhbmRvbVZlYzQoc2VlZCwgZm10VmFsdWVNaW4sIGZtdFZhbHVlTWF4KTsK
KyAgICAgICAgICAgIEdMQ29sb3IgZXhwZWN0ZWRDb2xvciA9IFZlYzRUb0NvbG9yKGNvbG9yKTsK
KworICAgICAgICAgICAgaW50IHRlc3ROICAgICAgICAgICA9IGNlbGxYICogY2VsbFNpemUgKyBj
ZWxsWSAqIGJhY2tGQk9TaXplICogY2VsbFNpemUgKyBiYWNrRkJPU2l6ZSArIDE7CisgICAgICAg
ICAgICBHTENvbG9yIGFjdHVhbENvbG9yID0gcGl4ZWxEYXRhW3Rlc3ROXTsKKyAgICAgICAgICAg
IEVYUEVDVF9ORUFSKGV4cGVjdGVkQ29sb3IuUiwgYWN0dWFsQ29sb3IuUiwgMSk7CisgICAgICAg
ICAgICBFWFBFQ1RfTkVBUihleHBlY3RlZENvbG9yLkcsIGFjdHVhbENvbG9yLkcsIDEpOworICAg
ICAgICAgICAgRVhQRUNUX05FQVIoZXhwZWN0ZWRDb2xvci5CLCBhY3R1YWxDb2xvci5CLCAxKTsK
KyAgICAgICAgICAgIEVYUEVDVF9ORUFSKGV4cGVjdGVkQ29sb3IuQSwgYWN0dWFsQ29sb3IuQSwg
MSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKK30KKwor
Ly8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJl
bmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBy
dW4gYWdhaW5zdC4KK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoQ2xlYXJUZXN0LAorICAgICAgICAg
ICAgICAgICAgICAgICBFUzJfRDNEOSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNE
MTEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExKCksCisgICAgICAgICAgICAg
ICAgICAgICAgIEVTMl9PUEVOR0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5H
TCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChDbGVh
clRlc3RFUzMsIEVTM19EM0QxMSgpLCBFUzNfT1BFTkdMKCksIEVTM19PUEVOR0xFUygpKTsKKwor
fSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2dsX3Rlc3RzL0NvbG9yTWFza1Rlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Db2xvck1hc2tUZXN0LmNwcAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVz
dHMvQ29sb3JNYXNrVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTAgQEAKKy8v
CisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisKKy8vIENvbG9yTWFza1Rlc3QuY3BwOiBUZXN0IEdMRVMgZnVuY3Rpb25hbGl0eSBy
ZWxhdGVkIHRvIGNvbG9yIG1hc2tzLCBwYXJ0aWN1bGFybHkgYW4gQU1EIEQzRDkKKy8vIGRyaXZl
ciBidWcuCisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorCituYW1lc3BhY2Ug
YW5nbGUKK3sKK2NsYXNzIENvbG9yTWFza1Rlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHBy
b3RlY3RlZDoKKyAgICBDb2xvck1hc2tUZXN0KCkgOiBtUHJvZ3JhbSgwKQorICAgIHsKKyAgICAg
ICAgc2V0V2luZG93V2lkdGgoMTI4KTsKKyAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7Cisg
ICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4
KTsKKyAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0FscGhh
Qml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnRGVwdGhCaXRzKDI0KTsKKyAgICB9CisKKyAgICB2
b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsK
KworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB2c1NvdXJjZSA9CisgICAgICAgICAgICAicHJl
Y2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgorICAgICAgICAgICAgImF0dHJpYnV0ZSB2ZWM0IHBvc2l0
aW9uO1xuIgorICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCisg
ICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9u
O1xuIgorICAgICAgICAgICAgIn1cbiI7CisKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnNT
b3VyY2UgPQorICAgICAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKKyAgICAgICAg
ICAgICJ1bmlmb3JtIHZlYzQgY29sb3I7XG4iCisgICAgICAgICAgICAiXG4iCisgICAgICAgICAg
ICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAiICAgIGds
X0ZyYWdDb2xvciA9IGNvbG9yO1xuIgorICAgICAgICAgICAgIn1cbiI7CisKKyAgICAgICAgbVBy
b2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2c1NvdXJjZSwgZnNTb3VyY2UpOworICAgICAgICBBU1NF
UlRfTkUoMHUsIG1Qcm9ncmFtKSA8PCAic2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZC4iOworCisg
ICAgICAgIG1Db2xvclVuaWZvcm0gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgImNv
bG9yIik7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAgeworICAg
ICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOworCisgICAgICAgIEFOR0xFVGVzdDo6VGVh
ckRvd24oKTsKKyAgICB9CisKKyAgICBHTHVpbnQgbVByb2dyYW0gICAgID0gMDsKKyAgICBHTGlu
dCBtQ29sb3JVbmlmb3JtID0gLTE7Cit9OworCisvLyBTb21lIEFUSSBjYXJkcyBoYXZlIGEgYnVn
IHdoZXJlIGEgZHJhdyB3aXRoIGEgemVybyBjb2xvciB3cml0ZSBtYXNrIGNhbiBjYXVzZSBsYXRl
ciBkcmF3cyB0byBoYXZlCisvLyBpbmNvcnJlY3QgcmVzdWx0cy4gVGVzdCB0byBtYWtlIHN1cmUg
dGhpcyBidWcgaXMgbm90IGV4cG9zZWQuCitURVNUX1AoQ29sb3JNYXNrVGVzdCwgQU1EWmVyb0Nv
bG9yTWFza0J1ZykKK3sKKyAgICBpbnQgeCA9IGdldFdpbmRvd1dpZHRoKCkgLyAyOworICAgIGlu
dCB5ID0gZ2V0V2luZG93SGVpZ2h0KCkgLyAyOworCisgICAgLy8gQ2xlYXIgdG8gYmx1ZQorICAg
IGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAxLjBmLCAxLjBmKTsKKyAgICBnbENsZWFyKEdMX0NP
TE9SX0JVRkZFUl9CSVQpOworICAgIEVYUEVDVF9QSVhFTF9FUSh4LCB5LCAwLCAwLCAyNTUsIDI1
NSk7CisKKyAgICAvLyBEcmF3IGEgcXVhZCB3aXRoIGFsbCBjb2xvcnMgbWFza2VkIGFuZCBibGVu
ZGluZyBkaXNhYmxlZCwgc2hvdWxkIHJlbWFpbiBibHVlCisgICAgZ2xDb2xvck1hc2soR0xfRkFM
U0UsIEdMX0ZBTFNFLCBHTF9GQUxTRSwgR0xfRkFMU0UpOworICAgIGdsRGlzYWJsZShHTF9CTEVO
RCk7CisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICBnbFVuaWZvcm00ZihtQ29sb3JV
bmlmb3JtLCAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1Io
KTsKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgRVhQRUNU
X1BJWEVMX0VRKHgsIHksIDAsIDAsIDI1NSwgMjU1KTsKKworICAgIC8vIFJlLWVuYWJsZSB0aGUg
Y29sb3IgbWFzaywgc2hvdWxkIGJlIHJlZCAod2l0aCBibGVuZCBkaXNhYmxlZCwgdGhlIHJlZCBz
aG91bGQgb3ZlcndyaXRlCisgICAgLy8gZXZlcnl0aGluZykKKyAgICBnbENvbG9yTWFzayhHTF9U
UlVFLCBHTF9UUlVFLCBHTF9UUlVFLCBHTF9UUlVFKTsKKyAgICBnbFVzZVByb2dyYW0obVByb2dy
YW0pOworICAgIGdsVW5pZm9ybTRmKG1Db2xvclVuaWZvcm0sIDEuMGYsIDAuMGYsIDAuMGYsIDAu
MGYpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAi
cG9zaXRpb24iLCAwLjVmKTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoeCwgeSwgMjU1LCAwLCAwLCAw
KTsKK30KKworLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcu
IHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlCisvLyB0ZXN0
cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuIEQzRDExIEZlYXR1cmUgTGV2ZWwgOV8zIHVzZXMgZGlm
ZmVyZW50IEQzRCBmb3JtYXRzIGZvciB2ZXJ0ZXgKKy8vIGF0dHJpYnMgY29tcGFyZWQgdG8gRmVh
dHVyZSBMZXZlbHMgMTBfMCssIHNvIHdlIHNob3VsZCB0ZXN0IHRoZW0gc2VwYXJhdGVseS4KK0FO
R0xFX0lOU1RBTlRJQVRFX1RFU1QoQ29sb3JNYXNrVGVzdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgRVMyX0QzRDkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCisgICAg
ICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDlfMygpLAorICAgICAgICAgICAgICAgICAg
ICAgICBFUzJfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCksCisgICAgICAgICAgICAgICAg
ICAgICAgIEVTM19PUEVOR0xFUygpKTsKKworfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQ29tcHV0ZVNoYWRlclRl
c3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9n
bF90ZXN0cy9Db21wdXRlU2hhZGVyVGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NvbXB1dGVTaGFkZXJUZXN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIyNiBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIENvbXB1dGVTaGFk
ZXJUZXN0OgorLy8gICBDb21wdXRlIHNoYWRlciBzcGVjaWZpYyB0ZXN0cy4KKworI2luY2x1ZGUg
InRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisjaW5jbHVkZSAidGVzdF91dGlscy9nbF9yYWlpLmgi
CisjaW5jbHVkZSA8dmVjdG9yPgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKK25hbWVzcGFj
ZQoreworCitjbGFzcyBDb21wdXRlU2hhZGVyVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAg
cHJvdGVjdGVkOgorICAgIENvbXB1dGVTaGFkZXJUZXN0KCkge30KK307CisKK2NsYXNzIENvbXB1
dGVTaGFkZXJUZXN0RVMzIDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAg
Q29tcHV0ZVNoYWRlclRlc3RFUzMoKSB7fQorfTsKKworLy8gbGluayBhIHNpbXBsZSBjb21wdXRl
IHByb2dyYW0uIEl0IHNob3VsZCBiZSBzdWNjZXNzZnVsLgorVEVTVF9QKENvbXB1dGVTaGFkZXJU
ZXN0LCBMaW5rQ29tcHV0ZVByb2dyYW0pCit7CisgICAgaWYgKElzSW50ZWwoKSAmJiBJc0xpbnV4
KCkpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBM
aW51eCBkdWUgdG8gZmFpbHVyZXMuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBjc1NvdXJjZSA9CisgICAgICAgICIjdmVyc2lv
biAzMTAgZXNcbiIKKyAgICAgICAgImxheW91dChsb2NhbF9zaXplX3g9MSkgaW47XG4iCisgICAg
ICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAifVxuIjsKKworICAg
IEFOR0xFX0dMX0NPTVBVVEVfUFJPR1JBTShwcm9ncmFtLCBjc1NvdXJjZSk7CisKKyAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKK30KKworLy8gbGluayBhIHNpbXBsZSBjb21wdXRlIHByb2dyYW0u
IFRoZXJlIGlzIG5vIGxvY2FsIHNpemUgYW5kIGxpbmtpbmcgc2hvdWxkIGZhaWwuCitURVNUX1Ao
Q29tcHV0ZVNoYWRlclRlc3QsIExpbmtDb21wdXRlUHJvZ3JhbU5vTG9jYWxTaXplTGlua0Vycm9y
KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGNzU291cmNlID0KKyAgICAgICAgIiN2ZXJzaW9u
IDMxMCBlc1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAg
ICAgIn1cbiI7CisKKyAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVDb21wdXRlUHJvZ3JhbShj
c1NvdXJjZSwgZmFsc2UpOworICAgIEVYUEVDVF9FUSgwdSwgcHJvZ3JhbSk7CisKKyAgICBnbERl
bGV0ZVByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKK30KKwor
Ly8gbGluayBhIHNpbXBsZSBjb21wdXRlIHByb2dyYW0uCisvLyBtYWtlIHN1cmUgdGhhdCB1bmlm
b3JtcyBhbmQgdW5pZm9ybSBzYW1wbGVycyBnZXQgcmVjb3JkZWQKK1RFU1RfUChDb21wdXRlU2hh
ZGVyVGVzdCwgTGlua0NvbXB1dGVQcm9ncmFtV2l0aFVuaWZvcm1zKQoreworICAgIGlmIChJc0lu
dGVsKCkgJiYgSXNMaW51eCgpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNr
aXBwZWQgb24gSW50ZWwgTGludXggZHVlIHRvIGZhaWx1cmVzLiIgPDwgc3RkOjplbmRsOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGNzU291cmNlID0KKyAg
ICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgc2Ft
cGxlcjJEO1xuIgorICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeD0xKSBpbjtcbiIKKyAgICAg
ICAgInVuaWZvcm0gaW50IG15VW5pZm9ybUludDtcbiIKKyAgICAgICAgInVuaWZvcm0gc2FtcGxl
cjJEIG15VW5pZm9ybVNhbXBsZXI7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAg
ICAie1xuIgorICAgICAgICAiaW50IHEgPSBteVVuaWZvcm1JbnQ7XG4iCisgICAgICAgICJ0ZXh0
dXJlKG15VW5pZm9ybVNhbXBsZXIsIHZlYzIoMC4wKSk7XG4iCisgICAgICAgICJ9XG4iOworCisg
ICAgQU5HTEVfR0xfQ09NUFVURV9QUk9HUkFNKHByb2dyYW0sIGNzU291cmNlKTsKKworICAgIEdM
aW50IHVuaWZvcm1Mb2MgPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLmdldCgpLCAibXlV
bmlmb3JtSW50Iik7CisgICAgRVhQRUNUX05FKC0xLCB1bmlmb3JtTG9jKTsKKworICAgIHVuaWZv
cm1Mb2MgPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLmdldCgpLCAibXlVbmlmb3JtU2Ft
cGxlciIpOworICAgIEVYUEVDVF9ORSgtMSwgdW5pZm9ybUxvYyk7CisKKyAgICBFWFBFQ1RfR0xf
Tk9fRVJST1IoKTsKK30KKworLy8gQXR0YWNoIGJvdGggY29tcHV0ZSBhbmQgbm9uLWNvbXB1dGUg
c2hhZGVycy4gQSBsaW5rIHRpbWUgZXJyb3Igc2hvdWxkIG9jY3VyLgorLy8gT3BlbkdMIEVTIDMu
MTAsIDcuMyBQcm9ncmFtIE9iamVjdHMKK1RFU1RfUChDb21wdXRlU2hhZGVyVGVzdCwgQXR0YWNo
TXVsdGlwbGVTaGFkZXJzKQoreworICAgIGlmIChJc0ludGVsKCkgJiYgSXNMaW51eCgpKQorICAg
IHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgTGludXggZHVl
IHRvIGZhaWx1cmVzLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIGNzU291cmNlID0KKyAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xu
IgorICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeD0xKSBpbjtcbiIKKyAgICAgICAgInZvaWQg
bWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICJ9XG4iOworCisgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgdnNTb3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCisgICAgICAg
ICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAifVxuIjsKKworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nIGZzU291cmNlID0KKyAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgor
ICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIn1cbiI7CisK
KyAgICBHTHVpbnQgcHJvZ3JhbSA9IGdsQ3JlYXRlUHJvZ3JhbSgpOworCisgICAgR0x1aW50IHZz
ID0gQ29tcGlsZVNoYWRlcihHTF9WRVJURVhfU0hBREVSLCB2c1NvdXJjZSk7CisgICAgR0x1aW50
IGZzID0gQ29tcGlsZVNoYWRlcihHTF9GUkFHTUVOVF9TSEFERVIsIGZzU291cmNlKTsKKyAgICBH
THVpbnQgY3MgPSBDb21waWxlU2hhZGVyKEdMX0NPTVBVVEVfU0hBREVSLCBjc1NvdXJjZSk7CisK
KyAgICBFWFBFQ1RfTkUoMHUsIHZzKTsKKyAgICBFWFBFQ1RfTkUoMHUsIGZzKTsKKyAgICBFWFBF
Q1RfTkUoMHUsIGNzKTsKKworICAgIGdsQXR0YWNoU2hhZGVyKHByb2dyYW0sIHZzKTsKKyAgICBn
bERlbGV0ZVNoYWRlcih2cyk7CisKKyAgICBnbEF0dGFjaFNoYWRlcihwcm9ncmFtLCBmcyk7Cisg
ICAgZ2xEZWxldGVTaGFkZXIoZnMpOworCisgICAgZ2xBdHRhY2hTaGFkZXIocHJvZ3JhbSwgY3Mp
OworICAgIGdsRGVsZXRlU2hhZGVyKGNzKTsKKworICAgIGdsTGlua1Byb2dyYW0ocHJvZ3JhbSk7
CisKKyAgICBHTGludCBsaW5rU3RhdHVzOworICAgIGdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdM
X0xJTktfU1RBVFVTLCAmbGlua1N0YXR1cyk7CisKKyAgICBFWFBFQ1RfRVEoMCwgbGlua1N0YXR1
cyk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKK30KKworLy8gQXR0YWNoIGEgdmVydGV4
LCBmcmFnbWVudCBhbmQgY29tcHV0ZSBzaGFkZXIuCisvLyBRdWVyeSBmb3IgdGhlIG51bWJlciBv
ZiBhdHRhY2hlZCBzaGFkZXJzIGFuZCBjaGVjayB0aGUgY291bnQuCitURVNUX1AoQ29tcHV0ZVNo
YWRlclRlc3QsIEF0dGFjaG1lbnRDb3VudCkKK3sKKyAgICBpZiAoSXNJbnRlbCgpICYmIElzTGlu
dXgoKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVs
IExpbnV4IGR1ZSB0byBmYWlsdXJlcy4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBjb25zdCBzdGQ6OnN0cmluZyBjc1NvdXJjZSA9CisgICAgICAgICIjdmVyc2lv
biAzMTAgZXNcbiIKKyAgICAgICAgImxheW91dChsb2NhbF9zaXplX3g9MSkgaW47XG4iCisgICAg
ICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAifVxuIjsKKworICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIHZzU291cmNlID0KKyAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xu
IgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIn1cbiI7
CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBmc1NvdXJjZSA9CisgICAgICAgICIjdmVyc2lvbiAz
MTAgZXNcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAg
ICJ9XG4iOworCisgICAgR0x1aW50IHByb2dyYW0gPSBnbENyZWF0ZVByb2dyYW0oKTsKKworICAg
IEdMdWludCB2cyA9IENvbXBpbGVTaGFkZXIoR0xfVkVSVEVYX1NIQURFUiwgdnNTb3VyY2UpOwor
ICAgIEdMdWludCBmcyA9IENvbXBpbGVTaGFkZXIoR0xfRlJBR01FTlRfU0hBREVSLCBmc1NvdXJj
ZSk7CisgICAgR0x1aW50IGNzID0gQ29tcGlsZVNoYWRlcihHTF9DT01QVVRFX1NIQURFUiwgY3NT
b3VyY2UpOworCisgICAgRVhQRUNUX05FKDB1LCB2cyk7CisgICAgRVhQRUNUX05FKDB1LCBmcyk7
CisgICAgRVhQRUNUX05FKDB1LCBjcyk7CisKKyAgICBnbEF0dGFjaFNoYWRlcihwcm9ncmFtLCB2
cyk7CisgICAgZ2xEZWxldGVTaGFkZXIodnMpOworCisgICAgZ2xBdHRhY2hTaGFkZXIocHJvZ3Jh
bSwgZnMpOworICAgIGdsRGVsZXRlU2hhZGVyKGZzKTsKKworICAgIGdsQXR0YWNoU2hhZGVyKHBy
b2dyYW0sIGNzKTsKKyAgICBnbERlbGV0ZVNoYWRlcihjcyk7CisKKyAgICBHTGludCBudW1BdHRh
Y2hlZFNoYWRlcnM7CisgICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xfQVRUQUNIRURfU0hB
REVSUywgJm51bUF0dGFjaGVkU2hhZGVycyk7CisKKyAgICBFWFBFQ1RfRVEoMywgbnVtQXR0YWNo
ZWRTaGFkZXJzKTsKKworICAgIGdsRGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKKworICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOworfQorCisvLyBDaGVjayB0aGF0IGl0IGlzIG5vdCBwb3NzaWJsZSB0
byBjcmVhdGUgYSBjb21wdXRlIHNoYWRlciB3aGVuIHRoZSBjb250ZXh0IGRvZXMgbm90IHN1cHBv
cnQgRVMKKy8vIDMuMTAKK1RFU1RfUChDb21wdXRlU2hhZGVyVGVzdEVTMywgTm90U3VwcG9ydGVk
KQoreworICAgIEdMdWludCBjb21wdXRlU2hhZGVySGFuZGxlID0gZ2xDcmVhdGVTaGFkZXIoR0xf
Q09NUFVURV9TSEFERVIpOworICAgIEVYUEVDVF9FUSgwdSwgY29tcHV0ZVNoYWRlckhhbmRsZSk7
CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Cit9CisKK0FOR0xFX0lOU1RB
TlRJQVRFX1RFU1QoQ29tcHV0ZVNoYWRlclRlc3QsIEVTMzFfT1BFTkdMKCksIEVTMzFfT1BFTkdM
RVMoKSk7CitBTkdMRV9JTlNUQU5USUFURV9URVNUKENvbXB1dGVTaGFkZXJUZXN0RVMzLCBFUzNf
T1BFTkdMKCksIEVTM19PUEVOR0xFUygpKTsKKworfSAgLy8gbmFtZXNwYWNlCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQ29weUNvbXByZXNzZWRUZXh0
dXJlVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsX3Rlc3RzL0NvcHlDb21wcmVzc2VkVGV4dHVyZVRlc3QuY3BwCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Db3B5Q29tcHJl
c3NlZFRleHR1cmVUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2OSBAQAorLy8K
Ky8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKworLy8gQ29weUNvbXByZXNzZWRUZXh0dXJlVGVzdC5jcHA6IFRlc3RzIG9mIHRoZSBH
TF9DSFJPTUlVTV9jb3B5X2NvbXByZXNzZWRfdGV4dHVyZSBleHRlbnNpb24KKworI2luY2x1ZGUg
InRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKK25hbWVzcGFjZSBhbmdsZQoreworCitjbGFzcyBD
b3B5Q29tcHJlc3NlZFRleHR1cmVUZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0
ZWQ6CisgICAgQ29weUNvbXByZXNzZWRUZXh0dXJlVGVzdCgpCisgICAgeworICAgICAgICBzZXRX
aW5kb3dXaWR0aCgyNTYpOworICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMjU2KTsKKyAgICAgICAg
c2V0Q29uZmlnUmVkQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAg
ICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgp
OworICAgIH0KKworICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQU5H
TEVUZXN0OjpTZXRVcCgpOworCisgICAgICAgIGdsR2VuVGV4dHVyZXMoMiwgbVRleHR1cmVzKTsK
KworICAgICAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKAorICAgICAgICAgICAgImF0dHJp
YnV0ZSB2ZWMyIGFfcG9zaXRpb247XG4iCisgICAgICAgICAgICAidmFyeWluZyB2ZWMyIHZfdGV4
Y29vcmQ7XG4iCisgICAgICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgICAgICJ7XG4i
CisgICAgICAgICAgICAiICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGFfcG9zaXRpb24sIDAuMCwgMS4w
KTtcbiIKKyAgICAgICAgICAgICIgICB2X3RleGNvb3JkID0gKGFfcG9zaXRpb24gKyAxLjApICog
MC41O1xuIgorICAgICAgICAgICAgIn1cbiIsCisgICAgICAgICAgICAicHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7XG4iCisgICAgICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQgdV90ZXh0dXJlO1xu
IgorICAgICAgICAgICAgInZhcnlpbmcgdmVjMiB2X3RleGNvb3JkO1xuIgorICAgICAgICAgICAg
InZvaWQgbWFpbigpXG4iCisgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgIiAgICBnbF9G
cmFnQ29sb3IgPSB0ZXh0dXJlMkQodV90ZXh0dXJlLCB2X3RleGNvb3JkKTtcbiIKKyAgICAgICAg
ICAgICJ9XG4iKTsKKyAgICAgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7CisKKyAgICAgICAg
aWYgKGV4dGVuc2lvbkVuYWJsZWQoIkdMX0NIUk9NSVVNX2NvcHlfY29tcHJlc3NlZF90ZXh0dXJl
IikpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsQ29tcHJlc3NlZENvcHlUZXh0dXJlQ0hST01J
VU0gPQorICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xDT01QUkVTU0VEQ09Q
WVRFWFRVUkVDSFJPTUlVTVBST0M+KAorICAgICAgICAgICAgICAgICAgICBlZ2xHZXRQcm9jQWRk
cmVzcygiZ2xDb21wcmVzc2VkQ29weVRleHR1cmVDSFJPTUlVTSIpKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgZ2xEZWxl
dGVUZXh0dXJlcygyLCBtVGV4dHVyZXMpOworICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dy
YW0pOworCisgICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKKyAgICB9CisKKyAgICBib29s
IGNoZWNrRXh0ZW5zaW9ucygpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIWV4dGVuc2lvbkVu
YWJsZWQoIkdMX0NIUk9NSVVNX2NvcHlfY29tcHJlc3NlZF90ZXh0dXJlIikpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0ZDo6Y291dAorICAgICAgICAgICAgICAgIDw8ICJUZXN0IHNraXBwZWQg
YmVjYXVzZSBHTF9DSFJPTUlVTV9jb3B5X2NvbXByZXNzZWRfdGV4dHVyZSBpcyBub3QgYXZhaWxh
YmxlLiIKKyAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBFWFBFQ1RfTkUobnVsbHB0ciwgZ2xDb21wcmVz
c2VkQ29weVRleHR1cmVDSFJPTUlVTSk7CisgICAgICAgIGlmIChnbENvbXByZXNzZWRDb3B5VGV4
dHVyZUNIUk9NSVVNID09IG51bGxwdHIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIEdM
dWludCBtUHJvZ3JhbSAgICAgPSAwOworICAgIEdMdWludCBtVGV4dHVyZXNbMl0gPSB7MCwgMH07
CisKKyAgICBQRk5HTENPTVBSRVNTRURDT1BZVEVYVFVSRUNIUk9NSVVNUFJPQyBnbENvbXByZXNz
ZWRDb3B5VGV4dHVyZUNIUk9NSVVNID0gbnVsbHB0cjsKK307CisKK25hbWVzcGFjZQoreworCitj
b25zdCBHTENvbG9yICZDb21wcmVzc2VkSW1hZ2VDb2xvciA9IEdMQ29sb3I6OnJlZDsKKworLy8g
U2luZ2xlIGNvbXByZXNzZWQgQVRDIGJsb2NrIG9mIHNvdXJjZSBwaXhlbHMgYWxsIHNldCB0bzoK
Ky8vIENvbXByZXNzZWRJbWFnZUNvbG9yLgorY29uc3QgdWludDhfdCBDb21wcmVzc2VkSW1hZ2VB
VENbOF0gPSB7MHgwLCAweDdjLCAweDAsIDB4ZjgsIDB4NTUsIDB4NTUsIDB4NTUsIDB4NTV9Owor
CisvLyBTaW5nbGUgY29tcHJlc3NlZCBBVENJQSBibG9jayBvZiBzb3VyY2UgcGl4ZWxzIGFsbCBz
ZXQgdG86CisvLyBDb21wcmVzc2VkSW1hZ2VDb2xvci4KK2NvbnN0IHVpbnQ4X3QgQ29tcHJlc3Nl
ZEltYWdlQVRDSUFbMTZdID0gezB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAgMHgwLCAgMHgwLCAgMHgw
LCAgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAg
MHg3YywgMHgwLCAweGY4LCAweDU1LCAweDU1LCAweDU1LCAweDU1fTsKKworLy8gU2luZ2xlIGNv
bXByZXNzZWQgRFhUMSBibG9jayBvZiBzb3VyY2UgcGl4ZWxzIGFsbCBzZXQgdG86CisvLyBDb21w
cmVzc2VkSW1hZ2VDb2xvci4KK2NvbnN0IHVpbnQ4X3QgQ29tcHJlc3NlZEltYWdlRFhUMVs4XSA9
IHsweDAwLCAweGY4LCAweDAwLCAweGY4LCAweGFhLCAweGFhLCAweGFhLCAweGFhfTsKKworLy8g
U2luZ2xlIGNvbXByZXNzZWQgRFhUNSBibG9jayBvZiBzb3VyY2UgcGl4ZWxzIGFsbCBzZXQgdG86
CisvLyBDb21wcmVzc2VkSW1hZ2VDb2xvci4KK2NvbnN0IHVpbnQ4X3QgQ29tcHJlc3NlZEltYWdl
RFhUNVsxNl0gPSB7MHhmZiwgMHhmZiwgMHgwLCAweDAsICAweDAsICAweDAsICAweDAsICAweDAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgIDB4ZjgsIDB4
MCwgMHhmOCwgMHhhYSwgMHhhYSwgMHhhYSwgMHhhYX07CisKKy8vIFNpbmdsZSBjb21wcmVzc2Vk
IERYVDEgYmxvY2sgb2Ygc291cmNlIHBpeGVscyBhbGwgc2V0IHRvOgorLy8gQ29tcHJlc3NlZElt
YWdlQ29sb3IuCitjb25zdCB1aW50OF90IENvbXByZXNzZWRJbWFnZUVUQzFbOF0gPSB7MHgwLCAw
eDAsIDB4ZjgsIDB4MiwgMHhmZiwgMHhmZiwgMHgwLCAweDB9OworCit9ICAvLyBhbm9ueW1vdXMg
bmFtZXNwYWNlCisKKy8vIFRlc3QgdG8gZW5zdXJlIHRoYXQgdGhlIGJhc2ljIGZ1bmN0aW9uYWxp
dHkgb2YgdGhlIGV4dGVuc2lvbiB3b3Jrcy4KK1RFU1RfUChDb3B5Q29tcHJlc3NlZFRleHR1cmVU
ZXN0LCBCYXNpYykKK3sKKyAgICBpZiAoIWNoZWNrRXh0ZW5zaW9ucygpKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3Rl
eHR1cmVfY29tcHJlc3Npb25fZHh0MSIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJU
ZXN0IHNraXBwZWQgYmVjYXVzZSBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIGlzIG5v
dCBhdmFpbGFibGUuIgorICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVy
ZXNbMF0pOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dS
QVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
MkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsK
KyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVS
LCBHTF9ORUFSRVNUKTsKKyAgICBnbENvbXByZXNzZWRUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQs
IDAsIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQsIDQsIDQsIDAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplb2YoQ29tcHJlc3NlZEltYWdlRFhUMSksIENvbXByZXNzZWRJ
bWFnZURYVDEpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMV0pOworICAgIGdsVGV4UGFyYW1ldGVyZihHTF9U
RVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgZ2xU
ZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9U
T19FREdFKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9N
QUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBnbENvbXByZXNzZWRD
b3B5VGV4dHVyZUNIUk9NSVVNKG1UZXh0dXJlc1swXSwgbVRleHR1cmVzWzFdKTsKKyAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIExvYWQgdGV4dHVyZS4KKyAgICBnbEFjdGl2ZVRl
eHR1cmUoR0xfVEVYVFVSRTApOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRl
eHR1cmVzWzFdKTsKKyAgICBHTGludCB0ZXh0dXJlTG9jID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24o
bVByb2dyYW0sICJ1X3RleHR1cmUiKTsKKyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworICAg
IGdsVW5pZm9ybTFpKHRleHR1cmVMb2MsIDApOworCisgICAgLy8gRHJhdy4KKyAgICBkcmF3UXVh
ZChtUHJvZ3JhbSwgImFfcG9zaXRpb24iLCAwLjVmKTsKKworICAgIEVYUEVDVF9QSVhFTF9DT0xP
Ul9FUShnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCBDb21wcmVz
c2VkSW1hZ2VDb2xvcik7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFRlc3Qg
dmFsaWRhdGlvbiBvZiBjb21wcmVzc2VkIGZvcm1hdHMKK1RFU1RfUChDb3B5Q29tcHJlc3NlZFRl
eHR1cmVUZXN0LCBJbnRlcm5hbEZvcm1hdCkKK3sKKyAgICBpZiAoIWNoZWNrRXh0ZW5zaW9ucygp
KQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0cnVjdCBEYXRhCisgICAg
eworICAgICAgICBHTGludCBmb3JtYXQ7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmRhdGE7Cisg
ICAgICAgIEdMc2l6ZWkgZGF0YVNpemU7CisKKyAgICAgICAgRGF0YSgpIDogRGF0YShHTF9OT05F
LCBudWxscHRyLCAwKSB7fQorICAgICAgICBEYXRhKEdMaW50IGZvcm1hdCwgY29uc3QgdWludDhf
dCAqZGF0YSwgR0xzaXplaSBkYXRhU2l6ZSkKKyAgICAgICAgICAgIDogZm9ybWF0KGZvcm1hdCks
IGRhdGEoZGF0YSksIGRhdGFTaXplKGRhdGFTaXplKQorICAgICAgICB7CisgICAgICAgIH0KKyAg
ICB9OworICAgIHN0ZDo6dmVjdG9yPERhdGE+IHN1cHBvcnRlZEZvcm1hdHM7CisKKyAgICBpZiAo
ZXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUiKSkKKyAgICB7
CisgICAgICAgIHN1cHBvcnRlZEZvcm1hdHMucHVzaF9iYWNrKAorICAgICAgICAgICAgRGF0YShH
TF9BVENfUkdCX0FNRCwgQ29tcHJlc3NlZEltYWdlQVRDLCBzaXplb2YoQ29tcHJlc3NlZEltYWdl
QVRDKSkpOworICAgICAgICBzdXBwb3J0ZWRGb3JtYXRzLnB1c2hfYmFjayhEYXRhKEdMX0FUQ19S
R0JBX0lOVEVSUE9MQVRFRF9BTFBIQV9BTUQsIENvbXByZXNzZWRJbWFnZUFUQ0lBLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihDb21wcmVzc2VkSW1hZ2VB
VENJQSkpKTsKKyAgICB9CisgICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF90ZXh0dXJl
X2NvbXByZXNzaW9uX2R4dDEiKSkKKyAgICB7CisgICAgICAgIHN1cHBvcnRlZEZvcm1hdHMucHVz
aF9iYWNrKERhdGEoR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCwgQ29tcHJlc3NlZElt
YWdlRFhUMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yo
Q29tcHJlc3NlZEltYWdlRFhUMSkpKTsKKyAgICB9CisgICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQo
IkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSIpKQorICAgIHsKKyAgICAgICAgc3Vw
cG9ydGVkRm9ybWF0cy5wdXNoX2JhY2soRGF0YShHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1
X0VYVCwgQ29tcHJlc3NlZEltYWdlRFhUNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplb2YoQ29tcHJlc3NlZEltYWdlRFhUNSkpKTsKKyAgICB9CisgICAgaWYg
KGV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlIikp
CisgICAgeworICAgICAgICBzdXBwb3J0ZWRGb3JtYXRzLnB1c2hfYmFjaygKKyAgICAgICAgICAg
IERhdGEoR0xfRVRDMV9SR0I4X09FUywgQ29tcHJlc3NlZEltYWdlRVRDMSwgc2l6ZW9mKENvbXBy
ZXNzZWRJbWFnZUVUQzEpKSk7CisgICAgfQorCisgICAgZm9yIChjb25zdCBhdXRvICZzdXBwb3J0
ZWRGb3JtYXQgOiBzdXBwb3J0ZWRGb3JtYXRzKQorICAgIHsKKyAgICAgICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0pOworICAgICAgICBnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAg
ICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdM
X0NMQU1QX1RPX0VER0UpOworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0
ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Cisg
ICAgICAgIGdsQ29tcHJlc3NlZFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgc3VwcG9ydGVk
Rm9ybWF0LmZvcm1hdCwgNCwgNCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dXBwb3J0ZWRGb3JtYXQuZGF0YVNpemUsIHN1cHBvcnRlZEZvcm1hdC5kYXRhKTsKKyAgICAgICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
XzJELCBtVGV4dHVyZXNbMV0pOworICAgICAgICBnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICBnbFRleFBh
cmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VE
R0UpOworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9N
QUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRV
UkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgICAgIGdsQ29t
cHJlc3NlZENvcHlUZXh0dXJlQ0hST01JVU0obVRleHR1cmVzWzBdLCBtVGV4dHVyZXNbMV0pOwor
ICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICB9Cit9CisKKy8vIFRlc3QgdGhhdCB1
bmNvbXByZXNzZWQgdGV4dHVyZXMgZ2VuZXJhdGUgZXJyb3JzIHdoZW4gY29weWluZworVEVTVF9Q
KENvcHlDb21wcmVzc2VkVGV4dHVyZVRlc3QsIEludGVybmFsRm9ybWF0Tm90U3VwcG9ydGVkKQor
eworICAgIGlmICghY2hlY2tFeHRlbnNpb25zKCkpCisgICAgeworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0pOwor
ICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xf
Q0xBTVBfVE9fRURHRSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xf
VEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFS
RVNUKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMSwgMSwg
MCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgJkdMQ29sb3I6OnJlZCk7CisgICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7CisKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0
dXJlc1sxXSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
V1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOworICAgIGdsVGV4UGFy
YW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1Qp
OworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxU
RVIsIEdMX05FQVJFU1QpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gQ2hl
Y2sgdGhhdCB0aGUgR0xfUkdCQSBmb3JtYXQgcmVwb3J0cyBhbiBlcnJvci4KKyAgICBnbENvbXBy
ZXNzZWRDb3B5VGV4dHVyZUNIUk9NSVVNKG1UZXh0dXJlc1swXSwgbVRleHR1cmVzWzFdKTsKKyAg
ICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCisvLyBUZXN0IHZh
bGlkYXRpb24gb2YgdGV4dHVyZSBJRHMKK1RFU1RfUChDb3B5Q29tcHJlc3NlZFRleHR1cmVUZXN0
LCBJbnZhbGlkVGV4dHVyZUlkcykKK3sKKyAgICBpZiAoIWNoZWNrRXh0ZW5zaW9ucygpKQorICAg
IHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVS
RV8yRCwgbVRleHR1cmVzWzBdKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgIGdsVGV4UGFyYW1ldGVy
aShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7Cisg
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwg
R0xfTkVBUkVTVCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRV
UkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRChH
TF9URVhUVVJFXzJELCAwLCBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhULCA0LCA0LCAw
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKENvbXByZXNzZWRJbWFnZURYVDEp
LCBDb21wcmVzc2VkSW1hZ2VEWFQxKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAg
IGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzFdKTsKKyAgICBnbFRleFBh
cmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VE
R0UpOworICAgIGdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBf
VCwgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbENvbXByZXNzZWRDb3B5VGV4dHVyZUNIUk9N
SVVNKG1UZXh0dXJlc1swXSwgOTk5OTMpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElE
X1ZBTFVFKTsKKworICAgIGdsQ29tcHJlc3NlZENvcHlUZXh0dXJlQ0hST01JVU0oOTk5OTQsIG1U
ZXh0dXJlc1sxXSk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOworCisg
ICAgZ2xDb21wcmVzc2VkQ29weVRleHR1cmVDSFJPTUlVTSg5OTk5NSwgOTk5OTYpOworICAgIEVY
UEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKKworICAgIGdsQ29tcHJlc3NlZENvcHlU
ZXh0dXJlQ0hST01JVU0obVRleHR1cmVzWzBdLCBtVGV4dHVyZXNbMV0pOworICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworfQorCisvLyBUZXN0IHRoYXQgb25seSAyRCB0ZXh0dXJlcyBhcmUgdmFs
aWQKK1RFU1RfUChDb3B5Q29tcHJlc3NlZFRleHR1cmVUZXN0LCBCaW5kaW5nUG9pbnRzKQorewor
ICAgIGlmICghY2hlY2tFeHRlbnNpb25zKCkpCisgICAgeworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFX0NVQkVfTUFQLCBtVGV4dHVyZXNbMF0p
OworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0NVQkVfTUFQLCBHTF9URVhUVVJFX1dS
QVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
Q1VCRV9NQVAsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9DVUJFX01BUCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBH
TF9ORUFSRVNUKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9DVUJFX01BUCwgR0xf
VEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBmb3IgKEdMZW51bSBmYWNlID0g
R0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YOyBmYWNlIDw9IEdMX1RFWFRVUkVfQ1VCRV9N
QVBfTkVHQVRJVkVfWjsKKyAgICAgICAgIGZhY2UrKykKKyAgICB7CisgICAgICAgIGdsQ29tcHJl
c3NlZFRleEltYWdlMkQoZmFjZSwgMCwgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCwg
NCwgNCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoQ29tcHJlc3Nl
ZEltYWdlRFhUMSksIENvbXByZXNzZWRJbWFnZURYVDEpOworICAgIH0KKyAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKKworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV9DVUJFX01BUCwgbVRl
eHR1cmVzWzFdKTsKKyAgICBnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV9DVUJFX01BUCwgR0xf
VEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgIGdsVGV4UGFyYW1ldGVyZihH
TF9URVhUVVJFX0NVQkVfTUFQLCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7
CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIEdMX1RFWFRVUkVfTUFH
X0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfQ1VC
RV9NQVAsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7CisKKyAgICBnbENvbXByZXNzZWRDb3B5VGV4dHVyZUNIUk9NSVVNKG1UZXh0
dXJlc1swXSwgbVRleHR1cmVzWzFdKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9W
QUxVRSk7Cit9CisKKy8vIFRlc3QgdGhlIGRlc3RpbmF0aW9uIHRleHR1cmUgY2Fubm90IGJlIGlt
bXV0YWJsZQorVEVTVF9QKENvcHlDb21wcmVzc2VkVGV4dHVyZVRlc3QsIEltbXV0YWJsZSkKK3sK
KyAgICBpZiAoIWNoZWNrRXh0ZW5zaW9ucygpIHx8IGdldENsaWVudE1ham9yVmVyc2lvbigpIDwg
MykKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRV
UkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VE
R0UpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9G
SUxURVIsIEdMX05FQVJFU1QpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOworICAgIGdsQ29tcHJlc3NlZFRleElt
YWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCwg
NCwgNCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihDb21wcmVzc2VkSW1h
Z2VEWFQxKSwgQ29tcHJlc3NlZEltYWdlRFhUMSk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
CisKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sxXSk7CisgICAg
Z2xUZXhTdG9yYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19E
WFQxX0VYVCwgNCwgNCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBnbFRleFBhcmFtZXRlcmYoR0xf
VEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOworICAgIGds
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05F
QVJFU1QpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01J
Tl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAg
Z2xDb21wcmVzc2VkQ29weVRleHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIG1UZXh0dXJlc1sx
XSk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKworLy8g
VXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRl
cmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlCisvLyB0ZXN0cyBzaG91bGQgYmUg
cnVuIGFnYWluc3QuCitBTkdMRV9JTlNUQU5USUFURV9URVNUKENvcHlDb21wcmVzc2VkVGV4dHVy
ZVRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCisgICAgICAgICAgICAg
ICAgICAgICAgIEVTMl9EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfRDNEMTEo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAorICAgICAgICAgICAgICAg
ICAgICAgICBFUzNfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xF
UygpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMRVMoKSk7CisKK30gIC8vIG5h
bWVzcGFjZSBhbmdsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2ds
X3Rlc3RzL0NvcHlUZXhJbWFnZVRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Db3B5VGV4SW1hZ2VUZXN0LmNwcAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQ29w
eVRleEltYWdlVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNDMgQEAKKy8vCisv
LyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorCituYW1lc3BhY2UgYW5n
bGUKK3sKKworY2xhc3MgQ29weVRleEltYWdlVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAg
cHJvdGVjdGVkOgorICAgIENvcHlUZXhJbWFnZVRlc3QoKQorICAgIHsKKyAgICAgICAgc2V0V2lu
ZG93V2lkdGgoMTYpOworICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTYpOworICAgICAgICBzZXRD
b25maWdSZWRCaXRzKDgpOworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAg
IHNldENvbmZpZ0JsdWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Cisg
ICAgfQorCisgICAgR0x1aW50IGNyZWF0ZUZyYW1lYnVmZmVyKEdMZW51bSBmb3JtYXQsIEdMZW51
bSB0eXBlLCBHTGZsb2F0IGNvbG9yWzRdKSBjb25zdAorICAgIHsKKyAgICAgICAgR0x1aW50IGZi
bzsKKyAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJmZibyk7CisgICAgICAgIGdsQmluZEZy
YW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBmYm8pOworCisgICAgICAgIEdMdWludCB0ZXh0dXJl
ID0gY3JlYXRlVGV4dHVyZShmb3JtYXQsIHR5cGUpOworICAgICAgICBnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQsIHRleHR1cmUpOworICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdM
X0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgdGV4dHVy
ZSwgMCk7CisKKyAgICAgICAgZ2xDbGVhckNvbG9yKGNvbG9yWzBdLCBjb2xvclsxXSwgY29sb3Jb
Ml0sIGNvbG9yWzNdKTsKKyAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKwor
ICAgICAgICByZXR1cm4gZmJvOworICAgIH0KKworICAgIEdMdWludCBjcmVhdGVUZXh0dXJlKEdM
ZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlKSBjb25zdAorICAgIHsKKyAgICAgICAgR0x1aW50IHRl
eDsKKyAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4KTsKKyAgICAgICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCB0ZXgpOworICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8y
RCwgMCwgZm9ybWF0LCAxNiwgMTYsIDAsIGZvcm1hdCwgdHlwZSwgbnVsbHB0cik7CisKKyAgICAg
ICAgLy8gRGlzYWJsZSBtaXBtYXBwaW5nCisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgICAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFS
RVNUKTsKKworICAgICAgICByZXR1cm4gdGV4OworICAgIH0KKworICAgIEdMdWludCBjcmVhdGVU
ZXh0dXJlRnJvbUNvcHlUZXhJbWFnZShHTHVpbnQgZmJvLCBHTGVudW0gZm9ybWF0KSBjb25zdAor
ICAgIHsKKyAgICAgICAgR0x1aW50IHRleDsKKyAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4
KTsKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXgpOworCisgICAgICAg
IGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBmYm8pOworICAgICAgICBnbENvcHlU
ZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIGZvcm1hdCwgMCwgMCwgMTYsIDE2LCAwKTsKKwor
ICAgICAgICAvLyBEaXNhYmxlIG1pcG1hcHBpbmcKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdM
X05FQVJFU1QpOworCisgICAgICAgIHJldHVybiB0ZXg7CisgICAgfQorCisgICAgdm9pZCBjb3B5
VGV4dHVyZVdpdGhDb3B5VGV4U3ViSW1hZ2UoR0x1aW50IGZibywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGgpIGNvbnN0CisgICAgeworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfMkQsIHRleHR1cmUpOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZF
UiwgZmJvKTsKKyAgICAgICAgZ2xDb3B5VGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCB4
b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3LCBoKTsKKyAgICB9CisKKyAgICB2b2lkIFNldFVwKCkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKKworICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyB2c1NvdXJjZSA9CisgICAgICAgICAgICAicHJlY2lzaW9uIGhpZ2hw
IGZsb2F0O1xuIgorICAgICAgICAgICAgImF0dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uO1xuIgorICAg
ICAgICAgICAgInZhcnlpbmcgdmVjMiB0ZXhjb29yZDtcbiIKKyAgICAgICAgICAgICJcbiIKKyAg
ICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAg
ICIgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjtcbiIKKyAgICAgICAgICAgICIgICAgdGV4Y29v
cmQgPSAocG9zaXRpb24ueHkgKiAwLjUpICsgMC41O1xuIgorICAgICAgICAgICAgIiAgICB0ZXhj
b29yZC55ID0gMS4wIC0gdGV4Y29vcmQueTtcbiIKKyAgICAgICAgICAgICJ9XG4iOworCisgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHRleHR1cmVGU1NvdXJjZSA9CisgICAgICAgICAgICAicHJl
Y2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgorICAgICAgICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHRl
eDtcbiIKKyAgICAgICAgICAgICJ2YXJ5aW5nIHZlYzIgdGV4Y29vcmQ7XG4iCisgICAgICAgICAg
ICAiXG4iCisgICAgICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgICAgICJ7XG4iCisg
ICAgICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh0ZXgsIHRleGNvb3JkKTtc
biIKKyAgICAgICAgICAgICJ9XG4iOworCisgICAgICAgIG1UZXh0dXJlUHJvZ3JhbSA9IENvbXBp
bGVQcm9ncmFtKHZzU291cmNlLCB0ZXh0dXJlRlNTb3VyY2UpOworICAgICAgICBpZiAobVRleHR1
cmVQcm9ncmFtID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIEZBSUwoKSA8PCAic2hhZGVy
IGNvbXBpbGF0aW9uIGZhaWxlZC4iOworICAgICAgICB9CisKKyAgICAgICAgbVRleHR1cmVVbmlm
b3JtTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtVGV4dHVyZVByb2dyYW0sICJ0ZXgi
KTsKKworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICB9CisKKyAgICB2b2lkIFRl
YXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtVGV4dHVy
ZVByb2dyYW0pOworCisgICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKKyAgICB9CisKKyAg
ICB2b2lkIHZlcmlmeVJlc3VsdHMoR0x1aW50IHRleHR1cmUsIEdMdWJ5dGUgZGF0YVs0XSwgR0xp
bnQgeCwgR0xpbnQgeSkKKyAgICB7CisgICAgICAgIGdsVmlld3BvcnQoMCwgMCwgMTYsIDE2KTsK
KworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7CisKKyAgICAg
ICAgLy8gRHJhdyBhIHF1YWQgd2l0aCB0aGUgdGFyZ2V0IHRleHR1cmUKKyAgICAgICAgZ2xVc2VQ
cm9ncmFtKG1UZXh0dXJlUHJvZ3JhbSk7CisgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVS
RV8yRCwgdGV4dHVyZSk7CisgICAgICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJlVW5pZm9ybUxvY2F0
aW9uLCAwKTsKKworICAgICAgICBkcmF3UXVhZChtVGV4dHVyZVByb2dyYW0sICJwb3NpdGlvbiIs
IDAuNWYpOworCisgICAgICAgIC8vIEV4cGVjdCB0aGF0IHRoZSByZW5kZXJlZCBxdWFkIGhhcyB0
aGUgc2FtZSBjb2xvciBhcyB0aGUgc291cmNlIHRleHR1cmUKKyAgICAgICAgRVhQRUNUX1BJWEVM
X05FQVIoeCwgeSwgZGF0YVswXSwgZGF0YVsxXSwgZGF0YVsyXSwgZGF0YVszXSwgMS4wKTsKKyAg
ICB9CisKKyAgICBHTHVpbnQgbVRleHR1cmVQcm9ncmFtOworICAgIEdMaW50IG1UZXh0dXJlVW5p
Zm9ybUxvY2F0aW9uOworfTsKKworVEVTVF9QKENvcHlUZXhJbWFnZVRlc3QsIFJHQkFUb0wpCit7
CisgICAgR0xmbG9hdCBjb2xvcltdID0geworICAgICAgICAwLjI1ZiwgMS4wZiwgMC43NWYsIDAu
NWYsCisgICAgfTsKKworICAgIEdMdWludCBmYm8gPSBjcmVhdGVGcmFtZWJ1ZmZlcihHTF9SR0JB
LCBHTF9VTlNJR05FRF9CWVRFLCBjb2xvcik7CisgICAgR0x1aW50IHRleCA9IGNyZWF0ZVRleHR1
cmVGcm9tQ29weVRleEltYWdlKGZibywgR0xfTFVNSU5BTkNFKTsKKworICAgIEdMdWJ5dGUgZXhw
ZWN0ZWRbXSA9IHsKKyAgICAgICAgNjQsIDY0LCA2NCwgMjU1LAorICAgIH07CisgICAgdmVyaWZ5
UmVzdWx0cyh0ZXgsIGV4cGVjdGVkLCAwLCAwKTsKK30KKworVEVTVF9QKENvcHlUZXhJbWFnZVRl
c3QsIFJHQlRvTCkKK3sKKyAgICAvLyBUT0RPIChnZW9mZmxhbmcpOiBGaWd1cmUgb3V0IHdoeSBD
b3B5VGV4W1N1Yl1JbWFnZSBkb2Vzbid0IHdvcmsgd2l0aAorICAgIC8vIFJHQi0+TCBvbiBvbGRl
ciBJbnRlbCBjaGlwcworICAgIGlmIChJc0ludGVsKCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJlcigp
ID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkKKyAgICB7CisgICAgICAg
IHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIE9wZW5HTC4iIDw8IHN0ZDo6ZW5k
bDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdMZmxvYXQgY29sb3JbXSA9IHsKKyAg
ICAgICAgMC4yNWYsIDEuMGYsIDAuNzVmLCAwLjVmLAorICAgIH07CisKKyAgICBHTHVpbnQgZmJv
ID0gY3JlYXRlRnJhbWVidWZmZXIoR0xfUkdCLCBHTF9VTlNJR05FRF9CWVRFLCBjb2xvcik7Cisg
ICAgR0x1aW50IHRleCA9IGNyZWF0ZVRleHR1cmVGcm9tQ29weVRleEltYWdlKGZibywgR0xfTFVN
SU5BTkNFKTsKKworICAgIEdMdWJ5dGUgZXhwZWN0ZWRbXSA9IHsKKyAgICAgICAgNjQsIDY0LCA2
NCwgMjU1LAorICAgIH07CisgICAgdmVyaWZ5UmVzdWx0cyh0ZXgsIGV4cGVjdGVkLCAwLCAwKTsK
K30KKworVEVTVF9QKENvcHlUZXhJbWFnZVRlc3QsIFJHQkFUb0xBKQoreworICAgIEdMZmxvYXQg
Y29sb3JbXSA9IHsKKyAgICAgICAgMC4yNWYsIDEuMGYsIDAuNzVmLCAwLjVmLAorICAgIH07CisK
KyAgICBHTHVpbnQgZmJvID0gY3JlYXRlRnJhbWVidWZmZXIoR0xfUkdCQSwgR0xfVU5TSUdORURf
QllURSwgY29sb3IpOworICAgIEdMdWludCB0ZXggPSBjcmVhdGVUZXh0dXJlRnJvbUNvcHlUZXhJ
bWFnZShmYm8sIEdMX0xVTUlOQU5DRV9BTFBIQSk7CisKKyAgICBHTHVieXRlIGV4cGVjdGVkW10g
PSB7CisgICAgICAgIDY0LCA2NCwgNjQsIDEyNywKKyAgICB9OworICAgIHZlcmlmeVJlc3VsdHMo
dGV4LCBleHBlY3RlZCwgMCwgMCk7Cit9CisKK1RFU1RfUChDb3B5VGV4SW1hZ2VUZXN0LCBSR0JB
VG9BKQoreworICAgIEdMZmxvYXQgY29sb3JbXSA9IHsKKyAgICAgICAgMC4yNWYsIDEuMGYsIDAu
NzVmLCAwLjVmLAorICAgIH07CisKKyAgICBHTHVpbnQgZmJvID0gY3JlYXRlRnJhbWVidWZmZXIo
R0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgY29sb3IpOworICAgIEdMdWludCB0ZXggPSBjcmVh
dGVUZXh0dXJlRnJvbUNvcHlUZXhJbWFnZShmYm8sIEdMX0FMUEhBKTsKKworICAgIEdMdWJ5dGUg
ZXhwZWN0ZWRbXSA9IHsKKyAgICAgICAgMCwgMCwgMCwgMTI3LAorICAgIH07CisgICAgdmVyaWZ5
UmVzdWx0cyh0ZXgsIGV4cGVjdGVkLCAwLCAwKTsKK30KKworVEVTVF9QKENvcHlUZXhJbWFnZVRl
c3QsIFN1YkltYWdlUkdCQVRvTCkKK3sKKyAgICBHTGZsb2F0IGNvbG9yMFtdID0geworICAgICAg
ICAwLjI1ZiwgMS4wZiwgMC43NWYsIDAuNWYsCisgICAgfTsKKyAgICBHTHVpbnQgZmJvMCA9IGNy
ZWF0ZUZyYW1lYnVmZmVyKEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGNvbG9yMCk7CisgICAg
R0x1aW50IHRleCAgPSBjcmVhdGVUZXh0dXJlRnJvbUNvcHlUZXhJbWFnZShmYm8wLCBHTF9MVU1J
TkFOQ0UpOworCisgICAgR0xmbG9hdCBjb2xvcjFbXSA9IHsKKyAgICAgICAgMC41ZiwgMC4yNWYs
IDEuMGYsIDAuNzVmLAorICAgIH07CisgICAgR0x1aW50IGZibzEgPSBjcmVhdGVGcmFtZWJ1ZmZl
cihHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBjb2xvcjEpOworICAgIGNvcHlUZXh0dXJlV2l0
aENvcHlUZXhTdWJJbWFnZShmYm8xLCB0ZXgsIDIsIDQsIDUsIDYsIDgsIDgpOworCisgICAgR0x1
Ynl0ZSBleHBlY3RlZDBbXSA9IHsKKyAgICAgICAgNjQsIDY0LCA2NCwgMjU1LAorICAgIH07Cisg
ICAgdmVyaWZ5UmVzdWx0cyh0ZXgsIGV4cGVjdGVkMCwgMCwgMCk7CisKKyAgICBHTHVieXRlIGV4
cGVjdGVkMVtdID0geworICAgICAgICAxMjcsIDEyNywgMTI3LCAyNTUsCisgICAgfTsKKyAgICB2
ZXJpZnlSZXN1bHRzKHRleCwgZXhwZWN0ZWQxLCA3LCA3KTsKK30KKworVEVTVF9QKENvcHlUZXhJ
bWFnZVRlc3QsIFN1YkltYWdlUkdCQVRvTEEpCit7CisgICAgR0xmbG9hdCBjb2xvcjBbXSA9IHsK
KyAgICAgICAgMC4yNWYsIDEuMGYsIDAuNzVmLCAwLjVmLAorICAgIH07CisgICAgR0x1aW50IGZi
bzAgPSBjcmVhdGVGcmFtZWJ1ZmZlcihHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBjb2xvcjAp
OworICAgIEdMdWludCB0ZXggID0gY3JlYXRlVGV4dHVyZUZyb21Db3B5VGV4SW1hZ2UoZmJvMCwg
R0xfTFVNSU5BTkNFX0FMUEhBKTsKKworICAgIEdMZmxvYXQgY29sb3IxW10gPSB7CisgICAgICAg
IDAuNWYsIDAuMjVmLCAxLjBmLCAwLjc1ZiwKKyAgICB9OworICAgIEdMdWludCBmYm8xID0gY3Jl
YXRlRnJhbWVidWZmZXIoR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgY29sb3IxKTsKKyAgICBj
b3B5VGV4dHVyZVdpdGhDb3B5VGV4U3ViSW1hZ2UoZmJvMSwgdGV4LCAyLCA0LCA1LCA2LCA4LCA4
KTsKKworICAgIEdMdWJ5dGUgZXhwZWN0ZWQwW10gPSB7CisgICAgICAgIDY0LCA2NCwgNjQsIDEy
NywKKyAgICB9OworICAgIHZlcmlmeVJlc3VsdHModGV4LCBleHBlY3RlZDAsIDAsIDApOworCisg
ICAgR0x1Ynl0ZSBleHBlY3RlZDFbXSA9IHsKKyAgICAgICAgMTI3LCAxMjcsIDEyNywgMTkyLAor
ICAgIH07CisgICAgdmVyaWZ5UmVzdWx0cyh0ZXgsIGV4cGVjdGVkMSwgNywgNyk7Cit9CisKK1RF
U1RfUChDb3B5VGV4SW1hZ2VUZXN0LCBTdWJJbWFnZVJHQlRvTCkKK3sKKyAgICAvLyBUT0RPIChn
ZW9mZmxhbmcpOiBGaWd1cmUgb3V0IHdoeSBDb3B5VGV4W1N1Yl1JbWFnZSBkb2Vzbid0IHdvcmsg
d2l0aAorICAgIC8vIFJHQi0+TCBvbiBvbGRlciBJbnRlbCBjaGlwcworICAgIGlmIChJc0ludGVs
KCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09Q
RU5HTF9BTkdMRSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9u
IEludGVsIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIEdMZmxvYXQgY29sb3IwW10gPSB7CisgICAgICAgIDAuMjVmLCAxLjBmLCAwLjc1ZiwgMC41
ZiwKKyAgICB9OworICAgIEdMdWludCBmYm8wID0gY3JlYXRlRnJhbWVidWZmZXIoR0xfUkdCLCBH
TF9VTlNJR05FRF9CWVRFLCBjb2xvcjApOworICAgIEdMdWludCB0ZXggID0gY3JlYXRlVGV4dHVy
ZUZyb21Db3B5VGV4SW1hZ2UoZmJvMCwgR0xfTFVNSU5BTkNFKTsKKworICAgIEdMZmxvYXQgY29s
b3IxW10gPSB7CisgICAgICAgIDAuNWYsIDAuMjVmLCAxLjBmLCAwLjc1ZiwKKyAgICB9OworICAg
IEdMdWludCBmYm8xID0gY3JlYXRlRnJhbWVidWZmZXIoR0xfUkdCLCBHTF9VTlNJR05FRF9CWVRF
LCBjb2xvcjEpOworICAgIGNvcHlUZXh0dXJlV2l0aENvcHlUZXhTdWJJbWFnZShmYm8xLCB0ZXgs
IDIsIDQsIDUsIDYsIDgsIDgpOworCisgICAgR0x1Ynl0ZSBleHBlY3RlZDBbXSA9IHsKKyAgICAg
ICAgNjQsIDY0LCA2NCwgMjU1LAorICAgIH07CisgICAgdmVyaWZ5UmVzdWx0cyh0ZXgsIGV4cGVj
dGVkMCwgMCwgMCk7CisKKyAgICBHTHVieXRlIGV4cGVjdGVkMVtdID0geworICAgICAgICAxMjcs
IDEyNywgMTI3LCAyNTUsCisgICAgfTsKKyAgICB2ZXJpZnlSZXN1bHRzKHRleCwgZXhwZWN0ZWQx
LCA3LCA3KTsKK30KKworLy8gc3BlY2lhbGl6YXRpb24gb2YgQ29weVRleEltYWdlVGVzdCBpcyBh
ZGRlZCBzbyB0aGF0IHNvbWUgdGVzdHMgY2FuIGJlIGV4cGxpY2l0bHkgcnVuIHdpdGggYW4gRVMz
CisvLyBjb250ZXh0CitjbGFzcyBDb3B5VGV4SW1hZ2VUZXN0RVMzIDogcHVibGljIENvcHlUZXhJ
bWFnZVRlc3QKK3sKK307CisKKy8vICBUaGUgdGVzdCB2ZXJpZmllcyB0aGF0IGdsQ29weVRleFN1
YkltYWdlMkQgZ2VuZXJhdGVzIGEgR0xfSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IKKy8vICB3aGVu
IHRoZSByZWFkIGJ1ZmZlciBpcyBHTF9OT05FLgorLy8gIFJlZmVyZW5jZTogR0xFUyAzLjAuNCwg
U2VjdGlvbiAzLjguNSBBbHRlcm5hdGUgVGV4dHVyZSBJbWFnZSBTcGVjaWZpY2F0aW9uIENvbW1h
bmRzCitURVNUX1AoQ29weVRleEltYWdlVGVzdEVTMywgUmVhZEJ1ZmZlcklzTm9uZSkKK3sKKyAg
ICBHTGZsb2F0IGNvbG9yW10gPSB7CisgICAgICAgIDAuMjVmLCAxLjBmLCAwLjc1ZiwgMC41ZiwK
KyAgICB9OworCisgICAgR0x1aW50IGZibyA9IGNyZWF0ZUZyYW1lYnVmZmVyKEdMX1JHQkEsIEdM
X1VOU0lHTkVEX0JZVEUsIGNvbG9yKTsKKyAgICBHTHVpbnQgdGV4ID0gY3JlYXRlVGV4dHVyZUZy
b21Db3B5VGV4SW1hZ2UoZmJvLCBHTF9SR0JBKTsKKworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdM
X0ZSQU1FQlVGRkVSLCBmYm8pOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4
KTsKKworICAgIGdsUmVhZEJ1ZmZlcihHTF9OT05FKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOworICAgIGdsQ29weVRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwgMCwg
MCwgNCwgNCk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKwor
ICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZmYm8pOworICAgIGdsRGVsZXRlVGV4dHVyZXMo
MSwgJnRleCk7Cit9CisKKy8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9u
cyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZQor
Ly8gdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgorQU5HTEVfSU5TVEFOVElBVEVfVEVTVChD
b3B5VGV4SW1hZ2VUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAorICAg
ICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoRUdMX0VYUEVSSU1FTlRBTF9QUkVTRU5UX1BB
VEhfQ09QWV9BTkdMRSksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMShFR0xfRVhQ
RVJJTUVOVEFMX1BSRVNFTlRfUEFUSF9GQVNUX0FOR0xFKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgRVMyX09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKDMsIDMp
LAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSk7CisKK0FOR0xFX0lOU1RB
TlRJQVRFX1RFU1QoQ29weVRleEltYWdlVGVzdEVTMywgRVMzX0QzRDExKCksIEVTM19PUEVOR0wo
KSwgRVMzX09QRU5HTEVTKCkpOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL2dsX3Rlc3RzL0NvcHlUZXh0dXJlVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NvcHlUZXh0dXJlVGVzdC5jcHAJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rl
c3RzL0NvcHlUZXh0dXJlVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NjYgQEAK
Ky8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vCisKKy8vIENvcHlUZXh0dXJlVGVzdC5jcHA6IFRlc3RzIG9mIHRoZSBHTF9DSFJP
TUlVTV9jb3B5X3RleHR1cmUgZXh0ZW5zaW9uCisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xF
VGVzdC5oIgorCituYW1lc3BhY2UgYW5nbGUKK3sKKworY2xhc3MgQ29weVRleHR1cmVUZXN0IDog
cHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgQ29weVRleHR1cmVUZXN0KCkK
KyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRoKDI1Nik7CisgICAgICAgIHNldFdpbmRvd0hl
aWdodCgyNTYpOworICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOworICAgICAgICBzZXRDb25m
aWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOworICAgICAgICBz
ZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgfQorCisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRl
CisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7CisKKyAgICAgICAgZ2xHZW5UZXh0
dXJlcygyLCBtVGV4dHVyZXMpOworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQs
IG1UZXh0dXJlc1sxXSk7CisKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICAgICAgZ2xUZXhQYXJh
bWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdF
KTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFH
X0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworCisgICAgICAgIGdsR2Vu
RnJhbWVidWZmZXJzKDEsICZtRnJhbWVidWZmZXIpOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZl
cihHTF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVyKTsKKyAgICAgICAgZ2xGcmFtZWJ1ZmZlclRl
eHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVf
MkQsIG1UZXh0dXJlc1sxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKwor
ICAgICAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCgiR0xfQ0hST01JVU1fY29weV90ZXh0dXJlIikp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGdsQ29weVRleHR1cmVDSFJPTUlVTSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8UEZOR0xDT1BZVEVYVFVSRUNIUk9NSVVNUFJPQz4oCisgICAgICAgICAgICAgICAg
ZWdsR2V0UHJvY0FkZHJlc3MoImdsQ29weVRleHR1cmVDSFJPTUlVTSIpKTsKKyAgICAgICAgICAg
IGdsQ29weVN1YlRleHR1cmVDSFJPTUlVTSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xDT1BZU1VC
VEVYVFVSRUNIUk9NSVVNUFJPQz4oCisgICAgICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3Mo
ImdsQ29weVN1YlRleHR1cmVDSFJPTUlVTSIpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZv
aWQgVGVhckRvd24oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygy
LCBtVGV4dHVyZXMpOworICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbUZyYW1lYnVm
ZmVyKTsKKworICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7CisgICAgfQorCisgICAgYm9v
bCBjaGVja0V4dGVuc2lvbnMoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCFleHRlbnNpb25F
bmFibGVkKCJHTF9DSFJPTUlVTV9jb3B5X3RleHR1cmUiKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBHTF9DSFJPTUlVTV9jb3B5X3Rl
eHR1cmUgaXMgbm90IGF2YWlsYWJsZS4iCisgICAgICAgICAgICAgICAgICAgICAgPDwgc3RkOjpl
bmRsOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgRVhQ
RUNUX05FKG51bGxwdHIsIGdsQ29weVRleHR1cmVDSFJPTUlVTSk7CisgICAgICAgIEVYUEVDVF9O
RShudWxscHRyLCBnbENvcHlTdWJUZXh0dXJlQ0hST01JVU0pOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKKyAgICBHTHVpbnQgbVRleHR1cmVzWzJdID0geworICAgICAgICAwLCAwLAor
ICAgIH07CisgICAgR0x1aW50IG1GcmFtZWJ1ZmZlciA9IDA7CisKKyAgICBQRk5HTENPUFlURVhU
VVJFQ0hST01JVU1QUk9DIGdsQ29weVRleHR1cmVDSFJPTUlVTSAgICAgICA9IG51bGxwdHI7Cisg
ICAgUEZOR0xDT1BZU1VCVEVYVFVSRUNIUk9NSVVNUFJPQyBnbENvcHlTdWJUZXh0dXJlQ0hST01J
VU0gPSBudWxscHRyOworfTsKKworLy8gVGVzdCB0byBlbnN1cmUgdGhhdCB0aGUgYmFzaWMgZnVu
Y3Rpb25hbGl0eSBvZiB0aGUgZXh0ZW5zaW9uIHdvcmtzLgorVEVTVF9QKENvcHlUZXh0dXJlVGVz
dCwgQmFzaWNDb3B5VGV4dHVyZSkKK3sKKyAgICBpZiAoIWNoZWNrRXh0ZW5zaW9ucygpKQorICAg
IHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdMQ29sb3IgcGl4ZWxzID0gR0xDb2xv
cjo6cmVkOworCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0p
OworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxLCAxLCAwLCBH
TF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAmcGl4ZWxzKTsKKworICAgIGdsQ29weVRleHR1cmVD
SFJPTUlVTShtVGV4dHVyZXNbMF0sIG1UZXh0dXJlc1sxXSwgR0xfUkdCQSwgR0xfVU5TSUdORURf
QllURSwgZmFsc2UsIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSk7CisK
KyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgw
LCAwLCBwaXhlbHMpOworfQorCisvLyBUZXN0IHRvIGVuc3VyZSB0aGF0IHRoZSBiYXNpYyBmdW5j
dGlvbmFsaXR5IG9mIHRoZSBleHRlbnNpb24gd29ya3MuCitURVNUX1AoQ29weVRleHR1cmVUZXN0
LCBCYXNpY0NvcHlTdWJUZXh0dXJlKQoreworICAgIGlmICghY2hlY2tFeHRlbnNpb25zKCkpCisg
ICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR0xDb2xvciBwaXhlbHMgPSBHTENv
bG9yOjpyZWQ7CisKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sw
XSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDEsIDEsIDAs
IEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsICZwaXhlbHMpOworCisgICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMV0pOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhU
VVJFXzJELCAwLCBHTF9SR0JBLCAxLCAxLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBu
dWxscHRyKTsKKworICAgIGdsQ29weVN1YlRleHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIG1U
ZXh0dXJlc1sxXSwgMCwgMCwgMCwgMCwgMSwgMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisKKyAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIENoZWNrIHRoYXQgRkIgaXMgY29tcGxl
dGUuCisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GUkFNRUJVRkZFUl9DT01QTEVURSwgZ2xDaGVj
a0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7CisKKyAgICBFWFBFQ1RfUElYRUxf
Q09MT1JfRVEoMCwgMCwgcGl4ZWxzKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworfQor
CisvLyBUZXN0IHRoYXQgQ29weVRleHR1cmUgY2Fubm90IHJlZGVmaW5lIGFuIGltbXV0YWJsZSB0
ZXh0dXJlIGFuZCBDb3B5U3ViVGV4dHVyZSBjYW4gY29weSBkYXRhIHRvCisvLyBpbW11dGFibGUg
dGV4dHVyZXMKK1RFU1RfUChDb3B5VGV4dHVyZVRlc3QsIEltbXV0YWJsZVRleHR1cmUpCit7Cisg
ICAgaWYgKCFjaGVja0V4dGVuc2lvbnMoKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmCisgICAgICAgICghZXh0
ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfc3RvcmFnZSIpIHx8ICFleHRlbnNpb25FbmFi
bGVkKCJHTF9PRVNfcmdiOF9yZ2JhOCIpKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dAorICAg
ICAgICAgICAgPDwgIlRlc3Qgc2tpcHBlZCBkdWUgdG8gbWlzc2luZyBFUzMgb3IgR0xfRVhUX3Rl
eHR1cmVfc3RvcmFnZSBvciBHTF9PRVNfcmdiOF9yZ2JhOCIKKyAgICAgICAgICAgIDw8IHN0ZDo6
ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdMQ29sb3IgcGl4ZWxzID0gR0xD
b2xvcjo6cmVkOworCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNb
MF0pOworICAgIGdsVGV4U3RvcmFnZTJERVhUKEdMX1RFWFRVUkVfMkQsIDEsIEdMX1JHQkE4X09F
UywgMSwgMSk7CisgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDEs
IDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsICZwaXhlbHMpOworCisgICAgZ2xCaW5kVGV4
dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMV0pOworICAgIGdsVGV4U3RvcmFnZTJERVhU
KEdMX1RFWFRVUkVfMkQsIDEsIEdMX1JHQkE4X09FUywgMSwgMSk7CisgICAgZ2xGcmFtZWJ1ZmZl
clRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRV
UkVfMkQsIG1UZXh0dXJlc1sxXSwgMCk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAg
ICAvLyBTaG91bGQgZ2VuZXJhdGUgYW4gZXJyb3Igd2hlbiB0aGUgdGV4dHVyZSBpcyByZWRlZmlu
ZWQKKyAgICBnbENvcHlUZXh0dXJlQ0hST01JVU0obVRleHR1cmVzWzBdLCBtVGV4dHVyZXNbMV0s
IEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGZhbHNlLCBmYWxzZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmFsc2UpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJB
VElPTik7CisKKyAgICAvLyBTaG91bGQgc3VjY2VlZCB3aGVuIHVzaW5nIENvcHlTdWJUZXh0dXJl
CisgICAgZ2xDb3B5U3ViVGV4dHVyZUNIUk9NSVVNKG1UZXh0dXJlc1swXSwgbVRleHR1cmVzWzFd
LCAwLCAwLCAwLCAwLCAxLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICBFWFBFQ1RfR0xf
Tk9fRVJST1IoKTsKKworICAgIC8vIENoZWNrIHRoYXQgRkIgaXMgY29tcGxldGUuCisgICAgRVhQ
RUNUX0dMRU5VTV9FUShHTF9GUkFNRUJVRkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7CisKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwg
MCwgcGl4ZWxzKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworfQorCisvLyBUZXN0IHZh
bGlkYXRpb24gb2YgaW50ZXJuYWwgZm9ybWF0cyBpbiBDb3B5VGV4dHVyZSBhbmQgQ29weVN1YlRl
eHR1cmUKK1RFU1RfUChDb3B5VGV4dHVyZVRlc3QsIEludGVybmFsRm9ybWF0KQoreworICAgIGlm
ICghY2hlY2tFeHRlbnNpb25zKCkpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgc3RkOjp2ZWN0b3I8R0xpbnQ+IHNvdXJjZUZvcm1hdHM7CisgICAgc291cmNlRm9ybWF0cy5w
dXNoX2JhY2soR0xfQUxQSEEpOworICAgIHNvdXJjZUZvcm1hdHMucHVzaF9iYWNrKEdMX1JHQik7
CisgICAgc291cmNlRm9ybWF0cy5wdXNoX2JhY2soR0xfUkdCQSk7CisgICAgc291cmNlRm9ybWF0
cy5wdXNoX2JhY2soR0xfTFVNSU5BTkNFKTsKKyAgICBzb3VyY2VGb3JtYXRzLnB1c2hfYmFjayhH
TF9MVU1JTkFOQ0VfQUxQSEEpOworCisgICAgc3RkOjp2ZWN0b3I8R0xpbnQ+IGRlc3RGb3JtYXRz
OworICAgIGRlc3RGb3JtYXRzLnB1c2hfYmFjayhHTF9SR0IpOworICAgIGRlc3RGb3JtYXRzLnB1
c2hfYmFjayhHTF9SR0JBKTsKKworICAgIGlmIChleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfdGV4
dHVyZV9mb3JtYXRfQkdSQTg4ODgiKSkKKyAgICB7CisgICAgICAgIHNvdXJjZUZvcm1hdHMucHVz
aF9iYWNrKEdMX0JHUkFfRVhUKTsKKyAgICAgICAgZGVzdEZvcm1hdHMucHVzaF9iYWNrKEdMX0JH
UkFfRVhUKTsKKyAgICB9CisKKyAgICAvLyBUZXN0IHdpdGggZ2xDb3B5VGV4dHVyZQorICAgIGZv
ciAoR0xpbnQgc291cmNlRm9ybWF0IDogc291cmNlRm9ybWF0cykKKyAgICB7CisgICAgICAgIGZv
ciAoR0xpbnQgZGVzdEZvcm1hdCA6IGRlc3RGb3JtYXRzKQorICAgICAgICB7CisgICAgICAgICAg
ICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7CisgICAgICAgICAg
ICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgc291cmNlRm9ybWF0LCAxLCAxLCAwLCBz
b3VyY2VGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbHB0cik7CisgICAgICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgICAgICAg
ICAgZ2xDb3B5VGV4dHVyZUNIUk9NSVVNKG1UZXh0dXJlc1swXSwgbVRleHR1cmVzWzFdLCBkZXN0
Rm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLCBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmYWxzZSwgZmFsc2UpOworCisgICAgICAgICAgICBFWFBFQ1RfR0xfTk9fRVJS
T1IoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRlc3Qgd2l0aCBnbENvcHlTdWJUZXh0
dXJlCisgICAgZm9yIChHTGludCBzb3VyY2VGb3JtYXQgOiBzb3VyY2VGb3JtYXRzKQorICAgIHsK
KyAgICAgICAgZm9yIChHTGludCBkZXN0Rm9ybWF0IDogZGVzdEZvcm1hdHMpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdKTsK
KyAgICAgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBzb3VyY2VGb3JtYXQs
IDEsIDEsIDAsIHNvdXJjZUZvcm1hdCwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwor
CisgICAgICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sxXSk7
CisgICAgICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgZGVzdEZvcm1hdCwg
MSwgMSwgMCwgZGVzdEZvcm1hdCwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisg
ICAgICAgICAgICBnbENvcHlTdWJUZXh0dXJlQ0hST01JVU0obVRleHR1cmVzWzBdLCBtVGV4dHVy
ZXNbMV0sIDAsIDAsIDAsIDAsIDEsIDEsIGZhbHNlLCBmYWxzZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmYWxzZSk7CisKKyAgICAgICAgICAgIEVYUEVDVF9HTF9OT19F
UlJPUigpOworICAgICAgICB9CisgICAgfQorfQorCisvLyBDaGVjayB0aGF0IGludmFsaWQgaW50
ZXJuYWwgZm9ybWF0cyByZXR1cm4gZXJyb3JzLgorVEVTVF9QKENvcHlUZXh0dXJlVGVzdCwgSW50
ZXJuYWxGb3JtYXROb3RTdXBwb3J0ZWQpCit7CisgICAgaWYgKCFjaGVja0V4dGVuc2lvbnMoKSkK
KyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RF
WFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQs
IDAsIEdMX1JHQkEsIDEsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIp
OworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgc3RkOjp2ZWN0b3I8R0xpbnQ+IHVu
c3VwcG9ydGVkRGVzdEZvcm1hdHM7CisgICAgdW5zdXBwb3J0ZWREZXN0Rm9ybWF0cy5wdXNoX2Jh
Y2soR0xfQUxQSEEpOworICAgIHVuc3VwcG9ydGVkRGVzdEZvcm1hdHMucHVzaF9iYWNrKEdMX0xV
TUlOQU5DRSk7CisgICAgdW5zdXBwb3J0ZWREZXN0Rm9ybWF0cy5wdXNoX2JhY2soR0xfTFVNSU5B
TkNFX0FMUEhBKTsKKworICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVf
Zm9ybWF0X0JHUkE4ODg4IikpCisgICAgeworICAgICAgICB1bnN1cHBvcnRlZERlc3RGb3JtYXRz
LnB1c2hfYmFjayhHTF9CR1JBX0VYVCk7CisgICAgfQorCisgICAgLy8gQ2hlY2sgdW5zdXBwb3J0
ZWQgZm9ybWF0IHJlcG9ydHMgYW4gZXJyb3IuCisgICAgZm9yIChHTGludCB1bnN1cHBvcnRlZERl
c3RGb3JtYXQgOiB1bnN1cHBvcnRlZERlc3RGb3JtYXRzKQorICAgIHsKKyAgICAgICAgZ2xDb3B5
VGV4dHVyZUNIUk9NSVVNKG1UZXh0dXJlc1swXSwgbVRleHR1cmVzWzFdLCB1bnN1cHBvcnRlZERl
c3RGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKKyAgICB9CisKKyAgICBmb3IgKEdMaW50IHVuc3VwcG9ydGVkRGVzdEZv
cm1hdCA6IHVuc3VwcG9ydGVkRGVzdEZvcm1hdHMpCisgICAgeworICAgICAgICBnbEJpbmRUZXh0
dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sxXSk7CisgICAgICAgIGdsVGV4SW1hZ2UyRChH
TF9URVhUVVJFXzJELCAwLCB1bnN1cHBvcnRlZERlc3RGb3JtYXQsIDEsIDEsIDAsIHVuc3VwcG9y
dGVkRGVzdEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIG51
bGxwdHIpOworICAgICAgICBnbENvcHlTdWJUZXh0dXJlQ0hST01JVU0obVRleHR1cmVzWzBdLCBt
VGV4dHVyZXNbMV0sIDAsIDAsIDAsIDAsIDEsIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworICAg
ICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIH0KK30KKwor
Ly8gVGVzdCB0byBlbnN1cmUgdGhhdCB0aGUgZGVzdGluYXRpb24gdGV4dHVyZSBpcyByZWRlZmlu
ZWQgaWYgdGhlIHByb3BlcnRpZXMgYXJlIGRpZmZlcmVudC4KK1RFU1RfUChDb3B5VGV4dHVyZVRl
c3QsIFJlZGVmaW5lRGVzdGluYXRpb25UZXh0dXJlKQoreworICAgIGlmICghY2hlY2tFeHRlbnNp
b25zKCkpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR0xDb2xvciBwaXhl
bHNbNF0gPSB7R0xDb2xvcjo6cmVkLCBHTENvbG9yOjpyZWQsIEdMQ29sb3I6OnJlZCwgR0xDb2xv
cjo6cmVkfTsKKworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBd
KTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMiwgMiwgMCwg
R0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzKTsKKworICAgIGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzFdKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgMCwgR0xfQkdSQV9FWFQsIDEsIDEsIDAsIEdMX0JHUkFfRVhULCBHTF9VTlNJR05FRF9C
WVRFLCBwaXhlbHMpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gR0xfSU5W
QUxJRF9PUEVSQVRJT04gZHVlIHRvICJpbnRyaW5zaWMgZm9ybWF0IiAhPSAiaW50ZXJuYWwgZm9y
bWF0Ii4KKyAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwgMSwgMSwg
R0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzKTsKKyAgICBFWFBFQ1RfR0xfRVJST1Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIC8vIEdMX0lOVkFMSURfVkFMVUUgZHVlIHRvIGJh
ZCBkaW1lbnNpb25zLgorICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCAxLCAx
LCAxLCAxLCBHTF9CR1JBX0VYVCwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzKTsKKyAgICBFWFBF
Q1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7CisKKyAgICAvLyBJZiB0aGUgZGVzdCB0ZXh0
dXJlIGhhcyBkaWZmZXJlbnQgcHJvcGVydGllcywgZ2xDb3B5VGV4dHVyZUNIUk9NSVVNKCkKKyAg
ICAvLyByZWRlZmluZXMgdGhlbS4KKyAgICBnbENvcHlUZXh0dXJlQ0hST01JVU0obVRleHR1cmVz
WzBdLCBtVGV4dHVyZXNbMV0sIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGZhbHNlLCBmYWxz
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpOworICAgIEVYUEVDVF9HTF9OT19F
UlJPUigpOworCisgICAgLy8gZ2xUZXhTdWJJbWFnZTJEKCkgc3VjY2VlZHMgYmVjYXVzZSBtVGV4
dHVyZXNbMV0gaXMgcmVkZWZpbmVkIGludG8gMngyCisgICAgLy8gZGltZW5zaW9uIGFuZCBHTF9S
R0JBIGZvcm1hdC4KKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sx
XSk7CisgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDEsIDEsIDEsIDEsIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVscyk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7CisKKyAgICAvLyBDaGVjayB0aGF0IEZCIGlzIGNvbXBsZXRlLgorICAgIEVYUEVDVF9HTEVO
VU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhH
TF9GUkFNRUJVRkZFUikpOworCisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDEsIDEsIHBpeGVs
c1szXSk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFRlc3QgdGhhdCBpbnZh
bGlkIGRpbWVuc2lvbnMgaW4gQ29weVN1YlRleHR1cmUgYXJlIHZhbGlkYXRlZAorVEVTVF9QKENv
cHlUZXh0dXJlVGVzdCwgQ29weVN1YlRleHR1cmVEaW1lbnNpb24pCit7CisgICAgaWYgKCFjaGVj
a0V4dGVuc2lvbnMoKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7CisgICAgZ2xUZXhJbWFnZTJE
KEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDIsIDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVE
X0JZVEUsIG51bGxwdHIpOworCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4
dHVyZXNbMV0pOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAz
LCAzLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKKworICAgIGdsQ29w
eVN1YlRleHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIG1UZXh0dXJlc1sxXSwgMSwgMSwgMCwg
MCwgMSwgMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
CisKKyAgICAvLyB4b2Zmc2V0IDwgMAorICAgIGdsQ29weVN1YlRleHR1cmVDSFJPTUlVTShtVGV4
dHVyZXNbMF0sIG1UZXh0dXJlc1sxXSwgLTEsIDEsIDAsIDAsIDEsIDEsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKKworICAgIC8v
IHggPCAwCisgICAgZ2xDb3B5U3ViVGV4dHVyZUNIUk9NSVVNKG1UZXh0dXJlc1swXSwgbVRleHR1
cmVzWzFdLCAxLCAxLCAtMSwgMCwgMSwgMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisgICAgRVhQ
RUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOworCisgICAgLy8geG9mZnNldCArIHdpZHRo
ID4gZGVzdF93aWR0aAorICAgIGdsQ29weVN1YlRleHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0s
IG1UZXh0dXJlc1sxXSwgMiwgMiwgMCwgMCwgMiwgMiwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7Cisg
ICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOworCisgICAgLy8geCArIHdpZHRo
ID4gc291cmNlX3dpZHRoCisgICAgZ2xDb3B5U3ViVGV4dHVyZUNIUk9NSVVNKG1UZXh0dXJlc1sw
XSwgbVRleHR1cmVzWzFdLCAwLCAwLCAxLCAxLCAyLCAyLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsK
KyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Cit9CisKKy8vIFRlc3QgdGhh
dCBpbnZhbGlkIElEcyBpbiBDb3B5VGV4dHVyZSBhcmUgdmFsaWRhdGVkCitURVNUX1AoQ29weVRl
eHR1cmVUZXN0LCBDb3B5VGV4dHVyZUludmFsaWRUZXh0dXJlSWRzKQoreworICAgIGlmICghY2hl
Y2tFeHRlbnNpb25zKCkpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZ2xC
aW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0pOworICAgIGdsVGV4SW1hZ2Uy
RChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAyLCAyLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05F
RF9CWVRFLCBudWxscHRyKTsKKworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRl
eHR1cmVzWzFdKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwg
MywgMywgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7CisKKyAgICBnbENv
cHlUZXh0dXJlQ0hST01JVU0obVRleHR1cmVzWzBdLCA5OTk5MywgR0xfUkdCQSwgR0xfVU5TSUdO
RURfQllURSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lO
VkFMSURfVkFMVUUpOworCisgICAgZ2xDb3B5VGV4dHVyZUNIUk9NSVVNKDk5OTk0LCBtVGV4dHVy
ZXNbMV0sIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwor
ICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKKworICAgIGdsQ29weVRleHR1
cmVDSFJPTUlVTSg5OTk5NSwgOTk5OTYsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGZhbHNl
LCBmYWxzZSwgZmFsc2UpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsK
KworICAgIGdsQ29weVRleHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIG1UZXh0dXJlc1sxXSwg
R0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgZmFsc2UsIGZhbHNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBmYWxzZSk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFRl
c3QgdGhhdCBpbnZhbGlkIElEcyBpbiBDb3B5U3ViVGV4dHVyZSBhcmUgdmFsaWRhdGVkCitURVNU
X1AoQ29weVRleHR1cmVUZXN0LCBDb3B5U3ViVGV4dHVyZUludmFsaWRUZXh0dXJlSWRzKQorewor
ICAgIGlmICghY2hlY2tFeHRlbnNpb25zKCkpCisgICAgeworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0pOworICAg
IGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAyLCAyLCAwLCBHTF9SR0JB
LCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKKworICAgIGdsQmluZFRleHR1cmUoR0xfVEVY
VFVSRV8yRCwgbVRleHR1cmVzWzFdKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwg
MCwgR0xfUkdCQSwgMywgMywgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7
CisKKyAgICBnbENvcHlTdWJUZXh0dXJlQ0hST01JVU0obVRleHR1cmVzWzBdLCA5OTk5MywgMSwg
MSwgMCwgMCwgMSwgMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisgICAgRVhQRUNUX0dMX0VSUk9S
KEdMX0lOVkFMSURfVkFMVUUpOworCisgICAgZ2xDb3B5U3ViVGV4dHVyZUNIUk9NSVVNKDk5OTk0
LCBtVGV4dHVyZXNbMV0sIDEsIDEsIDAsIDAsIDEsIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwor
ICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKKworICAgIGdsQ29weVN1YlRl
eHR1cmVDSFJPTUlVTSg5OTk5NSwgOTk5OTYsIDEsIDEsIDAsIDAsIDEsIDEsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKKworICAg
IGdsQ29weVN1YlRleHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIG1UZXh0dXJlc1sxXSwgMSwg
MSwgMCwgMCwgMSwgMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisgICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7Cit9CisKKy8vIFRlc3QgdGhhdCB1c2luZyBhbiBvZmZzZXQgaW4gQ29weVN1YlRleHR1
cmUgd29ya3MgY29ycmVjdGx5CitURVNUX1AoQ29weVRleHR1cmVUZXN0LCBDb3B5U3ViVGV4dHVy
ZU9mZnNldCkKK3sKKyAgICBpZiAoIWNoZWNrRXh0ZW5zaW9ucygpKQorICAgIHsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIEdMQ29sb3IgcmdiYVBpeGVsc1s0ICogNF0gPSB7R0xDb2xv
cjo6cmVkLCBHTENvbG9yOjpncmVlbiwgR0xDb2xvcjo6Ymx1ZSwgR0xDb2xvcjo6YmxhY2t9Owor
ICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdKTsKKyAgICBnbFRl
eEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMiwgMiwgMCwgR0xfUkdCQSwgR0xf
VU5TSUdORURfQllURSwgcmdiYVBpeGVscyk7CisKKyAgICBHTENvbG9yIHRyYW5zcGFyZW50UGl4
ZWxzWzQgKiA0XSA9IHtHTENvbG9yOjp0cmFuc3BhcmVudEJsYWNrLCBHTENvbG9yOjp0cmFuc3Bh
cmVudEJsYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMQ29s
b3I6OnRyYW5zcGFyZW50QmxhY2ssIEdMQ29sb3I6OnRyYW5zcGFyZW50QmxhY2t9OworICAgIGds
QmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzFdKTsKKyAgICBnbFRleEltYWdl
MkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdO
RURfQllURSwgdHJhbnNwYXJlbnRQaXhlbHMpOworCisgICAgZ2xDb3B5U3ViVGV4dHVyZUNIUk9N
SVVNKG1UZXh0dXJlc1swXSwgbVRleHR1cmVzWzFdLCAxLCAxLCAwLCAwLCAxLCAxLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICBnbENvcHlTdWJU
ZXh0dXJlQ0hST01JVU0obVRleHR1cmVzWzBdLCBtVGV4dHVyZXNbMV0sIDEsIDAsIDEsIDAsIDEs
IDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAg
IGdsQ29weVN1YlRleHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIG1UZXh0dXJlc1sxXSwgMCwg
MSwgMCwgMSwgMSwgMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisgICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7CisKKyAgICAvLyBDaGVjayB0aGF0IEZCIGlzIGNvbXBsZXRlLgorICAgIEVYUEVDVF9H
TEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyhHTF9GUkFNRUJVRkZFUikpOworCisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdM
Q29sb3I6OnRyYW5zcGFyZW50QmxhY2spOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgxLCAx
LCBHTENvbG9yOjpyZWQpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgxLCAwLCBHTENvbG9y
OjpncmVlbik7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDEsIEdMQ29sb3I6OmJsdWUp
OworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworfQorCisvLyBUZXN0IHRoYXQgZmxpcHBpbmcg
dGhlIFkgY29tcG9uZW50IHdvcmtzIGNvcnJlY3RseQorVEVTVF9QKENvcHlUZXh0dXJlVGVzdCwg
RmxpcFkpCit7CisgICAgaWYgKCFjaGVja0V4dGVuc2lvbnMoKSkKKyAgICB7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBHTENvbG9yIHJnYmFQaXhlbHNbNF0gPSB7R0xDb2xvcigyNTV1
LCAyNTV1LCAyNTV1LCAyNTV1KSwgR0xDb2xvcigxMjd1LCAxMjd1LCAxMjd1LCAxMjd1KSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xDb2xvcig2M3UsIDYzdSwgNjN1LCAxMjd1KSwg
R0xDb2xvcigyNTV1LCAyNTV1LCAyNTV1LCAwdSl9OworCisgICAgZ2xCaW5kVGV4dHVyZShHTF9U
RVhUVVJFXzJELCBtVGV4dHVyZXNbMF0pOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJE
LCAwLCBHTF9SR0JBLCAyLCAyLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCByZ2JhUGl4
ZWxzKTsKKworICAgIGdsQ29weVRleHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIG1UZXh0dXJl
c1sxXSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgR0xfVFJVRSwgR0xfRkFMU0UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX0ZBTFNFKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1Io
KTsKKworICAgIC8vIENoZWNrIHRoYXQgRkIgaXMgY29tcGxldGUuCisgICAgRVhQRUNUX0dMRU5V
TV9FUShHTF9GUkFNRUJVRkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdM
X0ZSQU1FQlVGRkVSKSk7CisKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgcmdiYVBp
eGVsc1syXSk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDEsIDAsIHJnYmFQaXhlbHNbM10p
OworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAxLCByZ2JhUGl4ZWxzWzBdKTsKKyAgICBF
WFBFQ1RfUElYRUxfQ09MT1JfRVEoMSwgMSwgcmdiYVBpeGVsc1sxXSk7CisgICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7Cit9CisKKy8vIFRlc3QgdGhhdCBwcmVtdWx0aXB5aW5nIHRoZSBhbHBoYSBv
biBjb3B5IHdvcmtzIGNvcnJlY3RseQorVEVTVF9QKENvcHlUZXh0dXJlVGVzdCwgUHJlbXVsdGlw
bHlBbHBoYSkKK3sKKyAgICBpZiAoIWNoZWNrRXh0ZW5zaW9ucygpKQorICAgIHsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIEdMQ29sb3IgcmdiYVBpeGVsc1s0XSA9IHtHTENvbG9yKDI1
NXUsIDI1NXUsIDI1NXUsIDI1NXUpLCBHTENvbG9yKDI1NXUsIDI1NXUsIDI1NXUsIDEyN3UpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTENvbG9yKDEyN3UsIDEyN3UsIDEyN3UsIDEy
N3UpLCBHTENvbG9yKDI1NXUsIDI1NXUsIDI1NXUsIDB1KX07CisKKyAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRV
UkVfMkQsIDAsIEdMX1JHQkEsIDIsIDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHJn
YmFQaXhlbHMpOworCisgICAgZ2xDb3B5VGV4dHVyZUNIUk9NSVVNKG1UZXh0dXJlc1swXSwgbVRl
eHR1cmVzWzFdLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBHTF9GQUxTRSwgR0xfVFJVRSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfRkFMU0UpOworICAgIEVYUEVDVF9HTF9OT19F
UlJPUigpOworCisgICAgLy8gQ2hlY2sgdGhhdCBGQiBpcyBjb21wbGV0ZS4KKyAgICBFWFBFQ1Rf
R0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFLCBnbENoZWNrRnJhbWVidWZmZXJTdGF0
dXMoR0xfRlJBTUVCVUZGRVIpKTsKKworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9ORUFSKDAsIDAs
IEdMQ29sb3IoMjU1LCAyNTUsIDI1NSwgMjU1KSwgMS4wKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09M
T1JfTkVBUigxLCAwLCBHTENvbG9yKDEyNywgMTI3LCAxMjcsIDEyNyksIDEuMCk7CisgICAgRVhQ
RUNUX1BJWEVMX0NPTE9SX05FQVIoMCwgMSwgR0xDb2xvcig2MywgNjMsIDYzLCAxMjcpLCAxLjAp
OworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9ORUFSKDEsIDEsIEdMQ29sb3IoMCwgMCwgMCwgMCks
IDEuMCk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFRlc3QgdGhhdCB1bm11
bHRpcHlpbmcgdGhlIGFscGhhIG9uIGNvcHkgd29ya3MgY29ycmVjdGx5CitURVNUX1AoQ29weVRl
eHR1cmVUZXN0LCBVbm11bHRpcGx5QWxwaGEpCit7CisgICAgaWYgKCFjaGVja0V4dGVuc2lvbnMo
KSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHTENvbG9yIHJnYmFQaXhl
bHNbNF0gPSB7R0xDb2xvcigyNTV1LCAyNTV1LCAyNTV1LCAyNTV1KSwgR0xDb2xvcigxMjd1LCAx
Mjd1LCAxMjd1LCAxMjd1KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xDb2xvcig2
M3UsIDYzdSwgNjN1LCAxMjd1KSwgR0xDb2xvcigyNTV1LCAyNTV1LCAyNTV1LCAwdSl9OworCisg
ICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0pOworICAgIGdsVGV4
SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAyLCAyLCAwLCBHTF9SR0JBLCBHTF9V
TlNJR05FRF9CWVRFLCByZ2JhUGl4ZWxzKTsKKworICAgIGdsQ29weVRleHR1cmVDSFJPTUlVTSht
VGV4dHVyZXNbMF0sIG1UZXh0dXJlc1sxXSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgR0xf
RkFMU0UsIEdMX0ZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9UUlVFKTsKKyAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIENoZWNrIHRoYXQgRkIgaXMgY29tcGxl
dGUuCisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GUkFNRUJVRkZFUl9DT01QTEVURSwgZ2xDaGVj
a0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7CisKKyAgICBFWFBFQ1RfUElYRUxf
Q09MT1JfTkVBUigwLCAwLCBHTENvbG9yKDI1NSwgMjU1LCAyNTUsIDI1NSksIDEuMCk7CisgICAg
RVhQRUNUX1BJWEVMX0NPTE9SX05FQVIoMSwgMCwgR0xDb2xvcigyNTUsIDI1NSwgMjU1LCAxMjcp
LCAxLjApOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9ORUFSKDAsIDEsIEdMQ29sb3IoMTI3LCAx
MjcsIDEyNywgMTI3KSwgMS4wKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfTkVBUigxLCAxLCBH
TENvbG9yKDI1NSwgMjU1LCAyNTUsIDApLCAxLjApOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OworfQorCisvLyBUZXN0IHRoYXQgdW5tdWx0aXB5aW5nIGFuZCBwcmVtdWx0aXBseWluZyB0aGUg
YWxwaGEgaXMgdGhlIHNhbWUgYXMgZG9pbmcgbmVpdGhlcgorVEVTVF9QKENvcHlUZXh0dXJlVGVz
dCwgVW5tdWx0aXBseUFuZFByZW11bHRwbHlBbHBoYSkKK3sKKyAgICBpZiAoIWNoZWNrRXh0ZW5z
aW9ucygpKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdMQ29sb3Igcmdi
YVBpeGVsc1s0XSA9IHtHTENvbG9yKDI1NXUsIDI1NXUsIDI1NXUsIDI1NXUpLCBHTENvbG9yKDEy
N3UsIDEyN3UsIDEyN3UsIDEyN3UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTENv
bG9yKDYzdSwgNjN1LCA2M3UsIDEyN3UpLCBHTENvbG9yKDI1NXUsIDI1NXUsIDI1NXUsIDB1KX07
CisKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7CisgICAg
Z2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDIsIDIsIDAsIEdMX1JHQkEs
IEdMX1VOU0lHTkVEX0JZVEUsIHJnYmFQaXhlbHMpOworCisgICAgZ2xDb3B5VGV4dHVyZUNIUk9N
SVVNKG1UZXh0dXJlc1swXSwgbVRleHR1cmVzWzFdLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRF
LCBHTF9GQUxTRSwgR0xfVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVFJVRSk7
CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBDaGVjayB0aGF0IEZCIGlzIGNv
bXBsZXRlLgorICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUsIGds
Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOworCisgICAgRVhQRUNUX1BJ
WEVMX0NPTE9SX05FQVIoMCwgMCwgR0xDb2xvcigyNTUsIDI1NSwgMjU1LCAyNTUpLCAxLjApOwor
ICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9ORUFSKDEsIDAsIEdMQ29sb3IoMTI3LCAxMjcsIDEyNywg
MTI3KSwgMS4wKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfTkVBUigwLCAxLCBHTENvbG9yKDYz
LCA2MywgNjMsIDEyNyksIDEuMCk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX05FQVIoMSwgMSwg
R0xDb2xvcigyNTUsIDI1NSwgMjU1LCAwKSwgMS4wKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1Io
KTsKK30KKworLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcu
IHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlCisvLyB0ZXN0
cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCitBTkdMRV9JTlNUQU5USUFURV9URVNUKENvcHlUZXh0
dXJlVGVzdCwgRVMyX0QzRDkoKSwgRVMyX0QzRDExKCksIEVTMl9PUEVOR0woKSwgRVMyX09QRU5H
TEVTKCkpOworCit9ICAvLyBuYW1lc3BhY2UgYW5nbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9DdWJlTWFwVGV4dHVyZVRlc3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9DdWJlTWFw
VGV4dHVyZVRlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9nbF90ZXN0cy9DdWJlTWFwVGV4dHVyZVRlc3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTM4IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdM
RVRlc3QuaCIKKwordXNpbmcgbmFtZXNwYWNlIGFuZ2xlOworCitjbGFzcyBDdWJlTWFwVGV4dHVy
ZVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBDdWJlTWFwVGV4
dHVyZVRlc3QoKQorICAgIHsKKyAgICAgICAgc2V0V2luZG93V2lkdGgoMjU2KTsKKyAgICAgICAg
c2V0V2luZG93SGVpZ2h0KDI1Nik7CisgICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7CisgICAg
ICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7
CisgICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgU2V0VXAoKQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOworCisgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIHZzU291cmNlID0gU0hBREVSX1NPVVJDRQorICAgICAgICAoCisg
ICAgICAgICAgICBhdHRyaWJ1dGUgaGlnaHAgdmVjNCBwb3NpdGlvbjsKKyAgICAgICAgICAgIHZv
aWQgbWFpbih2b2lkKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9u
ID0gcG9zaXRpb247CisgICAgICAgICAgICB9CisgICAgICAgICk7CisKKyAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcgZnNTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgICAgICgKKyAgICAgICAg
ICAgIHVuaWZvcm0gaGlnaHAgdmVjNCBjb2xvcjsKKyAgICAgICAgICAgIHZvaWQgbWFpbih2b2lk
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IGNvbG9yOwor
ICAgICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVBy
b2dyYW0odnNTb3VyY2UsIGZzU291cmNlKTsKKyAgICAgICAgaWYgKG1Qcm9ncmFtID09IDApCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEZBSUwoKSA8PCAic2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxl
ZC4iOworICAgICAgICB9CisKKyAgICAgICAgbUNvbG9yTG9jYXRpb24gPSBnbEdldFVuaWZvcm1M
b2NhdGlvbihtUHJvZ3JhbSwgImNvbG9yIik7CisKKyAgICAgICAgZ2xVc2VQcm9ncmFtKG1Qcm9n
cmFtKTsKKworICAgICAgICBnbENsZWFyQ29sb3IoMCwgMCwgMCwgMCk7CisgICAgICAgIGdsQ2xl
YXJEZXB0aGYoMC4wKTsKKyAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xf
REVQVEhfQlVGRkVSX0JJVCk7CisKKyAgICAgICAgZ2xFbmFibGUoR0xfQkxFTkQpOworICAgICAg
ICBnbERpc2FibGUoR0xfREVQVEhfVEVTVCk7CisKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKKyAgICB7CisgICAgICAg
IGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7CisKKyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93
bigpOworICAgIH0KKworICAgIEdMdWludCBtUHJvZ3JhbTsKKyAgICBHTGludCBtQ29sb3JMb2Nh
dGlvbjsKK307CisKKy8vIFZlcmlmeSB0aGF0IHJlbmRlcmluZyB0byB0aGUgZmFjZXMgb2YgYSBj
dWJlIG1hcCBjb25zZWN1dGl2ZWx5IHdpbGwgY29ycmVjdGx5IHJlbmRlciB0byBlYWNoIGZhY2Uu
CitURVNUX1AoQ3ViZU1hcFRleHR1cmVUZXN0LCBSZW5kZXJUb0ZhY2VzQ29uc2VjdXRpdmVseSkK
K3sKKyAgICBjb25zdCBHTGZsb2F0IGZhY2VDb2xvcnNbXSA9CisgICAgeworICAgICAgICAxLjBm
LCAwLjBmLCAwLjBmLCAxLjBmLAorICAgICAgICAwLjBmLCAxLjBmLCAwLjBmLCAxLjBmLAorICAg
ICAgICAwLjBmLCAwLjBmLCAxLjBmLCAxLjBmLAorICAgICAgICAxLjBmLCAxLjBmLCAwLjBmLCAx
LjBmLAorICAgICAgICAxLjBmLCAwLjBmLCAxLjBmLCAxLjBmLAorICAgICAgICAwLjBmLCAxLjBm
LCAxLjBmLCAxLjBmLAorICAgIH07CisKKyAgICBHTHVpbnQgdGV4ID0gMDsKKyAgICBnbEdlblRl
eHR1cmVzKDEsICZ0ZXgpOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV9DVUJFX01BUCwg
dGV4KTsKKyAgICBnbFRleFN0b3JhZ2UyREVYVChHTF9URVhUVVJFX0NVQkVfTUFQLCAxLCBHTF9S
R0JBOF9PRVMsIDEsIDEpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgR0x1aW50
IGZibyA9IDA7CisgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJmZibyk7CisgICAgZ2xCaW5kRnJh
bWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIGZibyk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
CisKKyAgICBmb3IgKEdMZW51bSBmYWNlID0gMDsgZmFjZSA8IDY7IGZhY2UrKykKKyAgICB7Cisg
ICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FU
VEFDSE1FTlQwLCBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggKyBmYWNlLCB0ZXgsIDAp
OworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgICAgICBnbFVzZVByb2dyYW0o
bVByb2dyYW0pOworCisgICAgICAgIGNvbnN0IEdMZmxvYXQgKmZhY2VDb2xvciA9IGZhY2VDb2xv
cnMgKyAoZmFjZSAqIDQpOworICAgICAgICBnbFVuaWZvcm00ZihtQ29sb3JMb2NhdGlvbiwgZmFj
ZUNvbG9yWzBdLCBmYWNlQ29sb3JbMV0sIGZhY2VDb2xvclsyXSwgZmFjZUNvbG9yWzNdKTsKKwor
ICAgICAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOworICAgIH0KKworICAgIGZvciAoR0xlbnVtIGZhY2UgPSAwOyBm
YWNlIDwgNjsgZmFjZSsrKQorICAgIHsKKyAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChH
TF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfQ1VCRV9NQVBf
UE9TSVRJVkVfWCArIGZhY2UsIHRleCwgMCk7CisgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OworCisgICAgICAgIGNvbnN0IEdMZmxvYXQgKmZhY2VDb2xvciA9IGZhY2VDb2xvcnMgKyAoZmFj
ZSAqIDQpOworICAgICAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgZmFjZUNvbG9yWzBdICogMjU1
LCBmYWNlQ29sb3JbMV0gKiAyNTUsIGZhY2VDb2xvclsyXSAqIDI1NSwgZmFjZUNvbG9yWzNdICog
MjU1KTsKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgfQorCisgICAgZ2xEZWxl
dGVGcmFtZWJ1ZmZlcnMoMSwgJmZibyk7CisgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGV4KTsK
KworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworfQorCisvLyBVc2UgdGhpcyB0byBzZWxlY3Qg
d2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFq
b3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgorQU5HTEVfSU5T
VEFOVElBVEVfVEVTVChDdWJlTWFwVGV4dHVyZVRlc3QsCisgICAgICAgICAgICAgICAgICAgICAg
IEVTMl9EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzMoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAg
ICAgICBFUzNfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygp
LAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMRVMoKSk7CkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRDNEMTFFbXVsYXRlZEluZGV4ZWRC
dWZmZXJUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZ2xfdGVzdHMvRDNEMTFFbXVsYXRlZEluZGV4ZWRCdWZmZXJUZXN0LmNwcAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRDNE
MTFFbXVsYXRlZEluZGV4ZWRCdWZmZXJUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDE5MyBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorLy8KKy8vIEQzRDExRW11bGF0ZWRJbmRleGVkQnVmZmVyVGVzdDoKKy8v
ICAgVGVzdHMgdG8gdmFsaWRhdGUgb3VyIEQzRDExIHN1cHBvcnQgZm9yIGVtdWxhdGluZyBhbiBp
bmRleGVkCisvLyAgIHZlcnRleCBidWZmZXIuCisvLworCisjaW5jbHVkZSAibGliQU5HTEUvYW5n
bGV0eXBlcy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHQuaCIKKyNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQnVmZmVyMTEuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvQ29udGV4dDExLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL1JlbmRlcmVyMTEuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9k
M2QvSW5kZXhEYXRhTWFuYWdlci5oIgorI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0Lmgi
CisjaW5jbHVkZSAidGVzdF91dGlscy9hbmdsZV90ZXN0X2luc3RhbnRpYXRlLmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNlCit7CisKK2NsYXNzIEQzRDExRW11bGF0ZWRJ
bmRleGVkQnVmZmVyVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJvdGVjdGVkOgorCisg
ICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNldFVw
KCk7CisgICAgICAgIEFTU0VSVF9FUShFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdM
RSwgR2V0UGFyYW0oKS5nZXRSZW5kZXJlcigpKTsKKworICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Z2w6OkNvbnRleHQgKj4oZ2V0RUdMV2luZG93KCktPmdl
dENvbnRleHQoKSk7CisgICAgICAgIHJ4OjpDb250ZXh0MTEgKmNvbnRleHQxMSA9IHJ4OjpHZXRJ
bXBsQXM8cng6OkNvbnRleHQxMT4oY29udGV4dCk7CisgICAgICAgIG1SZW5kZXJlciAgICAgICAg
ICAgICAgICA9IGNvbnRleHQxMS0+Z2V0UmVuZGVyZXIoKTsKKworICAgICAgICBtU291cmNlQnVm
ZmVyID0gbmV3IHJ4OjpCdWZmZXIxMShtUmVuZGVyZXIpOworICAgICAgICBHTGZsb2F0IHRlc3RE
YXRhW10gPSB7IDEuMGYsIDIuMGYsIDMuMGYsIDQuMGYsIDUuMGYsIDYuMGYgfTsKKyAgICAgICAg
Z2w6OkVycm9yIGVycm9yID0KKyAgICAgICAgICAgIG1Tb3VyY2VCdWZmZXItPnNldERhdGEoR0xf
QVJSQVlfQlVGRkVSLCB0ZXN0RGF0YSwgc2l6ZW9mKHRlc3REYXRhKSwgR0xfU1RBVElDX0RSQVcp
OworICAgICAgICBBU1NFUlRfRkFMU0UoZXJyb3IuaXNFcnJvcigpKTsKKworICAgICAgICBtVHJh
bnNsYXRlZEF0dHJpYnV0ZS5iYXNlT2Zmc2V0ICAgICAgICAgICAgPSAwOworICAgICAgICBtVHJh
bnNsYXRlZEF0dHJpYnV0ZS51c2VzRmlyc3RWZXJ0ZXhPZmZzZXQgPSBmYWxzZTsKKyAgICAgICAg
bVRyYW5zbGF0ZWRBdHRyaWJ1dGUuc3RyaWRlID0gc2l6ZW9mKEdMZmxvYXQpOworCisgICAgICAg
IEdMdWJ5dGUgaW5kaWNlc1tdID0gezAsIDAsIDMsIDQsIDIsIDEsIDF9OworCisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgQXJyYXlTaXplKGluZGljZXMpOyBpKyspCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1FeHBlY3RlZEV4cGFuZGVkRGF0YS5wdXNoX2JhY2sodGVzdERhdGFbaW5k
aWNlc1tpXV0pOworICAgICAgICAgICAgbXVieXRlSW5kaWNlcy5wdXNoX2JhY2soaW5kaWNlc1tp
XSk7CisgICAgICAgICAgICBtdWludEluZGljZXMucHVzaF9iYWNrKGluZGljZXNbaV0pOworICAg
ICAgICAgICAgbXVzaG9ydEluZGljZXMucHVzaF9iYWNrKGluZGljZXNbaV0pOworICAgICAgICB9
CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBT
YWZlRGVsZXRlKG1Tb3VyY2VCdWZmZXIpOworICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7
CisgICAgfQorCisgICAgdm9pZCBjcmVhdGVNYXBwYWJsZUNvbXBhcmVCdWZmZXJGcm9tRW11bGF0
ZWRCdWZmZXIoSUQzRDExQnVmZmVyICpzb3VyY2VCdWZmZXIsIEdMdWludCBzaXplLCBJRDNEMTFC
dWZmZXIgKiptYXBwYWJsZUJ1ZmZlcikKKyAgICB7CisgICAgICAgICptYXBwYWJsZUJ1ZmZlciA9
IG51bGxwdHI7CisKKyAgICAgICAgRDNEMTFfQlVGRkVSX0RFU0MgYnVmZmVyRGVzYzsKKyAgICAg
ICAgYnVmZmVyRGVzYy5CeXRlV2lkdGggPSBzaXplOworICAgICAgICBidWZmZXJEZXNjLk1pc2NG
bGFncyA9IDA7CisgICAgICAgIGJ1ZmZlckRlc2MuU3RydWN0dXJlQnl0ZVN0cmlkZSA9IDA7Cisg
ICAgICAgIGJ1ZmZlckRlc2MuVXNhZ2UgPSBEM0QxMV9VU0FHRV9TVEFHSU5HOworICAgICAgICBi
dWZmZXJEZXNjLkJpbmRGbGFncyA9IDA7CisgICAgICAgIGJ1ZmZlckRlc2MuQ1BVQWNjZXNzRmxh
Z3MgPSBEM0QxMV9DUFVfQUNDRVNTX1JFQUQgfCBEM0QxMV9DUFVfQUNDRVNTX1dSSVRFOworCisg
ICAgICAgIEhSRVNVTFQgaHIgPSBtUmVuZGVyZXItPmdldERldmljZSgpLT5DcmVhdGVCdWZmZXIo
JmJ1ZmZlckRlc2MsIG51bGxwdHIsIG1hcHBhYmxlQnVmZmVyKTsKKyAgICAgICAgQVNTRVJUX1RS
VUUoU1VDQ0VFREVEKGhyKSk7CisKKyAgICAgICAgRDNEMTFfQk9YIHNyY0JveDsKKyAgICAgICAg
c3JjQm94LmxlZnQgPSAwOworICAgICAgICBzcmNCb3gucmlnaHQgPSBzaXplOworICAgICAgICBz
cmNCb3gudG9wID0gMDsKKyAgICAgICAgc3JjQm94LmJvdHRvbSA9IDE7CisgICAgICAgIHNyY0Jv
eC5mcm9udCA9IDA7CisgICAgICAgIHNyY0JveC5iYWNrID0gMTsKKworICAgICAgICBtUmVuZGVy
ZXItPmdldERldmljZUNvbnRleHQoKS0+Q29weVN1YnJlc291cmNlUmVnaW9uKCptYXBwYWJsZUJ1
ZmZlciwgMCwgMCwgMCwgMCwgc291cmNlQnVmZmVyLCAwLCAmc3JjQm94KTsKKyAgICB9CisKKyAg
ICB2b2lkIGNvbXBhcmVDb250ZW50cyhJRDNEMTFCdWZmZXIgKmFjdHVhbCkKKyAgICB7CisgICAg
ICAgIElEM0QxMUJ1ZmZlciAqY29tcGFyZUJ1ZmZlciA9IG51bGxwdHI7CisgICAgICAgIGNyZWF0
ZU1hcHBhYmxlQ29tcGFyZUJ1ZmZlckZyb21FbXVsYXRlZEJ1ZmZlcigKKyAgICAgICAgICAgIGFj
dHVhbCwgc2l6ZW9mKEdMZmxvYXQpICogc3RhdGljX2Nhc3Q8R0x1aW50PihtRXhwZWN0ZWRFeHBh
bmRlZERhdGEuc2l6ZSgpKSwKKyAgICAgICAgICAgICZjb21wYXJlQnVmZmVyKTsKKworICAgICAg
ICBEM0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwcGVkUmVzb3VyY2U7CisgICAgICAgIEhSRVNV
TFQgaHIgPSBtUmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKS0+TWFwKGNvbXBhcmVCdWZmZXIs
IDAsIEQzRDExX01BUF9SRUFELCAwLCAmbWFwcGVkUmVzb3VyY2UpOworICAgICAgICBBU1NFUlRf
VFJVRShTVUNDRUVERUQoaHIpKTsKKworICAgICAgICBHTGZsb2F0KiBjb21wYXJlRGF0YSA9IHN0
YXRpY19jYXN0PEdMZmxvYXQqPihtYXBwZWRSZXNvdXJjZS5wRGF0YSk7CisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbUV4cGVjdGVkRXhwYW5kZWREYXRhLnNpemUoKTsgaSsrKQorICAg
ICAgICB7CisgICAgICAgICAgICBFWFBFQ1RfRVEobUV4cGVjdGVkRXhwYW5kZWREYXRhW2ldLCBj
b21wYXJlRGF0YVtpXSk7CisgICAgICAgIH0KKworICAgICAgICBtUmVuZGVyZXItPmdldERldmlj
ZUNvbnRleHQoKS0+VW5tYXAoY29tcGFyZUJ1ZmZlciwgMCk7CisgICAgICAgIFNhZmVSZWxlYXNl
KGNvbXBhcmVCdWZmZXIpOworICAgIH0KKworICAgIHZvaWQgZW11bGF0ZUFuZENvbXBhcmUocng6
OlNvdXJjZUluZGV4RGF0YSAqc3JjRGF0YSkKKyAgICB7CisgICAgICAgIGF1dG8gYnVmZmVyT3JF
cnJvciA9CisgICAgICAgICAgICBtU291cmNlQnVmZmVyLT5nZXRFbXVsYXRlZEluZGV4ZWRCdWZm
ZXIoc3JjRGF0YSwgbVRyYW5zbGF0ZWRBdHRyaWJ1dGUsIDApOworICAgICAgICBBU1NFUlRfRkFM
U0UoYnVmZmVyT3JFcnJvci5pc0Vycm9yKCkpOworICAgICAgICBJRDNEMTFCdWZmZXIgKmVtdWxh
dGVkQnVmZmVyID0gYnVmZmVyT3JFcnJvci5nZXRSZXN1bHQoKTsKKyAgICAgICAgQVNTRVJUX1RS
VUUoZW11bGF0ZWRCdWZmZXIgIT0gbnVsbHB0cik7CisgICAgICAgIGNvbXBhcmVDb250ZW50cyhl
bXVsYXRlZEJ1ZmZlcik7CisgICAgfQorCisgIHByb3RlY3RlZDoKKyAgICByeDo6QnVmZmVyMTEg
Km1Tb3VyY2VCdWZmZXI7CisgICAgcng6OlJlbmRlcmVyMTEgKm1SZW5kZXJlcjsKKyAgICByeDo6
VHJhbnNsYXRlZEF0dHJpYnV0ZSBtVHJhbnNsYXRlZEF0dHJpYnV0ZTsKKyAgICBzdGQ6OnZlY3Rv
cjxHTGZsb2F0PiBtRXhwZWN0ZWRFeHBhbmRlZERhdGE7CisgICAgc3RkOjp2ZWN0b3I8R0x1Ynl0
ZT4gbXVieXRlSW5kaWNlczsKKyAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IG11aW50SW5kaWNlczsK
KyAgICBzdGQ6OnZlY3RvcjxHTHVzaG9ydD4gbXVzaG9ydEluZGljZXM7Cit9OworCisvLyBUaGlz
IHRlc3RzIHRoYXQgYSBHTF9VTlNJR05FRF9CWVRFIGluZGljZXMgbGlzdCBjYW4gYmUgc3VjY2Vz
c2Z1bGx5IGV4cGFuZGVkCisvLyBpbnRvIGEgdmFsaWQgZW11bGF0ZWQgaW5kZXhlZCBidWZmZXIu
CitURVNUX1AoRDNEMTFFbXVsYXRlZEluZGV4ZWRCdWZmZXJUZXN0LCBUZXN0TmF0aXZlVG9FeHBh
bmRlZFVzaW5nR0x1Ynl0ZUluZGljZXMpCit7CisgICAgcng6OlNvdXJjZUluZGV4RGF0YSBzcmNE
YXRhID0ge251bGxwdHIsIG11Ynl0ZUluZGljZXMuZGF0YSgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG11Ynl0ZUluZGljZXMu
c2l6ZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURf
QllURSwgZmFsc2V9OworICAgIGVtdWxhdGVBbmRDb21wYXJlKCZzcmNEYXRhKTsKK30KKworLy8g
VGhpcyB0ZXN0cyB0aGF0IGEgR0xfVU5TSUdORURfU0hPUlQgaW5kaWNlcyBsaXN0IGNhbiBiZSBz
dWNjZXNzZnVsbHkgZXhwYW5kZWQKKy8vIGludG8gYSB2YWxpZCBlbXVsYXRlZCBpbmRleGVkIGJ1
ZmZlci4KK1RFU1RfUChEM0QxMUVtdWxhdGVkSW5kZXhlZEJ1ZmZlclRlc3QsIFRlc3ROYXRpdmVU
b0V4cGFuZGVkVXNpbmdHTHVzaG9ydEluZGljZXMpCit7CisgICAgcng6OlNvdXJjZUluZGV4RGF0
YSBzcmNEYXRhID0ge251bGxwdHIsIG11c2hvcnRJbmRpY2VzLmRhdGEoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihtdXNob3J0
SW5kaWNlcy5zaXplKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9V
TlNJR05FRF9TSE9SVCwgZmFsc2V9OworICAgIGVtdWxhdGVBbmRDb21wYXJlKCZzcmNEYXRhKTsK
K30KKworLy8gVGhpcyB0ZXN0cyB0aGF0IGEgR0xfVU5TSUdORURfSU5UIGluZGljZXMgbGlzdCBj
YW4gYmUgc3VjY2Vzc2Z1bGx5IGV4cGFuZGVkCisvLyBpbnRvIGEgdmFsaWQgZW11bGF0ZWQgaW5k
ZXhlZCBidWZmZXIuCitURVNUX1AoRDNEMTFFbXVsYXRlZEluZGV4ZWRCdWZmZXJUZXN0LCBUZXN0
TmF0aXZlVG9FeHBhbmRlZFVzaW5nR0x1aW50SW5kaWNlcykKK3sKKyAgICByeDo6U291cmNlSW5k
ZXhEYXRhIHNyY0RhdGEgPSB7bnVsbHB0ciwgbXVpbnRJbmRpY2VzLmRhdGEoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihtdWlu
dEluZGljZXMuc2l6ZSgpKSwgR0xfVU5TSUdORURfSU5ULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmYWxzZX07CisgICAgZW11bGF0ZUFuZENvbXBhcmUoJnNyY0RhdGEpOwor
fQorCisvLyBUaGlzIHRlc3RzIHZlcmlmaWVzIHRoYXQgYSBCdWZmZXIxMSBjb250ZW50cyByZW1h
aW4gdW5jaGFuZ2VkIGFmdGVyIGNhbGxpbmcgZ2V0RW11bGF0ZWRJbmRleGVkQnVmZmVyCitURVNU
X1AoRDNEMTFFbXVsYXRlZEluZGV4ZWRCdWZmZXJUZXN0LCBUZXN0U291cmNlQnVmZmVyUmVtYWlu
c1VudG91Y2hlZEFmdGVyRXhwYW5kT3BlcmF0aW9uKQoreworICAgIC8vIENvcHkgdGhlIG9yaWdp
bmFsIHNvdXJjZSBidWZmZXIgYmVmb3JlIGFueSBleHBhbmQgY2FsbHMgaGF2ZSBiZWVuIG1hZGUK
KyAgICByeDo6QnVmZmVyMTEgKmNsZWFuU291cmNlQnVmZmVyID0gbmV3IHJ4OjpCdWZmZXIxMSht
UmVuZGVyZXIpOworICAgIGNsZWFuU291cmNlQnVmZmVyLT5jb3B5U3ViRGF0YShtU291cmNlQnVm
ZmVyLCAwLCAwLCBtU291cmNlQnVmZmVyLT5nZXRTaXplKCkpOworCisgICAgLy8gRG8gYSBiYXNp
YyBleGFuZGVkIGFuZCBjb21wYXJlIHRlc3QuCisgICAgcng6OlNvdXJjZUluZGV4RGF0YSBzcmNE
YXRhID0ge251bGxwdHIsIG11aW50SW5kaWNlcy5kYXRhKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4obXVpbnRJbmRpY2VzLnNp
emUoKSksIEdMX1VOU0lHTkVEX0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmFsc2V9OworICAgIGVtdWxhdGVBbmRDb21wYXJlKCZzcmNEYXRhKTsKKworICAgIGNvbnN0
IHVpbnQ4X3QgKnNvdXJjZUJ1ZmZlck1lbSA9IG51bGxwdHI7CisgICAgY29uc3QgdWludDhfdCAq
Y2xlYW5CdWZmZXJNZW0gPSBudWxscHRyOworCisgICAgZ2w6OkVycm9yIGVycm9yID0gbVNvdXJj
ZUJ1ZmZlci0+Z2V0RGF0YSgmc291cmNlQnVmZmVyTWVtKTsKKyAgICBBU1NFUlRfRkFMU0UoZXJy
b3IuaXNFcnJvcigpKTsKKworICAgIGVycm9yID0gY2xlYW5Tb3VyY2VCdWZmZXItPmdldERhdGEo
JmNsZWFuQnVmZmVyTWVtKTsKKyAgICBBU1NFUlRfRkFMU0UoZXJyb3IuaXNFcnJvcigpKTsKKwor
ICAgIGludCByZXN1bHQgPSBtZW1jbXAoc291cmNlQnVmZmVyTWVtLCBjbGVhbkJ1ZmZlck1lbSwg
Y2xlYW5Tb3VyY2VCdWZmZXItPmdldFNpemUoKSk7CisgICAgQVNTRVJUX0VRKHJlc3VsdCwgMCk7
CisKKyAgICBTYWZlRGVsZXRlKGNsZWFuU291cmNlQnVmZmVyKTsKK30KKworQU5HTEVfSU5TVEFO
VElBVEVfVEVTVChEM0QxMUVtdWxhdGVkSW5kZXhlZEJ1ZmZlclRlc3QsCisgICAgICAgICAgICAg
ICAgICAgICAgIEVTMl9EM0QxMSgpKTsKKworfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRDNEMTFGb3JtYXRU
YWJsZXNUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZ2xfdGVzdHMvRDNEMTFGb3JtYXRUYWJsZXNUZXN0LmNwcAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRDNEMTFGb3JtYXRU
YWJsZXNUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1MyBAQAorLy8KKy8vIENv
cHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
Ky8vIEQzRDExRm9ybWF0VGFibGVzVGVzdDoKKy8vICAgVGVzdHMgdG8gdmFsaWRhdGUgb3VyIEQz
RDExIHN1cHBvcnQgdGFibGVzIG1hdGNoIGhhcmR3YXJlIHN1cHBvcnQuCisvLworCisjaW5jbHVk
ZSAibGliQU5HTEUvYW5nbGV0eXBlcy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHQuaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9Db250ZXh0MTEuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvZHhnaV9zdXBwb3J0X3RhYmxlLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL2Zvcm1hdHV0aWxzMTEuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvUmVuZGVyZXIxMS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZS5oIgorI2luY2x1ZGUgInRlc3RfdXRpbHMv
YW5nbGVfdGVzdF9pbnN0YW50aWF0ZS5oIgorI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0
LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNlCit7CisKK2NsYXNzIEQz
RDExRm9ybWF0VGFibGVzVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKworfTsKKworLy8gVGhp
cyB0ZXN0IGVudW1lcmF0ZXMgYWxsIEdMIGZvcm1hdHMgLSBmb3IgZWFjaCwgaXQgcXVlcmllcyB0
aGUgRDNEIHN1cHBvcnQgZm9yCisvLyB1c2luZyBpdCBhcyBhIHRleHR1cmUsIGEgcmVuZGVyIHRh
cmdldCwgYW5kIHNhbXBsaW5nIGZyb20gaXQgaW4gdGhlIHNoYWRlci4gSXQKKy8vIGNoZWNrcyB0
aGlzIGFnYWluc3Qgb3VyIHNwZWVkLW9wdGltaXplZCBiYWtlZCB0YWJsZXMsIGFuZCB2YWxpZGF0
ZXMgdGhleSB3b3VsZAorLy8gZ2l2ZSB0aGUgc2FtZSByZXN1bHQuCisvLyBUT0RPKGptYWRpbGwp
OiBGaW5kIG91dCB3aHkgaW4gOV8zLCBzb21lIGZvcm1hdCBxdWVyaWVzIHJldHVybiBhbiBlcnJv
ci4KKy8vIFRoZSBlcnJvciBzZWVtcyB0byBhcHBlYXIgZm9yIGZvcm1hdHMgdGhhdCBhcmUgbm90
IHN1cHBvcnRlZCBvbiA5XzMuCitURVNUX1AoRDNEMTFGb3JtYXRUYWJsZXNUZXN0LCBUZXN0Rm9y
bWF0U3VwcG9ydCkKK3sKKyAgICBBU1NFUlRfRVEoRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNE
MTFfQU5HTEUsIEdldFBhcmFtKCkuZ2V0UmVuZGVyZXIoKSk7CisKKyAgICAvLyBIYWNrIHRoZSBh
bmdsZSEKKyAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Z2w6OkNv
bnRleHQgKj4oZ2V0RUdMV2luZG93KCktPmdldENvbnRleHQoKSk7CisgICAgcng6OkNvbnRleHQx
MSAqY29udGV4dDExID0gcng6OkdldEltcGxBczxyeDo6Q29udGV4dDExPihjb250ZXh0KTsKKyAg
ICByeDo6UmVuZGVyZXIxMSAqcmVuZGVyZXIgPSBjb250ZXh0MTEtPmdldFJlbmRlcmVyKCk7Cisg
ICAgY29uc3QgYXV0byAmdGV4dHVyZUNhcHMgID0gcmVuZGVyZXItPmdldE5hdGl2ZVRleHR1cmVD
YXBzKCk7CisKKyAgICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IHJlbmRlcmVyLT5nZXREZXZpY2Uo
KTsKKworICAgIGNvbnN0IGdsOjpGb3JtYXRTZXQgJmFsbEZvcm1hdHMgPSBnbDo6R2V0QWxsU2l6
ZWRJbnRlcm5hbEZvcm1hdHMoKTsKKyAgICBmb3IgKEdMZW51bSBpbnRlcm5hbEZvcm1hdCA6IGFs
bEZvcm1hdHMpCisgICAgeworICAgICAgICBjb25zdCByeDo6ZDNkMTE6OkZvcm1hdCAmZm9ybWF0
SW5mbyA9CisgICAgICAgICAgICByeDo6ZDNkMTE6OkZvcm1hdDo6R2V0KGludGVybmFsRm9ybWF0
LCByZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKSk7CisgICAgICAgIGNvbnN0IGF1
dG8gJnRleHR1cmVJbmZvID0gdGV4dHVyZUNhcHMuZ2V0KGludGVybmFsRm9ybWF0KTsKKworICAg
ICAgICAvLyBCaXRzIGZvciB0ZXh0dXJpbmcKKyAgICAgICAgY29uc3QgZ2w6OkludGVybmFsRm9y
bWF0ICZpbnRlcm5hbEZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGludGVy
bmFsRm9ybWF0KTsKKworICAgICAgICBVSU5UIHRleFN1cHBvcnRNYXNrID0gRDNEMTFfRk9STUFU
X1NVUFBPUlRfVEVYVFVSRTJEOworICAgICAgICBpZiAoaW50ZXJuYWxGb3JtYXRJbmZvLmRlcHRo
Qml0cyA9PSAwICYmIGludGVybmFsRm9ybWF0SW5mby5zdGVuY2lsQml0cyA9PSAwKQorICAgICAg
ICB7CisgICAgICAgICAgICB0ZXhTdXBwb3J0TWFzayB8PSBEM0QxMV9GT1JNQVRfU1VQUE9SVF9U
RVhUVVJFQ1VCRTsKKyAgICAgICAgICAgIGlmIChHZXRQYXJhbSgpLm1ham9yVmVyc2lvbiA+IDIp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGV4U3VwcG9ydE1hc2sgfD0gRDNEMTFf
Rk9STUFUX1NVUFBPUlRfVEVYVFVSRTNEOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgVUlOVCB0ZXhTdXBwb3J0ICA9IDA7CisgICAgICAgIGJvb2wgdGV4U3VjY2VzcyAgPSBT
VUNDRUVERUQoZGV2aWNlLT5DaGVja0Zvcm1hdFN1cHBvcnQoZm9ybWF0SW5mby50ZXhGb3JtYXQs
ICZ0ZXhTdXBwb3J0KSk7CisgICAgICAgIGJvb2wgdGV4dHVyZWFibGUgPSB0ZXhTdWNjZXNzICYm
ICgodGV4U3VwcG9ydCAmIHRleFN1cHBvcnRNYXNrKSA9PSB0ZXhTdXBwb3J0TWFzayk7CisgICAg
ICAgIEVYUEVDVF9FUSh0ZXh0dXJlYWJsZSwgdGV4dHVyZUluZm8udGV4dHVyYWJsZSk7CisKKyAg
ICAgICAgLy8gQml0cyBmb3IgbWlwbWFwIGF1dG8tZ2VuLgorICAgICAgICBib29sIGV4cGVjdGVk
TWlwR2VuID0gdGV4U3VjY2VzcyAmJiAoKHRleFN1cHBvcnQgJiBEM0QxMV9GT1JNQVRfU1VQUE9S
VF9NSVBfQVVUT0dFTikgIT0gMCk7CisgICAgICAgIGF1dG8gZmVhdHVyZUxldmVsICAgPSByZW5k
ZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKS5mZWF0dXJlTGV2ZWw7CisgICAgICAgIGNv
bnN0IGF1dG8gJmR4Z2lTdXBwb3J0ID0gcng6OmQzZDExOjpHZXREWEdJU3VwcG9ydChmb3JtYXRJ
bmZvLnRleEZvcm1hdCwgZmVhdHVyZUxldmVsKTsKKyAgICAgICAgYm9vbCBhY3R1YWxNaXBHZW4g
PQorICAgICAgICAgICAgKChkeGdpU3VwcG9ydC5hbHdheXNTdXBwb3J0ZWRGbGFncyAmIEQzRDEx
X0ZPUk1BVF9TVVBQT1JUX01JUF9BVVRPR0VOKSAhPSAwKTsKKyAgICAgICAgRVhQRUNUX0VRKDB1
LCBkeGdpU3VwcG9ydC5vcHRpb25hbGx5U3VwcG9ydGVkRmxhZ3MgJiBEM0QxMV9GT1JNQVRfU1VQ
UE9SVF9NSVBfQVVUT0dFTik7CisgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZE1pcEdlbiwgYWN0
dWFsTWlwR2VuKTsKKworICAgICAgICAvLyBCaXRzIGZvciBmaWx0ZXJpbmcKKyAgICAgICAgVUlO
VCBmaWx0ZXJTdXBwb3J0ID0gMDsKKyAgICAgICAgYm9vbCBmaWx0ZXJTdWNjZXNzID0KKyAgICAg
ICAgICAgIFNVQ0NFRURFRChkZXZpY2UtPkNoZWNrRm9ybWF0U3VwcG9ydChmb3JtYXRJbmZvLnNy
dkZvcm1hdCwgJmZpbHRlclN1cHBvcnQpKTsKKyAgICAgICAgYm9vbCBmaWx0ZXJhYmxlID0gZmls
dGVyU3VjY2VzcyAmJiAoKGZpbHRlclN1cHBvcnQgJiBEM0QxMV9GT1JNQVRfU1VQUE9SVF9TSEFE
RVJfU0FNUExFKSAhPSAwKTsKKyAgICAgICAgRVhQRUNUX0VRKGZpbHRlcmFibGUsIHRleHR1cmVJ
bmZvLmZpbHRlcmFibGUpOworCisgICAgICAgIC8vIEJpdHMgZm9yIHJlbmRlcmFibGUKKyAgICAg
ICAgYm9vbCByZW5kZXJhYmxlID0gZmFsc2U7CisgICAgICAgIFVJTlQgcmVuZGVyU3VwcG9ydCAg
ICAgICA9IDB1OworICAgICAgICBEWEdJX0ZPUk1BVCByZW5kZXJGb3JtYXQgPSBEWEdJX0ZPUk1B
VF9VTktOT1dOOworICAgICAgICBpZiAoaW50ZXJuYWxGb3JtYXRJbmZvLmRlcHRoQml0cyA+IDAg
fHwgaW50ZXJuYWxGb3JtYXRJbmZvLnN0ZW5jaWxCaXRzID4gMCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmVuZGVyRm9ybWF0ID0gZm9ybWF0SW5mby5kc3ZGb3JtYXQ7CisgICAgICAgICAgICBi
b29sIGRlcHRoU3VjY2VzcyA9CisgICAgICAgICAgICAgICAgU1VDQ0VFREVEKGRldmljZS0+Q2hl
Y2tGb3JtYXRTdXBwb3J0KGZvcm1hdEluZm8uZHN2Rm9ybWF0LCAmcmVuZGVyU3VwcG9ydCkpOwor
ICAgICAgICAgICAgcmVuZGVyYWJsZSA9CisgICAgICAgICAgICAgICAgZGVwdGhTdWNjZXNzICYm
ICgocmVuZGVyU3VwcG9ydCAmIEQzRDExX0ZPUk1BVF9TVVBQT1JUX0RFUFRIX1NURU5DSUwpICE9
IDApOworICAgICAgICAgICAgaWYgKHJlbmRlcmFibGUpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgRVhQRUNUX05FKERYR0lfRk9STUFUX1VOS05PV04sIGZvcm1hdEluZm8uZHN2Rm9y
bWF0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJlbmRlckZvcm1hdCA9IGZvcm1hdEluZm8ucnR2Rm9ybWF0OworICAgICAg
ICAgICAgYm9vbCBydFN1Y2Nlc3MgPQorICAgICAgICAgICAgICAgIFNVQ0NFRURFRChkZXZpY2Ut
PkNoZWNrRm9ybWF0U3VwcG9ydChmb3JtYXRJbmZvLnJ0dkZvcm1hdCwgJnJlbmRlclN1cHBvcnQp
KTsKKyAgICAgICAgICAgIHJlbmRlcmFibGUgPSBydFN1Y2Nlc3MgJiYgKChyZW5kZXJTdXBwb3J0
ICYgRDNEMTFfRk9STUFUX1NVUFBPUlRfUkVOREVSX1RBUkdFVCkgIT0gMCk7CisgICAgICAgICAg
ICBpZiAocmVuZGVyYWJsZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBFWFBFQ1Rf
TkUoRFhHSV9GT1JNQVRfVU5LTk9XTiwgZm9ybWF0SW5mby5ydHZGb3JtYXQpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIEVYUEVDVF9FUShyZW5kZXJhYmxlLCB0ZXh0dXJlSW5m
by5yZW5kZXJhYmxlKTsKKyAgICAgICAgaWYgKCF0ZXh0dXJlSW5mby5zYW1wbGVDb3VudHMuZW1w
dHkoKSkKKyAgICAgICAgeworICAgICAgICAgICAgRVhQRUNUX1RSVUUocmVuZGVyYWJsZSk7Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBNdWx0aXNhbXBsZSBjb3VudHMKKyAgICAgICAgaWYgKHJl
bmRlcmFibGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgocmVuZGVyU3VwcG9ydCAmIEQz
RDExX0ZPUk1BVF9TVVBQT1JUX01VTFRJU0FNUExFX1JFTkRFUlRBUkdFVCkgIT0gMCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRSghdGV4dHVyZUluZm8uc2FtcGxl
Q291bnRzLmVtcHR5KCkpOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IHNhbXBs
ZUNvdW50ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgIHNhbXBsZUNvdW50IDw9IEQzRDExX01B
WF9NVUxUSVNBTVBMRV9TQU1QTEVfQ09VTlQ7IHNhbXBsZUNvdW50ICo9IDIpCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBVSU5UIHF1YWxpdHlDb3VudCAgPSAwOworICAg
ICAgICAgICAgICAgICAgICBib29sIHNhbXBsZVN1Y2Nlc3MgPSBTVUNDRUVERUQoZGV2aWNlLT5D
aGVja011bHRpc2FtcGxlUXVhbGl0eUxldmVscygKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
bmRlckZvcm1hdCwgc2FtcGxlQ291bnQsICZxdWFsaXR5Q291bnQpKTsKKyAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGV4cGVjdGVkQ291bnQgPSAoIXNhbXBsZVN1Y2Nlc3MgfHwgcXVhbGl0eUNv
dW50ID09IDApID8gMCA6IDE7CisgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9FUShleHBlY3Rl
ZENvdW50LCB0ZXh0dXJlSW5mby5zYW1wbGVDb3VudHMuY291bnQoc2FtcGxlQ291bnQpKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUodGV4dHVyZUluZm8uc2FtcGxlQ291
bnRzLmVtcHR5KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitBTkdM
RV9JTlNUQU5USUFURV9URVNUKEQzRDExRm9ybWF0VGFibGVzVGVzdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgRVMyX0QzRDExX0ZMOV8zKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9E
M0QxMV9GTDEwXzAoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMMTBfMSgp
LAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkwxMV8wKCkpOworCit9IC8vIGFu
b255bW91cyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9nbF90ZXN0cy9EM0QxMUlucHV0TGF5b3V0Q2FjaGVUZXN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRDNEMTFJbnB1dExheW91
dENhY2hlVGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2dsX3Rlc3RzL0QzRDExSW5wdXRMYXlvdXRDYWNoZVRlc3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTI2IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gRDNEMTFJbnB1dExheW91dENh
Y2hlVGVzdDoKKy8vICAgU3RyZXNzIHRvIHRvIHJlcHJvZHVjZSBhIGJ1ZyB3aGVyZSB3ZSB3ZXJl
bid0IGZsdWluZyB0aGUgY2FzZSBjb3JyZWN0bHkuCisvLworCisjaW5jbHVkZSA8c3N0cmVhbT4K
KworI2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHQuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvQ29udGV4dDExLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL1JlbmRlcmVyMTEuaCIKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5o
IgorI2luY2x1ZGUgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0ZS5oIgorCit1c2lu
ZyBuYW1lc3BhY2UgYW5nbGU7CisKK25hbWVzcGFjZQoreworCitjbGFzcyBEM0QxMUlucHV0TGF5
b3V0Q2FjaGVUZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgRDNE
MTFJbnB1dExheW91dENhY2hlVGVzdCgpCisgICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0aCg2
NCk7CisgICAgICAgIHNldFdpbmRvd0hlaWdodCg2NCk7CisgICAgICAgIHNldENvbmZpZ1JlZEJp
dHMoOCk7CisgICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKKyAgICB9CisKKyAgICBHTHVp
bnQgbWFrZVByb2dyYW1XaXRoQXR0cmliQ291bnQodW5zaWduZWQgaW50IGF0dHJpYkNvdW50KQor
ICAgIHsKKyAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gc3Ryc3RyOworCisgICAgICAgIHN0cnN0
ciA8PCAiYXR0cmlidXRlIHZlYzIgcG9zaXRpb247IiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaW50IGF0dHJpYkluZGV4ID0gMDsgYXR0cmliSW5kZXggPCBhdHRyaWJDb3Vu
dDsgKythdHRyaWJJbmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgc3Ryc3RyIDw8ICJhdHRy
aWJ1dGUgZmxvYXQgYSIgPDwgYXR0cmliSW5kZXggPDwgIjsiIDw8IHN0ZDo6ZW5kbDsKKyAgICAg
ICAgfQorICAgICAgICBzdHJzdHIgPDwgInZhcnlpbmcgZmxvYXQgdjsiIDw8IHN0ZDo6ZW5kbAor
ICAgICAgICAgICAgICAgPDwgInZvaWQgbWFpbigpIHsiIDw8IHN0ZDo6ZW5kbAorICAgICAgICAg
ICAgICAgPDwgIiAgICB2ID0gMC4wOyIgPDwgc3RkOjplbmRsOworICAgICAgICBmb3IgKHVuc2ln
bmVkIGludCBhdHRyaWJJbmRleCA9IDA7IGF0dHJpYkluZGV4IDwgYXR0cmliQ291bnQ7ICsrYXR0
cmliSW5kZXgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0cnN0ciA8PCAiICAgIHYgKz0gYSIg
PDwgYXR0cmliSW5kZXggPDwgIjsiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgfQorICAgICAgICBz
dHJzdHIgPDwgIiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAuMCwgMS4wKTsiIDw8
IHN0ZDo6ZW5kbAorICAgICAgICAgICAgICAgPDwgIn0iIDw8IHN0ZDo6ZW5kbDsKKworICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyBiYXNpY0ZyYWdtZW50U2hhZGVyID0KKyAgICAgICAgICAgICJ2
YXJ5aW5nIGhpZ2hwIGZsb2F0IHY7XG4iCisgICAgICAgICAgICAidm9pZCBtYWluKCkgeyIKKyAg
ICAgICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHYgLyAyNTUuMCwgMC4wLCAwLjAsIDEu
MCk7XG4iCisgICAgICAgICAgICAifVxuIjsKKworICAgICAgICByZXR1cm4gQ29tcGlsZVByb2dy
YW0oc3Ryc3RyLnN0cigpLCBiYXNpY0ZyYWdtZW50U2hhZGVyKTsKKyAgICB9Cit9OworCisvLyBT
dHJlc3MgdGhlIGNhY2hlIGJ5IHNldHRpbmcgYSBzbWFsbCBjYWNoZSBzaXplIGFuZCBkcmF3aW5n
IHdpdGggYSBidW5jaCBvZiBzaGFkZXJzCisvLyB3aXRoIGRpZmZlcmVudCBpbnB1dCBzaWduYXR1
cmVzLgorVEVTVF9QKEQzRDExSW5wdXRMYXlvdXRDYWNoZVRlc3QsIFN0cmVzc1Rlc3QpCit7Cisg
ICAgLy8gSGFjayB0aGUgQU5HTEUhCisgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSByZWludGVy
cHJldF9jYXN0PGdsOjpDb250ZXh0ICo+KGdldEVHTFdpbmRvdygpLT5nZXRDb250ZXh0KCkpOwor
ICAgIHJ4OjpDb250ZXh0MTEgKmNvbnRleHQxMSAgICAgICAgICAgICAgID0gcng6OkdldEltcGxB
czxyeDo6Q29udGV4dDExPihjb250ZXh0KTsKKyAgICByeDo6UmVuZGVyZXIxMSAqcmVuZGVyZXIx
MSAgICAgICAgICAgICA9IGNvbnRleHQxMS0+Z2V0UmVuZGVyZXIoKTsKKyAgICByeDo6SW5wdXRM
YXlvdXRDYWNoZSAqaW5wdXRMYXlvdXRDYWNoZSA9IHJlbmRlcmVyMTEtPmdldElucHV0TGF5b3V0
Q2FjaGUoKTsKKworICAgIC8vIENsYW1wIHRoZSBjYWNoZSBzaXplIHRvIHNvbWV0aGluZyB0aW55
CisgICAgaW5wdXRMYXlvdXRDYWNoZS0+c2V0Q2FjaGVTaXplKDQpOworCisgICAgR0xpbnQgbWF4
QXR0cmlicyA9IDA7CisgICAgY29udGV4dC0+Z2V0SW50ZWdlcnYoR0xfTUFYX1ZFUlRFWF9BVFRS
SUJTLCAmbWF4QXR0cmlicyk7CisKKyAgICAvLyBSZXNlcnZlIG9uZSBhdHRyaWIgZm9yIHBvc2l0
aW9uCisgICAgdW5zaWduZWQgaW50IG1heElucHV0cyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGlu
dD4obWF4QXR0cmlicykgLSAyOworCisgICAgc3RkOjp2ZWN0b3I8R0x1aW50PiBwcm9ncmFtczsK
KyAgICBmb3IgKHVuc2lnbmVkIGludCBhdHRyaWJDb3VudCA9IDA7IGF0dHJpYkNvdW50IDw9IG1h
eElucHV0czsgKythdHRyaWJDb3VudCkKKyAgICB7CisgICAgICAgIEdMdWludCBwcm9ncmFtID0g
bWFrZVByb2dyYW1XaXRoQXR0cmliQ291bnQoYXR0cmliQ291bnQpOworICAgICAgICBBU1NFUlRf
TkUoMHUsIHByb2dyYW0pOworICAgICAgICBwcm9ncmFtcy5wdXNoX2JhY2socHJvZ3JhbSk7Cisg
ICAgfQorCisgICAgLy8gSXRlcmF0aXZlbHkgZG8gYSBzaW1wbGUgZHJvcCBvcGVyYXRpb24sIHRy
eWluZyBldmVyeSBhdHRyaWJ1dGUgY291bnQgZnJvbSAwLi5NQVhfQVRUUklCUy4KKyAgICAvLyBU
aGlzIHNob3VsZCB0aHJhc2ggdGhlIGNhY2hlLgorICAgIGZvciAodW5zaWduZWQgaW50IGl0ZXJh
dGlvbkNvdW50ID0gMDsgaXRlcmF0aW9uQ291bnQgPCAxMDsgKytpdGVyYXRpb25Db3VudCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgICAgIGZvciAodW5zaWdu
ZWQgaW50IGF0dHJpYkNvdW50ID0gMDsgYXR0cmliQ291bnQgPD0gbWF4SW5wdXRzOyArK2F0dHJp
YkNvdW50KQorICAgICAgICB7CisgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSA9IHByb2dyYW1z
W2F0dHJpYkNvdW50XTsKKyAgICAgICAgICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKKworICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgYXR0cmliSW5kZXggPSAwOyBhdHRyaWJJbmRleCA8
IGF0dHJpYkNvdW50OyArK2F0dHJpYkluZGV4KQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGF0dHJpYk5hbWVTdHI7CisgICAgICAgICAgICAgICAgYXR0
cmliTmFtZVN0ciA8PCAiYSIgPDwgYXR0cmliSW5kZXg7CisgICAgICAgICAgICAgICAgc3RkOjpz
dHJpbmcgYXR0cmliTmFtZSA9IGF0dHJpYk5hbWVTdHIuc3RyKCk7CisKKyAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgYXR0cmliTmFt
ZS5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlRfTkUoLTEsIGxvY2F0aW9uKTsKKyAg
ICAgICAgICAgICAgICBnbFZlcnRleEF0dHJpYjFmKGxvY2F0aW9uLCAxLjBmKTsKKyAgICAgICAg
ICAgICAgICBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShsb2NhdGlvbik7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGRyYXdRdWFkKHByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwor
ICAgICAgICAgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIGF0dHJpYkNvdW50LCAwLCAwLCAyNTV1
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAoR0x1aW50IHByb2dyYW0gOiBwcm9ncmFt
cykKKyAgICB7CisgICAgICAgIGdsRGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICB9Cit9CisK
K0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoRDNEMTFJbnB1dExheW91dENhY2hlVGVzdCwgRVMyX0Qz
RDExKCkpOworCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRDNESW1hZ2VGb3JtYXRDb252ZXJzaW9uVGVz
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2ds
X3Rlc3RzL0QzREltYWdlRm9ybWF0Q29udmVyc2lvblRlc3QuY3BwCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9EM0RJbWFnZUZvcm1h
dENvbnZlcnNpb25UZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIwNyBAQAorLy8K
Ky8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKy8vIEQzREltYWdlRm9ybWF0Q29udmVyc2lvblRlc3Q6CisvLyAgIEJhc2ljIHRlc3Rz
IHRvIHZhbGlkYXRlIGNvZGUgcmVsYXRpbmcgdG8gRDNEIEltYWdlIGZvcm1hdCBjb252ZXJzaW9u
cy4KKworI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKKyNpbmNsdWRlICJpbWFn
ZV91dGlsL2ltYWdlZm9ybWF0cy5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKK25hbWVz
cGFjZQoreworCitjbGFzcyBEM0RJbWFnZUZvcm1hdENvbnZlcnNpb25UZXN0IDogcHVibGljIEFO
R0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgRDNESW1hZ2VGb3JtYXRDb252ZXJzaW9uVGVz
dCgpCisgICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOworICAgICAgICBzZXRXaW5k
b3dIZWlnaHQoMTI4KTsKKyAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKKyAgICAgICAgc2V0
Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKKyAgICAg
ICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAgIH0KKworICAgIHZvaWQgU2V0VXAoKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOworCisgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAgICAg
KAorICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworICAgICAgICAgICAgYXR0cmli
dXRlIHZlYzQgcG9zaXRpb247CisgICAgICAgICAgICB2YXJ5aW5nIHZlYzIgdGV4Y29vcmQ7CisK
KyAgICAgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Z2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLnh5LCAwLjAsIDEuMCk7CisgICAgICAgICAgICAg
ICAgdGV4Y29vcmQgPSAocG9zaXRpb24ueHkgKiAwLjUpICsgMC41OworICAgICAgICAgICAgfQor
ICAgICAgICApOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291
cmNlMkQgPSBTSEFERVJfU09VUkNFCisgICAgICAgICgKKyAgICAgICAgICAgIHByZWNpc2lvbiBo
aWdocCBmbG9hdDsKKyAgICAgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHRleDsKKyAgICAgICAg
ICAgIHZhcnlpbmcgdmVjMiB0ZXhjb29yZDsKKworICAgICAgICAgICAgdm9pZCBtYWluKCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQodGV4
LCB0ZXhjb29yZCk7CisgICAgICAgICAgICB9CisgICAgICAgICk7CisKKyAgICAgICAgbTJEUHJv
Z3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJT
b3VyY2UyRCk7CisgICAgICAgIG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRpb24gPSBnbEdldFVuaWZv
cm1Mb2NhdGlvbihtMkRQcm9ncmFtLCAidGV4Iik7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93
bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBnbERlbGV0ZVByb2dyYW0obTJEUHJvZ3JhbSk7
CisKKyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOworICAgIH0KKworICAgIC8vIFVzZXMg
Q29sb3JTdHJ1Y3RUeXBlOjp3cml0ZUNvbG9yIHRvIHBvcHVsYXRlIGluaXRpYWwgZGF0YSBmb3Ig
YSB0ZXh0dXJlLCBwYXNzIGl0IHRvIGdsVGV4SW1hZ2UyRCwgdGhlbiByZW5kZXIgd2l0aCBpdC4K
KyAgICAvLyBUaGUgcmVzdWx0aW5nIGNvbG9ycyBzaG91bGQgbWF0Y2ggdGhlIGNvbG9ycyBwYXNz
ZWQgaW50byA6OndyaXRlQ29sb3IuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbG9yU3RydWN0
VHlwZT4KKyAgICB2b2lkIHJ1blRlc3QoR0xlbnVtIHRleDJERm9ybWF0LCBHTGVudW0gdGV4MkRU
eXBlKQorICAgIHsKKyAgICAgICAgZ2w6OkNvbG9yRiBzcmNDb2xvckZbNF07CisgICAgICAgIENv
bG9yU3RydWN0VHlwZSBwaXhlbHNbNF07CisKKyAgICAgICAgR0x1aW50IHRleCA9IDA7CisgICAg
ICAgIEdMdWludCBmYm8gPSAwOworICAgICAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXgpOworICAg
ICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmZmJvKTsKKyAgICAgICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7CisKKyAgICAgICAgc3JjQ29sb3JGWzBdLnJlZCA9IDEuMGY7IHNyY0NvbG9yRlswXS5n
cmVlbiA9IDAuMGY7IHNyY0NvbG9yRlswXS5ibHVlID0gMC4wZjsgc3JjQ29sb3JGWzBdLmFscGhh
ID0gMS4wZjsgLy8gUmVkCisgICAgICAgIHNyY0NvbG9yRlsxXS5yZWQgPSAwLjBmOyBzcmNDb2xv
ckZbMV0uZ3JlZW4gPSAxLjBmOyBzcmNDb2xvckZbMV0uYmx1ZSA9IDAuMGY7IHNyY0NvbG9yRlsx
XS5hbHBoYSA9IDEuMGY7IC8vIEdyZWVuCisgICAgICAgIHNyY0NvbG9yRlsyXS5yZWQgPSAwLjBm
OyBzcmNDb2xvckZbMl0uZ3JlZW4gPSAwLjBmOyBzcmNDb2xvckZbMl0uYmx1ZSA9IDEuMGY7IHNy
Y0NvbG9yRlsyXS5hbHBoYSA9IDEuMGY7IC8vIEJsdWUKKyAgICAgICAgc3JjQ29sb3JGWzNdLnJl
ZCA9IDEuMGY7IHNyY0NvbG9yRlszXS5ncmVlbiA9IDEuMGY7IHNyY0NvbG9yRlszXS5ibHVlID0g
MC4wZjsgc3JjQ29sb3JGWzNdLmFscGhhID0gMS4wZjsgLy8gUmVkICsgR3JlZW4gKFllbGxvdykK
KworICAgICAgICAvLyBDb252ZXJ0IHRoZSBDb2xvckYgaW50byB0aGUgcGl4ZWxzIHRoYXQgd2ls
bCBiZSBmZWQgdG8gZ2xUZXhJbWFnZTJECisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAw
OyBpIDwgNDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBDb2xvclN0cnVjdFR5cGU6Ondy
aXRlQ29sb3IoJihwaXhlbHNbaV0pLCAmKHNyY0NvbG9yRltpXSkpOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gR2VuZXJhdGUgdGhlIHRleHR1cmUKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9U
RVhUVVJFXzJELCB0ZXgpOworICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwg
dGV4MkRGb3JtYXQsIDIsIDIsIDAsIHRleDJERm9ybWF0LCB0ZXgyRFR5cGUsIHBpeGVscyk7Cisg
ICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxU
RVIsIEdMX05FQVJFU1QpOworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICAgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7CisKKyAgICAgICAgLy8gRHJhdyBhIHF1YWQgdXNpbmcgdGhlIHRleHR1cmUKKyAg
ICAgICAgZ2xDbGVhckNvbG9yKDAsIDAsIDAsIDApOworICAgICAgICBnbENsZWFyKEdMX0NPTE9S
X0JVRkZFUl9CSVQpOworICAgICAgICBnbFVzZVByb2dyYW0obTJEUHJvZ3JhbSk7CisgICAgICAg
IGdsVW5pZm9ybTFpKG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRpb24sIDApOworICAgICAgICBkcmF3
UXVhZChtMkRQcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICAgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7CisKKyAgICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgcGl4ZWwgY29sb3JzIG1hdGNo
IHNyY0NvbG9yRgorICAgICAgICBFWFBFQ1RfUElYRUxfRVEoICAgICAgICAgICAgICAgICAgICAw
LCAgICAgICAgICAgICAgICAgICAgMCwgMjU1LCAgIDAsICAgMCwgMjU1KTsKKyAgICAgICAgRVhQ
RUNUX1BJWEVMX0VRKGdldFdpbmRvd0hlaWdodCgpIC0gMSwgICAgICAgICAgICAgICAgICAgIDAs
ICAgMCwgMjU1LCAgIDAsIDI1NSk7CisgICAgICAgIEVYUEVDVF9QSVhFTF9FUSggICAgICAgICAg
ICAgICAgICAgIDAsIGdldFdpbmRvd1dpZHRoKCkgLSAxLCAgIDAsICAgMCwgMjU1LCAyNTUpOwor
ICAgICAgICBFWFBFQ1RfUElYRUxfRVEoZ2V0V2luZG93SGVpZ2h0KCkgLSAxLCBnZXRXaW5kb3dX
aWR0aCgpIC0gMSwgMjU1LCAyNTUsICAgMCwgMjU1KTsKKyAgICAgICAgc3dhcEJ1ZmZlcnMoKTsK
KworICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmZmJvKTsKKyAgICAgICAgZ2xEZWxl
dGVUZXh0dXJlcygxLCAmdGV4KTsKKyAgICB9CisKKyAgICBHTHVpbnQgbTJEUHJvZ3JhbTsKKyAg
ICBHTGludCBtVGV4dHVyZTJEVW5pZm9ybUxvY2F0aW9uOworfTsKKworLy8gVmFsaWRhdGlvbiB0
ZXN0IGZvciByeDo6UjRHNEI0QTQncyB3cml0ZUNvbG9yIGZ1bmN0aW9ucworVEVTVF9QKEQzRElt
YWdlRm9ybWF0Q29udmVyc2lvblRlc3QsIFdyaXRlQ29sb3JGdW5jdGlvblI0RzRCNEE0KQorewor
ICAgIC8vIFRoZXNlIHRlc3RzIGZhaWwgb24gY2VydGFpbiBJbnRlbCBtYWNoaW5lcyBydW5uaW5n
IGFuIHVuLXVwZGF0ZWQgdmVyc2lvbiBvZiBXaW43CisgICAgLy8gVGhlIHRlc3RzIHBhc3MgYWZ0
ZXIgaW5zdGFsbGluZyB0aGUgbGF0ZXN0IHVwZGF0ZXMgZnJvbSBXaW5kb3dzIFVwZGF0ZS4KKyAg
ICAvLyBUT0RPOiByZWVuYWJsZSB0aGVzZSB0ZXN0cyBvbmNlIHRoZSBib3RzIGhhdmUgYmVlbiB1
cGRhdGVkCisgICAgaWYgKElzSW50ZWwoKSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdM
X1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUpCisgICAgeworICAgICAgICBzdGQ6OmNv
dXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBEM0QxMS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIHJ1blRlc3Q8UjRHNEI0QTQ+KEdMX1JHQkEsIEdMX1VO
U0lHTkVEX1NIT1JUXzRfNF80XzQpOworfQorCisvLyBWYWxpZGF0aW9uIHRlc3QgZm9yIHJ4OjpS
NUc1QjVBMSdzIHdyaXRlQ29sb3IgZnVuY3Rpb25zCitURVNUX1AoRDNESW1hZ2VGb3JtYXRDb252
ZXJzaW9uVGVzdCwgV3JpdGVDb2xvckZ1bmN0aW9uUjVHNUI1QTEpCit7CisgICAgLy8gVGhlc2Ug
dGVzdHMgZmFpbCBvbiBjZXJ0YWluIEludGVsIG1hY2hpbmVzIHJ1bm5pbmcgYW4gdW4tdXBkYXRl
ZCB2ZXJzaW9uIG9mIFdpbjcKKyAgICAvLyBUaGUgdGVzdHMgcGFzcyBhZnRlciBpbnN0YWxsaW5n
IHRoZSBsYXRlc3QgdXBkYXRlcyBmcm9tIFdpbmRvd3MgVXBkYXRlLgorICAgIC8vIFRPRE86IHJl
ZW5hYmxlIHRoZXNlIHRlc3RzIG9uY2UgdGhlIGJvdHMgaGF2ZSBiZWVuIHVwZGF0ZWQKKyAgICBp
ZiAoSXNJbnRlbCgpICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5H
TEVfVFlQRV9EM0QxMV9BTkdMRSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBz
a2lwcGVkIG9uIEludGVsIEQzRDExLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgcnVuVGVzdDxSNUc1QjVBMT4oR0xfUkdCQSwgR0xfVU5TSUdORURfU0hPUlRf
NV81XzVfMSk7Cit9CisKKy8vIFZhbGlkYXRpb24gdGVzdCBmb3Igcng6OlI1RzZCNSdzIHdyaXRl
Q29sb3IgZnVuY3Rpb25zCitURVNUX1AoRDNESW1hZ2VGb3JtYXRDb252ZXJzaW9uVGVzdCwgV3Jp
dGVDb2xvckZ1bmN0aW9uUjVHNkI1KQoreworICAgIC8vIFRoZXNlIHRlc3RzIGZhaWwgb24gY2Vy
dGFpbiBJbnRlbCBtYWNoaW5lcyBydW5uaW5nIGFuIHVuLXVwZGF0ZWQgdmVyc2lvbiBvZiBXaW43
CisgICAgLy8gVGhlIHRlc3RzIHBhc3MgYWZ0ZXIgaW5zdGFsbGluZyB0aGUgbGF0ZXN0IHVwZGF0
ZXMgZnJvbSBXaW5kb3dzIFVwZGF0ZS4KKyAgICAvLyBUT0RPOiByZWVuYWJsZSB0aGVzZSB0ZXN0
cyBvbmNlIHRoZSBib3RzIGhhdmUgYmVlbiB1cGRhdGVkCisgICAgaWYgKElzSW50ZWwoKSAmJiBn
ZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5H
TEUpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBE
M0QxMS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHJ1blRl
c3Q8UjVHNkI1PihHTF9SR0IsIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81KTsKK30KKworLy8gVmFs
aWRhdGlvbiB0ZXN0IGZvciByeDo6UjhHOEI4QTgncyB3cml0ZUNvbG9yIGZ1bmN0aW9ucworVEVT
VF9QKEQzREltYWdlRm9ybWF0Q29udmVyc2lvblRlc3QsIFdyaXRlQ29sb3JGdW5jdGlvblI4RzhC
OEE4KQoreworICAgIC8vIFRoZXNlIHRlc3RzIGZhaWwgb24gY2VydGFpbiBJbnRlbCBtYWNoaW5l
cyBydW5uaW5nIGFuIHVuLXVwZGF0ZWQgdmVyc2lvbiBvZiBXaW43CisgICAgLy8gVGhlIHRlc3Rz
IHBhc3MgYWZ0ZXIgaW5zdGFsbGluZyB0aGUgbGF0ZXN0IHVwZGF0ZXMgZnJvbSBXaW5kb3dzIFVw
ZGF0ZS4KKyAgICAvLyBUT0RPOiByZWVuYWJsZSB0aGVzZSB0ZXN0cyBvbmNlIHRoZSBib3RzIGhh
dmUgYmVlbiB1cGRhdGVkCisgICAgaWYgKElzSW50ZWwoKSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVy
KCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUpCisgICAgeworICAgICAg
ICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBEM0QxMS4iIDw8IHN0ZDo6ZW5k
bDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHJ1blRlc3Q8UjhHOEI4QTg+KEdMX1JH
QkEsIEdMX1VOU0lHTkVEX0JZVEUpOworfQorCisvLyBWYWxpZGF0aW9uIHRlc3QgZm9yIHJ4OjpS
OEc4QjgncyB3cml0ZUNvbG9yIGZ1bmN0aW9ucworVEVTVF9QKEQzREltYWdlRm9ybWF0Q29udmVy
c2lvblRlc3QsIFdyaXRlQ29sb3JGdW5jdGlvblI4RzhCOCkKK3sKKyAgICAvLyBUaGVzZSB0ZXN0
cyBmYWlsIG9uIGNlcnRhaW4gSW50ZWwgbWFjaGluZXMgcnVubmluZyBhbiB1bi11cGRhdGVkIHZl
cnNpb24gb2YgV2luNworICAgIC8vIFRoZSB0ZXN0cyBwYXNzIGFmdGVyIGluc3RhbGxpbmcgdGhl
IGxhdGVzdCB1cGRhdGVzIGZyb20gV2luZG93cyBVcGRhdGUuCisgICAgLy8gVE9ETzogcmVlbmFi
bGUgdGhlc2UgdGVzdHMgb25jZSB0aGUgYm90cyBoYXZlIGJlZW4gdXBkYXRlZAorICAgIGlmIChJ
c0ludGVsKCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9U
WVBFX0QzRDExX0FOR0xFKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBw
ZWQgb24gSW50ZWwgRDNEMTEuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19BTElHTk1FTlQsIDEpOworICAgIHJ1blRl
c3Q8UjhHOEI4PihHTF9SR0IsIEdMX1VOU0lHTkVEX0JZVEUpOworfQorCisvLyBVc2UgdGhpcyB0
byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNo
IEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0Lgor
Ly8gRXZlbiB0aG91Z2ggdGhpcyB0ZXN0IGlzIG9ubHkgcnVuIG9uIFdpbmRvd3MgKHNpbmNlIGl0
IGluY2x1ZGVzIGltYWdlZm9ybWF0cy5oIGZyb20gdGhlIEQzRCByZW5kZXJlciksIHdlIGNhbiBz
dGlsbCBydW4gdGhlIHRlc3QKKy8vIGFnYWluc3QgT3BlbkdMLiBUaGlzIGlzIHZhbHVhYmxlLCBz
aW5jZSBpdCBwcm92aWRlcyBleHRyYSB2YWxpZGF0aW9uIHVzaW5nIGEgcmVuZGVyZXIgdGhhdCBk
b2Vzbid0IHVzZSBpbWFnZWZvcm1hdHMuaCBpdHNlbGYuCitBTkdMRV9JTlNUQU5USUFURV9URVNU
KEQzREltYWdlRm9ybWF0Q29udmVyc2lvblRlc3QsIEVTMl9EM0Q5KCksIEVTMl9EM0QxMSgpLCBF
UzJfRDNEMTFfRkw5XzMoKSwgRVMyX09QRU5HTCgpKTsKKworfSAvLyBuYW1lc3BhY2UKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9EWFQxQ29tcHJlc3Nl
ZFRleHR1cmVUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvZ2xfdGVzdHMvRFhUMUNvbXByZXNzZWRUZXh0dXJlVGVzdC5jcHAJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0RYVDFD
b21wcmVzc2VkVGV4dHVyZVRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzI2IEBA
CisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKworI2luY2x1
ZGUgIm1lZGlhL3BpeGVsLmlubCIKKwordXNpbmcgbmFtZXNwYWNlIGFuZ2xlOworCitjbGFzcyBE
WFQxQ29tcHJlc3NlZFRleHR1cmVUZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0
ZWQ6CisgICAgRFhUMUNvbXByZXNzZWRUZXh0dXJlVGVzdCgpCisgICAgeworICAgICAgICBzZXRX
aW5kb3dXaWR0aCg1MTIpOworICAgICAgICBzZXRXaW5kb3dIZWlnaHQoNTEyKTsKKyAgICAgICAg
c2V0Q29uZmlnUmVkQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAg
ICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgp
OworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCisgICAgeworICAgICAgICBBTkdM
RVRlc3Q6OlNldFVwKCk7CisKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdnNTb3VyY2UgPSBT
SEFERVJfU09VUkNFCisgICAgICAgICgKKyAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9h
dDsKKyAgICAgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uOworICAgICAgICAgICAgdmFy
eWluZyB2ZWMyIHRleGNvb3JkOworCisgICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247CisgICAgICAgICAg
ICAgICAgdGV4Y29vcmQgPSAocG9zaXRpb24ueHkgKiAwLjUpICsgMC41OworICAgICAgICAgICAg
ICAgIHRleGNvb3JkLnkgPSAxLjAgLSB0ZXhjb29yZC55OworICAgICAgICAgICAgfQorICAgICAg
ICApOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHRleHR1cmVGU1NvdXJjZSA9IFNIQURF
Ul9TT1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0Owor
ICAgICAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdGV4OworICAgICAgICAgICAgdmFyeWluZyB2
ZWMyIHRleGNvb3JkOworCisgICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh0ZXgsIHRleGNvb3JkKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICBtVGV4dHVyZVByb2dyYW0gPSBD
b21waWxlUHJvZ3JhbSh2c1NvdXJjZSwgdGV4dHVyZUZTU291cmNlKTsKKyAgICAgICAgaWYgKG1U
ZXh0dXJlUHJvZ3JhbSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBGQUlMKCkgPDwgInNo
YWRlciBjb21waWxhdGlvbiBmYWlsZWQuIjsKKyAgICAgICAgfQorCisgICAgICAgIG1UZXh0dXJl
VW5pZm9ybUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVRleHR1cmVQcm9ncmFtLCAi
dGV4Iik7CisKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgfQorCisgICAgdmly
dHVhbCB2b2lkIFRlYXJEb3duKCkKKyAgICB7CisgICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtVGV4
dHVyZVByb2dyYW0pOworCisgICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKKyAgICB9CisK
KyAgICBHTHVpbnQgbVRleHR1cmVQcm9ncmFtOworICAgIEdMaW50IG1UZXh0dXJlVW5pZm9ybUxv
Y2F0aW9uOworfTsKKworVEVTVF9QKERYVDFDb21wcmVzc2VkVGV4dHVyZVRlc3QsIENvbXByZXNz
ZWRUZXhJbWFnZSkKK3sKKyAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF90ZXh0dXJl
X2NvbXByZXNzaW9uX2R4dDEiKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBz
a2lwcGVkIGJlY2F1c2UgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSBpcyBub3QgYXZh
aWxhYmxlLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR0x1
aW50IHRleHR1cmU7CisgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4dHVyZSk7CisgICAgZ2xCaW5k
VGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xf
VEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOworICAgIGdsVGV4
UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVB
Uik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9T
LCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOworCisgICAgZ2xDb21wcmVzc2Vk
VGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQx
X0VYVCwgcGl4ZWxfMF93aWR0aCwgcGl4ZWxfMF9oZWlnaHQsIDAsIHBpeGVsXzBfc2l6ZSwgcGl4
ZWxfMF9kYXRhKTsKKyAgICBnbENvbXByZXNzZWRUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDEs
IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF8xX3dpZHRoLCBwaXhlbF8x
X2hlaWdodCwgMCwgcGl4ZWxfMV9zaXplLCBwaXhlbF8xX2RhdGEpOworICAgIGdsQ29tcHJlc3Nl
ZFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMiwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
MV9FWFQsIHBpeGVsXzJfd2lkdGgsIHBpeGVsXzJfaGVpZ2h0LCAwLCBwaXhlbF8yX3NpemUsIHBp
eGVsXzJfZGF0YSk7CisgICAgZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAz
LCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgcGl4ZWxfM193aWR0aCwgcGl4ZWxf
M19oZWlnaHQsIDAsIHBpeGVsXzNfc2l6ZSwgcGl4ZWxfM19kYXRhKTsKKyAgICBnbENvbXByZXNz
ZWRUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDQsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RY
VDFfRVhULCBwaXhlbF80X3dpZHRoLCBwaXhlbF80X2hlaWdodCwgMCwgcGl4ZWxfNF9zaXplLCBw
aXhlbF80X2RhdGEpOworICAgIGdsQ29tcHJlc3NlZFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwg
NSwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzVfd2lkdGgsIHBpeGVs
XzVfaGVpZ2h0LCAwLCBwaXhlbF81X3NpemUsIHBpeGVsXzVfZGF0YSk7CisgICAgZ2xDb21wcmVz
c2VkVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCA2LCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19E
WFQxX0VYVCwgcGl4ZWxfNl93aWR0aCwgcGl4ZWxfNl9oZWlnaHQsIDAsIHBpeGVsXzZfc2l6ZSwg
cGl4ZWxfNl9kYXRhKTsKKyAgICBnbENvbXByZXNzZWRUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQs
IDcsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF83X3dpZHRoLCBwaXhl
bF83X2hlaWdodCwgMCwgcGl4ZWxfN19zaXplLCBwaXhlbF83X2RhdGEpOworICAgIGdsQ29tcHJl
c3NlZFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgOCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUMV9FWFQsIHBpeGVsXzhfd2lkdGgsIHBpeGVsXzhfaGVpZ2h0LCAwLCBwaXhlbF84X3NpemUs
IHBpeGVsXzhfZGF0YSk7CisgICAgZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJE
LCA5LCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgcGl4ZWxfOV93aWR0aCwgcGl4
ZWxfOV9oZWlnaHQsIDAsIHBpeGVsXzlfc2l6ZSwgcGl4ZWxfOV9kYXRhKTsKKworICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOworCisgICAgZ2xVc2VQcm9ncmFtKG1UZXh0dXJlUHJvZ3JhbSk7Cisg
ICAgZ2xVbmlmb3JtMWkobVRleHR1cmVVbmlmb3JtTG9jYXRpb24sIDApOworCisgICAgZHJhd1F1
YWQobVRleHR1cmVQcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOworCisgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGV4dHVyZSk7CisKKyAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKK30KKworVEVTVF9QKERYVDFDb21wcmVzc2VkVGV4dHVyZVRl
c3QsIENvbXByZXNzZWRUZXhTdG9yYWdlKQoreworICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgi
R0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIpKQorICAgIHsKKyAgICAgICAgc3RkOjpj
b3V0IDw8ICJUZXN0IHNraXBwZWQgZHVlIHRvIG1pc3NpbmcgR0xfRVhUX3RleHR1cmVfY29tcHJl
c3Npb25fZHh0MSIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAmJgorICAgICAgICAoIWV4dGVuc2lvbkVu
YWJsZWQoIkdMX0VYVF90ZXh0dXJlX3N0b3JhZ2UiKSB8fCAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xf
T0VTX3JnYjhfcmdiYTgiKSkpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tp
cHBlZCBkdWUgdG8gbWlzc2luZyBFUzMgb3IgR0xfRVhUX3RleHR1cmVfc3RvcmFnZSBvciBHTF9P
RVNfcmdiOF9yZ2JhOCIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgR0x1aW50IHRleHR1cmU7CisgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4dHVyZSk7CisgICAg
Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOworICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdM
X0xJTkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
V1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOworCisgICAgaWYgKGdl
dENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKKyAgICB7CisgICAgICAgIGdsVGV4U3RvcmFnZTJE
RVhUKEdMX1RFWFRVUkVfMkQsIHBpeGVsX2xldmVscywgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUMV9FWFQsIHBpeGVsXzBfd2lkdGgsIHBpeGVsXzBfaGVpZ2h0KTsKKyAgICB9CisgICAgZWxz
ZQorICAgIHsKKyAgICAgICAgZ2xUZXhTdG9yYWdlMkQoR0xfVEVYVFVSRV8yRCwgcGl4ZWxfbGV2
ZWxzLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgcGl4ZWxfMF93aWR0aCwgcGl4
ZWxfMF9oZWlnaHQpOworICAgIH0KKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGds
Q29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwgcGl4ZWxfMF93
aWR0aCwgcGl4ZWxfMF9oZWlnaHQsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBw
aXhlbF8wX3NpemUsIHBpeGVsXzBfZGF0YSk7CisgICAgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2Uy
RChHTF9URVhUVVJFXzJELCAxLCAwLCAwLCBwaXhlbF8xX3dpZHRoLCBwaXhlbF8xX2hlaWdodCwg
R0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzFfc2l6ZSwgcGl4ZWxfMV9k
YXRhKTsKKyAgICBnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDIsIDAs
IDAsIHBpeGVsXzJfd2lkdGgsIHBpeGVsXzJfaGVpZ2h0LCBHTF9DT01QUkVTU0VEX1JHQkFfUzNU
Q19EWFQxX0VYVCwgcGl4ZWxfMl9zaXplLCBwaXhlbF8yX2RhdGEpOworICAgIGdsQ29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMywgMCwgMCwgcGl4ZWxfM193aWR0aCwgcGl4
ZWxfM19oZWlnaHQsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF8zX3Np
emUsIHBpeGVsXzNfZGF0YSk7CisgICAgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHTF9URVhU
VVJFXzJELCA0LCAwLCAwLCBwaXhlbF80X3dpZHRoLCBwaXhlbF80X2hlaWdodCwgR0xfQ09NUFJF
U1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzRfc2l6ZSwgcGl4ZWxfNF9kYXRhKTsKKyAg
ICBnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDUsIDAsIDAsIHBpeGVs
XzVfd2lkdGgsIHBpeGVsXzVfaGVpZ2h0LCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VY
VCwgcGl4ZWxfNV9zaXplLCBwaXhlbF81X2RhdGEpOworICAgIGdsQ29tcHJlc3NlZFRleFN1Yklt
YWdlMkQoR0xfVEVYVFVSRV8yRCwgNiwgMCwgMCwgcGl4ZWxfNl93aWR0aCwgcGl4ZWxfNl9oZWln
aHQsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF82X3NpemUsIHBpeGVs
XzZfZGF0YSk7CisgICAgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCA3
LCAwLCAwLCBwaXhlbF83X3dpZHRoLCBwaXhlbF83X2hlaWdodCwgR0xfQ09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUMV9FWFQsIHBpeGVsXzdfc2l6ZSwgcGl4ZWxfN19kYXRhKTsKKyAgICBnbENvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDgsIDAsIDAsIHBpeGVsXzhfd2lkdGgs
IHBpeGVsXzhfaGVpZ2h0LCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgcGl4ZWxf
OF9zaXplLCBwaXhlbF84X2RhdGEpOworICAgIGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0xf
VEVYVFVSRV8yRCwgOSwgMCwgMCwgcGl4ZWxfOV93aWR0aCwgcGl4ZWxfOV9oZWlnaHQsIEdMX0NP
TVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF85X3NpemUsIHBpeGVsXzlfZGF0YSk7
CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsVXNlUHJvZ3JhbShtVGV4dHVy
ZVByb2dyYW0pOworICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9uLCAwKTsK
KworICAgIGRyYXdRdWFkKG1UZXh0dXJlUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisKKyAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRleHR1
cmUpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9CisKK2NsYXNzIERYVDFDb21wcmVz
c2VkVGV4dHVyZVRlc3RFUzMgOiBwdWJsaWMgRFhUMUNvbXByZXNzZWRUZXh0dXJlVGVzdCB7IH07
CisKK2NsYXNzIERYVDFDb21wcmVzc2VkVGV4dHVyZVRlc3REM0QxMSA6IHB1YmxpYyBEWFQxQ29t
cHJlc3NlZFRleHR1cmVUZXN0IHsgfTsKKworVEVTVF9QKERYVDFDb21wcmVzc2VkVGV4dHVyZVRl
c3RFUzMsIFBCT0NvbXByZXNzZWRUZXhJbWFnZSkKK3sKKyAgICBpZiAoIWV4dGVuc2lvbkVuYWJs
ZWQoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKSkKKyAgICB7CisgICAgICAgIHN0
ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Np
b25fZHh0MSBpcyBub3QgYXZhaWxhYmxlLiIKKyAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5k
bDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdMdWludCB0ZXh0dXJlOworICAgIGds
R2VuVGV4dHVyZXMoMSwgJnRleHR1cmUpOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8y
RCwgdGV4dHVyZSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRV
UkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOworICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7
CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBH
TF9DTEFNUF9UT19FREdFKTsKKworICAgIEdMdWludCBidWZmZXI7CisgICAgZ2xHZW5CdWZmZXJz
KDEsICZidWZmZXIpOworICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCBi
dWZmZXIpOworICAgIGdsQnVmZmVyRGF0YShHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCBwaXhlbF8w
X3NpemUsIE5VTEwsIEdMX1NUUkVBTV9EUkFXKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
KworICAgIGdsQnVmZmVyU3ViRGF0YShHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCAwLCBwaXhlbF8w
X3NpemUsIHBpeGVsXzBfZGF0YSk7CisgICAgZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRChHTF9URVhU
VVJFXzJELCAwLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgcGl4ZWxfMF93aWR0
aCwgcGl4ZWxfMF9oZWlnaHQsIDAsIHBpeGVsXzBfc2l6ZSwgTlVMTCk7CisgICAgZ2xCdWZmZXJT
dWJEYXRhKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIDAsIHBpeGVsXzFfc2l6ZSwgcGl4ZWxfMV9k
YXRhKTsKKyAgICBnbENvbXByZXNzZWRUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDEsIEdMX0NP
TVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF8xX3dpZHRoLCBwaXhlbF8xX2hlaWdo
dCwgMCwgcGl4ZWxfMV9zaXplLCBOVUxMKTsKKyAgICBnbEJ1ZmZlclN1YkRhdGEoR0xfUElYRUxf
VU5QQUNLX0JVRkZFUiwgMCwgcGl4ZWxfMl9zaXplLCBwaXhlbF8yX2RhdGEpOworICAgIGdsQ29t
cHJlc3NlZFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMiwgR0xfQ09NUFJFU1NFRF9SR0JBX1Mz
VENfRFhUMV9FWFQsIHBpeGVsXzJfd2lkdGgsIHBpeGVsXzJfaGVpZ2h0LCAwLCBwaXhlbF8yX3Np
emUsIE5VTEwpOworICAgIGdsQnVmZmVyU3ViRGF0YShHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCAw
LCBwaXhlbF8zX3NpemUsIHBpeGVsXzNfZGF0YSk7CisgICAgZ2xDb21wcmVzc2VkVGV4SW1hZ2Uy
RChHTF9URVhUVVJFXzJELCAzLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgcGl4
ZWxfM193aWR0aCwgcGl4ZWxfM19oZWlnaHQsIDAsIHBpeGVsXzNfc2l6ZSwgTlVMTCk7CisgICAg
Z2xCdWZmZXJTdWJEYXRhKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIDAsIHBpeGVsXzRfc2l6ZSwg
cGl4ZWxfNF9kYXRhKTsKKyAgICBnbENvbXByZXNzZWRUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQs
IDQsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF80X3dpZHRoLCBwaXhl
bF80X2hlaWdodCwgMCwgcGl4ZWxfNF9zaXplLCBOVUxMKTsKKyAgICBnbEJ1ZmZlclN1YkRhdGEo
R0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgMCwgcGl4ZWxfNV9zaXplLCBwaXhlbF81X2RhdGEpOwor
ICAgIGdsQ29tcHJlc3NlZFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgNSwgR0xfQ09NUFJFU1NF
RF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzVfd2lkdGgsIHBpeGVsXzVfaGVpZ2h0LCAwLCBw
aXhlbF81X3NpemUsIE5VTEwpOworICAgIGdsQnVmZmVyU3ViRGF0YShHTF9QSVhFTF9VTlBBQ0tf
QlVGRkVSLCAwLCBwaXhlbF82X3NpemUsIHBpeGVsXzZfZGF0YSk7CisgICAgZ2xDb21wcmVzc2Vk
VGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCA2LCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQx
X0VYVCwgcGl4ZWxfNl93aWR0aCwgcGl4ZWxfNl9oZWlnaHQsIDAsIHBpeGVsXzZfc2l6ZSwgTlVM
TCk7CisgICAgZ2xCdWZmZXJTdWJEYXRhKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIDAsIHBpeGVs
Xzdfc2l6ZSwgcGl4ZWxfN19kYXRhKTsKKyAgICBnbENvbXByZXNzZWRUZXhJbWFnZTJEKEdMX1RF
WFRVUkVfMkQsIDcsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF83X3dp
ZHRoLCBwaXhlbF83X2hlaWdodCwgMCwgcGl4ZWxfN19zaXplLCBOVUxMKTsKKyAgICBnbEJ1ZmZl
clN1YkRhdGEoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgMCwgcGl4ZWxfOF9zaXplLCBwaXhlbF84
X2RhdGEpOworICAgIGdsQ29tcHJlc3NlZFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgOCwgR0xf
Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzhfd2lkdGgsIHBpeGVsXzhfaGVp
Z2h0LCAwLCBwaXhlbF84X3NpemUsIE5VTEwpOworICAgIGdsQnVmZmVyU3ViRGF0YShHTF9QSVhF
TF9VTlBBQ0tfQlVGRkVSLCAwLCBwaXhlbF85X3NpemUsIHBpeGVsXzlfZGF0YSk7CisgICAgZ2xD
b21wcmVzc2VkVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCA5LCBHTF9DT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQxX0VYVCwgcGl4ZWxfOV93aWR0aCwgcGl4ZWxfOV9oZWlnaHQsIDAsIHBpeGVsXzlf
c2l6ZSwgTlVMTCk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsVXNlUHJv
Z3JhbShtVGV4dHVyZVByb2dyYW0pOworICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJlVW5pZm9ybUxv
Y2F0aW9uLCAwKTsKKworICAgIGRyYXdRdWFkKG1UZXh0dXJlUHJvZ3JhbSwgInBvc2l0aW9uIiwg
MC41Zik7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsRGVsZXRlVGV4dHVy
ZXMoMSwgJmJ1ZmZlcik7CisgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGV4dHVyZSk7CisKKyAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKK30KKworCitURVNUX1AoRFhUMUNvbXByZXNzZWRUZXh0
dXJlVGVzdEQzRDExLCBQQk9Db21wcmVzc2VkVGV4U3RvcmFnZSkKK3sKKyAgICBpZiAoZ2V0Q2xp
ZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfdGV4dHVy
ZV9jb21wcmVzc2lvbl9keHQxIikpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAmJgorICAgICAgICAoIWV4dGVuc2lv
bkVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX3N0b3JhZ2UiKSB8fCAhZXh0ZW5zaW9uRW5hYmxlZCgi
R0xfT0VTX3JnYjhfcmdiYTgiKSkpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgR0x1aW50IHRleHR1cmU7CisgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4dHVyZSk7CisgICAg
Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOworICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdM
X0xJTkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
V1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOworCisgICAgaWYgKGdl
dENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKKyAgICB7CisgICAgICAgIGdsVGV4U3RvcmFnZTJE
RVhUKEdMX1RFWFRVUkVfMkQsIHBpeGVsX2xldmVscywgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUMV9FWFQsIHBpeGVsXzBfd2lkdGgsIHBpeGVsXzBfaGVpZ2h0KTsKKyAgICB9CisgICAgZWxz
ZQorICAgIHsKKyAgICAgICAgZ2xUZXhTdG9yYWdlMkQoR0xfVEVYVFVSRV8yRCwgcGl4ZWxfbGV2
ZWxzLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgcGl4ZWxfMF93aWR0aCwgcGl4
ZWxfMF9oZWlnaHQpOworICAgIH0KKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIEdM
dWludCBidWZmZXI7CisgICAgZ2xHZW5CdWZmZXJzKDEsICZidWZmZXIpOworICAgIGdsQmluZEJ1
ZmZlcihHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCBidWZmZXIpOworICAgIGdsQnVmZmVyRGF0YShH
TF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCBwaXhlbF8wX3NpemUsIE5VTEwsIEdMX1NUUkVBTV9EUkFX
KTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsQnVmZmVyU3ViRGF0YShHTF9Q
SVhFTF9VTlBBQ0tfQlVGRkVSLCAwLCBwaXhlbF8wX3NpemUsIHBpeGVsXzBfZGF0YSk7CisgICAg
Z2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCAwLCAwLCBwaXhlbF8w
X3dpZHRoLCBwaXhlbF8wX2hlaWdodCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQs
IHBpeGVsXzBfc2l6ZSwgTlVMTCk7CisgICAgZ2xCdWZmZXJTdWJEYXRhKEdMX1BJWEVMX1VOUEFD
S19CVUZGRVIsIDAsIHBpeGVsXzFfc2l6ZSwgcGl4ZWxfMV9kYXRhKTsKKyAgICBnbENvbXByZXNz
ZWRUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDEsIDAsIDAsIHBpeGVsXzFfd2lkdGgsIHBp
eGVsXzFfaGVpZ2h0LCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgcGl4ZWxfMV9z
aXplLCBOVUxMKTsKKyAgICBnbEJ1ZmZlclN1YkRhdGEoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwg
MCwgcGl4ZWxfMl9zaXplLCBwaXhlbF8yX2RhdGEpOworICAgIGdsQ29tcHJlc3NlZFRleFN1Yklt
YWdlMkQoR0xfVEVYVFVSRV8yRCwgMiwgMCwgMCwgcGl4ZWxfMl93aWR0aCwgcGl4ZWxfMl9oZWln
aHQsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF8yX3NpemUsIE5VTEwp
OworICAgIGdsQnVmZmVyU3ViRGF0YShHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCAwLCBwaXhlbF8z
X3NpemUsIHBpeGVsXzNfZGF0YSk7CisgICAgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHTF9U
RVhUVVJFXzJELCAzLCAwLCAwLCBwaXhlbF8zX3dpZHRoLCBwaXhlbF8zX2hlaWdodCwgR0xfQ09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzNfc2l6ZSwgTlVMTCk7CisgICAgZ2xC
dWZmZXJTdWJEYXRhKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIDAsIHBpeGVsXzRfc2l6ZSwgcGl4
ZWxfNF9kYXRhKTsKKyAgICBnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQs
IDQsIDAsIDAsIHBpeGVsXzRfd2lkdGgsIHBpeGVsXzRfaGVpZ2h0LCBHTF9DT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQxX0VYVCwgcGl4ZWxfNF9zaXplLCBOVUxMKTsKKyAgICBnbEJ1ZmZlclN1YkRh
dGEoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgMCwgcGl4ZWxfNV9zaXplLCBwaXhlbF81X2RhdGEp
OworICAgIGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgNSwgMCwgMCwg
cGl4ZWxfNV93aWR0aCwgcGl4ZWxfNV9oZWlnaHQsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RY
VDFfRVhULCBwaXhlbF81X3NpemUsIE5VTEwpOworICAgIGdsQnVmZmVyU3ViRGF0YShHTF9QSVhF
TF9VTlBBQ0tfQlVGRkVSLCAwLCBwaXhlbF82X3NpemUsIHBpeGVsXzZfZGF0YSk7CisgICAgZ2xD
b21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCA2LCAwLCAwLCBwaXhlbF82X3dp
ZHRoLCBwaXhlbF82X2hlaWdodCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBp
eGVsXzZfc2l6ZSwgTlVMTCk7CisgICAgZ2xCdWZmZXJTdWJEYXRhKEdMX1BJWEVMX1VOUEFDS19C
VUZGRVIsIDAsIHBpeGVsXzdfc2l6ZSwgcGl4ZWxfN19kYXRhKTsKKyAgICBnbENvbXByZXNzZWRU
ZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDcsIDAsIDAsIHBpeGVsXzdfd2lkdGgsIHBpeGVs
XzdfaGVpZ2h0LCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgcGl4ZWxfN19zaXpl
LCBOVUxMKTsKKyAgICBnbEJ1ZmZlclN1YkRhdGEoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgMCwg
cGl4ZWxfOF9zaXplLCBwaXhlbF84X2RhdGEpOworICAgIGdsQ29tcHJlc3NlZFRleFN1YkltYWdl
MkQoR0xfVEVYVFVSRV8yRCwgOCwgMCwgMCwgcGl4ZWxfOF93aWR0aCwgcGl4ZWxfOF9oZWlnaHQs
IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF84X3NpemUsIE5VTEwpOwor
ICAgIGdsQnVmZmVyU3ViRGF0YShHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCAwLCBwaXhlbF85X3Np
emUsIHBpeGVsXzlfZGF0YSk7CisgICAgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHTF9URVhU
VVJFXzJELCA5LCAwLCAwLCBwaXhlbF85X3dpZHRoLCBwaXhlbF85X2hlaWdodCwgR0xfQ09NUFJF
U1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzlfc2l6ZSwgTlVMTCk7CisKKyAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsVXNlUHJvZ3JhbShtVGV4dHVyZVByb2dyYW0pOwor
ICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9uLCAwKTsKKworICAgIGRyYXdR
dWFkKG1UZXh0dXJlUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisKKyAgICBFWFBFQ1RfR0xf
Tk9fRVJST1IoKTsKKworICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRleHR1cmUpOworCisgICAg
RVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBj
b25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJz
aW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCitBTkdMRV9JTlNUQU5USUFU
RV9URVNUKERYVDFDb21wcmVzc2VkVGV4dHVyZVRlc3QsCisgICAgICAgICAgICAgICAgICAgICAg
IEVTMl9EM0Q5KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAorICAgICAg
ICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzMoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgRVMyX09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKCksCisg
ICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpLAorICAgICAgICAgICAgICAgICAg
ICAgICBFUzNfT1BFTkdMRVMoKSk7CisKKy8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25m
aWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9u
KSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCitBTkdMRV9JTlNUQU5USUFURV9U
RVNUKERYVDFDb21wcmVzc2VkVGV4dHVyZVRlc3RFUzMsIEVTM19EM0QxMSgpLCBFUzNfT1BFTkdM
KCksIEVTM19PUEVOR0xFUygpKTsKKworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChEWFQxQ29tcHJl
c3NlZFRleHR1cmVUZXN0RDNEMTEsIEVTMl9EM0QxMSgpLCBFUzNfRDNEMTEoKSwgRVMyX0QzRDEx
X0ZMOV8zKCkpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rl
c3RzL0RlYnVnTWFya2VyVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0RlYnVnTWFya2VyVGVzdC5jcHAJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0RlYnVnTWFy
a2VyVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MSBAQAorLy8KKy8vIENvcHly
aWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8v
IERlYnVnTWFya2VyVGVzdDoKKy8vICAgQmFzaWMgdGVzdHMgdG8gZW5zdXJlIEVYVF9kZWJ1Z19t
YXJrZXIgZW50cnkgcG9pbnRzIHdvcmsuCisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVz
dC5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKK25hbWVzcGFjZQoreworCitjbGFzcyBE
ZWJ1Z01hcmtlclRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBE
ZWJ1Z01hcmtlclRlc3QoKQorICAgIHsKKyAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKKyAg
ICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7CisgICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7
CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQmx1ZUJp
dHMoOCk7CisgICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKKyAgICB9Cit9OworCisvLyBT
aW1wbGUgdGVzdCB0byBlbnN1cmUgdGhlIHZhcmlvdXMgRVhUX2RlYnVnX21hcmtlciBlbnRyeSBw
b2ludHMgZG9uJ3QgY3Jhc2guCisvLyBUaGUgZGVidWcgbWFya2VycyBjYW4gYmUgdmFsaWRhdGVk
IGJ5IGNhcHR1cmluZyB0aGlzIHRlc3QgdW5kZXIgUElYL0dyYXBoaWNzIERpYWdub3N0aWNzLgor
VEVTVF9QKERlYnVnTWFya2VyVGVzdCwgQmFzaWNWYWxpZGF0aW9uKQoreworICAgIGlmICghZXh0
ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2RlYnVnX21hcmtlciIpKQorICAgIHsKKyAgICAgICAgc3Rk
Ojpjb3V0IDw8ICJUZXN0IHNraXBwZWQgZHVlIHRvIG1pc3NpbmcgR0xfRVhUX2RlYnVnX21hcmtl
ciIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RkOjpzdHJp
bmcgZXZlbnRNYXJrZXJDYXB0aW9uID0gIlRlc3QgZXZlbnQgbWFya2VyIGNhcHRpb24iOworICAg
IHN0ZDo6c3RyaW5nIGdyb3VwTWFya2VyQ2FwdGlvbiA9ICJUZXN0IGdyb3VwIG1hcmtlciBjYXB0
aW9uIjsKKworICAgIGdsUHVzaEdyb3VwTWFya2VyRVhUKHN0YXRpY19jYXN0PEdMc2l6ZWk+KGdy
b3VwTWFya2VyQ2FwdGlvbi5sZW5ndGgoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgZ3Jv
dXBNYXJrZXJDYXB0aW9uLmNfc3RyKCkpOworCisgICAgLy8gRG8gc29tZSBiYXNpYyBvcGVyYXRp
b25zIGJldHdlZW4gY2FsbHMgdG8gZXh0ZW5zaW9uIGVudHJ5IHBvaW50cworICAgIGdsQ2xlYXJD
b2xvcigxLjBmLCAxLjBmLCAxLjBmLCAxLjBmKTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZF
Ul9CSVQpOworCisgICAgZ2xJbnNlcnRFdmVudE1hcmtlckVYVChzdGF0aWNfY2FzdDxHTHNpemVp
PihldmVudE1hcmtlckNhcHRpb24ubGVuZ3RoKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXZlbnRNYXJrZXJDYXB0aW9uLmNfc3RyKCkpOworICAgIGdsQ2xlYXJDb2xvcigxLjBmLCAw
LjBmLCAwLjBmLCAxLjBmKTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworCisg
ICAgZ2xQdXNoR3JvdXBNYXJrZXJFWFQoMCwgTlVMTCk7CisgICAgZ2xDbGVhckNvbG9yKDAuMGYs
IDEuMGYsIDAuMGYsIDAuMGYpOworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisK
KyAgICBnbFBvcEdyb3VwTWFya2VyRVhUKCk7CisgICAgZ2xDbGVhckNvbG9yKDAuMGYsIDAuMGYs
IDEuMGYsIDAuMGYpOworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisKKyAgICBn
bFBvcEdyb3VwTWFya2VyRVhUKCk7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKK30KKwor
Ly8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJl
bmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBy
dW4gYWdhaW5zdC4KK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoRGVidWdNYXJrZXJUZXN0LCBFUzJf
RDNEOSgpLCBFUzJfRDNEMTEoKSwgRVMyX09QRU5HTCgpLCBFUzJfT1BFTkdMRVMoKSk7CisKK30g
Ly8gbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xf
dGVzdHMvRGVidWdUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvZ2xfdGVzdHMvRGVidWdUZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRGVidWdUZXN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1MSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gRGVidWdUZXN0LmNw
cCA6IFRlc3RzIG9mIHRoZSBHTF9LSFJfZGVidWcgZXh0ZW5zaW9uCisKKyNpbmNsdWRlICJ0ZXN0
X3V0aWxzL0FOR0xFVGVzdC5oIgorCituYW1lc3BhY2UgYW5nbGUKK3sKKworY2xhc3MgRGVidWdU
ZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgRGVidWdUZXN0KCkg
OiBtRGVidWdFeHRlbnNpb25BdmFpbGFibGUoZmFsc2UpCisgICAgeworICAgICAgICBzZXRXaW5k
b3dXaWR0aCgxMjgpOworICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKKyAgICAgICAgc2V0
Q29uZmlnUmVkQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAg
ICBzZXRDb25maWdCbHVlQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOwor
ICAgICAgICBzZXRDb25maWdEZXB0aEJpdHMoMjQpOworICAgICAgICBzZXREZWJ1Z0VuYWJsZWQo
dHJ1ZSk7CisgICAgfQorCisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAg
ICBBTkdMRVRlc3Q6OlNldFVwKCk7CisKKyAgICAgICAgbURlYnVnRXh0ZW5zaW9uQXZhaWxhYmxl
ID0gZXh0ZW5zaW9uRW5hYmxlZCgiR0xfS0hSX2RlYnVnIik7CisgICAgICAgIGlmIChtRGVidWdF
eHRlbnNpb25BdmFpbGFibGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsRW5hYmxlKEdMX0RF
QlVHX09VVFBVVCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBib29sIG1EZWJ1Z0V4dGVuc2lv
bkF2YWlsYWJsZTsKK307CisKK3N0cnVjdCBNZXNzYWdlCit7CisgICAgR0xlbnVtIHNvdXJjZTsK
KyAgICBHTGVudW0gdHlwZTsKKyAgICBHTHVpbnQgaWQ7CisgICAgR0xlbnVtIHNldmVyaXR5Owor
ICAgIHN0ZDo6c3RyaW5nIG1lc3NhZ2U7CisgICAgY29uc3Qgdm9pZCAqdXNlclBhcmFtOworfTsK
Kworc3RhdGljIHZvaWQgR0xfQVBJRU5UUlkgQ2FsbGJhY2soR0xlbnVtIHNvdXJjZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHNldmVyaXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGNoYXIgKm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2
b2lkICp1c2VyUGFyYW0pCit7CisgICAgTWVzc2FnZSBte3NvdXJjZSwgdHlwZSwgaWQsIHNldmVy
aXR5LCBzdGQ6OnN0cmluZyhtZXNzYWdlLCBsZW5ndGgpLCB1c2VyUGFyYW19OworICAgIHN0ZDo6
dmVjdG9yPE1lc3NhZ2U+ICptZXNzYWdlcyA9CisgICAgICAgIHN0YXRpY19jYXN0PHN0ZDo6dmVj
dG9yPE1lc3NhZ2U+ICo+KGNvbnN0X2Nhc3Q8dm9pZCAqPih1c2VyUGFyYW0pKTsKKyAgICBtZXNz
YWdlcy0+cHVzaF9iYWNrKG0pOworfQorCisvLyBUZXN0IHRoYXQgYWxsIEFOR0xFIGJhY2stZW5k
cyBoYXZlIEdMX0tIUl9kZWJ1ZyBlbmFibGVkCitURVNUX1AoRGVidWdUZXN0LCBFbmFibGVkKQor
eworICAgIEFTU0VSVF9UUlVFKG1EZWJ1Z0V4dGVuc2lvbkF2YWlsYWJsZSk7Cit9CisKKy8vIFRl
c3QgdGhhdCB3aGVuIGRlYnVnIG91dHB1dCBpcyBkaXNhYmxlZCwgbm8gbWVzc2FnZSBhcmUgb3V0
cHV0dGVkCitURVNUX1AoRGVidWdUZXN0LCBEaXNhYmxlZE91dHB1dCkKK3sKKyAgICBpZiAoIW1E
ZWJ1Z0V4dGVuc2lvbkF2YWlsYWJsZSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVz
dCBza2lwcGVkIGJlY2F1c2UgR0xfS0hSX2RlYnVnIGlzIG5vdCBhdmFpbGFibGUuIiA8PCBzdGQ6
OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBnbERpc2FibGUoR0xfREVCVUdf
T1VUUFVUKTsKKworICAgIGdsRGVidWdNZXNzYWdlSW5zZXJ0S0hSKEdMX0RFQlVHX1NPVVJDRV9B
UFBMSUNBVElPTiwgR0xfREVCVUdfVFlQRV9PVEhFUiwgMSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9ERUJVR19TRVZFUklUWV9OT1RJRklDQVRJT04sIC0xLCAiZGlzY2FyZGVkIik7
CisKKyAgICBHTGludCBudW1NZXNzYWdlcyA9IDA7CisgICAgZ2xHZXRJbnRlZ2VydihHTF9ERUJV
R19MT0dHRURfTUVTU0FHRVMsICZudW1NZXNzYWdlcyk7CisgICAgQVNTRVJUX0VRKDAsIG51bU1l
c3NhZ2VzKTsKKworICAgIHN0ZDo6dmVjdG9yPE1lc3NhZ2U+IG1lc3NhZ2VzOworICAgIGdsRGVi
dWdNZXNzYWdlQ2FsbGJhY2tLSFIoQ2FsbGJhY2ssICZtZXNzYWdlcyk7CisgICAgZ2xFbmFibGUo
R0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTKTsKKworICAgIEFTU0VSVF9FUSgwdSwgbWVzc2Fn
ZXMuc2l6ZSgpKTsKK30KKworLy8gVGVzdCBhIGJhc2ljIGZsb3cgb2YgaW5zZXJ0aW5nIGEgbWVz
c2FnZSBhbmQgcmVhZGluZyBpdCBiYWNrCitURVNUX1AoRGVidWdUZXN0LCBJbnNlcnRNZXNzYWdl
KQoreworICAgIGlmICghbURlYnVnRXh0ZW5zaW9uQXZhaWxhYmxlKQorICAgIHsKKyAgICAgICAg
c3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBHTF9LSFJfZGVidWcgaXMgbm90IGF2
YWlsYWJsZS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNv
bnN0IEdMZW51bSBzb3VyY2UgICAgICAgPSBHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT047Cisg
ICAgY29uc3QgR0xlbnVtIHR5cGUgICAgICAgICA9IEdMX0RFQlVHX1RZUEVfT1RIRVI7CisgICAg
Y29uc3QgR0x1aW50IGlkICAgICAgICAgICA9IDE7CisgICAgY29uc3QgR0xlbnVtIHNldmVyaXR5
ICAgICA9IEdMX0RFQlVHX1NFVkVSSVRZX05PVElGSUNBVElPTjsKKyAgICBjb25zdCBzdGQ6OnN0
cmluZyBtZXNzYWdlID0gIk1lc3NhZ2UiOworCisgICAgZ2xEZWJ1Z01lc3NhZ2VJbnNlcnRLSFIo
c291cmNlLCB0eXBlLCBpZCwgc2V2ZXJpdHksIC0xLCBtZXNzYWdlLmNfc3RyKCkpOworCisgICAg
R0xpbnQgbnVtTWVzc2FnZXMgPSAwOworICAgIGdsR2V0SW50ZWdlcnYoR0xfREVCVUdfTE9HR0VE
X01FU1NBR0VTLCAmbnVtTWVzc2FnZXMpOworICAgIEFTU0VSVF9FUSgxLCBudW1NZXNzYWdlcyk7
CisKKyAgICBHTGludCBtZXNzYWdlTGVuZ3RoID0gMDsKKyAgICBnbEdldEludGVnZXJ2KEdMX0RF
QlVHX05FWFRfTE9HR0VEX01FU1NBR0VfTEVOR1RILCAmbWVzc2FnZUxlbmd0aCk7CisgICAgRVhQ
RUNUX0VRKHN0YXRpY19jYXN0PEdMaW50PihtZXNzYWdlLmxlbmd0aCgpKSwgbWVzc2FnZUxlbmd0
aCk7CisKKyAgICBHTGVudW0gc291cmNlQnVmICAgPSAwOworICAgIEdMZW51bSB0eXBlQnVmICAg
ICA9IDA7CisgICAgR0xlbnVtIGlkQnVmICAgICAgID0gMDsKKyAgICBHTGVudW0gc2V2ZXJpdHlC
dWYgPSAwOworICAgIEdMc2l6ZWkgbGVuZ3RoQnVmID0gMDsKKyAgICBzdGQ6OnZlY3RvcjxjaGFy
PiBtZXNzYWdlQnVmKG1lc3NhZ2VMZW5ndGggKyAxKTsKKyAgICBHTHVpbnQgcmV0ID0KKyAgICAg
ICAgZ2xHZXREZWJ1Z01lc3NhZ2VMb2dLSFIoMSwgc3RhdGljX2Nhc3Q8R0xzaXplaT4obWVzc2Fn
ZUJ1Zi5zaXplKCkpLCAmc291cmNlQnVmLCAmdHlwZUJ1ZiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJmlkQnVmLCAmc2V2ZXJpdHlCdWYsICZsZW5ndGhCdWYsIG1lc3NhZ2VCdWYu
ZGF0YSgpKTsKKyAgICBFWFBFQ1RfRVEoMXUsIHJldCk7CisgICAgRVhQRUNUX0VRKHNvdXJjZSwg
c291cmNlQnVmKTsKKyAgICBFWFBFQ1RfRVEodHlwZSwgdHlwZUJ1Zik7CisgICAgRVhQRUNUX0VR
KGlkLCBpZEJ1Zik7CisgICAgRVhQRUNUX0VRKHNldmVyaXR5LCBzZXZlcml0eUJ1Zik7CisgICAg
RVhQRUNUX0VRKGxlbmd0aEJ1ZiwgbWVzc2FnZUxlbmd0aCk7CisgICAgRVhQRUNUX1NUUkVRKG1l
c3NhZ2UuY19zdHIoKSwgbWVzc2FnZUJ1Zi5kYXRhKCkpOworCisgICAgZ2xHZXRJbnRlZ2VydihH
TF9ERUJVR19MT0dHRURfTUVTU0FHRVMsICZudW1NZXNzYWdlcyk7CisgICAgRVhQRUNUX0VRKDAs
IG51bU1lc3NhZ2VzKTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworfQorCisvLyBUZXN0
IGluc2VydGluZyBtdWx0aXBsZSBtZXNzYWdlcworVEVTVF9QKERlYnVnVGVzdCwgSW5zZXJ0TWVz
c2FnZU11bHRpcGxlKQoreworICAgIGlmICghbURlYnVnRXh0ZW5zaW9uQXZhaWxhYmxlKQorICAg
IHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBHTF9LSFJfZGVi
dWcgaXMgbm90IGF2YWlsYWJsZS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGNvbnN0IEdMZW51bSBzb3VyY2UgICAgICAgICAgPSBHTF9ERUJVR19TT1VSQ0Vf
QVBQTElDQVRJT047CisgICAgY29uc3QgR0xlbnVtIHR5cGUgICAgICAgICAgICA9IEdMX0RFQlVH
X1RZUEVfT1RIRVI7CisgICAgY29uc3QgR0x1aW50IHN0YXJ0SUQgICAgICAgICA9IDE7CisgICAg
Y29uc3QgR0xlbnVtIHNldmVyaXR5ICAgICAgICA9IEdMX0RFQlVHX1NFVkVSSVRZX05PVElGSUNB
VElPTjsKKyAgICBjb25zdCBjaGFyIG1lc3NhZ2VSZXBlYXRDaGFyID0gJ20nOworICAgIGNvbnN0
IHNpemVfdCBtZXNzYWdlQ291bnQgICAgPSAzMjsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbWVzc2FnZUNvdW50OyBpKyspCisgICAgeworICAgICAgICBzdGQ6OnN0cmluZyBtZXNzYWdl
KGkgKyAxLCBtZXNzYWdlUmVwZWF0Q2hhcik7CisgICAgICAgIGdsRGVidWdNZXNzYWdlSW5zZXJ0
S0hSKHNvdXJjZSwgdHlwZSwgc3RhcnRJRCArIHN0YXRpY19jYXN0PEdMdWludD4oaSksIHNldmVy
aXR5LCAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS5jX3N0cigp
KTsKKyAgICB9CisKKyAgICBHTGludCBudW1NZXNzYWdlcyA9IDA7CisgICAgZ2xHZXRJbnRlZ2Vy
dihHTF9ERUJVR19MT0dHRURfTUVTU0FHRVMsICZudW1NZXNzYWdlcyk7CisgICAgQVNTRVJUX0VR
KHN0YXRpY19jYXN0PEdMaW50PihtZXNzYWdlQ291bnQpLCBudW1NZXNzYWdlcyk7CisKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1lc3NhZ2VDb3VudDsgaSsrKQorICAgIHsKKyAgICAgICAg
Z2xHZXRJbnRlZ2VydihHTF9ERUJVR19MT0dHRURfTUVTU0FHRVMsICZudW1NZXNzYWdlcyk7Cisg
ICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxHTGludD4obWVzc2FnZUNvdW50IC0gaSksIG51
bU1lc3NhZ2VzKTsKKworICAgICAgICBzdGQ6OnN0cmluZyBleHBlY3RlZE1lc3NhZ2UoaSArIDEs
IG1lc3NhZ2VSZXBlYXRDaGFyKTsKKworICAgICAgICBHTGludCBtZXNzYWdlTGVuZ3RoID0gMDsK
KyAgICAgICAgZ2xHZXRJbnRlZ2VydihHTF9ERUJVR19ORVhUX0xPR0dFRF9NRVNTQUdFX0xFTkdU
SCwgJm1lc3NhZ2VMZW5ndGgpOworICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8R0xpbnQ+
KGV4cGVjdGVkTWVzc2FnZS5sZW5ndGgoKSksIG1lc3NhZ2VMZW5ndGgpOworCisgICAgICAgIEdM
ZW51bSBzb3VyY2VCdWYgICA9IDA7CisgICAgICAgIEdMZW51bSB0eXBlQnVmICAgICA9IDA7Cisg
ICAgICAgIEdMZW51bSBpZEJ1ZiAgICAgICA9IDA7CisgICAgICAgIEdMZW51bSBzZXZlcml0eUJ1
ZiA9IDA7CisgICAgICAgIEdMc2l6ZWkgbGVuZ3RoQnVmID0gMDsKKyAgICAgICAgc3RkOjp2ZWN0
b3I8Y2hhcj4gbWVzc2FnZUJ1ZihtZXNzYWdlTGVuZ3RoICsgMSk7CisgICAgICAgIEdMdWludCBy
ZXQgPQorICAgICAgICAgICAgZ2xHZXREZWJ1Z01lc3NhZ2VMb2dLSFIoMSwgc3RhdGljX2Nhc3Q8
R0xzaXplaT4obWVzc2FnZUJ1Zi5zaXplKCkpLCAmc291cmNlQnVmLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJnR5cGVCdWYsICZpZEJ1ZiwgJnNldmVyaXR5QnVmLCAmbGVu
Z3RoQnVmLCBtZXNzYWdlQnVmLmRhdGEoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgcmV0KTsK
KyAgICAgICAgRVhQRUNUX0VRKHNvdXJjZSwgc291cmNlQnVmKTsKKyAgICAgICAgRVhQRUNUX0VR
KHR5cGUsIHR5cGVCdWYpOworICAgICAgICBFWFBFQ1RfRVEoc3RhcnRJRCArIGksIGlkQnVmKTsK
KyAgICAgICAgRVhQRUNUX0VRKHNldmVyaXR5LCBzZXZlcml0eUJ1Zik7CisgICAgICAgIEVYUEVD
VF9FUShsZW5ndGhCdWYsIG1lc3NhZ2VMZW5ndGgpOworICAgICAgICBFWFBFQ1RfU1RSRVEoZXhw
ZWN0ZWRNZXNzYWdlLmNfc3RyKCksIG1lc3NhZ2VCdWYuZGF0YSgpKTsKKyAgICB9CisKKyAgICBn
bEdldEludGVnZXJ2KEdMX0RFQlVHX0xPR0dFRF9NRVNTQUdFUywgJm51bU1lc3NhZ2VzKTsKKyAg
ICBFWFBFQ1RfRVEoMCwgbnVtTWVzc2FnZXMpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
Cit9CisKKy8vIFRlc3QgdXNpbmcgYSBkZWJ1ZyBjYWxsYmFjaworVEVTVF9QKERlYnVnVGVzdCwg
RGVidWdDYWxsYmFjaykKK3sKKyAgICBpZiAoIW1EZWJ1Z0V4dGVuc2lvbkF2YWlsYWJsZSkKKyAg
ICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgR0xfS0hSX2Rl
YnVnIGlzIG5vdCBhdmFpbGFibGUuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBzdGQ6OnZlY3RvcjxNZXNzYWdlPiBtZXNzYWdlczsKKworICAgIGdsRGVidWdN
ZXNzYWdlQ2FsbGJhY2tLSFIoQ2FsbGJhY2ssICZtZXNzYWdlcyk7CisgICAgZ2xFbmFibGUoR0xf
REVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTKTsKKworICAgIGNvbnN0IEdMZW51bSBzb3VyY2UgICAg
ICAgPSBHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT047CisgICAgY29uc3QgR0xlbnVtIHR5cGUg
ICAgICAgICA9IEdMX0RFQlVHX1RZUEVfT1RIRVI7CisgICAgY29uc3QgR0x1aW50IGlkICAgICAg
ICAgICA9IDE7CisgICAgY29uc3QgR0xlbnVtIHNldmVyaXR5ICAgICA9IEdMX0RFQlVHX1NFVkVS
SVRZX05PVElGSUNBVElPTjsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBtZXNzYWdlID0gIk1lc3Nh
Z2UiOworCisgICAgZ2xEZWJ1Z01lc3NhZ2VJbnNlcnRLSFIoc291cmNlLCB0eXBlLCBpZCwgc2V2
ZXJpdHksIC0xLCBtZXNzYWdlLmNfc3RyKCkpOworCisgICAgR0xpbnQgbnVtTWVzc2FnZXMgPSAw
OworICAgIGdsR2V0SW50ZWdlcnYoR0xfREVCVUdfTE9HR0VEX01FU1NBR0VTLCAmbnVtTWVzc2Fn
ZXMpOworICAgIEVYUEVDVF9FUSgwLCBudW1NZXNzYWdlcyk7CisKKyAgICBBU1NFUlRfRVEoMXUs
IG1lc3NhZ2VzLnNpemUoKSk7CisKKyAgICBjb25zdCBNZXNzYWdlICZtID0gbWVzc2FnZXMuZnJv
bnQoKTsKKyAgICBFWFBFQ1RfRVEoc291cmNlLCBtLnNvdXJjZSk7CisgICAgRVhQRUNUX0VRKHR5
cGUsIG0udHlwZSk7CisgICAgRVhQRUNUX0VRKGlkLCBtLmlkKTsKKyAgICBFWFBFQ1RfRVEoc2V2
ZXJpdHksIG0uc2V2ZXJpdHkpOworICAgIEVYUEVDVF9FUShtZXNzYWdlLCBtLm1lc3NhZ2UpOwor
CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFRlc3QgdGhlIGdsR2V0UG9pbnRl
cnZLSFIgZW50cnkgcG9pbnQKK1RFU1RfUChEZWJ1Z1Rlc3QsIEdldFBvaW50ZXIpCit7CisgICAg
aWYgKCFtRGVidWdFeHRlbnNpb25BdmFpbGFibGUpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQg
PDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEdMX0tIUl9kZWJ1ZyBpcyBub3QgYXZhaWxhYmxlLiIg
PDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RkOjp2ZWN0b3I8
TWVzc2FnZT4gbWVzc2FnZXM7CisKKyAgICBnbERlYnVnTWVzc2FnZUNhbGxiYWNrS0hSKENhbGxi
YWNrLCAmbWVzc2FnZXMpOworCisgICAgdm9pZCAqY2FsbGJhY2sgPSBudWxscHRyOworICAgIGds
R2V0UG9pbnRlcnZLSFIoR0xfREVCVUdfQ0FMTEJBQ0tfRlVOQ1RJT04sICZjYWxsYmFjayk7Cisg
ICAgRVhQRUNUX0VRKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqPihDYWxsYmFjayksIGNhbGxiYWNr
KTsKKworICAgIHZvaWQgKnVzZXJEYXRhID0gbnVsbHB0cjsKKyAgICBnbEdldFBvaW50ZXJ2S0hS
KEdMX0RFQlVHX0NBTExCQUNLX1VTRVJfUEFSQU0sICZ1c2VyRGF0YSk7CisgICAgRVhQRUNUX0VR
KHN0YXRpY19jYXN0PHZvaWQgKj4oJm1lc3NhZ2VzKSwgdXNlckRhdGEpOworfQorCisvLyBUZXN0
IHVzYWdlIG9mIG1lc3NhZ2UgY29udHJvbC4gIEV4YW1wbGUgdGFrZW4gZnJvbSBHTF9LSFJfZGVi
dWcgc3BlYy4KK1RFU1RfUChEZWJ1Z1Rlc3QsIE1lc3NhZ2VDb250cm9sMSkKK3sKKyAgICBpZiAo
IW1EZWJ1Z0V4dGVuc2lvbkF2YWlsYWJsZSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAi
VGVzdCBza2lwcGVkIGJlY2F1c2UgR0xfS0hSX2RlYnVnIGlzIG5vdCBhdmFpbGFibGUuIiA8PCBz
dGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdGQ6OnZlY3RvcjxNZXNz
YWdlPiBtZXNzYWdlczsKKworICAgIGdsRGVidWdNZXNzYWdlQ2FsbGJhY2tLSFIoQ2FsbGJhY2ss
ICZtZXNzYWdlcyk7CisgICAgZ2xFbmFibGUoR0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTKTsK
KworICAgIC8vIFNldHVwIG9mIHRoZSBkZWZhdWx0IGFjdGl2ZSBkZWJ1ZyBncm91cDogRmlsdGVy
IGV2ZXJ5dGhpbmcgaW4KKyAgICBnbERlYnVnTWVzc2FnZUNvbnRyb2xLSFIoR0xfRE9OVF9DQVJF
LCBHTF9ET05UX0NBUkUsIEdMX0RPTlRfQ0FSRSwgMCwgTlVMTCwgR0xfVFJVRSk7CisKKyAgICAv
LyBHZW5lcmF0ZSBhIGRlYnVnIG1hcmtlciBkZWJ1ZyBvdXRwdXQgbWVzc2FnZQorICAgIGdsRGVi
dWdNZXNzYWdlSW5zZXJ0S0hSKEdMX0RFQlVHX1NPVVJDRV9BUFBMSUNBVElPTiwgR0xfREVCVUdf
VFlQRV9NQVJLRVIsIDEwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9ERUJVR19T
RVZFUklUWV9OT1RJRklDQVRJT04sIC0xLCAiTWVzc2FnZSAxIik7CisKKyAgICAvLyBQdXNoIGRl
YnVnIGdyb3VwIDEKKyAgICBnbFB1c2hEZWJ1Z0dyb3VwS0hSKEdMX0RFQlVHX1NPVVJDRV9BUFBM
SUNBVElPTiwgMSwgLTEsICJNZXNzYWdlIDIiKTsKKworICAgIC8vIFNldHVwIG9mIHRoZSBkZWJ1
ZyBncm91cCAxOiBGaWx0ZXIgZXZlcnl0aGluZyBvdXQKKyAgICBnbERlYnVnTWVzc2FnZUNvbnRy
b2xLSFIoR0xfRE9OVF9DQVJFLCBHTF9ET05UX0NBUkUsIEdMX0RPTlRfQ0FSRSwgMCwgTlVMTCwg
R0xfRkFMU0UpOworCisgICAgLy8gVGhpcyBtZXNzYWdlIHdvbid0IGFwcGVhciBpbiB0aGUgZGVi
dWcgb3V0cHV0IGxvZyBvZgorICAgIGdsRGVidWdNZXNzYWdlSW5zZXJ0S0hSKEdMX0RFQlVHX1NP
VVJDRV9BUFBMSUNBVElPTiwgR0xfREVCVUdfVFlQRV9NQVJLRVIsIDEwMCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9ERUJVR19TRVZFUklUWV9OT1RJRklDQVRJT04sIC0xLCAiTWVz
c2FnZSAzIik7CisKKyAgICAvLyBQb3AgZGVidWcgZ3JvdXAgMSwgcmVzdG9yZSB0aGUgdm9sdW1l
IGNvbnRyb2wgb2YgdGhlIGRlZmF1bHQgZGVidWcgZ3JvdXAuCisgICAgZ2xQb3BEZWJ1Z0dyb3Vw
S0hSKCk7CisKKyAgICAvLyBHZW5lcmF0ZSBhIGRlYnVnIG1hcmtlciBkZWJ1ZyBvdXRwdXQgbWVz
c2FnZQorICAgIGdsRGVidWdNZXNzYWdlSW5zZXJ0S0hSKEdMX0RFQlVHX1NPVVJDRV9BUFBMSUNB
VElPTiwgR0xfREVCVUdfVFlQRV9NQVJLRVIsIDEwMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9ERUJVR19TRVZFUklUWV9OT1RJRklDQVRJT04sIC0xLCAiTWVzc2FnZSA1Iik7CisK
KyAgICAvLyBFeHBlY3RlZCBkZWJ1ZyBvdXRwdXQgZnJvbSB0aGUgR0wgaW1wbGVtZW50YXRpb24K
KyAgICAvLyBNZXNzYWdlIDEKKyAgICAvLyBNZXNzYWdlIDIKKyAgICAvLyBNZXNzYWdlIDIKKyAg
ICAvLyBNZXNzYWdlIDUKKyAgICBFWFBFQ1RfRVEoNHUsIG1lc3NhZ2VzLnNpemUoKSk7CisgICAg
RVhQRUNUX1NUUkVRKG1lc3NhZ2VzWzBdLm1lc3NhZ2UuY19zdHIoKSwgIk1lc3NhZ2UgMSIpOwor
ICAgIEVYUEVDVF9TVFJFUShtZXNzYWdlc1sxXS5tZXNzYWdlLmNfc3RyKCksICJNZXNzYWdlIDIi
KTsKKyAgICBFWFBFQ1RfU1RSRVEobWVzc2FnZXNbMl0ubWVzc2FnZS5jX3N0cigpLCAiTWVzc2Fn
ZSAyIik7CisgICAgRVhQRUNUX1NUUkVRKG1lc3NhZ2VzWzNdLm1lc3NhZ2UuY19zdHIoKSwgIk1l
c3NhZ2UgNSIpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFRlc3QgdXNh
Z2Ugb2YgbWVzc2FnZSBjb250cm9sLiAgRXhhbXBsZSB0YWtlbiBmcm9tIEdMX0tIUl9kZWJ1ZyBz
cGVjLgorVEVTVF9QKERlYnVnVGVzdCwgTWVzc2FnZUNvbnRyb2wyKQoreworICAgIGlmICghbURl
YnVnRXh0ZW5zaW9uQXZhaWxhYmxlKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0
IHNraXBwZWQgYmVjYXVzZSBHTF9LSFJfZGVidWcgaXMgbm90IGF2YWlsYWJsZS4iIDw8IHN0ZDo6
ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0ZDo6dmVjdG9yPE1lc3NhZ2U+
IG1lc3NhZ2VzOworCisgICAgZ2xEZWJ1Z01lc3NhZ2VDYWxsYmFja0tIUihDYWxsYmFjaywgJm1l
c3NhZ2VzKTsKKyAgICBnbEVuYWJsZShHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVMpOworCisg
ICAgLy8gU2V0dXAgdGhlIGNvbnRyb2wgb2YgZGUgZGVidWcgb3V0cHV0IGZvciB0aGUgZGVmYXVs
dCBkZWJ1ZyBncm91cAorICAgIGdsRGVidWdNZXNzYWdlQ29udHJvbEtIUihHTF9ET05UX0NBUkUs
IEdMX0RPTlRfQ0FSRSwgR0xfRE9OVF9DQVJFLCAwLCBOVUxMLCBHTF9GQUxTRSk7CisgICAgZ2xE
ZWJ1Z01lc3NhZ2VDb250cm9sS0hSKEdMX0RFQlVHX1NPVVJDRV9USElSRF9QQVJUWSwgR0xfRE9O
VF9DQVJFLCBHTF9ET05UX0NBUkUsIDAsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX0ZBTFNFKTsKKyAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IGlkczAgPSB7MTIzNCwgMjM0
NSwgMzQ1NiwgNDU2N307CisgICAgZ2xEZWJ1Z01lc3NhZ2VDb250cm9sS0hSKEdMX0RFQlVHX1NP
VVJDRV9BUFBMSUNBVElPTiwgR0xfREVCVUdfVFlQRV9PVEhFUiwgR0xfRE9OVF9DQVJFLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+KGlkczAuc2l6ZSgp
KSwgaWRzMC5kYXRhKCksIEdMX0ZBTFNFKTsKKyAgICBnbERlYnVnTWVzc2FnZUNvbnRyb2xLSFIo
R0xfREVCVUdfU09VUkNFX0FQUExJQ0FUSU9OLCBHTF9ERUJVR19UWVBFX1BPUlRBQklMSVRZLCBH
TF9ET05UX0NBUkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdM
dWludD4oaWRzMC5zaXplKCkpLCBpZHMwLmRhdGEoKSwgR0xfRkFMU0UpOworCisgICAgLy8gUHVz
aCBkZWJ1ZyBncm91cCAxCisgICAgLy8gSW5oZXJpdCBvZiB0aGUgZGVmYXVsdCBkZWJ1ZyBncm91
cCBkZWJ1ZyBvdXRwdXQgdm9sdW1lIGNvbnRyb2wKKyAgICAvLyBGaWx0ZXJlZCBvdXQgYnkgZ2xE
ZWJ1Z01lc3NhZ2VDb250cm9sCisgICAgZ2xQdXNoRGVidWdHcm91cEtIUihHTF9ERUJVR19TT1VS
Q0VfQVBQTElDQVRJT04sIDEsIC0xLCAiTWVzc2FnZSAxIik7CisKKyAgICAvLyBJbiB0aGlzIHNl
Y3Rpb24gb2YgdGhlIGNvZGUsIHdlIGFyZSBpbnRlcmVzdGVkIGluIHBlcmZvcm1hbmNlcy4KKyAg
ICBnbERlYnVnTWVzc2FnZUNvbnRyb2xLSFIoR0xfREVCVUdfU09VUkNFX0FQUExJQ0FUSU9OLCBH
TF9ERUJVR19UWVBFX1BFUkZPUk1BTkNFLCBHTF9ET05UX0NBUkUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAsIE5VTEwsIEdMX1RSVUUpOworICAgIC8vIEJ1dCB3ZSBhbHJlYWR5IGlk
ZW50aWZ5IHRoYXQgc29tZSBtZXNzYWdlcyBhcmUgbm90IHJlYWxseSB1c2VmdWwgZm9yIHVzLgor
ICAgIHN0ZDo6dmVjdG9yPEdMdWludD4gaWRzMSA9IHs1Njc4LCA2Nzg5fTsKKyAgICBnbERlYnVn
TWVzc2FnZUNvbnRyb2xLSFIoR0xfREVCVUdfU09VUkNFX0FQUExJQ0FUSU9OLCBHTF9ERUJVR19U
WVBFX09USEVSLCBHTF9ET05UX0NBUkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PEdMdWludD4oaWRzMS5zaXplKCkpLCBpZHMxLmRhdGEoKSwgR0xfRkFMU0UpOwor
CisgICAgZ2xEZWJ1Z01lc3NhZ2VJbnNlcnRLSFIoR0xfREVCVUdfU09VUkNFX0FQUExJQ0FUSU9O
LCBHTF9ERUJVR19UWVBFX1BFUkZPUk1BTkNFLCAxMzU3LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX0RFQlVHX1NFVkVSSVRZX01FRElVTSwgLTEsICJNZXNzYWdlIDIiKTsKKyAgICBn
bERlYnVnTWVzc2FnZUluc2VydEtIUihHTF9ERUJVR19TT1VSQ0VfVEhJUkRfUEFSVFksICAvLyBX
ZSBzdGlsbCBmaWx0ZXIgb3V0IHRoZXNlIG1lc3NhZ2VzLgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX0RFQlVHX1RZUEVfT1RIRVIsIDM1NzksIEdMX0RFQlVHX1NFVkVSSVRZX01FRElV
TSwgLTEsICJNZXNzYWdlIDMiKTsKKworICAgIGdsUG9wRGVidWdHcm91cEtIUigpOworCisgICAg
Ly8gRXhwZWN0ZWQgZGVidWcgb3V0cHV0IGZyb20gdGhlIEdMIGltcGxlbWVudGF0aW9uCisgICAg
Ly8gTWVzc2FnZSAyCisgICAgRVhQRUNUX0VRKDF1LCBtZXNzYWdlcy5zaXplKCkpOworICAgIEVY
UEVDVF9TVFJFUShtZXNzYWdlc1swXS5tZXNzYWdlLmNfc3RyKCksICJNZXNzYWdlIDIiKTsKKwor
ICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworfQorCisvLyBUZXN0IGJhc2ljIHVzYWdlIG9mIHNl
dHRpbmcgYW5kIGdldHRpbmcgbGFiZWxzCitURVNUX1AoRGVidWdUZXN0LCBPYmplY3RMYWJlbHMp
Cit7CisgICAgaWYgKCFtRGVidWdFeHRlbnNpb25BdmFpbGFibGUpCisgICAgeworICAgICAgICBz
dGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEdMX0tIUl9kZWJ1ZyBpcyBub3QgYXZh
aWxhYmxlLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR0x1
aW50IHJlbmRlcmJ1ZmZlciA9IDA7CisgICAgZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZyZW5kZXJi
dWZmZXIpOworICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIHJlbmRlcmJ1
ZmZlcik7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmbGFiZWwgPSAicmVuZGVyYnVmZmVyIjsK
KyAgICBnbE9iamVjdExhYmVsS0hSKEdMX1JFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyLCAtMSwg
bGFiZWwuY19zdHIoKSk7CisKKyAgICBzdGQ6OnZlY3RvcjxjaGFyPiBsYWJlbEJ1ZihsYWJlbC5s
ZW5ndGgoKSArIDEpOworICAgIEdMc2l6ZWkgbGFiZWxMZW5ndGhCdWYgPSAwOworICAgIGdsR2V0
T2JqZWN0TGFiZWxLSFIoR0xfUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIsIHN0YXRpY19jYXN0
PEdMc2l6ZWk+KGxhYmVsQnVmLnNpemUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAmbGFi
ZWxMZW5ndGhCdWYsIGxhYmVsQnVmLmRhdGEoKSk7CisKKyAgICBFWFBFQ1RfRVEoc3RhdGljX2Nh
c3Q8R0xzaXplaT4obGFiZWwubGVuZ3RoKCkpLCBsYWJlbExlbmd0aEJ1Zik7CisgICAgRVhQRUNU
X1NUUkVRKGxhYmVsLmNfc3RyKCksIGxhYmVsQnVmLmRhdGEoKSk7CisKKyAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKKworICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmcmVuZGVyYnVmZmVy
KTsKKworICAgIGdsT2JqZWN0TGFiZWxLSFIoR0xfUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIs
IC0xLCBsYWJlbC5jX3N0cigpKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxV
RSk7CisKKyAgICBnbEdldE9iamVjdExhYmVsS0hSKEdMX1JFTkRFUkJVRkZFUiwgcmVuZGVyYnVm
ZmVyLCBzdGF0aWNfY2FzdDxHTHNpemVpPihsYWJlbEJ1Zi5zaXplKCkpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgJmxhYmVsTGVuZ3RoQnVmLCBsYWJlbEJ1Zi5kYXRhKCkpOworICAgIEVYUEVD
VF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKK30KKworLy8gVGVzdCBiYXNpYyB1c2FnZSBv
ZiBzZXR0aW5nIGFuZCBnZXR0aW5nIGxhYmVscworVEVTVF9QKERlYnVnVGVzdCwgT2JqZWN0UHRy
TGFiZWxzKQoreworICAgIGlmICghbURlYnVnRXh0ZW5zaW9uQXZhaWxhYmxlIHx8IGdldENsaWVu
dE1ham9yVmVyc2lvbigpIDwgMykKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBz
a2lwcGVkIGJlY2F1c2UgR0xfS0hSX2RlYnVnIG9yIEVTMyBpcyBub3QgYXZhaWxhYmxlLiIgPDwg
c3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR0xzeW5jIHN5bmMgPSBn
bEZlbmNlU3luYyhHTF9TWU5DX0dQVV9DT01NQU5EU19DT01QTEVURSwgMCk7CisKKyAgICBjb25z
dCBzdGQ6OnN0cmluZyAmbGFiZWwgPSAic3luYyI7CisgICAgZ2xPYmplY3RQdHJMYWJlbEtIUihz
eW5jLCAtMSwgbGFiZWwuY19zdHIoKSk7CisKKyAgICBzdGQ6OnZlY3RvcjxjaGFyPiBsYWJlbEJ1
ZihsYWJlbC5sZW5ndGgoKSArIDEpOworICAgIEdMc2l6ZWkgbGFiZWxMZW5ndGhCdWYgPSAwOwor
ICAgIGdsR2V0T2JqZWN0UHRyTGFiZWxLSFIoc3luYywgc3RhdGljX2Nhc3Q8R0xzaXplaT4obGFi
ZWxCdWYuc2l6ZSgpKSwgJmxhYmVsTGVuZ3RoQnVmLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGFiZWxCdWYuZGF0YSgpKTsKKworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxHTHNpemVp
PihsYWJlbC5sZW5ndGgoKSksIGxhYmVsTGVuZ3RoQnVmKTsKKyAgICBFWFBFQ1RfU1RSRVEobGFi
ZWwuY19zdHIoKSwgbGFiZWxCdWYuZGF0YSgpKTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigp
OworCisgICAgZ2xEZWxldGVTeW5jKHN5bmMpOworCisgICAgZ2xPYmplY3RQdHJMYWJlbEtIUihz
eW5jLCAtMSwgbGFiZWwuY19zdHIoKSk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURf
VkFMVUUpOworCisgICAgZ2xHZXRPYmplY3RQdHJMYWJlbEtIUihzeW5jLCBzdGF0aWNfY2FzdDxH
THNpemVpPihsYWJlbEJ1Zi5zaXplKCkpLCAmbGFiZWxMZW5ndGhCdWYsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsYWJlbEJ1Zi5kYXRhKCkpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9J
TlZBTElEX1ZBTFVFKTsKK30KKworLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3Vy
YXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRo
ZXNlCisvLyB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCitBTkdMRV9JTlNUQU5USUFURV9U
RVNUKERlYnVnVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVT
M19EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCisgICAgICAg
ICAgICAgICAgICAgICAgIEVTM19PUEVOR0woKSk7CisKK30gIC8vIG5hbWVzcGFjZSBhbmdsZQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0RlcHRoU3Rl
bmNpbEZvcm1hdHNUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvZ2xfdGVzdHMvRGVwdGhTdGVuY2lsRm9ybWF0c1Rlc3QuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9EZXB0
aFN0ZW5jaWxGb3JtYXRzVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOTIgQEAK
Ky8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vCisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorCit1c2luZyBu
YW1lc3BhY2UgYW5nbGU7CisKK2NsYXNzIERlcHRoU3RlbmNpbEZvcm1hdHNUZXN0QmFzZSA6IHB1
YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIERlcHRoU3RlbmNpbEZvcm1hdHNU
ZXN0QmFzZSgpCisgICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOworICAgICAgICBz
ZXRXaW5kb3dIZWlnaHQoMTI4KTsKKyAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKKyAgICAg
ICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsK
KyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAgIH0KKworICAgIGJvb2wgY2hlY2tU
ZXhJbWFnZUZvcm1hdFN1cHBvcnQoR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUpCisgICAgewor
ICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgICAgICBHTHVpbnQgdGV4ID0gMDsK
KyAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4KTsKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShH
TF9URVhUVVJFXzJELCB0ZXgpOworICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwg
MCwgZm9ybWF0LCAxLCAxLCAwLCBmb3JtYXQsIHR5cGUsIE5VTEwpOworICAgICAgICBnbERlbGV0
ZVRleHR1cmVzKDEsICZ0ZXgpOworCisgICAgICAgIHJldHVybiAoZ2xHZXRFcnJvcigpID09IEdM
X05PX0VSUk9SKTsKKyAgICB9CisKKyAgICBib29sIGNoZWNrVGV4U3RvcmFnZUZvcm1hdFN1cHBv
cnQoR0xlbnVtIGludGVybmFsRm9ybWF0KQorICAgIHsKKyAgICAgICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7CisKKyAgICAgICAgR0x1aW50IHRleCA9IDA7CisgICAgICAgIGdsR2VuVGV4dHVyZXMo
MSwgJnRleCk7CisgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4KTsKKyAg
ICAgICAgZ2xUZXhTdG9yYWdlMkRFWFQoR0xfVEVYVFVSRV8yRCwgMSwgaW50ZXJuYWxGb3JtYXQs
IDEsIDEpOworICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0ZXgpOworCisgICAgICAgIHJl
dHVybiAoZ2xHZXRFcnJvcigpID09IEdMX05PX0VSUk9SKTsKKyAgICB9CisKKyAgICBib29sIGNo
ZWNrUmVuZGVyYnVmZmVyRm9ybWF0U3VwcG9ydChHTGVudW0gaW50ZXJuYWxGb3JtYXQpCisgICAg
eworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgICAgICBHTHVpbnQgcmIgPSAw
OworICAgICAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJnJiKTsKKyAgICAgICAgZ2xCaW5kUmVu
ZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgcmIpOworICAgICAgICBnbFJlbmRlcmJ1ZmZlclN0
b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBpbnRlcm5hbEZvcm1hdCwgMSwgMSk7CisgICAgICAgIGds
RGVsZXRlUmVuZGVyYnVmZmVycygxLCAmcmIpOworCisgICAgICAgIHJldHVybiAoZ2xHZXRFcnJv
cigpID09IEdMX05PX0VSUk9SKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQor
ICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOworCisgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKAorICAg
ICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworICAgICAgICAgICAgYXR0cmlidXRlIHZl
YzQgcG9zaXRpb247CisgICAgICAgICAgICB2YXJ5aW5nIHZlYzIgdGV4Y29vcmQ7CisKKyAgICAg
ICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xfUG9z
aXRpb24gPSBwb3NpdGlvbjsKKyAgICAgICAgICAgICAgICB0ZXhjb29yZCA9IChwb3NpdGlvbi54
eSAqIDAuNSkgKyAwLjU7CisgICAgICAgICAgICB9CisgICAgICAgICk7CisKKyAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAg
ICAgICgKKyAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKKyAgICAgICAgICAgIHVu
aWZvcm0gc2FtcGxlcjJEIHRleDsKKyAgICAgICAgICAgIHZhcnlpbmcgdmVjMiB0ZXhjb29yZDsK
KworICAgICAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQodGV4LCB0ZXhjb29yZCk7CisgICAgICAgICAgICB9
CisgICAgICAgICk7CisKKyAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhT
aGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKKyAgICAgICAgaWYgKG1Qcm9ncmFt
ID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIEZBSUwoKSA8PCAic2hhZGVyIGNvbXBpbGF0
aW9uIGZhaWxlZC4iOworICAgICAgICB9CisKKyAgICAgICAgbVRleHR1cmVVbmlmb3JtTG9jYXRp
b24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInRleCIpOworICAgICAgICBFWFBF
Q1RfTkUoLTEsIG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9uKTsKKworICAgICAgICBnbEdlblRleHR1
cmVzKDEsICZtVGV4dHVyZSk7CisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIH0K
KworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCisgICAgeworICAgICAgICBnbERlbGV0ZVBy
b2dyYW0obVByb2dyYW0pOworICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtVGV4dHVyZSk7
CisKKyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOworICAgIH0KKworICAgIEdMdWludCBt
UHJvZ3JhbTsKKyAgICBHTHVpbnQgbVRleHR1cmU7CisgICAgR0xpbnQgbVRleHR1cmVVbmlmb3Jt
TG9jYXRpb247Cit9OworCitjbGFzcyBEZXB0aFN0ZW5jaWxGb3JtYXRzVGVzdCA6IHB1YmxpYyBE
ZXB0aFN0ZW5jaWxGb3JtYXRzVGVzdEJhc2UKK3t9OworCitjbGFzcyBEZXB0aFN0ZW5jaWxGb3Jt
YXRzVGVzdEVTMyA6IHB1YmxpYyBEZXB0aFN0ZW5jaWxGb3JtYXRzVGVzdEJhc2UKK3t9OworCitU
RVNUX1AoRGVwdGhTdGVuY2lsRm9ybWF0c1Rlc3QsIERlcHRoVGV4dHVyZSkKK3sKKyAgICBib29s
IHNob3VsZEhhdmVUZXh0dXJlU3VwcG9ydCA9IGV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2Rl
cHRoX3RleHR1cmUiKTsKKyAgICBFWFBFQ1RfRVEoc2hvdWxkSGF2ZVRleHR1cmVTdXBwb3J0LCBj
aGVja1RleEltYWdlRm9ybWF0U3VwcG9ydChHTF9ERVBUSF9DT01QT05FTlQsIEdMX1VOU0lHTkVE
X1NIT1JUKSk7CisgICAgRVhQRUNUX0VRKHNob3VsZEhhdmVUZXh0dXJlU3VwcG9ydCwgY2hlY2tU
ZXhJbWFnZUZvcm1hdFN1cHBvcnQoR0xfREVQVEhfQ09NUE9ORU5ULCBHTF9VTlNJR05FRF9JTlQp
KTsKKworICAgIGlmIChleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9zdG9yYWdlIikp
CisgICAgeworICAgICAgICBFWFBFQ1RfRVEoc2hvdWxkSGF2ZVRleHR1cmVTdXBwb3J0LCBjaGVj
a1RleFN0b3JhZ2VGb3JtYXRTdXBwb3J0KEdMX0RFUFRIX0NPTVBPTkVOVDE2KSk7CisgICAgICAg
IEVYUEVDVF9FUShzaG91bGRIYXZlVGV4dHVyZVN1cHBvcnQsIGNoZWNrVGV4U3RvcmFnZUZvcm1h
dFN1cHBvcnQoR0xfREVQVEhfQ09NUE9ORU5UMzJfT0VTKSk7CisgICAgfQorfQorCitURVNUX1Ao
RGVwdGhTdGVuY2lsRm9ybWF0c1Rlc3QsIFBhY2tlZERlcHRoU3RlbmNpbCkKK3sKKyAgICAvLyBF
eHBlY3RlZCB0byBmYWlsIGluIEQzRDkgaWYgR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIGlz
IG5vdCBwcmVzZW50LgorICAgIC8vIEV4cGVjdGVkIHRvIGZhaWwgaW4gRDNEMTEgaWYgR0xfT0VT
X3BhY2tlZF9kZXB0aF9zdGVuY2lsIG9yIEdMX0FOR0xFX2RlcHRoX3RleHR1cmUgaXMgbm90IHBy
ZXNlbnQuCisKKyAgICBib29sIHNob3VsZEhhdmVSZW5kZXJidWZmZXJTdXBwb3J0ID0gZXh0ZW5z
aW9uRW5hYmxlZCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgRVhQRUNUX0VR
KHNob3VsZEhhdmVSZW5kZXJidWZmZXJTdXBwb3J0LCBjaGVja1JlbmRlcmJ1ZmZlckZvcm1hdFN1
cHBvcnQoR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVMpKTsKKworICAgIGJvb2wgc2hvdWxkSGF2ZVRl
eHR1cmVTdXBwb3J0ID0gZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVu
Y2lsIikgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbkVu
YWJsZWQoIkdMX0FOR0xFX2RlcHRoX3RleHR1cmUiKTsKKyAgICBFWFBFQ1RfRVEoc2hvdWxkSGF2
ZVRleHR1cmVTdXBwb3J0LCBjaGVja1RleEltYWdlRm9ybWF0U3VwcG9ydChHTF9ERVBUSF9TVEVO
Q0lMX09FUywgR0xfVU5TSUdORURfSU5UXzI0XzhfT0VTKSk7CisKKyAgICBpZiAoZXh0ZW5zaW9u
RW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfc3RvcmFnZSIpKQorICAgIHsKKyAgICAgICAgRVhQRUNU
X0VRKHNob3VsZEhhdmVUZXh0dXJlU3VwcG9ydCwgY2hlY2tUZXhTdG9yYWdlRm9ybWF0U3VwcG9y
dChHTF9ERVBUSDI0X1NURU5DSUw4X09FUykpOworICAgIH0KK30KKworVEVTVF9QKERlcHRoU3Rl
bmNpbEZvcm1hdHNUZXN0RVMzLCBEcmF3V2l0aERlcHRoU3RlbmNpbCkKK3sKKyAgICBHTHVzaG9y
dCBkYXRhWzE2XTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IDE2OyBpKyspCisg
ICAgeworICAgICAgICBkYXRhW2ldID0gc3RkOjpudW1lcmljX2xpbWl0czxHTHVzaG9ydD46Om1h
eCgpOworICAgIH0KKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlKTsK
KyAgICBnbFRleFN0b3JhZ2UyRChHTF9URVhUVVJFXzJELCAxLCBHTF9ERVBUSF9DT01QT05FTlQx
NiwgNCwgNCk7CisgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDQs
IDQsIEdMX0RFUFRIX0NPTVBPTkVOVCwgR0xfVU5TSUdORURfU0hPUlQsIGRhdGEpOworCisgICAg
Z2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xf
TkVBUkVTVCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
TUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisKKyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwor
ICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9uLCAwKTsKKworICAgIGdsQ2xl
YXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlv
biIsIDAuNWYpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBHTHVieXRlIHBp
eGVsWzRdOworICAgIGdsUmVhZFBpeGVscygwLCAwLCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05F
RF9CWVRFLCAmcGl4ZWwpOworCisgICAgLy8gT25seSByZXF1aXJlIHRoZSByZWQgYW5kIGFscGhh
IGNoYW5uZWxzIGhhdmUgdGhlIGNvcnJlY3QgdmFsdWVzLCB0aGUgZGVwdGggdGV4dHVyZSBleHRl
bnNpb25zCisgICAgLy8gbGVhdmUgdGhlIGdyZWVuIGFuZCBibHVlIGNoYW5uZWxzIHVuZGVmaW5l
ZAorICAgIEFTU0VSVF9ORUFSKDI1NSwgcGl4ZWxbMF0sIDIuMCk7CisgICAgQVNTRVJUX0VRKDI1
NSwgcGl4ZWxbM10pOworfQorCisvLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJh
dGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhl
c2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgorQU5HTEVfSU5TVEFOVElBVEVfVEVTVChE
ZXB0aFN0ZW5jaWxGb3JtYXRzVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDko
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCisgICAgICAgICAgICAgICAg
ICAgICAgIEVTMl9PUEVOR0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVT
KCkpOworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChEZXB0aFN0ZW5jaWxGb3JtYXRzVGVzdEVTMywg
RVMzX0QzRDExKCksIEVTM19PUEVOR0woKSwgRVMzX09QRU5HTEVTKCkpOwpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0RpZmZlcmVudFN0ZW5jaWxNYXNr
c1Rlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9nbF90ZXN0cy9EaWZmZXJlbnRTdGVuY2lsTWFza3NUZXN0LmNwcAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRGlmZmVyZW50U3Rl
bmNpbE1hc2tzVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNzggQEAKKy8vCisv
LyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisvLyBEaWZmZXJlbnRTdGVuY2lsTWFza3NUZXN0OgorLy8gICBUZXN0cyB0aGUgZXF1YWxp
dHkgYmV0d2VlbiBzdGVuY2lsV3JpdGVNYXNrIGFuZCBzdGVuY2lsQmFja1dyaXRlTWFzay4KKy8v
CisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorCit1c2luZyBuYW1lc3BhY2Ug
YW5nbGU7CisKK25hbWVzcGFjZQoreworY2xhc3MgRGlmZmVyZW50U3RlbmNpbE1hc2tzVGVzdCA6
IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIERpZmZlcmVudFN0ZW5jaWxN
YXNrc1Rlc3QoKSA6IG1Qcm9ncmFtKDApCisgICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0aCgx
MjgpOworICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKKyAgICAgICAgc2V0Q29uZmlnUmVk
Qml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAgICBzZXRDb25m
aWdCbHVlQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAgICAgICBz
ZXRDb25maWdEZXB0aEJpdHMoMjQpOworICAgICAgICBzZXRDb25maWdTdGVuY2lsQml0cyg4KTsK
KyAgICB9CisKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFOR0xF
VGVzdDo6U2V0VXAoKTsKKworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJT
b3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgICAgICgKKyAgICAgICAgICAgIHByZWNpc2lvbiBo
aWdocCBmbG9hdDsKKyAgICAgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uOworCisgICAg
ICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsX1Bv
c2l0aW9uID0gcG9zaXRpb247CisgICAgICAgICAgICB9CisgICAgICAgICk7CisKKyAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCisg
ICAgICAgICgKKyAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKKworICAgICAgICAg
ICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbF9GcmFnQ29s
b3IgPSB2ZWM0KDAuMCwgMC4wLCAxLjAsIDEuMCk7CisgICAgICAgICAgICB9CisgICAgICAgICk7
CisKKyAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2Us
IGZyYWdtZW50U2hhZGVyU291cmNlKTsKKyAgICAgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7
CisKKyAgICAgICAgZ2xFbmFibGUoR0xfU1RFTkNJTF9URVNUKTsKKyAgICAgICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAg
eworICAgICAgICBnbERpc2FibGUoR0xfU1RFTkNJTF9URVNUKTsKKyAgICAgICAgaWYgKG1Qcm9n
cmFtICE9IDApCisgICAgICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOworCisgICAg
ICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKKyAgICB9CisKKyAgICBHTHVpbnQgbVByb2dyYW07
Cit9OworCisvLyBUZXN0cyB0aGF0IGVmZmVjdGl2ZWx5IHNhbWUgZnJvbnQgYW5kIGJhY2sgbWFz
a3MgYXJlIGxlZ2FsLgorVEVTVF9QKERpZmZlcmVudFN0ZW5jaWxNYXNrc1Rlc3QsIERyYXdXaXRo
U2FtZUVmZmVjdGl2ZU1hc2spCit7CisgICAgLy8gMHgwMGZmIGFuZCAweDAxZmYgYXJlIGVmZmVj
dGl2ZWx5IDB4MDBmZiBieSBiZWluZyBtYXNrZWQgYnkgdGhlIGN1cnJlbnQgc3RlbmNpbCBiaXRz
LCA4LgorICAgIGdsU3RlbmNpbE1hc2tTZXBhcmF0ZShHTF9GUk9OVCwgMHgwMGZmKTsKKyAgICBn
bFN0ZW5jaWxNYXNrU2VwYXJhdGUoR0xfQkFDSywgMHgwMWZmKTsKKworICAgIGdsVXNlUHJvZ3Jh
bShtUHJvZ3JhbSk7CisKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7
CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKK30KKworLy8gVGVzdHMgdGhhdCBlZmZlY3Rp
dmVseSBkaWZmZXJlbnQgZnJvbnQgYW5kIGJhY2sgbWFza3MgYXJlIGlsbGVnYWwuCitURVNUX1Ao
RGlmZmVyZW50U3RlbmNpbE1hc2tzVGVzdCwgRHJhd1dpdGhEaWZmZXJlbnRNYXNrKQoreworICAg
IGdsU3RlbmNpbE1hc2tTZXBhcmF0ZShHTF9GUk9OVCwgMHgwMDAxKTsKKyAgICBnbFN0ZW5jaWxN
YXNrU2VwYXJhdGUoR0xfQkFDSywgMHgwMDAyKTsKKworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3Jh
bSk7CisKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisKKyAgICBF
WFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitjbGFzcyBEaWZmZXJl
bnRTdGVuY2lsTWFza3NXaXRob3V0U3RlbmNpbEJ1ZmZlclRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0
Cit7CisgIHByb3RlY3RlZDoKKyAgICBEaWZmZXJlbnRTdGVuY2lsTWFza3NXaXRob3V0U3RlbmNp
bEJ1ZmZlclRlc3QoKSA6IG1Qcm9ncmFtKDApCisgICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0
aCgxMjgpOworICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKKyAgICAgICAgc2V0Q29uZmln
UmVkQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAgICBzZXRD
b25maWdCbHVlQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAgICAg
ICBzZXRDb25maWdEZXB0aEJpdHMoMCk7CisgICAgICAgIHNldENvbmZpZ1N0ZW5jaWxCaXRzKDAp
OworICAgIH0KKworICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQU5H
TEVUZXN0OjpTZXRVcCgpOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRl
clNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAgcHJlY2lzaW9u
IGhpZ2hwIGZsb2F0OworICAgICAgICAgICAgYXR0cmlidXRlIHZlYzQgcG9zaXRpb247CisKKyAg
ICAgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xf
UG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UK
KyAgICAgICAgKAorICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworCisgICAgICAg
ICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsX0ZyYWdD
b2xvciA9IHZlYzQoMC4wLCAwLjAsIDEuMCwgMS4wKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
KTsKKworICAgICAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJj
ZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOworICAgICAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFt
KTsKKworICAgICAgICBnbEVuYWJsZShHTF9TVEVOQ0lMX1RFU1QpOworICAgICAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIGdsRGlzYWJsZShHTF9TVEVOQ0lMX1RFU1QpOworICAgICAgICBpZiAobVBy
b2dyYW0gIT0gMCkKKyAgICAgICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7CisKKyAg
ICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOworICAgIH0KKworICAgIEdMdWludCBtUHJvZ3Jh
bTsKK307CisKKy8vIFRlc3RzIHRoYXQgZWZmZWN0aXZlbHkgZGlmZmVyZW50IGZyb250IGFuZCBi
YWNrIG1hc2tzLCB3aXRob3V0IHN0ZW5jaWwgYml0cywgYXJlIGxlZ2FsLgorVEVTVF9QKERpZmZl
cmVudFN0ZW5jaWxNYXNrc1dpdGhvdXRTdGVuY2lsQnVmZmVyVGVzdCwgRHJhd1dpdGhEaWZmZXJl
bnRNYXNrKQoreworICAgIGdsU3RlbmNpbE1hc2tTZXBhcmF0ZShHTF9GUk9OVCwgMHgwMDAxKTsK
KyAgICBnbFN0ZW5jaWxNYXNrU2VwYXJhdGUoR0xfQkFDSywgMHgwMDAyKTsKKworICAgIGdsVXNl
UHJvZ3JhbShtUHJvZ3JhbSk7CisKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwg
MC41Zik7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKK30KKworLy8gVXNlIHRoaXMgdG8g
c2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBH
TEVTIG1ham9yIHZlcnNpb24pIHRoZXNlCisvLyB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3Qu
CitBTkdMRV9JTlNUQU5USUFURV9URVNUKERpZmZlcmVudFN0ZW5jaWxNYXNrc1Rlc3QsIEVTMl9E
M0Q5KCksIEVTMl9EM0QxMSgpLCBFUzNfRDNEMTEoKSwgRVMyX09QRU5HTCgpLCBFUzNfT1BFTkdM
KCkpOworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChEaWZmZXJlbnRTdGVuY2lsTWFza3NXaXRob3V0
U3RlbmNpbEJ1ZmZlclRlc3QsIEVTMl9EM0Q5KCksIEVTMl9EM0QxMSgpLCBFUzNfRDNEMTEoKSwg
RVMyX09QRU5HTCgpLCBFUzNfT1BFTkdMKCkpOworfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRGlzY2FyZEZy
YW1lYnVmZmVyRVhUVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0Rpc2NhcmRGcmFtZWJ1ZmZlckVYVFRlc3QuY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9E
aXNjYXJkRnJhbWVidWZmZXJFWFRUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0
MyBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBhbmdsZTsKKworY2xhc3MgRGlzY2FyZEZyYW1lYnVmZmVyRVhUVGVzdCA6
IHB1YmxpYyBBTkdMRVRlc3QKK3sKK3Byb3RlY3RlZDoKKyAgICBEaXNjYXJkRnJhbWVidWZmZXJF
WFRUZXN0KCkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRoKDI1Nik7CisgICAgICAgIHNl
dFdpbmRvd0hlaWdodCgyNTYpOworICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOworICAgICAg
ICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwor
ICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0RlcHRoQml0
cygyNCk7CisgICAgICAgIHNldENvbmZpZ1N0ZW5jaWxCaXRzKDgpOworICAgIH0KK307CisKK1RF
U1RfUChEaXNjYXJkRnJhbWVidWZmZXJFWFRUZXN0LCBFeHRlbnNpb25FbmFibGVkKQoreworICAg
IEVHTFBsYXRmb3JtUGFyYW1ldGVycyBwbGF0Zm9ybSA9IEdldFBhcmFtKCkuZWdsUGFyYW1ldGVy
czsKKworICAgIGlmIChwbGF0Zm9ybS5yZW5kZXJlciA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQ
RV9EM0QxMV9BTkdMRSkKKyAgICB7CisgICAgICAgIEVYUEVDVF9UUlVFKGV4dGVuc2lvbkVuYWJs
ZWQoIkVYVF9kaXNjYXJkX2ZyYW1lYnVmZmVyIikpOworICAgIH0KKyAgICBlbHNlCisgICAgewor
ICAgICAgICAvLyBPdGhlciBwbGF0Zm9ybXMgZG9uJ3QgY3VycmVudGx5IGltcGxlbWVudCB0aGlz
IGV4dGVuc2lvbgorICAgICAgICBFWFBFQ1RfRkFMU0UoZXh0ZW5zaW9uRW5hYmxlZCgiRVhUX2Rp
c2NhcmRfZnJhbWVidWZmZXIiKSk7CisgICAgfQorfQorCitURVNUX1AoRGlzY2FyZEZyYW1lYnVm
ZmVyRVhUVGVzdCwgRGVmYXVsdEZyYW1lYnVmZmVyKQoreworICAgIGlmICghZXh0ZW5zaW9uRW5h
YmxlZCgiRVhUX2Rpc2NhcmRfZnJhbWVidWZmZXIiKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291
dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgRVhUX2Rpc2NhcmRfZnJhbWVidWZmZXIgaXMgbm90
IGF2YWlsYWJsZS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IC8vIFRoZXNlIHNob3VsZCBzdWNjZWVkIG9uIHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyCisgICAg
Y29uc3QgR0xlbnVtIGRpc2NhcmRzMVtdID0geyBHTF9DT0xPUl9FWFQgfTsKKyAgICBnbERpc2Nh
cmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUiwgMSwgZGlzY2FyZHMxKTsKKyAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKKworICAgIGNvbnN0IEdMZW51bSBkaXNjYXJkczJbXSA9IHsgR0xf
REVQVEhfRVhUIH07CisgICAgZ2xEaXNjYXJkRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVIs
IDEsIGRpc2NhcmRzMik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBjb25zdCBH
TGVudW0gZGlzY2FyZHMzW10gPSB7IEdMX1NURU5DSUxfRVhUIH07CisgICAgZ2xEaXNjYXJkRnJh
bWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVIsIDEsIGRpc2NhcmRzMyk7CisgICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7CisKKyAgICBjb25zdCBHTGVudW0gZGlzY2FyZHM0W10gPSB7IEdMX1NURU5D
SUxfRVhULCBHTF9DT0xPUl9FWFQsIEdMX0RFUFRIX0VYVCB9OworICAgIGdsRGlzY2FyZEZyYW1l
YnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSLCAzLCBkaXNjYXJkczQpOworICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOworCisgICAgLy8gVGhlc2Ugc2hvdWxkIGZhaWwgb24gdGhlIGRlZmF1bHQgZnJh
bWVidWZmZXIKKyAgICBjb25zdCBHTGVudW0gZGlzY2FyZHM1W10gPSB7IEdMX0NPTE9SX0FUVEFD
SE1FTlQwIH07CisgICAgZ2xEaXNjYXJkRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVIsIDEs
IGRpc2NhcmRzNSk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7CisKKyAg
ICBjb25zdCBHTGVudW0gZGlzY2FyZHM2W10gPSB7IEdMX0RFUFRIX0FUVEFDSE1FTlQgfTsKKyAg
ICBnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUiwgMSwgZGlzY2FyZHM2KTsK
KyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKKworICAgIGNvbnN0IEdMZW51
bSBkaXNjYXJkczdbXSA9IHsgR0xfU1RFTkNJTF9BVFRBQ0hNRU5UIH07CisgICAgZ2xEaXNjYXJk
RnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVIsIDEsIGRpc2NhcmRzNyk7CisgICAgRVhQRUNU
X0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Cit9CisKK1RFU1RfUChEaXNjYXJkRnJhbWVidWZm
ZXJFWFRUZXN0LCBOb25EZWZhdWx0RnJhbWVidWZmZXIpCit7CisgICAgaWYgKCFleHRlbnNpb25F
bmFibGVkKCJFWFRfZGlzY2FyZF9mcmFtZWJ1ZmZlciIpKQorICAgIHsKKyAgICAgICAgc3RkOjpj
b3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBFWFRfZGlzY2FyZF9mcmFtZWJ1ZmZlciBpcyBu
b3QgYXZhaWxhYmxlLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgR0x1aW50IHRleDJEOworICAgIEdMdWludCBmcmFtZWJ1ZmZlcjsKKworICAgIC8vIENyZWF0
ZSBhIGJhc2ljIG9mZi1zY3JlZW4gZnJhbWVidWZmZXIKKyAgICAvLyBEb24ndCBjcmVhdGUgYSBk
ZXB0aC9zdGVuY2lsIHRleHR1cmUsIHRvIGVuc3VyZSB0aGF0IGFsc28gd29ya3MgY29ycmVjdGx5
CisgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4MkQpOworICAgIGdsR2VuRnJhbWVidWZmZXJzKDEs
ICZmcmFtZWJ1ZmZlcik7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXgyRCk7
CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIGZyYW1lYnVmZmVyKTsKKyAg
ICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCLCBnZXRXaW5kb3dXaWR0aCgp
LCBnZXRXaW5kb3dIZWlnaHQoKSwgMCwgR0xfUkdCLCBHTF9VTlNJR05FRF9CWVRFLCBOVUxMKTsK
KyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVS
LCBHTF9MSU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhU
VVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7CisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChH
TF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIHRleDJE
LCAwKTsKKyAgICBBU1NFUlRfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFLCBnbENo
ZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKKworICAgIC8vIFRoZXNlIHNo
b3VsZCBmYWlsIG9uIHRoZSBub24tZGVmYXVsdCBmcmFtZWJ1ZmZlcgorICAgIGNvbnN0IEdMZW51
bSBkaXNjYXJkczFbXSA9IHsgR0xfQ09MT1JfRVhUIH07CisgICAgZ2xEaXNjYXJkRnJhbWVidWZm
ZXJFWFQoR0xfRlJBTUVCVUZGRVIsIDEsIGRpc2NhcmRzMSk7CisgICAgRVhQRUNUX0dMX0VSUk9S
KEdMX0lOVkFMSURfRU5VTSk7CisKKyAgICBjb25zdCBHTGVudW0gZGlzY2FyZHMyW10gPSB7IEdM
X0RFUFRIX0VYVCB9OworICAgIGdsRGlzY2FyZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVS
LCAxLCBkaXNjYXJkczIpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwor
CisgICAgY29uc3QgR0xlbnVtIGRpc2NhcmRzM1tdID0geyBHTF9TVEVOQ0lMX0VYVCB9OworICAg
IGdsRGlzY2FyZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSLCAxLCBkaXNjYXJkczMpOwor
ICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOworCisgICAgY29uc3QgR0xlbnVt
IGRpc2NhcmRzNFtdID0geyBHTF9TVEVOQ0lMX0VYVCwgR0xfQ09MT1JfRVhULCBHTF9ERVBUSF9F
WFQgfTsKKyAgICBnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUiwgMywgZGlz
Y2FyZHM0KTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKKworICAgIC8v
IFRoZXNlIHNob3VsZCBzdWNjZWVkIG9uIHRoZSBub24tZGVmYXVsdCBmcmFtZWJ1ZmZlcgorICAg
IGNvbnN0IEdMZW51bSBkaXNjYXJkczVbXSA9IHsgR0xfQ09MT1JfQVRUQUNITUVOVDAgfTsKKyAg
ICBnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUiwgMSwgZGlzY2FyZHM1KTsK
KyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGNvbnN0IEdMZW51bSBkaXNjYXJkczZb
XSA9IHsgR0xfREVQVEhfQVRUQUNITUVOVCB9OworICAgIGdsRGlzY2FyZEZyYW1lYnVmZmVyRVhU
KEdMX0ZSQU1FQlVGRkVSLCAxLCBkaXNjYXJkczYpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OworCisgICAgY29uc3QgR0xlbnVtIGRpc2NhcmRzN1tdID0geyBHTF9TVEVOQ0lMX0FUVEFDSE1F
TlQgfTsKKyAgICBnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUiwgMSwgZGlz
Y2FyZHM3KTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKK30KKworLy8gVXNlIHRoaXMgdG8g
c2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBH
TEVTIG1ham9yIHZlcnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KK0FO
R0xFX0lOU1RBTlRJQVRFX1RFU1QoRGlzY2FyZEZyYW1lYnVmZmVyRVhUVGVzdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0Qz
RDExKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDlfMygpLAorICAgICAg
ICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVT
M19PUEVOR0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCksCisgICAg
ICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygpKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9EcmF3QnVmZmVyc1Rlc3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9EcmF3QnVm
ZmVyc1Rlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9nbF90ZXN0cy9EcmF3QnVmZmVyc1Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNTE3IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3Qu
aCIKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL2dsX3JhaWkuaCIKKwordXNpbmcgbmFtZXNwYWNlIGFu
Z2xlOworCitjbGFzcyBEcmF3QnVmZmVyc1Rlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHBy
b3RlY3RlZDoKKyAgICBEcmF3QnVmZmVyc1Rlc3QoKQorICAgIHsKKyAgICAgICAgc2V0V2luZG93
V2lkdGgoMTI4KTsKKyAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7CisgICAgICAgIHNldENv
bmZpZ1JlZEJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICAgICAg
c2V0Q29uZmlnQmx1ZUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKKyAg
ICAgICAgc2V0Q29uZmlnRGVwdGhCaXRzKDI0KTsKKyAgICAgICAgbU1heERyYXdCdWZmZXJzID0g
MDsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQorICAgIHsKKyAgICAgICAgQU5H
TEVUZXN0OjpTZXRVcCgpOworCisgICAgICAgIC8vIFRoaXMgdGVzdCBzZWVtcyB0byBmYWlsIG9u
IGFuIG5WaWRpYSBtYWNoaW5lIHdoZW4gdGhlIHdpbmRvdyBpcyBoaWRkZW4KKyAgICAgICAgU2V0
V2luZG93VmlzaWJsZSh0cnVlKTsKKworICAgICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbUZC
Tyk7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRkJPKTsKKwor
ICAgICAgICBnbEdlblRleHR1cmVzKDQsIG1UZXh0dXJlcyk7CisKKyAgICAgICAgZm9yIChzaXpl
X3QgdGV4SW5kZXggPSAwOyB0ZXhJbmRleCA8IEFycmF5U2l6ZShtVGV4dHVyZXMpOyB0ZXhJbmRl
eCsrKQorICAgICAgICB7CisgICAgICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQs
IG1UZXh0dXJlc1t0ZXhJbmRleF0pOworICAgICAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRV
UkVfMkQsIDAsIEdMX1JHQkEsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAw
LCBHTF9SR0JBLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIG51
bGxwdHIpOworICAgICAgICB9CisKKyAgICAgICAgR0xmbG9hdCBkYXRhW10gPQorICAgICAgICB7
CisgICAgICAgICAgICAtMS4wZiwgMS4wZiwKKyAgICAgICAgICAgIC0xLjBmLCAtMi4wZiwKKyAg
ICAgICAgICAgIDIuMGYsIDEuMGYKKyAgICAgICAgfTsKKworICAgICAgICBnbEdlbkJ1ZmZlcnMo
MSwgJm1CdWZmZXIpOworICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtQnVm
ZmVyKTsKKyAgICAgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgc2l6ZW9mKEdMZmxv
YXQpICogNiwgZGF0YSwgR0xfU1RBVElDX0RSQVcpOworCisgICAgICAgIGdsR2V0SW50ZWdlcnYo
R0xfTUFYX0RSQVdfQlVGRkVSUywgJm1NYXhEcmF3QnVmZmVycyk7CisKKyAgICAgICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKKyAg
ICB7CisgICAgICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZtRkJPKTsKKyAgICAgICAgZ2xE
ZWxldGVUZXh0dXJlcyg0LCBtVGV4dHVyZXMpOworICAgICAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwg
Jm1CdWZmZXIpOworCisgICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKKyAgICB9CisKKyAg
ICB2b2lkIHNldHVwTVJUUHJvZ3JhbUVTU0wzKGJvb2wgYnVmZmVyRW5hYmxlZFs4XSwgR0x1aW50
ICpwcm9ncmFtT3V0KQorICAgIHsKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hh
ZGVyU291cmNlID0KKyAgICAgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgICAg
ICJpbiB2ZWM0IHBvc2l0aW9uO1xuIgorICAgICAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAg
ICAgICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjtcbiIKKyAgICAgICAgICAgICJ9
XG4iOworCisgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cnN0cjsKKworICAgICAgICBzdHJz
dHIgPDwgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAgICAgICAgICAgInByZWNpc2lvbiBo
aWdocCBmbG9hdDtcbiI7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaW5kZXggPSAwOyBp
bmRleCA8IDg7IGluZGV4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChidWZmZXJFbmFi
bGVkW2luZGV4XSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzdHJzdHIgPDwgImxh
eW91dChsb2NhdGlvbiA9ICIgPDwgaW5kZXggPDwgIikgIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAib3V0IHZlYzQgdmFsdWUiIDw8IGluZGV4IDw8ICI7XG4iOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgc3Ryc3RyIDw8ICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAg
ICAgICAgICAgIntcbiI7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaW5kZXggPSAwOyBp
bmRleCA8IDg7IGluZGV4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChidWZmZXJFbmFi
bGVkW2luZGV4XSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
ciA9IChpbmRleCArIDEpICYgMTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZyA9IChp
bmRleCArIDEpICYgMjsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYiA9IChpbmRleCAr
IDEpICYgNDsKKworICAgICAgICAgICAgICAgIHN0cnN0ciA8PCAiICAgIHZhbHVlIiA8PCBpbmRl
eCA8PCAiID0gdmVjNCgiCisgICAgICAgICAgICAgICAgICAgICAgIDw8IHIgPDwgIi4wLCAiIDw8
IGcgPDwgIi4wLCAiCisgICAgICAgICAgICAgICAgICAgICAgIDw8IGIgPDwgIi4wLCAxLjApO1xu
IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHN0cnN0ciA8PCAifVxuIjsK
KworICAgICAgICAqcHJvZ3JhbU91dCA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJj
ZSwgc3Ryc3RyLnN0cigpKTsKKyAgICAgICAgaWYgKCpwcm9ncmFtT3V0ID09IDApCisgICAgICAg
IHsKKyAgICAgICAgICAgIEZBSUwoKSA8PCAic2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZC4iOwor
ICAgICAgICB9CisKKyAgICAgICAgZ2xVc2VQcm9ncmFtKCpwcm9ncmFtT3V0KTsKKworICAgICAg
ICBHTGludCBsb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24oKnByb2dyYW1PdXQsICJwb3Np
dGlvbiIpOworICAgICAgICBBU1NFUlRfTkUobG9jYXRpb24sIC0xKTsKKyAgICAgICAgZ2xCaW5k
QnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZlcik7CisgICAgICAgIGdsVmVydGV4QXR0cmli
UG9pbnRlcihsb2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCA4LCBOVUxMKTsKKyAgICAg
ICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShsb2NhdGlvbik7CisgICAgfQorCisgICAgdm9p
ZCBzZXR1cE1SVFByb2dyYW1FU1NMMShib29sIGJ1ZmZlckVuYWJsZWRbOF0sIEdMdWludCAqcHJv
Z3JhbU91dCkKKyAgICB7CisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNv
dXJjZSA9CisgICAgICAgICAgICAiYXR0cmlidXRlIHZlYzQgcG9zaXRpb247XG4iCisgICAgICAg
ICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHBv
c2l0aW9uO1xuIgorICAgICAgICAgICAgIn1cbiI7CisKKyAgICAgICAgc3RkOjpzdHJpbmdzdHJl
YW0gc3Ryc3RyOworCisgICAgICAgIHN0cnN0ciA8PCAiI2V4dGVuc2lvbiBHTF9FWFRfZHJhd19i
dWZmZXJzIDogZW5hYmxlXG4iCisgICAgICAgICAgICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZs
b2F0O1xuIgorICAgICAgICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICAgICAg
ICAgICAie1xuIjsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpbmRleCA9IDA7IGluZGV4
IDwgODsgaW5kZXgrKykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGJ1ZmZlckVuYWJsZWRb
aW5kZXhdKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCByID0g
KGluZGV4ICsgMSkgJiAxOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBnID0gKGluZGV4
ICsgMSkgJiAyOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBiID0gKGluZGV4ICsgMSkg
JiA0OworCisgICAgICAgICAgICAgICAgc3Ryc3RyIDw8ICIgICAgZ2xfRnJhZ0RhdGFbIiA8PCBp
bmRleCA8PCAiXSA9IHZlYzQoIgorICAgICAgICAgICAgICAgICAgICA8PCByIDw8ICIuMCwgIiA8
PCBnIDw8ICIuMCwgIgorICAgICAgICAgICAgICAgICAgICA8PCBiIDw8ICIuMCwgMS4wKTtcbiI7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBzdHJzdHIgPDwgIn1cbiI7CisK
KyAgICAgICAgKnByb2dyYW1PdXQgPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2Us
IHN0cnN0ci5zdHIoKSk7CisgICAgICAgIGlmICgqcHJvZ3JhbU91dCA9PSAwKQorICAgICAgICB7
CisgICAgICAgICAgICBGQUlMKCkgPDwgInNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQuIjsKKyAg
ICAgICAgfQorCisgICAgICAgIGdsVXNlUHJvZ3JhbSgqcHJvZ3JhbU91dCk7CisKKyAgICAgICAg
R0xpbnQgbG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKCpwcm9ncmFtT3V0LCAicG9zaXRp
b24iKTsKKyAgICAgICAgQVNTRVJUX05FKGxvY2F0aW9uLCAtMSk7CisgICAgICAgIGdsQmluZEJ1
ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1CdWZmZXIpOworICAgICAgICBnbFZlcnRleEF0dHJpYlBv
aW50ZXIobG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgOCwgTlVMTCk7CisgICAgICAg
IGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkobG9jYXRpb24pOworICAgIH0KKworICAgIHZvaWQg
c2V0dXBNUlRQcm9ncmFtKGJvb2wgYnVmZmVyRW5hYmxlZFs4XSwgR0x1aW50ICpwcm9ncmFtT3V0
KQorICAgIHsKKyAgICAgICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpID09IDMpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHNldHVwTVJUUHJvZ3JhbUVTU0wzKGJ1ZmZlckVuYWJsZWQsIHBy
b2dyYW1PdXQpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAg
ICAgQVNTRVJUX0VRKGdldENsaWVudE1ham9yVmVyc2lvbigpLCAyKTsKKyAgICAgICAgICAgIHNl
dHVwTVJUUHJvZ3JhbUVTU0wxKGJ1ZmZlckVuYWJsZWQsIHByb2dyYW1PdXQpOworICAgICAgICB9
CisgICAgfQorCisgICAgc3RhdGljIEdMQ29sb3IgZ2V0Q29sb3JGb3JJbmRleCh1bnNpZ25lZCBp
bnQgaW5kZXgpCisgICAgeworICAgICAgICBHTHVieXRlIHIgPSAoKChpbmRleCArIDEpICYgMSkg
PiAwKSA/IDI1NSA6IDA7CisgICAgICAgIEdMdWJ5dGUgZyA9ICgoKGluZGV4ICsgMSkgJiAyKSA+
IDApID8gMjU1IDogMDsKKyAgICAgICAgR0x1Ynl0ZSBiID0gKCgoaW5kZXggKyAxKSAmIDQpID4g
MCkgPyAyNTUgOiAwOworICAgICAgICByZXR1cm4gR0xDb2xvcihyLCBnLCBiLCAyNTV1KTsKKyAg
ICB9CisKKyAgICB2b2lkIHZlcmlmeUF0dGFjaG1lbnQyRCh1bnNpZ25lZCBpbnQgaW5kZXgsIEdM
dWludCB0ZXh0dXJlTmFtZSwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwpCisgICAgeworICAg
ICAgICBmb3IgKEdMaW50IGNvbG9yQXR0YWNobWVudCA9IDA7IGNvbG9yQXR0YWNobWVudCA8IG1N
YXhEcmF3QnVmZmVyczsgY29sb3JBdHRhY2htZW50KyspCisgICAgICAgIHsKKyAgICAgICAgICAg
IGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1F
TlQwICsgY29sb3JBdHRhY2htZW50LCBHTF9URVhUVVJFXzJELCAwLCAwKTsKKyAgICAgICAgfQor
CisgICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9S
X0FUVEFDSE1FTlQwLCB0YXJnZXQsIHRleHR1cmVOYW1lLCBsZXZlbCk7CisKKyAgICAgICAgRVhQ
RUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQo
KSAvIDIsIGdldENvbG9yRm9ySW5kZXgoaW5kZXgpKTsKKyAgICB9CisKKyAgICB2b2lkIHZlcmlm
eUF0dGFjaG1lbnRMYXllcih1bnNpZ25lZCBpbnQgaW5kZXgsIEdMdWludCB0ZXh0dXJlLCBHTGlu
dCBsZXZlbCwgR0xpbnQgbGF5ZXIpCisgICAgeworICAgICAgICBmb3IgKEdMaW50IGNvbG9yQXR0
YWNobWVudCA9IDA7IGNvbG9yQXR0YWNobWVudCA8IG1NYXhEcmF3QnVmZmVyczsgY29sb3JBdHRh
Y2htZW50KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQo
R0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwICsgY29sb3JBdHRhY2htZW50LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9URVhUVVJFXzJELCAwLCAwKTsK
KyAgICAgICAgfQorCisgICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0xfRlJBTUVC
VUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCB0ZXh0dXJlLCBsZXZlbCwgbGF5ZXIpOworCisg
ICAgICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2lu
ZG93SGVpZ2h0KCkgLyAyLCBnZXRDb2xvckZvckluZGV4KGluZGV4KSk7CisgICAgfQorCisgICAg
R0x1aW50IG1GQk87CisgICAgR0x1aW50IG1UZXh0dXJlc1s0XTsKKyAgICBHTHVpbnQgbUJ1ZmZl
cjsKKyAgICBHTGludCBtTWF4RHJhd0J1ZmZlcnM7Cit9OworCisvLyBWZXJpZnkgdGhhdCBHTF9N
QVhfRFJBV19CVUZGRVJTIHJldHVybnMgdGhlIGV4cGVjdGVkIHZhbHVlcyBmb3IgRDNEMTEKK1RF
U1RfUChEcmF3QnVmZmVyc1Rlc3QsIFZlcmlmeUQzRExpbWl0cykKK3sKKyAgICBFR0xQbGF0Zm9y
bVBhcmFtZXRlcnMgcGxhdGZvcm0gPSBHZXRQYXJhbSgpLmVnbFBhcmFtZXRlcnM7CisgICAgaWYg
KHBsYXRmb3JtLnJlbmRlcmVyID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xF
KQorICAgIHsKKyAgICAgICAgaWYgKHBsYXRmb3JtLm1ham9yVmVyc2lvbiA9PSA5ICYmIHBsYXRm
b3JtLm1pbm9yVmVyc2lvbiA9PSAzKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBEM0QxMSBG
ZWF0dXJlIExldmVsIDlfMyBzdXBwb3J0cyA0IGRyYXcgYnVmZmVycworICAgICAgICAgICAgQVNT
RVJUX0VRKG1NYXhEcmF3QnVmZmVycywgNCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAg
ICAgICB7CisgICAgICAgICAgICAvLyBEM0QxMSBGZWF0dXJlIExldmVsIDEwXzArIHN1cHBvcnRz
IDggZHJhdyBidWZmZXJzCisgICAgICAgICAgICBBU1NFUlRfRVEobU1heERyYXdCdWZmZXJzLCA4
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBzdGQ6OmNvdXQg
PDwgIlRlc3Qgc2tpcHBlZCBmb3Igbm9uLUQzRDExIHJlbmRlcmVycy4iIDw8IHN0ZDo6ZW5kbDsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworVEVTVF9QKERyYXdCdWZmZXJzVGVzdCwgR2Fw
cykKK3sKKyAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFleHRlbnNpb25F
bmFibGVkKCJHTF9FWFRfZHJhd19idWZmZXJzIikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQg
PDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEVTMyBvciBHTF9FWFRfZHJhd19idWZmZXJzIGlzIG5v
dCBhdmFpbGFibGUuIgorICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKElzV2luZG93cygpICYmIElzQU1EKCkgJiYgSXNEZXNr
dG9wT3BlbkdMKCkpCisgICAgeworICAgICAgICAvLyBUT0RPKHlub3Zpa292KTogSW52ZXN0aWdh
dGUgdGhlIGZhaWx1cmUgKGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTUzNSkKKyAgICAgICAgc3RkOjpj
b3V0IDw8ICJUZXN0IGRpc2FibGVkIG9uIFdpbmRvd3MgQU1EIE9wZW5HTC4iIDw8IHN0ZDo6ZW5k
bDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVS
RV8yRCwgbVRleHR1cmVzWzBdKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1F
QlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMSwgR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBd
LCAwKTsKKworICAgIGJvb2wgZmxhZ3NbOF0gPSB7IGZhbHNlLCB0cnVlIH07CisKKyAgICBHTHVp
bnQgcHJvZ3JhbTsKKyAgICBzZXR1cE1SVFByb2dyYW0oZmxhZ3MsICZwcm9ncmFtKTsKKworICAg
IGNvbnN0IEdMZW51bSBidWZzW10gPQorICAgIHsKKyAgICAgICAgR0xfTk9ORSwKKyAgICAgICAg
R0xfQ09MT1JfQVRUQUNITUVOVDEKKyAgICB9OworICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsK
KyAgICBnbERyYXdCdWZmZXJzRVhUKDIsIGJ1ZnMpOworICAgIGdsRHJhd0FycmF5cyhHTF9UUklB
TkdMRVMsIDAsIDMpOworCisgICAgdmVyaWZ5QXR0YWNobWVudDJEKDEsIG1UZXh0dXJlc1swXSwg
R0xfVEVYVFVSRV8yRCwgMCk7CisKKyAgICBnbERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Cit9CisK
K1RFU1RfUChEcmF3QnVmZmVyc1Rlc3QsIEZpcnN0QW5kTGFzdCkKK3sKKyAgICBpZiAoZ2V0Q2xp
ZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfZHJhd19i
dWZmZXJzIikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNh
dXNlIEVTMyBvciBHTF9FWFRfZHJhd19idWZmZXJzIGlzIG5vdCBhdmFpbGFibGUuIgorICAgICAg
ICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKElzV2luZG93cygpICYmIElzQU1EKCkgJiYgSXNEZXNrdG9wT3BlbkdMKCkpCisgICAgewor
ICAgICAgICAvLyBUT0RPKHlub3Zpa292KTogSW52ZXN0aWdhdGUgdGhlIGZhaWx1cmUgKGh0dHBz
Oi8vYW5nbGVidWcuY29tLzE1MzMpCisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxl
ZCBvbiBXaW5kb3dzIEFNRCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7
CisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRU
QUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSwgMCk7CisKKyAgICBnbEJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sxXSk7CisgICAgZ2xGcmFtZWJ1ZmZlclRl
eHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDMsIEdMX1RFWFRVUkVf
MkQsIG1UZXh0dXJlc1sxXSwgMCk7CisKKyAgICBib29sIGZsYWdzWzhdID0geyB0cnVlLCBmYWxz
ZSwgZmFsc2UsIHRydWUgfTsKKworICAgIEdMdWludCBwcm9ncmFtOworICAgIHNldHVwTVJUUHJv
Z3JhbShmbGFncywgJnByb2dyYW0pOworCisgICAgY29uc3QgR0xlbnVtIGJ1ZnNbXSA9CisgICAg
eworICAgICAgICBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwKKyAgICAgICAgR0xfTk9ORSwKKyAgICAg
ICAgR0xfTk9ORSwKKyAgICAgICAgR0xfQ09MT1JfQVRUQUNITUVOVDMKKyAgICB9OworCisgICAg
Z2xVc2VQcm9ncmFtKHByb2dyYW0pOworICAgIGdsRHJhd0J1ZmZlcnNFWFQoNCwgYnVmcyk7Cisg
ICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMCwgMyk7CisKKyAgICB2ZXJpZnlBdHRhY2ht
ZW50MkQoMCwgbVRleHR1cmVzWzBdLCBHTF9URVhUVVJFXzJELCAwKTsKKyAgICB2ZXJpZnlBdHRh
Y2htZW50MkQoMywgbVRleHR1cmVzWzFdLCBHTF9URVhUVVJFXzJELCAwKTsKKworICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOworCisgICAgZ2xEZWxldGVQcm9ncmFtKHByb2dyYW0pOworfQorCitU
RVNUX1AoRHJhd0J1ZmZlcnNUZXN0LCBGaXJzdEhhbGZOVUxMKQoreworICAgIGlmIChnZXRDbGll
bnRNYWpvclZlcnNpb24oKSA8IDMgJiYgIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1
ZmZlcnMiKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1
c2UgRVMzIG9yIEdMX0VYVF9kcmF3X2J1ZmZlcnMgaXMgbm90IGF2YWlsYWJsZS4iCisgICAgICAg
ICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAoSXNXaW5kb3dzKCkgJiYgSXNBTUQoKSAmJiBJc0Rlc2t0b3BPcGVuR0woKSkKKyAgICB7Cisg
ICAgICAgIC8vIFRPRE8oeW5vdmlrb3YpOiBJbnZlc3RpZ2F0ZSB0aGUgZmFpbHVyZSAoaHR0cHM6
Ly9hbmdsZWJ1Zy5jb20vMTUzMykKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVk
IG9uIFdpbmRvd3MgQU1EIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGJvb2wgZmxhZ3NbOF0gPSB7IGZhbHNlIH07CisgICAgR0xlbnVtIGJ1ZnNb
OF0gPSB7IEdMX05PTkUgfTsKKworICAgIEdMdWludCBoYWxmTWF4RHJhd0J1ZmZlcnMgPSBzdGF0
aWNfY2FzdDxHTHVpbnQ+KG1NYXhEcmF3QnVmZmVycykgLyAyOworCisgICAgZm9yIChHTHVpbnQg
dGV4SW5kZXggPSAwOyB0ZXhJbmRleCA8IGhhbGZNYXhEcmF3QnVmZmVyczsgdGV4SW5kZXgrKykK
KyAgICB7CisgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzW3Rl
eEluZGV4XSk7CisgICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIs
IEdMX0NPTE9SX0FUVEFDSE1FTlQwICsgaGFsZk1heERyYXdCdWZmZXJzICsgdGV4SW5kZXgsIEdM
X1RFWFRVUkVfMkQsIG1UZXh0dXJlc1t0ZXhJbmRleF0sIDApOworICAgICAgICBmbGFnc1t0ZXhJ
bmRleCArIGhhbGZNYXhEcmF3QnVmZmVyc10gPSB0cnVlOworICAgICAgICBidWZzW3RleEluZGV4
ICsgaGFsZk1heERyYXdCdWZmZXJzXSA9IEdMX0NPTE9SX0FUVEFDSE1FTlQwICsgaGFsZk1heERy
YXdCdWZmZXJzICsgdGV4SW5kZXg7CisgICAgfQorCisgICAgR0x1aW50IHByb2dyYW07CisgICAg
c2V0dXBNUlRQcm9ncmFtKGZsYWdzLCAmcHJvZ3JhbSk7CisKKyAgICBnbFVzZVByb2dyYW0ocHJv
Z3JhbSk7CisgICAgZ2xEcmF3QnVmZmVyc0VYVChtTWF4RHJhd0J1ZmZlcnMsIGJ1ZnMpOworICAg
IGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDMpOworCisgICAgZm9yIChHTHVpbnQgdGV4
SW5kZXggPSAwOyB0ZXhJbmRleCA8IGhhbGZNYXhEcmF3QnVmZmVyczsgdGV4SW5kZXgrKykKKyAg
ICB7CisgICAgICAgIHZlcmlmeUF0dGFjaG1lbnQyRCh0ZXhJbmRleCArIGhhbGZNYXhEcmF3QnVm
ZmVycywgbVRleHR1cmVzW3RleEluZGV4XSwgR0xfVEVYVFVSRV8yRCwgMCk7CisgICAgfQorCisg
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7
Cit9CisKK1RFU1RfUChEcmF3QnVmZmVyc1Rlc3QsIFVud3JpdHRlbk91dHB1dFZhcmlhYmxlc1No
b3VsZE5vdENyYXNoKQoreworICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMgJiYg
IWV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKSkKKyAgICB7CisgICAgICAg
IHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgRVMzIG9yIEdMX0VYVF9kcmF3X2J1
ZmZlcnMgaXMgbm90IGF2YWlsYWJsZS4iCisgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBCaW5kIHR3byByZW5kZXIgdGFyZ2V0
cyBidXQgdXNlIGEgc2hhZGVyIHdoaWNoIHdyaXRlcyBvbmx5IHRvIHRoZSBmaXJzdCBvbmUuCisg
ICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0pOworICAgIGdsRnJh
bWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBH
TF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0sIDApOworCisgICAgZ2xCaW5kVGV4dHVyZShHTF9U
RVhUVVJFXzJELCBtVGV4dHVyZXNbMV0pOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xf
RlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQxLCBHTF9URVhUVVJFXzJELCBtVGV4dHVy
ZXNbMV0sIDApOworCisgICAgYm9vbCBmbGFnc1s4XSA9IHsgdHJ1ZSwgZmFsc2UgfTsKKworICAg
IEdMdWludCBwcm9ncmFtOworICAgIHNldHVwTVJUUHJvZ3JhbShmbGFncywgJnByb2dyYW0pOwor
CisgICAgY29uc3QgR0xlbnVtIGJ1ZnNbXSA9CisgICAgeworICAgICAgICBHTF9DT0xPUl9BVFRB
Q0hNRU5UMCwKKyAgICAgICAgR0xfQ09MT1JfQVRUQUNITUVOVDEsCisgICAgICAgIEdMX05PTkUs
CisgICAgICAgIEdMX05PTkUsCisgICAgfTsKKworICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsK
KyAgICBnbERyYXdCdWZmZXJzRVhUKDQsIGJ1ZnMpOworCisgICAgLy8gVGhpcyBjYWxsIHNob3Vs
ZCBub3QgY3Jhc2ggd2hlbiB3ZSBkeW5hbWljYWxseSBnZW5lcmF0ZSB0aGUgSExTTCBjb2RlLgor
ICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDMpOworCisgICAgdmVyaWZ5QXR0YWNo
bWVudDJEKDAsIG1UZXh0dXJlc1swXSwgR0xfVEVYVFVSRV8yRCwgMCk7CisKKyAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKKworICAgIGdsRGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKK30KKworLy8g
VGVzdCB0aGF0IGJpbmRpbmcgbXVsdGlwbGUgbGF5ZXJzIG9mIGEgM0QgdGV4dHVyZSB3b3JrcyBj
b3JyZWN0bHkKK1RFU1RfUChEcmF3QnVmZmVyc1Rlc3QsIDNEVGV4dHVyZXMpCit7CisgICAgaWYg
KGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8
PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgRVMzIGlzIG5vdCBhdmFpbGFibGUuIiA8PCBzdGQ6OmVu
ZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHTFRleHR1cmUgdGV4dHVyZTsKKyAg
ICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfM0QsIHRleHR1cmUuZ2V0KCkpOworICAgIGdsVGV4
SW1hZ2UzRChHTF9URVhUVVJFXzNELCAwLCBHTF9SR0JBLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRX
aW5kb3dIZWlnaHQoKSwgZ2V0V2luZG93V2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgMCwgR0xf
UkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7CisKKyAgICBnbEZyYW1lYnVmZmVyVGV4
dHVyZUxheWVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgdGV4dHVyZS5n
ZXQoKSwgMCwgMCk7CisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmVMYXllcihHTF9GUkFNRUJVRkZF
UiwgR0xfQ09MT1JfQVRUQUNITUVOVDEsIHRleHR1cmUuZ2V0KCksIDAsIDEpOworICAgIGdsRnJh
bWVidWZmZXJUZXh0dXJlTGF5ZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQy
LCB0ZXh0dXJlLmdldCgpLCAwLCAyKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdM
X0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMywgdGV4dHVyZS5nZXQoKSwgMCwgMyk7
CisKKyAgICBib29sIGZsYWdzWzhdID0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlfTsK
KworICAgIEdMdWludCBwcm9ncmFtOworICAgIHNldHVwTVJUUHJvZ3JhbShmbGFncywgJnByb2dy
YW0pOworCisgICAgY29uc3QgR0xlbnVtIGJ1ZnNbXSA9IHsKKyAgICAgICAgR0xfQ09MT1JfQVRU
QUNITUVOVDAsIEdMX0NPTE9SX0FUVEFDSE1FTlQxLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMiwgR0xf
Q09MT1JfQVRUQUNITUVOVDMsCisgICAgfTsKKworICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsK
KyAgICBnbERyYXdCdWZmZXJzRVhUKDQsIGJ1ZnMpOworCisgICAgZ2xEcmF3QXJyYXlzKEdMX1RS
SUFOR0xFUywgMCwgMyk7CisKKyAgICB2ZXJpZnlBdHRhY2htZW50TGF5ZXIoMCwgdGV4dHVyZS5n
ZXQoKSwgMCwgMCk7CisgICAgdmVyaWZ5QXR0YWNobWVudExheWVyKDEsIHRleHR1cmUuZ2V0KCks
IDAsIDEpOworICAgIHZlcmlmeUF0dGFjaG1lbnRMYXllcigyLCB0ZXh0dXJlLmdldCgpLCAwLCAy
KTsKKyAgICB2ZXJpZnlBdHRhY2htZW50TGF5ZXIoMywgdGV4dHVyZS5nZXQoKSwgMCwgMyk7CisK
KyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsRGVsZXRlUHJvZ3JhbShwcm9ncmFt
KTsKK30KKworLy8gVGVzdCB0aGF0IGJpbmRpbmcgbXVsdGlwbGUgbGF5ZXJzIG9mIGEgMkQgYXJy
YXkgdGV4dHVyZSB3b3JrcyBjb3JyZWN0bHkKK1RFU1RfUChEcmF3QnVmZmVyc1Rlc3QsIDJEQXJy
YXlUZXh0dXJlcykKK3sKKyAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQorICAg
IHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBFUzMgaXMgbm90
IGF2YWlsYWJsZS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IEdMVGV4dHVyZSB0ZXh0dXJlOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRF9BUlJB
WSwgdGV4dHVyZS5nZXQoKSk7CisgICAgZ2xUZXhJbWFnZTNEKEdMX1RFWFRVUkVfMkRfQVJSQVks
IDAsIEdMX1JHQkEsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLAorICAgICAg
ICAgICAgICAgICBnZXRXaW5kb3dXaWR0aCgpLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRF
LCBudWxscHRyKTsKKworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0xfRlJBTUVCVUZG
RVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCB0ZXh0dXJlLmdldCgpLCAwLCAwKTsKKyAgICBnbEZy
YW1lYnVmZmVyVGV4dHVyZUxheWVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5U
MSwgdGV4dHVyZS5nZXQoKSwgMCwgMSk7CisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmVMYXllcihH
TF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDIsIHRleHR1cmUuZ2V0KCksIDAsIDIp
OworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9S
X0FUVEFDSE1FTlQzLCB0ZXh0dXJlLmdldCgpLCAwLCAzKTsKKworICAgIGJvb2wgZmxhZ3NbOF0g
PSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2V9OworCisgICAgR0x1aW50IHByb2dyYW07
CisgICAgc2V0dXBNUlRQcm9ncmFtKGZsYWdzLCAmcHJvZ3JhbSk7CisKKyAgICBjb25zdCBHTGVu
dW0gYnVmc1tdID0geworICAgICAgICBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfQ09MT1JfQVRU
QUNITUVOVDEsIEdMX0NPTE9SX0FUVEFDSE1FTlQyLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMywKKyAg
ICB9OworCisgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0pOworICAgIGdsRHJhd0J1ZmZlcnNFWFQo
NCwgYnVmcyk7CisKKyAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVTLCAwLCAzKTsKKworICAg
IHZlcmlmeUF0dGFjaG1lbnRMYXllcigwLCB0ZXh0dXJlLmdldCgpLCAwLCAwKTsKKyAgICB2ZXJp
ZnlBdHRhY2htZW50TGF5ZXIoMSwgdGV4dHVyZS5nZXQoKSwgMCwgMSk7CisgICAgdmVyaWZ5QXR0
YWNobWVudExheWVyKDIsIHRleHR1cmUuZ2V0KCksIDAsIDIpOworICAgIHZlcmlmeUF0dGFjaG1l
bnRMYXllcigzLCB0ZXh0dXJlLmdldCgpLCAwLCAzKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOworCisgICAgZ2xEZWxldGVQcm9ncmFtKHByb2dyYW0pOworfQorCisvLyBVc2UgdGhpcyB0
byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNo
IEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0Lgor
QU5HTEVfSU5TVEFOVElBVEVfVEVTVChEcmF3QnVmZmVyc1Rlc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgIEVTMl9EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfRDNEMTEoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8zKCksCisgICAgICAgICAgICAg
ICAgICAgICAgIEVTMl9PUEVOR0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5H
TCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0RyYXdFbGVtZW50c1Rlc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9EcmF3RWxlbWVudHNU
ZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvZ2xfdGVzdHMvRHJhd0VsZW1lbnRzVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwyMjYgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisvLyBEcmF3RWxlbWVudHNUZXN0OgorLy8gICBUZXN0cyBmb3Ig
aW5kZXhlZCBkcmF3cy4KKy8vCisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgor
Cit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKK25hbWVzcGFjZQoreworCitjbGFzcyBEcmF3RWxl
bWVudHNUZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgRHJhd0Vs
ZW1lbnRzVGVzdCgpIDogbVByb2dyYW0oMHUpCisgICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0
aCg2NCk7CisgICAgICAgIHNldFdpbmRvd0hlaWdodCg2NCk7CisgICAgICAgIHNldENvbmZpZ1Jl
ZEJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICB9CisKKyAgICB+
RHJhd0VsZW1lbnRzVGVzdCgpCisgICAgeworICAgICAgICBmb3IgKEdMdWludCBpbmRleEJ1ZmZl
ciA6IG1JbmRleEJ1ZmZlcnMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpbmRleEJ1ZmZl
ciAhPSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsRGVsZXRlQnVmZmVycygx
LCAmaW5kZXhCdWZmZXIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZm9y
IChHTHVpbnQgdmVydGV4QXJyYXkgOiBtVmVydGV4QXJyYXlzKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAodmVydGV4QXJyYXkgIT0gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBnbERlbGV0ZVZlcnRleEFycmF5cygxLCAmdmVydGV4QXJyYXkpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgZm9yIChHTHVpbnQgdmVydGV4QnVmZmVyIDogbVZlcnRleEJ1
ZmZlcnMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh2ZXJ0ZXhCdWZmZXIgIT0gMCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJnZlcnRleEJ1
ZmZlcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAobVByb2dyYW0g
IT0gMHUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IG1JbmRleEJ1ZmZl
cnM7CisgICAgc3RkOjp2ZWN0b3I8R0x1aW50PiBtVmVydGV4QXJyYXlzOworICAgIHN0ZDo6dmVj
dG9yPEdMdWludD4gbVZlcnRleEJ1ZmZlcnM7CisgICAgR0x1aW50IG1Qcm9ncmFtOworfTsKKwor
Ly8gVGVzdCBhIHN0YXRlIGRlc3luYyB0aGF0IGNhbiBvY2N1ciB3aGVuIHVzaW5nIGEgc3RyZWFt
aW5nIGluZGV4IGJ1ZmZlciBpbiBHTCBpbiBjb25jZXJ0IHdpdGgKKy8vIGRlbGV0aW5nIHRoZSBh
cHBsaWVkIGluZGV4IGJ1ZmZlci4KK1RFU1RfUChEcmF3RWxlbWVudHNUZXN0LCBEZWxldGluZ0Fm
dGVyU3RyZWFtaW5nSW5kZXhlcykKK3sKKyAgICAvLyBJbml0IHByb2dyYW0KKyAgICBjb25zdCBz
dGQ6OnN0cmluZyAmdmVydGV4U2hhZGVyID0KKyAgICAgICAgImF0dHJpYnV0ZSB2ZWMyIHBvc2l0
aW9uO1xuIgorICAgICAgICAiYXR0cmlidXRlIHZlYzIgdGVzdEZsYWc7XG4iCisgICAgICAgICJ2
YXJ5aW5nIHZlYzIgdl9kYXRhO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAg
ICAiICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAsIDEpO1xuIgorICAgICAgICAiICB2
X2RhdGEgPSB0ZXN0RmxhZztcbiIKKyAgICAgICAgIn0iOworCisgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJmZyYWdtZW50U2hhZGVyID0KKyAgICAgICAgInZhcnlpbmcgaGlnaHAgdmVjMiB2X2RhdGE7
XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgIGdsX0ZyYWdDb2xvciA9
IHZlYzQodl9kYXRhLCAwLCAxKTtcbiIKKyAgICAgICAgIn0iOworCisgICAgbVByb2dyYW0gPSBD
b21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyKTsKKyAgICBBU1NFUlRf
TkUoMHUsIG1Qcm9ncmFtKTsKKyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworCisgICAgR0xp
bnQgcG9zaXRpb25Mb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJwb3Np
dGlvbiIpOworICAgIEFTU0VSVF9ORSgtMSwgcG9zaXRpb25Mb2NhdGlvbik7CisKKyAgICBHTGlu
dCB0ZXN0RmxhZ0xvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgInRlc3RG
bGFnIik7CisgICAgQVNTRVJUX05FKC0xLCB0ZXN0RmxhZ0xvY2F0aW9uKTsKKworICAgIG1JbmRl
eEJ1ZmZlcnMucmVzaXplKDN1KTsKKyAgICBnbEdlbkJ1ZmZlcnMoMywgJm1JbmRleEJ1ZmZlcnNb
MF0pOworCisgICAgbVZlcnRleEFycmF5cy5yZXNpemUoMik7CisgICAgZ2xHZW5WZXJ0ZXhBcnJh
eXMoMiwgJm1WZXJ0ZXhBcnJheXNbMF0pOworCisgICAgbVZlcnRleEJ1ZmZlcnMucmVzaXplKDIp
OworICAgIGdsR2VuQnVmZmVycygyLCAmbVZlcnRleEJ1ZmZlcnNbMF0pOworCisgICAgc3RkOjp2
ZWN0b3I8R0x1aW50PiBpbmRleERhdGFbMl07CisgICAgaW5kZXhEYXRhWzBdLnB1c2hfYmFjaygw
KTsKKyAgICBpbmRleERhdGFbMF0ucHVzaF9iYWNrKDEpOworICAgIGluZGV4RGF0YVswXS5wdXNo
X2JhY2soMik7CisgICAgaW5kZXhEYXRhWzBdLnB1c2hfYmFjaygyKTsKKyAgICBpbmRleERhdGFb
MF0ucHVzaF9iYWNrKDMpOworICAgIGluZGV4RGF0YVswXS5wdXNoX2JhY2soMCk7CisKKyAgICBp
bmRleERhdGFbMV0gPSBpbmRleERhdGFbMF07CisgICAgZm9yIChHTHVpbnQgJml0ZW0gOiBpbmRl
eERhdGFbMV0pCisgICAgeworICAgICAgICBpdGVtICs9IDR1OworICAgIH0KKworICAgIHN0ZDo6
dmVjdG9yPEdMZmxvYXQ+IHBvc2l0aW9uRGF0YTsKKyAgICAvLyBxdWFkIHZlcnRzCisgICAgcG9z
aXRpb25EYXRhLnB1c2hfYmFjaygtMS4wZik7CisgICAgcG9zaXRpb25EYXRhLnB1c2hfYmFjaygx
LjBmKTsKKyAgICBwb3NpdGlvbkRhdGEucHVzaF9iYWNrKC0xLjBmKTsKKyAgICBwb3NpdGlvbkRh
dGEucHVzaF9iYWNrKC0xLjBmKTsKKyAgICBwb3NpdGlvbkRhdGEucHVzaF9iYWNrKDEuMGYpOwor
ICAgIHBvc2l0aW9uRGF0YS5wdXNoX2JhY2soLTEuMGYpOworICAgIHBvc2l0aW9uRGF0YS5wdXNo
X2JhY2soMS4wZik7CisgICAgcG9zaXRpb25EYXRhLnB1c2hfYmFjaygxLjBmKTsKKworICAgIC8v
IFJlcGVhdCBwb3NpdGlvbiBkYXRhCisgICAgcG9zaXRpb25EYXRhLnB1c2hfYmFjaygtMS4wZik7
CisgICAgcG9zaXRpb25EYXRhLnB1c2hfYmFjaygxLjBmKTsKKyAgICBwb3NpdGlvbkRhdGEucHVz
aF9iYWNrKC0xLjBmKTsKKyAgICBwb3NpdGlvbkRhdGEucHVzaF9iYWNrKC0xLjBmKTsKKyAgICBw
b3NpdGlvbkRhdGEucHVzaF9iYWNrKDEuMGYpOworICAgIHBvc2l0aW9uRGF0YS5wdXNoX2JhY2so
LTEuMGYpOworICAgIHBvc2l0aW9uRGF0YS5wdXNoX2JhY2soMS4wZik7CisgICAgcG9zaXRpb25E
YXRhLnB1c2hfYmFjaygxLjBmKTsKKworICAgIHN0ZDo6dmVjdG9yPEdMZmxvYXQ+IHRlc3RGbGFn
RGF0YTsKKyAgICAvLyByZWQKKyAgICB0ZXN0RmxhZ0RhdGEucHVzaF9iYWNrKDEuMGYpOworICAg
IHRlc3RGbGFnRGF0YS5wdXNoX2JhY2soMC4wZik7CisgICAgdGVzdEZsYWdEYXRhLnB1c2hfYmFj
aygxLjBmKTsKKyAgICB0ZXN0RmxhZ0RhdGEucHVzaF9iYWNrKDAuMGYpOworICAgIHRlc3RGbGFn
RGF0YS5wdXNoX2JhY2soMS4wZik7CisgICAgdGVzdEZsYWdEYXRhLnB1c2hfYmFjaygwLjBmKTsK
KyAgICB0ZXN0RmxhZ0RhdGEucHVzaF9iYWNrKDEuMGYpOworICAgIHRlc3RGbGFnRGF0YS5wdXNo
X2JhY2soMC4wZik7CisKKyAgICAvLyBncmVlbgorICAgIHRlc3RGbGFnRGF0YS5wdXNoX2JhY2so
MC4wZik7CisgICAgdGVzdEZsYWdEYXRhLnB1c2hfYmFjaygxLjBmKTsKKyAgICB0ZXN0RmxhZ0Rh
dGEucHVzaF9iYWNrKDAuMGYpOworICAgIHRlc3RGbGFnRGF0YS5wdXNoX2JhY2soMS4wZik7Cisg
ICAgdGVzdEZsYWdEYXRhLnB1c2hfYmFjaygwLjBmKTsKKyAgICB0ZXN0RmxhZ0RhdGEucHVzaF9i
YWNrKDEuMGYpOworICAgIHRlc3RGbGFnRGF0YS5wdXNoX2JhY2soMC4wZik7CisgICAgdGVzdEZs
YWdEYXRhLnB1c2hfYmFjaygxLjBmKTsKKworICAgIGdsQmluZEJ1ZmZlcihHTF9FTEVNRU5UX0FS
UkFZX0JVRkZFUiwgbUluZGV4QnVmZmVyc1swXSk7CisgICAgZ2xCdWZmZXJEYXRhKEdMX0VMRU1F
TlRfQVJSQVlfQlVGRkVSLCBzaXplb2YoR0x1aW50KSAqIGluZGV4RGF0YVswXS5zaXplKCksICZp
bmRleERhdGFbMF1bMF0sCisgICAgICAgICAgICAgICAgIEdMX1NUQVRJQ19EUkFXKTsKKworICAg
IGdsQmluZEJ1ZmZlcihHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbUluZGV4QnVmZmVyc1syXSk7
CisgICAgZ2xCdWZmZXJEYXRhKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBzaXplb2YoR0x1aW50
KSAqIGluZGV4RGF0YVswXS5zaXplKCksICZpbmRleERhdGFbMF1bMF0sCisgICAgICAgICAgICAg
ICAgIEdMX1NUQVRJQ19EUkFXKTsKKworICAgIGdsQmluZEJ1ZmZlcihHTF9FTEVNRU5UX0FSUkFZ
X0JVRkZFUiwgbUluZGV4QnVmZmVyc1sxXSk7CisgICAgZ2xCdWZmZXJEYXRhKEdMX0VMRU1FTlRf
QVJSQVlfQlVGRkVSLCBzaXplb2YoR0x1aW50KSAqIGluZGV4RGF0YVsxXS5zaXplKCksICZpbmRl
eERhdGFbMV1bMF0sCisgICAgICAgICAgICAgICAgIEdMX1NUQVRJQ19EUkFXKTsKKworICAgIC8v
IEluaXRpYWxpemUgZmlyc3QgdmVydGV4IGFycmF5IHdpdGggc2Vjb25kIGluZGV4IGJ1ZmZlcgor
ICAgIGdsQmluZFZlcnRleEFycmF5KG1WZXJ0ZXhBcnJheXNbMF0pOworCisgICAgZ2xCaW5kQnVm
ZmVyKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBtSW5kZXhCdWZmZXJzWzFdKTsKKyAgICBnbEJp
bmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtVmVydGV4QnVmZmVyc1swXSk7CisgICAgZ2xCdWZm
ZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgc2l6ZW9mKEdMZmxvYXQpICogcG9zaXRpb25EYXRhLnNp
emUoKSwgJnBvc2l0aW9uRGF0YVswXSwKKyAgICAgICAgICAgICAgICAgR0xfU1RBVElDX0RSQVcp
OworICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxvY2F0aW9uLCAyLCBHTF9GTE9B
VCwgR0xfRkFMU0UsIHNpemVvZihHTGZsb2F0KSAqIDIsIG51bGxwdHIpOworICAgIGdsRW5hYmxl
VmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2NhdGlvbik7CisKKyAgICBnbEJpbmRCdWZmZXIo
R0xfQVJSQVlfQlVGRkVSLCBtVmVydGV4QnVmZmVyc1sxXSk7CisgICAgZ2xCdWZmZXJEYXRhKEdM
X0FSUkFZX0JVRkZFUiwgc2l6ZW9mKEdMZmxvYXQpICogdGVzdEZsYWdEYXRhLnNpemUoKSwgJnRl
c3RGbGFnRGF0YVswXSwKKyAgICAgICAgICAgICAgICAgR0xfU1RBVElDX0RSQVcpOworICAgIGds
VmVydGV4QXR0cmliUG9pbnRlcih0ZXN0RmxhZ0xvY2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFM
U0UsIHNpemVvZihHTGZsb2F0KSAqIDIsIG51bGxwdHIpOworICAgIGdsRW5hYmxlVmVydGV4QXR0
cmliQXJyYXkodGVzdEZsYWdMb2NhdGlvbik7CisKKyAgICAvLyBJbml0aWFsaXplIHNlY29uZCB2
ZXJ0ZXggYXJyYXkgd2l0aCBmaXJzdCBpbmRleCBidWZmZXIKKyAgICBnbEJpbmRWZXJ0ZXhBcnJh
eShtVmVydGV4QXJyYXlzWzFdKTsKKworICAgIGdsQmluZEJ1ZmZlcihHTF9FTEVNRU5UX0FSUkFZ
X0JVRkZFUiwgbUluZGV4QnVmZmVyc1swXSk7CisKKyAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlf
QlVGRkVSLCBtVmVydGV4QnVmZmVyc1swXSk7CisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHBv
c2l0aW9uTG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgc2l6ZW9mKEdMZmxvYXQpICog
MiwgbnVsbHB0cik7CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxvY2F0
aW9uKTsKKworICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1WZXJ0ZXhCdWZmZXJz
WzFdKTsKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIodGVzdEZsYWdMb2NhdGlvbiwgMiwgR0xf
RkxPQVQsIEdMX0ZBTFNFLCBzaXplb2YoR0xmbG9hdCkgKiAyLCBudWxscHRyKTsKKyAgICBnbEVu
YWJsZVZlcnRleEF0dHJpYkFycmF5KHRlc3RGbGFnTG9jYXRpb24pOworCisgICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7CisKKyAgICBnbEJpbmRWZXJ0ZXhBcnJheShtVmVydGV4QXJyYXlzWzBdKTsK
KyAgICBnbERyYXdFbGVtZW50cyhHTF9UUklBTkdMRVMsIDYsIEdMX1VOU0lHTkVEX0lOVCwgbnVs
bHB0cik7CisgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDAsIDI1NSwgMCwgMjU1KTsKKworICAg
IGdsQmluZFZlcnRleEFycmF5KG1WZXJ0ZXhBcnJheXNbMV0pOworICAgIGdsRHJhd0VsZW1lbnRz
KEdMX1RSSUFOR0xFUywgNiwgR0xfVU5TSUdORURfSU5ULCBudWxscHRyKTsKKyAgICBFWFBFQ1Rf
UElYRUxfRVEoMCwgMCwgMjU1LCAwLCAwLCAyNTUpOworCisgICAgZ2xCaW5kVmVydGV4QXJyYXko
bVZlcnRleEFycmF5c1swXSk7CisgICAgZ2xEcmF3RWxlbWVudHMoR0xfVFJJQU5HTEVTLCA2LCBH
TF9VTlNJR05FRF9JTlQsIG51bGxwdHIpOworICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAwLCAy
NTUsIDAsIDI1NSk7CisKKyAgICAvLyBUcmlnZ2VyIHRoZSBidWcgaGVyZS4KKyAgICBnbERlbGV0
ZUJ1ZmZlcnMoMSwgJm1JbmRleEJ1ZmZlcnNbMl0pOworCisgICAgZ2xEcmF3RWxlbWVudHMoR0xf
VFJJQU5HTEVTLCA2LCBHTF9VTlNJR05FRF9JTlQsIG51bGxwdHIpOworICAgIEVYUEVDVF9QSVhF
TF9FUSgwLCAwLCAwLCAyNTUsIDAsIDI1NSk7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
K30KKworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChEcmF3RWxlbWVudHNUZXN0LCBFUzNfT1BFTkdM
KCksIEVTM19PUEVOR0xFUygpKTsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9nbF90ZXN0cy9FVENUZXh0dXJlVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0VUQ1RleHR1cmVUZXN0LmNwcAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVz
dHMvRVRDVGV4dHVyZVRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODUgQEAKKy8v
CisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisvLyBFVENUZXh0dXJlVGVzdDoKKy8vICAgVGVzdHMgZm9yIEVUQyBsb3NzeSBkZWNv
ZGUgZm9ybWF0cy4KKy8vCisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorCit1
c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKK25hbWVzcGFjZQoreworCitjbGFzcyBFVENUZXh0dXJl
VGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIEVUQ1RleHR1cmVU
ZXN0KCkgOiBtVGV4dHVyZSgwdSkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7
CisgICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOworICAgICAgICBzZXRDb25maWdSZWRCaXRz
KDgpOworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0Js
dWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgfQorCisgICAg
dm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7
CisKKyAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbVRleHR1cmUpOworICAgICAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0dXJlKTsKKworICAgICAgICBB
TkdMRVRlc3Q6OlRlYXJEb3duKCk7CisgICAgfQorCisgICAgR0x1aW50IG1UZXh0dXJlOworfTsK
KworLy8gVGVzdHMgYSB0ZXh0dXJlIHdpdGggRVRDMSBsb3NzeSBkZWNvZGUgZm9ybWF0CitURVNU
X1AoRVRDVGV4dHVyZVRlc3QsIEVUQzFWYWxpZGF0aW9uKQoreworICAgIGJvb2wgc3VwcG9ydGVk
ID0gZXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfbG9zc3lfZXRjX2RlY29kZSIpOworCisgICAg
Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZSk7CisKKyAgICBHTHVieXRlIHBp
eGVsWzhdID0geyAweDAsIDB4MCwgMHhmOCwgMHgyLCAweDQzLCAweGZmLCAweDQsIDB4MTIgfTsK
KyAgICBnbENvbXByZXNzZWRUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX0VUQzFfUkdC
OF9MT1NTWV9ERUNPREVfQU5HTEUsIDQsIDQsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplb2YocGl4ZWwpLCBwaXhlbCk7CisgICAgaWYgKHN1cHBvcnRlZCkKKyAgICB7CisgICAg
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgICAgIGdsQ29tcHJlc3NlZFRleFN1Yklt
YWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwgNCwgNCwgR0xfRVRDMV9SR0I4X0xPU1NZX0RF
Q09ERV9BTkdMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YocGl4
ZWwpLCBwaXhlbCk7CisgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisKKyAgICAgICAg
Z2xDb21wcmVzc2VkVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAxLCBHTF9FVEMxX1JHQjhfTE9T
U1lfREVDT0RFX0FOR0xFLCAyLCAyLCAwLAorICAgICAgICAgICAgc2l6ZW9mKHBpeGVsKSwgcGl4
ZWwpOworICAgICAgICBnbENvbXByZXNzZWRUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDIsIEdM
X0VUQzFfUkdCOF9MT1NTWV9ERUNPREVfQU5HTEUsIDEsIDEsIDAsCisgICAgICAgICAgICBzaXpl
b2YocGl4ZWwpLCBwaXhlbCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIEVYUEVD
VF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOworICAgIH0KK30KKworQU5HTEVfSU5TVEFOVElB
VEVfVEVTVChFVENUZXh0dXJlVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDko
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCisgICAgICAgICAgICAgICAg
ICAgICAgIEVTMl9EM0QxMV9GTDlfMygpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfRDNE
MTEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAorICAgICAgICAgICAg
ICAgICAgICAgICBFUzNfT1BFTkdMKCkpOworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0ZlbmNlU3luY1Rl
c3RzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
Z2xfdGVzdHMvRmVuY2VTeW5jVGVzdHMuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9GZW5jZVN5bmNUZXN0cy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwyODIgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpbmNsdWRlICJ0ZXN0X3V0
aWxzL0FOR0xFVGVzdC5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKK2NsYXNzIEZlbmNl
TlZUZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgRmVuY2VOVlRl
c3QoKQorICAgIHsKKyAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKKyAgICAgICAgc2V0V2lu
ZG93SGVpZ2h0KDEyOCk7CisgICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7CisgICAgICAgIHNl
dENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7CisgICAg
ICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnRGVwdGhCaXRzKDI0
KTsKKyAgICB9Cit9OworCitjbGFzcyBGZW5jZVN5bmNUZXN0IDogcHVibGljIEFOR0xFVGVzdAor
eworICBwcm90ZWN0ZWQ6CisgICAgRmVuY2VTeW5jVGVzdCgpCisgICAgeworICAgICAgICBzZXRX
aW5kb3dXaWR0aCgxMjgpOworICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKKyAgICAgICAg
c2V0Q29uZmlnUmVkQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAg
ICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgp
OworICAgICAgICBzZXRDb25maWdEZXB0aEJpdHMoMjQpOworICAgIH0KK307CisKKy8vIEZlbmNl
TlYgb2JqZWN0cyBzaG91bGQgcmVzcG9uZCBmYWxzZSB0byBnbElzRmVuY2VOViB1bnRpbCB0aGV5
J3ZlIGJlZW4gc2V0CitURVNUX1AoRmVuY2VOVlRlc3QsIElzRmVuY2UpCit7CisgICAgaWYgKCFl
eHRlbnNpb25FbmFibGVkKCJHTF9OVl9mZW5jZSIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0
IDw8ICJUZXN0IHNraXBwZWQgZHVlIHRvIG1pc3NpbmcgR0xfTlZfZmVuY2UgZXh0ZW5zaW9uLiIg
PDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR0x1aW50IGZlbmNl
ID0gMDsKKyAgICBnbEdlbkZlbmNlc05WKDEsICZmZW5jZSk7CisgICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7CisKKyAgICBFWFBFQ1RfRVEoR0xfRkFMU0UsIGdsSXNGZW5jZU5WKGZlbmNlKSk7Cisg
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbFNldEZlbmNlTlYoZmVuY2UsIEdMX0FM
TF9DT01QTEVURURfTlYpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgRVhQRUNU
X0VRKEdMX1RSVUUsIGdsSXNGZW5jZU5WKGZlbmNlKSk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7Cit9CisKKy8vIFRlc3QgZXJyb3IgY2FzZXMgZm9yIGFsbCBGZW5jZU5WIGZ1bmN0aW9ucwor
VEVTVF9QKEZlbmNlTlZUZXN0LCBFcnJvcnMpCit7CisgICAgaWYgKCFleHRlbnNpb25FbmFibGVk
KCJHTF9OVl9mZW5jZSIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBw
ZWQgZHVlIHRvIG1pc3NpbmcgR0xfTlZfZmVuY2UgZXh0ZW5zaW9uLiIgPDwgc3RkOjplbmRsOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gZ2xUZXN0RmVuY2VOViBzaG91bGQgc3Rp
bGwgcmV0dXJuIFRSVUUgZm9yIGFuIGludmFsaWQgZmVuY2UgYW5kIGdlbmVyYXRlIGFuIElOVkFM
SURfT1BFUkFUSU9OCisgICAgRVhQRUNUX0VRKEdMX1RSVUUsIGdsVGVzdEZlbmNlTlYoMTApKTsK
KyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgR0x1aW50
IGZlbmNlID0gMjA7CisKKyAgICAvLyBnbEdlbkZlbmNlc05WIHNob3VsZCBnZW5lcmF0ZSBJTlZB
TElEX1ZBTFVFIGZvciBhIG5lZ2F0aXZlIG4gYW5kIG5vdCB3cml0ZSBhbnl0aGluZyB0byB0aGUg
ZmVuY2VzIHBvaW50ZXIKKyAgICBnbEdlbkZlbmNlc05WKC0xLCAmZmVuY2UpOworICAgIEVYUEVD
VF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICBFWFBFQ1RfRVEoMjB1LCBmZW5jZSk7
CisKKyAgICAvLyBHZW5lcmF0ZSBhIHJlYWwgZmVuY2UKKyAgICBnbEdlbkZlbmNlc05WKDEsICZm
ZW5jZSk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBnbFRlc3RGZW5jZU5W
IHNob3VsZCBzdGlsbCByZXR1cm4gVFJVRSBmb3IgYSBmZW5jZSB0aGF0IGlzIG5vdCBzdGFydGVk
IGFuZCBnZW5lcmF0ZSBhbiBJTlZBTElEX09QRVJBVElPTgorICAgIEVYUEVDVF9FUShHTF9UUlVF
LCBnbFRlc3RGZW5jZU5WKGZlbmNlKSk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKKworICAgIC8vIGdsR2V0RmVuY2Vpdk5WIHNob3VsZCBnZW5lcmF0ZSBhbiBJ
TlZBTElEX09QRVJBVElPTiBmb3IgYW4gaW52YWxpZCBvciB1bnN0YXJ0ZWQgZmVuY2UgYW5kIG5v
dCBtb2RpZnkgdGhlIHBhcmFtcworICAgIEdMaW50IHJlc3VsdCA9IDMwOworICAgIGdsR2V0RmVu
Y2Vpdk5WKDEwLCBHTF9GRU5DRV9TVEFUVVNfTlYsICZyZXN1bHQpOworICAgIEVYUEVDVF9HTF9F
UlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgRVhQRUNUX0VRKDMwLCByZXN1bHQpOwor
CisgICAgZ2xHZXRGZW5jZWl2TlYoZmVuY2UsIEdMX0ZFTkNFX1NUQVRVU19OViwgJnJlc3VsdCk7
CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICBFWFBFQ1Rf
RVEoMzAsIHJlc3VsdCk7CisKKyAgICAvLyBnbFNldEZlbmNlTlYgc2hvdWxkIGdlbmVyYXRlIGFu
IGVycm9yIGZvciBhbnkgY29uZGl0aW9uIHRoYXQgaXMgbm90IEFMTF9DT01QTEVURURfTlYKKyAg
ICBnbFNldEZlbmNlTlYoZmVuY2UsIDApOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElE
X0VOVU0pOworCisgICAgLy8gZ2xTZXRGZW5jZU5WIHNob3VsZCBnZW5lcmF0ZSBJTlZBTElEX09Q
RVJBVElPTiBmb3IgYW4gaW52YWxpZCBmZW5jZQorICAgIGdsU2V0RmVuY2VOVigxMCwgR0xfQUxM
X0NPTVBMRVRFRF9OVik7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKK30KKworLy8gVGVzdCB0aGF0IGJhc2ljIHVzYWdlIHdvcmtzIGFuZCBkb2Vzbid0IGdlbmVy
YXRlIGVycm9ycyBvciBjcmFzaAorVEVTVF9QKEZlbmNlTlZUZXN0LCBCYXNpY09wZXJhdGlvbnMp
Cit7CisgICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9OVl9mZW5jZSIpKQorICAgIHsKKyAg
ICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgZHVlIHRvIG1pc3NpbmcgR0xfTlZfZmVu
Y2UgZXh0ZW5zaW9uLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgZ2xDbGVhckNvbG9yKDEuMGYsIDAuMGYsIDEuMGYsIDEuMGYpOworCisgICAgR0x1aW50IGZl
bmNlc1syMF0gPSB7IDAgfTsKKyAgICBnbEdlbkZlbmNlc05WKHN0YXRpY19jYXN0PEdMc2l6ZWk+
KEFycmF5U2l6ZShmZW5jZXMpKSwgZmVuY2VzKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
KworICAgIGZvciAoR0x1aW50IGZlbmNlIDogZmVuY2VzKQorICAgIHsKKyAgICAgICAgZ2xTZXRG
ZW5jZU5WKGZlbmNlLCBHTF9BTExfQ09NUExFVEVEX05WKTsKKworICAgICAgICBnbENsZWFyKEdM
X0NPTE9SX0JVRkZFUl9CSVQpOworICAgIH0KKworICAgIGdsRmluaXNoKCk7CisKKyAgICBmb3Ig
KEdMdWludCBmZW5jZSA6IGZlbmNlcykKKyAgICB7CisgICAgICAgIEdMaW50IHN0YXR1cyA9IDA7
CisgICAgICAgIGdsR2V0RmVuY2Vpdk5WKGZlbmNlLCBHTF9GRU5DRV9TVEFUVVNfTlYsICZzdGF0
dXMpOworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgICAgICAvLyBGZW5jZSBz
aG91bGQgYmUgY29tcGxldGUgbm93IHRoYXQgRmluaXNoIGhhcyBiZWVuIGNhbGxlZAorICAgICAg
ICBFWFBFQ1RfRVEoR0xfVFJVRSwgc3RhdHVzKTsKKyAgICB9CisKKyAgICBFWFBFQ1RfUElYRUxf
RVEoMCwgMCwgMjU1LCAwLCAyNTUsIDI1NSk7Cit9CisKKy8vIEZlbmNlU3luYyBvYmplY3RzIHNo
b3VsZCByZXNwb25kIHRydWUgdG8gSXNTeW5jIGFmdGVyIHRoZXkgYXJlIGNyZWF0ZWQgd2l0aCBn
bEZlbmNlU3luYworVEVTVF9QKEZlbmNlU3luY1Rlc3QsIElzU3luYykKK3sKKyAgICBHTHN5bmMg
c3luYyA9IGdsRmVuY2VTeW5jKEdMX1NZTkNfR1BVX0NPTU1BTkRTX0NPTVBMRVRFLCAwKTsKKyAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIEVYUEVDVF9FUShHTF9UUlVFLCBnbElzU3lu
YyhzeW5jKSk7CisgICAgRVhQRUNUX0VRKEdMX0ZBTFNFLCBnbElzU3luYyhyZWludGVycHJldF9j
YXN0PEdMc3luYz4oNDApKSk7Cit9CisKKy8vIFRlc3QgZXJyb3IgY2FzZXMgZm9yIGFsbCBGZW5j
ZVN5bmMgZnVuY3Rpb24KK1RFU1RfUChGZW5jZVN5bmNUZXN0LCBFcnJvcnMpCit7CisgICAgR0xz
eW5jIHN5bmMgPSBnbEZlbmNlU3luYyhHTF9TWU5DX0dQVV9DT01NQU5EU19DT01QTEVURSwgMCk7
CisKKyAgICAvLyBEZWxldGVTeW5jIGdlbmVyYXRlcyBJTlZBTElEX1ZBTFVFIHdoZW4gdGhlIHN5
bmMgaXMgbm90IHZhbGlkCisgICAgZ2xEZWxldGVTeW5jKHJlaW50ZXJwcmV0X2Nhc3Q8R0xzeW5j
PigyMCkpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKKworICAgIC8v
IGdsRmVuY2VTeW5jIGdlbmVyYXRlcyBHTF9JTlZBTElEX0VOVU0gaWYgdGhlIGNvbmRpdGlvbiBp
cyBub3QgR0xfU1lOQ19HUFVfQ09NTUFORFNfQ09NUExFVEUKKyAgICBFWFBFQ1RfRVEoMCwgZ2xG
ZW5jZVN5bmMoMCwgMCkpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwor
CisgICAgLy8gZ2xGZW5jZVN5bmMgZ2VuZXJhdGVzIEdMX0lOVkFMSURfRU5VTSBpZiB0aGUgZmxh
Z3MgaXMgbm90IDAKKyAgICBFWFBFQ1RfRVEoMCwgZ2xGZW5jZVN5bmMoR0xfU1lOQ19HUFVfQ09N
TUFORFNfQ09NUExFVEUsIDEwKSk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFM
VUUpOworCisgICAgLy8gZ2xDbGllbnRXYWl0U3luYyBnZW5lcmF0ZXMgR0xfSU5WQUxJRF9WQUxV
RSBhbmQgcmV0dXJucyBHTF9XQUlUX0ZBSUxFRCBpZiBmbGFncyBjb250YWlucyBtb3JlIHRoYW4g
anVzdCBHTF9TWU5DX0ZMVVNIX0NPTU1BTkRTX0JJVAorICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xf
V0FJVF9GQUlMRUQsIGdsQ2xpZW50V2FpdFN5bmMoc3luYywgR0xfU1lOQ19GTFVTSF9DT01NQU5E
U19CSVQgfCAweDIsIDApKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7
CisKKyAgICAvLyBnbENsaWVudFdhaXRTeW5jIGdlbmVyYXRlcyBHTF9JTlZBTElEX1ZBTFVFIGFu
ZCByZXR1cm5zIEdMX1dBSVRfRkFJTEVEIGlmIHRoZSBzeW5jIG9iamVjdCBpcyBub3QgdmFsaWQK
KyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX1dBSVRfRkFJTEVELCBnbENsaWVudFdhaXRTeW5jKHJl
aW50ZXJwcmV0X2Nhc3Q8R0xzeW5jPigzMCksIEdMX1NZTkNfRkxVU0hfQ09NTUFORFNfQklULCAw
KSk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOworCisgICAgLy8gZ2xX
YWl0U3luYyBnZW5lcmF0ZXMgR0xfSU5WQUxJRF9WQUxVRSBpZiBmbGFncyBpcyBub24temVybwor
ICAgIGdsV2FpdFN5bmMoc3luYywgMSwgR0xfVElNRU9VVF9JR05PUkVEKTsKKyAgICBFWFBFQ1Rf
R0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7CisKKyAgICAvLyBnbFdhaXRTeW5jIGdlbmVyYXRl
cyBHTF9JTlZBTElEX1ZBTFVFIGlmIEdMdWludDY0IGlzIG5vdCBHTF9USU1FT1VUX0lHTk9SRUQK
KyAgICBnbFdhaXRTeW5jKHN5bmMsIDAsIDApOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZB
TElEX1ZBTFVFKTsKKworICAgIC8vIGdsV2FpdFN5bmMgZ2VuZXJhdGVzIEdMX0lOVkFMSURfVkFM
VUUgaWYgdGhlIHN5bmMgb2JqZWN0IGlzIG5vdCB2YWxpZAorICAgIGdsV2FpdFN5bmMocmVpbnRl
cnByZXRfY2FzdDxHTHN5bmM+KDMwKSwgMCwgR0xfVElNRU9VVF9JR05PUkVEKTsKKyAgICBFWFBF
Q1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7CisKKyAgICAvLyBnbEdldFN5bmNpdiBnZW5l
cmF0ZXMgR0xfSU5WQUxJRF9WQUxVRSBpZiBidWZTaXplIGlzIGxlc3MgdGhhbiB6ZXJvLCByZXN1
bHRzIHNob3VsZCBiZSB1bnRvdWNoZWQKKyAgICBHTHNpemVpIGxlbmd0aCA9IDIwOworICAgIEdM
aW50IHZhbHVlID0gMzA7CisgICAgZ2xHZXRTeW5jaXYoc3luYywgR0xfT0JKRUNUX1RZUEUsIC0x
LCAmbGVuZ3RoLCAmdmFsdWUpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVF
KTsKKyAgICBFWFBFQ1RfRVEoMjAsIGxlbmd0aCk7CisgICAgRVhQRUNUX0VRKDMwLCB2YWx1ZSk7
CisKKyAgICAvLyBnbEdldFN5bmNpdiBnZW5lcmF0ZXMgR0xfSU5WQUxJRF9WQUxVRSBpZiB0aGUg
c3luYyBvYmplY3QgdGlzIG5vdCB2YWxpZCwgcmVzdWx0cyBzaG91bGQgYmUgdW50b3VjaGVkCisg
ICAgZ2xHZXRTeW5jaXYocmVpbnRlcnByZXRfY2FzdDxHTHN5bmM+KDMwKSwgR0xfT0JKRUNUX1RZ
UEUsIDEsICZsZW5ndGgsICZ2YWx1ZSk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURf
VkFMVUUpOworICAgIEVYUEVDVF9FUSgyMCwgbGVuZ3RoKTsKKyAgICBFWFBFQ1RfRVEoMzAsIHZh
bHVlKTsKK30KKworLy8gVGVzdCB1c2FnZSBvZiBnbEdldFN5bmNpdgorVEVTVF9QKEZlbmNlU3lu
Y1Rlc3QsIEJhc2ljUXVlcmllcykKK3sKKyAgICBHTHNpemVpIGxlbmd0aCA9IDA7CisgICAgR0xp
bnQgdmFsdWUgPSAwOworICAgIEdMc3luYyBzeW5jID0gZ2xGZW5jZVN5bmMoR0xfU1lOQ19HUFVf
Q09NTUFORFNfQ09NUExFVEUsIDApOworCisgICAgZ2xHZXRTeW5jaXYoc3luYywgR0xfU1lOQ19D
T05ESVRJT04sIDEsICZsZW5ndGgsICZ2YWx1ZSk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
CisgICAgRVhQRUNUX0VRKEdMX1NZTkNfR1BVX0NPTU1BTkRTX0NPTVBMRVRFLCB2YWx1ZSk7CisK
KyAgICBnbEdldFN5bmNpdihzeW5jLCBHTF9PQkpFQ1RfVFlQRSwgMSwgJmxlbmd0aCwgJnZhbHVl
KTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfRVEoR0xfU1lOQ19GRU5D
RSwgdmFsdWUpOworCisgICAgZ2xHZXRTeW5jaXYoc3luYywgR0xfU1lOQ19GTEFHUywgMSwgJmxl
bmd0aCwgJnZhbHVlKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfRVEo
MCwgdmFsdWUpOworfQorCisvLyBUZXN0IHRoYXQgYmFzaWMgdXNhZ2Ugd29ya3MgYW5kIGRvZXNu
J3QgZ2VuZXJhdGUgZXJyb3JzIG9yIGNyYXNoCitURVNUX1AoRmVuY2VTeW5jVGVzdCwgQmFzaWNP
cGVyYXRpb25zKQoreworICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogRmlndXJlIG91dCB3aHkgdGhp
cyBpcyBicm9rZW4gb24gSW50ZWwgT3BlbkdMCisgICAgaWYgKElzSW50ZWwoKSAmJiBnZXRQbGF0
Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFKQor
ICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgT3BlbkdM
LiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZ2xDbGVhckNv
bG9yKDEuMGYsIDAuMGYsIDEuMGYsIDEuMGYpOworCisgICAgR0xzeW5jIHN5bmMgPSBnbEZlbmNl
U3luYyhHTF9TWU5DX0dQVV9DT01NQU5EU19DT01QTEVURSwgMCk7CisKKyAgICBnbENsZWFyKEdM
X0NPTE9SX0JVRkZFUl9CSVQpOworICAgIGdsV2FpdFN5bmMoc3luYywgMCwgR0xfVElNRU9VVF9J
R05PUkVEKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIEdMc2l6ZWkgbGVuZ3Ro
ID0gMDsKKyAgICBHTGludCB2YWx1ZSA9IDA7CisgICAgdW5zaWduZWQgaW50IGxvb3BDb3VudCA9
IDA7CisKKyAgICBnbEZsdXNoKCk7CisKKyAgICAvLyBVc2UgJ2xvb3BDb3VudCcgdG8gbWFrZSBz
dXJlIHRoZSB0ZXN0IGRvZXNuJ3QgZ2V0IHN0dWNrIGluIGFuIGluZmluaXRlIGxvb3AKKyAgICB3
aGlsZSAodmFsdWUgIT0gR0xfU0lHTkFMRUQgJiYgbG9vcENvdW50IDw9IDEwMDAwMDApCisgICAg
eworICAgICAgICBsb29wQ291bnQrKzsKKworICAgICAgICBnbEdldFN5bmNpdihzeW5jLCBHTF9T
WU5DX1NUQVRVUywgMSwgJmxlbmd0aCwgJnZhbHVlKTsKKyAgICAgICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7CisgICAgfQorCisgICAgQVNTRVJUX0dMRU5VTV9FUShHTF9TSUdOQUxFRCwgdmFsdWUp
OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAyMDsgaSsrKQorICAgIHsKKyAgICAgICAg
Z2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICAgICAgZ2xDbGllbnRXYWl0U3luYyhz
eW5jLCBHTF9TWU5DX0ZMVVNIX0NPTU1BTkRTX0JJVCwgR0xfVElNRU9VVF9JR05PUkVEKTsKKyAg
ICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgfQorfQorCisvLyBVc2UgdGhpcyB0byBz
ZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdM
RVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgorQU5H
TEVfSU5TVEFOVElBVEVfVEVTVChGZW5jZU5WVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
RVMyX0QzRDkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCisgICAgICAg
ICAgICAgICAgICAgICAgIEVTM19EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJf
T1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVT
M19PUEVOR0xFUygpKTsKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoRmVuY2VTeW5jVGVzdCwgRVMz
X0QzRDExKCksIEVTM19PUEVOR0woKSwgRVMzX09QRU5HTEVTKCkpOwpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0ZyYW1lYnVmZmVyTWl4ZWRTYW1wbGVz
VGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2dsX3Rlc3RzL0ZyYW1lYnVmZmVyTWl4ZWRTYW1wbGVzVGVzdC5jcHAJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0ZyYW1lYnVmZmVy
TWl4ZWRTYW1wbGVzVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOTEgQEAKKy8v
CisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisvLyBDSFJPTUlVTUZyYW1lYnVmZmVyTWl4ZWRTYW1wbGVzVGVzdAorLy8gICBUZXN0
IENIUk9NSVVNIHN1YnNldCBvZiBOVl9mcmFtZWJ1ZmZlcl9taXhlZF9zYW1wbGVzLgorLy8gICBU
aGlzIGV4dGVuc2lvbiBhbGxvd3MgcmVuZGVyaW5nIHRvIGEgZnJhbWVidWZmZXIgdGhhdCBoYXMg
ZGlmZmVyZW50CisvLyAgIHNhbXBsZSBjb3VudHMgZm9yIGRpZmZlcmVudCByZW5kZXIgYnVmZmVy
cyAoc3RlbmNpbCwgZGVwdGgsIGNvbG9yKQorCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRl
c3QuaCIKKyNpbmNsdWRlICJzaGFkZXJfdXRpbHMuaCIKKwordXNpbmcgbmFtZXNwYWNlIGFuZ2xl
OworCituYW1lc3BhY2UKK3sKKworY29uc3QgR0x1aW50IGtXaWR0aCAgPSAxMDA7Citjb25zdCBH
THVpbnQga0hlaWdodCA9IDEwMDsKKworY2xhc3MgQ0hST01JVU1GcmFtZWJ1ZmZlck1peGVkU2Ft
cGxlc1Rlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBlbnVtIFNl
dHVwRkJPVHlwZQorICAgIHsKKyAgICAgICAgTWl4ZWRTYW1wbGVGQk8sICAgLy8gMSBjb2xvciBz
YW1wbGUsIE4gc3RlbmNpbCBzYW1wbGVzLgorICAgICAgICBTaW5nbGVTYW1wbGVGQk8sICAvLyAx
IGNvbG9yIHNhbXBsZSwgMSBzdGVuY2lsIHNhbXBsZS4KKyAgICB9OworCisgICAgYm9vbCBpc0Fw
cGxpY2FibGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGV4dGVuc2lvbkVuYWJsZWQo
IkdMX0NIUk9NSVVNX2ZyYW1lYnVmZmVyX21peGVkX3NhbXBsZXMiKSAmJgorICAgICAgICAgICAg
ICAgZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3JnYjhfcmdiYTgiKTsKKyAgICB9CisKKyAgICB2
b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsK
KworICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBrVmVydGV4U2hhZGVyU291cmNlID0KKyAgICAgICAgICAgICJhdHRyaWJ1dGUgbWVkaXVtcCB2
ZWM0IHBvc2l0aW9uO1xuIgorICAgICAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAg
ICAgICIgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247XG4iCisgICAgICAgICAgICAifVxuIjsKKwor
ICAgICAgICBzdGF0aWMgY29uc3QgY2hhcioga0ZyYWdtZW50U2hhZGVyU291cmNlID0KKyAgICAg
ICAgICAgICJ1bmlmb3JtIG1lZGl1bXAgdmVjNCBjb2xvcjtcbiIKKyAgICAgICAgICAgICJ2b2lk
IG1haW4oKSB7XG4iCisgICAgICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSBjb2xvcjtcbiIKKyAg
ICAgICAgICAgICJ9XG4iOworCisgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorICAgICAgICBt
UHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKGtWZXJ0ZXhTaGFkZXJTb3VyY2UsIGtGcmFnbWVudFNo
YWRlclNvdXJjZSk7CisKKyAgICAgICAgR0x1aW50IHBvc2l0aW9uX2xvYyA9IGdsR2V0QXR0cmli
TG9jYXRpb24obVByb2dyYW0sICJwb3NpdGlvbiIpOworICAgICAgICBtQ29sb3JMb2MgICAgICAg
ICAgID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJjb2xvciIpOworCisgICAgICAg
IGdsR2VuQnVmZmVycygxLCAmbVZCTyk7CisgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9C
VUZGRVIsIG1WQk8pOworCisgICAgICAgIHN0YXRpYyBmbG9hdCB2ZXJ0aWNlc1tdID0geworICAg
ICAgICAgICAgMS4wZiwgIDEuMGYsIC0xLjBmLCAxLjBmLCAgLTEuMGYsIC0xLjBmLCAtMS4wZiwg
MS4wZiwgLTEuMGYsCisgICAgICAgICAgICAtMS4wZiwgMS4wZiwgLTEuMGYsIC0xLjBmLCAtMS4w
ZiwgMS4wZiwgIC0xLjBmLCAxLjBmLCAxLjBmLAorICAgICAgICB9OworICAgICAgICBnbEJ1ZmZl
ckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBzaXplb2YodmVydGljZXMpLCB2ZXJ0aWNlcywgR0xfU1RB
VElDX0RSQVcpOworICAgICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHBvc2l0aW9uX2xv
Yyk7CisgICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbl9sb2MsIDIsIEdMX0ZM
T0FULCBHTF9GQUxTRSwgMCwgMCk7CisKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cisg
ICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBnbERl
bGV0ZUJ1ZmZlcnMoMSwgJm1WQk8pOworICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0p
OworCisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgICAgIEFOR0xFVGVzdDo6
VGVhckRvd24oKTsKKyAgICB9CisKKyAgICB2b2lkIHByZXBhcmVGb3JEcmF3KFNldHVwRkJPVHlw
ZSBmYm9fdHlwZSkKKyAgICB7CisgICAgICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7
CisgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1UZXh0dXJlKTsKKyAgICAgICAgZ2xCaW5kVGV4
dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZSk7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAg
ICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xf
Q0xBTVBfVE9fRURHRSk7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgICAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAg
ICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIGtXaWR0aCwga0hl
aWdodCwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAgICAg
IE5VTEwpOworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIDApOworCisgICAg
ICAgIGdsR2VuUmVuZGVyYnVmZmVycygxLCAmbVN0ZW5jaWxSQik7CisgICAgICAgIGdsQmluZFJl
bmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1TdGVuY2lsUkIpOworCisgICAgICAgIGlmIChm
Ym9fdHlwZSA9PSBNaXhlZFNhbXBsZUZCTykKKyAgICAgICAgeworICAgICAgICAgICAgLy8gQ3Jl
YXRlIGEgc2FtcGxlIGJ1ZmZlci4KKyAgICAgICAgICAgIEdMc2l6ZWkgbnVtX3NhbXBsZXMgPSA4
LCBtYXhfc2FtcGxlcyA9IDA7CisgICAgICAgICAgICBnbEdldEludGVnZXJ2KEdMX01BWF9TQU1Q
TEVTLCAmbWF4X3NhbXBsZXMpOworICAgICAgICAgICAgbnVtX3NhbXBsZXMgPSBzdGQ6Om1pbihu
dW1fc2FtcGxlcywgbWF4X3NhbXBsZXMpOworICAgICAgICAgICAgZ2xSZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRShHTF9SRU5ERVJCVUZGRVIsIG51bV9zYW1wbGVzLCBHTF9TVEVO
Q0lMX0lOREVYOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAga1dpZHRoLCBrSGVpZ2h0KTsKKyAgICAgICAgICAgIEdMaW50IHBhcmFtID0gMDsKKyAg
ICAgICAgICAgIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYoR0xfUkVOREVSQlVGRkVSLCBH
TF9SRU5ERVJCVUZGRVJfU0FNUExFUywgJnBhcmFtKTsKKyAgICAgICAgICAgIEVYUEVDVF9HVChw
YXJhbSwgMSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAg
ICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBHTF9TVEVOQ0lMX0lOREVY
OCwga1dpZHRoLCBrSGVpZ2h0KTsKKyAgICAgICAgfQorICAgICAgICBnbEJpbmRSZW5kZXJidWZm
ZXIoR0xfUkVOREVSQlVGRkVSLCAwKTsKKworICAgICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAm
bVNhbXBsZUZCTyk7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBt
U2FtcGxlRkJPKTsKKyAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZF
UiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlLCAwKTsKKyAg
ICAgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfU1RFTkNJ
TF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbVN0ZW5jaWxSQik7CisgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxHTGVu
dW0+KEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKSwKKyAgICAgICAgICAgICAgICAgIGdsQ2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOworCisgICAgICAgIGdsVXNlUHJvZ3Jh
bShtUHJvZ3JhbSk7CisgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIDApOwor
ICAgICAgICBnbFZpZXdwb3J0KDAsIDAsIGtXaWR0aCwga0hlaWdodCk7CisgICAgICAgIGdsQ2xl
YXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKKyAgICAgICAgZ2xDbGVhclN0ZW5jaWwo
MSk7CisgICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVG
RkVSX0JJVCk7CisgICAgICAgIGdsRW5hYmxlKEdMX1NURU5DSUxfVEVTVCk7CisgICAgICAgIGds
RW5hYmxlKEdMX0JMRU5EKTsKKyAgICAgICAgZ2xCbGVuZEZ1bmMoR0xfU1JDX0FMUEhBLCBHTF9P
TkVfTUlOVVNfU1JDX0FMUEhBKTsKKyAgICAgICAgZ2xTdGVuY2lsTWFzaygweGZmZmZmZmZmKTsK
KyAgICAgICAgZ2xTdGVuY2lsRnVuYyhHTF9FUVVBTCwgMSwgMHhmZmZmZmZmZik7CisgICAgICAg
IGdsU3RlbmNpbE9wKEdMX0tFRVAsIEdMX0tFRVAsIEdMX1pFUk8pOworCisgICAgICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOworICAgIH0KKworICAgIHZvaWQgY2xlYW51cCgpCisgICAgeworICAg
ICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7CisgICAgICAgIGdsRGVs
ZXRlRnJhbWVidWZmZXJzKDEsICZtU2FtcGxlRkJPKTsKKyAgICAgICAgZ2xEZWxldGVUZXh0dXJl
cygxLCAmbVRleHR1cmUpOworICAgICAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1TdGVu
Y2lsUkIpOworCisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIH0KKworICAgIEdM
dWludCBtU2FtcGxlRkJPOworICAgIEdMdWludCBtU3RlbmNpbFJCOworICAgIEdMdWludCBtVGV4
dHVyZTsKKworICAgIEdMdWludCBtUHJvZ3JhbTsKKyAgICBHTHVpbnQgbVZCTzsKKyAgICBHTGlu
dCBtQ29sb3JMb2M7Cit9OworCit9ICAvLworCitURVNUX1AoQ0hST01JVU1GcmFtZWJ1ZmZlck1p
eGVkU2FtcGxlc1Rlc3QsIFN0YXRlU2V0dGluZ1Rlc3QpCit7CisgICAgaWYgKCFpc0FwcGxpY2Fi
bGUoKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHTGludCB2YWx1ZSA9
IC0xOworICAgIGdsR2V0SW50ZWdlcnYoR0xfQ09WRVJBR0VfTU9EVUxBVElPTl9DSFJPTUlVTSwg
JnZhbHVlKTsKKyAgICBFWFBFQ1RfRVEoR0xfTk9ORSwgdmFsdWUpOworICAgIEdMZW51bSBrVmFs
dWVzW10gPSB7R0xfTk9ORSwgR0xfUkdCLCBHTF9SR0JBLCBHTF9BTFBIQX07CisgICAgZm9yIChh
dXRvIGV4cGVjdCA6IGtWYWx1ZXMpCisgICAgeworICAgICAgICBnbENvdmVyYWdlTW9kdWxhdGlv
bkNIUk9NSVVNKGV4cGVjdCk7CisgICAgICAgIHZhbHVlID0gLTE7CisgICAgICAgIGdsR2V0SW50
ZWdlcnYoR0xfQ09WRVJBR0VfTU9EVUxBVElPTl9DSFJPTUlVTSwgJnZhbHVlKTsKKyAgICAgICAg
RVhQRUNUX0VRKGV4cGVjdCwgc3RhdGljX2Nhc3Q8R0xlbnVtPih2YWx1ZSkpOworICAgICAgICBF
WFBFQ1RfRVEoc3RhdGljX2Nhc3Q8R0xlbnVtPihHTF9OT19FUlJPUiksIGdsR2V0RXJyb3IoKSk7
CisgICAgfQorCisgICAgZ2xDb3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTShHTF9CWVRFKTsKKyAg
ICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8R0xlbnVtPihHTF9JTlZBTElEX0VOVU0pLCBnbEdldEVy
cm9yKCkpOworICAgIHZhbHVlID0gLTE7CisgICAgZ2xHZXRJbnRlZ2VydihHTF9DT1ZFUkFHRV9N
T0RVTEFUSU9OX0NIUk9NSVVNLCAmdmFsdWUpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxH
TGVudW0+KEdMX0FMUEhBKSwgc3RhdGljX2Nhc3Q8R0xlbnVtPih2YWx1ZSkpOworICAgIEVYUEVD
VF9FUShzdGF0aWNfY2FzdDxHTGVudW0+KEdMX05PX0VSUk9SKSwgZ2xHZXRFcnJvcigpKTsKK30K
KworLy8gVGhlIHRlc3QgcGF0dGVybiBpcyBhcyBmb2xsb3dzOgorLy8gQSBncmVlbiB0cmlhbmds
ZSAoYm90dG9tIGxlZnQsIHRvcCByaWdodCwgdG9wIGxlZnQpLgorLy8gQSBibHVlIHRyaWFuZ2xl
ICh0b3AgbGVmdCwgYm90dG9tIHJpZ2h0LCBib3R0b20gbGVmdCkuCisvLyBUaGUgdHJpYW5nbGVz
IHdpbGwgb3ZlcmxhcCBidXQgb3ZlcmxhcCBvbmx5IGNvbnRhaW5zIGdyZWVuIHBpeGVscywKKy8v
IGR1ZSB0byBlYWNoIGRyYXcgZXJhc2luZyBpdHMgYXJlYSBmcm9tIHN0ZW5jaWwuCisvLyBUaGUg
Ymx1ZSB0cmlhbmdsZSB3aWxsIGZpbGwgb25seSB0aGUgYXJlYSAoYm90dG9tIGxlZnQsIGNlbnRl
ciwKKy8vIGJvdHRvbSByaWdodCkuCisKKy8vIFRoZSB0ZXN0IHRlc3RzIHRoYXQgQ292ZXJhZ2VN
b2R1bGF0aW9uIGNhbGwgd29ya3MuCisvLyBUaGUgZnJhY3Rpb25hbCBwaXhlbHMgb2YgYm90aCB0
cmlhbmdsZXMgZW5kIHVwIGJlaW5nIG1vZHVsYXRlZAorLy8gYnkgdGhlIGNvdmVyYWdlIG9mIHRo
ZSBmcmFnbWVudC4gVGVzdCB0aGF0IGRyYXdpbmcgd2l0aCBhbmQgd2l0aG91dAorLy8gQ292ZXJh
Z2VNb2R1bGF0aW9uIGNhdXNlcyB0aGUgcmVzdWx0IHRvIGJlIGRpZmZlcmVudC4KK1RFU1RfUChD
SFJPTUlVTUZyYW1lYnVmZmVyTWl4ZWRTYW1wbGVzVGVzdCwgQ292ZXJhZ2VNb2R1bGF0aW9uKQor
eworICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCisgICAgeworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIHN0YXRpYyBjb25zdCBmbG9hdCBrQmx1ZVtdICA9IHswLjBmLCAwLjBmLCAxLjBmLCAx
LjBmfTsKKyAgICBzdGF0aWMgY29uc3QgZmxvYXQga0dyZWVuW10gPSB7MC4wZiwgMS4wZiwgMC4w
ZiwgMS4wZn07CisgICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gcmVzdWx0c1szXTsKKyAg
ICBjb25zdCBHTGludCBrUmVzdWx0U2l6ZSA9IGtXaWR0aCAqIGtIZWlnaHQgKiA0OworCisgICAg
Zm9yIChpbnQgcGFzcyA9IDA7IHBhc3MgPCAzOyArK3Bhc3MpCisgICAgeworICAgICAgICBwcmVw
YXJlRm9yRHJhdyhNaXhlZFNhbXBsZUZCTyk7CisgICAgICAgIGlmIChwYXNzID09IDEpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGdsQ292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU0oR0xfUkdCQSk7
CisgICAgICAgIH0KKyAgICAgICAgZ2xVbmlmb3JtNGZ2KG1Db2xvckxvYywgMSwga0dyZWVuKTsK
KyAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMCwgMyk7CisKKyAgICAgICAgZ2xV
bmlmb3JtNGZ2KG1Db2xvckxvYywgMSwga0JsdWUpOworICAgICAgICBnbERyYXdBcnJheXMoR0xf
VFJJQU5HTEVTLCAzLCAzKTsKKyAgICAgICAgaWYgKHBhc3MgPT0gMSkKKyAgICAgICAgeworICAg
ICAgICAgICAgZ2xDb3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTShHTF9OT05FKTsKKyAgICAgICAg
fQorICAgICAgICByZXN1bHRzW3Bhc3NdLnJlc2V0KG5ldyB1aW50OF90W2tSZXN1bHRTaXplXSk7
CisgICAgICAgIG1lbXNldChyZXN1bHRzW3Bhc3NdLmdldCgpLCAxMjN1LCBrUmVzdWx0U2l6ZSk7
CisgICAgICAgIGdsUmVhZFBpeGVscygwLCAwLCBrV2lkdGgsIGtIZWlnaHQsIEdMX1JHQkEsIEdM
X1VOU0lHTkVEX0JZVEUsIHJlc3VsdHNbcGFzc10uZ2V0KCkpOworCisgICAgICAgIGNsZWFudXAo
KTsKKyAgICB9CisKKyAgICBFWFBFQ1RfTkUoMCwgbWVtY21wKHJlc3VsdHNbMF0uZ2V0KCksIHJl
c3VsdHNbMV0uZ2V0KCksIGtSZXN1bHRTaXplKSk7CisgICAgLy8gVmVyaWZ5IHRoYXQgcmVuZGVy
aW5nIGlzIGRldGVybWluaXN0aWMsIHNvIHRoYXQgdGhlIHBhc3MgYWJvdmUgZG9lcyBub3QKKyAg
ICAvLyBjb21lIGZyb20gbm9uLWRldGVybWluaXN0aWMgcmVuZGVyaW5nLgorICAgIEVYUEVDVF9F
USgwLCBtZW1jbXAocmVzdWx0c1swXS5nZXQoKSwgcmVzdWx0c1syXS5nZXQoKSwga1Jlc3VsdFNp
emUpKTsKK30KKworLy8gVGhlIHRlc3QgdGVzdHMgdGhhdCB0aGUgc3RlbmNpbCBidWZmZXIgY2Fu
IGJlIG11bHRpc2FtcGxlZCwgZXZlbiB0aG91Z2ggdGhlCisvLyBjb2xvciBidWZmZXIgaXMgc2lu
Z2xlLXNhbXBsZWQuIERyYXdzIHRoZSBzYW1lIHBhdHRlcm4gd2l0aCBzaW5nbGUtc2FtcGxlCisv
LyBzdGVuY2lsIGJ1ZmZlciBhbmQgd2l0aCBtdWx0aXNhbXBsZSBzdGVuY2lsIGJ1ZmZlci4gVGhl
IGltYWdlcyBzaG91bGQgZGlmZmVyLgorVEVTVF9QKENIUk9NSVVNRnJhbWVidWZmZXJNaXhlZFNh
bXBsZXNUZXN0LCBNdWx0aXNhbXBsZVN0ZW5jaWxFZmZlY3RpdmUpCit7CisgICAgaWYgKCFpc0Fw
cGxpY2FibGUoKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdGF0aWMg
Y29uc3QgZmxvYXQga0JsdWVbXSAgPSB7MC4wZiwgMC4wZiwgMS4wZiwgMS4wZn07CisgICAgc3Rh
dGljIGNvbnN0IGZsb2F0IGtHcmVlbltdID0gezAuMGYsIDEuMGYsIDAuMGYsIDEuMGZ9OworCisg
ICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gcmVzdWx0c1szXTsKKyAgICBjb25zdCBHTGlu
dCBrUmVzdWx0U2l6ZSA9IGtXaWR0aCAqIGtIZWlnaHQgKiA0OworCisgICAgZm9yIChpbnQgcGFz
cyA9IDA7IHBhc3MgPCAzOyArK3Bhc3MpCisgICAgeworICAgICAgICBpZiAocGFzcyA9PSAxKQor
ICAgICAgICB7CisgICAgICAgICAgICBwcmVwYXJlRm9yRHJhdyhNaXhlZFNhbXBsZUZCTyk7Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBwcmVwYXJlRm9y
RHJhdyhTaW5nbGVTYW1wbGVGQk8pOworICAgICAgICB9CisgICAgICAgIGdsVW5pZm9ybTRmdiht
Q29sb3JMb2MsIDEsIGtHcmVlbik7CisgICAgICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRVMs
IDAsIDMpOworCisgICAgICAgIGdsVW5pZm9ybTRmdihtQ29sb3JMb2MsIDEsIGtCbHVlKTsKKyAg
ICAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMywgMyk7CisKKyAgICAgICAgcmVzdWx0
c1twYXNzXS5yZXNldChuZXcgdWludDhfdFtrUmVzdWx0U2l6ZV0pOworICAgICAgICBtZW1zZXQo
cmVzdWx0c1twYXNzXS5nZXQoKSwgMTJ1LCBrUmVzdWx0U2l6ZSk7CisgICAgICAgIGdsUmVhZFBp
eGVscygwLCAwLCBrV2lkdGgsIGtIZWlnaHQsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHJl
c3VsdHNbcGFzc10uZ2V0KCkpOworCisgICAgICAgIGNsZWFudXAoKTsKKyAgICB9CisKKyAgICBF
WFBFQ1RfTkUoMCwgbWVtY21wKHJlc3VsdHNbMF0uZ2V0KCksIHJlc3VsdHNbMV0uZ2V0KCksIGtS
ZXN1bHRTaXplKSk7CisgICAgLy8gVmVyaWZ5IHRoYXQgcmVuZGVyaW5nIGlzIGRldGVybWluaXN0
aWMsIHNvIHRoYXQgdGhlIHBhc3MgYWJvdmUgZG9lcyBub3QKKyAgICAvLyBjb21lIGZyb20gbm9u
LWRldGVybWluaXN0aWMgcmVuZGVyaW5nLgorICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAocmVzdWx0
c1swXS5nZXQoKSwgcmVzdWx0c1syXS5nZXQoKSwga1Jlc3VsdFNpemUpKTsKK30KKworQU5HTEVf
SU5TVEFOVElBVEVfVEVTVChDSFJPTUlVTUZyYW1lYnVmZmVyTWl4ZWRTYW1wbGVzVGVzdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAg
ICBFUzJfT1BFTkdMRVMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgpKTsK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9GcmFtZWJ1
ZmZlclJlbmRlck1pcG1hcFRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9GcmFtZWJ1ZmZlclJlbmRlck1pcG1hcFRlc3QuY3Bw
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90
ZXN0cy9GcmFtZWJ1ZmZlclJlbmRlck1pcG1hcFRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMjA0IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3Qu
aCIKKwordXNpbmcgbmFtZXNwYWNlIGFuZ2xlOworCitjbGFzcyBGcmFtZWJ1ZmZlclJlbmRlck1p
cG1hcFRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBGcmFtZWJ1
ZmZlclJlbmRlck1pcG1hcFRlc3QoKQorICAgIHsKKyAgICAgICAgc2V0V2luZG93V2lkdGgoMjU2
KTsKKyAgICAgICAgc2V0V2luZG93SGVpZ2h0KDI1Nik7CisgICAgICAgIHNldENvbmZpZ1JlZEJp
dHMoOCk7CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmln
Qmx1ZUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgp
OworCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzU291cmNlID0gU0hBREVSX1NPVVJDRQor
ICAgICAgICAoCisgICAgICAgICAgICBhdHRyaWJ1dGUgaGlnaHAgdmVjNCBwb3NpdGlvbjsKKyAg
ICAgICAgICAgIHZvaWQgbWFpbih2b2lkKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGdsX1Bvc2l0aW9uID0gcG9zaXRpb247CisgICAgICAgICAgICB9CisgICAgICAgICk7CisKKyAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnNTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgICAg
ICgKKyAgICAgICAgICAgIHVuaWZvcm0gaGlnaHAgdmVjNCBjb2xvcjsKKyAgICAgICAgICAgIHZv
aWQgbWFpbih2b2lkKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xv
ciA9IGNvbG9yOworICAgICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAgIG1Qcm9ncmFt
ID0gQ29tcGlsZVByb2dyYW0odnNTb3VyY2UsIGZzU291cmNlKTsKKyAgICAgICAgaWYgKG1Qcm9n
cmFtID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIEZBSUwoKSA8PCAic2hhZGVyIGNvbXBp
bGF0aW9uIGZhaWxlZC4iOworICAgICAgICB9CisKKyAgICAgICAgbUNvbG9yTG9jYXRpb24gPSBn
bEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgImNvbG9yIik7CisKKyAgICAgICAgZ2xVc2VQ
cm9ncmFtKG1Qcm9ncmFtKTsKKworICAgICAgICBnbENsZWFyQ29sb3IoMCwgMCwgMCwgMCk7Cisg
ICAgICAgIGdsQ2xlYXJEZXB0aGYoMC4wKTsKKyAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZG
RVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCk7CisKKyAgICAgICAgZ2xFbmFibGUoR0xfQkxF
TkQpOworICAgICAgICBnbERpc2FibGUoR0xfREVQVEhfVEVTVCk7CisKKyAgICAgICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKKyAg
ICB7CisgICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7CisKKyAgICAgICAgQU5HTEVU
ZXN0OjpUZWFyRG93bigpOworICAgIH0KKworICAgIEdMdWludCBtUHJvZ3JhbTsKKyAgICBHTGlu
dCBtQ29sb3JMb2NhdGlvbjsKK307CisKKy8vIFZhbGlkYXRlIHRoYXQgaWYgd2UgYXJlIGluIEVT
MyBvciBHTF9PRVNfZmJvX3JlbmRlcl9taXBtYXAgZXhpc3RzLCB0aGVyZSBhcmUgbm8gdmFsaWRh
dGlvbiBlcnJvcnMKKy8vIHdoZW4gdXNpbmcgYSBub24temVybyBsZXZlbCBpbiBnbEZyYW1lYnVm
ZmVyVGV4dHVyZTJELgorVEVTVF9QKEZyYW1lYnVmZmVyUmVuZGVyTWlwbWFwVGVzdCwgVmFsaWRh
dGlvbikKK3sKKyAgICBib29sIHJlbmRlclRvTWlwbWFwU3VwcG9ydGVkID0KKyAgICAgICAgZXh0
ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFwIikgfHwgZ2V0Q2xpZW50TWFq
b3JWZXJzaW9uKCkgPiAyOworCisgICAgR0x1aW50IHRleCA9IDA7CisgICAgZ2xHZW5UZXh0dXJl
cygxLCAmdGV4KTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleCk7CisKKyAg
ICBjb25zdCBHTGludCBsZXZlbHMgPSA1OworICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCBsZXZl
bHM7IGkrKykKKyAgICB7CisgICAgICAgIEdMc2l6ZWkgc2l6ZSA9IDEgPDwgKChsZXZlbHMgLSAx
KSAtIGkpOworICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgaSwgR0xfUkdCQSwg
c2l6ZSwgc2l6ZSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgTlVMTCk7CisgICAgfQor
CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBHTHVpbnQgZmJvID0gMDsKKyAgICBn
bEdlbkZyYW1lYnVmZmVycygxLCAmZmJvKTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFN
RUJVRkZFUiwgZmJvKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGZvciAoR0xp
bnQgaSA9IDA7IGkgPCBsZXZlbHM7IGkrKykKKyAgICB7CisgICAgICAgIGdsRnJhbWVidWZmZXJU
ZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJF
XzJELCB0ZXgsIGkpOworCisgICAgICAgIGlmIChpID4gMCAmJiAhcmVuZGVyVG9NaXBtYXBTdXBw
b3J0ZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElE
X1ZBTFVFKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAg
IEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgICAgICAgICAgRVhQRUNUX0VRKGdsQ2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUiksIEdMZW51bShHTF9GUkFNRUJVRkZFUl9DT01Q
TEVURSkpOworICAgICAgICB9CisgICAgfQorCisgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwg
JmZibyk7CisgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGV4KTsKK30KKworLy8gUmVuZGVyIHRv
IHZhcmlvdXMgbGV2ZWxzIG9mIGEgdGV4dHVyZSBhbmQgY2hlY2sgdGhhdCB0aGV5IGhhdmUgdGhl
IGNvcnJlY3QgY29sb3IgZGF0YSB2aWEgUmVhZFBpeGVscworVEVTVF9QKEZyYW1lYnVmZmVyUmVu
ZGVyTWlwbWFwVGVzdCwgUmVuZGVyVG9NaXBtYXApCit7CisgICAgLy8gVE9ETyhnZW9mZmxhbmcp
OiBGaWd1cmUgb3V0IHdoeSB0aGlzIGlzIGJyb2tlbiBvbiBJbnRlbCBPcGVuR0wKKyAgICBpZiAo
SXNJbnRlbCgpICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVf
VFlQRV9PUEVOR0xfQU5HTEUpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tp
cHBlZCBvbiBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBib29sIHJlbmRlclRvTWlwbWFwU3VwcG9ydGVkID0KKyAgICAgICAgZXh0ZW5z
aW9uRW5hYmxlZCgiR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFwIikgfHwgZ2V0Q2xpZW50TWFqb3JW
ZXJzaW9uKCkgPiAyOworICAgIGlmICghcmVuZGVyVG9NaXBtYXBTdXBwb3J0ZWQpCisgICAgewor
ICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEdMX09FU19mYm9fcmVu
ZGVyX21pcG1hcCBvciBFUzMgaXMgbm90IGF2YWlsYWJsZS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IEdMZmxvYXQgbGV2ZWxDb2xvcnNbXSA9Cisg
ICAgeworICAgICAgICAxLjBmLCAwLjBmLCAwLjBmLCAxLjBmLAorICAgICAgICAwLjBmLCAxLjBm
LCAwLjBmLCAxLjBmLAorICAgICAgICAwLjBmLCAwLjBmLCAxLjBmLCAxLjBmLAorICAgICAgICAx
LjBmLCAxLjBmLCAwLjBmLCAxLjBmLAorICAgICAgICAxLjBmLCAwLjBmLCAxLjBmLCAxLjBmLAor
ICAgICAgICAwLjBmLCAxLjBmLCAxLjBmLCAxLjBmLAorICAgIH07CisgICAgY29uc3QgR0xpbnQg
dGVzdExldmVscyA9IHN0YXRpY19jYXN0PEdMaW50PihBcnJheVNpemUobGV2ZWxDb2xvcnMpIC8g
NCk7CisKKyAgICBHTHVpbnQgdGV4ID0gMDsKKyAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXgpOwor
ICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4KTsKKworICAgIGZvciAoR0xpbnQg
aSA9IDA7IGkgPCB0ZXN0TGV2ZWxzOyBpKyspCisgICAgeworICAgICAgICBHTHNpemVpIHNpemUg
PSAxIDw8ICgodGVzdExldmVscyAtIDEpIC0gaSk7CisgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9U
RVhUVVJFXzJELCBpLCBHTF9SR0JBLCBzaXplLCBzaXplLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05F
RF9CWVRFLCBOVUxMKTsKKyAgICB9CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAg
IEdMdWludCBmYm8gPSAwOworICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZmYm8pOworICAgIGds
QmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBmYm8pOworICAgIEVYUEVDVF9HTF9OT19F
UlJPUigpOworCisgICAgLy8gUmVuZGVyIHRvIHRoZSBsZXZlbHMgb2YgdGhlIHRleHR1cmUgd2l0
aCBkaWZmZXJlbnQgY29sb3JzCisgICAgZm9yIChHTGludCBpID0gMDsgaSA8IHRlc3RMZXZlbHM7
IGkrKykKKyAgICB7CisgICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZG
RVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXgsIGkpOworICAgICAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgICAgICBnbFVzZVByb2dyYW0obVByb2dyYW0p
OworICAgICAgICBnbFVuaWZvcm00ZnYobUNvbG9yTG9jYXRpb24sIDEsIGxldmVsQ29sb3JzICsg
KGkgKiA0KSk7CisKKyAgICAgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYp
OworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICB9CisKKyAgICAvLyBUZXN0IHRo
YXQgdGhlIGxldmVscyBvZiB0aGUgdGV4dHVyZSBhcmUgY29ycmVjdAorICAgIGZvciAoR0xpbnQg
aSA9IDA7IGkgPCB0ZXN0TGV2ZWxzOyBpKyspCisgICAgeworICAgICAgICBnbEZyYW1lYnVmZmVy
VGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVS
RV8yRCwgdGV4LCBpKTsKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAg
Y29uc3QgR0xmbG9hdCAqY29sb3IgPSBsZXZlbENvbG9ycyArIChpICogNCk7CisgICAgICAgIEVY
UEVDVF9QSVhFTF9FUSgwLCAwLCBjb2xvclswXSAqIDI1NSwgY29sb3JbMV0gKiAyNTUsIGNvbG9y
WzJdICogMjU1LCBjb2xvclszXSAqIDI1NSk7CisgICAgfQorCisgICAgZ2xEZWxldGVGcmFtZWJ1
ZmZlcnMoMSwgJmZibyk7CisgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGV4KTsKKworICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOworfQorCisvLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29u
ZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lv
bikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgorQU5HTEVfSU5TVEFOVElBVEVf
VEVTVChGcmFtZWJ1ZmZlclJlbmRlck1pcG1hcFRlc3QsCisgICAgICAgICAgICAgICAgICAgICAg
IEVTMl9EM0Q5KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAorICAgICAg
ICAgICAgICAgICAgICAgICBFUzNfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMy
X09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKCksCisgICAgICAg
ICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpLAorICAgICAgICAgICAgICAgICAgICAgICBF
UzNfT1BFTkdMRVMoKSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
Z2xfdGVzdHMvRnJhbWVidWZmZXJUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRnJhbWVidWZmZXJUZXN0LmNwcAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRnJh
bWVidWZmZXJUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM3OSBAQAorLy8KKy8v
IENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKy8vIEZyYW1lYnVmZmVyIHRlc3RzOgorLy8gICBWYXJpb3VzIHRlc3RzIHJlbGF0ZWQgZm9y
IEZyYW1idWZmZXJzLgorLy8KKworI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKworY2xhc3MgRnJhbWVidWZmZXJGb3JtYXRzVGVzdCA6
IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIEZyYW1lYnVmZmVyRm9ybWF0
c1Rlc3QoKSA6IG1GcmFtZWJ1ZmZlcigwKSwgbVRleHR1cmUoMCksIG1SZW5kZXJidWZmZXIoMCks
IG1Qcm9ncmFtKDApCisgICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOworICAgICAg
ICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKKyAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKKyAg
ICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4
KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAgIH0KKworICAgIHZvaWQgY2hl
Y2tCaXRDb3VudChHTHVpbnQgZmJvLCBHTGVudW0gY2hhbm5lbCwgR0xpbnQgbWluQml0cykKKyAg
ICB7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBmYm8pOworCisg
ICAgICAgIEdMaW50IGJpdHMgPSAwOworICAgICAgICBnbEdldEludGVnZXJ2KGNoYW5uZWwsICZi
aXRzKTsKKworICAgICAgICBpZiAobWluQml0cyA9PSAwKQorICAgICAgICB7CisgICAgICAgICAg
ICBFWFBFQ1RfRVEobWluQml0cywgYml0cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAg
ICAgICB7CisgICAgICAgICAgICBFWFBFQ1RfR0UoYml0cywgbWluQml0cyk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICB2b2lkIHRlc3RCaXRDb3VudHMoR0x1aW50IGZibywKKyAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbWluUmVkQml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbWluR3JlZW5CaXRzLAorICAgICAgICAgICAgICAgICAgICAgICBHTGludCBtaW5CbHVlQml0
cywKKyAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbWluQWxwaGFCaXRzLAorICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBtaW5EZXB0aEJpdHMsCisgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IG1pblN0ZW5jaWxCaXRzKQorICAgIHsKKyAgICAgICAgY2hlY2tCaXRDb3VudChmYm8s
IEdMX1JFRF9CSVRTLCBtaW5SZWRCaXRzKTsKKyAgICAgICAgY2hlY2tCaXRDb3VudChmYm8sIEdM
X0dSRUVOX0JJVFMsIG1pbkdyZWVuQml0cyk7CisgICAgICAgIGNoZWNrQml0Q291bnQoZmJvLCBH
TF9CTFVFX0JJVFMsIG1pbkJsdWVCaXRzKTsKKyAgICAgICAgY2hlY2tCaXRDb3VudChmYm8sIEdM
X0FMUEhBX0JJVFMsIG1pbkFscGhhQml0cyk7CisgICAgICAgIGNoZWNrQml0Q291bnQoZmJvLCBH
TF9ERVBUSF9CSVRTLCBtaW5EZXB0aEJpdHMpOworICAgICAgICBjaGVja0JpdENvdW50KGZibywg
R0xfU1RFTkNJTF9CSVRTLCBtaW5TdGVuY2lsQml0cyk7CisgICAgfQorCisgICAgdm9pZCB0ZXN0
VGV4dHVyZUZvcm1hdChHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBtaW5SZWRCaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbWluR3JlZW5CaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbWluQmx1
ZUJpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBtaW5BbHBoYUJpdHMpCisg
ICAgeworICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtVGV4dHVyZSk7CisgICAgICAgIGdsQmlu
ZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUpOworICAgICAgICBnbFRleFN0b3JhZ2Uy
REVYVChHTF9URVhUVVJFXzJELCAxLCBpbnRlcm5hbEZvcm1hdCwgMSwgMSk7CisKKyAgICAgICAg
Z2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVO
VDAsIEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlLCAwKTsKKworICAgICAgICB0ZXN0Qml0Q291bnRz
KG1GcmFtZWJ1ZmZlciwgbWluUmVkQml0cywgbWluR3JlZW5CaXRzLCBtaW5CbHVlQml0cywgbWlu
QWxwaGFCaXRzLCAwLCAwKTsKKyAgICB9CisKKyAgICB2b2lkIHRlc3RSZW5kZXJidWZmZXJNdWx0
aXNhbXBsZUZvcm1hdChpbnQgbWluRVNWZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50VHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQpCisgICAg
eworICAgICAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IEZpZ3VyZSBvdXQgd2h5IHRoaXMgaXMgYnJv
a2VuIG9uIEludGVsIE9wZW5HTAorICAgICAgICBpZiAoSXNJbnRlbCgpICYmIGdldFBsYXRmb3Jt
UmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIE9w
ZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGludCBjbGllbnRWZXJzaW9uID0gZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCk7CisgICAg
ICAgIGlmIChjbGllbnRWZXJzaW9uIDwgbWluRVNWZXJzaW9uKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBDaGVjayB0aGF0IG11bHRpc2Ft
cGxlIGlzIHN1cHBvcnRlZCB3aXRoIGF0IGxlYXN0IHR3byBzYW1wbGVzIChtaW5pbXVtIHJlcXVp
cmVkIGlzIDEpCisgICAgICAgIGJvb2wgc3VwcG9ydHMyU2FtcGxlcyA9IGZhbHNlOworCisgICAg
ICAgIGlmIChjbGllbnRWZXJzaW9uID09IDIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChl
eHRlbnNpb25FbmFibGVkKCJBTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGludCBtYXhTYW1wbGVzOworICAgICAgICAgICAgICAg
IGdsR2V0SW50ZWdlcnYoR0xfTUFYX1NBTVBMRVNfQU5HTEUsICZtYXhTYW1wbGVzKTsKKyAgICAg
ICAgICAgICAgICBzdXBwb3J0czJTYW1wbGVzID0gbWF4U2FtcGxlcyA+PSAyOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgYXNz
ZXJ0KGNsaWVudFZlcnNpb24gPj0gMyk7CisgICAgICAgICAgICBpbnQgbWF4U2FtcGxlczsKKyAg
ICAgICAgICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1NBTVBMRVMsICZtYXhTYW1wbGVzKTsKKyAg
ICAgICAgICAgIHN1cHBvcnRzMlNhbXBsZXMgPSBtYXhTYW1wbGVzID49IDI7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoIXN1cHBvcnRzMlNhbXBsZXMpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGdsR2VuUmVuZGVyYnVmZmVycygxLCAmbVJl
bmRlcmJ1ZmZlcik7CisgICAgICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIs
IG1SZW5kZXJidWZmZXIpOworCisgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgICAg
ICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdMX1JFTkRFUkJVRkZFUiwg
MiwgaW50ZXJuYWxGb3JtYXQsIDEyOCwgMTI4KTsKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7CisgICAgICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIGF0
dGFjaG1lbnRUeXBlLCBHTF9SRU5ERVJCVUZGRVIsIG1SZW5kZXJidWZmZXIpOworICAgICAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICB9CisKKyAgICB2b2lkIHRlc3RaZXJvSGVpZ2h0UmVu
ZGVyYnVmZmVyKCkKKyAgICB7CisgICAgICAgIGdsR2VuUmVuZGVyYnVmZmVycygxLCAmbVJlbmRl
cmJ1ZmZlcik7CisgICAgICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1S
ZW5kZXJidWZmZXIpOworICAgICAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVG
RkVSLCBHTF9SR0JBOCwgMSwgMCk7CisgICAgICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9SRU5ERVJCVUZGRVIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVJlbmRlcmJ1ZmZlcik7CisgICAgICAg
IEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgIH0KKworICAgIHZvaWQgU2V0VXAoKSBvdmVycmlk
ZQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOworCisgICAgICAgIGdsR2VuRnJh
bWVidWZmZXJzKDEsICZtRnJhbWVidWZmZXIpOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihH
TF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVyKTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3du
KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKKworICAg
ICAgICBpZiAobVRleHR1cmUgIT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xEZWxldGVU
ZXh0dXJlcygxLCAmbVRleHR1cmUpOworICAgICAgICAgICAgbVRleHR1cmUgPSAwOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKG1SZW5kZXJidWZmZXIgIT0gMCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZtUmVuZGVyYnVmZmVyKTsKKyAgICAgICAg
ICAgIG1SZW5kZXJidWZmZXIgPSAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1GcmFtZWJ1
ZmZlciAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygx
LCAmbUZyYW1lYnVmZmVyKTsKKyAgICAgICAgICAgIG1GcmFtZWJ1ZmZlciA9IDA7CisgICAgICAg
IH0KKworICAgICAgICBpZiAobVByb2dyYW0gIT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAg
Z2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICAgICAgICAgIG1Qcm9ncmFtID0gMDsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIEdMdWludCBtRnJhbWVidWZmZXI7CisgICAgR0x1aW50IG1U
ZXh0dXJlOworICAgIEdMdWludCBtUmVuZGVyYnVmZmVyOworICAgIEdMdWludCBtUHJvZ3JhbTsK
K307CisKK1RFU1RfUChGcmFtZWJ1ZmZlckZvcm1hdHNUZXN0LCBSR0JBNCkKK3sKKyAgICB0ZXN0
VGV4dHVyZUZvcm1hdChHTF9SR0JBNCwgNCwgNCwgNCwgNCk7Cit9CisKK1RFU1RfUChGcmFtZWJ1
ZmZlckZvcm1hdHNUZXN0LCBSR0I1NjUpCit7CisgICAgdGVzdFRleHR1cmVGb3JtYXQoR0xfUkdC
NTY1LCA1LCA2LCA1LCAwKTsKK30KKworVEVTVF9QKEZyYW1lYnVmZmVyRm9ybWF0c1Rlc3QsIFJH
QjgpCit7CisgICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAmJiAhZXh0ZW5zaW9u
RW5hYmxlZCgiR0xfT0VTX3JnYjhfcmdiYTgiKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8
PCAiVGVzdCBza2lwcGVkIGR1ZSB0byBtaXNzaW5nIEVTMyBvciBHTF9PRVNfcmdiOF9yZ2JhOC4i
IDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHRlc3RUZXh0dXJl
Rm9ybWF0KEdMX1JHQjhfT0VTLCA4LCA4LCA4LCAwKTsKK30KKworVEVTVF9QKEZyYW1lYnVmZmVy
Rm9ybWF0c1Rlc3QsIEJHUkE4KQoreworICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhU
X3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4IikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwg
IlRlc3Qgc2tpcHBlZCBkdWUgdG8gbWlzc2luZyBHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4
ODguIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0ZXN0VGV4
dHVyZUZvcm1hdChHTF9CR1JBOF9FWFQsIDgsIDgsIDgsIDgpOworfQorCitURVNUX1AoRnJhbWVi
dWZmZXJGb3JtYXRzVGVzdCwgUkdCQTgpCit7CisgICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lv
bigpIDwgMyAmJiAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3JnYjhfcmdiYTgiKSkKKyAgICB7
CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGR1ZSB0byBtaXNzaW5nIEVTMyBv
ciBHTF9PRVNfcmdiOF9yZ2JhOC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIHRlc3RUZXh0dXJlRm9ybWF0KEdMX1JHQkE4X09FUywgOCwgOCwgOCwgOCk7Cit9
CisKK1RFU1RfUChGcmFtZWJ1ZmZlckZvcm1hdHNUZXN0LCBSZW5kZXJidWZmZXJNdWx0aXNhbXBs
ZV9ERVBUSDE2KQoreworICAgIHRlc3RSZW5kZXJidWZmZXJNdWx0aXNhbXBsZUZvcm1hdCgyLCBH
TF9ERVBUSF9BVFRBQ0hNRU5ULCBHTF9ERVBUSF9DT01QT05FTlQxNik7Cit9CisKK1RFU1RfUChG
cmFtZWJ1ZmZlckZvcm1hdHNUZXN0LCBSZW5kZXJidWZmZXJNdWx0aXNhbXBsZV9ERVBUSDI0KQor
eworICAgIHRlc3RSZW5kZXJidWZmZXJNdWx0aXNhbXBsZUZvcm1hdCgzLCBHTF9ERVBUSF9BVFRB
Q0hNRU5ULCBHTF9ERVBUSF9DT01QT05FTlQyNCk7Cit9CisKK1RFU1RfUChGcmFtZWJ1ZmZlckZv
cm1hdHNUZXN0LCBSZW5kZXJidWZmZXJNdWx0aXNhbXBsZV9ERVBUSDMyRikKK3sKKyAgICBpZiAo
Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8
ICJUZXN0IHNraXBwZWQgZHVlIHRvIG1pc3NpbmcgRVMzLiIgPDwgc3RkOjplbmRsOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgdGVzdFJlbmRlcmJ1ZmZlck11bHRpc2FtcGxlRm9ybWF0
KDMsIEdMX0RFUFRIX0FUVEFDSE1FTlQsIEdMX0RFUFRIX0NPTVBPTkVOVDMyRik7Cit9CisKK1RF
U1RfUChGcmFtZWJ1ZmZlckZvcm1hdHNUZXN0LCBSZW5kZXJidWZmZXJNdWx0aXNhbXBsZV9ERVBU
SDI0X1NURU5DSUw4KQoreworICAgIHRlc3RSZW5kZXJidWZmZXJNdWx0aXNhbXBsZUZvcm1hdCgz
LCBHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIEdMX0RFUFRIMjRfU1RFTkNJTDgpOworfQor
CitURVNUX1AoRnJhbWVidWZmZXJGb3JtYXRzVGVzdCwgUmVuZGVyYnVmZmVyTXVsdGlzYW1wbGVf
REVQVEgzMkZfU1RFTkNJTDgpCit7CisgICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwg
MykKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGR1ZSB0byBtaXNz
aW5nIEVTMy4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHRl
c3RSZW5kZXJidWZmZXJNdWx0aXNhbXBsZUZvcm1hdCgzLCBHTF9ERVBUSF9TVEVOQ0lMX0FUVEFD
SE1FTlQsIEdMX0RFUFRIMzJGX1NURU5DSUw4KTsKK30KKworVEVTVF9QKEZyYW1lYnVmZmVyRm9y
bWF0c1Rlc3QsIFJlbmRlcmJ1ZmZlck11bHRpc2FtcGxlX1NURU5DSUxfSU5ERVg4KQoreworICAg
IC8vIFRPRE8oZ2VvZmZsYW5nKTogRmlndXJlIG91dCBob3cgdG8gc3VwcG9ydCBHTFNURU5DSUxf
SU5ERVg4IG9uIGRlc2t0b3AgR0wKKyAgICBpZiAoR2V0UGFyYW0oKS5nZXRSZW5kZXJlcigpID09
IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkKKyAgICB7CisgICAgICAgIHN0
ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIERlc2t0b3AgT3BlbkdMLiIgPDwgc3RkOjplbmRs
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdGVzdFJlbmRlcmJ1ZmZlck11bHRpc2Ft
cGxlRm9ybWF0KDIsIEdMX1NURU5DSUxfQVRUQUNITUVOVCwgR0xfU1RFTkNJTF9JTkRFWDgpOwor
fQorCisvLyBUZXN0IHRoYXQgYmluZGluZyBhbiBpbmNvbXBsZXRlIGN1YmUgbWFwIGlzIHJlamVj
dGVkIGJ5IEFOR0xFLgorVEVTVF9QKEZyYW1lYnVmZmVyRm9ybWF0c1Rlc3QsIEluY29tcGxldGVD
dWJlTWFwKQoreworICAgIC8vIEZpcnN0IG1ha2UgYSBjb21wbGV0ZSBDdWJlTWFwLgorICAgIGds
R2VuVGV4dHVyZXMoMSwgJm1UZXh0dXJlKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVf
Q1VCRV9NQVAsIG1UZXh0dXJlKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV9DVUJFX01B
UF9QT1NJVElWRV9YLCAwLCBHTF9SR0JBLCA4LCA4LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9C
WVRFLAorICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVY
VFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZLCAwLCBHTF9SR0JBLCA4LCA4LCAwLCBHTF9SR0JBLCBH
TF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICBnbFRleElt
YWdlMkQoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aLCAwLCBHTF9SR0JBLCA4LCA4LCAw
LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICBudWxscHRyKTsK
KyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLCAwLCBHTF9S
R0JBLCA4LCA4LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAg
ICBudWxscHRyKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElW
RV9ZLCAwLCBHTF9SR0JBLCA4LCA4LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAg
ICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV9DVUJF
X01BUF9ORUdBVElWRV9aLCAwLCBHTF9SR0JBLCA4LCA4LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05F
RF9CWVRFLAorICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICBnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV9DVUJFX01BUCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsK
KyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9DVUJFX01BUCwgR0xfVEVYVFVSRV9NQUdf
RklMVEVSLCBHTF9ORUFSRVNUKTsKKworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJB
TUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lU
SVZFX1gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtVGV4dHVyZSwgMCk7CisKKyAgICAv
LyBWZXJpZnkgdGhlIGZyYW1lYnVmZmVyIGlzIGNvbXBsZXRlLgorICAgIEFTU0VSVF9HTEVOVU1f
RVEoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9G
UkFNRUJVRkZFUikpOworCisgICAgLy8gTWFrZSB0aGUgQ3ViZU1hcCBjdWJlLWluY29tcGxldGUu
CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWiwgMCwgR0xf
UkdCQSwgMTYsIDE2LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAg
ICAgICBudWxscHRyKTsKKworICAgIC8vIFZlcmlmeSB0aGUgZnJhbWVidWZmZXIgaXMgaW5jb21w
bGV0ZS4KKyAgICBBU1NFUlRfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRU
QUNITUVOVCwKKyAgICAgICAgICAgICAgICAgICAgIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhH
TF9GUkFNRUJVRkZFUikpOworCisgICAgLy8gVmVyaWZ5IGRyYXdpbmcgd2l0aCB0aGUgaW5jb21w
bGV0ZSBmcmFtZWJ1ZmZlciBwcm9kdWNlcyBhIEdMIGVycm9yCisgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnZzID0gImF0dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uOyB2b2lkIG1haW4oKSB7IGdsX1Bvc2l0
aW9uID0gcG9zaXRpb247IH0iOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZwcyA9ICJ2b2lkIG1h
aW4oKSB7IGdsX0ZyYWdDb2xvciA9IHZlYzQoMSwgMCwgMCwgMSk7IH0iOworICAgIG1Qcm9ncmFt
ID0gQ29tcGlsZVByb2dyYW0odnMsIHBzKTsKKyAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsK
KyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgQVNTRVJUX0dM
X0VSUk9SKEdMX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OKTsKK30KKworLy8gVGVzdCB0
aGF0IGEgcmVuZGVyYnVmZmVyIHdpdGggemVybyBoZWlnaHQgYnV0IG5vbnplcm8gd2lkdGggaXMg
aGFuZGxlZCB3aXRob3V0IGNyYXNoZXMvYXNzZXJ0cy4KK1RFU1RfUChGcmFtZWJ1ZmZlckZvcm1h
dHNUZXN0LCBaZXJvSGVpZ2h0UmVuZGVyYnVmZmVyKQoreworICAgIGlmIChnZXRDbGllbnRNYWpv
clZlcnNpb24oKSA8IDMpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBl
ZCBkdWUgdG8gbWlzc2luZyBFUzMiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIHRlc3RaZXJvSGVpZ2h0UmVuZGVyYnVmZmVyKCk7Cit9CisKKy8vIFVzZSB0aGlz
IHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hp
Y2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZQorLy8gdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2Fp
bnN0LgorQU5HTEVfSU5TVEFOVElBVEVfVEVTVChGcmFtZWJ1ZmZlckZvcm1hdHNUZXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAorICAgICAgICAgICAgICAgICAgICAgICBF
UzJfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExKCksCisgICAgICAg
ICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMz
X09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOworCitjbGFzcyBGcmFtZWJ1ZmZlcklu
dmFsaWRhdGVUZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgRnJh
bWVidWZmZXJJbnZhbGlkYXRlVGVzdCgpIDogbUZyYW1lYnVmZmVyKDApLCBtUmVuZGVyYnVmZmVy
KDApIHt9CisKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFOR0xF
VGVzdDo6U2V0VXAoKTsKKworICAgICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbUZyYW1lYnVm
ZmVyKTsKKyAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZtUmVuZGVyYnVmZmVyKTsKKyAg
ICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGdsRGVs
ZXRlRnJhbWVidWZmZXJzKDEsICZtRnJhbWVidWZmZXIpOworICAgICAgICBnbERlbGV0ZVJlbmRl
cmJ1ZmZlcnMoMSwgJm1SZW5kZXJidWZmZXIpOworICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3du
KCk7CisgICAgfQorCisgICAgR0x1aW50IG1GcmFtZWJ1ZmZlcjsKKyAgICBHTHVpbnQgbVJlbmRl
cmJ1ZmZlcjsKK307CisKKy8vIENvdmVycyBpbnZhbGlkYXRpbmcgYW4gaW5jb21wbGV0ZSBmcmFt
ZWJ1ZmZlci4gVGhpcyBzaG91bGQgYmUgYSBuby1vcCwgYnV0IHNob3VsZCBub3QgZXJyb3IuCitU
RVNUX1AoRnJhbWVidWZmZXJJbnZhbGlkYXRlVGVzdCwgSW5jb21wbGV0ZSkKK3sKKyAgICBnbEJp
bmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVyKTsKKyAgICBnbEJpbmRS
ZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtUmVuZGVyYnVmZmVyKTsKKyAgICBnbEZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwg
R0xfUkVOREVSQlVGRkVSLCBtUmVuZGVyYnVmZmVyKTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdM
X0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVCwKKyAgICAgICAgICAgICAgICAgICAg
IGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOworCisgICAgc3RkOjp2
ZWN0b3I8R0xlbnVtPiBhdHRhY2htZW50czsKKyAgICBhdHRhY2htZW50cy5wdXNoX2JhY2soR0xf
Q09MT1JfQVRUQUNITUVOVDApOworCisgICAgZ2xJbnZhbGlkYXRlRnJhbWVidWZmZXIoR0xfRlJB
TUVCVUZGRVIsIDEsIGF0dGFjaG1lbnRzLmRhdGEoKSk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7Cit9CisKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoRnJhbWVidWZmZXJJbnZhbGlkYXRlVGVz
dCwgRVMzX0QzRDExKCksIEVTM19PUEVOR0woKSwgRVMzX09QRU5HTEVTKCkpOwpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0dMU0xUZXN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvR0xT
TFRlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9nbF90ZXN0cy9HTFNMVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNDQz
IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKworI2lu
Y2x1ZGUgImxpYkFOR0xFL0NvbnRleHQuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9Qcm9ncmFtLmgi
CisjaW5jbHVkZSAidGVzdF91dGlscy9nbF9yYWlpLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBhbmds
ZTsKKworbmFtZXNwYWNlCit7CisKK2NsYXNzIEdMU0xUZXN0IDogcHVibGljIEFOR0xFVGVzdAor
eworICBwcm90ZWN0ZWQ6CisgICAgR0xTTFRlc3QoKQorICAgIHsKKyAgICAgICAgc2V0V2luZG93
V2lkdGgoMTI4KTsKKyAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7CisgICAgICAgIHNldENv
bmZpZ1JlZEJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICAgICAg
c2V0Q29uZmlnQmx1ZUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0
OjpTZXRVcCgpOworCisgICAgICAgIG1TaW1wbGVWU1NvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAg
ICAgICAgKAorICAgICAgICAgICAgYXR0cmlidXRlIHZlYzQgaW5wdXRBdHRyaWJ1dGU7CisgICAg
ICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsX1Bv
c2l0aW9uID0gaW5wdXRBdHRyaWJ1dGU7CisgICAgICAgICAgICB9CisgICAgICAgICk7CisgICAg
fQorCisgICAgc3RkOjpzdHJpbmcgR2VuZXJhdGVWYXJ5aW5nVHlwZShHTGludCB2ZWN0b3JTaXpl
KQorICAgIHsKKyAgICAgICAgY2hhciB2YXJ5aW5nVHlwZVsxMF07CisKKyAgICAgICAgaWYgKHZl
Y3RvclNpemUgPT0gMSkKKyAgICAgICAgeworICAgICAgICAgICAgc3ByaW50Zih2YXJ5aW5nVHlw
ZSwgImZsb2F0Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAg
ICAgICBzcHJpbnRmKHZhcnlpbmdUeXBlLCAidmVjJWQiLCB2ZWN0b3JTaXplKTsKKyAgICAgICAg
fQorCisgICAgICAgIHJldHVybiBzdGQ6OnN0cmluZyh2YXJ5aW5nVHlwZSk7CisgICAgfQorCisg
ICAgc3RkOjpzdHJpbmcgR2VuZXJhdGVWZWN0b3JWYXJ5aW5nRGVjbGFyYXRpb24oR0xpbnQgdmVj
dG9yU2l6ZSwgR0xpbnQgYXJyYXlTaXplLCBHTGludCBpZCkKKyAgICB7CisgICAgICAgIGNoYXIg
YnVmZlsxMDBdOworCisgICAgICAgIGlmIChhcnJheVNpemUgPT0gMSkKKyAgICAgICAgeworICAg
ICAgICAgICAgc3ByaW50ZihidWZmLCAidmFyeWluZyAlcyB2JWQ7XG4iLCBHZW5lcmF0ZVZhcnlp
bmdUeXBlKHZlY3RvclNpemUpLmNfc3RyKCksIGlkKTsKKyAgICAgICAgfQorICAgICAgICBlbHNl
CisgICAgICAgIHsKKyAgICAgICAgICAgIHNwcmludGYoYnVmZiwgInZhcnlpbmcgJXMgdiVkWyVk
XTtcbiIsIEdlbmVyYXRlVmFyeWluZ1R5cGUodmVjdG9yU2l6ZSkuY19zdHIoKSwgaWQsIGFycmF5
U2l6ZSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoYnVmZik7Cisg
ICAgfQorCisgICAgc3RkOjpzdHJpbmcgR2VuZXJhdGVWZWN0b3JWYXJ5aW5nU2V0dGluZ0NvZGUo
R0xpbnQgdmVjdG9yU2l6ZSwgR0xpbnQgYXJyYXlTaXplLCBHTGludCBpZCkKKyAgICB7CisgICAg
ICAgIHN0ZDo6c3RyaW5nIHJldHVyblN0cmluZzsKKyAgICAgICAgY2hhciBidWZmWzEwMF07CisK
KyAgICAgICAgaWYgKGFycmF5U2l6ZSA9PSAxKQorICAgICAgICB7CisgICAgICAgICAgICBzcHJp
bnRmKGJ1ZmYsICJcdCB2JWQgPSAlcygxLjApO1xuIiwgaWQsIEdlbmVyYXRlVmFyeWluZ1R5cGUo
dmVjdG9yU2l6ZSkuY19zdHIoKSk7CisgICAgICAgICAgICByZXR1cm5TdHJpbmcgKz0gYnVmZjsK
KyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgYXJyYXlTaXplOyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgc3ByaW50ZihidWZmLCAiXHQgdiVkWyVkXSA9ICVzKDEuMCk7XG4iLCBpZCwgaSwgR2VuZXJh
dGVWYXJ5aW5nVHlwZSh2ZWN0b3JTaXplKS5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICByZXR1
cm5TdHJpbmcgKz0gYnVmZjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiByZXR1cm5TdHJpbmc7CisgICAgfQorCisgICAgc3RkOjpzdHJpbmcgR2VuZXJhdGVWZWN0
b3JWYXJ5aW5nVXNlQ29kZShHTGludCBhcnJheVNpemUsIEdMaW50IGlkKQorICAgIHsKKyAgICAg
ICAgaWYgKGFycmF5U2l6ZSA9PSAxKQorICAgICAgICB7CisgICAgICAgICAgICBjaGFyIGJ1ZmZb
MTAwXTsKKyAgICAgICAgICAgIHNwcmludGYoYnVmZiwgInYlZCArICIsIGlkKTsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6OnN0cmluZyhidWZmKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHJldHVyblN0cmluZzsKKyAgICAgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJyYXlTaXplOyBpKyspCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgY2hhciBidWZmWzEwMF07CisgICAgICAgICAgICAgICAgc3ByaW50Zihi
dWZmLCAidiVkWyVkXSArICIsIGlkLCBpKTsKKyAgICAgICAgICAgICAgICByZXR1cm5TdHJpbmcg
Kz0gYnVmZjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiByZXR1cm5TdHJpbmc7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIEdlbmVyYXRlR0xTTFdpdGhWYXJ5aW5ncyhH
TGludCBmbG9hdENvdW50LCBHTGludCBmbG9hdEFycmF5Q291bnQsIEdMaW50IHZlYzJDb3VudCwg
R0xpbnQgdmVjMkFycmF5Q291bnQsIEdMaW50IHZlYzNDb3VudCwgR0xpbnQgdmVjM0FycmF5Q291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdmVjNENvdW50LCBH
TGludCB2ZWM0QXJyYXlDb3VudCwgYm9vbCB1c2VGcmFnQ29vcmQsIGJvb2wgdXNlUG9pbnRDb29y
ZCwgYm9vbCB1c2VQb2ludFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjpzdHJpbmcqIGZyYWdtZW50U2hhZGVyLCBzdGQ6OnN0cmluZyogdmVydGV4U2hhZGVyKQor
ICAgIHsKKyAgICAgICAgLy8gR2VuZXJhdGUgYSBzdHJpbmcgZGVjbGFyaW5nIHRoZSB2YXJ5aW5n
cywgdG8gc2hhcmUgYmV0d2VlbiB0aGUgZnJhZ21lbnQgc2hhZGVyIGFuZCB0aGUgdmVydGV4IHNo
YWRlci4KKyAgICAgICAgc3RkOjpzdHJpbmcgdmFyeWluZ0RlY2xhcmF0aW9uOworCisgICAgICAg
IHVuc2lnbmVkIGludCB2YXJ5aW5nQ291bnQgPSAwOworCisgICAgICAgIGZvciAoR0xpbnQgaSA9
IDA7IGkgPCBmbG9hdENvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhcnlpbmdE
ZWNsYXJhdGlvbiArPSBHZW5lcmF0ZVZlY3RvclZhcnlpbmdEZWNsYXJhdGlvbigxLCAxLCB2YXJ5
aW5nQ291bnQpOworICAgICAgICAgICAgdmFyeWluZ0NvdW50ICs9IDE7CisgICAgICAgIH0KKwor
ICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgZmxvYXRBcnJheUNvdW50OyBpKyspCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhcnlpbmdEZWNsYXJhdGlvbiArPSBHZW5lcmF0ZVZlY3RvclZh
cnlpbmdEZWNsYXJhdGlvbigxLCAyLCB2YXJ5aW5nQ291bnQpOworICAgICAgICAgICAgdmFyeWlu
Z0NvdW50ICs9IDE7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwg
dmVjMkNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhcnlpbmdEZWNsYXJhdGlv
biArPSBHZW5lcmF0ZVZlY3RvclZhcnlpbmdEZWNsYXJhdGlvbigyLCAxLCB2YXJ5aW5nQ291bnQp
OworICAgICAgICAgICAgdmFyeWluZ0NvdW50ICs9IDE7CisgICAgICAgIH0KKworICAgICAgICBm
b3IgKEdMaW50IGkgPSAwOyBpIDwgdmVjMkFycmF5Q291bnQ7IGkrKykKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyeWluZ0RlY2xhcmF0aW9uICs9IEdlbmVyYXRlVmVjdG9yVmFyeWluZ0RlY2xh
cmF0aW9uKDIsIDIsIHZhcnlpbmdDb3VudCk7CisgICAgICAgICAgICB2YXJ5aW5nQ291bnQgKz0g
MTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCB2ZWMzQ291bnQ7
IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgdmFyeWluZ0RlY2xhcmF0aW9uICs9IEdlbmVy
YXRlVmVjdG9yVmFyeWluZ0RlY2xhcmF0aW9uKDMsIDEsIHZhcnlpbmdDb3VudCk7CisgICAgICAg
ICAgICB2YXJ5aW5nQ291bnQgKz0gMTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoR0xpbnQg
aSA9IDA7IGkgPCB2ZWMzQXJyYXlDb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXJ5aW5nRGVjbGFyYXRpb24gKz0gR2VuZXJhdGVWZWN0b3JWYXJ5aW5nRGVjbGFyYXRpb24oMywg
MiwgdmFyeWluZ0NvdW50KTsKKyAgICAgICAgICAgIHZhcnlpbmdDb3VudCArPSAxOworICAgICAg
ICB9CisKKyAgICAgICAgZm9yIChHTGludCBpID0gMDsgaSA8IHZlYzRDb3VudDsgaSsrKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXJ5aW5nRGVjbGFyYXRpb24gKz0gR2VuZXJhdGVWZWN0b3JW
YXJ5aW5nRGVjbGFyYXRpb24oNCwgMSwgdmFyeWluZ0NvdW50KTsKKyAgICAgICAgICAgIHZhcnlp
bmdDb3VudCArPSAxOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChHTGludCBpID0gMDsgaSA8
IHZlYzRBcnJheUNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhcnlpbmdEZWNs
YXJhdGlvbiArPSBHZW5lcmF0ZVZlY3RvclZhcnlpbmdEZWNsYXJhdGlvbig0LCAyLCB2YXJ5aW5n
Q291bnQpOworICAgICAgICAgICAgdmFyeWluZ0NvdW50ICs9IDE7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBHZW5lcmF0ZSB0aGUgdmVydGV4IHNoYWRlcgorICAgICAgICB2ZXJ0ZXhTaGFkZXIt
PmNsZWFyKCk7CisgICAgICAgIHZlcnRleFNoYWRlci0+YXBwZW5kKHZhcnlpbmdEZWNsYXJhdGlv
bik7CisgICAgICAgIHZlcnRleFNoYWRlci0+YXBwZW5kKCJcbnZvaWQgbWFpbigpXG57XG4iKTsK
KworICAgICAgICB1bnNpZ25lZCBpbnQgY3VycmVudFZTVmFyeWluZyA9IDA7CisKKyAgICAgICAg
Zm9yIChHTGludCBpID0gMDsgaSA8IGZsb2F0Q291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAg
ICAgICAgdmVydGV4U2hhZGVyLT5hcHBlbmQoR2VuZXJhdGVWZWN0b3JWYXJ5aW5nU2V0dGluZ0Nv
ZGUoMSwgMSwgY3VycmVudFZTVmFyeWluZykpOworICAgICAgICAgICAgY3VycmVudFZTVmFyeWlu
ZyArPSAxOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChHTGludCBpID0gMDsgaSA8IGZsb2F0
QXJyYXlDb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICB2ZXJ0ZXhTaGFkZXItPmFw
cGVuZChHZW5lcmF0ZVZlY3RvclZhcnlpbmdTZXR0aW5nQ29kZSgxLCAyLCBjdXJyZW50VlNWYXJ5
aW5nKSk7CisgICAgICAgICAgICBjdXJyZW50VlNWYXJ5aW5nICs9IDE7CisgICAgICAgIH0KKwor
ICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgdmVjMkNvdW50OyBpKyspCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZlcnRleFNoYWRlci0+YXBwZW5kKEdlbmVyYXRlVmVjdG9yVmFyeWluZ1Nl
dHRpbmdDb2RlKDIsIDEsIGN1cnJlbnRWU1ZhcnlpbmcpKTsKKyAgICAgICAgICAgIGN1cnJlbnRW
U1ZhcnlpbmcgKz0gMTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkg
PCB2ZWMyQXJyYXlDb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICB2ZXJ0ZXhTaGFk
ZXItPmFwcGVuZChHZW5lcmF0ZVZlY3RvclZhcnlpbmdTZXR0aW5nQ29kZSgyLCAyLCBjdXJyZW50
VlNWYXJ5aW5nKSk7CisgICAgICAgICAgICBjdXJyZW50VlNWYXJ5aW5nICs9IDE7CisgICAgICAg
IH0KKworICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgdmVjM0NvdW50OyBpKyspCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZlcnRleFNoYWRlci0+YXBwZW5kKEdlbmVyYXRlVmVjdG9yVmFy
eWluZ1NldHRpbmdDb2RlKDMsIDEsIGN1cnJlbnRWU1ZhcnlpbmcpKTsKKyAgICAgICAgICAgIGN1
cnJlbnRWU1ZhcnlpbmcgKz0gMTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoR0xpbnQgaSA9
IDA7IGkgPCB2ZWMzQXJyYXlDb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICB2ZXJ0
ZXhTaGFkZXItPmFwcGVuZChHZW5lcmF0ZVZlY3RvclZhcnlpbmdTZXR0aW5nQ29kZSgzLCAyLCBj
dXJyZW50VlNWYXJ5aW5nKSk7CisgICAgICAgICAgICBjdXJyZW50VlNWYXJ5aW5nICs9IDE7Cisg
ICAgICAgIH0KKworICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgdmVjNENvdW50OyBpKysp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZlcnRleFNoYWRlci0+YXBwZW5kKEdlbmVyYXRlVmVj
dG9yVmFyeWluZ1NldHRpbmdDb2RlKDQsIDEsIGN1cnJlbnRWU1ZhcnlpbmcpKTsKKyAgICAgICAg
ICAgIGN1cnJlbnRWU1ZhcnlpbmcgKz0gMTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoR0xp
bnQgaSA9IDA7IGkgPCB2ZWM0QXJyYXlDb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAg
ICB2ZXJ0ZXhTaGFkZXItPmFwcGVuZChHZW5lcmF0ZVZlY3RvclZhcnlpbmdTZXR0aW5nQ29kZSg0
LCAyLCBjdXJyZW50VlNWYXJ5aW5nKSk7CisgICAgICAgICAgICBjdXJyZW50VlNWYXJ5aW5nICs9
IDE7CisgICAgICAgIH0KKworICAgICAgICBpZiAodXNlUG9pbnRTaXplKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2ZXJ0ZXhTaGFkZXItPmFwcGVuZCgiZ2xfUG9pbnRTaXplID0gMS4wO1xuIik7
CisgICAgICAgIH0KKworICAgICAgICB2ZXJ0ZXhTaGFkZXItPmFwcGVuZCgifVxuIik7CisKKyAg
ICAgICAgLy8gR2VuZXJhdGUgdGhlIGZyYWdtZW50IHNoYWRlcgorICAgICAgICBmcmFnbWVudFNo
YWRlci0+Y2xlYXIoKTsKKyAgICAgICAgZnJhZ21lbnRTaGFkZXItPmFwcGVuZCgicHJlY2lzaW9u
IGhpZ2hwIGZsb2F0O1xuIik7CisgICAgICAgIGZyYWdtZW50U2hhZGVyLT5hcHBlbmQodmFyeWlu
Z0RlY2xhcmF0aW9uKTsKKyAgICAgICAgZnJhZ21lbnRTaGFkZXItPmFwcGVuZCgiXG52b2lkIG1h
aW4oKSBcbnsgXG5cdHZlYzQgcmV0Q29sb3IgPSB2ZWM0KDAsMCwwLDApO1xuIik7CisKKyAgICAg
ICAgdW5zaWduZWQgaW50IGN1cnJlbnRGU1ZhcnlpbmcgPSAwOworCisgICAgICAgIC8vIE1ha2Ug
dXNlIG9mIHRoZSBmbG9hdCB2YXJ5aW5ncworICAgICAgICBmcmFnbWVudFNoYWRlci0+YXBwZW5k
KCJcdHJldENvbG9yICs9IHZlYzQoIik7CisKKyAgICAgICAgZm9yIChHTGludCBpID0gMDsgaSA8
IGZsb2F0Q291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXIt
PmFwcGVuZChHZW5lcmF0ZVZlY3RvclZhcnlpbmdVc2VDb2RlKDEsIGN1cnJlbnRGU1Zhcnlpbmcp
KTsKKyAgICAgICAgICAgIGN1cnJlbnRGU1ZhcnlpbmcgKz0gMTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCBmbG9hdEFycmF5Q291bnQ7IGkrKykKKyAgICAgICAg
eworICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXItPmFwcGVuZChHZW5lcmF0ZVZlY3RvclZhcnlp
bmdVc2VDb2RlKDIsIGN1cnJlbnRGU1ZhcnlpbmcpKTsKKyAgICAgICAgICAgIGN1cnJlbnRGU1Zh
cnlpbmcgKz0gMTsKKyAgICAgICAgfQorCisgICAgICAgIGZyYWdtZW50U2hhZGVyLT5hcHBlbmQo
IjAuMCwgMC4wLCAwLjAsIDAuMCk7XG4iKTsKKworICAgICAgICAvLyBNYWtlIHVzZSBvZiB0aGUg
dmVjMiB2YXJ5aW5ncworICAgICAgICBmcmFnbWVudFNoYWRlci0+YXBwZW5kKCJcdHJldENvbG9y
ICs9IHZlYzQoIik7CisKKyAgICAgICAgZm9yIChHTGludCBpID0gMDsgaSA8IHZlYzJDb3VudDsg
aSsrKQorICAgICAgICB7CisgICAgICAgICAgICBmcmFnbWVudFNoYWRlci0+YXBwZW5kKEdlbmVy
YXRlVmVjdG9yVmFyeWluZ1VzZUNvZGUoMSwgY3VycmVudEZTVmFyeWluZykpOworICAgICAgICAg
ICAgY3VycmVudEZTVmFyeWluZyArPSAxOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChHTGlu
dCBpID0gMDsgaSA8IHZlYzJBcnJheUNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAg
IGZyYWdtZW50U2hhZGVyLT5hcHBlbmQoR2VuZXJhdGVWZWN0b3JWYXJ5aW5nVXNlQ29kZSgyLCBj
dXJyZW50RlNWYXJ5aW5nKSk7CisgICAgICAgICAgICBjdXJyZW50RlNWYXJ5aW5nICs9IDE7Cisg
ICAgICAgIH0KKworICAgICAgICBmcmFnbWVudFNoYWRlci0+YXBwZW5kKCJ2ZWMyKDAuMCwgMC4w
KSwgMC4wLCAwLjApO1xuIik7CisKKyAgICAgICAgLy8gTWFrZSB1c2Ugb2YgdGhlIHZlYzMgdmFy
eWluZ3MKKyAgICAgICAgZnJhZ21lbnRTaGFkZXItPmFwcGVuZCgiXHRyZXRDb2xvciArPSB2ZWM0
KCIpOworCisgICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCB2ZWMzQ291bnQ7IGkrKykKKyAg
ICAgICAgeworICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXItPmFwcGVuZChHZW5lcmF0ZVZlY3Rv
clZhcnlpbmdVc2VDb2RlKDEsIGN1cnJlbnRGU1ZhcnlpbmcpKTsKKyAgICAgICAgICAgIGN1cnJl
bnRGU1ZhcnlpbmcgKz0gMTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoR0xpbnQgaSA9IDA7
IGkgPCB2ZWMzQXJyYXlDb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBmcmFnbWVu
dFNoYWRlci0+YXBwZW5kKEdlbmVyYXRlVmVjdG9yVmFyeWluZ1VzZUNvZGUoMiwgY3VycmVudEZT
VmFyeWluZykpOworICAgICAgICAgICAgY3VycmVudEZTVmFyeWluZyArPSAxOworICAgICAgICB9
CisKKyAgICAgICAgZnJhZ21lbnRTaGFkZXItPmFwcGVuZCgidmVjMygwLjAsIDAuMCwgMC4wKSwg
MC4wKTtcbiIpOworCisgICAgICAgIC8vIE1ha2UgdXNlIG9mIHRoZSB2ZWM0IHZhcnlpbmdzCisg
ICAgICAgIGZyYWdtZW50U2hhZGVyLT5hcHBlbmQoIlx0cmV0Q29sb3IgKz0gIik7CisKKyAgICAg
ICAgZm9yIChHTGludCBpID0gMDsgaSA8IHZlYzRDb3VudDsgaSsrKQorICAgICAgICB7CisgICAg
ICAgICAgICBmcmFnbWVudFNoYWRlci0+YXBwZW5kKEdlbmVyYXRlVmVjdG9yVmFyeWluZ1VzZUNv
ZGUoMSwgY3VycmVudEZTVmFyeWluZykpOworICAgICAgICAgICAgY3VycmVudEZTVmFyeWluZyAr
PSAxOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChHTGludCBpID0gMDsgaSA8IHZlYzRBcnJh
eUNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGZyYWdtZW50U2hhZGVyLT5hcHBl
bmQoR2VuZXJhdGVWZWN0b3JWYXJ5aW5nVXNlQ29kZSgyLCBjdXJyZW50RlNWYXJ5aW5nKSk7Cisg
ICAgICAgICAgICBjdXJyZW50RlNWYXJ5aW5nICs9IDE7CisgICAgICAgIH0KKworICAgICAgICBm
cmFnbWVudFNoYWRlci0+YXBwZW5kKCJ2ZWM0KDAuMCwgMC4wLCAwLjAsIDAuMCk7XG4iKTsKKwor
ICAgICAgICAvLyBTZXQgZ2xfRnJhZ0NvbG9yLCBhbmQgdXNlIHNwZWNpYWwgdmFyaWFibGVzIGlm
IHJlcXVlc3RlZAorICAgICAgICBmcmFnbWVudFNoYWRlci0+YXBwZW5kKCJcdGdsX0ZyYWdDb2xv
ciA9IHJldENvbG9yIik7CisgICAgICAgIAorICAgICAgICBpZiAodXNlRnJhZ0Nvb3JkKQorICAg
ICAgICB7CisgICAgICAgICAgICBmcmFnbWVudFNoYWRlci0+YXBwZW5kKCIgKyBnbF9GcmFnQ29v
cmQiKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh1c2VQb2ludENvb3JkKQorICAgICAgICB7
CisgICAgICAgICAgICBmcmFnbWVudFNoYWRlci0+YXBwZW5kKCIgKyB2ZWM0KGdsX1BvaW50Q29v
cmQsIDAuMCwgMC4wKSIpOworICAgICAgICB9CisKKyAgICAgICAgZnJhZ21lbnRTaGFkZXItPmFw
cGVuZCgiO1xufSIpOworICAgIH0KKworICAgIHZvaWQgVmFyeWluZ1Rlc3RCYXNlKEdMaW50IGZs
b2F0Q291bnQsIEdMaW50IGZsb2F0QXJyYXlDb3VudCwgR0xpbnQgdmVjMkNvdW50LCBHTGludCB2
ZWMyQXJyYXlDb3VudCwgR0xpbnQgdmVjM0NvdW50LCBHTGludCB2ZWMzQXJyYXlDb3VudCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2ZWM0Q291bnQsIEdMaW50IHZlYzRBcnJheUNv
dW50LCBib29sIHVzZUZyYWdDb29yZCwgYm9vbCB1c2VQb2ludENvb3JkLCBib29sIHVzZVBvaW50
U2l6ZSwgYm9vbCBleHBlY3RTdWNjZXNzKQorICAgIHsKKyAgICAgICAgc3RkOjpzdHJpbmcgZnJh
Z21lbnRTaGFkZXJTb3VyY2U7CisgICAgICAgIHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJj
ZTsKKworICAgICAgICBHZW5lcmF0ZUdMU0xXaXRoVmFyeWluZ3MoZmxvYXRDb3VudCwgZmxvYXRB
cnJheUNvdW50LCB2ZWMyQ291bnQsIHZlYzJBcnJheUNvdW50LCB2ZWMzQ291bnQsIHZlYzNBcnJh
eUNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjNENvdW50LCB2ZWM0
QXJyYXlDb3VudCwgdXNlRnJhZ0Nvb3JkLCB1c2VQb2ludENvb3JkLCB1c2VQb2ludFNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZnJhZ21lbnRTaGFkZXJTb3VyY2UsICZ2
ZXJ0ZXhTaGFkZXJTb3VyY2UpOworCisgICAgICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVBy
b2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisKKyAgICAg
ICAgaWYgKGV4cGVjdFN1Y2Nlc3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVYUEVDVF9ORSgw
dSwgcHJvZ3JhbSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAg
ICAgICBFWFBFQ1RfRVEoMHUsIHByb2dyYW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9p
ZCBDb21waWxlR0xTTFdpdGhVbmlmb3Jtc0FuZFNhbXBsZXJzKEdMaW50IHZlcnRleFVuaWZvcm1D
b3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
ZnJhZ21lbnRVbmlmb3JtQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHZlcnRleFNhbXBsZXJzQ291bnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZyYWdtZW50U2FtcGxlcnNDb3VudCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBleHBlY3RTdWNj
ZXNzKQorICAgIHsKKyAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gdmVydGV4U2hhZGVyOworICAg
ICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBmcmFnbWVudFNoYWRlcjsKKworICAgICAgICAvLyBHZW5l
cmF0ZSB0aGUgdmVydGV4IHNoYWRlcgorICAgICAgICB2ZXJ0ZXhTaGFkZXIgPDwgInByZWNpc2lv
biBtZWRpdW1wIGZsb2F0O1xuIjsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHZlcnRl
eFVuaWZvcm1Db3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICB2ZXJ0ZXhTaGFkZXIg
PDwgInVuaWZvcm0gdmVjNCB2IiA8PCBpIDw8ICI7XG4iOworICAgICAgICB9CisKKyAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCB2ZXJ0ZXhTYW1wbGVyc0NvdW50OyBpKyspCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZlcnRleFNoYWRlciA8PCAidW5pZm9ybSBzYW1wbGVyMkQgcyIgPDwgaSA8
PCAiO1xuIjsKKyAgICAgICAgfQorCisgICAgICAgIHZlcnRleFNoYWRlciA8PCAidm9pZCBtYWlu
KClcbntcbiI7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB2ZXJ0ZXhVbmlmb3JtQ291
bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgdmVydGV4U2hhZGVyIDw8ICIgICAgZ2xf
UG9zaXRpb24gKz0gIHYiIDw8IGkgPDwgIjtcbiI7CisgICAgICAgIH0KKworICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IHZlcnRleFNhbXBsZXJzQ291bnQ7IGkrKykKKyAgICAgICAgeworICAg
ICAgICAgICAgdmVydGV4U2hhZGVyIDw8ICIgICAgZ2xfUG9zaXRpb24gKz0gIHRleHR1cmUyRChz
IiA8PCBpIDw8ICIsIHZlYzIoMC4wLCAwLjApKTtcbiI7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAodmVydGV4VW5pZm9ybUNvdW50ID09IDAgJiYgdmVydGV4U2FtcGxlcnNDb3VudCA9PSAwKQor
ICAgICAgICB7CisgICAgICAgICAgICB2ZXJ0ZXhTaGFkZXIgPDwgIiAgIGdsX1Bvc2l0aW9uID0g
dmVjNCgwLjApO1xuIjsKKyAgICAgICAgfQorCisgICAgICAgIHZlcnRleFNoYWRlciA8PCAifVxu
IjsKKworICAgICAgICAvLyBHZW5lcmF0ZSB0aGUgZnJhZ21lbnQgc2hhZGVyCisgICAgICAgIGZy
YWdtZW50U2hhZGVyIDw8ICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiI7CisKKyAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBmcmFnbWVudFVuaWZvcm1Db3VudDsgaSsrKQorICAgICAgICB7
CisgICAgICAgICAgICBmcmFnbWVudFNoYWRlciA8PCAidW5pZm9ybSB2ZWM0IHYiIDw8IGkgPDwg
IjtcbiI7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZyYWdtZW50
U2FtcGxlcnNDb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBmcmFnbWVudFNoYWRl
ciA8PCAidW5pZm9ybSBzYW1wbGVyMkQgcyIgPDwgaSA8PCAiO1xuIjsKKyAgICAgICAgfQorCisg
ICAgICAgIGZyYWdtZW50U2hhZGVyIDw8ICJ2b2lkIG1haW4oKVxue1xuIjsKKworICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IGZyYWdtZW50VW5pZm9ybUNvdW50OyBpKyspCisgICAgICAgIHsK
KyAgICAgICAgICAgIGZyYWdtZW50U2hhZGVyIDw8ICIgICAgZ2xfRnJhZ0NvbG9yICs9ICB2IiA8
PCBpIDw8ICI7XG4iOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBm
cmFnbWVudFNhbXBsZXJzQ291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgZnJhZ21l
bnRTaGFkZXIgPDwgIiAgICBnbF9GcmFnQ29sb3IgKz0gIHRleHR1cmUyRChzIiA8PCBpIDw8ICIs
IHZlYzIoMC4wLCAwLjApKTtcbiI7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZnJhZ21lbnRV
bmlmb3JtQ291bnQgPT0gMCAmJiBmcmFnbWVudFNhbXBsZXJzQ291bnQgPT0gMCkKKyAgICAgICAg
eworICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXIgPDwgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0
KDAuMCwgMS4wLCAwLjAsIDEuMCk7XG4iOworICAgICAgICB9CisKKyAgICAgICAgZnJhZ21lbnRT
aGFkZXIgPDwgIn1cbiI7CisKKyAgICAgICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3Jh
bSh2ZXJ0ZXhTaGFkZXIuc3RyKCksIGZyYWdtZW50U2hhZGVyLnN0cigpKTsKKworICAgICAgICBp
ZiAoZXhwZWN0U3VjY2VzcykKKyAgICAgICAgeworICAgICAgICAgICAgRVhQRUNUX05FKDB1LCBw
cm9ncmFtKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAg
IEVYUEVDVF9FUSgwdSwgcHJvZ3JhbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGQ6OnN0
cmluZyBtU2ltcGxlVlNTb3VyY2U7Cit9OworCitjbGFzcyBHTFNMVGVzdF9FUzMgOiBwdWJsaWMg
R0xTTFRlc3QKK3sKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFO
R0xFVGVzdDo6U2V0VXAoKTsKKworICAgICAgICBtU2ltcGxlVlNTb3VyY2UgPQorICAgICAgICAg
ICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAgICAgImluIHZlYzQgaW5wdXRBdHRyaWJ1
dGU7IgorICAgICAgICAgICAgInZvaWQgbWFpbigpIgorICAgICAgICAgICAgInsiCisgICAgICAg
ICAgICAiICAgIGdsX1Bvc2l0aW9uID0gaW5wdXRBdHRyaWJ1dGU7IgorICAgICAgICAgICAgIn0i
OworICAgIH0KK307CisKK1RFU1RfUChHTFNMVGVzdCwgTmFtZWxlc3NTY29wZWRTdHJ1Y3RzKQor
eworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0gU0hBREVSX1NP
VVJDRQorICAgICgKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgICAgICAg
dm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgc3RydWN0CisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgZmxvYXQgcTsKKyAgICAgICAgICAgIH0gYjsKKworICAgICAgICAg
ICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLCAwLCAwLCAxKTsKKyAgICAgICAgICAgIGdsX0ZyYWdD
b2xvci5hICs9IGIucTsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBHTHVpbnQgcHJvZ3JhbSA9
IENvbXBpbGVQcm9ncmFtKG1TaW1wbGVWU1NvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwor
ICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7Cit9CisKK1RFU1RfUChHTFNMVGVzdCwgU2NvcGVk
U3RydWN0c09yZGVyQnVnKQoreworICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogRmluZCBvdXQgd2h5
IHRoaXMgZG9lc24ndCBjb21waWxlIG9uIEFwcGxlIE9wZW5HTCBkcml2ZXJzCisgICAgLy8gKGh0
dHA6Ly9hbmdsZWJ1Zy5jb20vMTI5MikKKyAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IEZpbmQgb3V0
IHdoeSB0aGlzIGRvZXNuJ3QgY29tcGlsZSBvbiBBTUQgT3BlbkdMIGRyaXZlcnMKKyAgICAvLyAo
aHR0cDovL2FuZ2xlYnVnLmNvbS8xMjkxKQorICAgIGlmIChJc0Rlc2t0b3BPcGVuR0woKSAmJiAo
SXNPU1goKSB8fCAhSXNOVklESUEoKSkpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRl
c3QgZGlzYWJsZWQgb24gdGhpcyBPcGVuR0wgY29uZmlndXJhdGlvbi4iIDw8IHN0ZDo6ZW5kbDsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50
U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQorICAgICgKKyAgICAgICAgcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisKKyAgICAgICAgc3RydWN0IFQKKyAgICAgICAgeworICAgICAgICAgICAg
ZmxvYXQgZjsKKyAgICAgICAgfTsKKworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7Cisg
ICAgICAgICAgICBUIGE7CisKKyAgICAgICAgICAgIHN0cnVjdCBUCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgZmxvYXQgcTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIFQg
YjsKKworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLCAwLCAwLCAxKTsKKyAgICAg
ICAgICAgIGdsX0ZyYWdDb2xvci5hICs9IGEuZjsKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xvci5h
ICs9IGIucTsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBp
bGVQcm9ncmFtKG1TaW1wbGVWU1NvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOworICAgIEVY
UEVDVF9ORSgwdSwgcHJvZ3JhbSk7Cit9CisKK1RFU1RfUChHTFNMVGVzdCwgU2NvcGVkU3RydWN0
c0J1ZykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9IFNI
QURFUl9TT1VSQ0UKKyAgICAoCisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisg
ICAgICAgIHN0cnVjdCBUXzAKKyAgICAgICAgeworICAgICAgICAgICAgZmxvYXQgZjsKKyAgICAg
ICAgfTsKKworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICBnbF9G
cmFnQ29sb3IgPSB2ZWM0KDEsIDAsIDAsIDEpOworCisgICAgICAgICAgICBzdHJ1Y3QgVAorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHZlYzIgdjsKKyAgICAgICAgICAgIH07CisKKyAg
ICAgICAgICAgIFRfMCBhOworICAgICAgICAgICAgVCBiOworCisgICAgICAgICAgICBnbF9GcmFn
Q29sb3IuYSArPSBhLmY7CisgICAgICAgICAgICBnbF9GcmFnQ29sb3IuYSArPSBiLnYueDsKKyAg
ICAgICAgfQorICAgICk7CisKKyAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKG1T
aW1wbGVWU1NvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOworICAgIEVYUEVDVF9ORSgwdSwg
cHJvZ3JhbSk7Cit9CisKK1RFU1RfUChHTFNMVGVzdCwgRHhQb3NpdGlvbkJ1ZykKK3sKKyAgICBj
b25zdCBzdGQ6OnN0cmluZyAmdmVydGV4U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQorICAg
ICgKKyAgICAgICAgYXR0cmlidXRlIHZlYzQgaW5wdXRBdHRyaWJ1dGU7CisgICAgICAgIHZhcnlp
bmcgZmxvYXQgZHhfUG9zaXRpb247CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNChpbnB1dEF0dHJpYnV0ZSk7CisgICAgICAgICAg
ICBkeF9Qb3NpdGlvbiA9IDAuMDsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyAmZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgKAorICAg
ICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAgICAgICB2YXJ5aW5nIGZsb2F0IGR4
X1Bvc2l0aW9uOworCisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGdsX0ZyYWdDb2xvciA9IHZlYzQoZHhfUG9zaXRpb24sIDAsIDAsIDEpOworICAgICAgICB9Cisg
ICAgKTsKKworICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVy
U291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgRVhQRUNUX05FKDB1LCBwcm9ncmFt
KTsKK30KKworVEVTVF9QKEdMU0xUZXN0LCBFbHNlSWZSZXdyaXRpbmcpCit7CisgICAgY29uc3Qg
c3RkOjpzdHJpbmcgJnZlcnRleFNoYWRlclNvdXJjZSA9CisgICAgICAgICJhdHRyaWJ1dGUgdmVj
NCBhX3Bvc2l0aW9uO1xuIgorICAgICAgICAidmFyeWluZyBmbG9hdCB2O1xuIgorICAgICAgICAi
dm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247XG4i
CisgICAgICAgICIgIHYgPSAxLjA7XG4iCisgICAgICAgICIgIGlmIChhX3Bvc2l0aW9uLnggPD0g
MC41KSB7XG4iCisgICAgICAgICIgICAgdiA9IDAuMDtcbiIKKyAgICAgICAgIiAgfSBlbHNlIGlm
IChhX3Bvc2l0aW9uLnggPj0gMC41KSB7XG4iCisgICAgICAgICIgICAgdiA9IDIuMDtcbiIKKyAg
ICAgICAgIiAgfVxuIgorICAgICAgICAifVxuIjsKKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZm
cmFnbWVudFNoYWRlclNvdXJjZSA9CisgICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4i
CisgICAgICAgICJ2YXJ5aW5nIGZsb2F0IHY7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4i
CisgICAgICAgICIgIHZlYzQgY29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7XG4iCisg
ICAgICAgICIgIGlmICh2ID49IDEuMCkgY29sb3IgPSB2ZWM0KDAuMCwgMS4wLCAwLjAsIDEuMCk7
XG4iCisgICAgICAgICIgIGlmICh2ID49IDIuMCkgY29sb3IgPSB2ZWM0KDAuMCwgMC4wLCAxLjAs
IDEuMCk7XG4iCisgICAgICAgICIgIGdsX0ZyYWdDb2xvciA9IGNvbG9yO1xuIgorICAgICAgICAi
fVxuIjsKKworICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVy
U291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgQVNTRVJUX05FKDB1LCBwcm9ncmFt
KTsKKworICAgIGRyYXdRdWFkKHByb2dyYW0sICJhX3Bvc2l0aW9uIiwgMC41Zik7CisKKyAgICBF
WFBFQ1RfUElYRUxfRVEoMCwgMCwgMjU1LCAwLCAwLCAyNTUpOworICAgIEVYUEVDVF9QSVhFTF9F
UShnZXRXaW5kb3dXaWR0aCgpLTEsIDAsIDAsIDI1NSwgMCwgMjU1KTsKK30KKworVEVTVF9QKEdM
U0xUZXN0LCBUd29FbHNlSWZSZXdyaXRpbmcpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZl
cnRleFNoYWRlclNvdXJjZSA9CisgICAgICAgICJhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uO1xu
IgorICAgICAgICAidmFyeWluZyBmbG9hdCB2O1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xu
IgorICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247XG4iCisgICAgICAgICIgIGlm
IChhX3Bvc2l0aW9uLnggPT0gMC4wKSB7XG4iCisgICAgICAgICIgICAgdiA9IDEuMDtcbiIKKyAg
ICAgICAgIiAgfSBlbHNlIGlmIChhX3Bvc2l0aW9uLnggPiAwLjUpIHtcbiIKKyAgICAgICAgIiAg
ICB2ID0gMC4wO1xuIgorICAgICAgICAiICB9IGVsc2UgaWYgKGFfcG9zaXRpb24ueCA+IDAuNzUp
IHtcbiIKKyAgICAgICAgIiAgICB2ID0gMC41O1xuIgorICAgICAgICAiICB9XG4iCisgICAgICAg
ICJ9XG4iOworCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdtZW50U2hhZGVyU291cmNlID0K
KyAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKKyAgICAgICAgInZhcnlpbmcgZmxv
YXQgdjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgZ2xfRnJhZ0Nv
bG9yID0gdmVjNCh2LCAwLjAsIDAuMCwgMS4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBH
THVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21l
bnRTaGFkZXJTb3VyY2UpOworICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7Cit9CisKK1RFU1Rf
UChHTFNMVGVzdCwgRnJvbnRGYWNpbmdBbmRWYXJ5aW5nKQoreworICAgIEVHTFBsYXRmb3JtUGFy
YW1ldGVycyBwbGF0Zm9ybSA9IEdldFBhcmFtKCkuZWdsUGFyYW1ldGVyczsKKworICAgIGNvbnN0
IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAoCisg
ICAgICAgIGF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247CisgICAgICAgIHZhcnlpbmcgZmxvYXQg
dl92YXJ5aW5nOworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICB2
X3ZhcnlpbmcgPSBhX3Bvc2l0aW9uLng7CisgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IGFfcG9z
aXRpb247CisgICAgICAgIH0KKyAgICApOworCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21l
bnRTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgKAorICAgICAgICBwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKyAgICAgICAgdmFyeWluZyBmbG9hdCB2X3Zhcnlpbmc7CisgICAgICAg
IHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZlYzQgYzsKKworICAgICAgICAg
ICAgaWYgKGdsX0Zyb250RmFjaW5nKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGMg
PSB2ZWM0KHZfdmFyeWluZywgMCwgMCwgMS4wKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjID0gdmVjNCgwLCB2X3Zhcnlp
bmcsIDAsIDEuMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSBj
OworICAgICAgICB9CisgICAgKTsKKworICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dy
YW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisKKyAgICAvLyBD
b21waWxhdGlvbiBzaG91bGQgZmFpbCBvbiBEM0QxMSBmZWF0dXJlIGxldmVsIDlfMywgc2luY2Ug
Z2xfRnJvbnRGYWNpbmcgaXNuJ3Qgc3VwcG9ydGVkLgorICAgIGlmIChwbGF0Zm9ybS5yZW5kZXJl
ciA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSkKKyAgICB7CisgICAgICAg
IGlmIChwbGF0Zm9ybS5tYWpvclZlcnNpb24gPT0gOSAmJiBwbGF0Zm9ybS5taW5vclZlcnNpb24g
PT0gMykKKyAgICAgICAgeworICAgICAgICAgICAgRVhQRUNUX0VRKDB1LCBwcm9ncmFtKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIE90aGVyd2lzZSwg
Y29tcGlsYXRpb24gc2hvdWxkIHN1Y2NlZWQKKyAgICBFWFBFQ1RfTkUoMHUsIHByb2dyYW0pOwor
fQorCisvLyBWZXJpZnkgdGhhdCBsaW5raW5nIHNoYWRlcnMgZGVjbGFyaW5nIGRpZmZlcmVudCBz
aGFkaW5nIGxhbmd1YWdlIHZlcnNpb25zIGZhaWxzLgorVEVTVF9QKEdMU0xUZXN0X0VTMywgVmVy
c2lvbk1pc21hdGNoKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291
cmNlMTAwID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAi
dmFyeWluZyBmbG9hdCB2X3Zhcnlpbmc7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX0Zy
YWdDb2xvciA9IHZlYzQodl92YXJ5aW5nLCAwLCAwLCAxLjApOyB9XG4iOworCisgICAgY29uc3Qg
c3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlMTAwID0KKyAgICAgICAgImF0dHJpYnV0ZSB2
ZWM0IGFfcG9zaXRpb247XG4iCisgICAgICAgICJ2YXJ5aW5nIGZsb2F0IHZfdmFyeWluZztcbiIK
KyAgICAgICAgInZvaWQgbWFpbigpIHsgdl92YXJ5aW5nID0gYV9wb3NpdGlvbi54OyBnbF9Qb3Np
dGlvbiA9IGFfcG9zaXRpb247IH1cbiI7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVu
dFNoYWRlclNvdXJjZTMwMCA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAg
InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAiaW4gZmxvYXQgdl92YXJ5aW5n
O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9pZCBt
YWluKCkgeyBteV9GcmFnQ29sb3IgPSB2ZWM0KHZfdmFyeWluZywgMCwgMCwgMS4wKTsgfVxuIjsK
KworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZTMwMCA9CisgICAgICAg
ICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgImluIHZlYzQgYV9wb3NpdGlvbjtcbiIKKyAg
ICAgICAgIm91dCBmbG9hdCB2X3Zhcnlpbmc7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7IHZf
dmFyeWluZyA9IGFfcG9zaXRpb24ueDsgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOyB9XG4iOwor
CisgICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2Uz
MDAsIGZyYWdtZW50U2hhZGVyU291cmNlMTAwKTsKKyAgICBFWFBFQ1RfRVEoMHUsIHByb2dyYW0p
OworCisgICAgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZTEwMCwg
ZnJhZ21lbnRTaGFkZXJTb3VyY2UzMDApOworICAgIEVYUEVDVF9FUSgwdSwgcHJvZ3JhbSk7Cit9
CisKKy8vIFZlcmlmeSB0aGF0IGRlY2xhcmluZyB2YXJ5aW5nIGFzIGludmFyaWFudCBvbmx5IGlu
IHZlcnRleCBzaGFkZXIgZmFpbHMgaW4gRVNTTCAxLjAwLgorVEVTVF9QKEdMU0xUZXN0LCBJbnZh
cmlhbnRWYXJ5aW5nT3V0KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVy
U291cmNlID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAi
dmFyeWluZyBmbG9hdCB2X3Zhcnlpbmc7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX0Zy
YWdDb2xvciA9IHZlYzQodl92YXJ5aW5nLCAwLCAwLCAxLjApOyB9XG4iOworCisgICAgY29uc3Qg
c3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0KKyAgICAgICAgImF0dHJpYnV0ZSB2ZWM0
IGFfcG9zaXRpb247XG4iCisgICAgICAgICJpbnZhcmlhbnQgdmFyeWluZyBmbG9hdCB2X3Zhcnlp
bmc7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7IHZfdmFyeWluZyA9IGFfcG9zaXRpb24ueDsg
Z2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOyB9XG4iOworCisgICAgR0x1aW50IHByb2dyYW0gPSBD
b21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsK
KyAgICBFWFBFQ1RfRVEoMHUsIHByb2dyYW0pOworfQorCisvLyBWZXJpZnkgdGhhdCBkZWNsYXJp
bmcgdmFyeWluZyBhcyBpbnZhcmlhbnQgb25seSBpbiB2ZXJ0ZXggc2hhZGVyIHN1Y2NlZWRzIGlu
IEVTU0wgMy4wMC4KK1RFU1RfUChHTFNMVGVzdF9FUzMsIEludmFyaWFudFZhcnlpbmdPdXQpCit7
CisgICAgLy8gVE9ETzogRVNTTCAzLjAwIC0+IEdMU0wgMS4yMCB0cmFuc2xhdGlvbiBzaG91bGQg
YWRkICJpbnZhcmlhbnQiIGluIGZyYWdtZW50IHNoYWRlcgorICAgIC8vIGZvciB2YXJ5aW5ncyB3
aGljaCBhcmUgaW52YXJpYW50IGluIHZlcnRleCBzaGFkZXIgKGh0dHA6Ly9hbmdsZWJ1Zy5jb20v
MTI5MykKKyAgICBpZiAoSXNEZXNrdG9wT3BlbkdMKCkpCisgICAgeworICAgICAgICBzdGQ6OmNv
dXQgPDwgIlRlc3QgZGlzYWJsZWQgb24gT3BlbkdMLiIgPDwgc3RkOjplbmRsOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3Vy
Y2UgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDtcbiIKKyAgICAgICAgImluIGZsb2F0IHZfdmFyeWluZztcbiIKKyAgICAgICAg
Im91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHsgbXlfRnJh
Z0NvbG9yID0gdmVjNCh2X3ZhcnlpbmcsIDAsIDAsIDEuMCk7IH1cbiI7CisKKyAgICBjb25zdCBz
dGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVz
XG4iCisgICAgICAgICJpbiB2ZWM0IGFfcG9zaXRpb247XG4iCisgICAgICAgICJpbnZhcmlhbnQg
b3V0IGZsb2F0IHZfdmFyeWluZztcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHsgdl92YXJ5aW5n
ID0gYV9wb3NpdGlvbi54OyBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247IH1cbiI7CisKKyAgICBH
THVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21l
bnRTaGFkZXJTb3VyY2UpOworICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7Cit9CisKKy8vIFZl
cmlmeSB0aGF0IGRlY2xhcmluZyB2YXJ5aW5nIGFzIGludmFyaWFudCBvbmx5IGluIGZyYWdtZW50
IHNoYWRlciBmYWlscyBpbiBFU1NMIDEuMDAuCitURVNUX1AoR0xTTFRlc3QsIEludmFyaWFudFZh
cnlpbmdJbikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9
CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgImludmFyaWFu
dCB2YXJ5aW5nIGZsb2F0IHZfdmFyeWluZztcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHsgZ2xf
RnJhZ0NvbG9yID0gdmVjNCh2X3ZhcnlpbmcsIDAsIDAsIDEuMCk7IH1cbiI7CisKKyAgICBjb25z
dCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQorICAgICAgICAiYXR0cmlidXRlIHZl
YzQgYV9wb3NpdGlvbjtcbiIKKyAgICAgICAgInZhcnlpbmcgZmxvYXQgdl92YXJ5aW5nO1xuIgor
ICAgICAgICAidm9pZCBtYWluKCkgeyB2X3ZhcnlpbmcgPSBhX3Bvc2l0aW9uLng7IGdsX1Bvc2l0
aW9uID0gYV9wb3NpdGlvbjsgfVxuIjsKKworICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVBy
b2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgRVhQ
RUNUX0VRKDB1LCBwcm9ncmFtKTsKK30KKworLy8gVmVyaWZ5IHRoYXQgZGVjbGFyaW5nIHZhcnlp
bmcgYXMgaW52YXJpYW50IG9ubHkgaW4gZnJhZ21lbnQgc2hhZGVyIGZhaWxzIGluIEVTU0wgMy4w
MC4KK1RFU1RfUChHTFNMVGVzdF9FUzMsIEludmFyaWFudFZhcnlpbmdJbikKK3sKKyAgICBjb25z
dCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9CisgICAgICAgICIjdmVyc2lvbiAz
MDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAi
aW52YXJpYW50IGluIGZsb2F0IHZfdmFyeWluZztcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0Zy
YWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHsgbXlfRnJhZ0NvbG9yID0gdmVjNCh2
X3ZhcnlpbmcsIDAsIDAsIDEuMCk7IH1cbiI7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0
ZXhTaGFkZXJTb3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJp
biB2ZWM0IGFfcG9zaXRpb247XG4iCisgICAgICAgICJvdXQgZmxvYXQgdl92YXJ5aW5nO1xuIgor
ICAgICAgICAidm9pZCBtYWluKCkgeyB2X3ZhcnlpbmcgPSBhX3Bvc2l0aW9uLng7IGdsX1Bvc2l0
aW9uID0gYV9wb3NpdGlvbjsgfVxuIjsKKworICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVBy
b2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgRVhQ
RUNUX0VRKDB1LCBwcm9ncmFtKTsKK30KKworLy8gVmVyaWZ5IHRoYXQgZGVjbGFyaW5nIHZhcnlp
bmcgYXMgaW52YXJpYW50IGluIGJvdGggc2hhZGVycyBzdWNjZWVkcyBpbiBFU1NMIDEuMDAuCitU
RVNUX1AoR0xTTFRlc3QsIEludmFyaWFudFZhcnlpbmdCb3RoKQoreworICAgIGNvbnN0IHN0ZDo6
c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0O1xuIgorICAgICAgICAiaW52YXJpYW50IHZhcnlpbmcgZmxvYXQgdl92YXJ5aW5nO1xu
IgorICAgICAgICAidm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2ZWM0KHZfdmFyeWluZywg
MCwgMCwgMS4wKTsgfVxuIjsKKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNv
dXJjZSA9CisgICAgICAgICJhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uO1xuIgorICAgICAgICAi
aW52YXJpYW50IHZhcnlpbmcgZmxvYXQgdl92YXJ5aW5nO1xuIgorICAgICAgICAidm9pZCBtYWlu
KCkgeyB2X3ZhcnlpbmcgPSBhX3Bvc2l0aW9uLng7IGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsg
fVxuIjsKKworICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVy
U291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgRVhQRUNUX05FKDB1LCBwcm9ncmFt
KTsKK30KKworLy8gVmVyaWZ5IHRoYXQgZGVjbGFyaW5nIHZhcnlpbmcgYXMgaW52YXJpYW50IGlu
IGJvdGggc2hhZGVycyBmYWlscyBpbiBFU1NMIDMuMDAuCitURVNUX1AoR0xTTFRlc3RfRVMzLCBJ
bnZhcmlhbnRWYXJ5aW5nQm90aCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNo
YWRlclNvdXJjZSA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAiaW52YXJpYW50IGluIGZsb2F0IHZfdmFy
eWluZztcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZv
aWQgbWFpbigpIHsgbXlfRnJhZ0NvbG9yID0gdmVjNCh2X3ZhcnlpbmcsIDAsIDAsIDEuMCk7IH1c
biI7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQorICAgICAg
ICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJpbiB2ZWM0IGFfcG9zaXRpb247XG4iCisg
ICAgICAgICJpbnZhcmlhbnQgb3V0IGZsb2F0IHZfdmFyeWluZztcbiIKKyAgICAgICAgInZvaWQg
bWFpbigpIHsgdl92YXJ5aW5nID0gYV9wb3NpdGlvbi54OyBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRp
b247IH1cbiI7CisKKyAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNo
YWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOworICAgIEVYUEVDVF9FUSgwdSwgcHJv
Z3JhbSk7Cit9CisKKy8vIFZlcmlmeSB0aGF0IGRlY2xhcmluZyBnbF9Qb3NpdGlvbiBhcyBpbnZh
cmlhbnQgc3VjY2VlZHMgaW4gRVNTTCAxLjAwLgorVEVTVF9QKEdMU0xUZXN0LCBJbnZhcmlhbnRH
TFBvc2l0aW9uKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNl
ID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidmFyeWlu
ZyBmbG9hdCB2X3Zhcnlpbmc7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX0ZyYWdDb2xv
ciA9IHZlYzQodl92YXJ5aW5nLCAwLCAwLCAxLjApOyB9XG4iOworCisgICAgY29uc3Qgc3RkOjpz
dHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0KKyAgICAgICAgImF0dHJpYnV0ZSB2ZWM0IGFfcG9z
aXRpb247XG4iCisgICAgICAgICJpbnZhcmlhbnQgZ2xfUG9zaXRpb247XG4iCisgICAgICAgICJ2
YXJ5aW5nIGZsb2F0IHZfdmFyeWluZztcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHsgdl92YXJ5
aW5nID0gYV9wb3NpdGlvbi54OyBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247IH1cbiI7CisKKyAg
ICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJh
Z21lbnRTaGFkZXJTb3VyY2UpOworICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7Cit9CisKKy8v
IFZlcmlmeSB0aGF0IGRlY2xhcmluZyBnbF9Qb3NpdGlvbiBhcyBpbnZhcmlhbnQgc3VjY2VlZHMg
aW4gRVNTTCAzLjAwLgorVEVTVF9QKEdMU0xUZXN0X0VTMywgSW52YXJpYW50R0xQb3NpdGlvbikK
K3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9CisgICAgICAg
ICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xu
IgorICAgICAgICAiaW4gZmxvYXQgdl92YXJ5aW5nO1xuIgorICAgICAgICAib3V0IHZlYzQgbXlf
RnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKCkgeyBteV9GcmFnQ29sb3IgPSB2ZWM0
KHZfdmFyeWluZywgMCwgMCwgMS4wKTsgfVxuIjsKKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZl
cnRleFNoYWRlclNvdXJjZSA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAg
ImluIHZlYzQgYV9wb3NpdGlvbjtcbiIKKyAgICAgICAgImludmFyaWFudCBnbF9Qb3NpdGlvbjtc
biIKKyAgICAgICAgIm91dCBmbG9hdCB2X3Zhcnlpbmc7XG4iCisgICAgICAgICJ2b2lkIG1haW4o
KSB7IHZfdmFyeWluZyA9IGFfcG9zaXRpb24ueDsgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOyB9
XG4iOworCisgICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJT
b3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKKyAgICBFWFBFQ1RfTkUoMHUsIHByb2dyYW0p
OworfQorCisvLyBWZXJpZnkgdGhhdCB1c2luZyBpbnZhcmlhbnQoYWxsKSBpbiBib3RoIHNoYWRl
cnMgc3VjY2VlZHMgaW4gRVNTTCAxLjAwLgorVEVTVF9QKEdMU0xUZXN0LCBJbnZhcmlhbnRBbGxC
b3RoKQoreworICAgIC8vIFRPRE86IEVTU0wgMS4wMCAtPiBHTFNMIDEuMjAgdHJhbnNsYXRpb24g
c2hvdWxkIGFkZCAiaW52YXJpYW50IiBpbiBmcmFnbWVudCBzaGFkZXIKKyAgICAvLyBmb3IgdmFy
eWluZ3Mgd2hpY2ggYXJlIGludmFyaWFudCBpbiB2ZXJ0ZXggc2hhZGVyIGluZGl2aWR1YWxseSwK
KyAgICAvLyBhbmQgcmVtb3ZlIGludmFyaWFudChhbGwpIGZyb20gZnJhZ21lbnQgc2hhZGVyICho
dHRwOi8vYW5nbGVidWcuY29tLzEyOTMpCisgICAgaWYgKElzRGVza3RvcE9wZW5HTCgpKQorICAg
IHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVkIG9uIE9wZW5HTC4iIDw8IHN0
ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IHN0ZDo6c3RyaW5n
IGZyYWdtZW50U2hhZGVyU291cmNlID0KKyAgICAgICAgIiNwcmFnbWEgU1RER0wgaW52YXJpYW50
KGFsbClcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAi
dmFyeWluZyBmbG9hdCB2X3Zhcnlpbmc7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX0Zy
YWdDb2xvciA9IHZlYzQodl92YXJ5aW5nLCAwLCAwLCAxLjApOyB9XG4iOworCisgICAgY29uc3Qg
c3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0KKyAgICAgICAgIiNwcmFnbWEgU1RER0wg
aW52YXJpYW50KGFsbClcbiIKKyAgICAgICAgImF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247XG4i
CisgICAgICAgICJ2YXJ5aW5nIGZsb2F0IHZfdmFyeWluZztcbiIKKyAgICAgICAgInZvaWQgbWFp
bigpIHsgdl92YXJ5aW5nID0gYV9wb3NpdGlvbi54OyBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247
IH1cbiI7CisKKyAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRl
clNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOworICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3Jh
bSk7Cit9CisKKy8vIFZlcmlmeSB0aGF0IGZ1bmN0aW9ucyB3aXRob3V0IHJldHVybiBzdGF0ZW1l
bnRzIHN0aWxsIGNvbXBpbGUKK1RFU1RfUChHTFNMVGVzdCwgTWlzc2luZ1JldHVybkZsb2F0KQor
eworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9CisgICAgICAgICJ2
YXJ5aW5nIGZsb2F0IHZfdmFyeWluZztcbiIKKyAgICAgICAgImZsb2F0IGYoKSB7IGlmICh2X3Zh
cnlpbmcgPiAwLjApIHJldHVybiAxLjA7IH1cbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHsgZ2xf
UG9zaXRpb24gPSB2ZWM0KGYoKSwgMCwgMCwgMSk7IH1cbiI7CisKKyAgICBjb25zdCBzdGQ6OnN0
cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHsgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLCAw
LCAwLCAxKTsgfVxuIjsKKworICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVy
dGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgRVhQRUNUX05FKDB1
LCBwcm9ncmFtKTsKK30KKworLy8gVmVyaWZ5IHRoYXQgZnVuY3Rpb25zIHdpdGhvdXQgcmV0dXJu
IHN0YXRlbWVudHMgc3RpbGwgY29tcGlsZQorVEVTVF9QKEdMU0xUZXN0LCBNaXNzaW5nUmV0dXJu
VmVjMikKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQorICAg
ICAgICAidmFyeWluZyBmbG9hdCB2X3Zhcnlpbmc7XG4iCisgICAgICAgICJ2ZWMyIGYoKSB7IGlm
ICh2X3ZhcnlpbmcgPiAwLjApIHJldHVybiB2ZWMyKDEuMCwgMS4wKTsgfVxuIgorICAgICAgICAi
dm9pZCBtYWluKCkgeyBnbF9Qb3NpdGlvbiA9IHZlYzQoZigpLngsIDAsIDAsIDEpOyB9XG4iOwor
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQorICAgICAgICAi
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX0Zy
YWdDb2xvciA9IHZlYzQoMCwgMCwgMCwgMSk7IH1cbiI7CisKKyAgICBHTHVpbnQgcHJvZ3JhbSA9
IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2Up
OworICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7Cit9CisKKy8vIFZlcmlmeSB0aGF0IGZ1bmN0
aW9ucyB3aXRob3V0IHJldHVybiBzdGF0ZW1lbnRzIHN0aWxsIGNvbXBpbGUKK1RFU1RfUChHTFNM
VGVzdCwgTWlzc2luZ1JldHVyblZlYzMpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4
U2hhZGVyU291cmNlID0KKyAgICAgICAgInZhcnlpbmcgZmxvYXQgdl92YXJ5aW5nO1xuIgorICAg
ICAgICAidmVjMyBmKCkgeyBpZiAodl92YXJ5aW5nID4gMC4wKSByZXR1cm4gdmVjMygxLjAsIDEu
MCwgMS4wKTsgfVxuIgorICAgICAgICAidm9pZCBtYWluKCkgeyBnbF9Qb3NpdGlvbiA9IHZlYzQo
ZigpLngsIDAsIDAsIDEpOyB9XG4iOworCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRT
aGFkZXJTb3VyY2UgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAg
ICAgICJ2b2lkIG1haW4oKSB7IGdsX0ZyYWdDb2xvciA9IHZlYzQoMCwgMCwgMCwgMSk7IH1cbiI7
CisKKyAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJj
ZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOworICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7Cit9
CisKKy8vIFZlcmlmeSB0aGF0IGZ1bmN0aW9ucyB3aXRob3V0IHJldHVybiBzdGF0ZW1lbnRzIHN0
aWxsIGNvbXBpbGUKK1RFU1RfUChHTFNMVGVzdCwgTWlzc2luZ1JldHVyblZlYzQpCit7CisgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0KKyAgICAgICAgInZhcnlpbmcg
ZmxvYXQgdl92YXJ5aW5nO1xuIgorICAgICAgICAidmVjNCBmKCkgeyBpZiAodl92YXJ5aW5nID4g
MC4wKSByZXR1cm4gdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjApOyB9XG4iCisgICAgICAgICJ2b2lk
IG1haW4oKSB7IGdsX1Bvc2l0aW9uID0gdmVjNChmKCkueCwgMCwgMCwgMSk7IH1cbiI7CisKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9CisgICAgICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHsgZ2xfRnJhZ0Nv
bG9yID0gdmVjNCgwLCAwLCAwLCAxKTsgfVxuIjsKKworICAgIEdMdWludCBwcm9ncmFtID0gQ29t
cGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7Cisg
ICAgRVhQRUNUX05FKDB1LCBwcm9ncmFtKTsKK30KKworLy8gVmVyaWZ5IHRoYXQgZnVuY3Rpb25z
IHdpdGhvdXQgcmV0dXJuIHN0YXRlbWVudHMgc3RpbGwgY29tcGlsZQorVEVTVF9QKEdMU0xUZXN0
LCBNaXNzaW5nUmV0dXJuSVZlYzQpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hh
ZGVyU291cmNlID0KKyAgICAgICAgInZhcnlpbmcgZmxvYXQgdl92YXJ5aW5nO1xuIgorICAgICAg
ICAiaXZlYzQgZigpIHsgaWYgKHZfdmFyeWluZyA+IDAuMCkgcmV0dXJuIGl2ZWM0KDEsIDEsIDEs
IDEpOyB9XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX1Bvc2l0aW9uID0gdmVjNChmKCku
eCwgMCwgMCwgMSk7IH1cbiI7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRl
clNvdXJjZSA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAg
InZvaWQgbWFpbigpIHsgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLCAwLCAwLCAxKTsgfVxuIjsKKwor
ICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBm
cmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgRVhQRUNUX05FKDB1LCBwcm9ncmFtKTsKK30KKwor
Ly8gVmVyaWZ5IHRoYXQgZnVuY3Rpb25zIHdpdGhvdXQgcmV0dXJuIHN0YXRlbWVudHMgc3RpbGwg
Y29tcGlsZQorVEVTVF9QKEdMU0xUZXN0LCBNaXNzaW5nUmV0dXJuTWF0NCkKK3sKKyAgICBjb25z
dCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQorICAgICAgICAidmFyeWluZyBmbG9h
dCB2X3Zhcnlpbmc7XG4iCisgICAgICAgICJtYXQ0IGYoKSB7IGlmICh2X3ZhcnlpbmcgPiAwLjAp
IHJldHVybiBtYXQ0KDEuMCk7IH1cbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHsgZ2xfUG9zaXRp
b24gPSB2ZWM0KGYoKVswXVswXSwgMCwgMCwgMSk7IH1cbiI7CisKKyAgICBjb25zdCBzdGQ6OnN0
cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHsgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLCAw
LCAwLCAxKTsgfVxuIjsKKworICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVy
dGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgRVhQRUNUX05FKDB1
LCBwcm9ncmFtKTsKK30KKworLy8gVmVyaWZ5IHRoYXQgZnVuY3Rpb25zIHdpdGhvdXQgcmV0dXJu
IHN0YXRlbWVudHMgc3RpbGwgY29tcGlsZQorVEVTVF9QKEdMU0xUZXN0LCBNaXNzaW5nUmV0dXJu
U3RydWN0KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9Cisg
ICAgICAgICJ2YXJ5aW5nIGZsb2F0IHZfdmFyeWluZztcbiIKKyAgICAgICAgInN0cnVjdCBzIHsg
ZmxvYXQgYTsgaW50IGI7IHZlYzIgYzsgfTtcbiIKKyAgICAgICAgInMgZigpIHsgaWYgKHZfdmFy
eWluZyA+IDAuMCkgcmV0dXJuIHMoMS4wLCAxLCB2ZWMyKDEuMCwgMS4wKSk7IH1cbiIKKyAgICAg
ICAgInZvaWQgbWFpbigpIHsgZ2xfUG9zaXRpb24gPSB2ZWM0KGYoKS5hLCAwLCAwLCAxKTsgfVxu
IjsKKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0KKyAgICAg
ICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidm9pZCBtYWluKCkgeyBn
bF9GcmFnQ29sb3IgPSB2ZWM0KDAsIDAsIDAsIDEpOyB9XG4iOworCisgICAgR0x1aW50IHByb2dy
YW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291
cmNlKTsKKyAgICBFWFBFQ1RfTkUoMHUsIHByb2dyYW0pOworfQorCisvLyBWZXJpZnkgdGhhdCBm
dW5jdGlvbnMgd2l0aG91dCByZXR1cm4gc3RhdGVtZW50cyBzdGlsbCBjb21waWxlCitURVNUX1Ao
R0xTTFRlc3RfRVMzLCBNaXNzaW5nUmV0dXJuQXJyYXkpCit7CisgICAgY29uc3Qgc3RkOjpzdHJp
bmcgdmVydGV4U2hhZGVyU291cmNlID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAg
ICAgICAiaW4gZmxvYXQgdl92YXJ5aW5nO1xuIgorICAgICAgICAidmVjMlsyXSBmKCkgeyBpZiAo
dl92YXJ5aW5nID4gMC4wKSB7IHJldHVybiB2ZWMyWzJdKHZlYzIoMS4wLCAxLjApLCB2ZWMyKDEu
MCwgMS4wKSk7IH0gfVxuIgorICAgICAgICAidm9pZCBtYWluKCkgeyBnbF9Qb3NpdGlvbiA9IHZl
YzQoZigpWzBdLngsIDAsIDAsIDEpOyB9XG4iOworCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJh
Z21lbnRTaGFkZXJTb3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAg
ICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdD
b2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHsgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLCAw
LCAwLCAxKTsgfVxuIjsKKworICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVy
dGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgRVhQRUNUX05FKDB1
LCBwcm9ncmFtKTsKK30KKworLy8gVmVyaWZ5IHRoYXQgZnVuY3Rpb25zIHdpdGhvdXQgcmV0dXJu
IHN0YXRlbWVudHMgc3RpbGwgY29tcGlsZQorVEVTVF9QKEdMU0xUZXN0X0VTMywgTWlzc2luZ1Jl
dHVybkFycmF5T2ZTdHJ1Y3RzKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRl
clNvdXJjZSA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgImluIGZsb2F0
IHZfdmFyeWluZztcbiIKKyAgICAgICAgInN0cnVjdCBzIHsgZmxvYXQgYTsgaW50IGI7IHZlYzIg
YzsgfTtcbiIKKyAgICAgICAgInNbMl0gZigpIHsgaWYgKHZfdmFyeWluZyA+IDAuMCkgeyByZXR1
cm4gc1syXShzKDEuMCwgMSwgdmVjMigxLjAsIDEuMCkpLCBzKDEuMCwgMSwgIgorICAgICAgICAi
dmVjMigxLjAsIDEuMCkpKTsgfSB9XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX1Bvc2l0
aW9uID0gdmVjNChmKClbMF0uYSwgMCwgMCwgMSk7IH1cbiI7CisKKyAgICBjb25zdCBzdGQ6OnN0
cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIK
KyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0IHZlYzQg
bXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKCkgeyBteV9GcmFnQ29sb3IgPSB2
ZWM0KDAsIDAsIDAsIDEpOyB9XG4iOworCisgICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJv
Z3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKKyAgICBFWFBF
Q1RfTkUoMHUsIHByb2dyYW0pOworfQorCisvLyBWZXJpZnkgdGhhdCBmdW5jdGlvbnMgd2l0aG91
dCByZXR1cm4gc3RhdGVtZW50cyBzdGlsbCBjb21waWxlCitURVNUX1AoR0xTTFRlc3RfRVMzLCBN
aXNzaW5nUmV0dXJuU3RydWN0T2ZBcnJheXMpCit7CisgICAgLy8gVE9ETyhjd2FsbGV6KSByZW1v
dmUgdGhlIHN1cHByZXNzaW9uIG9uY2UgTlZJRElBIHJlbW92ZXMgdGhlIHJlc3RyaWN0aW9uIGZv
cgorICAgIC8vIEdMU0wgPj0gMzAwLiBJdCB3YXMgZGVmaW5lZCBvbmx5IGluIEdMU0wgMi4wLCBz
ZWN0aW9uIDYuMS4KKyAgICBpZiAoSXNOVklESUEoKSAmJiBJc09wZW5HTEVTKCkpCisgICAgewor
ICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBOVklESUEgT3BlbkdMIEVTIGJl
Y2F1c2UgaXQgZGlzYWxsb3dzIHJldHVybmluZyAiCisgICAgICAgICAgICAgICAgICAgICAic3Ry
dWN0dXJlIG9mIGFycmF5cyIKKyAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNv
dXJjZSA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgImluIGZsb2F0IHZf
dmFyeWluZztcbiIKKyAgICAgICAgInN0cnVjdCBzIHsgZmxvYXQgYVsyXTsgaW50IGJbMl07IHZl
YzIgY1syXTsgfTtcbiIKKyAgICAgICAgInMgZigpIHsgaWYgKHZfdmFyeWluZyA+IDAuMCkgeyBy
ZXR1cm4gcyhmbG9hdFsyXSgxLjAsIDEuMCksIGludFsyXSgxLCAxKSwiCisgICAgICAgICJ2ZWMy
WzJdKHZlYzIoMS4wLCAxLjApLCB2ZWMyKDEuMCwgMS4wKSkpOyB9IH1cbiIKKyAgICAgICAgInZv
aWQgbWFpbigpIHsgZ2xfUG9zaXRpb24gPSB2ZWM0KGYoKS5hWzBdLCAwLCAwLCAxKTsgfVxuIjsK
KworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0KKyAgICAgICAg
IiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
CisgICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4o
KSB7IG15X0ZyYWdDb2xvciA9IHZlYzQoMCwgMCwgMCwgMSk7IH1cbiI7CisKKyAgICBHTHVpbnQg
cHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFk
ZXJTb3VyY2UpOworICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7Cit9CisKKy8vIFZlcmlmeSB0
aGF0IHVzaW5nIGludmFyaWFudChhbGwpIGluIGJvdGggc2hhZGVycyBmYWlscyBpbiBFU1NMIDMu
MDAuCitURVNUX1AoR0xTTFRlc3RfRVMzLCBJbnZhcmlhbnRBbGxCb3RoKQoreworICAgIGNvbnN0
IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0KKyAgICAgICAgIiN2ZXJzaW9uIDMw
MCBlc1xuIgorICAgICAgICAiI3ByYWdtYSBTVERHTCBpbnZhcmlhbnQoYWxsKVxuIgorICAgICAg
ICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJpbiBmbG9hdCB2X3Zhcnlp
bmc7XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lk
IG1haW4oKSB7IG15X0ZyYWdDb2xvciA9IHZlYzQodl92YXJ5aW5nLCAwLCAwLCAxLjApOyB9XG4i
OworCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0KKyAgICAgICAg
IiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAiI3ByYWdtYSBTVERHTCBpbnZhcmlhbnQoYWxs
KVxuIgorICAgICAgICAiaW4gdmVjNCBhX3Bvc2l0aW9uO1xuIgorICAgICAgICAib3V0IGZsb2F0
IHZfdmFyeWluZztcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHsgdl92YXJ5aW5nID0gYV9wb3Np
dGlvbi54OyBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247IH1cbiI7CisKKyAgICBHTHVpbnQgcHJv
Z3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJT
b3VyY2UpOworICAgIEVYUEVDVF9FUSgwdSwgcHJvZ3JhbSk7Cit9CisKKy8vIFZlcmlmeSB0aGF0
IHVzaW5nIGludmFyaWFudChhbGwpIG9ubHkgaW4gZnJhZ21lbnQgc2hhZGVyIGZhaWxzIGluIEVT
U0wgMS4wMC4KK1RFU1RfUChHTFNMVGVzdCwgSW52YXJpYW50QWxsSW4pCit7CisgICAgY29uc3Qg
c3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQorICAgICAgICAiI3ByYWdtYSBTVERH
TCBpbnZhcmlhbnQoYWxsKVxuIgorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
CisgICAgICAgICJ2YXJ5aW5nIGZsb2F0IHZfdmFyeWluZztcbiIKKyAgICAgICAgInZvaWQgbWFp
bigpIHsgZ2xfRnJhZ0NvbG9yID0gdmVjNCh2X3ZhcnlpbmcsIDAsIDAsIDEuMCk7IH1cbiI7CisK
KyAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQorICAgICAgICAiYXR0
cmlidXRlIHZlYzQgYV9wb3NpdGlvbjtcbiIKKyAgICAgICAgInZhcnlpbmcgZmxvYXQgdl92YXJ5
aW5nO1xuIgorICAgICAgICAidm9pZCBtYWluKCkgeyB2X3ZhcnlpbmcgPSBhX3Bvc2l0aW9uLng7
IGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsgfVxuIjsKKworICAgIEdMdWludCBwcm9ncmFtID0g
Q29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7
CisgICAgRVhQRUNUX0VRKDB1LCBwcm9ncmFtKTsKK30KKworLy8gVmVyaWZ5IHRoYXQgdXNpbmcg
aW52YXJpYW50KGFsbCkgb25seSBpbiBmcmFnbWVudCBzaGFkZXIgZmFpbHMgaW4gRVNTTCAzLjAw
LgorVEVTVF9QKEdMU0xUZXN0X0VTMywgSW52YXJpYW50QWxsSW4pCit7CisgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVz
XG4iCisgICAgICAgICIjcHJhZ21hIFNUREdMIGludmFyaWFudChhbGwpXG4iCisgICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgImluIGZsb2F0IHZfdmFyeWluZztc
biIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFp
bigpIHsgbXlfRnJhZ0NvbG9yID0gdmVjNCh2X3ZhcnlpbmcsIDAsIDAsIDEuMCk7IH1cbiI7CisK
KyAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQorICAgICAgICAiI3Zl
cnNpb24gMzAwIGVzXG4iCisgICAgICAgICJpbiB2ZWM0IGFfcG9zaXRpb247XG4iCisgICAgICAg
ICJvdXQgZmxvYXQgdl92YXJ5aW5nO1xuIgorICAgICAgICAidm9pZCBtYWluKCkgeyB2X3Zhcnlp
bmcgPSBhX3Bvc2l0aW9uLng7IGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsgfVxuIjsKKworICAg
IEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFn
bWVudFNoYWRlclNvdXJjZSk7CisgICAgRVhQRUNUX0VRKDB1LCBwcm9ncmFtKTsKK30KKworLy8g
VmVyaWZ5IHRoYXQgdXNpbmcgaW52YXJpYW50KGFsbCkgb25seSBpbiB2ZXJ0ZXggc2hhZGVyIGZh
aWxzIGluIEVTU0wgMS4wMC4KK1RFU1RfUChHTFNMVGVzdCwgSW52YXJpYW50QWxsT3V0KQorewor
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0KKyAgICAgICAgInBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidmFyeWluZyBmbG9hdCB2X3Zhcnlp
bmc7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX0ZyYWdDb2xvciA9IHZlYzQodl92YXJ5
aW5nLCAwLCAwLCAxLjApOyB9XG4iOworCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hh
ZGVyU291cmNlID0KKyAgICAgICAgIiNwcmFnbWEgU1RER0wgaW52YXJpYW50KGFsbClcbiIKKyAg
ICAgICAgImF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247XG4iCisgICAgICAgICJ2YXJ5aW5nIGZs
b2F0IHZfdmFyeWluZztcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHsgdl92YXJ5aW5nID0gYV9w
b3NpdGlvbi54OyBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247IH1cbiI7CisKKyAgICBHTHVpbnQg
cHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFk
ZXJTb3VyY2UpOworICAgIEVYUEVDVF9FUSgwdSwgcHJvZ3JhbSk7Cit9CisKKy8vIFZlcmlmeSB0
aGF0IHVzaW5nIGludmFyaWFudChhbGwpIG9ubHkgaW4gdmVydGV4IHNoYWRlciBzdWNjZWVkcyBp
biBFU1NMIDMuMDAuCitURVNUX1AoR0xTTFRlc3RfRVMzLCBJbnZhcmlhbnRBbGxPdXQpCit7Cisg
ICAgLy8gVE9ETzogRVNTTCAzLjAwIC0+IEdMU0wgMS4yMCB0cmFuc2xhdGlvbiBzaG91bGQgYWRk
ICJpbnZhcmlhbnQiIGluIGZyYWdtZW50IHNoYWRlcgorICAgIC8vIGZvciB2YXJ5aW5ncyB3aGlj
aCBhcmUgaW52YXJpYW50IGluIHZlcnRleCBzaGFkZXIsCisgICAgLy8gYmVjYXVzZSBvZiBpbnZh
cmlhbnQoYWxsKSBiZWluZyB1c2VkIGluIHZlcnRleCBzaGFkZXIgKGh0dHA6Ly9hbmdsZWJ1Zy5j
b20vMTI5MykKKyAgICBpZiAoSXNEZXNrdG9wT3BlbkdMKCkpCisgICAgeworICAgICAgICBzdGQ6
OmNvdXQgPDwgIlRlc3QgZGlzYWJsZWQgb24gT3BlbkdMLiIgPDwgc3RkOjplbmRsOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJT
b3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgImluIGZsb2F0IHZfdmFyeWluZztcbiIKKyAgICAg
ICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHsgbXlf
RnJhZ0NvbG9yID0gdmVjNCh2X3ZhcnlpbmcsIDAsIDAsIDEuMCk7IH1cbiI7CisKKyAgICBjb25z
dCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24gMzAw
IGVzXG4iCisgICAgICAgICIjcHJhZ21hIFNUREdMIGludmFyaWFudChhbGwpXG4iCisgICAgICAg
ICJpbiB2ZWM0IGFfcG9zaXRpb247XG4iCisgICAgICAgICJvdXQgZmxvYXQgdl92YXJ5aW5nO1xu
IgorICAgICAgICAidm9pZCBtYWluKCkgeyB2X3ZhcnlpbmcgPSBhX3Bvc2l0aW9uLng7IGdsX1Bv
c2l0aW9uID0gYV9wb3NpdGlvbjsgfVxuIjsKKworICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGls
ZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAg
RVhQRUNUX05FKDB1LCBwcm9ncmFtKTsKK30KKworVEVTVF9QKEdMU0xUZXN0LCBNYXhWYXJ5aW5n
VmVjNCkKK3sKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6
IEZpbmQgb3V0IHdoeSB0aGlzIGRvZXNuJ3QgY29tcGlsZSBvbiBBcHBsZSBBTkQgT3BlbkdMIGRy
aXZlcnMKKyAgICAvLyAoaHR0cDovL2FuZ2xlYnVnLmNvbS8xMjkxKQorICAgIGlmIChJc0FNRCgp
ICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVO
R0xfQU5HTEUpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3QgZGlzYWJsZWQgb24g
QXBwbGUgQU1EIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyNlbmRpZgorCisgICAgR0xpbnQgbWF4VmFyeWluZ3MgPSAwOworICAgIGdsR2V0SW50ZWdlcnYo
R0xfTUFYX1ZBUllJTkdfVkVDVE9SUywgJm1heFZhcnlpbmdzKTsKKworICAgIFZhcnlpbmdUZXN0
QmFzZSgwLCAwLCAwLCAwLCAwLCAwLCBtYXhWYXJ5aW5ncywgMCwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgdHJ1ZSk7Cit9CisKK1RFU1RfUChHTFNMVGVzdCwgTWF4TWludXNUd29WYXJ5aW5nVmVjNFBs
dXNUd29TcGVjaWFsVmFyaWFibGVzKQoreworICAgIEdMaW50IG1heFZhcnlpbmdzID0gMDsKKyAg
ICBnbEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMsICZtYXhWYXJ5aW5ncyk7CisK
KyAgICAvLyBHZW5lcmF0ZSBzaGFkZXIgY29kZSB0aGF0IHVzZXMgZ2xfRnJhZ0Nvb3JkIGFuZCBn
bF9Qb2ludENvb3JkLCB0d28gc3BlY2lhbCBmcmFnbWVudCBzaGFkZXIgdmFyaWFibGVzLgorICAg
IFZhcnlpbmdUZXN0QmFzZSgwLCAwLCAwLCAwLCAwLCAwLCBtYXhWYXJ5aW5ncyAtIDIsIDAsIHRy
dWUsIHRydWUsIGZhbHNlLCB0cnVlKTsKK30KKworVEVTVF9QKEdMU0xUZXN0LCBNYXhNaW51c1R3
b1ZhcnlpbmdWZWM0UGx1c1RocmVlU3BlY2lhbFZhcmlhYmxlcykKK3sKKyAgICAvLyBUT0RPKGdl
b2ZmbGFuZyk6IEZpZ3VyZSBvdXQgd2h5IHRoaXMgZmFpbHMgb24gT3BlbkdMIEFNRCAoaHR0cDov
L2FuZ2xlYnVnLmNvbS8xMjkxKQorICAgIGlmIChJc0FNRCgpICYmIGdldFBsYXRmb3JtUmVuZGVy
ZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUpCisgICAgeworICAg
ICAgICBzdGQ6OmNvdXQgPDwgIlRlc3QgZGlzYWJsZWQgb24gT3BlbkdMLiIgPDwgc3RkOjplbmRs
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR0xpbnQgbWF4VmFyeWluZ3MgPSAwOwor
ICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJTkdfVkVDVE9SUywgJm1heFZhcnlpbmdzKTsK
KworICAgIC8vIEdlbmVyYXRlIHNoYWRlciBjb2RlIHRoYXQgdXNlcyBnbF9GcmFnQ29vcmQsIGds
X1BvaW50Q29vcmQgYW5kIGdsX1BvaW50U2l6ZS4KKyAgICBWYXJ5aW5nVGVzdEJhc2UoMCwgMCwg
MCwgMCwgMCwgMCwgbWF4VmFyeWluZ3MgLSAyLCAwLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsK
K30KKworLy8gRGlzYWJsZWQgYmVjYXVzZSBkcml2ZXJzIGFyZSBhbGxvd2VkIHRvIHN1Y2Nlc3Nm
dWxseSBjb21waWxlIHNoYWRlcnMgdGhhdCBoYXZlIG1vcmUgdGhhbiB0aGUKKy8vIG1heGltdW0g
bnVtYmVyIG9mIHZhcnlpbmdzLiAoaHR0cDovL2FuZ2xlYnVnLmNvbS8xMjk2KQorVEVTVF9QKEdM
U0xUZXN0LCBESVNBQkxFRF9NYXhWYXJ5aW5nVmVjNFBsdXNGcmFnQ29vcmQpCit7CisgICAgR0xp
bnQgbWF4VmFyeWluZ3MgPSAwOworICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJTkdfVkVD
VE9SUywgJm1heFZhcnlpbmdzKTsKKworICAgIC8vIEdlbmVyYXRlIHNoYWRlciBjb2RlIHRoYXQg
dXNlcyBnbF9GcmFnQ29vcmQsIGEgc3BlY2lhbCBmcmFnbWVudCBzaGFkZXIgdmFyaWFibGVzLgor
ICAgIC8vIFRoaXMgdGVzdCBzaG91bGQgZmFpbCwgc2luY2Ugd2UgYXJlIHJlYWxseSB1c2luZyAo
bWF4VmFyeWluZ3MgKyAxKSB2YXJ5aW5ncy4KKyAgICBWYXJ5aW5nVGVzdEJhc2UoMCwgMCwgMCwg
MCwgMCwgMCwgbWF4VmFyeWluZ3MsIDAsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworfQor
CisvLyBEaXNhYmxlZCBiZWNhdXNlIGRyaXZlcnMgYXJlIGFsbG93ZWQgdG8gc3VjY2Vzc2Z1bGx5
IGNvbXBpbGUgc2hhZGVycyB0aGF0IGhhdmUgbW9yZSB0aGFuIHRoZQorLy8gbWF4aW11bSBudW1i
ZXIgb2YgdmFyeWluZ3MuIChodHRwOi8vYW5nbGVidWcuY29tLzEyOTYpCitURVNUX1AoR0xTTFRl
c3QsIERJU0FCTEVEX01heFZhcnlpbmdWZWM0UGx1c1BvaW50Q29vcmQpCit7CisgICAgR0xpbnQg
bWF4VmFyeWluZ3MgPSAwOworICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJTkdfVkVDVE9S
UywgJm1heFZhcnlpbmdzKTsKKworICAgIC8vIEdlbmVyYXRlIHNoYWRlciBjb2RlIHRoYXQgdXNl
cyBnbF9GcmFnQ29vcmQsIGEgc3BlY2lhbCBmcmFnbWVudCBzaGFkZXIgdmFyaWFibGVzLgorICAg
IC8vIFRoaXMgdGVzdCBzaG91bGQgZmFpbCwgc2luY2Ugd2UgYXJlIHJlYWxseSB1c2luZyAobWF4
VmFyeWluZ3MgKyAxKSB2YXJ5aW5ncy4KKyAgICBWYXJ5aW5nVGVzdEJhc2UoMCwgMCwgMCwgMCwg
MCwgMCwgbWF4VmFyeWluZ3MsIDAsIGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UpOworfQorCitU
RVNUX1AoR0xTTFRlc3QsIE1heFZhcnlpbmdWZWMzKQoreworICAgIEdMaW50IG1heFZhcnlpbmdz
ID0gMDsKKyAgICBnbEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMsICZtYXhWYXJ5
aW5ncyk7CisKKyAgICBWYXJ5aW5nVGVzdEJhc2UoMCwgMCwgMCwgMCwgbWF4VmFyeWluZ3MsIDAs
IDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpOworfQorCitURVNUX1AoR0xTTFRlc3Qs
IE1heFZhcnlpbmdWZWMzQXJyYXkpCit7CisgICAgR0xpbnQgbWF4VmFyeWluZ3MgPSAwOworICAg
IGdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJTkdfVkVDVE9SUywgJm1heFZhcnlpbmdzKTsKKwor
ICAgIFZhcnlpbmdUZXN0QmFzZSgwLCAwLCAwLCAwLCAwLCBtYXhWYXJ5aW5ncyAvIDIsIDAsIDAs
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpOworfQorCisvLyBEaXNhYmxlZCBiZWNhdXNlIG9m
IGEgZmFpbHVyZSBpbiBEM0Q5CitURVNUX1AoR0xTTFRlc3QsIE1heFZhcnlpbmdWZWMzQW5kT25l
RmxvYXQpCit7CisgICAgaWYgKElzRDNEOSgpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8
ICJUZXN0IGRpc2FibGVkIG9uIEQzRDkuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBHTGludCBtYXhWYXJ5aW5ncyA9IDA7CisgICAgZ2xHZXRJbnRlZ2VydihH
TF9NQVhfVkFSWUlOR19WRUNUT1JTLCAmbWF4VmFyeWluZ3MpOworCisgICAgVmFyeWluZ1Rlc3RC
YXNlKDEsIDAsIDAsIDAsIG1heFZhcnlpbmdzLCAwLCAwLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCB0cnVlKTsKK30KKworLy8gRGlzYWJsZWQgYmVjYXVzZSBvZiBhIGZhaWx1cmUgaW4gRDNEOQor
VEVTVF9QKEdMU0xUZXN0LCBNYXhWYXJ5aW5nVmVjM0FycmF5QW5kT25lRmxvYXRBcnJheSkKK3sK
KyAgICBpZiAoSXNEM0Q5KCkpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3QgZGlz
YWJsZWQgb24gRDNEOS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIEdMaW50IG1heFZhcnlpbmdzID0gMDsKKyAgICBnbEdldEludGVnZXJ2KEdMX01BWF9WQVJZ
SU5HX1ZFQ1RPUlMsICZtYXhWYXJ5aW5ncyk7CisKKyAgICBWYXJ5aW5nVGVzdEJhc2UoMCwgMSwg
MCwgMCwgMCwgbWF4VmFyeWluZ3MgLyAyLCAwLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVl
KTsKK30KKworLy8gRGlzYWJsZWQgYmVjYXVzZSBvZiBhIGZhaWx1cmUgaW4gRDNEOQorVEVTVF9Q
KEdMU0xUZXN0LCBUd2ljZU1heFZhcnlpbmdWZWMyKQoreworICAgIGlmIChJc0QzRDkoKSkKKyAg
ICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxlZCBvbiBEM0Q5LiIgPDwgc3Rk
OjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGdldFBsYXRmb3JtUmVu
ZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xFU19BTkdMRSkKKyAgICB7
CisgICAgICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogRmlndXJlIG91dCB3aHkgdGhpcyBmYWlscyBv
biBOVklESUEncyBHTEVTIGRyaXZlcgorICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3QgZGlzYWJs
ZWQgb24gT3BlbkdMIEVTLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQor
CisjaWYgZGVmaW5lZChfX0FQUExFX18pCisgICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBGaW5kIG91
dCB3aHkgdGhpcyBkb2Vzbid0IGNvbXBpbGUgb24gQXBwbGUgQU5EIE9wZW5HTCBkcml2ZXJzCisg
ICAgLy8gKGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTI5MSkKKyAgICBpZiAoSXNBTUQoKSAmJiBnZXRQ
bGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xF
KQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVkIG9uIEFwcGxlIEFN
RCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYK
KworICAgIEdMaW50IG1heFZhcnlpbmdzID0gMDsKKyAgICBnbEdldEludGVnZXJ2KEdMX01BWF9W
QVJZSU5HX1ZFQ1RPUlMsICZtYXhWYXJ5aW5ncyk7CisKKyAgICBWYXJ5aW5nVGVzdEJhc2UoMCwg
MCwgMiAqIG1heFZhcnlpbmdzLCAwLCAwLCAwLCAwLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0
cnVlKTsKK30KKworLy8gRGlzYWJsZWQgYmVjYXVzZSBvZiBhIGZhaWx1cmUgaW4gRDNEOQorVEVT
VF9QKEdMU0xUZXN0LCBNYXhWYXJ5aW5nVmVjMkFycmF5cykKK3sKKyAgICBpZiAoSXNEM0RTTTMo
KSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxlZCBvbiBTTTMuIiA8
PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZ2V0UGxhdGZv
cm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTEVTX0FOR0xFKQor
ICAgIHsKKyAgICAgICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBGaWd1cmUgb3V0IHdoeSB0aGlzIGZh
aWxzIG9uIE5WSURJQSdzIEdMRVMgZHJpdmVyCisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBk
aXNhYmxlZCBvbiBPcGVuR0wgRVMuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IEZp
bmQgb3V0IHdoeSB0aGlzIGRvZXNuJ3QgY29tcGlsZSBvbiBBcHBsZSBBTkQgT3BlbkdMIGRyaXZl
cnMKKyAgICAvLyAoaHR0cDovL2FuZ2xlYnVnLmNvbS8xMjkxKQorICAgIGlmIChJc0FNRCgpICYm
IGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xf
QU5HTEUpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3QgZGlzYWJsZWQgb24gQXBw
bGUgQU1EIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNl
bmRpZgorCisgICAgR0xpbnQgbWF4VmFyeWluZ3MgPSAwOworICAgIGdsR2V0SW50ZWdlcnYoR0xf
TUFYX1ZBUllJTkdfVkVDVE9SUywgJm1heFZhcnlpbmdzKTsKKworICAgIFZhcnlpbmdUZXN0QmFz
ZSgwLCAwLCAwLCBtYXhWYXJ5aW5ncywgMCwgMCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
dHJ1ZSk7Cit9CisKKy8vIERpc2FibGVkIGJlY2F1c2UgZHJpdmVycyBhcmUgYWxsb3dlZCB0byBz
dWNjZXNzZnVsbHkgY29tcGlsZSBzaGFkZXJzIHRoYXQgaGF2ZSBtb3JlIHRoYW4gdGhlCisvLyBt
YXhpbXVtIG51bWJlciBvZiB2YXJ5aW5ncy4gKGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTI5NikKK1RF
U1RfUChHTFNMVGVzdCwgRElTQUJMRURfTWF4UGx1c09uZVZhcnlpbmdWZWMzKQoreworICAgIEdM
aW50IG1heFZhcnlpbmdzID0gMDsKKyAgICBnbEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX1ZF
Q1RPUlMsICZtYXhWYXJ5aW5ncyk7CisKKyAgICBWYXJ5aW5nVGVzdEJhc2UoMCwgMCwgMCwgMCwg
bWF4VmFyeWluZ3MgKyAxLCAwLCAwLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7Cit9
CisKKy8vIERpc2FibGVkIGJlY2F1c2UgZHJpdmVycyBhcmUgYWxsb3dlZCB0byBzdWNjZXNzZnVs
bHkgY29tcGlsZSBzaGFkZXJzIHRoYXQgaGF2ZSBtb3JlIHRoYW4gdGhlCisvLyBtYXhpbXVtIG51
bWJlciBvZiB2YXJ5aW5ncy4gKGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTI5NikKK1RFU1RfUChHTFNM
VGVzdCwgRElTQUJMRURfTWF4UGx1c09uZVZhcnlpbmdWZWMzQXJyYXkpCit7CisgICAgR0xpbnQg
bWF4VmFyeWluZ3MgPSAwOworICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJTkdfVkVDVE9S
UywgJm1heFZhcnlpbmdzKTsKKworICAgIFZhcnlpbmdUZXN0QmFzZSgwLCAwLCAwLCAwLCAwLCBt
YXhWYXJ5aW5ncyAvIDIgKyAxLCAwLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7Cit9
CisKKy8vIERpc2FibGVkIGJlY2F1c2UgZHJpdmVycyBhcmUgYWxsb3dlZCB0byBzdWNjZXNzZnVs
bHkgY29tcGlsZSBzaGFkZXJzIHRoYXQgaGF2ZSBtb3JlIHRoYW4gdGhlCisvLyBtYXhpbXVtIG51
bWJlciBvZiB2YXJ5aW5ncy4gKGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTI5NikKK1RFU1RfUChHTFNM
VGVzdCwgRElTQUJMRURfTWF4VmFyeWluZ1ZlYzNBbmRPbmVWZWMyKQoreworICAgIEdMaW50IG1h
eFZhcnlpbmdzID0gMDsKKyAgICBnbEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMs
ICZtYXhWYXJ5aW5ncyk7CisKKyAgICBWYXJ5aW5nVGVzdEJhc2UoMCwgMCwgMSwgMCwgbWF4VmFy
eWluZ3MsIDAsIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKK30KKworLy8gRGlz
YWJsZWQgYmVjYXVzZSBkcml2ZXJzIGFyZSBhbGxvd2VkIHRvIHN1Y2Nlc3NmdWxseSBjb21waWxl
IHNoYWRlcnMgdGhhdCBoYXZlIG1vcmUgdGhhbiB0aGUKKy8vIG1heGltdW0gbnVtYmVyIG9mIHZh
cnlpbmdzLiAoaHR0cDovL2FuZ2xlYnVnLmNvbS8xMjk2KQorVEVTVF9QKEdMU0xUZXN0LCBESVNB
QkxFRF9NYXhQbHVzT25lVmFyeWluZ1ZlYzIpCit7CisgICAgR0xpbnQgbWF4VmFyeWluZ3MgPSAw
OworICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJTkdfVkVDVE9SUywgJm1heFZhcnlpbmdz
KTsKKworICAgIFZhcnlpbmdUZXN0QmFzZSgwLCAwLCAyICogbWF4VmFyeWluZ3MgKyAxLCAwLCAw
LCAwLCAwLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7Cit9CisKKy8vIERpc2FibGVk
IGJlY2F1c2UgZHJpdmVycyBhcmUgYWxsb3dlZCB0byBzdWNjZXNzZnVsbHkgY29tcGlsZSBzaGFk
ZXJzIHRoYXQgaGF2ZSBtb3JlIHRoYW4gdGhlCisvLyBtYXhpbXVtIG51bWJlciBvZiB2YXJ5aW5n
cy4gKGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTI5NikKK1RFU1RfUChHTFNMVGVzdCwgRElTQUJMRURf
TWF4VmFyeWluZ1ZlYzNBcnJheUFuZE1heFBsdXNPbmVGbG9hdEFycmF5KQoreworICAgIEdMaW50
IG1heFZhcnlpbmdzID0gMDsKKyAgICBnbEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX1ZFQ1RP
UlMsICZtYXhWYXJ5aW5ncyk7CisKKyAgICBWYXJ5aW5nVGVzdEJhc2UoMCwgbWF4VmFyeWluZ3Mg
LyAyICsgMSwgMCwgMCwgMCwgMCwgMCwgbWF4VmFyeWluZ3MgLyAyLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSk7Cit9CisKKy8vIFZlcmlmeSBzaGFkZXIgc291cmNlIHdpdGggYSBmaXhlZCBs
ZW5ndGggdGhhdCBpcyBsZXNzIHRoYW4gdGhlIG51bGwtdGVybWluYXRlZCBsZW5ndGggd2lsbCBj
b21waWxlLgorVEVTVF9QKEdMU0xUZXN0LCBGaXhlZFNoYWRlckxlbmd0aCkKK3sKKyAgICBHTHVp
bnQgc2hhZGVyID0gZ2xDcmVhdGVTaGFkZXIoR0xfRlJBR01FTlRfU0hBREVSKTsKKworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nIGFwcGVuZEdhcmJhZ2UgPSAiYWJjYXNkZmFzZGZhc2RmYXNkZmFzZGYi
OworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHNvdXJjZSA9ICJ2b2lkIG1haW4oKSB7IGdsX0ZyYWdD
b2xvciA9IHZlYzQoMCwgMCwgMCwgMCk7IH0iICsgYXBwZW5kR2FyYmFnZTsKKyAgICBjb25zdCBj
aGFyICpzb3VyY2VBcnJheVsxXSA9IHsgc291cmNlLmNfc3RyKCkgfTsKKyAgICBHTGludCBsZW5n
dGhzWzFdID0geyBzdGF0aWNfY2FzdDxHTGludD4oc291cmNlLmxlbmd0aCgpIC0gYXBwZW5kR2Fy
YmFnZS5sZW5ndGgoKSkgfTsKKyAgICBnbFNoYWRlclNvdXJjZShzaGFkZXIsIHN0YXRpY19jYXN0
PEdMc2l6ZWk+KEFycmF5U2l6ZShzb3VyY2VBcnJheSkpLCBzb3VyY2VBcnJheSwgbGVuZ3Rocyk7
CisgICAgZ2xDb21waWxlU2hhZGVyKHNoYWRlcik7CisKKyAgICBHTGludCBjb21waWxlUmVzdWx0
OworICAgIGdsR2V0U2hhZGVyaXYoc2hhZGVyLCBHTF9DT01QSUxFX1NUQVRVUywgJmNvbXBpbGVS
ZXN1bHQpOworICAgIEVYUEVDVF9ORShjb21waWxlUmVzdWx0LCAwKTsKK30KKworLy8gVmVyaWZ5
IHRoYXQgYSBuZWdhdGl2ZSBzaGFkZXIgc291cmNlIGxlbmd0aCBpcyB0cmVhdGVkIGFzIGEgbnVs
bC10ZXJtaW5hdGVkIGxlbmd0aC4KK1RFU1RfUChHTFNMVGVzdCwgTmVnYXRpdmVTaGFkZXJMZW5n
dGgpCit7CisgICAgR0x1aW50IHNoYWRlciA9IGdsQ3JlYXRlU2hhZGVyKEdMX0ZSQUdNRU5UX1NI
QURFUik7CisKKyAgICBjb25zdCBjaGFyICpzb3VyY2VBcnJheVsxXSA9IHsgInZvaWQgbWFpbigp
IHsgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLCAwLCAwLCAwKTsgfSIgfTsKKyAgICBHTGludCBsZW5n
dGhzWzFdID0geyAtMTAgfTsKKyAgICBnbFNoYWRlclNvdXJjZShzaGFkZXIsIHN0YXRpY19jYXN0
PEdMc2l6ZWk+KEFycmF5U2l6ZShzb3VyY2VBcnJheSkpLCBzb3VyY2VBcnJheSwgbGVuZ3Rocyk7
CisgICAgZ2xDb21waWxlU2hhZGVyKHNoYWRlcik7CisKKyAgICBHTGludCBjb21waWxlUmVzdWx0
OworICAgIGdsR2V0U2hhZGVyaXYoc2hhZGVyLCBHTF9DT01QSUxFX1NUQVRVUywgJmNvbXBpbGVS
ZXN1bHQpOworICAgIEVYUEVDVF9ORShjb21waWxlUmVzdWx0LCAwKTsKK30KKworLy8gQ2hlY2sg
dGhhdCBoYXZpbmcgYW4gaW52YWxpZCBjaGFyIGFmdGVyIHRoZSAiLiIgZG9lc24ndCBjYXVzZSBh
biBhc3NlcnQuCitURVNUX1AoR0xTTFRlc3QsIEludmFsaWRGaWVsZEZpcnN0Q2hhcikKK3sKKyAg
ICBHTHVpbnQgc2hhZGVyICAgICAgPSBnbENyZWF0ZVNoYWRlcihHTF9WRVJURVhfU0hBREVSKTsK
KyAgICBjb25zdCBjaGFyICpzb3VyY2UgPSAidm9pZCBtYWluKCkge3ZlYzQgeDsgeC59IjsKKyAg
ICBnbFNoYWRlclNvdXJjZShzaGFkZXIsIDEsICZzb3VyY2UsIDApOworICAgIGdsQ29tcGlsZVNo
YWRlcihzaGFkZXIpOworCisgICAgR0xpbnQgY29tcGlsZVJlc3VsdDsKKyAgICBnbEdldFNoYWRl
cml2KHNoYWRlciwgR0xfQ09NUElMRV9TVEFUVVMsICZjb21waWxlUmVzdWx0KTsKKyAgICBFWFBF
Q1RfRVEoMCwgY29tcGlsZVJlc3VsdCk7Cit9CisKKy8vIFZlcmlmeSB0aGF0IGEgbGVuZ3RoIGFy
cmF5IHdpdGggbWl4ZWQgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIHZhbHVlcyBjb21waWxlcy4KK1RF
U1RfUChHTFNMVGVzdCwgTWl4ZWRTaGFkZXJMZW5ndGhzKQoreworICAgIEdMdWludCBzaGFkZXIg
PSBnbENyZWF0ZVNoYWRlcihHTF9GUkFHTUVOVF9TSEFERVIpOworCisgICAgY29uc3QgY2hhciAq
c291cmNlQXJyYXlbXSA9CisgICAgeworICAgICAgICAidm9pZCBtYWluKCkiLAorICAgICAgICAi
eyIsCisgICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLCAwLCAwLCAwKTsiLAorICAg
ICAgICAifSIsCisgICAgfTsKKyAgICBHTGludCBsZW5ndGhzW10gPQorICAgIHsKKyAgICAgICAg
LTEwLAorICAgICAgICAxLAorICAgICAgICBzdGF0aWNfY2FzdDxHTGludD4oc3RybGVuKHNvdXJj
ZUFycmF5WzJdKSksCisgICAgICAgIC0xLAorICAgIH07CisgICAgQVNTRVJUX0VRKEFycmF5U2l6
ZShzb3VyY2VBcnJheSksIEFycmF5U2l6ZShsZW5ndGhzKSk7CisKKyAgICBnbFNoYWRlclNvdXJj
ZShzaGFkZXIsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KEFycmF5U2l6ZShzb3VyY2VBcnJheSkpLCBz
b3VyY2VBcnJheSwgbGVuZ3Rocyk7CisgICAgZ2xDb21waWxlU2hhZGVyKHNoYWRlcik7CisKKyAg
ICBHTGludCBjb21waWxlUmVzdWx0OworICAgIGdsR2V0U2hhZGVyaXYoc2hhZGVyLCBHTF9DT01Q
SUxFX1NUQVRVUywgJmNvbXBpbGVSZXN1bHQpOworICAgIEVYUEVDVF9ORShjb21waWxlUmVzdWx0
LCAwKTsKK30KKworLy8gVmVyaWZ5IHRoYXQgemVyby1sZW5ndGggc2hhZGVyIHNvdXJjZSBkb2Vz
IG5vdCBhZmZlY3Qgc2hhZGVyIGNvbXBpbGF0aW9uLgorVEVTVF9QKEdMU0xUZXN0LCBaZXJvU2hh
ZGVyTGVuZ3RoKQoreworICAgIEdMdWludCBzaGFkZXIgPSBnbENyZWF0ZVNoYWRlcihHTF9GUkFH
TUVOVF9TSEFERVIpOworCisgICAgY29uc3QgY2hhciAqc291cmNlQXJyYXlbXSA9CisgICAgewor
ICAgICAgICAiYWRmYXNkZiIsCisgICAgICAgICIzNDUzNCIsCisgICAgICAgICJ2b2lkIG1haW4o
KSB7IGdsX0ZyYWdDb2xvciA9IHZlYzQoMCwgMCwgMCwgMCk7IH0iLAorICAgICAgICAiIiwKKyAg
ICAgICAgImFzZGZhc2Rmc2RzZGYiLAorICAgIH07CisgICAgR0xpbnQgbGVuZ3Roc1tdID0KKyAg
ICB7CisgICAgICAgIDAsCisgICAgICAgIDAsCisgICAgICAgIC0xLAorICAgICAgICAwLAorICAg
ICAgICAwLAorICAgIH07CisgICAgQVNTRVJUX0VRKEFycmF5U2l6ZShzb3VyY2VBcnJheSksIEFy
cmF5U2l6ZShsZW5ndGhzKSk7CisKKyAgICBnbFNoYWRlclNvdXJjZShzaGFkZXIsIHN0YXRpY19j
YXN0PEdMc2l6ZWk+KEFycmF5U2l6ZShzb3VyY2VBcnJheSkpLCBzb3VyY2VBcnJheSwgbGVuZ3Ro
cyk7CisgICAgZ2xDb21waWxlU2hhZGVyKHNoYWRlcik7CisKKyAgICBHTGludCBjb21waWxlUmVz
dWx0OworICAgIGdsR2V0U2hhZGVyaXYoc2hhZGVyLCBHTF9DT01QSUxFX1NUQVRVUywgJmNvbXBp
bGVSZXN1bHQpOworICAgIEVYUEVDVF9ORShjb21waWxlUmVzdWx0LCAwKTsKK30KKworLy8gVGVz
dHMgdGhhdCBiYWQgaW5kZXggZXhwcmVzc2lvbnMgZG9uJ3QgY3Jhc2ggQU5HTEUncyB0cmFuc2xh
dG9yLgorLy8gaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9hbmdsZXByb2plY3QvaXNzdWVzL2Rl
dGFpbD9pZD04NTcKK1RFU1RfUChHTFNMVGVzdCwgQmFkSW5kZXhCdWcpCit7CisgICAgY29uc3Qg
c3RkOjpzdHJpbmcgJmZyYWdtZW50U2hhZGVyU291cmNlVmVjID0KKyAgICAgICAgInByZWNpc2lv
biBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidW5pZm9ybSB2ZWM0IHVuaWZvcm1WZWM7XG4i
CisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGds
X0ZyYWdDb2xvciA9IHZlYzQodW5pZm9ybVZlY1tpbnQoKV0pO1xuIgorICAgICAgICAifSI7CisK
KyAgICBHTHVpbnQgc2hhZGVyID0gQ29tcGlsZVNoYWRlcihHTF9GUkFHTUVOVF9TSEFERVIsIGZy
YWdtZW50U2hhZGVyU291cmNlVmVjKTsKKyAgICBFWFBFQ1RfRVEoMHUsIHNoYWRlcik7CisKKyAg
ICBpZiAoc2hhZGVyICE9IDApCisgICAgeworICAgICAgICBnbERlbGV0ZVNoYWRlcihzaGFkZXIp
OworICAgIH0KKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnbWVudFNoYWRlclNvdXJjZU1h
dCA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZv
cm0gbWF0NCB1bmlmb3JtTWF0O1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAg
IntcbiIKKyAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHVuaWZvcm1NYXRbaW50KCld
KTtcbiIKKyAgICAgICAgIn0iOworCisgICAgc2hhZGVyID0gQ29tcGlsZVNoYWRlcihHTF9GUkFH
TUVOVF9TSEFERVIsIGZyYWdtZW50U2hhZGVyU291cmNlTWF0KTsKKyAgICBFWFBFQ1RfRVEoMHUs
IHNoYWRlcik7CisKKyAgICBpZiAoc2hhZGVyICE9IDApCisgICAgeworICAgICAgICBnbERlbGV0
ZVNoYWRlcihzaGFkZXIpOworICAgIH0KKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnbWVu
dFNoYWRlclNvdXJjZUFycmF5ID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xu
IgorICAgICAgICAidW5pZm9ybSB2ZWM0IHVuaWZvcm1BcnJheTtcbiIKKyAgICAgICAgInZvaWQg
bWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVj
NCh1bmlmb3JtQXJyYXlbaW50KCldKTtcbiIKKyAgICAgICAgIn0iOworCisgICAgc2hhZGVyID0g
Q29tcGlsZVNoYWRlcihHTF9GUkFHTUVOVF9TSEFERVIsIGZyYWdtZW50U2hhZGVyU291cmNlQXJy
YXkpOworICAgIEVYUEVDVF9FUSgwdSwgc2hhZGVyKTsKKworICAgIGlmIChzaGFkZXIgIT0gMCkK
KyAgICB7CisgICAgICAgIGdsRGVsZXRlU2hhZGVyKHNoYWRlcik7CisgICAgfQorfQorCisvLyBU
ZXN0IHRoYXQgc3RydWN0cyBkZWZpbmVkIGluIHVuaWZvcm1zIGFyZSB0cmFuc2xhdGVkIGNvcnJl
Y3RseS4KK1RFU1RfUChHTFNMVGVzdCwgU3RydWN0U3BlY2lmaWVyc1VuaWZvcm1zKQoreworICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQor
ICAgICgKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgICAgICAgdW5pZm9y
bSBzdHJ1Y3QgUyB7IGZsb2F0IGZpZWxkO30gczsKKworICAgICAgICB2b2lkIG1haW4oKQorICAg
ICAgICB7CisgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEsIDAsIDAsIDEpOworICAg
ICAgICAgICAgZ2xfRnJhZ0NvbG9yLmEgKz0gcy5maWVsZDsKKyAgICAgICAgfQorICAgICk7CisK
KyAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKG1TaW1wbGVWU1NvdXJjZSwgZnJh
Z21lbnRTaGFkZXJTb3VyY2UpOworICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7Cit9CisKKy8v
IFRlc3QgdGhhdCBnbF9EZXB0aFJhbmdlIGlzIG5vdCBzdG9yZWQgYXMgYSB1bmlmb3JtIGxvY2F0
aW9uLiBTaW5jZSB1bmlmb3JtcworLy8gYmVnaW5uaW5nIHdpdGggImdsXyIgYXJlIGZpbHRlcmVk
IG91dCBieSBvdXIgdmFsaWRhdGlvbiBsb2dpYywgd2UgbXVzdAorLy8gYnlwYXNzIHRoZSB2YWxp
ZGF0aW9uIHRvIHRlc3QgdGhlIGJlaGF2aW91ciBvZiB0aGUgaW1wbGVtZW50YXRpb24uCisvLyAo
bm90ZSB0aGlzIHRlc3QgaXMgc3RpbGwgSW1wbC1pbmRlcGVuZGVudCkKK1RFU1RfUChHTFNMVGVz
dCwgRGVwdGhSYW5nZVVuaWZvcm1zKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50
U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQorICAgICgKKyAgICAgICAgcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChnbF9EZXB0aFJhbmdlLm5lYXIsIGdsX0RlcHRoUmFuZ2Uu
ZmFyLCBnbF9EZXB0aFJhbmdlLmRpZmYsIDEpOworICAgICAgICB9CisgICAgKTsKKworICAgIEdM
dWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0obVNpbXBsZVZTU291cmNlLCBmcmFnbWVudFNo
YWRlclNvdXJjZSk7CisgICAgRVhQRUNUX05FKDB1LCBwcm9ncmFtKTsKKworICAgIC8vIGRpdmUg
aW50byB0aGUgQU5HTEUgaW50ZXJuYWxzLCBzbyB3ZSBjYW4gYnlwYXNzIHZhbGlkYXRpb24uCisg
ICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSByZWludGVycHJldF9jYXN0PGdsOjpDb250ZXh0ICo+
KGdldEVHTFdpbmRvdygpLT5nZXRDb250ZXh0KCkpOworICAgIGdsOjpQcm9ncmFtICpnbFByb2dy
YW0gPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworICAgIEdMaW50IG5lYXJJbmRleCA9
IGdsUHJvZ3JhbS0+Z2V0VW5pZm9ybUxvY2F0aW9uKCJnbF9EZXB0aFJhbmdlLm5lYXIiKTsKKyAg
ICBFWFBFQ1RfRVEoLTEsIG5lYXJJbmRleCk7CisKKyAgICAvLyBUZXN0IGRyYXdpbmcgZG9lcyBu
b3QgdGhyb3cgYW4gZXhjZXB0aW9uLgorICAgIGRyYXdRdWFkKHByb2dyYW0sICJpbnB1dEF0dHJp
YnV0ZSIsIDAuNWYpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbERlbGV0
ZVByb2dyYW0ocHJvZ3JhbSk7Cit9CisKK3N0ZDo6c3RyaW5nIEdlbmVyYXRlU21hbGxQb3dTaGFk
ZXIoZG91YmxlIGJhc2UsIGRvdWJsZSBleHBvbmVudCkKK3sKKyAgICBzdGQ6OnN0cmluZ3N0cmVh
bSBzdHJlYW07CisKKyAgICBzdHJlYW0ucHJlY2lzaW9uKDgpOworCisgICAgZG91YmxlIHJlc3Vs
dCA9IHBvdyhiYXNlLCBleHBvbmVudCk7CisKKyAgICBzdHJlYW0gPDwgInByZWNpc2lvbiBoaWdo
cCBmbG9hdDtcbiIKKyAgICAgICAgICAgPDwgImZsb2F0IGZ1bihmbG9hdCBhcmcpXG4iCisgICAg
ICAgICAgIDw8ICJ7XG4iCisgICAgICAgICAgIDw8ICIgICAgcmV0dXJuIHBvdyhhcmcsICIgPDwg
c3RkOjpmaXhlZCA8PCBleHBvbmVudCA8PCAiKTtcbiIKKyAgICAgICAgICAgPDwgIn1cbiIKKyAg
ICAgICAgICAgPDwgIlxuIgorICAgICAgICAgICA8PCAidm9pZCBtYWluKClcbiIKKyAgICAgICAg
ICAgPDwgIntcbiIKKyAgICAgICAgICAgPDwgIiAgICBjb25zdCBmbG9hdCBhID0gIiA8PCBzdGQ6
OnNjaWVudGlmaWMgPDwgYmFzZSA8PCAiO1xuIgorICAgICAgICAgICA8PCAiICAgIGZsb2F0IGIg
PSBmdW4oYSk7XG4iCisgICAgICAgICAgIDw8ICIgICAgaWYgKGFicygiIDw8IHJlc3VsdCA8PCAi
IC0gYikgPCAiIDw8IHN0ZDo6YWJzKHJlc3VsdCAqIDAuMDAxKSA8PCAiKVxuIgorICAgICAgICAg
ICA8PCAiICAgIHtcbiIKKyAgICAgICAgICAgPDwgIiAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVj
NCgwLjAsIDEuMCwgMC4wLCAxLjApO1xuIgorICAgICAgICAgICA8PCAiICAgIH1cbiIKKyAgICAg
ICAgICAgPDwgIiAgICBlbHNlXG4iCisgICAgICAgICAgIDw8ICIgICAge1xuIgorICAgICAgICAg
ICA8PCAiICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7XG4i
CisgICAgICAgICAgIDw8ICIgICAgfVxuIgorICAgICAgICAgICA8PCAifVxuIjsKKworICAgIHJl
dHVybiBzdHJlYW0uc3RyKCk7Cit9CisKKy8vIENvdmVycyB0aGUgV2ViR0wgdGVzdCAnZ2xzbC9i
dWdzL3Bvdy1vZi1zbWFsbC1jb25zdGFudC1pbi11c2VyLWRlZmluZWQtZnVuY3Rpb24nCisvLyBT
ZWUgaHR0cDovL2FuZ2xlYnVnLmNvbS84NTEKK1RFU1RfUChHTFNMVGVzdCwgUG93T2ZTbWFsbENv
bnN0YW50KQoreworICAgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gYmFkczsKKyAgICBmb3IgKGludCBl
cHMgPSAtMTsgZXBzIDw9IDE7ICsrZXBzKQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IC00
OyBpIDw9IDU7ICsraSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGkgPj0gLTEgJiYgaSA8
PSAxKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY29uc3QgZG91Ymxl
IGVwc2lsb24gPSAxLjBlLTg7CisgICAgICAgICAgICBkb3VibGUgYmFkICAgICAgICAgICA9IHN0
YXRpY19jYXN0PGRvdWJsZT4oaSkgKyBzdGF0aWNfY2FzdDxkb3VibGU+KGVwcykgKiBlcHNpbG9u
OworICAgICAgICAgICAgYmFkcy5wdXNoX2JhY2soYmFkKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGZvciAoZG91YmxlIGJhZCA6IGJhZHMpCisgICAgeworICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyAmZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBHZW5lcmF0ZVNtYWxsUG93U2hhZGVyKDEuMGUt
NiwgYmFkKTsKKworICAgICAgICBBTkdMRV9HTF9QUk9HUkFNKHByb2dyYW0sIG1TaW1wbGVWU1Nv
dXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOworCisgICAgICAgIGRyYXdRdWFkKHByb2dyYW0u
Z2V0KCksICJpbnB1dEF0dHJpYnV0ZSIsIDAuNWYpOworCisgICAgICAgIEVYUEVDVF9QSVhFTF9D
T0xPUl9FUSgwLCAwLCBHTENvbG9yOjpncmVlbik7CisgICAgICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOworICAgIH0KK30KKworLy8gVGVzdCB0aGF0IGZyYWdtZW50IHNoYWRlcnMgd2hpY2ggY29u
dGFpbiBub24tY29uc3RhbnQgbG9vcCBpbmRleGVycyBhbmQgY29tcGlsZWQgZm9yIEZMOV8zIGFu
ZAorLy8gYmVsb3cKKy8vIGZhaWwgd2l0aCBhIHNwZWNpZmljIGVycm9yIG1lc3NhZ2UuCisvLyBB
ZGRpdGlvbmFsbHkgdGVzdCB0aGF0IHRoZSBzYW1lIGZyYWdtZW50IHNoYWRlciBjb21waWxlcyBz
dWNjZXNzZnVsbHkgd2l0aCBmZWF0dXJlIGxldmVscyBncmVhdGVyCisvLyB0aGFuIEZMOV8zLgor
VEVTVF9QKEdMU0xUZXN0LCBMb29wSW5kZXhpbmdWYWxpZGF0aW9uKQoreworICAgIGNvbnN0IHN0
ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQorICAgICgKKyAg
ICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgICAgICAgdW5pZm9ybSBmbG9hdCBs
b29wTWF4OworCisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGds
X0ZyYWdDb2xvciA9IHZlYzQoMSwgMCwgMCwgMSk7CisgICAgICAgICAgICBmb3IgKGZsb2F0IGwg
PSAwLjA7IGwgPCBsb29wTWF4OyBsKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
aWYgKGxvb3BNYXggPiAzLjApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBnbF9GcmFnQ29sb3IuYSArPSAwLjE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgKTsKKworICAgIEdMdWludCBzaGFkZXIgPSBnbENyZWF0ZVNoYWRl
cihHTF9GUkFHTUVOVF9TSEFERVIpOworCisgICAgY29uc3QgY2hhciAqc291cmNlQXJyYXlbMV0g
PSB7ZnJhZ21lbnRTaGFkZXJTb3VyY2UuY19zdHIoKX07CisgICAgZ2xTaGFkZXJTb3VyY2Uoc2hh
ZGVyLCAxLCBzb3VyY2VBcnJheSwgbnVsbHB0cik7CisgICAgZ2xDb21waWxlU2hhZGVyKHNoYWRl
cik7CisKKyAgICBHTGludCBjb21waWxlUmVzdWx0OworICAgIGdsR2V0U2hhZGVyaXYoc2hhZGVy
LCBHTF9DT01QSUxFX1NUQVRVUywgJmNvbXBpbGVSZXN1bHQpOworCisgICAgLy8gSWYgdGhlIHRl
c3QgaXMgY29uZmlndXJlZCB0byBydW4gbGltaXRlZCB0byBGZWF0dXJlIExldmVsIDlfMywgdGhl
biBpdCBpcworICAgIC8vIGFzc3VtZWQgdGhhdCBzaGFkZXIgY29tcGlsYXRpb24gd2lsbCBmYWls
IHdpdGggYW4gZXhwZWN0ZWQgZXJyb3IgbWVzc2FnZSBjb250YWluaW5nCisgICAgLy8gIkxvb3Ag
aW5kZXggY2Fubm90IGJlIGNvbXBhcmVkIHdpdGggbm9uLWNvbnN0YW50IGV4cHJlc3Npb24iCisg
ICAgaWYgKChHZXRQYXJhbSgpID09IEVTMl9EM0QxMV9GTDlfMygpIHx8IEdldFBhcmFtKCkgPT0g
RVMyX0QzRDkoKSkpCisgICAgeworICAgICAgICBpZiAoY29tcGlsZVJlc3VsdCAhPSAwKQorICAg
ICAgICB7CisgICAgICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVk
ZWQsIGV4cGVjdGVkIGZhaWx1cmUiOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAg
eworICAgICAgICAgICAgR0xpbnQgaW5mb0xvZ0xlbmd0aDsKKyAgICAgICAgICAgIGdsR2V0U2hh
ZGVyaXYoc2hhZGVyLCBHTF9JTkZPX0xPR19MRU5HVEgsICZpbmZvTG9nTGVuZ3RoKTsKKworICAg
ICAgICAgICAgc3RkOjpzdHJpbmcgaW5mb0xvZzsKKyAgICAgICAgICAgIGluZm9Mb2cucmVzaXpl
KGluZm9Mb2dMZW5ndGgpOworICAgICAgICAgICAgZ2xHZXRTaGFkZXJJbmZvTG9nKHNoYWRlciwg
c3RhdGljX2Nhc3Q8R0xzaXplaT4oaW5mb0xvZy5zaXplKCkpLCBOVUxMLCAmaW5mb0xvZ1swXSk7
CisKKyAgICAgICAgICAgIGlmIChpbmZvTG9nLmZpbmQoIkxvb3AgaW5kZXggY2Fubm90IGJlIGNv
bXBhcmVkIHdpdGggbm9uLWNvbnN0YW50IGV4cHJlc3Npb24iKSA9PQorICAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nOjpucG9zKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEZBSUwo
KSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCB3aXRoIHVuZXhwZWN0ZWQgZXJyb3IgbWVz
c2FnZSI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgRVhQRUNUX05FKDAsIGNvbXBpbGVSZXN1bHQpOworICAgIH0KKworICAgIGlmIChz
aGFkZXIgIT0gMCkKKyAgICB7CisgICAgICAgIGdsRGVsZXRlU2hhZGVyKHNoYWRlcik7CisgICAg
fQorfQorCisvLyBUZXN0cyB0aGF0IHRoZSBtYXhpbXVtIHVuaWZvcm1zIGNvdW50IHJldHVybmVk
IGZyb20gcXVlcnlpbmcgR0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMKKy8vIGNhbiBhY3R1
YWxseSBiZSB1c2VkLgorVEVTVF9QKEdMU0xUZXN0LCBWZXJpZnlNYXhWZXJ0ZXhVbmlmb3JtVmVj
dG9ycykKK3sKKyAgICBpbnQgbWF4VW5pZm9ybXMgPSAxMDAwMDsKKyAgICBnbEdldEludGVnZXJ2
KEdMX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTLCAmbWF4VW5pZm9ybXMpOworICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOworICAgIHN0ZDo6Y291dCA8PCAiVmFsaWRhdGluZyBHTF9NQVhfVkVS
VEVYX1VOSUZPUk1fVkVDVE9SUyA9ICIgPDwgbWF4VW5pZm9ybXMgPDwgc3RkOjplbmRsOworCisg
ICAgQ29tcGlsZUdMU0xXaXRoVW5pZm9ybXNBbmRTYW1wbGVycyhtYXhVbmlmb3JtcywgMCwgMCwg
MCwgdHJ1ZSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhlIG1heGltdW0gdW5pZm9ybXMgY291bnQg
cmV0dXJuZWQgZnJvbSBxdWVyeWluZyBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUworLy8g
Y2FuIGFjdHVhbGx5IGJlIHVzZWQgYWxvbmcgd2l0aCB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGV4
dHVyZSBzYW1wbGVycy4KK1RFU1RfUChHTFNMVGVzdCwgVmVyaWZ5TWF4VmVydGV4VW5pZm9ybVZl
Y3RvcnNXaXRoU2FtcGxlcnMpCit7CisgICAgaWYgKEdldFBhcmFtKCkuZWdsUGFyYW1ldGVycy5y
ZW5kZXJlciA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUgfHwKKyAgICAg
ICAgR2V0UGFyYW0oKS5lZ2xQYXJhbWV0ZXJzLnJlbmRlcmVyID09IEVHTF9QTEFURk9STV9BTkdM
RV9UWVBFX09QRU5HTEVTX0FOR0xFKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0
IGRpc2FibGVkIG9uIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGludCBtYXhVbmlmb3JtcyA9IDEwMDAwOworICAgIGdsR2V0SW50ZWdlcnYoR0xf
TUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMsICZtYXhVbmlmb3Jtcyk7CisgICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7CisgICAgc3RkOjpjb3V0IDw8ICJWYWxpZGF0aW5nIEdMX01BWF9WRVJURVhf
VU5JRk9STV9WRUNUT1JTID0gIiA8PCBtYXhVbmlmb3JtcyA8PCBzdGQ6OmVuZGw7CisKKyAgICBp
bnQgbWF4VGV4dHVyZUltYWdlVW5pdHMgPSAwOworICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZF
UlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTLCAmbWF4VGV4dHVyZUltYWdlVW5pdHMpOworCisgICAg
Q29tcGlsZUdMU0xXaXRoVW5pZm9ybXNBbmRTYW1wbGVycyhtYXhVbmlmb3JtcywgMCwgbWF4VGV4
dHVyZUltYWdlVW5pdHMsIDAsIHRydWUpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSBtYXhpbXVt
IHVuaWZvcm1zIGNvdW50ICsgMSBmcm9tIHF1ZXJ5aW5nIEdMX01BWF9WRVJURVhfVU5JRk9STV9W
RUNUT1JTCisvLyBmYWlscyBzaGFkZXIgY29tcGlsYXRpb24uCitURVNUX1AoR0xTTFRlc3QsIFZl
cmlmeU1heFZlcnRleFVuaWZvcm1WZWN0b3JzRXhjZWVkZWQpCit7CisgICAgaW50IG1heFVuaWZv
cm1zID0gMTAwMDA7CisgICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVD
VE9SUywgJm1heFVuaWZvcm1zKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICBzdGQ6
OmNvdXQgPDwgIlZhbGlkYXRpbmcgR0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMgKyAxID0g
IiA8PCBtYXhVbmlmb3JtcyArIDEgPDwgc3RkOjplbmRsOworCisgICAgQ29tcGlsZUdMU0xXaXRo
VW5pZm9ybXNBbmRTYW1wbGVycyhtYXhVbmlmb3JtcyArIDEsIDAsIDAsIDAsIGZhbHNlKTsKK30K
KworLy8gVGVzdHMgdGhhdCB0aGUgbWF4aW11bSB1bmlmb3JtcyBjb3VudCByZXR1cm5lZCBmcm9t
IHF1ZXJ5aW5nIEdMX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMKKy8vIGNhbiBhY3R1YWxs
eSBiZSB1c2VkLgorVEVTVF9QKEdMU0xUZXN0LCBWZXJpZnlNYXhGcmFnbWVudFVuaWZvcm1WZWN0
b3JzKQoreworICAgIGludCBtYXhVbmlmb3JtcyA9IDEwMDAwOworICAgIGdsR2V0SW50ZWdlcnYo
R0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUywgJm1heFVuaWZvcm1zKTsKKyAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKKyAgICBzdGQ6OmNvdXQgPDwgIlZhbGlkYXRpbmcgR0xfTUFYX0ZS
QUdNRU5UX1VOSUZPUk1fVkVDVE9SUyA9ICIgPDwgbWF4VW5pZm9ybXMgPDwgc3RkOjplbmRsOwor
CisgICAgQ29tcGlsZUdMU0xXaXRoVW5pZm9ybXNBbmRTYW1wbGVycygwLCBtYXhVbmlmb3Jtcywg
MCwgMCwgdHJ1ZSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhlIG1heGltdW0gdW5pZm9ybXMgY291
bnQgcmV0dXJuZWQgZnJvbSBxdWVyeWluZyBHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JT
CisvLyBjYW4gYWN0dWFsbHkgYmUgdXNlZCBhbG9uZyB3aXRoIHRoZSBtYXhpbXVtIG51bWJlciBv
ZiB0ZXh0dXJlIHNhbXBsZXJzLgorVEVTVF9QKEdMU0xUZXN0LCBWZXJpZnlNYXhGcmFnbWVudFVu
aWZvcm1WZWN0b3JzV2l0aFNhbXBsZXJzKQoreworICAgIGlmIChHZXRQYXJhbSgpLmVnbFBhcmFt
ZXRlcnMucmVuZGVyZXIgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFIHx8
CisgICAgICAgIEdldFBhcmFtKCkuZWdsUGFyYW1ldGVycy5yZW5kZXJlciA9PSBFR0xfUExBVEZP
Uk1fQU5HTEVfVFlQRV9PUEVOR0xFU19BTkdMRSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8
PCAiVGVzdCBkaXNhYmxlZCBvbiBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpbnQgbWF4VW5pZm9ybXMgPSAxMDAwMDsKKyAgICBnbEdldEludGVn
ZXJ2KEdMX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMsICZtYXhVbmlmb3Jtcyk7CisgICAg
RVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBpbnQgbWF4VGV4dHVyZUltYWdlVW5pdHMgPSAw
OworICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMsICZtYXhUZXh0
dXJlSW1hZ2VVbml0cyk7CisKKyAgICBDb21waWxlR0xTTFdpdGhVbmlmb3Jtc0FuZFNhbXBsZXJz
KDAsIG1heFVuaWZvcm1zLCAwLCBtYXhUZXh0dXJlSW1hZ2VVbml0cywgdHJ1ZSk7Cit9CisKKy8v
IFRlc3RzIHRoYXQgdGhlIG1heGltdW0gdW5pZm9ybXMgY291bnQgKyAxIGZyb20gcXVlcnlpbmcg
R0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUworLy8gZmFpbHMgc2hhZGVyIGNvbXBpbGF0
aW9uLgorVEVTVF9QKEdMU0xUZXN0LCBWZXJpZnlNYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzRXhj
ZWVkZWQpCit7CisgICAgaW50IG1heFVuaWZvcm1zID0gMTAwMDA7CisgICAgZ2xHZXRJbnRlZ2Vy
dihHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTLCAmbWF4VW5pZm9ybXMpOworICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOworICAgIHN0ZDo6Y291dCA8PCAiVmFsaWRhdGluZyBHTF9NQVhf
RlJBR01FTlRfVU5JRk9STV9WRUNUT1JTICsgMSA9ICIgPDwgbWF4VW5pZm9ybXMgKyAxCisgICAg
ICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKKworICAgIENvbXBpbGVHTFNMV2l0aFVuaWZvcm1zQW5k
U2FtcGxlcnMoMCwgbWF4VW5pZm9ybXMgKyAxLCAwLCAwLCBmYWxzZSk7Cit9CisKKy8vIFRlc3Qg
dGhhdCB0d28gY29uc3RydWN0b3JzIHdoaWNoIGhhdmUgdmVjNCBhbmQgbWF0MiBwYXJhbWV0ZXJz
IGdldCBkaXNhbWJpZ3VhdGVkIChpc3N1ZSBpbgorLy8gSExTTCkuCitURVNUX1AoR0xTTFRlc3Rf
RVMzLCBBbWJpZ3VvdXNDb25zdHJ1Y3RvckNhbGwyeDIpCit7CisgICAgY29uc3Qgc3RkOjpzdHJp
bmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisg
ICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9G
cmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAg
ICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKKyAgICAgICAgIn0iOworCisg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0KKyAgICAgICAgIiN2ZXJz
aW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgorICAgICAg
ICAiaW4gdmVjNCBhX3ZlYztcbiIKKyAgICAgICAgImluIG1hdDIgYV9tYXQ7XG4iCisgICAgICAg
ICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGdsX1Bvc2l0aW9u
ID0gdmVjNChhX3ZlYykgKyB2ZWM0KGFfbWF0KTtcbiIKKyAgICAgICAgIn0iOworCisgICAgR0x1
aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50
U2hhZGVyU291cmNlKTsKKyAgICBFWFBFQ1RfTkUoMHUsIHByb2dyYW0pOworfQorCisvLyBUZXN0
IHRoYXQgdHdvIGNvbnN0cnVjdG9ycyB3aGljaCBoYXZlIG1hdDJ4MyBhbmQgbWF0M3gyIHBhcmFt
ZXRlcnMgZ2V0IGRpc2FtYmlndWF0ZWQuCisvLyBUaGlzIHdhcyBzdXNwZWN0ZWQgdG8gYmUgYW4g
aXNzdWUgaW4gSExTTCwgYnV0IEhMU0wgc2VlbXMgdG8gYmUgYWJsZSB0byBuYXRpdmVseSBjaG9v
c2UgYmV0d2VlbgorLy8gdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZXMgaW4gdGhpcyBjYXNlLgorVEVT
VF9QKEdMU0xUZXN0X0VTMywgQW1iaWd1b3VzQ29uc3RydWN0b3JDYWxsMngzKQoreworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0KKyAgICAgICAgIiN2ZXJzaW9u
IDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgorICAgICAgICAi
b3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAg
ICAgIntcbiIKKyAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCk7XG4iCisgICAg
ICAgICJ9IjsKKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9Cisg
ICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9h
dDtcbiIKKyAgICAgICAgImluIG1hdDN4MiBhX21hdEE7XG4iCisgICAgICAgICJpbiBtYXQyeDMg
YV9tYXRCO1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAg
ICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoYV9tYXRBKSArIHZlYzQoYV9tYXRCKTtcbiIKKyAg
ICAgICAgIn0iOworCisgICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhT
aGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKKyAgICBFWFBFQ1RfTkUoMHUsIHBy
b2dyYW0pOworfQorCisvLyBUZXN0IHRoYXQgdHdvIGZ1bmN0aW9ucyB3aGljaCBoYXZlIHZlYzQg
YW5kIG1hdDIgcGFyYW1ldGVycyBnZXQgZGlzYW1iaWd1YXRlZCAoaXNzdWUgaW4gSExTTCkuCitU
RVNUX1AoR0xTTFRlc3RfRVMzLCBBbWJpZ3VvdXNGdW5jdGlvbkNhbGwyeDIpCit7CisgICAgY29u
c3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24g
MzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCisgICAgICAgICJv
dXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAg
ICAie1xuIgorICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKKyAgICAg
ICAgIn0iOworCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0KKyAg
ICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0
O1xuIgorICAgICAgICAiaW4gdmVjNCBhX3ZlYztcbiIKKyAgICAgICAgImluIG1hdDIgYV9tYXQ7
XG4iCisgICAgICAgICJ2ZWM0IGZvbyh2ZWM0IGEpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAg
ICIgICAgcmV0dXJuIGE7XG4iCisgICAgICAgICJ9XG4iCisgICAgICAgICJ2ZWM0IGZvbyhtYXQy
IGEpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgcmV0dXJuIHZlYzQoYVswXVswXSk7
XG4iCisgICAgICAgICJ9XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xu
IgorICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gZm9vKGFfdmVjKSArIGZvbyhhX21hdCk7XG4i
CisgICAgICAgICJ9IjsKKworICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVy
dGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgRVhQRUNUX05FKDB1
LCBwcm9ncmFtKTsKK30KKworLy8gVGVzdCB0aGF0IGFuIHVzZXItZGVmaW5lZCBmdW5jdGlvbiB3
aXRoIGEgbGFyZ2UgbnVtYmVyIG9mIGZsb2F0NCBwYXJhbWV0ZXJzIGRvZXNuJ3QgZmFpbCBkdWUg
dG8KKy8vIHRoZSBmdW5jdGlvbiBuYW1lIGJlaW5nIHRvbyBsb25nLgorVEVTVF9QKEdMU0xUZXN0
X0VTMywgTGFyZ2VOdW1iZXJPZkZsb2F0NFBhcmFtZXRlcnMpCit7CisgICAgY29uc3Qgc3RkOjpz
dHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4i
CisgICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgdmVjNCBt
eV9GcmFnQ29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgor
ICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKKyAgICAgICAgIn0iOwor
CisgICAgc3RkOjpzdHJpbmdzdHJlYW0gdmVydGV4U2hhZGVyU3RyZWFtOworICAgIGNvbnN0IHVu
c2lnbmVkIGludCBwYXJhbUNvdW50ID0gMTAyNHU7CisKKyAgICB2ZXJ0ZXhTaGFkZXJTdHJlYW0g
PDwgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAicHJlY2lz
aW9uIGhpZ2hwIGZsb2F0O1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiaW4gdmVjNCBh
X3ZlYztcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInZlYzQgbG90c09mVmVjNFBhcmFt
ZXRlcnMoIjsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBhcmFtQ291bnQ7ICsr
aSkKKyAgICB7CisgICAgICAgIHZlcnRleFNoYWRlclN0cmVhbSA8PCAidmVjNCBhIiA8PCBpIDw8
ICIsICI7CisgICAgfQorICAgIHZlcnRleFNoYWRlclN0cmVhbSA8PCAidmVjNCBhTGFzdClcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIiAgICByZXR1cm4gIjsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBhcmFt
Q291bnQ7ICsraSkKKyAgICB7CisgICAgICAgIHZlcnRleFNoYWRlclN0cmVhbSA8PCAiYSIgPDwg
aSA8PCAiICsgIjsKKyAgICB9CisgICAgdmVydGV4U2hhZGVyU3RyZWFtIDw8ICJhTGFzdDtcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSBsb3RzT2ZWZWM0UGFyYW1l
dGVycygiOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGFyYW1Db3VudDsgKytp
KQorICAgIHsKKyAgICAgICAgdmVydGV4U2hhZGVyU3RyZWFtIDw8ICJhX3ZlYywgIjsKKyAgICB9
CisgICAgdmVydGV4U2hhZGVyU3RyZWFtIDw8ICJhX3ZlYyk7XG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICJ9IjsKKworICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVy
dGV4U2hhZGVyU3RyZWFtLnN0cigpLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgRVhQRUNU
X05FKDB1LCBwcm9ncmFtKTsKK30KKworLy8gVGhpcyB0ZXN0IHdhcyB3cml0dGVuIHNwZWNpZmlj
YWxseSB0byBzdHJlc3MgRGVmZXJHbG9iYWxJbml0aWFsaXplcnMgQVNUIHRyYW5zZm9ybWF0aW9u
LgorLy8gVGVzdCBhIHNoYWRlciB3aGVyZSBhIGdsb2JhbCBjb25zdGFudCBhcnJheSBpcyBpbml0
aWFsaXplZCB3aXRoIGFuIGV4cHJlc3Npb24gY29udGFpbmluZyBhcnJheQorLy8gaW5kZXhpbmcu
IFRoaXMgaW5pdGlhbGl6ZXIgaXMgdHJpY2t5IHRvIGNvbnN0YW50IGZvbGQsIHNvIGlmIGl0J3Mg
bm90IGNvbnN0YW50IGZvbGRlZCBpdCBuZWVkcyB0bworLy8gYmUgaGFuZGxlZCBpbiBhIHdheSB0
aGF0IGRvZXNuJ3QgZ2VuZXJhdGUgc3RhdGVtZW50cyBpbiB0aGUgZ2xvYmFsIHNjb3BlIGluIEhM
U0wgb3V0cHV0LgorLy8gQWxzbyBpbmNsdWRlcyBtdWx0aXBsZSBhcnJheSBpbml0aWFsaXplcnMg
aW4gb25lIGRlY2xhcmF0aW9uLCB3aGVyZSBvbmx5IHRoZSBzZWNvbmQgb25lIGhhcworLy8gYXJy
YXkgaW5kZXhpbmcuIFRoaXMgbWFrZXMgc3VyZSB0aGF0IHRoZSBxdWFsaWZpZXIgZm9yIHRoZSBk
ZWNsYXJhdGlvbiBpcyBzZXQgY29ycmVjdGx5IGlmCisvLyB0cmFuc2Zvcm1hdGlvbnMgYXJlIGFw
cGxpZWQgdG8gdGhlIGRlY2xhcmF0aW9uIGFsc28gaW4gdGhlIGNhc2Ugb2YgRVNTTCBvdXRwdXQu
CitURVNUX1AoR0xTTFRlc3RfRVMzLCBJbml0R2xvYmFsQXJyYXlXaXRoQXJyYXlJbmRleGluZykK
K3sKKyAgICAvLyBUT0RPKHlub3Zpa292KTogcmUtZW5hYmxlIG9uY2Ugcm9vdCBjYXVzZSBvZiBo
dHRwOi8vYW5nbGVidWcuY29tLzE0MjggaXMgZml4ZWQKKyAgICBpZiAoSXNBbmRyb2lkKCkgJiYg
SXNBZHJlbm8oKSAmJiBJc09wZW5HTEVTKCkpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwg
IlRlc3Qgc2tpcHBlZCBvbiBBZHJlbm8gT3BlbkdMRVMgb24gQW5kcm9pZC4iIDw8IHN0ZDo6ZW5k
bDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRl
eFNoYWRlclNvdXJjZSA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInBy
ZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKKyAgICAgICAgImluIHZlYzQgYV92ZWM7XG4iCisgICAg
ICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGdsX1Bvc2l0
aW9uID0gdmVjNChhX3ZlYyk7XG4iCisgICAgICAgICJ9IjsKKworICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgor
ICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgorICAgICAgICAib3V0IHZlYzQgbXlf
RnJhZ0NvbG9yO1xuIgorICAgICAgICAiY29uc3QgaGlnaHAgZmxvYXQgZlsyXSA9IGZsb2F0WzJd
KDAuMSwgMC4yKTtcbiIKKyAgICAgICAgImNvbnN0IGhpZ2hwIGZsb2F0WzJdIGcgPSBmbG9hdFsy
XSgwLjMsIDAuNCksIGggPSBmbG9hdFsyXSgwLjUsIGZbMV0pO1xuIgorICAgICAgICAidm9pZCBt
YWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0
KGhbMV0pO1xuIgorICAgICAgICAifSI7CisKKyAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQ
cm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOworICAgIEVY
UEVDVF9ORSgwdSwgcHJvZ3JhbSk7Cit9CisKKy8vIFRlc3QgdGhhdCBpbmRleC1jb25zdGFudCBz
YW1wbGVyIGFycmF5IGluZGV4aW5nIGlzIHN1cHBvcnRlZC4KK1RFU1RfUChHTFNMVGVzdCwgSW5k
ZXhDb25zdGFudFNhbXBsZXJBcnJheUluZGV4aW5nKQoreworICAgIGlmIChJc0QzRDExX0ZMOTMo
KSkgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBEM0QxMSBGTCA5LjMu
IiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQorICAgICAgICAiYXR0cmlidXRlIHZlYzQgdlBv
c2l0aW9uO1xuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAg
ICAgIiAgICAgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uO1xuIgorICAgICAgICAifSI7CisKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9CisgICAgICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHVuaVsy
XTtcbiIKKyAgICAgICAgIlxuIgorICAgICAgICAiZmxvYXQgemVybyhpbnQgeClcbiIKKyAgICAg
ICAgIntcbiIKKyAgICAgICAgIiAgICByZXR1cm4gZmxvYXQoeCkgLSBmbG9hdCh4KTtcbiIKKyAg
ICAgICAgIn1cbiIKKyAgICAgICAgIlxuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAg
ICAgIntcbiIKKyAgICAgICAgIiAgICB2ZWM0IGMgPSB2ZWM0KDAsMCwwLDApO1xuIgorICAgICAg
ICAiICAgIGZvciAoaW50IGlpID0gMTsgaWkgPCAzOyArK2lpKSB7XG4iCisgICAgICAgICIgICAg
ICAgIGlmIChjLnggPiAyNTUuMCkge1xuIgorICAgICAgICAiICAgICAgICAgICAgYy54ID0gMjU1
LjAgKyB6ZXJvKGlpKTtcbiIKKyAgICAgICAgIiAgICAgICAgICAgIGJyZWFrO1xuIgorICAgICAg
ICAiICAgICAgICB9XG4iCisgICAgICAgIC8vIEluZGV4IHRoZSBzYW1wbGVyIGFycmF5IHdpdGgg
YSBwcmVkaWN0YWJsZSBsb29wIGluZGV4IChpbmRleC1jb25zdGFudCkgYXMgb3Bwb3NlZCB0bwor
ICAgICAgICAvLyBhIHRydWUgY29uc3RhbnQuIFRoaXMgaXMgdmFsaWQgaW4gT3BlbkdMIEVTIGJ1
dCBpc24ndCBpbiBtYW55IERlc2t0b3AgT3BlbkdMIHZlcnNpb25zLAorICAgICAgICAvLyB3aXRo
b3V0IGFuIGV4dGVuc2lvbi4KKyAgICAgICAgIiAgICAgICAgYyArPSB0ZXh0dXJlMkQodW5pW2lp
IC0gMV0sIHZlYzIoMC41LCAwLjUpKTtcbiIKKyAgICAgICAgIiAgICB9XG4iCisgICAgICAgICIg
ICAgZ2xfRnJhZ0NvbG9yID0gYztcbiIKKyAgICAgICAgIn0iOworCisgICAgR0x1aW50IHByb2dy
YW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291
cmNlKTsKKyAgICBFWFBFQ1RfTkUoMHUsIHByb2dyYW0pOworfQorCisvLyBUZXN0IHRoYXQgdGhl
ICNwcmFnbWEgZGlyZWN0aXZlIGlzIHN1cHBvcnRlZCBhbmQgZG9lc24ndCB0cmlnZ2VyIGEgY29t
cGlsYXRpb24gZmFpbHVyZSBvbiB0aGUKKy8vIG5hdGl2ZSBkcml2ZXIuIFRoZSBvbmx5IHByYWdt
YSB0aGF0IGdldHMgcGFzc2VkIHRvIHRoZSBPcGVuR0wgZHJpdmVyIGlzICJpbnZhcmlhbnQiIGJ1
dCB3ZSBkb24ndAorLy8gd2FudCB0byB0ZXN0IGl0cyBiZWhhdmlvciwgc28gZG9uJ3QgdXNlIGFu
eSB2YXJ5aW5ncy4KK1RFU1RfUChHTFNMVGVzdCwgUHJhZ21hRGlyZWN0aXZlKQoreworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9CisgICAgICAgICIjcHJhZ21hIFNU
REdMIGludmFyaWFudChhbGwpXG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAi
e1xuIgorICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjAp
O1xuIgorICAgICAgICAifVxuIjsKKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hh
ZGVyU291cmNlID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAg
ICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBnbF9GcmFnQ29s
b3IgPSB2ZWM0KDEuMCk7XG4iCisgICAgICAgICJ9XG4iOworCisgICAgR0x1aW50IHByb2dyYW0g
PSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNl
KTsKKyAgICBFWFBFQ1RfTkUoMHUsIHByb2dyYW0pOworfQorCisvLyBTZXF1ZW5jZSBvcGVyYXRv
ciBldmFsdWF0ZXMgb3BlcmFuZHMgZnJvbSBsZWZ0IHRvIHJpZ2h0IChFU1NMIDMuMDAgc2VjdGlv
biA1LjkpLgorLy8gVGhlIGZ1bmN0aW9uIGNhbGwgdGhhdCByZXR1cm5zIHRoZSBhcnJheSBuZWVk
cyB0byBiZSBldmFsdWF0ZWQgYWZ0ZXIgKytqIGZvciB0aGUgZXhwcmVzc2lvbiB0bworLy8gcmV0
dXJuIHRoZSBjb3JyZWN0IHZhbHVlICh0cnVlKS4KK1RFU1RfUChHTFNMVGVzdF9FUzMsIFNlcXVl
bmNlT3BlcmF0b3JFdmFsdWF0aW9uT3JkZXJBcnJheSkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyAmZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisg
ICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15
X0ZyYWdDb2xvcjsgXG4iCisgICAgICAgICJpbnRbMl0gZnVuYyhpbnQgcGFyYW0pIHtcbiIKKyAg
ICAgICAgIiAgICByZXR1cm4gaW50WzJdKHBhcmFtLCBwYXJhbSk7XG4iCisgICAgICAgICJ9XG4i
CisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgICAgaW50IGFbMl07IFxuIgor
ICAgICAgICAiICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjsgKytpKSB7XG4iCisgICAgICAgICIg
ICAgICAgIGFbaV0gPSAxO1xuIgorICAgICAgICAiICAgIH1cbiIKKyAgICAgICAgIiAgICBpbnQg
aiA9IDA7IFxuIgorICAgICAgICAiICAgIGJvb2wgcmVzdWx0ID0gKCgrK2opLCAoYSA9PSBmdW5j
KGopKSk7XG4iCisgICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIChyZXN1bHQg
PyAxLjAgOiAwLjApLCAwLjAsIDEuMCk7XG4iCisgICAgICAgICJ9XG4iOworCisgICAgR0x1aW50
IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbShtU2ltcGxlVlNTb3VyY2UsIGZyYWdtZW50U2hhZGVy
U291cmNlKTsKKyAgICBBU1NFUlRfTkUoMHUsIHByb2dyYW0pOworCisgICAgZHJhd1F1YWQocHJv
Z3JhbSwgImlucHV0QXR0cmlidXRlIiwgMC41Zik7CisKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1Jf
RVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4pOworfQorCisvLyBTZXF1ZW5jZSBvcGVyYXRvciBldmFs
dWF0ZXMgb3BlcmFuZHMgZnJvbSBsZWZ0IHRvIHJpZ2h0IChFU1NMIDMuMDAgc2VjdGlvbiA1Ljkp
LgorLy8gVGhlIHNob3J0LWNpcmN1aXRpbmcgZXhwcmVzc2lvbiBuZWVkcyB0byBiZSBldmFsdWF0
ZWQgYWZ0ZXIgKytqIGZvciB0aGUgZXhwcmVzc2lvbiB0byByZXR1cm4gdGhlCisvLyBjb3JyZWN0
IHZhbHVlICh0cnVlKS4KK1RFU1RfUChHTFNMVGVzdF9FUzMsIFNlcXVlbmNlT3BlcmF0b3JFdmFs
dWF0aW9uT3JkZXJTaG9ydENpcmN1aXQpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdt
ZW50U2hhZGVyU291cmNlID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAi
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29s
b3I7IFxuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgIGludCBqID0g
MDsgXG4iCisgICAgICAgICIgICAgYm9vbCByZXN1bHQgPSAoKCsraiksIChqID09IDEgPyB0cnVl
IDogKCsraiA9PSAzKSkpO1xuIgorICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4w
LCAoKHJlc3VsdCAmJiBqID09IDEpID8gMS4wIDogMC4wKSwgMC4wLCAxLjApO1xuIgorICAgICAg
ICAifVxuIjsKKworICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0obVNpbXBsZVZT
U291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgQVNTRVJUX05FKDB1LCBwcm9ncmFt
KTsKKworICAgIGRyYXdRdWFkKHByb2dyYW0sICJpbnB1dEF0dHJpYnV0ZSIsIDAuNWYpOworCisg
ICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsKK30KKworLy8g
U2VxdWVuY2Ugb3BlcmF0b3IgZXZhbHVhdGVzIG9wZXJhbmRzIGZyb20gbGVmdCB0byByaWdodCAo
RVNTTCAzLjAwIHNlY3Rpb24gNS45KS4KKy8vIEluZGV4aW5nIHRoZSB2ZWN0b3IgbmVlZHMgdG8g
YmUgZXZhbHVhdGVkIGFmdGVyIGZ1bmMoKSBmb3IgdGhlIHJpZ2h0IHJlc3VsdC4KK1RFU1RfUChH
TFNMVGVzdF9FUzMsIFNlcXVlbmNlT3BlcmF0b3JFdmFsdWF0aW9uT3JkZXJEeW5hbWljVmVjdG9y
SW5kZXhpbmdJbkxWYWx1ZSkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ21lbnRTaGFk
ZXJTb3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIK
KyAgICAgICAgInVuaWZvcm0gaW50IHVfemVybztcbiIKKyAgICAgICAgImludCBzaWRlRWZmZWN0
Q291bnQgPSAwO1xuIgorICAgICAgICAiZmxvYXQgZnVuYygpIHtcbiIKKyAgICAgICAgIiAgICAr
K3NpZGVFZmZlY3RDb3VudDtcbiIKKyAgICAgICAgIiAgICByZXR1cm4gLTEuMDtcbiIKKyAgICAg
ICAgIn1cbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgICB2ZWM0IHYg
PSB2ZWM0KDAuMCwgMi4wLCA0LjAsIDYuMCk7IFxuIgorICAgICAgICAiICAgIGZsb2F0IGYgPSAo
ZnVuYygpLCAoKyt2W3VfemVybyArIHNpZGVFZmZlY3RDb3VudF0pKTtcbiIKKyAgICAgICAgIiAg
ICBib29sIGdyZWVuID0gYWJzKGYgLSAzLjApIDwgMC4wMSAmJiBhYnModlsxXSAtIDMuMCkgPCAw
LjAxICYmIHNpZGVFZmZlY3RDb3VudCA9PSAxO1xuIgorICAgICAgICAiICAgIG15X0ZyYWdDb2xv
ciA9IHZlYzQoMC4wLCAoZ3JlZW4gPyAxLjAgOiAwLjApLCAwLjAsIDEuMCk7XG4iCisgICAgICAg
ICJ9XG4iOworCisgICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbShtU2ltcGxlVlNT
b3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKKyAgICBBU1NFUlRfTkUoMHUsIHByb2dyYW0p
OworCisgICAgZHJhd1F1YWQocHJvZ3JhbSwgImlucHV0QXR0cmlidXRlIiwgMC41Zik7CisKKyAg
ICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4pOworfQorCisvLyBU
ZXN0IHRoYXQgdXNpbmcgZ2xfUG9pbnRDb29yZCB3aXRoIEdMX1RSSUFOR0xFUyBkb2Vzbid0IHBy
b2R1Y2UgYSBsaW5rIGVycm9yLgorLy8gRnJvbSBXZWJHTCB0ZXN0IGNvbmZvcm1hbmNlL3JlbmRl
cmluZy9wb2ludC1zcGVjaWZpYy1zaGFkZXItdmFyaWFibGVzLmh0bWwKKy8vIFNlZSBodHRwOi8v
YW5nbGVidWcuY29tLzEzODAKK1RFU1RfUChHTFNMVGVzdCwgUmVuZGVyVHJpc1dpdGhQb2ludENv
b3JkKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2ZXJ0ID0KKyAgICAgICAgImF0dHJpYnV0
ZSB2ZWMyIGFQb3NpdGlvbjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7
XG4iCisgICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGFQb3NpdGlvbiwgMCwgMSk7XG4i
CisgICAgICAgICIgICAgZ2xfUG9pbnRTaXplID0gMS4wO1xuIgorICAgICAgICAifSI7CisgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJmZyYWcgPQorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAg
ICAgIntcbiIKKyAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGdsX1BvaW50Q29vcmQu
eHksIDAsIDEpO1xuIgorICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMCwgMSwgMCwg
MSk7XG4iCisgICAgICAgICJ9IjsKKworICAgIEFOR0xFX0dMX1BST0dSQU0ocHJvZywgdmVydCwg
ZnJhZyk7CisgICAgZHJhd1F1YWQocHJvZy5nZXQoKSwgImFQb3NpdGlvbiIsIDAuNWYpOworICAg
IEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpncmVlbik7Cit9CisKKy8vIENv
bnZlcnMgYSBidWcgd2l0aCB0aGUgaW50ZWdlciBwb3cgc3RhdGVtZW50IHdvcmthcm91bmQuCitU
RVNUX1AoR0xTTFRlc3QsIE5lc3RlZFBvd1N0YXRlbWVudHMpCit7CisgICAgY29uc3Qgc3RkOjpz
dHJpbmcgJnZlcnQgPQorICAgICAgICAiYXR0cmlidXRlIHZlYzIgcG9zaXRpb247XG4iCisgICAg
ICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGdsX1Bvc2l0
aW9uID0gdmVjNChwb3NpdGlvbiwgMCwgMSk7XG4iCisgICAgICAgICJ9IjsKKyAgICBjb25zdCBz
dGQ6OnN0cmluZyAmZnJhZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIK
KyAgICAgICAgImZsb2F0IGZ1bmMoZmxvYXQgdilcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAg
IiAgIGZsb2F0IGYxID0gcG93KHYsIDIuMCk7XG4iCisgICAgICAgICIgICByZXR1cm4gcG93KGYx
ICsgdiwgMi4wKTtcbiIKKyAgICAgICAgIn1cbiIKKyAgICAgICAgInZvaWQgbWFpbigpXG4iCisg
ICAgICAgICJ7XG4iCisgICAgICAgICIgICAgZmxvYXQgdiA9IGZ1bmMoMi4wKTtcbiIKKyAgICAg
ICAgIiAgICBnbF9GcmFnQ29sb3IgPSBhYnModiAtIDM2LjApIDwgMC4wMDEgPyB2ZWM0KDAsIDEs
IDAsIDEpIDogdmVjNCgxLCAwLCAwLCAxKTtcbiIKKyAgICAgICAgIn0iOworCisgICAgQU5HTEVf
R0xfUFJPR1JBTShwcm9nLCB2ZXJ0LCBmcmFnKTsKKyAgICBkcmF3UXVhZChwcm9nLmdldCgpLCAi
cG9zaXRpb24iLCAwLjVmKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xv
cjo6Z3JlZW4pOworfQorCisvLyBDb252ZXJzIGEgYnVnIHdpdGggdGhlIHVuYXJ5IG1pbnVzIG9w
ZXJhdG9yIG9uIHNpZ25lZCBpbnRlZ2VyIHdvcmthcm91bmQuCitURVNUX1AoR0xTTFRlc3RfRVMz
LCBVbmFyeU1pbnVzT3BlcmF0b3JTaWduZWRJbnQpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcg
JnZlcnQgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJpbiBoaWdocCB2
ZWM0IHBvc2l0aW9uO1xuIgorICAgICAgICAib3V0IG1lZGl1bXAgdmVjNCB2X2NvbG9yO1xuIgor
ICAgICAgICAidW5pZm9ybSBpbnQgdWlfb25lO1xuIgorICAgICAgICAidW5pZm9ybSBpbnQgdWlf
dHdvO1xuIgorICAgICAgICAidW5pZm9ybSBpbnQgdWlfdGhyZWU7XG4iCisgICAgICAgICJ2b2lk
IG1haW4oKSB7XG4iCisgICAgICAgICIgICAgaW50IHNbM107XG4iCisgICAgICAgICIgICAgc1sw
XSA9IHVpX29uZTtcbiIKKyAgICAgICAgIiAgICBzWzFdID0gLSgtKC11aV90d28gKyAxKSArIDEp
O1xuIiAgLy8gc1sxXSA9IC11aV90d28KKyAgICAgICAgIiAgICBzWzJdID0gdWlfdGhyZWU7XG4i
CisgICAgICAgICIgICAgaW50IHJlc3VsdCA9IDA7XG4iCisgICAgICAgICIgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCB1aV90aHJlZTsgaSsrKSB7XG4iCisgICAgICAgICIgICAgICAgIHJlc3VsdCAr
PSBzW2ldO1xuIgorICAgICAgICAiICAgIH1cbiIKKyAgICAgICAgIiAgICB2X2NvbG9yID0gKHJl
c3VsdCA9PSAyKSA/IHZlYzQoMCwgMSwgMCwgMSkgOiB2ZWM0KDEsIDAsIDAsIDEpO1xuIgorICAg
ICAgICAiICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247XG4iCisgICAgICAgICJ9XG4iOworICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgor
ICAgICAgICAiaW4gbWVkaXVtcCB2ZWM0IHZfY29sb3I7XG4iCisgICAgICAgICJsYXlvdXQobG9j
YXRpb249MCkgb3V0IG1lZGl1bXAgdmVjNCBvX2NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWlu
KCkge1xuIgorICAgICAgICAiICAgIG9fY29sb3IgPSB2X2NvbG9yO1xuIgorICAgICAgICAifVxu
IjsKKworICAgIEFOR0xFX0dMX1BST0dSQU0ocHJvZywgdmVydCwgZnJhZyk7CisKKyAgICBnbDo6
Q29udGV4dCAqY29udGV4dCAgID0gcmVpbnRlcnByZXRfY2FzdDxnbDo6Q29udGV4dCAqPihnZXRF
R0xXaW5kb3coKS0+Z2V0Q29udGV4dCgpKTsKKyAgICBnbDo6UHJvZ3JhbSAqZ2xQcm9ncmFtID0g
Y29udGV4dC0+Z2V0UHJvZ3JhbShwcm9nLmdldCgpKTsKKyAgICBHTGludCBvbmVJbmRleCAgICAg
ICAgID0gZ2xQcm9ncmFtLT5nZXRVbmlmb3JtTG9jYXRpb24oInVpX29uZSIpOworICAgIEFTU0VS
VF9ORSgtMSwgb25lSW5kZXgpOworICAgIEdMaW50IHR3b0luZGV4ID0gZ2xQcm9ncmFtLT5nZXRV
bmlmb3JtTG9jYXRpb24oInVpX3R3byIpOworICAgIEFTU0VSVF9ORSgtMSwgdHdvSW5kZXgpOwor
ICAgIEdMaW50IHRocmVlSW5kZXggPSBnbFByb2dyYW0tPmdldFVuaWZvcm1Mb2NhdGlvbigidWlf
dGhyZWUiKTsKKyAgICBBU1NFUlRfTkUoLTEsIHRocmVlSW5kZXgpOworICAgIGdsVXNlUHJvZ3Jh
bShwcm9nLmdldCgpKTsKKyAgICBnbFVuaWZvcm0xaShvbmVJbmRleCwgMSk7CisgICAgZ2xVbmlm
b3JtMWkodHdvSW5kZXgsIDIpOworICAgIGdsVW5pZm9ybTFpKHRocmVlSW5kZXgsIDMpOworCisg
ICAgZHJhd1F1YWQocHJvZy5nZXQoKSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgRVhQRUNUX1BJ
WEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsKK30KKworLy8gQ29udmVycyBhIGJ1
ZyB3aXRoIHRoZSB1bmFyeSBtaW51cyBvcGVyYXRvciBvbiB1bnNpZ25lZCBpbnRlZ2VyIHdvcmth
cm91bmQuCitURVNUX1AoR0xTTFRlc3RfRVMzLCBVbmFyeU1pbnVzT3BlcmF0b3JVbnNpZ25lZElu
dCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmVydCA9CisgICAgICAgICIjdmVyc2lvbiAz
MDAgZXNcbiIKKyAgICAgICAgImluIGhpZ2hwIHZlYzQgcG9zaXRpb247XG4iCisgICAgICAgICJv
dXQgbWVkaXVtcCB2ZWM0IHZfY29sb3I7XG4iCisgICAgICAgICJ1bmlmb3JtIHVpbnQgdWlfb25l
O1xuIgorICAgICAgICAidW5pZm9ybSB1aW50IHVpX3R3bztcbiIKKyAgICAgICAgInVuaWZvcm0g
dWludCB1aV90aHJlZTtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAg
ICB1aW50IHNbM107XG4iCisgICAgICAgICIgICAgc1swXSA9IHVpX29uZTtcbiIKKyAgICAgICAg
IiAgICBzWzFdID0gLSgtKC11aV90d28gKyAxdSkgKyAxdSk7XG4iICAvLyBzWzFdID0gLXVpX3R3
bworICAgICAgICAiICAgIHNbMl0gPSB1aV90aHJlZTtcbiIKKyAgICAgICAgIiAgICB1aW50IHJl
c3VsdCA9IDB1O1xuIgorICAgICAgICAiICAgIGZvciAodWludCBpID0gMHU7IGkgPCB1aV90aHJl
ZTsgaSsrKSB7XG4iCisgICAgICAgICIgICAgICAgIHJlc3VsdCArPSBzW2ldO1xuIgorICAgICAg
ICAiICAgIH1cbiIKKyAgICAgICAgIiAgICB2X2NvbG9yID0gKHJlc3VsdCA9PSAydSkgPyB2ZWM0
KDAsIDEsIDAsIDEpIDogdmVjNCgxLCAwLCAwLCAxKTtcbiIKKyAgICAgICAgIiAgICBnbF9Qb3Np
dGlvbiA9IHBvc2l0aW9uO1xuIgorICAgICAgICAifVxuIjsKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyAmZnJhZyA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgImluIG1lZGl1
bXAgdmVjNCB2X2NvbG9yO1xuIgorICAgICAgICAibGF5b3V0KGxvY2F0aW9uPTApIG91dCBtZWRp
dW1wIHZlYzQgb19jb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAg
IiAgICBvX2NvbG9yID0gdl9jb2xvcjtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBBTkdMRV9H
TF9QUk9HUkFNKHByb2csIHZlcnQsIGZyYWcpOworCisgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQg
ICA9IHJlaW50ZXJwcmV0X2Nhc3Q8Z2w6OkNvbnRleHQgKj4oZ2V0RUdMV2luZG93KCktPmdldENv
bnRleHQoKSk7CisgICAgZ2w6OlByb2dyYW0gKmdsUHJvZ3JhbSA9IGNvbnRleHQtPmdldFByb2dy
YW0ocHJvZy5nZXQoKSk7CisgICAgR0xpbnQgb25lSW5kZXggICAgICAgICA9IGdsUHJvZ3JhbS0+
Z2V0VW5pZm9ybUxvY2F0aW9uKCJ1aV9vbmUiKTsKKyAgICBBU1NFUlRfTkUoLTEsIG9uZUluZGV4
KTsKKyAgICBHTGludCB0d29JbmRleCA9IGdsUHJvZ3JhbS0+Z2V0VW5pZm9ybUxvY2F0aW9uKCJ1
aV90d28iKTsKKyAgICBBU1NFUlRfTkUoLTEsIHR3b0luZGV4KTsKKyAgICBHTGludCB0aHJlZUlu
ZGV4ID0gZ2xQcm9ncmFtLT5nZXRVbmlmb3JtTG9jYXRpb24oInVpX3RocmVlIik7CisgICAgQVNT
RVJUX05FKC0xLCB0aHJlZUluZGV4KTsKKyAgICBnbFVzZVByb2dyYW0ocHJvZy5nZXQoKSk7Cisg
ICAgZ2xVbmlmb3JtMXVpKG9uZUluZGV4LCAxdSk7CisgICAgZ2xVbmlmb3JtMXVpKHR3b0luZGV4
LCAydSk7CisgICAgZ2xVbmlmb3JtMXVpKHRocmVlSW5kZXgsIDN1KTsKKworICAgIGRyYXdRdWFk
KHByb2cuZ2V0KCksICJwb3NpdGlvbiIsIDAuNWYpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9F
USgwLCAwLCBHTENvbG9yOjpncmVlbik7Cit9CisKKy8vIFRlc3QgYSBuZXN0ZWQgc2VxdWVuY2Ug
b3BlcmF0b3Igd2l0aCBhIHRlcm5hcnkgb3BlcmF0b3IgaW5zaWRlLiBUaGUgdGVybmFyeSBvcGVy
YXRvciBpcworLy8gaW50ZW5kZWQgdG8gYmUgc3VjaCB0aGF0IGl0IGdldHMgY29udmVydGVkIHRv
IGFuIGlmIHN0YXRlbWVudCBvbiB0aGUgSExTTCBiYWNrZW5kLgorVEVTVF9QKEdMU0xUZXN0LCBO
ZXN0ZWRTZXF1ZW5jZU9wZXJhdG9yV2l0aFRlcm5hcnlJbnNpZGUpCit7CisgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJnZlcnQgPQorICAgICAgICAiYXR0cmlidXRlIHZlYzIgcG9zaXRpb247XG4iCisg
ICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGdsX1Bv
c2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMCwgMSk7XG4iCisgICAgICAgICJ9IjsKKworICAgIC8v
IE5vdGUgdGhhdCB0aGUgdW5pZm9ybSBrZWVwX2Zsb3BfcG9zaXRpdmUgZG9lc24ndCBuZWVkIHRv
IGJlIHNldCAtIHRoZSB0ZXN0IGV4cGVjdHMgaXQgdG8gaGF2ZQorICAgIC8vIGl0cyBkZWZhdWx0
IHZhbHVlIGZhbHNlLgorICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnID0KKyAgICAgICAgInBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAidW5pZm9ybSBib29sIGtlZXBfZmxv
cF9wb3NpdGl2ZTtcbiIKKyAgICAgICAgImZsb2F0IGZsb3A7XG4iCisgICAgICAgICJ2b2lkIG1h
aW4oKSB7XG4iCisgICAgICAgICIgICAgZmxvcCA9IC0xLjAsXG4iCisgICAgICAgICIgICAgKGZs
b3AgKj0gLTEuMCxcbiIKKyAgICAgICAgIiAgICBrZWVwX2Zsb3BfcG9zaXRpdmUgPyAwLjAgOiBm
bG9wICo9IC0xLjApLFxuIgorICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMCwgLWZs
b3AsIDAsIDEpO1xuIgorICAgICAgICAifSI7CisKKyAgICBBTkdMRV9HTF9QUk9HUkFNKHByb2cs
IHZlcnQsIGZyYWcpOworICAgIGRyYXdRdWFkKHByb2cuZ2V0KCksICJwb3NpdGlvbiIsIDAuNWYp
OworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpncmVlbik7Cit9CisK
Ky8vIFRlc3QgdGhhdCB1c2luZyBhIHNhbXBsZXIyRCBhbmQgc2FtcGxlckV4dGVybmFsT0VTIGlu
IHRoZSBzYW1lIHNoYWRlciB3b3JrcyAoYW5nbGVidWcuY29tLzE1MzQpCitURVNUX1AoR0xTTFRl
c3QsIEV4dGVybmFsQW5kMkRTYW1wbGVyKQoreworICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgi
R0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8
ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIGlzIG5vdCBh
dmFpbGFibGUuIgorICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXIgPQorICAg
ICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ1bmlmb3JtIHNhbXBs
ZXJFeHRlcm5hbE9FUyB0ZXgwO1xuIgorICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQgdGV4MTtc
biIKKyAgICAgICAgInZvaWQgbWFpbih2b2lkKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAi
IHZlYzIgdXYgPSB2ZWMyKDAuMCwgMC4wKTsiCisgICAgICAgICIgZ2xfRnJhZ0NvbG9yID0gdGV4
dHVyZTJEKHRleDAsIHV2KSArIHRleHR1cmUyRCh0ZXgxLCB1dik7XG4iCisgICAgICAgICJ9XG4i
OworCisgICAgQU5HTEVfR0xfUFJPR1JBTShwcm9ncmFtLCBtU2ltcGxlVlNTb3VyY2UsIGZyYWdt
ZW50U2hhZGVyKTsKK30KKworLy8gVGVzdCB0aGF0IHVzaW5nIGFuIGludmFsaWQgY29uc3RhbnQg
cmlnaHQtc2hpZnQgcHJvZHVjZXMgYW4gZXJyb3IuCitURVNUX1AoR0xTTFRlc3RfRVMzLCBGb2xk
ZWRJbnZhbGlkUmlnaHRTaGlmdCkKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ21lbnRT
aGFkZXIgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0IGNvbG9yO1xuIgorICAgICAgICAi
dm9pZCBtYWluKHZvaWQpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgaW50IGRpZmYgPSAt
MTAwID4+IC0xMDA7XG4iCisgICAgICAgICIgY29sb3IgPSB2ZWM0KGZsb2F0KGRpZmYpKTtcbiIK
KyAgICAgICAgIn1cbiI7CisKKyAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKG1T
aW1wbGVWU1NvdXJjZSwgZnJhZ21lbnRTaGFkZXIpOworICAgIEVYUEVDVF9FUSgwdSwgcHJvZ3Jh
bSk7CisgICAgZ2xEZWxldGVQcm9ncmFtKHByb2dyYW0pOworfQorCisvLyBUZXN0IHRoYXQgdXNp
bmcgYW4gaW52YWxpZCBjb25zdGFudCBsZWZ0LXNoaWZ0IHByb2R1Y2VzIGFuIGVycm9yLgorVEVT
VF9QKEdMU0xUZXN0X0VTMywgRm9sZGVkSW52YWxpZExlZnRTaGlmdCkKK3sKKyAgICBjb25zdCBz
dGQ6OnN0cmluZyAmZnJhZ21lbnRTaGFkZXIgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4i
CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgIm91dCB2ZWM0
IGNvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKHZvaWQpXG4iCisgICAgICAgICJ7XG4iCisg
ICAgICAgICIgaW50IGRpZmYgPSAtMTAwIDw8IC0xMDA7XG4iCisgICAgICAgICIgY29sb3IgPSB2
ZWM0KGZsb2F0KGRpZmYpKTtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBHTHVpbnQgcHJvZ3Jh
bSA9IENvbXBpbGVQcm9ncmFtKG1TaW1wbGVWU1NvdXJjZSwgZnJhZ21lbnRTaGFkZXIpOworICAg
IEVYUEVDVF9FUSgwdSwgcHJvZ3JhbSk7CisgICAgZ2xEZWxldGVQcm9ncmFtKHByb2dyYW0pOwor
fQorCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKKy8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3
aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpv
ciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCitBTkdMRV9JTlNU
QU5USUFURV9URVNUKEdMU0xUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgp
LAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgRVMyX0QzRDExX0ZMOV8zKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVO
R0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgpLAorICAgICAgICAgICAg
ICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09Q
RU5HTEVTKCkpOworCisvLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMg
KGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVz
dHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgorQU5HTEVfSU5TVEFOVElBVEVfVEVTVChHTFNMVGVz
dF9FUzMsIEVTM19EM0QxMSgpLCBFUzNfT1BFTkdMKCksIEVTM19PUEVOR0xFUygpKTsKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9JbWFnZVRlc3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0
cy9JbWFnZVRlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9nbF90ZXN0cy9JbWFnZVRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTk3MyBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEltYWdlVGVzdDoKKy8vICAgVGVzdHMgdGhlIGNvcnJl
Y3RuZXNzIG9mIGVnbEltYWdlLgorLy8KKworI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0
LmgiCisKK25hbWVzcGFjZSBhbmdsZQoreworY2xhc3MgSW1hZ2VUZXN0IDogcHVibGljIEFOR0xF
VGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgSW1hZ2VUZXN0KCkKKyAgICB7CisgICAgICAgIHNl
dFdpbmRvd1dpZHRoKDEyOCk7CisgICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOworICAgICAg
ICBzZXRDb25maWdSZWRCaXRzKDgpOworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Cisg
ICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMo
OCk7CisgICAgICAgIHNldENvbmZpZ0RlcHRoQml0cygyNCk7CisgICAgfQorCisgICAgdm9pZCBT
ZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7CisKKyAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdnNTb3VyY2UgPQorICAgICAgICAgICAgInByZWNpc2lv
biBoaWdocCBmbG9hdDtcbiIKKyAgICAgICAgICAgICJhdHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjtc
biIKKyAgICAgICAgICAgICJ2YXJ5aW5nIHZlYzIgdGV4Y29vcmQ7XG4iCisgICAgICAgICAgICAi
XG4iCisgICAgICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgICAgICJ7XG4iCisgICAg
ICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247XG4iCisgICAgICAgICAgICAiICAg
IHRleGNvb3JkID0gKHBvc2l0aW9uLnh5ICogMC41KSArIDAuNTtcbiIKKyAgICAgICAgICAgICIg
ICAgdGV4Y29vcmQueSA9IDEuMCAtIHRleGNvb3JkLnk7XG4iCisgICAgICAgICAgICAifVxuIjsK
KyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdnNFU1NMM1NvdXJjZSA9CisgICAgICAgICAgICAi
I3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xu
IgorICAgICAgICAgICAgImluIHZlYzQgcG9zaXRpb247XG4iCisgICAgICAgICAgICAib3V0IHZl
YzIgdGV4Y29vcmQ7XG4iCisgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAidm9pZCBtYWlu
KClcbiIKKyAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0g
cG9zaXRpb247XG4iCisgICAgICAgICAgICAiICAgIHRleGNvb3JkID0gKHBvc2l0aW9uLnh5ICog
MC41KSArIDAuNTtcbiIKKyAgICAgICAgICAgICIgICAgdGV4Y29vcmQueSA9IDEuMCAtIHRleGNv
b3JkLnk7XG4iCisgICAgICAgICAgICAifVxuIjsKKworICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyB0ZXh0dXJlRlNTb3VyY2UgPQorICAgICAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtc
biIKKyAgICAgICAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7XG4iCisgICAgICAgICAgICAi
dmFyeWluZyB2ZWMyIHRleGNvb3JkO1xuIgorICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAg
InZvaWQgbWFpbigpXG4iCisgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgIiAgICBnbF9G
cmFnQ29sb3IgPSB0ZXh0dXJlMkQodGV4LCB0ZXhjb29yZCk7XG4iCisgICAgICAgICAgICAifVxu
IjsKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGV4dHVyZUV4dGVybmFsRlNTb3VyY2UgPQor
ICAgICAgICAgICAgIiNleHRlbnNpb24gR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCA6IHJlcXVp
cmVcbiIKKyAgICAgICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCisgICAgICAgICAg
ICAidW5pZm9ybSBzYW1wbGVyRXh0ZXJuYWxPRVMgdGV4O1xuIgorICAgICAgICAgICAgInZhcnlp
bmcgdmVjMiB0ZXhjb29yZDtcbiIKKyAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICJ2b2lk
IG1haW4oKVxuIgorICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICIgICAgZ2xfRnJhZ0Nv
bG9yID0gdGV4dHVyZTJEKHRleCwgdGV4Y29vcmQpO1xuIgorICAgICAgICAgICAgIn1cbiI7Cisg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHRleHR1cmVFeHRlcm5hbEVTU0wzRlNTb3VyY2UgPQor
ICAgICAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAgICAgIiNleHRlbnNpb24g
R0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbF9lc3NsMyA6IHJlcXVpcmVcbiIKKyAgICAgICAgICAg
ICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCisgICAgICAgICAgICAidW5pZm9ybSBzYW1wbGVy
RXh0ZXJuYWxPRVMgdGV4O1xuIgorICAgICAgICAgICAgImluIHZlYzIgdGV4Y29vcmQ7XG4iCisg
ICAgICAgICAgICAib3V0IHZlYzQgY29sb3I7IgorICAgICAgICAgICAgIlxuIgorICAgICAgICAg
ICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgIiAgICBj
b2xvciA9IHRleHR1cmUodGV4LCB0ZXhjb29yZCk7XG4iCisgICAgICAgICAgICAifVxuIjsKKwor
ICAgICAgICBtVGV4dHVyZVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2c1NvdXJjZSwgdGV4dHVy
ZUZTU291cmNlKTsKKyAgICAgICAgaWYgKG1UZXh0dXJlUHJvZ3JhbSA9PSAwKQorICAgICAgICB7
CisgICAgICAgICAgICBGQUlMKCkgPDwgInNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQuIjsKKyAg
ICAgICAgfQorCisgICAgICAgIG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9uID0gZ2xHZXRVbmlmb3Jt
TG9jYXRpb24obVRleHR1cmVQcm9ncmFtLCAidGV4Iik7CisKKyAgICAgICAgaWYgKGV4dGVuc2lv
bkVuYWJsZWQoIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSkKKyAgICAgICAgeworICAgICAg
ICAgICAgbVRleHR1cmVFeHRlcm5hbFByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2c1NvdXJjZSwg
dGV4dHVyZUV4dGVybmFsRlNTb3VyY2UpOworICAgICAgICAgICAgQVNTRVJUX05FKDB1LCBtVGV4
dHVyZUV4dGVybmFsUHJvZ3JhbSkgPDwgInNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQuIjsKKwor
ICAgICAgICAgICAgbVRleHR1cmVFeHRlcm5hbFVuaWZvcm1Mb2NhdGlvbiA9IGdsR2V0VW5pZm9y
bUxvY2F0aW9uKG1UZXh0dXJlRXh0ZXJuYWxQcm9ncmFtLCAidGV4Iik7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbF9l
c3NsMyIpKQorICAgICAgICB7CisgICAgICAgICAgICBtVGV4dHVyZUV4dGVybmFsRVNTTDNQcm9n
cmFtID0KKyAgICAgICAgICAgICAgICBDb21waWxlUHJvZ3JhbSh2c0VTU0wzU291cmNlLCB0ZXh0
dXJlRXh0ZXJuYWxFU1NMM0ZTU291cmNlKTsKKyAgICAgICAgICAgIEFTU0VSVF9ORSgwdSwgbVRl
eHR1cmVFeHRlcm5hbEVTU0wzUHJvZ3JhbSkgPDwgInNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQu
IjsKKworICAgICAgICAgICAgbVRleHR1cmVFeHRlcm5hbEVTU0wzVW5pZm9ybUxvY2F0aW9uID0K
KyAgICAgICAgICAgICAgICBnbEdldFVuaWZvcm1Mb2NhdGlvbihtVGV4dHVyZUV4dGVybmFsRVNT
TDNQcm9ncmFtLCAidGV4Iik7CisgICAgICAgIH0KKworICAgICAgICBlZ2xDcmVhdGVJbWFnZUtI
UiA9CisgICAgICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkVHTENSRUFURUlNQUdFS0hSUFJP
Qz4oZWdsR2V0UHJvY0FkZHJlc3MoImVnbENyZWF0ZUltYWdlS0hSIikpOworICAgICAgICBlZ2xE
ZXN0cm95SW1hZ2VLSFIgPQorICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xERVNU
Uk9ZSU1BR0VLSFJQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZWdsRGVzdHJveUltYWdlS0hSIikp
OworCisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIH0KKworICAgIHZvaWQgVGVh
ckRvd24oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1UZXh0dXJl
UHJvZ3JhbSk7CisgICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtVGV4dHVyZUV4dGVybmFsUHJvZ3Jh
bSk7CisgICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtVGV4dHVyZUV4dGVybmFsRVNTTDNQcm9ncmFt
KTsKKworICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7CisgICAgfQorCisgICAgdm9pZCBj
cmVhdGVFR0xJbWFnZTJEVGV4dHVyZVNvdXJjZShzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCAqb3V0U291cmNlVGV4dHVyZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEVHTEltYWdlS0hSICpvdXRTb3VyY2VJbWFnZSkKKyAgICB7
CisgICAgICAgIC8vIENyZWF0ZSBhIHNvdXJjZSAyRCB0ZXh0dXJlCisgICAgICAgIEdMdWludCBz
b3VyY2U7CisgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJnNvdXJjZSk7CisgICAgICAgIGdsQmlu
ZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgc291cmNlKTsKKworICAgICAgICBnbFRleEltYWdlMkQo
R0xfVEVYVFVSRV8yRCwgMCwgZm9ybWF0LCBzdGF0aWNfY2FzdDxHTHNpemVpPih3aWR0aCksCisg
ICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHNpemVpPihoZWlnaHQpLCAwLCBmb3Jt
YXQsIHR5cGUsIGRhdGEpOworCisgICAgICAgIC8vIERpc2FibGUgbWlwbWFwcGluZworICAgICAg
ICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBH
TF9ORUFSRVNUKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisKKyAgICAgICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7CisKKyAgICAgICAgLy8gQ3JlYXRlIGFuIGltYWdlIGZyb20gdGhlIHNvdXJjZSB0ZXh0
dXJlCisgICAgICAgIEVHTFdpbmRvdyAqd2luZG93ID0gZ2V0RUdMV2luZG93KCk7CisgICAgICAg
IEVHTEltYWdlS0hSIGltYWdlID0KKyAgICAgICAgICAgIGVnbENyZWF0ZUltYWdlS0hSKHdpbmRv
dy0+Z2V0RGlzcGxheSgpLCB3aW5kb3ctPmdldENvbnRleHQoKSwgRUdMX0dMX1RFWFRVUkVfMkRf
S0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRIZWxwZXI8RUdM
Q2xpZW50QnVmZmVyPihzb3VyY2UpLCBudWxscHRyKTsKKworICAgICAgICBBU1NFUlRfRUdMX1NV
Q0NFU1MoKTsKKworICAgICAgICAqb3V0U291cmNlVGV4dHVyZSA9IHNvdXJjZTsKKyAgICAgICAg
Km91dFNvdXJjZUltYWdlICAgPSBpbWFnZTsKKyAgICB9CisKKyAgICB2b2lkIGNyZWF0ZUVHTElt
YWdlQ3ViZW1hcFRleHR1cmVTb3VyY2Uoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqZGF0YSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRhdGFTdHJpZGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGVudW0gaW1hZ2VU
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCAqb3V0U291cmNlVGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRUdMSW1hZ2VLSFIgKm91dFNvdXJjZUltYWdlKQorICAgIHsKKyAgICAgICAgLy8g
Q3JlYXRlIGEgc291cmNlIGN1YmUgbWFwIHRleHR1cmUKKyAgICAgICAgR0x1aW50IHNvdXJjZTsK
KyAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmc291cmNlKTsKKyAgICAgICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFX0NVQkVfTUFQLCBzb3VyY2UpOworCisgICAgICAgIGZvciAoR0xlbnVtIGZh
Y2VJZHggPSAwOyBmYWNlSWR4IDwgNjsgZmFjZUlkeCsrKQorICAgICAgICB7CisgICAgICAgICAg
ICBnbFRleEltYWdlMkQoZmFjZUlkeCArIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwg
MCwgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMc2l6ZWk+
KHdpZHRoKSwgc3RhdGljX2Nhc3Q8R0xzaXplaT4oaGVpZ2h0KSwgMCwgZm9ybWF0LCB0eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgKyAoZmFjZUlkeCAqIGRhdGFTdHJpZGUpKTsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIERpc2FibGUgbWlwbWFwcGluZworICAgICAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9DVUJFX01BUCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBH
TF9ORUFSRVNUKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfQ1VCRV9NQVAs
IEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisKKyAgICAgICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7CisKKyAgICAgICAgLy8gQ3JlYXRlIGFuIGltYWdlIGZyb20gdGhlIHNvdXJj
ZSB0ZXh0dXJlCisgICAgICAgIEVHTFdpbmRvdyAqd2luZG93ID0gZ2V0RUdMV2luZG93KCk7Cisg
ICAgICAgIEVHTEltYWdlS0hSIGltYWdlID0KKyAgICAgICAgICAgIGVnbENyZWF0ZUltYWdlS0hS
KHdpbmRvdy0+Z2V0RGlzcGxheSgpLCB3aW5kb3ctPmdldENvbnRleHQoKSwgaW1hZ2VUYXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldEhlbHBlcjxFR0xDbGll
bnRCdWZmZXI+KHNvdXJjZSksIG51bGxwdHIpOworCisgICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VT
UygpOworCisgICAgICAgICpvdXRTb3VyY2VUZXh0dXJlID0gc291cmNlOworICAgICAgICAqb3V0
U291cmNlSW1hZ2UgICA9IGltYWdlOworICAgIH0KKworICAgIHZvaWQgY3JlYXRlRUdMSW1hZ2Uz
RFRleHR1cmVTb3VyY2Uoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZvaWQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgaW1hZ2VMYXllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCAqb3V0U291cmNlVGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVHTEltYWdlS0hSICpvdXRTb3VyY2VJbWFnZSkKKyAgICB7CisgICAgICAgIC8vIENy
ZWF0ZSBhIHNvdXJjZSAzRCB0ZXh0dXJlCisgICAgICAgIEdMdWludCBzb3VyY2U7CisgICAgICAg
IGdsR2VuVGV4dHVyZXMoMSwgJnNvdXJjZSk7CisgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVY
VFVSRV8zRCwgc291cmNlKTsKKworICAgICAgICBnbFRleEltYWdlM0QoR0xfVEVYVFVSRV8zRCwg
MCwgZm9ybWF0LCBzdGF0aWNfY2FzdDxHTHNpemVpPih3aWR0aCksCisgICAgICAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxHTHNpemVpPihoZWlnaHQpLCBzdGF0aWNfY2FzdDxHTHNpemVpPihk
ZXB0aCksIDAsIGZvcm1hdCwgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgIGRhdGEpOworCisg
ICAgICAgIC8vIERpc2FibGUgbWlwbWFwcGluZworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xf
VEVYVFVSRV8zRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICAgICAg
Z2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfM0QsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xf
TkVBUkVTVCk7CisKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgLy8g
Q3JlYXRlIGFuIGltYWdlIGZyb20gdGhlIHNvdXJjZSB0ZXh0dXJlCisgICAgICAgIEVHTFdpbmRv
dyAqd2luZG93ID0gZ2V0RUdMV2luZG93KCk7CisKKyAgICAgICAgRUdMaW50IGF0dHJpYnNbXSA9
IHsKKyAgICAgICAgICAgIEVHTF9HTF9URVhUVVJFX1pPRkZTRVRfS0hSLCBzdGF0aWNfY2FzdDxF
R0xpbnQ+KGltYWdlTGF5ZXIpLCBFR0xfTk9ORSwKKyAgICAgICAgfTsKKyAgICAgICAgRUdMSW1h
Z2VLSFIgaW1hZ2UgPQorICAgICAgICAgICAgZWdsQ3JlYXRlSW1hZ2VLSFIod2luZG93LT5nZXRE
aXNwbGF5KCksIHdpbmRvdy0+Z2V0Q29udGV4dCgpLCBFR0xfR0xfVEVYVFVSRV8zRF9LSFIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldEhlbHBlcjxFR0xDbGllbnRC
dWZmZXI+KHNvdXJjZSksIGF0dHJpYnMpOworCisgICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygp
OworCisgICAgICAgICpvdXRTb3VyY2VUZXh0dXJlID0gc291cmNlOworICAgICAgICAqb3V0U291
cmNlSW1hZ2UgICA9IGltYWdlOworICAgIH0KKworICAgIHZvaWQgY3JlYXRlRUdMSW1hZ2VSZW5k
ZXJidWZmZXJTb3VyY2Uoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWJ5dGUgZGF0YVs0XSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqb3V0U291cmNlUmVuZGVyYnVmZmVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMSW1hZ2VLSFIg
Km91dFNvdXJjZUltYWdlKQorICAgIHsKKyAgICAgICAgLy8gQ3JlYXRlIGEgc291cmNlIHJlbmRl
cmJ1ZmZlcgorICAgICAgICBHTHVpbnQgc291cmNlOworICAgICAgICBnbEdlblJlbmRlcmJ1ZmZl
cnMoMSwgJnNvdXJjZSk7CisgICAgICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZG
RVIsIHNvdXJjZSk7CisgICAgICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZG
RVIsIGludGVybmFsRm9ybWF0LCBzdGF0aWNfY2FzdDxHTHNpemVpPih3aWR0aCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHNpemVpPihoZWlnaHQpKTsKKwor
ICAgICAgICAvLyBDcmVhdGUgYSBmcmFtZWJ1ZmZlciBhbmQgY2xlYXIgaXQgdG8gc2V0IHRoZSBk
YXRhCisgICAgICAgIEdMdWludCBmcmFtZWJ1ZmZlcjsKKyAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZl
cnMoMSwgJmZyYW1lYnVmZmVyKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVC
VUZGRVIsIGZyYW1lYnVmZmVyKTsKKyAgICAgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihH
TF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1JFTkRFUkJVRkZFUiwgc291
cmNlKTsKKworICAgICAgICBnbENsZWFyQ29sb3IoZGF0YVswXSAvIDI1NS4wZiwgZGF0YVsxXSAv
IDI1NS4wZiwgZGF0YVsyXSAvIDI1NS4wZiwgZGF0YVszXSAvIDI1NS4wZik7CisgICAgICAgIGds
Q2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisKKyAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZl
cnMoMSwgJmZyYW1lYnVmZmVyKTsKKworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKwor
ICAgICAgICAvLyBDcmVhdGUgYW4gaW1hZ2UgZnJvbSB0aGUgc291cmNlIHJlbmRlcmJ1ZmZlcgor
ICAgICAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygpOworICAgICAgICBFR0xJ
bWFnZUtIUiBpbWFnZSA9CisgICAgICAgICAgICBlZ2xDcmVhdGVJbWFnZUtIUih3aW5kb3ctPmdl
dERpc3BsYXkoKSwgd2luZG93LT5nZXRDb250ZXh0KCksIEVHTF9HTF9SRU5ERVJCVUZGRVJfS0hS
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRIZWxwZXI8RUdMQ2xp
ZW50QnVmZmVyPihzb3VyY2UpLCBudWxscHRyKTsKKworICAgICAgICBBU1NFUlRfRUdMX1NVQ0NF
U1MoKTsKKworICAgICAgICAqb3V0U291cmNlUmVuZGVyYnVmZmVyID0gc291cmNlOworICAgICAg
ICAqb3V0U291cmNlSW1hZ2UgICAgICAgID0gaW1hZ2U7CisgICAgfQorCisgICAgdm9pZCBjcmVh
dGVFR0xJbWFnZVRhcmdldFRleHR1cmUyRChFR0xJbWFnZUtIUiBpbWFnZSwgR0x1aW50ICpvdXRU
YXJnZXRUZXh0dXJlKQorICAgIHsKKyAgICAgICAgLy8gQ3JlYXRlIGEgdGFyZ2V0IHRleHR1cmUg
ZnJvbSB0aGUgaW1hZ2UKKyAgICAgICAgR0x1aW50IHRhcmdldDsKKyAgICAgICAgZ2xHZW5UZXh0
dXJlcygxLCAmdGFyZ2V0KTsKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0
YXJnZXQpOworICAgICAgICBnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKEdMX1RFWFRVUkVf
MkQsIGltYWdlKTsKKworICAgICAgICAvLyBEaXNhYmxlIG1pcG1hcHBpbmcKKyAgICAgICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVB
UkVTVCk7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJF
X01BR19GSUxURVIsIEdMX05FQVJFU1QpOworCisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigp
OworCisgICAgICAgICpvdXRUYXJnZXRUZXh0dXJlID0gdGFyZ2V0OworICAgIH0KKworICAgIHZv
aWQgY3JlYXRlRUdMSW1hZ2VUYXJnZXRUZXh0dXJlRXh0ZXJuYWwoRUdMSW1hZ2VLSFIgaW1hZ2Us
IEdMdWludCAqb3V0VGFyZ2V0VGV4dHVyZSkKKyAgICB7CisgICAgICAgIC8vIENyZWF0ZSBhIHRh
cmdldCB0ZXh0dXJlIGZyb20gdGhlIGltYWdlCisgICAgICAgIEdMdWludCB0YXJnZXQ7CisgICAg
ICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRhcmdldCk7CisgICAgICAgIGdsQmluZFRleHR1cmUoR0xf
VEVYVFVSRV9FWFRFUk5BTF9PRVMsIHRhcmdldCk7CisgICAgICAgIGdsRUdMSW1hZ2VUYXJnZXRU
ZXh0dXJlMkRPRVMoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIGltYWdlKTsKKworICAgICAgICAv
LyBEaXNhYmxlIG1pcG1hcHBpbmcKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
RVhURVJOQUxfT0VTLCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgICAg
ICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIEdMX1RFWFRVUkVfTUFH
X0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisK
KyAgICAgICAgKm91dFRhcmdldFRleHR1cmUgPSB0YXJnZXQ7CisgICAgfQorCisgICAgdm9pZCBj
cmVhdGVFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlcihFR0xJbWFnZUtIUiBpbWFnZSwgR0x1aW50
ICpvdXRUYXJnZXRSZW5kZXJidWZmZXIpCisgICAgeworICAgICAgICAvLyBDcmVhdGUgYSB0YXJn
ZXQgdGV4dHVyZSBmcm9tIHRoZSBpbWFnZQorICAgICAgICBHTHVpbnQgdGFyZ2V0OworICAgICAg
ICBnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJnRhcmdldCk7CisgICAgICAgIGdsQmluZFJlbmRlcmJ1
ZmZlcihHTF9SRU5ERVJCVUZGRVIsIHRhcmdldCk7CisgICAgICAgIGdsRUdMSW1hZ2VUYXJnZXRS
ZW5kZXJidWZmZXJTdG9yYWdlT0VTKEdMX1JFTkRFUkJVRkZFUiwgaW1hZ2UpOworCisgICAgICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgICAgICpvdXRUYXJnZXRSZW5kZXJidWZmZXIg
PSB0YXJnZXQ7CisgICAgfQorCisgICAgdm9pZCB2ZXJpZnlSZXN1bHRzVGV4dHVyZShHTHVpbnQg
dGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWJ5dGUgZGF0YVs0XSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0ZXh0dXJlVGFyZ2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgdGV4dHVyZVVuaWZvcm0pCisgICAgeworICAgICAgICAv
LyBEcmF3IGEgcXVhZCB3aXRoIHRoZSB0YXJnZXQgdGV4dHVyZQorICAgICAgICBnbFVzZVByb2dy
YW0ocHJvZ3JhbSk7CisgICAgICAgIGdsQmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgdGV4dHVy
ZSk7CisgICAgICAgIGdsVW5pZm9ybTFpKHRleHR1cmVVbmlmb3JtLCAwKTsKKworICAgICAgICBk
cmF3UXVhZChwcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgICAgICAvLyBFeHBlY3Qg
dGhhdCB0aGUgcmVuZGVyZWQgcXVhZCBoYXMgdGhlIHNhbWUgY29sb3IgYXMgdGhlIHNvdXJjZSB0
ZXh0dXJlCisgICAgICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCBkYXRhWzBdLCBkYXRhWzFdLCBk
YXRhWzJdLCBkYXRhWzNdKTsKKyAgICB9CisKKyAgICB2b2lkIHZlcmlmeVJlc3VsdHMyRChHTHVp
bnQgdGV4dHVyZSwgR0x1Ynl0ZSBkYXRhWzRdKQorICAgIHsKKyAgICAgICAgdmVyaWZ5UmVzdWx0
c1RleHR1cmUodGV4dHVyZSwgZGF0YSwgR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVQcm9ncmFtLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVGV4dHVyZVVuaWZvcm1Mb2NhdGlvbik7Cisg
ICAgfQorCisgICAgdm9pZCB2ZXJpZnlSZXN1bHRzRXh0ZXJuYWwoR0x1aW50IHRleHR1cmUsIEdM
dWJ5dGUgZGF0YVs0XSkKKyAgICB7CisgICAgICAgIHZlcmlmeVJlc3VsdHNUZXh0dXJlKHRleHR1
cmUsIGRhdGEsIEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCBtVGV4dHVyZUV4dGVybmFsUHJvZ3Jh
bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVRleHR1cmVFeHRlcm5hbFVuaWZvcm1M
b2NhdGlvbik7CisgICAgfQorCisgICAgdm9pZCB2ZXJpZnlSZXN1bHRzRXh0ZXJuYWxFU1NMMyhH
THVpbnQgdGV4dHVyZSwgR0x1Ynl0ZSBkYXRhWzRdKQorICAgIHsKKyAgICAgICAgdmVyaWZ5UmVz
dWx0c1RleHR1cmUodGV4dHVyZSwgZGF0YSwgR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIG1UZXh0
dXJlRXh0ZXJuYWxFU1NMM1Byb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1U
ZXh0dXJlRXh0ZXJuYWxFU1NMM1VuaWZvcm1Mb2NhdGlvbik7CisgICAgfQorCisgICAgdm9pZCB2
ZXJpZnlSZXN1bHRzUmVuZGVyYnVmZmVyKEdMdWludCByZW5kZXJidWZmZXIsIEdMdWJ5dGUgZGF0
YVs0XSkKKyAgICB7CisgICAgICAgIC8vIEJpbmQgdGhlIHJlbmRlcmJ1ZmZlciB0byBhIGZyYW1l
YnVmZmVyCisgICAgICAgIEdMdWludCBmcmFtZWJ1ZmZlcjsKKyAgICAgICAgZ2xHZW5GcmFtZWJ1
ZmZlcnMoMSwgJmZyYW1lYnVmZmVyKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJB
TUVCVUZGRVIsIGZyYW1lYnVmZmVyKTsKKyAgICAgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
cihHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1JFTkRFUkJVRkZFUiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJidWZmZXIpOworCisgICAg
ICAgIC8vIEV4cGVjdCB0aGF0IHRoZSByZW5kZXJlZCBxdWFkIGhhcyB0aGUgc2FtZSBjb2xvciBh
cyB0aGUgc291cmNlIHRleHR1cmUKKyAgICAgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIGRhdGFb
MF0sIGRhdGFbMV0sIGRhdGFbMl0sIGRhdGFbM10pOworCisgICAgICAgIGdsRGVsZXRlRnJhbWVi
dWZmZXJzKDEsICZmcmFtZWJ1ZmZlcik7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IGRlc3RUeXBlLCB0eXBlbmFtZSBzb3VyY2V0eXBlPgorICAgIGRlc3RUeXBlIHJlaW50ZXJwcmV0
SGVscGVyKHNvdXJjZXR5cGUgc291cmNlKQorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChz
aXplb2YoZGVzdFR5cGUpID09IHNpemVvZihzaXplX3QpLAorICAgICAgICAgICAgICAgICAgICAg
ICJkZXN0VHlwZSBzaG91bGQgYmUgdGhlIHNhbWUgc2l6ZSBhcyBhIHNpemVfdCIpOworICAgICAg
ICBzaXplX3Qgc291cmNlU2l6ZVQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNvdXJjZSk7CisgICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGRlc3RUeXBlPihzb3VyY2VTaXplVCk7CisgICAg
fQorCisgICAgR0x1aW50IG1UZXh0dXJlUHJvZ3JhbTsKKyAgICBHTGludCBtVGV4dHVyZVVuaWZv
cm1Mb2NhdGlvbjsKKworICAgIEdMdWludCBtVGV4dHVyZUV4dGVybmFsUHJvZ3JhbSAgICAgICAg
PSAwOworICAgIEdMaW50IG1UZXh0dXJlRXh0ZXJuYWxVbmlmb3JtTG9jYXRpb24gPSAtMTsKKwor
ICAgIEdMdWludCBtVGV4dHVyZUV4dGVybmFsRVNTTDNQcm9ncmFtICAgICAgICA9IDA7CisgICAg
R0xpbnQgbVRleHR1cmVFeHRlcm5hbEVTU0wzVW5pZm9ybUxvY2F0aW9uID0gLTE7CisKKyAgICBQ
Rk5FR0xDUkVBVEVJTUFHRUtIUlBST0MgZWdsQ3JlYXRlSW1hZ2VLSFI7CisgICAgUEZORUdMREVT
VFJPWUlNQUdFS0hSUFJPQyBlZ2xEZXN0cm95SW1hZ2VLSFI7Cit9OworCitjbGFzcyBJbWFnZVRl
c3RFUzMgOiBwdWJsaWMgSW1hZ2VUZXN0Cit7Cit9OworCisvLyBDaGVjayB2YWxpZGF0aW9uIGZy
b20gdGhlIEVHTF9LSFJfaW1hZ2VfYmFzZSBleHRlbnNpb24KK1RFU1RfUChJbWFnZVRlc3QsIFZh
bGlkYXRpb25JbWFnZUJhc2UpCit7CisgICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5k
b3coKTsKKyAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIk9FU19FR0xfaW1hZ2UiKSB8fAorICAg
ICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJF
R0xfS0hSX2ltYWdlX2Jhc2UiKSB8fAorICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJs
ZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2dsX3RleHR1cmVfMkRfaW1hZ2UiKSkK
KyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgT0VTX0VH
TF9pbWFnZSwgRUdMX0tIUl9pbWFnZV9iYXNlIG9yICIKKyAgICAgICAgICAgICAgICAgICAgICJF
R0xfS0hSX2dsX3RleHR1cmVfMkRfaW1hZ2UgaXMgbm90IGF2YWlsYWJsZS4iCisgICAgICAgICAg
ICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHTHVp
bnQgZ2xUZXh0dXJlMkQ7CisgICAgZ2xHZW5UZXh0dXJlcygxLCAmZ2xUZXh0dXJlMkQpOworICAg
IGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgZ2xUZXh0dXJlMkQpOworICAgIGdsVGV4SW1h
Z2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxLCAxLCAwLCBHTF9SR0JBLCBHTF9VTlNJ
R05FRF9CWVRFLCBudWxscHRyKTsKKworICAgIEVHTERpc3BsYXkgZGlzcGxheSAgICAgICAgPSB3
aW5kb3ctPmdldERpc3BsYXkoKTsKKyAgICBFR0xDb250ZXh0IGNvbnRleHQgICAgICAgID0gd2lu
ZG93LT5nZXRDb250ZXh0KCk7CisgICAgRUdMQ29uZmlnIGNvbmZpZyAgICAgICAgICA9IHdpbmRv
dy0+Z2V0Q29uZmlnKCk7CisgICAgRUdMSW1hZ2VLSFIgaW1hZ2UgICAgICAgICA9IEVHTF9OT19J
TUFHRV9LSFI7CisgICAgRUdMQ2xpZW50QnVmZmVyIHRleHR1cmUyRCA9IHJlaW50ZXJwcmV0SGVs
cGVyPEVHTENsaWVudEJ1ZmZlcj4oZ2xUZXh0dXJlMkQpOworCisgICAgLy8gVGVzdCB2YWxpZGF0
aW9uIG9mIGVnbENyZWF0ZUltYWdlS0hSCisKKyAgICAvLyBJZiA8ZHB5PiBpcyBub3QgdGhlIGhh
bmRsZSBvZiBhIHZhbGlkIEVHTERpc3BsYXkgb2JqZWN0LCB0aGUgZXJyb3IgRUdMX0JBRF9ESVNQ
TEFZIGlzCisgICAgLy8gZ2VuZXJhdGVkLgorICAgIGltYWdlID0gZWdsQ3JlYXRlSW1hZ2VLSFIo
cmVpbnRlcnByZXRIZWxwZXI8RUdMRGlzcGxheT4oMHhCQUFERjAwRCksIGNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfR0xfVEVYVFVSRV8yRF9LSFIsIHRleHR1cmUy
RCwgbnVsbHB0cik7CisgICAgRVhQRUNUX0VRKGltYWdlLCBFR0xfTk9fSU1BR0VfS0hSKTsKKyAg
ICBFWFBFQ1RfRUdMX0VSUk9SKEVHTF9CQURfRElTUExBWSk7CisKKyAgICAvLyBJZiA8Y3R4PiBp
cyBuZWl0aGVyIHRoZSBoYW5kbGUgb2YgYSB2YWxpZCBFR0xDb250ZXh0IG9iamVjdCBvbiA8ZHB5
PiBub3IgRUdMX05PX0NPTlRFWFQsIHRoZQorICAgIC8vIGVycm9yIEVHTF9CQURfQ09OVEVYVCBp
cyBnZW5lcmF0ZWQuCisgICAgaW1hZ2UgPSBlZ2xDcmVhdGVJbWFnZUtIUihkaXNwbGF5LCByZWlu
dGVycHJldEhlbHBlcjxFR0xDb250ZXh0PigweEJBQURGMDBEKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVHTF9HTF9URVhUVVJFXzJEX0tIUiwgdGV4dHVyZTJELCBudWxscHRyKTsK
KyAgICBFWFBFQ1RfRVEoaW1hZ2UsIEVHTF9OT19JTUFHRV9LSFIpOworICAgIEVYUEVDVF9FR0xf
RVJST1IoRUdMX0JBRF9DT05URVhUKTsKKworICAgIC8vIFRlc3QgRUdMX05PX0NPTlRFWFQgd2l0
aCBhIDJEIHRleHR1cmUgdGFyZ2V0IHdoaWNoIGRvZXMgcmVxdWlyZSBhIGNvbnRleHQuCisgICAg
aW1hZ2UgPSBlZ2xDcmVhdGVJbWFnZUtIUihkaXNwbGF5LCBFR0xfTk9fQ09OVEVYVCwgRUdMX0dM
X1RFWFRVUkVfMkRfS0hSLCB0ZXh0dXJlMkQsIG51bGxwdHIpOworICAgIEVYUEVDVF9FUShpbWFn
ZSwgRUdMX05PX0lNQUdFX0tIUik7CisgICAgRVhQRUNUX0VHTF9FUlJPUihFR0xfQkFEX0NPTlRF
WFQpOworCisgICAgLy8gSWYgYW4gYXR0cmlidXRlIHNwZWNpZmllZCBpbiA8YXR0cmliX2xpc3Q+
IGlzIG5vdCBvbmUgb2YgdGhlIGF0dHJpYnV0ZXMgbGlzdGVkIGluIFRhYmxlIGJiYiwKKyAgICAv
LyB0aGUgZXJyb3IgRUdMX0JBRF9QQVJBTUVURVIgaXMgZ2VuZXJhdGVkLgorICAgIEVHTGludCBi
YWRBdHRyaWJ1dGVzW10gPSB7CisgICAgICAgIHN0YXRpY19jYXN0PEVHTGludD4oMHhERUFEQkVF
RiksIDAsIEVHTF9OT05FLAorICAgIH07CisKKyAgICBpbWFnZSA9IGVnbENyZWF0ZUltYWdlS0hS
KGRpc3BsYXksIGNvbnRleHQsIEVHTF9HTF9URVhUVVJFXzJEX0tIUiwgdGV4dHVyZTJELCBiYWRB
dHRyaWJ1dGVzKTsKKyAgICBFWFBFQ1RfRVEoaW1hZ2UsIEVHTF9OT19JTUFHRV9LSFIpOworICAg
IEVYUEVDVF9FR0xfRVJST1IoRUdMX0JBRF9QQVJBTUVURVIpOworCisgICAgLy8gSWYgdGhlIHJl
c291cmNlIHNwZWNpZmllZCBieSA8ZHB5PiwgPGN0eD4sIDx0YXJnZXQ+LCA8YnVmZmVyPiBhbmQg
PGF0dHJpYl9saXN0PiBoYXMgYW4gb2ZmIC0KKyAgICAvLyBzY3JlZW4gYnVmZmVyIGJvdW5kIHRv
IGl0KGUuZy4sIGJ5IGEKKyAgICAvLyBwcmV2aW91cyBjYWxsIHRvIGVnbEJpbmRUZXhJbWFnZSks
IHRoZSBlcnJvciBFR0xfQkFEX0FDQ0VTUyBpcyBnZW5lcmF0ZWQuCisgICAgRUdMaW50IHN1cmZh
Y2VUeXBlID0gMDsKKyAgICBlZ2xHZXRDb25maWdBdHRyaWIoZGlzcGxheSwgY29uZmlnLCBFR0xf
U1VSRkFDRV9UWVBFLCAmc3VyZmFjZVR5cGUpOworCisgICAgRUdMaW50IGJpbmRUb1RleHR1cmVS
R0JBID0gMDsKKyAgICBlZ2xHZXRDb25maWdBdHRyaWIoZGlzcGxheSwgY29uZmlnLCBFR0xfQklO
RF9UT19URVhUVVJFX1JHQkEsICZiaW5kVG9UZXh0dXJlUkdCQSk7CisgICAgaWYgKChzdXJmYWNl
VHlwZSAmIEVHTF9QQlVGRkVSX0JJVCkgIT0gMCAmJiBiaW5kVG9UZXh0dXJlUkdCQSA9PSBFR0xf
VFJVRSkKKyAgICB7CisgICAgICAgIEVHTGludCBwYnVmZmVyQXR0cmlidXRlc1tdID0geworICAg
ICAgICAgICAgRUdMX1dJRFRILCAgICAgICAgICAxLAorICAgICAgICAgICAgRUdMX0hFSUdIVCwg
ICAgICAgICAxLAorICAgICAgICAgICAgRUdMX1RFWFRVUkVfRk9STUFULCBFR0xfVEVYVFVSRV9S
R0JBLAorICAgICAgICAgICAgRUdMX1RFWFRVUkVfVEFSR0VULCBFR0xfVEVYVFVSRV8yRCwKKyAg
ICAgICAgICAgIEVHTF9OT05FLCAgICAgICAgICAgRUdMX05PTkUsCisgICAgICAgIH07CisgICAg
ICAgIEVHTFN1cmZhY2UgcGJ1ZmZlciA9IGVnbENyZWF0ZVBidWZmZXJTdXJmYWNlKGRpc3BsYXks
IGNvbmZpZywgcGJ1ZmZlckF0dHJpYnV0ZXMpOworICAgICAgICBBU1NFUlRfTkUocGJ1ZmZlciwg
RUdMX05PX1NVUkZBQ0UpOworICAgICAgICBFWFBFQ1RfRUdMX1NVQ0NFU1MoKTsKKworICAgICAg
ICBlZ2xCaW5kVGV4SW1hZ2UoZGlzcGxheSwgcGJ1ZmZlciwgRUdMX0JBQ0tfQlVGRkVSKTsKKyAg
ICAgICAgRVhQRUNUX0VHTF9TVUNDRVNTKCk7CisKKyAgICAgICAgaW1hZ2UgPSBlZ2xDcmVhdGVJ
bWFnZUtIUihkaXNwbGF5LCBjb250ZXh0LCBFR0xfR0xfVEVYVFVSRV8yRF9LSFIsIHRleHR1cmUy
RCwgbnVsbHB0cik7CisgICAgICAgIEVYUEVDVF9FUShpbWFnZSwgRUdMX05PX0lNQUdFX0tIUik7
CisgICAgICAgIEVYUEVDVF9FR0xfRVJST1IoRUdMX0JBRF9BQ0NFU1MpOworCisgICAgICAgIGVn
bFJlbGVhc2VUZXhJbWFnZShkaXNwbGF5LCBwYnVmZmVyLCBFR0xfQkFDS19CVUZGRVIpOworICAg
ICAgICBlZ2xEZXN0cm95U3VyZmFjZShkaXNwbGF5LCBwYnVmZmVyKTsKKyAgICAgICAgZ2xUZXhJ
bWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDEsIDEsIDAsIEdMX1JHQkEsIEdMX1VO
U0lHTkVEX0JZVEUsIG51bGxwdHIpOworICAgICAgICBFWFBFQ1RfRUdMX1NVQ0NFU1MoKTsKKyAg
ICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgfQorCisgICAgLy8gSWYgdGhlIHJlc291
cmNlIHNwZWNpZmllZCBieSA8ZHB5PiwgPGN0eD4sIDx0YXJnZXQ+LCA8YnVmZmVyPiBhbmQKKyAg
ICAvLyA8YXR0cmliX2xpc3Q+IGlzIGl0c2VsZiBhbiBFR0xJbWFnZSBzaWJsaW5nLCB0aGUgZXJy
b3IgRUdMX0JBRF9BQ0NFU1MgaXMgZ2VuZXJhdGVkLgorICAgIGltYWdlID0gZWdsQ3JlYXRlSW1h
Z2VLSFIoZGlzcGxheSwgY29udGV4dCwgRUdMX0dMX1RFWFRVUkVfMkRfS0hSLCB0ZXh0dXJlMkQs
IG51bGxwdHIpOworICAgIEVYUEVDVF9ORShpbWFnZSwgRUdMX05PX0lNQUdFX0tIUik7CisgICAg
RVhQRUNUX0VHTF9TVUNDRVNTKCk7CisKKyAgICAvKiBUT0RPKGdlb2ZmbGFuZyk6IEVuYWJsZSB0
aGlzIHZhbGlkYXRpb24gd2hlbiBpdCBwYXNzZXMuCisgICAgRUdMSW1hZ2VLSFIgaW1hZ2UyID0g
ZWdsQ3JlYXRlSW1hZ2VLSFIoZGlzcGxheSwgY29udGV4dCwgRUdMX0dMX1RFWFRVUkVfMkRfS0hS
LAorICAgIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQ2xpZW50QnVmZmVyPih0ZXh0dXJlMkQpLCBudWxs
cHRyKTsKKyAgICBFWFBFQ1RfRVEoaW1hZ2UyLCBFR0xfTk9fSU1BR0VfS0hSKTsKKyAgICBFWFBF
Q1RfRUdMX0VSUk9SKEVHTF9CQURfQUNDRVNTKTsKKyAgICAqLworCisgICAgLy8gVGVzdCB2YWxp
ZGF0aW9uIG9mIGVnbERlc3Ryb3lJbWFnZUtIUgorICAgIC8vIE5vdGU6IGltYWdlIGlzIG5vdyBh
IHZhbGlkIEVHTCBpbWFnZQorICAgIEVHTEJvb2xlYW4gcmVzdWx0ID0gRUdMX0ZBTFNFOworCisg
ICAgLy8gSWYgPGRweT4gaXMgbm90IHRoZSBoYW5kbGUgb2YgYSB2YWxpZCBFR0xEaXNwbGF5IG9i
amVjdCwgdGhlIGVycm9yIEVHTF9CQURfRElTUExBWSBpcworICAgIC8vIGdlbmVyYXRlZC4KKyAg
ICByZXN1bHQgPSBlZ2xEZXN0cm95SW1hZ2VLSFIocmVpbnRlcnByZXRIZWxwZXI8RUdMRGlzcGxh
eT4oMHhCQUFERjAwRCksIGltYWdlKTsKKyAgICBFWFBFQ1RfRVEocmVzdWx0LCBzdGF0aWNfY2Fz
dDxFR0xCb29sZWFuPihFR0xfRkFMU0UpKTsKKyAgICBFWFBFQ1RfRUdMX0VSUk9SKEVHTF9CQURf
RElTUExBWSk7CisKKyAgICAvLyBJZiA8aW1hZ2U+IGlzIG5vdCBhIHZhbGlkIEVHTEltYWdlS0hS
IG9iamVjdCBjcmVhdGVkIHdpdGggcmVzcGVjdCB0byA8ZHB5PiwgdGhlIGVycm9yCisgICAgLy8g
RUdMX0JBRF9QQVJBTUVURVIgaXMgZ2VuZXJhdGVkLgorICAgIHJlc3VsdCA9IGVnbERlc3Ryb3lJ
bWFnZUtIUihkaXNwbGF5LCByZWludGVycHJldEhlbHBlcjxFR0xJbWFnZUtIUj4oMHhCQUFERjAw
RCkpOworICAgIEVYUEVDVF9FUShyZXN1bHQsIHN0YXRpY19jYXN0PEVHTEJvb2xlYW4+KEVHTF9G
QUxTRSkpOworICAgIEVYUEVDVF9FR0xfRVJST1IoRUdMX0JBRF9QQVJBTUVURVIpOworCisgICAg
Ly8gQ2xlYW4gdXAgYW5kIHZhbGlkYXRlIGltYWdlIGlzIGRlc3Ryb3llZAorICAgIHJlc3VsdCA9
IGVnbERlc3Ryb3lJbWFnZUtIUihkaXNwbGF5LCBpbWFnZSk7CisgICAgRVhQRUNUX0VRKHJlc3Vs
dCwgc3RhdGljX2Nhc3Q8RUdMQm9vbGVhbj4oRUdMX1RSVUUpKTsKKyAgICBFWFBFQ1RfRUdMX1NV
Q0NFU1MoKTsKKworICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJmdsVGV4dHVyZTJEKTsKKyAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKK30KKworLy8gQ2hlY2sgdmFsaWRhdGlvbiBmcm9tIHRoZSBF
R0xfS0hSX2dsX3RleHR1cmVfMkRfaW1hZ2UgZXh0ZW5zaW9uCitURVNUX1AoSW1hZ2VUZXN0LCBW
YWxpZGF0aW9uSW1hZ2VQaXhtYXApCit7CisgICAgLy8gVGhpcyBleHRlbnNpb24gaXMgbm90IGlt
cGxlbWVudGVkIGFueXdoZXJlIHlldC4gIFRoaXMgbWFrZXMgc3VyZSB0aGF0IGl0IGlzIHRlc3Rl
ZCBvbmNlIGl0IGlzCisgICAgLy8gYWRkZWQuCisgICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRF
R0xXaW5kb3coKTsKKyAgICBFWFBFQ1RfRkFMU0UoZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQo
d2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2ltYWdlX3BpeG1hcCIpKTsKK30KKworLy8g
Q2hlY2sgdmFsaWRhdGlvbiBmcm9tIHRoZSBFR0xfS0hSX2dsX3RleHR1cmVfMkRfaW1hZ2UsIEVH
TF9LSFJfZ2xfdGV4dHVyZV9jdWJlbWFwX2ltYWdlLAorLy8gRUdMX0tIUl9nbF90ZXh0dXJlXzNE
X2ltYWdlIGFuZCBFR0xfS0hSX2dsX3JlbmRlcmJ1ZmZlcl9pbWFnZSBleHRlbnNpb25zCitURVNU
X1AoSW1hZ2VUZXN0LCBWYWxpZGF0aW9uR0xJbWFnZSkKK3sKKyAgICBFR0xXaW5kb3cgKndpbmRv
dyA9IGdldEVHTFdpbmRvdygpOworICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiT0VTX0VHTF9p
bWFnZSIpIHx8CisgICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdl
dERpc3BsYXkoKSwgIkVHTF9LSFJfaW1hZ2VfYmFzZSIpKQorICAgIHsKKyAgICAgICAgc3RkOjpj
b3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBPRVNfRUdMX2ltYWdlIG9yIEVHTF9LSFJfaW1h
Z2VfYmFzZSBpcyBub3QgYXZhaWxhYmxlLiIKKyAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5k
bDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHdp
bmRvdy0+Z2V0RGlzcGxheSgpOworICAgIEVHTENvbnRleHQgY29udGV4dCA9IHdpbmRvdy0+Z2V0
Q29udGV4dCgpOworICAgIEVHTEltYWdlS0hSIGltYWdlICA9IEVHTF9OT19JTUFHRV9LSFI7CisK
KyAgICBpZiAoZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCks
ICJFR0xfS0hSX2dsX3RleHR1cmVfMkRfaW1hZ2UiKSkKKyAgICB7CisgICAgICAgIC8vIElmIDx0
YXJnZXQ+IGlzIEVHTF9HTF9URVhUVVJFXzJEX0tIUiwgRUdMX0dMX1RFWFRVUkVfQ1VCRV9NQVBf
Kl9LSFIgb3IKKyAgICAgICAgLy8gRUdMX0dMX1RFWFRVUkVfM0RfS0hSIGFuZCA8YnVmZmVyPiBp
cyBub3QgdGhlIG5hbWUgb2YgYSB0ZXh0dXJlIG9iamVjdCBvZiB0eXBlIDx0YXJnZXQ+LAorICAg
ICAgICAvLyB0aGUgZXJyb3IgRUdMX0JBRF9QQVJBTUVURVIgaXMgZ2VuZXJhdGVkLgorICAgICAg
ICBHTHVpbnQgdGV4dHVyZUN1YmU7CisgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleHR1cmVD
dWJlKTsKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFX0NVQkVfTUFQLCB0ZXh0dXJl
Q3ViZSk7CisgICAgICAgIGZvciAoR0xlbnVtIGZhY2UgPSBHTF9URVhUVVJFX0NVQkVfTUFQX1BP
U0lUSVZFX1g7IGZhY2UgPD0gR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aOworICAgICAg
ICAgICAgIGZhY2UrKykKKyAgICAgICAgeworICAgICAgICAgICAgZ2xUZXhJbWFnZTJEKGZhY2Us
IDAsIEdMX1JHQkEsIDEsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIp
OworICAgICAgICB9CisKKyAgICAgICAgaW1hZ2UgPSBlZ2xDcmVhdGVJbWFnZUtIUihkaXNwbGF5
LCBjb250ZXh0LCBFR0xfR0xfVEVYVFVSRV8yRF9LSFIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVpbnRlcnByZXRIZWxwZXI8RUdMQ2xpZW50QnVmZmVyPih0ZXh0dXJlQ3Vi
ZSksIG51bGxwdHIpOworICAgICAgICBFWFBFQ1RfRVEoaW1hZ2UsIEVHTF9OT19JTUFHRV9LSFIp
OworICAgICAgICBFWFBFQ1RfRUdMX0VSUk9SKEVHTF9CQURfUEFSQU1FVEVSKTsKKworICAgICAg
ICAvLyBJZiBFR0xfR0xfVEVYVFVSRV9MRVZFTF9LSFIgaXMgMCwgPHRhcmdldD4gaXMgRUdMX0dM
X1RFWFRVUkVfMkRfS0hSLAorICAgICAgICAvLyBFR0xfR0xfVEVYVFVSRV9DVUJFX01BUF8qX0tI
UiBvciBFR0xfR0xfVEVYVFVSRV8zRF9LSFIsIDxidWZmZXI+IGlzIHRoZSBuYW1lIG9mIGFuCisg
ICAgICAgIC8vIGluY29tcGxldGUgR0wgdGV4dHVyZSBvYmplY3QsIGFuZCBhbnkgbWlwbWFwIGxl
dmVscyBvdGhlciB0aGFuIG1pcG1hcCBsZXZlbCAwIGFyZQorICAgICAgICAvLyBzcGVjaWZpZWQs
IHRoZSBlcnJvciBFR0xfQkFEX1BBUkFNRVRFUiBpcyBnZW5lcmF0ZWQuCisgICAgICAgIEdMdWlu
dCBpbmNvbXBsZXRlVGV4dHVyZTsKKyAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmaW5jb21wbGV0
ZVRleHR1cmUpOworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIGluY29tcGxl
dGVUZXh0dXJlKTsKKyAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JH
QkEsIDIsIDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOworICAgICAg
ICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdCQSwgMiwgMiwgMCwgR0xfUkdC
QSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7CisKKyAgICAgICAgRUdMaW50IGxldmVsMEF0
dHJpYnV0ZVtdID0geworICAgICAgICAgICAgRUdMX0dMX1RFWFRVUkVfTEVWRUxfS0hSLCAwLCBF
R0xfTk9ORSwKKyAgICAgICAgfTsKKyAgICAgICAgaW1hZ2UgPSBlZ2xDcmVhdGVJbWFnZUtIUihk
aXNwbGF5LCBjb250ZXh0LCBFR0xfR0xfVEVYVFVSRV8yRF9LSFIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRIZWxwZXI8RUdMQ2xpZW50QnVmZmVyPihpbmNv
bXBsZXRlVGV4dHVyZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWww
QXR0cmlidXRlKTsKKyAgICAgICAgRVhQRUNUX0VRKGltYWdlLCBFR0xfTk9fSU1BR0VfS0hSKTsK
KyAgICAgICAgRVhQRUNUX0VHTF9FUlJPUihFR0xfQkFEX1BBUkFNRVRFUik7CisKKyAgICAgICAg
Ly8gSWYgRUdMX0dMX1RFWFRVUkVfTEVWRUxfS0hSIGlzIDAsIDx0YXJnZXQ+IGlzIEVHTF9HTF9U
RVhUVVJFXzJEX0tIUiBvcgorICAgICAgICAvLyBFR0xfR0xfVEVYVFVSRV8zRF9LSFIsIDxidWZm
ZXI+IGlzIG5vdCB0aGUgbmFtZSBvZiBhIGNvbXBsZXRlIEdMIHRleHR1cmUgb2JqZWN0LCBhbmQK
KyAgICAgICAgLy8gbWlwbWFwIGxldmVsIDAgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVycm9yIEVH
TF9CQURfUEFSQU1FVEVSIGlzIGdlbmVyYXRlZC4KKyAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RF
WFRVUkVfMkQsIDAsIEdMX1JHQkEsIDAsIDAsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUs
IG51bGxwdHIpOworICAgICAgICBpbWFnZSA9IGVnbENyZWF0ZUltYWdlS0hSKGRpc3BsYXksIGNv
bnRleHQsIEVHTF9HTF9URVhUVVJFXzJEX0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZWludGVycHJldEhlbHBlcjxFR0xDbGllbnRCdWZmZXI+KGluY29tcGxldGVUZXh0
dXJlKSwgbnVsbHB0cik7CisgICAgICAgIEVYUEVDVF9FUShpbWFnZSwgRUdMX05PX0lNQUdFX0tI
Uik7CisgICAgICAgIEVYUEVDVF9FR0xfRVJST1IoRUdMX0JBRF9QQVJBTUVURVIpOworCisgICAg
ICAgIC8vIElmIDx0YXJnZXQ+IGlzIEVHTF9HTF9URVhUVVJFXzJEX0tIUiwgRUdMX0dMX1RFWFRV
UkVfQ1VCRV9NQVBfKl9LSFIsCisgICAgICAgIC8vIEVHTF9HTF9SRU5ERVJCVUZGRVJfS0hSIG9y
IEVHTF9HTF9URVhUVVJFXzNEX0tIUiBhbmQgPGJ1ZmZlcj4gcmVmZXJzIHRvIHRoZSBkZWZhdWx0
IEdMCisgICAgICAgIC8vIHRleHR1cmUgb2JqZWN0KDApIGZvciB0aGUgY29ycmVzcG9uZGluZyBH
TCB0YXJnZXQsIHRoZSBlcnJvciBFR0xfQkFEX1BBUkFNRVRFUiBpcworICAgICAgICAvLyBnZW5l
cmF0ZWQuCisgICAgICAgIGltYWdlID0gZWdsQ3JlYXRlSW1hZ2VLSFIoZGlzcGxheSwgY29udGV4
dCwgRUdMX0dMX1RFWFRVUkVfMkRfS0hSLCAwLCBudWxscHRyKTsKKyAgICAgICAgRVhQRUNUX0VR
KGltYWdlLCBFR0xfTk9fSU1BR0VfS0hSKTsKKyAgICAgICAgRVhQRUNUX0VHTF9FUlJPUihFR0xf
QkFEX1BBUkFNRVRFUik7CisKKyAgICAgICAgLy8gSWYgPHRhcmdldD4gaXMgRUdMX0dMX1RFWFRV
UkVfMkRfS0hSLCBFR0xfR0xfVEVYVFVSRV9DVUJFX01BUF8qX0tIUiwgb3IKKyAgICAgICAgLy8g
RUdMX0dMX1RFWFRVUkVfM0RfS0hSLCBhbmQgdGhlIHZhbHVlIHNwZWNpZmllZCBpbiA8YXR0cl9s
aXN0PiBmb3IKKyAgICAgICAgLy8gRUdMX0dMX1RFWFRVUkVfTEVWRUxfS0hSIGlzIG5vdCBhIHZh
bGlkIG1pcG1hcCBsZXZlbCBmb3IgdGhlIHNwZWNpZmllZCBHTCB0ZXh0dXJlIG9iamVjdAorICAg
ICAgICAvLyA8YnVmZmVyPiwgdGhlIGVycm9yIEVHTF9CQURfTUFUQ0ggaXMgZ2VuZXJhdGVkLgor
ICAgICAgICBFR0xpbnQgbGV2ZWwyQXR0cmlidXRlW10gPSB7CisgICAgICAgICAgICBFR0xfR0xf
VEVYVFVSRV9MRVZFTF9LSFIsIDIsIEVHTF9OT05FLAorICAgICAgICB9OworICAgICAgICBpbWFn
ZSA9IGVnbENyZWF0ZUltYWdlS0hSKGRpc3BsYXksIGNvbnRleHQsIEVHTF9HTF9URVhUVVJFXzJE
X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldEhlbHBl
cjxFR0xDbGllbnRCdWZmZXI+KGluY29tcGxldGVUZXh0dXJlKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsZXZlbDJBdHRyaWJ1dGUpOworICAgICAgICBFWFBFQ1RfRVEoaW1h
Z2UsIEVHTF9OT19JTUFHRV9LSFIpOworICAgICAgICBFWFBFQ1RfRUdMX0VSUk9SKEVHTF9CQURf
UEFSQU1FVEVSKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgR0x1aW50IHRleHR1
cmUyRDsKKyAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4dHVyZTJEKTsKKyAgICAgICAgZ2xC
aW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlMkQpOworICAgICAgICBnbFRleEltYWdl
MkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMSwgMSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdO
RURfQllURSwgbnVsbHB0cik7CisKKyAgICAgICAgLy8gRnJvbSBFR0xfS0hSX2ltYWdlX2Jhc2U6
CisgICAgICAgIC8vIElmIDx0YXJnZXQ+IGlzIG5vdCBvbmUgb2YgdGhlIHZhbHVlcyBpbiBUYWJs
ZSBhYWEsIHRoZSBlcnJvciBFR0xfQkFEX1BBUkFNRVRFUiBpcworICAgICAgICAvLyBnZW5lcmF0
ZWQuCisgICAgICAgIGltYWdlID0gZWdsQ3JlYXRlSW1hZ2VLSFIoZGlzcGxheSwgY29udGV4dCwg
RUdMX0dMX1RFWFRVUkVfMkRfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlaW50ZXJwcmV0SGVscGVyPEVHTENsaWVudEJ1ZmZlcj4odGV4dHVyZTJEKSwgbnVsbHB0cik7
CisgICAgICAgIEVYUEVDVF9FUShpbWFnZSwgRUdMX05PX0lNQUdFX0tIUik7CisgICAgICAgIEVY
UEVDVF9FR0xfRVJST1IoRUdMX0JBRF9QQVJBTUVURVIpOworICAgIH0KKworICAgIGlmIChlZ2xE
aXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfZ2xf
dGV4dHVyZV9jdWJlbWFwX2ltYWdlIikpCisgICAgeworICAgICAgICAvLyBJZiBFR0xfR0xfVEVY
VFVSRV9MRVZFTF9LSFIgaXMgMCwgPHRhcmdldD4gaXMgRUdMX0dMX1RFWFRVUkVfQ1VCRV9NQVBf
Kl9LSFIsIDxidWZmZXI+IGlzCisgICAgICAgIC8vIG5vdCB0aGUgbmFtZSBvZiBhIGNvbXBsZXRl
IEdMIHRleHR1cmUgb2JqZWN0LCBhbmQgb25lIG9yIG1vcmUgZmFjZXMgZG8gbm90IGhhdmUgbWlw
bWFwCisgICAgICAgIC8vIGxldmVsIDAgc3BlY2lmaWVkLCB0aGUgZXJyb3IgRUdMX0JBRF9QQVJB
TUVURVIgaXMgZ2VuZXJhdGVkLgorICAgICAgICBHTHVpbnQgaW5jb21wbGV0ZVRleHR1cmVDdWJl
OworICAgICAgICBnbEdlblRleHR1cmVzKDEsICZpbmNvbXBsZXRlVGV4dHVyZUN1YmUpOworICAg
ICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIGluY29tcGxldGVUZXh0dXJl
Q3ViZSk7CisgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZF
X1gsIDAsIEdMX1JHQkEsIDEsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAg
ICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRV
UkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCwgMCwgR0xfUkdCQSwgMSwgMSwgMCwgR0xfUkdCQSwgR0xf
VU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICBn
bFRleEltYWdlMkQoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZLCAwLCBHTF9SR0JBLCAx
LCAxLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICAgICAg
bnVsbHB0cik7CisgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FU
SVZFX1ksIDAsIEdMX1JHQkEsIDEsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RF
WFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiwgMCwgR0xfUkdCQSwgMSwgMSwgMCwgR0xfUkdCQSwg
R0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworCisgICAg
ICAgIEVHTGludCBsZXZlbDBBdHRyaWJ1dGVbXSA9IHsKKyAgICAgICAgICAgIEVHTF9HTF9URVhU
VVJFX0xFVkVMX0tIUiwgMCwgRUdMX05PTkUsCisgICAgICAgIH07CisgICAgICAgIGltYWdlID0g
ZWdsQ3JlYXRlSW1hZ2VLSFIoZGlzcGxheSwgY29udGV4dCwgRUdMX0dMX1RFWFRVUkVfQ1VCRV9N
QVBfUE9TSVRJVkVfWF9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVp
bnRlcnByZXRIZWxwZXI8RUdMQ2xpZW50QnVmZmVyPihpbmNvbXBsZXRlVGV4dHVyZUN1YmUpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsMEF0dHJpYnV0ZSk7CisgICAg
ICAgIEVYUEVDVF9FUShpbWFnZSwgRUdMX05PX0lNQUdFX0tIUik7CisgICAgICAgIEVYUEVDVF9F
R0xfRVJST1IoRUdMX0JBRF9QQVJBTUVURVIpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAg
ICAgICBHTHVpbnQgdGV4dHVyZUN1YmU7CisgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleHR1
cmVDdWJlKTsKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFX0NVQkVfTUFQLCB0ZXh0
dXJlQ3ViZSk7CisgICAgICAgIGZvciAoR0xlbnVtIGZhY2UgPSBHTF9URVhUVVJFX0NVQkVfTUFQ
X1BPU0lUSVZFX1g7IGZhY2UgPD0gR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aOworICAg
ICAgICAgICAgIGZhY2UrKykKKyAgICAgICAgeworICAgICAgICAgICAgZ2xUZXhJbWFnZTJEKGZh
Y2UsIDAsIEdMX1JHQkEsIDEsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxw
dHIpOworICAgICAgICB9CisKKyAgICAgICAgLy8gRnJvbSBFR0xfS0hSX2ltYWdlX2Jhc2U6Cisg
ICAgICAgIC8vIElmIDx0YXJnZXQ+IGlzIG5vdCBvbmUgb2YgdGhlIHZhbHVlcyBpbiBUYWJsZSBh
YWEsIHRoZSBlcnJvciBFR0xfQkFEX1BBUkFNRVRFUiBpcworICAgICAgICAvLyBnZW5lcmF0ZWQu
CisgICAgICAgIGltYWdlID0gZWdsQ3JlYXRlSW1hZ2VLSFIoZGlzcGxheSwgY29udGV4dCwgRUdM
X0dMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWF9LSFIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVpbnRlcnByZXRIZWxwZXI8RUdMQ2xpZW50QnVmZmVyPih0ZXh0dXJl
Q3ViZSksIG51bGxwdHIpOworICAgICAgICBFWFBFQ1RfRVEoaW1hZ2UsIEVHTF9OT19JTUFHRV9L
SFIpOworICAgICAgICBFWFBFQ1RfRUdMX0VSUk9SKEVHTF9CQURfUEFSQU1FVEVSKTsKKyAgICB9
CisKKyAgICBpZiAoZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5
KCksICJFR0xfS0hSX2dsX3RleHR1cmVfM0RfaW1hZ2UiKSAmJgorICAgICAgICBnZXRDbGllbnRN
YWpvclZlcnNpb24oKSA+PSAzKQorICAgIHsKKyAgICAgICAgLy8gSWYgPHRhcmdldD4gaXMgRUdM
X0dMX1RFWFRVUkVfM0RfS0hSLCBhbmQgdGhlIHZhbHVlIHNwZWNpZmllZCBpbiA8YXR0cl9saXN0
PiBmb3IKKyAgICAgICAgLy8gRUdMX0dMX1RFWFRVUkVfWk9GRlNFVF9LSFIgZXhjZWVkcyB0aGUg
ZGVwdGggb2YgdGhlIHNwZWNpZmllZCBtaXBtYXAgbGV2ZWwgLSBvZiAtIGRldGFpbAorICAgICAg
ICAvLyBpbiA8YnVmZmVyPiwgdGhlIGVycm9yIEVHTF9CQURfUEFSQU1FVEVSIGlzIGdlbmVyYXRl
ZC4KKyAgICAgICAgR0x1aW50IHRleHR1cmUzRDsKKyAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAm
dGV4dHVyZTNEKTsKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzNELCB0ZXh0dXJl
M0QpOworICAgICAgICBnbFRleEltYWdlM0QoR0xfVEVYVFVSRV8zRCwgMCwgR0xfUkdCQSwgMiwg
MiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7CisKKyAgICAgICAg
RUdMaW50IHpPZmZzZXQzUGFyYW1ldGVyW10gPSB7CisgICAgICAgICAgICBFR0xfR0xfVEVYVFVS
RV9aT0ZGU0VUX0tIUiwgMywgRUdMX05PTkUsCisgICAgICAgIH07CisgICAgICAgIGltYWdlID0g
ZWdsQ3JlYXRlSW1hZ2VLSFIoZGlzcGxheSwgY29udGV4dCwgRUdMX0dMX1RFWFRVUkVfM0RfS0hS
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0SGVscGVyPEVH
TENsaWVudEJ1ZmZlcj4odGV4dHVyZTNEKSwgek9mZnNldDNQYXJhbWV0ZXIpOworICAgICAgICBF
WFBFQ1RfRVEoaW1hZ2UsIEVHTF9OT19JTUFHRV9LSFIpOworICAgICAgICBFWFBFQ1RfRUdMX0VS
Uk9SKEVHTF9CQURfUEFSQU1FVEVSKTsKKworICAgICAgICBFR0xpbnQgek9mZnNldE5lZ2F0aXZl
MVBhcmFtZXRlcltdID0geworICAgICAgICAgICAgRUdMX0dMX1RFWFRVUkVfWk9GRlNFVF9LSFIs
IC0xLCBFR0xfTk9ORSwKKyAgICAgICAgfTsKKyAgICAgICAgaW1hZ2UgPSBlZ2xDcmVhdGVJbWFn
ZUtIUihkaXNwbGF5LCBjb250ZXh0LCBFR0xfR0xfVEVYVFVSRV8zRF9LSFIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRIZWxwZXI8RUdMQ2xpZW50QnVmZmVy
Pih0ZXh0dXJlM0QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpPZmZzZXRO
ZWdhdGl2ZTFQYXJhbWV0ZXIpOworICAgICAgICBFWFBFQ1RfRVEoaW1hZ2UsIEVHTF9OT19JTUFH
RV9LSFIpOworICAgICAgICBFWFBFQ1RfRUdMX0VSUk9SKEVHTF9CQURfUEFSQU1FVEVSKTsKKyAg
ICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgaWYgKGVnbERpc3BsYXlFeHRlbnNpb25FbmFi
bGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9nbF90ZXh0dXJlXzJEX2ltYWdlIikp
CisgICAgICAgIHsKKyAgICAgICAgICAgIEdMdWludCB0ZXh0dXJlMkQ7CisgICAgICAgICAgICBn
bEdlblRleHR1cmVzKDEsICZ0ZXh0dXJlMkQpOworICAgICAgICAgICAgZ2xCaW5kVGV4dHVyZShH
TF9URVhUVVJFXzJELCB0ZXh0dXJlMkQpOworICAgICAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RF
WFRVUkVfMkQsIDAsIEdMX1JHQkEsIDEsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUs
IG51bGxwdHIpOworCisgICAgICAgICAgICAvLyBWZXJpZnkgRUdMX0dMX1RFWFRVUkVfWk9GRlNF
VF9LSFIgaXMgbm90IGEgdmFsaWQgcGFyYW1ldGVyCisgICAgICAgICAgICBFR0xpbnQgek9mZnNl
dDBQYXJhbWV0ZXJbXSA9IHsKKyAgICAgICAgICAgICAgICBFR0xfR0xfVEVYVFVSRV9aT0ZGU0VU
X0tIUiwgMCwgRUdMX05PTkUsCisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBpbWFnZSA9
CisgICAgICAgICAgICAgICAgZWdsQ3JlYXRlSW1hZ2VLSFIoZGlzcGxheSwgY29udGV4dCwgRUdM
X0dMX1RFWFRVUkVfMkRfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
aW50ZXJwcmV0SGVscGVyPEVHTENsaWVudEJ1ZmZlcj4odGV4dHVyZTJEKSwgek9mZnNldDBQYXJh
bWV0ZXIpOworICAgICAgICAgICAgRVhQRUNUX0VRKGltYWdlLCBFR0xfTk9fSU1BR0VfS0hSKTsK
KyAgICAgICAgICAgIEVYUEVDVF9FR0xfRVJST1IoRUdMX0JBRF9QQVJBTUVURVIpOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpID49IDMpCisgICAgICAg
IHsKKyAgICAgICAgICAgIEdMdWludCB0ZXh0dXJlM0Q7CisgICAgICAgICAgICBnbEdlblRleHR1
cmVzKDEsICZ0ZXh0dXJlM0QpOworICAgICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
XzNELCB0ZXh0dXJlM0QpOworICAgICAgICAgICAgZ2xUZXhJbWFnZTNEKEdMX1RFWFRVUkVfM0Qs
IDAsIEdMX1JHQkEsIDEsIDEsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxw
dHIpOworCisgICAgICAgICAgICAvLyBGcm9tIEVHTF9LSFJfaW1hZ2VfYmFzZToKKyAgICAgICAg
ICAgIC8vIElmIDx0YXJnZXQ+IGlzIG5vdCBvbmUgb2YgdGhlIHZhbHVlcyBpbiBUYWJsZSBhYWEs
IHRoZSBlcnJvciBFR0xfQkFEX1BBUkFNRVRFUiBpcworICAgICAgICAgICAgLy8gZ2VuZXJhdGVk
LgorICAgICAgICAgICAgaW1hZ2UgPSBlZ2xDcmVhdGVJbWFnZUtIUihkaXNwbGF5LCBjb250ZXh0
LCBFR0xfR0xfVEVYVFVSRV8zRF9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlaW50ZXJwcmV0SGVscGVyPEVHTENsaWVudEJ1ZmZlcj4odGV4dHVyZTNEKSwgbnVs
bHB0cik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoaW1hZ2UsIEVHTF9OT19JTUFHRV9LSFIpOwor
ICAgICAgICAgICAgRVhQRUNUX0VHTF9FUlJPUihFR0xfQkFEX1BBUkFNRVRFUik7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBpZiAoZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5n
ZXREaXNwbGF5KCksICJFR0xfS0hSX2dsX3JlbmRlcmJ1ZmZlcl9pbWFnZSIpKQorICAgIHsKKyAg
ICAgICAgLy8gSWYgPHRhcmdldD4gaXMgRUdMX0dMX1JFTkRFUkJVRkZFUl9LSFIgYW5kIDxidWZm
ZXI+IGlzIG5vdCB0aGUgbmFtZSBvZiBhIHJlbmRlcmJ1ZmZlcgorICAgICAgICAvLyBvYmplY3Qs
IG9yIGlmIDxidWZmZXI+IGlzIHRoZSBuYW1lIG9mIGEgbXVsdGlzYW1wbGVkIHJlbmRlcmJ1ZmZl
ciBvYmplY3QsIHRoZSBlcnJvcgorICAgICAgICAvLyBFR0xfQkFEX1BBUkFNRVRFUiBpcyBnZW5l
cmF0ZWQuCisgICAgICAgIGltYWdlID0gZWdsQ3JlYXRlSW1hZ2VLSFIoZGlzcGxheSwgY29udGV4
dCwgRUdMX0dMX1JFTkRFUkJVRkZFUl9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVpbnRlcnByZXRfY2FzdDxFR0xDbGllbnRCdWZmZXI+KDApLCBudWxscHRyKTsKKyAg
ICAgICAgRVhQRUNUX0VRKGltYWdlLCBFR0xfTk9fSU1BR0VfS0hSKTsKKyAgICAgICAgRVhQRUNU
X0VHTF9FUlJPUihFR0xfQkFEX1BBUkFNRVRFUik7CisKKyAgICAgICAgaWYgKGV4dGVuc2lvbkVu
YWJsZWQoIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIikpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEdMdWludCByZW5kZXJidWZmZXI7CisgICAgICAgICAgICBnbEdlblJlbmRlcmJ1
ZmZlcnMoMSwgJnJlbmRlcmJ1ZmZlcik7CisgICAgICAgICAgICBnbEJpbmRSZW5kZXJidWZmZXIo
R0xfUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIpOworICAgICAgICAgICAgZ2xSZW5kZXJidWZm
ZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHTF9SRU5ERVJCVUZGRVIsIDEsIEdMX1JHQkE4LCAx
LCAxKTsKKyAgICAgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgICAgICAgICBp
bWFnZSA9IGVnbENyZWF0ZUltYWdlS0hSKGRpc3BsYXksIGNvbnRleHQsIEVHTF9HTF9SRU5ERVJC
VUZGRVJfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVy
cHJldF9jYXN0PEVHTENsaWVudEJ1ZmZlcj4oMCksIG51bGxwdHIpOworICAgICAgICAgICAgRVhQ
RUNUX0VRKGltYWdlLCBFR0xfTk9fSU1BR0VfS0hSKTsKKyAgICAgICAgICAgIEVYUEVDVF9FR0xf
RVJST1IoRUdMX0JBRF9QQVJBTUVURVIpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAg
ICB7CisgICAgICAgIEdMdWludCByZW5kZXJidWZmZXI7CisgICAgICAgIGdsR2VuUmVuZGVyYnVm
ZmVycygxLCAmcmVuZGVyYnVmZmVyKTsKKyAgICAgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JF
TkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyKTsKKyAgICAgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdl
KEdMX1JFTkRFUkJVRkZFUiwgR0xfUkdCQTQsIDEsIDEpOworCisgICAgICAgIC8vIEZyb20gRUdM
X0tIUl9pbWFnZV9iYXNlOgorICAgICAgICAvLyBJZiA8dGFyZ2V0PiBpcyBub3Qgb25lIG9mIHRo
ZSB2YWx1ZXMgaW4gVGFibGUgYWFhLCB0aGUgZXJyb3IgRUdMX0JBRF9QQVJBTUVURVIgaXMKKyAg
ICAgICAgLy8gZ2VuZXJhdGVkLgorICAgICAgICBpbWFnZSA9IGVnbENyZWF0ZUltYWdlS0hSKGRp
c3BsYXksIGNvbnRleHQsIEVHTF9HTF9SRU5ERVJCVUZGRVJfS0hSLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0SGVscGVyPEVHTENsaWVudEJ1ZmZlcj4ocmVu
ZGVyYnVmZmVyKSwgbnVsbHB0cik7CisgICAgICAgIEVYUEVDVF9FUShpbWFnZSwgRUdMX05PX0lN
QUdFX0tIUik7CisgICAgICAgIEVYUEVDVF9FR0xfRVJST1IoRUdMX0JBRF9QQVJBTUVURVIpOwor
ICAgIH0KK30KKworLy8gQ2hlY2sgdmFsaWRhdGlvbiBmcm9tIHRoZSBHTF9PRVNfRUdMX2ltYWdl
IGV4dGVuc2lvbgorVEVTVF9QKEltYWdlVGVzdCwgVmFsaWRhdGlvbkdMRUdMSW1hZ2UpCit7Cisg
ICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKKyAgICBpZiAoIWV4dGVuc2lv
bkVuYWJsZWQoIk9FU19FR0xfaW1hZ2UiKSB8fAorICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lv
bkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2ltYWdlX2Jhc2UiKSB8fAor
ICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCks
ICJFR0xfS0hSX2dsX3RleHR1cmVfMkRfaW1hZ2UiKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291
dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgT0VTX0VHTF9pbWFnZSwgRUdMX0tIUl9pbWFnZV9i
YXNlIG9yICIKKyAgICAgICAgICAgICAgICAgICAgICJFR0xfS0hSX2dsX3RleHR1cmVfMkRfaW1h
Z2UgaXMgbm90IGF2YWlsYWJsZS4iCisgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHTHVieXRlIGRhdGFbNF0gPSB7MjU1LCAwLCAy
NTUsIDI1NX07CisKKyAgICAvLyBDcmVhdGUgdGhlIEltYWdlCisgICAgR0x1aW50IHNvdXJjZTsK
KyAgICBFR0xJbWFnZUtIUiBpbWFnZTsKKyAgICBjcmVhdGVFR0xJbWFnZTJEVGV4dHVyZVNvdXJj
ZSgxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBkYXRhLCAmc291cmNlLCAmaW1hZ2Up
OworCisgICAgLy8gSWYgPHRhcmdldD4gaXMgbm90IFRFWFRVUkVfMkQsIHRoZSBlcnJvciBJTlZB
TElEX0VOVU0gaXMgZ2VuZXJhdGVkLgorICAgIGdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMo
R0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCBpbWFnZSk7CisgICAgRVhQRUNUX0dMX0VS
Uk9SKEdMX0lOVkFMSURfRU5VTSk7CisKKyAgICAvLyBJZiA8aW1hZ2U+IGRvZXMgbm90IHJlZmVy
IHRvIGEgdmFsaWQgZWdsSW1hZ2VPRVMgb2JqZWN0LCB0aGUgZXJyb3IgSU5WQUxJRF9WQUxVRSBp
cworICAgIC8vIGdlbmVyYXRlZC4KKyAgICBHTHVpbnQgdGV4dHVyZTsKKyAgICBnbEdlblRleHR1
cmVzKDEsICZ0ZXh0dXJlKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1
cmUpOworICAgIGdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMoR0xfVEVYVFVSRV8yRCwgcmVp
bnRlcnByZXRIZWxwZXI8R0xlZ2xJbWFnZU9FUz4oMHhCQUFERjAwRCkpOworICAgIEVYUEVDVF9H
TF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKKworICAgIC8vIDx0YXJnZXQ+IG11c3QgYmUgUkVO
REVSQlVGRkVSX09FUywgYW5kIDxpbWFnZT4gbXVzdCBiZSB0aGUgaGFuZGxlIG9mIGEgdmFsaWQg
RUdMSW1hZ2UKKyAgICAvLyByZXNvdXJjZSwgY2FzdCBpbnRvIHRoZSB0eXBlCisgICAgLy8gZWds
SW1hZ2VPRVMuCisgICAgZ2xFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVMoR0xf
VEVYVFVSRV8yRCwgaW1hZ2UpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0p
OworCisgICAgLy8gSWYgdGhlIEdMIGlzIHVuYWJsZSB0byBjcmVhdGUgYSByZW5kZXJidWZmZXIg
dXNpbmcgdGhlIHNwZWNpZmllZCBlZ2xJbWFnZU9FUywgdGhlIGVycm9yCisgICAgLy8gSU5WQUxJ
RF9PUEVSQVRJT04gaXMgZ2VuZXJhdGVkLklmIDxpbWFnZT4KKyAgICAvLyBkb2VzIG5vdCByZWZl
ciB0byBhIHZhbGlkIGVnbEltYWdlT0VTIG9iamVjdCwgdGhlIGVycm9yIElOVkFMSURfVkFMVUUg
aXMgZ2VuZXJhdGVkLgorICAgIEdMdWludCByZW5kZXJidWZmZXI7CisgICAgZ2xHZW5SZW5kZXJi
dWZmZXJzKDEsICZyZW5kZXJidWZmZXIpOworICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5E
RVJCVUZGRVIsIHJlbmRlcmJ1ZmZlcik7CisgICAgZ2xFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZl
clN0b3JhZ2VPRVMoR0xfUkVOREVSQlVGRkVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0SGVscGVyPEdMZWdsSW1hZ2VPRVM+KDB4QkFBREYw
MEQpKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7CisKKyAgICAvLyBD
bGVhbiB1cAorICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnNvdXJjZSk7CisgICAgZWdsRGVzdHJv
eUltYWdlS0hSKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCBpbWFnZSk7CisgICAgZ2xEZWxldGVUZXh0
dXJlcygxLCAmdGV4dHVyZSk7CisgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZyZW5kZXJi
dWZmZXIpOworfQorCisvLyBDaGVjayB2YWxpZGF0aW9uIGZyb20gdGhlIEdMX09FU19FR0xfaW1h
Z2VfZXh0ZXJuYWwgZXh0ZW5zaW9uCitURVNUX1AoSW1hZ2VUZXN0LCBWYWxpZGF0aW9uR0xFR0xJ
bWFnZUV4dGVybmFsKQoreworICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX0VHTF9p
bWFnZV9leHRlcm5hbCIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBw
ZWQgYmVjYXVzZSBHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIGlzIG5vdCBhdmFpbGFibGUuIgor
ICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgR0x1aW50IHRleHR1cmU7CisgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4dHVyZSk7Cisg
ICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFX0VYVEVSTkFMX09FUywgdGV4dHVyZSk7CisKKyAg
ICAvLyBJbiB0aGUgaW5pdGlhbCBzdGF0ZSBvZiBhIFRFWFRVUkVfRVhURVJOQUxfT0VTIHRleHR1
cmUgb2JqZWN0LCB0aGUgdmFsdWUgYXNzaWduZWQgdG8KKyAgICAvLyBURVhUVVJFX01JTl9GSUxU
RVIgYW5kIFRFWFRVUkVfTUFHX0ZJTFRFUiBpcyBMSU5FQVIsIGFuZCB0aGUgcyBhbmQgdCB3cmFw
IG1vZGVzIGFyZSBib3RoIHNldAorICAgIC8vIHRvIENMQU1QX1RPX0VER0UKKyAgICBhdXRvIGdl
dFRleFBhcmFtID0gW10oR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lKQorICAgIHsKKyAgICAg
ICAgR0xpbnQgdmFsdWUgPSAwOworICAgICAgICBnbEdldFRleFBhcmFtZXRlcml2KHRhcmdldCwg
cG5hbWUsICZ2YWx1ZSk7CisgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgICAgICBy
ZXR1cm4gdmFsdWU7CisgICAgfTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0xJTkVBUiwgZ2V0
VGV4UGFyYW0oR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUikp
OworICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfTElORUFSLCBnZXRUZXhQYXJhbShHTF9URVhUVVJF
X0VYVEVSTkFMX09FUywgR0xfVEVYVFVSRV9NQUdfRklMVEVSKSk7CisgICAgRVhQRUNUX0dMRU5V
TV9FUShHTF9DTEFNUF9UT19FREdFLCBnZXRUZXhQYXJhbShHTF9URVhUVVJFX0VYVEVSTkFMX09F
UywgR0xfVEVYVFVSRV9XUkFQX1MpKTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0NMQU1QX1RP
X0VER0UsIGdldFRleFBhcmFtKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCBHTF9URVhUVVJFX1dS
QVBfVCkpOworCisgICAgLy8gIldoZW4gPHRhcmdldD4gaXMgVEVYVFVSRV9FWFRFUk5BTF9PRVMg
b25seSBORUFSRVNUIGFuZCBMSU5FQVIgYXJlIGFjY2VwdGVkIGFzCisgICAgLy8gVEVYVFVSRV9N
SU5fRklMVEVSLCBvbmx5IENMQU1QX1RPX0VER0UgaXMgYWNjZXB0ZWQgYXMgVEVYVFVSRV9XUkFQ
X1MgYW5kIFRFWFRVUkVfV1JBUF9ULCBhbmQKKyAgICAvLyBvbmx5IEZBTFNFIGlzIGFjY2VwdGVk
IGFzIEdFTkVSQVRFX01JUE1BUC4gQXR0ZW1wdGluZyB0byBzZXQgb3RoZXIgdmFsdWVzIGZvcgor
ICAgIC8vIFRFWFRVUkVfTUlOX0ZJTFRFUiwgVEVYVFVSRV9XUkFQX1MsIFRFWFRVUkVfV1JBUF9U
LCBvciBHRU5FUkFURV9NSVBNQVAgd2lsbCByZXN1bHQgaW4gYW4KKyAgICAvLyBJTlZBTElEX0VO
VU0gZXJyb3IuCisgICAgR0xlbnVtIHZhbGlkTWluRmlsdGVyc1tdeworICAgICAgICBHTF9ORUFS
RVNULCBHTF9MSU5FQVIsCisgICAgfTsKKyAgICBmb3IgKGF1dG8gbWluRmlsdGVyIDogdmFsaWRN
aW5GaWx0ZXJzKQorICAgIHsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfRVhU
RVJOQUxfT0VTLCBHTF9URVhUVVJFX01JTl9GSUxURVIsIG1pbkZpbHRlcik7CisgICAgICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOworICAgIH0KKworICAgIEdMZW51bSBpbnZhbGlkTWluRmlsdGVy
c1tdeworICAgICAgICBHTF9ORUFSRVNUX01JUE1BUF9MSU5FQVIsIEdMX05FQVJFU1RfTUlQTUFQ
X05FQVJFU1QsIEdMX0xJTkVBUl9NSVBNQVBfTElORUFSLAorICAgICAgICBHTF9MSU5FQVJfTUlQ
TUFQX05FQVJFU1QsCisgICAgfTsKKyAgICBmb3IgKGF1dG8gbWluRmlsdGVyIDogaW52YWxpZE1p
bkZpbHRlcnMpCisgICAgeworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9FWFRF
Uk5BTF9PRVMsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgbWluRmlsdGVyKTsKKyAgICAgICAgRVhQ
RUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7CisgICAgfQorCisgICAgR0xlbnVtIHZhbGlk
V3JhcE1vZGVzW117CisgICAgICAgIEdMX0NMQU1QX1RPX0VER0UsCisgICAgfTsKKyAgICBmb3Ig
KGF1dG8gbWluRmlsdGVyIDogdmFsaWRXcmFwTW9kZXMpCisgICAgeworICAgICAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIEdMX1RFWFRVUkVfV1JBUF9TLCBtaW5G
aWx0ZXIpOworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICAgICAgZ2xUZXhQYXJh
bWV0ZXJpKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCBHTF9URVhUVVJFX1dSQVBfVCwgbWluRmls
dGVyKTsKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgfQorCisgICAgR0xlbnVt
IGludmFsaWRXcmFwTW9kZXNbXXsKKyAgICAgICAgR0xfUkVQRUFULCBHTF9NSVJST1JFRF9SRVBF
QVQsCisgICAgfTsKKyAgICBmb3IgKGF1dG8gbWluRmlsdGVyIDogaW52YWxpZFdyYXBNb2RlcykK
KyAgICB7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0VYVEVSTkFMX09FUywg
R0xfVEVYVFVSRV9XUkFQX1MsIG1pbkZpbHRlcik7CisgICAgICAgIEVYUEVDVF9HTF9FUlJPUihH
TF9JTlZBTElEX0VOVU0pOworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9FWFRF
Uk5BTF9PRVMsIEdMX1RFWFRVUkVfV1JBUF9ULCBtaW5GaWx0ZXIpOworICAgICAgICBFWFBFQ1Rf
R0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICB9CisKKyAgICAvLyBXaGVuIDx0YXJnZXQ+
IGlzIHNldCB0byBURVhUVVJFX0VYVEVSTkFMX09FUywgR2VuZXJhdGVNaXBtYXAgYWx3YXlzIGZh
aWxzIGFuZCBnZW5lcmF0ZXMgYW4KKyAgICAvLyBJTlZBTElEX0VOVU0gZXJyb3IuCisgICAgZ2xH
ZW5lcmF0ZU1pcG1hcChHTF9URVhUVVJFX0VYVEVSTkFMX09FUyk7CisgICAgRVhQRUNUX0dMX0VS
Uk9SKEdMX0lOVkFMSURfRU5VTSk7CisKKyAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0ZXh0dXJl
KTsKK30KKworLy8gQ2hlY2sgdmFsaWRhdGlvbiBmcm9tIHRoZSBHTF9PRVNfRUdMX2ltYWdlX2V4
dGVybmFsX2Vzc2wzIGV4dGVuc2lvbgorVEVTVF9QKEltYWdlVGVzdCwgVmFsaWRhdGlvbkdMRUdM
SW1hZ2VFeHRlcm5hbEVTU0wzKQoreworICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VT
X0VHTF9pbWFnZV9leHRlcm5hbF9lc3NsMyIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8
ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIGlzIG5vdCBh
dmFpbGFibGUuIgorICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgLy8gTWFrZSBzdXJlIHRoaXMgZXh0ZW5zaW9uIGlzIG5vdCBleHBv
c2VkIHdpdGhvdXQgRVMzLgorICAgIEFTU0VSVF9HRShnZXRDbGllbnRNYWpvclZlcnNpb24oKSwg
Myk7CisKKyAgICBHTHVpbnQgdGV4dHVyZTsKKyAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXh0dXJl
KTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCB0ZXh0dXJlKTsK
KworICAgIC8vIEl0IGlzIGFuIElOVkFMSURfT1BFUkFUSU9OIGVycm9yIHRvIHNldCB0aGUgVEVY
VFVSRV9CQVNFX0xFVkVMIHRvIGEgdmFsdWUgb3RoZXIgdGhhbiB6ZXJvLgorICAgIGdsVGV4UGFy
YW1ldGVyaShHTF9URVhUVVJFX0VYVEVSTkFMX09FUywgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAx
KTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCBHTF9URVhUVVJFX0JBU0VfTEVW
RUwsIDEwKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworCisg
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCBHTF9URVhUVVJFX0JB
U0VfTEVWRUwsIDApOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xEZWxldGVU
ZXh0dXJlcygxLCAmdGV4dHVyZSk7Cit9CisKK1RFU1RfUChJbWFnZVRlc3QsIFNvdXJjZTJEVGFy
Z2V0MkQpCit7CisgICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKKyAgICBp
ZiAoIWV4dGVuc2lvbkVuYWJsZWQoIk9FU19FR0xfaW1hZ2UiKSB8fAorICAgICAgICAhZWdsRGlz
cGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2ltYWdl
X2Jhc2UiKSB8fAorICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5n
ZXREaXNwbGF5KCksICJFR0xfS0hSX2dsX3RleHR1cmVfMkRfaW1hZ2UiKSkKKyAgICB7CisgICAg
ICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgT0VTX0VHTF9pbWFnZSwgRUdM
X0tIUl9pbWFnZV9iYXNlIG9yICIKKyAgICAgICAgICAgICAgICAgICAgICJFR0xfS0hSX2dsX3Rl
eHR1cmVfMkRfaW1hZ2UgaXMgbm90IGF2YWlsYWJsZS4iCisgICAgICAgICAgICAgICAgICA8PCBz
dGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHTHVieXRlIGRhdGFbNF0g
PSB7MjU1LCAwLCAyNTUsIDI1NX07CisKKyAgICAvLyBDcmVhdGUgdGhlIEltYWdlCisgICAgR0x1
aW50IHNvdXJjZTsKKyAgICBFR0xJbWFnZUtIUiBpbWFnZTsKKyAgICBjcmVhdGVFR0xJbWFnZTJE
VGV4dHVyZVNvdXJjZSgxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBkYXRhLCAmc291
cmNlLCAmaW1hZ2UpOworCisgICAgLy8gQ3JlYXRlIHRoZSB0YXJnZXQKKyAgICBHTHVpbnQgdGFy
Z2V0OworICAgIGNyZWF0ZUVHTEltYWdlVGFyZ2V0VGV4dHVyZTJEKGltYWdlLCAmdGFyZ2V0KTsK
KworICAgIC8vIEV4cGVjdCB0aGF0IHRoZSB0YXJnZXQgdGV4dHVyZSBoYXMgdGhlIHNhbWUgY29s
b3IgYXMgdGhlIHNvdXJjZSB0ZXh0dXJlCisgICAgdmVyaWZ5UmVzdWx0czJEKHRhcmdldCwgZGF0
YSk7CisKKyAgICAvLyBDbGVhbiB1cAorICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnNvdXJjZSk7
CisgICAgZWdsRGVzdHJveUltYWdlS0hSKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCBpbWFnZSk7Cisg
ICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGFyZ2V0KTsKK30KKworVEVTVF9QKEltYWdlVGVzdCwg
U291cmNlMkRUYXJnZXRSZW5kZXJidWZmZXIpCit7CisgICAgRUdMV2luZG93ICp3aW5kb3cgPSBn
ZXRFR0xXaW5kb3coKTsKKyAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIk9FU19FR0xfaW1hZ2Ui
KSB8fAorICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNw
bGF5KCksICJFR0xfS0hSX2ltYWdlX2Jhc2UiKSB8fAorICAgICAgICAhZWdsRGlzcGxheUV4dGVu
c2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2dsX3RleHR1cmVfMkRf
aW1hZ2UiKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1
c2UgT0VTX0VHTF9pbWFnZSwgRUdMX0tIUl9pbWFnZV9iYXNlIG9yICIKKyAgICAgICAgICAgICAg
ICAgICAgICJFR0xfS0hSX2dsX3RleHR1cmVfMkRfaW1hZ2UgaXMgbm90IGF2YWlsYWJsZS4iCisg
ICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBHTHVieXRlIGRhdGFbNF0gPSB7MjU1LCAwLCAyNTUsIDI1NX07CisKKyAgICAvLyBDcmVh
dGUgdGhlIEltYWdlCisgICAgR0x1aW50IHNvdXJjZTsKKyAgICBFR0xJbWFnZUtIUiBpbWFnZTsK
KyAgICBjcmVhdGVFR0xJbWFnZTJEVGV4dHVyZVNvdXJjZSgxLCAxLCBHTF9SR0JBLCBHTF9VTlNJ
R05FRF9CWVRFLCBkYXRhLCAmc291cmNlLCAmaW1hZ2UpOworCisgICAgLy8gQ3JlYXRlIHRoZSB0
YXJnZXQKKyAgICBHTHVpbnQgdGFyZ2V0OworICAgIGNyZWF0ZUVHTEltYWdlVGFyZ2V0UmVuZGVy
YnVmZmVyKGltYWdlLCAmdGFyZ2V0KTsKKworICAgIC8vIEV4cGVjdCB0aGF0IHRoZSB0YXJnZXQg
cmVuZGVyYnVmZmVyIGhhcyB0aGUgc2FtZSBjb2xvciBhcyB0aGUgc291cmNlIHRleHR1cmUKKyAg
ICB2ZXJpZnlSZXN1bHRzUmVuZGVyYnVmZmVyKHRhcmdldCwgZGF0YSk7CisKKyAgICAvLyBDbGVh
biB1cAorICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnNvdXJjZSk7CisgICAgZWdsRGVzdHJveUlt
YWdlS0hSKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCBpbWFnZSk7CisgICAgZ2xEZWxldGVSZW5kZXJi
dWZmZXJzKDEsICZ0YXJnZXQpOworfQorCitURVNUX1AoSW1hZ2VUZXN0LCBTb3VyY2UyRFRhcmdl
dEV4dGVybmFsKQoreworICAgIEVHTFdpbmRvdyAqd2luZG93ID0gZ2V0RUdMV2luZG93KCk7Cisg
ICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJPRVNfRUdMX2ltYWdlIikgfHwgIWV4dGVuc2lvbkVu
YWJsZWQoIk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSB8fAorICAgICAgICAhZWdsRGlzcGxheUV4
dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2ltYWdlX2Jhc2Ui
KSB8fAorICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNw
bGF5KCksICJFR0xfS0hSX2dsX3RleHR1cmVfMkRfaW1hZ2UiKSkKKyAgICB7CisgICAgICAgIHN0
ZDo6Y291dAorICAgICAgICAgICAgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIE9FU19FR0xfaW1h
Z2UsIE9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwsIEVHTF9LSFJfaW1hZ2VfYmFzZSBvciAiCisgICAg
ICAgICAgICAgICAiRUdMX0tIUl9nbF90ZXh0dXJlXzJEX2ltYWdlIGlzIG5vdCBhdmFpbGFibGUu
IgorICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgR0x1Ynl0ZSBkYXRhWzRdID0gezI1NSwgMCwgMjU1LCAyNTV9OworCisgICAgLy8gQ3JlYXRl
IHRoZSBJbWFnZQorICAgIEdMdWludCBzb3VyY2U7CisgICAgRUdMSW1hZ2VLSFIgaW1hZ2U7Cisg
ICAgY3JlYXRlRUdMSW1hZ2UyRFRleHR1cmVTb3VyY2UoMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdO
RURfQllURSwgZGF0YSwgJnNvdXJjZSwgJmltYWdlKTsKKworICAgIC8vIENyZWF0ZSB0aGUgdGFy
Z2V0CisgICAgR0x1aW50IHRhcmdldDsKKyAgICBjcmVhdGVFR0xJbWFnZVRhcmdldFRleHR1cmVF
eHRlcm5hbChpbWFnZSwgJnRhcmdldCk7CisKKyAgICAvLyBFeHBlY3QgdGhhdCB0aGUgdGFyZ2V0
IHJlbmRlcmJ1ZmZlciBoYXMgdGhlIHNhbWUgY29sb3IgYXMgdGhlIHNvdXJjZSB0ZXh0dXJlCisg
ICAgdmVyaWZ5UmVzdWx0c0V4dGVybmFsKHRhcmdldCwgZGF0YSk7CisKKyAgICAvLyBDbGVhbiB1
cAorICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnNvdXJjZSk7CisgICAgZWdsRGVzdHJveUltYWdl
S0hSKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCBpbWFnZSk7CisgICAgZ2xEZWxldGVSZW5kZXJidWZm
ZXJzKDEsICZ0YXJnZXQpOworfQorCitURVNUX1AoSW1hZ2VUZXN0RVMzLCBTb3VyY2UyRFRhcmdl
dEV4dGVybmFsRVNTTDMpCit7CisgICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3co
KTsKKyAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIk9FU19FR0xfaW1hZ2UiKSB8fCAhZXh0ZW5z
aW9uRW5hYmxlZCgiT0VTX0VHTF9pbWFnZV9leHRlcm5hbF9lc3NsMyIpIHx8CisgICAgICAgICFl
Z2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJf
aW1hZ2VfYmFzZSIpIHx8CisgICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5k
b3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSIpKQorICAgIHsK
KyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBPRVNfRUdMX2ltYWdl
LCBPRVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vzc2wzLCAiCisgICAgICAgICAgICAgICAgICAgICAi
RUdMX0tIUl9pbWFnZV9iYXNlIG9yICIKKyAgICAgICAgICAgICAgICAgICAgICJFR0xfS0hSX2ds
X3RleHR1cmVfMkRfaW1hZ2UgaXMgbm90IGF2YWlsYWJsZS4iCisgICAgICAgICAgICAgICAgICA8
PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHTHVieXRlIGRhdGFb
NF0gPSB7MjU1LCAwLCAyNTUsIDI1NX07CisKKyAgICAvLyBDcmVhdGUgdGhlIEltYWdlCisgICAg
R0x1aW50IHNvdXJjZTsKKyAgICBFR0xJbWFnZUtIUiBpbWFnZTsKKyAgICBjcmVhdGVFR0xJbWFn
ZTJEVGV4dHVyZVNvdXJjZSgxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBkYXRhLCAm
c291cmNlLCAmaW1hZ2UpOworCisgICAgLy8gQ3JlYXRlIHRoZSB0YXJnZXQKKyAgICBHTHVpbnQg
dGFyZ2V0OworICAgIGNyZWF0ZUVHTEltYWdlVGFyZ2V0VGV4dHVyZUV4dGVybmFsKGltYWdlLCAm
dGFyZ2V0KTsKKworICAgIC8vIEV4cGVjdCB0aGF0IHRoZSB0YXJnZXQgcmVuZGVyYnVmZmVyIGhh
cyB0aGUgc2FtZSBjb2xvciBhcyB0aGUgc291cmNlIHRleHR1cmUKKyAgICB2ZXJpZnlSZXN1bHRz
RXh0ZXJuYWxFU1NMMyh0YXJnZXQsIGRhdGEpOworCisgICAgLy8gQ2xlYW4gdXAKKyAgICBnbERl
bGV0ZVRleHR1cmVzKDEsICZzb3VyY2UpOworICAgIGVnbERlc3Ryb3lJbWFnZUtIUih3aW5kb3ct
PmdldERpc3BsYXkoKSwgaW1hZ2UpOworICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmdGFy
Z2V0KTsKK30KKworVEVTVF9QKEltYWdlVGVzdCwgU291cmNlQ3ViZVRhcmdldDJEKQoreworICAg
IEVHTFdpbmRvdyAqd2luZG93ID0gZ2V0RUdMV2luZG93KCk7CisgICAgaWYgKCFleHRlbnNpb25F
bmFibGVkKCJPRVNfRUdMX2ltYWdlIikgfHwKKyAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25F
bmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9pbWFnZV9iYXNlIikgfHwKKyAg
ICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAi
RUdMX0tIUl9nbF90ZXh0dXJlX2N1YmVtYXBfaW1hZ2UiKSkKKyAgICB7CisgICAgICAgIHN0ZDo6
Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgT0VTX0VHTF9pbWFnZSwgRUdMX0tIUl9pbWFn
ZV9iYXNlIG9yICIKKyAgICAgICAgICAgICAgICAgICAgICJFR0xfS0hSX2dsX3RleHR1cmVfY3Vi
ZW1hcF9pbWFnZSBpcyBub3QgYXZhaWxhYmxlLiIKKyAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6
ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdMdWJ5dGUgZGF0YVsyNF0gPSB7
CisgICAgICAgIDI1NSwgMCwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAwLCAw
LCAyNTUsCisgICAgICAgIDAsICAgMCwgMjU1LCAyNTUsIDAsICAgMjU1LCAwLCAgIDI1NSwgMCwg
ICAwLCAwLCAyNTUsCisgICAgfTsKKworICAgIGZvciAoRUdMZW51bSBmYWNlSWR4ID0gMDsgZmFj
ZUlkeCA8IDY7IGZhY2VJZHgrKykKKyAgICB7CisgICAgICAgIC8vIENyZWF0ZSB0aGUgSW1hZ2UK
KyAgICAgICAgR0x1aW50IHNvdXJjZTsKKyAgICAgICAgRUdMSW1hZ2VLSFIgaW1hZ2U7CisgICAg
ICAgIGNyZWF0ZUVHTEltYWdlQ3ViZW1hcFRleHR1cmVTb3VyY2UoCisgICAgICAgICAgICAxLCAx
LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QgKj4o
ZGF0YSksIHNpemVvZihHTHVieXRlKSAqIDQsCisgICAgICAgICAgICBFR0xfR0xfVEVYVFVSRV9D
VUJFX01BUF9QT1NJVElWRV9YX0tIUiArIGZhY2VJZHgsICZzb3VyY2UsICZpbWFnZSk7CisKKyAg
ICAgICAgLy8gQ3JlYXRlIHRoZSB0YXJnZXQKKyAgICAgICAgR0x1aW50IHRhcmdldDsKKyAgICAg
ICAgY3JlYXRlRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkQoaW1hZ2UsICZ0YXJnZXQpOworCisgICAg
ICAgIC8vIEV4cGVjdCB0aGF0IHRoZSB0YXJnZXQgdGV4dHVyZSBoYXMgdGhlIHNhbWUgY29sb3Ig
YXMgdGhlIHNvdXJjZSB0ZXh0dXJlCisgICAgICAgIHZlcmlmeVJlc3VsdHMyRCh0YXJnZXQsICZk
YXRhW2ZhY2VJZHggKiA0XSk7CisKKyAgICAgICAgLy8gQ2xlYW4gdXAKKyAgICAgICAgZ2xEZWxl
dGVUZXh0dXJlcygxLCAmc291cmNlKTsKKyAgICAgICAgZWdsRGVzdHJveUltYWdlS0hSKHdpbmRv
dy0+Z2V0RGlzcGxheSgpLCBpbWFnZSk7CisgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRh
cmdldCk7CisgICAgfQorfQorCitURVNUX1AoSW1hZ2VUZXN0LCBTb3VyY2VDdWJlVGFyZ2V0UmVu
ZGVyYnVmZmVyKQoreworICAgIEVHTFdpbmRvdyAqd2luZG93ID0gZ2V0RUdMV2luZG93KCk7Cisg
ICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJPRVNfRUdMX2ltYWdlIikgfHwKKyAgICAgICAgIWVn
bERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9p
bWFnZV9iYXNlIikgfHwKKyAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRv
dy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9nbF90ZXh0dXJlX2N1YmVtYXBfaW1hZ2UiKSkKKyAg
ICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgT0VTX0VHTF9p
bWFnZSwgRUdMX0tIUl9pbWFnZV9iYXNlIG9yICIKKyAgICAgICAgICAgICAgICAgICAgICJFR0xf
S0hSX2dsX3RleHR1cmVfY3ViZW1hcF9pbWFnZSBpcyBub3QgYXZhaWxhYmxlLiIKKyAgICAgICAg
ICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdM
dWJ5dGUgZGF0YVsyNF0gPSB7CisgICAgICAgIDI1NSwgMCwgMjU1LCAyNTUsIDI1NSwgMjU1LCAy
NTUsIDI1NSwgMjU1LCAwLCAwLCAyNTUsCisgICAgICAgIDAsICAgMCwgMjU1LCAyNTUsIDAsICAg
MjU1LCAwLCAgIDI1NSwgMCwgICAwLCAwLCAyNTUsCisgICAgfTsKKworICAgIGZvciAoRUdMZW51
bSBmYWNlSWR4ID0gMDsgZmFjZUlkeCA8IDY7IGZhY2VJZHgrKykKKyAgICB7CisgICAgICAgIC8v
IENyZWF0ZSB0aGUgSW1hZ2UKKyAgICAgICAgR0x1aW50IHNvdXJjZTsKKyAgICAgICAgRUdMSW1h
Z2VLSFIgaW1hZ2U7CisgICAgICAgIGNyZWF0ZUVHTEltYWdlQ3ViZW1hcFRleHR1cmVTb3VyY2Uo
CisgICAgICAgICAgICAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCByZWludGVycHJl
dF9jYXN0PHVpbnQ4X3QgKj4oZGF0YSksIHNpemVvZihHTHVieXRlKSAqIDQsCisgICAgICAgICAg
ICBFR0xfR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YX0tIUiArIGZhY2VJZHgsICZzb3Vy
Y2UsICZpbWFnZSk7CisKKyAgICAgICAgLy8gQ3JlYXRlIHRoZSB0YXJnZXQKKyAgICAgICAgR0x1
aW50IHRhcmdldDsKKyAgICAgICAgY3JlYXRlRUdMSW1hZ2VUYXJnZXRSZW5kZXJidWZmZXIoaW1h
Z2UsICZ0YXJnZXQpOworCisgICAgICAgIC8vIEV4cGVjdCB0aGF0IHRoZSB0YXJnZXQgdGV4dHVy
ZSBoYXMgdGhlIHNhbWUgY29sb3IgYXMgdGhlIHNvdXJjZSB0ZXh0dXJlCisgICAgICAgIHZlcmlm
eVJlc3VsdHNSZW5kZXJidWZmZXIodGFyZ2V0LCAmZGF0YVtmYWNlSWR4ICogNF0pOworCisgICAg
ICAgIC8vIENsZWFuIHVwCisgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnNvdXJjZSk7Cisg
ICAgICAgIGVnbERlc3Ryb3lJbWFnZUtIUih3aW5kb3ctPmdldERpc3BsYXkoKSwgaW1hZ2UpOwor
ICAgICAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJnRhcmdldCk7CisgICAgfQorfQorCisv
LyBUZXN0IGN1YmVtYXAgLT4gZXh0ZXJuYWwgdGV4dHVyZSBFR0wgaW1hZ2VzLgorVEVTVF9QKElt
YWdlVGVzdCwgU291cmNlQ3ViZVRhcmdldEV4dGVybmFsKQoreworICAgIEVHTFdpbmRvdyAqd2lu
ZG93ID0gZ2V0RUdMV2luZG93KCk7CisgICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJPRVNfRUdM
X2ltYWdlIikgfHwgIWV4dGVuc2lvbkVuYWJsZWQoIk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSB8
fAorICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5
KCksICJFR0xfS0hSX2ltYWdlX2Jhc2UiKSB8fAorICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lv
bkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2dsX3RleHR1cmVfY3ViZW1h
cF9pbWFnZSIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0CisgICAgICAgICAgICA8PCAiVGVz
dCBza2lwcGVkIGJlY2F1c2UgT0VTX0VHTF9pbWFnZSwgT0VTX0VHTF9pbWFnZV9leHRlcm5hbCwg
RUdMX0tIUl9pbWFnZV9iYXNlIG9yICIKKyAgICAgICAgICAgICAgICJFR0xfS0hSX2dsX3RleHR1
cmVfY3ViZW1hcF9pbWFnZSBpcyBub3QgYXZhaWxhYmxlLiIKKyAgICAgICAgICAgIDw8IHN0ZDo6
ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdMdWJ5dGUgZGF0YVsyNF0gPSB7
CisgICAgICAgIDI1NSwgMCwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAwLCAw
LCAyNTUsCisgICAgICAgIDAsICAgMCwgMjU1LCAyNTUsIDAsICAgMjU1LCAwLCAgIDI1NSwgMCwg
ICAwLCAwLCAyNTUsCisgICAgfTsKKworICAgIGZvciAoRUdMZW51bSBmYWNlSWR4ID0gMDsgZmFj
ZUlkeCA8IDY7IGZhY2VJZHgrKykKKyAgICB7CisgICAgICAgIC8vIENyZWF0ZSB0aGUgSW1hZ2UK
KyAgICAgICAgR0x1aW50IHNvdXJjZTsKKyAgICAgICAgRUdMSW1hZ2VLSFIgaW1hZ2U7CisgICAg
ICAgIGNyZWF0ZUVHTEltYWdlQ3ViZW1hcFRleHR1cmVTb3VyY2UoCisgICAgICAgICAgICAxLCAx
LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QgKj4o
ZGF0YSksIHNpemVvZihHTHVieXRlKSAqIDQsCisgICAgICAgICAgICBFR0xfR0xfVEVYVFVSRV9D
VUJFX01BUF9QT1NJVElWRV9YX0tIUiArIGZhY2VJZHgsICZzb3VyY2UsICZpbWFnZSk7CisKKyAg
ICAgICAgLy8gQ3JlYXRlIHRoZSB0YXJnZXQKKyAgICAgICAgR0x1aW50IHRhcmdldDsKKyAgICAg
ICAgY3JlYXRlRUdMSW1hZ2VUYXJnZXRUZXh0dXJlRXh0ZXJuYWwoaW1hZ2UsICZ0YXJnZXQpOwor
CisgICAgICAgIC8vIEV4cGVjdCB0aGF0IHRoZSB0YXJnZXQgdGV4dHVyZSBoYXMgdGhlIHNhbWUg
Y29sb3IgYXMgdGhlIHNvdXJjZSB0ZXh0dXJlCisgICAgICAgIHZlcmlmeVJlc3VsdHNFeHRlcm5h
bCh0YXJnZXQsICZkYXRhW2ZhY2VJZHggKiA0XSk7CisKKyAgICAgICAgLy8gQ2xlYW4gdXAKKyAg
ICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmc291cmNlKTsKKyAgICAgICAgZWdsRGVzdHJveUlt
YWdlS0hSKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCBpbWFnZSk7CisgICAgICAgIGdsRGVsZXRlUmVu
ZGVyYnVmZmVycygxLCAmdGFyZ2V0KTsKKyAgICB9Cit9CisKKy8vIFRlc3QgY3ViZW1hcCAtPiBl
eHRlcm5hbCB0ZXh0dXJlIEVHTCBpbWFnZXMgdXNpbmcgRVNTTDMgc2hhZGVycy4KK1RFU1RfUChJ
bWFnZVRlc3RFUzMsIFNvdXJjZUN1YmVUYXJnZXRFeHRlcm5hbEVTU0wzKQoreworICAgIEVHTFdp
bmRvdyAqd2luZG93ID0gZ2V0RUdMV2luZG93KCk7CisgICAgaWYgKCFleHRlbnNpb25FbmFibGVk
KCJPRVNfRUdMX2ltYWdlIikgfHwgIWV4dGVuc2lvbkVuYWJsZWQoIk9FU19FR0xfaW1hZ2VfZXh0
ZXJuYWxfZXNzbDMiKSB8fAorICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2lu
ZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2ltYWdlX2Jhc2UiKSB8fAorICAgICAgICAhZWds
RGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2ds
X3RleHR1cmVfY3ViZW1hcF9pbWFnZSIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJU
ZXN0IHNraXBwZWQgYmVjYXVzZSBPRVNfRUdMX2ltYWdlLCBPRVNfRUdMX2ltYWdlX2V4dGVybmFs
X2Vzc2wzLCAiCisgICAgICAgICAgICAgICAgICAgICAiRUdMX0tIUl9pbWFnZV9iYXNlIG9yICIK
KyAgICAgICAgICAgICAgICAgICAgICJFR0xfS0hSX2dsX3RleHR1cmVfY3ViZW1hcF9pbWFnZSBp
cyBub3QgYXZhaWxhYmxlLiIKKyAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIEdMdWJ5dGUgZGF0YVsyNF0gPSB7CisgICAgICAgIDI1
NSwgMCwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAwLCAwLCAyNTUsCisgICAg
ICAgIDAsICAgMCwgMjU1LCAyNTUsIDAsICAgMjU1LCAwLCAgIDI1NSwgMCwgICAwLCAwLCAyNTUs
CisgICAgfTsKKworICAgIGZvciAoRUdMZW51bSBmYWNlSWR4ID0gMDsgZmFjZUlkeCA8IDY7IGZh
Y2VJZHgrKykKKyAgICB7CisgICAgICAgIC8vIENyZWF0ZSB0aGUgSW1hZ2UKKyAgICAgICAgR0x1
aW50IHNvdXJjZTsKKyAgICAgICAgRUdMSW1hZ2VLSFIgaW1hZ2U7CisgICAgICAgIGNyZWF0ZUVH
TEltYWdlQ3ViZW1hcFRleHR1cmVTb3VyY2UoCisgICAgICAgICAgICAxLCAxLCBHTF9SR0JBLCBH
TF9VTlNJR05FRF9CWVRFLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QgKj4oZGF0YSksIHNpemVv
ZihHTHVieXRlKSAqIDQsCisgICAgICAgICAgICBFR0xfR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJ
VElWRV9YX0tIUiArIGZhY2VJZHgsICZzb3VyY2UsICZpbWFnZSk7CisKKyAgICAgICAgLy8gQ3Jl
YXRlIHRoZSB0YXJnZXQKKyAgICAgICAgR0x1aW50IHRhcmdldDsKKyAgICAgICAgY3JlYXRlRUdM
SW1hZ2VUYXJnZXRUZXh0dXJlRXh0ZXJuYWwoaW1hZ2UsICZ0YXJnZXQpOworCisgICAgICAgIC8v
IEV4cGVjdCB0aGF0IHRoZSB0YXJnZXQgdGV4dHVyZSBoYXMgdGhlIHNhbWUgY29sb3IgYXMgdGhl
IHNvdXJjZSB0ZXh0dXJlCisgICAgICAgIHZlcmlmeVJlc3VsdHNFeHRlcm5hbEVTU0wzKHRhcmdl
dCwgJmRhdGFbZmFjZUlkeCAqIDRdKTsKKworICAgICAgICAvLyBDbGVhbiB1cAorICAgICAgICBn
bERlbGV0ZVRleHR1cmVzKDEsICZzb3VyY2UpOworICAgICAgICBlZ2xEZXN0cm95SW1hZ2VLSFIo
d2luZG93LT5nZXREaXNwbGF5KCksIGltYWdlKTsKKyAgICAgICAgZ2xEZWxldGVSZW5kZXJidWZm
ZXJzKDEsICZ0YXJnZXQpOworICAgIH0KK30KKworVEVTVF9QKEltYWdlVGVzdCwgU291cmNlM0RU
YXJnZXRUZXh0dXJlKQoreworICAgIEVHTFdpbmRvdyAqd2luZG93ID0gZ2V0RUdMV2luZG93KCk7
CisgICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJPRVNfRUdMX2ltYWdlIikgfHwKKyAgICAgICAg
IWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tI
Ul9pbWFnZV9iYXNlIikgfHwKKyAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdp
bmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9nbF90ZXh0dXJlXzNEX2ltYWdlIikpCisgICAg
eworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIE9FU19FR0xfaW1h
Z2UsIEVHTF9LSFJfaW1hZ2VfYmFzZSBvciAiCisgICAgICAgICAgICAgICAgICAgICAiRUdMX0tI
Ul9nbF90ZXh0dXJlXzNEX2ltYWdlIGlzIG5vdCBhdmFpbGFibGUuIgorICAgICAgICAgICAgICAg
ICAgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGdldENs
aWVudE1ham9yVmVyc2lvbigpIDwgMyAmJiAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3RleHR1
cmVfM0QiKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1
c2UgM0QgdGV4dHVyZXMgYXJlIG5vdCBhdmFpbGFibGUuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCBzaXplX3QgZGVwdGggICAgICA9IDI7CisgICAg
R0x1Ynl0ZSBkYXRhWzQgKiBkZXB0aF0gPSB7CisgICAgICAgIDI1NSwgMCwgMjU1LCAyNTUsIDI1
NSwgMjU1LCAwLCAyNTUsCisgICAgfTsKKworICAgIGZvciAoc2l6ZV90IGxheWVyID0gMDsgbGF5
ZXIgPCBkZXB0aDsgbGF5ZXIrKykKKyAgICB7CisgICAgICAgIC8vIENyZWF0ZSB0aGUgSW1hZ2UK
KyAgICAgICAgR0x1aW50IHNvdXJjZTsKKyAgICAgICAgRUdMSW1hZ2VLSFIgaW1hZ2U7CisgICAg
ICAgIGNyZWF0ZUVHTEltYWdlM0RUZXh0dXJlU291cmNlKDEsIDEsIGRlcHRoLCBHTF9SR0JBLCBH
TF9VTlNJR05FRF9CWVRFLCBkYXRhLCBsYXllciwgJnNvdXJjZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJmltYWdlKTsKKworICAgICAgICAvLyBDcmVhdGUgdGhlIHRh
cmdldAorICAgICAgICBHTHVpbnQgdGFyZ2V0OworICAgICAgICBjcmVhdGVFR0xJbWFnZVRhcmdl
dFRleHR1cmUyRChpbWFnZSwgJnRhcmdldCk7CisKKyAgICAgICAgLy8gRXhwZWN0IHRoYXQgdGhl
IHRhcmdldCByZW5kZXJidWZmZXIgaGFzIHRoZSBzYW1lIGNvbG9yIGFzIHRoZSBzb3VyY2UgdGV4
dHVyZQorICAgICAgICB2ZXJpZnlSZXN1bHRzMkQodGFyZ2V0LCAmZGF0YVtsYXllciAqIDRdKTsK
KworICAgICAgICAvLyBDbGVhbiB1cAorICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZzb3Vy
Y2UpOworICAgICAgICBlZ2xEZXN0cm95SW1hZ2VLSFIod2luZG93LT5nZXREaXNwbGF5KCksIGlt
YWdlKTsKKyAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGFyZ2V0KTsKKyAgICB9Cit9CisK
K1RFU1RfUChJbWFnZVRlc3QsIFNvdXJjZTNEVGFyZ2V0UmVuZGVyYnVmZmVyKQoreworICAgIEVH
TFdpbmRvdyAqd2luZG93ID0gZ2V0RUdMV2luZG93KCk7CisgICAgaWYgKCFleHRlbnNpb25FbmFi
bGVkKCJPRVNfRUdMX2ltYWdlIikgfHwKKyAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFi
bGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9pbWFnZV9iYXNlIikgfHwKKyAgICAg
ICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdM
X0tIUl9nbF90ZXh0dXJlXzNEX2ltYWdlIikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwg
IlRlc3Qgc2tpcHBlZCBiZWNhdXNlIE9FU19FR0xfaW1hZ2UsIEVHTF9LSFJfaW1hZ2VfYmFzZSBv
ciAiCisgICAgICAgICAgICAgICAgICAgICAiRUdMX0tIUl9nbF90ZXh0dXJlXzNEX2ltYWdlIGlz
IG5vdCBhdmFpbGFibGUuIgorICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAm
JiAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfM0QiKSkKKyAgICB7CisgICAgICAg
IHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgM0QgdGV4dHVyZXMgYXJlIG5vdCBh
dmFpbGFibGUuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBj
b25zdCBzaXplX3QgZGVwdGggICAgICA9IDI7CisgICAgR0x1Ynl0ZSBkYXRhWzQgKiBkZXB0aF0g
PSB7CisgICAgICAgIDI1NSwgMCwgMjU1LCAyNTUsIDI1NSwgMjU1LCAwLCAyNTUsCisgICAgfTsK
KworICAgIGZvciAoc2l6ZV90IGxheWVyID0gMDsgbGF5ZXIgPCBkZXB0aDsgbGF5ZXIrKykKKyAg
ICB7CisgICAgICAgIC8vIENyZWF0ZSB0aGUgSW1hZ2UKKyAgICAgICAgR0x1aW50IHNvdXJjZTsK
KyAgICAgICAgRUdMSW1hZ2VLSFIgaW1hZ2U7CisgICAgICAgIGNyZWF0ZUVHTEltYWdlM0RUZXh0
dXJlU291cmNlKDEsIDEsIGRlcHRoLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBkYXRhLCBs
YXllciwgJnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlt
YWdlKTsKKworICAgICAgICAvLyBDcmVhdGUgdGhlIHRhcmdldAorICAgICAgICBHTHVpbnQgdGFy
Z2V0OworICAgICAgICBjcmVhdGVFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlcihpbWFnZSwgJnRh
cmdldCk7CisKKyAgICAgICAgLy8gRXhwZWN0IHRoYXQgdGhlIHRhcmdldCByZW5kZXJidWZmZXIg
aGFzIHRoZSBzYW1lIGNvbG9yIGFzIHRoZSBzb3VyY2UgdGV4dHVyZQorICAgICAgICB2ZXJpZnlS
ZXN1bHRzUmVuZGVyYnVmZmVyKHRhcmdldCwgJmRhdGFbbGF5ZXIgKiA0XSk7CisKKyAgICAgICAg
Ly8gQ2xlYW4gdXAKKyAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmc291cmNlKTsKKyAgICAg
ICAgZWdsRGVzdHJveUltYWdlS0hSKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCBpbWFnZSk7CisgICAg
ICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRhcmdldCk7CisgICAgfQorfQorCisvLyBUZXN0IDNE
IC0+IGV4dGVybmFsIHRleHR1cmUgRUdMIGltYWdlcy4KK1RFU1RfUChJbWFnZVRlc3QsIFNvdXJj
ZTNEVGFyZ2V0RXh0ZXJuYWwpCit7CisgICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5k
b3coKTsKKyAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIk9FU19FR0xfaW1hZ2UiKSB8fCAhZXh0
ZW5zaW9uRW5hYmxlZCgiT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpIHx8CisgICAgICAgICFlZ2xE
aXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfaW1h
Z2VfYmFzZSIpIHx8CisgICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ct
PmdldERpc3BsYXkoKSwgIkVHTF9LSFJfZ2xfdGV4dHVyZV8zRF9pbWFnZSIpKQorICAgIHsKKyAg
ICAgICAgc3RkOjpjb3V0CisgICAgICAgICAgICA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgT0VT
X0VHTF9pbWFnZSwgT0VTX0VHTF9pbWFnZV9leHRlcm5hbCwgRUdMX0tIUl9pbWFnZV9iYXNlIG9y
ICIKKyAgICAgICAgICAgICAgICJFR0xfS0hSX2dsX3RleHR1cmVfM0RfaW1hZ2UgaXMgbm90IGF2
YWlsYWJsZS4iCisgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFleHRlbnNpb25F
bmFibGVkKCJHTF9PRVNfdGV4dHVyZV8zRCIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8
ICJUZXN0IHNraXBwZWQgYmVjYXVzZSAzRCB0ZXh0dXJlcyBhcmUgbm90IGF2YWlsYWJsZS4iIDw8
IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IHNpemVfdCBk
ZXB0aCAgICAgID0gMjsKKyAgICBHTHVieXRlIGRhdGFbNCAqIGRlcHRoXSA9IHsKKyAgICAgICAg
MjU1LCAwLCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAsIDI1NSwKKyAgICB9OworCisgICAgZm9yIChz
aXplX3QgbGF5ZXIgPSAwOyBsYXllciA8IGRlcHRoOyBsYXllcisrKQorICAgIHsKKyAgICAgICAg
Ly8gQ3JlYXRlIHRoZSBJbWFnZQorICAgICAgICBHTHVpbnQgc291cmNlOworICAgICAgICBFR0xJ
bWFnZUtIUiBpbWFnZTsKKyAgICAgICAgY3JlYXRlRUdMSW1hZ2UzRFRleHR1cmVTb3VyY2UoMSwg
MSwgZGVwdGgsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGRhdGEsIGxheWVyLCAmc291cmNl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW1hZ2UpOworCisgICAg
ICAgIC8vIENyZWF0ZSB0aGUgdGFyZ2V0CisgICAgICAgIEdMdWludCB0YXJnZXQ7CisgICAgICAg
IGNyZWF0ZUVHTEltYWdlVGFyZ2V0VGV4dHVyZUV4dGVybmFsKGltYWdlLCAmdGFyZ2V0KTsKKwor
ICAgICAgICAvLyBFeHBlY3QgdGhhdCB0aGUgdGFyZ2V0IHJlbmRlcmJ1ZmZlciBoYXMgdGhlIHNh
bWUgY29sb3IgYXMgdGhlIHNvdXJjZSB0ZXh0dXJlCisgICAgICAgIHZlcmlmeVJlc3VsdHNFeHRl
cm5hbCh0YXJnZXQsICZkYXRhW2xheWVyICogNF0pOworCisgICAgICAgIC8vIENsZWFuIHVwCisg
ICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnNvdXJjZSk7CisgICAgICAgIGVnbERlc3Ryb3lJ
bWFnZUtIUih3aW5kb3ctPmdldERpc3BsYXkoKSwgaW1hZ2UpOworICAgICAgICBnbERlbGV0ZVRl
eHR1cmVzKDEsICZ0YXJnZXQpOworICAgIH0KK30KKworLy8gVGVzdCAzRCAtPiBleHRlcm5hbCB0
ZXh0dXJlIEVHTCBpbWFnZXMgdXNpbmcgRVNTTDMgc2hhZGVycy4KK1RFU1RfUChJbWFnZVRlc3RF
UzMsIFNvdXJjZTNEVGFyZ2V0RXh0ZXJuYWxFU1NMMykKK3sKKyAgICBFR0xXaW5kb3cgKndpbmRv
dyA9IGdldEVHTFdpbmRvdygpOworICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiT0VTX0VHTF9p
bWFnZSIpIHx8ICFleHRlbnNpb25FbmFibGVkKCJPRVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vzc2wz
IikgfHwKKyAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlz
cGxheSgpLCAiRUdMX0tIUl9pbWFnZV9iYXNlIikgfHwKKyAgICAgICAgIWVnbERpc3BsYXlFeHRl
bnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9nbF90ZXh0dXJlXzNE
X2ltYWdlIikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNh
dXNlIE9FU19FR0xfaW1hZ2UsIE9FU19FR0xfaW1hZ2VfZXh0ZXJuYWxfZXNzbDMsICIKKyAgICAg
ICAgICAgICAgICAgICAgICJFR0xfS0hSX2ltYWdlX2Jhc2Ugb3IgIgorICAgICAgICAgICAgICAg
ICAgICAgIkVHTF9LSFJfZ2xfdGV4dHVyZV8zRF9pbWFnZSBpcyBub3QgYXZhaWxhYmxlLiIKKyAg
ICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMgJiYgIWV4dGVuc2lvbkVuYWJsZWQo
IkdMX09FU190ZXh0dXJlXzNEIikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qg
c2tpcHBlZCBiZWNhdXNlIDNEIHRleHR1cmVzIGFyZSBub3QgYXZhaWxhYmxlLiIgPDwgc3RkOjpl
bmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3Qgc2l6ZV90IGRlcHRoICAg
ICAgPSAyOworICAgIEdMdWJ5dGUgZGF0YVs0ICogZGVwdGhdID0geworICAgICAgICAyNTUsIDAs
IDI1NSwgMjU1LCAyNTUsIDI1NSwgMCwgMjU1LAorICAgIH07CisKKyAgICBmb3IgKHNpemVfdCBs
YXllciA9IDA7IGxheWVyIDwgZGVwdGg7IGxheWVyKyspCisgICAgeworICAgICAgICAvLyBDcmVh
dGUgdGhlIEltYWdlCisgICAgICAgIEdMdWludCBzb3VyY2U7CisgICAgICAgIEVHTEltYWdlS0hS
IGltYWdlOworICAgICAgICBjcmVhdGVFR0xJbWFnZTNEVGV4dHVyZVNvdXJjZSgxLCAxLCBkZXB0
aCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgZGF0YSwgbGF5ZXIsICZzb3VyY2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbWFnZSk7CisKKyAgICAgICAgLy8g
Q3JlYXRlIHRoZSB0YXJnZXQKKyAgICAgICAgR0x1aW50IHRhcmdldDsKKyAgICAgICAgY3JlYXRl
RUdMSW1hZ2VUYXJnZXRUZXh0dXJlRXh0ZXJuYWwoaW1hZ2UsICZ0YXJnZXQpOworCisgICAgICAg
IC8vIEV4cGVjdCB0aGF0IHRoZSB0YXJnZXQgcmVuZGVyYnVmZmVyIGhhcyB0aGUgc2FtZSBjb2xv
ciBhcyB0aGUgc291cmNlIHRleHR1cmUKKyAgICAgICAgdmVyaWZ5UmVzdWx0c0V4dGVybmFsRVNT
TDModGFyZ2V0LCAmZGF0YVtsYXllciAqIDRdKTsKKworICAgICAgICAvLyBDbGVhbiB1cAorICAg
ICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZzb3VyY2UpOworICAgICAgICBlZ2xEZXN0cm95SW1h
Z2VLSFIod2luZG93LT5nZXREaXNwbGF5KCksIGltYWdlKTsKKyAgICAgICAgZ2xEZWxldGVUZXh0
dXJlcygxLCAmdGFyZ2V0KTsKKyAgICB9Cit9CisKK1RFU1RfUChJbWFnZVRlc3QsIFNvdXJjZVJl
bmRlcmJ1ZmZlclRhcmdldFRleHR1cmUpCit7CisgICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRF
R0xXaW5kb3coKTsKKyAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIk9FU19FR0xfaW1hZ2UiKSB8
fAorICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5
KCksICJFR0xfS0hSX2ltYWdlX2Jhc2UiKSB8fAorICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lv
bkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2dsX3JlbmRlcmJ1ZmZlcl9p
bWFnZSIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVz
ZSBPRVNfRUdMX2ltYWdlLCBFR0xfS0hSX2ltYWdlX2Jhc2Ugb3IgIgorICAgICAgICAgICAgICAg
ICAgICAgIkVHTF9LSFJfZ2xfcmVuZGVyYnVmZmVyX2ltYWdlIGlzIG5vdCBhdmFpbGFibGUuIgor
ICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgR0x1Ynl0ZSBkYXRhWzRdID0gezI1NSwgMCwgMjU1LCAyNTV9OworCisgICAgLy8gQ3Jl
YXRlIHRoZSBJbWFnZQorICAgIEdMdWludCBzb3VyY2U7CisgICAgRUdMSW1hZ2VLSFIgaW1hZ2U7
CisgICAgY3JlYXRlRUdMSW1hZ2VSZW5kZXJidWZmZXJTb3VyY2UoMSwgMSwgR0xfUkdCQThfT0VT
LCBkYXRhLCAmc291cmNlLCAmaW1hZ2UpOworCisgICAgLy8gQ3JlYXRlIHRoZSB0YXJnZXQKKyAg
ICBHTHVpbnQgdGFyZ2V0OworICAgIGNyZWF0ZUVHTEltYWdlVGFyZ2V0VGV4dHVyZTJEKGltYWdl
LCAmdGFyZ2V0KTsKKworICAgIC8vIEV4cGVjdCB0aGF0IHRoZSB0YXJnZXQgdGV4dHVyZSBoYXMg
dGhlIHNhbWUgY29sb3IgYXMgdGhlIHNvdXJjZSB0ZXh0dXJlCisgICAgdmVyaWZ5UmVzdWx0czJE
KHRhcmdldCwgZGF0YSk7CisKKyAgICAvLyBDbGVhbiB1cAorICAgIGdsRGVsZXRlUmVuZGVyYnVm
ZmVycygxLCAmc291cmNlKTsKKyAgICBlZ2xEZXN0cm95SW1hZ2VLSFIod2luZG93LT5nZXREaXNw
bGF5KCksIGltYWdlKTsKKyAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0YXJnZXQpOworfQorCisv
LyBUZXN0IHJlbmRlcmJ1ZmZlciAtPiBleHRlcm5hbCB0ZXh0dXJlIEVHTCBpbWFnZXMuCitURVNU
X1AoSW1hZ2VUZXN0LCBTb3VyY2VSZW5kZXJidWZmZXJUYXJnZXRUZXh0dXJlRXh0ZXJuYWwpCit7
CisgICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKKyAgICBpZiAoIWV4dGVu
c2lvbkVuYWJsZWQoIk9FU19FR0xfaW1hZ2UiKSB8fCAhZXh0ZW5zaW9uRW5hYmxlZCgiT0VTX0VH
TF9pbWFnZV9leHRlcm5hbCIpIHx8CisgICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxl
ZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfaW1hZ2VfYmFzZSIpIHx8CisgICAgICAg
ICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9L
SFJfZ2xfcmVuZGVyYnVmZmVyX2ltYWdlIikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQKKyAg
ICAgICAgICAgIDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBPRVNfRUdMX2ltYWdlLCBPRVNfRUdM
X2ltYWdlX2V4dGVybmFsLCBFR0xfS0hSX2ltYWdlX2Jhc2Ugb3IgIgorICAgICAgICAgICAgICAg
IkVHTF9LSFJfZ2xfcmVuZGVyYnVmZmVyX2ltYWdlIGlzIG5vdCBhdmFpbGFibGUuIgorICAgICAg
ICAgICAgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR0x1Ynl0
ZSBkYXRhWzRdID0gezI1NSwgMCwgMjU1LCAyNTV9OworCisgICAgLy8gQ3JlYXRlIHRoZSBJbWFn
ZQorICAgIEdMdWludCBzb3VyY2U7CisgICAgRUdMSW1hZ2VLSFIgaW1hZ2U7CisgICAgY3JlYXRl
RUdMSW1hZ2VSZW5kZXJidWZmZXJTb3VyY2UoMSwgMSwgR0xfUkdCQThfT0VTLCBkYXRhLCAmc291
cmNlLCAmaW1hZ2UpOworCisgICAgLy8gQ3JlYXRlIHRoZSB0YXJnZXQKKyAgICBHTHVpbnQgdGFy
Z2V0OworICAgIGNyZWF0ZUVHTEltYWdlVGFyZ2V0VGV4dHVyZUV4dGVybmFsKGltYWdlLCAmdGFy
Z2V0KTsKKworICAgIC8vIEV4cGVjdCB0aGF0IHRoZSB0YXJnZXQgdGV4dHVyZSBoYXMgdGhlIHNh
bWUgY29sb3IgYXMgdGhlIHNvdXJjZSB0ZXh0dXJlCisgICAgdmVyaWZ5UmVzdWx0c0V4dGVybmFs
KHRhcmdldCwgZGF0YSk7CisKKyAgICAvLyBDbGVhbiB1cAorICAgIGdsRGVsZXRlUmVuZGVyYnVm
ZmVycygxLCAmc291cmNlKTsKKyAgICBlZ2xEZXN0cm95SW1hZ2VLSFIod2luZG93LT5nZXREaXNw
bGF5KCksIGltYWdlKTsKKyAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0YXJnZXQpOworfQorCisv
LyBUZXN0IHJlbmRlcmJ1ZmZlciAtPiBleHRlcm5hbCB0ZXh0dXJlIEVHTCBpbWFnZXMgdXNpbmcg
RVNTTDMgc2hhZGVycy4KK1RFU1RfUChJbWFnZVRlc3RFUzMsIFNvdXJjZVJlbmRlcmJ1ZmZlclRh
cmdldFRleHR1cmVFeHRlcm5hbEVTU0wzKQoreworICAgIEVHTFdpbmRvdyAqd2luZG93ID0gZ2V0
RUdMV2luZG93KCk7CisgICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJPRVNfRUdMX2ltYWdlIikg
fHwgIWV4dGVuc2lvbkVuYWJsZWQoIk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWxfZXNzbDMiKSB8fAor
ICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCks
ICJFR0xfS0hSX2ltYWdlX2Jhc2UiKSB8fAorICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVu
YWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2dsX3JlbmRlcmJ1ZmZlcl9pbWFn
ZSIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0CisgICAgICAgICAgICA8PCAiVGVzdCBza2lw
cGVkIGJlY2F1c2UgT0VTX0VHTF9pbWFnZSwgT0VTX0VHTF9pbWFnZV9leHRlcm5hbCwgRUdMX0tI
Ul9pbWFnZV9iYXNlIG9yICIKKyAgICAgICAgICAgICAgICJFR0xfS0hSX2dsX3JlbmRlcmJ1ZmZl
cl9pbWFnZSBpcyBub3QgYXZhaWxhYmxlLiIKKyAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdMdWJ5dGUgZGF0YVs0XSA9IHsyNTUsIDAsIDI1
NSwgMjU1fTsKKworICAgIC8vIENyZWF0ZSB0aGUgSW1hZ2UKKyAgICBHTHVpbnQgc291cmNlOwor
ICAgIEVHTEltYWdlS0hSIGltYWdlOworICAgIGNyZWF0ZUVHTEltYWdlUmVuZGVyYnVmZmVyU291
cmNlKDEsIDEsIEdMX1JHQkE4X09FUywgZGF0YSwgJnNvdXJjZSwgJmltYWdlKTsKKworICAgIC8v
IENyZWF0ZSB0aGUgdGFyZ2V0CisgICAgR0x1aW50IHRhcmdldDsKKyAgICBjcmVhdGVFR0xJbWFn
ZVRhcmdldFRleHR1cmVFeHRlcm5hbChpbWFnZSwgJnRhcmdldCk7CisKKyAgICAvLyBFeHBlY3Qg
dGhhdCB0aGUgdGFyZ2V0IHRleHR1cmUgaGFzIHRoZSBzYW1lIGNvbG9yIGFzIHRoZSBzb3VyY2Ug
dGV4dHVyZQorICAgIHZlcmlmeVJlc3VsdHNFeHRlcm5hbEVTU0wzKHRhcmdldCwgZGF0YSk7CisK
KyAgICAvLyBDbGVhbiB1cAorICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmc291cmNlKTsK
KyAgICBlZ2xEZXN0cm95SW1hZ2VLSFIod2luZG93LT5nZXREaXNwbGF5KCksIGltYWdlKTsKKyAg
ICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0YXJnZXQpOworfQorCitURVNUX1AoSW1hZ2VUZXN0LCBT
b3VyY2VSZW5kZXJidWZmZXJUYXJnZXRSZW5kZXJidWZmZXIpCit7CisgICAgRUdMV2luZG93ICp3
aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKKyAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIk9FU19F
R0xfaW1hZ2UiKSB8fAorICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93
LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2ltYWdlX2Jhc2UiKSB8fAorICAgICAgICAhZWdsRGlz
cGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2dsX3Jl
bmRlcmJ1ZmZlcl9pbWFnZSIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNr
aXBwZWQgYmVjYXVzZSBPRVNfRUdMX2ltYWdlLCBFR0xfS0hSX2ltYWdlX2Jhc2Ugb3IgIgorICAg
ICAgICAgICAgICAgICAgICAgIkVHTF9LSFJfZ2xfcmVuZGVyYnVmZmVyX2ltYWdlIGlzIG5vdCBh
dmFpbGFibGUuIgorICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgR0x1Ynl0ZSBkYXRhWzRdID0gezI1NSwgMCwgMjU1LCAyNTV9Owor
CisgICAgLy8gQ3JlYXRlIHRoZSBJbWFnZQorICAgIEdMdWludCBzb3VyY2U7CisgICAgRUdMSW1h
Z2VLSFIgaW1hZ2U7CisgICAgY3JlYXRlRUdMSW1hZ2VSZW5kZXJidWZmZXJTb3VyY2UoMSwgMSwg
R0xfUkdCQThfT0VTLCBkYXRhLCAmc291cmNlLCAmaW1hZ2UpOworCisgICAgLy8gQ3JlYXRlIHRo
ZSB0YXJnZXQKKyAgICBHTHVpbnQgdGFyZ2V0OworICAgIGNyZWF0ZUVHTEltYWdlVGFyZ2V0UmVu
ZGVyYnVmZmVyKGltYWdlLCAmdGFyZ2V0KTsKKworICAgIC8vIEV4cGVjdCB0aGF0IHRoZSB0YXJn
ZXQgcmVuZGVyYnVmZmVyIGhhcyB0aGUgc2FtZSBjb2xvciBhcyB0aGUgc291cmNlIHRleHR1cmUK
KyAgICB2ZXJpZnlSZXN1bHRzUmVuZGVyYnVmZmVyKHRhcmdldCwgZGF0YSk7CisKKyAgICAvLyBD
bGVhbiB1cAorICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmc291cmNlKTsKKyAgICBlZ2xE
ZXN0cm95SW1hZ2VLSFIod2luZG93LT5nZXREaXNwbGF5KCksIGltYWdlKTsKKyAgICBnbERlbGV0
ZVJlbmRlcmJ1ZmZlcnMoMSwgJnRhcmdldCk7Cit9CisKKy8vIERlbGV0ZSB0aGUgc291cmNlIHRl
eHR1cmUgYW5kIEVHTCBpbWFnZS4gIFRoZSBpbWFnZSB0YXJnZXRzIHNob3VsZCBzdGlsbCBoYXZl
IHRoZSBzYW1lIGRhdGEKKy8vIGJlY2F1c2UKKy8vIHRoZXkgaG9sZCByZWZzIHRvIHRoZSBpbWFn
ZS4KK1RFU1RfUChJbWFnZVRlc3QsIERlbGV0aW9uKQoreworICAgIEVHTFdpbmRvdyAqd2luZG93
ID0gZ2V0RUdMV2luZG93KCk7CisgICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJPRVNfRUdMX2lt
YWdlIikgfHwKKyAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0
RGlzcGxheSgpLCAiRUdMX0tIUl9pbWFnZV9iYXNlIikgfHwKKyAgICAgICAgIWVnbERpc3BsYXlF
eHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9nbF90ZXh0dXJl
XzJEX2ltYWdlIikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBi
ZWNhdXNlIE9FU19FR0xfaW1hZ2UsIEVHTF9LSFJfaW1hZ2VfYmFzZSBvciAiCisgICAgICAgICAg
ICAgICAgICAgICAiRUdMX0tIUl9nbF90ZXh0dXJlXzJEX2ltYWdlIGlzIG5vdCBhdmFpbGFibGUu
IgorICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgR0x1Ynl0ZSBvcmlnaW5hbERhdGFbNF0gPSB7MjU1LCAwLCAyNTUsIDI1NX07Cisg
ICAgR0x1Ynl0ZSB1cGRhdGVEYXRhWzRdICAgPSB7MCwgMjU1LCAwLCAyNTV9OworCisgICAgLy8g
Q3JlYXRlIHRoZSBJbWFnZQorICAgIEdMdWludCBzb3VyY2U7CisgICAgRUdMSW1hZ2VLSFIgaW1h
Z2U7CisgICAgY3JlYXRlRUdMSW1hZ2UyRFRleHR1cmVTb3VyY2UoMSwgMSwgR0xfUkdCQSwgR0xf
VU5TSUdORURfQllURSwgb3JpZ2luYWxEYXRhLCAmc291cmNlLCAmaW1hZ2UpOworCisgICAgLy8g
Q3JlYXRlIG11bHRpcGxlIHRhcmdldHMKKyAgICBHTHVpbnQgdGFyZ2V0VGV4dHVyZTsKKyAgICBj
cmVhdGVFR0xJbWFnZVRhcmdldFRleHR1cmUyRChpbWFnZSwgJnRhcmdldFRleHR1cmUpOworCisg
ICAgR0x1aW50IHRhcmdldFJlbmRlcmJ1ZmZlcjsKKyAgICBjcmVhdGVFR0xJbWFnZVRhcmdldFJl
bmRlcmJ1ZmZlcihpbWFnZSwgJnRhcmdldFJlbmRlcmJ1ZmZlcik7CisKKyAgICAvLyBEZWxldGUg
dGhlIHNvdXJjZSB0ZXh0dXJlCisgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmc291cmNlKTsKKyAg
ICBzb3VyY2UgPSAwOworCisgICAgLy8gRXhwZWN0IHRoYXQgYm90aCB0aGUgdGFyZ2V0cyBoYXZl
IHRoZSBvcmlnaW5hbCBkYXRhCisgICAgdmVyaWZ5UmVzdWx0czJEKHRhcmdldFRleHR1cmUsIG9y
aWdpbmFsRGF0YSk7CisgICAgdmVyaWZ5UmVzdWx0c1JlbmRlcmJ1ZmZlcih0YXJnZXRSZW5kZXJi
dWZmZXIsIG9yaWdpbmFsRGF0YSk7CisKKyAgICAvLyBVcGRhdGUgdGhlIGRhdGEgb2YgdGhlIHRh
cmdldAorICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGFyZ2V0VGV4dHVyZSk7Cisg
ICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDEsIDEsIEdMX1JHQkEs
IEdMX1VOU0lHTkVEX0JZVEUsIHVwZGF0ZURhdGEpOworCisgICAgLy8gRXhwZWN0IHRoYXQgYm90
aCB0YXJnZXRzIGhhdmUgdGhlIHVwZGF0ZWQgZGF0YQorICAgIHZlcmlmeVJlc3VsdHMyRCh0YXJn
ZXRUZXh0dXJlLCB1cGRhdGVEYXRhKTsKKyAgICB2ZXJpZnlSZXN1bHRzUmVuZGVyYnVmZmVyKHRh
cmdldFJlbmRlcmJ1ZmZlciwgdXBkYXRlRGF0YSk7CisKKyAgICAvLyBEZWxldGUgdGhlIEVHTCBp
bWFnZQorICAgIGVnbERlc3Ryb3lJbWFnZUtIUih3aW5kb3ctPmdldERpc3BsYXkoKSwgaW1hZ2Up
OworICAgIGltYWdlID0gRUdMX05PX0lNQUdFX0tIUjsKKworICAgIC8vIFVwZGF0ZSB0aGUgZGF0
YSBvZiB0aGUgdGFyZ2V0IGJhY2sgdG8gdGhlIG9yaWdpbmFsIGRhdGEKKyAgICBnbEJpbmRUZXh0
dXJlKEdMX1RFWFRVUkVfMkQsIHRhcmdldFRleHR1cmUpOworICAgIGdsVGV4U3ViSW1hZ2UyRChH
TF9URVhUVVJFXzJELCAwLCAwLCAwLCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBv
cmlnaW5hbERhdGEpOworCisgICAgLy8gRXhwZWN0IHRoYXQgYm90aCB0YXJnZXRzIGhhdmUgdGhl
IG9yaWdpbmFsIGRhdGEgYWdhaW4KKyAgICB2ZXJpZnlSZXN1bHRzMkQodGFyZ2V0VGV4dHVyZSwg
b3JpZ2luYWxEYXRhKTsKKyAgICB2ZXJpZnlSZXN1bHRzUmVuZGVyYnVmZmVyKHRhcmdldFJlbmRl
cmJ1ZmZlciwgb3JpZ2luYWxEYXRhKTsKKworICAgIC8vIENsZWFuIHVwCisgICAgZ2xEZWxldGVU
ZXh0dXJlcygxLCAmdGFyZ2V0VGV4dHVyZSk7CisgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEs
ICZ0YXJnZXRSZW5kZXJidWZmZXIpOworfQorCitURVNUX1AoSW1hZ2VUZXN0LCBNaXBMZXZlbHMp
Cit7CisgICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKKyAgICBpZiAoIWV4
dGVuc2lvbkVuYWJsZWQoIk9FU19FR0xfaW1hZ2UiKSB8fAorICAgICAgICAhZWdsRGlzcGxheUV4
dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2ltYWdlX2Jhc2Ui
KSB8fAorICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNw
bGF5KCksICJFR0xfS0hSX2dsX3RleHR1cmVfMkRfaW1hZ2UiKSkKKyAgICB7CisgICAgICAgIHN0
ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgT0VTX0VHTF9pbWFnZSwgRUdMX0tIUl9p
bWFnZV9iYXNlIG9yICIKKyAgICAgICAgICAgICAgICAgICAgICJFR0xfS0hSX2dsX3RleHR1cmVf
MkRfaW1hZ2UgaXMgbm90IGF2YWlsYWJsZS4iCisgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVu
ZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCBzaXplX3QgbWlwTGV2ZWxz
ICAgPSAzOworICAgIGNvbnN0IHNpemVfdCB0ZXh0dXJlU2l6ZSA9IDQ7CisgICAgc3RkOjp2ZWN0
b3I8R0x1aW50PiBtaXAwRGF0YSh0ZXh0dXJlU2l6ZSAqIHRleHR1cmVTaXplLCAweEZGRkYwMDAw
KTsKKyAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IG1pcDFEYXRhKG1pcDBEYXRhLnNpemUoKSA8PCAx
LCAweEZGMDBGRjAwKTsKKyAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IG1pcDJEYXRhKG1pcDBEYXRh
LnNpemUoKSA8PCAyLCAweEZGMDAwMEZGKTsKKyAgICBHTHVieXRlICpkYXRhW21pcExldmVsc10g
PSB7CisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0x1Ynl0ZSAqPigmbWlwMERhdGFbMF0pLCBy
ZWludGVycHJldF9jYXN0PEdMdWJ5dGUgKj4oJm1pcDFEYXRhWzBdKSwKKyAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDxHTHVieXRlICo+KCZtaXAyRGF0YVswXSksCisgICAgfTsKKworICAgIEdMdWlu
dCBzb3VyY2U7CisgICAgZ2xHZW5UZXh0dXJlcygxLCAmc291cmNlKTsKKyAgICBnbEJpbmRUZXh0
dXJlKEdMX1RFWFRVUkVfMkQsIHNvdXJjZSk7CisKKyAgICBmb3IgKHNpemVfdCBsZXZlbCA9IDA7
IGxldmVsIDwgbWlwTGV2ZWxzOyBsZXZlbCsrKQorICAgIHsKKyAgICAgICAgZ2xUZXhJbWFnZTJE
KEdMX1RFWFRVUkVfMkQsIHN0YXRpY19jYXN0PEdMaW50PihsZXZlbCksIEdMX1JHQkEsIHRleHR1
cmVTaXplID4+IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZVNpemUgPj4gbGV2
ZWwsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGRhdGFbbGV2ZWxdKTsKKyAgICB9CisK
KyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIGZvciAoc2l6ZV90IGxldmVsID0gMDsg
bGV2ZWwgPCBtaXBMZXZlbHM7IGxldmVsKyspCisgICAgeworICAgICAgICAvLyBDcmVhdGUgdGhl
IEltYWdlCisgICAgICAgIEVHTGludCBhdHRyaWJzW10gPSB7CisgICAgICAgICAgICBFR0xfR0xf
VEVYVFVSRV9MRVZFTF9LSFIsIHN0YXRpY19jYXN0PEVHTGludD4obGV2ZWwpLCBFR0xfTk9ORSwK
KyAgICAgICAgfTsKKyAgICAgICAgRUdMSW1hZ2VLSFIgaW1hZ2UgPQorICAgICAgICAgICAgZWds
Q3JlYXRlSW1hZ2VLSFIod2luZG93LT5nZXREaXNwbGF5KCksIHdpbmRvdy0+Z2V0Q29udGV4dCgp
LCBFR0xfR0xfVEVYVFVSRV8yRF9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWludGVycHJldEhlbHBlcjxFR0xDbGllbnRCdWZmZXI+KHNvdXJjZSksIGF0dHJpYnMpOworICAg
ICAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKworICAgICAgICAvLyBDcmVhdGUgYSB0ZXh0dXJl
IGFuZCByZW5kZXJidWZmZXIgdGFyZ2V0CisgICAgICAgIEdMdWludCB0ZXh0dXJlVGFyZ2V0Owor
ICAgICAgICBjcmVhdGVFR0xJbWFnZVRhcmdldFRleHR1cmUyRChpbWFnZSwgJnRleHR1cmVUYXJn
ZXQpOworCisgICAgICAgIC8vIERpc2FibGUgbWlwbWFwcGluZworICAgICAgICBnbEJpbmRUZXh0
dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmVUYXJnZXQpOworICAgICAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAg
ICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRF
UiwgR0xfTkVBUkVTVCk7CisKKyAgICAgICAgR0x1aW50IHJlbmRlcmJ1ZmZlclRhcmdldDsKKyAg
ICAgICAgY3JlYXRlRUdMSW1hZ2VUYXJnZXRSZW5kZXJidWZmZXIoaW1hZ2UsICZyZW5kZXJidWZm
ZXJUYXJnZXQpOworCisgICAgICAgIC8vIEV4cGVjdCB0aGF0IHRoZSB0YXJnZXRzIGhhdmUgdGhl
IHNhbWUgY29sb3IgYXMgdGhlIHNvdXJjZSB0ZXh0dXJlCisgICAgICAgIHZlcmlmeVJlc3VsdHMy
RCh0ZXh0dXJlVGFyZ2V0LCBkYXRhW2xldmVsXSk7CisgICAgICAgIHZlcmlmeVJlc3VsdHNSZW5k
ZXJidWZmZXIocmVuZGVyYnVmZmVyVGFyZ2V0LCBkYXRhW2xldmVsXSk7CisKKyAgICAgICAgLy8g
Q2xlYW4gdXAKKyAgICAgICAgZWdsRGVzdHJveUltYWdlS0hSKHdpbmRvdy0+Z2V0RGlzcGxheSgp
LCBpbWFnZSk7CisgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRleHR1cmVUYXJnZXQpOwor
ICAgICAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJnJlbmRlcmJ1ZmZlclRhcmdldCk7Cisg
ICAgfQorCisgICAgLy8gQ2xlYW4gdXAKKyAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZzb3VyY2Up
OworfQorCisvLyBSZXNwZWNpZnkgdGhlIHNvdXJjZSB0ZXh0dXJlLCBvcnBoYW5pbmcgaXQuICBU
aGUgdGFyZ2V0IHRleHR1cmUgc2hvdWxkIG5vdCBoYXZlIHVwZGF0ZWQgZGF0YS4KK1RFU1RfUChJ
bWFnZVRlc3QsIFJlc3BlY2lmaWNhdGlvbikKK3sKKyAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdl
dEVHTFdpbmRvdygpOworICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiT0VTX0VHTF9pbWFnZSIp
IHx8CisgICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3Bs
YXkoKSwgIkVHTF9LSFJfaW1hZ2VfYmFzZSIpIHx8CisgICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5z
aW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9p
bWFnZSIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVz
ZSBPRVNfRUdMX2ltYWdlLCBFR0xfS0hSX2ltYWdlX2Jhc2Ugb3IgIgorICAgICAgICAgICAgICAg
ICAgICAgIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSBpcyBub3QgYXZhaWxhYmxlLiIKKyAg
ICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIEdMdWJ5dGUgb3JpZ2luYWxEYXRhWzRdID0gezI1NSwgMCwgMjU1LCAyNTV9OworICAgIEdM
dWJ5dGUgdXBkYXRlRGF0YVs0XSAgID0gezAsIDI1NSwgMCwgMjU1fTsKKworICAgIC8vIENyZWF0
ZSB0aGUgSW1hZ2UKKyAgICBHTHVpbnQgc291cmNlOworICAgIEVHTEltYWdlS0hSIGltYWdlOwor
ICAgIGNyZWF0ZUVHTEltYWdlMkRUZXh0dXJlU291cmNlKDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lH
TkVEX0JZVEUsIG9yaWdpbmFsRGF0YSwgJnNvdXJjZSwgJmltYWdlKTsKKworICAgIC8vIENyZWF0
ZSB0aGUgdGFyZ2V0CisgICAgR0x1aW50IHRhcmdldDsKKyAgICBjcmVhdGVFR0xJbWFnZVRhcmdl
dFRleHR1cmUyRChpbWFnZSwgJnRhcmdldCk7CisKKyAgICAvLyBSZXNwZWNpZnkgc291cmNlCisg
ICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBzb3VyY2UpOworICAgIGdsVGV4SW1hZ2Uy
RChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxLCAxLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05F
RF9CWVRFLCB1cGRhdGVEYXRhKTsKKworICAgIC8vIEV4cGVjdCB0aGF0IHRoZSB0YXJnZXQgdGV4
dHVyZSBoYXMgdGhlIG9yaWdpbmFsIGRhdGEKKyAgICB2ZXJpZnlSZXN1bHRzMkQodGFyZ2V0LCBv
cmlnaW5hbERhdGEpOworCisgICAgLy8gRXhwZWN0IHRoYXQgdGhlIHNvdXJjZSB0ZXh0dXJlIGhh
cyB0aGUgdXBkYXRlZCBkYXRhCisgICAgdmVyaWZ5UmVzdWx0czJEKHNvdXJjZSwgdXBkYXRlRGF0
YSk7CisKKyAgICAvLyBDbGVhbiB1cAorICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnNvdXJjZSk7
CisgICAgZWdsRGVzdHJveUltYWdlS0hSKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCBpbWFnZSk7Cisg
ICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGFyZ2V0KTsKK30KKworLy8gRmlyc3QgcmVuZGVyIHRv
IGEgdGFyZ2V0IHRleHR1cmUsIHRoZW4gcmVzcGVjaWZ5IHRoZSBzb3VyY2UgdGV4dHVyZSwgb3Jw
aGFuaW5nIGl0LgorLy8gVGhlIHRhcmdldCB0ZXh0dXJlJ3MgRkJPIHNob3VsZCBiZSBub3RpZmll
ZCBvZiB0aGUgdGFyZ2V0IHRleHR1cmUncyBvcnBoYW5pbmcuCitURVNUX1AoSW1hZ2VUZXN0LCBS
ZXNwZWNpZmljYXRpb25XaXRoRkJPKQoreworICAgIEVHTFdpbmRvdyAqd2luZG93ID0gZ2V0RUdM
V2luZG93KCk7CisgICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJPRVNfRUdMX2ltYWdlIikgfHwK
KyAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgp
LCAiRUdMX0tIUl9pbWFnZV9iYXNlIikgfHwKKyAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25F
bmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9nbF90ZXh0dXJlXzJEX2ltYWdl
IikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIE9F
U19FR0xfaW1hZ2UsIEVHTF9LSFJfaW1hZ2VfYmFzZSBvciAiCisgICAgICAgICAgICAgICAgICAg
ICAiRUdMX0tIUl9nbF90ZXh0dXJlXzJEX2ltYWdlIGlzIG5vdCBhdmFpbGFibGUuIgorICAgICAg
ICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Ly8gU2ltcGxlIHNoYWRlcgorICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2ZXJ0ZXhTb3VyY2UgPQor
ICAgICAgICAiYXR0cmlidXRlIHZlYzIgcG9zaXRpb247XG4iCisgICAgICAgICJ2b2lkIG1haW4o
KVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3Np
dGlvbiwgMCwgMSk7XG4iCisgICAgICAgICJ9IjsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJh
Z21lbnRTb3VyY2UgPQorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAg
ICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMC4wLCAxLjAsIDEuMCk7XG4iCisg
ICAgICAgICJ9IjsKKyAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNv
dXJjZSwgZnJhZ21lbnRTb3VyY2UpOworICAgIEFTU0VSVF9ORSgwdSwgcHJvZ3JhbSk7CisKKyAg
ICBHTHVieXRlIG9yaWdpbmFsRGF0YVs0XSA9IHsyNTUsIDAsIDI1NSwgMjU1fTsKKyAgICBHTHVi
eXRlIHVwZGF0ZURhdGFbNF0gICA9IHswLCAyNTUsIDAsIDI1NX07CisKKyAgICAvLyBDcmVhdGUg
dGhlIEltYWdlCisgICAgR0x1aW50IHNvdXJjZTsKKyAgICBFR0xJbWFnZUtIUiBpbWFnZTsKKyAg
ICBjcmVhdGVFR0xJbWFnZTJEVGV4dHVyZVNvdXJjZSgxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05F
RF9CWVRFLCBvcmlnaW5hbERhdGEsICZzb3VyY2UsICZpbWFnZSk7CisKKyAgICAvLyBDcmVhdGUg
dGhlIHRhcmdldAorICAgIEdMdWludCB0YXJnZXQ7CisgICAgY3JlYXRlRUdMSW1hZ2VUYXJnZXRU
ZXh0dXJlMkQoaW1hZ2UsICZ0YXJnZXQpOworCisgICAgLy8gUmVuZGVyIHRvIHRoZSB0YXJnZXQg
dGV4dHVyZQorICAgIEdMdWludCBmYm87CisgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJmZibyk7
CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIGZibyk7CisgICAgZ2xGcmFt
ZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdM
X1RFWFRVUkVfMkQsIHRhcmdldCwgMCk7CisgICAgZHJhd1F1YWQocHJvZ3JhbSwgInBvc2l0aW9u
IiwgMC41Zik7CisgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDAsIDAsIDI1NSwgMjU1KTsKKwor
ICAgIC8vIFJlc3BlY2lmeSBzb3VyY2Ugd2l0aCBzYW1lIHBhcmFtZXRlcnMuIFRoaXMgc2hvdWxk
IG5vdCBjaGFuZ2UgdGhlIHRleHR1cmUgc3RvcmFnZSBpbiBEM0QxMS4KKyAgICBnbEJpbmRUZXh0
dXJlKEdMX1RFWFRVUkVfMkQsIHNvdXJjZSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVf
MkQsIDAsIEdMX1JHQkEsIDEsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHVwZGF0
ZURhdGEpOworCisgICAgLy8gRXhwZWN0IHRoYXQgdGhlIHNvdXJjZSB0ZXh0dXJlIGhhcyB0aGUg
dXBkYXRlZCBkYXRhCisgICAgdmVyaWZ5UmVzdWx0czJEKHNvdXJjZSwgdXBkYXRlRGF0YSk7CisK
KyAgICAvLyBSZW5kZXIgdG8gdGhlIHRhcmdldCB0ZXh0dXJlIGFnYWluIGFuZCB2ZXJpZnkgaXQg
Z2V0cyB0aGUgcmVuZGVyZWQgcGl4ZWxzLgorICAgIGRyYXdRdWFkKHByb2dyYW0sICJwb3NpdGlv
biIsIDAuNWYpOworICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAwLCAwLCAyNTUsIDI1NSk7CisK
KyAgICAvLyBDbGVhbiB1cAorICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnNvdXJjZSk7CisgICAg
ZWdsRGVzdHJveUltYWdlS0hSKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCBpbWFnZSk7CisgICAgZ2xE
ZWxldGVUZXh0dXJlcygxLCAmdGFyZ2V0KTsKKyAgICBnbERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7
CisgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZibyk7Cit9CisKKy8vIFRlc3QgdGhhdCBy
ZXNwZWNpZnlpbmcgYSBsZXZlbCBvZiB0aGUgdGFyZ2V0IHRleHR1cmUgb3JwaGFucyBpdCBhbmQg
a2VlcHMgYSBjb3B5IG9mIHRoZSBFR0xpbWFnZQorLy8gZGF0YQorVEVTVF9QKEltYWdlVGVzdCwg
UmVzcGVjaWZpY2F0aW9uT2ZPdGhlckxldmVsKQoreworICAgIEVHTFdpbmRvdyAqd2luZG93ID0g
Z2V0RUdMV2luZG93KCk7CisgICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJPRVNfRUdMX2ltYWdl
IikgfHwKKyAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlz
cGxheSgpLCAiRUdMX0tIUl9pbWFnZV9iYXNlIikgfHwKKyAgICAgICAgIWVnbERpc3BsYXlFeHRl
bnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9nbF90ZXh0dXJlXzJE
X2ltYWdlIikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNh
dXNlIE9FU19FR0xfaW1hZ2UsIEVHTF9LSFJfaW1hZ2VfYmFzZSBvciAiCisgICAgICAgICAgICAg
ICAgICAgICAiRUdMX0tIUl9nbF90ZXh0dXJlXzJEX2ltYWdlIGlzIG5vdCBhdmFpbGFibGUuIgor
ICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgR0x1Ynl0ZSBvcmlnaW5hbERhdGFbMiAqIDIgKiA0XSA9IHsKKyAgICAgICAgMjU1LCAw
LCAyNTUsIDI1NSwgMjU1LCAwLCAyNTUsIDI1NSwgMjU1LCAwLCAyNTUsIDI1NSwgMjU1LCAwLCAy
NTUsIDI1NSwKKyAgICB9OworCisgICAgR0x1Ynl0ZSB1cGRhdGVEYXRhWzIgKiAyICogNF0gPSB7
CisgICAgICAgIDAsIDI1NSwgMCwgMjU1LCAwLCAyNTUsIDAsIDI1NSwgMCwgMjU1LCAwLCAyNTUs
IDAsIDI1NSwgMCwgMjU1LAorICAgIH07CisKKyAgICAvLyBDcmVhdGUgdGhlIEltYWdlCisgICAg
R0x1aW50IHNvdXJjZTsKKyAgICBFR0xJbWFnZUtIUiBpbWFnZTsKKyAgICBjcmVhdGVFR0xJbWFn
ZTJEVGV4dHVyZVNvdXJjZSgyLCAyLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBvcmlnaW5h
bERhdGEsICZzb3VyY2UsICZpbWFnZSk7CisKKyAgICAvLyBDcmVhdGUgdGhlIHRhcmdldAorICAg
IEdMdWludCB0YXJnZXQ7CisgICAgY3JlYXRlRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkQoaW1hZ2Us
ICZ0YXJnZXQpOworCisgICAgLy8gRXhwZWN0IHRoYXQgdGhlIHRhcmdldCBhbmQgc291cmNlIHRl
eHR1cmVzIGhhdmUgdGhlIG9yaWdpbmFsIGRhdGEKKyAgICB2ZXJpZnlSZXN1bHRzMkQoc291cmNl
LCBvcmlnaW5hbERhdGEpOworICAgIHZlcmlmeVJlc3VsdHMyRCh0YXJnZXQsIG9yaWdpbmFsRGF0
YSk7CisKKyAgICAvLyBBZGQgYSBuZXcgbWlwTGV2ZWwgdG8gdGhlIHRhcmdldCwgb3JwaGFuaW5n
IGl0CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0YXJnZXQpOworICAgIGdsVGV4
SW1hZ2UyRChHTF9URVhUVVJFXzJELCAxLCBHTF9SR0JBLCAxLCAxLCAwLCBHTF9SR0JBLCBHTF9V
TlNJR05FRF9CWVRFLCBvcmlnaW5hbERhdGEpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwor
CisgICAgLy8gRXhwZWN0IHRoYXQgdGhlIHRhcmdldCBhbmQgc291cmNlIHRleHR1cmVzIHN0aWxs
IGhhdmUgdGhlIG9yaWdpbmFsIGRhdGEKKyAgICB2ZXJpZnlSZXN1bHRzMkQoc291cmNlLCBvcmln
aW5hbERhdGEpOworICAgIHZlcmlmeVJlc3VsdHMyRCh0YXJnZXQsIG9yaWdpbmFsRGF0YSk7CisK
KyAgICAvLyBVcGRhdGUgdGhlIHNvdXJjZSdzIGRhdGEKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RF
WFRVUkVfMkQsIHNvdXJjZSk7CisgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAs
IDAsIDAsIDIsIDIsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHVwZGF0ZURhdGEpOworCisg
ICAgLy8gRXhwZWN0IHRoYXQgdGhlIHRhcmdldCBzdGlsbCBoYXMgdGhlIG9yaWdpbmFsIGRhdGEg
YW5kIHNvdXJjZSBoYXMgdGhlIHVwZGF0ZWQgZGF0YQorICAgIHZlcmlmeVJlc3VsdHMyRChzb3Vy
Y2UsIHVwZGF0ZURhdGEpOworICAgIHZlcmlmeVJlc3VsdHMyRCh0YXJnZXQsIG9yaWdpbmFsRGF0
YSk7CisKKyAgICAvLyBDbGVhbiB1cAorICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnNvdXJjZSk7
CisgICAgZWdsRGVzdHJveUltYWdlS0hSKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCBpbWFnZSk7Cisg
ICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGFyZ2V0KTsKK30KKworLy8gVXBkYXRlIHRoZSBkYXRh
IG9mIHRoZSBzb3VyY2UgYW5kIHRhcmdldCB0ZXh0dXJlcy4gIEFsbCBpbWFnZSBzaWJsaW5ncyBz
aG91bGQgaGF2ZSB0aGUgbmV3IGRhdGEuCitURVNUX1AoSW1hZ2VUZXN0LCBVcGRhdGVkRGF0YSkK
K3sKKyAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygpOworICAgIGlmICghZXh0
ZW5zaW9uRW5hYmxlZCgiT0VTX0VHTF9pbWFnZSIpIHx8CisgICAgICAgICFlZ2xEaXNwbGF5RXh0
ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfaW1hZ2VfYmFzZSIp
IHx8CisgICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3Bs
YXkoKSwgIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSIpKQorICAgIHsKKyAgICAgICAgc3Rk
Ojpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBPRVNfRUdMX2ltYWdlLCBFR0xfS0hSX2lt
YWdlX2Jhc2Ugb3IgIgorICAgICAgICAgICAgICAgICAgICAgIkVHTF9LSFJfZ2xfdGV4dHVyZV8y
RF9pbWFnZSBpcyBub3QgYXZhaWxhYmxlLiIKKyAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5k
bDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdMdWJ5dGUgb3JpZ2luYWxEYXRhWzRd
ID0gezI1NSwgMCwgMjU1LCAyNTV9OworICAgIEdMdWJ5dGUgdXBkYXRlRGF0YVs0XSAgID0gezAs
IDI1NSwgMCwgMjU1fTsKKworICAgIC8vIENyZWF0ZSB0aGUgSW1hZ2UKKyAgICBHTHVpbnQgc291
cmNlOworICAgIEVHTEltYWdlS0hSIGltYWdlOworICAgIGNyZWF0ZUVHTEltYWdlMkRUZXh0dXJl
U291cmNlKDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG9yaWdpbmFsRGF0YSwgJnNv
dXJjZSwgJmltYWdlKTsKKworICAgIC8vIENyZWF0ZSBtdWx0aXBsZSB0YXJnZXRzCisgICAgR0x1
aW50IHRhcmdldFRleHR1cmU7CisgICAgY3JlYXRlRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkQoaW1h
Z2UsICZ0YXJnZXRUZXh0dXJlKTsKKworICAgIEdMdWludCB0YXJnZXRSZW5kZXJidWZmZXI7Cisg
ICAgY3JlYXRlRUdMSW1hZ2VUYXJnZXRSZW5kZXJidWZmZXIoaW1hZ2UsICZ0YXJnZXRSZW5kZXJi
dWZmZXIpOworCisgICAgLy8gRXhwZWN0IHRoYXQgYm90aCB0aGUgc291cmNlIGFuZCB0YXJnZXRz
IGhhdmUgdGhlIG9yaWdpbmFsIGRhdGEKKyAgICB2ZXJpZnlSZXN1bHRzMkQoc291cmNlLCBvcmln
aW5hbERhdGEpOworICAgIHZlcmlmeVJlc3VsdHMyRCh0YXJnZXRUZXh0dXJlLCBvcmlnaW5hbERh
dGEpOworICAgIHZlcmlmeVJlc3VsdHNSZW5kZXJidWZmZXIodGFyZ2V0UmVuZGVyYnVmZmVyLCBv
cmlnaW5hbERhdGEpOworCisgICAgLy8gVXBkYXRlIHRoZSBkYXRhIG9mIHRoZSBzb3VyY2UKKyAg
ICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHNvdXJjZSk7CisgICAgZ2xUZXhTdWJJbWFn
ZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsIHVwZGF0ZURhdGEpOworCisgICAgLy8gRXhwZWN0IHRoYXQgYm90aCB0aGUgc291cmNlIGFu
ZCB0YXJnZXRzIGhhdmUgdGhlIHVwZGF0ZWQgZGF0YQorICAgIHZlcmlmeVJlc3VsdHMyRChzb3Vy
Y2UsIHVwZGF0ZURhdGEpOworICAgIHZlcmlmeVJlc3VsdHMyRCh0YXJnZXRUZXh0dXJlLCB1cGRh
dGVEYXRhKTsKKyAgICB2ZXJpZnlSZXN1bHRzUmVuZGVyYnVmZmVyKHRhcmdldFJlbmRlcmJ1ZmZl
ciwgdXBkYXRlRGF0YSk7CisKKyAgICAvLyBVcGRhdGUgdGhlIGRhdGEgb2YgdGhlIHRhcmdldCBi
YWNrIHRvIHRoZSBvcmlnaW5hbCBkYXRhCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJE
LCB0YXJnZXRUZXh0dXJlKTsKKyAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwg
MCwgMCwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgb3JpZ2luYWxEYXRhKTsKKwor
ICAgIC8vIEV4cGVjdCB0aGF0IGJvdGggdGhlIHNvdXJjZSBhbmQgdGFyZ2V0cyBoYXZlIHRoZSBv
cmlnaW5hbCBkYXRhIGFnYWluCisgICAgdmVyaWZ5UmVzdWx0czJEKHNvdXJjZSwgb3JpZ2luYWxE
YXRhKTsKKyAgICB2ZXJpZnlSZXN1bHRzMkQodGFyZ2V0VGV4dHVyZSwgb3JpZ2luYWxEYXRhKTsK
KyAgICB2ZXJpZnlSZXN1bHRzUmVuZGVyYnVmZmVyKHRhcmdldFJlbmRlcmJ1ZmZlciwgb3JpZ2lu
YWxEYXRhKTsKKworICAgIC8vIENsZWFuIHVwCisgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmc291
cmNlKTsKKyAgICBlZ2xEZXN0cm95SW1hZ2VLSFIod2luZG93LT5nZXREaXNwbGF5KCksIGltYWdl
KTsKKyAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0YXJnZXRUZXh0dXJlKTsKKyAgICBnbERlbGV0
ZVJlbmRlcmJ1ZmZlcnMoMSwgJnRhcmdldFJlbmRlcmJ1ZmZlcik7Cit9CisKKy8vIFVzZSB0aGlz
IHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hp
Y2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZQorLy8gdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2Fp
bnN0LgorQU5HTEVfSU5TVEFOVElBVEVfVEVTVChJbWFnZVRlc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgIEVTMl9EM0Q5KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAor
ICAgICAgICAgICAgICAgICAgICAgICBFUzNfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgRVMyX09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKCksCisg
ICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpLAorICAgICAgICAgICAgICAgICAg
ICAgICBFUzNfT1BFTkdMRVMoKSk7CitBTkdMRV9JTlNUQU5USUFURV9URVNUKEltYWdlVGVzdEVT
MywgRVMzX0QzRDExKCksIEVTM19PUEVOR0woKSwgRVMzX09QRU5HTEVTKCkpOworfQpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0luY29tcGxldGVUZXh0
dXJlVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsX3Rlc3RzL0luY29tcGxldGVUZXh0dXJlVGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0luY29tcGxldGVUZXh0
dXJlVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNzAgQEAKKy8vCisvLyBDb3B5
cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisK
KyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorCisjaW5jbHVkZSA8dmVjdG9yPgor
Cit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKK2NsYXNzIEluY29tcGxldGVUZXh0dXJlVGVzdCA6
IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIEluY29tcGxldGVUZXh0dXJl
VGVzdCgpCisgICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOworICAgICAgICBzZXRX
aW5kb3dIZWlnaHQoMTI4KTsKKyAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKKyAgICAgICAg
c2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKKyAg
ICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBT
ZXRVcCgpCisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7CisKKyAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQorICAgICAg
ICAoCisgICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisgICAgICAgICAgICBhdHRy
aWJ1dGUgdmVjNCBwb3NpdGlvbjsKKyAgICAgICAgICAgIHZhcnlpbmcgdmVjMiB0ZXhjb29yZDsK
KworICAgICAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOworICAgICAgICAgICAgICAgIHRleGNvb3JkID0gKHBv
c2l0aW9uLnh5ICogMC41KSArIDAuNTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VS
Q0UKKyAgICAgICAgKAorICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworICAgICAg
ICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdGV4OworICAgICAgICAgICAgdmFyeWluZyB2ZWMyIHRl
eGNvb3JkOworCisgICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh0ZXgsIHRleGNvb3JkKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFt
KHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOworICAgICAgICBpZiAo
bVByb2dyYW0gPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgRkFJTCgpIDw8ICJzaGFkZXIg
Y29tcGlsYXRpb24gZmFpbGVkLiI7CisgICAgICAgIH0KKworICAgICAgICBtVGV4dHVyZVVuaWZv
cm1Mb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidGV4Iik7CisgICAg
fQorCisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKKyAgICB7CisgICAgICAgIGdsRGVsZXRl
UHJvZ3JhbShtUHJvZ3JhbSk7CisKKyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOworICAg
IH0KKworICAgIHZvaWQgZmlsbFRleHR1cmVEYXRhKHN0ZDo6dmVjdG9yPEdMdWJ5dGU+ICZidWZm
ZXIsIEdMdWJ5dGUgciwgR0x1Ynl0ZSBnLCBHTHVieXRlIGIsIEdMdWJ5dGUgYSkKKyAgICB7Cisg
ICAgICAgIHNpemVfdCBjb3VudCA9IGJ1ZmZlci5zaXplKCkgLyA0OworICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGJ1ZmZl
cltpICogNCArIDBdID0gcjsKKyAgICAgICAgICAgIGJ1ZmZlcltpICogNCArIDFdID0gZzsKKyAg
ICAgICAgICAgIGJ1ZmZlcltpICogNCArIDJdID0gYjsKKyAgICAgICAgICAgIGJ1ZmZlcltpICog
NCArIDNdID0gYTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEdMdWludCBtUHJvZ3JhbTsKKyAg
ICBHTGludCBtVGV4dHVyZVVuaWZvcm1Mb2NhdGlvbjsKK307CisKK1RFU1RfUChJbmNvbXBsZXRl
VGV4dHVyZVRlc3QsIEluY29tcGxldGVUZXh0dXJlMkQpCit7CisgICAgR0x1aW50IHRleDsKKyAg
ICBnbEdlblRleHR1cmVzKDEsICZ0ZXgpOworICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJF
MCk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXgpOworCisgICAgZ2xVc2VQ
cm9ncmFtKG1Qcm9ncmFtKTsKKyAgICBnbFVuaWZvcm0xaShtVGV4dHVyZVVuaWZvcm1Mb2NhdGlv
biwgMCk7CisKKyAgICBjb25zdCBHTHNpemVpIHRleHR1cmVXaWR0aCA9IDI7CisgICAgY29uc3Qg
R0xzaXplaSB0ZXh0dXJlSGVpZ2h0ID0gMjsKKyAgICBzdGQ6OnZlY3RvcjxHTHVieXRlPiB0ZXh0
dXJlRGF0YSh0ZXh0dXJlV2lkdGggKiB0ZXh0dXJlSGVpZ2h0ICogNCk7CisgICAgZmlsbFRleHR1
cmVEYXRhKHRleHR1cmVEYXRhLCAyNTUsIDAsIDAsIDI1NSk7CisKKyAgICBnbFRleEltYWdlMkQo
R0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgdGV4dHVyZVdpZHRoLCB0ZXh0dXJlSGVpZ2h0LCAw
LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAmdGV4dHVyZURhdGFbMF0pOworICAgIGdsVGV4
UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJF
U1QpOworCisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworICAgIEVY
UEVDVF9QSVhFTF9FUSgwLCAwLCAyNTUsIDAsIDAsIDI1NSk7CisKKyAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVJfTUlQTUFQ
X0xJTkVBUik7CisKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Cisg
ICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDAsIDAsIDAsIDI1NSk7CisKKyAgICBnbFRleEltYWdl
MkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdCQSwgdGV4dHVyZVdpZHRoID4+IDEsIHRleHR1cmVI
ZWlnaHQgPj4gMSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgJnRleHR1cmVEYXRhWzBd
KTsKKworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICBFWFBF
Q1RfUElYRUxfRVEoMCwgMCwgMjU1LCAwLCAwLCAyNTUpOworCisgICAgZ2xEZWxldGVUZXh0dXJl
cygxLCAmdGV4KTsKK30KKworVEVTVF9QKEluY29tcGxldGVUZXh0dXJlVGVzdCwgVXBkYXRlVGV4
dHVyZSkKK3sKKyAgICBHTHVpbnQgdGV4OworICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleCk7Cisg
ICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RF
WFRVUkVfMkQsIHRleCk7CisKKyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworICAgIGdsVW5p
Zm9ybTFpKG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9uLCAwKTsKKworICAgIGNvbnN0IEdMc2l6ZWkg
cmVkVGV4dHVyZVdpZHRoID0gNjQ7CisgICAgY29uc3QgR0xzaXplaSByZWRUZXh0dXJlSGVpZ2h0
ID0gNjQ7CisgICAgc3RkOjp2ZWN0b3I8R0x1Ynl0ZT4gcmVkVGV4dHVyZURhdGEocmVkVGV4dHVy
ZVdpZHRoICogcmVkVGV4dHVyZUhlaWdodCAqIDQpOworICAgIGZpbGxUZXh0dXJlRGF0YShyZWRU
ZXh0dXJlRGF0YSwgMjU1LCAwLCAwLCAyNTUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
NzsgaSsrKQorICAgIHsKKyAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIHN0YXRp
Y19jYXN0PEdMaW50PihpKSwgR0xfUkdCQSwgcmVkVGV4dHVyZVdpZHRoID4+IGksCisgICAgICAg
ICAgICAgICAgICAgICByZWRUZXh0dXJlSGVpZ2h0ID4+IGksIDAsIEdMX1JHQkEsIEdMX1VOU0lH
TkVEX0JZVEUsICZyZWRUZXh0dXJlRGF0YVswXSk7CisgICAgfQorCisgICAgZ2xUZXhQYXJhbWV0
ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsK
KyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdM
X0NMQU1QX1RPX0VER0UpOworCisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAu
NWYpOworICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAyNTUsIDAsIDAsIDI1NSk7CisKKyAgICBj
b25zdCBHTHNpemVpIGdyZWVuVGV4dHVyZVdpZHRoID0gMzI7CisgICAgY29uc3QgR0xzaXplaSBn
cmVlblRleHR1cmVIZWlnaHQgPSAzMjsKKyAgICBzdGQ6OnZlY3RvcjxHTHVieXRlPiBncmVlblRl
eHR1cmVEYXRhKGdyZWVuVGV4dHVyZVdpZHRoICogZ3JlZW5UZXh0dXJlSGVpZ2h0ICogNCk7Cisg
ICAgZmlsbFRleHR1cmVEYXRhKGdyZWVuVGV4dHVyZURhdGEsIDAsIDI1NSwgMCwgMjU1KTsKKwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNjsgaSsrKQorICAgIHsKKyAgICAgICAgZ2xUZXhT
dWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIHN0YXRpY19jYXN0PEdMaW50PihpKSwgZ3JlZW5UZXh0
dXJlV2lkdGggPj4gaSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdyZWVuVGV4dHVyZUhlaWdo
dCA+PiBpLCBncmVlblRleHR1cmVXaWR0aCA+PiBpLCBncmVlblRleHR1cmVIZWlnaHQgPj4gaSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsICZncmVl
blRleHR1cmVEYXRhWzBdKTsKKyAgICB9CisKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0
aW9uIiwgMC41Zik7CisgICAgRVhQRUNUX1BJWEVMX0VRKGdldFdpbmRvd1dpZHRoKCkgLSBncmVl
blRleHR1cmVXaWR0aCwgZ2V0V2luZG93SGVpZ2h0KCkgLSBncmVlblRleHR1cmVXaWR0aCwgMCwg
MjU1LCAwLCAyNTUpOworCisgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGV4KTsKK30KKworLy8g
VXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRl
cmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4g
YWdhaW5zdC4KK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoSW5jb21wbGV0ZVRleHR1cmVUZXN0LAor
ICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAorICAgICAgICAgICAgICAgICAgICAg
ICBFUzJfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAorICAg
ICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvSW5kZXhCdWZmZXJPZmZzZXRUZXN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMv
SW5kZXhCdWZmZXJPZmZzZXRUZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvSW5kZXhCdWZmZXJPZmZzZXRUZXN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1NiBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gSW5kZXhCdWZm
ZXJPZmZzZXRUZXN0LmNwcDogVGVzdCBnbERyYXdFbGVtZW50cyB3aXRoIGFuIG9mZnNldCBhbmQg
YW4gaW5kZXggYnVmZmVyCisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorI2lu
Y2x1ZGUgInN5c3RlbV91dGlscy5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKK2NsYXNz
IEluZGV4QnVmZmVyT2Zmc2V0VGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJvdGVjdGVk
OgorICAgIEluZGV4QnVmZmVyT2Zmc2V0VGVzdCgpCisgICAgeworICAgICAgICBzZXRXaW5kb3dX
aWR0aCgxMjgpOworICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKKyAgICAgICAgc2V0Q29u
ZmlnUmVkQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAgICBz
ZXRDb25maWdCbHVlQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAg
IH0KKworICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0
OjpTZXRVcCgpOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJj
ZSA9CisgICAgICAgICAgICBTSEFERVJfU09VUkNFKHByZWNpc2lvbiBoaWdocCBmbG9hdDsgYXR0
cmlidXRlIHZlYzIgcG9zaXRpb247CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCBt
YWluKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAwLjAsIDEuMCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdt
ZW50U2hhZGVyU291cmNlID0KKyAgICAgICAgICAgIFNIQURFUl9TT1VSQ0UocHJlY2lzaW9uIGhp
Z2hwIGZsb2F0OyB1bmlmb3JtIHZlYzQgY29sb3I7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gY29sb3I7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0pOworCisgICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4
U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgICAgIEFTU0VSVF9ORSgw
dSwgbVByb2dyYW0pOworCisgICAgICAgIG1Db2xvclVuaWZvcm1Mb2NhdGlvbiAgICAgID0gZ2xH
ZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJjb2xvciIpOworICAgICAgICBtUG9zaXRpb25B
dHRyaWJ1dGVMb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJwb3NpdGlv
biIpOworCisgICAgICAgIGNvbnN0IEdMZmxvYXQgdmVydGljZXNbXSA9CisgICAgICAgIHsKKyAg
ICAgICAgICAgIC0xLjBmLCAtMS4wZiwKKyAgICAgICAgICAgIC0xLjBmLCAgMS4wZiwKKyAgICAg
ICAgICAgICAxLjBmLCAtMS4wZiwKKyAgICAgICAgICAgICAxLjBmLCAgMS4wZgorICAgICAgICB9
OworICAgICAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1WZXJ0ZXhCdWZmZXIpOworICAgICAgICBnbEJp
bmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtVmVydGV4QnVmZmVyKTsKKyAgICAgICAgZ2xCdWZm
ZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgc2l6ZW9mKHZlcnRpY2VzKSwgJnZlcnRpY2VzWzBdLCBH
TF9TVEFUSUNfRFJBVyk7CisKKyAgICAgICAgZ2xHZW5CdWZmZXJzKDEsICZtSW5kZXhCdWZmZXIp
OworICAgICAgICBnbEJpbmRCdWZmZXIoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG1JbmRleEJ1
ZmZlcik7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAgeworICAg
ICAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1WZXJ0ZXhCdWZmZXIpOworICAgICAgICBnbERlbGV0
ZUJ1ZmZlcnMoMSwgJm1JbmRleEJ1ZmZlcik7CisgICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJv
Z3JhbSk7CisgICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKKyAgICB9CisKKyAgICB2b2lk
IHJ1blRlc3QoR0xlbnVtIHR5cGUsIGludCB0eXBlV2lkdGgsIHZvaWQgKmluZGV4RGF0YSkKKyAg
ICB7CisgICAgICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKKyAgICAg
ICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAgICAgICBHTHVpbnQgbnVsbElu
ZGV4RGF0YVtdID0gezAsIDAsIDAsIDAsIDAsIDB9OworCisgICAgICAgIHNpemVfdCBpbmRleERh
dGFXaWR0aCA9IDYgKiB0eXBlV2lkdGg7CisKKyAgICAgICAgZ2xCdWZmZXJEYXRhKEdMX0VMRU1F
TlRfQVJSQVlfQlVGRkVSLCAzICogaW5kZXhEYXRhV2lkdGgsIG51bGxwdHIsIEdMX0RZTkFNSUNf
RFJBVyk7CisgICAgICAgIGdsQnVmZmVyU3ViRGF0YShHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwg
MCwgaW5kZXhEYXRhV2lkdGgsIG51bGxJbmRleERhdGEpOworICAgICAgICBnbEJ1ZmZlclN1YkRh
dGEoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZGV4RGF0YVdpZHRoLCBpbmRleERhdGFXaWR0
aCwgaW5kZXhEYXRhKTsKKyAgICAgICAgZ2xCdWZmZXJTdWJEYXRhKEdMX0VMRU1FTlRfQVJSQVlf
QlVGRkVSLCAyICogaW5kZXhEYXRhV2lkdGgsIGluZGV4RGF0YVdpZHRoLCBudWxsSW5kZXhEYXRh
KTsKKworICAgICAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworCisgICAgICAgIGdsQmluZEJ1
ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1WZXJ0ZXhCdWZmZXIpOworICAgICAgICBnbFZlcnRleEF0
dHJpYlBvaW50ZXIobVBvc2l0aW9uQXR0cmlidXRlTG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9G
QUxTRSwgMCwgMCk7CisgICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkobVBvc2l0aW9u
QXR0cmlidXRlTG9jYXRpb24pOworCisgICAgICAgIGdsVW5pZm9ybTRmKG1Db2xvclVuaWZvcm1M
b2NhdGlvbiwgMS4wZiwgMC4wZiwgMC4wZiwgMS4wZik7CisKKyAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCAxNjsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBnbERyYXdFbGVtZW50cyhH
TF9UUklBTkdMRVMsIDYsIHR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkICo+KGluZGV4RGF0
YVdpZHRoKSk7CisgICAgICAgICAgICBFWFBFQ1RfUElYRUxfRVEoNjQsIDY0LCAyNTUsIDAsIDAs
IDI1NSk7CisgICAgICAgIH0KKworICAgICAgICBnbEJ1ZmZlclN1YkRhdGEoR0xfRUxFTUVOVF9B
UlJBWV9CVUZGRVIsIGluZGV4RGF0YVdpZHRoLCBpbmRleERhdGFXaWR0aCwgbnVsbEluZGV4RGF0
YSk7CisgICAgICAgIGdsQnVmZmVyU3ViRGF0YShHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgMiAq
IGluZGV4RGF0YVdpZHRoLCBpbmRleERhdGFXaWR0aCwgaW5kZXhEYXRhKTsKKworICAgICAgICBn
bFVuaWZvcm00ZihtQ29sb3JVbmlmb3JtTG9jYXRpb24sIDAuMGYsIDEuMGYsIDAuMGYsIDEuMGYp
OworICAgICAgICBnbERyYXdFbGVtZW50cyhHTF9UUklBTkdMRVMsIDYsIHR5cGUsIHJlaW50ZXJw
cmV0X2Nhc3Q8R0x2b2lkICo+KGluZGV4RGF0YVdpZHRoICogMikpOworICAgICAgICBFWFBFQ1Rf
UElYRUxfRVEoNjQsIDY0LCAwLCAyNTUsIDAsIDI1NSk7CisKKyAgICAgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7CisgICAgICAgIHN3YXBCdWZmZXJzKCk7CisgICAgfQorCisgICAgR0x1aW50IG1Q
cm9ncmFtOworICAgIEdMaW50IG1Db2xvclVuaWZvcm1Mb2NhdGlvbjsKKyAgICBHTGludCBtUG9z
aXRpb25BdHRyaWJ1dGVMb2NhdGlvbjsKKyAgICBHTHVpbnQgbVZlcnRleEJ1ZmZlcjsKKyAgICBH
THVpbnQgbUluZGV4QnVmZmVyOworfTsKKworLy8gVGVzdCB1c2luZyBhbiBvZmZzZXQgZm9yIGFu
IFVJbnQ4IGluZGV4IGJ1ZmZlcgorVEVTVF9QKEluZGV4QnVmZmVyT2Zmc2V0VGVzdCwgVUludDhJ
bmRleCkKK3sKKyAgICBHTHVieXRlIGluZGV4RGF0YVtdID0gezAsIDEsIDIsIDEsIDIsIDN9Owor
ICAgIHJ1blRlc3QoR0xfVU5TSUdORURfQllURSwgMSwgaW5kZXhEYXRhKTsKK30KKworLy8gVGVz
dCB1c2luZyBhbiBvZmZzZXQgZm9yIGFuIFVJbnQxNiBpbmRleCBidWZmZXIKK1RFU1RfUChJbmRl
eEJ1ZmZlck9mZnNldFRlc3QsIFVJbnQxNkluZGV4KQoreworICAgIEdMdXNob3J0IGluZGV4RGF0
YVtdID0gezAsIDEsIDIsIDEsIDIsIDN9OworICAgIHJ1blRlc3QoR0xfVU5TSUdORURfU0hPUlQs
IDIsIGluZGV4RGF0YSk7Cit9CisKKy8vIFRlc3QgdXNpbmcgYW4gb2Zmc2V0IGZvciBhbiBVSW50
MzIgaW5kZXggYnVmZmVyCitURVNUX1AoSW5kZXhCdWZmZXJPZmZzZXRUZXN0LCBVSW50MzJJbmRl
eCkKK3sKKyAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFleHRlbnNpb25F
bmFibGVkKCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50IikpCisgICAgeworICAgICAgICBzdGQ6
OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEVTMyBvciBHTF9PRVNfZWxlbWVudF9pbmRl
eF91aW50IGlzIG5vdCBhdmFpbGFibGUuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBHTHVpbnQgaW5kZXhEYXRhW10gPSB7MCwgMSwgMiwgMSwgMiwgM307Cisg
ICAgcnVuVGVzdChHTF9VTlNJR05FRF9JTlQsIDQsIGluZGV4RGF0YSk7Cit9CisKK0FOR0xFX0lO
U1RBTlRJQVRFX1RFU1QoSW5kZXhCdWZmZXJPZmZzZXRUZXN0LAorICAgICAgICAgICAgICAgICAg
ICAgICBFUzJfRDNEOSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExKCksCisgICAgICAgICAgICAgICAgICAgICAg
IEVTMl9PUEVOR0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgpLAorICAg
ICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgRVMzX09QRU5HTEVTKCkpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsX3Rlc3RzL0luZGV4ZWRQb2ludHNUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvSW5kZXhlZFBvaW50c1Rlc3QuY3Bw
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90
ZXN0cy9JbmRleGVkUG9pbnRzVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MDMg
QEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorCit1c2lu
ZyBuYW1lc3BhY2UgYW5nbGU7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBJbmRleFR5cGUsIEdMZW51
bSBJbmRleFR5cGVOYW1lPgorY2xhc3MgSW5kZXhlZFBvaW50c1Rlc3QgOiBwdWJsaWMgQU5HTEVU
ZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBJbmRleGVkUG9pbnRzVGVzdCgpCisgICAgeworICAg
ICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOworICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsK
KyAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRz
KDgpOworICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxw
aGFCaXRzKDgpOworICAgICAgICBzZXRDb25maWdEZXB0aEJpdHMoMjQpOworICAgIH0KKworICAg
IGZsb2F0IGdldEluZGV4UG9zaXRpb25YKHNpemVfdCBpZHgpCisgICAgeworICAgICAgICByZXR1
cm4gKGlkeCA9PSAwIHx8IGlkeCA9PSAzKSA/IC0wLjVmIDogMC41ZjsKKyAgICB9CisKKyAgICBm
bG9hdCBnZXRJbmRleFBvc2l0aW9uWShzaXplX3QgaWR4KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IChpZHggPT0gMiB8fCBpZHggPT0gMykgPyAtMC41ZiA6IDAuNWY7CisgICAgfQorCisgICAgdmly
dHVhbCB2b2lkIFNldFVwKCkKKyAgICB7CisgICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKKwor
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09V
UkNFCisgICAgICAgICgKKyAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKKyAgICAg
ICAgICAgIGF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uOworCisgICAgICAgICAgICB2b2lkIG1haW4o
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsX1BvaW50U2l6ZSA9IDUuMDsKKyAg
ICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAuMCwgMS4wKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFn
bWVudFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAg
cHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworCisgICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAu
MCwgMS4wKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICBtUHJvZ3JhbSA9
IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2Up
OworICAgICAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsKKworICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UyID0gU0hBREVSX1NPVVJDRQorICAgICAgICAoCisg
ICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisgICAgICAgICAgICBhdHRyaWJ1dGUg
dmVjMiBwb3NpdGlvbjsKKyAgICAgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IGNvbG9yOworICAgICAg
ICAgICAgdmFyeWluZyB2ZWM0IHZjb2xvcjsKKworICAgICAgICAgICAgdm9pZCBtYWluKCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbF9Qb2ludFNpemUgPSA1LjA7CisgICAgICAg
ICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAwLjAsIDEuMCk7CisgICAgICAg
ICAgICAgICAgdmNvbG9yID0gY29sb3I7CisgICAgICAgICAgICB9CisgICAgICAgICk7CisKKyAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UyID0gU0hBREVSX1NP
VVJDRQorICAgICAgICAoCisgICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisgICAg
ICAgICAgICB2YXJ5aW5nIHZlYzQgdmNvbG9yOworICAgICAgICAgICAgdm9pZCBtYWluKCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHZjb2xvci54
eXosIDEuMCk7CisgICAgICAgICAgICB9CisgICAgICAgICk7CisKKyAgICAgICAgbVZlcnRleFdp
dGhDb2xvckJ1ZmZlclByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2Uy
LCBmcmFnbWVudFNoYWRlclNvdXJjZTIpOworICAgICAgICBBU1NFUlRfTkUoMHUsIG1WZXJ0ZXhX
aXRoQ29sb3JCdWZmZXJQcm9ncmFtKTsKKworICAgICAgICAvLyBDb25zdHJ1Y3QgYSB2ZXJ0ZXgg
YnVmZmVyIG9mIHBvc2l0aW9uIHZhbHVlcyBhbmQgY29sb3IgdmFsdWVzCisgICAgICAgIC8vIGNv
bnRhaW5lZCBpbiBhIHNpbmdsZSBzdHJ1Y3R1cmUKKyAgICAgICAgY29uc3QgZmxvYXQgdmVydGlj
ZXNXaXRoQ29sb3JbXSA9CisgICAgICAgIHsKKyAgICAgICAgICAgIGdldEluZGV4UG9zaXRpb25Y
KDApLCBnZXRJbmRleFBvc2l0aW9uWSgwKSwgMC4wZiwgMS4wZiwgMC4wZiwKKyAgICAgICAgICAg
IGdldEluZGV4UG9zaXRpb25YKDIpLCBnZXRJbmRleFBvc2l0aW9uWSgyKSwgMC4wZiwgMS4wZiwg
MC4wZiwKKyAgICAgICAgICAgIGdldEluZGV4UG9zaXRpb25YKDEpLCBnZXRJbmRleFBvc2l0aW9u
WSgxKSwgMC4wZiwgMS4wZiwgMC4wZiwKKyAgICAgICAgICAgIGdldEluZGV4UG9zaXRpb25YKDMp
LCBnZXRJbmRleFBvc2l0aW9uWSgzKSwgMC4wZiwgMS4wZiwgMC4wZiwKKyAgICAgICAgfTsKKwor
ICAgICAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1WZXJ0ZXhXaXRoQ29sb3JCdWZmZXIpOworICAgICAg
ICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtVmVydGV4V2l0aENvbG9yQnVmZmVyKTsK
KyAgICAgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgc2l6ZW9mKHZlcnRpY2VzV2l0
aENvbG9yKSwgJnZlcnRpY2VzV2l0aENvbG9yWzBdLCBHTF9TVEFUSUNfRFJBVyk7CisKKyAgICAg
ICAgLy8gQ29uc3RydWN0IGEgdmVydGV4IGJ1ZmZlciBvZiBwb3NpdGlvbiB2YWx1ZXMgb25seQor
ICAgICAgICBjb25zdCBHTGZsb2F0IHZlcnRpY2VzW10gPQorICAgICAgICB7CisgICAgICAgICAg
ICBnZXRJbmRleFBvc2l0aW9uWCgwKSwgZ2V0SW5kZXhQb3NpdGlvblkoMCksCisgICAgICAgICAg
ICBnZXRJbmRleFBvc2l0aW9uWCgyKSwgZ2V0SW5kZXhQb3NpdGlvblkoMiksCisgICAgICAgICAg
ICBnZXRJbmRleFBvc2l0aW9uWCgxKSwgZ2V0SW5kZXhQb3NpdGlvblkoMSksCisgICAgICAgICAg
ICBnZXRJbmRleFBvc2l0aW9uWCgzKSwgZ2V0SW5kZXhQb3NpdGlvblkoMyksCisgICAgICAgIH07
CisgICAgICAgIGdsR2VuQnVmZmVycygxLCAmbVZlcnRleEJ1ZmZlcik7CisgICAgICAgIGdsQmlu
ZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1WZXJ0ZXhCdWZmZXIpOworICAgICAgICBnbEJ1ZmZl
ckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBzaXplb2YodmVydGljZXMpLCAmdmVydGljZXNbMF0sIEdM
X1NUQVRJQ19EUkFXKTsKKworICAgICAgICAvLyBUaGUgaW5kaWNlcyBidWZmZXIgaXMgc2hhcmVk
IGJldHdlZW4gYm90aCB2YXJpYXRpb25zIG9mIHRlc3RzCisgICAgICAgIGNvbnN0IEluZGV4VHlw
ZSBpbmRpY2VzW10gPSB7IDAsIDIsIDEsIDMgfTsKKyAgICAgICAgZ2xHZW5CdWZmZXJzKDEsICZt
SW5kZXhCdWZmZXIpOworICAgICAgICBnbEJpbmRCdWZmZXIoR0xfRUxFTUVOVF9BUlJBWV9CVUZG
RVIsIG1JbmRleEJ1ZmZlcik7CisgICAgICAgIGdsQnVmZmVyRGF0YShHTF9FTEVNRU5UX0FSUkFZ
X0JVRkZFUiwgc2l6ZW9mKGluZGljZXMpLCAmaW5kaWNlc1swXSwgR0xfU1RBVElDX0RSQVcpOwor
ICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCisgICAgeworICAgICAgICBnbERl
bGV0ZUJ1ZmZlcnMoMSwgJm1WZXJ0ZXhCdWZmZXIpOworICAgICAgICBnbERlbGV0ZUJ1ZmZlcnMo
MSwgJm1JbmRleEJ1ZmZlcik7CisgICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7CisK
KyAgICAgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtVmVydGV4V2l0aENvbG9yQnVmZmVyKTsKKyAg
ICAgICAgZ2xEZWxldGVQcm9ncmFtKG1WZXJ0ZXhXaXRoQ29sb3JCdWZmZXJQcm9ncmFtKTsKKyAg
ICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOworICAgIH0KKworICAgIHZvaWQgcnVuVGVzdChH
THVpbnQgZmlyc3RJbmRleCwgYm9vbCB1c2VWZXJ0ZXhCdWZmZXJXaXRoQ29sb3IgPSBmYWxzZSkK
KyAgICB7CisgICAgICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKKyAg
ICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAgICAgICBHTGludCB2aWV3
cG9ydFNpemVbNF07CisgICAgICAgIGdsR2V0SW50ZWdlcnYoR0xfVklFV1BPUlQsIHZpZXdwb3J0
U2l6ZSk7CisKKyAgICAgICAgLy8gQ2hvb3NlIGFwcHJvcHJpYXRlIHByb2dyYW0gdG8gYXBwbHkg
Zm9yIHRoZSB0ZXN0CisgICAgICAgIEdMdWludCBwcm9ncmFtID0gdXNlVmVydGV4QnVmZmVyV2l0
aENvbG9yID8gbVZlcnRleFdpdGhDb2xvckJ1ZmZlclByb2dyYW0gOiBtUHJvZ3JhbTsKKworICAg
ICAgICBpZiAodXNlVmVydGV4QnVmZmVyV2l0aENvbG9yKQorICAgICAgICB7CisgICAgICAgICAg
ICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtVmVydGV4V2l0aENvbG9yQnVmZmVyKTsK
KyAgICAgICAgICAgIEdMaW50IHZlcnRleExvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihw
cm9ncmFtLCAicG9zaXRpb24iKTsKKyAgICAgICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcih2
ZXJ0ZXhMb2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IEdMc2l6ZWk+KFZlcnRleFdpdGhDb2xv
clNpemUpLCAwKTsKKyAgICAgICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkodmVydGV4
TG9jYXRpb24pOworCisgICAgICAgICAgICBHTGludCB2ZXJ0ZXhDb2xvckxvY2F0aW9uID0gZ2xH
ZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAiY29sb3IiKTsKKyAgICAgICAgICAgIGdsVmVydGV4
QXR0cmliUG9pbnRlcih2ZXJ0ZXhDb2xvckxvY2F0aW9uLCAzLCBHTF9GTE9BVCwgR0xfRkFMU0Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgR0xz
aXplaT4oVmVydGV4V2l0aENvbG9yU2l6ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKEdMdm9pZCAqKSgoc2l6ZW9mKGZsb2F0KSAqIDIpKSk7CisgICAgICAgICAgICBnbEVu
YWJsZVZlcnRleEF0dHJpYkFycmF5KHZlcnRleENvbG9yTG9jYXRpb24pOworICAgICAgICB9Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZ
X0JVRkZFUiwgbVZlcnRleEJ1ZmZlcik7CisgICAgICAgICAgICBHTGludCB2ZXJ0ZXhMb2NhdGlv
biA9IGdsR2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgInBvc2l0aW9uIik7CisgICAgICAgICAg
ICBnbFZlcnRleEF0dHJpYlBvaW50ZXIodmVydGV4TG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9G
QUxTRSwgMCwgMCk7CisgICAgICAgICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHZlcnRl
eExvY2F0aW9uKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9FTEVNRU5U
X0FSUkFZX0JVRkZFUiwgbUluZGV4QnVmZmVyKTsKKyAgICAgICAgZ2xVc2VQcm9ncmFtKHByb2dy
YW0pOworCisgICAgICAgIGdsRHJhd0VsZW1lbnRzKEdMX1BPSU5UUywgbVBvaW50Q291bnQgLSBm
aXJzdEluZGV4LCBJbmRleFR5cGVOYW1lLCByZWludGVycHJldF9jYXN0PHZvaWQqPihmaXJzdElu
ZGV4ICogc2l6ZW9mKEluZGV4VHlwZSkpKTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1Qb2ludENvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIEdMdWludCB4ID0g
c3RhdGljX2Nhc3Q8R0x1aW50Pih2aWV3cG9ydFNpemVbMF0gKyAoZ2V0SW5kZXhQb3NpdGlvblgo
aSkgKiAwLjVmICsgMC41ZikgKiAodmlld3BvcnRTaXplWzJdIC0gdmlld3BvcnRTaXplWzBdKSk7
CisgICAgICAgICAgICBHTHVpbnQgeSA9IHN0YXRpY19jYXN0PEdMdWludD4odmlld3BvcnRTaXpl
WzFdICsgKGdldEluZGV4UG9zaXRpb25ZKGkpICogMC41ZiArIDAuNWYpICogKHZpZXdwb3J0U2l6
ZVszXSAtIHZpZXdwb3J0U2l6ZVsxXSkpOworCisgICAgICAgICAgICBpZiAoaSA8IGZpcnN0SW5k
ZXgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRVhQRUNUX1BJWEVMX0VRKHgsIHks
IDAsIDAsIDAsIDI1NSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgaWYgKHVzZVZlcnRleEJ1ZmZlcldpdGhDb2xvcikKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIFBpeGVsIGRhdGEgaXMgYXNz
dW1lZCB0byBiZSBHUkVFTgorICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfUElYRUxfRVEoeCwg
eSwgMCwgMjU1LCAwLCAyNTUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvLyBQaXhlbCBkYXRh
IGlzIGFzc3VtZWQgdG8gYmUgUkVECisgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9QSVhFTF9F
USh4LCB5LCAyNTUsIDAsIDAsIDI1NSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIHN3YXBCdWZmZXJzKCk7CisgICAgfQorCisgICAgR0x1aW50
IG1Qcm9ncmFtOworICAgIEdMdWludCBtVmVydGV4QnVmZmVyOworICAgIEdMdWludCBtSW5kZXhC
dWZmZXI7CisKKyAgICBHTHVpbnQgbVZlcnRleFdpdGhDb2xvckJ1ZmZlclByb2dyYW07CisgICAg
R0x1aW50IG1WZXJ0ZXhXaXRoQ29sb3JCdWZmZXI7CisKKyAgICBzdGF0aWMgY29uc3QgR0x1aW50
IG1Qb2ludENvdW50ID0gNDsKKworICBwcml2YXRlOgorICAgIGNvbnN0IHNpemVfdCBWZXJ0ZXhX
aXRoQ29sb3JTaXplID0gc2l6ZW9mKGZsb2F0KSAqIDU7Cit9OworCit0eXBlZGVmIEluZGV4ZWRQ
b2ludHNUZXN0PEdMdWJ5dGUsIEdMX1VOU0lHTkVEX0JZVEU+IEluZGV4ZWRQb2ludHNUZXN0VUJ5
dGU7CisKK1RFU1RfUChJbmRleGVkUG9pbnRzVGVzdFVCeXRlLCBVbnNpZ25lZEJ5dGVPZmZzZXQw
KQoreworICAgIHJ1blRlc3QoMCk7Cit9CisKK1RFU1RfUChJbmRleGVkUG9pbnRzVGVzdFVCeXRl
LCBVbnNpZ25lZEJ5dGVPZmZzZXQxKQoreworICAgIHJ1blRlc3QoMSk7Cit9CisKK1RFU1RfUChJ
bmRleGVkUG9pbnRzVGVzdFVCeXRlLCBVbnNpZ25lZEJ5dGVPZmZzZXQyKQoreworICAgIHJ1blRl
c3QoMik7Cit9CisKK1RFU1RfUChJbmRleGVkUG9pbnRzVGVzdFVCeXRlLCBVbnNpZ25lZEJ5dGVP
ZmZzZXQzKQoreworICAgIHJ1blRlc3QoMyk7Cit9CisKK1RFU1RfUChJbmRleGVkUG9pbnRzVGVz
dFVCeXRlLCBWZXJ0ZXhXaXRoQ29sb3JVbnNpZ25lZEJ5dGVPZmZzZXQwKQoreworICAgIHJ1blRl
c3QoMCwgdHJ1ZSk7Cit9CisKK1RFU1RfUChJbmRleGVkUG9pbnRzVGVzdFVCeXRlLCBWZXJ0ZXhX
aXRoQ29sb3JVbnNpZ25lZEJ5dGVPZmZzZXQxKQoreworICAgIHJ1blRlc3QoMSwgdHJ1ZSk7Cit9
CisKK1RFU1RfUChJbmRleGVkUG9pbnRzVGVzdFVCeXRlLCBWZXJ0ZXhXaXRoQ29sb3JVbnNpZ25l
ZEJ5dGVPZmZzZXQyKQoreworICAgIHJ1blRlc3QoMiwgdHJ1ZSk7Cit9CisKK1RFU1RfUChJbmRl
eGVkUG9pbnRzVGVzdFVCeXRlLCBWZXJ0ZXhXaXRoQ29sb3JVbnNpZ25lZEJ5dGVPZmZzZXQzKQor
eworICAgIHJ1blRlc3QoMywgdHJ1ZSk7Cit9CisKK3R5cGVkZWYgSW5kZXhlZFBvaW50c1Rlc3Q8
R0x1c2hvcnQsIEdMX1VOU0lHTkVEX1NIT1JUPiBJbmRleGVkUG9pbnRzVGVzdFVTaG9ydDsKKwor
VEVTVF9QKEluZGV4ZWRQb2ludHNUZXN0VVNob3J0LCBVbnNpZ25lZFNob3J0T2Zmc2V0MCkKK3sK
KyAgICBydW5UZXN0KDApOworfQorCitURVNUX1AoSW5kZXhlZFBvaW50c1Rlc3RVU2hvcnQsIFVu
c2lnbmVkU2hvcnRPZmZzZXQxKQoreworICAgIHJ1blRlc3QoMSk7Cit9CisKK1RFU1RfUChJbmRl
eGVkUG9pbnRzVGVzdFVTaG9ydCwgVW5zaWduZWRTaG9ydE9mZnNldDIpCit7CisgICAgcnVuVGVz
dCgyKTsKK30KKworVEVTVF9QKEluZGV4ZWRQb2ludHNUZXN0VVNob3J0LCBVbnNpZ25lZFNob3J0
T2Zmc2V0MykKK3sKKyAgICBydW5UZXN0KDMpOworfQorCitURVNUX1AoSW5kZXhlZFBvaW50c1Rl
c3RVU2hvcnQsIFZlcnRleFdpdGhDb2xvclVuc2lnbmVkU2hvcnRPZmZzZXQwKQoreworICAgIHJ1
blRlc3QoMCwgdHJ1ZSk7Cit9CisKK1RFU1RfUChJbmRleGVkUG9pbnRzVGVzdFVTaG9ydCwgVmVy
dGV4V2l0aENvbG9yVW5zaWduZWRTaG9ydE9mZnNldDEpCit7CisgICAgcnVuVGVzdCgxLCB0cnVl
KTsKK30KKworVEVTVF9QKEluZGV4ZWRQb2ludHNUZXN0VVNob3J0LCBWZXJ0ZXhXaXRoQ29sb3JV
bnNpZ25lZFNob3J0T2Zmc2V0MikKK3sKKyAgICBydW5UZXN0KDIsIHRydWUpOworfQorCitURVNU
X1AoSW5kZXhlZFBvaW50c1Rlc3RVU2hvcnQsIFZlcnRleFdpdGhDb2xvclVuc2lnbmVkU2hvcnRP
ZmZzZXQzKQoreworICAgIHJ1blRlc3QoMywgdHJ1ZSk7Cit9CisKK1RFU1RfUChJbmRleGVkUG9p
bnRzVGVzdFVTaG9ydCwgVmVydGV4V2l0aENvbG9yVW5zaWduZWRTaG9ydE9mZnNldENoYW5naW5n
SW5kaWNlcykKK3sKKyAgICBydW5UZXN0KDMsIHRydWUpOworICAgIHJ1blRlc3QoMSwgdHJ1ZSk7
CisgICAgcnVuVGVzdCgwLCB0cnVlKTsKKyAgICBydW5UZXN0KDIsIHRydWUpOworfQorCit0eXBl
ZGVmIEluZGV4ZWRQb2ludHNUZXN0PEdMdWludCwgR0xfVU5TSUdORURfSU5UPiBJbmRleGVkUG9p
bnRzVGVzdFVJbnQ7CisKK1RFU1RfUChJbmRleGVkUG9pbnRzVGVzdFVJbnQsIFVuc2lnbmVkSW50
T2Zmc2V0MCkKK3sKKyAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFleHRl
bnNpb25FbmFibGVkKCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50IikpCisgICAgeworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgcnVuVGVzdCgwKTsKK30KKworVEVTVF9QKEluZGV4ZWRQ
b2ludHNUZXN0VUludCwgVW5zaWduZWRJbnRPZmZzZXQxKQoreworICAgIGlmIChnZXRDbGllbnRN
YWpvclZlcnNpb24oKSA8IDMgJiYgIWV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19lbGVtZW50X2lu
ZGV4X3VpbnQiKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBydW5UZXN0
KDEpOworfQorCitURVNUX1AoSW5kZXhlZFBvaW50c1Rlc3RVSW50LCBVbnNpZ25lZEludE9mZnNl
dDIpCit7CisgICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAmJiAhZXh0ZW5zaW9u
RW5hYmxlZCgiR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpKQorICAgIHsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIHJ1blRlc3QoMik7Cit9CisKK1RFU1RfUChJbmRleGVkUG9pbnRz
VGVzdFVJbnQsIFVuc2lnbmVkSW50T2Zmc2V0MykKK3sKKyAgICBpZiAoZ2V0Q2xpZW50TWFqb3JW
ZXJzaW9uKCkgPCAzICYmICFleHRlbnNpb25FbmFibGVkKCJHTF9PRVNfZWxlbWVudF9pbmRleF91
aW50IikpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcnVuVGVzdCgzKTsK
K30KKworVEVTVF9QKEluZGV4ZWRQb2ludHNUZXN0VUludCwgVmVydGV4V2l0aENvbG9yVW5zaWdu
ZWRJbnRPZmZzZXQwKQoreworICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMgJiYg
IWV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19lbGVtZW50X2luZGV4X3VpbnQiKSkKKyAgICB7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBydW5UZXN0KDAsIGZhbHNlKTsKK30KKworVEVT
VF9QKEluZGV4ZWRQb2ludHNUZXN0VUludCwgVmVydGV4V2l0aENvbG9yVW5zaWduZWRJbnRPZmZz
ZXQxKQoreworICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMgJiYgIWV4dGVuc2lv
bkVuYWJsZWQoIkdMX09FU19lbGVtZW50X2luZGV4X3VpbnQiKSkKKyAgICB7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBydW5UZXN0KDEsIGZhbHNlKTsKK30KKworVEVTVF9QKEluZGV4
ZWRQb2ludHNUZXN0VUludCwgVmVydGV4V2l0aENvbG9yVW5zaWduZWRJbnRPZmZzZXQyKQorewor
ICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMgJiYgIWV4dGVuc2lvbkVuYWJsZWQo
IkdMX09FU19lbGVtZW50X2luZGV4X3VpbnQiKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBydW5UZXN0KDIsIGZhbHNlKTsKK30KKworVEVTVF9QKEluZGV4ZWRQb2ludHNU
ZXN0VUludCwgVmVydGV4V2l0aENvbG9yVW5zaWduZWRJbnRPZmZzZXQzKQoreworICAgIGlmIChn
ZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMgJiYgIWV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19l
bGVtZW50X2luZGV4X3VpbnQiKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBydW5UZXN0KDMsIGZhbHNlKTsKK30KKworLy8gVE9ETyhnZW9mZmxhbmcpOiBGaWd1cmUgb3V0
IHdoeSB0aGlzIHRlc3QgZmFpbHMgb24gSW50ZWwgT3BlbkdMCitBTkdMRV9JTlNUQU5USUFURV9U
RVNUKEluZGV4ZWRQb2ludHNUZXN0VUJ5dGUsCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9E
M0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzMoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAgICBF
UzJfT1BFTkdMRVMoKSk7CitBTkdMRV9JTlNUQU5USUFURV9URVNUKEluZGV4ZWRQb2ludHNUZXN0
VVNob3J0LAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8zKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVT
Ml9PUEVOR0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCkpOworQU5H
TEVfSU5TVEFOVElBVEVfVEVTVChJbmRleGVkUG9pbnRzVGVzdFVJbnQsCisgICAgICAgICAgICAg
ICAgICAgICAgIEVTMl9EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFf
Rkw5XzMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAorICAgICAgICAg
ICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvSW5zdGFuY2luZ1Rlc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9JbnN0YW5jaW5nVGVz
dC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2dsX3Rlc3RzL0luc3RhbmNpbmdUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2
OCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBhbmdsZTsKKworY2xhc3MgSW5zdGFuY2luZ1Rlc3QgOiBwdWJsaWMgQU5H
TEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBJbnN0YW5jaW5nVGVzdCgpIDogbVByb2dyYW0o
MCksIG1WZXJ0ZXhCdWZmZXIoMCkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRoKDI1Nik7
CisgICAgICAgIHNldFdpbmRvd0hlaWdodCgyNTYpOworICAgICAgICBzZXRDb25maWdSZWRCaXRz
KDgpOworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0Js
dWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgfQorCisgICAg
fkluc3RhbmNpbmdUZXN0KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGdsRGVsZXRlQnVmZmVy
cygxLCAmbVZlcnRleEJ1ZmZlcik7CisgICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7
CisgICAgfQorCisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBTkdM
RVRlc3Q6OlNldFVwKCk7CisKKyAgICAgICAgbVZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSA9IE5V
TEw7CisgICAgICAgIG1EcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSBOVUxMOworICAgICAgICBt
RHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUgPSBOVUxMOworCisgICAgICAgIGNoYXIgKmV4dGVu
c2lvblN0cmluZyA9IChjaGFyKilnbEdldFN0cmluZyhHTF9FWFRFTlNJT05TKTsKKyAgICAgICAg
aWYgKHN0cnN0cihleHRlbnNpb25TdHJpbmcsICJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikp
CisgICAgICAgIHsKKyAgICAgICAgICAgIG1WZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUgPSAoUEZO
R0xWRVJURVhBVFRSSUJESVZJU09SQU5HTEVQUk9DKWVnbEdldFByb2NBZGRyZXNzKCJnbFZlcnRl
eEF0dHJpYkRpdmlzb3JBTkdMRSIpOworICAgICAgICAgICAgbURyYXdBcnJheXNJbnN0YW5jZWRB
TkdMRSA9IChQRk5HTERSQVdBUlJBWVNJTlNUQU5DRURBTkdMRVBST0MpZWdsR2V0UHJvY0FkZHJl
c3MoImdsRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFIik7CisgICAgICAgICAgICBtRHJhd0VsZW1l
bnRzSW5zdGFuY2VkQU5HTEUgPSAoUEZOR0xEUkFXRUxFTUVOVFNJTlNUQU5DRURBTkdMRVBST0Mp
ZWdsR2V0UHJvY0FkZHJlc3MoImdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUiKTsKKyAgICAg
ICAgfQorCisgICAgICAgIEFTU0VSVF9UUlVFKG1WZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUgIT0g
TlVMTCk7CisgICAgICAgIEFTU0VSVF9UUlVFKG1EcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgIT0g
TlVMTCk7CisgICAgICAgIEFTU0VSVF9UUlVFKG1EcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSAh
PSBOVUxMKTsKKworICAgICAgICAvLyBJbml0aWFsaXplIHRoZSB2ZXJ0ZXggYW5kIGluZGV4IHZl
Y3RvcnMKKyAgICAgICAgR0xmbG9hdCBxdmVydGV4MVszXSA9IHstcXVhZFJhZGl1cywgIHF1YWRS
YWRpdXMsIDAuMGZ9OworICAgICAgICBHTGZsb2F0IHF2ZXJ0ZXgyWzNdID0gey1xdWFkUmFkaXVz
LCAtcXVhZFJhZGl1cywgMC4wZn07CisgICAgICAgIEdMZmxvYXQgcXZlcnRleDNbM10gPSB7IHF1
YWRSYWRpdXMsIC1xdWFkUmFkaXVzLCAwLjBmfTsKKyAgICAgICAgR0xmbG9hdCBxdmVydGV4NFsz
XSA9IHsgcXVhZFJhZGl1cywgIHF1YWRSYWRpdXMsIDAuMGZ9OworICAgICAgICBtUXVhZFZlcnRp
Y2VzLmluc2VydChtUXVhZFZlcnRpY2VzLmVuZCgpLCBxdmVydGV4MSwgcXZlcnRleDEgKyAzKTsK
KyAgICAgICAgbVF1YWRWZXJ0aWNlcy5pbnNlcnQobVF1YWRWZXJ0aWNlcy5lbmQoKSwgcXZlcnRl
eDIsIHF2ZXJ0ZXgyICsgMyk7CisgICAgICAgIG1RdWFkVmVydGljZXMuaW5zZXJ0KG1RdWFkVmVy
dGljZXMuZW5kKCksIHF2ZXJ0ZXgzLCBxdmVydGV4MyArIDMpOworICAgICAgICBtUXVhZFZlcnRp
Y2VzLmluc2VydChtUXVhZFZlcnRpY2VzLmVuZCgpLCBxdmVydGV4NCwgcXZlcnRleDQgKyAzKTsK
KworICAgICAgICBHTGZsb2F0IGNvb3JkMVsyXSA9IHswLjBmLCAwLjBmfTsKKyAgICAgICAgR0xm
bG9hdCBjb29yZDJbMl0gPSB7MC4wZiwgMS4wZn07CisgICAgICAgIEdMZmxvYXQgY29vcmQzWzJd
ID0gezEuMGYsIDEuMGZ9OworICAgICAgICBHTGZsb2F0IGNvb3JkNFsyXSA9IHsxLjBmLCAwLjBm
fTsKKyAgICAgICAgbVRleGNvb3Jkcy5pbnNlcnQobVRleGNvb3Jkcy5lbmQoKSwgY29vcmQxLCBj
b29yZDEgKyAyKTsKKyAgICAgICAgbVRleGNvb3Jkcy5pbnNlcnQobVRleGNvb3Jkcy5lbmQoKSwg
Y29vcmQyLCBjb29yZDIgKyAyKTsKKyAgICAgICAgbVRleGNvb3Jkcy5pbnNlcnQobVRleGNvb3Jk
cy5lbmQoKSwgY29vcmQzLCBjb29yZDMgKyAyKTsKKyAgICAgICAgbVRleGNvb3Jkcy5pbnNlcnQo
bVRleGNvb3Jkcy5lbmQoKSwgY29vcmQ0LCBjb29yZDQgKyAyKTsKKworICAgICAgICBtSW5kaWNl
cy5wdXNoX2JhY2soMCk7CisgICAgICAgIG1JbmRpY2VzLnB1c2hfYmFjaygxKTsKKyAgICAgICAg
bUluZGljZXMucHVzaF9iYWNrKDIpOworICAgICAgICBtSW5kaWNlcy5wdXNoX2JhY2soMCk7Cisg
ICAgICAgIG1JbmRpY2VzLnB1c2hfYmFjaygyKTsKKyAgICAgICAgbUluZGljZXMucHVzaF9iYWNr
KDMpOworCisgICAgICAgIGZvciAoc2l6ZV90IHZlcnRleEluZGV4ID0gMDsgdmVydGV4SW5kZXgg
PCA2OyArK3ZlcnRleEluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBtTm9uSW5kZXhlZFZl
cnRpY2VzLmluc2VydChtTm9uSW5kZXhlZFZlcnRpY2VzLmVuZCgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbVF1YWRWZXJ0aWNlcy5iZWdpbigpICsgbUluZGljZXNb
dmVydGV4SW5kZXhdICogMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1RdWFkVmVydGljZXMuYmVnaW4oKSArIG1JbmRpY2VzW3ZlcnRleEluZGV4XSAqIDMgKyAzKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZvciAoc2l6ZV90IHZlcnRleEluZGV4ID0gMDsgdmVydGV4
SW5kZXggPCA2OyArK3ZlcnRleEluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBtTm9uSW5k
ZXhlZFZlcnRpY2VzLmluc2VydChtTm9uSW5kZXhlZFZlcnRpY2VzLmVuZCgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVF1YWRWZXJ0aWNlcy5iZWdpbigpICsgbUlu
ZGljZXNbdmVydGV4SW5kZXhdICogMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1RdWFkVmVydGljZXMuYmVnaW4oKSArIG1JbmRpY2VzW3ZlcnRleEluZGV4XSAqIDMg
KyAzKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRpbGUgYSAyeDIgZ3JpZCBvZiB0aGUgdGls
ZXMKKyAgICAgICAgZm9yIChmbG9hdCB5ID0gLTEuMGYgKyBxdWFkUmFkaXVzOyB5IDwgMS4wZiAt
IHF1YWRSYWRpdXM7IHkgKz0gcXVhZFJhZGl1cyAqIDMpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGZvciAoZmxvYXQgeCA9IC0xLjBmICsgcXVhZFJhZGl1czsgeCA8IDEuMGYgLSBxdWFkUmFkaXVz
OyB4ICs9IHF1YWRSYWRpdXMgKiAzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEdM
ZmxvYXQgaW5zdGFuY2VbM10gPSB7eCArIHF1YWRSYWRpdXMsIHkgKyBxdWFkUmFkaXVzLCAwLjBm
fTsKKyAgICAgICAgICAgICAgICBtSW5zdGFuY2VzLmluc2VydChtSW5zdGFuY2VzLmVuZCgpLCBp
bnN0YW5jZSwgaW5zdGFuY2UgKyAzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKKworICAgICAgICBnbEdl
bkJ1ZmZlcnMoMSwgJm1WZXJ0ZXhCdWZmZXIpOworCisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOworICAgIH0KKworICAgIHZvaWQgc2V0dXBEcmF3QXJyYXlzVGVzdChjb25zdCBzdGQ6OnN0
cmluZyAmdnMpCisgICAgeworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmcyA9IFNIQURFUl9T
T1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cisg
ICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGds
X0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLCAwLCAxLjApOworICAgICAgICAgICAgfQorICAgICAg
ICApOworCisgICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odnMsIGZzKTsKKyAgICAg
ICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7CisKKyAgICAgICAgLy8gU2V0IHRoZSB2aWV3cG9y
dAorICAgICAgICBnbFZpZXdwb3J0KDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hl
aWdodCgpKTsKKworICAgICAgICAvLyBDbGVhciB0aGUgY29sb3IgYnVmZmVyCisgICAgICAgIGds
Q2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisKKyAgICAgICAgLy8gVXNlIHRoZSBwcm9ncmFt
IG9iamVjdAorICAgICAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworICAgIH0KKworICAgIHZv
aWQgc2V0dXBJbnN0YW5jZWRQb2ludHNUZXN0KCkKKyAgICB7CisgICAgICAgIG1JbmRpY2VzLmNs
ZWFyKCk7CisgICAgICAgIG1JbmRpY2VzLnB1c2hfYmFjaygwKTsKKyAgICAgICAgbUluZGljZXMu
cHVzaF9iYWNrKDEpOworICAgICAgICBtSW5kaWNlcy5wdXNoX2JhY2soMik7CisgICAgICAgIG1J
bmRpY2VzLnB1c2hfYmFjaygzKTsKKworICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzID0gU0hBREVSX1NPVVJDRQorICAgICAgICAoCisgICAg
ICAgICAgICBhdHRyaWJ1dGUgdmVjMyBhX3Bvc2l0aW9uOworICAgICAgICAgICAgYXR0cmlidXRl
IHZlYzMgYV9pbnN0YW5jZVBvczsKKyAgICAgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gID0gdmVjNChhX3Bvc2l0aW9uLnh5eiwg
MS4wKTsKKyAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiAgPSB2ZWM0KGFfaW5zdGFuY2VQb3Mu
eHl6LCAxLjApOworICAgICAgICAgICAgICAgIGdsX1BvaW50U2l6ZSA9IDYuMDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmcyA9IFNIQURF
Ul9TT1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisgICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLCAwLCAxLjApOworICAgICAgICAgICAgfQorICAg
ICAgICApOworICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb24KKworICAgICAgICBtUHJvZ3JhbSA9
IENvbXBpbGVQcm9ncmFtKHZzLCBmcyk7CisgICAgICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0p
OworCisgICAgICAgIC8vIFNldCB0aGUgdmlld3BvcnQKKyAgICAgICAgZ2xWaWV3cG9ydCgwLCAw
LCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7CisKKyAgICAgICAgLy8gQ2xl
YXIgdGhlIGNvbG9yIGJ1ZmZlcgorICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQp
OworCisgICAgICAgIC8vIFVzZSB0aGUgcHJvZ3JhbSBvYmplY3QKKyAgICAgICAgZ2xVc2VQcm9n
cmFtKG1Qcm9ncmFtKTsKKyAgICB9CisKKyAgICB2b2lkIHJ1bkRyYXdBcnJheXNUZXN0KEdMaW50
IGZpcnN0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlQ291bnQsIGZsb2F0ICpvZmZz
ZXQpCisgICAgeworICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtVmVydGV4
QnVmZmVyKTsKKyAgICAgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgbUluc3RhbmNl
cy5zaXplKCkgKiBzaXplb2YobUluc3RhbmNlc1swXSksICZtSW5zdGFuY2VzWzBdLCBHTF9TVEFU
SUNfRFJBVyk7CisgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIDApOworCisg
ICAgICAgIC8vIEdldCB0aGUgYXR0cmlidXRlIGxvY2F0aW9ucworICAgICAgICBHTGludCBwb3Np
dGlvbkxvYyAgICA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJhX3Bvc2l0aW9uIik7
CisgICAgICAgIEdMaW50IGluc3RhbmNlUG9zTG9jID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJv
Z3JhbSwgImFfaW5zdGFuY2VQb3MiKTsKKworICAgICAgICAvLyBMb2FkIHRoZSB2ZXJ0ZXggcG9z
aXRpb24KKyAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0aW9uTG9jLCAzLCBHTF9G
TE9BVCwgR0xfRkFMU0UsIDAsIG1Ob25JbmRleGVkVmVydGljZXMuZGF0YSgpKTsKKyAgICAgICAg
Z2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxvYyk7CisKKyAgICAgICAgLy8gTG9h
ZCB0aGUgaW5zdGFuY2UgcG9zaXRpb24KKyAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JV
RkZFUiwgbVZlcnRleEJ1ZmZlcik7CisgICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihpbnN0
YW5jZVBvc0xvYywgMywgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCAwKTsKKyAgICAgICAgZ2xCaW5k
QnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgMCk7CisgICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmli
QXJyYXkoaW5zdGFuY2VQb3NMb2MpOworCisgICAgICAgIC8vIEVuYWJsZSBpbnN0YW5jaW5nCisg
ICAgICAgIG1WZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaW5zdGFuY2VQb3NMb2MsIDEpOworCisg
ICAgICAgIC8vIE9mZnNldAorICAgICAgICBHTGludCB1bmlmb3JtTG9jID0gZ2xHZXRVbmlmb3Jt
TG9jYXRpb24obVByb2dyYW0sICJ1X29mZnNldCIpOworICAgICAgICBBU1NFUlRfTkUodW5pZm9y
bUxvYywgLTEpOworICAgICAgICBnbFVuaWZvcm0zZnYodW5pZm9ybUxvYywgMSwgb2Zmc2V0KTsK
KworICAgICAgICAvLyBEbyB0aGUgaW5zdGFuY2VkIGRyYXcKKyAgICAgICAgbURyYXdBcnJheXNJ
bnN0YW5jZWRBTkdMRShHTF9UUklBTkdMRVMsIGZpcnN0LCBjb3VudCwgaW5zdGFuY2VDb3VudCk7
CisKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2
b2lkIHJ1bkRyYXdFbGVtZW50c1Rlc3Qoc3RkOjpzdHJpbmcgdnMsIGJvb2wgc2hvdWxkQXR0cmli
WmVyb0JlSW5zdGFuY2VkKQorICAgIHsKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnMgPSBT
SEFERVJfU09VUkNFCisgICAgICAgICgKKyAgICAgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworICAgICAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMCwgMCwgMS4wKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgKTsKKworICAgICAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZz
LCBmcyk7CisgICAgICAgIEFTU0VSVF9ORShwcm9ncmFtLCAwdSk7CisKKyAgICAgICAgLy8gR2V0
IHRoZSBhdHRyaWJ1dGUgbG9jYXRpb25zCisgICAgICAgIEdMaW50IHBvc2l0aW9uTG9jID0gZ2xH
ZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAiYV9wb3NpdGlvbiIpOworICAgICAgICBHTGludCBp
bnN0YW5jZVBvc0xvYyA9IGdsR2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgImFfaW5zdGFuY2VQ
b3MiKTsKKworICAgICAgICAvLyBJZiB0aGlzIEFTU0VSVCBmYWlscyB0aGVuIHRoZSB2ZXJ0ZXgg
c2hhZGVyIGNvZGUgc2hvdWxkIGJlIHJlZmFjdG9yZWQKKyAgICAgICAgQVNTRVJUX0VRKHNob3Vs
ZEF0dHJpYlplcm9CZUluc3RhbmNlZCwgKGluc3RhbmNlUG9zTG9jID09IDApKTsKKworICAgICAg
ICAvLyBTZXQgdGhlIHZpZXdwb3J0CisgICAgICAgIGdsVmlld3BvcnQoMCwgMCwgZ2V0V2luZG93
V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOworCisgICAgICAgIC8vIENsZWFyIHRoZSBjb2xv
ciBidWZmZXIKKyAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAgICAg
ICAvLyBVc2UgdGhlIHByb2dyYW0gb2JqZWN0CisgICAgICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFt
KTsKKworICAgICAgICAvLyBMb2FkIHRoZSB2ZXJ0ZXggcG9zaXRpb24KKyAgICAgICAgZ2xWZXJ0
ZXhBdHRyaWJQb2ludGVyKHBvc2l0aW9uTG9jLCAzLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIG1R
dWFkVmVydGljZXMuZGF0YSgpKTsKKyAgICAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShw
b3NpdGlvbkxvYyk7CisKKyAgICAgICAgLy8gTG9hZCB0aGUgaW5zdGFuY2UgcG9zaXRpb24KKyAg
ICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKGluc3RhbmNlUG9zTG9jLCAzLCBHTF9GTE9BVCwg
R0xfRkFMU0UsIDAsIG1JbnN0YW5jZXMuZGF0YSgpKTsKKyAgICAgICAgZ2xFbmFibGVWZXJ0ZXhB
dHRyaWJBcnJheShpbnN0YW5jZVBvc0xvYyk7CisKKyAgICAgICAgLy8gRW5hYmxlIGluc3RhbmNp
bmcKKyAgICAgICAgbVZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShpbnN0YW5jZVBvc0xvYywgMSk7
CisKKyAgICAgICAgLy8gRG8gdGhlIGluc3RhbmNlZCBkcmF3CisgICAgICAgIG1EcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRShHTF9UUklBTkdMRVMsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1JbmRp
Y2VzLnNpemUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJ
R05FRF9TSE9SVCwgbUluZGljZXMuZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8R0xzaXplaT4obUluc3RhbmNlcy5zaXplKCkpIC8gMyk7CisK
KyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgY2hlY2tRdWFkcygpOwor
ICAgIH0KKworICAgIHZvaWQgY2hlY2tRdWFkcygpCisgICAgeworICAgICAgICAvLyBDaGVjayB0
aGF0IHZhcmlvdXMgcGl4ZWxzIGFyZSB0aGUgZXhwZWN0ZWQgY29sb3IuCisgICAgICAgIGZvciAo
dW5zaWduZWQgaW50IHF1YWRJbmRleCA9IDA7IHF1YWRJbmRleCA8IDQ7ICsrcXVhZEluZGV4KQor
ICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYmFzZU9mZnNldCA9IHF1YWRJbmRl
eCAqIDM7CisKKyAgICAgICAgICAgIGludCBxdWFkeCA9IHN0YXRpY19jYXN0PGludD4oKChtSW5z
dGFuY2VzW2Jhc2VPZmZzZXQgKyAwXSkgKiAwLjVmICsgMC41ZikgKiBnZXRXaW5kb3dXaWR0aCgp
KTsKKyAgICAgICAgICAgIGludCBxdWFkeSA9IHN0YXRpY19jYXN0PGludD4oKChtSW5zdGFuY2Vz
W2Jhc2VPZmZzZXQgKyAxXSkgKiAwLjVmICsgMC41ZikgKiBnZXRXaW5kb3dIZWlnaHQoKSk7CisK
KyAgICAgICAgICAgIEVYUEVDVF9QSVhFTF9FUShxdWFkeCwgcXVhZHksIDI1NSwgMCwgMCwgMjU1
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIExvYWRlZCBlbnRyeSBwb2ludHMKKyAgICBQ
Rk5HTFZFUlRFWEFUVFJJQkRJVklTT1JBTkdMRVBST0MgbVZlcnRleEF0dHJpYkRpdmlzb3JBTkdM
RTsKKyAgICBQRk5HTERSQVdBUlJBWVNJTlNUQU5DRURBTkdMRVBST0MgbURyYXdBcnJheXNJbnN0
YW5jZWRBTkdMRTsKKyAgICBQRk5HTERSQVdFTEVNRU5UU0lOU1RBTkNFREFOR0xFUFJPQyBtRHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEU7CisKKyAgICAvLyBWZXJ0ZXggZGF0YQorICAgIHN0ZDo6
dmVjdG9yPEdMZmxvYXQ+IG1RdWFkVmVydGljZXM7CisgICAgc3RkOjp2ZWN0b3I8R0xmbG9hdD4g
bU5vbkluZGV4ZWRWZXJ0aWNlczsKKyAgICBzdGQ6OnZlY3RvcjxHTGZsb2F0PiBtVGV4Y29vcmRz
OworICAgIHN0ZDo6dmVjdG9yPEdMZmxvYXQ+IG1JbnN0YW5jZXM7CisgICAgc3RkOjp2ZWN0b3I8
R0x1c2hvcnQ+IG1JbmRpY2VzOworCisgICAgY29uc3QgR0xmbG9hdCBxdWFkUmFkaXVzID0gMC4z
MGY7CisKKyAgICBHTHVpbnQgbVByb2dyYW07CisgICAgR0x1aW50IG1WZXJ0ZXhCdWZmZXI7Cit9
OworCitjbGFzcyBJbnN0YW5jaW5nVGVzdEFsbENvbmZpZ3MgOiBwdWJsaWMgSW5zdGFuY2luZ1Rl
c3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIEluc3RhbmNpbmdUZXN0QWxsQ29uZmlncygpIHt9Cit9
OworCitjbGFzcyBJbnN0YW5jaW5nVGVzdE5vOV8zIDogcHVibGljIEluc3RhbmNpbmdUZXN0Cit7
CisgIHByb3RlY3RlZDoKKyAgICBJbnN0YW5jaW5nVGVzdE5vOV8zKCkge30KK307CisKK2NsYXNz
IEluc3RhbmNpbmdUZXN0UG9pbnRzIDogcHVibGljIEluc3RhbmNpbmdUZXN0Cit7CisgIHByb3Rl
Y3RlZDoKKyAgICBJbnN0YW5jaW5nVGVzdFBvaW50cygpIHt9Cit9OworCisvLyBUaGlzIHRlc3Qg
dXNlcyBhIHZlcnRleCBzaGFkZXIgd2l0aCB0aGUgZmlyc3QgYXR0cmlidXRlIChhdHRyaWJ1dGUg
emVybykgaW5zdGFuY2VkLgorLy8gT24gRDNEOSBhbmQgRDNEMTEgRkw5XzMsIHRoaXMgdHJpZ2dl
cnMgYSBzcGVjaWFsIGNvZGVwYXRoIHRoYXQgcmVhcnJhbmdlcyB0aGUgaW5wdXQgbGF5b3V0IHNl
bnQgdG8gRDNELAorLy8gdG8gZW5zdXJlIHRoYXQgc2xvdC9zdHJlYW0gemVybyBvZiB0aGUgaW5w
dXQgbGF5b3V0IGRvZXNuJ3QgY29udGFpbiBwZXItaW5zdGFuY2UgZGF0YS4KK1RFU1RfUChJbnN0
YW5jaW5nVGVzdEFsbENvbmZpZ3MsIEF0dHJpYnV0ZVplcm9JbnN0YW5jZWQpCit7CisgICAgY29u
c3Qgc3RkOjpzdHJpbmcgdnMgPSBTSEFERVJfU09VUkNFCisgICAgKAorICAgICAgICBhdHRyaWJ1
dGUgdmVjMyBhX2luc3RhbmNlUG9zOworICAgICAgICBhdHRyaWJ1dGUgdmVjMyBhX3Bvc2l0aW9u
OworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICBnbF9Qb3NpdGlv
biA9IHZlYzQoYV9wb3NpdGlvbi54eXogKyBhX2luc3RhbmNlUG9zLnh5eiwgMS4wKTsKKyAgICAg
ICAgfQorICAgICk7CisKKyAgICBydW5EcmF3RWxlbWVudHNUZXN0KHZzLCB0cnVlKTsKK30KKwor
Ly8gU2FtZSBhcyBBdHRyaWJ1dGVaZXJvSW5zdGFuY2VkLCBidXQgYXR0cmlidXRlIHplcm8gaXMg
bm90IGluc3RhbmNlZC4KKy8vIFRoaXMgZW5zdXJlcyB0aGUgZ2VuZXJhbCBpbnN0YW5jaW5nIGNv
ZGVwYXRoIChpLmUuIHdpdGhvdXQgcmVhcnJhbmdpbmcgdGhlIGlucHV0IGxheW91dCkgd29ya3Mg
YXMgZXhwZWN0ZWQuCitURVNUX1AoSW5zdGFuY2luZ1Rlc3RBbGxDb25maWdzLCBBdHRyaWJ1dGVa
ZXJvTm90SW5zdGFuY2VkKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzID0gU0hBREVSX1NP
VVJDRQorICAgICgKKyAgICAgICAgYXR0cmlidXRlIHZlYzMgYV9wb3NpdGlvbjsKKyAgICAgICAg
YXR0cmlidXRlIHZlYzMgYV9pbnN0YW5jZVBvczsKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGFfcG9zaXRpb24ueHl6ICsgYV9p
bnN0YW5jZVBvcy54eXosIDEuMCk7CisgICAgICAgIH0KKyAgICApOworCisgICAgcnVuRHJhd0Vs
ZW1lbnRzVGVzdCh2cywgZmFsc2UpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSAiZmlyc3QiIHBh
cmFtZXRlciB0byBnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSBpcyBvbmx5IGFuIG9mZnNldCBp
bnRvCisvLyB0aGUgbm9uLWluc3RhbmNlZCB2ZXJ0ZXggYXR0cmlidXRlcy4KK1RFU1RfUChJbnN0
YW5jaW5nVGVzdE5vOV8zLCBEcmF3QXJyYXlzV2l0aE9mZnNldCkKK3sKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyB2cyA9IFNIQURFUl9TT1VSQ0UKKyAgICAoCisgICAgICAgIGF0dHJpYnV0ZSB2ZWMz
IGFfcG9zaXRpb247CisgICAgICAgIGF0dHJpYnV0ZSB2ZWMzIGFfaW5zdGFuY2VQb3M7CisgICAg
ICAgIHVuaWZvcm0gdmVjMyB1X29mZnNldDsKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAg
eworICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGFfcG9zaXRpb24ueHl6ICsgYV9pbnN0
YW5jZVBvcy54eXogKyB1X29mZnNldCwgMS4wKTsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBz
ZXR1cERyYXdBcnJheXNUZXN0KHZzKTsKKworICAgIGZsb2F0IG9mZnNldDFbM10gPSB7IDAsIDAs
IDAgfTsKKyAgICBydW5EcmF3QXJyYXlzVGVzdCgwLCA2LCAyLCBvZmZzZXQxKTsKKworICAgIGZs
b2F0IG9mZnNldDJbM10gPSB7IDAuMGYsIDEuMGYsIDAgfTsKKyAgICBydW5EcmF3QXJyYXlzVGVz
dCg2LCA2LCAyLCBvZmZzZXQyKTsKKworICAgIGNoZWNrUXVhZHMoKTsKK30KKworLy8gVGhpcyB0
ZXN0IHZlcmlmaWVzIGluc3RhbmNpbmcgd2l0aCBHTF9QT0lOVFMgd2l0aCBnbERyYXdBcnJheXNJ
bnN0YW5jZWQgd29ya3MuCisvLyBPbiBEM0QxMSBGTDlfMywgdGhpcyB0cmlnZ2VycyBhIHNwZWNp
YWwgY29kZXBhdGggdGhhdCBlbXVsYXRlcyBpbnN0YW5jZWQgcG9pbnRzIHJlbmRlcmluZy4KK1RF
U1RfUChJbnN0YW5jaW5nVGVzdFBvaW50cywgRHJhd0FycmF5cykKK3sKKyAgICAvLyBEaXNhYmxl
IEQzRDExIFNESyBMYXllcnMgd2FybmluZ3MgY2hlY2tzLCBzZWUgQU5HTEUgaXNzdWUgNjY3IGZv
ciBkZXRhaWxzCisgICAgLy8gT24gV2luNywgdGhlIEQzRCBTREsgTGF5ZXJzIGVtaXRzIGEgZmFs
c2Ugd2FybmluZyBmb3IgdGhlc2UgdGVzdHMuCisgICAgLy8gVGhpcyBkb2Vzbid0IG9jY3VyIG9u
IFdpbmRvd3MgMTAgKFZlcnNpb24gMTUxMSkgdGhvdWdoLgorICAgIGlnbm9yZUQzRDExU0RLTGF5
ZXJzV2FybmluZ3MoKTsKKworICAgIHNldHVwSW5zdGFuY2VkUG9pbnRzVGVzdCgpOworCisgICAg
Z2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbVZlcnRleEJ1ZmZlcik7CisgICAgZ2xCdWZm
ZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgbUluc3RhbmNlcy5zaXplKCkgKiBzaXplb2YobUluc3Rh
bmNlc1swXSksICZtSW5zdGFuY2VzWzBdLAorICAgICAgICAgICAgICAgICBHTF9TVEFUSUNfRFJB
Vyk7CisgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgMCk7CisKKyAgICAvLyBHZXQg
dGhlIGF0dHJpYnV0ZSBsb2NhdGlvbnMKKyAgICBHTGludCBwb3NpdGlvbkxvYyAgICA9IGdsR2V0
QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJhX3Bvc2l0aW9uIik7CisgICAgR0xpbnQgaW5zdGFu
Y2VQb3NMb2MgPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAiYV9pbnN0YW5jZVBvcyIp
OworCisgICAgLy8gTG9hZCB0aGUgdmVydGV4IHBvc2l0aW9uCisgICAgR0xmbG9hdCBwb3NbM10g
PSB7MCwgMCwgMH07CisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0aW9uTG9jLCAzLCBH
TF9GTE9BVCwgR0xfRkFMU0UsIDAsIHBvcyk7CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJh
eShwb3NpdGlvbkxvYyk7CisKKyAgICAvLyBMb2FkIHRoZSBpbnN0YW5jZSBwb3NpdGlvbgorICAg
IGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1WZXJ0ZXhCdWZmZXIpOworICAgIGdsVmVy
dGV4QXR0cmliUG9pbnRlcihpbnN0YW5jZVBvc0xvYywgMywgR0xfRkxPQVQsIEdMX0ZBTFNFLCAw
LCAwKTsKKyAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCAwKTsKKyAgICBnbEVuYWJs
ZVZlcnRleEF0dHJpYkFycmF5KGluc3RhbmNlUG9zTG9jKTsKKworICAgIC8vIEVuYWJsZSBpbnN0
YW5jaW5nCisgICAgbVZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShpbnN0YW5jZVBvc0xvYywgMSk7
CisKKyAgICAvLyBEbyB0aGUgaW5zdGFuY2VkIGRyYXcKKyAgICBtRHJhd0FycmF5c0luc3RhbmNl
ZEFOR0xFKEdMX1BPSU5UUywgMCwgMSwgc3RhdGljX2Nhc3Q8R0xzaXplaT4obUluc3RhbmNlcy5z
aXplKCkpIC8gMyk7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIGNoZWNrUXVh
ZHMoKTsKK30KKworLy8gVGhpcyB0ZXN0IHZlcmlmaWVzIGluc3RhbmNpbmcgd2l0aCBHTF9QT0lO
VFMgd2l0aCBnbERyYXdFbGVtZW50c0luc3RhbmNlZCB3b3Jrcy4KKy8vIE9uIEQzRDExIEZMOV8z
LCB0aGlzIHRyaWdnZXJzIGEgc3BlY2lhbCBjb2RlcGF0aCB0aGF0IGVtdWxhdGVzIGluc3RhbmNl
ZCBwb2ludHMgcmVuZGVyaW5nLgorVEVTVF9QKEluc3RhbmNpbmdUZXN0UG9pbnRzLCBEcmF3RWxl
bWVudHMpCit7CisgICAgLy8gRGlzYWJsZSBEM0QxMSBTREsgTGF5ZXJzIHdhcm5pbmdzIGNoZWNr
cywgc2VlIEFOR0xFIGlzc3VlIDY2NyBmb3IgZGV0YWlscworICAgIC8vIE9uIFdpbjcsIHRoZSBE
M0QgU0RLIExheWVycyBlbWl0cyBhIGZhbHNlIHdhcm5pbmcgZm9yIHRoZXNlIHRlc3RzLgorICAg
IC8vIFRoaXMgZG9lc24ndCBvY2N1ciBvbiBXaW5kb3dzIDEwIChWZXJzaW9uIDE1MTEpIHRob3Vn
aC4KKyAgICBpZ25vcmVEM0QxMVNES0xheWVyc1dhcm5pbmdzKCk7CisKKyAgICBzZXR1cEluc3Rh
bmNlZFBvaW50c1Rlc3QoKTsKKworICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1W
ZXJ0ZXhCdWZmZXIpOworICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIG1JbnN0YW5j
ZXMuc2l6ZSgpICogc2l6ZW9mKG1JbnN0YW5jZXNbMF0pLCAmbUluc3RhbmNlc1swXSwKKyAgICAg
ICAgICAgICAgICAgR0xfU1RBVElDX0RSQVcpOworICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9C
VUZGRVIsIDApOworCisgICAgLy8gR2V0IHRoZSBhdHRyaWJ1dGUgbG9jYXRpb25zCisgICAgR0xp
bnQgcG9zaXRpb25Mb2MgICAgPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAiYV9wb3Np
dGlvbiIpOworICAgIEdMaW50IGluc3RhbmNlUG9zTG9jID0gZ2xHZXRBdHRyaWJMb2NhdGlvbiht
UHJvZ3JhbSwgImFfaW5zdGFuY2VQb3MiKTsKKworICAgIC8vIExvYWQgdGhlIHZlcnRleCBwb3Np
dGlvbgorICAgIEdMZmxvYXQgcG9zWzNdID0gezAsIDAsIDB9OworICAgIGdsVmVydGV4QXR0cmli
UG9pbnRlcihwb3NpdGlvbkxvYywgMywgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCBwb3MpOworICAg
IGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2MpOworCisgICAgLy8gTG9hZCB0
aGUgaW5zdGFuY2UgcG9zaXRpb24KKyAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBt
VmVydGV4QnVmZmVyKTsKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoaW5zdGFuY2VQb3NMb2Ms
IDMsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgMCk7CisgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZ
X0JVRkZFUiwgMCk7CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbnN0YW5jZVBvc0xv
Yyk7CisKKyAgICAvLyBFbmFibGUgaW5zdGFuY2luZworICAgIG1WZXJ0ZXhBdHRyaWJEaXZpc29y
QU5HTEUoaW5zdGFuY2VQb3NMb2MsIDEpOworCisgICAgLy8gRG8gdGhlIGluc3RhbmNlZCBkcmF3
CisgICAgbURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdMX1BPSU5UUywgc3RhdGljX2Nhc3Q8
R0xzaXplaT4obUluZGljZXMuc2l6ZSgpKSwgR0xfVU5TSUdORURfU0hPUlQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1JbmRpY2VzLmRhdGEoKSwgc3RhdGljX2Nhc3Q8R0xzaXpl
aT4obUluc3RhbmNlcy5zaXplKCkpIC8gMyk7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
KworICAgIGNoZWNrUXVhZHMoKTsKK30KKworLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNv
bmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNp
b24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KKy8vIFdlIHRlc3Qgb24gRDNE
OSBhbmQgRDNEMTEgOV8zIGJlY2F1c2UgdGhleSB1c2Ugc3BlY2lhbCBjb2RlcGF0aHMgd2hlbiBh
dHRyaWJ1dGUgemVybyBpcyBpbnN0YW5jZWQsIHVubGlrZSBEM0QxMS4KK0FOR0xFX0lOU1RBTlRJ
QVRFX1RFU1QoSW5zdGFuY2luZ1Rlc3RBbGxDb25maWdzLAorICAgICAgICAgICAgICAgICAgICAg
ICBFUzJfRDNEOSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8zKCksCisgICAgICAgICAgICAgICAgICAg
ICAgIEVTMl9PUEVOR0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCkp
OworCisvLyBUT0RPKGptYWRpbGwpOiBGaWd1cmUgb3V0IHRoZSBzaXR1YXRpb24gd2l0aCBEcmF3
SW5zdGFuY2VkIG9uIEZMIDlfMworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChJbnN0YW5jaW5nVGVz
dE5vOV8zLCBFUzJfRDNEOSgpLCBFUzJfRDNEMTEoKSk7CisKK0FOR0xFX0lOU1RBTlRJQVRFX1RF
U1QoSW5zdGFuY2luZ1Rlc3RQb2ludHMsIEVTMl9EM0QxMSgpLCBFUzJfRDNEMTFfRkw5XzMoKSk7
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvTGluZUxv
b3BUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvZ2xfdGVzdHMvTGluZUxvb3BUZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvTGluZUxvb3BUZXN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDIyNiBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgInRlc3RfdXRp
bHMvQU5HTEVUZXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKworY2xhc3MgTGluZUxv
b3BUZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgTGluZUxvb3BU
ZXN0KCkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRoKDI1Nik7CisgICAgICAgIHNldFdp
bmRvd0hlaWdodCgyNTYpOworICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOworICAgICAgICBz
ZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOworICAg
ICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIFNl
dFVwKCkKKyAgICB7CisgICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKKworICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyB2c1NvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKAorICAgICAg
ICAgICAgYXR0cmlidXRlIGhpZ2hwIHZlYzQgcG9zaXRpb247CisKKyAgICAgICAgICAgIHZvaWQg
bWFpbih2b2lkKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0g
cG9zaXRpb247CisgICAgICAgICAgICB9CisgICAgICAgICk7CisKKyAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgZnNTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgICAgICgKKyAgICAgICAgICAg
IHVuaWZvcm0gaGlnaHAgdmVjNCBjb2xvcjsKKyAgICAgICAgICAgIHZvaWQgbWFpbih2b2lkKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IGNvbG9yOworICAg
ICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dy
YW0odnNTb3VyY2UsIGZzU291cmNlKTsKKyAgICAgICAgaWYgKG1Qcm9ncmFtID09IDApCisgICAg
ICAgIHsKKyAgICAgICAgICAgIEZBSUwoKSA8PCAic2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZC4i
OworICAgICAgICB9CisKKyAgICAgICAgbVBvc2l0aW9uTG9jYXRpb24gPSBnbEdldEF0dHJpYkxv
Y2F0aW9uKG1Qcm9ncmFtLCAicG9zaXRpb24iKTsKKyAgICAgICAgbUNvbG9yTG9jYXRpb24gPSBn
bEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgImNvbG9yIik7CisKKyAgICAgICAgZ2xCbGVu
ZEZ1bmMoR0xfT05FLCBHTF9PTkUpOworICAgICAgICBnbEVuYWJsZShHTF9CTEVORCk7CisgICAg
ICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKKworICAgICAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQor
ICAgIHsKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKKworICAgICAgICBBTkdM
RVRlc3Q6OlRlYXJEb3duKCk7CisgICAgfQorCisgICAgdm9pZCBydW5UZXN0KEdMZW51bSBpbmRl
eFR5cGUsIEdMdWludCBpbmRleEJ1ZmZlciwgY29uc3QgR0x2b2lkICppbmRleFB0cikKKyAgICB7
CisgICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisKKyAgICAgICAgc3RhdGlj
IGNvbnN0IEdMZmxvYXQgbG9vcFBvc2l0aW9uc1tdID0KKyAgICAgICAgeworICAgICAgICAgICAg
IDAuMGYsICAwLjBmLAorICAgICAgICAgICAgIDAuMGYsICAwLjBmLAorICAgICAgICAgICAgIDAu
MGYsICAwLjBmLAorICAgICAgICAgICAgIDAuMGYsICAwLjBmLAorICAgICAgICAgICAgIDAuMGYs
ICAwLjBmLAorICAgICAgICAgICAgIDAuMGYsICAwLjBmLAorICAgICAgICAgICAgLTAuNWYsIC0w
LjVmLAorICAgICAgICAgICAgLTAuNWYsICAwLjVmLAorICAgICAgICAgICAgIDAuNWYsICAwLjVm
LAorICAgICAgICAgICAgIDAuNWYsIC0wLjVmCisgICAgICAgIH07CisKKyAgICAgICAgc3RhdGlj
IGNvbnN0IEdMZmxvYXQgc3RyaXBQb3NpdGlvbnNbXSA9CisgICAgICAgIHsKKyAgICAgICAgICAg
IC0wLjVmLCAtMC41ZiwKKyAgICAgICAgICAgIC0wLjVmLCAgMC41ZiwKKyAgICAgICAgICAgICAw
LjVmLCAgMC41ZiwKKyAgICAgICAgICAgICAwLjVmLCAtMC41ZgorICAgICAgICB9OworICAgICAg
ICBzdGF0aWMgY29uc3QgR0x1Ynl0ZSBzdHJpcEluZGljZXNbXSA9CisgICAgICAgIHsKKyAgICAg
ICAgICAgIDEsIDAsIDMsIDIsIDEKKyAgICAgICAgfTsKKworICAgICAgICBnbFVzZVByb2dyYW0o
bVByb2dyYW0pOworICAgICAgICBnbEJpbmRCdWZmZXIoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIs
IGluZGV4QnVmZmVyKTsKKyAgICAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtUG9zaXRp
b25Mb2NhdGlvbik7CisgICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihtUG9zaXRpb25Mb2Nh
dGlvbiwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCBsb29wUG9zaXRpb25zKTsKKyAgICAgICAg
Z2xVbmlmb3JtNGYobUNvbG9yTG9jYXRpb24sIDAuMGYsIDAuMGYsIDEuMGYsIDEuMGYpOworICAg
ICAgICBnbERyYXdFbGVtZW50cyhHTF9MSU5FX0xPT1AsIDQsIGluZGV4VHlwZSwgaW5kZXhQdHIp
OworCisgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgMCk7Cisg
ICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihtUG9zaXRpb25Mb2NhdGlvbiwgMiwgR0xfRkxP
QVQsIEdMX0ZBTFNFLCAwLCBzdHJpcFBvc2l0aW9ucyk7CisgICAgICAgIGdsVW5pZm9ybTRmKG1D
b2xvckxvY2F0aW9uLCAwLCAxLCAwLCAxKTsKKyAgICAgICAgZ2xEcmF3RWxlbWVudHMoR0xfTElO
RV9TVFJJUCwgNSwgR0xfVU5TSUdORURfQllURSwgc3RyaXBJbmRpY2VzKTsKKworICAgICAgICBz
dGQ6OnZlY3RvcjxHTHVieXRlPiBwaXhlbHMoZ2V0V2luZG93V2lkdGgoKSAqIGdldFdpbmRvd0hl
aWdodCgpICogNCk7CisgICAgICAgIGdsUmVhZFBpeGVscygwLCAwLCBnZXRXaW5kb3dXaWR0aCgp
LCBnZXRXaW5kb3dIZWlnaHQoKSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgJnBpeGVsc1sw
XSk7CisKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgZm9yIChpbnQg
eSA9IDA7IHkgPCBnZXRXaW5kb3dIZWlnaHQoKTsgeSsrKQorICAgICAgICB7CisgICAgICAgICAg
ICBmb3IgKGludCB4ID0gMDsgeCA8IGdldFdpbmRvd1dpZHRoKCk7IHgrKykKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBjb25zdCBHTHVieXRlKiBwaXhlbCA9ICZwaXhlbHNbMF0gKyAo
KHkgKiBnZXRXaW5kb3dXaWR0aCgpICsgeCkgKiA0KTsKKworICAgICAgICAgICAgICAgIEVYUEVD
VF9FUShwaXhlbFswXSwgMCk7CisgICAgICAgICAgICAgICAgRVhQRUNUX0VRKHBpeGVsWzFdLCBw
aXhlbFsyXSk7CisgICAgICAgICAgICAgICAgRVhQRUNUX0VRKHBpeGVsWzNdLCAyNTUpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgR0x1aW50IG1Qcm9ncmFtOworICAg
IEdMaW50IG1Qb3NpdGlvbkxvY2F0aW9uOworICAgIEdMaW50IG1Db2xvckxvY2F0aW9uOworfTsK
KworVEVTVF9QKExpbmVMb29wVGVzdCwgTGluZUxvb3BVQnl0ZUluZGljZXMpCit7CisgICAgLy8g
RGlzYWJsZSBEM0QxMSBTREsgTGF5ZXJzIHdhcm5pbmdzIGNoZWNrcywgc2VlIEFOR0xFIGlzc3Vl
IDY2NyBmb3IgZGV0YWlscworICAgIC8vIE9uIFdpbjcsIHRoZSBEM0QgU0RLIExheWVycyBlbWl0
cyBhIGZhbHNlIHdhcm5pbmcgZm9yIHRoZXNlIHRlc3RzLgorICAgIC8vIFRoaXMgZG9lc24ndCBv
Y2N1ciBvbiBXaW5kb3dzIDEwIChWZXJzaW9uIDE1MTEpIHRob3VnaC4KKyAgICBpZ25vcmVEM0Qx
MVNES0xheWVyc1dhcm5pbmdzKCk7CisKKyAgICBzdGF0aWMgY29uc3QgR0x1Ynl0ZSBpbmRpY2Vz
W10gPSB7IDAsIDcsIDYsIDksIDgsIDAgfTsKKyAgICBydW5UZXN0KEdMX1VOU0lHTkVEX0JZVEUs
IDAsIGluZGljZXMgKyAxKTsKK30KKworVEVTVF9QKExpbmVMb29wVGVzdCwgTGluZUxvb3BVU2hv
cnRJbmRpY2VzKQoreworICAgIC8vIERpc2FibGUgRDNEMTEgU0RLIExheWVycyB3YXJuaW5ncyBj
aGVja3MsIHNlZSBBTkdMRSBpc3N1ZSA2NjcgZm9yIGRldGFpbHMKKyAgICBpZ25vcmVEM0QxMVNE
S0xheWVyc1dhcm5pbmdzKCk7CisKKyAgICBzdGF0aWMgY29uc3QgR0x1c2hvcnQgaW5kaWNlc1td
ID0geyAwLCA3LCA2LCA5LCA4LCAwIH07CisgICAgcnVuVGVzdChHTF9VTlNJR05FRF9TSE9SVCwg
MCwgaW5kaWNlcyArIDEpOworfQorCitURVNUX1AoTGluZUxvb3BUZXN0LCBMaW5lTG9vcFVJbnRJ
bmRpY2VzKQoreworICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2VsZW1lbnRfaW5k
ZXhfdWludCIpKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIERpc2Fi
bGUgRDNEMTEgU0RLIExheWVycyB3YXJuaW5ncyBjaGVja3MsIHNlZSBBTkdMRSBpc3N1ZSA2Njcg
Zm9yIGRldGFpbHMKKyAgICBpZ25vcmVEM0QxMVNES0xheWVyc1dhcm5pbmdzKCk7CisKKyAgICBz
dGF0aWMgY29uc3QgR0x1aW50IGluZGljZXNbXSA9IHsgMCwgNywgNiwgOSwgOCwgMCB9OworICAg
IHJ1blRlc3QoR0xfVU5TSUdORURfSU5ULCAwLCBpbmRpY2VzICsgMSk7Cit9CisKK1RFU1RfUChM
aW5lTG9vcFRlc3QsIExpbmVMb29wVUJ5dGVJbmRleEJ1ZmZlcikKK3sKKyAgICAvLyBEaXNhYmxl
IEQzRDExIFNESyBMYXllcnMgd2FybmluZ3MgY2hlY2tzLCBzZWUgQU5HTEUgaXNzdWUgNjY3IGZv
ciBkZXRhaWxzCisgICAgaWdub3JlRDNEMTFTREtMYXllcnNXYXJuaW5ncygpOworCisgICAgc3Rh
dGljIGNvbnN0IEdMdWJ5dGUgaW5kaWNlc1tdID0geyAwLCA3LCA2LCA5LCA4LCAwIH07CisKKyAg
ICBHTHVpbnQgYnVmOworICAgIGdsR2VuQnVmZmVycygxLCAmYnVmKTsKKyAgICBnbEJpbmRCdWZm
ZXIoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGJ1Zik7CisgICAgZ2xCdWZmZXJEYXRhKEdMX0VM
RU1FTlRfQVJSQVlfQlVGRkVSLCBzaXplb2YoaW5kaWNlcyksIGluZGljZXMsIEdMX1NUQVRJQ19E
UkFXKTsKKworICAgIHJ1blRlc3QoR0xfVU5TSUdORURfQllURSwgYnVmLCByZWludGVycHJldF9j
YXN0PGNvbnN0IHZvaWQgKj4oc2l6ZW9mKEdMdWJ5dGUpKSk7CisKKyAgICBnbERlbGV0ZUJ1ZmZl
cnMoMSwgJmJ1Zik7Cit9CisKK1RFU1RfUChMaW5lTG9vcFRlc3QsIExpbmVMb29wVVNob3J0SW5k
ZXhCdWZmZXIpCit7CisgICAgLy8gRGlzYWJsZSBEM0QxMSBTREsgTGF5ZXJzIHdhcm5pbmdzIGNo
ZWNrcywgc2VlIEFOR0xFIGlzc3VlIDY2NyBmb3IgZGV0YWlscworICAgIGlnbm9yZUQzRDExU0RL
TGF5ZXJzV2FybmluZ3MoKTsKKworICAgIHN0YXRpYyBjb25zdCBHTHVzaG9ydCBpbmRpY2VzW10g
PSB7IDAsIDcsIDYsIDksIDgsIDAgfTsKKworICAgIEdMdWludCBidWY7CisgICAgZ2xHZW5CdWZm
ZXJzKDEsICZidWYpOworICAgIGdsQmluZEJ1ZmZlcihHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwg
YnVmKTsKKyAgICBnbEJ1ZmZlckRhdGEoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIHNpemVvZihp
bmRpY2VzKSwgaW5kaWNlcywgR0xfU1RBVElDX0RSQVcpOworCisgICAgcnVuVGVzdChHTF9VTlNJ
R05FRF9TSE9SVCwgYnVmLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQgKj4oc2l6ZW9mKEdM
dXNob3J0KSkpOworCisgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZidWYpOworfQorCitURVNUX1Ao
TGluZUxvb3BUZXN0LCBMaW5lTG9vcFVJbnRJbmRleEJ1ZmZlcikKK3sKKyAgICBpZiAoIWV4dGVu
c2lvbkVuYWJsZWQoIkdMX09FU19lbGVtZW50X2luZGV4X3VpbnQiKSkKKyAgICB7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICAvLyBEaXNhYmxlIEQzRDExIFNESyBMYXllcnMgd2Fybmlu
Z3MgY2hlY2tzLCBzZWUgQU5HTEUgaXNzdWUgNjY3IGZvciBkZXRhaWxzCisgICAgaWdub3JlRDNE
MTFTREtMYXllcnNXYXJuaW5ncygpOworCisgICAgc3RhdGljIGNvbnN0IEdMdWludCBpbmRpY2Vz
W10gPSB7IDAsIDcsIDYsIDksIDgsIDAgfTsKKworICAgIEdMdWludCBidWY7CisgICAgZ2xHZW5C
dWZmZXJzKDEsICZidWYpOworICAgIGdsQmluZEJ1ZmZlcihHTF9FTEVNRU5UX0FSUkFZX0JVRkZF
UiwgYnVmKTsKKyAgICBnbEJ1ZmZlckRhdGEoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIHNpemVv
ZihpbmRpY2VzKSwgaW5kaWNlcywgR0xfU1RBVElDX0RSQVcpOworCisgICAgcnVuVGVzdChHTF9V
TlNJR05FRF9JTlQsIGJ1ZiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkICo+KHNpemVvZihH
THVpbnQpKSk7CisKKyAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJmJ1Zik7Cit9CisKKy8vIFVzZSB0
aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwg
d2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWlu
c3QuCitBTkdMRV9JTlNUQU5USUFURV9URVNUKExpbmVMb29wVGVzdCwgRVMyX0QzRDkoKSwgRVMy
X0QzRDExKCksIEVTMl9PUEVOR0woKSwgRVMyX09QRU5HTEVTKCkpOwpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL01heFRleHR1cmVTaXplVGVzdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3Rz
L01heFRleHR1cmVTaXplVGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL01heFRleHR1cmVTaXplVGVzdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwyOTkgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpbmNsdWRlICJ0ZXN0X3V0
aWxzL0FOR0xFVGVzdC5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKK2NsYXNzIE1heFRl
eHR1cmVTaXplVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIE1h
eFRleHR1cmVTaXplVGVzdCgpCisgICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0aCg1MTIpOwor
ICAgICAgICBzZXRXaW5kb3dIZWlnaHQoNTEyKTsKKyAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4
KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAgICBzZXRDb25maWdCbHVl
Qml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAgIH0KKworICAgIHZv
aWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOwor
CisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzU291cmNlID0gU0hBREVSX1NPVVJDRQorICAg
ICAgICAoCisgICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisgICAgICAgICAgICBh
dHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjsKKyAgICAgICAgICAgIHZhcnlpbmcgdmVjMiB0ZXhjb29y
ZDsKKworICAgICAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOworICAgICAgICAgICAgICAgIHRleGNvb3JkID0g
KHBvc2l0aW9uLnh5ICogMC41KSArIDAuNTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKwor
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB0ZXh0dXJlRlNTb3VyY2UgPSBTSEFERVJfU09VUkNF
CisgICAgICAgICgKKyAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKKyAgICAgICAg
ICAgIHVuaWZvcm0gc2FtcGxlcjJEIHRleDsKKyAgICAgICAgICAgIHZhcnlpbmcgdmVjMiB0ZXhj
b29yZDsKKworICAgICAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQodGV4LCB0ZXhjb29yZCk7CisgICAgICAg
ICAgICB9CisgICAgICAgICk7CisKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgYmx1ZUZTU291
cmNlID0gU0hBREVSX1NPVVJDRQorICAgICAgICAoCisgICAgICAgICAgICBwcmVjaXNpb24gaGln
aHAgZmxvYXQ7CisKKyAgICAgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDAuMCwgMS4wLCAxLjApOworICAg
ICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAgIG1UZXh0dXJlUHJvZ3JhbSA9IENvbXBp
bGVQcm9ncmFtKHZzU291cmNlLCB0ZXh0dXJlRlNTb3VyY2UpOworICAgICAgICBtQmx1ZVByb2dy
YW0gPSBDb21waWxlUHJvZ3JhbSh2c1NvdXJjZSwgYmx1ZUZTU291cmNlKTsKKyAgICAgICAgaWYg
KG1UZXh0dXJlUHJvZ3JhbSA9PSAwIHx8IG1CbHVlUHJvZ3JhbSA9PSAwKQorICAgICAgICB7Cisg
ICAgICAgICAgICBGQUlMKCkgPDwgInNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQuIjsKKyAgICAg
ICAgfQorCisgICAgICAgIG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9j
YXRpb24obVRleHR1cmVQcm9ncmFtLCAidGV4Iik7CisKKyAgICAgICAgZ2xHZXRJbnRlZ2VydihH
TF9NQVhfVEVYVFVSRV9TSVpFLCAmbU1heFRleHR1cmUyRFNpemUpOworICAgICAgICBnbEdldElu
dGVnZXJ2KEdMX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUsICZtTWF4VGV4dHVyZUN1YmVTaXpl
KTsKKyAgICAgICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfUkVOREVSQlVGRkVSX1NJWkUsICZtTWF4
UmVuZGVyYnVmZmVyU2l6ZSk7CisKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAg
fQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBnbERlbGV0
ZVByb2dyYW0obVRleHR1cmVQcm9ncmFtKTsKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1CbHVl
UHJvZ3JhbSk7CisKKyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOworICAgIH0KKworICAg
IEdMdWludCBtVGV4dHVyZVByb2dyYW07CisgICAgR0xpbnQgbVRleHR1cmVVbmlmb3JtTG9jYXRp
b247CisKKyAgICBHTHVpbnQgbUJsdWVQcm9ncmFtOworCisgICAgR0xpbnQgbU1heFRleHR1cmUy
RFNpemU7CisgICAgR0xpbnQgbU1heFRleHR1cmVDdWJlU2l6ZTsKKyAgICBHTGludCBtTWF4UmVu
ZGVyYnVmZmVyU2l6ZTsKK307CisKK1RFU1RfUChNYXhUZXh0dXJlU2l6ZVRlc3QsIFNwZWNpZmlj
YXRpb25UZXhJbWFnZSkKK3sKKyAgICBHTHVpbnQgdGV4OworICAgIGdsR2VuVGV4dHVyZXMoMSwg
JnRleCk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXgpOworCisgICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElO
RUFSKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdf
RklMVEVSLCBHTF9MSU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKwor
ICAgIEdMc2l6ZWkgdGV4dHVyZVdpZHRoID0gbU1heFRleHR1cmUyRFNpemU7CisgICAgR0xzaXpl
aSB0ZXh0dXJlSGVpZ2h0ID0gNjQ7CisKKyAgICBzdGQ6OnZlY3RvcjxHTHVieXRlPiBkYXRhKHRl
eHR1cmVXaWR0aCAqIHRleHR1cmVIZWlnaHQgKiA0KTsKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8
IHRleHR1cmVIZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwg
dGV4dHVyZVdpZHRoOyB4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIEdMdWJ5dGUqIHBpeGVs
ID0gJmRhdGFbMF0gKyAoKHkgKiB0ZXh0dXJlV2lkdGggKyB4KSAqIDQpOworCisgICAgICAgICAg
ICAvLyBEcmF3IGEgZ3JhZGllbnQsIHJlZCBpbiBkaXJlY3Rpb24sIGdyZWVuIGluIHkgZGlyZWN0
aW9uCisgICAgICAgICAgICBwaXhlbFswXSA9IHN0YXRpY19jYXN0PEdMdWJ5dGU+KChmbG9hdCh4
KSAvIHRleHR1cmVXaWR0aCkgKiAyNTUpOworICAgICAgICAgICAgcGl4ZWxbMV0gPSBzdGF0aWNf
Y2FzdDxHTHVieXRlPigoZmxvYXQoeSkgLyB0ZXh0dXJlSGVpZ2h0KSAqIDI1NSk7CisgICAgICAg
ICAgICBwaXhlbFsyXSA9IDA7CisgICAgICAgICAgICBwaXhlbFszXSA9IDI1NTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCB0
ZXh0dXJlV2lkdGgsIHRleHR1cmVIZWlnaHQsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUs
ICZkYXRhWzBdKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsVXNlUHJvZ3Jh
bShtVGV4dHVyZVByb2dyYW0pOworICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJlVW5pZm9ybUxvY2F0
aW9uLCAwKTsKKworICAgIGRyYXdRdWFkKG1UZXh0dXJlUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41
Zik7CisKKyAgICBzdGQ6OnZlY3RvcjxHTHVieXRlPiBwaXhlbHMoZ2V0V2luZG93V2lkdGgoKSAq
IGdldFdpbmRvd0hlaWdodCgpICogNCk7CisgICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIGdldFdpbmRv
d1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAm
cGl4ZWxzWzBdKTsKKworICAgIGZvciAoaW50IHkgPSAxOyB5IDwgZ2V0V2luZG93SGVpZ2h0KCk7
IHkrKykKKyAgICB7CisgICAgICAgIGZvciAoaW50IHggPSAxOyB4IDwgZ2V0V2luZG93V2lkdGgo
KTsgeCsrKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBHTHVieXRlKiBwcmV2UGl4ZWwg
PSAmcGl4ZWxzWzBdICsgKCgoeSAtIDEpICogZ2V0V2luZG93V2lkdGgoKSArICh4IC0gMSkpICog
NCk7CisgICAgICAgICAgICBjb25zdCBHTHVieXRlKiBjdXJQaXhlbCA9ICZwaXhlbHNbMF0gKyAo
KHkgKiBnZXRXaW5kb3dXaWR0aCgpICsgeCkgKiA0KTsKKworICAgICAgICAgICAgRVhQRUNUX0dF
KGN1clBpeGVsWzBdLCBwcmV2UGl4ZWxbMF0pOworICAgICAgICAgICAgRVhQRUNUX0dFKGN1clBp
eGVsWzFdLCBwcmV2UGl4ZWxbMV0pOworICAgICAgICAgICAgRVhQRUNUX0VRKGN1clBpeGVsWzJd
LCBwcmV2UGl4ZWxbMl0pOworICAgICAgICAgICAgRVhQRUNUX0VRKGN1clBpeGVsWzNdLCBwcmV2
UGl4ZWxbM10pOworICAgICAgICB9CisgICAgfQorfQorCitURVNUX1AoTWF4VGV4dHVyZVNpemVU
ZXN0LCBTcGVjaWZpY2F0aW9uVGV4U3RvcmFnZSkKK3sKKyAgICBpZiAoZ2V0Q2xpZW50TWFqb3JW
ZXJzaW9uKCkgPCAzICYmCisgICAgICAgICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1
cmVfc3RvcmFnZSIpIHx8ICFleHRlbnNpb25FbmFibGVkKCJHTF9PRVNfcmdiOF9yZ2JhOCIpKSkK
KyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHTHVpbnQgdGV4OworICAgIGds
R2VuVGV4dHVyZXMoMSwgJnRleCk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0
ZXgpOworCisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlO
X0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAg
Z2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFN
UF9UT19FREdFKTsKKworICAgIEdMc2l6ZWkgdGV4dHVyZVdpZHRoID0gNjQ7CisgICAgR0xzaXpl
aSB0ZXh0dXJlSGVpZ2h0ID0gbU1heFRleHR1cmUyRFNpemU7CisKKyAgICBzdGQ6OnZlY3RvcjxH
THVieXRlPiBkYXRhKHRleHR1cmVXaWR0aCAqIHRleHR1cmVIZWlnaHQgKiA0KTsKKyAgICBmb3Ig
KGludCB5ID0gMDsgeSA8IHRleHR1cmVIZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIGZvciAo
aW50IHggPSAwOyB4IDwgdGV4dHVyZVdpZHRoOyB4KyspCisgICAgICAgIHsKKyAgICAgICAgICAg
IEdMdWJ5dGUqIHBpeGVsID0gJmRhdGFbMF0gKyAoKHkgKiB0ZXh0dXJlV2lkdGggKyB4KSAqIDQp
OworCisgICAgICAgICAgICAvLyBEcmF3IGEgZ3JhZGllbnQsIHJlZCBpbiBkaXJlY3Rpb24sIGdy
ZWVuIGluIHkgZGlyZWN0aW9uCisgICAgICAgICAgICBwaXhlbFswXSA9IHN0YXRpY19jYXN0PEdM
dWJ5dGU+KChmbG9hdCh4KSAvIHRleHR1cmVXaWR0aCkgKiAyNTUpOworICAgICAgICAgICAgcGl4
ZWxbMV0gPSBzdGF0aWNfY2FzdDxHTHVieXRlPigoZmxvYXQoeSkgLyB0ZXh0dXJlSGVpZ2h0KSAq
IDI1NSk7CisgICAgICAgICAgICBwaXhlbFsyXSA9IDA7CisgICAgICAgICAgICBwaXhlbFszXSA9
IDI1NTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24o
KSA8IDMpCisgICAgeworICAgICAgICBnbFRleFN0b3JhZ2UyREVYVChHTF9URVhUVVJFXzJELCAx
LCBHTF9SR0JBOF9PRVMsIHRleHR1cmVXaWR0aCwgdGV4dHVyZUhlaWdodCk7CisgICAgfQorICAg
IGVsc2UKKyAgICB7CisgICAgICAgIGdsVGV4U3RvcmFnZTJEKEdMX1RFWFRVUkVfMkQsIDEsIEdM
X1JHQkE4X09FUywgdGV4dHVyZVdpZHRoLCB0ZXh0dXJlSGVpZ2h0KTsKKyAgICB9CisgICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwg
MCwgMCwgMCwgdGV4dHVyZVdpZHRoLCB0ZXh0dXJlSGVpZ2h0LCBHTF9SR0JBLCBHTF9VTlNJR05F
RF9CWVRFLCAmZGF0YVswXSk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbFVz
ZVByb2dyYW0obVRleHR1cmVQcm9ncmFtKTsKKyAgICBnbFVuaWZvcm0xaShtVGV4dHVyZVVuaWZv
cm1Mb2NhdGlvbiwgMCk7CisKKyAgICBkcmF3UXVhZChtVGV4dHVyZVByb2dyYW0sICJwb3NpdGlv
biIsIDAuNWYpOworCisgICAgc3RkOjp2ZWN0b3I8R0x1Ynl0ZT4gcGl4ZWxzKGdldFdpbmRvd1dp
ZHRoKCkgKiBnZXRXaW5kb3dIZWlnaHQoKSAqIDQpOworICAgIGdsUmVhZFBpeGVscygwLCAwLCBn
ZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgR0xfUkdCQSwgR0xfVU5TSUdORURf
QllURSwgJnBpeGVsc1swXSk7CisKKyAgICBmb3IgKGludCB5ID0gMTsgeSA8IGdldFdpbmRvd0hl
aWdodCgpOyB5KyspCisgICAgeworICAgICAgICBmb3IgKGludCB4ID0gMTsgeCA8IGdldFdpbmRv
d1dpZHRoKCk7IHgrKykKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSogcHJl
dlBpeGVsID0gJnBpeGVsc1swXSArICgoKHkgLSAxKSAqIGdldFdpbmRvd1dpZHRoKCkgKyAoeCAt
IDEpKSAqIDQpOworICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSogY3VyUGl4ZWwgPSAmcGl4ZWxz
WzBdICsgKCh5ICogZ2V0V2luZG93V2lkdGgoKSArIHgpICogNCk7CisKKyAgICAgICAgICAgIEVY
UEVDVF9HRShjdXJQaXhlbFswXSwgcHJldlBpeGVsWzBdKTsKKyAgICAgICAgICAgIEVYUEVDVF9H
RShjdXJQaXhlbFsxXSwgcHJldlBpeGVsWzFdKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShjdXJQ
aXhlbFsyXSwgcHJldlBpeGVsWzJdKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShjdXJQaXhlbFsz
XSwgcHJldlBpeGVsWzNdKTsKKyAgICAgICAgfQorICAgIH0KK30KKworVEVTVF9QKE1heFRleHR1
cmVTaXplVGVzdCwgUmVuZGVyVG9UZXh0dXJlKQoreworICAgIGlmIChnZXRDbGllbnRNYWpvclZl
cnNpb24oKSA8IDMgJiYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9i
bGl0IikpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgZHVlIHRv
IG1pc3NpbmcgZ2xCbGl0RnJhbWVidWZmZXJbQU5HTEVdIHN1cHBvcnQuIiA8PCBzdGQ6OmVuZGw7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHTHVpbnQgZmJvID0gMDsKKyAgICBHTHVp
bnQgdGV4dHVyZUlkID0gMDsKKyAgICAvLyBjcmVhdGUgYSAxLWxldmVsIHRleHR1cmUgYXQgbWF4
aW11bSBzaXplCisgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4dHVyZUlkKTsKKyAgICBnbEJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmVJZCk7CisKKyAgICBHTHNpemVpIHRleHR1cmVX
aWR0aCA9IDY0OworICAgIEdMc2l6ZWkgdGV4dHVyZUhlaWdodCA9IG1NYXhUZXh0dXJlMkRTaXpl
OworCisgICAgLy8gdGV4dHVyZSBzZXR1cCBjb2RlCisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSX01JUE1BUF9MSU5FQVIp
OworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxU
RVIsIEdMX0xJTkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xf
VEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOworICAgIGds
VGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9CR1JBX0VYVCwgdGV4dHVyZVdpZHRoLCB0
ZXh0dXJlSGVpZ2h0LCAwLCBHTF9CR1JBX0VYVCwgR0xfVU5TSUdORURfQllURSwgTlVMTCk7Cisg
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBjcmVhdGUgYW4gRkJPIGFuZCBhdHRh
Y2ggdGhlIHRleHR1cmUKKyAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmZmJvKTsKKyAgICBnbEJp
bmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4
dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8y
RCwgdGV4dHVyZUlkLCAwKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVD
VF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0
YXR1cyhHTF9GUkFNRUJVRkZFUikpOworCisgICAgY29uc3QgaW50IGZyYW1lQ291bnQgPSA2NDsK
KyAgICBmb3IgKGludCBpID0gMDsgaSA8IGZyYW1lQ291bnQ7IGkrKykKKyAgICB7CisgICAgICAg
IC8vIGNsZWFyIHRoZSBzY3JlZW4KKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVC
VUZGRVIsIDApOworCisgICAgICAgIEdMdWJ5dGUgY2xlYXJSZWQgPSBzdGF0aWNfY2FzdDxHTHVi
eXRlPigoZmxvYXQoaSkgLyBmcmFtZUNvdW50KSAqIDI1NSk7CisgICAgICAgIEdMdWJ5dGUgY2xl
YXJHcmVlbiA9IDI1NSAtIGNsZWFyUmVkOworICAgICAgICBHTHVieXRlIGNsZWFyQmx1ZSA9IDA7
CisKKyAgICAgICAgZ2xDbGVhckNvbG9yKGNsZWFyUmVkIC8gMjU1LjBmLCBjbGVhckdyZWVuIC8g
MjU1LjBmLCBjbGVhckJsdWUgLyAyNTUuMGYsIDEuMGYpOworICAgICAgICBnbENsZWFyKEdMX0NP
TE9SX0JVRkZFUl9CSVQpOworCisgICAgICAgIC8vIHJlbmRlciBibHVlIGludG8gdGhlIHRleHR1
cmUKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIGZibyk7CisgICAg
ICAgIGRyYXdRdWFkKG1CbHVlUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisKKyAgICAgICAg
Ly8gY29weSBjb3JuZXIgb2YgdGV4dHVyZSB0byBMTCBjb3JuZXIgb2Ygd2luZG93CisgICAgICAg
IGdsQmluZEZyYW1lYnVmZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVJfQU5HTEUsIDApOworICAgICAg
ICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVSX0FOR0xFLCBmYm8pOworICAg
ICAgICBnbEJsaXRGcmFtZWJ1ZmZlckFOR0xFKDAsIDAsIHRleHR1cmVXaWR0aCAtIDEsIGdldFdp
bmRvd0hlaWdodCgpIC0gMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCB0
ZXh0dXJlV2lkdGggLSAxLCBnZXRXaW5kb3dIZWlnaHQoKSAtIDEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTkVBUkVTVCk7CisgICAgICAg
IGdsQmluZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJBTUVCVUZGRVJfQU5HTEUsIDApOworICAgICAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgICAgICBFWFBFQ1RfUElYRUxfRVEodGV4dHVy
ZVdpZHRoIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCAwLCAwLCAyNTUsIDI1NSk7CisgICAg
ICAgIEVYUEVDVF9QSVhFTF9FUSh0ZXh0dXJlV2lkdGggKyAxMCwgZ2V0V2luZG93SGVpZ2h0KCkg
LyAyLCBjbGVhclJlZCwgY2xlYXJHcmVlbiwgY2xlYXJCbHVlLCAyNTUpOworCisgICAgICAgIHN3
YXBCdWZmZXJzKCk7CisgICAgfQorCisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZG
RVIsIDApOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgMCk7CisKKyAgICBnbERl
bGV0ZUZyYW1lYnVmZmVycygxLCAmZmJvKTsKKyAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0ZXh0
dXJlSWQpOworfQorCisvLyBUT0RPKGdlb2ZmbGFuZyk6IEZpeCB0aGUgZGVwZW5kZW5jZSBvbiBn
bEJsaXRGcmFtZWJ1ZmZlckFOR0xFIHdpdGhvdXQgY2hlY2tzIGFuZCBhc3N1bWluZyB0aGUKKy8v
IGRlZmF1bHQgZnJhbWVidWZmZXIgaXMgQkdSQSB0byBlbmFibGUgdGhlIEdMIGFuZCBHTEVTIGJh
Y2tlbmRzLiAoaHR0cDovL2FuZ2xlYnVnLmNvbS8xMjg5KQorCisvLyBVc2UgdGhpcyB0byBzZWxl
Y3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMg
bWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgorQU5HTEVf
SU5TVEFOVElBVEVfVEVTVChNYXhUZXh0dXJlU2l6ZVRlc3QsIEVTMl9EM0Q5KCksIEVTMl9EM0Qx
MSgpLCBFUzJfRDNEMTFfRkw5XzMoKSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvZ2xfdGVzdHMvTWlwbWFwVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL01pcG1hcFRlc3QuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9NaXBt
YXBUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExNDEgQEAKKy8vCisvLyBDb3B5
cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisK
KyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5n
bGU7CisKK25hbWVzcGFjZQoreworCit2b2lkIFRleEltYWdlQ3ViZU1hcEZhY2VzKEdMaW50IGxl
dmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpwaXhlbHMpCit7CisgICAg
Z2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwgbGV2ZWwsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwgd2lkdGgsIDAsIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgdHlw
ZSwgcGl4ZWxzKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElW
RV9YLCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCB3aWR0aCwgMCwgZm9ybWF0LAorICAg
ICAgICAgICAgICAgICB0eXBlLCBwaXhlbHMpOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJF
X0NVQkVfTUFQX1BPU0lUSVZFX1ksIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIHdpZHRo
LCAwLCBmb3JtYXQsCisgICAgICAgICAgICAgICAgIHR5cGUsIHBpeGVscyk7CisgICAgZ2xUZXhJ
bWFnZTJEKEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgd2lkdGgsIDAsIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgdHlwZSwgcGl4
ZWxzKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aLCBs
ZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCB3aWR0aCwgMCwgZm9ybWF0LAorICAgICAgICAg
ICAgICAgICB0eXBlLCBwaXhlbHMpOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFX0NVQkVf
TUFQX05FR0FUSVZFX1osIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIHdpZHRoLCAwLCBm
b3JtYXQsCisgICAgICAgICAgICAgICAgIHR5cGUsIHBpeGVscyk7Cit9CisKK2NsYXNzIEJhc2VN
aXBtYXBUZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgdm9pZCBj
bGVhckFuZERyYXdRdWFkKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIHZpZXdwb3J0V2lkdGgsIEdM
c2l6ZWkgdmlld3BvcnRIZWlnaHQpCisgICAgeworICAgICAgICBnbENsZWFyQ29sb3IoMC4wZiwg
MC4wZiwgMC4wZiwgMS4wZik7CisgICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7
CisgICAgICAgIGdsVmlld3BvcnQoMCwgMCwgdmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQp
OworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgICAgICBkcmF3UXVhZChwcm9n
cmFtLCAicG9zaXRpb24iLCAwLjBmKTsKKyAgICB9Cit9OworCit9ICAvLyBuYW1lc3BhY2UKKwor
Y2xhc3MgTWlwbWFwVGVzdCA6IHB1YmxpYyBCYXNlTWlwbWFwVGVzdAoreworICBwcm90ZWN0ZWQ6
CisgICAgTWlwbWFwVGVzdCgpCisgICAgICAgIDogbTJEUHJvZ3JhbSgwKSwKKyAgICAgICAgICBt
Q3ViZVByb2dyYW0oMCksCisgICAgICAgICAgbVRleHR1cmUyRCgwKSwKKyAgICAgICAgICBtVGV4
dHVyZUN1YmUoMCksCisgICAgICAgICAgbUxldmVsWmVyb0JsdWVJbml0RGF0YShudWxscHRyKSwK
KyAgICAgICAgICBtTGV2ZWxaZXJvV2hpdGVJbml0RGF0YShudWxscHRyKSwKKyAgICAgICAgICBt
TGV2ZWxPbmVJbml0RGF0YShudWxscHRyKSwKKyAgICAgICAgICBtTGV2ZWxUd29Jbml0RGF0YShu
dWxscHRyKSwKKyAgICAgICAgICBtT2Zmc2NyZWVuRnJhbWVidWZmZXIoMCkKKyAgICB7CisgICAg
ICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7CisgICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOwor
ICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMo
OCk7CisgICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBo
YUJpdHMoOCk7CisgICAgfQorCisgICAgdm9pZCBzZXRVcDJEUHJvZ3JhbSgpCisgICAgeworICAg
ICAgICAvLyBWZXJ0ZXggU2hhZGVyIHNvdXJjZQorICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb2Zm
CisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzID0gU0hBREVSX1NPVVJDRQorICAgICAgICAo
CisgICAgICAgICAgICBhdHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjsKKyAgICAgICAgICAgIHZhcnlp
bmcgdmVjMiB2VGV4Q29vcmQ7CisKKyAgICAgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICAgICAgICAg
ICAgICB2VGV4Q29vcmQgICA9IChwb3NpdGlvbi54eSAqIDAuNSkgKyAwLjU7CisgICAgICAgICAg
ICB9CisgICAgICAgICk7CisKKyAgICAgICAgLy8gRnJhZ21lbnQgU2hhZGVyIHNvdXJjZQorICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyBmcyA9IFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKAorICAg
ICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgICAgICAgICAgIHVuaWZvcm0g
c2FtcGxlcjJEIHVUZXh0dXJlOworICAgICAgICAgICAgdmFyeWluZyB2ZWMyIHZUZXhDb29yZDsK
KworICAgICAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmUsIHZUZXhDb29yZCk7CisgICAgICAg
ICAgICB9CisgICAgICAgICk7CisgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorCisgICAgICAg
IG0yRFByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2cywgZnMpOworICAgICAgICBBU1NFUlRfTkUo
MHUsIG0yRFByb2dyYW0pOworICAgIH0KKworICAgIHZvaWQgc2V0VXBDdWJlUHJvZ3JhbSgpCisg
ICAgeworICAgICAgICAvLyBBIHNpbXBsZSB2ZXJ0ZXggc2hhZGVyIGZvciB0aGUgdGV4dHVyZSBj
dWJlCisgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgY3ViZVZTID0gU0hBREVSX1NPVVJDRQorICAgICAgICAoCisgICAgICAgICAgICBhdHRyaWJ1
dGUgdmVjNCBwb3NpdGlvbjsKKyAgICAgICAgICAgIHZhcnlpbmcgdmVjNCB2UG9zaXRpb247Cisg
ICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGds
X1Bvc2l0aW9uID0gcG9zaXRpb247CisgICAgICAgICAgICAgICAgdlBvc2l0aW9uID0gcG9zaXRp
b247CisgICAgICAgICAgICB9CisgICAgICAgICk7CisKKyAgICAgICAgLy8gQSB2ZXJ5IHNpbXBs
ZSBmcmFnbWVudCBzaGFkZXIgdG8gc2FtcGxlIGZyb20gdGhlIG5lZ2F0aXZlLVkgZmFjZSBvZiBh
IHRleHR1cmUgY3ViZS4KKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgY3ViZUZTID0gU0hBREVS
X1NPVVJDRQorICAgICAgICAoCisgICAgICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
KyAgICAgICAgICAgIHVuaWZvcm0gc2FtcGxlckN1YmUgdVRleHR1cmU7CisgICAgICAgICAgICB2
YXJ5aW5nIHZlYzQgdlBvc2l0aW9uOworCisgICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmVDdWJlKHVUZXh0
dXJlLCB2ZWMzKHZQb3NpdGlvbi54LCAtMSwgdlBvc2l0aW9uLnkpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgKTsKKyAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9uCisKKyAgICAgICAgbUN1YmVQ
cm9ncmFtID0gQ29tcGlsZVByb2dyYW0oY3ViZVZTLCBjdWJlRlMpOworICAgICAgICBBU1NFUlRf
TkUoMHUsIG1DdWJlUHJvZ3JhbSk7CisgICAgfQorCisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRl
CisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7CisKKyAgICAgICAgc2V0VXAyRFBy
b2dyYW0oKTsKKworICAgICAgICBzZXRVcEN1YmVQcm9ncmFtKCk7CisKKyAgICAgICAgbUxldmVs
WmVyb0JsdWVJbml0RGF0YSA9IGNyZWF0ZVJHQkluaXREYXRhKGdldFdpbmRvd1dpZHRoKCksIGdl
dFdpbmRvd0hlaWdodCgpLCAwLCAwLCAyNTUpOyAvLyBCbHVlCisgICAgICAgIG1MZXZlbFplcm9X
aGl0ZUluaXREYXRhID0gY3JlYXRlUkdCSW5pdERhdGEoZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2lu
ZG93SGVpZ2h0KCksIDI1NSwgMjU1LCAyNTUpOyAvLyBXaGl0ZQorICAgICAgICBtTGV2ZWxPbmVJ
bml0RGF0YSA9IGNyZWF0ZVJHQkluaXREYXRhKChnZXRXaW5kb3dXaWR0aCgpIC8gMiksIChnZXRX
aW5kb3dIZWlnaHQoKSAvIDIpLCAwLCAyNTUsIDApOyAgIC8vIEdyZWVuCisgICAgICAgIG1MZXZl
bFR3b0luaXREYXRhID0gY3JlYXRlUkdCSW5pdERhdGEoKGdldFdpbmRvd1dpZHRoKCkgLyA0KSwg
KGdldFdpbmRvd0hlaWdodCgpIC8gNCksIDI1NSwgMCwgMCk7ICAgLy8gUmVkCisKKyAgICAgICAg
Z2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1PZmZzY3JlZW5GcmFtZWJ1ZmZlcik7CisgICAgICAgIGds
R2VuVGV4dHVyZXMoMSwgJm1UZXh0dXJlMkQpOworCisgICAgICAgIC8vIEluaXRpYWxpemUgdGhl
IHRleHR1cmUyRCB0byBiZSBlbXB0eSwgYW5kIGRvbid0IHVzZSBtaXBzLgorICAgICAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOworICAgICAgICBnbFRleEltYWdl
MkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dI
ZWlnaHQoKSwgMCwgR0xfUkdCLCBHTF9VTlNJR05FRF9CWVRFLCBOVUxMKTsKKyAgICAgICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElO
RUFSKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
TUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKKworICAgICAgICBBU1NFUlRfRVEoZ2V0V2luZG93V2lk
dGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOworCisgICAgICAgIC8vIENyZWF0ZSBhIG5vbi1taXBw
ZWQgdGV4dHVyZSBjdWJlLiBTZXQgdGhlIG5lZ2F0aXZlLVkgZmFjZSB0byBiZSBibHVlLgorICAg
ICAgICBnbEdlblRleHR1cmVzKDEsICZtVGV4dHVyZUN1YmUpOworICAgICAgICBnbEJpbmRUZXh0
dXJlKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIG1UZXh0dXJlQ3ViZSk7CisgICAgICAgIFRleEltYWdl
Q3ViZU1hcEZhY2VzKDAsIEdMX1JHQiwgZ2V0V2luZG93V2lkdGgoKSwgR0xfUkdCLCBHTF9VTlNJ
R05FRF9CWVRFLCBudWxscHRyKTsKKyAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfQ1VC
RV9NQVBfTkVHQVRJVkVfWSwgMCwgR0xfUkdCLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dX
aWR0aCgpLAorICAgICAgICAgICAgICAgICAgICAgMCwgR0xfUkdCLCBHTF9VTlNJR05FRF9CWVRF
LCBtTGV2ZWxaZXJvQmx1ZUluaXREYXRhKTsKKworICAgICAgICAvLyBDb21wbGV0ZSB0aGUgdGV4
dHVyZSBjdWJlIHdpdGhvdXQgbWlwbWFwcyB0byBzdGFydCB3aXRoLgorICAgICAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV9DVUJFX01BUCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9O
RUFSRVNUKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIEdM
X1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisKKyAgICAgICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAgewor
ICAgICAgICBnbERlbGV0ZVByb2dyYW0obTJEUHJvZ3JhbSk7CisgICAgICAgIGdsRGVsZXRlUHJv
Z3JhbShtQ3ViZVByb2dyYW0pOworICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbU9m
ZnNjcmVlbkZyYW1lYnVmZmVyKTsKKyAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbVRleHR1
cmUyRCk7CisgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0dXJlQ3ViZSk7CisKKyAg
ICAgICAgU2FmZURlbGV0ZUFycmF5KG1MZXZlbFplcm9CbHVlSW5pdERhdGEpOworICAgICAgICBT
YWZlRGVsZXRlQXJyYXkobUxldmVsWmVyb1doaXRlSW5pdERhdGEpOworICAgICAgICBTYWZlRGVs
ZXRlQXJyYXkobUxldmVsT25lSW5pdERhdGEpOworICAgICAgICBTYWZlRGVsZXRlQXJyYXkobUxl
dmVsVHdvSW5pdERhdGEpOworCisgICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKKyAgICB9
CisKKyAgICBHTHVieXRlICpjcmVhdGVSR0JJbml0RGF0YShHTGludCB3aWR0aCwgR0xpbnQgaGVp
Z2h0LCBHTGludCByLCBHTGludCBnLCBHTGludCBiKQorICAgIHsKKyAgICAgICAgR0x1Ynl0ZSAq
ZGF0YSA9IG5ldyBHTHVieXRlWzMgKiB3aWR0aCAqIGhlaWdodF07CisKKyAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCB3aWR0aCAqIGhlaWdodDsgaSs9MSkKKyAgICAgICAgeworICAgICAgICAg
ICAgZGF0YVszICogaSArIDBdID0gc3RhdGljX2Nhc3Q8R0x1Ynl0ZT4ocik7CisgICAgICAgICAg
ICBkYXRhWzMgKiBpICsgMV0gPSBzdGF0aWNfY2FzdDxHTHVieXRlPihnKTsKKyAgICAgICAgICAg
IGRhdGFbMyAqIGkgKyAyXSA9IHN0YXRpY19jYXN0PEdMdWJ5dGU+KGIpOworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgfQorCisgICAgdm9pZCBjbGVhclRleHR1cmVMZXZl
bDAoR0xlbnVtIHRleHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
dGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHJlZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGdyZWVuLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZmxvYXQgYmx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZs
b2F0IGFscGhhKQorICAgIHsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZG
RVIsIG1PZmZzY3JlZW5GcmFtZWJ1ZmZlcik7CisgICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJl
MkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCB0ZXh0YXJnZXQsIHRleHR1
cmUsIDApOworICAgICAgICBBU1NFUlRfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRF
LCBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKKyAgICAgICAgZ2xD
bGVhckNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKKyAgICAgICAgZ2xDbGVhcihHTF9D
T0xPUl9CVUZGRVJfQklUKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZG
RVIsIDApOworICAgIH0KKworICAgIEdMdWludCBtMkRQcm9ncmFtOworICAgIEdMdWludCBtQ3Vi
ZVByb2dyYW07CisgICAgR0x1aW50IG1UZXh0dXJlMkQ7CisgICAgR0x1aW50IG1UZXh0dXJlQ3Vi
ZTsKKworICAgIEdMdWJ5dGUqIG1MZXZlbFplcm9CbHVlSW5pdERhdGE7CisgICAgR0x1Ynl0ZSog
bUxldmVsWmVyb1doaXRlSW5pdERhdGE7CisgICAgR0x1Ynl0ZSogbUxldmVsT25lSW5pdERhdGE7
CisgICAgR0x1Ynl0ZSogbUxldmVsVHdvSW5pdERhdGE7CisKKyAgcHJpdmF0ZToKKyAgICBHTHVp
bnQgbU9mZnNjcmVlbkZyYW1lYnVmZmVyOworfTsKKworY2xhc3MgTWlwbWFwVGVzdEVTMyA6IHB1
YmxpYyBCYXNlTWlwbWFwVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgTWlwbWFwVGVzdEVTMygp
CisgICAgICAgIDogbVRleHR1cmUoMCksCisgICAgICAgICAgbUFycmF5UHJvZ3JhbSgwKSwKKyAg
ICAgICAgICBtVGV4dHVyZUFycmF5U2xpY2VVbmlmb3JtTG9jYXRpb24oLTEpLAorICAgICAgICAg
IG0zRFByb2dyYW0oMCksCisgICAgICAgICAgbVRleHR1cmUzRFNsaWNlVW5pZm9ybUxvY2F0aW9u
KC0xKSwKKyAgICAgICAgICBtVGV4dHVyZTNETE9EVW5pZm9ybUxvY2F0aW9uKC0xKSwKKyAgICAg
ICAgICBtMkRQcm9ncmFtKDApCisKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7
CisgICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOworICAgICAgICBzZXRDb25maWdSZWRCaXRz
KDgpOworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0Js
dWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgfQorCisgICAg
c3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlKCkKKyAgICB7CisgICAgICAgIC8vIERvbid0
IHB1dCAiI3ZlcnNpb24gLi4uIiBvbiBpdHMgb3duIGxpbmUuIFNlZSBbY3BwXXAxOgorICAgICAg
ICAvLyAiSWYgdGhlcmUgYXJlIHNlcXVlbmNlcyBvZiBwcmVwcm9jZXNzaW5nIHRva2VucyB3aXRo
aW4gdGhlIGxpc3Qgb2YgYXJndW1lbnRzIHRoYXQKKyAgICAgICAgLy8gIHdvdWxkIG90aGVyd2lz
ZSBhY3QgYXMgcHJlcHJvY2Vzc2luZyBkaXJlY3RpdmVzLCB0aGUgYmVoYXZpb3IgaXMgdW5kZWZp
bmVkIgorICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgICAgICAgIHJldHVybiBTSEFERVJf
U09VUkNFCisgICAgICAgICggICAjdmVyc2lvbiAzMDAgZXNcbgorICAgICAgICAgICAgcHJlY2lz
aW9uIGhpZ2hwIGZsb2F0OworICAgICAgICAgICAgaW4gdmVjNCBwb3NpdGlvbjsKKyAgICAgICAg
ICAgIG91dCB2ZWMyIHRleGNvb3JkOworCisgICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbi54eSwg
MC4wLCAxLjApOworICAgICAgICAgICAgICAgIHRleGNvb3JkID0gKHBvc2l0aW9uLnh5ICogMC41
KSArIDAuNTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKyAgICAgICAgLy8gY2xhbmctZm9y
bWF0IG9uCisgICAgfQorCisgICAgdm9pZCBzZXRVcEFycmF5UHJvZ3JhbSgpCisgICAgeworICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZUFycmF5ID0gU0hBREVS
X1NPVVJDRQorICAgICAgICAoICAgI3ZlcnNpb24gMzAwIGVzXG4KKyAgICAgICAgICAgIHByZWNp
c2lvbiBoaWdocCBmbG9hdDsKKyAgICAgICAgICAgIHVuaWZvcm0gaGlnaHAgc2FtcGxlcjJEQXJy
YXkgdGV4OworICAgICAgICAgICAgdW5pZm9ybSBpbnQgc2xpY2U7CisgICAgICAgICAgICBpbiB2
ZWMyIHRleGNvb3JkOworICAgICAgICAgICAgb3V0IHZlYzQgb3V0X0ZyYWdDb2xvcjsKKworICAg
ICAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXRf
RnJhZ0NvbG9yID0gdGV4dHVyZSh0ZXgsIHZlYzModGV4Y29vcmQsIGZsb2F0KHNsaWNlKSkpOwor
ICAgICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAgIG1BcnJheVByb2dyYW0gPSBDb21w
aWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UoKSwgZnJhZ21lbnRTaGFkZXJTb3VyY2VBcnJh
eSk7CisgICAgICAgIGlmIChtQXJyYXlQcm9ncmFtID09IDApCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEZBSUwoKSA8PCAic2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZC4iOworICAgICAgICB9CisK
KyAgICAgICAgbVRleHR1cmVBcnJheVNsaWNlVW5pZm9ybUxvY2F0aW9uID0gZ2xHZXRVbmlmb3Jt
TG9jYXRpb24obUFycmF5UHJvZ3JhbSwgInNsaWNlIik7CisgICAgICAgIEFTU0VSVF9ORSgtMSwg
bVRleHR1cmVBcnJheVNsaWNlVW5pZm9ybUxvY2F0aW9uKTsKKworICAgICAgICBnbFVzZVByb2dy
YW0obUFycmF5UHJvZ3JhbSk7CisgICAgICAgIGdsVXNlUHJvZ3JhbSgwKTsKKyAgICAgICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7CisgICAgfQorCisgICAgdm9pZCBzZXRVcDNEUHJvZ3JhbSgpCisg
ICAgeworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZTNEID0g
U0hBREVSX1NPVVJDRQorICAgICAgICAoICAgI3ZlcnNpb24gMzAwIGVzXG4KKyAgICAgICAgICAg
IHByZWNpc2lvbiBoaWdocCBmbG9hdDsKKyAgICAgICAgICAgIHVuaWZvcm0gaGlnaHAgc2FtcGxl
cjNEIHRleDsKKyAgICAgICAgICAgIHVuaWZvcm0gZmxvYXQgc2xpY2U7CisgICAgICAgICAgICB1
bmlmb3JtIGZsb2F0IGxvZDsKKyAgICAgICAgICAgIGluIHZlYzIgdGV4Y29vcmQ7CisgICAgICAg
ICAgICBvdXQgdmVjNCBvdXRfRnJhZ0NvbG9yOworCisgICAgICAgICAgICB2b2lkIG1haW4oKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dF9GcmFnQ29sb3IgPSB0ZXh0dXJlTG9k
KHRleCwgdmVjMyh0ZXhjb29yZCwgc2xpY2UpLCBsb2QpOworICAgICAgICAgICAgfQorICAgICAg
ICApOworCisgICAgICAgIG0zRFByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJT
b3VyY2UoKSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UzRCk7CisgICAgICAgIGlmIChtM0RQcm9ncmFt
ID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIEZBSUwoKSA8PCAic2hhZGVyIGNvbXBpbGF0
aW9uIGZhaWxlZC4iOworICAgICAgICB9CisKKyAgICAgICAgbVRleHR1cmUzRFNsaWNlVW5pZm9y
bUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obTNEUHJvZ3JhbSwgInNsaWNlIik7Cisg
ICAgICAgIEFTU0VSVF9ORSgtMSwgbVRleHR1cmUzRFNsaWNlVW5pZm9ybUxvY2F0aW9uKTsKKwor
ICAgICAgICBtVGV4dHVyZTNETE9EVW5pZm9ybUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRp
b24obTNEUHJvZ3JhbSwgImxvZCIpOworICAgICAgICBBU1NFUlRfTkUoLTEsIG1UZXh0dXJlM0RM
T0RVbmlmb3JtTG9jYXRpb24pOworCisgICAgICAgIGdsVXNlUHJvZ3JhbShtM0RQcm9ncmFtKTsK
KyAgICAgICAgZ2xVbmlmb3JtMWYobVRleHR1cmUzRExPRFVuaWZvcm1Mb2NhdGlvbiwgMCk7Cisg
ICAgICAgIGdsVXNlUHJvZ3JhbSgwKTsKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cisg
ICAgfQorCisgICAgdm9pZCBzZXRVcDJEUHJvZ3JhbSgpCisgICAgeworICAgICAgICAvLyBjbGFu
Zy1mb3JtYXQgb2ZmCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291
cmNlMkQgPSBTSEFERVJfU09VUkNFCisgICAgICAgICggICAjdmVyc2lvbiAzMDAgZXNcbgorICAg
ICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworICAgICAgICAgICAgdW5pZm9ybSBoaWdo
cCBzYW1wbGVyMkQgdGV4OworICAgICAgICAgICAgaW4gdmVjMiB0ZXhjb29yZDsKKyAgICAgICAg
ICAgIG91dCB2ZWM0IG91dF9GcmFnQ29sb3I7CisKKyAgICAgICAgICAgIHZvaWQgbWFpbigpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0X0ZyYWdDb2xvciA9IHRleHR1cmUodGV4
LCB0ZXhjb29yZCk7CisgICAgICAgICAgICB9CisgICAgICAgICk7CisgICAgICAgIC8vIGNsYW5n
LWZvcm1hdCBvbgorCisgICAgICAgIG0yRFByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhT
aGFkZXJTb3VyY2UoKSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UyRCk7CisgICAgICAgIEFTU0VSVF9O
RSgwdSwgbTJEUHJvZ3JhbSk7CisKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAg
fQorCisgICAgdm9pZCBzZXRVcEN1YmVQcm9ncmFtKCkKKyAgICB7CisgICAgICAgIC8vIEEgdmVy
eSBzaW1wbGUgZnJhZ21lbnQgc2hhZGVyIHRvIHNhbXBsZSBmcm9tIHRoZSBuZWdhdGl2ZS1ZIGZh
Y2Ugb2YgYSB0ZXh0dXJlIGN1YmUuCisgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgY3ViZUZTID0gU0hBREVSX1NPVVJDRQorICAgICAgICAoICAg
I3ZlcnNpb24gMzAwIGVzXG4KKyAgICAgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
ICAgICAgICAgICAgdW5pZm9ybSBzYW1wbGVyQ3ViZSB1VGV4dHVyZTsKKyAgICAgICAgICAgIGlu
IHZlYzIgdGV4Y29vcmQ7CisgICAgICAgICAgICBvdXQgdmVjNCBvdXRfRnJhZ0NvbG9yOworCisg
ICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91
dF9GcmFnQ29sb3IgPSB0ZXh0dXJlKHVUZXh0dXJlLCB2ZWMzKHRleGNvb3JkLngsIC0xLCB0ZXhj
b29yZC55KSk7CisgICAgICAgICAgICB9CisgICAgICAgICk7CisgICAgICAgIC8vIGNsYW5nLWZv
cm1hdCBvbgorCisgICAgICAgIG1DdWJlUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNo
YWRlclNvdXJjZSgpLCBjdWJlRlMpOworICAgICAgICBBU1NFUlRfTkUoMHUsIG1DdWJlUHJvZ3Jh
bSk7CisKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgfQorCisgICAgdm9pZCBT
ZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7CisKKyAg
ICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbVRleHR1cmUpOworICAgICAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKKworICAgICAgICBzZXRVcEFycmF5UHJvZ3JhbSgpOworICAgICAgICBzZXRVcDNE
UHJvZ3JhbSgpOworICAgICAgICBzZXRVcDJEUHJvZ3JhbSgpOworICAgICAgICBzZXRVcEN1YmVQ
cm9ncmFtKCk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAgewor
ICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtVGV4dHVyZSk7CisKKyAgICAgICAgZ2xEZWxl
dGVQcm9ncmFtKG1BcnJheVByb2dyYW0pOworICAgICAgICBnbERlbGV0ZVByb2dyYW0obTNEUHJv
Z3JhbSk7CisgICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtMkRQcm9ncmFtKTsKKyAgICAgICAgZ2xE
ZWxldGVQcm9ncmFtKG1DdWJlUHJvZ3JhbSk7CisKKyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93
bigpOworICAgIH0KKworICAgIEdMdWludCBtVGV4dHVyZTsKKworICAgIEdMdWludCBtQXJyYXlQ
cm9ncmFtOworICAgIEdMaW50IG1UZXh0dXJlQXJyYXlTbGljZVVuaWZvcm1Mb2NhdGlvbjsKKwor
ICAgIEdMdWludCBtM0RQcm9ncmFtOworICAgIEdMaW50IG1UZXh0dXJlM0RTbGljZVVuaWZvcm1M
b2NhdGlvbjsKKyAgICBHTGludCBtVGV4dHVyZTNETE9EVW5pZm9ybUxvY2F0aW9uOworCisgICAg
R0x1aW50IG0yRFByb2dyYW07CisKKyAgICBHTHVpbnQgbUN1YmVQcm9ncmFtOworfTsKKworLy8g
VGhpcyB0ZXN0IHVzZXMgaW5pdCBkYXRhIGZvciB0aGUgZmlyc3QgdGhyZWUgbGV2ZWxzIG9mIHRo
ZSB0ZXh0dXJlLiBJdCBwYXNzZXMgdGhlIGxldmVsIDAgZGF0YSBpbiwgdGhlbiByZW5kZXJzLCB0
aGVuIGxldmVsIDEsIHRoZW4gcmVuZGVycywgZXRjLgorLy8gVGhpcyBlbnN1cmVzIHRoYXQgcmVu
ZGVyZXJzIHVzaW5nIHRoZSB6ZXJvIExPRCB3b3JrYXJvdW5kIChlLmcuIEQzRDExIEZMOV8zKSBj
b3JyZWN0bHkgcGFzcyBpbml0IGRhdGEgdG8gdGhlIG1pcG1hcHBlZCB0ZXh0dXJlLAorLy8gZXZl
biBpZiB0aGUgdGhlIHplcm8tTE9EIHRleHR1cmUgaXMgY3VycmVudGx5IGluIHVzZS4KK1RFU1Rf
UChNaXBtYXBUZXN0LCBESVNBQkxFRF9UaHJlZUxldmVsc0luaXREYXRhKQoreworICAgIC8vIFBh
c3MgaW4gbGV2ZWwgemVybyBpbml0IGRhdGEuCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
XzJELCBtVGV4dHVyZTJEKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xf
UkdCLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgMCwgR0xfUkdCLCBHTF9V
TlNJR05FRF9CWVRFLCBtTGV2ZWxaZXJvQmx1ZUluaXREYXRhKTsKKyAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKKworICAgIC8vIERpc2FibGUgbWlwcy4KKyAgICBnbFRleFBhcmFtZXRlcmkoR0xf
VEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKworICAgIC8v
IERyYXcgYSBmdWxsLXNpemVkIHF1YWQsIGFuZCBjaGVjayBpdCdzIGJsdWUuCisgICAgY2xlYXJB
bmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQo
KSk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRX
aW5kb3dIZWlnaHQoKSAvIDIsIEdMQ29sb3I6OmJsdWUpOworCisgICAgLy8gRHJhdyBhIGhhbGYt
c2l6ZWQgcXVhZCwgYW5kIGNoZWNrIGl0J3MgYmx1ZS4KKyAgICBjbGVhckFuZERyYXdRdWFkKG0y
RFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIpOwor
ICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93
SGVpZ2h0KCkgLyA0LCBHTENvbG9yOjpibHVlKTsKKworICAgIC8vIERyYXcgYSBxdWFydGVyLXNp
emVkIHF1YWQsIGFuZCBjaGVjayBpdCdzIGJsdWUuCisgICAgY2xlYXJBbmREcmF3UXVhZChtMkRQ
cm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA0KTsKKyAg
ICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDgsIGdldFdpbmRvd0hl
aWdodCgpIC8gOCwgR0xDb2xvcjo6Ymx1ZSk7CisKKyAgICAvLyBDb21wbGV0ZSB0aGUgdGV4dHVy
ZSBieSBpbml0aWFsaXppbmcgdGhlIHJlbWFpbmluZyBsZXZlbHMuCisgICAgaW50IG4gPSAxOwor
ICAgIHdoaWxlIChnZXRXaW5kb3dXaWR0aCgpIC8gKDFVIDw8IG4pID49IDEpCisgICAgeworICAg
ICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgbiwgR0xfUkdCLCBnZXRXaW5kb3dXaWR0
aCgpIC8gKDFVIDw8IG4pLCBnZXRXaW5kb3dXaWR0aCgpIC8gKDFVIDw8IG4pLCAwLCBHTF9SR0Is
IEdMX1VOU0lHTkVEX0JZVEUsIE5VTEwpOworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
KyAgICAgICAgbis9MTsKKyAgICB9CisKKyAgICAvLyBQYXNzIGluIGxldmVsIG9uZSBpbml0IGRh
dGEuCisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDEsIEdMX1JHQiwgZ2V0V2luZG93
V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgMCwgR0xfUkdCLCBHTF9VTlNJR05F
RF9CWVRFLCBtTGV2ZWxPbmVJbml0RGF0YSk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisK
KyAgICAvLyBEcmF3IGEgZnVsbC1zaXplZCBxdWFkLCBhbmQgY2hlY2sgaXQncyBibHVlLgorICAg
IGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93
SGVpZ2h0KCkpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8g
MiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCBHTENvbG9yOjpibHVlKTsKKworICAgIC8vIERyYXcg
YSBoYWxmLXNpemVkIHF1YWQsIGFuZCBjaGVjayBpdCdzIGJsdWUuIFdlJ3ZlIG5vdCBlbmFibGVk
IG1pcG1hcHMgeWV0LCBzbyBvdXIgaW5pdCBkYXRhIGZvciBsZXZlbCBvbmUgc2hvdWxkbid0IGJl
IHVzZWQuCisgICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgp
IC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEo
Z2V0V2luZG93V2lkdGgoKSAvIDQsIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgR0xDb2xvcjo6Ymx1
ZSk7CisKKyAgICAvLyBFbmFibGUgbWlwbWFwcy4KKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVY
VFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVJfTUlQTUFQX05FQVJFU1Qp
OworCisgICAgLy8gRHJhdyBhIGhhbGYtc2l6ZWQgcXVhZCwgYW5kIGNoZWNrIGl0J3MgZ3JlZW4u
CisgICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpIC8gMiwg
Z2V0V2luZG93SGVpZ2h0KCkgLyAyKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2lu
ZG93V2lkdGgoKSAvIDQsIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgR0xDb2xvcjo6Z3JlZW4pOwor
CisgICAgLy8gRHJhdyBhIHF1YXJ0ZXItc2l6ZWQgcXVhZCwgYW5kIGNoZWNrIGl0J3MgYmxhY2ss
IHNpbmNlIHdlJ3ZlIG5vdCBwYXNzZWQgYW55IGluaXQgZGF0YSBmb3IgbGV2ZWwgdHdvLgorICAg
IGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSAvIDQsIGdldFdp
bmRvd0hlaWdodCgpIC8gNCk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dp
ZHRoKCkgLyA4LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDgsIEdMQ29sb3I6OmJsYWNrKTsKKworICAg
IC8vIFBhc3MgaW4gbGV2ZWwgdHdvIGluaXQgZGF0YS4KKyAgICBnbFRleEltYWdlMkQoR0xfVEVY
VFVSRV8yRCwgMiwgR0xfUkdCLCBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93SGVpZ2h0
KCkgLyA0LCAwLCBHTF9SR0IsIEdMX1VOU0lHTkVEX0JZVEUsIG1MZXZlbFR3b0luaXREYXRhKTsK
KyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIERyYXcgYSBmdWxsLXNpemVkIHF1
YWQsIGFuZCBjaGVjayBpdCdzIGJsdWUuCisgICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFt
LCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7CisgICAgRVhQRUNUX1BJWEVM
X0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIEdM
Q29sb3I6OmJsdWUpOworCisgICAgLy8gRHJhdyBhIGhhbGYtc2l6ZWQgcXVhZCwgYW5kIGNoZWNr
IGl0J3MgZ3JlZW4uCisgICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dX
aWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09M
T1JfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDQsIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgR0xDb2xv
cjo6Z3JlZW4pOworCisgICAgLy8gRHJhdyBhIHF1YXJ0ZXItc2l6ZWQgcXVhZCwgYW5kIGNoZWNr
IGl0J3MgcmVkLgorICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lk
dGgoKSAvIDQsIGdldFdpbmRvd0hlaWdodCgpIC8gNCk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9S
X0VRKGdldFdpbmRvd1dpZHRoKCkgLyA4LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDgsIEdMQ29sb3I6
OnJlZCk7CisKKyAgICAvLyBOb3cgZGlzYWJsZSBtaXBtYXBzIGFnYWluLCBhbmQgcmVuZGVyIG11
bHRpcGxlIHNpemVkIHF1YWRzLiBUaGV5IHNob3VsZCBhbGwgYmUgYmx1ZSwgc2luY2UgbGV2ZWwg
MCBpcyBibHVlLgorICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJF
X01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3Jh
bSwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOworICAgIEVYUEVDVF9QSVhF
TF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCBH
TENvbG9yOjpibHVlKTsKKyAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRv
d1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIpOworICAgIEVYUEVDVF9QSVhFTF9D
T0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCBHTENv
bG9yOjpibHVlKTsKKyAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dp
ZHRoKCkgLyA0LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDQpOworICAgIEVYUEVDVF9QSVhFTF9DT0xP
Ul9FUShnZXRXaW5kb3dXaWR0aCgpIC8gOCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA4LCBHTENvbG9y
OjpibHVlKTsKKworICAgIC8vIE5vdyByZXNldCBsZXZlbCAwIHRvIHdoaXRlLCBrZWVwaW5nIG1p
cG1hcHMgZGlzYWJsZWQuIFRoZW4sIHJlbmRlciB2YXJpb3VzIHNpemVkIHF1YWRzLiBUaGV5IHNo
b3VsZCBiZSB3aGl0ZS4KKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdC
LCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgMCwgR0xfUkdCLCBHTF9VTlNJ
R05FRF9CWVRFLCBtTGV2ZWxaZXJvV2hpdGVJbml0RGF0YSk7CisgICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7CisKKyAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRo
KCksIGdldFdpbmRvd0hlaWdodCgpKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2lu
ZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgR0xDb2xvcjo6d2hpdGUpOwor
ICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdl
dFdpbmRvd0hlaWdodCgpIC8gMik7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRv
d1dpZHRoKCkgLyA0LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIEdMQ29sb3I6OndoaXRlKTsKKyAg
ICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCkgLyA0LCBnZXRX
aW5kb3dIZWlnaHQoKSAvIDQpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dX
aWR0aCgpIC8gOCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA4LCBHTENvbG9yOjp3aGl0ZSk7CisKKyAg
ICAvLyBUaGVuIGVuYWJsZSBtaXBtYXBzIGFnYWluLiBUaGUgcXVhZHMgc2hvdWxkIGJlIHdoaXRl
LCBncmVlbiwgcmVkIHJlc3BlY3RpdmVseS4KKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVJfTUlQTUFQX05FQVJFU1QpOwor
CisgICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRX
aW5kb3dIZWlnaHQoKSk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRo
KCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIEdMQ29sb3I6OndoaXRlKTsKKyAgICBjbGVh
ckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dI
ZWlnaHQoKSAvIDIpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgp
IC8gNCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCBHTENvbG9yOjpncmVlbik7CisgICAgY2xlYXJB
bmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93SGVp
Z2h0KCkgLyA0KTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgoKSAv
IDgsIGdldFdpbmRvd0hlaWdodCgpIC8gOCwgR0xDb2xvcjo6cmVkKTsKK30KKworLy8gVGhpcyB0
ZXN0IGdlbmVyYXRlcyAoYW5kIHVzZXMpIG1pcG1hcHMgb24gYSB0ZXh0dXJlIHVzaW5nIGluaXQg
ZGF0YS4gRDNEMTEgd2lsbCB1c2UgYSBub24tcmVuZGVyYWJsZSBUZXh0dXJlU3RvcmFnZSBmb3Ig
dGhpcy4KKy8vIFRoZSB0ZXN0IHRoZW4gZGlzYWJsZXMgbWlwcywgcmVuZGVycyB0byBsZXZlbCB6
ZXJvIG9mIHRoZSB0ZXh0dXJlLCBhbmQgcmVlbmFibGVzIG1pcHMgYmVmb3JlIHVzaW5nIHRoZSB0
ZXh0dXJlIGFnYWluLgorLy8gVG8gZG8gdGhpcywgRDNEMTEgaGFzIHRvIGNvbnZlcnQgdGhlIFRl
eHR1cmVTdG9yYWdlIGludG8gYSByZW5kZXJhYmxlIG9uZS4KKy8vIFRoaXMgdGVzdCBlbnN1cmVz
IHRoYXQgdGhlIGNvbnZlcnNpb24gd29ya3MgY29ycmVjdGx5LgorLy8gSW4gcGFydGljdWxhciwg
b24gRDNEMTEgRmVhdHVyZSBMZXZlbCA5XzMgaXQgZW5zdXJlcyB0aGF0IGJvdGggdGhlIHplcm8g
TE9EIHdvcmthcm91bmQgdGV4dHVyZSBBTkQgdGhlICdub3JtYWwnIHRleHR1cmUgYXJlIGNvcGll
ZCBkdXJpbmcgY29udmVyc2lvbi4KK1RFU1RfUChNaXBtYXBUZXN0LCBHZW5lcmF0ZU1pcG1hcEZy
b21Jbml0RGF0YVRoZW5SZW5kZXIpCit7CisgICAgLy8gUGFzcyBpbiBpbml0aWFsIGRhdGEgc28g
dGhlIHRleHR1cmUgaXMgYmx1ZS4KKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1U
ZXh0dXJlMkQpOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0IsIGdl
dFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAwLCBHTF9SR0IsIEdMX1VOU0lHTkVE
X0JZVEUsIG1MZXZlbFplcm9CbHVlSW5pdERhdGEpOworCisgICAgLy8gVGhlbiBnZW5lcmF0ZSB0
aGUgbWlwcy4KKyAgICBnbEdlbmVyYXRlTWlwbWFwKEdMX1RFWFRVUkVfMkQpOworICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOworCisgICAgLy8gRW5hYmxlIG1pcG1hcHMuCisgICAgZ2xUZXhQYXJh
bWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSX01J
UE1BUF9ORUFSRVNUKTsKKworICAgIC8vIE5vdyBkcmF3IHRoZSB0ZXh0dXJlIHRvIHZhcmlvdXMg
ZGlmZmVyZW50IHNpemVkIGFyZWFzLgorICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwg
Z2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOworICAgIEVYUEVDVF9QSVhFTF9D
T0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCBHTENv
bG9yOjpibHVlKTsKKworICAgIC8vIFVzZSBtaXAgbGV2ZWwgMQorICAgIGNsZWFyQW5kRHJhd1F1
YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8g
Mik7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyA0LCBnZXRX
aW5kb3dIZWlnaHQoKSAvIDQsIEdMQ29sb3I6OmJsdWUpOworCisgICAgLy8gVXNlIG1pcCBsZXZl
bCAyCisgICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpIC8g
NCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA0KTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0
V2luZG93V2lkdGgoKSAvIDgsIGdldFdpbmRvd0hlaWdodCgpIC8gOCwgR0xDb2xvcjo6Ymx1ZSk7
CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIERpc2FibGUgbWlwcy4gUmVu
ZGVyIGEgcXVhZCB1c2luZyB0aGUgdGV4dHVyZSBhbmQgZW5zdXJlIGl0J3MgYmx1ZS4KKyAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9O
RUFSRVNUKTsKKyAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRo
KCksIGdldFdpbmRvd0hlaWdodCgpKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2lu
ZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgR0xDb2xvcjo6Ymx1ZSk7CisK
KyAgICAvLyBDbGVhciBsZXZlbCAwIG9mIHRoZSB0ZXh0dXJlIHRvIHJlZC4KKyAgICBjbGVhclRl
eHR1cmVMZXZlbDAoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCwgMS4wZiwgMC4wZiwgMC4wZiwg
MS4wZik7CisKKyAgICAvLyBSZWVuYWJsZSBtaXBzLCBhbmQgdHJ5IHJlbmRlcmluZyBkaWZmZXJl
bnQtc2l6ZWQgcXVhZHMuCisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSX01JUE1BUF9ORUFSRVNUKTsKKworICAgIC8vIExl
dmVsIDAgaXMgbm93IHJlZCwgc28gdGhpcyBzaG91bGQgcmVuZGVyIHJlZC4KKyAgICBjbGVhckFu
ZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgp
KTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdp
bmRvd0hlaWdodCgpIC8gMiwgR0xDb2xvcjo6cmVkKTsKKworICAgIC8vIFVzZSBtaXAgbGV2ZWwg
MSwgYmx1ZS4KKyAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRo
KCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9F
UShnZXRXaW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCBHTENvbG9yOjpi
bHVlKTsKKworICAgIC8vIFVzZSBtaXAgbGV2ZWwgMiwgYmx1ZS4KKyAgICBjbGVhckFuZERyYXdR
dWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCkgLyA0LCBnZXRXaW5kb3dIZWlnaHQoKSAv
IDQpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8gOCwgZ2V0
V2luZG93SGVpZ2h0KCkgLyA4LCBHTENvbG9yOjpibHVlKTsKK30KKworLy8gVGhpcyB0ZXN0IGVu
c3VyZXMgdGhhdCBtaXBzIGFyZSBjb3JyZWN0bHkgZ2VuZXJhdGVkIGZyb20gYSByZW5kZXJlZCBp
bWFnZS4KKy8vIEluIHBhcnRpY3VsYXIsIG9uIEQzRDExIEZlYXR1cmUgTGV2ZWwgOV8zLCB0aGUg
Y2xlYXIgY2FsbCB3aWxsIGJlIHBlcmZvcm1lZCBvbiB0aGUgemVyby1sZXZlbCB0ZXh0dXJlLCBy
YXRoZXIgdGhhbiB0aGUgbWlwcGVkIG9uZS4KKy8vIFRoZSB0ZXN0IGVuc3VyZXMgdGhhdCB0aGUg
emVyby1sZXZlbCB0ZXh0dXJlIGlzIGNvcnJlY3RseSBjb3BpZWQgaW50byB0aGUgbWlwcGVkIHRl
eHR1cmUgYmVmb3JlIHRoZSBtaXBtYXBzIGFyZSBnZW5lcmF0ZWQuCitURVNUX1AoTWlwbWFwVGVz
dCwgR2VuZXJhdGVNaXBtYXBGcm9tUmVuZGVyZWRJbWFnZSkKK3sKKyAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOworICAgIC8vIENsZWFyIHRoZSB0ZXh0dXJlIHRv
IGJsdWUuCisgICAgY2xlYXJUZXh0dXJlTGV2ZWwwKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQs
IDAuMGYsIDAuMGYsIDEuMGYsIDEuMGYpOworCisgICAgLy8gVGhlbiBnZW5lcmF0ZSB0aGUgbWlw
cworICAgIGdsR2VuZXJhdGVNaXBtYXAoR0xfVEVYVFVSRV8yRCk7CisgICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7CisKKyAgICAvLyBFbmFibGUgbWlwcy4KKyAgICBnbFRleFBhcmFtZXRlcmkoR0xf
VEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVJfTUlQTUFQX05FQVJF
U1QpOworCisgICAgLy8gTm93IGRyYXcgdGhlIHRleHR1cmUgdG8gdmFyaW91cyBkaWZmZXJlbnQg
c2l6ZWQgYXJlYXMuCisgICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dX
aWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdl
dFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIEdMQ29sb3I6OmJsdWUp
OworCisgICAgLy8gVXNlIG1pcCBsZXZlbCAxCisgICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9n
cmFtLCBnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyKTsKKyAgICBF
WFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDQsIGdldFdpbmRvd0hlaWdo
dCgpIC8gNCwgR0xDb2xvcjo6Ymx1ZSk7CisKKyAgICAvLyBVc2UgbWlwIGxldmVsIDIKKyAgICBj
bGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCkgLyA0LCBnZXRXaW5k
b3dIZWlnaHQoKSAvIDQpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0
aCgpIC8gOCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA4LCBHTENvbG9yOjpibHVlKTsKK30KKworLy8g
VGVzdCB0byBlbnN1cmUgdGhhdCByZW5kZXJpbmcgdG8gYSBtaXBtYXBwZWQgdGV4dHVyZSB3b3Jr
cywgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG1pcG1hcHMgYXJlIGVuYWJsZWQgb3Igbm90LgorLy8g
VE9ETzogVGhpcyB0ZXN0IGhpdHMgYSB0ZXh0dXJlIHJlYmluZCBidWcgaW4gdGhlIEQzRDExIHJl
bmRlcmVyLiBGaXggdGhpcy4KK1RFU1RfUChNaXBtYXBUZXN0LCBSZW5kZXJPbnRvTGV2ZWxaZXJv
QWZ0ZXJHZW5lcmF0ZU1pcG1hcCkKK3sKKyAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IEZpZ3VyZSBv
dXQgd2h5IHRoaXMgaXMgYnJva2VuIG9uIEFNRCBPcGVuR0wKKyAgICBpZiAoKElzQU1EKCkgfHwg
SXNJbnRlbCgpKSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xF
X1RZUEVfT1BFTkdMX0FOR0xFKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNr
aXBwZWQgb24gSW50ZWwvQU1EIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7
CisKKyAgICAvLyBDbGVhciB0aGUgdGV4dHVyZSB0byBibHVlLgorICAgIGNsZWFyVGV4dHVyZUxl
dmVsMChHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJELCAwLjBmLCAwLjBmLCAxLjBmLCAxLjBmKTsK
KworICAgIC8vIE5vdywgZHJhdyB0aGUgdGV4dHVyZSB0byBhIHF1YWQgdGhhdCdzIHRoZSBzYW1l
IHNpemUgYXMgdGhlIHRleHR1cmUuIFRoaXMgZHJhd3MgdG8gdGhlIGRlZmF1bHQgZnJhbWVidWZm
ZXIuCisgICAgLy8gVGhlIHF1YWQgc2hvdWxkIGJlIGJsdWUuCisgICAgY2xlYXJBbmREcmF3UXVh
ZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7CisgICAg
RVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWln
aHQoKSAvIDIsIEdMQ29sb3I6OmJsdWUpOworCisgICAgLy8gTm93IGdvIGJhY2sgdG8gdGhlIHRl
eHR1cmUsIGFuZCBnZW5lcmF0ZSBtaXBzIG9uIGl0LgorICAgIGdsR2VuZXJhdGVNaXBtYXAoR0xf
VEVYVFVSRV8yRCk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBOb3cgdHJ5
IHJlbmRlcmluZyB0aGUgdGV4dHVyZWQgcXVhZCBhZ2Fpbi4gTm90ZTogd2UndmUgbm90IHRvbGQg
R0wgdG8gdXNlIHRoZSBnZW5lcmF0ZWQgbWlwcy4KKyAgICAvLyBUaGUgcXVhZCBzaG91bGQgYmUg
Ymx1ZS4KKyAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCks
IGdldFdpbmRvd0hlaWdodCgpKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93
V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgR0xDb2xvcjo6Ymx1ZSk7CisKKyAg
ICAvLyBOb3cgdGVsbCBHTCB0byB1c2UgdGhlIGdlbmVyYXRlZCBtaXBzLgorICAgIGdsVGV4UGFy
YW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUl9N
SVBNQVBfTkVBUkVTVCk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBOb3cg
cmVuZGVyIHRoZSB0ZXh0dXJlZCBxdWFkIGFnYWluLiBJdCBzaG91bGQgYmUgc3RpbGwgYmUgYmx1
ZS4KKyAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCksIGdl
dFdpbmRvd0hlaWdodCgpKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lk
dGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgR0xDb2xvcjo6Ymx1ZSk7CisKKyAgICAv
LyBOb3cgcmVuZGVyIHRoZSB0ZXh0dXJlZCBxdWFkIHRvIGFuIGFyZWEgc21hbGxlciB0aGFuIHRo
ZSB0ZXh0dXJlIChpLmUuIHRvIGZvcmNlIG1pbmlmaWNhdGlvbikuIFRoaXMgc2hvdWxkIGJlIGJs
dWUuCisgICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpIC8g
NCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA0KTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0
V2luZG93V2lkdGgoKSAvIDgsIGdldFdpbmRvd0hlaWdodCgpIC8gOCwgR0xDb2xvcjo6Ymx1ZSk7
CisKKyAgICAvLyBOb3cgY2xlYXIgdGhlIHRleHR1cmUgdG8gZ3JlZW4uIFRoaXMganVzdCBjbGVh
cnMgdGhlIHRvcCBsZXZlbC4gVGhlIGxvd2VyIG1pcHMgc2hvdWxkIHJlbWFpbiBibHVlLgorICAg
IGNsZWFyVGV4dHVyZUxldmVsMChHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJELCAwLjBmLCAxLjBm
LCAwLjBmLCAxLjBmKTsKKworICAgIC8vIFJlbmRlciBhIHRleHR1cmVkIHF1YWQgZXF1YWwgaW4g
c2l6ZSB0byB0aGUgdGV4dHVyZS4gVGhpcyBzaG91bGQgYmUgZ3JlZW4sIHNpbmNlIHdlIGp1c3Qg
Y2xlYXJlZCBsZXZlbCAwLgorICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2lu
ZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9F
UShnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCBHTENvbG9yOjpn
cmVlbik7CisKKyAgICAvLyBSZW5kZXIgYSBzbWFsbCB0ZXh0dXJlZCBxdWFkLiBUaGlzIGZvcmNl
cyBtaW5pZmljYXRpb24sIHNvIHNob3VsZCByZW5kZXIgYmx1ZSAodGhlIGNvbG9yIG9mIGxldmVs
cyAxKykuCisgICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgp
IC8gNCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA0KTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEo
Z2V0V2luZG93V2lkdGgoKSAvIDgsIGdldFdpbmRvd0hlaWdodCgpIC8gOCwgR0xDb2xvcjo6Ymx1
ZSk7CisKKyAgICAvLyBEaXNhYmxlIG1pcG1hcHMgYWdhaW4KKyAgICBnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOworICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gUmVuZGVyIGEgdGV4dHVyZWQgcXVhZCBlcXVh
bCBpbiBzaXplIHRvIHRoZSB0ZXh0dXJlLiBUaGlzIHNob3VsZCBiZSBncmVlbiwgdGhlIGNvbG9y
IG9mIGxldmVsIDAgaW4gdGhlIHRleHR1cmUuCisgICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9n
cmFtLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7CisgICAgRVhQRUNUX1BJ
WEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIs
IEdMQ29sb3I6OmdyZWVuKTsKKworICAgIC8vIFJlbmRlciBhIHNtYWxsIHRleHR1cmVkIHF1YWQu
IFRoaXMgd291bGQgZm9yY2UgbWluaWZpY2F0aW9uIGlmIG1pcHMgd2VyZSBlbmFibGVkLCBidXQg
dGhleSdyZSBub3QuIFRoZXJlZm9yZSwgdGhpcyBzaG91bGQgYmUgZ3JlZW4uCisgICAgY2xlYXJB
bmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93SGVp
Z2h0KCkgLyA0KTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgoKSAv
IDgsIGdldFdpbmRvd0hlaWdodCgpIC8gOCwgR0xDb2xvcjo6Z3JlZW4pOworfQorCisvLyBUaGlz
IHRlc3QgZW5zdXJlcyB0aGF0IHRoZSBsZXZlbC16ZXJvIHdvcmthcm91bmQgZm9yIFRleHR1cmVD
dWJlcyAob24gRDNEMTEgRmVhdHVyZSBMZXZlbCA5XzMpCisvLyB3b3JrcyBhcyBleHBlY3RlZC4g
SXQgdGVzdHMgZW5hYmxpbmcvZGlzYWJsaW5nIG1pcG1hcHMsIGdlbmVyYXRpbmcgbWlwbWFwcywg
YW5kIHJlbmRlcmluZyB0byBsZXZlbCB6ZXJvLgorVEVTVF9QKE1pcG1hcFRlc3QsIFRleHR1cmVD
dWJlR2VuZXJhbExldmVsWmVybykKK3sKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfQ1VC
RV9NQVAsIG1UZXh0dXJlQ3ViZSk7CisKKyAgICAvLyBEcmF3LiBTaW5jZSB0aGUgbmVnYXRpdmUt
WSBmYWNlJ3MgaXMgYmx1ZSwgdGhpcyBzaG91bGQgYmUgYmx1ZS4KKyAgICBjbGVhckFuZERyYXdR
dWFkKG1DdWJlUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwor
ICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpibHVlKTsKKworICAgIC8v
IEdlbmVyYXRlIG1pcG1hcHMsIGFuZCByZW5kZXIuIFRoaXMgc2hvdWxkIGJlIGJsdWUuCisgICAg
Z2xHZW5lcmF0ZU1pcG1hcChHTF9URVhUVVJFX0NVQkVfTUFQKTsKKyAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV9DVUJFX01BUCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVJf
TUlQTUFQX05FQVJFU1QpOworICAgIGNsZWFyQW5kRHJhd1F1YWQobUN1YmVQcm9ncmFtLCBnZXRX
aW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9S
X0VRKDAsIDAsIEdMQ29sb3I6OmJsdWUpOworCisgICAgLy8gRHJhdyB1c2luZyBhIHNtYWxsZXIg
dmlld3BvcnQgKHRvIGZvcmNlIGEgbG93ZXIgTE9EIG9mIHRoZSB0ZXh0dXJlKS4gVGhpcyBzaG91
bGQgc3RpbGwgYmUgYmx1ZS4KKyAgICBjbGVhckFuZERyYXdRdWFkKG1DdWJlUHJvZ3JhbSwgZ2V0
V2luZG93V2lkdGgoKSAvIDQsIGdldFdpbmRvd0hlaWdodCgpIC8gNCk7CisgICAgRVhQRUNUX1BJ
WEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmJsdWUpOworCisgICAgLy8gTm93IGNsZWFyIHRo
ZSBuZWdhdGl2ZS1ZIGZhY2Ugb2YgdGhlIGN1YmUgdG8gcmVkLgorICAgIGNsZWFyVGV4dHVyZUxl
dmVsMChHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ksIG1UZXh0dXJlQ3ViZSwgMS4wZiwg
MC4wZiwgMC4wZiwgMS4wZik7CisKKyAgICAvLyBEcmF3IHVzaW5nIGEgZnVsbC1zaXplIHZpZXdw
b3J0LiBUaGlzIHNob3VsZCBiZSByZWQuCisgICAgY2xlYXJBbmREcmF3UXVhZChtQ3ViZVByb2dy
YW0sIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpKTsKKyAgICBFWFBFQ1RfUElY
RUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6cmVkKTsKKworICAgIC8vIERyYXcgdXNpbmcgYSBx
dWFydGVyLXNpemUgdmlld3BvcnQsIHRvIGZvcmNlIGEgbG93ZXIgTE9ELiBUaGlzIHNob3VsZCBi
ZSAqQkxVRSosIHNpbmNlIHdlIG9ubHkgY2xlYXJlZCBsZXZlbCB6ZXJvCisgICAgLy8gb2YgdGhl
IG5lZ2F0aXZlLVkgZmFjZSB0byByZWQsIGFuZCBsZWZ0IGl0cyBtaXBtYXBzIGJsdWUuCisgICAg
Y2xlYXJBbmREcmF3UXVhZChtQ3ViZVByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCkgLyA0LCBnZXRX
aW5kb3dIZWlnaHQoKSAvIDQpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENv
bG9yOjpibHVlKTsKKworICAgIC8vIERpc2FibGUgbWlwbWFwcyBhZ2FpbiwgYW5kIGRyYXcgYSB0
byBhIHF1YXJ0ZXItc2l6ZSB2aWV3cG9ydC4KKyAgICAvLyBTaW5jZSB0aGlzIHNob3VsZCB1c2Ug
bGV2ZWwgemVybyBvZiB0aGUgdGV4dHVyZSwgdGhpcyBzaG91bGQgYmUgKlJFRCouCisgICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwg
R0xfTkVBUkVTVCk7CisgICAgY2xlYXJBbmREcmF3UXVhZChtQ3ViZVByb2dyYW0sIGdldFdpbmRv
d1dpZHRoKCkgLyA0LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDQpOworICAgIEVYUEVDVF9QSVhFTF9D
T0xPUl9FUSgwLCAwLCBHTENvbG9yOjpyZWQpOworfQorCisvLyBUaGlzIHRlc3QgZW5zdXJlcyB0
aGF0IHJlbmRlcmluZyB0byBsZXZlbC16ZXJvIG9mIGEgVGV4dHVyZUN1YmUgd29ya3MgYXMgZXhw
ZWN0ZWQuCitURVNUX1AoTWlwbWFwVGVzdCwgVGV4dHVyZUN1YmVSZW5kZXJUb0xldmVsWmVybykK
K3sKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIG1UZXh0dXJlQ3ViZSk7
CisKKyAgICAvLyBEcmF3LiBTaW5jZSB0aGUgbmVnYXRpdmUtWSBmYWNlJ3MgaXMgYmx1ZSwgdGhp
cyBzaG91bGQgYmUgYmx1ZS4KKyAgICBjbGVhckFuZERyYXdRdWFkKG1DdWJlUHJvZ3JhbSwgZ2V0
V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOworICAgIEVYUEVDVF9QSVhFTF9DT0xP
Ul9FUSgwLCAwLCBHTENvbG9yOjpibHVlKTsKKworICAgIC8vIE5vdyBjbGVhciB0aGUgbmVnYXRp
dmUtWSBmYWNlIG9mIHRoZSBjdWJlIHRvIHJlZC4KKyAgICBjbGVhclRleHR1cmVMZXZlbDAoR0xf
VEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZLCBtVGV4dHVyZUN1YmUsIDEuMGYsIDAuMGYsIDAu
MGYsIDEuMGYpOworCisgICAgLy8gRHJhdyB1c2luZyBhIGZ1bGwtc2l6ZSB2aWV3cG9ydC4gVGhp
cyBzaG91bGQgYmUgcmVkLgorICAgIGNsZWFyQW5kRHJhd1F1YWQobUN1YmVQcm9ncmFtLCBnZXRX
aW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9S
X0VRKDAsIDAsIEdMQ29sb3I6OnJlZCk7CisKKyAgICAvLyBEcmF3IGEgdG8gYSBxdWFydGVyLXNp
emUgdmlld3BvcnQuIFRoaXMgc2hvdWxkIGFsc28gYmUgcmVkLgorICAgIGNsZWFyQW5kRHJhd1F1
YWQobUN1YmVQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93SGVpZ2h0KCkg
LyA0KTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6cmVkKTsKK30K
KworLy8gQ3JlYXRlcyBhIG1pcG1hcHBlZCAyRCBhcnJheSB0ZXh0dXJlIHdpdGggdGhyZWUgbGF5
ZXJzLCBhbmQgY2FsbHMgQU5HTEUncyBHZW5lcmF0ZU1pcG1hcC4KKy8vIFRoZW4gdGVzdHMgaWYg
dGhlIG1pcG1hcHMgYXJlIHJlbmRlcmVkIGNvcnJlY3RseSBmb3IgYWxsIHRocmVlIGxheWVycy4K
K1RFU1RfUChNaXBtYXBUZXN0RVMzLCBNaXBtYXBzRm9yVGV4dHVyZUFycmF5KQoreworICAgIGlu
dCBweCA9IGdldFdpbmRvd1dpZHRoKCkgLyAyOworICAgIGludCBweSA9IGdldFdpbmRvd0hlaWdo
dCgpIC8gMjsKKworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRF9BUlJBWSwgbVRleHR1
cmUpOworCisgICAgZ2xUZXhTdG9yYWdlM0QoR0xfVEVYVFVSRV8yRF9BUlJBWSwgNSwgR0xfUkdC
QTgsIDE2LCAxNiwgMyk7CisKKyAgICAvLyBGaWxsIHRoZSBmaXJzdCBsYXllciB3aXRoIHJlZAor
ICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHBpeGVsc1JlZCgxNiAqIDE2LCBHTENvbG9yOjpyZWQp
OworICAgIGdsVGV4U3ViSW1hZ2UzRChHTF9URVhUVVJFXzJEX0FSUkFZLCAwLCAwLCAwLCAwLCAx
NiwgMTYsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgICAg
IHBpeGVsc1JlZC5kYXRhKCkpOworCisgICAgLy8gRmlsbCB0aGUgc2Vjb25kIGxheWVyIHdpdGgg
Z3JlZW4KKyAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBwaXhlbHNHcmVlbigxNiAqIDE2LCBHTENv
bG9yOjpncmVlbik7CisgICAgZ2xUZXhTdWJJbWFnZTNEKEdMX1RFWFRVUkVfMkRfQVJSQVksIDAs
IDAsIDAsIDEsIDE2LCAxNiwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAg
ICAgICAgICAgICAgcGl4ZWxzR3JlZW4uZGF0YSgpKTsKKworICAgIC8vIEZpbGwgdGhlIHRoaXJk
IGxheWVyIHdpdGggYmx1ZQorICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHBpeGVsc0JsdWUoMTYg
KiAxNiwgR0xDb2xvcjo6Ymx1ZSk7CisgICAgZ2xUZXhTdWJJbWFnZTNEKEdMX1RFWFRVUkVfMkRf
QVJSQVksIDAsIDAsIDAsIDIsIDE2LCAxNiwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwK
KyAgICAgICAgICAgICAgICAgICAgcGl4ZWxzQmx1ZS5kYXRhKCkpOworCisgICAgZ2xUZXhQYXJh
bWV0ZXJpKEdMX1RFWFRVUkVfMkRfQVJSQVksIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElO
RUFSX01JUE1BUF9ORUFSRVNUKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRF9B
UlJBWSwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOworCisgICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7CisKKyAgICBnbEdlbmVyYXRlTWlwbWFwKEdMX1RFWFRVUkVfMkRfQVJSQVkp
OworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbFVzZVByb2dyYW0obUFycmF5
UHJvZ3JhbSk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIERyYXcgdGhl
IGZpcnN0IHNsaWNlCisgICAgZ2xVbmlmb3JtMWkobVRleHR1cmVBcnJheVNsaWNlVW5pZm9ybUxv
Y2F0aW9uLCAwKTsKKyAgICBkcmF3UXVhZChtQXJyYXlQcm9ncmFtLCAicG9zaXRpb24iLCAwLjVm
KTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEo
cHgsIHB5LCBHTENvbG9yOjpyZWQpOworCisgICAgLy8gRHJhdyB0aGUgc2Vjb25kIHNsaWNlCisg
ICAgZ2xVbmlmb3JtMWkobVRleHR1cmVBcnJheVNsaWNlVW5pZm9ybUxvY2F0aW9uLCAxKTsKKyAg
ICBkcmF3UXVhZChtQXJyYXlQcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEocHgsIHB5LCBHTENvbG9y
OjpncmVlbik7CisKKyAgICAvLyBEcmF3IHRoZSB0aGlyZCBzbGljZQorICAgIGdsVW5pZm9ybTFp
KG1UZXh0dXJlQXJyYXlTbGljZVVuaWZvcm1Mb2NhdGlvbiwgMik7CisgICAgZHJhd1F1YWQobUFy
cmF5UHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKHB4LCBweSwgR0xDb2xvcjo6Ymx1ZSk7Cit9CisK
Ky8vIENyZWF0ZSBhIG1pcG1hcHBlZCAyRCBhcnJheSB0ZXh0dXJlIHdpdGggbW9yZSBsYXllcnMg
dGhhbiB3aWR0aCAvIGhlaWdodCwgYW5kIGNhbGwKKy8vIEdlbmVyYXRlTWlwbWFwLgorVEVTVF9Q
KE1pcG1hcFRlc3RFUzMsIE1pcG1hcEZvckRlZXBUZXh0dXJlQXJyYXkpCit7CisgICAgaW50IHB4
ID0gZ2V0V2luZG93V2lkdGgoKSAvIDI7CisgICAgaW50IHB5ID0gZ2V0V2luZG93SGVpZ2h0KCkg
LyAyOworCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJEX0FSUkFZLCBtVGV4dHVyZSk7
CisKKyAgICAvLyBGaWxsIHRoZSB3aG9sZSB0ZXh0dXJlIHdpdGggcmVkLgorICAgIHN0ZDo6dmVj
dG9yPEdMQ29sb3I+IHBpeGVsc1JlZCgyICogMiAqIDQsIEdMQ29sb3I6OnJlZCk7CisgICAgZ2xU
ZXhJbWFnZTNEKEdMX1RFWFRVUkVfMkRfQVJSQVksIDAsIEdMX1JHQkE4LCAyLCAyLCA0LCAwLCBH
TF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICBwaXhlbHNSZWQuZGF0
YSgpKTsKKworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJEX0FSUkFZLCBHTF9URVhU
VVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUl9NSVBNQVBfTkVBUkVTVCk7CisgICAgZ2xUZXhQYXJh
bWV0ZXJpKEdMX1RFWFRVUkVfMkRfQVJSQVksIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElO
RUFSKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xHZW5lcmF0ZU1pcG1h
cChHTF9URVhUVVJFXzJEX0FSUkFZKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisg
ICAgZ2xVc2VQcm9ncmFtKG1BcnJheVByb2dyYW0pOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7CisKKyAgICAvLyBEcmF3IHRoZSBmaXJzdCBzbGljZQorICAgIGdsVW5pZm9ybTFpKG1UZXh0
dXJlQXJyYXlTbGljZVVuaWZvcm1Mb2NhdGlvbiwgMCk7CisgICAgZHJhd1F1YWQobUFycmF5UHJv
Z3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAg
RVhQRUNUX1BJWEVMX0NPTE9SX0VRKHB4LCBweSwgR0xDb2xvcjo6cmVkKTsKKworICAgIC8vIERy
YXcgdGhlIGZvdXJ0aCBzbGljZQorICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJlQXJyYXlTbGljZVVu
aWZvcm1Mb2NhdGlvbiwgMyk7CisgICAgZHJhd1F1YWQobUFycmF5UHJvZ3JhbSwgInBvc2l0aW9u
IiwgMC41Zik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgRVhQRUNUX1BJWEVMX0NP
TE9SX0VRKHB4LCBweSwgR0xDb2xvcjo6cmVkKTsKK30KKworLy8gQ3JlYXRlcyBhIG1pcG1hcHBl
ZCAzRCB0ZXh0dXJlIHdpdGggdHdvIGxheWVycywgYW5kIGNhbGxzIEFOR0xFJ3MgR2VuZXJhdGVN
aXBtYXAuCisvLyBUaGVuIHRlc3RzIGlmIHRoZSBtaXBtYXBzIGFyZSByZW5kZXJlZCBjb3JyZWN0
bHkgZm9yIGFsbCB0d28gbGF5ZXJzLgorVEVTVF9QKE1pcG1hcFRlc3RFUzMsIE1pcG1hcHNGb3JU
ZXh0dXJlM0QpCit7CisgICAgaW50IHB4ID0gZ2V0V2luZG93V2lkdGgoKSAvIDI7CisgICAgaW50
IHB5ID0gZ2V0V2luZG93SGVpZ2h0KCkgLyAyOworCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFXzNELCBtVGV4dHVyZSk7CisKKyAgICBnbFRleFN0b3JhZ2UzRChHTF9URVhUVVJFXzNELCA1
LCBHTF9SR0JBOCwgMTYsIDE2LCAyKTsKKworICAgIC8vIEZpbGwgdGhlIGZpcnN0IGxheWVyIHdp
dGggcmVkCisgICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gcGl4ZWxzUmVkKDE2ICogMTYsIEdMQ29s
b3I6OnJlZCk7CisgICAgZ2xUZXhTdWJJbWFnZTNEKEdMX1RFWFRVUkVfM0QsIDAsIDAsIDAsIDAs
IDE2LCAxNiwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAg
ICAgcGl4ZWxzUmVkLmRhdGEoKSk7CisKKyAgICAvLyBGaWxsIHRoZSBzZWNvbmQgbGF5ZXIgd2l0
aCBncmVlbgorICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHBpeGVsc0dyZWVuKDE2ICogMTYsIEdM
Q29sb3I6OmdyZWVuKTsKKyAgICBnbFRleFN1YkltYWdlM0QoR0xfVEVYVFVSRV8zRCwgMCwgMCwg
MCwgMSwgMTYsIDE2LCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAg
ICAgICAgICBwaXhlbHNHcmVlbi5kYXRhKCkpOworCisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfM0QsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVT
VCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfM0QsIEdMX1RFWFRVUkVfTUFHX0ZJ
TFRFUiwgR0xfTElORUFSKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xH
ZW5lcmF0ZU1pcG1hcChHTF9URVhUVVJFXzNEKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OworCisgICAgZ2xVc2VQcm9ncmFtKG0zRFByb2dyYW0pOworCisgICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7CisKKyAgICAvLyBNaXBtYXAgbGV2ZWwgMAorICAgIC8vIERyYXcgdGhlIGZpcnN0IHNs
aWNlCisgICAgZ2xVbmlmb3JtMWYobVRleHR1cmUzRExPRFVuaWZvcm1Mb2NhdGlvbiwgMC4pOwor
ICAgIGdsVW5pZm9ybTFmKG1UZXh0dXJlM0RTbGljZVVuaWZvcm1Mb2NhdGlvbiwgMC4yNWYpOwor
ICAgIGRyYXdRdWFkKG0zRFByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShweCwgcHksIEdMQ29sb3I6
OnJlZCk7CisKKyAgICAvLyBEcmF3IHRoZSBzZWNvbmQgc2xpY2UKKyAgICBnbFVuaWZvcm0xZiht
VGV4dHVyZTNEU2xpY2VVbmlmb3JtTG9jYXRpb24sIDAuNzVmKTsKKyAgICBkcmF3UXVhZChtM0RQ
cm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAg
ICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEocHgsIHB5LCBHTENvbG9yOjpncmVlbik7CisKKyAgICAv
LyBNaXBtYXAgbGV2ZWwgMQorICAgIC8vIFRoZSBzZWNvbmQgbWlwbWFwIHNob3VsZCBvbmx5IGhh
dmUgb25lIHNsaWNlLgorICAgIGdsVW5pZm9ybTFmKG1UZXh0dXJlM0RMT0RVbmlmb3JtTG9jYXRp
b24sIDEuKTsKKyAgICBkcmF3UXVhZChtM0RQcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfUElYRUxfTkVBUihweCwgcHksIDEy
NywgMTI3LCAwLCAyNTUsIDEuMCk7CisKKyAgICBnbFVuaWZvcm0xZihtVGV4dHVyZTNEU2xpY2VV
bmlmb3JtTG9jYXRpb24sIDAuNzVmKTsKKyAgICBkcmF3UXVhZChtM0RQcm9ncmFtLCAicG9zaXRp
b24iLCAwLjVmKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfUElYRUxf
TkVBUihweCwgcHksIDEyNywgMTI3LCAwLCAyNTUsIDEuMCk7Cit9CisKKy8vIENyZWF0ZSBhIDJE
IHRleHR1cmUgd2l0aCBsZXZlbHMgMC0yLCBjYWxsIEdlbmVyYXRlTWlwbWFwIHdpdGggYmFzZSBs
ZXZlbCAxIHNvIHRoYXQgbGV2ZWwgMCBzdGF5cworLy8gdGhlIHNhbWUsIGFuZCB0aGVuIHNhbXBs
ZSBsZXZlbHMgMCBhbmQgMi4KKy8vIEdMRVMgMy4wLjQgc2VjdGlvbiAzLjguMTA6CisvLyAiTWlw
bWFwIGdlbmVyYXRpb24gcmVwbGFjZXMgdGV4ZWwgYXJyYXkgbGV2ZWxzIGxldmVsYmFzZSArIDEg
dGhyb3VnaCBxIHdpdGggYXJyYXlzIGRlcml2ZWQgZnJvbQorLy8gdGhlIGxldmVsYmFzZSBhcnJh
eSwgcmVnYXJkbGVzcyBvZiB0aGVpciBwcmV2aW91cyBjb250ZW50cy4gQWxsIG90aGVyIG1pcG1h
cCBhcnJheXMsIGluY2x1ZGluZworLy8gdGhlIGxldmVsYmFzZSBhcnJheSwgYXJlIGxlZnQgdW5j
aGFuZ2VkIGJ5IHRoaXMgY29tcHV0YXRpb24uIgorVEVTVF9QKE1pcG1hcFRlc3RFUzMsIEdlbmVy
YXRlTWlwbWFwQmFzZUxldmVsKQoreworICAgIGlmIChJc0FNRCgpICYmIElzRGVza3RvcE9wZW5H
TCgpKQorICAgIHsKKyAgICAgICAgLy8gT2JzZXJ2ZWQgaW5jb3JyZWN0IHJlbmRlcmluZyBvbiBB
TUQsIHNhbXBsaW5nIGxldmVsIDIgcmV0dXJucyBibGFjay4KKyAgICAgICAgc3RkOjpjb3V0IDw8
ICJUZXN0IHNraXBwZWQgb24gQU1EIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUp
OworCisgICAgLy8gRmlsbCBsZXZlbCAwIHdpdGggYmx1ZQorICAgIHN0ZDo6dmVjdG9yPEdMQ29s
b3I+IHBpeGVsc0JsdWUoZ2V0V2luZG93V2lkdGgoKSAqIGdldFdpbmRvd0hlaWdodCgpLCBHTENv
bG9yOjpibHVlKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQTgs
IGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAwLCBHTF9SR0JBLAorICAgICAg
ICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbHNCbHVlLmRhdGEoKSk7CisKKyAgICAv
LyBGaWxsIGxldmVsIDEgd2l0aCByZWQKKyAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBwaXhlbHNS
ZWQoZ2V0V2luZG93V2lkdGgoKSAqIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgR0xDb2xvcjo6cmVk
KTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdCQTgsIGdldFdpbmRv
d1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIDAsCisgICAgICAgICAgICAgICAg
IEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVsc1JlZC5kYXRhKCkpOworCisgICAgLy8g
RmlsbCBsZXZlbCAyIHdpdGggZ3JlZW4KKyAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBwaXhlbHNH
cmVlbihnZXRXaW5kb3dXaWR0aCgpICogZ2V0V2luZG93SGVpZ2h0KCkgLyAxNiwgR0xDb2xvcjo6
Z3JlZW4pOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAyLCBHTF9SR0JBOCwgZ2V0
V2luZG93V2lkdGgoKSAvIDQsIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgMCwKKyAgICAgICAgICAg
ICAgICAgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzR3JlZW4uZGF0YSgpKTsKKwor
ICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIs
IEdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7CisgICAgZ2xUZXhQYXJh
bWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwgMSk7CisKKyAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIFRoZSBibHVlIGxldmVsIDAgc2hvdWxkIGJl
IHVudG91Y2hlZCBieSB0aGlzIHNpbmNlIGJhc2UgbGV2ZWwgaXMgMS4KKyAgICBnbEdlbmVyYXRl
TWlwbWFwKEdMX1RFWFRVUkVfMkQpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAg
ICAvLyBEcmF3IHVzaW5nIGxldmVsIDIuIEl0IHNob3VsZCBiZSBzZXQgdG8gcmVkIGJ5IEdlbmVy
YXRlTWlwbWFwLgorICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lk
dGgoKSAvIDQsIGdldFdpbmRvd0hlaWdodCgpIC8gNCk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9S
X0VRKGdldFdpbmRvd1dpZHRoKCkgLyA4LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDgsIEdMQ29sb3I6
OnJlZCk7CisKKyAgICBpZiAoSXNOVklESUEoKSAmJiBJc09wZW5HTCgpKQorICAgIHsKKyAgICAg
ICAgLy8gT2JzZXJ2ZWQgaW5jb3JyZWN0IHJlbmRlcmluZyBvbiBOVklESUEsIGxldmVsIHplcm8g
c2VlbXMgdG8gYmUgaW5jb3JyZWN0bHkgYWZmZWN0ZWQgYnkKKyAgICAgICAgLy8gR2VuZXJhdGVN
aXBtYXAuCisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBwYXJ0aWFsbHkgc2tpcHBlZCBvbiBO
VklESUEgT3BlbkdMLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgLy8gRHJhdyB1c2luZyBsZXZlbCAwLiBJdCBzaG91bGQgc3RpbGwgYmUgYmx1ZS4KKyAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAwKTsK
KyAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCksIGdldFdp
bmRvd0hlaWdodCgpKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgo
KSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgR0xDb2xvcjo6Ymx1ZSk7Cit9CisKKy8vIENy
ZWF0ZSBhIGN1YmUgbWFwIHdpdGggbGV2ZWxzIDAtMiwgY2FsbCBHZW5lcmF0ZU1pcG1hcCB3aXRo
IGJhc2UgbGV2ZWwgMSBzbyB0aGF0IGxldmVsIDAgc3RheXMKKy8vIHRoZSBzYW1lLCBhbmQgdGhl
biBzYW1wbGUgbGV2ZWxzIDAgYW5kIDIuCisvLyBHTEVTIDMuMC40IHNlY3Rpb24gMy44LjEwOgor
Ly8gIk1pcG1hcCBnZW5lcmF0aW9uIHJlcGxhY2VzIHRleGVsIGFycmF5IGxldmVscyBsZXZlbGJh
c2UgKyAxIHRocm91Z2ggcSB3aXRoIGFycmF5cyBkZXJpdmVkIGZyb20KKy8vIHRoZSBsZXZlbGJh
c2UgYXJyYXksIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgcHJldmlvdXMgY29udGVudHMuIEFsbCBvdGhl
ciBtaXBtYXAgYXJyYXlzLCBpbmNsdWRpbmcKKy8vIHRoZSBsZXZlbGJhc2UgYXJyYXksIGFyZSBs
ZWZ0IHVuY2hhbmdlZCBieSB0aGlzIGNvbXB1dGF0aW9uLiIKK1RFU1RfUChNaXBtYXBUZXN0RVMz
LCBHZW5lcmF0ZU1pcG1hcEN1YmVCYXNlTGV2ZWwpCit7CisgICAgaWYgKElzQU1EKCkgJiYgSXNE
ZXNrdG9wT3BlbkdMKCkpCisgICAgeworICAgICAgICAvLyBPYnNlcnZlZCBpbmNvcnJlY3QgcmVu
ZGVyaW5nIG9uIEFNRCwgc2FtcGxpbmcgbGV2ZWwgMiByZXR1cm5zIGJsYWNrLgorICAgICAgICBz
dGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBBTUQgT3BlbkdMLiIgPDwgc3RkOjplbmRsOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUX0VRKGdldFdpbmRvd1dpZHRoKCks
IGdldFdpbmRvd0hlaWdodCgpKTsKKworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV9DVUJF
X01BUCwgbVRleHR1cmUpOworICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHBpeGVsc0JsdWUoZ2V0
V2luZG93V2lkdGgoKSAqIGdldFdpbmRvd1dpZHRoKCksIEdMQ29sb3I6OmJsdWUpOworICAgIFRl
eEltYWdlQ3ViZU1hcEZhY2VzKDAsIEdMX1JHQkE4LCBnZXRXaW5kb3dXaWR0aCgpLCBHTF9SR0JB
LCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVsc0JsdWUu
ZGF0YSgpKTsKKworICAgIC8vIEZpbGwgbGV2ZWwgMSB3aXRoIHJlZAorICAgIHN0ZDo6dmVjdG9y
PEdMQ29sb3I+IHBpeGVsc1JlZChnZXRXaW5kb3dXaWR0aCgpICogZ2V0V2luZG93V2lkdGgoKSAv
IDQsIEdMQ29sb3I6OnJlZCk7CisgICAgVGV4SW1hZ2VDdWJlTWFwRmFjZXMoMSwgR0xfUkdCQTgs
IGdldFdpbmRvd1dpZHRoKCkgLyAyLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIHBpeGVsc1JlZC5kYXRhKCkpOworCisgICAgLy8gRmlsbCBsZXZl
bCAyIHdpdGggZ3JlZW4KKyAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBwaXhlbHNHcmVlbihnZXRX
aW5kb3dXaWR0aCgpICogZ2V0V2luZG93V2lkdGgoKSAvIDE2LCBHTENvbG9yOjpncmVlbik7Cisg
ICAgVGV4SW1hZ2VDdWJlTWFwRmFjZXMoMiwgR0xfUkdCQTgsIGdldFdpbmRvd1dpZHRoKCkgLyA0
LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgIHBp
eGVsc0dyZWVuLmRhdGEoKSk7CisKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9DVUJF
X01BUCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUKTsK
KyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9DVUJFX01BUCwgR0xfVEVYVFVSRV9NQUdf
RklMVEVSLCBHTF9MSU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0NVQkVf
TUFQLCBHTF9URVhUVVJFX0JBU0VfTEVWRUwsIDEpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7CisKKyAgICAvLyBUaGUgYmx1ZSBsZXZlbCAwIHNob3VsZCBiZSB1bnRvdWNoZWQgYnkgdGhp
cyBzaW5jZSBiYXNlIGxldmVsIGlzIDEuCisgICAgZ2xHZW5lcmF0ZU1pcG1hcChHTF9URVhUVVJF
X0NVQkVfTUFQKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gRHJhdyB1
c2luZyBsZXZlbCAyLiBJdCBzaG91bGQgYmUgc2V0IHRvIHJlZCBieSBHZW5lcmF0ZU1pcG1hcC4K
KyAgICBjbGVhckFuZERyYXdRdWFkKG1DdWJlUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSAvIDQs
IGdldFdpbmRvd0hlaWdodCgpIC8gNCk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdp
bmRvd1dpZHRoKCkgLyA4LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDgsIEdMQ29sb3I6OnJlZCk7CisK
KyAgICBpZiAoSXNOVklESUEoKSAmJiBJc09wZW5HTCgpKQorICAgIHsKKyAgICAgICAgLy8gT2Jz
ZXJ2ZWQgaW5jb3JyZWN0IHJlbmRlcmluZyBvbiBOVklESUEsIGxldmVsIHplcm8gc2VlbXMgdG8g
YmUgaW5jb3JyZWN0bHkgYWZmZWN0ZWQgYnkKKyAgICAgICAgLy8gR2VuZXJhdGVNaXBtYXAuCisg
ICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBwYXJ0aWFsbHkgc2tpcHBlZCBvbiBOVklESUEgT3Bl
bkdMLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRHJh
dyB1c2luZyBsZXZlbCAwLiBJdCBzaG91bGQgc3RpbGwgYmUgYmx1ZS4KKyAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV9DVUJFX01BUCwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAwKTsKKyAg
ICBjbGVhckFuZERyYXdRdWFkKG1DdWJlUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2lu
ZG93SGVpZ2h0KCkpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgp
IC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCBHTENvbG9yOjpibHVlKTsKK30KKworLy8gQ3Jl
YXRlIGEgdGV4dHVyZSB3aXRoIGxldmVscyAwLTIsIGNhbGwgR2VuZXJhdGVNaXBtYXAgd2l0aCBt
YXggbGV2ZWwgMSBzbyB0aGF0IGxldmVsIDIgc3RheXMgdGhlCisvLyBzYW1lLCBhbmQgdGhlbiBz
YW1wbGUgbGV2ZWxzIDEgYW5kIDIuCisvLyBHTEVTIDMuMC40IHNlY3Rpb24gMy44LjEwOgorLy8g
Ik1pcG1hcCBnZW5lcmF0aW9uIHJlcGxhY2VzIHRleGVsIGFycmF5IGxldmVscyBsZXZlbGJhc2Ug
KyAxIHRocm91Z2ggcSB3aXRoIGFycmF5cyBkZXJpdmVkIGZyb20KKy8vIHRoZSBsZXZlbGJhc2Ug
YXJyYXksIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgcHJldmlvdXMgY29udGVudHMuIEFsbCBvdGhlciBt
aXBtYXAgYXJyYXlzLCBpbmNsdWRpbmcKKy8vIHRoZSBsZXZlbGJhc2UgYXJyYXksIGFyZSBsZWZ0
IHVuY2hhbmdlZCBieSB0aGlzIGNvbXB1dGF0aW9uLiIKK1RFU1RfUChNaXBtYXBUZXN0RVMzLCBH
ZW5lcmF0ZU1pcG1hcE1heExldmVsKQoreworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8y
RCwgbVRleHR1cmUpOworCisgICAgLy8gRmlsbCBsZXZlbCAwIHdpdGggYmx1ZQorICAgIHN0ZDo6
dmVjdG9yPEdMQ29sb3I+IHBpeGVsc0JsdWUoZ2V0V2luZG93V2lkdGgoKSAqIGdldFdpbmRvd0hl
aWdodCgpLCBHTENvbG9yOjpibHVlKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwg
MCwgR0xfUkdCQTgsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAwLCBHTF9S
R0JBLAorICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbHNCbHVlLmRhdGEo
KSk7CisKKyAgICAvLyBGaWxsIGxldmVsIDEgd2l0aCByZWQKKyAgICBzdGQ6OnZlY3RvcjxHTENv
bG9yPiBwaXhlbHNSZWQoZ2V0V2luZG93V2lkdGgoKSAqIGdldFdpbmRvd0hlaWdodCgpIC8gNCwg
R0xDb2xvcjo6cmVkKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdC
QTgsIGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIDAsCisgICAg
ICAgICAgICAgICAgIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVsc1JlZC5kYXRhKCkp
OworCisgICAgLy8gRmlsbCBsZXZlbCAyIHdpdGggZ3JlZW4KKyAgICBzdGQ6OnZlY3RvcjxHTENv
bG9yPiBwaXhlbHNHcmVlbihnZXRXaW5kb3dXaWR0aCgpICogZ2V0V2luZG93SGVpZ2h0KCkgLyAx
NiwgR0xDb2xvcjo6Z3JlZW4pOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAyLCBH
TF9SR0JBOCwgZ2V0V2luZG93V2lkdGgoKSAvIDQsIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgMCwK
KyAgICAgICAgICAgICAgICAgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzR3JlZW4u
ZGF0YSgpKTsKKworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJF
X01JTl9GSUxURVIsIEdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QpOworICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7Cisg
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFYX0xFVkVMLCAx
KTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gVGhlIGdyZWVuIGxldmVs
IDIgc2hvdWxkIGJlIHVudG91Y2hlZCBieSB0aGlzIHNpbmNlIG1heCBsZXZlbCBpcyAxLgorICAg
IGdsR2VuZXJhdGVNaXBtYXAoR0xfVEVYVFVSRV8yRCk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJS
T1IoKTsKKworICAgIC8vIERyYXcgdXNpbmcgbGV2ZWwgMS4gSXQgc2hvdWxkIGJlIHNldCB0byBi
bHVlIGJ5IEdlbmVyYXRlTWlwbWFwLgorICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwg
Z2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMik7CisgICAgRVhQRUNU
X1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyA0LCBnZXRXaW5kb3dIZWlnaHQoKSAv
IDQsIEdMQ29sb3I6OmJsdWUpOworCisgICAgLy8gRHJhdyB1c2luZyBsZXZlbCAyLiBJdCBzaG91
bGQgc3RpbGwgYmUgZ3JlZW4uCisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdM
X1RFWFRVUkVfTUFYX0xFVkVMLCAyKTsKKyAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0s
IGdldFdpbmRvd1dpZHRoKCkgLyA0LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDQpOworICAgIEVYUEVD
VF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8gOCwgZ2V0V2luZG93SGVpZ2h0KCkg
LyA4LCBHTENvbG9yOjpncmVlbik7Cit9CisKKy8vIENhbGwgR2VuZXJhdGVNaXBtYXAgd2l0aCBv
dXQtb2YtcmFuZ2UgYmFzZSBsZXZlbC4gVGhlIHNwZWMgaXMgaW50ZXJwcmV0ZWQgc28gdGhhdCBh
biBvdXQtb2YtcmFuZ2UKKy8vIGJhc2UgbGV2ZWwgZG9lcyBub3QgaGF2ZSBhIGNvbG9yLXJlbmRl
cmFibGUvdGV4dHVyZS1maWx0ZXJhYmxlIGludGVybmFsIGZvcm1hdCwgc28gdGhlCisvLyBHZW5l
cmF0ZU1pcG1hcCBjYWxsIGdlbmVyYXRlcyBJTlZBTElEX09QRVJBVElPTi4gR0xFUyAzLjAuNCBz
ZWN0aW9uIDMuOC4xMDoKKy8vICJJZiB0aGUgbGV2ZWxiYXNlIGFycmF5IHdhcyBub3Qgc3BlY2lm
aWVkIHdpdGggYW4gdW5zaXplZCBpbnRlcm5hbCBmb3JtYXQgZnJvbSB0YWJsZSAzLjMgb3IgYQor
Ly8gc2l6ZWQgaW50ZXJuYWwgZm9ybWF0IHRoYXQgaXMgYm90aCBjb2xvci1yZW5kZXJhYmxlIGFu
ZCB0ZXh0dXJlLWZpbHRlcmFibGUgYWNjb3JkaW5nIHRvIHRhYmxlCisvLyAzLjEzLCBhbiBJTlZB
TElEX09QRVJBVElPTiBlcnJvciBpcyBnZW5lcmF0ZWQuIgorVEVTVF9QKE1pcG1hcFRlc3RFUzMs
IEdlbmVyYXRlTWlwbWFwQmFzZUxldmVsT3V0T2ZSYW5nZSkKK3sKKyAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlKTsKKworICAgIC8vIEZpbGwgbGV2ZWwgMCB3aXRoIGJs
dWUKKyAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBwaXhlbHNCbHVlKGdldFdpbmRvd1dpZHRoKCkg
KiBnZXRXaW5kb3dIZWlnaHQoKSwgR0xDb2xvcjo6Ymx1ZSk7CisgICAgZ2xUZXhJbWFnZTJEKEdM
X1RFWFRVUkVfMkQsIDAsIEdMX1JHQkE4LCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWln
aHQoKSwgMCwgR0xfUkdCQSwKKyAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgcGl4
ZWxzQmx1ZS5kYXRhKCkpOworCisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdM
X1RFWFRVUkVfQkFTRV9MRVZFTCwgMTAwMCk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
KworICAgIC8vIEV4cGVjdGluZyB0aGUgb3V0LW9mLXJhbmdlIGJhc2UgbGV2ZWwgdG8gYmUgdHJl
YXRlZCBhcyBub3QgY29sb3ItcmVuZGVyYWJsZSBhbmQKKyAgICAvLyB0ZXh0dXJlLWZpbHRlcmFi
bGUuCisgICAgZ2xHZW5lcmF0ZU1pcG1hcChHTF9URVhUVVJFXzJEKTsKKyAgICBFWFBFQ1RfR0xf
RVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgLy8gRHJhdyB1c2luZyBsZXZlbCAw
LiBJdCBzaG91bGQgc3RpbGwgYmUgYmx1ZS4KKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAwKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xf
VEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFS
RVNUKTsKKyAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCks
IGdldFdpbmRvd0hlaWdodCgpKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93
V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgR0xDb2xvcjo6Ymx1ZSk7Cit9CisK
Ky8vIENhbGwgR2VuZXJhdGVNaXBtYXAgd2l0aCBvdXQtb2YtcmFuZ2UgYmFzZSBsZXZlbCBvbiBh
biBpbW11dGFibGUgdGV4dHVyZS4gVGhlIGJhc2UgbGV2ZWwgc2hvdWxkCisvLyBiZSBjbGFtcGVk
LCBzbyB0aGUgY2FsbCBkb2Vzbid0IGdlbmVyYXRlIGFuIGVycm9yLgorVEVTVF9QKE1pcG1hcFRl
c3RFUzMsIEdlbmVyYXRlTWlwbWFwQmFzZUxldmVsT3V0T2ZSYW5nZUltbXV0YWJsZVRleHR1cmUp
Cit7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZSk7CisKKyAgICBn
bFRleFN0b3JhZ2UyRChHTF9URVhUVVJFXzJELCAxLCBHTF9SR0JBOCwgMSwgMSk7CisgICAgZ2xU
ZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDEsIDEsIEdMX1JHQkEsIEdMX1VO
U0lHTkVEX0JZVEUsICZHTENvbG9yOjpncmVlbik7CisKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xf
VEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAxMDAwKTsKKworICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworCisgICAgLy8gVGhpcyBpcyBlc3NlbnRpYWxseSBhIG5vLW9wLCBzaW5j
ZSB0aGUgdGV4dHVyZSBvbmx5IGhhcyBvbmUgbGV2ZWwuCisgICAgZ2xHZW5lcmF0ZU1pcG1hcChH
TF9URVhUVVJFXzJEKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gVGhl
IG9ubHkgbGV2ZWwgb2YgdGhlIHRleHR1cmUgc2hvdWxkIHN0aWxsIGJlIGdyZWVuLgorICAgIGds
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05F
QVJFU1QpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01B
R19GSUxURVIsIEdMX05FQVJFU1QpOworICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwg
Z2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOworICAgIEVYUEVDVF9QSVhFTF9D
T0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCBHTENv
bG9yOjpncmVlbik7Cit9CisKKy8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0
aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVz
ZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCisvLyBOb3RlOiB3ZSBydW4gdGhlc2UgdGVz
dHMgYWdhaW5zdCA5XzMgb24gV0FSUCBkdWUgdG8gaGFyZHdhcmUgZHJpdmVyIGlzc3VlcyBvbiBX
aW43CitBTkdMRV9JTlNUQU5USUFURV9URVNUKE1pcG1hcFRlc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgIEVTMl9EM0Q5KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMShFR0xf
RVhQRVJJTUVOVEFMX1BSRVNFTlRfUEFUSF9DT1BZX0FOR0xFKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgRVMyX0QzRDExKEVHTF9FWFBFUklNRU5UQUxfUFJFU0VOVF9QQVRIX0ZBU1RfQU5HTEUp
LAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzNfV0FSUCgpLAorICAgICAg
ICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVT
M19PUEVOR0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCksCisgICAg
ICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygpKTsKK0FOR0xFX0lOU1RBTlRJQVRFX1RF
U1QoTWlwbWFwVGVzdEVTMywgRVMzX0QzRDExKCksIEVTM19PUEVOR0woKSwgRVMzX09QRU5HTEVT
KCkpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL011
bHRpc2FtcGxlQ29tcGF0aWJpbGl0eVRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9NdWx0aXNhbXBsZUNvbXBhdGliaWxpdHlU
ZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvZ2xfdGVzdHMvTXVsdGlzYW1wbGVDb21wYXRpYmlsaXR5VGVzdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwzMDAgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBTdGF0ZUNoYW5nZVRlc3Q6CisvLyAg
IFNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgYW4gQU5HTEUgaW1wbGVtZW50YXRpb24gb2YgR0ws
IHRoZXNlIHRlc3RzIHZhbGlkYXRlIHRoYXQKKy8vICAgQU5HTEUncyBkaXJ0eSBiaXRzIHN5c3Rl
bXMgZG9uJ3QgZ2V0IGNvbmZ1c2VkIGJ5IGNlcnRhaW4gc2VxdWVuY2VzIG9mIHN0YXRlIGNoYW5n
ZXMuCisvLworCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKyNpbmNsdWRlICJz
aGFkZXJfdXRpbHMuaCIKKwordXNpbmcgbmFtZXNwYWNlIGFuZ2xlOworCituYW1lc3BhY2UKK3sK
KworY29uc3QgR0xpbnQga1dpZHRoID0gNjQ7Citjb25zdCBHTGludCBrSGVpZ2h0ID0gNjQ7CisK
Ky8vIHRlc3QgZHJhd2luZyB3aXRoIEdMX01VTFRJU0FNUExFX0VYVCBlbmFibGVkL2Rpc2FibGVk
LgorY2xhc3MgRVhUTXVsdGlzYW1wbGVDb21wYXRpYmlsaXR5VGVzdCA6IHB1YmxpYyBBTkdMRVRl
c3QKK3sKKworcHJvdGVjdGVkOgorICAgIEVYVE11bHRpc2FtcGxlQ29tcGF0aWJpbGl0eVRlc3Qo
KQorICAgIHsKKyAgICAgICAgc2V0V2luZG93V2lkdGgoNjQpOworICAgICAgICBzZXRXaW5kb3dI
ZWlnaHQoNjQpOworICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOworICAgICAgICBzZXRDb25m
aWdCbHVlQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAgIH0KKwor
ICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpTZXRV
cCgpOworCisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiB2X3NoYWRlcl9zdHIgPQorICAgICAg
ICAgICAgImF0dHJpYnV0ZSB2ZWM0IGFfUG9zaXRpb247XG4iCisgICAgICAgICAgICAidm9pZCBt
YWluKClcbiIKKyAgICAgICAgICAgICJ7IGdsX1Bvc2l0aW9uID0gYV9Qb3NpdGlvbjsgfSI7CisK
KyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGZfc2hhZGVyX3N0ciA9CisgICAgICAgICAgICAi
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICAgICAidW5pZm9ybSB2ZWM0IGNv
bG9yOyIKKyAgICAgICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX0ZyYWdDb2xvciA9IGNvbG9yOyB9
IjsKKworICAgICAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZfc2hhZGVyX3N0ciwgZl9z
aGFkZXJfc3RyKTsKKworICAgICAgICBHTHVpbnQgcG9zaXRpb25fbG9jID0gZ2xHZXRBdHRyaWJM
b2NhdGlvbihtUHJvZ3JhbSwgImFfUG9zaXRpb24iKTsKKyAgICAgICAgbUNvbG9yTG9jID0gZ2xH
ZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJjb2xvciIpOworCisgICAgICAgIGdsR2VuQnVm
ZmVycygxLCAmbVZCTyk7CisgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1W
Qk8pOworICAgICAgICBzdGF0aWMgZmxvYXQgdmVydGljZXNbXSA9IHsKKyAgICAgICAgICAgIDEu
MGYsICAxLjBmLCAtMS4wZiwgMS4wZiwgIC0xLjBmLCAtMS4wZiwgLTEuMGYsIDEuMGYsIC0xLjBm
LAorICAgICAgICAgICAgLTEuMGYsIDEuMGYsIC0xLjBmLCAtMS4wZiwgLTEuMGYsIDEuMGYsICAt
MS4wZiwgMS4wZiwgMS4wZiwKKyAgICAgICAgfTsKKyAgICAgICAgZ2xCdWZmZXJEYXRhKEdMX0FS
UkFZX0JVRkZFUiwgc2l6ZW9mKHZlcnRpY2VzKSwgdmVydGljZXMsIEdMX1NUQVRJQ19EUkFXKTsK
KyAgICAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlvbl9sb2MpOworICAgICAg
ICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25fbG9jLCAyLCBHTF9GTE9BVCwgR0xfRkFM
U0UsIDAsIDApOworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtVkJPKTsKKyAgICAgICAgZ2xEZWxldGVQcm9n
cmFtKG1Qcm9ncmFtKTsKKworICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7CisgICAgfQor
CisgICAgdm9pZCBwcmVwYXJlRm9yRHJhdygpCisgICAgeworICAgICAgICAvLyBDcmVhdGUgYSBz
YW1wbGUgYnVmZmVyLgorICAgICAgICBHTHNpemVpIG51bV9zYW1wbGVzID0gNCwgbWF4X3NhbXBs
ZXMgPSAwOworICAgICAgICBnbEdldEludGVnZXJ2KEdMX01BWF9TQU1QTEVTLCAmbWF4X3NhbXBs
ZXMpOworICAgICAgICBudW1fc2FtcGxlcyA9IHN0ZDo6bWluKG51bV9zYW1wbGVzLCBtYXhfc2Ft
cGxlcyk7CisKKyAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZtU2FtcGxlUkIpOworICAg
ICAgICBnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtU2FtcGxlUkIpOworICAg
ICAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdMX1JFTkRFUkJVRkZF
UiwgbnVtX3NhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9SR0JBOF9PRVMsIGtXaWR0aCwga0hlaWdodCk7CisgICAgICAgIEdMaW50IHBhcmFt
ID0gMDsKKyAgICAgICAgZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHTF9SRU5ERVJCVUZG
RVIsIEdMX1JFTkRFUkJVRkZFUl9TQU1QTEVTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJnBhcmFtKTsKKyAgICAgICAgRVhQRUNUX0dFKHBhcmFtLCBudW1fc2FtcGxlcyk7CisK
KyAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1TYW1wbGVGQk8pOworICAgICAgICBnbEJp
bmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbVNhbXBsZUZCTyk7CisgICAgICAgIGdsRnJh
bWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQw
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkVOREVSQlVGRkVSLCBtU2FtcGxl
UkIpOworICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8R0xlbnVtPihHTF9GUkFNRUJVRkZF
Ul9DT01QTEVURSksCisgICAgICAgICAgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1F
QlVGRkVSKSk7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsK
KworICAgICAgICAvLyBDcmVhdGUgYW5vdGhlciBGQk8gdG8gcmVzb2x2ZSB0aGUgbXVsdGlzYW1w
bGUgYnVmZmVyIGludG8uCisgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1SZXNvbHZlVGV4KTsK
KyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtUmVzb2x2ZVRleCk7CisgICAg
ICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCBrV2lkdGgsIGtIZWln
aHQsIDAsIEdMX1JHQkEsCisgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIE5VTEwpOworICAg
ICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVS
LCBHTF9MSU5FQVIpOworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOworICAgICAgICBnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAg
ICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdM
X0NMQU1QX1RPX0VER0UpOworICAgICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbVJlc29sdmVG
Qk8pOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbVJlc29sdmVG
Qk8pOworICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9D
T0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1SZXNvbHZlVGV4LCAwKTsKKyAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PEdMZW51
bT4oR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpLAorICAgICAgICAgIGdsQ2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOworCisgICAgICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3Jh
bSk7CisgICAgICAgIGdsVmlld3BvcnQoMCwgMCwga1dpZHRoLCBrSGVpZ2h0KTsKKyAgICAgICAg
Z2xCbGVuZEZ1bmMoR0xfU1JDX0FMUEhBLCBHTF9PTkVfTUlOVVNfU1JDX0FMUEhBKTsKKyAgICAg
ICAgZ2xFbmFibGUoR0xfQkxFTkQpOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFN
RUJVRkZFUiwgbVNhbXBsZUZCTyk7CisgICAgICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAw
LjBmLCAwLjBmKTsKKyAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICB9
CisKKyAgICB2b2lkIHByZXBhcmVGb3JWZXJpZnkoKQorICAgIHsKKyAgICAgICAgLy8gUmVzb2x2
ZS4KKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZFUiwgbVNhbXBs
ZUZCTyk7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVIsIG1S
ZXNvbHZlRkJPKTsKKyAgICAgICAgZ2xDbGVhckNvbG9yKDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYp
OworICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAgICAgICBnbEJsaXRG
cmFtZWJ1ZmZlckFOR0xFKDAsIDAsIGtXaWR0aCwga0hlaWdodCwgMCwgMCwga1dpZHRoLCBrSGVp
Z2h0LAorICAgICAgICAgIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX05FQVJFU1QpOworICAgICAg
ICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVSLCBtUmVzb2x2ZUZCTyk7CisK
KyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgfQorCisgICAgdm9pZCBjbGVhbnVw
KCkKKyAgICB7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsK
KyAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1SZXNvbHZlRkJPKTsKKyAgICAgICAg
Z2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1TYW1wbGVGQk8pOworICAgICAgICBnbERlbGV0ZVRl
eHR1cmVzKDEsICZtUmVzb2x2ZVRleCk7CisgICAgICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygx
LCAmbVNhbXBsZVJCKTsKKworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIH0K
KworICAgIGJvb2wgaXNBcHBsaWNhYmxlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBl
eHRlbnNpb25FbmFibGVkKCJHTF9FWFRfbXVsdGlzYW1wbGVfY29tcGF0aWJpbGl0eSIpICYmCisg
ICAgICAgICAgICAgZXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlz
YW1wbGUiKSAmJgorICAgICAgICAgICAgIGV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19yZ2I4X3Jn
YmE4IikgJiYKKyAgICAgICAgICAgICAhSXNBTUQoKTsKKyAgICB9CisgICAgR0x1aW50IG1TYW1w
bGVGQk87CisgICAgR0x1aW50IG1SZXNvbHZlRkJPOworICAgIEdMdWludCBtU2FtcGxlUkI7Cisg
ICAgR0x1aW50IG1SZXNvbHZlVGV4OworCisgICAgR0x1aW50IG1Db2xvckxvYzsKKyAgICBHTHVp
bnQgbVByb2dyYW07CisgICAgR0x1aW50IG1WQk87Cit9OworCit9IC8vCisKKy8vIFRlc3Qgc2lt
cGxlIHN0YXRlIHRyYWNraW5nCitURVNUX1AoRVhUTXVsdGlzYW1wbGVDb21wYXRpYmlsaXR5VGVz
dCwgVGVzdFN0YXRlVHJhY2tpbmcpCit7CisgICAgaWYgKCFpc0FwcGxpY2FibGUoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgRVhQRUNUX1RSVUUoZ2xJc0VuYWJsZWQoR0xfTVVMVElTQU1QTEVf
RVhUKSk7CisgICAgZ2xEaXNhYmxlKEdMX01VTFRJU0FNUExFX0VYVCk7CisgICAgRVhQRUNUX0ZB
TFNFKGdsSXNFbmFibGVkKEdMX01VTFRJU0FNUExFX0VYVCkpOworICAgIGdsRW5hYmxlKEdMX01V
TFRJU0FNUExFX0VYVCk7CisgICAgRVhQRUNUX1RSVUUoZ2xJc0VuYWJsZWQoR0xfTVVMVElTQU1Q
TEVfRVhUKSk7CisKKyAgICBFWFBFQ1RfRkFMU0UoZ2xJc0VuYWJsZWQoR0xfU0FNUExFX0FMUEhB
X1RPX09ORV9FWFQpKTsKKyAgICBnbEVuYWJsZShHTF9TQU1QTEVfQUxQSEFfVE9fT05FX0VYVCk7
CisgICAgRVhQRUNUX1RSVUUoZ2xJc0VuYWJsZWQoR0xfU0FNUExFX0FMUEhBX1RPX09ORV9FWFQp
KTsKKyAgICBnbERpc2FibGUoR0xfU0FNUExFX0FMUEhBX1RPX09ORV9FWFQpOworICAgIEVYUEVD
VF9GQUxTRShnbElzRW5hYmxlZChHTF9TQU1QTEVfQUxQSEFfVE9fT05FX0VYVCkpOworCisgICAg
RVhQRUNUX0VRKHN0YXRpY19jYXN0PEdMZW51bT4oR0xfTk9fRVJST1IpLCBnbEdldEVycm9yKCkp
OworfQorCisvLyBUZXN0IHRoYXQgZGlzYWJsaW5nIEdMX01VTFRJU0FNUExFX0VYVCBpcyBoYW5k
bGVkIGNvcnJlY3RseS4KK1RFU1RfUChFWFRNdWx0aXNhbXBsZUNvbXBhdGliaWxpdHlUZXN0LCBE
cmF3QW5kUmVzb2x2ZSkKK3sKKyAgICBpZiAoIWlzQXBwbGljYWJsZSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBzdGF0aWMgY29uc3QgZmxvYXQga0JsdWVbXSA9IHswLjBmLCAwLjBmLCAxLjBm
LCAxLjBmfTsKKyAgICBzdGF0aWMgY29uc3QgZmxvYXQga0dyZWVuW10gPSB7MC4wZiwgMS4wZiwg
MC4wZiwgMS4wZn07CisgICAgc3RhdGljIGNvbnN0IGZsb2F0IGtSZWRbXSA9IHsxLjBmLCAwLjBm
LCAwLjBmLCAxLjBmfTsKKworICAgIC8vIERpZmZlcmVudCBkcml2ZXJzIHNlZW0gdG8gYmVoYXZl
IGRpZmZlcmVudGx5IHdpdGggcmVzcGVjdCB0byByZXN1bHRpbmcKKyAgICAvLyB2YWx1ZXMuIFRo
ZXNlIG1pZ2h0IGJlIGR1ZSB0byBkaWZmZXJlbnQgTVNBQSBzYW1wbGUgY291bnRzIGNhdXNpbmcK
KyAgICAvLyBkaWZmZXJlbnQgc2FtcGxlcyB0byBoaXQuICBPdGhlciBvcHRpb24gaXMgZHJpdmVy
IGJ1Z3MuIEp1c3QgdGVzdCB0aGF0CisgICAgLy8gZGlzYWJsaW5nIG11bHRpc2FtcGxlIGNhdXNl
cyBhIGRpZmZlcmVuY2UuCisgICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gcmVzdWx0c1sz
XTsKKyAgICBjb25zdCBHTGludCBrUmVzdWx0U2l6ZSA9IGtXaWR0aCAqIGtIZWlnaHQgKiA0Owor
ICAgIGZvciAoaW50IHBhc3MgPSAwOyBwYXNzIDwgMzsgcGFzcysrKQorICAgIHsKKyAgICAgICAg
cHJlcGFyZUZvckRyYXcoKTsKKyAgICAgICAgLy8gR3JlZW46IGZyb20gdG9wIHJpZ2h0IHRvIGJv
dHRvbSBsZWZ0LgorICAgICAgICBnbFVuaWZvcm00ZnYobUNvbG9yTG9jLCAxLCBrR3JlZW4pOwor
ICAgICAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVTLCAwLCAzKTsKKworICAgICAgICAvLyBC
bHVlOiBmcm9tIHRvcCBsZWZ0IHRvIGJvdHRvbSByaWdodC4KKyAgICAgICAgZ2xVbmlmb3JtNGZ2
KG1Db2xvckxvYywgMSwga0JsdWUpOworICAgICAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVT
LCAzLCAzKTsKKworICAgICAgICAvLyBSZWQsIHdpdGggYW5kIHdpdGhvdXQgTVNBQTogZnJvbSBi
b3R0b20gbGVmdCB0byB0b3AgcmlnaHQuCisgICAgICAgIGlmIChwYXNzID09IDEpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGdsRGlzYWJsZShHTF9NVUxUSVNBTVBMRV9FWFQpOworICAgICAgICB9
CisgICAgICAgIGdsVW5pZm9ybTRmdihtQ29sb3JMb2MsIDEsIGtSZWQpOworICAgICAgICBnbERy
YXdBcnJheXMoR0xfVFJJQU5HTEVTLCA2LCAzKTsKKyAgICAgICAgaWYgKHBhc3MgPT0gMSkKKyAg
ICAgICAgeworICAgICAgICAgICAgZ2xFbmFibGUoR0xfTVVMVElTQU1QTEVfRVhUKTsKKyAgICAg
ICAgfQorICAgICAgICBwcmVwYXJlRm9yVmVyaWZ5KCk7CisgICAgICAgIHJlc3VsdHNbcGFzc10u
cmVzZXQobmV3IHVpbnQ4X3Rba1Jlc3VsdFNpemVdKTsKKyAgICAgICAgbWVtc2V0KHJlc3VsdHNb
cGFzc10uZ2V0KCksIDEyM3UsIGtSZXN1bHRTaXplKTsKKyAgICAgICAgZ2xSZWFkUGl4ZWxzKDAs
IDAsIGtXaWR0aCwga0hlaWdodCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAg
ICAgICAgICAgICByZXN1bHRzW3Bhc3NdLmdldCgpKTsKKworICAgICAgICBjbGVhbnVwKCk7Cisg
ICAgfQorICAgIEVYUEVDVF9ORSgwLCBtZW1jbXAocmVzdWx0c1swXS5nZXQoKSwgcmVzdWx0c1sx
XS5nZXQoKSwga1Jlc3VsdFNpemUpKTsKKyAgICAvLyBWZXJpZnkgdGhhdCByZW5kZXJpbmcgaXMg
ZGV0ZXJtaW5pc3RpYywgc28gdGhhdCB0aGUgcGFzcyBhYm92ZSBkb2VzIG5vdAorICAgIC8vIGNv
bWUgZnJvbSBub24tZGV0ZXJtaW5pc3RpYyByZW5kZXJpbmcuCisgICAgRVhQRUNUX0VRKDAsIG1l
bWNtcChyZXN1bHRzWzBdLmdldCgpLCByZXN1bHRzWzJdLmdldCgpLCBrUmVzdWx0U2l6ZSkpOwor
fQorCisvLyBUZXN0IHRoYXQgZW5hYmxpbmcgR0xfU0FNUExFX0FMUEhBX1RPX09ORV9FWFQgYWZm
ZWN0cyByZW5kZXJpbmcuCitURVNUX1AoRVhUTXVsdGlzYW1wbGVDb21wYXRpYmlsaXR5VGVzdCwg
RHJhd0FscGhhT25lQW5kUmVzb2x2ZSkKK3sKKyAgICBpZiAoIWlzQXBwbGljYWJsZSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBTQU1QTEVfQUxQSEFfVE9fT05FIGlzIHNwZWNpZmllZCB0
byB0cmFuc2Zvcm0gYWxwaGEgdmFsdWVzIG9mCisgICAgLy8gY292ZXJlZCBzYW1wbGVzIHRvIDEu
MC4gSW4gb3JkZXIgdG8gZGV0ZWN0IGl0LCB3ZSB1c2Ugbm9uLTEuMAorICAgIC8vIGFscGhhLgor
ICAgIHN0YXRpYyBjb25zdCBmbG9hdCBrQmx1ZVtdID0gezAuMGYsIDAuMGYsIDEuMGYsIDAuNWZ9
OworICAgIHN0YXRpYyBjb25zdCBmbG9hdCBrR3JlZW5bXSA9IHswLjBmLCAxLjBmLCAwLjBmLCAw
LjVmfTsKKyAgICBzdGF0aWMgY29uc3QgZmxvYXQga1JlZFtdID0gezEuMGYsIDAuMGYsIDAuMGYs
IDAuNWZ9OworCisgICAgLy8gRGlmZmVyZW50IGRyaXZlcnMgc2VlbSB0byBiZWhhdmUgZGlmZmVy
ZW50bHkgd2l0aCByZXNwZWN0IHRvIHJlc3VsdGluZworICAgIC8vIGFscGhhIHZhbHVlLiBUaGVz
ZSBtaWdodCBiZSBkdWUgdG8gZGlmZmVyZW50IE1TQUEgc2FtcGxlIGNvdW50cyBjYXVzaW5nCisg
ICAgLy8gZGlmZmVyZW50IHNhbXBsZXMgdG8gaGl0LiAgT3RoZXIgb3B0aW9uIGlzIGRyaXZlciBi
dWdzLiBUZXN0aW5nIGV4YWN0IG9yCisgICAgLy8gZXZlbiBhcHByb3hpbWF0ZSBzYW1wbGUgdmFs
dWVzIGlzIG5vdCB0aGF0IGVhc3kuICBUaHVzLCBqdXN0IHRlc3QKKyAgICAvLyByZXByZXNlbnRh
dGl2ZSBwb3NpdGlvbnMgd2hpY2ggaGF2ZSBmcmFjdGlvbmFsIHBpeGVscywgaW5zcGVjdGluZyB0
aGF0CisgICAgLy8gbm9ybWFsIHJlbmRlcmluZyBpcyBkaWZmZXJlbnQgdG8gU0FNUExFX0FMUEhB
X1RPX09ORSByZW5kZXJpbmcuCisgICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gcmVzdWx0
c1szXTsKKyAgICBjb25zdCBHTGludCBrUmVzdWx0U2l6ZSA9IGtXaWR0aCAqIGtIZWlnaHQgKiA0
OworCisgICAgZm9yIChpbnQgcGFzcyA9IDA7IHBhc3MgPCAzOyArK3Bhc3MpCisgICAgeworICAg
ICAgICBwcmVwYXJlRm9yRHJhdygpOworICAgICAgICBpZiAocGFzcyA9PSAxKQorICAgICAgICB7
CisgICAgICAgICAgICBnbEVuYWJsZShHTF9TQU1QTEVfQUxQSEFfVE9fT05FX0VYVCk7CisgICAg
ICAgIH0KKyAgICAgICAgZ2xFbmFibGUoR0xfTVVMVElTQU1QTEVfRVhUKTsKKyAgICAgICAgZ2xV
bmlmb3JtNGZ2KG1Db2xvckxvYywgMSwga0dyZWVuKTsKKyAgICAgICAgZ2xEcmF3QXJyYXlzKEdM
X1RSSUFOR0xFUywgMCwgMyk7CisKKyAgICAgICAgZ2xVbmlmb3JtNGZ2KG1Db2xvckxvYywgMSwg
a0JsdWUpOworICAgICAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVTLCAzLCAzKTsKKworICAg
ICAgICBnbERpc2FibGUoR0xfTVVMVElTQU1QTEVfRVhUKTsKKyAgICAgICAgZ2xVbmlmb3JtNGZ2
KG1Db2xvckxvYywgMSwga1JlZCk7CisgICAgICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRVMs
IDYsIDMpOworCisgICAgICAgIHByZXBhcmVGb3JWZXJpZnkoKTsKKyAgICAgICAgcmVzdWx0c1tw
YXNzXS5yZXNldChuZXcgdWludDhfdFtrUmVzdWx0U2l6ZV0pOworICAgICAgICBtZW1zZXQocmVz
dWx0c1twYXNzXS5nZXQoKSwgMTIzdSwga1Jlc3VsdFNpemUpOworICAgICAgICBnbFJlYWRQaXhl
bHMoMCwgMCwga1dpZHRoLCBrSGVpZ2h0LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAg
ICAgICAgICAgcmVzdWx0c1twYXNzXS5nZXQoKSk7CisgICAgICAgIGlmIChwYXNzID09IDEpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGdsRGlzYWJsZShHTF9TQU1QTEVfQUxQSEFfVE9fT05FX0VY
VCk7CisgICAgICAgIH0KKworICAgICAgICBjbGVhbnVwKCk7CisgICAgfQorICAgIEVYUEVDVF9O
RSgwLCBtZW1jbXAocmVzdWx0c1swXS5nZXQoKSwgcmVzdWx0c1sxXS5nZXQoKSwga1Jlc3VsdFNp
emUpKTsKKyAgICAvLyBWZXJpZnkgdGhhdCByZW5kZXJpbmcgaXMgZGV0ZXJtaW5pc3RpYywgc28g
dGhhdCB0aGUgcGFzcyBhYm92ZSBkb2VzIG5vdAorICAgIC8vIGNvbWUgZnJvbSBub24tZGV0ZXJt
aW5pc3RpYyByZW5kZXJpbmcuCisgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChyZXN1bHRzWzBdLmdl
dCgpLCByZXN1bHRzWzJdLmdldCgpLCBrUmVzdWx0U2l6ZSkpOworfQorCisKK0FOR0xFX0lOU1RB
TlRJQVRFX1RFU1QoRVhUTXVsdGlzYW1wbGVDb21wYXRpYmlsaXR5VGVzdCwgRVMyX09QRU5HTCgp
LCBFUzJfT1BFTkdMRVMoKSwgRVMzX09QRU5HTCgpKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvT2Jq
ZWN0QWxsb2NhdGlvblRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9PYmplY3RBbGxvY2F0aW9uVGVzdC5jcHAJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL09iamVj
dEFsbG9jYXRpb25UZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU0IEBACisvLwor
Ly8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisvLworLy8gT2JqZWN0QWxsb2NhdGlvblRlc3QKKy8vICAgVGVzdHMgZm9yIG9iamVjdCBhbGxv
Y2F0aW9ucyBhbmQgbGlmZXRpbWVzLgorLy8KKworI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVU
ZXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNlCit7CisKK2NsYXNz
IE9iamVjdEFsbG9jYXRpb25UZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6
CisgICAgT2JqZWN0QWxsb2NhdGlvblRlc3QoKSB7fQorfTsKKworLy8gVGVzdCB0aGF0IHdlIGRv
bid0IHJlLWFsbG9jYXRlIGEgYm91bmQgZnJhbWVidWZmZXIgSUQuCitURVNUX1AoT2JqZWN0QWxs
b2NhdGlvblRlc3QsIEJpbmRGcmFtZWJ1ZmZlckJlZm9yZUdlbikKK3sKKyAgICBnbEJpbmRGcmFt
ZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMSk7CisgICAgR0x1aW50IGZibyA9IDA7CisgICAgZ2xH
ZW5GcmFtZWJ1ZmZlcnMoMSwgJmZibyk7CisgICAgRVhQRUNUX05FKDF1LCBmYm8pOworICAgIGds
RGVsZXRlRnJhbWVidWZmZXJzKDEsICZmYm8pOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwor
fQorCisvLyBUZXN0IHRoYXQgd2UgZG9uJ3QgcmUtYWxsb2NhdGUgYSBib3VuZCBmcmFtZWJ1ZmZl
ciBJRCwgb3RoZXIgcGF0dGVybi4KK1RFU1RfUChPYmplY3RBbGxvY2F0aW9uVGVzdCwgQmluZEZy
YW1lYnVmZmVyQWZ0ZXJHZW4pCit7CisgICAgR0x1aW50IGZpcnN0RkJPID0gMDsKKyAgICBnbEdl
bkZyYW1lYnVmZmVycygxLCAmZmlyc3RGQk8pOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZS
QU1FQlVGRkVSLCAxKTsKKyAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmZmlyc3RGQk8pOwor
CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDIpOworICAgIEdMdWludCBz
ZWNvbmRGQk9zWzJdID0gezB9OworICAgIGdsR2VuRnJhbWVidWZmZXJzKDIsIHNlY29uZEZCT3Mp
OworICAgIEVYUEVDVF9ORSgydSwgc2Vjb25kRkJPc1swXSk7CisgICAgRVhQRUNUX05FKDJ1LCBz
ZWNvbmRGQk9zWzFdKTsKKyAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygyLCBzZWNvbmRGQk9zKTsK
KworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworfQorCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNw
YWNlCisKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoT2JqZWN0QWxsb2NhdGlvblRlc3QsIEVTM19P
UEVOR0woKSwgRVMzX0QzRDExKCkpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9PY2NsdXNpb25RdWVy
aWVzVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsX3Rlc3RzL09jY2x1c2lvblF1ZXJpZXNUZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvT2NjbHVzaW9uUXVlcmll
c1Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzY2IEBACisvLworLy8gQ29weXJp
Z2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisj
aW5jbHVkZSAic3lzdGVtX3V0aWxzLmgiCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3Qu
aCIKKyNpbmNsdWRlICJyYW5kb21fdXRpbHMuaCIKKwordXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwor
CitjbGFzcyBPY2NsdXNpb25RdWVyaWVzVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJv
dGVjdGVkOgorICAgIE9jY2x1c2lvblF1ZXJpZXNUZXN0KCkgOiBtUHJvZ3JhbSgwKSwgbVJORygx
KQorICAgIHsKKyAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKKyAgICAgICAgc2V0V2luZG93
SGVpZ2h0KDEyOCk7CisgICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7CisgICAgICAgIHNldENv
bmZpZ0dyZWVuQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7CisgICAgICAg
IHNldENvbmZpZ0FscGhhQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnRGVwdGhCaXRzKDI0KTsK
KyAgICB9CisKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFOR0xF
VGVzdDo6U2V0VXAoKTsKKworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBwYXNzdGhyb3VnaFZT
ID0gU0hBREVSX1NPVVJDRQorICAgICAgICAoCisgICAgICAgICAgICBhdHRyaWJ1dGUgaGlnaHAg
dmVjNCBwb3NpdGlvbjsKKyAgICAgICAgICAgIHZvaWQgbWFpbih2b2lkKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247CisgICAgICAgICAgICB9
CisgICAgICAgICk7CisKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgcGFzc3Rocm91Z2hQUyA9
IFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZs
b2F0OworICAgICAgICAgICAgdm9pZCBtYWluKHZvaWQpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMS4wLCAxLjAsIDEuMCk7CisgICAgICAg
ICAgICB9CisgICAgICAgICk7CisKKyAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbShw
YXNzdGhyb3VnaFZTLCBwYXNzdGhyb3VnaFBTKTsKKyAgICAgICAgQVNTRVJUX05FKDB1LCBtUHJv
Z3JhbSk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAgeworICAg
ICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOworCisgICAgICAgIEFOR0xFVGVzdDo6VGVh
ckRvd24oKTsKKyAgICB9CisKKyAgICBHTHVpbnQgbVByb2dyYW07CisgICAgUk5HIG1STkc7Cit9
OworCitURVNUX1AoT2NjbHVzaW9uUXVlcmllc1Rlc3QsIElzT2NjbHVkZWQpCit7CisgICAgaWYg
KGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAmJiAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhU
X29jY2x1c2lvbl9xdWVyeV9ib29sZWFuIikpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwg
IlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEVTMyBvciBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jvb2xl
YW4gYXJlIG5vdCBhdmFpbGFibGUuIgorICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZ2xEZXB0aE1hc2soR0xfVFJVRSk7CisgICAg
Z2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCB8IEdMX1NU
RU5DSUxfQlVGRkVSX0JJVCk7CisKKyAgICAvLyBkcmF3IGEgcXVhZCBhdCBkZXB0aCAwLjMKKyAg
ICBnbEVuYWJsZShHTF9ERVBUSF9URVNUKTsKKyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwor
ICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjNmKTsKKyAgICBnbFVzZVByb2dy
YW0oMCk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIEdMdWludCBxdWVyeSA9
IDA7CisgICAgZ2xHZW5RdWVyaWVzRVhUKDEsICZxdWVyeSk7CisgICAgZ2xCZWdpblF1ZXJ5RVhU
KEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9FWFQsIHF1ZXJ5KTsKKyAgICBkcmF3UXVhZChtUHJvZ3Jh
bSwgInBvc2l0aW9uIiwgMC44Zik7IC8vIHRoaXMgcXVhZCBzaG91bGQgYmUgb2NjbHVkZWQgYnkg
Zmlyc3QgcXVhZAorICAgIGdsRW5kUXVlcnlFWFQoR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0VYVCk7
CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIHN3YXBCdWZmZXJzKCk7CisKKyAg
ICBHTHVpbnQgcmVhZHkgPSBHTF9GQUxTRTsKKyAgICB3aGlsZSAocmVhZHkgPT0gR0xfRkFMU0Up
CisgICAgeworICAgICAgICBhbmdsZTo6U2xlZXAoMCk7CisgICAgICAgIGdsR2V0UXVlcnlPYmpl
Y3R1aXZFWFQocXVlcnksIEdMX1FVRVJZX1JFU1VMVF9BVkFJTEFCTEVfRVhULCAmcmVhZHkpOwor
ICAgIH0KKworICAgIEdMdWludCByZXN1bHQgPSBHTF9UUlVFOworICAgIGdsR2V0UXVlcnlPYmpl
Y3R1aXZFWFQocXVlcnksIEdMX1FVRVJZX1JFU1VMVF9FWFQsICZyZXN1bHQpOworCisgICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbERlbGV0ZVF1ZXJpZXNFWFQoMSwgJnF1ZXJ5KTsK
KworICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRkFMU0UsIHJlc3VsdCk7Cit9CisKK1RFU1RfUChP
Y2NsdXNpb25RdWVyaWVzVGVzdCwgSXNOb3RPY2NsdWRlZCkKK3sKKyAgICBpZiAoZ2V0Q2xpZW50
TWFqb3JWZXJzaW9uKCkgPCAzICYmICFleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfb2NjbHVzaW9u
X3F1ZXJ5X2Jvb2xlYW4iKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lw
cGVkIGJlY2F1c2UgRVMzIG9yIEdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbiBhcmUgbm90
IGF2YWlsYWJsZS4iCisgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBnbERlcHRoTWFzayhHTF9UUlVFKTsKKyAgICBnbENsZWFyKEdM
X0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZG
RVJfQklUKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgR0x1aW50IHF1ZXJ5
ID0gMDsKKyAgICBnbEdlblF1ZXJpZXNFWFQoMSwgJnF1ZXJ5KTsKKyAgICBnbEJlZ2luUXVlcnlF
WFQoR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0VYVCwgcXVlcnkpOworICAgIGRyYXdRdWFkKG1Qcm9n
cmFtLCAicG9zaXRpb24iLCAwLjhmKTsgLy8gdGhpcyBxdWFkIHNob3VsZCBub3QgYmUgb2NjbHVk
ZWQKKyAgICBnbEVuZFF1ZXJ5RVhUKEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9FWFQpOworCisgICAg
RVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBzd2FwQnVmZmVycygpOworCisgICAgR0x1aW50
IHJlc3VsdCA9IEdMX1RSVUU7CisgICAgZ2xHZXRRdWVyeU9iamVjdHVpdkVYVChxdWVyeSwgR0xf
UVVFUllfUkVTVUxUX0VYVCwgJnJlc3VsdCk7IC8vIHdpbGwgYmxvY2sgd2FpdGluZyBmb3IgcmVz
dWx0CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsRGVsZXRlUXVlcmllc0VY
VCgxLCAmcXVlcnkpOworCisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9UUlVFLCByZXN1bHQpOwor
fQorCitURVNUX1AoT2NjbHVzaW9uUXVlcmllc1Rlc3QsIEVycm9ycykKK3sKKyAgICBpZiAoZ2V0
Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfb2Nj
bHVzaW9uX3F1ZXJ5X2Jvb2xlYW4iKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVz
dCBza2lwcGVkIGJlY2F1c2UgRVMzIG9yIEdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbiBh
cmUgbm90IGF2YWlsYWJsZS4iCisgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBnbERlcHRoTWFzayhHTF9UUlVFKTsKKyAgICBnbENs
ZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJ
TF9CVUZGRVJfQklUKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgR0x1aW50
IHF1ZXJ5ID0gMDsKKyAgICBHTHVpbnQgcXVlcnkyID0gMDsKKyAgICBnbEdlblF1ZXJpZXNFWFQo
MSwgJnF1ZXJ5KTsKKworICAgIEVYUEVDVF9FUShnbElzUXVlcnlFWFQocXVlcnkpLCBHTF9GQUxT
RSk7CisgICAgRVhQRUNUX0VRKGdsSXNRdWVyeUVYVChxdWVyeTIpLCBHTF9GQUxTRSk7CisKKyAg
ICBnbEJlZ2luUXVlcnlFWFQoR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0VYVCwgMCk7IC8vIGNhbid0
IHBhc3MgMCBhcyBxdWVyeSBpZAorICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJB
VElPTik7CisKKyAgICBnbEJlZ2luUXVlcnlFWFQoR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0VYVCwg
cXVlcnkpOworICAgIGdsQmVnaW5RdWVyeUVYVChHTF9BTllfU0FNUExFU19QQVNTRURfQ09OU0VS
VkFUSVZFX0VYVCwgcXVlcnkyKTsgLy8gY2FuJ3QgaW5pdGlhdGUgYSBxdWVyeSB3aGlsZSBvbmUn
cyBhbHJlYWR5IGFjdGl2ZQorICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElP
Tik7CisKKyAgICBFWFBFQ1RfRVEoZ2xJc1F1ZXJ5RVhUKHF1ZXJ5KSwgR0xfVFJVRSk7CisgICAg
RVhQRUNUX0VRKGdsSXNRdWVyeUVYVChxdWVyeTIpLCBHTF9GQUxTRSk7IC8vIGhhdmUgbm90IGNh
bGxlZCBiZWdpbgorCisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuOGYpOyAv
LyB0aGlzIHF1YWQgc2hvdWxkIG5vdCBiZSBvY2NsdWRlZAorICAgIGdsRW5kUXVlcnlFWFQoR0xf
QU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRV9FWFQpOyAvLyBubyBhY3RpdmUgcXVlcnkg
Zm9yIHRoaXMgdGFyZ2V0CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKKyAgICBnbEVuZFF1ZXJ5RVhUKEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9FWFQpOworCisgICAg
Z2xCZWdpblF1ZXJ5RVhUKEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkVfRVhULCBx
dWVyeSk7IC8vIGNhbid0IGJlZ2luIGEgcXVlcnkgYXMgYSBkaWZmZXJlbnQgdHlwZSB0aGFuIHBy
ZXZpb3VzbHkgdXNlZAorICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7
CisKKyAgICBnbEJlZ2luUXVlcnlFWFQoR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElW
RV9FWFQsIHF1ZXJ5Mik7IC8vIGhhdmUgdG8gY2FsbCBnZW5xdWVyaWVzIGZpcnN0CisgICAgRVhQ
RUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKworICAgIGdsR2VuUXVlcmllc0VY
VCgxLCAmcXVlcnkyKTsKKyAgICBnbEJlZ2luUXVlcnlFWFQoR0xfQU5ZX1NBTVBMRVNfUEFTU0VE
X0NPTlNFUlZBVElWRV9FWFQsIHF1ZXJ5Mik7IC8vIHNob3VsZCBiZSBvayBub3cKKyAgICBFWFBF
Q1RfRVEoZ2xJc1F1ZXJ5RVhUKHF1ZXJ5MiksIEdMX1RSVUUpOworCisgICAgZHJhd1F1YWQobVBy
b2dyYW0sICJwb3NpdGlvbiIsIDAuM2YpOyAvLyB0aGlzIHNob3VsZCBkcmF3IGluIGZyb250IG9m
IG90aGVyIHF1YWQKKyAgICBnbERlbGV0ZVF1ZXJpZXNFWFQoMSwgJnF1ZXJ5Mik7IC8vIHNob3Vs
ZCBkZWxldGUgd2hlbiBxdWVyeSBiZWNvbWVzIGluYWN0aXZlCisgICAgZ2xFbmRRdWVyeUVYVChH
TF9BTllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFX0VYVCk7IC8vIHNob3VsZCBub3QgaW5j
dXIgZXJyb3I7IHNob3VsZCBkZWxldGUgcXVlcnkgKyAxIGF0IGVuZCBvZiBleGVjdXRpb24uCisg
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBzd2FwQnVmZmVycygpOworCisgICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBHTHVpbnQgcmVhZHkgPSBHTF9GQUxTRTsKKyAgICBn
bEdldFF1ZXJ5T2JqZWN0dWl2RVhUKHF1ZXJ5MiwgR0xfUVVFUllfUkVTVUxUX0FWQUlMQUJMRV9F
WFQsICZyZWFkeSk7IC8vIHRoaXMgcXVlcnkgaXMgbm93IGRlbGV0ZWQKKyAgICBFWFBFQ1RfR0xf
RVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
Cit9CisKKy8vIFRlc3QgdGhhdCBydW5uaW5nIG11bHRpcGxlIHNpbXVsdGFuZW91cyBxdWVyaWVz
IGZyb20gbXVsdGlwbGUgRUdMIGNvbnRleHRzIHJldHVybnMgdGhlIGNvcnJlY3QKKy8vIHJlc3Vs
dCBmb3IgZWFjaCBxdWVyeS4gIEhlbHBzIGV4cG9zZSBidWdzIGluIEFOR0xFJ3MgdmlydHVhbCBj
b250ZXh0cy4KK1RFU1RfUChPY2NsdXNpb25RdWVyaWVzVGVzdCwgTXVsdGlDb250ZXh0KQorewor
ICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMgJiYgIWV4dGVuc2lvbkVuYWJsZWQo
IkdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbiIpKQorICAgIHsKKyAgICAgICAgc3RkOjpj
b3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBFUzMgb3IgR0xfRVhUX29jY2x1c2lvbl9xdWVy
eV9ib29sZWFuIGFyZSBub3QgYXZhaWxhYmxlLiIKKyAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6
ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChHZXRQYXJhbSgpID09IEVT
Ml9EM0Q5KCkgfHwgR2V0UGFyYW0oKSA9PSBFUzJfRDNEMTEoKSB8fCBHZXRQYXJhbSgpID09IEVT
M19EM0QxMSgpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVj
YXVzZSB0aGUgRDNEIGJhY2tlbmRzIGNhbm5vdCBzdXBwb3J0IHNpbXVsdGFuZW91cyBxdWVyaWVz
IG9uICIKKyAgICAgICAgICAgICAgICAgICAgICJtdWx0aXBsZSBjb250ZXh0cyB5ZXQuIgorICAg
ICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgZ2xEZXB0aE1hc2soR0xfVFJVRSk7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklU
IHwgR0xfREVQVEhfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7CisKKyAgICAv
LyBkcmF3IGEgcXVhZCBhdCBkZXB0aCAwLjUKKyAgICBnbEVuYWJsZShHTF9ERVBUSF9URVNUKTsK
KyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisKKyAgICBFR0xXaW5k
b3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygpOworCisgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0g
d2luZG93LT5nZXREaXNwbGF5KCk7CisgICAgRUdMQ29uZmlnIGNvbmZpZyAgID0gd2luZG93LT5n
ZXRDb25maWcoKTsKKyAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSB3aW5kb3ctPmdldFN1cmZhY2Uo
KTsKKworICAgIEVHTGludCBjb250ZXh0QXR0cmlidXRlc1tdID0geworICAgICAgICBFR0xfQ09O
VEVYVF9NQUpPUl9WRVJTSU9OX0tIUiwKKyAgICAgICAgR2V0UGFyYW0oKS5tYWpvclZlcnNpb24s
CisgICAgICAgIEVHTF9DT05URVhUX01JTk9SX1ZFUlNJT05fS0hSLAorICAgICAgICBHZXRQYXJh
bSgpLm1pbm9yVmVyc2lvbiwKKyAgICAgICAgRUdMX05PTkUsCisgICAgfTsKKworICAgIGNvbnN0
IHNpemVfdCBwYXNzQ291bnQgPSA1OworICAgIHN0cnVjdCBDb250ZXh0SW5mbworICAgIHsKKyAg
ICAgICAgRUdMQ29udGV4dCBjb250ZXh0OworICAgICAgICBHTHVpbnQgcHJvZ3JhbTsKKyAgICAg
ICAgR0x1aW50IHF1ZXJ5OworICAgICAgICBib29sIHZpc2libGVQYXNzZXNbcGFzc0NvdW50XTsK
KyAgICAgICAgYm9vbCBzaG91bGRQYXNzOworICAgIH07CisKKyAgICBDb250ZXh0SW5mbyBjb250
ZXh0c1tdID0geworICAgICAgICB7CisgICAgICAgICAgICBFR0xfTk9fQ09OVEVYVCwgMCwgMCwg
e2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZX0sIGZhbHNlLAorICAgICAgICB9LAor
ICAgICAgICB7CisgICAgICAgICAgICBFR0xfTk9fQ09OVEVYVCwgMCwgMCwge2ZhbHNlLCB0cnVl
LCBmYWxzZSwgdHJ1ZSwgZmFsc2V9LCB0cnVlLAorICAgICAgICB9LAorICAgICAgICB7CisgICAg
ICAgICAgICBFR0xfTk9fQ09OVEVYVCwgMCwgMCwge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZX0sIGZhbHNlLAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICBFR0xf
Tk9fQ09OVEVYVCwgMCwgMCwge3RydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlfSwgdHJ1ZSwK
KyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgRUdMX05PX0NPTlRFWFQsIDAsIDAs
IHtmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sIHRydWUsCisgICAgICAgIH0sCisgICAg
ICAgIHsKKyAgICAgICAgICAgIEVHTF9OT19DT05URVhULCAwLCAwLCB7dHJ1ZSwgZmFsc2UsIGZh
bHNlLCB0cnVlLCBmYWxzZX0sIHRydWUsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEVHTF9OT19DT05URVhULCAwLCAwLCB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlfSwgZmFsc2UsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIEVHTF9OT19D
T05URVhULCAwLCAwLCB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlfSwgZmFsc2Us
CisgICAgICAgIH0sCisgICAgfTsKKworICAgIGZvciAoYXV0byAmY29udGV4dCA6IGNvbnRleHRz
KQorICAgIHsKKyAgICAgICAgY29udGV4dC5jb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNw
bGF5LCBjb25maWcsIEVHTF9OT19DT05URVhULCBjb250ZXh0QXR0cmlidXRlcyk7CisgICAgICAg
IEFTU0VSVF9ORShjb250ZXh0LmNvbnRleHQsIEVHTF9OT19DT05URVhUKTsKKworICAgICAgICBl
Z2xNYWtlQ3VycmVudChkaXNwbGF5LCBzdXJmYWNlLCBzdXJmYWNlLCBjb250ZXh0LmNvbnRleHQp
OworCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHBhc3N0aHJvdWdoVlMgPSBTSEFERVJfU09V
UkNFCisgICAgICAgICgKKyAgICAgICAgICAgIGF0dHJpYnV0ZSBoaWdocCB2ZWM0IHBvc2l0aW9u
OworICAgICAgICAgICAgdm9pZCBtYWluKHZvaWQpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsK
KworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBwYXNzdGhyb3VnaFBTID0gU0hBREVSX1NPVVJD
RQorICAgICAgICAoCisgICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisgICAgICAg
ICAgICB2b2lkIG1haW4odm9pZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgIGdsX0Zy
YWdDb2xvciA9IHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgKTsKKworICAgICAgICBjb250ZXh0LnByb2dyYW0gPSBDb21waWxlUHJvZ3JhbShwYXNzdGhy
b3VnaFZTLCBwYXNzdGhyb3VnaFBTKTsKKyAgICAgICAgQVNTRVJUX05FKGNvbnRleHQucHJvZ3Jh
bSwgMHUpOworCisgICAgICAgIGdsRGVwdGhNYXNrKEdMX0ZBTFNFKTsKKyAgICAgICAgZ2xFbmFi
bGUoR0xfREVQVEhfVEVTVCk7CisKKyAgICAgICAgZ2xHZW5RdWVyaWVzRVhUKDEsICZjb250ZXh0
LnF1ZXJ5KTsKKyAgICAgICAgZ2xCZWdpblF1ZXJ5RVhUKEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9F
WFQsIGNvbnRleHQucXVlcnkpOworCisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAg
IH0KKworICAgIGZvciAoc2l6ZV90IHBhc3MgPSAwOyBwYXNzIDwgcGFzc0NvdW50OyBwYXNzKysp
CisgICAgeworICAgICAgICBmb3IgKGNvbnN0IGF1dG8gJmNvbnRleHQgOiBjb250ZXh0cykKKyAg
ICAgICAgeworICAgICAgICAgICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwgc3VyZmFjZSwgc3Vy
ZmFjZSwgY29udGV4dC5jb250ZXh0KTsKKworICAgICAgICAgICAgZmxvYXQgZGVwdGggPSBjb250
ZXh0LnZpc2libGVQYXNzZXNbcGFzc10gPyBtUk5HLnJhbmRvbUZsb2F0QmV0d2VlbigwLjBmLCAw
LjRmKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOiBtUk5HLnJhbmRvbUZsb2F0QmV0d2VlbigwLjZmLCAxLjBmKTsKKyAgICAgICAgICAgIGRy
YXdRdWFkKGNvbnRleHQucHJvZ3JhbSwgInBvc2l0aW9uIiwgZGVwdGgpOworCisgICAgICAgICAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAoY29u
c3QgYXV0byAmY29udGV4dCA6IGNvbnRleHRzKQorICAgIHsKKyAgICAgICAgZWdsTWFrZUN1cnJl
bnQoZGlzcGxheSwgc3VyZmFjZSwgc3VyZmFjZSwgY29udGV4dC5jb250ZXh0KTsKKyAgICAgICAg
Z2xFbmRRdWVyeUVYVChHTF9BTllfU0FNUExFU19QQVNTRURfRVhUKTsKKworICAgICAgICBHTHVp
bnQgcmVzdWx0ID0gR0xfVFJVRTsKKyAgICAgICAgZ2xHZXRRdWVyeU9iamVjdHVpdkVYVChjb250
ZXh0LnF1ZXJ5LCBHTF9RVUVSWV9SRVNVTFRfRVhULCAmcmVzdWx0KTsKKworICAgICAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKKworICAgICAgICBHTHVpbnQgZXhwZWN0YXRpb24gPSBjb250ZXh0
LnNob3VsZFBhc3MgPyBHTF9UUlVFIDogR0xfRkFMU0U7CisgICAgICAgIEVYUEVDVF9FUShleHBl
Y3RhdGlvbiwgcmVzdWx0KTsKKyAgICB9CisKKyAgICBlZ2xNYWtlQ3VycmVudChkaXNwbGF5LCBz
dXJmYWNlLCBzdXJmYWNlLCB3aW5kb3ctPmdldENvbnRleHQoKSk7CisKKyAgICBmb3IgKGF1dG8g
JmNvbnRleHQgOiBjb250ZXh0cykKKyAgICB7CisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRp
c3BsYXksIGNvbnRleHQuY29udGV4dCk7CisgICAgICAgIGNvbnRleHQuY29udGV4dCA9IEVHTF9O
T19DT05URVhUOworICAgIH0KK30KKworLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZp
Z3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24p
IHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KK0FOR0xFX0lOU1RBTlRJQVRFX1RF
U1QoT2NjbHVzaW9uUXVlcmllc1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5
KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICBFUzNfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgp
LAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKCksCisgICAgICAgICAgICAgICAg
ICAgICAgIEVTMl9PUEVOR0xFUygpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdM
RVMoKSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMv
UEJPRXh0ZW5zaW9uVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1BCT0V4dGVuc2lvblRlc3QuY3BwCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9QQk9FeHRlbnNp
b25UZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1MyBAQAorLy8KKy8vIENvcHly
aWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKwor
I2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBhbmds
ZTsKKworY2xhc3MgUEJPRXh0ZW5zaW9uVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJv
dGVjdGVkOgorICAgIFBCT0V4dGVuc2lvblRlc3QoKQorICAgIHsKKyAgICAgICAgc2V0V2luZG93
V2lkdGgoMzIpOworICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMzIpOworICAgICAgICBzZXRDb25m
aWdSZWRCaXRzKDgpOworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNl
dENvbmZpZ0JsdWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAg
fQorCisgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKKyAgICB7CisgICAgICAgIEFOR0xFVGVzdDo6
U2V0VXAoKTsKKworICAgICAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCgiTlZfcGl4ZWxfYnVmZmVy
X29iamVjdCIpKQorICAgICAgICB7CisgICAgICAgICAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1QQk8p
OworICAgICAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCBtUEJPKTsK
KyAgICAgICAgICAgIGdsQnVmZmVyRGF0YShHTF9QSVhFTF9QQUNLX0JVRkZFUiwgNCAqIGdldFdp
bmRvd1dpZHRoKCkgKiBnZXRXaW5kb3dIZWlnaHQoKSwgTlVMTCwgR0xfU1RBVElDX0RSQVcpOwor
ICAgICAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCAwKTsKKworICAg
ICAgICAgICAgY29uc3QgY2hhciAqdmVydGV4U2hhZGVyU3JjID0gU0hBREVSX1NPVVJDRQorICAg
ICAgICAgICAgKAorICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IGFUZXN0OworICAgICAg
ICAgICAgICAgIGF0dHJpYnV0ZSB2ZWMyIGFQb3NpdGlvbjsKKyAgICAgICAgICAgICAgICB2YXJ5
aW5nIHZlYzQgdlRlc3Q7CisKKyAgICAgICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdlRlc3QgPSBhVGVzdDsKKyAgICAgICAgICAg
ICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGFQb3NpdGlvbiwgMC4wLCAxLjApOworICAgICAg
ICAgICAgICAgICAgICBnbF9Qb2ludFNpemUgPSAxLjA7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgKTsKKworICAgICAgICAgICAgY29uc3QgY2hhciAqZnJhZ21lbnRTaGFkZXJTcmMg
PSBTSEFERVJfU09VUkNFCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CisgICAgICAgICAgICAgICAgdmFyeWluZyB2ZWM0IHZUZXN0OworCisg
ICAgICAgICAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZUZXN0OworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICk7CisKKyAgICAgICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4
U2hhZGVyU3JjLCBmcmFnbWVudFNoYWRlclNyYyk7CisKKyAgICAgICAgICAgIGdsR2VuQnVmZmVy
cygxLCAmbVBvc2l0aW9uVkJPKTsKKyAgICAgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9C
VUZGRVIsIG1Qb3NpdGlvblZCTyk7CisgICAgICAgICAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlf
QlVGRkVSLCAxMjgsIE5VTEwsIEdMX0RZTkFNSUNfRFJBVyk7CisgICAgICAgICAgICBnbEJpbmRC
dWZmZXIoR0xfQVJSQVlfQlVGRkVSLCAwKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQorICAgIHsK
KyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOworCisgICAgICAgIGdsRGVsZXRlQnVmZmVy
cygxLCAmbVBCTyk7CisgICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgfQor
CisgICAgR0x1aW50IG1QQk87CisgICAgR0x1aW50IG1Qcm9ncmFtOworICAgIEdMdWludCBtUG9z
aXRpb25WQk87Cit9OworCitURVNUX1AoUEJPRXh0ZW5zaW9uVGVzdCwgUEJPV2l0aE90aGVyVGFy
Z2V0KQoreworICAgIGlmIChleHRlbnNpb25FbmFibGVkKCJOVl9waXhlbF9idWZmZXJfb2JqZWN0
IikpCisgICAgeworICAgICAgICBnbENsZWFyQ29sb3IoMS4wZiwgMC4wZiwgMC4wZiwgMS4wZik7
CisgICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworCisgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9QQUNLX0JVRkZF
UiwgbVBCTyk7CisgICAgICAgIGdsUmVhZFBpeGVscygwLCAwLCAxNiwgMTYsIEdMX1JHQkEsIEdM
X1VOU0lHTkVEX0JZVEUsIDApOworCisgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9QQUNL
X0JVRkZFUiwgMCk7CisgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1QQk8p
OworCisgICAgICAgIEdMdm9pZCAqbWFwcGVkUHRyID0gZ2xNYXBCdWZmZXJSYW5nZUVYVChHTF9B
UlJBWV9CVUZGRVIsIDAsIDMyLCBHTF9NQVBfUkVBRF9CSVQpOworICAgICAgICB1bnNpZ25lZCBj
aGFyICpkYXRhUHRyID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihtYXBwZWRQdHIpOwor
ICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgICAgICBFWFBFQ1RfRVEoMjU1LCBk
YXRhUHRyWzBdKTsKKyAgICAgICAgRVhQRUNUX0VRKDAsICAgZGF0YVB0clsxXSk7CisgICAgICAg
IEVYUEVDVF9FUSgwLCAgIGRhdGFQdHJbMl0pOworICAgICAgICBFWFBFQ1RfRVEoMjU1LCBkYXRh
UHRyWzNdKTsKKworICAgICAgICBnbFVubWFwQnVmZmVyT0VTKEdMX0FSUkFZX0JVRkZFUik7Cisg
ICAgfQorICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworfQorCitURVNUX1AoUEJPRXh0ZW5zaW9u
VGVzdCwgUEJPV2l0aEV4aXN0aW5nRGF0YSkKK3sKKyAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCgi
TlZfcGl4ZWxfYnVmZmVyX29iamVjdCIpKQorICAgIHsKKyAgICAgICAgLy8gQ2xlYXIgYmFja2J1
ZmZlciB0byByZWQKKyAgICAgICAgZ2xDbGVhckNvbG9yKDEuMGYsIDAuMGYsIDAuMGYsIDEuMGYp
OworICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAgICAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKKworICAgICAgICAvLyBSZWFkIDE2eDE2IHJlZ2lvbiBmcm9tIHJlZCBi
YWNrYnVmZmVyIHRvIFBCTworICAgICAgICBnbEJpbmRCdWZmZXIoR0xfUElYRUxfUEFDS19CVUZG
RVIsIG1QQk8pOworICAgICAgICBnbFJlYWRQaXhlbHMoMCwgMCwgMTYsIDE2LCBHTF9SR0JBLCBH
TF9VTlNJR05FRF9CWVRFLCAwKTsKKworICAgICAgICAvLyBDbGVhciBiYWNrYnVmZmVyIHRvIGdy
ZWVuCisgICAgICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAxLjBmLCAwLjBmLCAxLjBmKTsKKyAgICAg
ICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICAgICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7CisKKyAgICAgICAgLy8gUmVhZCAxNngxNiByZWdpb24gZnJvbSBncmVlbiBiYWNrYnVm
ZmVyIHRvIFBCTyBhdCBvZmZzZXQgMTYKKyAgICAgICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIDE2LCAx
NiwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQqPigx
NikpOworICAgICAgICBHTHZvaWQgKiBtYXBwZWRQdHIgPSBnbE1hcEJ1ZmZlclJhbmdlRVhUKEdM
X1BJWEVMX1BBQ0tfQlVGRkVSLCAwLCAzMiwgR0xfTUFQX1JFQURfQklUKTsKKyAgICAgICAgdW5z
aWduZWQgY2hhciAqZGF0YVB0ciA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4obWFwcGVk
UHRyKTsKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgLy8gVGVzdCBw
aXhlbCAwIGlzIHJlZCAoZXhpc3RpbmcgZGF0YSkKKyAgICAgICAgRVhQRUNUX0VRKDI1NSwgZGF0
YVB0clswXSk7CisgICAgICAgIEVYUEVDVF9FUSgwLCBkYXRhUHRyWzFdKTsKKyAgICAgICAgRVhQ
RUNUX0VRKDAsIGRhdGFQdHJbMl0pOworICAgICAgICBFWFBFQ1RfRVEoMjU1LCBkYXRhUHRyWzNd
KTsKKworICAgICAgICAvLyBUZXN0IHBpeGVsIDE2IGlzIGdyZWVuIChuZXcgZGF0YSkKKyAgICAg
ICAgRVhQRUNUX0VRKDAsIGRhdGFQdHJbMTYgKiA0ICsgMF0pOworICAgICAgICBFWFBFQ1RfRVEo
MjU1LCBkYXRhUHRyWzE2ICogNCArIDFdKTsKKyAgICAgICAgRVhQRUNUX0VRKDAsIGRhdGFQdHJb
MTYgKiA0ICsgMl0pOworICAgICAgICBFWFBFQ1RfRVEoMjU1LCBkYXRhUHRyWzE2ICogNCArIDNd
KTsKKworICAgICAgICBnbFVubWFwQnVmZmVyT0VTKEdMX1BJWEVMX1BBQ0tfQlVGRkVSKTsKKyAg
ICB9CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFVzZSB0aGlzIHRvIHNlbGVj
dCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBt
YWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCitBTkdMRV9J
TlNUQU5USUFURV9URVNUKFBCT0V4dGVuc2lvblRlc3QsIEVTMl9EM0QxMSgpLCBFUzNfRDNEMTEo
KSwgRVMzX09QRU5HTCgpLCBFUzNfT1BFTkdMRVMoKSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvUGFja1VucGFja1Rlc3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9QYWNrVW5wYWNr
VGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsX3Rlc3RzL1BhY2tVbnBhY2tUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDI2OCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorLy8KKy8vIFBhY2tVbnBhY2tUZXN0OgorLy8gICBUZXN0cyB0aGUgY29y
cnJlY3RuZXNzIG9mIG9wZW5nbCA0LjEgZW11bGF0aW9uIG9mIHBhY2svdW5wYWNrIGJ1aWx0LWlu
IGZ1bmN0aW9ucy4KKy8vCisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorCit1
c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKK25hbWVzcGFjZQoreworCitjbGFzcyBQYWNrVW5wYWNr
VGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIFBhY2tVbnBhY2tU
ZXN0KCkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRoKDE2KTsKKyAgICAgICAgc2V0V2lu
ZG93SGVpZ2h0KDE2KTsKKyAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKKyAgICAgICAgc2V0
Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKKyAgICAg
ICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAgIH0KKworICAgIHZvaWQgU2V0VXAoKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOworCisgICAgICAgIC8vIFZl
cnRleCBTaGFkZXIgc291cmNlCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzID0gU0hBREVS
X1NPVVJDRQorICAgICAgICAoICAgI3ZlcnNpb24gMzAwIGVzXG4KKyAgICAgICAgICAgIHByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICAgICAgaW4gdmVjNCBwb3NpdGlvbjsKKworICAg
ICAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbF9Q
b3NpdGlvbiA9IHBvc2l0aW9uOworICAgICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAg
IC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgICAgICAgLy8gRnJhZ21lbnQgU2hhZGVyIHNvdXJjZQor
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBzTm9ybUZTID0gU0hBREVSX1NPVVJDRQorICAgICAg
ICAoICAgI3ZlcnNpb24gMzAwIGVzXG4KKyAgICAgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OworICAgICAgICAgICAgdW5pZm9ybSBtZWRpdW1wIHZlYzIgdjsKKyAgICAgICAgICAgIGxh
eW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgZnJhZ0NvbG9yOworCisgICAgICAg
ICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHVpbnQgdSA9
IHBhY2tTbm9ybTJ4MTYodik7CisgICAgICAgICAgICAgICAgdmVjMiByID0gdW5wYWNrU25vcm0y
eDE2KHUpOworICAgICAgICAgICAgICAgIGZyYWdDb2xvciA9IHZlYzQociwgMC4wLCAxLjApOwor
ICAgICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAgIC8vIEZyYWdtZW50IFNoYWRlciBz
b3VyY2UKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdU5vcm1GUyA9IFNIQURFUl9TT1VSQ0UK
KyAgICAgICAgKCAgICN2ZXJzaW9uIDMwMCBlc1xuCisgICAgICAgICAgICBwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKyAgICAgICAgICAgIHVuaWZvcm0gbWVkaXVtcCB2ZWMyIHY7CisgICAgICAg
ICAgICBsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGZyYWdDb2xvcjsKKwor
ICAgICAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB1
aW50IHUgPSBwYWNrVW5vcm0yeDE2KHYpOworICAgICAgICAgICAgICAgIHZlYzIgciA9IHVucGFj
a1Vub3JtMngxNih1KTsKKyAgICAgICAgICAgICAgICBmcmFnQ29sb3IgPSB2ZWM0KHIsIDAuMCwg
MS4wKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICAvLyBGcmFnbWVudCBT
aGFkZXIgc291cmNlCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGhhbGZGUyA9IFNIQURFUl9T
T1VSQ0UKKyAgICAgICAgKCAgICN2ZXJzaW9uIDMwMCBlc1xuCisgICAgICAgICAgICBwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKKyAgICAgICAgICAgIHVuaWZvcm0gbWVkaXVtcCB2ZWMyIHY7Cisg
ICAgICAgICAgICBsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGZyYWdDb2xv
cjsKKworICAgICAgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICB1aW50IHUgPSBwYWNrSGFsZjJ4MTYodik7CisgICAgICAgICAgICAgICAgIHZlYzIg
ciA9IHVucGFja0hhbGYyeDE2KHUpOworICAgICAgICAgICAgICAgICBmcmFnQ29sb3IgPSB2ZWM0
KHIsIDAuMCwgMS4wKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICk7CisgICAgICAgIC8vIGNs
YW5nLWZvcm1hdCBvbgorCisgICAgICAgIG1TTm9ybVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2
cywgc05vcm1GUyk7CisgICAgICAgIG1VTm9ybVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2cywg
dU5vcm1GUyk7CisgICAgICAgIG1IYWxmUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZzLCBoYWxm
RlMpOworICAgICAgICBpZiAobVNOb3JtUHJvZ3JhbSA9PSAwIHx8IG1VTm9ybVByb2dyYW0gPT0g
MCB8fCBtSGFsZlByb2dyYW0gPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgRkFJTCgpIDw8
ICJzaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLiI7CisgICAgICAgIH0KKworICAgICAgICBnbEdl
blRleHR1cmVzKDEsICZtT2Zmc2NyZWVuVGV4dHVyZTJEKTsKKyAgICAgICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCBtT2Zmc2NyZWVuVGV4dHVyZTJEKTsKKyAgICAgICAgZ2xUZXhTdG9y
YWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkczMkYsIGdldFdpbmRvd1dpZHRoKCksIGdldFdp
bmRvd0hlaWdodCgpKTsKKworICAgICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbU9mZnNjcmVl
bkZyYW1lYnVmZmVyKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIs
IG1PZmZzY3JlZW5GcmFtZWJ1ZmZlcik7CisgICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQo
R0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBtT2Zm
c2NyZWVuVGV4dHVyZTJELCAwKTsKKworICAgICAgICBnbFZpZXdwb3J0KDAsIDAsIDE2LCAxNik7
CisKKyAgICAgICAgY29uc3QgR0xmbG9hdCBjb2xvcltdID0geyAxLjBmLCAxLjBmLCAwLjBmLCAx
LjBmIH07CisgICAgICAgIGdsQ2xlYXJCdWZmZXJmdihHTF9DT0xPUiwgMCwgY29sb3IpOworICAg
IH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgZ2xEZWxl
dGVUZXh0dXJlcygxLCAmbU9mZnNjcmVlblRleHR1cmUyRCk7CisgICAgICAgIGdsRGVsZXRlRnJh
bWVidWZmZXJzKDEsICZtT2Zmc2NyZWVuRnJhbWVidWZmZXIpOworICAgICAgICBnbERlbGV0ZVBy
b2dyYW0obVNOb3JtUHJvZ3JhbSk7CisgICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtVU5vcm1Qcm9n
cmFtKTsKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1IYWxmUHJvZ3JhbSk7CisKKyAgICAgICAg
QU5HTEVUZXN0OjpUZWFyRG93bigpOworICAgIH0KKworICAgIHZvaWQgY29tcGFyZUJlZm9yZUFm
dGVyKEdMdWludCBwcm9ncmFtLCBmbG9hdCBpbnB1dDEsIGZsb2F0IGlucHV0MikKKyAgICB7Cisg
ICAgICAgIGNvbXBhcmVCZWZvcmVBZnRlcihwcm9ncmFtLCBpbnB1dDEsIGlucHV0MiwgaW5wdXQx
LCBpbnB1dDIpOworICAgIH0KKworICAgIHZvaWQgY29tcGFyZUJlZm9yZUFmdGVyKEdMdWludCBw
cm9ncmFtLCBmbG9hdCBpbnB1dDEsIGZsb2F0IGlucHV0MiwgZmxvYXQgZXhwZWN0MSwgZmxvYXQg
ZXhwZWN0MikKKyAgICB7CisgICAgICAgIEdMaW50IHZlYzJMb2NhdGlvbiA9IGdsR2V0VW5pZm9y
bUxvY2F0aW9uKHByb2dyYW0sICJ2Iik7CisKKyAgICAgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0p
OworICAgICAgICBnbFVuaWZvcm0yZih2ZWMyTG9jYXRpb24sIGlucHV0MSwgaW5wdXQyKTsKKwor
ICAgICAgICBkcmF3UXVhZChwcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgICAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgICAgICBHTGZsb2F0IHBbMl0gPSB7IDAgfTsKKyAg
ICAgICAgZ2xSZWFkUGl4ZWxzKDgsIDgsIDEsIDEsIEdMX1JHLCBHTF9GTE9BVCwgcCk7CisKKyAg
ICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgc3RhdGljIGNvbnN0IGRvdWJs
ZSBlcHNpbG9uID0gMC4wMDA1OworICAgICAgICBFWFBFQ1RfTkVBUihwWzBdLCBleHBlY3QxLCBl
cHNpbG9uKTsKKyAgICAgICAgRVhQRUNUX05FQVIocFsxXSwgZXhwZWN0MiwgZXBzaWxvbik7Cisg
ICAgfQorCisgICAgR0x1aW50IG1TTm9ybVByb2dyYW07CisgICAgR0x1aW50IG1VTm9ybVByb2dy
YW07CisgICAgR0x1aW50IG1IYWxmUHJvZ3JhbTsKKyAgICBHTHVpbnQgbU9mZnNjcmVlbkZyYW1l
YnVmZmVyOworICAgIEdMdWludCBtT2Zmc2NyZWVuVGV4dHVyZTJEOworfTsKKworLy8gVGVzdCB0
aGUgY29ycmVjdG5lc3Mgb2YgcGFja1Nub3JtMngxNiBhbmQgdW5wYWNrU25vcm0yeDE2IGZ1bmN0
aW9ucyBjYWxjdWxhdGluZyBub3JtYWwgZmxvYXRpbmcgbnVtYmVycy4KK1RFU1RfUChQYWNrVW5w
YWNrVGVzdCwgUGFja1VucGFja1Nub3JtTm9ybWFsKQoreworICAgIC8vIEV4cGVjdCB0aGUgc2hh
ZGVyIHRvIG91dHB1dCB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgaW5wdXQKKyAgICBjb21wYXJlQmVm
b3JlQWZ0ZXIobVNOb3JtUHJvZ3JhbSwgMC41ZiwgLTAuMmYpOworICAgIGNvbXBhcmVCZWZvcmVB
ZnRlcihtU05vcm1Qcm9ncmFtLCAtMC4zNWYsIDAuNzVmKTsKKyAgICBjb21wYXJlQmVmb3JlQWZ0
ZXIobVNOb3JtUHJvZ3JhbSwgMC4wMDM5MmYsIC0wLjk5MjE1Zik7CisgICAgY29tcGFyZUJlZm9y
ZUFmdGVyKG1TTm9ybVByb2dyYW0sIDEuMGYsIC0wLjAwMzkyZik7Cit9CisKKy8vIFRlc3QgdGhl
IGNvcnJlY3RuZXNzIG9mIHBhY2tTbm9ybTJ4MTYgYW5kIHVucGFja1Nub3JtMngxNiBmdW5jdGlv
bnMgY2FsY3VsYXRpbmcgbm9ybWFsIGZsb2F0aW5nCisvLyBudW1iZXJzLgorVEVTVF9QKFBhY2tV
bnBhY2tUZXN0LCBQYWNrVW5wYWNrVW5vcm1Ob3JtYWwpCit7CisgICAgLy8gRXhwZWN0IHRoZSBz
aGFkZXIgdG8gb3V0cHV0IHRoZSBzYW1lIHZhbHVlIGFzIHRoZSBpbnB1dAorICAgIGNvbXBhcmVC
ZWZvcmVBZnRlcihtVU5vcm1Qcm9ncmFtLCAwLjVmLCAwLjJmLCAwLjVmLCAwLjJmKTsKKyAgICBj
b21wYXJlQmVmb3JlQWZ0ZXIobVVOb3JtUHJvZ3JhbSwgMC4zNWYsIDAuNzVmLCAwLjM1ZiwgMC43
NWYpOworICAgIGNvbXBhcmVCZWZvcmVBZnRlcihtVU5vcm1Qcm9ncmFtLCAwLjAwMzkyZiwgMC45
OTIxNWYsIDAuMDAzOTJmLCAwLjk5MjE1Zik7CisgICAgY29tcGFyZUJlZm9yZUFmdGVyKG1VTm9y
bVByb2dyYW0sIDEuMGYsIDAuMDAzOTJmLCAxLjBmLCAwLjAwMzkyZik7Cit9CisKKy8vIFRlc3Qg
dGhlIGNvcnJlY3RuZXNzIG9mIHBhY2tIYWxmMngxNiBhbmQgdW5wYWNrSGFsZjJ4MTYgZnVuY3Rp
b25zIGNhbGN1bGF0aW5nIG5vcm1hbCBmbG9hdGluZyBudW1iZXJzLgorVEVTVF9QKFBhY2tVbnBh
Y2tUZXN0LCBQYWNrVW5wYWNrSGFsZk5vcm1hbCkKK3sKKyAgICAvLyBUT0RPKGN3YWxsZXopIGZp
Z3VyZSBvdXQgd2h5IGl0IGlzIGJyb2tlbiBvbiBJbnRlbCBvbiBNYWMKKyNpZiBkZWZpbmVkKEFO
R0xFX1BMQVRGT1JNX0FQUExFKQorICAgIGlmIChJc0ludGVsKCkgJiYgZ2V0UGxhdGZvcm1SZW5k
ZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkKKyAgICB7Cisg
ICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIG9uIE1hYy4iIDw8IHN0
ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgLy8gRXhwZWN0
IHRoZSBzaGFkZXIgdG8gb3V0cHV0IHRoZSBzYW1lIHZhbHVlIGFzIHRoZSBpbnB1dAorICAgIGNv
bXBhcmVCZWZvcmVBZnRlcihtSGFsZlByb2dyYW0sIDAuNWYsIC0wLjJmKTsKKyAgICBjb21wYXJl
QmVmb3JlQWZ0ZXIobUhhbGZQcm9ncmFtLCAtMC4zNWYsIDAuNzVmKTsKKyAgICBjb21wYXJlQmVm
b3JlQWZ0ZXIobUhhbGZQcm9ncmFtLCAwLjAwMzkyZiwgLTAuOTkyMTVmKTsKKyAgICBjb21wYXJl
QmVmb3JlQWZ0ZXIobUhhbGZQcm9ncmFtLCAxLjBmLCAtMC4wMDM5MmYpOworfQorCisvLyBUZXN0
IHRoZSBjb3JyZWN0bmVzcyBvZiBwYWNrU25vcm0yeDE2IGFuZCB1bnBhY2tTbm9ybTJ4MTYgZnVu
Y3Rpb25zIGNhbGN1bGF0aW5nIHN1Ym5vcm1hbCBmbG9hdGluZyBudW1iZXJzLgorVEVTVF9QKFBh
Y2tVbnBhY2tUZXN0LCBQYWNrVW5wYWNrU25vcm1TdWJub3JtYWwpCit7CisgICAgLy8gRXhwZWN0
IHRoZSBzaGFkZXIgdG8gb3V0cHV0IHRoZSBzYW1lIHZhbHVlIGFzIHRoZSBpbnB1dAorICAgIGNv
bXBhcmVCZWZvcmVBZnRlcihtU05vcm1Qcm9ncmFtLCAwLjAwMDAxZiwgLTAuMDAwMDFmKTsKK30K
KworLy8gVGVzdCB0aGUgY29ycmVjdG5lc3Mgb2YgcGFja1Vub3JtMngxNiBhbmQgdW5wYWNrVW5v
cm0yeDE2IGZ1bmN0aW9ucyBjYWxjdWxhdGluZyBzdWJub3JtYWwKKy8vIGZsb2F0aW5nIG51bWJl
cnMuCitURVNUX1AoUGFja1VucGFja1Rlc3QsIFBhY2tVbnBhY2tVbm9ybVN1Ym5vcm1hbCkKK3sK
KyAgICAvLyBFeHBlY3QgdGhlIHNoYWRlciB0byBvdXRwdXQgdGhlIHNhbWUgdmFsdWUgYXMgdGhl
IGlucHV0IGZvciBwb3NpdGl2ZSBudW1iZXJzIGFuZCBjbGFtcAorICAgIC8vIHRvIFswLCAxXQor
ICAgIGNvbXBhcmVCZWZvcmVBZnRlcihtVU5vcm1Qcm9ncmFtLCAwLjAwMDAxZiwgLTAuMDAwMDFm
LCAwLjAwMDAxZiwgMC4wZik7Cit9CisKKy8vIFRlc3QgdGhlIGNvcnJlY3RuZXNzIG9mIHBhY2tI
YWxmMngxNiBhbmQgdW5wYWNrSGFsZjJ4MTYgZnVuY3Rpb25zIGNhbGN1bGF0aW5nIHN1Ym5vcm1h
bCBmbG9hdGluZyBudW1iZXJzLgorVEVTVF9QKFBhY2tVbnBhY2tUZXN0LCBQYWNrVW5wYWNrSGFs
ZlN1Ym5vcm1hbCkKK3sKKyAgICAvLyBFeHBlY3QgdGhlIHNoYWRlciB0byBvdXRwdXQgdGhlIHNh
bWUgdmFsdWUgYXMgdGhlIGlucHV0CisgICAgY29tcGFyZUJlZm9yZUFmdGVyKG1IYWxmUHJvZ3Jh
bSwgMC4wMDAwMWYsIC0wLjAwMDAxZik7Cit9CisKKy8vIFRlc3QgdGhlIGNvcnJlY3RuZXNzIG9m
IHBhY2tTbm9ybTJ4MTYgYW5kIHVucGFja1Nub3JtMngxNiBmdW5jdGlvbnMgY2FsY3VsYXRpbmcg
emVybyBmbG9hdGluZyBudW1iZXJzLgorVEVTVF9QKFBhY2tVbnBhY2tUZXN0LCBQYWNrVW5wYWNr
U25vcm1aZXJvKQoreworICAgIC8vIEV4cGVjdCB0aGUgc2hhZGVyIHRvIG91dHB1dCB0aGUgc2Ft
ZSB2YWx1ZSBhcyB0aGUgaW5wdXQKKyAgICBjb21wYXJlQmVmb3JlQWZ0ZXIobVNOb3JtUHJvZ3Jh
bSwgMC4wMDAwMGYsIC0wLjAwMDAwZik7Cit9CisKKy8vIFRlc3QgdGhlIGNvcnJlY3RuZXNzIG9m
IHBhY2tVbm9ybTJ4MTYgYW5kIHVucGFja1Vub3JtMngxNiBmdW5jdGlvbnMgY2FsY3VsYXRpbmcg
emVybyBmbG9hdGluZworLy8gbnVtYmVycy4KK1RFU1RfUChQYWNrVW5wYWNrVGVzdCwgUGFja1Vu
cGFja1Vub3JtWmVybykKK3sKKyAgICBjb21wYXJlQmVmb3JlQWZ0ZXIobVVOb3JtUHJvZ3JhbSwg
MC4wMDAwMGYsIC0wLjAwMDAwZiwgMC4wMDAwMGYsIDAuMDAwMDBmKTsKK30KKworLy8gVGVzdCB0
aGUgY29ycmVjdG5lc3Mgb2YgcGFja0hhbGYyeDE2IGFuZCB1bnBhY2tIYWxmMngxNiBmdW5jdGlv
bnMgY2FsY3VsYXRpbmcgemVybyBmbG9hdGluZyBudW1iZXJzLgorVEVTVF9QKFBhY2tVbnBhY2tU
ZXN0LCBQYWNrVW5wYWNrSGFsZlplcm8pCit7CisgICAgLy8gRXhwZWN0IHRoZSBzaGFkZXIgdG8g
b3V0cHV0IHRoZSBzYW1lIHZhbHVlIGFzIHRoZSBpbnB1dAorICAgIGNvbXBhcmVCZWZvcmVBZnRl
cihtSGFsZlByb2dyYW0sIDAuMDAwMDBmLCAtMC4wMDAwMGYpOworfQorCisvLyBUZXN0IHRoZSBj
b3JyZWN0bmVzcyBvZiBwYWNrVW5vcm0yeDE2IGFuZCB1bnBhY2tVbm9ybTJ4MTYgZnVuY3Rpb25z
IGNhbGN1bGF0aW5nIG92ZXJmbG93IGZsb2F0aW5nCisvLyBudW1iZXJzLgorVEVTVF9QKFBhY2tV
bnBhY2tUZXN0LCBQYWNrVW5wYWNrVW5vcm1PdmVyZmxvdykKK3sKKyAgICAvLyBFeHBlY3QgdGhl
IHNoYWRlciB0byBjbGFtcCB0aGUgaW5wdXQgdG8gWzAsIDFdCisgICAgY29tcGFyZUJlZm9yZUFm
dGVyKG1VTm9ybVByb2dyYW0sIDY3MDAwLjBmLCAtNjcwMDAuMGYsIDEuMGYsIDAuMGYpOworfQor
CisvLyBUZXN0IHRoZSBjb3JyZWN0bmVzcyBvZiBwYWNrU25vcm0yeDE2IGFuZCB1bnBhY2tTbm9y
bTJ4MTYgZnVuY3Rpb25zIGNhbGN1bGF0aW5nIG92ZXJmbG93IGZsb2F0aW5nIG51bWJlcnMuCitU
RVNUX1AoUGFja1VucGFja1Rlc3QsIFBhY2tVbnBhY2tTbm9ybU92ZXJmbG93KQoreworICAgIC8v
IEV4cGVjdCB0aGUgc2hhZGVyIHRvIGNsYW1wIHRoZSBpbnB1dCB0byBbLTEsIDFdCisgICAgY29t
cGFyZUJlZm9yZUFmdGVyKG1TTm9ybVByb2dyYW0sIDY3MDAwLjBmLCAtNjcwMDAuMGYsIDEuMGYs
IC0xLjBmKTsKK30KKworLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25z
IChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlIHRl
c3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoUGFja1Vu
cGFja1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woMywgMyksCisgICAg
ICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woNCwgMCksCisgICAgICAgICAgICAgICAgICAg
ICAgIEVTM19PUEVOR0woNCwgMSksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0wo
NCwgMiksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woNCwgMyksCisgICAgICAg
ICAgICAgICAgICAgICAgIEVTM19PUEVOR0woNCwgNCksCisgICAgICAgICAgICAgICAgICAgICAg
IEVTM19PUEVOR0woNCwgNSksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygp
KTsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Q
YXRoUmVuZGVyaW5nVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1BhdGhSZW5kZXJpbmdUZXN0LmNwcAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvUGF0aFJlbmRl
cmluZ1Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTk4NCBAQAorLy8KKy8vIENv
cHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
Ky8vIENIUk9NSVVNUGF0aFJlbmRlcmluZ1Rlc3QKKy8vICAgVGVzdCBDSFJPTUlVTSBzdWJzZXQg
b2YgTlZfcGF0aF9yZW5kZXJpbmcKKy8vICAgVGhpcyBleHRlbnNpb24gYWxsb3dzIHRvIHJlbmRl
ciBnZW9tZXRyaWMgcGF0aHMgYXMgZmlyc3QgY2xhc3MgR0wgb2JqZWN0cy4KKworI2luY2x1ZGUg
InRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisjaW5jbHVkZSAic2hhZGVyX3V0aWxzLmgiCisKKyNp
bmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorCisjaW5jbHVkZSA8Y21hdGg+CisjaW5jbHVk
ZSA8Y3N0cmluZz4KKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPGZzdHJlYW0+CisKK3Vz
aW5nIG5hbWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNlCit7CisKK2Jvb2wgQ2hlY2tQaXhlbHMo
R0xpbnQgeCwKKyAgICAgICAgICAgICAgICAgR0xpbnQgeSwKKyAgICAgICAgICAgICAgICAgR0xz
aXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAg
ICAgICAgIEdMaW50IHRvbGVyYW5jZSwKKyAgICAgICAgICAgICAgICAgY29uc3QgYW5nbGU6OkdM
Q29sb3IgJmNvbG9yKQoreworICAgIGZvciAoR0xpbnQgeXkgPSAwOyB5eSA8IGhlaWdodDsgKyt5
eSkKKyAgICB7CisgICAgICAgIGZvciAoR0xpbnQgeHggPSAwOyB4eCA8IHdpZHRoOyArK3h4KQor
ICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBhdXRvIHB4ID0geCArIHh4OworICAgICAgICAg
ICAgY29uc3QgYXV0byBweSA9IHkgKyB5eTsKKyAgICAgICAgICAgIEVYUEVDVF9QSVhFTF9ORUFS
KHB4LCBweSwgY29sb3IuUiwgY29sb3IuRywgY29sb3IuQiwgY29sb3IuQSwgdG9sZXJhbmNlKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEV4cGVjdEVx
dWFsTWF0cml4KGNvbnN0IEdMZmxvYXQgKmV4cGVjdGVkLCBjb25zdCBHTGZsb2F0ICphY3R1YWwp
Cit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxNjsgKytpKQorICAgIHsKKyAgICAgICAg
RVhQRUNUX0VRKGV4cGVjdGVkW2ldLCBhY3R1YWxbaV0pOworICAgIH0KK30KKwordm9pZCBFeHBl
Y3RFcXVhbE1hdHJpeChjb25zdCBHTGZsb2F0ICpleHBlY3RlZCwgY29uc3QgR0xpbnQgKmFjdHVh
bCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDE2OyArK2kpCisgICAgeworICAgICAg
ICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8R0xpbnQ+KHN0ZDo6cm91bmRmKGV4cGVjdGVkW2ldKSks
IGFjdHVhbFtpXSk7CisgICAgfQorfQorCitjb25zdCBpbnQga1Jlc29sdXRpb24gPSAzMDA7CisK
K2NsYXNzIENIUk9NSVVNUGF0aFJlbmRlcmluZ1Rlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7Cisg
IHByb3RlY3RlZDoKKyAgICBDSFJPTUlVTVBhdGhSZW5kZXJpbmdUZXN0KCkKKyAgICB7CisgICAg
ICAgIHNldFdpbmRvd1dpZHRoKGtSZXNvbHV0aW9uKTsKKyAgICAgICAgc2V0V2luZG93SGVpZ2h0
KGtSZXNvbHV0aW9uKTsKKyAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKKyAgICAgICAgc2V0
Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKKyAgICAg
ICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAgICAgICBzZXRDb25maWdEZXB0aEJpdHMoOCk7
CisgICAgICAgIHNldENvbmZpZ1N0ZW5jaWxCaXRzKDgpOworICAgIH0KKworICAgIGJvb2wgaXNB
cHBsaWNhYmxlKCkgY29uc3QgeyByZXR1cm4gZXh0ZW5zaW9uRW5hYmxlZCgiR0xfQ0hST01JVU1f
cGF0aF9yZW5kZXJpbmciKTsgfQorCisgICAgdm9pZCB0cnlBbGxEcmF3RnVuY3Rpb25zKEdMdWlu
dCBwYXRoLCBHTGVudW0gZXJyKQorICAgIHsKKyAgICAgICAgZ2xTdGVuY2lsRmlsbFBhdGhDSFJP
TUlVTShwYXRoLCBHTF9DT1VOVF9VUF9DSFJPTUlVTSwgMHg3Rik7CisgICAgICAgIEVYUEVDVF9H
TF9FUlJPUihlcnIpOworCisgICAgICAgIGdsU3RlbmNpbEZpbGxQYXRoQ0hST01JVU0ocGF0aCwg
R0xfQ09VTlRfRE9XTl9DSFJPTUlVTSwgMHg3Rik7CisgICAgICAgIEVYUEVDVF9HTF9FUlJPUihl
cnIpOworCisgICAgICAgIGdsU3RlbmNpbFN0cm9rZVBhdGhDSFJPTUlVTShwYXRoLCAweDgwLCAw
eDgwKTsKKyAgICAgICAgRVhQRUNUX0dMX0VSUk9SKGVycik7CisKKyAgICAgICAgZ2xDb3ZlckZp
bGxQYXRoQ0hST01JVU0ocGF0aCwgR0xfQk9VTkRJTkdfQk9YX0NIUk9NSVVNKTsKKyAgICAgICAg
RVhQRUNUX0dMX0VSUk9SKGVycik7CisKKyAgICAgICAgZ2xDb3ZlclN0cm9rZVBhdGhDSFJPTUlV
TShwYXRoLCBHTF9CT1VORElOR19CT1hfQ0hST01JVU0pOworICAgICAgICBFWFBFQ1RfR0xfRVJS
T1IoZXJyKTsKKworICAgICAgICBnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoQ0hST01JVU0o
cGF0aCwgMHg4MCwgMHg4MCwgR0xfQk9VTkRJTkdfQk9YX0NIUk9NSVVNKTsKKyAgICAgICAgRVhQ
RUNUX0dMX0VSUk9SKGVycik7CisKKyAgICAgICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhD
SFJPTUlVTShwYXRoLCBHTF9DT1VOVF9VUF9DSFJPTUlVTSwgMHg3RiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9CT1VORElOR19CT1hfQ0hST01JVU0pOwor
ICAgICAgICBFWFBFQ1RfR0xfRVJST1IoZXJyKTsKKyAgICB9Cit9OworCisvLyBUZXN0IHNldHRp
bmcgYW5kIGdldHRpbmcgb2YgcGF0aCByZW5kZXJpbmcgbWF0cmljZXMuCitURVNUX1AoQ0hST01J
VU1QYXRoUmVuZGVyaW5nVGVzdCwgVGVzdE1hdHJpeCkKK3sKKyAgICBpZiAoIWlzQXBwbGljYWJs
ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzdGF0aWMgY29uc3QgR0xmbG9hdCBrSWRlbnRp
dHlNYXRyaXhbMTZdID0gezEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYsIDAuMGYs
IDAuMGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LjBmLCAwLjBmLCAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLCAwLjBmLCAxLjBmfTsKKworICAgIHN0
YXRpYyBjb25zdCBHTGZsb2F0IGtTZXFNYXRyaXhbMTZdID0gezAuNWYsICAgLTAuNWYsICAtMC4x
ZiwgIC0wLjhmLCA0LjRmLCAgIDUuNWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNi42ZiwgICA3LjdmLCAgIDguOGYsICAgOS45ZiwgIDEwLjExZiwgMTEuMjJm
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjMzZiwgMTMu
NDRmLCAxNC41NWYsIDE1LjY2Zn07CisKKyAgICBzdGF0aWMgY29uc3QgR0xlbnVtIGtNYXRyaXhN
b2Rlc1tdID0ge0dMX1BBVEhfTU9ERUxWSUVXX0NIUk9NSVVNLCBHTF9QQVRIX1BST0pFQ1RJT05f
Q0hST01JVU19OworCisgICAgc3RhdGljIGNvbnN0IEdMZW51bSBrR2V0TWF0cml4TW9kZXNbXSA9
IHtHTF9QQVRIX01PREVMVklFV19NQVRSSVhfQ0hST01JVU0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9QQVRIX1BST0pFQ1RJT05fTUFUUklYX0NIUk9N
SVVNfTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMjsgKytpKQorICAgIHsKKyAgICAg
ICAgR0xmbG9hdCBtZlsxNl07CisgICAgICAgIEdMaW50IG1pWzE2XTsKKyAgICAgICAgc3RkOjpt
ZW1zZXQobWYsIDAsIHNpemVvZihtZikpOworICAgICAgICBzdGQ6Om1lbXNldChtaSwgMCwgc2l6
ZW9mKG1pKSk7CisgICAgICAgIGdsR2V0RmxvYXR2KGtHZXRNYXRyaXhNb2Rlc1tpXSwgbWYpOwor
ICAgICAgICBnbEdldEludGVnZXJ2KGtHZXRNYXRyaXhNb2Rlc1tpXSwgbWkpOworICAgICAgICBF
eHBlY3RFcXVhbE1hdHJpeChrSWRlbnRpdHlNYXRyaXgsIG1mKTsKKyAgICAgICAgRXhwZWN0RXF1
YWxNYXRyaXgoa0lkZW50aXR5TWF0cml4LCBtaSk7CisKKyAgICAgICAgZ2xNYXRyaXhMb2FkZkNI
Uk9NSVVNKGtNYXRyaXhNb2Rlc1tpXSwga1NlcU1hdHJpeCk7CisgICAgICAgIHN0ZDo6bWVtc2V0
KG1mLCAwLCBzaXplb2YobWYpKTsKKyAgICAgICAgc3RkOjptZW1zZXQobWksIDAsIHNpemVvZiht
aSkpOworICAgICAgICBnbEdldEZsb2F0dihrR2V0TWF0cml4TW9kZXNbaV0sIG1mKTsKKyAgICAg
ICAgZ2xHZXRJbnRlZ2VydihrR2V0TWF0cml4TW9kZXNbaV0sIG1pKTsKKyAgICAgICAgRXhwZWN0
RXF1YWxNYXRyaXgoa1NlcU1hdHJpeCwgbWYpOworICAgICAgICBFeHBlY3RFcXVhbE1hdHJpeChr
U2VxTWF0cml4LCBtaSk7CisKKyAgICAgICAgZ2xNYXRyaXhMb2FkSWRlbnRpdHlDSFJPTUlVTShr
TWF0cml4TW9kZXNbaV0pOworICAgICAgICBzdGQ6Om1lbXNldChtZiwgMCwgc2l6ZW9mKG1mKSk7
CisgICAgICAgIHN0ZDo6bWVtc2V0KG1pLCAwLCBzaXplb2YobWkpKTsKKyAgICAgICAgZ2xHZXRG
bG9hdHYoa0dldE1hdHJpeE1vZGVzW2ldLCBtZik7CisgICAgICAgIGdsR2V0SW50ZWdlcnYoa0dl
dE1hdHJpeE1vZGVzW2ldLCBtaSk7CisgICAgICAgIEV4cGVjdEVxdWFsTWF0cml4KGtJZGVudGl0
eU1hdHJpeCwgbWYpOworICAgICAgICBFeHBlY3RFcXVhbE1hdHJpeChrSWRlbnRpdHlNYXRyaXgs
IG1pKTsKKworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICB9Cit9CisKKy8vIFRl
c3QgdGhhdCB0cnlpbmcgdG8gc2V0IGluY29ycmVjdCBtYXRyaXggdGFyZ2V0IHJlc3VsdHMKKy8v
IGluIGEgR0wgZXJyb3IuCitURVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5nVGVzdCwgVGVzdE1h
dHJpeEVycm9ycykKK3sKKyAgICBpZiAoIWlzQXBwbGljYWJsZSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBHTGZsb2F0IG1mWzE2XTsKKyAgICBzdGQ6Om1lbXNldChtZiwgMCwgc2l6ZW9mKG1m
KSk7CisKKyAgICBnbE1hdHJpeExvYWRmQ0hST01JVU0oR0xfUEFUSF9NT0RFTFZJRVdfQ0hST01J
VU0sIG1mKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIGdsTWF0cml4TG9hZElk
ZW50aXR5Q0hST01JVU0oR0xfUEFUSF9QUk9KRUNUSU9OX0NIUk9NSVVNKTsKKyAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKKworICAgIC8vIFRlc3QgdGhhdCBpbnZhbGlkIG1hdHJpeCB0YXJnZXRz
IGZhaWwuCisgICAgZ2xNYXRyaXhMb2FkZkNIUk9NSVVNKEdMX1BBVEhfTU9ERUxWSUVXX0NIUk9N
SVVNIC0gMSwgbWYpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOworCisg
ICAgLy8gVGVzdCB0aGF0IGludmFsaWQgbWF0cml4IHRhcmdldHMgZmFpbC4KKyAgICBnbE1hdHJp
eExvYWRJZGVudGl0eUNIUk9NSVVNKEdMX1BBVEhfUFJPSkVDVElPTl9DSFJPTUlVTSArIDEpOwor
ICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOworfQorCisvLyBUZXN0IGJhc2lj
IHBhdGggY3JlYXRlIGFuZCBkZWxldGUuCitURVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5nVGVz
dCwgVGVzdEdlbkRlbGV0ZSkKK3sKKyAgICBpZiAoIWlzQXBwbGljYWJsZSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBUaGlzIGlzIHVuc3BlY2lmaWVkIGluIE5WX3BhdGhfcmVuZGVyaW5n
LgorICAgIEVYUEVDVF9FUSgwdSwgZ2xHZW5QYXRoc0NIUk9NSVVNKDApKTsKKyAgICBFWFBFQ1Rf
R0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7CisKKyAgICBHTHVpbnQgcGF0aCA9IGdsR2VuUGF0
aHNDSFJPTUlVTSgxKTsKKyAgICBFWFBFQ1RfTkUoMHUsIHBhdGgpOworICAgIGdsRGVsZXRlUGF0
aHNDSFJPTUlVTShwYXRoLCAxKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIEdM
dWludCBmaXJzdF9wYXRoID0gZ2xHZW5QYXRoc0NIUk9NSVVNKDUpOworICAgIEVYUEVDVF9ORSgw
dSwgZmlyc3RfcGF0aCk7CisgICAgZ2xEZWxldGVQYXRoc0NIUk9NSVVNKGZpcnN0X3BhdGgsIDUp
OworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gVGVzdCBkZWxldGluZyBwYXRo
cyB0aGF0IGFyZSBub3QgYWN0dWFsbHkgYWxsb2NhdGVkOgorICAgIC8vICJ1bnVzZWQgbmFtZXMg
aW4gL3BhdGhzLyBhcmUgc2lsZW50bHkgaWdub3JlZCIuCisgICAgZmlyc3RfcGF0aCA9IGdsR2Vu
UGF0aHNDSFJPTUlVTSg1KTsKKyAgICBFWFBFQ1RfTkUoMHUsIGZpcnN0X3BhdGgpOworICAgIGds
RGVsZXRlUGF0aHNDSFJPTUlVTShmaXJzdF9wYXRoLCA2KTsKKyAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKKworICAgIEdMc2l6ZWkgYmlnX3JhbmdlID0gMHhmZmZmOworICAgIGZpcnN0X3BhdGgg
PSBnbEdlblBhdGhzQ0hST01JVU0oYmlnX3JhbmdlKTsKKyAgICBFWFBFQ1RfTkUoMHUsIGZpcnN0
X3BhdGgpOworICAgIGdsRGVsZXRlUGF0aHNDSFJPTUlVTShmaXJzdF9wYXRoLCBiaWdfcmFuZ2Up
OworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gVGVzdCBnbElzUGF0aENIUk9N
SVVNKCkuIEEgcGF0aCBvYmplY3QgaXMgbm90IGNvbnNpZGVyZWQgYSBwYXRoIHVudGlsbAorICAg
IC8vIGl0IGhhcyBhY3R1YWxseSBiZWVuIHNwZWNpZmllZCB3aXRoIGEgcGF0aCBkYXRhLgorCisg
ICAgcGF0aCA9IGdsR2VuUGF0aHNDSFJPTUlVTSgxKTsKKyAgICBBU1NFUlRfVFJVRShnbElzUGF0
aENIUk9NSVVNKHBhdGgpID09IEdMX0ZBTFNFKTsKKworICAgIC8vIHNwZWNpZnkgdGhlIGRhdGEu
CisgICAgR0x1Ynl0ZSBjb21tYW5kc1tdID0ge0dMX01PVkVfVE9fQ0hST01JVU0sIEdMX0NMT1NF
X1BBVEhfQ0hST01JVU19OworICAgIEdMZmxvYXQgY29vcmRzW10gPSB7NTAuMGYsIDUwLjBmfTsK
KyAgICBnbFBhdGhDb21tYW5kc0NIUk9NSVVNKHBhdGgsIDIsIGNvbW1hbmRzLCAyLCBHTF9GTE9B
VCwgY29vcmRzKTsKKyAgICBBU1NFUlRfVFJVRShnbElzUGF0aENIUk9NSVVNKHBhdGgpID09IEdM
X1RSVUUpOworICAgIGdsRGVsZXRlUGF0aHNDSFJPTUlVTShwYXRoLCAxKTsKKyAgICBBU1NFUlRf
VFJVRShnbElzUGF0aENIUk9NSVVNKHBhdGgpID09IEdMX0ZBTFNFKTsKK30KKworLy8gVGVzdCBp
bmNvcnJlY3QgcGF0aCBjcmVhdGlvbiBhbmQgZGVsZXRpb24gYW5kIGV4cGVjdCBHTCBlcnJvcnMu
CitURVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5nVGVzdCwgVGVzdEdlbkRlbGV0ZUVycm9ycykK
K3sKKyAgICBpZiAoIWlzQXBwbGljYWJsZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBH
ZW5QYXRocyAvIERlbGV0ZVBhdGhzIHRlc3RzLgorICAgIC8vIHN0ZDo6bnVtZXJpY19saW1pdHM8
R0x1aW50Pjo6bWF4KCkgaXMgd3JvbmcgZm9yIEdMc2l6ZWkuCisgICAgR0x1aW50IGZpcnN0X3Bh
dGggPSBnbEdlblBhdGhzQ0hST01JVU0oc3RkOjpudW1lcmljX2xpbWl0czxHTHVpbnQ+OjptYXgo
KSk7CisgICAgRVhQRUNUX0VRKGZpcnN0X3BhdGgsIDB1KTsKKyAgICBFWFBFQ1RfR0xfRVJST1Io
R0xfSU5WQUxJRF9WQUxVRSk7CisKKyAgICBmaXJzdF9wYXRoID0gZ2xHZW5QYXRoc0NIUk9NSVVN
KC0xKTsKKyAgICBFWFBFQ1RfRVEoMHUsIGZpcnN0X3BhdGgpOworICAgIEVYUEVDVF9HTF9FUlJP
UihHTF9JTlZBTElEX1ZBTFVFKTsKKworICAgIGdsRGVsZXRlUGF0aHNDSFJPTUlVTSgxLCAtNSk7
CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOworCisgICAgZmlyc3RfcGF0
aCA9IGdsR2VuUGF0aHNDSFJPTUlVTSgtMSk7CisgICAgRVhQRUNUX0VRKDB1LCBmaXJzdF9wYXRo
KTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Cit9CisKKy8vIFRlc3Qg
c2V0dGluZyBhbmQgZ2V0dGluZyBwYXRoIHBhcmFtZXRlcnMuCitURVNUX1AoQ0hST01JVU1QYXRo
UmVuZGVyaW5nVGVzdCwgVGVzdFBhdGhQYXJhbWV0ZXIpCit7CisgICAgaWYgKCFpc0FwcGxpY2Fi
bGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR0x1aW50IHBhdGggPSBnbEdlblBhdGhzQ0hS
T01JVU0oMSk7CisKKyAgICAvLyBzcGVjaWZ5IHRoZSBkYXRhLgorICAgIEdMdWJ5dGUgY29tbWFu
ZHNbXSA9IHtHTF9NT1ZFX1RPX0NIUk9NSVVNLCBHTF9DTE9TRV9QQVRIX0NIUk9NSVVNfTsKKyAg
ICBHTGZsb2F0IGNvb3Jkc1tdID0gezUwLjBmLCA1MC4wZn07CisgICAgZ2xQYXRoQ29tbWFuZHND
SFJPTUlVTShwYXRoLCAyLCBjb21tYW5kcywgMiwgR0xfRkxPQVQsIGNvb3Jkcyk7CisgICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7CisgICAgRVhQRUNUX1RSVUUoZ2xJc1BhdGhDSFJPTUlVTShwYXRo
KSA9PSBHTF9UUlVFKTsKKworICAgIHN0YXRpYyBjb25zdCBHTGVudW0ga0VuZENhcHNbXSA9IHtH
TF9GTEFUX0NIUk9NSVVNLCBHTF9TUVVBUkVfQ0hST01JVU0sIEdMX1JPVU5EX0NIUk9NSVVNfTsK
KyAgICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgMzsgKytpKQorICAgIHsKKyAgICAgICAg
R0xpbnQgeDsKKyAgICAgICAgZ2xQYXRoUGFyYW1ldGVyaUNIUk9NSVVNKHBhdGgsIEdMX1BBVEhf
RU5EX0NBUFNfQ0hST01JVU0sIHN0YXRpY19jYXN0PEdMZW51bT4oa0VuZENhcHNbaV0pKTsKKyAg
ICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgICAgIGdsR2V0UGF0aFBhcmFtZXRlcml2
Q0hST01JVU0ocGF0aCwgR0xfUEFUSF9FTkRfQ0FQU19DSFJPTUlVTSwgJngpOworICAgICAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICAgICAgRVhQRUNUX0VRKGtFbmRDYXBzW2ldLCBzdGF0
aWNfY2FzdDxHTGVudW0+KHgpKTsKKworICAgICAgICBHTGZsb2F0IGY7CisgICAgICAgIGdsUGF0
aFBhcmFtZXRlcmZDSFJPTUlVTShwYXRoLCBHTF9QQVRIX0VORF9DQVBTX0NIUk9NSVVNLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0xmbG9hdD4oa0VuZENh
cHNbKGkgKyAxKSAlIDNdKSk7CisgICAgICAgIGdsR2V0UGF0aFBhcmFtZXRlcmZ2Q0hST01JVU0o
cGF0aCwgR0xfUEFUSF9FTkRfQ0FQU19DSFJPTUlVTSwgJmYpOworICAgICAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKKyAgICAgICAgRVhQRUNUX0VRKGtFbmRDYXBzWyhpICsgMSkgJSAzXSwgc3Rh
dGljX2Nhc3Q8R0xlbnVtPihmKSk7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IEdMZW51bSBr
Sm9pblN0eWxlc1tdID0ge0dMX01JVEVSX1JFVkVSVF9DSFJPTUlVTSwgR0xfQkVWRUxfQ0hST01J
VU0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JPVU5EX0NI
Uk9NSVVNfTsKKyAgICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgMzsgKytpKQorICAgIHsK
KyAgICAgICAgR0xpbnQgeDsKKyAgICAgICAgZ2xQYXRoUGFyYW1ldGVyaUNIUk9NSVVNKHBhdGgs
IEdMX1BBVEhfSk9JTl9TVFlMRV9DSFJPTUlVTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PEdMZW51bT4oa0pvaW5TdHlsZXNbaV0pKTsKKyAgICAgICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7CisgICAgICAgIGdsR2V0UGF0aFBhcmFtZXRlcml2Q0hST01JVU0o
cGF0aCwgR0xfUEFUSF9KT0lOX1NUWUxFX0NIUk9NSVVNLCAmeCk7CisgICAgICAgIEFTU0VSVF9H
TF9OT19FUlJPUigpOworICAgICAgICBFWFBFQ1RfRVEoa0pvaW5TdHlsZXNbaV0sIHN0YXRpY19j
YXN0PEdMZW51bT4oeCkpOworCisgICAgICAgIEdMZmxvYXQgZjsKKyAgICAgICAgZ2xQYXRoUGFy
YW1ldGVyZkNIUk9NSVVNKHBhdGgsIEdMX1BBVEhfSk9JTl9TVFlMRV9DSFJPTUlVTSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMZmxvYXQ+KGtKb2luU3R5
bGVzWyhpICsgMSkgJSAzXSkpOworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICAg
ICAgZ2xHZXRQYXRoUGFyYW1ldGVyZnZDSFJPTUlVTShwYXRoLCBHTF9QQVRIX0pPSU5fU1RZTEVf
Q0hST01JVU0sICZmKTsKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgICAgIEVY
UEVDVF9FUShrSm9pblN0eWxlc1soaSArIDEpICUgM10sIHN0YXRpY19jYXN0PEdMZW51bT4oZikp
OworICAgIH0KKworICAgIHsKKyAgICAgICAgZ2xQYXRoUGFyYW1ldGVyZkNIUk9NSVVNKHBhdGgs
IEdMX1BBVEhfU1RST0tFX1dJRFRIX0NIUk9NSVVNLCA1LjBmKTsKKyAgICAgICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7CisKKyAgICAgICAgR0xmbG9hdCBmOworICAgICAgICBnbEdldFBhdGhQYXJh
bWV0ZXJmdkNIUk9NSVVNKHBhdGgsIEdMX1BBVEhfU1RST0tFX1dJRFRIX0NIUk9NSVVNLCAmZik7
CisgICAgICAgIEVYUEVDVF9FUSg1LjBmLCBmKTsKKyAgICB9CisKKyAgICBnbERlbGV0ZVBhdGhz
Q0hST01JVU0ocGF0aCwgMSk7Cit9CisKKy8vIFRlc3QgdGhhdCBzZXR0aW5nIGluY29ycmVjdCBw
YXRoIHBhcmFtZXRlciBnZW5lcmF0ZXMgR0wgZXJyb3IuCitURVNUX1AoQ0hST01JVU1QYXRoUmVu
ZGVyaW5nVGVzdCwgVGVzdFBhdGhQYXJhbWV0ZXJFcnJvcnMpCit7CisgICAgaWYgKCFpc0FwcGxp
Y2FibGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR0x1aW50IHBhdGggPSBnbEdlblBhdGhz
Q0hST01JVU0oMSk7CisKKyAgICAvLyBQYXRoUGFyYW1ldGVyKjogV3JvbmcgdmFsdWUgZm9yIHRo
ZSBwbmFtZSBzaG91bGQgZmFpbC4KKyAgICBnbFBhdGhQYXJhbWV0ZXJpQ0hST01JVU0ocGF0aCwg
R0xfUEFUSF9KT0lOX1NUWUxFX0NIUk9NSVVNLCBHTF9GTEFUX0NIUk9NSVVNKTsKKyAgICBFWFBF
Q1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKKworICAgIGdsUGF0aFBhcmFtZXRlcmZDSFJP
TUlVTShwYXRoLCBHTF9QQVRIX0VORF9DQVBTX0NIUk9NSVVNLCBHTF9NSVRFUl9SRVZFUlRfQ0hS
T01JVU0pOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOworCisgICAgLy8g
UGF0aFBhcmFtZXRlcio6IFdyb25nIGZsb2F0aW5nLXBvaW50IHZhbHVlIHNob3VsZCBmYWlsLgor
ICAgIGdsUGF0aFBhcmFtZXRlcmZDSFJPTUlVTShwYXRoLCBHTF9QQVRIX1NUUk9LRV9XSURUSF9D
SFJPTUlVTSwgLTAuMWYpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsK
KworICAgIC8vIFBhdGhQYXJhbWV0ZXIqOiBXcm9uZyBwbmFtZSBzaG91bGQgZmFpbC4KKyAgICBn
bFBhdGhQYXJhbWV0ZXJpQ0hST01JVU0ocGF0aCwgR0xfUEFUSF9TVFJPS0VfV0lEVEhfQ0hST01J
VU0gLSAxLCA1KTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKKworICAg
IGdsRGVsZXRlUGF0aHNDSFJPTUlVTShwYXRoLCAxKTsKK30KKworLy8gVGVzdCBleHBlY3RlZCBw
YXRoIG9iamVjdCBzdGF0ZS4KK1RFU1RfUChDSFJPTUlVTVBhdGhSZW5kZXJpbmdUZXN0LCBUZXN0
UGF0aE9iamVjdFN0YXRlKQoreworICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGdsVmlld3BvcnQoMCwgMCwga1Jlc29sdXRpb24sIGtSZXNvbHV0aW9uKTsK
KyAgICBnbENsZWFyQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgMC4wZik7CisgICAgZ2xTdGVuY2ls
TWFzaygweGZmZmZmZmZmKTsKKyAgICBnbENsZWFyU3RlbmNpbCgwKTsKKyAgICBnbENsZWFyKEdM
X0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOworICAgIGdsUGF0aFN0
ZW5jaWxGdW5jQ0hST01JVU0oR0xfQUxXQVlTLCAwLCAweEZGKTsKKyAgICBnbFN0ZW5jaWxPcChH
TF9LRUVQLCBHTF9LRUVQLCBHTF9aRVJPKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKwor
ICAgIC8vIFRlc3QgdGhhdCB0cnlpbmcgdG8gZHJhdyBub24tZXhpc3RpbmcgcGF0aHMgZG9lcyBu
b3QgcHJvZHVjZSBlcnJvcnMgb3IgcmVzdWx0cy4KKyAgICBHTHVpbnQgbm9uX2V4aXN0aW5nX3Bh
dGhzW10gPSB7MCwgNTUsIDc0NzQ0fTsKKyAgICBmb3IgKGF1dG8gJnAgOiBub25fZXhpc3Rpbmdf
cGF0aHMpCisgICAgeworICAgICAgICBFWFBFQ1RfVFJVRShnbElzUGF0aENIUk9NSVVNKHApID09
IEdMX0ZBTFNFKTsKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgICAgIHRyeUFs
bERyYXdGdW5jdGlvbnMocCwgR0xfTk9fRVJST1IpOworICAgIH0KKworICAgIC8vIFBhdGggbmFt
ZSBtYXJrZWQgYXMgdXNlZCBidXQgd2l0aG91dCBwYXRoIG9iamVjdCBzdGF0ZSBjYXVzZXMKKyAg
ICAvLyBhIEdMIGVycm9yIHVwb24gYW55IGRyYXcgY29tbWFuZC4KKyAgICBHTHVpbnQgcGF0aCA9
IGdsR2VuUGF0aHNDSFJPTUlVTSgxKTsKKyAgICBFWFBFQ1RfVFJVRShnbElzUGF0aENIUk9NSVVN
KHBhdGgpID09IEdMX0ZBTFNFKTsKKyAgICB0cnlBbGxEcmF3RnVuY3Rpb25zKHBhdGgsIEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKKyAgICBnbERlbGV0ZVBhdGhzQ0hST01JVU0ocGF0aCwgMSk7CisK
KyAgICAvLyBEb2N1bWVudCBhIGJpdCBvZiBhbiBpbmNvbnNpc3RlbmN5OiBwYXRoIG5hbWUgbWFy
a2VkIGFzIHVzZWQgYnV0IHdpdGhvdXQKKyAgICAvLyBwYXRoIG9iamVjdCBzdGF0ZSBjYXVzZXMg
YSBHTCBlcnJvciB1cG9uIGFueSBkcmF3IGNvbW1hbmQgKHRlc3RlZCBhYm92ZSkuCisgICAgLy8g
UGF0aCBuYW1lIHRoYXQgaGFkIHBhdGggb2JqZWN0IHN0YXRlLCBidXQgdGhlbiB3YXMgImNsZWFy
ZWQiLCBzdGlsbCBoYXMgYQorICAgIC8vIHBhdGggb2JqZWN0IHN0YXRlLCBldmVuIHRob3VnaCB0
aGUgc3RhdGUgaXMgZW1wdHkuCisgICAgcGF0aCA9IGdsR2VuUGF0aHNDSFJPTUlVTSgxKTsKKyAg
ICBFWFBFQ1RfVFJVRShnbElzUGF0aENIUk9NSVVNKHBhdGgpID09IEdMX0ZBTFNFKTsKKworICAg
IEdMdWJ5dGUgY29tbWFuZHNbXSA9IHtHTF9NT1ZFX1RPX0NIUk9NSVVNLCBHTF9DTE9TRV9QQVRI
X0NIUk9NSVVNfTsKKyAgICBHTGZsb2F0IGNvb3Jkc1tdID0gezUwLjBmLCA1MC4wZn07CisgICAg
Z2xQYXRoQ29tbWFuZHNDSFJPTUlVTShwYXRoLCAyLCBjb21tYW5kcywgMiwgR0xfRkxPQVQsIGNv
b3Jkcyk7CisgICAgRVhQRUNUX1RSVUUoZ2xJc1BhdGhDSFJPTUlVTShwYXRoKSA9PSBHTF9UUlVF
KTsKKworICAgIGdsUGF0aENvbW1hbmRzQ0hST01JVU0ocGF0aCwgMCwgTlVMTCwgMCwgR0xfRkxP
QVQsIE5VTEwpOworICAgIEVYUEVDVF9UUlVFKGdsSXNQYXRoQ0hST01JVU0ocGF0aCkgPT0gR0xf
VFJVRSk7ICAvLyBUaGUgc3VycHJpc2UuCisKKyAgICB0cnlBbGxEcmF3RnVuY3Rpb25zKHBhdGgs
IEdMX05PX0VSUk9SKTsKKyAgICBnbERlbGV0ZVBhdGhzQ0hST01JVU0ocGF0aCwgMSk7CisKKyAg
ICAvLyBNYWtlIHN1cmUgbm90aGluZyBnb3QgZHJhd24gYnkgdGhlIGRyYXdpbmcgY29tbWFuZHMg
dGhhdCBzaG91bGQgbm90IHByb2R1Y2UKKyAgICAvLyBhbnl0aGluZy4KKyAgICBjb25zdCBhbmds
ZTo6R0xDb2xvciBibGFjayA9IHswLCAwLCAwLCAwfTsKKyAgICBFWFBFQ1RfVFJVRShDaGVja1Bp
eGVscygwLCAwLCBrUmVzb2x1dGlvbiwga1Jlc29sdXRpb24sIDAsIGJsYWNrKSk7Cit9CisKKy8v
IFRlc3QgdGhhdCB0cnlpbmcgdG8gdXNlIHBhdGggb2JqZWN0IHRoYXQgZG9lc24ndCBleGlzdCBn
ZW5lcmF0ZXMKKy8vIGEgR0wgZXJyb3IuCitURVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5nVGVz
dCwgVGVzdFVubmFtZWRQYXRoc0Vycm9ycykKK3sKKyAgICBpZiAoIWlzQXBwbGljYWJsZSgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICAvLyBVbm5hbWVkIHBhdGhzOiBUcnlpbmcgdG8gY3JlYXRl
IGEgcGF0aCBvYmplY3Qgd2l0aCBub24tZXhpc3RpbmcgcGF0aCBuYW1lCisgICAgLy8gcHJvZHVj
ZXMgZXJyb3IuICAoTm90IGEgZXJyb3IgaW4gcmVhbCBOVl9wYXRoX3JlbmRlcmluZykuCisgICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgR0x1Ynl0ZSBjb21tYW5kc1tdID0ge0dMX01PVkVf
VE9fQ0hST01JVU0sIEdMX0NMT1NFX1BBVEhfQ0hST01JVU19OworICAgIEdMZmxvYXQgY29vcmRz
W10gPSB7NTAuMGYsIDUwLjBmfTsKKyAgICBnbFBhdGhDb21tYW5kc0NIUk9NSVVNKDU1NSwgMiwg
Y29tbWFuZHMsIDIsIEdMX0ZMT0FULCBjb29yZHMpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9J
TlZBTElEX09QRVJBVElPTik7CisKKyAgICAvLyBQYXRoUGFyYW1ldGVyKjogVXNpbmcgbm9uLWV4
aXN0aW5nIHBhdGggb2JqZWN0IHByb2R1Y2VzIGVycm9yLgorICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOworICAgIGdsUGF0aFBhcmFtZXRlcmZDSFJPTUlVTSg1NTUsIEdMX1BBVEhfU1RST0tFX1dJ
RFRIX0NIUk9NSVVNLCA1LjBmKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgZ2xQYXRoUGFyYW1ldGVy
aUNIUk9NSVVNKDU1NSwgR0xfUEFUSF9KT0lOX1NUWUxFX0NIUk9NSVVNLCBHTF9ST1VORF9DSFJP
TUlVTSk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKwor
Ly8gVGVzdCB0aGF0IHNldHRpbmcgaW5jb3JyZWN0IHBhdGggZGF0YSBnZW5lcmF0ZXMgYSBHTCBl
cnJvci4KK1RFU1RfUChDSFJPTUlVTVBhdGhSZW5kZXJpbmdUZXN0LCBUZXN0UGF0aENvbW1hbmRz
RXJyb3JzKQoreworICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHN0YXRpYyBjb25zdCBHTGVudW0ga0ludmFsaWRDb29yZFR5cGUgPSBHTF9OT05FOworCisg
ICAgR0x1aW50IHBhdGggICAgICAgID0gZ2xHZW5QYXRoc0NIUk9NSVVNKDEpOworICAgIEdMdWJ5
dGUgY29tbWFuZHNbXSA9IHtHTF9NT1ZFX1RPX0NIUk9NSVVNLCBHTF9DTE9TRV9QQVRIX0NIUk9N
SVVNfTsKKyAgICBHTGZsb2F0IGNvb3Jkc1tdICAgPSB7NTAuMGYsIDUwLjBmfTsKKworICAgIGds
UGF0aENvbW1hbmRzQ0hST01JVU0ocGF0aCwgMiwgY29tbWFuZHMsIC00LCBHTF9GTE9BVCwgY29v
cmRzKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7CisKKyAgICBnbFBh
dGhDb21tYW5kc0NIUk9NSVVNKHBhdGgsIC0xLCBjb21tYW5kcywgMiwgR0xfRkxPQVQsIGNvb3Jk
cyk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOworCisgICAgZ2xQYXRo
Q29tbWFuZHNDSFJPTUlVTShwYXRoLCAyLCBjb21tYW5kcywgMiwga0ludmFsaWRDb29yZFR5cGUs
IGNvb3Jkcyk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7CisKKyAgICAv
LyBpbmNvcnJlY3QgbnVtYmVyIG9mIGNvb3JkaW5hdGVzCisgICAgZ2xQYXRoQ29tbWFuZHNDSFJP
TUlVTShwYXRoLCAyLCBjb21tYW5kcywgc3RkOjpudW1lcmljX2xpbWl0czxHTHNpemVpPjo6bWF4
KCksIEdMX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29vcmRzKTsKKyAgICBF
WFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7CisKKyAgICAvLyBUaGlzIHNob3VsZCBm
YWlsIGR1ZSB0byBjbWQgY291bnQgKyBjb29yZCBjb3VudCAqIHNob3J0IHNpemUuCisgICAgZ2xQ
YXRoQ29tbWFuZHNDSFJPTUlVTShwYXRoLCAyLCBjb21tYW5kcywgc3RkOjpudW1lcmljX2xpbWl0
czxHTHNpemVpPjo6bWF4KCksIEdMX1NIT1JULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29vcmRzKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworCisg
ICAgZ2xEZWxldGVQYXRoc0NIUk9NSVVNKHBhdGgsIDEpOworfQorCisvLyBUZXN0IHRoYXQgdHJ5
aW5nIHRvIHJlbmRlciBhIHBhdGggd2l0aCBpbnZhbGlkIGFyZ3VtZW50cworLy8gZ2VuZXJhdGVz
IGEgR0wgZXJyb3IuCitURVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5nVGVzdCwgVGVzdFBhdGhS
ZW5kZXJpbmdJbnZhbGlkQXJncykKK3sKKyAgICBpZiAoIWlzQXBwbGljYWJsZSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBHTHVpbnQgcGF0aCA9IGdsR2VuUGF0aHNDSFJPTUlVTSgxKTsKKyAg
ICBnbFBhdGhDb21tYW5kc0NIUk9NSVVNKHBhdGgsIDAsIE5VTEwsIDAsIEdMX0ZMT0FULCBOVUxM
KTsKKworICAgIC8vIFZlcmlmeSB0aGF0IG5vcm1hbCBjYWxscyB3b3JrLgorICAgIGdsU3RlbmNp
bEZpbGxQYXRoQ0hST01JVU0ocGF0aCwgR0xfQ09VTlRfVVBfQ0hST01JVU0sIDB4N0YpOworICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoQ0hS
T01JVU0ocGF0aCwgR0xfQ09VTlRfVVBfQ0hST01JVU0sIDB4N0YsIEdMX0JPVU5ESU5HX0JPWF9D
SFJPTUlVTSk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBVc2luZyBpbnZh
bGlkIGZpbGwgbW9kZSBjYXVzZXMgSU5WQUxJRF9FTlVNLgorICAgIGdsU3RlbmNpbEZpbGxQYXRo
Q0hST01JVU0ocGF0aCwgR0xfQ09VTlRfVVBfQ0hST01JVU0gLSAxLCAweDdGKTsKKyAgICBFWFBF
Q1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxs
UGF0aENIUk9NSVVNKHBhdGgsIEdMX0NPVU5UX1VQX0NIUk9NSVVNIC0gMSwgMHg3RiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0JPVU5ESU5HX0JPWF9DSFJPTUlV
TSk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7CisKKyAgICAvLyBVc2lu
ZyBpbnZhbGlkIGNvdmVyIG1vZGUgY2F1c2VzIElOVkFMSURfRU5VTS4KKyAgICBnbENvdmVyRmls
bFBhdGhDSFJPTUlVTShwYXRoLCBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTSAtIDEpOworICAgIEVY
UEVDVF9FUShzdGF0aWNfY2FzdDxHTGVudW0+KEdMX0lOVkFMSURfRU5VTSksIGdsR2V0RXJyb3Io
KSk7CisgICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTShwYXRoLCBHTF9DT1VO
VF9VUF9DSFJPTUlVTSwgMHg3RiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX0JPVU5ESU5HX0JPWF9DSFJPTUlVTSArIDEpOworICAgIEVYUEVDVF9HTF9FUlJPUihH
TF9JTlZBTElEX0VOVU0pOworCisgICAgLy8gVXNpbmcgbWFzaysxIG5vdCBiZWluZyBwb3dlciBv
ZiB0d28gY2F1c2VzIElOVkFMSURfVkFMVUUgd2l0aCB1cC9kb3duIGZpbGwgbW9kZQorICAgIGds
U3RlbmNpbEZpbGxQYXRoQ0hST01JVU0ocGF0aCwgR0xfQ09VTlRfVVBfQ0hST01JVU0sIDB4NDAp
OworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKKworICAgIGdsU3RlbmNp
bFRoZW5Db3ZlckZpbGxQYXRoQ0hST01JVU0ocGF0aCwgR0xfQ09VTlRfRE9XTl9DSFJPTUlVTSwg
MTIsIEdMX0JPVU5ESU5HX0JPWF9DSFJPTUlVTSk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lO
VkFMSURfVkFMVUUpOworCisgICAgLy8gY2hlY2sgaW5jb3JyZWN0IGluc3RhbmNlIHBhcmFtZXRl
cnMuCisKKyAgICAvLyBDb3ZlckZpbGxQYXRoSW5zdGFuY2VkCisgICAgeworICAgICAgICBnbENv
dmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSgtMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aCwg
MCwgR0xfQ09OVkVYX0hVTExfQ0hST01JVU0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX05PTkUsIE5VTEwpOworICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xf
SU5WQUxJRF9WQUxVRSk7CisKKyAgICAgICAgZ2xDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01J
VU0oMSwgR0xfRkxPQVQsICZwYXRoLCAwLCBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTSwgR0xfTk9O
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAg
ICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOworCisgICAgICAgIGdsQ292ZXJG
aWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgTlVMTCwgMCwgR0xf
Q09OVkVYX0hVTExfQ0hST01JVU0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX05PTkUsIE5VTEwpOworICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJ
RF9WQUxVRSk7CisKKyAgICAgICAgZ2xDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oMSwg
R0xfVU5TSUdORURfSU5ULCAmcGF0aCwgMCwgR0xfVU5TSUdORURfSU5ULCBHTF9OT05FLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgRVhQ
RUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7CisKKyAgICAgICAgZ2xDb3ZlckZpbGxQYXRo
SW5zdGFuY2VkQ0hST01JVU0oMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aCwgMCwgR0xfQ09OVkVY
X0hVTExfQ0hST01JVU0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1VOU0lHTkVEX0lOVCwgTlVMTCk7CisgICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZB
TElEX0VOVU0pOworCisgICAgICAgIGdsQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKDEs
IEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9UUkFOU0xBVEVfWF9DSFJP
TUlVTSwgTlVMTCk7CisgICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsK
KyAgICB9CisKKyAgICAvLyBDb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWQKKyAgICB7CisgICAgICAg
IGdsQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oLTEsIEdMX1VOU0lHTkVEX0lOVCwg
JnBhdGgsIDAsIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsIE5VTEwpOworICAgICAgICBFWFBFQ1RfR0xf
RVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7CisKKyAgICAgICAgZ2xDb3ZlclN0cm9rZVBhdGhJbnN0
YW5jZWRDSFJPTUlVTSgxLCBHTF9GTE9BVCwgJnBhdGgsIDAsIEdMX0NPTlZFWF9IVUxMX0NIUk9N
SVVNLCBHTF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5VTEwpOworICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKKworICAg
ICAgICBnbENvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lO
VCwgTlVMTCwgMCwgR0xfQ09OVkVYX0hVTExfQ0hST01JVU0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwgTlVMTCk7CisgICAgICAgIEVYUEVDVF9H
TF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKKworICAgICAgICBnbENvdmVyU3Ryb2tlUGF0aElu
c3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsIEdMX1VOU0lHTkVE
X0lOVCwgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOVUxMKTsKKyAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7CisKKyAg
ICAgICAgZ2xDb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05FRF9J
TlQsICZwYXRoLCAwLCBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsIE5VTEwpOworICAgICAg
ICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKKworICAgICAgICBnbENvdmVyU3Ry
b2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsIEdM
X0NPTlZFWF9IVUxMX0NIUk9NSVVNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1RSQU5TTEFURV9YX0NIUk9NSVVNLCBOVUxMKTsKKyAgICAgICAgRVhQRUNU
X0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOworICAgIH0KKworICAgIC8vIFN0ZW5jaWxGaWxs
UGF0aEluc3RhbmNlZAorICAgIHsKKyAgICAgICAgZ2xTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWRD
SFJPTUlVTSgtMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aCwgMCwgR0xfQ09VTlRfVVBfQ0hST01J
VU0sIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9O
T05FLCBOVUxMKTsKKyAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwor
CisgICAgICAgIGdsU3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oMSwgR0xfRkxPQVQs
ICZwYXRoLCAwLCBHTF9DT1VOVF9VUF9DSFJPTUlVTSwgMHgwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsIE5VTEwpOworICAgICAgICBFWFBFQ1Rf
R0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKKworICAgICAgICBnbFN0ZW5jaWxGaWxsUGF0aElu
c3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgTlVMTCwgMCwgR0xfQ09VTlRfVVBf
Q0hST01JVU0sIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9OT05FLCBOVUxMKTsKKyAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFM
VUUpOworCisgICAgICAgIGdsU3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oMSwgR0xf
VU5TSUdORURfSU5ULCAmcGF0aCwgMCwgR0xfVU5TSUdORURfSU5ULCAweDAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwgTlVMTCk7CisgICAgICAg
IEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOworCisgICAgICAgIGdsU3RlbmNpbEZp
bGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aCwgMCwgR0xf
Q09VTlRfVVBfQ0hST01JVU0sIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9OT05FLCBOVUxMKTsKKyAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lO
VkFMSURfVkFMVUUpOworCisgICAgICAgIGdsU3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hST01J
VU0oMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aCwgMCwgR0xfQ09VTlRfVVBfQ0hST01JVU0sIDB4
MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05F
RF9JTlQsIE5VTEwpOworICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsK
KworICAgICAgICBnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lH
TkVEX0lOVCwgJnBhdGgsIDAsIEdMX0NPVU5UX1VQX0NIUk9NSVVNLCAweDAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVFJBTlNMQVRFX1hfQ0hST01JVU0s
IE5VTEwpOworICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAg
fQorCisgICAgLy8gU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWQKKyAgICB7CisgICAgICAgIGds
U3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSgtMSwgR0xfVU5TSUdORURfSU5ULCAm
cGF0aCwgMCwgMHgwMCwgMHgwMCwgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5W
QUxJRF9WQUxVRSk7CisKKyAgICAgICAgZ2xTdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9N
SVVNKDEsIEdMX0ZMT0FULCAmcGF0aCwgMCwgMHgwMCwgMHgwMCwgR0xfTk9ORSwgTlVMTCk7Cisg
ICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOworCisgICAgICAgIGdsU3Rl
bmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05FRF9JTlQsIG51bGxw
dHIsIDAsIDB4MDAsIDB4MDAsIEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFM
SURfVkFMVUUpOworCisgICAgICAgIGdsU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlV
TSgxLCBHTF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLCAweDAwLCAweDAwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULCBOVUxMKTsK
KyAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7CisKKyAgICAgICAgZ2xT
dGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgJnBh
dGgsIDAsIDB4MDAsIDB4MDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9UUkFOU0xBVEVfWF9DSFJPTUlVTSwgTlVMTCk7CisgICAgICAgIEVYUEVDVF9H
TF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICB9CisKKyAgICAvLyBTdGVuY2lsVGhlbkNv
dmVyRmlsbFBhdGhJbnN0YW5jZWQKKyAgICB7CisgICAgICAgIGdsU3RlbmNpbFRoZW5Db3ZlckZp
bGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oLTEsIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09V
TlRfVVBfQ0hST01JVU0sIDAsIEdMX0NPVU5UX1VQX0NIUk9NSVVNLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsIE5VTEwpOworICAg
ICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7CisKKyAgICAgICAgZ2xTdGVu
Y2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9GTE9BVCwgJnBhdGgs
IDAsIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAsIEdMX0NPVU5UX1VQX0NIUk9NSVVNLCBHTF9OT05F
LCBOVUxMKTsKKyAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7CisKKyAg
ICAgICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9V
TlNJR05FRF9JTlQsIE5VTEwsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfQ09OVkVYX0hVTExfQ0hST01JVU0sIDAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09VTlRfVVBfQ0hS
T01JVU0sIEdMX05PTkUsIE5VTEwpOworICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJ
RF9WQUxVRSk7CisKKyAgICAgICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRD
SFJPTUlVTSgxLCBHTF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLCBHTF9VTlNJR05FRF9JTlQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgR0xf
Q09VTlRfVVBfQ0hST01JVU0sIEdMX05PTkUsIE5VTEwpOworICAgICAgICBFWFBFQ1RfR0xfRVJS
T1IoR0xfSU5WQUxJRF9FTlVNKTsKKworICAgICAgICBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0
aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09OVkVYX0hV
TExfQ0hST01JVU0sIDAsIEdMX1VOU0lHTkVEX0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLCBOVUxMKTsKKyAgICAgICAgRVhQ
RUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7CisKKyAgICAgICAgZ2xTdGVuY2lsVGhlbkNv
dmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05FRF9JTlQsICZwYXRoLCAw
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X0NPTlZFWF9IVUxMX0NIUk9NSVVNLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX0NPVU5UX1VQX0NIUk9NSVVNLCBHTF9GTE9BVCwgTlVM
TCk7CisgICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOworCisgICAgICAg
IGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oCisgICAgICAgICAg
ICAxLCBHTF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLCBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTSwg
MCwgR0xfQ09VTlRfVVBfQ0hST01JVU0sCisgICAgICAgICAgICBHTF9UUkFOU0xBVEVfWF9DSFJP
TUlVTSwgTlVMTCk7CisgICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsK
KyAgICB9CisKKyAgICAvLyBTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZAorICAg
IHsKKyAgICAgICAgZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVN
KC0xLCBHTF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLCAweDAsIDB4MCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTlZFWF9IVUxMX0NI
Uk9NSVVNLCBHTF9OT05FLCBOVUxMKTsKKyAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFM
SURfVkFMVUUpOworCisgICAgICAgIGdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5j
ZWRDSFJPTUlVTSgxLCBHTF9GTE9BVCwgJnBhdGgsIDAsIDB4MCwgMHgwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09OVkVYX0hVTExf
Q0hST01JVU0sIEdMX05PTkUsIE5VTEwpOworICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5W
QUxJRF9FTlVNKTsKKworICAgICAgICBnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFu
Y2VkQ0hST01JVU0oMSwgR0xfVU5TSUdORURfSU5ULCBOVUxMLCAwLCAweDAsIDB4MCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTlZF
WF9IVUxMX0NIUk9NSVVNLCBHTF9OT05FLCBOVUxMKTsKKyAgICAgICAgRVhQRUNUX0dMX0VSUk9S
KEdMX0lOVkFMSURfVkFMVUUpOworCisgICAgICAgIGdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBh
dGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLCAweDAsIDB4
MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX0ZMT0FULCBHTF9OT05FLCBOVUxMKTsKKyAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lO
VkFMSURfRU5VTSk7CisKKyAgICAgICAgZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3Rh
bmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsIDB4MCwgMHgwLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09O
VkVYX0hVTExfQ0hST01JVU0sIEdMX0ZMT0FULCBOVUxMKTsKKyAgICAgICAgRVhQRUNUX0dMX0VS
Uk9SKEdMX0lOVkFMSURfRU5VTSk7CisKKyAgICAgICAgZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tl
UGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsIDB4MCwg
MHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfQ09OVkVYX0hVTExfQ0hST01JVU0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9UUkFOU0xBVEVfWF9DSFJPTUlVTSwgTlVMTCk7
CisgICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICB9CisKKyAg
ICBnbERlbGV0ZVBhdGhzQ0hST01JVU0ocGF0aCwgMSk7Cit9CisKK2NvbnN0IEdMZmxvYXQga1By
b2plY3Rpb25NYXRyaXhbMTZdID0gezIuMGYgLyBrUmVzb2x1dGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAuMGYsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLjBmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMC4wZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMGYsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjBmIC8ga1Jlc29sdXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjBmLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wZiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAuMGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLjBmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEu
MGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjBmLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEuMGYsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAtMS4wZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAuMGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxLjBmfTsKKworY2xhc3MgQ0hST01JVU1QYXRoUmVuZGVyaW5nRHJhd1Rlc3QgOiBwdWJsaWMg
QU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBDSFJPTUlVTVBhdGhSZW5kZXJpbmdEcmF3
VGVzdCgpCisgICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0aChrUmVzb2x1dGlvbik7CisgICAg
ICAgIHNldFdpbmRvd0hlaWdodChrUmVzb2x1dGlvbik7CisgICAgICAgIHNldENvbmZpZ1JlZEJp
dHMoOCk7CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmln
Qmx1ZUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKKyAgICAgICAgc2V0
Q29uZmlnRGVwdGhCaXRzKDgpOworICAgICAgICBzZXRDb25maWdTdGVuY2lsQml0cyg4KTsKKyAg
ICB9CisKKyAgICBib29sIGlzQXBwbGljYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGV4dGVuc2lvbkVu
YWJsZWQoIkdMX0NIUk9NSVVNX3BhdGhfcmVuZGVyaW5nIik7IH0KKworICAgIHZvaWQgc2V0dXBT
dGF0ZUZvclRlc3RQYXR0ZXJuKCkKKyAgICB7CisgICAgICAgIGdsVmlld3BvcnQoMCwgMCwga1Jl
c29sdXRpb24sIGtSZXNvbHV0aW9uKTsKKyAgICAgICAgZ2xDbGVhckNvbG9yKDAuMGYsIDAuMGYs
IDAuMGYsIDAuMGYpOworICAgICAgICBnbFN0ZW5jaWxNYXNrKDB4ZmZmZmZmZmYpOworICAgICAg
ICBnbENsZWFyU3RlbmNpbCgwKTsKKyAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklU
IHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKKyAgICAgICAgZ2xFbmFibGUoR0xfU1RFTkNJTF9U
RVNUKTsKKworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciAqa1ZlcnRleFNoYWRlclNvdXJjZSA9
CisgICAgICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAgICAgIiAgZ2xfUG9zaXRp
b24gPSB2ZWM0KDEuMCk7IFxuIgorICAgICAgICAgICAgIn0iOworCisgICAgICAgIHN0YXRpYyBj
b25zdCBjaGFyICprRnJhZ21lbnRTaGFkZXJTb3VyY2UgPQorICAgICAgICAgICAgInByZWNpc2lv
biBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAgICAgInVuaWZvcm0gdmVjNCBjb2xvcjtcbiIK
KyAgICAgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICAgICAiICBnbF9GcmFnQ29s
b3IgPSBjb2xvcjtcbiIKKyAgICAgICAgICAgICJ9IjsKKworICAgICAgICBHTHVpbnQgcHJvZ3Jh
bSA9IENvbXBpbGVQcm9ncmFtKGtWZXJ0ZXhTaGFkZXJTb3VyY2UsIGtGcmFnbWVudFNoYWRlclNv
dXJjZSk7CisgICAgICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgbUNvbG9yTG9j
ID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImNvbG9yIik7CisgICAgICAgIGdsRGVs
ZXRlUHJvZ3JhbShwcm9ncmFtKTsKKworICAgICAgICAvLyBTZXQgdXAgb3J0aG9nb25hbCBwcm9q
ZWN0aW9uIHdpdGggbmVhci9mYXIgcGxhbmUgZGlzdGFuY2Ugb2YgMi4KKyAgICAgICAgZ2xNYXRy
aXhMb2FkZkNIUk9NSVVNKEdMX1BBVEhfUFJPSkVDVElPTl9DSFJPTUlVTSwga1Byb2plY3Rpb25N
YXRyaXgpOworICAgICAgICBnbE1hdHJpeExvYWRJZGVudGl0eUNIUk9NSVVNKEdMX1BBVEhfTU9E
RUxWSUVXX0NIUk9NSVVNKTsKKworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICB9
CisKKyAgICB2b2lkIHNldHVwUGF0aFN0YXRlRm9yVGVzdFBhdHRlcm4oR0x1aW50IHBhdGgpCisg
ICAgeworICAgICAgICBzdGF0aWMgY29uc3QgR0x1Ynl0ZSBrQ29tbWFuZHNbXSA9IHtHTF9NT1ZF
X1RPX0NIUk9NSVVNLCBHTF9MSU5FX1RPX0NIUk9NSVVNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9RVUFEUkFUSUNfQ1VSVkVfVE9fQ0hST01JVU0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NVQklDX0NVUlZF
X1RPX0NIUk9NSVVNLCBHTF9DTE9TRV9QQVRIX0NIUk9NSVVNfTsKKworICAgICAgICBzdGF0aWMg
Y29uc3QgR0xmbG9hdCBrQ29vcmRzW10gPSB7NTAuMGYsIDUwLjBmLCA3NS4wZiwgNzUuMGYsIDEw
MC4wZiwgNjIuNWYsIDUwLjBmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMjUuNWYsIDAuMGYsICA2Mi41ZiwgNTAuMGYsIDUwLjBmLCAgMjUuMGYsIDc1LjBmfTsK
KworICAgICAgICBnbFBhdGhDb21tYW5kc0NIUk9NSVVNKHBhdGgsIDUsIGtDb21tYW5kcywgMTQs
IEdMX0ZMT0FULCBrQ29vcmRzKTsKKyAgICAgICAgZ2xQYXRoUGFyYW1ldGVyZkNIUk9NSVVNKHBh
dGgsIEdMX1BBVEhfU1RST0tFX1dJRFRIX0NIUk9NSVVNLCA1LjBmKTsKKyAgICAgICAgZ2xQYXRo
UGFyYW1ldGVyZkNIUk9NSVVNKHBhdGgsIEdMX1BBVEhfTUlURVJfTElNSVRfQ0hST01JVU0sIDEu
MGYpOworICAgICAgICBnbFBhdGhQYXJhbWV0ZXJmQ0hST01JVU0ocGF0aCwgR0xfUEFUSF9TVFJP
S0VfQk9VTkRfQ0hST01JVU0sIC4wMmYpOworICAgICAgICBnbFBhdGhQYXJhbWV0ZXJpQ0hST01J
VU0ocGF0aCwgR0xfUEFUSF9KT0lOX1NUWUxFX0NIUk9NSVVNLCBHTF9ST1VORF9DSFJPTUlVTSk7
CisgICAgICAgIGdsUGF0aFBhcmFtZXRlcmlDSFJPTUlVTShwYXRoLCBHTF9QQVRIX0VORF9DQVBT
X0NIUk9NSVVNLCBHTF9TUVVBUkVfQ0hST01JVU0pOworICAgICAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKKyAgICB9CisKKyAgICB2b2lkIHZlcmlmeVRlc3RQYXR0ZXJuRmlsbChHTGZsb2F0IGZs
eCwgR0xmbG9hdCBmbHkpCisgICAgeworICAgICAgICBzdGF0aWMgY29uc3QgR0xpbnQga0ZpbGxD
b29yZHNbXSAgPSB7NTUsIDU0LCA1MCwgMjgsIDY2LCA2M307CisgICAgICAgIHN0YXRpYyBjb25z
dCBhbmdsZTo6R0xDb2xvciBrQmx1ZSA9IHswLCAwLCAyNTUsIDI1NX07CisKKyAgICAgICAgR0xp
bnQgeCA9IHN0YXRpY19jYXN0PEdMaW50PihmbHgpOworICAgICAgICBHTGludCB5ID0gc3RhdGlj
X2Nhc3Q8R0xpbnQ+KGZseSk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA2OyBp
ICs9IDIpCisgICAgICAgIHsKKyAgICAgICAgICAgIEdMaW50IGZ4ID0ga0ZpbGxDb29yZHNbaV07
CisgICAgICAgICAgICBHTGludCBmeSA9IGtGaWxsQ29vcmRzW2kgKyAxXTsKKyAgICAgICAgICAg
IEVYUEVDVF9UUlVFKENoZWNrUGl4ZWxzKHggKyBmeCwgeSArIGZ5LCAxLCAxLCAwLCBrQmx1ZSkp
OworICAgICAgICB9CisgICAgfQorICAgIHZvaWQgdmVyaWZ5VGVzdFBhdHRlcm5CZyhHTGZsb2F0
IGZ4LCBHTGZsb2F0IGZ5KQorICAgIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IEdMaW50IGtCYWNr
Z3JvdW5kQ29vcmRzW10gICAgID0gezgwLCA4MCwgMjAsIDIwLCA5MCwgMX07CisgICAgICAgIHN0
YXRpYyBjb25zdCBhbmdsZTo6R0xDb2xvciBrRXhwZWN0ZWRDb2xvciA9IHswLCAwLCAwLCAwfTsK
KworICAgICAgICBHTGludCB4ID0gc3RhdGljX2Nhc3Q8R0xpbnQ+KGZ4KTsKKyAgICAgICAgR0xp
bnQgeSA9IHN0YXRpY19jYXN0PEdMaW50PihmeSk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCA2OyBpICs9IDIpCisgICAgICAgIHsKKyAgICAgICAgICAgIEdMaW50IGJ4ID0ga0Jh
Y2tncm91bmRDb29yZHNbaV07CisgICAgICAgICAgICBHTGludCBieSA9IGtCYWNrZ3JvdW5kQ29v
cmRzW2kgKyAxXTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKENoZWNrUGl4ZWxzKHggKyBieCwg
eSArIGJ5LCAxLCAxLCAwLCBrRXhwZWN0ZWRDb2xvcikpOworICAgICAgICB9CisgICAgfQorCisg
ICAgdm9pZCB2ZXJpZnlUZXN0UGF0dGVyblN0cm9rZShHTGZsb2F0IGZ4LCBHTGZsb2F0IGZ5KQor
ICAgIHsKKyAgICAgICAgR0xpbnQgeCA9IHN0YXRpY19jYXN0PEdMaW50PihmeCk7CisgICAgICAg
IEdMaW50IHkgPSBzdGF0aWNfY2FzdDxHTGludD4oZnkpOworCisgICAgICAgIC8vIEluc2lkZSB0
aGUgc3Ryb2tlIHdlIHNob3VsZCBoYXZlIGdyZWVuLgorICAgICAgICBzdGF0aWMgY29uc3QgYW5n
bGU6OkdMQ29sb3Iga0dyZWVuID0gezAsIDI1NSwgMCwgMjU1fTsKKyAgICAgICAgRVhQRUNUX1RS
VUUoQ2hlY2tQaXhlbHMoeCArIDUwLCB5ICsgNTMsIDEsIDEsIDAsIGtHcmVlbikpOworICAgICAg
ICBFWFBFQ1RfVFJVRShDaGVja1BpeGVscyh4ICsgMjYsIHkgKyA3NiwgMSwgMSwgMCwga0dyZWVu
KSk7CisKKyAgICAgICAgLy8gT3V0c2lkZSB0aGUgcGF0aCB3ZSBzaG91bGQgaGF2ZSBibGFjay4K
KyAgICAgICAgc3RhdGljIGNvbnN0IGFuZ2xlOjpHTENvbG9yIGJsYWNrID0gezAsIDAsIDAsIDB9
OworICAgICAgICBFWFBFQ1RfVFJVRShDaGVja1BpeGVscyh4ICsgMTAsIHkgKyAxMCwgMSwgMSwg
MCwgYmxhY2spKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoQ2hlY2tQaXhlbHMoeCArIDgwLCB5ICsg
ODAsIDEsIDEsIDAsIGJsYWNrKSk7CisgICAgfQorCisgICAgR0x1aW50IG1Db2xvckxvYzsKK307
CisKKy8vIFRlc3RzIHRoYXQgYmFzaWMgcGF0aCByZW5kZXJpbmcgZnVuY3Rpb25zIHdvcmsuCitU
RVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5nRHJhd1Rlc3QsIFRlc3RQYXRoUmVuZGVyaW5nKQor
eworICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHN0YXRp
YyBjb25zdCBmbG9hdCBrQmx1ZVtdICA9IHswLjBmLCAwLjBmLCAxLjBmLCAxLjBmfTsKKyAgICBz
dGF0aWMgY29uc3QgZmxvYXQga0dyZWVuW10gPSB7MC4wZiwgMS4wZiwgMC4wZiwgMS4wZn07CisK
KyAgICBzZXR1cFN0YXRlRm9yVGVzdFBhdHRlcm4oKTsKKworICAgIEdMdWludCBwYXRoID0gZ2xH
ZW5QYXRoc0NIUk9NSVVNKDEpOworICAgIHNldHVwUGF0aFN0YXRlRm9yVGVzdFBhdHRlcm4ocGF0
aCk7CisKKyAgICAvLyBEbyB0aGUgc3RlbmNpbCBmaWxsLCBjb3ZlciBmaWxsLCBzdGVuY2lsIHN0
cm9rZSwgY292ZXIgc3Ryb2tlCisgICAgLy8gaW4gdW5jb252ZW50aW9uYWwgb3JkZXI6CisgICAg
Ly8gMSkgc3RlbmNpbCB0aGUgc3Ryb2tlIGluIHN0ZW5jaWwgaGlnaCBiaXQKKyAgICAvLyAyKSBz
dGVuY2lsIHRoZSBmaWxsIGluIGxvdyBiaXRzCisgICAgLy8gMykgY292ZXIgdGhlIGZpbGwKKyAg
ICAvLyA0KSBjb3ZlciB0aGUgc3Ryb2tlCisgICAgLy8gVGhpcyBpcyBkb25lIHRvIGNoZWNrIHRo
YXQgZ2xQYXRoU3RlbmNpbEZ1bmMgd29ya3MsIGVnIHRoZSBtYXNrCisgICAgLy8gZ29lcyB0aHJv
dWdoLiBTdGVuY2lsIGZ1bmMgaXMgbm90IHRlc3RlZCBBVE0sIGZvciBzaW1wbGljaXR5LgorCisg
ICAgZ2xQYXRoU3RlbmNpbEZ1bmNDSFJPTUlVTShHTF9BTFdBWVMsIDAsIDB4RkYpOworICAgIGds
U3RlbmNpbFN0cm9rZVBhdGhDSFJPTUlVTShwYXRoLCAweDgwLCAweDgwKTsKKworICAgIGdsUGF0
aFN0ZW5jaWxGdW5jQ0hST01JVU0oR0xfQUxXQVlTLCAwLCAweDdGKTsKKyAgICBnbFN0ZW5jaWxG
aWxsUGF0aENIUk9NSVVNKHBhdGgsIEdMX0NPVU5UX1VQX0NIUk9NSVVNLCAweDdGKTsKKworICAg
IGdsU3RlbmNpbEZ1bmMoR0xfTEVTUywgMCwgMHg3Rik7CisgICAgZ2xTdGVuY2lsT3AoR0xfS0VF
UCwgR0xfS0VFUCwgR0xfWkVSTyk7CisgICAgZ2xVbmlmb3JtNGZ2KG1Db2xvckxvYywgMSwga0Js
dWUpOworICAgIGdsQ292ZXJGaWxsUGF0aENIUk9NSVVNKHBhdGgsIEdMX0JPVU5ESU5HX0JPWF9D
SFJPTUlVTSk7CisKKyAgICBnbFN0ZW5jaWxGdW5jKEdMX0VRVUFMLCAweDgwLCAweDgwKTsKKyAg
ICBnbFN0ZW5jaWxPcChHTF9LRUVQLCBHTF9LRUVQLCBHTF9aRVJPKTsKKyAgICBnbFVuaWZvcm00
ZnYobUNvbG9yTG9jLCAxLCBrR3JlZW4pOworICAgIGdsQ292ZXJTdHJva2VQYXRoQ0hST01JVU0o
cGF0aCwgR0xfQ09OVkVYX0hVTExfQ0hST01JVU0pOworCisgICAgZ2xEZWxldGVQYXRoc0NIUk9N
SVVNKHBhdGgsIDEpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBWZXJp
ZnkgdGhlIGltYWdlLgorICAgIHZlcmlmeVRlc3RQYXR0ZXJuRmlsbCgwLCAwKTsKKyAgICB2ZXJp
ZnlUZXN0UGF0dGVybkJnKDAsIDApOworICAgIHZlcmlmeVRlc3RQYXR0ZXJuU3Ryb2tlKDAsIDAp
OworfQorCisvLyBUZXN0IHRoYXQgU3RlbmNpbFRoZW57U3Ryb2tlLEZpbGx9IHBhdGggcmVuZGVy
aW5nIGZ1bmN0aW9ucyB3b3JrCitURVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5nRHJhd1Rlc3Qs
IFRlc3RQYXRoUmVuZGVyaW5nVGhlbkZ1bmN0aW9ucykKK3sKKyAgICBpZiAoIWlzQXBwbGljYWJs
ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzdGF0aWMgZmxvYXQga0JsdWVbXSAgPSB7MC4w
ZiwgMC4wZiwgMS4wZiwgMS4wZn07CisgICAgc3RhdGljIGZsb2F0IGtHcmVlbltdID0gezAuMGYs
IDEuMGYsIDAuMGYsIDEuMGZ9OworCisgICAgc2V0dXBTdGF0ZUZvclRlc3RQYXR0ZXJuKCk7CisK
KyAgICBHTHVpbnQgcGF0aCA9IGdsR2VuUGF0aHNDSFJPTUlVTSgxKTsKKyAgICBzZXR1cFBhdGhT
dGF0ZUZvclRlc3RQYXR0ZXJuKHBhdGgpOworCisgICAgZ2xQYXRoU3RlbmNpbEZ1bmNDSFJPTUlV
TShHTF9BTFdBWVMsIDAsIDB4RkYpOworICAgIGdsU3RlbmNpbEZ1bmMoR0xfRVFVQUwsIDB4ODAs
IDB4ODApOworICAgIGdsU3RlbmNpbE9wKEdMX0tFRVAsIEdMX0tFRVAsIEdMX1pFUk8pOworICAg
IGdsVW5pZm9ybTRmdihtQ29sb3JMb2MsIDEsIGtHcmVlbik7CisgICAgZ2xTdGVuY2lsVGhlbkNv
dmVyU3Ryb2tlUGF0aENIUk9NSVVNKHBhdGgsIDB4ODAsIDB4ODAsIEdMX0JPVU5ESU5HX0JPWF9D
SFJPTUlVTSk7CisKKyAgICBnbFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNKEdMX0FMV0FZUywgMCwg
MHg3Rik7CisgICAgZ2xTdGVuY2lsRnVuYyhHTF9MRVNTLCAwLCAweDdGKTsKKyAgICBnbFN0ZW5j
aWxPcChHTF9LRUVQLCBHTF9LRUVQLCBHTF9aRVJPKTsKKyAgICBnbFVuaWZvcm00ZnYobUNvbG9y
TG9jLCAxLCBrQmx1ZSk7CisgICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTShw
YXRoLCBHTF9DT1VOVF9VUF9DSFJPTUlVTSwgMHg3RiwgR0xfQ09OVkVYX0hVTExfQ0hST01JVU0p
OworCisgICAgZ2xEZWxldGVQYXRoc0NIUk9NSVVNKHBhdGgsIDEpOworCisgICAgLy8gVmVyaWZ5
IHRoZSBpbWFnZS4KKyAgICB2ZXJpZnlUZXN0UGF0dGVybkZpbGwoMCwgMCk7CisgICAgdmVyaWZ5
VGVzdFBhdHRlcm5CZygwLCAwKTsKKyAgICB2ZXJpZnlUZXN0UGF0dGVyblN0cm9rZSgwLCAwKTsK
K30KKworLy8gVGVzdHMgdGhhdCBkcmF3aW5nIHdpdGggKkluc3RhbmNlZCBmdW5jdGlvbnMgd29y
ay4KK1RFU1RfUChDSFJPTUlVTVBhdGhSZW5kZXJpbmdEcmF3VGVzdCwgVGVzdFBhdGhSZW5kZXJp
bmdJbnN0YW5jZWQpCit7CisgICAgaWYgKCFpc0FwcGxpY2FibGUoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgc3RhdGljIGNvbnN0IGZsb2F0IGtCbHVlW10gID0gezAuMGYsIDAuMGYsIDEuMGYs
IDEuMGZ9OworICAgIHN0YXRpYyBjb25zdCBmbG9hdCBrR3JlZW5bXSA9IHswLjBmLCAxLjBmLCAw
LjBmLCAxLjBmfTsKKworICAgIHNldHVwU3RhdGVGb3JUZXN0UGF0dGVybigpOworCisgICAgR0x1
aW50IHBhdGggPSBnbEdlblBhdGhzQ0hST01JVU0oMSk7CisgICAgc2V0dXBQYXRoU3RhdGVGb3JU
ZXN0UGF0dGVybihwYXRoKTsKKworICAgIGNvbnN0IEdMdWludCBrUGF0aHNbXSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSB7MSwgMSwgMSwgMSwgMX07CisgICAgY29uc3QgR0xzaXplaSBr
UGF0aENvdW50ICAgICAgICAgICAgICAgICAgICAgICAgICA9IDU7CisgICAgY29uc3QgR0xmbG9h
dCBrU2hhcGVTaXplICAgICAgICAgICAgICAgICAgICAgICAgICA9IDgwLjBmOworICAgIHN0YXRp
YyBjb25zdCBHTGZsb2F0IGtUcmFuc2Zvcm1zW2tQYXRoQ291bnQgKiAxMl0gPSB7CisgICAgICAg
IDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYsIDAu
MGYsICAgICAgICAgICAwLjBmLCAgICAgICAwLjBmLAorICAgICAgICAxLjBmLCAwLjBmLCAwLjBm
LCAwLjBmLCAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLCAxLjBmLCBrU2hhcGVTaXplLCAgICAgMC4w
ZiwgICAgICAgMC4wZiwKKyAgICAgICAgMS4wZiwgMC4wZiwgMC4wZiwgMC4wZiwgMS4wZiwgMC4w
ZiwgMC4wZiwgMC4wZiwgMS4wZiwga1NoYXBlU2l6ZSAqIDIsIDAuMGYsICAgICAgIDAuMGYsCisg
ICAgICAgIDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsIDEu
MGYsIDAuMGYsICAgICAgICAgICBrU2hhcGVTaXplLCAwLjBmLAorICAgICAgICAxLjBmLCAwLjBm
LCAwLjBmLCAwLjBmLCAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLCAxLjBmLCBrU2hhcGVTaXplLCAg
ICAga1NoYXBlU2l6ZSwgMC4wZn07CisKKyAgICAvLyBUaGUgdGVzdCBwYXR0ZXJuIGlzIHRoZSBz
YW1lIGFzIGluIHRoZSBzaW1wbGUgZHJhdyBjYXNlIGFib3ZlLAorICAgIC8vIGV4Y2VwdCB0aGF0
IHRoZSBwYXRoIGlzIGRyYXduIGtQYXRoQ291bnQgdGltZXMgd2l0aCBkaWZmZXJlbnQgb2Zmc2V0
cy4KKyAgICBnbFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNKEdMX0FMV0FZUywgMCwgMHhGRik7Cisg
ICAgZ2xTdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKGtQYXRoQ291bnQsIEdMX1VO
U0lHTkVEX0lOVCwga1BhdGhzLCBwYXRoIC0gMSwgMHg4MCwgMHg4MCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQUZGSU5FXzNEX0NIUk9NSVVNLCBrVHJhbnNm
b3Jtcyk7CisKKyAgICBnbFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNKEdMX0FMV0FZUywgMCwgMHg3
Rik7CisgICAgZ2xVbmlmb3JtNGZ2KG1Db2xvckxvYywgMSwga0JsdWUpOworICAgIGdsU3RlbmNp
bEZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oa1BhdGhDb3VudCwgR0xfVU5TSUdORURfSU5ULCBr
UGF0aHMsIHBhdGggLSAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfQ09VTlRfVVBfQ0hST01JVU0sIDB4N0YsIEdMX0FGRklORV8zRF9DSFJPTUlVTSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtUcmFuc2Zvcm1zKTsKKworICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xTdGVuY2lsRnVuYyhHTF9MRVNTLCAwLCAweDdG
KTsKKyAgICBnbFN0ZW5jaWxPcChHTF9LRUVQLCBHTF9LRUVQLCBHTF9aRVJPKTsKKyAgICBnbENv
dmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTShrUGF0aENvdW50LCBHTF9VTlNJR05FRF9JTlQs
IGtQYXRocywgcGF0aCAtIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfQk9VTkRJTkdfQk9YX09GX0JPVU5ESU5HX0JPWEVTX0NIUk9NSVVNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0FGRklORV8zRF9DSFJPTUlVTSwga1RyYW5zZm9y
bXMpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbFN0ZW5jaWxGdW5jKEdM
X0VRVUFMLCAweDgwLCAweDgwKTsKKyAgICBnbFN0ZW5jaWxPcChHTF9LRUVQLCBHTF9LRUVQLCBH
TF9aRVJPKTsKKyAgICBnbFVuaWZvcm00ZnYobUNvbG9yTG9jLCAxLCBrR3JlZW4pOworICAgIGds
Q292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oa1BhdGhDb3VudCwgR0xfVU5TSUdORURf
SU5ULCBrUGF0aHMsIHBhdGggLSAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfQk9VTkRJTkdfQk9YX09GX0JPVU5ESU5HX0JPWEVTX0NIUk9NSVVNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQUZGSU5FXzNEX0NIUk9NSVVNLCBr
VHJhbnNmb3Jtcyk7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIGdsRGVsZXRl
UGF0aHNDSFJPTUlVTShwYXRoLCAxKTsKKworICAgIC8vIFZlcmlmeSB0aGUgaW1hZ2UuCisgICAg
dmVyaWZ5VGVzdFBhdHRlcm5GaWxsKDAuMGYsIDAuMGYpOworICAgIHZlcmlmeVRlc3RQYXR0ZXJu
QmcoMC4wZiwgMC4wZik7CisgICAgdmVyaWZ5VGVzdFBhdHRlcm5TdHJva2UoMC4wZiwgMC4wZik7
CisKKyAgICB2ZXJpZnlUZXN0UGF0dGVybkZpbGwoa1NoYXBlU2l6ZSwgMC4wZik7CisgICAgdmVy
aWZ5VGVzdFBhdHRlcm5CZyhrU2hhcGVTaXplLCAwLjBmKTsKKyAgICB2ZXJpZnlUZXN0UGF0dGVy
blN0cm9rZShrU2hhcGVTaXplLCAwLjBmKTsKKworICAgIHZlcmlmeVRlc3RQYXR0ZXJuRmlsbChr
U2hhcGVTaXplICogMiwgMC4wZik7CisgICAgdmVyaWZ5VGVzdFBhdHRlcm5CZyhrU2hhcGVTaXpl
ICogMiwgMC4wZik7CisgICAgdmVyaWZ5VGVzdFBhdHRlcm5TdHJva2Uoa1NoYXBlU2l6ZSAqIDIs
IDAuMGYpOworCisgICAgdmVyaWZ5VGVzdFBhdHRlcm5GaWxsKDAuMGYsIGtTaGFwZVNpemUpOwor
ICAgIHZlcmlmeVRlc3RQYXR0ZXJuQmcoMC4wZiwga1NoYXBlU2l6ZSk7CisgICAgdmVyaWZ5VGVz
dFBhdHRlcm5TdHJva2UoMC4wZiwga1NoYXBlU2l6ZSk7CisKKyAgICB2ZXJpZnlUZXN0UGF0dGVy
bkZpbGwoa1NoYXBlU2l6ZSwga1NoYXBlU2l6ZSk7CisgICAgdmVyaWZ5VGVzdFBhdHRlcm5CZyhr
U2hhcGVTaXplLCBrU2hhcGVTaXplKTsKKyAgICB2ZXJpZnlUZXN0UGF0dGVyblN0cm9rZShrU2hh
cGVTaXplLCBrU2hhcGVTaXplKTsKK30KKworLy8gVGVzdCB0aGF0IGluc3RhbmNlZCBmaWxsL3N0
cm9rZSB0aGVuIGNvdmVyIGZ1bmN0aW9ucyB3b3JrLgorVEVTVF9QKENIUk9NSVVNUGF0aFJlbmRl
cmluZ0RyYXdUZXN0LCBUZXN0UGF0aFJlbmRlcmluZ1RoZW5GdW5jdGlvbnNJbnN0YW5jZWQpCit7
CisgICAgaWYgKCFpc0FwcGxpY2FibGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RhdGlj
IGNvbnN0IGZsb2F0IGtCbHVlW10gID0gezAuMGYsIDAuMGYsIDEuMGYsIDEuMGZ9OworICAgIHN0
YXRpYyBjb25zdCBmbG9hdCBrR3JlZW5bXSA9IHswLjBmLCAxLjBmLCAwLjBmLCAxLjBmfTsKKwor
ICAgIHNldHVwU3RhdGVGb3JUZXN0UGF0dGVybigpOworCisgICAgR0x1aW50IHBhdGggPSBnbEdl
blBhdGhzQ0hST01JVU0oMSk7CisgICAgc2V0dXBQYXRoU3RhdGVGb3JUZXN0UGF0dGVybihwYXRo
KTsKKworICAgIGNvbnN0IEdMdWludCBrUGF0aHNbXSAgICAgICAgICAgICAgPSB7MSwgMSwgMSwg
MSwgMX07CisgICAgY29uc3QgR0xzaXplaSBrUGF0aENvdW50ICAgICAgICAgICA9IDU7CisgICAg
Y29uc3QgR0xmbG9hdCBrU2hhcGVTaXplICAgICAgICAgICA9IDgwLjBmOworICAgIHN0YXRpYyBj
b25zdCBHTGZsb2F0IGtUcmFuc2Zvcm1zW10gPSB7CisgICAgICAgIDAuMGYsIDAuMGYsIGtTaGFw
ZVNpemUsIDAuMGYsICAgICAgIGtTaGFwZVNpemUgKiAyLAorICAgICAgICAwLjBmLCAwLjBmLCBr
U2hhcGVTaXplLCBrU2hhcGVTaXplLCBrU2hhcGVTaXplLAorICAgIH07CisKKyAgICBnbFBhdGhT
dGVuY2lsRnVuY0NIUk9NSVVNKEdMX0FMV0FZUywgMCwgMHhGRik7CisgICAgZ2xTdGVuY2lsRnVu
YyhHTF9FUVVBTCwgMHg4MCwgMHg4MCk7CisgICAgZ2xTdGVuY2lsT3AoR0xfS0VFUCwgR0xfS0VF
UCwgR0xfWkVSTyk7CisgICAgZ2xVbmlmb3JtNGZ2KG1Db2xvckxvYywgMSwga0dyZWVuKTsKKyAg
ICBnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oCisgICAgICAg
IGtQYXRoQ291bnQsIEdMX1VOU0lHTkVEX0lOVCwga1BhdGhzLCBwYXRoIC0gMSwgMHg4MCwgMHg4
MCwKKyAgICAgICAgR0xfQk9VTkRJTkdfQk9YX09GX0JPVU5ESU5HX0JPWEVTX0NIUk9NSVVNLCBH
TF9UUkFOU0xBVEVfMkRfQ0hST01JVU0sIGtUcmFuc2Zvcm1zKTsKKworICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOworCisgICAgZ2xQYXRoU3RlbmNpbEZ1bmNDSFJPTUlVTShHTF9BTFdBWVMsIDAs
IDB4N0YpOworICAgIGdsU3RlbmNpbEZ1bmMoR0xfTEVTUywgMCwgMHg3Rik7CisgICAgZ2xTdGVu
Y2lsT3AoR0xfS0VFUCwgR0xfS0VFUCwgR0xfWkVSTyk7CisgICAgZ2xVbmlmb3JtNGZ2KG1Db2xv
ckxvYywgMSwga0JsdWUpOworICAgIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2Vk
Q0hST01JVU0oCisgICAgICAgIGtQYXRoQ291bnQsIEdMX1VOU0lHTkVEX0lOVCwga1BhdGhzLCBw
YXRoIC0gMSwgR0xfQ09VTlRfVVBfQ0hST01JVU0sIDB4N0YsCisgICAgICAgIEdMX0JPVU5ESU5H
X0JPWF9PRl9CT1VORElOR19CT1hFU19DSFJPTUlVTSwgR0xfVFJBTlNMQVRFXzJEX0NIUk9NSVVN
LCBrVHJhbnNmb3Jtcyk7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIGdsRGVs
ZXRlUGF0aHNDSFJPTUlVTShwYXRoLCAxKTsKKworICAgIC8vIFZlcmlmeSB0aGUgaW1hZ2UuCisg
ICAgdmVyaWZ5VGVzdFBhdHRlcm5GaWxsKDAuMGYsIDAuMGYpOworICAgIHZlcmlmeVRlc3RQYXR0
ZXJuQmcoMC4wZiwgMC4wZik7CisgICAgdmVyaWZ5VGVzdFBhdHRlcm5TdHJva2UoMC4wZiwgMC4w
Zik7CisKKyAgICB2ZXJpZnlUZXN0UGF0dGVybkZpbGwoa1NoYXBlU2l6ZSwgMC4wZik7CisgICAg
dmVyaWZ5VGVzdFBhdHRlcm5CZyhrU2hhcGVTaXplLCAwLjBmKTsKKyAgICB2ZXJpZnlUZXN0UGF0
dGVyblN0cm9rZShrU2hhcGVTaXplLCAwLjBmKTsKKworICAgIHZlcmlmeVRlc3RQYXR0ZXJuRmls
bChrU2hhcGVTaXplICogMiwgMC4wZik7CisgICAgdmVyaWZ5VGVzdFBhdHRlcm5CZyhrU2hhcGVT
aXplICogMiwgMC4wZik7CisgICAgdmVyaWZ5VGVzdFBhdHRlcm5TdHJva2Uoa1NoYXBlU2l6ZSAq
IDIsIDAuMGYpOworCisgICAgdmVyaWZ5VGVzdFBhdHRlcm5GaWxsKDAuMGYsIGtTaGFwZVNpemUp
OworICAgIHZlcmlmeVRlc3RQYXR0ZXJuQmcoMC4wZiwga1NoYXBlU2l6ZSk7CisgICAgdmVyaWZ5
VGVzdFBhdHRlcm5TdHJva2UoMC4wZiwga1NoYXBlU2l6ZSk7CisKKyAgICB2ZXJpZnlUZXN0UGF0
dGVybkZpbGwoa1NoYXBlU2l6ZSwga1NoYXBlU2l6ZSk7CisgICAgdmVyaWZ5VGVzdFBhdHRlcm5C
ZyhrU2hhcGVTaXplLCBrU2hhcGVTaXplKTsKKyAgICB2ZXJpZnlUZXN0UGF0dGVyblN0cm9rZShr
U2hhcGVTaXplLCBrU2hhcGVTaXplKTsKK30KKworCisvLyBUaGlzIGNsYXNzIGltcGxlbWVudHMg
YSB0ZXN0IHRoYXQgZHJhd3MgYSBncmlkIG9mIHYtc2hhcGVzLiBUaGUgZ3JpZCBpcworLy8gZHJh
d24gc28gdGhhdCBldmVuIHJvd3MgKGZyb20gdGhlIGJvdHRvbSkgYXJlIGRyYXduIHdpdGggRHJh
d0FycmF5cyBhbmQgb2RkCisvLyByb3dzIGFyZSBkcmF3biB3aXRoIHBhdGggcmVuZGVyaW5nLiAg
SXQgY2FuIGJlIHVzZWQgdG8gdGVzdCB2YXJpb3VzIHRleHR1cmluZworLy8gbW9kZXMsIGNvbXBh
cmluZyBob3cgdGhlIGZpbGwgd291bGQgd29yayBpbiBub3JtYWwgR0wgcmVuZGVyaW5nIGFuZCBo
b3cgdG8KKy8vIHNldHVwIHNhbWUgc29ydCBvZiBmaWxsIHdpdGggcGF0aCByZW5kZXJpbmcuCisv
LyBUaGUgdGV4dHVyaW5nIHRlc3QgaXMgcGFyYW1ldHJpemVkIHRvIHJ1biB0aGUgdGVzdCB3aXRo
IGFuZCB3aXRob3V0CisvLyBBTkdMRSBuYW1lIGhhc2hpbmcuCitjbGFzcyBDSFJPTUlVTVBhdGhS
ZW5kZXJpbmdXaXRoVGV4dHVyaW5nVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJvdGVj
dGVkOgorICAgIENIUk9NSVVNUGF0aFJlbmRlcmluZ1dpdGhUZXh0dXJpbmdUZXN0KCkgOiBtUHJv
Z3JhbSgwKQorICAgIHsKKyAgICAgICAgc2V0V2luZG93V2lkdGgoa1Jlc29sdXRpb24pOworICAg
ICAgICBzZXRXaW5kb3dIZWlnaHQoa1Jlc29sdXRpb24pOworICAgICAgICBzZXRDb25maWdSZWRC
aXRzKDgpOworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZp
Z0JsdWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgICAgIHNl
dENvbmZpZ0RlcHRoQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnU3RlbmNpbEJpdHMoOCk7Cisg
ICAgfQorCisgICAgYm9vbCBpc0FwcGxpY2FibGUoKSBjb25zdCB7IHJldHVybiBleHRlbnNpb25F
bmFibGVkKCJHTF9DSFJPTUlVTV9wYXRoX3JlbmRlcmluZyIpOyB9CisKKyAgICB2b2lkIFRlYXJE
b3duKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmIChtUHJvZ3JhbSkKKyAgICAgICAgewor
ICAgICAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICAgICAgICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOworICAgICAgICB9CisKKyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93
bigpOworICAgIH0KKworICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAg
QU5HTEVUZXN0OjpTZXRVcCgpOworICAgICAgICBtQmluZFVuaWZvcm1Mb2NhdGlvbiA9IHJlaW50
ZXJwcmV0X2Nhc3Q8UEZOR0xCSU5EVU5JRk9STUxPQ0FUSU9OQ0hST01JVU1QUk9DPigKKyAgICAg
ICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTSIp
KTsKKyAgICB9CisKKyAgICAvLyBTZXRzIHVwIHRoZSBHTCBwcm9ncmFtIHN0YXRlIGZvciB0aGUg
dGVzdC4KKyAgICAvLyBWZXJ0ZXggc2hhZGVyIG5lZWRzIGF0IGxlYXN0IGZvbGxvd2luZyB2YXJp
YWJsZXM6CisgICAgLy8gIHVuaWZvcm0gbWF0NCB2aWV3X21hdHJpeDsKKyAgICAvLyAgdW5pZm9y
bSBtYXQ/IGNvbG9yX21hdHJpeDsgKGFjY2Vzc2libGUgd2l0aCBrQ29sb3JNYXRyaXhMb2NhdGlv
bikKKyAgICAvLyAgdW5pZm9ybSB2ZWMyIG1vZGVsX3RyYW5zbGF0ZTsKKyAgICAvLyAgYXR0cmli
dXRlIHZlYzIgcG9zaXRpb247CisgICAgLy8gIHZhcnlpbmcgdmVjNCBjb2xvcjsKKyAgICAvLwor
ICAgIC8vIEZyYWdtZW50IHNoYWRlciBuZWVkcyBhdCBsZWFzdCBmb2xsb3dpbmcgdmFyaWFibGVz
OgorICAgIC8vICB2YXJ5aW5nIHZlYzQgY29sb3I7CisgICAgLy8KKyAgICAvLyAgKD8gY2FuIGJl
IGFueXRoaW5nKQorICAgIHZvaWQgY29tcGlsZVByb2dyYW0oY29uc3QgY2hhciAqdmVydGV4U2hh
ZGVyU291cmNlLCBjb25zdCBjaGFyICpmcmFnbWVudFNoYWRlclNvdXJjZSkKKyAgICB7CisgICAg
ICAgIGdsVmlld3BvcnQoMCwgMCwga1Jlc29sdXRpb24sIGtSZXNvbHV0aW9uKTsKKyAgICAgICAg
Z2xDbGVhckNvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYpOworICAgICAgICBnbFN0ZW5jaWxN
YXNrKDB4ZmZmZmZmZmYpOworICAgICAgICBnbENsZWFyU3RlbmNpbCgwKTsKKyAgICAgICAgZ2xD
bGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKKyAgICAg
ICAgZ2xFbmFibGUoR0xfQkxFTkQpOworICAgICAgICBnbEJsZW5kRnVuYyhHTF9TUkNfQUxQSEEs
IEdMX09ORV9NSU5VU19TUkNfQUxQSEEpOworCisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigp
OworCisgICAgICAgIEdMdWludCB2U2hhZGVyID0gY29tcGlsZVNoYWRlcihHTF9WRVJURVhfU0hB
REVSLCB2ZXJ0ZXhTaGFkZXJTb3VyY2UpOworICAgICAgICBHTHVpbnQgZlNoYWRlciA9IGNvbXBp
bGVTaGFkZXIoR0xfRlJBR01FTlRfU0hBREVSLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAg
ICAgIEFTU0VSVF9ORSgwdSwgdlNoYWRlcik7CisgICAgICAgIEFTU0VSVF9ORSgwdSwgZlNoYWRl
cik7CisKKyAgICAgICAgbVByb2dyYW0gPSBnbENyZWF0ZVByb2dyYW0oKTsKKworICAgICAgICBn
bEF0dGFjaFNoYWRlcihtUHJvZ3JhbSwgdlNoYWRlcik7CisgICAgICAgIGdsQXR0YWNoU2hhZGVy
KG1Qcm9ncmFtLCBmU2hhZGVyKTsKKyAgICAgICAgZ2xEZWxldGVTaGFkZXIodlNoYWRlcik7Cisg
ICAgICAgIGdsRGVsZXRlU2hhZGVyKGZTaGFkZXIpOworCisgICAgICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOworICAgIH0KKworICAgIHZvaWQgYmluZFByb2dyYW0oKQorICAgIHsKKyAgICAgICAg
Z2xCaW5kQXR0cmliTG9jYXRpb24obVByb2dyYW0sIGtQb3NpdGlvbkxvY2F0aW9uLCAicG9zaXRp
b24iKTsKKyAgICAgICAgbUJpbmRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sIGtWaWV3TWF0cml4
TG9jYXRpb24sICJ2aWV3X21hdHJpeCIpOworICAgICAgICBtQmluZFVuaWZvcm1Mb2NhdGlvbiht
UHJvZ3JhbSwga0NvbG9yTWF0cml4TG9jYXRpb24sICJjb2xvcl9tYXRyaXgiKTsKKyAgICAgICAg
bUJpbmRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sIGtNb2RlbFRyYW5zbGF0ZUxvY2F0aW9uLCAi
bW9kZWxfdHJhbnNsYXRlIik7CisgICAgICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNI
Uk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JGcmFnbWVudElucHV0TG9jYXRpb24sICJjb2xvciIpOwor
CisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIH0KKworICAgIGJvb2wgbGlua1By
b2dyYW0oKQorICAgIHsKKyAgICAgICAgZ2xMaW5rUHJvZ3JhbShtUHJvZ3JhbSk7CisKKyAgICAg
ICAgR0xpbnQgbGlua2VkID0gMDsKKyAgICAgICAgZ2xHZXRQcm9ncmFtaXYobVByb2dyYW0sIEdM
X0xJTktfU1RBVFVTLCAmbGlua2VkKTsKKyAgICAgICAgaWYgKGxpbmtlZCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiAobGlua2VkID09IDEpOworICAgIH0KKworICAgIHZvaWQgZHJhd1Rlc3RQYXR0ZXJu
KCkKKyAgICB7CisgICAgICAgIC8vIFRoaXMgdi1zaGFwZSBpcyB1c2VkIGJvdGggZm9yIERyYXdB
cnJheXMgYW5kIHBhdGggcmVuZGVyaW5nLgorICAgICAgICBzdGF0aWMgY29uc3QgR0xmbG9hdCBr
VmVydGljZXNbXSA9IHs3NS4wZiwgNzUuMGYsIDUwLjBmLCAyNS41ZiwgNTAuMGYsIDUwLjBmLCAy
NS4wZiwgNzUuMGZ9OworCisgICAgICAgIEdMdWludCB2Ym8gPSAwOworICAgICAgICBnbEdlbkJ1
ZmZlcnMoMSwgJnZibyk7CisgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIHZi
byk7CisgICAgICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIHNpemVvZihrVmVydGlj
ZXMpLCBrVmVydGljZXMsIEdMX1NUQVRJQ19EUkFXKTsKKyAgICAgICAgZ2xFbmFibGVWZXJ0ZXhB
dHRyaWJBcnJheShrUG9zaXRpb25Mb2NhdGlvbik7CisgICAgICAgIGdsVmVydGV4QXR0cmliUG9p
bnRlcihrUG9zaXRpb25Mb2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCAwKTsKKwor
ICAgICAgICAvLyBTZXR1cCBzdGF0ZSBmb3IgZHJhd2luZyB0aGUgc2hhcGUgd2l0aCBwYXRoIHJl
bmRlcmluZy4KKyAgICAgICAgZ2xQYXRoU3RlbmNpbEZ1bmNDSFJPTUlVTShHTF9BTFdBWVMsIDAs
IDB4N0YpOworICAgICAgICBnbFN0ZW5jaWxGdW5jKEdMX0xFU1MsIDAsIDB4N0YpOworICAgICAg
ICBnbFN0ZW5jaWxPcChHTF9LRUVQLCBHTF9LRUVQLCBHTF9aRVJPKTsKKyAgICAgICAgZ2xNYXRy
aXhMb2FkZkNIUk9NSVVNKEdMX1BBVEhfUFJPSkVDVElPTl9DSFJPTUlVTSwga1Byb2plY3Rpb25N
YXRyaXgpOworICAgICAgICBnbE1hdHJpeExvYWRJZGVudGl0eUNIUk9NSVVNKEdMX1BBVEhfTU9E
RUxWSUVXX0NIUk9NSVVNKTsKKworICAgICAgICBzdGF0aWMgY29uc3QgR0x1Ynl0ZSBrQ29tbWFu
ZHNbXSA9IHtHTF9NT1ZFX1RPX0NIUk9NSVVNLCBHTF9MSU5FX1RPX0NIUk9NSVVNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9MSU5FX1RPX0NIUk9NSVVN
LCBHTF9MSU5FX1RPX0NIUk9NSVVNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9DTE9TRV9QQVRIX0NIUk9NSVVNfTsKKworICAgICAgICBzdGF0aWMgY29u
c3QgR0xmbG9hdCBrQ29vcmRzW10gPSB7CisgICAgICAgICAgICBrVmVydGljZXNbMF0sIGtWZXJ0
aWNlc1sxXSwga1ZlcnRpY2VzWzJdLCBrVmVydGljZXNbM10sCisgICAgICAgICAgICBrVmVydGlj
ZXNbNl0sIGtWZXJ0aWNlc1s3XSwga1ZlcnRpY2VzWzRdLCBrVmVydGljZXNbNV0sCisgICAgICAg
IH07CisKKyAgICAgICAgR0x1aW50IHBhdGggPSBnbEdlblBhdGhzQ0hST01JVU0oMSk7CisgICAg
ICAgIGdsUGF0aENvbW1hbmRzQ0hST01JVU0ocGF0aCwgc3RhdGljX2Nhc3Q8R0xzaXplaT4oQXJy
YXlTaXplKGtDb21tYW5kcykpLCBrQ29tbWFuZHMsCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxH
THNpemVpPihBcnJheVNpemUoa0Nvb3JkcykpLCBHTF9GTE9BVCwga0Nvb3Jkcyk7CisgICAgICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgICAgIEdMZmxvYXQgcGF0aF9tb2RlbF90cmFu
c2xhdGVbMTZdID0geworICAgICAgICAgICAgMS4wZiwgMC4wZiwgMC4wZiwgMC4wZiwgMC4wZiwg
MS4wZiwgMC4wZiwgMC4wZiwKKyAgICAgICAgICAgIDAuMGYsIDAuMGYsIDEuMGYsIDAuMGYsIDAu
MGYsIDAuMGYsIDAuMGYsIDEuMGYsCisgICAgICAgIH07CisKKyAgICAgICAgLy8gRHJhd3MgdGhl
IHNoYXBlcy4gRXZlcnkgZXZlbiByb3cgZnJvbSB0aGUgYm90dG9tIGlzIGRyYXduIHdpdGgKKyAg
ICAgICAgLy8gRHJhd0FycmF5cywgb2RkIHJvdyB3aXRoIHBhdGggcmVuZGVyaW5nLiBUaGUgc2hh
ZGVyIHByb2dyYW0gaXMKKyAgICAgICAgLy8gdGhlIHNhbWUgZm9yIHRoZSBib3RoIGRyYXdzLgor
ICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGtUZXN0Um93czsgKytqKQorICAgICAgICB7Cisg
ICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGtUZXN0Q29sdW1uczsgKytpKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGlmIChqICUgMiA9PSAwKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgZ2xEaXNhYmxlKEdMX1NURU5DSUxfVEVTVCk7CisgICAg
ICAgICAgICAgICAgICAgIGdsVW5pZm9ybTJmKGtNb2RlbFRyYW5zbGF0ZUxvY2F0aW9uLCBzdGF0
aWNfY2FzdDxHTGZsb2F0PihpICoga1NoYXBlV2lkdGgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxHTGZsb2F0PihqICoga1NoYXBlSGVpZ2h0KSk7CisgICAg
ICAgICAgICAgICAgICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRV9TVFJJUCwgMCwgNCk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIGdsRW5hYmxlKEdMX1NURU5DSUxfVEVTVCk7CisgICAgICAg
ICAgICAgICAgICAgIHBhdGhfbW9kZWxfdHJhbnNsYXRlWzEyXSA9IHN0YXRpY19jYXN0PEdMZmxv
YXQ+KGkgKiBrU2hhcGVXaWR0aCk7CisgICAgICAgICAgICAgICAgICAgIHBhdGhfbW9kZWxfdHJh
bnNsYXRlWzEzXSA9IHN0YXRpY19jYXN0PEdMZmxvYXQ+KGogKiBrU2hhcGVIZWlnaHQpOworICAg
ICAgICAgICAgICAgICAgICBnbE1hdHJpeExvYWRmQ0hST01JVU0oR0xfUEFUSF9NT0RFTFZJRVdf
Q0hST01JVU0sIHBhdGhfbW9kZWxfdHJhbnNsYXRlKTsKKyAgICAgICAgICAgICAgICAgICAgZ2xT
dGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTShwYXRoLCBHTF9DT1VOVF9VUF9DSFJPTUlV
TSwgMHg3RiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9CT1VORElOR19CT1hfQ0hST01JVU0pOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKwor
ICAgICAgICBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShrUG9zaXRpb25Mb2NhdGlvbik7Cisg
ICAgICAgIGdsRGVsZXRlQnVmZmVycygxLCAmdmJvKTsKKyAgICAgICAgZ2xEZWxldGVQYXRoc0NI
Uk9NSVVNKHBhdGgsIDEpOworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICB9CisK
KyAgICBlbnVtCisgICAgeworICAgICAgICBrU2hhcGVXaWR0aCAgPSA3NSwKKyAgICAgICAga1No
YXBlSGVpZ2h0ID0gNzUsCisgICAgICAgIGtUZXN0Um93cyAgICA9IGtSZXNvbHV0aW9uIC8ga1No
YXBlSGVpZ2h0LAorICAgICAgICBrVGVzdENvbHVtbnMgPSBrUmVzb2x1dGlvbiAvIGtTaGFwZVdp
ZHRoLAorICAgIH07CisKKyAgICB0eXBlZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBGTkdMQklORFVO
SUZPUk1MT0NBVElPTkNIUk9NSVVNUFJPQykoR0x1aW50IG1Qcm9ncmFtLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKTsKKyAgICBQRk5H
TEJJTkRVTklGT1JNTE9DQVRJT05DSFJPTUlVTVBST0MgbUJpbmRVbmlmb3JtTG9jYXRpb24gPSBu
dWxscHRyOworCisgICAgR0x1aW50IG1Qcm9ncmFtOworCisgICAgLy8gVGhpcyB1bmlmb3JtIGJl
IGNhbiBzZXQgYnkgdGhlIHRlc3QuIEl0IHNob3VsZCBiZSB1c2VkIHRvIHNldCB0aGUgY29sb3Ig
Zm9yCisgICAgLy8gZHJhd2luZyB3aXRoIERyYXdBcnJheXMuCisgICAgc3RhdGljIGNvbnN0IEdM
aW50IGtDb2xvck1hdHJpeExvY2F0aW9uID0gNDsKKworICAgIC8vIFRoaXMgZnJhZ21lbnQgaW5w
dXQgY2FuIGJlIHNldCBieSB0aGUgdGVzdC4gSXQgc2hvdWxkIGJlIHVzZWQgdG8gc2V0IHRoZQor
ICAgIC8vIGNvbG9yIGZvciBkcmF3aW5nIHdpdGggcGF0aCByZW5kZXJpbmcuCisgICAgc3RhdGlj
IGNvbnN0IEdMaW50IGtDb2xvckZyYWdtZW50SW5wdXRMb2NhdGlvbiA9IDc7CisKKyAgICBzdGF0
aWMgY29uc3QgR0xpbnQga01vZGVsVHJhbnNsYXRlTG9jYXRpb24gPSAzOworICAgIHN0YXRpYyBj
b25zdCBHTGludCBrUG9zaXRpb25Mb2NhdGlvbiAgICAgICA9IDA7CisgICAgc3RhdGljIGNvbnN0
IEdMaW50IGtWaWV3TWF0cml4TG9jYXRpb24gICAgID0gNzsKK307CisKKy8vIFRlc3Qgc3VjY2Vz
cyBhbmQgZXJyb3IgY2FzZXMgZm9yIGJpbmRpbmcgZnJhZ21lbnQgaW5wdXQgbG9jYXRpb24uCitU
RVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5nV2l0aFRleHR1cmluZ1Rlc3QsIFRlc3RCaW5kRnJh
Z21lbnRJbnB1dExvY2F0aW9uKQoreworICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIC8vIG9yaWdpbmFsIE5WX3BhdGhfcmVuZGVyaW5nIHNwZWNpZmljYXRp
b24gZG9lc24ndCBkZWZpbmUgd2hldGhlciB0aGUKKyAgICAvLyBmcmFnbWVudCBzaGFkZXIgaW5w
dXQgdmFyaWFibGVzIHNob3VsZCBiZSBkZWZpbmVkIGluIHRoZSB2ZXJ0ZXggc2hhZGVyIG9yCisg
ICAgLy8gbm90LiBJbiBmYWN0IGl0IGRvZXNuJ3QgZXZlbiByZXF1aXJlIGEgdmVydGV4IHNoYWRl
ci4KKyAgICAvLyBIb3dldmVyIHRoZSBHTEVTMy4xIHNwZWMgYmFzaWNhbGx5IHNheXMgdGhhdCBm
cmFnbWVudCBpbnB1dHMgYXJlCisgICAgLy8gZWl0aGVyIGJ1aWx0LWlucyBvciBjb21lIGZyb20g
dGhlIHByZXZpb3VzIHNoYWRlciBzdGFnZS4KKyAgICAvLyAowqcgMTQuMSwgRnJhZ21lbnQgU2hh
ZGVyIFZhcmlhYmxlcykuCisgICAgLy8gQWRkaXRpb25hbGx5IHRoZXJlIGFyZSBtYW55IHBsYWNl
cyB0aGF0IGFyZSBiYXNlZCBvbiB0aGUgYXNzdW1wdGlvbiBvZiBoYXZpbmcKKyAgICAvLyBhIHZl
cnRleCBzaGFkZXIgKGNvbW1hbmQgYnVmZmVyLCBhbmdsZSkgc28gd2UncmUgZ29pbmcgdG8gc3Rp
Y2sgdG8gdGhlIHNhbWUKKyAgICAvLyBzZW1hbnRpY3MgYW5kIHJlcXVpcmUgYSB2ZXJ0ZXggc2hh
ZGVyIGFuZCB0byBoYXZlIHRoZSB2ZXJ0ZXggc2hhZGVyIGRlZmluZSB0aGUKKyAgICAvLyB2YXJ5
aW5nIGZyYWdtZW50IHNoYWRlciBpbnB1dC4KKworICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAg
ICBjb25zdCBjaGFyKiBrVmVydGV4U2hhZGVyU291cmNlID0KKyAgICAgICAidmFyeWluZyB2ZWM0
IGNvbG9yO1xuIgorICAgICAgICJ2b2lkIG1haW4oKSB7fVxuIjsKKworICAgIGNvbnN0IGNoYXIq
IGtGcmFnbWVudFNoYWRlclNvdXJjZSA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDtcbiIKKyAgICAgICAgInZhcnlpbmcgdmVjNCBjb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFp
bigpIHtcbiIKKyAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgorICAgICAg
ICAifVxuIjsKKworICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorICAgIGNvbXBpbGVQcm9ncmFtKGtW
ZXJ0ZXhTaGFkZXJTb3VyY2UsIGtGcmFnbWVudFNoYWRlclNvdXJjZSk7CisKKyAgICBlbnVtIGtC
aW5kTG9jYXRpb25zCisgICAgeworICAgICAgICBrQ29sb3JMb2NhdGlvbiAgICAgPSA1LAorICAg
ICAgICBrRnJhZ0NvbG9yTG9jYXRpb24gPSA2CisgICAgfTsKKworICAgIC8vIHN1Y2Nlc3NmdWwg
YmluZC4KKyAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSwg
a0NvbG9yTG9jYXRpb24sICJjb2xvciIpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisg
ICAgLy8gYW55IG5hbWUgY2FuIGJlIGJvdW5kIGFuZCBuYW1lcyB0aGF0IGRvIG5vdCBhY3R1YWxs
eSBleGlzdCBpbiB0aGUgcHJvZ3JhbSBhZnRlcgorICAgIC8vIGxpbmtpbmcgYXJlIGlnbm9yZWQu
CisgICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0obVByb2dyYW0sIGtDb2xv
ckxvY2F0aW9uLCAiZG9lc250X2V4aXN0Iik7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisK
KyAgICAvLyBpbGxlZ2FsIHByb2dyYW0KKyAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25D
SFJPTUlVTShtUHJvZ3JhbSArIDEsIGtDb2xvckxvY2F0aW9uLCAiY29sb3IiKTsKKyAgICBFWFBF
Q1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgLy8gaWxsZWdhbCBiaW5k
IChidWlsdC1pbikKKyAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTShtUHJv
Z3JhbSwga0ZyYWdDb2xvckxvY2F0aW9uLCAiZ2xfRnJhZ0NvbG9yIik7CisgICAgRVhQRUNUX0dM
X0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKworICAgIGdsQmluZEZyYWdtZW50SW5wdXRM
b2NhdGlvbkNIUk9NSVVNKG1Qcm9ncmFtLCBrRnJhZ0NvbG9yTG9jYXRpb24sIE5VTEwpOworICAg
IEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKKworICAgIGdsQmluZEZyYWdtZW50
SW5wdXRMb2NhdGlvbkNIUk9NSVVNKG1Qcm9ncmFtLCAweGZmZmZmZiwgImNvbG9yIik7CisgICAg
RVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOworCisgICAgQVNTRVJUX1RSVUUobGlu
a1Byb2dyYW0oKSA9PSB0cnVlKTsKKworICAgIGNvbnN0IEdMZmxvYXQga0NvZWZmaWNpZW50czE2
W10gPSB7MS4wZiwgMi4wZiwgIDMuMGYsICA0LjBmLCAgNS4wZiwgIDYuMGYsICA3LjBmLCAgOC4w
ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuMGYsIDEwLjBmLCAx
MS4wZiwgMTIuMGYsIDEzLjBmLCAxNC4wZiwgMTUuMGYsIDE2LjBmfTsKKworICAgIGdsUHJvZ3Jh
bVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIGtDb2xvckxvY2F0aW9uLCBH
TF9FWUVfTElORUFSX0NIUk9NSVVNLCA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAga0NvZWZmaWNpZW50czE2KTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
KworICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIC0x
LCBHTF9FWUVfTElORUFSX0NIUk9NSVVNLCA0LCBrQ29lZmZpY2llbnRzMTYpOworICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOworfQorCisvLyBUZXN0IGZyYWdtZW50IGlucHV0IGludGVycG9sYXRp
b24gaW4gQ0hST01JVU1fRVlFIGNvb3JkaW5hdGVzLgorVEVTVF9QKENIUk9NSVVNUGF0aFJlbmRl
cmluZ1dpdGhUZXh0dXJpbmdUZXN0LCBUZXN0UHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hS
T01JVU1fRVlFKQoreworICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgICBjb25zdCBjaGFyICprVmVydGV4U2hhZGVy
U291cmNlID0KKyAgICAgICAgInVuaWZvcm0gbWF0NCB2aWV3X21hdHJpeDtcbiIKKyAgICAgICAg
InVuaWZvcm0gbWF0NCBjb2xvcl9tYXRyaXg7XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzIgbW9k
ZWxfdHJhbnNsYXRlO1xuIgorICAgICAgICAiYXR0cmlidXRlIHZlYzIgcG9zaXRpb247XG4iCisg
ICAgICAgICJ2YXJ5aW5nIHZlYzMgY29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4i
CisgICAgICAgICIgIHZlYzQgcCA9IHZlYzQobW9kZWxfdHJhbnNsYXRlICsgcG9zaXRpb24sIDEu
MCwgMS4wKTtcbiIKKyAgICAgICAgIiAgY29sb3IgPSAoY29sb3JfbWF0cml4ICogcCkucmdiO1xu
IgorICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IHZpZXdfbWF0cml4ICogcDtcbiIKKyAgICAgICAg
In1cbiI7CisKKyAgICBjb25zdCBjaGFyICprRnJhZ21lbnRTaGFkZXJTb3VyY2UgPQorICAgICAg
ICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ2YXJ5aW5nIHZlYzMgY29s
b3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgIGdsX0ZyYWdDb2xv
ciA9IHZlYzQoY29sb3IsIDEuMCk7XG4iCisgICAgICAgICJ9XG4iOworICAgIC8vIGNsYW5nLWZv
cm1hdCBvbgorCisgICAgY29tcGlsZVByb2dyYW0oa1ZlcnRleFNoYWRlclNvdXJjZSwga0ZyYWdt
ZW50U2hhZGVyU291cmNlKTsKKyAgICBiaW5kUHJvZ3JhbSgpOworICAgIEFTU0VSVF9UUlVFKGxp
bmtQcm9ncmFtKCkgPT0gdHJ1ZSk7CisKKyAgICBnbFVuaWZvcm1NYXRyaXg0ZnYoa1ZpZXdNYXRy
aXhMb2NhdGlvbiwgMSwgR0xfRkFMU0UsIGtQcm9qZWN0aW9uTWF0cml4KTsKKworICAgIHN0YXRp
YyBjb25zdCBHTGZsb2F0IGtDb2xvck1hdHJpeFsxNl0gPSB7CisgICAgICAgIDEuMGYgLyBrUmVz
b2x1dGlvbiwgMC4wZiwgMC4wZiwgMC4wZiwKKyAgICAgICAgMC4wZiwgMS4wZiAvIGtSZXNvbHV0
aW9uLCAwLjBmLCAwLjBmLAorICAgICAgICAwLjBmLCAwLjBmLCAwLjBmLCAwLjBmLAorICAgICAg
ICAwLjBmLCAwLjBmLCAwLjBmLCAwLjBmfTsKKworICAgIGdsVW5pZm9ybU1hdHJpeDRmdihrQ29s
b3JNYXRyaXhMb2NhdGlvbiwgMSwgR0xfRkFMU0UsIGtDb2xvck1hdHJpeCk7CisKKyAgICAvLyBU
aGlzIGlzIHRoZSBmdW5jdGlvbmFsaXR5IHdlIGFyZSB0ZXN0aW5nOiBQcm9ncmFtUGF0aEZyYWdt
ZW50SW5wdXRHZW4KKyAgICAvLyBkb2VzIHRoZSBzYW1lIHdvcmsgYXMgdGhlIGNvbG9yIHRyYW5z
Zm9ybSBpbiB2ZXJ0ZXggc2hhZGVyLgorICAgIHN0YXRpYyBjb25zdCBHTGZsb2F0IGtDb2xvckNv
ZWZmaWNpZW50c1sxMl0gPSB7CisgICAgICAgIDEuMGYgLyBrUmVzb2x1dGlvbiwgMC4wZiwgMC4w
ZiwKKyAgICAgICAgMC4wZiwgMC4wZiwgMS4wZiAvIGtSZXNvbHV0aW9uLAorICAgICAgICAwLjBm
LCAwLjBmLCAwLjBmLAorICAgICAgICAwLjBmLCAwLjBmLCAwLjBmfTsKKyAgICBnbFByb2dyYW1Q
YXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JGcmFnbWVudElucHV0
TG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9F
WUVfTElORUFSX0NIUk9NSVVNLCAzLCBrQ29sb3JDb2VmZmljaWVudHMpOworICAgIEFTU0VSVF9H
TF9OT19FUlJPUigpOworCisgICAgZHJhd1Rlc3RQYXR0ZXJuKCk7CisKKyAgICBjb25zdCBHTGZs
b2F0IGtGaWxsQ29vcmRzWzZdID0gezU5LjBmLCA1MC4wZiwgNTAuMGYsIDI4LjBmLCA2Ni4wZiwg
NjMuMGZ9OworCisgICAgZm9yIChpbnQgaiA9IDA7IGogPCBrVGVzdFJvd3M7ICsraikKKyAgICB7
CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwga1Rlc3RDb2x1bW5zOyArK2kpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgQXJyYXlTaXplKGtGaWxsQ29v
cmRzKTsgayArPSAyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0
IGZ4ID0ga0ZpbGxDb29yZHNba107CisgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgZnkgPSBr
RmlsbENvb3Jkc1trICsgMV07CisgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgcHggPSBzdGF0
aWNfY2FzdDxmbG9hdD4oaSAqIGtTaGFwZVdpZHRoKTsKKyAgICAgICAgICAgICAgICBjb25zdCBm
bG9hdCBweSA9IHN0YXRpY19jYXN0PGZsb2F0PihqICoga1NoYXBlSGVpZ2h0KTsKKworICAgICAg
ICAgICAgICAgIGFuZ2xlOjpHTENvbG9yIGNvbG9yOworICAgICAgICAgICAgICAgIGNvbG9yLlIg
PSBzdGF0aWNfY2FzdDxHTHVieXRlPihzdGQ6OnJvdW5kZigocHggKyBmeCkgLyBrUmVzb2x1dGlv
biAqIDI1NS4wZikpOworICAgICAgICAgICAgICAgIGNvbG9yLkcgPSBzdGF0aWNfY2FzdDxHTHVi
eXRlPihzdGQ6OnJvdW5kZigocHkgKyBmeSkgLyBrUmVzb2x1dGlvbiAqIDI1NS4wZikpOworICAg
ICAgICAgICAgICAgIGNvbG9yLkIgPSAwOworICAgICAgICAgICAgICAgIGNvbG9yLkEgPSAyNTU7
CisgICAgICAgICAgICAgICAgQ2hlY2tQaXhlbHMoc3RhdGljX2Nhc3Q8R0xpbnQ+KHB4ICsgZngp
LCBzdGF0aWNfY2FzdDxHTGludD4ocHkgKyBmeSksIDEsIDEsIDIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29sb3IpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQor
CisvLyBUZXN0IGZyYWdtZW50IGlucHV0IGludGVycG9sYXRpb24gaW4gQ0hST01JVU1fT0JKRUNU
IGNvb3JkaW5hdGVzLgorVEVTVF9QKENIUk9NSVVNUGF0aFJlbmRlcmluZ1dpdGhUZXh0dXJpbmdU
ZXN0LCBUZXN0UHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU1fT0JKRUNUKQorewor
ICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIGNsYW5n
LWZvcm1hdCBvZmYKKyAgICBjb25zdCBjaGFyICprVmVydGV4U2hhZGVyU291cmNlID0KKyAgICAg
ICAgInVuaWZvcm0gbWF0NCB2aWV3X21hdHJpeDtcbiIKKyAgICAgICAgInVuaWZvcm0gbWF0NCBj
b2xvcl9tYXRyaXg7XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzIgbW9kZWxfdHJhbnNsYXRlO1xu
IgorICAgICAgICAiYXR0cmlidXRlIHZlYzIgcG9zaXRpb247XG4iCisgICAgICAgICJ2YXJ5aW5n
IHZlYzMgY29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgIGNv
bG9yID0gKGNvbG9yX21hdHJpeCAqIHZlYzQocG9zaXRpb24sIDEuMCwgMS4wKSkucmdiO1xuIgor
ICAgICAgICAiICB2ZWM0IHAgPSB2ZWM0KG1vZGVsX3RyYW5zbGF0ZSArIHBvc2l0aW9uLCAxLjAs
IDEuMCk7XG4iCisgICAgICAgICIgIGdsX1Bvc2l0aW9uID0gdmlld19tYXRyaXggKiBwO1xuIgor
ICAgICAgICAifSI7CisKKyAgICBjb25zdCBjaGFyICprRnJhZ21lbnRTaGFkZXJTb3VyY2UgPQor
ICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ2YXJ5aW5nIHZl
YzMgY29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgIGdsX0Zy
YWdDb2xvciA9IHZlYzQoY29sb3IucmdiLCAxLjApO1xuIgorICAgICAgICAifSI7CisgICAgLy8g
Y2xhbmctZm9ybWF0IG9uCisKKyAgICBjb21waWxlUHJvZ3JhbShrVmVydGV4U2hhZGVyU291cmNl
LCBrRnJhZ21lbnRTaGFkZXJTb3VyY2UpOworICAgIGJpbmRQcm9ncmFtKCk7CisgICAgQVNTRVJU
X1RSVUUobGlua1Byb2dyYW0oKSA9PSB0cnVlKTsKKworICAgIGdsVW5pZm9ybU1hdHJpeDRmdihr
Vmlld01hdHJpeExvY2F0aW9uLCAxLCBHTF9GQUxTRSwga1Byb2plY3Rpb25NYXRyaXgpOworCisg
ICAgc3RhdGljIGNvbnN0IEdMZmxvYXQga0NvbG9yTWF0cml4WzE2XSA9IHsKKyAgICAgICAgMS4w
ZiAvIGtTaGFwZVdpZHRoLCAwLjBmLCAwLjBmLCAwLjBmLAorICAgICAgICAwLjBmLCAxLjBmIC8g
a1NoYXBlSGVpZ2h0LCAwLjBmLCAwLjBmLAorICAgICAgICAwLjBmLCAwLjBmLCAwLjBmLCAwLjBm
LAorICAgICAgICAwLjBmLCAwLjBmLCAwLjBmLCAwLjBmIH07CisgICAgZ2xVbmlmb3JtTWF0cml4
NGZ2KGtDb2xvck1hdHJpeExvY2F0aW9uLCAxLCBHTF9GQUxTRSwga0NvbG9yTWF0cml4KTsKKwor
ICAgIC8vIFRoaXMgaXMgdGhlIGZ1bmN0aW9uYWxpdHkgd2UgYXJlIHRlc3Rpbmc6IFByb2dyYW1Q
YXRoRnJhZ21lbnRJbnB1dEdlbgorICAgIC8vIGRvZXMgdGhlIHNhbWUgd29yayBhcyB0aGUgY29s
b3IgdHJhbnNmb3JtIGluIHZlcnRleCBzaGFkZXIuCisgICAgc3RhdGljIGNvbnN0IEdMZmxvYXQg
a0NvbG9yQ29lZmZpY2llbnRzWzldID0geworICAgICAgICAxLjBmIC8ga1NoYXBlV2lkdGgsIDAu
MGYsIDAuMGYsIDAuMGYsIDEuMGYgLyBrU2hhcGVIZWlnaHQsIDAuMGYsIDAuMGYsIDAuMGYsIDAu
MGZ9OworICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0s
IGtDb2xvckZyYWdtZW50SW5wdXRMb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX09CSkVDVF9MSU5FQVJfQ0hST01JVU0sIDMsIGtDb2xvckNvZWZm
aWNpZW50cyk7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIGRyYXdUZXN0UGF0
dGVybigpOworCisgICAgY29uc3QgR0xmbG9hdCBrRmlsbENvb3Jkc1s2XSA9IHs1OS4wZiwgNTAu
MGYsIDUwLjBmLCAyOC4wZiwgNjYuMGYsIDYzLjBmfTsKKworICAgIGZvciAoaW50IGogPSAwOyBq
IDwga1Rlc3RSb3dzOyArK2opCisgICAgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGtU
ZXN0Q29sdW1uczsgKytpKQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBrID0g
MDsgayA8IEFycmF5U2l6ZShrRmlsbENvb3Jkcyk7IGsgKz0gMikKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBjb25zdCBmbG9hdCBmeCA9IGtGaWxsQ29vcmRzW2tdOworICAgICAgICAg
ICAgICAgIGNvbnN0IGZsb2F0IGZ5ID0ga0ZpbGxDb29yZHNbayArIDFdOworICAgICAgICAgICAg
ICAgIGNvbnN0IGZsb2F0IHB4ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGkgKiBrU2hhcGVXaWR0aCk7
CisgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgcHkgPSBzdGF0aWNfY2FzdDxmbG9hdD4oaiAq
IGtTaGFwZUhlaWdodCk7CisKKyAgICAgICAgICAgICAgICBhbmdsZTo6R0xDb2xvciBjb2xvcjsK
KyAgICAgICAgICAgICAgICBjb2xvci5SID0gc3RhdGljX2Nhc3Q8R0x1Ynl0ZT4oc3RkOjpyb3Vu
ZGYoZnggLyBrU2hhcGVXaWR0aCAqIDI1NS4wZikpOworICAgICAgICAgICAgICAgIGNvbG9yLkcg
PSBzdGF0aWNfY2FzdDxHTHVieXRlPihzdGQ6OnJvdW5kZihmeSAvIGtTaGFwZUhlaWdodCAqIDI1
NS4wZikpOworICAgICAgICAgICAgICAgIGNvbG9yLkIgPSAwOworICAgICAgICAgICAgICAgIGNv
bG9yLkEgPSAyNTU7CisgICAgICAgICAgICAgICAgQ2hlY2tQaXhlbHMoc3RhdGljX2Nhc3Q8R0xp
bnQ+KHB4ICsgZngpLCBzdGF0aWNfY2FzdDxHTGludD4ocHkgKyBmeSksIDEsIDEsIDIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorfQorCisvLyBUZXN0IHN1Y2Nlc3MgYW5kIGVycm9yIGNhc2VzIGZvciBzZXR0aW5n
IGludGVycG9sYXRpb24gcGFyYW1ldGVycy4KK1RFU1RfUChDSFJPTUlVTVBhdGhSZW5kZXJpbmdX
aXRoVGV4dHVyaW5nVGVzdCwgVGVzdFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkFyZ3MpCit7
CisgICAgaWYgKCFpc0FwcGxpY2FibGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gY2xh
bmctZm9ybWF0IG9mZgorICAgIGNvbnN0IGNoYXIgKmtWZXJ0ZXhTaGFkZXJTb3VyY2UgPQorICAg
ICAgICAidmFyeWluZyB2ZWMyIHZlYzJfdmFyO1xuIgorICAgICAgICAidmFyeWluZyB2ZWMzIHZl
YzNfdmFyO1xuIgorICAgICAgICAidmFyeWluZyB2ZWM0IHZlYzRfdmFyO1xuIgorICAgICAgICAi
dmFyeWluZyBmbG9hdCBmbG9hdF92YXI7XG4iCisgICAgICAgICJ2YXJ5aW5nIG1hdDIgbWF0Ml92
YXI7XG4iCisgICAgICAgICJ2YXJ5aW5nIG1hdDMgbWF0M192YXI7XG4iCisgICAgICAgICJ2YXJ5
aW5nIG1hdDQgbWF0NF92YXI7XG4iCisgICAgICAgICJhdHRyaWJ1dGUgZmxvYXQgYXZvaWRfb3B0
O1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICB2ZWMyX3ZhciA9IHZl
YzIoMS4wLCAyLjAgKyBhdm9pZF9vcHQpO1xuIgorICAgICAgICAiICB2ZWMzX3ZhciA9IHZlYzMo
MS4wLCAyLjAsIDMuMCArIGF2b2lkX29wdCk7XG4iCisgICAgICAgICIgIHZlYzRfdmFyID0gdmVj
NCgxLjAsIDIuMCwgMy4wLCA0LjAgKyBhdm9pZF9vcHQpO1xuIgorICAgICAgICAiICBmbG9hdF92
YXIgPSA1LjAgKyBhdm9pZF9vcHQ7XG4iCisgICAgICAgICIgIG1hdDJfdmFyID0gbWF0MigyLjAg
KyBhdm9pZF9vcHQpO1xuIgorICAgICAgICAiICBtYXQzX3ZhciA9IG1hdDMoMy4wICsgYXZvaWRf
b3B0KTtcbiIKKyAgICAgICAgIiAgbWF0NF92YXIgPSBtYXQ0KDQuMCArIGF2b2lkX29wdCk7XG4i
CisgICAgICAgICIgIGdsX1Bvc2l0aW9uID0gdmVjNCgxLjApO1xuIgorICAgICAgICAifSI7CisK
KyAgICBjb25zdCBjaGFyKiBrRnJhZ21lbnRTaGFkZXJTb3VyY2UgPQorICAgICAgICAicHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ2YXJ5aW5nIHZlYzIgdmVjMl92YXI7XG4i
CisgICAgICAgICJ2YXJ5aW5nIHZlYzMgdmVjM192YXI7XG4iCisgICAgICAgICJ2YXJ5aW5nIHZl
YzQgdmVjNF92YXI7XG4iCisgICAgICAgICJ2YXJ5aW5nIGZsb2F0IGZsb2F0X3ZhcjtcbiIKKyAg
ICAgICAgInZhcnlpbmcgbWF0MiBtYXQyX3ZhcjtcbiIKKyAgICAgICAgInZhcnlpbmcgbWF0MyBt
YXQzX3ZhcjtcbiIKKyAgICAgICAgInZhcnlpbmcgbWF0NCBtYXQ0X3ZhcjtcbiIKKyAgICAgICAg
InZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh2ZWMyX3Zh
ciwgMCwgMCkgKyB2ZWM0KHZlYzNfdmFyLCAwKSArIHZlYzRfdmFyICsgIgorICAgICAgICAiICAg
ICAgICAgICAgICAgdmVjNChmbG9hdF92YXIpICsgIgorICAgICAgICAiICAgICAgICAgICAgICAg
dmVjNChtYXQyX3ZhclswXVswXSwgbWF0M192YXJbMV1bMV0sIG1hdDRfdmFyWzJdWzJdLCAxKTtc
biIKKyAgICAgICAgIn0iOworICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorCisgICAgZW51bQorICAg
IHsKKyAgICAgICAga1ZlYzJMb2NhdGlvbiA9IDAsCisgICAgICAgIGtWZWMzTG9jYXRpb24sCisg
ICAgICAgIGtWZWM0TG9jYXRpb24sCisgICAgICAgIGtGbG9hdExvY2F0aW9uLAorICAgICAgICBr
TWF0MkxvY2F0aW9uLAorICAgICAgICBrTWF0M0xvY2F0aW9uLAorICAgICAgICBrTWF0NExvY2F0
aW9uLAorICAgIH07CisgICAgc3RydWN0CisgICAgeworICAgICAgICBHTGludCBsb2NhdGlvbjsK
KyAgICAgICAgY29uc3QgY2hhciAqbmFtZTsKKyAgICAgICAgR0xpbnQgY29tcG9uZW50czsKKyAg
ICB9IHZhcmlhYmxlc1tdID0geworICAgICAgICB7a1ZlYzJMb2NhdGlvbiwgInZlYzJfdmFyIiwg
Mn0sCisgICAgICAgIHtrVmVjM0xvY2F0aW9uLCAidmVjM192YXIiLCAzfSwKKyAgICAgICAge2tW
ZWM0TG9jYXRpb24sICJ2ZWM0X3ZhciIsIDR9LAorICAgICAgICB7a0Zsb2F0TG9jYXRpb24sICJm
bG9hdF92YXIiLCAxfSwKKyAgICAgICAgLy8gSWYgYSB2YXJ5aW5nIGlzIG5vdCBzaW5nbGUtcHJl
Y2lzaW9uIGZsb2F0aW5nLXBvaW50IHNjYWxhciBvcgorICAgICAgICAvLyB2ZWN0b3IsIGl0IGFs
d2F5cyBjYXVzZXMgYW4gaW52YWxpZCBvcGVyYXRpb24uCisgICAgICAgIHtrTWF0MkxvY2F0aW9u
LCAibWF0Ml92YXIiLCAtMX0sCisgICAgICAgIHtrTWF0M0xvY2F0aW9uLCAibWF0M192YXIiLCAt
MX0sCisgICAgICAgIHtrTWF0NExvY2F0aW9uLCAibWF0NF92YXIiLCAtMX0sCisgICAgfTsKKwor
ICAgIGNvbXBpbGVQcm9ncmFtKGtWZXJ0ZXhTaGFkZXJTb3VyY2UsIGtGcmFnbWVudFNoYWRlclNv
dXJjZSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IEFycmF5U2l6ZSh2YXJpYWJsZXMp
OyArK2kpCisgICAgeworICAgICAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlV
TShtUHJvZ3JhbSwgdmFyaWFibGVzW2ldLmxvY2F0aW9uLCB2YXJpYWJsZXNbaV0ubmFtZSk7Cisg
ICAgfQorCisgICAgLy8gdGVzdCB0aGF0IHVzaW5nIGludmFsaWQgKG5vdCBsaW5rZWQpIHByb2dy
YW0gaXMgYW4gaW52YWxpZCBvcGVyYXRpb24uCisgICAgLy8gU2VlIHNpbWlsYXIgY2FsbHMgYXQg
dGhlIGVuZCBvZiB0aGUgdGVzdCBmb3IgZGlzY3Vzc2lvbiBhYm91dCB0aGUgYXJndW1lbnRzLgor
ICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIC0xLCBH
TF9OT05FLCAwLCBOVUxMKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOworCisgICAgQVNTRVJUX1RSVUUobGlua1Byb2dyYW0oKSA9PSB0cnVlKTsKKworICAgIGNv
bnN0IEdMZmxvYXQga0NvZWZmaWNpZW50czE2W10gPSB7MS4wZiwgMi4wZiwgIDMuMGYsICA0LjBm
LCAgNS4wZiwgIDYuMGYsICA3LjBmLCAgOC4wZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDkuMGYsIDEwLjBmLCAxMS4wZiwgMTIuMGYsIDEzLjBmLCAxNC4wZiwgMTUu
MGYsIDE2LjBmfTsKKyAgICBjb25zdCBHTGVudW0ga0dlbk1vZGVzW10gPSB7R0xfTk9ORSwgR0xf
RVlFX0xJTkVBUl9DSFJPTUlVTSwgR0xfT0JKRUNUX0xJTkVBUl9DSFJPTUlVTSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09OU1RBTlRfQ0hST01JVU19OworCisgICAgZm9y
IChzaXplX3QgdmFyaWFibGUgPSAwOyB2YXJpYWJsZSA8IEFycmF5U2l6ZSh2YXJpYWJsZXMpOyAr
K3ZhcmlhYmxlKQorICAgIHsKKyAgICAgICAgZm9yIChHTGludCBjb21wb25lbnRzID0gMDsgY29t
cG9uZW50cyA8PSA0OyArK2NvbXBvbmVudHMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAo
c2l6ZV90IGdlbm1vZGUgPSAwOyBnZW5tb2RlIDwgQXJyYXlTaXplKGtHZW5Nb2Rlcyk7ICsrZ2Vu
bW9kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbFByb2dyYW1QYXRoRnJhZ21l
bnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCB2YXJpYWJsZXNbdmFyaWFibGVdLmxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
a0dlbk1vZGVzW2dlbm1vZGVdLCBjb21wb25lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0NvZWZmaWNpZW50czE2KTsKKworICAgICAg
ICAgICAgICAgIGlmIChjb21wb25lbnRzID09IDAgJiYga0dlbk1vZGVzW2dlbm1vZGVdID09IEdM
X05PTkUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFi
bGVzW3ZhcmlhYmxlXS5jb21wb25lbnRzID09IC0xKQorICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBDbGVhcmluZyBhIGZyYWdtZW50IGlucHV0IHRoYXQg
aXMgbm90IHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8vIHBvaW50IHNjYWxhciBvciB2ZWN0b3IgaXMgYW4gaW52YWxpZCBvcGVyYXRpb24uCisgICAg
ICAgICAgICAgICAgICAgICAgICBBU1NFUlRfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2xlYXJpbmcgYSB2
YWxpZCBmcmFnbWVudCBpbnB1dCBpcyBvay4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbXBvbmVudHMgPT0gMCB8fCBrR2VuTW9kZXNb
Z2VubW9kZV0gPT0gR0xfTk9ORSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGNvbXBvbmVudHMgPT0gdmFyaWFibGVzW3ZhcmlhYmxlXS5jb21wb25lbnRzKQor
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZXR0aW5n
IGEgZ2VuZXJhdG9yIGZvciBhIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHNjYWxhciBvciB2ZWN0b3IgZnJhZ21lbnQgaW5wdXQgaXMg
b2suCisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNldHRpbmcgYSBnZW5lcmF0b3Ig
d2hlbiBjb21wb25lbnRzIGRvIG5vdCBtYXRjaCBpcyBhbiBpbnZhbGlkIG9wZXJhdGlvbi4KKyAg
ICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElP
Tik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBlbnVtCisgICAgeworICAgICAgICBrVmFsaWRH
ZW5Nb2RlICAgICAgPSBHTF9DT05TVEFOVF9DSFJPTUlVTSwKKyAgICAgICAga1ZhbGlkQ29tcG9u
ZW50cyAgID0gMywKKyAgICAgICAga0ludmFsaWRHZW5Nb2RlICAgID0gMHhBQiwKKyAgICAgICAg
a0ludmFsaWRDb21wb25lbnRzID0gNSwKKyAgICB9OworCisgICAgLy8gVGhlIGxvY2F0aW9uID09
IC0xIHdvdWxkIG1lYW4gZnJhZ21lbnQgaW5wdXQgd2FzIG9wdGltaXplZCBhd2F5LiBBdCB0aGUK
KyAgICAvLyB0aW1lIG9mIHdyaXRpbmcsIC0xIGNhbiBub3QgaGFwcGVuIGJlY2F1c2UgdGhlIG9u
bHkgd2F5IHRvIG9idGFpbiB0aGUKKyAgICAvLyBsb2NhdGlvbiBudW1iZXJzIGlzIHRocm91Z2gg
YmluZC4gVGVzdCBqdXN0IHRvIGJlIGNvbnNpc3RlbnQuCisgICAgZ2xQcm9ncmFtUGF0aEZyYWdt
ZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwgLTEsIGtWYWxpZEdlbk1vZGUsIGtWYWxpZENv
bXBvbmVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ29l
ZmZpY2llbnRzMTYpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gVGVzdCB0
aGF0IGV2ZW4gdGhvdWdoIHRoZSBzcGVjIHNheXMgbG9jYXRpb24gPT0gLTEgY2F1c2VzIHRoZSBv
cGVyYXRpb24gdG8KKyAgICAvLyBiZSBza2lwcGVkLCB0aGUgdmVyaWZpY2F0aW9uIG9mIG90aGVy
IHBhcmFtZXRlcnMgaXMgc3RpbGwgZG9uZS4gVGhpcyBpcyBhCisgICAgLy8gR0wgcG9saWN5Lgor
ICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIC0xLCBr
SW52YWxpZEdlbk1vZGUsIGtWYWxpZENvbXBvbmVudHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBrQ29lZmZpY2llbnRzMTYpOworICAgIEFTU0VSVF9HTF9FUlJP
UihHTF9JTlZBTElEX0VOVU0pOworCisgICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5D
SFJPTUlVTShtUHJvZ3JhbSwgLTEsIGtJbnZhbGlkR2VuTW9kZSwga0ludmFsaWRDb21wb25lbnRz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0NvZWZmaWNpZW50
czE2KTsKKyAgICBBU1NFUlRfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKKworICAgIGdsUHJv
Z3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIC0xLCBrVmFsaWRHZW5N
b2RlLCBrSW52YWxpZENvbXBvbmVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBrQ29lZmZpY2llbnRzMTYpOworICAgIEFTU0VSVF9HTF9FUlJPUihHTF9JTlZB
TElEX1ZBTFVFKTsKKworICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7CisKKyAgICAvLyBU
ZXN0IHRoYXQgdXNpbmcgaW52YWxpZCAoZGVsZXRlZCkgcHJvZ3JhbSBpcyBhbiBpbnZhbGlkIG9w
ZXJhdGlvbi4KKyAgICBFWFBFQ1RfRkFMU0UoZ2xJc1Byb2dyYW0obVByb2dyYW0pID09IEdMX0ZB
TFNFKTsKKworICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dy
YW0sIC0xLCBrVmFsaWRHZW5Nb2RlLCBrVmFsaWRDb21wb25lbnRzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAga0NvZWZmaWNpZW50czE2KTsKKyAgICBBU1NFUlRf
R0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgZ2xQcm9ncmFtUGF0aEZyYWdt
ZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwgLTEsIGtJbnZhbGlkR2VuTW9kZSwga1ZhbGlk
Q29tcG9uZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtD
b2VmZmljaWVudHMxNik7CisgICAgQVNTRVJUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKKworICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0s
IC0xLCBrSW52YWxpZEdlbk1vZGUsIGtJbnZhbGlkQ29tcG9uZW50cywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDb2VmZmljaWVudHMxNik7CisgICAgQVNTRVJU
X0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKworICAgIGdsUHJvZ3JhbVBhdGhGcmFn
bWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIC0xLCBrVmFsaWRHZW5Nb2RlLCBrSW52YWxp
ZENvbXBvbmVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBr
Q29lZmZpY2llbnRzMTYpOworICAgIEFTU0VSVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElP
Tik7CisKKyAgICBtUHJvZ3JhbSA9IDB1OworfQorCisvLyBUZXN0IHRoYXQgaGF2aW5nIGlucHV0
IHN0YXRpY2FsbHkgYWxpYXNlZCBmcmFnbWVudCBpbnB1dHMgdGhlIGxpbmtpbmcgZmFpbHMKKy8v
IGFuZCB0aGVuIHN1Y2NlZWRzIHdoZW4gdGhlIGNvbmZsaWN0IGlzIHJlc29sdmVkLgorVEVTVF9Q
KENIUk9NSVVNUGF0aFJlbmRlcmluZ1dpdGhUZXh0dXJpbmdUZXN0LCBUZXN0Q29uZmxpY3RpbmdC
aW5kKQoreworICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgICBjb25zdCBjaGFyKiBrVmVydGV4U2hhZGVyU291cmNl
ID0KKyAgICAgICAgImF0dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uO1xuIgorICAgICAgICAidmFyeWlu
ZyB2ZWM0IGNvbG9yQTtcbiIKKyAgICAgICAgInZhcnlpbmcgdmVjNCBjb2xvckI7XG4iCisgICAg
ICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247
XG4iCisgICAgICAgICIgIGNvbG9yQSA9IHBvc2l0aW9uICsgdmVjNCgxKTtcbiIKKyAgICAgICAg
IiAgY29sb3JCID0gcG9zaXRpb24gKyB2ZWM0KDIpO1xuIgorICAgICAgICAifSI7CisKKyAgICBj
b25zdCBjaGFyKiBrRnJhZ21lbnRTaGFkZXJTb3VyY2UgPQorICAgICAgICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ2YXJ5aW5nIHZlYzQgY29sb3JBO1xuIgorICAgICAg
ICAidmFyeWluZyB2ZWM0IGNvbG9yQjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAg
ICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gY29sb3JBICsgY29sb3JCO1xuIgorICAgICAgICAifSI7
CisgICAgLy8gY2xhbmctZm9ybWF0IG9uCisKKyAgICBjb25zdCBHTGludCBrQ29sb3JBTG9jYXRp
b24gPSAzOworICAgIGNvbnN0IEdMaW50IGtDb2xvckJMb2NhdGlvbiA9IDQ7CisKKyAgICBjb21w
aWxlUHJvZ3JhbShrVmVydGV4U2hhZGVyU291cmNlLCBrRnJhZ21lbnRTaGFkZXJTb3VyY2UpOwor
CisgICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0obVByb2dyYW0sIGtDb2xv
ckFMb2NhdGlvbiwgImNvbG9yQSIpOworICAgIC8vIEJpbmQgY29sb3JCIHRvIGxvY2F0aW9uIGEs
IGNhdXNpbmcgY29uZmxpY3RzLiBMaW5raW5nIHNob3VsZCBmYWlsLgorICAgIGdsQmluZEZyYWdt
ZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JBTG9jYXRpb24sICJjb2xv
ckIiKTsKKworICAgIC8vIFNob3VsZCBmYWlsIG5vdy4KKyAgICBBU1NFUlRfVFJVRShsaW5rUHJv
Z3JhbSgpID09IGZhbHNlKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIFJl
c29sdmUgdGhlIGJpbmQgY29uZmxpY3QuCisgICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9u
Q0hST01JVU0obVByb2dyYW0sIGtDb2xvckJMb2NhdGlvbiwgImNvbG9yQiIpOworCisgICAgQVNT
RVJUX1RSVUUobGlua1Byb2dyYW0oKSA9PSB0cnVlKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1Io
KTsKK30KKworLy8gVGVzdCBiaW5kaW5nIHdpdGggYXJyYXkgdmFyaWFibGVzLCB1c2luZyB6ZXJv
IGluZGljZXMuIFRlc3RzIHRoYXQKKy8vIGJpbmRpbmcgY29sb3JBWzBdIHdpdGggZXhwbGljaXQg
ImNvbG9yQVswXSIgYXMgd2VsbCBhcyAiY29sb3JBIiBwcm9kdWNlcworLy8gYSBjb3JyZWN0IGxv
Y2F0aW9uIHRoYXQgY2FuIGJlIHVzZWQgd2l0aCBQYXRoUHJvZ3JhbUZyYWdtZW50SW5wdXRHZW4u
CisvLyBGb3IgcGF0aCByZW5kZXJpbmcsIGNvbG9yQVswXSBpcyBib3VuZCB0byBhIGxvY2F0aW9u
LiBUaGUgaW5wdXQgZ2VuZXJhdG9yIGZvcgorLy8gdGhlIGxvY2F0aW9uIGlzIHNldCB0byBwcm9k
dWNlIHZlYzQoMCwgMC4xLCAwLCAwLjEpLgorLy8gVGhlIGRlZmF1bHQgdmFyeWluZywgY29sb3Is
IGlzIGJvdW5kIHRvIGEgbG9jYXRpb24gYW5kIGl0cyBnZW5lcmF0b3IKKy8vIHdpbGwgcHJvZHVj
ZSB2ZWM0KDEwLjApLiAgVGhlIHNoYWRlciBwcm9ncmFtIHByb2R1Y2VzIGdyZWVuIHBpeGVscy4K
Ky8vIEZvciB2ZXJ0ZXgtYmFzZWQgcmVuZGVyaW5nLCB0aGUgdmVydGV4IHNoYWRlciBwcm9kdWNl
cyB0aGUgc2FtZSBlZmZlY3QgYXMKKy8vIHRoZSBpbnB1dCBnZW5lcmF0b3IgZm9yIHBhdGggcmVu
ZGVyaW5nLgorVEVTVF9QKENIUk9NSVVNUGF0aFJlbmRlcmluZ1dpdGhUZXh0dXJpbmdUZXN0LCBC
aW5kRnJhZ21lbnRJbnB1dEFycmF5KQoreworICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vY2xhbmctZm9ybWF0IG9mZgorICAgIGNvbnN0IGNoYXIqIGtW
ZXJ0ZXhTaGFkZXJTb3VyY2UgPQorICAgICAgICAidW5pZm9ybSBtYXQ0IHZpZXdfbWF0cml4O1xu
IgorICAgICAgICAidW5pZm9ybSBtYXQ0IGNvbG9yX21hdHJpeDtcbiIKKyAgICAgICAgInVuaWZv
cm0gdmVjMiBtb2RlbF90cmFuc2xhdGU7XG4iCisgICAgICAgICJhdHRyaWJ1dGUgdmVjMiBwb3Np
dGlvbjtcbiIKKyAgICAgICAgInZhcnlpbmcgdmVjNCBjb2xvcjtcbiIKKyAgICAgICAgInZhcnlp
bmcgdmVjNCBjb2xvckFbNF07XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAg
ICIgIHZlYzQgcCA9IHZlYzQobW9kZWxfdHJhbnNsYXRlICsgcG9zaXRpb24sIDEsIDEpO1xuIgor
ICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IHZpZXdfbWF0cml4ICogcDtcbiIKKyAgICAgICAgIiAg
Y29sb3JBWzBdID0gdmVjNCgwLjAsIDAuMSwgMCwgMC4xKTtcbiIKKyAgICAgICAgIiAgY29sb3JB
WzFdID0gdmVjNCgwLjIpO1xuIgorICAgICAgICAiICBjb2xvckFbMl0gPSB2ZWM0KDAuMyk7XG4i
CisgICAgICAgICIgIGNvbG9yQVszXSA9IHZlYzQoMC40KTtcbiIKKyAgICAgICAgIiAgY29sb3Ig
PSB2ZWM0KDEwLjApO1xuIgorICAgICAgICAifSI7CisKKyAgICBjb25zdCBjaGFyKiBrRnJhZ21l
bnRTaGFkZXJTb3VyY2UgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisg
ICAgICAgICJ2YXJ5aW5nIHZlYzQgY29sb3I7XG4iCisgICAgICAgICJ2YXJ5aW5nIHZlYzQgY29s
b3JBWzRdO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICBnbF9GcmFn
Q29sb3IgPSBjb2xvckFbMF0gKiBjb2xvcjtcbiIKKyAgICAgICAgIn0iOworICAgIC8vIGNsYW5n
LWZvcm1hdCBvbgorCisgICAgY29uc3QgR0xpbnQga0NvbG9yQTBMb2NhdGlvbiA9IDQ7CisgICAg
Y29uc3QgR0xpbnQga1VudXNlZExvY2F0aW9uICA9IDU7CisgICAgY29uc3QgR0xmbG9hdCBrQ29s
b3JBMFtdICAgICA9IHswLjBmLCAwLjFmLCAwLjBmLCAwLjFmfTsKKyAgICBjb25zdCBHTGZsb2F0
IGtDb2xvcltdICAgICAgID0gezEwLjBmLCAxMC4wZiwgMTAuMGYsIDEwLjBmfTsKKyAgICBjb25z
dCBHTGZsb2F0IGtGaWxsQ29vcmRzWzZdID0gezU5LjBmLCA1MC4wZiwgNTAuMGYsIDI4LjBmLCA2
Ni4wZiwgNjMuMGZ9OworCisgICAgZm9yIChpbnQgcGFzcyA9IDA7IHBhc3MgPCAyOyArK3Bhc3Mp
CisgICAgeworICAgICAgICBjb21waWxlUHJvZ3JhbShrVmVydGV4U2hhZGVyU291cmNlLCBrRnJh
Z21lbnRTaGFkZXJTb3VyY2UpOworICAgICAgICBpZiAocGFzcyA9PSAwKQorICAgICAgICB7Cisg
ICAgICAgICAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSwg
a1VudXNlZExvY2F0aW9uLCAiY29sb3JBWzBdIik7CisgICAgICAgICAgICBnbEJpbmRGcmFnbWVu
dElucHV0TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yQTBMb2NhdGlvbiwgImNvbG9y
QSIpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgZ2xC
aW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0obVByb2dyYW0sIGtVbnVzZWRMb2NhdGlv
biwgImNvbG9yQSIpOworICAgICAgICAgICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hS
T01JVU0obVByb2dyYW0sIGtDb2xvckEwTG9jYXRpb24sICJjb2xvckFbMF0iKTsKKyAgICAgICAg
fQorCisgICAgICAgIGJpbmRQcm9ncmFtKCk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUobGlua1By
b2dyYW0oKSA9PSB0cnVlKTsKKworICAgICAgICBnbFVuaWZvcm1NYXRyaXg0ZnYoa1ZpZXdNYXRy
aXhMb2NhdGlvbiwgMSwgR0xfRkFMU0UsIGtQcm9qZWN0aW9uTWF0cml4KTsKKyAgICAgICAgZ2xQ
cm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yQTBMb2Nh
dGlvbiwgR0xfQ09OU1RBTlRfQ0hST01JVU0sIDQsIGtDb2xvckEwKTsKKyAgICAgICAgZ2xQcm9n
cmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yRnJhZ21lbnRJ
bnB1dExvY2F0aW9uLCBHTF9DT05TVEFOVF9DSFJPTUlVTSwgNCwga0NvbG9yKTsKKyAgICAgICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgZHJhd1Rlc3RQYXR0ZXJuKCk7CisKKyAg
ICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBrVGVzdFJvd3M7ICsraikKKyAgICAgICAgeworICAg
ICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrVGVzdENvbHVtbnM7ICsraSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBrID0gMDsgayA8IEFycmF5U2l6ZShr
RmlsbENvb3Jkcyk7IGsgKz0gMikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGZsb2F0IGZ4ID0ga0ZpbGxDb29yZHNba107CisgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGZsb2F0IGZ5ID0ga0ZpbGxDb29yZHNbayArIDFdOworICAgICAgICAgICAgICAgICAg
ICBjb25zdCBmbG9hdCBweCA9IHN0YXRpY19jYXN0PGZsb2F0PihpICoga1NoYXBlV2lkdGgpOwor
ICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCBweSA9IHN0YXRpY19jYXN0PGZsb2F0Pihq
ICoga1NoYXBlSGVpZ2h0KTsKKworICAgICAgICAgICAgICAgICAgICBhbmdsZTo6R0xDb2xvciBj
b2xvcjsKKyAgICAgICAgICAgICAgICAgICAgY29sb3IuUiA9IDA7CisgICAgICAgICAgICAgICAg
ICAgIGNvbG9yLkcgPSAyNTU7CisgICAgICAgICAgICAgICAgICAgIGNvbG9yLkIgPSAwOworICAg
ICAgICAgICAgICAgICAgICBjb2xvci5BID0gMjU1OworICAgICAgICAgICAgICAgICAgICBDaGVj
a1BpeGVscyhzdGF0aWNfY2FzdDxHTGludD4ocHggKyBmeCksIHN0YXRpY19jYXN0PEdMaW50Pihw
eSArIGZ5KSwgMSwgMSwgMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3Ip
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30K
KworLy8gVGVzdCBiaW5kaW5nIGFycmF5IHZhcmlhYmxlcy4gVGhpcyBpcyBsaWtlIEJpbmRGcmFn
bWVudElucHV0QXJyYXkuCisvLyBDdXJyZW50bHkgZGlzYWJsZWQgc2luY2UgaXQgc2VlbXMgdGhl
cmUncyBhIGRyaXZlciBidWcgd2l0aCB0aGUKKy8vIG9sZGVyIGRyaXZlcnMuIFRoaXMgc2hvdWxk
IHdvcmsgd2l0aCBkcml2ZXIgPj0gMzY0LjEyCitURVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5n
V2l0aFRleHR1cmluZ1Rlc3QsCisgICAgRElTQUJMRURfQmluZEZyYWdtZW50SW5wdXRBcnJheU5v
blplcm9JbmRleCkKK3sKKyAgICBpZiAoIWlzQXBwbGljYWJsZSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgICAgY29uc3QgY2hhcioga1ZlcnRleFNoYWRl
clNvdXJjZSA9CisgICAgICAgICJ1bmlmb3JtIG1hdDQgdmlld19tYXRyaXg7XG4iCisgICAgICAg
ICJ1bmlmb3JtIG1hdDQgY29sb3JfbWF0cml4O1xuIgorICAgICAgICAidW5pZm9ybSB2ZWMyIG1v
ZGVsX3RyYW5zbGF0ZTtcbiIKKyAgICAgICAgImF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uO1xuIgor
ICAgICAgICAidmFyeWluZyB2ZWM0IGNvbG9yO1xuIgorICAgICAgICAidmFyeWluZyB2ZWM0IGNv
bG9yQVs0XTtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgdmVjNCBw
ID0gdmVjNChtb2RlbF90cmFuc2xhdGUgKyBwb3NpdGlvbiwgMSwgMSk7XG4iCisgICAgICAgICIg
IGdsX1Bvc2l0aW9uID0gdmlld19tYXRyaXggKiBwO1xuIgorICAgICAgICAiICBjb2xvckFbMF0g
PSB2ZWM0KDAsIDAuMSwgMCwgMC4xKTtcbiIKKyAgICAgICAgIiAgY29sb3JBWzFdID0gdmVjNCgw
LCAxLCAwLCAxKTtcbiIKKyAgICAgICAgIiAgY29sb3JBWzJdID0gdmVjNCgwLCAwLjgsIDAsIDAu
OCk7XG4iCisgICAgICAgICIgIGNvbG9yQVszXSA9IHZlYzQoMCwgMC41LCAwLCAwLjUpO1xuIgor
ICAgICAgICAiICBjb2xvciA9IHZlYzQoMC4yKTtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBj
b25zdCBjaGFyKiBrRnJhZ21lbnRTaGFkZXJTb3VyY2UgPQorICAgICAgICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ2YXJ5aW5nIHZlYzQgY29sb3JBWzRdO1xuIgorICAg
ICAgICAidmFyeWluZyB2ZWM0IGNvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgor
ICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSAoY29sb3JBWzBdICogY29sb3JBWzFdKSArXG4iCisg
ICAgICAgICIgICAgICBjb2xvckFbMl0gKyAoY29sb3JBWzNdICogY29sb3IpO1xuIgorICAgICAg
ICAifVxuIjsKKyAgICAvLyBjbGFuZy1mb3JtYXQgb24KKworICAgIGNvbnN0IEdMaW50IGtDb2xv
ckEwTG9jYXRpb24gPSA0OworICAgIGNvbnN0IEdMaW50IGtDb2xvckExTG9jYXRpb24gPSAxOwor
ICAgIGNvbnN0IEdMaW50IGtDb2xvckEyTG9jYXRpb24gPSAyOworICAgIGNvbnN0IEdMaW50IGtD
b2xvckEzTG9jYXRpb24gPSAzOworICAgIGNvbnN0IEdMaW50IGtVbnVzZWRMb2NhdGlvbiA9IDU7
CisgICAgY29uc3QgR0xmbG9hdCBrQ29sb3JBMFtdID0gezAuMGYsIDAuMWYsIDAuMGYsIDAuMWZ9
OworICAgIGNvbnN0IEdMZmxvYXQga0NvbG9yQTFbXSA9IHswLjBmLCAxLjBmLCAwLjBmLCAxLjBm
fTsKKyAgICBjb25zdCBHTGZsb2F0IGtDb2xvckEyW10gPSB7MC4wZiwgMC44ZiwgMC4wZiwgMC44
Zn07CisgICAgY29uc3QgR0xmbG9hdCBrQ29sb3JBM1tdID0gezAuMGYsIDAuNWYsIDAuMGYsIDAu
NWZ9OworICAgIGNvbnN0IEdMZmxvYXQga0NvbG9yW10gPSB7MC4yZiwgMC4yZiwgMC4yZiwgMC4y
Zn07CisgICAgY29uc3QgR0xmbG9hdCBrRmlsbENvb3Jkc1s2XSA9IHs1OS4wZiwgNTAuMGYsIDUw
LjBmLCAyOC4wZiwgNjYuMGYsIDYzLjBmfTsKKworICAgIGNvbXBpbGVQcm9ncmFtKGtWZXJ0ZXhT
aGFkZXJTb3VyY2UsIGtGcmFnbWVudFNoYWRlclNvdXJjZSk7CisKKyAgICBnbEJpbmRGcmFnbWVu
dElucHV0TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSwga1VudXNlZExvY2F0aW9uLCAiY29sb3JB
WzBdIik7CisgICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0obVByb2dyYW0s
IGtDb2xvckExTG9jYXRpb24sICJjb2xvckFbMV0iKTsKKyAgICBnbEJpbmRGcmFnbWVudElucHV0
TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yQTJMb2NhdGlvbiwgImNvbG9yQVsyXSIp
OworICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29s
b3JBM0xvY2F0aW9uLCAiY29sb3JBWzNdIik7CisgICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0
aW9uQ0hST01JVU0obVByb2dyYW0sIGtDb2xvckEwTG9jYXRpb24sICJjb2xvckEiKTsKKyAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIGJpbmRQcm9ncmFtKCk7CisgICAgQVNTRVJUX1RS
VUUobGlua1Byb2dyYW0oKSA9PSB0cnVlKTsKKworICAgIGdsVW5pZm9ybU1hdHJpeDRmdihrVmll
d01hdHJpeExvY2F0aW9uLCAxLCBHTF9GQUxTRSwga1Byb2plY3Rpb25NYXRyaXgpOworCisgICAg
Z2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yQTBM
b2NhdGlvbiwgR0xfQ09OU1RBTlRfQ0hST01JVU0sIDQsIGtDb2xvckEwKTsKKyAgICBnbFByb2dy
YW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JBMUxvY2F0aW9u
LCBHTF9DT05TVEFOVF9DSFJPTUlVTSwgNCwga0NvbG9yQTEpOworICAgIGdsUHJvZ3JhbVBhdGhG
cmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIGtDb2xvckEyTG9jYXRpb24sIEdMX0NP
TlNUQU5UX0NIUk9NSVVNLCA0LCBrQ29sb3JBMik7CisgICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50
SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yQTNMb2NhdGlvbiwgR0xfQ09OU1RBTlRf
Q0hST01JVU0sIDQsIGtDb2xvckEzKTsKKyAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdl
bkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JGcmFnbWVudElucHV0TG9jYXRpb24sCisgICAgICAg
IEdMX0NPTlNUQU5UX0NIUk9NSVVNLCA0LCBrQ29sb3IpOworICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOworCisgICAgZHJhd1Rlc3RQYXR0ZXJuKCk7CisKKyAgICBmb3IgKGludCBqID0gMDsgaiA8
IGtUZXN0Um93czsgKytqKQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrVGVz
dENvbHVtbnM7ICsraSkKKyAgICAgICAgeworICAgICAgICAgICAgZm9yIChzaXplX3QgayA9IDA7
IGsgPCBBcnJheVNpemUoa0ZpbGxDb29yZHMpOyBrICs9IDIpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgY29uc3QgZmxvYXQgZnggPSBrRmlsbENvb3Jkc1trXTsKKyAgICAgICAgICAg
ICAgICBjb25zdCBmbG9hdCBmeSA9IGtGaWxsQ29vcmRzW2sgKyAxXTsKKyAgICAgICAgICAgICAg
ICBjb25zdCBmbG9hdCBweCA9IHN0YXRpY19jYXN0PGZsb2F0PihpICoga1NoYXBlV2lkdGgpOwor
ICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0IHB5ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGogKiBr
U2hhcGVIZWlnaHQpOworCisgICAgICAgICAgICAgICAgYW5nbGU6OkdMQ29sb3IgY29sb3I7Cisg
ICAgICAgICAgICAgICAgY29sb3IuUiA9IDA7CisgICAgICAgICAgICAgICAgY29sb3IuRyA9IDI1
NTsKKyAgICAgICAgICAgICAgICBjb2xvci5CID0gMDsKKyAgICAgICAgICAgICAgICBjb2xvci5B
ID0gMjU1OworICAgICAgICAgICAgICAgIENoZWNrUGl4ZWxzKHN0YXRpY19jYXN0PEdMaW50Pihw
eCArIGZ4KSwgc3RhdGljX2Nhc3Q8R0xpbnQ+KHB5ICsgZnkpLCAxLCAxLCAyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbG9yKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KK30KKworVEVTVF9QKENIUk9NSVVNUGF0aFJlbmRlcmluZ1dpdGhUZXh0dXJpbmdUZXN0LCBV
bnVzZWRGcmFnbWVudElucHV0VXBkYXRlKQoreworICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCisg
ICAgICAgIHJldHVybjsKKworICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgICAgY29uc3QgY2hhciog
a1ZlcnRleFNoYWRlclN0cmluZyA9CisgICAgICAgICJhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9u
O1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICBnbF9Qb3NpdGlvbiA9
IGFfcG9zaXRpb247XG4iCisgICAgICAgICJ9IjsKKworICAgIGNvbnN0IGNoYXIqIGtGcmFnbWVu
dFNoYWRlclN0cmluZyA9CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAg
ICAgICAgInVuaWZvcm0gdmVjNCB1X2NvbG9yQTtcbiIKKyAgICAgICAgInVuaWZvcm0gZmxvYXQg
dV9jb2xvclU7XG4iCisgICAgICAgICJ1bmlmb3JtIHZlYzQgdV9jb2xvckM7XG4iCisgICAgICAg
ICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgIGdsX0ZyYWdDb2xvciA9IHVfY29sb3JBICsg
dV9jb2xvckM7XG4iCisgICAgICAgICJ9IjsKKyAgICAvLyBjbGFuZy1mb3JtYXQgb24KKworICAg
IGNvbnN0IEdMaW50IGtDb2xvclVMb2NhdGlvbiA9IDE7CisgICAgY29uc3QgR0xpbnQga05vbmV4
aXN0aW5nTG9jYXRpb24gPSA1OworICAgIGNvbnN0IEdMaW50IGtVbmJvdW5kTG9jYXRpb24gPSA2
OworCisgICAgY29tcGlsZVByb2dyYW0oa1ZlcnRleFNoYWRlclN0cmluZywga0ZyYWdtZW50U2hh
ZGVyU3RyaW5nKTsKKworICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNKG1Q
cm9ncmFtLCBrQ29sb3JVTG9jYXRpb24sICJ1X2NvbG9yVSIpOworCisgICAgLy8gVGhlIG5vbi1l
eGlzdGluZyBpbnB1dCBzaG91bGQgYmVoYXZlIGxpa2UgZXhpc3RpbmcgYnV0IG9wdGltaXplZCBh
d2F5IGlucHV0LgorICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNKG1Qcm9n
cmFtLCBrTm9uZXhpc3RpbmdMb2NhdGlvbiwgIm5vbmV4aXN0aW5nIik7CisKKyAgICAvLyBMZXQg
QSBhbmQgQyBiZSBhc3NpZ25lZCBhdXRvbWF0aWMgbG9jYXRpb25zLgorICAgIEFTU0VSVF9UUlVF
KGxpbmtQcm9ncmFtKCkgPT0gdHJ1ZSk7CisKKyAgICBjb25zdCBHTGZsb2F0IGtDb2xvclsxNl0g
PSB7fTsKKworICAgIC8vIE5vIGVycm9ycyBvbiBib3VuZCBsb2NhdGlvbnMsIHNpbmNlIGNhbGxl
ciBkb2VzIG5vdCBrbm93CisgICAgLy8gaWYgdGhlIGRyaXZlciBvcHRpbWl6ZXMgdGhlbSBhd2F5
IG9yIG5vdC4KKyAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9n
cmFtLCBrQ29sb3JVTG9jYXRpb24sIEdMX0NPTlNUQU5UX0NIUk9NSVVNLCAxLCBrQ29sb3IpOwor
ICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gTm8gZXJyb3JzIG9uIGJvdW5kIGxv
Y2F0aW9ucyBvZiBuYW1lcyB0aGF0IGRvIG5vdCBleGlzdAorICAgIC8vIGluIHRoZSBzaGFkZXIu
IE90aGVyd2lzZSBpdCB3b3VsZCBiZSBpbmNvbnNpc3RlbnQgd3J0IHRoZQorICAgIC8vIG9wdGlt
aXphdGlvbiBjYXNlLgorICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0o
bVByb2dyYW0sIGtOb25leGlzdGluZ0xvY2F0aW9uLCBHTF9DT05TVEFOVF9DSFJPTUlVTSwgMSwg
a0NvbG9yKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIFRoZSBhYm92ZSBh
cmUgZXF1YWwgdG8gdXBkYXRpbmcgLTEuCisgICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRH
ZW5DSFJPTUlVTShtUHJvZ3JhbSwgLTEsIEdMX0NPTlNUQU5UX0NIUk9NSVVNLCAxLCBrQ29sb3Ip
OworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gTm8gZXJyb3JzIHdoZW4gdXBk
YXRpbmcgd2l0aCBvdGhlciB0eXBlIGVpdGhlci4KKyAgICAvLyBUaGUgdHlwZSBjYW4gbm90IGJl
IGtub3duIHdpdGggdGhlIG5vbi1leGlzdGluZyBjYXNlLgorICAgIGdsUHJvZ3JhbVBhdGhGcmFn
bWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIGtDb2xvclVMb2NhdGlvbiwgR0xfQ09OU1RB
TlRfQ0hST01JVU0sIDQsIGtDb2xvcik7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAg
ICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCBrTm9uZXhp
c3RpbmdMb2NhdGlvbiwgR0xfQ09OU1RBTlRfQ0hST01JVU0sIDQsIGtDb2xvcik7CisgICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNI
Uk9NSVVNKG1Qcm9ncmFtLCAtMSwgR0xfQ09OU1RBTlRfQ0hST01JVU0sIDQsIGtDb2xvcik7Cisg
ICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBVcGRhdGluZyBhbiB1bmJvdW5kLCBu
b24tZXhpc3RpbmcgbG9jYXRpb24gc3RpbGwgY2F1c2VzIGFuIGVycm9yLgorICAgIGdsUHJvZ3Jh
bVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIGtVbmJvdW5kTG9jYXRpb24s
IEdMX0NPTlNUQU5UX0NIUk9NSVVNLCA0LCBrQ29sb3IpOworICAgIEFTU0VSVF9HTF9FUlJPUihH
TF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKKworfSAgLy8gbmFtZXNwYWNlCisKK0FOR0xFX0lO
U1RBTlRJQVRFX1RFU1QoQ0hST01JVU1QYXRoUmVuZGVyaW5nVGVzdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgRVMyX09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdM
RVMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgpLAorICAgICAgICAgICAg
ICAgICAgICAgICBFUzNfT1BFTkdMRVMoKSk7CitBTkdMRV9JTlNUQU5USUFURV9URVNUKENIUk9N
SVVNUGF0aFJlbmRlcmluZ0RyYXdUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BF
TkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpLAorICAgICAgICAg
ICAgICAgICAgICAgICBFUzNfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19P
UEVOR0xFUygpKTsKKworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChDSFJPTUlVTVBhdGhSZW5kZXJp
bmdXaXRoVGV4dHVyaW5nVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgp
LAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgRVMzX09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdM
RVMoKSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1BidWZmZXJUZXN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvUGJ1ZmZlclRlc3Qu
Y3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9n
bF90ZXN0cy9QYnVmZmVyVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNDMgQEAK
Ky8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vCisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorCit1c2luZyBu
YW1lc3BhY2UgYW5nbGU7CisKK2NsYXNzIFBidWZmZXJUZXN0IDogcHVibGljIEFOR0xFVGVzdAor
eworICBwcm90ZWN0ZWQ6CisgICAgUGJ1ZmZlclRlc3QoKQorICAgIHsKKyAgICAgICAgc2V0V2lu
ZG93V2lkdGgoNTEyKTsKKyAgICAgICAgc2V0V2luZG93SGVpZ2h0KDUxMik7CisgICAgICAgIHNl
dENvbmZpZ1JlZEJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICAg
ICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQorICAgIHsKKyAgICAgICAgQU5HTEVU
ZXN0OjpTZXRVcCgpOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzU291cmNlID0gU0hB
REVSX1NPVVJDRQorICAgICAgICAoCisgICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7
CisgICAgICAgICAgICBhdHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjsKKyAgICAgICAgICAgIHZhcnlp
bmcgdmVjMiB0ZXhjb29yZDsKKworICAgICAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOworICAgICAgICAgICAg
ICAgIHRleGNvb3JkID0gKHBvc2l0aW9uLnh5ICogMC41KSArIDAuNTsKKyAgICAgICAgICAgICAg
ICB0ZXhjb29yZC55ID0gMS4wIC0gdGV4Y29vcmQueTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
KTsKKworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB0ZXh0dXJlRlNTb3VyY2UgPSBTSEFERVJf
U09VUkNFCisgICAgICAgICgKKyAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKKyAg
ICAgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHRleDsKKyAgICAgICAgICAgIHZhcnlpbmcgdmVj
MiB0ZXhjb29yZDsKKworICAgICAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQodGV4LCB0ZXhjb29yZCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICk7CisKKyAgICAgICAgbVRleHR1cmVQcm9ncmFtID0gQ29t
cGlsZVByb2dyYW0odnNTb3VyY2UsIHRleHR1cmVGU1NvdXJjZSk7CisgICAgICAgIGlmIChtVGV4
dHVyZVByb2dyYW0gPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgRkFJTCgpIDw8ICJzaGFk
ZXIgY29tcGlsYXRpb24gZmFpbGVkLiI7CisgICAgICAgIH0KKworICAgICAgICBtVGV4dHVyZVVu
aWZvcm1Mb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1UZXh0dXJlUHJvZ3JhbSwgInRl
eCIpOworCisgICAgICAgIEVHTFdpbmRvdyAqd2luZG93ID0gZ2V0RUdMV2luZG93KCk7CisKKyAg
ICAgICAgRUdMaW50IHN1cmZhY2VUeXBlID0gMDsKKyAgICAgICAgZWdsR2V0Q29uZmlnQXR0cmli
KHdpbmRvdy0+Z2V0RGlzcGxheSgpLCB3aW5kb3ctPmdldENvbmZpZygpLCBFR0xfU1VSRkFDRV9U
WVBFLCAmc3VyZmFjZVR5cGUpOworICAgICAgICBtU3VwcG9ydHNQYnVmZmVycyA9IChzdXJmYWNl
VHlwZSAmIEVHTF9QQlVGRkVSX0JJVCkgIT0gMDsKKworICAgICAgICBFR0xpbnQgYmluZFRvVGV4
dHVyZVJHQkEgPSAwOworICAgICAgICBlZ2xHZXRDb25maWdBdHRyaWIod2luZG93LT5nZXREaXNw
bGF5KCksIHdpbmRvdy0+Z2V0Q29uZmlnKCksIEVHTF9CSU5EX1RPX1RFWFRVUkVfUkdCQSwgJmJp
bmRUb1RleHR1cmVSR0JBKTsKKyAgICAgICAgbVN1cHBvcnRzQmluZFRleEltYWdlID0gKGJpbmRU
b1RleHR1cmVSR0JBID09IEVHTF9UUlVFKTsKKworICAgICAgICBjb25zdCBFR0xpbnQgcEJ1ZmZl
ckF0dHJpYnV0ZXNbXSA9CisgICAgICAgIHsKKyAgICAgICAgICAgIEVHTF9XSURUSCwgc3RhdGlj
X2Nhc3Q8RUdMaW50PihtUGJ1ZmZlclNpemUpLAorICAgICAgICAgICAgRUdMX0hFSUdIVCwgc3Rh
dGljX2Nhc3Q8RUdMaW50PihtUGJ1ZmZlclNpemUpLAorICAgICAgICAgICAgRUdMX1RFWFRVUkVf
Rk9STUFULCBtU3VwcG9ydHNCaW5kVGV4SW1hZ2UgPyBFR0xfVEVYVFVSRV9SR0JBIDogRUdMX05P
X1RFWFRVUkUsCisgICAgICAgICAgICBFR0xfVEVYVFVSRV9UQVJHRVQsIG1TdXBwb3J0c0JpbmRU
ZXhJbWFnZSA/IEVHTF9URVhUVVJFXzJEIDogRUdMX05PX1RFWFRVUkUsCisgICAgICAgICAgICBF
R0xfTk9ORSwgRUdMX05PTkUsCisgICAgICAgIH07CisKKyAgICAgICAgbVBidWZmZXIgPSBlZ2xD
cmVhdGVQYnVmZmVyU3VyZmFjZSh3aW5kb3ctPmdldERpc3BsYXkoKSwgd2luZG93LT5nZXRDb25m
aWcoKSwgcEJ1ZmZlckF0dHJpYnV0ZXMpOworICAgICAgICBpZiAobVN1cHBvcnRzUGJ1ZmZlcnMp
CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVF9ORShtUGJ1ZmZlciwgRUdMX05PX1NVUkZB
Q0UpOworICAgICAgICAgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlRfRVEobVBidWZmZXIsIEVHTF9O
T19TVVJGQUNFKTsKKyAgICAgICAgICAgIEFTU0VSVF9FR0xfRVJST1IoRUdMX0JBRF9NQVRDSCk7
CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQorICAgIHsKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFt
KG1UZXh0dXJlUHJvZ3JhbSk7CisKKyAgICAgICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xX
aW5kb3coKTsKKyAgICAgICAgZWdsRGVzdHJveVN1cmZhY2Uod2luZG93LT5nZXREaXNwbGF5KCks
IG1QYnVmZmVyKTsKKworICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7CisgICAgfQorCisg
ICAgR0x1aW50IG1UZXh0dXJlUHJvZ3JhbTsKKyAgICBHTGludCBtVGV4dHVyZVVuaWZvcm1Mb2Nh
dGlvbjsKKworICAgIGNvbnN0IHNpemVfdCBtUGJ1ZmZlclNpemUgPSAzMjsKKyAgICBFR0xTdXJm
YWNlIG1QYnVmZmVyOworICAgIGJvb2wgbVN1cHBvcnRzUGJ1ZmZlcnM7CisgICAgYm9vbCBtU3Vw
cG9ydHNCaW5kVGV4SW1hZ2U7Cit9OworCisvLyBUZXN0IGNsZWFyaW5nIGEgUGJ1ZmZlciBhbmQg
Y2hlY2tpbmcgdGhlIGNvbG9yIGlzIGNvcnJlY3QKK1RFU1RfUChQYnVmZmVyVGVzdCwgQ2xlYXJp
bmcpCit7CisgICAgaWYgKCFtU3VwcG9ydHNQYnVmZmVycykKKyAgICB7CisgICAgICAgIHN0ZDo6
Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgUGJ1ZmZlcnMgYXJlIG5vdCBzdXBwb3J0ZWQu
IiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBFR0xXaW5kb3cg
KndpbmRvdyA9IGdldEVHTFdpbmRvdygpOworCisgICAgLy8gQ2xlYXIgdGhlIHdpbmRvdyBzdXJm
YWNlIHRvIGJsdWUgYW5kIHZlcmlmeQorICAgIGVnbE1ha2VDdXJyZW50KHdpbmRvdy0+Z2V0RGlz
cGxheSgpLCB3aW5kb3ctPmdldFN1cmZhY2UoKSwgd2luZG93LT5nZXRTdXJmYWNlKCksIHdpbmRv
dy0+Z2V0Q29udGV4dCgpKTsKKyAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKworICAgIGdsQ2xl
YXJDb2xvcigwLjBmLCAwLjBmLCAxLjBmLCAxLjBmKTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JV
RkZFUl9CSVQpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9QSVhFTF9F
UShnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCAwLCAwLCAyNTUs
IDI1NSk7CisKKyAgICAvLyBBcHBseSB0aGUgUGJ1ZmZlciBhbmQgY2xlYXIgaXQgdG8gcHVycGxl
IGFuZCB2ZXJpZnkKKyAgICBlZ2xNYWtlQ3VycmVudCh3aW5kb3ctPmdldERpc3BsYXkoKSwgbVBi
dWZmZXIsIG1QYnVmZmVyLCB3aW5kb3ctPmdldENvbnRleHQoKSk7CisgICAgQVNTRVJUX0VHTF9T
VUNDRVNTKCk7CisKKyAgICBnbFZpZXdwb3J0KDAsIDAsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1Q
YnVmZmVyU2l6ZSksIHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1QYnVmZmVyU2l6ZSkpOworICAgIGds
Q2xlYXJDb2xvcigxLjBmLCAwLjBmLCAxLjBmLCAxLjBmKTsKKyAgICBnbENsZWFyKEdMX0NPTE9S
X0JVRkZFUl9CSVQpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9QSVhF
TF9FUShzdGF0aWNfY2FzdDxHTGludD4obVBidWZmZXJTaXplKSAvIDIsIHN0YXRpY19jYXN0PEdM
aW50PihtUGJ1ZmZlclNpemUpIC8gMiwgMjU1LAorICAgICAgICAgICAgICAgICAgICAwLCAyNTUs
IDI1NSk7CisKKyAgICAvLyBSZWJpbmQgdGhlIHdpbmRvdyBzdXJmYWNlIGFuZCB2ZXJpZnkgdGhh
dCBpdCBpcyBzdGlsbCBibHVlCisgICAgZWdsTWFrZUN1cnJlbnQod2luZG93LT5nZXREaXNwbGF5
KCksIHdpbmRvdy0+Z2V0U3VyZmFjZSgpLCB3aW5kb3ctPmdldFN1cmZhY2UoKSwgd2luZG93LT5n
ZXRDb250ZXh0KCkpOworICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworICAgIEVYUEVDVF9QSVhF
TF9FUShnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCAwLCAwLCAy
NTUsIDI1NSk7Cit9CisKKy8vIEJpbmQgdGhlIFBidWZmZXIgdG8gYSB0ZXh0dXJlIGFuZCB2ZXJp
ZnkgaXQgcmVuZGVycyBjb3JyZWN0bHkKK1RFU1RfUChQYnVmZmVyVGVzdCwgQmluZFRleEltYWdl
KQoreworICAgIGlmICghbVN1cHBvcnRzUGJ1ZmZlcnMpCisgICAgeworICAgICAgICBzdGQ6OmNv
dXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIFBidWZmZXJzIGFyZSBub3Qgc3VwcG9ydGVkLiIg
PDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFtU3VwcG9y
dHNCaW5kVGV4SW1hZ2UpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBl
ZCBiZWNhdXNlIFBidWZmZXIgZG9lcyBub3Qgc3VwcG9ydCBiaW5kaW5nIHRvIFJHQkEgdGV4dHVy
ZXMuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBFR0xXaW5k
b3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygpOworCisgICAgLy8gQXBwbHkgdGhlIFBidWZmZXIg
YW5kIGNsZWFyIGl0IHRvIHB1cnBsZQorICAgIGVnbE1ha2VDdXJyZW50KHdpbmRvdy0+Z2V0RGlz
cGxheSgpLCBtUGJ1ZmZlciwgbVBidWZmZXIsIHdpbmRvdy0+Z2V0Q29udGV4dCgpKTsKKyAgICBB
U1NFUlRfRUdMX1NVQ0NFU1MoKTsKKworICAgIGdsVmlld3BvcnQoMCwgMCwgc3RhdGljX2Nhc3Q8
R0xzaXplaT4obVBidWZmZXJTaXplKSwgc3RhdGljX2Nhc3Q8R0xzaXplaT4obVBidWZmZXJTaXpl
KSk7CisgICAgZ2xDbGVhckNvbG9yKDEuMGYsIDAuMGYsIDEuMGYsIDEuMGYpOworICAgIGdsQ2xl
YXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAg
ICBFWFBFQ1RfUElYRUxfRVEoc3RhdGljX2Nhc3Q8R0xpbnQ+KG1QYnVmZmVyU2l6ZSkgLyAyLCBz
dGF0aWNfY2FzdDxHTGludD4obVBidWZmZXJTaXplKSAvIDIsIDI1NSwKKyAgICAgICAgICAgICAg
ICAgICAgMCwgMjU1LCAyNTUpOworCisgICAgLy8gQXBwbHkgdGhlIHdpbmRvdyBzdXJmYWNlCisg
ICAgZWdsTWFrZUN1cnJlbnQod2luZG93LT5nZXREaXNwbGF5KCksIHdpbmRvdy0+Z2V0U3VyZmFj
ZSgpLCB3aW5kb3ctPmdldFN1cmZhY2UoKSwgd2luZG93LT5nZXRDb250ZXh0KCkpOworCisgICAg
Ly8gQ3JlYXRlIGEgdGV4dHVyZSBhbmQgYmluZCB0aGUgUGJ1ZmZlciB0byBpdAorICAgIEdMdWlu
dCB0ZXh0dXJlID0gMDsKKyAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXh0dXJlKTsKKyAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUpOworICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgIGds
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05F
QVJFU1QpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dS
QVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
MkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBFWFBFQ1RfR0xf
Tk9fRVJST1IoKTsKKworICAgIGVnbEJpbmRUZXhJbWFnZSh3aW5kb3ctPmdldERpc3BsYXkoKSwg
bVBidWZmZXIsIEVHTF9CQUNLX0JVRkZFUik7CisgICAgZ2xWaWV3cG9ydCgwLCAwLCBnZXRXaW5k
b3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7CisgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7
CisKKyAgICAvLyBEcmF3IGEgcXVhZCBhbmQgdmVyaWZ5IHRoYXQgaXQgaXMgcHVycGxlCisgICAg
Z2xVc2VQcm9ncmFtKG1UZXh0dXJlUHJvZ3JhbSk7CisgICAgZ2xVbmlmb3JtMWkobVRleHR1cmVV
bmlmb3JtTG9jYXRpb24sIDApOworCisgICAgZHJhd1F1YWQobVRleHR1cmVQcm9ncmFtLCAicG9z
aXRpb24iLCAwLjVmKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIFVuYmlu
ZCB0aGUgdGV4dHVyZQorICAgIGVnbFJlbGVhc2VUZXhJbWFnZSh3aW5kb3ctPmdldERpc3BsYXko
KSwgbVBidWZmZXIsIEVHTF9CQUNLX0JVRkZFUik7CisgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7
CisKKyAgICAvLyBWZXJpZnkgdGhhdCBwdXJwbGUgd2FzIGRyYXduCisgICAgRVhQRUNUX1BJWEVM
X0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIDI1NSwgMCwg
MjU1LCAyNTUpOworCisgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGV4dHVyZSk7Cit9CisKKy8v
IFZlcmlmeSB0aGF0IHdoZW4gZWdsQmluZC9SZWxlYXNlVGV4SW1hZ2UgYXJlIGNhbGxlZCwgdGhl
IHRleHR1cmUgaW1hZ2VzIGFyZSBmcmVlZCBhbmQgdGhlaXIKKy8vIHNpemUgaW5mb3JtYXRpb24g
aXMgY29ycmVjdGx5IHVwZGF0ZWQuCitURVNUX1AoUGJ1ZmZlclRlc3QsIFRleHR1cmVTaXplUmVz
ZXQpCit7CisgICAgaWYgKCFtU3VwcG9ydHNQYnVmZmVycykKKyAgICB7CisgICAgICAgIHN0ZDo6
Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgUGJ1ZmZlcnMgYXJlIG5vdCBzdXBwb3J0ZWQu
IiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1TdXBw
b3J0c0JpbmRUZXhJbWFnZSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lw
cGVkIGJlY2F1c2UgUGJ1ZmZlciBkb2VzIG5vdCBzdXBwb3J0IGJpbmRpbmcgdG8gUkdCQSB0ZXh0
dXJlcy4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdMdWlu
dCB0ZXh0dXJlID0gMDsKKyAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXh0dXJlKTsKKyAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUpOworICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgIGds
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05F
QVJFU1QpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dS
QVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
MkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBFWFBFQ1RfR0xf
Tk9fRVJST1IoKTsKKworICAgIGdsVXNlUHJvZ3JhbShtVGV4dHVyZVByb2dyYW0pOworICAgIGds
VW5pZm9ybTFpKG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9uLCAwKTsKKworICAgIC8vIEZpbGwgdGhl
IHRleHR1cmUgd2l0aCB3aGl0ZSBwaXhlbHMKKyAgICBzdGQ6OnZlY3RvcjxHTHVieXRlPiB3aGl0
ZVBpeGVscyhtUGJ1ZmZlclNpemUgKiBtUGJ1ZmZlclNpemUgKiA0LCAyNTUpOworICAgIGdsVGV4
SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCBzdGF0aWNfY2FzdDxHTHNpemVpPiht
UGJ1ZmZlclNpemUpLAorICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHNpemVpPihtUGJ1
ZmZlclNpemUpLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAmd2hpdGVQaXhlbHNbMF0p
OworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gRHJhdyB0aGUgd2hpdGUgdGV4
dHVyZSBhbmQgdmVyaWZ5IHRoYXQgdGhlIHBpeGVscyBhcmUgY29ycmVjdAorICAgIGRyYXdRdWFk
KG1UZXh0dXJlUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgRVhQRUNUX1BJWEVMX0VR
KDAsIDAsIDI1NSwgMjU1LCAyNTUsIDI1NSk7CisKKyAgICAvLyBCaW5kIHRoZSBFR0wgc3VyZmFj
ZSBhbmQgZHJhdyB3aXRoIGl0LCByZXN1bHRzIGFyZSB1bmRlZmluZWQgc2luY2Ugbm90aGluZyBo
YXMKKyAgICAvLyBiZWVuIHdyaXR0ZW4gdG8gaXQKKyAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdl
dEVHTFdpbmRvdygpOworICAgIGVnbEJpbmRUZXhJbWFnZSh3aW5kb3ctPmdldERpc3BsYXkoKSwg
bVBidWZmZXIsIEVHTF9CQUNLX0JVRkZFUik7CisgICAgZHJhd1F1YWQobVRleHR1cmVQcm9ncmFt
LCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIC8v
IENsZWFyIHRoZSBiYWNrIGJ1ZmZlciB0byBhIHVuaXF1ZSBjb2xvciAoZ3JlZW4pCisgICAgZ2xD
bGVhckNvbG9yKDAuMGYsIDEuMGYsIDAuMGYsIDEuMGYpOworICAgIGdsQ2xlYXIoR0xfQ09MT1Jf
QlVGRkVSX0JJVCk7CisgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDAsIDI1NSwgMCwgMjU1KTsK
KworICAgIC8vIFVuYmluZCB0aGUgRUdMIHN1cmZhY2UgYW5kIHRyeSB0byBkcmF3IHdpdGggdGhl
IHRleHR1cmUgYWdhaW4sIHRoZSB0ZXh0dXJlJ3Mgc2l6ZSBzaG91bGQKKyAgICAvLyBub3cgYmUg
emVybyBhbmQgaW5jb21wbGV0ZSBzbyB0aGUgYmFjayBidWZmZXIgc2hvdWxkIGJlIGJsYWNrCisg
ICAgZWdsUmVsZWFzZVRleEltYWdlKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCBtUGJ1ZmZlciwgRUdM
X0JBQ0tfQlVGRkVSKTsKKyAgICBkcmF3UXVhZChtVGV4dHVyZVByb2dyYW0sICJwb3NpdGlvbiIs
IDAuNWYpOworICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAwLCAwLCAwLCAyNTUpOworfQorCisv
LyBCaW5kIGEgUGJ1ZmZlciwgcmVkZWZpbmUgdGhlIHRleHR1cmUsIGFuZCB2ZXJpZnkgaXQgcmVu
ZGVycyBjb3JyZWN0bHkKK1RFU1RfUChQYnVmZmVyVGVzdCwgQmluZFRleEltYWdlQW5kUmVkZWZp
bmVUZXh0dXJlKQoreworICAgIGlmICghbVN1cHBvcnRzUGJ1ZmZlcnMpCisgICAgeworICAgICAg
ICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIFBidWZmZXJzIGFyZSBub3Qgc3Vw
cG9ydGVkLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KCFtU3VwcG9ydHNCaW5kVGV4SW1hZ2UpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRl
c3Qgc2tpcHBlZCBiZWNhdXNlIFBidWZmZXIgZG9lcyBub3Qgc3VwcG9ydCBiaW5kaW5nIHRvIFJH
QkEgdGV4dHVyZXMuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygpOworCisgICAgLy8gQXBwbHkgdGhl
IFBidWZmZXIgYW5kIGNsZWFyIGl0IHRvIHB1cnBsZQorICAgIGVnbE1ha2VDdXJyZW50KHdpbmRv
dy0+Z2V0RGlzcGxheSgpLCBtUGJ1ZmZlciwgbVBidWZmZXIsIHdpbmRvdy0+Z2V0Q29udGV4dCgp
KTsKKyAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKworICAgIGdsVmlld3BvcnQoMCwgMCwgc3Rh
dGljX2Nhc3Q8R0xzaXplaT4obVBidWZmZXJTaXplKSwgc3RhdGljX2Nhc3Q8R0xzaXplaT4obVBi
dWZmZXJTaXplKSk7CisgICAgZ2xDbGVhckNvbG9yKDEuMGYsIDAuMGYsIDEuMGYsIDEuMGYpOwor
ICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7CisKKyAgICBFWFBFQ1RfUElYRUxfRVEoc3RhdGljX2Nhc3Q8R0xpbnQ+KG1QYnVmZmVyU2l6
ZSkgLyAyLCBzdGF0aWNfY2FzdDxHTGludD4obVBidWZmZXJTaXplKSAvIDIsIDI1NSwKKyAgICAg
ICAgICAgICAgICAgICAgMCwgMjU1LCAyNTUpOworCisgICAgLy8gQXBwbHkgdGhlIHdpbmRvdyBz
dXJmYWNlCisgICAgZWdsTWFrZUN1cnJlbnQod2luZG93LT5nZXREaXNwbGF5KCksIHdpbmRvdy0+
Z2V0U3VyZmFjZSgpLCB3aW5kb3ctPmdldFN1cmZhY2UoKSwgd2luZG93LT5nZXRDb250ZXh0KCkp
OworCisgICAgLy8gQ3JlYXRlIGEgdGV4dHVyZSBhbmQgYmluZCB0aGUgUGJ1ZmZlciB0byBpdAor
ICAgIEdMdWludCB0ZXh0dXJlID0gMDsKKyAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXh0dXJlKTsK
KyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUpOworICAgIGdsVGV4UGFy
YW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1Qp
OworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxU
RVIsIEdMX05FQVJFU1QpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGVnbEJpbmRUZXhJbWFnZSh3aW5kb3ctPmdldERp
c3BsYXkoKSwgbVBidWZmZXIsIEVHTF9CQUNLX0JVRkZFUik7CisgICAgZ2xWaWV3cG9ydCgwLCAw
LCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7CisgICAgQVNTRVJUX0VHTF9T
VUNDRVNTKCk7CisKKyAgICAvLyBSZWRlZmluZSB0aGUgdGV4dHVyZQorICAgIHVuc2lnbmVkIGlu
dCBwaXhlbFZhbHVlID0gMHhGRkZGMDBGRjsKKyAgICBzdGQ6OnZlY3Rvcjx1bnNpZ25lZCBpbnQ+
IHBpeGVsRGF0YShnZXRXaW5kb3dXaWR0aCgpICogZ2V0V2luZG93SGVpZ2h0KCksIHBpeGVsVmFs
dWUpOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCBnZXRXaW5k
b3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllU
RSwgJnBpeGVsRGF0YVswXSk7CisKKyAgICAvLyBEcmF3IGEgcXVhZCBhbmQgdmVyaWZ5IHRoYXQg
aXQgaXMgbWFnZW50YQorICAgIGdsVXNlUHJvZ3JhbShtVGV4dHVyZVByb2dyYW0pOworICAgIGds
VW5pZm9ybTFpKG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9uLCAwKTsKKworICAgIGRyYXdRdWFkKG1U
ZXh0dXJlUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7CisKKyAgICAvLyBWZXJpZnkgdGhhdCBtYWdlbnRhIHdhcyBkcmF3bgorICAgIEVYUEVDVF9Q
SVhFTF9FUShnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCAyNTUs
IDAsIDI1NSwgMjU1KTsKKworICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRleHR1cmUpOworfQor
CisvLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2gg
cmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJl
IHJ1biBhZ2FpbnN0LgorQU5HTEVfSU5TVEFOVElBVEVfVEVTVChQYnVmZmVyVGVzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMy
X0QzRDExKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgRVMyX0QzRDExX1dBUlAoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
RVMyX0QzRDExX1JFRkVSRU5DRSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdM
RVMoKSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMv
UG9pbnRTcHJpdGVzVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1BvaW50U3ByaXRlc1Rlc3QuY3BwCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Qb2ludFNwcml0
ZXNUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyNiBAQAorLy8KKy8vIENvcHly
aWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8v
IFNvbWUgb2YgdGhlIHBvaW50c3ByaXRlIHRlc3RzIGJlbG93IHdlcmUgcG9ydGVkIGZyb20gS2hy
b25vcyBXZWJHTAorLy8gY29uZm9ybWFuY2UgdGVzdCBzdWl0ZS4KKworI2luY2x1ZGUgInRlc3Rf
dXRpbHMvQU5HTEVUZXN0LmgiCisKKyNpbmNsdWRlIDxjbWF0aD4KKwordXNpbmcgbmFtZXNwYWNl
IGFuZ2xlOworCitjbGFzcyBQb2ludFNwcml0ZXNUZXN0IDogcHVibGljIEFOR0xFVGVzdAorewor
ICBwcm90ZWN0ZWQ6CisgICAgY29uc3QgaW50IHdpbmRvd1dpZHRoID0gMjU2OworICAgIGNvbnN0
IGludCB3aW5kb3dIZWlnaHQgPSAyNTY7CisgICAgUG9pbnRTcHJpdGVzVGVzdCgpCisgICAgewor
ICAgICAgICBzZXRXaW5kb3dXaWR0aCh3aW5kb3dXaWR0aCk7CisgICAgICAgIHNldFdpbmRvd0hl
aWdodCh3aW5kb3dIZWlnaHQpOworICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOworICAgICAg
ICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwor
ICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lk
IFNldFVwKCkKKyAgICB7CisgICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKKyAgICB9CisKKyAg
ICBmbG9hdCBzMnAoZmxvYXQgcykKKyAgICB7CisgICAgICAgIHJldHVybiAocyArIDEuMGYpICog
MC41ZiAqIChHTGZsb2F0KXdpbmRvd1dpZHRoOworICAgIH0KK307CisKKy8vIENoZWNrcyBnbF9Q
b2ludENvb3JkIGFuZCBnbF9Qb2ludFNpemUKKy8vIGh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3Jl
Z2lzdHJ5L3dlYmdsL3Nkay90ZXN0cy9jb25mb3JtYW5jZS9nbHNsL3ZhcmlhYmxlcy9nbC1wb2lu
dGNvb3JkLmh0bWwKK1RFU1RfUChQb2ludFNwcml0ZXNUZXN0LCBQb2ludENvb3JkQW5kUG9pbnRT
aXplQ29tcGxpYW5jZSkKK3sKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBmaWd1cmUgb3V0IHdoeSB0
aGlzIGZhaWxzCisgICAgaWYgKElzSW50ZWwoKSAmJiBHZXRQYXJhbSgpID09IEVTMl9EM0Q5KCkp
CisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBkdWUg
dG8gZmFpbHVyZXMuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyBmcyA9IFNIQURFUl9TT1VSQ0UKKyAgICAoCisgICAgICAgIHBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7Cisg
ICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KAorICAgICAgICAgICAgICAgIGdsX1BvaW50
Q29vcmQueCwKKyAgICAgICAgICAgICAgICBnbF9Qb2ludENvb3JkLnksCisgICAgICAgICAgICAg
ICAgMCwKKyAgICAgICAgICAgICAgICAxKTsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBjb25z
dCBzdGQ6OnN0cmluZyB2cyA9IFNIQURFUl9TT1VSQ0UKKyAgICAoCisgICAgICAgIGF0dHJpYnV0
ZSB2ZWM0IHZQb3NpdGlvbjsKKyAgICAgICAgdW5pZm9ybSBmbG9hdCB1UG9pbnRTaXplOworICAg
ICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICBnbF9Qb2ludFNpemUgPSB1
UG9pbnRTaXplOworICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB2UG9zaXRpb247CisgICAgICAg
IH0KKyAgICApOworCisgICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2cywgZnMp
OworICAgIEFTU0VSVF9ORShwcm9ncmFtLCAwdSk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
CisKKyAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICBHTGZsb2F0IHBvaW50U2l6ZVJh
bmdlWzJdID0ge307CisgICAgZ2xHZXRGbG9hdHYoR0xfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdF
LCBwb2ludFNpemVSYW5nZSk7CisKKyAgICBHTGZsb2F0IG1heFBvaW50U2l6ZSA9IHBvaW50U2l6
ZVJhbmdlWzFdOworCisgICAgQVNTRVJUX1RSVUUobWF4UG9pbnRTaXplID49IDEpOworICAgIG1h
eFBvaW50U2l6ZSA9IGZsb29yZihtYXhQb2ludFNpemUpOworICAgIEFTU0VSVF9UUlVFKChpbnQp
bWF4UG9pbnRTaXplICUgMSA9PSAwKTsKKworICAgIG1heFBvaW50U2l6ZSA9IHN0ZDo6bWluKG1h
eFBvaW50U2l6ZSwgNjQuMGYpOworICAgIEdMZmxvYXQgcG9pbnRXaWR0aCA9IG1heFBvaW50U2l6
ZSAvIHdpbmRvd1dpZHRoOworICAgIEdMaW50IHN0ZXAgPSBzdGF0aWNfY2FzdDxHTGludD4oZmxv
b3JmKG1heFBvaW50U2l6ZSAvIDQpKTsKKyAgICBHTGludCBwb2ludFN0ZXAgPSBzdGQ6Om1heDxH
TGludD4oMSwgc3RlcCk7CisKKyAgICBHTGludCBwb2ludFNpemVMb2MgPSBnbEdldFVuaWZvcm1M
b2NhdGlvbihwcm9ncmFtLCAidVBvaW50U2l6ZSIpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigp
OworCisgICAgZ2xVbmlmb3JtMWYocG9pbnRTaXplTG9jLCBtYXhQb2ludFNpemUpOworICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOworCisgICAgR0xmbG9hdCBwaXhlbE9mZnNldCA9ICgoaW50KW1h
eFBvaW50U2l6ZSAlIDIpID8gKDEuMGYgLyAoR0xmbG9hdCl3aW5kb3dXaWR0aCkgOiAwOworICAg
IEdMdWludCB2ZXJ0ZXhPYmplY3QgPSAwOworICAgIGdsR2VuQnVmZmVycygxLCAmdmVydGV4T2Jq
ZWN0KTsKKyAgICBBU1NFUlRfTkUodmVydGV4T2JqZWN0LCAwVSk7CisgICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7CisKKyAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhPYmpl
Y3QpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgR0xmbG9hdCB0aGVQb2ludHNb
XSA9IHsgLTAuNWYgKyBwaXhlbE9mZnNldCwgLTAuNWYgKyBwaXhlbE9mZnNldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMC41ZiArIHBpeGVsT2Zmc2V0LCAtMC41ZiArIHBpeGVsT2Zm
c2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0wLjVmICsgcGl4ZWxPZmZzZXQsICAw
LjVmICsgcGl4ZWxPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNWYgKyBw
aXhlbE9mZnNldCwgIDAuNWYgKyBwaXhlbE9mZnNldCB9OworCisgICAgZ2xCdWZmZXJEYXRhKEdM
X0FSUkFZX0JVRkZFUiwgc2l6ZW9mKHRoZVBvaW50cyksIHRoZVBvaW50cywgR0xfU1RBVElDX0RS
QVcpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheSgwKTsKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMiwgR0xfRkxPQVQsIEdM
X0ZBTFNFLCAwLCAwKTsKKworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RF
UFRIX0JVRkZFUl9CSVQpOworCisgICAgZ2xEcmF3QXJyYXlzKEdMX1BPSU5UUywgMCwgNCk7Cisg
ICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJnZlcnRl
eE9iamVjdCk7CisKKyAgICBzdGQ6OnN0cmluZyBkZWJ1Z1RleHQ7CisgICAgZm9yIChmbG9hdCBw
eSA9IDA7IHB5IDwgMjsgKytweSkgeworICAgICAgICBmb3IgKGZsb2F0IHB4ID0gMDsgcHggPCAy
OyArK3B4KSB7CisgICAgICAgICAgICBmbG9hdCBwb2ludFggPSAtMC41ZiArIHB4ICsgcGl4ZWxP
ZmZzZXQ7CisgICAgICAgICAgICBmbG9hdCBwb2ludFkgPSAtMC41ZiArIHB5ICsgcGl4ZWxPZmZz
ZXQ7CisgICAgICAgICAgICBmb3IgKGludCB5eSA9IDA7IHl5IDwgbWF4UG9pbnRTaXplOyB5eSAr
PSBwb2ludFN0ZXApIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCB4eCA9IDA7IHh4IDwgbWF4
UG9pbnRTaXplOyB4eCArPSBwb2ludFN0ZXApIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gZm9y
bXVsYSBmb3IgcyBhbmQgdCBmcm9tIE9wZW5HTCBFUyAyLjAgc3BlYyBzZWN0aW9uIDMuMworICAg
ICAgICAgICAgICAgICAgICBmbG9hdCB4dyA9IHMycChwb2ludFgpOworICAgICAgICAgICAgICAg
ICAgICBmbG9hdCB5dyA9IHMycChwb2ludFkpOworICAgICAgICAgICAgICAgICAgICBmbG9hdCB1
ID0geHggLyBtYXhQb2ludFNpemUgKiAyIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgZmxvYXQg
diA9IHl5IC8gbWF4UG9pbnRTaXplICogMiAtIDE7CisgICAgICAgICAgICAgICAgICAgIGludCB4
ZiA9IHN0YXRpY19jYXN0PGludD4oZmxvb3JmKHMycChwb2ludFggKyB1ICogcG9pbnRXaWR0aCkp
KTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHlmID0gc3RhdGljX2Nhc3Q8aW50PihmbG9vcmYo
czJwKHBvaW50WSArIHYgKiBwb2ludFdpZHRoKSkpOworICAgICAgICAgICAgICAgICAgICBmbG9h
dCBzID0gMC41ZiArICh4ZiArIDAuNWYgLSB4dykgLyBtYXhQb2ludFNpemU7CisgICAgICAgICAg
ICAgICAgICAgIGZsb2F0IHQgPSAwLjVmICsgKHlmICsgMC41ZiAtIHl3KSAvIG1heFBvaW50U2l6
ZTsKKyAgICAgICAgICAgICAgICAgICAgR0x1Ynl0ZSBjb2xvcls0XSA9IHsgc3RhdGljX2Nhc3Q8
R0x1Ynl0ZT4oZmxvb3JmKHMgKiAyNTUpKSwgc3RhdGljX2Nhc3Q8R0x1Ynl0ZT4oZmxvb3JmKCgx
IC0gdCkgKiAyNTUpKSwgMCwgMjU1IH07CisgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9QSVhF
TF9ORUFSKHhmLCB5ZiwgY29sb3JbMF0sIGNvbG9yWzFdLCBjb2xvclsyXSwgY29sb3JbM10sIDQp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30K
KworLy8gVmVyaWZ5IHRoYXQgZHJhd2luZyBhIHBvaW50IHdpdGhvdXQgZW5hYmxpbmcgYW55IGF0
dHJpYnV0ZXMgc3VjY2VlZHMKKy8vIGh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3dl
YmdsL3Nkay90ZXN0cy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvcG9pbnQtbm8tYXR0cmlidXRlcy5o
dG1sCitURVNUX1AoUG9pbnRTcHJpdGVzVGVzdCwgUG9pbnRXaXRob3V0QXR0cmlidXRlc0NvbXBs
aWFuY2UpCit7CisgICAgLy8gY2xhbmctZm9ybWF0IG9mZgorICAgIGNvbnN0IHN0ZDo6c3RyaW5n
IGZzID0gU0hBREVSX1NPVVJDRQorICAgICgKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsX0ZyYWdD
b2xvciA9IHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKTsKKyAgICAgICAgfQorICAgICk7CisKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyB2cyA9IFNIQURFUl9TT1VSQ0UKKyAgICAoCisgICAgICAgIHZv
aWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsX1BvaW50U2l6ZSA9IDIuMDsKKyAg
ICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOworICAgICAg
ICB9CisgICAgKTsKKyAgICAvLyBjbGFuZy1mb3JtYXQgb24KKworICAgIEdMdWludCBwcm9ncmFt
ID0gQ29tcGlsZVByb2dyYW0odnMsIGZzKTsKKyAgICBBU1NFUlRfTkUocHJvZ3JhbSwgMHUpOwor
ICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0pOwor
CisgICAgZ2xEcmF3QXJyYXlzKEdMX1BPSU5UUywgMCwgMSk7CisgICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7CisKKyAgICAvLyBleHBlY3QgdGhlIGNlbnRlciBwaXhlbCB0byBiZSBncmVlbgorICAg
IEVYUEVDVF9QSVhFTF9FUSgod2luZG93V2lkdGggLSAxKSAvIDIsICh3aW5kb3dIZWlnaHQgLSAx
KSAvIDIsIDAsIDI1NSwgMCwgMjU1KTsKK30KKworLy8gVGhpcyBpcyBhIHJlZ3Jlc3Npb24gdGVz
dCBmb3IgYSBncmFwaGljcyBkcml2ZXIgYnVnIGFmZmVjdGluZyBlbmQgY2FwcyBvbiByb2FkcyBp
biBNYXBzR0wKKy8vIGh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3dlYmdsL3Nkay90
ZXN0cy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvcG9pbnQtd2l0aC1nbC1wb2ludGNvb3JkLWluLWZy
YWdtZW50LXNoYWRlci5odG1sCitURVNUX1AoUG9pbnRTcHJpdGVzVGVzdCwgUG9pbnRDb29yZFJl
Z3Jlc3Npb25UZXN0KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZzID0gU0hBREVSX1NPVVJD
RQorICAgICgKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgIHZhcnlp
bmcgdmVjNCB2X2NvbG9yOworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAg
ICAgICAvLyBJdCBzZWVtcyBhcyBsb25nIGFzIHRoaXMgbWF0aGVtYXRpY2FsIGV4cHJlc3Npb24g
cmVmZXJlbmNlcworICAgICAgICAgICAgLy8gZ2xfUG9pbnRDb29yZCwgdGhlIGZyYWdtZW50J3Mg
Y29sb3IgaXMgaW5jb3JyZWN0LgorICAgICAgICAgICAgdmVjMiBkaWZmID0gZ2xfUG9pbnRDb29y
ZCAtIHZlYzIoLjUsIC41KTsKKyAgICAgICAgICAgIGlmIChsZW5ndGgoZGlmZikgPiAwLjUpCisg
ICAgICAgICAgICAgICAgZGlzY2FyZDsKKworICAgICAgICAgICAgLy8gVGhlIHBvaW50IHNob3Vs
ZCBiZSBhIHNvbGlkIGNvbG9yLgorICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdl9jb2xvcjsK
KyAgICAgICAgfQorICAgICk7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyB2cyA9IFNIQURFUl9T
T1VSQ0UKKyAgICAoCisgICAgICAgIHZhcnlpbmcgdmVjNCB2X2NvbG9yOworICAgICAgICAvLyBU
aGUgWCBhbmQgWSBjb29yZGluYXRlcyBvZiB0aGUgY2VudGVyIG9mIHRoZSBwb2ludC4KKyAgICAg
ICAgYXR0cmlidXRlIHZlYzIgYV92ZXJ0ZXg7CisgICAgICAgIHVuaWZvcm0gZmxvYXQgdV9wb2lu
dFNpemU7CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsX1Bv
aW50U2l6ZSA9IHVfcG9pbnRTaXplOworICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGFf
dmVydGV4LCAwLjAsIDEuMCk7CisgICAgICAgICAgICAvLyBUaGUgY29sb3Igb2YgdGhlIHBvaW50
LgorICAgICAgICAgICAgdl9jb2xvciA9IHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKTsKKyAgICAg
ICAgfQorICAgICk7CisKKyAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZzLCBm
cyk7CisgICAgQVNTRVJUX05FKHByb2dyYW0sIDB1KTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1Io
KTsKKworICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKKworICAgIEdMZmxvYXQgcG9pbnRTaXpl
UmFuZ2VbMl0gPSB7fTsKKyAgICBnbEdldEZsb2F0dihHTF9BTElBU0VEX1BPSU5UX1NJWkVfUkFO
R0UsIHBvaW50U2l6ZVJhbmdlKTsKKworICAgIEdMZmxvYXQgbWF4UG9pbnRTaXplID0gcG9pbnRT
aXplUmFuZ2VbMV07CisKKyAgICBBU1NFUlRfVFJVRShtYXhQb2ludFNpemUgPiAyKTsKKworICAg
IGdsQ2xlYXJDb2xvcigwLCAwLCAwLCAxKTsKKyAgICBnbERpc2FibGUoR0xfREVQVEhfVEVTVCk7
CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAgIEdMaW50IHBvaW50U2l6
ZUxvYyA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1X3BvaW50U2l6ZSIpOworICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgR0xmbG9hdCBwb2ludFNpemUgPSBzdGQ6Om1p
bjxHTGZsb2F0PigyMC4wZiwgbWF4UG9pbnRTaXplKTsKKyAgICBnbFVuaWZvcm0xZihwb2ludFNp
emVMb2MsIHBvaW50U2l6ZSk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBHTHVp
bnQgdmVydGV4T2JqZWN0ID0gMDsKKyAgICBnbEdlbkJ1ZmZlcnMoMSwgJnZlcnRleE9iamVjdCk7
CisgICAgQVNTRVJUX05FKHZlcnRleE9iamVjdCwgMFUpOworICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOworCisgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgdmVydGV4T2JqZWN0KTsK
KyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIEdMZmxvYXQgdGhlUG9pbnRzW10gPSB7
IDAuMGYsIDAuMGYgfTsKKworICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIHNpemVv
Zih0aGVQb2ludHMpLCB0aGVQb2ludHMsIEdMX1NUQVRJQ19EUkFXKTsKKyAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKKworICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7CisgICAgZ2xW
ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgMCk7CisKKyAg
ICBnbERyYXdBcnJheXMoR0xfUE9JTlRTLCAwLCAxKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1Io
KTsKKworICAgIC8vIGV4cGVjdCB0aGUgY2VudGVyIHBpeGVsIHRvIGJlIGdyZWVuCisgICAgRVhQ
RUNUX1BJWEVMX0VRKCh3aW5kb3dXaWR0aCAtIDEpIC8gMiwgKHdpbmRvd0hlaWdodCAtIDEpIC8g
MiwgMCwgMjU1LCAwLCAyNTUpOworCisgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZ2ZXJ0ZXhPYmpl
Y3QpOworfQorCisvLyBWZXJpZnkgR0xfVkVSVEVYX1BST0dSQU1fUE9JTlRfU0laRSBpcyBlbmFi
bGVkCisvLyBodHRwczovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS93ZWJnbC9zZGsvdGVzdHMv
Y29uZm9ybWFuY2UvcmVuZGVyaW5nL3BvaW50LXNpemUuaHRtbAorVEVTVF9QKFBvaW50U3ByaXRl
c1Rlc3QsIFBvaW50U2l6ZUVuYWJsZWRDb21wbGlhbmNlKQoreworICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nIGZzID0gU0hBREVSX1NPVVJDRQorICAgICgKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisgICAgICAgIHZhcnlpbmcgdmVjNCBjb2xvcjsKKworICAgICAgICB2b2lkIG1haW4o
KQorICAgICAgICB7CisgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSBjb2xvcjsKKyAgICAgICAg
fQorICAgICk7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyB2cyA9IFNIQURFUl9TT1VSQ0UKKyAg
ICAoCisgICAgICAgIGF0dHJpYnV0ZSB2ZWMzIHBvczsKKyAgICAgICAgYXR0cmlidXRlIHZlYzQg
Y29sb3JJbjsKKyAgICAgICAgdW5pZm9ybSBmbG9hdCBwb2ludFNpemU7CisgICAgICAgIHZhcnlp
bmcgdmVjNCBjb2xvcjsKKworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAg
ICAgICBnbF9Qb2ludFNpemUgPSBwb2ludFNpemU7CisgICAgICAgICAgICBjb2xvciA9IGNvbG9y
SW47CisgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zLCAxLjApOworICAgICAgICB9
CisgICAgKTsKKworICAgIC8vIFRoZSBXZWJHTCB0ZXN0IGlzIGRyYXduIG9uIGEgMngyIGNhbnZh
cy4gRW11bGF0ZSB0aGlzIGJ5IHNldHRpbmcgYSAyeDIgdmlld3BvcnQuCisgICAgZ2xWaWV3cG9y
dCgwLCAwLCAyLCAyKTsKKworICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odnMs
IGZzKTsKKyAgICBBU1NFUlRfTkUocHJvZ3JhbSwgMHUpOworICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOworCisgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0pOworCisgICAgZ2xEaXNhYmxlKEdMX0JM
RU5EKTsKKworICAgIC8vIFRoZSBjaG9pY2Ugb2YgKDAuNCwgMC40KSBlbnN1cmVzIHRoYXQgdGhl
IGNlbnRlcnMgb2YgdGhlIHN1cnJvdW5kaW5nCisgICAgLy8gcGl4ZWxzIGFyZSBub3QgY29udGFp
bmVkIHdpdGhpbiB0aGUgcG9pbnQgd2hlbiBpdCBpcyBvZiBzaXplIDEsIGJ1dAorICAgIC8vIHRo
YXQgdGhleSBkZWZpbml0ZWx5IGFyZSB3aGVuIGl0IGlzIG9mIHNpemUgMi4KKyAgICBHTGZsb2F0
IHZlcnRpY2VzW10gPSB7IDAuNGYsIDAuNGYsIDAuMGYgfTsKKyAgICBHTHVieXRlIGNvbG9yc1td
ID0geyAyNTUsIDAsIDAsIDI1NSB9OworCisgICAgR0x1aW50IHZlcnRleE9iamVjdCA9IDA7Cisg
ICAgZ2xHZW5CdWZmZXJzKDEsICZ2ZXJ0ZXhPYmplY3QpOworICAgIEFTU0VSVF9ORSh2ZXJ0ZXhP
YmplY3QsIDBVKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIGdsQmluZEJ1ZmZl
cihHTF9BUlJBWV9CVUZGRVIsIHZlcnRleE9iamVjdCk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7CisKKyAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBzaXplb2YodmVydGljZXMp
ICsgc2l6ZW9mKGNvbG9ycyksIE5VTEwsIEdMX1NUQVRJQ19EUkFXKTsKKyAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKKworICAgIGdsQnVmZmVyU3ViRGF0YShHTF9BUlJBWV9CVUZGRVIsIDAsIHNp
emVvZih2ZXJ0aWNlcyksIHZlcnRpY2VzKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKwor
ICAgIGdsQnVmZmVyU3ViRGF0YShHTF9BUlJBWV9CVUZGRVIsIHNpemVvZih2ZXJ0aWNlcyksIHNp
emVvZihjb2xvcnMpLCBjb2xvcnMpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAg
Z2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCk7CisKKyAg
ICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMywgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCAwKTsK
KyAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOworCisgICAgZ2xWZXJ0ZXhBdHRyaWJQ
b2ludGVyKDEsIDQsIEdMX1VOU0lHTkVEX0JZVEUsIEdMX1RSVUUsIDAsIChHTHZvaWQqKXNpemVv
Zih2ZXJ0aWNlcykpOworICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMSk7CisKKyAgICBH
TGludCBwb2ludFNpemVMb2MgPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAicG9pbnRT
aXplIik7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbFVuaWZvcm0xZihwb2lu
dFNpemVMb2MsIDEuMGYpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xEcmF3
QXJyYXlzKEdMX1BPSU5UUywgMCwgc3RhdGljX2Nhc3Q8R0xzaXplaT4oQXJyYXlTaXplKHZlcnRp
Y2VzKSkgLyAzKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIFRlc3QgdGhl
IHBpeGVscyBhcm91bmQgdGhlIHRhcmdldCBSZWQgcGl4ZWwgdG8gZW5zdXJlCisgICAgLy8gdGhl
eSBhcmUgdGhlIGV4cGVjdGVkIGNvbG9yIHZhbHVlcworICAgIGZvciAoR0xpbnQgeSA9IDA7IHkg
PCAyOyArK3kpCisgICAgeworICAgICAgICBmb3IgKEdMaW50IHggPSAwOyB4IDwgMjsgKyt4KQor
ICAgICAgICB7CisgICAgICAgICAgICAvLyAxeDEgaXMgZXhwZWN0ZWQgdG8gYmUgYSByZWQgcGl4
ZWwKKyAgICAgICAgICAgIC8vIEFsbCBvdGhlcnMgYXJlIGJsYWNrCisgICAgICAgICAgICBHTHVi
eXRlIGV4cGVjdGVkQ29sb3JbNF0gPSB7IDAsIDAsIDAsIDAgfTsKKyAgICAgICAgICAgIGlmICh4
ID09IDEgJiYgeSA9PSAxKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGV4cGVjdGVk
Q29sb3JbMF0gPSAyNTU7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRDb2xvclszXSA9IDI1NTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEVYUEVDVF9QSVhFTF9FUSh4LCB5LCBleHBlY3Rl
ZENvbG9yWzBdLCBleHBlY3RlZENvbG9yWzFdLCBleHBlY3RlZENvbG9yWzJdLCBleHBlY3RlZENv
bG9yWzNdKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEdMZmxvYXQgcG9pbnRTaXplUmFuZ2Vb
Ml0gPSB7fTsKKyAgICBnbEdldEZsb2F0dihHTF9BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UsIHBv
aW50U2l6ZVJhbmdlKTsKKworICAgIGlmIChwb2ludFNpemVSYW5nZVsxXSA+PSAyLjApCisgICAg
eworICAgICAgICAvLyBEcmF3IGEgcG9pbnQgb2Ygc2l6ZSAyIGFuZCB2ZXJpZnkgaXQgZmlsbHMg
dGhlIGFwcHJvcHJpYXRlIHJlZ2lvbi4KKyAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJf
QklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCk7CisKKyAgICAgICAgZ2xVbmlmb3JtMWYocG9pbnRT
aXplTG9jLCAyLjBmKTsKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAg
Z2xEcmF3QXJyYXlzKEdMX1BPSU5UUywgMCwgc3RhdGljX2Nhc3Q8R0xzaXplaT4oQXJyYXlTaXpl
KHZlcnRpY2VzKSkgLyAzKTsKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAg
ICAgLy8gVGVzdCB0aGUgcGl4ZWxzIHRvIGVuc3VyZSB0aGUgdGFyZ2V0IGlzIEFMTCBSZWQgcGl4
ZWxzCisgICAgICAgIGZvciAoR0xpbnQgeSA9IDA7IHkgPCAyOyArK3kpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGZvciAoR0xpbnQgeCA9IDA7IHggPCAyOyArK3gpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgRVhQRUNUX1BJWEVMX0VRKHgsIHksIDI1NSwgMCwgMCwgMjU1KTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGdsRGVsZXRlQnVmZmVycygxLCAm
dmVydGV4T2JqZWN0KTsKK30KKworLy8gVmVyaWZ5IHRoYXQgcmVuZGVyaW5nIHdvcmtzIGNvcnJl
Y3RseSB3aGVuIGdsX1BvaW50U2l6ZSBpcyBkZWNsYXJlZCBpbiBhIHNoYWRlciBidXQgaXNuJ3Qg
dXNlZAorVEVTVF9QKFBvaW50U3ByaXRlc1Rlc3QsIFBvaW50U2l6ZURlY2xhcmVkQnV0VW51c2Vk
KQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzID0gU0hBREVSX1NPVVJDRQorICAgICgKKyAg
ICAgICAgYXR0cmlidXRlIGhpZ2hwIHZlYzQgcG9zaXRpb247CisKKyAgICAgICAgdm9pZCBtYWlu
KHZvaWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsX1BvaW50U2l6ZSA9IDEuMDsKKyAgICAg
ICAgICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247CisgICAgICAgIH0KKyAgICApOworCisgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgZnMgPSBTSEFERVJfU09VUkNFCisgICAgKAorICAgICAgICB2b2lk
IG1haW4odm9pZCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgx
LjAsIDAuMCwgMC4wLCAxLjApOworICAgICAgICB9CisgICAgKTsKKworICAgIEdMdWludCBwcm9n
cmFtID0gQ29tcGlsZVByb2dyYW0odnMsIGZzKTsKKyAgICBBU1NFUlRfTkUocHJvZ3JhbSwgMHUp
OworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0p
OworICAgIGRyYXdRdWFkKHByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYsIDEuMGYpOworICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gZXhwZWN0IHRoZSBjZW50ZXIgcGl4ZWwgdG8g
YmUgcmVkCisgICAgRVhQRUNUX1BJWEVMX0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5k
b3dIZWlnaHQoKSAvIDIsIDI1NSwgMCwgMCwgMjU1KTsKKworICAgIGdsRGVsZXRlUHJvZ3JhbShw
cm9ncmFtKTsKK30KKworLy8gVGVzdCB0byBjb3ZlciBhIGJ1ZyB3aGVyZSB0aGUgRDNEMTEgcmFz
dGVyaXplciBzdGF0ZSB3b3VsZCBub3QgYmUgdXBkYXRlIHdoZW4gc3dpdGNoaW5nIGJldHdlZW4K
Ky8vIGRyYXcgdHlwZXMuICBUaGlzIGNhdXNlcyB0aGUgY3VsbCBmYWNlIHRvIHBvdGVudGlhbGx5
IGJlIGluY29ycmVjdCB3aGVuIGRyYXdpbmcgZW11bGF0ZWQgcG9pbnQKKy8vIHNwaXRlcy4KK1RF
U1RfUChQb2ludFNwcml0ZXNUZXN0LCBQb2ludFNwcml0ZUFsdGVybmF0aW5nRHJhd1R5cGVzKQor
eworICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBwb2ludEZT
ID0gU0hBREVSX1NPVVJDRQorICAgICgKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xv
ciA9IHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKTsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBj
b25zdCBzdGQ6OnN0cmluZyBwb2ludFZTID0gU0hBREVSX1NPVVJDRQorICAgICgKKyAgICAgICAg
dm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xfUG9pbnRTaXplID0gMTYuMDsK
KyAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOworICAg
ICAgICB9CisgICAgKTsKKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHF1YWRGUyA9IFNIQURFUl9T
T1VSQ0UKKyAgICAoCisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICB2
b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEu
MCwgMC4wLCAwLjAsIDEuMCk7CisgICAgICAgIH0KKyAgICApOworCisgICAgY29uc3Qgc3RkOjpz
dHJpbmcgcXVhZFZTID0gU0hBREVSX1NPVVJDRQorICAgICgKKyAgICAgICAgcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IHBvczsKKyAgICAgICAgdm9pZCBt
YWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBwb3M7CisgICAgICAg
IH0KKyAgICApOworICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorCisgICAgR0x1aW50IHBvaW50UHJv
Z3JhbSA9IENvbXBpbGVQcm9ncmFtKHBvaW50VlMsIHBvaW50RlMpOworICAgIEFTU0VSVF9ORShw
b2ludFByb2dyYW0sIDB1KTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIEdMdWlu
dCBxdWFkUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHF1YWRWUywgcXVhZEZTKTsKKyAgICBBU1NF
UlRfTkUocG9pbnRQcm9ncmFtLCAwdSk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAg
ICBnbEVuYWJsZShHTF9DVUxMX0ZBQ0UpOworICAgIGdsQ3VsbEZhY2UoR0xfRlJPTlQpOworCisg
ICAgY29uc3QgR0xmbG9hdCBxdWFkVmVydGljZXNbXSA9IHsKKyAgICAgICAgLTEuMGYsIDEuMGYs
IDAuNWYsIDEuMGYsIC0xLjBmLCAwLjVmLCAtMS4wZiwgLTEuMGYsIDAuNWYsCisKKyAgICAgICAg
LTEuMGYsIDEuMGYsIDAuNWYsIDEuMGYsIDEuMGYsICAwLjVmLCAxLjBmLCAgLTEuMGYsIDAuNWYs
CisgICAgfTsKKworICAgIGdsVXNlUHJvZ3JhbShxdWFkUHJvZ3JhbSk7CisgICAgR0xpbnQgcG9z
aXRpb25Mb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24ocXVhZFByb2dyYW0sICJwb3MiKTsK
KyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25Mb2NhdGlvbiwgMywgR0xfRkxPQVQs
IEdMX0ZBTFNFLCAwLCBxdWFkVmVydGljZXMpOworICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJy
YXkocG9zaXRpb25Mb2NhdGlvbik7CisgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMCwg
Nik7CisKKyAgICBnbFVzZVByb2dyYW0ocG9pbnRQcm9ncmFtKTsKKyAgICBnbERyYXdBcnJheXMo
R0xfUE9JTlRTLCAwLCAxKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIGV4
cGVjdCB0aGUgY2VudGVyIHBpeGVsIHRvIGJlIGdyZWVuCisgICAgRVhQRUNUX1BJWEVMX0VRKGdl
dFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIDAsIDI1NSwgMCwgMjU1
KTsKKworICAgIGdsRGVsZXRlUHJvZ3JhbShwb2ludFByb2dyYW0pOworICAgIGdsRGVsZXRlUHJv
Z3JhbShxdWFkUHJvZ3JhbSk7Cit9CisKKy8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25m
aWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUworLy8gbWFqb3IgdmVy
c2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgorLy8KKy8vIFdlIHRlc3Qg
b24gRDNEMTEgOV8zIGJlY2F1c2UgdGhlIGV4aXN0aW5nIEQzRDExIFBvaW50U3ByaXRlIGltcGxl
bWVudGF0aW9uCisvLyB1c2VzIEdlb21ldHJ5IFNoYWRlcnMgd2hpY2ggYXJlIG5vdCBzdXBwb3J0
ZWQgZm9yIDlfMy4KKy8vIEQzRDkgYW5kIEQzRDExIGFyZSBhbHNvIHRlc3RlZCB0byBlbnN1cmUg
bm8gcmVncmVzc2lvbnMuCitBTkdMRV9JTlNUQU5USUFURV9URVNUKFBvaW50U3ByaXRlc1Rlc3Qs
CisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCisgICAgICAgICAgICAgICAgICAg
ICAgIEVTMl9EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzMo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAorICAgICAgICAgICAgICAg
ICAgICAgICBFUzJfT1BFTkdMRVMoKSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvZ2xfdGVzdHMvUHJvZ3JhbUJpbmFyeVRlc3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Qcm9ncmFtQmluYXJ5VGVz
dC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2dsX3Rlc3RzL1Byb2dyYW1CaW5hcnlUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDYzOSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisK
KyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNpbmNsdWRlICJFR0xX
aW5kb3cuaCIKKyNpbmNsdWRlICJPU1dpbmRvdy5oIgorI2luY2x1ZGUgInRlc3RfdXRpbHMvYW5n
bGVfdGVzdF9jb25maWdzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKworY2xhc3MgUHJv
Z3JhbUJpbmFyeVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBQ
cm9ncmFtQmluYXJ5VGVzdCgpCisgICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOwor
ICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKKyAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4
KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAgICBzZXRDb25maWdCbHVl
Qml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAgIH0KKworICAgIHZv
aWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOwor
CisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9IFNIQURFUl9T
T1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAgYXR0cmlidXRlIHZlYzQgaW5wdXRBdHRyaWJ1
dGU7CisgICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGdsX1Bvc2l0aW9uID0gaW5wdXRBdHRyaWJ1dGU7CisgICAgICAgICAgICB9CisgICAgICAg
ICk7CisKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBT
SEFERVJfU09VUkNFCisgICAgICAgICgKKyAgICAgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLDAsMCwxKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9n
cmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOworICAgICAgICBp
ZiAobVByb2dyYW0gPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgRkFJTCgpIDw8ICJzaGFk
ZXIgY29tcGlsYXRpb24gZmFpbGVkLiI7CisgICAgICAgIH0KKworICAgICAgICBnbEdlbkJ1ZmZl
cnMoMSwgJm1CdWZmZXIpOworICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBt
QnVmZmVyKTsKKyAgICAgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgMTI4LCBOVUxM
LCBHTF9TVEFUSUNfRFJBVyk7CisgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIs
IDApOworCisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIH0KKworICAgIHZvaWQg
VGVhckRvd24oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9n
cmFtKTsKKyAgICAgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtQnVmZmVyKTsKKworICAgICAgICBB
TkdMRVRlc3Q6OlRlYXJEb3duKCk7CisgICAgfQorCisgICAgR0xpbnQgZ2V0QXZhaWxhYmxlUHJv
Z3JhbUJpbmFyeUZvcm1hdENvdW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIEdMaW50IGZvcm1h
dENvdW50OworICAgICAgICBnbEdldEludGVnZXJ2KEdMX05VTV9QUk9HUkFNX0JJTkFSWV9GT1JN
QVRTX09FUywgJmZvcm1hdENvdW50KTsKKyAgICAgICAgcmV0dXJuIGZvcm1hdENvdW50OworICAg
IH0KKworICAgIEdMdWludCBtUHJvZ3JhbTsKKyAgICBHTHVpbnQgbUJ1ZmZlcjsKK307CisKKy8v
IFRoaXMgdGVzdHMgdGhlIGFzc3VtcHRpb24gdGhhdCBmbG9hdCBhdHRyaWJzIG9mIGRpZmZlcmVu
dCBzaXplCisvLyBzaG91bGQgbm90IGludGVybmFsbHkgY2F1c2UgYSB2ZXJ0ZXggc2hhZGVyIHJl
Y29tcGlsZSAoZm9yIGNvbnZlcnNpb24pLgorVEVTVF9QKFByb2dyYW1CaW5hcnlUZXN0LCBGbG9h
dER5bmFtaWNTaGFkZXJTaXplKQoreworICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VT
X2dldF9wcm9ncmFtX2JpbmFyeSIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0
IHNraXBwZWQgYmVjYXVzZSBHTF9PRVNfZ2V0X3Byb2dyYW1fYmluYXJ5IGlzIG5vdCBhdmFpbGFi
bGUuIgorICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKGdldEF2YWlsYWJsZVByb2dyYW1CaW5hcnlGb3JtYXRDb3VudCgpID09
IDApCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIG5v
IHByb2dyYW0gYmluYXJ5IGZvcm1hdHMgYXJlIGF2YWlsYWJsZS4iIDw8IHN0ZDo6ZW5kbDsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAg
Z2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZlcik7CisKKyAgICBnbFZlcnRleEF0
dHJpYlBvaW50ZXIoMCwgNCwgR0xfRkxPQVQsIEdMX0ZBTFNFLCA4LCBOVUxMKTsKKyAgICBnbEVu
YWJsZVZlcnRleEF0dHJpYkFycmF5KDApOworICAgIGdsRHJhd0FycmF5cyhHTF9QT0lOVFMsIDAs
IDEpOworCisgICAgR0xpbnQgcHJvZ3JhbUxlbmd0aDsKKyAgICBnbEdldFByb2dyYW1pdihtUHJv
Z3JhbSwgR0xfUFJPR1JBTV9CSU5BUllfTEVOR1RIX09FUywgJnByb2dyYW1MZW5ndGgpOworCisg
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBmb3IgKEdMc2l6ZWkgc2l6ZSA9IDE7IHNp
emUgPD0gMzsgc2l6ZSsrKQorICAgIHsKKyAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKDAs
IHNpemUsIEdMX0ZMT0FULCBHTF9GQUxTRSwgOCwgTlVMTCk7CisgICAgICAgIGdsRW5hYmxlVmVy
dGV4QXR0cmliQXJyYXkoMCk7CisgICAgICAgIGdsRHJhd0FycmF5cyhHTF9QT0lOVFMsIDAsIDEp
OworCisgICAgICAgIEdMaW50IG5ld1Byb2dyYW1MZW5ndGg7CisgICAgICAgIGdsR2V0UHJvZ3Jh
bWl2KG1Qcm9ncmFtLCBHTF9QUk9HUkFNX0JJTkFSWV9MRU5HVEhfT0VTLCAmbmV3UHJvZ3JhbUxl
bmd0aCk7CisgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgICAgICBFWFBFQ1RfRVEo
cHJvZ3JhbUxlbmd0aCwgbmV3UHJvZ3JhbUxlbmd0aCk7CisgICAgfQorfQorCisvLyBUZXN0cyB0
aGF0IHN3aXRjaGluZyBiZXR3ZWVuIHNpZ25lZCBhbmQgdW5zaWduZWQgdW4tbm9ybWFsaXplZCBk
YXRhIGRvZXNuJ3QgdHJpZ2dlciBhIGJ1ZworLy8gaW4gdGhlIEQzRDExIGJhY2stZW5kLgorVEVT
VF9QKFByb2dyYW1CaW5hcnlUZXN0LCBEeW5hbWljU2hhZGVyc1NpZ25hdHVyZUJ1ZykKK3sKKyAg
ICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZG
RVIsIG1CdWZmZXIpOworCisgICAgR0xpbnQgYXR0cmliTG9jYXRpb24gPSBnbEdldEF0dHJpYkxv
Y2F0aW9uKG1Qcm9ncmFtLCAiaW5wdXRBdHRyaWJ1dGUiKTsKKyAgICBBU1NFUlRfTkUoLTEsIGF0
dHJpYkxvY2F0aW9uKTsKKyAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGF0dHJpYkxvY2F0
aW9uKTsKKworICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihhdHRyaWJMb2NhdGlvbiwgMiwgR0xf
QllURSwgR0xfRkFMU0UsIDAsIG51bGxwdHIpOworICAgIGdsRHJhd0FycmF5cyhHTF9QT0lOVFMs
IDAsIDEpOworCisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKGF0dHJpYkxvY2F0aW9uLCAyLCBH
TF9VTlNJR05FRF9CWVRFLCBHTF9GQUxTRSwgMCwgbnVsbHB0cik7CisgICAgZ2xEcmF3QXJyYXlz
KEdMX1BPSU5UUywgMCwgMSk7Cit9CisKKy8vIFRoaXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8gc3Vj
Y2Vzc2Z1bGx5IHNhdmUgYW5kIGxvYWQgYSBwcm9ncmFtIGJpbmFyeS4KK1RFU1RfUChQcm9ncmFt
QmluYXJ5VGVzdCwgU2F2ZUFuZExvYWRCaW5hcnkpCit7CisgICAgaWYgKCFleHRlbnNpb25FbmFi
bGVkKCJHTF9PRVNfZ2V0X3Byb2dyYW1fYmluYXJ5IikpCisgICAgeworICAgICAgICBzdGQ6OmNv
dXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEdMX09FU19nZXRfcHJvZ3JhbV9iaW5hcnkgaXMg
bm90IGF2YWlsYWJsZS4iCisgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZ2V0QXZhaWxhYmxlUHJvZ3JhbUJpbmFyeUZvcm1h
dENvdW50KCkgPT0gMCkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVk
IGJlY2F1c2Ugbm8gcHJvZ3JhbSBiaW5hcnkgZm9ybWF0cyBhcmUgYXZhaWxhYmxlLiIgPDwgc3Rk
OjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR0xpbnQgcHJvZ3JhbUxlbmd0
aCA9IDA7CisgICAgR0xpbnQgd3JpdHRlbkxlbmd0aCA9IDA7CisgICAgR0xlbnVtIGJpbmFyeUZv
cm1hdCA9IDA7CisKKyAgICBnbEdldFByb2dyYW1pdihtUHJvZ3JhbSwgR0xfUFJPR1JBTV9CSU5B
UllfTEVOR1RIX09FUywgJnByb2dyYW1MZW5ndGgpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OworCisgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gYmluYXJ5KHByb2dyYW1MZW5ndGgpOworICAg
IGdsR2V0UHJvZ3JhbUJpbmFyeU9FUyhtUHJvZ3JhbSwgcHJvZ3JhbUxlbmd0aCwgJndyaXR0ZW5M
ZW5ndGgsICZiaW5hcnlGb3JtYXQsIGJpbmFyeS5kYXRhKCkpOworICAgIEVYUEVDVF9HTF9OT19F
UlJPUigpOworCisgICAgLy8gVGhlIGxlbmd0aHMgcmVwb3J0ZWQgYnkgZ2xHZXRQcm9ncmFtaXYg
YW5kIGdsR2V0UHJvZ3JhbUJpbmFyeU9FUyBzaG91bGQgbWF0Y2gKKyAgICBFWFBFQ1RfRVEocHJv
Z3JhbUxlbmd0aCwgd3JpdHRlbkxlbmd0aCk7CisKKyAgICBpZiAod3JpdHRlbkxlbmd0aCkKKyAg
ICB7CisgICAgICAgIEdMdWludCBwcm9ncmFtMiA9IGdsQ3JlYXRlUHJvZ3JhbSgpOworICAgICAg
ICBnbFByb2dyYW1CaW5hcnlPRVMocHJvZ3JhbTIsIGJpbmFyeUZvcm1hdCwgYmluYXJ5LmRhdGEo
KSwgd3JpdHRlbkxlbmd0aCk7CisKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAg
ICAgICAgR0xpbnQgbGlua1N0YXR1czsKKyAgICAgICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbTIs
IEdMX0xJTktfU1RBVFVTLCAmbGlua1N0YXR1cyk7CisgICAgICAgIGlmIChsaW5rU3RhdHVzID09
IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIEdMaW50IGluZm9Mb2dMZW5ndGg7CisgICAgICAg
ICAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtMiwgR0xfSU5GT19MT0dfTEVOR1RILCAmaW5mb0xv
Z0xlbmd0aCk7CisKKyAgICAgICAgICAgIGlmIChpbmZvTG9nTGVuZ3RoID4gMCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxHTGNoYXI+IGluZm9Mb2coaW5mb0xv
Z0xlbmd0aCk7CisgICAgICAgICAgICAgICAgZ2xHZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtMiwg
c3RhdGljX2Nhc3Q8R0xzaXplaT4oaW5mb0xvZy5zaXplKCkpLCBOVUxMLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJmluZm9Mb2dbMF0pOworICAgICAgICAgICAgICAgIEZB
SUwoKSA8PCAicHJvZ3JhbSBsaW5rIGZhaWxlZDogIiA8PCAmaW5mb0xvZ1swXTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBG
QUlMKCkgPDwgInByb2dyYW0gbGluayBmYWlsZWQuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsVXNlUHJvZ3JhbShwcm9n
cmFtMik7CisgICAgICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtQnVmZmVy
KTsKKworICAgICAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDQsIEdMX0ZMT0FULCBH
TF9GQUxTRSwgOCwgTlVMTCk7CisgICAgICAgICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KDApOworICAgICAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1BPSU5UUywgMCwgMSk7CisKKyAgICAg
ICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgICAgICB9CisKKyAgICAgICAgZ2xEZWxl
dGVQcm9ncmFtKHByb2dyYW0yKTsKKyAgICB9Cit9CisKKy8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3
aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpv
ciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCitBTkdMRV9JTlNU
QU5USUFURV9URVNUKFByb2dyYW1CaW5hcnlUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICBF
UzJfRDNEOSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgRVMzX0QzRDExKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9P
UEVOR0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgpKTsKKworY2xhc3Mg
UHJvZ3JhbUJpbmFyeVRyYW5zZm9ybUZlZWRiYWNrVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sK
KyAgcHJvdGVjdGVkOgorICAgIFByb2dyYW1CaW5hcnlUcmFuc2Zvcm1GZWVkYmFja1Rlc3QoKQor
ICAgIHsKKyAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKKyAgICAgICAgc2V0V2luZG93SGVp
Z2h0KDEyOCk7CisgICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7CisgICAgICAgIHNldENvbmZp
Z0dyZWVuQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7CisgICAgICAgIHNl
dENvbmZpZ0FscGhhQml0cyg4KTsKKyAgICB9CisKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKKworICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgICAgICggICAj
dmVyc2lvbiAzMDAgZXNcbgorICAgICAgICAgICAgaW4gdmVjNCBpbnB1dEF0dHJpYnV0ZTsKKyAg
ICAgICAgICAgIG91dCB2ZWM0IG91dHB1dFZhcnlpbmc7CisgICAgICAgICAgICB2b2lkIG1haW4o
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dHB1dFZhcnlpbmcgPSBpbnB1dEF0
dHJpYnV0ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKCAg
ICN2ZXJzaW9uIDMwMCBlc1xuCisgICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7Cisg
ICAgICAgICAgICBvdXQgdmVjNCBvdXRwdXRDb2xvcjsKKyAgICAgICAgICAgIHZvaWQgbWFpbigp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0cHV0Q29sb3IgPSB2ZWM0KDEsMCww
LDEpOworICAgICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAgIHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzOworICAgICAgICB0cmFuc2Zvcm1G
ZWVkYmFja1ZhcnlpbmdzLnB1c2hfYmFjaygib3V0cHV0VmFyeWluZyIpOworCisgICAgICAgIG1Q
cm9ncmFtID0gQ29tcGlsZVByb2dyYW1XaXRoVHJhbnNmb3JtRmVlZGJhY2soCisgICAgICAgICAg
ICB2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlLCB0cmFuc2Zvcm1GZWVk
YmFja1ZhcnlpbmdzLAorICAgICAgICAgICAgR0xfU0VQQVJBVEVfQVRUUklCUyk7CisgICAgICAg
IGlmIChtUHJvZ3JhbSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBGQUlMKCkgPDwgInNo
YWRlciBjb21waWxhdGlvbiBmYWlsZWQuIjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVF9H
TF9OT19FUlJPUigpOworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKKworICAgICAgICBBTkdMRVRl
c3Q6OlRlYXJEb3duKCk7CisgICAgfQorCisgICAgR0xpbnQgZ2V0QXZhaWxhYmxlUHJvZ3JhbUJp
bmFyeUZvcm1hdENvdW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIEdMaW50IGZvcm1hdENvdW50
OworICAgICAgICBnbEdldEludGVnZXJ2KEdMX05VTV9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTX09F
UywgJmZvcm1hdENvdW50KTsKKyAgICAgICAgcmV0dXJuIGZvcm1hdENvdW50OworICAgIH0KKwor
ICAgIEdMdWludCBtUHJvZ3JhbTsKK307CisKKy8vIFRoaXMgdGVzdHMgdGhlIGFzc3VtcHRpb24g
dGhhdCBmbG9hdCBhdHRyaWJzIG9mIGRpZmZlcmVudCBzaXplCisvLyBzaG91bGQgbm90IGludGVy
bmFsbHkgY2F1c2UgYSB2ZXJ0ZXggc2hhZGVyIHJlY29tcGlsZSAoZm9yIGNvbnZlcnNpb24pLgor
VEVTVF9QKFByb2dyYW1CaW5hcnlUcmFuc2Zvcm1GZWVkYmFja1Rlc3QsIEdldFRyYW5zZm9ybUZl
ZWRiYWNrVmFyeWluZykKK3sKKyAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19nZXRf
cHJvZ3JhbV9iaW5hcnkiKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lw
cGVkIGJlY2F1c2UgR0xfT0VTX2dldF9wcm9ncmFtX2JpbmFyeSBpcyBub3QgYXZhaWxhYmxlLiIK
KyAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChnZXRBdmFpbGFibGVQcm9ncmFtQmluYXJ5Rm9ybWF0Q291bnQoKSA9PSAwKQor
ICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBubyBwcm9n
cmFtIGJpbmFyeSBmb3JtYXRzIGFyZSBhdmFpbGFibGUuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBiaW5hcnkoMCk7Cisg
ICAgR0xpbnQgcHJvZ3JhbUxlbmd0aCA9IDA7CisgICAgR0xpbnQgd3JpdHRlbkxlbmd0aCA9IDA7
CisgICAgR0xlbnVtIGJpbmFyeUZvcm1hdCA9IDA7CisKKyAgICAvLyBTYXZlIHRoZSBwcm9ncmFt
IGJpbmFyeSBvdXQKKyAgICBnbEdldFByb2dyYW1pdihtUHJvZ3JhbSwgR0xfUFJPR1JBTV9CSU5B
UllfTEVOR1RIX09FUywgJnByb2dyYW1MZW5ndGgpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigp
OworICAgIGJpbmFyeS5yZXNpemUocHJvZ3JhbUxlbmd0aCk7CisgICAgZ2xHZXRQcm9ncmFtQmlu
YXJ5T0VTKG1Qcm9ncmFtLCBwcm9ncmFtTGVuZ3RoLCAmd3JpdHRlbkxlbmd0aCwgJmJpbmFyeUZv
cm1hdCwgYmluYXJ5LmRhdGEoKSk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBn
bERlbGV0ZVByb2dyYW0obVByb2dyYW0pOworCisgICAgLy8gTG9hZCBwcm9ncmFtIGJpbmFyeQor
ICAgIG1Qcm9ncmFtID0gZ2xDcmVhdGVQcm9ncmFtKCk7CisgICAgZ2xQcm9ncmFtQmluYXJ5T0VT
KG1Qcm9ncmFtLCBiaW5hcnlGb3JtYXQsIGJpbmFyeS5kYXRhKCksIHdyaXR0ZW5MZW5ndGgpOwor
CisgICAgLy8gRW5zdXJlIHRoZSBsb2FkZWQgYmluYXJ5IGlzIGxpbmtlZAorICAgIEdMaW50IGxp
bmtTdGF0dXM7CisgICAgZ2xHZXRQcm9ncmFtaXYobVByb2dyYW0sIEdMX0xJTktfU1RBVFVTLCAm
bGlua1N0YXR1cyk7CisgICAgRVhQRUNUX1RSVUUobGlua1N0YXR1cyAhPSAwKTsKKworICAgIC8v
IFF1ZXJ5IGluZm9ybWF0aW9uIGFib3V0IHRoZSB0cmFuc2Zvcm0gZmVlZGJhY2sgdmFyeWluZwor
ICAgIGNoYXIgdmFyeWluZ05hbWVbNjRdOworICAgIEdMc2l6ZWkgdmFyeWluZ1NpemUgPSAwOwor
ICAgIEdMZW51bSB2YXJ5aW5nVHlwZSA9IEdMX05PTkU7CisKKyAgICBnbEdldFRyYW5zZm9ybUZl
ZWRiYWNrVmFyeWluZyhtUHJvZ3JhbSwgMCwgNjQsICZ3cml0dGVuTGVuZ3RoLCAmdmFyeWluZ1Np
emUsICZ2YXJ5aW5nVHlwZSwgdmFyeWluZ05hbWUpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OworCisgICAgRVhQRUNUX0VRKDEzLCB3cml0dGVuTGVuZ3RoKTsKKyAgICBFWFBFQ1RfU1RSRVEo
Im91dHB1dFZhcnlpbmciLCB2YXJ5aW5nTmFtZSk7CisgICAgRVhQRUNUX0VRKDEsIHZhcnlpbmdT
aXplKTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZMT0FUX1ZFQzQsIHZhcnlpbmdUeXBlKTsK
KworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworfQorCisvLyBVc2UgdGhpcyB0byBzZWxlY3Qg
d2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFq
b3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgorQU5HTEVfSU5T
VEFOVElBVEVfVEVTVChQcm9ncmFtQmluYXJ5VHJhbnNmb3JtRmVlZGJhY2tUZXN0LAorICAgICAg
ICAgICAgICAgICAgICAgICBFUzNfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMz
X09QRU5HTCgpKTsKKworLy8gRm9yIHRoZSBQcm9ncmFtQmluYXJpZXNBY3Jvc3NQbGF0Zm9ybXMg
dGVzdHMsIHdlIG5lZWQgdHdvIHNldHMgb2YgcGFyYW1zOgorLy8gLSBhIHNldCB0byBzYXZlIHRo
ZSBwcm9ncmFtIGJpbmFyeQorLy8gLSBhIHNldCB0byBsb2FkIHRoZSBwcm9ncmFtIGJpbmFyeQor
Ly8gV2UgY29tYmluZSB0aGVzZSBpbnRvIG9uZSBzdHJ1Y3QgZXh0ZW5kaW5nIFBsYXRmb3JtUGFy
YW1ldGVycyBzbyB3ZSBjYW4gcmV1c2UgZXhpc3RpbmcgQU5HTEUgdGVzdCBtYWNyb3MKK3N0cnVj
dCBQbGF0Zm9ybXNXaXRoTGlua1Jlc3VsdCA6IFBsYXRmb3JtUGFyYW1ldGVycworeworICAgIFBs
YXRmb3Jtc1dpdGhMaW5rUmVzdWx0KFBsYXRmb3JtUGFyYW1ldGVycyBzYXZlUGFyYW1zLCBQbGF0
Zm9ybVBhcmFtZXRlcnMgbG9hZFBhcmFtc0luLCBib29sIGV4cGVjdGVkTGlua1Jlc3VsdEluKQor
ICAgIHsKKyAgICAgICAgbWFqb3JWZXJzaW9uID0gc2F2ZVBhcmFtcy5tYWpvclZlcnNpb247Cisg
ICAgICAgIG1pbm9yVmVyc2lvbiA9IHNhdmVQYXJhbXMubWlub3JWZXJzaW9uOworICAgICAgICBl
Z2xQYXJhbWV0ZXJzID0gc2F2ZVBhcmFtcy5lZ2xQYXJhbWV0ZXJzOworICAgICAgICBsb2FkUGFy
YW1zID0gbG9hZFBhcmFtc0luOworICAgICAgICBleHBlY3RlZExpbmtSZXN1bHQgPSBleHBlY3Rl
ZExpbmtSZXN1bHRJbjsKKyAgICB9CisKKyAgICBQbGF0Zm9ybVBhcmFtZXRlcnMgbG9hZFBhcmFt
czsKKyAgICBib29sIGV4cGVjdGVkTGlua1Jlc3VsdDsKK307CisKKy8vIFByb3ZpZGUgYSBjdXN0
b20gZ3Rlc3QgcGFyYW1ldGVyIG5hbWUgZnVuY3Rpb24gZm9yIFBsYXRmb3Jtc1dpdGhMaW5rUmVz
dWx0CisvLyB0byBhdm9pZCByZXR1cm5pbmcgdGhlIHNhbWUgcGFyYW1ldGVyIG5hbWUgdHdpY2Uu
IFN1Y2ggYSBjb25mbGljdCB3b3VsZCBoYXBwZW4KKy8vIGJldHdlZW4gRVMyX0QzRDExX3RvX0VT
MkQzRDExIGFuZCBFUzJfRDNEMTFfdG9fRVMzRDNEMTEgYXMgdGhleSB3ZXJlIGJvdGgKKy8vIG5h
bWVkIEVTMl9EM0QxMQorc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgc3Ry
ZWFtLCBjb25zdCBQbGF0Zm9ybXNXaXRoTGlua1Jlc3VsdCAmcGxhdGZvcm0pCit7CisgICAgY29u
c3QgUGxhdGZvcm1QYXJhbWV0ZXJzICZwbGF0Zm9ybTEgPSBwbGF0Zm9ybTsKKyAgICBjb25zdCBQ
bGF0Zm9ybVBhcmFtZXRlcnMgJnBsYXRmb3JtMiA9IHBsYXRmb3JtLmxvYWRQYXJhbXM7CisgICAg
c3RyZWFtIDw8IHBsYXRmb3JtMSA8PCAiX3RvXyIgPDwgcGxhdGZvcm0yOworICAgIHJldHVybiBz
dHJlYW07Cit9CisKK2NsYXNzIFByb2dyYW1CaW5hcmllc0Fjcm9zc1BsYXRmb3JtcyA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPFBsYXRmb3Jtc1dpdGhMaW5rUmVzdWx0PgoreworICBw
dWJsaWM6CisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBtT1NXaW5k
b3cgPSBDcmVhdGVPU1dpbmRvdygpOworICAgICAgICBib29sIHJlc3VsdCA9IG1PU1dpbmRvdy0+
aW5pdGlhbGl6ZSgiUHJvZ3JhbUJpbmFyaWVzQWNyb3NzUmVuZGVyZXJzVGVzdHMiLCAxMDAsIDEw
MCk7CisKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBmYWxzZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgRkFJTCgpIDw8ICJGYWlsZWQgdG8gY3JlYXRlIE9TIHdpbmRvdyI7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBFR0xXaW5kb3cgKmNyZWF0ZUFuZEluaXRFR0xXaW5kb3coYW5nbGU6OlBsYXRm
b3JtUGFyYW1ldGVycyAmcGFyYW0pCisgICAgeworICAgICAgICBFR0xXaW5kb3cgKmVnbFdpbmRv
dyA9CisgICAgICAgICAgICBuZXcgRUdMV2luZG93KHBhcmFtLm1ham9yVmVyc2lvbiwgcGFyYW0u
bWlub3JWZXJzaW9uLCBwYXJhbS5lZ2xQYXJhbWV0ZXJzKTsKKyAgICAgICAgYm9vbCByZXN1bHQg
PSBlZ2xXaW5kb3ctPmluaXRpYWxpemVHTChtT1NXaW5kb3cpOworICAgICAgICBpZiAocmVzdWx0
ID09IGZhbHNlKQorICAgICAgICB7CisgICAgICAgICAgICBTYWZlRGVsZXRlKGVnbFdpbmRvdyk7
CisgICAgICAgICAgICBlZ2xXaW5kb3cgPSBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIGVnbFdpbmRvdzsKKyAgICB9CisKKyAgICB2b2lkIGRlc3Ryb3lFR0xXaW5kb3coRUdM
V2luZG93ICoqZWdsV2luZG93KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCplZ2xXaW5kb3cgIT0g
bnVsbHB0cik7CisgICAgICAgICgqZWdsV2luZG93KS0+ZGVzdHJveUdMKCk7CisgICAgICAgIFNh
ZmVEZWxldGUoKmVnbFdpbmRvdyk7CisgICAgICAgICplZ2xXaW5kb3cgPSBudWxscHRyOworICAg
IH0KKworICAgIEdMdWludCBjcmVhdGVFUzJQcm9ncmFtRnJvbVNvdXJjZSgpCisgICAgeworICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyB0ZXN0VmVydGV4U2hhZGVyU291cmNlID0gU0hBREVSX1NP
VVJDRQorICAgICAgICAoCisgICAgICAgICAgICBhdHRyaWJ1dGUgaGlnaHAgdmVjNCBwb3NpdGlv
bjsKKworICAgICAgICAgICAgdm9pZCBtYWluKHZvaWQpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
KTsKKworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB0ZXN0RnJhZ21lbnRTaGFkZXJTb3VyY2Ug
PSBTSEFERVJfU09VUkNFCisgICAgICAgICgKKyAgICAgICAgICAgIHZvaWQgbWFpbih2b2lkKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAw
LjAsIDAuMCwgMS4wKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICByZXR1
cm4gQ29tcGlsZVByb2dyYW0odGVzdFZlcnRleFNoYWRlclNvdXJjZSwgdGVzdEZyYWdtZW50U2hh
ZGVyU291cmNlKTsKKyAgICB9CisKKyAgICBHTHVpbnQgY3JlYXRlRVMzUHJvZ3JhbUZyb21Tb3Vy
Y2UoKQorICAgIHsKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdFZlcnRleFNoYWRlclNv
dXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKCAgICN2ZXJzaW9uIDMwMCBlc1xuCisgICAg
ICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisgICAgICAgICAgICBpbiBoaWdocCB2ZWM0
IHBvc2l0aW9uOworCisgICAgICAgICAgICB2b2lkIG1haW4odm9pZCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOworICAgICAgICAgICAgfQor
ICAgICAgICApOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHRlc3RGcmFnbWVudFNoYWRl
clNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKCAgICN2ZXJzaW9uIDMwMCBlcyBcbgor
ICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworICAgICAgICAgICAgb3V0IHZlYzQg
b3V0X0ZyYWdDb2xvcjsKKworICAgICAgICAgICAgdm9pZCBtYWluKHZvaWQpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgb3V0X0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwg
MS4wKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICByZXR1cm4gQ29tcGls
ZVByb2dyYW0odGVzdFZlcnRleFNoYWRlclNvdXJjZSwgdGVzdEZyYWdtZW50U2hhZGVyU291cmNl
KTsKKyAgICB9CisKKyAgICB2b2lkIGRyYXdXaXRoUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSkKKyAg
ICB7CisgICAgICAgIGdsQ2xlYXJDb2xvcigwLCAwLCAwLCAxKTsKKyAgICAgICAgZ2xDbGVhcihH
TF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAgICAgICBHTGludCBwb3NpdGlvbkxvY2F0aW9uID0g
Z2xHZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAicG9zaXRpb24iKTsKKworICAgICAgICBnbFVz
ZVByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICAgICAgY29uc3QgR0xmbG9hdCB2ZXJ0aWNlc1tdID0K
KyAgICAgICAgeworICAgICAgICAgICAgLTEuMGYsICAxLjBmLCAwLjVmLAorICAgICAgICAgICAg
LTEuMGYsIC0xLjBmLCAwLjVmLAorICAgICAgICAgICAgIDEuMGYsIC0xLjBmLCAwLjVmLAorCisg
ICAgICAgICAgICAtMS4wZiwgIDEuMGYsIDAuNWYsCisgICAgICAgICAgICAgMS4wZiwgLTEuMGYs
IDAuNWYsCisgICAgICAgICAgICAgMS4wZiwgIDEuMGYsIDAuNWYsCisgICAgICAgIH07CisKKyAg
ICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0aW9uTG9jYXRpb24sIDMsIEdMX0ZMT0FU
LCBHTF9GQUxTRSwgMCwgdmVydGljZXMpOworICAgICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5KHBvc2l0aW9uTG9jYXRpb24pOworCisgICAgICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdM
RVMsIDAsIDYpOworCisgICAgICAgIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHBvc2l0aW9u
TG9jYXRpb24pOworICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25Mb2NhdGlv
biwgNCwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCBOVUxMKTsKKworICAgICAgICBFWFBFQ1RfUElY
RUxfRVEobU9TV2luZG93LT5nZXRXaWR0aCgpIC8gMiwgbU9TV2luZG93LT5nZXRIZWlnaHQoKSAv
IDIsIDI1NSwgMCwgMCwgMjU1KTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIG1PU1dpbmRvdy0+ZGVzdHJveSgpOworICAgICAgICBTYWZlRGVs
ZXRlKG1PU1dpbmRvdyk7CisgICAgfQorCisgICAgT1NXaW5kb3cgKm1PU1dpbmRvdzsKK307CisK
Ky8vIFRyaWVzIHRvIGNyZWF0ZSBhIHByb2dyYW0gYmluYXJ5IHVzaW5nIG9uZSBzZXQgb2YgcGxh
dGZvcm0gcGFyYW1zLCB0aGVuIGxvYWQgaXQgdXNpbmcgYSBkaWZmZXJlbnQgc2VudCBvZiBwYXJh
bXMKK1RFU1RfUChQcm9ncmFtQmluYXJpZXNBY3Jvc3NQbGF0Zm9ybXMsIENyZWF0ZUFuZFJlbG9h
ZEJpbmFyeSkKK3sKKyAgICBhbmdsZTo6UGxhdGZvcm1QYXJhbWV0ZXJzIGZpcnN0UmVuZGVyZXIg
ID0gR2V0UGFyYW0oKTsKKyAgICBhbmdsZTo6UGxhdGZvcm1QYXJhbWV0ZXJzIHNlY29uZFJlbmRl
cmVyID0gR2V0UGFyYW0oKS5sb2FkUGFyYW1zOworICAgIGJvb2wgZXhwZWN0ZWRMaW5rUmVzdWx0
ICAgICAgICAgICAgICAgICAgPSBHZXRQYXJhbSgpLmV4cGVjdGVkTGlua1Jlc3VsdDsKKworICAg
IGlmICghKElzUGxhdGZvcm1BdmFpbGFibGUoZmlyc3RSZW5kZXJlcikpKQorICAgIHsKKyAgICAg
ICAgc3RkOjpjb3V0IDw8ICJGaXJzdCByZW5kZXJlciBub3Qgc3VwcG9ydGVkLCBza2lwcGluZyB0
ZXN0IjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghKElzUGxhdGZvcm1BdmFp
bGFibGUoc2Vjb25kUmVuZGVyZXIpKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiU2Vj
b25kIHJlbmRlcmVyIG5vdCBzdXBwb3J0ZWQsIHNraXBwaW5nIHRlc3QiOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgRUdMV2luZG93ICplZ2xXaW5kb3cgPSBudWxscHRyOworICAgIHN0
ZDo6dmVjdG9yPHVpbnQ4X3Q+IGJpbmFyeSgwKTsKKyAgICBHTHVpbnQgcHJvZ3JhbSA9IDA7CisK
KyAgICBHTGludCBwcm9ncmFtTGVuZ3RoID0gMDsKKyAgICBHTGludCB3cml0dGVuTGVuZ3RoID0g
MDsKKyAgICBHTGVudW0gYmluYXJ5Rm9ybWF0ID0gMDsKKworICAgIC8vIENyZWF0ZSBhIEVHTCB3
aW5kb3cgd2l0aCB0aGUgZmlyc3QgcmVuZGVyZXIKKyAgICBlZ2xXaW5kb3cgPSBjcmVhdGVBbmRJ
bml0RUdMV2luZG93KGZpcnN0UmVuZGVyZXIpOworICAgIGlmIChlZ2xXaW5kb3cgPT0gbnVsbHB0
cikKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiRmFpbGVkIHRvIGNyZWF0ZSBFR0wgd2luZG93
IjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIElmIHRoZSB0ZXN0IGlzIHRyeWlu
ZyB0byB1c2UgYm90aCB0aGUgZGVmYXVsdCBHUFUgYW5kIFdBUlAsIGJ1dCB0aGUgZGVmYXVsdCBH
UFUgKklTKiBXQVJQLAorICAgIC8vIHRoZW4gb3VyIGV4cGVjdGF0aW9ucyBmb3IgdGhlIHRlc3Qg
cmVzdWx0cyB3aWxsIGJlIGludmFsaWQuCisgICAgaWYgKGZpcnN0UmVuZGVyZXIuZWdsUGFyYW1l
dGVycy5kZXZpY2VUeXBlICE9IEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9XQVJQX0FO
R0xFICYmCisgICAgICAgIHNlY29uZFJlbmRlcmVyLmVnbFBhcmFtZXRlcnMuZGV2aWNlVHlwZSA9
PSBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfV0FSUF9BTkdMRSkKKyAgICB7CisgICAg
ICAgIHN0ZDo6c3RyaW5nIHJlbmRlcmVyU3RyaW5nID0gc3RkOjpzdHJpbmcocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oZ2xHZXRTdHJpbmcoR0xfUkVOREVSRVIpKSk7CisgICAgICAgIHN0
ZDo6dHJhbnNmb3JtKHJlbmRlcmVyU3RyaW5nLmJlZ2luKCksIHJlbmRlcmVyU3RyaW5nLmVuZCgp
LCByZW5kZXJlclN0cmluZy5iZWdpbigpLCA6OnRvbG93ZXIpOworCisgICAgICAgIGF1dG8gYmFz
aWNSZW5kZXJQb3MgPSByZW5kZXJlclN0cmluZy5maW5kKHN0ZDo6c3RyaW5nKCJtaWNyb3NvZnQg
YmFzaWMgcmVuZGVyIikpOworICAgICAgICBhdXRvIHNvZnR3YXJlQWRhcHRlclBvcyA9IHJlbmRl
cmVyU3RyaW5nLmZpbmQoc3RkOjpzdHJpbmcoInNvZnR3YXJlIGFkYXB0ZXIiKSk7CisKKyAgICAg
ICAgaWYgKGJhc2ljUmVuZGVyUG9zICE9IHN0ZDo6c3RyaW5nOjpucG9zIHx8IHNvZnR3YXJlQWRh
cHRlclBvcyAhPSBzdGQ6OnN0cmluZzo6bnBvcykKKyAgICAgICAgeworICAgICAgICAgICAgLy8g
VGhlIGZpcnN0IHJlbmRlcmVyIGlzIHVzaW5nIFdBUlAsIGV2ZW4gdGhvdWdoIHdlIGRpZG4ndCBl
eHBsaWN0bHkgcmVxdWVzdCBpdAorICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIHNraXAgdGhpcyB0
ZXN0CisgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiB3aGVuIGRlZmF1
bHQgR1BVIGlzIFdBUlAuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICAvLyBDcmVhdGUgYSBwcm9ncmFtCisgICAgaWYgKGZpcnN0UmVu
ZGVyZXIubWFqb3JWZXJzaW9uID09IDMpCisgICAgeworICAgICAgICBwcm9ncmFtID0gY3JlYXRl
RVMzUHJvZ3JhbUZyb21Tb3VyY2UoKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAg
cHJvZ3JhbSA9IGNyZWF0ZUVTMlByb2dyYW1Gcm9tU291cmNlKCk7CisgICAgfQorCisgICAgaWYg
KHByb2dyYW0gPT0gMCkKKyAgICB7CisgICAgICAgIGRlc3Ryb3lFR0xXaW5kb3coJmVnbFdpbmRv
dyk7CisgICAgICAgIEZBSUwoKSA8PCAiRmFpbGVkIHRvIGNyZWF0ZSBwcm9ncmFtIGZyb20gc291
cmNlIjsKKyAgICB9CisKKyAgICAvLyBEcmF3IHVzaW5nIHRoZSBwcm9ncmFtIHRvIGVuc3VyZSBp
dCB3b3JrcyBhcyBleHBlY3RlZAorICAgIGRyYXdXaXRoUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIFNhdmUgdGhlIHByb2dyYW0gYmluYXJ5IG91
dCBmcm9tIHRoaXMgcmVuZGVyZXIKKyAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9QUk9H
UkFNX0JJTkFSWV9MRU5HVEhfT0VTLCAmcHJvZ3JhbUxlbmd0aCk7CisgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7CisgICAgYmluYXJ5LnJlc2l6ZShwcm9ncmFtTGVuZ3RoKTsKKyAgICBnbEdldFBy
b2dyYW1CaW5hcnlPRVMocHJvZ3JhbSwgcHJvZ3JhbUxlbmd0aCwgJndyaXR0ZW5MZW5ndGgsICZi
aW5hcnlGb3JtYXQsIGJpbmFyeS5kYXRhKCkpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwor
CisgICAgLy8gRGVzdHJveSB0aGUgZmlyc3QgcmVuZGVyZXIKKyAgICBnbERlbGV0ZVByb2dyYW0o
cHJvZ3JhbSk7CisgICAgZGVzdHJveUVHTFdpbmRvdygmZWdsV2luZG93KTsKKworICAgIC8vIENy
ZWF0ZSBhbiBFR0wgd2luZG93IHdpdGggdGhlIHNlY29uZCByZW5kZXJlcgorICAgIGVnbFdpbmRv
dyA9IGNyZWF0ZUFuZEluaXRFR0xXaW5kb3coc2Vjb25kUmVuZGVyZXIpOworICAgIGlmIChlZ2xX
aW5kb3cgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiRmFpbGVkIHRvIGNy
ZWF0ZSBFR0wgd2luZG93IjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHByb2dyYW0g
PSBnbENyZWF0ZVByb2dyYW0oKTsKKyAgICBnbFByb2dyYW1CaW5hcnlPRVMocHJvZ3JhbSwgYmlu
YXJ5Rm9ybWF0LCBiaW5hcnkuZGF0YSgpLCB3cml0dGVuTGVuZ3RoKTsKKworICAgIEdMaW50IGxp
bmtTdGF0dXM7CisgICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xfTElOS19TVEFUVVMsICZs
aW5rU3RhdHVzKTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRMaW5rUmVzdWx0LCAobGlua1N0YXR1
cyAhPSAwKSk7CisKKyAgICBpZiAobGlua1N0YXR1cyAhPSAwKQorICAgIHsKKyAgICAgICAgLy8g
SWYgdGhlIGxpbmsgd2FzIHN1Y2Nlc3NmdWwsIHRoZW4gd2Ugc2hvdWxkIHRyeSB0byBkcmF3IHVz
aW5nIHRoZSBwcm9ncmFtIHRvIGVuc3VyZSBpdCB3b3JrcyBhcyBleHBlY3RlZAorICAgICAgICBk
cmF3V2l0aFByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwor
ICAgIH0KKworICAgIC8vIERlc3Ryb3kgdGhlIHNlY29uZCByZW5kZXJlcgorICAgIGdsRGVsZXRl
UHJvZ3JhbShwcm9ncmFtKTsKKyAgICBkZXN0cm95RUdMV2luZG93KCZlZ2xXaW5kb3cpOworfQor
CitBTkdMRV9JTlNUQU5USUFURV9URVNUKFByb2dyYW1CaW5hcmllc0Fjcm9zc1BsYXRmb3JtcywK
KyAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICB8IFNhdmUgdGhl
IHByb2dyYW0gICB8IExvYWQgdGhlIHByb2dyYW0gICAgICB8IEV4cGVjdGVkCisgICAgICAgICAg
ICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgfCB1c2luZyB0aGVzZSBwYXJhbXMg
fCB1c2luZyB0aGVzZSBwYXJhbXMgICAgfCBsaW5rIHJlc3VsdAorICAgICAgICAgICAgICAgICAg
ICAgICBQbGF0Zm9ybXNXaXRoTGlua1Jlc3VsdChFUzJfRDNEMTEoKSwgICAgICAgICBFUzJfRDNE
MTEoKSwgICAgICAgICAgICB0cnVlICAgICAgICAgKSwgLy8gTG9hZGluZyArIHJlbG9hZGluZyBi
aW5hcnkgc2hvdWxkIHdvcmsKKyAgICAgICAgICAgICAgICAgICAgICAgUGxhdGZvcm1zV2l0aExp
bmtSZXN1bHQoRVMzX0QzRDExKCksICAgICAgICAgRVMzX0QzRDExKCksICAgICAgICAgICAgdHJ1
ZSAgICAgICAgICksIC8vIExvYWRpbmcgKyByZWxvYWRpbmcgYmluYXJ5IHNob3VsZCB3b3JrCisg
ICAgICAgICAgICAgICAgICAgICAgIFBsYXRmb3Jtc1dpdGhMaW5rUmVzdWx0KEVTMl9EM0QxMV9G
TDExXzAoKSwgIEVTMl9EM0QxMV9GTDlfMygpLCAgICAgIGZhbHNlICAgICAgICApLCAvLyBTd2l0
Y2hpbmcgZmVhdHVyZSBsZXZlbCBzaG91bGRuJ3Qgd29yaworICAgICAgICAgICAgICAgICAgICAg
ICBQbGF0Zm9ybXNXaXRoTGlua1Jlc3VsdChFUzJfRDNEMTEoKSwgICAgICAgICBFUzJfRDNEMTFf
V0FSUCgpLCAgICAgICBmYWxzZSAgICAgICAgKSwgLy8gU3dpdGNoaW5nIGZyb20gaGFyZHdhcmUg
dG8gc29mdHdhcmUgc2hvdWxkbid0IHdvcmsKKyAgICAgICAgICAgICAgICAgICAgICAgUGxhdGZv
cm1zV2l0aExpbmtSZXN1bHQoRVMyX0QzRDExX0ZMOV8zKCksICAgRVMyX0QzRDExX0ZMOV8zX1dB
UlAoKSwgZmFsc2UgICAgICAgICksIC8vIFN3aXRjaGluZyBmcm9tIGhhcmR3YXJlIHRvIHNvZnR3
YXJlIHNob3VsZG4ndCB3b3JrIGZvciBGTDkgZWl0aGVyCisgICAgICAgICAgICAgICAgICAgICAg
IFBsYXRmb3Jtc1dpdGhMaW5rUmVzdWx0KEVTMl9EM0QxMSgpLCAgICAgICAgIEVTMl9EM0Q5KCks
ICAgICAgICAgICAgIGZhbHNlICAgICAgICApLCAvLyBTd2l0Y2hpbmcgZnJvbSBEM0QxMSB0byBE
M0Q5IHNob3VsZG4ndCB3b3JrCisgICAgICAgICAgICAgICAgICAgICAgIFBsYXRmb3Jtc1dpdGhM
aW5rUmVzdWx0KEVTMl9EM0Q5KCksICAgICAgICAgIEVTMl9EM0QxMSgpLCAgICAgICAgICAgIGZh
bHNlICAgICAgICApLCAvLyBTd2l0Y2hpbmcgZnJvbSBEM0Q5IHRvIEQzRDExIHNob3VsZG4ndCB3
b3JrCisgICAgICAgICAgICAgICAgICAgICAgIFBsYXRmb3Jtc1dpdGhMaW5rUmVzdWx0KEVTMl9E
M0QxMSgpLCAgICAgICAgIEVTM19EM0QxMSgpLCAgICAgICAgICAgIHRydWUgICAgICAgICApICAv
LyBTd2l0Y2hpbmcgdG8gbmV3ZXIgY2xpZW50IHZlcnNpb24gc2hvdWxkIHdvcmsKKworICAgICAg
ICAgICAgICAgICAgICAgICAvLyBUT0RPOiBBTkdMRSBpc3N1ZSA1MjMKKyAgICAgICAgICAgICAg
ICAgICAgICAgLy8gQ29tcGlsaW5nIGEgcHJvZ3JhbSB3aXRoIGNsaWVudCB2ZXJzaW9uIDMsIHNh
dmluZyB0aGUgYmluYXJ5LCB0aGVuIGxvYWRpbmcgaXQgd2l0aCBjbGllbnQgdmVyc2lvbiAyIHNo
b3VsZCBub3Qgd29yaworICAgICAgICAgICAgICAgICAgICAgICAvLyBQbGF0Zm9ybXNXaXRoTGlu
a1Jlc3VsdChFUzNfRDNEMTEoKSwgICAgICAgICBFUzJfRDNEMTEoKSwgICAgICAgICAgICBmYWxz
ZSAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICk7CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvUHJvdm9raW5nVmVydGV4VGVzdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1By
b3Zva2luZ1ZlcnRleFRlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Qcm92b2tpbmdWZXJ0ZXhUZXN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDMxNiBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFByb3ZraW5nVmVydGV4VGVz
dDoKKy8vICAgVGVzdHMgb24gdGhlIGNvbmZvcm1hbmNlIG9mIHRoZSBwcm92b2tpbmcgdmVydGV4
LCB3aGljaCBhcHBsaWVzIHRvIGZsYXQKKy8vICAgc2hhZGluZyBhbmQgY29tcGF0aWJpbGl0eSB3
aXRoIEQzRC4gU2VlIHRoZSBzZWN0aW9uIG9uICdmbGF0c2hhZGluZycKKy8vICAgaW4gdGhlIEVT
IDMgc3BlY3MuCisvLworCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKwordXNp
bmcgbmFtZXNwYWNlIGFuZ2xlOworCituYW1lc3BhY2UKK3sKKworY2xhc3MgUHJvdm9raW5nVmVy
dGV4VGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIFByb3Zva2lu
Z1ZlcnRleFRlc3QoKQorICAgICAgICA6IG1Qcm9ncmFtKDApLAorICAgICAgICAgIG1GcmFtZWJ1
ZmZlcigwKSwKKyAgICAgICAgICBtVGV4dHVyZSgwKSwKKyAgICAgICAgICBtVHJhbnNmb3JtRmVl
ZGJhY2soMCksCisgICAgICAgICAgbUJ1ZmZlcigwKSwKKyAgICAgICAgICBtSW50QXR0cmliTG9j
YXRpb24oLTEpCisgICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0aCg2NCk7CisgICAgICAgIHNl
dFdpbmRvd0hlaWdodCg2NCk7CisgICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7CisgICAgICAg
IHNldENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Cisg
ICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnRGVwdGhCaXRz
KDI0KTsKKyAgICB9CisKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IEFOR0xFVGVzdDo6U2V0VXAoKTsKKworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmVydGV4
U2hhZGVyID0KKyAgICAgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgICAgICJp
biBpbnQgaW50QXR0cmliO1xuIgorICAgICAgICAgICAgImluIHZlYzIgcG9zaXRpb247XG4iCisg
ICAgICAgICAgICAiZmxhdCBvdXQgaW50IGF0dHJpYjtcbiIKKyAgICAgICAgICAgICJ2b2lkIG1h
aW4oKSB7XG4iCisgICAgICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAs
IDEpO1xuIgorICAgICAgICAgICAgIiAgYXR0cmliID0gaW50QXR0cmliO1xuIgorICAgICAgICAg
ICAgIn0iOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnbWVudFNoYWRlciA9Cisg
ICAgICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICAgICAiZmxhdCBpbiBpbnQg
YXR0cmliO1xuIgorICAgICAgICAgICAgIm91dCBpbnQgZnJhZ0NvbG9yO1xuIgorICAgICAgICAg
ICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgICAgICIgIGZyYWdDb2xvciA9IGF0dHJpYjtc
biIKKyAgICAgICAgICAgICJ9IjsKKworICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4g
dGZWYXJ5aW5nczsKKyAgICAgICAgdGZWYXJ5aW5ncy5wdXNoX2JhY2soImF0dHJpYiIpOworICAg
ICAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtV2l0aFRyYW5zZm9ybUZlZWRiYWNrKHZlcnRl
eFNoYWRlciwgZnJhZ21lbnRTaGFkZXIsIHRmVmFyeWluZ3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfU0VQQVJBVEVfQVRUUklCUyk7
CisgICAgICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOworCisgICAgICAgIGdsR2VuVGV4dHVy
ZXMoMSwgJm1UZXh0dXJlKTsKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBt
VGV4dHVyZSk7CisgICAgICAgIGdsVGV4U3RvcmFnZTJEKEdMX1RFWFRVUkVfMkQsIDEsIEdMX1Iz
MkksIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpKTsKKworICAgICAgICBnbEdl
bkZyYW1lYnVmZmVycygxLCAmbUZyYW1lYnVmZmVyKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZm
ZXIoR0xfRlJBTUVCVUZGRVIsIG1GcmFtZWJ1ZmZlcik7CisgICAgICAgIGdsRnJhbWVidWZmZXJU
ZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJF
XzJELCBtVGV4dHVyZSwgMCk7CisKKyAgICAgICAgbUludEF0dHJpYkxvY2F0aW9uID0gZ2xHZXRB
dHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgImludEF0dHJpYiIpOworICAgICAgICBBU1NFUlRfTkUo
LTEsIG1JbnRBdHRyaWJMb2NhdGlvbik7CisgICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJy
YXkobUludEF0dHJpYkxvY2F0aW9uKTsKKworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
KyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlm
IChtUHJvZ3JhbSAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICBnbERlbGV0ZVByb2dyYW0o
bVByb2dyYW0pOworICAgICAgICAgICAgbVByb2dyYW0gPSAwOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKG1GcmFtZWJ1ZmZlciAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICBnbERlbGV0
ZUZyYW1lYnVmZmVycygxLCAmbUZyYW1lYnVmZmVyKTsKKyAgICAgICAgICAgIG1GcmFtZWJ1ZmZl
ciA9IDA7CisgICAgICAgIH0KKworICAgICAgICBpZiAobVRleHR1cmUgIT0gMCkKKyAgICAgICAg
eworICAgICAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbVRleHR1cmUpOworICAgICAgICAg
ICAgbVRleHR1cmUgPSAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1UcmFuc2Zvcm1GZWVk
YmFjayAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICBnbERlbGV0ZVRyYW5zZm9ybUZlZWRi
YWNrcygxLCAmbVRyYW5zZm9ybUZlZWRiYWNrKTsKKyAgICAgICAgICAgIG1UcmFuc2Zvcm1GZWVk
YmFjayA9IDA7CisgICAgICAgIH0KKworICAgICAgICBpZiAobUJ1ZmZlciAhPSAwKQorICAgICAg
ICB7CisgICAgICAgICAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1CdWZmZXIpOworICAgICAgICAg
ICAgbUJ1ZmZlciA9IDA7CisgICAgICAgIH0KKworICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3du
KCk7CisgICAgfQorCisgICAgR0x1aW50IG1Qcm9ncmFtOworICAgIEdMdWludCBtRnJhbWVidWZm
ZXI7CisgICAgR0x1aW50IG1UZXh0dXJlOworICAgIEdMdWludCBtVHJhbnNmb3JtRmVlZGJhY2s7
CisgICAgR0x1aW50IG1CdWZmZXI7CisgICAgR0xpbnQgbUludEF0dHJpYkxvY2F0aW9uOworfTsK
KworLy8gVGVzdCBkcmF3aW5nIGEgc2ltcGxlIHRyaWFuZ2xlIHdpdGggZmxhdCBzaGFkaW5nLCBh
bmQgZGlmZmVyZW50IHZhbHVlZCB2ZXJ0aWNlcy4KK1RFU1RfUChQcm92b2tpbmdWZXJ0ZXhUZXN0
LCBGbGF0VHJpYW5nbGUpCit7CisgICAgR0xpbnQgdmVydGV4RGF0YVtdID0gezEsIDIsIDMsIDEs
IDIsIDN9OworICAgIGdsVmVydGV4QXR0cmliSVBvaW50ZXIobUludEF0dHJpYkxvY2F0aW9uLCAx
LCBHTF9JTlQsIDAsIHZlcnRleERhdGEpOworCisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3Np
dGlvbiIsIDAuNWYpOworCisgICAgR0xpbnQgcGl4ZWxWYWx1ZSA9IDA7CisgICAgZ2xSZWFkUGl4
ZWxzKDAsIDAsIDEsIDEsIEdMX1JFRF9JTlRFR0VSLCBHTF9JTlQsICZwaXhlbFZhbHVlKTsKKwor
ICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9FUSh2ZXJ0ZXhEYXRhWzJdLCBw
aXhlbFZhbHVlKTsKK30KKworLy8gRW5zdXJlIHRoYXQgYW55IHByb3Zva2luZyB2ZXJ0ZXggc2hl
bmFuaWdhbnMgc3RpbGwgZ2l2ZXMgY29ycmVjdCB2ZXJ0ZXggc3RyZWFtcy4KK1RFU1RfUChQcm92
b2tpbmdWZXJ0ZXhUZXN0LCBGbGF0VHJpV2l0aFRyYW5zZm9ybUZlZWRiYWNrKQoreworICAgIC8v
IFRPRE8oY3dhbGxleikgZmlndXJlIG91dCB3aHkgaXQgaXMgYnJva2VuIG9uIEFNRCBvbiBNYWMK
KyNpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0FQUExFKQorICAgIGlmIChJc0FNRCgpKQorICAg
IHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gQU1EIG9uIE1hYy4iIDw8
IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgZ2xHZW5U
cmFuc2Zvcm1GZWVkYmFja3MoMSwgJm1UcmFuc2Zvcm1GZWVkYmFjayk7CisgICAgZ2xCaW5kVHJh
bnNmb3JtRmVlZGJhY2soR0xfVFJBTlNGT1JNX0ZFRURCQUNLLCBtVHJhbnNmb3JtRmVlZGJhY2sp
OworCisgICAgZ2xHZW5CdWZmZXJzKDEsICZtQnVmZmVyKTsKKyAgICBnbEJpbmRCdWZmZXIoR0xf
VFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgbUJ1ZmZlcik7CisgICAgZ2xCdWZmZXJEYXRhKEdM
X1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDEyOCwgbnVsbHB0ciwgR0xfU1RSRUFNX0RSQVcp
OworCisgICAgZ2xCaW5kQnVmZmVyQmFzZShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAw
LCBtQnVmZmVyKTsKKworICAgIEdMaW50IHZlcnRleERhdGFbXSA9IHsxLCAyLCAzLCAxLCAyLCAz
fTsKKyAgICBnbFZlcnRleEF0dHJpYklQb2ludGVyKG1JbnRBdHRyaWJMb2NhdGlvbiwgMSwgR0xf
SU5ULCAwLCB2ZXJ0ZXhEYXRhKTsKKworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAg
Z2xCZWdpblRyYW5zZm9ybUZlZWRiYWNrKEdMX1RSSUFOR0xFUyk7CisgICAgZHJhd1F1YWQobVBy
b2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworICAgIGdsRW5kVHJhbnNmb3JtRmVlZGJhY2soKTsK
KyAgICBnbFVzZVByb2dyYW0oMCk7CisKKyAgICBHTGludCBwaXhlbFZhbHVlID0gMDsKKyAgICBn
bFJlYWRQaXhlbHMoMCwgMCwgMSwgMSwgR0xfUkVEX0lOVEVHRVIsIEdMX0lOVCwgJnBpeGVsVmFs
dWUpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgRVhQRUNUX0VRKHZlcnRleERh
dGFbMl0sIHBpeGVsVmFsdWUpOworCisgICAgR0x2b2lkICptYXBQb2ludGVyID0KKyAgICAgICAg
Z2xNYXBCdWZmZXJSYW5nZShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAwLCBzaXplb2Yo
aW50KSAqIDYsIEdMX01BUF9SRUFEX0JJVCk7CisgICAgQVNTRVJUX05FKG51bGxwdHIsIG1hcFBv
aW50ZXIpOworCisgICAgaW50ICptYXBwZWRJbnRzID0gc3RhdGljX2Nhc3Q8aW50ICo+KG1hcFBv
aW50ZXIpOworICAgIGZvciAodW5zaWduZWQgaW50IGNudCA9IDA7IGNudCA8IDY7ICsrY250KQor
ICAgIHsKKyAgICAgICAgRVhQRUNUX0VRKHZlcnRleERhdGFbY250XSwgbWFwcGVkSW50c1tjbnRd
KTsKKyAgICB9Cit9CisKKy8vIFRlc3QgZHJhd2luZyBhIHNpbXBsZSBsaW5lIHdpdGggZmxhdCBz
aGFkaW5nLCBhbmQgZGlmZmVyZW50IHZhbHVlZCB2ZXJ0aWNlcy4KK1RFU1RfUChQcm92b2tpbmdW
ZXJ0ZXhUZXN0LCBGbGF0TGluZSkKK3sKKyAgICBHTGZsb2F0IGhhbGZQaXhlbCA9IDEuMGYgLyBz
dGF0aWNfY2FzdDxHTGZsb2F0PihnZXRXaW5kb3dXaWR0aCgpKTsKKworICAgIEdMaW50IHZlcnRl
eERhdGFbXSAgICAgPSB7MSwgMn07CisgICAgR0xmbG9hdCBwb3NpdGlvbkRhdGFbXSA9IHstMS4w
ZiArIGhhbGZQaXhlbCwgLTEuMGYsIC0xLjBmICsgaGFsZlBpeGVsLCAxLjBmfTsKKworICAgIGds
VmVydGV4QXR0cmliSVBvaW50ZXIobUludEF0dHJpYkxvY2F0aW9uLCAxLCBHTF9JTlQsIDAsIHZl
cnRleERhdGEpOworCisgICAgR0xpbnQgcG9zaXRpb25Mb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9j
YXRpb24obVByb2dyYW0sICJwb3NpdGlvbiIpOworICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJy
YXkocG9zaXRpb25Mb2NhdGlvbik7CisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0aW9u
TG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgcG9zaXRpb25EYXRhKTsKKworICAg
IGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgZ2xEcmF3QXJyYXlzKEdMX0xJTkVTLCAwLCAy
KTsKKworICAgIEdMaW50IHBpeGVsVmFsdWUgPSAwOworICAgIGdsUmVhZFBpeGVscygwLCAwLCAx
LCAxLCBHTF9SRURfSU5URUdFUiwgR0xfSU5ULCAmcGl4ZWxWYWx1ZSk7CisKKyAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfRVEodmVydGV4RGF0YVsxXSwgcGl4ZWxWYWx1ZSk7
Cit9CisKKy8vIFRlc3QgZHJhd2luZyBhIHNpbXBsZSB0cmlhbmdsZSBzdHJpcCB3aXRoIGZsYXQg
c2hhZGluZywgYW5kIGRpZmZlcmVudCB2YWx1ZWQgdmVydGljZXMuCitURVNUX1AoUHJvdm9raW5n
VmVydGV4VGVzdCwgRmxhdFRyaVN0cmlwKQoreworICAgIEdMaW50IHZlcnRleERhdGFbXSAgICAg
PSB7MSwgMiwgMywgNCwgNSwgNn07CisgICAgR0xmbG9hdCBwb3NpdGlvbkRhdGFbXSA9IHstMS4w
ZiwgLTEuMGYsIC0xLjBmLCAxLjBmLCAgMC4wZiwgLTEuMGYsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLjBmLCAgMS4wZiwgIDEuMGYsICAtMS4wZiwgMS4wZiwgMS4wZn07CisKKyAg
ICBnbFZlcnRleEF0dHJpYklQb2ludGVyKG1JbnRBdHRyaWJMb2NhdGlvbiwgMSwgR0xfSU5ULCAw
LCB2ZXJ0ZXhEYXRhKTsKKworICAgIEdMaW50IHBvc2l0aW9uTG9jYXRpb24gPSBnbEdldEF0dHJp
YkxvY2F0aW9uKG1Qcm9ncmFtLCAicG9zaXRpb24iKTsKKyAgICBnbEVuYWJsZVZlcnRleEF0dHJp
YkFycmF5KHBvc2l0aW9uTG9jYXRpb24pOworICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3Np
dGlvbkxvY2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIHBvc2l0aW9uRGF0YSk7CisK
KyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdM
RV9TVFJJUCwgMCwgNik7CisKKyAgICBzdGQ6OnZlY3RvcjxHTGludD4gcGl4ZWxCdWZmZXIoZ2V0
V2luZG93V2lkdGgoKSAqIGdldFdpbmRvd0hlaWdodCgpLCAwKTsKKyAgICBnbFJlYWRQaXhlbHMo
MCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIEdMX1JFRF9JTlRFR0VS
LCBHTF9JTlQsCisgICAgICAgICAgICAgICAgICZwaXhlbEJ1ZmZlclswXSk7CisKKyAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKKworICAgIGZvciAodW5zaWduZWQgaW50IHRyaUluZGV4ID0gMDsg
dHJpSW5kZXggPCA0OyArK3RyaUluZGV4KQorICAgIHsKKyAgICAgICAgR0xmbG9hdCBzdW1YID0g
cG9zaXRpb25EYXRhW3RyaUluZGV4ICogMiArIDBdICsgcG9zaXRpb25EYXRhW3RyaUluZGV4ICog
MiArIDJdICsKKyAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25EYXRhW3RyaUluZGV4ICog
MiArIDRdOworICAgICAgICBHTGZsb2F0IHN1bVkgPSBwb3NpdGlvbkRhdGFbdHJpSW5kZXggKiAy
ICsgMV0gKyBwb3NpdGlvbkRhdGFbdHJpSW5kZXggKiAyICsgM10gKworICAgICAgICAgICAgICAg
ICAgICAgICBwb3NpdGlvbkRhdGFbdHJpSW5kZXggKiAyICsgNV07CisKKyAgICAgICAgZmxvYXQg
Y2VudGVyWCA9IHN1bVggLyAzLjBmICogMC41ZiArIDAuNWY7CisgICAgICAgIGZsb2F0IGNlbnRl
clkgPSBzdW1ZIC8gMy4wZiAqIDAuNWYgKyAwLjVmOworICAgICAgICB1bnNpZ25lZCBpbnQgcGl4
ZWxYID0KKyAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oY2VudGVyWCAqIHN0
YXRpY19jYXN0PEdMZmxvYXQ+KGdldFdpbmRvd1dpZHRoKCkpKTsKKyAgICAgICAgdW5zaWduZWQg
aW50IHBpeGVsWSA9CisgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGNlbnRl
clkgKiBzdGF0aWNfY2FzdDxHTGZsb2F0PihnZXRXaW5kb3dIZWlnaHQoKSkpOworICAgICAgICB1
bnNpZ25lZCBpbnQgcGl4ZWxJbmRleCA9IHBpeGVsWSAqIGdldFdpbmRvd1dpZHRoKCkgKyBwaXhl
bFg7CisKKyAgICAgICAgdW5zaWduZWQgaW50IHByb3Zva2luZ1ZlcnRleEluZGV4ID0gdHJpSW5k
ZXggKyAyOworCisgICAgICAgIEVYUEVDVF9FUSh2ZXJ0ZXhEYXRhW3Byb3Zva2luZ1ZlcnRleElu
ZGV4XSwgcGl4ZWxCdWZmZXJbcGl4ZWxJbmRleF0pOworICAgIH0KK30KKworLy8gVGVzdCBkcmF3
aW5nIGFuIGluZGV4ZWQgdHJpYW5nbGUgc3RyaXAgd2l0aCBmbGF0IHNoYWRpbmcgYW5kIHByaW1p
dGl2ZSByZXN0YXJ0LgorVEVTVF9QKFByb3Zva2luZ1ZlcnRleFRlc3QsIEZsYXRUcmlTdHJpcFBy
aW1pdGl2ZVJlc3RhcnQpCit7CisgICAgLy8gVE9ETyhqbWFkaWxsKTogSW1wbGVtZW50IG9uIHRo
ZSBEM0QgYmFjay1lbmQuCisgICAgaWYgKElzRDNEMTEoKSkKKyAgICB7CisgICAgICAgIHN0ZDo6
Y291dCA8PCAiVGVzdCBkaXNhYmxlZCBvbiBEM0QxMS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIEdMaW50IGluZGV4RGF0YVtdICAgICAgPSB7MCwgMSwgMiwg
LTEsIDEsIDIsIDMsIDQsIC0xLCAzLCA0LCA1fTsKKyAgICBHTGludCB2ZXJ0ZXhEYXRhW10gICAg
ID0gezEsIDIsIDMsIDQsIDUsIDZ9OworICAgIEdMZmxvYXQgcG9zaXRpb25EYXRhW10gPSB7LTEu
MGYsIC0xLjBmLCAtMS4wZiwgMS4wZiwgIDAuMGYsIC0xLjBmLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMC4wZiwgIDEuMGYsICAxLjBmLCAgLTEuMGYsIDEuMGYsIDEuMGZ9OworCisg
ICAgZ2xWZXJ0ZXhBdHRyaWJJUG9pbnRlcihtSW50QXR0cmliTG9jYXRpb24sIDEsIEdMX0lOVCwg
MCwgdmVydGV4RGF0YSk7CisKKyAgICBHTGludCBwb3NpdGlvbkxvY2F0aW9uID0gZ2xHZXRBdHRy
aWJMb2NhdGlvbihtUHJvZ3JhbSwgInBvc2l0aW9uIik7CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheShwb3NpdGlvbkxvY2F0aW9uKTsKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9z
aXRpb25Mb2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCBwb3NpdGlvbkRhdGEpOwor
CisgICAgZ2xEaXNhYmxlKEdMX0NVTExfRkFDRSk7CisgICAgZ2xFbmFibGUoR0xfUFJJTUlUSVZF
X1JFU1RBUlRfRklYRURfSU5ERVgpOworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAg
Z2xEcmF3RWxlbWVudHMoR0xfVFJJQU5HTEVfU1RSSVAsIDEyLCBHTF9VTlNJR05FRF9JTlQsIGlu
ZGV4RGF0YSk7CisKKyAgICBzdGQ6OnZlY3RvcjxHTGludD4gcGl4ZWxCdWZmZXIoZ2V0V2luZG93
V2lkdGgoKSAqIGdldFdpbmRvd0hlaWdodCgpLCAwKTsKKyAgICBnbFJlYWRQaXhlbHMoMCwgMCwg
Z2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIEdMX1JFRF9JTlRFR0VSLCBHTF9J
TlQsCisgICAgICAgICAgICAgICAgICZwaXhlbEJ1ZmZlclswXSk7CisKKyAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKKworICAgIC8vIEFjY291bnQgZm9yIHByaW1pdGl2ZSByZXN0YXJ0IHdoZW4g
Y2hlY2tpbmcgdGhlIHRyaXMuCisgICAgR0xpbnQgdHJpT2Zmc2V0c1tdID0gezAsIDQsIDUsIDl9
OworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgdHJpSW5kZXggPSAwOyB0cmlJbmRleCA8IDQ7ICsr
dHJpSW5kZXgpCisgICAgeworICAgICAgICBHTGludCB2ZXJ0ZXhBID0gaW5kZXhEYXRhW3RyaU9m
ZnNldHNbdHJpSW5kZXhdICsgMF07CisgICAgICAgIEdMaW50IHZlcnRleEIgPSBpbmRleERhdGFb
dHJpT2Zmc2V0c1t0cmlJbmRleF0gKyAxXTsKKyAgICAgICAgR0xpbnQgdmVydGV4QyA9IGluZGV4
RGF0YVt0cmlPZmZzZXRzW3RyaUluZGV4XSArIDJdOworCisgICAgICAgIEdMZmxvYXQgc3VtWCA9
CisgICAgICAgICAgICBwb3NpdGlvbkRhdGFbdmVydGV4QSAqIDJdICsgcG9zaXRpb25EYXRhW3Zl
cnRleEIgKiAyXSArIHBvc2l0aW9uRGF0YVt2ZXJ0ZXhDICogMl07CisgICAgICAgIEdMZmxvYXQg
c3VtWSA9IHBvc2l0aW9uRGF0YVt2ZXJ0ZXhBICogMiArIDFdICsgcG9zaXRpb25EYXRhW3ZlcnRl
eEIgKiAyICsgMV0gKworICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbkRhdGFbdmVydGV4
QyAqIDIgKyAxXTsKKworICAgICAgICBmbG9hdCBjZW50ZXJYID0gc3VtWCAvIDMuMGYgKiAwLjVm
ICsgMC41ZjsKKyAgICAgICAgZmxvYXQgY2VudGVyWSA9IHN1bVkgLyAzLjBmICogMC41ZiArIDAu
NWY7CisgICAgICAgIHVuc2lnbmVkIGludCBwaXhlbFggPQorICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8dW5zaWduZWQgaW50PihjZW50ZXJYICogc3RhdGljX2Nhc3Q8R0xmbG9hdD4oZ2V0V2luZG93
V2lkdGgoKSkpOworICAgICAgICB1bnNpZ25lZCBpbnQgcGl4ZWxZID0KKyAgICAgICAgICAgIHN0
YXRpY19jYXN0PHVuc2lnbmVkIGludD4oY2VudGVyWSAqIHN0YXRpY19jYXN0PEdMZmxvYXQ+KGdl
dFdpbmRvd0hlaWdodCgpKSk7CisgICAgICAgIHVuc2lnbmVkIGludCBwaXhlbEluZGV4ID0gcGl4
ZWxZICogZ2V0V2luZG93V2lkdGgoKSArIHBpeGVsWDsKKworICAgICAgICB1bnNpZ25lZCBpbnQg
cHJvdm9raW5nVmVydGV4SW5kZXggPSB0cmlJbmRleCArIDI7CisKKyAgICAgICAgRVhQRUNUX0VR
KHZlcnRleERhdGFbcHJvdm9raW5nVmVydGV4SW5kZXhdLCBwaXhlbEJ1ZmZlcltwaXhlbEluZGV4
XSk7CisgICAgfQorfQorCitBTkdMRV9JTlNUQU5USUFURV9URVNUKFByb3Zva2luZ1ZlcnRleFRl
c3QsIEVTM19EM0QxMSgpLCBFUzNfT1BFTkdMKCksIEVTM19PUEVOR0xFUygpKTsKKworfSAgLy8g
YW5vbnltb3VzIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsX3Rlc3RzL1JlYWRQaXhlbHNUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvUmVhZFBpeGVsc1Rlc3QuY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9S
ZWFkUGl4ZWxzVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MjIgQEAKKy8vCisv
LyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisvLyBSZWFkUGl4ZWxzVGVzdDoKKy8vICAgVGVzdHMgY2FsbHMgcmVsYXRlZCB0byBnbFJl
YWRQaXhlbHMuCisvLworCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKworI2lu
Y2x1ZGUgPGFycmF5PgorCisjaW5jbHVkZSAicmFuZG9tX3V0aWxzLmgiCisKK3VzaW5nIG5hbWVz
cGFjZSBhbmdsZTsKKworbmFtZXNwYWNlCit7CisKK2NsYXNzIFJlYWRQaXhlbHNUZXN0IDogcHVi
bGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgUmVhZFBpeGVsc1Rlc3QoKQorICAg
IHsKKyAgICAgICAgc2V0V2luZG93V2lkdGgoMzIpOworICAgICAgICBzZXRXaW5kb3dIZWlnaHQo
MzIpOworICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOworICAgICAgICBzZXRDb25maWdHcmVl
bkJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOworICAgICAgICBzZXRDb25m
aWdBbHBoYUJpdHMoOCk7CisgICAgfQorfTsKKworLy8gVGVzdCBvdXQgb2YgYm91bmRzIGZyYW1l
YnVmZmVyIHJlYWRzLgorVEVTVF9QKFJlYWRQaXhlbHNUZXN0LCBPdXRPZkJvdW5kcykKK3sKKyAg
ICAvLyBUT0RPOiByZS1lbmFibGUgb25jZSByb290IGNhdXNlIG9mIGh0dHA6Ly9hbmdsZWJ1Zy5j
b20vMTQxMyBpcyBmaXhlZAorICAgIGlmIChJc0FuZHJvaWQoKSAmJiBJc0FkcmVubygpICYmIElz
T3BlbkdMRVMoKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9u
IEFkcmVubyBPcGVuR0xFUyBvbiBBbmRyb2lkLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgZ2xDbGVhckNvbG9yKDEuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOwor
ICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7CisKKyAgICBHTHNpemVpIHBpeGVsc1dpZHRoID0gMzI7CisgICAgR0xzaXplaSBwaXhlbHNI
ZWlnaHQgPSAzMjsKKyAgICBHTGludCBvZmZzZXQgPSAxNjsKKyAgICBzdGQ6OnZlY3RvcjxHTENv
bG9yPiBwaXhlbHMoKHBpeGVsc1dpZHRoICsgb2Zmc2V0KSAqIChwaXhlbHNIZWlnaHQgKyBvZmZz
ZXQpKTsKKworICAgIGdsUmVhZFBpeGVscygtb2Zmc2V0LCAtb2Zmc2V0LCBwaXhlbHNXaWR0aCAr
IG9mZnNldCwgcGl4ZWxzSGVpZ2h0ICsgb2Zmc2V0LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRF
LCAmcGl4ZWxzWzBdKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIEV4cGVj
dCB0aGF0IGFsbCBwaXhlbHMgd2hpY2ggZmVsbCB3aXRoaW4gdGhlIGZyYW1lYnVmZmVyIGFyZSBy
ZWQKKyAgICBmb3IgKGludCB5ID0gcGl4ZWxzSGVpZ2h0IC8gMjsgeSA8IHBpeGVsc0hlaWdodDsg
eSsrKQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgeCA9IHBpeGVsc1dpZHRoIC8gMjsgeCA8IHBp
eGVsc1dpZHRoOyB4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShHTENvbG9y
OjpyZWQsIHBpeGVsc1t5ICogKHBpeGVsc1dpZHRoICsgb2Zmc2V0KSArIHhdKTsKKyAgICAgICAg
fQorICAgIH0KK30KKworY2xhc3MgUmVhZFBpeGVsc1BCT1Rlc3QgOiBwdWJsaWMgUmVhZFBpeGVs
c1Rlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIFJlYWRQaXhlbHNQQk9UZXN0KCkgOiBtUEJPKDAp
LCBtVGV4dHVyZSgwKSwgbUZCTygwKSB7fQorCisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7CisKKyAgICAgICAgZ2xHZW5CdWZmZXJz
KDEsICZtUEJPKTsKKyAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1GQk8pOworCisgICAg
ICAgIFJlc2V0KDQgKiBnZXRXaW5kb3dXaWR0aCgpICogZ2V0V2luZG93SGVpZ2h0KCksIDQsIDEp
OworICAgIH0KKworICAgIHZvaWQgUmVzZXQoR0x1aW50IGJ1ZmZlclNpemUsIEdMdWludCBmYm9X
aWR0aCwgR0x1aW50IGZib0hlaWdodCkKKyAgICB7CisgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9Q
SVhFTF9QQUNLX0JVRkZFUiwgbVBCTyk7CisgICAgICAgIGdsQnVmZmVyRGF0YShHTF9QSVhFTF9Q
QUNLX0JVRkZFUiwgYnVmZmVyU2l6ZSwgbnVsbHB0ciwgR0xfU1RBVElDX0RSQVcpOworICAgICAg
ICBnbEJpbmRCdWZmZXIoR0xfUElYRUxfUEFDS19CVUZGRVIsIDApOworCisgICAgICAgIGdsRGVs
ZXRlVGV4dHVyZXMoMSwgJm1UZXh0dXJlKTsKKyAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbVRl
eHR1cmUpOworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlKTsK
KyAgICAgICAgZ2xUZXhTdG9yYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdCQTgsIGZib1dp
ZHRoLCBmYm9IZWlnaHQpOworCisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVG
RkVSLCBtRkJPKTsKKyAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZF
UiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlLCAwKTsKKyAg
ICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApOworCisgICAgICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlk
ZQorICAgIHsKKyAgICAgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtUEJPKTsKKyAgICAgICAgZ2xE
ZWxldGVUZXh0dXJlcygxLCAmbVRleHR1cmUpOworICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVy
cygxLCAmbUZCTyk7CisKKyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOworICAgIH0KKwor
ICAgIEdMdWludCBtUEJPICAgICA9IDA7CisgICAgR0x1aW50IG1UZXh0dXJlID0gMDsKKyAgICBH
THVpbnQgbUZCTyAgICAgPSAwOworfTsKKworLy8gVGVzdCBiYXNpYyB1c2FnZSBvZiBQQk9zLgor
VEVTVF9QKFJlYWRQaXhlbHNQQk9UZXN0LCBCYXNpYykKK3sKKyAgICBnbENsZWFyQ29sb3IoMS4w
ZiwgMC4wZiwgMC4wZiwgMS4wZik7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsK
KyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9Q
QUNLX0JVRkZFUiwgbVBCTyk7CisgICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIDE2LCAxNiwgR0xfUkdC
QSwgR0xfVU5TSUdORURfQllURSwgMCk7CisKKyAgICBHTHZvaWQgKm1hcHBlZFB0ciAgPSBnbE1h
cEJ1ZmZlclJhbmdlKEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCAwLCAzMiwgR0xfTUFQX1JFQURfQklU
KTsKKyAgICBHTENvbG9yICpkYXRhQ29sb3IgPSBzdGF0aWNfY2FzdDxHTENvbG9yICo+KG1hcHBl
ZFB0cik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBFWFBFQ1RfRVEoR0xDb2xv
cjo6cmVkLCBkYXRhQ29sb3JbMF0pOworCisgICAgZ2xVbm1hcEJ1ZmZlcihHTF9QSVhFTF9QQUNL
X0JVRkZFUik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFRlc3QgYW4gZXJy
b3IgaXMgZ2VuZXJhdGVkIHdoZW4gdGhlIFBCTyBpcyB0b28gc21hbGwuCitURVNUX1AoUmVhZFBp
eGVsc1BCT1Rlc3QsIFBCT1Rvb1NtYWxsKQoreworICAgIFJlc2V0KDQgKiAxNiAqIDE2IC0gMSwg
MTYsIDE2KTsKKworICAgIGdsQ2xlYXJDb2xvcigxLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKKyAg
ICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OworCisgICAgZ2xCaW5kQnVmZmVyKEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCBtUEJPKTsKKyAgICBn
bFJlYWRQaXhlbHMoMCwgMCwgMTYsIDE2LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAwKTsK
KworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKKy8vIFRl
c3QgYW4gZXJyb3IgaXMgZ2VuZXJhdGVkIHdoZW4gdGhlIFBCTyBpcyBtYXBwZWQuCitURVNUX1Ao
UmVhZFBpeGVsc1BCT1Rlc3QsIFBCT01hcHBlZCkKK3sKKyAgICBnbENsZWFyQ29sb3IoMS4wZiwg
MC4wZiwgMC4wZiwgMS4wZik7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9QQUNL
X0JVRkZFUiwgbVBCTyk7CisgICAgZ2xNYXBCdWZmZXJSYW5nZShHTF9QSVhFTF9QQUNLX0JVRkZF
UiwgMCwgMzIsIEdMX01BUF9SRUFEX0JJVCk7CisgICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIDE2LCAx
NiwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMCk7CisKKyAgICBFWFBFQ1RfR0xfRVJST1Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCisvLyBUZXN0IHRoYXQgYmluZGluZyBhIFBCTyB0
byBBUlJBWV9CVUZGRVIgd29ya3MgYXMgZXhwZWN0ZWQuCitURVNUX1AoUmVhZFBpeGVsc1BCT1Rl
c3QsIEFycmF5QnVmZmVyVGFyZ2V0KQoreworICAgIGdsQ2xlYXJDb2xvcigxLjBmLCAwLjBmLCAw
LjBmLCAxLjBmKTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOworCisgICAgZ2xCaW5kQnVmZmVyKEdMX1BJWEVMX1BBQ0tfQlVGRkVS
LCBtUEJPKTsKKyAgICBnbFJlYWRQaXhlbHMoMCwgMCwgMTYsIDE2LCBHTF9SR0JBLCBHTF9VTlNJ
R05FRF9CWVRFLCAwKTsKKworICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9QQUNLX0JVRkZFUiwg
MCk7CisgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbVBCTyk7CisKKyAgICBHTHZv
aWQgKm1hcHBlZFB0ciA9IGdsTWFwQnVmZmVyUmFuZ2UoR0xfQVJSQVlfQlVGRkVSLCAwLCAzMiwg
R0xfTUFQX1JFQURfQklUKTsKKyAgICBHTENvbG9yICpkYXRhQ29sb3IgPSBzdGF0aWNfY2FzdDxH
TENvbG9yICo+KG1hcHBlZFB0cik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBF
WFBFQ1RfRVEoR0xDb2xvcjo6cmVkLCBkYXRhQ29sb3JbMF0pOworCisgICAgZ2xVbm1hcEJ1ZmZl
cihHTF9BUlJBWV9CVUZGRVIpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworfQorCisvLyBU
ZXN0IHRoYXQgdXNpbmcgYSBQQk8gZG9lcyBub3Qgb3ZlcndyaXRlIGV4aXN0aW5nIGRhdGEuCitU
RVNUX1AoUmVhZFBpeGVsc1BCT1Rlc3QsIEV4aXN0aW5nRGF0YVByZXNlcnZlZCkKK3sKKyAgICAv
LyBUT0RPKGdlb2ZmbGFuZyk6IEZpZ3VyZSBvdXQgd2h5IHRoaXMgZmFpbHMgb24gQU1EIE9wZW5H
TCAoaHR0cDovL2FuZ2xlYnVnLmNvbS8xMjkxKQorICAgIGlmIChJc0FNRCgpICYmIGdldFBsYXRm
b3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUpCisg
ICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3QgZGlzYWJsZWQgb24gQU1EIE9wZW5HTC4i
IDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIENsZWFyIGJh
Y2tidWZmZXIgdG8gcmVkCisgICAgZ2xDbGVhckNvbG9yKDEuMGYsIDAuMGYsIDAuMGYsIDEuMGYp
OworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7CisKKyAgICAvLyBSZWFkIDE2eDE2IHJlZ2lvbiBmcm9tIHJlZCBiYWNrYnVmZmVyIHRv
IFBCTworICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9QQUNLX0JVRkZFUiwgbVBCTyk7CisgICAg
Z2xSZWFkUGl4ZWxzKDAsIDAsIDE2LCAxNiwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMCk7
CisKKyAgICAvLyBDbGVhciBiYWNrYnVmZmVyIHRvIGdyZWVuCisgICAgZ2xDbGVhckNvbG9yKDAu
MGYsIDEuMGYsIDAuMGYsIDEuMGYpOworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7
CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBSZWFkIDE2eDE2IHJlZ2lvbiBm
cm9tIGdyZWVuIGJhY2tidWZmZXIgdG8gUEJPIGF0IG9mZnNldCAxNgorICAgIGdsUmVhZFBpeGVs
cygwLCAwLCAxNiwgMTYsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHJlaW50ZXJwcmV0X2Nh
c3Q8R0x2b2lkKj4oMTYpKTsKKyAgICBHTHZvaWQgKm1hcHBlZFB0ciAgPSBnbE1hcEJ1ZmZlclJh
bmdlKEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCAwLCAzMiwgR0xfTUFQX1JFQURfQklUKTsKKyAgICBH
TENvbG9yICpkYXRhQ29sb3IgPSBzdGF0aWNfY2FzdDxHTENvbG9yICo+KG1hcHBlZFB0cik7Cisg
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBUZXN0IHBpeGVsIDAgaXMgcmVkIChl
eGlzdGluZyBkYXRhKQorICAgIEVYUEVDVF9FUShHTENvbG9yOjpyZWQsIGRhdGFDb2xvclswXSk7
CisKKyAgICAvLyBUZXN0IHBpeGVsIDE2IGlzIGdyZWVuIChuZXcgZGF0YSkKKyAgICBFWFBFQ1Rf
RVEoR0xDb2xvcjo6Z3JlZW4sIGRhdGFDb2xvclsxNl0pOworCisgICAgZ2xVbm1hcEJ1ZmZlcihH
TF9QSVhFTF9QQUNLX0JVRkZFUik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8v
IFRlc3QgdGhhdCBjYWxsaW5nIFN1YkRhdGEgcHJlc2VydmVzIFBCTyBkYXRhLgorVEVTVF9QKFJl
YWRQaXhlbHNQQk9UZXN0LCBTdWJEYXRhUHJlc2VydmVzQ29udGVudHMpCit7CisgICAgZ2xDbGVh
ckNvbG9yKDEuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVG
RkVSX0JJVCk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbEJpbmRCdWZmZXIo
R0xfUElYRUxfUEFDS19CVUZGRVIsIG1QQk8pOworICAgIGdsUmVhZFBpeGVscygwLCAwLCAxNiwg
MTYsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDApOworCisgICAgdW5zaWduZWQgY2hhciBk
YXRhWzRdID0geyAxLCAyLCAzLCA0IH07CisKKyAgICBnbEJpbmRCdWZmZXIoR0xfUElYRUxfUEFD
S19CVUZGRVIsIDApOworICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1QQk8pOwor
ICAgIGdsQnVmZmVyU3ViRGF0YShHTF9BUlJBWV9CVUZGRVIsIDAsIDQsIGRhdGEpOworCisgICAg
R0x2b2lkICptYXBwZWRQdHIgID0gZ2xNYXBCdWZmZXJSYW5nZShHTF9BUlJBWV9CVUZGRVIsIDAs
IDMyLCBHTF9NQVBfUkVBRF9CSVQpOworICAgIEdMQ29sb3IgKmRhdGFDb2xvciA9IHN0YXRpY19j
YXN0PEdMQ29sb3IgKj4obWFwcGVkUHRyKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKwor
ICAgIEVYUEVDVF9FUShHTENvbG9yKDEsIDIsIDMsIDQpLCBkYXRhQ29sb3JbMF0pOworCisgICAg
Z2xVbm1hcEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OworfQorCisvLyBTYW1lIGFzIHRoZSBwcmlvciB0ZXN0LCBidXQgd2l0aCBhbiBvZmZzZXQuCitU
RVNUX1AoUmVhZFBpeGVsc1BCT1Rlc3QsIFN1YkRhdGFPZmZzZXRQcmVzZXJ2ZXNDb250ZW50cykK
K3sKKyAgICAvLyBUT0RPOiByZS1lbmFibGUgb25jZSByb290IGNhdXNlIG9mIGh0dHA6Ly9hbmds
ZWJ1Zy5jb20vMTQxNSBpcyBmaXhlZAorICAgIGlmIChJc0FuZHJvaWQoKSAmJiBJc0FkcmVubygp
ICYmIElzT3BlbkdMRVMoKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lw
cGVkIG9uIEFkcmVubyBPcGVuR0xFUyBvbiBBbmRyb2lkLiIgPDwgc3RkOjplbmRsOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgZ2xDbGVhckNvbG9yKDEuMGYsIDAuMGYsIDAuMGYsIDEu
MGYpOworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7CisKKyAgICBnbEJpbmRCdWZmZXIoR0xfUElYRUxfUEFDS19CVUZGRVIsIG1QQk8p
OworICAgIGdsUmVhZFBpeGVscygwLCAwLCAxNiwgMTYsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsIDApOworCisgICAgdW5zaWduZWQgY2hhciBkYXRhWzRdID0geyAxLCAyLCAzLCA0IH07CisK
KyAgICBnbEJpbmRCdWZmZXIoR0xfUElYRUxfUEFDS19CVUZGRVIsIDApOworICAgIGdsQmluZEJ1
ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1QQk8pOworICAgIGdsQnVmZmVyU3ViRGF0YShHTF9BUlJB
WV9CVUZGRVIsIDE2LCA0LCBkYXRhKTsKKworICAgIEdMdm9pZCAqbWFwcGVkUHRyICA9IGdsTWFw
QnVmZmVyUmFuZ2UoR0xfQVJSQVlfQlVGRkVSLCAwLCAzMiwgR0xfTUFQX1JFQURfQklUKTsKKyAg
ICBHTENvbG9yICpkYXRhQ29sb3IgPSBzdGF0aWNfY2FzdDxHTENvbG9yICo+KG1hcHBlZFB0cik7
CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBFWFBFQ1RfRVEoR0xDb2xvcjo6cmVk
LCBkYXRhQ29sb3JbMF0pOworICAgIEVYUEVDVF9FUShHTENvbG9yKDEsIDIsIDMsIDQpLCBkYXRh
Q29sb3JbNF0pOworCisgICAgZ2xVbm1hcEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIpOworICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOworfQorCitjbGFzcyBSZWFkUGl4ZWxzUEJPRHJhd1Rlc3QgOiBw
dWJsaWMgUmVhZFBpeGVsc1BCT1Rlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIFJlYWRQaXhlbHNQ
Qk9EcmF3VGVzdCgpIDogbVByb2dyYW0oMCksIG1Qb3NpdGlvblZCTygwKSB7fQorCisgICAgdm9p
ZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBSZWFkUGl4ZWxzUEJPVGVzdDo6U2V0
VXAoKTsKKworICAgICAgICBjb25zdCBjaGFyICp2ZXJ0ZXhTaGFkZXJTcmMgPQorICAgICAgICAg
ICAgImF0dHJpYnV0ZSB2ZWM0IGFUZXN0OyBhdHRyaWJ1dGUgdmVjMiBhUG9zaXRpb247IHZhcnlp
bmcgdmVjNCB2VGVzdDtcbiIKKyAgICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAg
ICAgIntcbiIKKyAgICAgICAgICAgICIgICAgdlRlc3QgICAgICAgID0gYVRlc3Q7XG4iCisgICAg
ICAgICAgICAiICAgIGdsX1Bvc2l0aW9uICA9IHZlYzQoYVBvc2l0aW9uLCAwLjAsIDEuMCk7XG4i
CisgICAgICAgICAgICAiICAgIGdsX1BvaW50U2l6ZSA9IDEuMDtcbiIKKyAgICAgICAgICAgICJ9
IjsKKworICAgICAgICBjb25zdCBjaGFyICpmcmFnbWVudFNoYWRlclNyYyA9CisgICAgICAgICAg
ICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7IHZhcnlpbmcgdmVjNCB2VGVzdDtcbiIKKyAgICAg
ICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICIg
ICAgZ2xfRnJhZ0NvbG9yID0gdlRlc3Q7XG4iCisgICAgICAgICAgICAifSI7CisKKyAgICAgICAg
bVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTcmMsIGZyYWdtZW50U2hhZGVy
U3JjKTsKKyAgICAgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7CisKKyAgICAgICAgZ2xHZW5C
dWZmZXJzKDEsICZtUG9zaXRpb25WQk8pOworICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlf
QlVGRkVSLCBtUG9zaXRpb25WQk8pOworICAgICAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVG
RkVSLCAxMjgsIE5VTEwsIEdMX0RZTkFNSUNfRFJBVyk7CisgICAgICAgIGdsQmluZEJ1ZmZlcihH
TF9BUlJBWV9CVUZGRVIsIDApOworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlk
ZQorICAgIHsKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICAgICAgZ2xE
ZWxldGVCdWZmZXJzKDEsICZtUG9zaXRpb25WQk8pOworICAgICAgICBSZWFkUGl4ZWxzUEJPVGVz
dDo6VGVhckRvd24oKTsKKyAgICB9CisKKyAgICBHTHVpbnQgbVByb2dyYW07CisgICAgR0x1aW50
IG1Qb3NpdGlvblZCTzsKK307CisKKy8vIFRlc3QgdGhhdCB3ZSBjYW4gZHJhdyB3aXRoIFBCTyBk
YXRhLgorVEVTVF9QKFJlYWRQaXhlbHNQQk9EcmF3VGVzdCwgRHJhd1dpdGhQQk8pCit7CisgICAg
R0xDb2xvciBjb2xvcigxLCAyLCAzLCA0KTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVf
MkQsIG1UZXh0dXJlKTsKKyAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwg
MCwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgJmNvbG9yKTsKKyAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKKworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJBTUVCVUZG
RVIsIG1GQk8pOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xCaW5kQnVmZmVy
KEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCBtUEJPKTsKKyAgICBnbFJlYWRQaXhlbHMoMCwgMCwgMSwg
MSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMCk7CisgICAgZ2xCaW5kQnVmZmVyKEdMX1BJ
WEVMX1BBQ0tfQlVGRkVSLCAwKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGZs
b2F0IHBvc2l0aW9uRGF0YVtdID0geyAwLjVmLCAwLjVmIH07CisKKyAgICBnbFVzZVByb2dyYW0o
bVByb2dyYW0pOworICAgIGdsVmlld3BvcnQoMCwgMCwgMSwgMSk7CisgICAgZ2xCaW5kQnVmZmVy
KEdMX0FSUkFZX0JVRkZFUiwgbVBvc2l0aW9uVkJPKTsKKyAgICBnbEJ1ZmZlclN1YkRhdGEoR0xf
QVJSQVlfQlVGRkVSLCAwLCAxICogMiAqIDQsIHBvc2l0aW9uRGF0YSk7CisgICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7CisKKyAgICBHTGludCBwb3NpdGlvbkxvY2F0aW9uID0gZ2xHZXRBdHRyaWJM
b2NhdGlvbihtUHJvZ3JhbSwgImFQb3NpdGlvbiIpOworICAgIEVYUEVDVF9ORSgtMSwgcG9zaXRp
b25Mb2NhdGlvbik7CisKKyAgICBHTGludCB0ZXN0TG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0
aW9uKG1Qcm9ncmFtLCAiYVRlc3QiKTsKKyAgICBFWFBFQ1RfTkUoLTEsIHRlc3RMb2NhdGlvbik7
CisKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25Mb2NhdGlvbiwgMiwgR0xfRkxP
QVQsIEdMX0ZBTFNFLCAwLCAwKTsKKyAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHBvc2l0
aW9uTG9jYXRpb24pOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xCaW5kQnVm
ZmVyKEdMX0FSUkFZX0JVRkZFUiwgbVBCTyk7CisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHRl
c3RMb2NhdGlvbiwgNCwgR0xfVU5TSUdORURfQllURSwgR0xfRkFMU0UsIDAsIDApOworICAgIGds
RW5hYmxlVmVydGV4QXR0cmliQXJyYXkodGVzdExvY2F0aW9uKTsKKyAgICBFWFBFQ1RfR0xfTk9f
RVJST1IoKTsKKworICAgIGdsRHJhd0FycmF5cyhHTF9QT0lOVFMsIDAsIDEpOworICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOworCisgICAgY29sb3IgPSBHTENvbG9yKDAsIDAsIDAsIDApOworICAg
IGdsUmVhZFBpeGVscygwLCAwLCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAmY29s
b3IpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgRVhQRUNUX0VRKEdMQ29sb3Io
MSwgMiwgMywgNCksIGNvbG9yKTsKK30KKworY2xhc3MgUmVhZFBpeGVsc011bHRpc2FtcGxlVGVz
dCA6IHB1YmxpYyBSZWFkUGl4ZWxzVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgUmVhZFBpeGVs
c011bHRpc2FtcGxlVGVzdCgpIDogbUZCTygwKSwgbVJCTygwKSwgbVBCTygwKSB7fQorCisgICAg
dm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7
CisKKyAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1GQk8pOworICAgICAgICBnbEJpbmRG
cmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZCTyk7CisKKyAgICAgICAgZ2xHZW5SZW5kZXJi
dWZmZXJzKDEsICZtUkJPKTsKKyAgICAgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJV
RkZFUiwgbVJCTyk7CisKKyAgICAgICAgZ2xHZW5CdWZmZXJzKDEsICZtUEJPKTsKKyAgICAgICAg
Z2xCaW5kQnVmZmVyKEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCBtUEJPKTsKKyAgICAgICAgZ2xCdWZm
ZXJEYXRhKEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCA0ICogZ2V0V2luZG93V2lkdGgoKSAqIGdldFdp
bmRvd0hlaWdodCgpLCBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgR0xfU1RBVElDX0RS
QVcpOworICAgICAgICBnbEJpbmRCdWZmZXIoR0xfUElYRUxfUEFDS19CVUZGRVIsIDApOworCisg
ICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24o
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOworCisgICAg
ICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZtRkJPKTsKKyAgICAgICAgZ2xEZWxldGVSZW5k
ZXJidWZmZXJzKDEsICZtUkJPKTsKKyAgICAgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtUEJPKTsK
KyAgICB9CisKKyAgICBHTHVpbnQgbUZCTzsKKyAgICBHTHVpbnQgbVJCTzsKKyAgICBHTHVpbnQg
bVBCTzsKK307CisKKy8vIFRlc3QgUmVhZFBpeGVscyBmcm9tIGEgbXVsdGlzYW1wbGVkIGZyYW1l
YnVmZmVyLgorVEVTVF9QKFJlYWRQaXhlbHNNdWx0aXNhbXBsZVRlc3QsIEJhc2ljQ2xlYXIpCit7
CisgICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAmJiAhZXh0ZW5zaW9uRW5hYmxl
ZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKSkKKyAgICB7CisgICAgICAgIHN0
ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgRVMzIG9yIEdMX0FOR0xFX2ZyYW1lYnVm
ZmVyX211bHRpc2FtcGxlIGlzIG5vdCBhdmFpbGFibGUuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfZnJh
bWVidWZmZXJfbXVsdGlzYW1wbGUiKSkKKyAgICB7CisgICAgICAgIGdsUmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlQU5HTEUoR0xfUkVOREVSQlVGRkVSLCAyLCBHTF9SR0JBOCwgNCwgNCk7
CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlKEdMX1JFTkRFUkJVRkZFUiwgMiwgR0xfUkdCQTgsIDQsIDQpOworICAgIH0KKwor
ICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FU
VEFDSE1FTlQwLCBHTF9SRU5ERVJCVUZGRVIsIG1SQk8pOworICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOworCisgICAgZ2xDbGVhckNvbG9yKDEuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOworICAgIGds
Q2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisKKyAgICBnbEJpbmRCdWZmZXIoR0xfUElYRUxf
UEFDS19CVUZGRVIsIG1QQk8pOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xS
ZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIEdMX1JHQkE4LCBHTF9VTlNJR05FRF9CWVRFLCBOVUxMKTsK
KyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCitjbGFzcyBS
ZWFkUGl4ZWxzVGV4dHVyZVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHB1YmxpYzoKKyAg
ICBSZWFkUGl4ZWxzVGV4dHVyZVRlc3QoKSA6IG1GQk8oMCksIG1UZXh0dXJlKDApCisgICAgewor
ICAgICAgICBzZXRXaW5kb3dXaWR0aCgzMik7CisgICAgICAgIHNldFdpbmRvd0hlaWdodCgzMik7
CisgICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0
cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0Fs
cGhhQml0cyg4KTsKKyAgICB9CisKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKKworICAgICAgICBnbEdlblRleHR1cmVzKDEsICZt
VGV4dHVyZSk7CisgICAgICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZtRkJPKTsKKyAgICAgICAg
Z2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GQk8pOworICAgIH0KKworICAgIHZv
aWQgVGVhckRvd24oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZl
cnMoMSwgJm1GQk8pOworICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtVGV4dHVyZSk7CisK
KyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOworICAgIH0KKworICAgIHZvaWQgaW5pdFRl
eHR1cmUoR0xlbnVtIHRleHR1cmVUYXJnZXQsCisgICAgICAgICAgICAgICAgICAgICBHTGludCBs
ZXZlbHMsCisgICAgICAgICAgICAgICAgICAgICBHTGludCBhdHRhY2htZW50TGV2ZWwsCisgICAg
ICAgICAgICAgICAgICAgICBHTGludCBhdHRhY2htZW50TGF5ZXIpCisgICAgeworICAgICAgICBn
bEJpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1UZXh0dXJlKTsKKyAgICAgICAgZ2xUZXhTdG9y
YWdlM0QodGV4dHVyZVRhcmdldCwgbGV2ZWxzLCBHTF9SR0JBOCwgNCwgNCwgNCk7CisgICAgICAg
IGdsRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFD
SE1FTlQwLCBtVGV4dHVyZSwgYXR0YWNobWVudExldmVsLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGF0dGFjaG1lbnRMYXllcik7CisgICAgICAgIGluaXRpYWxpemVUZXh0dXJl
RGF0YSh0ZXh0dXJlVGFyZ2V0LCBsZXZlbHMpOworICAgIH0KKworICAgIHZvaWQgdGVzdFJlYWQo
R0xlbnVtIHRleHR1cmVUYXJnZXQsIEdMaW50IGxldmVscywgR0xpbnQgYXR0YWNobWVudExldmVs
LCBHTGludCBhdHRhY2htZW50TGF5ZXIpCisgICAgeworICAgICAgICBpbml0VGV4dHVyZSh0ZXh0
dXJlVGFyZ2V0LCBsZXZlbHMsIGF0dGFjaG1lbnRMZXZlbCwgYXR0YWNobWVudExheWVyKTsKKyAg
ICAgICAgdmVyaWZ5Q29sb3IoYXR0YWNobWVudExldmVsLCBhdHRhY2htZW50TGF5ZXIpOworICAg
IH0KKworICAgIHZvaWQgaW5pdFBCTygpCisgICAgeworICAgICAgICBnbEdlbkJ1ZmZlcnMoMSwg
Jm1CdWZmZXIpOworICAgICAgICBnbEJpbmRCdWZmZXIoR0xfUElYRUxfUEFDS19CVUZGRVIsIG1C
dWZmZXIpOworICAgICAgICBnbEJ1ZmZlckRhdGEoR0xfUElYRUxfUEFDS19CVUZGRVIsIHNpemVv
ZihhbmdsZTo6R0xDb2xvciksIG51bGxwdHIsIEdMX1NUUkVBTV9DT1BZKTsKKyAgICAgICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7CisgICAgfQorCisgICAgdm9pZCB0ZXN0UEJPUmVhZChHTGVudW0g
dGV4dHVyZVRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVscywKKyAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGF0dGFjaG1lbnRMZXZlbCwKKyAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGF0dGFjaG1lbnRMYXllcikKKyAgICB7CisgICAgICAgIGluaXRQQk8oKTsKKyAg
ICAgICAgaW5pdFRleHR1cmUodGV4dHVyZVRhcmdldCwgbGV2ZWxzLCBhdHRhY2htZW50TGV2ZWws
IGF0dGFjaG1lbnRMYXllcik7CisgICAgICAgIHZlcmlmeVBCTyhhdHRhY2htZW50TGV2ZWwsIGF0
dGFjaG1lbnRMYXllcik7CisgICAgfQorCisgICAgLy8gR2l2ZSBlYWNoIHtsZXZlbCxsYXllcn0g
cGFpciBhIChwcm9iYWJseSkgdW5pcXVlIGNvbG9yIHZpYSByYW5kb20uCisgICAgR0x1aW50IGdl
dENvbG9yVmFsdWUoR0xpbnQgbGV2ZWwsIEdMaW50IGxheWVyKQorICAgIHsKKyAgICAgICAgbVJO
Ry5yZXNlZWQobGV2ZWwgKyBsYXllciAqIDMyKTsKKyAgICAgICAgcmV0dXJuIG1STkcucmFuZG9t
VUludCgpOworICAgIH0KKworICAgIHZvaWQgdmVyaWZ5Q29sb3IoR0xpbnQgbGV2ZWwsIEdMaW50
IGxheWVyKQorICAgIHsKKyAgICAgICAgYW5nbGU6OkdMQ29sb3IgY29sb3JWYWx1ZShnZXRDb2xv
clZhbHVlKGxldmVsLCBsYXllcikpOworICAgICAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwg
MCwgY29sb3JWYWx1ZSk7CisgICAgfQorCisgICAgdm9pZCB2ZXJpZnlQQk8oR0xpbnQgbGV2ZWws
IEdMaW50IGxheWVyKQorICAgIHsKKyAgICAgICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOworCisgICAgICAgIGFuZ2xlOjpHTENv
bG9yIGV4cGVjdGVkQ29sb3IoZ2V0Q29sb3JWYWx1ZShsZXZlbCwgbGF5ZXIpKTsKKyAgICAgICAg
dm9pZCAqbWFwUG9pbnRlciA9CisgICAgICAgICAgICBnbE1hcEJ1ZmZlclJhbmdlKEdMX1BJWEVM
X1BBQ0tfQlVGRkVSLCAwLCBzaXplb2YoYW5nbGU6OkdMQ29sb3IpLCBHTF9NQVBfUkVBRF9CSVQp
OworICAgICAgICBBU1NFUlRfTkUobnVsbHB0ciwgbWFwUG9pbnRlcik7CisgICAgICAgIGFuZ2xl
OjpHTENvbG9yIGFjdHVhbENvbG9yOworICAgICAgICBtZW1jcHkoJmFjdHVhbENvbG9yLCBtYXBQ
b2ludGVyLCBzaXplb2YoYW5nbGU6OkdMQ29sb3IpKTsKKyAgICAgICAgZ2xVbm1hcEJ1ZmZlcihH
TF9QSVhFTF9QQUNLX0JVRkZFUik7CisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAg
ICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRDb2xvciwgYWN0dWFsQ29sb3IpOworICAgIH0KKworICAg
IHZvaWQgaW5pdGlhbGl6ZVRleHR1cmVEYXRhKEdMZW51bSB0ZXh0dXJlVGFyZ2V0LCBHTGludCBs
ZXZlbHMpCisgICAgeworICAgICAgICBmb3IgKEdMaW50IGxldmVsID0gMDsgbGV2ZWwgPCBsZXZl
bHM7ICsrbGV2ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIEdMaW50IG1pcFNpemUgPSA0ID4+
IGxldmVsOworICAgICAgICAgICAgR0xpbnQgbGF5ZXJzICA9ICh0ZXh0dXJlVGFyZ2V0ID09IEdM
X1RFWFRVUkVfM0QgPyBtaXBTaXplIDogNCk7CisKKyAgICAgICAgICAgIHNpemVfdCBsYXllclNp
emUgPSBtaXBTaXplICogbWlwU2l6ZTsKKyAgICAgICAgICAgIHN0ZDo6dmVjdG9yPEdMdWludD4g
dGV4dHVyZURhdGEobGF5ZXJzICogbGF5ZXJTaXplKTsKKworICAgICAgICAgICAgZm9yIChHTGlu
dCBsYXllciA9IDA7IGxheWVyIDwgbGF5ZXJzOyArK2xheWVyKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIEdMdWludCBjb2xvclZhbHVlID0gZ2V0Q29sb3JWYWx1ZShsZXZlbCwgbGF5
ZXIpOworICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSAobGF5ZXIgKiBsYXllclNpemUp
OworICAgICAgICAgICAgICAgIHN0ZDo6ZmlsbCh0ZXh0dXJlRGF0YS5iZWdpbigpICsgb2Zmc2V0
LCB0ZXh0dXJlRGF0YS5iZWdpbigpICsgb2Zmc2V0ICsgbGF5ZXJTaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb2xvclZhbHVlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Z2xUZXhTdWJJbWFnZTNEKHRleHR1cmVUYXJnZXQsIGxldmVsLCAwLCAwLCAwLCBtaXBTaXplLCBt
aXBTaXplLCBsYXllcnMsIEdMX1JHQkEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
VU5TSUdORURfQllURSwgdGV4dHVyZURhdGEuZGF0YSgpKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGFuZ2xlOjpSTkcgbVJORzsKKyAgICBHTHVpbnQgbUZCTzsKKyAgICBHTHVpbnQgbVRleHR1
cmU7CisgICAgR0x1aW50IG1CdWZmZXI7Cit9OworCisvLyBUZXN0IDNEIGF0dGFjaG1lbnQgcmVh
ZGJhY2suCitURVNUX1AoUmVhZFBpeGVsc1RleHR1cmVUZXN0LCBCYXNpY0F0dGFjaG1lbnQzRCkK
K3sKKyAgICB0ZXN0UmVhZChHTF9URVhUVVJFXzNELCAxLCAwLCAwKTsKK30KKworLy8gVGVzdCAz
RCBhdHRhY2htZW50IHJlYWRiYWNrLCBub24temVybyBtaXAuCitURVNUX1AoUmVhZFBpeGVsc1Rl
eHR1cmVUZXN0LCBNaXBBdHRhY2htZW50M0QpCit7CisgICAgdGVzdFJlYWQoR0xfVEVYVFVSRV8z
RCwgMiwgMSwgMCk7Cit9CisKKy8vIFRlc3QgM0QgYXR0YWNobWVudCByZWFkYmFjaywgbm9uLXpl
cm8gbGF5ZXIuCitURVNUX1AoUmVhZFBpeGVsc1RleHR1cmVUZXN0LCBMYXllckF0dGFjaG1lbnQz
RCkKK3sKKyAgICB0ZXN0UmVhZChHTF9URVhUVVJFXzNELCAxLCAwLCAxKTsKK30KKworLy8gVGVz
dCAzRCBhdHRhY2htZW50IHJlYWRiYWNrLCBub24temVybyBtaXAgYW5kIGxheWVyLgorVEVTVF9Q
KFJlYWRQaXhlbHNUZXh0dXJlVGVzdCwgTWlwTGF5ZXJBdHRhY2htZW50M0QpCit7CisgICAgdGVz
dFJlYWQoR0xfVEVYVFVSRV8zRCwgMiwgMSwgMSk7Cit9CisKKy8vIFRlc3QgMkQgYXJyYXkgYXR0
YWNobWVudCByZWFkYmFjay4KK1RFU1RfUChSZWFkUGl4ZWxzVGV4dHVyZVRlc3QsIEJhc2ljQXR0
YWNobWVudDJEQXJyYXkpCit7CisgICAgdGVzdFJlYWQoR0xfVEVYVFVSRV8yRF9BUlJBWSwgMSwg
MCwgMCk7Cit9CisKKy8vIFRlc3QgM0QgYXR0YWNobWVudCByZWFkYmFjaywgbm9uLXplcm8gbWlw
LgorVEVTVF9QKFJlYWRQaXhlbHNUZXh0dXJlVGVzdCwgTWlwQXR0YWNobWVudDJEQXJyYXkpCit7
CisgICAgdGVzdFJlYWQoR0xfVEVYVFVSRV8yRF9BUlJBWSwgMiwgMSwgMCk7Cit9CisKKy8vIFRl
c3QgM0QgYXR0YWNobWVudCByZWFkYmFjaywgbm9uLXplcm8gbGF5ZXIuCitURVNUX1AoUmVhZFBp
eGVsc1RleHR1cmVUZXN0LCBMYXllckF0dGFjaG1lbnQyREFycmF5KQoreworICAgIHRlc3RSZWFk
KEdMX1RFWFRVUkVfMkRfQVJSQVksIDEsIDAsIDEpOworfQorCisvLyBUZXN0IDNEIGF0dGFjaG1l
bnQgcmVhZGJhY2ssIG5vbi16ZXJvIG1pcCBhbmQgbGF5ZXIuCitURVNUX1AoUmVhZFBpeGVsc1Rl
eHR1cmVUZXN0LCBNaXBMYXllckF0dGFjaG1lbnQyREFycmF5KQoreworICAgIHRlc3RSZWFkKEdM
X1RFWFRVUkVfMkRfQVJSQVksIDIsIDEsIDEpOworfQorCisvLyBUZXN0IDNEIGF0dGFjaG1lbnQg
UEJPIHJlYWRiYWNrLgorVEVTVF9QKFJlYWRQaXhlbHNUZXh0dXJlVGVzdCwgQmFzaWNBdHRhY2ht
ZW50M0RQQk8pCit7CisgICAgdGVzdFBCT1JlYWQoR0xfVEVYVFVSRV8zRCwgMSwgMCwgMCk7Cit9
CisKKy8vIFRlc3QgM0QgYXR0YWNobWVudCByZWFkYmFjaywgbm9uLXplcm8gbWlwLgorVEVTVF9Q
KFJlYWRQaXhlbHNUZXh0dXJlVGVzdCwgTWlwQXR0YWNobWVudDNEUEJPKQoreworICAgIHRlc3RQ
Qk9SZWFkKEdMX1RFWFRVUkVfM0QsIDIsIDEsIDApOworfQorCisvLyBUZXN0IDNEIGF0dGFjaG1l
bnQgcmVhZGJhY2ssIG5vbi16ZXJvIGxheWVyLgorVEVTVF9QKFJlYWRQaXhlbHNUZXh0dXJlVGVz
dCwgTGF5ZXJBdHRhY2htZW50M0RQQk8pCit7CisgICAgdGVzdFBCT1JlYWQoR0xfVEVYVFVSRV8z
RCwgMSwgMCwgMSk7Cit9CisKKy8vIFRlc3QgM0QgYXR0YWNobWVudCByZWFkYmFjaywgbm9uLXpl
cm8gbWlwIGFuZCBsYXllci4KK1RFU1RfUChSZWFkUGl4ZWxzVGV4dHVyZVRlc3QsIE1pcExheWVy
QXR0YWNobWVudDNEUEJPKQoreworICAgIHRlc3RQQk9SZWFkKEdMX1RFWFRVUkVfM0QsIDIsIDEs
IDEpOworfQorCisvLyBUZXN0IDJEIGFycmF5IGF0dGFjaG1lbnQgcmVhZGJhY2suCitURVNUX1Ao
UmVhZFBpeGVsc1RleHR1cmVUZXN0LCBCYXNpY0F0dGFjaG1lbnQyREFycmF5UEJPKQoreworICAg
IHRlc3RQQk9SZWFkKEdMX1RFWFRVUkVfMkRfQVJSQVksIDEsIDAsIDApOworfQorCisvLyBUZXN0
IDNEIGF0dGFjaG1lbnQgcmVhZGJhY2ssIG5vbi16ZXJvIG1pcC4KK1RFU1RfUChSZWFkUGl4ZWxz
VGV4dHVyZVRlc3QsIE1pcEF0dGFjaG1lbnQyREFycmF5UEJPKQoreworICAgIHRlc3RQQk9SZWFk
KEdMX1RFWFRVUkVfMkRfQVJSQVksIDIsIDEsIDApOworfQorCisvLyBUZXN0IDNEIGF0dGFjaG1l
bnQgcmVhZGJhY2ssIG5vbi16ZXJvIGxheWVyLgorVEVTVF9QKFJlYWRQaXhlbHNUZXh0dXJlVGVz
dCwgTGF5ZXJBdHRhY2htZW50MkRBcnJheVBCTykKK3sKKyAgICB0ZXN0UEJPUmVhZChHTF9URVhU
VVJFXzJEX0FSUkFZLCAxLCAwLCAxKTsKK30KKworLy8gVGVzdCAzRCBhdHRhY2htZW50IHJlYWRi
YWNrLCBub24temVybyBtaXAgYW5kIGxheWVyLgorVEVTVF9QKFJlYWRQaXhlbHNUZXh0dXJlVGVz
dCwgTWlwTGF5ZXJBdHRhY2htZW50MkRBcnJheVBCTykKK3sKKyAgICB0ZXN0UEJPUmVhZChHTF9U
RVhUVVJFXzJEX0FSUkFZLCAyLCAxLCAxKTsKK30KKworLy8gYSB0ZXN0IGNsYXNzIHRvIGJlIHVz
ZWQgZm9yIGVycm9yIGNoZWNraW5nIG9mIGdsUmVhZFBpeGVscworY2xhc3MgUmVhZFBpeGVsc0Vy
cm9yVGVzdCA6IHB1YmxpYyBSZWFkUGl4ZWxzVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgUmVh
ZFBpeGVsc0Vycm9yVGVzdCgpIDogbVRleHR1cmUoMCksIG1GQk8oMCkge30KKworICAgIHZvaWQg
U2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOworCisg
ICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1UZXh0dXJlKTsKKyAgICAgICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZSk7CisgICAgICAgIGdsVGV4U3RvcmFnZTJEKEdMX1RF
WFRVUkVfMkQsIDEsIEdMX1JHQkE4LCA0LCAxKTsKKworICAgICAgICBnbEdlbkZyYW1lYnVmZmVy
cygxLCAmbUZCTyk7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBt
RkJPKTsKKyAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xf
Q09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlLCAwKTsKKyAgICAgICAg
Z2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApOworCisgICAgICAgIEFTU0VSVF9H
TF9OT19FUlJPUigpOworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOworCisgICAgICAgIGdsRGVsZXRlVGV4
dHVyZXMoMSwgJm1UZXh0dXJlKTsKKyAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1G
Qk8pOworICAgIH0KKworICAgIEdMdWludCBtVGV4dHVyZTsKKyAgICBHTHVpbnQgbUZCTzsKK307
CisKKy8vICBUaGUgdGVzdCB2ZXJpZmllcyB0aGF0IGdsUmVhZFBpeGVscyBnZW5lcmF0ZXMgYSBH
TF9JTlZBTElEX09QRVJBVElPTiBlcnJvcgorLy8gIHdoZW4gdGhlIHJlYWQgYnVmZmVyIGlzIEdM
X05PTkUuCisvLyAgUmVmZXJlbmNlOiBHTEVTIDMuMC40LCBTZWN0aW9uIDQuMy4yIFJlYWRpbmcg
UGl4ZWxzCitURVNUX1AoUmVhZFBpeGVsc0Vycm9yVGVzdCwgUmVhZEJ1ZmZlcklzTm9uZSkKK3sK
KyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZCTyk7CisgICAgZ2xSZWFk
QnVmZmVyKEdMX05PTkUpOworICAgIHN0ZDo6dmVjdG9yPEdMdWJ5dGU+IHBpeGVscyg0KTsKKyAg
ICBnbFJlYWRQaXhlbHMoMCwgMCwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4
ZWxzLmRhdGEoKSk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
K30KKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCisvLyBVc2UgdGhpcyB0byBzZWxlY3Qg
d2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFq
b3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgorQU5HTEVfSU5T
VEFOVElBVEVfVEVTVChSZWFkUGl4ZWxzVGVzdCwgRVMyX0QzRDExKCksIEVTMl9PUEVOR0woKSwg
RVMyX09QRU5HTEVTKCkpOworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChSZWFkUGl4ZWxzUEJPVGVz
dCwgRVMzX0QzRDExKCksIEVTM19PUEVOR0woKSwgRVMzX09QRU5HTEVTKCkpOworQU5HTEVfSU5T
VEFOVElBVEVfVEVTVChSZWFkUGl4ZWxzUEJPRHJhd1Rlc3QsIEVTM19EM0QxMSgpLCBFUzNfT1BF
TkdMKCksIEVTM19PUEVOR0xFUygpKTsKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoUmVhZFBpeGVs
c011bHRpc2FtcGxlVGVzdCwgRVMzX0QzRDExKCksIEVTM19PUEVOR0woKSwgRVMzX09QRU5HTEVT
KCkpOworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChSZWFkUGl4ZWxzVGV4dHVyZVRlc3QsIEVTM19E
M0QxMSgpLCBFUzNfT1BFTkdMKCksIEVTM19PUEVOR0xFUygpKTsKK0FOR0xFX0lOU1RBTlRJQVRF
X1RFU1QoUmVhZFBpeGVsc0Vycm9yVGVzdCwgRVMzX0QzRDExKCksIEVTM19PUEVOR0woKSwgRVMz
X09QRU5HTEVTKCkpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2ds
X3Rlc3RzL1JlbmRlcmVyVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1JlbmRlcmVyVGVzdC5jcHAJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1JlbmRlcmVyVGVz
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMTAgQEAKKy8vCisvLyBDb3B5cmlnaHQg
MjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBSZW5k
ZXJlclRlc3Q6CisvLyAgIFRoZXNlIHRlc3RzIGFyZSBkZXNpZ25lZCB0byBlbnN1cmUgdGhhdCB0
aGUgdmFyaW91cyBjb25maWd1cmF0aW9ucyBvZiB0aGUgdGVzdCBmaXh0dXJlcyB3b3JrIGFzIGV4
cGVjdGVkLgorLy8gICBJZiBvbmUgb2YgdGhlc2UgdGVzdHMgZmFpbHMsIHRoZW4gaXQgaXMgbGlr
ZWx5IHRoYXQgc29tZSBvZiB0aGUgb3RoZXIgdGVzdHMgYXJlIGJlaW5nIGNvbmZpZ3VyZWQgaW5j
b3JyZWN0bHkuCisvLyAgIEZvciBleGFtcGxlLCB0aGV5IG1pZ2h0IGJlIHVzaW5nIHRoZSBEM0Qx
MSByZW5kZXJlciB3aGVuIHRoZSB0ZXN0IGlzIG1lYW50IHRvIGJlIHVzaW5nIHRoZSBEM0Q5IHJl
bmRlcmVyLgorCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIGFuZ2xlOworCituYW1lc3BhY2UKK3sKKworY2xhc3MgUmVuZGVyZXJUZXN0IDogcHVi
bGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgUmVuZGVyZXJUZXN0KCkKKyAgICB7
CisgICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7CisgICAgICAgIHNldFdpbmRvd0hlaWdodCgx
MjgpOworICAgIH0KK307CisKK1RFU1RfUChSZW5kZXJlclRlc3QsIFJlcXVlc3RlZFJlbmRlcmVy
Q3JlYXRlZCkKK3sKKyAgICBzdGQ6OnN0cmluZyByZW5kZXJlclN0cmluZyA9IHN0ZDo6c3RyaW5n
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGdsR2V0U3RyaW5nKEdMX1JFTkRFUkVSKSkp
OworICAgIHN0ZDo6dHJhbnNmb3JtKHJlbmRlcmVyU3RyaW5nLmJlZ2luKCksIHJlbmRlcmVyU3Ry
aW5nLmVuZCgpLCByZW5kZXJlclN0cmluZy5iZWdpbigpLCA6OnRvbG93ZXIpOworCisgICAgc3Rk
OjpzdHJpbmcgdmVyc2lvblN0cmluZyA9IHN0ZDo6c3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGdsR2V0U3RyaW5nKEdMX1ZFUlNJT04pKSk7CisgICAgc3RkOjp0cmFuc2Zvcm0o
dmVyc2lvblN0cmluZy5iZWdpbigpLCB2ZXJzaW9uU3RyaW5nLmVuZCgpLCB2ZXJzaW9uU3RyaW5n
LmJlZ2luKCksIDo6dG9sb3dlcik7CisKKyAgICBjb25zdCBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMg
JnBsYXRmb3JtID0gR2V0UGFyYW0oKS5lZ2xQYXJhbWV0ZXJzOworCisgICAgLy8gRW5zdXJlIHRo
YXQgdGhlIHJlbmRlcmVyIHN0cmluZyBjb250YWlucyBEM0QxMSwgaWYgd2UgcmVxdWVzdGVkIGEg
RDNEMTEgcmVuZGVyZXIuCisgICAgaWYgKHBsYXRmb3JtLnJlbmRlcmVyID09IEVHTF9QTEFURk9S
TV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05FKHJlbmRl
cmVyU3RyaW5nLmZpbmQoc3RkOjpzdHJpbmcoImRpcmVjdDNkMTEiKSksIHN0ZDo6c3RyaW5nOjpu
cG9zKTsKKyAgICB9CisKKyAgICAvLyBFbnN1cmUgdGhhdCB0aGUgcmVuZGVyZXIgc3RyaW5nIGNv
bnRhaW5zIEQzRDksIGlmIHdlIHJlcXVlc3RlZCBhIEQzRDkgcmVuZGVyZXIuCisgICAgaWYgKHBs
YXRmb3JtLnJlbmRlcmVyID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDlfQU5HTEUpCisg
ICAgeworICAgICAgICBBU1NFUlRfTkUocmVuZGVyZXJTdHJpbmcuZmluZChzdGQ6OnN0cmluZygi
ZGlyZWN0M2Q5IikpLCBzdGQ6OnN0cmluZzo6bnBvcyk7CisgICAgfQorCisgICAgLy8gRW5zdXJl
IHRoYXQgdGhlIG1ham9yIGFuZCBtaW5vciB2ZXJzaW9ucyB0cmlnZ2VyIGV4cGVjdGVkIGJlaGF2
aW9yIGluIEQzRDExCisgICAgaWYgKHBsYXRmb3JtLnJlbmRlcmVyID09IEVHTF9QTEFURk9STV9B
TkdMRV9UWVBFX0QzRDExX0FOR0xFKQorICAgIHsKKyAgICAgICAgLy8gRW5zdXJlIHRoYXQgdGhl
IHJlbmRlcmVyIHVzZXMgV0FSUCwgaWYgd2UgcmVxdWVzdGVkIGl0LgorICAgICAgICBpZiAocGxh
dGZvcm0uZGV2aWNlVHlwZSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfV0FSUF9B
TkdMRSkKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBiYXNpY1JlbmRlclBvcyA9IHJlbmRl
cmVyU3RyaW5nLmZpbmQoc3RkOjpzdHJpbmcoIm1pY3Jvc29mdCBiYXNpYyByZW5kZXIiKSk7Cisg
ICAgICAgICAgICBhdXRvIHNvZnR3YXJlQWRhcHRlclBvcyA9IHJlbmRlcmVyU3RyaW5nLmZpbmQo
c3RkOjpzdHJpbmcoInNvZnR3YXJlIGFkYXB0ZXIiKSk7CisgICAgICAgICAgICBBU1NFUlRfVFJV
RShiYXNpY1JlbmRlclBvcyAhPSBzdGQ6OnN0cmluZzo6bnBvcyB8fCBzb2Z0d2FyZUFkYXB0ZXJQ
b3MgIT0gc3RkOjpzdHJpbmc6Om5wb3MpOworICAgICAgICB9CisKKyAgICAgICAgc3RkOjp2ZWN0
b3I8c3RkOjpzdHJpbmc+IGFjY2VwdGFibGVTaGFkZXJNb2RlbHM7CisKKyAgICAgICAgLy8gV2hl
biBubyBzcGVjaWZpYyBtYWpvci9taW5vciB2ZXJzaW9uIGlzIHJlcXVlc3RlZCwgdGhlbiBBTkdM
RSBzaG91bGQgcmV0dXJuIHRoZSBoaWdoZXN0IHBvc3NpYmxlIGZlYXR1cmUgbGV2ZWwgYnkgZGVm
YXVsdC4KKyAgICAgICAgLy8gVGhlIGN1cnJlbnQgaGFyZHdhcmUgZHJpdmVyIG1pZ2h0IG5vdCBz
dXBwb3J0IEZlYXR1cmUgTGV2ZWwgMTFfMCwgYnV0IFdBUlAgYWx3YXlzIGRvZXMuCisgICAgICAg
IC8vIFRoZXJlZm9yZSBpZiBXQVJQIGlzIHNwZWNpZmllZCBidXQgbm8gbWFqb3IvbWlub3IgdmVy
c2lvbiBpcyBzcGVjaWZpZWQsIHRoZW4gd2UgdGVzdCB0byBjaGVjayB0aGF0IEFOR0xFIHJldHVy
bnMgRkwxMV8wLgorICAgICAgICBpZiAocGxhdGZvcm0ubWFqb3JWZXJzaW9uID49IDExIHx8IHBs
YXRmb3JtLm1ham9yVmVyc2lvbiA9PSBFR0xfRE9OVF9DQVJFKQorICAgICAgICB7CisgICAgICAg
ICAgICAvLyBGZWF0dXJlIExldmVsIDEwXzAgY29ycmVzcG9uZHMgdG8gc2hhZGVyIG1vZGVsIDVf
MAorICAgICAgICAgICAgYWNjZXB0YWJsZVNoYWRlck1vZGVscy5wdXNoX2JhY2soInBzXzVfMCIp
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKHBsYXRmb3JtLm1ham9yVmVyc2lvbiA+PSAxMCB8
fCBwbGF0Zm9ybS5tYWpvclZlcnNpb24gPT0gRUdMX0RPTlRfQ0FSRSkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKHBsYXRmb3JtLm1pbm9yVmVyc2lvbiA+PSAxIHx8IHBsYXRmb3JtLm1pbm9y
VmVyc2lvbiA9PSBFR0xfRE9OVF9DQVJFKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IC8vIEZlYXR1cmUgTGV2ZWwgMTBfMSBjb3JyZXNwb25kcyB0byBzaGFkZXIgbW9kZWwgNF8xCisg
ICAgICAgICAgICAgICAgYWNjZXB0YWJsZVNoYWRlck1vZGVscy5wdXNoX2JhY2soInBzXzRfMSIp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocGxhdGZvcm0ubWlub3JWZXJzaW9u
ID49IDAgfHwgcGxhdGZvcm0ubWlub3JWZXJzaW9uID09IEVHTF9ET05UX0NBUkUpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgLy8gRmVhdHVyZSBMZXZlbCAxMF8wIGNvcnJlc3BvbmRz
IHRvIHNoYWRlciBtb2RlbCA0XzAKKyAgICAgICAgICAgICAgICBhY2NlcHRhYmxlU2hhZGVyTW9k
ZWxzLnB1c2hfYmFjaygicHNfNF8wIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICBpZiAocGxhdGZvcm0ubWFqb3JWZXJzaW9uID09IDkgJiYgcGxhdGZvcm0ubWlub3JWZXJz
aW9uID09IDMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGFjY2VwdGFibGVTaGFkZXJNb2RlbHMu
cHVzaF9iYWNrKCJwc180XzBfbGV2ZWxfOV8zIik7CisgICAgICAgIH0KKworICAgICAgICBib29s
IGZvdW5kID0gZmFsc2U7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYWNjZXB0YWJs
ZVNoYWRlck1vZGVscy5zaXplKCk7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHJl
bmRlcmVyU3RyaW5nLmZpbmQoYWNjZXB0YWJsZVNoYWRlck1vZGVsc1tpXSkgIT0gc3RkOjpzdHJp
bmc6Om5wb3MpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUX1RSVUUoZm91bmQpOwor
ICAgIH0KKworICAgIEVHTGludCBnbGVzTWFqb3JWZXJzaW9uID0gR2V0UGFyYW0oKS5tYWpvclZl
cnNpb247CisKKyAgICAvLyBFbnN1cmUgdGhhdCB0aGUgcmVuZGVyZXIgc3RyaW5nIGNvbnRhaW5z
IEdMIEVTIDMuMCwgaWYgd2UgcmVxdWVzdGVkIGEgR0wgRVMgMy4wCisgICAgaWYgKGdsZXNNYWpv
clZlcnNpb24gPT0gMykKKyAgICB7CisgICAgICAgIEFTU0VSVF9ORSh2ZXJzaW9uU3RyaW5nLmZp
bmQoc3RkOjpzdHJpbmcoImVzIDMuMCIpKSwgc3RkOjpzdHJpbmc6Om5wb3MpOworICAgIH0KKwor
ICAgIC8vIEVuc3VyZSB0aGF0IHRoZSB2ZXJzaW9uIHN0cmluZyBjb250YWlucyBHTCBFUyAyLjAs
IGlmIHdlIHJlcXVlc3RlZCBHTCBFUyAyLjAKKyAgICBpZiAoZ2xlc01ham9yVmVyc2lvbiA9PSAy
KQorICAgIHsKKyAgICAgICAgQVNTRVJUX05FKHZlcnNpb25TdHJpbmcuZmluZChzdGQ6OnN0cmlu
ZygiZXMgMi4wIikpLCBzdGQ6OnN0cmluZzo6bnBvcyk7CisgICAgfQorfQorCisvLyBQZXJmb3Jt
IGEgc2ltcGxlIG9wZXJhdGlvbiAoY2xlYXIgYW5kIHJlYWQgcGl4ZWxzKSB0byB2ZXJpZnkgdGhl
IGRldmljZSBpcyB3b3JraW5nCitURVNUX1AoUmVuZGVyZXJUZXN0LCBTaW1wbGVPcGVyYXRpb24p
Cit7CisgICAgZ2xDbGVhckNvbG9yKDAuMGYsIDEuMGYsIDAuMGYsIDEuMGYpOworICAgIGdsQ2xl
YXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDAsIDI1
NSwgMCwgMjU1KTsKK30KKworLy8gU2VsZWN0IGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJl
bmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBy
dW4gYWdhaW5zdC4KKworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChSZW5kZXJlclRlc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgIC8vIEVTMiBvbiB0b3Agb2YgRDNEOQorICAgICAgICAgICAgICAg
ICAgICAgICBFUzJfRDNEOSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOV9SRUZF
UkVOQ0UoKSwKKworICAgICAgICAgICAgICAgICAgICAgICAvLyBFUzIgb24gdG9wIG9mIEQzRDEx
IGZlYXR1cmUgbGV2ZWwgOS4zIHRvIDExLjAKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0Qz
RDExKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDExXzAoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMMTBfMSgpLAorICAgICAgICAgICAgICAgICAg
ICAgICBFUzJfRDNEMTFfRkwxMF8wKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Qx
MV9GTDlfMygpLAorCisgICAgICAgICAgICAgICAgICAgICAgIC8vIEVTMiBvbiB0b3Agb2YgRDNE
MTEgV0FSUCBmZWF0dXJlIGxldmVsIDkuMyB0byAxMS4wCisgICAgICAgICAgICAgICAgICAgICAg
IEVTMl9EM0QxMV9XQVJQKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDEx
XzBfV0FSUCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkwxMF8xX1dBUlAo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMMTBfMF9XQVJQKCksCisgICAg
ICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDlfM19XQVJQKCksCisKKyAgICAgICAgICAg
ICAgICAgICAgICAgLy8gRVMyIG9uIHRvcCBvZiBEM0QxMSByZWZlcmVuY2UgZmVhdHVyZSBsZXZl
bCA5LjMgdG8gMTEuMAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfUkVGRVJFTkNF
KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDExXzBfUkVGRVJFTkNFKCks
CisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDEwXzFfUkVGRVJFTkNFKCksCisg
ICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDEwXzBfUkVGRVJFTkNFKCksCisgICAg
ICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDlfM19SRUZFUkVOQ0UoKSwKKworICAgICAg
ICAgICAgICAgICAgICAgICAvLyBFUzMgb24gdG9wIG9mIEQzRDExIGZlYXR1cmUgbGV2ZWwgOS4z
IHRvIDExLjAKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExKCksCisgICAgICAgICAg
ICAgICAgICAgICAgIEVTM19EM0QxMV9GTDExXzAoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
RVMzX0QzRDExX0ZMMTBfMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfRDNEMTFfRkwx
MF8wKCksCisKKyAgICAgICAgICAgICAgICAgICAgICAgLy8gRVMzIG9uIHRvcCBvZiBEM0QxMSBX
QVJQIGZlYXR1cmUgbGV2ZWwgOS4zIHRvIDExLjAKKyAgICAgICAgICAgICAgICAgICAgICAgRVMz
X0QzRDExX1dBUlAoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExX0ZMMTFfMF9X
QVJQKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19EM0QxMV9GTDEwXzFfV0FSUCgpLAor
ICAgICAgICAgICAgICAgICAgICAgICBFUzNfRDNEMTFfRkwxMF8wX1dBUlAoKSwKKworICAgICAg
ICAgICAgICAgICAgICAgICAvLyBFUzMgb24gdG9wIG9mIEQzRDExIHJlZmVyZW5jZSBmZWF0dXJl
IGxldmVsIDkuMyB0byAxMS4wCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19EM0QxMV9SRUZF
UkVOQ0UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExX0ZMMTFfMF9SRUZFUkVO
Q0UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExX0ZMMTBfMV9SRUZFUkVOQ0Uo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExX0ZMMTBfMF9SRUZFUkVOQ0UoKSwK
KworICAgICAgICAgICAgICAgICAgICAgICAvLyBFUzIgb24gdG9wIG9mIGRlc2t0b3AgT3BlbkdM
IHZlcnNpb25zIDIuMSB0byA0LjUKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgp
LAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKDIsIDEpLAorICAgICAgICAgICAg
ICAgICAgICAgICBFUzJfT1BFTkdMKDMsIDApLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJf
T1BFTkdMKDMsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKDMsIDIpLAor
ICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKDMsIDMpLAorICAgICAgICAgICAgICAg
ICAgICAgICBFUzJfT1BFTkdMKDQsIDApLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BF
TkdMKDQsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKDQsIDIpLAorICAg
ICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKDQsIDMpLAorICAgICAgICAgICAgICAgICAg
ICAgICBFUzJfT1BFTkdMKDQsIDQpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdM
KDQsIDUpLAorCisgICAgICAgICAgICAgICAgICAgICAgIC8vIEVTMiBvbiB0b3Agb2YgZGVza3Rv
cCBPcGVuR0wgdmVyc2lvbnMgMy4yIHRvIDQuNQorICAgICAgICAgICAgICAgICAgICAgICBFUzNf
T1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woMywgMiksCisgICAg
ICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woMywgMyksCisgICAgICAgICAgICAgICAgICAg
ICAgIEVTM19PUEVOR0woNCwgMCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0wo
NCwgMSksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woNCwgMiksCisgICAgICAg
ICAgICAgICAgICAgICAgIEVTM19PUEVOR0woNCwgMyksCisgICAgICAgICAgICAgICAgICAgICAg
IEVTM19PUEVOR0woNCwgNCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woNCwg
NSksCisKKyAgICAgICAgICAgICAgICAgICAgICAgLy8gRVMyIG9uIHRvcCBvZiBPcGVuR0wgRVMg
Mi4wIHRvIDMuMgorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKDIsIDApLAorICAgICAgICAgICAgICAgICAg
ICAgICBFUzJfT1BFTkdMRVMoMywgMCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVO
R0xFUygzLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKDMsIDIpLAor
CisgICAgICAgICAgICAgICAgICAgICAgIC8vIEVTMiBvbiB0b3Agb2YgT3BlbkdMIEVTIDMuMCB0
byAzLjIKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCksCisgICAgICAgICAg
ICAgICAgICAgICAgIEVTM19PUEVOR0xFUygzLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
RVMzX09QRU5HTEVTKDMsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMRVMo
MywgMikpOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rl
c3RzL1JvYnVzdENsaWVudE1lbW9yeVRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Sb2J1c3RDbGllbnRNZW1vcnlUZXN0LmNw
cAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xf
dGVzdHMvUm9idXN0Q2xpZW50TWVtb3J5VGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwzODUgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFJvYnVzdENsaWVudE1lbW9yeVRlc3QuY3BwIDogVGVz
dHMgb2YgdGhlIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5IGV4dGVuc2lvbi4KKworI2lu
Y2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL2ds
X3JhaWkuaCIKKworbmFtZXNwYWNlIGFuZ2xlCit7CitjbGFzcyBSb2J1c3RDbGllbnRNZW1vcnlU
ZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgUm9idXN0Q2xpZW50
TWVtb3J5VGVzdCgpCisgICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOworICAgICAg
ICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKKyAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKKyAg
ICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4
KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAgIH0KKworICAgIHZvaWQgU2V0
VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOworCisgICAg
ICAgIGdsR2V0Qm9vbGVhbnZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRC
T09MRUFOVlJPQlVTVEFOR0xFPigKKyAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdl
dEJvb2xlYW52Um9idXN0QU5HTEUiKSk7CisgICAgICAgIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRCVUZGRVJQQVJBTUVURVJJVlJP
QlVTVEFOR0xFPigKKyAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldEJ1ZmZlclBh
cmFtZXRlcml2Um9idXN0QU5HTEUiKSk7CisgICAgICAgIGdsR2V0RmxvYXR2Um9idXN0QU5HTEUg
PSByZWludGVycHJldF9jYXN0PFBGTkdMR0VURkxPQVRWUk9CVVNUQU5HTEU+KAorICAgICAgICAg
ICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0RmxvYXR2Um9idXN0QU5HTEUiKSk7CisgICAgICAg
IGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSA9CisgICAg
ICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMR0VURlJBTUVCVUZGRVJBVFRBQ0hNRU5UUEFS
QU1FVEVSSVZST0JVU1RBTkdMRT4oCisgICAgICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3Mo
ImdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSIpKTsKKyAg
ICAgICAgZ2xHZXRJbnRlZ2VydlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdF
VElOVEVHRVJWUk9CVVNUQU5HTEU+KAorICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImds
R2V0SW50ZWdlcnZSb2J1c3RBTkdMRSIpKTsKKyAgICAgICAgZ2xHZXRQcm9ncmFtaXZSb2J1c3RB
TkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRQUk9HUkFNSVZST0JVU1RBTkdMRT4oCisg
ICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRQcm9ncmFtaXZSb2J1c3RBTkdMRSIp
KTsKKyAgICAgICAgZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFID0KKyAg
ICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRSRU5ERVJCVUZGRVJQQVJBTUVURVJJ
VlJPQlVTVEFOR0xFPigKKyAgICAgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFIikpOworICAgICAgICBnbEdldFNoYWRl
cml2Um9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VUU0hBREVSSVZST0JVU1RB
TkdMRT4oCisgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRTaGFkZXJpdlJvYnVz
dEFOR0xFIikpOworICAgICAgICBnbEdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUgPSByZWlu
dGVycHJldF9jYXN0PFBGTkdMR0VUVEVYUEFSQU1FVEVSRlZST0JVU1RBTkdMRT4oCisgICAgICAg
ICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFIikp
OworICAgICAgICBnbEdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUgPSByZWludGVycHJldF9j
YXN0PFBGTkdMR0VUVEVYUEFSQU1FVEVSSVZST0JVU1RBTkdMRT4oCisgICAgICAgICAgICBlZ2xH
ZXRQcm9jQWRkcmVzcygiZ2xHZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFIikpOworICAgICAg
ICBnbEdldFVuaWZvcm1mdlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVFVO
SUZPUk1GVlJPQlVTVEFOR0xFPigKKyAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdl
dFVuaWZvcm1mdlJvYnVzdEFOR0xFIikpOworICAgICAgICBnbEdldFVuaWZvcm1pdlJvYnVzdEFO
R0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVFVOSUZPUk1JVlJPQlVTVEFOR0xFPigKKyAg
ICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldFVuaWZvcm1pdlJvYnVzdEFOR0xFIikp
OworICAgICAgICBnbEdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUgPSByZWludGVycHJldF9j
YXN0PFBGTkdMR0VUVkVSVEVYQVRUUklCRlZST0JVU1RBTkdMRT4oCisgICAgICAgICAgICBlZ2xH
ZXRQcm9jQWRkcmVzcygiZ2xHZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFIikpOworICAgICAg
ICBnbEdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdM
R0VUVkVSVEVYQVRUUklCSVZST0JVU1RBTkdMRT4oCisgICAgICAgICAgICBlZ2xHZXRQcm9jQWRk
cmVzcygiZ2xHZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFIikpOworICAgICAgICBnbEdldFZl
cnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUgPQorICAgICAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDxQRk5HTEdFVFZFUlRFWEFUVFJJQlBPSU5URVJWUk9CVVNUQU5HTEU+KAorICAgICAgICAg
ICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0
QU5HTEUiKSk7CisgICAgICAgIGdsUmVhZFBpeGVsc1JvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRf
Y2FzdDxQRk5HTFJFQURQSVhFTFNST0JVU1RBTkdMRT4oCisgICAgICAgICAgICBlZ2xHZXRQcm9j
QWRkcmVzcygiZ2xSZWFkUGl4ZWxzUm9idXN0QU5HTEUiKSk7CisgICAgICAgIGdsVGV4SW1hZ2Uy
RFJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTFRFWElNQUdFMkRST0JVU1RBTkdM
RT4oCisgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xUZXhJbWFnZTJEUm9idXN0QU5H
TEUiKSk7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8UEZOR0xURVhQQVJBTUVURVJGVlJPQlVTVEFOR0xFPigKKyAgICAgICAgICAgIGVnbEdl
dFByb2NBZGRyZXNzKCJnbFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUiKSk7CisgICAgICAgIGds
VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xURVhQQVJB
TUVURVJJVlJPQlVTVEFOR0xFPigKKyAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbFRl
eFBhcmFtZXRlcml2Um9idXN0QU5HTEUiKSk7CisgICAgICAgIGdsVGV4U3ViSW1hZ2UyRFJvYnVz
dEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTFRFWFNVQklNQUdFMkRST0JVU1RBTkdMRT4o
CisgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xUZXhTdWJJbWFnZTJEUm9idXN0QU5H
TEUiKSk7CisgICAgICAgIGdsVGV4SW1hZ2UzRFJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2Fz
dDxQRk5HTFRFWElNQUdFM0RST0JVU1RBTkdMRT4oCisgICAgICAgICAgICBlZ2xHZXRQcm9jQWRk
cmVzcygiZ2xUZXhJbWFnZTNEUm9idXN0QU5HTEUiKSk7CisgICAgICAgIGdsVGV4U3ViSW1hZ2Uz
RFJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTFRFWFNVQklNQUdFM0RST0JVU1RB
TkdMRT4oCisgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xUZXhTdWJJbWFnZTNEUm9i
dXN0QU5HTEUiKSk7CisgICAgICAgIGdsR2V0UXVlcnlpdlJvYnVzdEFOR0xFID0gcmVpbnRlcnBy
ZXRfY2FzdDxQRk5HTEdFVFFVRVJZSVZST0JVU1RBTkdMRT4oCisgICAgICAgICAgICBlZ2xHZXRQ
cm9jQWRkcmVzcygiZ2xHZXRRdWVyeWl2Um9idXN0QU5HTEUiKSk7CisgICAgICAgIGdsR2V0UXVl
cnlPYmplY3R1aXZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRRVUVSWU9C
SkVDVFVJVlJPQlVTVEFOR0xFPigKKyAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdl
dFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUiKSk7CisgICAgICAgIGdsR2V0QnVmZmVyUG9pbnRl
cnZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRCVUZGRVJQT0lOVEVSVlJP
QlVTVEFOR0xFPigKKyAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldEJ1ZmZlclBv
aW50ZXJ2Um9idXN0QU5HTEUiKSk7CisgICAgICAgIGdsR2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xF
ID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVElOVEVHRVJJX1ZST0JVU1RBTkdMRT4oCisgICAg
ICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUiKSk7
CisgICAgICAgIGdsR2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRf
Y2FzdDxQRk5HRVRJTlRFUk5BTEZPUk1BVElWUk9CVVNUQU5HTEU+KAorICAgICAgICAgICAgZWds
R2V0UHJvY0FkZHJlc3MoImdsR2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFIikpOworICAg
ICAgICBnbEdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQ
Rk5HTEdFVFZFUlRFWEFUVFJJQklJVlJPQlVTVEFOR0xFPigKKyAgICAgICAgICAgIGVnbEdldFBy
b2NBZGRyZXNzKCJnbEdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFIikpOworICAgICAgICBn
bEdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xH
RVRWRVJURVhBVFRSSUJJVUlWUk9CVVNUQU5HTEU+KAorICAgICAgICAgICAgZWdsR2V0UHJvY0Fk
ZHJlc3MoImdsR2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFIikpOworICAgICAgICBnbEdl
dFVuaWZvcm11aXZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRVTklGT1JN
VUlWUk9CVVNUQU5HTEU+KAorICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0VW5p
Zm9ybXVpdlJvYnVzdEFOR0xFIikpOworICAgICAgICBnbEdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2
Um9idXN0QU5HTEUgPQorICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVEFDVElW
RVVOSUZPUk1CTE9DS0lWUk9CVVNUQU5HTEU+KAorICAgICAgICAgICAgICAgIGVnbEdldFByb2NB
ZGRyZXNzKCJnbEdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUiKSk7CisgICAgICAg
IGdsR2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVElO
VEVHRVI2NFZST0JVU1RBTkdMRT4oCisgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xH
ZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUiKSk7CisgICAgICAgIGdsR2V0SW50ZWdlcjY0aV92Um9i
dXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VUSU5URUdFUjY0SV9WUk9CVVNUQU5H
TEU+KAorICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0SW50ZWdlcjY0aV92Um9i
dXN0QU5HTEUiKSk7CisgICAgICAgIGdsR2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xF
ID0KKyAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRCVUZGRVJQQVJBTUVURVJJ
NjRWUk9CVVNUQU5HTEU+KAorICAgICAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdl
dEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRSIpKTsKKyAgICAgICAgZ2xTYW1wbGVyUGFy
YW1ldGVyaXZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xTQU1QTEVSUEFSQU1F
VEVSSVZST0JVU1RBTkdMRT4oCisgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xTYW1w
bGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSIpKTsKKyAgICAgICAgZ2xTYW1wbGVyUGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xTQU1QTEVSUEFSQU1FVEVSRlZS
T0JVU1RBTkdMRT4oCisgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xTYW1wbGVyUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRSIpKTsKKyAgICAgICAgZ2xHZXRTYW1wbGVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRSA9CisgICAgICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMR0VUU0FNUExF
UlBBUkFNRVRFUklWUk9CVVNUQU5HTEU+KAorICAgICAgICAgICAgICAgIGVnbEdldFByb2NBZGRy
ZXNzKCJnbEdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFIikpOworICAgICAgICBnbEdl
dFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFID0KKyAgICAgICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8UEZOR0xHRVRTQU1QTEVSUEFSQU1FVEVSRlZST0JVU1RBTkdMRT4oCisgICAgICAgICAg
ICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUiKSk7CisgICAgICAgIGdsR2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFID0K
KyAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRGUkFNRUJVRkZFUlBBUkFNRVRF
UklWUk9CVVNUQU5HTEU+KAorICAgICAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdl
dEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSIpKTsKKyAgICAgICAgZ2xHZXRQcm9n
cmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRSA9CisgICAgICAgICAgICByZWludGVycHJldF9jYXN0
PFBGTkdMR0VUUFJPR1JBTUlOVEVSRkFDRUlWUk9CVVNUQU5HTEU+KAorICAgICAgICAgICAgICAg
IGVnbEdldFByb2NBZGRyZXNzKCJnbEdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFIikp
OworICAgICAgICBnbEdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
UEZOR0xHRVRCT09MRUFOSV9WUk9CVVNUQU5HTEU+KAorICAgICAgICAgICAgZWdsR2V0UHJvY0Fk
ZHJlc3MoImdsR2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFIikpOworICAgICAgICBnbEdldE11bHRp
c2FtcGxlZnZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRNVUxUSVNBTVBM
RUZWUk9CVVNUQU5HTEU+KAorICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0TXVs
dGlzYW1wbGVmdlJvYnVzdEFOR0xFIikpOworICAgICAgICBnbEdldFRleExldmVsUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRSA9CisgICAgICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMR0VUVEVY
TEVWRUxQQVJBTUVURVJJVlJPQlVTVEFOR0xFPigKKyAgICAgICAgICAgICAgICBlZ2xHZXRQcm9j
QWRkcmVzcygiZ2xHZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUiKSk7CisgICAgICAg
IGdsR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFID0KKyAgICAgICAgICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRURVhMRVZFTFBBUkFNRVRFUkZWUk9CVVNUQU5HTEU+KAorICAg
ICAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldFRleExldmVsUGFyYW1ldGVyZnZS
b2J1c3RBTkdMRSIpKTsKKyAgICAgICAgZ2xHZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5H
TEUgPQorICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVFBPSU5URVJWUk9CVVNU
QU5HTEVST0JVU1RBTkdMRT4oCisgICAgICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImds
R2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFIikpOworICAgICAgICBnbFJlYWRuUGl4
ZWxzUm9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMUkVBRE5QSVhFTFNST0JVU1RB
TkdMRT4oCisgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xSZWFkblBpeGVsc1JvYnVz
dEFOR0xFIikpOworICAgICAgICBnbEdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8UEZOR0xHRVROVU5JRk9STUZWUk9CVVNUQU5HTEU+KAorICAgICAgICAgICAgZWds
R2V0UHJvY0FkZHJlc3MoImdsR2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFIikpOworICAgICAgICBn
bEdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVROVU5J
Rk9STUlWUk9CVVNUQU5HTEU+KAorICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0
blVuaWZvcm1pdlJvYnVzdEFOR0xFIikpOworICAgICAgICBnbEdldG5Vbmlmb3JtdWl2Um9idXN0
QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VUTlVOSUZPUk1VSVZST0JVU1RBTkdMRT4o
CisgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRuVW5pZm9ybXVpdlJvYnVzdEFO
R0xFIikpOworICAgICAgICBnbFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFID0gcmVpbnRlcnBy
ZXRfY2FzdDxQRk5HTFRFWFBBUkFNRVRFUklJVlJPQlVTVEFOR0xFPigKKyAgICAgICAgICAgIGVn
bEdldFByb2NBZGRyZXNzKCJnbFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFIikpOworICAgICAg
ICBnbFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xU
RVhQQVJBTUVURVJJVUlWUk9CVVNUQU5HTEU+KAorICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJl
c3MoImdsVGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFIikpOworICAgICAgICBnbEdldFRleFBh
cmFtZXRlcklpdlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVFRFWFBBUkFN
RVRFUklJVlJPQlVTVEFOR0xFPigKKyAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdl
dFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFIikpOworICAgICAgICBnbEdldFRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRURVhQQVJBTUVURVJJ
VUlWUk9CVVNUQU5HTEU+KAorICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0VGV4
UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFIikpOworICAgICAgICBnbFNhbXBsZXJQYXJhbWV0ZXJJ
aXZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xTQU1QTEVSUEFSQU1FVEVSSUlW
Uk9CVVNUQU5HTEU+KAorICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsU2FtcGxlclBh
cmFtZXRlcklpdlJvYnVzdEFOR0xFIikpOworICAgICAgICBnbFNhbXBsZXJQYXJhbWV0ZXJJdWl2
Um9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMU0FNUExFUlBBUkFNRVRFUklVSVZS
T0JVU1RBTkdMRT4oCisgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xTYW1wbGVyUGFy
YW1ldGVySXVpdlJvYnVzdEFOR0xFIikpOworICAgICAgICBnbEdldFNhbXBsZXJQYXJhbWV0ZXJJ
aXZSb2J1c3RBTkdMRSA9CisgICAgICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMR0VUU0FN
UExFUlBBUkFNRVRFUklJVlJPQlVTVEFOR0xFPigKKyAgICAgICAgICAgICAgICBlZ2xHZXRQcm9j
QWRkcmVzcygiZ2xHZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUiKSk7CisgICAgICAg
IGdsR2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSA9CisgICAgICAgICAgICByZWlu
dGVycHJldF9jYXN0PFBGTkdMR0VUU0FNUExFUlBBUkFNRVRFUklVSVZST0JVU1RBTkdMRT4oCisg
ICAgICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0U2FtcGxlclBhcmFtZXRlckl1
aXZSb2J1c3RBTkdMRSIpKTsKKyAgICAgICAgZ2xHZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUg
PSByZWludGVycHJldF9jYXN0PFBGTkdMR0VUUVVFUllPQkpFQ1RJVlJPQlVTVEFOR0xFPigKKyAg
ICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdM
RSIpKTsKKyAgICAgICAgZ2xHZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8UEZOR0xHRVRRVUVSWU9CSkVDVEk2NFZST0JVU1RBTkdMRT4oCisgICAgICAgICAg
ICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRSIpKTsK
KyAgICAgICAgZ2xHZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUgPSByZWludGVycHJldF9j
YXN0PFBGTkdMR0VUUVVFUllPQkpFQ1RVSTY0VlJPQlVTVEFOR0xFPigKKyAgICAgICAgICAgIGVn
bEdldFByb2NBZGRyZXNzKCJnbEdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRSIpKTsKKyAg
ICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUgeyBBTkdMRVRlc3Q6OlRlYXJEb3du
KCk7IH0KKworICAgIGJvb2wgZXh0ZW5zaW9uc1ByZXNlbnQoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeSIp
KQorICAgICAgICB7CisgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNh
dXNlIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5IGlzIG5vdCBhdmFpbGFibGUuIjsKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIFBGTkdMR0VUQk9PTEVBTlZST0JVU1RBTkdMRSBnbEdldEJvb2xlYW52
Um9idXN0QU5HTEUgICAgICAgICAgICAgICAgICAgPSBudWxscHRyOworICAgIFBGTkdMR0VUQlVG
RkVSUEFSQU1FVEVSSVZST0JVU1RBTkdMRSBnbEdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUgPSBudWxscHRyOworICAgIFBGTkdMR0VURkxPQVRWUk9CVVNUQU5HTEUgZ2xHZXRGbG9hdHZS
b2J1c3RBTkdMRSAgICAgICAgICAgICAgICAgICAgICAgPSBudWxscHRyOworICAgIFBGTkdMR0VU
RlJBTUVCVUZGRVJBVFRBQ0hNRU5UUEFSQU1FVEVSSVZST0JVU1RBTkdMRQorICAgIGdsR2V0RnJh
bWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBudWxscHRyOworICAgIFBGTkdMR0VUSU5URUdFUlZST0JVU1RB
TkdMRSBnbEdldEludGVnZXJ2Um9idXN0QU5HTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBudWxscHRyOworICAgIFBGTkdMR0VUUFJPR1JBTUlWUk9CVVNUQU5HTEUgZ2xHZXRQcm9n
cmFtaXZSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBudWxscHRyOwor
ICAgIFBGTkdMR0VUUkVOREVSQlVGRkVSUEFSQU1FVEVSSVZST0JVU1RBTkdMRSBnbEdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUgPSBudWxscHRyOworICAgIFBGTkdMR0VUU0hB
REVSSVZST0JVU1RBTkdMRSBnbEdldFNoYWRlcml2Um9idXN0QU5HTEUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBudWxscHRyOworICAgIFBGTkdMR0VUVEVYUEFSQU1FVEVSRlZST0JV
U1RBTkdMRSBnbEdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUgICAgICAgICAgICAgICAgICAg
PSBudWxscHRyOworICAgIFBGTkdMR0VUVEVYUEFSQU1FVEVSSVZST0JVU1RBTkdMRSBnbEdldFRl
eFBhcmFtZXRlcml2Um9idXN0QU5HTEUgICAgICAgICAgICAgICAgICAgPSBudWxscHRyOworICAg
IFBGTkdMR0VUVU5JRk9STUZWUk9CVVNUQU5HTEUgZ2xHZXRVbmlmb3JtZnZSb2J1c3RBTkdMRSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBudWxscHRyOworICAgIFBGTkdMR0VUVU5JRk9S
TUlWUk9CVVNUQU5HTEUgZ2xHZXRVbmlmb3JtaXZSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBudWxscHRyOworICAgIFBGTkdMR0VUVkVSVEVYQVRUUklCRlZST0JVU1RB
TkdMRSBnbEdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUgICAgICAgICAgICAgICAgICAgPSBu
dWxscHRyOworICAgIFBGTkdMR0VUVkVSVEVYQVRUUklCSVZST0JVU1RBTkdMRSBnbEdldFZlcnRl
eEF0dHJpYml2Um9idXN0QU5HTEUgICAgICAgICAgICAgICAgICAgPSBudWxscHRyOworICAgIFBG
TkdMR0VUVkVSVEVYQVRUUklCUE9JTlRFUlZST0JVU1RBTkdMRSBnbEdldFZlcnRleEF0dHJpYlBv
aW50ZXJ2Um9idXN0QU5HTEUgICAgICAgPSBudWxscHRyOworICAgIFBGTkdMUkVBRFBJWEVMU1JP
QlVTVEFOR0xFIGdsUmVhZFBpeGVsc1JvYnVzdEFOR0xFICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBudWxscHRyOworICAgIFBGTkdMVEVYSU1BR0UyRFJPQlVTVEFOR0xFIGdsVGV4
SW1hZ2UyRFJvYnVzdEFOR0xFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBudWxs
cHRyOworICAgIFBGTkdMVEVYUEFSQU1FVEVSRlZST0JVU1RBTkdMRSBnbFRleFBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUgICAgICAgICAgICAgICAgICAgICAgICAgPSBudWxscHRyOworICAgIFBGTkdM
VEVYUEFSQU1FVEVSSVZST0JVU1RBTkdMRSBnbFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBudWxscHRyOworICAgIFBGTkdMVEVYU1VCSU1BR0UyRFJP
QlVTVEFOR0xFIGdsVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBudWxscHRyOworICAgIFBGTkdMVEVYSU1BR0UzRFJPQlVTVEFOR0xFIGdsVGV4SW1h
Z2UzRFJvYnVzdEFOR0xFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBudWxscHRy
OworICAgIFBGTkdMVEVYU1VCSU1BR0UzRFJPQlVTVEFOR0xFIGdsVGV4U3ViSW1hZ2UzRFJvYnVz
dEFOR0xFICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBudWxscHRyOworICAgIFBGTkdMR0VU
UVVFUllJVlJPQlVTVEFOR0xFIGdsR2V0UXVlcnlpdlJvYnVzdEFOR0xFICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBudWxscHRyOworICAgIFBGTkdMR0VUUVVFUllPQkpFQ1RVSVZS
T0JVU1RBTkdMRSBnbEdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUgICAgICAgICAgICAgICAg
ICAgPSBudWxscHRyOworICAgIFBGTkdMR0VUQlVGRkVSUE9JTlRFUlZST0JVU1RBTkdMRSBnbEdl
dEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUgICAgICAgICAgICAgICAgICAgPSBudWxscHRyOwor
ICAgIFBGTkdMR0VUSU5URUdFUklfVlJPQlVTVEFOR0xFIGdsR2V0SW50ZWdlcmlfdlJvYnVzdEFO
R0xFICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBudWxscHRyOworICAgIFBGTkdFVElOVEVS
TkFMRk9STUFUSVZST0JVU1RBTkdMRSBnbEdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRSAg
ICAgICAgICAgICAgICAgPSBudWxscHRyOworICAgIFBGTkdMR0VUVkVSVEVYQVRUUklCSUlWUk9C
VVNUQU5HTEUgZ2xHZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAg
PSBudWxscHRyOworICAgIFBGTkdMR0VUVkVSVEVYQVRUUklCSVVJVlJPQlVTVEFOR0xFIGdsR2V0
VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFICAgICAgICAgICAgICAgPSBudWxscHRyOworICAg
IFBGTkdMR0VUVU5JRk9STVVJVlJPQlVTVEFOR0xFIGdsR2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xF
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBudWxscHRyOworICAgIFBGTkdMR0VUQUNUSVZF
VU5JRk9STUJMT0NLSVZST0JVU1RBTkdMRSBnbEdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0
QU5HTEUgICAgICAgPSBudWxscHRyOworICAgIFBGTkdMR0VUSU5URUdFUjY0VlJPQlVTVEFOR0xF
IGdsR2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBu
dWxscHRyOworICAgIFBGTkdMR0VUSU5URUdFUjY0SV9WUk9CVVNUQU5HTEUgZ2xHZXRJbnRlZ2Vy
NjRpX3ZSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAgICAgICAgPSBudWxscHRyOworICAgIFBG
TkdMR0VUQlVGRkVSUEFSQU1FVEVSSTY0VlJPQlVTVEFOR0xFIGdsR2V0QnVmZmVyUGFyYW1ldGVy
aTY0dlJvYnVzdEFOR0xFICAgICAgICAgPSBudWxscHRyOworICAgIFBGTkdMU0FNUExFUlBBUkFN
RVRFUklWUk9CVVNUQU5HTEUgZ2xTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSAgICAgICAg
ICAgICAgICAgPSBudWxscHRyOworICAgIFBGTkdMU0FNUExFUlBBUkFNRVRFUkZWUk9CVVNUQU5H
TEUgZ2xTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAgPSBudWxs
cHRyOworICAgIFBGTkdMR0VUU0FNUExFUlBBUkFNRVRFUklWUk9CVVNUQU5HTEUgZ2xHZXRTYW1w
bGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSAgICAgICAgICAgPSBudWxscHRyOworICAgIFBGTkdM
R0VUU0FNUExFUlBBUkFNRVRFUkZWUk9CVVNUQU5HTEUgZ2xHZXRTYW1wbGVyUGFyYW1ldGVyZnZS
b2J1c3RBTkdMRSAgICAgICAgICAgPSBudWxscHRyOworICAgIFBGTkdMR0VURlJBTUVCVUZGRVJQ
QVJBTUVURVJJVlJPQlVTVEFOR0xFIGdsR2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFICAgPSBudWxscHRyOworICAgIFBGTkdMR0VUUFJPR1JBTUlOVEVSRkFDRUlWUk9CVVNUQU5H
TEUgZ2xHZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRSAgICAgICAgICAgPSBudWxscHRy
OworICAgIFBGTkdMR0VUQk9PTEVBTklfVlJPQlVTVEFOR0xFIGdsR2V0Qm9vbGVhbmlfdlJvYnVz
dEFOR0xFICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBudWxscHRyOworICAgIFBGTkdMR0VU
TVVMVElTQU1QTEVGVlJPQlVTVEFOR0xFIGdsR2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFICAg
ICAgICAgICAgICAgICAgICAgPSBudWxscHRyOworICAgIFBGTkdMR0VUVEVYTEVWRUxQQVJBTUVU
RVJJVlJPQlVTVEFOR0xFIGdsR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFICAgICAg
ICAgPSBudWxscHRyOworICAgIFBGTkdMR0VUVEVYTEVWRUxQQVJBTUVURVJGVlJPQlVTVEFOR0xF
IGdsR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFICAgICAgICAgPSBudWxscHRyOwor
ICAgIFBGTkdMR0VUUE9JTlRFUlZST0JVU1RBTkdMRVJPQlVTVEFOR0xFIGdsR2V0UG9pbnRlcnZS
b2J1c3RBTkdMRVJvYnVzdEFOR0xFICAgICAgICAgPSBudWxscHRyOworICAgIFBGTkdMUkVBRE5Q
SVhFTFNST0JVU1RBTkdMRSBnbFJlYWRuUGl4ZWxzUm9idXN0QU5HTEUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBudWxscHRyOworICAgIFBGTkdMR0VUTlVOSUZPUk1GVlJPQlVTVEFO
R0xFIGdsR2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBudWxscHRyOworICAgIFBGTkdMR0VUTlVOSUZPUk1JVlJPQlVTVEFOR0xFIGdsR2V0blVuaWZv
cm1pdlJvYnVzdEFOR0xFICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBudWxscHRyOworICAg
IFBGTkdMR0VUTlVOSUZPUk1VSVZST0JVU1RBTkdMRSBnbEdldG5Vbmlmb3JtdWl2Um9idXN0QU5H
TEUgICAgICAgICAgICAgICAgICAgICAgICAgPSBudWxscHRyOworICAgIFBGTkdMVEVYUEFSQU1F
VEVSSUlWUk9CVVNUQU5HTEUgZ2xUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSAgICAgICAgICAg
ICAgICAgICAgICAgPSBudWxscHRyOworICAgIFBGTkdMVEVYUEFSQU1FVEVSSVVJVlJPQlVTVEFO
R0xFIGdsVGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFICAgICAgICAgICAgICAgICAgICAgPSBu
dWxscHRyOworICAgIFBGTkdMR0VUVEVYUEFSQU1FVEVSSUlWUk9CVVNUQU5HTEUgZ2xHZXRUZXhQ
YXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAgPSBudWxscHRyOworICAgIFBG
TkdMR0VUVEVYUEFSQU1FVEVSSVVJVlJPQlVTVEFOR0xFIGdsR2V0VGV4UGFyYW1ldGVySXVpdlJv
YnVzdEFOR0xFICAgICAgICAgICAgICAgPSBudWxscHRyOworICAgIFBGTkdMU0FNUExFUlBBUkFN
RVRFUklJVlJPQlVTVEFOR0xFIGdsU2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFICAgICAg
ICAgICAgICAgPSBudWxscHRyOworICAgIFBGTkdMU0FNUExFUlBBUkFNRVRFUklVSVZST0JVU1RB
TkdMRSBnbFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUgICAgICAgICAgICAgPSBudWxs
cHRyOworICAgIFBGTkdMR0VUU0FNUExFUlBBUkFNRVRFUklJVlJPQlVTVEFOR0xFIGdsR2V0U2Ft
cGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFICAgICAgICAgPSBudWxscHRyOworICAgIFBGTkdM
R0VUU0FNUExFUlBBUkFNRVRFUklVSVZST0JVU1RBTkdMRSBnbEdldFNhbXBsZXJQYXJhbWV0ZXJJ
dWl2Um9idXN0QU5HTEUgICAgICAgPSBudWxscHRyOworICAgIFBGTkdMR0VUUVVFUllPQkpFQ1RJ
VlJPQlVTVEFOR0xFIGdsR2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFICAgICAgICAgICAgICAg
ICAgICAgPSBudWxscHRyOworICAgIFBGTkdMR0VUUVVFUllPQkpFQ1RJNjRWUk9CVVNUQU5HTEUg
Z2xHZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAgPSBudWxscHRy
OworICAgIFBGTkdMR0VUUVVFUllPQkpFQ1RVSTY0VlJPQlVTVEFOR0xFIGdsR2V0UXVlcnlPYmpl
Y3R1aTY0dlJvYnVzdEFOR0xFICAgICAgICAgICAgICAgPSBudWxscHRyOworfTsKKworLy8gVGVz
dCBiYXNpYyB1c2FnZSBhbmQgdmFsaWRhdGlvbiBvZiBnbEdldEludGVnZXJ2Um9idXN0QU5HTEUK
K1RFU1RfUChSb2J1c3RDbGllbnRNZW1vcnlUZXN0LCBHZXRJbnRlZ2VyKQoreworICAgIGlmICgh
ZXh0ZW5zaW9uc1ByZXNlbnQoKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICAvLyBWZXJpZnkgdGhhdCB0aGUgcm9idXN0IGFuZCByZWd1bGFyIGVudHJ5IHBvaW50cyByZXR1
cm4gdGhlIHNhbWUgdmFsdWVzCisgICAgR0xpbnQgcmVzdWx0Um9idXN0OworICAgIEdMc2l6ZWkg
bGVuZ3RoOworICAgIGdsR2V0SW50ZWdlcnZSb2J1c3RBTkdMRShHTF9NQVhfVkVSVEVYX0FUVFJJ
QlMsIDEsICZsZW5ndGgsICZyZXN1bHRSb2J1c3QpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OworICAgIEVYUEVDVF9FUSgxLCBsZW5ndGgpOworCisgICAgR0xpbnQgcmVzdWx0UmVndWxhcjsK
KyAgICBnbEdldEludGVnZXJ2KEdMX01BWF9WRVJURVhfQVRUUklCUywgJnJlc3VsdFJlZ3VsYXIp
OworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9FUShyZXN1bHRSZWd1bGFy
LCByZXN1bHRSb2J1c3QpOworCisgICAgLy8gUXVlcnkgYSBkeW5hbWljIHZhbHVlCisgICAgR0xp
bnQgbnVtQ29tcHJlc3NlZEZvcm1hdHM7CisgICAgZ2xHZXRJbnRlZ2VydlJvYnVzdEFOR0xFKEdM
X05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUywgMSwgJmxlbmd0aCwgJm51bUNvbXByZXNz
ZWRGb3JtYXRzKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfRVEoMSwg
bGVuZ3RoKTsKKworICAgIGlmIChudW1Db21wcmVzc2VkRm9ybWF0cyA+IDApCisgICAgeworICAg
ICAgICBzdGQ6OnZlY3RvcjxHTGludD4gcmVzdWx0QnVmKG51bUNvbXByZXNzZWRGb3JtYXRzICog
MiwgMCk7CisKKyAgICAgICAgLy8gVGVzdCB3aGVuIHRoZSBidWZTaXplIGlzIHRvbyBsb3cKKyAg
ICAgICAgZ2xHZXRJbnRlZ2VydlJvYnVzdEFOR0xFKEdMX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JN
QVRTLCBudW1Db21wcmVzc2VkRm9ybWF0cyAtIDEsICZsZW5ndGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXN1bHRCdWYuZGF0YSgpKTsKKyAgICAgICAgRVhQRUNUX0dMX0VS
Uk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3RkOjphbGxf
b2YocmVzdWx0QnVmLmJlZ2luKCksIHJlc3VsdEJ1Zi5lbmQoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW10oR0xpbnQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID09IDA7IH0pKTsK
KworICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIEdMIGRvZXNuJ3QgdG91Y2ggdGhlIGVuZCBvZiB0
aGUgYnVmZmVyCisgICAgICAgIGdsR2V0SW50ZWdlcnZSb2J1c3RBTkdMRShHTF9DT01QUkVTU0VE
X1RFWFRVUkVfRk9STUFUUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PEdMc2l6ZWk+KHJlc3VsdEJ1Zi5zaXplKCkpLCAmbGVuZ3RoLCByZXN1bHRCdWYuZGF0
YSgpKTsKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgICAgIEVYUEVDVF9FUShu
dW1Db21wcmVzc2VkRm9ybWF0cywgbGVuZ3RoKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3RkOjpu
b25lX29mKHJlc3VsdEJ1Zi5iZWdpbigpLCByZXN1bHRCdWYuYmVnaW4oKSArIGxlbmd0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKEdMaW50IHZhbHVlKSB7IHJldHVybiB2
YWx1ZSA9PSAwOyB9KSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHN0ZDo6YWxsX29mKHJlc3VsdEJ1
Zi5iZWdpbigpICsgbGVuZ3RoLCByZXN1bHRCdWYuZW5kKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFtdKEdMaW50IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PSAwOyB9KSk7Cisg
ICAgfQorCisgICAgLy8gVGVzdCB3aXRoIG51bGwgbGVuZ3RoCisgICAgZ2xHZXRJbnRlZ2VydlJv
YnVzdEFOR0xFKEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMsIDEsIG51bGxwdHIsICZyZXN1bHRSb2J1
c3QpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xHZXRJbnRlZ2VydlJvYnVz
dEFOR0xFKEdMX01BWF9WSUVXUE9SVF9ESU1TLCAxLCBudWxscHRyLCAmcmVzdWx0Um9idXN0KTsK
KyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgR0xpbnQg
bWF4Vmlld3BvcnREaW1zWzJdOworICAgIGdsR2V0SW50ZWdlcnZSb2J1c3RBTkdMRShHTF9NQVhf
VklFV1BPUlRfRElNUywgMiwgbnVsbHB0ciwgbWF4Vmlld3BvcnREaW1zKTsKKyAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKK30KKworLy8gVGVzdCBiYXNpYyB1c2FnZSBhbmQgdmFsaWRhdGlvbiBv
ZiBnbFRleEltYWdlMkRSb2J1c3RBTkdMRQorVEVTVF9QKFJvYnVzdENsaWVudE1lbW9yeVRlc3Qs
IFRleEltYWdlMkQpCit7CisgICAgaWYgKCFleHRlbnNpb25zUHJlc2VudCgpKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBHTFRleHR1cmUgdGV4OworICAgIGdsQmluZFRleHR1
cmUoR0xfVEVYVFVSRV8yRCwgdGV4LmdldCgpKTsKKworICAgIEdMc2l6ZWkgZGF0YURpbWVuc2lv
biA9IDEwMjQ7CisgICAgc3RkOjp2ZWN0b3I8R0x1Ynl0ZT4gcmdiYURhdGEoZGF0YURpbWVuc2lv
biAqIGRhdGFEaW1lbnNpb24gKiA0KTsKKworICAgIC8vIFRlc3QgdGhlIHJlZ3VsYXIgY2FzZQor
ICAgIGdsVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIGRh
dGFEaW1lbnNpb24sIGRhdGFEaW1lbnNpb24sIDAsIEdMX1JHQkEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgc3RhdGljX2Nhc3Q8R0xzaXplaT4ocmdiYURh
dGEuc2l6ZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZ2JhRGF0YS5kYXRhKCkp
OworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gVGVzdCB3aXRoIGEgZGF0YSBz
aXplIHRoYXQgaXMgdG9vIHNtYWxsCisgICAgZ2xUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0xfVEVY
VFVSRV8yRCwgMCwgR0xfUkdCQSwgZGF0YURpbWVuc2lvbiwgZGF0YURpbWVuc2lvbiwgMCwgR0xf
UkdCQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBzdGF0
aWNfY2FzdDxHTHNpemVpPihyZ2JhRGF0YS5zaXplKCkpIC8gMiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZ2JhRGF0YS5kYXRhKCkpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZB
TElEX09QRVJBVElPTik7CisKKyAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPj0gMykK
KyAgICB7CisgICAgICAgIC8vIFNldCBhbiB1bnBhY2sgcGFyYW1ldGVyIHRoYXQgd291bGQgY2F1
c2UgdGhlIGRyaXZlciB0byByZWFkIHBhc3QgdGhlIGVuZCBvZiB0aGUgYnVmZmVyCisgICAgICAg
IGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1JPV19MRU5HVEgsIGRhdGFEaW1lbnNpb24gKyAxKTsK
KyAgICAgICAgZ2xUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdC
QSwgZGF0YURpbWVuc2lvbiwgZGF0YURpbWVuc2lvbiwgMCwgR0xfUkdCQSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgc3RhdGljX2Nhc3Q8R0xzaXpl
aT4ocmdiYURhdGEuc2l6ZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdi
YURhdGEuZGF0YSgpKTsKKyAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKKyAgICB9Cit9CisKKy8vIFRlc3QgYmFzaWMgdXNhZ2UgYW5kIHZhbGlkYXRpb24gb2Yg
Z2xSZWFkUGl4ZWxzUm9idXN0QU5HTEUKK1RFU1RfUChSb2J1c3RDbGllbnRNZW1vcnlUZXN0LCBS
ZWFkUGl4ZWxzKQoreworICAgIGlmICghZXh0ZW5zaW9uc1ByZXNlbnQoKSkKKyAgICB7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHTHNpemVpIGRhdGFEaW1lbnNpb24gPSAxNjsKKyAg
ICBzdGQ6OnZlY3RvcjxHTHVieXRlPiByZ2JhRGF0YShkYXRhRGltZW5zaW9uICogZGF0YURpbWVu
c2lvbiAqIDQpOworCisgICAgLy8gVGVzdCB0aGUgcmVndWxhciBjYXNlCisgICAgR0xzaXplaSBs
ZW5ndGggPSAwOworICAgIGdsUmVhZFBpeGVsc1JvYnVzdEFOR0xFKDAsIDAsIGRhdGFEaW1lbnNp
b24sIGRhdGFEaW1lbnNpb24sIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0xzaXplaT4ocmdiYURhdGEuc2l6ZSgpKSwg
Jmxlbmd0aCwgcmdiYURhdGEuZGF0YSgpKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAg
ICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8R0xzaXplaT4ocmdiYURhdGEuc2l6ZSgpKSwgbGVuZ3Ro
KTsKKworICAgIC8vIFRlc3Qgd2l0aCBhIGRhdGEgc2l6ZSB0aGF0IGlzIHRvbyBzbWFsbAorICAg
IGdsUmVhZFBpeGVsc1JvYnVzdEFOR0xFKDAsIDAsIGRhdGFEaW1lbnNpb24sIGRhdGFEaW1lbnNp
b24sIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8R0xzaXplaT4ocmdiYURhdGEuc2l6ZSgpKSAtIDEsICZsZW5ndGgsIHJn
YmFEYXRhLmRhdGEoKSk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKKworICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA+PSAzKQorICAgIHsKKyAgICAg
ICAgLy8gU2V0IGEgcGFjayBwYXJhbWV0ZXIgdGhhdCB3b3VsZCBjYXVzZSB0aGUgZHJpdmVyIHRv
IHdyaXRlIHBhc3QgdGhlIGVuZCBvZiB0aGUgYnVmZmVyCisgICAgICAgIGdsUGl4ZWxTdG9yZWko
R0xfUEFDS19ST1dfTEVOR1RILCBkYXRhRGltZW5zaW9uICsgMSk7CisgICAgICAgIGdsUmVhZFBp
eGVsc1JvYnVzdEFOR0xFKDAsIDAsIGRhdGFEaW1lbnNpb24sIGRhdGFEaW1lbnNpb24sIEdMX1JH
QkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PEdMc2l6ZWk+KHJnYmFEYXRhLnNpemUoKSksICZsZW5ndGgsIHJnYmFEYXRhLmRh
dGEoKSk7CisgICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Cisg
ICAgfQorfQorCisvLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUu
Zy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UKKy8vIHRl
c3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoUm9idXN0
Q2xpZW50TWVtb3J5VGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCisgICAgICAgICAgICAgICAgICAgICAg
IEVTM19EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzMoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAg
ICAgICBFUzNfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygp
LAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMRVMoKSk7CisKK30gIC8vIG5hbWVz
cGFjZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1NS
R0JUZXh0dXJlVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2dsX3Rlc3RzL1NSR0JUZXh0dXJlVGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1NSR0JUZXh0dXJlVGVz
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNTQgQEAKKy8vCisvLyBDb3B5cmlnaHQg
MjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpbmNs
dWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisK
K25hbWVzcGFjZQoreworCitjbGFzcyBTUkdCVGV4dHVyZVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0
Cit7CisgIHByb3RlY3RlZDoKKyAgICBTUkdCVGV4dHVyZVRlc3QoKQorICAgIHsKKyAgICAgICAg
c2V0V2luZG93V2lkdGgoMTI4KTsKKyAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7CisgICAg
ICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsK
KyAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0FscGhhQml0
cyg4KTsKKyAgICB9CisKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IEFOR0xFVGVzdDo6U2V0VXAoKTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKKyAgICB9Cit9OworCitU
RVNUX1AoU1JHQlRleHR1cmVUZXN0LCBTUkdCVmFsaWRhdGlvbikKK3sKKyAgICBib29sIHN1cHBv
cnRlZCA9IGV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9zUkdCIikgfHwgZ2V0Q2xpZW50TWFqb3JW
ZXJzaW9uKCkgPT0gMzsKKworICAgIEdMdWludCB0ZXggPSAwOworICAgIGdsR2VuVGV4dHVyZXMo
MSwgJnRleCk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXgpOworCisgICAg
R0x1Ynl0ZSBwaXhlbFszXSA9IHsgMCB9OworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJE
LCAwLCBHTF9TUkdCLCAxLCAxLCAwLCBHTF9TUkdCLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbCk7
CisgICAgaWYgKHN1cHBvcnRlZCkKKyAgICB7CisgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OworCisgICAgICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCAwLCAwLCAwLCAw
LCBHTF9TUkdCLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbCk7CisgICAgICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOworCisgICAgICAgIGdsR2VuZXJhdGVNaXBtYXAoR0xfVEVYVFVSRV8yRCk7Cisg
ICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgfQorICAg
IGVsc2UKKyAgICB7CisgICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwor
ICAgIH0KKworICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRleCk7Cit9CisKK1RFU1RfUChTUkdC
VGV4dHVyZVRlc3QsIFNSR0JBVmFsaWRhdGlvbikKK3sKKyAgICBib29sIHN1cHBvcnRlZCA9IGV4
dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9zUkdCIikgfHwgZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkg
PT0gMzsKKworICAgIEdMdWludCB0ZXggPSAwOworICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleCk7
CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXgpOworCisgICAgR0x1Ynl0ZSBw
aXhlbFs0XSA9IHsgMCB9OworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9T
UkdCX0FMUEhBX0VYVCwgMSwgMSwgMCwgR0xfU1JHQl9BTFBIQV9FWFQsIEdMX1VOU0lHTkVEX0JZ
VEUsIHBpeGVsKTsKKyAgICBpZiAoc3VwcG9ydGVkKQorICAgIHsKKyAgICAgICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7CisKKyAgICAgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAs
IDAsIDAsIDAsIDAsIEdMX1NSR0JfQUxQSEFfRVhULCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbCk7
CisgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgICAgIGdsR2VuZXJhdGVNaXBt
YXAoR0xfVEVYVFVSRV8yRCk7CisgICAgICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA9
PSAyKQorICAgICAgICB7CisgICAgICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAg
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAg
IHsKKyAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7CisgICAgfQorCisg
ICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGV4KTsKK30KKworVEVTVF9QKFNSR0JUZXh0dXJlVGVz
dCwgU1JHQkFSZW5kZXJidWZmZXIpCit7CisgICAgYm9vbCBzdXBwb3J0ZWQgPSBleHRlbnNpb25F
bmFibGVkKCJHTF9FWFRfc1JHQiIpIHx8IGdldENsaWVudE1ham9yVmVyc2lvbigpID09IDM7CisK
KyAgICBHTHVpbnQgcmJvID0gMDsKKyAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJnJibyk7Cisg
ICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgcmJvKTsKKworICAgIGdsUmVu
ZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZGRVIsIEdMX1NSR0I4X0FMUEhBOF9FWFQsIDEs
IDEpOworICAgIGlmIChzdXBwb3J0ZWQpCisgICAgeworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJS
T1IoKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdM
X0lOVkFMSURfRU5VTSk7CisKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSByYm8gaGFzIGEgc2l6
ZSBmb3IgZnV0dXJlIHRlc3RzCisgICAgICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5E
RVJCVUZGRVIsIEdMX1JHQkE4X09FUywgMSwgMSk7CisgICAgICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOworICAgIH0KKworICAgIEdMdWludCBmYm8gPSAwOworICAgIGdsR2VuRnJhbWVidWZmZXJz
KDEsICZmYm8pOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBmYm8pOwor
ICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FU
VEFDSE1FTlQwLCBHTF9SRU5ERVJCVUZGRVIsIHJibyk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7CisKKyAgICBHTGludCBjb2xvckVuY29kaW5nID0gMDsKKyAgICBnbEdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcml2KEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5U
MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0ZSQU1FQlVG
RkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkdfRVhULCAmY29sb3JFbmNvZGluZyk7CisgICAg
aWYgKHN1cHBvcnRlZCkKKyAgICB7CisgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAg
ICAgICBFWFBFQ1RfRVEoR0xfU1JHQl9FWFQsIGNvbG9yRW5jb2RpbmcpOworICAgIH0KKyAgICBl
bHNlCisgICAgeworICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKKyAg
ICB9CisKKyAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmZmJvKTsKKyAgICBnbERlbGV0ZVJl
bmRlcmJ1ZmZlcnMoMSwgJnJibyk7Cit9CisKKy8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBj
b25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJz
aW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCitBTkdMRV9JTlNUQU5USUFU
RV9URVNUKFNSR0JUZXh0dXJlVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDko
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCisgICAgICAgICAgICAgICAg
ICAgICAgIEVTM19EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCks
CisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpKTsKKworfSAvLyBuYW1lc3Bh
Y2UKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9TaW1w
bGVPcGVyYXRpb25UZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvZ2xfdGVzdHMvU2ltcGxlT3BlcmF0aW9uVGVzdC5jcHAJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1NpbXBsZU9w
ZXJhdGlvblRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjEyIEBACisvLworLy8g
Q29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworLy8gU2ltcGxlT3BlcmF0aW9uVGVzdDoKKy8vICAgQmFzaWMgR0wgY29tbWFuZHMgc3VjaCBh
cyBsaW5raW5nIGEgcHJvZ3JhbSwgaW5pdGlhbGl6aW5nIGEgYnVmZmVyLCBldGMuCisKKyNpbmNs
dWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorCisjaW5jbHVkZSA8dmVjdG9yPgorCit1c2lu
ZyBuYW1lc3BhY2UgYW5nbGU7CisKK25hbWVzcGFjZQoreworCitjbGFzcyBTaW1wbGVPcGVyYXRp
b25UZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgU2ltcGxlT3Bl
cmF0aW9uVGVzdCgpCisgICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOworICAgICAg
ICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKKyAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKKyAg
ICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4
KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAgIH0KK307CisKK1RFU1RfUChT
aW1wbGVPcGVyYXRpb25UZXN0LCBDb21waWxlVmVydGV4U2hhZGVyKQoreworICAgIGNvbnN0IHN0
ZDo6c3RyaW5nIHNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAoCisgICAgICAgIGF0dHJpYnV0
ZSB2ZWM0IGFfaW5wdXQ7CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGdsX1Bvc2l0aW9uID0gYV9pbnB1dDsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBHTHVp
bnQgc2hhZGVyID0gQ29tcGlsZVNoYWRlcihHTF9WRVJURVhfU0hBREVSLCBzb3VyY2UpOworICAg
IEVYUEVDVF9ORShzaGFkZXIsIDB1KTsKKyAgICBnbERlbGV0ZVNoYWRlcihzaGFkZXIpOworCisg
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9CisKK1RFU1RfUChTaW1wbGVPcGVyYXRpb25UZXN0
LCBDb21waWxlRnJhZ21lbnRTaGFkZXIpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgc291cmNl
ID0gU0hBREVSX1NPVVJDRQorICAgICgKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CisgICAgICAgIHZhcnlpbmcgdmVjNCB2X2lucHV0OworICAgICAgICB2b2lkIG1haW4oKQorICAg
ICAgICB7CisgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2X2lucHV0OworICAgICAgICB9Cisg
ICAgKTsKKworICAgIEdMdWludCBzaGFkZXIgPSBDb21waWxlU2hhZGVyKEdMX0ZSQUdNRU5UX1NI
QURFUiwgc291cmNlKTsKKyAgICBFWFBFQ1RfTkUoc2hhZGVyLCAwdSk7CisgICAgZ2xEZWxldGVT
aGFkZXIoc2hhZGVyKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworfQorCitURVNUX1Ao
U2ltcGxlT3BlcmF0aW9uVGVzdCwgTGlua1Byb2dyYW0pCit7CisgICAgY29uc3Qgc3RkOjpzdHJp
bmcgdnNTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgKAorICAgICAgICB2b2lkIG1haW4oKQor
ICAgICAgICB7CisgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoMS4wLCAxLjAsIDEuMCwg
MS4wKTsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBmc1NvdXJj
ZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAoCisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKTsKKyAg
ICAgICAgfQorICAgICk7CisKKyAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZz
U291cmNlLCBmc1NvdXJjZSk7CisgICAgRVhQRUNUX05FKHByb2dyYW0sIDB1KTsKKyAgICBnbERl
bGV0ZVByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKK30KKwor
VEVTVF9QKFNpbXBsZU9wZXJhdGlvblRlc3QsIExpbmtQcm9ncmFtV2l0aFVuaWZvcm1zKQorewor
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzU291cmNlID0gU0hBREVSX1NPVVJDRQorICAgICgKKyAg
ICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB2
ZWM0KDEuMCwgMS4wLCAxLjAsIDEuMCk7CisgICAgICAgIH0KKyAgICApOworCisgICAgY29uc3Qg
c3RkOjpzdHJpbmcgZnNTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgKAorICAgICAgICBwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgICAgICAgdW5pZm9ybSB2ZWM0IHVfaW5wdXQ7CisgICAg
ICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHVf
aW5wdXQ7CisgICAgICAgIH0KKyAgICApOworCisgICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxl
UHJvZ3JhbSh2c1NvdXJjZSwgZnNTb3VyY2UpOworICAgIEVYUEVDVF9ORShwcm9ncmFtLCAwdSk7
CisKKyAgICBHTGludCB1bmlmb3JtTG9jID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwg
InVfaW5wdXQiKTsKKyAgICBFWFBFQ1RfTkUoLTEsIHVuaWZvcm1Mb2MpOworCisgICAgZ2xEZWxl
dGVQcm9ncmFtKHByb2dyYW0pOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9CisKK1RF
U1RfUChTaW1wbGVPcGVyYXRpb25UZXN0LCBMaW5rUHJvZ3JhbVdpdGhBdHRyaWJ1dGVzKQorewor
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzU291cmNlID0gU0hBREVSX1NPVVJDRQorICAgICgKKyAg
ICAgICAgYXR0cmlidXRlIHZlYzQgYV9pbnB1dDsKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBhX2lucHV0OworICAgICAgICB9CisgICAg
KTsKKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZzU291cmNlID0gU0hBREVSX1NPVVJDRQorICAg
ICgKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xfRnJhZ0Nv
bG9yID0gdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjApOworICAgICAgICB9CisgICAgKTsKKworICAg
IEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odnNTb3VyY2UsIGZzU291cmNlKTsKKyAg
ICBFWFBFQ1RfTkUocHJvZ3JhbSwgMHUpOworCisgICAgR0xpbnQgYXR0cmliTG9jID0gZ2xHZXRB
dHRyaWJMb2NhdGlvbihwcm9ncmFtLCAiYV9pbnB1dCIpOworICAgIEVYUEVDVF9ORSgtMSwgYXR0
cmliTG9jKTsKKworICAgIGdsRGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKKworICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworfQorCitURVNUX1AoU2ltcGxlT3BlcmF0aW9uVGVzdCwgQnVmZmVyRGF0
YVdpdGhEYXRhKQoreworICAgIEdMdWludCBidWZmZXI7CisgICAgZ2xHZW5CdWZmZXJzKDEsICZi
dWZmZXIpOworICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIGJ1ZmZlcik7CisKKyAg
ICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBkYXRhKDEwMjQpOworICAgIGdsQnVmZmVyRGF0YShHTF9B
UlJBWV9CVUZGRVIsIGRhdGEuc2l6ZSgpLCAmZGF0YVswXSwgR0xfU1RBVElDX0RSQVcpOworCisg
ICAgZ2xEZWxldGVCdWZmZXJzKDEsICZidWZmZXIpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7Cit9CisKK1RFU1RfUChTaW1wbGVPcGVyYXRpb25UZXN0LCBCdWZmZXJEYXRhV2l0aE5vRGF0
YSkKK3sKKyAgICBHTHVpbnQgYnVmZmVyOworICAgIGdsR2VuQnVmZmVycygxLCAmYnVmZmVyKTsK
KyAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBidWZmZXIpOworICAgIGdsQnVmZmVy
RGF0YShHTF9BUlJBWV9CVUZGRVIsIDEwMjQsIG51bGxwdHIsIEdMX1NUQVRJQ19EUkFXKTsKKyAg
ICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJmJ1ZmZlcik7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1Io
KTsKK30KKworVEVTVF9QKFNpbXBsZU9wZXJhdGlvblRlc3QsIEJ1ZmZlclN1YkRhdGEpCit7Cisg
ICAgR0x1aW50IGJ1ZmZlcjsKKyAgICBnbEdlbkJ1ZmZlcnMoMSwgJmJ1ZmZlcik7CisgICAgZ2xC
aW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgYnVmZmVyKTsKKworICAgIGNvbnN0IHNpemVfdCBi
dWZmZXJTaXplID0gMTAyNDsKKyAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBidWZm
ZXJTaXplLCBudWxscHRyLCBHTF9TVEFUSUNfRFJBVyk7CisKKyAgICBjb25zdCBzaXplX3Qgc3Vi
RGF0YUNvdW50ID0gMTY7CisgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gZGF0YShidWZmZXJTaXpl
IC8gc3ViRGF0YUNvdW50KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN1YkRhdGFDb3Vu
dDsgaSsrKQorICAgIHsKKyAgICAgICAgZ2xCdWZmZXJTdWJEYXRhKEdMX0FSUkFZX0JVRkZFUiwg
ZGF0YS5zaXplKCkgKiBpLCBkYXRhLnNpemUoKSwgJmRhdGFbMF0pOworICAgIH0KKworICAgIGds
RGVsZXRlQnVmZmVycygxLCAmYnVmZmVyKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwor
fQorCisvLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hp
Y2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxk
IGJlIHJ1biBhZ2FpbnN0LgorQU5HTEVfSU5TVEFOVElBVEVfVEVTVChTaW1wbGVPcGVyYXRpb25U
ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICBFUzJfRDNEMTEoRUdMX0VYUEVSSU1FTlRBTF9QUkVTRU5UX1BBVEhfQ09QWV9BTkdM
RSksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMShFR0xfRVhQRVJJTUVOVEFMX1BS
RVNFTlRfUEFUSF9GQVNUX0FOR0xFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDEx
KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgRVMzX09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdM
RVMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOworCit9IC8vIG5h
bWVzcGFjZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3Rz
L1NpeHRlZW5CcHBUZXh0dXJlVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1NpeHRlZW5CcHBUZXh0dXJlVGVzdC5jcHAJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3Rz
L1NpeHRlZW5CcHBUZXh0dXJlVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NTEg
QEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisvLyBTaXh0ZWVuQnBwVGV4dHVyZVRlc3Q6CisvLyAgIEJhc2ljIHRlc3Rz
IHVzaW5nIDE2YnBwIHRleHR1cmUgZm9ybWF0cyAoZS5nLiBHTF9SR0I1NjUpLgorCisjaW5jbHVk
ZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL2dsX3JhaWku
aCIKKworI2luY2x1ZGUgImltYWdlX3V0aWwvaW1hZ2Vmb3JtYXRzLmgiCisKK3VzaW5nIG5hbWVz
cGFjZSBhbmdsZTsKKworbmFtZXNwYWNlCit7CisKK0dMQ29sb3IgQ29udmVydDU2NShjb25zdCBS
NUc2QjUgJnJnYjU2NSkKK3sKKyAgICBnbDo6Q29sb3JGIGNvbG9yZjsKKyAgICBSNUc2QjU6OnJl
YWRDb2xvcigmY29sb3JmLCAmcmdiNTY1KTsKKyAgICBWZWN0b3I0IHZlY0NvbG9yKGNvbG9yZi5y
ZWQsIGNvbG9yZi5ncmVlbiwgY29sb3JmLmJsdWUsIGNvbG9yZi5hbHBoYSk7CisgICAgcmV0dXJu
IEdMQ29sb3IodmVjQ29sb3IpOworfQorCitSNUc2QjUgQ29udmVydDU2NShjb25zdCBHTENvbG9y
ICZnbENvbG9yKQoreworICAgIGNvbnN0IFZlY3RvcjQgJnZlY0NvbG9yID0gZ2xDb2xvci50b05v
cm1hbGl6ZWRWZWN0b3IoKTsKKyAgICBnbDo6Q29sb3JGIGNvbG9yZih2ZWNDb2xvci54LCB2ZWND
b2xvci55LCB2ZWNDb2xvci56LCB2ZWNDb2xvci53KTsKKyAgICBSNUc2QjUgcmdiNTY1OworICAg
IFI1RzZCNTo6d3JpdGVDb2xvcigmcmdiNTY1LCAmY29sb3JmKTsKKyAgICByZXR1cm4gcmdiNTY1
OworfQorCitjbGFzcyBTaXh0ZWVuQnBwVGV4dHVyZVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7
CisgIHByb3RlY3RlZDoKKyAgICBTaXh0ZWVuQnBwVGV4dHVyZVRlc3QoKQorICAgIHsKKyAgICAg
ICAgc2V0V2luZG93V2lkdGgoMTI4KTsKKyAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7Cisg
ICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4
KTsKKyAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0FscGhh
Qml0cyg4KTsKKyAgICB9CisKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKKworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0
ZXhTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgICAgICgKKyAgICAgICAgICAgIHBy
ZWNpc2lvbiBoaWdocCBmbG9hdDsKKyAgICAgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IHBvc2l0aW9u
OworICAgICAgICAgICAgdmFyeWluZyB2ZWMyIHRleGNvb3JkOworCisgICAgICAgICAgICB2b2lk
IG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVj
NChwb3NpdGlvbi54eSwgMC4wLCAxLjApOworICAgICAgICAgICAgICAgIHRleGNvb3JkID0gKHBv
c2l0aW9uLnh5ICogMC41KSArIDAuNTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZTJEID0gU0hBREVSX1NP
VVJDRQorICAgICAgICAoCisgICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisgICAg
ICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7CisgICAgICAgICAgICB2YXJ5aW5nIHZlYzIg
dGV4Y29vcmQ7CisKKyAgICAgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHRleCwgdGV4Y29vcmQpOworICAg
ICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAgIG0yRFByb2dyYW0gPSBDb21waWxlUHJv
Z3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlMkQpOworICAgICAg
ICBtVGV4dHVyZTJEVW5pZm9ybUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obTJEUHJv
Z3JhbSwgInRleCIpOworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG0yRFByb2dyYW0pOworCisgICAgICAgIEFOR0xF
VGVzdDo6VGVhckRvd24oKTsKKyAgICB9CisKKyAgICB2b2lkIHNpbXBsZVZhbGlkYXRpb25CYXNl
KEdMdWludCB0ZXgpCisgICAgeworICAgICAgICAvLyBEcmF3IGEgcXVhZCB1c2luZyB0aGUgdGV4
dHVyZQorICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAgICAgICBnbFVz
ZVByb2dyYW0obTJEUHJvZ3JhbSk7CisgICAgICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJlMkRVbmlm
b3JtTG9jYXRpb24sIDApOworICAgICAgICBkcmF3UXVhZChtMkRQcm9ncmFtLCAicG9zaXRpb24i
LCAwLjVmKTsKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgaW50IHcg
PSBnZXRXaW5kb3dXaWR0aCgpIC0gMTsKKyAgICAgICAgaW50IGggPSBnZXRXaW5kb3dIZWlnaHQo
KSAtIDE7CisKKyAgICAgICAgLy8gQ2hlY2sgdGhhdCBpdCBkcmV3IGFzIGV4cGVjdGVkCisgICAg
ICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpyZWQpOworICAgICAgICBF
WFBFQ1RfUElYRUxfQ09MT1JfRVEodywgMCwgR0xDb2xvcjo6Z3JlZW4pOworICAgICAgICBFWFBF
Q1RfUElYRUxfQ09MT1JfRVEoMCwgaCwgR0xDb2xvcjo6Ymx1ZSk7CisgICAgICAgIEVYUEVDVF9Q
SVhFTF9DT0xPUl9FUSh3LCBoLCBHTENvbG9yOjp5ZWxsb3cpOworCisgICAgICAgIC8vIEdlbmVy
YXRlIG1pcG1hcHMKKyAgICAgICAgZ2xHZW5lcmF0ZU1pcG1hcChHTF9URVhUVVJFXzJEKTsKKwor
ICAgICAgICAvLyBEcmF3IGEgcXVhZCB1c2luZyB0aGUgdGV4dHVyZQorICAgICAgICBnbENsZWFy
KEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAgICAgICBnbFVzZVByb2dyYW0obTJEUHJvZ3JhbSk7
CisgICAgICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRpb24sIDApOworICAg
ICAgICBkcmF3UXVhZChtMkRQcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICAgICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgLy8gQ2hlY2sgdGhhdCBpdCBkcmV3IGFzIGV4
cGVjdGVkCisgICAgICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpyZWQp
OworICAgICAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEodywgMCwgR0xDb2xvcjo6Z3JlZW4pOwor
ICAgICAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgaCwgR0xDb2xvcjo6Ymx1ZSk7CisgICAg
ICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSh3LCBoLCBHTENvbG9yOjp5ZWxsb3cpOworCisgICAg
ICAgIC8vIEJpbmQgdGhlIHRleHR1cmUgYXMgYSBmcmFtZWJ1ZmZlciwgcmVuZGVyIHRvIGl0LCB0
aGVuIGNoZWNrIHRoZSByZXN1bHRzCisgICAgICAgIEdMRnJhbWVidWZmZXIgZmJvOworICAgICAg
ICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgZmJvLmdldCgpKTsKKyAgICAgICAg
Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCAwKTsKKyAgICAgICAgZ2xGcmFtZWJ1ZmZlclRl
eHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVf
MkQsIHRleCwgMCk7CisKKyAgICAgICAgaWYgKGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9G
UkFNRUJVRkZFUikgIT0gR0xfRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGdsQ2xlYXJDb2xvcigxLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKKyAgICAgICAg
ICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgICAgICAgICBFWFBFQ1RfUElY
RUxfRVEoMCwgMCwgMjU1LCAwLCAwLCAyNTUpOworICAgICAgICAgICAgRVhQRUNUX1BJWEVMX0VR
KDEsIDAsIDI1NSwgMCwgMCwgMjU1KTsKKyAgICAgICAgICAgIEVYUEVDVF9QSVhFTF9FUSgxLCAx
LCAyNTUsIDAsIDAsIDI1NSk7CisgICAgICAgICAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMSwgMjU1
LCAwLCAwLCAyNTUpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RkOjpjb3V0IDw8ICJTa2lwcGluZyByZW5kZXJpbmcgdG8gYW4gdW5zdXBwb3J0ZWQg
ZnJhbWVidWZmZXIgZm9ybWF0IiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBHTHVpbnQgbTJEUHJvZ3JhbTsKKyAgICBHTGludCBtVGV4dHVyZTJEVW5pZm9ybUxvY2F0aW9u
OworfTsKKworY2xhc3MgU2l4dGVlbkJwcFRleHR1cmVUZXN0RVMzIDogcHVibGljIFNpeHRlZW5C
cHBUZXh0dXJlVGVzdAoreworfTsKKworLy8gU2ltcGxlIHZhbGlkYXRpb24gdGVzdCBmb3IgR0xf
UkdCNTY1IHRleHR1cmVzLgorLy8gU2FtcGxlcyBmcm9tIHRoZSB0ZXh0dXJlLCByZW5kZXJzIHRv
IGl0LCBnZW5lcmF0ZXMgbWlwbWFwcyBldGMuCitURVNUX1AoU2l4dGVlbkJwcFRleHR1cmVUZXN0
LCBSR0I1NjVWYWxpZGF0aW9uKQoreworICAgIC8vIFRoZXNlIHRlc3RzIGZhaWwgb24gY2VydGFp
biBJbnRlbCBtYWNoaW5lcyBydW5uaW5nIGFuIHVuLXVwZGF0ZWQgdmVyc2lvbiBvZiBXaW43Cisg
ICAgLy8gVGhlIHRlc3RzIHBhc3MgYWZ0ZXIgaW5zdGFsbGluZyB0aGUgbGF0ZXN0IHVwZGF0ZXMg
ZnJvbSBXaW5kb3dzIFVwZGF0ZS4KKyAgICAvLyBUT0RPOiByZWVuYWJsZSB0aGVzZSB0ZXN0cyBv
bmNlIHRoZSBib3RzIGhhdmUgYmVlbiB1cGRhdGVkCisgICAgaWYgKElzSW50ZWwoKSAmJiBnZXRQ
bGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUp
CisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBEM0Qx
MS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdMdWludCB0
ZXN0OworICAgIG1lbWNweSgmdGVzdCwgJkdMQ29sb3I6OmJsYWNrLCA0KTsKKworICAgIFI1RzZC
NSBwaXhlbHNbNF0gPSB7Q29udmVydDU2NShHTENvbG9yOjpyZWQpLCBDb252ZXJ0NTY1KEdMQ29s
b3I6OmdyZWVuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbnZlcnQ1NjUoR0xDb2xvcjo6
Ymx1ZSksIENvbnZlcnQ1NjUoR0xDb2xvcjo6eWVsbG93KX07CisKKyAgICBnbENsZWFyQ29sb3Io
MCwgMCwgMCwgMCk7CisKKyAgICAvLyBDcmVhdGUgYSBzaW1wbGUgUkdCNTY1IHRleHR1cmUKKyAg
ICBHTFRleHR1cmUgdGV4OworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4Lmdl
dCgpKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCLCAyLCAyLCAw
LCBHTF9SR0IsIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81LCBudWxscHRyKTsKKyAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNU
KTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklM
VEVSLCBHTF9ORUFSRVNUKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIFN1
cHBseSB0aGUgZGF0YSB0byBpdAorICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAw
LCAwLCAwLCAyLCAyLCBHTF9SR0IsIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81LCBwaXhlbHMpOwor
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgc2ltcGxlVmFsaWRhdGlvbkJhc2UodGV4
LmdldCgpKTsKK30KKworLy8gU2ltcGxlIHZhbGlkYXRpb24gdGVzdCBmb3IgR0xfUkdCQTU1NTEg
dGV4dHVyZXMuCisvLyBTYW1wbGVzIGZyb20gdGhlIHRleHR1cmUsIHJlbmRlcnMgdG8gaXQsIGdl
bmVyYXRlcyBtaXBtYXBzIGV0Yy4KK1RFU1RfUChTaXh0ZWVuQnBwVGV4dHVyZVRlc3QsIFJHQkE1
NTUxVmFsaWRhdGlvbikKK3sKKyAgICAvLyBUaGVzZSB0ZXN0cyBmYWlsIG9uIGNlcnRhaW4gSW50
ZWwgbWFjaGluZXMgcnVubmluZyBhbiB1bi11cGRhdGVkIHZlcnNpb24gb2YgV2luNworICAgIC8v
IFRoZSB0ZXN0cyBwYXNzIGFmdGVyIGluc3RhbGxpbmcgdGhlIGxhdGVzdCB1cGRhdGVzIGZyb20g
V2luZG93cyBVcGRhdGUuCisgICAgLy8gVE9ETzogcmVlbmFibGUgdGhlc2UgdGVzdHMgb25jZSB0
aGUgYm90cyBoYXZlIGJlZW4gdXBkYXRlZAorICAgIGlmIChJc0ludGVsKCkgJiYgZ2V0UGxhdGZv
cm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFKQorICAg
IHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgRDNEMTEuIiA8
PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHTHVzaG9ydCBwaXhl
bHNbNF0gPQorICAgIHsKKyAgICAgICAgMHhGODAxLCAvLyBSZWQKKyAgICAgICAgMHgwN0MxLCAv
LyBHcmVlbgorICAgICAgICAweDAwM0YsIC8vIEJsdWUKKyAgICAgICAgMHhGRkMxICAvLyBSZWQg
KyBHcmVlbgorICAgIH07CisKKyAgICAvLyBDcmVhdGUgYSBzaW1wbGUgNTU1MSB0ZXh0dXJlCisg
ICAgR0xUZXh0dXJlIHRleDsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleC5n
ZXQoKSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDIsIDIs
IDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEsIG51bGxwdHIpOworICAgIGds
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05F
QVJFU1QpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01B
R19GSUxURVIsIEdMX05FQVJFU1QpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAg
Z2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDIsIDIsIEdMX1JHQkEsIEdM
X1VOU0lHTkVEX1NIT1JUXzVfNV81XzEsIHBpeGVscyk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7CisKKyAgICBzaW1wbGVWYWxpZGF0aW9uQmFzZSh0ZXguZ2V0KCkpOworfQorCisvLyBUZXN0
IHRvIGVuc3VyZSBjYWxsaW5nIENsZWFyKCkgb24gYW4gUkdCQTU1NTEgdGV4dHVyZSBkb2VzIHNv
bWV0aGluZyByZWFzb25hYmxlCisvLyBCYXNlZCBvbiBXZWJHTCB0ZXN0IGNvbmZvcm1hbmNlL3Rl
eHR1cmVzL3RleHR1cmUtYXR0YWNobWVudC1mb3JtYXRzLmh0bWwKK1RFU1RfUChTaXh0ZWVuQnBw
VGV4dHVyZVRlc3QsIFJHQkE1NTUxQ2xlYXJBbHBoYSkKK3sKKyAgICAvLyBUaGVzZSB0ZXN0cyBm
YWlsIG9uIGNlcnRhaW4gSW50ZWwgbWFjaGluZXMgcnVubmluZyBhbiB1bi11cGRhdGVkIHZlcnNp
b24gb2YgV2luNworICAgIC8vIFRoZSB0ZXN0cyBwYXNzIGFmdGVyIGluc3RhbGxpbmcgdGhlIGxh
dGVzdCB1cGRhdGVzIGZyb20gV2luZG93cyBVcGRhdGUuCisgICAgLy8gVE9ETzogcmVlbmFibGUg
dGhlc2UgdGVzdHMgb25jZSB0aGUgYm90cyBoYXZlIGJlZW4gdXBkYXRlZAorICAgIGlmIChJc0lu
dGVsKCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBF
X0QzRDExX0FOR0xFKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQg
b24gSW50ZWwgRDNEMTEuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBHTFRleHR1cmUgdGV4OworICAgIEdMRnJhbWVidWZmZXIgZmJvOworCisgICAgLy8gQ3Jl
YXRlIGEgc2ltcGxlIDU1NTEgdGV4dHVyZQorICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8y
RCwgdGV4LmdldCgpKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdC
QSwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMSwgbnVsbHB0cik7
CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRF
UiwgR0xfTkVBUkVTVCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
CisKKyAgICAvLyBCaW5kIHRoZSB0ZXh0dXJlIGFzIGEgZnJhbWVidWZmZXIsIGNsZWFyIGl0LCB0
aGVuIGNoZWNrIHRoZSByZXN1bHRzCisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZG
RVIsIGZiby5nZXQoKSk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCAwKTsKKyAg
ICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hN
RU5UMCwgR0xfVEVYVFVSRV8yRCwgdGV4LmdldCgpLCAwKTsKKworICAgIGlmIChnbENoZWNrRnJh
bWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpICE9IEdMX0ZSQU1FQlVGRkVSX1VOU1VQUE9S
VEVEKQorICAgIHsKKyAgICAgICAgZ2xDbGVhckNvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYp
OworICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAgICAgICBFWFBFQ1Rf
UElYRUxfRVEoMCwgMCwgMCwgMCwgMCwgMCk7CisKKyAgICAgICAgZ2xDbGVhckNvbG9yKDAuMGYs
IDAuMGYsIDAuMGYsIDEuMGYpOworICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQp
OworICAgICAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMCwgMCwgMCwgMjU1KTsKKyAgICB9Cisg
ICAgZWxzZQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJTa2lwcGluZyByZW5kZXJpbmcg
dG8gYW4gdW5zdXBwb3J0ZWQgZnJhbWVidWZmZXIgZm9ybWF0IiA8PCBzdGQ6OmVuZGw7CisgICAg
fQorfQorCisvLyBTaW1wbGUgdmFsaWRhdGlvbiB0ZXN0IGZvciBHTF9SR0JBNDQ0NCB0ZXh0dXJl
cy4KKy8vIFNhbXBsZXMgZnJvbSB0aGUgdGV4dHVyZSwgcmVuZGVycyB0byBpdCwgZ2VuZXJhdGVz
IG1pcG1hcHMgZXRjLgorVEVTVF9QKFNpeHRlZW5CcHBUZXh0dXJlVGVzdCwgUkdCQTQ0NDRWYWxp
ZGF0aW9uKQoreworICAgIC8vIFRoZXNlIHRlc3RzIGZhaWwgb24gY2VydGFpbiBJbnRlbCBtYWNo
aW5lcyBydW5uaW5nIGFuIHVuLXVwZGF0ZWQgdmVyc2lvbiBvZiBXaW43CisgICAgLy8gVGhlIHRl
c3RzIHBhc3MgYWZ0ZXIgaW5zdGFsbGluZyB0aGUgbGF0ZXN0IHVwZGF0ZXMgZnJvbSBXaW5kb3dz
IFVwZGF0ZS4KKyAgICAvLyBUT0RPOiByZWVuYWJsZSB0aGVzZSB0ZXN0cyBvbmNlIHRoZSBib3Rz
IGhhdmUgYmVlbiB1cGRhdGVkCisgICAgaWYgKElzSW50ZWwoKSAmJiBnZXRQbGF0Zm9ybVJlbmRl
cmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUpCisgICAgeworICAg
ICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBEM0QxMS4iIDw8IHN0ZDo6
ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdMdXNob3J0IHBpeGVsc1s0XSA9
CisgICAgeworICAgICAgICAweEYwMEYsIC8vIFJlZAorICAgICAgICAweDBGMEYsIC8vIEdyZWVu
CisgICAgICAgIDB4MDBGRiwgLy8gQmx1ZQorICAgICAgICAweEZGMEYgIC8vIFJlZCArIEdyZWVu
CisgICAgfTsKKworICAgIGdsQ2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKKworICAgIC8vIEdlbmVy
YXRlIGEgUkdCQTQ0NDQgdGV4dHVyZSwgbm8gbWlwbWFwcworICAgIEdMVGV4dHVyZSB0ZXg7Cisg
ICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXguZ2V0KCkpOworICAgIGdsVGV4SW1h
Z2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAyLCAyLCAwLCBHTF9SR0JBLCBHTF9VTlNJ
R05FRF9TSE9SVF80XzRfNF80LCBudWxscHRyKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVY
VFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNU
KTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIFByb3ZpZGUgc29tZSBkYXRh
IGZvciB0aGUgdGV4dHVyZQorICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCAw
LCAwLCAyLCAyLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80LCBwaXhlbHMpOwor
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgc2ltcGxlVmFsaWRhdGlvbkJhc2UodGV4
LmdldCgpKTsKK30KKworLy8gVGVzdCB1cGxvYWRpbmcgUkdCQTggZGF0YSB0byBSR0JBNCB0ZXh0
dXJlcy4KK1RFU1RfUChTaXh0ZWVuQnBwVGV4dHVyZVRlc3RFUzMsIFJHQkE0VXBsb2FkUkdCQTgp
Cit7CisgICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gZm91ckNvbG9yczsKKyAgICBmb3VyQ29sb3Jz
LnB1c2hfYmFjayhHTENvbG9yOjpyZWQpOworICAgIGZvdXJDb2xvcnMucHVzaF9iYWNrKEdMQ29s
b3I6OmdyZWVuKTsKKyAgICBmb3VyQ29sb3JzLnB1c2hfYmFjayhHTENvbG9yOjpibHVlKTsKKyAg
ICBmb3VyQ29sb3JzLnB1c2hfYmFjayhHTENvbG9yOjp5ZWxsb3cpOworCisgICAgR0xUZXh0dXJl
IHRleDsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleC5nZXQoKSk7CisgICAg
Z2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkE0LCAyLCAyLCAwLCBHTF9SR0JB
LCBHTF9VTlNJR05FRF9CWVRFLCBmb3VyQ29sb3JzLmRhdGEoKSk7CisgICAgZ2xUZXhQYXJhbWV0
ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Cisg
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwg
R0xfTkVBUkVTVCk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgc2ltcGxlVmFsaWRh
dGlvbkJhc2UodGV4LmdldCgpKTsKK30KKworLy8gVGVzdCB1cGxvYWRpbmcgUkdCOCBkYXRhIHRv
IFJHQjU2NSB0ZXh0dXJlcy4KK1RFU1RfUChTaXh0ZWVuQnBwVGV4dHVyZVRlc3RFUzMsIFJHQjU2
NVVwbG9hZFJHQjgpCit7CisgICAgc3RkOjp2ZWN0b3I8R0xDb2xvclJHQj4gZm91ckNvbG9yczsK
KyAgICBmb3VyQ29sb3JzLnB1c2hfYmFjayhHTENvbG9yUkdCOjpyZWQpOworICAgIGZvdXJDb2xv
cnMucHVzaF9iYWNrKEdMQ29sb3JSR0I6OmdyZWVuKTsKKyAgICBmb3VyQ29sb3JzLnB1c2hfYmFj
ayhHTENvbG9yUkdCOjpibHVlKTsKKyAgICBmb3VyQ29sb3JzLnB1c2hfYmFjayhHTENvbG9yUkdC
Ojp5ZWxsb3cpOworCisgICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfQUxJR05NRU5ULCAxKTsK
KworICAgIEdMVGV4dHVyZSB0ZXg7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0
ZXguZ2V0KCkpOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0I1NjUs
IDIsIDIsIDAsIEdMX1JHQiwgR0xfVU5TSUdORURfQllURSwgZm91ckNvbG9ycy5kYXRhKCkpOwor
ICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIs
IEdMX05FQVJFU1QpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhU
VVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwor
CisgICAgc2ltcGxlVmFsaWRhdGlvbkJhc2UodGV4LmdldCgpKTsKK30KKworLy8gVGVzdCB1cGxv
YWRpbmcgUkdCQTggZGF0YSB0byBSR0I1QTQxIHRleHR1cmVzLgorVEVTVF9QKFNpeHRlZW5CcHBU
ZXh0dXJlVGVzdEVTMywgUkdCNUExVXBsb2FkUkdCQTgpCit7CisgICAgc3RkOjp2ZWN0b3I8R0xD
b2xvcj4gZm91ckNvbG9yczsKKyAgICBmb3VyQ29sb3JzLnB1c2hfYmFjayhHTENvbG9yOjpyZWQp
OworICAgIGZvdXJDb2xvcnMucHVzaF9iYWNrKEdMQ29sb3I6OmdyZWVuKTsKKyAgICBmb3VyQ29s
b3JzLnB1c2hfYmFjayhHTENvbG9yOjpibHVlKTsKKyAgICBmb3VyQ29sb3JzLnB1c2hfYmFjayhH
TENvbG9yOjp5ZWxsb3cpOworCisgICAgR0xUZXh0dXJlIHRleDsKKyAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIHRleC5nZXQoKSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVf
MkQsIDAsIEdMX1JHQjVfQTEsIDIsIDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisg
ICAgICAgICAgICAgICAgIGZvdXJDb2xvcnMuZGF0YSgpKTsKKyAgICBnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9O
RUFSRVNUKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICBzaW1wbGVWYWxpZGF0aW9u
QmFzZSh0ZXguZ2V0KCkpOworfQorCisvLyBUZXN0IHVwbG9hZGluZyBSR0IxMEEyIGRhdGEgdG8g
UkdCNUExIHRleHR1cmVzLgorVEVTVF9QKFNpeHRlZW5CcHBUZXh0dXJlVGVzdEVTMywgUkdCNUEx
VXBsb2FkUkdCMTBBMikKK3sKKyAgICBzdHJ1Y3QgUkdCMTBBMgorICAgIHsKKyAgICAgICAgUkdC
MTBBMih1aW50MzJfdCByLCB1aW50MzJfdCBnLCB1aW50MzJfdCBiLCB1aW50MzJfdCBhKSA6IFIo
ciksIEcoZyksIEIoYiksIEEoYSkge30KKworICAgICAgICB1aW50MzJfdCBSIDogMTA7CisgICAg
ICAgIHVpbnQzMl90IEcgOiAxMDsKKyAgICAgICAgdWludDMyX3QgQiA6IDEwOworICAgICAgICB1
aW50MzJfdCBBIDogMjsKKyAgICB9OworCisgICAgdWludDMyX3Qgb25lMTAgPSAoMXUgPDwgMTB1
KSAtIDF1OworCisgICAgUkdCMTBBMiByZWQob25lMTAsIDB1LCAwdSwgMHgzdSk7CisgICAgUkdC
MTBBMiBncmVlbigwdSwgb25lMTAsIDB1LCAweDN1KTsKKyAgICBSR0IxMEEyIGJsdWUoMHUsIDB1
LCBvbmUxMCwgMHgzdSk7CisgICAgUkdCMTBBMiB5ZWxsb3cob25lMTAsIG9uZTEwLCAwdSwgMHgz
dSk7CisKKyAgICBzdGQ6OnZlY3RvcjxSR0IxMEEyPiBmb3VyQ29sb3JzOworICAgIGZvdXJDb2xv
cnMucHVzaF9iYWNrKHJlZCk7CisgICAgZm91ckNvbG9ycy5wdXNoX2JhY2soZ3JlZW4pOworICAg
IGZvdXJDb2xvcnMucHVzaF9iYWNrKGJsdWUpOworICAgIGZvdXJDb2xvcnMucHVzaF9iYWNrKHll
bGxvdyk7CisKKyAgICBHTFRleHR1cmUgdGV4OworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVS
RV8yRCwgdGV4LmdldCgpKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xf
UkdCNV9BMSwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVW
LAorICAgICAgICAgICAgICAgICBmb3VyQ29sb3JzLmRhdGEoKSk7CisgICAgZ2xUZXhQYXJhbWV0
ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Cisg
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwg
R0xfTkVBUkVTVCk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgc2ltcGxlVmFsaWRh
dGlvbkJhc2UodGV4LmdldCgpKTsKK30KKworLy8gVGVzdCByZWFkaW5nIGZyb20gUkdCQTQgdGV4
dHVyZXMgYXR0YWNoZWQgdG8gRkJPLgorVEVTVF9QKFNpeHRlZW5CcHBUZXh0dXJlVGVzdEVTMywg
UkdCQTRGcmFtZWJ1ZmZlclJlYWRiYWNrKQoreworICAgIC8vIFRPRE8oam1hZGlsbCk6IEZpeCBi
dWcgd2l0aCBHTEVTCisgICAgaWYgKElzT3BlbkdMRVMoKSkKKyAgICB7CisgICAgICAgIHN0ZDo6
Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEdMRVMuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBWZWN0b3I0IHJhd0NvbG9yKDAuNWYsIDAuN2YsIDEuMGYsIDAu
MGYpOworICAgIEdMQ29sb3IgZXhwZWN0ZWRDb2xvcihyYXdDb2xvcik7CisKKyAgICBHTEZyYW1l
YnVmZmVyIGZibzsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgZmJvLmdl
dCgpKTsKKworICAgIEdMVGV4dHVyZSB0ZXg7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
XzJELCB0ZXguZ2V0KCkpOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9S
R0JBNCwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7CisgICAg
Z2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVO
VDAsIEdMX1RFWFRVUkVfMkQsIHRleC5nZXQoKSwgMCk7CisKKyAgICBnbENsZWFyQ29sb3IocmF3
Q29sb3IueCwgcmF3Q29sb3IueSwgcmF3Q29sb3IueiwgcmF3Q29sb3Iudyk7CisgICAgZ2xDbGVh
cihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisg
ICAgR0xlbnVtIGNvbG9yUmVhZEZvcm1hdCA9IEdMX05PTkU7CisgICAgR0xlbnVtIGNvbG9yUmVh
ZFR5cGUgICA9IEdMX05PTkU7CisgICAgZ2xHZXRJbnRlZ2VydihHTF9JTVBMRU1FTlRBVElPTl9D
T0xPUl9SRUFEX0ZPUk1BVCwgcmVpbnRlcnByZXRfY2FzdDxHTGludCAqPigmY29sb3JSZWFkRm9y
bWF0KSk7CisgICAgZ2xHZXRJbnRlZ2VydihHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZ
UEUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQgKj4oJmNvbG9yUmVhZFR5cGUpKTsKKworICAgIGlm
IChjb2xvclJlYWRGb3JtYXQgPT0gR0xfUkdCQSAmJiBjb2xvclJlYWRUeXBlID09IEdMX1VOU0lH
TkVEX0JZVEUpCisgICAgeworICAgICAgICBHTENvbG9yIGFjdHVhbENvbG9yID0gR0xDb2xvcjo6
YmxhY2s7CisgICAgICAgIGdsUmVhZFBpeGVscygwLCAwLCAxLCAxLCBjb2xvclJlYWRGb3JtYXQs
IGNvbG9yUmVhZFR5cGUsICZhY3R1YWxDb2xvcik7CisgICAgICAgIEVYUEVDVF9DT0xPUl9ORUFS
KGV4cGVjdGVkQ29sb3IsIGFjdHVhbENvbG9yLCAyMCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7
CisgICAgICAgIEFTU0VSVF9HTEVOVU1fRVEoR0xfUkdCQSwgY29sb3JSZWFkRm9ybWF0KTsKKyAg
ICAgICAgQVNTRVJUX1RSVUUoY29sb3JSZWFkVHlwZSA9PSBHTF9VTlNJR05FRF9TSE9SVF80XzRf
NF80X1JFVl9FWFQgfHwKKyAgICAgICAgICAgICAgICAgICAgY29sb3JSZWFkVHlwZSA9PSBHTF9V
TlNJR05FRF9TSE9SVF80XzRfNF80KTsKKworICAgICAgICB1aW50MTZfdCByZ2JhID0gMDsKKyAg
ICAgICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIGNvbG9yUmVhZEZvcm1hdCwgY29sb3JSZWFk
VHlwZSwgJnJnYmEpOworCisgICAgICAgIEdMdWJ5dGUgcjggPSBzdGF0aWNfY2FzdDxHTHVieXRl
PigocmdiYSAmIDB4RjAwMCkgPj4gMTIpOworICAgICAgICBHTHVieXRlIGc4ID0gc3RhdGljX2Nh
c3Q8R0x1Ynl0ZT4oKHJnYmEgJiAweDBGMDApID4+IDgpOworICAgICAgICBHTHVieXRlIGI4ID0g
c3RhdGljX2Nhc3Q8R0x1Ynl0ZT4oKHJnYmEgJiAweDAwRjApID4+IDQpOworICAgICAgICBHTHVi
eXRlIGE4ID0gc3RhdGljX2Nhc3Q8R0x1Ynl0ZT4oKHJnYmEgJiAweDAwMEYpKTsKKworICAgICAg
ICBHTENvbG9yIGFjdHVhbENvbG9yKHI4IDw8IDQsIGc4IDw8IDQsIGI4IDw8IDQsIGE4IDw8IDQp
OworICAgICAgICBFWFBFQ1RfQ09MT1JfTkVBUihleHBlY3RlZENvbG9yLCBhY3R1YWxDb2xvciwg
MjApOworICAgIH0KKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworfQorCisvLyBUZXN0IHJl
YWRpbmcgZnJvbSBSR0I1NjUgdGV4dHVyZXMgYXR0YWNoZWQgdG8gRkJPLgorVEVTVF9QKFNpeHRl
ZW5CcHBUZXh0dXJlVGVzdEVTMywgUkdCNTY1RnJhbWVidWZmZXJSZWFkYmFjaykKK3sKKyAgICAv
LyBUT0RPKGptYWRpbGwpOiBGaXggYnVnIHdpdGggR0xFUworICAgIGlmIChJc09wZW5HTEVTKCkp
CisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBHTEVTLiIgPDwg
c3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR0xGcmFtZWJ1ZmZlciBm
Ym87CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIGZiby5nZXQoKSk7CisK
KyAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBmb3VyQ29sb3JzOworICAgIGZvdXJDb2xvcnMucHVz
aF9iYWNrKEdMQ29sb3I6OnJlZCk7CisgICAgZm91ckNvbG9ycy5wdXNoX2JhY2soR0xDb2xvcjo6
Z3JlZW4pOworICAgIGZvdXJDb2xvcnMucHVzaF9iYWNrKEdMQ29sb3I6OmJsdWUpOworICAgIGZv
dXJDb2xvcnMucHVzaF9iYWNrKEdMQ29sb3I6OndoaXRlKTsKKworICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZ2ZXJ0ZXhTaGFkZXIgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAg
ICJpbiB2ZWM0IGNvbG9yO1xuIgorICAgICAgICAiaW4gdmVjMiBwb3NpdGlvbjtcbiIKKyAgICAg
ICAgIm91dCB2ZWM0IGZjb2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAg
ICAgIiAgICBmY29sb3IgPSBjb2xvcjtcbiIKKyAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZl
YzQocG9zaXRpb24sIDAuNSwgMS4wKTtcbiIKKyAgICAgICAgIn0iOworICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZmcmFnbWVudFNoYWRlciA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAg
ICAgICAgImluIG1lZGl1bXAgdmVjNCBmY29sb3I7XG4iCisgICAgICAgICJvdXQgbWVkaXVtcCB2
ZWM0IGNvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAiICAgIGNv
bG9yID0gZmNvbG9yO1xuIgorICAgICAgICAifSI7CisKKyAgICBHTHVpbnQgcHJvZ3JhbSA9IENv
bXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlciwgZnJhZ21lbnRTaGFkZXIpOworICAgIGdsVXNlUHJv
Z3JhbShwcm9ncmFtKTsKKworICAgIEdMaW50IGNvbG9yTG9jYXRpb24gPSBnbEdldEF0dHJpYkxv
Y2F0aW9uKHByb2dyYW0sICJjb2xvciIpOworICAgIEFTU0VSVF9ORSgtMSwgY29sb3JMb2NhdGlv
bik7CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShjb2xvckxvY2F0aW9uKTsKKyAgICBn
bFZlcnRleEF0dHJpYlBvaW50ZXIoY29sb3JMb2NhdGlvbiwgNCwgR0xfVU5TSUdORURfQllURSwg
R0xfVFJVRSwgMCwgZm91ckNvbG9ycy5kYXRhKCkpOworCisgICAgaW50IHcgPSBnZXRXaW5kb3dX
aWR0aCgpOworICAgIGludCBoID0gZ2V0V2luZG93SGVpZ2h0KCk7CisKKyAgICBnbFZpZXdwb3J0
KDAsIDAsIHcsIGgpOworCisgICAgR0xUZXh0dXJlIHRleDsKKyAgICBnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQsIHRleC5nZXQoKSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQs
IDAsIEdMX1JHQjU2NSwgdywgaCwgMCwgR0xfUkdCLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRy
KTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9B
VFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgdGV4LmdldCgpLCAwKTsKKworICAgIGRyYXdJbmRl
eGVkUXVhZChwcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOworCisgICAgaW50IHQgPSAxMjsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfTkVBUigw
LCBoIC0gMSwgR0xDb2xvcjo6cmVkLCB0KTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfTkVBUigw
LCAwLCBHTENvbG9yOjpncmVlbiwgdCk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX05FQVIodyAt
IDEsIDAsIEdMQ29sb3I6OmJsdWUsIHQpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9ORUFSKHcg
LSAxLCBoIC0gMSwgR0xDb2xvcjo6d2hpdGUsIHQpOworCisgICAgR0xlbnVtIGNvbG9yUmVhZEZv
cm1hdCA9IEdMX05PTkU7CisgICAgR0xlbnVtIGNvbG9yUmVhZFR5cGUgICA9IEdMX05PTkU7Cisg
ICAgZ2xHZXRJbnRlZ2VydihHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVCwgcmVp
bnRlcnByZXRfY2FzdDxHTGludCAqPigmY29sb3JSZWFkRm9ybWF0KSk7CisgICAgZ2xHZXRJbnRl
Z2VydihHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEUsIHJlaW50ZXJwcmV0X2Nhc3Q8
R0xpbnQgKj4oJmNvbG9yUmVhZFR5cGUpKTsKKworICAgIGlmIChjb2xvclJlYWRGb3JtYXQgPT0g
R0xfUkdCICYmIGNvbG9yUmVhZFR5cGUgPT0gR0xfVU5TSUdORURfU0hPUlRfNV82XzUpCisgICAg
eworICAgICAgICBzdGQ6OnZlY3RvcjxSNUc2QjU+IHJlYWRDb2xvcnModyAqIGgpOworICAgICAg
ICBnbFJlYWRQaXhlbHMoMCwgMCwgdywgaCwgR0xfUkdCLCBHTF9VTlNJR05FRF9TSE9SVF81XzZf
NSwgcmVhZENvbG9ycy5kYXRhKCkpOworCisgICAgICAgIGludCBob2Zmc2V0ID0gKGggLSAxKSAq
IHc7CisgICAgICAgIEVYUEVDVF9DT0xPUl9ORUFSKEdMQ29sb3I6OnJlZCwgQ29udmVydDU2NShy
ZWFkQ29sb3JzW2hvZmZzZXRdKSwgdCk7CisgICAgICAgIEVYUEVDVF9DT0xPUl9ORUFSKEdMQ29s
b3I6OmdyZWVuLCBDb252ZXJ0NTY1KHJlYWRDb2xvcnNbMF0pLCB0KTsKKyAgICAgICAgRVhQRUNU
X0NPTE9SX05FQVIoR0xDb2xvcjo6Ymx1ZSwgQ29udmVydDU2NShyZWFkQ29sb3JzW3cgLSAxXSks
IHQpOworICAgICAgICBFWFBFQ1RfQ09MT1JfTkVBUihHTENvbG9yOjp3aGl0ZSwgQ29udmVydDU2
NShyZWFkQ29sb3JzW3cgLSAxICsgaG9mZnNldF0pLCB0KTsKKyAgICB9CisKKyAgICBnbERlbGV0
ZVByb2dyYW0ocHJvZ3JhbSk7Cit9CisKKy8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25m
aWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9u
KSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCitBTkdMRV9JTlNUQU5USUFURV9U
RVNUKFNpeHRlZW5CcHBUZXh0dXJlVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0Qz
RDkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCisgICAgICAgICAgICAg
ICAgICAgICAgIEVTMl9EM0QxMV9GTDlfMygpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJf
T1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpKTsKKworQU5H
TEVfSU5TVEFOVElBVEVfVEVTVChTaXh0ZWVuQnBwVGV4dHVyZVRlc3RFUzMsIEVTM19EM0QxMSgp
LCBFUzNfT1BFTkdMKCksIEVTM19PUEVOR0xFUygpKTsKKworfSAvLyBuYW1lc3BhY2UKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9TdGF0ZUNoYW5nZVRl
c3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9n
bF90ZXN0cy9TdGF0ZUNoYW5nZVRlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9TdGF0ZUNoYW5nZVRlc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNTkxIEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gU3RhdGVDaGFuZ2VUZXN0
OgorLy8gICBTcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIGFuIEFOR0xFIGltcGxlbWVudGF0aW9u
IG9mIEdMLCB0aGVzZSB0ZXN0cyB2YWxpZGF0ZSB0aGF0CisvLyAgIEFOR0xFJ3MgZGlydHkgYml0
cyBzeXN0ZW1zIGRvbid0IGdldCBjb25mdXNlZCBieSBjZXJ0YWluIHNlcXVlbmNlcyBvZiBzdGF0
ZSBjaGFuZ2VzLgorLy8KKworI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisjaW5j
bHVkZSAidGVzdF91dGlscy9nbF9yYWlpLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKwor
bmFtZXNwYWNlCit7CisKK2NsYXNzIFN0YXRlQ2hhbmdlVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QK
K3sKKyAgcHJvdGVjdGVkOgorICAgIFN0YXRlQ2hhbmdlVGVzdCgpCisgICAgeworICAgICAgICBz
ZXRXaW5kb3dXaWR0aCg2NCk7CisgICAgICAgIHNldFdpbmRvd0hlaWdodCg2NCk7CisgICAgICAg
IHNldENvbmZpZ1JlZEJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKKyAg
ICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4
KTsKKworICAgICAgICAvLyBFbmFibGUgdGhlIG5vIGVycm9yIGV4dGVuc2lvbiB0byBhdm9pZCBz
eW5jaW5nIHRoZSBGQk8gc3RhdGUgb24gdmFsaWRhdGlvbi4KKyAgICAgICAgc2V0Tm9FcnJvckVu
YWJsZWQodHJ1ZSk7CisgICAgfQorCisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgewor
ICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7CisKKyAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMo
MSwgJm1GcmFtZWJ1ZmZlcik7CisgICAgICAgIGdsR2VuVGV4dHVyZXMoMiwgbVRleHR1cmVzLmRh
dGEoKSk7CisgICAgICAgIGdsR2VuUmVuZGVyYnVmZmVycygxLCAmbVJlbmRlcmJ1ZmZlcik7CisK
KyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93
bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAobUZyYW1lYnVmZmVyICE9IDApCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZtRnJhbWVidWZmZXIp
OworICAgICAgICAgICAgbUZyYW1lYnVmZmVyID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICghbVRleHR1cmVzLmVtcHR5KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsRGVsZXRlVGV4
dHVyZXMoc3RhdGljX2Nhc3Q8R0xzaXplaT4obVRleHR1cmVzLnNpemUoKSksIG1UZXh0dXJlcy5k
YXRhKCkpOworICAgICAgICAgICAgbVRleHR1cmVzLmNsZWFyKCk7CisgICAgICAgIH0KKworICAg
ICAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1SZW5kZXJidWZmZXIpOworCisgICAgICAg
IEFOR0xFVGVzdDo6VGVhckRvd24oKTsKKyAgICB9CisKKyAgICBHTHVpbnQgbUZyYW1lYnVmZmVy
ICAgICAgICAgICA9IDA7CisgICAgR0x1aW50IG1SZW5kZXJidWZmZXIgICAgICAgICAgPSAwOwor
ICAgIHN0ZDo6dmVjdG9yPEdMdWludD4gbVRleHR1cmVzID0gezAsIDB9OworfTsKKworY2xhc3Mg
U3RhdGVDaGFuZ2VUZXN0RVMzIDogcHVibGljIFN0YXRlQ2hhbmdlVGVzdAoreworICBwcm90ZWN0
ZWQ6CisgICAgU3RhdGVDaGFuZ2VUZXN0RVMzKCkge30KK307CisKK30gIC8vIGFub255bW91cyBu
YW1lc3BhY2UKKworLy8gRW5zdXJlIHRoYXQgQ29weVRleEltYWdlMkQgc3luY3MgZnJhbWVidWZm
ZXIgY2hhbmdlcy4KK1RFU1RfUChTdGF0ZUNoYW5nZVRlc3QsIENvcHlUZXhJbWFnZTJEU3luYykK
K3sKKyAgICBpZiAoSXNBTUQoKSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRG
T1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFKQorICAgIHsKKyAgICAgICAgLy8gVE9ETyhnZW9m
ZmxhbmcpOiBGaXggb24gTGludXggQU1EIGRyaXZlcnMgKGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTI5
MSkKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVkIG9uIEFNRCBPcGVuR0wuIiA8
PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBnbEJpbmRGcmFtZWJ1
ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVyKTsKKworICAgIC8vIEluaXQgZmlyc3Qg
dGV4dHVyZSB0byByZWQKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJl
c1swXSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDE2LCAx
NiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7CisgICAgZ2xGcmFtZWJ1
ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RF
WFRVUkVfMkQsIG1UZXh0dXJlc1swXSwgMCk7CisgICAgZ2xDbGVhckNvbG9yKDEuMGYsIDAuMGYs
IDAuMGYsIDEuMGYpOworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgRVhQ
RUNUX1BJWEVMX0VRKDAsIDAsIDI1NSwgMCwgMCwgMjU1KTsKKworICAgIC8vIEluaXQgc2Vjb25k
IHRleHR1cmUgdG8gZ3JlZW4KKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0
dXJlc1sxXSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDE2
LCAxNiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7CisgICAgZ2xGcmFt
ZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdM
X1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sxXSwgMCk7CisgICAgZ2xDbGVhckNvbG9yKDAuMGYsIDEu
MGYsIDAuMGYsIDEuMGYpOworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAg
RVhQRUNUX1BJWEVMX0VRKDAsIDAsIDAsIDI1NSwgMCwgMjU1KTsKKworICAgIC8vIENvcHkgaW4g
dGhlIHJlZCB0ZXh0dXJlIHRvIHRoZSBncmVlbiBvbmUuCisgICAgLy8gQ29weVRleEltYWdlIHNo
b3VsZCBzeW5jIHRoZSBmcmFtZWJ1ZmZlciBhdHRhY2htZW50IGNoYW5nZS4KKyAgICBnbEZyYW1l
YnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xf
VEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdLCAwKTsKKyAgICBnbENvcHlUZXhJbWFnZTJEKEdMX1RF
WFRVUkVfMkQsIDAsIEdMX1JHQkEsIDAsIDAsIDE2LCAxNiwgMCk7CisgICAgZ2xGcmFtZWJ1ZmZl
clRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRV
UkVfMkQsIG1UZXh0dXJlc1sxXSwgMCk7CisgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDI1NSwg
MCwgMCwgMjU1KTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworfQorCisvLyBFbnN1cmUg
dGhhdCBDb3B5VGV4U3ViSW1hZ2UyRCBzeW5jcyBmcmFtZWJ1ZmZlciBjaGFuZ2VzLgorVEVTVF9Q
KFN0YXRlQ2hhbmdlVGVzdCwgQ29weVRleFN1YkltYWdlMkRTeW5jKQoreworICAgIGdsQmluZEZy
YW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZmZXIpOworCisgICAgLy8gSW5pdCBm
aXJzdCB0ZXh0dXJlIHRvIHJlZAorICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRl
eHR1cmVzWzBdKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwg
MTYsIDE2LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKKyAgICBnbEZy
YW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwg
R0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdLCAwKTsKKyAgICBnbENsZWFyQ29sb3IoMS4wZiwg
MC4wZiwgMC4wZiwgMS4wZik7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAg
ICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMjU1LCAwLCAwLCAyNTUpOworCisgICAgLy8gSW5pdCBz
ZWNvbmQgdGV4dHVyZSB0byBncmVlbgorICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwg
bVRleHR1cmVzWzFdKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdC
QSwgMTYsIDE2LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKKyAgICBn
bEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5U
MCwgR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzFdLCAwKTsKKyAgICBnbENsZWFyQ29sb3IoMC4w
ZiwgMS4wZiwgMC4wZiwgMS4wZik7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsK
KyAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMCwgMjU1LCAwLCAyNTUpOworCisgICAgLy8gQ29w
eSBpbiB0aGUgcmVkIHRleHR1cmUgdG8gdGhlIGdyZWVuIG9uZS4KKyAgICAvLyBDb3B5VGV4SW1h
Z2Ugc2hvdWxkIHN5bmMgdGhlIGZyYW1lYnVmZmVyIGF0dGFjaG1lbnQgY2hhbmdlLgorICAgIGds
RnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQw
LCBHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0sIDApOworICAgIGdsQ29weVRleFN1YkltYWdl
MkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwgMCwgMCwgMTYsIDE2KTsKKyAgICBnbEZyYW1lYnVm
ZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVY
VFVSRV8yRCwgbVRleHR1cmVzWzFdLCAwKTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMjU1
LCAwLCAwLCAyNTUpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFRlc3Qg
dGhhdCBGcmFtZWJ1ZmZlciBjb21wbGV0ZW5lc3MgY2FjaGluZyB3b3JrcyB3aGVuIGNvbG9yIGF0
dGFjaG1lbnRzIGNoYW5nZS4KK1RFU1RfUChTdGF0ZUNoYW5nZVRlc3QsIEZyYW1lYnVmZmVySW5j
b21wbGV0ZUNvbG9yQXR0YWNobWVudCkKK3sKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFN
RUJVRkZFUiwgbUZyYW1lYnVmZmVyKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQs
IG1UZXh0dXJlc1swXSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JH
QkEsIDE2LCAxNiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7CisgICAg
Z2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVO
VDAsIEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSwgMCk7CisgICAgRVhQRUNUX0dMRU5VTV9F
UShHTF9GUkFNRUJVRkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZS
QU1FQlVGRkVSKSk7CisKKyAgICAvLyBDaGFuZ2UgdGhlIHRleHR1cmUgYXQgY29sb3IgYXR0YWNo
bWVudCAwIHRvIGJlIG5vbi1jb2xvci1yZW5kZXJhYmxlLgorICAgIGdsVGV4SW1hZ2UyRChHTF9U
RVhUVVJFXzJELCAwLCBHTF9BTFBIQSwgMTYsIDE2LCAwLCBHTF9BTFBIQSwgR0xfVU5TSUdORURf
QllURSwgbnVsbHB0cik7CisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GUkFNRUJVRkZFUl9JTkNP
TVBMRVRFX0FUVEFDSE1FTlQsCisgICAgICAgICAgICAgICAgICAgICBnbENoZWNrRnJhbWVidWZm
ZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwor
fQorCisvLyBUZXN0IHRoYXQgY2FjaGluZyB3b3JrcyB3aGVuIGNvbG9yIGF0dGFjaG1lbnRzIGNo
YW5nZSB3aXRoIFRleFN0b3JhZ2UuCitURVNUX1AoU3RhdGVDaGFuZ2VUZXN0LCBGcmFtZWJ1ZmZl
ckluY29tcGxldGVXaXRoVGV4U3RvcmFnZSkKK3sKKyAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQo
IkdMX0VYVF90ZXh0dXJlX3N0b3JhZ2UiKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAi
VGVzdCBza2lwcGVkIGJlY2F1c2UgVGV4U3RvcmFnZTJERVhUIG5vdCBhdmFpbGFibGUuIiA8PCBz
dGQ6OmVuZGw7CisgICAgfQorCisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIs
IG1GcmFtZWJ1ZmZlcik7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVy
ZXNbMF0pOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxNiwg
MTYsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOworICAgIGdsRnJhbWVi
dWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9U
RVhUVVJFXzJELCBtVGV4dHVyZXNbMF0sIDApOworICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRlJB
TUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZF
UikpOworCisgICAgLy8gQ2hhbmdlIHRoZSB0ZXh0dXJlIGF0IGNvbG9yIGF0dGFjaG1lbnQgMCB0
byBiZSBub24tY29sb3ItcmVuZGVyYWJsZS4KKyAgICBnbFRleFN0b3JhZ2UyREVYVChHTF9URVhU
VVJFXzJELCAxLCBHTF9BTFBIQThfRVhULCAxNiwgMTYpOworICAgIEVYUEVDVF9HTEVOVU1fRVEo
R0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5ULAorICAgICAgICAgICAgICAgICAg
ICAgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7CisKKyAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKK30KKworLy8gVGVzdCB0aGF0IGNhY2hpbmcgd29ya3Mgd2hlbiBj
b2xvciBhdHRhY2htZW50cyBjaGFuZ2Ugd2l0aCBDb21wcmVzc2VkVGV4SW1hZ2UyRC4KK1RFU1Rf
UChTdGF0ZUNoYW5nZVRlc3RFUzMsIEZyYW1lYnVmZmVySW5jb21wbGV0ZVdpdGhDb21wcmVzc2Vk
VGV4KQoreworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZm
ZXIpOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdKTsKKyAg
ICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMTYsIDE2LCAwLCBHTF9S
R0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVy
ZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwg
bVRleHR1cmVzWzBdLCAwKTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NP
TVBMRVRFLCBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKKworICAg
IC8vIENoYW5nZSB0aGUgdGV4dHVyZSBhdCBjb2xvciBhdHRhY2htZW50IDAgdG8gYmUgbm9uLWNv
bG9yLXJlbmRlcmFibGUuCisgICAgZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJE
LCAwLCBHTF9DT01QUkVTU0VEX1JHQjhfRVRDMiwgMTYsIDE2LCAwLCA2NCwgbnVsbHB0cik7Cisg
ICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQs
CisgICAgICAgICAgICAgICAgICAgICBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVC
VUZGRVIpKTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworfQorCisvLyBUZXN0IHRoYXQg
Y2FjaGluZyB3b3JrcyB3aGVuIGNvbG9yIGF0dGFjaG1lbnRzIGFyZSBkZWxldGVkLgorVEVTVF9Q
KFN0YXRlQ2hhbmdlVGVzdEVTMywgRnJhbWVidWZmZXJJbmNvbXBsZXRlV2hlbkF0dGFjaG1lbnRE
ZWxldGVkKQoreworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRnJhbWVi
dWZmZXIpOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdKTsK
KyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMTYsIDE2LCAwLCBH
TF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4
dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8y
RCwgbVRleHR1cmVzWzBdLCAwKTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVS
X0NPTVBMRVRFLCBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKKwor
ICAgIC8vIERlbGV0ZSB0aGUgdGV4dHVyZSBhdCBjb2xvciBhdHRhY2htZW50IDAuCisgICAgZ2xE
ZWxldGVUZXh0dXJlcygxLCAmbVRleHR1cmVzWzBdKTsKKyAgICBtVGV4dHVyZXNbMF0gPSAwOwor
ICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FU
VEFDSE1FTlQsCisgICAgICAgICAgICAgICAgICAgICBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMo
R0xfRlJBTUVCVUZGRVIpKTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworfQorCisvLyBU
ZXN0IHRoYXQgRnJhbWVidWZmZXIgY29tcGxldGVuZXNzIGNhY2hpbmcgd29ya3Mgd2hlbiBkZXB0
aCBhdHRhY2htZW50cyBjaGFuZ2UuCitURVNUX1AoU3RhdGVDaGFuZ2VUZXN0LCBGcmFtZWJ1ZmZl
ckluY29tcGxldGVEZXB0aEF0dGFjaG1lbnQpCit7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xf
RlJBTUVCVUZGRVIsIG1GcmFtZWJ1ZmZlcik7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
XzJELCBtVGV4dHVyZXNbMF0pOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBH
TF9SR0JBLCAxNiwgMTYsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOwor
ICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFD
SE1FTlQwLCBHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0sIDApOworICAgIGdsQmluZFJlbmRl
cmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1SZW5kZXJidWZmZXIpOworICAgIGdsUmVuZGVyYnVm
ZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZGRVIsIEdMX0RFUFRIX0NPTVBPTkVOVDE2LCAxNiwgMTYp
OworICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0RFUFRI
X0FUVEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwgbVJlbmRlcmJ1ZmZlcik7CisgICAgRVhQRUNU
X0dMRU5VTV9FUShHTF9GUkFNRUJVRkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3Rh
dHVzKEdMX0ZSQU1FQlVGRkVSKSk7CisKKyAgICAvLyBDaGFuZ2UgdGhlIHRleHR1cmUgYXQgY29s
b3IgYXR0YWNobWVudCAwIHRvIGJlIG5vbi1kZXB0aC1yZW5kZXJhYmxlLgorICAgIGdsUmVuZGVy
YnVmZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZGRVIsIEdMX1JHQkE4LCAxNiwgMTYpOworICAgIEVY
UEVDVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5ULAorICAg
ICAgICAgICAgICAgICAgICAgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVS
KSk7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKK30KKworLy8gVGVzdCB0aGF0IEZyYW1l
YnVmZmVyIGNvbXBsZXRlbmVzcyBjYWNoaW5nIHdvcmtzIHdoZW4gc3RlbmNpbCBhdHRhY2htZW50
cyBjaGFuZ2UuCitURVNUX1AoU3RhdGVDaGFuZ2VUZXN0LCBGcmFtZWJ1ZmZlckluY29tcGxldGVT
dGVuY2lsQXR0YWNobWVudCkKK3sKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZF
UiwgbUZyYW1lYnVmZmVyKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0
dXJlc1swXSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDE2
LCAxNiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7CisgICAgZ2xGcmFt
ZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdM
X1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSwgMCk7CisgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdM
X1JFTkRFUkJVRkZFUiwgbVJlbmRlcmJ1ZmZlcik7CisgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdl
KEdMX1JFTkRFUkJVRkZFUiwgR0xfU1RFTkNJTF9JTkRFWDgsIDE2LCAxNik7CisgICAgZ2xGcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5U
LCBHTF9SRU5ERVJCVUZGRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUmVuZGVy
YnVmZmVyKTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFLCBn
bENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKKworICAgIC8vIENoYW5n
ZSB0aGUgdGV4dHVyZSBhdCB0aGUgc3RlbmNpbCBhdHRhY2htZW50IHRvIGJlIG5vbi1zdGVuY2ls
LXJlbmRlcmFibGUuCisgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwg
R0xfUkdCQTgsIDE2LCAxNik7CisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GUkFNRUJVRkZFUl9J
TkNPTVBMRVRFX0FUVEFDSE1FTlQsCisgICAgICAgICAgICAgICAgICAgICBnbENoZWNrRnJhbWVi
dWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigp
OworfQorCisvLyBUZXN0IHRoYXQgRnJhbWVidWZmZXIgY29tcGxldGVuZXNzIGNhY2hpbmcgd29y
a3Mgd2hlbiBkZXB0aC1zdGVuY2lsIGF0dGFjaG1lbnRzIGNoYW5nZS4KK1RFU1RfUChTdGF0ZUNo
YW5nZVRlc3QsIEZyYW1lYnVmZmVySW5jb21wbGV0ZURlcHRoU3RlbmNpbEF0dGFjaG1lbnQpCit7
CisgICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAmJiAhZXh0ZW5zaW9uRW5hYmxl
ZCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpCisgICAgeworICAgICAgICBzdGQ6OmNv
dXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIHBhY2tlZCBkZXB0aCtzdGVuY2lsIG5vdCBhdmFp
bGJsZS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChJ
c1dpbmRvd3MoKSAmJiBJc0ludGVsKCkgJiYgSXNPcGVuR0woKSkKKyAgICB7CisgICAgICAgIC8v
IFRPRE8oam1hZGlsbCk6IEludmVzdGlnYXRlIHRoZSBmYWlsdXJlIChodHRwczovL2FuZ2xlYnVn
LmNvbS8xMzg4KQorICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3QgZGlzYWJsZWQgb24gV2luZG93
cyBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVyKTsKKyAg
ICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7CisgICAgZ2xUZXhJ
bWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDE2LCAxNiwgMCwgR0xfUkdCQSwgR0xf
VU5TSUdORURfQllURSwgbnVsbHB0cik7CisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9G
UkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJl
c1swXSwgMCk7CisgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbVJlbmRl
cmJ1ZmZlcik7CisgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgR0xf
REVQVEgyNF9TVEVOQ0lMOCwgMTYsIDE2KTsKKyAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KEdMX0ZSQU1FQlVGRkVSLCBHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIEdMX1JFTkRFUkJV
RkZFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1SZW5kZXJidWZmZXIpOworICAg
IEVYUEVDVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hlY2tGcmFtZWJ1
ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOworCisgICAgLy8gQ2hhbmdlIHRoZSB0ZXh0dXJl
IHRoZSBkZXB0aC1zdGVuY2lsIGF0dGFjaG1lbnQgdG8gYmUgbm9uLWRlcHRoLXN0ZW5jaWwtcmVu
ZGVyYWJsZS4KKyAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBHTF9S
R0JBOCwgMTYsIDE2KTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0lOQ09N
UExFVEVfQVRUQUNITUVOVCwKKyAgICAgICAgICAgICAgICAgICAgIGdsQ2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9
CisKKy8vIEVuc3VyZSB0aGF0IENvcHlUZXhTdWJJbWFnZTNEIHN5bmNzIGZyYW1lYnVmZmVyIGNo
YW5nZXMuCitURVNUX1AoU3RhdGVDaGFuZ2VUZXN0RVMzLCBDb3B5VGV4U3ViSW1hZ2UzRFN5bmMp
Cit7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GcmFtZWJ1ZmZlcik7
CisKKyAgICAvLyBJbml0IGZpcnN0IHRleHR1cmUgdG8gcmVkCisgICAgZ2xCaW5kVGV4dHVyZShH
TF9URVhUVVJFXzNELCBtVGV4dHVyZXNbMF0pOworICAgIGdsVGV4SW1hZ2UzRChHTF9URVhUVVJF
XzNELCAwLCBHTF9SR0JBLCAxNiwgMTYsIDE2LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRF
LCBudWxscHRyKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdMX0ZSQU1FQlVGRkVS
LCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgbVRleHR1cmVzWzBdLCAwLCAwKTsKKyAgICBnbENsZWFy
Q29sb3IoMS4wZiwgMC4wZiwgMC4wZiwgMS4wZik7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZG
RVJfQklUKTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMjU1LCAwLCAwLCAyNTUpOworCisg
ICAgLy8gSW5pdCBzZWNvbmQgdGV4dHVyZSB0byBncmVlbgorICAgIGdsQmluZFRleHR1cmUoR0xf
VEVYVFVSRV8zRCwgbVRleHR1cmVzWzFdKTsKKyAgICBnbFRleEltYWdlM0QoR0xfVEVYVFVSRV8z
RCwgMCwgR0xfUkdCQSwgMTYsIDE2LCAxNiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwg
bnVsbHB0cik7CisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmVMYXllcihHTF9GUkFNRUJVRkZFUiwg
R0xfQ09MT1JfQVRUQUNITUVOVDAsIG1UZXh0dXJlc1sxXSwgMCwgMCk7CisgICAgZ2xDbGVhckNv
bG9yKDAuMGYsIDEuMGYsIDAuMGYsIDEuMGYpOworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVS
X0JJVCk7CisgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDAsIDI1NSwgMCwgMjU1KTsKKworICAg
IC8vIENvcHkgaW4gdGhlIHJlZCB0ZXh0dXJlIHRvIHRoZSBncmVlbiBvbmUuCisgICAgLy8gQ29w
eVRleEltYWdlIHNob3VsZCBzeW5jIHRoZSBmcmFtZWJ1ZmZlciBhdHRhY2htZW50IGNoYW5nZS4K
KyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9B
VFRBQ0hNRU5UMCwgbVRleHR1cmVzWzBdLCAwLCAwKTsKKyAgICBnbENvcHlUZXhTdWJJbWFnZTNE
KEdMX1RFWFRVUkVfM0QsIDAsIDAsIDAsIDAsIDAsIDAsIDE2LCAxNik7CisgICAgZ2xGcmFtZWJ1
ZmZlclRleHR1cmVMYXllcihHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIG1U
ZXh0dXJlc1sxXSwgMCwgMCk7CisgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDI1NSwgMCwgMCwg
MjU1KTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworfQorCisvLyBFbnN1cmUgdGhhdCBC
bGl0RnJhbWVidWZmZXIgc3luY3MgZnJhbWVidWZmZXIgY2hhbmdlcy4KK1RFU1RfUChTdGF0ZUNo
YW5nZVRlc3RFUzMsIEJsaXRGcmFtZWJ1ZmZlclN5bmMpCit7CisgICAgZ2xCaW5kRnJhbWVidWZm
ZXIoR0xfRlJBTUVCVUZGRVIsIG1GcmFtZWJ1ZmZlcik7CisKKyAgICAvLyBJbml0IGZpcnN0IHRl
eHR1cmUgdG8gcmVkCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNb
MF0pOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxNiwgMTYs
IDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOworICAgIGdsRnJhbWVidWZm
ZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhU
VVJFXzJELCBtVGV4dHVyZXNbMF0sIDApOworICAgIGdsQ2xlYXJDb2xvcigxLjBmLCAwLjBmLCAw
LjBmLCAxLjBmKTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAgIEVYUEVD
VF9QSVhFTF9FUSgwLCAwLCAyNTUsIDAsIDAsIDI1NSk7CisKKyAgICAvLyBJbml0IHNlY29uZCB0
ZXh0dXJlIHRvIGdyZWVuCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVy
ZXNbMV0pOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxNiwg
MTYsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOworICAgIGdsRnJhbWVi
dWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9U
RVhUVVJFXzJELCBtVGV4dHVyZXNbMV0sIDApOworICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAxLjBm
LCAwLjBmLCAxLjBmKTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAgIEVY
UEVDVF9QSVhFTF9FUSgwLCAwLCAwLCAyNTUsIDAsIDI1NSk7CisKKyAgICAvLyBDaGFuZ2UgdG8g
dGhlIHJlZCB0ZXh0dXJlcyBhbmQgYmxpdC4KKyAgICAvLyBCbGl0RnJhbWVidWZmZXIgc2hvdWxk
IHN5bmMgdGhlIGZyYW1lYnVmZmVyIGF0dGFjaG1lbnQgY2hhbmdlLgorICAgIGdsQmluZEZyYW1l
YnVmZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVIsIDApOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJl
MkQoR0xfUkVBRF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVf
MkQsIG1UZXh0dXJlc1swXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworICAgIGds
QmxpdEZyYW1lYnVmZmVyKDAsIDAsIDE2LCAxNiwgMCwgMCwgMTYsIDE2LCBHTF9DT0xPUl9CVUZG
RVJfQklULCBHTF9ORUFSRVNUKTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1F
QlVGRkVSLCAwKTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMjU1LCAwLCAwLCAyNTUpOwor
CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIEVuc3VyZSB0aGF0IFJlYWRCdWZm
ZXIgYW5kIERyYXdCdWZmZXJzIHN5bmMgZnJhbWVidWZmZXIgY2hhbmdlcy4KK1RFU1RfUChTdGF0
ZUNoYW5nZVRlc3RFUzMsIFJlYWRCdWZmZXJBbmREcmF3QnVmZmVyc1N5bmMpCit7CisgICAgZ2xC
aW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GcmFtZWJ1ZmZlcik7CisKKyAgICAvLyBJ
bml0aWFsaXplIHR3byBGQk8gYXR0YWNobWVudHMKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfMkQsIG1UZXh0dXJlc1swXSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAs
IEdMX1JHQkEsIDE2LCAxNiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7
CisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRU
QUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSwgMCk7CisgICAgZ2xCaW5kVGV4
dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMV0pOworICAgIGdsVGV4SW1hZ2UyRChHTF9U
RVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxNiwgMTYsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsIG51bGxwdHIpOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIs
IEdMX0NPTE9SX0FUVEFDSE1FTlQxLCBHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMV0sIDApOwor
CisgICAgLy8gQ2xlYXIgZmlyc3QgYXR0YWNobWVudCB0byByZWQKKyAgICBHTGVudW0gYnVmczFb
XSA9IHtHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfTk9ORX07CisgICAgZ2xEcmF3QnVmZmVycygy
LCBidWZzMSk7CisgICAgZ2xDbGVhckNvbG9yKDEuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOworICAg
IGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisKKyAgICAvLyBDbGVhciBzZWNvbmQgdGV4
dHVyZSB0byBncmVlbgorICAgIEdMZW51bSBidWZzMltdID0ge0dMX05PTkUsIEdMX0NPTE9SX0FU
VEFDSE1FTlQxfTsKKyAgICBnbERyYXdCdWZmZXJzKDIsIGJ1ZnMyKTsKKyAgICBnbENsZWFyQ29s
b3IoMC4wZiwgMS4wZiwgMC4wZiwgMS4wZik7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJf
QklUKTsKKworICAgIC8vIFZlcmlmeSBmaXJzdCBhdHRhY2htZW50IGlzIHJlZCBhbmQgc2Vjb25k
IGlzIGdyZWVuCisgICAgZ2xSZWFkQnVmZmVyKEdMX0NPTE9SX0FUVEFDSE1FTlQxKTsKKyAgICBF
WFBFQ1RfUElYRUxfRVEoMCwgMCwgMCwgMjU1LCAwLCAyNTUpOworCisgICAgZ2xSZWFkQnVmZmVy
KEdMX0NPTE9SX0FUVEFDSE1FTlQwKTsKKyAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMjU1LCAw
LCAwLCAyNTUpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFRlc3RzIGNh
bGxpbmcgaW52YWxpZGF0ZSBvbiBpbmNvbXBsZXRlIGZyYW1lYnVmZmVycyBhZnRlciBzd2l0Y2hp
bmcgYXR0YWNobWVudHMuCisvLyBBZGFwdGVkIHBhcnRpYWxseSBmcm9tIFdlYkdMIDIgdGVzdCAi
cmVuZGVyYnVmZmVycy9pbnZhbGlkYXRlLWZyYW1lYnVmZmVyIgorVEVTVF9QKFN0YXRlQ2hhbmdl
VGVzdEVTMywgSW5jb21wbGV0ZVJlbmRlcmJ1ZmZlckF0dGFjaG1lbnRJbnZhbGlkYXRlU3luYykK
K3sKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVyKTsK
KyAgICBnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtUmVuZGVyYnVmZmVyKTsK
KyAgICBHTGludCBzYW1wbGVzID0gMDsKKyAgICBnbEdldEludGVybmFsZm9ybWF0aXYoR0xfUkVO
REVSQlVGRkVSLCBHTF9SR0JBOCwgR0xfU0FNUExFUywgMSwgJnNhbXBsZXMpOworICAgIGdsRnJh
bWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQw
LCBHTF9SRU5ERVJCVUZGRVIsIG1SZW5kZXJidWZmZXIpOworICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOworCisgICAgLy8gaW52YWxpZGF0ZSB0aGUgZnJhbWVidWZmZXIgd2hlbiB0aGUgYXR0YWNo
bWVudCBpcyBpbmNvbXBsZXRlOiBubyBzdG9yYWdlIGFsbG9jYXRlZCB0byB0aGUKKyAgICAvLyBh
dHRhY2hlZCByZW5kZXJidWZmZXIKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVS
X0lOQ09NUExFVEVfQVRUQUNITUVOVCwKKyAgICAgICAgICAgICAgICAgICAgIGdsQ2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOworICAgIEdMZW51bSBhdHRhY2htZW50czFb
XSA9IHtHTF9DT0xPUl9BVFRBQ0hNRU5UMH07CisgICAgZ2xJbnZhbGlkYXRlRnJhbWVidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIDEsIGF0dGFjaG1lbnRzMSk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7CisKKyAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHTF9SRU5ERVJCVUZG
RVIsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHNhbXBsZXMpLCBHTF9SR0JBOCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWln
aHQoKSk7CisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GUkFNRUJVRkZFUl9DT01QTEVURSwgZ2xD
aGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7CisgICAgZ2xDbGVhcihHTF9D
T0xPUl9CVUZGRVJfQklUKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIEdMUmVu
ZGVyYnVmZmVyIHJlbmRlcmJ1ZjsKKworICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJC
VUZGRVIsIHJlbmRlcmJ1Zi5nZXQoKSk7CisgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihH
TF9GUkFNRUJVRkZFUiwgR0xfREVQVEhfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyYnVmLmdldCgpKTsKKyAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKKworICAgIC8vIGludmFsaWRhdGUgdGhlIGZyYW1lYnVmZmVyIHdoZW4g
dGhlIGF0dGFjaG1lbnQgaXMgaW5jb21wbGV0ZTogbm8gc3RvcmFnZSBhbGxvY2F0ZWQgdG8gdGhl
CisgICAgLy8gYXR0YWNoZWQgcmVuZGVyYnVmZmVyCisgICAgLy8gTm90ZTogdGhlIGJ1ZyB3aWxs
IG9ubHkgcmVwcm8gKndpdGhvdXQqIGEgY2FsbCB0byBjaGVja1N0YXR1cyBiZWZvcmUgdGhlIGlu
dmFsaWRhdGUuCisgICAgR0xlbnVtIGF0dGFjaG1lbnRzMltdID0ge0dMX0RFUFRIX0FUVEFDSE1F
TlR9OworICAgIGdsSW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAxLCBhdHRh
Y2htZW50czIpOworCisgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0xfUkVO
REVSQlVGRkVSLCBzdGF0aWNfY2FzdDxHTHNpemVpPihzYW1wbGVzKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9ERVBUSF9DT01QT05FTlQxNiwgZ2V0V2luZG93V2lk
dGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOworICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRlJBTUVC
VUZGRVJfQ09NUExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikp
OworICAgIGdsQ2xlYXIoR0xfREVQVEhfQlVGRkVSX0JJVCk7CisgICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7Cit9CisKK2NsYXNzIFN0YXRlQ2hhbmdlUmVuZGVyVGVzdCA6IHB1YmxpYyBTdGF0ZUNo
YW5nZVRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIFN0YXRlQ2hhbmdlUmVuZGVyVGVzdCgpIDog
bVByb2dyYW0oMCksIG1SZW5kZXJidWZmZXIoMCkge30KKworICAgIHZvaWQgU2V0VXAoKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgU3RhdGVDaGFuZ2VUZXN0OjpTZXRVcCgpOworCisgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9CisgICAgICAgICAgICAiYXR0
cmlidXRlIHZlYzIgcG9zaXRpb247XG4iCisgICAgICAgICAgICAidm9pZCBtYWluKCkge1xuIgor
ICAgICAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAsIDEpO1xuIgor
ICAgICAgICAgICAgIn0iOworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRl
clNvdXJjZSA9CisgICAgICAgICAgICAidW5pZm9ybSBoaWdocCB2ZWM0IHVuaWZvcm1Db2xvcjtc
biIKKyAgICAgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICAgICAiICAgIGdsX0Zy
YWdDb2xvciA9IHVuaWZvcm1Db2xvcjtcbiIKKyAgICAgICAgICAgICJ9IjsKKworICAgICAgICBt
UHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFk
ZXJTb3VyY2UpOworICAgICAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsKKworICAgICAgICBn
bEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1SZW5kZXJidWZmZXIpOworICAgIH0KKworICAgIHZvaWQg
VGVhckRvd24oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9n
cmFtKTsKKyAgICAgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZtUmVuZGVyYnVmZmVyKTsK
KworICAgICAgICBTdGF0ZUNoYW5nZVRlc3Q6OlRlYXJEb3duKCk7CisgICAgfQorCisgICAgdm9p
ZCBzZXRVbmlmb3JtQ29sb3IoY29uc3QgR0xDb2xvciAmY29sb3IpCisgICAgeworICAgICAgICBn
bFVzZVByb2dyYW0obVByb2dyYW0pOworICAgICAgICBjb25zdCBWZWN0b3I0ICZub3JtYWxpemVk
Q29sb3IgPSBjb2xvci50b05vcm1hbGl6ZWRWZWN0b3IoKTsKKyAgICAgICAgR0xpbnQgdW5pZm9y
bUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ1bmlmb3JtQ29sb3Ii
KTsKKyAgICAgICAgQVNTRVJUX05FKC0xLCB1bmlmb3JtTG9jYXRpb24pOworICAgICAgICBnbFVu
aWZvcm00ZnYodW5pZm9ybUxvY2F0aW9uLCAxLCBub3JtYWxpemVkQ29sb3IuZGF0YSgpKTsKKyAg
ICB9CisKKyAgICBHTHVpbnQgbVByb2dyYW07CisgICAgR0x1aW50IG1SZW5kZXJidWZmZXI7Cit9
OworCisvLyBUZXN0IHRoYXQgcmUtY3JlYXRpbmcgYSBjdXJyZW50bHkgYXR0YWNoZWQgdGV4dHVy
ZSB3b3JrcyBhcyBleHBlY3RlZC4KK1RFU1RfUChTdGF0ZUNoYW5nZVJlbmRlclRlc3QsIFJlY3Jl
YXRlVGV4dHVyZSkKK3sKKyAgICBpZiAoSXNJbnRlbCgpICYmIElzTGludXgoKSkKKyAgICB7Cisg
ICAgICAgIC8vIFRPRE8oY3dhbGxleik6IEZpeCBvbiBMaW51eCBJbnRlbCBkcml2ZXJzIChodHRw
Oi8vYW5nbGVidWcuY29tLzEzNDYpCisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxl
ZCBvbiBMaW51eCBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVm
ZmVyKTsKKworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdKTsK
KyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMTYsIDE2LCAwLCBH
TF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4
dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8y
RCwgbVRleHR1cmVzWzBdLCAwKTsKKworICAgIC8vIERyYXcgd2l0aCByZWQgdG8gdGhlIEZCTy4K
KyAgICBHTENvbG9yIHJlZCgyNTUsIDAsIDAsIDI1NSk7CisgICAgc2V0VW5pZm9ybUNvbG9yKHJl
ZCk7CisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworICAgIEVYUEVD
VF9QSVhFTF9DT0xPUl9FUSgwLCAwLCByZWQpOworCisgICAgLy8gUmVjcmVhdGUgdGhlIHRleHR1
cmUgd2l0aCBncmVlbi4KKyAgICBHTENvbG9yIGdyZWVuKDAsIDI1NSwgMCwgMjU1KTsKKyAgICBz
dGQ6OnZlY3RvcjxHTENvbG9yPiBncmVlblBpeGVscygzMiAqIDMyLCBncmVlbik7CisgICAgZ2xU
ZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDMyLCAzMiwgMCwgR0xfUkdCQSwg
R0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAgZ3JlZW5QaXhlbHMuZGF0YSgpKTsK
KyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgZ3JlZW4pOworCisgICAgLy8gVmVyaWZ5
IGRyYXdpbmcgYmx1ZSBnaXZlcyBibHVlLiBUaGlzIGNvdmVycyB0aGUgRkJPIHN5bmMgd2l0aCBE
M0QgZGlydHkgYml0cy4KKyAgICBHTENvbG9yIGJsdWUoMCwgMCwgMjU1LCAyNTUpOworICAgIHNl
dFVuaWZvcm1Db2xvcihibHVlKTsKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwg
MC41Zik7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIGJsdWUpOworCisgICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFRlc3QgdGhhdCByZS1jcmVhdGluZyBhIGN1cnJl
bnRseSBhdHRhY2hlZCByZW5kZXJidWZmZXIgd29ya3MgYXMgZXhwZWN0ZWQuCitURVNUX1AoU3Rh
dGVDaGFuZ2VSZW5kZXJUZXN0LCBSZWNyZWF0ZVJlbmRlcmJ1ZmZlcikKK3sKKyAgICBnbEJpbmRG
cmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVyKTsKKworICAgIGdsQmluZFJl
bmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1SZW5kZXJidWZmZXIpOworICAgIGdsUmVuZGVy
YnVmZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZGRVIsIEdMX1JHQkE4LCAxNiwgMTYpOworICAgIGds
RnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1F
TlQwLCBHTF9SRU5ERVJCVUZGRVIsIG1SZW5kZXJidWZmZXIpOworCisgICAgLy8gRHJhdyB3aXRo
IHJlZCB0byB0aGUgRkJPLgorICAgIEdMQ29sb3IgcmVkKDI1NSwgMCwgMCwgMjU1KTsKKyAgICBz
ZXRVbmlmb3JtQ29sb3IocmVkKTsKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwg
MC41Zik7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIHJlZCk7CisKKyAgICAvLyBS
ZWNyZWF0ZSB0aGUgcmVuZGVyYnVmZmVyIGFuZCBjbGVhciB0byBncmVlbi4KKyAgICBnbFJlbmRl
cmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBHTF9SR0JBOCwgMzIsIDMyKTsKKyAgICBn
bENsZWFyQ29sb3IoMC4wZiwgMS4wZiwgMC4wZiwgMS4wZik7CisgICAgZ2xDbGVhcihHTF9DT0xP
Ul9CVUZGRVJfQklUKTsKKyAgICBHTENvbG9yIGdyZWVuKDAsIDI1NSwgMCwgMjU1KTsKKyAgICBF
WFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgZ3JlZW4pOworCisgICAgLy8gVmVyaWZ5IGRyYXdp
bmcgYmx1ZSBnaXZlcyBibHVlLiBUaGlzIGNvdmVycyB0aGUgRkJPIHN5bmMgd2l0aCBEM0QgZGly
dHkgYml0cy4KKyAgICBHTENvbG9yIGJsdWUoMCwgMCwgMjU1LCAyNTUpOworICAgIHNldFVuaWZv
cm1Db2xvcihibHVlKTsKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7
CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIGJsdWUpOworCisgICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7Cit9CisKKy8vIFRlc3QgdGhhdCByZWNyZWF0aW5nIGEgdGV4dHVyZSB3aXRo
IEdlbmVyYXRlTWlwbWFwcyBzaWduYWxzIHRoZSBGQk8gaXMgZGlydHkuCitURVNUX1AoU3RhdGVD
aGFuZ2VSZW5kZXJUZXN0LCBHZW5lcmF0ZU1pcG1hcCkKK3sKKyAgICBnbEJpbmRGcmFtZWJ1ZmZl
cihHTF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVyKTsKKworICAgIGdsQmluZFRleHR1cmUoR0xf
VEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8y
RCwgMCwgR0xfUkdCQSwgMTYsIDE2LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxs
cHRyKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdCQSwgOCwgOCwg
MCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7CisgICAgZ2xUZXhJbWFnZTJE
KEdMX1RFWFRVUkVfMkQsIDIsIEdMX1JHQkEsIDQsIDQsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVE
X0JZVEUsIG51bGxwdHIpOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZG
RVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0sIDAp
OworCisgICAgLy8gRHJhdyBvbmNlIHRvIHNldCB0aGUgUmVuZGVyVGFyZ2V0IGluIEQzRDExCisg
ICAgR0xDb2xvciByZWQoMjU1LCAwLCAwLCAyNTUpOworICAgIHNldFVuaWZvcm1Db2xvcihyZWQp
OworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICBFWFBFQ1Rf
UElYRUxfQ09MT1JfRVEoMCwgMCwgcmVkKTsKKworICAgIC8vIFRoaXMgd2lsbCB0cmlnZ2VyIHRo
ZSB0ZXh0dXJlIHRvIGJlIHJlLWNyZWF0ZWQgb24gRkw5XzMuCisgICAgZ2xHZW5lcmF0ZU1pcG1h
cChHTF9URVhUVVJFXzJEKTsKKworICAgIC8vIE5vdyBlbnN1cmUgd2UgZG9uJ3QgaGF2ZSBhIHN0
YWxlIHJlbmRlciB0YXJnZXQuCisgICAgR0xDb2xvciBibHVlKDAsIDAsIDI1NSwgMjU1KTsKKyAg
ICBzZXRVbmlmb3JtQ29sb3IoYmx1ZSk7CisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlv
biIsIDAuNWYpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBibHVlKTsKKworICAg
IEVYUEVDVF9HTF9OT19FUlJPUigpOworfQorCitBTkdMRV9JTlNUQU5USUFURV9URVNUKFN0YXRl
Q2hhbmdlVGVzdCwgRVMyX0QzRDkoKSwgRVMyX0QzRDExKCksIEVTMl9PUEVOR0woKSk7CitBTkdM
RV9JTlNUQU5USUFURV9URVNUKFN0YXRlQ2hhbmdlUmVuZGVyVGVzdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgRVMyX0QzRDkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCks
CisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgRVMyX0QzRDExX0ZMOV8zKCkpOworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChTdGF0ZUNo
YW5nZVRlc3RFUzMsIEVTM19EM0QxMSgpLCBFUzNfT1BFTkdMKCkpOwpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1N3aXp6bGVUZXN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvU3dpenps
ZVRlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9nbF90ZXN0cy9Td2l6emxlVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0
NDEgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKy8vCisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorCisj
aW5jbHVkZSA8dmVjdG9yPgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKK25hbWVzcGFjZQor
eworCitjbGFzcyBTd2l6emxlVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJvdGVjdGVk
OgorICAgIFN3aXp6bGVUZXN0KCkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7
CisgICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOworICAgICAgICBzZXRDb25maWdSZWRCaXRz
KDgpOworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0Js
dWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisKKyAgICAgICAgR0xl
bnVtIHN3aXp6bGVzW10gPQorICAgICAgICB7CisgICAgICAgICAgICBHTF9SRUQsCisgICAgICAg
ICAgICBHTF9HUkVFTiwKKyAgICAgICAgICAgIEdMX0JMVUUsCisgICAgICAgICAgICBHTF9BTFBI
QSwKKyAgICAgICAgICAgIEdMX1pFUk8sCisgICAgICAgICAgICBHTF9PTkUsCisgICAgICAgIH07
CisKKyAgICAgICAgZm9yIChpbnQgciA9IDA7IHIgPCA2OyByKyspCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGZvciAoaW50IGcgPSAwOyBnIDwgNjsgZysrKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGZvciAoaW50IGIgPSAwOyBiIDwgNjsgYisrKQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgYSA9IDA7IGEgPCA2OyBhKyspCisgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN3aXp6bGVQZXJtdXRhdGlv
biBwZXJtdXRhdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBlcm11dGF0aW9uLnN3aXp6
bGVSZWQgPSBzd2l6emxlc1tyXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBlcm11dGF0aW9u
LnN3aXp6bGVHcmVlbiA9IHN3aXp6bGVzW2ddOworICAgICAgICAgICAgICAgICAgICAgICAgcGVy
bXV0YXRpb24uc3dpenpsZUJsdWUgPSBzd2l6emxlc1tiXTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHBlcm11dGF0aW9uLnN3aXp6bGVBbHBoYSA9IHN3aXp6bGVzW2FdOworICAgICAgICAgICAg
ICAgICAgICAgICAgbVBlcm11dGF0aW9ucy5wdXNoX2JhY2socGVybXV0YXRpb24pOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBB
TkdMRVRlc3Q6OlNldFVwKCk7CisKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hh
ZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQorICAgICAgICAoCisgICAgICAgICAgICBwcmVjaXNp
b24gaGlnaHAgZmxvYXQ7CisgICAgICAgICAgICBhdHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjsKKyAg
ICAgICAgICAgIHZhcnlpbmcgdmVjMiB0ZXhjb29yZDsKKworICAgICAgICAgICAgdm9pZCBtYWlu
KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9u
OworICAgICAgICAgICAgICAgIHRleGNvb3JkID0gKHBvc2l0aW9uLnh5ICogMC41KSArIDAuNTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBm
cmFnbWVudFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKAorICAgICAgICAg
ICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworICAgICAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQg
dGV4OworICAgICAgICAgICAgdmFyeWluZyB2ZWMyIHRleGNvb3JkOworCisgICAgICAgICAgICB2
b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9
IHRleHR1cmUyRCh0ZXgsIHRleGNvb3JkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKwor
ICAgICAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJh
Z21lbnRTaGFkZXJTb3VyY2UpOworICAgICAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsKKwor
ICAgICAgICBtVGV4dHVyZVVuaWZvcm1Mb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Q
cm9ncmFtLCAidGV4Iik7CisgICAgICAgIEFTU0VSVF9ORSgtMSwgbVRleHR1cmVVbmlmb3JtTG9j
YXRpb24pOworCisgICAgICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsK
KyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93
bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOwor
ICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtVGV4dHVyZSk7CisKKyAgICAgICAgQU5HTEVU
ZXN0OjpUZWFyRG93bigpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAg
IHZvaWQgaW5pdDJEVGV4dHVyZShHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdMZW51bSBkYXRhRm9y
bWF0LCBHTGVudW0gZGF0YVR5cGUsIGNvbnN0IFQqIGRhdGEpCisgICAgeworICAgICAgICBnbEdl
blRleHR1cmVzKDEsICZtVGV4dHVyZSk7CisgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVS
RV8yRCwgbVRleHR1cmUpOworICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwg
aW50ZXJuYWxGb3JtYXQsIDEsIDEsIDAsIGRhdGFGb3JtYXQsIGRhdGFUeXBlLCBkYXRhKTsKKwor
ICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklM
VEVSLCBHTF9ORUFSRVNUKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgfQorCisgICAgdm9pZCBp
bml0MkRDb21wcmVzc2VkVGV4dHVyZShHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRhdGFTaXplLCBjb25zdCBHTHVieXRlKiBkYXRh
KQorICAgIHsKKyAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbVRleHR1cmUpOworICAgICAgICBn
bEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlKTsKKyAgICAgICAgZ2xDb21wcmVz
c2VkVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19E
WFQxX0VYVCwgd2lkdGgsIGhlaWdodCwgMCwgZGF0YVNpemUsIGRhdGEpOworCisgICAgICAgIGds
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05F
QVJFU1QpOworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICB9CisKKyAgICBHTHVieXRlIGdldEV4cGVj
dGVkVmFsdWUoR0xlbnVtIHN3aXp6bGUsIEdMdWJ5dGUgdW5zd2l6emxlZFs0XSkKKyAgICB7Cisg
ICAgICAgIHN3aXRjaCAoc3dpenpsZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfUkVE
OiAgIHJldHVybiB1bnN3aXp6bGVkWzBdOworICAgICAgICAgIGNhc2UgR0xfR1JFRU46IHJldHVy
biB1bnN3aXp6bGVkWzFdOworICAgICAgICAgIGNhc2UgR0xfQkxVRTogIHJldHVybiB1bnN3aXp6
bGVkWzJdOworICAgICAgICAgIGNhc2UgR0xfQUxQSEE6IHJldHVybiB1bnN3aXp6bGVkWzNdOwor
ICAgICAgICAgIGNhc2UgR0xfWkVSTzogIHJldHVybiAwOworICAgICAgICAgIGNhc2UgR0xfT05F
OiAgIHJldHVybiAyNTU7CisgICAgICAgICAgZGVmYXVsdDogICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHJ1blRlc3QyRCgpCisgICAgeworICAgICAgICAvLyBU
T0RPKGptYWRpbGwpOiBGaWd1cmUgb3V0IHdoeSB0aGlzIGZhaWxzIG9uIEludGVsLgorICAgICAg
ICBpZiAoSXNJbnRlbCgpICYmIEdldFBhcmFtKCkuZ2V0UmVuZGVyZXIoKSA9PSBFR0xfUExBVEZP
Uk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0ZDo6
Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsLiIgPDwgc3RkOjplbmRsOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsK
KyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZSk7CisgICAgICAg
IGdsVW5pZm9ybTFpKG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9uLCAwKTsKKworICAgICAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9TV0laWkxFX1IsIEdMX1JFRCk7
CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1NXSVpa
TEVfRywgR0xfR1JFRU4pOworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9TV0laWkxFX0IsIEdMX0JMVUUpOworICAgICAgICBnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9TV0laWkxFX0EsIEdMX0FMUEhBKTsKKworICAgICAg
ICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAgICAgICBkcmF3UXVhZChtUHJvZ3Jh
bSwgInBvc2l0aW9uIiwgMC41Zik7CisKKyAgICAgICAgR0x1Ynl0ZSB1bnN3aXp6bGVkWzRdOwor
ICAgICAgICBnbFJlYWRQaXhlbHMoMCwgMCwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllU
RSwgJnVuc3dpenpsZWQpOworCisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVBlcm11dGF0aW9ucy5zaXplKCk7IGkrKykKKyAg
ICAgICAgeworICAgICAgICAgICAgY29uc3Qgc3dpenpsZVBlcm11dGF0aW9uJiBwZXJtdXRhdGlv
biA9IG1QZXJtdXRhdGlvbnNbaV07CisKKyAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFXzJELCBHTF9URVhUVVJFX1NXSVpaTEVfUiwgcGVybXV0YXRpb24uc3dpenpsZVJlZCk7
CisgICAgICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9T
V0laWkxFX0csIHBlcm11dGF0aW9uLnN3aXp6bGVHcmVlbik7CisgICAgICAgICAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9TV0laWkxFX0IsIHBlcm11dGF0aW9u
LnN3aXp6bGVCbHVlKTsKKyAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX1NXSVpaTEVfQSwgcGVybXV0YXRpb24uc3dpenpsZUFscGhhKTsKKworICAg
ICAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICAgICAgICAgIGRyYXdR
dWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgICAgICAgICAgRVhQRUNUX1BJ
WEVMX0VRKDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RXhwZWN0ZWRWYWx1
ZShwZXJtdXRhdGlvbi5zd2l6emxlUmVkLCB1bnN3aXp6bGVkKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnZXRFeHBlY3RlZFZhbHVlKHBlcm11dGF0aW9uLnN3aXp6bGVHcmVlbiwgdW5z
d2l6emxlZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RXhwZWN0ZWRWYWx1ZShw
ZXJtdXRhdGlvbi5zd2l6emxlQmx1ZSwgdW5zd2l6emxlZCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2V0RXhwZWN0ZWRWYWx1ZShwZXJtdXRhdGlvbi5zd2l6emxlQWxwaGEsIHVuc3dp
enpsZWQpKTsKKworICAgICAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBHTHVpbnQgbVByb2dyYW07CisgICAgR0xpbnQgbVRleHR1cmVVbmlmb3Jt
TG9jYXRpb247CisKKyAgICBHTHVpbnQgbVRleHR1cmU7CisKKyAgICBzdHJ1Y3Qgc3dpenpsZVBl
cm11dGF0aW9uCisgICAgeworICAgICAgICBHTGVudW0gc3dpenpsZVJlZDsKKyAgICAgICAgR0xl
bnVtIHN3aXp6bGVHcmVlbjsKKyAgICAgICAgR0xlbnVtIHN3aXp6bGVCbHVlOworICAgICAgICBH
TGVudW0gc3dpenpsZUFscGhhOworICAgIH07CisgICAgc3RkOjp2ZWN0b3I8c3dpenpsZVBlcm11
dGF0aW9uPiBtUGVybXV0YXRpb25zOworfTsKKworY2xhc3MgU3dpenpsZUludGVnZXJUZXN0IDog
cHVibGljIFN3aXp6bGVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICB2b2lkIFNldFVwKCkgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKKworICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQorICAgICAgICAgICAgIiN2ZXJzaW9u
IDMwMCBlc1xuIgorICAgICAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKKyAgICAg
ICAgICAgICJpbiB2ZWM0IHBvc2l0aW9uO1xuIgorICAgICAgICAgICAgIm91dCB2ZWMyIHRleGNv
b3JkO1xuIgorICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCisg
ICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9u
O1xuIgorICAgICAgICAgICAgIiAgICB0ZXhjb29yZCA9IChwb3NpdGlvbi54eSAqIDAuNSkgKyAw
LjU7XG4iCisgICAgICAgICAgICAifVxuIjsKKworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBm
cmFnbWVudFNoYWRlclNvdXJjZSA9CisgICAgICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisg
ICAgICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgorICAgICAgICAgICAgInByZWNp
c2lvbiBoaWdocCB1c2FtcGxlcjJEO1xuIgorICAgICAgICAgICAgInVuaWZvcm0gdXNhbXBsZXIy
RCB0ZXg7XG4iCisgICAgICAgICAgICAiaW4gdmVjMiB0ZXhjb29yZDtcbiIKKyAgICAgICAgICAg
ICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCisgICAgICAgICAgICAiXG4iCisgICAgICAgICAg
ICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAiICAgIHV2
ZWM0IHMgPSB0ZXh0dXJlKHRleCwgdGV4Y29vcmQpO1xuIgorICAgICAgICAgICAgIiAgICBpZiAo
c1swXSA9PSAxdSkgc1swXSA9IDI1NXU7XG4iCisgICAgICAgICAgICAiICAgIGlmIChzWzFdID09
IDF1KSBzWzFdID0gMjU1dTtcbiIKKyAgICAgICAgICAgICIgICAgaWYgKHNbMl0gPT0gMXUpIHNb
Ml0gPSAyNTV1O1xuIgorICAgICAgICAgICAgIiAgICBpZiAoc1szXSA9PSAxdSkgc1szXSA9IDI1
NXU7XG4iCisgICAgICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQocykgLyAyNTUuMDtc
biIKKyAgICAgICAgICAgICJ9XG4iOworCisgICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dy
YW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgICAgIEFT
U0VSVF9ORSgwdSwgbVByb2dyYW0pOworCisgICAgICAgIG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9u
ID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ0ZXgiKTsKKyAgICAgICAgQVNTRVJU
X05FKC0xLCBtVGV4dHVyZVVuaWZvcm1Mb2NhdGlvbik7CisKKyAgICAgICAgZ2xDbGVhckNvbG9y
KDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYpOworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
KyAgICB9Cit9OworCitURVNUX1AoU3dpenpsZVRlc3QsIFJHQkE4XzJEKQoreworICAgIEdMdWJ5
dGUgZGF0YVtdID0geyAxLCA2NCwgMTI4LCAyMDAgfTsKKyAgICBpbml0MkRUZXh0dXJlKEdMX1JH
QkE4LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBkYXRhKTsKKyAgICBydW5UZXN0MkQoKTsK
K30KKworVEVTVF9QKFN3aXp6bGVUZXN0LCBSR0I4XzJEKQoreworICAgIEdMdWJ5dGUgZGF0YVtd
ID0geyA3NywgNjYsIDU1IH07CisgICAgaW5pdDJEVGV4dHVyZShHTF9SR0I4LCBHTF9SR0IsIEdM
X1VOU0lHTkVEX0JZVEUsIGRhdGEpOworICAgIHJ1blRlc3QyRCgpOworfQorCitURVNUX1AoU3dp
enpsZVRlc3QsIFJHOF8yRCkKK3sKKyAgICBHTHVieXRlIGRhdGFbXSA9IHsgMTEsIDk5IH07Cisg
ICAgaW5pdDJEVGV4dHVyZShHTF9SRzgsIEdMX1JHLCBHTF9VTlNJR05FRF9CWVRFLCBkYXRhKTsK
KyAgICBydW5UZXN0MkQoKTsKK30KKworVEVTVF9QKFN3aXp6bGVUZXN0LCBSOF8yRCkKK3sKKyAg
ICBHTHVieXRlIGRhdGFbXSA9IHsgMiB9OworICAgIGluaXQyRFRleHR1cmUoR0xfUjgsIEdMX1JF
RCwgR0xfVU5TSUdORURfQllURSwgZGF0YSk7CisgICAgcnVuVGVzdDJEKCk7Cit9CisKK1RFU1Rf
UChTd2l6emxlVGVzdCwgUkdCMTBfQTJfMkQpCit7CisgICAgR0x1aW50IGRhdGFbXSA9IHsyMHUg
fCAoNDB1IDw8IDEwKSB8ICg2MHUgPDwgMjApIHwgKDJ1IDw8IDMwKX07CisgICAgaW5pdDJEVGV4
dHVyZShHTF9SR0IxMF9BMiwgR0xfUkdCQSwgR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVW
LCBkYXRhKTsKKyAgICBydW5UZXN0MkQoKTsKK30KKworVEVTVF9QKFN3aXp6bGVUZXN0LCBSR0JB
MzJGXzJEKQoreworICAgIEdMZmxvYXQgZGF0YVtdID0geyAwLjI1ZiwgMC41ZiwgMC43NWYsIDAu
OGYgfTsKKyAgICBpbml0MkRUZXh0dXJlKEdMX1JHQkEzMkYsIEdMX1JHQkEsIEdMX0ZMT0FULCBk
YXRhKTsKKyAgICBydW5UZXN0MkQoKTsKK30KKworVEVTVF9QKFN3aXp6bGVUZXN0LCBSR0IzMkZf
MkQpCit7CisgICAgR0xmbG9hdCBkYXRhW10gPSB7IDAuMWYsIDAuMmYsIDAuM2YgfTsKKyAgICBp
bml0MkRUZXh0dXJlKEdMX1JHQjMyRiwgR0xfUkdCLCBHTF9GTE9BVCwgZGF0YSk7CisgICAgcnVu
VGVzdDJEKCk7Cit9CisKK1RFU1RfUChTd2l6emxlVGVzdCwgUkczMkZfMkQpCit7CisgICAgR0xm
bG9hdCBkYXRhW10gPSB7IDAuOWYsIDAuMWYgIH07CisgICAgaW5pdDJEVGV4dHVyZShHTF9SRzMy
RiwgR0xfUkcsIEdMX0ZMT0FULCBkYXRhKTsKKyAgICBydW5UZXN0MkQoKTsKK30KKworVEVTVF9Q
KFN3aXp6bGVUZXN0LCBSMzJGXzJEKQoreworICAgIEdMZmxvYXQgZGF0YVtdID0geyAwLjVmIH07
CisgICAgaW5pdDJEVGV4dHVyZShHTF9SMzJGLCBHTF9SRUQsIEdMX0ZMT0FULCBkYXRhKTsKKyAg
ICBydW5UZXN0MkQoKTsKK30KKworVEVTVF9QKFN3aXp6bGVUZXN0LCBEMzJGXzJEKQoreworICAg
IEdMZmxvYXQgZGF0YVtdID0geyAwLjVmIH07CisgICAgaW5pdDJEVGV4dHVyZShHTF9ERVBUSF9D
T01QT05FTlQzMkYsIEdMX0RFUFRIX0NPTVBPTkVOVCwgR0xfRkxPQVQsIGRhdGEpOworICAgIHJ1
blRlc3QyRCgpOworfQorCitURVNUX1AoU3dpenpsZVRlc3QsIEQxNl8yRCkKK3sKKyAgICBHTHVz
aG9ydCBkYXRhW10gPSB7IDB4RkYgfTsKKyAgICBpbml0MkRUZXh0dXJlKEdMX0RFUFRIX0NPTVBP
TkVOVDE2LCBHTF9ERVBUSF9DT01QT05FTlQsIEdMX1VOU0lHTkVEX1NIT1JULCBkYXRhKTsKKyAg
ICBydW5UZXN0MkQoKTsKK30KKworVEVTVF9QKFN3aXp6bGVUZXN0LCBEMjRfMkQpCit7CisgICAg
R0x1aW50IGRhdGFbXSA9IHsgMHhGRkZGIH07CisgICAgaW5pdDJEVGV4dHVyZShHTF9ERVBUSF9D
T01QT05FTlQyNCwgR0xfREVQVEhfQ09NUE9ORU5ULCBHTF9VTlNJR05FRF9JTlQsIGRhdGEpOwor
ICAgIHJ1blRlc3QyRCgpOworfQorCitURVNUX1AoU3dpenpsZVRlc3QsIEw4XzJEKQoreworICAg
IEdMdWJ5dGUgZGF0YVtdID0gezB4Nzd9OworICAgIGluaXQyRFRleHR1cmUoR0xfTFVNSU5BTkNF
LCBHTF9MVU1JTkFOQ0UsIEdMX1VOU0lHTkVEX0JZVEUsIGRhdGEpOworICAgIHJ1blRlc3QyRCgp
OworfQorCitURVNUX1AoU3dpenpsZVRlc3QsIEE4XzJEKQoreworICAgIEdMdWJ5dGUgZGF0YVtd
ID0gezB4NTV9OworICAgIGluaXQyRFRleHR1cmUoR0xfQUxQSEEsIEdMX0FMUEhBLCBHTF9VTlNJ
R05FRF9CWVRFLCBkYXRhKTsKKyAgICBydW5UZXN0MkQoKTsKK30KKworVEVTVF9QKFN3aXp6bGVU
ZXN0LCBMQThfMkQpCit7CisgICAgR0x1Ynl0ZSBkYXRhW10gPSB7MHg3NywgMHg2Nn07CisgICAg
aW5pdDJEVGV4dHVyZShHTF9MVU1JTkFOQ0VfQUxQSEEsIEdMX0xVTUlOQU5DRV9BTFBIQSwgR0xf
VU5TSUdORURfQllURSwgZGF0YSk7CisgICAgcnVuVGVzdDJEKCk7Cit9CisKK1RFU1RfUChTd2l6
emxlVGVzdCwgTDMyRl8yRCkKK3sKKyAgICBHTGZsb2F0IGRhdGFbXSA9IHswLjdmfTsKKyAgICBp
bml0MkRUZXh0dXJlKEdMX0xVTUlOQU5DRSwgR0xfTFVNSU5BTkNFLCBHTF9GTE9BVCwgZGF0YSk7
CisgICAgcnVuVGVzdDJEKCk7Cit9CisKK1RFU1RfUChTd2l6emxlVGVzdCwgQTMyRl8yRCkKK3sK
KyAgICBHTGZsb2F0IGRhdGFbXSA9IHsKKyAgICAgICAgMC40ZiwKKyAgICB9OworICAgIGluaXQy
RFRleHR1cmUoR0xfQUxQSEEsIEdMX0FMUEhBLCBHTF9GTE9BVCwgZGF0YSk7CisgICAgcnVuVGVz
dDJEKCk7Cit9CisKK1RFU1RfUChTd2l6emxlVGVzdCwgTEEzMkZfMkQpCit7CisgICAgR0xmbG9h
dCBkYXRhW10gPSB7CisgICAgICAgIDAuNWYsIDAuNmYsCisgICAgfTsKKyAgICBpbml0MkRUZXh0
dXJlKEdMX0xVTUlOQU5DRV9BTFBIQSwgR0xfTFVNSU5BTkNFX0FMUEhBLCBHTF9GTE9BVCwgZGF0
YSk7CisgICAgcnVuVGVzdDJEKCk7Cit9CisKKyNpbmNsdWRlICJtZWRpYS9waXhlbC5pbmwiCisK
K1RFU1RfUChTd2l6emxlVGVzdCwgQ29tcHJlc3NlZERYVF8yRCkKK3sKKyAgICBpZiAoIWV4dGVu
c2lvbkVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKSkKKyAgICB7Cisg
ICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGR1ZSB0byBtaXNzaW5nIEdMX0VYVF90
ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpbml0MkRDb21wcmVzc2VkVGV4dHVyZShHTF9DT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQxX0VYVCwgcGl4ZWxfMF93aWR0aCwgcGl4ZWxfMF9oZWlnaHQsIHBpeGVsXzBfc2l6
ZSwgcGl4ZWxfMF9kYXRhKTsKKyAgICBydW5UZXN0MkQoKTsKK30KKworVEVTVF9QKFN3aXp6bGVJ
bnRlZ2VyVGVzdCwgUkdCOFVJXzJEKQoreworICAgIEdMdWJ5dGUgZGF0YVtdID0gezc3LCA2Niwg
NTV9OworICAgIGluaXQyRFRleHR1cmUoR0xfUkdCOFVJLCBHTF9SR0JfSU5URUdFUiwgR0xfVU5T
SUdORURfQllURSwgZGF0YSk7CisgICAgcnVuVGVzdDJEKCk7Cit9CisKKy8vIFRlc3QgdGhhdCB1
cGRhdGluZyB0aGUgdGV4dHVyZSBkYXRhIHN0aWxsIGdlbmVyYXRlcyB0aGUgY29ycmVjdCBzd2l6
emxlcworVEVTVF9QKFN3aXp6bGVUZXN0LCBTdWJVcGRhdGUpCit7CisgICAgR0xDb2xvciBkYXRh
KDEsIDY0LCAxMjgsIDIwMCk7CisgICAgaW5pdDJEVGV4dHVyZShHTF9SR0JBOCwgR0xfUkdCQSwg
R0xfVU5TSUdORURfQllURSwgJmRhdGEpOworCisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsK
KyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlKTsKKyAgICBnbFVuaWZv
cm0xaShtVGV4dHVyZVVuaWZvcm1Mb2NhdGlvbiwgMCk7CisKKyAgICBnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9TV0laWkxFX1IsIEdMX1JFRCk7CisgICAgZ2xUZXhQ
YXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfU1dJWlpMRV9HLCBHTF9SRUQpOwor
ICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1NXSVpaTEVfQiwg
R0xfUkVEKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9T
V0laWkxFX0EsIEdMX1JFRCk7CisKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwor
ICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgIEdMQ29sb3Ig
ZXhwZWN0ZWREYXRhKGRhdGEuUiwgZGF0YS5SLCBkYXRhLlIsIGRhdGEuUik7CisgICAgRVhQRUNU
X1BJWEVMX0NPTE9SX0VRKDAsIDAsIGV4cGVjdGVkRGF0YSk7CisKKyAgICBHTENvbG9yIHVwZGF0
ZURhdGEoMzIsIDIzNCwgMjgsIDIzMik7CisgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVf
MkQsIDAsIDAsIDAsIDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsICZ1cGRhdGVEYXRh
KTsKKworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgZHJhd1F1YWQobVBy
b2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworCisgICAgR0xDb2xvciBleHBlY3RlZFVwZGF0ZURh
dGEodXBkYXRlRGF0YS5SLCB1cGRhdGVEYXRhLlIsIHVwZGF0ZURhdGEuUiwgdXBkYXRlRGF0YS5S
KTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgZXhwZWN0ZWRVcGRhdGVEYXRhKTsK
K30KKworLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdo
aWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlIHRlc3RzIHNob3Vs
ZCBiZSBydW4gYWdhaW5zdC4KK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoU3dpenpsZVRlc3QsIEVT
M19EM0QxMSgpLCBFUzNfT1BFTkdMKCksIEVTM19PUEVOR0woMywgMyksIEVTM19PUEVOR0xFUygp
KTsKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoU3dpenpsZUludGVnZXJUZXN0LAorICAgICAgICAg
ICAgICAgICAgICAgICBFUzNfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09Q
RU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKDMsIDMpLAorICAgICAg
ICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMRVMoKSk7CisKK30gLy8gbmFtZXNwYWNlCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvU3luY1F1ZXJpZXNU
ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
Z2xfdGVzdHMvU3luY1F1ZXJpZXNUZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvU3luY1F1ZXJpZXNUZXN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEwOCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gU3luY1F1ZXJpZXNU
ZXN0LmNwcDogVGVzdHMgb2YgdGhlIEdMX0NIUk9NSVVNX3N5bmNfcXVlcnkgZXh0ZW5zaW9uCisK
KyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorCituYW1lc3BhY2UgYW5nbGUKK3sK
KworY2xhc3MgU3luY1F1ZXJpZXNUZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0
ZWQ6CisgICAgU3luY1F1ZXJpZXNUZXN0KCkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRo
KDEyOCk7CisgICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOworICAgICAgICBzZXRDb25maWdS
ZWRCaXRzKDgpOworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENv
bmZpZ0JsdWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgICAg
IHNldENvbmZpZ0RlcHRoQml0cygyNCk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92
ZXJyaWRlCisgICAgeworICAgICAgICBpZiAobVF1ZXJ5ICE9IDApCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGdsRGVsZXRlUXVlcmllc0VYVCgxLCAmbVF1ZXJ5KTsKKyAgICAgICAgICAgIG1RdWVy
eSA9IDA7CisgICAgICAgIH0KKworICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7CisgICAg
fQorCisgICAgR0x1aW50IG1RdWVyeSA9IDA7Cit9OworCisvLyBUZXN0IGJhc2ljIHVzYWdlIG9m
IHN5bmMgcXVlcmllcworVEVTVF9QKFN5bmNRdWVyaWVzVGVzdCwgQmFzaWMpCit7CisgICAgaWYg
KCFleHRlbnNpb25FbmFibGVkKCJHTF9DSFJPTUlVTV9zeW5jX3F1ZXJ5IikpCisgICAgeworICAg
ICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEdMX0NIUk9NSVVNX3N5bmNf
cXVlcnkgaXMgbm90IGF2YWlsYWJsZS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGdsR2VuUXVlcmllc0VYVCgxLCAmbVF1ZXJ5KTsKKyAgICBnbEJlZ2luUXVl
cnlFWFQoR0xfQ09NTUFORFNfQ09NUExFVEVEX0NIUk9NSVVNLCBtUXVlcnkpOworICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOworCisgICAgZ2xDbGVhckNvbG9yKDAuMCwgMC4wLCAxLjAsIDEuMCk7
CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAgIGdsRW5kUXVlcnlFWFQo
R0xfQ09NTUFORFNfQ09NUExFVEVEX0NIUk9NSVVNKTsKKworICAgIGdsRmx1c2goKTsKKyAgICBH
THVpbnQgcmVzdWx0ID0gMDsKKyAgICBnbEdldFF1ZXJ5T2JqZWN0dWl2RVhUKG1RdWVyeSwgR0xf
UVVFUllfUkVTVUxUX0VYVCwgJnJlc3VsdCk7CisgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PEdM
dWludD4oR0xfVFJVRSksIHJlc3VsdCk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9CisK
Ky8vIFRlc3QgdGhhdCB0aGUgc3luYyBxdWVyeSBlbnVtcyBhcmUgbm90IGFjY2VwdGVkIHVubGVz
cyB0aGUgZXh0ZW5zaW9uIGlzIGF2YWlsYWJsZQorVEVTVF9QKFN5bmNRdWVyaWVzVGVzdCwgVmFs
aWRhdGlvbikKK3sKKyAgICAvLyBOZWVkIHRoZSBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jvb2xl
YW4gZXh0ZW5zaW9uIGZvciB0aGUgZW50cnkgcG9pbnRzCisgICAgaWYgKCFleHRlbnNpb25FbmFi
bGVkKCJHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jvb2xlYW4iKSkKKyAgICB7CisgICAgICAgIHN0
ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgR0xfRVhUX29jY2x1c2lvbl9xdWVyeV9i
b29sZWFuIGlzIG5vdCBhdmFpbGFibGUuIgorICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRs
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYm9vbCBleHRlbnNpb25BdmFpbGFibGUg
PSBleHRlbnNpb25FbmFibGVkKCJHTF9DSFJPTUlVTV9zeW5jX3F1ZXJ5Iik7CisKKyAgICBnbEdl
blF1ZXJpZXNFWFQoMSwgJm1RdWVyeSk7CisKKyAgICBnbEJlZ2luUXVlcnlFWFQoR0xfQ09NTUFO
RFNfQ09NUExFVEVEX0NIUk9NSVVNLCBtUXVlcnkpOworICAgIGlmIChleHRlbnNpb25BdmFpbGFi
bGUpCisgICAgeworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICB9CisgICAgZWxz
ZQorICAgIHsKKyAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7CisgICAg
fQorCisgICAgZ2xEZWxldGVRdWVyaWVzRVhUKDEsICZtUXVlcnkpOworCisgICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7Cit9CisKKy8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0
aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVz
ZQorLy8gdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgorQU5HTEVfSU5TVEFOVElBVEVfVEVT
VChTeW5jUXVlcmllc1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCisg
ICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAg
ICBFUzNfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAorICAg
ICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAg
IEVTMl9PUEVOR0xFUygpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMRVMoKSk7
CisKK30gIC8vIG5hbWVzcGFjZSBhbmdsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2dsX3Rlc3RzL1RleHR1cmVUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvVGV4dHVyZVRlc3QuY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9U
ZXh0dXJlVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNzM3IEBACisvLworLy8g
Q29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworCisjaW5jbHVkZSAiY29tbW9uL21hdGh1dGlsLmgiCisjaW5jbHVkZSAidGVzdF91dGlscy9B
TkdMRVRlc3QuaCIKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL2dsX3JhaWkuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIGFuZ2xlOworCituYW1lc3BhY2UKK3sKKworLy8gVGFrZSBhIHBpeGVsLCBhbmQgcmVz
ZXQgdGhlIGNvbXBvbmVudHMgbm90IGNvdmVyZWQgYnkgdGhlIGZvcm1hdCB0byBkZWZhdWx0Cisv
LyB2YWx1ZXMuIEluIHBhcnRpY3VsYXIsIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgYWxwaGEg
Y29tcG9uZW50IGlzIDI1NQorLy8gKDEuMCBhcyB1bnNpZ25lZCBub3JtYWxpemVkIGZpeGVkIHBv
aW50IHZhbHVlKS4KK0dMQ29sb3IgU2xpY2VGb3JtYXRDb2xvcihHTGVudW0gZm9ybWF0LCBHTENv
bG9yIGZ1bGwpCit7CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAgICAgICBjYXNlIEdM
X1JFRDoKKyAgICAgICAgICAgIHJldHVybiBHTENvbG9yKGZ1bGwuUiwgMCwgMCwgMjU1dSk7Cisg
ICAgICAgIGNhc2UgR0xfUkc6CisgICAgICAgICAgICByZXR1cm4gR0xDb2xvcihmdWxsLlIsIGZ1
bGwuRywgMCwgMjU1dSk7CisgICAgICAgIGNhc2UgR0xfUkdCOgorICAgICAgICAgICAgcmV0dXJu
IEdMQ29sb3IoZnVsbC5SLCBmdWxsLkcsIGZ1bGwuQiwgMjU1dSk7CisgICAgICAgIGNhc2UgR0xf
UkdCQToKKyAgICAgICAgICAgIHJldHVybiBmdWxsOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBHTENvbG9yOjp3aGl0ZTsK
KyAgICB9Cit9CisKK2NsYXNzIFRleENvb3JkRHJhd1Rlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7
CisgIHByb3RlY3RlZDoKKyAgICBUZXhDb29yZERyYXdUZXN0KCkgOiBBTkdMRVRlc3QoKSwgbVBy
b2dyYW0oMCksIG1GcmFtZWJ1ZmZlcigwKSwgbUZyYW1lYnVmZmVyQ29sb3JUZXh0dXJlKDApCisg
ICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOworICAgICAgICBzZXRXaW5kb3dIZWln
aHQoMTI4KTsKKyAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmln
R3JlZW5CaXRzKDgpOworICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKKyAgICAgICAgc2V0
Q29uZmlnQWxwaGFCaXRzKDgpOworICAgIH0KKworICAgIHZpcnR1YWwgc3RkOjpzdHJpbmcgZ2V0
VmVydGV4U2hhZGVyU291cmNlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnN0cmluZyhT
SEFERVJfU09VUkNFCisgICAgICAgICgKKyAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9h
dDsKKyAgICAgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uOworICAgICAgICAgICAgdmFy
eWluZyB2ZWMyIHRleGNvb3JkOworCisgICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbi54eSwgMC4w
LCAxLjApOworICAgICAgICAgICAgICAgIHRleGNvb3JkID0gKHBvc2l0aW9uLnh5ICogMC41KSAr
IDAuNTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKQorICAgICAgICApOworICAgIH0KKworICAg
IHZpcnR1YWwgc3RkOjpzdHJpbmcgZ2V0RnJhZ21lbnRTaGFkZXJTb3VyY2UoKSA9IDA7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0VXBQcm9ncmFtKCkKKyAgICB7CisgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSAgID0gZ2V0VmVydGV4U2hhZGVyU291cmNlKCk7Cisg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0gZ2V0RnJhZ21l
bnRTaGFkZXJTb3VyY2UoKTsKKworICAgICAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZl
cnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOworICAgICAgICBBU1NFUlRf
TkUoMHUsIG1Qcm9ncmFtKTsKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgfQor
CisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNl
dFVwKCk7CisKKyAgICAgICAgc2V0VXBGcmFtZWJ1ZmZlcigpOworICAgIH0KKworICAgIHZvaWQg
VGVhckRvd24oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xf
RlJBTUVCVUZGRVIsIDApOworICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbUZyYW1l
YnVmZmVyKTsKKyAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbUZyYW1lYnVmZmVyQ29sb3JU
ZXh0dXJlKTsKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICAgICAgQU5H
TEVUZXN0OjpUZWFyRG93bigpOworICAgIH0KKworICAgIHZvaWQgc2V0VXBGcmFtZWJ1ZmZlcigp
CisgICAgeworICAgICAgICAvLyBXZSB1c2UgYW4gRkJPIHRvIHdvcmsgYXJvdW5kIGFuIGlzc3Vl
IHdoZXJlIHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyIGFwcGxpZXMgU1JHQgorICAgICAgICAvLyBj
b252ZXJzaW9uIChwYXJ0aWN1bGFybHkga25vd24gdG8gaGFwcGVuIGluY29ycmVjdGx5IG9uIElu
dGVsIEdMIGRyaXZlcnMpLiBJdCdzIG5vdAorICAgICAgICAvLyBjbGVhciB3aGV0aGVyIHRoaXMg
aXNzdWUgY2FuIGV2ZW4gYmUgZml4ZWQgb24gYWxsIGJhY2tlbmRzLiBGb3IgZXhhbXBsZSBHTEVT
IDMuMC40IHNwZWMKKyAgICAgICAgLy8gc2VjdGlvbiA0LjQgc2F5cyB0aGF0IHRoZSBmb3JtYXQg
b2YgdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIgaXMgZW50aXJlbHkgdXAgdG8gdGhlIHdpbmRvdwor
ICAgICAgICAvLyBzeXN0ZW0sIHNvIGl0IG1pZ2h0IGJlIFNSR0IsIGFuZCBHTEVTIDMuMCBkb2Vz
bid0IGhhdmUgYSAiRlJBTUVCVUZGRVJfU1JHQiIgdG8gdHVybiBvZmYKKyAgICAgICAgLy8gU1JH
QiBjb252ZXJzaW9uIGxpa2UgZGVza3RvcCBHTCBkb2VzLgorICAgICAgICAvLyBUT0RPKG9ldHVh
aG8pOiBHZXQgcmlkIG9mIHRoaXMgaWYgdGhlIHVuZGVybHlpbmcgaXNzdWUgaXMgZml4ZWQuCisg
ICAgICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZtRnJhbWVidWZmZXIpOworICAgICAgICBnbEJp
bmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVyKTsKKworICAgICAgICBn
bEdlblRleHR1cmVzKDEsICZtRnJhbWVidWZmZXJDb2xvclRleHR1cmUpOworICAgICAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1GcmFtZWJ1ZmZlckNvbG9yVGV4dHVyZSk7CisgICAg
ICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCBnZXRXaW5kb3dXaWR0
aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgMCwgR0xfUkdCQSwKKyAgICAgICAgICAgICAgICAgICAg
IEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOworICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVy
ZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRnJhbWVidWZmZXJDb2xvclRleHR1cmUs
IDApOworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICAgICAgQVNTRVJUX0dMRU5V
TV9FUShHTF9GUkFNRUJVRkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdM
X0ZSQU1FQlVGRkVSKSk7CisgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgMCk7
CisgICAgfQorCisgICAgLy8gUmV0dXJucyB0aGUgY3JlYXRlZCB0ZXh0dXJlIElELgorICAgIEdM
dWludCBjcmVhdGUyRFRleHR1cmUoKQorICAgIHsKKyAgICAgICAgR0x1aW50IHRleHR1cmUyRDsK
KyAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4dHVyZTJEKTsKKyAgICAgICAgZ2xCaW5kVGV4
dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlMkQpOworICAgICAgICBnbFRleEltYWdlMkQoR0xf
VEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMSwgMSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllU
RSwgTlVMTCk7CisgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgICAgICByZXR1cm4g
dGV4dHVyZTJEOworICAgIH0KKworICAgIEdMdWludCBtUHJvZ3JhbTsKKyAgICBHTHVpbnQgbUZy
YW1lYnVmZmVyOworCisgIHByaXZhdGU6CisgICAgR0x1aW50IG1GcmFtZWJ1ZmZlckNvbG9yVGV4
dHVyZTsKK307CisKK2NsYXNzIFRleHR1cmUyRFRlc3QgOiBwdWJsaWMgVGV4Q29vcmREcmF3VGVz
dAoreworICBwcm90ZWN0ZWQ6CisgICAgVGV4dHVyZTJEVGVzdCgpIDogVGV4Q29vcmREcmF3VGVz
dCgpLCBtVGV4dHVyZTJEKDApLCBtVGV4dHVyZTJEVW5pZm9ybUxvY2F0aW9uKC0xKSB7fQorCisg
ICAgc3RkOjpzdHJpbmcgZ2V0RnJhZ21lbnRTaGFkZXJTb3VyY2UoKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKAorICAg
ICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworICAgICAgICAgICAgdW5pZm9ybSBzYW1w
bGVyMkQgdGV4OworICAgICAgICAgICAgdmFyeWluZyB2ZWMyIHRleGNvb3JkOworCisgICAgICAg
ICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsX0ZyYWdD
b2xvciA9IHRleHR1cmUyRCh0ZXgsIHRleGNvb3JkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
KQorICAgICAgICApOworICAgIH0KKworICAgIHZpcnR1YWwgY29uc3QgY2hhciAqZ2V0VGV4dHVy
ZVVuaWZvcm1OYW1lKCkgeyByZXR1cm4gInRleCI7IH0KKworICAgIHZvaWQgc2V0VXBQcm9ncmFt
KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFRleENvb3JkRHJhd1Rlc3Q6OnNldFVwUHJvZ3Jh
bSgpOworICAgICAgICBtVGV4dHVyZTJEVW5pZm9ybUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9j
YXRpb24obVByb2dyYW0sIGdldFRleHR1cmVVbmlmb3JtTmFtZSgpKTsKKyAgICAgICAgQVNTRVJU
X05FKC0xLCBtVGV4dHVyZTJEVW5pZm9ybUxvY2F0aW9uKTsKKyAgICB9CisKKyAgICB2b2lkIFNl
dFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFRleENvb3JkRHJhd1Rlc3Q6OlNldFVwKCk7
CisgICAgICAgIG1UZXh0dXJlMkQgPSBjcmVhdGUyRFRleHR1cmUoKTsKKworICAgICAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0dXJlMkQpOworICAgICAg
ICBUZXhDb29yZERyYXdUZXN0OjpUZWFyRG93bigpOworICAgIH0KKworICAgIC8vIFRlc3RzIENv
cHlUZXhTdWJJbWFnZSB3aXRoIGZsb2F0aW5nIHBvaW50IHRleHR1cmVzIG9mIHZhcmlvdXMgZm9y
bWF0cy4KKyAgICB2b2lkIHRlc3RGbG9hdENvcHlTdWJJbWFnZShpbnQgc291cmNlSW1hZ2VDaGFu
bmVscywgaW50IGRlc3RJbWFnZUNoYW5uZWxzKQorICAgIHsKKyAgICAgICAgLy8gVE9ETyhqbWFk
aWxsKTogRmlndXJlIG91dCB3aHkgdGhpcyBpcyBicm9rZW4gb24gSW50ZWwgRDNEMTEKKyAgICAg
ICAgaWYgKElzSW50ZWwoKSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JN
X0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0ZDo6Y291
dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIEQzRDExLiIgPDwgc3RkOjplbmRsOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgc2V0VXBQcm9ncmFtKCk7CisKKyAg
ICAgICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGR1
ZSB0byBtaXNzaW5nIEdMX09FU190ZXh0dXJlX2Zsb2F0LiIgPDwgc3RkOjplbmRsOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKChzb3Vy
Y2VJbWFnZUNoYW5uZWxzIDwgMyB8fCBkZXN0SW1hZ2VDaGFubmVscyA8IDMpICYmICFleHRlbnNp
b25FbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9yZyIpKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGR1ZSB0byBtaXNzaW5nIEdMX0VYVF90
ZXh0dXJlX3JnLiIgPDwgc3RkOjplbmRsOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIEdMZmxvYXQgc291cmNlSW1hZ2VEYXRhWzRd
WzE2XSA9CisgICAgICAgIHsKKyAgICAgICAgICAgIHsgLy8gUgorICAgICAgICAgICAgICAgIDEu
MGYsCisgICAgICAgICAgICAgICAgMC4wZiwKKyAgICAgICAgICAgICAgICAwLjBmLAorICAgICAg
ICAgICAgICAgIDEuMGYKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7IC8vIFJHCisgICAg
ICAgICAgICAgICAgMS4wZiwgMC4wZiwKKyAgICAgICAgICAgICAgICAwLjBmLCAxLjBmLAorICAg
ICAgICAgICAgICAgIDAuMGYsIDAuMGYsCisgICAgICAgICAgICAgICAgMS4wZiwgMS4wZgorICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgIHsgLy8gUkdCCisgICAgICAgICAgICAgICAgMS4wZiwg
MC4wZiwgMC4wZiwKKyAgICAgICAgICAgICAgICAwLjBmLCAxLjBmLCAwLjBmLAorICAgICAgICAg
ICAgICAgIDAuMGYsIDAuMGYsIDEuMGYsCisgICAgICAgICAgICAgICAgMS4wZiwgMS4wZiwgMC4w
ZgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsgLy8gUkdCQQorICAgICAgICAgICAgICAg
IDEuMGYsIDAuMGYsIDAuMGYsIDEuMGYsCisgICAgICAgICAgICAgICAgMC4wZiwgMS4wZiwgMC4w
ZiwgMS4wZiwKKyAgICAgICAgICAgICAgICAwLjBmLCAwLjBmLCAxLjBmLCAxLjBmLAorICAgICAg
ICAgICAgICAgIDEuMGYsIDEuMGYsIDAuMGYsIDEuMGYKKyAgICAgICAgICAgIH0sCisgICAgICAg
IH07CisKKyAgICAgICAgR0xlbnVtIGltYWdlRm9ybWF0c1tdID0KKyAgICAgICAgeworICAgICAg
ICAgICAgR0xfUjMyRiwKKyAgICAgICAgICAgIEdMX1JHMzJGLAorICAgICAgICAgICAgR0xfUkdC
MzJGLAorICAgICAgICAgICAgR0xfUkdCQTMyRiwKKyAgICAgICAgfTsKKworICAgICAgICBHTGVu
dW0gc291cmNlVW5zaXplZEZvcm1hdHNbXSA9CisgICAgICAgIHsKKyAgICAgICAgICAgIEdMX1JF
RCwKKyAgICAgICAgICAgIEdMX1JHLAorICAgICAgICAgICAgR0xfUkdCLAorICAgICAgICAgICAg
R0xfUkdCQSwKKyAgICAgICAgfTsKKworICAgICAgICBHTHVpbnQgdGV4dHVyZXNbMl07CisKKyAg
ICAgICAgZ2xHZW5UZXh0dXJlcygyLCB0ZXh0dXJlcyk7CisKKyAgICAgICAgR0xmbG9hdCAqaW1h
Z2VEYXRhID0gc291cmNlSW1hZ2VEYXRhW3NvdXJjZUltYWdlQ2hhbm5lbHMgLSAxXTsKKyAgICAg
ICAgR0xlbnVtIHNvdXJjZUltYWdlRm9ybWF0ID0gaW1hZ2VGb3JtYXRzW3NvdXJjZUltYWdlQ2hh
bm5lbHMgLSAxXTsKKyAgICAgICAgR0xlbnVtIHNvdXJjZVVuc2l6ZWRGb3JtYXQgPSBzb3VyY2VV
bnNpemVkRm9ybWF0c1tzb3VyY2VJbWFnZUNoYW5uZWxzIC0gMV07CisgICAgICAgIEdMZW51bSBk
ZXN0SW1hZ2VGb3JtYXQgPSBpbWFnZUZvcm1hdHNbZGVzdEltYWdlQ2hhbm5lbHMgLSAxXTsKKwor
ICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmVzWzBdKTsKKyAgICAg
ICAgZ2xUZXhTdG9yYWdlMkRFWFQoR0xfVEVYVFVSRV8yRCwgMSwgc291cmNlSW1hZ2VGb3JtYXQs
IDIsIDIpOworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgICAgIGds
VGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCAwLCAwLCAyLCAyLCBzb3VyY2VVbnNpemVk
Rm9ybWF0LCBHTF9GTE9BVCwgaW1hZ2VEYXRhKTsKKworICAgICAgICBpZiAoc291cmNlSW1hZ2VD
aGFubmVscyA8IDMgJiYgIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX3JnIikpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgbm90IHN1cHBvcnRlZAorICAgICAgICAg
ICAgQVNTRVJUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgfQorICAg
ICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwor
ICAgICAgICB9CisKKyAgICAgICAgR0x1aW50IGZibzsKKyAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZl
cnMoMSwgJmZibyk7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBm
Ym8pOworICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9D
T0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgdGV4dHVyZXNbMF0sIDApOworCisgICAg
ICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZXNbMV0pOworICAgICAgICBn
bFRleFN0b3JhZ2UyREVYVChHTF9URVhUVVJFXzJELCAxLCBkZXN0SW1hZ2VGb3JtYXQsIDIsIDIp
OworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5f
RklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
MkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisKKyAgICAgICAgZ2xDb3B5
VGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCAwLCAwLCAwLCAwLCAyLCAyKTsKKyAgICAg
ICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xf
RlJBTUVCVUZGRVIsIDApOworICAgICAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwg
MC41Zik7CisKKyAgICAgICAgaW50IHRlc3RJbWFnZUNoYW5uZWxzID0gc3RkOjptaW4oc291cmNl
SW1hZ2VDaGFubmVscywgZGVzdEltYWdlQ2hhbm5lbHMpOworCisgICAgICAgIEVYUEVDVF9QSVhF
TF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpyZWQpOworICAgICAgICBpZiAodGVzdEltYWdlQ2hh
bm5lbHMgPiAxKQorICAgICAgICB7CisgICAgICAgICAgICBFWFBFQ1RfUElYRUxfRVEoZ2V0V2lu
ZG93SGVpZ2h0KCkgLSAxLCAwLCAwLCAyNTUsIDAsIDI1NSk7CisgICAgICAgICAgICBFWFBFQ1Rf
UElYRUxfRVEoZ2V0V2luZG93SGVpZ2h0KCkgLSAxLCBnZXRXaW5kb3dXaWR0aCgpIC0gMSwgMjU1
LCAyNTUsIDAsIDI1NSk7CisgICAgICAgICAgICBpZiAodGVzdEltYWdlQ2hhbm5lbHMgPiAyKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEVYUEVDVF9QSVhFTF9FUSgwLCBnZXRXaW5k
b3dXaWR0aCgpIC0gMSwgMCwgMCwgMjU1LCAyNTUpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZibyk7CisgICAgICAgIGdsRGVs
ZXRlVGV4dHVyZXMoMiwgdGV4dHVyZXMpOworCisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigp
OworICAgIH0KKworICAgIEdMdWludCBtVGV4dHVyZTJEOworICAgIEdMaW50IG1UZXh0dXJlMkRV
bmlmb3JtTG9jYXRpb247Cit9OworCitjbGFzcyBUZXh0dXJlMkRUZXN0RVMzIDogcHVibGljIFRl
eHR1cmUyRFRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIFRleHR1cmUyRFRlc3RFUzMoKSA6IFRl
eHR1cmUyRFRlc3QoKSB7fQorCisgICAgc3RkOjpzdHJpbmcgZ2V0VmVydGV4U2hhZGVyU291cmNl
KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnN0cmluZygKKyAgICAgICAg
ICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgICAgICJvdXQgdmVjMiB0ZXhjb29yZDtc
biIKKyAgICAgICAgICAgICJpbiB2ZWM0IHBvc2l0aW9uO1xuIgorICAgICAgICAgICAgInZvaWQg
bWFpbigpXG4iCisgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgIiAgICBnbF9Qb3NpdGlv
biA9IHZlYzQocG9zaXRpb24ueHksIDAuMCwgMS4wKTtcbiIKKyAgICAgICAgICAgICIgICAgdGV4
Y29vcmQgPSAocG9zaXRpb24ueHkgKiAwLjUpICsgMC41O1xuIgorICAgICAgICAgICAgIn1cbiIp
OworICAgIH0KKworICAgIHN0ZDo6c3RyaW5nIGdldEZyYWdtZW50U2hhZGVyU291cmNlKCkgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnN0cmluZygKKyAgICAgICAgICAgICIj
dmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4i
CisgICAgICAgICAgICAidW5pZm9ybSBoaWdocCBzYW1wbGVyMkQgdGV4O1xuIgorICAgICAgICAg
ICAgImluIHZlYzIgdGV4Y29vcmQ7XG4iCisgICAgICAgICAgICAib3V0IHZlYzQgZnJhZ0NvbG9y
O1xuIgorICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICAgICAie1xuIgorICAg
ICAgICAgICAgIiAgICBmcmFnQ29sb3IgPSB0ZXh0dXJlKHRleCwgdGV4Y29vcmQpO1xuIgorICAg
ICAgICAgICAgIn1cbiIpOworICAgIH0KKworICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgVGV4dHVyZTJEVGVzdDo6U2V0VXAoKTsKKyAgICAgICAgc2V0VXBQcm9ncmFt
KCk7CisgICAgfQorfTsKKworY2xhc3MgVGV4dHVyZTJESW50ZWdlckFscGhhMVRlc3RFUzMgOiBw
dWJsaWMgVGV4dHVyZTJEVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgVGV4dHVyZTJESW50ZWdl
ckFscGhhMVRlc3RFUzMoKSA6IFRleHR1cmUyRFRlc3QoKSB7fQorCisgICAgc3RkOjpzdHJpbmcg
Z2V0VmVydGV4U2hhZGVyU291cmNlKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBz
dGQ6OnN0cmluZygKKyAgICAgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgICAg
ICJvdXQgdmVjMiB0ZXhjb29yZDtcbiIKKyAgICAgICAgICAgICJpbiB2ZWM0IHBvc2l0aW9uO1xu
IgorICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICAgICAie1xuIgorICAgICAg
ICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24ueHksIDAuMCwgMS4wKTtcbiIK
KyAgICAgICAgICAgICIgICAgdGV4Y29vcmQgPSAocG9zaXRpb24ueHkgKiAwLjUpICsgMC41O1xu
IgorICAgICAgICAgICAgIn1cbiIpOworICAgIH0KKworICAgIHN0ZDo6c3RyaW5nIGdldEZyYWdt
ZW50U2hhZGVyU291cmNlKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnN0
cmluZygKKyAgICAgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgICAgICJwcmVj
aXNpb24gaGlnaHAgZmxvYXQ7XG4iCisgICAgICAgICAgICAidW5pZm9ybSBoaWdocCBpc2FtcGxl
cjJEIHRleDtcbiIKKyAgICAgICAgICAgICJpbiB2ZWMyIHRleGNvb3JkO1xuIgorICAgICAgICAg
ICAgIm91dCB2ZWM0IGZyYWdDb2xvcjtcbiIKKyAgICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgor
ICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICIgICAgdmVjNCBncmVlbiA9IHZlYzQoMCwg
MSwgMCwgMSk7XG4iCisgICAgICAgICAgICAiICAgIHZlYzQgYmxhY2sgPSB2ZWM0KDAsIDAsIDAs
IDApO1xuIgorICAgICAgICAgICAgIiAgICBmcmFnQ29sb3IgPSAodGV4dHVyZSh0ZXgsIHRleGNv
b3JkKS5hID09IDEpID8gZ3JlZW4gOiBibGFjaztcbiIKKyAgICAgICAgICAgICJ9XG4iKTsKKyAg
ICB9CisKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFRleHR1cmUy
RFRlc3Q6OlNldFVwKCk7CisgICAgICAgIHNldFVwUHJvZ3JhbSgpOworICAgIH0KK307CisKK2Ns
YXNzIFRleHR1cmUyRFVuc2lnbmVkSW50ZWdlckFscGhhMVRlc3RFUzMgOiBwdWJsaWMgVGV4dHVy
ZTJEVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgVGV4dHVyZTJEVW5zaWduZWRJbnRlZ2VyQWxw
aGExVGVzdEVTMygpIDogVGV4dHVyZTJEVGVzdCgpIHt9CisKKyAgICBzdGQ6OnN0cmluZyBnZXRW
ZXJ0ZXhTaGFkZXJTb3VyY2UoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
c3RyaW5nKAorICAgICAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAgICAgIm91
dCB2ZWMyIHRleGNvb3JkO1xuIgorICAgICAgICAgICAgImluIHZlYzQgcG9zaXRpb247XG4iCisg
ICAgICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAg
ICAiICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbi54eSwgMC4wLCAxLjApO1xuIgorICAg
ICAgICAgICAgIiAgICB0ZXhjb29yZCA9IChwb3NpdGlvbi54eSAqIDAuNSkgKyAwLjU7XG4iCisg
ICAgICAgICAgICAifVxuIik7CisgICAgfQorCisgICAgc3RkOjpzdHJpbmcgZ2V0RnJhZ21lbnRT
aGFkZXJTb3VyY2UoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5n
KAorICAgICAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAgICAgInByZWNpc2lv
biBoaWdocCBmbG9hdDtcbiIKKyAgICAgICAgICAgICJ1bmlmb3JtIGhpZ2hwIHVzYW1wbGVyMkQg
dGV4O1xuIgorICAgICAgICAgICAgImluIHZlYzIgdGV4Y29vcmQ7XG4iCisgICAgICAgICAgICAi
b3V0IHZlYzQgZnJhZ0NvbG9yO1xuIgorICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAg
ICAgICAgICAie1xuIgorICAgICAgICAgICAgIiAgICB2ZWM0IGdyZWVuID0gdmVjNCgwLCAxLCAw
LCAxKTtcbiIKKyAgICAgICAgICAgICIgICAgdmVjNCBibGFjayA9IHZlYzQoMCwgMCwgMCwgMCk7
XG4iCisgICAgICAgICAgICAiICAgIGZyYWdDb2xvciA9ICh0ZXh0dXJlKHRleCwgdGV4Y29vcmQp
LmEgPT0gMXUpID8gZ3JlZW4gOiBibGFjaztcbiIKKyAgICAgICAgICAgICJ9XG4iKTsKKyAgICB9
CisKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFRleHR1cmUyRFRl
c3Q6OlNldFVwKCk7CisgICAgICAgIHNldFVwUHJvZ3JhbSgpOworICAgIH0KK307CisKK2NsYXNz
IFRleHR1cmUyRFRlc3RXaXRoRHJhd1NjYWxlIDogcHVibGljIFRleHR1cmUyRFRlc3QKK3sKKyAg
cHJvdGVjdGVkOgorICAgIFRleHR1cmUyRFRlc3RXaXRoRHJhd1NjYWxlKCkgOiBUZXh0dXJlMkRU
ZXN0KCksIG1EcmF3U2NhbGVVbmlmb3JtTG9jYXRpb24oLTEpIHt9CisKKyAgICBzdGQ6OnN0cmlu
ZyBnZXRWZXJ0ZXhTaGFkZXJTb3VyY2UoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6c3RyaW5nKFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAgcHJlY2lz
aW9uIGhpZ2hwIGZsb2F0OworICAgICAgICAgICAgYXR0cmlidXRlIHZlYzQgcG9zaXRpb247Cisg
ICAgICAgICAgICB2YXJ5aW5nIHZlYzIgdGV4Y29vcmQ7CisKKyAgICAgICAgICAgIHVuaWZvcm0g
dmVjMiBkcmF3U2NhbGU7CisKKyAgICAgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLnh5ICogZHJhd1Nj
YWxlLCAwLjAsIDEuMCk7CisgICAgICAgICAgICAgICAgdGV4Y29vcmQgPSAocG9zaXRpb24ueHkg
KiAwLjUpICsgMC41OworICAgICAgICAgICAgfQorICAgICAgICApCisgICAgICAgICk7CisgICAg
fQorCisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBUZXh0dXJlMkRU
ZXN0OjpTZXRVcCgpOworCisgICAgICAgIHNldFVwUHJvZ3JhbSgpOworCisgICAgICAgIG1EcmF3
U2NhbGVVbmlmb3JtTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgImRy
YXdTY2FsZSIpOworICAgICAgICBBU1NFUlRfTkUoLTEsIG1EcmF3U2NhbGVVbmlmb3JtTG9jYXRp
b24pOworCisgICAgICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgICAgIGdsVW5pZm9y
bTJmKG1EcmF3U2NhbGVVbmlmb3JtTG9jYXRpb24sIDEuMGYsIDEuMGYpOworICAgICAgICBnbFVz
ZVByb2dyYW0oMCk7CisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIH0KKworICAg
IEdMaW50IG1EcmF3U2NhbGVVbmlmb3JtTG9jYXRpb247Cit9OworCitjbGFzcyBTYW1wbGVyMkRB
c0Z1bmN0aW9uUGFyYW1ldGVyVGVzdCA6IHB1YmxpYyBUZXh0dXJlMkRUZXN0Cit7CisgIHByb3Rl
Y3RlZDoKKyAgICBTYW1wbGVyMkRBc0Z1bmN0aW9uUGFyYW1ldGVyVGVzdCgpIDogVGV4dHVyZTJE
VGVzdCgpIHt9CisKKyAgICBzdGQ6OnN0cmluZyBnZXRGcmFnbWVudFNoYWRlclNvdXJjZSgpIG92
ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoU0hBREVSX1NPVVJDRQor
ICAgICAgICAoCisgICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisgICAgICAgICAg
ICB1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7CisgICAgICAgICAgICB2YXJ5aW5nIHZlYzIgdGV4Y29v
cmQ7CisKKyAgICAgICAgICAgIHZlYzQgY29tcHV0ZUZyYWdDb2xvcihzYW1wbGVyMkQgYVRleCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGV4dHVyZTJEKGFUZXgsIHRl
eGNvb3JkKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdm9pZCBtYWluKCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSBjb21wdXRlRnJhZ0NvbG9y
KHRleCk7CisgICAgICAgICAgICB9CisgICAgICAgICkKKyAgICAgICAgKTsKKyAgICB9CisKKyAg
ICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFRleHR1cmUyRFRlc3Q6OlNl
dFVwKCk7CisgICAgICAgIHNldFVwUHJvZ3JhbSgpOworICAgIH0KK307CisKK2NsYXNzIFRleHR1
cmVDdWJlVGVzdCA6IHB1YmxpYyBUZXhDb29yZERyYXdUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAg
ICBUZXh0dXJlQ3ViZVRlc3QoKQorICAgICAgICA6IFRleENvb3JkRHJhd1Rlc3QoKSwKKyAgICAg
ICAgICBtVGV4dHVyZTJEKDApLAorICAgICAgICAgIG1UZXh0dXJlQ3ViZSgwKSwKKyAgICAgICAg
ICBtVGV4dHVyZTJEVW5pZm9ybUxvY2F0aW9uKC0xKSwKKyAgICAgICAgICBtVGV4dHVyZUN1YmVV
bmlmb3JtTG9jYXRpb24oLTEpCisgICAgeworICAgIH0KKworICAgIHN0ZDo6c3RyaW5nIGdldEZy
YWdtZW50U2hhZGVyU291cmNlKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6
OnN0cmluZyhTSEFERVJfU09VUkNFCisgICAgICAgICgKKyAgICAgICAgICAgIHByZWNpc2lvbiBo
aWdocCBmbG9hdDsKKyAgICAgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHRleDJEOworICAgICAg
ICAgICAgdW5pZm9ybSBzYW1wbGVyQ3ViZSB0ZXhDdWJlOworICAgICAgICAgICAgdmFyeWluZyB2
ZWMyIHRleGNvb3JkOworCisgICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh0ZXgyRCwgdGV4Y29vcmQp
OworICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciArPSB0ZXh0dXJlQ3ViZSh0ZXhDdWJlLCB2
ZWMzKHRleGNvb3JkLCAwKSk7CisgICAgICAgICAgICB9CisgICAgICAgICkKKyAgICAgICAgKTsK
KyAgICB9CisKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFRleENv
b3JkRHJhd1Rlc3Q6OlNldFVwKCk7CisKKyAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbVRleHR1
cmVDdWJlKTsKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFX0NVQkVfTUFQLCBtVGV4
dHVyZUN1YmUpOworICAgICAgICBnbFRleFN0b3JhZ2UyREVYVChHTF9URVhUVVJFX0NVQkVfTUFQ
LCAxLCBHTF9SR0JBOCwgMSwgMSk7CisgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisg
ICAgICAgIG1UZXh0dXJlMkQgPSBjcmVhdGUyRFRleHR1cmUoKTsKKworICAgICAgICBzZXRVcFBy
b2dyYW0oKTsKKworICAgICAgICBtVGV4dHVyZTJEVW5pZm9ybUxvY2F0aW9uID0gZ2xHZXRVbmlm
b3JtTG9jYXRpb24obVByb2dyYW0sICJ0ZXgyRCIpOworICAgICAgICBBU1NFUlRfTkUoLTEsIG1U
ZXh0dXJlMkRVbmlmb3JtTG9jYXRpb24pOworICAgICAgICBtVGV4dHVyZUN1YmVVbmlmb3JtTG9j
YXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInRleEN1YmUiKTsKKyAgICAg
ICAgQVNTRVJUX05FKC0xLCBtVGV4dHVyZUN1YmVVbmlmb3JtTG9jYXRpb24pOworICAgIH0KKwor
ICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgZ2xEZWxldGVUZXh0
dXJlcygxLCAmbVRleHR1cmVDdWJlKTsKKyAgICAgICAgVGV4Q29vcmREcmF3VGVzdDo6VGVhckRv
d24oKTsKKyAgICB9CisKKyAgICBHTHVpbnQgbVRleHR1cmUyRDsKKyAgICBHTHVpbnQgbVRleHR1
cmVDdWJlOworICAgIEdMaW50IG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRpb247CisgICAgR0xpbnQg
bVRleHR1cmVDdWJlVW5pZm9ybUxvY2F0aW9uOworfTsKKworY2xhc3MgU2FtcGxlckFycmF5VGVz
dCA6IHB1YmxpYyBUZXhDb29yZERyYXdUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBTYW1wbGVy
QXJyYXlUZXN0KCkKKyAgICAgICAgOiBUZXhDb29yZERyYXdUZXN0KCksCisgICAgICAgICAgbVRl
eHR1cmUyREEoMCksCisgICAgICAgICAgbVRleHR1cmUyREIoMCksCisgICAgICAgICAgbVRleHR1
cmUwVW5pZm9ybUxvY2F0aW9uKC0xKSwKKyAgICAgICAgICBtVGV4dHVyZTFVbmlmb3JtTG9jYXRp
b24oLTEpCisgICAgeworICAgIH0KKworICAgIHN0ZDo6c3RyaW5nIGdldEZyYWdtZW50U2hhZGVy
U291cmNlKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnN0cmluZyhTSEFE
RVJfU09VUkNFCisgICAgICAgICgKKyAgICAgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworICAgICAgICAgICAgdW5pZm9ybSBoaWdocCBzYW1wbGVyMkQgdGV4MkRBcnJheVsyXTsKKyAg
ICAgICAgICAgIHZhcnlpbmcgdmVjMiB0ZXhjb29yZDsKKyAgICAgICAgICAgIHZvaWQgbWFpbigp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJE
KHRleDJEQXJyYXlbMF0sIHRleGNvb3JkKTsKKyAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3Ig
Kz0gdGV4dHVyZTJEKHRleDJEQXJyYXlbMV0sIHRleGNvb3JkKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgKQorICAgICAgICApOworICAgIH0KKworICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgVGV4Q29vcmREcmF3VGVzdDo6U2V0VXAoKTsKKworICAgICAgICBzZXRV
cFByb2dyYW0oKTsKKworICAgICAgICBtVGV4dHVyZTBVbmlmb3JtTG9jYXRpb24gPSBnbEdldFVu
aWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInRleDJEQXJyYXlbMF0iKTsKKyAgICAgICAgQVNTRVJU
X05FKC0xLCBtVGV4dHVyZTBVbmlmb3JtTG9jYXRpb24pOworICAgICAgICBtVGV4dHVyZTFVbmlm
b3JtTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInRleDJEQXJyYXlb
MV0iKTsKKyAgICAgICAgQVNTRVJUX05FKC0xLCBtVGV4dHVyZTFVbmlmb3JtTG9jYXRpb24pOwor
CisgICAgICAgIG1UZXh0dXJlMkRBID0gY3JlYXRlMkRUZXh0dXJlKCk7CisgICAgICAgIG1UZXh0
dXJlMkRCID0gY3JlYXRlMkRUZXh0dXJlKCk7CisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigp
OworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAg
Z2xEZWxldGVUZXh0dXJlcygxLCAmbVRleHR1cmUyREEpOworICAgICAgICBnbERlbGV0ZVRleHR1
cmVzKDEsICZtVGV4dHVyZTJEQik7CisgICAgICAgIFRleENvb3JkRHJhd1Rlc3Q6OlRlYXJEb3du
KCk7CisgICAgfQorCisgICAgdm9pZCB0ZXN0U2FtcGxlckFycmF5RHJhdygpCisgICAgeworICAg
ICAgICBHTHVieXRlIHRleERhdGFbNF07CisgICAgICAgIHRleERhdGFbMF0gPSAwOworICAgICAg
ICB0ZXhEYXRhWzFdID0gNjA7CisgICAgICAgIHRleERhdGFbMl0gPSAwOworICAgICAgICB0ZXhE
YXRhWzNdID0gMjU1OworCisgICAgICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7Cisg
ICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyREEpOworICAgICAg
ICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwgMSwgMSwgR0xfUkdCQSwg
R0xfVU5TSUdORURfQllURSwgdGV4RGF0YSk7CisKKyAgICAgICAgdGV4RGF0YVsxXSA9IDEyMDsK
KyAgICAgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUxKTsKKyAgICAgICAgZ2xCaW5kVGV4
dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEQik7CisgICAgICAgIGdsVGV4U3ViSW1hZ2Uy
RChHTF9URVhUVVJFXzJELCAwLCAwLCAwLCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRF
LCB0ZXhEYXRhKTsKKyAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX05PX0VSUk9SKTsKKworICAg
ICAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworICAgICAgICBnbFVuaWZvcm0xaShtVGV4dHVy
ZTBVbmlmb3JtTG9jYXRpb24sIDApOworICAgICAgICBnbFVuaWZvcm0xaShtVGV4dHVyZTFVbmlm
b3JtTG9jYXRpb24sIDEpOworICAgICAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwg
MC41Zik7CisgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgICAgIEVYUEVDVF9Q
SVhFTF9ORUFSKDAsIDAsIDAsIDE4MCwgMCwgMjU1LCAyKTsKKyAgICB9CisKKyAgICBHTHVpbnQg
bVRleHR1cmUyREE7CisgICAgR0x1aW50IG1UZXh0dXJlMkRCOworICAgIEdMaW50IG1UZXh0dXJl
MFVuaWZvcm1Mb2NhdGlvbjsKKyAgICBHTGludCBtVGV4dHVyZTFVbmlmb3JtTG9jYXRpb247Cit9
OworCisKK2NsYXNzIFNhbXBsZXJBcnJheUFzRnVuY3Rpb25QYXJhbWV0ZXJUZXN0IDogcHVibGlj
IFNhbXBsZXJBcnJheVRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIFNhbXBsZXJBcnJheUFzRnVu
Y3Rpb25QYXJhbWV0ZXJUZXN0KCkgOiBTYW1wbGVyQXJyYXlUZXN0KCkge30KKworICAgIHN0ZDo6
c3RyaW5nIGdldEZyYWdtZW50U2hhZGVyU291cmNlKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IHJldHVybiBzdGQ6OnN0cmluZyhTSEFERVJfU09VUkNFCisgICAgICAgICgKKyAgICAgICAgICAg
IHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICAgICAgdW5pZm9ybSBoaWdocCBzYW1w
bGVyMkQgdGV4MkRBcnJheVsyXTsKKyAgICAgICAgICAgIHZhcnlpbmcgdmVjMiB0ZXhjb29yZDsK
KworICAgICAgICAgICAgdmVjNCBjb21wdXRlRnJhZ0NvbG9yKGhpZ2hwIHNhbXBsZXIyRCBhVGV4
MkRBcnJheVsyXSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGV4dHVy
ZTJEKGFUZXgyREFycmF5WzBdLCB0ZXhjb29yZCkgKyB0ZXh0dXJlMkQoYVRleDJEQXJyYXlbMV0s
IHRleGNvb3JkKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdm9pZCBtYWluKCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSBjb21wdXRlRnJhZ0Nv
bG9yKHRleDJEQXJyYXkpOworICAgICAgICAgICAgfQorICAgICAgICApCisgICAgICAgICk7Cisg
ICAgfQorfTsKKworY2xhc3MgVGV4dHVyZTJEQXJyYXlUZXN0RVMzIDogcHVibGljIFRleENvb3Jk
RHJhd1Rlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIFRleHR1cmUyREFycmF5VGVzdEVTMygpIDog
VGV4Q29vcmREcmF3VGVzdCgpLCBtMkRBcnJheVRleHR1cmUoMCksIG1UZXh0dXJlQXJyYXlMb2Nh
dGlvbigtMSkge30KKworICAgIHN0ZDo6c3RyaW5nIGdldFZlcnRleFNoYWRlclNvdXJjZSgpIG92
ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoCisgICAgICAgICAgICAi
I3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICAgICAib3V0IHZlYzIgdGV4Y29vcmQ7XG4iCisg
ICAgICAgICAgICAiaW4gdmVjNCBwb3NpdGlvbjtcbiIKKyAgICAgICAgICAgICJ2b2lkIG1haW4o
KVxuIgorICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSB2
ZWM0KHBvc2l0aW9uLnh5LCAwLjAsIDEuMCk7XG4iCisgICAgICAgICAgICAiICAgIHRleGNvb3Jk
ID0gKHBvc2l0aW9uLnh5ICogMC41KSArIDAuNTtcbiIKKyAgICAgICAgICAgICJ9XG4iKTsKKyAg
ICB9CisKKyAgICBzdGQ6OnN0cmluZyBnZXRGcmFnbWVudFNoYWRlclNvdXJjZSgpIG92ZXJyaWRl
CisgICAgeworICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoCisgICAgICAgICAgICAiI3ZlcnNp
b24gMzAwIGVzXG4iCisgICAgICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgorICAg
ICAgICAgICAgInVuaWZvcm0gaGlnaHAgc2FtcGxlcjJEQXJyYXkgdGV4MkRBcnJheTtcbiIKKyAg
ICAgICAgICAgICJpbiB2ZWMyIHRleGNvb3JkO1xuIgorICAgICAgICAgICAgIm91dCB2ZWM0IGZy
YWdDb2xvcjtcbiIKKyAgICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAgICAgIntc
biIKKyAgICAgICAgICAgICIgICAgZnJhZ0NvbG9yID0gdGV4dHVyZSh0ZXgyREFycmF5LCB2ZWMz
KHRleGNvb3JkLngsIHRleGNvb3JkLnksIDAuMCkpO1xuIgorICAgICAgICAgICAgIn1cbiIpOwor
ICAgIH0KKworICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgVGV4Q29v
cmREcmF3VGVzdDo6U2V0VXAoKTsKKworICAgICAgICBzZXRVcFByb2dyYW0oKTsKKworICAgICAg
ICBtVGV4dHVyZUFycmF5TG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwg
InRleDJEQXJyYXkiKTsKKyAgICAgICAgQVNTRVJUX05FKC0xLCBtVGV4dHVyZUFycmF5TG9jYXRp
b24pOworCisgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm0yREFycmF5VGV4dHVyZSk7CisgICAg
ICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBv
dmVycmlkZQorICAgIHsKKyAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbTJEQXJyYXlUZXh0
dXJlKTsKKyAgICAgICAgVGV4Q29vcmREcmF3VGVzdDo6VGVhckRvd24oKTsKKyAgICB9CisKKyAg
ICBHTHVpbnQgbTJEQXJyYXlUZXh0dXJlOworICAgIEdMaW50IG1UZXh0dXJlQXJyYXlMb2NhdGlv
bjsKK307CisKK2NsYXNzIFRleHR1cmVTaXplVGV4dHVyZUFycmF5VGVzdCA6IHB1YmxpYyBUZXhD
b29yZERyYXdUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBUZXh0dXJlU2l6ZVRleHR1cmVBcnJh
eVRlc3QoKQorICAgICAgICA6IFRleENvb3JkRHJhd1Rlc3QoKSwKKyAgICAgICAgICBtVGV4dHVy
ZTJEQSgwKSwKKyAgICAgICAgICBtVGV4dHVyZTJEQigwKSwKKyAgICAgICAgICBtVGV4dHVyZTBM
b2NhdGlvbigtMSksCisgICAgICAgICAgbVRleHR1cmUxTG9jYXRpb24oLTEpCisgICAgeworICAg
IH0KKworICAgIHN0ZDo6c3RyaW5nIGdldFZlcnRleFNoYWRlclNvdXJjZSgpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoCisgICAgICAgICAgICAiI3ZlcnNpb24g
MzAwIGVzXG4iCisgICAgICAgICAgICAiaW4gdmVjNCBwb3NpdGlvbjtcbiIKKyAgICAgICAgICAg
ICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICIgICAgZ2xf
UG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLnh5LCAwLjAsIDEuMCk7XG4iCisgICAgICAgICAgICAi
fVxuIik7CisgICAgfQorCisgICAgc3RkOjpzdHJpbmcgZ2V0RnJhZ21lbnRTaGFkZXJTb3VyY2Uo
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKAorICAgICAgICAg
ICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9h
dDtcbiIKKyAgICAgICAgICAgICJ1bmlmb3JtIGhpZ2hwIHNhbXBsZXIyRCB0ZXgyREFycmF5WzJd
O1xuIgorICAgICAgICAgICAgIm91dCB2ZWM0IGZyYWdDb2xvcjtcbiIKKyAgICAgICAgICAgICJ2
b2lkIG1haW4oKVxuIgorICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICIgICAgZmxvYXQg
cmVkID0gZmxvYXQodGV4dHVyZVNpemUodGV4MkRBcnJheVswXSwgMCkueCkgLyAyNTUuMDtcbiIK
KyAgICAgICAgICAgICIgICAgZmxvYXQgZ3JlZW4gPSBmbG9hdCh0ZXh0dXJlU2l6ZSh0ZXgyREFy
cmF5WzFdLCAwKS54KSAvIDI1NS4wO1xuIgorICAgICAgICAgICAgIiAgICBmcmFnQ29sb3IgPSB2
ZWM0KHJlZCwgZ3JlZW4sIDAuMCwgMS4wKTtcbiIKKyAgICAgICAgICAgICJ9XG4iKTsKKyAgICB9
CisKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFRleENvb3JkRHJh
d1Rlc3Q6OlNldFVwKCk7CisKKyAgICAgICAgc2V0VXBQcm9ncmFtKCk7CisKKyAgICAgICAgbVRl
eHR1cmUwTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInRleDJEQXJy
YXlbMF0iKTsKKyAgICAgICAgQVNTRVJUX05FKC0xLCBtVGV4dHVyZTBMb2NhdGlvbik7CisgICAg
ICAgIG1UZXh0dXJlMUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ0
ZXgyREFycmF5WzFdIik7CisgICAgICAgIEFTU0VSVF9ORSgtMSwgbVRleHR1cmUxTG9jYXRpb24p
OworCisgICAgICAgIG1UZXh0dXJlMkRBID0gY3JlYXRlMkRUZXh0dXJlKCk7CisgICAgICAgIG1U
ZXh0dXJlMkRCID0gY3JlYXRlMkRUZXh0dXJlKCk7CisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbVRleHR1cmUyREEpOworICAgICAgICBnbERlbGV0ZVRl
eHR1cmVzKDEsICZtVGV4dHVyZTJEQik7CisgICAgICAgIFRleENvb3JkRHJhd1Rlc3Q6OlRlYXJE
b3duKCk7CisgICAgfQorCisgICAgR0x1aW50IG1UZXh0dXJlMkRBOworICAgIEdMdWludCBtVGV4
dHVyZTJEQjsKKyAgICBHTGludCBtVGV4dHVyZTBMb2NhdGlvbjsKKyAgICBHTGludCBtVGV4dHVy
ZTFMb2NhdGlvbjsKK307CisKK2NsYXNzIFRleHR1cmUzRFRlc3RFUzMgOiBwdWJsaWMgVGV4Q29v
cmREcmF3VGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgVGV4dHVyZTNEVGVzdEVTMygpIDogVGV4
Q29vcmREcmF3VGVzdCgpLCBtVGV4dHVyZTNEKDApLCBtVGV4dHVyZTNEVW5pZm9ybUxvY2F0aW9u
KC0xKSB7fQorCisgICAgc3RkOjpzdHJpbmcgZ2V0VmVydGV4U2hhZGVyU291cmNlKCkgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnN0cmluZygKKyAgICAgICAgICAgICIjdmVy
c2lvbiAzMDAgZXNcbiIKKyAgICAgICAgICAgICJvdXQgdmVjMiB0ZXhjb29yZDtcbiIKKyAgICAg
ICAgICAgICJpbiB2ZWM0IHBvc2l0aW9uO1xuIgorICAgICAgICAgICAgInZvaWQgbWFpbigpXG4i
CisgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQo
cG9zaXRpb24ueHksIDAuMCwgMS4wKTtcbiIKKyAgICAgICAgICAgICIgICAgdGV4Y29vcmQgPSAo
cG9zaXRpb24ueHkgKiAwLjUpICsgMC41O1xuIgorICAgICAgICAgICAgIn1cbiIpOworICAgIH0K
KworICAgIHN0ZDo6c3RyaW5nIGdldEZyYWdtZW50U2hhZGVyU291cmNlKCkgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIHJldHVybiBzdGQ6OnN0cmluZygKKyAgICAgICAgICAgICIjdmVyc2lvbiAz
MDAgZXNcbiIKKyAgICAgICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCisgICAgICAg
ICAgICAidW5pZm9ybSBoaWdocCBzYW1wbGVyM0QgdGV4M0Q7XG4iCisgICAgICAgICAgICAiaW4g
dmVjMiB0ZXhjb29yZDtcbiIKKyAgICAgICAgICAgICJvdXQgdmVjNCBmcmFnQ29sb3I7XG4iCisg
ICAgICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAg
ICAiICAgIGZyYWdDb2xvciA9IHRleHR1cmUodGV4M0QsIHZlYzModGV4Y29vcmQsIDAuMCkpO1xu
IgorICAgICAgICAgICAgIn1cbiIpOworICAgIH0KKworICAgIHZvaWQgU2V0VXAoKSBvdmVycmlk
ZQorICAgIHsKKyAgICAgICAgVGV4Q29vcmREcmF3VGVzdDo6U2V0VXAoKTsKKworICAgICAgICBn
bEdlblRleHR1cmVzKDEsICZtVGV4dHVyZTNEKTsKKworICAgICAgICBzZXRVcFByb2dyYW0oKTsK
KworICAgICAgICBtVGV4dHVyZTNEVW5pZm9ybUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRp
b24obVByb2dyYW0sICJ0ZXgzRCIpOworICAgICAgICBBU1NFUlRfTkUoLTEsIG1UZXh0dXJlM0RV
bmlmb3JtTG9jYXRpb24pOworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbVRleHR1cmUzRCk7CisgICAgICAg
IFRleENvb3JkRHJhd1Rlc3Q6OlRlYXJEb3duKCk7CisgICAgfQorCisgICAgR0x1aW50IG1UZXh0
dXJlM0Q7CisgICAgR0xpbnQgbVRleHR1cmUzRFVuaWZvcm1Mb2NhdGlvbjsKK307CisKK2NsYXNz
IFNoYWRvd1NhbXBsZXJQbHVzU2FtcGxlcjNEVGVzdEVTMyA6IHB1YmxpYyBUZXhDb29yZERyYXdU
ZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBTaGFkb3dTYW1wbGVyUGx1c1NhbXBsZXIzRFRlc3RF
UzMoKQorICAgICAgICA6IFRleENvb3JkRHJhd1Rlc3QoKSwKKyAgICAgICAgICBtVGV4dHVyZVNo
YWRvdygwKSwKKyAgICAgICAgICBtVGV4dHVyZTNEKDApLAorICAgICAgICAgIG1UZXh0dXJlU2hh
ZG93VW5pZm9ybUxvY2F0aW9uKC0xKSwKKyAgICAgICAgICBtVGV4dHVyZTNEVW5pZm9ybUxvY2F0
aW9uKC0xKSwKKyAgICAgICAgICBtRGVwdGhSZWZVbmlmb3JtTG9jYXRpb24oLTEpCisgICAgewor
ICAgIH0KKworICAgIHN0ZDo6c3RyaW5nIGdldFZlcnRleFNoYWRlclNvdXJjZSgpIG92ZXJyaWRl
CisgICAgeworICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoCisgICAgICAgICAgICAiI3ZlcnNp
b24gMzAwIGVzXG4iCisgICAgICAgICAgICAib3V0IHZlYzIgdGV4Y29vcmQ7XG4iCisgICAgICAg
ICAgICAiaW4gdmVjNCBwb3NpdGlvbjtcbiIKKyAgICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgor
ICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBv
c2l0aW9uLnh5LCAwLjAsIDEuMCk7XG4iCisgICAgICAgICAgICAiICAgIHRleGNvb3JkID0gKHBv
c2l0aW9uLnh5ICogMC41KSArIDAuNTtcbiIKKyAgICAgICAgICAgICJ9XG4iKTsKKyAgICB9CisK
KyAgICBzdGQ6OnN0cmluZyBnZXRGcmFnbWVudFNoYWRlclNvdXJjZSgpIG92ZXJyaWRlCisgICAg
eworICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoCisgICAgICAgICAgICAiI3ZlcnNpb24gMzAw
IGVzXG4iCisgICAgICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgorICAgICAgICAg
ICAgInVuaWZvcm0gaGlnaHAgc2FtcGxlcjJEU2hhZG93IHRleDJEU2hhZG93O1xuIgorICAgICAg
ICAgICAgInVuaWZvcm0gaGlnaHAgc2FtcGxlcjNEIHRleDNEO1xuIgorICAgICAgICAgICAgImlu
IHZlYzIgdGV4Y29vcmQ7XG4iCisgICAgICAgICAgICAidW5pZm9ybSBmbG9hdCBkZXB0aFJlZjtc
biIKKyAgICAgICAgICAgICJvdXQgdmVjNCBmcmFnQ29sb3I7XG4iCisgICAgICAgICAgICAidm9p
ZCBtYWluKClcbiIKKyAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAiICAgIGZyYWdDb2xv
ciA9IHZlYzQodGV4dHVyZSh0ZXgyRFNoYWRvdywgdmVjMyh0ZXhjb29yZCwgZGVwdGhSZWYpKSAq
IDAuNSk7XG4iCisgICAgICAgICAgICAiICAgIGZyYWdDb2xvciArPSB0ZXh0dXJlKHRleDNELCB2
ZWMzKHRleGNvb3JkLCAwLjApKTtcbiIKKyAgICAgICAgICAgICJ9XG4iKTsKKyAgICB9CisKKyAg
ICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFRleENvb3JkRHJhd1Rlc3Q6
OlNldFVwKCk7CisKKyAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbVRleHR1cmUzRCk7CisKKyAg
ICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbVRleHR1cmVTaGFkb3cpOworICAgICAgICBnbEJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlU2hhZG93KTsKKyAgICAgICAgZ2xUZXhQYXJh
bWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfQ09NUEFSRV9NT0RFLCBHTF9DT01QQVJF
X1JFRl9UT19URVhUVVJFKTsKKworICAgICAgICBzZXRVcFByb2dyYW0oKTsKKworICAgICAgICBt
VGV4dHVyZVNoYWRvd1VuaWZvcm1Mb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9n
cmFtLCAidGV4MkRTaGFkb3ciKTsKKyAgICAgICAgQVNTRVJUX05FKC0xLCBtVGV4dHVyZVNoYWRv
d1VuaWZvcm1Mb2NhdGlvbik7CisgICAgICAgIG1UZXh0dXJlM0RVbmlmb3JtTG9jYXRpb24gPSBn
bEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInRleDNEIik7CisgICAgICAgIEFTU0VSVF9O
RSgtMSwgbVRleHR1cmUzRFVuaWZvcm1Mb2NhdGlvbik7CisgICAgICAgIG1EZXB0aFJlZlVuaWZv
cm1Mb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAiZGVwdGhSZWYiKTsK
KyAgICAgICAgQVNTRVJUX05FKC0xLCBtRGVwdGhSZWZVbmlmb3JtTG9jYXRpb24pOworICAgIH0K
KworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgZ2xEZWxldGVU
ZXh0dXJlcygxLCAmbVRleHR1cmVTaGFkb3cpOworICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEs
ICZtVGV4dHVyZTNEKTsKKyAgICAgICAgVGV4Q29vcmREcmF3VGVzdDo6VGVhckRvd24oKTsKKyAg
ICB9CisKKyAgICBHTHVpbnQgbVRleHR1cmVTaGFkb3c7CisgICAgR0x1aW50IG1UZXh0dXJlM0Q7
CisgICAgR0xpbnQgbVRleHR1cmVTaGFkb3dVbmlmb3JtTG9jYXRpb247CisgICAgR0xpbnQgbVRl
eHR1cmUzRFVuaWZvcm1Mb2NhdGlvbjsKKyAgICBHTGludCBtRGVwdGhSZWZVbmlmb3JtTG9jYXRp
b247Cit9OworCitjbGFzcyBTYW1wbGVyVHlwZU1peFRlc3RFUzMgOiBwdWJsaWMgVGV4Q29vcmRE
cmF3VGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgU2FtcGxlclR5cGVNaXhUZXN0RVMzKCkKKyAg
ICAgICAgOiBUZXhDb29yZERyYXdUZXN0KCksCisgICAgICAgICAgbVRleHR1cmUyRCgwKSwKKyAg
ICAgICAgICBtVGV4dHVyZUN1YmUoMCksCisgICAgICAgICAgbVRleHR1cmUyRFNoYWRvdygwKSwK
KyAgICAgICAgICBtVGV4dHVyZUN1YmVTaGFkb3coMCksCisgICAgICAgICAgbVRleHR1cmUyRFVu
aWZvcm1Mb2NhdGlvbigtMSksCisgICAgICAgICAgbVRleHR1cmVDdWJlVW5pZm9ybUxvY2F0aW9u
KC0xKSwKKyAgICAgICAgICBtVGV4dHVyZTJEU2hhZG93VW5pZm9ybUxvY2F0aW9uKC0xKSwKKyAg
ICAgICAgICBtVGV4dHVyZUN1YmVTaGFkb3dVbmlmb3JtTG9jYXRpb24oLTEpLAorICAgICAgICAg
IG1EZXB0aFJlZlVuaWZvcm1Mb2NhdGlvbigtMSkKKyAgICB7CisgICAgfQorCisgICAgc3RkOjpz
dHJpbmcgZ2V0VmVydGV4U2hhZGVyU291cmNlKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJl
dHVybiBzdGQ6OnN0cmluZygKKyAgICAgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAg
ICAgICAgICJvdXQgdmVjMiB0ZXhjb29yZDtcbiIKKyAgICAgICAgICAgICJpbiB2ZWM0IHBvc2l0
aW9uO1xuIgorICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICAgICAie1xuIgor
ICAgICAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24ueHksIDAuMCwgMS4w
KTtcbiIKKyAgICAgICAgICAgICIgICAgdGV4Y29vcmQgPSAocG9zaXRpb24ueHkgKiAwLjUpICsg
MC41O1xuIgorICAgICAgICAgICAgIn1cbiIpOworICAgIH0KKworICAgIHN0ZDo6c3RyaW5nIGdl
dEZyYWdtZW50U2hhZGVyU291cmNlKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBz
dGQ6OnN0cmluZygKKyAgICAgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgICAg
ICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCisgICAgICAgICAgICAidW5pZm9ybSBoaWdocCBz
YW1wbGVyMkQgdGV4MkQ7XG4iCisgICAgICAgICAgICAidW5pZm9ybSBoaWdocCBzYW1wbGVyQ3Vi
ZSB0ZXhDdWJlO1xuIgorICAgICAgICAgICAgInVuaWZvcm0gaGlnaHAgc2FtcGxlcjJEU2hhZG93
IHRleDJEU2hhZG93O1xuIgorICAgICAgICAgICAgInVuaWZvcm0gaGlnaHAgc2FtcGxlckN1YmVT
aGFkb3cgdGV4Q3ViZVNoYWRvdztcbiIKKyAgICAgICAgICAgICJpbiB2ZWMyIHRleGNvb3JkO1xu
IgorICAgICAgICAgICAgInVuaWZvcm0gZmxvYXQgZGVwdGhSZWY7XG4iCisgICAgICAgICAgICAi
b3V0IHZlYzQgZnJhZ0NvbG9yO1xuIgorICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAg
ICAgICAgICAie1xuIgorICAgICAgICAgICAgIiAgICBmcmFnQ29sb3IgPSB0ZXh0dXJlKHRleDJE
LCB0ZXhjb29yZCk7XG4iCisgICAgICAgICAgICAiICAgIGZyYWdDb2xvciArPSB0ZXh0dXJlKHRl
eEN1YmUsIHZlYzMoMS4wLCAwLjAsIDAuMCkpO1xuIgorICAgICAgICAgICAgIiAgICBmcmFnQ29s
b3IgKz0gdmVjNCh0ZXh0dXJlKHRleDJEU2hhZG93LCB2ZWMzKHRleGNvb3JkLCBkZXB0aFJlZikp
ICogMC4yNSk7XG4iCisgICAgICAgICAgICAiICAgIGZyYWdDb2xvciArPSB2ZWM0KHRleHR1cmUo
dGV4Q3ViZVNoYWRvdywgdmVjNCgxLjAsIDAuMCwgMC4wLCBkZXB0aFJlZikpICogIgorICAgICAg
ICAgICAgIjAuMTI1KTtcbiIKKyAgICAgICAgICAgICJ9XG4iKTsKKyAgICB9CisKKyAgICB2b2lk
IFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFRleENvb3JkRHJhd1Rlc3Q6OlNldFVw
KCk7CisKKyAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbVRleHR1cmUyRCk7CisgICAgICAgIGds
R2VuVGV4dHVyZXMoMSwgJm1UZXh0dXJlQ3ViZSk7CisKKyAgICAgICAgZ2xHZW5UZXh0dXJlcygx
LCAmbVRleHR1cmUyRFNoYWRvdyk7CisgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8y
RCwgbVRleHR1cmUyRFNoYWRvdyk7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX0NPTVBBUkVfTU9ERSwgR0xfQ09NUEFSRV9SRUZfVE9fVEVYVFVSRSk7
CisKKyAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbVRleHR1cmVDdWJlU2hhZG93KTsKKyAgICAg
ICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFX0NVQkVfTUFQLCBtVGV4dHVyZUN1YmVTaGFkb3cp
OworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9DVUJFX01BUCwgR0xfVEVYVFVS
RV9DT01QQVJFX01PREUsIEdMX0NPTVBBUkVfUkVGX1RPX1RFWFRVUkUpOworCisgICAgICAgIHNl
dFVwUHJvZ3JhbSgpOworCisgICAgICAgIG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRpb24gPSBnbEdl
dFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInRleDJEIik7CisgICAgICAgIEFTU0VSVF9ORSgt
MSwgbVRleHR1cmUyRFVuaWZvcm1Mb2NhdGlvbik7CisgICAgICAgIG1UZXh0dXJlQ3ViZVVuaWZv
cm1Mb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidGV4Q3ViZSIpOwor
ICAgICAgICBBU1NFUlRfTkUoLTEsIG1UZXh0dXJlQ3ViZVVuaWZvcm1Mb2NhdGlvbik7CisgICAg
ICAgIG1UZXh0dXJlMkRTaGFkb3dVbmlmb3JtTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlv
bihtUHJvZ3JhbSwgInRleDJEU2hhZG93Iik7CisgICAgICAgIEFTU0VSVF9ORSgtMSwgbVRleHR1
cmUyRFNoYWRvd1VuaWZvcm1Mb2NhdGlvbik7CisgICAgICAgIG1UZXh0dXJlQ3ViZVNoYWRvd1Vu
aWZvcm1Mb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidGV4Q3ViZVNo
YWRvdyIpOworICAgICAgICBBU1NFUlRfTkUoLTEsIG1UZXh0dXJlQ3ViZVNoYWRvd1VuaWZvcm1M
b2NhdGlvbik7CisgICAgICAgIG1EZXB0aFJlZlVuaWZvcm1Mb2NhdGlvbiA9IGdsR2V0VW5pZm9y
bUxvY2F0aW9uKG1Qcm9ncmFtLCAiZGVwdGhSZWYiKTsKKyAgICAgICAgQVNTRVJUX05FKC0xLCBt
RGVwdGhSZWZVbmlmb3JtTG9jYXRpb24pOworCisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigp
OworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAg
Z2xEZWxldGVUZXh0dXJlcygxLCAmbVRleHR1cmUyRCk7CisgICAgICAgIGdsRGVsZXRlVGV4dHVy
ZXMoMSwgJm1UZXh0dXJlQ3ViZSk7CisgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0
dXJlMkRTaGFkb3cpOworICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtVGV4dHVyZUN1YmVT
aGFkb3cpOworICAgICAgICBUZXhDb29yZERyYXdUZXN0OjpUZWFyRG93bigpOworICAgIH0KKwor
ICAgIEdMdWludCBtVGV4dHVyZTJEOworICAgIEdMdWludCBtVGV4dHVyZUN1YmU7CisgICAgR0x1
aW50IG1UZXh0dXJlMkRTaGFkb3c7CisgICAgR0x1aW50IG1UZXh0dXJlQ3ViZVNoYWRvdzsKKyAg
ICBHTGludCBtVGV4dHVyZTJEVW5pZm9ybUxvY2F0aW9uOworICAgIEdMaW50IG1UZXh0dXJlQ3Vi
ZVVuaWZvcm1Mb2NhdGlvbjsKKyAgICBHTGludCBtVGV4dHVyZTJEU2hhZG93VW5pZm9ybUxvY2F0
aW9uOworICAgIEdMaW50IG1UZXh0dXJlQ3ViZVNoYWRvd1VuaWZvcm1Mb2NhdGlvbjsKKyAgICBH
TGludCBtRGVwdGhSZWZVbmlmb3JtTG9jYXRpb247Cit9OworCitjbGFzcyBTYW1wbGVySW5TdHJ1
Y3RUZXN0IDogcHVibGljIFRleHR1cmUyRFRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIFNhbXBs
ZXJJblN0cnVjdFRlc3QoKSA6IFRleHR1cmUyRFRlc3QoKSB7fQorCisgICAgY29uc3QgY2hhciAq
Z2V0VGV4dHVyZVVuaWZvcm1OYW1lKCkgb3ZlcnJpZGUgeyByZXR1cm4gInVzLnRleCI7IH0KKwor
ICAgIHN0ZDo6c3RyaW5nIGdldEZyYWdtZW50U2hhZGVyU291cmNlKCkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIHJldHVybiBzdGQ6OnN0cmluZygKKyAgICAgICAgICAgICJwcmVjaXNpb24gaGln
aHAgZmxvYXQ7XG4iCisgICAgICAgICAgICAic3RydWN0IFNcbiIKKyAgICAgICAgICAgICJ7XG4i
CisgICAgICAgICAgICAiICAgIHZlYzQgYTtcbiIKKyAgICAgICAgICAgICIgICAgaGlnaHAgc2Ft
cGxlcjJEIHRleDtcbiIKKyAgICAgICAgICAgICJ9O1xuIgorICAgICAgICAgICAgInVuaWZvcm0g
UyB1cztcbiIKKyAgICAgICAgICAgICJ2YXJ5aW5nIHZlYzIgdGV4Y29vcmQ7XG4iCisgICAgICAg
ICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAiICAg
IGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh1cy50ZXgsIHRleGNvb3JkICsgdXMuYS54KTtcbiIK
KyAgICAgICAgICAgICJ9XG4iKTsKKyAgICB9CisKKyAgICB2b2lkIHJ1blNhbXBsZXJJblN0cnVj
dFRlc3QoKQorICAgIHsKKyAgICAgICAgc2V0VXBQcm9ncmFtKCk7CisKKyAgICAgICAgZ2xBY3Rp
dmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
XzJELCBtVGV4dHVyZTJEKTsKKyAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAs
IEdMX1JHQkEsIDEsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAg
ICAgICAgICAgICAmR0xDb2xvcjo6Z3JlZW4pOworICAgICAgICBkcmF3UXVhZChtUHJvZ3JhbSwg
InBvc2l0aW9uIiwgMC41Zik7CisgICAgICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBH
TENvbG9yOjpncmVlbik7CisgICAgfQorfTsKKworY2xhc3MgU2FtcGxlckluU3RydWN0QXNGdW5j
dGlvblBhcmFtZXRlclRlc3QgOiBwdWJsaWMgU2FtcGxlckluU3RydWN0VGVzdAoreworICBwcm90
ZWN0ZWQ6CisgICAgU2FtcGxlckluU3RydWN0QXNGdW5jdGlvblBhcmFtZXRlclRlc3QoKSA6IFNh
bXBsZXJJblN0cnVjdFRlc3QoKSB7fQorCisgICAgc3RkOjpzdHJpbmcgZ2V0RnJhZ21lbnRTaGFk
ZXJTb3VyY2UoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKAor
ICAgICAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKKyAgICAgICAgICAgICJzdHJ1
Y3QgU1xuIgorICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICIgICAgdmVjNCBhO1xuIgor
ICAgICAgICAgICAgIiAgICBoaWdocCBzYW1wbGVyMkQgdGV4O1xuIgorICAgICAgICAgICAgIn07
XG4iCisgICAgICAgICAgICAidW5pZm9ybSBTIHVzO1xuIgorICAgICAgICAgICAgInZhcnlpbmcg
dmVjMiB0ZXhjb29yZDtcbiIKKyAgICAgICAgICAgICJ2ZWM0IHNhbXBsZUZyb20oUyBzKSB7XG4i
CisgICAgICAgICAgICAiICAgIHJldHVybiB0ZXh0dXJlMkQocy50ZXgsIHRleGNvb3JkICsgcy5h
LngpO1xuIgorICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgor
ICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gc2FtcGxl
RnJvbSh1cyk7XG4iCisgICAgICAgICAgICAifVxuIik7CisgICAgfQorfTsKKworY2xhc3MgU2Ft
cGxlckluU3RydWN0QXJyYXlBc0Z1bmN0aW9uUGFyYW1ldGVyVGVzdCA6IHB1YmxpYyBTYW1wbGVy
SW5TdHJ1Y3RUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBTYW1wbGVySW5TdHJ1Y3RBcnJheUFz
RnVuY3Rpb25QYXJhbWV0ZXJUZXN0KCkgOiBTYW1wbGVySW5TdHJ1Y3RUZXN0KCkge30KKworICAg
IGNvbnN0IGNoYXIgKmdldFRleHR1cmVVbmlmb3JtTmFtZSgpIG92ZXJyaWRlIHsgcmV0dXJuICJ1
c1swXS50ZXgiOyB9CisKKyAgICBzdGQ6OnN0cmluZyBnZXRGcmFnbWVudFNoYWRlclNvdXJjZSgp
IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoCisgICAgICAgICAg
ICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgorICAgICAgICAgICAgInN0cnVjdCBTXG4iCisg
ICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgIiAgICB2ZWM0IGE7XG4iCisgICAgICAgICAg
ICAiICAgIGhpZ2hwIHNhbXBsZXIyRCB0ZXg7XG4iCisgICAgICAgICAgICAifTtcbiIKKyAgICAg
ICAgICAgICJ1bmlmb3JtIFMgdXNbMV07XG4iCisgICAgICAgICAgICAidmFyeWluZyB2ZWMyIHRl
eGNvb3JkO1xuIgorICAgICAgICAgICAgInZlYzQgc2FtcGxlRnJvbShTIHMpIHtcbiIKKyAgICAg
ICAgICAgICIgICAgcmV0dXJuIHRleHR1cmUyRChzLnRleCwgdGV4Y29vcmQgKyBzLmEueCk7XG4i
CisgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAg
ICAgICAie1xuIgorICAgICAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSBzYW1wbGVGcm9tKHVz
WzBdKTtcbiIKKyAgICAgICAgICAgICJ9XG4iKTsKKyAgICB9Cit9OworCitjbGFzcyBTYW1wbGVy
SW5OZXN0ZWRTdHJ1Y3RBc0Z1bmN0aW9uUGFyYW1ldGVyVGVzdCA6IHB1YmxpYyBTYW1wbGVySW5T
dHJ1Y3RUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBTYW1wbGVySW5OZXN0ZWRTdHJ1Y3RBc0Z1
bmN0aW9uUGFyYW1ldGVyVGVzdCgpIDogU2FtcGxlckluU3RydWN0VGVzdCgpIHt9CisKKyAgICBj
b25zdCBjaGFyICpnZXRUZXh0dXJlVW5pZm9ybU5hbWUoKSBvdmVycmlkZSB7IHJldHVybiAidXNb
MF0uc3ViLnRleCI7IH0KKworICAgIHN0ZDo6c3RyaW5nIGdldEZyYWdtZW50U2hhZGVyU291cmNl
KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnN0cmluZygKKyAgICAgICAg
ICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCisgICAgICAgICAgICAic3RydWN0IFNVQlxu
IgorICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICIgICAgdmVjNCBhO1xuIgorICAgICAg
ICAgICAgIiAgICBoaWdocCBzYW1wbGVyMkQgdGV4O1xuIgorICAgICAgICAgICAgIn07XG4iCisg
ICAgICAgICAgICAic3RydWN0IFNcbiIKKyAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAi
ICAgIFNVQiBzdWI7XG4iCisgICAgICAgICAgICAifTtcbiIKKyAgICAgICAgICAgICJ1bmlmb3Jt
IFMgdXNbMV07XG4iCisgICAgICAgICAgICAidmFyeWluZyB2ZWMyIHRleGNvb3JkO1xuIgorICAg
ICAgICAgICAgInZlYzQgc2FtcGxlRnJvbShTVUIgcykge1xuIgorICAgICAgICAgICAgIiAgICBy
ZXR1cm4gdGV4dHVyZTJEKHMudGV4LCB0ZXhjb29yZCArIHMuYS54KTtcbiIKKyAgICAgICAgICAg
ICJ9XG4iCisgICAgICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgICAgICJ7XG4iCisg
ICAgICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHNhbXBsZUZyb20odXNbMF0uc3ViKTtcbiIK
KyAgICAgICAgICAgICJ9XG4iKTsKKyAgICB9Cit9OworCitjbGFzcyBTYW1wbGVySW5TdHJ1Y3RB
bmRPdGhlclZhcmlhYmxlVGVzdCA6IHB1YmxpYyBTYW1wbGVySW5TdHJ1Y3RUZXN0Cit7CisgIHBy
b3RlY3RlZDoKKyAgICBTYW1wbGVySW5TdHJ1Y3RBbmRPdGhlclZhcmlhYmxlVGVzdCgpIDogU2Ft
cGxlckluU3RydWN0VGVzdCgpIHt9CisKKyAgICBzdGQ6OnN0cmluZyBnZXRGcmFnbWVudFNoYWRl
clNvdXJjZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoCisg
ICAgICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgorICAgICAgICAgICAgInN0cnVj
dCBTXG4iCisgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgIiAgICB2ZWM0IGE7XG4iCisg
ICAgICAgICAgICAiICAgIGhpZ2hwIHNhbXBsZXIyRCB0ZXg7XG4iCisgICAgICAgICAgICAifTtc
biIKKyAgICAgICAgICAgICJ1bmlmb3JtIFMgdXM7XG4iCisgICAgICAgICAgICAidW5pZm9ybSBm
bG9hdCB1c190ZXg7XG4iCisgICAgICAgICAgICAidmFyeWluZyB2ZWMyIHRleGNvb3JkO1xuIgor
ICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICAgICAie1xuIgorICAgICAgICAg
ICAgIiAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQodXMudGV4LCB0ZXhjb29yZCArIHVzLmEu
eCArIHVzX3RleCk7XG4iCisgICAgICAgICAgICAifVxuIik7CisgICAgfQorfTsKKworVEVTVF9Q
KFRleHR1cmUyRFRlc3QsIE5lZ2F0aXZlQVBJU3ViSW1hZ2UpCit7CisgICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfTk9f
RVJST1IpOworCisgICAgc2V0VXBQcm9ncmFtKCk7CisKKyAgICBjb25zdCBHTHVieXRlICpwaXhl
bHNbMjBdID0geyAwIH07CisgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDEs
IDEsIDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVscyk7CisgICAgRVhQRUNU
X0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOworfQorCisvLyBUZXN0IHRoYXQgcXVlcnlpbmcg
R0xfVEVYVFVSRV9CSU5ESU5HKiBkb2Vzbid0IGNhdXNlIGFuIHVuZXhwZWN0ZWQgZXJyb3IuCitU
RVNUX1AoVGV4dHVyZTJEVGVzdCwgUXVlcnlCaW5kaW5nKQoreworICAgIGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV8yRCwgMCk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX05PX0VSUk9SKTsKKwor
ICAgIEdMaW50IHRleHR1cmVCaW5kaW5nOworICAgIGdsR2V0SW50ZWdlcnYoR0xfVEVYVFVSRV9C
SU5ESU5HXzJELCAmdGV4dHVyZUJpbmRpbmcpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwor
ICAgIEVYUEVDVF9FUSgwLCB0ZXh0dXJlQmluZGluZyk7CisKKyAgICBnbEdldEludGVnZXJ2KEdM
X1RFWFRVUkVfQklORElOR19FWFRFUk5BTF9PRVMsICZ0ZXh0dXJlQmluZGluZyk7CisgICAgaWYg
KGV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSB8fAorICAgICAg
ICBleHRlbnNpb25FbmFibGVkKCJHTF9OVl9FR0xfc3RyZWFtX2NvbnN1bWVyX2V4dGVybmFsIikp
CisgICAgeworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICAgICAgRVhQRUNUX0VR
KDAsIHRleHR1cmVCaW5kaW5nKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgRVhQ
RUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7CisgICAgfQorfQorCitURVNUX1AoVGV4dHVy
ZTJEVGVzdCwgWmVyb1NpemVkVXBsb2FkcykKK3sKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfMkQsIG1UZXh0dXJlMkQpOworICAgIEVYUEVDVF9HTF9FUlJPUihHTF9OT19FUlJPUik7CisK
KyAgICBzZXRVcFByb2dyYW0oKTsKKworICAgIC8vIFVzZSB0aGUgdGV4dHVyZSBmaXJzdCB0byBt
YWtlIHN1cmUgaXQncyBpbiB2aWRlbyBtZW1vcnkKKyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0p
OworICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRpb24sIDApOworICAgIGRy
YXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgIGNvbnN0IEdMdWJ5dGUg
KnBpeGVsWzRdID0geyAwIH07CisKKyAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwg
MCwgMCwgMCwgMCwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWwpOworICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQs
IDAsIDAsIDAsIDAsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVsKTsKKyAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJE
LCAwLCAwLCAwLCAxLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbCk7CisgICAg
RVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFRlc3QgZHJhd2luZyB3aXRoIHR3byB0ZXh0
dXJlIHR5cGVzLCB0byB0cmlnZ2VyIGFuIEFOR0xFIGJ1ZyBpbiB2YWxpZGF0aW9uCitURVNUX1Ao
VGV4dHVyZUN1YmVUZXN0LCBDdWJlTWFwQnVnKQoreworICAgIGdsQWN0aXZlVGV4dHVyZShHTF9U
RVhUVVJFMCk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEKTsK
KyAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTEpOworICAgIGdsQmluZFRleHR1cmUoR0xf
VEVYVFVSRV9DVUJFX01BUCwgbVRleHR1cmVDdWJlKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xf
Tk9fRVJST1IpOworCisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICBnbFVuaWZvcm0x
aShtVGV4dHVyZTJEVW5pZm9ybUxvY2F0aW9uLCAwKTsKKyAgICBnbFVuaWZvcm0xaShtVGV4dHVy
ZUN1YmVVbmlmb3JtTG9jYXRpb24sIDEpOworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRp
b24iLCAwLjVmKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKK30KKworLy8gVGVzdCBkcmF3
aW5nIHdpdGggdHdvIHRleHR1cmUgdHlwZXMgYWNjZXNzZWQgZnJvbSB0aGUgc2FtZSBzaGFkZXIg
YW5kIGNoZWNrIHRoYXQgdGhlIHJlc3VsdCBvZgorLy8gZHJhd2luZyBpcyBjb3JyZWN0LgorVEVT
VF9QKFRleHR1cmVDdWJlVGVzdCwgQ3ViZU1hcERyYXcpCit7CisgICAgR0x1Ynl0ZSB0ZXhEYXRh
WzRdOworICAgIHRleERhdGFbMF0gPSAwOworICAgIHRleERhdGFbMV0gPSA2MDsKKyAgICB0ZXhE
YXRhWzJdID0gMDsKKyAgICB0ZXhEYXRhWzNdID0gMjU1OworCisgICAgZ2xBY3RpdmVUZXh0dXJl
KEdMX1RFWFRVUkUwKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJl
MkQpOworICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCAwLCAwLCAxLCAxLCBH
TF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCB0ZXhEYXRhKTsKKworICAgIGdsQWN0aXZlVGV4dHVy
ZShHTF9URVhUVVJFMSk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFX0NVQkVfTUFQLCBt
VGV4dHVyZUN1YmUpOworICAgIHRleERhdGFbMV0gPSAxMjA7CisgICAgZ2xUZXhTdWJJbWFnZTJE
KEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwgMCwgMCwgMCwgMSwgMSwgR0xfUkdCQSwg
R0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAgICAgdGV4RGF0YSk7CisgICAgRVhQ
RUNUX0dMX0VSUk9SKEdMX05PX0VSUk9SKTsKKworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7
CisgICAgZ2xVbmlmb3JtMWkobVRleHR1cmUyRFVuaWZvcm1Mb2NhdGlvbiwgMCk7CisgICAgZ2xV
bmlmb3JtMWkobVRleHR1cmVDdWJlVW5pZm9ybUxvY2F0aW9uLCAxKTsKKyAgICBkcmF3UXVhZCht
UHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisK
KyAgICBpbnQgcHggPSBnZXRXaW5kb3dXaWR0aCgpIC0gMTsKKyAgICBpbnQgcHkgPSAwOworICAg
IEVYUEVDVF9QSVhFTF9ORUFSKHB4LCBweSwgMCwgMTgwLCAwLCAyNTUsIDIpOworfQorCitURVNU
X1AoU2FtcGxlcjJEQXNGdW5jdGlvblBhcmFtZXRlclRlc3QsIFNhbXBsZXIyREFzRnVuY3Rpb25Q
YXJhbWV0ZXIpCit7CisgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKKyAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOworICAgIEdMdWJ5dGUgdGV4RGF0
YVs0XTsKKyAgICB0ZXhEYXRhWzBdID0gMDsKKyAgICB0ZXhEYXRhWzFdID0gMTI4OworICAgIHRl
eERhdGFbMl0gPSAwOworICAgIHRleERhdGFbM10gPSAyNTU7CisgICAgZ2xUZXhTdWJJbWFnZTJE
KEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUs
IHRleERhdGEpOworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgZ2xVbmlmb3JtMWko
bVRleHR1cmUyRFVuaWZvcm1Mb2NhdGlvbiwgMCk7CisgICAgZHJhd1F1YWQobVByb2dyYW0sICJw
b3NpdGlvbiIsIDAuNWYpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgRVhQRUNU
X1BJWEVMX05FQVIoMCwgMCwgMCwgMTI4LCAwLCAyNTUsIDIpOworfQorCisvLyBUZXN0IGRyYXdp
bmcgd2l0aCB0d28gdGV4dHVyZXMgcGFzc2VkIHRvIHRoZSBzaGFkZXIgaW4gYSBzYW1wbGVyIGFy
cmF5LgorVEVTVF9QKFNhbXBsZXJBcnJheVRlc3QsIFNhbXBsZXJBcnJheURyYXcpCit7CisgICAg
dGVzdFNhbXBsZXJBcnJheURyYXcoKTsKK30KKworLy8gVGVzdCBkcmF3aW5nIHdpdGggdHdvIHRl
eHR1cmVzIHBhc3NlZCB0byB0aGUgc2hhZGVyIGluIGEgc2FtcGxlciBhcnJheSB3aGljaCBpcyBw
YXNzZWQgdG8gYQorLy8gdXNlci1kZWZpbmVkIGZ1bmN0aW9uIGluIHRoZSBzaGFkZXIuCitURVNU
X1AoU2FtcGxlckFycmF5QXNGdW5jdGlvblBhcmFtZXRlclRlc3QsIFNhbXBsZXJBcnJheUFzRnVu
Y3Rpb25QYXJhbWV0ZXIpCit7CisgICAgdGVzdFNhbXBsZXJBcnJheURyYXcoKTsKK30KKworLy8g
Q29weSBvZiBhIHRlc3QgaW4gY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4dHVyZS1taXBzLCB0byB0
ZXN0IGdlbmVyYXRlIG1pcG1hcHMKK1RFU1RfUChUZXh0dXJlMkRUZXN0V2l0aERyYXdTY2FsZSwg
TWlwbWFwc1R3aWNlKQoreworICAgIGludCBweCA9IGdldFdpbmRvd1dpZHRoKCkgLyAyOworICAg
IGludCBweSA9IGdldFdpbmRvd0hlaWdodCgpIC8gMjsKKworICAgIGdsQWN0aXZlVGV4dHVyZShH
TF9URVhUVVJFMCk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJE
KTsKKworICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHBpeGVsc1JlZCgxNnUgKiAxNnUsIEdMQ29s
b3I6OnJlZCk7CisKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwg
MTYsIDE2LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbHNSZWQuZGF0YSgpKTsK
KyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVS
LCBHTF9MSU5FQVJfTUlQTUFQX05FQVJFU1QpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7CisgICAgZ2xHZW5lcmF0
ZU1pcG1hcChHTF9URVhUVVJFXzJEKTsKKworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7Cisg
ICAgZ2xVbmlmb3JtMWkobVRleHR1cmUyRFVuaWZvcm1Mb2NhdGlvbiwgMCk7CisgICAgZ2xVbmlm
b3JtMmYobURyYXdTY2FsZVVuaWZvcm1Mb2NhdGlvbiwgMC4wNjI1ZiwgMC4wNjI1Zik7CisgICAg
ZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworICAgIEVYUEVDVF9HTF9OT19F
UlJPUigpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShweCwgcHksIEdMQ29sb3I6OnJlZCk7
CisKKyAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBwaXhlbHNCbHVlKDE2dSAqIDE2dSwgR0xDb2xv
cjo6Ymx1ZSk7CisKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwg
MTYsIDE2LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICBw
aXhlbHNCbHVlLmRhdGEoKSk7CisgICAgZ2xHZW5lcmF0ZU1pcG1hcChHTF9URVhUVVJFXzJEKTsK
KworICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHBpeGVsc0dyZWVuKDE2dSAqIDE2dSwgR0xDb2xv
cjo6Z3JlZW4pOworCisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEs
IDE2LCAxNiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAg
cGl4ZWxzR3JlZW4uZGF0YSgpKTsKKyAgICBnbEdlbmVyYXRlTWlwbWFwKEdMX1RFWFRVUkVfMkQp
OworCisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworCisgICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKHB4LCBweSwgR0xD
b2xvcjo6Z3JlZW4pOworfQorCisvLyBUZXN0IGNyZWF0aW5nIGEgRkJPIHdpdGggYSBjdWJlIG1h
cCByZW5kZXIgdGFyZ2V0LCB0byB0ZXN0IGFuIEFOR0xFIGJ1ZworLy8gaHR0cHM6Ly9jb2RlLmdv
b2dsZS5jb20vcC9hbmdsZXByb2plY3QvaXNzdWVzL2RldGFpbD9pZD04NDkKK1RFU1RfUChUZXh0
dXJlQ3ViZVRlc3QsIEN1YmVNYXBGQk8pCit7CisgICAgR0x1aW50IGZibzsKKyAgICBnbEdlbkZy
YW1lYnVmZmVycygxLCAmZmJvKTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZF
UiwgZmJvKTsKKworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV9DVUJFX01BUCwgbVRleHR1
cmVDdWJlKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9D
T0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZLCBtVGV4dHVy
ZUN1YmUsIDApOworCisgICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GUkFNRUJVRkZFUl9DT01QTEVU
RSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7CisKKyAgICBnbERl
bGV0ZUZyYW1lYnVmZmVycygxLCAmZmJvKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwor
fQorCisvLyBUZXN0IHRoYXQgZ2xUZXhTdWJJbWFnZTJEIHdvcmtzIHByb3Blcmx5IHdoZW4gZ2xU
ZXhTdG9yYWdlMkRFWFQgaGFzIGluaXRpYWxpemVkIHRoZSBpbWFnZSB3aXRoIGEgZGVmYXVsdCBj
b2xvci4KK1RFU1RfUChUZXh0dXJlMkRUZXN0LCBUZXhTdG9yYWdlKQoreworICAgIGludCB3aWR0
aCA9IGdldFdpbmRvd1dpZHRoKCk7CisgICAgaW50IGhlaWdodCA9IGdldFdpbmRvd0hlaWdodCgp
OworCisgICAgR0x1aW50IHRleDJEOworICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleDJEKTsKKyAg
ICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVY
VFVSRV8yRCwgdGV4MkQpOworCisgICAgLy8gRmlsbCB3aXRoIHJlZAorICAgIHN0ZDo6dmVjdG9y
PEdMdWJ5dGU+IHBpeGVscygzICogMTYgKiAxNik7CisgICAgZm9yIChzaXplX3QgcGl4ZWxJZCA9
IDA7IHBpeGVsSWQgPCAxNiAqIDE2OyArK3BpeGVsSWQpCisgICAgeworICAgICAgICBwaXhlbHNb
cGl4ZWxJZCAqIDMgKyAwXSA9IDI1NTsKKyAgICAgICAgcGl4ZWxzW3BpeGVsSWQgKiAzICsgMV0g
PSAwOworICAgICAgICBwaXhlbHNbcGl4ZWxJZCAqIDMgKyAyXSA9IDA7CisgICAgfQorCisgICAg
Ly8gQU5HTEUgaW50ZXJuYWxseSB1c2VzIFJHQkEgYXMgdGhlIERpcmVjdFggZm9ybWF0IGZvciBS
R0IgaW1hZ2VzCisgICAgLy8gdGhlcmVmb3JlIGdsVGV4U3RvcmFnZTJERVhUIGluaXRpYWxpemVz
IHRoZSBpbWFnZSB0byBhIGRlZmF1bHQgY29sb3IgdG8gZ2V0IGEgY29uc2lzdGVudCBhbHBoYSBj
b2xvci4KKyAgICAvLyBUaGUgZGF0YSBpcyBrZXB0IGluIGEgQ1BVLXNpZGUgaW1hZ2UgYW5kIHRo
ZSBpbWFnZSBpcyBtYXJrZWQgYXMgZGlydHkuCisgICAgZ2xUZXhTdG9yYWdlMkRFWFQoR0xfVEVY
VFVSRV8yRCwgMSwgR0xfUkdCOCwgMTYsIDE2KTsKKworICAgIC8vIEluaXRpYWxpemVzIHRoZSBj
b2xvciBvZiB0aGUgdXBwZXItbGVmdCA4eDggcGl4ZWxzLCBsZWF2ZXMgdGhlIG90aGVyIHBpeGVs
cyB1bnRvdWNoZWQuCisgICAgLy8gZ2xUZXhTdWJJbWFnZTJEIHNob3VsZCB0YWtlIGludG8gYWNj
b3VudCB0aGF0IHRoZSBpbWFnZSBpcyBkaXJ0eS4KKyAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVY
VFVSRV8yRCwgMCwgMCwgMCwgOCwgOCwgR0xfUkdCLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbHMu
ZGF0YSgpKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9N
SU5fRklMVEVSLCBHTF9MSU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7CisKKyAgICBzZXRVcFByb2dyYW0o
KTsKKworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgZ2xVbmlmb3JtMWkobVRleHR1
cmUyRFVuaWZvcm1Mb2NhdGlvbiwgMCk7CisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlv
biIsIDAuNWYpOworICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRleDJEKTsKKyAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfUElYRUxfRVEod2lkdGggLyA0LCBoZWlnaHQgLyA0
LCAyNTUsIDAsIDAsIDI1NSk7CisKKyAgICAvLyBWYWxpZGF0ZSB0aGF0IHRoZSByZWdpb24gb2Yg
dGhlIHRleHR1cmUgd2l0aG91dCBkYXRhIGhhcyBhbiBhbHBoYSBvZiAxLjAKKyAgICBHTHVieXRl
IHBpeGVsWzRdOworICAgIGdsUmVhZFBpeGVscygzICogd2lkdGggLyA0LCAzICogaGVpZ2h0IC8g
NCwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWwpOworICAgIEVYUEVDVF9F
UShwaXhlbFszXSwgMjU1KTsKK30KKworLy8gVGVzdCB0aGF0IGdsVGV4U3ViSW1hZ2UyRCBjb21i
aW5lZCB3aXRoIGEgUEJPIHdvcmtzIHByb3Blcmx5IHdoZW4gZ2xUZXhTdG9yYWdlMkRFWFQgaGFz
IGluaXRpYWxpemVkIHRoZSBpbWFnZSB3aXRoIGEgZGVmYXVsdCBjb2xvci4KK1RFU1RfUChUZXh0
dXJlMkRUZXN0LCBUZXhTdG9yYWdlV2l0aFBCTykKK3sKKyAgICBpZiAoZXh0ZW5zaW9uRW5hYmxl
ZCgiTlZfcGl4ZWxfYnVmZmVyX29iamVjdCIpKQorICAgIHsKKyAgICAgICAgaW50IHdpZHRoID0g
Z2V0V2luZG93V2lkdGgoKTsKKyAgICAgICAgaW50IGhlaWdodCA9IGdldFdpbmRvd0hlaWdodCgp
OworCisgICAgICAgIEdMdWludCB0ZXgyRDsKKyAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4
MkQpOworICAgICAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOworICAgICAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleDJEKTsKKworICAgICAgICAvLyBGaWxsIHdpdGgg
cmVkCisgICAgICAgIHN0ZDo6dmVjdG9yPEdMdWJ5dGU+IHBpeGVscygzICogMTYgKiAxNik7Cisg
ICAgICAgIGZvciAoc2l6ZV90IHBpeGVsSWQgPSAwOyBwaXhlbElkIDwgMTYgKiAxNjsgKytwaXhl
bElkKQorICAgICAgICB7CisgICAgICAgICAgICBwaXhlbHNbcGl4ZWxJZCAqIDMgKyAwXSA9IDI1
NTsKKyAgICAgICAgICAgIHBpeGVsc1twaXhlbElkICogMyArIDFdID0gMDsKKyAgICAgICAgICAg
IHBpeGVsc1twaXhlbElkICogMyArIDJdID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJl
YWQgMTZ4MTYgcmVnaW9uIGZyb20gcmVkIGJhY2tidWZmZXIgdG8gUEJPCisgICAgICAgIEdMdWlu
dCBwYm87CisgICAgICAgIGdsR2VuQnVmZmVycygxLCAmcGJvKTsKKyAgICAgICAgZ2xCaW5kQnVm
ZmVyKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIHBibyk7CisgICAgICAgIGdsQnVmZmVyRGF0YShH
TF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCAzICogMTYgKiAxNiwgcGl4ZWxzLmRhdGEoKSwgR0xfU1RB
VElDX0RSQVcpOworCisgICAgICAgIC8vIEFOR0xFIGludGVybmFsbHkgdXNlcyBSR0JBIGFzIHRo
ZSBEaXJlY3RYIGZvcm1hdCBmb3IgUkdCIGltYWdlcworICAgICAgICAvLyB0aGVyZWZvcmUgZ2xU
ZXhTdG9yYWdlMkRFWFQgaW5pdGlhbGl6ZXMgdGhlIGltYWdlIHRvIGEgZGVmYXVsdCBjb2xvciB0
byBnZXQgYSBjb25zaXN0ZW50IGFscGhhIGNvbG9yLgorICAgICAgICAvLyBUaGUgZGF0YSBpcyBr
ZXB0IGluIGEgQ1BVLXNpZGUgaW1hZ2UgYW5kIHRoZSBpbWFnZSBpcyBtYXJrZWQgYXMgZGlydHku
CisgICAgICAgIGdsVGV4U3RvcmFnZTJERVhUKEdMX1RFWFRVUkVfMkQsIDEsIEdMX1JHQjgsIDE2
LCAxNik7CisKKyAgICAgICAgLy8gSW5pdGlhbGl6ZXMgdGhlIGNvbG9yIG9mIHRoZSB1cHBlci1s
ZWZ0IDh4OCBwaXhlbHMsIGxlYXZlcyB0aGUgb3RoZXIgcGl4ZWxzIHVudG91Y2hlZC4KKyAgICAg
ICAgLy8gZ2xUZXhTdWJJbWFnZTJEIHNob3VsZCB0YWtlIGludG8gYWNjb3VudCB0aGF0IHRoZSBp
bWFnZSBpcyBkaXJ0eS4KKyAgICAgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAs
IDAsIDAsIDgsIDgsIEdMX1JHQiwgR0xfVU5TSUdORURfQllURSwgTlVMTCk7CisgICAgICAgIGds
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJ
TkVBUik7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJF
X01BR19GSUxURVIsIEdMX0xJTkVBUik7CisKKyAgICAgICAgc2V0VXBQcm9ncmFtKCk7CisKKyAg
ICAgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICAgICAgZ2xVbmlmb3JtMWkobVRleHR1
cmUyRFVuaWZvcm1Mb2NhdGlvbiwgMCk7CisgICAgICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9z
aXRpb24iLCAwLjVmKTsKKyAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGV4MkQpOworICAg
ICAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJnBibyk7CisgICAgICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOworICAgICAgICBFWFBFQ1RfUElYRUxfRVEoMyAqIHdpZHRoIC8gNCwgMyAqIGhlaWdodCAv
IDQsIDAsIDAsIDAsIDI1NSk7CisgICAgICAgIEVYUEVDVF9QSVhFTF9FUSh3aWR0aCAvIDQsIGhl
aWdodCAvIDQsIDI1NSwgMCwgMCwgMjU1KTsKKyAgICB9Cit9CisKKy8vIFNlZSBkZXNjcmlwdGlv
biBvbiB0ZXN0RmxvYXRDb3B5U3ViSW1hZ2UKK1RFU1RfUChUZXh0dXJlMkRUZXN0LCBDb3B5U3Vi
SW1hZ2VGbG9hdF9SX1IpCit7CisgICAgdGVzdEZsb2F0Q29weVN1YkltYWdlKDEsIDEpOworfQor
CitURVNUX1AoVGV4dHVyZTJEVGVzdCwgQ29weVN1YkltYWdlRmxvYXRfUkdfUikKK3sKKyAgICB0
ZXN0RmxvYXRDb3B5U3ViSW1hZ2UoMiwgMSk7Cit9CisKK1RFU1RfUChUZXh0dXJlMkRUZXN0LCBD
b3B5U3ViSW1hZ2VGbG9hdF9SR19SRykKK3sKKyAgICB0ZXN0RmxvYXRDb3B5U3ViSW1hZ2UoMiwg
Mik7Cit9CisKK1RFU1RfUChUZXh0dXJlMkRUZXN0LCBDb3B5U3ViSW1hZ2VGbG9hdF9SR0JfUikK
K3sKKyAgICBpZiAoSXNJbnRlbCgpICYmIElzTGludXgoKSkKKyAgICB7CisgICAgICAgIC8vIFRP
RE8oY3dhbGxleik6IEZpeCBvbiBMaW51eCBJbnRlbCBkcml2ZXJzIChodHRwOi8vYW5nbGVidWcu
Y29tLzEzNDYpCisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxlZCBvbiBMaW51eCBJ
bnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICB0ZXN0RmxvYXRDb3B5U3ViSW1hZ2UoMywgMSk7Cit9CisKK1RFU1RfUChUZXh0dXJlMkRUZXN0
LCBDb3B5U3ViSW1hZ2VGbG9hdF9SR0JfUkcpCit7CisgICAgaWYgKElzSW50ZWwoKSAmJiBJc0xp
bnV4KCkpCisgICAgeworICAgICAgICAvLyBUT0RPKGN3YWxsZXopOiBGaXggb24gTGludXggSW50
ZWwgZHJpdmVycyAoaHR0cDovL2FuZ2xlYnVnLmNvbS8xMzQ2KQorICAgICAgICBzdGQ6OmNvdXQg
PDwgIlRlc3QgZGlzYWJsZWQgb24gTGludXggSW50ZWwgT3BlbkdMLiIgPDwgc3RkOjplbmRsOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdGVzdEZsb2F0Q29weVN1YkltYWdlKDMsIDIp
OworfQorCitURVNUX1AoVGV4dHVyZTJEVGVzdCwgQ29weVN1YkltYWdlRmxvYXRfUkdCX1JHQikK
K3sKKyAgICBpZiAoSXNJbnRlbCgpICYmIElzTGludXgoKSkKKyAgICB7CisgICAgICAgIC8vIFRP
RE8oY3dhbGxleik6IEZpeCBvbiBMaW51eCBJbnRlbCBkcml2ZXJzIChodHRwOi8vYW5nbGVidWcu
Y29tLzEzNDYpCisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxlZCBvbiBMaW51eCBJ
bnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICAvLyBUT0RPIChidWcgMTI4NCk6IEludmVzdGlnYXRlIFJHQkEzMmYgRDNEIFNESyBMYXllcnMg
bWVzc2FnZXMgb24gRDNEMTFfRkw5XzMKKyAgICBpZiAoSXNEM0QxMV9GTDkzKCkpCisgICAgewor
ICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBGZWF0dXJlIExldmVsIDlfMy4i
IDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHRlc3RGbG9hdENv
cHlTdWJJbWFnZSgzLCAzKTsKK30KKworVEVTVF9QKFRleHR1cmUyRFRlc3QsIENvcHlTdWJJbWFn
ZUZsb2F0X1JHQkFfUikKK3sKKyAgICB0ZXN0RmxvYXRDb3B5U3ViSW1hZ2UoNCwgMSk7Cit9CisK
K1RFU1RfUChUZXh0dXJlMkRUZXN0LCBDb3B5U3ViSW1hZ2VGbG9hdF9SR0JBX1JHKQoreworICAg
IHRlc3RGbG9hdENvcHlTdWJJbWFnZSg0LCAyKTsKK30KKworVEVTVF9QKFRleHR1cmUyRFRlc3Qs
IENvcHlTdWJJbWFnZUZsb2F0X1JHQkFfUkdCKQoreworICAgIC8vIFRPRE8gKGJ1ZyAxMjg0KTog
SW52ZXN0aWdhdGUgUkdCQTMyZiBEM0QgU0RLIExheWVycyBtZXNzYWdlcyBvbiBEM0QxMV9GTDlf
MworICAgIGlmIChJc0QzRDExX0ZMOTMoKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAi
VGVzdCBza2lwcGVkIG9uIEZlYXR1cmUgTGV2ZWwgOV8zLiIgPDwgc3RkOjplbmRsOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgdGVzdEZsb2F0Q29weVN1YkltYWdlKDQsIDMpOworfQor
CitURVNUX1AoVGV4dHVyZTJEVGVzdCwgQ29weVN1YkltYWdlRmxvYXRfUkdCQV9SR0JBKQorewor
ICAgIC8vIFRPRE8gKGJ1ZyAxMjg0KTogSW52ZXN0aWdhdGUgUkdCQTMyZiBEM0QgU0RLIExheWVy
cyBtZXNzYWdlcyBvbiBEM0QxMV9GTDlfMworICAgIGlmIChJc0QzRDExX0ZMOTMoKSkKKyAgICB7
CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEZlYXR1cmUgTGV2ZWwgOV8z
LiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdGVzdEZsb2F0
Q29weVN1YkltYWdlKDQsIDQpOworfQorCisvLyBQb3J0IG9mIGh0dHBzOi8vd3d3Lmtocm9ub3Mu
b3JnL3JlZ2lzdHJ5L3dlYmdsL2NvbmZvcm1hbmNlLXN1aXRlcy8xLjAuMy9jb25mb3JtYW5jZS90
ZXh0dXJlcy90ZXh0dXJlLW5wb3QuaHRtbAorLy8gUnVuIGFnYWluc3QgR0xfQUxQSEEvVU5TSUdO
RURfQllURSBmb3JtYXQsIHRvIGVuc3VyZSB0aGF0IEQzRDExIEZlYXR1cmUgTGV2ZWwgOV8zIGNv
cnJlY3RseSBoYW5kbGVzIEdMX0FMUEhBCitURVNUX1AoVGV4dHVyZTJEVGVzdCwgVGV4dHVyZU5Q
T1RfR0xfQUxQSEFfVUJZVEUpCit7CisgICAgY29uc3QgaW50IG5wb3RUZXhTaXplID0gNTsKKyAg
ICBjb25zdCBpbnQgcG90VGV4U2l6ZSA9IDQ7IC8vIFNob3VsZCBiZSBsZXNzIHRoYW4gbnBvdFRl
eFNpemUKKyAgICBHTHVpbnQgdGV4MkQ7CisKKyAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCgiR0xf
T0VTX3RleHR1cmVfbnBvdCIpKQorICAgIHsKKyAgICAgICAgLy8gVGhpcyB0ZXN0IGlzbid0IGFw
cGxpY2FibGUgaWYgdGV4dHVyZV9ucG90IGlzIGVuYWJsZWQKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIHNldFVwUHJvZ3JhbSgpOworCisgICAgZ2xDbGVhckNvbG9yKDAuMGYsIDAuMGYs
IDAuMGYsIDAuMGYpOworCisgICAgLy8gRGVmYXVsdCB1bnBhY2sgYWxpZ25tZW50IGlzIDQuIFRo
ZSB2YWx1ZXMgb2YgJ3BpeGVscycgYmVsb3cgbmVlZHMgaXQgdG8gYmUgMS4KKyAgICBnbFBpeGVs
U3RvcmVpKEdMX1VOUEFDS19BTElHTk1FTlQsIDEpOworCisgICAgZ2xBY3RpdmVUZXh0dXJlKEdM
X1RFWFRVUkUwKTsKKyAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXgyRCk7CisgICAgZ2xCaW5kVGV4
dHVyZShHTF9URVhUVVJFXzJELCB0ZXgyRCk7CisKKyAgICBzdGQ6OnZlY3RvcjxHTHVieXRlPiBw
aXhlbHMoMSAqIG5wb3RUZXhTaXplICogbnBvdFRleFNpemUpOworICAgIGZvciAoc2l6ZV90IHBp
eGVsSWQgPSAwOyBwaXhlbElkIDwgbnBvdFRleFNpemUgKiBucG90VGV4U2l6ZTsgKytwaXhlbElk
KQorICAgIHsKKyAgICAgICAgcGl4ZWxzW3BpeGVsSWRdID0gNjQ7CisgICAgfQorCisgICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElO
RUFSKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdf
RklMVEVSLCBHTF9MSU5FQVIpOworCisgICAgLy8gQ2hlY2sgdGhhdCBhbiBOUE9UIHRleHR1cmUg
bm90IG9uIGxldmVsIDAgZ2VuZXJhdGVzIElOVkFMSURfVkFMVUUKKyAgICBnbFRleEltYWdlMkQo
R0xfVEVYVFVSRV8yRCwgMSwgR0xfQUxQSEEsIG5wb3RUZXhTaXplLCBucG90VGV4U2l6ZSwgMCwg
R0xfQUxQSEEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVscy5kYXRhKCkpOworICAgIEVYUEVDVF9H
TF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKKworICAgIC8vIENoZWNrIHRoYXQgYW4gTlBPVCB0
ZXh0dXJlIG9uIGxldmVsIDAgc3VjY2VlZHMKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8y
RCwgMCwgR0xfQUxQSEEsIG5wb3RUZXhTaXplLCBucG90VGV4U2l6ZSwgMCwgR0xfQUxQSEEsIEdM
X1VOU0lHTkVEX0JZVEUsIHBpeGVscy5kYXRhKCkpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OworCisgICAgLy8gQ2hlY2sgdGhhdCBnZW5lcmF0ZU1pcG1hcCBmYWlscyBvbiBOUE9UCisgICAg
Z2xHZW5lcmF0ZU1pcG1hcChHTF9URVhUVVJFXzJEKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOworCisgICAgLy8gQ2hlY2sgdGhhdCBub3RoaW5nIGlzIGRyYXdu
IGlmIGZpbHRlcmluZyBpcyBub3QgY29ycmVjdCBmb3IgTlBPVAorICAgIGdsVGV4UGFyYW1ldGVy
aShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdM
X05FQVJFU1QpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJF
X1dSQVBfUywgR0xfUkVQRUFUKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9XUkFQX1QsIEdMX1JFUEVBVCk7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZG
RVJfQklUKTsKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMS4wZik7CisgICAg
RVhQRUNUX1BJWEVMX0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAv
IDIsIDAsIDAsIDAsIDI1NSk7CisKKyAgICAvLyBOUE9UIHRleHR1cmUgd2l0aCBURVhUVVJFX01J
Tl9GSUxURVIgbm90IE5FQVJFU1Qgb3IgTElORUFSIHNob3VsZCBkcmF3IHdpdGggMCwwLDAsMjU1
CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBH
TF9DTEFNUF9UT19FREdFKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOworICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1RfTUlQTUFQX0xJ
TkVBUik7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBkcmF3UXVhZCht
UHJvZ3JhbSwgInBvc2l0aW9uIiwgMS4wZik7CisgICAgRVhQRUNUX1BJWEVMX0VRKGdldFdpbmRv
d1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIDAsIDAsIDAsIDI1NSk7CisKKyAg
ICAvLyBOUE9UIHRleHR1cmUgd2l0aCBURVhUVVJFX01JTl9GSUxURVIgc2V0IHRvIExJTkVBUiBz
aG91bGQgZHJhdworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJF
X01JTl9GSUxURVIsIEdMX0xJTkVBUik7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklU
KTsKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMS4wZik7CisgICAgRVhQRUNU
X1BJWEVMX0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIDAs
IDAsIDAsIDY0KTsKKworICAgIC8vIENoZWNrIHRoYXQgZ2xUZXhJbWFnZTJEIGZvciBQT1QgdGV4
dHVyZSBzdWNjZWVkcworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9BTFBI
QSwgcG90VGV4U2l6ZSwgcG90VGV4U2l6ZSwgMCwgR0xfQUxQSEEsIEdMX1VOU0lHTkVEX0JZVEUs
IHBpeGVscy5kYXRhKCkpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gQ2hl
Y2sgdGhhdCBnZW5lcmF0ZU1pcG1hcCBmb3IgYW4gUE9UIHRleHR1cmUgc3VjY2VlZHMKKyAgICBn
bEdlbmVyYXRlTWlwbWFwKEdMX1RFWFRVUkVfMkQpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OworCisgICAgLy8gUE9UIHRleHR1cmUgd2l0aCBURVhUVVJFX01JTl9GSUxURVIgc2V0IHRvIExJ
TkVBUl9NSVBNQVBfTElORUFSIHNob3VsZCBkcmF3CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSX01JUE1BUF9MSU5FQVIp
OworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxU
RVIsIEdMX0xJTkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfV1JBUF9TLCBHTF9SRVBFQVQpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfUkVQRUFUKTsKKyAgICBnbENsZWFyKEdMX0NPTE9S
X0JVRkZFUl9CSVQpOworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAxLjBmKTsK
KyAgICBFWFBFQ1RfUElYRUxfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdo
dCgpIC8gMiwgMCwgMCwgMCwgNjQpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworfQorCisv
LyBUZXN0IHRvIGVuc3VyZSB0aGF0IGdsVGV4U3ViSW1hZ2UyRCBhbHdheXMgYWNjZXB0cyBkYXRh
IGZvciBub24tcG93ZXItb2YtdHdvIHN1YnJlZ2lvbnMuCisvLyBBTkdMRSBwcmV2aW91c2x5IHJl
amVjdGVkIHRoaXMgaWYgR0xfT0VTX3RleHR1cmVfbnBvdCB3YXNuJ3QgYWN0aXZlLCB3aGljaCBp
cyBpbmNvcnJlY3QuCitURVNUX1AoVGV4dHVyZTJEVGVzdCwgTlBPVFN1YkltYWdlUGFyYW1ldGVy
cykKK3sKKyAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IEFsbG93IHRoZSBHTCBiYWNrZW5kIHRvIGFj
Y2VwdCBTdWJJbWFnZSBjYWxscyB3aXRoIGEgbnVsbCBkYXRhIHB0ci4gKGJ1ZworICAgIC8vIDEy
NzgpCisgICAgaWYgKGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVf
VFlQRV9PUEVOR0xfQU5HTEUgfHwKKyAgICAgICAgZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVH
TF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTEVTX0FOR0xFKQorICAgIHsKKyAgICAgICAgc3Rk
Ojpjb3V0IDw8ICJUZXN0IGRpc2FibGVkIG9uIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7Cisg
ICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEKTsKKworICAgIC8vIENy
ZWF0ZSBhbiA4eDggKGkuZS4gcG93ZXItb2YtdHdvKSB0ZXh0dXJlLgorICAgIGdsVGV4SW1hZ2Uy
RChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCA4LCA4LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05F
RF9CWVRFLCBudWxscHRyKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVJfTUlQTUFQX05FQVJFU1QpOworICAgIGdsVGV4
UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVB
Uik7CisgICAgZ2xHZW5lcmF0ZU1pcG1hcChHTF9URVhUVVJFXzJEKTsKKworICAgIC8vIFN1cHBs
eSBhIDN4MyAoaS5lLiBub24tcG93ZXItb2YtdHdvKSBzdWJpbWFnZSB0byB0aGUgdGV4dHVyZS4K
KyAgICAvLyBUaGlzIHNob3VsZCBhbHdheXMgd29yaywgZXZlbiBpZiBHTF9PRVNfdGV4dHVyZV9u
cG90IGlzbid0IGFjdGl2ZS4KKyAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwg
MCwgMCwgMywgMywgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7CisKKyAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKK30KKworLy8gVGVzdCB0byBjaGVjayB0aGF0IHRleHR1cmUg
Y29tcGxldGVuZXNzIGlzIGRldGVybWluZWQgY29ycmVjdGx5IHdoZW4gdGhlIHRleHR1cmUgYmFz
ZSBsZXZlbCBpcworLy8gZ3JlYXRlciB0aGFuIDAsIGFuZCBhbHNvIHRoYXQgbGV2ZWwgMCBpcyBu
b3Qgc2FtcGxlZCB3aGVuIGJhc2UgbGV2ZWwgaXMgZ3JlYXRlciB0aGFuIDAuCitURVNUX1AoVGV4
dHVyZTJEVGVzdEVTMywgRHJhd1dpdGhCYXNlTGV2ZWwxKQoreworICAgIGdsQWN0aXZlVGV4dHVy
ZShHTF9URVhUVVJFMCk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVy
ZTJEKTsKKworICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHRleERhdGFSZWQoNHUgKiA0dSwgR0xD
b2xvcjo6cmVkKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwg
NCwgNCwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgdGV4RGF0YVJlZC5kYXRhKCkpOwor
ICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHRleERhdGFHcmVlbigydSAqIDJ1LCBHTENvbG9yOjpn
cmVlbik7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDEsIEdMX1JHQkEsIDIsIDIs
IDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgIHRleERhdGFH
cmVlbi5kYXRhKCkpOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAyLCBHTF9SR0JB
LCAxLCAxLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICB0
ZXhEYXRhR3JlZW4uZGF0YSgpKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUl9NSVBNQVBfTElO
RUFSKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9CQVNF
X0xFVkVMLCAxKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZHJhd1F1YWQo
bVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworCisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VR
KDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsKK30KKworLy8gVGVzdCB0aGF0IGRyYXdpbmcgd29ya3Mg
Y29ycmVjdGx5IHdoZW4gbGV2ZWxzIG91dHNpZGUgdGhlIEJBU0VfTEVWRUwvTUFYX0xFVkVMIHJh
bmdlIGRvIG5vdAorLy8gaGF2ZSBpbWFnZXMgZGVmaW5lZC4KK1RFU1RfUChUZXh0dXJlMkRUZXN0
RVMzLCBEcmF3V2l0aExldmVsc091dHNpZGVSYW5nZVVuZGVmaW5lZCkKK3sKKyAgICBpZiAoSXNB
TUQoKSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVf
T1BFTkdMX0FOR0xFKQorICAgIHsKKyAgICAgICAgLy8gT2JzZXJ2ZWQgY3Jhc2hpbmcgb24gQU1E
LiBPZGRseSB0aGUgY3Jhc2ggb25seSBoYXBwZW5zIHdpdGggMkQgdGV4dHVyZXMsIG5vdCAzRCBv
ciBhcnJheS4KKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gQU1EIE9wZW5H
TC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoSXNPU1go
KSkKKyAgICB7CisgICAgICAgIC8vIE9ic2VydmVkIGluY29ycmVjdCByZW5kZXJpbmcgb24gT1NY
LgorICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBPU1guIiA8PCBzdGQ6OmVu
ZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRV
UkUwKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOworICAg
IHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHRleERhdGFHcmVlbigydSAqIDJ1LCBHTENvbG9yOjpncmVl
bik7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDEsIEdMX1JHQkE4LCAyLCAyLCAw
LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICB0ZXhEYXRhR3Jl
ZW4uZGF0YSgpKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUl9NSVBNQVBfTElORUFSKTsKKyAg
ICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAx
KTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQVhfTEVW
RUwsIDEpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBkcmF3UXVhZChtUHJv
Z3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwg
MCwgR0xDb2xvcjo6Z3JlZW4pOworfQorCisvLyBUZXN0IHRoYXQgZHJhd2luZyB3b3JrcyBjb3Jy
ZWN0bHkgd2hlbiBsZXZlbCAwIGlzIHVuZGVmaW5lZCBhbmQgYmFzZSBsZXZlbCBpcyAxLgorVEVT
VF9QKFRleHR1cmUyRFRlc3RFUzMsIERyYXdXaXRoTGV2ZWxaZXJvVW5kZWZpbmVkKQoreworICAg
IGlmIChJc0FNRCgpICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5H
TEVfVFlQRV9PUEVOR0xfQU5HTEUpCisgICAgeworICAgICAgICAvLyBPYnNlcnZlZCBjcmFzaGlu
ZyBvbiBBTUQuIE9kZGx5IHRoZSBjcmFzaCBvbmx5IGhhcHBlbnMgd2l0aCAyRCB0ZXh0dXJlcywg
bm90IDNEIG9yIGFycmF5LgorICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBB
TUQgT3BlbkdMLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlm
IChJc09TWCgpKQorICAgIHsKKyAgICAgICAgLy8gT2JzZXJ2ZWQgaW5jb3JyZWN0IHJlbmRlcmlu
ZyBvbiBPU1guCisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIE9TWC4iIDw8
IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBnbEFjdGl2ZVRleHR1cmUo
R0xfVEVYVFVSRTApOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUy
RCk7CisgICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gdGV4RGF0YUdyZWVuKDJ1ICogMnUsIEdMQ29s
b3I6OmdyZWVuKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdCQTgs
IDIsIDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgIHRl
eERhdGFHcmVlbi5kYXRhKCkpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSX01JUE1BUF9MSU5F
QVIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX0JBU0Vf
TEVWRUwsIDEpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJF
X01BWF9MRVZFTCwgMik7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIFRl
eHR1cmUgaXMgaW5jb21wbGV0ZS4KKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwg
MC41Zik7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmJsYWNrKTsK
KworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAyLCBHTF9SR0JBOCwgMSwgMSwgMCwg
R0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAgdGV4RGF0YUdyZWVu
LmRhdGEoKSk7CisKKyAgICAvLyBUZXh0dXJlIGlzIG5vdyBjb21wbGV0ZS4KKyAgICBkcmF3UXVh
ZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VR
KDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsKK30KKworLy8gVGVzdCB0aGF0IGRyYXdpbmcgd29ya3Mg
Y29ycmVjdGx5IHdoZW4gbGV2ZWxzIG91dHNpZGUgdGhlIEJBU0VfTEVWRUwvTUFYX0xFVkVMIHJh
bmdlIGhhdmUKKy8vIGRpbWVuc2lvbnMgdGhhdCBkb24ndCBmaXQgdGhlIGltYWdlcyBpbnNpZGUg
dGhlIHJhbmdlLgorLy8gR0xFUyAzLjAuNCBzZWN0aW9uIDMuOC4xMyBUZXh0dXJlIGNvbXBsZXRl
bmVzcworVEVTVF9QKFRleHR1cmUyRFRlc3RFUzMsIERyYXdXaXRoTGV2ZWxzT3V0c2lkZVJhbmdl
V2l0aEluY29uc2lzdGVudERpbWVuc2lvbnMpCit7CisgICAgaWYgKElzT1NYKCkpCisgICAgewor
ICAgICAgICAvLyBPYnNlcnZlZCBpbmNvcnJlY3QgcmVuZGVyaW5nIG9uIE9TWC4KKyAgICAgICAg
c3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gT1NYLiIgPDwgc3RkOjplbmRsOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7CisgICAg
Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEKTsKKyAgICBzdGQ6OnZlY3Rv
cjxHTENvbG9yPiB0ZXhEYXRhUmVkKDh1ICogOHUsIEdMQ29sb3I6OnJlZCk7CisgICAgc3RkOjp2
ZWN0b3I8R0xDb2xvcj4gdGV4RGF0YUdyZWVuKDJ1ICogMnUsIEdMQ29sb3I6OmdyZWVuKTsKKyAg
ICBzdGQ6OnZlY3RvcjxHTENvbG9yPiB0ZXhEYXRhQ3lhbigydSAqIDJ1LCBHTENvbG9yOjpjeWFu
KTsKKworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19G
SUxURVIsIEdMX0xJTkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdM
X1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSX01JUE1BUF9MSU5FQVIpOworCisgICAgLy8g
VHdvIGxldmVscyB0aGF0IGFyZSBpbml0aWFsbHkgdW51c2VkLgorICAgIGdsVGV4SW1hZ2UyRChH
TF9URVhUVVJFXzJELCAwLCBHTF9SR0JBOCwgOCwgOCwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURf
QllURSwgdGV4RGF0YVJlZC5kYXRhKCkpOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJE
LCAyLCBHTF9SR0JBOCwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAg
ICAgICAgICAgICAgdGV4RGF0YUN5YW4uZGF0YSgpKTsKKworICAgIC8vIE9uZSBsZXZlbCB0aGF0
IGlzIHVzZWQgLSBvbmx5IHRoaXMgbGV2ZWwgc2hvdWxkIGFmZmVjdCBjb21wbGV0ZW5lc3MuCisg
ICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDEsIEdMX1JHQkE4LCAyLCAyLCAwLCBHTF9S
R0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICB0ZXhEYXRhR3JlZW4uZGF0
YSgpKTsKKworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX0JB
U0VfTEVWRUwsIDEpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhU
VVJFX01BWF9MRVZFTCwgMSk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGRy
YXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgIEVYUEVDVF9QSVhFTF9D
T0xPUl9FUSgwLCAwLCBHTENvbG9yOjpncmVlbik7CisKKyAgICBpZiAoSXNJbnRlbCgpICYmIGdl
dFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5H
TEUpCisgICAgeworICAgICAgICAvLyBJbnRlbCB3YXMgb2JzZXJ2ZWQgZHJhd2luZyBjb2xvciAw
LDAsMCwwIGluc3RlYWQgb2YgdGhlIHRleHR1cmUgY29sb3IgYWZ0ZXIgdGhlIGJhc2UKKyAgICAg
ICAgLy8gbGV2ZWwgd2FzIGNoYW5nZWQuCisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBwYXJ0
aWFsbHkgc2tpcHBlZCBvbiBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBTd2l0Y2ggdGhlIGxldmVsIHRoYXQgaXMgYmVpbmcgdXNl
ZCB0byB0aGUgY3lhbiBsZXZlbCAyLgorICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX0JBU0VfTEVWRUwsIDIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFXzJELCBHTF9URVhUVVJFX01BWF9MRVZFTCwgMik7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJS
T1IoKTsKKworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAg
IEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpjeWFuKTsKK30KKworLy8gVGVz
dCB0aGF0IGRyYXdpbmcgd29ya3MgY29ycmVjdGx5IHdoZW4gbGV2ZWxzIG91dHNpZGUgdGhlIEJB
U0VfTEVWRUwvTUFYX0xFVkVMIHJhbmdlIGRvIG5vdAorLy8gaGF2ZSBpbWFnZXMgZGVmaW5lZC4K
K1RFU1RfUChUZXh0dXJlM0RUZXN0RVMzLCBEcmF3V2l0aExldmVsc091dHNpZGVSYW5nZVVuZGVm
aW5lZCkKK3sKKyAgICBpZiAoSXNPU1goKSkKKyAgICB7CisgICAgICAgIC8vIE9ic2VydmVkIGlu
Y29ycmVjdCByZW5kZXJpbmcgb24gT1NYLgorICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tp
cHBlZCBvbiBPU1guIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
Z2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfM0QsIG1UZXh0dXJlM0QpOworICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHRleERhdGFHcmVl
bigydSAqIDJ1ICogMnUsIEdMQ29sb3I6OmdyZWVuKTsKKyAgICBnbFRleEltYWdlM0QoR0xfVEVY
VFVSRV8zRCwgMSwgR0xfUkdCQTgsIDIsIDIsIDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsCisgICAgICAgICAgICAgICAgIHRleERhdGFHcmVlbi5kYXRhKCkpOworICAgIGdsVGV4UGFy
YW1ldGVyaShHTF9URVhUVVJFXzNELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7
CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfM0QsIEdMX1RFWFRVUkVfTUlOX0ZJTFRF
UiwgR0xfTElORUFSX01JUE1BUF9MSU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFXzNELCBHTF9URVhUVVJFX0JBU0VfTEVWRUwsIDEpOworICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzNELCBHTF9URVhUVVJFX01BWF9MRVZFTCwgMSk7CisKKyAgICBFWFBFQ1RfR0xf
Tk9fRVJST1IoKTsKKworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsK
KworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpncmVlbik7Cit9CisK
Ky8vIFRlc3QgdGhhdCBkcmF3aW5nIHdvcmtzIGNvcnJlY3RseSB3aGVuIGxldmVscyBvdXRzaWRl
IHRoZSBCQVNFX0xFVkVML01BWF9MRVZFTCByYW5nZSBoYXZlCisvLyBkaW1lbnNpb25zIHRoYXQg
ZG9uJ3QgZml0IHRoZSBpbWFnZXMgaW5zaWRlIHRoZSByYW5nZS4KKy8vIEdMRVMgMy4wLjQgc2Vj
dGlvbiAzLjguMTMgVGV4dHVyZSBjb21wbGV0ZW5lc3MKK1RFU1RfUChUZXh0dXJlM0RUZXN0RVMz
LCBEcmF3V2l0aExldmVsc091dHNpZGVSYW5nZVdpdGhJbmNvbnNpc3RlbnREaW1lbnNpb25zKQor
eworICAgIGlmIChJc09TWCgpKQorICAgIHsKKyAgICAgICAgLy8gT2JzZXJ2ZWQgaW5jb3JyZWN0
IHJlbmRlcmluZyBvbiBPU1guCisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9u
IE9TWC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBnbEFjdGl2
ZVRleHR1cmUoR0xfVEVYVFVSRTApOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8zRCwg
bVRleHR1cmUzRCk7CisgICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gdGV4RGF0YVJlZCg4dSAqIDh1
ICogOHUsIEdMQ29sb3I6OnJlZCk7CisgICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gdGV4RGF0YUdy
ZWVuKDJ1ICogMnUgKiAydSwgR0xDb2xvcjo6Z3JlZW4pOworICAgIHN0ZDo6dmVjdG9yPEdMQ29s
b3I+IHRleERhdGFDeWFuKDJ1ICogMnUgKiAydSwgR0xDb2xvcjo6Y3lhbik7CisKKyAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8zRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5F
QVIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzNELCBHTF9URVhUVVJFX01JTl9G
SUxURVIsIEdMX0xJTkVBUl9NSVBNQVBfTElORUFSKTsKKworICAgIC8vIFR3byBsZXZlbHMgdGhh
dCBhcmUgaW5pdGlhbGx5IHVudXNlZC4KKyAgICBnbFRleEltYWdlM0QoR0xfVEVYVFVSRV8zRCwg
MCwgR0xfUkdCQTgsIDgsIDgsIDgsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAg
ICAgICAgICAgICAgIHRleERhdGFSZWQuZGF0YSgpKTsKKyAgICBnbFRleEltYWdlM0QoR0xfVEVY
VFVSRV8zRCwgMiwgR0xfUkdCQTgsIDIsIDIsIDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsCisgICAgICAgICAgICAgICAgIHRleERhdGFDeWFuLmRhdGEoKSk7CisKKyAgICAvLyBPbmUg
bGV2ZWwgdGhhdCBpcyB1c2VkIC0gb25seSB0aGlzIGxldmVsIHNob3VsZCBhZmZlY3QgY29tcGxl
dGVuZXNzLgorICAgIGdsVGV4SW1hZ2UzRChHTF9URVhUVVJFXzNELCAxLCBHTF9SR0JBOCwgMiwg
MiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAgdGV4
RGF0YUdyZWVuLmRhdGEoKSk7CisKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8zRCwg
R0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAxKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8zRCwgR0xfVEVYVFVSRV9NQVhfTEVWRUwsIDEpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7CisKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisKKyAgICBF
WFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4pOworCisgICAgaWYgKElz
SW50ZWwoKSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZ
UEVfT1BFTkdMX0FOR0xFKQorICAgIHsKKyAgICAgICAgLy8gSW50ZWwgd2FzIG9ic2VydmVkIGRy
YXdpbmcgY29sb3IgMCwwLDAsMCBpbnN0ZWFkIG9mIHRoZSB0ZXh0dXJlIGNvbG9yIGFmdGVyIHRo
ZSBiYXNlCisgICAgICAgIC8vIGxldmVsIHdhcyBjaGFuZ2VkLgorICAgICAgICBzdGQ6OmNvdXQg
PDwgIlRlc3QgcGFydGlhbGx5IHNraXBwZWQgb24gSW50ZWwgT3BlbkdMLiIgPDwgc3RkOjplbmRs
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gU3dpdGNoIHRoZSBsZXZlbCB0aGF0
IGlzIGJlaW5nIHVzZWQgdG8gdGhlIGN5YW4gbGV2ZWwgMi4KKyAgICBnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV8zRCwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAyKTsKKyAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8zRCwgR0xfVEVYVFVSRV9NQVhfTEVWRUwsIDIpOworCisgICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwg
MC41Zik7CisKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Y3lhbik7
Cit9CisKKy8vIFRlc3QgdGhhdCBkcmF3aW5nIHdvcmtzIGNvcnJlY3RseSB3aGVuIGxldmVscyBv
dXRzaWRlIHRoZSBCQVNFX0xFVkVML01BWF9MRVZFTCByYW5nZSBkbyBub3QKKy8vIGhhdmUgaW1h
Z2VzIGRlZmluZWQuCitURVNUX1AoVGV4dHVyZTJEQXJyYXlUZXN0RVMzLCBEcmF3V2l0aExldmVs
c091dHNpZGVSYW5nZVVuZGVmaW5lZCkKK3sKKyAgICBpZiAoSXNPU1goKSkKKyAgICB7CisgICAg
ICAgIC8vIE9ic2VydmVkIGluY29ycmVjdCByZW5kZXJpbmcgb24gT1NYLgorICAgICAgICBzdGQ6
OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBPU1guIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKKyAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkRfQVJSQVksIG0yREFycmF5VGV4dHVyZSk7CisgICAgc3Rk
Ojp2ZWN0b3I8R0xDb2xvcj4gdGV4RGF0YUdyZWVuKDJ1ICogMnUgKiAydSwgR0xDb2xvcjo6Z3Jl
ZW4pOworICAgIGdsVGV4SW1hZ2UzRChHTF9URVhUVVJFXzJEX0FSUkFZLCAxLCBHTF9SR0JBOCwg
MiwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAg
dGV4RGF0YUdyZWVuLmRhdGEoKSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkRf
QVJSQVksIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8yRF9BUlJBWSwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5F
QVJfTUlQTUFQX0xJTkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkRfQVJS
QVksIEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwgMSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkRfQVJSQVksIEdMX1RFWFRVUkVfTUFYX0xFVkVMLCAxKTsKKworICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworCisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYp
OworCisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsKK30K
KworLy8gVGVzdCB0aGF0IGRyYXdpbmcgd29ya3MgY29ycmVjdGx5IHdoZW4gbGV2ZWxzIG91dHNp
ZGUgdGhlIEJBU0VfTEVWRUwvTUFYX0xFVkVMIHJhbmdlIGhhdmUKKy8vIGRpbWVuc2lvbnMgdGhh
dCBkb24ndCBmaXQgdGhlIGltYWdlcyBpbnNpZGUgdGhlIHJhbmdlLgorLy8gR0xFUyAzLjAuNCBz
ZWN0aW9uIDMuOC4xMyBUZXh0dXJlIGNvbXBsZXRlbmVzcworVEVTVF9QKFRleHR1cmUyREFycmF5
VGVzdEVTMywgRHJhd1dpdGhMZXZlbHNPdXRzaWRlUmFuZ2VXaXRoSW5jb25zaXN0ZW50RGltZW5z
aW9ucykKK3sKKyAgICBpZiAoSXNPU1goKSkKKyAgICB7CisgICAgICAgIC8vIE9ic2VydmVkIGlu
Y29ycmVjdCByZW5kZXJpbmcgb24gT1NYLgorICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tp
cHBlZCBvbiBPU1guIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
Z2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfM0QsIG0yREFycmF5VGV4dHVyZSk7CisgICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gdGV4RGF0
YVJlZCg4dSAqIDh1ICogOHUsIEdMQ29sb3I6OnJlZCk7CisgICAgc3RkOjp2ZWN0b3I8R0xDb2xv
cj4gdGV4RGF0YUdyZWVuKDJ1ICogMnUgKiAydSwgR0xDb2xvcjo6Z3JlZW4pOworICAgIHN0ZDo6
dmVjdG9yPEdMQ29sb3I+IHRleERhdGFDeWFuKDJ1ICogMnUgKiAydSwgR0xDb2xvcjo6Y3lhbik7
CisKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRF9BUlJBWSwgR0xfVEVYVFVSRV9N
QUdfRklMVEVSLCBHTF9MSU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
X0FSUkFZLCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUl9NSVBNQVBfTElORUFSKTsK
KworICAgIC8vIFR3byBsZXZlbHMgdGhhdCBhcmUgaW5pdGlhbGx5IHVudXNlZC4KKyAgICBnbFRl
eEltYWdlM0QoR0xfVEVYVFVSRV8yRF9BUlJBWSwgMCwgR0xfUkdCQTgsIDgsIDgsIDgsIDAsIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgIHRleERhdGFSZWQuZGF0
YSgpKTsKKyAgICBnbFRleEltYWdlM0QoR0xfVEVYVFVSRV8yRF9BUlJBWSwgMiwgR0xfUkdCQTgs
IDIsIDIsIDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAg
IHRleERhdGFDeWFuLmRhdGEoKSk7CisKKyAgICAvLyBPbmUgbGV2ZWwgdGhhdCBpcyB1c2VkIC0g
b25seSB0aGlzIGxldmVsIHNob3VsZCBhZmZlY3QgY29tcGxldGVuZXNzLgorICAgIGdsVGV4SW1h
Z2UzRChHTF9URVhUVVJFXzJEX0FSUkFZLCAxLCBHTF9SR0JBOCwgMiwgMiwgMiwgMCwgR0xfUkdC
QSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAgdGV4RGF0YUdyZWVuLmRhdGEo
KSk7CisKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRF9BUlJBWSwgR0xfVEVYVFVS
RV9CQVNFX0xFVkVMLCAxKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRF9BUlJB
WSwgR0xfVEVYVFVSRV9NQVhfTEVWRUwsIDEpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
CisKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisKKyAgICBFWFBF
Q1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4pOworCisgICAgaWYgKElzSW50
ZWwoKSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVf
T1BFTkdMX0FOR0xFKQorICAgIHsKKyAgICAgICAgLy8gSW50ZWwgd2FzIG9ic2VydmVkIGRyYXdp
bmcgY29sb3IgMCwwLDAsMCBpbnN0ZWFkIG9mIHRoZSB0ZXh0dXJlIGNvbG9yIGFmdGVyIHRoZSBi
YXNlCisgICAgICAgIC8vIGxldmVsIHdhcyBjaGFuZ2VkLgorICAgICAgICBzdGQ6OmNvdXQgPDwg
IlRlc3QgcGFydGlhbGx5IHNraXBwZWQgb24gSW50ZWwgT3BlbkdMLiIgPDwgc3RkOjplbmRsOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChJc05WSURJQSgpICYmIChnZXRQbGF0Zm9y
bVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFIHx8Cisg
ICAgICAgICAgICAgICAgICAgICAgIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZP
Uk1fQU5HTEVfVFlQRV9PUEVOR0xFU19BTkdMRSkpCisgICAgeworICAgICAgICAvLyBOVklESUEg
d2FzIG9ic2VydmVkIGRyYXdpbmcgY29sb3IgMCwwLDAsMCBpbnN0ZWFkIG9mIHRoZSB0ZXh0dXJl
IGNvbG9yIGFmdGVyIHRoZSBiYXNlCisgICAgICAgIC8vIGxldmVsIHdhcyBjaGFuZ2VkLgorICAg
ICAgICBzdGQ6OmNvdXQgPDwgIlRlc3QgcGFydGlhbGx5IHNraXBwZWQgb24gTlZJRElBIE9wZW5H
TC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFN3aXRj
aCB0aGUgbGV2ZWwgdGhhdCBpcyBiZWluZyB1c2VkIHRvIHRoZSBjeWFuIGxldmVsIDIuCisgICAg
Z2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkRfQVJSQVksIEdMX1RFWFRVUkVfQkFTRV9MRVZF
TCwgMik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkRfQVJSQVksIEdMX1RFWFRV
UkVfTUFYX0xFVkVMLCAyKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZHJh
d1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworCisgICAgRVhQRUNUX1BJWEVMX0NP
TE9SX0VRKDAsIDAsIEdMQ29sb3I6OmN5YW4pOworfQorCisvLyBUZXN0IHRoYXQgdGV4dHVyZSBj
b21wbGV0ZW5lc3MgaXMgdXBkYXRlZCBpZiB0ZXh0dXJlIG1heCBsZXZlbCBjaGFuZ2VzLgorLy8g
R0xFUyAzLjAuNCBzZWN0aW9uIDMuOC4xMyBUZXh0dXJlIGNvbXBsZXRlbmVzcworVEVTVF9QKFRl
eHR1cmUyRFRlc3RFUzMsIFRleHR1cmVDb21wbGV0ZW5lc3NDaGFuZ2VzV2l0aE1heExldmVsKQor
eworICAgIGlmIChJc0ludGVsKCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFU
Rk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkKKyAgICB7CisgICAgICAgIC8vIEludGVsIHdh
cyBvYnNlcnZlZCBoYXZpbmcgd3JvbmcgYmVoYXZpb3IgYWZ0ZXIgdGhlIHRleHR1cmUgaXMgbWFk
ZSBpbmNvbXBsZXRlIGJ5IGNoYW5naW5nCisgICAgICAgIC8vIHRoZSBiYXNlIGxldmVsLgorICAg
ICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6
OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKElzT1NYKCkpCisgICAgewor
ICAgICAgICAvLyBPYnNlcnZlZCBpbmNvcnJlY3QgcmVuZGVyaW5nIG9uIE9TWC4KKyAgICAgICAg
c3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gT1NYLiIgPDwgc3RkOjplbmRsOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKKyAg
ICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOworICAgIHN0ZDo6dmVj
dG9yPEdMQ29sb3I+IHRleERhdGFHcmVlbig4dSAqIDh1LCBHTENvbG9yOjpncmVlbik7CisKKyAg
ICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBH
TF9MSU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJF
X01JTl9GSUxURVIsIEdMX0xJTkVBUl9NSVBNQVBfTElORUFSKTsKKworICAgIC8vIEEgbGV2ZWwg
dGhhdCBpcyBpbml0aWFsbHkgdW51c2VkLgorICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJE
LCAxLCBHTF9SR0JBOCwgOCwgOCwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAg
ICAgICAgICAgICAgdGV4RGF0YUdyZWVuLmRhdGEoKSk7CisKKyAgICAvLyBPbmUgbGV2ZWwgdGhh
dCBpcyBpbml0aWFsbHkgdXNlZCAtIG9ubHkgdGhpcyBsZXZlbCBzaG91bGQgYWZmZWN0IGNvbXBs
ZXRlbmVzcy4KKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQTgsIDIs
IDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgIHRleERh
dGFHcmVlbi5kYXRhKCkpOworCisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdM
X1RFWFRVUkVfQkFTRV9MRVZFTCwgMCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
MkQsIEdMX1RFWFRVUkVfTUFYX0xFVkVMLCAwKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OworCisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworCisgICAgRVhQ
RUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsKKworICAgIC8vIFN3aXRj
aCB0aGUgbWF4IGxldmVsIHRvIGxldmVsIDEuIFRoZSBsZXZlbHMgd2l0aGluIHRoZSB1c2VkIHJh
bmdlIG5vdyBoYXZlIGluY29uc2lzdGVudAorICAgIC8vIGRpbWVuc2lvbnMgYW5kIHRoZSB0ZXh0
dXJlIHNob3VsZCBiZSBpbmNvbXBsZXRlLgorICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX01BWF9MRVZFTCwgMSk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1Io
KTsKKworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgIEVY
UEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpibGFjayk7Cit9CisKKy8vIFRlc3Qg
dGhhdCAzRCB0ZXh0dXJlIGNvbXBsZXRlbmVzcyBpcyB1cGRhdGVkIGlmIHRleHR1cmUgbWF4IGxl
dmVsIGNoYW5nZXMuCisvLyBHTEVTIDMuMC40IHNlY3Rpb24gMy44LjEzIFRleHR1cmUgY29tcGxl
dGVuZXNzCitURVNUX1AoVGV4dHVyZTNEVGVzdEVTMywgVGV4dHVyZTNEQ29tcGxldGVuZXNzQ2hh
bmdlc1dpdGhNYXhMZXZlbCkKK3sKKyAgICBpZiAoSXNJbnRlbCgpICYmIGdldFBsYXRmb3JtUmVu
ZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUpCisgICAgewor
ICAgICAgICAvLyBJbnRlbCB3YXMgb2JzZXJ2ZWQgaGF2aW5nIHdyb25nIGJlaGF2aW9yIGFmdGVy
IHRoZSB0ZXh0dXJlIGlzIG1hZGUgaW5jb21wbGV0ZSBieSBjaGFuZ2luZworICAgICAgICAvLyB0
aGUgYmFzZSBsZXZlbC4KKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50
ZWwgT3BlbkdMLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlm
IChJc09TWCgpKQorICAgIHsKKyAgICAgICAgLy8gT2JzZXJ2ZWQgaW5jb3JyZWN0IHJlbmRlcmlu
ZyBvbiBPU1guCisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIE9TWC4iIDw8
IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGdsQWN0aXZlVGV4dHVy
ZShHTF9URVhUVVJFMCk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzNELCBtVGV4dHVy
ZTNEKTsKKyAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiB0ZXhEYXRhR3JlZW4oMnUgKiAydSAqIDJ1
LCBHTENvbG9yOjpncmVlbik7CisKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8zRCwg
R0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzNELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUl9NSVBNQVBfTElO
RUFSKTsKKworICAgIC8vIEEgbGV2ZWwgdGhhdCBpcyBpbml0aWFsbHkgdW51c2VkLgorICAgIGds
VGV4SW1hZ2UzRChHTF9URVhUVVJFXzNELCAxLCBHTF9SR0JBOCwgMSwgMSwgMiwgMCwgR0xfUkdC
QSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAgdGV4RGF0YUdyZWVuLmRhdGEo
KSk7CisKKyAgICAvLyBPbmUgbGV2ZWwgdGhhdCBpcyBpbml0aWFsbHkgdXNlZCAtIG9ubHkgdGhp
cyBsZXZlbCBzaG91bGQgYWZmZWN0IGNvbXBsZXRlbmVzcy4KKyAgICBnbFRleEltYWdlM0QoR0xf
VEVYVFVSRV8zRCwgMCwgR0xfUkdCQTgsIDIsIDIsIDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVE
X0JZVEUsCisgICAgICAgICAgICAgICAgIHRleERhdGFHcmVlbi5kYXRhKCkpOworCisgICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfM0QsIEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwgMCk7Cisg
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfM0QsIEdMX1RFWFRVUkVfTUFYX0xFVkVMLCAw
KTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZHJhd1F1YWQobVByb2dyYW0s
ICJwb3NpdGlvbiIsIDAuNWYpOworCisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdM
Q29sb3I6OmdyZWVuKTsKKworICAgIC8vIFN3aXRjaCB0aGUgbWF4IGxldmVsIHRvIGxldmVsIDEu
IFRoZSBsZXZlbHMgd2l0aGluIHRoZSB1c2VkIHJhbmdlIG5vdyBoYXZlIGluY29uc2lzdGVudAor
ICAgIC8vIGRpbWVuc2lvbnMgYW5kIHRoZSB0ZXh0dXJlIHNob3VsZCBiZSBpbmNvbXBsZXRlLgor
ICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzNELCBHTF9URVhUVVJFX01BWF9MRVZFTCwg
MSk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGRyYXdRdWFkKG1Qcm9ncmFt
LCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBH
TENvbG9yOjpibGFjayk7Cit9CisKKy8vIFRlc3QgdGhhdCB0ZXh0dXJlIGNvbXBsZXRlbmVzcyBp
cyB1cGRhdGVkIGlmIHRleHR1cmUgYmFzZSBsZXZlbCBjaGFuZ2VzLgorLy8gR0xFUyAzLjAuNCBz
ZWN0aW9uIDMuOC4xMyBUZXh0dXJlIGNvbXBsZXRlbmVzcworVEVTVF9QKFRleHR1cmUyRFRlc3RF
UzMsIFRleHR1cmVDb21wbGV0ZW5lc3NDaGFuZ2VzV2l0aEJhc2VMZXZlbCkKK3sKKyAgICBpZiAo
SXNJbnRlbCgpICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVf
VFlQRV9PUEVOR0xfQU5HTEUpCisgICAgeworICAgICAgICAvLyBJbnRlbCB3YXMgb2JzZXJ2ZWQg
aGF2aW5nIHdyb25nIGJlaGF2aW9yIGFmdGVyIHRoZSB0ZXh0dXJlIGlzIG1hZGUgaW5jb21wbGV0
ZSBieSBjaGFuZ2luZworICAgICAgICAvLyB0aGUgYmFzZSBsZXZlbC4KKyAgICAgICAgc3RkOjpj
b3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgT3BlbkdMLiIgPDwgc3RkOjplbmRsOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsK
KyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOworICAgIHN0ZDo6
dmVjdG9yPEdMQ29sb3I+IHRleERhdGFHcmVlbig4dSAqIDh1LCBHTENvbG9yOjpncmVlbik7CisK
KyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVS
LCBHTF9MSU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhU
VVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUl9NSVBNQVBfTElORUFSKTsKKworICAgIC8vIFR3byBs
ZXZlbHMgdGhhdCBhcmUgaW5pdGlhbGx5IHVudXNlZC4KKyAgICBnbFRleEltYWdlMkQoR0xfVEVY
VFVSRV8yRCwgMCwgR0xfUkdCQTgsIDgsIDgsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUs
CisgICAgICAgICAgICAgICAgIHRleERhdGFHcmVlbi5kYXRhKCkpOworICAgIGdsVGV4SW1hZ2Uy
RChHTF9URVhUVVJFXzJELCAxLCBHTF9SR0JBOCwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdO
RURfQllURSwKKyAgICAgICAgICAgICAgICAgdGV4RGF0YUdyZWVuLmRhdGEoKSk7CisKKyAgICAv
LyBPbmUgbGV2ZWwgdGhhdCBpcyBpbml0aWFsbHkgdXNlZCAtIG9ubHkgdGhpcyBsZXZlbCBzaG91
bGQgYWZmZWN0IGNvbXBsZXRlbmVzcy4KKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwg
MiwgR0xfUkdCQTgsIDIsIDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAg
ICAgICAgICAgIHRleERhdGFHcmVlbi5kYXRhKCkpOworCisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwgMik7CisgICAgZ2xUZXhQYXJhbWV0
ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFYX0xFVkVMLCAyKTsKKworICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOworCisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAu
NWYpOworCisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsK
KworICAgIC8vIFN3aXRjaCB0aGUgYmFzZSBsZXZlbCB0byBsZXZlbCAxLiBUaGUgbGV2ZWxzIHdp
dGhpbiB0aGUgdXNlZCByYW5nZSBub3cgaGF2ZSBpbmNvbnNpc3RlbnQKKyAgICAvLyBkaW1lbnNp
b25zIGFuZCB0aGUgdGV4dHVyZSBzaG91bGQgYmUgaW5jb21wbGV0ZS4KKyAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAxKTsKKworICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIs
IDAuNWYpOworCisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmJsYWNr
KTsKK30KKworLy8gVGVzdCB0aGF0IHRleHR1cmUgaXMgbm90IGNvbXBsZXRlIGlmIGJhc2UgbGV2
ZWwgaXMgZ3JlYXRlciB0aGFuIG1heCBsZXZlbC4KKy8vIEdMRVMgMy4wLjQgc2VjdGlvbiAzLjgu
MTMgVGV4dHVyZSBjb21wbGV0ZW5lc3MKK1RFU1RfUChUZXh0dXJlMkRUZXN0RVMzLCBUZXh0dXJl
QmFzZUxldmVsR3JlYXRlclRoYW5NYXhMZXZlbCkKK3sKKyAgICBpZiAoSXNJbnRlbCgpICYmIGdl
dFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5H
TEUpCisgICAgeworICAgICAgICAvLyBJbnRlbCBXaW5kb3dzIE9wZW5HTCBkcml2ZXIgY3Jhc2hl
cyBpZiB0aGUgYmFzZSBsZXZlbCBvZiBhIG5vbi1pbW11dGFibGUgdGV4dHVyZSBpcyBvdXQKKyAg
ICAgICAgLy8gb2YgcmFuZ2UuCisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9u
IEludGVsIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9U
RVhUVVJFXzJELCBtVGV4dHVyZTJEKTsKKworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOworICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwor
CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkE4LCAxLCAxLCAwLCBH
TF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAmR0xDb2xvcjo6Z3JlZW4pOworCisgICAgZ2xUZXhQ
YXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwgMTAwMDApOwor
ICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BWF9MRVZFTCwg
MCk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGRyYXdRdWFkKG1Qcm9ncmFt
LCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgIC8vIFRleHR1cmUgc2hvdWxkIGJlIGluY29tcGxl
dGUuCisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmJsYWNrKTsKK30K
KworLy8gVGVzdCB0aGF0IGltbXV0YWJsZSB0ZXh0dXJlIGJhc2UgbGV2ZWwgYW5kIG1heCBsZXZl
bCBhcmUgY2xhbXBlZC4KKy8vIEdMRVMgMy4wLjQgc2VjdGlvbiAzLjguMTAgc3Vic2VjdGlvbiBN
aXBtYXBwaW5nCitURVNUX1AoVGV4dHVyZTJEVGVzdEVTMywgSW1tdXRhYmxlVGV4dHVyZUJhc2VM
ZXZlbE91dE9mUmFuZ2UpCit7CisgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKKyAg
ICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOworCisgICAgZ2xUZXhQ
YXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVT
VCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJ
TFRFUiwgR0xfTkVBUkVTVCk7CisKKyAgICBnbFRleFN0b3JhZ2UyRChHTF9URVhUVVJFXzJELCAx
LCBHTF9SR0JBOCwgMSwgMSk7CisKKyAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwg
MCwgMCwgMCwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgJkdMQ29sb3I6OmdyZWVu
KTsKKworICAgIC8vIEZvciBpbW11dGFibGUtZm9ybWF0IHRleHR1cmVzLCBiYXNlIGxldmVsIHNo
b3VsZCBiZSBjbGFtcGVkIHRvIFswLCBsZXZlbHMgLSAxXSwgYW5kIG1heCBsZXZlbAorICAgIC8v
IHNob3VsZCBiZSBjbGFtcGVkIHRvIFtiYXNlX2xldmVsLCBsZXZlbHMgLSAxXS4KKyAgICAvLyBH
TEVTIDMuMC40IHNlY3Rpb24gMy44LjEwIHN1YnNlY3Rpb24gTWlwbWFwcGluZworICAgIC8vIElu
IHRoZSBjYXNlIG9mIHRoaXMgdGVzdCwgdGhvc2UgcnVsZXMgbWFrZSB0aGUgZWZmZWN0aXZlIGJh
c2UgbGV2ZWwgYW5kIG1heCBsZXZlbCAwLgorICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX0JBU0VfTEVWRUwsIDEwMDAwKTsKKyAgICBnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQVhfTEVWRUwsIDEwMDAwKTsKKworICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOworCisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAu
NWYpOworCisgICAgLy8gVGV4dHVyZSBzaG91bGQgYmUgY29tcGxldGUuCisgICAgRVhQRUNUX1BJ
WEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsKK30KKworLy8gVGVzdCB0aGF0IGNo
YW5naW5nIGJhc2UgbGV2ZWwgd29ya3Mgd2hlbiBpdCBhZmZlY3RzIHRoZSBmb3JtYXQgb2YgdGhl
IHRleHR1cmUuCitURVNUX1AoVGV4dHVyZTJEVGVzdEVTMywgVGV4dHVyZUZvcm1hdENoYW5nZXNX
aXRoQmFzZUxldmVsKQoreworICAgIGlmIChJc05WSURJQSgpICYmIElzT3BlbkdMKCkpCisgICAg
eworICAgICAgICAvLyBPYnNlcnZlZCByZW5kZXJpbmcgY29ycnVwdGlvbiBvbiBOVklESUEgT3Bl
bkdMLgorICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBOVklESUEgT3BlbkdM
LiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChJc0ludGVs
KCkgJiYgSXNEZXNrdG9wT3BlbkdMKCkpCisgICAgeworICAgICAgICAvLyBPYnNlcnZlZCBpbmNv
cnJlY3QgcmVuZGVyaW5nIG9uIEludGVsIE9wZW5HTC4KKyAgICAgICAgc3RkOjpjb3V0IDw8ICJU
ZXN0IHNraXBwZWQgb24gSW50ZWwgT3BlbkdMLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGlmIChJc0FNRCgpICYmIElzRGVza3RvcE9wZW5HTCgpKQorICAgIHsK
KyAgICAgICAgLy8gT2JzZXJ2ZWQgaW5jb3JyZWN0IHJlbmRlcmluZyBvbiBBTUQgT3BlbkdMLgor
ICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBBTUQgT3BlbkdMLiIgPDwgc3Rk
OjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZ2xBY3RpdmVUZXh0dXJlKEdM
X1RFWFRVUkUwKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQp
OworICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHRleERhdGFDeWFuKDR1ICogNHUsIEdMQ29sb3I6
OmN5YW4pOworICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHRleERhdGFHcmVlbig0dSAqIDR1LCBH
TENvbG9yOjpncmVlbik7CisKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUl9NSVBNQVBfTElORUFS
KTsKKworICAgIC8vIFJHQkE4IGxldmVsIHRoYXQncyBpbml0aWFsbHkgdW51c2VkLgorICAgIGds
VGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBOCwgNCwgNCwgMCwgR0xfUkdCQSwg
R0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAgdGV4RGF0YUN5YW4uZGF0YSgpKTsK
KworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX0JBU0VfTEVW
RUwsIDEpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01B
WF9MRVZFTCwgMSk7CisKKyAgICAvLyBSRzggbGV2ZWwgdGhhdCdzIGluaXRpYWxseSB1c2VkLCB3
aXRoIGNvbnNpc3RlbnQgZGltZW5zaW9ucyB3aXRoIGxldmVsIDAgYnV0IGEgZGlmZmVyZW50Cisg
ICAgLy8gZm9ybWF0LiBJdCByZWFkcyBncmVlbiBjaGFubmVsIGRhdGEgZnJvbSB0aGUgZ3JlZW4g
YW5kIGFscGhhIGNoYW5uZWxzIG9mIHRleERhdGFHcmVlbgorICAgIC8vICh0aGlzIGlzIGEgYml0
IGhhY2t5IGJ1dCB3b3JrcykuCisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDEsIEdM
X1JHOCwgMiwgMiwgMCwgR0xfUkcsIEdMX1VOU0lHTkVEX0JZVEUsIHRleERhdGFHcmVlbi5kYXRh
KCkpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBkcmF3UXVhZChtUHJvZ3Jh
bSwgInBvc2l0aW9uIiwgMC41Zik7CisKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwg
R0xDb2xvcjo6Z3JlZW4pOworCisgICAgLy8gU3dpdGNoIHRoZSB0ZXh0dXJlIHRvIHVzZSB0aGUg
Y3lhbiBsZXZlbCAwIHdpdGggdGhlIFJHQkEgZm9ybWF0LgorICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX0JBU0VfTEVWRUwsIDApOworICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BWF9MRVZFTCwgMCk7CisKKyAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKKworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAw
LjVmKTsKKworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpjeWFuKTsK
K30KKworLy8gVGVzdCB0aGF0IHNldHRpbmcgYSB0ZXh0dXJlIGltYWdlIHdvcmtzIHdoZW4gYmFz
ZSBsZXZlbCBpcyBvdXQgb2YgcmFuZ2UuCitURVNUX1AoVGV4dHVyZTJEVGVzdEVTMywgU2V0SW1h
Z2VXaGVuQmFzZUxldmVsT3V0T2ZSYW5nZSkKK3sKKyAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVY
VFVSRTApOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7CisK
KyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVS
LCBHTF9ORUFSRVNUKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVY
VFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFXzJELCBHTF9URVhUVVJFX0JBU0VfTEVWRUwsIDEwMDAwKTsKKyAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQVhfTEVWRUwsIDEwMDAwKTsKKworICAg
IGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBOCwgMSwgMSwgMCwgR0xfUkdC
QSwgR0xfVU5TSUdORURfQllURSwgJkdMQ29sb3I6OmdyZWVuKTsKKworICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOworCisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRV
UkVfQkFTRV9MRVZFTCwgMCk7CisKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwg
MC41Zik7CisKKyAgICAvLyBUZXh0dXJlIHNob3VsZCBiZSBjb21wbGV0ZS4KKyAgICBFWFBFQ1Rf
UElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4pOworfQorCisvLyBJbiB0aGUgRDNE
MTEgcmVuZGVyZXIsIHdlIG5lZWQgdG8gaW5pdGlhbGl6ZSBzb21lIHRleHR1cmUgZm9ybWF0cywg
dG8gZmlsbCBlbXB0eSBjaGFubmVscy4gRUcgUkJBLT5SR0JBOCwgd2l0aCAxLjAKKy8vIGluIHRo
ZSBhbHBoYSBjaGFubmVsLiBUaGlzIHRlc3QgY292ZXJzIGEgYnVnIHdoZXJlIHJlZGVmaW5pbmcg
YXJyYXkgdGV4dHVyZXMgd2l0aCB0aGVzZSBmb3JtYXRzIGRvZXMgbm90IHdvcmsgYXMKKy8vIGV4
cGVjdGVkLgorVEVTVF9QKFRleHR1cmUyREFycmF5VGVzdEVTMywgUmVkZWZpbmVJbml0dGFibGVB
cnJheSkKK3sKKyAgICBzdGQ6OnZlY3RvcjxHTHVieXRlPiBwaXhlbERhdGE7CisgICAgZm9yIChz
aXplX3QgY291bnQgPSAwOyBjb3VudCA8IDUwMDA7IGNvdW50KyspCisgICAgeworICAgICAgICBw
aXhlbERhdGEucHVzaF9iYWNrKDB1KTsKKyAgICAgICAgcGl4ZWxEYXRhLnB1c2hfYmFjaygyNTV1
KTsKKyAgICAgICAgcGl4ZWxEYXRhLnB1c2hfYmFjaygwdSk7CisgICAgfQorCisgICAgZ2xCaW5k
VGV4dHVyZShHTF9URVhUVVJFXzJEX0FSUkFZLCBtMkRBcnJheVRleHR1cmUpOworICAgIGdsVXNl
UHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgZ2xVbmlmb3JtMWkobVRleHR1cmVBcnJheUxvY2F0aW9u
LCAwKTsKKworICAgIC8vIFRoZSBmaXJzdCBkcmF3IHdvcmtlZCBjb3JyZWN0bHkuCisgICAgZ2xU
ZXhJbWFnZTNEKEdMX1RFWFRVUkVfMkRfQVJSQVksIDAsIEdMX1JHQiwgNCwgNCwgMiwgMCwgR0xf
UkdCLCBHTF9VTlNJR05FRF9CWVRFLCAmcGl4ZWxEYXRhWzBdKTsKKworICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJEX0FSUkFZLCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJF
U1QpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJEX0FSUkFZLCBHTF9URVhUVVJF
X01BR19GSUxURVIsIEdMX05FQVJFU1QpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJEX0FSUkFZLCBHTF9URVhUVVJFX1dSQVBfUywgR0xfUkVQRUFUKTsKKyAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8yRF9BUlJBWSwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX1JFUEVBVCk7
CisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDEuMGYpOworICAgIEVYUEVDVF9Q
SVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpncmVlbik7CisKKyAgICAvLyBUaGUgZGltZW5z
aW9uIG9mIHRoZSByZXNwZWNpZmljYXRpb24gbXVzdCBtYXRjaCB0aGUgb3JpZ2luYWwgZXhhY3Rs
eSB0byB0cmlnZ2VyIHRoZSBidWcuCisgICAgZ2xUZXhJbWFnZTNEKEdMX1RFWFRVUkVfMkRfQVJS
QVksIDAsIEdMX1JHQiwgNCwgNCwgMiwgMCwgR0xfUkdCLCBHTF9VTlNJR05FRF9CWVRFLCAmcGl4
ZWxEYXRhWzBdKTsKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMS4wZik7Cisg
ICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsKKworICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOworfQorCisvLyBUZXN0IHNoYWRvdyBzYW1wbGVyIGFuZCByZWd1
bGFyIG5vbi1zaGFkb3cgc2FtcGxlciBjb2V4aXN0aW5nIGluIHRoZSBzYW1lIHNoYWRlci4KKy8v
IFRoaXMgdGVzdCBpcyBuZWVkZWQgZXNwZWNpYWxseSB0byBjb25maXJtIHRoYXQgc2FtcGxlciBy
ZWdpc3RlcnMgZ2V0IGFzc2lnbmVkIGNvcnJlY3RseSBvbgorLy8gdGhlIEhMU0wgYmFja2VuZCBl
dmVuIHdoZW4gdGhlcmUncyBhIG1peCBvZiBkaWZmZXJlbnQgSExTTCBzYW1wbGVyIGFuZCB0ZXh0
dXJlIHR5cGVzLgorVEVTVF9QKFNoYWRvd1NhbXBsZXJQbHVzU2FtcGxlcjNEVGVzdEVTMywgU2hh
ZG93U2FtcGxlclBsdXNTYW1wbGVyM0REcmF3KQoreworICAgIGdsQWN0aXZlVGV4dHVyZShHTF9U
RVhUVVJFMCk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzNELCBtVGV4dHVyZTNEKTsK
KyAgICBHTHVieXRlIHRleERhdGFbNF07CisgICAgdGV4RGF0YVswXSA9IDA7CisgICAgdGV4RGF0
YVsxXSA9IDYwOworICAgIHRleERhdGFbMl0gPSAwOworICAgIHRleERhdGFbM10gPSAyNTU7Cisg
ICAgZ2xUZXhJbWFnZTNEKEdMX1RFWFRVUkVfM0QsIDAsIEdMX1JHQkEsIDEsIDEsIDEsIDAsIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHRleERhdGEpOworCisgICAgZ2xBY3RpdmVUZXh0dXJl
KEdMX1RFWFRVUkUxKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJl
U2hhZG93KTsKKyAgICBHTGZsb2F0IGRlcHRoVGV4RGF0YVsxXTsKKyAgICBkZXB0aFRleERhdGFb
MF0gPSAwLjVmOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9ERVBUSF9D
T01QT05FTlQzMkYsIDEsIDEsIDAsIEdMX0RFUFRIX0NPTVBPTkVOVCwgR0xfRkxPQVQsCisgICAg
ICAgICAgICAgICAgIGRlcHRoVGV4RGF0YSk7CisKKyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0p
OworICAgIGdsVW5pZm9ybTFmKG1EZXB0aFJlZlVuaWZvcm1Mb2NhdGlvbiwgMC4zZik7CisgICAg
Z2xVbmlmb3JtMWkobVRleHR1cmUzRFVuaWZvcm1Mb2NhdGlvbiwgMCk7CisgICAgZ2xVbmlmb3Jt
MWkobVRleHR1cmVTaGFkb3dVbmlmb3JtTG9jYXRpb24sIDEpOworCisgICAgZ2xUZXhQYXJhbWV0
ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfQ09NUEFSRV9GVU5DLCBHTF9MRVFVQUwpOwor
ICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICBFWFBFQ1RfR0xf
Tk9fRVJST1IoKTsKKyAgICAvLyBUaGUgc2hhZGVyIHdyaXRlcyAwLjUgKiA8Y29tcGFyaXNvbiBy
ZXN1bHQgKDEuMCk+ICsgPHRleHR1cmUgY29sb3I+CisgICAgRVhQRUNUX1BJWEVMX05FQVIoMCwg
MCwgMTI4LCAxODgsIDEyOCwgMjU1LCAyKTsKKworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFXzJELCBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQywgR0xfR1JFQVRFUik7CisgICAgZHJhd1F1
YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OworICAgIC8vIFRoZSBzaGFkZXIgd3JpdGVzIDAuNSAqIDxjb21wYXJpc29uIHJlc3VsdCAoMC4w
KT4gKyA8dGV4dHVyZSBjb2xvcj4KKyAgICBFWFBFQ1RfUElYRUxfTkVBUigwLCAwLCAwLCA2MCwg
MCwgMjU1LCAyKTsKK30KKworLy8gVGVzdCBtdWx0aXBsZSBkaWZmZXJlbnQgc2FtcGxlciB0eXBl
cyBpbiB0aGUgc2FtZSBzaGFkZXIuCisvLyBUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IGV2ZW4g
aWYgc2FtcGxlciAvIHRleHR1cmUgcmVnaXN0ZXJzIGdldCBncm91cGVkIHRvZ2V0aGVyIGJhc2Vk
IG9uIHR5cGUKKy8vIG9yIG90aGVyd2lzZSBnZXQgc2h1ZmZsZWQgYXJvdW5kIGluIHRoZSBITFNM
IGJhY2tlbmQgb2YgdGhlIHNoYWRlciB0cmFuc2xhdG9yLCB0aGUgRDNEIHJlbmRlcmVyCisvLyBz
dGlsbCBoYXMgdGhlIHJpZ2h0IHJlZ2lzdGVyIGluZGV4IGluZm9ybWF0aW9uIGZvciBlYWNoIEVT
U0wgc2FtcGxlci4KKy8vIFRoZSB0ZXN0ZWQgRVNTTCBzYW1wbGVycyBoYXZlIHRoZSBmb2xsb3dp
bmcgdHlwZXMgaW4gRDNEMTEgSExTTDoKKy8vIHNhbXBsZXIyRDogICAgICAgICBUZXh0dXJlMkQg
ICArIFNhbXBsZXJTdGF0ZQorLy8gc2FtcGxlckN1YmU6ICAgICAgIFRleHR1cmVDdWJlICsgU2Ft
cGxlclN0YXRlCisvLyBzYW1wbGVyMkRTaGFkb3c6ICAgVGV4dHVyZTJEICAgKyBTYW1wbGVyQ29t
cGFyaXNvblN0YXRlCisvLyBzYW1wbGVyQ3ViZVNoYWRvdzogVGV4dHVyZUN1YmUgKyBTYW1wbGVy
Q29tcGFyaXNvblN0YXRlCitURVNUX1AoU2FtcGxlclR5cGVNaXhUZXN0RVMzLCBTYW1wbGVyVHlw
ZU1peERyYXcpCit7CisgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKKyAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOworICAgIEdMdWJ5dGUgdGV4RGF0
YVs0XTsKKyAgICB0ZXhEYXRhWzBdID0gMDsKKyAgICB0ZXhEYXRhWzFdID0gMDsKKyAgICB0ZXhE
YXRhWzJdID0gMTIwOworICAgIHRleERhdGFbM10gPSAyNTU7CisgICAgZ2xUZXhJbWFnZTJEKEdM
X1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDEsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsIHRleERhdGEpOworCisgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUxKTsKKyAgICBn
bEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIG1UZXh0dXJlQ3ViZSk7CisgICAgdGV4
RGF0YVswXSA9IDA7CisgICAgdGV4RGF0YVsxXSA9IDkwOworICAgIHRleERhdGFbMl0gPSAwOwor
ICAgIHRleERhdGFbM10gPSAyNTU7CisgICAgZ2xUZXhTdG9yYWdlMkQoR0xfVEVYVFVSRV9DVUJF
X01BUCwgMSwgR0xfUkdCQTgsIDEsIDEpOworICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJF
X0NVQkVfTUFQX1BPU0lUSVZFX1gsIDAsIDAsIDAsIDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVE
X0JZVEUsCisgICAgICAgICAgICAgICAgICAgIHRleERhdGEpOworCisgICAgZ2xBY3RpdmVUZXh0
dXJlKEdMX1RFWFRVUkUyKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0
dXJlMkRTaGFkb3cpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhU
VVJFX0NPTVBBUkVfRlVOQywgR0xfTEVRVUFMKTsKKyAgICBHTGZsb2F0IGRlcHRoVGV4RGF0YVsx
XTsKKyAgICBkZXB0aFRleERhdGFbMF0gPSAwLjVmOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhU
VVJFXzJELCAwLCBHTF9ERVBUSF9DT01QT05FTlQzMkYsIDEsIDEsIDAsIEdMX0RFUFRIX0NPTVBP
TkVOVCwgR0xfRkxPQVQsCisgICAgICAgICAgICAgICAgIGRlcHRoVGV4RGF0YSk7CisKKyAgICBn
bEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTMpOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVS
RV9DVUJFX01BUCwgbVRleHR1cmVDdWJlU2hhZG93KTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xf
VEVYVFVSRV9DVUJFX01BUCwgR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMsIEdMX0xFUVVBTCk7Cisg
ICAgZGVwdGhUZXhEYXRhWzBdID0gMC4yZjsKKyAgICBnbFRleFN0b3JhZ2UyRChHTF9URVhUVVJF
X0NVQkVfTUFQLCAxLCBHTF9ERVBUSF9DT01QT05FTlQzMkYsIDEsIDEpOworICAgIGdsVGV4U3Vi
SW1hZ2UyRChHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsIDAsIDAsIDAsIDEsIDEsIEdM
X0RFUFRIX0NPTVBPTkVOVCwgR0xfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgIGRlcHRoVGV4
RGF0YSk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsVXNlUHJvZ3JhbSht
UHJvZ3JhbSk7CisgICAgZ2xVbmlmb3JtMWYobURlcHRoUmVmVW5pZm9ybUxvY2F0aW9uLCAwLjNm
KTsKKyAgICBnbFVuaWZvcm0xaShtVGV4dHVyZTJEVW5pZm9ybUxvY2F0aW9uLCAwKTsKKyAgICBn
bFVuaWZvcm0xaShtVGV4dHVyZUN1YmVVbmlmb3JtTG9jYXRpb24sIDEpOworICAgIGdsVW5pZm9y
bTFpKG1UZXh0dXJlMkRTaGFkb3dVbmlmb3JtTG9jYXRpb24sIDIpOworICAgIGdsVW5pZm9ybTFp
KG1UZXh0dXJlQ3ViZVNoYWRvd1VuaWZvcm1Mb2NhdGlvbiwgMyk7CisKKyAgICBkcmF3UXVhZCht
UHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cisg
ICAgLy8gVGhlIHNoYWRlciB3cml0ZXM6CisgICAgLy8gPHRleHR1cmUgMmQgY29sb3I+ICsKKyAg
ICAvLyA8Y3ViZSBtYXAgY29sb3I+ICsKKyAgICAvLyAwLjI1ICogPGNvbXBhcmlzb24gcmVzdWx0
ICgxLjApPiArCisgICAgLy8gMC4xMjUgKiA8Y29tcGFyaXNvbiByZXN1bHQgKDAuMCk+CisgICAg
RVhQRUNUX1BJWEVMX05FQVIoMCwgMCwgNjQsIDE1NCwgMTg0LCAyNTUsIDIpOworfQorCisvLyBU
ZXN0IGRpZmZlcmVudCBiYXNlIGxldmVscyBvbiB0ZXh0dXJlcyBhY2Nlc3NlZCB0aHJvdWdoIHRo
ZSBzYW1lIHNhbXBsZXIgYXJyYXkuCisvLyBDYWxsaW5nIHRleHR1cmVTaXplKCkgb24gdGhlIHNh
bXBsZXJzIGhpdHMgdGhlIEQzRCBzYW1wbGVyIG1ldGFkYXRhIHdvcmthcm91bmQuCitURVNUX1Ao
VGV4dHVyZVNpemVUZXh0dXJlQXJyYXlUZXN0LCBCYXNlTGV2ZWxWYXJpZXNJblRleHR1cmVBcnJh
eSkKK3sKKyAgICBpZiAoKElzQU1EKCkgfHwgSXNJbnRlbCgpKSAmJiBnZXRQbGF0Zm9ybVJlbmRl
cmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUpCisgICAgeworICAg
ICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBhbmQgQU1EIEQzRC4iIDw8
IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBnbEFjdGl2ZVRleHR1cmUo
R0xfVEVYVFVSRTApOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUy
REEpOworICAgIEdMc2l6ZWkgc2l6ZSA9IDY0OworICAgIGZvciAoR0xpbnQgbGV2ZWwgPSAwOyBs
ZXZlbCA8IDc7ICsrbGV2ZWwpCisgICAgeworICAgICAgICBBU1NFUlRfTFQoMCwgc2l6ZSk7Cisg
ICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCBsZXZlbCwgR0xfUkdCQSwgc2l6ZSwg
c2l6ZSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIpOworICAgICAgICBzaXplID0gc2l6ZSAvIDI7CisgICAgfQorICAgIEFTU0VSVF9F
USgwLCBzaXplKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9CQVNFX0xFVkVMLCAxKTsKKworICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMSk7Cisg
ICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEQik7CisgICAgc2l6ZSA9
IDEyODsKKyAgICBmb3IgKEdMaW50IGxldmVsID0gMDsgbGV2ZWwgPCA4OyArK2xldmVsKQorICAg
IHsKKyAgICAgICAgQVNTRVJUX0xUKDAsIHNpemUpOworICAgICAgICBnbFRleEltYWdlMkQoR0xf
VEVYVFVSRV8yRCwgbGV2ZWwsIEdMX1JHQkEsIHNpemUsIHNpemUsIDAsIEdMX1JHQkEsIEdMX1VO
U0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgc2l6
ZSA9IHNpemUgLyAyOworICAgIH0KKyAgICBBU1NFUlRfRVEoMCwgc2l6ZSk7CisgICAgZ2xUZXhQ
YXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwgMyk7CisgICAg
RVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworICAg
IGdsVW5pZm9ybTFpKG1UZXh0dXJlMExvY2F0aW9uLCAwKTsKKyAgICBnbFVuaWZvcm0xaShtVGV4
dHVyZTFMb2NhdGlvbiwgMSk7CisKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwg
MC41Zik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgLy8gUmVkIGNoYW5uZWw6IHdp
ZHRoIG9mIGxldmVsIDEgb2YgdGV4dHVyZSBBOiAzMi4KKyAgICAvLyBHcmVlbiBjaGFubmVsOiB3
aWR0aCBvZiBsZXZlbCAzIG9mIHRleHR1cmUgQjogMTYuCisgICAgRVhQRUNUX1BJWEVMX05FQVIo
MCwgMCwgMzIsIDE2LCAwLCAyNTUsIDIpOworfQorCisvLyBXaGVuIHNhbXBsaW5nIGEgdGV4dHVy
ZSB3aXRob3V0IGFuIGFscGhhIGNoYW5uZWwsICIxIiBpcyByZXR1cm5lZCBhcyB0aGUgYWxwaGEg
dmFsdWUuCisvLyBFUyAzLjAuNCB0YWJsZSAzLjI0CitURVNUX1AoVGV4dHVyZTJEVGVzdEVTMywg
VGV4dHVyZVJHQkltcGxpY2l0QWxwaGExKQoreworICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhU
VVJFMCk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEKTsKKyAg
ICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCOCwgMSwgMSwgMCwgR0xfUkdC
LCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
KworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgIEVYUEVD
VF9QSVhFTF9BTFBIQV9FUSgwLCAwLCAyNTUpOworfQorCisvLyBXaGVuIHNhbXBsaW5nIGEgdGV4
dHVyZSB3aXRob3V0IGFuIGFscGhhIGNoYW5uZWwsICIxIiBpcyByZXR1cm5lZCBhcyB0aGUgYWxw
aGEgdmFsdWUuCisvLyBFUyAzLjAuNCB0YWJsZSAzLjI0CitURVNUX1AoVGV4dHVyZTJEVGVzdEVT
MywgVGV4dHVyZUx1bWluYW5jZUltcGxpY2l0QWxwaGExKQoreworICAgIGdsQWN0aXZlVGV4dHVy
ZShHTF9URVhUVVJFMCk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVy
ZTJEKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfTFVNSU5BTkNFLCAx
LCAxLCAwLCBHTF9MVU1JTkFOQ0UsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOworICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIs
IDAuNWYpOworCisgICAgRVhQRUNUX1BJWEVMX0FMUEhBX0VRKDAsIDAsIDI1NSk7Cit9CisKKy8v
IFdoZW4gc2FtcGxpbmcgYSB0ZXh0dXJlIHdpdGhvdXQgYW4gYWxwaGEgY2hhbm5lbCwgIjEiIGlz
IHJldHVybmVkIGFzIHRoZSBhbHBoYSB2YWx1ZS4KKy8vIEVTIDMuMC40IHRhYmxlIDMuMjQKK1RF
U1RfUChUZXh0dXJlMkRUZXN0RVMzLCBUZXh0dXJlTHVtaW5hbmNlMzJJbXBsaWNpdEFscGhhMSkK
K3sKKyAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfZmxvYXQiKSkKKyAg
ICB7CisgICAgICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7CisgICAgICAgIGdsQmlu
ZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7CisgICAgICAgIGdsVGV4SW1hZ2Uy
RChHTF9URVhUVVJFXzJELCAwLCBHTF9MVU1JTkFOQ0UsIDEsIDEsIDAsIEdMX0xVTUlOQU5DRSwg
R0xfRkxPQVQsIG51bGxwdHIpOworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAg
ICAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisKKyAgICAgICAgRVhQ
RUNUX1BJWEVMX0FMUEhBX0VRKDAsIDAsIDI1NSk7CisgICAgfQorfQorCisvLyBXaGVuIHNhbXBs
aW5nIGEgdGV4dHVyZSB3aXRob3V0IGFuIGFscGhhIGNoYW5uZWwsICIxIiBpcyByZXR1cm5lZCBh
cyB0aGUgYWxwaGEgdmFsdWUuCisvLyBFUyAzLjAuNCB0YWJsZSAzLjI0CitURVNUX1AoVGV4dHVy
ZTJEVGVzdEVTMywgVGV4dHVyZUx1bWluYW5jZTE2SW1wbGljaXRBbHBoYTEpCit7CisgICAgaWYg
KGV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSkKKyAgICB7Cisg
ICAgICAgIGlmIChJc05WSURJQSgpICYmIElzT3BlbkdMRVMoKSkKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gTlZJRElBIiA8PCBzdGQ6OmVuZGw7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gVE9ETyh5bm92aWtv
dik6IHJlLWVuYWJsZSBvbmNlIHJvb3QgY2F1c2Ugb2YgaHR0cDovL2FuZ2xlYnVnLmNvbS8xNDIw
IGlzIGZpeGVkCisgICAgICAgIGlmIChJc0FuZHJvaWQoKSAmJiBJc0FkcmVubygpICYmIElzT3Bl
bkdMRVMoKSkKKyAgICAgICAgeworICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBw
ZWQgb24gQWRyZW5vIE9wZW5HTEVTIG9uIEFuZHJvaWQuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVY
VFVSRTApOworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQp
OworICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfTFVNSU5BTkNFLCAx
LCAxLCAwLCBHTF9MVU1JTkFOQ0UsIEdMX0hBTEZfRkxPQVRfT0VTLAorICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0cik7CisgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgICAg
IGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgICAgICBFWFBFQ1Rf
UElYRUxfQUxQSEFfRVEoMCwgMCwgMjU1KTsKKyAgICB9Cit9CisKKy8vIFdoZW4gc2FtcGxpbmcg
YSB0ZXh0dXJlIHdpdGhvdXQgYW4gYWxwaGEgY2hhbm5lbCwgIjEiIGlzIHJldHVybmVkIGFzIHRo
ZSBhbHBoYSB2YWx1ZS4KKy8vIEVTIDMuMC40IHRhYmxlIDMuMjQKK1RFU1RfUChUZXh0dXJlMkRV
bnNpZ25lZEludGVnZXJBbHBoYTFUZXN0RVMzLCBUZXh0dXJlUkdCOFVJSW1wbGljaXRBbHBoYTEp
Cit7CisgICAgaWYgKElzSW50ZWwoKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVz
dCBkaXNhYmxlZCBvbiBJbnRlbC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOworICAgIGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVf
MkQsIDAsIEdMX1JHQjhVSSwgMSwgMSwgMCwgR0xfUkdCX0lOVEVHRVIsIEdMX1VOU0lHTkVEX0JZ
VEUsIG51bGxwdHIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhU
VVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworCisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYp
OworCisgICAgRVhQRUNUX1BJWEVMX0FMUEhBX0VRKDAsIDAsIDI1NSk7Cit9CisKKy8vIFdoZW4g
c2FtcGxpbmcgYSB0ZXh0dXJlIHdpdGhvdXQgYW4gYWxwaGEgY2hhbm5lbCwgIjEiIGlzIHJldHVy
bmVkIGFzIHRoZSBhbHBoYSB2YWx1ZS4KKy8vIEVTIDMuMC40IHRhYmxlIDMuMjQKK1RFU1RfUChU
ZXh0dXJlMkRJbnRlZ2VyQWxwaGExVGVzdEVTMywgVGV4dHVyZVJHQjhJSW1wbGljaXRBbHBoYTEp
Cit7CisgICAgaWYgKElzSW50ZWwoKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVz
dCBkaXNhYmxlZCBvbiBJbnRlbC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOworICAgIGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7CisKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgMCwgR0xfUkdCOEksIDEsIDEsIDAsIEdMX1JHQl9JTlRFR0VSLCBHTF9CWVRFLCBudWxs
cHRyKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdf
RklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJS
T1IoKTsKKworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAg
IEVYUEVDVF9QSVhFTF9BTFBIQV9FUSgwLCAwLCAyNTUpOworfQorCisvLyBXaGVuIHNhbXBsaW5n
IGEgdGV4dHVyZSB3aXRob3V0IGFuIGFscGhhIGNoYW5uZWwsICIxIiBpcyByZXR1cm5lZCBhcyB0
aGUgYWxwaGEgdmFsdWUuCisvLyBFUyAzLjAuNCB0YWJsZSAzLjI0CitURVNUX1AoVGV4dHVyZTJE
VW5zaWduZWRJbnRlZ2VyQWxwaGExVGVzdEVTMywgVGV4dHVyZVJHQjE2VUlJbXBsaWNpdEFscGhh
MSkKK3sKKyAgICBpZiAoSXNJbnRlbCgpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJU
ZXN0IGRpc2FibGVkIG9uIEludGVsLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7CisgICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgMCwgR0xfUkdCMTZVSSwgMSwgMSwgMCwgR0xfUkdCX0lOVEVHRVIsIEdMX1VOU0lHTkVE
X1NIT1JULCBudWxscHRyKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xf
VEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKKworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAw
LjVmKTsKKworICAgIEVYUEVDVF9QSVhFTF9BTFBIQV9FUSgwLCAwLCAyNTUpOworfQorCisvLyBX
aGVuIHNhbXBsaW5nIGEgdGV4dHVyZSB3aXRob3V0IGFuIGFscGhhIGNoYW5uZWwsICIxIiBpcyBy
ZXR1cm5lZCBhcyB0aGUgYWxwaGEgdmFsdWUuCisvLyBFUyAzLjAuNCB0YWJsZSAzLjI0CitURVNU
X1AoVGV4dHVyZTJESW50ZWdlckFscGhhMVRlc3RFUzMsIFRleHR1cmVSR0IxNklJbXBsaWNpdEFs
cGhhMSkKK3sKKyAgICBpZiAoSXNJbnRlbCgpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8
ICJUZXN0IGRpc2FibGVkIG9uIEludGVsLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7CisgICAgZ2xCaW5kVGV4
dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVY
VFVSRV8yRCwgMCwgR0xfUkdCMTZJLCAxLCAxLCAwLCBHTF9SR0JfSU5URUdFUiwgR0xfU0hPUlQs
IG51bGxwdHIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJF
X01BR19GSUxURVIsIEdMX05FQVJFU1QpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOworCisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwor
CisgICAgRVhQRUNUX1BJWEVMX0FMUEhBX0VRKDAsIDAsIDI1NSk7Cit9CisKKy8vIFdoZW4gc2Ft
cGxpbmcgYSB0ZXh0dXJlIHdpdGhvdXQgYW4gYWxwaGEgY2hhbm5lbCwgIjEiIGlzIHJldHVybmVk
IGFzIHRoZSBhbHBoYSB2YWx1ZS4KKy8vIEVTIDMuMC40IHRhYmxlIDMuMjQKK1RFU1RfUChUZXh0
dXJlMkRVbnNpZ25lZEludGVnZXJBbHBoYTFUZXN0RVMzLCBUZXh0dXJlUkdCMzJVSUltcGxpY2l0
QWxwaGExKQoreworICAgIGlmIChJc0ludGVsKCkpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQg
PDwgIlRlc3QgZGlzYWJsZWQgb24gSW50ZWwuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKKyAgICBnbEJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOworICAgIGdsVGV4SW1hZ2UyRChHTF9U
RVhUVVJFXzJELCAwLCBHTF9SR0IzMlVJLCAxLCAxLCAwLCBHTF9SR0JfSU5URUdFUiwgR0xfVU5T
SUdORURfSU5ULCBudWxscHRyKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24i
LCAwLjVmKTsKKworICAgIEVYUEVDVF9QSVhFTF9BTFBIQV9FUSgwLCAwLCAyNTUpOworfQorCisv
LyBXaGVuIHNhbXBsaW5nIGEgdGV4dHVyZSB3aXRob3V0IGFuIGFscGhhIGNoYW5uZWwsICIxIiBp
cyByZXR1cm5lZCBhcyB0aGUgYWxwaGEgdmFsdWUuCisvLyBFUyAzLjAuNCB0YWJsZSAzLjI0CitU
RVNUX1AoVGV4dHVyZTJESW50ZWdlckFscGhhMVRlc3RFUzMsIFRleHR1cmVSR0IzMklJbXBsaWNp
dEFscGhhMSkKK3sKKyAgICBpZiAoSXNJbnRlbCgpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0
IDw8ICJUZXN0IGRpc2FibGVkIG9uIEludGVsLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7CisgICAgZ2xCaW5k
VGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEKTsKKyAgICBnbFRleEltYWdlMkQoR0xf
VEVYVFVSRV8yRCwgMCwgR0xfUkdCMzJJLCAxLCAxLCAwLCBHTF9SR0JfSU5URUdFUiwgR0xfSU5U
LCBudWxscHRyKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBFWFBFQ1RfR0xf
Tk9fRVJST1IoKTsKKworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsK
KworICAgIEVYUEVDVF9QSVhFTF9BTFBIQV9FUSgwLCAwLCAyNTUpOworfQorCisvLyBXaGVuIHNh
bXBsaW5nIGEgdGV4dHVyZSB3aXRob3V0IGFuIGFscGhhIGNoYW5uZWwsICIxIiBpcyByZXR1cm5l
ZCBhcyB0aGUgYWxwaGEgdmFsdWUuCisvLyBFUyAzLjAuNCB0YWJsZSAzLjI0CitURVNUX1AoVGV4
dHVyZTJEVGVzdEVTMywgVGV4dHVyZVJHQlNOT1JNSW1wbGljaXRBbHBoYTEpCit7CisgICAgZ2xB
Y3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVf
MkQsIG1UZXh0dXJlMkQpOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9S
R0I4X1NOT1JNLCAxLCAxLCAwLCBHTF9SR0IsIEdMX0JZVEUsIG51bGxwdHIpOworICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOworCisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAu
NWYpOworCisgICAgRVhQRUNUX1BJWEVMX0FMUEhBX0VRKDAsIDAsIDI1NSk7Cit9CisKKy8vIFdo
ZW4gc2FtcGxpbmcgYSB0ZXh0dXJlIHdpdGhvdXQgYW4gYWxwaGEgY2hhbm5lbCwgIjEiIGlzIHJl
dHVybmVkIGFzIHRoZSBhbHBoYSB2YWx1ZS4KKy8vIEVTIDMuMC40IHRhYmxlIDMuMjQKK1RFU1Rf
UChUZXh0dXJlMkRUZXN0RVMzLCBUZXh0dXJlUkdCOUU1SW1wbGljaXRBbHBoYTEpCit7CisgICAg
Z2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfMkQsIG1UZXh0dXJlMkQpOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBH
TF9SR0I5X0U1LCAxLCAxLCAwLCBHTF9SR0IsIEdMX1VOU0lHTkVEX0lOVF81XzlfOV85X1JFViwK
KyAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisK
KyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisKKyAgICBFWFBFQ1Rf
UElYRUxfQUxQSEFfRVEoMCwgMCwgMjU1KTsKK30KKworLy8gV2hlbiBzYW1wbGluZyBhIHRleHR1
cmUgd2l0aG91dCBhbiBhbHBoYSBjaGFubmVsLCAiMSIgaXMgcmV0dXJuZWQgYXMgdGhlIGFscGhh
IHZhbHVlLgorLy8gRVMgMy4wLjQgdGFibGUgMy4yNAorVEVTVF9QKFRleHR1cmUyRFRlc3RFUzMs
IFRleHR1cmVDT01QUkVTU0VEUkdCOEVUQzJJbXBsaWNpdEFscGhhMSkKK3sKKyAgICBnbEFjdGl2
ZVRleHR1cmUoR0xfVEVYVFVSRTApOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwg
bVRleHR1cmUyRCk7CisgICAgZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAw
LCBHTF9DT01QUkVTU0VEX1JHQjhfRVRDMiwgMSwgMSwgMCwgOCwgbnVsbHB0cik7CisgICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwg
MC41Zik7CisKKyAgICBFWFBFQ1RfUElYRUxfQUxQSEFfRVEoMCwgMCwgMjU1KTsKK30KKworLy8g
V2hlbiBzYW1wbGluZyBhIHRleHR1cmUgd2l0aG91dCBhbiBhbHBoYSBjaGFubmVsLCAiMSIgaXMg
cmV0dXJuZWQgYXMgdGhlIGFscGhhIHZhbHVlLgorLy8gRVMgMy4wLjQgdGFibGUgMy4yNAorVEVT
VF9QKFRleHR1cmUyRFRlc3RFUzMsIFRleHR1cmVDT01QUkVTU0VEU1JHQjhFVEMySW1wbGljaXRB
bHBoYTEpCit7CisgICAgaWYgKElzSW50ZWwoKSAmJiBJc0xpbnV4KCkpCisgICAgeworICAgICAg
ICAvLyBUT0RPKGN3YWxsZXopOiBGaXggb24gTGludXggSW50ZWwgZHJpdmVycyAoaHR0cDovL2Fu
Z2xlYnVnLmNvbS8xMzQ2KQorICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3QgZGlzYWJsZWQgb24g
TGludXggSW50ZWwgT3BlbkdMLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKKyAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOworICAgIGdsQ29tcHJlc3NlZFRleEltYWdlMkQo
R0xfVEVYVFVSRV8yRCwgMCwgR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyLCAxLCAxLCAwLCA4LCBu
dWxscHRyKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGRyYXdRdWFkKG1Qcm9n
cmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgIEVYUEVDVF9QSVhFTF9BTFBIQV9FUSgwLCAw
LCAyNTUpOworfQorCisvLyBVc2UgYSBzYW1wbGVyIGluIGEgdW5pZm9ybSBzdHJ1Y3QuCitURVNU
X1AoU2FtcGxlckluU3RydWN0VGVzdCwgU2FtcGxlckluU3RydWN0KQoreworICAgIHJ1blNhbXBs
ZXJJblN0cnVjdFRlc3QoKTsKK30KKworLy8gVXNlIGEgc2FtcGxlciBpbiBhIHVuaWZvcm0gc3Ry
dWN0IHRoYXQncyBwYXNzZWQgYXMgYSBmdW5jdGlvbiBwYXJhbWV0ZXIuCitURVNUX1AoU2FtcGxl
ckluU3RydWN0QXNGdW5jdGlvblBhcmFtZXRlclRlc3QsIFNhbXBsZXJJblN0cnVjdEFzRnVuY3Rp
b25QYXJhbWV0ZXIpCit7CisgICAgLy8gVE9ETyh5bm92aWtvdik6IHJlLWVuYWJsZSBvbmNlIHJv
b3QgY2F1c2Ugb2YgaHR0cDovL2FuZ2xlYnVnLmNvbS8xNDI3IGlzIGZpeGVkCisgICAgaWYgKElz
QW5kcm9pZCgpICYmIElzQWRyZW5vKCkgJiYgSXNPcGVuR0xFUygpKQorICAgIHsKKyAgICAgICAg
c3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gQWRyZW5vIE9wZW5HTEVTIG9uIEFuZHJvaWQu
IiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoSXNXaW5k
b3dzKCkgJiYgSXNJbnRlbCgpICYmIElzT3BlbkdMKCkpCisgICAgeworICAgICAgICBzdGQ6OmNv
dXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBXaW5kb3dzIE9wZW5HTCBvbiBJbnRlbC4iIDw8IHN0ZDo6
ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHJ1blNhbXBsZXJJblN0cnVjdFRl
c3QoKTsKK30KKworLy8gVXNlIGEgc2FtcGxlciBpbiBhIHVuaWZvcm0gc3RydWN0IGFycmF5IHdp
dGggYSBzdHJ1Y3QgZnJvbSB0aGUgYXJyYXkgcGFzc2VkIGFzIGEgZnVuY3Rpb24KKy8vIHBhcmFt
ZXRlci4KK1RFU1RfUChTYW1wbGVySW5TdHJ1Y3RBcnJheUFzRnVuY3Rpb25QYXJhbWV0ZXJUZXN0
LCBTYW1wbGVySW5TdHJ1Y3RBcnJheUFzRnVuY3Rpb25QYXJhbWV0ZXIpCit7CisgICAgaWYgKElz
SW50ZWwoKSAmJiBHZXRQYXJhbSgpLmdldFJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xF
X1RZUEVfT1BFTkdMX0FOR0xFKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNr
aXBwZWQgb24gSW50ZWwgT3BlbkdMLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIC8vIFRPRE8oeW5vdmlrb3YpOiByZS1lbmFibGUgb25jZSByb290IGNhdXNlIG9m
IGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTQyNyBpcyBmaXhlZAorICAgIGlmIChJc0FuZHJvaWQoKSAm
JiBJc0FkcmVubygpICYmIElzT3BlbkdMRVMoKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8
PCAiVGVzdCBza2lwcGVkIG9uIEFkcmVubyBPcGVuR0xFUyBvbiBBbmRyb2lkLiIgPDwgc3RkOjpl
bmRsOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHJ1blNhbXBsZXJJblN0cnVjdFRlc3Qo
KTsKK30KKworLy8gVXNlIGEgc2FtcGxlciBpbiBhIHN0cnVjdCBpbnNpZGUgYSB1bmlmb3JtIHN0
cnVjdCB3aXRoIHRoZSBuZXN0ZWQgc3RydWN0IHBhc3NlZCBhcyBhIGZ1bmN0aW9uCisvLyBwYXJh
bWV0ZXIuCitURVNUX1AoU2FtcGxlckluTmVzdGVkU3RydWN0QXNGdW5jdGlvblBhcmFtZXRlclRl
c3QsIFNhbXBsZXJJbk5lc3RlZFN0cnVjdEFzRnVuY3Rpb25QYXJhbWV0ZXIpCit7CisgICAgaWYg
KElzSW50ZWwoKSAmJiBHZXRQYXJhbSgpLmdldFJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FO
R0xFX1RZUEVfT1BFTkdMX0FOR0xFKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0
IHNraXBwZWQgb24gSW50ZWwgT3BlbkdMLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIC8vIFRPRE8oeW5vdmlrb3YpOiByZS1lbmFibGUgb25jZSByb290IGNhdXNl
IG9mIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTQyNyBpcyBmaXhlZAorICAgIGlmIChJc0FuZHJvaWQo
KSAmJiBJc0FkcmVubygpICYmIElzT3BlbkdMRVMoKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291
dCA8PCAiVGVzdCBza2lwcGVkIG9uIEFkcmVubyBPcGVuR0xFUyBvbiBBbmRyb2lkLiIgPDwgc3Rk
OjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHJ1blNhbXBsZXJJblN0cnVjdFRl
c3QoKTsKK30KKworLy8gTWFrZSBzdXJlIHRoYXQgdGhlcmUgaXNuJ3QgYSBuYW1lIGNvbmZsaWN0
IGJldHdlZW4gc2FtcGxlciBleHRyYWN0ZWQgZnJvbSBhIHN0cnVjdCBhbmQgYQorLy8gc2ltaWxh
cmx5IG5hbWVkIHVuaWZvcm0uCitURVNUX1AoU2FtcGxlckluU3RydWN0QW5kT3RoZXJWYXJpYWJs
ZVRlc3QsIFNhbXBsZXJJblN0cnVjdEFuZE90aGVyVmFyaWFibGUpCit7CisgICAgcnVuU2FtcGxl
ckluU3RydWN0VGVzdCgpOworfQorCitjbGFzcyBUZXh0dXJlTGltaXRzVGVzdCA6IHB1YmxpYyBB
TkdMRVRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIHN0cnVjdCBSR0JBOAorICAgIHsKKyAgICAg
ICAgdWludDhfdCBSLCBHLCBCLCBBOworICAgIH07CisKKyAgICBUZXh0dXJlTGltaXRzVGVzdCgp
CisgICAgICAgIDogbVByb2dyYW0oMCksIG1NYXhWZXJ0ZXhUZXh0dXJlcygwKSwgbU1heEZyYWdt
ZW50VGV4dHVyZXMoMCksIG1NYXhDb21iaW5lZFRleHR1cmVzKDApCisgICAgeworICAgICAgICBz
ZXRXaW5kb3dXaWR0aCgxMjgpOworICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKKyAgICAg
ICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOwor
ICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRz
KDgpOworICAgIH0KKworICAgIH5UZXh0dXJlTGltaXRzVGVzdCgpCisgICAgeworICAgICAgICBp
ZiAobVByb2dyYW0gIT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xEZWxldGVQcm9ncmFt
KG1Qcm9ncmFtKTsKKyAgICAgICAgICAgIG1Qcm9ncmFtID0gMDsKKworICAgICAgICAgICAgaWYg
KCFtVGV4dHVyZXMuZW1wdHkoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbERl
bGV0ZVRleHR1cmVzKHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1UZXh0dXJlcy5zaXplKCkpLCAmbVRl
eHR1cmVzWzBdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQg
U2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOworCisg
ICAgICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTLCAm
bU1heFZlcnRleFRleHR1cmVzKTsKKyAgICAgICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVEVYVFVS
RV9JTUFHRV9VTklUUywgJm1NYXhGcmFnbWVudFRleHR1cmVzKTsKKyAgICAgICAgZ2xHZXRJbnRl
Z2VydihHTF9NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUywgJm1NYXhDb21iaW5lZFRl
eHR1cmVzKTsKKworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICB9CisKKyAgICB2
b2lkIGNvbXBpbGVQcm9ncmFtV2l0aFRleHR1cmVDb3VudHMoY29uc3Qgc3RkOjpzdHJpbmcgJnZl
cnRleFByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgdmVydGV4VGV4dHVyZUNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCB2ZXJ0ZXhBY3RpdmVUZXh0dXJlQ291bnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnUHJlZml4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBmcmFnbWVudFRl
eHR1cmVDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgZnJhZ21lbnRBY3RpdmVUZXh0dXJlQ291bnQpCisgICAgeworICAgICAgICBzdGQ6OnN0cmlu
Z3N0cmVhbSB2ZXJ0ZXhTaGFkZXJTdHI7CisgICAgICAgIHZlcnRleFNoYWRlclN0ciA8PCAiYXR0
cmlidXRlIHZlYzIgcG9zaXRpb247XG4iCisgICAgICAgICAgICAgICAgICAgICAgICA8PCAidmFy
eWluZyB2ZWM0IGNvbG9yO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgPDwgInZhcnlpbmcg
dmVjMiB0ZXhDb29yZDtcbiI7CisKKyAgICAgICAgZm9yIChHTGludCB0ZXh0dXJlSW5kZXggPSAw
OyB0ZXh0dXJlSW5kZXggPCB2ZXJ0ZXhUZXh0dXJlQ291bnQ7ICsrdGV4dHVyZUluZGV4KQorICAg
ICAgICB7CisgICAgICAgICAgICB2ZXJ0ZXhTaGFkZXJTdHIgPDwgInVuaWZvcm0gc2FtcGxlcjJE
ICIgPDwgdmVydGV4UHJlZml4IDw8IHRleHR1cmVJbmRleCA8PCAiO1xuIjsKKyAgICAgICAgfQor
CisgICAgICAgIHZlcnRleFNoYWRlclN0ciA8PCAidm9pZCBtYWluKCkge1xuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgPDwgIiAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAwLCAxKTtc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgIHRleENvb3JkID0gKHBvc2l0aW9uICog
MC41KSArIDAuNTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgIGNvbG9yID0gdmVj
NCgwKTtcbiI7CisKKyAgICAgICAgZm9yIChHTGludCB0ZXh0dXJlSW5kZXggPSAwOyB0ZXh0dXJl
SW5kZXggPCB2ZXJ0ZXhBY3RpdmVUZXh0dXJlQ291bnQ7ICsrdGV4dHVyZUluZGV4KQorICAgICAg
ICB7CisgICAgICAgICAgICB2ZXJ0ZXhTaGFkZXJTdHIgPDwgIiAgY29sb3IgKz0gdGV4dHVyZTJE
KCIgPDwgdmVydGV4UHJlZml4IDw8IHRleHR1cmVJbmRleAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDw8ICIsIHRleENvb3JkKTtcbiI7CisgICAgICAgIH0KKworICAgICAgICB2ZXJ0ZXhT
aGFkZXJTdHIgPDwgIn0iOworCisgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGZyYWdtZW50U2hh
ZGVyU3RyOworICAgICAgICBmcmFnbWVudFNoYWRlclN0ciA8PCAidmFyeWluZyBtZWRpdW1wIHZl
YzQgY29sb3I7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJ2YXJ5aW5nIG1lZGl1
bXAgdmVjMiB0ZXhDb29yZDtcbiI7CisKKyAgICAgICAgZm9yIChHTGludCB0ZXh0dXJlSW5kZXgg
PSAwOyB0ZXh0dXJlSW5kZXggPCBmcmFnbWVudFRleHR1cmVDb3VudDsgKyt0ZXh0dXJlSW5kZXgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGZyYWdtZW50U2hhZGVyU3RyIDw8ICJ1bmlmb3JtIHNh
bXBsZXIyRCAiIDw8IGZyYWdQcmVmaXggPDwgdGV4dHVyZUluZGV4IDw8ICI7XG4iOworICAgICAg
ICB9CisKKyAgICAgICAgZnJhZ21lbnRTaGFkZXJTdHIgPDwgInZvaWQgbWFpbigpIHtcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiAgZ2xfRnJhZ0NvbG9yID0gY29sb3I7XG4iOwor
CisgICAgICAgIGZvciAoR0xpbnQgdGV4dHVyZUluZGV4ID0gMDsgdGV4dHVyZUluZGV4IDwgZnJh
Z21lbnRBY3RpdmVUZXh0dXJlQ291bnQ7ICsrdGV4dHVyZUluZGV4KQorICAgICAgICB7CisgICAg
ICAgICAgICBmcmFnbWVudFNoYWRlclN0ciA8PCAiICBnbF9GcmFnQ29sb3IgKz0gdGV4dHVyZTJE
KCIgPDwgZnJhZ1ByZWZpeCA8PCB0ZXh0dXJlSW5kZXgKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDw8ICIsIHRleENvb3JkKTtcbiI7CisgICAgICAgIH0KKworICAgICAgICBmcmFnbWVu
dFNoYWRlclN0ciA8PCAifSI7CisKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZlcnRleFNo
YWRlclNvdXJjZSAgID0gdmVydGV4U2hhZGVyU3RyLnN0cigpOworICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyAmZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBmcmFnbWVudFNoYWRlclN0ci5zdHIoKTsK
KworICAgICAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwg
ZnJhZ21lbnRTaGFkZXJTb3VyY2UpOworICAgIH0KKworICAgIFJHQkE4IGdldFBpeGVsKEdMaW50
IHRleEluZGV4KQorICAgIHsKKyAgICAgICAgUkdCQTggcGl4ZWwgPSB7c3RhdGljX2Nhc3Q8dWlu
dDhfdD4odGV4SW5kZXggJiAweDd1KSwgc3RhdGljX2Nhc3Q8dWludDhfdD4odGV4SW5kZXggPj4g
MyksCisgICAgICAgICAgICAgICAgICAgICAgIDAsIDI1NXV9OworICAgICAgICByZXR1cm4gcGl4
ZWw7CisgICAgfQorCisgICAgdm9pZCBpbml0VGV4dHVyZXMoR0xpbnQgdGV4MkRDb3VudCwgR0xp
bnQgdGV4Q3ViZUNvdW50KQorICAgIHsKKyAgICAgICAgR0xpbnQgdG90YWxDb3VudCA9IHRleDJE
Q291bnQgKyB0ZXhDdWJlQ291bnQ7CisgICAgICAgIG1UZXh0dXJlcy5hc3NpZ24odG90YWxDb3Vu
dCwgMCk7CisgICAgICAgIGdsR2VuVGV4dHVyZXModG90YWxDb3VudCwgJm1UZXh0dXJlc1swXSk7
CisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgICAgIHN0ZDo6dmVjdG9yPFJH
QkE4PiB0ZXhEYXRhKDE2ICogMTYpOworCisgICAgICAgIEdMaW50IHRleEluZGV4ID0gMDsKKyAg
ICAgICAgZm9yICg7IHRleEluZGV4IDwgdGV4MkRDb3VudDsgKyt0ZXhJbmRleCkKKyAgICAgICAg
eworICAgICAgICAgICAgdGV4RGF0YS5hc3NpZ24odGV4RGF0YS5zaXplKCksIGdldFBpeGVsKHRl
eEluZGV4KSk7CisgICAgICAgICAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTAgKyB0ZXhJ
bmRleCk7CisgICAgICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJl
c1t0ZXhJbmRleF0pOworICAgICAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAs
IEdMX1JHQkEsIDE2LCAxNiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAmdGV4RGF0YVswXSk7CisgICAgICAgICAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAg
ICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19G
SUxURVIsIEdMX05FQVJFU1QpOworICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRV
UkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICAgICAgICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xB
TVBfVE9fRURHRSk7CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
KworICAgICAgICBmb3IgKDsgdGV4SW5kZXggPCB0ZXhDdWJlQ291bnQ7ICsrdGV4SW5kZXgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHRleERhdGEuYXNzaWduKHRleERhdGEuc2l6ZSgpLCBnZXRQ
aXhlbCh0ZXhJbmRleCkpOworICAgICAgICAgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUw
ICsgdGV4SW5kZXgpOworICAgICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFX0NVQkVf
TUFQLCBtVGV4dHVyZXNbdGV4SW5kZXhdKTsKKyAgICAgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9U
RVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsIDAsIEdMX1JHQkEsIDE2LCAxNiwgMCwgR0xfUkdC
QSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAmdGV4RGF0YVsw
XSk7CisgICAgICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElW
RV9ZLCAwLCBHTF9SR0JBLCAxNiwgMTYsIDAsIEdMX1JHQkEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfVU5TSUdORURfQllURSwgJnRleERhdGFbMF0pOworICAgICAgICAgICAgZ2xUZXhJ
bWFnZTJEKEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiwgMCwgR0xfUkdCQSwgMTYsIDE2
LCAwLCBHTF9SR0JBLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUs
ICZ0ZXhEYXRhWzBdKTsKKyAgICAgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFX0NVQkVf
TUFQX05FR0FUSVZFX1gsIDAsIEdMX1JHQkEsIDE2LCAxNiwgMCwgR0xfUkdCQSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAmdGV4RGF0YVswXSk7CisgICAgICAg
ICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZLCAwLCBHTF9S
R0JBLCAxNiwgMTYsIDAsIEdMX1JHQkEsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5T
SUdORURfQllURSwgJnRleERhdGFbMF0pOworICAgICAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RF
WFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWiwgMCwgR0xfUkdCQSwgMTYsIDE2LCAwLCBHTF9SR0JB
LAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICZ0ZXhEYXRhWzBd
KTsKKyAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0NVQkVfTUFQLCBHTF9U
RVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgICAgICAgICAgZ2xUZXhQYXJhbWV0
ZXJpKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVT
VCk7CisgICAgICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9DVUJFX01BUCwgR0xf
VEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICAgICAgZ2xUZXhQYXJh
bWV0ZXJpKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9U
T19FREdFKTsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAg
IH0KKworICAgIHZvaWQgdGVzdFdpdGhUZXh0dXJlcyhHTGludCB2ZXJ0ZXhUZXh0dXJlQ291bnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2ZXJ0ZXhUZXh0
dXJlUHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBmcmFnbWVudFRleHR1
cmVDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZy
YWdtZW50VGV4dHVyZVByZWZpeCkKKyAgICB7CisgICAgICAgIC8vIEdlbmVyYXRlIHRleHR1cmVz
CisgICAgICAgIGluaXRUZXh0dXJlcyh2ZXJ0ZXhUZXh0dXJlQ291bnQgKyBmcmFnbWVudFRleHR1
cmVDb3VudCwgMCk7CisKKyAgICAgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICAgICAg
UkdCQTggZXhwZWN0ZWRTdW0gPSB7MH07CisgICAgICAgIGZvciAoR0xpbnQgdGV4SW5kZXggPSAw
OyB0ZXhJbmRleCA8IHZlcnRleFRleHR1cmVDb3VudDsgKyt0ZXhJbmRleCkKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gdW5pZm9ybU5hbWVTdHI7CisgICAgICAgICAg
ICB1bmlmb3JtTmFtZVN0ciA8PCB2ZXJ0ZXhUZXh0dXJlUHJlZml4IDw8IHRleEluZGV4OworICAg
ICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnVuaWZvcm1OYW1lID0gdW5pZm9ybU5hbWVTdHIu
c3RyKCk7CisgICAgICAgICAgICBHTGludCBsb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9u
KG1Qcm9ncmFtLCB1bmlmb3JtTmFtZS5jX3N0cigpKTsKKyAgICAgICAgICAgIEFTU0VSVF9ORSgt
MSwgbG9jYXRpb24pOworCisgICAgICAgICAgICBnbFVuaWZvcm0xaShsb2NhdGlvbiwgdGV4SW5k
ZXgpOworICAgICAgICAgICAgUkdCQTggY29udHJpYnV0aW9uID0gZ2V0UGl4ZWwodGV4SW5kZXgp
OworICAgICAgICAgICAgZXhwZWN0ZWRTdW0uUiArPSBjb250cmlidXRpb24uUjsKKyAgICAgICAg
ICAgIGV4cGVjdGVkU3VtLkcgKz0gY29udHJpYnV0aW9uLkc7CisgICAgICAgIH0KKworICAgICAg
ICBmb3IgKEdMaW50IHRleEluZGV4ID0gMDsgdGV4SW5kZXggPCBmcmFnbWVudFRleHR1cmVDb3Vu
dDsgKyt0ZXhJbmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0g
dW5pZm9ybU5hbWVTdHI7CisgICAgICAgICAgICB1bmlmb3JtTmFtZVN0ciA8PCBmcmFnbWVudFRl
eHR1cmVQcmVmaXggPDwgdGV4SW5kZXg7CisgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAm
dW5pZm9ybU5hbWUgPSB1bmlmb3JtTmFtZVN0ci5zdHIoKTsKKyAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sIHVuaWZvcm1OYW1lLmNfc3Ry
KCkpOworICAgICAgICAgICAgQVNTRVJUX05FKC0xLCBsb2NhdGlvbik7CisKKyAgICAgICAgICAg
IGdsVW5pZm9ybTFpKGxvY2F0aW9uLCB0ZXhJbmRleCArIHZlcnRleFRleHR1cmVDb3VudCk7Cisg
ICAgICAgICAgICBSR0JBOCBjb250cmlidXRpb24gPSBnZXRQaXhlbCh0ZXhJbmRleCArIHZlcnRl
eFRleHR1cmVDb3VudCk7CisgICAgICAgICAgICBleHBlY3RlZFN1bS5SICs9IGNvbnRyaWJ1dGlv
bi5SOworICAgICAgICAgICAgZXhwZWN0ZWRTdW0uRyArPSBjb250cmlidXRpb24uRzsKKyAgICAg
ICAgfQorCisgICAgICAgIEFTU0VSVF9HRSgyNTZ1LCBleHBlY3RlZFN1bS5HKTsKKworICAgICAg
ICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgICAgIEFTU0VSVF9H
TF9OT19FUlJPUigpOworICAgICAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgZXhwZWN0ZWRTdW0u
UiwgZXhwZWN0ZWRTdW0uRywgMCwgMjU1KTsKKyAgICB9CisKKyAgICBHTHVpbnQgbVByb2dyYW07
CisgICAgc3RkOjp2ZWN0b3I8R0x1aW50PiBtVGV4dHVyZXM7CisgICAgR0xpbnQgbU1heFZlcnRl
eFRleHR1cmVzOworICAgIEdMaW50IG1NYXhGcmFnbWVudFRleHR1cmVzOworICAgIEdMaW50IG1N
YXhDb21iaW5lZFRleHR1cmVzOworfTsKKworLy8gVGVzdCByZW5kZXJpbmcgd2l0aCB0aGUgbWF4
aW11bSB2ZXJ0ZXggdGV4dHVyZSB1bml0cy4KK1RFU1RfUChUZXh0dXJlTGltaXRzVGVzdCwgTWF4
VmVydGV4VGV4dHVyZXMpCit7CisgICAgLy8gVE9ETyhqbWFkaWxsKTogRmlndXJlIG91dCB3aHkg
dGhpcyBmYWlscyBvbiBJbnRlbC4KKyAgICBpZiAoSXNJbnRlbCgpICYmIEdldFBhcmFtKCkuZ2V0
UmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUpCisgICAg
eworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbC4iIDw8IHN0ZDo6
ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbXBpbGVQcm9ncmFtV2l0aFRl
eHR1cmVDb3VudHMoInRleCIsIG1NYXhWZXJ0ZXhUZXh0dXJlcywgbU1heFZlcnRleFRleHR1cmVz
LCAidGV4IiwgMCwgMCk7CisgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7CisgICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7CisKKyAgICB0ZXN0V2l0aFRleHR1cmVzKG1NYXhWZXJ0ZXhUZXh0dXJl
cywgInRleCIsIDAsICJ0ZXgiKTsKK30KKworLy8gVGVzdCByZW5kZXJpbmcgd2l0aCB0aGUgbWF4
aW11bSBmcmFnbWVudCB0ZXh0dXJlIHVuaXRzLgorVEVTVF9QKFRleHR1cmVMaW1pdHNUZXN0LCBN
YXhGcmFnbWVudFRleHR1cmVzKQoreworICAgIC8vIFRPRE8oam1hZGlsbCk6IEZpZ3VyZSBvdXQg
d2h5IHRoaXMgZmFpbHMgb24gSW50ZWwuCisgICAgaWYgKElzSW50ZWwoKSAmJiBHZXRQYXJhbSgp
LmdldFJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFKQor
ICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwuIiA8PCBz
dGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb21waWxlUHJvZ3JhbVdp
dGhUZXh0dXJlQ291bnRzKCJ0ZXgiLCAwLCAwLCAidGV4IiwgbU1heEZyYWdtZW50VGV4dHVyZXMs
IG1NYXhGcmFnbWVudFRleHR1cmVzKTsKKyAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsKKyAg
ICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIHRlc3RXaXRoVGV4dHVyZXMobU1heEZyYWdt
ZW50VGV4dHVyZXMsICJ0ZXgiLCAwLCAidGV4Iik7Cit9CisKKy8vIFRlc3QgcmVuZGVyaW5nIHdp
dGggbWF4aW11bSBjb21iaW5lZCB0ZXh0dXJlIHVuaXRzLgorVEVTVF9QKFRleHR1cmVMaW1pdHNU
ZXN0LCBNYXhDb21iaW5lZFRleHR1cmVzKQoreworICAgIC8vIFRPRE8oam1hZGlsbCk6IEludmVz
dGlnYXRlIHdvcmthcm91bmQuCisgICAgaWYgKElzSW50ZWwoKSAmJiBHZXRQYXJhbSgpID09IEVT
Ml9PUEVOR0woKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9u
IEludGVsLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR0xp
bnQgdmVydGV4VGV4dHVyZXMgPSBtTWF4VmVydGV4VGV4dHVyZXM7CisKKyAgICBpZiAodmVydGV4
VGV4dHVyZXMgKyBtTWF4RnJhZ21lbnRUZXh0dXJlcyA+IG1NYXhDb21iaW5lZFRleHR1cmVzKQor
ICAgIHsKKyAgICAgICAgdmVydGV4VGV4dHVyZXMgPSBtTWF4Q29tYmluZWRUZXh0dXJlcyAtIG1N
YXhGcmFnbWVudFRleHR1cmVzOworICAgIH0KKworICAgIGNvbXBpbGVQcm9ncmFtV2l0aFRleHR1
cmVDb3VudHMoInZ0ZXgiLCB2ZXJ0ZXhUZXh0dXJlcywgdmVydGV4VGV4dHVyZXMsICJmdGV4IiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1NYXhGcmFnbWVudFRleHR1cmVz
LCBtTWF4RnJhZ21lbnRUZXh0dXJlcyk7CisgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7Cisg
ICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICB0ZXN0V2l0aFRleHR1cmVzKHZlcnRleFRl
eHR1cmVzLCAidnRleCIsIG1NYXhGcmFnbWVudFRleHR1cmVzLCAiZnRleCIpOworfQorCisvLyBO
ZWdhdGl2ZSB0ZXN0IGZvciBleGNlZWRpbmcgdGhlIG51bWJlciBvZiB2ZXJ0ZXggdGV4dHVyZXMK
K1RFU1RfUChUZXh0dXJlTGltaXRzVGVzdCwgRXhjZXNzaXZlVmVydGV4VGV4dHVyZXMpCit7Cisg
ICAgY29tcGlsZVByb2dyYW1XaXRoVGV4dHVyZUNvdW50cygidGV4IiwgbU1heFZlcnRleFRleHR1
cmVzICsgMSwgbU1heFZlcnRleFRleHR1cmVzICsgMSwgInRleCIsIDAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwKTsKKyAgICBBU1NFUlRfRVEoMHUsIG1Qcm9ncmFtKTsK
K30KKworLy8gTmVnYXRpdmUgdGVzdCBmb3IgZXhjZWVkaW5nIHRoZSBudW1iZXIgb2YgZnJhZ21l
bnQgdGV4dHVyZXMKK1RFU1RfUChUZXh0dXJlTGltaXRzVGVzdCwgRXhjZXNzaXZlRnJhZ21lbnRU
ZXh0dXJlcykKK3sKKyAgICBjb21waWxlUHJvZ3JhbVdpdGhUZXh0dXJlQ291bnRzKCJ0ZXgiLCAw
LCAwLCAidGV4IiwgbU1heEZyYWdtZW50VGV4dHVyZXMgKyAxLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbU1heEZyYWdtZW50VGV4dHVyZXMgKyAxKTsKKyAgICBBU1NFUlRf
RVEoMHUsIG1Qcm9ncmFtKTsKK30KKworLy8gVGVzdCBhY3RpdmUgdmVydGV4IHRleHR1cmVzIHVu
ZGVyIHRoZSBsaW1pdCwgYnV0IGV4Y2Vzc2l2ZSB0ZXh0dXJlcyBzcGVjaWZpZWQuCitURVNUX1Ao
VGV4dHVyZUxpbWl0c1Rlc3QsIE1heEFjdGl2ZVZlcnRleFRleHR1cmVzKQoreworICAgIC8vIFRP
RE8oam1hZGlsbCk6IEZpZ3VyZSBvdXQgd2h5IHRoaXMgZmFpbHMgb24gSW50ZWwuCisgICAgaWYg
KElzSW50ZWwoKSAmJiBHZXRQYXJhbSgpLmdldFJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FO
R0xFX1RZUEVfT1BFTkdMX0FOR0xFKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0
IHNraXBwZWQgb24gSW50ZWwuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBjb21waWxlUHJvZ3JhbVdpdGhUZXh0dXJlQ291bnRzKCJ0ZXgiLCBtTWF4VmVydGV4
VGV4dHVyZXMgKyA0LCBtTWF4VmVydGV4VGV4dHVyZXMsICJ0ZXgiLCAwLCAwKTsKKyAgICBBU1NF
UlRfTkUoMHUsIG1Qcm9ncmFtKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIHRl
c3RXaXRoVGV4dHVyZXMobU1heFZlcnRleFRleHR1cmVzLCAidGV4IiwgMCwgInRleCIpOworfQor
CisvLyBUZXN0IGFjdGl2ZSBmcmFnbWVudCB0ZXh0dXJlcyB1bmRlciB0aGUgbGltaXQsIGJ1dCBl
eGNlc3NpdmUgdGV4dHVyZXMgc3BlY2lmaWVkLgorVEVTVF9QKFRleHR1cmVMaW1pdHNUZXN0LCBN
YXhBY3RpdmVGcmFnbWVudFRleHR1cmVzKQoreworICAgIC8vIFRPRE8oam1hZGlsbCk6IEZpZ3Vy
ZSBvdXQgd2h5IHRoaXMgZmFpbHMgb24gSW50ZWwuCisgICAgaWYgKElzSW50ZWwoKSAmJiBHZXRQ
YXJhbSgpLmdldFJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FO
R0xFKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwu
IiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb21waWxlUHJv
Z3JhbVdpdGhUZXh0dXJlQ291bnRzKCJ0ZXgiLCAwLCAwLCAidGV4IiwgbU1heEZyYWdtZW50VGV4
dHVyZXMgKyA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbU1heEZyYWdt
ZW50VGV4dHVyZXMpOworICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOworICAgIEFTU0VSVF9H
TF9OT19FUlJPUigpOworCisgICAgdGVzdFdpdGhUZXh0dXJlcygwLCAidGV4IiwgbU1heEZyYWdt
ZW50VGV4dHVyZXMsICJ0ZXgiKTsKK30KKworLy8gTmVnYXRpdmUgdGVzdCBmb3IgcG9pbnRpbmcg
dHdvIHNhbXBsZXIgdW5pZm9ybXMgb2YgZGlmZmVyZW50IHR5cGVzIHRvIHRoZSBzYW1lIHRleHR1
cmUuCisvLyBHTEVTIDIuMC4yNSBzZWN0aW9uIDIuMTAuNCBwYWdlIDM5LgorVEVTVF9QKFRleHR1
cmVMaW1pdHNUZXN0LCBUZXh0dXJlVHlwZUNvbmZsaWN0KQoreworICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZ2ZXJ0ZXhTaGFkZXIgPQorICAgICAgICAiYXR0cmlidXRlIHZlYzIgcG9zaXRpb247XG4i
CisgICAgICAgICJ2YXJ5aW5nIGZsb2F0IGNvbG9yO1xuIgorICAgICAgICAidW5pZm9ybSBzYW1w
bGVyMkQgdGV4MkQ7XG4iCisgICAgICAgICJ1bmlmb3JtIHNhbXBsZXJDdWJlIHRleEN1YmU7XG4i
CisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgIGdsX1Bvc2l0aW9uID0gdmVj
NChwb3NpdGlvbiwgMCwgMSk7XG4iCisgICAgICAgICIgIHZlYzIgdGV4Q29vcmQgPSAocG9zaXRp
b24gKiAwLjUpICsgMC41O1xuIgorICAgICAgICAiICBjb2xvciA9IHRleHR1cmUyRCh0ZXgyRCwg
dGV4Q29vcmQpLng7XG4iCisgICAgICAgICIgIGNvbG9yICs9IHRleHR1cmVDdWJlKHRleEN1YmUs
IHZlYzModGV4Q29vcmQsIDApKS54O1xuIgorICAgICAgICAifSI7CisgICAgY29uc3Qgc3RkOjpz
dHJpbmcgJmZyYWdtZW50U2hhZGVyID0KKyAgICAgICAgInZhcnlpbmcgbWVkaXVtcCBmbG9hdCBj
b2xvcjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgZ2xfRnJhZ0Nv
bG9yID0gdmVjNChjb2xvciwgMCwgMCwgMSk7XG4iCisgICAgICAgICJ9IjsKKworICAgIG1Qcm9n
cmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlcik7CisgICAg
QVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7CisKKyAgICBpbml0VGV4dHVyZXMoMSwgMCk7CisKKyAg
ICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworICAgIEdMaW50IHRleDJETG9jYXRpb24gPSBnbEdl
dFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInRleDJEIik7CisgICAgQVNTRVJUX05FKC0xLCB0
ZXgyRExvY2F0aW9uKTsKKyAgICBHTGludCB0ZXhDdWJlTG9jYXRpb24gPSBnbEdldFVuaWZvcm1M
b2NhdGlvbihtUHJvZ3JhbSwgInRleEN1YmUiKTsKKyAgICBBU1NFUlRfTkUoLTEsIHRleEN1YmVM
b2NhdGlvbik7CisKKyAgICBnbFVuaWZvcm0xaSh0ZXgyRExvY2F0aW9uLCAwKTsKKyAgICBnbFVu
aWZvcm0xaSh0ZXhDdWJlTG9jYXRpb24sIDApOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwor
CisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworICAgIEVYUEVDVF9H
TF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKKy8vIE5lZ2F0aXZlIHRlc3QgZm9y
IHJlbmRlcmluZyB3aXRoIHRleHR1cmUgb3V0c2lkZSB0aGUgdmFsaWQgcmFuZ2UuCisvLyBUT0RP
KGptYWRpbGwpOiBQb3NzaWJseSBhZGp1c3QgdGhlIHRlc3QgYWNjb3JkaW5nIHRvIHRoZSBzcGVj
OgorLy8gR0xFUyAzLjAuNCBzZWN0aW9uIDIuMTIuNyBtZW50aW9ucyB0aGF0IHNwZWNpZnlpbmcg
YW4gb3V0LW9mLXJhbmdlIHNhbXBsZXIgdW5pZm9ybSB2YWx1ZQorLy8gZ2VuZXJhdGVzIGFuIElO
VkFMSURfVkFMVUUgZXJyb3IgLSBHTEVTIDIuMCBkb2Vzbid0IHlldCBoYXZlIHRoaXMgbWVudGlv
bi4KK1RFU1RfUChUZXh0dXJlTGltaXRzVGVzdCwgRHJhd1dpdGhUZXh0dXJlUGFzdE1heGltdW0p
Cit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZlcnRleFNoYWRlciA9CisgICAgICAgICJhdHRy
aWJ1dGUgdmVjMiBwb3NpdGlvbjtcbiIKKyAgICAgICAgInZhcnlpbmcgZmxvYXQgY29sb3I7XG4i
CisgICAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCB0ZXgyRDtcbiIKKyAgICAgICAgInZvaWQgbWFp
bigpIHtcbiIKKyAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAwLCAxKTtc
biIKKyAgICAgICAgIiAgdmVjMiB0ZXhDb29yZCA9IChwb3NpdGlvbiAqIDAuNSkgKyAwLjU7XG4i
CisgICAgICAgICIgIGNvbG9yID0gdGV4dHVyZTJEKHRleDJELCB0ZXhDb29yZCkueDtcbiIKKyAg
ICAgICAgIn0iOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnbWVudFNoYWRlciA9CisgICAg
ICAgICJ2YXJ5aW5nIG1lZGl1bXAgZmxvYXQgY29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4o
KSB7XG4iCisgICAgICAgICIgIGdsX0ZyYWdDb2xvciA9IHZlYzQoY29sb3IsIDAsIDAsIDEpO1xu
IgorICAgICAgICAifSI7CisKKyAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNo
YWRlciwgZnJhZ21lbnRTaGFkZXIpOworICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOworCisg
ICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICBHTGludCB0ZXgyRExvY2F0aW9uID0gZ2xH
ZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ0ZXgyRCIpOworICAgIEFTU0VSVF9ORSgtMSwg
dGV4MkRMb2NhdGlvbik7CisKKyAgICBnbFVuaWZvcm0xaSh0ZXgyRExvY2F0aW9uLCBtTWF4Q29t
YmluZWRUZXh0dXJlcyk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBkcmF3UXVh
ZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKK30KKworY2xhc3MgVGV4dHVyZTJETm9ybTE2VGVzdEVTMyA6IHB1
YmxpYyBUZXh0dXJlMkRUZXN0RVMzCit7CisgIHByb3RlY3RlZDoKKyAgICBUZXh0dXJlMkROb3Jt
MTZUZXN0RVMzKCkgOiBUZXh0dXJlMkRUZXN0RVMzKCksIG1UZXh0dXJlc3swLCAwLCAwfSwgbUZC
TygwKSwgbVJlbmRlcmJ1ZmZlcigwKSB7fQorCisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBUZXh0dXJlMkRUZXN0RVMzOjpTZXRVcCgpOworCisgICAgICAgIGdsQWN0
aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7CisgICAgICAgIGdsR2VuVGV4dHVyZXMoMywgbVRleHR1
cmVzKTsKKyAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1GQk8pOworICAgICAgICBnbEdl
blJlbmRlcmJ1ZmZlcnMoMSwgJm1SZW5kZXJidWZmZXIpOworCisgICAgICAgIGZvciAoc2l6ZV90
IHRleHR1cmVJbmRleCA9IDA7IHRleHR1cmVJbmRleCA8IDM7IHRleHR1cmVJbmRleCsrKQorICAg
ICAgICB7CisgICAgICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJl
c1t0ZXh0dXJlSW5kZXhdKTsKKyAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7CisgICAgICAgICAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5F
QVIpOworICAgICAgICB9CisKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCAw
KTsKKworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICB9CisKKyAgICB2b2lkIFRl
YXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMywgbVRl
eHR1cmVzKTsKKyAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1GQk8pOworICAgICAg
ICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1SZW5kZXJidWZmZXIpOworCisgICAgICAgIFRl
eHR1cmUyRFRlc3RFUzM6OlRlYXJEb3duKCk7CisgICAgfQorCisgICAgdm9pZCB0ZXN0Tm9ybTE2
VGV4dHVyZShHTGludCBpbnRlcm5hbGZvcm1hdCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUp
CisgICAgeworICAgICAgICBHTHVzaG9ydCBwaXhlbFZhbHVlICA9ICh0eXBlID09IEdMX1NIT1JU
KSA/IDB4N0ZGRiA6IDB4NkEzNTsKKyAgICAgICAgR0x1c2hvcnQgaW1hZ2VEYXRhW10gPSB7cGl4
ZWxWYWx1ZSwgcGl4ZWxWYWx1ZSwgcGl4ZWxWYWx1ZSwgcGl4ZWxWYWx1ZX07CisKKyAgICAgICAg
c2V0VXBQcm9ncmFtKCk7CisKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZG
RVIsIG1GQk8pOworICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVS
LCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworCisgICAgICAgIGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdKTsKKyAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RF
WFRVUkVfMkQsIDAsIEdMX1JHQkExNl9FWFQsIDEsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVE
X1NIT1JULCBudWxscHRyKTsKKworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQs
IG1UZXh0dXJlc1sxXSk7CisgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBp
bnRlcm5hbGZvcm1hdCwgMSwgMSwgMCwgZm9ybWF0LCB0eXBlLCBpbWFnZURhdGEpOworCisgICAg
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAi
cG9zaXRpb24iLCAwLjVmKTsKKworICAgICAgICBHTHVieXRlIGV4cGVjdGVkVmFsdWUgPSAodHlw
ZSA9PSBHTF9TSE9SVCkgPyAweEZGIDogc3RhdGljX2Nhc3Q8R0x1Ynl0ZT4ocGl4ZWxWYWx1ZSA+
PiA4KTsKKworICAgICAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoCisgICAgICAgICAgICAwLCAw
LCBTbGljZUZvcm1hdENvbG9yKAorICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgR0xDb2xv
cihleHBlY3RlZFZhbHVlLCBleHBlY3RlZFZhbHVlLCBleHBlY3RlZFZhbHVlLCBleHBlY3RlZFZh
bHVlKSkpOworCisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsK
KworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICB9CisKKyAgICB2b2lkIHRlc3RO
b3JtMTZSZW5kZXIoR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0
eXBlKQorICAgIHsKKyAgICAgICAgR0x1c2hvcnQgcGl4ZWxWYWx1ZSA9IDB4NkEzNTsKKyAgICAg
ICAgR0x1c2hvcnQgaW1hZ2VEYXRhW10gPSB7cGl4ZWxWYWx1ZSwgcGl4ZWxWYWx1ZSwgcGl4ZWxW
YWx1ZSwgcGl4ZWxWYWx1ZX07CisKKyAgICAgICAgc2V0VXBQcm9ncmFtKCk7CisKKyAgICAgICAg
Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMV0pOworICAgICAgICBnbFRl
eEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgaW50ZXJuYWxmb3JtYXQsIDEsIDEsIDAsIGZvcm1h
dCwgdHlwZSwgbnVsbHB0cik7CisKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVC
VUZGRVIsIG1GQk8pOworICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVG
RkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzFdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworCisgICAgICAgIGdsQmluZFRleHR1
cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzJdKTsKKyAgICAgICAgZ2xUZXhJbWFnZTJEKEdM
X1RFWFRVUkVfMkQsIDAsIGludGVybmFsZm9ybWF0LCAxLCAxLCAwLCBmb3JtYXQsIHR5cGUsIGlt
YWdlRGF0YSk7CisKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgZHJh
d1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworCisgICAgICAgIEdMdWJ5dGUgZXhw
ZWN0ZWRWYWx1ZSA9IHN0YXRpY19jYXN0PEdMdWJ5dGU+KHBpeGVsVmFsdWUgPj4gOCk7CisgICAg
ICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgKKyAgICAgICAgICAgIDAsIDAsIFNsaWNlRm9ybWF0
Q29sb3IoCisgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCBHTENvbG9yKGV4cGVjdGVkVmFs
dWUsIGV4cGVjdGVkVmFsdWUsIGV4cGVjdGVkVmFsdWUsIGV4cGVjdGVkVmFsdWUpKSk7CisKKyAg
ICAgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbVJlbmRlcmJ1ZmZlcik7
CisgICAgICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZGRVIsIGludGVybmFs
Zm9ybWF0LCAxLCAxKTsKKyAgICAgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFN
RUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1JFTkRFUkJVRkZFUiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtUmVuZGVyYnVmZmVyKTsKKyAgICAgICAgZ2xCaW5k
UmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgMCk7CisgICAgICAgIEVYUEVDVF9HTF9OT19F
UlJPUigpOworCisgICAgICAgIGdsQ2xlYXJDb2xvcigxLjBmLCAxLjBmLCAxLjBmLCAxLjBmKTsK
KyAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAgICAgICBnbENvcHlU
ZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDAsIDAsIDEsIDEpOworCisgICAg
ICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBTbGljZUZvcm1hdENvbG9yKGZvcm1hdCwg
R0xDb2xvcjo6d2hpdGUpKTsKKworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJV
RkZFUiwgMCk7CisKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgfQorCisgICAg
R0x1aW50IG1UZXh0dXJlc1szXTsKKyAgICBHTHVpbnQgbUZCTzsKKyAgICBHTHVpbnQgbVJlbmRl
cmJ1ZmZlcjsKK307CisKKy8vIFRlc3QgdGV4dHVyZSBmb3JtYXRzIGVuYWJsZWQgYnkgdGhlIEdM
X0VYVF90ZXh0dXJlX25vcm0xNiBleHRlbnNpb24uCitURVNUX1AoVGV4dHVyZTJETm9ybTE2VGVz
dEVTMywgVGV4dHVyZU5vcm0xNlRlc3QpCit7CisgICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJH
TF9FWFRfdGV4dHVyZV9ub3JtMTYiKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVz
dCBza2lwcGVkIGR1ZSB0byBtaXNzaW5nIEdMX0VYVF90ZXh0dXJlX25vcm0xNi4iIDw8IHN0ZDo6
ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHRlc3ROb3JtMTZUZXh0dXJlKEdM
X1IxNl9FWFQsIEdMX1JFRCwgR0xfVU5TSUdORURfU0hPUlQpOworICAgIHRlc3ROb3JtMTZUZXh0
dXJlKEdMX1JHMTZfRVhULCBHTF9SRywgR0xfVU5TSUdORURfU0hPUlQpOworICAgIHRlc3ROb3Jt
MTZUZXh0dXJlKEdMX1JHQjE2X0VYVCwgR0xfUkdCLCBHTF9VTlNJR05FRF9TSE9SVCk7CisgICAg
dGVzdE5vcm0xNlRleHR1cmUoR0xfUkdCQTE2X0VYVCwgR0xfUkdCQSwgR0xfVU5TSUdORURfU0hP
UlQpOworICAgIHRlc3ROb3JtMTZUZXh0dXJlKEdMX1IxNl9TTk9STV9FWFQsIEdMX1JFRCwgR0xf
U0hPUlQpOworICAgIHRlc3ROb3JtMTZUZXh0dXJlKEdMX1JHMTZfU05PUk1fRVhULCBHTF9SRywg
R0xfU0hPUlQpOworICAgIHRlc3ROb3JtMTZUZXh0dXJlKEdMX1JHQjE2X1NOT1JNX0VYVCwgR0xf
UkdCLCBHTF9TSE9SVCk7CisgICAgdGVzdE5vcm0xNlRleHR1cmUoR0xfUkdCQTE2X1NOT1JNX0VY
VCwgR0xfUkdCQSwgR0xfU0hPUlQpOworCisgICAgdGVzdE5vcm0xNlJlbmRlcihHTF9SMTZfRVhU
LCBHTF9SRUQsIEdMX1VOU0lHTkVEX1NIT1JUKTsKKyAgICB0ZXN0Tm9ybTE2UmVuZGVyKEdMX1JH
MTZfRVhULCBHTF9SRywgR0xfVU5TSUdORURfU0hPUlQpOworICAgIHRlc3ROb3JtMTZSZW5kZXIo
R0xfUkdCQTE2X0VYVCwgR0xfUkdCQSwgR0xfVU5TSUdORURfU0hPUlQpOworfQorCisvLyBUZXN0
IHRoYXQgVU5QQUNLX1NLSVBfSU1BR0VTIGRvZXNuJ3QgaGF2ZSBhbiBlZmZlY3Qgb24gMkQgdGV4
dHVyZSB1cGxvYWRzLgorLy8gR0xFUyAzLjAuNCBzZWN0aW9uIDMuOC4zLgorVEVTVF9QKFRleHR1
cmUyRFRlc3RFUzMsIFVucGFja1NraXBJbWFnZXMyRCkKK3sKKyAgICBpZiAoSXNJbnRlbCgpICYm
IElzRGVza3RvcE9wZW5HTCgpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNr
aXBwZWQgb24gSW50ZWwgT3BlbkdMLiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIC8vIFRPRE8oeW5vdmlrb3YpOiByZS1lbmFibGUgb25jZSByb290IGNhdXNlIG9m
IGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTQyOSBpcyBmaXhlZAorICAgIGlmIChJc0FuZHJvaWQoKSAm
JiBJc0FkcmVubygpICYmIElzT3BlbkdMRVMoKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8
PCAiVGVzdCBza2lwcGVkIG9uIEFkcmVubyBPcGVuR0xFUyBvbiBBbmRyb2lkLiIgPDwgc3RkOjpl
bmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFXzJELCBtVGV4dHVyZTJEKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7CisgICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBTS0lQX0lNQUdFUyBzaG91bGQgbm90IGhhdmUg
YW4gZWZmZWN0IG9uIHVwbG9hZGluZyAyRCB0ZXh0dXJlcworICAgIGdsUGl4ZWxTdG9yZWkoR0xf
VU5QQUNLX1NLSVBfSU1BR0VTLCAxMDAwKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKwor
ICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHBpeGVsc0dyZWVuKDEyOHUgKiAxMjh1LCBHTENvbG9y
OjpncmVlbik7CisKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQTgs
IDEyOCwgMTI4LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAg
ICBwaXhlbHNHcmVlbi5kYXRhKCkpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAg
Z2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDEyOCwgMTI4LCBHTF9SR0JB
LCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICAgICBwaXhlbHNHcmVlbi5kYXRh
KCkpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9n
cmFtKTsKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xD
b2xvcjo6Z3JlZW4pOworfQorCisvLyBUZXN0IHRoYXQgc2tpcCBkZWZpbmVkIGluIHVucGFjayBw
YXJhbWV0ZXJzIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGRldGVybWluaW5nIHdoZXRoZXIK
Ky8vIHVucGFja2luZyBzb3VyY2UgZXh0ZW5kcyBvdXRzaWRlIHVucGFjayBidWZmZXIgYm91bmRz
LgorVEVTVF9QKFRleHR1cmUyRFRlc3RFUzMsIFVucGFja1NraXBQaXhlbHNPdXRPZkJvdW5kcykK
K3sKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOworICAgIGds
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJ
TkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlO
X0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIEdM
QnVmZmVyIGJ1ZjsKKyAgICBnbEJpbmRCdWZmZXIoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgYnVm
LmdldCgpKTsKKyAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBwaXhlbHNHcmVlbigxMjh1ICogMTI4
dSwgR0xDb2xvcjo6Z3JlZW4pOworICAgIGdsQnVmZmVyRGF0YShHTF9QSVhFTF9VTlBBQ0tfQlVG
RkVSLCBwaXhlbHNHcmVlbi5zaXplKCkgKiA0dSwgcGl4ZWxzR3JlZW4uZGF0YSgpLAorICAgICAg
ICAgICAgICAgICBHTF9EWU5BTUlDX0NPUFkpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwor
CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkE4LCAxMjgsIDEyOCwg
MCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMCk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7CisKKyAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX1BJWEVMUywgMSk7CisgICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8y
RCwgMCwgMCwgMCwgMTI4LCAxMjgsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDApOworICAg
IEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7CisKKyAgICBnbFBpeGVsU3Rv
cmVpKEdMX1VOUEFDS19TS0lQX1BJWEVMUywgMCk7CisgICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBB
Q0tfU0tJUF9ST1dTLCAxKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIGdsVGV4
U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCAwLCAwLCAxMjgsIDEyOCwgR0xfUkdCQSwgR0xf
VU5TSUdORURfQllURSwgMCk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKK30KKworLy8gVGVzdCB0aGF0IHVucGFja2luZyByb3dzIHRoYXQgb3ZlcmxhcCBpbiBh
IHBpeGVsIHVucGFjayBidWZmZXIgd29ya3MgYXMgZXhwZWN0ZWQuCitURVNUX1AoVGV4dHVyZTJE
VGVzdEVTMywgVW5wYWNrT3ZlcmxhcHBpbmdSb3dzRnJvbVVucGFja0J1ZmZlcikKK3sKKyAgICBp
ZiAoSXNEM0QxMSgpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQg
b24gRDNELiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChJ
c09TWCgpICYmIElzQU1EKCkpCisgICAgeworICAgICAgICAvLyBJbmNvcnJlY3QgcmVuZGVyaW5n
IHJlc3VsdHMgc2VlbiBvbiBPU1ggQU1ELgorICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tp
cHBlZCBvbiBPU1ggQU1ELiIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgY29uc3QgR0x1aW50IHdpZHRoICAgICAgICAgICAgPSA4dTsKKyAgICBjb25zdCBHTHVp
bnQgaGVpZ2h0ICAgICAgICAgICA9IDh1OworICAgIGNvbnN0IEdMdWludCB1bnBhY2tSb3dMZW5n
dGggID0gNXU7CisgICAgY29uc3QgR0x1aW50IHVucGFja1NraXBQaXhlbHMgPSAxdTsKKworICAg
IHNldFdpbmRvd1dpZHRoKHdpZHRoKTsKKyAgICBzZXRXaW5kb3dIZWlnaHQoaGVpZ2h0KTsKKwor
ICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7CisgICAgZ2xUZXhQ
YXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFS
KTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklM
VEVSLCBHTF9MSU5FQVIpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgR0xCdWZm
ZXIgYnVmOworICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCBidWYuZ2V0
KCkpOworICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHBpeGVsc0dyZWVuKChoZWlnaHQgLSAxdSkg
KiB1bnBhY2tSb3dMZW5ndGggKyB3aWR0aCArIHVucGFja1NraXBQaXhlbHMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xDb2xvcjo6Z3JlZW4pOworCisgICAgZm9yIChH
THVpbnQgc2tpcHBlZFBpeGVsID0gMHU7IHNraXBwZWRQaXhlbCA8IHVucGFja1NraXBQaXhlbHM7
ICsrc2tpcHBlZFBpeGVsKQorICAgIHsKKyAgICAgICAgcGl4ZWxzR3JlZW5bc2tpcHBlZFBpeGVs
XSA9IEdMQ29sb3IoMjU1LCAwLCAwLCAyNTUpOworICAgIH0KKworICAgIGdsQnVmZmVyRGF0YShH
TF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCBwaXhlbHNHcmVlbi5zaXplKCkgKiA0dSwgcGl4ZWxzR3Jl
ZW4uZGF0YSgpLAorICAgICAgICAgICAgICAgICBHTF9EWU5BTUlDX0NPUFkpOworICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOworCisgICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfUk9XX0xFTkdU
SCwgdW5wYWNrUm93TGVuZ3RoKTsKKyAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX1BJ
WEVMUywgdW5wYWNrU2tpcFBpeGVscyk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAg
ICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQTgsIHdpZHRoLCBoZWlnaHQs
IDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDApOworICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOworCisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICBkcmF3UXVhZChtUHJvZ3Jh
bSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBH
THVpbnQgd2luZG93UGl4ZWxDb3VudCA9IGdldFdpbmRvd1dpZHRoKCkgKiBnZXRXaW5kb3dIZWln
aHQoKTsKKyAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBhY3R1YWwod2luZG93UGl4ZWxDb3VudCwg
R0xDb2xvcjo6YmxhY2spOworICAgIGdsUmVhZFBpeGVscygwLCAwLCBnZXRXaW5kb3dXaWR0aCgp
LCBnZXRXaW5kb3dIZWlnaHQoKSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAg
ICAgICAgICAgYWN0dWFsLmRhdGEoKSk7CisgICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gZXhwZWN0
ZWQod2luZG93UGl4ZWxDb3VudCwgR0xDb2xvcjo6Z3JlZW4pOworICAgIEVYUEVDVF9FUShleHBl
Y3RlZCwgYWN0dWFsKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitUIFVOb3JtKGRvdWJs
ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4odmFsdWUgKiBzdGF0aWNfY2Fz
dDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCgpKSk7Cit9CisKKy8vIFRlc3Qg
cmVuZGVyaW5nIGEgZGVwdGggdGV4dHVyZSB3aXRoIG1pcG1hcHMuCitURVNUX1AoVGV4dHVyZTJE
VGVzdEVTMywgRGVwdGhUZXh0dXJlc1dpdGhNaXBtYXBzKQoreworICAgIC8vVE9ETyhjd2FsbGV6
KSB0aGlzIGlzIGZhaWxpbmcgb24gSW50ZWwgV2luNyBPcGVuR0wKKyAgICBpZiAoSXNJbnRlbCgp
ICYmIElzV2luZG93cygpICYmIElzT3BlbkdMKCkpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQg
PDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCBpbnQgc2l6ZSA9IGdldFdpbmRvd1dpZHRoKCk7
CisKKyAgICBhdXRvIGRpbSAgID0gW3NpemVdKGludCBsZXZlbCkgeyByZXR1cm4gc2l6ZSA+PiBs
ZXZlbDsgfTsKKyAgICBpbnQgbGV2ZWxzID0gZ2w6OmxvZzIoc2l6ZSk7CisKKyAgICBnbEFjdGl2
ZVRleHR1cmUoR0xfVEVYVFVSRTApOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwg
bVRleHR1cmUyRCk7CisgICAgZ2xUZXhTdG9yYWdlMkQoR0xfVEVYVFVSRV8yRCwgbGV2ZWxzLCBH
TF9ERVBUSF9DT01QT05FTlQyNCwgc2l6ZSwgc2l6ZSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVF9NSVBNQVBfTkVB
UkVTVCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFH
X0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOwor
ICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX0FMSUdOTUVOVCwgMSk7CisgICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7CisKKyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworICAgIGdsVW5pZm9y
bTFpKG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRpb24sIDApOworCisgICAgc3RkOjp2ZWN0b3I8dW5z
aWduZWQgY2hhcj4gZXhwZWN0ZWQ7CisKKyAgICBmb3IgKGludCBsZXZlbCA9IDA7IGxldmVsIDwg
bGV2ZWxzOyArK2xldmVsKQorICAgIHsKKyAgICAgICAgZG91YmxlIHZhbHVlID0gKHN0YXRpY19j
YXN0PGRvdWJsZT4obGV2ZWwpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihsZXZlbHMgLSAxKSk7Cisg
ICAgICAgIGV4cGVjdGVkLnB1c2hfYmFjayhVTm9ybTx1bnNpZ25lZCBjaGFyPih2YWx1ZSkpOwor
CisgICAgICAgIGludCBsZXZlbERpbSA9IGRpbShsZXZlbCk7CisKKyAgICAgICAgQVNTRVJUX0dU
KGxldmVsRGltLCAwKTsKKworICAgICAgICBzdGQ6OnZlY3Rvcjx1bnNpZ25lZCBpbnQ+IGluaXRE
YXRhKGxldmVsRGltICogbGV2ZWxEaW0sIFVOb3JtPHVuc2lnbmVkIGludD4odmFsdWUpKTsKKyAg
ICAgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIGxldmVsLCAwLCAwLCBsZXZlbERp
bSwgbGV2ZWxEaW0sIEdMX0RFUFRIX0NPTVBPTkVOVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1VOU0lHTkVEX0lOVCwgaW5pdERhdGEuZGF0YSgpKTsKKyAgICB9CisgICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7CisKKyAgICBmb3IgKGludCBsZXZlbCA9IDA7IGxldmVsIDwgbGV2ZWxzOyAr
K2xldmVsKQorICAgIHsKKyAgICAgICAgZ2xWaWV3cG9ydCgwLCAwLCBkaW0obGV2ZWwpLCBkaW0o
bGV2ZWwpKTsKKyAgICAgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwor
ICAgICAgICBHTENvbG9yIGFjdHVhbCA9IFJlYWRDb2xvcigwLCAwKTsKKyAgICAgICAgRVhQRUNU
X05FQVIoZXhwZWN0ZWRbbGV2ZWxdLCBhY3R1YWwuUiwgMTB1KTsKKyAgICB9CisKKyAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKK30KKworLy8gVGVzdHMgdW5wYWNraW5nIGludG8gdGhlIHVuc2l6
ZWQgR0xfQUxQSEEgZm9ybWF0LgorVEVTVF9QKFRleHR1cmUyRFRlc3RFUzMsIFVuc2l6ZWRBbHBo
YVVucGFja0J1ZmZlcikKK3sKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBGaWd1cmUgb3V0IHdoeSB0
aGlzIGZhaWxzIG9uIE9TWC4KKyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoSXNPU1goKSk7CisKKyAg
ICAvLyBJbml0aWFsaXplIHRoZSB0ZXh1cmUuCisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
XzJELCBtVGV4dHVyZTJEKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xf
QUxQSEEsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAwLCBHTF9BTFBIQSwK
KyAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7CisgICAgZ2xUZXhQ
YXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVT
VCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJ
TFRFUiwgR0xfTkVBUkVTVCk7CisKKyAgICBzdGQ6OnZlY3RvcjxHTHVieXRlPiBidWZmZXJEYXRh
KGdldFdpbmRvd1dpZHRoKCkgKiBnZXRXaW5kb3dIZWlnaHQoKSwgMTI3KTsKKworICAgIC8vIFB1
bGwgaW4gdGhlIGNvbG9yIGRhdGEgZnJvbSB0aGUgdW5wYWNrIGJ1ZmZlci4KKyAgICBHTEJ1ZmZl
ciB1bnBhY2tCdWZmZXI7CisgICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfQUxJR05NRU5ULCAx
KTsKKyAgICBnbEJpbmRCdWZmZXIoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgdW5wYWNrQnVmZmVy
LmdldCgpKTsKKyAgICBnbEJ1ZmZlckRhdGEoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgZ2V0V2lu
ZG93V2lkdGgoKSAqIGdldFdpbmRvd0hlaWdodCgpLCBidWZmZXJEYXRhLmRhdGEoKSwKKyAgICAg
ICAgICAgICAgICAgR0xfU1RBVElDX0RSQVcpOworCisgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RF
WFRVUkVfMkQsIDAsIDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCBH
TF9BTFBIQSwKKyAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7
CisKKyAgICAvLyBDbGVhciB0byBhIHdlaXJkIGNvbG9yIHRvIG1ha2Ugc3VyZSB3ZSdyZSBkcmF3
aW5nIHNvbWV0aGluZy4KKyAgICBnbENsZWFyQ29sb3IoMC41ZiwgMC44ZiwgMS4wZiwgMC4yZik7
CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAgIC8vIERyYXcgd2l0aCB0
aGUgYWxwaGEgdGV4dHVyZSBhbmQgdmVyaWZ5LgorICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9z
aXRpb24iLCAwLjVmKTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9Q
SVhFTF9ORUFSKDAsIDAsIDAsIDAsIDAsIDEyNywgMSk7Cit9CisKKy8vIEVuc3VyZSBzdGFsZSB1
bnBhY2sgZGF0YSBkb2Vzbid0IHByb3BhZ2F0ZSBpbiBEM0QxMS4KK1RFU1RfUChUZXh0dXJlMkRU
ZXN0RVMzLCBTdGFsZVVucGFja0RhdGEpCit7CisgICAgLy8gSW5pdCB1bnBhY2sgYnVmZmVyLgor
ICAgIEdMc2l6ZWkgcGl4ZWxDb3VudCA9IGdldFdpbmRvd1dpZHRoKCkgKiBnZXRXaW5kb3dIZWln
aHQoKSAvIDI7CisgICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gcGl4ZWxzKHBpeGVsQ291bnQsIEdM
Q29sb3I6OnJlZCk7CisKKyAgICBHTEJ1ZmZlciB1bnBhY2tCdWZmZXI7CisgICAgZ2xQaXhlbFN0
b3JlaShHTF9VTlBBQ0tfQUxJR05NRU5ULCAxKTsKKyAgICBnbEJpbmRCdWZmZXIoR0xfUElYRUxf
VU5QQUNLX0JVRkZFUiwgdW5wYWNrQnVmZmVyLmdldCgpKTsKKyAgICBHTHNpemVpIGJ1ZmZlclNp
emUgPSBwaXhlbENvdW50ICogc2l6ZW9mKEdMQ29sb3IpOworICAgIGdsQnVmZmVyRGF0YShHTF9Q
SVhFTF9VTlBBQ0tfQlVGRkVSLCBidWZmZXJTaXplLCBwaXhlbHMuZGF0YSgpLCBHTF9TVEFUSUNf
RFJBVyk7CisKKyAgICAvLyBDcmVhdGUgZnJvbSB1bnBhY2sgYnVmZmVyLgorICAgIGdsQmluZFRl
eHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RF
WFRVUkVfMkQsIDAsIEdMX1JHQkE4LCBnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVp
Z2h0KCkgLyAyLCAwLAorICAgICAgICAgICAgICAgICBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRF
LCBudWxscHRyKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKKworICAgIGRyYXdRdWFk
KG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigp
OworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpyZWQpOworCisgICAg
Ly8gRmlsbCB1bnBhY2sgd2l0aCBncmVlbiwgcmVjcmVhdGluZyBidWZmZXIuCisgICAgcGl4ZWxz
LmFzc2lnbihnZXRXaW5kb3dXaWR0aCgpICogZ2V0V2luZG93SGVpZ2h0KCksIEdMQ29sb3I6Omdy
ZWVuKTsKKyAgICBHTHNpemVpIHNpemUyID0gZ2V0V2luZG93V2lkdGgoKSAqIGdldFdpbmRvd0hl
aWdodCgpICogc2l6ZW9mKEdMQ29sb3IpOworICAgIGdsQnVmZmVyRGF0YShHTF9QSVhFTF9VTlBB
Q0tfQlVGRkVSLCBzaXplMiwgcGl4ZWxzLmRhdGEoKSwgR0xfU1RBVElDX0RSQVcpOworCisgICAg
Ly8gUmVpbml0IHRleHR1cmUgd2l0aCBncmVlbi4KKyAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVY
VFVSRV8yRCwgMCwgMCwgMCwgZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgp
IC8gMiwgR0xfUkdCQSwKKyAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgbnVs
bHB0cik7CisKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisKKyAg
ICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwg
R0xDb2xvcjo6Z3JlZW4pOworfQorCisvLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmln
dXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikg
dGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgorLy8gVE9ETyhvZXR1YWhvKTogRW5h
YmxlIGFsbCBiZWxvdyB0ZXN0cyBvbiBPcGVuR0wuIFJlcXVpcmVzIGEgZml4IGZvciBBTkdMRSBi
dWcgMTI3OC4KK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoVGV4dHVyZTJEVGVzdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0Qz
RDExKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDlfMygpLAorICAgICAg
ICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVT
Ml9PUEVOR0xFUygpKTsKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoVGV4dHVyZUN1YmVUZXN0LAor
ICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAorICAgICAgICAgICAgICAgICAgICAg
ICBFUzJfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8zKCks
CisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgRVMyX09QRU5HTEVTKCkpOworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChUZXh0dXJlMkRU
ZXN0V2l0aERyYXdTY2FsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCisgICAgICAgICAgICAgICAgICAgICAg
IEVTMl9EM0QxMV9GTDlfMygpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCks
CisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpKTsKK0FOR0xFX0lOU1RBTlRJ
QVRFX1RFU1QoU2FtcGxlcjJEQXNGdW5jdGlvblBhcmFtZXRlclRlc3QsCisgICAgICAgICAgICAg
ICAgICAgICAgIEVTMl9EM0Q5KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgp
LAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzMoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgRVMyX09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BF
TkdMRVMoKSk7CitBTkdMRV9JTlNUQU5USUFURV9URVNUKFNhbXBsZXJBcnJheVRlc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVT
Ml9EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzMoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAg
ICBFUzJfT1BFTkdMRVMoKSk7CitBTkdMRV9JTlNUQU5USUFURV9URVNUKFNhbXBsZXJBcnJheUFz
RnVuY3Rpb25QYXJhbWV0ZXJUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgp
LAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgRVMyX0QzRDExX0ZMOV8zKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVO
R0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCkpOworQU5HTEVfSU5T
VEFOVElBVEVfVEVTVChUZXh0dXJlMkRUZXN0RVMzLCBFUzNfRDNEMTEoKSwgRVMzX09QRU5HTCgp
LCBFUzNfT1BFTkdMRVMoKSk7CitBTkdMRV9JTlNUQU5USUFURV9URVNUKFRleHR1cmUzRFRlc3RF
UzMsIEVTM19EM0QxMSgpLCBFUzNfT1BFTkdMKCksIEVTM19PUEVOR0xFUygpKTsKK0FOR0xFX0lO
U1RBTlRJQVRFX1RFU1QoVGV4dHVyZTJESW50ZWdlckFscGhhMVRlc3RFUzMsIEVTM19EM0QxMSgp
LCBFUzNfT1BFTkdMKCksIEVTM19PUEVOR0xFUygpKTsKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1Qo
VGV4dHVyZTJEVW5zaWduZWRJbnRlZ2VyQWxwaGExVGVzdEVTMywKKyAgICAgICAgICAgICAgICAg
ICAgICAgRVMzX0QzRDExKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOworQU5HTEVfSU5TVEFOVElB
VEVfVEVTVChTaGFkb3dTYW1wbGVyUGx1c1NhbXBsZXIzRFRlc3RFUzMsCisgICAgICAgICAgICAg
ICAgICAgICAgIEVTM19EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdM
KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygpKTsKK0FOR0xFX0lOU1RB
TlRJQVRFX1RFU1QoU2FtcGxlclR5cGVNaXhUZXN0RVMzLCBFUzNfRDNEMTEoKSwgRVMzX09QRU5H
TCgpLCBFUzNfT1BFTkdMRVMoKSk7CitBTkdMRV9JTlNUQU5USUFURV9URVNUKFRleHR1cmUyREFy
cmF5VGVzdEVTMywgRVMzX0QzRDExKCksIEVTM19PUEVOR0woKSwgRVMzX09QRU5HTEVTKCkpOwor
QU5HTEVfSU5TVEFOVElBVEVfVEVTVChUZXh0dXJlU2l6ZVRleHR1cmVBcnJheVRlc3QsIEVTM19E
M0QxMSgpLCBFUzNfT1BFTkdMKCkpOworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChTYW1wbGVySW5T
dHJ1Y3RUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8zKCksCisgICAgICAgICAgICAgICAgICAgICAg
IEVTMl9EM0Q5KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCkpOworQU5HTEVfSU5TVEFOVElBVEVfVEVT
VChTYW1wbGVySW5TdHJ1Y3RBc0Z1bmN0aW9uUGFyYW1ldGVyVGVzdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgRVMyX0QzRDExKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9G
TDlfMygpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAorICAgICAgICAgICAg
ICAgICAgICAgICBFUzJfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVO
R0xFUygpKTsKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoU2FtcGxlckluU3RydWN0QXJyYXlBc0Z1
bmN0aW9uUGFyYW1ldGVyVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCks
CisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDlfMygpLAorICAgICAgICAgICAg
ICAgICAgICAgICBFUzJfRDNEOSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdM
KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpKTsKK0FOR0xFX0lOU1RB
TlRJQVRFX1RFU1QoU2FtcGxlckluTmVzdGVkU3RydWN0QXNGdW5jdGlvblBhcmFtZXRlclRlc3Qs
CisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAorICAgICAgICAgICAgICAgICAg
ICAgICBFUzJfRDNEMTFfRkw5XzMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDko
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAorICAgICAgICAgICAgICAg
ICAgICAgICBFUzJfT1BFTkdMRVMoKSk7CitBTkdMRV9JTlNUQU5USUFURV9URVNUKFNhbXBsZXJJ
blN0cnVjdEFuZE90aGVyVmFyaWFibGVUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICBFUzJf
RDNEMTEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8zKCksCisgICAg
ICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVT
Ml9PUEVOR0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCkpOworQU5H
TEVfSU5TVEFOVElBVEVfVEVTVChUZXh0dXJlTGltaXRzVGVzdCwgRVMyX0QzRDExKCksIEVTMl9P
UEVOR0woKSwgRVMyX09QRU5HTEVTKCkpOworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChUZXh0dXJl
MkROb3JtMTZUZXN0RVMzLCBFUzNfRDNEMTEoKSwgRVMzX09QRU5HTCgpLCBFUzNfT1BFTkdMRVMo
KSk7CisKK30gIC8vIGFub255bW91cyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9UaW1lclF1ZXJpZXNUZXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvVGltZXJRdWVy
aWVzVGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL2dsX3Rlc3RzL1RpbWVyUXVlcmllc1Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNTkwIEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gVGltZXJRdWVyaWVzVGVzdC5jcHAKKy8vICAgVmFy
aW91cyB0ZXN0cyBmb3IgRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5IGZ1bmN0aW9uYWxpdHkgYW5k
IHZhbGlkYXRpb24KKy8vCisKKyNpbmNsdWRlICJzeXN0ZW1fdXRpbHMuaCIKKyNpbmNsdWRlICJ0
ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorI2luY2x1ZGUgInJhbmRvbV91dGlscy5oIgorCit1c2lu
ZyBuYW1lc3BhY2UgYW5nbGU7CisKK2NsYXNzIFRpbWVyUXVlcmllc1Rlc3QgOiBwdWJsaWMgQU5H
TEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBUaW1lclF1ZXJpZXNUZXN0KCkgOiBtUHJvZ3Jh
bSgwKSwgbVByb2dyYW1Db3N0bHkoMCkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRoKDEy
OCk7CisgICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOworICAgICAgICBzZXRDb25maWdSZWRC
aXRzKDgpOworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZp
Z0JsdWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgICAgIHNl
dENvbmZpZ0RlcHRoQml0cygyNCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIFNldFVwKCkK
KyAgICB7CisgICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKKworICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyBwYXNzdGhyb3VnaFZTID0KKyAgICAgICAgICAgICJhdHRyaWJ1dGUgaGlnaHAgdmVj
NCBwb3NpdGlvbjsgdm9pZCBtYWluKHZvaWQpXG4iCisgICAgICAgICAgICAie1xuIgorICAgICAg
ICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uO1xuIgorICAgICAgICAgICAgIn1cbiI7
CisKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgcGFzc3Rocm91Z2hQUyA9CisgICAgICAgICAg
ICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0OyB2b2lkIG1haW4odm9pZClcbiIKKyAgICAgICAgICAg
ICJ7XG4iCisgICAgICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAxLjAsIDEu
MCwgMS4wKTtcbiIKKyAgICAgICAgICAgICJ9XG4iOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nIGNvc3RseVZTID0KKyAgICAgICAgICAgICJhdHRyaWJ1dGUgaGlnaHAgdmVjNCBwb3NpdGlv
bjsgdmFyeWluZyBoaWdocCB2ZWM0IHRlc3RQb3M7IHZvaWQgbWFpbih2b2lkKVxuIgorICAgICAg
ICAgICAgIntcbiIKKyAgICAgICAgICAgICIgICAgdGVzdFBvcyAgICAgPSBwb3NpdGlvbjtcbiIK
KyAgICAgICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjtcbiIKKyAgICAgICAgICAg
ICJ9XG4iOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGNvc3RseVBTID0KKyAgICAgICAg
ICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7IHZhcnlpbmcgaGlnaHAgdmVjNCB0ZXN0UG9zOyB2
b2lkIG1haW4odm9pZClcbiIKKyAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAiICAgIHZl
YzQgdGVzdCA9IHRlc3RQb3M7XG4iCisgICAgICAgICAgICAiICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgNTAwOyBpKyspXG4iCisgICAgICAgICAgICAiICAgIHtcbiIKKyAgICAgICAgICAgICIgICAg
ICAgIHRlc3QgPSBzcXJ0KHRlc3QpO1xuIgorICAgICAgICAgICAgIiAgICB9XG4iCisgICAgICAg
ICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHRlc3Q7XG4iCisgICAgICAgICAgICAifVxuIjsKKwor
ICAgICAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHBhc3N0aHJvdWdoVlMsIHBhc3N0aHJv
dWdoUFMpOworICAgICAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKSA8PCAic2hhZGVyIGNvbXBp
bGF0aW9uIGZhaWxlZC4iOworCisgICAgICAgIG1Qcm9ncmFtQ29zdGx5ID0gQ29tcGlsZVByb2dy
YW0oY29zdGx5VlMsIGNvc3RseVBTKTsKKyAgICAgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbUNv
c3RseSkgPDwgInNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQuIjsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgVGVhckRvd24oKQorICAgIHsKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9n
cmFtKTsKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtQ29zdGx5KTsKKyAgICAgICAg
QU5HTEVUZXN0OjpUZWFyRG93bigpOworICAgIH0KKworICAgIEdMdWludCBtUHJvZ3JhbTsKKyAg
ICBHTHVpbnQgbVByb2dyYW1Db3N0bHk7Cit9OworCisvLyBUZXN0IHRoYXQgYWxsIHByb2MgYWRk
cmVzc2VzIGFyZSBsb2FkYWJsZQorVEVTVF9QKFRpbWVyUXVlcmllc1Rlc3QsIFByb2NBZGRyZXNz
ZXMpCit7CisgICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfZGlzam9pbnRfdGltZXJf
cXVlcnkiKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1
c2UgR0xfRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5IGlzIG5vdCBhdmFpbGFibGUuIgorICAgICAg
ICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
QVNTRVJUX05FKG51bGxwdHIsIGVnbEdldFByb2NBZGRyZXNzKCJnbEdlblF1ZXJpZXNFWFQiKSk7
CisgICAgQVNTRVJUX05FKG51bGxwdHIsIGVnbEdldFByb2NBZGRyZXNzKCJnbERlbGV0ZVF1ZXJp
ZXNFWFQiKSk7CisgICAgQVNTRVJUX05FKG51bGxwdHIsIGVnbEdldFByb2NBZGRyZXNzKCJnbElz
UXVlcnlFWFQiKSk7CisgICAgQVNTRVJUX05FKG51bGxwdHIsIGVnbEdldFByb2NBZGRyZXNzKCJn
bEJlZ2luUXVlcnlFWFQiKSk7CisgICAgQVNTRVJUX05FKG51bGxwdHIsIGVnbEdldFByb2NBZGRy
ZXNzKCJnbEVuZFF1ZXJ5RVhUIikpOworICAgIEFTU0VSVF9ORShudWxscHRyLCBlZ2xHZXRQcm9j
QWRkcmVzcygiZ2xRdWVyeUNvdW50ZXJFWFQiKSk7CisgICAgQVNTRVJUX05FKG51bGxwdHIsIGVn
bEdldFByb2NBZGRyZXNzKCJnbEdldFF1ZXJ5aXZFWFQiKSk7CisgICAgQVNTRVJUX05FKG51bGxw
dHIsIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldFF1ZXJ5T2JqZWN0aXZFWFQiKSk7CisgICAgQVNT
RVJUX05FKG51bGxwdHIsIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldFF1ZXJ5T2JqZWN0dWl2RVhU
IikpOworICAgIEFTU0VSVF9ORShudWxscHRyLCBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRRdWVy
eU9iamVjdGk2NHZFWFQiKSk7CisgICAgQVNTRVJUX05FKG51bGxwdHIsIGVnbEdldFByb2NBZGRy
ZXNzKCJnbEdldFF1ZXJ5T2JqZWN0dWk2NHZFWFQiKSk7Cit9CisKKy8vIFRlc3RzIHRoZSB0aW1l
IGVsYXBzZWQgcXVlcnkKK1RFU1RfUChUaW1lclF1ZXJpZXNUZXN0LCBUaW1lRWxhcHNlZCkKK3sK
KyAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kaXNqb2ludF90aW1lcl9xdWVyeSIp
KQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBHTF9F
WFRfZGlzam9pbnRfdGltZXJfcXVlcnkgaXMgbm90IGF2YWlsYWJsZS4iCisgICAgICAgICAgICAg
ICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHTGludCBx
dWVyeVRpbWVFbGFwc2VkQml0cyA9IDA7CisgICAgZ2xHZXRRdWVyeWl2RVhUKEdMX1RJTUVfRUxB
UFNFRF9FWFQsIEdMX1FVRVJZX0NPVU5URVJfQklUU19FWFQsICZxdWVyeVRpbWVFbGFwc2VkQml0
cyk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBzdGQ6OmNvdXQgPDwgIlRpbWUg
ZWxhcHNlZCBjb3VudGVyIGJpdHM6ICIgPDwgcXVlcnlUaW1lRWxhcHNlZEJpdHMgPDwgc3RkOjpl
bmRsOworCisgICAgLy8gU2tpcCB0ZXN0IGlmIHRoZSBudW1iZXIgb2YgYml0cyBpcyAwCisgICAg
aWYgKHF1ZXJ5VGltZUVsYXBzZWRCaXRzID09IDApCisgICAgeworICAgICAgICBzdGQ6OmNvdXQg
PDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIG9mIDAgY291bnRlciBiaXRzIiA8PCBzdGQ6OmVuZGw7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBnbERlcHRoTWFzayhHTF9UUlVFKTsKKyAg
ICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xf
U1RFTkNJTF9CVUZGRVJfQklUKTsKKworICAgIEdMdWludCBxdWVyeTEgPSAwOworICAgIEdMdWlu
dCBxdWVyeTIgPSAwOworICAgIGdsR2VuUXVlcmllc0VYVCgxLCAmcXVlcnkxKTsKKyAgICBnbEdl
blF1ZXJpZXNFWFQoMSwgJnF1ZXJ5Mik7CisKKyAgICAvLyBUZXN0IHRpbWUgZWxhcHNlZCBmb3Ig
YSBzaW5nbGUgcXVhZAorICAgIGdsQmVnaW5RdWVyeUVYVChHTF9USU1FX0VMQVBTRURfRVhULCBx
dWVyeTEpOworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjhmKTsKKyAgICBn
bEVuZFF1ZXJ5RVhUKEdMX1RJTUVfRUxBUFNFRF9FWFQpOworICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOworCisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVS
X0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7CisKKyAgICAvLyBUZXN0IHRpbWUgZWxhcHNl
ZCBmb3IgY29zdGx5IHF1YWQKKyAgICBnbEJlZ2luUXVlcnlFWFQoR0xfVElNRV9FTEFQU0VEX0VY
VCwgcXVlcnkyKTsKKyAgICBkcmF3UXVhZChtUHJvZ3JhbUNvc3RseSwgInBvc2l0aW9uIiwgMC44
Zik7CisgICAgZ2xFbmRRdWVyeUVYVChHTF9USU1FX0VMQVBTRURfRVhUKTsKKyAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKKworICAgIHN3YXBCdWZmZXJzKCk7CisKKyAgICBpbnQgdGltZW91dCAg
PSAyMDAwMDA7CisgICAgR0x1aW50IHJlYWR5ID0gR0xfRkFMU0U7CisgICAgd2hpbGUgKHJlYWR5
ID09IEdMX0ZBTFNFICYmIHRpbWVvdXQgPiAwKQorICAgIHsKKyAgICAgICAgYW5nbGU6OlNsZWVw
KDApOworICAgICAgICBnbEdldFF1ZXJ5T2JqZWN0dWl2RVhUKHF1ZXJ5MSwgR0xfUVVFUllfUkVT
VUxUX0FWQUlMQUJMRV9FWFQsICZyZWFkeSk7CisgICAgICAgIHRpbWVvdXQtLTsKKyAgICB9Cisg
ICAgcmVhZHkgPSBHTF9GQUxTRTsKKyAgICB3aGlsZSAocmVhZHkgPT0gR0xfRkFMU0UgJiYgdGlt
ZW91dCA+IDApCisgICAgeworICAgICAgICBhbmdsZTo6U2xlZXAoMCk7CisgICAgICAgIGdsR2V0
UXVlcnlPYmplY3R1aXZFWFQocXVlcnkyLCBHTF9RVUVSWV9SRVNVTFRfQVZBSUxBQkxFX0VYVCwg
JnJlYWR5KTsKKyAgICAgICAgdGltZW91dC0tOworICAgIH0KKyAgICBBU1NFUlRfTFQoMCwgdGlt
ZW91dCkgPDwgIlF1ZXJ5IHJlc3VsdCBhdmFpbGFibGUgdGltZWQgb3V0IiA8PCBzdGQ6OmVuZGw7
CisKKyAgICBHTHVpbnQ2NCByZXN1bHQxID0gMDsKKyAgICBHTHVpbnQ2NCByZXN1bHQyID0gMDsK
KyAgICBnbEdldFF1ZXJ5T2JqZWN0dWk2NHZFWFQocXVlcnkxLCBHTF9RVUVSWV9SRVNVTFRfRVhU
LCAmcmVzdWx0MSk7CisgICAgZ2xHZXRRdWVyeU9iamVjdHVpNjR2RVhUKHF1ZXJ5MiwgR0xfUVVF
UllfUkVTVUxUX0VYVCwgJnJlc3VsdDIpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisg
ICAgZ2xEZWxldGVRdWVyaWVzRVhUKDEsICZxdWVyeTEpOworICAgIGdsRGVsZXRlUXVlcmllc0VY
VCgxLCAmcXVlcnkyKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIHN0ZDo6Y291
dCA8PCAiRWxhcHNlZCB0aW1lOiAiIDw8IHJlc3VsdDEgPDwgIiBjaGVhcCBxdWFkIiA8PCBzdGQ6
OmVuZGw7CisgICAgc3RkOjpjb3V0IDw8ICJFbGFwc2VkIHRpbWU6ICIgPDwgcmVzdWx0MiA8PCAi
IGNvc3RseSBxdWFkIiA8PCBzdGQ6OmVuZGw7CisKKyAgICAvLyBUaGUgdGltZSBlbGFwc2VkIHNo
b3VsZCBiZSBub256ZXJvCisgICAgRVhQRUNUX0xUKDB1bCwgcmVzdWx0MSk7CisgICAgRVhQRUNU
X0xUKDB1bCwgcmVzdWx0Mik7CisKKyAgICAvLyBUaGUgY29zdGx5IHF1YWQgc2hvdWxkIHRha2Ug
bG9uZ2VyIHRoYW4gdGhlIGNoZWFwIHF1YWQKKyAgICBFWFBFQ1RfTFQocmVzdWx0MSwgcmVzdWx0
Mik7Cit9CisKKy8vIFRlc3RzIHRpbWUgZWxhcHNlZCBmb3IgYSBub24gZHJhdyBjYWxsICh0ZXh0
dXJlIHVwbG9hZCkKK1RFU1RfUChUaW1lclF1ZXJpZXNUZXN0LCBUaW1lRWxhcHNlZFRleHR1cmVU
ZXN0KQoreworICAgIC8vIE9TWCBkcml2ZXJzIGRvbid0IHNlZW0gdG8gcHJvcGVybHkgdGltZSBu
b24tZHJhdyBjYWxscyBzbyB3ZSBza2lwIHRoZSB0ZXN0IG9uIE1hYworICAgIGlmIChJc09TWCgp
KQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gT1NYIiA8PCBz
dGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWV4dGVuc2lvbkVu
YWJsZWQoIkdMX0VYVF9kaXNqb2ludF90aW1lcl9xdWVyeSIpKQorICAgIHsKKyAgICAgICAgc3Rk
Ojpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBHTF9FWFRfZGlzam9pbnRfdGltZXJfcXVl
cnkgaXMgbm90IGF2YWlsYWJsZS4iCisgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHTGludCBxdWVyeVRpbWVFbGFwc2VkQml0cyA9
IDA7CisgICAgZ2xHZXRRdWVyeWl2RVhUKEdMX1RJTUVfRUxBUFNFRF9FWFQsIEdMX1FVRVJZX0NP
VU5URVJfQklUU19FWFQsICZxdWVyeVRpbWVFbGFwc2VkQml0cyk7CisgICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7CisKKyAgICBzdGQ6OmNvdXQgPDwgIlRpbWUgZWxhcHNlZCBjb3VudGVyIGJpdHM6
ICIgPDwgcXVlcnlUaW1lRWxhcHNlZEJpdHMgPDwgc3RkOjplbmRsOworCisgICAgLy8gU2tpcCB0
ZXN0IGlmIHRoZSBudW1iZXIgb2YgYml0cyBpcyAwCisgICAgaWYgKHF1ZXJ5VGltZUVsYXBzZWRC
aXRzID09IDApCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNh
dXNlIG9mIDAgY291bnRlciBiaXRzIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBHTHVieXRlIHBpeGVsc1tdID0gezAsIDAsIDAsIDI1NSwgMjU1LCAyNTUsIDI1
NSwgMjU1LCAyNTUsIDAsIDAsIDB9OworCisgICAgLy8gUXVlcnkgYW5kIHRleHR1cmUgaW5pdGlh
bGl6YXRpb24KKyAgICBHTHVpbnQgdGV4dHVyZTsKKyAgICBHTHVpbnQgcXVlcnkgPSAwOworICAg
IGdsR2VuUXVlcmllc0VYVCgxLCAmcXVlcnkpOworICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleHR1
cmUpOworCisgICAgLy8gVXBsb2FkIGEgdGV4dHVyZSBpbnNpZGUgdGhlIHF1ZXJ5CisgICAgZ2xC
ZWdpblF1ZXJ5RVhUKEdMX1RJTUVfRUxBUFNFRF9FWFQsIHF1ZXJ5KTsKKyAgICBnbENsZWFyKEdM
X0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZG
RVJfQklUKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUpOworICAg
IGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0IsIDIsIDIsIDAsIEdMX1JHQiwg
R0xfVU5TSUdORURfQllURSwgcGl4ZWxzKTsKKyAgICBnbEdlbmVyYXRlTWlwbWFwKEdMX1RFWFRV
UkVfMkQpOworICAgIGdsRmluaXNoKCk7CisgICAgZ2xFbmRRdWVyeUVYVChHTF9USU1FX0VMQVBT
RURfRVhUKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIGludCB0aW1lb3V0ICA9
IDIwMDAwMDsKKyAgICBHTHVpbnQgcmVhZHkgPSBHTF9GQUxTRTsKKyAgICB3aGlsZSAocmVhZHkg
PT0gR0xfRkFMU0UgJiYgdGltZW91dCA+IDApCisgICAgeworICAgICAgICBhbmdsZTo6U2xlZXAo
MCk7CisgICAgICAgIGdsR2V0UXVlcnlPYmplY3R1aXZFWFQocXVlcnksIEdMX1FVRVJZX1JFU1VM
VF9BVkFJTEFCTEVfRVhULCAmcmVhZHkpOworICAgICAgICB0aW1lb3V0LS07CisgICAgfQorICAg
IEFTU0VSVF9MVCgwLCB0aW1lb3V0KSA8PCAiUXVlcnkgcmVzdWx0IGF2YWlsYWJsZSB0aW1lZCBv
dXQiIDw8IHN0ZDo6ZW5kbDsKKworICAgIEdMdWludDY0IHJlc3VsdCA9IDA7CisgICAgZ2xHZXRR
dWVyeU9iamVjdHVpNjR2RVhUKHF1ZXJ5LCBHTF9RVUVSWV9SRVNVTFRfRVhULCAmcmVzdWx0KTsK
KyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRl
eHR1cmUpOworICAgIGdsRGVsZXRlUXVlcmllc0VYVCgxLCAmcXVlcnkpOworCisgICAgc3RkOjpj
b3V0IDw8ICJFbGFwc2VkIHRpbWU6ICIgPDwgcmVzdWx0IDw8IHN0ZDo6ZW5kbDsKKyAgICBFWFBF
Q1RfTFQoMHVsLCByZXN1bHQpOworfQorCisvLyBUZXN0cyB2YWxpZGF0aW9uIG9mIHF1ZXJ5IGZ1
bmN0aW9ucyB3aXRoIHJlc3BlY3QgdG8gZWxhcHNlZCB0aW1lIHF1ZXJ5CitURVNUX1AoVGltZXJR
dWVyaWVzVGVzdCwgVGltZUVsYXBzZWRWYWxpZGF0aW9uVGVzdCkKK3sKKyAgICBpZiAoIWV4dGVu
c2lvbkVuYWJsZWQoIkdMX0VYVF9kaXNqb2ludF90aW1lcl9xdWVyeSIpKQorICAgIHsKKyAgICAg
ICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBHTF9FWFRfZGlzam9pbnRfdGlt
ZXJfcXVlcnkgaXMgbm90IGF2YWlsYWJsZS4iCisgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVu
ZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHTGludCBxdWVyeVRpbWVFbGFwc2Vk
Qml0cyA9IDA7CisgICAgZ2xHZXRRdWVyeWl2RVhUKEdMX1RJTUVfRUxBUFNFRF9FWFQsIEdMX1FV
RVJZX0NPVU5URVJfQklUU19FWFQsICZxdWVyeVRpbWVFbGFwc2VkQml0cyk7CisgICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7CisKKyAgICBzdGQ6OmNvdXQgPDwgIlRpbWUgZWxhcHNlZCBjb3VudGVy
IGJpdHM6ICIgPDwgcXVlcnlUaW1lRWxhcHNlZEJpdHMgPDwgc3RkOjplbmRsOworCisgICAgLy8g
U2tpcCB0ZXN0IGlmIHRoZSBudW1iZXIgb2YgYml0cyBpcyAwCisgICAgaWYgKHF1ZXJ5VGltZUVs
YXBzZWRCaXRzID09IDApCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBl
ZCBiZWNhdXNlIG9mIDAgY291bnRlciBiaXRzIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBHTHVpbnQgcXVlcnkgPSAwOworICAgIGdsR2VuUXVlcmllc0VYVCgt
MSwgJnF1ZXJ5KTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7CisKKyAg
ICBnbEdlblF1ZXJpZXNFWFQoMSwgJnF1ZXJ5KTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
KworICAgIGdsQmVnaW5RdWVyeUVYVChHTF9USU1FU1RBTVBfRVhULCBxdWVyeSk7CisgICAgRVhQ
RUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7CisKKyAgICBnbEJlZ2luUXVlcnlFWFQoR0xf
VElNRV9FTEFQU0VEX0VYVCwgMCk7CisgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKKworICAgIGdsRW5kUXVlcnlFWFQoR0xfVElNRV9FTEFQU0VEX0VYVCk7CisgICAg
RVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKworICAgIGdsQmVnaW5RdWVy
eUVYVChHTF9USU1FX0VMQVBTRURfRVhULCBxdWVyeSk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7CisKKyAgICBnbEJlZ2luUXVlcnlFWFQoR0xfVElNRV9FTEFQU0VEX0VYVCwgcXVlcnkpOwor
ICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7CisKKyAgICBnbEVuZFF1
ZXJ5RVhUKEdMX1RJTUVfRUxBUFNFRF9FWFQpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwor
CisgICAgZ2xFbmRRdWVyeUVYVChHTF9USU1FX0VMQVBTRURfRVhUKTsKKyAgICBFWFBFQ1RfR0xf
RVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCisvLyBUZXN0cyB0aW1lciBxdWVyaWVz
IG9wZXJhdGluZyB1bmRlciBtdWx0aXBsZSBFR0wgY29udGV4dHMgd2l0aCBtaWQtcXVlcnkgc3dp
dGNoaW5nCitURVNUX1AoVGltZXJRdWVyaWVzVGVzdCwgVGltZUVsYXBzZWRNdWx0aWNvbnRleHRU
ZXN0KQoreworICAgIGlmIChJc0FNRCgpICYmIElzT3BlbkdMKCkgJiYgSXNXaW5kb3dzKCkgJiYg
SXNEZWJ1ZygpKQorICAgIHsKKyAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogRmlndXJlIG91dCB3
aHkgdGhpcyB0ZXN0IGlzIGZsYWt5IG9uIFdpbi9BTUQvT3BlbkdML0RlYnVnLgorICAgICAgICBz
dGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBXaW5kb3dzIEFNRCBPcGVuR0wgRGVidWcuIiA8
PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWV4dGVuc2lv
bkVuYWJsZWQoIkdMX0VYVF9kaXNqb2ludF90aW1lcl9xdWVyeSIpKQorICAgIHsKKyAgICAgICAg
c3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBHTF9FWFRfZGlzam9pbnRfdGltZXJf
cXVlcnkgaXMgbm90IGF2YWlsYWJsZS4iCisgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHTGludCBxdWVyeVRpbWVFbGFwc2VkQml0
cyA9IDA7CisgICAgZ2xHZXRRdWVyeWl2RVhUKEdMX1RJTUVfRUxBUFNFRF9FWFQsIEdMX1FVRVJZ
X0NPVU5URVJfQklUU19FWFQsICZxdWVyeVRpbWVFbGFwc2VkQml0cyk7CisgICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7CisKKyAgICBzdGQ6OmNvdXQgPDwgIlRpbWUgZWxhcHNlZCBjb3VudGVyIGJp
dHM6ICIgPDwgcXVlcnlUaW1lRWxhcHNlZEJpdHMgPDwgc3RkOjplbmRsOworCisgICAgLy8gU2tp
cCB0ZXN0IGlmIHRoZSBudW1iZXIgb2YgYml0cyBpcyAwCisgICAgaWYgKHF1ZXJ5VGltZUVsYXBz
ZWRCaXRzID09IDApCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBi
ZWNhdXNlIG9mIDAgY291bnRlciBiaXRzIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICAvLyBXaXRob3V0IGEgZ2xDbGVhciwgdGhlIGZpcnN0IGRyYXcgY2FsbCBv
biBHTCB0YWtlcyBhIGh1Z2UgYW1vdW50IG9mIHRpbWUgd2hlbiBydW4gYWZ0ZXIgdGhlCisgICAg
Ly8gRDNEIHRlc3Qgb24gY2VydGFpbiBOVklESUEgZHJpdmVycworICAgIGdsRGVwdGhNYXNrKEdM
X1RSVUUpOworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZF
Ul9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOworCisgICAgRUdMaW50IGNvbnRleHRBdHRy
aWJ1dGVzW10gPSB7CisgICAgICAgIEVHTF9DT05URVhUX01BSk9SX1ZFUlNJT05fS0hSLAorICAg
ICAgICBHZXRQYXJhbSgpLm1ham9yVmVyc2lvbiwKKyAgICAgICAgRUdMX0NPTlRFWFRfTUlOT1Jf
VkVSU0lPTl9LSFIsCisgICAgICAgIEdldFBhcmFtKCkubWlub3JWZXJzaW9uLAorICAgICAgICBF
R0xfTk9ORSwKKyAgICB9OworCisgICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3co
KTsKKworICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHdpbmRvdy0+Z2V0RGlzcGxheSgpOworICAg
IEVHTENvbmZpZyBjb25maWcgICA9IHdpbmRvdy0+Z2V0Q29uZmlnKCk7CisgICAgRUdMU3VyZmFj
ZSBzdXJmYWNlID0gd2luZG93LT5nZXRTdXJmYWNlKCk7CisKKyAgICBzdHJ1Y3QgQ29udGV4dElu
Zm8KKyAgICB7CisgICAgICAgIEVHTENvbnRleHQgY29udGV4dDsKKyAgICAgICAgR0x1aW50IHBy
b2dyYW07CisgICAgICAgIEdMdWludCBxdWVyeTsKKyAgICAgICAgRUdMRGlzcGxheSBkaXNwbGF5
OworCisgICAgICAgIENvbnRleHRJbmZvKCkgOiBjb250ZXh0KEVHTF9OT19DT05URVhUKSwgcHJv
Z3JhbSgwKSwgcXVlcnkoMCksIGRpc3BsYXkoRUdMX05PX0RJU1BMQVkpIHt9CisKKyAgICAgICAg
fkNvbnRleHRJbmZvKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGNvbnRleHQgIT0gRUdM
X05PX0NPTlRFWFQgJiYgZGlzcGxheSAhPSBFR0xfTk9fRElTUExBWSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisgICAgQ29udGV4dEluZm8gY29udGV4dHNb
Ml07CisKKyAgICAvLyBTaGFkZXJzCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgY2hlYXBWUyA9Cisg
ICAgICAgICJhdHRyaWJ1dGUgaGlnaHAgdmVjNCBwb3NpdGlvbjsgdm9pZCBtYWluKHZvaWQpXG4i
CisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjtcbiIK
KyAgICAgICAgIn1cbiI7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBjaGVhcFBTID0KKyAgICAg
ICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDsgdm9pZCBtYWluKHZvaWQpXG4iCisgICAgICAgICJ7
XG4iCisgICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjAp
O1xuIgorICAgICAgICAifVxuIjsKKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGNvc3RseVZTID0K
KyAgICAgICAgImF0dHJpYnV0ZSBoaWdocCB2ZWM0IHBvc2l0aW9uOyB2YXJ5aW5nIGhpZ2hwIHZl
YzQgdGVzdFBvczsgdm9pZCBtYWluKHZvaWQpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIg
ICAgdGVzdFBvcyAgICAgPSBwb3NpdGlvbjtcbiIKKyAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9
IHBvc2l0aW9uO1xuIgorICAgICAgICAifVxuIjsKKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGNv
c3RseVBTID0KKyAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDsgdmFyeWluZyBoaWdocCB2
ZWM0IHRlc3RQb3M7IHZvaWQgbWFpbih2b2lkKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAi
ICAgIHZlYzQgdGVzdCA9IHRlc3RQb3M7XG4iCisgICAgICAgICIgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCA1MDA7IGkrKylcbiIKKyAgICAgICAgIiAgICB7XG4iCisgICAgICAgICIgICAgICAgIHRl
c3QgPSBzcXJ0KHRlc3QpO1xuIgorICAgICAgICAiICAgIH1cbiIKKyAgICAgICAgIiAgICBnbF9G
cmFnQ29sb3IgPSB0ZXN0O1xuIgorICAgICAgICAifVxuIjsKKworICAgIC8vIFNldHVwIHRoZSBm
aXJzdCBjb250ZXh0IHdpdGggYSBjaGVhcCBzaGFkZXIKKyAgICBjb250ZXh0c1swXS5jb250ZXh0
ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5LCBjb25maWcsIEVHTF9OT19DT05URVhULCBjb250
ZXh0QXR0cmlidXRlcyk7CisgICAgY29udGV4dHNbMF0uZGlzcGxheSA9IGRpc3BsYXk7CisgICAg
QVNTRVJUX05FKGNvbnRleHRzWzBdLmNvbnRleHQsIEVHTF9OT19DT05URVhUKTsKKyAgICBlZ2xN
YWtlQ3VycmVudChkaXNwbGF5LCBzdXJmYWNlLCBzdXJmYWNlLCBjb250ZXh0c1swXS5jb250ZXh0
KTsKKyAgICBjb250ZXh0c1swXS5wcm9ncmFtID0gQ29tcGlsZVByb2dyYW0oY2hlYXBWUywgY2hl
YXBQUyk7CisgICAgZ2xHZW5RdWVyaWVzRVhUKDEsICZjb250ZXh0c1swXS5xdWVyeSk7CisgICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBTZXR1cCB0aGUgc2Vjb25kIGNvbnRleHQg
d2l0aCBhbiBleHBlbnNpdmUgc2hhZGVyCisgICAgY29udGV4dHNbMV0uY29udGV4dCA9IGVnbENy
ZWF0ZUNvbnRleHQoZGlzcGxheSwgY29uZmlnLCBFR0xfTk9fQ09OVEVYVCwgY29udGV4dEF0dHJp
YnV0ZXMpOworICAgIGNvbnRleHRzWzFdLmRpc3BsYXkgPSBkaXNwbGF5OworICAgIEFTU0VSVF9O
RShjb250ZXh0c1sxXS5jb250ZXh0LCBFR0xfTk9fQ09OVEVYVCk7CisgICAgZWdsTWFrZUN1cnJl
bnQoZGlzcGxheSwgc3VyZmFjZSwgc3VyZmFjZSwgY29udGV4dHNbMV0uY29udGV4dCk7CisgICAg
Y29udGV4dHNbMV0ucHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKGNvc3RseVZTLCBjb3N0bHlQUyk7
CisgICAgZ2xHZW5RdWVyaWVzRVhUKDEsICZjb250ZXh0c1sxXS5xdWVyeSk7CisgICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBTdGFydCB0aGUgcXVlcnkgYW5kIGRyYXcgYSBxdWFk
IG9uIHRoZSBmaXJzdCBjb250ZXh0IHdpdGhvdXQgZW5kaW5nIHRoZSBxdWVyeQorICAgIGVnbE1h
a2VDdXJyZW50KGRpc3BsYXksIHN1cmZhY2UsIHN1cmZhY2UsIGNvbnRleHRzWzBdLmNvbnRleHQp
OworICAgIGdsQmVnaW5RdWVyeUVYVChHTF9USU1FX0VMQVBTRURfRVhULCBjb250ZXh0c1swXS5x
dWVyeSk7CisgICAgZHJhd1F1YWQoY29udGV4dHNbMF0ucHJvZ3JhbSwgInBvc2l0aW9uIiwgMC44
Zik7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBTd2l0Y2ggY29udGV4dHMs
IGRyYXcgdGhlIGV4cGVuc2l2ZSBxdWFkIGFuZCBlbmQgaXRzIHF1ZXJ5CisgICAgZWdsTWFrZUN1
cnJlbnQoZGlzcGxheSwgc3VyZmFjZSwgc3VyZmFjZSwgY29udGV4dHNbMV0uY29udGV4dCk7Cisg
ICAgZ2xCZWdpblF1ZXJ5RVhUKEdMX1RJTUVfRUxBUFNFRF9FWFQsIGNvbnRleHRzWzFdLnF1ZXJ5
KTsKKyAgICBkcmF3UXVhZChjb250ZXh0c1sxXS5wcm9ncmFtLCAicG9zaXRpb24iLCAwLjhmKTsK
KyAgICBnbEVuZFF1ZXJ5RVhUKEdMX1RJTUVfRUxBUFNFRF9FWFQpOworICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOworCisgICAgLy8gR28gYmFjayB0byB0aGUgZmlyc3QgY29udGV4dCwgZW5kIGl0
cyBxdWVyeSwgYW5kIGdldCB0aGUgcmVzdWx0CisgICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwg
c3VyZmFjZSwgc3VyZmFjZSwgY29udGV4dHNbMF0uY29udGV4dCk7CisgICAgZ2xFbmRRdWVyeUVY
VChHTF9USU1FX0VMQVBTRURfRVhUKTsKKworICAgIEdMdWludDY0IHJlc3VsdDEgPSAwOworICAg
IEdMdWludDY0IHJlc3VsdDIgPSAwOworICAgIGdsR2V0UXVlcnlPYmplY3R1aTY0dkVYVChjb250
ZXh0c1swXS5xdWVyeSwgR0xfUVVFUllfUkVTVUxUX0VYVCwgJnJlc3VsdDEpOworICAgIGdsRGVs
ZXRlUXVlcmllc0VYVCgxLCAmY29udGV4dHNbMF0ucXVlcnkpOworICAgIGdsRGVsZXRlUHJvZ3Jh
bShjb250ZXh0c1swXS5wcm9ncmFtKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAg
IC8vIEdldCB0aGUgMm5kIGNvbnRleHQncyByZXN1bHRzCisgICAgZWdsTWFrZUN1cnJlbnQoZGlz
cGxheSwgc3VyZmFjZSwgc3VyZmFjZSwgY29udGV4dHNbMV0uY29udGV4dCk7CisgICAgZ2xHZXRR
dWVyeU9iamVjdHVpNjR2RVhUKGNvbnRleHRzWzFdLnF1ZXJ5LCBHTF9RVUVSWV9SRVNVTFRfRVhU
LCAmcmVzdWx0Mik7CisgICAgZ2xEZWxldGVRdWVyaWVzRVhUKDEsICZjb250ZXh0c1sxXS5xdWVy
eSk7CisgICAgZ2xEZWxldGVQcm9ncmFtKGNvbnRleHRzWzFdLnByb2dyYW0pOworICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOworCisgICAgLy8gU3dpdGNoIGJhY2sgdG8gbWFpbiBjb250ZXh0Cisg
ICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwgc3VyZmFjZSwgc3VyZmFjZSwgd2luZG93LT5nZXRD
b250ZXh0KCkpOworCisgICAgLy8gQ29tcGFyZSB0aGUgcmVzdWx0cy4gVGhlIGNoZWFwIHF1YWQg
c2hvdWxkIGJlIHNtYWxsZXIgdGhhbiB0aGUgZXhwZW5zaXZlIG9uZSBpZgorICAgIC8vIHZpcnR1
YWxpemF0aW9uIGlzIHdvcmtpbmcgY29ycmVjdGx5CisgICAgc3RkOjpjb3V0IDw8ICJFbGFwc2Vk
IHRpbWU6ICIgPDwgcmVzdWx0MSA8PCAiIGNoZWFwIHF1YWQiIDw8IHN0ZDo6ZW5kbDsKKyAgICBz
dGQ6OmNvdXQgPDwgIkVsYXBzZWQgdGltZTogIiA8PCByZXN1bHQyIDw8ICIgY29zdGx5IHF1YWQi
IDw8IHN0ZDo6ZW5kbDsKKyAgICBFWFBFQ1RfTFQoMHVsLCByZXN1bHQxKTsKKyAgICBFWFBFQ1Rf
TFQoMHVsLCByZXN1bHQyKTsKKyAgICBFWFBFQ1RfTFQocmVzdWx0MSwgcmVzdWx0Mik7Cit9CisK
Ky8vIFRlc3RzIEdQVSB0aW1lc3RhbXAgZnVuY3Rpb25hbGl0eQorVEVTVF9QKFRpbWVyUXVlcmll
c1Rlc3QsIFRpbWVzdGFtcCkKK3sKKyAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9k
aXNqb2ludF90aW1lcl9xdWVyeSIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0
IHNraXBwZWQgYmVjYXVzZSBHTF9FWFRfZGlzam9pbnRfdGltZXJfcXVlcnkgaXMgbm90IGF2YWls
YWJsZS4iCisgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBHTGludCBxdWVyeVRpbWVzdGFtcEJpdHMgPSAwOworICAgIGdsR2V0UXVl
cnlpdkVYVChHTF9USU1FU1RBTVBfRVhULCBHTF9RVUVSWV9DT1VOVEVSX0JJVFNfRVhULCAmcXVl
cnlUaW1lc3RhbXBCaXRzKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIHN0ZDo6
Y291dCA8PCAiVGltZXN0YW1wIGNvdW50ZXIgYml0czogIiA8PCBxdWVyeVRpbWVzdGFtcEJpdHMg
PDwgc3RkOjplbmRsOworCisgICAgLy8gTWFjcyBmb3Igc29tZSByZWFzb24gcmV0dXJuIDAgYml0
cyBzbyBza2lwIHRoZSB0ZXN0IGZvciBub3cgaWYgZWl0aGVyIGFyZSAwCisgICAgaWYgKHF1ZXJ5
VGltZXN0YW1wQml0cyA9PSAwKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNr
aXBwZWQgYmVjYXVzZSBvZiAwIGNvdW50ZXIgYml0cyIgPDwgc3RkOjplbmRsOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgZ2xEZXB0aE1hc2soR0xfVFJVRSk7CisgICAgZ2xDbGVhcihH
TF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVG
RkVSX0JJVCk7CisKKyAgICBHTHVpbnQgcXVlcnkxID0gMDsKKyAgICBHTHVpbnQgcXVlcnkyID0g
MDsKKyAgICBnbEdlblF1ZXJpZXNFWFQoMSwgJnF1ZXJ5MSk7CisgICAgZ2xHZW5RdWVyaWVzRVhU
KDEsICZxdWVyeTIpOworICAgIGdsUXVlcnlDb3VudGVyRVhUKHF1ZXJ5MSwgR0xfVElNRVNUQU1Q
X0VYVCk7CisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuOGYpOworICAgIGds
UXVlcnlDb3VudGVyRVhUKHF1ZXJ5MiwgR0xfVElNRVNUQU1QX0VYVCk7CisKKyAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKKworICAgIHN3YXBCdWZmZXJzKCk7CisKKyAgICBpbnQgdGltZW91dCAg
PSAyMDAwMDA7CisgICAgR0x1aW50IHJlYWR5ID0gR0xfRkFMU0U7CisgICAgd2hpbGUgKHJlYWR5
ID09IEdMX0ZBTFNFICYmIHRpbWVvdXQgPiAwKQorICAgIHsKKyAgICAgICAgYW5nbGU6OlNsZWVw
KDApOworICAgICAgICBnbEdldFF1ZXJ5T2JqZWN0dWl2RVhUKHF1ZXJ5MSwgR0xfUVVFUllfUkVT
VUxUX0FWQUlMQUJMRV9FWFQsICZyZWFkeSk7CisgICAgICAgIHRpbWVvdXQtLTsKKyAgICB9Cisg
ICAgcmVhZHkgPSBHTF9GQUxTRTsKKyAgICB3aGlsZSAocmVhZHkgPT0gR0xfRkFMU0UgJiYgdGlt
ZW91dCA+IDApCisgICAgeworICAgICAgICBhbmdsZTo6U2xlZXAoMCk7CisgICAgICAgIGdsR2V0
UXVlcnlPYmplY3R1aXZFWFQocXVlcnkyLCBHTF9RVUVSWV9SRVNVTFRfQVZBSUxBQkxFX0VYVCwg
JnJlYWR5KTsKKyAgICAgICAgdGltZW91dC0tOworICAgIH0KKyAgICBBU1NFUlRfTFQoMCwgdGlt
ZW91dCkgPDwgIlF1ZXJ5IHJlc3VsdCBhdmFpbGFibGUgdGltZWQgb3V0IiA8PCBzdGQ6OmVuZGw7
CisKKyAgICBHTHVpbnQ2NCByZXN1bHQxID0gMDsKKyAgICBHTHVpbnQ2NCByZXN1bHQyID0gMDsK
KyAgICBnbEdldFF1ZXJ5T2JqZWN0dWk2NHZFWFQocXVlcnkxLCBHTF9RVUVSWV9SRVNVTFRfRVhU
LCAmcmVzdWx0MSk7CisgICAgZ2xHZXRRdWVyeU9iamVjdHVpNjR2RVhUKHF1ZXJ5MiwgR0xfUVVF
UllfUkVTVUxUX0VYVCwgJnJlc3VsdDIpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisK
KyAgICBnbERlbGV0ZVF1ZXJpZXNFWFQoMSwgJnF1ZXJ5MSk7CisgICAgZ2xEZWxldGVRdWVyaWVz
RVhUKDEsICZxdWVyeTIpOworCisgICAgc3RkOjpjb3V0IDw8ICJUaW1lc3RhbXBzOiAiIDw8IHJl
c3VsdDEgPDwgIiAiIDw8IHJlc3VsdDIgPDwgc3RkOjplbmRsOworICAgIEVYUEVDVF9MVCgwdWws
IHJlc3VsdDEpOworICAgIEVYUEVDVF9MVCgwdWwsIHJlc3VsdDIpOworICAgIEVYUEVDVF9MVChy
ZXN1bHQxLCByZXN1bHQyKTsKK30KKworY2xhc3MgVGltZXJRdWVyaWVzVGVzdEVTMyA6IHB1Ymxp
YyBUaW1lclF1ZXJpZXNUZXN0Cit7Cit9OworCisvLyBUZXN0cyBnZXR0aW5nIHRpbWVzdGFtcHMg
dmlhIGdsR2V0SW50ZWdlcjY0dgorVEVTVF9QKFRpbWVyUXVlcmllc1Rlc3RFUzMsIFRpbWVzdGFt
cEdldEludGVnZXI2NCkKK3sKKyAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kaXNq
b2ludF90aW1lcl9xdWVyeSIpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNr
aXBwZWQgYmVjYXVzZSBHTF9FWFRfZGlzam9pbnRfdGltZXJfcXVlcnkgaXMgbm90IGF2YWlsYWJs
ZS4iCisgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBHTGludCBxdWVyeVRpbWVzdGFtcEJpdHMgPSAwOworICAgIGdsR2V0UXVlcnlp
dkVYVChHTF9USU1FU1RBTVBfRVhULCBHTF9RVUVSWV9DT1VOVEVSX0JJVFNfRVhULCAmcXVlcnlU
aW1lc3RhbXBCaXRzKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIHN0ZDo6Y291
dCA8PCAiVGltZXN0YW1wIGNvdW50ZXIgYml0czogIiA8PCBxdWVyeVRpbWVzdGFtcEJpdHMgPDwg
c3RkOjplbmRsOworCisgICAgaWYgKHF1ZXJ5VGltZXN0YW1wQml0cyA9PSAwKQorICAgIHsKKyAg
ICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBvZiAwIGNvdW50ZXIgYml0
cyIgPDwgc3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZ2xEZXB0aE1h
c2soR0xfVFJVRSk7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhf
QlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7CisKKyAgICBHTGludDY0IHJlc3Vs
dDEgPSAwOworICAgIEdMaW50NjQgcmVzdWx0MiA9IDA7CisgICAgZ2xHZXRJbnRlZ2VyNjR2KEdM
X1RJTUVTVEFNUF9FWFQsICZyZXN1bHQxKTsKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0
aW9uIiwgMC44Zik7CisgICAgZ2xHZXRJbnRlZ2VyNjR2KEdMX1RJTUVTVEFNUF9FWFQsICZyZXN1
bHQyKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICBzdGQ6OmNvdXQgPDwgIlRpbWVz
dGFtcHMgKGdldEludGVnZXI2NHYpOiAiIDw8IHJlc3VsdDEgPDwgIiAiIDw8IHJlc3VsdDIgPDwg
c3RkOjplbmRsOworICAgIEVYUEVDVF9MVCgwbCwgcmVzdWx0MSk7CisgICAgRVhQRUNUX0xUKDBs
LCByZXN1bHQyKTsKKyAgICBFWFBFQ1RfTFQocmVzdWx0MSwgcmVzdWx0Mik7Cit9CisKK0FOR0xF
X0lOU1RBTlRJQVRFX1RFU1QoVGltZXJRdWVyaWVzVGVzdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgRVMyX0QzRDkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCisgICAg
ICAgICAgICAgICAgICAgICAgIEVTM19EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBF
UzJfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woKSk7CisKK0FO
R0xFX0lOU1RBTlRJQVRFX1RFU1QoVGltZXJRdWVyaWVzVGVzdEVTMywgRVMzX0QzRDExKCksIEVT
M19PUEVOR0woKSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1RyYW5zZm9ybUZlZWRiYWNrVGVzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rl
c3RzL1RyYW5zZm9ybUZlZWRiYWNrVGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1RyYW5zZm9ybUZlZWRiYWNrVGVzdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NzQgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAx
NSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpbmNsdWRl
ICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorI2luY2x1ZGUgInJhbmRvbV91dGlscy5oIgorI2lu
Y2x1ZGUgIlZlY3Rvci5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKK25hbWVzcGFjZQor
eworCitjbGFzcyBUcmFuc2Zvcm1GZWVkYmFja1Rlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7Cisg
IHByb3RlY3RlZDoKKyAgICBUcmFuc2Zvcm1GZWVkYmFja1Rlc3QoKQorICAgICAgICA6IG1Qcm9n
cmFtKDApLAorICAgICAgICAgIG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcigwKSwKKyAgICAgICAg
ICBtVHJhbnNmb3JtRmVlZGJhY2soMCkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRoKDEy
OCk7CisgICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOworICAgICAgICBzZXRDb25maWdSZWRC
aXRzKDgpOworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZp
Z0JsdWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgfQorCisg
ICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNldFVw
KCk7CisKKyAgICAgICAgZ2xHZW5CdWZmZXJzKDEsICZtVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXIp
OworICAgICAgICBnbEJpbmRCdWZmZXIoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgbVRy
YW5zZm9ybUZlZWRiYWNrQnVmZmVyKTsKKyAgICAgICAgZ2xCdWZmZXJEYXRhKEdMX1RSQU5TRk9S
TV9GRUVEQkFDS19CVUZGRVIsIG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlclNpemUsIE5VTEwsCisg
ICAgICAgICAgICAgICAgICAgICBHTF9TVEFUSUNfRFJBVyk7CisKKyAgICAgICAgZ2xHZW5UcmFu
c2Zvcm1GZWVkYmFja3MoMSwgJm1UcmFuc2Zvcm1GZWVkYmFjayk7CisKKyAgICAgICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBpZiAobVByb2dyYW0gIT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAg
Z2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICAgICAgICAgIG1Qcm9ncmFtID0gMDsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChtVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXIgIT0gMCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtVHJhbnNmb3JtRmVlZGJh
Y2tCdWZmZXIpOworICAgICAgICAgICAgbVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyID0gMDsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChtVHJhbnNmb3JtRmVlZGJhY2sgIT0gMCkKKyAgICAgICAg
eworICAgICAgICAgICAgZ2xEZWxldGVUcmFuc2Zvcm1GZWVkYmFja3MoMSwgJm1UcmFuc2Zvcm1G
ZWVkYmFjayk7CisgICAgICAgICAgICBtVHJhbnNmb3JtRmVlZGJhY2sgPSAwOworICAgICAgICB9
CisKKyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOworICAgIH0KKworICAgIHZvaWQgY29t
cGlsZURlZmF1bHRQcm9ncmFtKGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiAmdGZWYXJ5
aW5ncywgR0xlbnVtIGJ1ZmZlck1vZGUpCisgICAgeworICAgICAgICBBU1NFUlRfRVEoMHUsIG1Q
cm9ncmFtKTsKKworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2Ug
PSBTSEFERVJfU09VUkNFCisgICAgICAgICgKKyAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBm
bG9hdDsKKyAgICAgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uOworCisgICAgICAgICAg
ICB2b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9u
ID0gcG9zaXRpb247CisgICAgICAgICAgICB9CisgICAgICAgICk7CisKKyAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgICAg
ICgKKyAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKKworICAgICAgICAgICAgdm9p
ZCBtYWluKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2
ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgICAgICAgICB9CisgICAgICAgICk7CisKKyAg
ICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbVdpdGhUcmFuc2Zvcm1GZWVkYmFjayh2ZXJ0
ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRmVmFyeWluZ3MsIGJ1ZmZlck1v
ZGUpOworICAgICAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsKKyAgICB9CisKKyAgICBHTHVp
bnQgbVByb2dyYW07CisKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1UcmFuc2Zvcm1GZWVkYmFj
a0J1ZmZlclNpemUgPSAxIDw8IDI0OworICAgIEdMdWludCBtVHJhbnNmb3JtRmVlZGJhY2tCdWZm
ZXI7CisgICAgR0x1aW50IG1UcmFuc2Zvcm1GZWVkYmFjazsKK307CisKK1RFU1RfUChUcmFuc2Zv
cm1GZWVkYmFja1Rlc3QsIFplcm9TaXplZFZpZXdwb3J0KQoreworICAgIC8vIFNldCB0aGUgcHJv
Z3JhbSdzIHRyYW5zZm9ybSBmZWVkYmFjayB2YXJ5aW5ncyAoanVzdCBnbF9Qb3NpdGlvbikKKyAg
ICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdGZWYXJ5aW5nczsKKyAgICB0ZlZhcnlpbmdzLnB1
c2hfYmFjaygiZ2xfUG9zaXRpb24iKTsKKyAgICBjb21waWxlRGVmYXVsdFByb2dyYW0odGZWYXJ5
aW5ncywgR0xfSU5URVJMRUFWRURfQVRUUklCUyk7CisKKyAgICBnbFVzZVByb2dyYW0obVByb2dy
YW0pOworCisgICAgLy8gQmluZCB0aGUgYnVmZmVyIGZvciB0cmFuc2Zvcm0gZmVlZGJhY2sgb3V0
cHV0IGFuZCBzdGFydCB0cmFuc2Zvcm0gZmVlZGJhY2sKKyAgICBnbEJpbmRCdWZmZXJCYXNlKEdM
X1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcik7
CisgICAgZ2xCZWdpblRyYW5zZm9ybUZlZWRiYWNrKEdMX1RSSUFOR0xFUyk7CisKKyAgICAvLyBD
cmVhdGUgYSBxdWVyeSB0byBjaGVjayBob3cgbWFueSBwcmltaXRpdmVzIHdlcmUgd3JpdHRlbgor
ICAgIEdMdWludCBwcmltaXRpdmVzV3JpdHRlblF1ZXJ5ID0gMDsKKyAgICBnbEdlblF1ZXJpZXMo
MSwgJnByaW1pdGl2ZXNXcml0dGVuUXVlcnkpOworICAgIGdsQmVnaW5RdWVyeShHTF9UUkFOU0ZP
Uk1fRkVFREJBQ0tfUFJJTUlUSVZFU19XUklUVEVOLCBwcmltaXRpdmVzV3JpdHRlblF1ZXJ5KTsK
KworICAgIC8vIFNldCBhIHZpZXdwb3J0IHRoYXQgd291bGQgcmVzdWx0IGluIG5vIHBpeGVscyBi
ZWluZyB3cml0dGVuIHRvIHRoZSBmcmFtZWJ1ZmZlciBhbmQgZHJhdworICAgIC8vIGEgcXVhZAor
ICAgIGdsVmlld3BvcnQoMCwgMCwgMCwgMCk7CisKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBv
c2l0aW9uIiwgMC41Zik7CisKKyAgICAvLyBFbmQgdGhlIHF1ZXJ5IGFuZCB0cmFuc2Zvcm0gZmVl
ZGtiYWNrCisgICAgZ2xFbmRRdWVyeShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlUSVZFU19X
UklUVEVOKTsKKyAgICBnbEVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7CisKKyAgICBnbFVzZVByb2dy
YW0oMCk7CisKKyAgICAvLyBDaGVjayBob3cgbWFueSBwcmltaXRpdmVzIHdlcmUgd3JpdHRlbiBh
bmQgdmVyaWZ5IHRoYXQgc29tZSB3ZXJlIHdyaXR0ZW4gZXZlbiBpZgorICAgIC8vIG5vIHBpeGVs
cyB3ZXJlIHJlbmRlcmVkCisgICAgR0x1aW50IHByaW1pdGl2ZXNXcml0dGVuID0gMDsKKyAgICBn
bEdldFF1ZXJ5T2JqZWN0dWl2KHByaW1pdGl2ZXNXcml0dGVuUXVlcnksIEdMX1FVRVJZX1JFU1VM
VF9FWFQsICZwcmltaXRpdmVzV3JpdHRlbik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisK
KyAgICBFWFBFQ1RfRVEoMnUsIHByaW1pdGl2ZXNXcml0dGVuKTsKK30KKworLy8gVGVzdCB0aGF0
IHJlYmluZGluZyBhIGJ1ZmZlciB3aXRoIHRoZSBzYW1lIG9mZnNldCByZXNldHMgdGhlIG9mZnNl
dCAobm8gbG9uZ2VyIGFwcGVuZGluZyBmcm9tIHRoZQorLy8gb2xkIHBvc2l0aW9uKQorVEVTVF9Q
KFRyYW5zZm9ybUZlZWRiYWNrVGVzdCwgQnVmZmVyUmViaW5kaW5nKQoreworICAgIGdsRGlzYWJs
ZShHTF9ERVBUSF9URVNUKTsKKworICAgIC8vIFNldCB0aGUgcHJvZ3JhbSdzIHRyYW5zZm9ybSBm
ZWVkYmFjayB2YXJ5aW5ncyAoanVzdCBnbF9Qb3NpdGlvbikKKyAgICBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4gdGZWYXJ5aW5nczsKKyAgICB0ZlZhcnlpbmdzLnB1c2hfYmFjaygiZ2xfUG9zaXRp
b24iKTsKKyAgICBjb21waWxlRGVmYXVsdFByb2dyYW0odGZWYXJ5aW5ncywgR0xfSU5URVJMRUFW
RURfQVRUUklCUyk7CisKKyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworCisgICAgLy8gTWFr
ZSBzdXJlIHRoZSBidWZmZXIgaGFzIHplcm8nZCBkYXRhCisgICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+
IGRhdGEobVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyU2l6ZSAvIHNpemVvZihmbG9hdCksIDAuMGYp
OworICAgIGdsQmluZEJ1ZmZlcihHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBtVHJhbnNm
b3JtRmVlZGJhY2tCdWZmZXIpOworICAgIGdsQnVmZmVyRGF0YShHTF9UUkFOU0ZPUk1fRkVFREJB
Q0tfQlVGRkVSLCBtVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJTaXplLCBkYXRhLmRhdGEoKSwKKyAg
ICAgICAgICAgICAgICAgR0xfU1RBVElDX0RSQVcpOworCisKKyAgICAvLyBDcmVhdGUgYSBxdWVy
eSB0byBjaGVjayBob3cgbWFueSBwcmltaXRpdmVzIHdlcmUgd3JpdHRlbgorICAgIEdMdWludCBw
cmltaXRpdmVzV3JpdHRlblF1ZXJ5ID0gMDsKKyAgICBnbEdlblF1ZXJpZXMoMSwgJnByaW1pdGl2
ZXNXcml0dGVuUXVlcnkpOworICAgIGdsQmVnaW5RdWVyeShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tf
UFJJTUlUSVZFU19XUklUVEVOLCBwcmltaXRpdmVzV3JpdHRlblF1ZXJ5KTsKKworICAgIGNvbnN0
IGZsb2F0IGZpbmFsWiA9IDAuOTVmOworCisgICAgUk5HIHJuZzsKKworICAgIGNvbnN0IHNpemVf
dCBsb29wQ291bnQgPSA2NDsKKyAgICBmb3IgKHNpemVfdCBsb29wSWR4ID0gMDsgbG9vcElkeCA8
IGxvb3BDb3VudDsgbG9vcElkeCsrKQorICAgIHsKKyAgICAgICAgLy8gQmluZCB0aGUgYnVmZmVy
IGZvciB0cmFuc2Zvcm0gZmVlZGJhY2sgb3V0cHV0IGFuZCBzdGFydCB0cmFuc2Zvcm0gZmVlZGJh
Y2sKKyAgICAgICAgZ2xCaW5kQnVmZmVyQmFzZShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVS
LCAwLCBtVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXIpOworICAgICAgICBnbEJlZ2luVHJhbnNmb3Jt
RmVlZGJhY2soR0xfVFJJQU5HTEVTKTsKKworICAgICAgICBmbG9hdCB6ID0gKGxvb3BJZHggKyAx
ID09IGxvb3BDb3VudCkgPyBmaW5hbFogOiBybmcucmFuZG9tRmxvYXRCZXR3ZWVuKDAuMWYsIDAu
NWYpOworICAgICAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgeik7CisKKyAgICAg
ICAgZ2xFbmRUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIH0KKworICAgIC8vIEVuZCB0aGUgcXVl
cnkgYW5kIHRyYW5zZm9ybSBmZWVkYmFjaworICAgIGdsRW5kUXVlcnkoR0xfVFJBTlNGT1JNX0ZF
RURCQUNLX1BSSU1JVElWRVNfV1JJVFRFTik7CisKKyAgICBnbFVzZVByb2dyYW0oMCk7CisKKyAg
ICAvLyBDaGVjayBob3cgbWFueSBwcmltaXRpdmVzIHdlcmUgd3JpdHRlbiBhbmQgdmVyaWZ5IHRo
YXQgc29tZSB3ZXJlIHdyaXR0ZW4gZXZlbiBpZgorICAgIC8vIG5vIHBpeGVscyB3ZXJlIHJlbmRl
cmVkCisgICAgR0x1aW50IHByaW1pdGl2ZXNXcml0dGVuID0gMDsKKyAgICBnbEdldFF1ZXJ5T2Jq
ZWN0dWl2KHByaW1pdGl2ZXNXcml0dGVuUXVlcnksIEdMX1FVRVJZX1JFU1VMVF9FWFQsICZwcmlt
aXRpdmVzV3JpdHRlbik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBFWFBFQ1Rf
RVEobG9vcENvdW50ICogMiwgcHJpbWl0aXZlc1dyaXR0ZW4pOworCisgICAgLy8gQ2hlY2sgdGhl
IGJ1ZmZlciBkYXRhCisgICAgY29uc3QgZmxvYXQgKmJ1ZmZlckRhdGEgPSBzdGF0aWNfY2FzdDxm
bG9hdCAqPihnbE1hcEJ1ZmZlclJhbmdlKAorICAgICAgICBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tf
QlVGRkVSLCAwLCBtVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJTaXplLCBHTF9NQVBfUkVBRF9CSVQp
KTsKKworICAgIGZvciAoc2l6ZV90IHZlcnRleElkeCA9IDA7IHZlcnRleElkeCA8IDY7IHZlcnRl
eElkeCsrKQorICAgIHsKKyAgICAgICAgLy8gQ2hlY2sgdGhlIHRoaXJkIChaKSBjb21wb25lbnQg
b2YgZWFjaCB2ZXJ0ZXggd3JpdHRlbiBhbmQgbWFrZSBzdXJlIGl0IGhhcyB0aGUgZmluYWwKKyAg
ICAgICAgLy8gdmFsdWUKKyAgICAgICAgRVhQRUNUX05FQVIoZmluYWxaLCBidWZmZXJEYXRhW3Zl
cnRleElkeCAqIDQgKyAyXSwgMC4wMDAxKTsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBkYXRh
SWR4ID0gMjQ7IGRhdGFJZHggPCBtVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJTaXplIC8gc2l6ZW9m
KGZsb2F0KTsgZGF0YUlkeCsrKQorICAgIHsKKyAgICAgICAgRVhQRUNUX0VRKGRhdGFbZGF0YUlk
eF0sIGJ1ZmZlckRhdGFbZGF0YUlkeF0pIDw8ICJCdWZmZXIgb3ZlcnJ1biBkZXRlY3RlZC4iOwor
ICAgIH0KKworICAgIGdsVW5tYXBCdWZmZXIoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUik7
CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKK30KKworLy8gVGVzdCB0aGF0IFhGQiBjYW4g
d3JpdGUgYmFjayB2ZXJ0aWNlcyB0byBhIGJ1ZmZlciBhbmQgdGhhdCB3ZSBjYW4gZHJhdyBmcm9t
IHRoaXMgYnVmZmVyIGFmdGVyd2FyZC4KK1RFU1RfUChUcmFuc2Zvcm1GZWVkYmFja1Rlc3QsIFJl
Y29yZEFuZERyYXcpCit7CisgICAgLy8gVE9ETyhqbWFkaWxsKTogRmlndXJlIG91dCB3aHkgdGhp
cyBmYWlscyBvbiBJbnRlbC4KKyAgICBpZiAoSXNJbnRlbCgpICYmIEdldFBhcmFtKCkuZ2V0UmVu
ZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSkKKyAgICB7Cisg
ICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsLiIgPDwgc3RkOjplbmRs
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZ2xDbGVhckNvbG9yKDAuMGYsIDAuMGYs
IDAuMGYsIDAuMGYpOworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisKKyAgICAv
LyBTZXQgdGhlIHByb2dyYW0ncyB0cmFuc2Zvcm0gZmVlZGJhY2sgdmFyeWluZ3MgKGp1c3QgZ2xf
UG9zaXRpb24pCisgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHRmVmFyeWluZ3M7CisgICAg
dGZWYXJ5aW5ncy5wdXNoX2JhY2soImdsX1Bvc2l0aW9uIik7CisgICAgY29tcGlsZURlZmF1bHRQ
cm9ncmFtKHRmVmFyeWluZ3MsIEdMX0lOVEVSTEVBVkVEX0FUVFJJQlMpOworCisgICAgZ2xVc2VQ
cm9ncmFtKG1Qcm9ncmFtKTsKKworICAgIEdMaW50IHBvc2l0aW9uTG9jYXRpb24gPSBnbEdldEF0
dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAicG9zaXRpb24iKTsKKworICAgIC8vIEZpcnN0IHBhc3M6
IGRyYXcgNiBwb2ludHMgdG8gdGhlIFhGQiBidWZmZXIKKyAgICBnbEVuYWJsZShHTF9SQVNURVJJ
WkVSX0RJU0NBUkQpOworCisgICAgY29uc3QgR0xmbG9hdCB2ZXJ0aWNlc1tdID0KKyAgICB7Cisg
ICAgICAgIC0xLjBmLCAgMS4wZiwgMC41ZiwKKyAgICAgICAgLTEuMGYsIC0xLjBmLCAwLjVmLAor
ICAgICAgICAgMS4wZiwgLTEuMGYsIDAuNWYsCisKKyAgICAgICAgLTEuMGYsICAxLjBmLCAwLjVm
LAorICAgICAgICAgMS4wZiwgLTEuMGYsIDAuNWYsCisgICAgICAgICAxLjBmLCAgMS4wZiwgMC41
ZiwKKyAgICB9OworCisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0aW9uTG9jYXRpb24s
IDMsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgdmVydGljZXMpOworICAgIGdsRW5hYmxlVmVydGV4
QXR0cmliQXJyYXkocG9zaXRpb25Mb2NhdGlvbik7CisKKyAgICAvLyBCaW5kIHRoZSBidWZmZXIg
Zm9yIHRyYW5zZm9ybSBmZWVkYmFjayBvdXRwdXQgYW5kIHN0YXJ0IHRyYW5zZm9ybSBmZWVkYmFj
aworICAgIGdsQmluZEJ1ZmZlckJhc2UoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCwg
bVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyKTsKKyAgICBnbEJlZ2luVHJhbnNmb3JtRmVlZGJhY2so
R0xfUE9JTlRTKTsKKworICAgIC8vIENyZWF0ZSBhIHF1ZXJ5IHRvIGNoZWNrIGhvdyBtYW55IHBy
aW1pdGl2ZXMgd2VyZSB3cml0dGVuCisgICAgR0x1aW50IHByaW1pdGl2ZXNXcml0dGVuUXVlcnkg
PSAwOworICAgIGdsR2VuUXVlcmllcygxLCAmcHJpbWl0aXZlc1dyaXR0ZW5RdWVyeSk7CisgICAg
Z2xCZWdpblF1ZXJ5KEdMX1RSQU5TRk9STV9GRUVEQkFDS19QUklNSVRJVkVTX1dSSVRURU4sIHBy
aW1pdGl2ZXNXcml0dGVuUXVlcnkpOworCisgICAgZ2xEcmF3QXJyYXlzKEdMX1BPSU5UUywgMCwg
Nik7CisKKyAgICBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxvY2F0aW9uKTsK
KyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25Mb2NhdGlvbiwgNCwgR0xfRkxPQVQs
IEdMX0ZBTFNFLCAwLCBOVUxMKTsKKyAgICAvLyBFbmQgdGhlIHF1ZXJ5IGFuZCB0cmFuc2Zvcm0g
ZmVlZGtiYWNrCisgICAgZ2xFbmRRdWVyeShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlUSVZF
U19XUklUVEVOKTsKKyAgICBnbEVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7CisKKyAgICBnbEJpbmRC
dWZmZXJCYXNlKEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIDApOworCisgICAgZ2xE
aXNhYmxlKEdMX1JBU1RFUklaRVJfRElTQ0FSRCk7CisKKyAgICAvLyBDaGVjayBob3cgbWFueSBw
cmltaXRpdmVzIHdlcmUgd3JpdHRlbiBhbmQgdmVyaWZ5IHRoYXQgc29tZSB3ZXJlIHdyaXR0ZW4g
ZXZlbiBpZgorICAgIC8vIG5vIHBpeGVscyB3ZXJlIHJlbmRlcmVkCisgICAgR0x1aW50IHByaW1p
dGl2ZXNXcml0dGVuID0gMDsKKyAgICBnbEdldFF1ZXJ5T2JqZWN0dWl2KHByaW1pdGl2ZXNXcml0
dGVuUXVlcnksIEdMX1FVRVJZX1JFU1VMVF9FWFQsICZwcmltaXRpdmVzV3JpdHRlbik7CisgICAg
RVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBFWFBFQ1RfRVEoNnUsIHByaW1pdGl2ZXNXcml0
dGVuKTsKKworICAgIC8vIE5vdGhpbmcgc2hvdWxkIGhhdmUgYmVlbiBkcmF3biB0byB0aGUgZnJh
bWVidWZmZXIKKyAgICBFWFBFQ1RfUElYRUxfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdp
bmRvd0hlaWdodCgpIC8gMiwgMCwgMCwgMCwgMCk7CisKKyAgICAvLyBTZWNvbmQgcGFzczogZHJh
dyBmcm9tIHRoZSBmZWVkYmFjayBidWZmZXIKKworICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9C
VUZGRVIsIG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcik7CisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2lu
dGVyKHBvc2l0aW9uTG9jYXRpb24sIDQsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgMCk7CisgICAg
Z2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxvY2F0aW9uKTsKKworICAgIGdsRHJh
d0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDYpOworCisgICAgRVhQRUNUX1BJWEVMX0VRKGdldFdp
bmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIDI1NSwgICAwLCAgIDAsIDI1
NSk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFRlc3QgdGhhdCBidWZmZXIg
YmluZGluZyBoYXBwZW5zIG9ubHkgb24gdGhlIGN1cnJlbnQgdHJhbnNmb3JtIGZlZWRiYWNrIG9i
amVjdAorVEVTVF9QKFRyYW5zZm9ybUZlZWRiYWNrVGVzdCwgQnVmZmVyQmluZGluZykKK3sKKyAg
ICAvLyBSZXNldCBhbnkgc3RhdGUKKyAgICBnbEJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHTF9UUkFO
U0ZPUk1fRkVFREJBQ0ssIDApOworICAgIGdsQmluZEJ1ZmZlcihHTF9UUkFOU0ZPUk1fRkVFREJB
Q0tfQlVGRkVSLCAwKTsKKworICAgIC8vIEdlbmVyYXRlIGEgbmV3IGJ1ZmZlcgorICAgIEdMdWlu
dCBzY3JhdGNoQnVmZmVyID0gMDsKKyAgICBnbEdlbkJ1ZmZlcnMoMSwgJnNjcmF0Y2hCdWZmZXIp
OworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBCaW5kIFRGIDAgYW5kIGEg
YnVmZmVyCisgICAgZ2xCaW5kVHJhbnNmb3JtRmVlZGJhY2soR0xfVFJBTlNGT1JNX0ZFRURCQUNL
LCAwKTsKKyAgICBnbEJpbmRCdWZmZXIoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgbVRy
YW5zZm9ybUZlZWRiYWNrQnVmZmVyKTsKKworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisg
ICAgLy8gQ2hlY2sgdGhhdCB0aGUgYnVmZmVyIElEIG1hdGNoZXMgdGhlIG9uZSB0aGF0IHdhcyBq
dXN0IGJvdW5kCisgICAgR0xpbnQgY3VycmVudEJ1ZmZlckJpbmRpbmcgPSAwOworICAgIGdsR2V0
SW50ZWdlcnYoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HLCAmY3VycmVudEJ1
ZmZlckJpbmRpbmcpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxHTHVpbnQ+KGN1cnJlbnRC
dWZmZXJCaW5kaW5nKSwgbVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyKTsKKworICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworCisgICAgLy8gQ2hlY2sgdGhhdCB0aGUgYnVmZmVyIElEIGZvciB0aGUg
bmV3bHkgYm91bmQgdHJhbnNmb3JtIGZlZWRiYWNrIGlzIHplcm8KKyAgICBnbEJpbmRUcmFuc2Zv
cm1GZWVkYmFjayhHTF9UUkFOU0ZPUk1fRkVFREJBQ0ssIG1UcmFuc2Zvcm1GZWVkYmFjayk7CisK
KyAgICBnbEdldEludGVnZXJ2KEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklORElORywg
JmN1cnJlbnRCdWZmZXJCaW5kaW5nKTsKKyAgICBFWFBFQ1RfRVEoMCwgY3VycmVudEJ1ZmZlckJp
bmRpbmcpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBCaW5kIGEgYnVm
ZmVyIHRvIHRoaXMgVEYKKyAgICBnbEJpbmRCdWZmZXJSYW5nZShHTF9UUkFOU0ZPUk1fRkVFREJB
Q0tfQlVGRkVSLCAwLCBzY3JhdGNoQnVmZmVyLCAwLCAzMik7CisKKyAgICBnbEdldEludGVnZXJp
X3YoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HLCAwLCAmY3VycmVudEJ1ZmZl
ckJpbmRpbmcpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxHTHVpbnQ+KGN1cnJlbnRCdWZm
ZXJCaW5kaW5nKSwgc2NyYXRjaEJ1ZmZlcik7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
KworICAgIC8vIFJlYmluZCB0aGUgb3JpZ2luYWwgVEYgYW5kIGNoZWNrIGl0J3MgYmluZGluZ3MK
KyAgICBnbEJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHTF9UUkFOU0ZPUk1fRkVFREJBQ0ssIDApOwor
CisgICAgZ2xHZXRJbnRlZ2VyaV92KEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklORElO
RywgMCwgJmN1cnJlbnRCdWZmZXJCaW5kaW5nKTsKKyAgICBFWFBFQ1RfRVEoMCwgY3VycmVudEJ1
ZmZlckJpbmRpbmcpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBDbGVh
biB1cAorICAgIGdsRGVsZXRlQnVmZmVycygxLCAmc2NyYXRjaEJ1ZmZlcik7Cit9CisKKy8vIFRl
c3QgdGhhdCB3ZSBjYW4gY2FwdHVyZSB2YXJ5aW5ncyBvbmx5IHVzZWQgaW4gdGhlIHZlcnRleCBz
aGFkZXIuCitURVNUX1AoVHJhbnNmb3JtRmVlZGJhY2tUZXN0LCBWZXJ0ZXhPbmx5KQoreworICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZ2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQorICAgICAgICAiI3ZlcnNp
b24gMzAwIGVzXG4iCisgICAgICAgICJpbiB2ZWMyIHBvc2l0aW9uO1xuIgorICAgICAgICAiaW4g
ZmxvYXQgYXR0cmliO1xuIgorICAgICAgICAib3V0IGZsb2F0IHZhcnlpbmdBdHRyaWI7XG4iCisg
ICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgIGdsX1Bvc2l0aW9uID0gdmVjNChw
b3NpdGlvbiwgMCwgMSk7XG4iCisgICAgICAgICIgIHZhcnlpbmdBdHRyaWIgPSBhdHRyaWI7XG4i
CisgICAgICAgICJ9IjsKKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnbWVudFNoYWRlclNv
dXJjZSA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgIm91dCBtZWRpdW1w
IHZlYzQgY29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgIGNv
bG9yID0gdmVjNCgwLjAsIDEuMCwgMC4wLCAxLjApO1xuIgorICAgICAgICAifSI7CisKKyAgICBz
dGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdGZWYXJ5aW5nczsKKyAgICB0ZlZhcnlpbmdzLnB1c2hf
YmFjaygidmFyeWluZ0F0dHJpYiIpOworCisgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbVdp
dGhUcmFuc2Zvcm1GZWVkYmFjayh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291
cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGZWYXJ5aW5ncywgR0xfSU5URVJMRUFWRURfQVRUUklCUyk7CisgICAgQVNTRVJUX05FKDB1LCBt
UHJvZ3JhbSk7CisKKyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworCisgICAgZ2xCaW5kVHJh
bnNmb3JtRmVlZGJhY2soR0xfVFJBTlNGT1JNX0ZFRURCQUNLLCBtVHJhbnNmb3JtRmVlZGJhY2sp
OworICAgIGdsQmluZEJ1ZmZlckJhc2UoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCwg
bVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyKTsKKworICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiBhdHRy
aWJEYXRhOworICAgIGZvciAodW5zaWduZWQgaW50IGNudCA9IDA7IGNudCA8IDEwMDsgKytjbnQp
CisgICAgeworICAgICAgICBhdHRyaWJEYXRhLnB1c2hfYmFjayhzdGF0aWNfY2FzdDxmbG9hdD4o
Y250KSk7CisgICAgfQorCisgICAgR0xpbnQgYXR0cmliTG9jYXRpb24gPSBnbEdldEF0dHJpYkxv
Y2F0aW9uKG1Qcm9ncmFtLCAiYXR0cmliIik7CisgICAgQVNTRVJUX05FKC0xLCBhdHRyaWJMb2Nh
dGlvbik7CisKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoYXR0cmliTG9jYXRpb24sIDEsIEdM
X0ZMT0FULCBHTF9GQUxTRSwgNCwgJmF0dHJpYkRhdGFbMF0pOworICAgIGdsRW5hYmxlVmVydGV4
QXR0cmliQXJyYXkoYXR0cmliTG9jYXRpb24pOworCisgICAgZ2xCZWdpblRyYW5zZm9ybUZlZWRi
YWNrKEdMX1RSSUFOR0xFUyk7CisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAu
NWYpOworICAgIGdsRW5kVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKKworICAgIGdsVXNlUHJvZ3JhbSgwKTsKKworICAgIEdMdm9pZCAqbWFwcGVkQnVmZmVy
ID0KKyAgICAgICAgZ2xNYXBCdWZmZXJSYW5nZShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVS
LCAwLCBzaXplb2YoZmxvYXQpICogNiwgR0xfTUFQX1JFQURfQklUKTsKKyAgICBBU1NFUlRfTkUo
bnVsbHB0ciwgbWFwcGVkQnVmZmVyKTsKKworICAgIGZsb2F0ICptYXBwZWRGbG9hdHMgPSBzdGF0
aWNfY2FzdDxmbG9hdCAqPihtYXBwZWRCdWZmZXIpOworICAgIGZvciAodW5zaWduZWQgaW50IGNu
dCA9IDA7IGNudCA8IDY7ICsrY250KQorICAgIHsKKyAgICAgICAgRVhQRUNUX0VRKGF0dHJpYkRh
dGFbY250XSwgbWFwcGVkRmxvYXRzW2NudF0pOworICAgIH0KKworICAgIEVYUEVDVF9HTF9OT19F
UlJPUigpOworfQorCisvLyBUZXN0IHRoYXQgbXVsdGlwbGUgcGF1c2VkIHRyYW5zZm9ybSBmZWVk
YmFja3MgZG8gbm90IGdlbmVyYXRlIGVycm9ycyBvciBjcmFzaAorVEVTVF9QKFRyYW5zZm9ybUZl
ZWRiYWNrVGVzdCwgTXVsdGlwbGVQYXVzZWQpCit7CisgICAgY29uc3Qgc2l6ZV90IGRyYXdTaXpl
ID0gMTAyNDsKKyAgICBzdGQ6OnZlY3RvcjxmbG9hdD4gdHJhbnNmb3JtRmVlZGJhY2tEYXRhKGRy
YXdTaXplKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRyYXdTaXplOyBpKyspCisgICAg
eworICAgICAgICB0cmFuc2Zvcm1GZWVkYmFja0RhdGFbaV0gPSBzdGF0aWNfY2FzdDxmbG9hdD4o
aSArIDEpOworICAgIH0KKworICAgIC8vIEluaXRpYWxpemUgdGhlIGJ1ZmZlcnMgdG8gemVybwor
ICAgIHNpemVfdCBidWZmZXJTaXplID0gZHJhd1NpemU7CisgICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+
IGJ1ZmZlckluaXRpYWxEYXRhKGJ1ZmZlclNpemUsIDApOworCisgICAgY29uc3Qgc2l6ZV90IHRy
YW5zZm9ybUZlZWRiYWNrQ291bnQgPSA4OworCisgICAgLy8gY2xhbmctZm9ybWF0IG9mZgorICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAg
ICAoICAjdmVyc2lvbiAzMDAgZXNcbgorICAgICAgIGluIGhpZ2hwIHZlYzQgcG9zaXRpb247Cisg
ICAgICAgaW4gZmxvYXQgdHJhbnNmb3JtRmVlZGJhY2tJbnB1dDsKKyAgICAgICBvdXQgZmxvYXQg
dHJhbnNmb3JtRmVlZGJhY2tPdXRwdXQ7CisgICAgICAgdm9pZCBtYWluKHZvaWQpCisgICAgICAg
eworICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOworICAgICAgICAgICB0cmFuc2Zv
cm1GZWVkYmFja091dHB1dCA9IHRyYW5zZm9ybUZlZWRiYWNrSW5wdXQ7CisgICAgICAgfQorICAg
ICk7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9IFNIQURF
Ul9TT1VSQ0UKKyAgICAoICAjdmVyc2lvbiAzMDAgZXNcbgorICAgICAgIG91dCBtZWRpdW1wIHZl
YzQgY29sb3I7CisgICAgICAgdm9pZCBtYWluKHZvaWQpCisgICAgICAgeworICAgICAgICAgICBj
b2xvciA9IHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKTsKKyAgICAgICB9CisgICAgKTsKKyAgICAv
LyBjbGFuZy1mb3JtYXQgb24KKworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB0ZlZhcnlp
bmdzOworICAgIHRmVmFyeWluZ3MucHVzaF9iYWNrKCJ0cmFuc2Zvcm1GZWVkYmFja091dHB1dCIp
OworCisgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbVdpdGhUcmFuc2Zvcm1GZWVkYmFjayh2
ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGZWYXJ5aW5ncywgR0xfSU5URVJM
RUFWRURfQVRUUklCUyk7CisgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7CisgICAgZ2xVc2VQ
cm9ncmFtKG1Qcm9ncmFtKTsKKworICAgIEdMaW50IHBvc2l0aW9uTG9jYXRpb24gPSBnbEdldEF0
dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAicG9zaXRpb24iKTsKKyAgICBnbERpc2FibGVWZXJ0ZXhB
dHRyaWJBcnJheShwb3NpdGlvbkxvY2F0aW9uKTsKKyAgICBnbFZlcnRleEF0dHJpYjRmKHBvc2l0
aW9uTG9jYXRpb24sIDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOworCisgICAgR0xpbnQgdGZJbnB1
dExvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgInRyYW5zZm9ybUZlZWRi
YWNrSW5wdXQiKTsKKyAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHRmSW5wdXRMb2NhdGlv
bik7CisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHRmSW5wdXRMb2NhdGlvbiwgMSwgR0xfRkxP
QVQsIGZhbHNlLCAwLCAmdHJhbnNmb3JtRmVlZGJhY2tEYXRhWzBdKTsKKworICAgIGdsRGVwdGhN
YXNrKEdMX0ZBTFNFKTsKKyAgICBnbEVuYWJsZShHTF9ERVBUSF9URVNUKTsKKyAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKKworICAgIEdMdWludCB0cmFuc2Zvcm1GZWVkYmFja3NbdHJhbnNmb3Jt
RmVlZGJhY2tDb3VudF07CisgICAgZ2xHZW5UcmFuc2Zvcm1GZWVkYmFja3ModHJhbnNmb3JtRmVl
ZGJhY2tDb3VudCwgdHJhbnNmb3JtRmVlZGJhY2tzKTsKKworICAgIEdMdWludCBidWZmZXJzW3Ry
YW5zZm9ybUZlZWRiYWNrQ291bnRdOworICAgIGdsR2VuQnVmZmVycyh0cmFuc2Zvcm1GZWVkYmFj
a0NvdW50LCBidWZmZXJzKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhbnNmb3Jt
RmVlZGJhY2tDb3VudDsgaSsrKQorICAgIHsKKyAgICAgICAgZ2xCaW5kVHJhbnNmb3JtRmVlZGJh
Y2soR0xfVFJBTlNGT1JNX0ZFRURCQUNLLCB0cmFuc2Zvcm1GZWVkYmFja3NbaV0pOworCisgICAg
ICAgIGdsQmluZEJ1ZmZlcihHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBidWZmZXJzW2ld
KTsKKyAgICAgICAgZ2xCdWZmZXJEYXRhKEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIGJ1
ZmZlclNpemUgKiBzaXplb2YoR0xmbG9hdCksCisgICAgICAgICAgICAgICAgICAgICAmYnVmZmVy
SW5pdGlhbERhdGFbMF0sIEdMX0RZTkFNSUNfRFJBVyk7CisgICAgICAgIGdsQmluZEJ1ZmZlckJh
c2UoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCwgYnVmZmVyc1tpXSk7CisgICAgICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgICAgIGdsQmVnaW5UcmFuc2Zvcm1GZWVkYmFj
ayhHTF9QT0lOVFMpOworCisgICAgICAgIGdsRHJhd0FycmF5cyhHTF9QT0lOVFMsIDAsIHN0YXRp
Y19jYXN0PEdMc2l6ZWk+KGRyYXdTaXplKSk7CisKKyAgICAgICAgZ2xQYXVzZVRyYW5zZm9ybUZl
ZWRiYWNrKCk7CisKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgfQorCisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFuc2Zvcm1GZWVkYmFja0NvdW50OyBpKyspCisgICAg
eworICAgICAgICBnbEJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHTF9UUkFOU0ZPUk1fRkVFREJBQ0ss
IHRyYW5zZm9ybUZlZWRiYWNrc1tpXSk7CisgICAgICAgIGdsRW5kVHJhbnNmb3JtRmVlZGJhY2so
KTsKKyAgICAgICAgZ2xEZWxldGVUcmFuc2Zvcm1GZWVkYmFja3MoMSwgJnRyYW5zZm9ybUZlZWRi
YWNrc1tpXSk7CisKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgfQorfQorLy8g
VGVzdCB0aGF0IHJ1bm5pbmcgbXVsdGlwbGUgc2ltdWx0YW5lb3VzIHF1ZXJpZXMgYW5kIHRyYW5z
Zm9ybSBmZWVkYmFja3MgZnJvbSBtdWx0aXBsZSBFR0wKKy8vIGNvbnRleHRzIHJldHVybnMgdGhl
IGNvcnJlY3QgcmVzdWx0cy4gIEhlbHBzIGV4cG9zZSBidWdzIGluIEFOR0xFJ3MgdmlydHVhbCBj
b250ZXh0cy4KK1RFU1RfUChUcmFuc2Zvcm1GZWVkYmFja1Rlc3QsIE11bHRpQ29udGV4dCkKK3sK
KyNpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0FQUExFKQorICAgIGlmICgoSXNOVklESUEoKSB8
fCBJc0FNRCgpKSAmJiBHZXRQYXJhbSgpID09IEVTM19PUEVOR0woKSkKKyAgICB7CisgICAgICAg
IHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIE5WaWRpYSBhbmQgQU1EIE9wZW5HTCBvbiBP
U1guIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworI2lm
IGRlZmluZWQoQU5HTEVfUExBVEZPUk1fTElOVVgpCisgICAgaWYgKElzQU1EKCkgJiYgR2V0UGFy
YW0oKSA9PSBFUzNfT1BFTkdMKCkpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qg
c2tpcHBlZCBvbiBBTUQgT3BlbkdMIG9uIExpbnV4LiIgPDwgc3RkOjplbmRsOworICAgICAgICBy
ZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAgICBFR0xpbnQgY29udGV4dEF0dHJpYnV0ZXNbXSA9
IHsKKyAgICAgICAgRUdMX0NPTlRFWFRfTUFKT1JfVkVSU0lPTl9LSFIsCisgICAgICAgIEdldFBh
cmFtKCkubWFqb3JWZXJzaW9uLAorICAgICAgICBFR0xfQ09OVEVYVF9NSU5PUl9WRVJTSU9OX0tI
UiwKKyAgICAgICAgR2V0UGFyYW0oKS5taW5vclZlcnNpb24sCisgICAgICAgIEVHTF9OT05FLAor
ICAgIH07CisKKyAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygpOworCisgICAg
RUdMRGlzcGxheSBkaXNwbGF5ID0gd2luZG93LT5nZXREaXNwbGF5KCk7CisgICAgRUdMQ29uZmln
IGNvbmZpZyAgID0gd2luZG93LT5nZXRDb25maWcoKTsKKyAgICBFR0xTdXJmYWNlIHN1cmZhY2Ug
PSB3aW5kb3ctPmdldFN1cmZhY2UoKTsKKworICAgIGNvbnN0IHNpemVfdCBwYXNzQ291bnQgPSA1
OworICAgIHN0cnVjdCBDb250ZXh0SW5mbworICAgIHsKKyAgICAgICAgRUdMQ29udGV4dCBjb250
ZXh0OworICAgICAgICBHTHVpbnQgcHJvZ3JhbTsKKyAgICAgICAgR0x1aW50IHF1ZXJ5OworICAg
ICAgICBHTHVpbnQgYnVmZmVyOworICAgICAgICBzaXplX3QgcHJpbWl0aXZlQ291bnRzW3Bhc3ND
b3VudF07CisgICAgfTsKKyAgICBDb250ZXh0SW5mbyBjb250ZXh0c1szMl07CisKKyAgICBjb25z
dCBzaXplX3QgbWF4RHJhd1NpemUgPSAxMDI0OworCisgICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IHRy
YW5zZm9ybUZlZWRiYWNrRGF0YShtYXhEcmF3U2l6ZSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtYXhEcmF3U2l6ZTsgaSsrKQorICAgIHsKKyAgICAgICAgdHJhbnNmb3JtRmVlZGJhY2tE
YXRhW2ldID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGkgKyAxKTsKKyAgICB9CisKKyAgICAvLyBJbml0
aWFsaXplIHRoZSBidWZmZXJzIHRvIHplcm8KKyAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IG1heERy
YXdTaXplICogcGFzc0NvdW50OworICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiBidWZmZXJJbml0aWFs
RGF0YShidWZmZXJTaXplLCAwKTsKKworICAgIGZvciAoYXV0byAmY29udGV4dCA6IGNvbnRleHRz
KQorICAgIHsKKyAgICAgICAgY29udGV4dC5jb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNw
bGF5LCBjb25maWcsIEVHTF9OT19DT05URVhULCBjb250ZXh0QXR0cmlidXRlcyk7CisgICAgICAg
IEFTU0VSVF9ORShjb250ZXh0LmNvbnRleHQsIEVHTF9OT19DT05URVhUKTsKKworICAgICAgICBl
Z2xNYWtlQ3VycmVudChkaXNwbGF5LCBzdXJmYWNlLCBzdXJmYWNlLCBjb250ZXh0LmNvbnRleHQp
OworCisgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgdmVydGV4U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQorICAgICAgICAoICAgI3ZlcnNp
b24gMzAwIGVzXG4KKyAgICAgICAgICAgIGluIGhpZ2hwIHZlYzQgcG9zaXRpb247CisgICAgICAg
ICAgICBpbiBmbG9hdCB0cmFuc2Zvcm1GZWVkYmFja0lucHV0OworICAgICAgICAgICAgb3V0IGZs
b2F0IHRyYW5zZm9ybUZlZWRiYWNrT3V0cHV0OworICAgICAgICAgICAgdm9pZCBtYWluKHZvaWQp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjsK
KyAgICAgICAgICAgICAgICB0cmFuc2Zvcm1GZWVkYmFja091dHB1dCA9IHRyYW5zZm9ybUZlZWRi
YWNrSW5wdXQ7CisgICAgICAgICAgICB9CisgICAgICAgICk7CisKKyAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCisgICAgICAgICgg
ICAjdmVyc2lvbiAzMDAgZXNcbgorICAgICAgICAgICAgb3V0IG1lZGl1bXAgdmVjNCBjb2xvcjsK
KyAgICAgICAgICAgIHZvaWQgbWFpbih2b2lkKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGNvbG9yID0gdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjApOworICAgICAgICAgICAgfQorICAg
ICAgICApOworICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb24KKworICAgICAgICBzdGQ6OnZlY3Rv
cjxzdGQ6OnN0cmluZz4gdGZWYXJ5aW5nczsKKyAgICAgICAgdGZWYXJ5aW5ncy5wdXNoX2JhY2so
InRyYW5zZm9ybUZlZWRiYWNrT3V0cHV0Iik7CisKKyAgICAgICAgY29udGV4dC5wcm9ncmFtID0g
Q29tcGlsZVByb2dyYW1XaXRoVHJhbnNmb3JtRmVlZGJhY2soCisgICAgICAgICAgICB2ZXJ0ZXhT
aGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlLCB0ZlZhcnlpbmdzLCBHTF9JTlRFUkxF
QVZFRF9BVFRSSUJTKTsKKyAgICAgICAgQVNTRVJUX05FKGNvbnRleHQucHJvZ3JhbSwgMHUpOwor
ICAgICAgICBnbFVzZVByb2dyYW0oY29udGV4dC5wcm9ncmFtKTsKKworICAgICAgICBHTGludCBw
b3NpdGlvbkxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihjb250ZXh0LnByb2dyYW0sICJw
b3NpdGlvbiIpOworICAgICAgICBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxv
Y2F0aW9uKTsKKyAgICAgICAgZ2xWZXJ0ZXhBdHRyaWI0Zihwb3NpdGlvbkxvY2F0aW9uLCAwLjBm
LCAwLjBmLCAwLjBmLCAxLjBmKTsKKworICAgICAgICBHTGludCB0ZklucHV0TG9jYXRpb24gPSBn
bEdldEF0dHJpYkxvY2F0aW9uKGNvbnRleHQucHJvZ3JhbSwgInRyYW5zZm9ybUZlZWRiYWNrSW5w
dXQiKTsKKyAgICAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh0ZklucHV0TG9jYXRpb24p
OworICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIodGZJbnB1dExvY2F0aW9uLCAxLCBHTF9G
TE9BVCwgZmFsc2UsIDAsICZ0cmFuc2Zvcm1GZWVkYmFja0RhdGFbMF0pOworCisgICAgICAgIGds
RGVwdGhNYXNrKEdMX0ZBTFNFKTsKKyAgICAgICAgZ2xFbmFibGUoR0xfREVQVEhfVEVTVCk7Cisg
ICAgICAgIGdsR2VuUXVlcmllc0VYVCgxLCAmY29udGV4dC5xdWVyeSk7CisgICAgICAgIGdsQmVn
aW5RdWVyeUVYVChHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlUSVZFU19XUklUVEVOLCBjb250
ZXh0LnF1ZXJ5KTsKKworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgICAgICBn
bEdlbkJ1ZmZlcnMoMSwgJmNvbnRleHQuYnVmZmVyKTsKKyAgICAgICAgZ2xCaW5kQnVmZmVyKEdM
X1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIGNvbnRleHQuYnVmZmVyKTsKKyAgICAgICAgZ2xC
dWZmZXJEYXRhKEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIGJ1ZmZlclNpemUgKiBzaXpl
b2YoR0xmbG9hdCksCisgICAgICAgICAgICAgICAgICAgICAmYnVmZmVySW5pdGlhbERhdGFbMF0s
IEdMX0RZTkFNSUNfRFJBVyk7CisgICAgICAgIGdsQmluZEJ1ZmZlckJhc2UoR0xfVFJBTlNGT1JN
X0ZFRURCQUNLX0JVRkZFUiwgMCwgY29udGV4dC5idWZmZXIpOworCisgICAgICAgIEFTU0VSVF9H
TF9OT19FUlJPUigpOworCisgICAgICAgIC8vIEZvciBlYWNoIHBhc3MsIGRyYXcgYmV0d2VlbiAw
IGFuZCBtYXhEcmF3U2l6ZSBwcmltaXRpdmVzCisgICAgICAgIGZvciAoYXV0byAmcHJpbUNvdW50
IDogY29udGV4dC5wcmltaXRpdmVDb3VudHMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHByaW1D
b3VudCA9IHJhbmQoKSAlIG1heERyYXdTaXplOworICAgICAgICB9CisKKyAgICAgICAgZ2xCZWdp
blRyYW5zZm9ybUZlZWRiYWNrKEdMX1BPSU5UUyk7CisgICAgfQorCisgICAgZm9yIChzaXplX3Qg
cGFzcyA9IDA7IHBhc3MgPCBwYXNzQ291bnQ7IHBhc3MrKykKKyAgICB7CisgICAgICAgIGZvciAo
Y29uc3QgYXV0byAmY29udGV4dCA6IGNvbnRleHRzKQorICAgICAgICB7CisgICAgICAgICAgICBl
Z2xNYWtlQ3VycmVudChkaXNwbGF5LCBzdXJmYWNlLCBzdXJmYWNlLCBjb250ZXh0LmNvbnRleHQp
OworCisgICAgICAgICAgICBnbERyYXdBcnJheXMoR0xfUE9JTlRTLCAwLCBzdGF0aWNfY2FzdDxH
THNpemVpPihjb250ZXh0LnByaW1pdGl2ZUNvdW50c1twYXNzXSkpOworICAgICAgICB9CisgICAg
fQorCisgICAgZm9yIChjb25zdCBhdXRvICZjb250ZXh0IDogY29udGV4dHMpCisgICAgeworICAg
ICAgICBlZ2xNYWtlQ3VycmVudChkaXNwbGF5LCBzdXJmYWNlLCBzdXJmYWNlLCBjb250ZXh0LmNv
bnRleHQpOworCisgICAgICAgIGdsRW5kVHJhbnNmb3JtRmVlZGJhY2soKTsKKworICAgICAgICBn
bEVuZFF1ZXJ5RVhUKEdMX1RSQU5TRk9STV9GRUVEQkFDS19QUklNSVRJVkVTX1dSSVRURU4pOwor
CisgICAgICAgIEdMdWludCByZXN1bHQgPSAwOworICAgICAgICBnbEdldFF1ZXJ5T2JqZWN0dWl2
RVhUKGNvbnRleHQucXVlcnksIEdMX1FVRVJZX1JFU1VMVF9FWFQsICZyZXN1bHQpOworCisgICAg
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgICAgIHNpemVfdCB0b3RhbFByaW1Db3Vu
dCA9IDA7CisgICAgICAgIGZvciAoY29uc3QgYXV0byAmcHJpbUNvdW50IDogY29udGV4dC5wcmlt
aXRpdmVDb3VudHMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRvdGFsUHJpbUNvdW50ICs9IHBy
aW1Db3VudDsKKyAgICAgICAgfQorICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8R0x1aW50
Pih0b3RhbFByaW1Db3VudCksIHJlc3VsdCk7CisKKyAgICAgICAgY29uc3QgZmxvYXQgKmJ1ZmZl
ckRhdGEgPSByZWludGVycHJldF9jYXN0PGZsb2F0ICo+KGdsTWFwQnVmZmVyUmFuZ2UoCisgICAg
ICAgICAgICBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAwLCBidWZmZXJTaXplICogc2l6
ZW9mKEdMZmxvYXQpLCBHTF9NQVBfUkVBRF9CSVQpKTsKKworICAgICAgICBzaXplX3QgY3VyQnVm
ZmVySW5kZXggPSAwOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8gJnByaW1Db3VudCA6IGNvbnRl
eHQucHJpbWl0aXZlQ291bnRzKQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBw
cmltID0gMDsgcHJpbSA8IHByaW1Db3VudDsgcHJpbSsrKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIEVYUEVDVF9FUShidWZmZXJEYXRhW2N1ckJ1ZmZlckluZGV4XSwgcHJpbSArIDEp
OworICAgICAgICAgICAgICAgIGN1ckJ1ZmZlckluZGV4Kys7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICB3aGlsZSAoY3VyQnVmZmVySW5kZXggPCBidWZmZXJTaXplKQorICAg
ICAgICB7CisgICAgICAgICAgICBFWFBFQ1RfRVEoYnVmZmVyRGF0YVtjdXJCdWZmZXJJbmRleF0s
IDAuMGYpOworICAgICAgICAgICAgY3VyQnVmZmVySW5kZXgrKzsKKyAgICAgICAgfQorCisgICAg
ICAgIGdsVW5tYXBCdWZmZXIoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUik7CisgICAgfQor
CisgICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwgc3VyZmFjZSwgc3VyZmFjZSwgd2luZG93LT5n
ZXRDb250ZXh0KCkpOworCisgICAgZm9yIChhdXRvICZjb250ZXh0IDogY29udGV4dHMpCisgICAg
eworICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBjb250ZXh0LmNvbnRleHQpOwor
ICAgICAgICBjb250ZXh0LmNvbnRleHQgPSBFR0xfTk9fQ09OVEVYVDsKKyAgICB9Cit9CisKKy8v
IFRlc3QgdGhhdCB3aGVuIHR3byB2ZWMycyBhcmUgcGFja2VkIGludG8gdGhlIHNhbWUgcmVnaXN0
ZXIsIHdlIGNhbiBzdGlsbCBjYXB0dXJlIGJvdGggb2YgdGhlbS4KK1RFU1RfUChUcmFuc2Zvcm1G
ZWVkYmFja1Rlc3QsIFBhY2tpbmdCdWcpCit7CisgICAgLy8gVE9ETyhqbWFkaWxsKTogV2l0aCBw
b2ludHMgYW5kIHJhc3Rlcml6ZXIgZGlzY2FyZD8KKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmVy
dGV4U2hhZGVyU291cmNlID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAi
aW4gdmVjMiBpbkF0dHJpYjE7XG4iCisgICAgICAgICJpbiB2ZWMyIGluQXR0cmliMjtcbiIKKyAg
ICAgICAgIm91dCB2ZWMyIG91dEF0dHJpYjE7XG4iCisgICAgICAgICJvdXQgdmVjMiBvdXRBdHRy
aWIyO1xuIgorICAgICAgICAiaW4gdmVjMiBwb3NpdGlvbjtcbiIKKyAgICAgICAgInZvaWQgbWFp
bigpIHsiCisgICAgICAgICIgIG91dEF0dHJpYjEgPSBpbkF0dHJpYjE7XG4iCisgICAgICAgICIg
IG91dEF0dHJpYjIgPSBpbkF0dHJpYjI7XG4iCisgICAgICAgICIgIGdsX1Bvc2l0aW9uID0gdmVj
NChwb3NpdGlvbiwgMCwgMSk7XG4iCisgICAgICAgICJ9IjsKKworICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZmcmFnbWVudFNoYWRlclNvdXJjZSA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIK
KyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0IHZlYzQg
Y29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgIGNvbG9yID0g
dmVjNCgwKTtcbiIKKyAgICAgICAgIn0iOworCisgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
IHRmVmFyeWluZ3M7CisgICAgdGZWYXJ5aW5ncy5wdXNoX2JhY2soIm91dEF0dHJpYjEiKTsKKyAg
ICB0ZlZhcnlpbmdzLnB1c2hfYmFjaygib3V0QXR0cmliMiIpOworCisgICAgbVByb2dyYW0gPSBD
b21waWxlUHJvZ3JhbVdpdGhUcmFuc2Zvcm1GZWVkYmFjayh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZy
YWdtZW50U2hhZGVyU291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGZWYXJ5aW5ncywgR0xfSU5URVJMRUFWRURfQVRUUklCUyk7CisgICAg
QVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7CisKKyAgICBnbEJpbmRCdWZmZXIoR0xfVFJBTlNGT1JN
X0ZFRURCQUNLX0JVRkZFUiwgbVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyKTsKKyAgICBnbEJ1ZmZl
ckRhdGEoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgc2l6ZW9mKFZlY3RvcjIpICogMiAq
IDYsIG51bGxwdHIsIEdMX1NUUkVBTV9EUkFXKTsKKworICAgIGdsQmluZFRyYW5zZm9ybUZlZWRi
YWNrKEdMX1RSQU5TRk9STV9GRUVEQkFDSywgbVRyYW5zZm9ybUZlZWRiYWNrKTsKKyAgICBnbEJp
bmRCdWZmZXJCYXNlKEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIG1UcmFuc2Zvcm1G
ZWVkYmFja0J1ZmZlcik7CisKKyAgICBHTGludCBhdHRyaWIxTG9jID0gZ2xHZXRBdHRyaWJMb2Nh
dGlvbihtUHJvZ3JhbSwgImluQXR0cmliMSIpOworICAgIEdMaW50IGF0dHJpYjJMb2MgPSBnbEdl
dEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAiaW5BdHRyaWIyIik7CisKKyAgICBWZWN0b3IyIGF0
dHJpYjFEYXRhW10gPSB7VmVjdG9yMigxLjAsIDIuMCksIFZlY3RvcjIoMy4wLCA0LjApLCBWZWN0
b3IyKDUuMCwgNi4wKX07CisgICAgVmVjdG9yMiBhdHRyaWIyRGF0YVtdID0ge1ZlY3RvcjIoMTEu
MCwgMTIuMCksIFZlY3RvcjIoMTMuMCwgMTQuMCksIFZlY3RvcjIoMTUuMCwgMTYuMCl9OworCisg
ICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShhdHRyaWIxTG9jKTsKKyAgICBnbEVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KGF0dHJpYjJMb2MpOworCisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVy
KGF0dHJpYjFMb2MsIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgYXR0cmliMURhdGEpOworICAg
IGdsVmVydGV4QXR0cmliUG9pbnRlcihhdHRyaWIyTG9jLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0Us
IDAsIGF0dHJpYjJEYXRhKTsKKworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgZ2xC
ZWdpblRyYW5zZm9ybUZlZWRiYWNrKEdMX1RSSUFOR0xFUyk7CisgICAgZHJhd1F1YWQobVByb2dy
YW0sICJwb3NpdGlvbiIsIDAuNWYpOworICAgIGdsRW5kVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAg
ICBnbFVzZVByb2dyYW0oMCk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBjb25z
dCBHTHZvaWQgKm1hcFBvaW50ZXIgPQorICAgICAgICBnbE1hcEJ1ZmZlclJhbmdlKEdMX1RSQU5T
Rk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIHNpemVvZihWZWN0b3IyKSAqIDIgKiA2LCBHTF9NQVBf
UkVBRF9CSVQpOworICAgIEFTU0VSVF9ORShudWxscHRyLCBtYXBQb2ludGVyKTsKKworICAgIGNv
bnN0IFZlY3RvcjIgKnZlY1BvaW50ZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBWZWN0b3IyICo+KG1h
cFBvaW50ZXIpOworICAgIGZvciAodW5zaWduZWQgaW50IHZlY3RvckluZGV4ID0gMDsgdmVjdG9y
SW5kZXggPCAzOyArK3ZlY3RvckluZGV4KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IHN0
cmVhbTFJbmRleCA9IHZlY3RvckluZGV4ICogMjsKKyAgICAgICAgdW5zaWduZWQgaW50IHN0cmVh
bTJJbmRleCA9IHZlY3RvckluZGV4ICogMiArIDE7CisgICAgICAgIEVYUEVDVF9FUShhdHRyaWIx
RGF0YVt2ZWN0b3JJbmRleF0sIHZlY1BvaW50ZXJbc3RyZWFtMUluZGV4XSk7CisgICAgICAgIEVY
UEVDVF9FUShhdHRyaWIyRGF0YVt2ZWN0b3JJbmRleF0sIHZlY1BvaW50ZXJbc3RyZWFtMkluZGV4
XSk7CisgICAgfQorCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFRlc3QgdGhh
dCB0cmFuc2Zvcm0gZmVlZGJhY2sgdmFyeWluZ3MgdGhhdCBjYW4gYmUgb3B0aW1pemVkIG91dCB5
ZXQgZG8gbm90IGNhdXNlIHByb2dyYW0KKy8vIGNvbXBpbGF0aW9uIHRvIGZhaWwKK1RFU1RfUChU
cmFuc2Zvcm1GZWVkYmFja1Rlc3QsIE9wdGltaXplZFZhcnlpbmdzKQoreworICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZ2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVz
XG4iCisgICAgICAgICJpbiB2ZWM0IGFfdmVydGV4O1xuIgorICAgICAgICAiaW4gdmVjMyBhX25v
cm1hbDsgXG4iCisgICAgICAgICJcbiIKKyAgICAgICAgInVuaWZvcm0gVHJhbnNmb3JtXG4iCisg
ICAgICAgICJ7XG4iCisgICAgICAgICIgICAgbWF0NCB1X21vZGVsVmlld01hdHJpeDtcbiIKKyAg
ICAgICAgIiAgICBtYXQ0IHVfcHJvamVjdGlvbk1hdHJpeDtcbiIKKyAgICAgICAgIiAgICBtYXQz
IHVfbm9ybWFsTWF0cml4O1xuIgorICAgICAgICAifTtcbiIKKyAgICAgICAgIlxuIgorICAgICAg
ICAib3V0IHZlYzMgbm9ybWFsO1xuIgorICAgICAgICAib3V0IHZlYzQgZWNQb3NpdGlvbjtcbiIK
KyAgICAgICAgIlxuIgorICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAg
ICAgICAgIiAgICBub3JtYWwgPSBub3JtYWxpemUodV9ub3JtYWxNYXRyaXggKiBhX25vcm1hbCk7
XG4iCisgICAgICAgICIgICAgZWNQb3NpdGlvbiA9IHVfbW9kZWxWaWV3TWF0cml4ICogYV92ZXJ0
ZXg7XG4iCisgICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSB1X3Byb2plY3Rpb25NYXRyaXggKiBl
Y1Bvc2l0aW9uO1xuIgorICAgICAgICAifVxuIjsKKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZm
cmFnbWVudFNoYWRlclNvdXJjZSA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAg
ICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAiXG4iCisgICAgICAgICJp
biB2ZWMzIG5vcm1hbDtcbiIKKyAgICAgICAgImluIHZlYzQgZWNQb3NpdGlvbjtcbiIKKyAgICAg
ICAgIlxuIgorICAgICAgICAib3V0IHZlYzQgZnJhZ0NvbG9yO1xuIgorICAgICAgICAiXG4iCisg
ICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGZyYWdD
b2xvciA9IHZlYzQobm9ybWFsLzIuMCt2ZWMzKDAuNSksIDEpO1xuIgorICAgICAgICAifVxuIjsK
KworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB0ZlZhcnlpbmdzOworICAgIHRmVmFyeWlu
Z3MucHVzaF9iYWNrKCJub3JtYWwiKTsKKyAgICB0ZlZhcnlpbmdzLnB1c2hfYmFjaygiZWNQb3Np
dGlvbiIpOworCisgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbVdpdGhUcmFuc2Zvcm1GZWVk
YmFjayh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGZWYXJ5aW5ncywgR0xf
SU5URVJMRUFWRURfQVRUUklCUyk7CisgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7Cit9CisK
Ky8vIFRlc3QgYW4gZWRnZSBjYXNlIHdoZXJlIHR3byB2YXJ5aW5ncyBhcmUgdW5yZWZlcmVuY2Vk
IGluIHRoZSBmcmFnIHNoYWRlci4KK1RFU1RfUChUcmFuc2Zvcm1GZWVkYmFja1Rlc3QsIFR3b1Vu
cmVmZXJlbmNlZEluRnJhZ1NoYWRlcikKK3sKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBXaXRoIHBv
aW50cyBhbmQgcmFzdGVyaXplciBkaXNjYXJkPworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2ZXJ0
ZXhTaGFkZXJTb3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJp
biB2ZWMzIHBvc2l0aW9uO1xuIgorICAgICAgICAib3V0IHZlYzMgb3V0QXR0cmliMTtcbiIKKyAg
ICAgICAgIm91dCB2ZWMzIG91dEF0dHJpYjI7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7Igor
ICAgICAgICAiICBvdXRBdHRyaWIxID0gcG9zaXRpb247XG4iCisgICAgICAgICIgIG91dEF0dHJp
YjIgPSBwb3NpdGlvbjtcbiIKKyAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9u
LCAxKTtcbiIKKyAgICAgICAgIn0iOworCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdtZW50
U2hhZGVyU291cmNlID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAicHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJvdXQgdmVjNCBjb2xvcjtcbiIKKyAg
ICAgICAgImluIHZlYzMgb3V0QXR0cmliMTtcbiIKKyAgICAgICAgImluIHZlYzMgb3V0QXR0cmli
MjtcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgY29sb3IgPSB2ZWM0
KDApO1xuIgorICAgICAgICAifSI7CisKKyAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdGZW
YXJ5aW5nczsKKyAgICB0ZlZhcnlpbmdzLnB1c2hfYmFjaygib3V0QXR0cmliMSIpOworICAgIHRm
VmFyeWluZ3MucHVzaF9iYWNrKCJvdXRBdHRyaWIyIik7CisKKyAgICBtUHJvZ3JhbSA9IENvbXBp
bGVQcm9ncmFtV2l0aFRyYW5zZm9ybUZlZWRiYWNrKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21l
bnRTaGFkZXJTb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZlZhcnlpbmdzLCBHTF9JTlRFUkxFQVZFRF9BVFRSSUJTKTsKKyAgICBBU1NF
UlRfTkUoMHUsIG1Qcm9ncmFtKTsKKworICAgIGdsQmluZEJ1ZmZlcihHTF9UUkFOU0ZPUk1fRkVF
REJBQ0tfQlVGRkVSLCBtVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXIpOworICAgIGdsQnVmZmVyRGF0
YShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBzaXplb2YoVmVjdG9yMykgKiAyICogNiwg
bnVsbHB0ciwgR0xfU1RSRUFNX0RSQVcpOworCisgICAgZ2xCaW5kVHJhbnNmb3JtRmVlZGJhY2so
R0xfVFJBTlNGT1JNX0ZFRURCQUNLLCBtVHJhbnNmb3JtRmVlZGJhY2spOworICAgIGdsQmluZEJ1
ZmZlckJhc2UoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCwgbVRyYW5zZm9ybUZlZWRi
YWNrQnVmZmVyKTsKKworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgZ2xCZWdpblRy
YW5zZm9ybUZlZWRiYWNrKEdMX1RSSUFOR0xFUyk7CisgICAgZHJhd1F1YWQobVByb2dyYW0sICJw
b3NpdGlvbiIsIDAuNWYpOworICAgIGdsRW5kVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICBnbFVz
ZVByb2dyYW0oMCk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBjb25zdCBHTHZv
aWQgKm1hcFBvaW50ZXIgPQorICAgICAgICBnbE1hcEJ1ZmZlclJhbmdlKEdMX1RSQU5TRk9STV9G
RUVEQkFDS19CVUZGRVIsIDAsIHNpemVvZihWZWN0b3IyKSAqIDIgKiA2LCBHTF9NQVBfUkVBRF9C
SVQpOworICAgIEFTU0VSVF9ORShudWxscHRyLCBtYXBQb2ludGVyKTsKKworICAgIGNvbnN0IGF1
dG8gJnF1YWRWZXJ0aWNlcyA9IEdldFF1YWRWZXJ0aWNlcygpOworCisgICAgY29uc3QgVmVjdG9y
MyAqdmVjUG9pbnRlciA9IHN0YXRpY19jYXN0PGNvbnN0IFZlY3RvcjMgKj4obWFwUG9pbnRlcik7
CisgICAgZm9yICh1bnNpZ25lZCBpbnQgdmVjdG9ySW5kZXggPSAwOyB2ZWN0b3JJbmRleCA8IDM7
ICsrdmVjdG9ySW5kZXgpCisgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgc3RyZWFtMUluZGV4
ID0gdmVjdG9ySW5kZXggKiAyOworICAgICAgICB1bnNpZ25lZCBpbnQgc3RyZWFtMkluZGV4ID0g
dmVjdG9ySW5kZXggKiAyICsgMTsKKyAgICAgICAgRVhQRUNUX0VRKHF1YWRWZXJ0aWNlc1t2ZWN0
b3JJbmRleF0sIHZlY1BvaW50ZXJbc3RyZWFtMUluZGV4XSk7CisgICAgICAgIEVYUEVDVF9FUShx
dWFkVmVydGljZXNbdmVjdG9ySW5kZXhdLCB2ZWNQb2ludGVyW3N0cmVhbTJJbmRleF0pOworICAg
IH0KKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworfQorY2xhc3MgVHJhbnNmb3JtRmVlZGJh
Y2tMaWZldGltZVRlc3QgOiBwdWJsaWMgVHJhbnNmb3JtRmVlZGJhY2tUZXN0Cit7CisgIHByb3Rl
Y3RlZDoKKyAgICBUcmFuc2Zvcm1GZWVkYmFja0xpZmV0aW1lVGVzdCgpIDogbVZlcnRleEFycmF5
KDApIHt9CisKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFOR0xF
VGVzdDo6U2V0VXAoKTsKKworICAgICAgICBnbEdlblZlcnRleEFycmF5cygxLCAmbVZlcnRleEFy
cmF5KTsKKyAgICAgICAgZ2xCaW5kVmVydGV4QXJyYXkobVZlcnRleEFycmF5KTsKKworICAgICAg
ICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdGZWYXJ5aW5nczsKKyAgICAgICAgdGZWYXJ5aW5n
cy5wdXNoX2JhY2soImdsX1Bvc2l0aW9uIik7CisgICAgICAgIGNvbXBpbGVEZWZhdWx0UHJvZ3Jh
bSh0ZlZhcnlpbmdzLCBHTF9TRVBBUkFURV9BVFRSSUJTKTsKKworICAgICAgICBnbEdlbkJ1ZmZl
cnMoMSwgJm1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcik7CisgICAgICAgIGdsQmluZEJ1ZmZlcihH
TF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBtVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXIpOwor
ICAgICAgICBnbEJ1ZmZlckRhdGEoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgbVRyYW5z
Zm9ybUZlZWRiYWNrQnVmZmVyU2l6ZSwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgIEdMX0RZ
TkFNSUNfRFJBVyk7CisgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9UUkFOU0ZPUk1fRkVFREJBQ0tf
QlVGRkVSLCAwKTsKKworICAgICAgICBnbEdlblRyYW5zZm9ybUZlZWRiYWNrcygxLCAmbVRyYW5z
Zm9ybUZlZWRiYWNrKTsKKworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICB9CisK
KyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGdsRGVsZXRlVmVy
dGV4QXJyYXlzKDEsICZtVmVydGV4QXJyYXkpOworICAgICAgICBUcmFuc2Zvcm1GZWVkYmFja1Rl
c3Q6OlRlYXJEb3duKCk7CisgICAgfQorCisgICAgR0x1aW50IG1WZXJ0ZXhBcnJheTsKK307CisK
Ky8vIFRlc3RzIGEgYnVnIHdpdGggc3RhdGUgc3luY2luZyBhbmQgZGVsZXRlZCB0cmFuc2Zvcm0g
ZmVlZGJhY2sgYnVmZmVycy4KK1RFU1RfUChUcmFuc2Zvcm1GZWVkYmFja0xpZmV0aW1lVGVzdCwg
RGVsZXRlZEJ1ZmZlcikKK3sKKyAgICAvLyBGaXJzdCBzdHJlYW0gdmVydGV4IGRhdGEgdG8gbVRy
YW5zZm9ybUZlZWRiYWNrQnVmZmVyLgorICAgIGdsQmluZFRyYW5zZm9ybUZlZWRiYWNrKEdMX1RS
QU5TRk9STV9GRUVEQkFDSywgbVRyYW5zZm9ybUZlZWRiYWNrKTsKKyAgICBnbEJpbmRCdWZmZXJC
YXNlKEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIG1UcmFuc2Zvcm1GZWVkYmFja0J1
ZmZlcik7CisKKyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworCisgICAgZ2xCZWdpblRyYW5z
Zm9ybUZlZWRiYWNrKEdMX1RSSUFOR0xFUyk7CisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3Np
dGlvbiIsIDAuNWYsIDEuMGYsIHRydWUpOworICAgIGdsRW5kVHJhbnNmb3JtRmVlZGJhY2soKTsK
KworICAgIGdsQmluZFRyYW5zZm9ybUZlZWRiYWNrKEdMX1RSQU5TRk9STV9GRUVEQkFDSywgMCk7
CisKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBSZW1vdmUgdGhpcyB3aGVuIGh0dHA6Ly9hbmdsZWJ1
Zy5jb20vMTM1MSBpcyBmaXhlZC4KKyAgICBnbEJpbmRWZXJ0ZXhBcnJheSgwKTsKKyAgICBkcmF3
UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgZ2xCaW5kVmVydGV4QXJyYXko
MSk7CisKKyAgICAvLyBOZXh0LCBkcmF3IHZlcnRpY2VzIHdpdGggbVRyYW5zZm9ybUZlZWRiYWNr
QnVmZmVyLiBUaGlzIHdpbGwgbGluayB0byBtVmVydGV4QXJyYXkuCisgICAgZ2xCaW5kQnVmZmVy
KEdMX0FSUkFZX0JVRkZFUiwgbVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyKTsKKyAgICBHTGludCBs
b2MgPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAicG9zaXRpb24iKTsKKyAgICBBU1NF
UlRfTkUoLTEsIGxvYyk7CisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKGxvYywgMSwgR0xfRkxP
QVQsIEdMX0ZBTFNFLCA0LCBudWxscHRyKTsKKyAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KGxvYyk7CisgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgMCk7CisgICAgZ2xEcmF3
QXJyYXlzKEdMX1RSSUFOR0xFUywgMCwgMyk7CisKKyAgICAvLyBEZWxldGUgcmVzb3VyY2VzLCBt
YWtpbmcgYSBzdHJhbmRlZCBwb2ludGVyIHRvIG1WZXJ0ZXhBcnJheSBpbiBtVHJhbnNmb3JtRmVl
ZGJhY2tCdWZmZXIuCisgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtVHJhbnNmb3JtRmVlZGJhY2tC
dWZmZXIpOworICAgIG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlciA9IDA7CisgICAgZ2xEZWxldGVW
ZXJ0ZXhBcnJheXMoMSwgJm1WZXJ0ZXhBcnJheSk7CisgICAgbVZlcnRleEFycmF5ID0gMDsKKwor
ICAgIC8vIFRoZW4gZHJhdyBhZ2FpbiB3aXRoIHRyYW5zZm9ybSBmZWVkYmFjaywgZGVyZWZlcmVu
Y2luZyB0aGUgc3RyYW5kZWQgcG9pbnRlci4KKyAgICBnbEJpbmRUcmFuc2Zvcm1GZWVkYmFjayhH
TF9UUkFOU0ZPUk1fRkVFREJBQ0ssIG1UcmFuc2Zvcm1GZWVkYmFjayk7CisgICAgZ2xCZWdpblRy
YW5zZm9ybUZlZWRiYWNrKEdMX1RSSUFOR0xFUyk7CisgICAgZHJhd1F1YWQobVByb2dyYW0sICJw
b3NpdGlvbiIsIDAuNWYsIDEuMGYsIHRydWUpOworICAgIGdsRW5kVHJhbnNmb3JtRmVlZGJhY2so
KTsKKyAgICBnbEJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHTF9UUkFOU0ZPUk1fRkVFREJBQ0ssIDAp
OworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9CisKKy8vIFVzZSB0aGlzIHRvIHNlbGVj
dCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBt
YWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCitBTkdMRV9J
TlNUQU5USUFURV9URVNUKFRyYW5zZm9ybUZlZWRiYWNrVGVzdCwgRVMzX0QzRDExKCksIEVTM19P
UEVOR0woKSwgRVMzX09QRU5HTEVTKCkpOworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChUcmFuc2Zv
cm1GZWVkYmFja0xpZmV0aW1lVGVzdCwgRVMzX0QzRDExKCksIEVTM19PUEVOR0woKSwgRVMzX09Q
RU5HTEVTKCkpOworCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvVW5pZm9ybUJ1ZmZlclRlc3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9V
bmlmb3JtQnVmZmVyVGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1VuaWZvcm1CdWZmZXJUZXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDU5MCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgInRlc3RfdXRpbHMv
QU5HTEVUZXN0LmgiCisjaW5jbHVkZSAidGVzdF91dGlscy9nbF9yYWlpLmgiCisKK3VzaW5nIG5h
bWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNlCit7CisKK2NsYXNzIFVuaWZvcm1CdWZmZXJUZXN0
IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgVW5pZm9ybUJ1ZmZlclRl
c3QoKQorICAgIHsKKyAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKKyAgICAgICAgc2V0V2lu
ZG93SGVpZ2h0KDEyOCk7CisgICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7CisgICAgICAgIHNl
dENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7CisgICAg
ICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgU2V0
VXAoKQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOworCisgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAgICAg
KCAgICN2ZXJzaW9uIDMwMCBlc1xuCisgICAgICAgICAgICBpbiB2ZWM0IHBvc2l0aW9uOworICAg
ICAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbF9Q
b3NpdGlvbiA9IHBvc2l0aW9uOworICAgICAgICAgICAgfQorICAgICAgICApOworICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAg
ICAgICAgKCAgICN2ZXJzaW9uIDMwMCBlc1xuCisgICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAg
ZmxvYXQ7CisgICAgICAgICAgICB1bmlmb3JtIHVuaSB7CisgICAgICAgICAgICAgICAgdmVjNCBj
b2xvcjsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIG91dCB2ZWM0IGZyYWdDb2xvcjsK
KworICAgICAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBmcmFnQ29sb3IgPSBjb2xvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAg
ICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRT
aGFkZXJTb3VyY2UpOworICAgICAgICBBU1NFUlRfTkUobVByb2dyYW0sIDB1KTsKKworICAgICAg
ICBtVW5pZm9ybUJ1ZmZlckluZGV4ID0gZ2xHZXRVbmlmb3JtQmxvY2tJbmRleChtUHJvZ3JhbSwg
InVuaSIpOworICAgICAgICBBU1NFUlRfTkUobVVuaWZvcm1CdWZmZXJJbmRleCwgLTEpOworCisg
ICAgICAgIGdsR2VuQnVmZmVycygxLCAmbVVuaWZvcm1CdWZmZXIpOworCisgICAgICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCisg
ICAgeworICAgICAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1Vbmlmb3JtQnVmZmVyKTsKKyAgICAg
ICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93
bigpOworICAgIH0KKworICAgIEdMdWludCBtUHJvZ3JhbTsKKyAgICBHTGludCBtVW5pZm9ybUJ1
ZmZlckluZGV4OworICAgIEdMdWludCBtVW5pZm9ybUJ1ZmZlcjsKK307CisKKy8vIEJhc2ljIFVC
TyBmdW5jdGlvbmFsaXR5LgorVEVTVF9QKFVuaWZvcm1CdWZmZXJUZXN0LCBTaW1wbGUpCit7Cisg
ICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBmbG9hdCBmbG9hdERhdGFbNF0g
PSB7MC41ZiwgMC43NWYsIDAuMjVmLCAxLjBmfTsKKworICAgIGdsQmluZEJ1ZmZlcihHTF9VTklG
T1JNX0JVRkZFUiwgbVVuaWZvcm1CdWZmZXIpOworICAgIGdsQnVmZmVyRGF0YShHTF9VTklGT1JN
X0JVRkZFUiwgc2l6ZW9mKGZsb2F0KSAqIDQsIGZsb2F0RGF0YSwgR0xfU1RBVElDX0RSQVcpOwor
CisgICAgZ2xCaW5kQnVmZmVyQmFzZShHTF9VTklGT1JNX0JVRkZFUiwgMCwgbVVuaWZvcm1CdWZm
ZXIpOworCisgICAgZ2xVbmlmb3JtQmxvY2tCaW5kaW5nKG1Qcm9ncmFtLCBtVW5pZm9ybUJ1ZmZl
ckluZGV4LCAwKTsKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisK
KyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfUElYRUxfTkVBUigwLCAwLCAx
MjgsIDE5MSwgNjQsIDI1NSwgMSk7Cit9CisKKy8vIFRlc3QgdGhhdCB1c2luZyBhIFVCTyB3aXRo
IGEgbm9uLXplcm8gb2Zmc2V0IGFuZCBzaXplIGFjdHVhbGx5IHdvcmtzLgorLy8gVGhlIGZpcnN0
IHN0ZXAgb2YgdGhpcyB0ZXN0IHJlbmRlcnMgYSBjb2xvciBmcm9tIGEgVUJPIHdpdGggYSB6ZXJv
IG9mZnNldC4KKy8vIFRoZSBzZWNvbmQgc3RlcCByZW5kZXJzIGEgY29sb3IgZnJvbSBhIFVCTyB3
aXRoIGEgbm9uLXplcm8gb2Zmc2V0LgorVEVTVF9QKFVuaWZvcm1CdWZmZXJUZXN0LCBVbmlmb3Jt
QnVmZmVyUmFuZ2UpCit7CisgICAgLy8gVE9ETyhqbWFkaWxsKTogRmlndXJlIG91dCB3aHkgdGhp
cyBmYWlscyBvbiBJbnRlbC4KKyAgICBpZiAoSXNJbnRlbCgpICYmIElzRDNEMTEoKSkKKyAgICB7
CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIEQzRDExLiIgPDwg
c3RkOjplbmRsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW50IHB4ID0gZ2V0V2lu
ZG93V2lkdGgoKSAvIDI7CisgICAgaW50IHB5ID0gZ2V0V2luZG93SGVpZ2h0KCkgLyAyOworCisg
ICAgLy8gUXVlcnkgdGhlIHVuaWZvcm0gYnVmZmVyIGFsaWdubWVudCByZXF1aXJlbWVudAorICAg
IEdMaW50IGFsaWdubWVudDsKKyAgICBnbEdldEludGVnZXJ2KEdMX1VOSUZPUk1fQlVGRkVSX09G
RlNFVF9BTElHTk1FTlQsICZhbGlnbm1lbnQpOworCisgICAgR0xpbnQ2NCBtYXhVbmlmb3JtQmxv
Y2tTaXplOworICAgIGdsR2V0SW50ZWdlcjY0dihHTF9NQVhfVU5JRk9STV9CTE9DS19TSVpFLCAm
bWF4VW5pZm9ybUJsb2NrU2l6ZSk7CisgICAgaWYgKGFsaWdubWVudCA+PSBtYXhVbmlmb3JtQmxv
Y2tTaXplKQorICAgIHsKKyAgICAgICAgLy8gQU5HTEUgZG9lc24ndCBpbXBsZW1lbnQgVUJPIG9m
ZnNldHMgZm9yIHRoaXMgcGxhdGZvcm0uCisgICAgICAgIC8vIElnbm9yZSB0aGUgdGVzdCBjYXNl
LgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisK
KyAgICAvLyBMZXQncyBjcmVhdGUgYSBidWZmZXIgd2hpY2ggY29udGFpbnMgdHdvIHZlYzQuCisg
ICAgR0x1aW50IHZlYzRTaXplID0gNCAqIHNpemVvZihmbG9hdCk7CisgICAgR0x1aW50IHN0cmlk
ZSA9IDA7CisgICAgZG8KKyAgICB7CisgICAgICAgIHN0cmlkZSArPSBhbGlnbm1lbnQ7CisgICAg
fQorICAgIHdoaWxlIChzdHJpZGUgPCB2ZWM0U2l6ZSk7CisKKyAgICBzdGQ6OnZlY3RvcjxjaGFy
PiB2KDIgKiBzdHJpZGUpOworICAgIGZsb2F0ICpmaXJzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Zmxv
YXQqPih2LmRhdGEoKSk7CisgICAgZmxvYXQgKnNlY29uZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Zmxv
YXQqPih2LmRhdGEoKSArIHN0cmlkZSk7CisKKyAgICBmaXJzdFswXSA9IDEwLmYgLyAyNTUuZjsK
KyAgICBmaXJzdFsxXSA9IDIwLmYgLyAyNTUuZjsKKyAgICBmaXJzdFsyXSA9IDMwLmYgLyAyNTUu
ZjsKKyAgICBmaXJzdFszXSA9IDQwLmYgLyAyNTUuZjsKKworICAgIHNlY29uZFswXSA9IDExMC5m
IC8gMjU1LmY7CisgICAgc2Vjb25kWzFdID0gMTIwLmYgLyAyNTUuZjsKKyAgICBzZWNvbmRbMl0g
PSAxMzAuZiAvIDI1NS5mOworICAgIHNlY29uZFszXSA9IDE0MC5mIC8gMjU1LmY7CisKKyAgICBn
bEJpbmRCdWZmZXIoR0xfVU5JRk9STV9CVUZGRVIsIG1Vbmlmb3JtQnVmZmVyKTsKKyAgICAvLyBX
ZSB1c2Ugb24gcHVycG9zZSBhIHNpemUgd2hpY2ggaXMgbm90IGEgbXVsdGlwbGUgb2YgdGhlIGFs
aWdubWVudC4KKyAgICBnbEJ1ZmZlckRhdGEoR0xfVU5JRk9STV9CVUZGRVIsIHN0cmlkZSArIHZl
YzRTaXplLCB2LmRhdGEoKSwgR0xfU1RBVElDX0RSQVcpOworCisgICAgZ2xVbmlmb3JtQmxvY2tC
aW5kaW5nKG1Qcm9ncmFtLCBtVW5pZm9ybUJ1ZmZlckluZGV4LCAwKTsKKworICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworCisgICAgLy8gQmluZCB0aGUgZmlyc3QgcGFydCBvZiB0aGUgdW5pZm9y
bSBidWZmZXIgYW5kIGRyYXcKKyAgICAvLyBVc2UgYSBzaXplIHdoaWNoIGlzIHNtYWxsZXIgdGhh
biB0aGUgYWxpZ25tZW50IHRvIGNoZWNrCisgICAgLy8gdG8gY2hlY2sgdGhhdCB0aGlzIGNhc2Ug
aXMgaGFuZGxlIGNvcnJlY3RseSBpbiB0aGUgY29udmVyc2lvbiB0byAxMS4xLgorICAgIGdsQmlu
ZEJ1ZmZlclJhbmdlKEdMX1VOSUZPUk1fQlVGRkVSLCAwLCBtVW5pZm9ybUJ1ZmZlciwgMCwgdmVj
NFNpemUpOworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfUElYRUxfRVEocHgsIHB5LCAxMCwgMjAs
IDMwLCA0MCk7CisKKyAgICAvLyBCaW5kIHRoZSBzZWNvbmQgcGFydCBvZiB0aGUgdW5pZm9ybSBi
dWZmZXIgYW5kIGRyYXcKKyAgICAvLyBGdXJ0aGVybW9yZSB0aGUgRDNEMTEuMSBiYWNrZW5kIHdp
bGwgaW50ZXJuYWxseSByb3VuZCB0aGUgdmVjNFNpemUgKDE2IGJ5dGVzKSB0byBhIHN0cmlkZSAo
MjU2IGJ5dGVzKQorICAgIC8vIGhlbmNlIGl0IHdpbGwgdHJ5IHRvIG1hcCB0aGUgcmFuZ2UgW3N0
cmlkZSwgMiAqIHN0cmlkZV0gd2hpY2ggaXMKKyAgICAvLyBvdXQtb2YtYm91bmQgb2YgdGhlIGJ1
ZmZlciBidWZmZXJTaXplID0gc3RyaWRlICsgdmVjNFNpemUgPCAyICogc3RyaWRlLgorICAgIC8v
IEVuc3VyZSB0aGF0IHRoaXMgYmVoYXZpb3VyIHdvcmtzLgorICAgIGdsQmluZEJ1ZmZlclJhbmdl
KEdMX1VOSUZPUk1fQlVGRkVSLCAwLCBtVW5pZm9ybUJ1ZmZlciwgc3RyaWRlLCB2ZWM0U2l6ZSk7
CisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworICAgIEVYUEVDVF9QSVhFTF9FUShweCwgcHksIDExMCwgMTIwLCAxMzAs
IDE0MCk7Cit9CisKKy8vIFRlc3QgdW5pZm9ybSBibG9jayBiaW5kaW5ncy4KK1RFU1RfUChVbmlm
b3JtQnVmZmVyVGVzdCwgVW5pZm9ybUJ1ZmZlckJpbmRpbmdzKQoreworICAgIGludCBweCA9IGdl
dFdpbmRvd1dpZHRoKCkgLyAyOworICAgIGludCBweSA9IGdldFdpbmRvd0hlaWdodCgpIC8gMjsK
KworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gTGV0J3MgY3JlYXRlIGEgYnVm
ZmVyIHdoaWNoIGNvbnRhaW5zIG9uZSB2ZWM0LgorICAgIEdMdWludCB2ZWM0U2l6ZSA9IDQgKiBz
aXplb2YoZmxvYXQpOworICAgIHN0ZDo6dmVjdG9yPGNoYXI+IHYodmVjNFNpemUpOworICAgIGZs
b2F0ICpmaXJzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPih2LmRhdGEoKSk7CisKKyAgICBm
aXJzdFswXSA9IDEwLmYgLyAyNTUuZjsKKyAgICBmaXJzdFsxXSA9IDIwLmYgLyAyNTUuZjsKKyAg
ICBmaXJzdFsyXSA9IDMwLmYgLyAyNTUuZjsKKyAgICBmaXJzdFszXSA9IDQwLmYgLyAyNTUuZjsK
KworICAgIGdsQmluZEJ1ZmZlcihHTF9VTklGT1JNX0JVRkZFUiwgbVVuaWZvcm1CdWZmZXIpOwor
ICAgIGdsQnVmZmVyRGF0YShHTF9VTklGT1JNX0JVRkZFUiwgdmVjNFNpemUsIHYuZGF0YSgpLCBH
TF9TVEFUSUNfRFJBVyk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIFRy
eSB0byBiaW5kIHRoZSBidWZmZXIgdG8gYmluZGluZyBwb2ludCAyCisgICAgZ2xVbmlmb3JtQmxv
Y2tCaW5kaW5nKG1Qcm9ncmFtLCBtVW5pZm9ybUJ1ZmZlckluZGV4LCAyKTsKKyAgICBnbEJpbmRC
dWZmZXJCYXNlKEdMX1VOSUZPUk1fQlVGRkVSLCAyLCBtVW5pZm9ybUJ1ZmZlcik7CisgICAgZHJh
d1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOworICAgIEVYUEVDVF9QSVhFTF9FUShweCwgcHksIDEwLCAyMCwgMzAsIDQwKTsKKworICAg
IC8vIENsZWFyIHRoZSBmcmFtZWJ1ZmZlcgorICAgIGdsQ2xlYXJDb2xvcigwLjAsIDAuMCwgMC4w
LCAwLjApOworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgRVhQRUNUX1BJ
WEVMX0VRKHB4LCBweSwgMCwgMCwgMCwgMCk7CisKKyAgICAvLyBUcnkgdG8gYmluZCB0aGUgYnVm
ZmVyIHRvIGFub3RoZXIgYmluZGluZyBwb2ludAorICAgIGdsVW5pZm9ybUJsb2NrQmluZGluZyht
UHJvZ3JhbSwgbVVuaWZvcm1CdWZmZXJJbmRleCwgNSk7CisgICAgZ2xCaW5kQnVmZmVyQmFzZShH
TF9VTklGT1JNX0JVRkZFUiwgNSwgbVVuaWZvcm1CdWZmZXIpOworICAgIGRyYXdRdWFkKG1Qcm9n
cmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICBF
WFBFQ1RfUElYRUxfRVEocHgsIHB5LCAxMCwgMjAsIDMwLCA0MCk7Cit9CisKKy8vIFRlc3QgdGhh
dCBBTkdMRSBoYW5kbGVzIHVzZWQgYnV0IHVuYm91bmQgVUJPLgorLy8gVE9ETzogQSB0ZXN0IGNh
c2Ugc2hvdWxkbid0IGRlcGVuZCBvbiB0aGUgZXJyb3IgY29kZSBvZiBhbiB1bmRlZmluZWQgYmVo
YXZpb3VyLiBNb3ZlIHRoaXMgdG8gdW5pdCB0ZXN0cyBvZiB0aGUgdmFsaWRhdGlvbiBsYXllci4K
K1RFU1RfUChVbmlmb3JtQnVmZmVyVGVzdCwgVW5ib3VuZFVuaWZvcm1CdWZmZXIpCit7CisgICAg
Z2xVbmlmb3JtQmxvY2tCaW5kaW5nKG1Qcm9ncmFtLCBtVW5pZm9ybUJ1ZmZlckluZGV4LCAwKTsK
KyAgICBnbEJpbmRCdWZmZXJCYXNlKEdMX1VOSUZPUk1fQlVGRkVSLCAwLCAwKTsKKyAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKKworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAw
LjVmKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCisv
LyBVcGRhdGUgYSBVQk8gbWFueSB0aW1lIGFuZCB2ZXJpZnkgdGhhdCBBTkdMRSB1c2VzIHRoZSBs
YXRlc3QgdmVyc2lvbiBvZiB0aGUgZGF0YS4KKy8vIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3Av
YW5nbGVwcm9qZWN0L2lzc3Vlcy9kZXRhaWw/aWQ9OTY1CitURVNUX1AoVW5pZm9ybUJ1ZmZlclRl
c3QsIFVuaWZvcm1CdWZmZXJNYW55VXBkYXRlcykKK3sKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBG
aWd1cmUgb3V0IHdoeSB0aGlzIGZhaWxzIG9uIEludGVsIE9wZW5HTC4KKyAgICBpZiAoSXNJbnRl
bCgpICYmIElzT3BlbkdMKCkpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tp
cHBlZCBvbiBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpbnQgcHggPSBnZXRXaW5kb3dXaWR0aCgpIC8gMjsKKyAgICBpbnQgcHkgPSBn
ZXRXaW5kb3dIZWlnaHQoKSAvIDI7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAg
IGZsb2F0IGRhdGFbNF07CisKKyAgICBnbEJpbmRCdWZmZXIoR0xfVU5JRk9STV9CVUZGRVIsIG1V
bmlmb3JtQnVmZmVyKTsKKyAgICBnbEJ1ZmZlckRhdGEoR0xfVU5JRk9STV9CVUZGRVIsIHNpemVv
ZihkYXRhKSwgTlVMTCwgR0xfRFlOQU1JQ19EUkFXKTsKKyAgICBnbFVuaWZvcm1CbG9ja0JpbmRp
bmcobVByb2dyYW0sIG1Vbmlmb3JtQnVmZmVySW5kZXgsIDApOworICAgIGdsQmluZEJ1ZmZlckJh
c2UoR0xfVU5JRk9STV9CVUZGRVIsIDAsIG1Vbmlmb3JtQnVmZmVyKTsKKworICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworCisgICAgLy8gUmVwZXRlYWRseSB1cGRhdGUgdGhlIGRhdGEgYW5kIGRy
YXcKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDEwOyArK2kpCisgICAgeworICAgICAgICBk
YXRhWzBdID0gKGkgKyAxMC5mKSAvIDI1NS5mOworICAgICAgICBkYXRhWzFdID0gKGkgKyAyMC5m
KSAvIDI1NS5mOworICAgICAgICBkYXRhWzJdID0gKGkgKyAzMC5mKSAvIDI1NS5mOworICAgICAg
ICBkYXRhWzNdID0gKGkgKyA0MC5mKSAvIDI1NS5mOworCisgICAgICAgIGdsQnVmZmVyU3ViRGF0
YShHTF9VTklGT1JNX0JVRkZFUiwgMCwgc2l6ZW9mKGRhdGEpLCBkYXRhKTsKKworICAgICAgICBk
cmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOworICAgICAgICBFWFBFQ1RfUElYRUxfRVEocHgsIHB5LCBpICsgMTAsIGkgKyAy
MCwgaSArIDMwLCBpICsgNDApOworICAgIH0KK30KKworLy8gVXNlIGEgbGFyZ2UgbnVtYmVyIG9m
IGJ1ZmZlciByYW5nZXMgKGNvbXBhcmVkIHRvIHRoZSBhY3R1YWwgc2l6ZSBvZiB0aGUgVUJPKQor
VEVTVF9QKFVuaWZvcm1CdWZmZXJUZXN0LCBNYW55VW5pZm9ybUJ1ZmZlclJhbmdlKQoreworICAg
IC8vIFRPRE8oam1hZGlsbCk6IEZpZ3VyZSBvdXQgd2h5IHRoaXMgZmFpbHMgb24gSW50ZWwuCisg
ICAgaWYgKElzSW50ZWwoKSAmJiBJc0QzRDExKCkpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQg
PDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBEM0QxMS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBpbnQgcHggPSBnZXRXaW5kb3dXaWR0aCgpIC8gMjsKKyAgICBp
bnQgcHkgPSBnZXRXaW5kb3dIZWlnaHQoKSAvIDI7CisKKyAgICAvLyBRdWVyeSB0aGUgdW5pZm9y
bSBidWZmZXIgYWxpZ25tZW50IHJlcXVpcmVtZW50CisgICAgR0xpbnQgYWxpZ25tZW50OworICAg
IGdsR2V0SW50ZWdlcnYoR0xfVU5JRk9STV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVCwgJmFsaWdu
bWVudCk7CisKKyAgICBHTGludDY0IG1heFVuaWZvcm1CbG9ja1NpemU7CisgICAgZ2xHZXRJbnRl
Z2VyNjR2KEdMX01BWF9VTklGT1JNX0JMT0NLX1NJWkUsICZtYXhVbmlmb3JtQmxvY2tTaXplKTsK
KyAgICBpZiAoYWxpZ25tZW50ID49IG1heFVuaWZvcm1CbG9ja1NpemUpCisgICAgeworICAgICAg
ICAvLyBBTkdMRSBkb2Vzbid0IGltcGxlbWVudCBVQk8gb2Zmc2V0cyBmb3IgdGhpcyBwbGF0Zm9y
bS4KKyAgICAgICAgLy8gSWdub3JlIHRoZSB0ZXN0IGNhc2UuCisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIExldCdzIGNyZWF0ZSBh
IGJ1ZmZlciB3aGljaCBjb250YWlucyBlaWdodCB2ZWM0LgorICAgIEdMdWludCB2ZWM0U2l6ZSA9
IDQgKiBzaXplb2YoZmxvYXQpOworICAgIEdMdWludCBzdHJpZGUgPSAwOworICAgIGRvCisgICAg
eworICAgICAgICBzdHJpZGUgKz0gYWxpZ25tZW50OworICAgIH0KKyAgICB3aGlsZSAoc3RyaWRl
IDwgdmVjNFNpemUpOworCisgICAgc3RkOjp2ZWN0b3I8Y2hhcj4gdig4ICogc3RyaWRlKTsKKwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgODsgKytpKQorICAgIHsKKyAgICAgICAgZmxvYXQg
KmRhdGEgPSByZWludGVycHJldF9jYXN0PGZsb2F0Kj4odi5kYXRhKCkgKyBpICogc3RyaWRlKTsK
KworICAgICAgICBkYXRhWzBdID0gKGkgKyAxMC5mKSAvIDI1NS5mOworICAgICAgICBkYXRhWzFd
ID0gKGkgKyAyMC5mKSAvIDI1NS5mOworICAgICAgICBkYXRhWzJdID0gKGkgKyAzMC5mKSAvIDI1
NS5mOworICAgICAgICBkYXRhWzNdID0gKGkgKyA0MC5mKSAvIDI1NS5mOworICAgIH0KKworICAg
IGdsQmluZEJ1ZmZlcihHTF9VTklGT1JNX0JVRkZFUiwgbVVuaWZvcm1CdWZmZXIpOworICAgIGds
QnVmZmVyRGF0YShHTF9VTklGT1JNX0JVRkZFUiwgdi5zaXplKCksIHYuZGF0YSgpLCBHTF9TVEFU
SUNfRFJBVyk7CisKKyAgICBnbFVuaWZvcm1CbG9ja0JpbmRpbmcobVByb2dyYW0sIG1Vbmlmb3Jt
QnVmZmVySW5kZXgsIDApOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBC
aW5kIGVhY2ggcG9zc2libGUgb2Zmc2V0CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA4OyAr
K2kpCisgICAgeworICAgICAgICBnbEJpbmRCdWZmZXJSYW5nZShHTF9VTklGT1JNX0JVRkZFUiwg
MCwgbVVuaWZvcm1CdWZmZXIsIGkgKiBzdHJpZGUsIHN0cmlkZSk7CisgICAgICAgIGRyYXdRdWFk
KG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7CisgICAgICAgIEVYUEVDVF9QSVhFTF9FUShweCwgcHksIDEwICsgaSwgMjAgKyBpLCAzMCAr
IGksIDQwICsgaSk7CisgICAgfQorCisgICAgLy8gVHJ5IHRvIGJpbmQgbGFyZ2VyIHJhbmdlCisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA3OyArK2kpCisgICAgeworICAgICAgICBnbEJpbmRC
dWZmZXJSYW5nZShHTF9VTklGT1JNX0JVRkZFUiwgMCwgbVVuaWZvcm1CdWZmZXIsIGkgKiBzdHJp
ZGUsIDIgKiBzdHJpZGUpOworICAgICAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwg
MC41Zik7CisgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgICAgICBFWFBFQ1RfUElY
RUxfRVEocHgsIHB5LCAxMCArIGksIDIwICsgaSwgMzAgKyBpLCA0MCArIGkpOworICAgIH0KKwor
ICAgIC8vIFRyeSB0byBiaW5kIGV2ZW4gbGFyZ2VyIHJhbmdlCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCA1OyArK2kpCisgICAgeworICAgICAgICBnbEJpbmRCdWZmZXJSYW5nZShHTF9VTklG
T1JNX0JVRkZFUiwgMCwgbVVuaWZvcm1CdWZmZXIsIGkgKiBzdHJpZGUsIDQgKiBzdHJpZGUpOwor
ICAgICAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOworICAgICAgICBFWFBFQ1RfUElYRUxfRVEocHgsIHB5LCAxMCAr
IGksIDIwICsgaSwgMzAgKyBpLCA0MCArIGkpOworICAgIH0KK30KKworLy8gVGVzdHMgdGhhdCBh
Y3RpdmUgdW5pZm9ybXMgaGF2ZSB0aGUgcmlnaHQgbmFtZXMuCitURVNUX1AoVW5pZm9ybUJ1ZmZl
clRlc3QsIEFjdGl2ZVVuaWZvcm1OYW1lcykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmVy
dGV4U2hhZGVyU291cmNlID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAi
aW4gdmVjMiBwb3NpdGlvbjtcbiIKKyAgICAgICAgIm91dCBmbG9hdCB2O1xuIgorICAgICAgICAi
dW5pZm9ybSBibG9ja05hbWUge1xuIgorICAgICAgICAiICBmbG9hdCBmO1xuIgorICAgICAgICAi
fSBpbnN0YW5jZU5hbWU7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIg
IHYgPSBpbnN0YW5jZU5hbWUuZjtcbiIKKyAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBv
c2l0aW9uLCAwLCAxKTtcbiIKKyAgICAgICAgIn0iOworCisgICAgY29uc3Qgc3RkOjpzdHJpbmcg
JmZyYWdtZW50U2hhZGVyU291cmNlID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAg
ICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgorICAgICAgICAiaW4gZmxvYXQgdjtcbiIK
KyAgICAgICAgIm91dCB2ZWM0IGNvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKCkge1xuIgor
ICAgICAgICAiICBjb2xvciA9IHZlYzQodiwgMCwgMCwgMSk7XG4iCisgICAgICAgICJ9IjsKKwor
ICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBm
cmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgQVNTRVJUX05FKDB1LCBwcm9ncmFtKTsKKworICAg
IEdMaW50IGFjdGl2ZVVuaWZvcm1zOworICAgIGdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdMX0FD
VElWRV9VTklGT1JNUywgJmFjdGl2ZVVuaWZvcm1zKTsKKworICAgIEFTU0VSVF9FUSgxLCBhY3Rp
dmVVbmlmb3Jtcyk7CisKKyAgICBHTGludCBtYXhMZW5ndGgsIHNpemU7CisgICAgR0xlbnVtIHR5
cGU7CisgICAgR0xzaXplaSBsZW5ndGg7CisgICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xf
QUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCwgJm1heExlbmd0aCk7CisgICAgc3RkOjp2ZWN0b3I8
R0xjaGFyPiBzdHJCdWZmZXIobWF4TGVuZ3RoICsgMSwgMCk7CisgICAgZ2xHZXRBY3RpdmVVbmlm
b3JtKHByb2dyYW0sIDAsIG1heExlbmd0aCwgJmxlbmd0aCwgJnNpemUsICZ0eXBlLCAmc3RyQnVm
ZmVyWzBdKTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9FUSgxLCBz
aXplKTsKKyAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZMT0FULCB0eXBlKTsKKyAgICBFWFBFQ1Rf
RVEoImJsb2NrTmFtZS5mIiwgc3RkOjpzdHJpbmcoJnN0ckJ1ZmZlclswXSkpOworfQorCisvLyBU
ZXN0cyBhY3RpdmUgdW5pZm9ybXMgYW5kIGJsb2NrcyB3aGVuIHRoZSBsYXlvdXQgaXMgc3RkMTQw
LCBzaGFyZWQgYW5kIHBhY2tlZC4KK1RFU1RfUChVbmlmb3JtQnVmZmVyVGVzdCwgQWN0aXZlVW5p
Zm9ybU51bWJlckFuZE5hbWUpCit7CisgICAgLy8gVE9ETyhKaWFqaWEpOiBGaWd1cmUgb3V0IHdo
eSB0aGlzIGZhaWxzIG9uIEludGVsIG9uIE1hYy4KKyAgICAvLyBUaGlzIGNhc2UgY2FuIHBhc3Mg
b24gSW50ZWwgTWFjLTEwLjExLzEwLjEyLiBCdXQgaXQgZmFpbHMgb24gSW50ZWwgTWFjLTEwLjEw
LgorICAgIGlmIChJc0ludGVsKCkgJiYgSXNPU1goKSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y291
dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIG9uIE1hYy4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFRoaXMgY2FzZSBmYWlscyBvbiBhbGwgQU1EIHBs
YXRmb3JtcyAoTWFjLCBMaW51eCwgV2luKS4KKyAgICBpZiAoSXNBTUQoKSkKKyAgICB7CisgICAg
ICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEFNRC4iIDw8IHN0ZDo6ZW5kbDsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2ZXJ0ZXhTaGFk
ZXJTb3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJpbiB2ZWMy
IHBvc2l0aW9uO1xuIgorICAgICAgICAib3V0IGZsb2F0IHY7XG4iCisgICAgICAgICJzdHJ1Y3Qg
UyB7XG4iCisgICAgICAgICIgIGhpZ2hwIGl2ZWMzIGE7XG4iCisgICAgICAgICIgIG1lZGl1bXAg
aXZlYzIgYls0XTtcbiIKKyAgICAgICAgIn07XG4iCisgICAgICAgICJzdHJ1Y3QgVCB7XG4iCisg
ICAgICAgICIgIFMgY1syXTtcbiIKKyAgICAgICAgIn07XG4iCisgICAgICAgICJsYXlvdXQoc3Rk
MTQwKSB1bmlmb3JtIGJsb2NrTmFtZTAge1xuIgorICAgICAgICAiICBTIHMwO1xuIgorICAgICAg
ICAiICBsb3dwIHZlYzIgdjA7XG4iCisgICAgICAgICIgIFQgdDBbMl07XG4iCisgICAgICAgICIg
IGhpZ2hwIHVpbnQgdTA7XG4iCisgICAgICAgICJ9O1xuIgorICAgICAgICAibGF5b3V0KHN0ZDE0
MCkgdW5pZm9ybSBibG9ja05hbWUxIHtcbiIKKyAgICAgICAgIiAgZmxvYXQgZjE7XG4iCisgICAg
ICAgICIgIGJvb2wgYjE7XG4iCisgICAgICAgICJ9IGluc3RhbmNlTmFtZTE7XG4iCisgICAgICAg
ICJsYXlvdXQoc2hhcmVkKSB1bmlmb3JtIGJsb2NrTmFtZTIge1xuIgorICAgICAgICAiICBmbG9h
dCBmMjtcbiIKKyAgICAgICAgIn07XG4iCisgICAgICAgICJsYXlvdXQocGFja2VkKSB1bmlmb3Jt
IGJsb2NrTmFtZTMge1xuIgorICAgICAgICAiICBmbG9hdCBmMztcbiIKKyAgICAgICAgIn07XG4i
CisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgIHYgPSBpbnN0YW5jZU5hbWUx
LmYxO1xuIgorICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAsIDEpO1xu
IgorICAgICAgICAifSI7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ21lbnRTaGFkZXJT
b3VyY2UgPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24g
aGlnaHAgZmxvYXQ7XG4iCisgICAgICAgICJpbiBmbG9hdCB2O1xuIgorICAgICAgICAib3V0IHZl
YzQgY29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisgICAgICAgICIgIGNvbG9y
ID0gdmVjNCh2LCAwLCAwLCAxKTtcbiIKKyAgICAgICAgIn0iOworCisgICAgQU5HTEVfR0xfUFJP
R1JBTShwcm9ncmFtLCB2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsK
KworICAgIEdMaW50IGFjdGl2ZVVuaWZvcm1zOworICAgIGdsR2V0UHJvZ3JhbWl2KHByb2dyYW0u
Z2V0KCksIEdMX0FDVElWRV9VTklGT1JNUywgJmFjdGl2ZVVuaWZvcm1zKTsKKworICAgIEFTU0VS
VF9FUSgxNSwgYWN0aXZlVW5pZm9ybXMpOworCisgICAgR0xpbnQgYWN0aXZlVW5pZm9ybUJsb2Nr
czsKKyAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLmdldCgpLCBHTF9BQ1RJVkVfVU5JRk9STV9C
TE9DS1MsICZhY3RpdmVVbmlmb3JtQmxvY2tzKTsKKworICAgIEFTU0VSVF9FUSgzLCBhY3RpdmVV
bmlmb3JtQmxvY2tzKTsKKworICAgIEdMaW50IG1heExlbmd0aCwgc2l6ZTsKKyAgICBHTGVudW0g
dHlwZTsKKyAgICBHTHNpemVpIGxlbmd0aDsKKyAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLmdl
dCgpLCBHTF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RILCAmbWF4TGVuZ3RoKTsKKyAgICBzdGQ6
OnZlY3RvcjxHTGNoYXI+IHN0ckJ1ZmZlcihtYXhMZW5ndGggKyAxLCAwKTsKKworICAgIGdsR2V0
QWN0aXZlVW5pZm9ybShwcm9ncmFtLmdldCgpLCAwLCBtYXhMZW5ndGgsICZsZW5ndGgsICZzaXpl
LCAmdHlwZSwgJnN0ckJ1ZmZlclswXSk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAg
RVhQRUNUX0VRKDEsIHNpemUpOworICAgIEVYUEVDVF9FUSgiczAuYSIsIHN0ZDo6c3RyaW5nKCZz
dHJCdWZmZXJbMF0pKTsKKworICAgIGdsR2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLmdldCgpLCAx
LCBtYXhMZW5ndGgsICZsZW5ndGgsICZzaXplLCAmdHlwZSwgJnN0ckJ1ZmZlclswXSk7CisgICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgRVhQRUNUX0VRKDQsIHNpemUpOworICAgIEVYUEVD
VF9FUSgiczAuYlswXSIsIHN0ZDo6c3RyaW5nKCZzdHJCdWZmZXJbMF0pKTsKKworICAgIGdsR2V0
QWN0aXZlVW5pZm9ybShwcm9ncmFtLmdldCgpLCAyLCBtYXhMZW5ndGgsICZsZW5ndGgsICZzaXpl
LCAmdHlwZSwgJnN0ckJ1ZmZlclswXSk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAg
RVhQRUNUX0VRKDEsIHNpemUpOworICAgIEVYUEVDVF9FUSgidjAiLCBzdGQ6OnN0cmluZygmc3Ry
QnVmZmVyWzBdKSk7CisKKyAgICBnbEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbS5nZXQoKSwgMywg
bWF4TGVuZ3RoLCAmbGVuZ3RoLCAmc2l6ZSwgJnR5cGUsICZzdHJCdWZmZXJbMF0pOworICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9FUSgxLCBzaXplKTsKKyAgICBFWFBFQ1Rf
RVEoInQwWzBdLmNbMF0uYSIsIHN0ZDo6c3RyaW5nKCZzdHJCdWZmZXJbMF0pKTsKKworICAgIGds
R2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLmdldCgpLCA0LCBtYXhMZW5ndGgsICZsZW5ndGgsICZz
aXplLCAmdHlwZSwgJnN0ckJ1ZmZlclswXSk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cisg
ICAgRVhQRUNUX0VRKDQsIHNpemUpOworICAgIEVYUEVDVF9FUSgidDBbMF0uY1swXS5iWzBdIiwg
c3RkOjpzdHJpbmcoJnN0ckJ1ZmZlclswXSkpOworCisgICAgZ2xHZXRBY3RpdmVVbmlmb3JtKHBy
b2dyYW0uZ2V0KCksIDUsIG1heExlbmd0aCwgJmxlbmd0aCwgJnNpemUsICZ0eXBlLCAmc3RyQnVm
ZmVyWzBdKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfRVEoMSwgc2l6
ZSk7CisgICAgRVhQRUNUX0VRKCJ0MFswXS5jWzFdLmEiLCBzdGQ6OnN0cmluZygmc3RyQnVmZmVy
WzBdKSk7CisKKyAgICBnbEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbS5nZXQoKSwgNiwgbWF4TGVu
Z3RoLCAmbGVuZ3RoLCAmc2l6ZSwgJnR5cGUsICZzdHJCdWZmZXJbMF0pOworICAgIEFTU0VSVF9H
TF9OT19FUlJPUigpOworICAgIEVYUEVDVF9FUSg0LCBzaXplKTsKKyAgICBFWFBFQ1RfRVEoInQw
WzBdLmNbMV0uYlswXSIsIHN0ZDo6c3RyaW5nKCZzdHJCdWZmZXJbMF0pKTsKKworICAgIGdsR2V0
QWN0aXZlVW5pZm9ybShwcm9ncmFtLmdldCgpLCA3LCBtYXhMZW5ndGgsICZsZW5ndGgsICZzaXpl
LCAmdHlwZSwgJnN0ckJ1ZmZlclswXSk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAg
RVhQRUNUX0VRKDEsIHNpemUpOworICAgIEVYUEVDVF9FUSgidDBbMV0uY1swXS5hIiwgc3RkOjpz
dHJpbmcoJnN0ckJ1ZmZlclswXSkpOworCisgICAgZ2xHZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0u
Z2V0KCksIDgsIG1heExlbmd0aCwgJmxlbmd0aCwgJnNpemUsICZ0eXBlLCAmc3RyQnVmZmVyWzBd
KTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfRVEoNCwgc2l6ZSk7Cisg
ICAgRVhQRUNUX0VRKCJ0MFsxXS5jWzBdLmJbMF0iLCBzdGQ6OnN0cmluZygmc3RyQnVmZmVyWzBd
KSk7CisKKyAgICBnbEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbS5nZXQoKSwgOSwgbWF4TGVuZ3Ro
LCAmbGVuZ3RoLCAmc2l6ZSwgJnR5cGUsICZzdHJCdWZmZXJbMF0pOworICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOworICAgIEVYUEVDVF9FUSgxLCBzaXplKTsKKyAgICBFWFBFQ1RfRVEoInQwWzFd
LmNbMV0uYSIsIHN0ZDo6c3RyaW5nKCZzdHJCdWZmZXJbMF0pKTsKKworICAgIGdsR2V0QWN0aXZl
VW5pZm9ybShwcm9ncmFtLmdldCgpLCAxMCwgbWF4TGVuZ3RoLCAmbGVuZ3RoLCAmc2l6ZSwgJnR5
cGUsICZzdHJCdWZmZXJbMF0pOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVD
VF9FUSg0LCBzaXplKTsKKyAgICBFWFBFQ1RfRVEoInQwWzFdLmNbMV0uYlswXSIsIHN0ZDo6c3Ry
aW5nKCZzdHJCdWZmZXJbMF0pKTsKKworICAgIGdsR2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLmdl
dCgpLCAxMSwgbWF4TGVuZ3RoLCAmbGVuZ3RoLCAmc2l6ZSwgJnR5cGUsICZzdHJCdWZmZXJbMF0p
OworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9FUSgxLCBzaXplKTsKKyAg
ICBFWFBFQ1RfRVEoInUwIiwgc3RkOjpzdHJpbmcoJnN0ckJ1ZmZlclswXSkpOworCisgICAgZ2xH
ZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0uZ2V0KCksIDEyLCBtYXhMZW5ndGgsICZsZW5ndGgsICZz
aXplLCAmdHlwZSwgJnN0ckJ1ZmZlclswXSk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cisg
ICAgRVhQRUNUX0VRKDEsIHNpemUpOworICAgIEVYUEVDVF9FUSgiYmxvY2tOYW1lMS5mMSIsIHN0
ZDo6c3RyaW5nKCZzdHJCdWZmZXJbMF0pKTsKKworICAgIGdsR2V0QWN0aXZlVW5pZm9ybShwcm9n
cmFtLmdldCgpLCAxMywgbWF4TGVuZ3RoLCAmbGVuZ3RoLCAmc2l6ZSwgJnR5cGUsICZzdHJCdWZm
ZXJbMF0pOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9FUSgxLCBzaXpl
KTsKKyAgICBFWFBFQ1RfRVEoImJsb2NrTmFtZTEuYjEiLCBzdGQ6OnN0cmluZygmc3RyQnVmZmVy
WzBdKSk7CisKKyAgICBnbEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbS5nZXQoKSwgMTQsIG1heExl
bmd0aCwgJmxlbmd0aCwgJnNpemUsICZ0eXBlLCAmc3RyQnVmZmVyWzBdKTsKKyAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfRVEoMSwgc2l6ZSk7CisgICAgRVhQRUNUX0VRKCJm
MiIsIHN0ZDo6c3RyaW5nKCZzdHJCdWZmZXJbMF0pKTsKK30KKworLy8gVGVzdCB0aGF0IHVzaW5n
IGEgdmVyeSBsYXJnZSBidWZmZXIgdG8gYmFjayBhIHNtYWxsIHVuaWZvcm0gYmxvY2sgd29ya3Mg
T0suCitURVNUX1AoVW5pZm9ybUJ1ZmZlclRlc3QsIFZlcnlMYXJnZSkKK3sKKyAgICAvLyBUT0RP
KGptYWRpbGwpOiBGaWd1cmUgb3V0IHdoeSB0aGlzIGZhaWxzIG9uIEludGVsLgorICAgIC8vIFNl
ZSBodHRwOi8vY3JidWcuY29tLzU5MzAyNAorICAgIGlmIChJc0ludGVsKCkgJiYgSXNEM0QxMSgp
KQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgRDNE
MTEuIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBnbENsZWFy
KEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAgIGZsb2F0IGZsb2F0RGF0YVs0XSA9IHswLjVmLCAw
Ljc1ZiwgMC4yNWYsIDEuMGZ9OworCisgICAgR0xzaXplaSBiaWdTaXplID0gNDA5NiAqIDY0Owor
CisgICAgZ2xCaW5kQnVmZmVyKEdMX1VOSUZPUk1fQlVGRkVSLCBtVW5pZm9ybUJ1ZmZlcik7Cisg
ICAgZ2xCdWZmZXJEYXRhKEdMX1VOSUZPUk1fQlVGRkVSLCBiaWdTaXplLCBudWxscHRyLCBHTF9T
VEFUSUNfRFJBVyk7CisgICAgZ2xCdWZmZXJTdWJEYXRhKEdMX1VOSUZPUk1fQlVGRkVSLCAwLCBz
aXplb2YoZmxvYXQpICogNCwgZmxvYXREYXRhKTsKKworICAgIGdsQmluZEJ1ZmZlckJhc2UoR0xf
VU5JRk9STV9CVUZGRVIsIDAsIG1Vbmlmb3JtQnVmZmVyKTsKKworICAgIGdsVW5pZm9ybUJsb2Nr
QmluZGluZyhtUHJvZ3JhbSwgbVVuaWZvcm1CdWZmZXJJbmRleCwgMCk7CisgICAgZHJhd1F1YWQo
bVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
CisgICAgRVhQRUNUX1BJWEVMX05FQVIoMCwgMCwgMTI4LCAxOTEsIDY0LCAyNTUsIDEpOworfQor
CisvLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2gg
cmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJl
IHJ1biBhZ2FpbnN0LgorQU5HTEVfSU5TVEFOVElBVEVfVEVTVChVbmlmb3JtQnVmZmVyVGVzdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExKCksCisgICAgICAgICAgICAgICAgICAg
ICAgIEVTM19EM0QxMV9GTDExXzEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDEx
X0ZMMTFfMV9SRUZFUkVOQ0UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgp
LAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMRVMoKSk7CisKK30gLy8gbmFtZXNw
YWNlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvVW5p
Zm9ybVRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9nbF90ZXN0cy9Vbmlmb3JtVGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1VuaWZvcm1UZXN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDYzNCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgInRlc3RfdXRp
bHMvQU5HTEVUZXN0LmgiCisKKyNpbmNsdWRlIDxhcnJheT4KKyNpbmNsdWRlIDxjbWF0aD4KKwor
dXNpbmcgbmFtZXNwYWNlIGFuZ2xlOworCituYW1lc3BhY2UKK3sKKworY2xhc3MgVW5pZm9ybVRl
c3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBVbmlmb3JtVGVzdCgp
IDogbVByb2dyYW0oMCksIG1Vbmlmb3JtRkxvY2F0aW9uKC0xKSwgbVVuaWZvcm1JTG9jYXRpb24o
LTEpLCBtVW5pZm9ybUJMb2NhdGlvbigtMSkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRo
KDEyOCk7CisgICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOworICAgICAgICBzZXRDb25maWdS
ZWRCaXRzKDgpOworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENv
bmZpZ0JsdWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgfQor
CisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBTkdMRVRlc3Q6OlNl
dFVwKCk7CisKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZlcnRleFNoYWRlciA9ICJ2b2lk
IG1haW4oKSB7IGdsX1Bvc2l0aW9uID0gdmVjNCgxKTsgfSI7CisgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZmcmFnU2hhZGVyID0KKyAgICAgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDtcbiIKKyAgICAgICAgICAgICJ1bmlmb3JtIGZsb2F0IHVuaUY7XG4iCisgICAgICAgICAgICAi
dW5pZm9ybSBpbnQgdW5pSTtcbiIKKyAgICAgICAgICAgICJ1bmlmb3JtIGJvb2wgdW5pQjtcbiIK
KyAgICAgICAgICAgICJ1bmlmb3JtIGJvb2wgdW5pQkFycls0XTtcbiIKKyAgICAgICAgICAgICJ2
b2lkIG1haW4oKSB7XG4iCisgICAgICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHVuaUYg
KyBmbG9hdCh1bmlJKSk7XG4iCisgICAgICAgICAgICAiICBnbF9GcmFnQ29sb3IgKz0gdmVjNCh1
bmlCID8gMS4wIDogMC4wKTtcbiIKKyAgICAgICAgICAgICIgIGdsX0ZyYWdDb2xvciArPSB2ZWM0
KHVuaUJBcnJbMF0gPyAxLjAgOiAwLjApO1xuIgorICAgICAgICAgICAgIn0iOworCisgICAgICAg
IG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyLCBmcmFnU2hhZGVyKTsKKyAg
ICAgICAgQVNTRVJUX05FKG1Qcm9ncmFtLCAwdSk7CisKKyAgICAgICAgbVVuaWZvcm1GTG9jYXRp
b24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInVuaUYiKTsKKyAgICAgICAgQVNT
RVJUX05FKG1Vbmlmb3JtRkxvY2F0aW9uLCAtMSk7CisKKyAgICAgICAgbVVuaWZvcm1JTG9jYXRp
b24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInVuaUkiKTsKKyAgICAgICAgQVNT
RVJUX05FKG1Vbmlmb3JtSUxvY2F0aW9uLCAtMSk7CisKKyAgICAgICAgbVVuaWZvcm1CTG9jYXRp
b24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInVuaUIiKTsKKyAgICAgICAgQVNT
RVJUX05FKG1Vbmlmb3JtQkxvY2F0aW9uLCAtMSk7CisKKyAgICAgICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAgeworICAg
ICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOworICAgICAgICBBTkdMRVRlc3Q6OlRlYXJE
b3duKCk7CisgICAgfQorCisgICAgR0x1aW50IG1Qcm9ncmFtOworICAgIEdMaW50IG1Vbmlmb3Jt
RkxvY2F0aW9uOworICAgIEdMaW50IG1Vbmlmb3JtSUxvY2F0aW9uOworICAgIEdMaW50IG1Vbmlm
b3JtQkxvY2F0aW9uOworfTsKKworVEVTVF9QKFVuaWZvcm1UZXN0LCBHZXRVbmlmb3JtTm9DdXJy
ZW50UHJvZ3JhbSkKK3sKKyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworICAgIGdsVW5pZm9y
bTFmKG1Vbmlmb3JtRkxvY2F0aW9uLCAxLjBmKTsKKyAgICBnbFVuaWZvcm0xaShtVW5pZm9ybUlM
b2NhdGlvbiwgMSk7CisgICAgZ2xVc2VQcm9ncmFtKDApOworCisgICAgR0xmbG9hdCBmOworICAg
IGdsR2V0blVuaWZvcm1mdkVYVChtUHJvZ3JhbSwgbVVuaWZvcm1GTG9jYXRpb24sIDQsICZmKTsK
KyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfRVEoMS4wZiwgZik7CisKKyAg
ICBnbEdldFVuaWZvcm1mdihtUHJvZ3JhbSwgbVVuaWZvcm1GTG9jYXRpb24sICZmKTsKKyAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfRVEoMS4wZiwgZik7CisKKyAgICBHTGlu
dCBpOworICAgIGdsR2V0blVuaWZvcm1pdkVYVChtUHJvZ3JhbSwgbVVuaWZvcm1JTG9jYXRpb24s
IDQsICZpKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfRVEoMSwgaSk7
CisKKyAgICBnbEdldFVuaWZvcm1pdihtUHJvZ3JhbSwgbVVuaWZvcm1JTG9jYXRpb24sICZpKTsK
KyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfRVEoMSwgaSk7Cit9CisKK1RF
U1RfUChVbmlmb3JtVGVzdCwgVW5pZm9ybUFycmF5TG9jYXRpb25zKQoreworICAgIC8vIFRPRE8o
Z2VvZmZsYW5nKTogRmlndXJlIG91dCB3aHkgdGhpcyBpcyBicm9rZW4gb24gSW50ZWwgT3BlbkdM
CisgICAgaWYgKElzSW50ZWwoKSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRG
T1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8
ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgT3BlbkdMLiIgPDwgc3RkOjplbmRsOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyID0gU0hB
REVSX1NPVVJDRQorICAgICgKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAg
ICAgIHVuaWZvcm0gZmxvYXQgdVBvc2l0aW9uWzRdOworICAgICAgICB2b2lkIG1haW4odm9pZCkK
KyAgICAgICAgeworICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHVQb3NpdGlvblswXSwg
dVBvc2l0aW9uWzFdLCB1UG9zaXRpb25bMl0sIHVQb3NpdGlvblszXSk7CisgICAgICAgIH0KKyAg
ICApOworCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ1NoYWRlciA9IFNIQURFUl9TT1VSQ0UK
KyAgICAoCisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICB1bmlmb3Jt
IGZsb2F0IHVDb2xvcls0XTsKKyAgICAgICAgdm9pZCBtYWluKHZvaWQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQodUNvbG9yWzBdLCB1Q29sb3JbMV0sIHVDb2xv
clsyXSwgdUNvbG9yWzNdKTsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBHTHVpbnQgcHJvZ3Jh
bSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlciwgZnJhZ1NoYWRlcik7CisgICAgQVNTRVJU
X05FKHByb2dyYW0sIDB1KTsKKworICAgIC8vIEFycmF5IGluZGV4IHplcm8gc2hvdWxkIGJlIGVx
dWl2YWxlbnQgdG8gdGhlIHVuLWluZGV4ZWQgdW5pZm9ybQorICAgIEVYUEVDVF9ORSgtMSwgZ2xH
ZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVQb3NpdGlvbiIpKTsKKyAgICBFWFBFQ1RfRVEo
Z2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVQb3NpdGlvbiIpLCBnbEdldFVuaWZvcm1M
b2NhdGlvbihwcm9ncmFtLCAidVBvc2l0aW9uWzBdIikpOworCisgICAgRVhQRUNUX05FKC0xLCBn
bEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidUNvbG9yIikpOworICAgIEVYUEVDVF9FUShn
bEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidUNvbG9yIiksIGdsR2V0VW5pZm9ybUxvY2F0
aW9uKHByb2dyYW0sICJ1Q29sb3JbMF0iKSk7CisKKyAgICAvLyBBbGwgYXJyYXkgdW5pZm9ybSBs
b2NhdGlvbnMgc2hvdWxkIGJlIHVuaXF1ZQorICAgIEdMaW50IHBvc2l0aW9uTG9jYXRpb25zWzRd
ID0KKyAgICB7CisgICAgICAgIGdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1UG9zaXRp
b25bMF0iKSwKKyAgICAgICAgZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVQb3NpdGlv
blsxXSIpLAorICAgICAgICBnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidVBvc2l0aW9u
WzJdIiksCisgICAgICAgIGdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1UG9zaXRpb25b
M10iKSwKKyAgICB9OworCisgICAgR0xpbnQgY29sb3JMb2NhdGlvbnNbNF0gPQorICAgIHsKKyAg
ICAgICAgZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVDb2xvclswXSIpLAorICAgICAg
ICBnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidUNvbG9yWzFdIiksCisgICAgICAgIGds
R2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1Q29sb3JbMl0iKSwKKyAgICAgICAgZ2xHZXRV
bmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVDb2xvclszXSIpLAorICAgIH07CisKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IDQ7IGkrKykKKyAgICB7CisgICAgICAgIEVYUEVDVF9ORSgtMSwg
cG9zaXRpb25Mb2NhdGlvbnNbaV0pOworICAgICAgICBFWFBFQ1RfTkUoLTEsIGNvbG9yTG9jYXRp
b25zW2ldKTsKKworICAgICAgICBmb3IgKHNpemVfdCBqID0gaSArIDE7IGogPCA0OyBqKyspCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEVYUEVDVF9ORShwb3NpdGlvbkxvY2F0aW9uc1tpXSwgcG9z
aXRpb25Mb2NhdGlvbnNbal0pOworICAgICAgICAgICAgRVhQRUNUX05FKGNvbG9yTG9jYXRpb25z
W2ldLCBjb2xvckxvY2F0aW9uc1tqXSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBnbERlbGV0
ZVByb2dyYW0ocHJvZ3JhbSk7Cit9CisKKy8vIFRlc3QgdGhhdCBmbG9hdCB0byBpbnRlZ2VyIEdl
dFVuaWZvcm0gcm91bmRzIHZhbHVlcyBjb3JyZWN0bHkuCitURVNUX1AoVW5pZm9ybVRlc3QsIEZs
b2F0VW5pZm9ybVN0YXRlUXVlcnkpCit7CisgICAgc3RkOjp2ZWN0b3I8ZG91YmxlPiBpblZhbHVl
czsKKyAgICBzdGQ6OnZlY3RvcjxHTGZsb2F0PiBleHBlY3RlZEZWYWx1ZXM7CisgICAgc3RkOjp2
ZWN0b3I8R0xpbnQ+IGV4cGVjdGVkSVZhbHVlczsKKworICAgIGRvdWJsZSBpbnRNYXhEID0gc3Rh
dGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPEdMaW50Pjo6bWF4KCkpOworICAg
IGRvdWJsZSBpbnRNaW5EID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRz
PEdMaW50Pjo6bWluKCkpOworCisgICAgLy8gVE9ETyhqbWFkaWxsKTogSW52ZXN0aWdhdGUgcm91
bmRpbmcgb2YgLjUKKyAgICBpblZhbHVlcy5wdXNoX2JhY2soLTEuMCk7CisgICAgaW5WYWx1ZXMu
cHVzaF9iYWNrKC0wLjYpOworICAgIC8vIGluVmFsdWVzLnB1c2hfYmFjaygtMC41KTsgLy8gdW5k
ZWZpbmVkIGJlaGF2aW91cj8KKyAgICBpblZhbHVlcy5wdXNoX2JhY2soLTAuNCk7CisgICAgaW5W
YWx1ZXMucHVzaF9iYWNrKDAuMCk7CisgICAgaW5WYWx1ZXMucHVzaF9iYWNrKDAuNCk7CisgICAg
Ly8gaW5WYWx1ZXMucHVzaF9iYWNrKDAuNSk7IC8vIHVuZGVmaW5lZCBiZWhhdmlvdXI/CisgICAg
aW5WYWx1ZXMucHVzaF9iYWNrKDAuNik7CisgICAgaW5WYWx1ZXMucHVzaF9iYWNrKDEuMCk7Cisg
ICAgaW5WYWx1ZXMucHVzaF9iYWNrKDk5OTk5OS4yKTsKKyAgICBpblZhbHVlcy5wdXNoX2JhY2so
aW50TWF4RCAqIDIuMCk7CisgICAgaW5WYWx1ZXMucHVzaF9iYWNrKGludE1heEQgKyAxLjApOwor
ICAgIGluVmFsdWVzLnB1c2hfYmFjayhpbnRNaW5EICogMi4wKTsKKyAgICBpblZhbHVlcy5wdXNo
X2JhY2soaW50TWluRCAtIDEuMCk7CisKKyAgICBmb3IgKGRvdWJsZSB2YWx1ZSA6IGluVmFsdWVz
KQorICAgIHsKKyAgICAgICAgZXhwZWN0ZWRGVmFsdWVzLnB1c2hfYmFjayhzdGF0aWNfY2FzdDxH
TGZsb2F0Pih2YWx1ZSkpOworCisgICAgICAgIGRvdWJsZSBjbGFtcGVkVmFsdWUgPSBzdGQ6Om1h
eChpbnRNaW5ELCBzdGQ6Om1pbihpbnRNYXhELCB2YWx1ZSkpOworICAgICAgICBkb3VibGUgcm91
bmRlZCA9IHJvdW5kKGNsYW1wZWRWYWx1ZSk7CisgICAgICAgIGV4cGVjdGVkSVZhbHVlcy5wdXNo
X2JhY2soc3RhdGljX2Nhc3Q8R0xpbnQ+KHJvdW5kZWQpKTsKKyAgICB9CisKKyAgICBnbFVzZVBy
b2dyYW0obVByb2dyYW0pOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgZm9yIChz
aXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGluVmFsdWVzLnNpemUoKTsgKytpbmRleCkKKyAgICB7
CisgICAgICAgIEdMZmxvYXQgaW5WYWx1ZSAgICAgICA9IHN0YXRpY19jYXN0PEdMZmxvYXQ+KGlu
VmFsdWVzW2luZGV4XSk7CisgICAgICAgIEdMZmxvYXQgZXhwZWN0ZWRWYWx1ZSA9IGV4cGVjdGVk
RlZhbHVlc1tpbmRleF07CisKKyAgICAgICAgZ2xVbmlmb3JtMWYobVVuaWZvcm1GTG9jYXRpb24s
IGluVmFsdWUpOworICAgICAgICBHTGZsb2F0IHRlc3RWYWx1ZTsKKyAgICAgICAgZ2xHZXRVbmlm
b3JtZnYobVByb2dyYW0sIG1Vbmlmb3JtRkxvY2F0aW9uLCAmdGVzdFZhbHVlKTsKKyAgICAgICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZFZhbHVlLCB0
ZXN0VmFsdWUpOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBp
blZhbHVlcy5zaXplKCk7ICsraW5kZXgpCisgICAgeworICAgICAgICBHTGZsb2F0IGluVmFsdWUg
ICAgID0gc3RhdGljX2Nhc3Q8R0xmbG9hdD4oaW5WYWx1ZXNbaW5kZXhdKTsKKyAgICAgICAgR0xp
bnQgZXhwZWN0ZWRWYWx1ZSA9IGV4cGVjdGVkSVZhbHVlc1tpbmRleF07CisKKyAgICAgICAgZ2xV
bmlmb3JtMWYobVVuaWZvcm1GTG9jYXRpb24sIGluVmFsdWUpOworICAgICAgICBHTGludCB0ZXN0
VmFsdWU7CisgICAgICAgIGdsR2V0VW5pZm9ybWl2KG1Qcm9ncmFtLCBtVW5pZm9ybUZMb2NhdGlv
biwgJnRlc3RWYWx1ZSk7CisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgICAgICBF
WFBFQ1RfRVEoZXhwZWN0ZWRWYWx1ZSwgdGVzdFZhbHVlKTsKKyAgICB9Cit9CisKKy8vIFRlc3Qg
dGhhdCBpbnRlZ2VyIHRvIGZsb2F0IEdldFVuaWZvcm0gcm91bmRzIHZhbHVlcyBjb3JyZWN0bHku
CitURVNUX1AoVW5pZm9ybVRlc3QsIEludFVuaWZvcm1TdGF0ZVF1ZXJ5KQoreworICAgIHN0ZDo6
dmVjdG9yPEdMaW50PiBpblZhbHVlczsKKyAgICBzdGQ6OnZlY3RvcjxHTGludD4gZXhwZWN0ZWRJ
VmFsdWVzOworICAgIHN0ZDo6dmVjdG9yPEdMZmxvYXQ+IGV4cGVjdGVkRlZhbHVlczsKKworICAg
IEdMaW50IGludE1heCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8R0xpbnQ+OjptYXgoKTsKKyAgICBH
TGludCBpbnRNaW4gPSBzdGQ6Om51bWVyaWNfbGltaXRzPEdMaW50Pjo6bWluKCk7CisKKyAgICBp
blZhbHVlcy5wdXNoX2JhY2soLTEpOworICAgIGluVmFsdWVzLnB1c2hfYmFjaygwKTsKKyAgICBp
blZhbHVlcy5wdXNoX2JhY2soMSk7CisgICAgaW5WYWx1ZXMucHVzaF9iYWNrKDk5OTk5OSk7Cisg
ICAgaW5WYWx1ZXMucHVzaF9iYWNrKGludE1heCk7CisgICAgaW5WYWx1ZXMucHVzaF9iYWNrKGlu
dE1heCAtIDEpOworICAgIGluVmFsdWVzLnB1c2hfYmFjayhpbnRNaW4pOworICAgIGluVmFsdWVz
LnB1c2hfYmFjayhpbnRNaW4gKyAxKTsKKworICAgIGZvciAoR0xpbnQgdmFsdWUgOiBpblZhbHVl
cykKKyAgICB7CisgICAgICAgIGV4cGVjdGVkSVZhbHVlcy5wdXNoX2JhY2sodmFsdWUpOworICAg
ICAgICBleHBlY3RlZEZWYWx1ZXMucHVzaF9iYWNrKHN0YXRpY19jYXN0PEdMZmxvYXQ+KHZhbHVl
KSk7CisgICAgfQorCisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKKworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBpblZhbHVl
cy5zaXplKCk7ICsraW5kZXgpCisgICAgeworICAgICAgICBHTGludCBpblZhbHVlICAgICAgID0g
aW5WYWx1ZXNbaW5kZXhdOworICAgICAgICBHTGludCBleHBlY3RlZFZhbHVlID0gZXhwZWN0ZWRJ
VmFsdWVzW2luZGV4XTsKKworICAgICAgICBnbFVuaWZvcm0xaShtVW5pZm9ybUlMb2NhdGlvbiwg
aW5WYWx1ZSk7CisgICAgICAgIEdMaW50IHRlc3RWYWx1ZTsKKyAgICAgICAgZ2xHZXRVbmlmb3Jt
aXYobVByb2dyYW0sIG1Vbmlmb3JtSUxvY2F0aW9uLCAmdGVzdFZhbHVlKTsKKyAgICAgICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7CisgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZFZhbHVlLCB0ZXN0
VmFsdWUpOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBpblZh
bHVlcy5zaXplKCk7ICsraW5kZXgpCisgICAgeworICAgICAgICBHTGludCBpblZhbHVlICAgICAg
ICAgPSBpblZhbHVlc1tpbmRleF07CisgICAgICAgIEdMZmxvYXQgZXhwZWN0ZWRWYWx1ZSA9IGV4
cGVjdGVkRlZhbHVlc1tpbmRleF07CisKKyAgICAgICAgZ2xVbmlmb3JtMWkobVVuaWZvcm1JTG9j
YXRpb24sIGluVmFsdWUpOworICAgICAgICBHTGZsb2F0IHRlc3RWYWx1ZTsKKyAgICAgICAgZ2xH
ZXRVbmlmb3JtZnYobVByb2dyYW0sIG1Vbmlmb3JtSUxvY2F0aW9uLCAmdGVzdFZhbHVlKTsKKyAg
ICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZFZh
bHVlLCB0ZXN0VmFsdWUpOworICAgIH0KK30KKworLy8gVGVzdCB0aGF0IHF1ZXJpZXMgb2YgYm9v
bGVhbiB1bmlmb3JtcyByb3VuZCBjb3JyZWN0bHkuCitURVNUX1AoVW5pZm9ybVRlc3QsIEJvb2xl
YW5Vbmlmb3JtU3RhdGVRdWVyeSkKK3sKKyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworICAg
IEdMaW50IGludFZhbHVlICAgICA9IDA7CisgICAgR0xmbG9hdCBmbG9hdFZhbHVlID0gMC4wZjsK
KworICAgIC8vIENhbGxpbmcgVW5pZm9ybTFpCisgICAgZ2xVbmlmb3JtMWkobVVuaWZvcm1CTG9j
YXRpb24sIEdMX0ZBTFNFKTsKKworICAgIGdsR2V0VW5pZm9ybWl2KG1Qcm9ncmFtLCBtVW5pZm9y
bUJMb2NhdGlvbiwgJmludFZhbHVlKTsKKyAgICBFWFBFQ1RfRVEoMCwgaW50VmFsdWUpOworCisg
ICAgZ2xHZXRVbmlmb3JtZnYobVByb2dyYW0sIG1Vbmlmb3JtQkxvY2F0aW9uLCAmZmxvYXRWYWx1
ZSk7CisgICAgRVhQRUNUX0VRKDAuMGYsIGZsb2F0VmFsdWUpOworCisgICAgZ2xVbmlmb3JtMWko
bVVuaWZvcm1CTG9jYXRpb24sIEdMX1RSVUUpOworCisgICAgZ2xHZXRVbmlmb3JtaXYobVByb2dy
YW0sIG1Vbmlmb3JtQkxvY2F0aW9uLCAmaW50VmFsdWUpOworICAgIEVYUEVDVF9FUSgxLCBpbnRW
YWx1ZSk7CisKKyAgICBnbEdldFVuaWZvcm1mdihtUHJvZ3JhbSwgbVVuaWZvcm1CTG9jYXRpb24s
ICZmbG9hdFZhbHVlKTsKKyAgICBFWFBFQ1RfRVEoMS4wZiwgZmxvYXRWYWx1ZSk7CisKKyAgICAv
LyBDYWxsaW5nIFVuaWZvcm0xZgorICAgIGdsVW5pZm9ybTFmKG1Vbmlmb3JtQkxvY2F0aW9uLCAw
LjBmKTsKKworICAgIGdsR2V0VW5pZm9ybWl2KG1Qcm9ncmFtLCBtVW5pZm9ybUJMb2NhdGlvbiwg
JmludFZhbHVlKTsKKyAgICBFWFBFQ1RfRVEoMCwgaW50VmFsdWUpOworCisgICAgZ2xHZXRVbmlm
b3JtZnYobVByb2dyYW0sIG1Vbmlmb3JtQkxvY2F0aW9uLCAmZmxvYXRWYWx1ZSk7CisgICAgRVhQ
RUNUX0VRKDAuMGYsIGZsb2F0VmFsdWUpOworCisgICAgZ2xVbmlmb3JtMWYobVVuaWZvcm1CTG9j
YXRpb24sIDEuMGYpOworCisgICAgZ2xHZXRVbmlmb3JtaXYobVByb2dyYW0sIG1Vbmlmb3JtQkxv
Y2F0aW9uLCAmaW50VmFsdWUpOworICAgIEVYUEVDVF9FUSgxLCBpbnRWYWx1ZSk7CisKKyAgICBn
bEdldFVuaWZvcm1mdihtUHJvZ3JhbSwgbVVuaWZvcm1CTG9jYXRpb24sICZmbG9hdFZhbHVlKTsK
KyAgICBFWFBFQ1RfRVEoMS4wZiwgZmxvYXRWYWx1ZSk7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKK30KKworLy8gVGVzdCBxdWVyaWVzIGZvciBhcnJheXMgb2YgYm9vbGVhbiB1bmlmb3Jt
cy4KK1RFU1RfUChVbmlmb3JtVGVzdCwgQm9vbGVhbkFycmF5VW5pZm9ybVN0YXRlUXVlcnkpCit7
CisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICBHTGludCBib29sVmFsdWVzaVs0XSAg
ID0gezAsIDEsIDAsIDF9OworICAgIEdMZmxvYXQgYm9vbFZhbHVlc2ZbNF0gPSB7MCwgMSwgMCwg
MX07CisKKyAgICBHTGludCBsb2NhdGlvbnNbNF0gPSB7CisgICAgICAgIGdsR2V0VW5pZm9ybUxv
Y2F0aW9uKG1Qcm9ncmFtLCAidW5pQkFyciIpLAorICAgICAgICBnbEdldFVuaWZvcm1Mb2NhdGlv
bihtUHJvZ3JhbSwgInVuaUJBcnJbMV0iKSwKKyAgICAgICAgZ2xHZXRVbmlmb3JtTG9jYXRpb24o
bVByb2dyYW0sICJ1bmlCQXJyWzJdIiksCisgICAgICAgIGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Q
cm9ncmFtLCAidW5pQkFyclszXSIpLAorICAgIH07CisKKyAgICAvLyBDYWxsaW5nIFVuaWZvcm0x
aXYKKyAgICBnbFVuaWZvcm0xaXYobG9jYXRpb25zWzBdLCA0LCBib29sVmFsdWVzaSk7CisKKyAg
ICBmb3IgKHVuc2lnbmVkIGludCBpZHggPSAwOyBpZHggPCA0OyArK2lkeCkKKyAgICB7CisgICAg
ICAgIGludCB2YWx1ZSA9IC0xOworICAgICAgICBnbEdldFVuaWZvcm1pdihtUHJvZ3JhbSwgbG9j
YXRpb25zW2lkeF0sICZ2YWx1ZSk7CisgICAgICAgIEVYUEVDVF9FUShib29sVmFsdWVzaVtpZHhd
LCB2YWx1ZSk7CisgICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaWR4ID0gMDsgaWR4IDwg
NDsgKytpZHgpCisgICAgeworICAgICAgICBmbG9hdCB2YWx1ZSA9IC0xLjBmOworICAgICAgICBn
bEdldFVuaWZvcm1mdihtUHJvZ3JhbSwgbG9jYXRpb25zW2lkeF0sICZ2YWx1ZSk7CisgICAgICAg
IEVYUEVDVF9FUShib29sVmFsdWVzZltpZHhdLCB2YWx1ZSk7CisgICAgfQorCisgICAgLy8gQ2Fs
bGluZyBVbmlmb3JtMWZ2CisgICAgZ2xVbmlmb3JtMWZ2KGxvY2F0aW9uc1swXSwgNCwgYm9vbFZh
bHVlc2YpOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaWR4ID0gMDsgaWR4IDwgNDsgKytpZHgp
CisgICAgeworICAgICAgICBpbnQgdmFsdWUgPSAtMTsKKyAgICAgICAgZ2xHZXRVbmlmb3JtaXYo
bVByb2dyYW0sIGxvY2F0aW9uc1tpZHhdLCAmdmFsdWUpOworICAgICAgICBFWFBFQ1RfRVEoYm9v
bFZhbHVlc2lbaWR4XSwgdmFsdWUpOworICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaW50IGlk
eCA9IDA7IGlkeCA8IDQ7ICsraWR4KQorICAgIHsKKyAgICAgICAgZmxvYXQgdmFsdWUgPSAtMS4w
ZjsKKyAgICAgICAgZ2xHZXRVbmlmb3JtZnYobVByb2dyYW0sIGxvY2F0aW9uc1tpZHhdLCAmdmFs
dWUpOworICAgICAgICBFWFBFQ1RfRVEoYm9vbFZhbHVlc2ZbaWR4XSwgdmFsdWUpOworICAgIH0K
KworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworfQorCitjbGFzcyBVbmlmb3JtVGVzdEVTMyA6
IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIFVuaWZvcm1UZXN0RVMzKCkg
OiBtUHJvZ3JhbSgwKSB7fQorCisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAg
ICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92
ZXJyaWRlCisgICAgeworICAgICAgICBpZiAobVByb2dyYW0gIT0gMCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICAgICAgICAgIG1Qcm9ncmFt
ID0gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIEdMdWludCBtUHJvZ3JhbTsKK307CisKKy8v
IFRlc3QgcXVlcmllcyBmb3IgdHJhbnNwb3NlZCBhcnJheXMgb2Ygbm9uLXNxdWFyZSBtYXRyaXgg
dW5pZm9ybXMuCitURVNUX1AoVW5pZm9ybVRlc3RFUzMsIFRyYW5wb3NlZE1hdHJpeEFycmF5VW5p
Zm9ybVN0YXRlUXVlcnkpCit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZlcnRleFNoYWRlciA9
CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInZvaWQgbWFpbigpIHsgZ2xf
UG9zaXRpb24gPSB2ZWM0KDEpOyB9IjsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ1NoYWRl
ciA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0O1xuIgorICAgICAgICAidW5pZm9ybSBtYXQzeDIgdW5pTWF0M3gyWzVdO1xuIgor
ICAgICAgICAib3V0IHZlYzQgY29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCisg
ICAgICAgICIgIGNvbG9yID0gdmVjNCh1bmlNYXQzeDJbMF1bMF1bMF0pO1xuIgorICAgICAgICAi
fSI7CisKKyAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlciwgZnJhZ1No
YWRlcik7CisgICAgQVNTRVJUX05FKG1Qcm9ncmFtLCAwdSk7CisKKyAgICBnbFVzZVByb2dyYW0o
bVByb2dyYW0pOworCisgICAgc3RkOjp2ZWN0b3I8R0xmbG9hdD4gdHJhbnNwb3NlZFZhbHVlczsK
KworICAgIGZvciAoc2l6ZV90IGFycmF5RWxlbWVudCA9IDA7IGFycmF5RWxlbWVudCA8IDU7ICsr
YXJyYXlFbGVtZW50KQorICAgIHsKKyAgICAgICAgdHJhbnNwb3NlZFZhbHVlcy5wdXNoX2JhY2so
MS4wZiArIGFycmF5RWxlbWVudCk7CisgICAgICAgIHRyYW5zcG9zZWRWYWx1ZXMucHVzaF9iYWNr
KDMuMGYgKyBhcnJheUVsZW1lbnQpOworICAgICAgICB0cmFuc3Bvc2VkVmFsdWVzLnB1c2hfYmFj
ayg1LjBmICsgYXJyYXlFbGVtZW50KTsKKyAgICAgICAgdHJhbnNwb3NlZFZhbHVlcy5wdXNoX2Jh
Y2soMi4wZiArIGFycmF5RWxlbWVudCk7CisgICAgICAgIHRyYW5zcG9zZWRWYWx1ZXMucHVzaF9i
YWNrKDQuMGYgKyBhcnJheUVsZW1lbnQpOworICAgICAgICB0cmFuc3Bvc2VkVmFsdWVzLnB1c2hf
YmFjayg2LjBmICsgYXJyYXlFbGVtZW50KTsKKyAgICB9CisKKyAgICAvLyBTZXR0aW5nIGFzIGEg
Y2x1bXAKKyAgICBHTGludCBiYXNlTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJv
Z3JhbSwgInVuaU1hdDN4MiIpOworICAgIEFTU0VSVF9ORSgtMSwgYmFzZUxvY2F0aW9uKTsKKwor
ICAgIGdsVW5pZm9ybU1hdHJpeDN4MmZ2KGJhc2VMb2NhdGlvbiwgNSwgR0xfVFJVRSwgJnRyYW5z
cG9zZWRWYWx1ZXNbMF0pOworCisgICAgZm9yIChzaXplX3QgYXJyYXlFbGVtZW50ID0gMDsgYXJy
YXlFbGVtZW50IDwgNTsgKythcnJheUVsZW1lbnQpCisgICAgeworICAgICAgICBzdGQ6OnN0cmlu
Z3N0cmVhbSBuYW1lU3RyOworICAgICAgICBuYW1lU3RyIDw8ICJ1bmlNYXQzeDJbIiA8PCBhcnJh
eUVsZW1lbnQgPDwgIl0iOworICAgICAgICBzdGQ6OnN0cmluZyBuYW1lID0gbmFtZVN0ci5zdHIo
KTsKKyAgICAgICAgR0xpbnQgbG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3Jh
bSwgbmFtZS5jX3N0cigpKTsKKyAgICAgICAgQVNTRVJUX05FKC0xLCBsb2NhdGlvbik7CisKKyAg
ICAgICAgc3RkOjp2ZWN0b3I8R0xmbG9hdD4gc2VxdWVudGlhbFZhbHVlcyg2LCAwKTsKKyAgICAg
ICAgZ2xHZXRVbmlmb3JtZnYobVByb2dyYW0sIGxvY2F0aW9uLCAmc2VxdWVudGlhbFZhbHVlc1sw
XSk7CisKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgZm9yIChzaXpl
X3QgY29tcCA9IDA7IGNvbXAgPCA2OyArK2NvbXApCisgICAgICAgIHsKKyAgICAgICAgICAgIEVY
UEVDVF9FUShzdGF0aWNfY2FzdDxHTGZsb2F0Pihjb21wICsgMSArIGFycmF5RWxlbWVudCksIHNl
cXVlbnRpYWxWYWx1ZXNbY29tcF0pOworICAgICAgICB9CisgICAgfQorfQorCisvLyBDaGVjayB0
aGF0IHNhbXBsZXIgdW5pZm9ybXMgb25seSBzaG93IHVwIG9uZSB0aW1lIGluIHRoZSBsaXN0CitU
RVNUX1AoVW5pZm9ybVRlc3QsIFNhbXBsZXJVbmlmb3Jtc0FwcGVhck9uY2UpCit7CisgICAgaW50
IG1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzID0gMDsKKyAgICBnbEdldEludGVnZXJ2KEdMX01B
WF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUywgJm1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRz
KTsKKworICAgIGlmIChtYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyA9PSAwKQorICAgIHsKKyAg
ICAgICAgc3RkOjpjb3V0IDw8ICJSZW5kZXJlciBkb2Vzbid0IHN1cHBvcnQgdmVydGV4IHRleHR1
cmUgZmV0Y2gsIHNraXBwaW5nIHRlc3QiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2ZXJ0U2hhZGVyID0KKyAgICAgICAgImF0
dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uO1xuIgorICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQgdGV4
MkQ7XG4iCisgICAgICAgICJ2YXJ5aW5nIHZlYzQgY29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1h
aW4oKSB7XG4iCisgICAgICAgICIgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMCwgMSk7
XG4iCisgICAgICAgICIgIGNvbG9yID0gdGV4dHVyZTJEKHRleDJELCB2ZWMyKDApKTtcbiIKKyAg
ICAgICAgIn0iOworCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdTaGFkZXIgPQorICAgICAg
ICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ2YXJ5aW5nIHZlYzQgY29s
b3I7XG4iCisgICAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCB0ZXgyRDtcbiIKKyAgICAgICAgInZv
aWQgbWFpbigpIHtcbiIKKyAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHRleDJE
LCB2ZWMyKDApKSArIGNvbG9yO1xuIgorICAgICAgICAifSI7CisKKyAgICBHTHVpbnQgcHJvZ3Jh
bSA9IENvbXBpbGVQcm9ncmFtKHZlcnRTaGFkZXIsIGZyYWdTaGFkZXIpOworICAgIEFTU0VSVF9O
RSgwdSwgcHJvZ3JhbSk7CisKKyAgICBHTGludCBhY3RpdmVVbmlmb3Jtc0NvdW50ID0gMDsKKyAg
ICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9BQ1RJVkVfVU5JRk9STVMsICZhY3RpdmVVbmlm
b3Jtc0NvdW50KTsKKyAgICBBU1NFUlRfRVEoMSwgYWN0aXZlVW5pZm9ybXNDb3VudCk7CisKKyAg
ICBHTGludCBzaXplICAgICAgID0gMDsKKyAgICBHTGVudW0gdHlwZSAgICAgID0gR0xfTk9ORTsK
KyAgICBHTGNoYXIgbmFtZVsxMjBdID0gezB9OworICAgIGdsR2V0QWN0aXZlVW5pZm9ybShwcm9n
cmFtLCAwLCAxMDAsIG51bGxwdHIsICZzaXplLCAmdHlwZSwgbmFtZSk7CisgICAgRVhQRUNUX0VR
KDEsIHNpemUpOworICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfU0FNUExFUl8yRCwgdHlwZSk7Cisg
ICAgRVhQRUNUX1NUUkVRKCJ0ZXgyRCIsIG5hbWUpOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7CisKKyAgICBnbERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Cit9CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBULCB0eXBlbmFtZSBHZXRVbmlmb3JtVj4KK3ZvaWQgQ2hlY2tPbmVFbGVtZW50KEdldFVu
aWZvcm1WIGdldFVuaWZvcm12LAorICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0s
CisgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgIGludCBjb21wb25lbnRzLAorICAgICAgICAgICAgICAgICAgICAgVCBjYW5h
cnkpCit7CisgICAgLy8gVGhlIGJ1ZmZlciBnZXR0aW5nIHRoZSByZXN1bHRzIGhhcyB0aHJlZSBj
aHVua3MKKyAgICAvLyAgLSBBIGNodW5rIHRvIHNlZSB1bmRlcmZsb3dzCisgICAgLy8gIC0gQSBj
aHVuayB0aGF0IHdpbGwgaG9sZCB0aGUgcmVzdWx0CisgICAgLy8gIC0gQSBjaHVuayB0byBzZWUg
b3ZlcmZsb3dzIGZvciB3aGVuIGNvbXBvbmVudHMgPSBrQ2h1bmtTaXplCisgICAgc3RhdGljIGNv
bnN0IHNpemVfdCBrQ2h1bmtTaXplID0gNDsKKyAgICBzdGQ6OmFycmF5PFQsIDMgKiBrQ2h1bmtT
aXplPiBidWZmZXI7CisgICAgYnVmZmVyLmZpbGwoY2FuYXJ5KTsKKworICAgIEdMaW50IGxvY2F0
aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS5jX3N0cigpKTsKKyAgICBB
U1NFUlRfTkUobG9jYXRpb24sIC0xKTsKKworICAgIGdldFVuaWZvcm12KHByb2dyYW0sIGxvY2F0
aW9uLCAmYnVmZmVyW2tDaHVua1NpemVdKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtD
aHVua1NpemU7IGkrKykKKyAgICB7CisgICAgICAgIEFTU0VSVF9FUShjYW5hcnksIGJ1ZmZlcltp
XSk7CisgICAgfQorICAgIGZvciAoc2l6ZV90IGkgPSBrQ2h1bmtTaXplICsgY29tcG9uZW50czsg
aSA8IGJ1ZmZlci5zaXplKCk7IGkrKykKKyAgICB7CisgICAgICAgIEFTU0VSVF9FUShjYW5hcnks
IGJ1ZmZlcltpXSk7CisgICAgfQorfQorCisvLyBDaGVjayB0aGF0IGdldHRpbmcgYW4gZWxlbWVu
dCBhcnJheSBkb2Vzbid0IHJldHVybiB0aGUgd2hvbGUgYXJyYXkuCitURVNUX1AoVW5pZm9ybVRl
c3RFUzMsIFJldHVybnNPbmx5T25lQXJyYXlFbGVtZW50KQoreworICAgIHN0YXRpYyBjb25zdCBz
aXplX3Qga0FycmF5U2l6ZSA9IDQ7CisgICAgc3RydWN0IFVuaWZvcm1BcnJheUluZm8KKyAgICB7
CisgICAgICAgIFVuaWZvcm1BcnJheUluZm8oc3RkOjpzdHJpbmcgdHlwZSwgc3RkOjpzdHJpbmcg
bmFtZSwgaW50IGNvbXBvbmVudHMpCisgICAgICAgICAgICA6IHR5cGUodHlwZSksIG5hbWUobmFt
ZSksIGNvbXBvbmVudHMoY29tcG9uZW50cykKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAg
IHN0ZDo6c3RyaW5nIHR5cGU7CisgICAgICAgIHN0ZDo6c3RyaW5nIG5hbWU7CisgICAgICAgIGlu
dCBjb21wb25lbnRzOworICAgIH07CisKKyAgICAvLyBDaGVjayBmb3IgdmFyaW91cyBudW1iZXIg
b2YgY29tcG9uZW50cyBhbmQgdHlwZXMKKyAgICBzdGQ6OnZlY3RvcjxVbmlmb3JtQXJyYXlJbmZv
PiB1bmlmb3JtQXJyYXlzOworICAgIHVuaWZvcm1BcnJheXMuZW1wbGFjZV9iYWNrKCJib29sIiwg
InVCb29sIiwgMSk7CisgICAgdW5pZm9ybUFycmF5cy5lbXBsYWNlX2JhY2soInZlYzIiLCAidUZs
b2F0IiwgMik7CisgICAgdW5pZm9ybUFycmF5cy5lbXBsYWNlX2JhY2soIml2ZWMzIiwgInVJbnQi
LCAzKTsKKyAgICB1bmlmb3JtQXJyYXlzLmVtcGxhY2VfYmFjaygidXZlYzQiLCAidVVpbnQiLCA0
KTsKKworICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSB1bmlmb3JtU3RyZWFtOworICAgIHN0ZDo6b3N0
cmluZ3N0cmVhbSBhZGRpdGlvblN0cmVhbTsKKyAgICBmb3IgKGNvbnN0IGF1dG8gJmFycmF5IDog
dW5pZm9ybUFycmF5cykKKyAgICB7CisgICAgICAgIHVuaWZvcm1TdHJlYW0gPDwgInVuaWZvcm0g
IiA8PCBhcnJheS50eXBlIDw8ICIgIiA8PCBhcnJheS5uYW1lIDw8ICJbIgorICAgICAgICAgICAg
ICAgICAgICAgIDw8IFRvU3RyaW5nKGtBcnJheVNpemUpIDw8ICJdO1xuIjsKKworICAgICAgICAv
LyBXZSBuZWVkIHRvIG1ha2UgdXNlIG9mIHRoZSB1bmlmb3JtcyBvciB0aGV5IGdldCBjb21waWxl
ZCBvdXQuCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoYXJyYXkuY29tcG9uZW50cyA9PSAxKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGFkZGl0aW9uU3RyZWFtIDw8ICIgKyBmbG9hdCgiIDw8IGFycmF5Lm5hbWUg
PDwgIlsiIDw8IGkgPDwgIl0pIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBjb21wb25lbnQgPSAwOyBjb21w
b25lbnQgPCBhcnJheS5jb21wb25lbnRzOyBjb21wb25lbnQrKykKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uU3RyZWFtIDw8ICIgKyBmbG9hdCgiIDw8IGFy
cmF5Lm5hbWUgPDwgIlsiIDw8IGkgPDwgIl1bIiA8PCBjb21wb25lbnQKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPDwgIl0pIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmVydGV4
U2hhZGVyID0KKyAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIiArCisgICAgICAgIHVuaWZvcm1T
dHJlYW0uc3RyKCkgKworICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgIntcbiIKKyAg
ICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoMS4wIiArIGFkZGl0aW9uU3RyZWFtLnN0cigp
ICsgIik7XG4iCisgICAgICAgICJ9IjsKKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnbWVu
dFNoYWRlciA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKKyAgICAgICAgInByZWNpc2lv
biBtZWRpdW1wIGZsb2F0O1xuIgorICAgICAgICAib3V0IHZlYzQgY29sb3I7XG4iCisgICAgICAg
ICJ2b2lkIG1haW4gKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBjb2xvciA9IHZl
YzQoMSwgMCwgMCwgMSk7XG4iCisgICAgICAgICJ9IjsKKworICAgIG1Qcm9ncmFtID0gQ29tcGls
ZVByb2dyYW0odmVydGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlcik7CisgICAgQVNTRVJUX05FKDB1
LCBtUHJvZ3JhbSk7CisKKyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworCisgICAgZm9yIChj
b25zdCBhdXRvICZ1bmlmb3JtQXJyYXkgOiB1bmlmb3JtQXJyYXlzKQorICAgIHsKKyAgICAgICAg
Zm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGtBcnJheVNpemU7IGluZGV4KyspCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHN0ckluZGV4ID0gIlsiICsgVG9TdHJpbmco
aW5kZXgpICsgIl0iOworICAgICAgICAgICAgLy8gQ2hlY2sgYWxsIHRoZSBkaWZmZXJlbnQgZ2xH
ZXRVbmlmb3JtdiBmdW5jdGlvbnMKKyAgICAgICAgICAgIENoZWNrT25lRWxlbWVudDxmbG9hdD4o
Z2xHZXRVbmlmb3JtZnYsIG1Qcm9ncmFtLCB1bmlmb3JtQXJyYXkubmFtZSArIHN0ckluZGV4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlmb3JtQXJyYXkuY29tcG9uZW50
cywgNDIuNDI0MmYpOworICAgICAgICAgICAgQ2hlY2tPbmVFbGVtZW50PGludD4oZ2xHZXRVbmlm
b3JtaXYsIG1Qcm9ncmFtLCB1bmlmb3JtQXJyYXkubmFtZSArIHN0ckluZGV4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5pZm9ybUFycmF5LmNvbXBvbmVudHMsIDB4N0JBREJF
RDUpOworICAgICAgICAgICAgQ2hlY2tPbmVFbGVtZW50PHVuc2lnbmVkIGludD4oZ2xHZXRVbmlm
b3JtdWl2LCBtUHJvZ3JhbSwgdW5pZm9ybUFycmF5Lm5hbWUgKyBzdHJJbmRleCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWZvcm1BcnJheS5jb21wb25lbnRz
LCAweERFQURCRUVGKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRoaXMgdG8gc2Vs
ZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVT
IG1ham9yIHZlcnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KK0FOR0xF
X0lOU1RBTlRJQVRFX1RFU1QoVW5pZm9ybVRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgIEVT
Ml9EM0Q5KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
RVMyX09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSk7CitB
TkdMRV9JTlNUQU5USUFURV9URVNUKFVuaWZvcm1UZXN0RVMzLCBFUzNfRDNEMTEoKSwgRVMzX09Q
RU5HTCgpLCBFUzNfT1BFTkdMRVMoKSk7CisKK30gLy8gbmFtZXNwYWNlCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvVW5wYWNrQWxpZ25tZW50VGVzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rl
c3RzL1VucGFja0FsaWdubWVudFRlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9VbnBhY2tBbGlnbm1lbnRUZXN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyNSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgInRl
c3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKworbmFtZXNw
YWNlCit7CisKK2NsYXNzIFVucGFja0FsaWdubWVudFRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7
CisgIHByb3RlY3RlZDoKKyAgICBVbnBhY2tBbGlnbm1lbnRUZXN0KCkKKyAgICB7CisgICAgICAg
IHNldFdpbmRvd1dpZHRoKDEyOCk7CisgICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOworICAg
ICAgICBzZXRDb25maWdSZWRCaXRzKDgpOworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7
CisgICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJp
dHMoOCk7CisgICAgICAgIHNldENvbmZpZ0RlcHRoQml0cygyNCk7CisKKyAgICAgICAgbVByb2dy
YW0gPSAwOworICAgIH0KKworICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgQU5HTEVUZXN0OjpTZXRVcCgpOworCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRl
eFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAgcHJl
Y2lzaW9uIGhpZ2hwIGZsb2F0OworICAgICAgICAgICAgYXR0cmlidXRlIHZlYzQgcG9zaXRpb247
CisKKyAgICAgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKwor
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9IFNIQURFUl9T
T1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdGV4OworCisg
ICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGds
X0ZyYWdDb2xvciA9IHRleHR1cmUyRCh0ZXgsIHZlYzIoMC4wLCAxLjApKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgKTsKKworICAgICAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRl
eFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOworICAgICAgICBpZiAobVByb2dy
YW0gPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgRkFJTCgpIDw8ICJzaGFkZXIgY29tcGls
YXRpb24gZmFpbGVkLiI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7CisKKyAg
ICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOworICAgIH0KKworICAgIHZvaWQgZ2V0UGl4ZWxT
aXplKEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCB1bnNpZ25lZCBpbnQqIHNpemUpCisgICAg
eworICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX1VO
U0lHTkVEX1NIT1JUXzVfNV81XzE6CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF81
XzZfNToKKyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQ6CisgICAgICAg
ICAgICAqc2l6ZSA9IHNpemVvZihHTHVzaG9ydCk7CisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgY29tcENvdW50ID0gMDsKKyAgICAgICAgICAgICAgICBzd2l0Y2gg
KGZvcm1hdCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1JH
QkE6ICAgICAgICAgICAgY29tcENvdW50ID0gNDsgYnJlYWs7CisgICAgICAgICAgICAgICAgICBj
YXNlIEdMX1JHQjogICAgICAgICAgICAgY29tcENvdW50ID0gMzsgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQTogY29tcENvdW50ID0gMjsgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRTogICAgICAgY29tcENvdW50ID0gMTsg
YnJlYWs7CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX0FMUEhBOiAgICAgICAgICAgY29tcENv
dW50ID0gMTsgYnJlYWs7CisgICAgICAgICAgICAgICAgICBkZWZhdWx0OiAgICAgICAgICAgICAg
ICAgRkFJTCgpIDw8ICJ1bmtub3duIHBpeGVsIGZvcm1hdC4iOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAqc2l6ZSA9IHNpemVvZihHTHVieXRlKSAqIGNvbXBDb3VudDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBGQUlMKCkgPDwgInVua25vd24gcGl4ZWwgdHlwZS4iOworICAgICAgICB9CisgICAg
fQorCisgICAgYm9vbCBmb3JtYXRIYXNSR0IoR0xlbnVtIGZvcm1hdCkKKyAgICB7CisgICAgICAg
IHJldHVybiAoZm9ybWF0ICE9IEdMX0FMUEhBKTsKKyAgICB9CisKKyAgICB2b2lkIHRlc3RBbGln
bm1lbnQoaW50IGFsaWdubWVudCwgdW5zaWduZWQgaW50IG9mZnNldCwgR0xlbnVtIGZvcm1hdCwg
R0xlbnVtIHR5cGUpCisgICAgeworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IHdp
ZHRoID0gNzsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBoZWlnaHQgPSAyOwor
CisgICAgICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX0FMSUdOTUVOVCwgYWxpZ25tZW50KTsK
KworICAgICAgICBHTGludCByZWFkYmFja0FsaWdubWVudDsKKyAgICAgICAgZ2xHZXRJbnRlZ2Vy
dihHTF9VTlBBQ0tfQUxJR05NRU5ULCAmcmVhZGJhY2tBbGlnbm1lbnQpOworICAgICAgICBFWFBF
Q1RfRVEoYWxpZ25tZW50LCByZWFkYmFja0FsaWdubWVudCk7CisKKyAgICAgICAgR0x1Ynl0ZSBi
dWZbMTAyNF07CisgICAgICAgIG1lbXNldChidWYsIDAsIHNpemVvZihidWYpKTsKKworICAgICAg
ICB1bnNpZ25lZCBpbnQgcGl4ZWxTaXplOworICAgICAgICBnZXRQaXhlbFNpemUoZm9ybWF0LCB0
eXBlLCAmcGl4ZWxTaXplKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBw
aXhlbFNpemU7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgYnVmW29mZnNldCtpXSA9IDB4
RkY7CisgICAgICAgIH0KKworICAgICAgICBHTHVpbnQgdGV4OworICAgICAgICBnbEdlblRleHR1
cmVzKDEsICZ0ZXgpOworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleCk7
CisKKyAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIGZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgMCwgZm9ybWF0LCB0eXBlLCAmYnVmWzBdKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0
ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAg
ICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBH
TF9DTEFNUF9UT19FREdFKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKworICAgICAgICBkcmF3UXVh
ZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisKKyAgICAgICAgR0x1Ynl0ZSBleHBlY3Rl
ZFJHQiA9IGZvcm1hdEhhc1JHQihmb3JtYXQpID8gMjU1IDogMDsKKyAgICAgICAgRVhQRUNUX1BJ
WEVMX0VRKDAsIDAsIGV4cGVjdGVkUkdCLCBleHBlY3RlZFJHQiwgZXhwZWN0ZWRSR0IsIDI1NSk7
CisKKyAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGV4KTsKKyAgICB9CisKKyAgICBHTHVp
bnQgbVByb2dyYW07Cit9OworCitURVNUX1AoVW5wYWNrQWxpZ25tZW50VGVzdCwgRGVmYXVsdEFs
aWdubWVudCkKK3sKKyAgICBHTGludCBkZWZhdWx0QWxpZ25tZW50OworICAgIGdsR2V0SW50ZWdl
cnYoR0xfVU5QQUNLX0FMSUdOTUVOVCwgJmRlZmF1bHRBbGlnbm1lbnQpOworICAgIEVYUEVDVF9F
UShkZWZhdWx0QWxpZ25tZW50LCA0KTsKK30KKworCitURVNUX1AoVW5wYWNrQWxpZ25tZW50VGVz
dCwgQWxpZ25tZW50MVJHQkFVQnl0ZSkKK3sKKyAgICB0ZXN0QWxpZ25tZW50KDEsIDcgKiA0LCBH
TF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFKTsKK30KKworVEVTVF9QKFVucGFja0FsaWdubWVudFRl
c3QsIEFsaWdubWVudDFSR0JVQnl0ZSkKK3sKKyAgICB0ZXN0QWxpZ25tZW50KDEsIDcgKiAzLCBH
TF9SR0IsIEdMX1VOU0lHTkVEX0JZVEUpOworfQorCitURVNUX1AoVW5wYWNrQWxpZ25tZW50VGVz
dCwgQWxpZ25tZW50MVJHQkFVU2hvcnQ0NDQ0KQoreworICAgIHRlc3RBbGlnbm1lbnQoMSwgNyAq
IDIsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQpOworfQorCitURVNUX1AoVW5w
YWNrQWxpZ25tZW50VGVzdCwgQWxpZ25tZW50MVJHQkFVU2hvcnQ1NTUxKQoreworICAgIHRlc3RB
bGlnbm1lbnQoMSwgNyAqIDIsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEpOwor
fQorCitURVNUX1AoVW5wYWNrQWxpZ25tZW50VGVzdCwgQWxpZ25tZW50MVJHQkFVU2hvcnQ1NjUp
Cit7CisgICAgdGVzdEFsaWdubWVudCgxLCA3ICogMiwgR0xfUkdCLCBHTF9VTlNJR05FRF9TSE9S
VF81XzZfNSk7Cit9CisKK1RFU1RfUChVbnBhY2tBbGlnbm1lbnRUZXN0LCBBbGlnbm1lbnQxTEFV
Qnl0ZSkKK3sKKyAgICB0ZXN0QWxpZ25tZW50KDEsIDcgKiAyLCBHTF9MVU1JTkFOQ0VfQUxQSEEs
IEdMX1VOU0lHTkVEX0JZVEUpOworfQorCitURVNUX1AoVW5wYWNrQWxpZ25tZW50VGVzdCwgQWxp
Z25tZW50MUxVQnl0ZSkKK3sKKyAgICB0ZXN0QWxpZ25tZW50KDEsIDcsIEdMX0xVTUlOQU5DRSwg
R0xfVU5TSUdORURfQllURSk7Cit9CisKK1RFU1RfUChVbnBhY2tBbGlnbm1lbnRUZXN0LCBBbGln
bm1lbnQxQVVCeXRlKQoreworICAgIHRlc3RBbGlnbm1lbnQoMSwgNywgR0xfQUxQSEEsIEdMX1VO
U0lHTkVEX0JZVEUpOworfQorCisKK1RFU1RfUChVbnBhY2tBbGlnbm1lbnRUZXN0LCBBbGlnbm1l
bnQyUkdCQVVCeXRlKQoreworICAgIHRlc3RBbGlnbm1lbnQoMiwgNyAqIDQsIEdMX1JHQkEsIEdM
X1VOU0lHTkVEX0JZVEUpOworfQorCitURVNUX1AoVW5wYWNrQWxpZ25tZW50VGVzdCwgQWxpZ25t
ZW50MlJHQlVCeXRlKQoreworICAgIHRlc3RBbGlnbm1lbnQoMiwgNyAqIDMgKyAxLCBHTF9SR0Is
IEdMX1VOU0lHTkVEX0JZVEUpOworfQorCitURVNUX1AoVW5wYWNrQWxpZ25tZW50VGVzdCwgQWxp
Z25tZW50MlJHQkFVU2hvcnQ0NDQ0KQoreworICAgIHRlc3RBbGlnbm1lbnQoMiwgNyAqIDIsIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQpOworfQorCitURVNUX1AoVW5wYWNrQWxp
Z25tZW50VGVzdCwgQWxpZ25tZW50MlJHQkFVU2hvcnQ1NTUxKQoreworICAgIHRlc3RBbGlnbm1l
bnQoMiwgNyAqIDIsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEpOworfQorCitU
RVNUX1AoVW5wYWNrQWxpZ25tZW50VGVzdCwgQWxpZ25tZW50MlJHQkFVU2hvcnQ1NjUpCit7Cisg
ICAgdGVzdEFsaWdubWVudCgyLCA3ICogMiwgR0xfUkdCLCBHTF9VTlNJR05FRF9TSE9SVF81XzZf
NSk7Cit9CisKK1RFU1RfUChVbnBhY2tBbGlnbm1lbnRUZXN0LCBBbGlnbm1lbnQyTEFVQnl0ZSkK
K3sKKyAgICB0ZXN0QWxpZ25tZW50KDIsIDcgKiAyLCBHTF9MVU1JTkFOQ0VfQUxQSEEsIEdMX1VO
U0lHTkVEX0JZVEUpOworfQorCitURVNUX1AoVW5wYWNrQWxpZ25tZW50VGVzdCwgQWxpZ25tZW50
MkxBQnl0ZSkKK3sKKyAgICB0ZXN0QWxpZ25tZW50KDIsIDcgKyAxLCBHTF9MVU1JTkFOQ0UsIEdM
X1VOU0lHTkVEX0JZVEUpOworfQorCitURVNUX1AoVW5wYWNrQWxpZ25tZW50VGVzdCwgQWxpZ25t
ZW50MkFVQnl0ZSkKK3sKKyAgICB0ZXN0QWxpZ25tZW50KDIsIDcgKyAxLCBHTF9BTFBIQSwgR0xf
VU5TSUdORURfQllURSk7Cit9CisKKworVEVTVF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdu
bWVudDRSR0JBVUJ5dGUpCit7CisgICAgdGVzdEFsaWdubWVudCg0LCA3ICogNCwgR0xfUkdCQSwg
R0xfVU5TSUdORURfQllURSk7Cit9CisKK1RFU1RfUChVbnBhY2tBbGlnbm1lbnRUZXN0LCBBbGln
bm1lbnQ0UkdCVUJ5dGUpCit7CisgICAgdGVzdEFsaWdubWVudCg0LCA3ICogMyArIDMsIEdMX1JH
QiwgR0xfVU5TSUdORURfQllURSk7Cit9CisKK1RFU1RfUChVbnBhY2tBbGlnbm1lbnRUZXN0LCBB
bGlnbm1lbnQ0UkdCQVVTaG9ydDQ0NDQpCit7CisgICAgdGVzdEFsaWdubWVudCg0LCA3ICogMiAr
IDIsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQpOworfQorCitURVNUX1AoVW5w
YWNrQWxpZ25tZW50VGVzdCwgQWxpZ25tZW50NFJHQkFVU2hvcnQ1NTUxKQoreworICAgIHRlc3RB
bGlnbm1lbnQoNCwgNyAqIDIgKyAyLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8x
KTsKK30KKworVEVTVF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVudDRSR0JBVVNob3J0
NTY1KQoreworICAgIHRlc3RBbGlnbm1lbnQoNCwgNyAqIDIgKyAyLCBHTF9SR0IsIEdMX1VOU0lH
TkVEX1NIT1JUXzVfNl81KTsKK30KKworVEVTVF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdu
bWVudDRMQVVCeXRlKQoreworICAgIHRlc3RBbGlnbm1lbnQoNCwgNyAqIDIgKyAyLCBHTF9MVU1J
TkFOQ0VfQUxQSEEsIEdMX1VOU0lHTkVEX0JZVEUpOworfQorCitURVNUX1AoVW5wYWNrQWxpZ25t
ZW50VGVzdCwgQWxpZ25tZW50NExVQnl0ZSkKK3sKKyAgICB0ZXN0QWxpZ25tZW50KDQsIDcgKyAx
LCBHTF9MVU1JTkFOQ0UsIEdMX1VOU0lHTkVEX0JZVEUpOworfQorCitURVNUX1AoVW5wYWNrQWxp
Z25tZW50VGVzdCwgQWxpZ25tZW50NEFVQnl0ZSkKK3sKKyAgICB0ZXN0QWxpZ25tZW50KDQsIDcg
KyAxLCBHTF9BTFBIQSwgR0xfVU5TSUdORURfQllURSk7Cit9CisKKworVEVTVF9QKFVucGFja0Fs
aWdubWVudFRlc3QsIEFsaWdubWVudDhSR0JBVUJ5dGUpCit7CisgICAgdGVzdEFsaWdubWVudCg4
LCA3ICogNCArIDQsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUpOworfQorCitURVNUX1AoVW5w
YWNrQWxpZ25tZW50VGVzdCwgQWxpZ25tZW50OFJHQlVCeXRlKQoreworICAgIHRlc3RBbGlnbm1l
bnQoOCwgNyAqIDMgKyAzLCBHTF9SR0IsIEdMX1VOU0lHTkVEX0JZVEUpOworfQorCitURVNUX1Ao
VW5wYWNrQWxpZ25tZW50VGVzdCwgQWxpZ25tZW50OFJHQkFVU2hvcnQ0NDQ0KQoreworICAgIHRl
c3RBbGlnbm1lbnQoOCwgNyAqIDIgKyAyLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9TSE9SVF80XzRf
NF80KTsKK30KKworVEVTVF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVudDhSR0JBVVNo
b3J0NTU1MSkKK3sKKyAgICB0ZXN0QWxpZ25tZW50KDgsIDcgKiAyICsgMiwgR0xfUkdCQSwgR0xf
VU5TSUdORURfU0hPUlRfNV81XzVfMSk7Cit9CisKK1RFU1RfUChVbnBhY2tBbGlnbm1lbnRUZXN0
LCBBbGlnbm1lbnQ4UkdCQVVTaG9ydDU2NSkKK3sKKyAgICB0ZXN0QWxpZ25tZW50KDgsIDcgKiAy
ICsgMiwgR0xfUkdCLCBHTF9VTlNJR05FRF9TSE9SVF81XzZfNSk7Cit9CisKK1RFU1RfUChVbnBh
Y2tBbGlnbm1lbnRUZXN0LCBBbGlnbm1lbnQ4TEFVQnl0ZSkKK3sKKyAgICB0ZXN0QWxpZ25tZW50
KDgsIDcgKiAyICsgMiwgR0xfTFVNSU5BTkNFX0FMUEhBLCBHTF9VTlNJR05FRF9CWVRFKTsKK30K
KworVEVTVF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVudDhMVUJ5dGUpCit7CisgICAg
dGVzdEFsaWdubWVudCg4LCA3ICsgMSwgR0xfTFVNSU5BTkNFLCBHTF9VTlNJR05FRF9CWVRFKTsK
K30KKworVEVTVF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVudDhBVUJ5dGUpCit7Cisg
ICAgdGVzdEFsaWdubWVudCg4LCA3ICsgMSwgR0xfQUxQSEEsIEdMX1VOU0lHTkVEX0JZVEUpOwor
fQorCisvLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hp
Y2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxk
IGJlIHJ1biBhZ2FpbnN0LgorQU5HTEVfSU5TVEFOVElBVEVfVEVTVChVbnBhY2tBbGlnbm1lbnRU
ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICBFUzJfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgp
LAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKCksCisgICAgICAgICAgICAgICAg
ICAgICAgIEVTMl9PUEVOR0xFUygpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdM
RVMoKSk7CisKK30gLy8gbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvZ2xfdGVzdHMvVW5wYWNrUm93TGVuZ3RoLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvVW5wYWNrUm93TGVuZ3RoLmNw
cAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xf
dGVzdHMvVW5wYWNrUm93TGVuZ3RoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzMCBA
QAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKworI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNlCit7CisKK2NsYXNzIFVucGFja1Jvd0xlbmd0
aFRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBVbnBhY2tSb3dM
ZW5ndGhUZXN0KCkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7CisgICAgICAg
IHNldFdpbmRvd0hlaWdodCgxMjgpOworICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOworICAg
ICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgp
OworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0RlcHRo
Qml0cygyNCk7CisKKyAgICAgICAgbVByb2dyYW0gPSAwOworICAgIH0KKworICAgIHZvaWQgU2V0
VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOworCisgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UK
KyAgICAgICAgKAorICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworICAgICAgICAg
ICAgYXR0cmlidXRlIHZlYzQgcG9zaXRpb247CisKKyAgICAgICAgICAgIHZvaWQgbWFpbigpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFn
bWVudFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKKyAgICAgICAgKAorICAgICAgICAgICAg
dW5pZm9ybSBzYW1wbGVyMkQgdGV4OworCisgICAgICAgICAgICB2b2lkIG1haW4oKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh0ZXgsIHZl
YzIoMC4wLCAxLjApKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICBtUHJv
Z3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJT
b3VyY2UpOworICAgICAgICBpZiAobVByb2dyYW0gPT0gMCkKKyAgICAgICAgeworICAgICAgICAg
ICAgRkFJTCgpIDw8ICJzaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLiI7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGdsRGVs
ZXRlUHJvZ3JhbShtUHJvZ3JhbSk7CisKKyAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOwor
ICAgIH0KKworICAgIHZvaWQgdGVzdFJvd0xlbmd0aChpbnQgdGV4U2l6ZSwgaW50IHJvd0xlbmd0
aCkKKyAgICB7CisgICAgICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1JPV19MRU5HVEgsIHJv
d0xlbmd0aCk7CisKKyAgICAgICAgaWYgKChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA9PSAzKSB8
fCBleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfdW5wYWNrX3N1YmltYWdlIikpCisgICAgICAgIHsK
KyAgICAgICAgICAgIC8vIE9ubHkgdGV4U2l6ZSAqIHRleFNpemUgcmVnaW9uIGlzIGZpbGxlZCBh
cyBXSElURSwgb3RoZXIgcGFydHMgYXJlIEJMQUNLLgorICAgICAgICAgICAgLy8gSWYgdGhlIFVO
UEFDS19ST1dfTEVOR1RIIGlzIGltcGxlbWVudGVkIGNvcnJlY3RseSwgYWxsIHRleGVscyBpbnNp
ZGUgdGhpcyB0ZXh0dXJlIGFyZSBXSElURS4KKyAgICAgICAgICAgIHN0ZDo6dmVjdG9yPEdMdWJ5
dGU+IGJ1Zihyb3dMZW5ndGggKiB0ZXhTaXplICogNCk7CisgICAgICAgICAgICBmb3IgKGludCB5
ID0gMDsgeSA8IHRleFNpemU7IHkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBz
dGQ6OnZlY3RvcjxHTHVieXRlPjo6aXRlcmF0b3Igcm93SXRlciA9IGJ1Zi5iZWdpbigpICsgeSAq
IHJvd0xlbmd0aCAqIDQ7CisgICAgICAgICAgICAgICAgc3RkOjpmaWxsKHJvd0l0ZXIsIHJvd0l0
ZXIgKyB0ZXhTaXplICogNCwgc3RhdGljX2Nhc3Q8R0x1Ynl0ZT4oMjU1dSkpOworICAgICAgICAg
ICAgICAgIHN0ZDo6ZmlsbChyb3dJdGVyICsgdGV4U2l6ZSAqIDQsIHJvd0l0ZXIgKyByb3dMZW5n
dGggKiA0LCBzdGF0aWNfY2FzdDxHTHVieXRlPigwdSkpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBHTHVpbnQgdGV4OworICAgICAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4KTsK
KyAgICAgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4KTsKKworICAgICAg
ICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIHRleFNpemUsIHRl
eFNpemUsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsICZidWZbMF0pOworICAgICAgICAg
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwg
R0xfTElORUFSKTsKKyAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAgICAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VE
R0UpOworCisgICAgICAgICAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7
CisKKyAgICAgICAgICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAyNTUsIDI1NSwgMjU1LCAyNTUp
OworICAgICAgICAgICAgRVhQRUNUX1BJWEVMX0VRKDEsIDAsIDI1NSwgMjU1LCAyNTUsIDI1NSk7
CisKKyAgICAgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRleCk7CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5W
QUxJRF9FTlVNKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEdMdWludCBtUHJvZ3JhbTsKK307
CisKK1RFU1RfUChVbnBhY2tSb3dMZW5ndGhUZXN0LCBSb3dMZW5ndGgxMjgpCit7CisgICAgdGVz
dFJvd0xlbmd0aCgxMjgsIDEyOCk7Cit9CisKK1RFU1RfUChVbnBhY2tSb3dMZW5ndGhUZXN0LCBS
b3dMZW5ndGgxMDI0KQoreworICAgIHRlc3RSb3dMZW5ndGgoMTI4LCAxMDI0KTsKK30KKworLy8g
VXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRl
cmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4g
YWdhaW5zdC4KK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoVW5wYWNrUm93TGVuZ3RoVGVzdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExKCksCisgICAgICAgICAgICAgICAgICAgICAg
IEVTMl9EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAorICAgICAg
ICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVT
M19PUEVOR0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCksCisgICAg
ICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygpKTsKKworfSAvLyBuYW1lc3BhY2UKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9WZXJ0ZXhBdHRy
aWJ1dGVUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZ2xfdGVzdHMvVmVydGV4QXR0cmlidXRlVGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1ZlcnRleEF0dHJpYnV0
ZVRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODk0IEBACisvLworLy8gQ29weXJp
Z2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisj
aW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKwordXNpbmcgbmFtZXNwYWNlIGFuZ2xl
OworCituYW1lc3BhY2UKK3sKKworR0xzaXplaSBUeXBlU3RyaWRlKEdMZW51bSBhdHRyaWJUeXBl
KQoreworICAgIHN3aXRjaCAoYXR0cmliVHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVU5T
SUdORURfQllURToKKyAgICAgICAgY2FzZSBHTF9CWVRFOgorICAgICAgICAgICAgcmV0dXJuIDE7
CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAgICAgIGNhc2UgR0xfU0hPUlQ6
CisgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6Cisg
ICAgICAgIGNhc2UgR0xfSU5UOgorICAgICAgICBjYXNlIEdMX0ZMT0FUOgorICAgICAgICAgICAg
cmV0dXJuIDQ7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K0dMZmxvYXQgTm9ybWFsaXplKFQgdmFsdWUpCit7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2ludGVncmFsPFQ+Ojp2YWx1ZSwgIkludGVnZXIgcmVxdWlyZWQuIik7CisgICAgaWYgKHN0ZDo6
aXNfc2lnbmVkPFQ+Ojp2YWx1ZSkKKyAgICB7CisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3Rk
OjptYWtlX3Vuc2lnbmVkPFQ+Ojp0eXBlIHVuc2lnbmVkX3R5cGU7CisgICAgICAgIHJldHVybiAo
Mi4wZiAqIHN0YXRpY19jYXN0PEdMZmxvYXQ+KHZhbHVlKSArIDEuMGYpIC8KKyAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PEdMZmxvYXQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWRfdHlw
ZT46Om1heCgpKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEdMZmxvYXQ+KHZhbHVlKSAvIHN0YXRpY19jYXN0PEdMZmxvYXQ+KHN0ZDo6bnVtZXJp
Y19saW1pdHM8VD46Om1heCgpKTsKKyAgICB9Cit9CisKK2NsYXNzIFZlcnRleEF0dHJpYnV0ZVRl
c3QgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBWZXJ0ZXhBdHRyaWJ1
dGVUZXN0KCkKKyAgICAgICAgOiBtUHJvZ3JhbSgwKSwgbVRlc3RBdHRyaWIoLTEpLCBtRXhwZWN0
ZWRBdHRyaWIoLTEpLCBtQnVmZmVyKDApLCBtUXVhZEJ1ZmZlcigwKQorICAgIHsKKyAgICAgICAg
c2V0V2luZG93V2lkdGgoMTI4KTsKKyAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7CisgICAg
ICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsK
KyAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0FscGhhQml0
cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnRGVwdGhCaXRzKDI0KTsKKyAgICB9CisKKyAgICBlbnVt
IGNsYXNzIFNvdXJjZQorICAgIHsKKyAgICAgICAgQlVGRkVSLAorICAgICAgICBJTU1FRElBVEUs
CisgICAgfTsKKworICAgIHN0cnVjdCBUZXN0RGF0YSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJs
ZQorICAgIHsKKyAgICAgICAgVGVzdERhdGEoR0xlbnVtIHR5cGVJbiwKKyAgICAgICAgICAgICAg
ICAgR0xib29sZWFuIG5vcm1hbGl6ZWRJbiwKKyAgICAgICAgICAgICAgICAgU291cmNlIHNvdXJj
ZUluLAorICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbnB1dERhdGFJbiwKKyAgICAgICAg
ICAgICAgICAgY29uc3QgR0xmbG9hdCAqZXhwZWN0ZWREYXRhSW4pCisgICAgICAgICAgICA6IHR5
cGUodHlwZUluKSwKKyAgICAgICAgICAgICAgbm9ybWFsaXplZChub3JtYWxpemVkSW4pLAorICAg
ICAgICAgICAgICBidWZmZXJPZmZzZXQoMCksCisgICAgICAgICAgICAgIHNvdXJjZShzb3VyY2VJ
biksCisgICAgICAgICAgICAgIGlucHV0RGF0YShpbnB1dERhdGFJbiksCisgICAgICAgICAgICAg
IGV4cGVjdGVkRGF0YShleHBlY3RlZERhdGFJbikKKyAgICAgICAgeworICAgICAgICB9CisKKyAg
ICAgICAgR0xlbnVtIHR5cGU7CisgICAgICAgIEdMYm9vbGVhbiBub3JtYWxpemVkOworICAgICAg
ICBzaXplX3QgYnVmZmVyT2Zmc2V0OworICAgICAgICBTb3VyY2Ugc291cmNlOworCisgICAgICAg
IGNvbnN0IHZvaWQgKmlucHV0RGF0YTsKKyAgICAgICAgY29uc3QgR0xmbG9hdCAqZXhwZWN0ZWRE
YXRhOworICAgIH07CisKKyAgICB2b2lkIHNldHVwVGVzdChjb25zdCBUZXN0RGF0YSAmdGVzdCwg
R0xpbnQgdHlwZVNpemUpCisgICAgeworICAgICAgICBpZiAobVByb2dyYW0gPT0gMCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaW5pdEJhc2ljUHJvZ3JhbSgpOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKHRlc3Quc291cmNlID09IFNvdXJjZTo6QlVGRkVSKQorICAgICAgICB7CisgICAgICAg
ICAgICBHTHNpemVpIGRhdGFTaXplID0gbVZlcnRleENvdW50ICogVHlwZVN0cmlkZSh0ZXN0LnR5
cGUpICogdHlwZVNpemU7CisgICAgICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVS
LCBtQnVmZmVyKTsKKyAgICAgICAgICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIGRh
dGFTaXplLCB0ZXN0LmlucHV0RGF0YSwgR0xfU1RBVElDX0RSQVcpOworICAgICAgICAgICAgZ2xW
ZXJ0ZXhBdHRyaWJQb2ludGVyKG1UZXN0QXR0cmliLCB0eXBlU2l6ZSwgdGVzdC50eXBlLCB0ZXN0
Lm5vcm1hbGl6ZWQsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDxHTHZvaWQgKj4odGVzdC5idWZmZXJPZmZzZXQpKTsKKyAgICAgICAgICAgIGds
QmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIDApOworICAgICAgICB9CisgICAgICAgIGVsc2UK
KyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUX0VRKFNvdXJjZTo6SU1NRURJQVRFLCB0ZXN0
LnNvdXJjZSk7CisgICAgICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCAwKTsK
KyAgICAgICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihtVGVzdEF0dHJpYiwgdHlwZVNpemUs
IHRlc3QudHlwZSwgdGVzdC5ub3JtYWxpemVkLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRlc3QuaW5wdXREYXRhKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsVmVydGV4
QXR0cmliUG9pbnRlcihtRXhwZWN0ZWRBdHRyaWIsIHR5cGVTaXplLCBHTF9GTE9BVCwgR0xfRkFM
U0UsIDAsIHRlc3QuZXhwZWN0ZWREYXRhKTsKKworICAgICAgICBnbEVuYWJsZVZlcnRleEF0dHJp
YkFycmF5KG1UZXN0QXR0cmliKTsKKyAgICAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSht
RXhwZWN0ZWRBdHRyaWIpOworICAgIH0KKworICAgIHZvaWQgY2hlY2tQaXhlbHMoKQorICAgIHsK
KyAgICAgICAgR0xpbnQgdmlld3BvcnRTaXplWzRdOworICAgICAgICBnbEdldEludGVnZXJ2KEdM
X1ZJRVdQT1JULCB2aWV3cG9ydFNpemUpOworCisgICAgICAgIEdMaW50IG1pZFBpeGVsWCA9ICh2
aWV3cG9ydFNpemVbMF0gKyB2aWV3cG9ydFNpemVbMl0pIC8gMjsKKyAgICAgICAgR0xpbnQgbWlk
UGl4ZWxZID0gKHZpZXdwb3J0U2l6ZVsxXSArIHZpZXdwb3J0U2l6ZVszXSkgLyAyOworCisgICAg
ICAgIC8vIFdlIG5lZWQgdG8gb2Zmc2V0IG91ciBjaGVja3MgZnJvbSB0cmlhbmdsZSBlZGdlcyB0
byBlbnN1cmUgd2UgZG9uJ3QgZmFsbCBvbiBhIHNpbmdsZSB0cmkKKyAgICAgICAgLy8gQXZvaWQg
bWFraW5nIGFzc3VtcHRpb25zIG9mIGRyYXdRdWFkIHdpdGggZm91ciBjaGVja3MgdG8gY2hlY2sg
dGhlIGZvdXIgcG9zc2libGUgdHJpCisgICAgICAgIC8vIHJlZ2lvbnMKKyAgICAgICAgRVhQRUNU
X1BJWEVMX0VRKChtaWRQaXhlbFggKyB2aWV3cG9ydFNpemVbMF0pIC8gMiwgbWlkUGl4ZWxZLCAy
NTUsIDI1NSwgMjU1LCAyNTUpOworICAgICAgICBFWFBFQ1RfUElYRUxfRVEoKG1pZFBpeGVsWCAr
IHZpZXdwb3J0U2l6ZVsyXSkgLyAyLCBtaWRQaXhlbFksIDI1NSwgMjU1LCAyNTUsIDI1NSk7Cisg
ICAgICAgIEVYUEVDVF9QSVhFTF9FUShtaWRQaXhlbFgsIChtaWRQaXhlbFkgKyB2aWV3cG9ydFNp
emVbMV0pIC8gMiwgMjU1LCAyNTUsIDI1NSwgMjU1KTsKKyAgICAgICAgRVhQRUNUX1BJWEVMX0VR
KG1pZFBpeGVsWCwgKG1pZFBpeGVsWSArIHZpZXdwb3J0U2l6ZVszXSkgLyAyLCAyNTUsIDI1NSwg
MjU1LCAyNTUpOworICAgIH0KKworICAgIHZvaWQgcnVuVGVzdChjb25zdCBUZXN0RGF0YSAmdGVz
dCkKKyAgICB7CisgICAgICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogRmlndXJlIG91dCB3aHkgdGhp
cyBpcyBicm9rZW4gb24gQU1EIE9wZW5HTAorICAgICAgICBpZiAoSXNBTUQoKSAmJiBnZXRQbGF0
Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFKQor
ICAgICAgICB7CisgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBBTUQg
T3BlbkdMLiIgPDwgc3RkOjplbmRsOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgZm9yIChHTGludCBpID0gMDsgaSA8IDQ7IGkrKykKKyAgICAgICAgeworICAgICAg
ICAgICAgR0xpbnQgdHlwZVNpemUgPSBpICsgMTsKKyAgICAgICAgICAgIHNldHVwVGVzdCh0ZXN0
LCB0eXBlU2l6ZSk7CisKKyAgICAgICAgICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24i
LCAwLjVmKTsKKworICAgICAgICAgICAgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkobVRlc3RB
dHRyaWIpOworICAgICAgICAgICAgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkobUV4cGVjdGVk
QXR0cmliKTsKKworICAgICAgICAgICAgY2hlY2tQaXhlbHMoKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpT
ZXRVcCgpOworCisgICAgICAgIGdsQ2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKKyAgICAgICAgZ2xD
bGVhckRlcHRoZigwLjApOworICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBH
TF9ERVBUSF9CVUZGRVJfQklUKTsKKworICAgICAgICBnbERpc2FibGUoR0xfREVQVEhfVEVTVCk7
CisKKyAgICAgICAgZ2xHZW5CdWZmZXJzKDEsICZtQnVmZmVyKTsKKyAgICB9CisKKyAgICB2b2lk
IFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJv
Z3JhbSk7CisgICAgICAgIGdsRGVsZXRlQnVmZmVycygxLCAmbUJ1ZmZlcik7CisgICAgICAgIGds
RGVsZXRlQnVmZmVycygxLCAmbVF1YWRCdWZmZXIpOworCisgICAgICAgIEFOR0xFVGVzdDo6VGVh
ckRvd24oKTsKKyAgICB9CisKKyAgICBHTHVpbnQgY29tcGlsZU11bHRpQXR0cmliUHJvZ3JhbShH
TGludCBhdHRyaWJDb3VudCkKKyAgICB7CisgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHNoYWRl
clN0cmVhbTsKKworICAgICAgICBzaGFkZXJTdHJlYW0gPDwgImF0dHJpYnV0ZSBtZWRpdW1wIHZl
YzQgcG9zaXRpb247IiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIGZvciAoR0xpbnQgYXR0cmliSW5k
ZXggPSAwOyBhdHRyaWJJbmRleCA8IGF0dHJpYkNvdW50OyArK2F0dHJpYkluZGV4KQorICAgICAg
ICB7CisgICAgICAgICAgICBzaGFkZXJTdHJlYW0gPDwgImF0dHJpYnV0ZSBmbG9hdCBhIiA8PCBh
dHRyaWJJbmRleCA8PCAiOyIgPDwgc3RkOjplbmRsOworICAgICAgICB9CisgICAgICAgIHNoYWRl
clN0cmVhbSA8PCAidmFyeWluZyBtZWRpdW1wIGZsb2F0IGNvbG9yOyIgPDwgc3RkOjplbmRsCisg
ICAgICAgICAgICAgICAgICAgICA8PCAidm9pZCBtYWluKCkgeyIgPDwgc3RkOjplbmRsCisgICAg
ICAgICAgICAgICAgICAgICA8PCAiICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOyIgPDwgc3RkOjpl
bmRsCisgICAgICAgICAgICAgICAgICAgICA8PCAiICBjb2xvciA9IDAuMDsiIDw8IHN0ZDo6ZW5k
bDsKKyAgICAgICAgZm9yIChHTGludCBhdHRyaWJJbmRleCA9IDA7IGF0dHJpYkluZGV4IDwgYXR0
cmliQ291bnQ7ICsrYXR0cmliSW5kZXgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNoYWRlclN0
cmVhbSA8PCAiICBjb2xvciArPSBhIiA8PCBhdHRyaWJJbmRleCA8PCAiOyIgPDwgc3RkOjplbmRs
OworICAgICAgICB9CisgICAgICAgIHNoYWRlclN0cmVhbSA8PCAifSIgPDwgc3RkOjplbmRsOwor
CisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHRlc3RGcmFnbWVudFNoYWRlclNvdXJjZSA9Cisg
ICAgICAgICAgICBTSEFERVJfU09VUkNFKHZhcnlpbmcgbWVkaXVtcCBmbG9hdCBjb2xvcjsgdm9p
ZCBtYWluKHZvaWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoY29sb3IsIDAuMCwgMC4wLCAxLjAp
OworICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICByZXR1cm4gQ29tcGls
ZVByb2dyYW0oc2hhZGVyU3RyZWFtLnN0cigpLCB0ZXN0RnJhZ21lbnRTaGFkZXJTb3VyY2UpOwor
ICAgIH0KKworICAgIHZvaWQgc2V0dXBNdWx0aUF0dHJpYnMoR0x1aW50IHByb2dyYW0sIEdMaW50
IGF0dHJpYkNvdW50LCBHTGZsb2F0IHZhbHVlKQorICAgIHsKKyAgICAgICAgZ2xVc2VQcm9ncmFt
KHByb2dyYW0pOworICAgICAgICBmb3IgKEdMaW50IGF0dHJpYkluZGV4ID0gMDsgYXR0cmliSW5k
ZXggPCBhdHRyaWJDb3VudDsgKythdHRyaWJJbmRleCkKKyAgICAgICAgeworICAgICAgICAgICAg
c3RkOjpzdHJpbmdzdHJlYW0gYXR0cmliU3RyZWFtOworICAgICAgICAgICAgYXR0cmliU3RyZWFt
IDw8ICJhIiA8PCBhdHRyaWJJbmRleDsKKyAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uID0gZ2xH
ZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBhdHRyaWJTdHJlYW0uc3RyKCkuY19zdHIoKSk7Cisg
ICAgICAgICAgICBBU1NFUlRfTkUoLTEsIGxvY2F0aW9uKTsKKyAgICAgICAgICAgIGdsVmVydGV4
QXR0cmliMWYobG9jYXRpb24sIHZhbHVlKTsKKyAgICAgICAgICAgIGdsRGlzYWJsZVZlcnRleEF0
dHJpYkFycmF5KGxvY2F0aW9uKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgaW5pdEJh
c2ljUHJvZ3JhbSgpCisgICAgeworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB0ZXN0VmVydGV4
U2hhZGVyU291cmNlID0KKyAgICAgICAgICAgICJhdHRyaWJ1dGUgbWVkaXVtcCB2ZWM0IHBvc2l0
aW9uO1xuIgorICAgICAgICAgICAgImF0dHJpYnV0ZSBtZWRpdW1wIHZlYzQgdGVzdDtcbiIKKyAg
ICAgICAgICAgICJhdHRyaWJ1dGUgbWVkaXVtcCB2ZWM0IGV4cGVjdGVkO1xuIgorICAgICAgICAg
ICAgInZhcnlpbmcgbWVkaXVtcCB2ZWM0IGNvbG9yO1xuIgorICAgICAgICAgICAgInZvaWQgbWFp
bih2b2lkKVxuIgorICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICIgICAgZ2xfUG9zaXRp
b24gPSBwb3NpdGlvbjtcbiIKKyAgICAgICAgICAgICIgICAgdmVjNCB0aHJlc2hvbGQgPSBtYXgo
YWJzKGV4cGVjdGVkKSAqIDAuMDEsIDEuMCAvIDY0LjApO1xuIgorICAgICAgICAgICAgIiAgICBj
b2xvciA9IHZlYzQobGVzc1RoYW5FcXVhbChhYnModGVzdCAtIGV4cGVjdGVkKSwgdGhyZXNob2xk
KSk7XG4iCisgICAgICAgICAgICAifVxuIjsKKworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB0
ZXN0RnJhZ21lbnRTaGFkZXJTb3VyY2UgPQorICAgICAgICAgICAgInZhcnlpbmcgbWVkaXVtcCB2
ZWM0IGNvbG9yO1xuIgorICAgICAgICAgICAgInZvaWQgbWFpbih2b2lkKVxuIgorICAgICAgICAg
ICAgIntcbiIKKyAgICAgICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gY29sb3I7XG4iCisgICAg
ICAgICAgICAifVxuIjsKKworICAgICAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHRlc3RW
ZXJ0ZXhTaGFkZXJTb3VyY2UsIHRlc3RGcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgICAgIEFT
U0VSVF9ORSgwdSwgbVByb2dyYW0pOworCisgICAgICAgIG1UZXN0QXR0cmliID0gZ2xHZXRBdHRy
aWJMb2NhdGlvbihtUHJvZ3JhbSwgInRlc3QiKTsKKyAgICAgICAgQVNTRVJUX05FKC0xLCBtVGVz
dEF0dHJpYik7CisgICAgICAgIG1FeHBlY3RlZEF0dHJpYiA9IGdsR2V0QXR0cmliTG9jYXRpb24o
bVByb2dyYW0sICJleHBlY3RlZCIpOworICAgICAgICBBU1NFUlRfTkUoLTEsIG1FeHBlY3RlZEF0
dHJpYik7CisKKyAgICAgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IG1WZXJ0ZXhDb3VudCA9IDI0OworCisgICAgR0x1aW50IG1Qcm9n
cmFtOworICAgIEdMaW50IG1UZXN0QXR0cmliOworICAgIEdMaW50IG1FeHBlY3RlZEF0dHJpYjsK
KyAgICBHTHVpbnQgbUJ1ZmZlcjsKKyAgICBHTHVpbnQgbVF1YWRCdWZmZXI7Cit9OworCitURVNU
X1AoVmVydGV4QXR0cmlidXRlVGVzdCwgVW5zaWduZWRCeXRlVW5ub3JtYWxpemVkKQoreworICAg
IEdMdWJ5dGUgaW5wdXREYXRhW21WZXJ0ZXhDb3VudF0gPSB7IDAsIDEsIDIsIDMsIDQsIDUsIDYs
IDcsIDEyNSwgMTI2LCAxMjcsIDEyOCwgMTI5LCAyNTAsIDI1MSwgMjUyLCAyNTMsIDI1NCwgMjU1
IH07CisgICAgR0xmbG9hdCBleHBlY3RlZERhdGFbbVZlcnRleENvdW50XTsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1WZXJ0ZXhDb3VudDsgaSsrKQorICAgIHsKKyAgICAgICAgZXhwZWN0
ZWREYXRhW2ldID0gaW5wdXREYXRhW2ldOworICAgIH0KKworICAgIFRlc3REYXRhIGRhdGEoR0xf
VU5TSUdORURfQllURSwgR0xfRkFMU0UsIFNvdXJjZTo6SU1NRURJQVRFLCBpbnB1dERhdGEsIGV4
cGVjdGVkRGF0YSk7CisgICAgcnVuVGVzdChkYXRhKTsKK30KKworVEVTVF9QKFZlcnRleEF0dHJp
YnV0ZVRlc3QsIFVuc2lnbmVkQnl0ZU5vcm1hbGl6ZWQpCit7CisgICAgR0x1Ynl0ZSBpbnB1dERh
dGFbbVZlcnRleENvdW50XSA9IHsgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgMTI1LCAxMjYsIDEy
NywgMTI4LCAxMjksIDI1MCwgMjUxLCAyNTIsIDI1MywgMjU0LCAyNTUgfTsKKyAgICBHTGZsb2F0
IGV4cGVjdGVkRGF0YVttVmVydGV4Q291bnRdOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bVZlcnRleENvdW50OyBpKyspCisgICAgeworICAgICAgICBleHBlY3RlZERhdGFbaV0gPSBOb3Jt
YWxpemUoaW5wdXREYXRhW2ldKTsKKyAgICB9CisKKyAgICBUZXN0RGF0YSBkYXRhKEdMX1VOU0lH
TkVEX0JZVEUsIEdMX1RSVUUsIFNvdXJjZTo6SU1NRURJQVRFLCBpbnB1dERhdGEsIGV4cGVjdGVk
RGF0YSk7CisgICAgcnVuVGVzdChkYXRhKTsKK30KKworVEVTVF9QKFZlcnRleEF0dHJpYnV0ZVRl
c3QsIEJ5dGVVbm5vcm1hbGl6ZWQpCit7CisgICAgR0xieXRlIGlucHV0RGF0YVttVmVydGV4Q291
bnRdID0geyAwLCAxLCAyLCAzLCA0LCAtMSwgLTIsIC0zLCAtNCwgMTI1LCAxMjYsIDEyNywgLTEy
OCwgLTEyNywgLTEyNiB9OworICAgIEdMZmxvYXQgZXhwZWN0ZWREYXRhW21WZXJ0ZXhDb3VudF07
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtVmVydGV4Q291bnQ7IGkrKykKKyAgICB7Cisg
ICAgICAgIGV4cGVjdGVkRGF0YVtpXSA9IGlucHV0RGF0YVtpXTsKKyAgICB9CisKKyAgICBUZXN0
RGF0YSBkYXRhKEdMX0JZVEUsIEdMX0ZBTFNFLCBTb3VyY2U6OklNTUVESUFURSwgaW5wdXREYXRh
LCBleHBlY3RlZERhdGEpOworICAgIHJ1blRlc3QoZGF0YSk7Cit9CisKK1RFU1RfUChWZXJ0ZXhB
dHRyaWJ1dGVUZXN0LCBCeXRlTm9ybWFsaXplZCkKK3sKKyAgICBHTGJ5dGUgaW5wdXREYXRhW21W
ZXJ0ZXhDb3VudF0gPSB7IDAsIDEsIDIsIDMsIDQsIC0xLCAtMiwgLTMsIC00LCAxMjUsIDEyNiwg
MTI3LCAtMTI4LCAtMTI3LCAtMTI2IH07CisgICAgR0xmbG9hdCBleHBlY3RlZERhdGFbbVZlcnRl
eENvdW50XTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1WZXJ0ZXhDb3VudDsgaSsrKQor
ICAgIHsKKyAgICAgICAgZXhwZWN0ZWREYXRhW2ldID0gTm9ybWFsaXplKGlucHV0RGF0YVtpXSk7
CisgICAgfQorCisgICAgVGVzdERhdGEgZGF0YShHTF9CWVRFLCBHTF9UUlVFLCBTb3VyY2U6OklN
TUVESUFURSwgaW5wdXREYXRhLCBleHBlY3RlZERhdGEpOworICAgIHJ1blRlc3QoZGF0YSk7Cit9
CisKK1RFU1RfUChWZXJ0ZXhBdHRyaWJ1dGVUZXN0LCBVbnNpZ25lZFNob3J0VW5ub3JtYWxpemVk
KQoreworICAgIEdMdXNob3J0IGlucHV0RGF0YVttVmVydGV4Q291bnRdID0geyAwLCAxLCAyLCAz
LCAyNTQsIDI1NSwgMjU2LCAzMjc2NiwgMzI3NjcsIDMyNzY4LCA2NTUzMywgNjU1MzQsIDY1NTM1
IH07CisgICAgR0xmbG9hdCBleHBlY3RlZERhdGFbbVZlcnRleENvdW50XTsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1WZXJ0ZXhDb3VudDsgaSsrKQorICAgIHsKKyAgICAgICAgZXhwZWN0
ZWREYXRhW2ldID0gaW5wdXREYXRhW2ldOworICAgIH0KKworICAgIFRlc3REYXRhIGRhdGEoR0xf
VU5TSUdORURfU0hPUlQsIEdMX0ZBTFNFLCBTb3VyY2U6OklNTUVESUFURSwgaW5wdXREYXRhLCBl
eHBlY3RlZERhdGEpOworICAgIHJ1blRlc3QoZGF0YSk7Cit9CisKK1RFU1RfUChWZXJ0ZXhBdHRy
aWJ1dGVUZXN0LCBVbnNpZ25lZFNob3J0Tm9ybWFsaXplZCkKK3sKKyAgICBHTHVzaG9ydCBpbnB1
dERhdGFbbVZlcnRleENvdW50XSA9IHsgMCwgMSwgMiwgMywgMjU0LCAyNTUsIDI1NiwgMzI3NjYs
IDMyNzY3LCAzMjc2OCwgNjU1MzMsIDY1NTM0LCA2NTUzNSB9OworICAgIEdMZmxvYXQgZXhwZWN0
ZWREYXRhW21WZXJ0ZXhDb3VudF07CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtVmVydGV4
Q291bnQ7IGkrKykKKyAgICB7CisgICAgICAgIGV4cGVjdGVkRGF0YVtpXSA9IE5vcm1hbGl6ZShp
bnB1dERhdGFbaV0pOworICAgIH0KKworICAgIFRlc3REYXRhIGRhdGEoR0xfVU5TSUdORURfU0hP
UlQsIEdMX1RSVUUsIFNvdXJjZTo6SU1NRURJQVRFLCBpbnB1dERhdGEsIGV4cGVjdGVkRGF0YSk7
CisgICAgcnVuVGVzdChkYXRhKTsKK30KKworVEVTVF9QKFZlcnRleEF0dHJpYnV0ZVRlc3QsIFNo
b3J0VW5ub3JtYWxpemVkKQoreworICAgIEdMc2hvcnQgaW5wdXREYXRhW21WZXJ0ZXhDb3VudF0g
PSB7ICAwLCAxLCAyLCAzLCAtMSwgLTIsIC0zLCAtNCwgMzI3NjYsIDMyNzY3LCAtMzI3NjgsIC0z
Mjc2NywgLTMyNzY2IH07CisgICAgR0xmbG9hdCBleHBlY3RlZERhdGFbbVZlcnRleENvdW50XTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1WZXJ0ZXhDb3VudDsgaSsrKQorICAgIHsKKyAg
ICAgICAgZXhwZWN0ZWREYXRhW2ldID0gaW5wdXREYXRhW2ldOworICAgIH0KKworICAgIFRlc3RE
YXRhIGRhdGEoR0xfU0hPUlQsIEdMX0ZBTFNFLCBTb3VyY2U6OklNTUVESUFURSwgaW5wdXREYXRh
LCBleHBlY3RlZERhdGEpOworICAgIHJ1blRlc3QoZGF0YSk7Cit9CisKK1RFU1RfUChWZXJ0ZXhB
dHRyaWJ1dGVUZXN0LCBTaG9ydE5vcm1hbGl6ZWQpCit7CisgICAgR0xzaG9ydCBpbnB1dERhdGFb
bVZlcnRleENvdW50XSA9IHsgIDAsIDEsIDIsIDMsIC0xLCAtMiwgLTMsIC00LCAzMjc2NiwgMzI3
NjcsIC0zMjc2OCwgLTMyNzY3LCAtMzI3NjYgfTsKKyAgICBHTGZsb2F0IGV4cGVjdGVkRGF0YVtt
VmVydGV4Q291bnRdOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVZlcnRleENvdW50OyBp
KyspCisgICAgeworICAgICAgICBleHBlY3RlZERhdGFbaV0gPSBOb3JtYWxpemUoaW5wdXREYXRh
W2ldKTsKKyAgICB9CisKKyAgICBUZXN0RGF0YSBkYXRhKEdMX1NIT1JULCBHTF9UUlVFLCBTb3Vy
Y2U6OklNTUVESUFURSwgaW5wdXREYXRhLCBleHBlY3RlZERhdGEpOworICAgIHJ1blRlc3QoZGF0
YSk7Cit9CisKK2NsYXNzIFZlcnRleEF0dHJpYnV0ZVRlc3RFUzMgOiBwdWJsaWMgVmVydGV4QXR0
cmlidXRlVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgVmVydGV4QXR0cmlidXRlVGVzdEVTMygp
IHt9Cit9OworCitURVNUX1AoVmVydGV4QXR0cmlidXRlVGVzdEVTMywgSW50VW5ub3JtYWxpemVk
KQoreworICAgIEdMaW50IGxvICAgICAgICAgICAgICAgICAgICAgID0gc3RkOjpudW1lcmljX2xp
bWl0czxHTGludD46Om1pbigpOworICAgIEdMaW50IGhpICAgICAgICAgICAgICAgICAgICAgID0g
c3RkOjpudW1lcmljX2xpbWl0czxHTGludD46Om1heCgpOworICAgIEdMaW50IGlucHV0RGF0YVtt
VmVydGV4Q291bnRdID0gezAsIDEsIDIsIDMsIC0xLCAtMiwgLTMsIC00LCAtMSwgaGksIGhpIC0g
MSwgbG8sIGxvICsgMX07CisgICAgR0xmbG9hdCBleHBlY3RlZERhdGFbbVZlcnRleENvdW50XTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1WZXJ0ZXhDb3VudDsgaSsrKQorICAgIHsKKyAg
ICAgICAgZXhwZWN0ZWREYXRhW2ldID0gc3RhdGljX2Nhc3Q8R0xmbG9hdD4oaW5wdXREYXRhW2ld
KTsKKyAgICB9CisKKyAgICBUZXN0RGF0YSBkYXRhKEdMX0lOVCwgR0xfRkFMU0UsIFNvdXJjZTo6
QlVGRkVSLCBpbnB1dERhdGEsIGV4cGVjdGVkRGF0YSk7CisgICAgcnVuVGVzdChkYXRhKTsKK30K
KworVEVTVF9QKFZlcnRleEF0dHJpYnV0ZVRlc3RFUzMsIEludE5vcm1hbGl6ZWQpCit7CisgICAg
R0xpbnQgbG8gICAgICAgICAgICAgICAgICAgICAgPSBzdGQ6Om51bWVyaWNfbGltaXRzPEdMaW50
Pjo6bWluKCk7CisgICAgR0xpbnQgaGkgICAgICAgICAgICAgICAgICAgICAgPSBzdGQ6Om51bWVy
aWNfbGltaXRzPEdMaW50Pjo6bWF4KCk7CisgICAgR0xpbnQgaW5wdXREYXRhW21WZXJ0ZXhDb3Vu
dF0gPSB7MCwgMSwgMiwgMywgLTEsIC0yLCAtMywgLTQsIC0xLCBoaSwgaGkgLSAxLCBsbywgbG8g
KyAxfTsKKyAgICBHTGZsb2F0IGV4cGVjdGVkRGF0YVttVmVydGV4Q291bnRdOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbVZlcnRleENvdW50OyBpKyspCisgICAgeworICAgICAgICBleHBl
Y3RlZERhdGFbaV0gPSBOb3JtYWxpemUoaW5wdXREYXRhW2ldKTsKKyAgICB9CisKKyAgICBUZXN0
RGF0YSBkYXRhKEdMX0lOVCwgR0xfVFJVRSwgU291cmNlOjpCVUZGRVIsIGlucHV0RGF0YSwgZXhw
ZWN0ZWREYXRhKTsKKyAgICBydW5UZXN0KGRhdGEpOworfQorCitURVNUX1AoVmVydGV4QXR0cmli
dXRlVGVzdEVTMywgVW5zaWduZWRJbnRVbm5vcm1hbGl6ZWQpCit7CisgICAgR0x1aW50IG1pZCAg
ICAgICAgICAgICAgICAgICAgID0gc3RkOjpudW1lcmljX2xpbWl0czxHTHVpbnQ+OjptYXgoKSA+
PiAxOworICAgIEdMdWludCBoaSAgICAgICAgICAgICAgICAgICAgICA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8R0x1aW50Pjo6bWF4KCk7CisgICAgR0x1aW50IGlucHV0RGF0YVttVmVydGV4Q291bnRd
ID0gezAsICAgICAgIDEsICAgMiwgICAgICAgMywgICAgICAyNTQsICAgIDI1NSwgMjU2LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWQgLSAxLCBtaWQsIG1pZCArIDEs
IGhpIC0gMiwgaGkgLSAxLCBoaX07CisgICAgR0xmbG9hdCBleHBlY3RlZERhdGFbbVZlcnRleENv
dW50XTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1WZXJ0ZXhDb3VudDsgaSsrKQorICAg
IHsKKyAgICAgICAgZXhwZWN0ZWREYXRhW2ldID0gc3RhdGljX2Nhc3Q8R0xmbG9hdD4oaW5wdXRE
YXRhW2ldKTsKKyAgICB9CisKKyAgICBUZXN0RGF0YSBkYXRhKEdMX1VOU0lHTkVEX0lOVCwgR0xf
RkFMU0UsIFNvdXJjZTo6QlVGRkVSLCBpbnB1dERhdGEsIGV4cGVjdGVkRGF0YSk7CisgICAgcnVu
VGVzdChkYXRhKTsKK30KKworVEVTVF9QKFZlcnRleEF0dHJpYnV0ZVRlc3RFUzMsIFVuc2lnbmVk
SW50Tm9ybWFsaXplZCkKK3sKKyAgICBHTHVpbnQgbWlkICAgICAgICAgICAgICAgICAgICAgPSBz
dGQ6Om51bWVyaWNfbGltaXRzPEdMdWludD46Om1heCgpID4+IDE7CisgICAgR0x1aW50IGhpICAg
ICAgICAgICAgICAgICAgICAgID0gc3RkOjpudW1lcmljX2xpbWl0czxHTHVpbnQ+OjptYXgoKTsK
KyAgICBHTHVpbnQgaW5wdXREYXRhW21WZXJ0ZXhDb3VudF0gPSB7MCwgICAgICAgMSwgICAyLCAg
ICAgICAzLCAgICAgIDI1NCwgICAgMjU1LCAyNTYsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1pZCAtIDEsIG1pZCwgbWlkICsgMSwgaGkgLSAyLCBoaSAtIDEsIGhpfTsK
KyAgICBHTGZsb2F0IGV4cGVjdGVkRGF0YVttVmVydGV4Q291bnRdOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbVZlcnRleENvdW50OyBpKyspCisgICAgeworICAgICAgICBleHBlY3RlZERh
dGFbaV0gPSBOb3JtYWxpemUoaW5wdXREYXRhW2ldKTsKKyAgICB9CisKKyAgICBUZXN0RGF0YSBk
YXRhKEdMX1VOU0lHTkVEX0lOVCwgR0xfVFJVRSwgU291cmNlOjpCVUZGRVIsIGlucHV0RGF0YSwg
ZXhwZWN0ZWREYXRhKTsKKyAgICBydW5UZXN0KGRhdGEpOworfQorCisvLyBWYWxpZGF0ZSB0aGF0
IHdlIGNhbiBzdXBwb3J0IEdMX01BWF9BVFRSSUJTIGF0dHJpYnMKK1RFU1RfUChWZXJ0ZXhBdHRy
aWJ1dGVUZXN0LCBNYXhBdHRyaWJzKQoreworICAgIC8vIFRPRE8oam1hZGlsbCk6IEZpZ3VyZSBv
dXQgd2h5IHdlIGdldCB0aGlzIGVycm9yIG9uIEFNRC9PcGVuR0wgYW5kIEludGVsLgorICAgIGlm
ICgoSXNJbnRlbCgpIHx8IElzQU1EKCkpICYmIEdldFBhcmFtKCkuZ2V0UmVuZGVyZXIoKSA9PSBF
R0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUpCisgICAgeworICAgICAgICBzdGQ6
OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBhbmQgQU1ELiIgPDwgc3RkOjplbmRsOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR0xpbnQgbWF4QXR0cmliczsKKyAgICBnbEdl
dEludGVnZXJ2KEdMX01BWF9WRVJURVhfQVRUUklCUywgJm1heEF0dHJpYnMpOworICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOworCisgICAgLy8gUmVzZXJ2ZSBvbmUgYXR0cmliIGZvciBwb3NpdGlv
bgorICAgIEdMaW50IGRyYXdBdHRyaWJzID0gbWF4QXR0cmlicyAtIDE7CisKKyAgICBHTHVpbnQg
cHJvZ3JhbSA9IGNvbXBpbGVNdWx0aUF0dHJpYlByb2dyYW0oZHJhd0F0dHJpYnMpOworICAgIEFT
U0VSVF9ORSgwdSwgcHJvZ3JhbSk7CisKKyAgICBzZXR1cE11bHRpQXR0cmlicyhwcm9ncmFtLCBk
cmF3QXR0cmlicywgMC41ZiAvIHN0YXRpY19jYXN0PGZsb2F0PihkcmF3QXR0cmlicykpOworICAg
IGRyYXdRdWFkKHByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworCisgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7CisgICAgRVhQRUNUX1BJWEVMX05FQVIoMCwgMCwgMTI4LCAwLCAwLCAyNTUsIDEp
OworfQorCisvLyBWYWxpZGF0ZSB0aGF0IHdlIGNhbm5vdCBzdXBwb3J0IEdMX01BWF9BVFRSSUJT
KzEgYXR0cmlicworVEVTVF9QKFZlcnRleEF0dHJpYnV0ZVRlc3QsIE1heEF0dHJpYnNQbHVzT25l
KQoreworICAgIC8vIFRPRE8oam1hZGlsbCk6IEZpZ3VyZSBvdXQgd2h5IHdlIGdldCB0aGlzIGVy
cm9yIG9uIEFNRC9FUzIvT3BlbkdMCisgICAgaWYgKElzQU1EKCkgJiYgR2V0UGFyYW0oKSA9PSBF
UzJfT1BFTkdMKCkpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3QgZGlzYWJsZWQg
b24gQU1EL0VTMi9PcGVuR0wiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIEdMaW50IG1heEF0dHJpYnM7CisgICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVkVSVEVY
X0FUVFJJQlMsICZtYXhBdHRyaWJzKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAg
IC8vIEV4Y2VlZCBhdHRyaWIgY291bnQgYnkgb25lIChjb3VudGluZyBwb3NpdGlvbikKKyAgICBH
TGludCBkcmF3QXR0cmlicyA9IG1heEF0dHJpYnM7CisKKyAgICBHTHVpbnQgcHJvZ3JhbSA9IGNv
bXBpbGVNdWx0aUF0dHJpYlByb2dyYW0oZHJhd0F0dHJpYnMpOworICAgIEFTU0VSVF9FUSgwdSwg
cHJvZ3JhbSk7Cit9CisKKy8vIFNpbXBsZSB0ZXN0IGZvciB3aGVuIHdlIHVzZSBnbEJpbmRBdHRy
aWJMb2NhdGlvbgorVEVTVF9QKFZlcnRleEF0dHJpYnV0ZVRlc3QsIFNpbXBsZUJpbmRBdHRyaWJM
b2NhdGlvbikKK3sKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBGaWd1cmUgb3V0IHdoeSB0aGlzIGZh
aWxzIG9uIEludGVsLgorICAgIGlmIChJc0ludGVsKCkgJiYgR2V0UGFyYW0oKS5nZXRSZW5kZXJl
cigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkKKyAgICB7CisgICAg
ICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsLiIgPDwgc3RkOjplbmRsOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gUmUtdXNlIHRoZSBtdWx0aS1hdHRyaWIg
cHJvZ3JhbSwgYmluZGluZyBhdHRyaWJ1dGUgMAorICAgIEdMdWludCBwcm9ncmFtID0gY29tcGls
ZU11bHRpQXR0cmliUHJvZ3JhbSgxKTsKKyAgICBnbEJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFt
LCAyLCAicG9zaXRpb24iKTsKKyAgICBnbEJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAzLCAi
YTAiKTsKKyAgICBnbExpbmtQcm9ncmFtKHByb2dyYW0pOworCisgICAgLy8gU2V0dXAgYW5kIGRy
YXcgdGhlIHF1YWQKKyAgICBzZXR1cE11bHRpQXR0cmlicyhwcm9ncmFtLCAxLCAwLjVmKTsKKyAg
ICBkcmF3UXVhZChwcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICBFWFBFQ1RfR0xfTk9f
RVJST1IoKTsKKyAgICBFWFBFQ1RfUElYRUxfTkVBUigwLCAwLCAxMjgsIDAsIDAsIDI1NSwgMSk7
Cit9CisKKy8vIFZlcmlmeSB0aGF0IGRyYXdpbmcgd2l0aCBhIGxhcmdlIG91dC1vZi1yYW5nZSBv
ZmZzZXQgZ2VuZXJhdGVzIElOVkFMSURfT1BFUkFUSU9OLgorVEVTVF9QKFZlcnRleEF0dHJpYnV0
ZVRlc3QsIERyYXdBcnJheXNCdWZmZXJUb29TbWFsbCkKK3sKKyAgICBHTGZsb2F0IGlucHV0RGF0
YVttVmVydGV4Q291bnRdOworICAgIEdMZmxvYXQgZXhwZWN0ZWREYXRhW21WZXJ0ZXhDb3VudF07
CisgICAgZm9yIChzaXplX3QgY291bnQgPSAwOyBjb3VudCA8IG1WZXJ0ZXhDb3VudDsgKytjb3Vu
dCkKKyAgICB7CisgICAgICAgIGlucHV0RGF0YVtjb3VudF0gICAgPSBzdGF0aWNfY2FzdDxHTGZs
b2F0Pihjb3VudCk7CisgICAgICAgIGV4cGVjdGVkRGF0YVtjb3VudF0gPSBpbnB1dERhdGFbY291
bnRdOworICAgIH0KKworICAgIFRlc3REYXRhIGRhdGEoR0xfRkxPQVQsIEdMX0ZBTFNFLCBTb3Vy
Y2U6OkJVRkZFUiwgaW5wdXREYXRhLCBleHBlY3RlZERhdGEpOworICAgIGRhdGEuYnVmZmVyT2Zm
c2V0ID0gbVZlcnRleENvdW50ICogVHlwZVN0cmlkZShHTF9GTE9BVCk7CisKKyAgICBzZXR1cFRl
c3QoZGF0YSwgMSk7CisgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwor
ICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKKy8vIFZlcmlm
eSB0aGF0IGluZGV4IGRyYXcgd2l0aCBhbiBvdXQtb2YtcmFuZ2Ugb2Zmc2V0IGdlbmVyYXRlcyBJ
TlZBTElEX09QRVJBVElPTi4KK1RFU1RfUChWZXJ0ZXhBdHRyaWJ1dGVUZXN0LCBEcmF3RWxlbWVu
dHNCdWZmZXJUb29TbWFsbCkKK3sKKyAgICBHTGZsb2F0IGlucHV0RGF0YVttVmVydGV4Q291bnRd
OworICAgIEdMZmxvYXQgZXhwZWN0ZWREYXRhW21WZXJ0ZXhDb3VudF07CisgICAgZm9yIChzaXpl
X3QgY291bnQgPSAwOyBjb3VudCA8IG1WZXJ0ZXhDb3VudDsgKytjb3VudCkKKyAgICB7CisgICAg
ICAgIGlucHV0RGF0YVtjb3VudF0gICAgPSBzdGF0aWNfY2FzdDxHTGZsb2F0Pihjb3VudCk7Cisg
ICAgICAgIGV4cGVjdGVkRGF0YVtjb3VudF0gPSBpbnB1dERhdGFbY291bnRdOworICAgIH0KKwor
ICAgIFRlc3REYXRhIGRhdGEoR0xfRkxPQVQsIEdMX0ZBTFNFLCBTb3VyY2U6OkJVRkZFUiwgaW5w
dXREYXRhLCBleHBlY3RlZERhdGEpOworICAgIGRhdGEuYnVmZmVyT2Zmc2V0ID0gKG1WZXJ0ZXhD
b3VudCAtIDMpICogVHlwZVN0cmlkZShHTF9GTE9BVCk7CisKKyAgICBzZXR1cFRlc3QoZGF0YSwg
MSk7CisgICAgZHJhd0luZGV4ZWRRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAg
ICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCisvLyBWZXJpZnkg
dGhhdCB1c2luZyBhIGRpZmZlcmVudCBzdGFydCB2ZXJ0ZXggZG9lc24ndCBtZXNzIHVwIHRoZSBk
cmF3LgorVEVTVF9QKFZlcnRleEF0dHJpYnV0ZVRlc3QsIERyYXdBcnJheXNXaXRoQnVmZmVyT2Zm
c2V0KQoreworICAgIC8vIFRPRE8oam1hZGlsbCk6IERpYWdub3NlIHRoaXMgZmFpbHVyZS4KKyAg
ICBpZiAoSXNEM0QxMV9GTDkzKCkpCisgICAgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qg
ZGlzYWJsZWQgb24gRDNEMTEgRkwgOV8zIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IEZpZ3VyZSBvdXQgd2h5IHRoaXMgaXMg
YnJva2VuIG9uIEFNRCBPcGVuR0wKKyAgICBpZiAoSXNBTUQoKSAmJiBnZXRQbGF0Zm9ybVJlbmRl
cmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFKQorICAgIHsKKyAg
ICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gQU1EIE9wZW5HTC4iIDw8IHN0ZDo6
ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGluaXRCYXNpY1Byb2dyYW0oKTsK
KyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworCisgICAgR0xmbG9hdCBpbnB1dERhdGFbbVZl
cnRleENvdW50XTsKKyAgICBHTGZsb2F0IGV4cGVjdGVkRGF0YVttVmVydGV4Q291bnRdOworICAg
IGZvciAoc2l6ZV90IGNvdW50ID0gMDsgY291bnQgPCBtVmVydGV4Q291bnQ7ICsrY291bnQpCisg
ICAgeworICAgICAgICBpbnB1dERhdGFbY291bnRdICAgID0gc3RhdGljX2Nhc3Q8R0xmbG9hdD4o
Y291bnQpOworICAgICAgICBleHBlY3RlZERhdGFbY291bnRdID0gaW5wdXREYXRhW2NvdW50XTsK
KyAgICB9CisKKyAgICBhdXRvIHF1YWRWZXJ0aWNlcyAgICAgICAgPSBHZXRRdWFkVmVydGljZXMo
KTsKKyAgICBHTHNpemVpIHF1YWRWZXJ0aWNlc1NpemUgPSBzdGF0aWNfY2FzdDxHTHNpemVpPihx
dWFkVmVydGljZXMuc2l6ZSgpICogc2l6ZW9mKHF1YWRWZXJ0aWNlc1swXSkpOworCisgICAgZ2xH
ZW5CdWZmZXJzKDEsICZtUXVhZEJ1ZmZlcik7CisgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JV
RkZFUiwgbVF1YWRCdWZmZXIpOworICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIHF1
YWRWZXJ0aWNlc1NpemUgKyBzaXplb2YoVmVjdG9yMyksIG51bGxwdHIsIEdMX1NUQVRJQ19EUkFX
KTsKKyAgICBnbEJ1ZmZlclN1YkRhdGEoR0xfQVJSQVlfQlVGRkVSLCAwLCBxdWFkVmVydGljZXNT
aXplLCBxdWFkVmVydGljZXMuZGF0YSgpKTsKKworICAgIEdMaW50IHBvc2l0aW9uTG9jYXRpb24g
PSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAicG9zaXRpb24iKTsKKyAgICBBU1NFUlRf
TkUoLTEsIHBvc2l0aW9uTG9jYXRpb24pOworICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3Np
dGlvbkxvY2F0aW9uLCAzLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIG51bGxwdHIpOworICAgIGds
RW5hYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2NhdGlvbik7CisKKyAgICBHTHNpemVp
IGRhdGFTaXplID0gbVZlcnRleENvdW50ICogVHlwZVN0cmlkZShHTF9GTE9BVCk7CisgICAgZ2xC
aW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZlcik7CisgICAgZ2xCdWZmZXJEYXRhKEdM
X0FSUkFZX0JVRkZFUiwgZGF0YVNpemUgKyBUeXBlU3RyaWRlKEdMX0ZMT0FUKSwgbnVsbHB0ciwg
R0xfU1RBVElDX0RSQVcpOworICAgIGdsQnVmZmVyU3ViRGF0YShHTF9BUlJBWV9CVUZGRVIsIDAs
IGRhdGFTaXplLCBpbnB1dERhdGEpOworICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihtVGVzdEF0
dHJpYiwgMSwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCBudWxscHRyKTsKKyAgICBnbEVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KG1UZXN0QXR0cmliKTsKKworICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJB
WV9CVUZGRVIsIDApOworICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihtRXhwZWN0ZWRBdHRyaWIs
IDEsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgZXhwZWN0ZWREYXRhKTsKKyAgICBnbEVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KG1FeHBlY3RlZEF0dHJpYik7CisKKyAgICAvLyBWZXJ0ZXggZHJhdyB3
aXRoIG5vIHN0YXJ0IHZlcnRleCBvZmZzZXQgKHNlY29uZCBhcmd1bWVudCBpcyB6ZXJvKS4KKyAg
ICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVTLCAwLCA2KTsKKyAgICBjaGVja1BpeGVscygpOwor
CisgICAgLy8gRHJhdyBvZmZzZXQgYnkgb25lIHZlcnRleC4KKyAgICBnbERyYXdBcnJheXMoR0xf
VFJJQU5HTEVTLCAxLCA2KTsKKyAgICBjaGVja1BpeGVscygpOworCisgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7Cit9CisKK2NsYXNzIFZlcnRleEF0dHJpYnV0ZUNhY2hpbmdUZXN0IDogcHVibGlj
IFZlcnRleEF0dHJpYnV0ZVRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIFZlcnRleEF0dHJpYnV0
ZUNhY2hpbmdUZXN0KCkge30KKworICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZTsKKworICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBEZXN0VD4KKyAgICBzdGF0aWMgc3RkOjp2ZWN0b3I8R0xmbG9hdD4g
R2V0RXhwZWN0ZWREYXRhKGNvbnN0IHN0ZDo6dmVjdG9yPEdMdWJ5dGU+ICZzcmNEYXRhLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dHJp
YlR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGJvb2xlYW4gbm9ybWFsaXplZCk7CisKKyAgICB2b2lkIGluaXREb3VibGVBdHRyaWJQcm9ncmFt
KCkKKyAgICB7CisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHRlc3RWZXJ0ZXhTaGFkZXJTb3Vy
Y2UgPQorICAgICAgICAgICAgImF0dHJpYnV0ZSBtZWRpdW1wIHZlYzQgcG9zaXRpb247XG4iCisg
ICAgICAgICAgICAiYXR0cmlidXRlIG1lZGl1bXAgdmVjNCB0ZXN0O1xuIgorICAgICAgICAgICAg
ImF0dHJpYnV0ZSBtZWRpdW1wIHZlYzQgZXhwZWN0ZWQ7XG4iCisgICAgICAgICAgICAiYXR0cmli
dXRlIG1lZGl1bXAgdmVjNCB0ZXN0MjtcbiIKKyAgICAgICAgICAgICJhdHRyaWJ1dGUgbWVkaXVt
cCB2ZWM0IGV4cGVjdGVkMjtcbiIKKyAgICAgICAgICAgICJ2YXJ5aW5nIG1lZGl1bXAgdmVjNCBj
b2xvcjtcbiIKKyAgICAgICAgICAgICJ2b2lkIG1haW4odm9pZClcbiIKKyAgICAgICAgICAgICJ7
XG4iCisgICAgICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247XG4iCisgICAgICAg
ICAgICAiICAgIHZlYzQgdGhyZXNob2xkID0gbWF4KGFicyhleHBlY3RlZCkgKiAwLjAxLCAxLjAg
LyA2NC4wKTtcbiIKKyAgICAgICAgICAgICIgICAgY29sb3IgPSB2ZWM0KGxlc3NUaGFuRXF1YWwo
YWJzKHRlc3QgLSBleHBlY3RlZCksIHRocmVzaG9sZCkpO1xuIgorICAgICAgICAgICAgIiAgICB2
ZWM0IHRocmVzaG9sZDIgPSBtYXgoYWJzKGV4cGVjdGVkMikgKiAwLjAxLCAxLjAgLyA2NC4wKTtc
biIKKyAgICAgICAgICAgICIgICAgY29sb3IgKz0gdmVjNChsZXNzVGhhbkVxdWFsKGFicyh0ZXN0
MiAtIGV4cGVjdGVkMiksIHRocmVzaG9sZDIpKTtcbiIKKyAgICAgICAgICAgICJ9XG4iOworCisg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHRlc3RGcmFnbWVudFNoYWRlclNvdXJjZSA9CisgICAg
ICAgICAgICAidmFyeWluZyBtZWRpdW1wIHZlYzQgY29sb3I7XG4iCisgICAgICAgICAgICAidm9p
ZCBtYWluKHZvaWQpXG4iCisgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgIiAgICBnbF9G
cmFnQ29sb3IgPSBjb2xvcjtcbiIKKyAgICAgICAgICAgICJ9XG4iOworCisgICAgICAgIG1Qcm9n
cmFtID0gQ29tcGlsZVByb2dyYW0odGVzdFZlcnRleFNoYWRlclNvdXJjZSwgdGVzdEZyYWdtZW50
U2hhZGVyU291cmNlKTsKKyAgICAgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7CisKKyAgICAg
ICAgbVRlc3RBdHRyaWIgPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAidGVzdCIpOwor
ICAgICAgICBBU1NFUlRfTkUoLTEsIG1UZXN0QXR0cmliKTsKKyAgICAgICAgbUV4cGVjdGVkQXR0
cmliID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgImV4cGVjdGVkIik7CisgICAgICAg
IEFTU0VSVF9ORSgtMSwgbUV4cGVjdGVkQXR0cmliKTsKKworICAgICAgICBnbFVzZVByb2dyYW0o
bVByb2dyYW0pOworICAgIH0KKworICAgIHN0cnVjdCBBdHRyaWJEYXRhCisgICAgeworICAgICAg
ICBBdHRyaWJEYXRhKEdMZW51bSB0eXBlSW4sIEdMaW50IHNpemVJbiwgR0xib29sZWFuIG5vcm1h
bGl6ZWRJbiwgR0xzaXplaSBzdHJpZGVJbik7CisKKyAgICAgICAgR0xlbnVtIHR5cGU7CisgICAg
ICAgIEdMaW50IHNpemU7CisgICAgICAgIEdMYm9vbGVhbiBub3JtYWxpemVkOworICAgICAgICBH
THNpemVpIHN0cmlkZTsKKyAgICB9OworCisgICAgc3RkOjp2ZWN0b3I8QXR0cmliRGF0YT4gbVRl
c3REYXRhOworICAgIHN0ZDo6bWFwPEdMZW51bSwgc3RkOjp2ZWN0b3I8R0xmbG9hdD4+IG1FeHBl
Y3RlZERhdGE7CisgICAgc3RkOjptYXA8R0xlbnVtLCBzdGQ6OnZlY3RvcjxHTGZsb2F0Pj4gbU5v
cm1FeHBlY3RlZERhdGE7Cit9OworCitWZXJ0ZXhBdHRyaWJ1dGVDYWNoaW5nVGVzdDo6QXR0cmli
RGF0YTo6QXR0cmliRGF0YShHTGVudW0gdHlwZUluLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6ZUluLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIG5vcm1hbGl6ZWRJ
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgc3RyaWRlSW4pCisgICAgOiB0eXBlKHR5cGVJbiksIHNpemUoc2l6ZUluKSwgbm9ybWFs
aXplZChub3JtYWxpemVkSW4pLCBzdHJpZGUoc3RyaWRlSW4pCit7Cit9CisKKy8vIHN0YXRpYwor
dGVtcGxhdGUgPHR5cGVuYW1lIERlc3RUPgorc3RkOjp2ZWN0b3I8R0xmbG9hdD4gVmVydGV4QXR0
cmlidXRlQ2FjaGluZ1Rlc3Q6OkdldEV4cGVjdGVkRGF0YSgKKyAgICBjb25zdCBzdGQ6OnZlY3Rv
cjxHTHVieXRlPiAmc3JjRGF0YSwKKyAgICBHTGVudW0gYXR0cmliVHlwZSwKKyAgICBHTGJvb2xl
YW4gbm9ybWFsaXplZCkKK3sKKyAgICBzdGQ6OnZlY3RvcjxHTGZsb2F0PiBleHBlY3RlZERhdGE7
CisKKyAgICBjb25zdCBEZXN0VCAqdHlwZWRTcmNQdHIgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IERlc3RUICo+KHNyY0RhdGEuZGF0YSgpKTsKKyAgICBzaXplX3QgaXRlcmF0aW9ucyAgICAgICAg
PSBzcmNEYXRhLnNpemUoKSAvIFR5cGVTdHJpZGUoYXR0cmliVHlwZSk7CisKKyAgICBpZiAobm9y
bWFsaXplZCkKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBp
dGVyYXRpb25zOyArK2luZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBleHBlY3RlZERhdGEu
cHVzaF9iYWNrKE5vcm1hbGl6ZSh0eXBlZFNyY1B0cltpbmRleF0pKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4
IDwgaXRlcmF0aW9uczsgKytpbmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgZXhwZWN0ZWRE
YXRhLnB1c2hfYmFjayhzdGF0aWNfY2FzdDxHTGZsb2F0Pih0eXBlZFNyY1B0cltpbmRleF0pKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBleHBlY3RlZERhdGE7Cit9CisKK3ZvaWQg
VmVydGV4QXR0cmlidXRlQ2FjaGluZ1Rlc3Q6OlNldFVwKCkKK3sKKyAgICBWZXJ0ZXhBdHRyaWJ1
dGVUZXN0OjpTZXRVcCgpOworCisgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUJ1
ZmZlcik7CisKKyAgICBzdGQ6OnZlY3RvcjxHTHVieXRlPiBzcmNEYXRhOworICAgIGZvciAoc2l6
ZV90IGNvdW50ID0gMDsgY291bnQgPCA0OyArK2NvdW50KQorICAgIHsKKyAgICAgICAgZm9yIChH
THVieXRlIGkgPSAwOyBpIDwgc3RkOjpudW1lcmljX2xpbWl0czxHTHVieXRlPjo6bWF4KCk7ICsr
aSkKKyAgICAgICAgeworICAgICAgICAgICAgc3JjRGF0YS5wdXNoX2JhY2soaSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBzcmNEYXRhLnNp
emUoKSwgc3JjRGF0YS5kYXRhKCksIEdMX1NUQVRJQ19EUkFXKTsKKworICAgIEdMaW50IHZpZXdw
b3J0U2l6ZVs0XTsKKyAgICBnbEdldEludGVnZXJ2KEdMX1ZJRVdQT1JULCB2aWV3cG9ydFNpemUp
OworCisgICAgc3RkOjp2ZWN0b3I8R0xlbnVtPiBhdHRyaWJUeXBlczsKKyAgICBhdHRyaWJUeXBl
cy5wdXNoX2JhY2soR0xfQllURSk7CisgICAgYXR0cmliVHlwZXMucHVzaF9iYWNrKEdMX1VOU0lH
TkVEX0JZVEUpOworICAgIGF0dHJpYlR5cGVzLnB1c2hfYmFjayhHTF9TSE9SVCk7CisgICAgYXR0
cmliVHlwZXMucHVzaF9iYWNrKEdMX1VOU0lHTkVEX1NIT1JUKTsKKworICAgIGlmIChnZXRDbGll
bnRNYWpvclZlcnNpb24oKSA+PSAzKQorICAgIHsKKyAgICAgICAgYXR0cmliVHlwZXMucHVzaF9i
YWNrKEdMX0lOVCk7CisgICAgICAgIGF0dHJpYlR5cGVzLnB1c2hfYmFjayhHTF9VTlNJR05FRF9J
TlQpOworICAgIH0KKworICAgIGNvbnN0IEdMaW50IG1heFNpemUgICAgID0gNDsKKyAgICBjb25z
dCBHTHNpemVpIG1heFN0cmlkZSA9IDQ7CisKKyAgICBmb3IgKEdMZW51bSBhdHRyaWJUeXBlIDog
YXR0cmliVHlwZXMpCisgICAgeworICAgICAgICBmb3IgKEdMaW50IGF0dHJpYlNpemUgPSAxOyBh
dHRyaWJTaXplIDw9IG1heFNpemU7ICsrYXR0cmliU2l6ZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgZm9yIChHTHNpemVpIHN0cmlkZSA9IDE7IHN0cmlkZSA8PSBtYXhTdHJpZGU7ICsrc3RyaWRl
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1UZXN0RGF0YS5wdXNoX2JhY2soQXR0
cmliRGF0YShhdHRyaWJUeXBlLCBhdHRyaWJTaXplLCBHTF9GQUxTRSwgc3RyaWRlKSk7CisgICAg
ICAgICAgICAgICAgaWYgKGF0dHJpYlR5cGUgIT0gR0xfRkxPQVQpCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBtVGVzdERhdGEucHVzaF9iYWNrKEF0dHJpYkRhdGEoYXR0
cmliVHlwZSwgYXR0cmliU2l6ZSwgR0xfVFJVRSwgc3RyaWRlKSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgbUV4cGVjdGVkRGF0YVtH
TF9CWVRFXSAgICAgICAgICA9IEdldEV4cGVjdGVkRGF0YTxHTGJ5dGU+KHNyY0RhdGEsIEdMX0JZ
VEUsIEdMX0ZBTFNFKTsKKyAgICBtRXhwZWN0ZWREYXRhW0dMX1VOU0lHTkVEX0JZVEVdID0gR2V0
RXhwZWN0ZWREYXRhPEdMdWJ5dGU+KHNyY0RhdGEsIEdMX1VOU0lHTkVEX0JZVEUsIEdMX0ZBTFNF
KTsKKyAgICBtRXhwZWN0ZWREYXRhW0dMX1NIT1JUXSA9IEdldEV4cGVjdGVkRGF0YTxHTHNob3J0
PihzcmNEYXRhLCBHTF9TSE9SVCwgR0xfRkFMU0UpOworICAgIG1FeHBlY3RlZERhdGFbR0xfVU5T
SUdORURfU0hPUlRdID0KKyAgICAgICAgR2V0RXhwZWN0ZWREYXRhPEdMdXNob3J0PihzcmNEYXRh
LCBHTF9VTlNJR05FRF9TSE9SVCwgR0xfRkFMU0UpOworICAgIG1FeHBlY3RlZERhdGFbR0xfSU5U
XSAgICAgICAgICA9IEdldEV4cGVjdGVkRGF0YTxHTGludD4oc3JjRGF0YSwgR0xfSU5ULCBHTF9G
QUxTRSk7CisgICAgbUV4cGVjdGVkRGF0YVtHTF9VTlNJR05FRF9JTlRdID0gR2V0RXhwZWN0ZWRE
YXRhPEdMdWludD4oc3JjRGF0YSwgR0xfVU5TSUdORURfSU5ULCBHTF9GQUxTRSk7CisKKyAgICBt
Tm9ybUV4cGVjdGVkRGF0YVtHTF9CWVRFXSA9IEdldEV4cGVjdGVkRGF0YTxHTGJ5dGU+KHNyY0Rh
dGEsIEdMX0JZVEUsIEdMX1RSVUUpOworICAgIG1Ob3JtRXhwZWN0ZWREYXRhW0dMX1VOU0lHTkVE
X0JZVEVdID0KKyAgICAgICAgR2V0RXhwZWN0ZWREYXRhPEdMdWJ5dGU+KHNyY0RhdGEsIEdMX1VO
U0lHTkVEX0JZVEUsIEdMX1RSVUUpOworICAgIG1Ob3JtRXhwZWN0ZWREYXRhW0dMX1NIT1JUXSA9
IEdldEV4cGVjdGVkRGF0YTxHTHNob3J0PihzcmNEYXRhLCBHTF9TSE9SVCwgR0xfVFJVRSk7Cisg
ICAgbU5vcm1FeHBlY3RlZERhdGFbR0xfVU5TSUdORURfU0hPUlRdID0KKyAgICAgICAgR2V0RXhw
ZWN0ZWREYXRhPEdMdXNob3J0PihzcmNEYXRhLCBHTF9VTlNJR05FRF9TSE9SVCwgR0xfVFJVRSk7
CisgICAgbU5vcm1FeHBlY3RlZERhdGFbR0xfSU5UXSAgICAgICAgICA9IEdldEV4cGVjdGVkRGF0
YTxHTGludD4oc3JjRGF0YSwgR0xfSU5ULCBHTF9UUlVFKTsKKyAgICBtTm9ybUV4cGVjdGVkRGF0
YVtHTF9VTlNJR05FRF9JTlRdID0gR2V0RXhwZWN0ZWREYXRhPEdMdWludD4oc3JjRGF0YSwgR0xf
VU5TSUdORURfSU5ULCBHTF9UUlVFKTsKK30KKworLy8gSW4gRDNEMTEsIHdlIG11c3Qgc29tZXRp
bWVzIHRyYW5zbGF0ZSBidWZmZXIgZGF0YSBpbnRvIHN0YXRpYyBhdHRyaWJ1dGUgY2FjaGVzLiBX
ZSBhbHNvIHVzZSBhCisvLyBjYWNoZSBtYW5hZ2VtZW50IHNjaGVtZSB3aGljaCBnYXJiYWdlIGNv
bGxlY3RzIG9sZCBhdHRyaWJ1dGVzIGFmdGVyIHdlIHN0YXJ0IHVzaW5nIHRvbyBtdWNoCisvLyBj
YWNoZSBkYXRhLiBUaGlzIHRlc3QgdHJpZXMgdG8gbWFrZSBhcyBtYW55IGF0dHJpYnV0ZSBjYWNo
ZXMgZnJvbSBhIHNpbmdsZSBidWZmZXIgYXMgcG9zc2libGUKKy8vIHRvIHN0cmVzcy10ZXN0IHRo
ZSBjYWNoaW5nIGNvZGUuCitURVNUX1AoVmVydGV4QXR0cmlidXRlQ2FjaGluZ1Rlc3QsIEJ1ZmZl
ck11bHRpY2FjaGluZykKK3sKKyAgICBpZiAoSXNBTUQoKSAmJiBJc0Rlc2t0b3BPcGVuR0woKSkK
KyAgICB7CisgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEFNRCBPcGVuR0wu
IiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbml0QmFzaWNQ
cm9ncmFtKCk7CisKKyAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1UZXN0QXR0cmliKTsK
KyAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1FeHBlY3RlZEF0dHJpYik7CisKKyAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIGZvciAoY29uc3QgYXV0byAmZGF0YSA6IG1UZXN0
RGF0YSkKKyAgICB7CisgICAgICAgIGNvbnN0IGF1dG8gJmV4cGVjdGVkID0KKyAgICAgICAgICAg
IChkYXRhLm5vcm1hbGl6ZWQpID8gbU5vcm1FeHBlY3RlZERhdGFbZGF0YS50eXBlXSA6IG1FeHBl
Y3RlZERhdGFbZGF0YS50eXBlXTsKKworICAgICAgICBHTHNpemVpIGJhc2VTdHJpZGUgPSBzdGF0
aWNfY2FzdDxHTHNpemVpPihkYXRhLnNpemUpICogZGF0YS5zdHJpZGU7CisgICAgICAgIEdMc2l6
ZWkgc3RyaWRlICAgICA9IFR5cGVTdHJpZGUoZGF0YS50eXBlKSAqIGJhc2VTdHJpZGU7CisKKyAg
ICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZlcik7CisgICAgICAgIGds
VmVydGV4QXR0cmliUG9pbnRlcihtVGVzdEF0dHJpYiwgZGF0YS5zaXplLCBkYXRhLnR5cGUsIGRh
dGEubm9ybWFsaXplZCwgc3RyaWRlLCBudWxscHRyKTsKKyAgICAgICAgZ2xCaW5kQnVmZmVyKEdM
X0FSUkFZX0JVRkZFUiwgMCk7CisgICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihtRXhwZWN0
ZWRBdHRyaWIsIGRhdGEuc2l6ZSwgR0xfRkxPQVQsIEdMX0ZBTFNFLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZW9mKEdMZmxvYXQpICogYmFzZVN0cmlkZSwgZXhwZWN0ZWQuZGF0
YSgpKTsKKyAgICAgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOworICAg
ICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICAgICAgRVhQRUNUX1BJWEVMX0VRKGdldFdp
bmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIDI1NSwgMjU1LCAyNTUsIDI1
NSk7CisgICAgfQorfQorCisvLyBXaXRoIEQzRDExIGRpcnR5IGJpdHMgZm9yIFZlcnR4QXJyYXkx
MSwgd2UgY2FuIGxlYXZlIHZlcnRleCBzdGF0ZSB1bmNoYW5nZWQgaWYgdGhlcmUgYXJlbid0IGFu
eQorLy8gR0wgY2FsbHMgdGhhdCBhZmZlY3QgaXQuIFRoaXMgdGVzdCB0YXJnZXRzIGxlYXZpbmcg
b25lIHZlcnRleCBhdHRyaWJ1dGUgdW5jaGFuZ2VkIGJldHdlZW4gZHJhdworLy8gY2FsbHMgd2hp
bGUgY2hhbmdpbmcgYW5vdGhlciB2ZXJ0ZXggYXR0cmlidXRlIGVub3VnaCB0aGF0IGl0IGNsZWFy
cyB0aGUgc3RhdGljIGJ1ZmZlciBjYWNoZQorLy8gYWZ0ZXIgZW5vdWdoIGl0ZXJhdGlvbnMuIEl0
IHZhbGlkYXRlcyB0aGUgdW5jaGFuZ2VkIGF0dHJpYnV0ZXMgZG9uJ3QgZ2V0IGRlbGV0ZWQgaW5j
aWRlbnRhbGx5LgorVEVTVF9QKFZlcnRleEF0dHJpYnV0ZUNhY2hpbmdUZXN0LCBCdWZmZXJNdWx0
aWNhY2hpbmdXaXRoT25lVW5jaGFuZ2VkQXR0cmliKQoreworICAgIGlmIChJc0FNRCgpICYmIElz
RGVza3RvcE9wZW5HTCgpKQorICAgIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBw
ZWQgb24gQU1EIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGluaXREb3VibGVBdHRyaWJQcm9ncmFtKCk7CisKKyAgICBHTGludCB0ZXN0QXR0cmli
MkxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgInRlc3QyIik7CisgICAg
QVNTRVJUX05FKC0xLCB0ZXN0QXR0cmliMkxvY2F0aW9uKTsKKyAgICBHTGludCBleHBlY3RlZEF0
dHJpYjJMb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJleHBlY3RlZDIi
KTsKKyAgICBBU1NFUlRfTkUoLTEsIGV4cGVjdGVkQXR0cmliMkxvY2F0aW9uKTsKKworICAgIGds
RW5hYmxlVmVydGV4QXR0cmliQXJyYXkobVRlc3RBdHRyaWIpOworICAgIGdsRW5hYmxlVmVydGV4
QXR0cmliQXJyYXkobUV4cGVjdGVkQXR0cmliKTsKKyAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5KHRlc3RBdHRyaWIyTG9jYXRpb24pOworICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXko
ZXhwZWN0ZWRBdHRyaWIyTG9jYXRpb24pOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisK
KyAgICAvLyBVc2UgYW4gYXR0cmlidXRlIHRoYXQgd2Uga25vdyBtdXN0IGJlIGNvbnZlcnRlZC4g
VGhpcyBpcyBhIGJpdCBzZW5zaXRpdmUuCisgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZF
UiwgbUJ1ZmZlcik7CisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHRlc3RBdHRyaWIyTG9jYXRp
b24sIDMsIEdMX1VOU0lHTkVEX1NIT1JULCBHTF9GQUxTRSwgNiwgbnVsbHB0cik7CisgICAgZ2xC
aW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgMCk7CisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVy
KGV4cGVjdGVkQXR0cmliMkxvY2F0aW9uLCAzLCBHTF9GTE9BVCwgR0xfRkFMU0UsIHNpemVvZihH
TGZsb2F0KSAqIDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1FeHBlY3RlZERhdGFbR0xf
VU5TSUdORURfU0hPUlRdLmRhdGEoKSk7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8gJmRhdGEgOiBt
VGVzdERhdGEpCisgICAgeworICAgICAgICBjb25zdCBhdXRvICZleHBlY3RlZCA9CisgICAgICAg
ICAgICAoZGF0YS5ub3JtYWxpemVkKSA/IG1Ob3JtRXhwZWN0ZWREYXRhW2RhdGEudHlwZV0gOiBt
RXhwZWN0ZWREYXRhW2RhdGEudHlwZV07CisKKyAgICAgICAgR0xzaXplaSBiYXNlU3RyaWRlID0g
c3RhdGljX2Nhc3Q8R0xzaXplaT4oZGF0YS5zaXplKSAqIGRhdGEuc3RyaWRlOworICAgICAgICBH
THNpemVpIHN0cmlkZSAgICAgPSBUeXBlU3RyaWRlKGRhdGEudHlwZSkgKiBiYXNlU3RyaWRlOwor
CisgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1CdWZmZXIpOworICAgICAg
ICBnbFZlcnRleEF0dHJpYlBvaW50ZXIobVRlc3RBdHRyaWIsIGRhdGEuc2l6ZSwgZGF0YS50eXBl
LCBkYXRhLm5vcm1hbGl6ZWQsIHN0cmlkZSwgbnVsbHB0cik7CisgICAgICAgIGdsQmluZEJ1ZmZl
cihHTF9BUlJBWV9CVUZGRVIsIDApOworICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIobUV4
cGVjdGVkQXR0cmliLCBkYXRhLnNpemUsIEdMX0ZMT0FULCBHTF9GQUxTRSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVvZihHTGZsb2F0KSAqIGJhc2VTdHJpZGUsIGV4cGVjdGVk
LmRhdGEoKSk7CisgICAgICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsK
KworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICAgICAgRVhQRUNUX1BJWEVMX0VR
KGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIDI1NSwgMjU1LCAy
NTUsIDI1NSk7CisgICAgfQorfQorCisvLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmln
dXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikg
dGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgorLy8gRDNEMTEgRmVhdHVyZSBMZXZl
bCA5XzMgdXNlcyBkaWZmZXJlbnQgRDNEIGZvcm1hdHMgZm9yIHZlcnRleCBhdHRyaWJzIGNvbXBh
cmVkIHRvIEZlYXR1cmUgTGV2ZWxzIDEwXzArLCBzbyB3ZSBzaG91bGQgdGVzdCB0aGVtIHNlcGFy
YXRlbHkuCitBTkdMRV9JTlNUQU5USUFURV9URVNUKFZlcnRleEF0dHJpYnV0ZVRlc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCisgICAgICAgICAgICAgICAgICAgICAgIEVT
Ml9EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzMoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAg
ICBFUzNfT1BFTkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpLAor
ICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMRVMoKSk7CisKK0FOR0xFX0lOU1RBTlRJ
QVRFX1RFU1QoVmVydGV4QXR0cmlidXRlVGVzdEVTMywgRVMzX0QzRDExKCksIEVTM19PUEVOR0wo
KSwgRVMzX09QRU5HTEVTKCkpOworCitBTkdMRV9JTlNUQU5USUFURV9URVNUKFZlcnRleEF0dHJp
YnV0ZUNhY2hpbmdUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAorICAg
ICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
RVMzX0QzRDExKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woKSk7CisKK30g
IC8vIGFub255bW91cyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9nbF90ZXN0cy9WaWV3cG9ydFRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9WaWV3cG9ydFRlc3QuY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9W
aWV3cG9ydFRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjcyIEBACisvLworLy8g
Q29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKwordXNpbmcgbmFtZXNwYWNl
IGFuZ2xlOworCituYW1lc3BhY2UKK3sKKworY2xhc3MgVmlld3BvcnRUZXN0IDogcHVibGljIEFO
R0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgVmlld3BvcnRUZXN0KCkKKyAgICB7CisgICAg
ICAgIHNldFdpbmRvd1dpZHRoKDUxMik7CisgICAgICAgIHNldFdpbmRvd0hlaWdodCg1MTIpOwor
ICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMo
OCk7CisgICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBo
YUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0RlcHRoQml0cygyNCk7CisKKyAgICAgICAgbVBy
b2dyYW0gPSAwOworICAgIH0KKworICAgIHZvaWQgcnVuTm9uU2Npc3NvcmVkVGVzdCgpCisgICAg
eworICAgICAgICBnbENsZWFyQ29sb3IoMCwgMCwgMCwgMSk7CisgICAgICAgIGdsQ2xlYXIoR0xf
Q09MT1JfQlVGRkVSX0JJVCk7CisKKyAgICAgICAgcnVuVGVzdCgpOworICAgIH0KKworICAgIHZv
aWQgcnVuU2Npc3NvcmVkVGVzdCgpCisgICAgeworICAgICAgICBnbENsZWFyQ29sb3IoMCwgMCwg
MCwgMSk7CisgICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisKKyAgICAgICAg
Z2xFbmFibGUoR0xfU0NJU1NPUl9URVNUKTsKKyAgICAgICAgZ2xTY2lzc29yKDAsIGdldFdpbmRv
d0hlaWdodCgpIC8gMiwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyKTsK
KworICAgICAgICBydW5UZXN0KCk7CisgICAgfQorCisgICAgdm9pZCBydW5UZXN0KCkKKyAgICB7
CisgICAgICAgIC8vIEZpcnN0bHkgZW5zdXJlIHRoYXQgbm8gZXJyb3JzIGhhdmUgYmVlbiBoaXQu
CisgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgICAgIEdMaW50IHZpZXdwb3J0
U2l6ZVs0XTsKKyAgICAgICAgZ2xHZXRJbnRlZ2VydihHTF9WSUVXUE9SVCwgdmlld3BvcnRTaXpl
KTsKKworICAgICAgICAvLyBDbGVhciB0byBncmVlbi4gTWlnaHQgYmUgYSBzY2lzc29yZWQgY2xl
YXIsIGlmIHNjaXNzb3JTaXplICE9IHdpbmRvdyBzaXplCisgICAgICAgIGdsQ2xlYXJDb2xvcigw
LCAxLCAwLCAxKTsKKyAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAg
ICAgICAvLyBEcmF3IGEgcmVkIHF1YWQgY2VudGVyZWQgaW4gdGhlIG1pZGRsZSBvZiB0aGUgdmll
d3BvcnQsIHdpdGggZGltZW5zaW9ucyAyNSUgb2YgdGhlIHNpemUgb2YgdGhlIHZpZXdwb3J0Lgor
ICAgICAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41ZiwgMC4yNWYpOworCisg
ICAgICAgIEdMaW50IGNlbnRlclZpZXdwb3J0WCA9IHZpZXdwb3J0U2l6ZVswXSArICh2aWV3cG9y
dFNpemVbMl0gLyAyKTsKKyAgICAgICAgR0xpbnQgY2VudGVyVmlld3BvcnRZID0gdmlld3BvcnRT
aXplWzFdICsgKHZpZXdwb3J0U2l6ZVszXSAvIDIpOworCisgICAgICAgIEdMaW50IHJlZFF1YWRM
ZWZ0U2lkZVggICA9IHZpZXdwb3J0U2l6ZVswXSArIHZpZXdwb3J0U2l6ZVsyXSAqIDMgLyA4Owor
ICAgICAgICBHTGludCByZWRRdWFkUmlnaHRTaWRlWCAgPSB2aWV3cG9ydFNpemVbMF0gKyB2aWV3
cG9ydFNpemVbMl0gKiA1IC8gODsKKyAgICAgICAgR0xpbnQgcmVkUXVhZFRvcFNpZGVZICAgID0g
dmlld3BvcnRTaXplWzFdICsgdmlld3BvcnRTaXplWzNdICogMyAvIDg7CisgICAgICAgIEdMaW50
IHJlZFF1YWRCb3R0b21TaWRlWSA9IHZpZXdwb3J0U2l6ZVsxXSArIHZpZXdwb3J0U2l6ZVszXSAq
IDUgLyA4OworCisgICAgICAgIC8vIFRoZSBtaWRwb2ludCBvZiB0aGUgdmlld3BvcnQgc2hvdWxk
IGJlIHJlZC4KKyAgICAgICAgY2hlY2tQaXhlbChjZW50ZXJWaWV3cG9ydFgsIGNlbnRlclZpZXdw
b3J0WSwgdHJ1ZSk7CisKKyAgICAgICAgLy8gUGl4ZWxzIGp1c3QgaW5zaWRlIHRoZSByZWQgcXVh
ZCBzaG91bGQgYmUgcmVkLgorICAgICAgICBjaGVja1BpeGVsKHJlZFF1YWRMZWZ0U2lkZVgsICAg
ICAgcmVkUXVhZFRvcFNpZGVZLCAgICAgICAgdHJ1ZSk7CisgICAgICAgIGNoZWNrUGl4ZWwocmVk
UXVhZExlZnRTaWRlWCwgICAgICByZWRRdWFkQm90dG9tU2lkZVkgLSAxLCB0cnVlKTsKKyAgICAg
ICAgY2hlY2tQaXhlbChyZWRRdWFkUmlnaHRTaWRlWCAtIDEsIHJlZFF1YWRUb3BTaWRlWSwgICAg
ICAgIHRydWUpOworICAgICAgICBjaGVja1BpeGVsKHJlZFF1YWRSaWdodFNpZGVYIC0gMSwgcmVk
UXVhZEJvdHRvbVNpZGVZIC0gMSwgdHJ1ZSk7CisKKyAgICAgICAgLy8gUGl4ZWxzIGp1c3Qgb3V0
c2lkZSB0aGUgcmVkIHF1YWQgc2hvdWxkbid0IGJlIHJlZC4KKyAgICAgICAgY2hlY2tQaXhlbChy
ZWRRdWFkTGVmdFNpZGVYIC0gMSwgIHJlZFF1YWRUb3BTaWRlWSAtIDEsIGZhbHNlKTsKKyAgICAg
ICAgY2hlY2tQaXhlbChyZWRRdWFkTGVmdFNpZGVYIC0gMSwgIHJlZFF1YWRCb3R0b21TaWRlWSwg
IGZhbHNlKTsKKyAgICAgICAgY2hlY2tQaXhlbChyZWRRdWFkUmlnaHRTaWRlWCwgICAgIHJlZFF1
YWRUb3BTaWRlWSAtIDEsIGZhbHNlKTsKKyAgICAgICAgY2hlY2tQaXhlbChyZWRRdWFkUmlnaHRT
aWRlWCwgICAgIHJlZFF1YWRCb3R0b21TaWRlWSwgIGZhbHNlKTsKKworICAgICAgICAvLyBQaXhl
bHMganVzdCB3aXRoaW4gdGhlIHZpZXdwb3J0IHNob3VsZG4ndCBiZSByZWQuCisgICAgICAgIGNo
ZWNrUGl4ZWwodmlld3BvcnRTaXplWzBdLCAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdwb3J0
U2l6ZVsxXSwgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKKyAgICAgICAgY2hlY2tQaXhl
bCh2aWV3cG9ydFNpemVbMF0sICAgICAgICAgICAgICAgICAgICAgICAgdmlld3BvcnRTaXplWzFd
ICsgdmlld3BvcnRTaXplWzNdIC0gMSwgZmFsc2UpOworICAgICAgICBjaGVja1BpeGVsKHZpZXdw
b3J0U2l6ZVswXSArIHZpZXdwb3J0U2l6ZVsyXSAtIDEsICB2aWV3cG9ydFNpemVbMV0sICAgICAg
ICAgICAgICAgICAgICAgICBmYWxzZSk7CisgICAgICAgIGNoZWNrUGl4ZWwodmlld3BvcnRTaXpl
WzBdICsgdmlld3BvcnRTaXplWzJdIC0gMSwgIHZpZXdwb3J0U2l6ZVsxXSArIHZpZXdwb3J0U2l6
ZVszXSAtIDEsIGZhbHNlKTsKKyAgICB9CisKKyAgICB2b2lkIGNoZWNrUGl4ZWwoR0xpbnQgeCwg
R0xpbnQgeSwgR0xib29sZWFuIHJlbmRlcmVkUmVkKQorICAgIHsKKyAgICAgICAgLy8gQnkgZGVm
YXVsdCwgZXhwZWN0IHRoZSBwaXhlbCB0byBiZSBibGFjay4KKyAgICAgICAgR0xpbnQgZXhwZWN0
ZWRSZWRDaGFubmVsID0gMDsKKyAgICAgICAgR0xpbnQgZXhwZWN0ZWRHcmVlbkNoYW5uZWwgPSAw
OworCisgICAgICAgIEdMaW50IHNjaXNzb3JTaXplWzRdOworICAgICAgICBnbEdldEludGVnZXJ2
KEdMX1NDSVNTT1JfQk9YLCBzY2lzc29yU2l6ZSk7CisKKyAgICAgICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7CisKKyAgICAgICAgaWYgKHNjaXNzb3JTaXplWzBdIDw9IHggJiYgeCA8IHNjaXNzb3JT
aXplWzBdICsgc2Npc3NvclNpemVbMl0KKyAgICAgICAgICAgICYmIHNjaXNzb3JTaXplWzFdIDw9
IHkgJiYgeSA8IHNjaXNzb3JTaXplWzFdICsgc2Npc3NvclNpemVbM10pCisgICAgICAgIHsKKyAg
ICAgICAgICAgIC8vIElmIHRoZSBwaXhlbCBsaWVzIHdpdGhpbiB0aGUgc2Npc3NvciByZWN0LCB0
aGVuIGl0IHNob3VsZCBoYXZlIGJlZW4gY2xlYXJlZCB0byBncmVlbi4KKyAgICAgICAgICAgIC8v
IElmIHdlIHJlbmRlcmVkIGEgcmVkIHNxdWFyZSBvbiB0b3Agb2YgaXQsIHRoZW4gdGhlIHBpeGVs
IHNob3VsZCBiZSByZWQgKHRoZSBncmVlbiBjaGFubmVsIHdpbGwgaGF2ZSBiZWVuIHJlc2V0IHRv
IDApLgorICAgICAgICAgICAgZXhwZWN0ZWRSZWRDaGFubmVsID0gcmVuZGVyZWRSZWQgPyAyNTUg
OiAwOworICAgICAgICAgICAgZXhwZWN0ZWRHcmVlbkNoYW5uZWwgPSByZW5kZXJlZFJlZCA/IDAg
OiAyNTU7CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiB0aGUgcGl4ZWwgaXMgd2l0aGluIHRo
ZSBib3VuZHMgb2YgdGhlIHdpbmRvdywgdGhlbiB3ZSBjaGVjayBpdC4gT3RoZXJ3aXNlIHdlIHNr
aXAgaXQuCisgICAgICAgIGlmICgwIDw9IHggJiYgeCA8IGdldFdpbmRvd1dpZHRoKCkgJiYgMCA8
PSB5ICYmIHkgPCBnZXRXaW5kb3dIZWlnaHQoKSkKKyAgICAgICAgeworICAgICAgICAgICAgRVhQ
RUNUX1BJWEVMX0VRKHgsIHksIGV4cGVjdGVkUmVkQ2hhbm5lbCwgZXhwZWN0ZWRHcmVlbkNoYW5u
ZWwsIDAsIDI1NSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKKworICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyB0ZXN0VmVydGV4U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQorICAgICAg
ICAoCisgICAgICAgICAgICBhdHRyaWJ1dGUgaGlnaHAgdmVjNCBwb3NpdGlvbjsKKworICAgICAg
ICAgICAgdm9pZCBtYWluKHZvaWQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xf
UG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyB0ZXN0RnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09V
UkNFCisgICAgICAgICgKKyAgICAgICAgICAgIHZvaWQgbWFpbih2b2lkKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4w
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICBtUHJvZ3JhbSA9IENvbXBp
bGVQcm9ncmFtKHRlc3RWZXJ0ZXhTaGFkZXJTb3VyY2UsIHRlc3RGcmFnbWVudFNoYWRlclNvdXJj
ZSk7CisgICAgICAgIGlmIChtUHJvZ3JhbSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBG
QUlMKCkgPDwgInNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQuIjsKKyAgICAgICAgfQorCisgICAg
ICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisKKyAgICAgICAgZ2xDbGVhckNvbG9yKDAsIDAs
IDAsIDEpOworICAgICAgICBnbENsZWFyRGVwdGhmKDAuMCk7CisgICAgICAgIGdsQ2xlYXIoR0xf
Q09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQpOworCisgICAgICAgIC8vIENh
bGwgZ2xWaWV3cG9ydCBhbmQgZ2xTY2lzc29yIHdpdGggZGVmYXVsdCBwYXJhbWV0ZXJzLgorICAg
ICAgICBnbFNjaXNzb3IoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkp
OworICAgICAgICBnbFZpZXdwb3J0KDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hl
aWdodCgpKTsKKworICAgICAgICBnbERpc2FibGUoR0xfREVQVEhfVEVTVCk7CisgICAgfQorCisg
ICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBnbERlbGV0ZVByb2dy
YW0obVByb2dyYW0pOworCisgICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKKyAgICB9CisK
KyAgICBHTHVpbnQgbVByb2dyYW07Cit9OworCitURVNUX1AoVmlld3BvcnRUZXN0LCBRdWFydGVy
V2luZG93KQoreworICAgIGdsVmlld3BvcnQoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSAvIDQsIGdl
dFdpbmRvd0hlaWdodCgpIC8gNCk7CisKKyAgICBydW5Ob25TY2lzc29yZWRUZXN0KCk7CisKKyAg
ICBydW5TY2lzc29yZWRUZXN0KCk7Cit9CisKK1RFU1RfUChWaWV3cG9ydFRlc3QsIFF1YXJ0ZXJX
aW5kb3dDZW50ZXJlZCkKK3sKKyAgICBnbFZpZXdwb3J0KGdldFdpbmRvd1dpZHRoKCkgKiAzIC8g
OCwgZ2V0V2luZG93SGVpZ2h0KCkgKiAzIC8gOCwgZ2V0V2luZG93V2lkdGgoKSAvIDQsIGdldFdp
bmRvd0hlaWdodCgpIC8gNCk7CisKKyAgICBydW5Ob25TY2lzc29yZWRUZXN0KCk7CisKKyAgICBy
dW5TY2lzc29yZWRUZXN0KCk7Cit9CisKK1RFU1RfUChWaWV3cG9ydFRlc3QsIEZ1bGxXaW5kb3cp
Cit7CisgICAgZ2xWaWV3cG9ydCgwLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWln
aHQoKSk7CisKKyAgICBydW5Ob25TY2lzc29yZWRUZXN0KCk7CisKKyAgICBydW5TY2lzc29yZWRU
ZXN0KCk7Cit9CisKK1RFU1RfUChWaWV3cG9ydFRlc3QsIEZ1bGxXaW5kb3dPZmZDZW50ZXIpCit7
CisgICAgZ2xWaWV3cG9ydCgtZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgp
IC8gMiwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOworCisgICAgcnVuTm9u
U2Npc3NvcmVkVGVzdCgpOworCisgICAgcnVuU2Npc3NvcmVkVGVzdCgpOworfQorCitURVNUX1Ao
Vmlld3BvcnRUZXN0LCBEb3VibGVXaW5kb3cpCit7CisgICAgZ2xWaWV3cG9ydCgwLCAwLCBnZXRX
aW5kb3dXaWR0aCgpICogMiwgZ2V0V2luZG93SGVpZ2h0KCkgKiAyKTsKKworICAgIHJ1bk5vblNj
aXNzb3JlZFRlc3QoKTsKKworICAgIHJ1blNjaXNzb3JlZFRlc3QoKTsKK30KKworVEVTVF9QKFZp
ZXdwb3J0VGVzdCwgRG91YmxlV2luZG93Q2VudGVyZWQpCit7CisgICAgZ2xWaWV3cG9ydCgtZ2V0
V2luZG93V2lkdGgoKSAvIDIsIC1nZXRXaW5kb3dIZWlnaHQoKSAvIDIsIGdldFdpbmRvd1dpZHRo
KCkgKiAyLCBnZXRXaW5kb3dIZWlnaHQoKSAqIDIpOworCisgICAgcnVuTm9uU2Npc3NvcmVkVGVz
dCgpOworCisgICAgcnVuU2Npc3NvcmVkVGVzdCgpOworfQorCitURVNUX1AoVmlld3BvcnRUZXN0
LCBEb3VibGVXaW5kb3dPZmZDZW50ZXIpCit7CisgICAgZ2xWaWV3cG9ydCgtZ2V0V2luZG93V2lk
dGgoKSAqIDMgLyA0LCBnZXRXaW5kb3dIZWlnaHQoKSAqIDMgLyA0LCBnZXRXaW5kb3dXaWR0aCgp
LCBnZXRXaW5kb3dIZWlnaHQoKSk7CisKKyAgICBydW5Ob25TY2lzc29yZWRUZXN0KCk7CisKKyAg
ICBydW5TY2lzc29yZWRUZXN0KCk7Cit9CisKK1RFU1RfUChWaWV3cG9ydFRlc3QsIFRyaXBsZVdp
bmRvdykKK3sKKyAgICBnbFZpZXdwb3J0KDAsIDAsIGdldFdpbmRvd1dpZHRoKCkgKiAzLCBnZXRX
aW5kb3dIZWlnaHQoKSAqIDMpOworCisgICAgcnVuTm9uU2Npc3NvcmVkVGVzdCgpOworCisgICAg
cnVuU2Npc3NvcmVkVGVzdCgpOworfQorCitURVNUX1AoVmlld3BvcnRUZXN0LCBUcmlwbGVXaW5k
b3dDZW50ZXJlZCkKK3sKKyAgICBnbFZpZXdwb3J0KC1nZXRXaW5kb3dXaWR0aCgpLCAtZ2V0V2lu
ZG93SGVpZ2h0KCksIGdldFdpbmRvd1dpZHRoKCkgKiAzLCBnZXRXaW5kb3dIZWlnaHQoKSAqIDMp
OworCisgICAgcnVuTm9uU2Npc3NvcmVkVGVzdCgpOworCisgICAgcnVuU2Npc3NvcmVkVGVzdCgp
OworfQorCitURVNUX1AoVmlld3BvcnRUZXN0LCBUcmlwbGVXaW5kb3dPZmZDZW50ZXIpCit7Cisg
ICAgZ2xWaWV3cG9ydCgtZ2V0V2luZG93V2lkdGgoKSAqIDMgLyAyLCAtZ2V0V2luZG93SGVpZ2h0
KCkgKiAzIC8gMiwgZ2V0V2luZG93V2lkdGgoKSAqIDMsIGdldFdpbmRvd0hlaWdodCgpICogMyk7
CisKKyAgICBydW5Ob25TY2lzc29yZWRUZXN0KCk7CisKKyAgICBydW5TY2lzc29yZWRUZXN0KCk7
Cit9CisKKy8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3
aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91
bGQgYmUgcnVuIGFnYWluc3QuCisvLyBEM0QxMSBGZWF0dXJlIExldmVsIDkgYW5kIEQzRDkgZW11
bGF0ZSBsYXJnZSBhbmQgbmVnYXRpdmUgdmlld3BvcnRzIGluIHRoZSB2ZXJ0ZXggc2hhZGVyLiBX
ZSBzaG91bGQgdGVzdCBib3RoIG9mIHRoZXNlIGFzIHdlbGwgYXMgRDNEMTEgRmVhdHVyZSBMZXZl
bCAxMF8wKy4KK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoVmlld3BvcnRUZXN0LAorICAgICAgICAg
ICAgICAgICAgICAgICBFUzJfRDNEOSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNE
MTEoRUdMX0VYUEVSSU1FTlRBTF9QUkVTRU5UX1BBVEhfQ09QWV9BTkdMRSksCisgICAgICAgICAg
ICAgICAgICAgICAgIEVTMl9EM0QxMShFR0xfRVhQRVJJTUVOVEFMX1BSRVNFTlRfUEFUSF9GQVNU
X0FOR0xFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8zKCksCisgICAg
ICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpLAorICAgICAgICAgICAgICAgICAgICAg
ICBFUzNfT1BFTkdMRVMoKSk7CisKK30gLy8gbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvV2ViR0xDb21wYXRpYmlsaXR5VGVzdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3Rz
L1dlYkdMQ29tcGF0aWJpbGl0eVRlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9XZWJHTENvbXBhdGliaWxpdHlUZXN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyNyBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gV2ViR0xD
b21wYXRpYmlsaXR5VGVzdC5jcHAgOiBUZXN0cyBvZiB0aGUgR0xfQU5HTEVfd2ViZ2xfY29tcGF0
aWJpbGl0eSBleHRlbnNpb24uCisKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgor
CisjaW5jbHVkZSAidGVzdF91dGlscy9nbF9yYWlpLmgiCisKK25hbWVzcGFjZSBhbmdsZQorewor
CitjbGFzcyBXZWJHTENvbXBhdGliaWxpdHlUZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBw
cm90ZWN0ZWQ6CisgICAgV2ViR0xDb21wYXRpYmlsaXR5VGVzdCgpCisgICAgeworICAgICAgICBz
ZXRXaW5kb3dXaWR0aCgxMjgpOworICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKKyAgICAg
ICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOwor
ICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRz
KDgpOworICAgICAgICBzZXRXZWJHTENvbXBhdGliaWxpdHlFbmFibGVkKHRydWUpOworICAgIH0K
KworICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQU5HTEVUZXN0OjpT
ZXRVcCgpOworICAgICAgICBnbEVuYWJsZUV4dGVuc2lvbkFOR0xFID0gcmVpbnRlcnByZXRfY2Fz
dDxQRk5HTEVOQUJMRUVYVEVOU0lPTkFOR0xFUFJPQz4oCisgICAgICAgICAgICBlZ2xHZXRQcm9j
QWRkcmVzcygiZ2xFbmFibGVFeHRlbnNpb25BTkdMRSIpKTsKKyAgICB9CisKKyAgICB2b2lkIFRl
YXJEb3duKCkgb3ZlcnJpZGUgeyBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7IH0KKworICAgIFBGTkdM
RU5BQkxFRVhURU5TSU9OQU5HTEVQUk9DIGdsRW5hYmxlRXh0ZW5zaW9uQU5HTEUgPSBudWxscHRy
OworfTsKKworLy8gQ29udGV4dCBjcmVhdGlvbiB3b3VsZCBmYWlsIGlmIEVHTF9BTkdMRV9jcmVh
dGVfY29udGV4dF93ZWJnbF9jb21wYXRpYmlsaXR5IHdhcyBub3QgYXZhaWxhYmxlIHNvCisvLyB0
aGUgR0wgZXh0ZW5zaW9uIHNob3VsZCBhbHdheXMgYmUgcHJlc2VudAorVEVTVF9QKFdlYkdMQ29t
cGF0aWJpbGl0eVRlc3QsIEV4dGVuc2lvblN0cmluZ0V4cG9zZWQpCit7CisgICAgRVhQRUNUX1RS
VUUoZXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfd2ViZ2xfY29tcGF0aWJpbGl0eSIpKTsKK30K
KworLy8gVmVyaWZ5IHRoYXQgYWxsIGV4dGVuc2lvbiBlbnRyeSBwb2ludHMgYXJlIGF2YWlsYWJs
ZQorVEVTVF9QKFdlYkdMQ29tcGF0aWJpbGl0eVRlc3QsIEVudHJ5UG9pbnRzKQoreworICAgIGlm
IChleHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV93ZWJnbF9jb21wYXRpYmlsaXR5IikpCisgICAg
eworICAgICAgICBFWFBFQ1RfTkUobnVsbHB0ciwgZWdsR2V0UHJvY0FkZHJlc3MoImdsRW5hYmxl
RXh0ZW5zaW9uQU5HTEUiKSk7CisgICAgfQorfQorCisvLyBXZWJHTCAxIGFsbG93cyBHTF9ERVBU
SF9TVEVOQ0lMX0FUVEFDSE1FTlQgYXMgYSB2YWxpZCBiaW5kaW5nIHBvaW50LiAgTWFrZSBzdXJl
IGl0IGlzIHVzYWJsZSwKKy8vIGV2ZW4gaW4gRVMyIGNvbnRleHRzLgorVEVTVF9QKFdlYkdMQ29t
cGF0aWJpbGl0eVRlc3QsIERlcHRoU3RlbmNpbEJpbmRpbmdQb2ludCkKK3sKKyAgICBHTFJlbmRl
cmJ1ZmZlciByZW5kZXJidWZmZXI7CisgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJV
RkZFUiwgcmVuZGVyYnVmZmVyLmdldCgpKTsKKyAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xf
UkVOREVSQlVGRkVSLCBHTF9ERVBUSDI0X1NURU5DSUw4LCAzMiwgMzIpOworCisgICAgR0xGcmFt
ZWJ1ZmZlciBmcmFtZWJ1ZmZlcjsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZF
UiwgZnJhbWVidWZmZXIuZ2V0KCkpOworICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xf
RlJBTUVCVUZGRVIsIEdMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVGRkVS
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyYnVmZmVyLmdldCgpKTsKKwor
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworfQorCisvLyBUZXN0IHRoYXQgYXR0ZW1wdGluZyB0
byBlbmFibGUgYW4gZXh0ZW5zaW9uIHRoYXQgZG9lc24ndCBleGlzdCBnZW5lcmF0ZXMgR0xfSU5W
QUxJRF9PUEVSQVRJT04KK1RFU1RfUChXZWJHTENvbXBhdGliaWxpdHlUZXN0LCBFbmFibGVFeHRl
bnNpb25WYWxpZGF0aW9uKQoreworICAgIEVYUEVDVF9FUShHTF9GQUxTRSwgZ2xFbmFibGVFeHRl
bnNpb25BTkdMRSgiaW52YWxpZF9leHRlbnNpb25fc3RyaW5nIikpOworICAgIEVYUEVDVF9HTF9F
UlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKKy8vIFRlc3QgZW5hYmxpbmcgdGhlIEdM
X09FU19lbGVtZW50X2luZGV4X3VpbnQgZXh0ZW5zaW9uCitURVNUX1AoV2ViR0xDb21wYXRpYmls
aXR5VGVzdCwgRW5hYmxlRXh0ZW5zaW9uVWludEluZGljZXMpCit7CisgICAgaWYgKGdldENsaWVu
dE1ham9yVmVyc2lvbigpICE9IDIpCisgICAgeworICAgICAgICAvLyBUaGlzIHRlc3Qgb25seSB3
b3JrcyBvbiBFUzIgd2hlcmUgdWludCBpbmRpY2VzIGFyZSBub3QgYXZhaWxhYmxlIGJ5IGRlZmF1
bHQKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEVYUEVDVF9GQUxTRShleHRlbnNpb25F
bmFibGVkKCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50IikpOworCisgICAgR0xCdWZmZXIgaW5k
ZXhCdWZmZXI7CisgICAgZ2xCaW5kQnVmZmVyKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRl
eEJ1ZmZlci5nZXQoKSk7CisKKyAgICBHTHVpbnQgZGF0YVtdID0gezAsIDEsIDIsIDEsIDMsIDJ9
OworICAgIGdsQnVmZmVyRGF0YShHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgc2l6ZW9mKGRhdGEp
LCBkYXRhLCBHTF9TVEFUSUNfRFJBVyk7CisKKyAgICBBTkdMRV9HTF9QUk9HUkFNKHByb2dyYW0s
ICJ2b2lkIG1haW4oKSB7IGdsX1Bvc2l0aW9uID0gdmVjNCgwLCAwLCAwLCAxKTsgfSIsCisgICAg
ICAgICAgICAgICAgICAgICAidm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAsIDEs
IDAsIDEpOyB9IikKKyAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbS5nZXQoKSk7CisKKyAgICBnbERy
YXdFbGVtZW50cyhHTF9UUklBTkdMRVMsIDIsIEdMX1VOU0lHTkVEX0lOVCwgbnVsbHB0cik7Cisg
ICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7CisKKyAgICBpZiAoZ2xFbmFibGVF
eHRlbnNpb25BTkdMRSgiR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpKQorICAgIHsKKyAgICAg
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgICAgIEVYUEVDVF9UUlVFKGV4dGVuc2lvbkVu
YWJsZWQoIkdMX09FU19lbGVtZW50X2luZGV4X3VpbnQiKSk7CisKKyAgICAgICAgZ2xEcmF3RWxl
bWVudHMoR0xfVFJJQU5HTEVTLCAyLCBHTF9VTlNJR05FRF9JTlQsIG51bGxwdHIpOworICAgICAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICB9Cit9CisKKy8vIFVzZSB0aGlzIHRvIHNlbGVj
dCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBt
YWpvciB2ZXJzaW9uKSB0aGVzZQorLy8gdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgorQU5H
TEVfSU5TVEFOVElBVEVfVEVTVChXZWJHTENvbXBhdGliaWxpdHlUZXN0LAorICAgICAgICAgICAg
ICAgICAgICAgICBFUzJfRDNEOSgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExKCksCisgICAgICAgICAgICAgICAg
ICAgICAgIEVTMl9EM0QxMV9GTDlfMygpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BF
TkdMKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgRVMyX09QRU5HTEVTKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19P
UEVOR0xFUygpKTsKKworfSAgLy8gbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvbWVkaWEvcGl4ZWwuaW5sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9tZWRpYS9waXhlbC5pbmwJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rl
c3RzL21lZGlhL3BpeGVsLmlubAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExMDAwIEBACisv
LyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBoZWFkZXIgZnJvbSBwaXhlbC5kZHMsIGEgNTEyeDUx
MiAoMTAgbWlwIGxldmVscykKKy8vIERYVDEgdGV4dHVyZSB1c2luZyBERFNUb0hlYWRlci5leGUu
CitzdGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVsX3dpZHRoID0gNTEyOworc3RhdGljIGNvbnN0IHNp
emVfdCBwaXhlbF9oZWlnaHQgPSA1MTI7CitzdGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVsX2xldmVs
cyA9IDEwOworCitzdGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVsXzBfd2lkdGggPSA1MTI7CitzdGF0
aWMgY29uc3Qgc2l6ZV90IHBpeGVsXzBfaGVpZ2h0ID0gNTEyOworc3RhdGljIGNvbnN0IHNpemVf
dCBwaXhlbF8wX3NpemUgPSAxMzEwNzI7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBwaXhl
bF8wX2RhdGFbMTMxMDcyXSA9Cit7CisgICAgMHg0NiwweDYyLDB4NjMsMHg0MSwweDhCLDB4OEIs
MHhGRCwweDU1LDB4RTUsMHg1MSwweDIyLDB4MzksMHhBQSwweEE4LDB4RkUsMHhENSwKKyAgICAw
eEM1LDB4NTEsMHgyMywweDM5LDB4NjAsMHg2MCwweEFFLDB4QUYsMHhBNSwweDQ5LDB4MDIsMHgz
OSwweDBCLDB4MkQsMHg5NywweEZGLAorICAgIDB4NDcsMHg2MiwweDAyLDB4MzksMHgwQSwweEFC
LDB4NUYsMHg3RCwweEU1LDB4NTEsMHhDMSwweDMwLDB4ODAsMHhBQSwweERGLDB4RDUsCisgICAg
MHhBNSwweDQ5LDB4MjMsMHgzOSwweDYwLDB4RUYsMHhFOSwweDJELDB4QzUsMHg1MSwweEUyLDB4
MzAsMHhBRCwweEZELDB4RkYsMHg4MCwKKyAgICAweDI3LDB4NUEsMHg0MywweDM5LDB4MEUsMHhG
NSwweDU1LDB4N0YsMHhFNSwweDQ5LDB4QzEsMHgzMCwweEE4LDB4RkYsMHhENSwweEY3LAorICAg
IDB4RTUsMHg0OSwweDIzLDB4MzksMHhFQiwweEVELDB4QUYsMHgyQiwweEM5LDB4NkEsMHgyMyww
eDM5LDB4NTUsMHg1NSwweEY3LDB4ODIsCisgICAgMHgwNiwweDUyLDB4MDMsMHgzMSwweEZELDB4
N0QsMHg2QiwweEE4LDB4ODQsMHg0MSwweEUyLDB4MzAsMHhBRSwweEQ1LDB4REYsMHg3QywKKyAg
ICAweEM1LDB4NDksMHg0MywweDM5LDB4NUQsMHhCRiwweDA5LDB4MjksMHhBOCwweDZBLDB4NDIs
MHgzOSwweDU1LDB4NUYsMHhFMiwweDgyLAorICAgIDB4RTYsMHg1MSwweDIzLDB4MzksMHg1NSww
eDVFLDB4RUEsMHhBOCwweDg0LDB4NDEsMHhFMiwweDMwLDB4RDUsMHhENSwweERFLDB4RDgsCisg
ICAgMHhDNSwweDQ5LDB4NDMsMHg0MSwweEZELDB4MzcsMHgyRiwweDNELDB4RTksMHg3MiwweDQz
LDB4NDEsMHg1NSwweEVBLDB4ODIsMHhCQiwKKyAgICAweEM1LDB4NDksMHhFMiwweDM4LDB4N0Ys
MHhFQSwweEU4LDB4QUEsMHg0NCwweDQxLDB4QzIsMHgzMCwweDJELDB4QjUsMHhERSwweEY4LAor
ICAgIDB4RTUsMHg1MSwweEUyLDB4MzAsMHhBQiwweDJCLDB4QUIsMHhCNSwweDY3LDB4NjIsMHg2
NCwweDQxLDB4NUIsMHhDMCwweDgzLDB4RDcsCisgICAgMHhBNSwweDQ5LDB4MDIsMHgzOSwweDdC
LDB4RkEsMHg4OCwweEZFLDB4QTUsMHg1MSwweDAyLDB4MzksMHgyRCwweDNGLDB4QkUsMHhBQSwK
KyAgICAweDY3LDB4NjIsMHg4NCwweDQ5LDB4MkEsMHgyQSwweEI3LDB4N0QsMHg4OCwweDZBLDB4
NjQsMHg0OSwweEE4LDB4RkEsMHhGRSwweDU1LAorICAgIDB4MDYsMHg1QSwweDY0LDB4NDksMHg2
OCwweEU4LDB4QkIsMHhGRiwweEE1LDB4NTEsMHgwMiwweDM5LDB4MzcsMHg5NywweERFLDB4Nzgs
CisgICAgMHg0NywweDYyLDB4MDIsMHgzOSwweDBBLDB4QUIsMHhENywweDU1LDB4QTksMHg2QSww
eEMyLDB4MzAsMHhFOCwweEZBLDB4RkYsMHhENSwKKyAgICAweEE1LDB4NDksMHgyMywweDM5LDB4
RTAsMHhCNywweEI3LDB4QUYsMHhBNSwweDQ5LDB4MDIsMHgzOSwweDJELDB4RDcsMHhEQSwweEZB
LAorICAgIDB4MjcsMHg1QSwweDAzLDB4MzksMHgwQSwweEZGLDB4NTUsMHg1NSwweEE1LDB4NDks
MHgyMywweDM5LDB4MjgsMHg2RiwweDdELDB4QUQsCisgICAgMHhDNiwweDUxLDB4MDMsMHgzOSww
eDdFLDB4RkYsMHhCRCwweDBCLDB4QzUsMHg1MSwweEUyLDB4MzgsMHhBRCwweEQ3LDB4RkUsMHhF
OCwKKyAgICAweDg1LDB4NDksMHhFMiwweDMwLDB4MEEsMHhERiwweEQ3LDB4N0UsMHhBNSwweDQ5
LDB4MjQsMHgzOSwweEY4LDB4N0QsMHhGOSwweDBCLAorICAgIDB4MjcsMHg1QSwweDQzLDB4Mzks
MHg1NSwweDdELDB4RkYsMHg4MiwweDg1LDB4NDksMHhDMiwweDMwLDB4RUYsMHg3RiwweEE4LDB4
MDIsCisgICAgMHg4NSwweDQ5LDB4QzMsMHgzMCwweEFCLDB4QkQsMHgzRiwweEZBLDB4QzYsMHg1
MSwweDIzLDB4MzksMHhENSwweEJGLDB4MDIsMHgwMiwKKyAgICAweEU2LDB4NTEsMHgwMywweDM5
LDB4N0YsMHhFQSwweEEwLDB4ODAsMHhDNiwweDUxLDB4MDIsMHgzOSwweDU1LDB4NUUsMHhFQSww
eDA4LAorICAgIDB4QzUsMHg1MSwweDIzLDB4MzksMHhCRCwweDJELDB4QTUsMHhENSwweDQ3LDB4
NUEsMHg2NCwweDQxLDB4N0YsMHg4QSwweDBCLDB4OEIsCisgICAgMHhFNiwweDUxLDB4NDMsMHg0
MSwweDVELDB4RUUsMHhCOCwweEUwLDB4ODUsMHg0OSwweDAzLDB4MzksMHg1NywweDc2LDB4RjAs
MHhDMCwKKyAgICAweEM1LDB4NTEsMHhFMywweDMwLDB4MkIsMHgwQiwweDJCLDB4QTUsMHhDOSww
eDcyLDB4QTQsMHg0OSwweDVELDB4MEEsMHg4QiwweEQ1LAorICAgIDB4ODgsMHg2QSwweEE1LDB4
NTEsMHg1RiwweDgyLDB4MDAsMHg1RiwweDA2LDB4NUEsMHg2NCwweDQxLDB4NUIsMHhCOCwweEFF
LDB4QkUsCisgICAgMHhDNSwweDUxLDB4NjMsMHg0MSwweEFFLDB4MjgsMHhDQSwweDVGLDB4QzYs
MHg1MSwweDQzLDB4MzksMHgwMCwweDgwLDB4QUEsMHhGNywKKyAgICAweDA2LDB4NTIsMHgyMyww
eDM5LDB4RkEsMHgyQSwweDNBLDB4OTUsMHg2NiwweDYyLDB4NjMsMHg0MSwweEQ1LDB4QUUsMHgy
MiwweDIyLAorICAgIDB4NDcsMHg2MiwweEE0LDB4NDksMHhERCwweEFCLDB4QTAsMHg4MCwweDY4
LDB4NjIsMHhFNSwweDUxLDB4QUQsMHgwQiwweEFBLDB4MkEsCisgICAgMHg2NywweDZBLDB4RTUs
MHg1MSwweDU2LDB4MjgsMHgyRSwweDNCLDB4QzcsMHg3MiwweDI0LDB4NUEsMHhENSwweEJGLDB4
MkYsMHg2RSwKKyAgICAweEE3LDB4NkEsMHgwNSwweDVBLDB4QUUsMHg4MiwweEE4LDB4NzUsMHg2
NiwweDYyLDB4QzQsMHg1MSwweDA4LDB4MkEsMHhFQSwweEZELAorICAgIDB4NjcsMHg2QSwweEU1
LDB4NTEsMHgyQywweDhBLDB4OEEsMHhBNiwweDg4LDB4NkEsMHg0NywweDYyLDB4NzcsMHg1Riww
eEQ3LDB4OTksCisgICAgMHg4NywweDZBLDB4MjUsMHg1QSwweDY4LDB4QUEsMHhFQiwweEZCLDB4
QTcsMHg2QSwweEM1LDB4NTEsMHg3QSwweEU4LDB4OEEsMHgyQSwKKyAgICAweDQ2LDB4NUEsMHgy
MywweDM5LDB4NTUsMHg1RSwweERBLDB4QTAsMHg4NSwweDQ5LDB4MjMsMHgzOSwweDBGLDB4RjUs
MHgzNSwweEQ3LAorICAgIDB4NjgsMHg2MiwweDQ0LDB4NDEsMHg1NywweDc1LDB4MjcsMHgzRCww
eDg4LDB4NjIsMHg2NCwweDQxLDB4NTUsMHg1NSwweERFLDB4RjAsCisgICAgMHhBNSwweDQ5LDB4
MDMsMHgzMSwweEU3LDB4RkYsMHg2MCwweDU4LDB4RTYsMHg1MSwweDQzLDB4MzksMHg1NSwweDM1
LDB4QjksMHhCNSwKKyAgICAweDBBLDB4NzMsMHg0MywweDM5LDB4NTUsMHhGQiwweEUyLDB4OEIs
MHhDNSwweDQ5LDB4MDMsMHgzOSwweDVGLDB4N0EsMHhDOCwweDgwLAorICAgIDB4NjQsMHg0MSww
eEUyLDB4MzAsMHgyQSwweDA5LDB4MkYsMHhGRSwweEE4LDB4NkEsMHg4NCwweDQxLDB4N0QsMHg4
QiwweDI5LDB4RDUsCisgICAgMHg4OCwweDYyLDB4NjMsMHgzOSwweDU1LDB4RkUsMHhGMCwweEZB
LDB4QTUsMHg0OSwweDAyLDB4MzksMHhCRCwweEI2LDB4RkMsMHg3OCwKKyAgICAweDY4LDB4NjIs
MHgwMiwweDM5LDB4RkIsMHgwQSwweDhCLDB4RjUsMHg4OCwweDYyLDB4QzUsMHg1MSwweDc1LDB4
QzAsMHhGRSwweDU1LAorICAgIDB4NTIsMHhDNSwweEM1LDB4NTEsMHgzNSwweEQ1LDB4NTUsMHg1
NSwweDU1LDB4RTYsMHg0NiwweDYyLDB4MDAsMHgwMiwweDBELDB4QjUsCisgICAgMHhCNiwweEVF
LDB4MzUsMHhFNiwweDg4LDB4MjAsMHgyMiwweDhELDB4QjYsMHhFRSwweDk2LDB4RUUsMHhERiww
eDdGLDB4NkYsMHg3RiwKKyAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4RUQsMHhFRCwweEY5LDB4
OTcsMHg5NiwweEY2LDB4QjYsMHhFRSwweEVFLDB4RkEsMHg3RiwweEJGLAorICAgIDB4QjYsMHhG
NiwweDk2LDB4RUUsMHhBRSwweEI5LDB4M0QsMHg1NywweDk2LDB4RjYsMHhCNiwweEVFLDB4RkUs
MHg3RSwweEY2LDB4RjcsCisgICAgMHhGNywweEY2LDB4QjYsMHhFRSwweDc1LDB4QjUsMHhBNSww
eEFELDB4RjcsMHhGNiwweDk2LDB4RUUsMHhBQSwweEFBLDB4QTgsMHg3RiwKKyAgICAweEQ3LDB4
RjYsMHg5NiwweEVFLDB4RkEsMHhGQSwweEJBLDB4REUsMHhENiwweEY2LDB4QjYsMHhFRSwweEFG
LDB4QUIsMHg4RiwweDJELAorICAgIDB4RDYsMHhGNiwweDk2LDB4RUUsMHhFOCwweEYwLDB4RTgs
MHg3OCwweEI2LDB4RUUsMHg3NSwweEU2LDB4NTcsMHhCRSwweDJFLDB4QkEsCisgICAgMHhENiww
eEY2LDB4OTYsMHhFRSwweEY3LDB4QkYsMHgyQSwweDAzLDB4RjcsMHhGNiwweDk2LDB4RUUsMHhG
NywweEFBLDB4QkEsMHhBQywKKyAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4QzAsMHg2MCwweDc4
LDB4MDgsMHhGNywweEY2LDB4QjcsMHhFRSwweEY1LDB4QkQsMHhBRiwweDhBLAorICAgIDB4Rjcs
MHhGNiwweEQ3LDB4RjYsMHhENSwweDM1LDB4MEYsMHgwQSwweDE4LDB4RkYsMHhENywweEY2LDB4
QkYsMHhBRiwweEJCLDB4QUYsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEFCLDB4N0EsMHg2
QiwweEVFLDB4MTgsMHhGRiwweEY4LDB4RjYsMHhBRiwweDhCLDB4MEIsMHhBQSwKKyAgICAweDE4
LDB4RkYsMHhGNywweEVFLDB4QTgsMHhBOCwweDgwLDB4MDgsMHhGOCwweEZFLDB4MTgsMHhGNyww
eDNGLDB4QUQsMHhGRCwweEY3LAorICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhGRiwweEZCLDB4
QkUsMHhGMCwweDE4LDB4RjcsMHhENywweEY2LDB4QkYsMHhFQiwweDhFLDB4QkEsCisgICAgMHgx
OCwweEZGLDB4RjcsMHhGNiwweEJELDB4RkYsMHhENSwweEQ1LDB4MzcsMHhGNywweEQ4LDB4RjYs
MHhERiwweEJGLDB4REYsMHhGNSwKKyAgICAweEY4LDB4RjYsMHhENywweEY2LDB4NUYsMHgyMCww
eDAwLDB4QjgsMHhGNywweEY2LDB4QjYsMHhFRSwweEFCLDB4N0IsMHg2QywweDhBLAorICAgIDB4
RDcsMHhGNiwweDk3LDB4RUUsMHgwMCwweDA4LDB4OUUsMHg3OCwweEY4LDB4RjYsMHhCNywweEVF
LDB4QkYsMHhGNiwweEVBLDB4M0QsCisgICAgMHhGNywweEY2LDB4QjcsMHhFRSwweDgzLDB4QUYs
MHhFNSwweDdCLDB4RjcsMHhGNiwweEI3LDB4RUUsMHhBQSwweDBBLDB4QUEsMHhCNSwKKyAgICAw
eEY3LDB4RjYsMHg5NiwweEVFLDB4N0YsMHhFQSwweDIyLDB4MkEsMHhENywweEY2LDB4NzUsMHhF
NiwweDdFLDB4RkYsMHhERSwweEI4LAorICAgIDB4OTYsMHhFRSwweDU1LDB4RTYsMHg2QSwweDZB
LDB4RjgsMHhFQywweDM1LDB4RTYsMHgxMCwweEJELDB4RkMsMHg3OCwweDc4LDB4NzAsCisgICAg
MHgzNCwweEU2LDB4MTAsMHhDNSwweDAwLDB4MDMsMHgwQiwweDI5LDB4NTUsMHhFNiwweEYzLDB4
REQsMHg3RSwweEZFLDB4RkUsMHhGQywKKyAgICAweDE0LDB4REUsMHhEMywweERELDB4RTIsMHg2
MiwweDgwLDB4QTAsMHgxNCwweERFLDB4RDMsMHhERCwweEIzLDB4QkEsMHhCRSwweERFLAorICAg
IDB4MTQsMHhERSwweEQyLDB4REQsMHhBMywweEEwLDB4ODgsMHhCQiwweDE0LDB4REUsMHhCMiww
eEQ1LDB4RTgsMHhBMiwweEEyLDB4ODgsCisgICAgMHhGMywweERELDB4RDMsMHhENSwweDI3LDB4
MEUsMHhCNiwweDhBLDB4MTQsMHhERSwweEQzLDB4REQsMHhFQSwweEMyLDB4QzgsMHhEMiwKKyAg
ICAweDg3LDB4NkEsMHg2MywweDQ5LDB4RjUsMHgzRCwweEI3LDB4REQsMHgyOSwweDdCLDB4MDUs
MHg1QSwweDU1LDB4QTAsMHg4OCwweEJELAorICAgIDB4ODgsMHg2MiwweDY0LDB4NDksMHg3Nyww
eDdFLDB4RjgsMHhGOCwweEM2LDB4NTEsMHg2MywweDQxLDB4RjUsMHg3QiwweEE4LDB4NkIsCisg
ICAgMHhBNSwweDQ5LDB4NDMsMHg0MSwweEU4LDB4QTgsMHgyMCwweERFLDB4RTYsMHg1MSwweDIz
LDB4MzksMHg1NSwweDVGLDB4RUEsMHhDQiwKKyAgICAweEU2LDB4NTEsMHhFMiwweDMwLDB4MkEs
MHgwQiwweEFCLDB4NTcsMHg4OCwweDZBLDB4MDIsMHgzMSwweDgwLDB4MEEsMHhGQiwweDU1LAor
ICAgIDB4RTYsMHg1MSwweDAyLDB4MzEsMHhBOCwweEEwLDB4RkUsMHg1NywweEE1LDB4NDksMHgw
MiwweDMxLDB4NUUsMHg2OCwweENCLDB4Q0IsCisgICAgMHhBNSwweDQ5LDB4MDIsMHgzMSwweDAy
LDB4MjksMHg1NSwweDU3LDB4QTksMHg2QSwweEMxLDB4MjgsMHgwMiwweEFCLDB4RkYsMHhENSwK
KyAgICAweDI3LDB4NUEsMHgwMiwweDMxLDB4QTgsMHhGQSwweEY3LDB4NUYsMHhDNSwweDQ5LDB4
RTIsMHgzMCwweDc4LDB4NkUsMHhFQiwweEUyLAorICAgIDB4ODUsMHg0OSwweEUyLDB4MzAsMHgw
QiwweEJGLDB4NzcsMHg2QSwweDA2LDB4NUEsMHhFMiwweDMwLDB4MDIsMHhCNywweEQ1LDB4NzUs
CisgICAgMHhDNSwweDQ5LDB4MjMsMHgzOSwweEFDLDB4NUYsMHg1RCwweEJCLDB4MDUsMHg1Miww
eDAyLDB4MzEsMHg1RiwweEI3LDB4QkQsMHgwMCwKKyAgICAweEE1LDB4NDEsMHgwMiwweDM5LDB4
RkYsMHg1NSwweDZFLDB4ODgsMHg4NCwweDQ5LDB4RTIsMHgzMCwweDMwLDB4RDUsMHg5NywweERG
LAorICAgIDB4QzUsMHg0OSwweDIzLDB4MzksMHg3NSwweDU1LDB4QkYsMHgyMywweDg3LDB4NjIs
MHgyMiwweDM5LDB4NTUsMHg1NSwweERGLDB4QzIsCisgICAgMHg4NSwweDQ5LDB4RTIsMHgzMCww
eDU1LDB4NzcsMHhFQSwweDgwLDB4MjMsMHgzOSwweEUyLDB4MzAsMHgyRCwweDM1LDB4OTcsMHg1
OCwKKyAgICAweEE1LDB4NTEsMHhDMiwweDMwLDB4RkQsMHhCRSwweDJBLDB4MkIsMHgyNywweDYy
LDB4NjMsMHg0MSwweDc1LDB4N0QsMHhFQSwweEEwLAorICAgIDB4QTUsMHg1MSwweDY0LDB4NDks
MHhDRCwweDk1LDB4RkYsMHhBMCwweEE1LDB4NTEsMHg0NCwweDQ5LDB4RUYsMHg5QSwweEJBLDB4
M0EsCisgICAgMHgwNywweDYyLDB4NjQsMHg0OSwweEZELDB4MkQsMHgzRiwweEZGLDB4NDgsMHg2
QSwweDY0LDB4NDEsMHg1RiwweEUwLDB4ODAsMHhFQSwKKyAgICAweEM1LDB4NTEsMHgyMywweDM5
LDB4NTcsMHg3RiwweEZBLDB4QUMsMHg4NSwweDQ5LDB4RTMsMHgzMCwweEE1LDB4MkYsMHhCRSww
eDVGLAorICAgIDB4RTYsMHg1OSwweDIzLDB4MzksMHhBQSwweDIyLDB4QUEsMHhGNSwweDY4LDB4
NjIsMHg0NCwweDQxLDB4NUYsMHhGMCwweEVBLDB4NUQsCisgICAgMHg4NSwweDQ5LDB4MjMsMHgz
OSwweEZGLDB4QTgsMHhBOCwweEY1LDB4ODUsMHg0OSwweEUzLDB4MzAsMHgwRCwweDJELDB4RDcs
MHg3RiwKKyAgICAweEE5LDB4NkEsMHg0NCwweDQxLDB4MEYsMHgyRiwweEY1LDB4NTUsMHg4OSww
eDZBLDB4MDMsMHgzMSwweEZBLDB4QjAsMHhGRSwweDU1LAorICAgIDB4QzYsMHg1MSwweDIzLDB4
MzksMHg3QSwweDYyLDB4RUEsMHhGNSwweEU2LDB4NTEsMHhDMiwweDMwLDB4MEYsMHhBNywweEY3
LDB4RkUsCisgICAgMHg2OCwweDYyLDB4NDQsMHgzOSwweDgyLDB4QUYsMHg1NSwweDU1LDB4RTYs
MHg1MSwweEMyLDB4MzAsMHg4OCwweEE4LDB4RkYsMHhENywKKyAgICAweDg1LDB4NDksMHhDMiww
eDMwLDB4N0MsMHhFOCwweEFFLDB4MjMsMHhDNSwweDQ5LDB4RTIsMHgzOCwweDJCLDB4QjUsMHhG
NywweDIwLAorICAgIDB4RTYsMHg1OSwweDAyLDB4MzEsMHgwMCwweEZFLDB4N0YsMHhFRSwweEU2
LDB4NTEsMHhFMiwweDMwLDB4QTgsMHhGRiwweEY1LDB4RkYsCisgICAgMHgyNiwweDVBLDB4NDMs
MHg0MSwweDU1LDB4NUYsMHhBRiwweDBCLDB4ODgsMHg2MiwweDIyLDB4MzksMHhGRCwweDU1LDB4
RkYsMHhBMCwKKyAgICAweEU1LDB4NTEsMHgwMywweDM5LDB4QjgsMHg3RiwweDdGLDB4QUEsMHhB
NSwweDQ5LDB4MDIsMHgzOSwweENFLDB4QkQsMHgyNSwweEI3LAorICAgIDB4QTgsMHg2QSwweDIz
LDB4MzksMHg1NSwweDVELDB4QUYsMHgyRiwweEE4LDB4NkEsMHg0MywweDQxLDB4NTUsMHhGRiww
eEFFLDB4MDAsCisgICAgMHg4OCwweDZBLDB4NjQsMHg0MSwweDU1LDB4NTUsMHhGRSwweEY4LDB4
MDYsMHg1QSwweDQzLDB4NDEsMHg1NSwweEZGLDB4QUEsMHhBMCwKKyAgICAweDA2LDB4NUEsMHg0
MywweDQxLDB4NTUsMHhGNywweDJFLDB4MEEsMHgyNywweDVBLDB4NDQsMHg0MSwweEY1LDB4QUYs
MHhBQywweEE4LAorICAgIDB4RTYsMHg1MSwweDY0LDB4NDksMHhGNSwweDJFLDB4QUEsMHg4Miww
eDQ3LDB4NjIsMHhDNiwweDUxLDB4MDMsMHhBQiwweDc1LDB4RDUsCisgICAgMHg4OSwweDZBLDB4
RTYsMHg1MSwweEZBLDB4OEEsMHhFMSwweEVELDB4ODgsMHg2QSwweDI3LDB4NUEsMHhGNywweERE
LDB4RUQsMHhBRCwKKyAgICAweDg4LDB4NkEsMHhFNiwweDU5LDB4QkEsMHgyNywweDJDLDB4QkEs
MHg4NywweDZBLDB4MDUsMHg1QSwweDYwLDB4RTAsMHg0MiwweEEwLAorICAgIDB4RTUsMHg1MSww
eDIzLDB4NDEsMHgyRSwweERGLDB4NTYsMHg1QywweDg3LDB4NkEsMHg2MywweDQxLDB4QUYsMHgy
QSwweEJELDB4RDUsCisgICAgMHg0NywweDYyLDB4ODQsMHg0OSwweEJBLDB4RTAsMHhCOCwweDU1
LDB4NDcsMHg2MiwweDY0LDB4NDksMHgyMiwweDJBLDB4MkUsMHg5NSwKKyAgICAweDg3LDB4NkEs
MHgyNiwweDYyLDB4QTgsMHhFMiwweDJFLDB4NTksMHg4NywweDZBLDB4MjYsMHg1QSwweDg4LDB4
ODIsMHhBQiwweEQ1LAorICAgIDB4ODcsMHg2MiwweDI2LDB4NUEsMHhFMywweEMwLDB4RUEsMHg3
NSwweDA2LDB4NUEsMHgwMywweDM5LDB4N0UsMHg3OCwweEUwLDB4RTAsCisgICAgMHhFNiwweDUx
LDB4MjMsMHgzOSwweDJELDB4QkQsMHg1NSwweDU1LDB4NjgsMHg2MiwweDIzLDB4MzksMHhBMCww
eEVBLDB4NTUsMHhERCwKKyAgICAweDQ3LDB4NjIsMHg0NCwweDM5LDB4N0YsMHg1NywweDVELDB4
OEIsMHg4NSwweDQ5LDB4MDIsMHgzMSwweEI3LDB4RDcsMHhERiwweDgwLAorICAgIDB4MDYsMHg1
MiwweDIzLDB4MzksMHgwQiwweEY1LDB4RkYsMHhCRiwweEM1LDB4NDksMHgyMywweDM5LDB4QTgs
MHhENywweEZGLDB4QkEsCisgICAgMHhBNSwweDQ5LDB4MDMsMHgzMSwweDVFLDB4NUYsMHhBQSww
eEEwLDB4NjQsMHg0MSwweDIzLDB4MzksMHhCRCwweEY1LDB4RTIsMHg0MCwKKyAgICAweDg0LDB4
NDEsMHgyMywweDM5LDB4QUEsMHhGRiwweDNGLDB4QUQsMHhFNiwweDUxLDB4NDMsMHgzOSwweDU1
LDB4NzcsMHhFQiwweDBCLAorICAgIDB4RTYsMHg1MSwweEUyLDB4MzAsMHhCRiwweDVGLDB4N0Us
MHhFOCwweEE1LDB4NDksMHgwMiwweDM5LDB4MDAsMHg4QiwweEFELDB4QjUsCisgICAgMHhBNSww
eDQ5LDB4NjQsMHg0OSwweEJFLDB4QjYsMHg4QSwweDY4LDB4QTgsMHg3MiwweDg0LDB4NDksMHgz
RCwweEY1LDB4RDUsMHg1NSwKKyAgICAweDc1LDB4RUUsMHhDNSwweDUxLDB4MDIsMHgyRCwweEI1
LDB4RDUsMHg5NiwweEVFLDB4OEYsMHhBQywweDAwLDB4MDAsMHgwMCwweDA5LAorICAgIDB4QjYs
MHhGNiwweDk2LDB4RUUsMHhCNywweDNGLDB4QjUsMHg3RCwweEI2LDB4RjYsMHg5NiwweEVFLDB4
NjIsMHhDMCwweENCLDB4NEEsCisgICAgMHhCNiwweEVFLDB4OTYsMHhFRSwweEJELDB4QUQsMHhB
QSwweDJCLDB4RDcsMHhGNiwweDk2LDB4RUUsMHhCRiwweDJGLDB4MEEsMHgwQSwKKyAgICAweEQ3
LDB4RjYsMHg3NSwweEVFLDB4MDAsMHg4OCwweEE4LDB4NzgsMHhCNiwweEVFLDB4NzUsMHhFNiww
eEE4LDB4QkUsMHhCRiwweEJGLAorICAgIDB4QjYsMHhFRSwweDk2LDB4RUUsMHhCQiwweEQ5LDB4
RUMsMHg3NSwweEQ3LDB4RjYsMHg5NiwweEVFLDB4MDcsMHgwRiwweEFGLDB4QUQsCisgICAgMHhE
NiwweEY2LDB4OTYsMHhFRSwweDdBLDB4RkEsMHhFQSwweDZCLDB4RDcsMHhGNiwweDU0LDB4RTYs
MHhBMiwweEE4LDB4QUEsMHg5NywKKyAgICAweEY3LDB4RjYsMHg5NiwweEVFLDB4OEEsMHgyQSww
eEZBLDB4RjcsMHhGNywweEY2LDB4QjYsMHhFRSwweDhBLDB4MjgsMHhFQiwweEZGLAorICAgIDB4
RjcsMHhGNiwweEI3LDB4RjYsMHgwOCwweDJFLDB4QkYsMHg3RSwweEY3LDB4RjYsMHg5NiwweEVF
LDB4MDAsMHgwMCwweDJCLDB4REYsCisgICAgMHhGNywweEY2LDB4OTYsMHhFRSwweDAwLDB4MDAs
MHgwMCwweDNELDB4MTgsMHhGRiwweEY3LDB4RjYsMHg1NSwweDU3LDB4N0YsMHg1NSwKKyAgICAw
eDE4LDB4RkYsMHhENywweEY2LDB4RUEsMHhGRSwweEZCLDB4RkUsMHgxOCwweEY3LDB4RDcsMHhG
NiwweDJBLDB4QUUsMHhGNywweEZGLAorICAgIDB4MTgsMHhGNywweEY3LDB4RjYsMHgyQiwweEE3
LDB4NTUsMHg1NSwweDE4LDB4RjcsMHhENywweEY2LDB4MjIsMHgwQSwweDJFLDB4RkYsCisgICAg
MHgxOCwweEY3LDB4RDgsMHhGNiwweEE4LDB4ODgsMHgyQSwweEE5LDB4MTgsMHhGRiwweEY4LDB4
RjYsMHg1NywweEY2LDB4QkYsMHhBRiwKKyAgICAweDE4LDB4RjcsMHhGNywweEY2LDB4NTUsMHg2
MiwweDg4LDB4MDAsMHgxOCwweEY3LDB4RDcsMHhFRSwweERGLDB4RjcsMHhBRSwweEE4LAorICAg
IDB4MTgsMHhGNywweEQ3LDB4RjYsMHg3NywweEZGLDB4QUUsMHhBQSwweDE4LDB4RjcsMHhENyww
eEY2LDB4RkYsMHg3RiwweDZFLDB4N0EsCisgICAgMHhGNywweEY2LDB4QjcsMHhFRSwweDc4LDB4
RUUsMHhCRiwweEVCLDB4RDcsMHhGNiwweDc1LDB4RTYsMHhBRSwweDdDLDB4RTAsMHgwMiwKKyAg
ICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4ODgsMHgwMSwweDBELDB4MzcsMHhENywweEY2LDB4QjYs
MHhFRSwweEE1LDB4QUQsMHhBRSwweDk4LAorICAgIDB4RDcsMHhGNiwweDk2LDB4RUUsMHgwMiww
eEE2LDB4RkUsMHhGQywweEQ3LDB4RjYsMHg5NiwweEVFLDB4RTAsMHg4OCwweDAyLDB4QUUsCisg
ICAgMHhENiwweEY2LDB4MzQsMHhFNiwweDdBLDB4N0UsMHg3RSwweEY4LDB4MzQsMHhFNiwweDcx
LDB4Q0QsMHg3MCwweDcwLDB4NjAsMHg2MCwKKyAgICAweEYzLDB4REQsMHgxMCwweEM1LDB4MkYs
MHgzRCwweEI1LDB4QTUsMHgzNCwweEU2LDB4RDMsMHhENSwweEEwLDB4QTIsMHg4QiwweDA5LAor
ICAgIDB4MTQsMHhERSwweEIyLDB4RDUsMHhBOCwweEFBLDB4ODAsMHhDOCwweDEzLDB4REUsMHhE
MiwweEQ1LDB4REEsMHhFQywweEI4LDB4QkUsCisgICAgMHgxMywweERFLDB4RDMsMHhERCwweEJE
LDB4MkYsMHhBQSwweDBBLDB4MzQsMHhFNiwweEYzLDB4REQsMHhGNywweEVBLDB4NkEsMHhGQSwK
KyAgICAweEYzLDB4REQsMHhEMywweEQ1LDB4MjAsMHgzQSwweEEwLDB4MDAsMHgxMywweERFLDB4
RDMsMHhENSwweEE4LDB4RUYsMHhGRSwweEZBLAorICAgIDB4ODQsMHg0OSwweDAzLDB4MzksMHhF
RiwweEI1LDB4QTcsMHgyNiwweDY3LDB4NjIsMHg0MywweDQxLDB4NTUsMHhGRCwweDBCLDB4MEYs
CisgICAgMHhFQSwweDcyLDB4NjQsMHg0MSwweDU1LDB4RDUsMHhBMiwweDAyLDB4QzgsMHg3Miww
eDQzLDB4MzksMHg3NSwweDU3LDB4RkEsMHgyMCwKKyAgICAweEU2LDB4NzIsMHg2MiwweDQxLDB4
NTUsMHg1NSwweEZBLDB4QTAsMHgwNiwweDUyLDB4NjQsMHg0MSwweEU1LDB4QUYsMHhGRSwweEVD
LAorICAgIDB4QzUsMHg0OSwweEUyLDB4MzAsMHg1RiwweDdBLDB4QUEsMHg4MiwweDY0LDB4NDEs
MHhBMSwweDI4LDB4RjUsMHhCRiwweEZBLDB4RTgsCisgICAgMHhFNSwweDUxLDB4NDMsMHgzOSww
eDU1LDB4RUQsMHgyOSwweEFELDB4RTksMHg2QSwweDQzLDB4MzksMHhGNSwweEYzLDB4ODIsMHhF
RiwKKyAgICAweEU1LDB4NTEsMHg0MywweDM5LDB4N0IsMHhCQSwweEE4LDB4RjgsMHg4NSwweDQx
LDB4RTIsMHgzMCwweEI1LDB4REUsMHhFOCwweEVBLAorICAgIDB4QTUsMHg0OSwweDAyLDB4MzEs
MHhBMiwweDBBLDB4MkQsMHg5NSwweEE4LDB4NkEsMHg2NCwweDQxLDB4RUIsMHgwMywweEFGLDB4
NTUsCisgICAgMHhFNiwweDUxLDB4MDIsMHgzMSwweEVBLDB4RTgsMHhGOCwweEQ3LDB4ODUsMHg0
MSwweEUyLDB4MzAsMHg3QiwweDcwLDB4N0UsMHg2QiwKKyAgICAweEE1LDB4NDksMHgwMiwweDMx
LDB4MEIsMHgwOSwweEI1LDB4NTUsMHhFOCwweDZBLDB4MjMsMHgzOSwweDgyLDB4QUIsMHhGNyww
eDU1LAorICAgIDB4MjcsMHg1QSwweDAyLDB4MzEsMHhCQSwweEU4LDB4RkIsMHg1NywweDY0LDB4
NDEsMHhDMiwweDI4LDB4NUEsMHhGOCwweEY4LDB4QkIsCisgICAgMHhFNiwweDUxLDB4QzEsMHgy
OCwweDJCLDB4QUQsMHhENSwweEZGLDB4ODcsMHg2MiwweDIzLDB4MzksMHg4MiwweEZGLDB4NTUs
MHg1NSwKKyAgICAweDg0LDB4NDksMHhFMiwweDMwLDB4MDAsMHgwOCwweEZGLDB4RjUsMHg2NCww
eDQxLDB4MDIsMHgzOSwweDVFLDB4RjAsMHhFMCwweDgwLAorICAgIDB4ODUsMHg0OSwweEUyLDB4
MzAsMHgyRiwweDJELDB4QkYsMHg4QSwweEU1LDB4NTksMHg0NCwweDQxLDB4QTgsMHhGRiwweDVE
LDB4REYsCisgICAgMHhDNSwweDUxLDB4NjQsMHg0OSwweDdDLDB4RDUsMHg3NSwweDNGLDB4RTUs
MHg1OSwweDQ0LDB4NDksMHg3QiwweEVCLDB4QkEsMHhBQSwKKyAgICAweDQ3LDB4NkEsMHg0NCww
eDQ5LDB4NzcsMHg1RiwweEZFLDB4QTIsMHhBNSwweDUxLDB4MDIsMHgzOSwweEFBLDB4NkIsMHhD
QiwweEFBLAorICAgIDB4NjQsMHg0MSwweEMxLDB4MzAsMHhFRSwweDk1LDB4RkYsMHhGQywweEM1
LDB4NTEsMHhFMiwweDMwLDB4N0QsMHhFRiwweDJCLDB4MEIsCisgICAgMHhFQSwweDcyLDB4RTIs
MHgzOCwweDU1LDB4RkYsMHhGRSwweDgyLDB4QzYsMHg1MSwweDIzLDB4MzksMHg1NSwweDVFLDB4
RUEsMHhBOCwKKyAgICAweDg1LDB4NDEsMHhFMiwweDMwLDB4OTUsMHgzNSwweDFFLDB4N0EsMHhB
OCwweDZBLDB4NDQsMHg0MSwweDU1LDB4QkYsMHgyRCwweEI5LAorICAgIDB4NkEsMHg4MywweDIz
LDB4MzksMHg1NSwweDdGLDB4RTIsMHg4MiwweEE1LDB4NDksMHgwMywweDM5LDB4NUYsMHhGQSww
eEEwLDB4ODAsCisgICAgMHhBNSwweDQ5LDB4RTIsMHgzMCwweDI1LDB4QTUsMHhCRSwweDdFLDB4
MjcsMHg1QSwweDg0LDB4NDEsMHgyNywweDBGLDB4MkIsMHg3NSwKKyAgICAweDY4LDB4NjIsMHg4
NCwweDQxLDB4NzcsMHg3QywweEZBLDB4N0UsMHhBNSwweDQ5LDB4MDMsMHgzOSwweDU2LDB4RTAs
MHg4OCwweEFFLAorICAgIDB4RTYsMHg1MSwweDAzLDB4MzksMHhCRCwweDM3LDB4QjUsMHg1Nyww
eDg4LDB4NkEsMHgyMywweDM5LDB4OEEsMHhBQSwweEVGLDB4NzUsCisgICAgMHgwNiwweDVBLDB4
NjMsMHg0MSwweEZFLDB4RUMsMHhGQSwweEQ1LDB4QTQsMHg0OSwweDAzLDB4MzksMHg3QywweDdD
LDB4RUEsMHhBQSwKKyAgICAweDA2LDB4NUEsMHgwMiwweDMxLDB4MDksMHgwRCwweEQ1LDB4NTUs
MHhDOSwweDZBLDB4MjIsMHgzOSwweEUyLDB4OEEsMHhERiwweEQ1LAorICAgIDB4QzUsMHg1MSww
eDYzLDB4MzksMHhCOCwweEUwLDB4N0EsMHhCRiwweEE1LDB4NDksMHhFMiwweDMwLDB4RkMsMHg1
MiwweEVBLDB4MDAsCisgICAgMHgyNiwweDVBLDB4MDMsMHgzMSwweDJCLDB4QkQsMHhGRCwweEEy
LDB4ODgsMHg2QSwweDQzLDB4MzksMHgwMCwweEZGLDB4NzUsMHhGRiwKKyAgICAweDg4LDB4NkEs
MHg0MywweDQxLDB4QTgsMHhGRiwweDU1LDB4N0YsMHhFNiwweDUxLDB4RTMsMHgzOCwweDAwLDB4
RkEsMHg1NSwweEY3LAorICAgIDB4MDYsMHg1QSwweDQ0LDB4NDEsMHg4OCwweEZGLDB4RkQsMHgy
RiwweDg3LDB4NjIsMHhBNCwweDQ5LDB4NUYsMHg1NSwweEZELDB4MDAsCisgICAgMHg0NiwweDVB
LDB4NjQsMHg0MSwweDZGLDB4NTcsMHhGQSwweEUwLDB4QzYsMHg1MSwweDY0LDB4NDEsMHhGRSww
eDdELDB4QkIsMHg4MiwKKyAgICAweDI2LDB4NUEsMHg2NCwweDQxLDB4MEIsMHgyRCwweEFGLDB4
QkYsMHg2OCwweDYyLDB4QzUsMHg1MSwweDgyLDB4OEEsMHhBOCwweEU1LAorICAgIDB4NjcsMHg2
MiwweDYzLDB4NDEsMHgwOCwweEFBLDB4RkYsMHhENSwweDY3LDB4NkEsMHhDNSwweDUxLDB4QTAs
MHhERiwweEJELDB4MzUsCisgICAgMHg2NywweDZBLDB4NDMsMHg0MSwweDdBLDB4N0EsMHhFQSww
eEU4LDB4QzUsMHg1MSwweEUyLDB4MzgsMHhCNywweEI3LDB4RkEsMHhGMCwKKyAgICAweEU1LDB4
NTksMHg0MywweDQxLDB4RDcsMHhGOSwweDJCLDB4QTUsMHg4OCwweDZBLDB4NjQsMHg0OSwweEQ1
LDB4REYsMHhDMiwweEFBLAorICAgIDB4MjYsMHg2MiwweEE1LDB4NDksMHg4QSwweEVCLDB4QkEs
MHg1RSwweEU1LDB4NTEsMHgwMywweDM5LDB4OEEsMHhBRSwweERFLDB4REUsCisgICAgMHgyNiww
eDVBLDB4NDMsMHg0MSwweEFGLDB4M0YsMHgyRiwweEY1LDB4NjgsMHg2MiwweDg0LDB4NDksMHg3
RiwweEZFLDB4RjgsMHhERCwKKyAgICAweEU2LDB4NTEsMHg0MywweDQxLDB4NUYsMHg3OCwweDQw
LDB4NUIsMHg2NCwweDQxLDB4MDMsMHgzOSwweDAzLDB4M0QsMHg1NSwweDVFLAorICAgIDB4MEEs
MHg3QiwweDIzLDB4MzksMHg4QiwweEFGLDB4RkQsMHg1NSwweDQ3LDB4NUEsMHgyMywweDM5LDB4
QkUsMHhBOCwweEZFLDB4NTUsCisgICAgMHhFNSwweDUxLDB4MDMsMHgzOSwweDhBLDB4QUEsMHhG
QSwweDU3LDB4QTUsMHg0OSwweDAzLDB4MzksMHgwMCwweEFDLDB4RkYsMHg1NSwKKyAgICAweEE1
LDB4NDksMHgwMywweDM5LDB4ODgsMHhCRSwweDc2LDB4NTUsMHg4NSwweDQ5LDB4MDMsMHgzOSww
eEU4LDB4RjgsMHg1NSwweDU1LAorICAgIDB4NDMsMHgzOSwweEUzLDB4MzgsMHg4RSwweEFBLDB4
RUEsMHhGRCwweEU2LDB4NTEsMHhFMiwweDM4LDB4MEEsMHhCRiwweEY1LDB4NUQsCisgICAgMHhF
NiwweDUxLDB4RTIsMHgzOCwweEE4LDB4RkUsMHg1RiwweEY1LDB4NjQsMHg0MSwweDAyLDB4Mzks
MHhGQywweDdBLDB4N0IsMHhGQSwKKyAgICAweDY0LDB4NDksMHgwMiwweDM5LDB4QTgsMHhGRCww
eDdELDB4RkUsMHg2NCwweDQ5LDB4MDIsMHgzOSwweDA4LDB4RkYsMHhBRiwweEFELAorICAgIDB4
QTYsMHg1MSwweDAyLDB4MzksMHgyOCwweEI5LDB4QkQsMHgyRiwweDU0LDB4RTYsMHgwNiwweDVB
LDB4MjksMHhCNSwweEQ1LDB4RDUsCisgICAgMHg5NiwweEVFLDB4Q0UsMHhCNCwweDAwLDB4MDAs
MHgwMywweDA5LDB4QjYsMHhGNiwweDk2LDB4RUUsMHhBQSwweEVFLDB4QUEsMHgwRSwKKyAgICAw
eEY3LDB4RjYsMHg5NiwweEVFLDB4RjcsMHhCRiwweEJELDB4MkIsMHhENywweEY2LDB4OTYsMHhF
RSwweDAwLDB4RTAsMHg2OCwweDcwLAorICAgIDB4QjYsMHhGNiwweDc2LDB4RUUsMHg3QSwweDdG
LDB4RDYsMHg3NSwweEI2LDB4RUUsMHg3NiwweEVFLDB4QkQsMHhBRCwweDNELDB4QUQsCisgICAg
MHhCNiwweEVFLDB4OTYsMHhFRSwweERELDB4QjUsMHhFNywweDc3LDB4RDcsMHhGNiwweDk2LDB4
RUUsMHhFRiwweEZCLDB4NjksMHhFOSwKKyAgICAweDk2LDB4RUUsMHhGNCwweERELDB4ODAsMHg4
MCwweEYwLDB4NzAsMHg3NiwweEU2LDB4RjQsMHhERCwweDNFLDB4QkQsMHgzRCwweEFELAorICAg
IDB4QjYsMHhFRSwweDU1LDB4RTYsMHgwQSwweDJGLDB4QTksMHhCNywweEQ3LDB4RjYsMHg3NSww
eEU2LDB4MEUsMHgyQiwweEZCLDB4RkYsCisgICAgMHhENiwweEY2LDB4OTYsMHhFRSwweDIwLDB4
MjIsMHhBRiwweEZELDB4RjgsMHhGRSwweDc1LDB4RTYsMHg1RSwweEFBLDB4ODIsMHgwQSwKKyAg
ICAweEY4LDB4RjYsMHg1NSwweEU2LDB4RkYsMHg1RiwweEUwLDB4QTAsMHhENywweEY2LDB4MzQs
MHhERSwweDIyLDB4RUYsMHg1RiwweEY4LAorICAgIDB4RDcsMHhGNiwweDM0LDB4REUsMHgwMCww
eDAyLDB4RTcsMHg1NSwweEY3LDB4RjYsMHg1NCwweEU2LDB4MDAsMHgwMCwweDJBLDB4QjUsCisg
ICAgMHgzOCwweEY3LDB4RDcsMHhGNiwweDU3LDB4N0YsMHhGRiwweEI1LDB4RjcsMHhGNiwweEQ3
LDB4RjYsMHhCRiwweEFCLDB4QjAsMHgyMCwKKyAgICAweEY4LDB4RjYsMHhENywweEY2LDB4NzUs
MHg0RSwweDg4LDB4ODAsMHgxOCwweEY3LDB4RDcsMHhGNiwweDI3LDB4NUQsMHg1NywweEVCLAor
ICAgIDB4MTgsMHhGNywweEQ3LDB4RjYsMHg4MiwweEZGLDB4RDUsMHhENywweDE4LDB4RjcsMHhE
NywweEVFLDB4MjgsMHhBOCwweEVGLDB4RTcsCisgICAgMHgxOCwweEY3LDB4RDcsMHhGNiwweDhB
LDB4MDIsMHhBMiwweDdCLDB4MTgsMHhGNywweEI3LDB4RjYsMHhFMCwweEFBLDB4QUEsMHhBMiwK
KyAgICAweEY4LDB4RkUsMHhENywweEVFLDB4N0EsMHhFQSwweEVBLDB4N0EsMHhGNywweEY2LDB4
QjcsMHhFRSwweEI3LDB4N0YsMHhCRiwweDgyLAorICAgIDB4RDcsMHhGNiwweDk2LDB4RUUsMHg1
RSwweDYyLDB4OEEsMHgwMCwweEQ3LDB4RjYsMHg3NSwweEU2LDB4MjIsMHhBOSwweDJGLDB4OUYs
CisgICAgMHhENywweEY2LDB4QjcsMHhFRSwweDYyLDB4MEIsMHhBNywweEVCLDB4RDcsMHhGNiww
eDc2LDB4RUUsMHhBRSwweEJFLDB4RkUsMHg3OCwKKyAgICAweEQ3LDB4RjYsMHg3NSwweEU2LDB4
NzAsMHg3MywweEZGLDB4RUEsMHg5NiwweEVFLDB4RDIsMHhENSwweDdFLDB4NUEsMHg3QSwweDZB
LAorICAgIDB4OTIsMHhDRCwweDMwLDB4QzUsMHhBNSwweEQ2LDB4QkMsMHhBQywweDM0LDB4RTYs
MHg5MSwweENELDB4MDksMHgyRCwweEFELDB4MzUsCisgICAgMHgxNCwweEU2LDB4RjMsMHhENSww
eEY4LDB4RkMsMHg3RSwweEZBLDB4MTQsMHhERSwweEQyLDB4REQsMHhBRiwweEFCLDB4OEEsMHgw
QSwKKyAgICAweDM0LDB4RTYsMHhGMywweERELDB4MjcsMHgyRiwweEFCLDB4OEEsMHgzMywweEU2
LDB4RjMsMHhERCwweDdBLDB4N0UsMHg3RSwweDdDLAorICAgIDB4MTUsMHhFNiwweEYzLDB4RDUs
MHhGRiwweEJGLDB4OUYsMHhCNywweDE0LDB4REUsMHhGMywweERELDB4OUYsMHg5RSwweEI4LDB4
QjQsCisgICAgMHgyNSwweDVBLDB4NDMsMHg0MSwweDU1LDB4NUUsMHg1RSwweDY4LDB4MjcsMHg1
QSwweDIzLDB4MzksMHgwQiwweEFBLDB4REQsMHhGNSwKKyAgICAweEE5LDB4NkEsMHg2NCwweDQx
LDB4MEEsMHhFRiwweDc1LDB4NTUsMHg4NywweDZBLDB4NDMsMHg0MSwweEEwLDB4RkIsMHg1NSww
eDc3LAorICAgIDB4NDUsMHg1QSwweDIyLDB4MzksMHgyOCwweEZGLDB4NUYsMHg1NywweEU1LDB4
NTEsMHg0MywweDM5LDB4QTgsMHhERiwweEQ1LDB4RjUsCisgICAgMHhBNSwweDQ5LDB4MDMsMHgz
OSwweDg4LDB4RkMsMHhERSwweEZBLDB4QTUsMHg0OSwweDAyLDB4MzEsMHg2MiwweDhCLDB4MEIs
MHgwMiwKKyAgICAweEM1LDB4NDksMHhFMiwweDMwLDB4RUQsMHhGNywweEFBLDB4QTAsMHhBNSww
eDQ5LDB4MDIsMHgzMSwweDhGLDB4NUYsMHg2QSwweDJBLAorICAgIDB4NDMsMHg0MSwweEMxLDB4
MjgsMHhBQSwweEY1LDB4QjcsMHhCQywweDg0LDB4NDEsMHgyMywweDM5LDB4MDUsMHhBNSwweDdB
LDB4QTIsCisgICAgMHhBOSwweDZBLDB4RTIsMHgzMCwweDU1LDB4RkYsMHhFQSwweDAyLDB4QzYs
MHg0OSwweDIzLDB4MzksMHg1RCwweDdGLDB4QTksMHg4MCwKKyAgICAweDY0LDB4NDEsMHhDMSww
eDI4LDB4OTUsMHg5RiwweEJBLDB4RTgsMHhDNSwweDQ5LDB4MDMsMHgzMSwweEY3LDB4QUEsMHgy
QiwweDBELAorICAgIDB4RUEsMHg3MiwweDQzLDB4MzksMHg1NSwweEZGLDB4OEIsMHhBQiwweDI3
LDB4NUEsMHg0MywweDQxLDB4NTUsMHhGNSwweEJFLDB4RTAsCisgICAgMHhDNSwweDQ5LDB4RTIs
MHgzMCwweEQ1LDB4NTYsMHg3RSwweDc4LDB4ODUsMHg0MSwweEUyLDB4MzAsMHhBQSwweDJCLDB4
MDksMHgyRiwKKyAgICAweEE5LDB4NkEsMHg2NCwweDQxLDB4NTcsMHg4MywweDhCLDB4RjcsMHhF
NiwweDUxLDB4MjMsMHgzOSwweEY1LDB4QUUsMHhBOCwweEVFLAorICAgIDB4QTUsMHg0OSwweEUy
LDB4MzAsMHhENywweDdBLDB4RTAsMHhBMiwweEE0LDB4NDksMHhFMiwweDMwLDB4QUEsMHgyQiww
eDJELDB4RDUsCisgICAgMHhBOSwweDZBLDB4NDQsMHg0MSwweEFCLDB4OEIsMHhFRiwweDU1LDB4
QzYsMHg1MSwweDQzLDB4NDksMHhGQSwweEZDLDB4RkMsMHhGRiwKKyAgICAweEE1LDB4NTEsMHg2
NCwweDUxLDB4MkUsMHgyQSwweDJCLDB4QzksMHhFNiwweDYxLDB4ODQsMHg1MSwweEZBLDB4RUQs
MHhDRiwweDgyLAorICAgIDB4MjcsMHg2QSwweEE0LDB4NTksMHhDMywweEZELDB4RDUsMHhGNSww
eEE1LDB4NTksMHgyMywweDQxLDB4RTgsMHhGOCwweDdDLDB4RjgsCisgICAgMHg4NCwweDQ5LDB4
RTIsMHgzOCwweDdFLDB4NzgsMHhFQSwweDIwLDB4QTUsMHg0OSwweEUyLDB4MzAsMHgwMSwweEFE
LDB4RDcsMHhCQSwKKyAgICAweDY4LDB4NjIsMHg0NCwweDQxLDB4MDIsMHhGRiwweDVELDB4REQs
MHg0OCwweDYyLDB4MjMsMHgzOSwweEZDLDB4NTcsMHg3NywweEZGLAorICAgIDB4QTUsMHg0OSww
eEUyLDB4MzAsMHg3QSwweEVFLDB4QUEsMHgwMCwweEM2LDB4NTEsMHgwMywweDMxLDB4MEYsMHg1
NSwweEJGLDB4QUEsCisgICAgMHgwNiwweDUyLDB4NDMsMHg0MSwweDgwLDB4REQsMHhCRiwweEVF
LDB4QzUsMHg0OSwweDIzLDB4MzksMHhGQSwweDdFLDB4RUEsMHgwQSwKKyAgICAweEE1LDB4NDks
MHgwMiwweDMxLDB4N0EsMHhBMiwweDAyLDB4MDAsMHhDNSwweDQ5LDB4MjMsMHgzOSwweEY1LDB4
QkQsMHgyQSwweEFBLAorICAgIDB4RTYsMHg1MSwweDQzLDB4MzksMHhGNywweERCLDB4QTAsMHhB
QSwweEM2LDB4NDksMHg0NCwweDQxLDB4OTUsMHhBRiwweDJBLDB4QUEsCisgICAgMHhDNiwweDUx
LDB4MDIsMHgzOSwweDVFLDB4NzAsMHhFMCwweEE4LDB4ODQsMHg0OSwweEUxLDB4MzAsMHhBRCww
eDJGLDB4M0YsMHhGNiwKKyAgICAweDI2LDB4NUEsMHg0NCwweDQxLDB4QkYsMHgyQiwweEJGLDB4
QjUsMHg4NywweDYyLDB4QTQsMHg0OSwweDdELDB4ODIsMHhBMCwweEQ1LAorICAgIDB4RTUsMHg1
MSwweDIyLDB4MzEsMHg1OCwweEU4LDB4RUMsMHhCRSwweDg1LDB4NDEsMHgyMywweDM5LDB4MkQs
MHhCRCwweEQ2LDB4N0UsCisgICAgMHhFNSwweDUxLDB4NDMsMHgzOSwweDAwLDB4OEEsMHhBQSww
eERELDB4MDYsMHg1MiwweDg0LDB4NDEsMHgwMCwweDBBLDB4OUYsMHhGNSwKKyAgICAweDg4LDB4
NjIsMHg0MywweDM5LDB4MDIsMHg4MiwweEY3LDB4RDcsMHgwNiwweDUyLDB4NjQsMHg0MSwweEMw
LDB4QjAsMHhGRiwweDU1LAorICAgIDB4RTYsMHg1MSwweDQzLDB4MzksMHg4MCwweEE4LDB4QkIs
MHhENywweEE1LDB4NDksMHgwMywweDMxLDB4NUMsMHhGOCwweDZBLDB4RkYsCisgICAgMHhFNSww
eDUxLDB4MDMsMHgzMSwweDJGLDB4QkQsMHhGNSwweDU3LDB4NDcsMHg2MiwweDAzLDB4MzEsMHgw
MiwweEFCLDB4RkYsMHg1NSwKKyAgICAweDY2LDB4NjIsMHgwMywweDMxLDB4RTgsMHhGRSwweEZG
LDB4NTUsMHhBNSwweDQ5LDB4RTIsMHgzMCwweDAwLDB4ODgsMHhFQSwweDdELAorICAgIDB4QzUs
MHg0OSwweEUyLDB4MzAsMHgyMiwweDhBLDB4RkYsMHg1NSwweEM1LDB4NTEsMHgyMiwweDM5LDB4
MEEsMHgyQSwweEVELDB4RDUsCisgICAgMHg0NiwweDVBLDB4RTIsMHgzMCwweEY3LDB4NUUsMHg3
QSwweEMyLDB4RTYsMHg1MSwweEUyLDB4MzAsMHgwMiwweEJGLDB4RDUsMHg1NywKKyAgICAweDQ2
LDB4NjIsMHgwMiwweDM5LDB4QTAsMHhGRiwweDU1LDB4NTUsMHhDNSwweDUxLDB4MDIsMHgzOSww
eDc4LDB4RkEsMHg5NSwweEI1LAorICAgIDB4RTYsMHg1OSwweDAyLDB4MzksMHhGNSwweDVGLDB4
NUUsMHg2MCwweEE1LDB4NTEsMHgwMiwweDM5LDB4MDAsMHg3RCwweDU1LDB4RDcsCisgICAgMHhB
NSwweDQ5LDB4MDMsMHgzOSwweEM4LDB4REYsMHhERCwweDJCLDB4MDYsMHg1QSwweDQzLDB4NDEs
MHg3NSwweEU1LDB4MEYsMHgwQSwKKyAgICAweDA2LDB4NUEsMHgwMywweDM5LDB4RjUsMHhGNyww
eEZBLDB4QTAsMHhBNCwweDQ5LDB4MDMsMHgzOSwweEZGLDB4RkYsMHhGRCwweEEwLAorICAgIDB4
QzUsMHg1MSwweDAyLDB4MzksMHg3NSwweDc1LDB4RkQsMHgwMiwweEM1LDB4NTEsMHhFMywweDM4
LDB4NUYsMHhERiwweEZGLDB4MDAsCisgICAgMHhFNSwweDUxLDB4RTIsMHgzMCwweEZELDB4RkQs
MHhCNywweDAyLDB4MDcsMHg1QSwweEUyLDB4MzAsMHg1NywweDdELDB4RUIsMHgwMiwKKyAgICAw
eDI3LDB4NUEsMHgyMywweDM5LDB4NTUsMHg1NSwweERGLDB4MDgsMHgwNiwweDVBLDB4MDIsMHgz
OSwweDU1LDB4RDUsMHhCQSwweDAwLAorICAgIDB4MDYsMHg2MiwweDAzLDB4MzksMHg1NSwweDdF
LDB4QUEsMHgwMCwweDY3LDB4NjIsMHgwMywweDM5LDB4NzUsMHg3RCwweEFBLDB4ODgsCisgICAg
MHgwNiwweDVBLDB4NDMsMHg0MSwweDU1LDB4RjUsMHgyMCwweDIwLDB4NDcsMHg2MiwweDQzLDB4
NDEsMHg1NSwweEY3LDB4QTIsMHg4MCwKKyAgICAweDQ3LDB4NjIsMHgyMywweDM5LDB4RDUsMHhC
RiwweDAwLDB4MDIsMHgyNywweDYyLDB4NDQsMHg0MSwweDU1LDB4OEEsMHgwMCwweDAwLAorICAg
IDB4NDgsMHg2QSwweDY0LDB4NDksMHg1NSwweEVBLDB4QTAsMHgyQSwweDQ4LDB4NkEsMHhBNSww
eDUxLDB4NTUsMHhBQSwweDBBLDB4ODgsCisgICAgMHgwQSwweDgzLDB4QzYsMHg1MSwweEQ1LDB4
QkYsMHhBRiwweDJCLDB4OTIsMHhENSwweDQ3LDB4NjIsMHhENSwweEJGLDB4MkYsMHgyQiwKKyAg
ICAweDc1LDB4RUUsMHgwRiwweEM1LDB4MDksMHgwQiwweDAyLDB4MDIsMHhENywweEY2LDB4OTYs
MHhGNiwweEVELDB4QUYsMHhCRiwweDBCLAorICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHhDMyww
eEMyLDB4RTAsMHhDMCwweEI2LDB4RjYsMHg3NiwweEVFLDB4RTAsMHhFOCwweEJBLDB4QjgsCisg
ICAgMHg5NiwweEY2LDB4NzUsMHhFNiwweEJFLDB4REUsMHhEQSwweDZBLDB4OTYsMHhFRSwweDU1
LDB4RUUsMHgwQiwweDBCLDB4QUIsMHg2QiwKKyAgICAweDk2LDB4RUUsMHgzNCwweEU2LDB4ODgs
MHhBOCwweDdFLDB4RDcsMHhCNiwweEVFLDB4NTUsMHhFNiwweDhCLDB4RkYsMHhENSwweDU1LAor
ICAgIDB4NzYsMHhFRSwweEIzLDB4RDUsMHhGMCwweEY4LDB4N0UsMHhGRSwweDU1LDB4RTYsMHhG
NCwweERELDB4MjksMHhFRCwweEI3LDB4MEYsCisgICAgMHg3NSwweEU2LDB4RDMsMHhENSwweDI4
LDB4QUUsMHg3QSwweEFBLDB4NzUsMHhFRSwweDcxLDB4Q0QsMHgwMCwweDBBLDB4RkYsMHg3QiwK
KyAgICAweDk2LDB4RUUsMHg1MSwweEM1LDB4MDAsMHgyMiwweEFBLDB4REQsMHgxOCwweEZGLDB4
RjMsMHhERCwweDBBLDB4MkEsMHhCRiwweEY1LAorICAgIDB4MTgsMHhGRiwweDk1LDB4RTYsMHhF
OCwweDgwLDB4QUIsMHhGRCwweEI3LDB4RjYsMHhENiwweEVFLDB4QkEsMHhBQSwweEJCLDB4QUIs
CisgICAgMHhENywweEY2LDB4NTUsMHhFNiwweDVGLDB4RTAsMHg4MiwweDhBLDB4QjYsMHhFRSww
eDM1LDB4REUsMHhENSwweEZGLDB4RUMsMHhBMCwKKyAgICAweEQ3LDB4RjYsMHgzNSwweERFLDB4
MkIsMHhENSwweDVGLDB4RUUsMHgxOCwweEY3LDB4MzUsMHhFNiwweDBBLDB4MkEsMHhBRiwweEQ1
LAorICAgIDB4MTgsMHhGRiwweDk2LDB4RUUsMHgyQSwweDIwLDB4MEIsMHhBRCwweDE4LDB4RkYs
MHhENywweEY2LDB4QTgsMHhFRSwweDdBLDB4RTgsCisgICAgMHgxOCwweEY3LDB4RDcsMHhGNiww
eDhFLDB4OEEsMHg4QiwweERGLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhGRSwweEVBLDB4QkEsMHg3
RiwKKyAgICAweDE4LDB4RjcsMHhENywweEVFLDB4NUYsMHg1RSwweEYwLDB4RTIsMHhENywweEY2
LDB4RjcsMHhFRSwweEE4LDB4QTgsMHgwMiwweDIyLAorICAgIDB4RDcsMHhGNiwweEI3LDB4RUUs
MHhDOCwweEVDLDB4OEEsMHg4MCwweEQ3LDB4RjYsMHhCNywweEVFLDB4MDAsMHg3RSwweDZCLDB4
QUEsCisgICAgMHhGNywweEY2LDB4QjcsMHhFRSwweEVBLDB4QUYsMHhCRCwweEE3LDB4RjcsMHhG
NiwweDU1LDB4RTYsMHhEQSwweDYwLDB4RTgsMHhBMiwKKyAgICAweEQ3LDB4RjYsMHg1NSwweEU2
LDB4ODIsMHgwQiwweDA5LDB4MzUsMHhENywweEY2LDB4NTUsMHhFNiwweDc4LDB4RkEsMHg3OCww
eDY4LAorICAgIDB4QjYsMHhFRSwweDU1LDB4RTYsMHgwQiwweDBGLDB4QkYsMHhGNSwweDc1LDB4
RUUsMHhEMiwweEQ1LDB4NjgsMHg2OCwweDYwLDB4QzAsCisgICAgMHhEMywweERELDB4NTEsMHhD
RCwweEQ2LDB4RUUsMHhCRSwweEZDLDB4RjMsMHhERCwweDcxLDB4Q0QsMHgzRiwweEJELDB4QkQs
MHhCRiwKKyAgICAweDE0LDB4REUsMHhGMywweERELDB4MzQsMHhGMCwweEUyLDB4ODEsMHgxNCww
eERFLDB4RjMsMHhERCwweEFGLDB4RUYsMHhCNywweDAzLAorICAgIDB4MzQsMHhFNiwweEY0LDB4
REQsMHgwQiwweDgzLDB4QUIsMHhFQSwweDM0LDB4RTYsMHhGMywweERELDB4NzgsMHg3QSwweEZG
LDB4RkYsCisgICAgMHgxNCwweERFLDB4RjMsMHhERCwweENGLDB4NUYsMHhENywweEY1LDB4MTQs
MHhERSwweEQzLDB4RDUsMHg4RSwweEE3LDB4QUEsMHg4QSwKKyAgICAweDI1LDB4NUEsMHg2Myww
eDQxLDB4NzgsMHhFMiwweDgwLDB4OEEsMHhBNCwweDQ5LDB4MDIsMHgzOSwweDNGLDB4QUYsMHgy
QiwweDlFLAorICAgIDB4NjgsMHg2MiwweDYzLDB4NDEsMHhCRiwweDBGLDB4MkYsMHhGRCwweDg4
LDB4NjIsMHg0MywweDQxLDB4QkEsMHgwMCwweDg4LDB4N0YsCisgICAgMHgyNywweDVBLDB4NjQs
MHg0MSwweDU3LDB4RjgsMHhFOCwweDdGLDB4QzUsMHg1MSwweDYzLDB4NDEsMHhGRiwweDgzLDB4
QTgsMHg1RiwKKyAgICAweEM1LDB4NDksMHg2NCwweDQxLDB4NkEsMHgwQSwweDBBLDB4RDUsMHhD
NSwweDQ5LDB4NDMsMHgzOSwweDJBLDB4QTgsMHhFOCwweDU3LAorICAgIDB4QzUsMHg0OSwweDIz
LDB4MzksMHhBOCwweDIyLDB4QUIsMHhGNSwweEE1LDB4NDksMHgwMiwweDMxLDB4MkEsMHhBQSww
eEZCLDB4NTcsCisgICAgMHhDNSwweDQ5LDB4MDIsMHgzMSwweDdFLDB4RTMsMHhBOSwweDJELDB4
QTUsMHg0OSwweDIzLDB4MzksMHgyQiwweDM1LDB4RjUsMHhBQiwKKyAgICAweEE4LDB4NjIsMHg4
NCwweDQxLDB4QTksMHg1NSwweDU1LDB4MEQsMHhBOCwweDYyLDB4NDMsMHgzOSwweEZFLDB4NzUs
MHg1NywweEUwLAorICAgIDB4ODQsMHg0MSwweDAyLDB4MzEsMHg3OCwweDdELDB4NTcsMHg3MCww
eEE1LDB4NDEsMHhFMiwweDI4LDB4QUQsMHhGNSwweEJGLDB4MkYsCisgICAgMHhDNSwweDQ5LDB4
MjMsMHgzOSwweEUyLDB4RkQsMHhCRiwweEE4LDB4QTgsMHg2QSwweDQzLDB4MzksMHg3RiwweEQ1
LDB4QUIsMHg4MiwKKyAgICAweEU2LDB4NTEsMHgyMywweDMxLDB4NzYsMHhERiwweEJFLDB4Rjgs
MHhDNiwweDUxLDB4QzIsMHgzMCwweEQ3LDB4RDYsMHhGOCwweDY4LAorICAgIDB4ODQsMHg0OSww
eDIzLDB4MzksMHhERiwweEFGLDB4MDMsMHhBRCwweDg0LDB4NDEsMHg0MywweDQxLDB4RkIsMHhD
RSwweDA4LDB4MDIsCisgICAgMHg4NCwweDQ5LDB4MjMsMHgzOSwweEI1LDB4M0YsMHgyRiwweDhF
LDB4QTUsMHg0OSwweDAzLDB4MzksMHhENywweEJBLDB4QTgsMHhBRSwKKyAgICAweEE1LDB4NTEs
MHgyMywweDQxLDB4RDUsMHhGQiwweEZBLDB4OUYsMHg4NCwweDUxLDB4NDQsMHg0OSwweEFELDB4
OUUsMHgzQSwweDk1LAorICAgIDB4MDYsMHg2MiwweDQzLDB4NDksMHhBRiwweDI5LDB4M0YsMHhC
RiwweEU1LDB4NjksMHhDNSwweDYxLDB4RUYsMHg2QiwweDM5LDB4NzcsCisgICAgMHhFNSwweDYx
LDB4QTQsMHg1OSwweEU4LDB4NjAsMHhFMCwweEVDLDB4QzUsMHg1OSwweDY0LDB4NTEsMHhCQiww
eEIyLDB4RTIsMHg3QSwKKyAgICAweEE1LDB4NTEsMHg0NCwweDQ5LDB4MjIsMHhCRSwweDk3LDB4
N0YsMHhBNSwweDQ5LDB4MjQsMHg0MSwweEE4LDB4QkEsMHhGRSwweDU1LAorICAgIDB4ODUsMHg0
OSwweDI0LDB4NDEsMHgwMiwweDNFLDB4MkYsMHhGNywweEE1LDB4NDksMHg0NCwweDQxLDB4ODIs
MHhFQiwweEZGLDB4OTUsCisgICAgMHhBNSwweDQ5LDB4MjQsMHgzOSwweDIwLDB4RTIsMHhDRSww
eDdGLDB4QTUsMHg0OSwweDIzLDB4MzksMHgwMiwweEJBLDB4MkIsMHg1RiwKKyAgICAweDg1LDB4
NDEsMHgwMywweDM5LDB4MDAsMHhBOCwweEY4LDB4NzcsMHg4NSwweDQ5LDB4MDMsMHgzOSwweEEw
LDB4MkEsMHhBQSwweDU1LAorICAgIDB4QTUsMHg0OSwweDAzLDB4MzksMHhBMiwweEVGLDB4RUYs
MHg3NSwweDg0LDB4NDEsMHhDMiwweDMwLDB4MDAsMHhBMCwweEJBLDB4NTcsCisgICAgMHg4NCww
eDQ5LDB4RTIsMHgzMCwweDAwLDB4MkEsMHhBRiwweDU1LDB4QTUsMHg0OSwweEUyLDB4MzAsMHgw
QSwweEFBLDB4RkIsMHg1NSwKKyAgICAweEE0LDB4NDksMHhFMiwweDMwLDB4MEEsMHhBQSwweEY3
LDB4NTUsMHg2NCwweDQxLDB4QzIsMHgzMCwweEY4LDB4NkIsMHhFQiwweDBCLAorICAgIDB4ODQs
MHg0MSwweEUyLDB4MzAsMHgwMywweEFELDB4NTUsMHg1NSwweDYzLDB4NDEsMHhDMiwweDMwLDB4
MDAsMHhBOCwweEQ3LDB4RkQsCisgICAgMHg2NCwweDQxLDB4QzEsMHgzMCwweDAwLDB4QkYsMHhE
RiwweEZGLDB4QzUsMHg1MSwweDIyLDB4MzksMHg3RiwweEZELDB4QjUsMHgwNSwKKyAgICAweEE1
LDB4NDksMHgwMiwweDMxLDB4QkYsMHg1NSwweDU3LDB4NUMsMHg2NCwweDQxLDB4MDIsMHgzMSww
eDI4LDB4NUQsMHg1NSwweEZELAorICAgIDB4ODQsMHg0MSwweDAyLDB4MzEsMHg3RiwweDU1LDB4
NUQsMHg4RiwweDY0LDB4NDEsMHhDMiwweDI4LDB4QkEsMHhGNSwweEZGLDB4MjgsCisgICAgMHg2
NCwweDQxLDB4RTIsMHgzMCwweEZCLDB4NUYsMHg3RiwweDAyLDB4RTUsMHg1MSwweDAyLDB4MzEs
MHhENSwweEI1LDB4QjUsMHgwQSwKKyAgICAweDA2LDB4NUEsMHgwMiwweDMxLDB4NUYsMHg1RSww
eEYwLDB4ODAsMHhDNiwweDUxLDB4QzIsMHgzMCwweDc1LDB4RDUsMHhCQiwweDAwLAorICAgIDB4
RTcsMHg1OSwweDAzLDB4MzEsMHg1NSwweDU1LDB4RkYsMHg4MCwweEU2LDB4NTksMHhFMiwweDMw
LDB4NTUsMHg1NSwweEFGLDB4MDAsCisgICAgMHhFNiwweDU5LDB4MDMsMHgzMSwweDU1LDB4NTUs
MHgzQiwweDAwLDB4MjYsMHg1QSwweDIzLDB4MzksMHg1NSwweEY1LDB4QUEsMHgwOCwKKyAgICAw
eDY3LDB4NjIsMHhDNSwweDUxLDB4NDMsMHhFOSwweEZELDB4QkEsMHgwNiwweDVBLDB4MDMsMHgz
OSwweDU3LDB4RkEsMHg4OCwweDAwLAorICAgIDB4MDYsMHg1QSwweDI0LDB4NDEsMHg1NSwweEJB
LDB4MDgsMHgwMiwweDI2LDB4NjIsMHgyMywweDQxLDB4RkQsMHhBQSwweDAyLDB4OEEsCisgICAg
MHgyNywweDYyLDB4QzUsMHg1MSwweDQzLDB4NkEsMHhBOCwweEFBLDB4MjcsMHg2MiwweEE1LDB4
NTEsMHg1NSwweEEzLDB4MjgsMHhBOCwKKyAgICAweDI2LDB4NjIsMHhBNCwweDUxLDB4QkQsMHhB
OCwweDIyLDB4OEEsMHg0NywweDYyLDB4QzUsMHg1MSwweDdGLDB4QUUsMHgyQSwweERGLAorICAg
IDB4MjYsMHg2MiwweEE1LDB4NTEsMHgyMiwweDJBLDB4QTgsMHhCRCwweDI2LDB4NjIsMHhDNSww
eDUxLDB4REEsMHhBMiwweEFBLDB4NkYsCisgICAgMHgyNywweDYyLDB4QzUsMHg1MSwweDJGLDB4
QkUsMHgyQSwweEY2LDB4MjcsMHg2MiwweEE1LDB4NTEsMHhBOCwweDA4LDB4MEEsMHg5NywKKyAg
ICAweDI3LDB4NjIsMHhDNCwweDUxLDB4RUEsMHhBMiwweEZDLDB4RDcsMHg0NywweDYyLDB4QTQs
MHg1MSwweDhCLDB4OEEsMHhERiwweEJGLAorICAgIDB4QTgsMHg3MiwweEM2LDB4NTEsMHhFRiww
eEVGLDB4NTcsMHgzQiwweEE4LDB4NzIsMHg4NSwweDUxLDB4QUEsMHhGQiwweEQ3LDB4MDAsCisg
ICAgMHgyOSwweDgzLDB4RTUsMHg1OSwweDVELDB4NTUsMHg1NSwweDBCLDB4OEIsMHg4QiwweEE0
LDB4NTEsMHhGNywweDc1LDB4RkQsMHgwMCwKKyAgICAweDRELDB4QTQsMHgwNSwweDVBLDB4NTUs
MHg1NSwweDU1LDB4MDIsMHhDRiwweEI0LDB4RTUsMHg1OSwweDU1LDB4NTUsMHhERCwweDAwLAor
ICAgIDB4MzAsMHhCRCwweEU1LDB4NTksMHg1NSwweDU1LDB4RkYsMHgwMCwweDcxLDB4QzUsMHgw
NSwweDVBLDB4NTUsMHg1NSwweEVGLDB4MDAsCisgICAgMHhCMywweEQ1LDB4MDcsMHg2MiwweDU1
LDB4NTUsMHhBQiwweDAwLDB4MTQsMHhERSwweDQ3LDB4NjIsMHg1NSwweDU1LDB4QUEsMHgwMCwK
KyAgICAweDM0LDB4RTYsMHg4NywweDZBLDB4RDUsMHhCRCwweDIyLDB4MDAsMHg1NSwweEU2LDB4
NEQsMHhBQywweEJELDB4MkIsMHgwMCwweDAwLAorICAgIDB4RDcsMHhGNiwweDM1LDB4RTYsMHhB
RCwweEFELDB4QUIsMHgwQiwweEY4LDB4RkUsMHhCNywweEY2LDB4QkQsMHhFRiwweDZCLDB4N0Es
CisgICAgMHhENiwweEY2LDB4OTYsMHhFRSwweEVDLDB4RjcsMHhCRiwweDdCLDB4QjYsMHhGNiww
eDc2LDB4RUUsMHhGQSwweEJBLDB4N0EsMHg3RSwKKyAgICAweDk2LDB4RUUsMHg3NSwweEVFLDB4
NTgsMHhGRiwweEVELDB4N0YsMHg3NiwweEVFLDB4RjMsMHhERCwweEMyLDB4RTgsMHg3OCwweDdB
LAorICAgIDB4MzQsMHhFNiwweEQzLDB4RDUsMHgyRSwweEJELDB4QkQsMHhBNSwweDc1LDB4RUUs
MHgxNCwweERFLDB4QUYsMHhFRiwweEFELDB4MkIsCisgICAgMHg5NiwweEVFLDB4RjMsMHhERCww
eEY3LDB4OUYsMHhCRiwweDIyLDB4OTYsMHhFRSwweDM0LDB4RTYsMHg3RCwweEZCLDB4QTIsMHg4
MCwKKyAgICAweDc1LDB4RUUsMHgzNSwweEU2LDB4RTksMHgwQiwweDAyLDB4MEEsMHg5NiwweEVF
LDB4MTQsMHhERSwweDdGLDB4QTgsMHgwMCwweDBBLAorICAgIDB4OTYsMHhFRSwweDUxLDB4Q0Qs
MHg1NywweEEwLDB4MDAsMHgwMCwweDk2LDB4RUUsMHgxMCwweEM1LDB4QkQsMHg1NywweEUwLDB4
MDAsCisgICAgMHg5NiwweEVFLDB4NzEsMHhDNSwweDBBLDB4QkQsMHhENSwweDVFLDB4QjYsMHhF
RSwweDkyLDB4Q0QsMHgwMCwweDBBLDB4QUYsMHhGRCwKKyAgICAweEQ3LDB4RjYsMHg1NSwweEU2
LDB4QUEsMHhBMiwweDBCLDB4RjUsMHhENywweEY2LDB4OTYsMHhFRSwweDRCLDB4MkIsMHgyQiww
eDJCLAorICAgIDB4RDcsMHhGNiwweDk2LDB4RUUsMHg1NSwweEJGLDB4MjAsMHgwMCwweEQ3LDB4
RjYsMHhEMywweEQ1LDB4RkEsMHg3OCwweDYwLDB4QTAsCisgICAgMHhCNiwweEVFLDB4NzIsMHhD
RCwweDAyLDB4MEIsMHhBNSwweEQ1LDB4MTgsMHhGNywweDU1LDB4RTYsMHgwMiwweDBBLDB4QkIs
MHhCNSwKKyAgICAweDE4LDB4RkYsMHhEOCwweEY2LDB4RkUsMHhFRSwweEEyLDB4MEIsMHgxOCww
eEZGLDB4RDcsMHhGNiwweEZELDB4RUYsMHhCQSwweEFBLAorICAgIDB4MTgsMHhGNywweEY3LDB4
RjYsMHhGOSwweDc3LDB4RkQsMHhGNywweDE4LDB4RjcsMHhENywweEVFLDB4RkEsMHhCQSwweEFG
LDB4QkEsCisgICAgMHhGNywweEY2LDB4QjYsMHhFRSwweEYyLDB4RkEsMHhGQywweEUwLDB4Qjcs
MHhGNiwweEY3LDB4RUUsMHhBRiwweEVCLDB4QUEsMHhBQiwKKyAgICAweEY3LDB4RjYsMHg5Niww
eEVFLDB4RkYsMHhGRSwweEZBLDB4NkEsMHhENywweEY2LDB4OTYsMHhFRSwweEUwLDB4OEIsMHhF
QiwweEVGLAorICAgIDB4QjYsMHhFRSwweDE0LDB4REUsMHgyRiwweDM2LDB4REUsMHg3RSwweEQ3
LDB4RjYsMHg1NSwweEU2LDB4NzgsMHhFQSwweEVBLDB4RUIsCisgICAgMHg5NiwweEVFLDB4MzQs
MHhFNiwweDJELDB4OEYsMHhCRSwweEI3LDB4OTYsMHhFRSwweDE0LDB4REUsMHg2MCwweDQwLDB4
NjIsMHhFOCwKKyAgICAweEYzLDB4REQsMHg3MiwweENELDB4REUsMHg3RSwweDVDLDB4NUMsMHhC
MiwweEQ1LDB4NzIsMHhDRCwweDNFLDB4QkYsMHhGNywweEY1LAorICAgIDB4MTQsMHhERSwweEQz
LDB4RDUsMHg4QiwweDBELDB4QTksMHgyOSwweDM0LDB4RTYsMHhGNCwweERELDB4QTcsMHhCRiww
eEVBLDB4QUIsCisgICAgMHgzNCwweEU2LDB4MTQsMHhERSwweDcwLDB4ODAsMHgyRSwweDJGLDB4
MzQsMHhFNiwweEY0LDB4REQsMHhERSwweEZBLDB4RjgsMHhGRiwKKyAgICAweDE0LDB4REUsMHhE
MywweEQ1LDB4RkUsMHhCQSwweDZFLDB4RjIsMHgzNCwweEU2LDB4RjQsMHhERCwweEY1LDB4QkQs
MHgyRCwweDNGLAorICAgIDB4NDYsMHg2MiwweEM1LDB4NTEsMHg3RiwweEY2LDB4RDYsMHhGQyww
eDA1LDB4NTIsMHgyMywweDM5LDB4REUsMHg3QSwweDYwLDB4NjAsCisgICAgMHhDNSwweDQ5LDB4
MjIsMHgzOSwweEVGLDB4RUQsMHhFOSwweDM1LDB4MjcsMHg2MiwweDQzLDB4NDEsMHg1NSwweEJE
LDB4MDMsMHgwQiwKKyAgICAweDg4LDB4NkEsMHg2MywweDQxLDB4NTUsMHhGRiwweDgwLDB4RUEs
MHhDNSwweDQ5LDB4NDMsMHg0MSwweDU1LDB4QUEsMHhBOCwweEU4LAorICAgIDB4QzQsMHg0OSww
eDQyLDB4MzksMHhGRCwweDJBLDB4QUEsMHhGQiwweEE0LDB4NDksMHg0MywweDM5LDB4REEsMHgy
OCwweEFBLDB4RUYsCisgICAgMHhBNCwweDQ5LDB4NjQsMHg0MSwweEFFLDB4MjgsMHhGQywweDU5
LDB4QTUsMHg0OSwweDQzLDB4MzksMHg2QiwweEYwLDB4RkEsMHg3QiwKKyAgICAweDg0LDB4NDEs
MHgyMywweDM5LDB4QkQsMHhGQSwweENBLDB4QUEsMHhBNSwweDQ5LDB4MDIsMHgzMSwweDIyLDB4
MDMsMHgyRCwweEU1LAorICAgIDB4Q0EsMHg4QiwweEE0LDB4NDksMHgwRCwweEI1LDB4NTUsMHg1
NSwweEVDLDB4OEIsMHg2MywweDQxLDB4RTAsMHhFQSwweDU3LDB4NTUsCisgICAgMHhBNSwweDQ5
LDB4MDMsMHgzMSwweDYwLDB4RTAsMHhDOCwweEVFLDB4NDQsMHgzMSwweEExLDB4MjgsMHgyQiww
eEZFLDB4REUsMHg1RiwKKyAgICAweDg0LDB4NDEsMHhDMSwweDI4LDB4MjgsMHhBQSwweEFCLDB4
QUQsMHgyNiwweDVBLDB4MDIsMHgzMSwweDAyLDB4RkYsMHhGRiwweDc1LAorICAgIDB4QzUsMHg0
OSwweDAyLDB4MzksMHhCOCwweEZFLDB4RkIsMHg1NSwweEU2LDB4NTEsMHgwMywweDM5LDB4NzIs
MHhFMywweEVGLDB4NTUsCisgICAgMHg0NCwweDQxLDB4QzEsMHgzMCwweDBCLDB4OEYsMHhGOCww
eDU4LDB4QTQsMHg0OSwweEUxLDB4MzAsMHhBMiwweEJBLDB4RkYsMHg1NSwKKyAgICAweDg0LDB4
NDksMHhFMiwweDMwLDB4MjgsMHhGOCwweEZGLDB4NTUsMHg2NCwweDQxLDB4QzEsMHgzMCwweDAw
LDB4ODIsMHhGQiwweDU1LAorICAgIDB4NjQsMHg0OSwweEMxLDB4MzAsMHgwMCwweDAwLDB4RkYs
MHg1NSwweDg0LDB4NTEsMHgwMiwweDM5LDB4M0EsMHgwRSwweDJELDB4MDUsCisgICAgMHgyNiww
eDZBLDB4ODQsMHg1OSwweEZELDB4QkYsMHgyQiwweEFCLDB4NDcsMHg3MiwweEM1LDB4NjEsMHhG
NSwweEJGLDB4RjgsMHhFQSwKKyAgICAweDI2LDB4NzIsMHhFNSwweDYxLDB4NzMsMHg1QywweEJF
LDB4RUEsMHgwNSwweDZBLDB4NjQsMHg1MSwweDdFLDB4N0UsMHg1OCwweDYwLAorICAgIDB4ODUs
MHg1OSwweDA0LDB4NDEsMHhGQSwweDdFLDB4NTgsMHg3QSwweDA0LDB4NDEsMHhBMiwweDMwLDB4
MDAsMHhGQSwweDVFLDB4ODAsCisgICAgMHgyNCwweDQxLDB4QTIsMHgzMCwweDNFLDB4N0YsMHg3
RiwweDBCLDB4MjQsMHg0MSwweEEyLDB4MjgsMHhBQywweDdGLDB4N0YsMHgwMiwKKyAgICAweDQ0
LDB4NDEsMHhBMiwweDI4LDB4RUIsMHg1RCwweEZCLDB4MjAsMHg4NSwweDQ5LDB4QzIsMHgzMCww
eDU1LDB4NTUsMHhERCwweDIwLAorICAgIDB4ODUsMHg0OSwweEMzLDB4MzAsMHg3NSwweDU1LDB4
RkYsMHgwMCwweEE1LDB4NTEsMHhFMiwweDMwLDB4NTUsMHg1NSwweEY3LDB4MDAsCisgICAgMHgy
NywweDVBLDB4RTMsMHgzOCwweDU1LDB4RDUsMHhGNywweEE4LDB4MDcsMHg1QSwweEEyLDB4Mjgs
MHg1NSwweDVGLDB4QUUsMHgwMiwKKyAgICAweDA3LDB4NUEsMHhDMiwweDMwLDB4NTUsMHg3Riww
eEFCLDB4MjAsMHgwNiwweDVBLDB4QzIsMHgzMCwweDU1LDB4RkQsMHhCQSwweDAwLAorICAgIDB4
MjcsMHg1QSwweEUyLDB4MzAsMHg1NSwweEZGLDB4QUEsMHgwMiwweDA2LDB4NUEsMHgwMywweDM5
LDB4QUQsMHhBRiwweDIwLDB4MDAsCisgICAgMHg2NywweDYyLDB4MjMsMHgzOSwweDU3LDB4RkYs
MHhBQSwweEEyLDB4MjcsMHg1QSwweDIzLDB4MzksMHg1NSwweEFCLDB4MDgsMHg4MCwKKyAgICAw
eDA2LDB4NUEsMHg0MywweDQxLDB4RDUsMHgyQiwweDAwLDB4MDAsMHg0NiwweDYyLDB4QTQsMHg0
OSwweEQ1LDB4QUYsMHhBQSwweEVBLAorICAgIDB4MjcsMHg2MiwweDg0LDB4NDksMHhENywweDJB
LDB4MDAsMHhBMiwweDI3LDB4NUEsMHg4NCwweDQ5LDB4RjUsMHg4QSwweEEwLDB4RUEsCisgICAg
MHgwNiwweDVBLDB4QTUsMHg0OSwweEY1LDB4OEEsMHgwMCwweEEyLDB4NDYsMHg1QSwweEE1LDB4
NTEsMHhENywweDJBLDB4QTAsMHhCQiwKKyAgICAweDI2LDB4NUEsMHhBNCwweDUxLDB4QUIsMHg4
MCwweDIwLDB4RDcsMHgyNiwweDVBLDB4ODQsMHg0OSwweDIyLDB4QTgsMHhBOCwweEY3LAorICAg
IDB4MjcsMHg2MiwweDg0LDB4NDksMHhBOCwweDgyLDB4QUEsMHhCNSwweDA3LDB4NUEsMHhBNSww
eDUxLDB4QzIsMHgyRiwweEU5LDB4REUsCisgICAgMHgyOCwweDYyLDB4ODUsMHg1MSwweEEwLDB4
OEEsMHhGNSwweEFFLDB4NDgsMHg2QSwweDY1LDB4NDksMHhBQSwweEVBLDB4NUYsMHgyQiwKKyAg
ICAweDY4LDB4NzIsMHg4NSwweDQ5LDB4RkIsMHhGRiwweDdGLDB4OEEsMHg0NywweDYyLDB4QTUs
MHg1MSwweEJFLDB4QkYsMHhGNSwweDAyLAorICAgIDB4ODgsMHg3MiwweDA2LDB4NUEsMHg3Riww
eDdGLDB4RjUsMHgzQiwweDZCLDB4OEIsMHg4NCwweDQ5LDB4NUYsMHg1RCwweEZGLDB4MDIsCisg
ICAgMHg0RSwweEFDLDB4QzUsMHg1MSwweDU1LDB4NTUsMHhENSwweDAwLDB4QjAsMHhCNCwweEM1
LDB4NTEsMHg1NSwweDU1LDB4RkYsMHgwMCwKKyAgICAweDUyLDB4QzUsMHhDNiwweDU5LDB4NTUs
MHg1NSwweEZGLDB4MDAsMHg5MywweENELDB4QzUsMHg1OSwweDU1LDB4NTUsMHhBRiwweDAwLAor
ICAgIDB4QjMsMHhENSwweEU2LDB4NTksMHg1NSwweDU1LDB4QUEsMHgwMCwweEY1LDB4REQsMHg4
NSwweDUxLDB4NTUsMHhGRiwweEFBLDB4MDAsCisgICAgMHg1NiwweEU2LDB4QTUsMHg1MSwweDU1
LDB4RkYsMHhBQSwweDAwLDB4OTcsMHhFRSwweDI2LDB4NjIsMHg1NSwweEZGLDB4QUEsMHgwMCwK
KyAgICAweDE1LDB4REUsMHgyNywweDYyLDB4NTUsMHhBQiwweDIwLDB4MDAsMHgzNiwweEU2LDB4
ODgsMHg2QSwweDU1LDB4QUEsMHgwMCwweDAwLAorICAgIDB4NzUsMHhFNiwweDI5LDB4ODMsMHg1
NSwweEFBLDB4MDgsMHgwMCwweDk2LDB4RUUsMHhDQiwweDkzLDB4NTUsMHhBQSwweDAwLDB4MDAs
CisgICAgMHg5NiwweEVFLDB4MEQsMHg5QywweEQ1LDB4QUEsMHgwMCwweDAwLDB4OTcsMHhFRSww
eDkwLDB4QUMsMHhGNSwweEEyLDB4MDAsMHgwMCwKKyAgICAweDk2LDB4RUUsMHgxMSwweEJELDB4
RjUsMHhBQSwweDAwLDB4MDAsMHhCNiwweEVFLDB4NzIsMHhDRCwweEQ1LDB4QUEsMHgwMCwweDAw
LAorICAgIDB4OTYsMHhFRSwweEQzLDB4RDUsMHhENSwweEFBLDB4MDAsMHgwMCwweEI2LDB4RUUs
MHhEMywweEQ1LDB4RkQsMHhBQSwweDAwLDB4MDAsCisgICAgMHhGNiwweEY2LDB4MzQsMHhERSww
eDU1LDB4RkYsMHhFQiwweEFBLDB4QjYsMHhFRSwweDM0LDB4REUsMHhGNywweEFBLDB4ODIsMHgw
MCwKKyAgICAweEI2LDB4RUUsMHg1NSwweEU2LDB4REQsMHhBQSwweDIyLDB4MDAsMHhCNiwweEVF
LDB4NTUsMHhFNiwweEVELDB4QUEsMHgwMiwweDAwLAorICAgIDB4RDYsMHhGNiwweDc1LDB4RTYs
MHhERCwweEVCLDB4QUEsMHgyQSwweEY4LDB4RjYsMHg5NiwweEVFLDB4NTUsMHhENywweEFGLDB4
QUIsCisgICAgMHhGNywweEZFLDB4OTYsMHhFRSwweEJELDB4QUIsMHhBQSwweEI4LDB4RDYsMHhG
NiwweDk2LDB4RUUsMHhGOCwweEZFLDB4RkUsMHhGQSwKKyAgICAweEI2LDB4RjYsMHg5NiwweEVF
LDB4RTgsMHhCQSwweEQyLDB4RjMsMHg5NiwweEVFLDB4NTUsMHhFRSwweEUwLDB4RTAsMHg4MCww
eDgyLAorICAgIDB4NzUsMHhFRSwweDM0LDB4RTYsMHg4OCwweEVBLDB4QTgsMHg3OCwweDU1LDB4
RTYsMHhGMywweERELDB4N0EsMHg3OCwweDdFLDB4N0UsCisgICAgMHg1NSwweEU2LDB4OTIsMHhE
NSwweEI3LDB4OTcsMHhBQSwweDAwLDB4RDcsMHhGNiwweDE0LDB4REUsMHhCRCwweEFELDB4QUYs
MHgyQiwKKyAgICAweEY3LDB4RjYsMHg5NiwweEVFLDB4RkQsMHhBRiwweDBBLDB4OEEsMHhGNyww
eEY2LDB4OTYsMHhGNiwweDZCLDB4OEEsMHg4MCwweEEyLAorICAgIDB4RDcsMHhGNiwweDc1LDB4
RTYsMHg1NywweERBLDB4RTgsMHgyOCwweDk2LDB4RUUsMHg1NSwweEU2LDB4QUYsMHhGQSwweEZB
LDB4QzgsCisgICAgMHhCNiwweEVFLDB4NzUsMHhFNiwweEJGLDB4RDUsMHg5NSwweDdGLDB4QjYs
MHhFRSwweDU1LDB4RTYsMHg4OCwweEFBLDB4QkIsMHhGRiwKKyAgICAweDk2LDB4RUUsMHhGMyww
eEQ1LDB4NzAsMHgwMCwweDAwLDB4MDAsMHg5NiwweEVFLDB4QjMsMHhENSwweEQ1LDB4REUsMHhF
MCwweDAwLAorICAgIDB4NTUsMHhFNiwweEY0LDB4RDUsMHgyQSwweDI5LDB4QUQsMHg5OCwweEI3
LDB4RUUsMHgzNSwweEU2LDB4MDIsMHhBRiwweEI5LDB4RkQsCisgICAgMHhGOCwweEY2LDB4NzUs
MHhFNiwweDJBLDB4MkYsMHhBNSwweDc1LDB4RjcsMHhGNiwweEI3LDB4RjYsMHhGQSwweEEwLDB4
OEEsMHgyRCwKKyAgICAweEY3LDB4RjYsMHhEMywweEQ1LDB4NUUsMHhFQSwweDIwLDB4MDAsMHhG
OCwweEY2LDB4QjMsMHhENSwweEJELDB4RkYsMHhFOCwweDAwLAorICAgIDB4RDcsMHhGNiwweDM0
LDB4REUsMHgwQSwweDBCLDB4QjUsMHhCQSwweDE4LDB4RkYsMHg5NiwweEU2LDB4QTAsMHg4Miww
eDJGLDB4QUQsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweDk1LDB4REUsMHhERiwweEJBLDB4
MTgsMHhGNywweEY3LDB4RjYsMHg3QSwweEZGLDB4NUYsMHg1RCwKKyAgICAweDE4LDB4RkYsMHhE
NywweEY2LDB4NkYsMHhGQSwweEEyLDB4RTIsMHhGNywweEY2LDB4QjYsMHhFRSwweEVBLDB4QkIs
MHhGQywweEYwLAorICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHhEQSwweEZFLDB4RkMsMHg1NCww
eEI2LDB4RUUsMHg5NiwweEVFLDB4QjIsMHhCMiwweDUwLDB4RDAsCisgICAgMHhCNiwweEVFLDB4
MTMsMHhERSwweDU4LDB4RjgsMHhFMCwweEY4LDB4OTYsMHhFRSwweDM0LDB4RTYsMHg4MywweDBC
LDB4ODksMHhBNSwKKyAgICAweDc1LDB4RUUsMHgxNCwweERFLDB4MzYsMHhCRSwweERDLDB4RkMs
MHg3NSwweEVFLDB4NTUsMHhFNiwweDc4LDB4N0IsMHhFRCwweEZELAorICAgIDB4MzQsMHhFNiww
eDkyLDB4Q0QsMHg1RSwweDVFLDB4NUMsMHg1OCwweDkyLDB4Q0QsMHgzMSwweENELDB4MkEsMHgz
QSwweEE4LDB4MDgsCisgICAgMHgzNCwweEU2LDB4OTIsMHhDRCwweEFCLDB4QUIsMHgyOSwweDJC
LDB4NTUsMHhFNiwweEYzLDB4REQsMHhCRCwweEY3LDB4RjUsMHhBQiwKKyAgICAweDM0LDB4RTYs
MHhGNCwweERELDB4OEEsMHhFQywweENBLDB4RTIsMHgzNSwweEU2LDB4RjQsMHhERCwweEI3LDB4
RkYsMHhBRiwweEVGLAorICAgIDB4MTQsMHhERSwweEYzLDB4REQsMHhGQSwweDI4LDB4QjAsMHg3
RSwweDM0LDB4RTYsMHhGNCwweERELDB4RjcsMHhERiwweDc3LDB4RUUsCisgICAgMHg4OCwweDZB
LDB4QTUsMHg1MSwweDU4LDB4NzgsMHhFMCwweEYwLDB4RTYsMHg1OSwweDg0LDB4NDEsMHg3QSww
eEYyLDB4QUUsMHhGMCwKKyAgICAweDg0LDB4NDksMHhFMSwweDMwLDB4MkYsMHhGRSwweDVDLDB4
NTgsMHhDNSwweDUxLDB4QzEsMHgzMCwweDBCLDB4QUIsMHhCRiwweEQ1LAorICAgIDB4RTUsMHg1
MSwweDAyLDB4MzEsMHhBMCwweDhCLDB4RUEsMHg1NywweEM0LDB4NDksMHhFMSwweDI4LDB4QTIs
MHg4OCwweEE4LDB4NUQsCisgICAgMHhBNSwweDQ5LDB4QzIsMHgzMCwweDhBLDB4MDgsMHhFQSww
eERGLDB4QzUsMHg0OSwweEExLDB4MjgsMHhBQSwweDAyLDB4RUEsMHg3RiwKKyAgICAweDY0LDB4
NDEsMHhDMSwweDI4LDB4MDAsMHgwMCwweEJGLDB4RTksMHg2NCwweDQxLDB4RTIsMHgzMCwweDAw
LDB4MjgsMHg1RiwweEZGLAorICAgIDB4QTUsMHg0OSwweDAyLDB4MzEsMHhFOCwweEI3LDB4QjUs
MHgwRCwweDY0LDB4NDEsMHhDMSwweDI4LDB4QjYsMHg1QywweEI4LDB4ODAsCisgICAgMHg0Myww
eDM5LDB4QzEsMHgyOCwweDJBLDB4REYsMHhGRiwweEVBLDB4NDQsMHgzOSwweEMyLDB4MjgsMHgy
OCwweEQ3LDB4N0YsMHhFRiwKKyAgICAweDY0LDB4NDEsMHhBMSwweDI4LDB4RkIsMHhGRCwweEZE
LDB4ODIsMHg2NCwweDQxLDB4QzIsMHgyOCwweDU3LDB4NUQsMHhGRiwweDJCLAorICAgIDB4NjQs
MHg0MSwweEMxLDB4MjgsMHg3NSwweEQ1LDB4RUYsMHgwMiwweDg1LDB4NDksMHhDMSwweDI4LDB4
NTUsMHhENSwweEZGLDB4ODIsCisgICAgMHhBNiwweDQ5LDB4RTIsMHgzMCwweDVELDB4NTUsMHg1
RCwweDhBLDB4QzUsMHg1MSwweEUyLDB4MzAsMHhGNSwweDk1LDB4OTUsMHgwMiwKKyAgICAweEU2
LDB4NTEsMHhFMiwweDMwLDB4NUUsMHhGQSwweEVBLDB4MDAsMHgwNiwweDUyLDB4QzEsMHgzMCww
eDU1LDB4RDUsMHhFQiwweDA4LAorICAgIDB4MDYsMHg1QSwweEMxLDB4MzAsMHg1NSwweDc3LDB4
QUEsMHgwQSwweDA2LDB4NUEsMHhDMSwweDMwLDB4NTUsMHhGRCwweEFBLDB4MDIsCisgICAgMHgw
NiwweDYyLDB4QzEsMHgzMCwweDU1LDB4RkYsMHhBQSwweDAwLDB4MDYsMHg2MiwweDAyLDB4NDEs
MHhCNSwweEVGLDB4MkEsMHhBMCwKKyAgICAweDI3LDB4NzIsMHhBNCwweDU5LDB4M0QsMHgyRiww
eDA3LDB4QUYsMHgyNiwweDcyLDB4RTUsMHg2OSwweDgyLDB4MDIsMHhFOCwweEZFLAorICAgIDB4
MjYsMHg3MiwweEU1LDB4NjksMHhGQSwweDIyLDB4QUYsMHhERCwweDQ2LDB4NzIsMHhFNiwweDY5
LDB4NUEsMHhEQywweEE3LDB4RkQsCisgICAgMHgyNiwweDZBLDB4ODUsMHg1OSwweDU2LDB4Rjgs
MHhBOCwweEEyLDB4MDYsMHg2MiwweDY0LDB4NDksMHg3RSwweEFBLDB4MEEsMHg4QywKKyAgICAw
eDA2LDB4NjIsMHg2NCwweDQ5LDB4NzUsMHhBOCwweEIwLDB4QkEsMHgwNiwweDVBLDB4ODQsMHg0
OSwweEY1LDB4MkEsMHhBQSwweEFBLAorICAgIDB4MjcsMHg1QSwweEE1LDB4NTEsMHhERiwweDMy
LDB4QUIsMHg1NywweDA3LDB4NUEsMHg4NCwweDQ5LDB4QUUsMHhBMiwweDgyLDB4N0IsCisgICAg
MHhFNiwweDU5LDB4ODQsMHg0OSwweDJBLDB4MDIsMHhBMCwweDc3LDB4MDcsMHg1QSwweDg0LDB4
NDksMHhBOCwweDBBLDB4QUIsMHhERiwKKyAgICAweDI3LDB4NjIsMHg4NCwweDQ5LDB4OEEsMHhB
QiwweEZGLDB4RjUsMHgyNywweDYyLDB4QTQsMHg1MSwweDJBLDB4RUIsMHg3RSwweDU3LAorICAg
IDB4NDYsMHg2MiwweDg0LDB4NDksMHhCQSwweEFCLDB4N0QsMHgzRCwweDQ3LDB4NjIsMHg0NCww
eDQ5LDB4QUEsMHhFQSwweEZGLDB4MDgsCisgICAgMHhDOCwweDcyLDB4ODMsMHg0OSwweEZGLDB4
RkYsMHhGNSwweDJBLDB4MkEsMHg3QiwweDg0LDB4NTEsMHhGRiwweDU3LDB4NUQsMHgwMiwKKyAg
ICAweEFDLDB4OTMsMHhBNSwweDUxLDB4RDcsMHg1NSwweEQ1LDB4MjIsMHgwRCwweEE0LDB4QzUs
MHg1MSwweDU1LDB4NTUsMHg3NywweDAyLAorICAgIDB4NkYsMHhBQywweDQzLDB4NDEsMHhGNyww
eDU1LDB4QkYsMHgwMCwweEQxLDB4QkMsMHhDNSwweDUxLDB4NTUsMHg1NSwweEZGLDB4MDAsCisg
ICAgMHg3MiwweENELDB4RTYsMHg1OSwweDU1LDB4NTUsMHhGRiwweDAwLDB4OTMsMHhDRCwweEU1
LDB4NTksMHg1NSwweDU1LDB4QkIsMHgwMCwKKyAgICAweEIzLDB4RDUsMHg2MywweDQ5LDB4NTUs
MHhGRiwweEFBLDB4MDAsMHhGNCwweERELDB4QTQsMHg1MSwweDU1LDB4RkQsMHhBQSwweDAwLAor
ICAgIDB4NTYsMHhFRSwweEE0LDB4NTEsMHg1NSwweEZGLDB4MkEsMHgwMCwweDc2LDB4RUUsMHgw
NiwweDYyLDB4NTUsMHhGRiwweDJBLDB4MDAsCisgICAgMHhGNCwweERELDB4RTUsMHg1OSwweDU1
LDB4QUEsMHgyMCwweDAwLDB4MTUsMHhFNiwweEE4LDB4NzIsMHg1NSwweEFBLDB4MDAsMHgwMCwK
KyAgICAweDU1LDB4RTYsMHgyQiwweDgzLDB4NTUsMHhBQSwweDA4LDB4MDAsMHg1NSwweEU2LDB4
OEMsMHg5MywweEQ1LDB4QUEsMHgwMCwweDAwLAorICAgIDB4MzUsMHhFNiwweDJELDB4QTQsMHg1
NSwweEFBLDB4QTAsMHg4MCwweDUyLDB4Q0QsMHhDQywweDlCLDB4NTUsMHhFOCwweEUwLDB4Nzgs
CisgICAgMHhBQywweDkzLDB4NDYsMHg2QSwweEVBLDB4NjAsMHg1OCwweDU2LDB4QUYsMHhCNCww
eDA2LDB4NjIsMHgyQiwweDJGLDB4MjUsMHhCNSwKKyAgICAweDc2LDB4RUUsMHgxMCwweEJELDB4
QUYsMHgyQiwweDA5LDB4MDksMHhCNywweEY2LDB4RjQsMHhERCwweDU1LDB4QUEsMHgyMiwweDAy
LAorICAgIDB4QjcsMHhGNiwweDE1LDB4REUsMHhGNSwweEVBLDB4MDIsMHgwMCwweEQ3LDB4RjYs
MHgzNSwweEU2LDB4RjUsMHhBQiwweDJBLDB4MkEsCisgICAgMHhENywweEY2LDB4NTUsMHhFNiww
eDU3LDB4QUUsMHhBMiwweDJBLDB4RDcsMHhGNiwweDc2LDB4RUUsMHg3NSwweEJFLDB4MkEsMHg4
MiwKKyAgICAweEQ3LDB4RjYsMHg3NiwweEVFLDB4RkQsMHhBQSwweDI4LDB4MDgsMHhENywweEY2
LDB4OTYsMHhFRSwweDc1LDB4REUsMHhBQSwweEE4LAorICAgIDB4RDcsMHhGNiwweDc2LDB4RUUs
MHhGRCwweEJGLDB4QUEsMHgyOCwweEQ2LDB4RjYsMHhCNywweEVFLDB4NzUsMHhGRCwweDZBLDB4
RkEsCisgICAgMHhENywweEY2LDB4OTYsMHhFRSwweEJGLDB4RUYsMHhBQSwweEFBLDB4OTYsMHhG
NiwweEQ3LDB4RUUsMHhBRSwweEJGLDB4RjcsMHhGRiwKKyAgICAweEQ3LDB4RjYsMHg5NiwweEVF
LDB4RDcsMHhGRiwweEFBLDB4MkEsMHhENiwweEY2LDB4QjcsMHhFRSwweDc3LDB4RkYsMHhGQSww
eDZCLAorICAgIDB4QjcsMHhGNiwweEI2LDB4RUUsMHhGRiwweEZCLDB4RUYsMHhGRiwweEQ3LDB4
RjYsMHhCNiwweEVFLDB4RkQsMHg2RiwweEVCLDB4RUEsCisgICAgMHhENiwweEY2LDB4QjYsMHhF
RSwweEE5LDB4QjksMHhCRiwweEZELDB4RDcsMHhGNiwweEI2LDB4RUUsMHhGRiwweEVBLDB4Njgs
MHhGQSwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4NTUsMHhCRiwweDc3LDB4RkYsMHhCNiww
eEY2LDB4RDcsMHhFRSwweDhBLDB4QzgsMHg4MiwweDIyLAorICAgIDB4RDcsMHhGNiwweEI2LDB4
RUUsMHg3QiwweDdCLDB4RkIsMHhCQiwweEQ3LDB4RjYsMHg5NiwweEVFLDB4QkEsMHhCQSwweEJF
LDB4RkUsCisgICAgMHhENywweEY2LDB4QjcsMHhFRSwweDJCLDB4MzIsMHgyOCwweDJBLDB4Rjcs
MHhGNiwweEI2LDB4RjYsMHg4RSwweDgzLDB4QTAsMHg3MiwKKyAgICAweEQ2LDB4RjYsMHg5Niww
eEVFLDB4QTgsMHhCOCwweEZGLDB4RDcsMHhCNiwweEY2LDB4OTYsMHhFRSwweEEyLDB4NjAsMHg3
QSwweEI3LAorICAgIDB4OTYsMHhFRSwweDc1LDB4RUUsMHgwMCwweEJCLDB4NUYsMHg1QywweEI3
LDB4RjYsMHgzNSwweEU2LDB4QTIsMHhFQSwweEVFLDB4NUYsCisgICAgMHg1NSwweEU2LDB4MTQs
MHhERSwweEE4LDB4QkEsMHhBNywweEFGLDB4OTYsMHhFRSwweEYzLDB4REQsMHhENywweEJGLDB4
QkYsMHgyRiwKKyAgICAweEQ3LDB4RjYsMHgzNCwweEU2LDB4RjcsMHhGRiwweDBBLDB4MjIsMHhG
NywweEY2LDB4OTYsMHhFRSwweEJELDB4MEIsMHhBMiwweDhBLAorICAgIDB4RjcsMHhGNiwweEQ3
LDB4RjYsMHhBNywweEE3LDB4QTIsMHhFQiwweEY3LDB4RjYsMHhENywweEY2LDB4RUEsMHg2QSww
eEZCLDB4RUQsCisgICAgMHhGNywweEY2LDB4QjYsMHhFRSwweEZBLDB4RkEsMHhFQSwweEEyLDB4
RDcsMHhGNiwweDk2LDB4RUUsMHg1RSwweEVFLDB4Q0EsMHg4MCwKKyAgICAweEI2LDB4RUUsMHg3
NiwweEVFLDB4N0IsMHhBQiwweEFBLDB4MDAsMHhCNiwweEVFLDB4NzYsMHhFNiwweEQ1LDB4RkUs
MHhGQSwweEZDLAorICAgIDB4OTYsMHhFRSwweDc2LDB4RTYsMHhFRiwweERFLDB4NkYsMHhCQSww
eEI2LDB4RUUsMHg1NiwweEU2LDB4MkEsMHgyQSwweDJCLDB4MEEsCisgICAgMHhGNywweEY2LDB4
NTUsMHhFNiwweDVFLDB4N0EsMHhFQSwweEFBLDB4RDcsMHhGNiwweDM0LDB4REUsMHhCNSwweEZG
LDB4QUEsMHg4MCwKKyAgICAweEI2LDB4RUUsMHg3NSwweEU2LDB4NUQsMHhBRiwweEFCLDB4QTAs
MHhGNywweEY2LDB4OTYsMHhFRSwweDJELDB4QkQsMHhFNSwweEJGLAorICAgIDB4MTgsMHhGRiww
eEQ3LDB4RjYsMHhBQSwweEJCLDB4QkQsMHhCNSwweDE4LDB4RjcsMHhENywweEY2LDB4RkQsMHhC
QSwweEVBLDB4QTgsCisgICAgMHhGOCwweEY2LDB4RDcsMHhGNiwweDU2LDB4RjgsMHgwOCwweEFD
LDB4RjgsMHhGNiwweEI3LDB4RUUsMHg1NSwweDdBLDB4QzAsMHgwMCwKKyAgICAweDE4LDB4RkYs
MHg5NiwweEU2LDB4ODIsMHgwRCwweEI3LDB4RkUsMHgxOCwweEZGLDB4RDcsMHhFRSwweEFFLDB4
QUUsMHhBRSwweEFELAorICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHhGNywweEQ3LDB4QUYsMHhC
RCwweDE4LDB4RkYsMHhENywweEY2LDB4NUEsMHg3RSwweDdFLDB4N0EsCisgICAgMHhENywweEY2
LDB4OTYsMHhFRSwweEZFLDB4NzIsMHhFRiwweEVCLDB4QjYsMHhFRSwweDc1LDB4RTYsMHhBQSww
eEJBLDB4N0UsMHg3RSwKKyAgICAweDk2LDB4RUUsMHgxNCwweERFLDB4RTAsMHhFMCwweEU4LDB4
N0IsMHg5NiwweEVFLDB4RjMsMHhERCwweDJELDB4QkQsMHhCNSwweEQ1LAorICAgIDB4NzUsMHhF
RSwweEYzLDB4REQsMHhGQywweDc4LDB4RjAsMHhGOCwweDU1LDB4RTYsMHgxNCwweEU2LDB4OEEs
MHhBMywweEE5LDB4RkQsCisgICAgMHgzNCwweEU2LDB4OTIsMHhDRCwweDc4LDB4NzgsMHg3MCww
eDY4LDB4OTIsMHhDRCwweDUxLDB4QzUsMHgzRSwweEI1LDB4RDUsMHg5RSwKKyAgICAweDE0LDB4
RTYsMHg5MiwweENELDB4MEIsMHgwQiwweDI5LDB4MEYsMHg1NCwweEU2LDB4MTQsMHhERSwweEVC
LDB4REYsMHg1NywweEQ3LAorICAgIDB4MzQsMHhFNiwweEY0LDB4REQsMHhDMiwweEFBLDB4QUUs
MHg2RSwweDE0LDB4REUsMHhCMywweEQ1LDB4MEEsMHhBOCwweEFBLDB4MkIsCisgICAgMHgxNCww
eERFLDB4RDMsMHhENSwweDM3LDB4MkYsMHgyQSwweDIwLDB4MzQsMHhFNiwweEY0LDB4REQsMHhF
QSwweDdFLDB4NUYsMHg3NiwKKyAgICAweDhCLDB4OEIsMHgwNiwweDVBLDB4N0UsMHg3RSwweDc4
LDB4NzgsMHgwNiwweDVBLDB4QTUsMHg0OSwweERFLDB4RkEsMHg1OCwweDYwLAorICAgIDB4QTUs
MHg0OSwweEMxLDB4MzAsMHg2OCwweEU4LDB4ODIsMHgwMCwweEE1LDB4NDksMHhBMSwweDI4LDB4
RDUsMHhGRiwweEFBLDB4MDgsCisgICAgMHg0NywweDYyLDB4RTEsMHgzMCwweDU1LDB4RDUsMHhB
QiwweDBBLDB4ODgsMHg2QSwweEUxLDB4MzAsMHg1NSwweEZGLDB4MkEsMHgwMCwKKyAgICAweEU5
LDB4NzIsMHgyMywweDM5LDB4NTUsMHhBQiwweDBBLDB4MjIsMHhFOSwweDcyLDB4ODQsMHg0MSww
eDU1LDB4RkEsMHhBMCwweEE4LAorICAgIDB4NjcsMHg2MiwweDY0LDB4NDEsMHhGNSwweEFBLDB4
MDAsMHhBMCwweDg3LDB4NjIsMHg2NCwweDQxLDB4NTUsMHhGRSwweEE4LDB4QUEsCisgICAgMHg2
OCwweDYyLDB4NDMsMHgzOSwweEJELDB4QUEsMHgyMiwweEFBLDB4MjcsMHg1QSwweDg0LDB4NDks
MHg1RSwweEEwLDB4QTgsMHhBQSwKKyAgICAweDA3LDB4NUEsMHg4NCwweDQxLDB4NTUsMHgyMCww
eDAwLDB4QTAsMHgyNywweDVBLDB4ODQsMHg0OSwweDU1LDB4MDgsMHgwMCwweEZCLAorICAgIDB4
MjcsMHg1QSwweDg0LDB4NDksMHhCRCwweEEwLDB4ODgsMHhFRiwweDA3LDB4NUEsMHhBNSwweDQ5
LDB4QUQsMHgyOCwweDI2LDB4NzcsCisgICAgMHgyNywweDVBLDB4ODQsMHg0OSwweEFBLDB4MDAs
MHhBRiwweDc3LDB4NDcsMHg1QSwweDg1LDB4NDksMHhFQiwweEEyLDB4RkIsMHg1NSwKKyAgICAw
eDA3LDB4NUEsMHg2NCwweDQ5LDB4MkEsMHgwMiwweEFBLDB4NTUsMHgyNywweDYyLDB4ODQsMHg0
OSwweEFBLDB4RjAsMHg3RiwweDU1LAorICAgIDB4NDcsMHg2MiwweDY0LDB4NDksMHgwMiwweEVB
LDB4N0YsMHg1NSwweDI3LDB4NUEsMHg2NSwweDQ5LDB4MDAsMHhBOCwweDU3LDB4RDUsCisgICAg
MHgyNywweDYyLDB4ODUsMHg0OSwweDBBLDB4OEEsMHg1NSwweDU1LDB4MDYsMHg1QSwweDY1LDB4
NDksMHg4MCwweEUzLDB4REQsMHgzQSwKKyAgICAweDQ3LDB4NkEsMHg2NCwweDQ5LDB4RUEsMHhG
RiwweDU1LDB4ODIsMHg0NywweDZBLDB4ODQsMHg1MSwweEZFLDB4NUYsMHhENSwweEU4LAorICAg
IDB4MDYsMHg2QSwweEM1LDB4NjEsMHhCQiwweDlGLDB4QTksMHhBNSwweDA2LDB4NzIsMHhFNSww
eDY5LDB4RDQsMHg1RiwweDVGLDB4NUEsCisgICAgMHg0NiwweDdBLDB4RTUsMHg2OSwweEY1LDB4
RkQsMHhBRiwweEY5LDB4MjYsMHg3MiwweEU1LDB4NjksMHg2RiwweEZGLDB4QTIsMHgyQSwKKyAg
ICAweDg4LDB4ODIsMHhFNiwweDY5LDB4N0YsMHhBRCwweDI5LDB4MkIsMHg0RSwweEFDLDB4QTUs
MHg1OSwweDU1LDB4NTcsMHhBRiwweDBBLAorICAgIDB4NzMsMHhDRCwweEU2LDB4NjEsMHg1NSww
eDU1LDB4QUIsMHgwOCwweEIzLDB4RDUsMHg4NCwweDUxLDB4NTUsMHhERCwweEFBLDB4MDAsCisg
ICAgMHgxNCwweERFLDB4ODMsMHg0OSwweDU1LDB4RkYsMHhBQSwweDAwLDB4MzQsMHhERSwweEU1
LDB4NTksMHg1NSwweEZGLDB4MkEsMHgwMCwKKyAgICAweDk1LDB4RUUsMHgyNiwweDYyLDB4NTUs
MHhGRiwweDJBLDB4MDAsMHhGMywweERELDB4NDYsMHg2MiwweDU1LDB4QUIsMHgwOCwweDAwLAor
ICAgIDB4MTQsMHhERSwweDg4LDB4NkEsMHg1NSwweEFBLDB4MDAsMHgwMCwweDM0LDB4REUsMHgw
QSwweDdCLDB4NTUsMHhBQSwweDAwLDB4MDAsCisgICAgMHg1NSwweEU2LDB4NkIsMHg4QiwweDVE
LDB4QUEsMHgwMCwweDAwLDB4NzUsMHhFNiwweDJELDB4OUMsMHg1NSwweEFBLDB4MDAsMHgwMCwK
KyAgICAweDk2LDB4RUUsMHg2RSwweEFDLDB4NTUsMHgyQSwweDAwLDB4MDAsMHg5NiwweEVFLDB4
RjAsMHhCQywweDU1LDB4QUEsMHgwMCwweDAwLAorICAgIDB4QjYsMHhFRSwweDUyLDB4QzUsMHg3
NSwweEFBLDB4MjIsMHg4MCwweEI2LDB4RUUsMHg5MywweENELDB4RDUsMHhBQSwweDAwLDB4MDAs
CisgICAgMHg5NiwweEVFLDB4RjQsMHhERCwweDU1LDB4QkIsMHgwMCwweDAwLDB4QjYsMHhGNiww
eDE0LDB4REUsMHg1NSwweEFFLDB4QUEsMHgwMCwKKyAgICAweEI2LDB4RjYsMHgxNSwweERFLDB4
RjcsMHhBQSwweDI4LDB4MDAsMHhCNiwweEVFLDB4MzUsMHhFNiwweDVELDB4QUEsMHgyOCwweDAw
LAorICAgIDB4QjYsMHhFRSwweDU1LDB4RTYsMHg3RCwweEVBLDB4MjIsMHgwMCwweEI2LDB4RUUs
MHg1NSwweEU2LDB4RkQsMHgyQSwweDAwLDB4MDAsCisgICAgMHhCNiwweEVFLDB4NzYsMHhFRSww
eDU3LDB4QkIsMHgyMiwweDAwLDB4QjYsMHhGNiwweDU2LDB4RUUsMHhGNywweEFGLDB4MEEsMHgw
MCwKKyAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4NzUsMHhFRCwweEI4LDB4MDAsMHhCNiwweEY2
LDB4OTYsMHhFRSwweEY1LDB4RkUsMHhGQSwweDAwLAorICAgIDB4OTYsMHhGNiwweEI2LDB4RUUs
MHhBOCwweEVFLDB4RUUsMHhENSwweEI2LDB4RjYsMHgxNCwweEU2LDB4QUEsMHhFMCwweDZBLDB4
NjAsCisgICAgMHgzNCwweEU2LDB4NEUsMHhBQywweEEwLDB4RTgsMHg2OCwweDdBLDB4QUYsMHhC
QywweDA2LDB4NjIsMHhFMCwweEY4LDB4N0UsMHg1RSwKKyAgICAweDY2LDB4NzIsMHhFNiwweDYx
LDB4RkMsMHg3QiwweDdFLDB4NUUsMHhFOSwweDgyLDB4QzUsMHg2MSwweDNELDB4QkQsMHhCNyww
eEQ1LAorICAgIDB4NzUsMHhFRSwweDhCLDB4OTMsMHgwQiwweDI5LDB4MEQsMHgyRCwweDE4LDB4
RkYsMHg5NiwweEVFLDB4RjUsMHhGRiwweEFCLDB4MkIsCisgICAgMHhGOCwweEY2LDB4QjcsMHhG
NiwweEQ1LDB4QkYsMHgyQSwweDA4LDB4RjcsMHhGNiwweEI3LDB4RUUsMHhGRCwweEFBLDB4MDAs
MHgwMCwKKyAgICAweDE3LDB4RkYsMHhENywweEY2LDB4N0QsMHhCRiwweEVBLDB4QUEsMHgxOCww
eEY3LDB4RDcsMHhGNiwweEQ1LDB4QkEsMHgzQiwweEFBLAorICAgIDB4RjcsMHhGNiwweEI2LDB4
RUUsMHhFQSwweEU4LDB4RDAsMHhFOCwweEY3LDB4RjYsMHhCNiwweEVFLDB4REIsMHhCQiwweEFB
LDB4QUIsCisgICAgMHhENywweEY2LDB4QjYsMHhFRSwweEJBLDB4MjgsMHgwQSwweDIyLDB4RDcs
MHhGNiwweEI3LDB4RUUsMHg4MiwweDgyLDB4MDAsMHgwMiwKKyAgICAweEQ3LDB4RjYsMHhCNyww
eEVFLDB4RjAsMHgzQSwweDgyLDB4ODksMHhENywweEY2LDB4QjcsMHhFRSwweDlDLDB4QkUsMHhB
QiwweDgyLAorICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHgzRiwweEZCLDB4QUUsMHgwRSwweEQ3
LDB4RjYsMHhCNywweEVFLDB4RUEsMHhFMiwweEFBLDB4QTgsCisgICAgMHhENywweEY2LDB4QjYs
MHhFRSwweEVGLDB4QTIsMHhBMCwweEEwLDB4RDcsMHhGNiwweEI2LDB4RUUsMHhGMSwweEVCLDB4
QTgsMHhBQSwKKyAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4QkYsMHhFQiwweDRBLDB4QUEsMHhE
NiwweEY2LDB4QjcsMHhFRSwweEQ3LDB4RjUsMHhBRiwweDhBLAorICAgIDB4RDcsMHhGNiwweEI2
LDB4RUUsMHg3RiwweEZCLDB4RkEsMHhFQSwweEQ3LDB4RjYsMHhCNiwweEVFLDB4RTMsMHg4QSww
eDdELDB4MkYsCisgICAgMHhENywweEY2LDB4QjYsMHhFRSwweEVGLDB4NkEsMHgyQiwweDI5LDB4
RjcsMHhGNiwweEI2LDB4RUUsMHg1RCwweEZGLDB4QkYsMHgyQiwKKyAgICAweEY3LDB4RjYsMHhC
NiwweEY2LDB4MkIsMHg4QSwweEUyLDB4RjgsMHhENywweEY2LDB4NzUsMHhFRSwweEYwLDB4Rjgs
MHg3RSwweEZFLAorICAgIDB4OTYsMHhFRSwweDc1LDB4RUUsMHgyNiwweEJGLDB4NjQsMHg2RCww
eEI2LDB4RjYsMHg3NSwweEVFLDB4QUIsMHg3QiwweDdGLDB4NTUsCisgICAgMHg5NiwweEVFLDB4
MzQsMHhFNiwweEMwLDB4RTgsMHhFRSwweDdBLDB4NTUsMHhFNiwweEYzLDB4REQsMHhBMCwweEE4
LDB4RkEsMHg3RSwKKyAgICAweDU1LDB4RTYsMHhGMywweERELDB4MkEsMHgyQSwweDJCLDB4MDks
MHhCNywweEY2LDB4NTUsMHhFNiwweDJELDB4MkIsMHgwQiwweDhCLAorICAgIDB4RDcsMHhGNiww
eDk2LDB4RUUsMHgzQSwweEU4LDB4RUEsMHhGRiwweEQ3LDB4RjYsMHg5NiwweEVFLDB4MDIsMHgz
QiwweEFCLDB4MkIsCisgICAgMHgxNywweEY3LDB4QjcsMHhGNiwweEZCLDB4RkYsMHhGRCwweDU1
LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBRCwweEFELDB4NjUsMHg2RCwKKyAgICAweEY3LDB4RjYs
MHg5NywweEVFLDB4MjgsMHg4OCwweEFBLDB4OEUsMHhGNywweEY2LDB4RDcsMHhGNiwweEQ2LDB4
RjYsMHg1NSwweDc3LAorICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHg3RSwweEI4LDB4QTgsMHgw
OCwweEQ3LDB4RjYsMHg5NiwweEVFLDB4RkIsMHhGQSwweEVBLDB4MDgsCisgICAgMHg5NiwweEY2
LDB4QjcsMHhFRSwweEJCLDB4REQsMHg3RCwweDU1LDB4QjcsMHhFRSwweDk2LDB4RUUsMHhGNSww
eDdFLDB4NjgsMHg4MCwKKyAgICAweEI2LDB4RUUsMHg5NiwweEVFLDB4MDMsMHhCNSwweEI2LDB4
MkUsMHhGNywweEY2LDB4QjYsMHhFRSwweDdGLDB4QUQsMHgyRCwweEFELAorICAgIDB4RjcsMHhG
NiwweEI2LDB4RUUsMHg1NSwweDVBLDB4NkEsMHgyMCwweEQ3LDB4RjYsMHhCNywweEVFLDB4RTUs
MHhFRCwweEVGLDB4OTgsCisgICAgMHgxOCwweEZGLDB4QjYsMHhGNiwweEJGLDB4QUQsMHhCRSww
eEFCLDB4MzgsMHhGRiwweEY4LDB4RjYsMHhGRiwweEFGLDB4QTksMHhBRiwKKyAgICAweDM5LDB4
RkYsMHhGOCwweEY2LDB4NTcsMHg1RSwweDdBLDB4RkEsMHgxOCwweEY3LDB4RDcsMHhGNiwweEZB
LDB4N0IsMHhGQSwweEY4LAorICAgIDB4RjcsMHhGNiwweDk2LDB4RUUsMHg2OCwweDgwLDB4MDIs
MHgwOCwweEY3LDB4RjYsMHhCNiwweEVFLDB4MkQsMHhCNywweEQ2LDB4N0UsCisgICAgMHhGNyww
eEY2LDB4RDcsMHhGNiwweDAyLDB4MEEsMHgyMCwweDI5LDB4MzgsMHhGRiwweEQ3LDB4RjYsMHg3
RiwweDdCLDB4RkYsMHg3RCwKKyAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4RkUsMHhFQywweEZF
LDB4QjgsMHhCNiwweEVFLDB4NTUsMHhFNiwweEZBLDB4NzgsMHhGOCwweDdBLAorICAgIDB4NzUs
MHhFNiwweDE0LDB4REUsMHg2QSwweDZBLDB4NkUsMHg2OCwweDM0LDB4RTYsMHg5MiwweENELDB4
QUUsMHgzRiwweDk1LDB4RDUsCisgICAgMHg1NSwweEU2LDB4MTQsMHhFNiwweDcyLDB4NjIsMHg0
MiwweDYzLDB4RjQsMHhFNSwweDM0LDB4REUsMHg3RiwweEZBLDB4RkEsMHhGQSwKKyAgICAweDU1
LDB4RUUsMHhCMywweEQ1LDB4NjAsMHg2OCwweEUwLDB4RTIsMHhCMiwweEQ1LDB4NTEsMHhDNSww
eDJGLDB4QjcsMHhGNiwweEY2LAorICAgIDB4MzQsMHhFNiwweDkyLDB4Q0QsMHgyRiwweDBGLDB4
QTksMHgyOSwweDM0LDB4RTYsMHgxNCwweERFLDB4MDIsMHg4OCwweDBCLDB4RkEsCisgICAgMHgz
NSwweEU2LDB4RjQsMHhERCwweEZBLDB4RkUsMHg5RSwweEI3LDB4MTQsMHhERSwweEQzLDB4REQs
MHgzRSwweEZDLDB4RUUsMHhCQSwKKyAgICAweDE0LDB4REUsMHhEMywweERELDB4MjgsMHhCQSww
eDlGLDB4RTcsMHgxNCwweERFLDB4OTIsMHhDRCwweEE4LDB4QTgsMHhFQSwweDYwLAorICAgIDB4
NTEsMHhDNSwweDg3LDB4NkEsMHg1RSwweDc4LDB4RTAsMHg4MCwweENCLDB4OTMsMHhDNSwweDUx
LDB4NTcsMHg1NywweDVFLDB4RTgsCisgICAgMHhFNSwweDU5LDB4NjMsMHg0OSwweEFFLDB4QUYs
MHhGNywweEEwLDB4RTUsMHg1OSwweDQyLDB4NDEsMHgyMiwweDBBLDB4RkYsMHhERiwKKyAgICAw
eDQ3LDB4NjIsMHg0MywweDQxLDB4MDAsMHhBRSwweEZGLDB4RTcsMHg2NywweDYyLDB4NDMsMHg0
MSwweDAwLDB4QkEsMHg3RiwweEZBLAorICAgIDB4ODgsMHg2QSwweDg0LDB4NDksMHgyMCwweEZG
LDB4NTUsMHhGRiwweDY3LDB4NkEsMHg4NCwweDQ5LDB4OEEsMHg2RiwweDc1LDB4MjAsCisgICAg
MHhDOSwweDdBLDB4ODQsMHg0OSwweEZGLDB4NUQsMHg1NSwweDAyLDB4NkIsMHg4QiwweDg0LDB4
NDksMHg3RiwweDU1LDB4NTUsMHgwMiwKKyAgICAweEVELDB4OUIsMHg4NCwweDQ5LDB4NTUsMHg1
NSwweEZGLDB4MDAsMHg2RSwweEFDLDB4QTUsMHg0OSwweDU1LDB4NTUsMHhGRiwweDAwLAorICAg
IDB4RDAsMHhCNCwweEE1LDB4NTEsMHg1NSwweDU1LDB4RkYsMHgwMCwweDMyLDB4QkQsMHhBNSww
eDUxLDB4NTUsMHg1NSwweEVGLDB4MDAsCisgICAgMHgzMiwweEM1LDB4QTUsMHg1MSwweDU1LDB4
NTUsMHhBQSwweDAwLDB4OTIsMHhDRCwweEE1LDB4NDksMHg1NSwweEY1LDB4QUEsMHgwMCwKKyAg
ICAweEYzLDB4REQsMHg4NCwweDQ5LDB4NTUsMHhGRiwweEFBLDB4MDAsMHgzNCwweEU2LDB4QTUs
MHg1MSwweDU1LDB4RkYsMHhBQSwweDAwLAorICAgIDB4MTQsMHhERSwweDA2LDB4NUEsMHg1NSww
eEZGLDB4OEEsMHgwMCwweEIzLDB4RDUsMHhDNSwweDUxLDB4NTUsMHhBQSwweDAwLDB4MDAsCisg
ICAgMHhGNCwweERELDB4NjcsMHg2QSwweDU1LDB4QUEsMHgwMCwweDAwLDB4MTQsMHhERSwweEU5
LDB4NzIsMHg1NSwweEFBLDB4MDAsMHgwMCwKKyAgICAweDM1LDB4REUsMHg2QiwweDhCLDB4NTUs
MHhBQSwweDA4LDB4MDAsMHgzNSwweEU2LDB4QUQsMHg5MywweEY1LDB4QUEsMHgwMCwweDAwLAor
ICAgIDB4MzUsMHhFNiwweDcwLDB4QUMsMHg1NSwweEFBLDB4MDAsMHgwMCwweDM1LDB4RTYsMHhB
OCwweDdBLDB4N0UsMHhGQSwweEUwLDB4RTAsCisgICAgMHg4NywweDdBLDB4ODQsMHg1OSwweEY3
LDB4RjYsMHg1NCwweDU0LDB4RTUsMHg2OSwweEE0LDB4NjEsMHgyMCwweDIyLDB4MjMsMHgzRCwK
KyAgICAweDA1LDB4NzIsMHhDNSwweDY5LDB4QkUsMHhCRiwweDNFLDB4MzcsMHgyNiwweDcyLDB4
RTUsMHg2OSwweEZBLDB4QkEsMHhCOCwweEQ3LAorICAgIDB4ODgsMHg3QSwweDA2LDB4NzIsMHgy
RCwweEJELDB4QjUsMHhENSwweDZFLDB4QjQsMHg2NywweDcyLDB4MEIsMHgyRCwweEI1LDB4RjUs
CisgICAgMHgzNSwweEU2LDB4MEMsMHhBQywweDJBLDB4MEIsMHgyRiwweEFELDB4OTYsMHhGNiww
eDM1LDB4RTYsMHhCNSwweEFBLDB4QUIsMHgwOSwKKyAgICAweEI2LDB4RjYsMHg1NSwweEU2LDB4
REQsMHhGQiwweEFCLDB4MkEsMHhCNiwweEY2LDB4NzUsMHhFRSwweDU1LDB4RkYsMHhFQSwweEFB
LAorICAgIDB4OTYsMHhGNiwweDc1LDB4RTYsMHg1RiwweEFFLDB4OEIsMHgwOCwweEI2LDB4RjYs
MHg3NSwweEU2LDB4RDcsMHhFRiwweDJBLDB4MjIsCisgICAgMHhCNiwweEY2LDB4OTYsMHhFNiww
eDU3LDB4QUIsMHhBRSwweEEyLDB4QjYsMHhGNiwweDc1LDB4RUUsMHhGRCwweEVFLDB4QjAsMHgz
QSwKKyAgICAweEI3LDB4RjYsMHg3NSwweEVFLDB4QkQsMHhCQiwweEFBLDB4QUEsMHhCNiwweEY2
LDB4OTYsMHhFRSwweDdFLDB4Q0EsMHgwMywweDBGLAorICAgIDB4OTYsMHhGNiwweEI2LDB4RUUs
MHg3NiwweDVGLDB4NzcsMHhGRiwweEQ3LDB4RjYsMHg5NiwweEVFLDB4RDUsMHhGRiwweEZGLDB4
QkMsCisgICAgMHhCNiwweEY2LDB4OTUsMHhFRSwweEVGLDB4QUEsMHgwQSwweDBBLDB4OTYsMHhG
RSwweEI2LDB4RUUsMHg3RCwweEY3LDB4REYsMHhGRiwKKyAgICAweEI3LDB4RjYsMHhCNiwweEVF
LDB4RkYsMHhCRSwweEVCLDB4QUEsMHhENiwweEY2LDB4OTUsMHhFRSwweEZCLDB4QUEsMHgyOSww
eEFGLAorICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHg3RCwweEFBLDB4MDAsMHgwMiwweEY2LDB4
RjYsMHhENywweEY2LDB4NTUsMHg1NywweDdGLDB4RUIsCisgICAgMHhGNywweEY2LDB4QjYsMHhF
RSwweEQ3LDB4QUIsMHg4MiwweDAwLDB4RjcsMHhGNiwweEI3LDB4RUUsMHhGNywweDJBLDB4MjIs
MHg4MCwKKyAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4RkIsMHhFQSwweDhBLDB4MjIsMHhGNyww
eEY2LDB4QjYsMHhFRSwweEJGLDB4MkEsMHgwMCwweDAwLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4
RjYsMHg1NSwweDU4LDB4RTIsMHhBMCwweEY4LDB4RkUsMHhCNiwweEY2LDB4REQsMHhBQSwweDJC
LDB4RUEsCisgICAgMHhENywweEY2LDB4NzUsMHhFRSwweDg4LDB4ODAsMHhFMCwweDYwLDB4QjYs
MHhGNiwweEVGLDB4QkMsMHhBMCwweEU4LDB4RUEsMHg3QSwKKyAgICAweDUxLDB4Q0QsMHg4Nyww
eDdBLDB4RTAsMHhFOCwweDVBLDB4NUUsMHhDOCwweDdBLDB4MjYsMHg2QSwweDdDLDB4RkYsMHhG
NSwweEY1LAorICAgIDB4NDYsMHg3MiwweEU1LDB4NjEsMHg3QywweEMwLDB4ODgsMHg2MCwweDY2
LDB4NzIsMHhDNSwweDYxLDB4MTUsMHg5NSwweDlFLDB4QkYsCisgICAgMHg3NSwweEVFLDB4OEEs
MHg5MywweDJELDB4MkQsMHgyRCwweDJELDB4MTgsMHhGRiwweDk2LDB4RjYsMHgyOSwweDJCLDB4
QUIsMHg4QiwKKyAgICAweEY4LDB4RkUsMHgxNywweEY3LDB4QUEsMHhBQSwweEFBLDB4RTIsMHgx
OCwweEZGLDB4RjcsMHhGNiwweEQ3LDB4RDUsMHhBRiwweEJFLAorICAgIDB4MTgsMHhGRiwweEY3
LDB4RjYsMHhBRiwweEZGLDB4RUUsMHhCOSwweDE4LDB4RkYsMHhGNywweEY2LDB4N0UsMHhBQSww
eEFBLDB4NkUsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDcwLDB4RTgsMHhFMiwweEE4LDB4
RjcsMHhGNiwweEQ3LDB4RjYsMHhEQiwweERBLDB4NUQsMHhENSwKKyAgICAweEY3LDB4RjYsMHhE
NywweEY2LDB4NTUsMHg1RCwweDZCLDB4N0IsMHhGNiwweEY2LDB4RDcsMHhGNiwweDU1LDB4NUYs
MHg3RSwweDdGLAorICAgIDB4QjcsMHhGNiwweEQ2LDB4RUUsMHhCQSwweEVBLDB4QUEsMHhGQiww
eEQ3LDB4RjYsMHhCNywweEVFLDB4OEEsMHgwMiwweDAyLDB4QzgsCisgICAgMHhENywweEY2LDB4
QjYsMHhFRSwweEFBLDB4MjIsMHgyOCwweDJGLDB4RDcsMHhGNiwweEI3LDB4RUUsMHg4MiwweDAy
LDB4MjgsMHgyRSwKKyAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4ODAsMHhBOCwweDNFLDB4QTMs
MHhENywweEY2LDB4RjcsMHhFRSwweDAwLDB4MEEsMHg4MiwweDgyLAorICAgIDB4RjcsMHhGNiww
eEI2LDB4RUUsMHhGRiwweERBLDB4RkUsMHhCQSwweEQ3LDB4RjYsMHhCNiwweEVFLDB4OEIsMHg4
QSwweEEyLDB4MjgsCisgICAgMHhENywweEY2LDB4QjYsMHhFRSwweEUyLDB4RUEsMHhCRSwweEJF
LDB4RjcsMHhGNiwweEI2LDB4RUUsMHhGNywweEZGLDB4RUEsMHhFQSwKKyAgICAweEY3LDB4RjYs
MHhENywweEY2LDB4NTUsMHg1RiwweEJELDB4MkQsMHgxOCwweEZGLDB4RDcsMHhGNiwweEFELDB4
RTksMHhGQiwweDVFLAorICAgIDB4RjcsMHhGNiwweDk2LDB4RUUsMHhFOCwweEZBLDB4REUsMHg3
RSwweEI2LDB4RjYsMHg5NiwweEVFLDB4REUsMHg3RCwweDc3LDB4N0YsCisgICAgMHg5NiwweEVF
LDB4NzUsMHhFRSwweDcyLDB4RkEsMHg1RSwweDU0LDB4OTYsMHhFRSwweDE0LDB4RTYsMHhFQSww
eEY4LDB4N0EsMHg1QSwKKyAgICAweDU1LDB4RUUsMHhGNCwweERELDB4QTAsMHhBMiwweEVBLDB4
RkYsMHgxNCwweERFLDB4NzEsMHhDRCwweDgwLDB4RTgsMHg3QywweEQ2LAorICAgIDB4NTUsMHhF
NiwweEIyLDB4RDUsMHgwMywweEFELDB4QkQsMHg4QiwweDc2LDB4RUUsMHgxNCwweERFLDB4MDAs
MHhFQiwweDU1LDB4RjIsCisgICAgMHg5NiwweEVFLDB4QjIsMHhENSwweDAwLDB4MkEsMHhENyww
eDVGLDB4OTYsMHhGNiwweEQzLDB4RDUsMHgwMCwweDAwLDB4QUYsMHhENSwKKyAgICAweEI3LDB4
RjYsMHgxNCwweERFLDB4MDgsMHgwMiwweEFBLDB4RjUsMHhENywweEY2LDB4NTUsMHhFNiwweDAw
LDB4ODgsMHhFQiwweEY3LAorICAgIDB4RDcsMHhGNiwweDk2LDB4RUUsMHgwQSwweDBBLDB4MkQs
MHhENSwweEY3LDB4RjYsMHhCNiwweEY2LDB4RUUsMHgwQSwweDJCLDB4QkQsCisgICAgMHhGNyww
eEY2LDB4RDcsMHhGNiwweDc1LDB4RDYsMHhCNywweDI5LDB4RjgsMHhGNiwweEQ3LDB4RjYsMHg1
NSwweEZELDB4REYsMHhFNywKKyAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4NUUsMHg1OCwweEY4
LDB4NzAsMHg5NywweEY2LDB4QjYsMHhFRSwweERGLDB4RkYsMHhGRiwweDVGLAorICAgIDB4RDcs
MHhGNiwweDk2LDB4RUUsMHgyRSwweEEzLDB4RkUsMHhGQSwweEQ3LDB4RjYsMHhCNywweEVFLDB4
MDgsMHgyQSwweEFGLDB4RjUsCisgICAgMHhGNywweEY2LDB4QjcsMHhFRSwweDgyLDB4QUEsMHhB
RiwweDBCLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhFQSwweDA4LDB4MjAsMHg4MiwKKyAgICAweDE4
LDB4RjcsMHhEOCwweEY2LDB4M0QsMHhBRiwweEJGLDB4RUIsMHgzOCwweEZGLDB4RjcsMHhGNiww
eEFCLDB4MkUsMHhBQiwweEFGLAorICAgIDB4MzksMHhGRiwweDE4LDB4RjcsMHg3RiwweEVBLDB4
RUEsMHgyMiwweDM4LDB4RkYsMHhGOCwweEY2LDB4NUYsMHhERSwweEZGLDB4NjgsCisgICAgMHgx
OCwweEY3LDB4RDcsMHhGNiwweEJGLDB4RkEsMHhFQSwweEZFLDB4RjcsMHhGNiwweEI3LDB4RUUs
MHhFOCwweEEwLDB4QTIsMHhGQSwKKyAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4MEQsMHgyNSww
eDE3LDB4RDcsMHhGNywweEY2LDB4OTcsMHhFRSwweEEwLDB4ODgsMHhBOCwweEVBLAorICAgIDB4
RDcsMHhGNiwweDk2LDB4RUUsMHhFQSwweEZBLDB4NjAsMHhFMiwweDk2LDB4RUUsMHg1NSwweEU2
LDB4RTAsMHhFMCwweEUwLDB4RTAsCisgICAgMHg1NSwweEU2LDB4RDMsMHhENSwweDYwLDB4RUEs
MHhGMiwweEYwLDB4QjMsMHhENSwweDBGLDB4QkQsMHgyRSwweDJFLDB4M0UsMHgxNiwKKyAgICAw
eDU1LDB4RTYsMHhGMywweERELDB4QTMsMHgwQiwweDA5LDB4QTksMHgxNCwweERFLDB4QjMsMHhE
RCwweDBBLDB4MEEsMHhBOCwweEJBLAorICAgIDB4MzQsMHhFNiwweEY0LDB4REQsMHg4MiwweEVB
LDB4RUIsMHg4QiwweEQzLDB4RDUsMHgzMCwweEM1LDB4RDYsMHhEQywweERDLDB4NUMsCisgICAg
MHgxNCwweEU2LDB4NzEsMHhDRCwweDJCLDB4MjksMHgyRCwweDBGLDB4MzQsMHhFNiwweDE0LDB4
REUsMHhENCwweEY1LDB4OTUsMHg1NSwKKyAgICAweDM1LDB4RTYsMHhGMywweERELDB4RUYsMHhF
RSwweERBLDB4RTAsMHgxNCwweERFLDB4RjMsMHhERCwweEZBLDB4MDAsMHgyOCwweDU0LAorICAg
IDB4MTQsMHhERSwweEQzLDB4REQsMHhBQSwweEJDLDB4RkUsMHgzQSwweEYzLDB4REQsMHgxMCww
eEM1LDB4QzAsMHg2MCwweDYwLDB4NjAsCisgICAgMHhCNiwweEVFLDB4OTIsMHhDRCwweDdGLDB4
RkEsMHhBOCwweDgwLDB4NTUsMHhFNiwweDJELDB4QTQsMHg1RSwweEFBLDB4MjAsMHgwMCwKKyAg
ICAweDE0LDB4REUsMHgyOSwweDdCLDB4NTUsMHhBQSwweDgwLDB4MDAsMHhGNCwweERELDB4Qzgs
MHg3MiwweDU1LDB4QUEsMHgwMCwweDAwLAorICAgIDB4MTQsMHhERSwweDA5LDB4N0IsMHg1NSww
eEFBLDB4MDIsMHgwMCwweDE1LDB4REUsMHg4QiwweDhCLDB4NTUsMHhBQSwweDAwLDB4MDAsCisg
ICAgMHgzNSwweEU2LDB4MEQsMHg5QywweDU1LDB4QUEsMHgwMCwweDAwLDB4NTUsMHhFNiwweDcw
LDB4QUMsMHg1NSwweEFBLDB4MDgsMHgwMCwKKyAgICAweDU1LDB4RTYsMHhGMSwweEJDLDB4NTUs
MHhBQSwweDBBLDB4MDAsMHg3NiwweEU2LDB4MzIsMHhDNSwweDU3LDB4QUIsMHgyOCwweDAwLAor
ICAgIDB4NzYsMHhFRSwweDcyLDB4Q0QsMHhENSwweEJBLDB4MDgsMHgwMCwweDc1LDB4RUUsMHhE
MywweEQ1LDB4NTUsMHhCQiwweDIwLDB4MDAsCisgICAgMHg3NSwweEVFLDB4RDMsMHhENSwweDU1
LDB4RUEsMHgwMCwweDAwLDB4NzUsMHhFRSwweEQ0LDB4RDUsMHhERCwweEFBLDB4ODIsMHgwMCwK
KyAgICAweDc2LDB4RUUsMHhGNCwweERELDB4NzUsMHg4MiwweDAyLDB4MDAsMHg5NiwweEY2LDB4
MTQsMHhERSwweDU3LDB4RUUsMHhBQSwweDBBLAorICAgIDB4OTUsMHhFRSwweDM0LDB4RTYsMHg1
NSwweEJCLDB4QUEsMHgwMCwweDk2LDB4RUUsMHgzNCwweEU2LDB4N0YsMHhBRSwweDhBLDB4MDgs
CisgICAgMHg5NiwweEVFLDB4MzQsMHhFNiwweEQ3LDB4RUEsMHhBQSwweDg4LDB4OTYsMHhFRSww
eDU1LDB4RTYsMHhGRCwweEFGLDB4QTgsMHhBOCwKKyAgICAweDk2LDB4RUUsMHgzNCwweEU2LDB4
RkQsMHhBOCwweEE4LDB4MDgsMHhCNywweEY2LDB4NTUsMHhFNiwweERELDB4RkYsMHhCRiwweDJC
LAorICAgIDB4OTYsMHhFRSwweDc1LDB4RUUsMHhGRCwweDhCLDB4MjMsMHgwMCwweDk2LDB4RUUs
MHg3NiwweEVFLDB4NTUsMHhGMCwweDAwLDB4MDAsCisgICAgMHhCNiwweEY2LDB4NzYsMHhFRSww
eEY1LDB4RkQsMHhCQiwweEFELDB4QjYsMHhGNiwweDRELDB4QUMsMHg3OCwweDZBLDB4NzgsMHg2
OCwKKyAgICAweEM4LDB4ODIsMHg4MywweDYxLDB4NTQsMHhEOCwweDdDLDB4RkMsMHhFNSwweDY5
LDB4ODQsMHg2MSwweDNCLDB4NTcsMHhGRiwweEJGLAorICAgIDB4MjYsMHg3MiwweDg0LDB4NjEs
MHgyRiwweDI3LDB4QkYsMHhCRiwweDI2LDB4NzIsMHhFNSwweDY5LDB4REYsMHhGMCwweEE4LDB4
MDIsCisgICAgMHgyNywweDcyLDB4QTQsMHg2OSwweDIwLDB4MkIsMHgyRSwweDk2LDB4RTgsMHg4
MiwweDI2LDB4NzIsMHgzRCwweEQ1LDB4RDUsMHg1NSwKKyAgICAweDUxLDB4Q0QsMHhBOCwweDgy
LDB4MEIsMHgyRCwweEJELDB4QjUsMHg5NiwweEY2LDB4MzEsMHhDRCwweDBBLDB4MEIsMHgyRiww
eDNELAorICAgIDB4OTYsMHhGNiwweEI2LDB4RUUsMHhBMywweEE4LDB4QTAsMHg4MCwweEI2LDB4
RjYsMHg5NiwweEVFLDB4RUYsMHgyQiwweEJBLDB4QTgsCisgICAgMHhCNiwweEY2LDB4OTYsMHhF
RSwweDJGLDB4RTgsMHgyQiwweEE3LDB4QjYsMHhGNiwweDk2LDB4RUUsMHhCRiwweEJGLDB4RkEs
MHhBOCwKKyAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4QjgsMHhFQSwweEFBLDB4MkYsMHhCNiww
eEY2LDB4OTYsMHhFRSwweEYzLDB4QkIsMHhGQiwweEJBLAorICAgIDB4QjYsMHhGNiwweDk2LDB4
RUUsMHhFQSwweEZBLDB4RkUsMHg5RiwweEI3LDB4RjYsMHg5NiwweEVFLDB4MDcsMHhCQiwweEU4
LDB4OEEsCisgICAgMHhCNiwweEY2LDB4OTYsMHhFRSwweDg4LDB4QUEsMHhGRiwweEFCLDB4QjYs
MHhGNiwweDk2LDB4RUUsMHgwRSwweDBGLDB4ODIsMHg4MiwKKyAgICAweEI2LDB4RjYsMHg5Niww
eEVFLDB4RUEsMHhBQiwweEJBLDB4QTgsMHhCNiwweEY2LDB4OTcsMHhFRSwweDhCLDB4QTAsMHgw
QSwweDIyLAorICAgIDB4QjYsMHhGNiwweEQ3LDB4RUUsMHgwOCwweEEwLDB4QTgsMHhFOCwweEQ3
LDB4RjYsMHhCNiwweEVFLDB4REQsMHgxRCwweEFCLDB4MjIsCisgICAgMHhGNywweEY2LDB4RDcs
MHhGNiwweEI1LDB4MjUsMHgyMywweDBBLDB4RDcsMHhGRSwweEY3LDB4RjYsMHhERCwweDc3LDB4
NUQsMHhGNSwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4ODgsMHhBQSwweEEyLDB4MDgsMHgx
NywweEZGLDB4RDcsMHhGNiwweDZFLDB4NkUsMHhGQiwweEVGLAorICAgIDB4MTcsMHhGRiwweEQ3
LDB4RjYsMHhFRCwweEFELDB4QkYsMHhCRiwweEY3LDB4RkUsMHhGNywweEY2LDB4RkYsMHhERiww
eDc3LDB4RjcsCisgICAgMHhENywweEZFLDB4RjcsMHhGNiwweEY3LDB4RUQsMHhGRiwweEFCLDB4
RjcsMHhGRSwweEI2LDB4RjYsMHhBOCwweEFBLDB4RUEsMHg3QSwKKyAgICAweEI3LDB4RjYsMHg5
MiwweEQ1LDB4ODAsMHhFMCwweEU4LDB4N0EsMHhEMiwweERELDB4QTcsMHg4MiwweEEwLDB4RTgs
MHhFOCwweDdBLAorICAgIDB4OEEsMHg5MywweDI2LDB4NzIsMHg3QywweDVFLDB4RkYsMHg3RCww
eEE3LDB4ODIsMHgyNiwweDcyLDB4RjYsMHhFNywweEJBLDB4QUEsCisgICAgMHhBNywweDdBLDB4
MDUsMHg2QSwweDdGLDB4RkUsMHhFQSwweENFLDB4ODcsMHg3QSwweEU0LDB4NjEsMHhGNywweDk1
LDB4MzcsMHgzNywKKyAgICAweDc1LDB4RUUsMHhDQywweEEzLDB4MkQsMHgyRCwweDJELDB4Mjks
MHhGNywweEY2LDB4OTYsMHhGNiwweDAzLDB4MDksMHgwQiwweDAyLAorICAgIDB4MTgsMHhGRiww
eEY3LDB4RjYsMHhGNywweEU1LDB4RkYsMHhCNiwweDE3LDB4RkYsMHhGNywweEY2LDB4RUYsMHhC
RCwweEVELDB4OUYsCisgICAgMHhGOCwweEZFLDB4MTcsMHhGNywweDdGLDB4NzcsMHhGRiwweEZG
LDB4MTgsMHhGRiwweEY3LDB4RjYsMHhGOCwweDI4LDB4RjAsMHg0QSwKKyAgICAweDE3LDB4RkYs
MHhENywweEY2LDB4RkEsMHhFQSwweEFBLDB4N0EsMHhGNywweEY2LDB4RDcsMHhGNiwweDc3LDB4
REQsMHgzRCwweDJELAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhFRiwweERELDB4RkQsMHhG
QSwweEY3LDB4RjYsMHhENywweEY2LDB4RDYsMHhGRiwweEZCLDB4QkIsCisgICAgMHhENywweEY2
LDB4QjYsMHhFRSwweDBBLDB4MDAsMHg4OCwweDIwLDB4RDcsMHhGNiwweEY2LDB4RUUsMHgwMiww
eDIwLDB4MjgsMHgyOCwKKyAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4QkQsMHhBQSwweDJBLDB4
QUUsMHhENywweEY2LDB4QjYsMHhFRSwweDA4LDB4QTIsMHg4MCwweDA4LAorICAgIDB4RDcsMHhG
NiwweEI3LDB4RUUsMHgwOCwweEJFLDB4MjAsMHg4MCwweEQ3LDB4RjYsMHhENiwweEVFLDB4QTgs
MHhBQSwweEFBLDB4QUEsCisgICAgMHhENywweEY2LDB4QjYsMHhFRSwweDIwLDB4QTgsMHhBOCww
eDIwLDB4RDcsMHhGNiwweEY3LDB4RUUsMHgyMCwweDIwLDB4RTgsMHhBMCwKKyAgICAweEY3LDB4
RjYsMHhCNiwweEVFLDB4QkUsMHhGQSwweEFFLDB4QkUsMHhGNywweEY2LDB4RDcsMHhGNiwweDU1
LDB4NTUsMHhGNSwweDJELAorICAgIDB4RjcsMHhGRSwweEQ3LDB4RUUsMHhBQiwweDhBLDB4RTAs
MHg3QSwweEY3LDB4RjYsMHhCNiwweEY2LDB4RTAsMHg3QSwweDVFLDB4NTcsCisgICAgMHhENiww
eEY2LDB4OTYsMHhFRSwweDVFLDB4REUsMHg1RSwweDVGLDB4NzUsMHhGNiwweDk2LDB4RUUsMHg1
NSwweEY3LDB4RkQsMHhFNywKKyAgICAweDk2LDB4RUUsMHgzNCwweEU2LDB4QUEsMHhCQSwweEYw
LDB4N0EsMHg1NSwweEU2LDB4RjMsMHhERCwweDdDLDB4N0MsMHg3QSwweDVFLAorICAgIDB4RjMs
MHhERCwweDkyLDB4RDUsMHhDMiwweEZBLDB4NjgsMHhGMiwweDM0LDB4RTYsMHg1MSwweENELDB4
RjcsMHg5RCwweDI3LDB4MEIsCisgICAgMHhCNiwweEY2LDB4MTMsMHhERSwweEFELDB4MkIsMHgw
QSwweDAyLDB4QjYsMHhGNiwweDc2LDB4RUUsMHg3RSwweDA4LDB4MDgsMHgyMCwKKyAgICAweDk2
LDB4RUUsMHhGNCwweERELDB4N0UsMHhGOCwweDgwLDB4MDAsMHg1NSwweEVFLDB4RDMsMHhENSww
eDU3LDB4RkEsMHg4QSwweDAwLAorICAgIDB4NTUsMHhFRSwweEYzLDB4REQsMHhGRCwweEZELDB4
MkMsMHgwMiwweDc1LDB4RUUsMHgxNCwweERFLDB4QUIsMHhCNSwweEZBLDB4MEEsCisgICAgMHg5
NiwweEVFLDB4MzQsMHhFNiwweDJCLDB4QkQsMHhGNSwweDdBLDB4RDYsMHhGNiwweDU1LDB4RTYs
MHgwQSwweEFGLDB4RUQsMHhGNSwKKyAgICAweEY4LDB4RjYsMHg5NiwweEVFLDB4MEEsMHhBQiww
eEJGLDB4RDUsMHhGNywweEY2LDB4QjYsMHhGNiwweEEyLDB4QUEsMHgyQiwweEE3LAorICAgIDB4
RjgsMHhGNiwweEI2LDB4RUUsMHg3QiwweEZBLDB4RTgsMHhBQSwweEQ3LDB4RjYsMHhCNywweEVF
LDB4RTcsMHhBRiwweDIyLDB4MDIsCisgICAgMHhENywweEY2LDB4OTYsMHhFRSwweEZFLDB4NkEs
MHhGMCwweDIwLDB4RDcsMHhGNiwweDk2LDB4RUUsMHg4RCwweEFELDB4RjcsMHhCRSwKKyAgICAw
eEY3LDB4RjYsMHhCNywweEVFLDB4MkYsMHhCQiwweEFCLDB4QUIsMHgxOCwweEZGLDB4RDcsMHhG
NiwweEZGLDB4QkYsMHgyQiwweEFFLAorICAgIDB4MTgsMHhGNywweEY4LDB4RjYsMHhBRCwweEQ2
LDB4RDYsMHhFRSwweDE4LDB4RjcsMHhGOCwweEY2LDB4MjcsMHg5NSwweEQ1LDB4RjcsCisgICAg
MHgzOSwweEZGLDB4RjcsMHhGNiwweDAyLDB4MkIsMHgwQiwweEI3LDB4MzgsMHhGRiwweEY4LDB4
RjYsMHhFMCwweEE4LDB4MjAsMHgwMiwKKyAgICAweDE4LDB4RkYsMHhENywweEVFLDB4RkUsMHhG
OCwweEZDLDB4NzgsMHhCNywweEY2LDB4RDcsMHhFRSwweEZELDB4REIsMHhGRiwweEJCLAorICAg
IDB4QjYsMHhFRSwweDc2LDB4RTYsMHgyOCwweEI4LDB4NTgsMHg1OCwweEQ3LDB4RjYsMHg5Niww
eEVFLDB4ODAsMHg4QSwweDA5LDB4MEQsCisgICAgMHhENywweEY2LDB4OTYsMHhFRSwweEUyLDB4
RTIsMHg2QSwweDdBLDB4QjYsMHhFRSwweDU1LDB4RTYsMHg2MiwweDZFLDB4RUUsMHhFRiwKKyAg
ICAweDc1LDB4RUUsMHhEMywweEQ1LDB4NkEsMHg2QSwweDdBLDB4NzgsMHg3MSwweENELDB4RUYs
MHhCQywweDNDLDB4MTYsMHgzNCwweEQ0LAorICAgIDB4NTUsMHhFRSwweEIyLDB4RDUsMHg4Myww
eDBCLDB4MDksMHgwRCwweDU1LDB4RTYsMHhGMywweERELDB4NTcsMHg1RSwweDVDLDB4NUUsCisg
ICAgMHgzNCwweEU2LDB4RjQsMHhERCwweDg5LDB4QkQsMHhBRiwweEJELDB4MzQsMHhFNiwweDMw
LDB4QzUsMHg1RSwweDVDLDB4NUEsMHg1OCwKKyAgICAweDc1LDB4RUUsMHgzMCwweEM1LDB4MkQs
MHgyRCwweDJELDB4QkQsMHhCNiwweEY2LDB4MTQsMHhERSwweDc3LDB4ODAsMHg4MCwweDIyLAor
ICAgIDB4OTYsMHhFRSwweEY0LDB4REQsMHg3RiwweEZBLDB4QTAsMHgwOCwweDc1LDB4RUUsMHhG
MywweERELDB4NTcsMHhGRiwweEE4LDB4MDAsCisgICAgMHg1NSwweEU2LDB4RjMsMHhERCwweDVG
LDB4NzcsMHhGRiwweEY4LDB4MTQsMHhERSwweDMxLDB4QzUsMHg2MiwweEM4LDB4ODAsMHgwMCwK
KyAgICAweDk2LDB4RjYsMHhCNiwweEVFLDB4QTUsMHhENywweDc1LDB4NzUsMHhCNiwweEVFLDB4
NzYsMHhFRSwweDVELDB4RUUsMHhBQSwweEEwLAorICAgIDB4OTUsMHhFRSwweDU1LDB4RTYsMHhG
RSwweEJFLDB4MDgsMHgwMCwweEI2LDB4RUUsMHg1NSwweEU2LDB4REQsMHhGRiwweEFFLDB4OEIs
CisgICAgMHhCNiwweEVFLDB4NTUsMHhFNiwweDU3LDB4QkYsMHhBQSwweDAyLDB4QjYsMHhFRSww
eDU0LDB4RTYsMHhGNSwweEJBLDB4QUEsMHhBMCwKKyAgICAweEI2LDB4RUUsMHg1NSwweEU2LDB4
N0YsMHhCRiwweEFBLDB4ODgsMHhCNiwweEVFLDB4NTUsMHhFNiwweEQ3LDB4RkYsMHhBQSwweDAw
LAorICAgIDB4QjYsMHhFRSwweDc1LDB4RTYsMHhENSwweEJGLDB4QUYsMHg4MCwweEI2LDB4RUUs
MHg3NSwweEU2LDB4NUQsMHhGQSwweEZBLDB4OEEsCisgICAgMHhCNiwweEVFLDB4NzUsMHhFRSww
eDVGLDB4QkEsMHhBQSwweDBBLDB4QjYsMHhGNiwweDc1LDB4RTYsMHhGNywweEFGLDB4OEEsMHgy
MCwKKyAgICAweDk2LDB4RUUsMHg3NSwweEVFLDB4RkYsMHg4OCwweDgwLDB4ODAsMHg5NiwweEVF
LDB4NzUsMHhFRSwweEZFLDB4QzgsMHgwOCwweDIwLAorICAgIDB4OTYsMHhFRSwweDc1LDB4RUUs
MHhCNywweDhBLDB4MjAsMHgyOCwweEI2LDB4RUUsMHg3NSwweEVFLDB4REQsMHhGQSwweEZGLDB4
REUsCisgICAgMHg5NiwweEVFLDB4NzUsMHhFRSwweEE4LDB4QUUsMHhGRSwweDJFLDB4NzYsMHhG
NiwweDk2LDB4RUUsMHg3RCwweDdGLDB4N0YsMHhGOSwKKyAgICAweEI2LDB4RjYsMHg5NiwweEVF
LDB4N0YsMHg3MiwweEMyLDB4ODYsMHhCNiwweEY2LDB4OTYsMHhFRSwweDc5LDB4QUEsMHgyQSww
eDAyLAorICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHhGRiwweDBCLDB4M0UsMHhBMCwweEQ2LDB4
RjYsMHg5NiwweEVFLDB4OUQsMHhGRiwweDA4LDB4MkEsCisgICAgMHhENiwweEY2LDB4OTYsMHhF
RSwweEZGLDB4QUEsMHhBQSwweDJBLDB4RDYsMHhGNiwweDk2LDB4RUUsMHhERiwweEY3LDB4QjMs
MHhCQSwKKyAgICAweEQ2LDB4RjYsMHg5NiwweEVFLDB4RjUsMHg1QiwweEZFLDB4Q0EsMHgzNCww
eEU2LDB4QUEsMHg5QiwweDYwLDB4NzAsMHg2MCwweDYwLAorICAgIDB4ODcsMHg3QSwweEE0LDB4
NjEsMHg1QywweEZDLDB4RkUsMHhGRSwweEU1LDB4NjksMHg4NCwweDYxLDB4RkYsMHg1MywweEY4
LDB4QUEsCisgICAgMHhDNSwweDY5LDB4NjQsMHg2MSwweDBBLDB4MkQsMHg4QSwweDBBLDB4NDgs
MHg3QSwweEM1LDB4NjksMHgyQiwweDhELDB4REQsMHg1NSwKKyAgICAweDA2LDB4NzIsMHhDNiww
eDY5LDB4QkMsMHhFRSwweDg4LDB4MDAsMHg4OCwweDgyLDB4MDYsMHg3MiwweDE1LDB4NTUsMHhE
NSwweEY1LAorICAgIDB4NEIsMHg5QiwweDA2LDB4NkEsMHgyRiwweEJELDB4RkQsMHhGRCwweEQz
LDB4REQsMHhFOSwweDgyLDB4MEEsMHgwQiwweDJELDB4QjUsCisgICAgMHg5NiwweEY2LDB4RjMs
MHhERCwweDAyLDB4MDIsMHgwMywweDBELDB4QjYsMHhGNiwweDk2LDB4RUUsMHhBOCwweEEwLDB4
QTIsMHhBQSwKKyAgICAweEQ2LDB4RjYsMHg5NiwweEVFLDB4RkUsMHhGRiwweEZGLDB4M0YsMHhE
NiwweEY2LDB4OTcsMHhFRSwweEVGLDB4QUYsMHhBQiwweEVBLAorICAgIDB4QjcsMHhGNiwweEI1
LDB4RUUsMHhBOCwweEFBLDB4QUEsMHhBQSwweEI2LDB4RjYsMHg5NiwweEVFLDB4RUUsMHhBMiww
eDIwLDB4ODgsCisgICAgMHhCNiwweEY2LDB4OTYsMHhFRSwweEVGLDB4MkEsMHhBQSwweDJBLDB4
RDcsMHhGNiwweDk2LDB4RUUsMHhFQiwweEJCLDB4QkEsMHhBQSwKKyAgICAweEI2LDB4RjYsMHg5
NiwweEVFLDB4M0MsMHhCQiwweEI4LDB4MDgsMHhCNiwweEY2LDB4OTYsMHhFRSwweDg4LDB4RTIs
MHhBOCwweDAwLAorICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHg4MCwweDAyLDB4MDAsMHhDMCww
eEI2LDB4RjYsMHhEOCwweEVFLDB4MDAsMHhBMiwweDA4LDB4QTAsCisgICAgMHhCNiwweEY2LDB4
RDYsMHhFRSwweEFBLDB4RTgsMHhGOCwweEI4LDB4RjcsMHhGNiwweEI2LDB4RUUsMHgzRiwweEJC
LDB4QkYsMHgyRiwKKyAgICAweEQ3LDB4RkUsMHhGNywweEY2LDB4NUQsMHg1NywweDVGLDB4REYs
MHhGNywweEZFLDB4RjcsMHhGNiwweEQ3LDB4RjcsMHg1RiwweERGLAorICAgIDB4MTcsMHhGRiww
eEY3LDB4RjYsMHg3RCwweEZELDB4RjUsMHhGOSwweEY2LDB4RkUsMHhGNywweEY2LDB4N0QsMHhG
NywweEZGLDB4REYsCisgICAgMHhGNywweEY2LDB4RDYsMHhGNiwweDJBLDB4MkEsMHgyMiwweDg4
LDB4RDcsMHhGRSwweEY3LDB4RjYsMHhGNSwweDU3LDB4RjUsMHg5NSwKKyAgICAweEY3LDB4RkUs
MHhENywweEY2LDB4RUIsMHg4QSwweEVBLDB4NUEsMHhCNiwweEY2LDB4RDMsMHhERCwweDAwLDB4
ODAsMHhFMCwweDcwLAorICAgIDB4MzUsMHhFRSwweDhCLDB4OUIsMHhBMCwweEU4LDB4N0EsMHg3
RSwweDZGLDB4QjQsMHg4NywweDdBLDB4NzgsMHg1RSwweDU3LDB4NTUsCisgICAgMHg4NywweDdB
LDB4NDcsMHg3QSwweDhBLDB4ODAsMHgwRSwweEE3LDB4QTcsMHg4MiwweDQ2LDB4NzIsMHhCRCww
eDZCLDB4NkEsMHhBQSwKKyAgICAweDg3LDB4N0EsMHgyNiwweDcyLDB4QzIsMHg1QSwweDZBLDB4
RTAsMHg4QiwweDlCLDB4MjYsMHg3MiwweDk1LDB4OTUsMHgzNSwweDNELAorICAgIDB4QjcsMHhG
NiwweDZFLDB4QjQsMHgyRCwweDJELDB4MkQsMHgyQiwweDE3LDB4RkYsMHhENywweEY2LDB4QUQs
MHg4RiwweEFELDB4RkIsCisgICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweEJCLDB4QUIsMHhBQiww
eEFBLDB4MTcsMHhGRiwweEY4LDB4RjYsMHhBQSwweEVGLDB4MkUsMHgyQSwKKyAgICAweDE4LDB4
RkYsMHhGNywweEY2LDB4QUIsMHhBQSwweEU4LDB4QTAsMHgxOCwweEZGLDB4RjcsMHhFRSwweDgy
LDB4ODIsMHhBMCwweDhBLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg2MCwweEEwLDB4RTAs
MHhFMCwweEY3LDB4RjYsMHhENywweEY2LDB4QUIsMHhBOCwweEEyLDB4QjgsCisgICAgMHhGNyww
eEY2LDB4RDcsMHhGNiwweEYzLDB4RDUsMHhGRiwweEZGLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg3
RiwweEJGLDB4QUQsMHhFRCwKKyAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4QkYsMHhBRSwweEVB
LDB4RkEsMHhGNywweEY2LDB4QjYsMHhFRSwweEVBLDB4QUIsMHhBRSwweEZGLAorICAgIDB4Rjcs
MHhGNiwweEQ3LDB4RjYsMHg3RiwweEFGLDB4QUQsMHhBRCwweEY3LDB4RjYsMHhENywweEY2LDB4
RDUsMHg3NSwweDVGLDB4N0YsCisgICAgMHhCNywweEY2LDB4RjcsMHhFRSwweEFBLDB4QUEsMHhC
QSwweEJFLDB4RDcsMHhGNiwweEY3LDB4RUUsMHgwMCwweEI4LDB4MjgsMHg4MiwKKyAgICAweEY3
LDB4RjYsMHhENywweEY2LDB4NjksMHhGRCwweDU1LDB4NzksMHhGNywweEY2LDB4QjYsMHhFRSww
eEZFLDB4QUEsMHhBRiwweEFGLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhENSwweERGLDB4
MUUsMHgzNywweDE3LDB4RkYsMHhENywweEY2LDB4QkQsMHhFOSwweEFBLDB4RkUsCisgICAgMHhG
NywweEY2LDB4OTYsMHhFRSwweEUwLDB4RjgsMHg2OCwweEZFLDB4QjYsMHhGNiwweDk2LDB4RUUs
MHhBQSwweEFBLDB4RkIsMHhGQiwKKyAgICAweDk2LDB4RUUsMHg1NSwweEVFLDB4MDAsMHg4MCww
eEMwLDB4ODAsMHg5NiwweEVFLDB4NTUsMHhFRSwweEMyLDB4QTIsMHhGMCwweDU4LAorICAgIDB4
NTUsMHhFNiwweDE0LDB4REUsMHhBMCwweEY4LDB4NUEsMHg1RiwweDM0LDB4RTYsMHhEMywweEQ1
LDB4RUMsMHhERSwweEZFLDB4REYsCisgICAgMHg1NSwweEU2LDB4RDMsMHhENSwweDdGLDB4QkQs
MHhCRiwweDBGLDB4QjcsMHhGNiwweDE0LDB4REUsMHhBRCwweDJCLDB4MjMsMHgwQSwKKyAgICAw
eEY3LDB4RjYsMHhCNywweEY2LDB4RDUsMHg1NSwweEJCLDB4QkUsMHhENywweEY2LDB4QjYsMHhG
NiwweEZGLDB4OEMsMHhCRSwweEVFLAorICAgIDB4RDcsMHhGNiwweDk2LDB4RUUsMHhFRiwweEY4
LDB4RkEsMHhGQSwweEI3LDB4RjYsMHg3NiwweEVFLDB4N0EsMHhBMCwweDIwLDB4MDIsCisgICAg
MHhCNiwweEY2LDB4MzUsMHhFNiwweERGLDB4RkEsMHgwMCwweDAwLDB4RDYsMHhGNiwweDU1LDB4
RTYsMHhENSwweDc1LDB4RTIsMHg4OCwKKyAgICAweEI2LDB4RUUsMHg3NSwweEVFLDB4NUYsMHhB
RCwweEZCLDB4QjgsMHhCNiwweEVFLDB4NTUsMHhFNiwweDVELDB4QUEsMHgwMCwweDAwLAorICAg
IDB4QjYsMHhFRSwweDc1LDB4RTYsMHhCRCwweEQ3LDB4RkEsMHhBQywweEQ3LDB4RjYsMHg3Niww
eEU2LDB4MEIsMHhBQiwweEJGLDB4REYsCisgICAgMHhGNywweEY2LDB4QjYsMHhFRSwweEFBLDB4
OEEsMHgyRiwweDM1LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhGNSwweEJGLDB4RkIsMHhCQSwKKyAg
ICAweEY3LDB4RjYsMHhCNywweEVFLDB4RkEsMHhGQSwweEE4LDB4QTIsMHhENywweEY2LDB4OTcs
MHhFRSwweDlFLDB4RUUsMHhBQSwweEEyLAorICAgIDB4RjgsMHhGNiwweEI3LDB4RUUsMHgyRiww
eEFELDB4M0YsMHhBQiwweEQ3LDB4RkUsMHgxOCwweEY3LDB4RkYsMHhGQSwweEVGLDB4QUUsCisg
ICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEFFLDB4M0IsMHhFRCwweDk1LDB4MTgsMHhGRiwweEY4
LDB4RjYsMHhGRiwweEFCLDB4QUUsMHhERSwKKyAgICAweDE4LDB4RjcsMHhGOCwweEY2LDB4Mzcs
MHhCNiwweDVFLDB4RjcsMHgzOCwweEZGLDB4RjcsMHhGNiwweDgyLDB4MjIsMHgyQiwweEFGLAor
ICAgIDB4MzgsMHhGRiwweEY3LDB4RjYsMHg1RSwweDYyLDB4NjIsMHg2OCwweEY3LDB4RjYsMHg5
NiwweEVFLDB4QkEsMHhGQSwweDdDLDB4N0UsCisgICAgMHhCNiwweEVFLDB4NTUsMHhFNiwweDdB
LDB4NzgsMHhGRSwweDdCLDB4RDcsMHhGNiwweDU0LDB4RTYsMHgwQiwweDBCLDB4MkQsMHgyRCwK
KyAgICAweEQ3LDB4RjYsMHgzNCwweERFLDB4QTAsMHhGOCwweEZBLDB4NzgsMHg5NiwweEVFLDB4
MzQsMHhFNiwweDhGLDB4QkYsMHhERCwweEY1LAorICAgIDB4NTUsMHhFNiwweDMxLDB4QzUsMHhF
MCwweDYwLDB4NjgsMHg3OCwweDMxLDB4QzUsMHhEMCwweEJDLDB4OUMsMHgxNiwweDNGLDB4MkYs
CisgICAgMHg1NSwweEU2LDB4NzIsMHhDRCwweDA5LDB4MkQsMHgyRCwweDJELDB4NTUsMHhFNiww
eEIyLDB4RDUsMHhGQywweEY4LDB4NTgsMHg3QSwKKyAgICAweDE0LDB4REUsMHhCMiwweEQ1LDB4
MkEsMHhBRSwweDM1LDB4MTUsMHg1NSwweEU2LDB4MTAsMHhCRCwweDc4LDB4NzgsMHg3QSwweDc4
LAorICAgIDB4MTQsMHhERSwweEYwLDB4QkMsMHgyRCwweDJELDB4QkQsMHhGNSwweEI2LDB4RjYs
MHg5MiwweENELDB4MjIsMHgwQSwweEFGLDB4QkQsCisgICAgMHg5NiwweEVFLDB4NTUsMHhFRSww
eEY4LDB4RTIsMHhGMiwweEZGLDB4OTUsMHhFRSwweDU1LDB4RTYsMHhFQiwweEZGLDB4RjcsMHg1
NSwKKyAgICAweDk1LDB4RUUsMHg1NSwweEU2LDB4NTcsMHg3QiwweEZGLDB4MkYsMHg5NiwweEVF
LDB4MzQsMHhFNiwweDVELDB4OEUsMHhBRSwweEJFLAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUs
MHg1NiwweERFLDB4NkEsMHg3NSwweEQ2LDB4RjYsMHhCNiwweEVFLDB4NUQsMHg3NSwweDZGLDB4
RTUsCisgICAgMHhGNiwweEY2LDB4OTYsMHhFRSwweERELDB4RjUsMHg3RiwweDdFLDB4RDYsMHhG
NiwweDk2LDB4RUUsMHhFQiwweEZCLDB4QkEsMHg3QiwKKyAgICAweDk2LDB4RjYsMHhCNiwweEVF
LDB4N0YsMHg3NywweDlGLDB4NzUsMHhENSwweEY2LDB4OTYsMHhFRSwweDdBLDB4QkIsMHhFRSww
eEJBLAorICAgIDB4RDcsMHhGNiwweDk2LDB4RUUsMHg3RSwweEZFLDB4M0EsMHgyQSwweDk2LDB4
RjYsMHhENiwweEVFLDB4RUEsMHhCQiwweEJCLDB4QkYsCisgICAgMHhCNiwweEVFLDB4OTYsMHhF
RSwweEIwLDB4ODAsMHg4OCwweEI4LDB4QjYsMHhFRSwweDk2LDB4RUUsMHgyQSwweDJFLDB4MkEs
MHgwMiwKKyAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4QkYsMHhGQSwweEZBLDB4RUIsMHg5NSww
eEY2LDB4RDYsMHhFRSwweEFBLDB4RUYsMHhCRiwweEFGLAorICAgIDB4QjYsMHhFRSwweDc1LDB4
RUUsMHhGQSwweEY4LDB4RTAsMHhFMCwweDk2LDB4RUUsMHg3NSwweEVFLDB4MDAsMHgwRSwweDBF
LDB4QTIsCisgICAgMHg5NiwweEVFLDB4NzUsMHhFRSwweEE4LDB4QUUsMHgzMiwweDI4LDB4OTYs
MHhGNiwweDk1LDB4RUUsMHhENywweEZGLDB4RkYsMHhERiwKKyAgICAweEI2LDB4RkUsMHg5Niww
eEVFLDB4NTcsMHg1NywweDVGLDB4RjcsMHhCNiwweEY2LDB4NzUsMHhFRSwweEU2LDB4MkUsMHhB
QiwweDJBLAorICAgIDB4RDYsMHhGNiwweDk2LDB4RUUsMHhGRiwweEJGLDB4QUIsMHhBQiwweEQ3
LDB4RjYsMHhCNiwweEY2LDB4RkQsMHhENywweERELDB4MkYsCisgICAgMHhENywweEY2LDB4QjYs
MHhFRSwweDdGLDB4QUUsMHhDQiwweEE4LDB4QjYsMHhGNiwweEQ3LDB4RUUsMHg4QSwweEFFLDB4
RUUsMHhCRSwKKyAgICAweEI2LDB4RjYsMHhENiwweEVFLDB4QUEsMHgyRSwweEE5LDB4RkYsMHhE
NywweEY2LDB4QjYsMHhGNiwweDc1LDB4QkQsMHgxRCwweEFCLAorICAgIDB4RDcsMHhGNiwweEI2
LDB4RjYsMHg2QSwweEUyLDB4RTgsMHhCQSwweDc2LDB4RjYsMHg4QSwweDlCLDB4NjAsMHg2MCww
eEUwLDB4RTAsCisgICAgMHhBOCwweDgyLDB4QTQsMHg2MSwweEZFLDB4RkUsMHg1QywweDdDLDB4
MjYsMHg3QSwweEM1LDB4NjksMHg3QiwweERBLDB4REUsMHhFMywKKyAgICAweDA2LDB4NzIsMHhB
NSwweDY5LDB4RDcsMHhGNSwweEZFLDB4NjIsMHhFNiwweDcxLDB4ODQsMHg2MSwweDJGLDB4QUYs
MHhBRCwweEFELAorICAgIDB4MjcsMHg3QSwweEM1LDB4NjksMHhCQSwweEJCLDB4QUQsMHgzRCww
eDI3LDB4NzIsMHhFNiwweDY5LDB4M0IsMHhCRiwweDc0LDB4NUEsCisgICAgMHg4NywweDdBLDB4
RTYsMHg2OSwweDBBLDB4QUEsMHhBRiwweEY3LDB4MkQsMHhBQywweDY3LDB4N0EsMHgyRiwweEJE
LDB4RkQsMHhGNSwKKyAgICAweDM1LDB4RUUsMHg4QiwweDlCLDB4MDIsMHgwMywweDJCLDB4MkQs
MHhCNiwweEY2LDB4NzYsMHhGNiwweEFBLDB4OEEsMHhBQSwweDgzLAorICAgIDB4QjYsMHhGNiww
eDk2LDB4RUUsMHhBOCwweEJFLDB4MjMsMHhBMiwweEI2LDB4RjYsMHg5NiwweEVFLDB4MDIsMHg4
MCwweDgyLDB4QTAsCisgICAgMHhENiwweEY2LDB4QjYsMHhGNiwweEQ1LDB4RkIsMHg1QiwweEI1
LDB4QjYsMHhGNiwweEQ2LDB4RUUsMHgyOCwweDgwLDB4MDgsMHgwMiwKKyAgICAweEI2LDB4RjYs
MHhCNywweEVFLDB4OEEsMHhBOCwweDAwLDB4MkEsMHg5NiwweEY2LDB4RDcsMHhFRSwweEZBLDB4
RUUsMHhBQiwweEVGLAorICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHgwOCwweDAyLDB4MjAsMHhB
OCwweEI2LDB4RjYsMHg5NiwweEVFLDB4MDIsMHgwMCwweDAyLDB4RTgsCisgICAgMHhENywweEY2
LDB4OTYsMHhFRSwweEFFLDB4QUUsMHhBRiwweEJCLDB4RDcsMHhGNiwweEI2LDB4RjYsMHhERSww
eERFLDB4QjMsMHgyQiwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4QjQsMHhBMiwweDhCLDB4
RUEsMHhENywweEY2LDB4QjYsMHhFRSwweDBBLDB4MEIsMHgyQiwweDNGLAorICAgIDB4MTcsMHhG
RiwweEQ3LDB4RjYsMHhGRiwweEJELDB4QkUsMHhBQiwweDE3LDB4RkYsMHhGNywweEY2LDB4NUQs
MHg1NSwweDVGLDB4NUYsCisgICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweERELDB4RjksMHhDRiww
eDZELDB4MTcsMHhGRiwweEY3LDB4RjYsMHg3RCwweDc3LDB4RDUsMHg3NSwKKyAgICAweEQ2LDB4
RkUsMHhGNywweEY2LDB4NUQsMHg1NSwweEQ3LDB4REYsMHgxOCwweEZGLDB4RDcsMHhGNiwweEVB
LDB4RUYsMHhGRiwweDdGLAorICAgIDB4RjYsMHhGRSwweDE0LDB4RTYsMHg4MCwweEUwLDB4Rjgs
MHg3QSwweDM0LDB4RTYsMHhBQiwweDlCLDB4ODAsMHhBMCwweEU4LDB4N0EsCisgICAgMHhBRiww
eEJDLDB4NDYsMHg3MiwweDY4LDB4N0MsMHg1RSwweDU3LDB4NjcsMHg4MiwweDQ2LDB4NzIsMHhC
QiwweDJCLDB4MzMsMHgwQSwKKyAgICAweDg3LDB4ODIsMHg0NiwweDdBLDB4M0QsMHgzRiwweDhD
LDB4M0EsMHhDNywweDhBLDB4ODcsMHg4MiwweEY1LDB4Q0UsMHhBRCwweDNELAorICAgIDB4RTgs
MHg4QSwweDY2LDB4N0EsMHg3RSwweEZCLDB4RjAsMHg3MCwweDhFLDB4QkMsMHg0NiwweDdBLDB4
QjUsMHhCNSwweDM1LDB4MjUsCisgICAgMHhENywweEZFLDB4MzAsMHhDRCwweDJELDB4MEQsMHgw
OSwweDJCLDB4RjcsMHhGRSwweDE4LDB4RjcsMHhFMCwweEEwLDB4ODgsMHhBMCwKKyAgICAweDE3
LDB4RkYsMHhGNywweEY2LDB4QkUsMHhBQSwweDBBLDB4MEYsMHgxNywweEZGLDB4RjcsMHhGNiww
eDJBLDB4MkEsMHhCRSwweDNGLAorICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHg4QSwweDJBLDB4
QUIsMHhBRSwweDE4LDB4RkYsMHhGNywweEY2LDB4RTMsMHhGQSwweEY4LDB4QjgsCisgICAgMHhG
NywweEY2LDB4RDcsMHhGNiwweEEwLDB4QkMsMHgyQSwweDgwLDB4RjcsMHhGNiwweEQ3LDB4RjYs
MHhBQSwweEFFLDB4MjAsMHg4OCwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4QkEsMHhFQSww
eEFFLDB4RkEsMHhGNywweEY2LDB4RDcsMHhGNiwweEY5LDB4RkYsMHg1RCwweDU3LAorICAgIDB4
RDcsMHhGNiwweEI3LDB4RUUsMHhBMCwweDJBLDB4ODMsMHg4OCwweEQ3LDB4RjYsMHhCNywweEVF
LDB4MkEsMHhBMiwweDgyLDB4QUEsCisgICAgMHhENywweEY2LDB4RDcsMHhFRSwweDAwLDB4OEEs
MHgyMCwweDIyLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg1RiwweEY1LDB4QUQsMHhCRCwKKyAgICAw
eEY3LDB4RjYsMHhENywweEY2LDB4QkQsMHg1NSwweDc3LDB4RTUsMHhENywweEY2LDB4RjcsMHhF
RSwweDBBLDB4ODIsMHgwMCwweDIyLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg3RiwweDVE
LDB4RkQsMHgyQiwweDE3LDB4RkYsMHhENywweEY2LDB4NzUsMHhENywweEY3LDB4M0YsCisgICAg
MHgxNywweEZGLDB4RDcsMHhGNiwweDJELDB4QUYsMHg4QSwweDcwLDB4RjcsMHhGNiwweEI2LDB4
RUUsMHhFMCwweEYwLDB4NTQsMHg1RiwKKyAgICAweDk2LDB4RjYsMHhENiwweEVFLDB4QkIsMHhB
RiwweEJGLDB4MkEsMHhCNiwweEY2LDB4NzYsMHhFRSwweEEyLDB4RkEsMHhERSwweERFLAorICAg
IDB4OTYsMHhFRSwweDU1LDB4RUUsMHhBOCwweDZBLDB4NzgsMHg3OCwweDc1LDB4RUUsMHgxNCww
eERFLDB4RjgsMHg3OCwweDVBLDB4NUYsCisgICAgMHgzNSwweEU2LDB4QjIsMHhENSwweEEyLDB4
RkEsMHg3RSwweDVGLDB4NzUsMHhFRSwweEIyLDB4RDUsMHhGNywweEQ1LDB4QjUsMHgzNSwKKyAg
ICAweEI2LDB4RjYsMHgxNCwweERFLDB4QkQsMHgyRCwweDJBLDB4MDIsMHhENywweEY2LDB4OTYs
MHhFRSwweDlELDB4RkUsMHhBQSwweEFBLAorICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHgwQSww
eDhCLDB4MkIsMHg4MCwweEQ3LDB4RjYsMHhCNywweEVFLDB4RTAsMHg4MCwweEEyLDB4QTAsCisg
ICAgMHhENywweEY2LDB4OTYsMHhFRSwweDZBLDB4QTgsMHhBOCwweDIyLDB4RDcsMHhGNiwweDk2
LDB4RUUsMHhBQiwweEY5LDB4QkEsMHhFQSwKKyAgICAweEQ2LDB4RjYsMHg5NiwweEVFLDB4QUUs
MHhBRSwweEE3LDB4RjcsMHhENiwweEY2LDB4QjYsMHhFRSwweEFBLDB4RUIsMHhFOSwweEU1LAor
ICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHg3RSwweERFLDB4RDAsMHg1RSwweEQ3LDB4RjYsMHhC
NiwweEVFLDB4MkQsMHgwRiwweEJGLDB4NTcsCisgICAgMHhGNywweEY2LDB4OTYsMHhFRSwweDdF
LDB4RkEsMHgyQSwweDJCLDB4RjcsMHhGNiwweDk2LDB4RUUsMHg1NSwweDU3LDB4N0EsMHg4MCwK
KyAgICAweEY3LDB4RjYsMHg5NiwweEVFLDB4MjcsMHhCRCwweEU1LDB4RkYsMHhGNywweEY2LDB4
RDcsMHhGNiwweEYyLDB4RTIsMHgyNSwweDBELAorICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhG
QiwweEZGLDB4N0UsMHhGQSwweEY3LDB4RjYsMHhCNywweEVFLDB4QjYsMHhBRiwweEZBLDB4QUEs
CisgICAgMHhGOCwweEY2LDB4RDcsMHhGNiwweEU1LDB4Q0QsMHgyQiwweEMyLDB4RjgsMHhGNiww
eEQ3LDB4RUUsMHhEQSwweEJCLDB4QkYsMHhBRSwKKyAgICAweEY4LDB4RjYsMHhENywweEVFLDB4
M0IsMHhGMiwweEY4LDB4NTgsMHgxOCwweEY3LDB4RDcsMHhGNiwweEFBLDB4QUIsMHhBRiwweEFE
LAorICAgIDB4MTcsMHhGNywweEY4LDB4RjYsMHhGNiwweDdBLDB4RkEsMHg1RCwweDE4LDB4Rjcs
MHhENywweEY2LDB4MkEsMHhCQSwweEVFLDB4RDUsCisgICAgMHgzOCwweEZGLDB4RjcsMHhGNiww
eEVBLDB4RkEsMHhGNSwweDc1LDB4RjcsMHhGNiwweDk2LDB4RUUsMHg3QSwweDc4LDB4NzgsMHg3
OCwKKyAgICAweDk2LDB4RUUsMHg1NSwweEU2LDB4NjIsMHhGQSwweEZBLDB4N0EsMHhENywweEY2
LDB4MzQsMHhERSwweDJGLDB4QjcsMHhCNSwweEI1LAorICAgIDB4QjYsMHhFRSwweDE0LDB4RTYs
MHhGMCwweEUwLDB4NjAsMHg0MCwweDU1LDB4RTYsMHgxNCwweERFLDB4MEQsMHhBNywweDM1LDB4
RkQsCisgICAgMHg1NSwweEU2LDB4NTEsMHhDNSwweDc4LDB4NTgsMHg3OCwweDdBLDB4MTAsMHhD
NSwweEYwLDB4QkMsMHgyNSwweDJFLDB4MzYsMHgxNCwKKyAgICAweDM0LDB4RTYsMHg3MSwweENE
LDB4MkQsMHgyOSwweEFELDB4MkQsMHgzNCwweEU2LDB4OTIsMHhDRCwweEUwLDB4RTgsMHhFMiww
eDYwLAorICAgIDB4RjMsMHhERCwweDkyLDB4Q0QsMHgyRiwweDJFLDB4QjUsMHhCRCwweEY0LDB4
REQsMHgzMCwweEM1LDB4NzAsMHg2MCwweDQwLDB4QzAsCisgICAgMHgxMCwweEM1LDB4NkQsMHhB
QywweDJFLDB4OUYsMHhERiwweEJFLDB4NTUsMHhFNiwweDMxLDB4QzUsMHgyRiwweDBELDB4Mjks
MHgwQiwKKyAgICAweDk2LDB4RUUsMHg1NSwweEU2LDB4RkYsMHg2QiwweDdBLDB4RTAsMHg3NSww
eEVFLDB4NTUsMHhFNiwweDU3LDB4NTUsMHhCNywweEU2LAorICAgIDB4NzUsMHhFRSwweDU1LDB4
RTYsMHgwOSwweEZELDB4MjcsMHgzNywweDk2LDB4RUUsMHg3NSwweEVFLDB4NUQsMHgzRiwweEJE
LDB4RjUsCisgICAgMHhENywweEY2LDB4OTYsMHhFRSwweEVGLDB4QkUsMHhBQiwweEVGLDB4RDYs
MHhGNiwweEI2LDB4RUUsMHhBRiwweEJGLDB4RkQsMHhENywKKyAgICAweEQ2LDB4RjYsMHhCNiww
eEVFLDB4NUYsMHg1NywweDU3LDB4N0IsMHhENiwweEY2LDB4QjYsMHhFRSwweERELDB4RjcsMHg2
RCwweEZELAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhGRCwweDc1LDB4N0QsMHhGMywweEQ2
LDB4RjYsMHhCNiwweEVFLDB4QkYsMHhFQSwweEJELDB4RkYsCisgICAgMHhENywweEY2LDB4QjYs
MHhFRSwweEQxLDB4OUYsMHg1RiwweDdGLDB4RDcsMHhGNiwweEI2LDB4RUUsMHhERiwweEY3LDB4
REQsMHhGNSwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4NTcsMHhFRCwweEZGLDB4RTQsMHhE
NywweEY2LDB4QjYsMHhFRSwweDc3LDB4N0YsMHhGNSwweEZELAorICAgIDB4RDcsMHhGNiwweEI2
LDB4RUUsMHg3NSwweEQ1LDB4RjcsMHhGRiwweEQ2LDB4RjYsMHg5NiwweEVFLDB4N0EsMHhFQSww
eEVBLDB4RUEsCisgICAgMHhCNiwweEVFLDB4OTYsMHhFRSwweDY4LDB4NzYsMHg1RSwweDc2LDB4
QjYsMHhGNiwweDc1LDB4RUUsMHhGRiwweEFGLDB4QTcsMHhCRiwKKyAgICAweDc1LDB4RjYsMHg5
NSwweEVFLDB4N0QsMHg3NSwweDVELDB4NTcsMHg3NiwweEY2LDB4OTUsMHhFRSwweDU1LDB4NzUs
MHg1RiwweDdELAorICAgIDB4QjYsMHhGNiwweDk1LDB4RUUsMHhBRSwweEY2LDB4M0IsMHhGQSww
eDk2LDB4RjYsMHhCNiwweEVFLDB4RkYsMHhGRiwweEJCLDB4QkIsCisgICAgMHhCNiwweEY2LDB4
RDcsMHhFRSwweEE4LDB4QUEsMHhBQSwweEI4LDB4RDcsMHhGNiwweEI2LDB4RUUsMHgyQiwweDBB
LDB4QUEsMHg4MiwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4RjgsMHhFMiwweEVBLDB4OTgs
MHhGNywweEY2LDB4QjYsMHhFRSwweDc3LDB4QUYsMHhBQiwweEFGLAorICAgIDB4RDcsMHhGNiww
eEI2LDB4RUUsMHhBRiwweEFBLDB4ODgsMHgyQSwweEQ3LDB4RjYsMHhCNiwweEY2LDB4RTcsMHhC
NSwweERFLDB4QUUsCisgICAgMHhENywweEY2LDB4OTUsMHhGNiwweEVBLDB4RkEsMHhGQSwweEU4
LDB4NzUsMHhFRSwweDI5LDB4OTMsMHhFMCwweEUwLDB4NzgsMHg3OCwKKyAgICAweEM4LDB4OEEs
MHhBNSwweDYxLDB4N0MsMHhERSwweDU2LDB4NTcsMHgyNiwweDdBLDB4RTUsMHg2OSwweEVGLDB4
OEQsMHhBRCwweDJELAorICAgIDB4MjYsMHg3QSwweEM1LDB4NjksMHg3QiwweEZDLDB4ODAsMHg4
MiwweEM1LDB4NjksMHg2NCwweDYxLDB4MkEsMHhGOCwweEZDLDB4QjAsCisgICAgMHgwNiwweDcy
LDB4ODQsMHg2MSwweDJCLDB4MkYsMHhCRiwweERGLDB4MjcsMHg3MiwweEM1LDB4NjksMHhFMiww
eEZBLDB4RUEsMHg3NSwKKyAgICAweDI2LDB4NzIsMHhDNSwweDY5LDB4MkMsMHhCQSwweEFGLDB4
QjYsMHhFOCwweDgyLDB4RTUsMHg2OSwweDJGLDB4MkYsMHhCRCwweEY1LAorICAgIDB4RDIsMHhE
RCwweDA4LDB4OEIsMHgyRCwweEI1LDB4RjUsMHhENSwweDk1LDB4RjYsMHhFRSwweEJDLDB4MDAs
MHgwMiwweDBCLDB4MjksCisgICAgMHhCNiwweEY2LDB4OTYsMHhFRSwweEEwLDB4ODgsMHgwMCww
eDAwLDB4RDUsMHhGNiwweEI2LDB4RjYsMHg1RCwweDVELDB4RjcsMHhCRiwKKyAgICAweEQ2LDB4
RjYsMHhCNiwweEY2LDB4RUIsMHhFNywweEVGLDB4RkEsMHhENiwweEY2LDB4QjYsMHhGNiwweERE
LDB4RjcsMHhEQSwweEFBLAorICAgIDB4RjYsMHhGNiwweEI2LDB4RjYsMHg1NSwweDU1LDB4NUYs
MHg1RiwweEI2LDB4RjYsMHhCNywweEVFLDB4MDgsMHhBMCwweDJBLDB4QTIsCisgICAgMHhENyww
eEY2LDB4OTYsMHhFRSwweEZFLDB4RkEsMHhCRSwweEFBLDB4QjYsMHhGNiwweEQ3LDB4RUUsMHgw
MiwweDgyLDB4ODAsMHgwMCwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEY2LDB4NTksMHg1NywweEY1
LDB4REQsMHhENywweEY2LDB4QjYsMHhGNiwweEFGLDB4OEQsMHgzNywweDlELAorICAgIDB4RDcs
MHhGNiwweEI2LDB4RUUsMHgyMiwweDI4LDB4NjAsMHhFMiwweEY3LDB4RjYsMHhCNiwweEVFLDB4
QkYsMHgyQiwweEJCLDB4M0YsCisgICAgMHgxNywweEZGLDB4RDYsMHhGNiwweEFCLDB4RUYsMHhG
RiwweERFLDB4RjcsMHhGNiwweEQ2LDB4RjYsMHg4MCwweDIyLDB4MDIsMHhBQSwKKyAgICAweDE3
LDB4RkYsMHhGNywweEY2LDB4NzUsMHg1RCwweDVELDB4N0YsMHgxNywweEZGLDB4RjcsMHhGNiww
eEI1LDB4REQsMHhGNSwweDc1LAorICAgIDB4RjcsMHhGRSwweEQ2LDB4RjYsMHhFQiwweEE4LDB4
QUEsMHhCQywweEY3LDB4RkUsMHgzNCwweEU2LDB4QTAsMHhBMCwweEU4LDB4N0EsCisgICAgMHg3
NSwweEVFLDB4NEQsMHhCNCwweEEwLDB4RTAsMHhGOCwweDdFLDB4RUYsMHhDNCwweDY2LDB4N0Es
MHg2MCwweDc4LDB4NUUsMHg1NywKKyAgICAweDY3LDB4N0EsMHgwNSwweDZBLDB4QkUsMHg4Niww
eDhBLDB4MDIsMHg2NywweDdBLDB4MDYsMHg3MiwweDI4LDB4MjAsMHgyQSwweERFLAorICAgIDB4
QTgsMHg4QSwweDQ2LDB4N0EsMHhCRiwweDhELDB4OEEsMHg4MywweEM4LDB4OEEsMHg2NywweDgy
LDB4MjcsMHhBNSwweEFFLDB4OEIsCisgICAgMHhDOCwweDhBLDB4NjYsMHg3QSwweDgwLDB4QjAs
MHg5QSwweEYyLDB4MTEsMHhDRCwweDY3LDB4N0EsMHgzNSwweDM1LDB4MjUsMHgyRCwKKyAgICAw
eEY3LDB4RkUsMHhEMywweERELDB4MDksMHgyOSwweDBCLDB4MEIsMHgxNywweEZGLDB4RjgsMHhG
NiwweEFFLDB4QUEsMHhCQSwweDcyLAorICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHhBQSwweEJB
LDB4QUEsMHhBQSwweEY3LDB4RkUsMHgxOCwweEY3LDB4N0IsMHg3RSwweDc5LDB4NUYsCisgICAg
MHgzOCwweEZGLDB4MTcsMHhGNywweDc1LDB4RjcsMHhGRiwweERCLDB4MTcsMHhGRiwweEY3LDB4
RjYsMHhBMCwweEVCLDB4RUUsMHhFQiwKKyAgICAweEY3LDB4RjYsMHhGNywweEY2LDB4MDAsMHgw
MCwweDAwLDB4MDAsMHhGNywweEY2LDB4RDcsMHhGNiwweEFBLDB4QUEsMHhBMiwweDVBLAorICAg
IDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBQiwweDhCLDB4N0QsMHg1RiwweEY3LDB4RjYsMHhENyww
eEY2LDB4NTcsMHg3RiwweDdBLDB4NUIsCisgICAgMHhENywweEY2LDB4RjYsMHhFRSwweDAwLDB4
QTIsMHhBMiwweEE4LDB4RDcsMHhGNiwweEQ2LDB4RUUsMHhBQSwweDIwLDB4MEEsMHgwOCwKKyAg
ICAweEY3LDB4RjYsMHhCNiwweEVFLDB4QkEsMHg3QSwweEJBLDB4QkUsMHhGNywweEY2LDB4RDcs
MHhGNiwweDY1LDB4N0YsMHg3OSwweEFBLAorICAgIDB4RDcsMHhGNiwweEY3LDB4RUUsMHhBMCww
eDAwLDB4ODAsMHhBMCwweEY2LDB4RjYsMHhENywweEY2LDB4REQsMHhGNSwweDU3LDB4QUYsCisg
ICAgMHhGNywweEY2LDB4QjYsMHhFRSwweDAzLDB4MEYsMHgyMSwweDAyLDB4MTgsMHhGRiwweEY3
LDB4RjYsMHhBNSwweDg5LDB4ODMsMHhDMCwKKyAgICAweDE4LDB4RjcsMHhENywweEY2LDB4Nzgs
MHg1RSwweDVGLDB4NTcsMHg5NSwweEY2LDB4RDYsMHhFRSwweEZELDB4QUIsMHhBRiwweEJCLAor
ICAgIDB4NzYsMHhGNiwweEI2LDB4RUUsMHhGRCwweEFELDB4QkYsMHgyRSwweDk2LDB4RjYsMHg1
NSwweEU2LDB4QUEsMHhGQSwweEFBLDB4N0IsCisgICAgMHg3NSwweEVFLDB4MTQsMHhERSwweEE4
LDB4RjgsMHhGRSwweDdGLDB4MzQsMHhFNiwweDkyLDB4Q0QsMHhFOCwweEU4LDB4RjgsMHg3RSwK
KyAgICAweDE0LDB4REUsMHg1MSwweEM1LDB4RkUsMHhGRSwweEI3LDB4MjUsMHg5NiwweEVFLDB4
OTIsMHhENSwweDJELDB4MEIsMHgwMiwweDAwLAorICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHg5
NSwweEJGLDB4QkYsMHg4OCwweEQ3LDB4RjYsMHhCNiwweEVFLDB4MzMsMHg4MiwweEEwLDB4ODAs
CisgICAgMHhENywweEY2LDB4QjYsMHhFRSwweDgwLDB4QjAsMHgzRSwweEFDLDB4RDcsMHhGNiww
eEI2LDB4RUUsMHgwQiwweDhFLDB4QTgsMHhBMiwKKyAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4
QTIsMHhBMiwweDA4LDB4QkEsMHhENywweEY2LDB4QjYsMHhFRSwweEVCLDB4RUEsMHhBQSwweEVB
LAorICAgIDB4RDcsMHhGNiwweDk2LDB4RUUsMHhGRiwweEZBLDB4RUEsMHhCQSwweEQ3LDB4RjYs
MHg5NiwweEVFLDB4QTcsMHhGRiwweEVBLDB4QUEsCisgICAgMHg5NywweEZFLDB4QjYsMHhFRSww
eEQ1LDB4NUYsMHg3NSwweDVGLDB4OTYsMHhGNiwweEI2LDB4RUUsMHg3NywweDU3LDB4RDUsMHhG
NSwKKyAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4MkUsMHgzRiwweEJELDB4QkYsMHhGNywweEY2
LDB4QjcsMHhFRSwweDAyLDB4MDIsMHgyRiwweDJELAorICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYs
MHg1RiwweEZFLDB4QUEsMHgyQSwweDE3LDB4RjcsMHhCOCwweEY2LDB4QUIsMHhBQSwweEFBLDB4
MDIsCisgICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweDZFLDB4NkYsMHhDQiwweDAyLDB4MTgsMHhG
NywweEQ3LDB4RjYsMHhGRiwweEZCLDB4RjgsMHhGOCwKKyAgICAweEY3LDB4RjYsMHhENywweEVF
LDB4QTIsMHhGQSwweDY4LDB4QTIsMHhGOCwweEY2LDB4RDcsMHhFRSwweDJDLDB4MkEsMHgwMyww
eDJBLAorICAgIDB4MTgsMHhGNywweEI3LDB4RjYsMHhEQSwweEY4LDB4RUUsMHhFQSwweEY4LDB4
RjYsMHhENywweEY2LDB4OEQsMHg4OCwweEUzLDB4REIsCisgICAgMHhGOCwweEY2LDB4RDcsMHhG
NiwweDAwLDB4MjEsMHhBQywweEZFLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhGRCwweEY4LDB4Nzgs
MHg1QSwKKyAgICAweEY4LDB4RjYsMHhCNywweEVFLDB4QUEsMHhCRSwweEZGLDB4RjYsMHhENyww
eEY2LDB4OTYsMHhFRSwweEUwLDB4NjgsMHhFOCwweEFBLAorICAgIDB4OTYsMHhFRSwweDM0LDB4
REUsMHhCQSwweDZFLDB4NzgsMHg3OCwweDk2LDB4RUUsMHgxMywweERFLDB4M0QsMHgyNywweEI1
LDB4QjUsCisgICAgMHhENywweEY2LDB4NTQsMHhFNiwweDYyLDB4RTIsMHhFMCwweEFBLDB4NzUs
MHhFRSwweDE0LDB4REUsMHg3RCwweEZFLDB4QUEsMHhBQywKKyAgICAweDU1LDB4RTYsMHg3MSww
eENELDB4N0EsMHg1OCwweDc4LDB4NzgsMHg1MSwweEM1LDB4RUYsMHhCQywweDk2LDB4QjgsMHgy
MCwweDAwLAorICAgIDB4MTMsMHhERSwweDUxLDB4QzUsMHgyOSwweDI5LDB4QUQsMHhCRCwweDU1
LDB4RTYsMHhCMiwweEQ1LDB4N0EsMHhGMiwweDdBLDB4NkIsCisgICAgMHhCMiwweEQ1LDB4NzIs
MHhDRCwweDJFLDB4QUYsMHhCRiwweDJGLDB4RjMsMHhERCwweDcxLDB4Q0QsMHg2MiwweDQzLDB4
RTIsMHg4MiwKKyAgICAweEQzLDB4RDUsMHhBRSwweEI0LDB4RDUsMHgzNywweDJGLDB4MkUsMHhE
NiwweEY2LDB4QjIsMHhENSwweEFELDB4MkIsMHgwQiwweDJCLAorICAgIDB4QjYsMHhGNiwweDU1
LDB4RTYsMHhGQSwweEY4LDB4NjAsMHhFMCwweDc2LDB4RTYsMHgzNSwweEU2LDB4RkUsMHhGNiww
eEQ3LDB4REUsCisgICAgMHg1NSwweEVFLDB4MzQsMHhFNiwweDA4LDB4MkMsMHg1RSwweDU1LDB4
OTYsMHhFRSwweDM0LDB4RTYsMHhBQiwweDJCLDB4QUYsMHhBRCwKKyAgICAweEQ2LDB4RjYsMHhC
NiwweEVFLDB4RDUsMHhBNSwweEZELDB4OTUsMHhENiwweEY2LDB4QjYsMHhFRSwweDdELDB4N0Us
MHg1RSwweDc1LAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHg3MiwweDVCLDB4OTUsMHhBOSww
eEQ2LDB4RjYsMHhCNiwweEVFLDB4REYsMHhCNiwweEJFLDB4NzcsCisgICAgMHhENiwweEY2LDB4
QjYsMHhFRSwweDRELDB4OEIsMHhBQiwweEZELDB4RDYsMHhGNiwweDk2LDB4RUUsMHhBRSwweDhB
LDB4ODIsMHg4RiwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4RkIsMHhFOSwweEI1LDB4NUIs
MHhENiwweEY2LDB4QjYsMHhFRSwweEZELDB4QUUsMHgzOSwweDc3LAorICAgIDB4RDYsMHhGNiww
eEI2LDB4RUUsMHhCRSwweDNGLDB4QkEsMHhBQSwweEQ2LDB4RjYsMHhCNiwweEVFLDB4QUYsMHhF
NywweEZGLDB4RDYsCisgICAgMHhENywweEY2LDB4QjYsMHhFRSwweEVFLDB4RUIsMHg3QiwweEVG
LDB4RDYsMHhGNiwweEI2LDB4RUUsMHhGQiwweEZGLDB4N0EsMHhGRSwKKyAgICAweEQ2LDB4RUUs
MHg3NSwweEVFLDB4RkUsMHhERSwweEZGLDB4RjgsMHhCNiwweEY2LDB4NzUsMHhFRSwweEZBLDB4
QkEsMHhFQSwweEZBLAorICAgIDB4QjUsMHhGNiwweDU1LDB4RTYsMHhBQSwweEEyLDB4QUEsMHhF
QSwweEI2LDB4RjYsMHg5NSwweEVFLDB4REYsMHhGRCwweEJCLDB4NkEsCisgICAgMHhCNSwweEVF
LDB4OTUsMHhFRSwweEFGLDB4RkIsMHhGRiwweEY5LDB4QjcsMHhGNiwweDk2LDB4RUUsMHhGOSww
eERGLDB4RDcsMHhBRCwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4QUYsMHg4RCwweEJELDB4
QjUsMHhENywweEY2LDB4QjYsMHhFRSwweEEyLDB4OEUsMHgwQSwweDAyLAorICAgIDB4RDcsMHhG
NiwweEY3LDB4RUUsMHgwMCwweDIwLDB4ODgsMHg4OCwweEQ2LDB4RjYsMHhCNywweEU2LDB4MEEs
MHgyMiwweDIwLDB4ODIsCisgICAgMHhGNywweEY2LDB4QjYsMHhFRSwweEZFLDB4QkUsMHhBQSww
eEVBLDB4RDYsMHhGNiwweEI3LDB4RjYsMHhBRSwweEFBLDB4MDAsMHhBOCwKKyAgICAweEQ3LDB4
RkUsMHgzNCwweEVFLDB4RTAsMHhDOCwweDYwLDB4NkEsMHhGMiwweERELDB4NDYsMHg3MiwweDc4
LDB4N0MsMHg1RSwweDVFLAorICAgIDB4NDcsMHg3QSwweDg1LDB4NjEsMHhGQSwweEUyLDB4RTgs
MHhGMCwweDI2LDB4NzIsMHg0MywweDU5LDB4MEEsMHhBQiwweEFGLDB4OTUsCisgICAgMHgyNiww
eDcyLDB4RTYsMHg3MSwweEVBLDB4NjMsMHhGQiwweEQ3LDB4MDYsMHg3MiwweEE1LDB4NjksMHg1
NSwweDdFLDB4NjgsMHhFQSwKKyAgICAweEE1LDB4NjksMHg2NCwweDYxLDB4QzAsMHhGOSwweDU3
LDB4NUMsMHhDNSwweDY5LDB4ODUsMHg2MSwweDBBLDB4OEIsMHhCQiwweEZGLAorICAgIDB4RTYs
MHg2OSwweDY0LDB4NTksMHgyQSwweDhBLDB4MkIsMHgyOSwweDQ2LDB4NzIsMHhDNSwweDYxLDB4
MkYsMHgyRCwweEJGLDB4RDcsCisgICAgMHg2OSwweDkzLDB4MjYsMHg3MiwweDJGLDB4QkQsMHhC
RCwweEY1LDB4MzUsMHhFRSwweDI5LDB4OEIsMHgwQiwweDBELDB4MkQsMHhCNSwKKyAgICAweEQ3
LDB4RkUsMHg1NSwweEVFLDB4QUEsMHgyQSwweDBCLDB4MkQsMHhENywweEY2LDB4QjYsMHhGNiww
eDc1LDB4NUIsMHhGQSwweEFBLAorICAgIDB4RDYsMHhGNiwweEI2LDB4RjYsMHhGRCwweEE1LDB4
ODcsMHg4RiwweEQ2LDB4RjYsMHhCNiwweEY2LDB4QUQsMHhCRiwweEEzLDB4MEEsCisgICAgMHhE
NiwweEY2LDB4QjYsMHhGNiwweEE4LDB4QUEsMHhCRSwweDk3LDB4RDYsMHhGNiwweEI2LDB4RjYs
MHhENCwweDdDLDB4NUMsMHg3NywKKyAgICAweEI2LDB4RjYsMHhENywweEVFLDB4MEEsMHgwMiww
eDA4LDB4MDgsMHhCNiwweEY2LDB4OTYsMHhFRSwweDA4LDB4MEEsMHg4OCwweDAwLAorICAgIDB4
QjYsMHhGNiwweEQ2LDB4RUUsMHhBMCwweDAwLDB4MDgsMHgyOCwweEQ3LDB4RjYsMHhCNiwweEY2
LDB4QUYsMHhCRCwweEI1LDB4RUYsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEEwLDB4N0Es
MHgzQSwweEFGLDB4RjcsMHhGNiwweEQ2LDB4RjYsMHg5RCwweERELDB4QkYsMHhCNywKKyAgICAw
eEQ3LDB4RkUsMHhGNywweEY2LDB4REYsMHg3RCwweDU3LDB4NTUsMHhGNiwweEZFLDB4RjcsMHhG
NiwweEZELDB4N0YsMHhGNywweEZELAorICAgIDB4RDcsMHhGRSwweEY3LDB4RjYsMHg1NSwweDU1
LDB4N0QsMHhGRCwweEY3LDB4RkUsMHhENywweEY2LDB4QTgsMHhBRSwweEFCLDB4ODIsCisgICAg
MHhGNywweEZFLDB4NTUsMHhFRSwweEEwLDB4QTgsMHhFMCwweDdBLDB4QjYsMHhGNiwweEFGLDB4
QkMsMHhBMCwweEU4LDB4RkEsMHg3QSwKKyAgICAweDMwLDB4Q0QsMHg2NiwweDdBLDB4RTAsMHg3
OCwweDVFLDB4NUYsMHg2NiwweDdBLDB4MDUsMHg3MiwweEEwLDB4REEsMHhGRSwweEFFLAorICAg
IDB4NjYsMHg3QSwweDI2LDB4N0EsMHg4QSwweDlCLDB4OUUsMHhCQSwweDQ2LDB4ODIsMHgyNiww
eDdBLDB4N0YsMHhGRiwweEFELDB4QjMsCisgICAgMHg4NywweDhBLDB4MjYsMHg3QSwweDJCLDB4
QTksMHhBQiwweDhBLDB4QTgsMHg4QSwweDY3LDB4ODIsMHhCQSwweEYzLDB4QjMsMHhGRSwKKyAg
ICAweDg3LDB4ODIsMHg0NiwweDdBLDB4QTAsMHhFMiwweDdBLDB4MzgsMHgxNCwweEU2LDB4MDks
MHg5MywweDM1LDB4QUQsMHgyRCwweDJELAorICAgIDB4RjcsMHhGRSwweDU1LDB4RUUsMHgwRCww
eDAxLDB4MDMsMHgwMywweDE3LDB4RkYsMHhGNywweEY2LDB4RjAsMHhBQSwweEVBLDB4Q0EsCisg
ICAgMHgxNywweEZGLDB4RjgsMHhGNiwweEFCLDB4QjgsMHhBRSwweEFCLDB4MzgsMHhGRiwweEY3
LDB4RjYsMHhBRiwweEFCLDB4RUQsMHhBQiwKKyAgICAweDE4LDB4RkYsMHgxNywweEY3LDB4RUYs
MHhCQiwweEZFLDB4QkUsMHgzNiwweEZGLDB4MTgsMHhGNywweDVELDB4NzcsMHhGNywweEZGLAor
ICAgIDB4MzcsMHhGNywweEQ3LDB4RjYsMHhERSwweDdGLDB4RDcsMHg1RiwweEY3LDB4RjYsMHhE
NywweEY2LDB4RTgsMHhBMiwweEFGLDB4QkYsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDdB
LDB4RjIsMHhCQiwweEJELDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhGRCwweDdELDB4RDcsMHhGRCwK
KyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4RkQsMHhGRCwweEQ2LDB4NTYsMHhGNywweEY2LDB4
RDcsMHhGNiwweEQ3LDB4NzUsMHhENywweDdGLAorICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHgy
MCwweDAwLDB4NjgsMHg4MCwweEY3LDB4RjYsMHhCNywweEY2LDB4MjIsMHhBQSwweEE5LDB4QUYs
CisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDc1LDB4RjUsMHg5NywweEFGLDB4MzcsMHhGRiww
eEQ3LDB4RjYsMHg3NSwweEY3LDB4RjUsMHhCNywKKyAgICAweDE4LDB4RkYsMHhENywweEY2LDB4
MkYsMHg4QSwweDgyLDB4QzAsMHgxNywweEZGLDB4QjYsMHhFRSwweEE4LDB4RkEsMHg3RSwweEQ3
LAorICAgIDB4QjYsMHhGNiwweEQ2LDB4RUUsMHgyRCwweDJCLDB4MEEsMHg4MCwweEI2LDB4RjYs
MHg3NSwweEVFLDB4RTgsMHg2QSwweEZDLDB4RkEsCisgICAgMHg5NiwweEVFLDB4NzUsMHhFRSww
eEUwLDB4NjgsMHg0QywweEZBLDB4NzUsMHhFRSwweDE0LDB4RTYsMHhBMCwweDc4LDB4RjgsMHg3
RSwKKyAgICAweDM1LDB4RTYsMHhCMywweEQ1LDB4QzgsMHhFMiwweEZBLDB4REUsMHgxNCwweERF
LDB4NzEsMHhDRCwweDdFLDB4REYsMHg5NywweDJELAorICAgIDB4QjYsMHhGNiwweDkyLDB4Q0Qs
MHhBNSwweDJGLDB4MjIsMHgwMiwweEQ3LDB4RjYsMHg5NiwweEVFLDB4MDksMHgwQSwweDAyLDB4
MDgsCisgICAgMHhENywweEY2LDB4RDYsMHhFRSwweDIwLDB4MjIsMHgyMiwweDAwLDB4RjcsMHhG
NiwweEI2LDB4RUUsMHhBQiwweEJCLDB4QUUsMHhCMywKKyAgICAweEQ3LDB4RjYsMHhGNywweEVF
LDB4MDAsMHgwMCwweDhBLDB4MEEsMHhENywweEY2LDB4QjYsMHhFRSwweDgwLDB4MDAsMHhBMCww
eEMwLAorICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHgyOCwweDIyLDB4RTgsMHhFQSwweEQ3LDB4
RjYsMHhCNywweEVFLDB4RkMsMHg1NywweDc2LDB4RUYsCisgICAgMHhENywweEY2LDB4QjYsMHhF
RSwweDk3LDB4OEYsMHgyRiwweDJBLDB4RDcsMHhGNiwweEI3LDB4RUUsMHhFMywweEEyLDB4QTIs
MHgyMiwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4NUYsMHhFQSwweEYyLDB4RkUsMHhENyww
eEY2LDB4QjYsMHhFRSwweDVGLDB4NUUsMHg1RSwweDdFLAorICAgIDB4QjYsMHhFRSwweDk2LDB4
RUUsMHhBMywweEZFLDB4M0EsMHgwMCwweEY3LDB4RjYsMHg5NiwweEVFLDB4MkYsMHhCRCwweEJG
LDB4RkQsCisgICAgMHgxNywweEZGLDB4QjcsMHhFRSwweEFBLDB4MkUsMHhBRiwweEZELDB4MTgs
MHhGRiwweEY3LDB4RjYsMHhCQiwweDBCLDB4MEEsMHgyQiwKKyAgICAweDM4LDB4RkYsMHgxOCww
eEY3LDB4RjcsMHhFRiwweENCLDB4RUIsMHgzOSwweEZGLDB4RjcsMHhGNiwweDdFLDB4RkEsMHhF
QSwweDhCLAorICAgIDB4MTgsMHhGRiwweEQ3LDB4RUUsMHhGRiwweEJGLDB4QkUsMHhGOCwweDE4
LDB4RjcsMHhGOCwweEY2LDB4NTUsMHg1RiwweEQ1LDB4RkQsCisgICAgMHhGOCwweEY2LDB4RDcs
MHhGNiwweEFBLDB4QTgsMHhCMCwweDgwLDB4RjgsMHhGNiwweEQ3LDB4RjYsMHg1NSwweEI3LDB4
Q0YsMHg2QiwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4QkUsMHgwQSwweDBBLDB4MDksMHhG
NywweEY2LDB4QjcsMHhFRSwweDY4LDB4RTAsMHg3OCwweDdBLAorICAgIDB4RDcsMHhGNiwweEI3
LDB4RUUsMHg4RCwweDAyLDB4ODIsMHhBQiwweEQ3LDB4RjYsMHhCNywweEVFLDB4RUEsMHg4OCww
eEFBLDB4QUEsCisgICAgMHhCNiwweEVFLDB4NTUsMHhFNiwweDU4LDB4NzgsMHg2OCwweEUwLDB4
NTUsMHhFNiwweEYzLDB4RDUsMHgyNiwweDM3LDB4MUYsMHgxNiwKKyAgICAweEQ3LDB4RjYsMHg5
NiwweEVFLDB4MkIsMHhBOSwweDJCLDB4MkQsMHhCNywweEVFLDB4MzQsMHhFNiwweDVFLDB4N0Ms
MHg3OCwweDU4LAorICAgIDB4MzQsMHhFNiwweDkyLDB4Q0QsMHg3MCwweDc4LDB4NzAsMHg3OCww
eDkyLDB4RDUsMHgzMCwweEM1LDB4RkIsMHg2QSwweDY4LDB4QjAsCisgICAgMHhEMywweERELDB4
NTEsMHhDNSwweDJELDB4MkQsMHgzRCwweEE3LDB4MTQsMHhERSwweEIyLDB4RDUsMHg4MiwweEMy
LDB4NDIsMHhDMiwKKyAgICAweEIyLDB4RDUsMHgzMCwweEM1LDB4MkEsMHhCRSwweDlGLDB4RDYs
MHhGNCwweERELDB4NTEsMHhDRCwweDgyLDB4OEIsMHhDQiwweDdELAorICAgIDB4RjMsMHhERCww
eDMxLDB4QzUsMHgzNywweDJFLDB4QTYsMHhBRCwweEI2LDB4RjYsMHhGMywweERELDB4MEIsMHgy
OSwweDA5LDB4MEIsCisgICAgMHhENywweEY2LDB4NzUsMHhFRSwweDdBLDB4RkEsMHhGQSwweENB
LDB4OTYsMHhFRSwweDM0LDB4RTYsMHhGRSwweDU2LDB4NUEsMHhGQywKKyAgICAweDU1LDB4RTYs
MHgzNCwweEU2LDB4MDksMHgyNSwweDlELDB4RkUsMHg5NiwweEVFLDB4MzQsMHhFNiwweEFELDB4
QUIsMHhBRiwweEFGLAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBRiwweEJCLDB4N0QsMHg3
RCwweEQ1LDB4RjYsMHhCNiwweEVFLDB4NTcsMHg3NSwweEY1LDB4RjcsCisgICAgMHhENiwweEY2
LDB4QjYsMHhFRSwweEQ5LDB4REYsMHhGQSwweEVCLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhEOSww
eDdBLDB4QUUsMHhBNywKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4N0YsMHg2QiwweEFCLDB4
OEQsMHhENiwweEY2LDB4QjYsMHhFRSwweEFELDB4Q0YsMHhGRSwweEZFLAorICAgIDB4RDYsMHhG
NiwweDk2LDB4RUUsMHg2QSwweEFBLDB4MzIsMHgzOCwweEQ2LDB4RjYsMHhCNiwweEVFLDB4RTMs
MHhFQSwweERBLDB4N0UsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweERELDB4NTcsMHhENiww
eEI3LDB4QjYsMHhGNiwweEQ3LDB4RUUsMHhFQiwweEVCLDB4RUEsMHhGQiwKKyAgICAweEQ3LDB4
RjYsMHhCNiwweEVFLDB4RkYsMHhGRSwweDdFLDB4NUEsMHhENiwweEY2LDB4QjYsMHhFRSwweEFG
LDB4MkIsMHhBQiwweEZFLAorICAgIDB4QjYsMHhFRSwweDk1LDB4RUUsMHhGOCwweEEwLDB4Nzgs
MHg1MCwweEI2LDB4RjYsMHg5NSwweEVFLDB4NzcsMHhFRSwweEVCLDB4RjcsCisgICAgMHhCNiww
eEY2LDB4NzUsMHhFRSwweDZGLDB4M0UsMHhBRiwweDNBLDB4QjUsMHhGNiwweDk2LDB4RUUsMHgw
QiwweENBLDB4QkEsMHg3RSwKKyAgICAweDk1LDB4RjYsMHhCNiwweEVFLDB4RkYsMHhGQiwweEZB
LDB4QUUsMHg5NiwweEY2LDB4QjYsMHhFRSwweEU1LDB4RkQsMHg3QiwweDVFLAorICAgIDB4RDYs
MHhGNiwweEI2LDB4RUUsMHg5NSwweEI1LDB4QUIsMHhCQSwweEQ3LDB4RjYsMHhCNiwweEU2LDB4
ODAsMHgyMiwweEEyLDB4MjAsCisgICAgMHhENywweEY2LDB4RjYsMHhFRSwweDIwLDB4MjIsMHgy
OCwweDAwLDB4RDcsMHhGNiwweEI2LDB4RUUsMHg4QSwweDVFLDB4RkUsMHhBQSwKKyAgICAweEY4
LDB4RjYsMHhENywweEY2LDB4N0QsMHg3OSwweDdELDB4RDUsMHhENiwweEY2LDB4QjYsMHhGNiww
eDE4LDB4QkUsMHhBQSwweDIwLAorICAgIDB4QjYsMHhGNiwweDUyLDB4Q0QsMHhDMCwweEMwLDB4
NjAsMHg0MCwweDJDLDB4QUMsMHgwNSwweDZBLDB4NTgsMHg1QywweDU0LDB4NUUsCisgICAgMHgw
NiwweDZBLDB4NjQsMHg1OSwweEIwLDB4NkEsMHg3RSwweDc3LDB4NjQsMHg2MSwweEUyLDB4NDgs
MHgyQSwweDk2LDB4REUsMHhERSwKKyAgICAweDA2LDB4NzIsMHgyMywweDU5LDB4QUEsMHgwQiww
eEE5LDB4MkQsMHgwNiwweDcyLDB4QTUsMHg2MSwweDc4LDB4QTgsMHhBMiwweEVBLAorICAgIDB4
QTUsMHg2OSwweDQ0LDB4NTksMHgyOCwweEVDLDB4N0UsMHg5OCwweDg1LDB4NjEsMHg0NCwweDU5
LDB4RUEsMHg0RSwweEE2LDB4MjcsCisgICAgMHhDNSwweDYxLDB4MjMsMHg1MSwweDNCLDB4Qjcs
MHhCRiwweEE1LDB4RTYsMHg2OSwweDg1LDB4NTksMHgzRiwweEJELDB4QkYsMHg5NywKKyAgICAw
eDg4LDB4N0EsMHgwNiwweDZBLDB4MEQsMHgzRCwweDNELDB4MzUsMHgyQywweEFDLDB4NDcsMHg3
MiwweDJGLDB4QUYsMHhCRiwweEJELAorICAgIDB4OTYsMHhGNiwweDBDLDB4QTQsMHgwMiwweDBC
LDB4MEQsMHgyNSwweEY3LDB4RkUsMHg5NiwweEY2LDB4QUEsMHhBQSwweEFCLDB4QTksCisgICAg
MHhENiwweEZFLDB4RDcsMHhGNiwweEZGLDB4RkYsMHhGRiwweEZGLDB4QjYsMHhGRSwweEQ3LDB4
RjYsMHg1NSwweDc1LDB4NjcsMHg3RCwKKyAgICAweEY3LDB4RkUsMHhCNiwweEY2LDB4RDcsMHg1
RSwweDc2LDB4N0UsMHhENywweEY2LDB4QjYsMHhGNiwweDZFLDB4Q0YsMHhCRCwweERGLAorICAg
IDB4RDcsMHhGNiwweEI2LDB4RjYsMHg1NSwweDU2LDB4NTQsMHg1NywweEQ3LDB4RjYsMHhCNiww
eEY2LDB4NzUsMHhCRCwweEI3LDB4MkYsCisgICAgMHhENywweEY2LDB4QjYsMHhGNiwweERFLDB4
RjgsMHhCQywweDUzLDB4RDYsMHhGNiwweEI2LDB4RjYsMHg2RCwweEZGLDB4RjYsMHhBNCwKKyAg
ICAweEQ2LDB4RjYsMHhCNiwweEY2LDB4MUYsMHgwRiwweDhCLDB4QjgsMHhGNywweEY2LDB4RDYs
MHhGNiwweDM1LDB4MTUsMHg5NSwweDU1LAorICAgIDB4MTcsMHhGRiwweEQ3LDB4RjYsMHhFRSww
eEVBLDB4RUYsMHhFRiwweDE3LDB4RkYsMHhGNywweEY2LDB4RDUsMHg3NSwweEZELDB4RkQsCisg
ICAgMHhENywweEZFLDB4RjcsMHhGNiwweEY5LDB4QjcsMHhBRCwweDJCLDB4RjcsMHhGRSwweDk1
LDB4RUUsMHgwMCwweEFBLDB4RUEsMHg3OCwKKyAgICAweEQ2LDB4RjYsMHhGMCwweEM0LDB4QTAs
MHhFOCwweDZBLDB4NUEsMHg3MSwweEQ1LDB4NDYsMHg3QSwweEUwLDB4RTgsMHg1QSwweDVFLAor
ICAgIDB4QzgsMHg4MiwweEM1LDB4NjksMHhFOCwweEJFLDB4RkIsMHhGNywweDQ2LDB4N0EsMHgw
NSwweDcyLDB4RTgsMHg5MCwweDYwLDB4OEYsCisgICAgMHg0NiwweDgyLDB4RTUsMHg3MSwweEFD
LDB4QkEsMHgyRCwweEVBLDB4ODcsMHg4QSwweDI2LDB4N0EsMHhCRCwweEYzLDB4ODksMHgyQiwK
KyAgICAweEE4LDB4OEEsMHg0NiwweDgyLDB4MkEsMHhCRiwweERGLDB4RkUsMHhBOCwweDhBLDB4
MjYsMHg3QSwweEE4LDB4QTAsMHhFRiwweERGLAorICAgIDB4QTgsMHg4MiwweEU1LDB4NzEsMHgy
QSwweDNFLDB4MUYsMHgzNywweDU1LDB4RUUsMHg4QSwweDlCLDB4MEQsMHgyOSwweDA5LDB4MEIs
CisgICAgMHgxOCwweEZGLDB4RDcsMHhGRSwweDM5LDB4QTksMHhBQiwweDJCLDB4MTcsMHhGRiww
eDE4LDB4RjcsMHhGOCwweEE4LDB4QkEsMHhFQSwKKyAgICAweDE3LDB4RkYsMHgxOCwweEY3LDB4
RkIsMHhCRSwweEVCLDB4RUUsMHgxOCwweEZGLDB4MTcsMHhGNywweEZGLDB4RUYsMHhGRSwweEVC
LAorICAgIDB4MTgsMHhGRiwweDE3LDB4RjcsMHhFRSwweEZFLDB4QUYsMHhGQiwweDE4LDB4RkYs
MHhGNywweEY2LDB4ODIsMHhFMCwweDcwLDB4N0EsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiww
eDc4LDB4RkEsMHg1RSwweEFBLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBQSwweEFBLDB4OEEsMHg4
MywKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4RkQsMHhGQSwweEJBLDB4QTYsMHhGNywweEY2
LDB4RDcsMHhGNiwweEY3LDB4QkYsMHhGRiwweEZGLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYs
MHgzNiwweEJBLDB4NzYsMHg1RSwweEY3LDB4RjYsMHhENywweEY2LDB4NzUsMHhENywweDlELDB4
RDUsCisgICAgMHhGNywweEY2LDB4OTcsMHhGNiwweEIyLDB4QUEsMHhBMCwweEEyLDB4RDcsMHhG
NiwweEY3LDB4RUUsMHg4MCwweEEwLDB4MDAsMHhBMCwKKyAgICAweEY3LDB4RjYsMHhENywweEY2
LDB4OEYsMHhFRCwweDM1LDB4MzEsMHgxOCwweEZGLDB4RjcsMHhGNiwweDM1LDB4MEQsMHhCQSww
eEVBLAorICAgIDB4MTgsMHhGRiwweEI2LDB4RUUsMHhFMCwweDc4LDB4RkUsMHhERiwweEI3LDB4
RjYsMHhCNiwweEVFLDB4RkYsMHg5NywweEJGLDB4QUEsCisgICAgMHhCNiwweEY2LDB4OTYsMHhF
RSwweEEyLDB4QUEsMHhBMCwweEZBLDB4OTYsMHhGNiwweDc1LDB4RUUsMHg3MCwweDYwLDB4RTgs
MHg3OCwKKyAgICAweDk2LDB4RUUsMHgxNCwweERFLDB4QTgsMHhFOCwweEU4LDB4NUEsMHg1NSww
eEU2LDB4QjMsMHhENSwweEE4LDB4QUEsMHhFMiwweDdBLAorICAgIDB4MTQsMHhERSwweDcxLDB4
Q0QsMHg3OCwweDdBLDB4RDcsMHgyNSwweEI2LDB4RjYsMHg5MiwweEQ1LDB4QkQsMHgyRCwweDBC
LDB4MDIsCisgICAgMHhGNywweEZFLDB4OTYsMHhGNiwweEJELDB4QUYsMHhCQiwweDhBLDB4Rjcs
MHhGNiwweEI3LDB4RUUsMHhFQSwweEJBLDB4RUEsMHhBRSwKKyAgICAweEY3LDB4RjYsMHhENyww
eEY2LDB4RkYsMHhERCwweDU3LDB4NTUsMHhGNywweEY2LDB4RDcsMHhGNiwweDU5LDB4RDUsMHg1
NSwweEI1LAorICAgIDB4RjgsMHhGNiwweEI2LDB4RUUsMHhFRSwweDdGLDB4QkUsMHgyQSwweEY3
LDB4RjYsMHhCNywweEVFLDB4RkYsMHhGRiwweEVCLDB4QUEsCisgICAgMHhENywweEY2LDB4Qjcs
MHhFRSwweEVDLDB4QkYsMHhBQywweDM4LDB4RDcsMHhGNiwweEI3LDB4RUUsMHhBQiwweDJFLDB4
OEUsMHhBQSwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4MDgsMHhBMiwweEE4LDB4RUEsMHhE
NywweEY2LDB4QjYsMHhFRSwweDg4LDB4M0UsMHhCRSwweEI3LAorICAgIDB4RDcsMHhGNiwweEI2
LDB4RUUsMHhGRSwweDZFLDB4RkUsMHg3RSwweEQ3LDB4RjYsMHhCNiwweEVFLDB4RkYsMHgzRiww
eDNGLDB4QUYsCisgICAgMHhENywweEY2LDB4QjYsMHhFRSwweERELDB4N0UsMHg3MCwweEVBLDB4
RDYsMHhGNiwweEI3LDB4RUUsMHg1RCwweDVGLDB4NUYsMHhGQiwKKyAgICAweEQ3LDB4RjYsMHhC
NywweEVFLDB4QUQsMHhGRCwweEFELDB4QjcsMHhGOCwweEZFLDB4RDcsMHhFRSwweDJCLDB4Mjcs
MHgyRCwweEY1LAorICAgIDB4MzgsMHhGRiwweEY4LDB4RjYsMHgyQSwweEFBLDB4QUYsMHhCRiww
eDM4LDB4RkYsMHgxOSwweEZGLDB4MkUsMHhBNiwweEFGLDB4QUYsCisgICAgMHgzOCwweEZGLDB4
RjcsMHhGNiwweDdBLDB4RUEsMHhFMCwweDgwLDB4MTgsMHhGNywweEY3LDB4RjYsMHg1NSwweDU1
LDB4NTcsMHg1RSwKKyAgICAweEY4LDB4RjYsMHhENywweEY2LDB4RTgsMHhBQSwweEZCLDB4MkUs
MHhGNywweEY2LDB4RDcsMHhGNiwweDZBLDB4MkUsMHgyQiwweEE4LAorICAgIDB4RjcsMHhGNiww
eEQ3LDB4RjYsMHhBNSwweEQ2LDB4RkEsMHg3QSwweEY3LDB4RjYsMHg5NiwweEVFLDB4RTAsMHhB
QSwweEQ4LDB4RkEsCisgICAgMHhCNywweEY2LDB4RDcsMHhFRSwweEJFLDB4OEEsMHhBQSwweEEw
LDB4RDcsMHhGNiwweEI2LDB4RUUsMHgyQiwweDJBLDB4QUEsMHgwRiwKKyAgICAweEQ3LDB4RjYs
MHgzNCwweERFLDB4RjgsMHg3OCwweEU4LDB4NzgsMHg1NCwweEU2LDB4RDIsMHhENSwweDM2LDB4
MzYsMHgzRSwweDJFLAorICAgIDB4RDcsMHhGNiwweDc1LDB4RTYsMHgwRiwweDg5LDB4MDEsMHgw
QiwweEQ3LDB4RjYsMHgzNCwweEU2LDB4NzgsMHg3OCwweEU4LDB4RTIsCisgICAgMHgzNCwweEU2
LDB4OTIsMHhDRCwweDU4LDB4NUEsMHg1OCwweDc4LDB4QjMsMHhENSwweDcxLDB4Q0QsMHg1Riww
eEVBLDB4QzMsMHhDMiwKKyAgICAweEQyLDB4RDUsMHg3MSwweENELDB4MkQsMHgxNywweEE1LDB4
QTUsMHgxNCwweERFLDB4RDMsMHhERCwweDYzLDB4RUIsMHg4QSwweENELAorICAgIDB4OTIsMHhD
RCwweEVGLDB4QkMsMHhFQSwweEI4LDB4RjgsMHg1QywweDUxLDB4QzUsMHgxMCwweEM1LDB4Mjgs
MHhCRSwweEJFLDB4NTUsCisgICAgMHg3NSwweEVFLDB4NTEsMHhDRCwweEJELDB4QTUsMHgyRCww
eDBELDB4RDcsMHhGNiwweDc1LDB4RUUsMHhBRCwweDI5LDB4MEEsMHgwMiwKKyAgICAweEQ3LDB4
RjYsMHg3NSwweEVFLDB4QzIsMHhBQSwweDY4LDB4QTgsMHg5NiwweEVFLDB4MzQsMHhFNiwweDdD
LDB4RkEsMHg3QSwweDZFLAorICAgIDB4NTUsMHhFNiwweDM0LDB4RTYsMHhERSwweERCLDB4Nzcs
MHg1QiwweDc1LDB4RUUsMHg1NSwweEU2LDB4MDcsMHgwOSwweDI5LDB4NzUsCisgICAgMHhENiww
eEY2LDB4OTUsMHhFRSwweEFGLDB4QTksMHhBQiwweEFCLDB4QjUsMHhGNiwweEQ2LDB4RUUsMHhB
RiwweEFBLDB4RkEsMHhFMiwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4OEYsMHg3OCwweDUw
LDB4NzEsMHhENiwweEY2LDB4QjYsMHhFRSwweEFELDB4QUIsMHhGRiwweEE3LAorICAgIDB4RDYs
MHhGNiwweEI2LDB4RUUsMHhBRCwweDc3LDB4NzcsMHhGRiwweEQ2LDB4RjYsMHhCNiwweEVFLDB4
RUEsMHhCQiwweEFCLDB4OEEsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEJGLDB4NkYsMHg2
QSwweDcyLDB4RDYsMHhGNiwweEI2LDB4RUUsMHg1RiwweDU5LDB4RkUsMHg3RSwKKyAgICAweEQ2
LDB4RjYsMHhCNiwweEVFLDB4MkIsMHhBRiwweEZGLDB4RjcsMHhENiwweEY2LDB4QjYsMHhFRSww
eEFFLDB4QkEsMHhERSwweEZCLAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHg3OCwweEJGLDB4
NzUsMHhGRCwweEQ2LDB4RjYsMHhCNiwweEVFLDB4RkUsMHhGRSwweEZGLDB4NkIsCisgICAgMHhE
NiwweEY2LDB4OTUsMHhFRSwweDU2LDB4REEsMHg3RSwweEZGLDB4QjYsMHhGNiwweDk2LDB4RUUs
MHhERiwweDc3LDB4QkYsMHhDRCwKKyAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4OUEsMHg3RSww
eEYyLDB4RTIsMHhCNSwweEY2LDB4OTYsMHhFRSwweDVFLDB4REYsMHhGRiwweEZFLAorICAgIDB4
QjYsMHhGNiwweDk2LDB4RUUsMHhGQiwweEVCLDB4RkQsMHhFRCwweEQ2LDB4RjYsMHg5NiwweEVF
LDB4QUQsMHhBRiwweEJELDB4RkYsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEJBLDB4MzYs
MHgyRiwweDBCLDB4RjYsMHhGNiwweEI3LDB4RUUsMHhCRSwweEJFLDB4QUEsMHhBQiwKKyAgICAw
eEQ3LDB4RjYsMHhCNiwweEVFLDB4RUMsMHhBQywweEE4LDB4MjgsMHhENywweEY2LDB4RjYsMHhF
RSwweDAwLDB4QTgsMHhBOCwweDg4LAorICAgIDB4RDYsMHhGNiwweEY3LDB4RUUsMHg4OCwweDBB
LDB4MDIsMHgwMCwweEQ2LDB4RjYsMHhCNywweEY2LDB4RTgsMHhDMiwweEUwLDB4RkEsCisgICAg
MHhCNiwweEY2LDB4NzIsMHhENSwweDYwLDB4NjAsMHg2MCwweDQwLDB4OEIsMHg5QiwweDg0LDB4
NTksMHg3QywweDVDLDB4NUMsMHg1QywKKyAgICAweEE1LDB4NjEsMHg0MywweDUxLDB4RUMsMHg3
QSwweEZBLDB4OEYsMHg2NSwweDU5LDB4RTMsMHg0OCwweEVFLDB4NkEsMHg3OCwweEUwLAorICAg
IDB4QTUsMHg2MSwweEMyLDB4NDgsMHgwRiwweDJELDB4QkQsMHhCRiwweDA2LDB4NzIsMHg4NCww
eDU5LDB4OEEsMHhBQSwweEZGLDB4QkQsCisgICAgMHhDNSwweDY5LDB4NjQsMHg1OSwweDU4LDB4
N0UsMHhFRSwweDZBLDB4NjQsMHg1OSwweDA0LDB4NTEsMHg4QSwweEFBLDB4OTgsMHhBQSwKKyAg
ICAweDY0LDB4NTksMHgyNCwweDUxLDB4MkYsMHhGQiwweEZBLDB4QUIsMHhDNSwweDYxLDB4NDQs
MHg1MSwweDJFLDB4M0YsMHhCRCwweEQ1LAorICAgIDB4MjcsMHg3MiwweEM1LDB4NjEsMHgyRiww
eDJELDB4NUQsMHg1NSwweDA5LDB4OEIsMHhFNiwweDYxLDB4MkIsMHhBRiwweEJELDB4QjUsCisg
ICAgMHg5MiwweEQ1LDB4MjksMHg4QiwweDJELDB4QkQsMHhGNSwweDU1LDB4QjYsMHhGNiwweDZF
LDB4QjQsMHgwMCwweDAyLDB4MEIsMHgwRCwKKyAgICAweEQ3LDB4RkUsMHhENiwweEY2LDB4RkYs
MHhGRSwweEVBLDB4QUEsMHhCNywweEZFLDB4RDcsMHhGNiwweDc3LDB4RkQsMHg1NywweDU1LAor
ICAgIDB4RDcsMHhGNiwweEI2LDB4RjYsMHhGOCwweEUyLDB4RTAsMHg4MCwweEQ3LDB4RjYsMHhC
NiwweEY2LDB4N0UsMHhFQiwweEY5LDB4QTksCisgICAgMHhENywweEY2LDB4QjYsMHhGNiwweEQ1
LDB4QjUsMHhBRiwweEJGLDB4RDcsMHhGNiwweEI2LDB4RjYsMHhBRSwweEY2LDB4QUEsMHhFQiwK
KyAgICAweEQ2LDB4RjYsMHhCNywweEY2LDB4NjAsMHhFMiwweDIwLDB4QUEsMHhENiwweEY2LDB4
QjYsMHhGNiwweDFBLDB4QUUsMHg5QSwweDNBLAorICAgIDB4RDYsMHhGNiwweEI3LDB4RjYsMHg3
OCwweENBLDB4ODAsMHhBMCwweEY3LDB4RkUsMHhCNiwweEY2LDB4QUIsMHhCRiwweEE3LDB4QUQs
CisgICAgMHhGNywweEZFLDB4RDcsMHhGNiwweDhCLDB4QUEsMHg4QiwweEFCLDB4RjcsMHhGRSww
eEQ3LDB4RjYsMHg4QiwweEFFLDB4QUEsMHhBQSwKKyAgICAweEY3LDB4RkUsMHhCNiwweEY2LDB4
QTgsMHhBMiwweEVBLDB4NjgsMHhCNiwweEY2LDB4MzEsMHhDRCwweDgwLDB4ODAsMHhFOCwweDc4
LAorICAgIDB4NzIsMHhENSwweDI1LDB4NzIsMHhBMCwweEUwLDB4NzgsMHg3RSwweDA5LDB4OEIs
MHhFNSwweDY5LDB4REMsMHhERSwweEQ3LDB4RkQsCisgICAgMHg0NiwweDdBLDB4MDUsMHg3Miww
eEQxLDB4QUYsMHgzRiwweDJBLDB4NjcsMHg4MiwweDI2LDB4N0EsMHhCNSwweDVGLDB4MUYsMHgw
MywKKyAgICAweDY3LDB4ODIsMHgyNiwweDdBLDB4NTcsMHhEQywweDM4LDB4ODAsMHg4NywweDhB
LDB4MDYsMHg3QSwweDIzLDB4ODIsMHhDQSwweDVFLAorICAgIDB4NjcsMHg4MiwweDI2LDB4N0Es
MHgyOCwweEUyLDB4Q0IsMHg1OSwweDY3LDB4ODIsMHgyNiwweDdBLDB4QjIsMHhCRSwweEJELDB4
NzcsCisgICAgMHgwRCwweEFDLDB4NjYsMHg3QSwweEQ1LDB4OTUsMHhCNSwweDM1LDB4RDcsMHhG
RSwweDhFLDB4QkMsMHgyRCwweDI5LDB4MDksMHgwQiwKKyAgICAweDE4LDB4RkYsMHhGNywweEZF
LDB4QkQsMHhCNSwweEFELDB4MkQsMHhGNywweEZFLDB4MzgsMHhGNywweEJFLDB4RUEsMHhGQSww
eDdFLAorICAgIDB4MTgsMHhGRiwweDM3LDB4RjcsMHg4MiwweEFBLDB4QUIsMHhBQiwweDM4LDB4
RkYsMHgxNywweEY3LDB4NzcsMHg1RiwweERELDB4RkUsCisgICAgMHgzOCwweEZGLDB4RjcsMHhG
NiwweEFCLDB4QkEsMHhBQiwweEFBLDB4MTgsMHhGRiwweEY3LDB4RjYsMHg3QiwweEVBLDB4Rjgs
MHhEOCwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4QTAsMHhCMCwweEU4LDB4QUUsMHhGNyww
eEY2LDB4RDcsMHhGNiwweEFBLDB4RUUsMHhBRSwweEE4LAorICAgIDB4RjcsMHhGNiwweEQ3LDB4
RjYsMHhCQiwweEVBLDB4RUEsMHhDMiwweEY3LDB4RjYsMHhCNywweEVFLDB4QkEsMHhGOCwweEFB
LDB4MkEsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEQ1LDB4NTUsMHg1NywweDI4LDB4Rjcs
MHhGNiwweEQ3LDB4RjYsMHhGNSwweEFELDB4RUIsMHhDOCwKKyAgICAweEY3LDB4RjYsMHhENyww
eEY2LDB4N0UsMHhERiwweEVGLDB4MEUsMHhGNywweEY2LDB4RDcsMHhGNiwweEI1LDB4NUYsMHg5
RSwweDJFLAorICAgIDB4MTcsMHhGRiwweEQ3LDB4RjYsMHhBRiwweDBCLDB4QUIsMHhBMiwweDE3
LDB4RkYsMHhCNiwweEY2LDB4QzgsMHhFOCwweDVBLDB4NTcsCisgICAgMHhENiwweEY2LDB4OTYs
MHhFRSwweDI4LDB4QUEsMHhCRiwweEFGLDB4QjYsMHhGNiwweEQ3LDB4RUUsMHg4QSwweDBBLDB4
MjAsMHg4MiwKKyAgICAweEQ2LDB4RjYsMHg5NiwweEVFLDB4N0YsMHg1RSwweDVFLDB4N0UsMHg5
NiwweEVFLDB4MzQsMHhFNiwweEEwLDB4RTgsMHhGOCwweEZFLAorICAgIDB4NzUsMHhFNiwweEYz
LDB4RDUsMHhGOCwweEZBLDB4NkEsMHg3QSwweDM1LDB4RTYsMHg5MiwweENELDB4N0EsMHg1RSww
eEJGLDB4MkUsCisgICAgMHhENywweEY2LDB4OTIsMHhENSwweEI1LDB4QUYsMHgyQSwweDAyLDB4
RDcsMHhGNiwweEI2LDB4RjYsMHgyMSwweDBELDB4MEQsMHgwOSwKKyAgICAweEY3LDB4RjYsMHhE
NywweEY2LDB4NzksMHhGRCwweEY1LDB4NTUsMHhGNywweEY2LDB4RDcsMHhGNiwweEY1LDB4RkIs
MHg1RiwweDVELAorICAgIDB4RjcsMHhGNiwweEI3LDB4RUUsMHhBQiwweEFCLDB4QUYsMHhBRiww
eEY3LDB4RjYsMHhCNywweEVFLDB4MkEsMHhBQSwweEVBLDB4RkEsCisgICAgMHhENywweEY2LDB4
RjcsMHhFRSwweDJBLDB4MDAsMHgwMCwweDIwLDB4RDcsMHhGNiwweEI3LDB4RUUsMHg4MiwweDgw
LDB4QTAsMHg4MCwKKyAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4QTgsMHhFQiwweDgyLDB4Qzgs
MHhENywweEY2LDB4QjcsMHhFRSwweDI4LDB4MDIsMHhDMiwweEVBLAorICAgIDB4RDcsMHhGNiww
eEI3LDB4RUUsMHhGOCwweDJBLDB4QUUsMHhBRiwweEQ3LDB4RjYsMHhCNiwweEVFLDB4QTcsMHhC
NSwweEZGLDB4REYsCisgICAgMHhENywweEY2LDB4QjcsMHhFRSwweDc3LDB4QkUsMHhCQywweEE4
LDB4RDcsMHhGNiwweEI2LDB4RUUsMHg4QiwweDhCLDB4MkYsMHhCRSwKKyAgICAweEQ3LDB4RjYs
MHhCNywweEVFLDB4QzgsMHg4MiwweDAwLDB4ODAsMHhENywweEY2LDB4QjcsMHhFRSwweEU4LDB4
QUUsMHhFQSwweDJBLAorICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHhFRiwweEZCLDB4QUEsMHhB
RiwweEQ3LDB4RjYsMHhCNiwweEVFLDB4MjksMHhFRiwweEFBLDB4MEEsCisgICAgMHgxOCwweEY3
LDB4RDcsMHhGNiwweDJCLDB4QUIsMHhBRiwweEJELDB4MzgsMHhGRiwweEY3LDB4RjYsMHhBQiww
eDJBLDB4MkIsMHhFRCwKKyAgICAweDM5LDB4RkYsMHgzOCwweEZGLDB4RUIsMHhBRiwweEFGLDB4
QkYsMHgzOCwweEZGLDB4RjcsMHhGNiwweDVFLDB4N0EsMHg3OCwweDYwLAorICAgIDB4RjcsMHhG
NiwweEQ3LDB4RjYsMHhBRiwweDA5LDB4QTgsMHg4MywweEY3LDB4RjYsMHhENywweEY2LDB4Qzgs
MHg2MiwweDdFLDB4NTcsCisgICAgMHhGNywweEY2LDB4OTYsMHhFRSwweEEwLDB4QUEsMHhFQSww
eERGLDB4RDcsMHhGNiwweDk2LDB4RUUsMHg3MCwweEZFLDB4NUYsMHg1NywKKyAgICAweEI2LDB4
RUUsMHg5NiwweEVFLDB4OEEsMHhBRiwweDNGLDB4QTUsMHhENywweEY2LDB4QjYsMHhFRSwweDBE
LDB4MEQsMHgyRCwweDI1LAorICAgIDB4RDcsMHhGNiwweEY0LDB4REQsMHhFOCwweEUwLDB4NjAs
MHg2MCwweDE0LDB4REUsMHg1MSwweEM1LDB4MDAsMHgyMCwweDJFLDB4MzUsCisgICAgMHhENiww
eEY2LDB4NTUsMHhFNiwweDA5LDB4MkQsMHhBRCwweEJELDB4RDcsMHhGNiwweDU1LDB4RUUsMHg2
MiwweEU4LDB4RUEsMHhFOCwKKyAgICAweDM1LDB4RTYsMHg5MiwweENELDB4NUEsMHg1OCwweDU4
LDB4NTgsMHhCMiwweEQ1LDB4NzEsMHhDRCwweDYzLDB4QzIsMHhDMiwweEMyLAorICAgIDB4QjIs
MHhENSwweDcxLDB4Q0QsMHhCNSwweEFELDB4MkQsMHgyRCwweDEzLDB4REUsMHhCMiwweEQ1LDB4
OEIsMHg4MywweDI5LDB4QTksCisgICAgMHg5MiwweEQ1LDB4Q0YsMHhCQywweDdDLDB4NUMsMHg1
QywweDVDLDB4MzEsMHhDNSwweEFFLDB4QjQsMHgwQiwweDJCLDB4QjUsMHhENywKKyAgICAweDk2
LDB4RUUsMHg1MSwweENELDB4MkQsMHhBRiwweEJELDB4RjUsMHhENywweEY2LDB4RjMsMHhERCww
eDAwLDB4MEEsMHgwQiwweDJELAorICAgIDB4RDcsMHhGNiwweDc1LDB4RUUsMHhFQSwweEY4LDB4
NTgsMHhGQSwweDc1LDB4RUUsMHgzNCwweEU2LDB4RTgsMHhDMCwweDcwLDB4NzgsCisgICAgMHgz
NSwweEVFLDB4NTQsMHhFNiwweEU1LDB4NTcsMHhERiwweDc2LDB4NzYsMHhFRSwweDM1LDB4RTYs
MHhGQiwweEFGLDB4QjYsMHhGRSwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4RkQsMHhGRSww
eEVFLDB4MkEsMHhENiwweEY2LDB4QjYsMHhFRSwweERCLDB4RkYsMHg3QiwweDZBLAorICAgIDB4
RDYsMHhGNiwweEI2LDB4RUUsMHhBRCwweEVGLDB4QUQsMHgzRiwweEI2LDB4RjYsMHhENiwweEVF
LDB4RkYsMHhGRiwweEZGLDB4QUYsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEE2LDB4RUEs
MHhFQSwweEFBLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhGMiwweEFGLDB4QUEsMHhBMiwKKyAgICAw
eEQ2LDB4RjYsMHhCNiwweEVFLDB4QTEsMHg4RSwweEZFLDB4QUEsMHhENiwweEY2LDB4QjYsMHhF
RSwweEUyLDB4QTMsMHg4MiwweEJBLAorICAgIDB4RDYsMHhGNiwweDk2LDB4RUUsMHhBMiwweDhB
LDB4RDgsMHg4QSwweEQ2LDB4RjYsMHhCNiwweEVFLDB4RUIsMHhBMiwweDY4LDB4QTIsCisgICAg
MHhENiwweEY2LDB4QjYsMHhFRSwweDZFLDB4RjIsMHhFMiwweEVCLDB4RDYsMHhGNiwweEI2LDB4
RUUsMHhGOSwweEZGLDB4N0EsMHhBQSwKKyAgICAweEQ2LDB4RjYsMHg5NiwweEVFLDB4RkYsMHhE
RiwweEZBLDB4RkEsMHhCNiwweEY2LDB4OTYsMHhFRSwweDlGLDB4QUEsMHg4QiwweEJBLAorICAg
IDB4OTYsMHhGNiwweEI2LDB4RUUsMHhCRiwweEVELDB4QkIsMHhGRiwweEI2LDB4RjYsMHg5Niww
eEVFLDB4N0UsMHhGQSwweENBLDB4QTgsCisgICAgMHg5NiwweEY2LDB4QjYsMHhFRSwweDdFLDB4
N0YsMHhGNywweEY3LDB4QjYsMHhFRSwweDk2LDB4RUUsMHgyMiwweDJBLDB4QUEsMHhDMiwKKyAg
ICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4OEYsMHgwQiwweDAzLDB4MkQsMHhGNiwweEY2LDB4QjYs
MHhFRSwweEVFLDB4RkEsMHhGQSwweEZFLAorICAgIDB4RDYsMHhGNiwweEI3LDB4RTYsMHgyMCww
eEEyLDB4MEEsMHg4MCwweEQ2LDB4RjYsMHhGNiwweEVFLDB4MDgsMHgyOCwweDIwLDB4MDIsCisg
ICAgMHhGNiwweEY2LDB4QjYsMHhFRSwweEVCLDB4QUYsMHhBRiwweEZFLDB4RDYsMHhGNiwweEI2
LDB4RjYsMHg3MiwweERBLDB4QkEsMHgyMCwKKyAgICAweEQ2LDB4RjYsMHhCMiwweEQ1LDB4NjAs
MHg2MCwweDYwLDB4RTAsMHg2QywweEFDLDB4ODMsMHg1MSwweDVFLDB4NUMsMHg1QywweDVDLAor
ICAgIDB4QTUsMHg2MSwweDIzLDB4NTEsMHgyRiwweEI3LDB4N0YsMHhEQSwweDg1LDB4NTksMHgy
MywweDUxLDB4NkEsMHhFOCwweEFBLDB4QjcsCisgICAgMHg4NSwweDU5LDB4MjMsMHg1MSwweEY1
LDB4NzcsMHg1QywweEVFLDB4QzYsMHg2MSwweDI0LDB4NTEsMHgwQiwweEFGLDB4RUYsMHg1NywK
KyAgICAweEE2LDB4NjEsMHg0NCwweDUxLDB4ODgsMHhFQiwweDdFLDB4NkIsMHg2NCwweDU5LDB4
MDMsMHg0OSwweDJBLDB4RkUsMHhERSwweEZGLAorICAgIDB4NDQsMHg1MSwweDAzLDB4NDksMHgw
MCwweEFFLDB4OTYsMHg1NywweDg1LDB4NTksMHgyMywweDQ5LDB4QUYsMHgyRiwweEFGLDB4RkQs
CisgICAgMHhFNSwweDYxLDB4NjUsMHg1MSwweDJBLDB4MkYsMHhBRCwweEFELDB4ODcsMHg3QSww
eEU1LDB4NjEsMHgzRCwweEVELDB4MzUsMHhCNSwKKyAgICAweDRCLDB4OTMsMHg4OCwweDdBLDB4
MkIsMHgyRCwweDJELDB4MkQsMHhEMywweERELDB4NkEsMHg5MywweDJELDB4QkQsMHhGNSwweEQ1
LAorICAgIDB4QjYsMHhGNiwweDBELDB4QTQsMHgwMCwweDAyLDB4MkYsMHhCNSwweEQ3LDB4RkUs
MHhGNCwweERELDB4MDAsMHgwMCwweEFBLDB4RjUsCisgICAgMHhENywweEY2LDB4QjIsMHhENSww
eDAwLDB4ODAsMHhFQSwweDVGLDB4QjYsMHhGNiwweDUwLDB4Q0QsMHgwMCwweDAwLDB4MEEsMHhG
NSwKKyAgICAweEQ2LDB4RjYsMHg1NSwweEVFLDB4ODAsMHgyMiwweDIyLDB4QkQsMHhENiwweEY2
LDB4QjYsMHhGNiwweEVELDB4N0YsMHg3QSwweDlELAorICAgIDB4RDYsMHhGNiwweEI2LDB4RjYs
MHgyRiwweEFCLDB4QkIsMHg1NSwweEQ2LDB4RjYsMHhCNiwweEY2LDB4QTgsMHhERSwweEZFLDB4
QkYsCisgICAgMHhENiwweEY2LDB4QjYsMHhGNiwweEEzLDB4MkIsMHg4OCwweDZBLDB4RjcsMHhG
RSwweEI2LDB4RjYsMHhBOSwweEE3LDB4M0QsMHgwRCwKKyAgICAweEY3LDB4RkUsMHhENywweEY2
LDB4NkYsMHhCRiwweEU4LDB4RkMsMHhGNywweEZFLDB4RDcsMHhGNiwweDJBLDB4MkIsMHhDQSww
eDYwLAorICAgIDB4RDcsMHhGRSwweDcyLDB4RDUsMHg4MCwweDgwLDB4RTAsMHg3QSwweDM0LDB4
RTYsMHg4NywweDdBLDB4QTAsMHhFOCwweDZBLDB4N0UsCisgICAgMHg4QiwweDlCLDB4MDUsMHg3
MiwweDU4LDB4NUUsMHg1NywweDU1LDB4NDYsMHg3QSwweDA1LDB4NzIsMHhBNywweEVGLDB4RTgs
MHgwMywKKyAgICAweDY3LDB4ODIsMHgyNiwweDdBLDB4MkYsMHgwRCwweDA1LDB4MkQsMHg4Nyww
eDhBLDB4NDYsMHg4MiwweDM5LDB4MkUsMHhBRiwweEUyLAorICAgIDB4ODgsMHg4QSwweDI2LDB4
ODIsMHhBOCwweEUyLDB4NTMsMHg3QiwweDY3LDB4OEEsMHhFNSwweDc5LDB4NzYsMHhGMCwweEZF
LDB4RUYsCisgICAgMHg0NiwweDgyLDB4RTQsMHg3MSwweEVCLDB4NkYsMHhDQiwweDAzLDB4Qzgs
MHg5MiwweDI1LDB4N0EsMHhERCwweEY3LDB4QkYsMHgyRiwKKyAgICAweDUyLDB4RDUsMHhBOCww
eDhBLDB4MzUsMHgzNSwweDNELDB4MkQsMHhGOCwweEZFLDB4RDMsMHhFNSwweDJELDB4MEIsMHgw
QiwweDAzLAorICAgIDB4MTcsMHhGRiwweEY4LDB4RkUsMHhCOSwweEE5LDB4RUYsMHhCQiwweDM4
LDB4RkYsMHhGNywweEY2LDB4QUIsMHhCQiwweEFGLDB4OEYsCisgICAgMHgxOCwweEZGLDB4Mzcs
MHhGNywweEVCLDB4QUEsMHhCQSwweEFBLDB4MzgsMHhGRiwweDE4LDB4RkYsMHg1RSwweDVBLDB4
REEsMHhCRiwKKyAgICAweDE4LDB4RkYsMHgzOCwweEY3LDB4MjgsMHhBMiwweDI4LDB4QUEsMHgx
OCwweEZGLDB4RjcsMHhGNiwweDc4LDB4NzgsMHg3QywweDc4LAorICAgIDB4RjcsMHhGNiwweEQ3
LDB4RjYsMHhENiwweEFDLDB4MkEsMHgwMiwweEY3LDB4RjYsMHhENywweEY2LDB4RjgsMHhFOCww
eDJBLDB4QUUsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEVBLDB4NjIsMHg4QSwweEFBLDB4
RjcsMHhGNiwweEQ3LDB4RjYsMHgwRSwweDNBLDB4RUUsMHhGNiwKKyAgICAweEY3LDB4RjYsMHhE
NywweEY2LDB4ODAsMHgwMCwweEJBLDB4QkYsMHhGNywweEY2LDB4RDcsMHhGNiwweEE4LDB4RkUs
MHhCOCwweEFBLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHgyQywweEFDLDB4QUEsMHgyOCww
eDE3LDB4RkYsMHhENywweEY2LDB4QkYsMHgwQiwweDBCLDB4ODIsCisgICAgMHgxOCwweEY3LDB4
QjYsMHhGNiwweEUwLDB4RjgsMHg3OCwweDVGLDB4RDYsMHhGNiwweDk2LDB4RUUsMHhGQSwweEZB
LDB4RUEsMHhGRiwKKyAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4MkIsMHhBRiwweEY3LDB4NUYs
MHhCNiwweEY2LDB4OTYsMHhFRSwweDM4LDB4RUYsMHg1RiwweDdELAorICAgIDB4QjcsMHhGNiww
eDU1LDB4RTYsMHhFOCwweEZBLDB4NkUsMHg1NywweDc1LDB4RUUsMHgxNCwweEU2LDB4RTgsMHhF
MiwweEZBLDB4N0YsCisgICAgMHg5NiwweEVFLDB4RjMsMHhERCwweDVCLDB4QkYsMHhBRiwweDBG
LDB4RDcsMHhGRSwweDM0LDB4RTYsMHhCNSwweDJGLDB4MDIsMHgwMiwKKyAgICAweEY3LDB4RjYs
MHhCNywweEY2LDB4RkYsMHhGQSwweEVBLDB4QTgsMHhGNywweEY2LDB4RDcsMHhGNiwweDU1LDB4
RUYsMHg5RCwweDNELAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg1RiwweDc2LDB4NUYsMHhG
RiwweEY3LDB4RjYsMHhCNiwweEVFLDB4REIsMHhBQiwweEFFLDB4QUUsCisgICAgMHhENywweEY2
LDB4RjcsMHhFRSwweDAwLDB4ODIsMHhBMiwweDA4LDB4QjcsMHhGNiwweEY3LDB4RUUsMHhBQiww
eDJGLDB4QUIsMHgyQSwKKyAgICAweEY3LDB4RjYsMHhCNywweEY2LDB4MkEsMHhCQiwweEVGLDB4
RkYsMHhENywweEY2LDB4QjYsMHhFRSwweDgwLDB4RTAsMHhGOCwweEZDLAorICAgIDB4RDcsMHhG
NiwweEI3LDB4RUUsMHg0RSwweEFBLDB4QUEsMHgwQSwweEQ3LDB4RjYsMHhCNywweEVFLDB4QUEs
MHhBRSwweEZBLDB4NEEsCisgICAgMHhENywweEY2LDB4QjYsMHhFRSwweEVGLDB4RkYsMHhFRiww
eEEyLDB4RDcsMHhGNiwweEI3LDB4RUUsMHhGRiwweEFBLDB4ODIsMHgwMCwKKyAgICAweEQ3LDB4
RjYsMHhCNywweEVFLDB4MkEsMHg4MiwweEE4LDB4QkEsMHhENywweEY2LDB4QjcsMHhFRSwweEE4
LDB4MDgsMHgwMCwweDAwLAorICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHhGRiwweEVCLDB4RUEs
MHhFQSwweEQ3LDB4RjYsMHhCNiwweEVFLDB4ODgsMHhBQywweDNFLDB4QUEsCisgICAgMHhCNyww
eEY2LDB4RjcsMHhFRSwweEJBLDB4RkEsMHhBRSwweEFFLDB4RjcsMHhGNiwweEQ3LDB4RUUsMHhG
NSwweEZELDB4QUYsMHhBOSwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4RUQsMHhBRCwweEJF
LDB4QUUsMHgxOCwweEZGLDB4RDcsMHhGNiwweDBCLDB4MjksMHhBRiwweEFGLAorICAgIDB4Mzgs
MHhGRiwweDE4LDB4RjcsMHgyMywweDJCLDB4QUYsMHhCNSwweDM4LDB4RkYsMHhGOCwweEY2LDB4
RTgsMHhFOCwweEEwLDB4QTIsCisgICAgMHgxOCwweEY3LDB4RDcsMHhGNiwweDdFLDB4NUUsMHg1
RSwweDUwLDB4RDcsMHhGNiwweEI3LDB4RUUsMHhFOCwweDcwLDB4NzIsMHg1RSwKKyAgICAweEQ3
LDB4RjYsMHg5NiwweEVFLDB4RkEsMHhGRSwweDdGLDB4REYsMHg5NiwweEVFLDB4OTcsMHhFNiww
eDAwLDB4ODgsMHgyMiwweDgwLAorICAgIDB4OTYsMHhFRSwweDc2LDB4RTYsMHgyMCwweDIwLDB4
MEIsMHgwOCwweEQ3LDB4RjYsMHg5NiwweEVFLDB4MkYsMHgxRCwweEE3LDB4M0QsCisgICAgMHhE
NywweEY2LDB4RjQsMHhERCwweDYwLDB4NjAsMHg2MCwweDY4LDB4RjMsMHhENSwweEVGLDB4QkMs
MHhCRiwweDI3LDB4QkYsMHgzRiwKKyAgICAweEI3LDB4RjYsMHgzNCwweEU2LDB4MjksMHgwOSww
eDJCLDB4MjksMHhCNiwweEY2LDB4NzYsMHhFRSwweEU4LDB4QTgsMHhFMiwweDZBLAorICAgIDB4
NTUsMHhFRSwweDkyLDB4RDUsMHg1OCwweDU4LDB4NTgsMHhGOCwweEQzLDB4RDUsMHg5MiwweENE
LDB4NTUsMHg3QiwweDZBLDB4N0UsCisgICAgMHhCMiwweEQ1LDB4NzEsMHhDRCwweDBELDB4MzUs
MHhGNSwweDk3LDB4RjMsMHhERCwweEIyLDB4RDUsMHgwRiwweDBELDB4MEYsMHgwMSwKKyAgICAw
eDkyLDB4RDUsMHg4RSwweEI0LDB4RDgsMHhGQywweDU4LDB4N0MsMHhDRiwweEJDLDB4NEQsMHhB
NCwweDJBLDB4MEEsMHgyQiwweDI3LAorICAgIDB4RDMsMHhERCwweDEwLDB4QzUsMHgwOSwweDI5
LDB4QTksMHhBRCwweDc1LDB4RUUsMHhEMywweEQ1LDB4MkQsMHgzRCwweEI1LDB4RjUsCisgICAg
MHhCNiwweEY2LDB4NTUsMHhFNiwweDhBLDB4QUEsMHhFQiwweEI1LDB4NzUsMHhFRSwweDM0LDB4
RTYsMHg2MCwweEYwLDB4RTAsMHgyMiwKKyAgICAweDU1LDB4RTYsMHgzNCwweEU2LDB4M0IsMHgy
OCwweDQ4LDB4NUMsMHg3NSwweEVFLDB4MzQsMHhFNiwweEY3LDB4RjUsMHhCNSwweEI1LAorICAg
IDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBQSwweEE4LDB4QUQsMHhFRCwweEQ2LDB4RjYsMHhCNiww
eEVFLDB4RkIsMHhBRiwweEFCLDB4QTIsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEZDLDB4
QjAsMHhBQSwweEZBLDB4RDYsMHhGNiwweEI3LDB4RUUsMHhFQSwweEZBLDB4RjgsMHhFOCwKKyAg
ICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4QUIsMHhBQSwweEFBLDB4QUIsMHhENiwweEY2LDB4RDcs
MHhFRSwweEFBLDB4OEEsMHhBOCwweDhBLAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBQSww
eEVBLDB4RTAsMHgwMiwweEQ2LDB4RjYsMHhCNiwweEVFLDB4RUEsMHgyMSwweEVFLDB4QjIsCisg
ICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEZGLDB4RkUsMHhCRSwweDIyLDB4RDYsMHhGNiwweEI2
LDB4RUUsMHhEQSwweDc3LDB4REUsMHg5MCwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4RTks
MHhBQiwweEFCLDB4MkIsMHhENiwweEY2LDB4QjYsMHhFRSwweDJBLDB4M0QsMHgwNywweDVBLAor
ICAgIDB4RDYsMHhGNiwweDk2LDB4RUUsMHhGRSwweEZFLDB4RkUsMHhGRSwweEI2LDB4RjYsMHg5
NiwweEVFLDB4REEsMHhCQSwweDlFLDB4N0YsCisgICAgMHhCNiwweEY2LDB4OTYsMHhFRSwweEFF
LDB4QUUsMHg4QSwweDJCLDB4OTYsMHhGNiwweEI2LDB4RUUsMHhCRiwweEFCLDB4QUYsMHhGNywK
KyAgICAweDk1LDB4RjYsMHhCNiwweEVFLDB4RkQsMHhENSwweDU2LDB4NTcsMHhENiwweEY2LDB4
OTUsMHhFRSwweEVCLDB4RkYsMHg5RiwweDJGLAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHgy
RCwweDJCLDB4MEQsMHgyRSwweEQ2LDB4RjYsMHhGNywweEVFLDB4ODAsMHhBMCwweDAwLDB4Mjgs
CisgICAgMHhGNiwweEY2LDB4QjYsMHhFRSwweEUyLDB4QkEsMHhFRSwweEZGLDB4RjYsMHhGNiww
eEQ2LDB4RjYsMHg1NiwweEQ1LDB4RkQsMHhGRiwKKyAgICAweEY2LDB4RjYsMHhCNiwweEVFLDB4
QkYsMHhBRSwweEZFLDB4RUEsMHhGNSwweEZFLDB4RDcsMHhGNiwweDU3LDB4NTUsMHhGNSwweDVE
LAorICAgIDB4RDcsMHhGNiwweDMzLDB4RUUsMHg2MCwweEUwLDB4ODAsMHhBMCwweEYyLDB4REQs
MHg4MywweDU5LDB4NUUsMHg1QywweDc4LDB4NzgsCisgICAgMHg4NCwweDUxLDB4MDMsMHg0OSww
eEEwLDB4N0UsMHhGRSwweDdFLDB4NjQsMHg1MSwweDAzLDB4NDksMHgzRSwweEQ3LDB4QkIsMHhC
QiwKKyAgICAweDY0LDB4NTksMHgyMywweDQ5LDB4QjgsMHhCQywweEZCLDB4N0YsMHg2MywweDUx
LDB4MjQsMHg1MSwweDVFLDB4N0UsMHhCQSwweDVGLAorICAgIDB4NDUsMHg1MSwweDA0LDB4NDks
MHgwMiwweEI3LDB4NTgsMHg1RCwweDI0LDB4NTEsMHhFMywweDQwLDB4MDgsMHhBQSwweDc3LDB4
NzcsCisgICAgMHgyNCwweDQ5LDB4QzIsMHg0MCwweEE4LDB4QUUsMHgwOSwweEI3LDB4ODUsMHg1
OSwweDAzLDB4NDksMHhCQiwweDA3LDB4MkQsMHhCRCwKKyAgICAweDA2LDB4NkEsMHg2NCwweDU5
LDB4QUIsMHhBRiwweEFGLDB4MkQsMHhBOCwweDdBLDB4QzUsMHg2MSwweEI1LDB4QUQsMHgyRiww
eDJCLAorICAgIDB4MkEsMHg4QiwweDg4LDB4NzIsMHgyRCwweDJGLDB4QkQsMHhBRCwweEFCLDB4
OUIsMHgwQSwweDhCLDB4MkIsMHhBRiwweEE5LDB4QkQsCisgICAgMHg0RSwweEFDLDB4NkEsMHg5
MywweDNGLDB4REQsMHg1NSwweDU1LDB4MzEsMHhDNSwweDZCLDB4OTMsMHgwMiwweEZGLDB4NTUs
MHg1NSwKKyAgICAweDMxLDB4QzUsMHg0QSwweDhCLDB4QTAsMHhGQiwweEY3LDB4NUQsMHgwRiww
eEM1LDB4NEEsMHg4QiwweDJBLDB4QUYsMHhERiwweDU1LAorICAgIDB4MzQsMHhFNiwweDhCLDB4
OTMsMHgwMiwweEJCLDB4RjUsMHg1NSwweDc1LDB4RUUsMHg4QSwweDkzLDB4MDAsMHg4QSwweEZG
LDB4NTUsCisgICAgMHg5NiwweEY2LDB4MkMsMHhBNCwweDAwLDB4MDIsMHhBRiwweDU1LDB4OTYs
MHhGNiwweENGLDB4QkMsMHgwMCwweDAwLDB4QUEsMHg1NSwKKyAgICAweEI2LDB4RjYsMHhDRiww
eEJDLDB4MDAsMHgyMiwweEZFLDB4NTUsMHhENywweEY2LDB4RjAsMHhDNCwweDAwLDB4MDIsMHgy
QiwweEJELAorICAgIDB4RDcsMHhGRSwweDE0LDB4RTYsMHgwMCwweDAwLDB4ODIsMHg1NSwweEI3
LDB4RjYsMHhEMCwweEM0LDB4MDAsMHg4MCwweEEwLDB4N0UsCisgICAgMHgxNSwweEU2LDB4Qzks
MHg4MiwweEEwLDB4RTgsMHg3QSwweDVGLDB4Q0MsMHhBMywweEU1LDB4NjksMHg3OCwweDVFLDB4
NUYsMHg3NSwKKyAgICAweDI2LDB4NzIsMHhDNCwweDY5LDB4REEsMHg4QSwweDA4LDB4RUEsMHg0
NiwweDgyLDB4MDUsMHg3MiwweDhGLDB4ODEsMHg4QiwweEVCLAorICAgIDB4ODcsMHg4QSwweDQ3
LDB4ODIsMHhCRCwweDAzLDB4MjksMHg3NSwweDg4LDB4OEEsMHgwNSwweDdBLDB4QTAsMHg5OCww
eEI4LDB4RjMsCisgICAgMHg2NywweDhBLDB4RTUsMHg3OSwweEVBLDB4QUEsMHhGRSwweEY2LDB4
NjcsMHg4QSwweEU1LDB4NzksMHhBNywweEFCLDB4MjcsMHgwRiwKKyAgICAweEE4LDB4OTIsMHgw
NSwweDgyLDB4QkQsMHhGRiwweDJBLDB4MkEsMHgyOSwweDlCLDB4NjcsMHg4MiwweEI1LDB4QkYs
MHhBQiwweDJGLAorICAgIDB4RDMsMHhFNSwweDI5LDB4OUIsMHgyNSwweDNELDB4MkQsMHgyRCww
eEY3LDB4RkUsMHg1NSwweEVFLDB4MDEsMHgwOSwweDAzLDB4MDMsCisgICAgMHgxOCwweEZGLDB4
RjgsMHhGRSwweEFCLDB4QUQsMHhGQiwweEJCLDB4MzgsMHhGRiwweEY4LDB4RjYsMHhBRiwweEVG
LDB4RkYsMHhBRiwKKyAgICAweDE4LDB4RkYsMHgzOCwweEY3LDB4QTIsMHhBMCwweDIyLDB4QTgs
MHgzOCwweEZGLDB4MTgsMHhGNywweEFGLDB4RkYsMHhCRSwweEFGLAorICAgIDB4MzgsMHhGRiww
eDE4LDB4RkYsMHhGRSwweDdBLDB4N0EsMHg2RSwweDE4LDB4RkYsMHhGNywweEY2LDB4NzgsMHg3
RSwweERBLDB4RUEsCisgICAgMHgxNywweEZGLDB4RjcsMHhGNiwweEQ3LDB4NUQsMHg1NSwweDdE
LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBOCwweDBFLDB4MkIsMHg4OCwKKyAgICAweEY3LDB4RkUs
MHhGNywweEY2LDB4RkQsMHhENywweDdELDB4REYsMHhGNywweEY2LDB4RDcsMHhGNiwweDYwLDB4
RjAsMHg4MCwweDhCLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBQiwweDBBLDB4MkYsMHgy
NiwweEQ3LDB4RkUsMHhGNywweEY2LDB4REQsMHhENywweDU3LDB4RDUsCisgICAgMHgxOCwweEZG
LDB4RjcsMHhGNiwweDk1LDB4MkQsMHgyQiwweENGLDB4MTcsMHhGRiwweEI2LDB4RjYsMHhBMCww
eEUwLDB4N0MsMHg3RSwKKyAgICAweEQ2LDB4RjYsMHg5NiwweEVFLDB4RkEsMHhGQSwweERFLDB4
RkUsMHhCNiwweEY2LDB4OTYsMHhFRSwweEZGLDB4QkYsMHgzRiwweDc3LAorICAgIDB4QjYsMHhG
NiwweDk2LDB4RUUsMHhGRiwweEFGLDB4QTksMHgyQiwweEI2LDB4RjYsMHgzNSwweEU2LDB4QUEs
MHhFMCwweEZBLDB4NzgsCisgICAgMHg1NSwweEU2LDB4RDMsMHhERCwweDIwLDB4RTIsMHhGQSww
eDVBLDB4MzUsMHhFNiwweDkzLDB4Q0QsMHgyMCwweEFBLDB4QjcsMHgzNywKKyAgICAweEQ3LDB4
RkUsMHg1NSwweEU2LDB4QjUsMHhBNSwweEFELDB4MkIsMHhENywweEY2LDB4QjcsMHhGNiwweDAx
LDB4MkQsMHgwOCwweDAyLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhERiwweEVELDB4N0Qs
MHhGQiwweEY3LDB4RjYsMHhENywweEY2LDB4QUYsMHhFMywweEVELDB4NUIsCisgICAgMHhGNyww
eEY2LDB4RDcsMHhGNiwweDZBLDB4RUUsMHhGRCwweDU1LDB4RjcsMHhGNiwweEI2LDB4RUUsMHhB
QSwweEZGLDB4QTYsMHhBRiwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4NzUsMHg3NywweDU1
LDB4RkQsMHhENywweEY2LDB4QjYsMHhFRSwweEQ4LDB4RTgsMHg4MCwweDgwLAorICAgIDB4RDcs
MHhGNiwweEI2LDB4RUUsMHgzQiwweEJCLDB4N0MsMHhFMCwweEQ3LDB4RjYsMHhCNiwweEVFLDB4
N0UsMHhFRiwweDJCLDB4OEEsCisgICAgMHhGNywweEY2LDB4QjcsMHhFRSwweEFCLDB4RUUsMHhF
MiwweEZBLDB4RDcsMHhGNiwweEI3LDB4RUUsMHhBOCwweDgwLDB4MDIsMHgwMiwKKyAgICAweEQ3
LDB4RjYsMHhCNywweEVFLDB4ODIsMHhCQSwweDNBLDB4RkEsMHhENywweEY2LDB4QjcsMHhFRSww
eDg4LDB4MkEsMHhGQSwweEVBLAorICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHhBRSwweEFGLDB4
RUIsMHg3RCwweEQ3LDB4RjYsMHhCNiwweEVFLDB4OEEsMHgyMywweDBBLDB4NUYsCisgICAgMHhG
NywweEY2LDB4QjcsMHhFRSwweEVBLDB4QUIsMHhGQiwweEZGLDB4RDcsMHhGNiwweEI3LDB4RUUs
MHhBQSwweEIyLDB4QTgsMHgwQSwKKyAgICAweEQ3LDB4RjYsMHhENywweEVFLDB4RTIsMHhBOCww
eEFBLDB4QUEsMHhENywweEY2LDB4RjcsMHhFNiwweDg4LDB4MjAsMHg4MiwweDIwLAorICAgIDB4
RDcsMHhGNiwweEY3LDB4RUUsMHhBQSwweEE4LDB4ODAsMHgwMCwweDE4LDB4RkYsMHhENywweEY2
LDB4QkEsMHhBRiwweEJGLDB4RkQsCisgICAgMHgzOCwweEZGLDB4RjcsMHhGNiwweEFGLDB4QkQs
MHhCNSwweEQ1LDB4MTgsMHhGRiwweDM4LDB4RjcsMHhBQywweEEyLDB4QTgsMHg4MCwKKyAgICAw
eDM4LDB4RkYsMHhENywweEY2LDB4NUEsMHg3QSwweDY4LDB4RTgsMHhENywweEY2LDB4OTYsMHhF
RSwweDdBLDB4NUEsMHg1RSwweDVDLAorICAgIDB4OTYsMHhFRSwweDc2LDB4RTYsMHgyMCwweDM4
LDB4QzAsMHg4MCwweDk2LDB4RUUsMHg3NiwweEU2LDB4RjAsMHgzOCwweDgwLDB4QjksCisgICAg
MHg5NiwweEVFLDB4NzYsMHhFRSwweDA4LDB4MjAsMHhBOCwweDVFLDB4RDcsMHhGNiwweDc2LDB4
RUUsMHgyRSwweEFGLDB4QkYsMHhCRCwKKyAgICAweEI3LDB4RjYsMHgxMywweERFLDB4NjAsMHg0
MCwweDYwLDB4NDAsMHhEMiwweEQ1LDB4MzAsMHhDNSwweDE3LDB4MzcsMHgzNywweDM3LAorICAg
IDB4QjYsMHhGNiwweDE0LDB4REUsMHgwOSwweDI5LDB4MjksMHgyRCwweEI2LDB4RjYsMHg3Niww
eEVFLDB4RTIsMHhFMiwweEU4LDB4QTAsCisgICAgMHg3NiwweEVFLDB4RDMsMHhENSwweDVBLDB4
NTgsMHg1OCwweDc4LDB4OTMsMHhENSwweEQyLDB4Q0QsMHhBQiwweEFBLDB4QUUsMHhCRiwKKyAg
ICAweEIyLDB4RDUsMHg3MiwweENELDB4QkUsMHhBRSwweEFBLDB4QUIsMHgxNSwweERFLDB4QjMs
MHhENSwweEFGLDB4M0QsMHhBNSwweEE3LAorICAgIDB4QjMsMHhENSwweDRELDB4QUMsMHg1OCww
eDc4LDB4NzgsMHg3OCwweENFLDB4QkMsMHgyQywweEE0LDB4QkYsMHhCRiwweEJGLDB4MzUsCisg
ICAgMHg3MSwweENELDB4RUYsMHhCQywweDA5LDB4MkQsMHhBRCwweDAzLDB4RjQsMHhERCwweDcy
LDB4Q0QsMHgyQiwweDJELDB4M0YsMHgyRiwKKyAgICAweDk1LDB4RUUsMHhGMywweERELDB4MkIs
MHg4RiwweDJGLDB4MjksMHg5NiwweEVFLDB4NTUsMHhFNiwweEJFLDB4N0UsMHg3QSwweDVFLAor
ICAgIDB4NzUsMHhFRSwweDM1LDB4RTYsMHg3QywweEYyLDB4RUIsMHhFQiwweDc1LDB4RUUsMHgz
NCwweEU2LDB4QUQsMHgzRiwweEJGLDB4NTYsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEFE
LDB4RkEsMHhGQSwweEVBLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhCQSwweEFCLDB4OUIsMHg3MiwK
KyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4QUEsMHgyQSwweEFFLDB4RjcsMHhENywweEY2LDB4
QjYsMHhFRSwweDJBLDB4QTgsMHgzOCwweDM2LAorICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHhC
RSwweEI4LDB4MDksMHgyQiwweEQ2LDB4RjYsMHhCNiwweEVFLDB4OEIsMHhBQSwweDIyLDB4MDAs
CisgICAgMHhENywweEY2LDB4RjYsMHhFRSwweDgwLDB4QTAsMHg4OCwweDIyLDB4RDYsMHhGNiww
eEQ3LDB4RUUsMHg4QSwweEFBLDB4QTIsMHhBQSwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4
OEEsMHgwQSwweDIyLDB4MDIsMHhENiwweEY2LDB4RjcsMHhFRSwweDAwLDB4MEEsMHgyOCwweDgy
LAorICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHhGRiwweEVCLDB4RUMsMHhFQSwweEQ2LDB4RjYs
MHhCNiwweEVFLDB4NzYsMHg1QiwweEZFLDB4RkUsCisgICAgMHg5NiwweEY2LDB4QjYsMHhFRSww
eEVELDB4QkQsMHhFRCwweEU1LDB4QjYsMHhGNiwweDk2LDB4RUUsMHhBQSwweEJBLDB4MkEsMHg4
MiwKKyAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4QUUsMHhGOCwweEFCLDB4ODEsMHhCNywweEY2
LDB4QjYsMHhFRSwweDZCLDB4RUEsMHhFRSwweEZGLAorICAgIDB4OTUsMHhGNiwweEI2LDB4RUUs
MHg3RCwweDU3LDB4NTUsMHg1NSwweEQ2LDB4RjYsMHhCNiwweEVFLDB4QjUsMHhGRiwweEJGLDB4
RjcsCisgICAgMHhENiwweEY2LDB4RjYsMHhFRSwweDgwLDB4QTgsMHhBMCwweDgwLDB4RjcsMHhG
NiwweEQ2LDB4RjYsMHg3NSwweDdCLDB4NUEsMHg3QSwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVF
LDB4QTIsMHgyOCwweEEwLDB4MDAsMHhENiwweEY2LDB4QjYsMHhFRSwweDAyLDB4MDAsMHgyOCww
eEEwLAorICAgIDB4RjYsMHhGNiwweEQ2LDB4RjYsMHg1RiwweDVGLDB4QjYsMHhCNSwweEQ2LDB4
RjYsMHhENywweEVFLDB4MEEsMHgyOCwweDJBLDB4QTgsCisgICAgMHhGNywweEZFLDB4QjYsMHhG
NiwweDdFLDB4RUEsMHhBQiwweERBLDB4OTUsMHhFRSwweDI2LDB4NjIsMHg3OCwweDYwLDB4RTAs
MHhFMCwKKyAgICAweDg0LDB4NTEsMHgwMywweDQxLDB4N0YsMHg3QywweEQ0LDB4NUMsMHg2NSww
eDUxLDB4RTMsMHg0MCwweDJBLDB4ODMsMHhBMiwweEE5LAorICAgIDB4NDQsMHg1MSwweEUyLDB4
NDAsMHhBRSwweDI2LDB4RjAsMHg4QSwweDQ0LDB4NTEsMHgwMywweDQ5LDB4NEIsMHg3QSwweDRE
LDB4QUIsCisgICAgMHgyNCwweDQ5LDB4MDMsMHg0OSwweDQ5LDB4RjQsMHhGRSwweDc4LDB4MjQs
MHg0OSwweEMyLDB4MzgsMHhGQSwweERBLDB4RjIsMHhGOCwKKyAgICAweDIzLDB4NDEsMHhFMyww
eDQwLDB4NzUsMHg4NSwweDY5LDB4RjUsMHg2NCwweDUxLDB4RTIsMHg0MCwweDBGLDB4MEIsMHgy
RiwweDI1LAorICAgIDB4MjYsMHg2QSwweDY0LDB4NTEsMHgzNSwweDBGLDB4MEYsMHgyOSwweEM5
LDB4N0EsMHg2NywweDcyLDB4MkQsMHgyOSwweDI5LDB4MEQsCisgICAgMHgwOSwweDgzLDB4QTgs
MHg3QSwweEFGLDB4QjksMHhGNywweDJGLDB4NkEsMHg5MywweEU5LDB4ODIsMHgyQiwweDA5LDB4
QUQsMHhCRiwKKyAgICAweDZCLDB4OTMsMHgwOSwweDhCLDB4OEEsMHgwQSwweEZCLDB4N0UsMHg0
QSwweDhCLDB4QzksMHg4MiwweDIwLDB4QjIsMHhGQSwweDc3LAorICAgIDB4NEEsMHg4QiwweEE4
LDB4N0EsMHg4OCwweEZDLDB4NUYsMHg1NywweDI5LDB4OEIsMHhBOCwweDdBLDB4MDgsMHhFQSww
eEZELDB4NTUsCisgICAgMHg2QSwweDkzLDB4QzgsMHg3QSwweDBGLDB4QjcsMHhENSwweDU1LDB4
OEIsMHg5MywweEU5LDB4ODIsMHgwOCwweEFGLDB4RkYsMHg3NSwKKyAgICAweENCLDB4OUIsMHgw
OSwweDhCLDB4MjAsMHhBQiwweEFGLDB4QjUsMHgyQywweEFDLDB4NkEsMHg5MywweDJBLDB4QUYs
MHhCRCwweDdELAorICAgIDB4MkQsMHhBQywweENDLDB4QTMsMHgwMiwweEZFLDB4RkYsMHg3RCww
eEYwLDB4QzQsMHg4QiwweDlCLDB4MkIsMHhCRiwweEQ1LDB4NTUsCisgICAgMHgxMCwweENELDB4
RTgsMHg4QSwweDAwLDB4RUEsMHhGRiwweDdGLDB4NkUsMHhCNCwweDQ2LDB4N0EsMHg4MCwweEZB
LDB4N0YsMHg1RiwKKyAgICAweEU5LDB4OEEsMHhFNSwweDY5LDB4RjgsMHg3RSwweDdGLDB4N0Ys
MHg2NywweDdBLDB4MDUsMHg2QSwweDdGLDB4QTUsMHhBRiwweEVCLAorICAgIDB4NDcsMHg3QSww
eEU1LDB4NzEsMHg1QSwweDc4LDB4NUEsMHg3RSwweDI2LDB4N0EsMHhDNSwweDcxLDB4QjIsMHgy
RiwweEJGLDB4RkQsCisgICAgMHg0NiwweDgyLDB4RTUsMHg3MSwweDBBLDB4MEIsMHhFQSwweEY1
LDB4NDcsMHg4MiwweEU1LDB4NzksMHhGOCwweEVCLDB4NkIsMHhBQiwKKyAgICAweDY3LDB4OEEs
MHhFNSwweDc5LDB4OUUsMHhCQiwweDJELDB4MkEsMHhDOSwweDkyLDB4NDYsMHg4MiwweEY1LDB4
QkQsMHhCQSwweEEyLAorICAgIDB4QTgsMHg5MiwweDQ2LDB4ODIsMHhERiwweDE3LDB4MkUsMHg4
OCwweDRBLDB4OUIsMHhDOCwweDkyLDB4QkQsMHhCRCwweEJELDB4MzUsCisgICAgMHg3NiwweEY2
LDB4QUIsMHhBQiwweDJELDB4MEQsMHgyQiwweDA5LDB4RjcsMHhGRSwweEI2LDB4RjYsMHgwMyww
eDAzLDB4MDAsMHgwMCwKKyAgICAweDE3LDB4RkYsMHhGNywweEY2LDB4RUYsMHhFRiwweEFBLDB4
QUIsMHgzOCwweEZGLDB4RjcsMHhGNiwweEVGLDB4QUQsMHhBRiwweEJGLAorICAgIDB4MzgsMHhG
RiwweDE3LDB4RjcsMHhGRiwweEJELDB4RDcsMHhGNSwweDM3LDB4RkYsMHgxOCwweEY3LDB4QkUs
MHhCRiwweEZGLDB4RkYsCisgICAgMHgzOCwweEZGLDB4MTcsMHhGNywweEZBLDB4NkUsMHhGRSww
eERGLDB4RjcsMHhGRSwweDE4LDB4RjcsMHhGRCwweDVGLDB4RkYsMHg3RiwKKyAgICAweDE3LDB4
RjcsMHhGNywweEY2LDB4NzcsMHhGNiwweDdFLDB4RjIsMHgxNywweEY3LDB4RjcsMHhGNiwweDU1
LDB4NzcsMHg1NiwweDU3LAorICAgIDB4MTcsMHhGRiwweEY3LDB4RjYsMHhENywweDdGLDB4Rjcs
MHg1NSwweDE4LDB4RkYsMHhENywweEY2LDB4RkIsMHhBQiwweEVBLDB4RkUsCisgICAgMHgxOCww
eEZGLDB4RDcsMHhGNiwweEZGLDB4RkIsMHhBQiwweDJBLDB4MTgsMHhGRiwweEY3LDB4RjYsMHg3
RCwweEFGLDB4MEQsMHg4MiwKKyAgICAweDE4LDB4RkYsMHg5NSwweEVFLDB4QTAsMHhBOCwweDc4
LDB4NTYsMHhENiwweEY2LDB4NzQsMHhFRSwweEEwLDB4QUEsMHhGQSwweEZELAorICAgIDB4QjYs
MHhGNiwweDk2LDB4RUUsMHgyMiwweDhGLDB4MkIsMHhBQSwweEQ2LDB4RjYsMHg5NywweEVFLDB4
N0UsMHhCQSwweEFCLDB4QkYsCisgICAgMHhENywweEY2LDB4NzYsMHhFRSwweDhFLDB4RUEsMHhG
RSwweDdCLDB4OTYsMHhFRSwweDM0LDB4RTYsMHhGOCwweDdBLDB4NUUsMHg3RSwKKyAgICAweDc2
LDB4RUUsMHg5MiwweEQ1LDB4N0UsMHg1RSwweEFGLDB4MDIsMHhGNywweEZFLDB4QjMsMHhENSww
eEI1LDB4MkYsMHgwQSwweDIyLAorICAgIDB4RjcsMHhGRSwweEI3LDB4RjYsMHhCRiwweEFCLDB4
QUEsMHhBQSwweEY3LDB4RjYsMHhENywweEY2LDB4RkQsMHhENywweERELDB4NUYsCisgICAgMHhG
NywweEY2LDB4RDcsMHhGNiwweDhGLDB4QUQsMHhCNiwweEY3LDB4RjcsMHhGNiwweEQ3LDB4RjYs
MHg0RSwweDdBLDB4NzgsMHhGOCwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4NzUsMHg1Nyww
eDVGLDB4REYsMHhENywweEY2LDB4QjcsMHhFRSwweDAyLDB4QTgsMHhBMiwweDgwLAorICAgIDB4
RDcsMHhGNiwweEI2LDB4RUUsMHgwMCwweDBBLDB4MkIsMHhFRSwweEQ3LDB4RjYsMHhGNywweEVF
LDB4MDIsMHgyMCwweEEwLDB4MDAsCisgICAgMHhGNywweEY2LDB4QjYsMHhFRSwweEZFLDB4RTgs
MHhBQSwweEJBLDB4RDcsMHhGNiwweEI2LDB4RUUsMHgwOCwweDAyLDB4MDAsMHhBQywKKyAgICAw
eEY3LDB4RjYsMHhCNywweEVFLDB4RjIsMHhGQSwweEVGLDB4QkIsMHhENywweEY2LDB4QjcsMHhF
RSwweDhBLDB4MEEsMHhBQSwweEZBLAorICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHhFQSwweDY4
LDB4RkEsMHhCMiwweEQ3LDB4RjYsMHhCNiwweEVFLDB4NzcsMHhGRCwweDdCLDB4N0YsCisgICAg
MHhENywweEY2LDB4QjYsMHhFRSwweDZELDB4RUQsMHhBRCwweEVBLDB4RDcsMHhGNiwweEI3LDB4
RUUsMHg3RiwweEU5LDB4QkYsMHhCRSwKKyAgICAweEI3LDB4RjYsMHhENywweEVFLDB4RUUsMHhB
QiwweEZBLDB4RjksMHhENywweEY2LDB4OTcsMHhFRSwweDhBLDB4RTIsMHhBQSwweDA4LAorICAg
IDB4RDcsMHhGNiwweEI3LDB4RUUsMHg4OCwweEEyLDB4ODgsMHgwMCwweEQ3LDB4RjYsMHhGNyww
eEVFLDB4ODgsMHhBMCwweDg4LDB4MDIsCisgICAgMHhGOCwweEY2LDB4RDcsMHhGNiwweDc1LDB4
OEYsMHhBRiwweEFCLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhFOSwweEZCLDB4RkEsMHhBQiwKKyAg
ICAweDE5LDB4RjcsMHhGOCwweEY2LDB4RDUsMHhFRCwweEI1LDB4NTcsMHgzOCwweEZGLDB4Rjgs
MHhGNiwweEFGLDB4QUIsMHg5RiwweDc1LAorICAgIDB4MzgsMHhGRiwweEY4LDB4RjYsMHg3Miww
eDZBLDB4N0EsMHhGQiwweEY4LDB4RjYsMHg1NiwweEU2LDB4RkUsMHhFQywweEZDLDB4RjgsCisg
ICAgMHhCNywweEVFLDB4NzYsMHhFRSwweEZGLDB4RkEsMHhGRSwweEZBLDB4OTYsMHhFRSwweDc2
LDB4RTYsMHhFRiwweEFGLDB4QzAsMHhBQSwKKyAgICAweDk2LDB4RUUsMHg1NSwweEU2LDB4RUEs
MHhBQSwweEVCLDB4RjgsMHhCNywweEY2LDB4NzYsMHhFRSwweDNELDB4M0QsMHgyNSwweEI1LAor
ICAgIDB4QjcsMHhGNiwweDEzLDB4REUsMHg0MCwweDYwLDB4NjAsMHhFMCwweDEzLDB4REUsMHgw
RiwweEM1LDB4QjUsMHgzNywweDM3LDB4QjcsCisgICAgMHg5NiwweEVFLDB4MTQsMHhERSwweDBE
LDB4MkIsMHgyOSwweDBGLDB4QjcsMHhGNiwweDk2LDB4RUUsMHhBQSwweEFBLDB4MkEsMHhEQSwK
KyAgICAweDc2LDB4RUUsMHhEMywweEQ1LDB4NjAsMHhGOCwweDYwLDB4RTAsMHhEMywweERELDB4
QjMsMHhENSwweDZBLDB4ODIsMHhFMiwweEJGLAorICAgIDB4QjMsMHhENSwweDkyLDB4Q0QsMHhG
NiwweDE0LDB4QkMsMHg3MCwweEYzLDB4REQsMHg5MiwweENELDB4MkYsMHhCNywweEFGLDB4RkYs
CisgICAgMHhCMiwweEQ1LDB4MEMsMHg5QywweEY4LDB4NzAsMHg3OCwweDdBLDB4NzEsMHhDRCww
eDRELDB4QUMsMHhCNSwweDM1LDB4MjUsMHgyRCwKKyAgICAweDEzLDB4REUsMHg3MSwweENELDB4
RUQsMHhBRiwweEFBLDB4QUIsMHgzNSwweEU2LDB4QjMsMHhENSwweEU1LDB4RkQsMHhBQiwweDJF
LAorICAgIDB4OTYsMHhFRSwweDE0LDB4RTYsMHgyRCwweDBELDB4MEIsMHhBOSwweDk2LDB4RUUs
MHg1NSwweEU2LDB4NzgsMHg1RSwweDdFLDB4NUEsCisgICAgMHg1NSwweEU2LDB4MzQsMHhFNiww
eDA0LDB4MEMsMHhCMiwweDc5LDB4NTUsMHhFNiwweDM0LDB4RTYsMHhBMiwweDNGLDB4QjksMHgz
NywKKyAgICAweEI2LDB4RjYsMHhENiwweEVFLDB4RkYsMHhBQiwweENGLDB4NkIsMHhENiwweEY2
LDB4QjcsMHhFRSwweDgyLDB4QUEsMHg4MiwweEU4LAorICAgIDB4RDYsMHhGNiwweEI3LDB4RUUs
MHhBQSwweEVBLDB4MDgsMHg4MCwweEQ2LDB4RjYsMHhCNiwweEVFLDB4M0YsMHhBQiwweEFBLDB4
QTIsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDgyLDB4ODAsMHhFMCwweDcwLDB4RDcsMHhG
NiwweEI2LDB4RUUsMHg4MiwweDA3LDB4QUUsMHhBQSwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVF
LDB4MDIsMHgwOSwweDJCLDB4QUEsMHhENiwweEY2LDB4QjYsMHhFNiwweDAwLDB4ODgsMHgyMCww
eDJBLAorICAgIDB4RDYsMHhGNiwweEY4LDB4RUUsMHg4OCwweDA4LDB4QTIsMHgwOCwweEY3LDB4
RjYsMHhCNiwweEVFLDB4RUEsMHhDRSwweEJCLDB4NkIsCisgICAgMHhENywweEY2LDB4RjYsMHhF
RSwweDA4LDB4MjAsMHgyMCwweDJBLDB4QjYsMHhGNiwweEQ3LDB4RUUsMHhFRCwweEZGLDB4Qjcs
MHhGRCwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4NTcsMHg1RSwweERFLDB4NUUsMHg5Niww
eEY2LDB4QjYsMHhFRSwweERELDB4RkQsMHg1NSwweEQ1LAorICAgIDB4RDYsMHhGNiwweDk2LDB4
RUUsMHhBQiwweDI5LDB4QkIsMHhBQiwweEQ2LDB4RjYsMHhCNiwweEVFLDB4NUYsMHhGRSwweEJE
LDB4RDUsCisgICAgMHhENywweEY2LDB4QjYsMHhFRSwweEY1LDB4RjcsMHg3RSwweDVELDB4RDYs
MHhGNiwweEI2LDB4RUUsMHhERCwweEVCLDB4RjksMHg1RiwKKyAgICAweEQ2LDB4RjYsMHhCNiww
eEVFLDB4MjIsMHg4QSwweDJBLDB4MDIsMHhENiwweEY2LDB4RjYsMHhFRSwweEFBLDB4ODAsMHg4
OCwweDg4LAorICAgIDB4RjcsMHhGNiwweEQ2LDB4RjYsMHg3NywweERELDB4NzUsMHhGRiwweEY3
LDB4RjYsMHhCNSwweEY2LDB4RUEsMHhBOCwweDJCLDB4QUYsCisgICAgMHhGNywweEY2LDB4RDYs
MHhGNiwweEY1LDB4N0YsMHg2RSwweDZBLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg1RiwweEJCLDB4
QkYsMHhGRCwKKyAgICAweEI2LDB4RkUsMHhGNywweEY2LDB4QUUsMHhBRCwweEJGLDB4RUYsMHhC
NiwweEY2LDB4OEUsMHhBQywweDYwLDB4NjAsMHhDMCwweEMwLAorICAgIDB4Q0MsMHg5QiwweDAy
LDB4NDEsMHg1NywweDU2LDB4NUUsMHg1QywweDY0LDB4NTEsMHhFMiwweDM4LDB4QUYsMHgzOSww
eEFBLDB4QUQsCisgICAgMHg2NCwweDUxLDB4MjMsMHg0OSwweEFGLDB4RTIsMHhGRiwweDc3LDB4
MjMsMHg0OSwweEUyLDB4NDAsMHgyOCwweDg4LDB4NjgsMHg2MiwKKyAgICAweDI0LDB4NDksMHhF
MiwweDQwLDB4NzgsMHg2RSwweDdBLDB4RkIsMHgwMywweDQxLDB4QzIsMHgzOCwweEFGLDB4QTcs
MHhERiwweDlBLAorICAgIDB4MjMsMHg0OSwweEMyLDB4MzgsMHhGNywweEI3LDB4QkQsMHgyRiww
eDg0LDB4NTEsMHgwMywweDQxLDB4QTUsMHhBRiwweEE1LDB4MjcsCisgICAgMHgwNiwweDZBLDB4
ODQsMHg1MSwweDBGLDB4QUQsMHhBRCwweDJELDB4QTgsMHg3QSwweDA2LDB4NjIsMHgyMywweDBE
LDB4MjcsMHhCRCwKKyAgICAweDJBLDB4OEIsMHg4NywweDcyLDB4MkIsMHgyOSwweDNELDB4QUQs
MHg0QSwweDkzLDB4RTksMHg4MiwweDJBLDB4ODgsMHg3QSwweEQyLAorICAgIDB4NEEsMHg5Myww
eEE4LDB4N0EsMHhFQywweEZFLDB4NUYsMHg1RiwweEE4LDB4N0EsMHg4OCwweDcyLDB4RTAsMHg1
MiwweEMwLDB4MjMsCisgICAgMHhBOCwweDdBLDB4NDcsMHg2QSwweDgyLDB4RUMsMHg3QSwweEU4
LDB4QzgsMHg3QSwweDQ3LDB4NkEsMHg4QSwweEVGLDB4QkQsMHhGNywKKyAgICAweEM5LDB4N0Es
MHg2NywweDcyLDB4M0EsMHhGRSwweERFLDB4QjcsMHhFOSwweDgyLDB4ODcsMHg3MiwweDAzLDB4
QUQsMHhFNSwweERGLAorICAgIDB4NkEsMHg5MywweEE4LDB4N0EsMHgyQiwweDJGLDB4MkQsMHgy
RCwweDhBLDB4OUIsMHg0QSwweDkzLDB4MkEsMHhBQiwweEI1LDB4QkYsCisgICAgMHhDQywweEEz
LDB4NkEsMHg5MywweDgzLDB4OEIsMHhFRiwweDdELDB4NkIsMHg5QiwweEM4LDB4ODIsMHhBOCww
eDY4LDB4NzgsMHg3RSwKKyAgICAweDA5LDB4OTMsMHgyNiwweDcyLDB4ODAsMHhFOCwweEZBLDB4
N0UsMHg2NiwweDdBLDB4QzQsMHg2OSwweEE4LDB4RkMsMHg3RSwweDVGLAorICAgIDB4NDcsMHg3
QSwweEEzLDB4NjEsMHhBQSwweEFGLDB4QjUsMHgyNywweDg4LDB4ODIsMHgyNywweDcyLDB4NkQs
MHhFRiwweEVCLDB4MkYsCisgICAgMHg0NywweDdBLDB4QzUsMHg2OSwweEZBLDB4RkMsMHg1QSww
eDc4LDB4MDYsMHg3QSwweEM1LDB4NzEsMHhBOSwweEFFLDB4REYsMHhENSwKKyAgICAweDA2LDB4
N0EsMHhDNSwweDcxLDB4OUUsMHhBRiwweDNGLDB4QkUsMHg0NywweDhBLDB4RTYsMHg3OSwweEFG
LDB4MjksMHhBRCwweDJCLAorICAgIDB4ODcsMHg4QSwweDI2LDB4ODIsMHhBRCwweEE1LDB4QUQs
MHhBQiwweEM4LDB4OTIsMHg2NywweDhBLDB4RjAsMHg2OSwweEZDLDB4NUQsCisgICAgMHgyQSww
eEEzLDB4ODgsMHg4QSwweEZELDB4QkQsMHhBRCwweDNELDB4NEEsMHhBMywweEM4LDB4OTIsMHgy
RCwweDhBLDB4ODIsMHgyQSwKKyAgICAweEI2LDB4RjYsMHhBQywweEFCLDB4MDksMHgwRCwweDJE
LDB4MkQsMHhENywweEZFLDB4MTgsMHhGNywweEFBLDB4QUUsMHhFRSwweEJDLAorICAgIDB4MTgs
MHhGRiwweEY3LDB4RjYsMHhBQiwweDJCLDB4QUIsMHhBMywweDE3LDB4RkYsMHhGOCwweEY2LDB4
MkEsMHgwQSwweDhBLDB4MkEsCisgICAgMHgxNywweEZGLDB4MzksMHhGNywweEEyLDB4ODgsMHhC
MCwweEE4LDB4MzcsMHhGRiwweDE4LDB4RjcsMHhGQiwweEZELDB4RjcsMHhGRiwKKyAgICAweDM4
LDB4RkYsMHgxNywweEY3LDB4NzcsMHg1NywweERELDB4N0IsMHgzOCwweEZGLDB4MTcsMHhGNyww
eDdGLDB4REQsMHg3RiwweEZGLAorICAgIDB4MTcsMHhGRiwweDM4LDB4RjcsMHgwQSwweDA4LDB4
QTIsMHhBRSwweDE3LDB4RkYsMHhGNywweEY2LDB4NzYsMHg3RiwweEFBLDB4QTgsCisgICAgMHgx
NywweEZGLDB4RDcsMHhGNiwweEJGLDB4QkYsMHhCMiwweEEwLDB4MTcsMHhGRiwweEY3LDB4RjYs
MHg3NywweEE3LDB4QUUsMHgwOCwKKyAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4QUIsMHgwQiww
eDBBLDB4QTAsMHgxOCwweEZGLDB4QjYsMHhFRSwweDYwLDB4NzgsMHg1OCwweDVFLAorICAgIDB4
QjYsMHhFRSwweDc1LDB4RUUsMHg3RSwweEQ3LDB4QkYsMHg4QSwweDk2LDB4RjYsMHg3NSwweEU2
LDB4QjUsMHhGRCwweEZFLDB4ODgsCisgICAgMHhCNiwweEY2LDB4NzUsMHhFRSwweEFCLDB4QUQs
MHhGNSwweDdGLDB4QjYsMHhGNiwweDU1LDB4RUUsMHgyQSwweEFBLDB4RUYsMHhERiwKKyAgICAw
eDk2LDB4RUUsMHg3NSwweEVFLDB4NDAsMHgyOCwweDY2LDB4NUQsMHhCNiwweEY2LDB4NTQsMHhF
NiwweEJGLDB4MkYsMHhFRiwweDc1LAorICAgIDB4RDcsMHhGNiwweDU0LDB4RTYsMHgwMiwweDAy
LDB4QkEsMHhENSwweEY3LDB4RkUsMHg3NiwweEVFLDB4MDIsMHgyMiwweEFGLDB4REQsCisgICAg
MHhGNywweEZFLDB4RDcsMHhGNiwweEFBLDB4QUEsMHgzRiwweDk1LDB4RjcsMHhGNiwweEQ3LDB4
RjYsMHg3QSwweEUyLDB4OEEsMHhBOCwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4OEYsMHg4
NSwweEI3LDB4RTcsMHhGNywweEY2LDB4RDcsMHhGNiwweEZBLDB4REUsMHhENiwweEZFLAorICAg
IDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg1QiwweDVBLDB4RkEsMHgwMCwweEY3LDB4RjYsMHhENyww
eEY2LDB4NzUsMHg3QiwweDVFLDB4RTQsCisgICAgMHhGNywweEY2LDB4QjcsMHhGNiwweEZGLDB4
RUYsMHhBQiwweDA4LDB4RDcsMHhGNiwweEI3LDB4RUUsMHgwQSwweDAyLDB4MEEsMHgwMCwKKyAg
ICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4QTgsMHhBMCwweDI4LDB4MDAsMHhENywweEY2LDB4Qjcs
MHhFRSwweDdDLDB4QkUsMHhFQSwweDAwLAorICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHgyOCww
eDNFLDB4N0EsMHg1QSwweEQ3LDB4RjYsMHhCNywweEVFLDB4RjgsMHhBQSwweEVBLDB4RkUsCisg
ICAgMHhENywweEY2LDB4QjcsMHhFRSwweEFBLDB4QUIsMHhBNSwweEVFLDB4RDcsMHhGNiwweEI3
LDB4RUUsMHhGNywweDJGLDB4QUUsMHhBQSwKKyAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4M0Es
MHhCRSwweEFBLDB4QkUsMHhENywweEY2LDB4QjcsMHhFRSwweEEzLDB4QTYsMHhGRSwweEFDLAor
ICAgIDB4RjcsMHhGNiwweEI3LDB4RjYsMHhGRiwweEZFLDB4RkYsMHhDQiwweEY4LDB4RjYsMHg5
NywweEVFLDB4QUUsMHgyQSwweDJBLDB4MEEsCisgICAgMHhGOCwweEY2LDB4QjcsMHhGNiwweEFG
LDB4QUUsMHhCQSwweDBBLDB4RjgsMHhGNiwweEQ3LDB4RjYsMHhERCwweEJELDB4MkEsMHgyOCwK
KyAgICAweEY4LDB4RjYsMHhENywweEY2LDB4RUEsMHhBRSwweEFBLDB4M0EsMHhGOCwweEY2LDB4
RDcsMHhGNiwweDAwLDB4MDgsMHhBQSwweDIyLAorICAgIDB4RjgsMHhGNiwweEQ4LDB4RjYsMHgw
MCwweDI4LDB4QkUsMHhBQSwweEQ3LDB4RkUsMHhGOCwweEY2LDB4NTUsMHg3NywweDVELDB4N0Ys
CisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweDJBLDB4MkEsMHgyRiwweDJELDB4MTgsMHhGRiww
eDc2LDB4RTYsMHg1OCwweDdBLDB4RjgsMHhGOCwKKyAgICAweDk2LDB4RUUsMHg1NSwweEU2LDB4
ODAsMHgyQSwweEI2LDB4QkEsMHg5NiwweEVFLDB4NzYsMHhFNiwweEIyLDB4RUYsMHgzNywweEEz
LAorICAgIDB4OTYsMHhFRSwweDc2LDB4RUUsMHg1QywweEQ3LDB4QkUsMHhGNiwweEI2LDB4RjYs
MHg3NiwweEVFLDB4QjUsMHgzRiwweEE5LDB4QkQsCisgICAgMHhCNywweEY2LDB4RjMsMHhERCww
eEM4LDB4NjAsMHg2MCwweDYwLDB4RDMsMHhENSwweEYwLDB4QkMsMHgzRSwweDJGLDB4MzcsMHgz
RiwKKyAgICAweDk2LDB4RUUsMHhGNCwweERELDB4MkIsMHgwRCwweDBCLDB4MjksMHhCNiwweEY2
LDB4OTYsMHhFRSwweDdGLDB4RjYsMHg3OCwweEZCLAorICAgIDB4OTYsMHhFRSwweDE0LDB4REUs
MHg3OCwweDc4LDB4NzgsMHg2OCwweEIzLDB4RDUsMHg1MSwweEM1LDB4MDAsMHhCOCwweDdDLDB4
N0UsCisgICAgMHhCMywweEQ1LDB4NzEsMHhDRCwweEEwLDB4RkEsMHg3NSwweDU1LDB4QjIsMHhD
RCwweDUxLDB4QzUsMHhBQSwweDhBLDB4QUEsMHhFRCwKKyAgICAweDcyLDB4Q0QsMHgwQywweEE0
LDB4NzgsMHg3OCwweDc4LDB4RjgsMHhCMywweEQ1LDB4OEUsMHhBQywweDJELDB4MkQsMHgyOSww
eDA5LAorICAgIDB4MTQsMHhERSwweEIyLDB4RDUsMHhBRCwweDJGLDB4QjcsMHhCNSwweDU1LDB4
RUUsMHhGMywweERELDB4QkYsMHhCRiwweEFGLDB4MzcsCisgICAgMHg5NiwweEVFLDB4MzQsMHhF
NiwweDJGLDB4QUQsMHhCRiwweDJGLDB4OTYsMHhFRSwweDU1LDB4RTYsMHg3OCwweEZBLDB4QTgs
MHg3QSwKKyAgICAweDU1LDB4RTYsMHgxNCwweEU2LDB4RTAsMHgwOCwweEE4LDB4ODAsMHg1NSww
eEU2LDB4MzUsMHhFNiwweDNGLDB4OUUsMHhEQiwweDIzLAorICAgIDB4RDYsMHhGNiwweEI2LDB4
RUUsMHhBRiwweEVBLDB4QUEsMHhBQSwweEQ3LDB4RjYsMHhCNiwweEVFLDB4QkEsMHhFOCwweEJF
LDB4QkEsCisgICAgMHhCNywweEY2LDB4RDYsMHhFRSwweEJGLDB4RkYsMHhCNywweDFGLDB4RDcs
MHhGNiwweEI2LDB4RUUsMHhBMiwweEIzLDB4MkEsMHhCQiwKKyAgICAweEQ3LDB4RjYsMHhCNiww
eEVFLDB4QTIsMHgwQSwweDgyLDB4MDIsMHhENiwweEY2LDB4RDcsMHhFRSwweEFBLDB4QUEsMHhB
MiwweEFBLAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHgyMSwweENCLDB4MEEsMHhBQSwweEQ2
LDB4RjYsMHhCNiwweEVFLDB4QTIsMHhBOCwweDJBLDB4MDIsCisgICAgMHhENywweEY2LDB4RDYs
MHhFRSwweEEyLDB4QUIsMHgyQSwweEE4LDB4RjcsMHhGNiwweEI2LDB4RUUsMHhCRiwweEFFLDB4
QUIsMHhBRiwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4RkQsMHhGNSwweEQ3LDB4NUUsMHhG
NywweEY2LDB4QjYsMHhFRSwweEZBLDB4RUEsMHhFRSwweEVBLAorICAgIDB4RDYsMHhGNiwweEI2
LDB4RUUsMHg1RSwweDVFLDB4NUYsMHhGRiwweEQ2LDB4RjYsMHg5NiwweEVFLDB4RkUsMHhFRiww
eEFBLDB4RkEsCisgICAgMHhENiwweEY2LDB4OTUsMHhFRSwweEFGLDB4QjcsMHhGRiwweEZGLDB4
RDYsMHhGNiwweEI2LDB4RUUsMHhGRCwweDVGLDB4RkYsMHg3RCwKKyAgICAweEI3LDB4RjYsMHhC
NiwweEVFLDB4RkQsMHhGRiwweEQ3LDB4RkYsMHhENiwweEY2LDB4QjYsMHhFRSwweEJELDB4Qjcs
MHhENSwweEI1LAorICAgIDB4RDYsMHhGNiwweEY4LDB4RUUsMHhBMCwweDg4LDB4MjAsMHgwOCww
eEQ3LDB4RjYsMHhGNiwweEVFLDB4MDIsMHhBOCwweDJBLDB4ODAsCisgICAgMHhGNywweEY2LDB4
QjYsMHhFRSwweEJFLDB4QUYsMHhFQiwweDhBLDB4RjcsMHhGNiwweEI2LDB4RUUsMHhCNiwweEFC
LDB4QkEsMHhBQiwKKyAgICAweEQ2LDB4RjYsMHhGOCwweEVFLDB4MjAsMHg4OCwweDIwLDB4MDAs
MHhGNywweEY2LDB4RDcsMHhGNiwweEZELDB4RUYsMHhGNSwweDU1LAorICAgIDB4RjcsMHhGNiww
eEI2LDB4RjYsMHhCQSwweEZBLDB4RjgsMHhGRSwweEI3LDB4RjYsMHgxNCwweERFLDB4NDAsMHhD
MCwweEMwLDB4MDAsCisgICAgMHg1MSwweEM1LDB4NDMsMHg0OSwweDVFLDB4NUMsMHg1QywweDU4
LDB4MjMsMHg0MSwweEUyLDB4NDAsMHgwMSwweDJELDB4REQsMHhFRiwKKyAgICAweDQzLDB4NDks
MHgwMywweDQxLDB4QjgsMHgyQSwweDJGLDB4MEQsMHg2NCwweDUxLDB4MjMsMHg0MSwweDVELDB4
QUIsMHgyRSwweEJCLAorICAgIDB4NDQsMHg0OSwweDAzLDB4NDEsMHg1NywweEQ4LDB4NzAsMHg3
MCwweDQ0LDB4NDksMHhFMiwweDM4LDB4RjcsMHhGNywweEJGLDB4MkUsCisgICAgMHg2NCwweDUx
LDB4MDMsMHg0MSwweEQ3LDB4QjcsMHgwRiwweDAyLDB4RTUsMHg1OSwweDQzLDB4NDksMHhCNSww
eDJGLDB4MDUsMHhBRCwKKyAgICAweDQ3LDB4NkEsMHhBNCwweDU5LDB4QUQsMHgyQiwweDJCLDB4
MEEsMHg4OCwweDcyLDB4MjYsMHg2QSwweDI5LDB4OEYsMHhBRiwweEMzLAorICAgIDB4QzgsMHg3
QSwweDY3LDB4NzIsMHgwMywweEFBLDB4MkIsMHhDOSwweDA5LDB4ODMsMHhBOCwweDdBLDB4ODIs
MHg4MywweEVELDB4NUQsCisgICAgMHhDOSwweDgyLDB4NDcsMHg3MiwweEY4LDB4RTIsMHhFQSww
eDdCLDB4QTgsMHg3QSwweDQ3LDB4NkEsMHgyRSwweEZBLDB4REYsMHg5RiwKKyAgICAweEE4LDB4
N0EsMHg0NywweDZBLDB4RTIsMHhGQSwweDVGLDB4NTcsMHg4NywweDcyLDB4MjYsMHg2QSwweEE4
LDB4QjYsMHgwQSwweDhFLAorICAgIDB4NjcsMHg3MiwweDI2LDB4NkEsMHgzQywweEY3LDB4QjAs
MHgyMCwweEM4LDB4N0EsMHgyNiwweDZBLDB4QUEsMHhBMywweEE5LDB4RkIsCisgICAgMHg0QSww
eDkzLDB4ODcsMHg3MiwweDJGLDB4QUYsMHhFNSwweDdELDB4NkIsMHg5QiwweEM4LDB4ODIsMHgw
QSwweDhCLDB4QUYsMHhGRCwKKyAgICAweDhCLDB4OUIsMHgwOSwweDhCLDB4Q0EsMHg4QiwweEVB
LDB4RkQsMHgyOSwweDhCLDB4QzgsMHg4MiwweEQ4LDB4RjgsMHg3OCwweDYwLAorICAgIDB4Qzgs
MHg4MiwweEU2LDB4NjksMHhGOCwweEU4LDB4RjgsMHg1QSwweDA1LDB4NkEsMHhBNCwweDYxLDB4
RjgsMHhERSwweERBLDB4RkEsCisgICAgMHg0NywweDcyLDB4QzQsMHg2OSwweEI1LDB4QkYsMHhC
OSwweDI1LDB4ODgsMHg4MiwweDI3LDB4NzIsMHhBQiwweEFBLDB4MkIsMHhFNSwKKyAgICAweDQ3
LDB4N0EsMHg4NCwweDY5LDB4RjAsMHg2MCwweEUwLDB4RTgsMHhDNSwweDcxLDB4NjQsMHg2MSww
eDI4LDB4MkUsMHhCNSwweEY1LAorICAgIDB4MDYsMHg4MiwweEE1LDB4NjksMHhBRiwweEJGLDB4
QkQsMHhCRiwweDY3LDB4OEEsMHhFNiwweDc5LDB4QUQsMHhBNywweDJGLDB4QUUsCisgICAgMHg4
NywweDhBLDB4NDYsMHg4MiwweDRGLDB4RTcsMHg3NywweDVELDB4ODcsMHg4QSwweDI2LDB4ODIs
MHgyOCwweEJBLDB4QjcsMHg1NSwKKyAgICAweEU4LDB4OTIsMHg0NiwweDgyLDB4MkQsMHhCNSww
eEJGLDB4RkYsMHg2QSwweEEzLDB4QTgsMHg4QSwweDJCLDB4QTksMHhBRCwweDI1LAorICAgIDB4
OTYsMHhGNiwweDhBLDB4QTMsMHgyRCwweDJELDB4MkQsMHgyRCwweEQ3LDB4RkUsMHgxNywweEY3
LDB4RjgsMHhFOCwweEY4LDB4RUEsCisgICAgMHgxNywweEZGLDB4RjcsMHhGNiwweEFBLDB4QTIs
MHhBQSwweDBCLDB4MTgsMHhGRiwweEY3LDB4RjYsMHg4QSwweDAyLDB4MEEsMHgyQSwKKyAgICAw
eDE4LDB4RkYsMHhGNywweEVFLDB4OEEsMHg4QSwweDAwLDB4ODAsMHgzOCwweEZGLDB4MTcsMHhG
NywweEI3LDB4RUQsMHhFRiwweEZELAorICAgIDB4MTgsMHhGRiwweDM4LDB4RjcsMHhFRSwweEFG
LDB4QUUsMHhBOCwweDM3LDB4RkYsMHgxOCwweEY3LDB4QkUsMHhBRiwweERCLDB4QkYsCisgICAg
MHgzOCwweEZGLDB4MTgsMHhGRiwweEFBLDB4RUEsMHg4QSwweDhCLDB4MzgsMHhGRiwweDE4LDB4
RjcsMHhGRiwweEFCLDB4QTgsMHhBOCwKKyAgICAweDE4LDB4RkYsMHgzNywweEY3LDB4MEEsMHgy
QSwweDBBLDB4MDIsMHgxOCwweEZGLDB4MzcsMHhGNywweDA4LDB4MjAsMHhCMCwweDIwLAorICAg
IDB4MTgsMHhGRiwweEI2LDB4RUUsMHhBMCwweEU4LDB4NzgsMHg3QSwweEQ3LDB4RjYsMHg5Niww
eEVFLDB4RDgsMHg1RSwweEZGLDB4RUUsCisgICAgMHhCNiwweEY2LDB4OTYsMHhFRSwweEFGLDB4
RkUsMHhGRSwweEEwLDB4QjYsMHhGNiwweDk2LDB4RUUsMHhFQSwweEVCLDB4RUEsMHhGQiwKKyAg
ICAweDk2LDB4RUUsMHg1NCwweEVFLDB4RTAsMHhDMCwweEMwLDB4QzAsMHg1NCwweEU2LDB4NzEs
MHhDRCwweDAwLDB4ODAsMHhBOCwweDc4LAorICAgIDB4NTUsMHhFRSwweDEwLDB4QzUsMHgwMCww
eEFBLDB4RkIsMHg1NywweDE0LDB4RTYsMHg3MSwweENELDB4ODAsMHhFQSwweEZELDB4MDksCisg
ICAgMHhGMywweERELDB4MTAsMHhDNSwweDAwLDB4RkUsMHg3RSwweEE4LDB4NTUsMHhFNiwweDMx
LDB4QzUsMHgwMCwweDBGLDB4QkQsMHhGNywKKyAgICAweEQ3LDB4RkUsMHgxNCwweERFLDB4MDIs
MHgyQiwweDJGLDB4QUQsMHhGNywweEY2LDB4OTYsMHhGNiwweDgyLDB4MkEsMHhBQSwweEFCLAor
ICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBNywweEJELDB4RUQsMHhBNiwweEY3LDB4RjYsMHhE
NywweEY2LDB4QUIsMHgyMSwweDg5LDB4QTIsCisgICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweEJF
LDB4RUEsMHhGQiwweEZCLDB4RDcsMHhGRSwweEY3LDB4RjYsMHhGRCwweDVELDB4RjUsMHhGNywK
KyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4QTgsMHg1RSwweDU1LDB4RkYsMHhGNywweEY2LDB4
RDcsMHhGNiwweDU1LDB4RDUsMHhBQiwweEFBLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg1
RiwweEZCLDB4N0YsMHhCQywweEQ3LDB4RjYsMHhGNywweEVFLDB4MjAsMHgwOCwweDAwLDB4MjIs
CisgICAgMHhENywweEY2LDB4QjcsMHhFRSwweEI4LDB4QTgsMHhDOCwweDQyLDB4RDcsMHhGNiww
eEI2LDB4RUUsMHhBNCwweDIyLDB4QkYsMHhGRCwKKyAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4
RUUsMHgyQSwweDhBLDB4MDIsMHhCNiwweEY2LDB4RjcsMHhFRSwweEFBLDB4QUEsMHhCQiwweEZB
LAorICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHhERiwweEZGLDB4QUYsMHhBQiwweEY3LDB4RjYs
MHhCNywweEVFLDB4QUYsMHhBOSwweDJGLDB4QTgsCisgICAgMHhGNywweEY2LDB4RDgsMHhGNiww
eDhGLDB4OEEsMHhBOCwweEEwLDB4RjgsMHhGNiwweEQ3LDB4RjYsMHhBMiwweEY4LDB4REUsMHhF
QSwKKyAgICAweEY4LDB4RjYsMHhENywweEY2LDB4QkEsMHhBQiwweDNFLDB4OEEsMHgxOCwweEZG
LDB4RDcsMHhGNiwweEFGLDB4QUIsMHhGRSwweEJGLAorICAgIDB4RjcsMHhGRSwweEY4LDB4RjYs
MHhGNywweEZELDB4RDcsMHg3RiwweDE4LDB4RkYsMHhENywweEY2LDB4RUUsMHhBQSwweEVFLDB4
N0YsCisgICAgMHhGNywweEY2LDB4QjgsMHhGNiwweEEyLDB4QUUsMHhBQSwweEVCLDB4RjgsMHhG
NiwweEQ3LDB4RjYsMHhGRiwweERFLDB4NUQsMHg1NSwKKyAgICAweDE4LDB4RkYsMHhENywweEY2
LDB4MkIsMHgzRiwweEJELDB4QkYsMHgxOCwweEZGLDB4QjYsMHhFRSwweDU4LDB4NzgsMHhGQSww
eEZBLAorICAgIDB4QjYsMHhFRSwweDc2LDB4RTYsMHg1NywweDU3LDB4RkUsMHhGQywweDc2LDB4
RUUsMHg5NiwweEU2LDB4MkYsMHg4QiwweEFBLDB4MjgsCisgICAgMHg5NiwweEVFLDB4NzYsMHhF
RSwweDlCLDB4QTIsMHhGQiwweEZELDB4OTYsMHhFRSwweDc2LDB4RUUsMHgwRCwweDJCLDB4MkQs
MHgzRiwKKyAgICAweEI2LDB4RjYsMHhGNCwweERELDB4NjAsMHg2MCwweDY4LDB4NjIsMHhEMyww
eEQ1LDB4RjAsMHhCQywweDM3LDB4M0YsMHgyRiwweDJFLAorICAgIDB4OTYsMHhGNiwweDE0LDB4
RTYsMHgyRCwweEFELDB4QUQsMHgyNSwweEI2LDB4RjYsMHg3NiwweEVFLDB4RUEsMHhGQiwweEZG
LDB4RkYsCisgICAgMHg5NiwweEVFLDB4MTQsMHhFNiwweDYwLDB4NzAsMHhFQSwweEU4LDB4RjQs
MHhERCwweDMxLDB4QzUsMHg3RSwweDdBLDB4N0MsMHhGOCwKKyAgICAweDcxLDB4Q0QsMHg1MSww
eEM1LDB4MkUsMHhCOSwweEU3LDB4Q0UsMHg3MSwweENELDB4NTEsMHhDNSwweDIwLDB4MkUsMHgy
NSwweDNELAorICAgIDB4NzIsMHhDRCwweENGLDB4QjQsMHg1QywweDVDLDB4N0MsMHhBOCwweEIz
LDB4RDUsMHgxMCwweEM1LDB4MEQsMHgwQiwweDAzLDB4MEEsCisgICAgMHgxNCwweERFLDB4QjMs
MHhENSwweEJELDB4M0YsMHgyRiwweDIzLDB4NTUsMHhFNiwweEY0LDB4REQsMHgyRCwweDM1LDB4
QjcsMHhCNywKKyAgICAweDc2LDB4RUUsMHg1NSwweEU2LDB4MjMsMHg4MiwweDBCLDB4MEQsMHg5
NiwweEVFLDB4MzUsMHhFNiwweEE4LDB4QzgsMHhBOCwweEFBLAorICAgIDB4NzUsMHhFRSwweDM1
LDB4RTYsMHhGRiwweEY4LDB4RkEsMHhFQSwweDM1LDB4RUUsMHg1NSwweEU2LDB4NzcsMHg2RCww
eDdGLDB4NUYsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEFBLDB4QUEsMHg4QSwweDAyLDB4
RDcsMHhGNiwweEI1LDB4RUUsMHgyMiwweDIyLDB4MjgsMHgyMCwKKyAgICAweEQ3LDB4RjYsMHhC
NiwweEVFLDB4NkUsMHhDOCwweEY4LDB4QzgsMHhENiwweEY2LDB4QjYsMHhFRSwweEI5LDB4MjMs
MHgwMiwweDAyLAorICAgIDB4RDYsMHhGNiwweEI3LDB4RTYsMHgwOCwweDhBLDB4MDgsMHhBMiww
eEY3LDB4RjYsMHhCNiwweEVFLDB4REIsMHg1QSwweEZGLDB4QkYsCisgICAgMHhENywweEY2LDB4
QjYsMHhFRSwweDFCLDB4MjksMHgyQywweDAwLDB4RDcsMHhGNiwweEQ2LDB4RUUsMHhBQSwweDIy
LDB4QUEsMHhBQSwKKyAgICAweEQ3LDB4RjYsMHhGNywweEVFLDB4MjgsMHgwOCwweDIwLDB4QUEs
MHhGNiwweEY2LDB4QjcsMHhFRSwweEE3LDB4QkUsMHhBQiwweEFCLAorICAgIDB4RDYsMHhGNiww
eEY3LDB4RUUsMHgyQSwweDJBLDB4MjAsMHg4MiwweEQ2LDB4RjYsMHhGOCwweEVFLDB4MDgsMHg4
MCwweDI4LDB4QTgsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEVFLDB4NjgsMHhGOCwweDZD
LDB4RDYsMHhGNiwweDk2LDB4RUUsMHhCQiwweEVGLDB4QUYsMHgwRiwKKyAgICAweEQ2LDB4RjYs
MHg5NiwweEVFLDB4RkYsMHhGRSwweEYyLDB4QzIsMHhENiwweEY2LDB4QjYsMHhFRSwweEZELDB4
RjcsMHhCRCwweEJCLAorICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHg3RCwweEZGLDB4QUQsMHhF
RSwweEQ2LDB4RjYsMHhCNiwweEVFLDB4QjUsMHhCRCwweEJCLDB4QjYsCisgICAgMHhGNywweEY2
LDB4RDcsMHhGNiwweERGLDB4RkQsMHhERCwweEZELDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhERCww
eEJGLDB4M0EsMHg4RCwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4RUEsMHhGOCwweERBLDB4
RkUsMHhGNiwweEY2LDB4RDcsMHhGNiwweEI1LDB4RkIsMHhGRiwweEVELAorICAgIDB4RjcsMHhG
NiwweEQ3LDB4RjYsMHg3OSwweDZCLDB4RkIsMHg5QiwweEQ3LDB4RjYsMHhGNywweEVFLDB4MDAs
MHg4MCwweDBFLDB4MDIsCisgICAgMHhGNywweEY2LDB4OTYsMHhFRSwweEFBLDB4MkEsMHg4QSww
eEEyLDB4RjcsMHhGRSwweDc2LDB4RUUsMHg2QSwweEUwLDB4RUEsMHhFQSwKKyAgICAweEY0LDB4
REQsMHg0MiwweDQxLDB4NTgsMHg3OCwweDc4LDB4NzgsMHgwMywweDM5LDB4QzEsMHgzOCwweEFB
LDB4MUQsMHgyNCwweEJBLAorICAgIDB4NjQsMHg0OSwweDAyLDB4NDEsMHgzRiwweEFCLDB4MkYs
MHg2NSwweDg0LDB4NTEsMHgyMywweDQ5LDB4RTIsMHhBMiwweEE5LDB4RjUsCisgICAgMHg2NCww
eDQ5LDB4RTIsMHg0MCwweEY4LDB4NUEsMHhGQiwweDdFLDB4NDMsMHg0OSwweDAzLDB4NDEsMHhG
RiwweEJCLDB4MkQsMHgyOSwKKyAgICAweEM1LDB4NTksMHg0NCwweDQ5LDB4MzUsMHgyRCwweDA5
LDB4MEEsMHgyNywweDZBLDB4ODQsMHg1MSwweEFELDB4QUYsMHgyQSwweDNCLAorICAgIDB4Mjcs
MHg2QSwweEE0LDB4NTksMHgwOCwweDg4LDB4QTgsMHg3RSwweDY3LDB4NzIsMHg4NSwweDU5LDB4
MjAsMHgyQSwweEFELDB4QUQsCisgICAgMHhBOCwweDdBLDB4NDYsMHg2QSwweDgzLDB4QUEsMHhB
NSwweEY1LDB4QTgsMHg3QSwweDQ3LDB4NkEsMHg4MiwweDhBLDB4RUYsMHg3RiwKKyAgICAweDg4
LDB4NzIsMHg0NywweDcyLDB4QjAsMHhCQSwweENELDB4QjUsMHg4OCwweDcyLDB4MDYsMHg2QSww
eEEwLDB4QUYsMHg5NywweEFCLAorICAgIDB4NjcsMHg3MiwweDI2LDB4NkEsMHhBNiwweDAyLDB4
MkIsMHhFRiwweDY3LDB4NzIsMHgyNiwweDZBLDB4ODAsMHhGMCwweDY4LDB4RDgsCisgICAgMHg2
NywweDcyLDB4MDYsMHg2MiwweEIwLDB4QkYsMHhGRCwweEZGLDB4QTcsMHg3QSwweEU1LDB4NjEs
MHgwQSwweEFELDB4QUIsMHhGRiwKKyAgICAweEM4LDB4N0EsMHg2NywweDcyLDB4QUIsMHhBRSww
eEFCLDB4MEQsMHhFOSwweDgyLDB4ODcsMHg3QSwweDBCLDB4QkYsMHhFRiwweEY3LAorICAgIDB4
MkEsMHg4QiwweDg4LDB4N0EsMHgwQSwweEJFLDB4RkYsMHhENSwweEU5LDB4OEEsMHg0NiwweDcy
LDB4QTAsMHhFMCwweDdBLDB4NUUsCisgICAgMHg2NywweDdBLDB4QTQsMHg2MSwweEUwLDB4Rjgs
MHg3RSwweDVGLDB4RTUsMHg2OSwweDgzLDB4NTksMHhCQywweEU3LDB4Q0YsMHgyRSwKKyAgICAw
eDI2LDB4NzIsMHhDNSwweDY5LDB4QUQsMHgzRCwweDNELDB4MkEsMHg2OCwweDdBLDB4RTYsMHg2
OSwweEVBLDB4RjgsMHg2QSwweDdFLAorICAgIDB4MDYsMHg3MiwweDY0LDB4NjEsMHhFMCwweDcy
LDB4NzIsMHg1QSwweDg0LDB4NjksMHgyMiwweDU5LDB4MkEsMHgyNywweDM3LDB4QkYsCisgICAg
MHgwNiwweDdBLDB4NjMsMHg2MSwweDBCLDB4MkYsMHhBRCwweEJGLDB4NDcsMHg4MiwweDA2LDB4
N0EsMHhBRiwweEE2LDB4RjUsMHg3NSwKKyAgICAweDY3LDB4OEEsMHgwNiwweDgyLDB4QzAsMHhD
QSwweDY5LDB4Q0IsMHg0NywweDgyLDB4MjYsMHg4MiwweEIyLDB4REQsMHg5NSwweDU1LAorICAg
IDB4RTksMHg5MiwweDQ3LDB4ODIsMHhBRCwweEFCLDB4MkQsMHgyRiwweDI5LDB4OUIsMHhBOCww
eDhBLDB4MjcsMHhCNywweEZCLDB4RkYsCisgICAgMHhCNiwweEY2LDB4NkIsMHhBMywweDJELDB4
MkQsMHgyRCwweDJELDB4MTcsMHhGRiwweEQ3LDB4RkUsMHhBRCwweEJELDB4QUQsMHhCRiwKKyAg
ICAweEY3LDB4RkUsMHgxOCwweEY3LDB4QkUsMHhGQSwweEZFLDB4RkUsMHgxOCwweEZGLDB4Rjcs
MHhGNiwweEFGLDB4ODksMHhBQiwweEFCLAorICAgIDB4MTcsMHhGRiwweEY3LDB4RjYsMHg4Miww
eDhBLDB4MkEsMHhCNiwweDE4LDB4RkYsMHgxNywweEY3LDB4RUEsMHhBQSwweEEyLDB4QUEsCisg
ICAgMHgzOCwweEZGLDB4RjcsMHhGNiwweEFFLDB4QkEsMHgyRiwweEJGLDB4MzgsMHhGRiwweDE3
LDB4RjcsMHhGRiwweEFFLDB4QUEsMHhGRiwKKyAgICAweDM4LDB4RkYsMHgxOCwweEZGLDB4MkEs
MHhBQSwweEJCLDB4RUIsMHgzOCwweEZGLDB4MTgsMHhGRiwweEEyLDB4QUEsMHhGQSwweEQ1LAor
ICAgIDB4MTgsMHhGRiwweDM4LDB4RjcsMHgwOCwweDAyLDB4QzAsMHhBQSwweDM4LDB4RkYsMHhE
NywweEY2LDB4NkEsMHhFQSwweDc4LDB4NTcsCisgICAgMHhENywweEY2LDB4QjYsMHhFRSwweEUw
LDB4QTgsMHhBOCwweEFBLDB4RDcsMHhGNiwweEI2LDB4RUUsMHhBRiwweDBBLDB4MDgsMHgwMiwK
KyAgICAweEQ3LDB4RjYsMHhCNiwweEY2LDB4QUIsMHhFQSwweEVBLDB4NUMsMHhCNiwweEY2LDB4
NzUsMHhFRSwweEEyLDB4QTAsMHhBOCwweEQ4LAorICAgIDB4OTYsMHhFRSwweDU1LDB4RUUsMHhF
MCwweEUwLDB4RjgsMHhGNywweEI2LDB4RjYsMHgzMCwweENELDB4N0EsMHg3RSwweEVBLDB4MDAs
CisgICAgMHg3NSwweEVFLDB4QUUsMHhCQywweEQ3LDB4QjcsMHgyQSwweDAwLDB4NzYsMHhFRSww
eEQzLDB4REQsMHgyRCwweDBCLDB4MDAsMHgwOCwKKyAgICAweDc1LDB4RUUsMHhCMiwweEQ1LDB4
NTgsMHhFMiwweEEwLDB4MDAsMHgxNCwweEU2LDB4NzEsMHhDRCwweEY1LDB4REYsMHhGNiwweEY4
LAorICAgIDB4NzYsMHhFRSwweEQzLDB4RDUsMHgwQiwweDJELDB4QjUsMHhCNSwweEY3LDB4RjYs
MHg1NSwweEU2LDB4MkEsMHg4QiwweDJCLDB4QkQsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiww
eDhBLDB4QUIsMHhFRiwweDk1LDB4RjgsMHhGNiwweEQ3LDB4RjYsMHhBQSwweDlELDB4M0UsMHhG
QSwKKyAgICAweEQ4LDB4RkUsMHhGNywweEY2LDB4REQsMHg1RCwweDc1LDB4RkQsMHhGNywweEY2
LDB4RDcsMHhGNiwweEFBLDB4ODgsMHg4MCwweEZDLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYs
MHhFQywweEIyLDB4RDAsMHg1RCwweEY3LDB4RjYsMHhENywweEY2LDB4ODgsMHg4MiwweEZELDB4
NTUsCisgICAgMHhGNywweEY2LDB4QjcsMHhGNiwweEEwLDB4RkEsMHhENywweERCLDB4RjcsMHhG
NiwweEI3LDB4RjYsMHg3QSwweDdGLDB4REYsMHhCRiwKKyAgICAweEY3LDB4RjYsMHhCNiwweEVF
LDB4NUYsMHg1NSwweDk1LDB4QUEsMHhGNywweEY2LDB4QjYsMHhFRSwweEY1LDB4RkIsMHhBQSww
eDJBLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg1RCwweEY1LDB4QUEsMHhBMCwweDE4LDB4
RkYsMHhENywweEY2LDB4NzUsMHhCRiwweEVCLDB4RUIsCisgICAgMHhGNywweEY2LDB4RDcsMHhG
NiwweEFELDB4MDIsMHgwMCwweDgwLDB4RjgsMHhGRSwweEY3LDB4RjYsMHhGRiwweEZGLDB4NUQs
MHg1NSwKKyAgICAweEY4LDB4RjYsMHhEOCwweEY2LDB4MDAsMHgyMCwweEY4LDB4QUUsMHhGOCww
eEY2LDB4RDcsMHhGNiwweDgwLDB4RUUsMHhGQywweDhBLAorICAgIDB4RjgsMHhGNiwweEQ4LDB4
RjYsMHgwMCwweDg2LDB4QUUsMHhGRSwweEY3LDB4RjYsMHhEOCwweEY2LDB4MkUsMHhBRiwweEZG
LDB4NUEsCisgICAgMHhGOCwweEY2LDB4RDcsMHhGNiwweEUwLDB4ODAsMHhDQSwweEFELDB4Rjgs
MHhGNiwweEQ3LDB4RjYsMHg3RiwweEZGLDB4RkQsMHhBOSwKKyAgICAweEY4LDB4RjYsMHhENyww
eEY2LDB4NTksMHg3RiwweDZFLDB4NUEsMHhENywweEY2LDB4RDgsMHhFRSwweEFBLDB4QTIsMHhB
QSwweDJBLAorICAgIDB4RjcsMHhGNiwweEI3LDB4RUUsMHgwQSwweDNCLDB4MkYsMHhCRiwweDE4
LDB4RkYsMHhCNywweEVFLDB4RkEsMHhGQSwweDYyLDB4RkEsCisgICAgMHhCNywweEVFLDB4NzUs
MHhFRSwweEZBLDB4RDgsMHg3OCwweEZDLDB4NzYsMHhFRSwweDk2LDB4RTYsMHgwOCwweDAyLDB4
OEEsMHgwRiwKKyAgICAweDk2LDB4RUUsMHg1NSwweEVFLDB4OEEsMHhFRSwweEZGLDB4REYsMHhC
NywweEVFLDB4NTYsMHhFRSwweEVCLDB4QUYsMHgyRCwweEFGLAorICAgIDB4OTYsMHhFRSwweEY0
LDB4REQsMHg2MCwweDYwLDB4RTAsMHhDMCwweEQzLDB4REQsMHgxMCwweEJELDB4M0QsMHhBNSww
eDI2LDB4MjcsCisgICAgMHg5NiwweEVFLDB4RjQsMHhERCwweDJCLDB4MkQsMHhBRCwweDJGLDB4
QjcsMHhGNiwweDc2LDB4RUUsMHhGRSwweEVBLDB4RkEsMHg3QSwKKyAgICAweDk2LDB4RUUsMHgz
NSwweEU2LDB4RjIsMHhFQSwweEZDLDB4N0EsMHgxNCwweERFLDB4NzIsMHhDRCwweDVDLDB4NUMs
MHg1OCwweDc4LAorICAgIDB4OTIsMHhDRCwweDUxLDB4Q0QsMHhGRiwweDNFLDB4RUYsMHg1NSww
eDkyLDB4RDUsMHgzMSwweEM1LDB4RTMsMHhGQSwweERFLDB4NUYsCisgICAgMHhCMiwweEQ1LDB4
MTAsMHhDNSwweEZCLDB4QUYsMHhBRiwweDI1LDB4RjMsMHhERCwweDkyLDB4Q0QsMHhCNSwweEFE
LDB4MkYsMHgyQiwKKyAgICAweDE0LDB4REUsMHhEMywweERELDB4MEYsMHhBRiwweEFCLDB4QzIs
MHg1NSwweEU2LDB4RjQsMHhERCwweEJELDB4QjcsMHgzNywweDk3LAorICAgIDB4OTYsMHhFRSww
eDU1LDB4RTYsMHgyRCwweDJELDB4OEIsMHhBRCwweDk2LDB4RUUsMHg3NiwweEVFLDB4N0MsMHg2
QiwweEZCLDB4RkYsCisgICAgMHg3NSwweEVFLDB4NTUsMHhFNiwweDU4LDB4QkEsMHhFOCwweEZB
LDB4OTYsMHhFRSwweDM0LDB4RTYsMHhGRCwweEFGLDB4M0YsMHhBQiwKKyAgICAweEY3LDB4RjYs
MHhCNiwweEVFLDB4QUIsMHhFQiwweEVCLDB4RkUsMHhGNywweEY2LDB4QjYsMHhFRSwweEZBLDB4
RkUsMHhGRiwweEY3LAorICAgIDB4RDcsMHhGNiwweEQ2LDB4RUUsMHhBQSwweDIyLDB4QUEsMHhB
QSwweEQ3LDB4RjYsMHhGNiwweEVFLDB4MDAsMHgyMiwweEE4LDB4MkEsCisgICAgMHhGNywweEY2
LDB4QjYsMHhFRSwweEVGLDB4RkUsMHhBQSwweENBLDB4RDcsMHhGNiwweEI2LDB4RUUsMHg4QSww
eDJBLDB4MDgsMHg4MywKKyAgICAweEQ3LDB4RjYsMHhGNiwweEVFLDB4MDgsMHg4MiwweDA4LDB4
MzgsMHhENywweEY2LDB4RjcsMHhFRSwweDgwLDB4MDgsMHgyMiwweDgyLAorICAgIDB4RDcsMHhG
NiwweEY2LDB4RUUsMHhFOCwweEEwLDB4MjAsMHgwOCwweEQ3LDB4RjYsMHhGNywweEVFLDB4ODgs
MHgyMiwweDIwLDB4QTIsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEI3LDB4RkQsMHhGRiww
eDdGLDB4RjYsMHhGNiwweEQ3LDB4RjYsMHhFRiwweEZELDB4RDcsMHg1NywKKyAgICAweEQ3LDB4
RjYsMHhCNSwweEVFLDB4RTAsMHhBMCwweEE4LDB4RTgsMHhENywweEY2LDB4QjYsMHhFRSwweEFB
LDB4NkEsMHhFQSwweEVFLAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhFQiwweEI1LDB4OUYs
MHhCMiwweEQ3LDB4RjYsMHhCNiwweEVFLDB4NTUsMHhGNywweDc2LDB4REYsCisgICAgMHhENiww
eEY2LDB4QjYsMHhFRSwweEZFLDB4NTcsMHhGRSwweEEzLDB4RDYsMHhGNiwweEI2LDB4RUUsMHgz
RiwweEFCLDB4MjksMHhBRCwKKyAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4QUEsMHhBQSwweEFG
LDB4RUIsMHhGNywweEY2LDB4RDcsMHhGNiwweDg5LDB4OTcsMHg1RCwweDVELAorICAgIDB4Rjcs
MHhGNiwweEQ3LDB4RjYsMHhGRiwweDZGLDB4NkMsMHg3RCwweEY3LDB4RjYsMHhENywweEY2LDB4
RjUsMHg1RiwweDc1LDB4QkQsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDNFLDB4QkEsMHhB
QiwweEJCLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhGQSwweEEyLDB4NEMsMHhFQSwKKyAgICAweEY3
LDB4RjYsMHhENywweEY2LDB4NUUsMHhGQSwweDVFLDB4NkEsMHhGNywweEY2LDB4QjYsMHhFRSww
eENBLDB4RUEsMHhFQSwweDdBLAorICAgIDB4MzQsMHhERSwweEU1LDB4NTksMHg3OCwweDcwLDB4
NjAsMHg2MCwweDQzLDB4NDEsMHhDMiwweDM4LDB4NUUsMHhGRSwweDdDLDB4N0EsCisgICAgMHgy
MywweDQ5LDB4ODEsMHgzMCwweDBBLDB4MkIsMHhBRCwweEFGLDB4NjQsMHg1MSwweDAzLDB4NDEs
MHhBRiwweDhGLDB4QTUsMHgzRCwKKyAgICAweDg1LDB4NTEsMHgwMiwweDQxLDB4NUYsMHhGQSww
eEFFLDB4MDIsMHhDNSwweDYxLDB4NDMsMHg0OSwweEY1LDB4QjksMHhBQSwweDBBLAorICAgIDB4
MDYsMHg2MiwweDg0LDB4NTksMHhFNSwweEJGLDB4MkYsMHgwMiwweEU2LDB4NjEsMHhBNSwweDU5
LDB4QTIsMHhFMCwweEUwLDB4QkMsCisgICAgMHhDNSwweDU5LDB4NjQsMHg1OSwweDgwLDB4ODgs
MHhBQSwweDNBLDB4RTYsMHg2MSwweEE1LDB4NTksMHgwRSwweEJELDB4NzksMHg1QSwKKyAgICAw
eDI2LDB4NkEsMHhBNSwweDU5LDB4MDIsMHhBQSwweEU5LDB4QTcsMHg0NywweDcyLDB4RTYsMHg2
MSwweDAzLDB4QTIsMHhBQSwweEVELAorICAgIDB4NDcsMHg2QSwweDA2LDB4NjIsMHhFQSwweEZG
LDB4RkIsMHhGRiwweDY4LDB4NzIsMHhFNSwweDYxLDB4MEEsMHgyQiwweEFCLDB4QjUsCisgICAg
MHg4OCwweDcyLDB4MDUsMHg2MiwweEUyLDB4RjAsMHg3QSwweERGLDB4NDcsMHg2QSwweDA2LDB4
NjIsMHhGMCwweDcwLDB4REQsMHg1NywKKyAgICAweDI2LDB4NkEsMHgwNSwweDYyLDB4QUMsMHhC
QSwweDU3LDB4N0QsMHg2NywweDcyLDB4RTUsMHg2MSwweEJBLDB4MkUsMHhFRCwweEY3LAorICAg
IDB4QzksMHg3QSwweDI2LDB4NkEsMHgyRCwweEFGLDB4QkIsMHhGNSwweEU5LDB4ODIsMHg0Nyww
eDcyLDB4OEUsMHhBRSwweDc3LDB4NTUsCisgICAgMHg4OCwweDdBLDB4RTYsMHg2MSwweDAwLDB4
QTgsMHhFRSwweDVGLDB4NDcsMHg3MiwweEE0LDB4NTksMHhFOCwweEVBLDB4N0EsMHg3RiwKKyAg
ICAweDA1LDB4NkEsMHg4MywweDU5LDB4N0YsMHhGNywweEJGLDB4MkYsMHg0NywweDdBLDB4QTQs
MHg2MSwweEI1LDB4QkYsMHgyQSwweDAyLAorICAgIDB4NjgsMHg3QSwweDI2LDB4NzIsMHg3RCww
eDdGLDB4N0IsMHg3MCwweDI2LDB4NzIsMHhDNSwweDY5LDB4NzgsMHg3OCwweDc4LDB4NzAsCisg
ICAgMHhDNSwweDY5LDB4RTMsMHg1MCwweEU4LDB4RkMsMHg3RSwweERFLDB4NDQsMHg1OSwweDAz
LDB4NTksMHgyMiwweDAzLDB4OUEsMHhBRiwKKyAgICAweEE1LDB4NjksMHg0NCwweDYxLDB4MEEs
MHgyQiwweDJGLDB4RkQsMHgwNiwweDdBLDB4QTUsMHg2OSwweDAyLDB4QUIsMHgxRiwweEI5LAor
ICAgIDB4ODcsMHg4QSwweDI3LDB4ODIsMHg3RCwweEY1LDB4RjUsMHgyNywweDg3LDB4OEEsMHgy
NiwweDdBLDB4NUQsMHhEQiwweEYzLDB4RkUsCisgICAgMHhDOCwweDhBLDB4NDcsMHg4MiwweEJE
LDB4QkYsMHhBRCwweDI5LDB4MjksMHg5MywweDg3LDB4ODIsMHg5RiwweDc1LDB4MzcsMHgzNywK
KyAgICAweDk2LDB4RjYsMHhFQywweEFCLDB4MkQsMHgyRCwweDI5LDB4MDksMHhGNywweEZFLDB4
RDcsMHhGNiwweDBBLDB4MDgsMHgwMiwweDAzLAorICAgIDB4RjcsMHhGRSwweDE3LDB4RjcsMHhF
RSwweEVBLDB4RUUsMHhFOCwweEY3LDB4RkUsMHgxOCwweEY3LDB4RUYsMHhBRSwweEZGLDB4QkIs
CisgICAgMHgxNywweEZGLDB4RjcsMHhGNiwweDlFLDB4QjUsMHhCRCwweEFCLDB4RjcsMHhGRSww
eDE4LDB4RjcsMHg5QiwweDVCLDB4QkYsMHhCRiwKKyAgICAweDE3LDB4RkYsMHhGNywweEY2LDB4
MkIsMHhBRSwweEFFLDB4RUIsMHgxNywweEZGLDB4RjcsMHhGNiwweEEwLDB4QkYsMHhCNywweERG
LAorICAgIDB4MTcsMHhGRiwweEY4LDB4RjYsMHgwMCwweEFBLDB4RUYsMHhBRiwweDE4LDB4RkYs
MHhGNywweEY2LDB4MjIsMHgwQSwweDAyLDB4MEEsCisgICAgMHgzOCwweEZGLDB4RDcsMHhGNiww
eEE4LDB4RjIsMHg3QSwweDdFLDB4RjcsMHhGNiwweEI2LDB4RUUsMHhGMCwweEY4LDB4RkEsMHhG
RiwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4MjksMHhBQiwweEZBLDB4RkUsMHhCNiwweEY2
LDB4RDcsMHhFRSwweEZFLDB4QkUsMHhBRSwweEVGLAorICAgIDB4RDYsMHhGNiwweDk2LDB4RUUs
MHg3QSwweEZFLDB4N0YsMHg1RSwweDk2LDB4RUUsMHg5MiwweEQ1LDB4QTAsMHhBOCwweEVBLDB4
NUEsCisgICAgMHhENywweEY2LDB4NzEsMHhDRCwweDJBLDB4QUIsMHgwRiwweDJELDB4MTgsMHhG
RiwweEQ3LDB4RkUsMHhCRCwweEFGLDB4MkUsMHhBQSwKKyAgICAweDE4LDB4RkYsMHg5NiwweEY2
LDB4NUUsMHg3QSwweEU4LDB4QTIsMHhENywweEY2LDB4NzUsMHhFRSwweDU1LDB4NUUsMHg1Riww
eDVDLAorICAgIDB4NzUsMHhFRSwweDU1LDB4RUUsMHg5OCwweDM4LDB4QjgsMHg3OCwweDU1LDB4
RUUsMHhCMiwweEQ1LDB4RkMsMHg3MCwweEUwLDB4ODAsCisgICAgMHgzNCwweEU2LDB4QjIsMHhE
NSwweDJCLDB4M0QsMHgzNSwweEFGLDB4QjYsMHhGNiwweDE0LDB4REUsMHgyRiwweDJGLDB4QkQs
MHhFRCwKKyAgICAweEY3LDB4RjYsMHg5NiwweEY2LDB4MkEsMHgyQiwweDJGLDB4MkQsMHhGNyww
eEY2LDB4RDcsMHhGNiwweDdFLDB4QUYsMHhFQiwweDZCLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4
RjYsMHhBRCwweEZFLDB4RTgsMHhBMywweEY3LDB4RjYsMHhENywweEY2LDB4RkUsMHg1QiwweDZC
LDB4RUEsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDc1LDB4RkYsMHhBOSwweDBGLDB4Rjcs
MHhGNiwweEQ3LDB4RjYsMHg3NSwweEZCLDB4RkUsMHhENywKKyAgICAweEY3LDB4RjYsMHhENyww
eEY2LDB4NTUsMHhGNSwweEJELDB4Q0YsMHhGOCwweEY2LDB4RDcsMHhGNiwweEQ1LDB4MkQsMHgw
MSwweDBBLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg1QywweDc2LDB4NTQsMHg1QywweEY3
LDB4RjYsMHhENywweEY2LDB4OTUsMHg1NywweEI1LDB4QTUsCisgICAgMHhGNywweEY2LDB4RDcs
MHhGNiwweEI4LDB4QUUsMHhFNiwweEUyLDB4RjcsMHhGNiwweEI3LDB4RjYsMHgwMCwweDJDLDB4
MkUsMHg4MiwKKyAgICAweEQ3LDB4RjYsMHhGNywweEVFLDB4QUIsMHg4QiwweEFBLDB4QUMsMHhG
NywweEY2LDB4RDcsMHhGNiwweEFBLDB4MkIsMHg4RSwweEZBLAorICAgIDB4RjcsMHhGNiwweEQ3
LDB4RjYsMHgwOCwweDIyLDB4MDIsMHhCQSwweEY3LDB4RjYsMHhEOCwweEY2LDB4QUEsMHhCOCww
eEE4LDB4ODgsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEZFLDB4QkEsMHhBMiwweDIwLDB4
RjcsMHhGNiwweEQ3LDB4RjYsMHg3OCwweEFBLDB4ODAsMHgyMCwKKyAgICAweEY3LDB4RjYsMHhE
OCwweEY2LDB4OEEsMHg4QSwweDAwLDB4ODAsMHhEOCwweEZFLDB4RjgsMHhGNiwweEQ1LDB4NTUs
MHg3RCwweEY1LAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhFNCwweDZBLDB4NjAsMHg3QSww
eEQ3LDB4RjYsMHhCNywweEVFLDB4OEEsMHhCQSwweERGLDB4RDYsCisgICAgMHhCNywweEY2LDB4
MTgsMHhFRiwweEE4LDB4QTgsMHhBQSwweEE4LDB4RjgsMHhGNiwweEI3LDB4RjYsMHhFMiwweEMw
LDB4QzAsMHhDMiwKKyAgICAweEI2LDB4RUUsMHg3NiwweEVFLDB4N0MsMHg1RSwweDdFLDB4NUUs
MHhCNiwweEVFLDB4NTYsMHhFNiwweEVCLDB4N0IsMHhFQiwweDJGLAorICAgIDB4OTYsMHhFRSww
eDU1LDB4RUUsMHhERiwweEJBLDB4MDgsMHgwMCwweDk2LDB4RjYsMHg3NiwweEVFLDB4MkQsMHhB
QiwweEU4LDB4QTIsCisgICAgMHhCNywweEY2LDB4MTQsMHhERSwweDYwLDB4NkEsMHg2QSwweDcy
LDB4RjQsMHhERCwweDUxLDB4QzUsMHgxNywweEI3LDB4MzcsMHhCNywKKyAgICAweDk3LDB4RUUs
MHgxNCwweERFLDB4QkQsMHhBRCwweDI1LDB4MkQsMHg5NiwweEVFLDB4NTUsMHhFRSwweEEwLDB4
RTgsMHhFMCwweEZBLAorICAgIDB4NzUsMHhFRSwweDM1LDB4RTYsMHhGOCwweEJBLDB4RTgsMHhB
RSwweDM1LDB4RTYsMHg3MiwweENELDB4N0MsMHg1OCwweDU4LDB4NTgsCisgICAgMHg3MiwweENE
LDB4MzEsMHhDNSwweEJFLDB4NUUsMHg1OCwweEQ3LDB4NTIsMHhDRCwweEQwLDB4QkMsMHhFMCww
eEZCLDB4N0UsMHg3QSwKKyAgICAweEIyLDB4RDUsMHhDRiwweEJDLDB4MkIsMHhBRiwweDI1LDB4
MkQsMHgzNCwweEU2LDB4RDIsMHhENSwweEZELDB4QjUsMHhCRCwweDJELAorICAgIDB4MTQsMHhF
NiwweDM0LDB4REUsMHhBOCwweEJGLDB4QUYsMHhBRiwweDU1LDB4RTYsMHhGMywweERELDB4QkQs
MHhCRSwweEJGLDB4QUYsCisgICAgMHg5NiwweEVFLDB4NTUsMHhFNiwweEJELDB4RUQsMHgwRCww
eEFGLDB4OTYsMHhFRSwweDc2LDB4RUUsMHg3OSwweDM5LDB4QUYsMHg4QiwKKyAgICAweDc1LDB4
RUUsMHg1NSwweEU2LDB4RjgsMHhFOCwweDgyLDB4QTAsMHg5NiwweEVFLDB4NTUsMHhFNiwweEFG
LDB4QUYsMHhCNywweEJGLAorICAgIDB4RDYsMHhGNiwweEI3LDB4RUUsMHhCMCwweDgyLDB4QTgs
MHgyQSwweEQ3LDB4RjYsMHhCNiwweEVFLDB4RkEsMHhFRSwweEFBLDB4QTIsCisgICAgMHhENiww
eEY2LDB4QjcsMHhFRSwweDhCLDB4MkUsMHg4QSwweEE4LDB4RDYsMHhGNiwweEI3LDB4RUUsMHg4
MCwweEYwLDB4ODIsMHgyOCwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4MkIsMHhBQSwweEFB
LDB4QUMsMHhENywweEY2LDB4QjYsMHhFRSwweDAyLDB4MDIsMHgwMCwweDhFLAorICAgIDB4RDcs
MHhGNiwweEY2LDB4RUUsMHhBOCwweDI4LDB4MDAsMHgyMCwweEY3LDB4RjYsMHhENywweEY2LDB4
NUYsMHhGRiwweEZGLDB4RjUsCisgICAgMHhENywweEY2LDB4RjcsMHhFRSwweDIyLDB4MDAsMHg4
MiwweEE4LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhGNSwweEJCLDB4QkUsMHhBRCwKKyAgICAweEY3
LDB4RjYsMHhENywweEY2LDB4RkYsMHhGRiwweDJGLDB4QUQsMHhGNywweEY2LDB4RDcsMHhGNiww
eEJBLDB4QTksMHhBQiwweEU4LAorICAgIDB4RDcsMHhGNiwweEY2LDB4RUUsMHgyQSwweDAyLDB4
MDgsMHgyQSwweEQ2LDB4RjYsMHhCNywweEVFLDB4MkEsMHgyQSwweEFDLDB4QUUsCisgICAgMHhE
NiwweEY2LDB4QjcsMHhFRSwweEEyLDB4MkEsMHhBQSwweDJBLDB4RDcsMHhGNiwweEI2LDB4RUUs
MHhCRiwweEJFLDB4ODgsMHg4MCwKKyAgICAweEI2LDB4RjYsMHhENiwweEVFLDB4RUYsMHhBQiww
eEJCLDB4RUQsMHhCNiwweEY2LDB4RDcsMHhFRSwweDhCLDB4QUIsMHhGRSwweEVGLAorICAgIDB4
RjYsMHhGNiwweEQ3LDB4RjYsMHg3NSwweEY1LDB4RUQsMHhBRCwweEY3LDB4RjYsMHhENywweEY2
LDB4REQsMHhGNywweERELDB4NTcsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDVGLDB4RTks
MHhFMywweDdELDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBRCwweEJBLDB4RUIsMHg2RSwKKyAgICAw
eEY3LDB4RjYsMHhENywweEY2LDB4RkEsMHhBRiwweEVBLDB4MEMsMHhGNywweEY2LDB4RDcsMHhG
NiwweEFGLDB4QTgsMHhFRSwweEVBLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg2QSwweDVF
LDB4NUQsMHg5RCwweEY3LDB4RjYsMHhCNiwweEVFLDB4N0EsMHhFQSwweEFCLDB4QUEsCisgICAg
MHg3NSwweEVFLDB4MDksMHg3QiwweDcwLDB4NzAsMHg2MCwweEUwLDB4RTQsMHg1OSwweEMyLDB4
MzgsMHg1RSwweDVFLDB4N0EsMHhGOCwKKyAgICAweDY0LDB4NTEsMHhDMiwweDM4LDB4REQsMHhB
NSwweEJGLDB4MkEsMHhFNSwweDYxLDB4RTIsMHg0MCwweEJELDB4QkQsMHgyQiwweDJFLAorICAg
IDB4MDYsMHg2QSwweDg0LDB4NTEsMHhGNSwweEJGLDB4QUEsMHg4MCwweDI2LDB4NkEsMHhDNSww
eDU5LDB4OUQsMHgwOSwweEFCLDB4ODAsCisgICAgMHgyNywweDcyLDB4MDUsMHg2MiwweEU5LDB4
OEEsMHg4OSwweENBLDB4MjYsMHg2QSwweEM2LDB4NjEsMHg2NCwweEM4LDB4RTgsMHhBMiwKKyAg
ICAweDA2LDB4NjIsMHhBNCwweDU5LDB4NUIsMHg3RSwweEJFLDB4RTgsMHhFNSwweDYxLDB4QTUs
MHg1OSwweEJGLDB4RkEsMHhBRiwweDhBLAorICAgIDB4MjcsMHg2QSwweEU2LDB4NjEsMHhFMSww
eDNGLDB4MDksMHgwOSwweDQ3LDB4NkEsMHgwNiwweDYyLDB4OTcsMHhENywweEUyLDB4MDAsCisg
ICAgMHg0NywweDZBLDB4RTUsMHg2MSwweEY3LDB4NUYsMHg3QywweEY4LDB4MjYsMHg2QSwweEM0
LDB4NTksMHgyRiwweENGLDB4RkYsMHg5NiwKKyAgICAweDA2LDB4NkEsMHhDNSwweDU5LDB4QkMs
MHhGRSwweEJCLDB4RkEsMHgwNSwweDZBLDB4QzUsMHg1OSwweDJBLDB4RTksMHhGQSwweEZBLAor
ICAgIDB4MjYsMHg2QSwweEM1LDB4NTksMHhBMiwweEZELDB4RjcsMHg1RCwweDQ3LDB4NkEsMHhF
NSwweDYxLDB4NEIsMHhBRCwweEY1LDB4NUQsCisgICAgMHg0NywweDZBLDB4QTQsMHg1OSwweDBF
LDB4RkEsMHhFRSwweDlFLDB4MjYsMHg2QSwweEM0LDB4NTksMHg4OCwweEMyLDB4N0IsMHg1NywK
KyAgICAweDA2LDB4NkEsMHhBNCwweDU5LDB4RTgsMHhBRSwweEY2LDB4RkYsMHhFNSwweDY5LDB4
ODMsMHg1OSwweERFLDB4QkEsMHhCRSwweDBFLAorICAgIDB4NjcsMHg3QSwweEM0LDB4NjEsMHhC
NSwweEFELDB4MkQsMHgwQiwweEM4LDB4OEEsMHg0NywweDdBLDB4NUYsMHhGNywweEFELDB4OEEs
CisgICAgMHhBOCwweDgyLDB4NDcsMHg3QSwweDdCLDB4N0YsMHhFOCwweDgwLDB4NjgsMHg3QSww
eDY0LDB4NjEsMHhGQSwweDdBLDB4NzgsMHhGOCwKKyAgICAweDY1LDB4NjEsMHhFMiwweDUwLDB4
QjQsMHhGNiwweEZFLDB4QUMsMHg4NSwweDYxLDB4MjMsMHg1OSwweDU1LDB4RTUsMHhGRCwweDhC
LAorICAgIDB4QTQsMHg2OSwweDQzLDB4NTksMHhCNSwweDE1LDB4QkYsMHgzQiwweDY3LDB4ODIs
MHhDNSwweDcxLDB4QkQsMHhBOSwweDI5LDB4MDksCisgICAgMHhBOCwweDhBLDB4NDcsMHg4Miww
eEZELDB4MkQsMHg4RiwweDIyLDB4QzgsMHg4QSwweDY3LDB4ODIsMHg3NywweEZBLDB4QUIsMHhF
QSwKKyAgICAweEE4LDB4OEEsMHgyNiwweDdBLDB4MEEsMHg4MCwweEFBLDB4N0UsMHgyRCwweEFD
LDB4MjYsMHg3MiwweEJGLDB4QjcsMHhCNSwweDI1LAorICAgIDB4RDcsMHhGRSwweEFGLDB4QkMs
MHgyRCwweDI5LDB4MDksMHgwQiwweDE3LDB4RkYsMHhEOCwweEY2LDB4RUIsMHg4QiwweEFBLDB4
MDIsCisgICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweEZGLDB4Q0YsMHhBMywweDgyLDB4MTcsMHhG
RiwweEY3LDB4RjYsMHhGRSwweEY3LDB4QkQsMHhCRiwKKyAgICAweDE4LDB4RkYsMHhGNywweEY2
LDB4OEIsMHgyQSwweEFBLDB4MkEsMHhGNywweEZFLDB4MTgsMHhGNywweEU1LDB4RkYsMHhFRiww
eEZGLAorICAgIDB4MTcsMHhGRiwweEY3LDB4RjYsMHhFQiwweEZFLDB4N0UsMHg1RSwweEY3LDB4
RkUsMHhGNywweEY2LDB4NUYsMHhGRiwweEZELDB4REYsCisgICAgMHgxNywweEZGLDB4RDcsMHhG
NiwweEFGLDB4MEIsMHgyQiwweDBCLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHgwMCwweDgwLDB4Njgs
MHg1OCwKKyAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4QjgsMHg1RSwweDU3LDB4NzcsMHhCNiww
eEY2LDB4RDcsMHhFRSwweEFBLDB4RUIsMHhFQiwweEZBLAorICAgIDB4MTgsMHhGRiwweEI2LDB4
RUUsMHhGNywweEY3LDB4RkYsMHgyQiwweDM4LDB4RkYsMHhCNiwweEVFLDB4NzcsMHhGRCwweEJG
LDB4MDIsCisgICAgMHgxOCwweEZGLDB4OTYsMHhFRSwweDU3LDB4RkYsMHhBQSwweDAwLDB4RDcs
MHhGNiwweEIyLDB4RDUsMHg3RSwweEY4LDB4RTAsMHhBOCwKKyAgICAweEQ3LDB4RjYsMHhCMiww
eEQ1LDB4MEQsMHgyQiwweDBBLDB4MEIsMHhGOCwweEZFLDB4MTgsMHhGNywweDg4LDB4MjAsMHgy
OCwweEFBLAorICAgIDB4MTcsMHhGRiwweEQ4LDB4RjYsMHhBQiwweEE1LDB4RkIsMHgyQSwweDE4
LDB4RkYsMHg3NiwweEVFLDB4NUUsMHg3QywweDdBLDB4NzgsCisgICAgMHg3NSwweEVFLDB4NTUs
MHhFNiwweDVFLDB4RjgsMHhFOCwweEI4LDB4NzUsMHhFRSwweDM0LDB4RUUsMHhFQSwweEVBLDB4
RUEsMHhBQSwKKyAgICAweDM1LDB4RTYsMHhEMiwweEQ1LDB4QjYsMHhCRSwweEUwLDB4QTAsMHg3
NSwweEVFLDB4MTQsMHhERSwweDI5LDB4QUYsMHhBRiwweDk1LAorICAgIDB4RjgsMHhGRSwweDU1
LDB4RTYsMHgyQiwweDJGLDB4QTksMHhBRCwweEY3LDB4RjYsMHhENywweEY2LDB4ODksMHhCRSww
eEJGLDB4QUIsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEVBLDB4RTIsMHhFMiwweDBBLDB4
RjcsMHhGNiwweEQ3LDB4RjYsMHg2RSwweERELDB4N0YsMHg4MCwKKyAgICAweEY3LDB4RjYsMHhE
NywweEY2LDB4QUQsMHhBNSwweEE5LDB4MDUsMHhGNywweEY2LDB4RDcsMHhGNiwweEI3LDB4QUYs
MHg2RCwweEQ3LAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBQSwweDU3LDB4NTUsMHg1NSww
eEY3LDB4RjYsMHhENywweEY2LDB4RTgsMHg1RSwweDVELDB4NUYsCisgICAgMHhGNywweEY2LDB4
RDcsMHhGNiwweDVGLDB4N0QsMHhGRiwweDdGLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhCRiwweEZE
LDB4N0YsMHhGRiwKKyAgICAweEQ3LDB4RjYsMHhGNywweEVFLDB4QUUsMHg4MiwweEE4LDB4RUEs
MHhGNywweEY2LDB4RDcsMHhGNiwweEVCLDB4RTksMHhFOSwweDVFLAorICAgIDB4RjcsMHhGNiww
eEQ3LDB4RjYsMHhBQiwweEJBLDB4QUUsMHgyRSwweEY3LDB4RjYsMHhENywweEY2LDB4MjUsMHhB
MywweEUyLDB4N0MsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEFFLDB4MEEsMHgyQSwweDdC
LDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhBQSwweEFCLDB4RUYsMHg1NSwKKyAgICAweEY3LDB4RjYs
MHhENywweEVFLDB4MjAsMHhBQywweEQ0LDB4REQsMHhGNywweEY2LDB4RDcsMHhGNiwweEE4LDB4
QUEsMHhCOSwweDNELAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg4OCwweEVBLDB4QUUsMHg4
OCwweEY3LDB4RjYsMHhENywweEY2LDB4RUEsMHg3OCwweDVFLDB4N0YsCisgICAgMHhGNywweEY2
LDB4QjcsMHhFRSwweEZBLDB4RkEsMHg3RSwweDVGLDB4RDcsMHhGNiwweDk2LDB4RUUsMHhBQSww
eEJBLDB4QkYsMHhCNywKKyAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4MEEsMHgyMiwweEFGLDB4
NTUsMHhGNywweEY2LDB4QjcsMHhFRSwweEMyLDB4RUEsMHhGQiwweEFGLAorICAgIDB4RDcsMHhG
NiwweDc1LDB4RTYsMHg1RiwweEZFLDB4N0EsMHhEQywweEI2LDB4RUUsMHg5NiwweEVFLDB4NzUs
MHg3NSwweEZELDB4RTUsCisgICAgMHg5NiwweEVFLDB4NzYsMHhFRSwweDAwLDB4RkMsMHhEQyww
eDlDLDB4OTYsMHhFRSwweDM2LDB4RUUsMHgyOCwweDJBLDB4M0EsMHgyQSwKKyAgICAweDk3LDB4
RjYsMHhGNCwweERELDB4NjgsMHg2MCwweDQ4LDB4NjAsMHhGNCwweERELDB4NTEsMHhDNSwweEI2
LDB4QkUsMHgzRiwweDM2LAorICAgIDB4OTYsMHhFRSwweDE0LDB4REUsMHhBRCwweEFGLDB4QUQs
MHhBRCwweDk2LDB4RUUsMHg1NSwweEU2LDB4N0EsMHg2OCwweDdFLDB4NUEsCisgICAgMHg3NSww
eEVFLDB4MzYsMHhFNiwweEFBLDB4QUEsMHhGQSwweERGLDB4NTUsMHhFNiwweDUyLDB4Q0QsMHg3
OCwweDc4LDB4NjgsMHg3OCwKKyAgICAweDUyLDB4Q0QsMHhBRiwweEJDLDB4ODgsMHhBMCwweEVB
LDB4N0UsMHgxMSwweEM1LDB4QUYsMHhCQywweEY4LDB4NzYsMHhEQiwweEY1LAorICAgIDB4RDMs
MHhERCwweENGLDB4QkMsMHhBRCwweDJELDB4MkQsMHgyRCwweDM0LDB4RTYsMHhEMiwweEQ1LDB4
MkQsMHgyOSwweDIyLDB4MEIsCisgICAgMHg1NSwweEU2LDB4MTQsMHhFNiwweEVCLDB4QUEsMHhB
QSwweEVBLDB4NTQsMHhFNiwweDE0LDB4RTYsMHhCNywweEI3LDB4QjUsMHhBOSwKKyAgICAweDk2
LDB4RUUsMHgzNCwweEU2LDB4OEEsMHhBQiwweDJFLDB4QTksMHhCNiwweEY2LDB4NzYsMHhFRSww
eEVGLDB4RUQsMHhBQiwweEFGLAorICAgIDB4OTUsMHhFRSwweDU1LDB4RTYsMHg1RSwweDVFLDB4
REUsMHhERSwweEI3LDB4RjYsMHg1NSwweEU2LDB4QkQsMHhBRCwweDJCLDB4MEIsCisgICAgMHhE
NiwweEY2LDB4QjYsMHhFRSwweEEyLDB4RkEsMHhFOCwweDhBLDB4QjYsMHhGNiwweEQ3LDB4RUUs
MHhCRiwweEJGLDB4QkYsMHhGNywKKyAgICAweEI2LDB4RjYsMHhENywweEVFLDB4RkYsMHhGQiww
eEZCLDB4QkYsMHhENywweEY2LDB4QjYsMHhFRSwweDJBLDB4OEUsMHhCOCwweEFDLAorICAgIDB4
QjYsMHhGNiwweEQ3LDB4RUUsMHg2RCwweEZGLDB4RkYsMHhGRiwweEQ2LDB4RjYsMHhCNiwweEVF
LDB4RTgsMHgwQSwweDJBLDB4MDIsCisgICAgMHhENywweEY2LDB4RjYsMHhFRSwweDgwLDB4MjIs
MHgwQSwweDJBLDB4RDcsMHhGNiwweEY2LDB4RUUsMHgyMCwweDAyLDB4QzgsMHhBMCwKKyAgICAw
eEQ3LDB4RjYsMHhCNywweEVFLDB4MDIsMHgwOCwweDI4LDB4MDgsMHhENywweEY2LDB4RjcsMHhF
RSwweEE4LDB4QTAsMHgyMCwweDgwLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBMSwweEI1
LDB4QjUsMHg1NSwweEY3LDB4RjYsMHhENywweEY2LDB4REIsMHhEQSwweEQwLDB4NUYsCisgICAg
MHhGNywweEY2LDB4RDcsMHhGNiwweDVBLDB4REUsMHg1NiwweEQ3LDB4RjcsMHhGNiwweEQ3LDB4
RjYsMHg1NSwweDVGLDB4RkUsMHg5NSwKKyAgICAweEQ2LDB4RjYsMHhCNywweEVFLDB4MjAsMHgy
MiwweDI4LDB4QTAsMHhENywweEY2LDB4RjYsMHhFRSwweDIwLDB4QTIsMHgyMiwweEEyLAorICAg
IDB4RjcsMHhGNiwweEI2LDB4RUUsMHhEQSwweDdFLDB4RUUsMHhFQSwweEQ3LDB4RjYsMHhCNiww
eEVFLDB4QkYsMHhCQSwweEIyLDB4RUIsCisgICAgMHhGOCwweEY2LDB4RDcsMHhGNiwweDg1LDB4
QjUsMHhGNSwweEZELDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg1QiwweEJFLDB4QjUsMHhGOSwKKyAg
ICAweEY3LDB4RjYsMHhENywweEY2LDB4RkIsMHgzQSwweEFFLDB4QUMsMHhGNywweEY2LDB4RDcs
MHhGNiwweEVBLDB4RTgsMHhFQSwweEVGLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg4Nyww
eEVELDB4RUQsMHhERiwweEY3LDB4RjYsMHhENywweEY2LDB4OEUsMHhCQiwweEFGLDB4RUEsCisg
ICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEI3LDB4OTQsMHhENCwweEY4LDB4RjcsMHhGRSwweEQ3
LDB4RjYsMHg3QiwweDZFLDB4RkUsMHg1NywKKyAgICAweEI2LDB4RjYsMHg0RCwweEFDLDB4NjAs
MHhFMCwweDYwLDB4NzgsMHgyOSwweDgzLDB4NDMsMHg0OSwweDVFLDB4N0MsMHhGOCwweEVBLAor
ICAgIDB4MjUsMHg2QSwweDQzLDB4NDksMHhENSwweEZCLDB4QUEsMHg4MCwweDQ2LDB4NkEsMHhB
NCwweDU5LDB4N0QsMHhGRiwweDJGLDB4MEIsCisgICAgMHg2NywweDcyLDB4QzUsMHg2MSwweEJE
LDB4RUEsMHhBOCwweDAyLDB4NjcsMHg3MiwweDA2LDB4NkEsMHg3RiwweEQ3LDB4MzcsMHgyMiwK
KyAgICAweDg4LDB4N0EsMHhFNSwweDYxLDB4RkQsMHhGQiwweEM4LDB4ODAsMHg2NywweDcyLDB4
MDYsMHg2QSwweDdFLDB4RUYsMHhFQiwweEIwLAorICAgIDB4MjYsMHg2MiwweEM1LDB4NTksMHhG
RiwweEI4LDB4RkUsMHg2RSwweDA2LDB4NjIsMHhBNCwweDU5LDB4RUEsMHg2MiwweEJBLDB4RkYs
CisgICAgMHg2OCwweDcyLDB4QzUsMHg1OSwweEFELDB4QUYsMHgyRCwweEE1LDB4QzgsMHg3QSww
eDY3LDB4NzIsMHhGRCwweEI1LDB4QkQsMHgyRCwKKyAgICAweEE4LDB4N0EsMHgwNiwweDZBLDB4
N0EsMHhFOCwweDQwLDB4RTAsMHgyNiwweDZBLDB4QzUsMHg1OSwweDM3LDB4REUsMHg1RSwweDVF
LAorICAgIDB4RTYsMHg2MSwweEE1LDB4NTksMHg2RSwweDk0LDB4NUUsMHgxQiwweDA2LDB4NjIs
MHhDNSwweDU5LDB4REYsMHgzRCwweDI1LDB4ODAsCisgICAgMHgwNSwweDYyLDB4QzUsMHg1OSww
eEZCLDB4QkEsMHhGRSwweEJDLDB4MDYsMHg2MiwweEM1LDB4NTksMHhFOCwweEE3LDB4OEIsMHhF
QSwKKyAgICAweDA2LDB4NjIsMHhDNSwweDYxLDB4M0IsMHgwQiwweDgyLDB4NTMsMHhDNCwweDU5
LDB4NjMsMHg1MSwweDgwLDB4NjAsMHhFMCwweEZBLAorICAgIDB4RTUsMHg2OSwweDgzLDB4NTEs
MHhGRiwweERELDB4RkQsMHgzRiwweEM5LDB4ODIsMHhBNCwweDYxLDB4RkQsMHhCRCwweDBGLDB4
MEIsCisgICAgMHg0QSwweDkzLDB4NjcsMHg3QSwweDc1LDB4RkYsMHhBQiwweDIyLDB4NEIsMHg5
QiwweEE4LDB4ODIsMHhGNSwweEVCLDB4MEEsMHgwMCwKKyAgICAweDJBLDB4OUIsMHhBOCwweDgy
LDB4RDcsMHhGRSwweEZBLDB4QkMsMHhDOSwweDhBLDB4QTUsMHg2OSwweDdBLDB4N0EsMHhFMCww
eDgwLAorICAgIDB4QzgsMHg4QSwweDg1LDB4NjEsMHg1NSwweEZGLDB4QUIsMHgwMCwweDg4LDB4
ODIsMHg2NCwweDYxLDB4RjUsMHhGRiwweEZBLDB4RjgsCisgICAgMHg2NywweDdBLDB4QzUsMHg2
OSwweDU1LDB4RDUsMHgzNywweDNGLDB4RTksMHg5MiwweDQ2LDB4N0EsMHhDNSwweDI5LDB4MkIs
MHgyRiwKKyAgICAweDA5LDB4OTMsMHg2NywweDgyLDB4RkEsMHhGOCwweDdBLDB4NUUsMHhBOCww
eDhBLDB4MDUsMHg3MiwweEEwLDB4RUEsMHhFOCwweDdFLAorICAgIDB4NDYsMHg3QSwweEU1LDB4
NjksMHhBMCwweEE4LDB4M0UsMHhCNSwweEI0LDB4REQsMHg2NywweDdBLDB4QjUsMHgyRCwweDJE
LDB4MEIsCisgICAgMHhGNywweEZFLDB4RjQsMHhERCwweDJELDB4MEYsMHgwQiwweDAyLDB4Rjcs
MHhGRSwweDE4LDB4RjcsMHhCRSwweEZFLDB4QkUsMHhGOCwKKyAgICAweDE4LDB4RkYsMHhGNyww
eEY2LDB4QTIsMHhFMCwweEYyLDB4QkYsMHgxOCwweEZGLDB4RjcsMHhGNiwweEFBLDB4OEIsMHhB
QSwweEVGLAorICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHhBQSwweDJBLDB4MkEsMHg4QiwweDE3
LDB4RkYsMHhGNywweEY2LDB4N0EsMHhGQSwweEZBLDB4RUEsCisgICAgMHgxNywweEZGLDB4Rjcs
MHhGNiwweEZFLDB4RjUsMHg1RiwweERGLDB4MTgsMHhGRiwweEY3LDB4RjYsMHhERCwweDU1LDB4
OTUsMHhCQiwKKyAgICAweDE3LDB4RkYsMHhENywweEY2LDB4OEEsMHhFQSwweDdBLDB4N0EsMHhG
NywweEY2LDB4QjYsMHhFRSwweEY4LDB4RkEsMHhCRiwweEJCLAorICAgIDB4RDYsMHhGNiwweEI3
LDB4RUUsMHhFQiwweDgyLDB4MDgsMHhBQSwweEQ2LDB4RjYsMHg5NiwweEVFLDB4MDgsMHgwMCww
eDIyLDB4RUYsCisgICAgMHgxOCwweEZGLDB4OTYsMHhFRSwweDBBLDB4MkEsMHgzRSwweEI1LDB4
MzgsMHhGRiwweDE4LDB4RkYsMHgwQiwweDA5LDB4MEIsMHgwMSwKKyAgICAweDM4LDB4RkYsMHhG
NywweEY2LDB4RTAsMHg2MCwweDZBLDB4RjgsMHhGOCwweEY2LDB4NTUsMHhFNiwweDVFLDB4RkUs
MHhCOCwweEE4LAorICAgIDB4RjgsMHhGRSwweDk2LDB4RTYsMHgyRCwweEFELDB4MkYsMHgyQSww
eDE4LDB4RkYsMHhGOCwweEY2LDB4QUIsMHhFRCwweEFGLDB4RkQsCisgICAgMHgxOCwweEZGLDB4
RjgsMHhGNiwweEZGLDB4RjksMHhFRiwweEVCLDB4MTgsMHhGRiwweDk3LDB4RjYsMHg2QSwweEU4
LDB4QTIsMHhBMCwKKyAgICAweEQ3LDB4RjYsMHg1NSwweEU2LDB4NzcsMHhERiwweDVFLDB4Nzgs
MHg3NSwweEVFLDB4NTUsMHhFNiwweEFGLDB4QjcsMHg3RiwweDVGLAorICAgIDB4NTUsMHhFNiww
eDE0LDB4RTYsMHg3MCwweDYwLDB4MDAsMHgwMCwweDM1LDB4RTYsMHhGNCwweERELDB4MEIsMHgy
OSwweDJGLDB4MzgsCisgICAgMHhCNiwweEY2LDB4MzQsMHhFNiwweDA5LDB4MkYsMHg4OSwweEFE
LDB4RjcsMHhGNiwweEI3LDB4RjYsMHg4QSwweEEyLDB4ODMsMHgyRCwKKyAgICAweDE3LDB4Rjcs
MHhCNiwweEVFLDB4QUIsMHhBOSwweEFGLDB4RUUsMHhGNywweEZFLDB4MTgsMHhGNywweEFBLDB4
QUEsMHhBQSwweEEwLAorICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhGRCwweEZGLDB4RkEsMHhF
QSwweEY3LDB4RjYsMHhENywweEY2LDB4NzUsMHg1RSwweEQ4LDB4N0UsCisgICAgMHhGNywweEY2
LDB4QjcsMHhFRSwweEZCLDB4QTMsMHhBQiwweEZGLDB4RDcsMHhGNiwweEY3LDB4RUUsMHgwQSww
eDgwLDB4MDAsMHgwMCwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4NUYsMHhERiwweDdELDB4
RDUsMHhGNywweEY2LDB4RDcsMHhGNiwweEVBLDB4RkIsMHhGQiwweDU5LAorICAgIDB4RDcsMHhG
NiwweEY3LDB4RUUsMHhFQSwweEE4LDB4ODIsMHgwMCwweEQ3LDB4RjYsMHhGNywweEVFLDB4OEEs
MHg4RSwweEEyLDB4RTgsCisgICAgMHhENywweEY2LDB4RjcsMHhFRSwweEFBLDB4MkEsMHg4QSww
eEJBLDB4RDcsMHhGNiwweEY4LDB4RUUsMHgwOCwweDAwLDB4RjIsMHhFQSwKKyAgICAweDE4LDB4
RjcsMHhENywweEY2LDB4NTUsMHg5NywweEFBLDB4QUUsMHhGOCwweEZFLDB4RDcsMHhFRSwweEZG
LDB4QUEsMHg4MiwweEFBLAorICAgIDB4MTgsMHhGNywweEQ3LDB4RjYsMHhGRiwweEFCLDB4QUIs
MHhFQiwweDE4LDB4RjcsMHhENywweEY2LDB4QUYsMHhCRSwweEZFLDB4RkEsCisgICAgMHhGNyww
eEY2LDB4RDcsMHhGNiwweDgwLDB4NDAsMHhGMCwweERGLDB4RjcsMHhGNiwweEI3LDB4RUUsMHhF
QSwweEVFLDB4N0YsMHhGRSwKKyAgICAweEQ3LDB4RjYsMHg3NiwweEU2LDB4QTgsMHhGQSwweEZB
LDB4NjgsMHhCNiwweEVFLDB4NzYsMHhFNiwweDJBLDB4QkYsMHhCRiwweEFCLAorICAgIDB4RDcs
MHhGNiwweDk2LDB4RUUsMHg1NiwweDlELDB4MkQsMHgyQiwweEQ3LDB4RjYsMHhGNywweEVFLDB4
QTAsMHgyMCwweDIwLDB4MDgsCisgICAgMHhENywweEY2LDB4NzYsMHhFNiwweDVDLDB4RkYsMHhE
RSwweDVFLDB4OTYsMHhFRSwweDU1LDB4RTYsMHgwQSwweDI4LDB4RkUsMHg3QSwKKyAgICAweDk2
LDB4RUUsMHg1NSwweEU2LDB4QTgsMHgyQSwweEFGLDB4OTUsMHg5NiwweEVFLDB4NzYsMHhFRSww
eEZELDB4RkIsMHgzRCwweDI1LAorICAgIDB4OTYsMHhFRSwweEY0LDB4REQsMHg0OCwweDYwLDB4
RTAsMHg2MCwweEY0LDB4REQsMHg1MiwweEM1LDB4M0YsMHgzNywweDM3LDB4QkYsCisgICAgMHg5
NiwweEVFLDB4MTQsMHhERSwweEFELDB4MjksMHhBRCwweDNELDB4QjYsMHhGNiwweDU2LDB4RTYs
MHg3RiwweEZDLDB4N0IsMHg3RSwKKyAgICAweDM1LDB4RUUsMHg1NiwweEU2LDB4RkIsMHhGQiww
eEZGLDB4RjcsMHgzNSwweEU2LDB4MzEsMHhDRCwweDYwLDB4RTAsMHg0MCwweDYwLAorICAgIDB4
MTAsMHhDNSwweEFGLDB4QkMsMHhGQywweDc0LDB4REMsMHg3NiwweEQwLDB4QkMsMHg2RCwweEI0
LDB4QTIsMHhFQywweDdBLDB4REUsCisgICAgMHhGMywweERELDB4Q0YsMHhCQywweDJELDB4MkQs
MHgwRCwweDJELDB4NTQsMHhFNiwweEQyLDB4REQsMHgyRiwweDJGLDB4QjksMHgyQiwKKyAgICAw
eDU1LDB4RTYsMHhGMywweERELDB4OEEsMHg2OCwweDZBLDB4RkUsMHg1NSwweEU2LDB4MTQsMHhE
RSwweEJCLDB4QjUsMHgzNSwweEJELAorICAgIDB4NzUsMHhFRSwweDU1LDB4RTYsMHgyRCwweDM3
LDB4QTksMHhDNSwweEI2LDB4RjYsMHgzNSwweEU2LDB4OEEsMHgyQSwweEFGLDB4RUQsCisgICAg
MHg5NiwweEVFLDB4MzUsMHhFNiwweEE4LDB4QUUsMHgyRSwweDI3LDB4RDcsMHhGNiwweDc1LDB4
RTYsMHgyRCwweEFGLDB4MkIsMHgyQSwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4QUMsMHhB
QywweDJGLDB4MEEsMHhENywweEY2LDB4RjYsMHhFRSwweDJBLDB4MEEsMHgwMCwweEEyLAorICAg
IDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBRSwweDJBLDB4QTIsMHhFMCwweEQ2LDB4RjYsMHhCNyww
eEVFLDB4RTIsMHhBRSwweEFCLDB4MkEsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEEzLDB4
QTgsMHhBQSwweDIyLDB4RDYsMHhGNiwweEQ3LDB4RUUsMHgyQSwweEFBLDB4OEEsMHhBOCwKKyAg
ICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4MDgsMHgyNiwweDBGLDB4MDAsMHhGNywweEY2LDB4QjYs
MHhFRSwweDZBLDB4RUUsMHhBQSwweEJCLAorICAgIDB4RDcsMHhGNiwweEY2LDB4RUUsMHhBMCww
eDgyLDB4OEEsMHgwQSwweEQ3LDB4RjYsMHhGOCwweEVFLDB4MDIsMHgwQSwweEEwLDB4ODAsCisg
ICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDdFLDB4NUIsMHg3QSwweEZFLDB4RDcsMHhGNiwweEQ2
LDB4RUUsMHhBQSwweDhBLDB4OEMsMHgyQSwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4Mjgs
MHhBOCwweEFBLDB4RkEsMHhGNywweEY2LDB4QjYsMHhFRSwweEFBLDB4RUIsMHhGRiwweEU3LAor
ICAgIDB4RDYsMHhGNiwweEI3LDB4RUUsMHgyMCwweDAyLDB4QTgsMHhFMiwweEY3LDB4RjYsMHhE
NywweEY2LDB4RUQsMHhBRCwweEZELDB4N0QsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDU2
LDB4NzcsMHhERCwweDdCLDB4RDcsMHhGNiwweEI2LDB4RUUsMHhBQSwweEIyLDB4MDIsMHgwMCwK
KyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4ODMsMHhBMiwweDhCLDB4MDIsMHhGNywweEY2LDB4
RDcsMHhGNiwweERGLDB4RkEsMHgyQSwweDg4LAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhG
RSwweDZBLDB4RTIsMHhFRSwweEY3LDB4RjYsMHhENywweEY2LDB4NkIsMHhBNiwweEZBLDB4QUYs
CisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEJGLDB4OEYsMHgyQiwweEI4LDB4RjcsMHhGNiww
eEQ3LDB4RjYsMHhGMCwweEUyLDB4NkEsMHhFQSwKKyAgICAweEY3LDB4RkUsMHhENywweEY2LDB4
RkEsMHg1RiwweDU1LDB4REYsMHhGNywweEZFLDB4NzYsMHhFRSwweEUyLDB4RTgsMHg2QSwweDZB
LAorICAgIDB4NTUsMHhFRSwweDZBLDB4OTMsMHg3MCwweDc4LDB4NUUsMHg1RSwweEU4LDB4ODIs
MHg2NiwweDcyLDB4NTQsMHhGRSwweEVBLDB4QjgsCisgICAgMHhBNywweDdBLDB4MDUsMHg2Miww
eERFLDB4RUEsMHhBQSwweEY4LDB4QTgsMHg4MiwweDQ1LDB4NkEsMHhGNSwweDJGLDB4MEIsMHgy
MiwKKyAgICAweEU5LDB4OEEsMHg0NywweDcyLDB4QkQsMHhBQSwweDJBLDB4MDIsMHgwOSwweDhC
LDB4NjYsMHg3MiwweDVGLDB4RkUsMHgyMCwweDAwLAorICAgIDB4MEEsMHg4QiwweDY3LDB4NzIs
MHhERCwweEJCLDB4QjgsMHhFOCwweEU5LDB4ODIsMHg0NywweDcyLDB4NUUsMHg3RSwweDI4LDB4
OEEsCisgICAgMHhBOCwweDdBLDB4MDYsMHg2MiwweDU1LDB4N0EsMHg4OCwweDgwLDB4NDcsMHg2
QSwweEE0LDB4NTksMHg1NywweERDLDB4NUMsMHg3MCwKKyAgICAweDA2LDB4NkEsMHg4NCwweDUx
LDB4MzksMHhBQiwweEE5LDB4QTksMHhBOCwweDdBLDB4RTUsMHg2MSwweDBCLDB4MEIsMHgwMyww
eEJELAorICAgIDB4QTgsMHg3QSwweEU1LDB4NjEsMHhBMCwweEU4LDB4RUMsMHg3RSwweDI2LDB4
NkEsMHhBNSwweDU5LDB4RjgsMHg5RSwweEJFLDB4RkUsCisgICAgMHhFNSwweDYxLDB4QTUsMHg1
OSwweDFFLDB4RDksMHhEOCwweEZGLDB4MDYsMHg2MiwweEE0LDB4NTksMHg4QSwweDBBLDB4RkIs
MHhGRCwKKyAgICAweDQ3LDB4NkEsMHhDNSwweDU5LDB4QTIsMHgwQSwweEZGLDB4N0QsMHgwNiww
eDYyLDB4QzUsMHg2MSwweDdBLDB4Q0MsMHhGRSwweEZFLAorICAgIDB4MjYsMHg2QSwweEM1LDB4
NTksMHg1RiwweEZELDB4RkMsMHg1QiwweDA2LDB4NkEsMHg4NCwweDU5LDB4OUIsMHgyQSwweDAy
LDB4MDAsCisgICAgMHg4NywweDdBLDB4QzQsMHg2MSwweEQ3LDB4MkYsMHhBQSwweDBBLDB4MDks
MHg5MywweDI2LDB4NzIsMHhBRCwweDJCLDB4MkEsMHhBQSwKKyAgICAweEFELDB4QTMsMHgwQSww
eDkzLDB4QjcsMHhCRCwweEFELDB4MEYsMHhFRCwweEFCLDB4NEIsMHg5QiwweDdELDB4RkYsMHhB
QSwweDgwLAorICAgIDB4NkIsMHhBMywweEM4LDB4OEEsMHg1QywweDVDLDB4NzgsMHhFMCwweDRB
LDB4OUIsMHhBOCwweDhBLDB4QjksMHgwOSwweDBGLDB4QUYsCisgICAgMHg0QSwweDlCLDB4RTks
MHg5MiwweDZCLDB4QzIsMHhBMCwweEZGLDB4OEMsMHhBMywweDI2LDB4N0EsMHg1RiwweDdBLDB4
QUEsMHgwQSwKKyAgICAweENDLDB4QUIsMHgyNiwweDcyLDB4RDUsMHhGRiwweEVBLDB4ODAsMHhD
OCwweDhBLDB4NjYsMHg4MiwweDBCLDB4MEIsMHhGQSwweEY0LAorICAgIDB4QzksMHg4QSwweDI2
LDB4NzIsMHhGOCwweEZFLDB4RkIsMHg1NywweDY3LDB4N0EsMHhDNCwweDYxLDB4RTgsMHhFOCww
eDdFLDB4NzcsCisgICAgMHgxMSwweENELDB4RTUsMHg2OSwweEQ1LDB4QjUsMHhCNSwweDI1LDB4
RDcsMHhGRSwweDZGLDB4QkMsMHgyRCwweDJCLDB4MEIsMHgwMiwKKyAgICAweDE4LDB4RkYsMHhE
NywweEZFLDB4QUQsMHhBQiwweEFBLDB4MkEsMHgxNywweEZGLDB4RjgsMHhGNiwweEFGLDB4RUEs
MHhFMywweEVBLAorICAgIDB4RjgsMHhGRSwweDE3LDB4RjcsMHhFQSwweEJBLDB4QkEsMHhCQSww
eDE3LDB4RkYsMHhGNywweEY2LDB4QkQsMHhFRiwweEFGLDB4QUIsCisgICAgMHgxNywweEZGLDB4
RjcsMHhGNiwweDhCLDB4QTYsMHhBQSwweDdFLDB4MTcsMHhGRiwweEY3LDB4RjYsMHhGQSwweEQ2
LDB4NzcsMHhENSwKKyAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4RjcsMHhGNywweEFELDB4QUIs
MHgxOCwweEZGLDB4QjYsMHhFRSwweDA4LDB4ODAsMHhFOCwweDdBLAorICAgIDB4RjcsMHhGNiww
eDk2LDB4RUUsMHg4MCwweEU4LDB4RkUsMHhERiwweEQ3LDB4RjYsMHg5NiwweEVFLDB4QTAsMHhC
RSwweDVGLDB4NTcsCisgICAgMHhCNiwweEVFLDB4NTUsMHhFRSwweDAwLDB4RTgsMHg3QSwweDVG
LDB4OTYsMHhFRSwweEIyLDB4RDUsMHgyMCwweEEyLDB4RkEsMHg3QSwKKyAgICAweDE4LDB4RkYs
MHhGMywweEQ1LDB4QUYsMHgyRCwweDJELDB4MjksMHgzOCwweEZGLDB4MTgsMHhGRiwweDJCLDB4
OEIsMHgyRiwweEFGLAorICAgIDB4MzgsMHhGRiwweEY4LDB4RjYsMHg2QSwweEVBLDB4QzAsMHg4
MCwweDE4LDB4RkYsMHhCNywweEVFLDB4N0UsMHhEQSwweEZBLDB4RkMsCisgICAgMHhGOCwweEZF
LDB4RDcsMHhGNiwweDlELDB4QkYsMHhBNSwweEI1LDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGRiww
eEJFLDB4QUIsMHhBQiwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4RUEsMHhBRSwweEIyLDB4
QUEsMHgxOCwweEZGLDB4RjgsMHhGNiwweEZGLDB4QUYsMHhGRSwweEYyLAorICAgIDB4RjgsMHhG
RSwweDc1LDB4RUUsMHg1OCwweDU4LDB4NjgsMHhFMCwweDk2LDB4RUUsMHgzNSwweEU2LDB4N0Us
MHhGRSwweEJFLDB4RjgsCisgICAgMHg3NiwweEVFLDB4NTUsMHhFNiwweDU3LDB4RjcsMHhFQyww
eEZGLDB4NTUsMHhFRSwweDM1LDB4RTYsMHg1RSwweEY4LDB4REMsMHhGOCwKKyAgICAweDk2LDB4
RUUsMHgzNSwweEU2LDB4MkYsMHgzRiwweEFELDB4RUYsMHhGNywweEZFLDB4OTYsMHhFRSwweEE5
LDB4MkYsMHhBRCwweEFELAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg5NCwweEJBLDB4QUEs
MHg4MiwweEQ3LDB4RkUsMHhGNywweEY2LDB4NzcsMHg1RiwweEZELDB4RjcsCisgICAgMHgxOCww
eEZGLDB4RDcsMHhGNiwweEVBLDB4QUEsMHhBQiwweEFGLDB4MTgsMHhGNywweEQ3LDB4RjYsMHg3
RiwweERFLDB4RkUsMHhBMiwKKyAgICAweEY3LDB4RjYsMHhCNywweEVFLDB4RkEsMHhBQSwweDgw
LDB4MDAsMHhENywweEY2LDB4RjcsMHhFRSwweDAwLDB4MDAsMHg4QSwweEZBLAorICAgIDB4Rjcs
MHhGNiwweEQ3LDB4RUUsMHhCNywweEVGLDB4RjcsMHgyOCwweEY3LDB4RjYsMHhENywweEY2LDB4
NUYsMHg3QSwweEUyLDB4QjIsCisgICAgMHgzOCwweEY3LDB4RDcsMHhGNiwweDU1LDB4N0QsMHhG
RiwweEJGLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhGRCwweEJCLDB4QjIsMHhGMiwKKyAgICAweEQ5
LDB4RkUsMHhGNywweEY2LDB4RjUsMHg1NSwweEY1LDB4RDUsMHhEOCwweEZFLDB4RjgsMHhGNiww
eERELDB4NzcsMHg3NSwweDU3LAorICAgIDB4MTcsMHhGRiwweEY4LDB4RjYsMHg3RCwweEZELDB4
RkQsMHg3NywweEY4LDB4RkUsMHhGNywweEY2LDB4NzcsMHhERCwweEQ3LDB4NUQsCisgICAgMHhG
NywweEY2LDB4RDcsMHhGNiwweDAwLDB4MjAsMHgwOCwweDIyLDB4RjcsMHhGNiwweEQ3LDB4RjYs
MHg4OCwweEMyLDB4RTgsMHhFQywKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4REYsMHhGNyww
eERELDB4RDUsMHhENywweEY2LDB4QjYsMHhFRSwweEY4LDB4RTgsMHhGOCwweEZGLAorICAgIDB4
QjcsMHhFRSwweDc2LDB4RTYsMHhFMCwweEZBLDB4NzgsMHhFMCwweEQ3LDB4RjYsMHg3NSwweEU2
LDB4QkYsMHhBRCwweDNELDB4QTksCisgICAgMHhGNywweEY2LDB4QjYsMHhFRSwweEY3LDB4QkYs
MHhCQiwweEFBLDB4RjcsMHhGNiwweEI2LDB4RUUsMHhGQSwweEZBLDB4RkEsMHhFQSwKKyAgICAw
eEI3LDB4RjYsMHg3NSwweEVFLDB4N0UsMHhGOCwweEZDLDB4NUYsMHg5NiwweEVFLDB4MzUsMHhF
NiwweEU4LDB4QTgsMHg4OCwweDIyLAorICAgIDB4NzYsMHhFRSwweDU1LDB4RTYsMHgyQiwweDAy
LDB4MDAsMHgwMCwweDk2LDB4RUUsMHg3NiwweEVFLDB4ODUsMHhCNCwweDlGLDB4RjUsCisgICAg
MHg3NiwweEVFLDB4RjMsMHhERCwweDYwLDB4NjAsMHg0MCwweEUwLDB4RjQsMHhERCwweDUyLDB4
Q0QsMHgzNywweDNFLDB4M0YsMHgyRiwKKyAgICAweDc2LDB4RUUsMHgxNCwweERFLDB4MkQsMHhB
RCwweEFELDB4MkQsMHg5NiwweEVFLDB4MTQsMHhFNiwweEFBLDB4RUEsMHhFMCwweEZBLAorICAg
IDB4NTUsMHhFNiwweEY0LDB4REQsMHhBMiwweEVBLDB4RkUsMHhGRSwweDE0LDB4RTYsMHg1Miww
eENELDB4NjAsMHhDMCwweEUwLDB4QzAsCisgICAgMHgxMSwweEM1LDB4NkUsMHhCNCwweEZFLDB4
RjgsMHg3OCwweDVDLDB4Q0YsMHhCQywweDRELDB4QUMsMHhGRSwweEJGLDB4M0YsMHhCNywKKyAg
ICAweDEzLDB4REUsMHgwRiwweEM1LDB4QUQsMHgyRCwweDJELDB4MjksMHg1NCwweEU2LDB4MTQs
MHhERSwweEI1LDB4QkQsMHhBRiwweEFBLAorICAgIDB4NTUsMHhFNiwweDE0LDB4RTYsMHhGRiww
eERBLDB4N0EsMHhGQSwweDU1LDB4RTYsMHgxNCwweERFLDB4QjksMHhFRiwweDJCLDB4MEYsCisg
ICAgMHg1NSwweEVFLDB4MzUsMHhFNiwweDNBLDB4RkYsMHhGQSwweDI4LDB4NTUsMHhFNiwweDE0
LDB4REUsMHgwOCwweEJGLDB4RkYsMHhBOCwKKyAgICAweEI2LDB4RUUsMHgzNSwweEU2LDB4QjUs
MHhBNSwweDJGLDB4MkIsMHhENiwweEY2LDB4OTYsMHhFRSwweEE5LDB4QUIsMHg4QSwweEJFLAor
ICAgIDB4QjYsMHhGNiwweEY3LDB4RUUsMHhGQSwweEZFLDB4QUEsMHhBRSwweEQ3LDB4RjYsMHhG
NiwweEVFLDB4MjIsMHgwQSwweDAwLDB4MDgsCisgICAgMHhENywweEY2LDB4QjYsMHhFRSwweDI4
LDB4QUEsMHg4RSwweEFCLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBMiwweDgyLDB4QTIsMHhFQSwK
KyAgICAweEQ2LDB4RjYsMHhCNSwweEVFLDB4MDIsMHhBQSwweEFFLDB4QTUsMHhENiwweEY2LDB4
QjYsMHhFRSwweDAwLDB4ODIsMHgyQywweEFBLAorICAgIDB4RDcsMHhGNiwweEY3LDB4RUUsMHgy
OCwweDIwLDB4MjAsMHgwMCwweEQ2LDB4RjYsMHhCNywweEVFLDB4ODIsMHgyQSwweEFBLDB4MjAs
CisgICAgMHhGNiwweEY2LDB4RDcsMHhGNiwweDdELDB4N0YsMHg1QSwweDVGLDB4RDYsMHhGNiww
eEQ3LDB4RUUsMHgyQSwweEFBLDB4QUEsMHhBQSwKKyAgICAweEQ3LDB4RjYsMHhGNiwweEVFLDB4
MjIsMHgwMCwweDAyLDB4MDgsMHhGNywweEY2LDB4QjYsMHhFRSwweEJFLDB4QkYsMHhBRiwweEFF
LAorICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHhCRSwweEFBLDB4RjgsMHhFMiwweEQ2LDB4RjYs
MHhCNiwweEVFLDB4OEYsMHhGRiwweEFGLDB4QUYsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSww
eDg4LDB4MjgsMHg4QiwweDJELDB4RjcsMHhGNiwweEI2LDB4RUUsMHhBQSwweEJBLDB4RUYsMHhC
RiwKKyAgICAweEQ3LDB4RjYsMHhGNywweEVFLDB4ODgsMHgwOCwweEMwLDB4MDIsMHhGNywweEY2
LDB4RDcsMHhGNiwweDhGLDB4QkUsMHhERSwweEE5LAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYs
MHgwOCwweDJBLDB4MEEsMHgwQSwweDE3LDB4RkYsMHhENywweEY2LDB4RkUsMHhBQSwweEZBLDB4
RkYsCisgICAgMHhENywweEZFLDB4RjcsMHhGNiwweERELDB4REQsMHg1NSwweDU3LDB4RjcsMHhG
NiwweEQ2LDB4RjYsMHhCNywweDNBLDB4MjEsMHgwMCwKKyAgICAweEY3LDB4RjYsMHhENywweEY2
LDB4QTgsMHhBOCwweDIyLDB4MjgsMHhGNywweEY2LDB4RDcsMHhGNiwweEVBLDB4RkUsMHg2MCww
eDc4LAorICAgIDB4RjcsMHhGRSwweEQ3LDB4RjYsMHhGRiwweEJELDB4REYsMHhERiwweEY3LDB4
RjYsMHgxMywweEU2LDB4NjAsMHg2OCwweDY4LDB4NjIsCisgICAgMHhFRiwweEM0LDB4QTYsMHg3
QSwweEY4LDB4NzgsMHg3OCwweDc4LDB4QzcsMHg4MiwweDQ2LDB4NzIsMHhCOCwweEY4LDB4NTYs
MHg1RiwKKyAgICAweDg3LDB4N0EsMHgyNiwweDcyLDB4MkEsMHhBQiwweEZBLDB4N0QsMHhBOCww
eDdBLDB4NDcsMHg3MiwweDAwLDB4QUIsMHg5RCwweDVELAorICAgIDB4RTksMHg4MiwweDQ2LDB4
NzIsMHgwQSwweDJBLDB4QkYsMHhGNSwweDRBLDB4OEIsMHg2NywweDcyLDB4QTIsMHhBQiwweDdE
LDB4NTUsCisgICAgMHhFOSwweDhBLDB4MDYsMHg2QSwweEE4LDB4RTgsMHhGQiwweDVGLDB4QTgs
MHg3QSwweDA1LDB4NjIsMHg4OCwweEFBLDB4QkEsMHg3RiwKKyAgICAweEE4LDB4N0EsMHgwNiww
eDYyLDB4QTgsMHhGRSwweDVFLDB4NUYsMHgyNywweDZBLDB4ODQsMHg1MSwweEUwLDB4QkEsMHhC
RiwweERFLAorICAgIDB4RTUsMHg2MSwweDY0LDB4NTEsMHgwQSwweEFBLDB4QUMsMHhBNSwweDA1
LDB4NjIsMHg4NCwweDU5LDB4MDIsMHg3QiwweEZGLDB4RDcsCisgICAgMHhFNSwweDYxLDB4QTQs
MHg1OSwweDhBLDB4REYsMHhCOSwweEY1LDB4RTUsMHg2MSwweDg0LDB4NTksMHhBMiwweEFBLDB4
QjgsMHhCQiwKKyAgICAweEU1LDB4NjEsMHhBNCwweDU5LDB4RTUsMHhBQSwweDgyLDB4QUEsMHgw
NiwweDYyLDB4QTUsMHg1OSwweDVGLDB4RDUsMHhCRSwweDhFLAorICAgIDB4RTUsMHg2MSwweEE1
LDB4NTksMHg1MywweDJCLDB4MDksMHgwMiwweDI2LDB4NkEsMHhDNSwweDU5LDB4RUYsMHhCOSww
eENCLDB4MEEsCisgICAgMHg2NywweDcyLDB4QzUsMHg1OSwweDVGLDB4RUQsMHhBQSwweEEyLDB4
QTgsMHg4MiwweEU1LDB4NjEsMHhERCwweEY3LDB4QkIsMHgwMiwKKyAgICAweDA5LDB4OTMsMHg2
NiwweDcyLDB4RDUsMHhCRCwweDJBLDB4MEUsMHgyQSwweDkzLDB4QzgsMHg4QSwweDlGLDB4ODMs
MHgwOCwweDI4LAorICAgIDB4QUMsMHhBMywweDBBLDB4OTMsMHgwRCwweDJCLDB4MEQsMHgyQiww
eDRFLDB4QkMsMHhDQywweEFCLDB4N0QsMHgwRiwweEFGLDB4MjksCisgICAgMHg2RSwweEJDLDB4
NkIsMHhBMywweDVGLDB4RkUsMHhBOCwweDAwLDB4MkQsMHhCNCwweDBBLDB4OTMsMHg1NSwweDVG
LDB4N0EsMHhCMCwKKyAgICAweDJBLDB4OUIsMHhDOCwweDhBLDB4QkYsMHhGRSwweDU3LDB4Rjgs
MHg2QiwweEEzLDB4QzksMHg4QSwweDBCLDB4MkQsMHgzRiwweEE1LAorICAgIDB4RUQsMHhCMyww
eDRBLDB4OUIsMHg4MywweEFBLDB4RkYsMHhENSwweDJBLDB4OUIsMHg2NywweDgyLDB4RDQsMHg1
OCwweDc4LDB4RjAsCisgICAgMHg4NywweDgyLDB4MjYsMHg3MiwweDdBLDB4RUEsMHg3RSwweDJB
LDB4NEEsMHg5MywweEM1LDB4NjksMHg1NywweERGLDB4QjUsMHgyRiwKKyAgICAweDU2LDB4RUUs
MHhDOSwweDgyLDB4MzUsMHgyRCwweDBCLDB4MEIsMHhENywweEZFLDB4MzUsMHhFRSwweDA5LDB4
MDMsMHgwMiwweDAwLAorICAgIDB4MTgsMHhGRiwweEY3LDB4RkUsMHhGRCwweEJELDB4QkQsMHhB
NSwweDE4LDB4RkYsMHhGOCwweEY2LDB4RUUsMHg3RSwweEQ4LDB4QkEsCisgICAgMHgxNywweEZG
LDB4RjcsMHhGNiwweEVGLDB4RUIsMHhGNywweEZBLDB4MTgsMHhGRiwweEY3LDB4RjYsMHhCQSww
eDhFLDB4RUIsMHg4RSwKKyAgICAweDE3LDB4RkYsMHhENywweEY2LDB4QUEsMHhCQSwweEZBLDB4
RkUsMHgxNywweEZGLDB4RDcsMHhGNiwweEJGLDB4QjYsMHgzQSwweEFCLAorICAgIDB4MTgsMHhG
RiwweEI2LDB4RUUsMHg4MiwweEEwLDB4QTgsMHg3MiwweEY3LDB4RjYsMHg5NiwweEVFLDB4Rjgs
MHhGQSwweDVFLDB4NTcsCisgICAgMHg3NSwweEVFLDB4QjYsMHhFNiwweEFELDB4QUEsMHhBRSww
eEVCLDB4QjYsMHhFRSwweDc1LDB4RUUsMHhGRiwweDdGLDB4N0YsMHgwMCwKKyAgICAweEI2LDB4
RjYsMHg1NCwweEU2LDB4N0YsMHhGRiwweEVCLDB4ODAsMHg3NSwweEVFLDB4RDMsMHhENSwweDVB
LDB4NUUsMHg5RSwweDI4LAorICAgIDB4MTgsMHhGRiwweDM0LDB4REUsMHgwRCwweDBGLDB4MDMs
MHgwMiwweDM5LDB4RkYsMHgxOCwweEZGLDB4QkYsMHhCRiwweEJCLDB4QUYsCisgICAgMHgzOSww
eEZGLDB4MTgsMHhGRiwweEMyLDB4MDAsMHgwMiwweEMyLDB4MTgsMHhGNywweEQ3LDB4RjYsMHg1
NiwweDVFLDB4NzgsMHhGOCwKKyAgICAweEY4LDB4RjYsMHhENywweEY2LDB4QTUsMHgyOSwweEEz
LDB4MEEsMHgxOCwweEZGLDB4RjgsMHhGNiwweEFGLDB4RUQsMHhBRiwweEE5LAorICAgIDB4MTgs
MHhGRiwweEY4LDB4RjYsMHhCQSwweDdGLDB4REQsMHhFRiwweDE4LDB4RkYsMHhGOCwweEY2LDB4
NkEsMHhGRiwweDdELDB4N0QsCisgICAgMHhGOCwweEY2LDB4QjcsMHhGNiwweDYwLDB4ODAsMHgy
MCwweDAwLDB4RDcsMHhGNiwweDU1LDB4RTYsMHg1NywweDVFLDB4N0MsMHg3OCwKKyAgICAweDc2
LDB4RUUsMHg1NSwweEU2LDB4RUIsMHg4RiwweDFGLDB4RUIsMHg1NSwweEVFLDB4MzUsMHhFNiww
eDc4LDB4NzAsMHhGMCwweEU4LAorICAgIDB4NzYsMHhFRSwweDE0LDB4REUsMHgyQSwweDJBLDB4
QUYsMHhBOSwweEQ3LDB4RjYsMHg1NSwweEVFLDB4MEIsMHgwQiwweDJELDB4QUYsCisgICAgMHgx
OCwweEY3LDB4QjYsMHhFRSwweENBLDB4QTIsMHhGQiwweEFELDB4RjcsMHhGNiwweEQ3LDB4RjYs
MHgyQiwweDhELDB4QTUsMHhCRSwKKyAgICAweEQ3LDB4RkUsMHhGOCwweEY2LDB4NTcsMHg1RCww
eDk3LDB4NTUsMHgxOCwweEZGLDB4RjgsMHhGNiwweEVELDB4QUQsMHhGRCwweEVELAorICAgIDB4
RjcsMHhGNiwweEQ4LDB4RjYsMHgyQSwweEI4LDB4NzAsMHhCMCwweDE4LDB4RkYsMHhENywweEY2
LDB4M0QsMHhBNywweEI3LDB4NTcsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweDVGLDB4N0Ys
MHhGRiwweEJELDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhGRSwweEZGLDB4RUEsMHhBOCwKKyAgICAw
eEY3LDB4RjYsMHhENywweEY2LDB4MDgsMHgyRSwweEFBLDB4MjIsMHgxOCwweEZGLDB4RjcsMHhG
NiwweDc1LDB4NTUsMHg3NSwweEQ3LAorICAgIDB4RjcsMHhGRSwweEY4LDB4RjYsMHg3NSwweERE
LDB4N0YsMHhGNywweDE4LDB4RkYsMHhGOCwweEY2LDB4NzUsMHg1NSwweDdGLDB4N0YsCisgICAg
MHgxOCwweEZGLDB4RDcsMHhGNiwweEFCLDB4RUEsMHhGQiwweERGLDB4RjcsMHhGNiwweEQ3LDB4
RjYsMHgwMCwweDAwLDB4MDAsMHhBQywKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4MjgsMHgy
MiwweEFDLDB4RUUsMHhGNywweEY2LDB4RDcsMHhGNiwweDZDLDB4N0UsMHhENywweDU5LAorICAg
IDB4RDcsMHhGNiwweEI2LDB4RUUsMHgwMCwweEM4LDB4RTAsMHhDMCwweEQ3LDB4RjYsMHg5Niww
eEVFLDB4QUIsMHg4QiwweEVFLDB4N0YsCisgICAgMHhCNiwweEVFLDB4NzUsMHhFNiwweEU4LDB4
QUUsMHhFQywweERGLDB4RDcsMHhGNiwweDk2LDB4RUUsMHgwRCwweDJELDB4MjUsMHhBRCwKKyAg
ICAweEY3LDB4RjYsMHhCNywweEVFLDB4QUEsMHhFOCwweEZBLDB4RUYsMHhGNywweEY2LDB4QjYs
MHhFRSwweEFBLDB4RUIsMHhGQSwweEZCLAorICAgIDB4QjcsMHhGNiwweDU1LDB4RTYsMHg3RSww
eEQ2LDB4NzYsMHg1QywweDk2LDB4RUUsMHg3NiwweEVFLDB4ODksMHhGRiwweDdELDB4RDUsCisg
ICAgMHg3NiwweEVFLDB4NTUsMHhFNiwweDg4LDB4RTAsMHhGMCwweEZFLDB4OTYsMHhFRSwweDU1
LDB4RTYsMHhBQiwweEJCLDB4RUYsMHhGRiwKKyAgICAweDc2LDB4RUUsMHhEMywweERELDB4RTAs
MHhFMCwweEUwLDB4NjAsMHhGMywweERELDB4NzIsMHhDRCwweEJGLDB4QUYsMHgyRiwweDNGLAor
ICAgIDB4NzYsMHhFRSwweEY0LDB4REQsMHgyRCwweDJELDB4MEIsMHgyRCwweDc2LDB4RUUsMHgx
NCwweEU2LDB4RjgsMHhCOCwweDY4LDB4NzAsCisgICAgMHgzNCwweEU2LDB4RjQsMHhERCwweEVD
LDB4NjgsMHhGQSwweEI3LDB4MTUsMHhFNiwweDkyLDB4RDUsMHg2MCwweDQ4LDB4NkEsMHg2MiwK
KyAgICAweDEwLDB4QzUsMHhFQywweEEzLDB4RTgsMHhGOCwweEZDLDB4N0MsMHhGMCwweEM0LDB4
RUMsMHg5QiwweEFGLDB4MkYsMHgzRCwweDI1LAorICAgIDB4MzQsMHhFNiwweDUxLDB4Q0QsMHhB
RCwweDJELDB4M0QsMHgyRiwweDU1LDB4RTYsMHgxNCwweEU2LDB4QUYsMHg4OSwweDIzLDB4MjMs
CisgICAgMHg1NCwweEU2LDB4MTQsMHhERSwweEZBLDB4NUUsMHhEQSwweEZDLDB4QjcsMHhGNiww
eDM0LDB4RTYsMHhGNSwweEFELDB4QTksMHgwOSwKKyAgICAweEI2LDB4RjYsMHg1NSwweEU2LDB4
RDUsMHhGRiwweEVBLDB4NzAsMHg3NiwweEVFLDB4NTUsMHhFNiwweEQ3LDB4MUYsMHgyRiwweDJC
LAorICAgIDB4QjYsMHhFRSwweDc2LDB4RUUsMHhBRCwweDJGLDB4QUEsMHhBQSwweEI2LDB4RjYs
MHg5NiwweEVFLDB4Q0EsMHhDQiwweDdFLDB4REUsCisgICAgMHhENywweEY2LDB4QjYsMHhFRSww
eDBBLDB4MzEsMHgyMiwweEJBLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhCOCwweEZFLDB4QTIsMHg4
MCwKKyAgICAweEQ2LDB4RjYsMHhENywweEVFLDB4QUEsMHhBMiwweEFBLDB4QUEsMHhENiwweEY2
LDB4QjcsMHhFRSwweEVBLDB4QTgsMHgyQywweDI4LAorICAgIDB4RjYsMHhGNiwweEI3LDB4RUUs
MHhCRCwweEZFLDB4RkEsMHhFQSwweEQ3LDB4RjYsMHhCNiwweEVFLDB4QTIsMHhFMiwweDgyLDB4
QTgsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDIyLDB4MEEsMHg4QiwweEE4LDB4RjcsMHhG
NiwweEI2LDB4RUUsMHhCQSwweEZFLDB4QUIsMHhBRiwKKyAgICAweEY3LDB4RjYsMHhCNiwweEVF
LDB4QkEsMHhFRiwweEFBLDB4QUEsMHhENiwweEY2LDB4RjgsMHhFRSwweDg4LDB4MjgsMHgwMCww
eDIyLAorICAgIDB4RjUsMHhGNiwweEQ3LDB4RjYsMHg1NywweERGLDB4RjUsMHhGRCwweEQ2LDB4
RjYsMHhENywweEVFLDB4QUEsMHhBMiwweEFBLDB4MjgsCisgICAgMHhENiwweEY2LDB4QjYsMHhF
RSwweEZFLDB4NkUsMHg2MCwweEYwLDB4RDYsMHhGNiwweEI2LDB4RUUsMHg2RiwweDdGLDB4Rjks
MHg5QiwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4OEYsMHhFRiwweEJFLDB4QUUsMHhENyww
eEY2LDB4QjYsMHhFRSwweEFBLDB4QTgsMHhCQSwweEZGLAorICAgIDB4RjYsMHhGNiwweEI2LDB4
RUUsMHhFQiwweEVCLDB4QUYsMHhBRiwweEY3LDB4RjYsMHhCNiwweEVFLDB4QUEsMHhCQSwweEFE
LDB4QkIsCisgICAgMHhGNiwweEY2LDB4RDYsMHhGNiwweEY2LDB4RkYsMHhERCwweEY1LDB4RjYs
MHhGNiwweEQ2LDB4RjYsMHhBQSwweEEyLDB4QkIsMHg3OSwKKyAgICAweEY3LDB4RjYsMHhENyww
eEY2LDB4MjAsMHhBQSwweEFFLDB4RjUsMHhGNywweEY2LDB4RDcsMHhGNiwweDgwLDB4MjgsMHhB
MCwweEFBLAorICAgIDB4RjcsMHhGRSwweEY3LDB4RjYsMHhGRCwweERGLDB4N0YsMHg3RCwweEQ3
LDB4RkUsMHhGNywweEY2LDB4RjUsMHhGRCwweEZELDB4QkQsCisgICAgMHhGNywweEZFLDB4RDYs
MHhGNiwweEQ4LDB4RUEsMHhGRiwweDVFLDB4QjYsMHhGNiwweDUxLDB4Q0QsMHhDMCwweDYwLDB4
NDAsMHg2MCwKKyAgICAweDRELDB4QUMsMHhBNiwweDdBLDB4NTgsMHg1QywweDVDLDB4NUMsMHhF
NywweDgyLDB4NDUsMHg2QSwweDU1LDB4NTcsMHhGRCwweDhBLAorICAgIDB4QTcsMHg3QSwweDI2
LDB4NkEsMHg3RCwweDc3LDB4N0EsMHg3OCwweDY3LDB4NzIsMHhDNSwweDYxLDB4MEEsMHhCQSww
eDZFLDB4RUYsCisgICAgMHg0NywweDcyLDB4RTYsMHg2MSwweDAyLDB4RUEsMHhGNSwweDg1LDB4
NDYsMHg2QSwweEU1LDB4NjEsMHhCQywweERGLDB4N0IsMHhENywKKyAgICAweDQ2LDB4NkEsMHhF
NSwweDYxLDB4OUYsMHgzRiwweEFGLDB4QUEsMHg0NiwweDZBLDB4MjYsMHg2QSwweDA2LDB4Njgs
MHg5RSwweDc2LAorICAgIDB4NDYsMHg2QSwweEM0LDB4NTksMHhFOCwweEY4LDB4RkEsMHg1RSww
eEU1LDB4NTksMHg0MywweDUxLDB4NkUsMHhFMCwweEU4LDB4RUEsCisgICAgMHg4NCwweDU5LDB4
MDMsMHg0OSwweDgyLDB4NkEsMHhBQSwweEEwLDB4ODQsMHg1OSwweDIzLDB4NDksMHgyRSwweDNE
LDB4MjUsMHg4QSwKKyAgICAweEM2LDB4NjEsMHg2NCwweDUxLDB4RDUsMHhCRCwweDhCLDB4MEIs
MHgwNiwweDYyLDB4ODUsMHg1OSwweEZGLDB4RkYsMHhCQSwweDJFLAorICAgIDB4MDYsMHg2Miww
eEE1LDB4NTksMHhGQiwweEI1LDB4RkUsMHhFOCwweDI2LDB4NkEsMHhDNSwweDYxLDB4RUIsMHhG
RiwweDBGLDB4MjksCisgICAgMHg0NywweDcyLDB4QzUsMHg1OSwweDdELDB4RDcsMHhBQiwweDJB
LDB4QzgsMHg3QSwweDA2LDB4NjIsMHhGNSwweEZGLDB4RkQsMHg4RiwKKyAgICAweEU5LDB4OEEs
MHg0NiwweDcyLDB4RjUsMHhCRCwweDJELDB4MkEsMHgyQSwweDkzLDB4QzgsMHg4MiwweEY1LDB4
RkYsMHgyRSwweDBCLAorICAgIDB4MkEsMHg5MywweEU4LDB4OEEsMHgzNiwweDJCLDB4QUMsMHhB
QSwweDZCLDB4OUIsMHgwOSwweDkzLDB4RkYsMHhGRiwweEVCLDB4MkIsCisgICAgMHg4QiwweEEz
LDB4MkEsMHg5QiwweDI5LDB4MkIsMHgwQiwweDAyLDB4NkUsMHhCQywweEFDLDB4QUIsMHgyRCww
eEE1LDB4QUQsMHhBRCwKKyAgICAweENGLDB4Q0MsMHg0RSwweEJDLDB4RjcsMHhBRCwweEFGLDB4
MEYsMHhDRiwweENDLDB4Q0MsMHhBQiwweDdFLDB4RUEsMHhBOCwweEEwLAorICAgIDB4MEQsMHhC
NCwweDJBLDB4OTMsMHg1RiwweDdBLDB4RjgsMHhFOCwweDRBLDB4OTMsMHhFOSwweDhBLDB4QUYs
MHhFRiwweEZBLDB4RjgsCisgICAgMHgyQSwweDkzLDB4ODcsMHg4MiwweDAwLDB4RUEsMHg2RSww
eDdFLDB4RTksMHg4QSwweEM1LDB4NjksMHhBMCwweEVBLDB4N0UsMHg1NywKKyAgICAweDA5LDB4
OEIsMHhFNSwweDY5LDB4RkYsMHhERCwweEI1LDB4M0QsMHgxMiwweEU2LDB4RTgsMHg4MiwweEY1
LDB4QjUsMHgyRCwweDBCLAorICAgIDB4RDcsMHhGRSwweDcyLDB4RDUsMHgyRCwweDBCLDB4MDIs
MHgwMCwweDE4LDB4RkYsMHhENywweEZFLDB4QkYsMHhFQiwweEFBLDB4QUEsCisgICAgMHgxOCww
eEZGLDB4RjcsMHhGRSwweDhELDB4QUIsMHhBNSwweDJELDB4MTgsMHhGRiwweEY3LDB4RjYsMHhB
MiwweDgwLDB4QTgsMHhGQSwKKyAgICAweDE3LDB4RkYsMHhGOCwweEY2LDB4QUEsMHg3QSwweEFF
LDB4QUEsMHhGNywweEZFLDB4MTgsMHhGNywweEVGLDB4RkUsMHhGRiwweEFGLAorICAgIDB4MTcs
MHhGRiwweEQ3LDB4RjYsMHg3QSwweEZBLDB4RUEsMHhFQSwweDE3LDB4RkYsMHhCNiwweEVFLDB4
MjIsMHgwQSwweEUyLDB4NkEsCisgICAgMHhGNywweEY2LDB4OTYsMHhFRSwweDYwLDB4NUMsMHhE
RiwweEY3LDB4RjcsMHhGNiwweDk2LDB4RUUsMHg1NSwweEY1LDB4RkQsMHgwQiwKKyAgICAweDE3
LDB4RkYsMHg5NiwweEVFLDB4RkQsMHhBRiwweDhBLDB4MDAsMHgzOCwweEZGLDB4RDcsMHhGNiww
eEQ1LDB4RkIsMHhBQSwweDhBLAorICAgIDB4MTgsMHhGRiwweEI2LDB4RjYsMHg3RSwweEZFLDB4
RTIsMHhGMCwweEY3LDB4RjYsMHg3NSwweEVFLDB4OUQsMHhCNywweDM3LDB4MzcsCisgICAgMHgz
OCwweEZGLDB4RjgsMHhGRSwweEFGLDB4QUIsMHhBQSwweDhBLDB4MzksMHhGRiwweDE4LDB4RkYs
MHhCRiwweEY1LDB4MkQsMHgyOSwKKyAgICAweDM5LDB4RkYsMHgxOCwweEZGLDB4QzIsMHhFOCww
eEUwLDB4QjAsMHgxOCwweEZGLDB4RjgsMHhGNiwweDU2LDB4NzgsMHg1MCwweEQwLAorICAgIDB4
RjgsMHhGNiwweEQ3LDB4RjYsMHg4OCwweEFBLDB4QjgsMHhBMiwweDE4LDB4RkYsMHhGOCwweEY2
LDB4RkQsMHhGNSwweEQ1LDB4REQsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEVELDB4QTUs
MHhBQiwweEFGLDB4MTgsMHhGRiwweEY4LDB4RjYsMHhFQiwweEFFLDB4MkEsMHhCQSwKKyAgICAw
eDE4LDB4RkYsMHhGOCwweEY2LDB4RkEsMHhEQSwweEIyLDB4QUEsMHgxOCwweEZGLDB4NTUsMHhF
NiwweDdBLDB4RkEsMHhFMCwweEE4LAorICAgIDB4NzUsMHhFRSwweDU1LDB4RTYsMHhCRiwweEZE
LDB4REYsMHg3MCwweDc1LDB4RUUsMHgzNSwweEU2LDB4RUEsMHhGRiwweEFGLDB4OUEsCisgICAg
MHg3NiwweEVFLDB4MzUsMHhFNiwweEFELDB4RUYsMHgyRiwweEFCLDB4QjYsMHhGNiwweDU1LDB4
RTYsMHhBRCwweEFELDB4QkYsMHgwRiwKKyAgICAweEY3LDB4RjYsMHhCNiwweEY2LDB4OEYsMHhB
OSwweEVELDB4QUQsMHhGNywweEY2LDB4RDcsMHhGNiwweEZBLDB4N0IsMHhGRiwweEJGLAorICAg
IDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhBQSwweEFCLDB4RUIsMHhBRiwweDE4LDB4RkYsMHhGOCww
eEY2LDB4RUIsMHhFRCwweEY1LDB4NTUsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweDU3LDB4
NTYsMHg1RiwweDVGLDB4RjgsMHhGNiwweEQ3LDB4RjYsMHhERSwweEZBLDB4QTIsMHgyMCwKKyAg
ICAweEY4LDB4RjYsMHhENywweEY2LDB4MDAsMHhBMiwweEFBLDB4MkIsMHgxOCwweEZGLDB4RDcs
MHhGNiwweEFBLDB4QkYsMHhCRiwweEJGLAorICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHg1RCww
eDc3LDB4N0UsMHhGRCwweEY3LDB4RjYsMHhENywweEY2LDB4MDAsMHhBMCwweEYyLDB4QTAsCisg
ICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweEFFLDB4QkUsMHhFQiwweDdGLDB4MTgsMHhGRiwweEY3
LDB4RjYsMHhGRiwweEVELDB4NzcsMHhENSwKKyAgICAweDE4LDB4RjcsMHhENywweEY2LDB4REUs
MHhGQSwweDdFLDB4RkYsMHhGNywweEY2LDB4RDcsMHhGNiwweEJDLDB4RUUsMHgyRSwweDlFLAor
ICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBOCwweEFBLDB4QUUsMHg4QSwweEQ3LDB4RjYsMHhG
NywweEVFLDB4MkEsMHhBMiwweDAyLDB4MDAsCisgICAgMHhENywweEY2LDB4QjYsMHhFRSwweENB
LDB4RUIsMHhFMywweEVCLDB4QjYsMHhFRSwweDk2LDB4RUUsMHhFMCwweEMwLDB4NzgsMHg1NiwK
KyAgICAweDk2LDB4RUUsMHg3NSwweEVFLDB4OUUsMHhCOCwweEMyLDB4NkEsMHhENywweEY2LDB4
NzYsMHhFRSwweEFCLDB4MEIsMHhFRiwweEFELAorICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHhF
QSwweEVCLDB4QUIsMHgzQSwweEQ3LDB4RjYsMHhCNiwweEVFLDB4OEIsMHhGQiwweDYzLDB4NzQs
CisgICAgMHg5NiwweEVFLDB4MTQsMHhERSwweEY4LDB4RkMsMHhGQywweDU4LDB4OTYsMHhFRSww
eDM1LDB4RTYsMHgyQiwweEFCLDB4OEYsMHhBRCwKKyAgICAweDc1LDB4RUUsMHg1NiwweEU2LDB4
RTgsMHhBMiwweDJCLDB4MkEsMHg5NiwweEVFLDB4NTUsMHhFRSwweEI3LDB4OUQsMHgyRiwweDhC
LAorICAgIDB4OTYsMHhFRSwweEY0LDB4REQsMHg2MCwweDcyLDB4NjgsMHhFMCwweDE0LDB4REUs
MHg3MiwweENELDB4QjcsMHgyRiwweDM1LDB4QjcsCisgICAgMHg3NiwweEVFLDB4RjMsMHhERCww
eDJELDB4QUYsMHgyQiwweDJCLDB4NzUsMHhFRSwweDM1LDB4RTYsMHg3MiwweDdBLDB4NUEsMHg3
QSwKKyAgICAweDE0LDB4RTYsMHhEMywweERELDB4RTgsMHhGQSwweDdFLDB4NTYsMHgxNCwweEU2
LDB4OTMsMHhENSwweDYyLDB4NkEsMHhFRiwweDdCLAorICAgIDB4RjAsMHhDNCwweDhCLDB4OTMs
MHhGQywweEZDLDB4N0MsMHhGOCwweDcyLDB4RDUsMHhFQywweDlCLDB4MzUsMHgyNSwweDJELDB4
MkIsCisgICAgMHg1NSwweEVFLDB4OTIsMHhENSwweEJELDB4QUQsMHgyRCwweEFELDB4OTYsMHhF
RSwweDM0LDB4RTYsMHhGRCwweDJBLDB4MEEsMHgwMiwKKyAgICAweDk2LDB4RUUsMHgzNCwweEU2
LDB4NTcsMHhGNCwweDgwLDB4MDAsMHhCNywweEY2LDB4NTUsMHhFNiwweDA5LDB4MjksMHhFQSww
eEZGLAorICAgIDB4QjYsMHhFRSwweDE0LDB4RTYsMHhCMCwweEZBLDB4RkUsMHhENiwweDk2LDB4
RUUsMHhGNCwweERELDB4MkEsMHgwQSwweEFBLDB4NzUsCisgICAgMHg5NiwweEVFLDB4MzUsMHhF
NiwweDIwLDB4MDAsMHg4MiwweDA5LDB4QjYsMHhGNiwweDU1LDB4RTYsMHhBQSwweEVBLDB4N0Us
MHg3RiwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4QkUsMHgyQiwweDJBLDB4QUEsMHhGNyww
eEY2LDB4RDcsMHhGNiwweDdDLDB4OUYsMHg1NSwweDU1LAorICAgIDB4RDcsMHhGNiwweEQ2LDB4
RUUsMHhBQiwweEFBLDB4ODgsMHhBQSwweEQ2LDB4RjYsMHhENywweEVFLDB4QUEsMHhBQSwweDhB
LDB4OEEsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDgwLDB4QTIsMHhBQiwweDBCLDB4RjYs
MHhGNiwweEI3LDB4RUUsMHhGQSwweEZFLDB4QkEsMHhBQiwKKyAgICAweEQ2LDB4RjYsMHhGOCww
eEVFLDB4MDAsMHhBMiwweDAyLDB4MDIsMHhENiwweEY2LDB4QjYsMHhFNiwweDg4LDB4MzIsMHgw
MiwweDAwLAorICAgIDB4RDYsMHhGNiwweEY4LDB4RUUsMHgwOCwweDgyLDB4MjAsMHgyMiwweEQ3
LDB4RjYsMHhENiwweEVFLDB4QUEsMHhBMiwweEE4LDB4QTMsCisgICAgMHhCNSwweEY2LDB4RjYs
MHhFRSwweEZBLDB4RUEsMHhCRiwweEFBLDB4RDYsMHhGNiwweEQ2LDB4RUUsMHgzOCwweEE4LDB4
QUEsMHhBOCwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4RjIsMHhFMiwweDcwLDB4NzgsMHhE
NiwweEY2LDB4QjYsMHhFRSwweEFBLDB4QUYsMHg5RCwweDU3LAorICAgIDB4RDYsMHhGNiwweEI2
LDB4RUUsMHhFRiwweDk2LDB4RkUsMHhBQSwweEQ2LDB4RjYsMHhCNiwweEVFLDB4RkUsMHhFRSww
eEVCLDB4RkUsCisgICAgMHhENiwweEY2LDB4QjYsMHhGNiwweEE4LDB4MEIsMHg4RCwweEFGLDB4
RDYsMHhGNiwweEI2LDB4RUUsMHg4MCwweDAwLDB4ODAsMHhBMywKKyAgICAweEY2LDB4RjYsMHhC
NiwweEVFLDB4QUEsMHg5RSwweEJGLDB4RUYsMHhGNiwweEY2LDB4QjYsMHhFRSwweEFBLDB4REEs
MHhCRiwweEVGLAorICAgIDB4RDYsMHhGNiwweEY3LDB4RUUsMHg4OCwweDgwLDB4MjAsMHhBOCww
eEY3LDB4RjYsMHhENiwweEY2LDB4RkEsMHhGQSwweEVELDB4RjcsCisgICAgMHhGNywweEY2LDB4
RDYsMHhGNiwweDM4LDB4OTYsMHhFQiwweEZBLDB4RjcsMHhGRSwweEQ3LDB4RjYsMHhBQSwweEFG
LDB4RkYsMHg3NCwKKyAgICAweEY3LDB4RkUsMHg3NSwweEVFLDB4QTIsMHhBQSwweEVBLDB4N0Us
MHg1NCwweEVFLDB4MjksMHg4MywweDgwLDB4RTAsMHhFMCwweDc4LAorICAgIDB4RUMsMHhBMyww
eEU1LDB4NjEsMHhGOCwweEZBLDB4RkUsMHg1NywweEM4LDB4N0EsMHg2NCwweDUxLDB4MDAsMHhB
MCwweEZCLDB4NTcsCisgICAgMHhBOCwweDdBLDB4NjMsMHg1MSwweEEwLDB4RTgsMHhGRiwweEQ1
LDB4MjYsMHg2QSwweDg0LDB4NTEsMHhBMCwweEE4LDB4QkIsMHhENSwKKyAgICAweDA2LDB4NjIs
MHhBNSwweDU5LDB4MDIsMHgyMiwweEJCLDB4REQsMHgyNiwweDZBLDB4ODQsMHg1MSwweEFBLDB4
ODIsMHg4RSwweDZGLAorICAgIDB4MjYsMHg2QSwweDIzLDB4NDEsMHhBMCwweDhBLDB4RkEsMHg1
RiwweEU1LDB4NTksMHg0MywweDQ5LDB4MDAsMHhGQSwweDdFLDB4NTUsCisgICAgMHhDNSwweDU5
LDB4NDMsMHg0OSwweDJBLDB4QUEsMHhGRSwweEZELDB4QTQsMHg1MSwweDY0LDB4NTEsMHhCMCww
eEU4LDB4QUYsMHg3RCwKKyAgICAweEM1LDB4NjEsMHg0MywweDQ5LDB4REYsMHhGRiwweDJGLDB4
MEYsMHhBOCwweDdBLDB4ODQsMHg1OSwweDU1LDB4RkYsMHhBQiwweDJFLAorICAgIDB4NDcsMHg3
MiwweEE1LDB4NTksMHg1NSwweEZFLDB4QTgsMHgwMCwweDI3LDB4NkEsMHhDNSwweDU5LDB4Qjcs
MHhBRiwweDk4LDB4OTAsCisgICAgMHg0NywweDZBLDB4RTUsMHg2MSwweDc5LDB4RjIsMHgyMCww
eEFBLDB4MDYsMHg2QSwweEM1LDB4NjEsMHhBNywweDNBLDB4OUEsMHhBQywKKyAgICAweEE4LDB4
N0EsMHgwNiwweDZBLDB4RjcsMHhCNSwweDhELDB4MkYsMHg4QiwweEEzLDB4NjcsMHg3MiwweEZE
LDB4QUYsMHhBQiwweDBCLAorICAgIDB4Q0MsMHhBMywweEU5LDB4OEEsMHg1NSwweEZGLDB4QUEs
MHgyMCwweEFCLDB4QTMsMHhDOSwweDhBLDB4RkQsMHhBRSwweENBLDB4MDAsCisgICAgMHg4Qiww
eEEzLDB4MDksMHg5MywweDU1LDB4RUYsMHhGQiwweDc4LDB4OEIsMHhBMywweDJBLDB4OUIsMHgz
OSwweDNGLDB4MkQsMHhBOSwKKyAgICAweEFCLDB4QTMsMHg2QSwweEEzLDB4QUUsMHg5QSwweERD
LDB4NTUsMHgyRCwweEJDLDB4OEIsMHhBMywweDJCLDB4MjUsMHhBRCwweEY1LAorICAgIDB4Q0Ys
MHhDQywweENDLDB4QUIsMHgyQSwweEFGLDB4MzcsMHhGRCwweENGLDB4Q0MsMHgyRCwweEJDLDB4
NzgsMHhFOCwweDdBLDB4NzcsCisgICAgMHgyRSwweEJDLDB4NEEsMHg5QiwweEY4LDB4RjgsMHg3
OCwweDVFLDB4MjksMHg5MywweDQ2LDB4N0EsMHg4MCwweEZDLDB4RkEsMHg1RSwKKyAgICAweEM4
LDB4OEEsMHhFNSwweDY5LDB4RTAsMHhGQSwweDU2LDB4NUYsMHg0NiwweDcyLDB4QTQsMHg2MSww
eERFLDB4NUYsMHhBQSwweDBBLAorICAgIDB4RjMsMHhFNSwweEE3LDB4N0EsMHhENSwweEI1LDB4
MjUsMHgyRCwweEQ2LDB4RjYsMHgxMCwweENELDB4MkQsMHgyQiwweDAyLDB4MDIsCisgICAgMHgx
OCwweEZGLDB4QjYsMHhGRSwweEFCLDB4OEEsMHgyQSwweDIyLDB4MTcsMHhGRiwweEY4LDB4RkUs
MHhBRiwweEI5LDB4QUIsMHgyMiwKKyAgICAweDE3LDB4RkYsMHhGOCwweEY2LDB4QUEsMHhBMiww
eEE4LDB4MDgsMHgxNywweEZGLDB4RjgsMHhGNiwweEVBLDB4QTAsMHg4MiwweDgyLAorICAgIDB4
RjcsMHhGRSwweDE4LDB4RjcsMHhGRiwweEVGLDB4QkYsMHhGQSwweDE3LDB4RkYsMHhGNywweEY2
LDB4NUIsMHhGRCwweEZGLDB4RUYsCisgICAgMHgxNywweEZGLDB4RDcsMHhGNiwweEFBLDB4RTIs
MHhFQSwweDdBLDB4RjcsMHhGNiwweDk2LDB4RUUsMHhFOCwweDc4LDB4QkYsMHhBRiwKKyAgICAw
eEY3LDB4RjYsMHhCNiwweEVFLDB4N0QsMHgyRiwweDBBLDB4MDAsMHgxOCwweEZGLDB4RDcsMHhG
NiwweEJELDB4MEIsMHgwMiwweDAwLAorICAgIDB4MzgsMHhGRiwweDE4LDB4RkYsMHhCNSwweEFE
LDB4QUQsMHg4RCwweDM4LDB4RkYsMHgxOCwweEZGLDB4MEEsMHgwMiwweDAyLDB4MDAsCisgICAg
MHgzOCwweEZGLDB4RjQsMHhERCwweEEwLDB4RTgsMHg3OCwweDc4LDB4RjcsMHhGRSwweEQzLDB4
RDUsMHgyQiwweDI3LDB4MkQsMHgyRCwKKyAgICAweDM4LDB4RkYsMHgxOCwweEZGLDB4RUQsMHg3
RCwweEZELDB4RkQsMHgzOSwweEZGLDB4MTgsMHhGRiwweDJGLDB4QUUsMHhCRiwweEJELAorICAg
IDB4MzgsMHhGRiwweDE5LDB4RkYsMHhFOCwweEY4LDB4RkEsMHg2QSwweDE4LDB4RkYsMHhGOCww
eEY2LDB4QTgsMHhGOCwweDcyLDB4REEsCisgICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweEZGLDB4
QUIsMHhBRiwweEJGLDB4MTgsMHhGRiwweEY4LDB4RjYsMHhFRSwweEJBLDB4MEEsMHg2QSwKKyAg
ICAweDE4LDB4RkYsMHhGOCwweEY2LDB4RkYsMHhGRSwweEFBLDB4QkQsMHgxOCwweEZGLDB4Rjgs
MHhGNiwweEZFLDB4OUYsMHhBRiwweDhBLAorICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhBRiww
eDJCLDB4OEUsMHgwQSwweDE4LDB4RkYsMHhENywweEY2LDB4N0EsMHhFMiwweEVBLDB4RUEsCisg
ICAgMHhGNywweEZFLDB4NTUsMHhFNiwweDVGLDB4NUUsMHhGQSwweEY4LDB4NzUsMHhFRSwweDU1
LDB4RTYsMHg1NSwweDdGLDB4RkEsMHgwMiwKKyAgICAweDU1LDB4RUUsMHg3NSwweEU2LDB4ODAs
MHg4MiwweEJFLDB4QUIsMHhCNiwweEY2LDB4NTQsMHhFNiwweDJGLDB4MjksMHgyQiwweEFCLAor
ICAgIDB4RjcsMHhGNiwweEI3LDB4RjYsMHhBRiwweDBGLDB4QTUsMHgzRCwweEY4LDB4RjYsMHhE
NywweEY2LDB4RUIsMHg2RSwweDYwLDB4NjAsCisgICAgMHhGNywweEY2LDB4RDgsMHhGNiwweDAy
LDB4MDIsMHhBQiwweEJELDB4RDYsMHhGRSwweEY4LDB4RjYsMHg1NSwweDVELDB4REQsMHg1RiwK
KyAgICAweEY4LDB4RjYsMHhEOCwweEY2LDB4MDAsMHhBRSwweEJFLDB4QUEsMHhGOCwweEY2LDB4
RDcsMHhGNiwweEFBLDB4OEIsMHhCMywweDgyLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg4
OCwweEE4LDB4ODIsMHgwMCwweEY3LDB4RjYsMHhENywweEY2LDB4MDgsMHhFMCwweEM4LDB4MDAs
CisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDAwLDB4OEEsMHg4RiwweEJGLDB4RjcsMHhGNiww
eEQ3LDB4RjYsMHgyMCwweDAwLDB4MEEsMHgzQiwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4
Q0EsMHhDOCwweEUyLDB4MjgsMHhGNywweEZFLDB4RDcsMHhGNiwweDJELDB4MkQsMHgyQiwweEJB
LAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBOCwweEE4LDB4RTgsMHhGQSwweEY3LDB4RjYs
MHhENywweEY2LDB4REUsMHhERiwweDdFLDB4NTYsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiww
eEVCLDB4NEEsMHhERCwweDU1LDB4RjcsMHhGNiwweEI3LDB4RUUsMHg4RiwweEJGLDB4REUsMHhG
RSwKKyAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4RTgsMHhFQywweDdFLDB4N0YsMHhCNiwweEVF
LDB4NTUsMHhFNiwweEY4LDB4RkEsMHg3QSwweDVGLAorICAgIDB4OTYsMHhFRSwweDU1LDB4RTYs
MHhCQiwweEJELDB4QkQsMHgzNSwweEQ3LDB4RjYsMHg5NiwweEVFLDB4QUQsMHgyRCwweDBGLDB4
M0IsCisgICAgMHhENywweEY2LDB4QjYsMHhGNiwweEIyLDB4REYsMHhEOCwweEVBLDB4RDcsMHhG
NiwweDk2LDB4RUUsMHhBOCwweEFBLDB4RUIsMHhFOCwKKyAgICAweDk2LDB4RUUsMHhGNCwweERE
LDB4NzgsMHg3OCwweDVDLDB4NUEsMHg3NiwweEVFLDB4RjQsMHhERCwweDAzLDB4MkIsMHgyRCww
eEFGLAorICAgIDB4NzUsMHhFRSwweDU1LDB4RTYsMHg4OCwweEEyLDB4ODgsMHhBMiwweDk2LDB4
RUUsMHg3NSwweEVFLDB4QkYsMHhENywweDdELDB4NTUsCisgICAgMHg3NiwweEVFLDB4RDMsMHhE
NSwweDYwLDB4RjgsMHg2MCwweDY4LDB4RjQsMHhERCwweDkyLDB4RDUsMHhBRiwweDI3LDB4MkQs
MHgzRiwKKyAgICAweDU1LDB4RUUsMHhGNCwweERELDB4MEIsMHgyQiwweDI5LDB4QTcsMHg3Niww
eEVFLDB4MzUsMHhFNiwweDdBLDB4N0EsMHg2MiwweDZCLAorICAgIDB4MzUsMHhFNiwweEQzLDB4
REQsMHg1NiwweDdFLDB4RTIsMHhFOCwweDE1LDB4RTYsMHhCMywweEQ1LDB4N0IsMHg2QSwweDYy
LDB4NjgsCisgICAgMHgzMSwweEM1LDB4MEQsMHhBNCwweERDLDB4N0MsMHhCQywweEFBLDB4OTIs
MHhENSwweEFGLDB4QjQsMHgyRCwweDJELDB4MDksMHhBRiwKKyAgICAweDU1LDB4RUUsMHg5Miww
eEQ1LDB4M0YsMHgzNSwweDk1LDB4RkQsMHg5NiwweEY2LDB4RjQsMHhERCwweDAwLDB4MjIsMHhB
QSwweEY1LAorICAgIDB4OTYsMHhFRSwweEQzLDB4REQsMHhBMCwweEVBLDB4RkYsMHg1RiwweDM1
LDB4RTYsMHg5MiwweEQ1LDB4ODAsMHhCQSwweERGLDB4NTUsCisgICAgMHhGNCwweERELDB4NTIs
MHhDRCwweDAwLDB4QUEsMHhGQiwweEZELDB4RjQsMHhERCwweDkyLDB4RDUsMHg4RiwweEFGLDB4
QUQsMHgwRCwKKyAgICAweDc2LDB4RUUsMHhGMywweERELDB4MEQsMHhBNSwweEFELDB4QUQsMHg3
NiwweEVFLDB4MzUsMHhFNiwweEU4LDB4RkMsMHg1NywweDU1LAorICAgIDB4RDYsMHhGNiwweEI2
LDB4RUUsMHhBQSwweEFBLDB4MDgsMHg4MywweEY2LDB4RjYsMHhCNywweEVFLDB4RkIsMHhFQiww
eEFBLDB4QUYsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDJCLDB4ODMsMHgwMiwweDA4LDB4
RDYsMHhGNiwweEQ3LDB4RUUsMHg4QSwweEFBLDB4QUEsMHgyQSwKKyAgICAweEQ2LDB4RjYsMHhE
NywweEVFLDB4QTIsMHg4QSwweEE4LDB4QUEsMHhGNiwweEY2LDB4RDYsMHhGNiwweEJELDB4Q0Is
MHg3RCwweDU1LAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHgzOCwweDAwLDB4MkEsMHgzOCww
eEY2LDB4RjYsMHhENiwweEY2LDB4RjUsMHhGNSwweERELDB4RkQsCisgICAgMHhENiwweEY2LDB4
RDcsMHhFRSwweDhBLDB4QTgsMHgyQSwweEE4LDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBQSwweDhB
LDB4MzAsMHgwMCwKKyAgICAweEY2LDB4RjYsMHhCNiwweEVFLDB4RkYsMHhGRiwweEVFLDB4QUEs
MHhENiwweEY2LDB4RDYsMHhFRSwweDJBLDB4MjIsMHhBQSwweEFBLAorICAgIDB4RDYsMHhGNiww
eEI2LDB4RUUsMHhCNiwweDJFLDB4QTIsMHhGQSwweEQ2LDB4RjYsMHhCNiwweEVFLDB4OUYsMHhE
RiwweEU3LDB4QTUsCisgICAgMHhCNiwweEY2LDB4RDYsMHhFRSwweEVCLDB4QUEsMHhCQSwweDJB
LDB4RDYsMHhGNiwweEI2LDB4RUUsMHhGQSwweDYzLDB4QUYsMHhCRCwKKyAgICAweEQ3LDB4RjYs
MHhCNiwweEY2LDB4RkIsMHhFQiwweEVBLDB4RjcsMHhENiwweEY2LDB4QjYsMHhFRSwweDI5LDB4
RkIsMHhBRiwweEFCLAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHgwQSwweDBBLDB4MjgsMHhC
QSwweEQ2LDB4RjYsMHhCNiwweEVFLDB4MDgsMHgyOCwweEE4LDB4QTMsCisgICAgMHhENiwweEY2
LDB4QjYsMHhFRSwweDAwLDB4QTIsMHhBOCwweEEyLDB4RjYsMHhGNiwweEI1LDB4RUUsMHhBQSww
eEJBLDB4RUUsMHhGQSwKKyAgICAweEY2LDB4RjYsMHhCNSwweEVFLDB4MkEsMHhBQiwweDNGLDB4
RkYsMHhGNiwweEY2LDB4QjcsMHhGNiwweEU4LDB4RkEsMHhGRSwweEZFLAorICAgIDB4RDcsMHhG
NiwweDc1LDB4RUUsMHg2QSwweDY4LDB4QzAsMHhDMCwweEYzLDB4REQsMHhFOCwweDgyLDB4Nzgs
MHg3OCwweDc4LDB4NzgsCisgICAgMHg0NiwweDZBLDB4QTQsMHg1MSwweDdFLDB4NTYsMHg1Qyww
eDU4LDB4ODQsMHg1MSwweDIzLDB4NDEsMHg3NywweEJFLDB4N0EsMHhBMCwKKyAgICAweDYzLDB4
NDksMHhFMiwweDM4LDB4MDIsMHhBOCwweERGLDB4NTYsMHg4NCwweDUxLDB4QzIsMHgzMCwweDBB
LDB4MkUsMHhFRiwweDU1LAorICAgIDB4ODQsMHg1MSwweEMyLDB4MzAsMHgwMCwweDAyLDB4QkYs
MHhGRCwweEE0LDB4NTEsMHgwMywweDM5LDB4QTAsMHhGQiwweEQ3LDB4NTUsCisgICAgMHg4NCww
eDUxLDB4RTIsMHgzOCwweEUyLDB4REIsMHhENSwweDU3LDB4NDMsMHg0OSwweEUyLDB4MzgsMHg4
MiwweEI2LDB4RkQsMHg3NSwKKyAgICAweDQ0LDB4NDksMHhDMiwweDM4LDB4MjIsMHhBRiwweEFE
LDB4QUIsMHg4NCwweDUxLDB4MjMsMHg0OSwweEE5LDB4QUQsMHgzRiwweEY5LAorICAgIDB4Njcs
MHg3MiwweDg0LDB4NTksMHhCRCwweDJELDB4MkQsMHgyRiwweEU4LDB4ODIsMHg2NywweDcyLDB4
QkQsMHgyOSwweDhCLDB4QUIsCisgICAgMHhBOCwweDdBLDB4NDcsMHg3MiwweEZDLDB4N0UsMHg3
QywweEYyLDB4NDcsMHg2QSwweEM1LDB4NjEsMHhCQywweEE4LDB4RjgsMHg1QywKKyAgICAweDI2
LDB4NkEsMHhDNSwweDU5LDB4RUMsMHg3RiwweEZCLDB4RUIsMHgyNiwweDZBLDB4QzUsMHg2MSww
eEJFLDB4QUQsMHhBOSwweEFBLAorICAgIDB4QzgsMHg4MiwweDI2LDB4NkEsMHgzRCwweDJELDB4
MkYsMHhCNywweENDLDB4QTMsMHhDOSwweDgyLDB4MEIsMHgwQiwweEE5LDB4QTUsCisgICAgMHgw
RCwweEI0LDB4QUMsMHhBMywweEEyLDB4MkEsMHgyRiwweDlELDB4NEUsMHhCQywweEVELDB4QUIs
MHg1RiwweEZFLDB4MkYsMHg4RiwKKyAgICAweDRELDB4QkMsMHg0QSwweDlCLDB4NUYsMHhGQSww
eEMwLDB4ODAsMHhDQywweEFCLDB4MkEsMHg5QiwweEY3LDB4NUUsMHg3RSwweEIwLAorICAgIDB4
OEIsMHhBMywweDI5LDB4OUIsMHg2RiwweDc1LDB4RkIsMHg4MCwweDhCLDB4QTMsMHhFOCwweDhB
LDB4MkEsMHhBRiwweEZGLDB4NTUsCisgICAgMHhFQywweEFCLDB4MDksMHg5MywweDBBLDB4QUIs
MHhBRiwweEZELDB4MEQsMHhCNCwweDZBLDB4OUIsMHgwQSwweEFGLDB4QkYsMHg3NSwKKyAgICAw
eEVDLDB4QUIsMHhDOCwweDhBLDB4RTAsMHhGOCwweDdBLDB4NUYsMHhDOCwweDhBLDB4MjYsMHg3
MiwweEZDLDB4RkUsMHhERiwweDU3LAorICAgIDB4QzksMHg4QSwweEU2LDB4NjksMHg1RCwweDdG
LDB4OEEsMHgwQiwweDRELDB4QjQsMHgyNiwweDcyLDB4RDUsMHhCRCwweDNELDB4MkYsCisgICAg
MHhCNiwweEZFLDB4QUIsMHg5QiwweEFELDB4MkQsMHgyQSwweDBBLDB4MTgsMHhGRiwweDk2LDB4
RjYsMHgyOSwweDJGLDB4OEIsMHgyQSwKKyAgICAweDE4LDB4RkYsMHhGNywweEZFLDB4QkQsMHhC
RCwweEE1LDB4QTcsMHgxOCwweEZGLDB4MTcsMHhGNywweEFBLDB4QTgsMHhBMCwweDIwLAorICAg
IDB4MTgsMHhGRiwweEY2LDB4RUUsMHhBOCwweDIyLDB4MDgsMHhBMCwweEY3LDB4RkUsMHgxOCww
eEY3LDB4REYsMHhGRiwweEZGLDB4RUYsCisgICAgMHgxNywweEZGLDB4RjcsMHhGNiwweDlFLDB4
QkEsMHg4OCwweEFBLDB4MTcsMHhGRiwweEQ3LDB4RjYsMHhBQSwweDgyLDB4RTAsMHg2OCwKKyAg
ICAweEY3LDB4RjYsMHhENywweEY2LDB4NzAsMHg1OCwweDU3LDB4NUYsMHhGOCwweEZFLDB4RDYs
MHhFRSwweEI1LDB4QUIsMHhBRSwweDhCLAorICAgIDB4MzgsMHhGRiwweEY3LDB4RjYsMHhGNSww
eEJGLDB4QUQsMHhBQiwweDM4LDB4RkYsMHgxOCwweEZGLDB4RDUsMHhBQiwweDBBLDB4MDIsCisg
ICAgMHg1OSwweEZGLDB4MTgsMHhGRiwweEFELDB4QUEsMHhBQSwweDJBLDB4MzgsMHhGRiwweDk2
LDB4RUUsMHg4MCwweDgwLDB4NDAsMHhGMCwKKyAgICAweEQ3LDB4RjYsMHhGNCwweERELDB4Nzgs
MHg3RSwweEZFLDB4RkUsMHgxOCwweEZGLDB4MTQsMHhERSwweDJELDB4MkQsMHgwRiwweDhGLAor
ICAgIDB4MzgsMHhGRiwweDE4LDB4RkYsMHhGRCwweEZELDB4N0QsMHg1NSwweDM5LDB4RkYsMHgx
OCwweEZGLDB4QUQsMHhBRCwweEFGLDB4N0QsCisgICAgMHgzOSwweEZGLDB4MTgsMHhGRiwweDZF
LDB4RkUsMHhERSwweDVGLDB4MTgsMHhGRiwweEY4LDB4RjYsMHg1RiwweDVBLDB4RDYsMHhERSwK
KyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4OTUsMHhCNSwweDlELDB4REQsMHgxOCwweEZGLDB4
RjgsMHhGNiwweEQ2LDB4RkEsMHhGRSwweDdGLAorICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhB
OSwweEFCLDB4NzcsMHhGNywweDE4LDB4RkYsMHhGOCwweEY2LDB4ODAsMHg4MCwweEFBLDB4QUIs
CisgICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweDhFLDB4OEIsMHg4MiwweDgyLDB4MTgsMHhGRiww
eEY3LDB4RjYsMHhGRSwweEVBLDB4RkEsMHhGRiwKKyAgICAweEY3LDB4RjYsMHhCNywweEY2LDB4
NTIsMHg3MCwweDc4LDB4NzgsMHhCNiwweEY2LDB4NzYsMHhFRSwweDU3LDB4NUUsMHg3QywweEZB
LAorICAgIDB4OTYsMHhFRSwweDc2LDB4RUUsMHg1NSwweEJELDB4NjksMHhDQSwweEI2LDB4RjYs
MHg1NSwweEU2LDB4QTksMHhBQiwweEFCLDB4MkUsCisgICAgMHhGNywweEY2LDB4OTYsMHhFRSww
eEFGLDB4QjksMHgyRiwweDJCLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhGRiwweEVCLDB4QkYsMHhB
RiwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4M0IsMHhBRiwweDJGLDB4MjgsMHgxOCwweEZG
LDB4RjcsMHhGNiwweDU1LDB4NTUsMHhGNywweDdGLAorICAgIDB4RjgsMHhGNiwweEQ3LDB4RjYs
MHgyQSwweEE4LDB4MDgsMHgwMCwweEQ3LDB4RkUsMHhGNywweEY2LDB4NTcsMHhENywweDU1LDB4
NTUsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDg4LDB4MEEsMHgyMiwweEFBLDB4MTgsMHhG
RiwweEQ3LDB4RjYsMHhGQSwweEZCLDB4RkIsMHhGOSwKKyAgICAweEY3LDB4RjYsMHhENywweEY2
LDB4OTYsMHhGRSwweEFBLDB4QTIsMHhGNywweEY2LDB4RDcsMHhGNiwweEQ3LDB4NUQsMHg1NSww
eDU4LAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg4OCwweDJCLDB4RUYsMHgyQywweEY3LDB4
RjYsMHhENywweEY2LDB4QjQsMHhENCwweEZFLDB4RkEsCisgICAgMHhGNywweEY2LDB4RDcsMHhG
NiwweEFGLDB4QUYsMHhFRCwweEQ3LDB4RjcsMHhGNiwweDk3LDB4RUUsMHhBOCwweEFBLDB4ODAs
MHhFQSwKKyAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4MDgsMHgwMiwweDgyLDB4QUMsMHhENyww
eEY2LDB4OTYsMHhFRSwweEE4LDB4QTAsMHhFOCwweEZBLAorICAgIDB4QjcsMHhGNiwweDU1LDB4
RUUsMHhBMCwweEU4LDB4RTIsMHg3RSwweDc1LDB4RUUsMHgzNSwweEU2LDB4QjAsMHhBOCwweEVF
LDB4RkYsCisgICAgMHg5NiwweEVFLDB4NTUsMHhFNiwweDNELDB4MEQsMHgwQiwweDBCLDB4RDcs
MHhGNiwweEI3LDB4RjYsMHg4RCwweDM1LDB4RTksMHhGRCwKKyAgICAweEQ3LDB4RjYsMHhCNiww
eEY2LDB4MzgsMHhGOCwweEUyLDB4NzcsMHhENywweEY2LDB4NzYsMHhFRSwweEE4LDB4QUEsMHhF
OCwweDdBLAorICAgIDB4NzYsMHhFRSwweEQ0LDB4RDUsMHhEOCwweDVDLDB4N0UsMHg1QSwweDU1
LDB4RUUsMHhENCwweERELDB4MkYsMHhBRCwweEFELDB4QkQsCisgICAgMHg3NSwweEVFLDB4NTUs
MHhFNiwweDA5LDB4MkYsMHgzNywweDA1LDB4OTYsMHhFRSwweDc1LDB4RUUsMHhGRiwweEVFLDB4
NzcsMHg1NywKKyAgICAweDc2LDB4RUUsMHhEMywweEQ1LDB4NjgsMHg3MCwweDYwLDB4RkEsMHhG
NCwweERELDB4OTIsMHhDRCwweDM3LDB4M0QsMHgzNywweDNGLAorICAgIDB4NTUsMHhFRSwweEY0
LDB4REQsMHgyRiwweDI5LDB4MjksMHgyRCwweDU1LDB4RUUsMHgzNSwweEU2LDB4RTIsMHg2OCww
eEVBLDB4OEEsCisgICAgMHg1NSwweEVFLDB4QjMsMHhERCwweEZBLDB4N0UsMHg3RSwweEYwLDB4
RjQsMHhERCwweDkyLDB4RDUsMHg0QSwweDdBLDB4NEEsMHhDMiwKKyAgICAweDcyLDB4Q0QsMHhD
RiwweEJDLDB4NTYsMHhGNiwweEJFLDB4RjgsMHg5MiwweEQ1LDB4RjAsMHhCQywweEFELDB4MkYs
MHgyRiwweDJGLAorICAgIDB4QjMsMHhERCwweDcyLDB4RDUsMHgyRCwweEJELDB4REYsMHg3RCww
eEIzLDB4REQsMHg1MSwweENELDB4QTAsMHg2QywweEZBLDB4NUYsCisgICAgMHhCMiwweEQ1LDB4
MzEsMHhDRCwweEE4LDB4RkYsMHg3NywweDU1LDB4NzIsMHhDRCwweDMxLDB4Q0QsMHg4MCwweDhB
LDB4MkIsMHgzRCwKKyAgICAweEIzLDB4REQsMHg1MSwweENELDB4QjUsMHhCRiwweDJGLDB4MkIs
MHhGNCwweEU1LDB4QjMsMHhENSwweEJGLDB4QjcsMHhGRiwweDM1LAorICAgIDB4NTUsMHhFNiww
eEY0LDB4REQsMHgyRCwweEFELDB4MkYsMHhFQiwweDU1LDB4RTYsMHgxNCwweEU2LDB4RkUsMHhB
RSwweDJGLDB4MkIsCisgICAgMHhENiwweEY2LDB4QjYsMHhGNiwweEUyLDB4RUEsMHhCRSwweDdF
LDB4RDYsMHhGNiwweEI2LDB4RUUsMHgyMiwweEUyLDB4QTAsMHgyQSwKKyAgICAweEQ2LDB4RjYs
MHhCNiwweEVFLDB4MDIsMHg4OCwweDIyLDB4MDgsMHhENiwweEY2LDB4RjgsMHhFRSwweDg4LDB4
MjAsMHhBQSwweDI4LAorICAgIDB4RDYsMHhGNiwweEI3LDB4RUUsMHhBMiwweEE4LDB4MDAsMHgw
MiwweEY3LDB4RjYsMHhENiwweEY2LDB4RjcsMHhFNywweDdGLDB4NUQsCisgICAgMHhCNiwweEY2
LDB4RjYsMHhFRSwweEFCLDB4RUYsMHhBQiwweEFGLDB4RjYsMHhGNiwweEI2LDB4RUUsMHg4QSww
eEEyLDB4QUEsMHhCRiwKKyAgICAweEY2LDB4RjYsMHhCNiwweEVFLDB4RkUsMHhCRSwweEJBLDB4
QUEsMHhENiwweEY2LDB4QjYsMHhFRSwweDgyLDB4QTAsMHg4QSwweDI4LAorICAgIDB4RDYsMHhG
NiwweEY3LDB4RUUsMHhBOCwweDgwLDB4MDIsMHg4MCwweEY2LDB4RjYsMHhCNiwweEVFLDB4RkEs
MHhCQSwweEJGLDB4RkUsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEVFLDB4QkEsMHgyQSww
eDAwLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhCNywweDdCLDB4RUEsMHgwMCwKKyAgICAweEQ2LDB4
RjYsMHhCNiwweEVFLDB4RkYsMHhFQiwweDhBLDB4MjIsMHhENiwweEY2LDB4QjYsMHhGNiwweERE
LDB4RUUsMHg2OCwweEE4LAorICAgIDB4QjYsMHhGNiwweEQ2LDB4RUUsMHg4MiwweEFBLDB4RTgs
MHhGRSwweEI2LDB4RjYsMHhENSwweEVFLDB4QUEsMHhBQSwweEY4LDB4RUEsCisgICAgMHhCNiww
eEY2LDB4RDYsMHhFRSwweEVFLDB4QkEsMHhBOCwweEY4LDB4QjYsMHhGNiwweEQ2LDB4RUUsMHhG
RiwweEVCLDB4QUEsMHg4RSwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4MEEsMHgyMywweDhC
LDB4MEEsMHhENiwweEY2LDB4RjYsMHhFRSwweDIyLDB4MDIsMHhBOCwweDgwLAorICAgIDB4Rjcs
MHhGNiwweEI2LDB4RUUsMHhCRiwweEFFLDB4QUEsMHhFQSwweEQ2LDB4RjYsMHhCNywweEY2LDB4
QjgsMHhCQSwweEJFLDB4QkMsCisgICAgMHhENywweEY2LDB4MzQsMHhFNiwweEMwLDB4RTAsMHg2
MCwweDY4LDB4NzEsMHhDRCwweDg2LDB4NzIsMHhGMCwweDcwLDB4NzgsMHg3OCwKKyAgICAweDQ2
LDB4NkEsMHg2NCwweDQ5LDB4RjgsMHg3OCwweDVBLDB4NUUsMHhBNCwweDUxLDB4MDIsMHgzOSww
eEU4LDB4RkEsMHg3QSwweDdGLAorICAgIDB4MDIsMHgzOSwweEExLDB4MjgsMHhGOCwweEUwLDB4
RUEsMHg1NiwweEMyLDB4MzAsMHg4MSwweDI4LDB4RjgsMHhBOCwweEE4LDB4MDAsCisgICAgMHgw
MywweDM5LDB4QTIsMHgyOCwweEFCLDB4OEYsMHg2RiwweEU3LDB4RTMsMHgzOCwweEMyLDB4MzAs
MHgyRiwweEVCLDB4NzksMHg3RCwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4QTcsMHgyQiww
eDBCLDB4ODUsMHgyMywweDQxLDB4RTIsMHgzOCwweDU3LDB4RDYsMHhBQiwweDBBLAorICAgIDB4
NDQsMHg0OSwweDAzLDB4MzksMHhFOSwweEI5LDB4QUIsMHhBOSwweEU1LDB4NjEsMHg0MywweDQ5
LDB4RDUsMHgzNSwweEE1LDB4MzUsCisgICAgMHgwOSwweDkzLDB4QTUsMHg1OSwweEJELDB4QUYs
MHhBQiwweDJCLDB4RTksMHg4QSwweDg3LDB4N0EsMHhGRiwweDVCLDB4N0EsMHg2MCwKKyAgICAw
eEE3LDB4ODIsMHhDNSwweDYxLDB4QTAsMHhGQSwweDc3LDB4NUUsMHgyNiwweDZBLDB4NjMsMHg0
OSwweEY4LDB4RkEsMHhGRiwweDU3LAorICAgIDB4RTUsMHg1OSwweDAyLDB4NDEsMHgwMiwweEEy
LDB4QkYsMHhGNywweDA2LDB4NkEsMHg4NCwweDUxLDB4MDIsMHhBQiwweEFGLDB4QjUsCisgICAg
MHg4NywweDdBLDB4RTYsMHg2MSwweDBGLDB4MkYsMHhBOSwweDJELDB4NEIsMHg5MywweDY3LDB4
NzIsMHgwQiwweDJCLDB4QkQsMHhGNSwKKyAgICAweDhCLDB4OUIsMHhBOCwweDgyLDB4MDgsMHhB
QSwweEFGLDB4RjUsMHgwQywweEFDLDB4MDksMHg5MywweDA4LDB4MkYsMHhCRiwweEY1LAorICAg
IDB4MkQsMHhCQywweDhCLDB4QTMsMHg4MiwweDAyLDB4MkEsMHhBOSwweDJELDB4QjQsMHhBQiww
eEEzLDB4N0MsMHhGQSwweEZBLDB4N0EsCisgICAgMHhDQywweEFCLDB4NkEsMHg5QiwweDZCLDB4
NkEsMHhFOCwweEJFLDB4NkEsMHhBMywweEM4LDB4OEEsMHhGQSwweDc4LDB4RTAsMHhDOCwKKyAg
ICAweDQ5LDB4OUIsMHhBNywweDgyLDB4MEEsMHhBQiwweEZCLDB4NUYsMHg0QSwweDlCLDB4ODcs
MHg3QSwweEEwLDB4RkEsMHg3RiwweDU2LAorICAgIDB4MDksMHg5MywweDQ2LDB4N0EsMHg2MCww
eEVBLDB4QUEsMHhBQiwweDBBLDB4OTMsMHgyNywweDcyLDB4N0QsMHhGNywweEFBLDB4MDIsCisg
ICAgMHgwOSwweDkzLDB4NjgsMHg3QSwweDM1LDB4QTcsMHgyQiwweDAyLDB4RUYsMHhDNCwweDA5
LDB4OEIsMHgzRCwweDI1LDB4MkQsMHhBRCwKKyAgICAweEI2LDB4RkUsMHg1MSwweEQ1LDB4MEIs
MHgwQiwweDA5LDB4MEQsMHgxOCwweEZGLDB4RDcsMHhGRSwweEVCLDB4QUIsMHgyOSwweEFGLAor
ICAgIDB4MTgsMHhGRiwweEY3LDB4RkUsMHhBQiwweDdFLDB4N0EsMHg3RSwweDE4LDB4RkYsMHhG
NywweEZFLDB4MEEsMHgwOSwweEFCLDB4QUEsCisgICAgMHgxNywweEZGLDB4RjgsMHhGNiwweDIy
LDB4ODIsMHgwQSwweDAyLDB4MTcsMHhGRiwweEY4LDB4RjYsMHhCOCwweEU4LDB4MjAsMHg4MCwK
KyAgICAweDE4LDB4RkYsMHhENywweEY2LDB4MjgsMHg4MCwweDgwLDB4NzgsMHhGNywweEY2LDB4
RDcsMHhGNiwweEUwLDB4RTgsMHhGRSwweDc3LAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhG
OSwweEFELDB4QkQsMHhBNywweDE4LDB4RkYsMHhENywweEY2LDB4QUYsMHhBRCwweEJGLDB4QUYs
CisgICAgMHgzOCwweEZGLDB4RjcsMHhGRSwweEJCLDB4QUYsMHgwOSwweDAyLDB4NTksMHhGRiww
eDM5LDB4RkYsMHhGNSwweEY1LDB4RUQsMHhGQiwKKyAgICAweDU5LDB4RkYsMHgxOCwweEZGLDB4
OEEsMHhBQSwweEVBLDB4N0UsMHgxOCwweEZGLDB4OTYsMHhFRSwweDcwLDB4NzgsMHg1OCwweDVF
LAorICAgIDB4OTYsMHhFRSwweDU1LDB4RTYsMHg1RSwweDdBLDB4RkEsMHhGQSwweDE4LDB4RkYs
MHg3NiwweEVFLDB4MkQsMHgyOSwweDhGLDB4MEIsCisgICAgMHgxOCwweEZGLDB4MTksMHhGNyww
eDIyLDB4ODgsMHg4MiwweDIyLDB4MzksMHhGRiwweDE4LDB4RkYsMHhGOSwweEVELDB4QjksMHg5
RCwKKyAgICAweDM5LDB4RkYsMHgxOCwweEZGLDB4N0YsMHg3RSwweDVFLDB4N0UsMHgxOCwweEZG
LDB4RjgsMHhGNiwweEZFLDB4RUEsMHhBOCwweDJBLAorICAgIDB4MTgsMHhGRiwweEY4LDB4RjYs
MHhGRiwweEZBLDB4QkYsMHg3NywweEY3LDB4RkUsMHhGOCwweEY2LDB4N0YsMHhERiwweDdGLDB4
NzUsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEE5LDB4QzksMHhCOSwweEJCLDB4RjgsMHhG
RSwweDE4LDB4RjcsMHg1RSwweEZFLDB4RkUsMHhFRSwKKyAgICAweDE4LDB4RkYsMHhGNywweEVF
LDB4MjIsMHgwQSwweDIyLDB4QTgsMHgxOCwweEZGLDB4RjcsMHhGNiwweDc2LDB4N0UsMHhGOCww
eDc4LAorICAgIDB4RjcsMHhGNiwweEI3LDB4RUUsMHhGQSwweDdBLDB4N0MsMHhGQywweDk2LDB4
RjYsMHhCNiwweEVFLDB4MkIsMHhBRCwweEZFLDB4RkQsCisgICAgMHhCNywweEY2LDB4OTYsMHhF
RSwweDU1LDB4NzcsMHhGOCwweEY4LDB4RDYsMHhGNiwweDc1LDB4RUUsMHhGNSwweERELDB4Rjcs
MHhCRiwKKyAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4MDMsMHgwQiwweDJGLDB4MkIsMHgxOCww
eEZGLDB4RDcsMHhGNiwweEFGLDB4QUEsMHhBQiwweEU5LAorICAgIDB4RjcsMHhGNiwweEQ3LDB4
RjYsMHhBOCwweEE4LDB4QTgsMHhBOCwweDE4LDB4RkYsMHhENywweEY2LDB4QUEsMHg4QiwweDJC
LDB4QUQsCisgICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweEZFLDB4RkEsMHhCOCwweDI4LDB4MTgs
MHhGNywweEQ3LDB4RjYsMHhFRiwweEZGLDB4RkUsMHhBOCwKKyAgICAweDE4LDB4RjcsMHhENyww
eEY2LDB4RjcsMHhGRiwweEJCLDB4QUIsMHgxOCwweEZGLDB4RDcsMHhGNiwweEY1LDB4RkYsMHhB
RSwweEJFLAorICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhFRSwweEFFLDB4RkUsMHhGRSwweEQ4
LDB4RkUsMHhGNywweEY2LDB4RjUsMHhGRCwweEY1LDB4RjUsCisgICAgMHhGNywweEY2LDB4RDcs
MHhGNiwweDI4LDB4QUEsMHhBRiwweEVBLDB4RjcsMHhGNiwweEI2LDB4RUUsMHhBMCwweEVBLDB4
N0MsMHg3RSwKKyAgICAweEY3LDB4RjYsMHg5NiwweEVFLDB4QUEsMHgyQiwweEJGLDB4RDUsMHhE
NywweEY2LDB4OTYsMHhFRSwweEEwLDB4RjgsMHg1RSwweDVGLAorICAgIDB4QjYsMHhFRSwweDc2
LDB4RUUsMHgyOCwweEFBLDB4REIsMHg1RCwweEI2LDB4RjYsMHgzNSwweEU2LDB4ODAsMHhBQSww
eEZBLDB4N0YsCisgICAgMHg5NiwweEVFLDB4MzUsMHhFNiwweDY4LDB4RUUsMHhGRiwweEZGLDB4
OTYsMHhFRSwweDM1LDB4RTYsMHhCRCwweEFCLDB4QUIsMHgwQSwKKyAgICAweDc2LDB4RjYsMHg5
NiwweEVFLDB4N0UsMHg3RiwweDVGLDB4REQsMHhENywweEY2LDB4QjcsMHhGNiwweEVELDB4QUIs
MHhEQiwweEMzLAorICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHg2QywweEZFLDB4QjcsMHhGNiww
eEI2LDB4RjYsMHg3NiwweEVFLDB4N0IsMHhGRiwweEVBLDB4ODIsCisgICAgMHg1NiwweEVFLDB4
QjMsMHhENSwweDU4LDB4NzgsMHg3QywweEQ4LDB4MzUsMHhFNiwweEQzLDB4RDUsMHgzNSwweDJE
LDB4QUIsMHhCRiwKKyAgICAweDc2LDB4RUUsMHgzNSwweEU2LDB4MEQsMHgyRCwweEE1LDB4QjUs
MHg3NiwweEVFLDB4NTUsMHhFNiwweEUwLDB4RTAsMHhFMCwweDczLAorICAgIDB4NTUsMHhFNiww
eEIyLDB4RDUsMHhFMCwweDcwLDB4NjgsMHg3MCwweEYzLDB4REQsMHhCMiwweEQ1LDB4MzUsMHhB
NywweEI1LDB4OTUsCisgICAgMHg1NSwweEVFLDB4RjQsMHhERCwweEE5LDB4MjksMHhBRCwweEJC
LDB4NzYsMHhFRSwweEQzLDB4REQsMHg4QSwweDhBLDB4QUEsMHhERiwKKyAgICAweDU1LDB4RUUs
MHhEMywweERELDB4NjgsMHhGQSwweEUyLDB4RUIsMHgxNCwweEU2LDB4QjMsMHhENSwweDdGLDB4
NjIsMHhFMiwweEVBLAorICAgIDB4NzIsMHhDRCwweDhGLDB4QjQsMHhFOCwweEY4LDB4RkMsMHhE
RSwweDcyLDB4RDUsMHhEMCwweEJDLDB4MkIsMHgyQiwweEE5LDB4MkQsCisgICAgMHg5MiwweEQ1
LDB4NTIsMHhDRCwweEIyLDB4RUYsMHhGRiwweERGLDB4NzIsMHhDRCwweDMxLDB4Q0QsMHhDOCww
eEYyLDB4NDIsMHg1QSwKKyAgICAweDcxLDB4Q0QsMHgzMSwweEM1LDB4NTUsMHhGRSwweEJELDB4
MzUsMHhCMywweEQ1LDB4MzEsMHhDNSwweEFELDB4QUIsMHhBRiwweDBBLAorICAgIDB4QjMsMHhE
NSwweDkyLDB4RDUsMHhDOSwweEMxLDB4QjksMHhERCwweEY0LDB4REQsMHg5MiwweEQ1LDB4MkYs
MHhBRSwweEE3LDB4M0IsCisgICAgMHgxNCwweEU2LDB4RDMsMHhERCwweDAwLDB4MEEsMHhFRiww
eDVCLDB4NzUsMHhFRSwweEY0LDB4REQsMHgyQiwweEFGLDB4QUYsMHhCRCwKKyAgICAweEI2LDB4
RjYsMHg1MCwweEM1LDB4MDAsMHgwMCwweDgyLDB4QjUsMHhENiwweEY2LDB4NTUsMHhFRSwweDA4
LDB4MEEsMHg4QSwweEE5LAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHgyOCwweEEyLDB4QUEs
MHhGRSwweEQ2LDB4RjYsMHhCNiwweEVFLDB4MDIsMHg4MCwweEEzLDB4RTIsCisgICAgMHhENiww
eEY2LDB4QjYsMHhFRSwweEFBLDB4QUEsMHhBOCwweEFBLDB4RDYsMHhGNiwweEQ3LDB4RUUsMHhB
QSwweDJBLDB4OEEsMHgyMCwKKyAgICAweEY4LDB4RjYsMHhENiwweEY2LDB4NzcsMHg3RCwweEU1
LDB4QkQsMHhGNywweEY2LDB4QjYsMHhFRSwweEJGLDB4RUUsMHhCQSwweEVBLAorICAgIDB4RjYs
MHhGNiwweEI2LDB4RUUsMHhBQSwweEFCLDB4RUIsMHhGRiwweEQ2LDB4RjYsMHhENiwweEVFLDB4
QTgsMHgyQSwweEFBLDB4QUEsCisgICAgMHhENiwweEY2LDB4RjYsMHhFRSwweDAwLDB4QTAsMHg4
QSwweEEwLDB4RDYsMHhGNiwweEY3LDB4RUUsMHgwOCwweDg4LDB4MDgsMHgwMiwKKyAgICAweEQ2
LDB4RjYsMHhGNiwweEVFLDB4ODgsMHgwMCwweDgwLDB4QTIsMHhGNywweEY2LDB4RDYsMHhGNiww
eEU3LDB4QTUsMHhCNSwweEQ1LAorICAgIDB4RjcsMHhGNiwweEQ2LDB4RjYsMHg1NSwweDc1LDB4
RjcsMHg1RiwweEQ2LDB4RjYsMHhENiwweEY2LDB4MDAsMHgwMCwweDAwLDB4MDAsCisgICAgMHhG
NywweEY2LDB4RDYsMHhGNiwweDU1LDB4NTUsMHg3NSwweEZELDB4RDYsMHhGNiwweEI2LDB4RUUs
MHgzQiwweDgzLDB4OEIsMHg4MCwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEY2LDB4MEMsMHg4QSww
eDg4LDB4MDAsMHhENiwweEY2LDB4QjYsMHhGNiwweDlBLDB4OUEsMHgzQSwweEJFLAorICAgIDB4
RDYsMHhGNiwweEI2LDB4RUUsMHgwOCwweDI4LDB4MkEsMHhCQSwweEQ2LDB4RjYsMHhCNiwweEVF
LDB4MDAsMHgyOCwweDJBLDB4MDIsCisgICAgMHhENiwweEY2LDB4QjYsMHhGNiwweDIwLDB4RTAs
MHg2MCwweEI4LDB4RjcsMHhGNiwweEI2LDB4RjYsMHhGQSwweERGLDB4N0YsMHhERiwKKyAgICAw
eEQ2LDB4RjYsMHhCMiwweEQ1LDB4RTAsMHg2MCwweDYwLDB4NjgsMHhDRSwweEJDLDB4MDUsMHg2
MiwweDc4LDB4NzgsMHg3OCwweDU4LAorICAgIDB4QzUsMHg1OSwweDIzLDB4NDEsMHhFOCwweEU4
LDB4NUMsMHhFRSwweDQzLDB4NDEsMHhFMiwweDMwLDB4QzAsMHhFMCwweEZFLDB4NzgsCisgICAg
MHgwMiwweDMxLDB4QTEsMHgyOCwweDdBLDB4NzgsMHhEOCwweDVFLDB4RTIsMHgyOCwweDgxLDB4
MjgsMHhFMiwweEZFLDB4RkEsMHhGNywKKyAgICAweEMxLDB4MjgsMHg4MCwweDI4LDB4MjgsMHgy
OCwweEZCLDB4QkYsMHgwMywweDMxLDB4QTIsMHgyOCwweDJCLDB4MkYsMHhCOSwweEVCLAorICAg
IDB4MDIsMHgzMSwweEMyLDB4MzAsMHgwNywweEFGLDB4QUQsMHhBRiwweDIzLDB4NDEsMHhFMiww
eDMwLDB4MEEsMHgyQiwweEE5LDB4RTksCisgICAgMHg0MywweDQ5LDB4MDMsMHg0MSwweDhCLDB4
MDIsMHgyMywweDI5LDB4MjYsMHg2QSwweDY0LDB4NTEsMHhCNSwweDJELDB4MkQsMHgyRCwKKyAg
ICAweDA5LDB4OEIsMHg2NiwweDdBLDB4MEQsMHgwOSwweDA5LDB4MjksMHgyOSwweDkzLDB4QTcs
MHg4MiwweERBLDB4RjgsMHhFOCwweDcwLAorICAgIDB4ODcsMHg3QSwweEE1LDB4NTksMHg1OCww
eDVDLDB4NUMsMHg3QywweDg1LDB4NTksMHgwMywweDQxLDB4RjgsMHg3RSwweDc3LDB4NUYsCisg
ICAgMHgyMywweDQ5LDB4RTIsMHgzOCwweDJDLDB4QUYsMHhERSwweEZFLDB4QzYsMHg2MSwweEUy
LDB4MzgsMHgwQSwweEFGLDB4RkYsMHhGNSwKKyAgICAweDQ2LDB4NkEsMHg2NCwweDUxLDB4MEEs
MHgyQiwweEFELDB4QkQsMHhBOCwweDdBLDB4MDYsMHg2MiwweDBCLDB4QkYsMHhGNywweEZELAor
ICAgIDB4QzksMHg4MiwweDI2LDB4NkEsMHgyMiwweEEyLDB4QjcsMHhGNSwweDJBLDB4OTMsMHg4
NywweDdBLDB4MEEsMHgwQSwweEFGLDB4QkQsCisgICAgMHhFQywweEFCLDB4MDksMHg5MywweDJC
LDB4QUYsMHhBRCwweEI1LDB4RUMsMHhBQiwweEFDLDB4QUIsMHg3OCwweDcyLDB4M0UsMHgzRCwK
KyAgICAweENDLDB4QUIsMHg2QSwweEEzLDB4RkYsMHhFRCwweEFDLDB4RkMsMHhBQiwweEEzLDB4
RTksMHg4QSwweEVBLDB4RTgsMHhFMCwweDc4LAorICAgIDB4RTgsMHg4QSwweDY3LDB4N0EsMHhG
OCwweDc4LDB4N0UsMHg3RiwweDg3LDB4N0EsMHg0NiwweDdBLDB4QkEsMHhGNiwweDdGLDB4QTcs
CisgICAgMHgyOSwweDkzLDB4NjcsMHg3QSwweEI5LDB4M0QsMHhCNSwweEFELDB4RUMsMHhBQiww
eDBBLDB4OTMsMHg3RCwweEFGLDB4MEIsMHgwMywKKyAgICAweEFCLDB4QTMsMHgyOSwweDkzLDB4
NzUsMHg3RiwweEVBLDB4ODgsMHg2RCwweEI0LDB4MDksMHg4QiwweDNELDB4MzUsMHgzNSwweEI3
LAorICAgIDB4RDcsMHhGRSwweDRELDB4QjQsMHgwQiwweDBCLDB4QUIsMHhENSwweEY3LDB4RkUs
MHhEMywweERELDB4MDAsMHgwMCwweDBBLDB4MkQsCisgICAgMHgxNywweEZGLDB4RjgsMHhGRSww
eERCLDB4RkUsMHhCNywweEY1LDB4MTgsMHhGRiwweEY4LDB4RkUsMHhBQiwweEFFLDB4RkYsMHhB
NywKKyAgICAweDE4LDB4RkYsMHhGNywweEZFLDB4MEEsMHgwQiwweDJBLDB4QkUsMHgzOCwweEZG
LDB4RjcsMHhGNiwweEFBLDB4RUEsMHhGQiwweDVGLAorICAgIDB4MTgsMHhGRiwweEI2LDB4RUUs
MHhFOCwweEZBLDB4RkEsMHg3RiwweEQ3LDB4RjYsMHhCNiwweEVFLDB4MDAsMHhBMCwweEUyLDB4
RkEsCisgICAgMHhGNywweEY2LDB4QjYsMHhFRSwweEFBLDB4RkIsMHg2RCwweERELDB4MzksMHhG
RiwweEI2LDB4RUUsMHhCRiwweDJELDB4MkQsMHgwRiwKKyAgICAweDU5LDB4RkYsMHgzOCwweEZG
LDB4QjUsMHhGRCwweEFCLDB4RUUsMHg1OSwweEZGLDB4MzksMHhGRiwweEVCLDB4RUUsMHhGQSww
eDVGLAorICAgIDB4MzgsMHhGRiwweEQ3LDB4RjYsMHhDMCwweEUwLDB4RjAsMHg2OCwweEQ2LDB4
RUUsMHg3NiwweEVFLDB4RkMsMHhGRSwweEZFLDB4RjcsCisgICAgMHg5NiwweEVFLDB4NTUsMHhF
NiwweEQ4LDB4OUMsMHhCNiwweDM3LDB4MTgsMHhGRiwweDk2LDB4RUUsMHgwMSwweDBCLDB4Mjks
MHg4QiwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4ODIsMHgwQSwweDBBLDB4MjIsMHgzOSww
eEZGLDB4MTgsMHhGRiwweDk1LDB4QjUsMHhCNSwweEZELAorICAgIDB4MzksMHhGRiwweDE4LDB4
RkYsMHg3QSwweDdFLDB4N0EsMHg3RSwweDE4LDB4RkYsMHhGOCwweEY2LDB4QUUsMHhCQSwweEFB
LDB4RUEsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweERGLDB4NUUsMHg1OCwweDVFLDB4MTgs
MHhGNywweEQ3LDB4RjYsMHhCRiwweEFFLDB4MkIsMHhBQSwKKyAgICAweDE4LDB4RkYsMHhGOCww
eEY2LDB4QUIsMHhFRSwweEE5LDB4RkQsMHgxOCwweEZGLDB4RjgsMHhGNiwweEJCLDB4REUsMHhB
RSwweEFBLAorICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhBQSwweEJGLDB4QkUsMHhBQSwweDE4
LDB4RkYsMHhGOCwweEY2LDB4NTgsMHg3QSwweEVBLDB4RkUsCisgICAgMHhGNywweEY2LDB4Qjcs
MHhGNiwweEZFLDB4RTAsMHhFMCwweEEwLDB4RDcsMHhGNiwweEI2LDB4RUUsMHhFRiwweEI1LDB4
MzUsMHg4NywKKyAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4RkEsMHhFMCwweEEwLDB4MjAsMHhE
NywweEY2LDB4OTYsMHhFRSwweDk3LDB4OUYsMHhCRSwweEFBLAorICAgIDB4RDcsMHhGNiwweDk2
LDB4RUUsMHhBQiwweEJGLDB4QkIsMHhCOCwweDE4LDB4RkYsMHhCNiwweEVFLDB4QUIsMHhBRiww
eEFELDB4MkQsCisgICAgMHhGOCwweEZFLDB4RjcsMHhGNiwweDVGLDB4NUYsMHhERSwweDVGLDB4
MTgsMHhGNywweEI3LDB4RjYsMHgwQSwweDJBLDB4MkUsMHhBQSwKKyAgICAweDE4LDB4RkYsMHhG
NywweEY2LDB4MjgsMHgyOCwweDBBLDB4QUYsMHgxOCwweEZGLDB4RjgsMHhGNiwweEE4LDB4QTAs
MHhFOCwweEI4LAorICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHg3RSwweDVELDB4N0QsMHhFQSww
eDE3LDB4RkYsMHhGOCwweEY2LDB4RkQsMHhERCwweERGLDB4QjcsCisgICAgMHgxOCwweEZGLDB4
RDcsMHhGNiwweEZFLDB4REUsMHhEQSwweEVBLDB4RjgsMHhGRSwweEY3LDB4RjYsMHhGRiwweEZC
LDB4RkYsMHhGNywKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4NkYsMHhERSwweDVFLDB4NTYs
MHhENywweEY2LDB4OTYsMHhFRSwweEY4LDB4RUEsMHhBOCwweEJBLAorICAgIDB4QjcsMHhGNiww
eDk2LDB4RUUsMHg3NywweEVCLDB4ODAsMHhBMCwweDk3LDB4RUUsMHg3NiwweEVFLDB4RDgsMHg1
QywweDVDLDB4REMsCisgICAgMHg5NiwweEVFLDB4NzYsMHhFRSwweDU1LDB4QTUsMHg5RiwweEZF
LDB4OTYsMHhFRSwweDM1LDB4RTYsMHg3RSwweEY4LDB4QjIsMHhBQSwKKyAgICAweDk2LDB4RUUs
MHg1NSwweEVFLDB4RDUsMHhCRCwweDJCLDB4QUEsMHg5NiwweEVFLDB4NzYsMHhFRSwweEFELDB4
M0IsMHgwMCwweEEzLAorICAgIDB4QjYsMHhGNiwweDc2LDB4RUUsMHhBQiwweDg5LDB4QUYsMHgz
RiwweEQ3LDB4RjYsMHg5NiwweEVFLDB4MjIsMHhBQiwweDZCLDB4N0YsCisgICAgMHhCNiwweEY2
LDB4NzYsMHhFRSwweEFFLDB4MkEsMHhCQSwweEY3LDB4QjYsMHhGNiwweDk2LDB4RUUsMHhBMiww
eDhBLDB4RTIsMHg2MywKKyAgICAweDc2LDB4RUUsMHhEMywweEQ1LDB4NUMsMHg1OCwweDdFLDB4
NUMsMHgxNCwweEU2LDB4RDMsMHhENSwweEFCLDB4MkQsMHgyRiwweEE1LAorICAgIDB4NTUsMHhF
RSwweDE0LDB4RTYsMHgwQiwweDhCLDB4OEIsMHgwOSwweDc1LDB4RUUsMHgzNSwweEU2LDB4RjMs
MHhCRiwweEJGLDB4QUIsCisgICAgMHg3NSwweEVFLDB4QjIsMHhENSwweDc4LDB4NzgsMHg3RSww
eDdBLDB4RjMsMHhERCwweDkyLDB4RDUsMHgzNSwweEFELDB4QjUsMHhCRCwKKyAgICAweDM0LDB4
RTYsMHhEMywweERELDB4OEIsMHhFQiwweDdCLDB4N0IsMHhENCwweERELDB4MzAsMHhDNSwweDI4
LDB4QkMsMHhGQywweDU3LAorICAgIDB4MTQsMHhFNiwweDcxLDB4Q0QsMHgwMCwweDJCLDB4QUQs
MHhGNSwweDE0LDB4RTYsMHg5MiwweEQ1LDB4RTAsMHhDQSwweEUyLDB4NEEsCisgICAgMHg1MSww
eENELDB4MkQsMHhBQywweEY4LDB4RkMsMHhGQywweERDLDB4NzIsMHhENSwweEQwLDB4QkMsMHg4
RCwweDJELDB4QUQsMHgyRCwKKyAgICAweDcyLDB4Q0QsMHgxMCwweEM1LDB4RTAsMHhBMCwweDg4
LDB4NjAsMHg1MSwweENELDB4MTEsMHhDNSwweEIzLDB4OEYsMHhCRiwweEY5LAorICAgIDB4NzEs
MHhDRCwweDMxLDB4QzUsMHhBRCwweDNGLDB4RUQsMHhGNywweEIzLDB4RDUsMHg3MiwweEQ1LDB4
OTUsMHhBRCwweEVGLDB4QTUsCisgICAgMHhCMywweEQ1LDB4NTEsMHhENSwweEJBLDB4MjIsMHgy
MiwweDBBLDB4MTQsMHhFNiwweEIzLDB4RDUsMHg5RCwweEFELDB4QkYsMHhBRCwKKyAgICAweEY0
LDB4REQsMHhCMywweERELDB4QjgsMHgzOCwweEIyLDB4REUsMHgzNSwweEU2LDB4RDMsMHhERCww
eDJCLDB4QUYsMHhEQiwweDc3LAorICAgIDB4Q0UsMHhCQywweEU4LDB4ODIsMHgyQiwweEY1LDB4
NTUsMHg1NSwweDE0LDB4RTYsMHgyOSwweDhCLDB4MDIsMHhCRiwweDc1LDB4NTUsCisgICAgMHg5
NSwweEVFLDB4OEEsMHg5MywweDAwLDB4MDIsMHhCRCwweDU1LDB4OTUsMHhFRSwweDRELDB4QUMs
MHgwMCwweDAwLDB4MEEsMHhCNSwKKyAgICAweEI2LDB4RjYsMHgxMywweERFLDB4MDAsMHgwMCww
eDAwLDB4MEQsMHhENiwweEY2LDB4QjYsMHhGNiwweDA4LDB4QUEsMHg4QSwweDc1LAorICAgIDB4
MTcsMHhGRiwweEI2LDB4RjYsMHhGRiwweEZGLDB4OUQsMHhENywweEQ3LDB4RjYsMHhCNiwweEY2
LDB4MDAsMHgwOCwweEFBLDB4QUUsCisgICAgMHhENywweEY2LDB4QjYsMHhGNiwweEFDLDB4MkEs
MHhBQiwweDA4LDB4RjcsMHhGRSwweEQ2LDB4RjYsMHg1NSwweDU1LDB4RkQsMHhCNywKKyAgICAw
eEY3LDB4RjYsMHhENiwweEY2LDB4QjUsMHg5RiwweDVCLDB4N0YsMHhGNywweEY2LDB4RDYsMHhG
NiwweDU3LDB4NTcsMHgzNywweEY1LAorICAgIDB4RjcsMHhGNiwweEQ2LDB4RjYsMHhGQiwweDdB
LDB4N0UsMHg3QSwweEY3LDB4RkUsMHhENiwweEY2LDB4NTUsMHhGNSwweEI3LDB4RkQsCisgICAg
MHhGNiwweEY2LDB4RDYsMHhGNiwweDVELDB4N0QsMHg2QSwweDVBLDB4RjcsMHhGNiwweEQ2LDB4
RjYsMHhENSwweEQ3LDB4NTcsMHg1RiwKKyAgICAweEY2LDB4RkUsMHhENiwweEY2LDB4RTcsMHhG
RiwweDU3LDB4NTksMHhGNiwweEY2LDB4QjcsMHhGNiwweEFBLDB4RUIsMHhBRiwweEZGLAorICAg
IDB4RjcsMHhGNiwweEQ2LDB4RjYsMHhBNSwweEFGLDB4M0UsMHhGRiwweEY3LDB4RkUsMHhENiww
eEY2LDB4NTUsMHg1NywweDVGLDB4RjcsCisgICAgMHhENiwweEY2LDB4QjYsMHhGNiwweEJDLDB4
QUEsMHhBMCwweDA4LDB4RDYsMHhGNiwweEI2LDB4RjYsMHg4RSwweEE3LDB4QUYsMHgwQSwKKyAg
ICAweEQ2LDB4RjYsMHhCNiwweEY2LDB4RUMsMHhGOCwweDg4LDB4MjAsMHhENiwweEY2LDB4QjYs
MHhGNiwweEFCLDB4RUIsMHhDQSwweEFBLAorICAgIDB4QjYsMHhGNiwweEIzLDB4RDUsMHg2MCww
eDYwLDB4NjAsMHg2MCwweDZFLDB4QjQsMHg2MywweDQ5LDB4RjgsMHg3OCwweDc4LDB4NzgsCisg
ICAgMHg4NCwweDQ5LDB4MjMsMHg0MSwweEUwLDB4RjAsMHg3OCwweDdBLDB4NDMsMHg0MSwweEUy
LDB4MzAsMHg3OCwweEY4LDB4N0UsMHhGNSwKKyAgICAweEUyLDB4MzAsMHg4MSwweDI4LDB4RUEs
MHg2QSwweDU4LDB4NzgsMHhBMSwweDI4LDB4NDAsMHgyMCwweDA4LDB4MjIsMHhCQywweEI3LAor
ICAgIDB4QzIsMHgyOCwweDgxLDB4MjAsMHhCRiwweDI1LDB4MjUsMHgwRCwweEUyLDB4MzAsMHhB
MSwweDI4LDB4MEEsMHgwQiwweEFELDB4M0YsCisgICAgMHgwMywweDMxLDB4QzIsMHgzMCwweEVB
LDB4RkEsMHhGQiwweEU5LDB4MDIsMHgzOSwweEMyLDB4MzAsMHg4RiwweEFGLDB4QUIsMHg4QSwK
KyAgICAweDQ0LDB4NDksMHhFMiwweDM4LDB4MDksMHgwRiwweEFGLDB4MkQsMHgyNiwweDcyLDB4
NjQsMHg1MSwweDJELDB4M0QsMHgwRCwweDJELAorICAgIDB4MjksMHg5MywweDg3LDB4N0EsMHgy
OSwweDBELDB4QkYsMHhCNSwweDJBLDB4OTMsMHhBOCwweDgyLDB4RTgsMHhCMiwweDc4LDB4NkEs
CisgICAgMHg4OCwweDdBLDB4NDQsMHg0OSwweEY4LDB4NzgsMHg3OCwweDdBLDB4NDQsMHg0OSww
eEUyLDB4MzgsMHhCOCwweDc4LDB4NzgsMHg1QywKKyAgICAweDAyLDB4MzksMHhDMiwweDM4LDB4
QUMsMHhCNiwweEQ3LDB4REYsMHg0NCwweDQ5LDB4RTMsMHgzOCwweDJELDB4MjcsMHgyRCwweDI5
LAorICAgIDB4MDUsMHg2MiwweDQzLDB4NDksMHg4QiwweDNELDB4QjUsMHhGRCwweDI2LDB4NkEs
MHhBNSwweDUxLDB4MEEsMHhBQiwweEE1LDB4MkQsCisgICAgMHg4NywweDcyLDB4MDYsMHg2Miww
eDNCLDB4QUYsMHgwRCwweEJGLDB4MDksMHg4QiwweDY2LDB4NzIsMHgzRCwweEJELDB4RUQsMHhG
RiwKKyAgICAweDI5LDB4OTMsMHhDOCwweDgyLDB4MEUsMHgyRSwweEZELDB4QjUsMHhBQiwweEFC
LDB4RTgsMHg4QSwweDAzLDB4MkIsMHhBRCwweDk1LAorICAgIDB4QUIsMHhBMywweDRBLDB4OUIs
MHgyQSwweEEwLDB4RUEsMHg3NSwweDZBLDB4OUIsMHhDOCwweDgyLDB4RTAsMHhFMCwweDc4LDB4
N0UsCisgICAgMHhBOCwweDgyLDB4NDcsMHg3MiwweEVBLDB4RkEsMHhGRSwweERFLDB4QzgsMHg4
QSwweDQ2LDB4N0EsMHhCNywweEJELDB4MEYsMHgwQiwKKyAgICAweDRBLDB4OTMsMHhBOCwweDgy
LDB4QUQsMHgyQiwweDJCLDB4MkIsMHgwQywweEFDLDB4NEEsMHg5QiwweDBGLDB4MEIsMHgyQiww
eEFELAorICAgIDB4MkMsMHhCNCwweDhCLDB4OUIsMHg1RSwweDY4LDB4NjgsMHg2QSwweDJBLDB4
OTMsMHg2NiwweDcyLDB4QTAsMHg3OCwweDc4LDB4NzgsCisgICAgMHg2QSwweDkzLDB4MDYsMHg2
QSwweDBBLDB4RUYsMHhGNSwweEQ1LDB4RjQsMHhFNSwweDg3LDB4N0EsMHgwQiwweEJGLDB4RjUs
MHg1NSwKKyAgICAweEI2LDB4RjYsMHg4NiwweDcyLDB4MDAsMHgwQSwweEJGLDB4RDUsMHhENyww
eEZFLDB4Q0UsMHhCQywweDAwLDB4MDIsMHgwQiwweDJELAorICAgIDB4MTgsMHhGRiwweEQ3LDB4
RkUsMHhBMiwweDIyLDB4QTMsMHhFRiwweEY3LDB4RkUsMHg5NiwweEY2LDB4ODAsMHhGMCwweDdB
LDB4RkEsCisgICAgMHhCNiwweEY2LDB4RDYsMHhFNiwweDg4LDB4ODgsMHgwOCwweDIwLDB4RDYs
MHhGNiwweEI2LDB4RUUsMHhBQSwweENGLDB4RTksMHg3RiwKKyAgICAweDE4LDB4RkYsMHhCNiww
eEVFLDB4RDUsMHg5NSwweEJELDB4MkQsMHg1OSwweEZGLDB4RjcsMHhGRSwweEFELDB4MkIsMHgy
MiwweDhBLAorICAgIDB4NTksMHhGRiwweDM4LDB4RkYsMHhFQSwweEZFLDB4RkYsMHg3QiwweDU5
LDB4RkYsMHgxOCwweEZGLDB4QUUsMHhGQSwweEZBLDB4RUUsCisgICAgMHgzOCwweEZGLDB4NTYs
MHhFRSwweEUwLDB4RTgsMHhFQSwweDc4LDB4OTYsMHhFRSwweDU1LDB4RTYsMHhDOCwweEFBLDB4
RUIsMHhGRiwKKyAgICAweEI2LDB4RjYsMHgzNCwweEU2LDB4M0YsMHhBRiwweEJGLDB4MzUsMHgx
OCwweEZGLDB4RDcsMHhGNiwweEJELDB4MkQsMHhBNSwweEFELAorICAgIDB4MTgsMHhGRiwweEY4
LDB4RjYsMHgwRSwweDIyLDB4MEEsMHgyMywweDM4LDB4RkYsMHgxOSwweEZGLDB4QkYsMHhFQiww
eEJELDB4QUQsCisgICAgMHgzOSwweEZGLDB4MTgsMHhGRiwweDVFLDB4REYsMHhERSwweDdFLDB4
MTgsMHhGRiwweEY4LDB4RjYsMHhFMiwweEUwLDB4QUEsMHhCOCwKKyAgICAweDE4LDB4RkYsMHhG
OCwweEY2LDB4NzcsMHg1NywweDVELDB4NUQsMHgxOCwweEZGLDB4RjgsMHhGNiwweDVGLDB4N0Ys
MHhFRiwweEVGLAorICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhFRCwweEZCLDB4QkIsMHhGRCww
eDE4LDB4RkYsMHhGOCwweEY2LDB4RUEsMHhFQiwweEU5LDB4RjcsCisgICAgMHgxOCwweEZGLDB4
RjgsMHhGNiwweEFBLDB4QUEsMHhFRiwweEFBLDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGRSwweERF
LDB4RkUsMHg1RSwKKyAgICAweEY4LDB4RjYsMHhENywweEY2LDB4NjAsMHg3MCwweDVDLDB4Nzks
MHhENywweEY2LDB4QjcsMHhFRSwweDJGLDB4MEIsMHgyQSwweDBFLAorICAgIDB4RjgsMHhGNiww
eEI2LDB4RUUsMHg2RSwweEVBLDB4OEEsMHhBQSwweEY3LDB4RjYsMHhCNiwweEVFLDB4OUYsMHhC
QiwweEFBLDB4QjIsCisgICAgMHhENywweEY2LDB4QjYsMHhFRSwweDdFLDB4RTgsMHgyQSwweDBB
LDB4RjcsMHhGRSwweEQ2LDB4RUUsMHgyRCwweDJGLDB4QkQsMHhBRiwKKyAgICAweDE4LDB4RkYs
MHhGNywweEY2LDB4N0YsMHg3NywweEZGLDB4N0IsMHgxOCwweEY3LDB4RDcsMHhGNiwweEJGLDB4
RkYsMHhBRiwweEFFLAorICAgIDB4RjgsMHhGRSwweDE4LDB4RjcsMHhGRSwweEZFLDB4RkYsMHhG
QSwweDE4LDB4RkYsMHhGNywweEY2LDB4RUUsMHhCQiwweEFFLDB4QUYsCisgICAgMHgxOCwweEZG
LDB4RjcsMHhGNiwweEFBLDB4QUEsMHgyMCwweEEyLDB4MTgsMHhGRiwweEY3LDB4RjYsMHhFNyww
eDk3LDB4RDYsMHhGNywKKyAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4N0QsMHg1RSwweDc2LDB4
NkYsMHhENywweEZFLDB4RjcsMHhGNiwweEY3LDB4RkYsMHhERiwweEY3LAorICAgIDB4RjcsMHhG
NiwweDk2LDB4RUUsMHhBOCwweEJBLDB4RkEsMHg3RSwweEQ3LDB4RjYsMHg5NiwweEVFLDB4QkEs
MHhGQSwweEZBLDB4RkYsCisgICAgMHhCNiwweEY2LDB4OTYsMHhFRSwweEMwLDB4RTAsMHhEQiww
eDVGLDB4OTYsMHhFRSwweDc2LDB4RUUsMHg4OCwweDIwLDB4QTMsMHhBRCwKKyAgICAweDk2LDB4
RUUsMHg3NiwweEVFLDB4RkQsMHg2RSwweDc2LDB4NUYsMHg3NSwweEVFLDB4NTUsMHhFNiwweDJB
LDB4RTgsMHg3QSwweEVFLAorICAgIDB4NzYsMHhFRSwweDU1LDB4RTYsMHhDQywweEU3LDB4QjUs
MHhGNSwweDc2LDB4RUUsMHg1NSwweEU2LDB4MDAsMHg4QiwweDIyLDB4MkEsCisgICAgMHhCNiww
eEY2LDB4NzYsMHhFRSwweEFGLDB4ODksMHhBRCwweDJELDB4QjYsMHhGNiwweDc2LDB4RUUsMHhB
QSwweEUyLDB4RkEsMHg2QSwKKyAgICAweDk2LDB4RjYsMHg3NiwweEVFLDB4M0UsMHgwQiwweDA5
LDB4MkIsMHhCNiwweEY2LDB4NzYsMHhFRSwweDhBLDB4QzIsMHhDQSwweDQ4LAorICAgIDB4NTUs
MHhFNiwweDkyLDB4Q0QsMHg3OCwweDVDLDB4NUMsMHg1QSwweDE1LDB4RTYsMHg5MiwweEQ1LDB4
MkYsMHhBQiwweEFELDB4QjUsCisgICAgMHg1NSwweEVFLDB4RjQsMHhFNSwweDJBLDB4QUYsMHgw
OSwweDJCLDB4NzYsMHhFRSwweDU1LDB4RUUsMHhERCwweEY1LDB4RDksMHg1RiwKKyAgICAweDU1
LDB4RUUsMHhCMiwweEQ1LDB4NzgsMHg3OCwweDZBLDB4NzgsMHhEMywweERELDB4OTIsMHhENSww
eDBCLDB4MjksMHgyRSwweDJCLAorICAgIDB4MTQsMHhFNiwweEIyLDB4RDUsMHg2MywweDYzLDB4
NkEsMHg2MiwweDkyLDB4RDUsMHhGMCwweEJDLDB4RkUsMHhERSwweDdFLDB4NUMsCisgICAgMHg5
MiwweEQ1LDB4RUYsMHhDNCwweDJCLDB4QkQsMHhCNSwweEZGLDB4RDQsMHhERCwweDcxLDB4Q0Qs
MHhDQSwweDhGLDB4Q0YsMHg4NSwKKyAgICAweDUxLDB4Q0QsMHgyRCwweEFDLDB4REMsMHg1Qyww
eERFLDB4REMsMHg1MSwweENELDB4QUYsMHhCNCwweDg5LDB4MjEsMHhBOSwweDJELAorICAgIDB4
NTEsMHhDRCwweEQwLDB4QkMsMHhFMCwweEZBLDB4RjYsMHhERSwweDUxLDB4Q0QsMHhGMCwweEM0
LDB4OUYsMHgyRCwweDJGLDB4QTksCisgICAgMHg3MSwweEQ1LDB4MzEsMHhDNSwweDlCLDB4QUQs
MHgzRiwweDlGLDB4OTIsMHhENSwweDUyLDB4Q0QsMHgyQSwweDhCLDB4MkIsMHhBRiwKKyAgICAw
eEIzLDB4RDUsMHg5MiwweEQ1LDB4REYsMHgzNSwweDI1LDB4OTUsMHhGMywweERELDB4QjMsMHhE
NSwweEFELDB4QzksMHhGQiwweEZGLAorICAgIDB4RDMsMHhERCwweEIyLDB4RDUsMHgzRCwweEFE
LDB4N0QsMHhGRCwweEQzLDB4REQsMHg3MSwweENELDB4MDgsMHhFOCwweDc4LDB4NUUsCisgICAg
MHhFOCwweDgyLDB4QTcsMHg3QSwweDBFLDB4ODAsMHgzQSwweDk4LDB4MDgsMHg4MywweEM4LDB4
ODIsMHgyOCwweEFFLDB4Q0IsMHgwRiwKKyAgICAweDI4LDB4OEIsMHhDNywweDdBLDB4MEEsMHhC
QiwweEVGLDB4REYsMHhFQiwweDlCLDB4QzcsMHg3QSwweDJCLDB4RkYsMHg3RiwweEQ3LAorICAg
IDB4OTEsMHhENSwweDA4LDB4ODMsMHgwQSwweEZELDB4NTUsMHg1NSwweDc1LDB4RUUsMHg0OSww
eDhCLDB4MDAsMHgyQiwweEY1LDB4NTUsCisgICAgMHg5NSwweEVFLDB4RTgsMHg4MiwweDAwLDB4
MDAsMHgyQSwweEJELDB4RDYsMHhGNiwweDUwLDB4Q0QsMHgwMCwweDAyLDB4MkEsMHhCRCwKKyAg
ICAweEQ2LDB4RjYsMHg1NCwweEVFLDB4MDAsMHgwOCwweDgyLDB4QUQsMHhENiwweEY2LDB4QjYs
MHhGNiwweDI4LDB4MjIsMHgwQSwweDhELAorICAgIDB4RjcsMHhGNiwweEI2LDB4RjYsMHhBRSww
eDJGLDB4RUYsMHhCRiwweEY3LDB4RkUsMHhCNiwweEY2LDB4QkIsMHhCQSwweEZFLDB4N0EsCisg
ICAgMHhENiwweEY2LDB4QjYsMHhGNiwweDAwLDB4ODAsMHhBMywweEFBLDB4MTYsMHhGNywweEI2
LDB4RjYsMHhFRiwweERELDB4RkYsMHg1NSwKKyAgICAweEY3LDB4RkUsMHhENiwweEY2LDB4N0Ys
MHg1RCwweEQ1LDB4NUQsMHhGNiwweEY2LDB4RDYsMHhGNiwweDdELDB4RDUsMHhGRCwweDc3LAor
ICAgIDB4RjcsMHhGNiwweEQ2LDB4RjYsMHg1NiwweEZFLDB4NUUsMHg1NywweEQ2LDB4RjYsMHhC
NiwweEY2LDB4RTAsMHhCMCwweDAwLDB4MDAsCisgICAgMHhGNywweEZFLDB4QjYsMHhGNiwweEJC
LDB4RkYsMHhGQiwweEFBLDB4RDcsMHhGNiwweEQ2LDB4RjYsMHhGRCwweEY1LDB4RkYsMHhFRSwK
KyAgICAweEQ3LDB4RjYsMHhENiwweEY2LDB4QUQsMHhCRiwweEJELDB4RjUsMHhCNiwweEZFLDB4
RjcsMHhGNiwweEZBLDB4RkIsMHhFRSwweDdBLAorICAgIDB4RjYsMHhGNiwweEQ2LDB4RjYsMHg1
NywweEI3LDB4RUYsMHhBQiwweEI3LDB4RkUsMHhGNiwweEY2LDB4QkEsMHhBRiwweEZGLDB4RUYs
CisgICAgMHhENiwweEY2LDB4QjMsMHhENSwweDYwLDB4RTgsMHhDMCwweEMwLDB4RUYsMHhCQyww
eDQzLDB4NDksMHg3OCwweDc4LDB4NzgsMHg3OCwKKyAgICAweDY0LDB4NDksMHgwMiwweDM5LDB4
RkMsMHhGRSwweDdCLDB4RkUsMHgyMywweDQxLDB4RTIsMHgzOCwweDdELDB4NkUsMHhGOCwweEUw
LAorICAgIDB4MjMsMHgzOSwweDgwLDB4MjgsMHg3RSwweEZBLDB4QUEsMHgyMiwweDAzLDB4Mzks
MHg2MCwweDIwLDB4RDUsMHhGRiwweEJBLDB4MjAsCisgICAgMHgwMiwweDMxLDB4ODEsMHgyMCww
eEFELDB4QTEsMHhCQSwweEE4LDB4MDIsMHgzOSwweEMyLDB4MzAsMHhCRCwweEFCLDB4QUYsMHhB
QiwKKyAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4N0QsMHhFRiwweEVBLDB4Q0IsMHgwMywweDM5
LDB4QzIsMHgzMCwweDJFLDB4QjcsMHhBNywweEZCLAorICAgIDB4ODQsMHg1OSwweEUzLDB4Mzgs
MHhCRCwweEFELDB4MzcsMHgyNSwweDg3LDB4N0EsMHg2NCwweDU5LDB4QUQsMHgyRCwweDJGLDB4
MkYsCisgICAgMHhFOSwweDhBLDB4ODcsMHg3QSwweDA5LDB4QTksMHhBOSwweEY1LDB4RTksMHg4
QSwweDA1LDB4NkEsMHg4MCwweDgwLDB4RTIsMHg3QiwKKyAgICAweDQ3LDB4NzIsMHhFMywweDM4
LDB4RjAsMHhFOCwweEY4LDB4N0YsMHgyNCwweDQxLDB4QTEsMHgzMCwweEYwLDB4RkEsMHg3Qyww
eEZFLAorICAgIDB4RTIsMHgzOCwweEMyLDB4MzAsMHhGRCwweDJELDB4MzksMHhCQiwweDQ0LDB4
NDksMHhDMiwweDM4LDB4OEYsMHgyRiwweEFGLDB4NkQsCisgICAgMHhBNSwweDUxLDB4ODEsMHgy
OCwweDAyLDB4QUEsMHhGRSwweDVELDB4QTUsMHg1MSwweDYxLDB4MjgsMHgwMCwweEFBLDB4REYs
MHg3NSwKKyAgICAweEU1LDB4NjEsMHhBMiwweDMwLDB4MDAsMHhBQiwweDdELDB4NTUsMHg0Niww
eDZBLDB4RTMsMHg0MCwweDAwLDB4MEEsMHhCRCwweEQ1LAorICAgIDB4RTgsMHg4QSwweDg0LDB4
NTEsMHgwMiwweDhBLDB4QUYsMHhCRCwweDI5LDB4OTMsMHg4NywweDdBLDB4MkEsMHhBQiwweEJG
LDB4QjUsCisgICAgMHg0QSwweDlCLDB4QzgsMHg4MiwweDAyLDB4QUIsMHg3RiwweDU1LDB4MkEs
MHg5MywweDY3LDB4N0EsMHg2MCwweDYwLDB4RUUsMHhFRSwKKyAgICAweEE4LDB4ODIsMHg0Niww
eDdBLDB4OTMsMHhCRiwweEI1LDB4QUEsMHgwOSwweDhCLDB4ODcsMHg3QSwweDY1LDB4M0YsMHgy
RiwweEFELAorICAgIDB4NEEsMHg5MywweEU5LDB4OEEsMHhBRiwweEEzLDB4RUEsMHg3RiwweDZB
LDB4OUIsMHhDOCwweDgyLDB4MkEsMHhBRiwweDM3LDB4QkQsCisgICAgMHhDQywweEEzLDB4RTks
MHg4QSwweEEwLDB4RUUsMHg3RSwweDVGLDB4NEIsMHg5MywweEE4LDB4ODIsMHg3OCwweEU4LDB4
NjIsMHg2RiwKKyAgICAweDg3LDB4N0EsMHgwNiwweDZBLDB4RDcsMHhEOCwweDc4LDB4RjgsMHg2
NywweDcyLDB4QzUsMHg2MSwweDBBLDB4QUUsMHg1RiwweDdBLAorICAgIDB4ODYsMHg3QSwweEU2
LDB4NjEsMHgyQSwweEE3LDB4QkQsMHhENSwweDU0LDB4RUUsMHgyOSwweDhCLDB4MEQsMHgzRCww
eDJELDB4QjUsCisgICAgMHhENywweEZFLDB4NTQsMHhFRSwweDgyLDB4QUIsMHhBRiwweEI1LDB4
QjYsMHhGNiwweDk2LDB4RUUsMHgyOCwweEZBLDB4M0MsMHgwQSwKKyAgICAweEQ2LDB4RjYsMHg5
NSwweEVFLDB4RUYsMHhCRiwweEVBLDB4QzAsMHhGNywweEY2LDB4OTYsMHhFRSwweDdFLDB4RkUs
MHhCRiwweDM1LAorICAgIDB4MzgsMHhGRiwweEI2LDB4RjYsMHgyRCwweDBCLDB4MDIsMHgwMiww
eDU5LDB4RkYsMHgzOSwweEZGLDB4QUQsMHhFRCwweEZGLDB4NUQsCisgICAgMHg1OCwweEZGLDB4
MzksMHhGRiwweDVCLDB4RDcsMHhERiwweDc1LDB4MzksMHhGRiwweEY3LDB4RkUsMHhDMCwweEU4
LDB4RjgsMHg2OCwKKyAgICAweEY4LDB4RkUsMHg3NSwweEVFLDB4NTgsMHg1QywweDVFLDB4NUYs
MHg3NSwweEVFLDB4MzUsMHhFNiwweEUyLDB4RTAsMHhFMiwweEVBLAorICAgIDB4RDcsMHhGNiww
eDM0LDB4RTYsMHgzNSwweEJELDB4QkQsMHgzRCwweDE4LDB4RkYsMHhENywweEY2LDB4QTksMHhB
OSwweDJCLDB4QUIsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweDJCLDB4MkYsMHgyRiwweDNG
LDB4MzgsMHhGRiwweDE5LDB4RkYsMHhFRiwweEVCLDB4NkIsMHhGRCwKKyAgICAweDM5LDB4RkYs
MHgxOCwweEZGLDB4RkYsMHhGRCwweEZELDB4REQsMHgxOCwweEZGLDB4RjgsMHhGNiwweEY4LDB4
QTAsMHhCMCwweEYwLAorICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhEQSwweDZBLDB4QkUsMHhG
NywweDE4LDB4RkYsMHhGOCwweEY2LDB4RkQsMHg3NywweDU3LDB4NzcsCisgICAgMHhGNywweEZF
LDB4RjgsMHhGNiwweEVGLDB4QUYsMHhBRCwweEZGLDB4MTgsMHhGRiwweEY4LDB4RjYsMHhCRiww
eERCLDB4RjUsMHhGNywKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4QkEsMHg3NywweDVGLDB4
REYsMHgxOCwweEZGLDB4RDcsMHhGNiwweEU4LDB4QkEsMHg3RSwweDZFLAorICAgIDB4RjgsMHhG
NiwweEQ3LDB4RjYsMHg3NSwweDc2LDB4NUQsMHhFRiwweEY4LDB4RjYsMHhCNiwweEVFLDB4QTcs
MHgyRiwweDJBLDB4QUEsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEFGLDB4QkYsMHhBQiww
eEY4LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhCQSwweEFCLDB4QUIsMHhFQSwKKyAgICAweEY3LDB4
RjYsMHhENywweEY2LDB4NTcsMHhFRiwweEFCLDB4QTMsMHhGOCwweEY2LDB4RDcsMHhGNiwweEE1
LDB4QTcsMHgyMiwweDBBLAorICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHg2QSwweEFCLDB4OEYs
MHhGRiwweDE3LDB4RkYsMHhGNywweEY2LDB4NzUsMHg1NywweDc1LDB4NUYsCisgICAgMHgxOCww
eEZGLDB4RjcsMHhGNiwweEJCLDB4RkQsMHhCRCwweEZGLDB4MTgsMHhGRiwweEY3LDB4RjYsMHhC
NywweEJELDB4QUYsMHhBQiwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4QkEsMHhFRSwweEZF
LDB4QkEsMHgxOCwweEZGLDB4RjcsMHhGNiwweERGLDB4N0YsMHhFQSwweEVBLAorICAgIDB4RDcs
MHhGRSwweDE4LDB4RjcsMHhCRiwweEFCLDB4QUIsMHhBRiwweEY3LDB4RjYsMHg5OCwweEVFLDB4
ODgsMHhBMCwweEFBLDB4QkEsCisgICAgMHhENywweEY2LDB4OTYsMHhFRSwweEU4LDB4QUEsMHg3
OCwweDdFLDB4QjYsMHhGNiwweDc2LDB4RUUsMHhBOCwweEFBLDB4RUEsMHhGQSwKKyAgICAweDk2
LDB4RUUsMHg1NiwweEVFLDB4MDAsMHg4MCwweDhBLDB4RkYsMHg5NiwweEVFLDB4NTUsMHhFNiww
eEFCLDB4QTgsMHhGQSwweEZGLAorICAgIDB4OTYsMHhFRSwweDU1LDB4RTYsMHhBOCwweEJBLDB4
QUYsMHhGRSwweDc1LDB4RUUsMHgzNSwweEU2LDB4QTIsMHhFMCwweEI4LDB4RkYsCisgICAgMHg1
NSwweEVFLDB4NzYsMHhFNiwweEEwLDB4QUEsMHhBOCwweEFBLDB4OTYsMHhFRSwweDU1LDB4RTYs
MHhCRCwweEJELDB4QkYsMHhBRiwKKyAgICAweEI2LDB4RjYsMHg3NiwweEVFLDB4MjksMHgyMyww
eEFCLDB4MkIsMHhCNiwweEY2LDB4NzYsMHhFRSwweEY4LDB4RTgsMHhFQSwweEZBLAorICAgIDB4
QjYsMHhGNiwweDc2LDB4RUUsMHhBRCwweEJCLDB4QUQsMHgyRiwweEI3LDB4RjYsMHg1NSwweEU2
LDB4QTAsMHhFMiwweEMwLDB4NDgsCisgICAgMHgzNSwweEU2LDB4NTIsMHhDRCwweEY4LDB4REMs
MHhERSwweDVBLDB4RjQsMHhERCwweDUxLDB4Q0QsMHgyQSwweEE5LDB4M0QsMHhBRCwKKyAgICAw
eDU1LDB4RUUsMHhEMywweERELDB4MEEsMHg4QiwweDJGLDB4QTksMHg3NSwweEVFLDB4MzUsMHhF
NiwweEZBLDB4QkUsMHhGQiwweERCLAorICAgIDB4MzUsMHhFRSwweEIzLDB4RDUsMHg3OCwweDU4
LDB4N0MsMHg3QywweEY0LDB4REQsMHg5MiwweEQ1LDB4QUIsMHgyRiwweDJELDB4QUYsCisgICAg
MHgxNCwweEU2LDB4RDMsMHhERCwweDYyLDB4RTIsMHhBMiwweEUyLDB4RjMsMHhERCwweDExLDB4
QzUsMHg3RSwweDdBLDB4RjgsMHhBMCwKKyAgICAweDcxLDB4Q0QsMHgxMCwweEM1LDB4RkQsMHg3
RiwweEQ2LDB4RDgsMHhCMywweEQ1LDB4MTAsMHhDNSwweDg5LDB4QUIsMHhGRCwweEFELAorICAg
IDB4MzAsMHhDNSwweDRELDB4QUMsMHg1QywweDVDLDB4NUUsMHg1NCwweDMxLDB4Q0QsMHg4RSww
eEI0LDB4MjksMHg4QiwweDBELDB4MEQsCisgICAgMHgzMSwweENELDB4RDAsMHhCQywweEZGLDB4
OUUsMHhBQSwweEE4LDB4MzEsMHhDNSwweEYwLDB4QzQsMHgwRiwweDJCLDB4QkIsMHhFQiwKKyAg
ICAweDUxLDB4Q0QsMHgxMSwweEM1LDB4MjgsMHhCMiwweEJCLDB4RkUsMHg5MiwweEQ1LDB4NTEs
MHhDRCwweEFCLDB4RUIsMHhBRCwweEZELAorICAgIDB4QjMsMHhENSwweDcyLDB4Q0QsMHgyQiww
eDI3LDB4QUYsMHgzNSwweEQzLDB4REQsMHhCMywweEQ1LDB4OEUsMHhFQiwweEFGLDB4MDksCisg
ICAgMHhEMywweERELDB4OTIsMHhENSwweEVFLDB4NjYsMHg3OCwweDY4LDB4OTIsMHhENSwweDMw
LDB4Q0QsMHhCOCwweDVFLDB4RkYsMHhENywKKyAgICAweDA4LDB4ODMsMHhDNywweDdBLDB4QkMs
MHhCNiwweDk2LDB4REYsMHgwOCwweDgzLDB4QzgsMHg3QSwweDJBLDB4RkEsMHg1QywweEJBLAor
ICAgIDB4MjksMHg4QiwweEM4LDB4N0EsMHhGRSwweDdGLDB4QjYsMHg4RSwweDA4LDB4ODMsMHhD
OCwweDgyLDB4RjYsMHhFNiwweEYyLDB4QkUsCisgICAgMHgwOCwweDgzLDB4QzcsMHg3QSwweEFB
LDB4ODUsMHhFRiwweDE4LDB4MDgsMHg4MywweEM3LDB4ODIsMHgwMiwweEEzLDB4MkYsMHgwRSwK
KyAgICAweDhBLDB4OTMsMHhFOCwweDgyLDB4MEIsMHg3NywweDU1LDB4NTcsMHhDRSwweEJDLDB4
MDgsMHg4MywweDJCLDB4RjUsMHg1NSwweDU1LAorICAgIDB4MTQsMHhFNiwweDI4LDB4OEIsMHgw
MiwweEFGLDB4RDUsMHg1NSwweDk2LDB4RUUsMHgyOSwweDhCLDB4MDAsMHgwMiwweEJGLDB4RDUs
CisgICAgMHhCNiwweEY2LDB4NEUsMHhBQywweDAwLDB4MDAsMHgwQSwweEJELDB4RDYsMHhGNiww
eEYzLDB4RTUsMHgwMCwweDAwLDB4MEEsMHhBRCwKKyAgICAweEQ2LDB4RjYsMHhCNSwweEY2LDB4
QTgsMHhBQSwweEFBLDB4RjUsMHhENiwweEY2LDB4QjYsMHhGNiwweEY3LDB4RkYsMHhGRCwweDc3
LAorICAgIDB4RDYsMHhGNiwweEI2LDB4RjYsMHhBMiwweEVFLDB4N0IsMHhGOSwweEQ2LDB4RjYs
MHhCNiwweEY2LDB4MEMsMHgyQiwweDhBLDB4RTgsCisgICAgMHhENywweEZFLDB4RDYsMHhGNiww
eEQ3LDB4REYsMHg3RCwweEQ3LDB4RjcsMHhGRSwweEQ2LDB4RjYsMHhFRiwweEVELDB4RTksMHhG
RCwKKyAgICAweEY3LDB4RkUsMHhENiwweEY2LDB4RkYsMHhERiwweDdGLDB4REYsMHhGNiwweEZF
LDB4RDcsMHhGNiwweEZELDB4RjUsMHg1NywweDVELAorICAgIDB4RjcsMHhGRSwweEQ2LDB4RjYs
MHg1NSwweDVGLDB4NUYsMHg3RiwweEY3LDB4RkUsMHhCNiwweEY2LDB4QUYsMHhBRiwweEJGLDB4
QkYsCisgICAgMHhGNiwweEZFLDB4RDYsMHhGNiwweEFGLDB4QkIsMHg5NSwweEY3LDB4RjcsMHhG
RSwweEI2LDB4RjYsMHhCRSwweEVFLDB4REUsMHhGRSwKKyAgICAweEQ2LDB4RjYsMHg1NCwweEVF
LDB4NjAsMHhDMCwweEEwLDB4ODAsMHhGMiwweERELDB4QzQsMHg1OSwweDc4LDB4NTgsMHg3OCww
eEY4LAorICAgIDB4ODQsMHg0OSwweDAyLDB4MzksMHhERiwweDVGLDB4RkYsMHhGMCwweDQzLDB4
NDEsMHhFMiwweDM4LDB4MkEsMHgwQiwweEE1LDB4QkYsCisgICAgMHg4NCwweDQ5LDB4MjMsMHgz
OSwweDU5LDB4OEEsMHhBQiwweEZELDB4NjQsMHg0OSwweDAyLDB4MzksMHg1RiwweEJFLDB4QTgs
MHgyQSwKKyAgICAweDg1LDB4NDksMHhFMiwweDMwLDB4NTcsMHg1NywweDdBLDB4RTgsMHg0Myww
eDQxLDB4RTIsMHgzMCwweDc1LDB4RkQsMHhBQSwweEEwLAorICAgIDB4MjMsMHg0MSwweEUyLDB4
MzgsMHhFRCwweEJCLDB4N0IsMHg1QywweDAzLDB4MzksMHhDMiwweDM4LDB4QkEsMHhCQywweEI4
LDB4MjgsCisgICAgMHhFNSwweDY5LDB4MjMsMHg0MSwweEI1LDB4QjUsMHhBRCwweEFELDB4NDcs
MHg3QSwweEM0LDB4NjEsMHgwOSwweDI5LDB4MDMsMHg4MywKKyAgICAweDY3LDB4N0EsMHgwNiww
eDcyLDB4MDAsMHhBMCwweEE4LDB4NDMsMHg0NiwweDcyLDB4ODQsMHg1OSwweDgwLDB4QzgsMHhF
QSwweDdFLAorICAgIDB4ODQsMHg1OSwweEUzLDB4MzgsMHg1OCwweEU4LDB4NjgsMHhFOCwweDI0
LDB4NDEsMHhDMiwweDM4LDB4NTUsMHg3QSwweEEyLDB4NjAsCisgICAgMHgwMywweDM5LDB4QzIs
MHgzMCwweEZGLDB4QkYsMHg3RiwweDY1LDB4RTIsMHgzOCwweEExLDB4MjgsMHg1QSwweEY4LDB4
RkEsMHg3OCwKKyAgICAweEMyLDB4MzAsMHg2MSwweDI4LDB4N0EsMHhCRSwweEJBLDB4QTgsMHhB
MiwweDMwLDB4ODIsMHgyOCwweEU1LDB4MEYsMHgwQiwweDAyLAorICAgIDB4QzIsMHgzOCwweEEy
LDB4MzAsMHgyOSwweDI4LDB4M0YsMHgyNSwweDQ0LDB4NDksMHhFMywweDM4LDB4QkQsMHhBRiww
eEFELDB4OTUsCisgICAgMHhDNSwweDYxLDB4MjMsMHg0OSwweDA5LDB4QkQsMHhENSwweERELDB4
QzgsMHg4MiwweDg0LDB4NTksMHgwQiwweDJGLDB4QUQsMHhCNSwKKyAgICAweEM4LDB4ODIsMHg2
NywweDdBLDB4MkMsMHhBQSwweEJELDB4RjUsMHgwOSwweDkzLDB4ODcsMHg4MiwweEZGLDB4Rjcs
MHhBRCwweDI1LAorICAgIDB4RTksMHg4QSwweDg3LDB4N0EsMHhGQiwweDBBLDB4Q0IsMHg2MCww
eEU4LDB4OEEsMHg4OCwweDdBLDB4QUYsMHhCMSwweERELDB4N0QsCisgICAgMHhFOSwweDhBLDB4
ODcsMHg3QSwweDAwLDB4MEIsMHhGNywweEY2LDB4MkEsMHg5MywweEM5LDB4ODIsMHgyOSwweDJE
LDB4QjksMHgxNSwKKyAgICAweDJBLDB4OTMsMHg0NiwweDcyLDB4RTgsMHg3OCwweDc4LDB4Nzgs
MHgyOSwweDhCLDB4MDYsMHg2QSwweDhBLDB4RkQsMHhENSwweDc1LAorICAgIDB4ODcsMHg3QSww
eEU1LDB4NjksMHhFOCwweEJBLDB4MkYsMHhCRCwweEM4LDB4ODIsMHhDNSwweDYxLDB4N0YsMHhF
MiwweEEyLDB4MEEsCisgICAgMHg2NywweDcyLDB4QzUsMHg2MSwweEQ1LDB4RDcsMHhGRSwweDgw
LDB4NkUsMHhCNCwweDI2LDB4NzIsMHgyRCwweEI1LDB4RjUsMHhERCwKKyAgICAweDk2LDB4RjYs
MHhDQywweEEzLDB4MDIsMHgwQiwweDJELDB4QjUsMHhENywweEZFLDB4OTYsMHhGNiwweDJELDB4
MEEsMHgwQSwweDJELAorICAgIDB4RjcsMHhGRSwweDk2LDB4RUUsMHg2QSwweDc4LDB4RkEsMHhB
QSwweDM4LDB4RkYsMHg5NSwweEVFLDB4QUQsMHgyOSwweDBCLDB4MDIsCisgICAgMHg1OCwweEZG
LDB4MzksMHhGRiwweDc1LDB4NUQsMHg1NywweDU3LDB4MzksMHhGRiwweDE4LDB4RkYsMHgwMCww
eDAwLDB4MDAsMHgzQSwKKyAgICAweDM5LDB4RkYsMHgxOCwweEZGLDB4ODAsMHhBMCwweEY4LDB4
RkEsMHg1OSwweEZGLDB4QjYsMHhFRSwweDZBLDB4NkEsMHg3QSwweDdFLAorICAgIDB4OTYsMHhF
RSwweDU1LDB4RUUsMHhEOCwweDdFLDB4NzYsMHg1NywweDc2LDB4RUUsMHgzNSwweEU2LDB4RTIs
MHg2OCwweDVBLDB4NUUsCisgICAgMHhENywweEY2LDB4MzUsMHhFNiwweDI1LDB4MkQsMHgyRCww
eDNGLDB4MTgsMHhGRiwweEY4LDB4RjYsMHgzNywweDlCLDB4QTksMHhFRCwKKyAgICAweDE4LDB4
RkYsMHhGOCwweEY2LDB4M0YsMHgyRSwweDJFLDB4MEUsMHgzOSwweEZGLDB4MTgsMHhGRiwweDdG
LDB4NzksMHhCRiwweDlFLAorICAgIDB4MTgsMHhGRiwweDNBLDB4RjcsMHg4MCwweDAyLDB4MjIs
MHgyQSwweDE4LDB4RkYsMHhGOCwweEY2LDB4RTgsMHhGMiwweEU4LDB4RkEsCisgICAgMHgxOCww
eEZGLDB4RjgsMHhGNiwweDc2LDB4NUQsMHhGNywweDc3LDB4MTgsMHhGRiwweEY4LDB4RjYsMHg3
RiwweDY2LDB4NzcsMHhGNSwKKyAgICAweDE3LDB4RkYsMHhGOCwweEY2LDB4N0YsMHg3NywweEZE
LDB4RkQsMHgxNywweEZGLDB4RjgsMHhGNiwweEY3LDB4RUQsMHhERiwweDdGLAorICAgIDB4MTcs
MHhGRiwweEY4LDB4RjYsMHhGRiwweEY3LDB4NUQsMHhGNywweDE4LDB4RkYsMHhGNywweEY2LDB4
NTcsMHg3NSwweDZGLDB4NUYsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDdBLDB4NjIsMHhF
MCwweEVDLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHgzNSwweEFELDB4NUQsMHhGOSwKKyAgICAweEY3
LDB4RjYsMHhENywweEY2LDB4RUEsMHhFQSwweEY3LDB4NkYsMHhGOCwweEY2LDB4RDcsMHhGNiww
eEFGLDB4OUQsMHgwRCwweDBELAorICAgIDB4MTcsMHhGRiwweEY4LDB4RjYsMHhENSwweEY1LDB4
REYsMHhEQiwweDE4LDB4RkYsMHhGOCwweEY2LDB4NTcsMHg3RCwweEJELDB4RjcsCisgICAgMHgx
OCwweEZGLDB4RjgsMHhGNiwweEVGLDB4RjksMHhGQiwweDNELDB4MTgsMHhGRiwweEY3LDB4RjYs
MHg1RCwweDVBLDB4N0UsMHhFQSwKKyAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4RUQsMHhCOSww
eEVELDB4OTcsMHgxOCwweEZGLDB4RjgsMHhGNiwweEFBLDB4QUIsMHhGRCwweEZGLAorICAgIDB4
MTgsMHhGRiwweEY3LDB4RjYsMHhBRSwweDgyLDB4QUUsMHhGRSwweEY4LDB4RkUsMHgxOCwweEY3
LDB4QkYsMHgyQiwweDJGLDB4MkUsCisgICAgMHhGOCwweEY2LDB4RDcsMHhGNiwweEYwLDB4NTIs
MHg1OCwweDVBLDB4RDcsMHhGNiwweDk3LDB4RUUsMHhFMCwweDY4LDB4RTAsMHhBOCwKKyAgICAw
eEI3LDB4RjYsMHg3NiwweEVFLDB4QTAsMHhGMCwweEZDLDB4N0EsMHg5NiwweEVFLDB4NzYsMHhF
RSwweEI4LDB4NjgsMHhGOCwweDVGLAorICAgIDB4OTYsMHhFRSwweDU1LDB4RTYsMHg3RSwweDVF
LDB4RkEsMHhCQSwweDc2LDB4RUUsMHgzNSwweEU2LDB4QUYsMHhGRiwweEZGLDB4QzAsCisgICAg
MHg3NiwweEVFLDB4MzUsMHhFNiwweEZBLDB4NUYsMHg1NywweEZGLDB4NTUsMHhFNiwweDM1LDB4
RTYsMHg5RSwweEQ4LDB4MDIsMHg4MywKKyAgICAweDc1LDB4RUUsMHg1NSwweEU2LDB4RDksMHhE
RCwweEZGLDB4NUQsMHg5NiwweEVFLDB4NTUsMHhFNiwweEJELDB4QjcsMHgzNywweEFELAorICAg
IDB4OTYsMHhGNiwweEI3LDB4RUUsMHhFOCwweEZFLDB4RUUsMHhCQSwweEI3LDB4RjYsMHg3Niww
eEVFLDB4RTgsMHhGQywweEZFLDB4NUYsCisgICAgMHhCNiwweEY2LDB4OTYsMHhFRSwweEU1LDB4
QUQsMHhDRCwweEZELDB4QjYsMHhGNiwweDU1LDB4RTYsMHg2QSwweDdBLDB4NzIsMHg3QSwKKyAg
ICAweEY0LDB4REQsMHg3MiwweENELDB4NUMsMHg1QywweDVDLDB4NzgsMHhEMywweERELDB4NzIs
MHhDRCwweDI1LDB4M0QsMHhBRiwweEU5LAorICAgIDB4MzUsMHhFNiwweEQzLDB4REQsMHgyQiww
eDJCLDB4MkQsMHhBRCwweDU1LDB4RUUsMHgxNCwweEU2LDB4RUEsMHhFQSwweEVCLDB4QUYsCisg
ICAgMHgzNSwweEU2LDB4QjMsMHhENSwweDVBLDB4REEsMHg3QSwweDc4LDB4RjQsMHhERCwweEIz
LDB4RDUsMHhCRCwweDJELDB4MzksMHgyRiwKKyAgICAweDE0LDB4RTYsMHhEMywweERELDB4RjMs
MHhBOCwweEUyLDB4NjAsMHhGNCwweERELDB4OTIsMHhENSwweEUyLDB4QUEsMHg4MCwweDgwLAor
ICAgIDB4RDMsMHhERCwweDMxLDB4Q0QsMHg1RSwweEZFLDB4QTgsMHgwMCwweDkyLDB4RDUsMHhG
MCwweEJDLDB4QkYsMHhGNywweDc4LDB4NjAsCisgICAgMHgxMCwweEM1LDB4NEUsMHhBQywweDVD
LDB4NUUsMHg1NiwweDU3LDB4MzIsMHhDRCwweDhGLDB4QjQsMHgyRCwweDJELDB4MEQsMHgwOSwK
KyAgICAweDUyLDB4Q0QsMHgxMSwweEM1LDB4NUEsMHhEQSwweERFLDB4N0MsMHgzMSwweEM1LDB4
RDAsMHhDNCwweEFBLDB4MjgsMHgyQiwweDBBLAorICAgIDB4NTEsMHhDRCwweDEwLDB4QzUsMHhF
QSwweEFBLDB4REEsMHhFRiwweDcyLDB4RDUsMHg1MSwweENELDB4QUQsMHgzNSwweDU1LDB4NTUs
CisgICAgMHhCMywweEQ1LDB4NzIsMHhDRCwweDE1LDB4MkIsMHgzRCwweEJELDB4MzQsMHhFNiww
eEQzLDB4REQsMHhFQiwweEE5LDB4QzksMHhFRCwKKyAgICAweEQzLDB4REQsMHgxMCwweEM1LDB4
QTAsMHhFMCwweEUwLDB4NzgsMHg1MSwweENELDB4MTAsMHhDNSwweEJDLDB4QkYsMHhGNSwweEZG
LAorICAgIDB4RTgsMHg4MiwweEM4LDB4N0EsMHhEQSwweDlFLDB4ODAsMHhDMiwweEU4LDB4ODIs
MHhBNywweDdBLDB4REEsMHgyRiwweDA2LDB4M0YsCisgICAgMHgwOCwweDgzLDB4QzgsMHg3QSww
eEJFLDB4RUYsMHhFRCwweEE3LDB4RTgsMHg4MiwweEM4LDB4N0EsMHgyOCwweDNGLDB4NjUsMHg3
QSwKKyAgICAweDA4LDB4ODMsMHhBNywweDdBLDB4NjgsMHhFMiwweDhGLDB4RjUsMHgwOCwweDgz
LDB4QzcsMHg4MiwweEVGLDB4N0EsMHhFRiwweDc3LAorICAgIDB4MDksMHg4QiwweEE3LDB4N0Es
MHhCQiwweEI3LDB4M0QsMHhGRiwweDA4LDB4OEIsMHhDOCwweDgyLDB4QUMsMHg3QywweENGLDB4
RUYsCisgICAgMHgyOSwweDhCLDB4QzcsMHg4MiwweEE3LDB4RUIsMHhFOSwweDc1LDB4MjksMHg4
QiwweEE3LDB4N0EsMHg4OSwweDZBLDB4RjksMHg1QSwKKyAgICAweDJDLDB4QTQsMHhDOCwweDgy
LDB4MkYsMHhGRCwweDU1LDB4NTUsMHg5MCwweEQ1LDB4MDcsMHg4MywweDBBLDB4QkQsMHg1NSww
eDU1LAorICAgIDB4NTQsMHhFRSwweDQ5LDB4OEIsMHgwMCwweDJBLDB4QjUsMHg1NSwweDk2LDB4
RjYsMHg4QSwweDlCLDB4MDAsMHgwMCwweDJCLDB4RjUsCisgICAgMHhCNiwweEY2LDB4NzIsMHhE
NSwweDAwLDB4MDAsMHgwQSwweEJELDB4RDYsMHhGNiwweDc2LDB4RjYsMHhBMCwweDhBLDB4MkEs
MHhCNSwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEY2LDB4MjksMHhCRCwweEZGLDB4NTUsMHhGNyww
eEY2LDB4QjYsMHhGNiwweEVCLDB4RkYsMHhGRiwweEQ1LAorICAgIDB4QjcsMHhGRSwweEQ2LDB4
RjYsMHhENSwweEQ1LDB4NzcsMHhERCwweEY3LDB4RkUsMHhCNiwweEY2LDB4QkYsMHhBQiwweEFG
LDB4RkIsCisgICAgMHhGNywweEZFLDB4RDcsMHhGNiwweDU1LDB4NTcsMHg3RiwweDU1LDB4Rjcs
MHhGRSwweEI2LDB4RjYsMHg5RSwweEJGLDB4QUUsMHhCQSwKKyAgICAweEQ2LDB4RkUsMHhGNyww
eEY2LDB4RUEsMHhGRSwweEZCLDB4RUEsMHhGNywweEZFLDB4RDcsMHhGNiwweDc3LDB4NUYsMHg3
RCwweDdCLAorICAgIDB4QjYsMHhGRSwweEQ2LDB4RjYsMHg5NSwweEI1LDB4NTcsMHg1NSwweEI1
LDB4RjYsMHgyOSwweDgzLDB4NzgsMHg3OCwweDc4LDB4RTgsCisgICAgMHg0NiwweDZBLDB4NDQs
MHg0OSwweDVGLDB4RkUsMHhEQywweERDLDB4QTUsMHg1MSwweDAyLDB4NDEsMHhERiwweEZDLDB4
QTIsMHhDOCwKKyAgICAweDg0LDB4NTEsMHgyMywweDQxLDB4NTUsMHg1NSwweERGLDB4ODAsMHg4
NCwweDUxLDB4MDMsMHgzOSwweEY3LDB4RkQsMHhBRiwweDAyLAorICAgIDB4ODUsMHg0OSwweDAz
LDB4NDEsMHhGQSwweDdCLDB4NkEsMHhGOCwweDQ0LDB4NDEsMHhFMiwweDM4LDB4OEEsMHhBQiww
eEZCLDB4REYsCisgICAgMHgyMywweDQxLDB4QzIsMHgzOCwweEVDLDB4QUUsMHgyOSwweDI5LDB4
NDQsMHg0OSwweEUyLDB4MzgsMHhGRCwweEJGLDB4QkUsMHgzQiwKKyAgICAweEU1LDB4NjksMHgy
MywweDQ5LDB4MkYsMHhCRCwweEJGLDB4MkIsMHg2NywweDdBLDB4RTUsMHg2OSwweEFCLDB4OEIs
MHgyRCwweEFCLAorICAgIDB4NDcsMHg3MiwweEU0LDB4NjksMHg2RSwweDdFLDB4N0UsMHhFMCww
eEU1LDB4NjksMHg0NCwweDUxLDB4RjgsMHhGOCwweDc4LDB4NzgsCisgICAgMHg2NCwweDUxLDB4
MDQsMHg0MSwweEY4LDB4REUsMHhFQSwweEUyLDB4NDQsMHg0OSwweEUzLDB4MzgsMHg3QSwweERD
LDB4RjIsMHg2OCwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4QUIsMHhBOCwweEY4LDB4NTcs
MHgwMywweDM5LDB4QTEsMHgzMCwweDY4LDB4RUEsMHhFRiwweDgzLAorICAgIDB4RTIsMHgzMCww
eDgxLDB4MjgsMHhFRiwweEJFLDB4RkEsMHg3OCwweEMyLDB4MzAsMHg4MSwweDI4LDB4QjcsMHhG
QSwweDdBLDB4NzUsCisgICAgMHhDMiwweDMwLDB4ODEsMHgyOCwweDJCLDB4M0UsMHhCNSwweEU1
LDB4NDQsMHg0OSwweEEyLDB4MzAsMHhCRiwweEFGLDB4QkYsMHgyRCwKKyAgICAweDg0LDB4NTks
MHgwMywweDQxLDB4QUYsMHgyNywweDM1LDB4QjcsMHhBOSwweDgyLDB4ODUsMHg1OSwweDNELDB4
M0YsMHgyRiwweDI5LAorICAgIDB4RTksMHg4MiwweDY3LDB4N0EsMHg3NSwweDdGLDB4QUEsMHgw
MiwweDA5LDB4OEIsMHg2NywweDcyLDB4MEYsMHhBRiwweDlGLDB4NTcsCisgICAgMHgwQSwweDkz
LDB4ODcsMHg3QSwweEMwLDB4RUEsMHhFMywweEQ1LDB4QzgsMHg4MiwweDY3LDB4NzIsMHgyQiww
eDFGLDB4MkUsMHhCMywKKyAgICAweEU5LDB4ODIsMHg4OCwweDgyLDB4OUUsMHhGRSwweDhFLDB4
OEIsMHhFOSwweDgyLDB4ODcsMHg3QSwweDNBLDB4RUEsMHg2OCwweDcwLAorICAgIDB4RTksMHg4
QSwweEM1LDB4NjEsMHhBOCwweEFBLDB4RkUsMHg1RiwweDQ3LDB4NzIsMHhBNSwweDU5LDB4Njgs
MHg1OCwweDVGLDB4NTcsCisgICAgMHg2NywweDcyLDB4QTUsMHg2MSwweDNELDB4MjUsMHgyRCww
eDBELDB4MDgsMHg4QiwweDg2LDB4N0EsMHhCRCwweEFELDB4MkEsMHhBOSwKKyAgICAweEU4LDB4
ODIsMHg2NywweDdBLDB4RkUsMHhFQSwweDZBLDB4RTgsMHhDOCwweDgyLDB4MjcsMHg3MiwweDJG
LDB4QjcsMHhBRiwweDJFLAorICAgIDB4MkUsMHhBNCwweEM5LDB4ODIsMHgzRiwweDk1LDB4RDUs
MHg1NSwweDc2LDB4RUUsMHgwQSwweDhCLDB4MDIsMHgyRiwweEFELDB4RjUsCisgICAgMHgzOCww
eEZGLDB4MTQsMHhFNiwweDJBLDB4OEEsMHgwQiwweDJELDB4MzksMHhGRiwweDE4LDB4RkYsMHg4
OSwweDJCLDB4MkEsMHhBMiwKKyAgICAweDM5LDB4RkYsMHgzOCwweEZGLDB4QTIsMHhBQSwweEE4
LDB4QUEsMHgzOSwweEZGLDB4MTgsMHhGRiwweEFBLDB4QUMsMHhCQSwweEZDLAorICAgIDB4Mzgs
MHhGRiwweDE4LDB4RkYsMHg3QSwweDdBLDB4RUUsMHhGQSwweDE4LDB4RkYsMHg3NSwweEVFLDB4
NjgsMHg3OCwweDdDLDB4NUMsCisgICAgMHg3NiwweEVFLDB4NTUsMHhFNiwweDc2LDB4NUYsMHgy
RSwweEFFLDB4NzYsMHhFRSwweDE0LDB4REUsMHhGMiwweEZBLDB4RkEsMHhERSwKKyAgICAweEQ3
LDB4RjYsMHg1NSwweEU2LDB4MkQsMHgyRCwweDJCLDB4MDksMHhGOCwweEZFLDB4MTgsMHhGNyww
eEVDLDB4QjgsMHhBQywweEVBLAorICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHgyRiwweDNELDB4
MDUsMHgyOSwweDM5LDB4RkYsMHgxOCwweEZGLDB4OUYsMHhGRiwweDVELDB4REQsCisgICAgMHgx
OCwweEZGLDB4MzksMHhGNywweDJBLDB4ODIsMHgyMiwweDAyLDB4MTgsMHhGRiwweEY4LDB4RjYs
MHhFQSwweEFFLDB4QUEsMHhBMiwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4RDUsMHg3Riww
eDdBLDB4RUYsMHhGOCwweEZFLDB4MTgsMHhGNywweEE4LDB4QTgsMHhBQSwweDgyLAorICAgIDB4
MTgsMHhGRiwweEY4LDB4RjYsMHhGNywweDdELDB4NUYsMHg3RiwweDE5LDB4RkYsMHhGNywweEY2
LDB4N0YsMHg1RiwweDc1LDB4NzUsCisgICAgMHhGOCwweEZFLDB4MTgsMHhGNywweEFBLDB4RUEs
MHg4QSwweDJBLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhFQSwweDdBLDB4RkIsMHg3RSwKKyAgICAw
eDM4LDB4RkYsMHhENywweEY2LDB4NzcsMHhGRCwweERELDB4RkQsMHhGNywweEY2LDB4RDcsMHhG
NiwweDNBLDB4QkEsMHhFQSwweEUyLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg3RSwweEQ2
LDB4RDUsMHhERCwweDE4LDB4RkYsMHhENywweEY2LDB4QkQsMHhBRiwweEFGLDB4RkYsCisgICAg
MHgxOCwweEZGLDB4RDcsMHhGNiwweEFBLDB4QUUsMHhBRiwweEZGLDB4RjgsMHhGRSwweDE3LDB4
RUYsMHhBQSwweDgyLDB4MjIsMHgyQSwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4QkQsMHgz
RCwweEFGLDB4MkQsMHgxOCwweEZGLDB4RjcsMHhGNiwweEU4LDB4NkEsMHg1MiwweDZBLAorICAg
IDB4RjcsMHhGNiwweEQ3LDB4RjYsMHgyOCwweDBDLDB4MEYsMHgwRSwweEY4LDB4RkUsMHgxOCww
eEY3LDB4RkYsMHg3RSwweEVFLDB4QkEsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEZFLDB4
RjYsMHhENywweERGLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhBMiwweDdBLDB4QUEsMHhFQSwKKyAg
ICAweEY4LDB4RjYsMHg5NywweEVFLDB4QTgsMHg4MCwweEE4LDB4RUEsMHhENywweEY2LDB4OTYs
MHhFRSwweEFBLDB4RTgsMHhGRSwweDVBLAorICAgIDB4QjcsMHhGNiwweDc2LDB4RUUsMHhGQSww
eEZFLDB4NUYsMHhENywweDk2LDB4RUUsMHg1NSwweEU2LDB4RkEsMHhCQywweEZBLDB4ODIsCisg
ICAgMHg3NiwweEVFLDB4NTUsMHhFNiwweDAwLDB4MjAsMHhCRSwweEQ3LDB4OTYsMHhFRSwweDU1
LDB4RUUsMHg4MCwweDgwLDB4QjUsMHhGRCwKKyAgICAweDk2LDB4RUUsMHg1NSwweEU2LDB4N0Is
MHhDMCwweEEyLDB4RkEsMHg5NiwweEVFLDB4NTUsMHhFNiwweDU1LDB4N0YsMHhDQSwweEFCLAor
ICAgIDB4NTUsMHhFRSwweDM1LDB4RTYsMHhCOSwweDdBLDB4QjgsMHgyMCwweDk2LDB4RUUsMHg1
NSwweEU2LDB4QkQsMHg5NSwweDI1LDB4MkYsCisgICAgMHhCNywweEY2LDB4NzYsMHhFRSwweEZC
LDB4RkIsMHg3QSwweDc4LDB4OTYsMHhFRSwweDc2LDB4RUUsMHhEQSwweDdCLDB4N0YsMHhENSwK
KyAgICAweDk2LDB4RUUsMHg3NSwweEVFLDB4QTIsMHgzRCwweDJCLDB4MDMsMHhCNywweEY2LDB4
MzUsMHhFNiwweEZBLDB4RUEsMHg3MiwweDYyLAorICAgIDB4MTQsMHhERSwweDUxLDB4Q0QsMHg3
QywweDVDLDB4NUUsMHg1RSwweEIzLDB4RDUsMHg1MSwweENELDB4MkYsMHhBRCwweEI1LDB4QkIs
CisgICAgMHgzNSwweEVFLDB4QjMsMHhENSwweDJELDB4M0QsMHgzRCwweEJELDB4MzQsMHhFNiww
eDE0LDB4RTYsMHhFMCwweEMwLDB4QzIsMHhFNywKKyAgICAweDE0LDB4RTYsMHhCMiwweEQ1LDB4
NzgsMHhFOCwweDc4LDB4NzAsMHgzNCwweEU2LDB4QjMsMHhENSwweEJELDB4QTcsMHhCRCwweDJE
LAorICAgIDB4MzUsMHhFNiwweEQzLDB4REQsMHg3MiwweEZFLDB4NUMsMHg1QywweEY0LDB4REQs
MHhEMywweERELDB4RkIsMHgzRCwweEFELDB4RjIsCisgICAgMHhGNCwweEU1LDB4RDMsMHhERCww
eDYwLDB4RkEsMHg3NywweDU1LDB4QjMsMHhERCwweDExLDB4QzUsMHg3OCwweEUwLDB4NjAsMHg3
MCwKKyAgICAweEQwLDB4QkMsMHgyRCwweEE0LDB4REUsMHhEQywweDVDLDB4NUMsMHg1MSwweENE
LDB4NkUsMHhBQywweDI5LDB4MkQsMHgwNSwweEJELAorICAgIDB4MzEsMHhDRCwweEQwLDB4QkMs
MHhCOCwweEY4LDB4RTgsMHg1QSwweDMxLDB4QzUsMHhBRiwweEI0LDB4MEEsMHhBRiwweDlGLDB4
REYsCisgICAgMHg1MSwweENELDB4MTAsMHhDNSwweEZFLDB4QkIsMHg3NywweEY5LDB4NzIsMHhE
NSwweDMxLDB4QzUsMHgzNywweDM5LDB4QUUsMHhCRiwKKyAgICAweDkyLDB4RDUsMHg1MSwweENE
LDB4QUIsMHhGQSwweDZBLDB4N0UsMHhEMywweERELDB4RjAsMHhDNCwweDAyLDB4RUEsMHhGRiww
eDVGLAorICAgIDB4NzIsMHhENSwweEYwLDB4QkMsMHhGQywweEQ2LDB4NTUsMHhENSwweDcyLDB4
Q0QsMHgxMCwweEM1LDB4QkYsMHhCRiwweEE5LDB4MkEsCisgICAgMHhDOCwweDdBLDB4ODcsMHg3
QSwweDAwLDB4ODgsMHg0MCwweDAzLDB4RTgsMHg4MiwweEE3LDB4N0EsMHhCRiwweEIyLDB4QTks
MHg4QiwKKyAgICAweEU4LDB4ODIsMHhBOCwweDdBLDB4NzgsMHhBQywweEVCLDB4QkYsMHhFOCww
eDgyLDB4QTcsMHg3QSwweDI0LDB4MDgsMHhFRiwweEFELAorICAgIDB4RTgsMHg4MiwweEM3LDB4
N0EsMHgzQiwweDZCLDB4OUUsMHgyQiwweDA5LDB4OEIsMHhDNywweDgyLDB4QTcsMHg5RSwweERC
LDB4NUYsCisgICAgMHgwOCwweDhCLDB4QTcsMHg3QSwweEZFLDB4RUYsMHhFNCwweEI3LDB4RTgs
MHg4MiwweEE3LDB4ODIsMHhCOCwweDgwLDB4OEEsMHhGQywKKyAgICAweEU4LDB4ODIsMHhBNyww
eDgyLDB4RUIsMHgyOCwweDBBLDB4MzIsMHgwOCwweDhCLDB4QzcsMHg4MiwweERGLDB4RkYsMHhB
OSwweEJGLAorICAgIDB4MDgsMHg4QiwweEE3LDB4N0EsMHhCRiwweEJFLDB4MzYsMHhGQywweDA4
LDB4OEIsMHhDNywweDgyLDB4MjksMHhFOCwweEVBLDB4QTMsCisgICAgMHgwOCwweDhCLDB4Qzcs
MHg4MiwweEEwLDB4N0EsMHhBQiwweEVCLDB4NDksMHg5MywweEE3LDB4N0EsMHgwRSwweEFGLDB4
RkUsMHhGQiwKKyAgICAweEYwLDB4QzQsMHgwOSwweDhCLDB4MkIsMHhENSwweDU1LDB4NTUsMHgz
NCwweEU2LDB4MjksMHg4QiwweDAyLDB4QUYsMHhENSwweDU1LAorICAgIDB4OTYsMHhGNiwweDhB
LDB4OTMsMHgwMCwweDBBLDB4QUYsMHg1NSwweDk2LDB4RjYsMHg4RSwweEI0LDB4MDAsMHgwMCww
eDBBLDB4QjUsCisgICAgMHhCNiwweEY2LDB4MTQsMHhFNiwweDAwLDB4MDAsMHgwOCwweEFELDB4
RDYsMHhGNiwweDk1LDB4RjYsMHgyMywweDIyLDB4MjMsMHhBNSwKKyAgICAweEQ3LDB4RjYsMHhC
NiwweEY2LDB4RkEsMHhGRSwweEQ4LDB4OUUsMHhCNiwweEZFLDB4RDYsMHhGNiwweDU3LDB4RkYs
MHhERiwweEZELAorICAgIDB4RjcsMHhGRSwweEI2LDB4RjYsMHhBQSwweEFGLDB4RkEsMHg3Riww
eEQ3LDB4RjYsMHhCNiwweEY2LDB4QzAsMHg4MCwweDBCLDB4RUIsCisgICAgMHhGNiwweEZFLDB4
QjcsMHhGNiwweEJCLDB4QUIsMHhBQiwweEVGLDB4RDYsMHhGNiwweEFFLDB4QjQsMHg3OCwweDY4
LDB4RTAsMHhBMCwKKyAgICAweDhFLDB4QjQsMHhBNCwweDU5LDB4NTcsMHg1NiwweDVFLDB4NTgs
MHhBNSwweDUxLDB4NjQsMHg0OSwweDgyLDB4OUYsMHg5RCwweEQ3LAorICAgIDB4RTUsMHg1OSww
eDg0LDB4NTEsMHhFRCwweEY5LDB4RDcsMHg1NywweEU2LDB4NTksMHg4NCwweDUxLDB4NkYsMHg3
RSwweDY4LDB4NjMsCisgICAgMHhBNSwweDUxLDB4NDQsMHg0MSwweDdBLDB4RjIsMHg1OCwweDdF
LDB4NDQsMHg0MSwweDAzLDB4NDEsMHhEQSwweEI4LDB4M0MsMHhCQywKKyAgICAweDQ0LDB4NDks
MHgwMywweDQxLDB4N0QsMHg2RSwweEU4LDB4OEYsMHhDNSwweDYxLDB4MDMsMHg0MSwweERELDB4
OTUsMHhCRiwweDJBLAorICAgIDB4NjcsMHg3QSwweEM1LDB4NjEsMHhGNSwweDM1LDB4MjksMHgw
QSwweEM4LDB4OEEsMHgyNiwweDcyLDB4RjUsMHg4QiwweEFBLDB4MjgsCisgICAgMHhDOSwweDhB
LDB4MDYsMHg2QSwweDVCLDB4NkEsMHg3OCwweEI4LDB4MjcsMHg3MiwweDg0LDB4NTEsMHg1RSww
eDdBLDB4NzgsMHhGMCwKKyAgICAweDY0LDB4NTEsMHgyNCwweDQ5LDB4RkEsMHhGNywweEQ0LDB4
QUMsMHg2NCwweDUxLDB4RTIsMHgzOCwweEZBLDB4N0MsMHg3QSwweEVDLAorICAgIDB4RTMsMHgz
OCwweEEyLDB4MzAsMHhCRSwweERDLDB4NUYsMHhGQSwweDAzLDB4MzksMHhDMiwweDMwLDB4OEIs
MHhBQiwweDg5LDB4QTksCisgICAgMHgwMywweDM5LDB4ODIsMHgyOCwweDZBLDB4RkEsMHhFMiww
eENBLDB4QTIsMHgzMCwweDgyLDB4MjgsMHhENSwweDU1LDB4NTcsMHg1QywKKyAgICAweEUyLDB4
MzAsMHg4MiwweDI4LDB4RkYsMHhGNSwweEI1LDB4M0QsMHg0MywweDQxLDB4QTEsMHgzMCwweDI5
LDB4QUQsMHhBRiwweEFGLAorICAgIDB4QTUsMHg1OSwweDIzLDB4NDEsMHhCNSwweEFELDB4M0Qs
MHgwRCwweEE5LDB4ODIsMHhBNSwweDU5LDB4MkQsMHgyRCwweEFCLDB4QUIsCisgICAgMHhDOSww
eDgyLDB4MDYsMHg2QSwweDAwLDB4QTgsMHhGRSwweDdCLDB4QTgsMHg3QSwweEU0LDB4NjEsMHhG
OCwweEZBLDB4N0YsMHg1NSwKKyAgICAweDY3LDB4N0EsMHhDNCwweDYxLDB4MEEsMHhCRiwweEY1
LDB4RkYsMHg4OCwweDdBLDB4RTUsMHg2OSwweDAwLDB4MDIsMHgwQiwweEJELAorICAgIDB4Qzks
MHg4MiwweDQ2LDB4NzIsMHg4MiwweDJBLDB4QUYsMHg5NywweEU5LDB4ODIsMHg4NCwweDUxLDB4
ODAsMHhBQSwweEZBLDB4N0UsCisgICAgMHgwNiwweDZBLDB4MDIsMHg0OSwweEE4LDB4RTgsMHhG
RiwweDU3LDB4RTYsMHg2MSwweDQzLDB4NTEsMHhBQSwweEZELDB4QkQsMHgzNSwKKyAgICAweDQ3
LDB4NzIsMHhBNCwweDU5LDB4MEQsMHgyRCwweDJGLDB4MEEsMHhBOCwweDgyLDB4NDYsMHg3Miww
eDAzLDB4QjUsMHhFRCwweEFELAorICAgIDB4QzksMHg4QSwweEE4LDB4N0EsMHhFQiwweEVGLDB4
QTksMHg4NywweEM5LDB4ODIsMHg2NywweDdBLDB4QjcsMHhGQywweEZFLDB4NUUsCisgICAgMHhB
OCwweDgyLDB4NDYsMHg3MiwweDAyLDB4QUEsMHgyQiwweDg5LDB4OEIsMHg5QiwweDY4LDB4N0Es
MHgyRiwweDJELDB4QUQsMHhCRCwKKyAgICAweEQ2LDB4RjYsMHg4QSwweDkzLDB4MEIsMHgwRiww
eDJELDB4OTUsMHgzOSwweEZGLDB4QjYsMHhGNiwweDAwLDB4MjAsMHg4MiwweDg5LAorICAgIDB4
MzksMHhGRiwweDE4LDB4RkYsMHgyMCwweDBBLDB4OEIsMHg4QiwweDM4LDB4RkYsMHgxOCwweEZG
LDB4REUsMHg5RSwweEJFLDB4QkUsCisgICAgMHgzOCwweEZGLDB4RjcsMHhGNiwweEEwLDB4RUEs
MHg2QSwweDdBLDB4QjYsMHhGNiwweDU1LDB4RTYsMHhGMCwweEY4LDB4NzgsMHhGQSwKKyAgICAw
eDU1LDB4RUUsMHg3NSwweEU2LDB4MEEsMHgwMiwweEEwLDB4QTAsMHg1NSwweEVFLDB4MzUsMHhF
NiwweEQ3LDB4REUsMHhBQywweEI4LAorICAgIDB4RjgsMHhGRSwweDc2LDB4RUUsMHgyRCwweDJE
LDB4MjksMHgwRiwweDE4LDB4RkYsMHhENywweEY2LDB4RkEsMHhGQSwweEZBLDB4RTgsCisgICAg
MHgzOCwweEZGLDB4RjgsMHhGNiwweEI3LDB4QjUsMHhCNSwweEFELDB4MTgsMHhGRiwweDM4LDB4
RjcsMHgyMCwweDBBLDB4MkEsMHgyQSwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4MjgsMHhB
OCwweEY4LDB4QkEsMHgxOCwweEZGLDB4RjgsMHhGNiwweEVBLDB4QkEsMHhBRSwweEFCLAorICAg
IDB4RjgsMHhGRSwweDE4LDB4RjcsMHhBQSwweEJBLDB4RUIsMHhCQiwweEY4LDB4RkUsMHgxOCww
eEY3LDB4ODIsMHhBQSwweEE4LDB4QUMsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweDdGLDB4
NUYsMHhEQSwweDVGLDB4RDgsMHhGRSwweEY3LDB4RjYsMHhGNywweEY3LDB4N0QsMHhERiwKKyAg
ICAweEQ3LDB4RkUsMHhGOCwweEY2LDB4RjcsMHhGRiwweERELDB4NzUsMHhEOCwweEZFLDB4Rjcs
MHhGNiwweEZELDB4RkQsMHg3NywweDU1LAorICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhBRiww
eEJCLDB4RkYsMHhERiwweEQ4LDB4RkUsMHhGNywweEY2LDB4QkQsMHhGNSwweDc3LDB4NUYsCisg
ICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweERELDB4NUQsMHg3RiwweEZBLDB4RjcsMHhGNiwweEQ3
LDB4RjYsMHgyQiwweDI1LDB4QjcsMHgzNywKKyAgICAweEY4LDB4RkUsMHhGNywweEY2LDB4RkYs
MHhGRiwweEZCLDB4QkYsMHgxOCwweEZGLDB4RjgsMHhGNiwweDZELDB4REYsMHhGNSwweEZGLAor
ICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhBRCwweDBCLDB4OEYsMHhBRiwweDE4LDB4RkYsMHhG
OCwweEY2LDB4NjAsMHg3QSwweEVFLDB4RUIsCisgICAgMHhEOCwweEZFLDB4RjcsMHhGNiwweDVE
LDB4NzUsMHhGNSwweEZGLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhBMiwweEFBLDB4RjcsMHhCNywK
KyAgICAweEY3LDB4RjYsMHhEOCwweEY2LDB4QTAsMHhBMCwweEUyLDB4RUEsMHhGOCwweEY2LDB4
RDcsMHhGNiwweDgyLDB4N0IsMHg1RiwweDU3LAorICAgIDB4RjgsMHhGNiwweEI3LDB4RjYsMHg3
QSwweEZBLDB4NzcsMHg1RiwweEI3LDB4RjYsMHg3NiwweEVFLDB4RjgsMHhCOCwweEVDLDB4RkUs
CisgICAgMHg5NiwweEVFLDB4NzYsMHhFRSwweEQ5LDB4RDcsMHg1RiwweEQ1LDB4OTYsMHhFRSww
eDc2LDB4RUUsMHg2OCwweDdBLDB4NTcsMHg1NSwKKyAgICAweDc1LDB4RUUsMHgzNSwweEU2LDB4
RTIsMHhCQywweEFFLDB4QUUsMHg3NSwweEVFLDB4MzUsMHhFNiwweEFBLDB4QkIsMHhCNiwweEZG
LAorICAgIDB4NzUsMHhFRSwweDU1LDB4RTYsMHg4QSwweEFBLDB4RkYsMHg1NiwweDc2LDB4RUUs
MHgzNSwweEU2LDB4MkEsMHhFRSwweDlGLDB4RDcsCisgICAgMHg3NiwweEVFLDB4NTUsMHhFNiww
eDk1LDB4QkQsMHgwRCwweEEzLDB4QjcsMHhGNiwweDc2LDB4RUUsMHhBNSwweDJCLDB4QTksMHhB
QiwKKyAgICAweEI3LDB4RjYsMHg3NiwweEVFLDB4RkEsMHhGOCwweEVBLDB4NUUsMHhCNiwweEY2
LDB4NTUsMHhFRSwweEZELDB4QUYsMHgyQiwweDJBLAorICAgIDB4QjYsMHhGNiwweDk2LDB4RUUs
MHhGRCwweEZFLDB4OEEsMHhBNiwweEI2LDB4RjYsMHgxNCwweERFLDB4RTIsMHhFMCwweEVBLDB4
N0EsCisgICAgMHhGNCwweERELDB4MzEsMHhDRCwweEY4LDB4RjgsMHg3OCwweDVFLDB4QjMsMHhE
RCwweDMxLDB4Q0QsMHgyQiwweDJCLDB4QUYsMHhGNSwKKyAgICAweDE1LDB4RTYsMHg5MiwweEQ1
LDB4MkYsMHhBQiwweEFELDB4QkQsMHgzNSwweEU2LDB4RDMsMHhERCwweDgyLDB4OEEsMHhFRSww
eDdFLAorICAgIDB4MTQsMHhFNiwweEIzLDB4RDUsMHg3MCwweEQ4LDB4RUEsMHhFQSwweDE0LDB4
RTYsMHhCMywweEQ1LDB4MkYsMHgyRCwweDJGLDB4MEYsCisgICAgMHgxNCwweEU2LDB4RDMsMHhE
RCwweEY4LDB4N0MsMHhEQSwweERBLDB4RjQsMHhERCwweDkyLDB4RDUsMHg4MCwweDgwLDB4QzIs
MHg2OCwKKyAgICAweEQzLDB4REQsMHgzMSwweEM1LDB4MDAsMHg4MCwweEFBLDB4NTUsMHg5Miww
eEQ1LDB4RDAsMHhCQywweDYwLDB4RjAsMHhGRSwweEZGLAorICAgIDB4RUYsMHhCQywweDBELDB4
QTQsMHg1QSwweDdFLDB4RkMsMHhGOCwweEYwLDB4QzQsMHg0RCwweEFDLDB4MkQsMHgyRCwweDI1
LDB4MzUsCisgICAgMHgzMSwweENELDB4QjAsMHhCNCwweEZBLDB4RjAsMHhGOCwweDdBLDB4Q0Ys
MHhCQywweDhGLDB4QjQsMHgzNiwweDBFLDB4MkYsMHgxNywKKyAgICAweDMxLDB4QzUsMHhGMCww
eEM0LDB4MjMsMHg4OSwweDA5LDB4MDUsMHg3MiwweENELDB4MzEsMHhDRCwweEFELDB4MjksMHgz
RCwweDNCLAorICAgIDB4NzEsMHhDRCwweDMxLDB4Q0QsMHhBQSwweEU4LDB4RkEsMHg1NiwweDUx
LDB4Q0QsMHhGMCwweEJDLDB4NTgsMHg1NiwweERELDB4RjcsCisgICAgMHg1MiwweENELDB4RDAs
MHhCQywweDM1LDB4MkYsMHhCQSwweEFBLDB4OTIsMHhENSwweDMxLDB4QzUsMHhCRiwweEFGLDB4
OEIsMHhBRCwKKyAgICAweEU4LDB4ODIsMHg4NiwweDdBLDB4ODksMHg4QSwweEU4LDB4QTIsMHgw
OCwweDgzLDB4ODcsMHg3QSwweEMzLDB4NkUsMHg2QiwweEVBLAorICAgIDB4RTgsMHg4MiwweDg3
LDB4N0EsMHg2RSwweENGLDB4RUYsMHhGRSwweEU4LDB4ODIsMHg4NiwweDdBLDB4MkQsMHhCRCww
eEFCLDB4QkEsCisgICAgMHhFOCwweDgyLDB4ODcsMHg3QSwweDAyLDB4OTAsMHgwMCwweDhCLDB4
RTcsMHg4MiwweEE3LDB4N0EsMHhCRiwweEJDLDB4RkUsMHhGQSwKKyAgICAweEM4LDB4ODIsMHhB
OCwweDdBLDB4MEUsMHg0MCwweEQyLDB4MDUsMHhFOCwweDgyLDB4QTcsMHg3QSwweEQ1LDB4QUIs
MHgyQSwweDI4LAorICAgIDB4RTgsMHg4MiwweEE2LDB4ODIsMHgwRiwweEMwLDB4RTAsMHhGMCww
eDA4LDB4OEIsMHhBNywweDdBLDB4MjgsMHg1RSwweEZBLDB4QkEsCisgICAgMHgwOSwweDhCLDB4
QzcsMHg4MiwweDVFLDB4Q0IsMHg3OSwweDVBLDB4MDgsMHg4QiwweEE3LDB4N0EsMHhBQiwweDNG
LDB4RkUsMHhCRCwKKyAgICAweDA4LDB4ODMsMHhBNywweDgyLDB4MkEsMHhCRSwweEZFLDB4OUYs
MHhFOCwweDgyLDB4QzgsMHg4MiwweDIwLDB4MjIsMHg2QiwweERGLAorICAgIDB4MDgsMHg4Qiww
eEM4LDB4ODIsMHg4QiwweEI1LDB4QTksMHgyRCwweDA4LDB4OEIsMHhDOCwweDgyLDB4MjgsMHgy
QSwweDNBLDB4NUYsCisgICAgMHg0OSwweDhCLDB4QzgsMHg4MiwweEE4LDB4RkYsMHhEQSwweERG
LDB4MEMsMHg5QywweEM3LDB4ODIsMHgyQiwweEZGLDB4RjUsMHg1RCwKKyAgICAweEQzLDB4REQs
MHgyOSwweDhCLDB4MEEsMHhGNSwweDU1LDB4NTUsMHg3NSwweEVFLDB4MjksMHg4QiwweDAwLDB4
MEIsMHhGRCwweDU1LAorICAgIDB4QjYsMHhGNiwweENCLDB4QTMsMHgwMCwweDAwLDB4QUIsMHhG
NSwweEQ2LDB4RjYsMHg5MiwweEQ1LDB4MDAsMHgwOCwweDhBLDB4QkQsCisgICAgMHhENiwweEY2
LDB4NzUsMHhGNiwweDA4LDB4OEEsMHhBQiwweEJELDB4RDcsMHhGRSwweDk2LDB4RjYsMHhBQSww
eEFFLDB4OUUsMHhGQiwKKyAgICAweEQ3LDB4RkUsMHhCNiwweEY2LDB4RUEsMHhGRiwweEVCLDB4
RUIsMHhCNywweEY2LDB4MzQsMHhFNiwweDYwLDB4QzAsMHhBMCwweDgwLAorICAgIDB4NTUsMHhF
RSwweDg3LDB4NzIsMHg1RSwweDc4LDB4NzgsMHhFMCwweDY2LDB4NkEsMHg0MywweDQ5LDB4Rjcs
MHhENSwweDU2LDB4NUMsCisgICAgMHhBNSwweDU5LDB4NDMsMHg0OSwweEEwLDB4ODAsMHhFQSww
eEQ1LDB4QzUsMHg1MSwweDY0LDB4NDksMHg4QSwweEFBLDB4RkUsMHg3NSwKKyAgICAweDg1LDB4
NTEsMHg2NCwweDQ5LDB4N0EsMHg2OCwweEQ1LDB4RUYsMHg4NCwweDUxLDB4MjMsMHg0MSwweDc3
LDB4N0YsMHhGRSwweDhFLAorICAgIDB4QzUsMHg1OSwweDIzLDB4NDEsMHhGRCwweDJGLDB4QUIs
MHgyQSwweEE4LDB4ODIsMHg4NCwweDUxLDB4RjUsMHhCRCwweEFGLDB4MkIsCisgICAgMHgwOSww
eDkzLDB4NDYsMHg3MiwweEJELDB4MkQsMHgwQiwweDBBLDB4MDksMHg5MywweEE4LDB4OEEsMHhE
NywweDZFLDB4RTIsMHhFMCwKKyAgICAweEM5LDB4OEEsMHgyNiwweDcyLDB4RjgsMHhGRSwweDU4
LDB4RDgsMHg0NywweDdBLDB4QTQsMHg2MSwweDVDLDB4N0EsMHg3QywweEIwLAorICAgIDB4QzUs
MHg2OSwweDQ0LDB4NDksMHhERiwweDdGLDB4QkEsMHhBMCwweEE1LDB4NTksMHg0NCwweDQ5LDB4
NTUsMHhGRiwweEJGLDB4MkEsCisgICAgMHhFNiwweDY5LDB4RTIsMHg0MCwweDVGLDB4RkUsMHhB
QSwweDJBLDB4QzUsMHg1OSwweDAzLDB4NDEsMHg1NSwweDU1LDB4NUUsMHhFOCwKKyAgICAweDAz
LDB4NDEsMHhDMiwweDMwLDB4RTgsMHg3QSwweEZGLDB4MkUsMHg0NCwweDQxLDB4QTIsMHgzMCww
eDU1LDB4RjcsMHhBQSwweDBBLAorICAgIDB4ODUsMHg1MSwweDgxLDB4MzAsMHhGRCwweEJGLDB4
MkYsMHgwQSwweDY0LDB4NDksMHgwMywweDQxLDB4QkQsMHgyRSwweEFBLDB4MDIsCisgICAgMHhD
NSwweDYxLDB4NDQsMHg0OSwweDM3LDB4QUYsMHgyQSwweEFCLDB4MjcsMHg2QSwweDg0LDB4NTEs
MHg4MiwweEVCLDB4RkYsMHg1NywKKyAgICAweDA2LDB4NkEsMHhBNCwweDU5LDB4ODAsMHhFRiww
eEI1LDB4QjUsMHhFNSwweDYxLDB4QTQsMHg2MSwweERFLDB4N0IsMHhFQSwweEE4LAorICAgIDB4
RTUsMHg2MSwweEE0LDB4NjEsMHgyRSwweDM5LDB4MjksMHgwOSwweDI2LDB4NkEsMHhDNSwweDYx
LDB4OTcsMHg5RiwweDJCLDB4MkYsCisgICAgMHg4NywweDdBLDB4MDYsMHg2MiwweEFCLDB4N0Is
MHg4MywweDhBLDB4NjcsMHg3MiwweDIzLDB4NDksMHg3OCwweDc4LDB4NUUsMHg1RSwKKyAgICAw
eDYzLDB4NTEsMHhFMiwweDQwLDB4RjcsMHhGNywweEJELDB4MjcsMHgyNiwweDZBLDB4MDIsMHg0
OSwweDJELDB4MkYsMHgyQiwweDBCLAorICAgIDB4NjcsMHg3MiwweDI2LDB4NzIsMHhGRiwweDUy
LDB4RkEsMHhERSwweDg4LDB4N0EsMHhFNSwweDY5LDB4QTAsMHg4QiwweEY3LDB4RkYsCisgICAg
MHhDOSwweDhBLDB4MDUsMHg2QSwweDBBLDB4MkIsMHgzRCwweDI1LDB4NEEsMHg5QiwweDQ2LDB4
NzIsMHg1NywweDVFLDB4RkEsMHhFMiwKKyAgICAweDg4LDB4N0EsMHgwNSwweDZBLDB4MEYsMHhC
NSwweEZELDB4QkEsMHgyQSwweDhCLDB4NjcsMHg3QSwweDJELDB4MzksMHhCRCwweDNELAorICAg
IDB4OEUsMHhCQywweDJBLDB4OEIsMHgzRCwweEJELDB4RDUsMHg1NSwweDE4LDB4RkYsMHg2RSww
eEI0LDB4MDIsMHgwQiwweDA5LDB4MkQsCisgICAgMHgzOCwweEZGLDB4MTgsMHhGRiwweEVELDB4
RUQsMHg3RCwweEQ1LDB4MzgsMHhGRiwweDE4LDB4RkYsMHg1RiwweERGLDB4NTUsMHg1NSwKKyAg
ICAweDE4LDB4RkYsMHg5NiwweEY2LDB4RTAsMHhFMCwweDY4LDB4NzgsMHg5NiwweEY2LDB4NTUs
MHhFRSwweDVDLDB4REUsMHg3NywweEQ3LAorICAgIDB4NzUsMHhFRSwweDU1LDB4RUUsMHhGNSww
eEZELDB4N0IsMHg3RCwweDc1LDB4RUUsMHgzNSwweEU2LDB4QjcsMHg5NywweDk3LDB4MkYsCisg
ICAgMHhGOCwweEZFLDB4OTYsMHhFRSwweDJELDB4MkQsMHgwRCwweDJELDB4RjgsMHhGRSwweDE4
LDB4RjcsMHhCOCwweEFBLDB4MkUsMHhBRSwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4Mjks
MHgwRSwweDBELDB4QUYsMHgxOCwweEZGLDB4MzgsMHhGNywweDI4LDB4MjgsMHg4MCwweDAyLAor
ICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhBQSwweEVFLDB4QkEsMHhCRSwweDE4LDB4RkYsMHhG
OCwweEY2LDB4QUEsMHhBQSwweEU4LDB4REUsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweDdB
LDB4N0UsMHhERiwweEVGLDB4RjcsMHhGRSwweEY4LDB4RjYsMHhCRiwweEZGLDB4N0YsMHhGRiwK
KyAgICAweEQ3LDB4RkUsMHhGOCwweEY2LDB4RjUsMHhGNywweEQ3LDB4NzcsMHgxOCwweEZGLDB4
RDcsMHhGNiwweEJGLDB4QUIsMHhFQiwweEFCLAorICAgIDB4RDcsMHhGRSwweEY4LDB4RjYsMHg3
NSwweEZELDB4RTUsMHhFNywweEQ3LDB4RkUsMHhGNywweEY2LDB4NTcsMHhERCwweEY3LDB4RkQs
CisgICAgMHhGNywweEY2LDB4QjcsMHhGNiwweDJFLDB4MjgsMHgyQSwweEE4LDB4MTgsMHhGRiww
eEQ3LDB4RjYsMHhBRSwweEVCLDB4RkIsMHhFRiwKKyAgICAweEQ3LDB4RkUsMHhGNywweEY2LDB4
NzUsMHhGRCwweEZGLDB4RkQsMHhGNywweEY2LDB4RDcsMHhGNiwweDdFLDB4M0UsMHg4QSwweDBB
LAorICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHg1NSwweDc1LDB4N0YsMHhGRiwweDE4LDB4RkYs
MHhGOCwweEY2LDB4RUYsMHgyRiwweEI1LDB4QjcsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiww
eDZCLDB4NzgsMHhGQSwweEZFLDB4MTcsMHhGRiwweEY4LDB4RjYsMHg2QiwweEZGLDB4RkQsMHg3
NywKKyAgICAweEY4LDB4RjYsMHhENywweEY2LDB4QTgsMHhCQSwweEE4LDB4Q0UsMHhGOCwweEY2
LDB4RDcsMHhGNiwweDhBLDB4QTgsMHhBQSwweEJFLAorICAgIDB4RjgsMHhGNiwweEQ3LDB4RjYs
MHhDOCwweEEyLDB4NkEsMHg3QSwweDE4LDB4RjcsMHhCNywweEY2LDB4N0YsMHg3RiwweERFLDB4
N0YsCisgICAgMHhENywweEY2LDB4OTYsMHhFRSwweDdBLDB4NUYsMHg1RiwweDdFLDB4OTYsMHhF
RSwweDc2LDB4RUUsMHhEQSwweDU4LDB4N0YsMHhGOSwKKyAgICAweDk2LDB4RUUsMHg1NSwweEVF
LDB4RkUsMHhFQSwweEFFLDB4RUEsMHg3NiwweEVFLDB4NTUsMHhFNiwweDIwLDB4ODAsMHgyMCww
eEU4LAorICAgIDB4NzUsMHhFRSwweDM0LDB4RTYsMHhGOCwweEZBLDB4QUEsMHhFQSwweDc1LDB4
RUUsMHgzNSwweEU2LDB4QkYsMHhGRSwweEZFLDB4RUEsCisgICAgMHg3NSwweEVFLDB4MzQsMHhF
NiwweEZFLDB4QTgsMHgwMiwweDJBLDB4NzUsMHhFRSwweDM0LDB4RTYsMHg5RiwweEJBLDB4QTIs
MHg4MCwKKyAgICAweDc2LDB4RUUsMHg1NSwweEU2LDB4QUYsMHgwQywweEI3LDB4MjUsMHg5Niww
eEVFLDB4NzYsMHhFRSwweDIyLDB4MjYsMHgyRSwweEJCLAorICAgIDB4OTYsMHhFRSwweDU1LDB4
RTYsMHhGOCwweEVBLDB4RUEsMHhBQSwweDk2LDB4RUUsMHg1NSwweEVFLDB4MEEsMHgwMiwweDI5
LDB4MkYsCisgICAgMHhCNiwweEY2LDB4OTYsMHhFRSwweEZCLDB4N0YsMHg3RCwweDU1LDB4OTYs
MHhFRSwweDE0LDB4REUsMHg2MCwweDcwLDB4RTAsMHhFMCwKKyAgICAweEQzLDB4REQsMHgzMCww
eEM1LDB4NzYsMHhGQywweEU4LDB4RjAsMHg3MSwweENELDB4MzAsMHhDRCwweDA5LDB4RTIsMHhB
QSwweERDLAorICAgIDB4RjMsMHhERCwweDUxLDB4Q0QsMHgyRiwweEE5LDB4MkQsMHhCOSwweEY0
LDB4REQsMHhCMywweEQ1LDB4ODAsMHhFMCwweDgwLDB4MDIsCisgICAgMHhGNCwweERELDB4OTIs
MHhENSwweDgzLDB4QUEsMHhGQSwweDYwLDB4MTQsMHhFNiwweEIzLDB4RDUsMHgyRCwweDBGLDB4
QTksMHhCNSwKKyAgICAweDE0LDB4RTYsMHgxMCwweEM1LDB4MjAsMHhBMCwweEZBLDB4NUUsMHhC
MywweEQ1LDB4RjAsMHhDNCwweDgwLDB4NzgsMHg1NywweDc3LAorICAgIDB4MzAsMHhDNSwweEYw
LDB4QkMsMHg1OCwweEZGLDB4NTUsMHg1NSwweDMwLDB4QzUsMHhEMCwweEJDLDB4RkUsMHgzNiww
eDlGLDB4REYsCisgICAgMHgzMSwweENELDB4MkQsMHhBQywweDdBLDB4NzgsMHhFMCwweDgwLDB4
Q0YsMHhCQywweEVDLDB4QTMsMHgyQiwweDJELDB4M0YsMHgyRiwKKyAgICAweDMxLDB4Q0QsMHhC
MCwweEJDLDB4RkEsMHg0MCwweEEyLDB4Q0IsMHhDRiwweEJDLDB4NEUsMHhBQywweDNFLDB4Mzcs
MHg5NywweEJGLAorICAgIDB4NTEsMHhDRCwweEYwLDB4QzQsMHhBNSwweDI5LDB4ODksMHgyOSww
eDUxLDB4Q0QsMHgxMSwweEM1LDB4MEEsMHgyMiwweEE5LDB4Q0UsCisgICAgMHg1MiwweENELDB4
RDAsMHhCQywweEU4LDB4RTgsMHg3QywweERGLDB4NTIsMHhDRCwweENGLDB4QkMsMHhGNywweDlG
LDB4QUQsMHg4QiwKKyAgICAweDcyLDB4Q0QsMHgxMSwweEM1LDB4QjcsMHhCRCwweDlGLDB4M0Ys
MHg3MiwweENELDB4NTEsMHhDRCwweDI5LDB4M0QsMHhCNSwweEJELAorICAgIDB4QzgsMHg4Miww
eDI1LDB4NkEsMHgyMCwweEFBLDB4QUYsMHhENywweEU4LDB4ODIsMHg2NiwweDcyLDB4QTIsMHg4
MywweDhBLDB4RkQsCisgICAgMHhDNywweDgyLDB4ODcsMHg3QSwweEI4LDB4MkEsMHgyQSwweDJF
LDB4MDcsMHg4MywweEM4LDB4ODIsMHg1RiwweDdCLDB4RkYsMHg3RSwKKyAgICAweEU4LDB4ODIs
MHhBNywweDdBLDB4QUIsMHg4QiwweDg5LDB4MjMsMHgwOCwweDhCLDB4QTcsMHg3QSwweEY3LDB4
QjcsMHhCRiwweEJBLAorICAgIDB4MDksMHg4QiwweEE3LDB4N0EsMHg4RiwweEM2LDB4REUsMHg1
RiwweEU4LDB4ODIsMHhBNywweDgyLDB4RkIsMHg3NSwweEFCLDB4QTMsCisgICAgMHhFOCwweDgy
LDB4ODcsMHg3QSwweEUwLDB4MkEsMHgwQSwweDI4LDB4MDgsMHg4QiwweEE3LDB4N0EsMHhFRiww
eEJGLDB4RkEsMHg1QywKKyAgICAweEU4LDB4ODIsMHg4NiwweDdBLDB4MjAsMHhBOCwweDgwLDB4
QzEsMHhFOCwweDgyLDB4QTcsMHg3QSwweERFLDB4QUEsMHgzQSwweEU4LAorICAgIDB4MDksMHg4
QiwweEE4LDB4N0EsMHg3RiwweENGLDB4QUIsMHhBRiwweDA4LDB4OEIsMHhDOCwweDgyLDB4QkYs
MHhCMywweEUzLDB4NkEsCisgICAgMHgwOCwweDhCLDB4QTcsMHg4MiwweEFGLDB4RTIsMHhBQSww
eERBLDB4MDksMHg4QiwweEM4LDB4ODIsMHhENSwweEQ3LDB4MkIsMHhDNSwKKyAgICAweEM4LDB4
OEEsMHhFOCwweDgyLDB4RkQsMHg1OSwweDVGLDB4RjcsMHgwOCwweDhCLDB4QzgsMHg4MiwweEJC
LDB4QUEsMHhGQSwweDdBLAorICAgIDB4RTgsMHg4MiwweEM4LDB4ODIsMHhEOCwweEI4LDB4QUEs
MHg3QiwweDA5LDB4OEIsMHhDOCwweDgyLDB4MjIsMHg4MywweDBBLDB4RjksCisgICAgMHg4QSww
eDkzLDB4RTgsMHg4MiwweDJGLDB4RkQsMHg1RCwweDU1LDB4MTAsMHhDRCwweDA5LDB4OEIsMHgy
QiwweEY1LDB4NTUsMHg1NSwKKyAgICAweDU0LDB4RUUsMHgwOSwweDhCLDB4MDIsMHhBRiwweEQ1
LDB4NTUsMHg5NSwweEY2LDB4NEEsMHg5MywweDAwLDB4MDIsMHhBRiwweEQ1LAorICAgIDB4QjYs
MHhGNiwweEFFLDB4QkMsMHgwMCwweDAwLDB4MEEsMHhCRCwweEI3LDB4RjYsMHgxNCwweEU2LDB4
MDAsMHgwMCwweDAwLDB4OEQsCisgICAgMHg5NiwweEY2LDB4RjAsMHhCQywweDcwLDB4RTAsMHhD
MCwweDgwLDB4RDAsMHhCQywweDQ0LDB4NDksMHg1RSwweDVFLDB4NTgsMHg3OCwKKyAgICAweDQz
LDB4NDksMHgwMywweDQxLDB4QTIsMHhCOCwweEVFLDB4RkYsMHg2MywweDQ5LDB4MDMsMHg0OSww
eDBBLDB4QkEsMHhFQiwweDA5LAorICAgIDB4QTUsMHg1MSwweDQzLDB4NDksMHhDQSwweEFFLDB4
QkQsMHhFQiwweEE1LDB4NTksMHg2NCwweDUxLDB4NTUsMHg2RCwweEI3LDB4MzUsCisgICAgMHgy
NiwweDZBLDB4ODQsMHg1MSwweEE1LDB4QUYsMHgyOSwweDBGLDB4MDksMHg4QiwweDI2LDB4NzIs
MHgzRCwweDJELDB4MjksMHgyRiwKKyAgICAweDRBLDB4OUIsMHhFOCwweDhBLDB4QTksMHgwMiww
eDBBLDB4QTMsMHgyQSwweDlCLDB4QTgsMHg4QSwweDc4LDB4NzgsMHg2MCwweEYyLAorICAgIDB4
QTgsMHg4QSwweDQ3LDB4N0EsMHhENCwweEZBLDB4N0EsMHhGOCwweDY3LDB4ODIsMHhFNSwweDY5
LDB4RkEsMHhGMiwweDdFLDB4N0YsCisgICAgMHgwNiwweDcyLDB4QTUsMHg2MSwweDU2LDB4QTgs
MHhDQSwweDBBLDB4MjcsMHg3MiwweEE1LDB4NjEsMHg5NSwweDJBLDB4MEEsMHgyMiwKKyAgICAw
eDY3LDB4N0EsMHhDNSwweDYxLDB4NTcsMHhGRiwweEJFLDB4MkUsMHgyNywweDZBLDB4QTUsMHg1
OSwweDc2LDB4N0UsMHg3OCwweDYwLAorICAgIDB4QTUsMHg1OSwweDAzLDB4NDEsMHhERSwweEE4
LDB4MjAsMHhGOCwweEE1LDB4NTEsMHgwMywweDQxLDB4RjcsMHhBOCwweEI4LDB4NUYsCisgICAg
MHhBNiwweDUxLDB4MjQsMHg0OSwweDJGLDB4QUEsMHhBRSwweEZELDB4QTUsMHg1MSwweDIzLDB4
NDksMHhBRSwweEFDLDB4RUUsMHg3RiwKKyAgICAweDg0LDB4NTEsMHgyMywweDQ5LDB4MjAsMHhB
MiwweEVCLDB4RkQsMHhBNSwweDU5LDB4NDMsMHg0OSwweDNGLDB4RkYsMHhGRiwweEFELAorICAg
IDB4MDYsMHg2MiwweDg0LDB4NTksMHgyRiwweEFELDB4MkYsMHg4QiwweDY3LDB4NzIsMHhDNSww
eDYxLDB4N0QsMHg3QiwweEMyLDB4MjIsCisgICAgMHgyNiwweDZBLDB4QTQsMHg1OSwweEVELDB4
RjcsMHg3NiwweDY4LDB4NjcsMHg3MiwweEM1LDB4NjEsMHhBQiwweEFCLDB4MkQsMHgyOSwKKyAg
ICAweDY3LDB4NzIsMHhBNCwweDU5LDB4ODAsMHhBMCwweDcwLDB4N0MsMHhDNCwweDU5LDB4RTIs
MHgzOCwweEY4LDB4NUMsMHg1RSwweDU3LAorICAgIDB4QzUsMHg2MSwweEUyLDB4MzgsMHhCRiww
eDM1LDB4M0QsMHgyRCwweDY3LDB4N0EsMHhDNSwweDYxLDB4MkQsMHgwRiwweDhCLDB4QUIsCisg
ICAgMHg4OCwweDdBLDB4MjYsMHg3MiwweEJFLDB4OEUsMHhFQiwweDVFLDB4NjcsMHg3QSwweEU2
LDB4NjksMHhCOCwweEU4LDB4RkEsMHhERiwKKyAgICAweEM4LDB4OEEsMHgwNiwweDcyLDB4MkQs
MHgyNSwweDJGLDB4MkIsMHgyQSwweDkzLDB4QzgsMHg4QSwweDRCLDB4RkIsMHg3RCwweEMzLAor
ICAgIDB4RTksMHg4QSwweDY3LDB4N0EsMHg1NiwweEY4LDB4QkMsMHhBOCwweEU5LDB4OEEsMHg4
OCwweDgyLDB4MjksMHhCNywweEQ3LDB4NUYsCisgICAgMHgwQSwweDhCLDB4QTgsMHg4MiwweDNB
LDB4M0YsMHgzNSwweDU1LDB4NzYsMHhGNiwweDhCLDB4OUIsMHgyRCwweDJELDB4RjUsMHhENSwK
KyAgICAweEY4LDB4RkUsMHgzMSwweEQ1LDB4MDAsMHgwMCwweDAyLDB4MDksMHgxOCwweEZGLDB4
RjgsMHhGRSwweDdBLDB4NTcsMHg3RCwweDU1LAorICAgIDB4RjgsMHhGRSwweDc1LDB4RTYsMHhF
MCwweEYwLDB4RjAsMHg3OCwweDU1LDB4RUUsMHg3NSwweEU2LDB4OEEsMHhFQiwweEFBLDB4MjAs
CisgICAgMHg3NSwweEVFLDB4NTUsMHhFRSwweEQ5LDB4RkYsMHhGRiwweEU1LDB4OTYsMHhFRSww
eDM1LDB4RTYsMHg5NywweDJGLDB4QkIsMHgyRiwKKyAgICAweEY4LDB4RkUsMHg5NiwweEY2LDB4
MkQsMHgyRiwweDA5LDB4MEIsMHgxOCwweEZGLDB4RjgsMHhGNiwweERCLDB4N0IsMHg3QiwweDdB
LAorICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHgyRiwweEE5LDB4MkIsMHgwRCwweDE4LDB4RkYs
MHhGOCwweEY2LDB4MDAsMHgwOCwweEEwLDB4RTAsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiww
eEJBLDB4QUEsMHhGQSwweEVFLDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGRiwweDdFLDB4NUUsMHg3
RiwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4RkYsMHhERCwweEVGLDB4RUQsMHhGNywweEZF
LDB4RjgsMHhGNiwweEZGLDB4N0UsMHhGRiwweEZGLAorICAgIDB4RDgsMHhGRSwweEY3LDB4RjYs
MHg1NywweDVGLDB4RDcsMHg3RiwweDE4LDB4RkYsMHhGOCwweEY2LDB4NkYsMHg1NSwweDc1LDB4
RDUsCisgICAgMHhGOCwweEY2LDB4RDcsMHhGNiwweEJBLDB4RkMsMHhEQywweEJBLDB4RjcsMHhG
NiwweEQ3LDB4RjYsMHhBQSwweDJBLDB4MEIsMHhBQSwKKyAgICAweDE4LDB4RkYsMHhGNywweEY2
LDB4NTcsMHg1RCwweEJGLDB4QkIsMHgxNywweEZGLDB4RjgsMHhGNiwweDU1LDB4REQsMHhGRiww
eEZELAorICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGRiwweEZELDB4RkYsMHg3NywweDE4LDB4
RkYsMHhGOCwweEY2LDB4RkYsMHg3QSwweEJELDB4RkYsCisgICAgMHhGOCwweEZFLDB4RjcsMHhG
NiwweERCLDB4RkYsMHhGRiwweEFFLDB4MTgsMHhGRiwweEY4LDB4RjYsMHhCQiwweEZBLDB4RkEs
MHhGRiwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4N0YsMHg3RCwweDdGLDB4OUIsMHhENyww
eEZFLDB4RjgsMHhGNiwweERELDB4RkQsMHhGNSwweEQ1LAorICAgIDB4RjgsMHhGNiwweEQ3LDB4
RjYsMHg4RSwweDlDLDB4RkUsMHgyQSwweEY4LDB4RjYsMHhENywweEY2LDB4QUEsMHhCMiwweEY4
LDB4QjIsCisgICAgMHhGNywweEY2LDB4OTgsMHhGNiwweEEwLDB4QUEsMHhFOCwweEFBLDB4RDcs
MHhGNiwweDk2LDB4RUUsMHhFMCwweEFFLDB4NkEsMHhGRSwKKyAgICAweDk2LDB4RjYsMHg3Niww
eEVFLDB4ODgsMHhEOCwweDU0LDB4QjIsMHg5NSwweEVFLDB4NTYsMHhFNiwweENBLDB4RkIsMHhG
RiwweEZFLAorICAgIDB4NzYsMHhFRSwweDU1LDB4RUUsMHgwMCwweEE3LDB4RDcsMHhBNSwweDc2
LDB4RjYsMHg1NSwweEU2LDB4RkYsMHhGRiwweDdDLDB4NzgsCisgICAgMHg3NiwweEVFLDB4MzUs
MHhFNiwweEJBLDB4RUEsMHhCMiwweEZBLDB4MzYsMHhFRSwweDU1LDB4RTYsMHg1NSwweERGLDB4
RDcsMHhCQSwKKyAgICAweDc1LDB4RUUsMHgzNSwweEU2LDB4RjYsMHhGRiwweDNGLDB4QjUsMHg3
NiwweEVFLDB4NTUsMHhFNiwweEYzLDB4MjMsMHhCMywweEZGLAorICAgIDB4OTYsMHhFRSwweDU1
LDB4RTYsMHhBRCwweEJCLDB4QUYsMHgyRiwweDk2LDB4RUUsMHg3NiwweEVFLDB4NzgsMHhGRSww
eDdGLDB4NkIsCisgICAgMHg5NiwweEVFLDB4NzYsMHhFRSwweDY1LDB4N0QsMHg1RiwweDdELDB4
OTUsMHhFRSwweDc2LDB4RUUsMHg1NSwweDU1LDB4N0IsMHg5OSwKKyAgICAweDk2LDB4RUUsMHg3
NiwweEVFLDB4QjUsMHg1NSwweDc1LDB4N0EsMHg5NiwweEVFLDB4MzQsMHhFNiwweEUyLDB4Njgs
MHhGRSwweDdFLAorICAgIDB4MTQsMHhFNiwweDcxLDB4Q0QsMHg1RSwweEZBLDB4RjgsMHhFOCww
eEY0LDB4REQsMHg1MSwweENELDB4NTcsMHg3RiwweEFBLDB4MkEsCisgICAgMHhEMywweERELDB4
NTEsMHhDRCwweDJELDB4MkUsMHgyQSwweDhBLDB4MTQsMHhERSwweEIzLDB4RDUsMHg4QSwweEFC
LDB4RUYsMHhBRiwKKyAgICAweDE0LDB4RTYsMHg5MiwweEQ1LDB4NzgsMHg3QSwweEVBLDB4NkEs
MHhEMywweERELDB4OTIsMHhENSwweDAxLDB4ODEsMHhBMywweDQyLAorICAgIDB4NzIsMHhENSww
eENGLDB4QkMsMHhGOCwweDY4LDB4RkMsMHg1RSwweDEwLDB4QzUsMHhDRiwweEJDLDB4QjgsMHhG
MywweDcyLDB4NTYsCisgICAgMHhGMCwweEM0LDB4Q0YsMHhCQywweDgxLDB4OEQsMHg3NSwweEU2
LDB4MTAsMHhDNSwweEFGLDB4QkMsMHgzQiwweEFFLDB4OUIsMHg5RSwKKyAgICAweDkxLDB4RDUs
MHhGMCwweEM0LDB4RUIsMHhFRiwweEFELDB4MkIsMHg1MSwweENELDB4NkUsMHhCNCwweEQ3LDB4
NUUsMHg1RSwweDc4LAorICAgIDB4MzEsMHhDRCwweEFGLDB4QkMsMHhFMywweENCLDB4OEIsMHhB
RCwweEFGLDB4QkMsMHgyRCwweEFDLDB4MzYsMHg5RSwweEJDLDB4NTQsCisgICAgMHg1MSwweENE
LDB4QUYsMHhCQywweDI5LDB4MkIsMHgwRiwweDJELDB4NzEsMHhDRCwweDMxLDB4QzUsMHhBQSww
eEVBLDB4RkYsMHg3RCwKKyAgICAweDMxLDB4Q0QsMHhDRiwweEJDLDB4REEsMHhGRSwweDJFLDB4
MkEsMHg3MiwweENELDB4RjAsMHhDNCwweEFELDB4MkYsMHhBQSwweDJBLAorICAgIDB4NzIsMHhD
RCwweDUxLDB4Q0QsMHg1RCwweDVFLDB4MTYsMHg3QywweDcxLDB4Q0QsMHg1MSwweENELDB4MUQs
MHhGNywweEU0LDB4RUEsCisgICAgMHg4NywweDdBLDB4MjUsMHg2QSwweDdFLDB4RUUsMHhFRSww
eEFBLDB4QTcsMHg3QSwweDI1LDB4NkEsMHhCRCwweEZELDB4RkQsMHgyRSwKKyAgICAweEM3LDB4
N0EsMHg0NSwweDZBLDB4MkUsMHhENywweEY1LDB4REYsMHhDNywweDdBLDB4MjUsMHg2QSwweDAy
LDB4MkIsMHhGNywweEY1LAorICAgIDB4RTgsMHg4MiwweDQ1LDB4NzIsMHgyQSwweDBCLDB4QUYs
MHhGRCwweEU4LDB4ODIsMHg4NiwweDdBLDB4QUEsMHhCMCwweDJBLDB4QkQsCisgICAgMHhFOCww
eDgyLDB4QTcsMHg3QSwweEZBLDB4NjAsMHhDOCwweEZELDB4RTgsMHg4MiwweDg3LDB4N0EsMHhB
MywweDg5LDB4Q0EsMHg4MiwKKyAgICAweEU4LDB4ODIsMHg4NywweDdBLDB4MDgsMHgyMCwweEFB
LDB4NjIsMHhFOCwweDgyLDB4ODYsMHg3QSwweDcwLDB4RjAsMHhCQSwweEVCLAorICAgIDB4RTgs
MHg4MiwweEE3LDB4N0EsMHg0OSwweEY5LDB4RjksMHhFQiwweEU4LDB4OEEsMHhBNywweDdBLDB4
OTIsMHgyQSwweEJFLDB4QUYsCisgICAgMHhFOCwweDgyLDB4QTcsMHg3QSwweDJCLDB4QUYsMHg1
NiwweEE2LDB4RTgsMHg4MiwweEM3LDB4ODIsMHgwNywweEExLDB4MDUsMHhBRCwKKyAgICAweEM4
LDB4OEEsMHhFOCwweDgyLDB4QjUsMHhGNSwweDk1LDB4RUMsMHgwOCwweDhCLDB4QzgsMHg4Miww
eEVCLDB4RUEsMHhFOSwweERGLAorICAgIDB4MDksMHg4QiwweEM4LDB4ODIsMHg3QiwweEZCLDB4
RkQsMHgyRSwweDA5LDB4OEIsMHhDOCwweDgyLDB4N0YsMHhGQiwweEE5LDB4MzcsCisgICAgMHhF
OCwweDhBLDB4QzgsMHg4MiwweEVCLDB4NDUsMHg4NiwweDA0LDB4MDgsMHg4QiwweEM4LDB4ODIs
MHgzNSwweEE1LDB4RkUsMHhCRSwKKyAgICAweDA5LDB4OEIsMHhDOCwweDgyLDB4RUEsMHhGMiww
eEZGLDB4QTcsMHgwOSwweDhCLDB4QzgsMHg4MiwweDNFLDB4OTMsMHhGQiwweDdDLAorICAgIDB4
MjksMHg4QiwweEU4LDB4ODIsMHhBNywweDVELDB4NjksMHhBOSwweDI5LDB4OEIsMHhFOCwweDgy
LDB4MEYsMHg4RiwweDZGLDB4N0YsCisgICAgMHhFQywweEEzLDB4MDksMHg4QiwweDBGLDB4NzUs
MHg1NSwweDU1LDB4QjMsMHhERCwweDA5LDB4OEIsMHgwQSwweEJELDB4NTUsMHg1NSwKKyAgICAw
eDU1LDB4RUUsMHgyOSwweDhCLDB4MDAsMHhBQSwweEZELDB4NTUsMHgzMiwweENELDB4ODQsMHg1
MSwweDc4LDB4NzgsMHg3QSwweDdGLAorICAgIDB4NDMsMHg0OSwweEUyLDB4MzgsMHhCRiwweEQ0
LDB4QkUsMHgwQSwweDg0LDB4NTEsMHgwMywweDQxLDB4QUQsMHhGRCwweEVGLDB4NkEsCisgICAg
MHhBNCwweDUxLDB4MjMsMHg0MSwweDhCLDB4OEIsMHhCRSwweEY3LDB4QTUsMHg1OSwweDQzLDB4
NDksMHgyRSwweDNFLDB4MkYsMHgyRCwKKyAgICAweDI2LDB4NzIsMHhDNSwweDYxLDB4M0QsMHhC
RCwweEJELDB4QjUsMHhDOCwweDhBLDB4MjYsMHg3MiwweDBGLDB4MEIsMHhBRCwweEI1LAorICAg
IDB4MkEsMHg5QiwweEE3LDB4ODIsMHgwMiwweDJCLDB4QUQsMHhBRCwweDI5LDB4OUIsMHhDOSww
eDhBLDB4NkEsMHhBQSwweDIwLDB4MEEsCisgICAgMHgwQSwweDlCLDB4NDcsMHg3QSwweDdFLDB4
RkMsMHhGOCwweEY4LDB4NjcsMHg3QSwweDA2LDB4NzIsMHhERCwweEVGLDB4RUYsMHgyQywKKyAg
ICAweDg3LDB4ODIsMHhFNiwweDY5LDB4NUQsMHg3RSwweEZBLDB4RTIsMHg0NywweDdBLDB4RTUs
MHg2OSwweDFELDB4QjUsMHhENywweEY3LAorICAgIDB4ODgsMHg3QSwweDI2LDB4NzIsMHgyRSww
eEEzLDB4MEYsMHhFRCwweDg4LDB4ODIsMHgwNSwweDYyLDB4NzgsMHhGOCwweDdFLDB4NTcsCisg
ICAgMHhFNiwweDYxLDB4NDMsMHg0OSwweDVFLDB4NzAsMHhDMCwweDgwLDB4ODQsMHg1MSwweEMy
LDB4MzgsMHhERiwweDVFLDB4RkEsMHhBMCwKKyAgICAweDQ0LDB4NDksMHgwMywweDQxLDB4RkQs
MHg3NSwweEE5LDB4QTgsMHg2NCwweDQ5LDB4MDMsMHg0MSwweEUzLDB4QkYsMHhFNywweDlCLAor
ICAgIDB4ODUsMHg1MSwweDAzLDB4NDEsMHg5NSwweEZGLDB4QUYsMHgwQSwweEE1LDB4NTksMHg0
MywweDQ5LDB4MkQsMHgyRCwweDJFLDB4MkYsCisgICAgMHgyNiwweDZBLDB4QzUsMHg1OSwweEI5
LDB4QUQsMHhBRCwweEVELDB4ODcsMHg3MiwweDA2LDB4NkEsMHhCQiwweEZGLDB4OUYsMHgzQiwK
KyAgICAweEE4LDB4N0EsMHgyNiwweDZBLDB4N0YsMHhGQiwweEFBLDB4MDIsMHg2NywweDcyLDB4
MDYsMHg2MiwweDJCLDB4MkEsMHg4OCwweDc4LAorICAgIDB4NjcsMHg3MiwweDYzLDB4NTEsMHg3
OCwweDU4LDB4NUUsMHg1RiwweDQzLDB4NDksMHhDMiwweDM4LDB4REEsMHg1QSwweEY4LDB4Rjgs
CisgICAgMHhFNSwweDYxLDB4MjMsMHg0MSwweDJELDB4QUQsMHhBRCwweEI1LDB4MjYsMHg3Miww
eEE1LDB4NTksMHgwMiwweDJCLDB4QTcsMHg3NSwKKyAgICAweDI3LDB4NzIsMHhDNSwweDYxLDB4
RTgsMHhFOCwweEZFLDB4QTksMHgyNywweDcyLDB4QTUsMHg2MSwweDlGLDB4OTUsMHgxRiwweDlF
LAorICAgIDB4RTksMHg4QSwweDQ3LDB4N0EsMHgyRCwweEE5LDB4MkQsMHg4OSwweDRBLDB4OTMs
MHhBOCwweDgyLDB4OEEsMHhGQSwweDdCLDB4NUYsCisgICAgMHhDOSwweDhBLDB4NDcsMHg3QSww
eDY4LDB4RUEsMHhBQiwweEE1LDB4QTgsMHg4MiwweDY3LDB4N0EsMHhBQiwweDBCLDB4MkYsMHhB
MiwKKyAgICAweDI5LDB4OTMsMHg4OCwweDdBLDB4N0QsMHhGRiwweEZFLDB4RTIsMHg0QSwweDkz
LDB4ODgsMHg3QSwweDBGLDB4M0QsMHhENSwweEQ1LAorICAgIDB4QjYsMHhGNiwweDA5LDB4OEIs
MHgwQiwweDJGLDB4QUQsMHhCNSwweEQ3LDB4RkUsMHhEMywweERELDB4MDAsMHgwMCwweDAyLDB4
MDksCisgICAgMHhENywweEZFLDB4NTUsMHhFRSwweDY4LDB4NzgsMHg1OCwweERBLDB4NzYsMHhF
RSwweDU1LDB4RUUsMHhGRiwweEJCLDB4QkIsMHg2OSwKKyAgICAweDc1LDB4RUUsMHgxNSwweEVF
LDB4MkEsMHhBMiwweEE4LDB4RTIsMHg5NiwweEVFLDB4NTUsMHhFRSwweDM3LDB4MkQsMHgwNSww
eDJELAorICAgIDB4RjgsMHhGRSwweEI2LDB4RjYsMHgyOSwweDJELDB4MEQsMHgyRCwweDE4LDB4
RkYsMHhGOCwweEY2LDB4N0UsMHhGRiwweEZGLDB4REIsCisgICAgMHgzOSwweEZGLDB4RjgsMHhG
RSwweEJELDB4QkQsMHhFRiwweDI5LDB4MzksMHhGRiwweDE4LDB4RkYsMHg1RiwweDZGLDB4N0Ys
MHg1RiwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4QUEsMHhBOCwweEEyLDB4QUEsMHgxOCww
eEZGLDB4RjgsMHhGNiwweEZCLDB4RUIsMHg5MiwweDVFLAorICAgIDB4MTgsMHhGRiwweEY4LDB4
RjYsMHhENywweDc3LDB4REYsMHhGRiwweEQ3LDB4RkUsMHhGOCwweEY2LDB4NzcsMHhERCwweEY1
LDB4RjUsCisgICAgMHhGOCwweEY2LDB4RDcsMHhGNiwweEFDLDB4RUEsMHhFOCwweEVBLDB4Rjgs
MHhGNiwweEQ3LDB4RjYsMHhBMiwweDhBLDB4QUIsMHhBRSwKKyAgICAweEY3LDB4RjYsMHhENyww
eEY2LDB4QUEsMHgwRSwweEFBLDB4QUEsMHgxOCwweEZGLDB4RDcsMHhGNiwweEJGLDB4QkIsMHhC
QiwweEFBLAorICAgIDB4RjcsMHhGRSwweDE4LDB4RjcsMHhBRSwweEJFLDB4QkEsMHhBQSwweDE4
LDB4RkYsMHhGNywweEY2LDB4RkYsMHhGNywweEZGLDB4N0UsCisgICAgMHhEOCwweEZFLDB4Rjcs
MHhGNiwweDU1LDB4RjUsMHhERCwweEZELDB4RjcsMHhGRSwweEY4LDB4RjYsMHhGRiwweEZGLDB4
RkYsMHhFRiwKKyAgICAweDE5LDB4RkYsMHhGNywweEY2LDB4REYsMHhGRiwweERELDB4RkQsMHgx
OCwweEZGLDB4RjcsMHhGNiwweEZGLDB4N0QsMHhFRCwweEZGLAorICAgIDB4MTgsMHhGRiwweEY4
LDB4RjYsMHhGQSwweEZFLDB4N0YsMHg3RiwweEQ3LDB4RkUsMHhGOCwweEY2LDB4OTUsMHhENSww
eDU1LDB4NzUsCisgICAgMHhGNywweEY2LDB4RDgsMHhGNiwweDJBLDB4QTgsMHhBOCwweEFBLDB4
RjcsMHhGNiwweEQ3LDB4RjYsMHhCOCwweERCLDB4RTcsMHhGNiwKKyAgICAweEY3LDB4RjYsMHhC
NywweEY2LDB4N0UsMHg3RSwweDVFLDB4NUYsMHhCNywweEY2LDB4NzYsMHhFRSwweEFBLDB4RUIs
MHhFMiwweEZBLAorICAgIDB4OTYsMHhFRSwweDU1LDB4RUUsMHhBMCwweEM4LDB4RTIsMHhFQiww
eDc2LDB4RUUsMHg1NiwweEU2LDB4ODgsMHhBQywweEEwLDB4MDAsCisgICAgMHg3NiwweEVFLDB4
NTYsMHhFRSwweDIwLDB4MDIsMHhBQSwweEEyLDB4NzYsMHhFRSwweDE1LDB4RTYsMHhDOCwweDJB
LDB4QTIsMHg4MiwKKyAgICAweDc2LDB4RUUsMHgzNSwweEU2LDB4RkEsMHhFQSwweEYyLDB4RkEs
MHg1NSwweEVFLDB4MTQsMHhERSwweEZBLDB4RTgsMHhGOCwweEZBLAorICAgIDB4NTUsMHhFNiww
eDE0LDB4REUsMHgwQiwweDBCLDB4MkYsMHg4NSwweDc2LDB4RUUsMHg1NSwweEU2LDB4RUYsMHgy
QSwweDI5LDB4QkQsCisgICAgMHg5NiwweEVFLDB4NzYsMHhFRSwweEJELDB4N0YsMHhERCwweEY3
LDB4OTYsMHhFRSwweDc2LDB4RUUsMHg2RCwweEE3LDB4MjUsMHgzRiwKKyAgICAweDk2LDB4RUUs
MHg3NiwweEVFLDB4N0QsMHhGNSwweEZCLDB4RjgsMHg5NiwweEVFLDB4NzYsMHhFRSwweEZCLDB4
QkEsMHhGRiwweEZGLAorICAgIDB4OTYsMHhGNiwweDc2LDB4RUUsMHhFRiwweEVCLDB4OEIsMHhF
QiwweDk2LDB4RUUsMHgxNCwweEU2LDB4NkEsMHg2QSwweEU4LDB4NjgsCisgICAgMHgxNCwweEU2
LDB4RDQsMHhERCwweERBLDB4MDgsMHgwQSwweDI4LDB4MzQsMHhFNiwweEY0LDB4REQsMHg1RCww
eDdGLDB4RkIsMHhDQSwKKyAgICAweDE0LDB4RTYsMHhEMywweERELDB4NTUsMHg1NywweDdCLDB4
RTIsMHhGNCwweERELDB4QjMsMHhERCwweDhCLDB4MEEsMHhBRiwweEE4LAorICAgIDB4MTQsMHhF
NiwweDkyLDB4RDUsMHg2QSwweDdBLDB4QUEsMHhBMCwweEY0LDB4REQsMHhGMCwweEM0LDB4RUEs
MHhFQSwweDc4LDB4NzgsCisgICAgMHgxMCwweEM1LDB4OEUsMHhCNCwweEE4LDB4QkMsMHhGQSww
eERFLDB4Q0YsMHhCQywweEFGLDB4QkMsMHgwMCwweEYyLDB4RkUsMHhBQywKKyAgICAweEVGLDB4
QkMsMHg4RSwweEI0LDB4RTMsMHhGNywweDVGLDB4NzQsMHhEMCwweEM0LDB4NEQsMHhBQywweEEy
LDB4RUEsMHhGRSwweEQ3LAorICAgIDB4NTEsMHhDRCwweENGLDB4QkMsMHgwOSwweDA1LDB4OEQs
MHhBNSwweDUxLDB4Q0QsMHg4RSwweEI0LDB4NzgsMHhFMCwweEEwLDB4ODAsCisgICAgMHgzMSww
eENELDB4Q0YsMHhCQywweDI1LDB4RTUsMHhGNSwweEZGLDB4RjAsMHhCQywweEVDLDB4QTMsMHhE
RSwweEZDLDB4NUUsMHhGOCwKKyAgICAweDMxLDB4Q0QsMHg4RiwweEI0LDB4MDksMHgwRCwweDA5
LDB4MDksMHg1MSwweENELDB4MTAsMHhDNSwweDhCLDB4RkUsMHhBQywweDdBLAorICAgIDB4NzIs
MHhDRCwweEYwLDB4QzQsMHhCNywweEE3LDB4MkQsMHhBQSwweDkyLDB4RDUsMHgzMSwweEM1LDB4
QUQsMHhFRiwweEVDLDB4MkUsCisgICAgMHg5MywweEQ1LDB4NTEsMHhDRCwweEQ3LDB4NUYsMHg1
RiwweEZBLDB4NzEsMHhDRCwweDUxLDB4Q0QsMHhGMywweEZCLDB4RjYsMHg3RSwKKyAgICAweDg2
LDB4N0EsMHg0NiwweDcyLDB4QTgsMHhBNiwweEVFLDB4QTgsMHg4NiwweDdBLDB4NDYsMHg3Miww
eDI4LDB4QUIsMHgyQiwweEFBLAorICAgIDB4QTcsMHg3QSwweDQ1LDB4NzIsMHhERiwweDVGLDB4
RUEsMHg2MiwweDg2LDB4N0EsMHg0NSwweDcyLDB4NjgsMHg2MCwweDYwLDB4NDMsCisgICAgMHg4
NiwweDcyLDB4MjUsMHg3MiwweEZFLDB4OUYsMHhBQSwweEEwLDB4ODcsMHg3QSwweDQ2LDB4NzIs
MHgwMywweEJCLDB4N0UsMHg4RiwKKyAgICAweEM4LDB4ODIsMHgyNSwweDZBLDB4MkIsMHhBQiww
eERGLDB4NTcsMHhBNywweDgyLDB4MDUsMHg2QSwweDAwLDB4MDAsMHgwQiwweEJELAorICAgIDB4
RTgsMHg4MiwweDg3LDB4N0EsMHhFRSwweDJCLDB4QkIsMHg3NSwweEU4LDB4ODIsMHhBNywweDdB
LDB4RUYsMHhBQiwweEE5LDB4MjksCisgICAgMHhFOCwweDgyLDB4ODcsMHg3QSwweEVCLDB4N0Es
MHg4OCwweDBFLDB4RTgsMHg4MiwweEE4LDB4ODIsMHgwMywweDgyLDB4QUEsMHgyOCwKKyAgICAw
eEU4LDB4ODIsMHg4OCwweDgyLDB4MkEsMHhBMiwweDI4LDB4QjgsMHgwOSwweDhCLDB4QTcsMHg3
QSwweEZGLDB4REUsMHhCRSwweEU4LAorICAgIDB4RTgsMHg4MiwweEE3LDB4N0EsMHhBQiwweEUy
LDB4QzMsMHg4OSwweEU4LDB4ODIsMHhBOCwweDgyLDB4QTgsMHg4QSwweEFDLDB4RUIsCisgICAg
MHhFOCwweDgyLDB4QzgsMHg4MiwweDBBLDB4RkYsMHgyQiwweDJBLDB4MDksMHg4MywweEE3LDB4
N0EsMHgyRSwweEJGLDB4OUUsMHhGQSwKKyAgICAweDA5LDB4OEIsMHhDOCwweDgyLDB4M0EsMHg3
NywweEUzLDB4RjAsMHgwOCwweDhCLDB4QzgsMHg4MiwweDdBLDB4NkQsMHhGNSwweDk1LAorICAg
IDB4MDksMHg4QiwweEM4LDB4ODIsMHhDMSwweENGLDB4QUIsMHhENCwweDA4LDB4OEIsMHhDOCww
eDgyLDB4NUUsMHg3RSwweEZBLDB4N0YsCisgICAgMHgwOCwweDhCLDB4QzcsMHg4MiwweDgyLDB4
MDEsMHhDQiwweEJGLDB4MjksMHg4QiwweEM4LDB4ODIsMHhGNSwweDZGLDB4QTgsMHhFQiwKKyAg
ICAweDA5LDB4OEIsMHhDOSwweDgyLDB4QkYsMHgwMiwweDM4LDB4RkUsMHgwOSwweDhCLDB4Qzgs
MHg4MiwweDAwLDB4QjAsMHhCRSwweDk2LAorICAgIDB4MjksMHg4QiwweEM4LDB4N0EsMHhGQyww
eEZBLDB4RkEsMHg3RSwweEM5LDB4ODIsMHg4NCwweDUxLDB4NzgsMHg2OCwweEY4LDB4NzgsCisg
ICAgMHg2MywweDQ5LDB4MjMsMHg0OSwweEVGLDB4MkUsMHg2QywweEYwLDB4ODQsMHg1MSwweDQz
LDB4NDksMHhFQiwweEJFLDB4QUYsMHhERCwKKyAgICAweDg0LDB4NTEsMHg0NCwweDQ5LDB4RjUs
MHg1RiwweEJFLDB4M0EsMHhDNSwweDYxLDB4NjQsMHg1MSwweEJELDB4MzUsMHhBRiwweEFGLAor
ICAgIDB4RTYsMHg2OSwweEE1LDB4NjEsMHgzOCwweEFGLDB4QjksMHgyOSwweEE4LDB4ODIsMHhF
NSwweDY5LDB4QUQsMHhCRiwweDJELDB4MjksCisgICAgMHhFOSwweDkyLDB4QTgsMHg4MiwweDg5
LDB4QjksMHhCQiwweEFBLDB4MDksMHg5MywweEE4LDB4OEEsMHg4OCwweEZBLDB4RkQsMHg3NywK
KyAgICAweEVBLDB4OTIsMHg2NywweDgyLDB4RTgsMHhGQSwweEZFLDB4N0UsMHg2NywweDdBLDB4
MjYsMHg3MiwweDFFLDB4MUEsMHg1OCwweDc3LAorICAgIDB4NjcsMHg3QSwweDI2LDB4NzIsMHhF
MCwweDAwLDB4M0MsMHhENSwweDQ2LDB4NzIsMHgwNiwweDcyLDB4RTUsMHhERSwweDM0LDB4OUMs
CisgICAgMHg2NywweDdBLDB4MDYsMHg2QSwweEZELDB4RUUsMHhBRSwweDBBLDB4NDYsMHg3Miww
eEU1LDB4NjEsMHg1RSwweEZBLDB4N0UsMHg1QywKKyAgICAweDA2LDB4NkEsMHhBNSwweDU5LDB4
RkEsMHhGMCwweDcyLDB4NTUsMHhBNSwweDU5LDB4MjMsMHg0OSwweDdBLDB4NjgsMHg1QSwweDdB
LAorICAgIDB4MjMsMHg0OSwweEUzLDB4NDAsMHgyOCwweEYwLDB4RTgsMHhCMiwweDY0LDB4NDks
MHgwMywweDQxLDB4QkQsMHg5RCwweDJGLDB4QjksCisgICAgMHg2NCwweDQ5LDB4MjMsMHg0OSww
eDM1LDB4QUQsMHhBRiwweEZFLDB4ODQsMHg1OSwweDIzLDB4NDksMHg5QSwweEFBLDB4MkEsMHgy
QSwKKyAgICAweDA1LDB4NjIsMHhBNSwweDU5LDB4M0YsMHhCRiwweEI1LDB4REQsMHg4OCwweDcy
LDB4QzUsMHg1OSwweDJCLDB4MjcsMHhBRiwweEFELAorICAgIDB4ODgsMHg3MiwweDQ2LDB4NzIs
MHhCRSwweEIyLDB4RTIsMHhDMiwweDY3LDB4NzIsMHhBNCwweDU5LDB4RTIsMHg2OCwweDdBLDB4
N0EsCisgICAgMHhBNCwweDU5LDB4NDMsMHg0OSwweEUwLDB4RTgsMHhGOCwweDdFLDB4NjQsMHg1
MSwweDAyLDB4NDEsMHhEQywweERDLDB4RkEsMHhFRiwKKyAgICAweEE1LDB4NTksMHgyMywweDQ5
LDB4QkQsMHhBRiwweEJELDB4M0IsMHg0NywweDcyLDB4ODQsMHg1OSwweEY1LDB4RDUsMHhCRCww
eDJGLAorICAgIDB4MjcsMHg3MiwweEM2LDB4NjksMHhBNSwweEI3LDB4QUEsMHg4OCwweEE4LDB4
ODIsMHgwNiwweDZBLDB4RDUsMHhGNSwweEI1LDB4MEEsCisgICAgMHgwOSwweDkzLDB4NjcsMHg3
QSwweEVELDB4RkYsMHhBRSwweEEyLDB4QzksMHg4QSwweDI2LDB4NzIsMHhFMCwweDdBLDB4Nzgs
MHhGQSwKKyAgICAweDg4LDB4ODIsMHgyNiwweDcyLDB4MkYsMHg5RCwweEZGLDB4RkIsMHhFOSww
eDhBLDB4ODcsMHg4MiwweEFCLDB4ODMsMHgwOSwweDI1LAorICAgIDB4NEEsMHg5MywweEM4LDB4
ODIsMHg2MiwweDZBLDB4RUIsMHg1NSwweEM5LDB4ODIsMHg2NywweDdBLDB4QjcsMHhERiwweDdB
LDB4NzgsCisgICAgMHgwQywweDlDLDB4QTgsMHg4MiwweDJELDB4RkQsMHhGRCwweEY1LDB4QjYs
MHhGNiwweDRBLDB4OTMsMHgwQiwweEFELDB4RjUsMHg1NSwKKyAgICAweDc2LDB4RjYsMHgxMSww
eEM1LDB4MDAsMHg4MCwweDJCLDB4QUQsMHg3NiwweEVFLDB4NTUsMHhFRSwweEZFLDB4QjUsMHhC
NSwweEI1LAorICAgIDB4NzYsMHhFRSwweDU1LDB4RUUsMHhFOCwweEFFLDB4N0UsMHg1RSwweEQ3
LDB4RjYsMHg1NSwweEVFLDB4QkQsMHhBNywweEFGLDB4QTUsCisgICAgMHgxOCwweEZGLDB4Qjcs
MHhGNiwweEFELDB4MkYsMHhBRiwweDJCLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhCQSwweEY4LDB4
RkEsMHhCRSwKKyAgICAweDM5LDB4RkYsMHhGOCwweEY2LDB4ODcsMHhBRCwweEFELDB4QUQsMHgx
OCwweEZGLDB4MzgsMHhGNywweDIyLDB4ODgsMHgwMiwweDA4LAorICAgIDB4MTgsMHhGRiwweEY4
LDB4RjYsMHhBQSwweEE4LDB4RTIsMHhBQSwweDE4LDB4RkYsMHhGOCwweEY2LDB4RkUsMHhGQSww
eEZGLDB4RkUsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEZFLDB4NzksMHhFQiwweERGLDB4
RDcsMHhGRSwweEY4LDB4RjYsMHhERCwweDU3LDB4REQsMHhGRiwKKyAgICAweEY4LDB4RjYsMHhE
NywweEY2LDB4RUEsMHhCMiwweEJFLDB4QkEsMHhGNywweEY2LDB4RDcsMHhGNiwweEFFLDB4OUUs
MHgzRSwweEE3LAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhFMywweDg4LDB4QUEsMHg4QSww
eEY4LDB4RkUsMHhGNywweEY2LDB4RkYsMHhGRiwweEY5LDB4RkYsCisgICAgMHhENywweEZFLDB4
RjcsMHhGNiwweDVGLDB4NTcsMHg1NywweDdGLDB4RjcsMHhGRSwweDE4LDB4RjcsMHgyRSwweDBC
LDB4QUEsMHhGRiwKKyAgICAweEY4LDB4RkUsMHgxNywweEVGLDB4MjgsMHhBMiwweEEyLDB4QUEs
MHgxNywweEZGLDB4RjgsMHhGNiwweEZELDB4NTcsMHg1RiwweEZCLAorICAgIDB4MTgsMHhGRiww
eEY4LDB4RjYsMHhBQiwweEZFLDB4QjksMHhERSwweDE4LDB4RkYsMHhGOCwweEY2LDB4RkYsMHhF
RSwweEFBLDB4QUEsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweDdFLDB4REEsMHg1RSwweEQ3
LDB4RDgsMHhGRSwweEY3LDB4RjYsMHhENywweEY3LDB4OUQsMHhCRCwKKyAgICAweEY3LDB4RjYs
MHhCNywweEVFLDB4QUEsMHhGRSwweDVGLDB4NzcsMHhENywweEY2LDB4OTYsMHhFRSwweDAwLDB4
QUEsMHhFRiwweERGLAorICAgIDB4RDcsMHhGNiwweDc2LDB4RUUsMHhBOCwweEUyLDB4RUIsMHhG
RiwweEI3LDB4RjYsMHg1NSwweEU2LDB4RTgsMHhGQywweEZDLDB4RkUsCisgICAgMHg3NiwweEVF
LDB4NTUsMHhFNiwweDhFLDB4QUUsMHhBOCwweDAwLDB4OTYsMHhFRSwweDc2LDB4RUUsMHg3RCww
eDc1LDB4RDUsMHg1NSwKKyAgICAweDc2LDB4RUUsMHg1NiwweEVFLDB4QkUsMHhGNCwweDlFLDB4
RkEsMHg3NSwweEVFLDB4NTYsMHhFRSwweEQ1LDB4RjUsMHhBRCwweEJCLAorICAgIDB4NzYsMHhF
RSwweDM1LDB4RTYsMHhGQSwweEZBLDB4ODIsMHhBMCwweDU1LDB4RUUsMHgxNCwweEU2LDB4RjIs
MHhGOCwweDIwLDB4MDAsCisgICAgMHg1NSwweEVFLDB4MTQsMHhERSwweEFGLDB4REYsMHhCRSww
eEIwLDB4NzUsMHhFRSwweDM1LDB4RTYsMHhBQiwweDJCLDB4MkIsMHhBRCwKKyAgICAweDk2LDB4
RUUsMHg3NiwweEVFLDB4QkYsMHgyRiwweDhGLDB4RUYsMHhCNiwweEY2LDB4NzUsMHhFRSwweEFG
LDB4QkYsMHhCQSwweDJBLAorICAgIDB4OTYsMHhFRSwweDU1LDB4RTYsMHhGQywweDdCLDB4Qjgs
MHgyOCwweDk2LDB4RUUsMHg1NSwweEU2LDB4MkIsMHhBRiwweDJCLDB4MDAsCisgICAgMHg5NSww
eEVFLDB4NzYsMHhFRSwweDZCLDB4RkIsMHhGMiwweEUyLDB4OTYsMHhFRSwweDE0LDB4RTYsMHhF
OCwweEUwLDB4NjIsMHhGOCwKKyAgICAweDM0LDB4RTYsMHhGNCwweERELDB4RjAsMHhGOCwweEZG
LDB4RDcsMHgxNCwweEU2LDB4RjQsMHhERCwweDAyLDB4QkEsMHhGQiwweDVELAorICAgIDB4MTQs
MHhFNiwweEQzLDB4REQsMHhBMCwweEJFLDB4RDcsMHhENiwweEQzLDB4RTUsMHhGNCwweERELDB4
NUQsMHhERCwweEVGLDB4RkYsCisgICAgMHgxNCwweEU2LDB4RDMsMHhENSwweDAyLDB4MDIsMHhF
MiwweDY4LDB4QjMsMHhENSwweEFGLDB4QkMsMHhGMCwweDc4LDB4NTgsMHg1RSwKKyAgICAweENG
LDB4QkMsMHg4RSwweEI0LDB4QjgsMHhBOCwweERGLDB4RUQsMHhBRiwweEJDLDB4NEQsMHhBQyww
eDAwLDB4QTgsMHhGQSwweDU4LAorICAgIDB4QUYsMHhCQywweDBDLDB4QTQsMHhBOCwweEVBLDB4
RUUsMHg3RiwweDhGLDB4QjQsMHgwRCwweEE0LDB4MkUsMHhCRCwweEI1LDB4QjUsCisgICAgMHgx
MSwweEM1LDB4NkYsMHhCNCwweDJBLDB4MkIsMHgyRCwweEFGLDB4NzIsMHhENSwweDEwLDB4QzUs
MHhBQSwweEFGLDB4MEQsMHgzNSwKKyAgICAweEIzLDB4RDUsMHhGMCwweEM0LDB4NUYsMHg3RSww
eDdBLDB4QUEsMHhGMCwweEM0LDB4MEQsMHhBNCwweDU4LDB4NTgsMHhEOCwweEQ4LAorICAgIDB4
MzEsMHhDRCwweDZFLDB4QjQsMHgwOSwweDI5LDB4OEQsMHg4OSwweDMxLDB4Q0QsMHhGMCwweEM0
LDB4RDAsMHhGMiwweDgwLDB4MDIsCisgICAgMHg3MiwweENELDB4MzEsMHhDRCwweEI1LDB4MEQs
MHgyRCwweDJGLDB4OTIsMHhENSwweDUxLDB4Q0QsMHhCRiwweEVBLDB4RkIsMHhGRiwKKyAgICAw
eDkyLDB4RDUsMHg1MSwweENELDB4QTMsMHhEQSwweERFLDB4QUMsMHg3MSwweEQ1LDB4NTEsMHhD
RCwweEY4LDB4RjgsMHhFQywweDMwLAorICAgIDB4QTcsMHg3QSwweDQ2LDB4N0EsMHhCQiwweDI4
LDB4OTIsMHg4MiwweEE3LDB4N0EsMHg0NSwweDcyLDB4RUEsMHgxMCwweEFBLDB4QUEsCisgICAg
MHhBNywweDdBLDB4NDUsMHg3MiwweEFBLDB4ODUsMHhBQSwweEEyLDB4QTcsMHg3QSwweDQ1LDB4
NkEsMHhGRSwweERDLDB4QjIsMHhBQSwKKyAgICAweEE3LDB4N0EsMHg2NiwweDcyLDB4NjksMHhF
OSwweEE2LDB4OUEsMHhBNywweDdBLDB4NDYsMHg3MiwweEFCLDB4QkEsMHg2QiwweDhGLAorICAg
IDB4QTcsMHg3QSwweDQ2LDB4NzIsMHg1NywweDVCLDB4RjcsMHhENywweDg3LDB4N0EsMHg0Niww
eDcyLDB4NTUsMHg2QiwweEZBLDB4QTIsCisgICAgMHg2NiwweDcyLDB4MjUsMHg2QSwweDlGLDB4
N0UsMHg1QiwweDI4LDB4QTcsMHg3QSwweDI1LDB4NkEsMHgwQSwweEFELDB4RkQsMHhGRiwKKyAg
ICAweEM3LDB4ODIsMHgyNSwweDZBLDB4MDAsMHg4QSwweEJGLDB4NTcsMHhFOCwweDhBLDB4NjYs
MHg3MiwweDhBLDB4QTAsMHhFRSwweEY1LAorICAgIDB4RTgsMHg4MiwweEE3LDB4N0EsMHhFQyww
eDFELDB4QkQsMHg1NSwweDA4LDB4OEIsMHhBNywweDdBLDB4RkYsMHhERiwweEFCLDB4QkEsCisg
ICAgMHhFOCwweDgyLDB4QTcsMHg4MiwweDA5LDB4MEIsMHhDMiwweDlGLDB4RTgsMHg4MiwweEE3
LDB4N0EsMHhBQSwweEJELDB4RUIsMHhBMywKKyAgICAweDA5LDB4ODMsMHhBNywweDdBLDB4RTgs
MHhGQSwweEJGLDB4QkIsMHhFOSwweDgyLDB4QzgsMHg4MiwweDBGLDB4RDUsMHg1QiwweDQyLAor
ICAgIDB4MDksMHg4QiwweEE3LDB4N0EsMHhFMiwweEVBLDB4RDgsMHhERiwweEU4LDB4OEEsMHhB
NywweDdBLDB4MkIsMHhCQiwweDNELDB4QUYsCisgICAgMHhFOCwweDhBLDB4QzgsMHg4MiwweEJD
LDB4OTYsMHhFRSwweEZDLDB4MDgsMHg4QiwweEM4LDB4ODIsMHg3NywweEQ0LDB4NUQsMHhCNywK
KyAgICAweDA5LDB4OEIsMHhDOCwweDgyLDB4OTUsMHhEOCwweEY4LDB4RkYsMHgwOSwweDhCLDB4
QTcsMHg4MiwweEJFLDB4RkEsMHhGOCwweERFLAorICAgIDB4RTgsMHg4QSwweEE4LDB4ODIsMHhC
QSwweEVBLDB4QUIsMHgwQSwweDA5LDB4OEIsMHhBNywweDgyLDB4QkMsMHhCQiwweDZCLDB4QUIs
CisgICAgMHgwOCwweDgzLDB4QTcsMHg3QSwweEZGLDB4N0YsMHhGRiwweEY4LDB4QTcsMHg3QSww
eDg0LDB4NTEsMHhGOCwweDdBLDB4NzgsMHg1RSwKKyAgICAweEE0LDB4NTksMHgyMywweDQxLDB4
NzgsMHhGQSwweEZGLDB4NTcsMHg4NCwweDQ5LDB4MjMsMHg0OSwweEFCLDB4MkQsMHg5QywweEZE
LAorICAgIDB4QzUsMHg1OSwweDY0LDB4NTEsMHhCQSwweEJGLDB4M0IsMHhGRCwweEM1LDB4NjEs
MHg4NCwweDU5LDB4M0UsMHhCRiwweEFCLDB4QkIsCisgICAgMHgyNiwweDcyLDB4QzUsMHg2MSww
eEE1LDB4QUIsMHgwOSwweDA5LDB4RTgsMHg4QSwweDI2LDB4NzIsMHhCRCwweEFGLDB4MEYsMHhB
QiwKKyAgICAweEU5LDB4OTIsMHhBOCwweDhBLDB4MkIsMHg4MywweEFBLDB4RUMsMHhDOCwweDky
LDB4NDYsMHg3QSwweEU4LDB4RjgsMHhGRSwweDdFLAorICAgIDB4ODgsMHg4MiwweDA1LDB4NzIs
MHhCMCwweERFLDB4N0YsMHhGRSwweDQ2LDB4N0EsMHhFNSwweDY5LDB4RUEsMHhCQSwweDdGLDB4
RUMsCisgICAgMHgyNiwweDcyLDB4QzUsMHg2OSwweDAwLDB4MEEsMHgzRSwweERFLDB4MjYsMHg3
MiwweEM1LDB4NjEsMHg4OCwweEU4LDB4RkEsMHhCRiwKKyAgICAweDI2LDB4NzIsMHg4NCwweDU5
LDB4MDAsMHhGRSwweEZCLDB4N0UsMHgyNiwweDcyLDB4ODQsMHg1OSwweEU4LDB4QkUsMHg1Riww
eDVELAorICAgIDB4QTUsMHg1OSwweDIzLDB4NDksMHhBQSwweEZDLDB4NzgsMHhFQSwweDY0LDB4
NTEsMHgwMiwweDQ5LDB4NDgsMHhFQSwweENGLDB4ODAsCisgICAgMHg4NCwweDUxLDB4MDMsMHg0
OSwweERELDB4QkIsMHhFQSwweDJBLDB4NjQsMHg0OSwweDIzLDB4NDksMHhGRiwweDVDLDB4REYs
MHg5NywKKyAgICAweDQzLDB4NDksMHgwMiwweDQ5LDB4MjgsMHhFOCwweEVBLDB4MDAsMHhDNSww
eDU5LDB4MjMsMHg0OSwweEFGLDB4MkQsMHhCRiwweDA5LAorICAgIDB4MjcsMHg2QSwweEE0LDB4
NTksMHhGRCwweEJELDB4QTksMHgyRSwweDQ3LDB4NkEsMHhFNSwweDYxLDB4OEQsMHgwMiwweEIw
LDB4RkYsCisgICAgMHg2NywweDcyLDB4RTUsMHg2MSwweDgwLDB4RjIsMHg3QiwweERELDB4NDYs
MHg3MiwweEM1LDB4NjEsMHg3RSwweEUyLDB4QUEsMHhGQSwKKyAgICAweEE1LDB4NTksMHg0Myww
eDQ5LDB4N0UsMHhEOCwweDUwLDB4NzAsMHhBNSwweDU5LDB4MDIsMHg0MSwweEZGLDB4QjcsMHgy
RiwweDBCLAorICAgIDB4QzUsMHg2MSwweDQ0LDB4NTEsMHhBRCwweEFCLDB4QTIsMHgwOCwweDY3
LDB4N0EsMHhBNSwweDYxLDB4MkQsMHgwRCwweEJELDB4QjksCisgICAgMHg4NywweDgyLDB4MjYs
MHg3MiwweDVGLDB4NTcsMHhBRiwweDgxLDB4MkEsMHg5MywweDI2LDB4NzIsMHhBRCwweDJELDB4
MkQsMHhBRiwKKyAgICAweDJBLDB4OTMsMHhDNywweDhBLDB4RUEsMHg2MCwweEU4LDB4NjIsMHhD
OCwweDhBLDB4MjcsMHg3MiwweEZFLDB4RjgsMHhGOCwweDU4LAorICAgIDB4RTksMHg4QSwweDQ3
LDB4N0EsMHhCRCwweDM1LDB4MkQsMHgzRCwweEU5LDB4OEEsMHg0NiwweDcyLDB4QkYsMHhGRSww
eEY4LDB4NjAsCisgICAgMHhBOCwweDgyLDB4MDYsMHg2QSwweDIwLDB4MjIsMHhCQSwweDVGLDB4
QTgsMHg3QSwweEM1LDB4NjEsMHg4OCwweEFBLDB4RUUsMHhENSwKKyAgICAweEM4LDB4ODIsMHgw
NiwweDZBLDB4MDIsMHgwMiwweDJCLDB4QjUsMHgyQSwweDhCLDB4ODcsMHg3QSwweDJFLDB4MkUs
MHgzRiwweDk1LAorICAgIDB4QjMsMHhERCwweDZCLDB4OTMsMHgwQiwweDJELDB4MzUsMHhGNSww
eDU2LDB4RUUsMHg5MywweERELDB4MDAsMHgwMiwweDBCLDB4MDksCisgICAgMHg3NiwweEVFLDB4
MzUsMHhFNiwweEJBLDB4RjgsMHhCOCwweEZFLDB4QjcsMHhGNiwweDU1LDB4RUUsMHgyRCwweDJE
LDB4MkQsMHhBRCwKKyAgICAweEY3LDB4RkUsMHhCNywweEY2LDB4MDIsMHgwQiwweDAzLDB4OEIs
MHhENiwweEZFLDB4RjgsMHhGNiwweEZELDB4RDUsMHg3RCwweEZELAorICAgIDB4MTgsMHhGRiww
eEY4LDB4RjYsMHgwMiwweDBBLDB4MEQsMHgyRCwweDE4LDB4RkYsMHhGOCwweEY2LDB4MDAsMHg4
MCwweDgwLDB4QTAsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweDgyLDB4QTAsMHhDQSwweEFB
LDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGRiwweEQ3LDB4RkQsMHg3RiwKKyAgICAweDE4LDB4RkYs
MHhGOCwweEY2LDB4NUUsMHg1QiwweERGLDB4RDUsMHhENywweEZFLDB4RjgsMHhGNiwweDVCLDB4
NUYsMHg1NywweDc1LAorICAgIDB4RjcsMHhGNiwweEQ4LDB4RjYsMHg5QywweEEwLDB4MkEsMHhB
QSwweEQ3LDB4RkUsMHhGNywweEY2LDB4REYsMHhERCwweERGLDB4RkYsCisgICAgMHhEOCwweEZF
LDB4RjcsMHhGNiwweDU3LDB4NUQsMHg1RiwweEZGLDB4MTgsMHhGRiwweEY3LDB4RjYsMHg1NSww
eEQ1LDB4RkYsMHhGRCwKKyAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4NTcsMHhERCwweDM2LDB4
QUYsMHgxOCwweEZGLDB4RjgsMHhGNiwweEUzLDB4QUEsMHhFQywweEZBLAorICAgIDB4MTgsMHhG
RiwweEY4LDB4RjYsMHhBRiwweEFCLDB4QUIsMHhBQiwweDE4LDB4RkYsMHhGOCwweEY2LDB4RkYs
MHhERSwweEZGLDB4RUEsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEZGLDB4N0YsMHg1Riww
eEZFLDB4MTgsMHhGRiwweEQ4LDB4RjYsMHhBQSwweEJBLDB4RjIsMHhGQSwKKyAgICAweEY4LDB4
RjYsMHhENywweEY2LDB4MjAsMHhCOCwweEZCLDB4NUYsMHhGOCwweEY2LDB4QjcsMHhFRSwweEEw
LDB4Q0EsMHhFRSwweDVFLAorICAgIDB4RDcsMHhGNiwweDk2LDB4RUUsMHg3OCwweEZBLDB4RkUs
MHhGRSwweEI2LDB4RjYsMHg3NiwweEVFLDB4RkEsMHhFRSwweEZBLDB4REUsCisgICAgMHg5Niww
eEVFLDB4NTUsMHhFNiwweEU4LDB4RUEsMHg3OCwweDdFLDB4OTYsMHhFRSwweDU1LDB4RTYsMHhF
QSwweEZBLDB4QUYsMHgyRCwKKyAgICAweDk2LDB4RUUsMHg3NiwweEVFLDB4RkQsMHhGRCwweEU3
LDB4N0IsMHg3NiwweEVFLDB4NTUsMHhFRSwweDMwLDB4QTAsMHgyMCwweEFFLAorICAgIDB4NzYs
MHhFRSwweDU2LDB4RUUsMHhGQiwweEFBLDB4RjgsMHhCQywweDc2LDB4RUUsMHg1NSwweEVFLDB4
QUYsMHhCNywweEVBLDB4RTgsCisgICAgMHg3NiwweEVFLDB4NTUsMHhFRSwweDgyLDB4ODAsMHgz
QiwweDJELDB4NzYsMHhFRSwweDU1LDB4RUUsMHhENywweDUyLDB4NjgsMHg5OCwKKyAgICAweDU1
LDB4RUUsMHgzNSwweEU2LDB4NTgsMHg3MiwweEUwLDB4MjAsMHg1NSwweEVFLDB4MTQsMHhFNiww
eDBCLDB4MTUsMHg5RiwweDlDLAorICAgIDB4OTYsMHhFRSwweDM1LDB4RUUsMHhBMiwweEFCLDB4
RkYsMHhFNywweEI3LDB4RjYsMHgzNCwweEU2LDB4ODIsMHhBRSwweDdGLDB4NTUsCisgICAgMHhC
NywweEY2LDB4MzUsMHhFNiwweDJBLDB4QUUsMHhGRCwweDU1LDB4OTYsMHhFRSwweDU1LDB4RUUs
MHgyMCwweEEwLDB4RDcsMHhENSwKKyAgICAweDk2LDB4RUUsMHg1NSwweEVFLDB4MjIsMHgyRSww
eDJGLDB4MkEsMHg5NiwweEY2LDB4RjMsMHhERCwweDY4LDB4NjgsMHg2OCwweEY4LAorICAgIDB4
MTQsMHhFNiwweEQzLDB4REQsMHhCNywweEVGLDB4QUIsMHhBQSwweDE0LDB4RTYsMHhEMywweERE
LDB4RkYsMHhEQiwweEU2LDB4RkIsCisgICAgMHgxNCwweEU2LDB4RDMsMHhERCwweEY3LDB4NzUs
MHhGNSwweEFFLDB4MTQsMHhFNiwweEY0LDB4REQsMHg3OSwweEMzLDB4RTksMHg2QiwKKyAgICAw
eEY0LDB4RTUsMHgzMSwweENELDB4ODAsMHhFMCwweDcwLDB4NzAsMHgzMSwweEM1LDB4QUYsMHhC
QywweDU4LDB4NUYsMHhCNywweEZFLAorICAgIDB4RjAsMHhDNCwweDhFLDB4QjQsMHg1NywweEZC
LDB4QUUsMHg4MiwweEYwLDB4QzQsMHg0RCwweEFDLDB4REUsMHhGRiwweEVBLDB4RTIsCisgICAg
MHhBRiwweEJDLDB4MEMsMHhBNCwweDVGLDB4RjYsMHg4OCwweDAwLDB4OEUsMHhCNCwweEFCLDB4
OUIsMHhCRiwweDJFLDB4MjgsMHhBOCwKKyAgICAweEQwLDB4QkMsMHg4RSwweEI0LDB4RTMsMHhB
QiwweEZCLDB4QkYsMHgzMSwweEM1LDB4OEUsMHhCNCwweDJBLDB4QUQsMHhGRCwweEQ3LAorICAg
IDB4NzEsMHhDRCwweDZFLDB4QjQsMHgwMCwweDgwLDB4RkYsMHg1RiwweDEwLDB4QzUsMHgyQyww
eEFDLDB4NzgsMHhEQywweDU3LDB4OTUsCisgICAgMHgzMSwweENELDB4OEUsMHhCNCwweDI5LDB4
ODksMHgwQiwweDBCLDB4MzEsMHhDRCwweDEwLDB4QzUsMHgzQywweDE3LDB4RDcsMHhBRiwKKyAg
ICAweDkyLDB4RDUsMHgzMSwweENELDB4OEYsMHgyRCwweEE3LDB4QTUsMHg5MiwweEQ1LDB4NTEs
MHhDRCwweEJCLDB4MTgsMHhCQSwweEFFLAorICAgIDB4OTIsMHhENSwweDUxLDB4Q0QsMHhBQSww
eEVGLDB4OEUsMHhGMiwweDkyLDB4RDUsMHg1MSwweENELDB4OUUsMHhERSwweEZCLDB4RTIsCisg
ICAgMHhDNywweDdBLDB4NjYsMHg3MiwweDg5LDB4Q0IsMHhGRiwweEZGLDB4QTcsMHg3QSwweDg2
LDB4N0EsMHg5MiwweEEyLDB4OUUsMHgwQiwKKyAgICAweEE3LDB4N0EsMHg2NiwweDcyLDB4QTAs
MHhGMCwweDM4LDB4RjgsMHg2NywweDdBLDB4ODYsMHg3MiwweDVELDB4NUIsMHhEQiwweDc1LAor
ICAgIDB4QzcsMHg3QSwweDg2LDB4NzIsMHg1NSwweEY3LDB4RUIsMHhERiwweEE3LDB4N0EsMHg2
NiwweDcyLDB4MkEsMHgwQSwweDI4LDB4M0UsCisgICAgMHhBNywweDdBLDB4NjcsMHg3MiwweDdB
LDB4RkUsMHhGRiwweDg4LDB4ODYsMHg3QSwweDY1LDB4NkEsMHgwMiwweDA4LDB4QjIsMHg4MiwK
KyAgICAweEE3LDB4N0EsMHg0NSwweDcyLDB4RjcsMHhENywweEJCLDB4MkMsMHg4NywweDdBLDB4
NDYsMHg3MiwweDdFLDB4NjgsMHhBQSwweDhBLAorICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhG
RiwweEEzLDB4MDgsMHgwOCwweDg2LDB4N0EsMHg2NiwweDcyLDB4QTUsMHhGQiwweEVELDB4RkYs
CisgICAgMHg4NiwweDdBLDB4NDYsMHg3MiwweDAyLDB4NUYsMHg1NywweDdFLDB4QzgsMHg4Miww
eDI1LDB4NkEsMHgyMiwweEFGLDB4QkYsMHhERiwKKyAgICAweEU4LDB4ODIsMHg0NSwweDcyLDB4
MEEsMHg4MCwweEFGLDB4N0QsMHhFOCwweDgyLDB4ODcsMHg3QSwweEEwLDB4ODIsMHhBMiwweDNG
LAorICAgIDB4RTksMHg4QSwweEM4LDB4ODIsMHgyRCwweDM3LDB4REYsMHhERSwweEU4LDB4OEEs
MHhDOCwweDgyLDB4NjIsMHhDNCwweDZBLDB4QUUsCisgICAgMHgwOSwweDhCLDB4QzgsMHg4Miww
eDU5LDB4RjMsMHhFRCwweDE2LDB4RTgsMHg4QSwweEE4LDB4ODIsMHhBRiwweDJCLDB4RkUsMHhD
OCwKKyAgICAweEU4LDB4OEEsMHhBNywweDgyLDB4M0MsMHgyOCwweDIwLDB4RUQsMHhFOCwweDhB
LDB4QzgsMHg4MiwweEIwLDB4QzgsMHhFMiwweEMxLAorICAgIDB4RTgsMHg4QSwweEM4LDB4ODIs
MHg3OCwweDVFLDB4NDAsMHhCQSwweDA5LDB4OTMsMHhBNywweDgyLDB4REYsMHhBRSwweDJBLDB4
RTYsCisgICAgMHhFOCwweDhBLDB4QTcsMHg4MiwweDI5LDB4MDAsMHg4MiwweDBCLDB4RTgsMHg4
QSwweEM4LDB4ODIsMHgwQiwweERFLDB4QTYsMHhFOCwKKyAgICAweEU4LDB4ODIsMHg2NiwweDcy
LDB4RTAsMHg3MCwweDc0LDB4N0EsMHg2NiwweDcyLDB4ODQsMHg1MSwweDU4LDB4NUUsMHg1QSww
eDc4LAorICAgIDB4NjQsMHg1MSwweEUyLDB4NDAsMHhGQywweEY2LDB4N0UsMHhGRSwweDQ0LDB4
NDksMHhFMiwweDM4LDB4MDIsMHgzRiwweEJGLDB4NTcsCisgICAgMHg4NCwweDUxLDB4RTIsMHgz
OCwweDgyLDB4MkYsMHhGRiwweEQ1LDB4QTQsMHg1OSwweDAyLDB4NDEsMHgwMiwweDJCLDB4MkYs
MHgwRCwKKyAgICAweDQ2LDB4NzIsMHhDNSwweDYxLDB4MEQsMHgwRCwweDJGLDB4QTUsMHhDOCww
eDhBLDB4MjUsMHg3MiwweDBCLDB4MEQsMHhBRiwweDI1LAorICAgIDB4MjksMHg5MywweEE3LDB4
ODIsMHhGQiwweEJCLDB4MDksMHhBRiwweDA5LDB4OTMsMHg2NywweDgyLDB4NUUsMHhFQSwweEEw
LDB4RTgsCisgICAgMHg4OCwweDgyLDB4MDYsMHg3MiwweEVBLDB4RTAsMHhGQSwweDdDLDB4Njcs
MHg3QSwweDI2LDB4NzIsMHg3MiwweEYyLDB4Q0QsMHhBRCwKKyAgICAweDQ3LDB4N0EsMHhBNCww
eDYxLDB4N0EsMHg3QSwweEEwLDB4RTgsMHhFNiwweDY5LDB4NDQsMHg1MSwweDBBLDB4RUEsMHhE
OCwweDdFLAorICAgIDB4RTUsMHg2OSwweDQzLDB4NTEsMHhBMCwweEEzLDB4NkIsMHhENSwweEE1
LDB4NjEsMHgyMywweDQ5LDB4RTgsMHhFQiwweDdCLDB4NUEsCisgICAgMHg4NSwweDUxLDB4MDMs
MHg0OSwweDJBLDB4QkYsMHhERCwweDdGLDB4ODUsMHg1MSwweDAzLDB4NDksMHhBQSwweDBGLDB4
RkYsMHhCRCwKKyAgICAweDY0LDB4NDksMHgyMywweDQ5LDB4QTIsMHg4OCwweDgwLDB4NjMsMHg4
NCwweDUxLDB4MDIsMHg0MSwweEY3LDB4REYsMHhGRiwweDJGLAorICAgIDB4QTUsMHg1MSwweDQz
LDB4NDksMHhENSwweEQ1LDB4QTcsMHg4OCwweDA2LDB4NjIsMHg4NCwweDUxLDB4MjUsMHhCRCww
eEVELDB4NUQsCisgICAgMHgwNiwweDYyLDB4NjQsMHg1MSwweDIwLDB4QjgsMHhFQiwweEZELDB4
MDYsMHg2MiwweDg0LDB4NTEsMHgyMCwweEFCLDB4QTcsMHhENSwKKyAgICAweDA2LDB4NjIsMHhB
NSwweDUxLDB4QUIsMHhBRiwweENGLDB4REQsMHgwNiwweDYyLDB4ODQsMHg1MSwweDQwLDB4Q0Es
MHhFQiwweDVGLAorICAgIDB4QTUsMHg1OSwweDIzLDB4NDksMHhGQSwweEZFLDB4OUYsMHgzRiww
eDA2LDB4NkEsMHg2NCwweDUxLDB4QjUsMHhGNSwweEJCLDB4OEIsCisgICAgMHhFNSwweDY5LDB4
QzUsMHg2MSwweDVFLDB4N0YsMHg3RCwweEFFLDB4NjcsMHg3QSwweEM1LDB4NjEsMHg1RiwweEY1
LDB4QkQsMHgwQiwKKyAgICAweEE4LDB4ODIsMHg0NywweDdBLDB4MjUsMHgyNSwweEY3LDB4N0Es
MHhFOSwweDhBLDB4NDcsMHg3MiwweDJBLDB4MkEsMHhCRCwweERELAorICAgIDB4RTksMHg4QSww
eDg4LDB4ODIsMHhFMCwweDVBLDB4NTgsMHhDQiwweEE4LDB4ODIsMHgyNywweDcyLDB4NTgsMHg3
RSwweEJDLDB4RkEsCisgICAgMHg4OCwweDdBLDB4MjYsMHg3MiwweDJGLDB4REYsMHhGNSwweEU1
LDB4QTgsMHg4MiwweEM0LDB4NjEsMHhBMCwweEFBLDB4RUEsMHg3QSwKKyAgICAweDA2LDB4NkEs
MHhFMiwweDQwLDB4QTAsMHhBOCwweEZBLDB4N0UsMHhDNiwweDYxLDB4MjMsMHg0OSwweDJBLDB4
MEYsMHgyRCwweEI1LAorICAgIDB4NDcsMHg3MiwweEE1LDB4NTksMHgwQSwweEFGLDB4REYsMHhG
NSwweEM4LDB4ODIsMHhFNSwweDYxLDB4MEEsMHgyRiwweDJELDB4QUQsCisgICAgMHgyRSwweEFD
LDB4ODgsMHg3QSwweDJGLDB4MkYsMHhCRCwweEY1LDB4RjQsMHhFNSwweDZBLDB4OUIsMHgwMiww
eDBCLDB4MEYsMHhCNSwKKyAgICAweDU1LDB4RUUsMHg1MiwweEQ1LDB4MDAsMHgwMCwweEFBLDB4
QkQsMHhCNywweEZFLDB4MTQsMHhFNiwweDJCLDB4MEIsMHgyRiwweDJELAorICAgIDB4RjgsMHhG
RSwweEI3LDB4RkUsMHgwQiwweDJCLDB4MkEsMHgyQiwweEY4LDB4RkUsMHhCNywweEY2LDB4QTgs
MHhBQSwweDNFLDB4OUUsCisgICAgMHgxOCwweEZGLDB4QjgsMHhGNiwweDBBLDB4MEEsMHgyQSww
eDhCLDB4MTgsMHhGRiwweEY4LDB4RjYsMHhBMiwweDgwLDB4ODAsMHg4MCwKKyAgICAweDE4LDB4
RkYsMHhGOCwweEY2LDB4QTIsMHg4RSwweEZBLDB4RUEsMHgxNywweEZGLDB4RjgsMHhGNiwweDdF
LDB4RkYsMHhGRiwweEZGLAorICAgIDB4RDgsMHhGRSwweEY3LDB4RjYsMHg1NiwweDdGLDB4Nzcs
MHg3NSwweEY3LDB4RkUsMHhGOCwweEY2LDB4RkYsMHhGRiwweEVGLDB4RkIsCisgICAgMHhGNyww
eEY2LDB4RDcsMHhGNiwweEFCLDB4OEIsMHhFMiwweEIwLDB4RjcsMHhGNiwweEQ4LDB4RjYsMHhB
OCwweDBFLDB4MkEsMHg4RSwKKyAgICAweEY4LDB4RkUsMHhGNywweEY2LDB4RkYsMHhGRiwweEJG
LDB4RkYsMHgxOCwweEZGLDB4RDcsMHhGNiwweEZGLDB4RUIsMHhFQSwweEFBLAorICAgIDB4MTgs
MHhGRiwweEY3LDB4RjYsMHhGQiwweEZELDB4RkYsMHg3RiwweEY4LDB4RkUsMHgxOCwweEY3LDB4
QUUsMHhBQSwweEVBLDB4QkUsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEZCLDB4RkUsMHhG
RSwweERGLDB4RjgsMHhGRSwweDE4LDB4RjcsMHhBQSwweEI4LDB4QUEsMHhBQSwKKyAgICAweDE4
LDB4RkYsMHhGOCwweEY2LDB4RkYsMHg3RiwweDVFLDB4NzYsMHgxOCwweEZGLDB4RDcsMHhGNiww
eEZBLDB4RkEsMHhGRSwweEVGLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg3NiwweDdFLDB4
QkYsMHg3NywweEQ3LDB4RjYsMHhCNywweEY2LDB4N0MsMHg3MCwweEEwLDB4RjgsCisgICAgMHhC
NywweEY2LDB4OTYsMHhFRSwweEU4LDB4RUUsMHg3OCwweEYwLDB4OTYsMHhFRSwweDc2LDB4RUUs
MHhEOCwweEYwLDB4N0IsMHg1NiwKKyAgICAweDc1LDB4RUUsMHgzNSwweEU2LDB4RjgsMHg3RSww
eEVBLDB4RkEsMHg3NSwweEVFLDB4MzUsMHhFNiwweDBCLDB4QUIsMHhCRiwweEZELAorICAgIDB4
NTUsMHhFRSwweDc2LDB4RTYsMHhCRCwweDAyLDB4MDIsMHgyMiwweDc2LDB4RUUsMHg1NSwweEVF
LDB4Q0UsMHhERSwweEQ1LDB4RDUsCisgICAgMHg3NiwweEVFLDB4NTUsMHhFRSwweEZGLDB4ODcs
MHgzQSwweEYyLDB4NzUsMHhFRSwweDU2LDB4RUUsMHhGQiwweEVGLDB4RjcsMHg1NSwKKyAgICAw
eDc2LDB4RUUsMHg1NSwweEVFLDB4QUQsMHhCRCwweEY5LDB4QjAsMHg3NiwweEVFLDB4NTUsMHhF
RSwweDY4LDB4RUIsMHgyQSwweEJFLAorICAgIDB4NzYsMHhFRSwweDE0LDB4RTYsMHhFQSwweEEw
LDB4MkEsMHgyMCwweDU1LDB4RUUsMHgxNCwweEU2LDB4RTAsMHhGMCwweEYwLDB4RjAsCisgICAg
MHg1NSwweEVFLDB4MTQsMHhFNiwweEFCLDB4RjksMHhENSwweEZGLDB4MzUsMHhFNiwweDE0LDB4
RTYsMHhGQSwweEQ3LDB4QjQsMHhGOCwKKyAgICAweDU1LDB4RUUsMHgxNCwweEU2LDB4QkIsMHgz
RiwweEJCLDB4M0YsMHg5NiwweEY2LDB4NTUsMHhFNiwweDlELDB4QUYsMHgwQiwweDIyLAorICAg
IDB4OTYsMHhGNiwweDc1LDB4RUUsMHg4OSwweEFCLDB4QzAsMHhFMCwweDk2LDB4RjYsMHhGMyww
eERELDB4NzgsMHg1RSwweDVDLDB4NUUsCisgICAgMHgxNCwweEU2LDB4RDMsMHhERCwweEFGLDB4
M0YsMHg5NSwweEFELDB4MzQsMHhFNiwweEY0LDB4RTUsMHhERCwweDhCLDB4OEYsMHhCNywKKyAg
ICAweDM1LDB4RTYsMHhGMywweERELDB4RkUsMHhFRSwweEI4LDB4N0EsMHgxNCwweEU2LDB4RjQs
MHhERCwweEIyLDB4MjAsMHgyMCwweEY5LAorICAgIDB4MTQsMHhFNiwweDMxLDB4Q0QsMHg3OCww
eDY4LDB4RjgsMHg3OCwweDUxLDB4Q0QsMHhGMCwweEM0LDB4NUYsMHg1NSwweDVDLDB4N0EsCisg
ICAgMHhGMCwweEM0LDB4Q0YsMHhCQywweDBBLDB4MDMsMHg2OSwweDQyLDB4RjAsMHhDNCwweEFG
LDB4QkMsMHhFQSwweEVGLDB4RjQsMHg3NywKKyAgICAweEQwLDB4QzQsMHhBRSwweEI0LDB4QkQs
MHgyRiwweDJBLDB4ODMsMHhDRiwweEJDLDB4RUMsMHhBMywweEY4LDB4NTgsMHg3OCwweDYwLAor
ICAgIDB4Q0YsMHhCQywweEVDLDB4QTMsMHg4MiwweEFCLDB4QUYsMHhBRCwweEFGLDB4QkMsMHgy
RCwweEFDLDB4QTgsMHhFRSwweDdGLDB4NUYsCisgICAgMHg4RSwweEI0LDB4RUMsMHhBMywweEEw
LDB4RUIsMHhGRSwweDc3LDB4Q0YsMHhCQywweEVDLDB4OUIsMHhCRiwweEJELDB4M0YsMHgzRCwK
KyAgICAweDMxLDB4Q0QsMHhEMCwweEJDLDB4MkQsMHgyQiwweDhCLDB4OEUsMHgzMSwweENELDB4
MTAsMHhDNSwweDI0LDB4RjQsMHhENywweDZCLAorICAgIDB4NzIsMHhENSwweDEwLDB4QzUsMHgy
QiwweDJCLDB4RkQsMHhGRiwweDcyLDB4RDUsMHgzMSwweENELDB4QTgsMHhBMiwweEE0LDB4RkYs
CisgICAgMHg5MiwweEQ1LDB4MzEsMHhDRCwweEFBLDB4ODMsMHhGRSwweERCLDB4OTIsMHhENSww
eDMxLDB4Q0QsMHhBMiwweEZBLDB4QUQsMHhGOSwKKyAgICAweEE3LDB4N0EsMHg0NSwweDZBLDB4
MjgsMHhBRiwweDNGLDB4RDUsMHhDNywweDdBLDB4NjUsMHg2QSwweDJBLDB4QkEsMHhBRSwweERC
LAorICAgIDB4QTcsMHg3QSwweDY2LDB4NzIsMHhBOCwweEVBLDB4QUEsMHhFRCwweEE3LDB4N0Es
MHg4NiwweDcyLDB4NTYsMHhCRiwweEEyLDB4QzIsCisgICAgMHhDNywweDdBLDB4ODYsMHg3Miww
eEZGLDB4N0UsMHhGQiwweEFCLDB4QzcsMHg3QSwweDY2LDB4NzIsMHhCNywweEIzLDB4QkIsMHhE
RSwKKyAgICAweEE3LDB4N0EsMHg4NywweDcyLDB4QUEsMHgzOCwweEJBLDB4QkUsMHhDOCwweDgy
LDB4NjYsMHg3MiwweEU1LDB4QkYsMHgwQiwweEFBLAorICAgIDB4QTcsMHg3QSwweDY2LDB4NzIs
MHhGRiwweEUyLDB4RjAsMHgwQSwweEM3LDB4ODIsMHg2NiwweDcyLDB4RkUsMHhFMiwweEVCLDB4
QjYsCisgICAgMHhBNywweDdBLDB4NDYsMHg3MiwweDhFLDB4RUIsMHhBQSwweDlBLDB4QTcsMHg3
QSwweDY2LDB4NzIsMHhEMywweEQ3LDB4QkIsMHhBRSwKKyAgICAweDg3LDB4N0EsMHg0NSwweDcy
LDB4NkEsMHhCOCwweDI4LDB4MDAsMHg4NywweDdBLDB4NDUsMHg3MiwweDdCLDB4RTMsMHg3Miww
eEMwLAorICAgIDB4ODYsMHg3QSwweDQ1LDB4NzIsMHhGRCwweDI1LDB4RkIsMHhERiwweDg3LDB4
N0EsMHgyNSwweDZBLDB4M0YsMHhCNywweEE3LDB4QTIsCisgICAgMHhDOCwweDgyLDB4NDUsMHg3
MiwweDAzLDB4MjcsMHhGNSwweEY3LDB4RTgsMHg4QSwweDQ2LDB4NzIsMHg4OCwweEFBLDB4M0Ys
MHg1NSwKKyAgICAweEU4LDB4OEEsMHg2NiwweDcyLDB4MkEsMHhBMCwweEFBLDB4QkQsMHhFOCww
eDgyLDB4QTcsMHg4MiwweDhBLDB4NkYsMHg4OSwweEJCLAorICAgIDB4RTgsMHg4MiwweEE3LDB4
N0EsMHg3NywweDZELDB4MkIsMHhBQSwweDA4LDB4OEIsMHhBNywweDgyLDB4RkQsMHhGNSwweEJG
LDB4MUUsCisgICAgMHhFOCwweDhBLDB4QzgsMHg4MiwweEZCLDB4NUUsMHhFQiwweDYyLDB4MDgs
MHg4QiwweEE3LDB4ODIsMHhBNiwweDhCLDB4QUIsMHg2RCwKKyAgICAweEU4LDB4ODIsMHhBOCww
eDgyLDB4QUMsMHhCQiwweEZBLDB4RkEsMHhFOCwweDgyLDB4ODcsMHg3QSwweDZBLDB4NjgsMHgy
QSwweDAyLAorICAgIDB4RTgsMHg4MiwweDg2LDB4NzIsMHg3RiwweEVBLDB4RkMsMHhFOCwweEE3
LDB4N0EsMHg4MywweDUxLDB4N0UsMHg3OCwweDc4LDB4NzgsCisgICAgMHg0MywweDQ5LDB4RTIs
MHgzOCwweEZFLDB4RkMsMHg3QSwweEZDLDB4MDMsMHg0MSwweEUyLDB4MzgsMHhGRSwweDlFLDB4
NUQsMHg3NywKKyAgICAweEUyLDB4MzgsMHg4MSwweDMwLDB4QUEsMHhEQSwweEFBLDB4QUMsMHg2
NCwweDUxLDB4QzIsMHgzOCwweDBGLDB4MkQsMHhGNSwweDU1LAorICAgIDB4RTUsMHg2OSwweDAz
LDB4NDksMHgwMiwweDBBLDB4QUYsMHhCRCwweDg3LDB4ODIsMHhBNCwweDYxLDB4MkIsMHhBRiww
eEY1LDB4NTUsCisgICAgMHgwOSwweDkzLDB4MjYsMHg3MiwweDJBLDB4MkIsMHhGRiwweEQ1LDB4
MDksMHg5MywweDI3LDB4N0EsMHhFOCwweDZBLDB4REYsMHg1NywKKyAgICAweDg4LDB4ODIsMHgw
NiwweDcyLDB4RkUsMHhERCwweDlFLDB4MjIsMHg2NywweDdBLDB4MDYsMHg2QSwweEVGLDB4RkYs
MHg3RSwweDU4LAorICAgIDB4MDYsMHg2QSwweEM1LDB4NjksMHg2OCwweDVDLDB4N0YsMHg5Nyww
eDI2LDB4NzIsMHg4NCwweDU5LDB4NTcsMHg3RiwweEJBLDB4MEEsCisgICAgMHhFNSwweDY5LDB4
NDMsMHg1MSwweEY1LDB4QkYsMHhCQSwweEEwLDB4QzUsMHg2MSwweDIzLDB4NDksMHg3RSwweEZF
LDB4RjgsMHhFOCwKKyAgICAweDQzLDB4NDksMHgwMywweDQ5LDB4RUEsMHhBRSwweEVDLDB4OUUs
MHg0MywweDQ5LDB4MDIsMHg0MSwweDBELDB4OEEsMHgwQSwweDAwLAorICAgIDB4NjQsMHg0OSww
eDIzLDB4NDksMHhFQiwweEFCLDB4M0EsMHg4QSwweDg1LDB4NTEsMHgyMywweDQxLDB4MkIsMHgw
RSwweEJFLDB4NTcsCisgICAgMHhBNSwweDU5LDB4MDMsMHg0MSwweDgwLDB4QTIsMHhGRSwweDc1
LDB4NjQsMHg0OSwweDIzLDB4NDEsMHgwMCwweEY0LDB4N0YsMHg2NSwKKyAgICAweDg0LDB4NTEs
MHgyMywweDQxLDB4RjIsMHhFRiwweEJGLDB4REQsMHg4NCwweDUxLDB4MjMsMHg0MSwweDBBLDB4
N0UsMHhERSwweEZGLAorICAgIDB4QTUsMHg1OSwweDIzLDB4NDEsMHgwQSwweDJBLDB4RDcsMHg1
NSwweEM1LDB4NTksMHgwMywweDQxLDB4QzgsMHhGQSwweEY1LDB4NTUsCisgICAgMHhFNiwweDYx
LDB4NDMsMHg0OSwweEI1LDB4M0YsMHgzRCwweDJELDB4NjcsMHg3QSwweEU2LDB4NjksMHhBRiww
eDBELDB4QTgsMHhCOSwKKyAgICAweDY3LDB4N0EsMHgwNiwweDZBLDB4NUYsMHhFQywweDhCLDB4
QTAsMHhDOCwweDgyLDB4MjYsMHg3MiwweEJELDB4QkQsMHgyRCwweEVBLAorICAgIDB4RUEsMHg4
QSwweDQ3LDB4NzIsMHg3QSwweEZBLDB4RTgsMHhGOCwweDY3LDB4N0EsMHhDNiwweDY5LDB4OEEs
MHhCQiwweEY4LDB4NzgsCisgICAgMHhDOSwweDhBLDB4RTUsMHg2OSwweDhBLDB4QUIsMHhERiww
eDc1LDB4NjgsMHg3QSwweEM1LDB4NjEsMHgwMCwweDAwLDB4OEEsMHhGRCwKKyAgICAweDY4LDB4
N0EsMHhDNSwweDU5LDB4ODgsMHhFMCwweEVBLDB4N0UsMHg0NywweDcyLDB4MDMsMHg0OSwweEEw
LDB4RUEsMHhGQSwweDVGLAorICAgIDB4NjQsMHg1MSwweDAyLDB4NDEsMHg1OCwweDdFLDB4RUUs
MHhCRiwweEE1LDB4NTksMHgwMywweDQ5LDB4QUQsMHgyRCwweDJGLDB4MkYsCisgICAgMHhFNSww
eDYxLDB4ODUsMHg1MSwweEVGLDB4QTUsMHgyQiwweEFBLDB4NDcsMHg3MiwweEM0LDB4NjEsMHgw
OSwweDhGLDB4RUUsMHhCQSwKKyAgICAweEE4LDB4N0EsMHgwNSwweDZBLDB4MEIsMHhGRiwweEY1
LDB4QkQsMHhBQywweEEzLDB4NDYsMHg3MiwweDJGLDB4QkQsMHhGRCwweEZGLAorICAgIDB4MTEs
MHhDRCwweDQ2LDB4NzIsMHgwMiwweEFGLDB4RkYsMHg1RiwweDkzLDB4REQsMHg4NywweDdBLDB4
MDAsMHgyQSwweEZGLDB4NTUsCisgICAgMHhCNywweEZFLDB4NkEsMHg5QiwweDAwLDB4QUEsMHhG
RiwweDU1LDB4OTcsMHhGNiwweDRELDB4QjQsMHgwMCwweDAwLDB4QkYsMHhENSwKKyAgICAweEY4
LDB4RkUsMHg5MiwweEQ1LDB4MDAsMHgwMiwweDBCLDB4MkQsMHgxOCwweEZGLDB4RjgsMHhGRSww
eEJGLDB4QkUsMHhCNywweEQ1LAorICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhFQSwweEVBLDB4
QkUsMHhCNywweDE4LDB4RkYsMHhGOCwweEY2LDB4RjcsMHhGRiwweEZBLDB4QUUsCisgICAgMHhG
OCwweEZFLDB4RjcsMHhGNiwweEZGLDB4QkYsMHhGRiwweEZGLDB4MTgsMHhGRiwweEQ4LDB4RjYs
MHhFQSwweEVFLDB4RkEsMHg2RSwKKyAgICAweEY4LDB4RjYsMHhENywweEY2LDB4QTgsMHhCRSww
eEFFLDB4QUUsMHhGNywweEY2LDB4RDcsMHhGNiwweDNCLDB4QUIsMHhBQywweDIyLAorICAgIDB4
RDgsMHhGRSwweDE3LDB4RjcsMHhFQSwweEZBLDB4QkYsMHhGRiwweDE4LDB4RkYsMHhGNywweEY2
LDB4RDcsMHhCRCwweEFGLDB4QUIsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEZGLDB4RkEs
MHhFQiwweEVBLDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGRSwweEZFLDB4QkYsMHhGNywKKyAgICAw
eDE4LDB4RkYsMHhGOCwweEY2LDB4RkYsMHg3OCwweEVBLDB4NkEsMHhGOCwweEZFLDB4MTgsMHhG
NywweEFCLDB4QUUsMHg4QSwweEE4LAorICAgIDB4MTgsMHhGRiwweEQ4LDB4RjYsMHhBOSwweEFF
LDB4QUUsMHhFQSwweEY3LDB4RjYsMHhCNywweEY2LDB4QTAsMHhFOCwweDY4LDB4N0EsCisgICAg
MHhENywweEY2LDB4QjcsMHhGNiwweDAwLDB4QTIsMHhBOSwweDBELDB4RDcsMHhGNiwweEI3LDB4
RjYsMHhEQywweDU1LDB4NzYsMHg1NiwKKyAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4RjgsMHhG
QywweDdFLDB4NTYsMHg5NiwweEVFLDB4NzYsMHhFRSwweDVFLDB4QkEsMHg4MCwweEE4LAorICAg
IDB4OTYsMHhFRSwweDU1LDB4RTYsMHg1RiwweEZGLDB4QUUsMHhBMiwweDU1LDB4RUUsMHgzNSww
eEU2LDB4RkUsMHhGRiwweEZFLDB4MTgsCisgICAgMHg3NiwweEVFLDB4NTUsMHhFRSwweEVGLDB4
RUEsMHhBQSwweDAxLDB4NzYsMHhFRSwweDU1LDB4RUUsMHhBRCwweDI5LDB4MDAsMHhBMCwKKyAg
ICAweEI1LDB4RjYsMHg1NiwweEVFLDB4NUYsMHhGRiwweDdELDB4RUYsMHg3NiwweEVFLDB4NTUs
MHhFRSwweDk1LDB4NTUsMHg3RCwweEY3LAorICAgIDB4NzYsMHhFRSwweDU1LDB4RUUsMHhGQSww
eEY4LDB4MjcsMHgzNywweDc2LDB4RUUsMHg1NSwweEVFLDB4OUEsMHhCMiwweEJBLDB4QUEsCisg
ICAgMHg3NiwweEVFLDB4NTUsMHhFRSwweEY4LDB4NzgsMHhGQiwweEQ3LDB4NzUsMHhFRSwweDE1
LDB4RTYsMHhFQSwweEFBLDB4QTgsMHgwOCwKKyAgICAweDU1LDB4RUUsMHgxNSwweEU2LDB4RkEs
MHhGRSwweEZDLDB4QkUsMHg1NSwweEVFLDB4MzUsMHhFNiwweDVELDB4RUIsMHgyRiwweDNGLAor
ICAgIDB4NTUsMHhFRSwweDM0LDB4RTYsMHgxNSwweEU1LDB4RTAsMHg0MCwweDk2LDB4RjYsMHgz
NSwweEU2LDB4MDMsMHhBQiwweDI5LDB4RTUsCisgICAgMHg5NiwweEY2LDB4MzUsMHhFNiwweDg4
LDB4RjIsMHhGQSwweDdGLDB4NzUsMHhFRSwweEQzLDB4REQsMHg1OCwweDdBLDB4NUUsMHg1NiwK
KyAgICAweDE0LDB4RTYsMHhCMywweEQ1LDB4QUIsMHgzRCwweEFGLDB4REYsMHgzNCwweEU2LDB4
RjQsMHhFNSwweEZGLDB4RUIsMHhBRiwweEFELAorICAgIDB4MzUsMHhFNiwweEQzLDB4REQsMHg3
QSwweDdBLDB4N0EsMHg4QSwweDE1LDB4RTYsMHhCMywweEQ1LDB4QkIsMHhENSwweEY3LDB4RTgs
CisgICAgMHhEMywweERELDB4MzAsMHhDRCwweEUwLDB4NjAsMHg3OCwweDYwLDB4NTEsMHhDRCww
eEYwLDB4QzQsMHhFOCwweDdFLDB4N0YsMHhGRSwKKyAgICAweDEwLDB4QzUsMHhBRSwweEJDLDB4
RkIsMHhGRiwweDVGLDB4QjgsMHhGMCwweEJDLDB4QUYsMHhCQywweEQ1LDB4OUUsMHhBMywweEFF
LAorICAgIDB4MTAsMHhDNSwweENGLDB4QkMsMHhGQiwweEY5LDB4QTksMHg5MiwweDMxLDB4Q0Qs
MHgyRCwweEFDLDB4N0EsMHhFMiwweDgyLDB4MDAsCisgICAgMHgxMSwweEM1LDB4QUIsMHg5Qiww
eEI3LDB4RkYsMHg3QSwweDYwLDB4MkQsMHhBQywweDA5LDB4OEIsMHg4MCwweEFBLDB4RkYsMHhG
NywKKyAgICAweEVDLDB4QTMsMHg0QSwweDhCLDB4RTgsMHhGQSwweERGLDB4NTUsMHhEMCwweEJD
LDB4OEMsMHg5QiwweDJELDB4MkQsMHgwRCwweDJELAorICAgIDB4MTAsMHhDNSwweENGLDB4QkMs
MHgwMiwweDBCLDB4MEIsMHg5RCwweDEwLDB4QzUsMHhGMCwweEM0LDB4MDIsMHg4QywweDc2LDB4
NjcsCisgICAgMHg1MSwweENELDB4RjAsMHhDNCwweEJBLDB4MkYsMHgzRiwweEJELDB4NTEsMHhD
RCwweDMxLDB4Q0QsMHg4MywweEE3LDB4RDcsMHhCNywKKyAgICAweDcyLDB4RDUsMHgzMSwweENE
LDB4QTIsMHhFRiwweERGLDB4NzcsMHg3MiwweEQ1LDB4MzAsMHhDRCwweEJCLDB4RUEsMHhGRSww
eDU1LAorICAgIDB4NDYsMHg2QSwweDA1LDB4NkEsMHgyQiwweEFCLDB4QUIsMHhGRiwweDg2LDB4
NzIsMHhFNCwweDYxLDB4M0UsMHhCNywweEZGLDB4RkUsCisgICAgMHhBNywweDdBLDB4MDUsMHg2
QSwweDhBLDB4Q0YsMHg3RiwweDdELDB4QTcsMHg3QSwweDA1LDB4NjIsMHg4MiwweDIyLDB4QUIs
MHhGRCwKKyAgICAweEE3LDB4N0EsMHg0NiwweDZBLDB4MDIsMHgyMCwweEIyLDB4M0QsMHhDNyww
eDdBLDB4NjcsMHg3MiwweEI0LDB4OUEsMHhGQywweEVBLAorICAgIDB4QTcsMHg3QSwweDQ2LDB4
NzIsMHgwMiwweDAwLDB4QTIsMHg2MCwweEM4LDB4N0EsMHg2NiwweDcyLDB4RjgsMHhGQSwweDdG
LDB4RkIsCisgICAgMHhDNywweDgyLDB4NjYsMHg3MiwweEJGLDB4QTcsMHgzRiwweEJGLDB4Qzcs
MHg3QSwweDg2LDB4N0EsMHhENSwweDc5LDB4NzcsMHhGNywKKyAgICAweEE3LDB4N0EsMHg0Niww
eDcyLDB4OUYsMHhFRSwweDgwLDB4MjgsMHhBNywweDdBLDB4NjYsMHg3MiwweEJBLDB4RTcsMHgx
RiwweDIzLAorICAgIDB4QTcsMHg3QSwweDg3LDB4N0EsMHgzRSwweDlDLDB4OUIsMHhFOSwweEE3
LDB4N0EsMHg2NiwweDcyLDB4N0EsMHg1NywweEJDLDB4QjQsCisgICAgMHg2NiwweDdBLDB4QTcs
MHg3MiwweDJFLDB4QkUsMHhCRSwweEFFLDB4QzcsMHg4MiwweDQ2LDB4NzIsMHg1RiwweEVGLDB4
QUIsMHgyQiwKKyAgICAweEE3LDB4N0EsMHg2NiwweDcyLDB4NUYsMHhERSwweERDLDB4QzIsMHg4
NywweDdBLDB4NDYsMHg3MiwweDdBLDB4NzgsMHhGRiwweEEzLAorICAgIDB4QTcsMHg4MiwweDQ2
LDB4NzIsMHhCRCwweEQ3LDB4QUYsMHg4QSwweEE3LDB4ODIsMHg0NiwweDcyLDB4MjIsMHhCQiww
eDdGLDB4RjksCisgICAgMHhFOCwweDhBLDB4NDYsMHg3MiwweDAyLDB4QUUsMHhGNywweDc1LDB4
MDksMHg4QiwweDY2LDB4NzIsMHg4MiwweEFBLDB4QkIsMHhENSwKKyAgICAweDA5LDB4OEIsMHg4
NywweDdBLDB4OEEsMHhFRiwweEFGLDB4RkQsMHhFOCwweDgyLDB4QTcsMHg3QSwweDdFLDB4MkYs
MHgwQiwweDBCLAorICAgIDB4MjksMHg4QiwweEM4LDB4ODIsMHhENSwweDlELDB4QkYsMHhGMiww
eDA4LDB4OEIsMHhBNywweDdBLDB4QUEsMHhBMiwweEUwLDB4REEsCisgICAgMHhFOCwweDgyLDB4
QTcsMHg3QSwweEU4LDB4QkYsMHhBRSwweEJFLDB4QzcsMHg3QSwweEEzLDB4NTksMHg3OCwweEUw
LDB4QTAsMHg4MCwKKyAgICAweDA1LDB4NjIsMHhFMiwweDQwLDB4NUUsMHg1RSwweDVBLDB4Rjgs
MHgwMywweDQxLDB4RTIsMHgzOCwweDc3LDB4MEUsMHhCRSwweEZELAorICAgIDB4MDIsMHg0MSww
eEExLDB4MzAsMHhGRSwweEZDLDB4RjYsMHhGRSwweEUyLDB4MzgsMHg4MSwweDMwLDB4QUEsMHhB
RiwweEZGLDB4REIsCisgICAgMHg0NCwweDUxLDB4QTIsMHgzOCwweDBCLDB4QUYsMHhCRCwweEY1
LDB4ODQsMHg2MSwweEMyLDB4NDAsMHgwMCwweEFCLDB4RkYsMHg1NSwKKyAgICAweEM1LDB4Njks
MHgwMywweDQ5LDB4MDIsMHhCQiwweERGLDB4RTUsMHg0NywweDdBLDB4ODQsMHg2MSwweDNCLDB4
M0YsMHgzNSwweDJELAorICAgIDB4ODgsMHg4MiwweDI2LDB4NzIsMHg4RSwweEE3LDB4QUUsMHgw
OCwweEE4LDB4ODIsMHhDNSwweDY5LDB4N0UsMHg3QSwweEJBLDB4MDAsCisgICAgMHg4OCwweDgy
LDB4RTUsMHg2OSwweDU1LDB4NTcsMHhCRiwweDI4LDB4NjcsMHg3QSwweEU1LDB4NjksMHhCRCww
eDVELDB4QjcsMHgwMCwKKyAgICAweEE4LDB4ODIsMHhFNSwweDYxLDB4NTcsMHhGRiwweEFCLDB4
ODIsMHg4NywweDdBLDB4NjMsMHg1MSwweDVGLDB4N0UsMHhGQSwweEE4LAorICAgIDB4QTUsMHg1
OSwweDIzLDB4NDksMHhENywweEZGLDB4RkEsMHhFMCwweDY0LDB4NTEsMHg0MywweDQ5LDB4NjUs
MHhGQSwweEY4LDB4N0QsCisgICAgMHg2NCwweDUxLDB4MDMsMHg0MSwweEEwLDB4QTIsMHhGMiww
eDdFLDB4MjMsMHg0OSwweEMyLDB4MzAsMHhCOCwweEZBLDB4NUEsMHhGQSwKKyAgICAweDIzLDB4
NDEsMHhFMiwweDM4LDB4MkIsMHgyQiwweDhCLDB4QTUsMHg2NCwweDQ5LDB4MDMsMHg0MSwweDNG
LDB4RUQsMHhGQSwweDdCLAorICAgIDB4NDMsMHg0OSwweEUzLDB4MzgsMHgyOCwweEEyLDB4RkEs
MHg3RSwweDIzLDB4NDEsMHhBMSwweDMwLDB4ODAsMHhGQSwweDc2LDB4NUYsCisgICAgMHgwMyww
eDQxLDB4ODEsMHgyOCwweDI4LDB4QUYsMHhBNSwweDI1LDB4NDQsMHg0OSwweEMyLDB4MzgsMHhG
RiwweEY1LDB4QUYsMHgwQSwKKyAgICAweEU2LDB4NjEsMHgwMywweDQxLDB4MjksMHgzRCwweDJG
LDB4MkYsMHg2NywweDdBLDB4MDYsMHg2QSwweDlELDB4QkYsMHhDMiwweDYzLAorICAgIDB4Njcs
MHg3QSwweDI3LDB4NzIsMHgyMCwweDA4LDB4QkYsMHg3NSwweDY4LDB4N0EsMHgwNiwweDZBLDB4
QTAsMHhFMCwweDZDLDB4QUEsCisgICAgMHg0NywweDdBLDB4RTUsMHg2OSwweEEwLDB4RkUsMHg1
RiwweDVFLDB4MDYsMHg3MiwweDg0LDB4NTksMHhFMCwweEU4LDB4RkUsMHg3RSwKKyAgICAweEU1
LDB4NjEsMHg4NCwweDU5LDB4MkQsMHgzNSwweEZGLDB4QkQsMHhFNiwweDY5LDB4ODQsMHg1OSww
eDI4LDB4MEEsMHhGQiwweDVFLAorICAgIDB4RTYsMHg2MSwweDg0LDB4NTksMHhBMCwweDgwLDB4
QUQsMHg3RCwweEE0LDB4NTksMHgwMywweDQxLDB4RkUsMHg3RSwweDdDLDB4N0UsCisgICAgMHgy
MywweDQ5LDB4MDMsMHg0MSwweDJCLDB4RDUsMHhERiwweERCLDB4ODQsMHg1MSwweDIzLDB4NDks
MHhCRCwweDI1LDB4MjUsMHgyNSwKKyAgICAweDQ3LDB4NzIsMHhBNSwweDU5LDB4QkQsMHgwOSww
eDJCLDB4MkIsMHg0NywweDcyLDB4QTQsMHg2MSwweEFBLDB4RjgsMHg3QywweDVDLAorICAgIDB4
ODgsMHg3QSwweEU1LDB4NjksMHgyQiwweDBELDB4MkQsMHgyNSwweDBBLDB4OEIsMHhBOCwweDgy
LDB4RTUsMHg4QiwweDhCLDB4MkEsCisgICAgMHhFOSwweDhBLDB4MjYsMHg3MiwweEYyLDB4RUEs
MHg3OCwweDc4LDB4ODcsMHg3QSwweDA1LDB4NkEsMHgwOCwweDJGLDB4QkYsMHhCRCwKKyAgICAw
eDRBLDB4OTMsMHg2NywweDdBLDB4MEIsMHgyRiwweEY1LDB4RDUsMHgyRCwweEFDLDB4QzgsMHg4
MiwweDJGLDB4QkYsMHhENSwweEY1LAorICAgIDB4QjcsMHhGNiwweENDLDB4QTMsMHgwQiwweDJC
LDB4MkQsMHhBRCwweEQ4LDB4RkUsMHg1MSwweEQ1LDB4MDAsMHgwMCwweEEyLDB4NUYsCisgICAg
MHhENywweEY2LDB4NzIsMHhENSwweDAwLDB4MDAsMHgwMiwweEFELDB4RjgsMHhGRSwweDk2LDB4
RUUsMHgwMCwweDA4LDB4MkEsMHhGRCwKKyAgICAweEY4LDB4RkUsMHhENywweEY2LDB4QUEsMHhB
OCwweEJCLDB4QTUsMHhGOCwweEZFLDB4RDcsMHhGNiwweEFBLDB4QUEsMHhCRSwweEFFLAorICAg
IDB4RjgsMHhGRSwweEQ3LDB4RjYsMHhEQiwweEZGLDB4RkEsMHhEQSwweEY4LDB4RkUsMHhENyww
eEY2LDB4QUEsMHhBRSwweEFGLDB4OUIsCisgICAgMHhGOCwweEZFLDB4RjcsMHhGNiwweEJGLDB4
RUIsMHhBQSwweDgyLDB4RDgsMHhGRSwweDE3LDB4RjcsMHhGRiwweEVFLDB4QUEsMHg4QSwKKyAg
ICAweDE4LDB4RkYsMHhGOCwweEY2LDB4RUEsMHhGRSwweEJCLDB4RkYsMHhGOCwweEZFLDB4MTgs
MHhGNywweEFBLDB4QUUsMHgwQSwweEEyLAorICAgIDB4RjgsMHhGRSwweDE4LDB4RjcsMHhCRSww
eEFBLDB4MDAsMHgwMCwweEY4LDB4RkUsMHgxOCwweEY3LDB4QUEsMHhBQSwweDA4LDB4MjIsCisg
ICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweEVBLDB4QkEsMHhGRCwweEJCLDB4MTgsMHhGRiwweEI3
LDB4RjYsMHg3RiwweDdGLDB4NzYsMHg3RiwKKyAgICAweEQ4LDB4RkUsMHhCNywweEVFLDB4QUEs
MHhFQSwweDdBLDB4N0YsMHhCNiwweEY2LDB4OTYsMHhFRSwweEE4LDB4RUEsMHhFMCwweEVBLAor
ICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHg1RiwweERFLDB4N0UsMHg3QiwweDk2LDB4RUUsMHg3
NiwweEVFLDB4QTAsMHgyOCwweDVELDB4NUYsCisgICAgMHg5NiwweEY2LDB4NzYsMHhFRSwweDVB
LDB4RjQsMHhFRCwweEVGLDB4OTYsMHhGNiwweDU1LDB4RUUsMHg1NSwweDdFLDB4RTIsMHg4MCwK
KyAgICAweDc2LDB4RUUsMHg1NSwweEVFLDB4QTksMHhFRiwweEU4LDB4RjAsMHg3NSwweEVFLDB4
NTYsMHhFRSwweEFBLDB4REYsMHg1NSwweDk3LAorICAgIDB4OTcsMHhGNiwweDU2LDB4RUUsMHhG
RSwweEVFLDB4RUIsMHhGRSwweDc2LDB4RUUsMHgzNSwweEU2LDB4OEYsMHgyRSwweDBFLDB4MDIs
CisgICAgMHg3NiwweEVFLDB4NTUsMHhFRSwweDJELDB4RjcsMHhCRSwweDAwLDB4NzYsMHhFRSww
eDU1LDB4RUUsMHhGRSwweEZDLDB4RkYsMHhCRSwKKyAgICAweDc2LDB4RUUsMHg1NSwweEVFLDB4
REUsMHhEQiwweEFCLDB4QTIsMHg3NiwweEVFLDB4NTUsMHhFRSwweDBELDB4MkUsMHhCQSwweEI2
LAorICAgIDB4NzUsMHhFRSwweDM1LDB4RTYsMHg3NiwweDVDLDB4QkMsMHhFRSwweDc1LDB4RUUs
MHgzNCwweEVFLDB4QjUsMHhBRiwweEFCLDB4MjIsCisgICAgMHg3NSwweEVFLDB4NTUsMHhFRSww
eDYyLDB4QzUsMHgyMCwweEZBLDB4NTUsMHhFRSwweDE0LDB4RTYsMHhBQiwweEJGLDB4RkMsMHg5
QSwKKyAgICAweDc1LDB4RUUsMHgzNCwweEU2LDB4RTksMHhFQiwweDdCLDB4N0YsMHgxNCwweEU2
LDB4QjMsMHhENSwweEY4LDB4RjgsMHg3QywweDc4LAorICAgIDB4RjMsMHhERCwweEIzLDB4RDUs
MHhENiwweEI3LDB4RUQsMHhBQiwweDM0LDB4RTYsMHhEMywweERELDB4MkIsMHgyRCwweEFELDB4
QUQsCisgICAgMHgzNSwweEVFLDB4MTQsMHhFNiwweDJELDB4MkIsMHgyQSwweDA5LDB4MzQsMHhF
NiwweEYzLDB4RTUsMHg3OCwweEI4LDB4MjAsMHgwMCwKKyAgICAweDU1LDB4RUUsMHg1MSwweENE
LDB4N0YsMHg3QSwweDdBLDB4RTAsMHg3MiwweEQ1LDB4RjAsMHhDNCwweDVGLDB4RkIsMHhGQSww
eEE4LAorICAgIDB4MzEsMHhDNSwweEFGLDB4QkMsMHhGRSwweERBLDB4RkMsMHhGQSwweDEwLDB4
QzUsMHhEMCwweEJDLDB4RjUsMHhBRCwweDhCLDB4MDAsCisgICAgMHgzMSwweEM1LDB4RjAsMHhD
NCwweEI1LDB4QTUsMHhBMiwweDJBLDB4NTIsMHhDRCwweDEwLDB4QzUsMHhFOSwweDdGLDB4QkYs
MHgwQSwKKyAgICAweDMxLDB4Q0QsMHg4RiwweEJDLDB4NjAsMHg4MiwweDAwLDB4MDAsMHhEMCww
eEJDLDB4QzgsMHg4MiwweDVGLDB4NUUsMHg3QywweDc4LAorICAgIDB4NkIsMHg5MywweEE4LDB4
N0EsMHgzRiwweEJELDB4MzUsMHhCNSwweEFGLDB4QkMsMHg4QiwweDkzLDB4MDksMHgyOSwweDBC
LDB4MDksCisgICAgMHhGMCwweEM0LDB4QUUsMHhCNCwweDAzLDB4MEIsMHhFRiwweEU3LDB4RjAs
MHhDNCwweENGLDB4QkMsMHgyOCwweDYwLDB4OEEsMHhEOCwKKyAgICAweDMwLDB4Q0QsMHhEMCww
eEJDLDB4M0IsMHhBQiwweEZGLDB4N0YsMHg1MSwweENELDB4RjAsMHhDNCwweEFBLDB4OEIsMHhF
RiwweEU1LAorICAgIDB4NTEsMHhDRCwweEYwLDB4QzQsMHhBOCwweEVBLDB4REYsMHg3RiwweDUx
LDB4Q0QsMHhGMCwweEM0LDB4QUIsMHhBMywweEZFLDB4N0UsCisgICAgMHg0NSwweDZBLDB4RTQs
MHg2OSwweEVCLDB4RkYsMHg2RSwweEI4LDB4NDUsMHg2QSwweDA1LDB4NjIsMHhGRiwweDdGLDB4
REYsMHhBQSwKKyAgICAweDQ1LDB4NkEsMHgwNSwweDZBLDB4OUEsMHhGQiwweEVBLDB4QkEsMHg0
NiwweDZBLDB4RTUsMHg2MSwweDUyLDB4N0EsMHhCRSwweEI4LAorICAgIDB4NjYsMHg2QSwweDA1
LDB4NkEsMHgyRCwweEVGLDB4NTUsMHg3NiwweEE3LDB4N0EsMHgwNSwweDYyLDB4MEEsMHhCQiww
eEY1LDB4RjUsCisgICAgMHg4NywweDdBLDB4MjUsMHg2QSwweDAyLDB4MDAsMHgyRSwweDU3LDB4
QTcsMHg3QSwweDI2LDB4NkEsMHg4MCwweDAwLDB4MkEsMHhCRCwKKyAgICAweEM3LDB4N0EsMHg4
NywweDdBLDB4QjUsMHhGRiwweDlELDB4NTcsMHhBNywweDdBLDB4ODcsMHg3QSwweDA5LDB4RDMs
MHgxNCwweDEzLAorICAgIDB4QzcsMHg4MiwweDY2LDB4N0EsMHg3RSwweEVCLDB4RUUsMHhGQSww
eEE3LDB4N0EsMHg2NywweDdBLDB4MkEsMHhCMywweEFCLDB4QkUsCisgICAgMHhBNywweDdBLDB4
ODcsMHg3QSwweEFGLDB4QjcsMHgyNywweEI1LDB4QTcsMHg3QSwweDg3LDB4N0EsMHg1NywweEY0
LDB4QzMsMHhBQiwKKyAgICAweEM3LDB4ODIsMHg2NiwweDcyLDB4QkUsMHhBRiwweEFELDB4QkUs
MHhBNywweDdBLDB4NjYsMHg3QSwweDJELDB4ODgsMHgwMCwweDBDLAorICAgIDB4QzcsMHg4Miww
eDg3LDB4N0EsMHg3NywweEZDLDB4RUEsMHhBRSwweEE3LDB4N0EsMHg0NiwweDcyLDB4QUIsMHg4
OSwweDAyLDB4MDgsCisgICAgMHhBNywweDdBLDB4NjYsMHg3MiwweDU3LDB4RUUsMHg4OCwweDAy
LDB4QTcsMHg3QSwweDY2LDB4NzIsMHg3NywweEZGLDB4RkEsMHhGMiwKKyAgICAweEM3LDB4ODIs
MHg0NiwweDcyLDB4REYsMHhERiwweEZCLDB4QjgsMHg4NiwweDdBLDB4MjQsMHg2QSwweEE2LDB4
OEEsMHg4QSwweEIwLAorICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHg4RCwweDZCLDB4NjgsMHhD
QiwweEU4LDB4ODIsMHg0NSwweDcyLDB4MkIsMHhBRiwweEQ3LDB4NUYsCisgICAgMHgwOCwweDhC
LDB4NjYsMHg3MiwweDAyLDB4QTIsMHhBRiwweDU3LDB4RTgsMHg4MiwweEE3LDB4N0EsMHhBMCww
eDAwLDB4MEUsMHgzNSwKKyAgICAweEU4LDB4ODIsMHhBNywweDgyLDB4MkYsMHgwOCwweDIwLDB4
RTgsMHhFOCwweDgyLDB4QTYsMHg3QSwweEVBLDB4RkEsMHgwMiwweENFLAorICAgIDB4QzcsMHg3
QSwweDYzLDB4NTEsMHg1QSwweDU4LDB4RTgsMHg4MCwweEE0LDB4NTksMHhDMiwweDM4LDB4RDcs
MHhENywweDdFLDB4RjgsCisgICAgMHhFMiwweDQwLDB4QzIsMHgzOCwweDU3LDB4NTcsMHg1RSww
eDYwLDB4RTIsMHgzOCwweDgxLDB4MzgsMHg3QSwweEZBLDB4QTgsMHhBMCwKKyAgICAweEUzLDB4
NDAsMHg4MSwweDM4LDB4MkQsMHgwRiwweEFCLDB4MDIsMHg0NCwweDU5LDB4QzIsMHg0MCwweDk1
LDB4QjksMHgwQiwweDJGLAorICAgIDB4QTUsMHg2MSwweDIzLDB4NTEsMHhCRCwweEFGLDB4MkYs
MHgyQiwweDQ3LDB4N0EsMHhDNSwweDY5LDB4QkQsMHgyRCwweEE5LDB4ODUsCisgICAgMHhBOCww
eDgyLDB4NDcsMHg3QSwweDAzLDB4NUIsMHg3RCwweEY1LDB4QzksMHg4MiwweDQ3LDB4NzIsMHhB
MiwweDdCLDB4N0QsMHhCRiwKKyAgICAweDg4LDB4ODIsMHgwNiwweDZBLDB4MDgsMHhFOCwweDVG
LDB4RUMsMHhBOCwweDgyLDB4QzQsMHg2OSwweDAwLDB4MDIsMHhCRCwweEI3LAorICAgIDB4RTks
MHg4QSwweDI3LDB4NzIsMHg4MiwweDAyLDB4QUYsMHg3RiwweDY3LDB4N0EsMHhDNSwweDU5LDB4
QTgsMHhEQywweDc4LDB4RkUsCisgICAgMHgyNywweDZBLDB4NDQsMHg0OSwweDY4LDB4RTAsMHhF
QiwweDU3LDB4NjQsMHg1MSwweEMyLDB4MzgsMHhBOCwweEZDLDB4RkUsMHg3RiwKKyAgICAweDIz
LDB4NDEsMHhDMiwweDM4LDB4QTAsMHhBQSwweDdELDB4NUIsMHgwMywweDM5LDB4QzIsMHgzOCww
eEFBLDB4QUYsMHhBRCwweEFELAorICAgIDB4MDMsMHg0MSwweEUyLDB4MzgsMHgzNywweEY2LDB4
MzIsMHhCRSwweDI0LDB4NDEsMHhFMywweDM4LDB4QzAsMHhFMiwweDdCLDB4NTcsCisgICAgMHhF
MywweDM4LDB4QTIsMHgzMCwweEUwLDB4NDgsMHhBQywweDgwLDB4QzIsMHgzOCwweDgxLDB4MzAs
MHhERSwweERGLDB4Q0EsMHg4MCwKKyAgICAweDQ0LDB4NDksMHhBMSwweDMwLDB4QjUsMHhGNSww
eDNELDB4MEIsMHhBNSwweDU5LDB4MDMsMHg0MSwweEFELDB4QUQsMHgyRiwweDBBLAorICAgIDB4
QzYsMHg2MSwweDY0LDB4NTEsMHgyNSwweEJGLDB4RkUsMHhGQSwweDI2LDB4NzIsMHg4NCwweDU5
LDB4MjIsMHg4OSwweEJELDB4QjUsCisgICAgMHg2NywweDdBLDB4RTYsMHg2OSwweEE5LDB4MEIs
MHgyMywweEZELDB4ODgsMHg4MiwweDI2LDB4NzIsMHhFMCwweEUwLDB4RkEsMHhGRCwKKyAgICAw
eDI2LDB4NzIsMHhBNCwweDYxLDB4QTAsMHg4OCwweDgwLDB4N0EsMHhFNiwweDY5LDB4ODQsMHg1
OSwweEQ4LDB4REEsMHhENiwweDU1LAorICAgIDB4QzUsMHg1OSwweDg0LDB4NTksMHhCNywweEI1
LDB4MkQsMHgwOSwweEU2LDB4NjEsMHg4NSwweDU5LDB4RkEsMHhBMywweEVCLDB4REUsCisgICAg
MHhBNSwweDU5LDB4NDQsMHg0OSwweEU4LDB4ODAsMHhFOCwweDdFLDB4NjQsMHg1MSwweDAzLDB4
NDEsMHg2OCwweDdBLDB4N0EsMHg3QSwKKyAgICAweDI0LDB4NDksMHhFMywweDQwLDB4QUYsMHhC
RiwweEZCLDB4QkYsMHhFNiwweDYxLDB4MDMsMHg0OSwweEFELDB4QTUsMHhBRiwweDJGLAorICAg
IDB4NDcsMHg3MiwweEU2LDB4NjEsMHhBNSwweEEzLDB4OEYsMHhFMywweDY4LDB4N0EsMHhDNSww
eDYxLDB4NUIsMHhCNywweDJGLDB4MkYsCisgICAgMHhBOCwweDgyLDB4MjYsMHg3MiwweEFELDB4
OEUsMHgwMiwweDhBLDB4QzksMHg4QSwweDI2LDB4NzIsMHgwMiwweEE4LDB4RkUsMHg3RSwKKyAg
ICAweDg4LDB4ODIsMHgyNiwweDcyLDB4NjAsMHhBMiwweEFFLDB4MjcsMHhDOCwweDhBLDB4MjYs
MHg3MiwweDk1LDB4M0UsMHgwQSwweDA4LAorICAgIDB4MDksMHg4QiwweDY2LDB4N0EsMHhGRCww
eEFGLDB4QUUsMHgyQSwweDBBLDB4OEIsMHhBOCwweDgyLDB4MkYsMHgyRSwweEFBLDB4NzgsCisg
ICAgMHgyRSwweEI0LDB4ODgsMHg3QSwweDBCLDB4QkYsMHg1NSwweDU1LDB4NEQsMHhCNCwweEE3
LDB4ODIsMHgwMCwweEJFLDB4NzUsMHg1NSwKKyAgICAweDMxLDB4Q0QsMHgwOSwweDhCLDB4MkEs
MHhCRiwweEZELDB4NTUsMHgxNSwweEU2LDB4MkEsMHg5MywweDAwLDB4MkEsMHhBRiwweEY1LAor
ICAgIDB4RDcsMHhGRSwweEQwLDB4QzQsMHgwMCwweDBBLDB4MkIsMHhGRCwweEQ3LDB4RkUsMHgx
MSwweENELDB4MDAsMHgwMCwweEFBLDB4RDUsCisgICAgMHhENywweEZFLDB4OTQsMHhERCwweDAw
LDB4MDAsMHgwMiwweEJELDB4RjgsMHhGRSwweDk2LDB4RjYsMHhBQSwweDJBLDB4QkIsMHhGNSwK
KyAgICAweEY4LDB4RkUsMHhENywweEY2LDB4ODIsMHhBMCwweEEwLDB4NUIsMHhGOCwweEZFLDB4
QjcsMHhGNiwweDMyLDB4QTIsMHg4QSwweEZGLAorICAgIDB4RjgsMHhGRSwweEQ3LDB4RjYsMHgy
OCwweDJFLDB4OEEsMHhFNSwweDE4LDB4RkYsMHhENywweEY2LDB4QUEsMHhCQSwweEFCLDB4RkYs
CisgICAgMHhGOCwweEZFLDB4RDgsMHhGNiwweEVBLDB4QUEsMHhBQSwweEI4LDB4RjgsMHhGRSww
eEQ3LDB4RjYsMHgwQSwweEE4LDB4ODIsMHhBQSwKKyAgICAweEY4LDB4RkUsMHhCNywweEY2LDB4
QTAsMHhGQSwweEU4LDB4N0EsMHhENywweEY2LDB4QjcsMHhGNiwweDdDLDB4RkUsMHg1RiwweDU1
LAorICAgIDB4QjcsMHhGNiwweDk2LDB4RUUsMHhFMCwweEU4LDB4RjIsMHg3QSwweEI3LDB4RjYs
MHg3NiwweEVFLDB4QUEsMHhGQSwweDVCLDB4N0YsCisgICAgMHg5NiwweEVFLDB4NTUsMHhFRSww
eDAwLDB4OEEsMHhERCwweEY3LDB4NzYsMHhFRSwweDU1LDB4RUUsMHgyMCwweDAwLDB4QTIsMHhC
RiwKKyAgICAweDU1LDB4RjYsMHg3NiwweEVFLDB4NTUsMHg1RiwweDc3LDB4RkUsMHg5NiwweEY2
LDB4NzYsMHhFRSwweEUyLDB4RkYsMHg3RCwweDVELAorICAgIDB4NzYsMHhFRSwweDU1LDB4RUUs
MHhFOCwweENBLDB4QjcsMHg0MywweDk2LDB4RjYsMHg1NiwweEVFLDB4RjUsMHhGRCwweEFGLDB4
MkIsCisgICAgMHg5NiwweEY2LDB4NTYsMHhFRSwweDVFLDB4N0UsMHhFQSwweEU4LDB4NTUsMHhG
NiwweDc2LDB4RUUsMHg3NSwweDU1LDB4NzYsMHhGRSwKKyAgICAweDk2LDB4RjYsMHg3NiwweEVF
LDB4N0YsMHhGRSwweEVBLDB4NkEsMHg1NiwweEY2LDB4NzYsMHhFRSwweEY3LDB4RkQsMHhERCww
eEQ1LAorICAgIDB4NzUsMHhFRSwweDU2LDB4RUUsMHhBOCwweDlBLDB4RkEsMHhGQiwweDc2LDB4
RUUsMHg1NSwweEVFLDB4MjYsMHhGRSwweEVBLDB4MjgsCisgICAgMHg3NiwweEVFLDB4NTUsMHhF
RSwweEZFLDB4QkUsMHgzRiwweEQ1LDB4NzUsMHhFRSwweDU1LDB4RUUsMHhGRSwweDBDLDB4ODAs
MHhDQiwKKyAgICAweDc2LDB4RUUsMHgzNCwweEU2LDB4QUEsMHhCQSwweDdFLDB4RkYsMHg1NSww
eEVFLDB4MTQsMHhFNiwweEIyLDB4QTgsMHhFQSwweEFFLAorICAgIDB4NTUsMHhFRSwweDM0LDB4
RTYsMHg3MCwweDZCLDB4NjEsMHg3RiwweDE0LDB4RTYsMHg5MiwweEQ1LDB4RkMsMHhGOCwweDdF
LDB4REUsCisgICAgMHhGMywweERELDB4QjMsMHhENSwweDBCLDB4MkYsMHhCRCwweEI1LDB4MTQs
MHhFNiwweEQzLDB4REQsMHgyQiwweDJFLDB4QkIsMHhBRCwKKyAgICAweDU1LDB4RUUsMHhGNCww
eERELDB4Q0IsMHhBQiwweDJGLDB4QjksMHg3NSwweEVFLDB4MzQsMHhFNiwweDE1LDB4QTUsMHgw
QiwweEEyLAorICAgIDB4NzUsMHhFRSwweDM1LDB4RTYsMHg2MCwweEVBLDB4RjYsMHhCNSwweDU1
LDB4RUUsMHg5MywweEQ1LDB4NUYsMHhGRSwweEUwLDB4QTAsCisgICAgMHhEMywweERELDB4RjAs
MHhDNCwweDVGLDB4N0EsMHhBOCwweDgwLDB4NzIsMHhDRCwweDEwLDB4QzUsMHg5RCwweEY1LDB4
QkYsMHhFMCwKKyAgICAweDUxLDB4Q0QsMHgxMSwweEM1LDB4QkYsMHhCRSwweEEyLDB4MDAsMHg3
MiwweENELDB4NTEsMHhDRCwweEVELDB4NkQsMHg5RCwweDU1LAorICAgIDB4NzIsMHhDRCwweDMx
LDB4Q0QsMHg3RiwweDVBLDB4RUEsMHg4RiwweDExLDB4QzUsMHgyQiwweDhCLDB4NzgsMHhFMCww
eEUwLDB4ODAsCisgICAgMHg0QSwweDhCLDB4NjcsMHg3MiwweEJGLDB4QkUsMHhCQywweERDLDB4
OEUsMHhCNCwweDA5LDB4ODMsMHgwQiwweDJGLDB4RkQsMHhENSwKKyAgICAweEFFLDB4QjQsMHg4
QiwweDkzLDB4MDAsMHhBOCwweEFBLDB4RkQsMHhEMCwweEM0LDB4NkUsMHhBQywweDJBLDB4QkIs
MHhBRiwweDk1LAorICAgIDB4RjAsMHhDNCwweEFGLDB4QkMsMHhGQSwweERCLDB4RkQsMHg3NSww
eDMxLDB4Q0QsMHhBRiwweEJDLDB4MEYsMHhBRiwweEZGLDB4RjUsCisgICAgMHgzMSwweENELDB4
Q0YsMHhCQywweDJFLDB4QkUsMHg2RiwweEZELDB4MTAsMHhDNSwweENGLDB4QkMsMHhFMCwweEE4
LDB4RUYsMHhENSwKKyAgICAweDQ2LDB4NkEsMHhFNSwweDY5LDB4MEEsMHhCQSwweDg4LDB4QTAs
MHg0NiwweDZBLDB4MjUsMHg2QSwweEY4LDB4QUEsMHgzNSwweDE3LAorICAgIDB4NDYsMHg3Miww
eDA1LDB4NjIsMHhEQiwweEVGLDB4QUEsMHgwQSwweDY2LDB4NzIsMHgwNSwweDZBLDB4QkEsMHhG
QSwweDVFLDB4RjMsCisgICAgMHg0NiwweDcyLDB4MDUsMHg2QSwweDdFLDB4RUYsMHg1RSwweDJB
LDB4NDYsMHg3MiwweDA1LDB4NkEsMHhBOSwweDJBLDB4OUEsMHhDOCwKKyAgICAweDQ2LDB4NzIs
MHgwNSwweDZBLDB4RjUsMHg1QSwweDczLDB4RjIsMHg0NSwweDcyLDB4RTQsMHg2OSwweDJBLDB4
RkUsMHhGQiwweEZBLAorICAgIDB4ODcsMHg3QSwweDA1LDB4NkEsMHgyQSwweEY1LDB4NzUsMHhG
RiwweEE3LDB4ODIsMHhFNSwweDY5LDB4MjIsMHgwQSwweEZCLDB4REYsCisgICAgMHhBNywweDdB
LDB4MjYsMHg3MiwweDIwLDB4MDAsMHg4QSwweEZELDB4QzgsMHg4MiwweDg3LDB4N0EsMHg1Nyww
eDZGLDB4RjUsMHg5RCwKKyAgICAweEE3LDB4N0EsMHg2NiwweDdBLDB4QzIsMHgwMiwweDg0LDB4
ODgsMHhBNywweDdBLDB4NjYsMHg3MiwweDgyLDB4QTgsMHg4RCwweDBFLAorICAgIDB4QzcsMHg4
MiwweDY2LDB4NzIsMHg5QiwweDFCLDB4QUIsMHhFOSwweEM3LDB4N0EsMHg4NywweDdBLDB4RjYs
MHg3NiwweDU1LDB4RDcsCisgICAgMHhBNywweDdBLDB4ODYsMHg3QSwweDNFLDB4MjUsMHgzQiww
eEY1LDB4QzcsMHg4MiwweDg3LDB4N0EsMHhERiwweEZCLDB4QUYsMHhFQiwKKyAgICAweEE3LDB4
N0EsMHg0NSwweDcyLDB4MEEsMHhEQSwweDhFLDB4MEIsMHhBNywweDdBLDB4NDUsMHg3MiwweEEw
LDB4REUsMHhFQywweDhBLAorICAgIDB4QTcsMHg3QSwweDg3LDB4N0EsMHhGOCwweEJGLDB4RDUs
MHgzNSwweEE3LDB4N0EsMHg4NywweDdBLDB4QjcsMHhEQSwweEJFLDB4MkYsCisgICAgMHhBNyww
eDgyLDB4NDYsMHg3MiwweDcwLDB4QjIsMHg4QSwweEI4LDB4QTcsMHg3QSwweDY2LDB4N0EsMHg1
NiwweEUwLDB4RkUsMHhCNCwKKyAgICAweEE3LDB4N0EsMHg0NSwweDcyLDB4NzcsMHhBRiwweEFB
LDB4MjgsMHhDNywweDgyLDB4NjYsMHg3MiwweDI1LDB4NUQsMHhFRiwweEZELAorICAgIDB4Qzgs
MHg4MiwweDY2LDB4NzIsMHgwMywweEI1LDB4NTUsMHhGRiwweDA4LDB4OEIsMHg2NiwweDcyLDB4
QTgsMHgyRiwweEZELDB4REQsCisgICAgMHhFOCwweDgyLDB4NjUsMHg3MiwweEUyLDB4OEEsMHgy
QiwweEFELDB4ODYsMHg3MiwweDAzLDB4NDksMHg3RSwweEY4LDB4RTAsMHg4MCwKKyAgICAweEE0
LDB4NTksMHhFMiwweDQwLDB4NTUsMHg1NywweDVFLDB4RjgsMHgwMywweDQ5LDB4QzIsMHg0MCww
eDdFLDB4NUEsMHhGOCwweDgwLAorICAgIDB4NDMsMHg0OSwweEUzLDB4NDAsMHhERCwweDE1LDB4
QkQsMHhGNSwweDg0LDB4NTksMHgwMywweDQ5LDB4RkQsMHhBRSwweEFBLDB4OEIsCisgICAgMHg4
NCwweDU5LDB4RTIsMHg0OCwweDBBLDB4QjcsMHg1RSwweDdFLDB4RTYsMHg2OSwweEUzLDB4NDgs
MHgwQSwweEFGLDB4RkQsMHg3NSwKKyAgICAweDI3LDB4NzIsMHgyMywweDUxLDB4MDgsMHhCRiww
eEY1LDB4RDUsMHhBOSwweDgyLDB4NDQsMHg1OSwweDBBLDB4QUEsMHhGRiwweDVELAorICAgIDB4
ODgsMHg3QSwweDg1LDB4NjEsMHgwMCwweDA4LDB4OEIsMHhGNSwweDg4LDB4ODIsMHhDNSwweDYx
LDB4QUEsMHgwMCwweEEyLDB4NTUsCisgICAgMHg4NywweDdBLDB4QzUsMHg2MSwweEUyLDB4RTgs
MHg3QSwweDU1LDB4MDYsMHg2QSwweDY0LDB4NTEsMHg4MCwweEFFLDB4NUYsMHg3NywKKyAgICAw
eEE1LDB4NTksMHgwMywweDQxLDB4RkMsMHhGRSwweDU3LDB4NTcsMHgyMywweDQxLDB4RTMsMHgz
OCwweDU2LDB4RkEsMHhGQSwweEI1LAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzgsMHhERSwweDVF
LDB4RjgsMHgyOCwweEUyLDB4NDAsMHgwMywweDM5LDB4N0EsMHg3NiwweEQ3LDB4RDUsCisgICAg
MHhFMiwweDQ4LDB4MDMsMHgzOSwweDc3LDB4RDcsMHhGRCwweDU3LDB4NDQsMHg0MSwweEMyLDB4
MzgsMHhGNywweEJBLDB4QUEsMHhCMiwKKyAgICAweDAzLDB4MzksMHhBMiwweDMwLDB4RTgsMHg3
QSwweEYwLDB4RTIsMHhFMiwweDM4LDB4QTIsMHgzMCwweEZELDB4MzcsMHhGRiwweEI5LAorICAg
IDB4NDQsMHg0OSwweEMyLDB4MzgsMHgwQiwweDI5LDB4MDksMHgyOSwweEM1LDB4NTksMHg2NCww
eDUxLDB4MkIsMHhDOSwweDhELDB4QTksCisgICAgMHhDNSwweDY5LDB4NjQsMHg1MSwweEZGLDB4
RkYsMHhGRiwweDJFLDB4MDYsMHg3MiwweDY0LDB4NTksMHg4OSwweDBCLDB4QTksMHhGQSwKKyAg
ICAweEU1LDB4NjksMHg4NCwweDU5LDB4MDAsMHgwMCwweDA4LDB4REQsMHg0NywweDcyLDB4QTQs
MHg2MSwweDhCLDB4QjcsMHg5NywweEQ1LAorICAgIDB4MDYsMHg2QSwweDY0LDB4NTksMHhFOCww
eEZBLDB4RkEsMHg1RSwweDg1LDB4NTksMHg2NCwweDUxLDB4MEYsMHhCOCwweDk4LDB4RUYsCisg
ICAgMHhDNSwweDYxLDB4NjQsMHg1MSwweEM5LDB4QTcsMHhCRiwweEI1LDB4RTYsMHg2MSwweDg0
LDB4NTEsMHg3RiwweEU4LDB4ODIsMHhDMiwKKyAgICAweEE0LDB4NTksMHgyNCwweDQ5LDB4RUEs
MHhFMCwweEU4LDB4N0UsMHg0MywweDQ5LDB4MDIsMHg0MSwweDc4LDB4QUUsMHhBQSwweEUyLAor
ICAgIDB4NjQsMHg1MSwweEUyLDB4MzgsMHhCRCwweEFELDB4M0YsMHgyQSwweEU2LDB4NjEsMHg0
NCwweDQ5LDB4MkQsMHgyQiwweEFCLDB4QUYsCisgICAgMHg0NywweDcyLDB4QzYsMHg2MSwweEEy
LDB4OEIsMHgzRiwweEY1LDB4ODgsMHg3QSwweDI2LDB4NkEsMHhCRCwweEVGLDB4RTgsMHgwMSwK
KyAgICAweDg4LDB4ODIsMHgyNiwweDcyLDB4OEIsMHhCQSwweERFLDB4RUEsMHg4OCwweDgyLDB4
RTUsMHg2OSwweEYwLDB4N0UsMHhGRiwweEQ3LAorICAgIDB4NjcsMHg3QSwweEU1LDB4NjksMHgy
NywweDBELDB4ODgsMHgwMiwweEU5LDB4OEEsMHg0NywweDcyLDB4MkEsMHgwRiwweDJELDB4QjUs
CisgICAgMHgyQSwweDkzLDB4QzksMHg4QSwweDNCLDB4QUIsMHhFRiwweDZGLDB4MDksMHg4Qiww
eDY3LDB4N0EsMHhFOCwweEE4LDB4RkEsMHg1RSwKKyAgICAweDg4LDB4N0EsMHhFNSwweDY5LDB4
QTgsMHg3OCwweEJBLDB4QTcsMHhDOCwweDgyLDB4MjYsMHg3MiwweDJCLDB4QkQsMHhCRiwweEJE
LAorICAgIDB4RTksMHg4QSwweDA1LDB4NzIsMHg4MiwweEVBLDB4NUUsMHg1RSwweDZCLDB4OUIs
MHg0NywweDcyLDB4MkIsMHgyNSwweEI1LDB4RjUsCisgICAgMHgyRCwweEFDLDB4ODgsMHg3QSww
eDAwLDB4RkIsMHg3RiwweDVGLDB4OEIsMHg5QiwweDY4LDB4N0EsMHgwOCwweERGLDB4NTUsMHg1
NSwKKyAgICAweDkyLDB4RDUsMHg4OCwweDdBLDB4MEIsMHhCRiwweEZELDB4RDUsMHg3NSwweEVF
LDB4NkIsMHg5MywweDAyLDB4QUIsMHhGRiwweDU1LAorICAgIDB4RDcsMHhGRSwweDZCLDB4OTMs
MHgwMCwweEFBLDB4RkYsMHg1NSwweEI2LDB4RjYsMHg2QSwweDkzLDB4MDAsMHhBQSwweEZGLDB4
RjUsCisgICAgMHhCNiwweEY2LDB4Q0YsMHhCQywweDAwLDB4MEEsMHhBRiwweEE1LDB4RDcsMHhG
NiwweEY0LDB4RTUsMHgwMCwweDAyLDB4OEEsMHhGRCwKKyAgICAweEY4LDB4RkUsMHg3NiwweEVF
LDB4ODAsMHgwMiwweDJBLDB4RDUsMHhGOCwweEZFLDB4QjcsMHhGNiwweEUyLDB4QTgsMHhBQSww
eEY1LAorICAgIDB4RDcsMHhGNiwweEI3LDB4RjYsMHg3OCwweDc4LDB4NTgsMHg3NSwweEI3LDB4
RjYsMHg5NiwweEVFLDB4ODAsMHgwOCwweEU4LDB4N0YsCisgICAgMHhCNiwweEY2LDB4NzYsMHhF
RSwweEFBLDB4RkUsMHg3RiwweDc3LDB4OTYsMHhFRSwweDU1LDB4RUUsMHhGMCwweEY4LDB4N0Es
MHhCRSwKKyAgICAweDc2LDB4RjYsMHg1NSwweEU2LDB4RkIsMHgyQiwweDhBLDB4QUMsMHg5Niww
eEY2LDB4NTUsMHhFRSwweEZGLDB4RkIsMHhFOCwweEZBLAorICAgIDB4NzYsMHhFRSwweDM1LDB4
RUUsMHhBOCwweEU4LDB4RkEsMHhGRSwweDc2LDB4RUUsMHgzNSwweEVFLDB4MDIsMHgwRiwweEFG
LDB4QUEsCisgICAgMHg5NiwweEY2LDB4NzYsMHhFRSwweDc1LDB4NUQsMHhGRCwweEI1LDB4NTcs
MHhGNiwweDc1LDB4RUUsMHg1RiwweDVGLDB4REQsMHhGRCwKKyAgICAweDk2LDB4RjYsMHg1Niww
eEVFLDB4RkEsMHhBQiwweDhCLDB4OEIsMHg5NiwweEY2LDB4NTYsMHhFRSwweEZELDB4RUYsMHhB
QSwweEVBLAorICAgIDB4OTYsMHhGNiwweDc2LDB4RUUsMHhFRiwweDNCLDB4MkYsMHg4RiwweEI2
LDB4RjYsMHg3NiwweEVFLDB4N0QsMHhFRiwweEVCLDB4N0YsCisgICAgMHg3NiwweEVFLDB4MzUs
MHhFRSwweEE4LDB4RjAsMHhCOCwweEZBLDB4NzUsMHhFRSwweDM1LDB4RUUsMHhBQSwweDhELDB4
RkIsMHhGRiwKKyAgICAweDc2LDB4RUUsMHg1NSwweEVFLDB4NTUsMHg1NSwweEU1LDB4ODUsMHg3
NSwweEVFLDB4MzUsMHhFRSwweEVFLDB4ODgsMHgyMiwweDIzLAorICAgIDB4NzUsMHhFRSwweDM1
LDB4RTYsMHhGRiwweEUzLDB4MjAsMHg4MCwweDU1LDB4RUUsMHgzNSwweEU2LDB4RUIsMHhFQSww
eEVDLDB4RjQsCisgICAgMHg1NSwweEVFLDB4RjQsMHhERCwweEFBLDB4QzAsMHhFQSwweDZBLDB4
RjMsMHhERCwweDcyLDB4Q0QsMHhEQywweEZBLDB4N0EsMHg3RSwKKyAgICAweEQzLDB4REQsMHg3
MiwweENELDB4OEYsMHhCNywweEJGLDB4QUYsMHgxNCwweEU2LDB4QjMsMHhENSwweDBCLDB4MkYs
MHgyRCwweEFCLAorICAgIDB4MzQsMHhFNiwweEY0LDB4REQsMHgyQiwweDhBLDB4RkYsMHg3Nyww
eDU1LDB4RUUsMHhGNCwweERELDB4ODIsMHhGRiwweEZELDB4RkQsCisgICAgMHg3NiwweEVFLDB4
MTQsMHhFNiwweEFELDB4QUYsMHgyRCwweDBGLDB4OTYsMHhGNiwweDM0LDB4RTYsMHg3QSwweEVB
LDB4QTIsMHgyMCwKKyAgICAweDk2LDB4RjYsMHhGMywweERELDB4REQsMHhBQSwweDgyLDB4MDgs
MHg5NiwweEY2LDB4NzIsMHhENSwweDVGLDB4RkEsMHhFMCwweDgwLAorICAgIDB4MTQsMHhFNiww
eDUxLDB4Q0QsMHg1NSwweDU1LDB4NTcsMHhGOCwweDcyLDB4RDUsMHgzMSwweEM1LDB4RUIsMHhF
NywweEVBLDB4RTgsCisgICAgMHg3MiwweEQ1LDB4MzEsMHhDNSwweDJBLDB4QTMsMHhBRiwweEE2
LDB4NzIsMHhDRCwweEQwLDB4QkMsMHg3OCwweEU4LDB4ODAsMHg4MiwKKyAgICAweEQwLDB4QkMs
MHg2NywweDcyLDB4NUUsMHg3QywweDc4LDB4QzAsMHhBOCwweDdBLDB4RTYsMHg2MSwweDhBLDB4
N0YsMHg1RiwweEZFLAorICAgIDB4QUIsMHg5QiwweDA1LDB4NjIsMHgwQiwweEI1LDB4NTUsMHg1
NSwweDZFLDB4QUMsMHg0NywweDcyLDB4MDIsMHgwQSwweEFCLDB4RjUsCisgICAgMHhBRiwweEJD
LDB4RUMsMHhBMywweDAyLDB4MjIsMHhCQiwweEU1LDB4Q0YsMHhCQywweDJFLDB4QUMsMHg4MCww
eDBBLDB4QkYsMHg1NywKKyAgICAweEQwLDB4QkMsMHg0RSwweEFDLDB4ODAsMHgyOCwweEFBLDB4
QTUsMHgxMCwweEM1LDB4QUYsMHhCQywweDlELDB4OTcsMHgzQiwweEE1LAorICAgIDB4NjYsMHg3
MiwweDI1LDB4NkEsMHg2QiwweEVBLDB4N0EsMHhCQSwweDQ2LDB4NzIsMHgwNSwweDZBLDB4MEQs
MHg4MiwweDAwLDB4MkMsCisgICAgMHg2NywweDcyLDB4MjUsMHg2QSwweEU2LDB4RDMsMHg2Riww
eEU3LDB4NjYsMHg3MiwweDI1LDB4NkEsMHgzQSwweDFCLDB4OTEsMHg4RiwKKyAgICAweDQ2LDB4
NzIsMHgwNSwweDZBLDB4QkEsMHhGQSwweEVFLDB4NDAsMHgyNiwweDZBLDB4MDUsMHg2QSwweEEy
LDB4ODEsMHgxNywweEJELAorICAgIDB4NDYsMHg3MiwweEU0LDB4NjEsMHhGRSwweEZBLDB4QTIs
MHgyQSwweDY3LDB4NzIsMHhFNSwweDY5LDB4OUQsMHhCRiwweDJGLDB4RkUsCisgICAgMHg0Niww
eDcyLDB4RTQsMHg2MSwweEE4LDB4OEEsMHgzMCwweDE4LDB4NDYsMHg3MiwweDA1LDB4NkEsMHhG
RiwweEZELDB4NkEsMHgyOCwKKyAgICAweDQ2LDB4NzIsMHgwNSwweDZBLDB4QTAsMHg2MCwweEJF
LDB4M0MsMHg4NywweDdBLDB4MDUsMHg2QSwweDBCLDB4NTcsMHhENywweEZGLAorICAgIDB4QTcs
MHg3QSwweDA1LDB4NkEsMHgwOCwweEFBLDB4NjcsMHg1NywweEE3LDB4N0EsMHgwNSwweDZBLDB4
MjAsMHg4MiwweEFCLDB4QkQsCisgICAgMHhBNywweDgyLDB4NDYsMHg3MiwweEMzLDB4MjMsMHgy
QSwweEI5LDB4QzcsMHg4MiwweDg3LDB4N0EsMHhERCwweEY3LDB4REYsMHg3OSwKKyAgICAweEM3
LDB4ODIsMHg2NiwweDcyLDB4NzcsMHhBRSwweEVBLDB4RTMsMHhDNywweDgyLDB4NjYsMHg3Miww
eDhCLDB4QUUsMHhCQiwweERGLAorICAgIDB4QzcsMHg4MiwweDg3LDB4N0EsMHg3OSwweEVBLDB4
RTIsMHg2MiwweEM3LDB4ODIsMHg2NiwweDcyLDB4MjksMHhBQSwweEZGLDB4N0YsCisgICAgMHhD
NywweDgyLDB4ODcsMHg3QSwweEY3LDB4NkQsMHhGOSwweDdBLDB4QzgsMHg4MiwweDY2LDB4N0Es
MHhGOSwweEJFLDB4QkEsMHhBMywKKyAgICAweEM3LDB4ODIsMHg2NywweDdBLDB4RkYsMHhBQSww
eDZBLDB4RkEsMHhDOCwweDgyLDB4ODcsMHg3QSwweERELDB4REQsMHg2OCwweEY2LAorICAgIDB4
QTcsMHg3QSwweDg2LDB4N0EsMHg2RCwweDgzLDB4MEIsMHgwRSwweEM2LDB4ODIsMHg2NSwweDcy
LDB4REUsMHhFRSwweEU4LDB4QjgsCisgICAgMHhDNywweDgyLDB4NjYsMHg3MiwweDU2LDB4RkYs
MHhBQiwweDhBLDB4QzcsMHg4MiwweDY2LDB4NzIsMHg3NywweDdGLDB4QUEsMHgyRSwKKyAgICAw
eEE3LDB4N0EsMHg2NiwweDcyLDB4RkQsMHhGRiwweDc4LDB4QzAsMHhBNiwweDdBLDB4NjYsMHg3
MiwweDVFLDB4NjUsMHhFQiwweEU5LAorICAgIDB4NjYsMHg3MiwweDQ0LDB4NTEsMHg3RSwweDc4
LDB4RTgsMHhBMCwweEE2LDB4NjEsMHhFMywweDQwLDB4N0YsMHhGQSwweEU4LDB4QTgsCisgICAg
MHhBNSwweDU5LDB4MjMsMHg0OSwweDU1LDB4NzcsMHhGRiwweEZFLDB4NjQsMHg1OSwweDIzLDB4
NTEsMHgyRSwweEJBLDB4REEsMHhFMiwKKyAgICAweDQ0LDB4NTEsMHgwMywweDUxLDB4NjAsMHgw
MCwweEUwLDB4QTAsMHg0NCwweDUxLDB4QzIsMHg0MCwweEZGLDB4NzYsMHhGRSwweDJBLAorICAg
IDB4MDMsMHg0OSwweEMyLDB4NDAsMHgyQiwweDg3LDB4RTcsMHgwQywweDg1LDB4NjEsMHgwMyww
eDQ5LDB4RTIsMHhGRCwweEQ5LDB4RkQsCisgICAgMHhDNiwweDYxLDB4MjQsMHg0OSwweDJFLDB4
QTcsMHhCRiwweEVELDB4QzYsMHg2MSwweDI0LDB4NDksMHhBMCwweEFBLDB4RkYsMHg3RiwKKyAg
ICAweEE2LDB4NjEsMHg0NCwweDQ5LDB4NzgsMHg1RSwweEZGLDB4RkIsMHg4NSwweDUxLDB4RTIs
MHgzOCwweDgyLDB4RjgsMHhEQSwweDdFLAorICAgIDB4MDMsMHg0MSwweEExLDB4MzAsMHg4MCww
eEVBLDB4N0EsMHg1RiwweEUyLDB4MzgsMHhBMiwweDMwLDB4MEMsMHgyQiwweDJGLDB4MjksCisg
ICAgMHgyMywweDQxLDB4RTMsMHgzOCwweEY3LDB4QUEsMHhBQSwweEJBLDB4NDQsMHg0MSwweDAz
LDB4NDEsMHg1NSwweEY1LDB4OEIsMHhFOCwKKyAgICAweDQ0LDB4NDEsMHgwMywweDQxLDB4QkYs
MHgzRiwweDI3LDB4MTcsMHg0NCwweDQxLDB4RTIsMHgzOCwweDZBLDB4RjAsMHhFMCwweEUwLAor
ICAgIDB4QzIsMHg0MCwweDAzLDB4MzksMHhFNywweEFGLDB4QUQsMHhGQiwweDIzLDB4NDEsMHhD
MiwweDM4LDB4NjUsMHhCRiwweDhELDB4MEEsCisgICAgMHg4NCwweDU5LDB4MDMsMHg0MSwweDlE
LDB4QTksMHgwRiwweDBCLDB4QzUsMHg2MSwweDY0LDB4NTEsMHhCRCwweDM3LDB4MkEsMHgyQSwK
KyAgICAweDI2LDB4NzIsMHhDNSwweDYxLDB4RTUsMHhGRiwweEZGLDB4MkYsMHgwNiwweDcyLDB4
QTQsMHg2MSwweDc4LDB4NzgsMHg3OCwweEFFLAorICAgIDB4MDYsMHg3MiwweDg0LDB4NTksMHhG
NywweERGLDB4RkIsMHg4QSwweEU1LDB4NjEsMHhBNCwweDYxLDB4RjcsMHgzRCwweDJELDB4RDcs
CisgICAgMHhDNSwweDYxLDB4MjMsMHg0OSwweEY4LDB4NzgsMHg3OCwweDY4LDB4ODUsMHg1MSww
eDAzLDB4NDksMHgwQSwweEJCLDB4RkYsMHhGNSwKKyAgICAweDY0LDB4NTEsMHgyMywweDQ5LDB4
MjAsMHhCMCwweEZELDB4QjcsMHhFNiwweDYxLDB4NjQsMHg1MSwweDgzLDB4QkEsMHhGRCwweEQ1
LAorICAgIDB4ODUsMHg1MSwweDAyLDB4NDEsMHg3RSwweDVFLDB4NUMsMHg3OCwweDQzLDB4NDks
MHgwMywweDQxLDB4QTksMHhBNSwweEFELDB4QUQsCisgICAgMHhBNSwweDU5LDB4NDQsMHg0OSww
eDJELDB4MEIsMHgwOSwweEFELDB4QTUsMHg1OSwweDQ0LDB4NTEsMHhBQSwweDZFLDB4N0MsMHg1
OCwKKyAgICAweEU2LDB4NjksMHgyMywweDQ5LDB4MEEsMHhCRiwweEZGLDB4RkQsMHg2OCwweDdB
LDB4ODUsMHg1OSwweDAyLDB4MEIsMHgyRCwweDJELAorICAgIDB4QTksMHg4QSwweDQ3LDB4N0Es
MHg3RSwweDZBLDB4RjMsMHhBRiwweDg4LDB4ODIsMHhDNSwweDY5LDB4RDUsMHhGRiwweEVBLDB4
ODAsCisgICAgMHg2NywweDdBLDB4MDUsMHg3MiwweDhCLDB4MkEsMHgyQiwweEU3LDB4QTgsMHg4
MiwweDI2LDB4NkEsMHgyNywweDI3LDB4QkEsMHg3QSwKKyAgICAweEM5LDB4OEEsMHg0NywweDcy
LDB4MEEsMHhBRiwweEJCLDB4QTUsMHhBOCwweDgyLDB4NDYsMHg3MiwweDYwLDB4RTgsMHg3RSww
eDU3LAorICAgIDB4ODgsMHg4MiwweDA2LDB4NkEsMHhCNywweEI3LDB4QUYsMHgwRSwweEE4LDB4
ODIsMHg0NywweDdBLDB4QjUsMHhGRCwweEVBLDB4ODAsCisgICAgMHg4OCwweDdBLDB4MjYsMHg3
MiwweDdDLDB4RkEsMHhCOCwweDg4LDB4ODgsMHg4MiwweDI2LDB4NzIsMHgyOSwweEFBLDB4QUUs
MHg4MiwKKyAgICAweEM5LDB4OEEsMHg0NywweDdBLDB4RTIsMHhGRiwweDVELDB4NzcsMHg4OCww
eDdBLDB4NDcsMHg3QSwweDNCLDB4MkIsMHgwRCwweDVFLAorICAgIDB4QTgsMHg4MiwweDI3LDB4
NzIsMHgwQSwweEI3LDB4NzUsMHg1NywweEM5LDB4ODIsMHgwNiwweDZBLDB4MDAsMHhBQSwweEZG
LDB4RDUsCisgICAgMHhDOSwweDgyLDB4MjcsMHg2QSwweDgwLDB4MkEsMHg5RiwweEQ1LDB4Q0Ms
MHg5QiwweDY4LDB4NzIsMHgwRiwweEFGLDB4RkQsMHhENSwKKyAgICAweEQwLDB4QkMsMHg0Niww
eDcyLDB4MDIsMHgyQSwweDdGLDB4NTUsMHgxMSwweEM1LDB4NDYsMHg3MiwweDAwLDB4QkUsMHhE
RCwweDU1LAorICAgIDB4RjQsMHhFNSwweEM4LDB4N0EsMHgwMiwweDJCLDB4QUYsMHhGNSwweDc2
LDB4RUUsMHg0RSwweEFDLDB4MDAsMHgwMCwweDBCLDB4QkQsCisgICAgMHg5NiwweEY2LDB4RDMs
MHhERCwweDAwLDB4MDAsMHhBQSwweEFELDB4OTYsMHhGNiwweDU1LDB4RUUsMHg4MCwweDIwLDB4
RUYsMHhGQiwKKyAgICAweDk2LDB4RjYsMHg1NiwweEVFLDB4RUEsMHhGRSwweDlGLDB4NUYsMHg1
NSwweEY2LDB4NzYsMHhFRSwweDU1LDB4NTUsMHhERCwweEZGLAorICAgIDB4NzYsMHhGNiwweDM1
LDB4RTYsMHhFMCwweDdFLDB4REIsMHhGRiwweDc1LDB4RUUsMHgzNCwweEU2LDB4RTAsMHhEOSww
eEY3LDB4NTcsCisgICAgMHg1NSwweEVFLDB4MTQsMHhFNiwweDg4LDB4QUEsMHhGRSwweEZGLDB4
NzUsMHhFRSwweDM0LDB4RTYsMHhBQiwweEVGLDB4RDUsMHg1NSwKKyAgICAweDk2LDB4RjYsMHgz
NSwweEU2LDB4MkEsMHhFQSwweEFELDB4RjUsMHg3NSwweEVFLDB4MzQsMHhFRSwweEE4LDB4RkEs
MHhGRiwweDdGLAorICAgIDB4OTYsMHhGNiwweDM0LDB4RTYsMHg4QiwweEJCLDB4RjcsMHg1NSww
eDk2LDB4RjYsMHgzNCwweEU2LDB4OEEsMHhBQSwweEJGLDB4RjUsCisgICAgMHg5NiwweEY2LDB4
MzUsMHhFNiwweDgwLDB4RUEsMHhGRSwweDVELDB4NzUsMHhFRSwweDM1LDB4RTYsMHg4OCwweEZF
LDB4RkYsMHg1NSwKKyAgICAweDc1LDB4RUUsMHgzNSwweEU2LDB4QkUsMHgxQSwweEFGLDB4QjUs
MHg3NiwweEVFLDB4NTUsMHhFRSwweERCLDB4RjgsMHg4QSwweDgyLAorICAgIDB4NTYsMHhGNiww
eDk2LDB4RUUsMHhCRSwweEZFLDB4RkYsMHhGRSwweDk2LDB4RjYsMHg3NiwweEVFLDB4NTksMHhG
RSwweEJBLDB4MkEsCisgICAgMHg5NiwweEY2LDB4NTUsMHhFRSwweEZGLDB4RkUsMHhGQSwweEY4
LDB4NTUsMHhFRSwweDE1LDB4RTYsMHhGQywweEZDLDB4QjgsMHhDMCwKKyAgICAweDU1LDB4RUUs
MHhEMywweERELDB4NjIsMHg3MiwweEE4LDB4QTgsMHhGMywweERELDB4NzIsMHhDRCwweEZFLDB4
RkUsMHhGQywweDc4LAorICAgIDB4RDMsMHhERCwweDcyLDB4RDUsMHgwQiwweDJBLDB4MkIsMHgw
RCwweDE0LDB4RTYsMHhEMywweERELDB4RkQsMHhERiwweEFGLDB4QkQsCisgICAgMHgxNCwweEU2
LDB4RDMsMHhERCwweDlGLDB4M0YsMHgyRSwweDBBLDB4NTUsMHhFRSwweDE0LDB4RTYsMHg3RCww
eDdGLDB4RkIsMHhBQiwKKyAgICAweDc1LDB4RUUsMHgzNCwweEU2LDB4MkQsMHhBOSwweEE1LDB4
MkIsMHg5NiwweEVFLDB4NzUsMHhFRSwweDhBLDB4RTUsMHhBRCwweDM3LAorICAgIDB4OTYsMHhF
RSwweDc2LDB4RUUsMHg3NSwweEVGLDB4RkUsMHhGNiwweDk2LDB4RUUsMHg3NiwweEVFLDB4NTcs
MHg1NSwweDVBLDB4NkMsCisgICAgMHg1NSwweEVFLDB4OTIsMHhENSwweDc4LDB4RTAsMHg4MCww
eDAwLDB4RjQsMHhERCwweDcyLDB4Q0QsMHg1NSwweEZFLDB4RkEsMHhFOCwKKyAgICAweEIzLDB4
REQsMHgzMSwweENELDB4RjcsMHhGRSwweEVBLDB4ODAsMHg3MiwweEQ1LDB4NTEsMHhDRCwweDND
LDB4MkUsMHgyRiwweDIzLAorICAgIDB4QjMsMHhENSwweEVELDB4QTMsMHg2QSwweEU4LDB4QTgs
MHgwMCwweEIwLDB4QkMsMHgyNywweDZBLDB4NTcsMHg1RSwweEZFLDB4RTgsCisgICAgMHg4OSww
eDdBLDB4RTYsMHg2MSwweERELDB4RUUsMHhBQSwweDAwLDB4ODgsMHg3QSwweDA2LDB4NkEsMHgz
RCwweEZGLDB4REUsMHhBMCwKKyAgICAweEVDLDB4OUIsMHgyNiwweDZBLDB4MEIsMHg5NSwweEQ1
LDB4RDUsMHgwRSwweEE0LDB4NjgsMHg3MiwweDAwLDB4QUEsMHhGRiwweDU1LAorICAgIDB4NEUs
MHhBQywweDg5LDB4NzIsMHgyMiwweDBBLDB4MkYsMHgyNSwweDEwLDB4QzUsMHg4RSwweEI0LDB4
MkQsMHhBOSwweDBELDB4QTksCisgICAgMHg2NiwweDcyLDB4MjYsMHg2QSwweDdBLDB4QTgsMHgz
QSwweEYyLDB4NjYsMHg3MiwweDA0LDB4NkEsMHhBNiwweEEzLDB4RkUsMHhGQSwKKyAgICAweDY2
LDB4NzIsMHgyNSwweDZBLDB4QUEsMHhBRSwweEJCLDB4RkIsMHg2NywweDcyLDB4MjYsMHg3Miww
eEFGLDB4QUYsMHg4MywweDZFLAorICAgIDB4NjcsMHg3MiwweDA1LDB4NkEsMHhFRSwweEFCLDB4
OEIsMHg4OSwweDY2LDB4NzIsMHgwNSwweDZBLDB4N0EsMHhGQiwweEFGLDB4MjgsCisgICAgMHg2
NiwweDcyLDB4MDUsMHg2QSwweEJCLDB4QTcsMHhFRSwweDMyLDB4NjYsMHg3MiwweDA1LDB4NkEs
MHhGRiwweEFBLDB4QTgsMHg5RSwKKyAgICAweDY2LDB4NzIsMHgyNSwweDZBLDB4REYsMHhBMyww
eDYyLDB4N0EsMHg4NiwweDcyLDB4MjYsMHg2QSwweDVGLDB4NUYsMHhGQiwweEVCLAorICAgIDB4
NDYsMHg3MiwweDA1LDB4NkEsMHgxRSwweDJGLDB4QUIsMHhBRSwweDY3LDB4NzIsMHgyNiwweDZB
LDB4OUYsMHhGNywweEJCLDB4OEYsCisgICAgMHg2NywweDcyLDB4MDUsMHg2QSwweDc2LDB4Qzcs
MHhFRSwweEY4LDB4NjcsMHg3MiwweDA1LDB4NkEsMHhBRCwweEZGLDB4QkIsMHhCOCwKKyAgICAw
eDg3LDB4N0EsMHhFNCwweDY5LDB4MkQsMHhBRiwweEVBLDB4RUEsMHhBNywweDdBLDB4MDUsMHg2
QSwweDAyLDB4QUEsMHhBRCwweDdGLAorICAgIDB4QTcsMHg3QSwweDA1LDB4NkEsMHgwMCwweDAw
LDB4QkIsMHhGNSwweEE3LDB4N0EsMHg2NiwweDcyLDB4OEUsMHg4QSwweDBCLDB4MjUsCisgICAg
MHhFOCwweDgyLDB4ODYsMHg3QSwweEZCLDB4NTUsMHg1RSwweDUzLDB4QTcsMHg4MiwweDg3LDB4
N0EsMHg1NSwweDJGLDB4MkYsMHhCQiwKKyAgICAweEM3LDB4ODIsMHg4NywweDdBLDB4RkYsMHg1
RSwweEY4LDB4QUEsMHhBNywweDgyLDB4NjcsMHg3QSwweDhBLDB4QUUsMHgzQywweEIwLAorICAg
IDB4QzcsMHg4MiwweDg3LDB4N0EsMHg2QiwweEZBLDB4RkIsMHhGQSwweEM3LDB4ODIsMHg4Nyww
eDdBLDB4Q0YsMHg3QiwweEZFLDB4NUYsCisgICAgMHhDNywweDgyLDB4ODYsMHg3QSwweEJGLDB4
RkIsMHhGRiwweDJFLDB4QzcsMHg4MiwweDg2LDB4N0EsMHg2RiwweEZGLDB4QjgsMHg3OCwKKyAg
ICAweEM3LDB4ODIsMHg4NiwweDdBLDB4NEUsMHhFRSwweEI3LDB4MzUsMHhDNywweDgyLDB4QTcs
MHg3QSwweEY1LDB4QjUsMHhCRSwweEVELAorICAgIDB4QTcsMHg4MiwweDg3LDB4N0EsMHhCOCww
eEYzLDB4ODgsMHgwQSwweEE3LDB4ODIsMHg4NiwweDcyLDB4N0YsMHhCQywweDIyLDB4MDAsCisg
ICAgMHhBNywweDgyLDB4MDYsMHg2QSwweDdBLDB4QTIsMHhBMCwweDgwLDB4MjYsMHg3MiwweDY0
LDB4NTksMHg1RSwweDVDLDB4NzgsMHhFMCwKKyAgICAweEM1LDB4NjksMHg2NCwweDU5LDB4NTUs
MHg3NSwweERGLDB4QUEsMHhDNSwweDYxLDB4MjMsMHg1MSwweDdGLDB4REIsMHhBQSwweDA4LAor
ICAgIDB4QzUsMHg2OSwweDIzLDB4NTEsMHg3RiwweDdCLDB4QTgsMHhBOCwweEM2LDB4NjksMHg0
NCwweDUxLDB4NTUsMHhGNSwweEJGLDB4MEIsCisgICAgMHhBNSwweDYxLDB4MDMsMHg0OSwweDVG
LDB4RUUsMHhBMCwweDgwLDB4ODUsMHg1OSwweDIzLDB4NDksMHhBRCwweEEyLDB4MjgsMHhFMiwK
KyAgICAweDg1LDB4NTEsMHg0NCwweDUxLDB4OEIsMHhBMiwweERDLDB4NTYsMHg4NSwweDUxLDB4
MjMsMHg0OSwweDdBLDB4RDgsMHhGRSwweEZGLAorICAgIDB4ODUsMHg1MSwweDAzLDB4MzksMHhD
MiwweEVBLDB4RkEsMHg3RiwweDI0LDB4NDEsMHhBMSwweDMwLDB4RjgsMHhGOCwweEQ2LDB4RDcs
CisgICAgMHhDMiwweDMwLDB4QTIsMHgzMCwweDVGLDB4MzUsMHgyNSwweDA4LDB4RTIsMHgzOCww
eEEyLDB4MzAsMHgyQiwweEFCLDB4QTIsMHhCMiwKKyAgICAweDQ0LDB4NDEsMHhFMywweDM4LDB4
MkYsMHgyRCwweEFGLDB4RkEsMHg2NCwweDQ5LDB4MDMsMHgzOSwweEZDLDB4REYsMHg3RiwweEY1
LAorICAgIDB4MDMsMHg0MSwweEUyLDB4MzgsMHgyOCwweDYwLDB4NzgsMHg2RiwweDIzLDB4NDEs
MHhFMiwweDM4LDB4ODAsMHgyQiwweEJELDB4MEQsCisgICAgMHg0NCwweDQ5LDB4RTIsMHgzOCww
eDc1LDB4QUYsMHhBQSwweDIyLDB4ODUsMHg1MSwweDAzLDB4NDEsMHhFRiwweDJELDB4OEEsMHhF
QSwKKyAgICAweDg0LDB4NTEsMHgyMywweDQ5LDB4M0QsMHhCRiwweEY3LDB4RkQsMHhDNSwweDYx
LDB4NDQsMHg1MSwweDBBLDB4M0UsMHgyRCwweEZELAorICAgIDB4NDcsMHg3MiwweEE1LDB4NjEs
MHgwQSwweDBBLDB4QUIsMHhGOSwweDY4LDB4N0EsMHhFNSwweDY5LDB4NTUsMHhCNywweDhGLDB4
MDksCisgICAgMHg2OCwweDdBLDB4RTUsMHg2OSwweDVGLDB4RkUsMHhFOCwweEUwLDB4MDYsMHg2
QSwweDY0LDB4NTEsMHhGRSwweEZBLDB4NUMsMHg1RSwKKyAgICAweEM1LDB4NjEsMHgwMywweDQx
LDB4RTgsMHhFOCwweEZFLDB4RkYsMHg0NCwweDQ5LDB4RTIsMHg0MCwweDBFLDB4QkMsMHg3OCww
eEZFLAorICAgIDB4QTYsMHg1OSwweDIzLDB4NDksMHhFRiwweDhCLDB4QkQsMHhBNSwweDg1LDB4
NTEsMHgwMywweDQxLDB4MkEsMHhCRSwweDZBLDB4RjAsCisgICAgMHhBNSwweDUxLDB4MDMsMHg0
MSwweDc4LDB4RkEsMHhGRiwweEQ1LDB4NDQsMHg0OSwweDAzLDB4NDEsMHgyRCwweDBELDB4MEEs
MHgyQiwKKyAgICAweDg0LDB4NTEsMHg0NCwweDQ5LDB4QkYsMHhCRCwweDNGLDB4Q0EsMHg4NSww
eDUxLDB4MjMsMHg0OSwweDkyLDB4RjIsMHhFMiwweDhBLAorICAgIDB4QzYsMHg2MSwweDIzLDB4
NDksMHhFRCwweEJGLDB4M0QsMHgyNSwweDY4LDB4N0EsMHhDNiwweDYxLDB4MDUsMHgyNSwweEE1
LDB4MkQsCisgICAgMHg0QSwweDkzLDB4NjgsMHg3QSwweEJGLDB4MkQsMHhBRCwweEFCLDB4NkIs
MHg5QiwweEM5LDB4OEEsMHg3RiwweEVFLDB4RTAsMHhFQSwKKyAgICAweEU5LDB4OEEsMHgyNiww
eDZBLDB4N0YsMHhGQSwweEU4LDB4RTIsMHgyNiwweDcyLDB4RTUsMHg2OSwweDAyLDB4QUUsMHgw
NiwweDk0LAorICAgIDB4NjcsMHg3MiwweEU2LDB4NjksMHgyQiwweEFGLDB4QkQsMHhCRiwweDg4
LDB4N0EsMHgyNiwweDcyLDB4OUMsMHhBNSwweDM3LDB4M0IsCisgICAgMHg4OCwweDgyLDB4NDcs
MHg3QSwweEFGLDB4REUsMHg4MiwweDAwLDB4QzgsMHg4QSwweDY3LDB4N0EsMHhCQSwweDNCLDB4
QUYsMHg5NSwKKyAgICAweDA5LDB4OTMsMHhBOCwweDgyLDB4NUQsMHhCRiwweEFBLDB4MkIsMHgw
OSwweDhCLDB4NjcsMHg3QSwweEY3LDB4RkUsMHhGQSwweEE4LAorICAgIDB4ODgsMHg4MiwweDQ3
LDB4N0EsMHhGRiwweDVFLDB4RkEsMHgwMiwweDY4LDB4N0EsMHgyNywweDcyLDB4QjgsMHhGRCww
eDdELDB4QzMsCisgICAgMHg2OCwweDdBLDB4MDYsMHg2QSwweDU3LDB4NUUsMHhEQiwweDJGLDB4
ODgsMHg3QSwweEU2LDB4NjEsMHg1RiwweDVELDB4NkUsMHhBMiwKKyAgICAweDY3LDB4N0EsMHhD
NiwweDYxLDB4QjcsMHhCRCwweEFCLDB4MkEsMHg4OCwweDdBLDB4MjYsMHg2QSwweDhCLDB4ODYs
MHhBRiwweDY4LAorICAgIDB4ODcsMHg3MiwweDQ2LDB4NzIsMHhBQywweDgyLDB4M0EsMHhENSww
eDY3LDB4NzIsMHgyNiwweDZBLDB4N0UsMHg3QywweEIwLDB4QTIsCisgICAgMHhBOCwweDdBLDB4
RTYsMHg2MSwweDBBLDB4QUIsMHhGNywweDVGLDB4RjAsMHhDNCwweDg4LDB4NzIsMHgyQiwweEFE
LDB4OTUsMHg1NSwKKyAgICAweDM1LDB4RUUsMHg0QSwweDkzLDB4MDIsMHgwQSwweDJCLDB4QkQs
MHg3NiwweEY2LDB4RDMsMHhERCwweDAwLDB4MjIsMHhBQSwweDU1LAorICAgIDB4NTUsMHhFRSww
eEY0LDB4RTUsMHgwMCwweDAwLDB4OEEsMHg5NSwweDU1LDB4RUUsMHgxNSwweEU2LDB4OEEsMHhF
MiwweDZDLDB4N0YsCisgICAgMHg1NSwweEVFLDB4MTQsMHhFNiwweEEyLDB4QTIsMHgyMywweEFG
LDB4MTUsMHhFRSwweDM0LDB4RTYsMHg3OSwweDdGLDB4N0QsMHhCRiwKKyAgICAweDM1LDB4RTYs
MHgxNCwweEU2LDB4QTAsMHhCMCwweDY4LDB4NEYsMHgzNCwweEU2LDB4RDQsMHhFNSwweEEwLDB4
MkEsMHgwQSwweEJBLAorICAgIDB4MzQsMHhFNiwweEY0LDB4RTUsMHgwOCwweDA4LDB4OTYsMHhC
RSwweDE1LDB4RUUsMHgzNCwweEU2LDB4NzUsMHhGRiwweDdGLDB4RkYsCisgICAgMHgzNSwweEU2
LDB4RDMsMHhERCwweEEyLDB4RkEsMHhERSwweEY4LDB4MzUsMHhFNiwweEQzLDB4REQsMHgyQSww
eEZCLDB4RkQsMHhGNywKKyAgICAweDE0LDB4RTYsMHhEMywweERELDB4RTgsMHhGRCwweEI1LDB4
MkIsMHgzNSwweEU2LDB4RjQsMHhFNSwweDAzLDB4MkIsMHgwQiwweDNGLAorICAgIDB4NzYsMHhF
RSwweDM1LDB4RTYsMHg5NSwweEJELDB4QUIsMHhBRiwweDk2LDB4RjYsMHg1NSwweEVFLDB4RUIs
MHhGRiwweEFGLDB4QTUsCisgICAgMHg3NiwweEY2LDB4OTYsMHhFRSwweEU4LDB4RkUsMHhCRiww
eEZCLDB4OTYsMHhGNiwweDU1LDB4RUUsMHg4OCwweEVBLDB4N0EsMHg1RSwKKyAgICAweDc2LDB4
RUUsMHgzNSwweEU2LDB4QzAsMHhBRSwweEY1LDB4REYsMHg1NSwweEVFLDB4MzUsMHhFNiwweEMw
LDB4NjIsMHg4QSwweDJCLAorICAgIDB4NTUsMHhFRSwweEY0LDB4REQsMHg3QSwweDdBLDB4RUEs
MHhFMCwweDE0LDB4RTYsMHg3MiwweENELDB4N0YsMHg3RSwweEU4LDB4MDAsCisgICAgMHhEMyww
eERELDB4NzIsMHhDRCwweDlELDB4REYsMHhCRSwweDA4LDB4MTQsMHhFNiwweEIyLDB4REQsMHhB
RiwweEE1LDB4M0QsMHgwQSwKKyAgICAweDM0LDB4RTYsMHgxNCwweEU2LDB4NzUsMHhFNSwweEY3
LDB4NTUsMHg1NSwweEVFLDB4RjQsMHhERCwweDhCLDB4QkIsMHhCRiwweEY3LAorICAgIDB4NzUs
MHhFRSwweDM1LDB4RTYsMHgwRSwweDJGLDB4QkQsMHhCRCwweDk2LDB4RUUsMHg3NSwweEVFLDB4
RUQsMHhGRiwweDBBLDB4MEEsCisgICAgMHhCNiwweEY2LDB4NzYsMHhFRSwweDdGLDB4RkIsMHhG
RSwweEZFLDB4OTYsMHhFRSwweDc2LDB4RUUsMHg3QywweEZFLDB4RkYsMHhGRSwKKyAgICAweDk2
LDB4RUUsMHg1NSwweEU2LDB4N0IsMHhGQSwweEE4LDB4QUEsMHg3NSwweEVFLDB4QjIsMHhENSww
eDdGLDB4RDgsMHhFOCwweEUwLAorICAgIDB4QjMsMHhERCwweEYzLDB4RDUsMHhBQSwweEVCLDB4
QUIsMHhBQiwweEIzLDB4REQsMHg3MSwweENELDB4N0YsMHg3QywweDVDLDB4RTAsCisgICAgMHhE
MywweERELDB4NzEsMHhDRCwweDBBLDB4MEIsMHgwRiwweDI1LDB4RjQsMHhERCwweDJFLDB4QUMs
MHg3OCwweEEwLDB4MDAsMHgwMCwKKyAgICAweEIzLDB4RDUsMHhDOSwweDdBLDB4NTcsMHhGQSww
eDgwLDB4MDAsMHgxMCwweEM1LDB4QTgsMHg3QSwweDU1LDB4NUQsMHhGQSwweDgwLAorICAgIDB4
MEQsMHhBNCwweDg3LDB4NzIsMHg1NSwweDU1LDB4RkUsMHg4MCwweDhCLDB4OTMsMHgyNiwweDZB
LDB4NUYsMHhGRCwweEJGLDB4ODAsCisgICAgMHhBRiwweEI0LDB4QzksMHg3QSwweDM1LDB4MjUs
MHgyOSwweDBCLDB4RjAsMHhDNCwweEFGLDB4QkMsMHgwOSwweDI5LDB4MEEsMHgwRSwKKyAgICAw
eDY2LDB4NzIsMHgyNSwweDZBLDB4NjAsMHhCQSwweEQyLDB4QTAsMHg4NywweDcyLDB4NDYsMHg3
MiwweDVBLDB4NzYsMHg3NywweEJBLAorICAgIDB4NjYsMHg3MiwweDI2LDB4NzIsMHhCQSwweEZG
LDB4RUYsMHhFQSwweDg2LDB4NzIsMHgyNiwweDcyLDB4N0YsMHhERiwweEVELDB4RDUsCisgICAg
MHg2NywweDdBLDB4MjYsMHg2QSwweENELDB4OEIsMHhBQywweEFELDB4ODcsMHg3QSwweDI1LDB4
NkEsMHhBNSwweDlELDB4QkEsMHhCRiwKKyAgICAweDg3LDB4N0EsMHgwNCwweDZBLDB4QkIsMHhG
RSwweERBLDB4QTIsMHg2NywweDdBLDB4MjUsMHg2QSwweDVGLDB4QzksMHgyRiwweEJGLAorICAg
IDB4NjYsMHg3MiwweDI2LDB4NzIsMHg3RCwweEZFLDB4OTYsMHhERSwweDY2LDB4NzIsMHgwNSww
eDZBLDB4MDIsMHhDQSwweDI3LDB4MDEsCisgICAgMHg2NiwweDcyLDB4MjYsMHg2QSwweEQ2LDB4
QUQsMHhCRSwweDg4LDB4NjYsMHg3MiwweDI2LDB4NkEsMHhGRiwweDNELDB4QkUsMHhBRSwKKyAg
ICAweDg3LDB4NzIsMHgyNiwweDcyLDB4RDcsMHhENSwweEZGLDB4RkIsMHg0NiwweDcyLDB4MjUs
MHg2QSwweEEwLDB4ODMsMHg4QSwweEVBLAorICAgIDB4NDYsMHg3MiwweDA1LDB4NkEsMHg4Miww
eDBGLDB4MkIsMHgzQSwweDY2LDB4NzIsMHgwNSwweDZBLDB4NkUsMHhFQywweEQ4LDB4RkUsCisg
ICAgMHg0NSwweDcyLDB4MDUsMHg2QSwweDlELDB4OTAsMHhDMiwweDM4LDB4ODcsMHg3QSwweDA0
LDB4NkEsMHgyNywweEZGLDB4REYsMHg3RiwKKyAgICAweEE3LDB4N0EsMHgwNCwweDZBLDB4QjAs
MHhCRCwweEI3LDB4RUQsMHhBNywweDgyLDB4MjUsMHg3MiwweDAyLDB4QTAsMHhGQiwweDdFLAor
ICAgIDB4QTcsMHg4MiwweDQ2LDB4NzIsMHgwMCwweEE4LDB4QTMsMHhGRCwweEE3LDB4ODIsMHg2
NywweDdBLDB4QUEsMHgyQSwweEZBLDB4ODUsCisgICAgMHhDOCwweDgyLDB4ODYsMHg3QSwweEU1
LDB4QUYsMHhFQSwweERCLDB4QTcsMHg4MiwweDY2LDB4N0EsMHgwMCwweDgwLDB4MTgsMHg0MCwK
KyAgICAweEM3LDB4ODIsMHg4NiwweDdBLDB4OUUsMHhCRiwweDhDLDB4QUMsMHhDNywweDgyLDB4
ODcsMHg3QSwweEY4LDB4MEEsMHhBMiwweEQ4LAorICAgIDB4RTgsMHg4QSwweDg2LDB4N0EsMHhC
NywweDJGLDB4M0IsMHhBRiwweEU3LDB4ODIsMHhBNywweDgyLDB4REEsMHhENiwweDc1LDB4REYs
CisgICAgMHhDNywweDgyLDB4ODYsMHg3QSwweEE2LDB4RjYsMHhEQywweEZDLDB4QzgsMHg4Miww
eDg3LDB4ODIsMHhCRSwweDI3LDB4MkYsMHhBMiwKKyAgICAweEU4LDB4OEEsMHg4NywweDdBLDB4
NUYsMHg1RiwweEVGLDB4QUIsMHhBNywweDgyLDB4RTUsMHg2OSwweEY2LDB4QkUsMHgyOCwweDI4
LAorICAgIDB4RTgsMHg4QSwweDI2LDB4NzIsMHg1NSwweEVBLDB4ODAsMHhBMCwweDg3LDB4ODIs
MHhFNSwweDY5LDB4NTcsMHhGNywweEE4LDB4MDgsCisgICAgMHhBNywweDdBLDB4QTUsMHg2MSww
eEQ3LDB4RkUsMHhBQSwweEEyLDB4NDcsMHg3MiwweEE1LDB4NTksMHhGNywweDdCLDB4NTgsMHg1
OCwKKyAgICAweEE1LDB4NTksMHg0NCwweDUxLDB4RTgsMHhGMCwweDc4LDB4NUEsMHgyMywweDUx
LDB4NDQsMHg0OSwweDU3LDB4RTcsMHhERSwweDVGLAorICAgIDB4NDQsMHg0OSwweEUzLDB4Mzgs
MHg4MCwweDgwLDB4ODAsMHg3MCwweDY0LDB4NDksMHhDMiwweDMwLDB4RTgsMHhGRiwweDdGLDB4
N0YsCisgICAgMHgyMywweDQxLDB4QTIsMHgzMCwweDhBLDB4RUYsMHhBRCwweEFELDB4MDMsMHgz
OSwweEExLDB4MzAsMHg1NSwweDVFLDB4RjgsMHhGQywKKyAgICAweDAzLDB4MzksMHhDMiwweDMw
LDB4NTUsMHhENSwweDFELDB4MjksMHgyNCwweDM5LDB4QzIsMHgzMCwweDlGLDB4QkYsMHhBRSww
eEI4LAorICAgIDB4MjQsMHg0MSwweDAzLDB4MzksMHg3MywweEZELDB4ODUsMHg1NywweDAzLDB4
MzksMHhBMiwweDMwLDB4QTgsMHhEOCwweEZDLDB4RjgsCisgICAgMHgwMywweDM5LDB4QzIsMHgz
OCwweENCLDB4QzUsMHhCNSwweEE3LDB4NjUsMHg0OSwweEUzLDB4MzgsMHhCNSwweDNGLDB4MkQs
MHgyNSwKKyAgICAweDg1LDB4NTEsMHg0NCwweDQ5LDB4NUQsMHg3RiwweERBLDB4Q0YsMHg2NCww
eDUxLDB4MjMsMHg0MSwweDYyLDB4NjMsMHhFQSwweEZGLAorICAgIDB4NjQsMHg1MSwweDI0LDB4
NDksMHhBNSwweEFGLDB4M0YsMHgyRCwweEE1LDB4NjEsMHg0NCwweDQ5LDB4QTUsMHgzNSwweEFG
LDB4RkUsCisgICAgMHgwNiwweDZBLDB4NjQsMHg1OSwweDBCLDB4MEIsMHhCRiwweEQ1LDB4Njgs
MHg3QSwweEM2LDB4NjEsMHgwQiwweEFBLDB4QTksMHhBRCwKKyAgICAweDY4LDB4N0EsMHhDNiww
eDYxLDB4ODAsMHhDMCwweEVBLDB4REYsMHhFNiwweDYxLDB4NDQsMHg0OSwweDc4LDB4N0MsMHhG
QywweDZFLAorICAgIDB4NDQsMHg0OSwweEMyLDB4MzgsMHhGRiwweDVFLDB4NTQsMHhEQywweDAz
LDB4NDEsMHhFMywweDQwLDB4MzgsMHgzRCwweDFGLDB4REEsCisgICAgMHg4NSwweDUxLDB4MDMs
MHg0MSwweDJGLDB4MDksMHgyQiwweDJELDB4QzYsMHg1OSwweDAzLDB4NDEsMHg3QSwweEVBLDB4
MjgsMHgyMiwKKyAgICAweEM2LDB4NTksMHgwMywweDQxLDB4NTUsMHg1NywweDVBLDB4QTAsMHg2
NCwweDUxLDB4MDMsMHg0MSwweDJCLDB4MkYsMHgyRCwweDhFLAorICAgIDB4QTUsMHg1OSwweDIz
LDB4NDksMHgyOCwweEUwLDB4RjYsMHhENywweDg1LDB4NTksMHgwMywweDQxLDB4QUEsMHhFMiww
eEVGLDB4N0YsCisgICAgMHhBNiwweDU5LDB4RTIsMHg0MCwweDJGLDB4QkYsMHhCNywweEY1LDB4
ODgsMHg3QSwweDg1LDB4NTksMHgyRiwweDJCLDB4MEIsMHhBRCwKKyAgICAweDI5LDB4OEIsMHhB
OCwweDgyLDB4QUEsMHg2MiwweEFGLDB4RjUsMHgyQSwweDkzLDB4ODYsMHg3QSwweDgyLDB4QUEs
MHhFQiwweDc1LAorICAgIDB4QTgsMHg4MiwweDA1LDB4NkEsMHhFOCwweDc4LDB4NTgsMHg3OCww
eDI2LDB4NkEsMHg2MywweDUxLDB4MjgsMHhCQSwweEJGLDB4RjcsCisgICAgMHg0NywweDcyLDB4
QTUsMHg1OSwweDJBLDB4MjMsMHhBQiwweEFELDB4NDcsMHg3MiwweDA2LDB4NkEsMHgyMiwweEVF
LDB4OEYsMHg4NSwKKyAgICAweDg4LDB4N0EsMHgyNiwweDcyLDB4RTgsMHhFRiwweEY5LDB4NTUs
MHhFOSwweDhBLDB4MjYsMHg3MiwweEJGLDB4M0YsMHgyOSwweEFELAorICAgIDB4RTksMHg4QSww
eDg4LDB4ODIsMHgyMiwweDIwLDB4QTgsMHg2RSwweDJBLDB4OTMsMHhBOCwweDgyLDB4QUIsMHgw
QiwweEJCLDB4RjUsCisgICAgMHgwQSwweDkzLDB4QTgsMHg4MiwweDdFLDB4NjAsMHg1RSwweEZG
LDB4QTgsMHg4MiwweDY4LDB4N0EsMHg2NCwweEVFLDB4RjAsMHg2OCwKKyAgICAweDY4LDB4N0Es
MHgyNiwweDcyLDB4QUIsMHhFOCwweDUwLDB4RjAsMHg2NywweDdBLDB4MDYsMHg2QSwweDgwLDB4
NkUsMHhGNywweERGLAorICAgIDB4ODgsMHg3QSwweDI2LDB4NkEsMHgyQiwweDJCLDB4QkYsMHhE
NSwweEE4LDB4ODIsMHg0NiwweDcyLDB4NkEsMHhFMiwweEZGLDB4RjcsCisgICAgMHg4NywweDdB
LDB4MjYsMHg2QSwweDc1LDB4RkYsMHhGOCwweEEyLDB4NjcsMHg2QSwweDA1LDB4NkEsMHgwRiww
eEJCLDB4OTcsMHhCNywKKyAgICAweDY3LDB4NzIsMHhFNiwweDYxLDB4NzIsMHhBMCwweDgwLDB4
QTIsMHg4NywweDcyLDB4RTYsMHg2MSwweDJFLDB4QkIsMHhGNywweEZFLAorICAgIDB4Q0MsMHg5
QiwweDI3LDB4NkEsMHgyRiwweEY3LDB4RjUsMHg1NSwweEFGLDB4QkMsMHg2NywweDcyLDB4MDIs
MHhCRiwweEY1LDB4NTUsCisgICAgMHg5MiwweEQ1LDB4MkEsMHg4QiwweDAyLDB4MkIsMHhGRCww
eDU1LDB4MTQsMHhFNiwweEVDLDB4QTMsMHgwMCwweDBBLDB4QUIsMHhCNSwKKyAgICAweDM1LDB4
RUUsMHg5MywweEQ1LDB4MDIsMHgwOCwweDJBLDB4QUQsMHgzNCwweEVFLDB4MTQsMHhFNiwweEY3
LDB4NUUsMHg3OCwweEVDLAorICAgIDB4MzQsMHhFNiwweEQ0LDB4RTUsMHhBMiwweEEyLDB4QUEs
MHhFMCwweDE0LDB4RTYsMHhGNCwweEU1LDB4ODAsMHhBMiwweEZELDB4RDUsCisgICAgMHgxNCww
eEU2LDB4RjQsMHhFNSwweDA4LDB4MjIsMHhCNiwweEE1LDB4MzUsMHhFRSwweEQzLDB4REQsMHgy
MiwweDBFLDB4RUUsMHg5RiwKKyAgICAweDM1LDB4RTYsMHhGNCwweEU1LDB4QUEsMHhGOCwweERF
LDB4RkYsMHgzNCwweEU2LDB4RjQsMHhERCwweDc1LDB4RkEsMHhGRSwweEZFLAorICAgIDB4MTQs
MHhFNiwweEY0LDB4REQsMHgzRiwweDM3LDB4MzUsMHhENSwweDM0LDB4RTYsMHhGNCwweEU1LDB4
M0YsMHhBRiwweEZGLDB4RkYsCisgICAgMHg1NSwweEVFLDB4MTQsMHhFNiwweDhBLDB4QUIsMHhB
RCwweEI5LDB4OTYsMHhGNiwweDU1LDB4RUUsMHhBRCwweEFGLDB4RDUsMHhENSwKKyAgICAweDk3
LDB4RjYsMHgzNSwweEU2LDB4QTIsMHhBOCwweDZFLDB4NUYsMHg3NiwweEVFLDB4MTQsMHhFNiww
eEU4LDB4RkEsMHhGNiwweEQ1LAorICAgIDB4NTUsMHhFRSwweDE0LDB4RTYsMHhBNywweDNGLDB4
QkYsMHhCRiwweDU1LDB4RUUsMHgzNSwweEU2LDB4MkUsMHgxQywweERGLDB4RkYsCisgICAgMHg1
NSwweEVFLDB4MTQsMHhFNiwweEZBLDB4QUMsMHhGRSwweDU3LDB4NTUsMHhFRSwweDE0LDB4RTYs
MHhGRiwweEUyLDB4RUYsMHg1NSwKKyAgICAweDU1LDB4RUUsMHhGNCwweERELDB4N0YsMHhBQSww
eDgyLDB4RTgsMHgzNSwweEU2LDB4RDMsMHhERCwweEFELDB4QUUsMHhFOCwweEI4LAorICAgIDB4
MTQsMHhFNiwweEY0LDB4REQsMHhFNiwweEZBLDB4QTIsMHgwMiwweDE0LDB4RTYsMHhENCwweERE
LDB4MEUsMHgyQiwweEEyLDB4QjYsCisgICAgMHg1NSwweEU2LDB4MTQsMHhFNiwweDI5LDB4MkYs
MHgzRCwweEFELDB4OTYsMHhFRSwweDU1LDB4RTYsMHgwMiwweDAyLDB4MDMsMHgwRCwKKyAgICAw
eDk2LDB4RUUsMHg3NiwweEVFLDB4Q0EsMHhFQSwweEE4LDB4QjgsMHg3NiwweEY2LDB4OTYsMHhF
RSwweDlELDB4RDcsMHg5NSwweEY3LAorICAgIDB4OTYsMHhFRSwweDc2LDB4RUUsMHg3NiwweDVG
LDB4RkQsMHgzQiwweDk2LDB4RUUsMHgzNSwweEU2LDB4N0EsMHg4QSwweDgwLDB4MDgsCisgICAg
MHg5NiwweEVFLDB4RDMsMHhERCwweDU1LDB4N0UsMHhGQSwweEE4LDB4MzUsMHhFNiwweDkyLDB4
RDUsMHg1RiwweDVGLDB4RkUsMHhGMCwKKyAgICAweEQzLDB4RDUsMHg3MiwweEQ1LDB4MEQsMHhB
QiwweEVELDB4N0YsMHgxNCwweEU2LDB4QjMsMHhENSwweEFBLDB4QUIsMHg4RCwweEI5LAorICAg
IDB4MTQsMHhFNiwweEIzLDB4RDUsMHg3RSwweDZBLDB4QUEsMHhBQiwweEY0LDB4REQsMHg1MSww
eEQ1LDB4N0UsMHhBQiwweEVBLDB4ODAsCisgICAgMHg5MiwweEQ1LDB4NkYsMHhCNCwweDVFLDB4
QTAsMHgwMCwweDAwLDB4QjIsMHhENSwweDBELDB4QTQsMHg1NywweEZGLDB4RUEsMHhBOCwKKyAg
ICAweEFGLDB4QkMsMHgwRCwweEE0LDB4MkQsMHgwQSwweDJBLDB4NTgsMHhGMCwweEM0LDB4MEQs
MHhBNCwweDA4LDB4MDIsMHgwQSwweEJELAorICAgIDB4ODcsMHg3QSwweDI1LDB4NkEsMHhERiww
eDFELDB4RkIsMHhGQSwweDg2LDB4N0EsMHgyNSwweDZBLDB4MzIsMHhCOSwweEVCLDB4RTcsCisg
ICAgMHg2NiwweDcyLDB4MDUsMHg3MiwweEE4LDB4QUUsMHhBQiwweEE5LDB4NjYsMHg3MiwweDA2
LDB4NzIsMHhBQSwweDJBLDB4MDIsMHhFMCwKKyAgICAweDg3LDB4N0EsMHg0NiwweDcyLDB4NTUs
MHgxNSwweDk3LDB4RUYsMHg4NywweDdBLDB4MjUsMHg2QSwweEJELDB4QkIsMHgyQiwweDdBLAor
ICAgIDB4NjYsMHg3MiwweDA1LDB4NzIsMHgwMCwweDhDLDB4QTgsMHgyQSwweEE3LDB4ODIsMHgy
NSwweDZBLDB4RUYsMHhGQiwweEZGLDB4NkEsCisgICAgMHg4NiwweDcyLDB4MjYsMHg3MiwweEZF
LDB4RUUsMHhGRSwweDkyLDB4NjYsMHg3MiwweDI2LDB4NzIsMHg4MiwweEVCLDB4QUUsMHhBMiwK
KyAgICAweDY2LDB4NzIsMHgyNiwweDcyLDB4QTgsMHhFMiwweEUwLDB4MTIsMHg2NywweDcyLDB4
MjYsMHg3MiwweEVFLDB4QkYsMHg4MSwweDJCLAorICAgIDB4NjYsMHg3MiwweDI1LDB4NzIsMHg3
NiwweEJGLDB4M0YsMHg1RCwweDg3LDB4N0EsMHgyNSwweDZBLDB4NUYsMHhERiwweEQyLDB4Mzgs
CisgICAgMHg2NiwweDcyLDB4MDUsMHg2QSwweEJFLDB4RUUsMHhGRSwweEIwLDB4NjYsMHg3Miww
eEU1LDB4NjksMHhBNiwweDI4LDB4QUEsMHg4MiwKKyAgICAweDY2LDB4NzIsMHgwNSwweDcyLDB4
MkEsMHgwMiwweDhFLDB4QUEsMHg2NiwweDcyLDB4MjUsMHg3MiwweEZFLDB4RDAsMHhBOCwweDlC
LAorICAgIDB4NjYsMHg3MiwweDA1LDB4NkEsMHhFRiwweEU4LDB4RkEsMHhFRSwweDQ2LDB4NzIs
MHgwNSwweDZBLDB4RTAsMHhBOCwweDM3LDB4MEEsCisgICAgMHg2NiwweDcyLDB4MjUsMHg2QSww
eEZBLDB4NUYsMHg3NSwweDlGLDB4ODcsMHg3QSwweDI1LDB4NkEsMHg4QiwweEJELDB4RjcsMHg1
NiwKKyAgICAweEM3LDB4ODIsMHgwNSwweDZBLDB4MEEsMHgyQSwweEJCLDB4RjUsMHhDNywweDgy
LDB4NDUsMHg3MiwweDAyLDB4QTAsMHhCQiwweEZELAorICAgIDB4QzgsMHg4MiwweDY2LDB4N0Es
MHhBQSwweEFBLDB4MkIsMHgyRCwweEM4LDB4ODIsMHg4NiwweDdBLDB4N0UsMHhGNywweEVDLDB4
QjgsCisgICAgMHhDNywweDgyLDB4ODcsMHg3QSwweDhCLDB4QUEsMHg4QiwweEJFLDB4QzgsMHg4
MiwweEE3LDB4ODIsMHgwRiwweENBLDB4RTgsMHgzMywKKyAgICAweEU3LDB4OEEsMHhBNywweDgy
LDB4RjUsMHhGNSwweEVELDB4NkEsMHhFOCwweDhBLDB4QTcsMHg4MiwweEFCLDB4RUEsMHhGQiww
eEZCLAorICAgIDB4RTgsMHg4QSwweEE3LDB4ODIsMHhCRiwweEFELDB4RUIsMHgyQiwweEU4LDB4
OEEsMHg2NiwweDdBLDB4OUYsMHg3RSwweEY4LDB4RTgsCisgICAgMHhFOCwweDhBLDB4ODcsMHg3
QSwweEEzLDB4OEIsMHhFRCwweENCLDB4QzgsMHg4QSwweDQ2LDB4NzIsMHhENiwweEZDLDB4Rjgs
MHhBOCwKKyAgICAweEE3LDB4N0EsMHgyNiwweDcyLDB4RjIsMHg3OCwweDdFLDB4NUUsMHgyNiww
eDcyLDB4NDQsMHg1MSwweEY4LDB4N0EsMHg3QywweDdBLAorICAgIDB4NjQsMHg1MSwweEUzLDB4
MzgsMHg4MCwweDJBLDB4RUEsMHg3QSwweDY0LDB4NTEsMHhFMywweDM4LDB4ODIsMHhBOCwweDVF
LDB4NTcsCisgICAgMHg0NCwweDQ5LDB4QTEsMHgyOCwweEY4LDB4RjgsMHhERiwweDU3LDB4RTMs
MHgzOCwweDgxLDB4MjgsMHg4QiwweDhGLDB4OUYsMHhGNSwKKyAgICAweEUzLDB4MzgsMHhDMiww
eDMwLDB4MzksMHgzRCwweDlELDB4NTksMHhFMywweDM4LDB4QzIsMHgyOCwweEE4LDB4QUEsMHhE
QywweEE3LAorICAgIDB4MjMsMHgzOSwweEMzLDB4MzAsMHgyRCwweEFCLDB4QkUsMHhCRiwweDI0
LDB4MzksMHhDMiwweDMwLDB4RkMsMHhGNiwweDdFLDB4N0UsCisgICAgMHgwMywweDM5LDB4QzIs
MHgzMCwweEEyLDB4REUsMHg1RCwweEY1LDB4RTIsMHgzOCwweEMyLDB4MzAsMHgyMCwweDBBLDB4
MkEsMHg5RCwKKyAgICAweDAzLDB4MzksMHhFMiwweDM4LDB4NDksMHg1OSwweEZELDB4OTcsMHg2
NCwweDQ5LDB4RTIsMHgzOCwweDJELDB4M0QsMHhCRCwweDJGLAorICAgIDB4ODUsMHg1MSwweDAz
LDB4NDEsMHg4MiwweEEwLDB4QTIsMHg1RSwweDY0LDB4NDksMHgyMywweDQ5LDB4RjYsMHg5Niww
eEVCLDB4QUIsCisgICAgMHg2NCwweDUxLDB4NDQsMHg1MSwweERELDB4OUUsMHg4MiwweDIyLDB4
QTUsMHg1OSwweDQ0LDB4NTEsMHhGRCwweEU5LDB4MEIsMHgwMiwKKyAgICAweEE1LDB4NTksMHg2
NSwweDU5LDB4OTUsMHhERCwweDM2LDB4MUEsMHgyNywweDcyLDB4QTUsMHg2MSwweDBELDB4MEQs
MHgwOSwweDJGLAorICAgIDB4MDcsMHg2QSwweDY1LDB4NTEsMHg2OCwweDYwLDB4RkMsMHhGOCww
eDY0LDB4NTEsMHgyNCwweDQ5LDB4N0IsMHhGRCwweENGLDB4RjgsCisgICAgMHg0NCwweDQ5LDB4
RTMsMHg0MCwweDU3LDB4N0UsMHhFQSwweEY4LDB4MjQsMHg0MSwweEEyLDB4MzAsMHhBMiwweEUy
LDB4RkEsMHhGRSwKKyAgICAweDg1LDB4NTEsMHhDMiwweDM4LDB4QUYsMHhCNSwweEI1LDB4MkQs
MHhFNiwweDU5LDB4ODQsMHg1MSwweEE3LDB4QkQsMHhGRCwweDJBLAorICAgIDB4RTYsMHg2MSww
eDg1LDB4NTEsMHhFMiwweEYyLDB4N0IsMHg1RSwweDg1LDB4NTEsMHgyNCwweDQ5LDB4QUUsMHhD
OCwweEZFLDB4REYsCisgICAgMHg2NSwweDUxLDB4MDMsMHg0MSwweDU4LDB4N0EsMHg2RiwweDVG
LDB4MjMsMHg0OSwweEUzLDB4MzgsMHhBMCwweEZBLDB4QkIsMHhCRCwKKyAgICAweEUzLDB4NDAs
MHgwMiwweDM5LDB4MEEsMHgwMCwweDgwLDB4RTIsMHg0NiwweDcyLDB4MjMsMHg0OSwweDI5LDB4
RjUsMHhGNSwweEQ1LAorICAgIDB4ODYsMHg3QSwweEM1LDB4NTksMHgwQSwweEFCLDB4RkQsMHg1
NSwweDY2LDB4NzIsMHg2NCwweDUxLDB4ODAsMHhFOCwweEZGLDB4NUYsCisgICAgMHgyNSwweDZB
LDB4NjQsMHg1MSwweEEwLDB4QUIsMHhGNSwweEQ1LDB4QzUsMHg2MSwweDY0LDB4NTEsMHg1Qyww
eEZBLDB4RkQsMHhGRSwKKyAgICAweEM2LDB4NjEsMHg2NCwweDUxLDB4MEIsMHhBRCwweEZGLDB4
RjcsMHgwNiwweDZBLDB4ODUsMHg1OSwweDJBLDB4QjcsMHhGNSwweDU1LAorICAgIDB4MjYsMHg3
MiwweDg0LDB4NTksMHgyOCwweDJGLDB4QkQsMHg5NSwweDg4LDB4N0EsMHhFNSwweDY5LDB4MEEs
MHgyQSwweEFCLDB4QkQsCisgICAgMHhBOCwweDgyLDB4NjcsMHg3QSwweEEyLDB4Q0IsMHg2MSww
eDZFLDB4RTksMHg4QSwweDQ2LDB4NzIsMHgwQSwweDA5LDB4QTcsMHg1NSwKKyAgICAweEU5LDB4
OEEsMHg2NywweDdBLDB4QTAsMHg4OCwweEVCLDB4RkQsMHhDOSwweDhBLDB4NjcsMHg3QSwweDlF
LDB4REYsMHhBQiwweEEyLAorICAgIDB4RTksMHg5MiwweDQ3LDB4NzIsMHg1RiwweDZGLDB4QTIs
MHhBMCwweEE4LDB4N0EsMHgwNiwweDcyLDB4RjcsMHhGNywweEZFLDB4RjgsCisgICAgMHg0Nyww
eDcyLDB4RTUsMHg2OSwweDNBLDB4QUUsMHhGRSwweEY1LDB4NjcsMHg3QSwweEM1LDB4NjEsMHgw
MCwweEJBLDB4NUYsMHg1RiwKKyAgICAweDY3LDB4NzIsMHhDNSwweDYxLDB4MDAsMHgwQiwweEE1
LDB4NTUsMHg4NywweDcyLDB4MDYsMHg2QSwweEZFLDB4ODIsMHhDQSwweEZELAorICAgIDB4Njcs
MHg3MiwweEU1LDB4NjEsMHhFQSwweEU4LDB4RjIsMHhENywweDQ2LDB4NkEsMHhDNSwweDU5LDB4
QkEsMHhCOCwweDdDLDB4NUYsCisgICAgMHgyNywweDZBLDB4ODQsMHg1OSwweDAwLDB4MEEsMHhB
QSwweERGLDB4NjgsMHg3MiwweEM1LDB4NjEsMHgwQSwweDJFLDB4RkIsMHg3RCwKKyAgICAweEM4
LDB4ODIsMHgyNiwweDZBLDB4MDAsMHgyQSwweEFGLDB4QTUsMHhBRiwweEJDLDB4QzgsMHg3QSww
eDJELDB4MkQsMHhGNSwweEY1LAorICAgIDB4RjQsMHhFNSwweEVDLDB4QTMsMHgwMiwweDBBLDB4
MEIsMHhCRCwweDM1LDB4RUUsMHhEMywweEU1LDB4MDIsMHgwMiwweDgyLDB4MjksCisgICAgMHgz
NCwweEVFLDB4RjQsMHhFNSwweEUyLDB4RUEsMHhGQSwweEYyLDB4MTQsMHhFNiwweEQzLDB4REQs
MHhCRSwweEZCLDB4RjgsMHhGQSwKKyAgICAweEY0LDB4RTUsMHhEMywweERELDB4MjgsMHg4QSww
eDJGLDB4MEIsMHhGNCwweERELDB4QjMsMHhERCwweEU4LDB4NzgsMHg3RSwweEIwLAorICAgIDB4
MTQsMHhFNiwweEIzLDB4REQsMHgyQSwweDJCLDB4QUQsMHhGRSwweDE0LDB4RTYsMHhEMywweERE
LDB4RTgsMHg3QSwweEZBLDB4RkYsCisgICAgMHhGNCwweEU1LDB4RDMsMHhERCwweEZFLDB4RkIs
MHg1QiwweERGLDB4MTQsMHhFNiwweEQzLDB4REQsMHhDRiwweEFELDB4RDUsMHhCNSwKKyAgICAw
eDM0LDB4RTYsMHhGMywweEU1LDB4MEIsMHgyQiwweDJGLDB4MkEsMHg1NSwweEVFLDB4MzUsMHhF
NiwweDAyLDB4ODIsMHg3NywweDU3LAorICAgIDB4NTYsMHhFRSwweDE0LDB4RTYsMHhBQywweERF
LDB4RkUsMHg1NSwweDM1LDB4RTYsMHgxNCwweEU2LDB4RkMsMHgzOCwweDJGLDB4QkQsCisgICAg
MHg1NSwweEVFLDB4MTQsMHhFNiwweEJFLDB4QUEsMHgzRSwweEZGLDB4NTUsMHhFRSwweDM1LDB4
RTYsMHhFRSwweEJCLDB4N0UsMHhGNywKKyAgICAweDM1LDB4RTYsMHhEMywweERELDB4RjgsMHg3
OCwweDdBLDB4QTgsMHgxNCwweEU2LDB4RDMsMHhERCwweDJCLDB4MzcsMHhCRiwweEFGLAorICAg
IDB4RjQsMHhFNSwweDM1LDB4REUsMHhBQiwweDIyLDB4QTAsMHhGQSwweDM0LDB4RTYsMHhGNCww
eEU1LDB4RkYsMHhBOSwweDJCLDB4MkIsCisgICAgMHgzNSwweEU2LDB4RjQsMHhERCwweEFGLDB4
RUUsMHg2RSwweEZBLDB4MzQsMHhFNiwweEY0LDB4REQsMHhGNywweEJGLDB4MkQsMHhBRiwKKyAg
ICAweDc2LDB4RUUsMHgxNSwweEU2LDB4M0QsMHhBRiwweEJGLDB4RkQsMHhCNiwweEY2LDB4NTYs
MHhFNiwweEI5LDB4QUYsMHhCQiwweDBGLAorICAgIDB4QjYsMHhGNiwweDc2LDB4RUUsMHhGNyww
eEI1LDB4QkYsMHhGOCwweDc2LDB4RjYsMHg5NiwweEVFLDB4REQsMHhGRCwweEZGLDB4RjUsCisg
ICAgMHg3NiwweEY2LDB4OTYsMHhFRSwweDVELDB4RjcsMHhGRiwweDU2LDB4OTYsMHhFRSwweDc2
LDB4RUUsMHg2QSwweEZELDB4RkEsMHg3MCwKKyAgICAweDk2LDB4RUUsMHgzNSwweEU2LDB4RUEs
MHhBOCwweDIyLDB4ODgsMHhCNiwweEVFLDB4MTQsMHhFNiwweDdGLDB4RkEsMHhBQSwweEFBLAor
ICAgIDB4NTUsMHhFRSwweEIzLDB4RDUsMHg1NywweDVBLDB4QTAsMHgwMCwweDM1LDB4RTYsMHg5
MiwweEQ1LDB4QkQsMHhGNSwweEZGLDB4RkMsCisgICAgMHgxNCwweEU2LDB4QjMsMHhENSwweDJF
LDB4QUEsMHgyRiwweEFELDB4MTQsMHhFNiwweEQzLDB4REQsMHhGQiwweENBLDB4NkEsMHhGQSwK
KyAgICAweEYzLDB4REQsMHhCMywweEQ1LDB4N0YsMHhDMiwweDA4LDB4MjAsMHhGNCwweERELDB4
NTEsMHhDRCwweDVFLDB4RTgsMHg4MCwweDAwLAorICAgIDB4RDMsMHhERCwweDhGLDB4QjQsMHg1
RSwweEVBLDB4MjAsMHgwMCwweDcyLDB4Q0QsMHg2QSwweDkzLDB4RDcsMHg1RSwweEY4LDB4QzAs
CisgICAgMHg4NywweDdBLDB4NDYsMHg3MiwweDdFLDB4N0EsMHg1RSwweDc1LDB4NjYsMHg3Miww
eDI1LDB4NkEsMHhFNiwweDJBLDB4MEEsMHgzMiwKKyAgICAweDg2LDB4N0EsMHg0NiwweDcyLDB4
RjUsMHhEQiwweEJCLDB4N0EsMHg2NiwweDcyLDB4MjUsMHg3MiwweDNBLDB4QUEsMHgyMCwweDJG
LAorICAgIDB4NjYsMHg3MiwweDI1LDB4NkEsMHhFMCwweDE4LDB4RDIsMHgzQSwweDg3LDB4N0Es
MHgyNiwweDZBLDB4N0UsMHhFQSwweEFGLDB4RUMsCisgICAgMHg4NywweDdBLDB4NDYsMHg3Miww
eEQxLDB4N0IsMHhFQSwweDY5LDB4NjYsMHg3MiwweDI2LDB4NzIsMHg2QSwweEFBLDB4ODIsMHgy
MywKKyAgICAweDY2LDB4NzIsMHgyNSwweDcyLDB4QUUsMHgzRSwweDNGLDB4RUEsMHg4NiwweDcy
LDB4MjUsMHg2QSwweEVBLDB4RUYsMHhGNCwweEI3LAorICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIs
MHhERCwweEZCLDB4QkYsMHg4RCwweDY2LDB4NzIsMHgyNSwweDcyLDB4RTAsMHhDRSwweDJDLDB4
QUMsCisgICAgMHg2NiwweDdBLDB4MjUsMHg2QSwweDY5LDB4RTksMHhCMiwweDgyLDB4ODcsMHg3
QSwweDQ2LDB4NzIsMHg5RiwweEU1LDB4NDUsMHhGRCwKKyAgICAweDg3LDB4N0EsMHgyNSwweDZB
LDB4REEsMHg4QiwweENELDB4QUIsMHg4NywweDdBLDB4MjUsMHg2QSwweEVGLDB4RkEsMHg5QSww
eEQ4LAorICAgIDB4NjcsMHg3MiwweDI2LDB4NzIsMHhBMywweDM2LDB4REUsMHg5OCwweDY2LDB4
NzIsMHgwNSwweDZBLDB4QUEsMHhDMCwweEU4LDB4RjgsCisgICAgMHg2NiwweDcyLDB4MjUsMHg3
MiwweDRBLDB4Q0IsMHhDQSwweENCLDB4NDYsMHg3MiwweDI1LDB4NkEsMHg4NywweDJCLDB4MDEs
MHgwMywKKyAgICAweDg3LDB4N0EsMHgyNSwweDZBLDB4NTcsMHg3NywweDZCLDB4RjIsMHg2Niww
eDcyLDB4MDUsMHg2QSwweDdCLDB4RTIsMHhBMCwweDBBLAorICAgIDB4NjcsMHg3QSwweDA1LDB4
NkEsMHgyRCwweDJCLDB4QUEsMHgyQSwweDY3LDB4N0EsMHgyNiwweDcyLDB4N0UsMHhGRSwweEJF
LDB4QzgsCisgICAgMHg4NywweDdBLDB4MjUsMHg3MiwweDA3LDB4QkYsMHhGRiwweEZGLDB4QTgs
MHg4MiwweDI1LDB4NzIsMHgwQSwweDJELDB4RjcsMHg5RiwKKyAgICAweEM4LDB4ODIsMHgyNiww
eDcyLDB4MkEsMHgwQSwweEVCLDB4NjcsMHhDNywweDgyLDB4NjYsMHg3QSwweEFDLDB4QjgsMHhB
QiwweEFELAorICAgIDB4QzgsMHg4MiwweEE3LDB4ODIsMHhDMCwweEQ3LDB4RDUsMHg1RiwweEU4
LDB4OEEsMHhBNywweDgyLDB4N0IsMHhFQSwweEIyLDB4RjUsCisgICAgMHgwOSwweDkzLDB4QTcs
MHg4MiwweDhGLDB4OEIsMHhGQiwweERCLDB4MDksMHg5MywweEM4LDB4OEEsMHg1RiwweEFELDB4
M0YsMHgyRiwKKyAgICAweDI5LDB4OTMsMHhDOCwweDhBLDB4N0QsMHg3RSwweDZFLDB4NzIsMHhD
OSwweDhBLDB4MDYsMHg2QSwweEE4LDB4QTgsMHhFMCwweDc4LAorICAgIDB4NjcsMHg3QSwweEE0
LDB4NTksMHhFOCwweEZBLDB4RkEsMHg1RiwweEU1LDB4NjEsMHgyMywweDQ5LDB4NjgsMHg3OCww
eDdFLDB4NUYsCisgICAgMHgyNCwweDQ5LDB4QzIsMHgzMCwweEU4LDB4RjgsMHg3QywweDVELDB4
MDMsMHgzOSwweEEyLDB4MzAsMHhCRiwweEZGLDB4RkYsMHg1NSwKKyAgICAweEMyLDB4MzAsMHg4
MiwweDI4LDB4QzAsMHg2OCwweDdFLDB4RjcsMHhDMiwweDMwLDB4ODEsMHgyOCwweDI1LDB4MjUs
MHgyRCwweDJELAorICAgIDB4RTIsMHgzMCwweEEyLDB4MjgsMHhGRSwweEY2LDB4RjcsMHhGNyww
eDAzLDB4MzEsMHhBMiwweDI4LDB4QkUsMHgxRiwweEJGLDB4QjcsCisgICAgMHgwMywweDM5LDB4
QTIsMHgyOCwweEFBLDB4QTgsMHhBQSwweDVCLDB4RTMsMHgzMCwweDgyLDB4MjgsMHgyMCwweDJB
LDB4QjYsMHhBRSwKKyAgICAweEUzLDB4MzAsMHhBMiwweDMwLDB4ODAsMHhERSwweEZFLDB4REYs
MHhFMiwweDMwLDB4QTIsMHgzMCwweDFELDB4RkYsMHhGRiwweEY1LAorICAgIDB4MjMsMHg0MSww
eEMyLDB4MzAsMHhCNSwweDk1LDB4MzUsMHhCNSwweEE2LDB4NTEsMHgyNCwweDQxLDB4QkQsMHg4
QiwweDgxLDB4RUIsCisgICAgMHg2NCwweDQ5LDB4RTMsMHg0MCwweDU4LDB4N0EsMHg1RSwweDU3
LDB4NDQsMHg0OSwweEUzLDB4NDAsMHgwMywweDI5LDB4MjksMHgyRCwKKyAgICAweDg1LDB4NTks
MHg0NCwweDUxLDB4RUIsMHhBQSwweEY1LDB4ODMsMHhBNSwweDU5LDB4NjQsMHg1MSwweDBBLDB4
QTYsMHg3NywweDU1LAorICAgIDB4QzUsMHg2MSwweDQ0LDB4NDksMHhCQywweDI4LDB4M0EsMHhB
RCwweDI3LDB4NzIsMHhDNSwweDYxLDB4OEQsMHhFOSwweEE5LDB4RkQsCisgICAgMHhFNiwweDYx
LDB4NjUsMHg1MSwweEZGLDB4N0UsMHg3OCwweDVBLDB4NjUsMHg1MSwweEUyLDB4MzgsMHhBOCww
eEU4LDB4QkMsMHg1RiwKKyAgICAweDY0LDB4NDksMHhFMywweDM4LDB4NzgsMHg2QSwweEZBLDB4
RUIsMHgyNCwweDQxLDB4QzMsMHgzOCwweDVGLDB4RkQsMHhBNywweDJGLAorICAgIDB4QTYsMHg1
OSwweDAzLDB4NDEsMHgyNSwweEFELDB4QUIsMHg4RiwweEU3LDB4NjEsMHg0NCwweDQ5LDB4MDIs
MHgwQSwweEZGLDB4NTUsCisgICAgMHhFNywweDYxLDB4NjQsMHg0OSwweEVBLDB4MjAsMHhBMyww
eEY1LDB4ODUsMHg1MSwweDI0LDB4NDEsMHg3RSwweEU4LDB4NzgsMHg1QywKKyAgICAweDQ0LDB4
NDksMHhFMywweDM4LDB4N0UsMHhEQywweERDLDB4RkUsMHg0NCwweDQ5LDB4QzIsMHgzMCwweEY3
LDB4RkUsMHhBQSwweDgyLAorICAgIDB4NjUsMHg0OSwweEUzLDB4MzgsMHhGRCwweEZELDB4Q0Is
MHg4MiwweDQ0LDB4NDksMHgwMywweDQxLDB4MkYsMHgzRiwweEJELDB4RUYsCisgICAgMHhDNiww
eDU5LDB4MjQsMHg0OSwweDhBLDB4QTMsMHhBQiwweEFELDB4QTUsMHg1OSwweDQzLDB4NDksMHhF
MiwweDdBLDB4NUMsMHg1OCwKKyAgICAweDg1LDB4NTEsMHgyMywweDQ5LDB4RUQsMHhGRiwweEI3
LDB4RDcsMHg4NSwweDUxLDB4MjMsMHg0OSwweDAwLDB4RTAsMHhEQSwweDVGLAorICAgIDB4ODQs
MHg1MSwweDQzLDB4NDksMHhBOCwweEU4LDB4RUIsMHhENywweEM1LDB4NjEsMHg0NCwweDUxLDB4
QUYsMHgyRiwweDJGLDB4QUQsCisgICAgMHgyNiwweDZBLDB4ODQsMHg1OSwweDlGLDB4QUEsMHhB
QSwweDdELDB4ODgsMHg3QSwweEE1LDB4NTksMHgwQiwweDJBLDB4MEYsMHhBRCwKKyAgICAweEE4
LDB4ODIsMHgwNiwweDcyLDB4QTAsMHhBMiwweEFBLDB4NUUsMHg2OCwweDdBLDB4RTYsMHg2OSww
eDhBLDB4QUEsMHhERSwweERGLAorICAgIDB4QzksMHg4QSwweDQ2LDB4N0EsMHhCNywweDJELDB4
MjUsMHg4RCwweEM5LDB4OEEsMHg4NywweDgyLDB4MjAsMHhFMCwweEUwLDB4RkMsCisgICAgMHhF
OSwweDhBLDB4NjcsMHg4MiwweDAyLDB4MDIsMHhBQiwweERBLDB4RUEsMHg4QSwweDQ3LDB4N0Es
MHg1QywweDdDLDB4RTIsMHhBQSwKKyAgICAweDg4LDB4ODIsMHgyNiwweDcyLDB4NTUsMHhCRiww
eEY4LDB4QTgsMHg2NywweDdBLDB4QzUsMHg2MSwweDVGLDB4QjIsMHhDMCwweEUwLAorICAgIDB4
MDcsMHg2QSwweEE1LDB4NTksMHg3RiwweDdFLDB4RDgsMHg2QywweDA2LDB4NkEsMHg2NCwweDUx
LDB4MDIsMHhGRSwweDdGLDB4NTcsCisgICAgMHhFNSwweDYxLDB4NjQsMHg1MSwweDAwLDB4QUIs
MHhCRCwweEQ1LDB4QzUsMHg2MSwweDY0LDB4NTEsMHg4MCwweEE4LDB4RkEsMHhCNywKKyAgICAw
eEM2LDB4NTksMHg4NCwweDU5LDB4REMsMHhBQSwweEJGLDB4MkIsMHgwNiwweDZBLDB4QTUsMHg1
OSwweEVCLDB4MkYsMHhBRiwweEZELAorICAgIDB4NjcsMHg3MiwweEU1LDB4NjEsMHgzRiwweEJG
LDB4QUIsMHhERiwweEM5LDB4ODIsMHgyNiwweDZBLDB4MEEsMHhBQiwweEI3LDB4RDcsCisgICAg
MHg2RSwweEI0LDB4NDcsMHg3MiwweDJCLDB4QkYsMHhCRCwweEZELDB4RDMsMHhFNSwweDhCLDB4
OUIsMHgwMiwweDBCLDB4QkYsMHhENSwKKyAgICAweDE0LDB4RTYsMHg2RiwweEJDLDB4MDAsMHgw
MiwweEFCLDB4QkQsMHgxNCwweEU2LDB4QjMsMHhFNSwweEEyLDB4QTIsMHhBQSwweEFELAorICAg
IDB4MTQsMHhFNiwweEY0LDB4RTUsMHhFNSwweEJGLDB4RkUsMHg3QSwweDE0LDB4RTYsMHhEMyww
eERELDB4QkYsMHhBQywweEEwLDB4QTMsCisgICAgMHgxNCwweEU2LDB4RDQsMHhERCwweDVFLDB4
RjgsMHhFOCwweEFBLDB4RjMsMHhFNSwweEIzLDB4REQsMHg4QSwweEZGLDB4RkEsMHg3QywKKyAg
ICAweDE0LDB4RTYsMHhCMywweERELDB4RkIsMHhERiwweDU3LDB4N0YsMHhGNCwweEU1LDB4QjMs
MHhERCwweDJFLDB4MkYsMHhBQiwweEJELAorICAgIDB4MzUsMHhFNiwweEY0LDB4REQsMHgyRiww
eEFCLDB4MkQsMHhCRCwweDM1LDB4RTYsMHhGMywweEU1LDB4ODAsMHhBOCwweEVBLDB4RkEsCisg
ICAgMHgxNCwweEU2LDB4RDMsMHhERCwweEEyLDB4OTgsMHhGRSwweDdFLDB4MzUsMHhFNiwweEQz
LDB4REQsMHgyQSwweEFBLDB4QkIsMHhCRCwKKyAgICAweDU2LDB4RTYsMHgxNCwweEU2LDB4Qjcs
MHg1RiwweEY1LDB4OTUsMHg1NSwweEVFLDB4MTUsMHhFNiwweEVBLDB4QTgsMHhFMCwweEYwLAor
ICAgIDB4MzQsMHhFNiwweEY0LDB4REQsMHhFOCwweEFFLDB4RkYsMHg1NywweDM1LDB4RTYsMHhE
MywweERELDB4RkIsMHhFOCwweEVBLDB4N0UsCisgICAgMHhENCwweEU1LDB4MTQsMHhERSwweEJF
LDB4RkEsMHhGRSwweEZBLDB4MTQsMHhFNiwweEY0LDB4REQsMHgyMywweDI4LDB4RUUsMHhBRiwK
KyAgICAweDU1LDB4RTYsMHhGNCwweEU1LDB4RkYsMHhGNSwweEZGLDB4QjcsMHgzNCwweEU2LDB4
RjQsMHhERCwweEQ2LDB4QkEsMHhFQSwweEJFLAorICAgIDB4NTUsMHhFRSwweDE0LDB4RTYsMHgz
NSwweEU1LDB4RjUsMHg1NSwweEI2LDB4RjYsMHgzNSwweEU2LDB4MkIsMHhBQiwweEE5LDB4QTks
CisgICAgMHhCNiwweEY2LDB4NzYsMHhFRSwweEVBLDB4RkEsMHhGRSwweEFBLDB4QjYsMHhGNiww
eDc2LDB4RUUsMHhGNywweEVGLDB4QkEsMHhFQSwKKyAgICAweDc2LDB4RjYsMHg5NiwweEVFLDB4
NkYsMHg1RiwweEZELDB4RDcsMHg3NiwweEY2LDB4OTYsMHhFRSwweEZELDB4RjUsMHhGRiwweDY3
LAorICAgIDB4OTYsMHhFRSwweDc2LDB4RUUsMHhGRiwweEJGLDB4QjYsMHg1NywweDk2LDB4RUUs
MHgzNSwweEU2LDB4QUEsMHhBMCwweEZBLDB4NUUsCisgICAgMHg3NSwweEVFLDB4RjQsMHhERCww
eDIwLDB4QTAsMHhFQSwweDdCLDB4NTUsMHhFRSwweEIyLDB4RDUsMHhGOCwweEU4LDB4RjYsMHg1
NywKKyAgICAweEYzLDB4REQsMHg5MiwweEQ1LDB4MkEsMHhBQSwweEVBLDB4NUYsMHgxNSwweEU2
LDB4QjMsMHhENSwweEIyLDB4QkUsMHhCRCwweDc1LAorICAgIDB4RjQsMHhERCwweEIzLDB4RDUs
MHhBQSwweEJDLDB4QUUsMHhGRiwweEY0LDB4RTUsMHhCMywweEQ1LDB4MjgsMHhBQiwweEI2LDB4
RkYsCisgICAgMHhGMywweERELDB4OTEsMHhENSwweEE4LDB4QUEsMHhBQSwweEY2LDB4RDIsMHhE
RCwweEYwLDB4QzQsMHg2OCwweEUwLDB4QTAsMHhBMCwKKyAgICAweDg3LDB4N0EsMHgyNSwweDZB
LDB4QzksMHhBQiwweEVBLDB4QkYsMHg4NiwweDcyLDB4MjUsMHg3MiwweERBLDB4QkIsMHhBQSww
eDJCLAorICAgIDB4ODYsMHg3QSwweDI2LDB4NkEsMHhBQSwweEJCLDB4NjgsMHhGQiwweDY2LDB4
NzIsMHg0NiwweDcyLDB4MUYsMHgwQiwweDNGLDB4QTEsCisgICAgMHg4NywweDdBLDB4NjYsMHg3
MiwweDk3LDB4RTcsMHg2QSwweDY5LDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhGNCwweERFLDB4RUYs
MHhBRSwKKyAgICAweDg2LDB4NzIsMHgyNiwweDcyLDB4QUYsMHhCRiwweDFGLDB4QUYsMHg4Nyww
eDdBLDB4MjYsMHg3MiwweEZCLDB4QzEsMHhFQiwweEFBLAorICAgIDB4NjYsMHg3MiwweDQ2LDB4
NzIsMHg2QiwweDdCLDB4RkQsMHhGRSwweDY2LDB4NzIsMHgyNSwweDZBLDB4MDcsMHgzNSwweDI3
LDB4ODIsCisgICAgMHg4NiwweDdBLDB4MjYsMHg2QSwweDlGLDB4RkIsMHhFQSwweEU4LDB4ODYs
MHg3QSwweDQ2LDB4NzIsMHhFRCwweEY3LDB4REQsMHhGRSwKKyAgICAweDY2LDB4NzIsMHgyNSww
eDcyLDB4OEEsMHgwQiwweDNFLDB4MkUsMHg2NiwweDcyLDB4MjUsMHg2QSwweEJBLDB4N0EsMHg4
MiwweDAyLAorICAgIDB4NjYsMHg3MiwweDI1LDB4NkEsMHhGMSwweDdCLDB4QUQsMHg4QywweDg3
LDB4N0EsMHg0NiwweDcyLDB4NUUsMHhFRCwweEFCLDB4RTMsCisgICAgMHg4NywweDdBLDB4MjUs
MHg2QSwweEE2LDB4RUYsMHhBQSwweEU4LDB4NjYsMHg3QSwweDQ2LDB4NzIsMHg1NiwweERGLDB4
RTksMHgwQiwKKyAgICAweDg3LDB4N0EsMHgyNSwweDZBLDB4NkEsMHhFQSwweEFBLDB4NjIsMHg4
NywweDdBLDB4MjYsMHg3MiwweEZGLDB4QTIsMHhCMiwweDdCLAorICAgIDB4NjYsMHg3MiwweDI2
LDB4NzIsMHhCQSwweEFCLDB4MEEsMHgwMCwweDY2LDB4NzIsMHgyNSwweDcyLDB4MEIsMHgwRSww
eEFBLDB4MTgsCisgICAgMHg2NiwweDcyLDB4MjYsMHg3MiwweEEwLDB4QTQsMHg2QiwweEMyLDB4
ODYsMHg3QSwweDI1LDB4NzIsMHhCRSwweEZGLDB4NjMsMHg2QSwKKyAgICAweDY2LDB4N0EsMHgy
NiwweDcyLDB4QTgsMHg2MiwweDAxLDB4QjksMHg2NiwweDgyLDB4NDYsMHg3MiwweERELDB4N0Ys
MHhENywweDU5LAorICAgIDB4NjYsMHg3QSwweDA1LDB4NzIsMHhCNiwweEI2LDB4QUEsMHg4QSww
eDY2LDB4N0EsMHgyNSwweDcyLDB4MEEsMHg5RiwweDM4LDB4MDIsCisgICAgMHhBNywweDgyLDB4
NDYsMHg3MiwweEE4LDB4QkIsMHhGRiwweDk3LDB4QzgsMHg4MiwweDY2LDB4N0EsMHgwMiwweDJC
LDB4QkYsMHhENSwKKyAgICAweEM4LDB4ODIsMHg2NiwweDdBLDB4ODgsMHhBOCwweEJGLDB4RDUs
MHgwOSwweDhCLDB4QTcsMHg4MiwweDJFLDB4RUEsMHgwMiwweEM5LAorICAgIDB4MjksMHg5Myww
eEM4LDB4OEEsMHhBMiwweEU4LDB4NkEsMHg2MiwweEE3LDB4ODIsMHhDNSwweDYxLDB4NzgsMHg3
QSwweDdDLDB4NUUsCisgICAgMHhBNSwweDU5LDB4MDMsMHg0MSwweEUwLDB4RjAsMHg1QywweDU0
LDB4MjMsMHg0MSwweEMyLDB4MzgsMHhBMCwweEYwLDB4N0IsMHg3NywKKyAgICAweEUyLDB4Mzgs
MHhBMiwweDMwLDB4RkMsMHhEQywweEJFLDB4N0UsMHhDMiwweDMwLDB4ODEsMHgyOCwweDU4LDB4
N0UsMHhERSwweEJCLAorICAgIDB4QzIsMHgzMCwweDYxLDB4MjAsMHhGRiwweDdFLDB4QUUsMHhB
QywweEEyLDB4MjgsMHg2MSwweDIwLDB4MEIsMHgwQiwweDIzLDB4QUEsCisgICAgMHhDMiwweDI4
LDB4QTIsMHgyOCwweDlFLDB4N0QsMHg2MywweEI1LDB4QzIsMHgzMCwweEEyLDB4MjgsMHhCQSww
eEY1LDB4OTUsMHhENiwKKyAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4QkEsMHhBNiwweDA2LDB4
MEQsMHhFMywweDMwLDB4QTIsMHgyOCwweEVCLDB4OEIsMHg2RiwweDdGLAorICAgIDB4QzIsMHgz
MCwweEEyLDB4MjgsMHhEOCwweEVBLDB4RUIsMHg3NSwweDAzLDB4MzksMHhBMiwweDMwLDB4QjUs
MHhCRCwweEJELDB4MkIsCisgICAgMHg0NCwweDQ5LDB4QzIsMHgzMCwweEJELDB4QkQsMHhCQiww
eDBBLDB4ODUsMHg1MSwweEUzLDB4MzgsMHhFMiwweDdBLDB4N0YsMHg3QiwKKyAgICAweDAzLDB4
NDEsMHhDMiwweDM4LDB4QkUsMHhGRiwweERGLDB4N0YsMHg0NCwweDQ5LDB4RTMsMHg0MCwweDI1
LDB4M0YsMHgyRCwweEZELAorICAgIDB4ODUsMHg1OSwweDIzLDB4NDEsMHg4MiwweEJFLDB4RjUs
MHhENSwweDY0LDB4NTEsMHg0NCwweDQ5LDB4N0IsMHg3RSwweEFCLDB4MjAsCisgICAgMHg2NCww
eDUxLDB4MjMsMHg0OSwweDBELDB4MDcsMHgyRiwweDBBLDB4QzYsMHg2MSwweDQ0LDB4NDksMHgw
QSwweEFCLDB4REYsMHg3NywKKyAgICAweEM2LDB4NTksMHgyNCwweDQ5LDB4RjgsMHg3RSwweDZC
LDB4N0QsMHgyNCwweDQ5LDB4RTMsMHgzOCwweDVFLDB4RjQsMHg1NCwweDU3LAorICAgIDB4NDQs
MHg0MSwweEMyLDB4MzgsMHg4QSwweEVBLDB4RkYsMHg3RCwweDI0LDB4NDEsMHhFMiwweDM4LDB4
MEYsMHgyNiwweEFELDB4RkQsCisgICAgMHg4NSwweDQ5LDB4MjMsMHg0MSwweENELDB4QUQsMHgz
NSwweEY1LDB4NjUsMHg0OSwweDI0LDB4NDEsMHg3RiwweDU2LDB4NzIsMHhGQSwKKyAgICAweDY1
LDB4NDksMHhFMiwweDM4LDB4MEEsMHgyQiwweEFBLDB4NkIsMHg0NCwweDQ5LDB4MDMsMHg0MSww
eEZDLDB4NUMsMHg1NCwweDU1LAorICAgIDB4NDQsMHg0OSwweDAzLDB4NDEsMHg1NywweERDLDB4
NzcsMHg1NiwweDQ0LDB4NDksMHhFMiwweDM4LDB4MEEsMHgyQSwweEVCLDB4NUUsCisgICAgMHg0
NCwweDQ5LDB4QzIsMHgzOCwweEE4LDB4QjgsMHhCRiwweEQ1LDB4NDQsMHg0OSwweEUzLDB4Mzgs
MHhBQiwweDJBLDB4QkYsMHhCNywKKyAgICAweDg1LDB4NTEsMHgyMywweDQ5LDB4MkYsMHgzRCww
eDNGLDB4MEYsMHhDNiwweDU5LDB4NjQsMHg1MSwweDVGLDB4RUIsMHhGMiwweEZBLAorICAgIDB4
QTUsMHg1MSwweDQzLDB4NDksMHg3NywweDdGLDB4RjgsMHhCRiwweDY0LDB4NDksMHgyMywweDQ5
LDB4N0UsMHg2OCwweDU2LDB4RkUsCisgICAgMHg0MywweDQ5LDB4MDMsMHg0MSwweDNBLDB4Qjks
MHhCQiwweERGLDB4QTUsMHg1OSwweDAzLDB4NDksMHgyQiwweDJGLDB4QUYsMHhCRCwKKyAgICAw
eEE1LDB4NTksMHg2NSwweDUxLDB4RkEsMHhGRiwweDk3LDB4MkUsMHgyNiwweDcyLDB4ODQsMHg1
OSwweDI1LDB4OTUsMHhCNSwweEJELAorICAgIDB4MDYsMHg3MiwweEE0LDB4NjEsMHg4OCwweEJG
LDB4QjUsMHhFRSwweDI3LDB4NzIsMHhFNiwweDY5LDB4RjUsMHhBRiwweDlBLDB4NUUsCisgICAg
MHhDOCwweDhBLDB4MDYsMHg3MiwweDJCLDB4MDksMHgyRiwweEFGLDB4RTgsMHg4QSwweDQ2LDB4
N0EsMHhCOCwweEY4LDB4N0EsMHg3RiwKKyAgICAweEE4LDB4ODIsMHgyNiwweDcyLDB4MjAsMHhC
QSwweEFGLDB4QjUsMHhDOSwweDhBLDB4NjcsMHg3QSwweEUyLDB4RUEsMHg2QiwweDVGLAorICAg
IDB4QTgsMHg4MiwweDA2LDB4NkEsMHhBOCwweEZBLDB4NUYsMHg1RCwweDQ3LDB4NzIsMHhDNiww
eDY5LDB4QTAsMHhGQSwweERGLDB4QkYsCisgICAgMHgyNiwweDZBLDB4ODQsMHg1OSwweDVFLDB4
NUUsMHhGQiwweDgwLDB4RTUsMHg2MSwweDY0LDB4NTEsMHhENywweERELDB4QkIsMHgwMCwKKyAg
ICAweEM1LDB4NTksMHg2NCwweDUxLDB4RjUsMHhENywweEI4LDB4MjgsMHhDNiwweDU5LDB4ODUs
MHg1OSwweEJELDB4QjUsMHhFNSwweDg4LAorICAgIDB4RTYsMHg2MSwweEE1LDB4NTksMHhFNyww
eEVBLDB4RjksMHg3QSwweEU2LDB4NjEsMHg4NSwweDUxLDB4OEIsMHhBRSwweEVCLDB4QjcsCisg
ICAgMHgwNiwweDYyLDB4QTUsMHg1OSwweEUzLDB4RUQsMHg1NSwweEQ1LDB4NDcsMHg3MiwweEU1
LDB4NjEsMHgzRCwweEI1LDB4REQsMHhCRCwKKyAgICAweEU5LDB4ODIsMHg0NywweDcyLDB4M0Ys
MHhBNSwweEI1LDB4RkQsMHg4QiwweDlCLDB4ODgsMHg3QSwweDBCLDB4QUIsMHg1RCwweERELAor
ICAgIDB4MkQsMHhBQywweEE4LDB4ODIsMHgwMiwweEJGLDB4RjUsMHg1NSwweDkzLDB4REQsMHgy
OSwweDhCLDB4MDIsMHgyRiwweEFELDB4QjUsCisgICAgMHhGNCwweEU1LDB4NTEsMHhENSwweDAw
LDB4MDMsMHgwOSwweEFELDB4RjQsMHhFNSwweDE0LDB4REUsMHhBOCwweDg4LDB4MDAsMHgwMCwK
KyAgICAweDE0LDB4RTYsMHhENCwweERELDB4OEIsMHg3QSwweEFFLDB4RUEsMHhEMywweERELDB4
QjMsMHhERCwweDk4LDB4QkIsMHhGRSwweEU1LAorICAgIDB4RDMsMHhERCwweDkyLDB4RDUsMHg4
MCwweDAwLDB4RTAsMHhFOCwweEQzLDB4REQsMHhCMiwweERELDB4MjcsMHgwRiwweDBELDB4QTks
CisgICAgMHgxNCwweEU2LDB4QjMsMHhERCwweDBBLDB4MEEsMHhBRiwweEVELDB4MTQsMHhFNiww
eEY0LDB4REQsMHhFOCwweEZFLDB4RUQsMHhGRiwKKyAgICAweDE0LDB4RTYsMHhCMywweERELDB4
RUEsMHhCQSwweEY4LDB4NkIsMHgxNCwweEU2LDB4RDMsMHhERCwweEI1LDB4QTcsMHgwRiwweDJG
LAorICAgIDB4NTUsMHhFRSwweDE0LDB4RTYsMHhCNSwweDA5LDB4MjAsMHgwMCwweDU1LDB4RUUs
MHgxNCwweEU2LDB4NzAsMHhGMiwweEVBLDB4QkEsCisgICAgMHgzNSwweEU2LDB4RDMsMHhERCww
eERGLDB4NTcsMHhERSwweEU4LDB4MTQsMHhFNiwweEQzLDB4REQsMHhERCwweEE3LDB4MEIsMHgw
MiwKKyAgICAweDM1LDB4RTYsMHhEMywweERELDB4RkQsMHhGQSwweEVBLDB4QkEsMHgxNCwweEU2
LDB4RjQsMHhERCwweDhGLDB4MEIsMHhBOSwweDQ2LAorICAgIDB4MTQsMHhFNiwweEY0LDB4REQs
MHgwQSwweDIwLDB4ODAsMHg4MiwweDE0LDB4RTYsMHhENCwweERELDB4RkEsMHg3RiwweDdGLDB4
QTgsCisgICAgMHgzNSwweEU2LDB4RDMsMHhERCwweDNCLDB4QUYsMHhBRCwweDNELDB4OTYsMHhF
RSwweDM1LDB4RTYsMHgwRiwweDI5LDB4MjksMHgwRCwKKyAgICAweEI3LDB4RjYsMHg5NiwweEVF
LDB4RjcsMHg1RCwweEVGLDB4NjcsMHhCNiwweEY2LDB4OTYsMHhFRSwweERFLDB4RjcsMHg5Riww
eEQ1LAorICAgIDB4QjYsMHhGNiwweDc2LDB4RUUsMHhFQSwweEZBLDB4RkEsMHhGRSwweDk2LDB4
RUUsMHg3NiwweEVFLDB4RkUsMHhERCwweEVGLDB4NUUsCisgICAgMHg5NiwweEVFLDB4RjMsMHhE
RCwweEE4LDB4RkEsMHg3QSwweDc4LDB4MzUsMHhFNiwweDkzLDB4RDUsMHgyMCwweEZBLDB4RkUs
MHhGRiwKKyAgICAweEYzLDB4REQsMHhCMywweEQ1LDB4RUEsMHg1RiwweDU3LDB4NTcsMHhEMyww
eERELDB4OTIsMHhENSwweEM4LDB4RUEsMHhGRiwweDc1LAorICAgIDB4RDMsMHhERCwweDkyLDB4
RDUsMHhENywweEE1LDB4QkQsMHg2RCwweEIzLDB4REQsMHg3MSwweENELDB4ODAsMHhBMCwweEZG
LDB4QjcsCisgICAgMHhEMywweERELDB4NzIsMHhDRCwweDhBLDB4MkEsMHhFRiwweEZCLDB4RDMs
MHhERCwweDkyLDB4RDUsMHhFQSwweEZBLDB4RkIsMHhGRCwKKyAgICAweEIyLDB4RDUsMHg1Miww
eEQ1LDB4QjgsMHhBRSwweEVDLDB4REEsMHhCMiwweEQ1LDB4NzIsMHhENSwweEMyLDB4QzksMHg3
RCwweDc1LAorICAgIDB4NjYsMHg3MiwweDI1LDB4NzIsMHgyMCwweDA4LDB4QTgsMHgyNiwweDg3
LDB4N0EsMHg0NiwweDcyLDB4RjMsMHg1QywweEU4LDB4NUYsCisgICAgMHg2NywweDdBLDB4MjYs
MHg3MiwweEU2LDB4QUUsMHgwQSwweDAwLDB4ODcsMHg3MiwweDI2LDB4NkEsMHhCQSwweEZGLDB4
RkUsMHhFOCwKKyAgICAweDg3LDB4N0EsMHg0NiwweDcyLDB4QTksMHhFRiwweEVFLDB4NzcsMHg4
NywweDcyLDB4MjUsMHg2QSwweEFCLDB4QjcsMHhGQiwweEE4LAorICAgIDB4ODcsMHg3QSwweDQ2
LDB4NzIsMHhCRiwweENBLDB4MEEsMHhGRiwweDg3LDB4N0EsMHgyNiwweDcyLDB4MkEsMHhFQSww
eEE2LDB4OEIsCisgICAgMHg4NiwweDdBLDB4NDYsMHg3MiwweDVBLDB4RjUsMHhGRCwweEZFLDB4
ODYsMHg3QSwweDI2LDB4NkEsMHhFQiwweEYzLDB4QjgsMHhGMiwKKyAgICAweEE3LDB4N0EsMHg0
NiwweDcyLDB4Q0YsMHhFNywweEZGLDB4RUIsMHg4NiwweDdBLDB4NDYsMHg3MiwweEE5LDB4QUYs
MHhGOCwweDdDLAorICAgIDB4ODcsMHg3QSwweDQ1LDB4NzIsMHhEQywweEUyLDB4RjgsMHhBMiww
eDg2LDB4N0EsMHg0NiwweDcyLDB4RTMsMHhGQiwweEI1LDB4QUQsCisgICAgMHg4NywweDdBLDB4
NDUsMHg3MiwweEZELDB4RTMsMHhDMiwweDgyLDB4ODcsMHg3QSwweDQ1LDB4NzIsMHg2OSwweDcz
LDB4RTMsMHhGMiwKKyAgICAweDY2LDB4N0EsMHg0NSwweDcyLDB4NTAsMHg2RiwweEFFLDB4MkMs
MHg2NiwweDcyLDB4MjYsMHg3MiwweEUyLDB4RTMsMHg4MCwweEIyLAorICAgIDB4ODcsMHg3QSww
eDI1LDB4NzIsMHg3MiwweEFBLDB4RkEsMHhGOCwweDg3LDB4N0EsMHgyNSwweDcyLDB4REIsMHhC
QSwweEJBLDB4OUEsCisgICAgMHg2NiwweDdBLDB4NDYsMHg3MiwweEI5LDB4RUYsMHg3OCwweDVF
LDB4NjYsMHg3QSwweDQ2LDB4NzIsMHg5OCwweDgwLDB4NDAsMHg2MiwKKyAgICAweDg3LDB4N0Es
MHg0NiwweDcyLDB4NjIsMHhFQSwweEVBLDB4M0EsMHg4NywweDdBLDB4NDYsMHg3MiwweEYxLDB4
MDUsMHhBMywweDVFLAorICAgIDB4ODcsMHg3QSwweDI1LDB4NzIsMHhGRCwweEFCLDB4QjgsMHhB
MiwweEE3LDB4ODIsMHg0NiwweDcyLDB4RkQsMHhGQiwweERBLDB4RjIsCisgICAgMHg4NywweDdB
LDB4MjUsMHg3MiwweEVDLDB4QkYsMHgyQiwweEE4LDB4ODcsMHg4MiwweDQ2LDB4NzIsMHhGRiww
eDVBLDB4RUEsMHhCMiwKKyAgICAweDg3LDB4N0EsMHgyNSwweDcyLDB4OEQsMHhBRiwweEFBLDB4
QUYsMHg4NywweDgyLDB4MjUsMHg3MiwweDVGLDB4RUUsMHhGMCwweEUyLAorICAgIDB4QTcsMHg4
MiwweDQ2LDB4NzIsMHhGRiwweEQ3LDB4QjQsMHg3QSwweDI5LDB4OTMsMHg0NiwweDdBLDB4RkQs
MHhCRCwweEJELDB4MkQsCisgICAgMHgyQSwweDkzLDB4QTgsMHg4MiwweDZBLDB4N0YsMHg3RSww
eDc4LDB4ODcsMHg3QSwweEM1LDB4NjEsMHg3QywweDdDLDB4RkUsMHhGRSwKKyAgICAweEM0LDB4
NjEsMHgwMiwweDQxLDB4NUUsMHhGOCwweEU4LDB4RjAsMHgyMywweDQxLDB4QzIsMHgzMCwweDdF
LDB4REEsMHg3OCwweEZBLAorICAgIDB4RTIsMHgzMCwweEExLDB4MzAsMHg3QSwweDdBLDB4RjMs
MHhGNywweEMyLDB4MzAsMHg4MSwweDI4LDB4RUEsMHhFOCwweDYyLDB4RTIsCisgICAgMHhDMiww
eDI4LDB4NjEsMHgyOCwweEFBLDB4QUIsMHg4QSwweDA4LDB4RTMsMHgzMCwweEEyLDB4MjgsMHg1
NywweEY1LDB4QTcsMHhDOSwKKyAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4MDYsMHhFQSwweEVB
LDB4Q0IsMHhDMiwweDMwLDB4QTIsMHgyOCwweDU3LDB4NTUsMHhBNSwweDhFLAorICAgIDB4QzIs
MHgzMCwweEEyLDB4MjgsMHg4RCwweDhGLDB4QUEsMHg1MiwweEMyLDB4MzAsMHg4MSwweDIwLDB4
RkEsMHg2QSwweEVBLDB4QkUsCisgICAgMHhDMiwweDMwLDB4ODEsMHgyOCwweDJGLDB4QkIsMHhC
RiwweDJCLDB4MjQsMHgzOSwweEMyLDB4MzAsMHgzRCwweEFELDB4MkYsMHhBRiwKKyAgICAweDY0
LDB4NDksMHgyNCwweDQxLDB4MEYsMHgyQiwweDBCLDB4MjksMHg2NSwweDQ5LDB4RTMsMHgzOCww
eDVDLDB4NTYsMHg3RSwweEQ4LAorICAgIDB4MDQsMHg0MSwweEMyLDB4MzgsMHg1QiwweDVFLDB4
N0YsMHgzOCwweDI0LDB4NDksMHhDMiwweDM4LDB4QTksMHhBQiwweEFCLDB4MkEsCisgICAgMHg2
NCwweDUxLDB4MDMsMHg0MSwweEJELDB4MkQsMHgwOSwweDBCLDB4ODUsMHg1MSwweDIzLDB4NDks
MHg4QSwweEFBLDB4RkUsMHg3QSwKKyAgICAweEM2LDB4NTksMHg2NCwweDUxLDB4REQsMHhGRCww
eEVGLDB4QUIsMHhBNSwweDUxLDB4MDMsMHg0MSwweEY4LDB4N0MsMHg3RSwweDU4LAorICAgIDB4
NDQsMHg0OSwweDAzLDB4NDEsMHhFQiwweEUzLDB4RTIsMHg2MywweDY1LDB4NDksMHhFMywweDM4
LDB4N0QsMHhFQiwweEEzLDB4RkYsCisgICAgMHgyNCwweDQxLDB4QzIsMHgzOCwweEZELDB4RkYs
MHhDOCwweDI4LDB4MjQsMHg0MSwweEUyLDB4MzgsMHhFRCwweEVCLDB4QUQsMHg4MCwKKyAgICAw
eDIzLDB4NDEsMHhDMiwweDM4LDB4MkEsMHhBQSwweEVFLDB4NkEsMHg0NCwweDQxLDB4QzIsMHgz
OCwweEU4LDB4QjcsMHg3RCwweEQ1LAorICAgIDB4NjUsMHg0OSwweEUzLDB4MzgsMHg1RiwweEFG
LDB4QTksMHgyRiwweDY1LDB4NDksMHhFMiwweDM4LDB4QjUsMHhBRiwweDNFLDB4MEEsCisgICAg
MHg2NCwweDQ5LDB4MjMsMHg0MSwweERGLDB4QkEsMHgyOCwweEEwLDB4NDQsMHg0OSwweEUzLDB4
MzgsMHg1RSwweDVBLDB4NTgsMHg3RSwKKyAgICAweEUzLDB4MzgsMHhBMiwweDMwLDB4MzYsMHhG
RSwweERFLDB4OUUsMHgyNCwweDQxLDB4QzIsMHgzOCwweEFGLDB4QkQsMHgyRiwweEFCLAorICAg
IDB4QTUsMHg1MSwweDQ0LDB4NDksMHhBRCwweDA5LDB4MDksMHhBNSwweDA2LDB4NjIsMHg4NCww
eDUxLDB4NUYsMHg3RCwweEYzLDB4QUIsCisgICAgMHhDNSwweDU5LDB4MjMsMHg0MSwweEJGLDB4
REYsMHg1RSwweDdDLDB4NDQsMHg0OSwweDAzLDB4NDEsMHhFMCwweDdDLDB4N0YsMHg3RSwKKyAg
ICAweDIzLDB4NDksMHhFMiwweDQwLDB4QUYsMHgyRCwweDM1LDB4MjUsMHg4NCwweDUxLDB4MjMs
MHg0OSwweDI1LDB4M0QsMHgzNSwweEI3LAorICAgIDB4NjcsMHg3MiwweEE1LDB4NTksMHhGNSww
eEZELDB4QjUsMHgyRCwweDY3LDB4N0EsMHhDNSwweDYxLDB4REQsMHhCRiwweEFBLDB4ODAsCisg
ICAgMHgyNiwweDZBLDB4RTUsMHg2OSwweEQ1LDB4NkUsMHg2NCwweEU4LDB4MDYsMHg2QSwweEE1
LDB4NjEsMHhFOCwweEYyLDB4RjIsMHg3OCwKKyAgICAweDQ3LDB4NzIsMHhBNCwweDYxLDB4MDMs
MHhGRCwweEY1LDB4NTUsMHg0NywweDdBLDB4QTQsMHg2MSwweDIwLDB4QUIsMHhGNywweDVELAor
ICAgIDB4NDYsMHg3QSwweEE0LDB4NjEsMHgyQSwweEFBLDB4QUQsMHhGRCwweDY3LDB4N0EsMHgy
NiwweDcyLDB4MDAsMHgwMCwweEFCLDB4NUQsCisgICAgMHg2NywweDcyLDB4QzUsMHg2MSwweERB
LDB4QUEsMHhBOCwweEUyLDB4MDcsMHg2QSwweEE0LDB4NTksMHgwMiwweEFBLDB4RkMsMHg3RSwK
KyAgICAweDQ3LDB4NzIsMHhBNCwweDU5LDB4MDgsMHhBQiwweDJGLDB4QjUsMHgyNiwweDZBLDB4
QTUsMHg1OSwweEVFLDB4RDgsMHg1QSwweDc4LAorICAgIDB4RTYsMHg2MSwweEE1LDB4NTksMHhG
RiwweEYwLDB4N0UsMHg3NSwweEM2LDB4NTksMHg2NCwweDUxLDB4QTIsMHhBMiwweERBLDB4NUIs
CisgICAgMHgwNywweDYyLDB4NjQsMHg1MSwweEEyLDB4MDIsMHhCQiwweDc1LDB4RTYsMHg1OSww
eDY0LDB4NTEsMHhCRSwweEIyLDB4RjIsMHhGRCwKKyAgICAweEE1LDB4NTksMHg0MywweDQ5LDB4
ODAsMHg5QSwweDM4LDB4MzgsMHgwNiwweDYyLDB4QTUsMHg1OSwweDJGLDB4MjUsMHhGNSwweEY3
LAorICAgIDB4NDcsMHg3MiwweEE0LDB4NTksMHgwOCwweEJGLDB4REQsMHg1RiwweEM5LDB4ODIs
MHhFNiwweDYxLDB4MjIsMHgyQiwweEFELDB4RjUsCisgICAgMHhDOSwweDgyLDB4NjcsMHg3QSww
eEZCLDB4Q0UsMHg2QiwweEY5LDB4MkQsMHhBQywweDY3LDB4N0EsMHgyRiwweEJELDB4RjUsMHhG
RCwKKyAgICAweDcyLDB4RDUsMHg4QiwweDlCLDB4MDIsMHgwRiwweDJELDB4QjUsMHhGNCwweEU1
LDB4NzIsMHhENSwweDAwLDB4QTIsMHhBQiwweEFELAorICAgIDB4RjQsMHhFNSwweEIzLDB4REQs
MHgyMCwweEEyLDB4QTMsMHhFOSwweEQzLDB4REQsMHhCMywweERELDB4NzYsMHhGMCwweDIwLDB4
ODAsCisgICAgMHhGMywweERELDB4QjMsMHhERCwweDZCLDB4RUYsMHg3QSwweDVFLDB4QjMsMHhE
RCwweDcyLDB4RDUsMHgwMiwweDA4LDB4RkUsMHg3RiwKKyAgICAweEQzLDB4REQsMHg5MiwweEQ1
LDB4MEEsMHgyRCwweDk1LDB4NTUsMHhGNCwweERELDB4OTIsMHhENSwweDAwLDB4MDgsMHg4Riww
eEFELAorICAgIDB4RDMsMHhFNSwweDE0LDB4REUsMHhBQSwweEFBLDB4QUUsMHhGRSwweDU1LDB4
RUUsMHhEMywweERELDB4QjUsMHgyOSwweDJCLDB4MkEsCisgICAgMHg1NSwweEVFLDB4RjQsMHhE
RCwweDgwLDB4QjAsMHg3QywweDVBLDB4MzUsMHhFRSwweDkyLDB4RDUsMHhBMCwweDIwLDB4RkUs
MHg1RiwKKyAgICAweDM1LDB4RTYsMHhCMywweEQ1LDB4MjAsMHgwMCwweDAwLDB4MDksMHg1NSww
eEVFLDB4MTQsMHhFNiwweEQ3LDB4N0UsMHhGRSwweEUzLAorICAgIDB4MzUsMHhFRSwweDE0LDB4
REUsMHhENywweEZGLDB4QjYsMHhBMiwweDM1LDB4RTYsMHhGNCwweERELDB4RUIsMHhFRiwweEVB
LDB4NjAsCisgICAgMHgzNSwweEU2LDB4RjQsMHhFNSwweEFCLDB4QUYsMHg4QSwweDJBLDB4MzUs
MHhFNiwweEY0LDB4RTUsMHhGQiwweEVBLDB4QTgsMHg4MiwKKyAgICAweDM1LDB4RTYsMHhENCww
eERELDB4QkEsMHgyQSwweDJBLDB4MEEsMHg5NiwweEVFLDB4MzUsMHhFNiwweDA5LDB4MEIsMHgw
QiwweDBCLAorICAgIDB4QjYsMHhGNiwweDc2LDB4RUUsMHhDQSwweDZBLDB4RUEsMHhBQSwweEI2
LDB4RjYsMHg3NSwweEVFLDB4NkIsMHhFRiwweEFCLDB4RUEsCisgICAgMHg3NiwweEY2LDB4OTYs
MHhFRSwweEQ1LDB4RjUsMHhGRiwweERELDB4OTYsMHhFRSwweDc2LDB4RUUsMHhEOCwweENBLDB4
M0UsMHhBOCwKKyAgICAweDc2LDB4RUUsMHgxNCwweEU2LDB4NjAsMHhDMCwweEMwLDB4MDAsMHgz
NSwweEU2LDB4QjMsMHhENSwweDdGLDB4REMsMHg1QSwweDc4LAorICAgIDB4RDMsMHhERCwweDkz
LDB4RDUsMHhCRSwweEZGLDB4QUEsMHhBQSwweEQzLDB4REQsMHg5MiwweEQ1LDB4N0UsMHhCRSww
eEZFLDB4NUEsCisgICAgMHhCMiwweEQ1LDB4OTIsMHhENSwweDY1LDB4NzUsMHg3NSwweEZELDB4
QjIsMHhENSwweDcyLDB4Q0QsMHhGNywweEJBLDB4RUEsMHhFRSwKKyAgICAweDkyLDB4RDUsMHg3
MiwweENELDB4ODAsMHhBQSwweEUyLDB4QkUsMHg5MiwweEQ1LDB4NTEsMHhDRCwweDAyLDB4MkIs
MHgyQSwweEVBLAorICAgIDB4OTIsMHhENSwweDUxLDB4Q0QsMHhGOCwweEZBLDB4OUYsMHg1Nyww
eDkyLDB4RDUsMHg1MSwweENELDB4N0YsMHg3NywweEVGLDB4OUQsCisgICAgMHg2NywweDdBLDB4
NDYsMHg3MiwweDNELDB4QUEsMHhDRiwweDlBLDB4NjcsMHg3QSwweDQ2LDB4NzIsMHhCNCwweDUw
LDB4RkUsMHgwQSwKKyAgICAweDg3LDB4N0EsMHg0NywweDcyLDB4REEsMHhCRiwweEVGLDB4QkIs
MHg2NywweDdBLDB4NDYsMHg3MiwweERCLDB4ODIsMHhDMiwweDhCLAorICAgIDB4NjcsMHg3Miww
eDQ2LDB4NzIsMHgzQSwweDdBLDB4RkEsMHg5NywweDg3LDB4N0EsMHg0NiwweDcyLDB4N0MsMHg2
QiwweDQzLDB4RjIsCisgICAgMHg4NywweDdBLDB4NDYsMHg3MiwweDdGLDB4QTEsMHhCRSwweEFE
LDB4ODcsMHg3QSwweDI1LDB4NkEsMHgyQSwweEFBLDB4RTYsMHhGOCwKKyAgICAweEE3LDB4N0Es
MHgyNiwweDZBLDB4RUUsMHhCRSwweEI2LDB4MkIsMHg0NiwweDdBLDB4NjYsMHg3MiwweDdELDB4
RDUsMHhCRCwweDc3LAorICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHgwRSwweEFCLDB4QkIsMHhC
NSwweDg2LDB4N0EsMHg0NSwweDcyLDB4REUsMHhBQywweDJBLDB4QTIsCisgICAgMHg4NiwweDdB
LDB4NDYsMHg3MiwweEE4LDB4QUEsMHhCRCwweEFBLDB4ODYsMHg3QSwweDQ2LDB4NzIsMHhCRiww
eEVDLDB4RTIsMHhBMiwKKyAgICAweDg2LDB4N0EsMHg0NiwweDcyLDB4RDcsMHg0NSwweDhGLDB4
QkUsMHg4NiwweDdBLDB4NDYsMHg3MiwweEVGLDB4QjcsMHhBQSwweEFBLAorICAgIDB4ODcsMHg3
QSwweDQ1LDB4NzIsMHhBRiwweEJGLDB4QUYsMHg4QSwweDg2LDB4N0EsMHg0NiwweDcyLDB4RkIs
MHhFQSwweEVBLDB4OUMsCisgICAgMHhBNywweDdBLDB4NjcsMHg3MiwweEZGLDB4N0QsMHhGQiww
eEIzLDB4ODYsMHg3QSwweDQ2LDB4NzIsMHhBRSwweEZFLDB4RjYsMHhENiwKKyAgICAweDg3LDB4
N0EsMHg0NiwweDcyLDB4QTUsMHhBRSwweEZFLDB4QUEsMHg2NywweDdBLDB4NDYsMHg3MiwweEI3
LDB4QUIsMHgzRSwweDIyLAorICAgIDB4ODcsMHg4MiwweDQ2LDB4NzIsMHhGRiwweERBLDB4OTgs
MHgzRiwweDg3LDB4N0EsMHg0NiwweDdBLDB4QUEsMHg4MywweEVBLDB4NjAsCisgICAgMHg4Nyww
eDdBLDB4NDYsMHg3MiwweEJBLDB4RjgsMHgxRCwweDlCLDB4ODYsMHg3QSwweDQ1LDB4N0EsMHg4
QSwweEU4LDB4MkMsMHhCOSwKKyAgICAweDg3LDB4N0EsMHg0NiwweDdBLDB4QkUsMHhBRiwweEFB
LDB4QTIsMHg4NywweDdBLDB4MjYsMHg3QSwweEFDLDB4QTgsMHhBOCwweDgyLAorICAgIDB4ODcs
MHg3QSwweDI1LDB4NzIsMHhBOSwweEZBLDB4QkEsMHgyOCwweEE3LDB4ODIsMHg2NiwweDdBLDB4
NTcsMHhGNSwweEFELDB4QjksCisgICAgMHhDOCwweDhBLDB4NDYsMHg3MiwweDdGLDB4N0UsMHhG
RiwweDNCLDB4Q0IsMHhBMywweEE4LDB4ODIsMHhGNSwweEE1LDB4MEQsMHgwQiwKKyAgICAweENC
LDB4QTMsMHhBNywweDgyLDB4N0UsMHg1RSwweDc4LDB4N0MsMHg4NywweDgyLDB4RTUsMHg2MSww
eDdFLDB4N0MsMHg3QywweDU4LAorICAgIDB4RTUsMHg2MSwweDQzLDB4NDksMHg3RSwweDVFLDB4
N0MsMHg1QywweDAzLDB4NDEsMHhDMiwweDMwLDB4RTQsMHg1NiwweDVFLDB4NTQsCisgICAgMHhD
MiwweDMwLDB4QTEsMHgyOCwweDM2LDB4OEYsMHhDNiwweDgwLDB4QzIsMHgzMCwweEEyLDB4Mjgs
MHg1OCwweDVGLDB4NUYsMHg5NSwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4QjcsMHhCNyww
eEFFLDB4OEYsMHgwMywweDMxLDB4QTIsMHgyOCwweEFELDB4RDcsMHhBRSwweEIyLAorICAgIDB4
RTMsMHgzMCwweEEyLDB4MjgsMHhFOSwweEU4LDB4QzIsMHg4MCwweEMyLDB4MzAsMHhBMiwweDI4
LDB4MEIsMHgyRiwweDM1LDB4ODgsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDdFLDB4RUUs
MHg3RCwweDU3LDB4QzIsMHgzMCwweDgyLDB4MjgsMHhGRiwweEZGLDB4RkIsMHgyMywKKyAgICAw
eDAzLDB4MzksMHhBMiwweDI4LDB4OTUsMHhBNSwweEI3LDB4MkEsMHg0MywweDQxLDB4RTMsMHgz
OCwweEU1LDB4QUQsMHhBRiwweDhGLAorICAgIDB4ODUsMHg0OSwweDIzLDB4NDEsMHgyRCwweEFE
LDB4RUQsMHg3NywweDY0LDB4NDksMHhDMiwweDM4LDB4RjgsMHg3OCwweDdBLDB4N0YsCisgICAg
MHgyMywweDQxLDB4QzIsMHgzOCwweEJFLDB4M0QsMHgwRCwweDhGLDB4QTYsMHg1MSwweDQ0LDB4
NDksMHg3RCwweDhELDB4MEQsMHg4OSwKKyAgICAweEE2LDB4NTEsMHgyNCwweDQ5LDB4RjUsMHg3
RSwweDY4LDB4NjgsMHg2NCwweDQ5LDB4MjQsMHg0MSwweEFFLDB4MEIsMHgwRiwweEM1LAorICAg
IDB4QTUsMHg1OSwweDAzLDB4NDEsMHgwQSwweDhBLDB4RUUsMHg1RiwweEM1LDB4NTksMHhFMyww
eDM4LDB4RjgsMHhGMiwweEZGLDB4N0QsCisgICAgMHgyNCwweDQxLDB4QzIsMHgzOCwweEU4LDB4
NTgsMHhEQSwweEYyLDB4MDMsMHgzOSwweEMyLDB4MzgsMHgwRSwweEFELDB4MTcsMHhCNSwKKyAg
ICAweDI0LDB4NDEsMHhFMywweDM4LDB4MDMsMHgyMywweDNELDB4NUQsMHg2NSwweDQ5LDB4MDMs
MHg0MSwweEVBLDB4M0EsMHg5QSwweDVGLAorICAgIDB4NjQsMHg0OSwweEMxLDB4MzgsMHg2QSww
eEYwLDB4RTgsMHhBQiwweDAzLDB4NDEsMHhDMiwweDMwLDB4RDUsMHhBOSwweEFBLDB4ODAsCisg
ICAgMHgyMywweDQxLDB4RTMsMHgzOCwweDJCLDB4MjMsMHgzRiwweDJCLDB4ODUsMHg1MSwweDAz
LDB4NDEsMHg4QiwweDJCLDB4MkQsMHhBRCwKKyAgICAweEE2LDB4NTEsMHgyMywweDQxLDB4RkMs
MHhGRSwweDdFLDB4NUYsMHg0NSwweDQ5LDB4QzIsMHgzOCwweDdGLDB4NzYsMHhGQSwweDgyLAor
ICAgIDB4MDMsMHgzOSwweEMyLDB4MzgsMHhENSwweEY3LDB4QTYsMHhCRSwweDAzLDB4NDEsMHhD
MiwweDM4LDB4MkYsMHhFRiwweEJFLDB4ODIsCisgICAgMHg4NSwweDQ5LDB4MDMsMHg0MSwweDJE
LDB4RkQsMHhGRCwweEQ1LDB4QzYsMHg1OSwweDIzLDB4NDEsMHgyMiwweDJGLDB4QjUsMHhENSwK
KyAgICAweEM1LDB4NTEsMHgyNCwweDQ5LDB4RjgsMHg2RSwweEZGLDB4N0YsMHg0NCwweDQ5LDB4
MDMsMHg0MSwweDdBLDB4NTAsMHg3MiwweEIxLAorICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHhC
NSwweEJELDB4OUQsMHgyQSwweEU1LDB4NjEsMHg2NCwweDUxLDB4NTUsMHhERCwweEFGLDB4MkQs
CisgICAgMHgyNiwweDZBLDB4ODQsMHg1OSwweDJELDB4RjUsMHhGRSwweEFCLDB4NDcsMHg3Miww
eEE0LDB4NTksMHg4MCwweDAyLDB4QUIsMHhCNywKKyAgICAweDI2LDB4NkEsMHg4NCwweDU5LDB4
QTgsMHhGMCwweDYwLDB4NzgsMHhFNSwweDYxLDB4NjQsMHg1MSwweEU4LDB4QkIsMHhGRiwweDdG
LAorICAgIDB4QzUsMHg2MSwweDQzLDB4NTEsMHgyMiwweEFBLDB4QjcsMHhENSwweEM1LDB4NjEs
MHg4NCwweDU5LDB4RjIsMHhGQSwweDZCLDB4RkIsCisgICAgMHhDNSwweDYxLDB4ODQsMHg1OSww
eEIyLDB4MEQsMHgzNywweDNELDB4MjcsMHg3MiwweDg0LDB4NTksMHhBQiwweEZGLDB4N0EsMHg3
MCwKKyAgICAweDI3LDB4NkEsMHg4NCwweDU5LDB4RUEsMHg4QiwweDJELDB4RkYsMHgwNiwweDZB
LDB4NjQsMHg1MSwweEZBLDB4N0EsMHg3QywweDdBLAorICAgIDB4QTQsMHg1OSwweDQ0LDB4NTEs
MHgyQiwweDM3LDB4NTcsMHg3RCwweEU2LDB4NjEsMHg0NCwweDQ5LDB4QTAsMHhBRiwweDU3LDB4
NTUsCisgICAgMHhBNSwweDU5LDB4NDQsMHg0OSwweDA4LDB4OEIsMHhGQSwweEZGLDB4ODUsMHg1
MSwweDQ0LDB4NDksMHhGRSwweDcwLDB4NkEsMHg3QiwKKyAgICAweDg1LDB4NTEsMHgyMywweDQ5
LDB4MkYsMHhCNywweEJELDB4NUYsMHhDNiwweDU5LDB4NjQsMHg0OSwweEY1LDB4OEIsMHgwRCww
eDI1LAorICAgIDB4MDYsMHg2MiwweDY0LDB4NTEsMHg3RiwweEVBLDB4QUEsMHgwQSwweDA2LDB4
NjIsMHg4NCwweDUxLDB4QkYsMHhGNywweDc3LDB4RDgsCisgICAgMHgwNiwweDYyLDB4ODQsMHg1
MSwweEFBLDB4MkYsMHhCRCwweEQ3LDB4RTUsMHg2MSwweDg0LDB4NTksMHgyMiwweEZBLDB4NjIs
MHhBRiwKKyAgICAweDY3LDB4NzIsMHhBNSwweDU5LDB4MDIsMHgwOSwweEFELDB4NTUsMHhFOSww
eDhBLDB4NDcsMHg3MiwweDBCLDB4QTUsMHhCRCwweEQ1LAorICAgIDB4NEQsMHhCNCwweEU5LDB4
OEEsMHgyQiwweDJGLDB4QkQsMHhCNSwweDkyLDB4REQsMHhFQywweEEzLDB4MDIsMHgyQiwweDJC
LDB4MjUsCisgICAgMHhGNCwweEU1LDB4QjMsMHhERCwweEEzLDB4OEIsMHgyQiwweDJELDB4RjQs
MHhFNSwweDkyLDB4RDUsMHhBQSwweEJBLDB4N0EsMHhGQywKKyAgICAweEIzLDB4REQsMHg1MSww
eENELDB4QTAsMHhGOCwweERBLDB4RkEsMHg5MiwweEQ1LDB4NzIsMHhENSwweDZGLDB4QUYsMHhG
NSwweEY1LAorICAgIDB4RDMsMHhERCwweDcyLDB4Q0QsMHhBRCwweEI3LDB4MkYsMHgwRiwweEY0
LDB4REQsMHg5MiwweEQ1LDB4QTksMHgwQiwweEFBLDB4MkIsCisgICAgMHgzNCwweEU2LDB4RjQs
MHhERCwweEZELDB4MkQsMHhBRiwweEY1LDB4MzUsMHhFNiwweEQzLDB4REQsMHgwMiwweEZBLDB4
RkUsMHg1NSwKKyAgICAweDE0LDB4RTYsMHhEMywweERELDB4RTAsMHhCNywweDdGLDB4REQsMHhE
MywweERELDB4NzIsMHhDRCwweEQ4LDB4NzgsMHg1OCwweDVFLAorICAgIDB4MTQsMHhFNiwweDky
LDB4RDUsMHgwQiwweDBELDB4MEQsMHgyOSwweDM1LDB4RTYsMHhGNCwweERELDB4ODAsMHg3Qiww
eEZFLDB4QkUsCisgICAgMHg1NSwweEVFLDB4MTQsMHhFNiwweDg3LDB4MEQsMHgwMywweDAyLDB4
NzYsMHhFRSwweDE0LDB4RTYsMHhERSwweEEyLDB4OEEsMHg4QSwKKyAgICAweDU1LDB4RUUsMHgz
NSwweEU2LDB4NzUsMHhGMiwweEMwLDB4NTAsMHgxNCwweEVFLDB4MzUsMHhFNiwweEQ1LDB4Rjcs
MHhCNSwweEFELAorICAgIDB4MzUsMHhFNiwweDE0LDB4RTYsMHgzRiwweEI5LDB4MjMsMHhCQiww
eEI3LDB4RjYsMHg1NSwweEU2LDB4RkQsMHgzRCwweDI5LDB4MEIsCisgICAgMHhCNiwweEY2LDB4
OTYsMHhFRSwweDdBLDB4RTgsMHg3QSwweDdFLDB4NzYsMHhGRSwweDk2LDB4RUUsMHhENSwweERG
LDB4NzUsMHg3NywKKyAgICAweDk2LDB4RUUsMHg3NiwweEVFLDB4MDgsMHhBMCwweEIyLDB4NjYs
MHg5NiwweEVFLDB4NzYsMHhFRSwweEEyLDB4RUEsMHhERSwweDdCLAorICAgIDB4NzYsMHhFRSww
eDU2LDB4RTYsMHgwOCwweDAwLDB4MDAsMHhBMCwweDc2LDB4RUUsMHhEMywweERELDB4NUUsMHhF
MCwweEU4LDB4ODgsCisgICAgMHgxNCwweEU2LDB4QjMsMHhENSwweDVGLDB4NUYsMHhGRSwweDYw
LDB4RDMsMHhERCwweDkyLDB4RDUsMHhGQywweEZGLDB4RUUsMHhCOCwKKyAgICAweEIyLDB4RDUs
MHg1MiwweENELDB4QUEsMHhBQSwweEE4LDB4RTAsMHg5MiwweEQ1LDB4NzIsMHhDRCwweDA4LDB4
MEEsMHg5OCwweDg4LAorICAgIDB4QjIsMHhENSwweDcyLDB4Q0QsMHhGNiwweDdBLDB4RkIsMHhG
RSwweDkyLDB4RDUsMHg3MSwweENELDB4NjcsMHhGRSwweDZGLDB4N0EsCisgICAgMHg3MSwweENE
LDB4NTEsMHhDRCwweDc3LDB4NUUsMHg1RiwweDlBLDB4NzEsMHhDRCwweDMxLDB4QzUsMHhBQiww
eEZCLDB4RkIsMHhBQSwKKyAgICAweDY3LDB4N0EsMHhBNCwweDYxLDB4MDIsMHgwQSwweEFBLDB4
RDUsMHg4OCwweDdBLDB4RTUsMHg2OSwweDhBLDB4QUUsMHgwRSwweDJELAorICAgIDB4NjcsMHg3
MiwweDI2LDB4NzIsMHhDMiwweDhBLDB4MjcsMHhBQywweDY3LDB4N0EsMHg0NiwweDcyLDB4MDYs
MHhFQSwweDUwLDB4NTAsCisgICAgMHg2NywweDdBLDB4NDYsMHg3MiwweDU3LDB4NzAsMHg3QSww
eEUzLDB4ODcsMHg3MiwweDI1LDB4NkEsMHg4MiwweEFCLDB4RTcsMHhBQSwKKyAgICAweDg2LDB4
N0EsMHg0NiwweDcyLDB4NzYsMHhBNSwweEFCLDB4RjUsMHg4NywweDdBLDB4NDYsMHg3MiwweEJG
LDB4QUEsMHhDRiwweEVGLAorICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhGOSwweDc4LDB4ODAs
MHgwMCwweDg3LDB4N0EsMHg0NiwweDcyLDB4QjksMHhBMywweDg5LDB4M0UsCisgICAgMHhBNyww
eDdBLDB4NDYsMHg3MiwweDc0LDB4NzcsMHhERiwweERFLDB4ODYsMHg3QSwweDQ2LDB4NzIsMHg4
RiwweEFCLDB4RkIsMHhGRCwKKyAgICAweDg2LDB4N0EsMHg0NiwweDcyLDB4ODgsMHg4QiwweDBB
LDB4ODksMHhBNywweDdBLDB4NDUsMHg3MiwweEVBLDB4NzgsMHhBQSwweEJGLAorICAgIDB4ODYs
MHg3QSwweDY2LDB4NzIsMHhDMywweEJCLDB4QkUsMHg1NywweDg2LDB4N0EsMHg0NSwweDcyLDB4
QTIsMHhCOCwweDBELDB4ODgsCisgICAgMHhBNywweDdBLDB4NjYsMHg3MiwweEZBLDB4RTIsMHg1
NiwweERGLDB4ODYsMHg3QSwweDY2LDB4NzIsMHhERSwweEU2LDB4OEIsMHhBNiwKKyAgICAweEE3
LDB4N0EsMHg2NiwweDcyLDB4RjQsMHhENywweDdELDB4N0IsMHg4NiwweDdBLDB4NDYsMHg3Miww
eEJFLDB4RkEsMHg2RSwweEQ1LAorICAgIDB4QTcsMHg4MiwweDY2LDB4N0EsMHhFNSwweDc1LDB4
NzUsMHg3NSwweDg3LDB4N0EsMHg0NiwweDdBLDB4QjksMHgzMywweDBCLDB4QUIsCisgICAgMHg4
NywweDdBLDB4MjUsMHg3QSwweEFBLDB4NjIsMHhBQSwweEFBLDB4ODcsMHg3QSwweDQ2LDB4NzIs
MHhDRCwweEE1LDB4QkYsMHgzRSwKKyAgICAweEE3LDB4N0EsMHg2NiwweDdBLDB4NzUsMHg3NSww
eDZCLDB4RUIsMHhDOCwweDgyLDB4NDUsMHg3MiwweEY1LDB4RUQsMHgyQiwweDhCLAorICAgIDB4
QTcsMHg4MiwweDY2LDB4N0EsMHhGQSwweEI2LDB4RTQsMHg2NywweEE3LDB4ODIsMHg0NiwweDcy
LDB4OEIsMHgyRiwweEI3LDB4QkEsCisgICAgMHhBNywweDgyLDB4NjYsMHg3QSwweDlFLDB4QUIs
MHhBQSwweEFBLDB4QTcsMHg3QSwweDQ2LDB4NzIsMHhBQywweEJGLDB4RTYsMHhFQiwKKyAgICAw
eDJBLDB4OTMsMHg4NiwweDdBLDB4MTcsMHhBNSwweDJELDB4MkQsMHgwRCwweEFDLDB4MjksMHg5
MywweDI5LDB4MkIsMHgwQiwweDBBLAorICAgIDB4RUMsMHhBQiwweEU4LDB4OEEsMHg3OCwweDc4
LDB4RjgsMHg3OCwweEM4LDB4ODIsMHhDNiwweDYxLDB4N0EsMHg3QSwweEY4LDB4N0MsCisgICAg
MHhDNSwweDYxLDB4MDMsMHg0MSwweDc4LDB4NjAsMHhFOCwweEVDLDB4MjMsMHg0MSwweEMyLDB4
MzgsMHhENywweEFBLDB4QUEsMHgwMCwKKyAgICAweDAzLDB4MzksMHhBMiwweDI4LDB4REYsMHg2
RSwweDZBLDB4RjAsMHhBMiwweDMwLDB4QzIsMHgyOCwweDRBLDB4NkUsMHhGRiwweEJBLAorICAg
IDB4RTMsMHgzMCwweEEyLDB4MjgsMHg4QSwweEYzLDB4RjksMHg3NSwweEUzLDB4MzAsMHhBMiww
eDI4LDB4M0EsMHhBQiwweEJGLDB4RkYsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEEwLDB4
RUEsMHhGOCwweDdBLDB4QzIsMHgzMCwweEEyLDB4MjgsMHhFMCwweDQyLDB4QzIsMHg2MSwKKyAg
ICAweEMyLDB4MjgsMHg4MiwweDIwLDB4QjAsMHgyQSwweEJGLDB4QkQsMHhFMywweDMwLDB4QTIs
MHgyOCwweEE1LDB4MkYsMHgyRSwweDJCLAorICAgIDB4NDQsMHg0MSwweEUzLDB4MzAsMHhGNSww
eEJELDB4RUYsMHgyQSwweDQ0LDB4NDEsMHgwMywweDM5LDB4MjksMHg4MywweDBCLDB4MDAsCisg
ICAgMHg0NCwweDQ5LDB4QzIsMHgzMCwweEU4LDB4QjIsMHhGRSwweDVFLDB4MDMsMHgzOSwweEMy
LDB4MzgsMHhCRSwweEJFLDB4M0YsMHgwQiwKKyAgICAweDQ0LDB4NDEsMHhFMiwweDM4LDB4Qjcs
MHgyRiwweDNCLDB4QUQsMHhBNSwweDUxLDB4MjQsMHg0MSwweDgzLDB4QUIsMHhCRCwweEY1LAor
ICAgIDB4ODUsMHg1MSwweDI0LDB4NDEsMHg2MiwweEU4LDB4NjgsMHg2QiwweDIzLDB4NDEsMHhD
MiwweDM4LDB4OEEsMHhGQywweDc4LDB4N0UsCisgICAgMHgwMywweDQxLDB4QTIsMHgzMCwweDIw
LDB4QkEsMHhGQiwweDc3LDB4QzIsMHg0MCwweDAzLDB4MzksMHhGQiwweEVFLDB4RkEsMHhFRiwK
KyAgICAweDI0LDB4NDEsMHhDMiwweDM4LDB4QkUsMHhCQiwweEVGLDB4N0IsMHgwMywweDM5LDB4
QTIsMHgzMCwweDBBLDB4MjAsMHhCRSwweDk3LAorICAgIDB4MjQsMHg0MSwweEMzLDB4MzAsMHg3
RiwweEZBLDB4OEEsMHhBRiwweDI0LDB4NDEsMHhDMiwweDM4LDB4RjIsMHhGRCwweEI1LDB4Rjcs
CisgICAgMHgyNCwweDQxLDB4RTMsMHgzOCwweDBELDB4QkYsMHg3QiwweEVELDB4MjMsMHg0MSww
eEUyLDB4MzgsMHhBMCwweEFDLDB4QTcsMHgwRiwKKyAgICAweDQ0LDB4NDEsMHgwMywweDQxLDB4
REYsMHg4MywweEUxLDB4MkIsMHg0NCwweDQxLDB4MDMsMHg0MSwweDM3LDB4MzUsMHg1NywweDU2
LAorICAgIDB4NjQsMHg0OSwweDIzLDB4NDEsMHhEQSwweDAzLDB4RTEsMHg3RiwweDg1LDB4NTEs
MHgyNCwweDQxLDB4N0IsMHg4QSwweEFBLDB4RkIsCisgICAgMHg2NSwweDQ5LDB4MDMsMHg0MSww
eDU1LDB4NUUsMHhGQSwweEY4LDB4NjUsMHg0OSwweDAzLDB4MzksMHg1NywweDdGLDB4NkIsMHgy
MywKKyAgICAweDg1LDB4NDksMHgwMywweDQxLDB4REQsMHhFNSwweEE5LDB4QTIsMHg4NSwweDUx
LDB4MjQsMHg0MSwweEI1LDB4MzcsMHhCRSwweEZELAorICAgIDB4ODUsMHg1MSwweDI0LDB4NDks
MHg2QSwweDZBLDB4RkEsMHhBRSwweDg0LDB4NTEsMHgwMywweDQxLDB4QkQsMHhBRiwweEJBLDB4
ODIsCisgICAgMHg4NSwweDUxLDB4MjMsMHg0OSwweEFCLDB4QUYsMHgyRiwweEE0LDB4RTYsMHg2
MSwweDg0LDB4NTEsMHhBNSwweDI1LDB4QUQsMHgwQiwKKyAgICAweDI2LDB4NjIsMHhDNSwweDYx
LDB4QUYsMHgzRiwweEZGLDB4QjUsMHgwNiwweDZBLDB4QTQsMHg1OSwweDJFLDB4NzgsMHg3RSww
eDVBLAorICAgIDB4RTUsMHg2OSwweDY0LDB4NTEsMHhGOCwweEZCLDB4RDUsMHhGNywweEM1LDB4
NjEsMHg2NCwweDUxLDB4RkYsMHg3MiwweEE4LDB4QTMsCisgICAgMHhBNSwweDU5LDB4MjMsMHg1
MSwweEQ2LDB4OTcsMHhFMiwweEEwLDB4RTYsMHg2OSwweDg0LDB4NTksMHhGRCwweEY5LDB4QkQs
MHgyNSwKKyAgICAweDA3LDB4NkEsMHhBNSwweDYxLDB4REQsMHhERiwweDI5LDB4MEEsMHg0Nyww
eDcyLDB4QTUsMHg2MSwweDdBLDB4Q0EsMHhFQiwweEU4LAorICAgIDB4QTUsMHg1OSwweDQ0LDB4
NTEsMHhGMCwweEZFLDB4OUYsMHhBOCwweEM1LDB4NjEsMHg0NCwweDQ5LDB4RTgsMHhBQiwweEVC
LDB4RjcsCisgICAgMHg4NSwweDUxLDB4MjMsMHg1MSwweDZBLDB4QUIsMHgwQiwweDAyLDB4ODQs
MHg1MSwweDQ0LDB4NDksMHg3NSwweEZGLDB4NkYsMHhGQywKKyAgICAweDY0LDB4NDksMHgyMyww
eDQ5LDB4OEEsMHhFQiwweDY3LDB4ODgsMHg4NSwweDUxLDB4MjMsMHg0OSwweDhCLDB4MkIsMHhC
RCwweEU1LAorICAgIDB4ODUsMHg1MSwweDIzLDB4NDksMHg3RSwweEFFLDB4MDIsMHgwQiwweEM2
LDB4NTksMHg2NCwweDQ5LDB4MkQsMHgyRCwweEJGLDB4RkYsCisgICAgMHgwNiwweDYyLDB4QTUs
MHg1MSwweDhBLDB4QUEsMHhFQiwweEVGLDB4MDYsMHg2MiwweDg0LDB4NTEsMHhBOCwweENBLDB4
RUIsMHg2RCwKKyAgICAweEU2LDB4NjEsMHhBNSwweDU5LDB4NzYsMHg3QSwweEVELDB4MDUsMHhF
NiwweDYxLDB4ODQsMHg1MSwweDJELDB4QUYsMHhBNiwweEZBLAorICAgIDB4MjcsMHg3MiwweEE1
LDB4NTksMHhERCwweEJBLDB4QUEsMHgyRiwweDg4LDB4N0EsMHhFNiwweDY5LDB4MkQsMHhBRCww
eDJCLDB4MkIsCisgICAgMHg0OSwweDkzLDB4QTgsMHg3QSwweDJELDB4MzUsMHhCRCwweEJELDB4
NEQsMHhCNCwweEU5LDB4OEEsMHgwQiwweEFGLDB4RkYsMHhERCwKKyAgICAweDkzLDB4REQsMHhF
QywweEEzLDB4MDIsMHgwRiwweEFELDB4QjUsMHhGMywweEU1LDB4NzIsMHhENSwweEZBLDB4QUEs
MHhBQiwweEI1LAorICAgIDB4RDMsMHhERCwweDcyLDB4RDUsMHg1RiwweDVFLDB4N0MsMHhGRSww
eDkyLDB4RDUsMHg3MSwweEQ1LDB4MEIsMHgwOSwweEE5LDB4MDAsCisgICAgMHhEMywweERELDB4
OTIsMHhENSwweEFELDB4QUIsMHhBNSwweDJELDB4MTQsMHhFNiwweEIzLDB4RDUsMHhBRiwweEVE
LDB4QkYsMHg4QiwKKyAgICAweEY0LDB4REQsMHhCMiwweERELDB4ODgsMHhCRSwweDIwLDB4MjAs
MHgxNCwweEU2LDB4RDMsMHhERCwweEQ1LDB4RDUsMHhBRSwweDA4LAorICAgIDB4MTQsMHhFNiww
eEQzLDB4REQsMHg3RiwweEVCLDB4NjIsMHg2MCwweDkyLDB4RDUsMHhGMCwweEJDLDB4MzAsMHhC
OCwweEY4LDB4NUUsCisgICAgMHgxNCwweEU2LDB4MTAsMHhDNSwweDJCLDB4QUYsMHhGNSwweEQ1
LDB4MzUsMHhFNiwweDkyLDB4RDUsMHg4OCwweDAyLDB4MEIsMHgwOSwKKyAgICAweDc2LDB4RUUs
MHgxNCwweEU2LDB4MkIsMHgyMiwweEFBLDB4QUEsMHg1NSwweEVFLDB4MzUsMHhFNiwweDgwLDB4
RjQsMHg1NywweDVFLAorICAgIDB4NTUsMHhFRSwweDE1LDB4RTYsMHhEMiwweEJBLDB4RkIsMHhF
QiwweDM1LDB4RTYsMHgxNCwweEU2LDB4RjgsMHhCRSwweEY4LDB4NUEsCisgICAgMHg1NSwweEU2
LDB4MTQsMHhFNiwweEQ3LDB4OTUsMHgzNSwweDBELDB4QjcsMHhGNiwweDU1LDB4RTYsMHgyRiww
eDI5LDB4MkIsMHhBQiwKKyAgICAweEI2LDB4RjYsMHg3NiwweEVFLDB4QTIsMHhFQSwweDdBLDB4
RkUsMHg5NiwweEVFLDB4NTUsMHhFRSwweDA4LDB4RTgsMHhFQSwweEZBLAorICAgIDB4OTYsMHhF
RSwweDU1LDB4RTYsMHhFQSwweEFCLDB4QUQsMHhGRCwweDc2LDB4RUUsMHg1NSwweEU2LDB4MDIs
MHgwRSwweDhFLDB4NEUsCisgICAgMHg3NSwweEVFLDB4NTUsMHhFNiwweEU4LDB4QzIsMHgyRiww
eEZCLDB4MzUsMHhFRSwweDc1LDB4RTYsMHhBRiwweEFGLDB4QjcsMHhCRSwKKyAgICAweDU1LDB4
RUUsMHgxNCwweEU2LDB4NkIsMHhBOCwweDdBLDB4RkEsMHgxNCwweEU2LDB4QjMsMHhENSwweDVD
LDB4NTgsMHg3OCwweDVBLAorICAgIDB4QjIsMHhENSwweDcyLDB4Q0QsMHhGOCwweEZDLDB4MkEs
MHgyOCwweEIyLDB4RDUsMHg3MywweENELDB4QkEsMHhEQSwweEFFLDB4MkIsCisgICAgMHhCMiww
eEQ1LDB4NzEsMHhDRCwweDZBLDB4QkEsMHhGNywweEVELDB4OTIsMHhENSwweDcyLDB4Q0QsMHg1
NiwweDVFLDB4NzUsMHg2RiwKKyAgICAweEIyLDB4RDUsMHg1MSwweENELDB4NUIsMHhGRiwweEVG
LDB4M0IsMHg3MiwweENELDB4MTAsMHhDNSwweEZCLDB4RkYsMHhCNCwweEY4LAorICAgIDB4ODMs
MHg1OSwweDQzLDB4NTksMHg2QSwweEFGLDB4MkYsMHgwMiwweDA2LDB4NkEsMHg2MywweDU5LDB4
MjksMHhGRCwweEQ1LDB4NTUsCisgICAgMHg0NiwweDcyLDB4NjMsMHg1OSwweDAwLDB4QUYsMHhE
RCwweDU1LDB4ODcsMHg3QSwweDg0LDB4NjEsMHgwOCwweEEyLDB4QTksMHhGNSwKKyAgICAweDY2
LDB4NzIsMHgyNSwweDZBLDB4MEIsMHgwRiwweDg5LDB4RUQsMHg4NywweDdBLDB4NDYsMHg3Miww
eEZCLDB4QTcsMHhBNywweDI1LAorICAgIDB4QTgsMHg3QSwweDQ2LDB4NzIsMHg1NSwweEVGLDB4
OEEsMHhGQSwweDg3LDB4N0EsMHg0NiwweDcyLDB4QTgsMHhBQiwweDUyLDB4NjIsCisgICAgMHg4
NywweDdBLDB4NDYsMHg3MiwweEFBLDB4RkEsMHhFRSwweEJCLDB4ODcsMHg3QSwweDQ2LDB4NzIs
MHg4RSwweDBCLDB4QkYsMHhCRSwKKyAgICAweDg3LDB4N0EsMHg0NiwweDcyLDB4N0EsMHhGQSww
eEFBLDB4ODMsMHg4NywweDdBLDB4NDYsMHg3MiwweEZGLDB4QkIsMHgxRSwweERFLAorICAgIDB4
QTcsMHg3QSwweDQ2LDB4NzIsMHgyRCwweEE3LDB4QkQsMHhCRiwweEE3LDB4N0EsMHg2NiwweDcy
LDB4QkYsMHhCOSwweEJCLDB4QUQsCisgICAgMHhBNywweDdBLDB4NjYsMHg3MiwweEQ1LDB4NTcs
MHhCRSwweEZDLDB4QTcsMHg3QSwweDY2LDB4NzIsMHhFRiwweEVELDB4RUEsMHhERSwKKyAgICAw
eEE3LDB4N0EsMHg2NiwweDcyLDB4RDcsMHhCNywweEI0LDB4OUUsMHg4NiwweDdBLDB4NDYsMHg3
MiwweEE4LDB4MEYsMHgwQSwweDAwLAorICAgIDB4ODYsMHg3QSwweDY2LDB4NzIsMHhDMiwweEFD
LDB4Q0MsMHgyMCwweDg3LDB4N0EsMHg0NSwweDcyLDB4QjUsMHgyQSwweEYwLDB4RTIsCisgICAg
MHhBNywweDgyLDB4NDUsMHg3MiwweDZGLDB4OEYsMHhCRSwweEFCLDB4ODcsMHg3QSwweDQ2LDB4
NzIsMHhFQiwweDcyLDB4QkUsMHhBNywKKyAgICAweDg3LDB4ODIsMHg2NywweDdBLDB4RDIsMHhD
MiwweDZDLDB4N0YsMHhBOCwweDgyLDB4NDYsMHg3MiwweDdGLDB4N0YsMHg5RCwweDNCLAorICAg
IDB4QTcsMHg3QSwweDY2LDB4N0EsMHhFOSwweEJELDB4REMsMHhCRSwweEE3LDB4ODIsMHg0Niww
eDcyLDB4QUEsMHgyNywweEFBLDB4QUEsCisgICAgMHhBNywweDgyLDB4NjYsMHg3QSwweDU1LDB4
N0UsMHg5RSwweDU4LDB4QTgsMHg4MiwweDY3LDB4N0EsMHhEQiwweDdGLDB4Q0IsMHhFRiwKKyAg
ICAweDg3LDB4ODIsMHg2NiwweDdBLDB4Q0MsMHhGNSwweERELDB4QzUsMHhFOCwweDhBLDB4NjYs
MHg3QSwweEQ3LDB4RkQsMHhCRiwweDNGLAorICAgIDB4Q0MsMHhBMywweEE3LDB4ODIsMHgzRCww
eDJELDB4MkIsMHgwQiwweDBFLDB4QjQsMHg4QiwweDlCLDB4MEEsMHhBRSwweEUyLDB4NzAsCisg
ICAgMHhFQywweEFCLDB4QTcsMHg4MiwweEY4LDB4NzgsMHg3QSwweDdBLDB4QzgsMHg4MiwweEM1
LDB4NjEsMHg1OCwweDdFLDB4REUsMHhGRSwKKyAgICAweDA2LDB4NjIsMHg2NCwweDUxLDB4NUYs
MHhGQSwweEU4LDB4RTgsMHg4NSwweDUxLDB4MDMsMHg0MSwweEZFLDB4RkEsMHg3QywweDU4LAor
ICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHg3QywweEU4LDB4NkUsMHg0QiwweEMyLDB4MzAsMHhB
MiwweDI4LDB4RUMsMHgyMCwweEYyLDB4RjAsCisgICAgMHhDMiwweDMwLDB4QTIsMHgyOCwweEU5
LDB4QUEsMHhFQiwweDZCLDB4RTMsMHgzMCwweEEyLDB4MjgsMHhCNSwweEY1LDB4QkYsMHg5NSwK
KyAgICAweEMyLDB4MjgsMHhBMiwweDI4LDB4NzAsMHg2MiwweDU4LDB4NTQsMHhBMiwweDI4LDB4
ODEsMHgyOCwweDM4LDB4MjIsMHhCMCwweEIwLAorICAgIDB4QTIsMHgyOCwweDgyLDB4MjgsMHgz
QywweEU4LDB4RkUsMHgzOCwweDAzLDB4MzksMHhBMiwweDI4LDB4MkQsMHg4NSwweEJGLDB4RkYs
CisgICAgMHg0NCwweDQxLDB4RTIsMHgzMCwweEFBLDB4QUUsMHhGMywweEU1LDB4NDQsMHg0MSww
eEUzLDB4MzgsMHhFOCwweEZBLDB4RkYsMHhENywKKyAgICAweDIzLDB4NDEsMHhBMSwweDMwLDB4
N0MsMHg3RiwweEZGLDB4M0UsMHgwMywweDM5LDB4QzIsMHgzOCwweDAyLDB4RUIsMHhFRiwweEMw
LAorICAgIDB4MjQsMHg0MSwweEMyLDB4MzAsMHgyRiwweEFGLDB4QjcsMHhCRCwweDQ0LDB4NDks
MHhFMywweDM4LDB4QUEsMHhCRiwweERGLDB4REYsCisgICAgMHg2NSwweDQ5LDB4RTMsMHgzOCww
eEMyLDB4RUEsMHg3RSwweDU1LDB4MjMsMHg0MSwweEMyLDB4MzgsMHg3OCwweEY4LDB4N0IsMHhG
RiwKKyAgICAweEUyLDB4MzgsMHhBMiwweDMwLDB4QkYsMHhGQSwweDc4LDB4RkMsMHgyMywweDM5
LDB4QzIsMHgzMCwweEYyLDB4QUIsMHhBQiwweEFCLAorICAgIDB4MjQsMHg0MSwweEUzLDB4Mzgs
MHg3NywweEZGLDB4OEIsMHgwNiwweDA0LDB4NDEsMHhBMiwweDMwLDB4NUYsMHhGRSwweEZBLDB4
QjgsCisgICAgMHhFMywweDM4LDB4ODEsMHgyOCwweDJCLDB4MkYsMHhGRiwweEY3LDB4RTMsMHgz
OCwweDgyLDB4MzAsMHhBQSwweEE4LDB4REIsMHhGRiwKKyAgICAweDAzLDB4MzksMHhDMiwweDMw
LDB4MDMsMHgwOSwweEFELDB4MDksMHgyMywweDQxLDB4MDMsMHgzOSwweDM1LDB4QUYsMHgzRiww
eDJGLAorICAgIDB4NDQsMHg0MSwweDAzLDB4NDEsMHgyRiwweDJELDB4MkIsMHgwRSwweDQ0LDB4
NDEsMHhFMywweDM4LDB4QUMsMHhFMCwweERBLDB4REEsCisgICAgMHg0NCwweDQ5LDB4RTMsMHgz
OCwweEFBLDB4MkUsMHgwRSwweEI3LDB4NjQsMHg0OSwweDI0LDB4NDEsMHhGMiwweEY4LDB4RkEs
MHg3RiwKKyAgICAweDQ0LDB4NDksMHgwMywweDQxLDB4RkMsMHhFQSwweEZFLDB4RkUsMHg4NSww
eDUxLDB4MjQsMHg0MSwweDJCLDB4MkQsMHgzQiwweDBCLAorICAgIDB4QTYsMHg1MSwweDQ0LDB4
NDksMHhFRSwweEVBLDB4RUEsMHg1MCwweDY0LDB4NDksMHgwMywweDQxLDB4QTgsMHg2MCwweEZF
LDB4QjYsCisgICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweDJFLDB4QTksMHhCQiwweDgyLDB4ODUs
MHg1MSwweDI0LDB4NDksMHgyMCwweDJBLDB4RkIsMHhEOCwKKyAgICAweDg0LDB4NTEsMHgyMyww
eDQ5LDB4QUEsMHgyQSwweEVFLDB4N0QsMHgwNiwweDYyLDB4NjUsMHg1MSwweDA5LDB4MjcsMHhB
RCwweEE5LAorICAgIDB4RTYsMHg2MSwweDg0LDB4NTEsMHhBOCwweEI4LDB4RkUsMHhERiwweEE1
LDB4NTksMHg2MywweDUxLDB4QzAsMHhDQiwweDhBLDB4RkMsCisgICAgMHhBNSwweDU5LDB4NDMs
MHg1MSwweEFBLDB4MjksMHg4QSwweEIwLDB4RTUsMHg2MSwweDQ0LDB4NTEsMHhBQiwweEFGLDB4
MkYsMHhGNywKKyAgICAweEU2LDB4NjEsMHg4NCwweDU5LDB4N0YsMHhEQSwweEVBLDB4OEEsMHgw
NiwweDYyLDB4ODQsMHg1OSwweDI5LDB4QUYsMHhCNSwweEZELAorICAgIDB4MjcsMHg2QSwweEM2
LDB4NjEsMHg4MiwweDAwLDB4MkYsMHhCOSwweDI3LDB4NkEsMHhDNiwweDYxLDB4RkEsMHg3QSww
eEU4LDB4QzAsCisgICAgMHhDNiwweDU5LDB4MjMsMHg0OSwweEZBLDB4N0EsMHg3QSwweDY4LDB4
NjQsMHg1MSwweDAzLDB4NDEsMHgyQSwweEZBLDB4NUQsMHg1NywKKyAgICAweDg1LDB4NTEsMHgy
MywweDQ5LDB4MDIsMHhBMiwweDBDLDB4M0QsMHg4NSwweDUxLDB4NDQsMHg0OSwweEI4LDB4QkEs
MHg3MCwweDI4LAorICAgIDB4NjQsMHg1MSwweDQ0LDB4NDksMHhBOCwweEFDLDB4QjYsMHgyNSww
eEE2LDB4NTEsMHgyMywweDQ5LDB4RUYsMHhFQiwweEY5LDB4RjgsCisgICAgMHhFNiwweDU5LDB4
NDQsMHg0OSwweEI3LDB4QTksMHgyMiwweDJELDB4QzYsMHg1OSwweDQzLDB4NDksMHhGQiwweEI2
LDB4RjgsMHhFMCwKKyAgICAweEM2LDB4NTksMHg2NSwweDUxLDB4QjIsMHg3QSwweEI3LDB4Rjcs
MHhBNSwweDUxLDB4NjQsMHg1MSwweDYyLDB4RkEsMHg3OSwweDY1LAorICAgIDB4RTYsMHg1OSww
eDQzLDB4NDksMHgyQSwweEFGLDB4QjcsMHhENSwweEU2LDB4NTksMHg4NCwweDUxLDB4NDAsMHhB
MiwweDNBLDB4N0QsCisgICAgMHg0NywweDcyLDB4QzYsMHg1OSwweDI1LDB4QUQsMHgyRiwweDI5
LDB4ODcsMHg3QSwweDI3LDB4NkEsMHgwRiwweDAzLDB4QUEsMHgyMSwKKyAgICAweEU5LDB4ODIs
MHg4NywweDdBLDB4MEIsMHgyMiwweDg5LDB4N0YsMHg2QiwweDkzLDB4QzgsMHg4MiwweDBCLDB4
N0YsMHg3RiwweDdELAorICAgIDB4OEYsMHhCQywweEU4LDB4OEEsMHgyRiwweEJELDB4RkQsMHg1
NSwweEIzLDB4REQsMHg4QiwweDlCLDB4MjIsMHgwQiwweDJGLDB4QUQsCisgICAgMHhGNCwweEU1
LDB4OTIsMHhENSwweDdCLDB4RkIsMHhBRiwweDI5LDB4RjQsMHhERCwweDcyLDB4RDUsMHg1Riww
eDdGLDB4QjgsMHg4MCwKKyAgICAweDE0LDB4RTYsMHg5MiwweEQ1LDB4QkQsMHhBRCwweDBGLDB4
MEEsMHgzNSwweEVFLDB4RjQsMHhERCwweEVGLDB4QUYsMHhBMiwweEFBLAorICAgIDB4MzUsMHhF
NiwweEY0LDB4REQsMHhEQiwweEJFLDB4QUIsMHgyQSwweDM1LDB4RTYsMHhEMywweERELDB4QUIs
MHhCNywweDJBLDB4ODIsCisgICAgMHgxNCwweEU2LDB4NzIsMHhDRCwweEMwLDB4NzgsMHg3MCww
eDcwLDB4MzEsMHhDNSwweENGLDB4QkMsMHhGQywweEY3LDB4REUsMHgzQSwKKyAgICAweDcyLDB4
Q0QsMHhGMCwweEM0LDB4QjUsMHhCRCwweEFCLDB4MkEsMHg1NSwweEVFLDB4OTIsMHhENSwweDJE
LDB4MjUsMHgyRCwweDJELAorICAgIDB4NzUsMHhFRSwweDM1LDB4RTYsMHhFMCwweEEyLDB4RTgs
MHhFQSwweDU1LDB4RUUsMHgxNCwweEU2LDB4RkUsMHg3RSwweEUyLDB4NzgsCisgICAgMHgzNSww
eEU2LDB4MTQsMHhFNiwweEMwLDB4M0IsMHg3RiwweDc1LDB4MzUsMHhFNiwweDE0LDB4RTYsMHg5
NiwweDlGLDB4MjUsMHgwNSwKKyAgICAweDk2LDB4RUUsMHgzNSwweEU2LDB4QjUsMHgyRCwweDNG
LDB4MkEsMHg3NiwweEY2LDB4OTYsMHhFRSwweEQ2LDB4RjUsMHhGRiwweEY3LAorICAgIDB4OTYs
MHhFRSwweDM1LDB4RTYsMHg4MCwweEE4LDB4QUEsMHhBQSwweDk1LDB4RUUsMHg1NSwweEU2LDB4
RjQsMHhGRiwweDU3LDB4NTUsCisgICAgMHg3NSwweEVFLDB4NTUsMHhFNiwweEJGLDB4MTcsMHg5
NywweERGLDB4NzUsMHhFRSwweDU1LDB4RTYsMHhGRSwweEE4LDB4RkIsMHhCRiwKKyAgICAweDc1
LDB4RUUsMHg1NSwweEU2LDB4QUYsMHhBQiwweEI5LDB4RkYsMHg3NiwweEVFLDB4NTUsMHhFNiww
eEYyLDB4RUEsMHhCMiwweEZCLAorICAgIDB4NTUsMHhFRSwweDM1LDB4RTYsMHg3QSwweDc4LDB4
RkEsMHhCQSwweDc1LDB4RUUsMHhCMywweEQ1LDB4NUUsMHg3QSwweEFBLDB4QUEsCisgICAgMHgx
NCwweEU2LDB4OTIsMHhENSwweDc3LDB4RkYsMHg2OCwweDgwLDB4QjMsMHhERCwweDcyLDB4RDUs
MHhFQSwweEVFLDB4REIsMHhGOCwKKyAgICAweEIzLDB4RDUsMHg3MSwweEQ1LDB4M0IsMHgyQSww
eDhCLDB4NjAsMHhCMywweEQ1LDB4NzIsMHhENSwweEIyLDB4QTAsMHhBQSwweDdGLAorICAgIDB4
QjIsMHhENSwweDUxLDB4Q0QsMHhGRiwweEY4LDB4RkEsMHhFQiwweDcxLDB4Q0QsMHg1MSwweENE
LDB4NkYsMHhBQiwweEU3LDB4QUYsCisgICAgMHg4MywweDYxLDB4NDMsMHg1OSwweEY4LDB4RkEs
MHhBRiwweEM5LDB4QTQsMHg2MSwweDYzLDB4NTksMHg1RiwweDM3LDB4NUYsMHg5NSwKKyAgICAw
eDg0LDB4NTksMHg0MywweDU5LDB4QUYsMHhCNiwweEVCLDB4QkUsMHhDNSwweDY5LDB4NDQsMHg1
OSwweDBGLDB4RUIsMHhGRiwweDZGLAorICAgIDB4RTUsMHg2OSwweDQzLDB4NTksMHgwQSwweEFG
LDB4RjcsMHhGNSwweDY3LDB4N0EsMHhBNCwweDYxLDB4MEEsMHhCRiwweDU1LDB4NTUsCisgICAg
MHg4NywweDdBLDB4QTQsMHg2MSwweEEwLDB4QUEsMHhCRiwweEQ1LDB4NjYsMHg3MiwweDA1LDB4
NkEsMHgwMiwweDBBLDB4RkUsMHhCNSwKKyAgICAweDY2LDB4NzIsMHgyNSwweDcyLDB4ODIsMHgw
MiwweDM3LDB4MkIsMHhBNywweDdBLDB4NDUsMHg3MiwweEZFLDB4NzcsMHg2RSwweDNFLAorICAg
IDB4ODcsMHg3QSwweDI1LDB4NzIsMHgwQiwweDhCLDB4QUYsMHhBNSwweDg3LDB4N0EsMHg2Niww
eDcyLDB4REYsMHhEMSwweEYzLDB4OEIsCisgICAgMHhBNywweDdBLDB4NDYsMHg3MiwweEZGLDB4
QUIsMHgzQiwweDJGLDB4ODYsMHg3QSwweDQ2LDB4NzIsMHgyRSwweEFBLDB4RjIsMHhDOCwKKyAg
ICAweEE3LDB4N0EsMHg0NiwweDcyLDB4RTgsMHg2QSwweEVCLDB4RjIsMHhBNywweDdBLDB4NjYs
MHg3MiwweDVELDB4RTksMHgyOSwweEZCLAorICAgIDB4QTcsMHg3QSwweDY2LDB4NzIsMHg2RCww
eDhGLDB4QUUsMHg1QywweEE3LDB4N0EsMHg2NiwweDcyLDB4RUEsMHhDRiwweEY3LDB4QkQsCisg
ICAgMHhBNywweDdBLDB4NjYsMHg3MiwweEZBLDB4REYsMHhENiwweDVBLDB4ODcsMHg3QSwweDQ2
LDB4NzIsMHg4QSwweDAwLDB4ODksMHhCOSwKKyAgICAweDg3LDB4N0EsMHg0NSwweDcyLDB4MEQs
MHgyRiwweDBBLDB4MjIsMHg4NywweDdBLDB4NDYsMHg3MiwweEYwLDB4N0EsMHhBQSwweDBBLAor
ICAgIDB4ODcsMHg3QSwweDI2LDB4N0EsMHhDQSwweEEyLDB4OEEsMHg4MCwweEE3LDB4ODIsMHg2
NiwweDdBLDB4MjUsMHhGNywweEJBLDB4OEUsCisgICAgMHhBNywweDgyLDB4NDYsMHg3QSwweEE4
LDB4QUEsMHhBQSwweEFELDB4ODcsMHg4MiwweDY2LDB4N0EsMHgzQSwweEE1LDB4RDUsMHg1NywK
KyAgICAweEE3LDB4ODIsMHg2NiwweDdBLDB4REUsMHhCNiwweEY4LDB4RkYsMHhBNywweDgyLDB4
NjYsMHg3QSwweEE5LDB4QTEsMHhFQSwweDEzLAorICAgIDB4QTcsMHg4MiwweDY2LDB4N0EsMHg3
NywweDdCLDB4N0EsMHhGRSwweDZBLDB4OUIsMHg0NiwweDcyLDB4QkYsMHhCNSwweDJELDB4MEIs
CisgICAgMHgwRCwweEI0LDB4NkEsMHg5QiwweDJELDB4MEQsMHgyQSwweDAyLDB4MkQsMHhCNCww
eENDLDB4QTMsMHg3OCwweDgwLDB4QzAsMHhERSwKKyAgICAweENDLDB4QTMsMHg2NiwweDdBLDB4
NzgsMHg3OCwweDdDLDB4N0EsMHg0NiwweDcyLDB4RTUsMHg2OSwweEU4LDB4QkEsMHhGQywweDVD
LAorICAgIDB4MDYsMHg2QSwweDYzLDB4NDksMHhGOCwweDcwLDB4N0EsMHg1RSwweDY0LDB4NTEs
MHhFMiwweDM4LDB4NzAsMHg2OCwweEVBLDB4N0EsCisgICAgMHgwMywweDQxLDB4RTIsMHgzOCww
eDYyLDB4REEsMHgwRSwweDM1LDB4MDMsMHgzOSwweEEyLDB4MzAsMHg1RSwweERFLDB4NTAsMHg3
QywKKyAgICAweEMyLDB4MzgsMHhBMiwweDI4LDB4NUUsMHg1NywweEQ3LDB4RDcsMHhDMSwweDMw
LDB4ODIsMHgyMCwweDJGLDB4RkIsMHhFRSwweEZBLAorICAgIDB4QTIsMHgyOCwweDgxLDB4Mjgs
MHhGMCwweDYwLDB4ODMsMHgwMiwweEMyLDB4MjgsMHg4MiwweDI4LDB4RkIsMHhCRiwweEZCLDB4
QUEsCisgICAgMHhDMiwweDI4LDB4NjEsMHgyOCwweDJBLDB4QUEsMHgyQiwweEEyLDB4RTMsMHgz
MCwweEEyLDB4MzAsMHg2RSwweEVCLDB4OEEsMHhFQiwKKyAgICAweEUzLDB4MzAsMHhBMiwweDMw
LDB4MkIsMHhFQSwweEQ4LDB4N0EsMHhFMywweDM4LDB4QTIsMHgzMCwweDJFLDB4QTcsMHhGNyww
eEZFLAorICAgIDB4NDQsMHg0MSwweEMyLDB4MzgsMHgzRCwweEE1LDB4MkQsMHhCRCwweDQ0LDB4
NDEsMHhFMywweDM4LDB4RjgsMHhFMCwweDc4LDB4RjgsCisgICAgMHgwMywweDM5LDB4QzIsMHgz
OCwweDZGLDB4QUEsMHhBRSwweDJFLDB4MjQsMHg0MSwweEUzLDB4MzgsMHg3QSwweDdDLDB4MkEs
MHgyMiwKKyAgICAweDI0LDB4NDEsMHhDMiwweDMwLDB4N0UsMHhGQiwweEUwLDB4RjAsMHg0NCww
eDQxLDB4QzIsMHgzMCwweERELDB4QkQsMHgyRiwweDJCLAorICAgIDB4NDMsMHg0OSwweEExLDB4
MzAsMHhERiwweDVGLDB4RUUsMHhBMCwweDI0LDB4NDEsMHhFMywweDM4LDB4RkQsMHhBOSwweDBC
LDB4ODAsCisgICAgMHgyMywweDQxLDB4QzIsMHgzOCwweDBFLDB4QkEsMHhGQywweDdBLDB4MjQs
MHg0MSwweEMzLDB4MzgsMHhGMCwweEUyLDB4RkYsMHhGRiwKKyAgICAweEMzLDB4MzAsMHg4Miww
eDMwLDB4RjYsMHhGQSwweEYwLDB4QjIsMHhFMywweDM4LDB4ODIsMHgzMCwweEZGLDB4QjcsMHhC
NywweDJCLAorICAgIDB4MjQsMHg0MSwweEMyLDB4MzgsMHhBRCwweDNELDB4MjMsMHhBQSwweDQ0
LDB4NDEsMHhFMywweDM4LDB4QkYsMHhCQiwweEZGLDB4MEQsCisgICAgMHg2NCwweDQ5LDB4MjQs
MHg0MSwweEE1LDB4QkQsMHhENywweDVFLDB4NjQsMHg0OSwweDI0LDB4NDEsMHg1NywweDcyLDB4
RTIsMHg3RSwKKyAgICAweDIzLDB4NDEsMHhFMiwweDM4LDB4QUMsMHhCMCwweEUzLDB4RUYsMHgy
NCwweDQxLDB4RTMsMHgzOCwweDgwLDB4OEEsMHhGQiwweDlCLAorICAgIDB4NDQsMHg0OSwweEUz
LDB4MzgsMHhBQiwweEFCLDB4QUYsMHgxNSwweDg1LDB4NTEsMHgyNCwweDQxLDB4OEIsMHgyMiww
eEJCLDB4NUYsCisgICAgMHhBNiwweDUxLDB4MDMsMHgzOSwweEUwLDB4RkIsMHg3QiwweERELDB4
NDQsMHg0MSwweEUzLDB4MzgsMHhBRSwweEJBLDB4M0YsMHgxRSwKKyAgICAweDg1LDB4NTEsMHgy
NCwweDQxLDB4QkIsMHgwRiwweEZGLDB4NzcsMHg2NSwweDUxLDB4MDMsMHg0MSwweEVDLDB4RTAs
MHg2QSwweDVELAorICAgIDB4MjQsMHg0OSwweEUzLDB4NDAsMHgwQSwweDJCLDB4QkEsMHg1QSww
eEM2LDB4NTksMHgyMywweDQ5LDB4OEIsMHhBOSwweEU5LDB4RjUsCisgICAgMHhBNSwweDU5LDB4
NDQsMHg0OSwweEY4LDB4RkEsMHg3QiwweDdGLDB4NjQsMHg1MSwweDIzLDB4NDksMHgyMCwweEFB
LDB4QTIsMHhGRiwKKyAgICAweDY0LDB4NTEsMHgwMywweDQxLDB4ODAsMHhCQSwweDlFLDB4RDcs
MHg4NSwweDU5LDB4MjMsMHg0OSwweDBFLDB4QTcsMHhBNywweDJELAorICAgIDB4RTYsMHg2MSww
eDg1LDB4NTksMHg4QiwweEExLDB4QkIsMHhGRiwweEU2LDB4NjEsMHg4NSwweDUxLDB4QTgsMHhB
RSwweDc3LDB4N0YsCisgICAgMHgwNiwweDYyLDB4ODQsMHg1MSwweEEyLDB4QUIsMHhCRSwweEZE
LDB4MjcsMHg2QSwweDg0LDB4NTEsMHg4MCwweEFFLDB4RUYsMHg3NywKKyAgICAweEU2LDB4NjEs
MHg4NSwweDUxLDB4NkEsMHhFMCwweEVFLDB4OUYsMHhDNiwweDU5LDB4MjMsMHg0OSwweDVGLDB4
RUUsMHhFQSwweDgwLAorICAgIDB4NjQsMHg1MSwweDAyLDB4NDEsMHgzRiwweEJGLDB4QzAsMHhB
OCwweDg1LDB4NTEsMHgyMywweDQxLDB4MEEsMHhBRCwweERELDB4QkYsCisgICAgMHg2NCwweDQ5
LDB4MjMsMHg0MSwweDAzLDB4OEMsMHg4NiwweEFBLDB4NjQsMHg0OSwweDQ0LDB4NDksMHgyMCww
eDFDLDB4MkYsMHgyOSwKKyAgICAweEM2LDB4NTksMHg2NCwweDQ5LDB4MkQsMHhBRCwweEZELDB4
RkYsMHhFNiwweDU5LDB4NjQsMHg0OSwweEEwLDB4QUEsMHhENSwweDU3LAorICAgIDB4QTUsMHg1
MSwweDQ0LDB4NDksMHhFQywweEEwLDB4QUEsMHg3RiwweDg1LDB4NTEsMHgyMywweDQxLDB4OEYs
MHhBQSwweEZCLDB4N0UsCisgICAgMHhBNSwweDUxLDB4MjMsMHg0OSwweDJFLDB4MkIsMHgyRiww
eEFGLDB4QzUsMHg1MSwweDY0LDB4NTEsMHhGRSwweEZFLDB4REMsMHhCNywKKyAgICAweDA3LDB4
NkEsMHhBNSwweDU5LDB4MjcsMHhBNSwweEE1LDB4OUQsMHg4NywweDdBLDB4MDYsMHg2MiwweDJB
LDB4QUIsMHhBRiwweEY1LAorICAgIDB4QzgsMHg4MiwweDg4LDB4N0EsMHhCQiwweEMxLDB4Q0Qs
MHhCRCwweEU4LDB4ODIsMHhBNywweDgyLDB4QUEsMHhBRiwweEIzLDB4N0YsCisgICAgMHgyOSww
eDhCLDB4QzcsMHg4MiwweDNGLDB4QkYsMHg3NSwweEU1LDB4MzEsMHhDRCwweDA5LDB4OEIsMHgy
RiwweEJELDB4RDUsMHhENSwKKyAgICAweEQ0LDB4RTUsMHgwRCwweEFDLDB4MDIsMHgwMiwweDBC
LDB4MkQsMHgxNCwweEU2LDB4RDMsMHhFNSwweEZFLDB4QUEsMHgyMiwweDhCLAorICAgIDB4NTUs
MHhFNiwweEY0LDB4RTUsMHhGRCwweEJELDB4OEYsMHhBRiwweDU1LDB4RUUsMHgxNCwweEU2LDB4
NTcsMHhENSwweDNBLDB4MEUsCisgICAgMHg1NSwweEVFLDB4MTQsMHhFNiwweEI1LDB4QUUsMHhB
QSwweDIwLDB4NTUsMHhFRSwweDE1LDB4RTYsMHhGQSwweEZBLDB4RkYsMHhGQywKKyAgICAweEY0
LDB4RTUsMHhEMCwweEJDLDB4RTAsMHhFMCwweEU4LDB4NzgsMHg3MiwweENELDB4MTAsMHhDNSww
eEI3LDB4MjcsMHhBRCwweEY1LAorICAgIDB4NzIsMHhDRCwweDMwLDB4Q0QsMHhGQiwweEY4LDB4
QUUsMHhERCwweDM1LDB4RTYsMHgzMSwweENELDB4MEYsMHgyRCwweDJGLDB4QUQsCisgICAgMHg3
NiwweEVFLDB4MzQsMHhFNiwweEZCLDB4RUIsMHhBQiwweDgxLDB4NTUsMHhFRSwweDE1LDB4RTYs
MHg3QSwweEVFLDB4RUEsMHhBMiwKKyAgICAweDc2LDB4RUUsMHgxNCwweEU2LDB4REQsMHhGNyww
eEI3LDB4MkYsMHg5NiwweEVFLDB4MTQsMHhFNiwweEJELDB4MkYsMHhBQiwweDAyLAorICAgIDB4
OTYsMHhFRSwweDc2LDB4RUUsMHgzRCwweDNGLDB4QTgsMHg4MiwweEI2LDB4RjYsMHg3NiwweEVF
LDB4RkEsMHhGQiwweDVGLDB4NTcsCisgICAgMHg3NiwweEVFLDB4NTUsMHhFNiwweEEwLDB4RTAs
MHgzOCwweERFLDB4MzUsMHhGNiwweDU1LDB4RTYsMHg1NSwweERELDB4NUQsMHhERCwKKyAgICAw
eDU1LDB4RUUsMHg3NSwweEU2LDB4MkUsMHhFQiwweEVFLDB4QUUsMHg3NSwweEVFLDB4MzUsMHhF
NiwweDJBLDB4M0UsMHhGRSwweEFBLAorICAgIDB4NzUsMHhFRSwweDM1LDB4RTYsMHg4QSwweEE4
LDB4QUEsMHhCNywweDU1LDB4RUUsMHg3NSwweEU2LDB4QUEsMHhBOCwweEE4LDB4RkUsCisgICAg
MHg3NSwweEVFLDB4NTUsMHhFNiwweERFLDB4REYsMHhBRiwweEMwLDB4NzUsMHhFRSwweDM1LDB4
RTYsMHg3RSwweEZFLDB4OUUsMHhCQSwKKyAgICAweDU1LDB4RTYsMHgxNCwweEU2LDB4RkEsMHg2
QSwweEEwLDB4MDAsMHg1NSwweEVFLDB4QjMsMHhENSwweDVFLDB4RUEsMHhBOCwweDgwLAorICAg
IDB4MTUsMHhFNiwweDkyLDB4RDUsMHhGNywweDdGLDB4RkEsMHhBMCwweEQ0LDB4REQsMHg5Miww
eEQ1LDB4NUQsMHg1NSwweERFLDB4RjksCisgICAgMHhCMywweERELDB4NzEsMHhENSwweDdFLDB4
NkEsMHhBQiwweEIwLDB4OTIsMHhENSwweDUxLDB4Q0QsMHg5NywweEVFLDB4QUMsMHgyMCwKKyAg
ICAweDg0LDB4NjEsMHg0MywweDU5LDB4RkQsMHhFQiwweDAyLDB4Q0IsMHg4NCwweDYxLDB4NDMs
MHg1OSwweDNGLDB4RkUsMHhERSwweEJGLAorICAgIDB4ODQsMHg2MSwweDQzLDB4NTksMHg4RSww
eEI0LDB4REIsMHg3MiwweEE1LDB4NjEsMHg0MywweDU5LDB4RjgsMHg3QywweDVFLDB4NUYsCisg
ICAgMHg4NCwweDYxLDB4MjMsMHg1MSwweDJELDB4MjIsMHg4MCwweEEyLDB4QTQsMHg2MSwweDYz
LDB4NTksMHhGQSwweDdFLDB4RjcsMHg2OSwKKyAgICAweDg0LDB4NjEsMHg2MywweDU5LDB4Mzks
MHg1NSwweEFELDB4RjksMHhFNCwweDY5LDB4NjMsMHg1OSwweDJCLDB4QUQsMHhCNSwweDc5LAor
ICAgIDB4NDYsMHg3MiwweDYzLDB4NTksMHgwQSwweEFCLDB4RkQsMHg1RCwweDg3LDB4N0EsMHg4
MywweDU5LDB4MDIsMHhBQSwweEJELDB4NTUsCisgICAgMHg2NiwweDcyLDB4QzQsMHg2MSwweDI4
LDB4ODAsMHgyQSwweEI1LDB4ODcsMHg3QSwweDY2LDB4NzIsMHg5MSwweDA1LDB4N0EsMHg3OSwK
KyAgICAweEE3LDB4ODIsMHg2NiwweDcyLDB4RkEsMHhGOCwweEZELDB4N0QsMHg4NiwweDdBLDB4
NjYsMHg3MiwweEUwLDB4NzQsMHhENywweEFFLAorICAgIDB4QTcsMHg3QSwweDY2LDB4NzIsMHhF
NiwweEFGLDB4RkIsMHgyRiwweDg3LDB4N0EsMHg0NiwweDcyLDB4OEUsMHhCMCwweEE4LDB4RkUs
CisgICAgMHhBNywweDdBLDB4NjYsMHg3MiwweEZGLDB4NTYsMHhEQSwweDdELDB4QTcsMHg3QSww
eDY2LDB4NzIsMHhDRCwweDVGLDB4RUYsMHhGNywKKyAgICAweDg3LDB4N0EsMHg0NiwweDcyLDB4
QzgsMHhDMiwweDQyLDB4MDMsMHhBNywweDdBLDB4NDYsMHg3MiwweEJELDB4MkYsMHhBQiwweEVC
LAorICAgIDB4QTgsMHg3QSwweDY2LDB4N0EsMHhGNywweDdGLDB4RUEsMHg1NywweDg3LDB4N0Es
MHg0NiwweDdBLDB4ODgsMHhBMiwweDkyLDB4MTIsCisgICAgMHhBNywweDgyLDB4NjcsMHg3QSww
eEFGLDB4QjcsMHhERiwweEZGLDB4QTcsMHg4MiwweDY3LDB4N0EsMHhDQiwweDU2LDB4OEUsMHhC
MiwKKyAgICAweEE3LDB4ODIsMHg0NiwweDcyLDB4RUQsMHhBRiwweDJCLDB4QTIsMHg4NywweDgy
LDB4NjcsMHg3QSwweDlGLDB4QkQsMHgzNCwweDAyLAorICAgIDB4QTcsMHg4MiwweDY3LDB4N0Es
MHhGNCwweEFDLDB4QkYsMHhGOSwweEE3LDB4ODIsMHg2NiwweDdBLDB4RUEsMHhBQSwweEJGLDB4
NTgsCisgICAgMHgyOSwweDkzLDB4ODcsMHg3QSwweDVELDB4NUQsMHg5NSwweDNELDB4RUMsMHhB
QiwweEE3LDB4ODIsMHgyRCwweDJGLDB4MEEsMHgwQSwKKyAgICAweDBELDB4QUMsMHhBQiwweEEz
LDB4ODgsMHhBOCwweEJGLDB4RkYsMHhFQywweEFCLDB4QUMsMHhBMywweDgwLDB4RTgsMHhBRSww
eEI0LAorICAgIDB4Q0IsMHhBMywweDg2LDB4N0EsMHg1OCwweDc4LDB4RjgsMHhFOCwweDQ2LDB4
NzIsMHhBNSwweDU5LDB4REMsMHg1QywweDVDLDB4NUMsCisgICAgMHhBNSwweDU5LDB4NDMsMHg0
OSwweDcwLDB4RTgsMHg2MiwweEZFLDB4NjQsMHg0OSwweDAyLDB4NDEsMHg1RSwweEZFLDB4Njgs
MHg1MCwKKyAgICAweDAzLDB4NDEsMHhFMiwweDM4LDB4N0QsMHhGOCwweERFLDB4NTUsMHhFMiww
eDMwLDB4QTIsMHgyOCwweEU4LDB4RjAsMHg2QSwweDdBLAorICAgIDB4ODIsMHgzMCwweEEyLDB4
MjgsMHhERiwweDdELDB4RkIsMHg3RiwweEMyLDB4MzAsMHhBMiwweDI4LDB4REYsMHg3QiwweEVB
LDB4NjgsCisgICAgMHhDMiwweDI4LDB4ODEsMHgyOCwweEJCLDB4NkUsMHhFQiwweDgzLDB4QzIs
MHgzMCwweEEyLDB4MjgsMHg2QiwweDhELDB4MkUsMHgwMCwKKyAgICAweEMyLDB4MzAsMHhBMiww
eDI4LDB4ODIsMHg4QiwweDIzLDB4QUIsMHhFMywweDMwLDB4QTIsMHgzMCwweEE3LDB4MkYsMHhB
QiwweDAyLAorICAgIDB4RTMsMHgzOCwweEExLDB4MjgsMHg1QiwweEZFLDB4QUUsMHgyQSwweDAz
LDB4MzksMHhBMiwweDMwLDB4RjcsMHhCRiwweEZGLDB4QTIsCisgICAgMHgyNCwweDQxLDB4QzIs
MHgzMCwweEVELDB4QUEsMHg4MiwweDAyLDB4NDUsMHg0MSwweDAzLDB4NDEsMHhERiwweERGLDB4
RkIsMHhBRCwKKyAgICAweDI0LDB4NDEsMHhFMywweDM4LDB4MzYsMHg4NSwweEJCLDB4QTAsMHg0
NCwweDQxLDB4MDMsMHg0MSwweEFFLDB4QkYsMHhGQiwweEJBLAorICAgIDB4NjUsMHg0OSwweDAz
LDB4MzksMHg1MywweEU5LDB4QzMsMHhFQiwweDQ0LDB4NDksMHhFMywweDM4LDB4MkYsMHhCQiww
eEZFLDB4NUEsCisgICAgMHg2NSwweDQ5LDB4MDMsMHg0MSwweDZBLDB4QUEsMHhBQiwweDBCLDB4
ODUsMHg1MSwweDAzLDB4NDEsMHg3RiwweEZCLDB4RUEsMHg3OCwKKyAgICAweDI0LDB4NDEsMHhD
MywweDM4LDB4REEsMHhENCwweDVFLDB4REYsMHhFMywweDM4LDB4QzIsMHgzMCwweEVFLDB4NjMs
MHhDMSwweDAwLAorICAgIDB4RTMsMHgzOCwweEEyLDB4MzAsMHg1NSwweDlCLDB4QUEsMHg4MCww
eDAzLDB4MzksMHhDMywweDM4LDB4QTUsMHgyRCwweDJGLDB4M0YsCisgICAgMHg0NCwweDQxLDB4
MDMsMHgzOSwweDc1LDB4QUIsMHgyQiwweDJCLDB4ODUsMHg1MSwweDAzLDB4MzksMHhGNSwweEVB
LDB4QzAsMHgyMiwKKyAgICAweDQ0LDB4NDksMHgwMywweDQxLDB4REMsMHg1RSwweDVFLDB4NUIs
MHgyNCwweDQxLDB4MDMsMHgzOSwweEVBLDB4RUYsMHhCOSwweEMxLAorICAgIDB4MDMsMHg0MSww
eEUzLDB4MzgsMHhCRSwweEY4LDB4RUMsMHhBQSwweDI0LDB4NDEsMHhFMywweDM4LDB4RkYsMHhB
RiwweDhCLDB4MEIsCisgICAgMHgyNCwweDQ5LDB4RTMsMHgzOCwweDA1LDB4RkYsMHhERSwweDU2
LDB4MjQsMHg0MSwweEUzLDB4MzgsMHg4MCwweEJCLDB4RjksMHg2RiwKKyAgICAweDQ0LDB4NDEs
MHgwNCwweDQxLDB4RjUsMHhGNSwweDlELDB4OUYsMHg0NCwweDQxLDB4MDMsMHg0MSwweEQ1LDB4
NUUsMHhGRSwweDJBLAorICAgIDB4NDQsMHg1MSwweDAzLDB4NDEsMHhGNywweEJGLDB4MkYsMHgz
RiwweDQ0LDB4NDksMHgwMywweDQxLDB4RDUsMHhGRSwweEUyLDB4QTAsCisgICAgMHgyNCwweDQ5
LDB4RTMsMHg0MCwweDU2LDB4OTcsMHhBRSwweEFFLDB4NDQsMHg0OSwweEUzLDB4NDAsMHgwQiww
eEFBLDB4RUUsMHg3RSwKKyAgICAweDQ0LDB4NDksMHgwMywweDQxLDB4QTgsMHhFQSwweEFGLDB4
RUQsMHgyMywweDQ5LDB4RTIsMHg0MCwweDgwLDB4QTAsMHhFOCwweDU1LAorICAgIDB4MjMsMHg0
OSwweEUyLDB4MzgsMHhBQSwweEZBLDB4RkIsMHhCRiwweDg1LDB4NTksMHgyMywweDQxLDB4MEQs
MHhCRCwweEZELDB4QTUsCisgICAgMHhBNSwweDU5LDB4NjQsMHg0OSwweDIyLDB4MkEsMHhBQiww
eEZELDB4QzYsMHg1OSwweDY0LDB4NTEsMHhFQSwweEFBLDB4M0UsMHg2RiwKKyAgICAweEE1LDB4
NTksMHg0NCwweDQ5LDB4MEIsMHgwQiwweEFBLDB4QkQsMHg4NSwweDUxLDB4NDQsMHg0OSwweDk4
LDB4RDgsMHhEQywweDZGLAorICAgIDB4QTUsMHg1MSwweDI0LDB4NDksMHgyOCwweENBLDB4RkYs
MHhERiwweEM2LDB4NTksMHg0NCwweDQ5LDB4QTAsMHhFQiwweEZGLDB4NUYsCisgICAgMHg4NSww
eDUxLDB4MjMsMHg0MSwweEZFLDB4RkUsMHg3MiwweDVFLDB4ODUsMHg1MSwweDIzLDB4NDksMHhB
RiwweEFGLDB4QkYsMHhBRCwKKyAgICAweDY1LDB4NDksMHgyMywweDQxLDB4RjQsMHhEOCwweEQ2
LDB4NUYsMHg4NSwweDUxLDB4MjMsMHg0MSwweDhGLDB4QkIsMHhBRiwweEY1LAorICAgIDB4QTUs
MHg1MSwweDQ0LDB4NDksMHgzRCwweEZGLDB4RDcsMHg1NywweEE1LDB4NTEsMHg0NCwweDQ5LDB4
QjgsMHhBOCwweEFGLDB4RDUsCisgICAgMHhBNiwweDUxLDB4MjMsMHg0MSwweERGLDB4RkUsMHhG
QywweERGLDB4NjQsMHg0OSwweDIzLDB4NDEsMHg1RSwweEZDLDB4RkEsMHg1NywKKyAgICAweDQ0
LDB4NDksMHgwMywweDQxLDB4MkUsMHhCNywweDk0LDB4OUEsMHhBNCwweDUxLDB4NDQsMHg0OSww
eEE3LDB4MkYsMHhBNywweEVGLAorICAgIDB4RTUsMHg2MSwweDg0LDB4NTEsMHgzRCwweDI5LDB4
QUQsMHgzRiwweDI2LDB4NkEsMHhFNSwweDYxLDB4QjksMHhFQSwweEExLDB4ODksCisgICAgMHhB
OCwweDdBLDB4QzUsMHg2MSwweDJBLDB4QkQsMHg1NSwweDU1LDB4QTcsMHg4MiwweDA2LDB4NkEs
MHgwMiwweEFCLDB4QjcsMHhGNSwKKyAgICAweEU4LDB4OEEsMHg4NywweDdBLDB4OEYsMHgyQSww
eDgyLDB4QjUsMHgwOSwweDhCLDB4QTcsMHg3QSwweDhFLDB4RkYsMHhGRSwweDdBLAorICAgIDB4
MTAsMHhDRCwweDA4LDB4OEIsMHgyRCwweDJELDB4QkQsMHhCNSwweEY0LDB4RTUsMHgzMSwweENE
LDB4MDIsMHgwOSwweDBELDB4MkQsCisgICAgMHgzNSwweEU2LDB4RDMsMHhERCwweDBCLDB4QTUs
MHhCRiwweDBBLDB4NTUsMHhFRSwweDM1LDB4RTYsMHgzQiwweEJGLDB4MDksMHhBQSwKKyAgICAw
eDU1LDB4RUUsMHgxNCwweEU2LDB4ODAsMHhFMCwweEZBLDB4NUUsMHgzNSwweEU2LDB4RDMsMHhE
RCwweDIwLDB4QTgsMHg2QSwweDVGLAorICAgIDB4RDQsMHhERCwweEYwLDB4QzQsMHg3OCwweDc4
LDB4NUUsMHg1RSwweDMxLDB4Q0QsMHhGMCwweEM0LDB4Q0YsMHhBOSwweDIzLDB4MjIsCisgICAg
MHg1MSwweENELDB4MTAsMHhDNSwweEY3LDB4QjUsMHhCNywweEE3LDB4RjQsMHhERCwweDUxLDB4
Q0QsMHgzRCwweDM1LDB4MzUsMHhCRCwKKyAgICAweDU2LDB4RUUsMHhGNCwweERELDB4MDIsMHgw
MiwweDAzLDB4MDksMHg5NiwweEVFLDB4NTUsMHhFRSwweEQ1LDB4RkQsMHhFRiwweEI1LAorICAg
IDB4OTYsMHhFRSwweDU2LDB4RUUsMHhCNywweDJCLDB4MkEsMHgwMiwweEI2LDB4RjYsMHg3Niww
eEVFLDB4QUYsMHhBQiwweEFBLDB4QUIsCisgICAgMHg5NiwweEVFLDB4NzYsMHhFRSwweDgwLDB4
NzAsMHhDMCwweEVBLDB4NTUsMHhFRSwweDk2LDB4RTYsMHhCRiwweEFCLDB4RUEsMHhBQiwKKyAg
ICAweDc1LDB4RUUsMHg1NSwweEU2LDB4NkYsMHhFMCwweDgwLDB4MkUsMHg3NSwweEVFLDB4NTUs
MHhFNiwweEFELDB4QzcsMHhGRiwweDdGLAorICAgIDB4NzUsMHhFRSwweDU1LDB4RTYsMHhBQSww
eEYwLDB4N0IsMHg3RiwweDc2LDB4RUUsMHgzNSwweEU2LDB4QjIsMHhGQSwweEJCLDB4QkIsCisg
ICAgMHg3NiwweEVFLDB4MzUsMHhFNiwweEE3LDB4RDcsMHg2RSwweEVCLDB4NzYsMHhFRSwweDU1
LDB4RTYsMHgyMCwweDIyLDB4MkYsMHgzRCwKKyAgICAweDc2LDB4RUUsMHg1NSwweEU2LDB4RTIs
MHg1RiwweEFFLDB4Q0UsMHgzNSwweEVFLDB4NTUsMHhFNiwweDc1LDB4RjUsMHhGRiwweDc3LAor
ICAgIDB4NzUsMHhFRSwweDU1LDB4RTYsMHg1RiwweDVGLDB4RUYsMHhGRCwweDc1LDB4RUUsMHgz
NSwweEU2LDB4NkIsMHhGQSwweEVBLDB4QUIsCisgICAgMHg1NSwweEU2LDB4RjQsMHhERCwweDcy
LDB4QTIsMHg4MCwweEEwLDB4NTYsMHhFRSwweEQzLDB4RDUsMHg3NywweDJBLDB4MEEsMHg4OCwK
KyAgICAweDU2LDB4RUUsMHg5MiwweEQ1LDB4NTcsMHhGRSwweEUyLDB4MDAsMHgzNSwweEU2LDB4
OTIsMHhENSwweEQ1LDB4NzcsMHhCQiwweDIwLAorICAgIDB4ODQsMHg2MSwweDQzLDB4NTksMHg3
RSwweEVBLDB4Q0IsMHhBQSwweDY0LDB4NTksMHgyMywweDU5LDB4MDMsMHgwMCwweDA4LDB4RkMs
CisgICAgMHg4NCwweDU5LDB4NDMsMHg1OSwweERGLDB4QjUsMHgxNSwweEY1LDB4QTQsMHg2MSww
eDQzLDB4NTksMHg3QiwweENBLDB4RUYsMHhGRiwKKyAgICAweDg0LDB4NjEsMHg0MywweDU5LDB4
RTIsMHgzQiwweEI3LDB4NzcsMHhBNCwweDYxLDB4NDMsMHg1OSwweEYzLDB4QkYsMHhGRSwweEU2
LAorICAgIDB4ODQsMHg2MSwweDYzLDB4NTksMHg1NSwweDk3LDB4RkQsMHhDQSwweEE0LDB4NjEs
MHg2MywweDU5LDB4QjIsMHhGNywweDdGLDB4N0EsCisgICAgMHg4MywweDU5LDB4MjMsMHg1MSww
eEE4LDB4QUUsMHhGRSwweEJELDB4ODQsMHg1OSwweDQzLDB4NTEsMHhBRSwweEJGLDB4RkQsMHg3
NSwKKyAgICAweEM0LDB4NjEsMHgyMiwweDUxLDB4MEEsMHhGRiwweDVGLDB4N0YsMHgyNiwweDcy
LDB4NDMsMHg1MSwweDAyLDB4QTcsMHhENSwweDU1LAorICAgIDB4ODcsMHg3QSwweDQ0LDB4NTEs
MHgwMiwweEFBLDB4QkQsMHg3NSwweDg3LDB4N0EsMHhBNSwweDYxLDB4MEEsMHgyMCwweEFCLDB4
RkQsCisgICAgMHg4NywweDdBLDB4MjYsMHg3MiwweDA4LDB4ODIsMHgwQiwweEJELDB4QTcsMHg3
QSwweDQ2LDB4N0EsMHhGQywweEVBLDB4QkEsMHg3RSwKKyAgICAweDg3LDB4N0EsMHg0NiwweDcy
LDB4Q0EsMHhDQywweDhCLDB4RTksMHhBNywweDdBLDB4NjYsMHg3QSwweEZFLDB4NzcsMHg2Riww
eDcxLAorICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhBQiwweDNDLDB4MUMsMHhCQSwweEE3LDB4
ODIsMHg0NiwweDcyLDB4RUEsMHhFQSwweEVBLDB4REIsCisgICAgMHhBNywweDgyLDB4NjcsMHg3
QSwweERELDB4NzcsMHhGQSwweDRCLDB4NjYsMHg4MiwweDg3LDB4N0EsMHhENSwweDlGLDB4REYs
MHhCNiwKKyAgICAweEE3LDB4ODIsMHg2NywweDdBLDB4RkQsMHhCOSwweEFGLDB4RUIsMHhBNyww
eDgyLDB4NjcsMHg3QSwweDQzLDB4QUIsMHgyQiwweEFCLAorICAgIDB4QTcsMHg4MiwweDY3LDB4
N0EsMHhFOSwweDBCLDB4QUYsMHhGRCwweEE3LDB4ODIsMHg2NiwweDdBLDB4RkUsMHg1RSwweDNG
LDB4M0UsCisgICAgMHhBNywweDgyLDB4NjYsMHg3QSwweDk3LDB4RjcsMHhCQSwweEQ4LDB4QTcs
MHg4MiwweDY3LDB4N0EsMHhCOCwweEZBLDB4QkUsMHhCRSwKKyAgICAweEFCLDB4QTMsMHg4Nyww
eDdBLDB4QjUsMHgyRCwweDJCLDB4MEIsMHgwQywweEFDLDB4QUIsMHhBMywweDhELDB4QUYsMHhC
QSwweEFCLAorICAgIDB4RUMsMHhBQiwweEFCLDB4QTMsMHgyMCwweEIwLDB4QUEsMHhGRCwweEVD
LDB4QUIsMHhDQiwweEEzLDB4NUUsMHgwQiwweEVELDB4NEQsCisgICAgMHhDQiwweEEzLDB4MDgs
MHg4QiwweDY4LDB4NjgsMHg2MCwweEU4LDB4QTcsMHg4MiwweEE1LDB4NTksMHg1RSwweDVDLDB4
N0MsMHg2OCwKKyAgICAweDg0LDB4NTEsMHg0NCwweDUxLDB4RTQsMHgzOCwweDlFLDB4NUUsMHg2
NCwweDQ5LDB4MDIsMHg0MSwweDc4LDB4RTgsMHhGMCwweDY4LAorICAgIDB4MDMsMHg0MSwweEMy
LDB4MzgsMHhFMiwweENBLDB4RTgsMHhDMCwweEUyLDB4MzgsMHhDMiwweDMwLDB4NTcsMHg1Niww
eDc2LDB4NTIsCisgICAgMHhDMiwweDMwLDB4QTIsMHgyOCwweDI3LDB4MEEsMHgyQywweDI0LDB4
QzMsMHgzOCwweEEyLDB4MjgsMHhCQSwweEJBLDB4QjAsMHhBQSwKKyAgICAweEUzLDB4MzAsMHhB
MiwweDMwLDB4RkYsMHhCMiwweEEwLDB4RTIsMHhFMywweDMwLDB4QTIsMHgzMCwweEFCLDB4RUUs
MHhFRSwweEFBLAorICAgIDB4NjUsMHg0OSwweEMzLDB4MzAsMHg1NSwweEQ1LDB4QkQsMHgyQiww
eDY1LDB4NDksMHhFMywweDM4LDB4RkQsMHhGRiwweEVBLDB4QTAsCisgICAgMHg0NCwweDQxLDB4
RTMsMHgzOCwweDc3LDB4RkUsMHhGQiwweEEyLDB4MjQsMHg0MSwweDAzLDB4MzksMHhGNywweEZC
LDB4MkMsMHgyOCwKKyAgICAweDQ0LDB4NDEsMHgwMywweDQxLDB4RjIsMHhGQSwweEVGLDB4OEQs
MHg0NCwweDQxLDB4MDMsMHgzOSwweDhCLDB4RUUsMHhCNywweEE3LAorICAgIDB4NDQsMHg0MSww
eEUzLDB4MzgsMHhGNiwweEFBLDB4QUEsMHgwQSwweDQ0LDB4NDEsMHgwMywweDQxLDB4RjMsMHg2
MiwweDZELDB4NUYsCisgICAgMHgyNCwweDQxLDB4QzIsMHgzOCwweDAyLDB4RUEsMHhGQSwweDdF
LDB4MDMsMHg0MSwweEMzLDB4MzgsMHhFOCwweEJGLDB4MkYsMHgwQiwKKyAgICAweDg1LDB4NDks
MHhFMywweDM4LDB4MjksMHhBRiwweEFCLDB4QkYsMHg4NSwweDQ5LDB4MDMsMHg0MSwweEY4LDB4
N0EsMHhGQSwweEZBLAorICAgIDB4NDQsMHg0OSwweEUzLDB4MzgsMHg1NSwweEZGLDB4RUEsMHgy
QSwweDY0LDB4NDksMHhFMywweDM4LDB4REQsMHg5NSwweEY1LDB4RjgsCisgICAgMHg0MywweDQ5
LDB4RTMsMHgzOCwweDc1LDB4N0QsMHhGRSwweDhBLDB4MjMsMHg0MSwweEUzLDB4MzgsMHg3RCww
eEY3LDB4RTIsMHg4MCwKKyAgICAweDI0LDB4NDEsMHhDMiwweDMwLDB4ODMsMHhFQSwweDdGLDB4
QjcsMHg2NCwweDQ5LDB4MDMsMHgzOSwweDAzLDB4MjksMHhCRCwweEI1LAorICAgIDB4NDQsMHg0
MSwweDAzLDB4NDEsMHg1NiwweDVDLDB4RjcsMHhFRiwweDI0LDB4NDEsMHhDMiwweDMwLDB4ODIs
MHhGMiwweDc4LDB4RkUsCisgICAgMHgyNCwweDQxLDB4QzMsMHgzOCwweEFDLDB4QkYsMHhCRCww
eEJGLDB4MjQsMHg0MSwweEUzLDB4MzgsMHgwQiwweDhFLDB4MjksMHgwRiwKKyAgICAweDI0LDB4
NDEsMHhFMywweDM4LDB4RTYsMHg4OCwweDgwLDB4MDAsMHgyNCwweDQxLDB4RTMsMHgzOCwweDhG
LDB4QUYsMHhBRiwweEZCLAorICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHhGNSwweEZELDB4MEQs
MHgyOSwweDg1LDB4NTEsMHgyNCwweDQxLDB4RjUsMHhENSwweEJFLDB4MkEsCisgICAgMHg4NSww
eDUxLDB4MDMsMHg0MSwweEY3LDB4RkYsMHhFRSwweEEwLDB4NjQsMHg0OSwweDIzLDB4NDEsMHg3
RSwweDUyLDB4REIsMHg3NSwKKyAgICAweDI0LDB4NDksMHgwMywweDQxLDB4M0QsMHhGRCwweDY5
LDB4QzIsMHg2NSwweDUxLDB4MDMsMHg0MSwweEZGLDB4QUQsMHhBOSwweEFBLAorICAgIDB4NDQs
MHg0OSwweDAzLDB4NDEsMHhFQiwweEZFLDB4NjgsMHhGRSwweDI0LDB4NDksMHhDMiwweDM4LDB4
RjcsMHhGNiwweEVBLDB4RUEsCisgICAgMHgwMywweDQxLDB4RTIsMHg0MCwweEE1LDB4MDUsMHgy
NSwweDNBLDB4ODUsMHg1MSwweDAzLDB4NDEsMHhBRCwweDNELDB4MkQsMHgzNSwKKyAgICAweEE1
LDB4NTEsMHg2NCwweDUxLDB4QUYsMHhFMiwweDQzLDB4RUEsMHg4NSwweDUxLDB4MjMsMHg0OSww
eDQyLDB4QzgsMHg2OCwweEE4LAorICAgIDB4NDQsMHg0OSwweDAzLDB4NDEsMHhBQSwweDdELDB4
RDUsMHhGQSwweDQ0LDB4NDksMHgwMywweDQxLDB4QTYsMHg1NywweEY3LDB4OTcsCisgICAgMHg0
NCwweDQ5LDB4MDMsMHg0MSwweEE4LDB4QjksMHg3RiwweDVGLDB4NjQsMHg0OSwweDAzLDB4NDEs
MHhBMCwweDJGLDB4QUQsMHg1NSwKKyAgICAweDQ0LDB4NDksMHhFMywweDM4LDB4RjgsMHhFOCww
eEFBLDB4REYsMHg2NCwweDQ5LDB4MDMsMHg0MSwweDBGLDB4MjksMHgyNywweEY1LAorICAgIDB4
NjQsMHg0OSwweDIzLDB4NDEsMHhGRSwweEJGLDB4QTAsMHhBMCwweDY0LDB4NDksMHgyNCwweDQx
LDB4QjcsMHhGRiwweEJFLDB4RkEsCisgICAgMHg2NCwweDQ5LDB4MjMsMHg0MSwweEZFLDB4OTcs
MHhGNywweDVBLDB4ODUsMHg0OSwweDIzLDB4NDEsMHhFRCwweENFLDB4RkYsMHg3RCwKKyAgICAw
eDQ0LDB4NDEsMHgwMywweDQxLDB4QUEsMHg3OCwweDdBLDB4NkUsMHgyMywweDQxLDB4RTMsMHgz
OCwweDBBLDB4QUYsMHg4QSwweDAwLAorICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHhBRSwweDg5
LDB4MkQsMHhBQiwweEE0LDB4NTEsMHg0NCwweDQ5LDB4QkQsMHhGNSwweDlGLDB4MjksCisgICAg
MHgwNiwweDZBLDB4ODQsMHg1MSwweDJCLDB4QUYsMHg4RCwweEFGLDB4NDcsMHg3MiwweEU1LDB4
NjEsMHhBRCwweENCLDB4MkIsMHgwQiwKKyAgICAweDY3LDB4NzIsMHhFNiwweDYxLDB4NTcsMHg3
RSwweEYyLDB4QTIsMHg2NiwweDcyLDB4RTYsMHg2OSwweDNELDB4QUQsMHhCRiwweDJFLAorICAg
IDB4QzgsMHg4MiwweDQ2LDB4NzIsMHgyOSwweDI5LDB4QUQsMHgyRCwweEU4LDB4ODIsMHhBOCww
eDgyLDB4NUMsMHg3RSwweDZCLDB4MjcsCisgICAgMHgyQywweEFDLDB4QzgsMHg4MiwweDNELDB4
QjUsMHhGNSwweEQ1LDB4QjMsMHhERCwweEFCLDB4OUIsMHgwMiwweDBCLDB4MDksMHgyRCwKKyAg
ICAweDU1LDB4RUUsMHhGNCwweEU1LDB4MEEsMHgyRiwweEVGLDB4RkQsMHg1NSwweEVFLDB4RjQs
MHhFNSwweDI4LDB4QTIsMHhGQiwweDVGLAorICAgIDB4MzUsMHhFNiwweEIzLDB4RDUsMHhBMCww
eEVBLDB4N0UsMHg3RiwweEY0LDB4REQsMHg1MiwweENELDB4RTgsMHhFOCwweDdBLDB4N0EsCisg
ICAgMHg1MiwweENELDB4RjAsMHhDNCwweEZDLDB4RkEsMHg3RSwweEZGLDB4MzEsMHhDRCwweDEw
LDB4QzUsMHhCNSwweEFGLDB4MDksMHg4MywKKyAgICAweDUxLDB4Q0QsMHgzMSwweEM1LDB4QjUs
MHhFQiwweEJGLDB4NjksMHhCMiwweEQ1LDB4MzAsMHhDRCwweDJGLDB4QUYsMHhBNywweEJELAor
ICAgIDB4NTYsMHhFRSwweEQzLDB4REQsMHgwQiwweDBELDB4MkQsMHgzNSwweDk2LDB4RUUsMHg1
NiwweEVFLDB4QjcsMHhBQiwweEFCLDB4MkIsCisgICAgMHhCNiwweEY2LDB4NzYsMHhFRSwweDc3
LDB4RkQsMHhGRiwweDJGLDB4QjYsMHhGNiwweDk2LDB4RUUsMHhERCwweEI1LDB4QjcsMHhGOSwK
KyAgICAweDk2LDB4RUUsMHg3NiwweEVFLDB4NDgsMHhGOCwweDVDLDB4OEEsMHg5NiwweEVFLDB4
MzUsMHhFNiwweEFBLDB4RUEsMHgyQSwweEEwLAorICAgIDB4NTUsMHhFRSwweDc1LDB4RTYsMHhF
QSwweEVFLDB4RUEsMHhBRiwweDU1LDB4RUUsMHg3NSwweEU2LDB4QUEsMHhCQSwweEFBLDB4QTIs
CisgICAgMHg3NiwweEVFLDB4MzUsMHhFNiwweEFELDB4QUEsMHhCQiwweEZFLDB4NTUsMHhFRSww
eDU1LDB4RTYsMHhGRiwweEVGLDB4RkYsMHhGRiwKKyAgICAweDU2LDB4RUUsMHg1NSwweEU2LDB4
RkYsMHhGRiwweEJGLDB4OUIsMHg3NSwweEVFLDB4MzUsMHhFNiwweDhFLDB4RkEsMHhGRSwweEFB
LAorICAgIDB4NTYsMHhFRSwweDc1LDB4RTYsMHg5RSwweEFBLDB4QUEsMHhFQiwweDc2LDB4RUUs
MHg1NSwweEU2LDB4REYsMHg3MywweEZBLDB4QTAsCisgICAgMHg5NiwweEVFLDB4NTUsMHhFNiww
eDU1LDB4NTUsMHhGRCwweEE4LDB4OTYsMHhFRSwweDM1LDB4RTYsMHhERiwweEZGLDB4RkEsMHg4
MiwKKyAgICAweDk2LDB4RUUsMHgzNSwweEU2LDB4NUYsMHhERiwweEJBLDB4MEIsMHg3NiwweEVF
LDB4MzUsMHhFNiwweEZGLDB4QkYsMHgyMCwweDAwLAorICAgIDB4NzYsMHhFRSwweDU2LDB4RTYs
MHg3NSwweDhGLDB4MEIsMHhBQSwweDc2LDB4RUUsMHgzNSwweEU2LDB4NTUsMHhGRiwweEU4LDB4
NUMsCisgICAgMHg2MywweDU5LDB4MjMsMHg1MSwweDAwLDB4QTMsMHhBQiwweEJGLDB4NjQsMHg1
OSwweDIzLDB4NTEsMHg5RSwweEIzLDB4MkUsMHgwRiwKKyAgICAweDg1LDB4NjEsMHg0NCwweDU5
LDB4RjksMHhEQSwweEVGLDB4OEEsMHg4NCwweDU5LDB4NDMsMHg1OSwweEFGLDB4Q0QsMHhCNSww
eEY3LAorICAgIDB4ODQsMHg2MSwweDQzLDB4NTksMHhEQSwweDgyLDB4NkUsMHhBQiwweDg0LDB4
NTksMHg0MywweDU5LDB4RDQsMHhCRCwweDlBLDB4QjgsCisgICAgMHg4NCwweDU5LDB4NDMsMHg1
OSwweDIwLDB4OEIsMHg4OCwweDY4LDB4ODQsMHg1OSwweDIyLDB4NTEsMHhDQSwweDdBLDB4N0Us
MHg1NywKKyAgICAweDQzLDB4NTEsMHgyMiwweDUxLDB4OEIsMHhERiwweEVBLDB4NDgsMHg2Myww
eDUxLDB4MjIsMHg1MSwweERFLDB4NUYsMHhFQiwweDZCLAorICAgIDB4NDMsMHg1MSwweDAyLDB4
NDksMHhCQSwweEFCLDB4N0YsMHhEOSwweDQ0LDB4NTksMHgwMywweDQ5LDB4OTcsMHgzRiwweEE3
LDB4MkYsCisgICAgMHg2NCwweDUxLDB4MDIsMHg0OSwweDBCLDB4QUUsMHhFQSwweDlBLDB4ODUs
MHg2MSwweDIzLDB4NTEsMHgyQSwweDlGLDB4QkYsMHg4RCwKKyAgICAweDI2LDB4NzIsMHg0Myww
eDU5LDB4MDIsMHhFQiwweEY1LDB4RkQsMHg2NiwweDdBLDB4ODQsMHg2MSwweDgwLDB4QUYsMHhG
NSwweDU1LAorICAgIDB4NjYsMHg3QSwweEE0LDB4NjEsMHgwMCwweDBBLDB4MkIsMHhGNSwweDg3
LDB4N0EsMHgyNiwweDdBLDB4MjIsMHhFQSwweDBBLDB4QjksCisgICAgMHhBNywweDgyLDB4Njcs
MHg3QSwweEZGLDB4N0UsMHg3NywweEQ3LDB4ODcsMHg3QSwweDY3LDB4N0EsMHgyNSwweDAwLDB4
MkIsMHg1OSwKKyAgICAweEE3LDB4ODIsMHg2NiwweDdBLDB4RUIsMHg5QSwweEY4LDB4RUIsMHhB
OCwweDgyLDB4NjcsMHg3QSwweEExLDB4NkYsMHhBOSwweDBGLAorICAgIDB4QTgsMHg4MiwweDQ2
LDB4N0EsMHhDMiwweDg3LDB4MkUsMHhGRSwweEE4LDB4ODIsMHg2NiwweDdBLDB4N0UsMHhFQyww
eEE4LDB4QUEsCisgICAgMHhDOCwweDgyLDB4ODcsMHg3QSwweDVELDB4RkIsMHhBRiwweEI1LDB4
QTcsMHg4MiwweDg3LDB4N0EsMHhCNywweERBLDB4OTYsMHgxNiwKKyAgICAweEM4LDB4ODIsMHg2
NiwweDdBLDB4REMsMHhGRSwweEZFLDB4RUUsMHg4QiwweEEzLDB4ODcsMHg4MiwweEQ1LDB4RjUs
MHg5RCwweDNGLAorICAgIDB4RUMsMHhBQiwweDRBLDB4OTMsMHgyRCwweDA5LDB4OEIsMHhBMiww
eEVCLDB4QUIsMHhBQiwweEEzLDB4QUEsMHhCRSwweDc2LDB4NUYsCisgICAgMHhDQywweEEzLDB4
QUIsMHhBMywweDk1LDB4OTUsMHg2RSwweEFCLDB4RUIsMHhBQiwweEFCLDB4QTMsMHhDQSwweEFE
LDB4RDksMHg1NywKKyAgICAweENCLDB4QTMsMHgwOCwweDhCLDB4RTAsMHhDMCwweDY4LDB4NjAs
MHhFOCwweDgyLDB4ODQsMHg1OSwweEY4LDB4RjgsMHg3OCwweDdFLAorICAgIDB4ODQsMHg1OSww
eDIzLDB4NDksMHg3QywweEQ4LDB4N0EsMHg1MCwweDQzLDB4NDksMHhFMiwweDQwLDB4RTAsMHhF
OCwweEJGLDB4N0YsCisgICAgMHg0NCwweDQ5LDB4RTIsMHgzOCwweDdFLDB4QUEsMHg4QSwweDBB
LDB4MDMsMHg0MSwweEMyLDB4MzAsMHg1NywweDdGLDB4N0UsMHg3OCwKKyAgICAweEMyLDB4MzAs
MHhBMSwweDMwLDB4MEUsMHgwQiwweDNGLDB4MTUsMHhFMywweDM4LDB4QTIsMHgyOCwweEVGLDB4
QkEsMHhGOCwweEYwLAorICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHgwMiwweDBBLDB4MkEsMHgw
MywweDAzLDB4MzksMHhDMiwweDMwLDB4QTMsMHgzQiwweEJGLDB4QkYsCisgICAgMHg0NCwweDQx
LDB4MDMsMHgzOSwweEFCLDB4REQsMHhCRiwweDJCLDB4NDQsMHg0OSwweDI0LDB4NDEsMHhDMiww
eDZELDB4QUIsMHgwMiwKKyAgICAweDQ0LDB4NDksMHgyNCwweDQxLDB4QzksMHhFQSwweEUwLDB4
QzAsMHg0NCwweDQxLDB4MDMsMHgzOSwweEFBLDB4RUIsMHg3RiwweEVFLAorICAgIDB4NDQsMHg0
MSwweDAzLDB4NDEsMHgzNiwweEJDLDB4MkQsMHgwMCwweDQ0LDB4NDksMHhFMywweDM4LDB4QUEs
MHhCQSwweDY4LDB4QUEsCisgICAgMHg0NSwweDQxLDB4RTMsMHgzOCwweDhBLDB4QkUsMHg1Riww
eDVGLDB4MjQsMHg0MSwweEMyLDB4MzgsMHhGOCwweEU4LDB4RkEsMHhBNywKKyAgICAweDQ0LDB4
NDksMHhFMywweDM4LDB4RjUsMHhENSwweEE1LDB4MEYsMHg2NCwweDQ5LDB4RTMsMHgzOCwweEY3
LDB4QkYsMHhBQSwweEFBLAorICAgIDB4NDQsMHg0OSwweDAzLDB4NDEsMHgxNywweDlBLDB4NTgs
MHhGQSwweDY0LDB4NTEsMHgwMywweDQxLDB4RkEsMHhBMiwweDBGLDB4MEQsCisgICAgMHg4NSww
eDUxLDB4MjQsMHg0OSwweEFELDB4QkYsMHhCRiwweDNCLDB4NjQsMHg0OSwweDI0LDB4NDEsMHg3
RSwweEVDLDB4NzgsMHg3MCwKKyAgICAweDg1LDB4NTEsMHgyMywweDQxLDB4RkIsMHhFQSwweDJE
LDB4QTUsMHg4NSwweDUxLDB4MjMsMHg0MSwweDU3LDB4N0YsMHhFQSwweENBLAorICAgIDB4MjQs
MHg0MSwweEMyLDB4MzgsMHhGNiwweEI3LDB4RkUsMHhFOCwweDQ0LDB4NDEsMHhDMiwweDM4LDB4
MEIsMHg4QSwweDBCLDB4QTksCisgICAgMHg0NCwweDQxLDB4MjMsMHg0MSwweDU3LDB4NUYsMHhF
QiwweDU1LDB4MjMsMHg0MSwweEUzLDB4MzgsMHhEQywweDY4LDB4RkEsMHhGRSwKKyAgICAweDI0
LDB4NDEsMHhFMywweDM4LDB4QkQsMHhERiwweDc5LDB4RkEsMHgyNCwweDQxLDB4MDMsMHgzOSww
eDBBLDB4MDksMHgwRCwweDA1LAorICAgIDB4NDUsMHg0OSwweEUzLDB4MzgsMHhFQSwweDZBLDB4
N0IsMHhGNywweDAzLDB4NDEsMHhFMywweDM4LDB4MzcsMHgwOSwweDhELDB4MkYsCisgICAgMHg4
NSwweDQ5LDB4MDMsMHg0MSwweDI1LDB4M0QsMHhCRCwweDI3LDB4QzYsMHg1OSwweDY0LDB4NDks
MHhGRCwweEE5LDB4Q0IsMHgwMywKKyAgICAweEE1LDB4NTEsMHgyMywweDQxLDB4RjAsMHg3RSww
eERFLDB4RkEsMHg0NCwweDQ5LDB4RTIsMHg0MCwweERBLDB4NUUsMHg1QywweEQ4LAorICAgIDB4
MjQsMHg0OSwweEUyLDB4NDAsMHgyQiwweDM3LDB4M0YsMHhCQiwweDg1LDB4NTEsMHgyNCwweDQ5
LDB4RkYsMHhGRCwweEFBLDB4ODEsCisgICAgMHg2NSwweDUxLDB4MDMsMHg0MSwweDdBLDB4QzIs
MHhFOCwweEUwLDB4NDQsMHg0OSwweDAzLDB4NDEsMHg3RSwweERFLDB4QUYsMHhBQSwKKyAgICAw
eDY0LDB4NDksMHgwMywweDQxLDB4RDUsMHg3NywweEZBLDB4RTIsMHg4NSwweDUxLDB4MjMsMHg0
OSwweDFELDB4QUIsMHhBRCwweEFELAorICAgIDB4ODUsMHg1MSwweDQ0LDB4NDksMHhFOCwweDdB
LDB4REMsMHhFMiwweDY0LDB4NDksMHgwMywweDQxLDB4RkYsMHhGRiwweDdCLDB4RkMsCisgICAg
MHg2NCwweDQ5LDB4MDMsMHg0MSwweEFCLDB4MjMsMHgyQiwweDlBLDB4NjQsMHg0OSwweDAzLDB4
NDEsMHhENywweEZFLDB4ODgsMHhBQiwKKyAgICAweDIzLDB4NDEsMHgwMywweDM5LDB4ODAsMHg4
MiwweEVFLDB4QzQsMHgyMywweDQxLDB4RTMsMHgzOCwweEFFLDB4OUYsMHhGQiwweDc4LAorICAg
IDB4MjMsMHg0MSwweEMyLDB4MzgsMHhCOCwweEJGLDB4RUYsMHhBNSwweDY1LDB4NDksMHhFMyww
eDM4LDB4QkYsMHgzNywweEY1LDB4RDcsCisgICAgMHg4NSwweDQ5LDB4MjQsMHg0MSwweEZBLDB4
MkIsMHhBRiwweEY1LDB4NjQsMHg0OSwweDAzLDB4NDEsMHgyOCwweEFBLDB4RUEsMHhGQSwKKyAg
ICAweDY0LDB4NDksMHgwMywweDM5LDB4QjIsMHhGQSwweDdBLDB4N0QsMHg0NCwweDQxLDB4RTIs
MHgzOCwweDJBLDB4ODgsMHhBRiwweEI3LAorICAgIDB4NDQsMHg0MSwweDAzLDB4NDEsMHhGRSww
eEUyLDB4RUUsMHg2NSwweDQ0LDB4NDksMHgwMywweDQxLDB4QTksMHgwQiwweDA3LDB4QjUsCisg
ICAgMHhBNSwweDUxLDB4MjMsMHg0MSwweEZELDB4QkIsMHgyQiwweEFCLDB4QzUsMHg1OSwweDQ0
LDB4NDksMHhBOSwweDI1LDB4QjgsMHhDOCwKKyAgICAweDI3LDB4NkEsMHg4NSwweDUxLDB4QUYs
MHgyQiwweEJELDB4RkQsMHg2NywweDcyLDB4RTYsMHg2MSwweEVCLDB4QUEsMHgyMSwweDI1LAor
ICAgIDB4QTgsMHg3QSwweDI2LDB4NkEsMHhFNSwweEZGLDB4QUUsMHgwQSwweEE4LDB4ODIsMHgy
NiwweDZBLDB4RDUsMHhGRiwweDBFLDB4MjIsCisgICAgMHhBOCwweDgyLDB4NjcsMHg3MiwweEJG
LDB4REIsMHhGQiwweDZBLDB4RTksMHg4MiwweDY3LDB4N0EsMHhBRiwweEFCLDB4QUQsMHhBRiwK
KyAgICAweDA5LDB4OEIsMHhBOCwweDgyLDB4MEIsMHgyQSwweDE2LDB4M0QsMHhFRiwweEM0LDB4
MjksMHg5MywweDJELDB4QjUsMHhCNSwweEY1LAorICAgIDB4RjQsMHhFNSwweDZFLDB4QjQsMHgw
MiwweDAyLDB4MEIsMHgyRCwweDE1LDB4RTYsMHhENCwweERELDB4RTgsMHhGQSwweDdBLDB4RkIs
CisgICAgMHgxNSwweEU2LDB4RDQsMHhERCwweDdGLDB4QkYsMHg4MywweDAzLDB4RDQsMHhERCww
eDMxLDB4QzUsMHg3MCwweDcwLDB4RDAsMHg1OCwKKyAgICAweDMxLDB4Q0QsMHhGMCwweEM0LDB4
QUEsMHhBQSwweEVFLDB4N0QsMHgzMSwweENELDB4RjAsMHhCQywweEFBLDB4RUEsMHgzQiwweEFE
LAorICAgIDB4NTEsMHhDRCwweDEwLDB4Q0QsMHg4MywweDI5LDB4NkUsMHhBQSwweDcyLDB4Q0Qs
MHgzMSwweENELDB4QTcsMHhDRiwweEJGLDB4QUQsCisgICAgMHgxNSwweEU2LDB4NzIsMHhENSww
eDA5LDB4MDksMHgyRCwweDI1LDB4OTYsMHhFRSwweDM1LDB4RTYsMHgwQiwweDJBLDB4MEIsMHgw
OSwKKyAgICAweEI2LDB4RjYsMHg3NiwweEVFLDB4MkUsMHhCRiwweEI5LDB4RkYsMHhCNywweEY2
LDB4OTYsMHhFRSwweEJGLDB4QUYsMHhENSwweDU1LAorICAgIDB4QjYsMHhGNiwweDc2LDB4RUUs
MHhGNywweEZGLDB4RkYsMHhBQiwweDk2LDB4RUUsMHg1NSwweEU2LDB4QjAsMHg2QSwweDJBLDB4
MDAsCisgICAgMHhCNiwweEY2LDB4NTUsMHhFNiwweEZGLDB4RkYsMHhBRiwweDIyLDB4QjYsMHhG
NiwweDU1LDB4RTYsMHhGNSwweEZGLDB4QUEsMHhBMiwKKyAgICAweEI2LDB4RjYsMHg1NSwweEU2
LDB4NzcsMHhGRiwweEFBLDB4MjAsMHhCNiwweEY2LDB4NzYsMHhFRSwweEQ1LDB4QkYsMHhBOCww
eEEyLAorICAgIDB4QjcsMHhGNiwweDc2LDB4RUUsMHg1NywweEJBLDB4QUEsMHhFOCwweDk2LDB4
RjYsMHg3NiwweEVFLDB4MzksMHhBQSwweDI4LDB4RDcsCisgICAgMHhCNiwweEY2LDB4NTUsMHhF
NiwweEJFLDB4OEEsMHhFQSwweDdFLDB4OTYsMHhFRSwweDM1LDB4RTYsMHgyMCwweDAyLDB4MkEs
MHg3RCwKKyAgICAweEI3LDB4RjYsMHgxNSwweEU2LDB4MkEsMHhBOCwweEVBLDB4N0YsMHhCNyww
eEY2LDB4MTUsMHhERSwweEEwLDB4QTgsMHhFRSwweDU1LAorICAgIDB4NzYsMHhFRSwweEIzLDB4
RDUsMHgwMCwweDAwLDB4QUEsMHg3RiwweDU2LDB4RUUsMHg3MiwweENELDB4MDAsMHgyMCwweEZB
LDB4NTcsCisgICAgMHg1NSwweEVFLDB4OTMsMHhDRCwweDgwLDB4RkUsMHg3NywweDU1LDB4RjQs
MHhERCwweDcyLDB4Q0QsMHhDMCwweDdCLDB4NTUsMHg1NSwKKyAgICAweDg0LDB4NTksMHgyMiww
eDUxLDB4RkYsMHhFQSwweDYzLDB4N0IsMHg2NCwweDU5LDB4MjIsMHg1MSwweDNGLDB4MEYsMHgy
NSwweDJGLAorICAgIDB4ODQsMHg2MSwweDY0LDB4NTksMHhGQiwweDJBLDB4RTksMHg3RiwweDg0
LDB4NjEsMHgyMywweDUxLDB4RkMsMHhBQywweEY4LDB4RTAsCisgICAgMHg4NCwweDU5LDB4NDMs
MHg1OSwweEFBLDB4QUIsMHgyQiwweDA3LDB4QTQsMHg2MSwweDQzLDB4NTEsMHhBQSwweEFBLDB4
ODgsMHg3RSwKKyAgICAweDg0LDB4NTksMHgyMiwweDUxLDB4NkEsMHhFOCwweEFGLDB4QjksMHg4
NCwweDU5LDB4MjIsMHg1MSwweEQ3LDB4RjcsMHgzRiwweEVGLAorICAgIDB4NDMsMHg1MSwweDIy
LDB4NTEsMHg1OCwweDNDLDB4RDgsMHgyMCwweDQzLDB4NTEsMHgyMiwweDQ5LDB4NzgsMHg3QSww
eDBELDB4MkUsCisgICAgMHg2MywweDU5LDB4MjIsMHg1MSwweDVELDB4NzUsMHhBNywweDJBLDB4
NjQsMHg1OSwweDIzLDB4NTEsMHhGRCwweEQ5LDB4RkEsMHhBQSwKKyAgICAweDg0LDB4NjEsMHgy
MywweDUxLDB4NTcsMHhGNywweEU3LDB4QUYsMHg4NCwweDYxLDB4NjQsMHg1OSwweDE5LDB4QTks
MHhCOSwweDgxLAorICAgIDB4QTQsMHg2MSwweDY0LDB4NTksMHhCNSwweEVGLDB4RkQsMHhGQiww
eDg0LDB4NjEsMHg2NCwweDU5LDB4N0EsMHgyRSwweEI0LDB4MUUsCisgICAgMHhBNCwweDYxLDB4
NjQsMHg1OSwweEZGLDB4N0QsMHg2RSwweEVCLDB4MDYsMHg3MiwweDYzLDB4NTksMHgwQiwweEVC
LDB4RkQsMHg3NSwKKyAgICAweDY3LDB4N0EsMHg2MywweDU5LDB4MDIsMHhBQiwweEY1LDB4NTcs
MHg2NywweDdBLDB4ODQsMHg2MSwweDAwLDB4MDAsMHgwQiwweEY1LAorICAgIDB4ODgsMHg4Miww
eDA2LDB4NzIsMHgwOCwweDhBLDB4QUEsMHhBOSwweDY3LDB4ODIsMHg4NywweDdBLDB4NzcsMHhE
QywweERFLDB4RkIsCisgICAgMHg4NywweDgyLDB4NjcsMHg3QSwweDVDLDB4RkYsMHhCRiwweDBC
LDB4QTcsMHg4MiwweDY3LDB4N0EsMHhBQSwweEE1LDB4QjYsMHhBNiwKKyAgICAweEE3LDB4ODIs
MHg2NywweDdBLDB4MkUsMHgyQSwweDZCLDB4RkYsMHhBNywweDgyLDB4ODcsMHg3QSwweDJELDB4
MDUsMHhGRCwweDdFLAorICAgIDB4MDgsMHg4QiwweDg3LDB4N0EsMHhENSwweEZGLDB4QkYsMHgz
RCwweEVDLDB4QUIsMHhFOCwweDhBLDB4QTUsMHgyRCwweDJCLDB4MEIsCisgICAgMHhFQiwweEFC
LDB4QUIsMHhBMywweDZBLDB4RkEsMHhEMCwweEJGLDB4Q0IsMHhBMywweDhBLDB4QTMsMHhBQSww
eEJGLDB4RUYsMHhBOCwKKyAgICAweENCLDB4QTMsMHg2QywweEEzLDB4OEEsMHhBOCwweDhFLDB4
QUEsMHhDQiwweEEzLDB4OEIsMHhBMywweDg4LDB4RTksMHhBQiwweDhCLAorICAgIDB4Q0IsMHhB
MywweDQ5LDB4OTMsMHg3OCwweEEyLDB4ODgsMHhBQSwweDI5LDB4OEIsMHgwNiwweDZBLDB4NUUs
MHg3OCwweDcwLDB4RTAsCisgICAgMHhFNiwweDYxLDB4NDMsMHg1MSwweDVFLDB4RUMsMHhGOCww
eEU4LDB4NjQsMHg1MSwweEMyLDB4MzgsMHg3RSwweDdFLDB4NzgsMHhFMCwKKyAgICAweDIzLDB4
NDEsMHhDMiwweDM4LDB4MEIsMHhBRiwweEFGLDB4RjcsMHgwMywweDQxLDB4QzIsMHgzOCwweDcw
LDB4NkYsMHg3RSwweDU3LAorICAgIDB4RTMsMHgzOCwweEExLDB4MzAsMHg5NSwweEJGLDB4RkEs
MHhCQSwweEUyLDB4MzgsMHhBMiwweDMwLDB4N0UsMHhGRiwweEFCLDB4MkEsCisgICAgMHgwMyww
eDM5LDB4QTIsMHgzMCwweEQ1LDB4RDcsMHhGQiwweEJDLDB4MjMsMHg0MSwweEUzLDB4MzgsMHhG
NSwweEI1LDB4QUQsMHhCRCwKKyAgICAweDY0LDB4NDksMHgwMywweDQxLDB4MkQsMHgyRCwweDNG
LDB4QkYsMHhBNiwweDUxLDB4NDQsMHg0OSwweDU3LDB4NUYsMHg3RiwweEUzLAorICAgIDB4NjQs
MHg0OSwweDI0LDB4NDEsMHhFQiwweEFBLDB4QkUsMHhCQSwweDg1LDB4NDksMHgyNCwweDQxLDB4
QjcsMHhENywweDhCLDB4MEIsCisgICAgMHg4NSwweDUxLDB4MjQsMHg0MSwweEZBLDB4N0UsMHhE
OCwweDU4LDB4NDQsMHg0MSwweEUzLDB4NDAsMHg4RSwweDNCLDB4MkIsMHhBOSwKKyAgICAweDQ0
LDB4NDksMHhFMywweDM4LDB4N0UsMHhEOCwweEVFLDB4QUEsMHgyMywweDQxLDB4RTIsMHgzOCww
eEE1LDB4M0YsMHg5RSwweDNGLAorICAgIDB4QTUsMHg1MSwweDAzLDB4NDEsMHgyRCwweDJGLDB4
MkIsMHgyRiwweEE1LDB4NTEsMHgyMywweDQ5LDB4NzgsMHg3OCwweEUwLDB4QTAsCisgICAgMHg2
NCwweDUxLDB4MDMsMHg0OSwweEZGLDB4QUQsMHhGNiwweEZDLDB4ODUsMHg1MSwweDI0LDB4NDks
MHhGNSwweDY1LDB4QUYsMHgwRiwKKyAgICAweEE1LDB4NTEsMHg2NCwweDUxLDB4MzUsMHhCNSww
eERGLDB4OTgsMHhBNSwweDU5LDB4MjQsMHg0OSwweDdDLDB4RjgsMHhFMiwweDhBLAorICAgIDB4
NjQsMHg1MSwweDI0LDB4NDksMHgxNywweEQ3LDB4QkUsMHhFOCwweEE1LDB4NTEsMHg0NCwweDQ5
LDB4RUYsMHgyRiwweDNELDB4MzcsCisgICAgMHg4NSwweDUxLDB4MDMsMHgzOSwweDVGLDB4N0Us
MHg1OCwweDc4LDB4MjQsMHg0MSwweEMyLDB4MzgsMHg4QSwweEFBLDB4RUEsMHg3RiwKKyAgICAw
eDI0LDB4NDEsMHhFMywweDM4LDB4QkUsMHhCRCwweEY1LDB4RDUsMHgwMywweDM5LDB4QTIsMHgz
MCwweEEwLDB4MDgsMHgyQSwweDI4LAorICAgIDB4MjMsMHg0MSwweEUzLDB4MzgsMHhERiwweEJG
LDB4RUEsMHg3MiwweDIzLDB4NDEsMHhFMywweDM4LDB4NkEsMHhGQywweEVFLDB4RkYsCisgICAg
MHgyMywweDQxLDB4RTIsMHgzOCwweENGLDB4MDMsMHg4QSwweERBLDB4MjQsMHg0MSwweEUzLDB4
MzgsMHg5NywweDE0LDB4QkIsMHg3OSwKKyAgICAweDg1LDB4NTEsMHhFMywweDM4LDB4QTcsMHhC
RiwweEVGLDB4QjUsMHhDNiwweDU5LDB4NjUsMHg0OSwweDJCLDB4QUYsMHhBRCwweEZGLAorICAg
IDB4ODQsMHg1MSwweDQ0LDB4NDksMHg3QywweDU0LDB4NTQsMHg3RiwweDQ0LDB4NDksMHhFMiww
eDQwLDB4RjIsMHg2RSwweEZFLDB4N0UsCisgICAgMHgwMywweDQxLDB4RTIsMHg0MCwweDAyLDB4
MDIsMHgzQiwweEE5LDB4NDQsMHg0OSwweDAzLDB4NDEsMHgwQiwweEY2LDB4NUYsMHg3RCwKKyAg
ICAweDY0LDB4NDksMHgyNCwweDQ5LDB4NTgsMHhFRiwweEJELDB4QUQsMHg4NSwweDUxLDB4MjMs
MHg0OSwweEI5LDB4QTksMHgyQiwweDAyLAorICAgIDB4ODUsMHg1MSwweDIzLDB4NDEsMHhGMiww
eEVBLDB4NzgsMHg1RSwweDY0LDB4NDksMHgyMywweDQ5LDB4ODUsMHhBRCwweDBCLDB4MkIsCisg
ICAgMHhBNSwweDUxLDB4NDQsMHg0MSwweEVCLDB4MkYsMHhBRCwweEY1LDB4ODUsMHg0OSwweDQ0
LDB4NDksMHg1NiwweDdBLDB4N0EsMHg1NywKKyAgICAweDQ0LDB4NDEsMHgwMywweDQxLDB4RDYs
MHg1RiwweEZFLDB4QUMsMHg2NCwweDQ5LDB4MDMsMHgzOSwweDhGLDB4QTcsMHhBRCwweEI1LAor
ICAgIDB4NDQsMHg0MSwweEUyLDB4MzgsMHhFOCwweEFDLDB4QjgsMHhCNCwweDIzLDB4NDEsMHhF
MiwweDM4LDB4NDIsMHhDMCwweEUwLDB4N0UsCisgICAgMHgwMywweDM5LDB4QzIsMHgzOCwweDI1
LDB4QkYsMHgyQiwweDgyLDB4MjMsMHg0MSwweDAzLDB4MzksMHhBRCwweDY3LDB4M0QsMHgwOSwK
KyAgICAweDQ0LDB4NDEsMHgwMywweDM5LDB4QkEsMHhGRiwweEVCLDB4MjIsMHg0NCwweDQxLDB4
MDMsMHg0MSwweEEyLDB4Q0EsMHg3QiwweEVBLAorICAgIDB4RTIsMHg0OCwweDAzLDB4MzksMHhG
NSwweERELDB4NzUsMHhENywweDIzLDB4NDEsMHhDMiwweDM4LDB4QTcsMHgyRiwweEVGLDB4QUEs
CisgICAgMHg0MywweDQxLDB4MDMsMHg0MSwweDY1LDB4RUIsMHhGRiwweEE5LDB4NjQsMHg0OSww
eDIzLDB4NDEsMHhCNywweDk1LDB4QjUsMHg3NSwKKyAgICAweDY0LDB4NDksMHgyMywweDQxLDB4
MDIsMHgwMCwweDAyLDB4QUYsMHhBNSwweDUxLDB4NDQsMHg0OSwweDAwLDB4MkYsMHg5RSwweEIz
LAorICAgIDB4RTcsMHg2MSwweDg1LDB4NTEsMHhEQiwweEVBLDB4MkIsMHgyQiwweDI3LDB4NkEs
MHhBNCwweDU5LDB4MjUsMHg5NSwweEVGLDB4RTIsCisgICAgMHhBOCwweDdBLDB4QzUsMHg1OSww
eDBBLDB4MDMsMHhCRiwweEJELDB4QzksMHg4MiwweDY2LDB4NzIsMHgwMiwweDIyLDB4QUIsMHhF
OSwKKyAgICAweEE4LDB4N0EsMHg2NywweDdBLDB4NjgsMHg2QSwweDY4LDB4NzgsMHhBNywweDdB
LDB4NDYsMHg3MiwweDBBLDB4MkYsMHgyRiwweDc3LAorICAgIDB4MDksMHg4QiwweEE3LDB4N0Es
MHgzRCwweEVGLDB4QUQsMHhCRiwweDhCLDB4OUIsMHhFOCwweDgyLDB4MkQsMHgzRCwweEZELDB4
NTUsCisgICAgMHhEMywweERELDB4NkEsMHg5MywweDJCLDB4MkQsMHhBRCwweEI1LDB4MTQsMHhF
NiwweDcyLDB4RDUsMHg4QSwweDBBLDB4MEIsMHgwOSwKKyAgICAweDE1LDB4RTYsMHhCMywweERE
LDB4MDIsMHg4MCwweEEwLDB4NzAsMHhCMywweERELDB4RjAsMHhDNCwweDU4LDB4N0MsMHg3Qyww
eDVFLAorICAgIDB4MTAsMHhDNSwweENGLDB4QkMsMHhFQSwweDZBLDB4RkUsMHhCNiwweDMwLDB4
Q0QsMHhEMCwweEJDLDB4QUIsMHhBOSwweEFGLDB4MkIsCisgICAgMHgzMSwweENELDB4MTAsMHhD
NSwweDQyLDB4QzgsMHhCMywweDgzLDB4NTEsMHhDRCwweDEwLDB4QzUsMHgwQiwweDhGLDB4MEYs
MHg4OSwKKyAgICAweDE0LDB4RTYsMHg1MSwweENELDB4MzUsMHgzNSwweEQ1LDB4RDUsMHg5Niww
eEY2LDB4RjQsMHhERCwweDBBLDB4MEIsMHgwQiwweDJELAorICAgIDB4RDcsMHhGNiwweDc2LDB4
RUUsMHhCRiwweEFBLDB4QTgsMHg3NSwweEI3LDB4RjYsMHg1NSwweEVFLDB4MDgsMHgwMCwweDI4
LDB4N0YsCisgICAgMHhCNywweEY2LDB4MzUsMHhFNiwweDAwLDB4MDAsMHhBMCwweDU3LDB4Qjcs
MHhGNiwweDM1LDB4RTYsMHgwMiwweEE4LDB4RUEsMHg1RCwKKyAgICAweEI3LDB4RjYsMHgxNCww
eERFLDB4ODIsMHhBMiwweEZGLDB4N0QsMHg5NiwweEVFLDB4RjQsMHhERCwweDAwLDB4ODgsMHhG
RSwweDc3LAorICAgIDB4OTYsMHhFRSwweEIzLDB4RDUsMHgwMCwweDIwLDB4QUEsMHg1RiwweDc2
LDB4RUUsMHhCMywweEQ1LDB4MDAsMHgwMCwweEVBLDB4NTcsCisgICAgMHg5NiwweEVFLDB4NzMs
MHhDRCwweDAwLDB4QTgsMHhBQSwweDU3LDB4NTUsMHhFNiwweDUxLDB4QzUsMHgwMCwweDg4LDB4
RkEsMHg1NywKKyAgICAweDU1LDB4RTYsMHhGMSwweEJDLDB4ODAsMHhBQSwweEZFLDB4NzcsMHgx
NSwweEU2LDB4RDAsMHhCQywweDAwLDB4QUEsMHhGRiwweDU1LAorICAgIDB4RjQsMHhERCwweDhG
LDB4QjQsMHgwMCwweEFBLDB4REYsMHg1NSwweEY0LDB4REQsMHhCMCwweEI0LDB4QTgsMHhGRSww
eDU1LDB4NTUsCisgICAgMHg3MiwweENELDB4NEUsMHhBQywweDIwLDB4QkEsMHhGNywweEY1LDB4
NzMsMHhDNSwweEQwLDB4QjQsMHgyQSwweEJGLDB4MzUsMHgyOSwKKyAgICAweDkzLDB4Q0QsMHg1
MiwweEM1LDB4ODIsMHg4RiwweEIzLDB4N0EsMHhCMywweEQ1LDB4MTEsMHhDNSwweEVBLDB4RTIs
MHhGQSwweDdFLAorICAgIDB4NDMsMHg1OSwweDIzLDB4NTEsMHg1QSwweEZBLDB4RTgsMHg4MCww
eDY0LDB4NTksMHgyMywweDUxLDB4MkIsMHgwQSwweDA5LDB4MDAsCisgICAgMHg4NCwweDYxLDB4
NDQsMHg1OSwweDVFLDB4NUUsMHhCRSwweDJBLDB4ODQsMHg2MSwweDQzLDB4NTksMHhFNywweERF
LDB4RjgsMHhGRSwKKyAgICAweDg0LDB4NTksMHg0MywweDUxLDB4QkEsMHhBOCwweEEyLDB4RDAs
MHg2NCwweDU5LDB4MjMsMHg1MSwweDYwLDB4N0EsMHhEQSwweDNBLAorICAgIDB4ODQsMHg1OSww
eDIzLDB4NTEsMHg4RCwweEE1LDB4QkQsMHhERCwweDg0LDB4NTksMHgyMiwweDUxLDB4N0YsMHg4
QiwweEJFLDB4RkYsCisgICAgMHg2MywweDU5LDB4NDMsMHg1MSwweDlELDB4NkMsMHhBNiwweEE5
LDB4NjMsMHg1OSwweDIyLDB4NTEsMHg1QiwweDVDLDB4NUUsMHhERSwKKyAgICAweDYzLDB4NTks
MHgwMiwweDQ5LDB4MkEsMHhCRiwweEJELDB4RkIsMHg2NCwweDU5LDB4MjMsMHg1MSwweDVCLDB4
NUYsMHhCRiwweEEzLAorICAgIDB4ODQsMHg2MSwweDQzLDB4NTEsMHhFRCwweEE5LDB4QUEsMHhF
QSwweDg0LDB4NjEsMHg2MywweDU5LDB4OEEsMHg3QSwweEYwLDB4NjQsCisgICAgMHhBNCwweDYx
LDB4NjMsMHg1OSwweDVBLDB4OEUsMHg2RiwweDgzLDB4ODQsMHg2MSwweDYzLDB4NTksMHgxMSww
eDlGLDB4MkEsMHgyMCwKKyAgICAweEE0LDB4NjEsMHg2MywweDU5LDB4REEsMHhGQiwweEYwLDB4
NTAsMHhBNSwweDYxLDB4MjIsMHg1MSwweEVBLDB4RTgsMHg3RSwweEZBLAorICAgIDB4NjMsMHg1
OSwweDQzLDB4NTksMHgzQywweDdBLDB4RTAsMHhDMiwweDg0LDB4NjEsMHgyMywweDUxLDB4MkIs
MHhGRiwweEZGLDB4N0YsCisgICAgMHhFNSwweDY5LDB4MDMsMHg1MSwweDAyLDB4QUUsMHhGRiww
eDdGLDB4NjcsMHg3QSwweDQzLDB4NTksMHgwMCwweDJCLDB4RkQsMHhENSwKKyAgICAweDY3LDB4
N0EsMHg4NCwweDU5LDB4MDAsMHgwMCwweDBBLDB4RkQsMHhDNywweDgyLDB4MDYsMHg3MiwweEFB
LDB4MkIsMHhCQiwweEZELAorICAgIDB4QTcsMHg4MiwweDY2LDB4N0EsMHhGRCwweDBCLDB4OEIs
MHhCRCwweEE3LDB4ODIsMHg2NiwweDdBLDB4RUEsMHhGOCwweEYyLDB4RTAsCisgICAgMHgwQiww
eEFDLDB4QzgsMHg4MiwweEQ1LDB4RjUsMHhCNSwweDJELDB4RUMsMHhBQiwweDhBLDB4OUIsMHgw
RCwweDAzLDB4QTAsMHhGQSwKKyAgICAweENCLDB4QTMsMHg2QSwweDlCLDB4MDgsMHhBOCwweEZD
LDB4RTcsMHhDQiwweEEzLDB4NkEsMHg5QiwweDhBLDB4RUYsMHg3NywweEQ3LAorICAgIDB4QUIs
MHhBMywweDZBLDB4OUIsMHhBOCwweEVCLDB4Q0YsMHhFOSwweENDLDB4QTMsMHg2QSwweDlCLDB4
MEYsMHhBQiwweEVCLDB4NUYsCisgICAgMHhBQiwweEEzLDB4MkEsMHg5MywweDIwLDB4QTgsMHhG
QSwweDdGLDB4NkEsMHg5MywweDA1LDB4NkEsMHg3OCwweDc4LDB4NTgsMHhGRSwKKyAgICAweDI2
LDB4NkEsMHhBNCwweDU5LDB4NTcsMHg1NiwweEZDLDB4RTgsMHhBNSwweDU5LDB4MDIsMHg0MSww
eERDLDB4NTgsMHg3OCwweEY4LAorICAgIDB4MDMsMHg0MSwweEEyLDB4MzgsMHhGQywweDdFLDB4
NzgsMHhFOCwweEUzLDB4MzgsMHhBMiwweDMwLDB4M0IsMHhCRCwweEFBLDB4RTgsCisgICAgMHhF
MywweDM4LDB4QTIsMHgzMCwweEJFLDB4MkEsMHgwRiwweDJCLDB4MjQsMHg0MSwweEUzLDB4Mzgs
MHg1NywweEI3LDB4MkYsMHgzRiwKKyAgICAweDI0LDB4NDEsMHhDMiwweDMwLDB4QjcsMHhBQiww
eEIyLDB4QTAsMHhFMywweDQwLDB4MjQsMHgzOSwweEFBLDB4QTcsMHhCQSwweEJCLAorICAgIDB4
NDQsMHg0MSwweEUzLDB4MzgsMHgyRiwweEI1LDB4REYsMHgzRiwweDg1LDB4NTEsMHgyMywweDQx
LDB4MDMsMHgyOSwweEJELDB4QUYsCisgICAgMHg4NSwweDUxLDB4MDMsMHgzOSwweEFBLDB4QTAs
MHg2MCwweDdBLDB4NDQsMHg0OSwweDAzLDB4NDEsMHgwOCwweEJFLDB4RkQsMHg1NywKKyAgICAw
eDQ0LDB4NDksMHgwMywweDQxLDB4NzgsMHg1NiwweDU1LDB4RkIsMHgyNCwweDQxLDB4RTIsMHgz
OCwweDI3LDB4MkUsMHhFQiwweEUyLAorICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHg4MCwweEUy
LDB4RkEsMHgwMiwweDY1LDB4NDksMHhFMiwweDM4LDB4OTUsMHg5NSwweEJELDB4QUYsCisgICAg
MHhDNiwweDUxLDB4NDQsMHg0OSwweEE1LDB4N0YsMHhFQSwweDhCLDB4QTUsMHg1MSwweDQ0LDB4
NDksMHhDMiwweEM5LDB4RTMsMHg2QSwKKyAgICAweDg1LDB4NTEsMHgyMywweDQ5LDB4REUsMHhC
QSwweDJGLDB4QjcsMHhBNSwweDU5LDB4NjQsMHg0OSwweDlELDB4RkIsMHhFQSwweEFCLAorICAg
IDB4QTUsMHg1MSwweDQ0LDB4NDksMHhFOCwweEZBLDB4QkUsMHg3RiwweEM1LDB4NjEsMHg0NCww
eDQ5LDB4QUYsMHgyRCwweDM1LDB4MTcsCisgICAgMHgwNiwweDZBLDB4NjQsMHg1MSwweDdGLDB4
N0EsMHhFMiwweDBBLDB4QzYsMHg1OSwweDY0LDB4NDksMHhGNSwweDc3LDB4RkUsMHhGMCwKKyAg
ICAweEE1LDB4NTEsMHgwMywweDQxLDB4NTgsMHg3MiwweEJGLDB4QTgsMHgyMywweDQxLDB4QzIs
MHgzOCwweDU3LDB4NTcsMHg3OCwweDc4LAorICAgIDB4RTMsMHgzOCwweDgxLDB4MzAsMHhBMiww
eEJBLDB4QkUsMHhBNywweDAzLDB4MzksMHhDMiwweDMwLDB4QUYsMHhGNSwweEFGLDB4M0IsCisg
ICAgMHgyMywweDQxLDB4RTMsMHgzOCwweDdBLDB4RkIsMHg3NywweEZELDB4MDMsMHg0MSwweEUz
LDB4MzgsMHhFRCwweEI1LDB4NTUsMHgzOCwKKyAgICAweDIzLDB4NDEsMHhDMiwweDM4LDB4RkEs
MHg2QiwweEFGLDB4MkUsMHgyMywweDQxLDB4RTMsMHgzOCwweDdCLDB4QUYsMHgyRSwweDJCLAor
ICAgIDB4NjQsMHg0OSwweEUzLDB4MzgsMHgyRCwweDhGLDB4QUUsMHhBQiwweDY0LDB4NTEsMHgy
MywweDQ5LDB4MEEsMHgwRSwweEFCLDB4NzMsCisgICAgMHg4NSwweDUxLDB4MjQsMHg0OSwweEUy
LDB4RUIsMHg3QiwweEZGLDB4NDQsMHg0OSwweDAzLDB4NDEsMHg3NCwweEQ0LDB4QUEsMHgyQSwK
KyAgICAweDQ0LDB4NDksMHgwMywweDQxLDB4NzUsMHg2RiwweDJBLDB4MjAsMHg2NCwweDUxLDB4
MDMsMHg0MSwweEI1LDB4QkQsMHgzQiwweDJBLAorICAgIDB4ODQsMHg1MSwweDQ0LDB4NDksMHhC
RCwweEFGLDB4QUYsMHgyRSwweEE1LDB4NTEsMHg2NCwweDQ5LDB4Q0IsMHg2QSwweEMyLDB4QzAs
CisgICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweEZDLDB4RjgsMHhFOCwweDgwLDB4NjQsMHg0OSww
eDAzLDB4NDEsMHgyQiwweDJCLDB4MDksMHgzRiwKKyAgICAweDg0LDB4NDksMHgwMywweDQxLDB4
N0YsMHg3RSwweDdFLDB4RkMsMHg0NCwweDQ5LDB4MDMsMHg0MSwweDJFLDB4RkUsMHg3QSwweDVG
LAorICAgIDB4NDQsMHg0MSwweEUyLDB4MzgsMHg4OCwweDJFLDB4QTcsMHg1NywweDQ0LDB4NDEs
MHhFMywweDM4LDB4QkEsMHhGQSwweERDLDB4RkYsCisgICAgMHgyMywweDQxLDB4RTMsMHgzOCww
eEZDLDB4NUYsMHhGRiwweEFGLDB4NDQsMHg0MSwweEUyLDB4MzgsMHhERiwweDc3LDB4OUYsMHhF
MiwKKyAgICAweDAzLDB4MzksMHhDMiwweDM4LDB4MjksMHhBNiwweEFBLDB4MDIsMHg4NCwweDQ5
LDB4MDMsMHgzOSwweEFELDB4MEQsMHhBRCwweEU3LAorICAgIDB4NjQsMHg0OSwweDAzLDB4Mzks
MHhBRSwweEE4LDB4ODAsMHhBOCwweDY1LDB4NDksMHgyNCwweDQxLDB4N0UsMHg3MiwweEVCLDB4
RkQsCisgICAgMHg0MywweDQxLDB4QzIsMHgzOCwweEZFLDB4QjYsMHhBQSwweEE4LDB4NjUsMHg0
OSwweEUyLDB4MzgsMHg5NywweEI3LDB4OEIsMHgwRiwKKyAgICAweDQ0LDB4NDEsMHgwMywweDQx
LDB4MEQsMHgwOSwweEMwLDB4QTAsMHg0NCwweDQ5LDB4MjMsMHg0MSwweEVDLDB4REUsMHhENyww
eDk2LAorICAgIDB4NjQsMHg0OSwweDIzLDB4NDEsMHg3RCwweEZGLDB4RUUsMHhDMCwweDg1LDB4
NTEsMHgwMiwweDQxLDB4MkIsMHhERCwweEY3LDB4NUUsCisgICAgMHhDNiwweDU5LDB4NDQsMHg0
OSwweDJCLDB4QkYsMHhCRCwweDk1LDB4RTYsMHg2MSwweDg0LDB4NTksMHgwMiwweEFFLDB4REYs
MHg3QSwKKyAgICAweDI2LDB4NkEsMHhBNCwweDU5LDB4MkYsMHg4QiwweDhCLDB4MjUsMHhBOCww
eDdBLDB4MDUsMHg2MiwweDgyLDB4QTksMHhGRCwweEQ3LAorICAgIDB4NjcsMHg3QSwweDI2LDB4
NkEsMHhBMiwweEFCLDB4QkYsMHhGQiwweDQ3LDB4NzIsMHgwNiwweDZBLDB4RTgsMHg2QywweEZD
LDB4NTQsCisgICAgMHhDOCwweDgyLDB4MDYsMHg2QSwweDBBLDB4MEQsMHhCNSwweEI1LDB4RTgs
MHg4MiwweDg3LDB4N0EsMHgyOCwweDIyLDB4OEIsMHgzNywKKyAgICAweDZFLDB4QjQsMHhDOCww
eDgyLDB4MkQsMHhCRCwweEY1LDB4RDUsMHhEMywweERELDB4MkQsMHhBQywweDAyLDB4MEIsMHgy
RCwweEFELAorICAgIDB4RjQsMHhFNSwweDUxLDB4Q0QsMHhBMCwweEUyLDB4N0EsMHhFQSwweDUy
LDB4Q0QsMHhEMCwweEJDLDB4RjgsMHhGRSwweERBLDB4N0MsCisgICAgMHgxMCwweEM1LDB4RDAs
MHhCQywweEY2LDB4QUEsMHg5QSwweEQ3LDB4MTAsMHhDNSwweEYwLDB4QzQsMHgyRCwweDBGLDB4
MjksMHgwNSwKKyAgICAweDMxLDB4Q0QsMHgxMCwweEM1LDB4MDIsMHg4RSwweDFCLDB4QUIsMHg1
MSwweENELDB4MTAsMHhDNSwweEFGLDB4MjcsMHhBRiwweEFCLAorICAgIDB4NTEsMHhDRCwweDMx
LDB4QzUsMHgyOCwweDBFLDB4MkEsMHhGQywweDM1LDB4RTYsMHg1MiwweENELDB4MEIsMHhBRiww
eEFELDB4QUQsCisgICAgMHgzNSwweEU2LDB4MTAsMHhDNSwweDAwLDB4QUEsMHg3RiwweDVFLDB4
MTQsMHhFNiwweEQwLDB4QkMsMHgwMCwweEFBLDB4RkYsMHg3NSwKKyAgICAweDE0LDB4RTYsMHhE
MCwweEJDLDB4MjAsMHhFQSwweDdGLDB4NTUsMHhGNCwweERELDB4QUYsMHhCQywweDAwLDB4QUEs
MHhGRiwweDU1LAorICAgIDB4QjMsMHhENSwweEIwLDB4QkMsMHgwMCwweEEyLDB4RkYsMHg1NSww
eEIzLDB4RDUsMHg4RiwweEI0LDB4MDAsMHhBQSwweERGLDB4NTUsCisgICAgMHg5MiwweEQ1LDB4
NkYsMHhBQywweDAwLDB4QUEsMHhGRiwweDU1LDB4NzIsMHhDRCwweDZFLDB4QUMsMHgwMCwweEFB
LDB4RkYsMHg1RCwKKyAgICAweDUyLDB4QzUsMHg0RSwweEFDLDB4MDAsMHhBQSwweEZFLDB4NTcs
MHgzMSwweEM1LDB4MkUsMHhBNCwweDJBLDB4QkEsMHhGNywweDVELAorICAgIDB4RjAsMHhCQyww
eDJELDB4QTQsMHhFMCwweEZBLDB4RkYsMHhENSwweDhGLDB4QjQsMHgyRCwweEE0LDB4QzgsMHhF
OCwweEJBLDB4QjcsCisgICAgMHg1MiwweEM1LDB4MkQsMHhBNCwweEZELDB4QkQsMHhBRiwweDJG
LDB4RDQsMHhENSwweEQwLDB4QjQsMHhGNSwweEFGLDB4MEEsMHgwMiwKKyAgICAweEQ0LDB4RDUs
MHhGMCwweEI0LDB4RDUsMHhFRSwweEE4LDB4QTAsMHg5MywweENELDB4MzEsMHhCRCwweEI1LDB4
QUYsMHg4QSwweEFFLAorICAgIDB4NzMsMHhDRCwweEYwLDB4QjQsMHhBMCwweEUyLDB4RkEsMHg1
RiwweDUyLDB4QzUsMHhCMCwweEI0LDB4RTIsMHhGQSwweDdFLDB4NUYsCisgICAgMHg4NCwweDU5
LDB4NDMsMHg1OSwweEQ3LDB4RTUsMHhCRiwweENELDB4ODQsMHg1OSwweDQzLDB4NTEsMHg4MSww
eDAyLDB4OEMsMHhBQSwKKyAgICAweDg0LDB4NTksMHg2NCwweDU5LDB4NDEsMHhFMCwweDJCLDB4
MUEsMHg4NCwweDU5LDB4NDMsMHg1MSwweDhBLDB4OEEsMHhGOCwweEQ4LAorICAgIDB4NjQsMHg1
OSwweDIzLDB4NTEsMHgxRSwweDJFLDB4MkEsMHhGQSwweDg0LDB4NTksMHgyMiwweDUxLDB4Q0Us
MHhFQSwweEZBLDB4OTcsCisgICAgMHg2NCwweDU5LDB4MjMsMHg0OSwweEZELDB4OEEsMHhDQSww
eEFBLDB4NjMsMHg1OSwweDAyLDB4NDksMHg5RSwweEFCLDB4MDIsMHgwQSwKKyAgICAweDQzLDB4
NTEsMHgyMiwweDUxLDB4ODIsMHhGRiwweEY4LDB4RDgsMHg0MywweDU5LDB4MjIsMHg0OSwweEVC
LDB4QUQsMHhFQiwweEVFLAorICAgIDB4NjMsMHg1OSwweDIzLDB4NTEsMHhENSwweEY1LDB4QUYs
MHgwQiwweDg0LDB4NjEsMHg0MywweDU5LDB4ODcsMHgyMywweDhCLDB4QUYsCisgICAgMHg4NCww
eDYxLDB4NDMsMHg1OSwweDRBLDB4ODAsMHhDMCwweDAyLDB4QTQsMHg2MSwweDYzLDB4NTksMHhG
RiwweDVCLDB4RjEsMHg4MCwKKyAgICAweEE0LDB4NjEsMHg2MywweDU5LDB4QUIsMHg5RCwweEZG
LDB4RkEsMHhBNSwweDYxLDB4NDMsMHg1OSwweDJBLDB4MEUsMHgyOCwweDI4LAorICAgIDB4QTQs
MHg2MSwweDQzLDB4NTksMHhGOCwweDdFLDB4NkUsMHhFRiwweDYzLDB4NTksMHg0MywweDU5LDB4
NjIsMHgyMCwweDI4LDB4OEEsCisgICAgMHg2MywweDU5LDB4MjMsMHg1MSwweEEwLDB4QTAsMHhB
OCwweDc2LDB4NjQsMHg1OSwweDIzLDB4NTEsMHg1QSwweEJBLDB4RUUsMHhFOSwKKyAgICAweDIz
LDB4NTksMHg0MywweDUxLDB4QUEsMHhERSwweEZFLDB4QUYsMHg2NCwweDU5LDB4MDMsMHg1MSww
eDBBLDB4RUEsMHhCQiwweDVGLAorICAgIDB4ODQsMHg1OSwweDAyLDB4NTEsMHhBRiwweEY3LDB4
RkYsMHhGRCwweEM1LDB4NjksMHgyMywweDUxLDB4MEEsMHhGRiwweDU1LDB4NTcsCisgICAgMHg4
NywweDgyLDB4MjMsMHg1MSwweDIyLDB4M0YsMHhGNSwweDU1LDB4QzgsMHg4QSwweDY0LDB4NTks
MHgyMiwweDhBLDB4MkYsMHgyNSwKKyAgICAweEVCLDB4QUIsMHhFNywweDgyLDB4MkQsMHgyQiww
eDBCLDB4MEEsMHhFQywweEFCLDB4OEEsMHg5QiwweEY4LDB4NjgsMHg2QSwweDdFLAorICAgIDB4
OEEsMHg5QiwweDZBLDB4OUIsMHhCMCwweDBDLDB4MDcsMHg3RiwweEFCLDB4OUIsMHg0QSwweDlC
LDB4RkYsMHg3RiwweEY2LDB4QUYsCisgICAgMHhBQiwweDlCLDB4NEEsMHg5MywweEFCLDB4QUYs
MHhCRSwweDJFLDB4QUIsMHhBMywweDZBLDB4OUIsMHg2QiwweDZFLDB4REEsMHgwOCwKKyAgICAw
eENDLDB4QTMsMHgyOSwweDkzLDB4NTcsMHhGRiwweEZBLDB4QTgsMHgyOSwweDkzLDB4NjYsMHg3
MiwweDdFLDB4N0UsMHhGOCwweEY4LAorICAgIDB4ODYsMHg3QSwweEM1LDB4NjEsMHg1QiwweDdB
LDB4RjgsMHhGOCwweEU2LDB4NjEsMHg0NCwweDQ5LDB4NUUsMHhGQSwweEZBLDB4NzgsCisgICAg
MHg0NCwweDQ5LDB4RTIsMHgzOCwweDdBLDB4NzgsMHg1QSwweDZFLDB4MDMsMHg0MSwweEEyLDB4
MzAsMHhGRSwweEVCLDB4Q0UsMHhBRSwKKyAgICAweDA0LDB4MzksMHhDMiwweDM4LDB4REQsMHhG
RCwweEYzLDB4QUIsMHgwMywweDM5LDB4QzIsMHgzOCwweDJCLDB4QkQsMHgzNSwweDk1LAorICAg
IDB4NjQsMHg0OSwweDAzLDB4NDEsMHhGRiwweEZELDB4QkYsMHgwRiwweDY1LDB4NDksMHgwMyww
eDQxLDB4NTcsMHhGQSwweDdBLDB4RTAsCisgICAgMHgyMywweDQxLDB4RTMsMHgzOCwweDAyLDB4
NkIsMHg1OCwweDVDLDB4NjQsMHg0OSwweEUzLDB4MzgsMHgwQSwweEJELDB4QUYsMHhCRiwKKyAg
ICAweDQ0LDB4NDksMHgyNCwweDQxLDB4NDAsMHg3OCwweDU2LDB4NUEsMHgyMywweDQxLDB4QzIs
MHgzOCwweEFBLDB4ODgsMHgyOCwweDFFLAorICAgIDB4NDQsMHg0OSwweDAzLDB4NDEsMHg3Qiww
eEMzLDB4MDgsMHgwMywweDY1LDB4NDksMHhFMywweDM4LDB4N0YsMHhEQiwweEVFLDB4OEEsCisg
ICAgMHg0MywweDQxLDB4MDQsMHg0MSwweEFBLDB4RTksMHg4QSwweEFCLDB4NDQsMHg0MSwweDAz
LDB4NDEsMHhBQSwweEJBLDB4QkYsMHg1NSwKKyAgICAweEE1LDB4NTEsMHgyMywweDQxLDB4MDMs
MHgwQiwweDJELDB4QkQsMHhBNiwweDUxLDB4MjQsMHg0OSwweEY4LDB4RjgsMHhFRSwweERGLAor
ICAgIDB4QTUsMHg1OSwweDIzLDB4NDksMHhCNywweDM3LDB4MkYsMHhCRiwweDA2LDB4NjIsMHg0
MywweDQ5LDB4N0YsMHg3RSwweDdBLDB4QTIsCisgICAgMHhBNSwweDU5LDB4MjMsMHg0OSwweEQ3
LDB4REYsMHg3RSwweEJDLDB4RTUsMHg2MSwweDI0LDB4NDksMHgzRiwweEJELDB4QkQsMHhGRiwK
KyAgICAweDQ3LDB4NkEsMHg2NCwweDU5LDB4OEEsMHgyQSwweDJCLDB4MkQsMHgyNywweDZBLDB4
QTUsMHg1OSwweDdBLDB4RkEsMHhGMCwweDc4LAorICAgIDB4QzYsMHg1OSwweDI0LDB4NDksMHhG
RSwweEZBLDB4RTgsMHg3OCwweDQ0LDB4NDksMHhDMiwweDM4LDB4N0MsMHg3MCwweDUwLDB4N0Es
CisgICAgMHhFMywweDM4LDB4QTIsMHgzMCwweEFFLDB4QUEsMHhBRSwweDJFLDB4MjMsMHgzOSww
eEUzLDB4MzgsMHhENSwweEU1LDB4QUQsMHgzQiwKKyAgICAweDQ0LDB4NDEsMHhFMywweDM4LDB4
RjksMHhCRiwweDJGLDB4QUUsMHgyMywweDQxLDB4MDMsMHgzOSwweDdGLDB4NUEsMHhCMCwweDgw
LAorICAgIDB4NDMsMHg0OSwweEUzLDB4NDAsMHhGNywweEZELDB4RkUsMHhFOCwweDAzLDB4NDEs
MHgyMywweDM5LDB4RTAsMHhBMCwweEFBLDB4MkMsCisgICAgMHgyNCwweDQ5LDB4RTMsMHg0MCww
eEEyLDB4NzgsMHhFQSwweEFCLDB4MjQsMHg0OSwweEUzLDB4NDAsMHgwMCwweDI3LDB4MkIsMHgw
QSwKKyAgICAweDY0LDB4NTEsMHgyMywweDQ5LDB4RjksMHhCMiwweEI3LDB4MjUsMHg2NCwweDUx
LDB4MDMsMHg0MSwweEFFLDB4RkIsMHg5RSwweEI4LAorICAgIDB4NjUsMHg1MSwweDIzLDB4NDEs
MHg1QywweDdGLDB4QUEsMHhBQiwweDY0LDB4NDksMHgyMywweDQ5LDB4QTUsMHgwNSwweDg3LDB4
QUQsCisgICAgMHhBNSwweDU5LDB4MjMsMHg0MSwweDJCLDB4QUEsMHhGRSwweDU2LDB4QTUsMHg1
MSwweDAzLDB4NDEsMHhBOCwweEJGLDB4RkYsMHg1RiwKKyAgICAweDY0LDB4NDksMHgyMywweDQx
LDB4QUIsMHgwQSwweDA4LDB4ODMsMHg4NSwweDQ5LDB4MjMsMHg0MSwweERGLDB4RUIsMHhFMCww
eEVBLAorICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHhFQSwweDRCLDB4N0EsMHg3QSwweDIzLDB4
MzksMHhDMSwweDM4LDB4QTgsMHg3QSwweDdCLDB4RkEsCisgICAgMHgyNCwweDM5LDB4QzIsMHgz
MCwweEZFLDB4RkUsMHhGQiwweEFBLDB4MjMsMHg0MSwweDAzLDB4MzksMHg5NSwweDNELDB4Mjks
MHgwRCwKKyAgICAweDY0LDB4NDksMHgwMywweDQxLDB4NUQsMHhGQiwweEVFLDB4OEEsMHg4NSww
eDQ5LDB4MjQsMHg0MSwweEY4LDB4QUIsMHhCOSwweEJCLAorICAgIDB4QTUsMHg0OSwweDAzLDB4
MzksMHg1RiwweEY2LDB4RUUsMHhBOCwweDQ0LDB4NDEsMHgwMywweDQxLDB4MkYsMHhCQiwweEI4
LDB4QkUsCisgICAgMHg0NCwweDQ5LDB4MDMsMHgzOSwweEFBLDB4REMsMHhGNCwweEZFLDB4NDQs
MHg0MSwweDAzLDB4NDEsMHhBRiwweDJFLDB4QjgsMHg1NiwKKyAgICAweDQ0LDB4NDEsMHgwMiww
eDQxLDB4QUEsMHgwQSwweDg4LDB4MkUsMHg2NCwweDQ5LDB4MjMsMHg0MSwweDJELDB4MEYsMHgw
QiwweDBBLAorICAgIDB4NjQsMHg0OSwweDIzLDB4NDEsMHhENiwweDdFLDB4RjAsMHhCMCwweDQ0
LDB4NDksMHgwMywweDQxLDB4QUYsMHhGRiwweEZGLDB4QUMsCisgICAgMHg4NSwweDUxLDB4MDMs
MHgzOSwweEFBLDB4OEEsMHhBRCwweEI1LDB4NjQsMHg0OSwweDAzLDB4NDEsMHg3OCwweEEwLDB4
QTAsMHhBMiwKKyAgICAweDY0LDB4NTEsMHgyMywweDQxLDB4RjksMHgzRCwweEFBLDB4M0IsMHhF
NiwweDYxLDB4NjQsMHg1MSwweDhCLDB4MEYsMHhBNSwweEQ1LAorICAgIDB4NDYsMHg3MiwweEM1
LDB4NjEsMHhGNywweEJGLDB4OEIsMHgyRCwweDY3LDB4NzIsMHgwNSwweDYyLDB4RkUsMHg2Nyww
eDdGLDB4MkEsCisgICAgMHg4NywweDcyLDB4MDUsMHg2QSwweEVCLDB4QUQsMHhBRCwweDBBLDB4
NjcsMHg3MiwweEM1LDB4NjEsMHhGRSwweEZFLDB4QkEsMHg2OCwKKyAgICAweDg3LDB4N0EsMHhF
NSwweDYxLDB4M0YsMHhBRiwweEJGLDB4QUQsMHhBOCwweDdBLDB4NDYsMHg3MiwweDJBLDB4OUIs
MHhFRCwweEVCLAorICAgIDB4MDksMHg4QiwweDg3LDB4N0EsMHgyNiwweDM2LDB4M0QsMHhGNSww
eDcyLDB4RDUsMHgyQSwweDhCLDB4MkYsMHgwRCwweDJELDB4QkQsCisgICAgMHhENCwweERELDB4
MzEsMHhDRCwweEMwLDB4NzgsMHg3QSwweDdCLDB4MzEsMHhDRCwweENGLDB4QkMsMHhGQSwweDc4
LDB4RjIsMHg3RSwKKyAgICAweEYwLDB4QzQsMHhDRiwweEJDLDB4REEsMHgzRiwweDVELDB4N0Ys
MHgxMCwweEM1LDB4Q0YsMHhCQywweDJGLDB4MjUsMHgxNywweDA3LAorICAgIDB4MzEsMHhDRCww
eDEwLDB4QzUsMHg4RiwweDE1LDB4MzUsMHgzNSwweDMxLDB4Q0QsMHgxMCwweEM1LDB4MjAsMHhF
RSwweDNDLDB4QTgsCisgICAgMHg1MSwweENELDB4MTEsMHhDNSwweEFBLDB4QUIsMHhBRiwweDZF
LDB4RDMsMHhERCwweDMxLDB4QzUsMHgwRCwweDBELDB4MjUsMHhCNSwKKyAgICAweEQzLDB4REQs
MHhBRiwweEJDLDB4N0MsMHhGOCwweDU4LDB4NzAsMHhEMCwweEJDLDB4OEYsMHhCNCwweEM4LDB4
RjIsMHg2RiwweDU3LAorICAgIDB4QUYsMHhCQywweDZFLDB4QjQsMHg4MiwweDcyLDB4N0IsMHhG
RiwweEFGLDB4QjQsMHg0RCwweEFDLDB4ODAsMHg3MCwweDdBLDB4RUEsCisgICAgMHhBRiwweEJD
LDB4MkQsMHhBQywweEE4LDB4RkIsMHg3QiwweDdGLDB4OEYsMHhCNCwweDJELDB4QUMsMHgyMiww
eDdCLDB4NzcsMHg3RCwKKyAgICAweDZFLDB4QUMsMHgwRCwweEE0LDB4MjgsMHgwQSwweEZCLDB4
NTcsMHg2RSwweEFDLDB4MEMsMHhBNCwweDYwLDB4RkEsMHg3RSwweDVELAorICAgIDB4QjAsMHhC
NCwweDBELDB4OUMsMHhGRiwweEQ1LDB4RDUsMHgwQiwweDcyLDB4QzUsMHgwRCwweDlDLDB4NUQs
MHhERCwweEJELDB4MkEsCisgICAgMHg5MywweENELDB4MkUsMHhBNCwweDc1LDB4RkQsMHhBQSww
eDg4LDB4NzIsMHhDNSwweDRFLDB4QUMsMHhENSwweEFCLDB4MkEsMHgyMiwKKyAgICAweDkzLDB4
Q0QsMHgxMSwweEJELDB4QTUsMHhBRiwweDBBLDB4ODAsMHhCMywweEQ1LDB4NTMsMHhDNSwweDBB
LDB4QTIsMHhBMiwweEZGLAorICAgIDB4RDUsMHhENSwweDUyLDB4QzUsMHhFMiwweERFLDB4RkYs
MHg1RiwweDczLDB4QzUsMHhGMSwweEJDLDB4OEEsMHhDOCwweEY2LDB4NTYsCisgICAgMHgzMiww
eEM1LDB4QjAsMHhCNCwweEU4LDB4RUEsMHg2QSwweDZBLDB4RjEsMHhCNCwweDZGLDB4QUMsMHhG
QywweERGLDB4NTcsMHg3NywKKyAgICAweDg0LDB4NjEsMHg0MywweDU5LDB4RkUsMHhGQywweDc4
LDB4RkQsMHhBNSwweDYxLDB4NDMsMHg1MSwweEI3LDB4QUUsMHg3MywweEZBLAorICAgIDB4ODQs
MHg1OSwweDIzLDB4NTEsMHhBMiwweEFBLDB4QUYsMHhERSwweDY0LDB4NTksMHgyMywweDUxLDB4
QjgsMHhBRSwweDdFLDB4NUYsCisgICAgMHg2NCwweDU5LDB4MjMsMHg1MSwweEZBLDB4REUsMHhG
RiwweEJFLDB4ODQsMHg1OSwweDIyLDB4NTEsMHhFNywweEVGLDB4RTIsMHhGRSwKKyAgICAweDg0
LDB4NTksMHg0MywweDUxLDB4NTcsMHg1QywweDc1LDB4NTUsMHg2MywweDU5LDB4MjMsMHg1MSww
eEVFLDB4QUEsMHhDQywweEJCLAorICAgIDB4NjMsMHg1OSwweDIzLDB4NTEsMHhCQiwweEFGLDB4
RkYsMHhGRCwweDYzLDB4NTksMHgyMywweDUxLDB4RDcsMHhENiwweEJDLDB4M0EsCisgICAgMHg4
NCwweDU5LDB4NDMsMHg1OSwweDg1LDB4QjUsMHhGRCwweEY2LDB4QTQsMHg2MSwweDQzLDB4NTks
MHhCNSwweEFGLDB4QjcsMHhENSwKKyAgICAweEE0LDB4NjEsMHg2MywweDU5LDB4QkYsMHhERSww
eEZGLDB4NzcsMHhBNCwweDYxLDB4NjQsMHg1OSwweDhBLDB4RUYsMHhGQiwweEVELAorICAgIDB4
QTQsMHg2MSwweDQzLDB4NTksMHg4MiwweENFLDB4RTIsMHg0MiwweEE1LDB4NjEsMHg0MywweDU5
LDB4RkMsMHg1RiwweDVFLDB4N0YsCisgICAgMHg2MywweDU5LDB4MjIsMHg1MSwweDgwLDB4QzAs
MHgzQiwweEI2LDB4ODQsMHg1OSwweDIzLDB4NTEsMHhFRiwweENBLDB4RUIsMHg3QSwKKyAgICAw
eDQzLDB4NTksMHgyMywweDUxLDB4RjAsMHgzRiwweDM4LDB4RUEsMHg2NCwweDU5LDB4MjMsMHg1
MSwweEVCLDB4RUEsMHhGQSwweDZELAorICAgIDB4NDMsMHg1OSwweDAzLDB4NTEsMHhCQSwweDVB
LDB4NkYsMHhGRiwweDIzLDB4NTEsMHhFMiwweDQ4LDB4QkIsMHhGRiwweDJCLDB4MEEsCisgICAg
MHg0NCwweDUxLDB4MDIsMHg0OSwweDJGLDB4QUUsMHg3QSwweEVGLDB4MjMsMHg1MSwweEUyLDB4
NDgsMHhBMCwweDQwLDB4QTAsMHhCMCwKKyAgICAweDYzLDB4NTksMHgwMywweDUxLDB4RDUsMHhE
NSwweEE3LDB4MzcsMHhBQiwweEEzLDB4NjMsMHg1OSwweEI1LDB4MkQsMHgyRCwweDBCLAorICAg
IDB4RUMsMHhBQiwweDhBLDB4OUIsMHg4RCwweEVCLDB4QTIsMHhGRSwweENDLDB4QTMsMHg0QSww
eDlCLDB4RTgsMHhFMiwweEZFLDB4NTYsCisgICAgMHhBQiwweEEzLDB4NkEsMHg5QiwweDU3LDB4
N0IsMHhFRSwweEE3LDB4QUIsMHhBMywweDZBLDB4OUIsMHgyQiwweEZELDB4N0YsMHhFOCwKKyAg
ICAweEFCLDB4QTMsMHg2QSwweDlCLDB4QTYsMHg3OCwweDc5LDB4NkIsMHhDQywweEEzLDB4OEIs
MHg5QiwweDJFLDB4QUEsMHhENSwweDU1LAorICAgIDB4Q0MsMHhBQiwweDZCLDB4OUIsMHhFMiww
eDYyLDB4RkIsMHhGQiwweDQ5LDB4OTMsMHg4NywweDdBLDB4RkUsMHg3OCwweEZFLDB4NzYsCisg
ICAgMHg4NiwweDdBLDB4QzUsMHg2MSwweDc4LDB4NzgsMHhFMCwweEUwLDB4QzUsMHg2MSwweDQ0
LDB4NTEsMHhGQSwweEZDLDB4N0MsMHg3QywKKyAgICAweDY0LDB4NTEsMHgwMiwweDQxLDB4N0Us
MHhFMCwweEJDLDB4QUIsMHg0NCwweDQ5LDB4RTIsMHgzOCwweDVGLDB4RkEsMHgyQSwweDIwLAor
ICAgIDB4NDQsMHg0OSwweEUzLDB4MzgsMHg1RCwweERGLDB4NzYsMHg3OCwweDIzLDB4NDEsMHhB
MSwweDMwLDB4RkYsMHhCRSwweDJFLDB4MkIsCisgICAgMHg4NSwweDQ5LDB4MjMsMHg0MSwweEE5
LDB4MzUsMHhCRCwweEFCLDB4QTUsMHg0OSwweDQ0LDB4NDksMHg3RiwweEVDLDB4RkYsMHg2QiwK
KyAgICAweDY0LDB4NDksMHhFMywweDM4LDB4N0UsMHhGQSwweEY4LDB4RUEsMHgyMywweDQxLDB4
QzIsMHgzOCwweDhCLDB4RkIsMHhEQSwweEJFLAorICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHhB
OSwweDgzLDB4QUQsMHhBNSwweDQ0LDB4NDEsMHgwMywweDQxLDB4NTYsMHg1NiwweDlFLDB4OUUs
CisgICAgMHg4NSwweDUxLDB4MjMsMHg0MSwweEFELDB4QTUsMHhFRCwweDdGLDB4NDQsMHg0OSww
eEUyLDB4MzgsMHg4OCwweEZFLDB4QkYsMHhBNywKKyAgICAweDQ0LDB4NDEsMHgwMywweDQxLDB4
RUIsMHhBQiwweDJCLDB4NUYsMHgyMywweDQxLDB4MDMsMHgzOSwweDdBLDB4RjgsMHgzQywweDNF
LAorICAgIDB4NDQsMHg0OSwweEUyLDB4MzgsMHg4QiwweEFCLDB4NUEsMHhGNywweDQ0LDB4NDks
MHhFMiwweDQwLDB4RkMsMHhERCwweDU1LDB4NTUsCisgICAgMHg2NCwweDUxLDB4RTIsMHg0MCww
eDJCLDB4M0QsMHgzRCwweEJGLDB4RTYsMHg2MSwweDg1LDB4NTksMHgwMiwweDAxLDB4REIsMHg2
RCwKKyAgICAweEE1LDB4NTksMHgyNCwweDQ5LDB4QjgsMHhFOCwweEI4LDB4REEsMHg2NCwweDUx
LDB4MjMsMHg0OSwweEUwLDB4QTAsMHhBMiwweEZFLAorICAgIDB4QzUsMHg1OSwweDQzLDB4NDks
MHgwRiwweEE1LDB4RjUsMHg1NywweDA2LDB4NkEsMHg2NCwweDUxLDB4QzIsMHhFQSwweEVELDB4
RDUsCisgICAgMHhDNSwweDU5LDB4NDQsMHg0OSwweDVGLDB4NTgsMHg2OCwweEEyLDB4NDQsMHg0
OSwweEEyLDB4MzAsMHhGQSwweDVDLDB4REMsMHg1QywKKyAgICAweEUzLDB4MzgsMHhBMiwweDMw
LDB4MkUsMHhCRiwweEY3LDB4N0QsMHgyNCwweDM5LDB4QzIsMHgzMCwweEFBLDB4RUQsMHhBMSww
eEIxLAorICAgIDB4MjMsMHg0MSwweEUzLDB4MzgsMHgwOCwweDgyLDB4RjYsMHhCRSwweDQ0LDB4
NDEsMHgwMywweDQxLDB4REYsMHgzNSwweDM1LDB4QjUsCisgICAgMHg2NSwweDQ5LDB4MjQsMHg0
MSwweEZGLDB4QkUsMHhBRSwweEU3LDB4NDQsMHg0OSwweDAzLDB4NDEsMHhGRSwweEFBLDB4MjAs
MHgwMCwKKyAgICAweDY0LDB4NDksMHgyMywweDQ5LDB4NUQsMHg3RSwweDVGLDB4RkIsMHg2NCww
eDUxLDB4MDMsMHg0MSwweEY3LDB4QUQsMHhBMiwweDgyLAorICAgIDB4QTYsMHg1OSwweDQ0LDB4
NDksMHhGNSwweEJELDB4QUIsMHgwMiwweEM2LDB4NTksMHg2NCwweDUxLDB4NTcsMHhERiwweEZB
LDB4NkMsCisgICAgMHhBNSwweDUxLDB4MjMsMHg0OSwweEZGLDB4N0EsMHhGOCwweEYyLDB4NDQs
MHg0OSwweDAzLDB4NDEsMHgyMCwweDZBLDB4RkEsMHg3NywKKyAgICAweDY0LDB4NDksMHgwMyww
eDQxLDB4RjgsMHhBRSwweEVCLDB4RjcsMHgyMywweDQxLDB4MDMsMHg0MSwweDYyLDB4QTMsMHhD
MSwweEMyLAorICAgIDB4NDQsMHg0OSwweEUyLDB4MzgsMHgwMiwweDBGLDB4MkYsMHhCNywweDg0
LDB4NDksMHg0NCwweDQ5LDB4N0QsMHg0RiwweERELDB4NTcsCisgICAgMHg0NCwweDQ5LDB4MDMs
MHg0MSwweDZFLDB4MzYsMHhCQSwweEZFLDB4NDMsMHg0MSwweDAzLDB4NDEsMHg1RCwweDU2LDB4
REUsMHg1RiwKKyAgICAweDIzLDB4NDEsMHhFMywweDM4LDB4MzcsMHhCQSwweEEyLDB4QTIsMHgy
NCwweDQxLDB4RTMsMHgzOCwweDBBLDB4MkIsMHhCRCwweEZGLAorICAgIDB4NjQsMHg0OSwweDAz
LDB4MzksMHhDQSwweEVCLDB4QUYsMHhCRCwweDg1LDB4NDksMHg0NCwweDQ5LDB4RDcsMHgzRCww
eEI3LDB4QkQsCisgICAgMHhBNSwweDUxLDB4NjQsMHg0OSwweEI2LDB4QUYsMHgyQiwweDJBLDB4
ODUsMHg0OSwweDIzLDB4NDEsMHg1NywweEY3LDB4N0MsMHhFMCwKKyAgICAweDQzLDB4NDEsMHgw
MywweDM5LDB4NzgsMHg1NywweDU1LDB4RjYsMHgyMywweDQxLDB4MDMsMHgzOSwweERGLDB4MzUs
MHhBNSwweDdELAorICAgIDB4NjQsMHg0OSwweDAzLDB4MzksMHhBNywweDJCLDB4MkYsMHgyRCww
eEE1LDB4NDksMHg0NCwweDQ5LDB4QUYsMHhGRiwweEJELDB4M0YsCisgICAgMHg4NSwweDUxLDB4
NDQsMHg0OSwweEE2LDB4QkYsMHhGRiwweDZFLDB4QTUsMHg1MSwweDQ0LDB4NDksMHhERiwweEVG
LDB4RkYsMHg5NSwKKyAgICAweDg1LDB4NTEsMHgyMywweDQxLDB4RDUsMHhGQiwweEY4LDB4MDAs
MHg4NSwweDUxLDB4MjMsMHg0MSwweEJGLDB4RDUsMHg1RiwweERDLAorICAgIDB4NjQsMHg1MSww
eDQ0LDB4NDksMHhBMiwweDdELDB4RDUsMHg1NSwweDY0LDB4NTEsMHg0NCwweDQ5LDB4MzAsMHgz
MiwweDNFLDB4MzIsCisgICAgMHgwNiwweDZBLDB4NDQsMHg1MSwweDBCLDB4QUYsMHhGRiwweEY1
LDB4ODgsMHg3MiwweDg1LDB4NTksMHhBQSwweDBBLDB4QkYsMHhGNSwKKyAgICAweEE4LDB4N0Es
MHgwNiwweDZBLDB4ODgsMHg4MCwweEFCLDB4QTksMHg4NywweDcyLDB4MjYsMHg2QSwweDc4LDB4
QjgsMHgyRiwweEFFLAorICAgIDB4ODgsMHg3QSwweDA1LDB4NjIsMHhCRCwweEFGLDB4MDgsMHgw
MiwweEM4LDB4ODIsMHg4OCwweDdBLDB4RDUsMHgxRCwweDM1LDB4RkYsCisgICAgMHhFOSwweDgy
LDB4ODcsMHg3QSwweDk3LDB4QkUsMHg4QSwweEFCLDB4NEUsMHhCNCwweEM4LDB4ODIsMHgyRCww
eDNELDB4QkQsMHgzNSwKKyAgICAweEIzLDB4RDUsMHhBRiwweEJDLDB4QTIsMHhFMywweEE5LDB4
ODksMHgzMSwweENELDB4RDAsMHhCQywweDdFLDB4REUsMHg3RSwweEY4LAorICAgIDB4RjAsMHhD
NCwweEFGLDB4QkMsMHhGRSwweEVBLDB4RkIsMHhGRiwweDEwLDB4QzUsMHhCMCwweEJDLDB4QUIs
MHhBRiwweEE5LDB4M0IsCisgICAgMHgzMSwweENELDB4RjAsMHhDNCwweEE1LDB4RTUsMHhBRiww
eEFGLDB4NTEsMHhDRCwweDEwLDB4QzUsMHg3RiwweDZELDB4Q0IsMHg4RiwKKyAgICAweDUxLDB4
Q0QsMHhGMCwweEM0LDB4QTgsMHhBRSwweEI3LDB4QUEsMHg5MiwweENELDB4RjAsMHhDNCwweDI3
LDB4QkYsMHhGRCwweDdFLAorICAgIDB4RDMsMHhERCwweDZGLDB4QjQsMHhGMCwweDZBLDB4N0Us
MHg3RiwweDhGLDB4QjQsMHgyRCwweEFDLDB4MEEsMHhDMCwweDZFLDB4RkYsCisgICAgMHg4Riww
eEI0LDB4MkQsMHhBQywweDgwLDB4QUIsMHg2RiwweDdGLDB4NkUsMHhBQywweDJELDB4QUMsMHgz
MCwweDdFLDB4NzUsMHg3RCwKKyAgICAweDZGLDB4QUMsMHgwRCwweEE0LDB4QTgsMHhERiwweERE
LDB4NUQsMHg2RSwweEI0LDB4RUQsMHg5QiwweEVBLDB4RUIsMHhGRCwweDJGLAorICAgIDB4NzMs
MHhDRCwweDBELDB4QTQsMHg1NSwweDU1LDB4RjUsMHgyQiwweDczLDB4Q0QsMHgyRCwweEE0LDB4
RDUsMHgzNSwweDBCLDB4MDAsCisgICAgMHhCMywweENELDB4RjAsMHhCQywweEI1LDB4QUIsMHgy
QSwweEEwLDB4OTMsMHhDRCwweDUyLDB4QzUsMHgyMywweEMyLDB4RjIsMHg3RCwKKyAgICAweDkz
LDB4Q0QsMHgxMSwweEJELDB4QTAsMHhFMCwweDdCLDB4REIsMHg3MywweENELDB4MTEsMHhCRCww
eDJGLDB4QUYsMHgyRiwweDBELAorICAgIDB4QjQsMHhENSwweDUyLDB4QzUsMHg2QSwweEMzLDB4
OEIsMHhBMiwweDczLDB4Q0QsMHhCMCwweEI0LDB4QTgsMHhEOCwweDc4LDB4RTgsCisgICAgMHgz
MiwweEM1LDB4OEYsMHhBQywweDAwLDB4OEEsMHhGOSwweDU1LDB4MzIsMHhCRCwweEQwLDB4QjQs
MHg3NCwweEY3LDB4QkIsMHhBOSwKKyAgICAweDExLDB4QkQsMHg5MCwweEFDLDB4RUIsMHhGQSww
eDZDLDB4RkUsMHhCMCwweEI0LDB4NkYsMHhBQywweEJBLDB4RjcsMHhBRiwweEJCLAorICAgIDB4
NjMsMHg1OSwweDAyLDB4NDksMHgwQSwweDc4LDB4MDIsMHgwOCwweDg0LDB4NTksMHg0MywweDUx
LDB4N0IsMHg1QSwweDcyLDB4NUUsCisgICAgMHg0MywweDUxLDB4MDMsMHg1MSwweDk4LDB4M0Es
MHgyMiwweDJBLDB4NjQsMHg1OSwweDAyLDB4NDksMHhGQywweERFLDB4QkEsMHhGNywKKyAgICAw
eDQzLDB4NTEsMHhFMywweDQ4LDB4MDAsMHg4MCwweEFBLDB4Q0EsMHg0MywweDUxLDB4MjMsMHg1
MSwweEUwLDB4QzIsMHgxOSwweDJCLAorICAgIDB4NjMsMHg1MSwweDIzLDB4NTEsMHhGQSwweEY4
LDB4QUUsMHg3MywweDY0LDB4NTksMHgyMywweDUxLDB4QkYsMHhGNiwweEZFLDB4NTcsCisgICAg
MHg2MywweDU5LDB4MDMsMHg1MSwweEJFLDB4REYsMHhCRiwweDI4LDB4ODQsMHg2MSwweDQzLDB4
NTksMHgwRCwweDdCLDB4RkIsMHhGQiwKKyAgICAweDg0LDB4NjEsMHg0MywweDU5LDB4RkMsMHhG
RSwweEJGLDB4RkYsMHg4NCwweDYxLDB4NDMsMHg1OSwweEVGLDB4QkQsMHhCQiwweEVGLAorICAg
IDB4ODMsMHg2MSwweDY0LDB4NTksMHhGRCwweEZGLDB4NUIsMHg3RiwweEE0LDB4NjEsMHg0Myww
eDU5LDB4QUQsMHhBQiwweEYyLDB4QkIsCisgICAgMHg4NCwweDYxLDB4NDMsMHg1OSwweEYwLDB4
NUQsMHg3RiwweDdGLDB4NjMsMHg1OSwweDIzLDB4NTEsMHg4RSwweEFGLDB4MjIsMHgyMiwKKyAg
ICAweDYzLDB4NTksMHgyMiwweDUxLDB4RjIsMHg4MCwweEMwLDB4QUYsMHg0MywweDU5LDB4MDMs
MHg1MSwweDgwLDB4RUEsMHhBRSwweDAwLAorICAgIDB4NjQsMHg1OSwweDAzLDB4NTEsMHhBQSww
eEFBLDB4NkEsMHhFOCwweDY0LDB4NTksMHgwMywweDUxLDB4RTMsMHhFQSwweEZGLDB4N0YsCisg
ICAgMHgyMywweDUxLDB4RTIsMHg0OCwweDg4LDB4RTgsMHg3QSwweEZBLDB4NDMsMHg1MSwweDAy
LDB4NDksMHgyNSwweEQ5LDB4RDMsMHhGRCwKKyAgICAweDIzLDB4NTEsMHgwMiwweDQ5LDB4ODgs
MHhCMiwweDI4LDB4QTQsMHgyMywweDUxLDB4MDMsMHg0OSwweEMyLDB4QjIsMHhFMiwweDAyLAor
ICAgIDB4MjksMHg5MywweDQzLDB4NTksMHhENSwweEQ1LDB4QjUsMHgyRCwweEVDLDB4QUIsMHhD
NywweDhBLDB4MkQsMHgyOSwweDBBLDB4MjIsCisgICAgMHhDQywweEEzLDB4NkEsMHg5QiwweEEw
LDB4QjgsMHg2QywweDVFLDB4NkEsMHg5QiwweDRBLDB4OTMsMHg2NCwweDE0LDB4RTUsMHgyMiwK
KyAgICAweDhBLDB4OUIsMHg0OSwweDkzLDB4MzUsMHhFRCwweEZGLDB4N0UsMHg4QiwweDlCLDB4
NkEsMHg5QiwweDAyLDB4QkYsMHg3RCwweDU1LAorICAgIDB4OEIsMHg5QiwweDRBLDB4OUIsMHgw
MCwweEFBLDB4QUYsMHhCRiwweDhCLDB4OUIsMHg2QSwweDlCLDB4MjIsMHgyQSwweEQ3LDB4Mjcs
CisgICAgMHhBQywweEEzLDB4MDksMHg4QiwweEUwLDB4QUEsMHhGMCwweDVDLDB4RTgsMHg4QSww
eEE3LDB4N0EsMHg3QywweDU0LDB4RTQsMHhGNCwKKyAgICAweEM3LDB4ODIsMHg0NiwweDcyLDB4
NkUsMHg2QywweDc4LDB4RTgsMHg0NiwweDcyLDB4NDQsMHg1MSwweDc2LDB4NUUsMHg3QSwweEUw
LAorICAgIDB4NjQsMHg0OSwweDAzLDB4NDksMHhBOCwweERGLDB4RkYsMHhENiwweDQzLDB4NDks
MHgwMywweDQxLDB4MDAsMHg4QSwweDI5LDB4QUYsCisgICAgMHg0MywweDQ5LDB4RTMsMHgzOCww
eDdBLDB4N0UsMHhGRSwweEUyLDB4MjUsMHg0MSwweEUzLDB4NDAsMHgzNSwweDk1LDB4QjUsMHhG
RiwKKyAgICAweDg0LDB4NTEsMHgyNCwweDQxLDB4QUIsMHhCOSwweDJELDB4OTksMHhBNSwweDUx
LDB4NDQsMHg0OSwweDZBLDB4NjIsMHhFMywweEVBLAorICAgIDB4NjQsMHg0OSwweDAzLDB4NDEs
MHhGRSwweEZDLDB4RkUsMHg1RSwweDQ0LDB4NDksMHhFMywweDM4LDB4RDYsMHhGRSwweEJFLDB4
M0YsCisgICAgMHg0NCwweDQ5LDB4MjQsMHg0MSwweEY1LDB4NzYsMHg3OCwweDY4LDB4MjMsMHg0
MSwweEUzLDB4MzgsMHhBOCwweEI4LDB4OEUsMHhCOCwKKyAgICAweDQ0LDB4NDksMHgwMywweDQx
LDB4N0YsMHg3RCwweEJELDB4RUEsMHgyMywweDQxLDB4RTIsMHgzOCwweEI4LDB4QkEsMHhEOCww
eDVFLAorICAgIDB4NDQsMHg0MSwweEUzLDB4MzgsMHhGQSwweEZFLDB4RUYsMHgzRiwweDQ0LDB4
NDEsMHhFMiwweDQwLDB4RUYsMHhGNywweEFCLDB4QTgsCisgICAgMHg0NCwweDQxLDB4RTIsMHgz
OCwweEQ3LDB4N0YsMHhFQSwweEZBLDB4RTMsMHg0MCwweDAzLDB4MzksMHhBQSwweDhCLDB4QUYs
MHhGQiwKKyAgICAweDg1LDB4NTEsMHhFMywweDQwLDB4QkQsMHgyRCwweDJGLDB4MkYsMHhFNiww
eDYxLDB4ODQsMHg1MSwweDhELDB4QUQsMHhBRiwweEEzLAorICAgIDB4ODUsMHg1OSwweEUzLDB4
NDAsMHhGOCwweEQ4LDB4NzgsMHhCOCwweDQ0LDB4NTEsMHhFMywweDQwLDB4MEEsMHgwQiwweEJG
LDB4RjcsCisgICAgMHg2NCwweDUxLDB4MDMsMHg0OSwweEEyLDB4QTAsMHhBOSwweDM1LDB4NjQs
MHg1MSwweDIzLDB4NDksMHgwQSwweDBGLDB4MjcsMHhFNSwKKyAgICAweEE1LDB4NTksMHg0NCww
eDQ5LDB4OEEsMHhBMywweDhGLDB4QUQsMHg2NSwweDQ5LDB4QTIsMHgzMCwweDVDLDB4NUMsMHg3
OCwweEY4LAorICAgIDB4QzMsMHgzMCwweEEyLDB4MzAsMHhFRiwweEJBLDB4QjAsMHhDMCwweDAz
LDB4MzksMHhBMiwweDI4LDB4MkQsMHhBRiwweEY3LDB4QTcsCisgICAgMHgyMywweDQxLDB4RTMs
MHgzOCwweEZBLDB4M0QsMHhERCwweDdELDB4MDMsMHgzOSwweEEyLDB4MzAsMHgwMCwweDg4LDB4
QTgsMHhBNywKKyAgICAweDY1LDB4NDksMHgwMywweDM5LDB4QUQsMHhBRCwweEFELDB4MEQsMHg2
NCwweDUxLDB4MjMsMHg0OSwweEVBLDB4QTIsMHg2QiwweDdBLAorICAgIDB4NjQsMHg1MSwweDQ0
LDB4NDksMHgzRCwweEExLDB4MDIsMHgwMSwweDg1LDB4NTksMHg2NCwweDUxLDB4NjksMHhCOSww
eEFCLDB4MEEsCisgICAgMHhBNSwweDU5LDB4NDQsMHg1MSwweEE4LDB4MjgsMHhBQSwweEI2LDB4
QzYsMHg1OSwweDg1LDB4NTEsMHg1QSwweDYzLDB4REYsMHhENywKKyAgICAweDg1LDB4NTEsMHgy
MywweDQ5LDB4RjgsMHg1QSwweDdDLDB4NUMsMHgyNCwweDQxLDB4MDIsMHg0MSwweEJCLDB4M0Ys
MHgwQiwweDAwLAorICAgIDB4NDQsMHg0OSwweDAzLDB4NDEsMHhGRCwweEUyLDB4Q0EsMHhFOCww
eDQ0LDB4NDEsMHhFMiwweDM4LDB4RTIsMHhFQiwweEZCLDB4NUUsCisgICAgMHgyMywweDQxLDB4
RTIsMHgzOCwweDJCLDB4QjksMHhCRiwweEI5LDB4NDQsMHg0MSwweDAzLDB4NDEsMHgyQSwweEI3
LDB4QUYsMHhGQiwKKyAgICAweDIzLDB4NDEsMHgwMywweDQxLDB4MjgsMHgwOCwweEMwLDB4N0Is
MHgyMywweDQxLDB4MDMsMHgzOSwweEZELDB4Q0IsMHhCMiwweEUzLAorICAgIDB4MjMsMHg0MSww
eEMyLDB4MzAsMHhCOCwweEZDLDB4RjgsMHhBQSwweDAzLDB4NDEsMHhDMiwweDM4LDB4QTAsMHhB
RSwweEZBLDB4NzMsCisgICAgMHgyNCwweDQxLDB4RTMsMHgzOCwweEFCLDB4RkYsMHhCOSwweEI1
LDB4NjQsMHg0OSwweDAzLDB4MzksMHgwQiwweEJGLDB4QkQsMHhCNSwKKyAgICAweDg0LDB4NDks
MHgyMywweDQxLDB4MzIsMHhCRCwweEVBLDB4RkEsMHg4NSwweDQ5LDB4MjMsMHg0MSwweDgwLDB4
RUEsMHhERiwweDU1LAorICAgIDB4NDQsMHg0MSwweDAzLDB4NDEsMHhBOCwweEEwLDB4RTIsMHg3
QywweDQ0LDB4NDksMHhFMiwweDM4LDB4RUEsMHhBMiwweEIwLDB4OUYsCisgICAgMHg2NCwweDQ5
LDB4MDMsMHgzOSwweDM1LDB4RDUsMHg1NywweDVGLDB4NjQsMHg0OSwweDAyLDB4MzksMHgwMCww
eDNCLDB4QkIsMHhCRCwKKyAgICAweDg1LDB4NDksMHgwMywweDQxLDB4NjgsMHg3QSwweEJFLDB4
RjcsMHg2NCwweDQ5LDB4MDMsMHg0MSwweDJGLDB4M0QsMHhBQSwweDBBLAorICAgIDB4QTUsMHg1
MSwweDQ0LDB4NDksMHg4QSwweEZGLDB4RjUsMHg1RiwweEE1LDB4NTEsMHgyMywweDQ5LDB4REMs
MHhBOCwweEEyLDB4MEEsCisgICAgMHhBNSwweDU5LDB4MjMsMHg0OSwweERGLDB4RkIsMHhGQSww
eDJDLDB4ODUsMHg1MSwweDQ0LDB4NDksMHhBQiwweEJGLDB4OUUsMHhFQywKKyAgICAweEE1LDB4
NTksMHg0NCwweDUxLDB4QjUsMHhCRiwweEFCLDB4RkIsMHhBNSwweDU5LDB4NjQsMHg1MSwweEFC
LDB4RkYsMHg5NiwweEY1LAorICAgIDB4MDYsMHg2QSwweDY0LDB4NTksMHgyMywweDNGLDB4QkYs
MHhCQiwweDY3LDB4NzIsMHhFNiwweDYxLDB4MDAsMHgwMywweDhELDB4RjUsCisgICAgMHhBOCww
eDdBLDB4MDYsMHg2QSwweDBBLDB4RkIsMHhGRiwweEQ1LDB4QzksMHg4MiwweDQ2LDB4NkEsMHhB
MiwweDgyLDB4QUYsMHhCNSwKKyAgICAweEU5LDB4ODIsMHg4OCwweDdBLDB4M0YsMHhCNSwweEFG
LDB4QkEsMHgwRCwweEFDLDB4QzgsMHg4MiwweDM1LDB4MzUsMHhGRCwweDk1LAorICAgIDB4QjMs
MHhERCwweDBDLDB4QTQsMHg4QSwweDAzLDB4MDksMHgwRCwweDcyLDB4RDUsMHhDRiwweEJDLDB4
N0UsMHg1QywweDc4LDB4NzgsCisgICAgMHhDRiwweEJDLDB4QUYsMHhCQywweDk4LDB4QkMsMHhC
QiwweEQ3LDB4RjAsMHhDNCwweEFGLDB4QkMsMHgyQiwweEFCLDB4QUYsMHhBNSwKKyAgICAweDEw
LDB4QzUsMHhDRiwweEJDLDB4MkEsMHgwQiwweDNCLDB4RkYsMHgzMSwweENELDB4RjAsMHhDNCww
eEE4LDB4OEEsMHhDRiwweDc1LAorICAgIDB4MzEsMHhDRCwweEQwLDB4QkMsMHgwMiwweDgwLDB4
QTgsMHhBRCwweDMxLDB4Q0QsMHhBRiwweEJDLDB4RTAsMHhGQSwweDZBLDB4NkEsCisgICAgMHhE
MCwweEJDLDB4MkUsMHhBQywweDY4LDB4NzgsMHg1RSwweERGLDB4NEUsMHhBQywweDBELDB4QTQs
MHhBQiwweEJGLDB4N0YsMHhFRiwKKyAgICAweDRFLDB4QUMsMHgwRCwweEE0LDB4RUEsMHhDQiww
eEE5LDB4QkUsMHhGMCwweEJDLDB4MkQsMHhBNCwweDc1LDB4QTksMHgyRiwweDBCLAorICAgIDB4
OTMsMHhENSwweDRFLDB4QUMsMHg1NSwweEJGLDB4MEEsMHgwQSwweEIzLDB4RDUsMHg2RiwweEI0
LDB4RDUsMHhBQSwweDIwLDB4MDAsCisgICAgMHhCNCwweEQ1LDB4MTEsMHhDNSwweDI5LDB4MEEs
MHgwMCwweDAwLDB4QjQsMHhENSwweDczLDB4Q0QsMHgyMiwweDBBLDB4MDQsMHhENiwKKyAgICAw
eEQ0LDB4RDUsMHgzMiwweEM1LDB4NzgsMHg1OCwweDdDLDB4NTgsMHg1MiwweEM1LDB4MTIsMHhC
RCwweDAyLDB4NkIsMHg3NSwweDVELAorICAgIDB4MzIsMHhCRCwweEIwLDB4QUMsMHhBMCwweEJB
LDB4QUUsMHg3NywweDkzLDB4Q0QsMHgxMSwweEJELDB4M0QsMHgyRiwweDBELDB4MDksCisgICAg
MHg5MywweENELDB4MzIsMHhDNSwweDgwLDB4ODAsMHg4MCwweDYwLDB4OTMsMHhDRCwweEIwLDB4
QjQsMHhFOCwweEVBLDB4RkUsMHg1RiwKKyAgICAweEYwLDB4QkMsMHg4RiwweEFDLDB4OUEsMHhB
OCwweEZBLDB4QUYsMHgxMSwweEJELDB4QjAsMHhBQywweDAyLDB4QzAsMHhGQSwweDdDLAorICAg
IDB4RDAsMHhCNCwweDZFLDB4QUMsMHhFMiwweEVDLDB4RkUsMHhERiwweEQwLDB4QjQsMHg4Riww
eEFDLDB4RDUsMHhERiwweEU5LDB4M0YsCisgICAgMHg4NCwweDU5LDB4MjMsMHg1MSwweEE4LDB4
RUUsMHg1QiwweDU2LDB4NjMsMHg1MSwweDIzLDB4NTEsMHhGOCwweDk1LDB4OTUsMHhBNSwKKyAg
ICAweDY0LDB4NTksMHgwMiwweDQ5LDB4RUEsMHg2QSwweDdDLDB4RkEsMHg2NCwweDU5LDB4MDIs
MHg0OSwweEJELDB4MjIsMHhFRSwweEVBLAorICAgIDB4NjQsMHg1MSwweDAzLDB4NTEsMHhFRiww
eDdBLDB4RTcsMHhBRiwweDY0LDB4NTksMHgyMywweDUxLDB4QkYsMHhDQiwweEJCLDB4RkEsCisg
ICAgMHg2MywweDU5LDB4MjMsMHg1MSwweDdGLDB4RkQsMHhBRiwweEIzLDB4NjMsMHg1OSwweDIz
LDB4NTEsMHg3RiwweEZELDB4OEIsMHg4QiwKKyAgICAweDg0LDB4NjEsMHg0MywweDU5LDB4QTks
MHgyRiwweDJBLDB4RUEsMHg4NCwweDYxLDB4NDMsMHg1OSwweEY4LDB4N0MsMHg3OCwweEUzLAor
ICAgIDB4ODQsMHg2MSwweDQzLDB4NTksMHhBRCwweEI1LDB4OUYsMHhENSwweDg0LDB4NjEsMHg2
MywweDU5LDB4QTEsMHhBRSwweDU1LDB4ODUsCisgICAgMHg4NCwweDYxLDB4NDMsMHg1OSwweENB
LDB4QUEsMHhFQSwweEZGLDB4NjMsMHg1OSwweDIzLDB4NTEsMHg4MywweEFGLDB4QjQsMHgwRSwK
KyAgICAweDYzLDB4NTksMHgyMiwweDU5LDB4ODAsMHg4MiwweDNFLDB4RUUsMHg2MywweDU5LDB4
MjMsMHg1MSwweEEyLDB4RUUsMHhFQiwweEVGLAorICAgIDB4NDMsMHg1OSwweDAyLDB4NTEsMHhB
MCwweDNFLDB4M0YsMHhGOCwweDY0LDB4NTksMHgyMywweDUxLDB4RUEsMHhGMiwweEYyLDB4RkIs
CisgICAgMHg0MywweDU5LDB4RTIsMHg0OCwweEIwLDB4N0EsMHhGRSwweEFBLDB4MjMsMHg1MSww
eEUyLDB4NDgsMHg2MiwweEVCLDB4QUYsMHhBQSwKKyAgICAweDIzLDB4NTEsMHhFMiwweDQ4LDB4
MzcsMHg4QSwweDgyLDB4MDIsMHgyMywweDUxLDB4RTIsMHg0OCwweEU4LDB4RjAsMHg2QiwweDJF
LAorICAgIDB4MjMsMHg1MSwweEUyLDB4NDgsMHgzQiwweEZELDB4RjUsMHhCRiwweEE1LDB4Njks
MHhFMiwweDQ4LDB4REYsMHhCRiwweEJGLDB4MkYsCisgICAgMHg4QiwweDlCLDB4NDQsMHg1OSww
eDJELDB4MkIsMHgwQiwweDAyLDB4Q0MsMHhBMywweDhCLDB4OUIsMHgyQiwweDYyLDB4RkEsMHhE
RSwKKyAgICAweEFDLDB4QTMsMHg2QSwweDlCLDB4RUMsMHhBOSwweDJBLDB4QkEsMHg4QiwweDlC
LDB4MjksMHg5MywweDJBLDB4MjIsMHhDOCwweDdDLAorICAgIDB4OEEsMHg5QiwweDI5LDB4OTMs
MHhFMCwweEUwLDB4RUUsMHhERCwweDQ5LDB4OTMsMHgwOSwweDkzLDB4ODAsMHg4QSwweEE4LDB4
RkYsCisgICAgMHg2QSwweDlCLDB4MjksMHg5MywweDBBLDB4OEYsMHhGOCwweEVELDB4OEIsMHg5
QiwweDRBLDB4OTMsMHhCOCwweEJCLDB4QUYsMHhBRiwKKyAgICAweDZBLDB4OUIsMHhFOCwweDhB
LDB4NzgsMHhFMCwweDY4LDB4NjAsMHhDOCwweDgyLDB4ODcsMHg3QSwweEJDLDB4QTgsMHhBMCww
eDgzLAorICAgIDB4RTgsMHg4MiwweEE3LDB4N0EsMHhERiwweDhGLDB4MEYsMHhBNSwweEM4LDB4
ODIsMHhBNSwweDYxLDB4N0EsMHhGOCwweEUwLDB4QTgsCisgICAgMHhFNiwweDYxLDB4MDMsMHg0
MSwweDU3LDB4NTYsMHg1OCwweDc4LDB4MjMsMHg0OSwweEUzLDB4NDAsMHhBQSwweDNFLDB4RkEs
MHhFMCwKKyAgICAweDY0LDB4NTEsMHgwMywweDQxLDB4RkYsMHhGRiwweDM1LDB4QjUsMHg2NCww
eDUxLDB4MDMsMHg0MSwweDU1LDB4RkYsMHhFQSwweEMyLAorICAgIDB4NDQsMHg0OSwweDAzLDB4
NDEsMHgyQSwweEZGLDB4NzIsMHhFQSwweDY0LDB4NDksMHgwMywweDQxLDB4MDMsMHhBRiwweEVG
LDB4RjUsCisgICAgMHg2NSwweDQ5LDB4RTMsMHgzOCwweEZDLDB4NUUsMHg3RiwweDZGLDB4NDQs
MHg0OSwweEUyLDB4MzgsMHgzNywweEI1LDB4NzUsMHg1NSwKKyAgICAweDY1LDB4NDksMHhFMiww
eDM4LDB4MkEsMHgwQSwweEE5LDB4QUQsMHg2NCwweDQ5LDB4MjMsMHg0MSwweDVDLDB4REYsMHgy
NywweENCLAorICAgIDB4NjQsMHg0OSwweDAyLDB4NDEsMHhGQiwweEZCLDB4N0EsMHhDRSwweDIz
LDB4NDEsMHhDMiwweDM4LDB4N0MsMHhCOCwweEJBLDB4RUYsCisgICAgMHgwMywweDQxLDB4QzIs
MHgzOCwweDBBLDB4MkIsMHhBRiwweEJFLDB4NDMsMHg0OSwweEUzLDB4MzgsMHhCOCwweEZGLDB4
RUQsMHhGRiwKKyAgICAweDIzLDB4NDEsMHhFMiwweDM4LDB4QUEsMHgzOCwweEJGLDB4REUsMHgy
NCwweDQxLDB4RTMsMHgzOCwweEI3LDB4MzcsMHgwNywweEE4LAorICAgIDB4ODUsMHg1MSwweDI0
LDB4NDksMHgyNywweDBCLDB4MkIsMHhCRiwweEU2LDB4NjEsMHg4NSwweDU5LDB4MkEsMHgyMiww
eDg4LDB4QkQsCisgICAgMHhFNiwweDYxLDB4NDQsMHg1MSwweDVDLDB4NzgsMHhFMCwweEZFLDB4
ODUsMHg1MSwweDA0LDB4NDksMHhERCwweEFCLDB4QUEsMHgwOCwKKyAgICAweDY0LDB4NTEsMHgy
NCwweDQ5LDB4RTcsMHhBQSwweDI4LDB4RTgsMHg4NSwweDUxLDB4MjMsMHg0OSwweEU1LDB4MkUs
MHgyQSwweDBCLAorICAgIDB4QTUsMHg1MSwweDIzLDB4NDksMHhCRiwweEZFLDB4REMsMHg3QSww
eDQ0LDB4NDksMHhDMywweDM4LDB4NzgsMHg1OCwweDVFLDB4NUUsCisgICAgMHhDMywweDMwLDB4
QTIsMHgzMCwweDhDLDB4NDgsMHg3RSwweERELDB4QzIsMHgzMCwweEEyLDB4MjgsMHg4MiwweDhB
LDB4OTUsMHgyRSwKKyAgICAweEUzLDB4MzgsMHhDMiwweDMwLDB4NDEsMHg0MSwweERGLDB4QjYs
MHgwMywweDQxLDB4QTIsMHgzMCwweEFELDB4QkUsMHgyRiwweDJGLAorICAgIDB4NjQsMHg1MSww
eDAzLDB4MzksMHgyRCwweEJELDB4MEYsMHgyQiwweDY0LDB4NTEsMHgyNCwweDQ5LDB4RUEsMHg2
MCwweEZDLDB4N0EsCisgICAgMHg4NSwweDUxLDB4MjMsMHg0OSwweDI5LDB4MDksMHhCRCwweDNG
LDB4QTUsMHg1OSwweDQ0LDB4NTEsMHhBQSwweEEzLDB4NkUsMHg2RiwKKyAgICAweDg1LDB4NTks
MHgyNCwweDQ5LDB4MkEsMHhBQSwweEFBLDB4NUIsMHg4NSwweDUxLDB4NDQsMHg0OSwweEJBLDB4
RjIsMHhFMCwweDUxLAorICAgIDB4ODUsMHg1MSwweDAzLDB4NDEsMHhGOCwweEZBLDB4N0UsMHg1
RiwweDIzLDB4NDEsMHgwMywweDQxLDB4MkUsMHg4OCwweDAwLDB4MzAsCisgICAgMHgyMywweDQx
LDB4RTMsMHgzOCwweEEwLDB4RTgsMHhGQSwweDdGLDB4NDQsMHg0MSwweEUyLDB4MzgsMHg3QSww
eDczLDB4RjUsMHhENSwKKyAgICAweDIzLDB4NDEsMHhFMiwweDM4LDB4MTUsMHhENSwweEI3LDB4
REIsMHgyMywweDQxLDB4RTIsMHgzOCwweEEyLDB4ODgsMHhFMywweEFCLAorICAgIDB4NDQsMHg0
OSwweEUyLDB4MzgsMHhGNywweDc3LDB4QUUsMHgyMiwweDQ0LDB4NDksMHgwMywweDM5LDB4RDUs
MHhGNSwweEZFLDB4RDgsCisgICAgMHgyMywweDQxLDB4MDMsMHgzOSwweDc2LDB4MzgsMHgwMCww
eDBCLDB4MjMsMHg0MSwweEUyLDB4MzgsMHhGRCwweEUwLDB4RTAsMHg4MCwKKyAgICAweDIzLDB4
NDEsMHhFMiwweDM4LDB4MTcsMHhGRSwweERBLDB4M0YsMHg0NCwweDQxLDB4MDMsMHg0MSwweDI3
LDB4MDksMHgyNywweDlGLAorICAgIDB4NDQsMHg0MSwweDIzLDB4NDEsMHg3MiwweEUwLDB4MDgs
MHhFMCwweDQ0LDB4NDEsMHgwMywweDM5LDB4RkEsMHg3QSwweDdFLDB4NUYsCisgICAgMHg0NCww
eDQxLDB4RTIsMHgzOCwweEZFLDB4RDUsMHg1NSwweERELDB4MjMsMHg0MSwweEMyLDB4MzAsMHgz
QSwweEFBLDB4REEsMHhGOCwKKyAgICAweDQzLDB4NDEsMHgwMywweDM5LDB4N0EsMHhGQiwweEY1
LDB4N0QsMHg0MywweDQxLDB4MDMsMHgzOSwweDI5LDB4RUYsMHhFQiwweEY5LAorICAgIDB4MjMs
MHg0MSwweDAzLDB4NDEsMHgwOCwweEY3LDB4RkUsMHhGQSwweDY0LDB4NDksMHgwMywweDQxLDB4
MDIsMHgyOSwweEZELDB4NTUsCisgICAgMHg4NSwweDUxLDB4MjMsMHg0MSwweEZBLDB4RTIsMHhB
MywweEE5LDB4ODUsMHg1MSwweDI0LDB4NDksMHhBRiwweEI1LDB4QkUsMHhCQSwKKyAgICAweEE1
LDB4NTEsMHgyNCwweDQ5LDB4OEEsMHhBQSwweEVCLDB4REYsMHhBNSwweDU5LDB4NDQsMHg0OSww
eEZBLDB4QTIsMHgyQiwweEFELAorICAgIDB4RTYsMHg2MSwweDY0LDB4NTEsMHhENywweEZFLDB4
M0YsMHgyQSwweDI3LDB4NkEsMHg2NCwweDUxLDB4RDUsMHhGRiwweDNGLDB4MEEsCisgICAgMHgy
NiwweDZBLDB4ODQsMHg1OSwweEJELDB4RkIsMHhFQywweEU4LDB4MjYsMHg2QSwweEM1LDB4NjEs
MHhGNywweEVFLDB4QTUsMHgzRCwKKyAgICAweDI3LDB4NkEsMHhDNSwweDYxLDB4RkEsMHhENiww
eDlBLDB4QzAsMHhBOCwweDdBLDB4MDYsMHg2MiwweDJELDB4M0QsMHhENSwweEY1LAorICAgIDB4
QzksMHg4MiwweDY3LDB4NzIsMHgwQSwweEFBLDB4NUYsMHhERCwweDBBLDB4OEIsMHg2NywweDcy
LDB4M0IsMHhCRCwweEJELDB4NzcsCisgICAgMHg1MiwweENELDB4RTksMHg4MiwweDBCLDB4MEQs
MHgyRCwweEI1LDB4NzIsMHhENSwweEQwLDB4QkMsMHg3OCwweDc4LDB4NjgsMHhFQSwKKyAgICAw
eEYwLDB4QzQsMHg4RiwweEI0LDB4RkUsMHg3RSwweDZBLDB4NjAsMHhDRiwweEJDLDB4NkUsMHhC
NCwweDBBLDB4MkEsMHgyRiwweEI5LAorICAgIDB4RjAsMHhDNCwweDhGLDB4QjQsMHhBOCwweEFB
LDB4MkIsMHhCRCwweEYwLDB4QzQsMHhDRiwweEJDLDB4MDksMHgyRiwweEY1LDB4NTYsCisgICAg
MHgxMCwweEM1LDB4QUYsMHhCQywweDAyLDB4RTgsMHhGRSwweDVELDB4RjAsMHhCQywweDRFLDB4
QUMsMHhFOCwweEZBLDB4RkUsMHg3QSwKKyAgICAweDhGLDB4QjQsMHgyRCwweEFDLDB4REYsMHg3
NywweEY1LDB4MkEsMHhEMCwweEJDLDB4MEQsMHhBNCwweDVELDB4REQsMHhGRCwweDJBLAorICAg
IDB4MzEsMHhDNSwweDBELDB4QTQsMHhENSwweEY3LDB4QUYsMHgwMiwweDUyLDB4Q0QsMHhBRiww
eEI0LDB4QUQsMHgwQiwweDBBLDB4MDAsCisgICAgMHg3MiwweENELDB4MzIsMHhDNSwweDA3LDB4
MDgsMHgwQSwweEZCLDB4RDQsMHhENSwweDUyLDB4QzUsMHgwQSwweDJCLDB4QkQsMHg3NSwKKyAg
ICAweEQ0LDB4RDUsMHg5MywweENELDB4RTIsMHgyOCwweEVELDB4RkQsMHhCNCwweEQ1LDB4NTIs
MHhDNSwweEFFLDB4RkEsMHg3QywweEUwLAorICAgIDB4OTMsMHhDRCwweEQwLDB4QjQsMHhFMCww
eDZBLDB4RjgsMHg3OCwweDEyLDB4QkQsMHg5MCwweEFDLDB4RTgsMHg3QSwweDdFLDB4N0YsCisg
ICAgMHhBRiwweEFDLDB4NkYsMHhBQywweDgyLDB4OUIsMHg5NywweEJELDB4OTMsMHhDRCwweEQw
LDB4QjQsMHgwRCwweDhGLDB4MkQsMHhBRCwKKyAgICAweDkzLDB4Q0QsMHhEMSwweEI0LDB4ODAs
MHhFMCwweDdBLDB4NTcsMHhGMSwweEJDLDB4NkYsMHhBNCwweDc4LDB4RDgsMHhERSwweEY3LAor
ICAgIDB4RDAsMHhCNCwweDkwLDB4QUMsMHgwQSwweDAzLDB4MDMsMHgwQSwweEYwLDB4QjQsMHg4
RiwweEFDLDB4RUMsMHg3QSwweEZBLDB4RkEsCisgICAgMHhCMCwweEI0LDB4NEYsMHhBNCwweEE4
LDB4QUEsMHgyNiwweDgwLDB4RjEsMHhCNCwweDhGLDB4QUMsMHgzNywweDJELDB4MEYsMHgyQiwK
KyAgICAweDY0LDB4NTksMHgwMywweDQ5LDB4RjgsMHhBRiwweEVGLDB4RkQsMHg2NCwweDU5LDB4
MjMsMHg1MSwweEZCLDB4RDksMHhGRiwweDVGLAorICAgIDB4NDMsMHg1MSwweDAzLDB4NDksMHhB
MCwweDZCLDB4QTgsMHgwQSwweDQzLDB4NTEsMHgwMiwweDQ5LDB4QjgsMHgzRSwweDJGLDB4MDgs
CisgICAgMHg2NCwweDU5LDB4MjMsMHg1MSwweDlFLDB4RDEsMHhBOSwweEUzLDB4ODQsMHg1OSww
eDIzLDB4NTEsMHhGOCwweDdCLDB4RkYsMHhBQiwKKyAgICAweDYzLDB4NTksMHgyMywweDUxLDB4
QjMsMHhCRSwweEJFLDB4RkUsMHg2NCwweDU5LDB4NDMsMHg1OSwweDhELDB4MEEsMHhGRSwweEQ4
LAorICAgIDB4ODQsMHg2MSwweDQzLDB4NTksMHhFQiwweEIzLDB4NkQsMHg2OSwweEE0LDB4NjEs
MHg0MywweDU5LDB4RTMsMHg3QiwweEZELDB4RjUsCisgICAgMHg4NCwweDYxLDB4NDMsMHg1OSww
eDdBLDB4N0IsMHg3QiwweDg5LDB4ODQsMHg1OSwweDQzLDB4NTksMHhBRiwweEQ5LDB4N0YsMHg3
RSwKKyAgICAweDYzLDB4NTksMHg0MywweDU5LDB4RTgsMHg1QSwweDc3LDB4NjUsMHg2MywweDU5
LDB4MDIsMHg1MSwweDA4LDB4QkEsMHg3QSwweDZBLAorICAgIDB4NjQsMHg1OSwweDIzLDB4NTEs
MHhBQSwweDhCLDB4M0QsMHgzNSwweDY0LDB4NTksMHgyMywweDUxLDB4RUEsMHhGQSwweDdFLDB4
RkUsCisgICAgMHg0MywweDU5LDB4MjMsMHg1MSwweDYzLDB4QUEsMHhGNywweDczLDB4NDQsMHg1
OSwweDAzLDB4NTEsMHgwMiwweEEyLDB4QkEsMHg2MywKKyAgICAweDIzLDB4NTEsMHgwMiwweDQ5
LDB4Q0EsMHg2QSwweDZGLDB4NTksMHg0MywweDUxLDB4MDIsMHg0OSwweDdGLDB4REEsMHhBMyww
eEJCLAorICAgIDB4MjMsMHg1MSwweDAzLDB4NDksMHhCRCwweEI1LDB4MzQsMHhBRCwweDIzLDB4
NTEsMHgwMywweDQ5LDB4RkYsMHhCQiwweEZCLDB4NDMsCisgICAgMHg0MiwweDUxLDB4MDIsMHg0
OSwweEY1LDB4N0YsMHhCRiwweEJGLDB4NEEsMHg5MywweDQzLDB4NTksMHhGNSwweEI1LDB4MkQs
MHgyQiwKKyAgICAweENDLDB4QTMsMHgyOSwweDkzLDB4MEQsMHgwMywweDAyLDB4QTIsMHhDQyww
eEEzLDB4NEEsMHg5QiwweEUwLDB4RTgsMHhGQywweERFLAorICAgIDB4OEIsMHg5QiwweDI5LDB4
OTMsMHhBOCwweEFDLDB4RkEsMHg3QSwweDZBLDB4OUIsMHgyQSwweDkzLDB4NzIsMHhBQSwweEJG
LDB4OUQsCisgICAgMHg2QiwweDlCLDB4MjksMHg5MywweEZGLDB4Q0IsMHhFNywweDU3LDB4Mjks
MHg5MywweDA5LDB4OEIsMHhGQSwweDM4LDB4MzgsMHgyMCwKKyAgICAweDZCLDB4OUIsMHgyOSww
eDkzLDB4RUQsMHhGNSwweDNELDB4QUQsMHg4QiwweDlCLDB4NEEsMHg5QiwweEVGLDB4QUIsMHgw
QiwweDgzLAorICAgIDB4NkEsMHg5QiwweEM4LDB4ODIsMHg2MCwweDYwLDB4RjAsMHhGOCwweEM4
LDB4ODIsMHg4NywweDdBLDB4RTgsMHg3NCwweDVFLDB4RDYsCisgICAgMHhDOCwweDgyLDB4NjYs
MHg3MiwweDBBLDB4QkIsMHhGRiwweEZELDB4QTgsMHg3QSwweDY3LDB4NzIsMHhGNywweDdGLDB4
RUMsMHgzNiwKKyAgICAweDY4LDB4N0EsMHg0NCwweDQ5LDB4N0EsMHhFOCwweDgwLDB4QTAsMHhD
NSwweDYxLDB4MDMsMHg0OSwweDU1LDB4NUYsMHg1NiwweDU4LAorICAgIDB4MjMsMHg0OSwweEUz
LDB4NDAsMHg4RiwweDk3LDB4MzcsMHhFQiwweDY0LDB4NDksMHgyMywweDQ5LDB4MEQsMHg4NSww
eEI1LDB4QjUsCisgICAgMHg2NCwweDUxLDB4MDMsMHg0MSwweDdFLDB4NUEsMHhGOCwweEUwLDB4
MjMsMHg0MSwweDAzLDB4NDEsMHhGNiwweDIxLDB4NDEsMHg1RiwKKyAgICAweDAzLDB4NDEsMHhF
MiwweDM4LDB4RjgsMHhFOCwweDVDLDB4NTYsMHgwMywweDQxLDB4QzIsMHgzOCwweEVGLDB4RkEs
MHgzNSwweEJFLAorICAgIDB4NDQsMHg0OSwweEUyLDB4MzgsMHhBRCwweDNGLDB4REUsMHhBQiww
eDY0LDB4NDksMHgyMywweDQxLDB4OEIsMHhGOSwweEY1LDB4QUQsCisgICAgMHg0NCwweDQxLDB4
MDMsMHg0MSwweEM2LDB4NTcsMHhGNiwweEU4LDB4MDMsMHg0MSwweEMyLDB4MzgsMHhGRSwweEEw
LDB4ODAsMHg3MCwKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4QUEsMHhBRSwweEVGLDB4Qjcs
MHgyNCwweDQxLDB4RTMsMHgzOCwweDVFLDB4REYsMHgxRiwweEVELAorICAgIDB4MjQsMHg0MSww
eEUzLDB4MzgsMHg5QiwweEI2LDB4QUMsMHhBQSwweDQ1LDB4NDEsMHgwNCwweDQxLDB4RUYsMHhG
QSwweDVGLDB4NzcsCisgICAgMHg4NSwweDUxLDB4MjQsMHg0OSwweEZGLDB4REQsMHhEQiwweDU1
LDB4ODUsMHg1OSwweDI0LDB4NDksMHgwMiwweEFCLDB4MkYsMHhERCwKKyAgICAweDg1LDB4NTks
MHgyNCwweDQ5LDB4MkEsMHhFOCwweERFLDB4RkYsMHhDNiwweDU5LDB4NDQsMHg1MSwweDBCLDB4
MkIsMHgyRCwweEJELAorICAgIDB4QzYsMHg2MSwweDIzLDB4NDksMHg3RSwweDc4LDB4QzgsMHhB
MiwweEE1LDB4NTksMHgyNCwweDQ5LDB4MjksMHhCOSwweEE5LDB4QUIsCisgICAgMHhBNiwweDU5
LDB4MjMsMHg0MSwweDZBLDB4NjAsMHhGQSwweDZFLDB4MjMsMHg0OSwweEEzLDB4MzAsMHg3QSww
eDZFLDB4RkMsMHhGRSwKKyAgICAweEMyLDB4MzAsMHg4MywweDMwLDB4MkIsMHhBQSwweEFGLDB4
MkQsMHgwMywweDM5LDB4QTIsMHgzMCwweEY3LDB4QTcsMHgyQiwweDBELAorICAgIDB4MjQsMHg0
MSwweEUzLDB4MzgsMHhGRCwweEVGLDB4QUEsMHg4RSwweDI0LDB4NDEsMHhFMywweDM4LDB4QkYs
MHhCQiwweEJGLDB4QjcsCisgICAgMHhBNSwweDU5LDB4MjQsMHg0MSwweEFELDB4RUIsMHgwRCww
eDIxLDB4QTYsMHg1OSwweDIzLDB4NDksMHhGRiwweEY2LDB4REUsMHgzOCwKKyAgICAweEE1LDB4
NTksMHg0NCwweDUxLDB4QjcsMHgzRCwweDI3LDB4QkIsMHhBNSwweDU5LDB4NDQsMHg1MSwweEZB
LDB4NkUsMHhFQSwweDg4LAorICAgIDB4NjQsMHg1MSwweDAzLDB4NDksMHg1QywweDU2LDB4NUUs
MHg1OCwweDI0LDB4NDksMHhFMywweDQwLDB4MjIsMHhGRCwweEEzLDB4MDIsCisgICAgMHg0NCww
eDQ5LDB4MDMsMHgzOSwweEU4LDB4QUEsMHg0QSwweEVBLDB4MjMsMHg0MSwweEMyLDB4MzgsMHhG
OCwweEVCLDB4RkIsMHg3RSwKKyAgICAweDAzLDB4MzksMHhDMiwweDM4LDB4RUUsMHg5NywweDE3
LDB4MjcsMHgwMywweDQxLDB4RTMsMHgzOCwweDJCLDB4MkYsMHhGRSwweEZFLAorICAgIDB4NDQs
MHg0MSwweDAzLDB4NDEsMHg1NywweEExLDB4MEIsMHhBOSwweDY0LDB4NDksMHgyMywweDQxLDB4
NUQsMHg3RiwweDYyLDB4QzIsCisgICAgMHg2NCwweDQ5LDB4MjMsMHg0MSwweDI5LDB4MEQsMHhC
NSwweDk1LDB4ODUsMHg0OSwweDIzLDB4NDEsMHg1OCwweDUyLDB4NUEsMHg1RSwKKyAgICAweDIz
LDB4NDEsMHhFMiwweDM4LDB4RUEsMHhGRSwweEVGLDB4RkYsMHgyNCwweDQxLDB4RTIsMHgzOCww
eDk5LDB4QjksMHhBRiwweEU3LAorICAgIDB4NDQsMHg0MSwweEUyLDB4MzgsMHhGNywweDdFLDB4
RkEsMHhBRiwweDQ0LDB4NDEsMHhFMiwweDM4LDB4M0YsMHhBRCwweEJGLDB4QkUsCisgICAgMHg0
NCwweDQxLDB4MDMsMHgzOSwweEEwLDB4QUIsMHg3NywweDdBLDB4MjMsMHg0MSwweEUyLDB4Mzgs
MHhFOCwweDc4LDB4NkEsMHg3MiwKKyAgICAweDAzLDB4MzksMHhFMywweDM4LDB4RkIsMHhFRiww
eDNGLDB4MkQsMHgyMywweDM5LDB4RTIsMHgzOCwweEFBLDB4QTgsMHg0MywweDgzLAorICAgIDB4
MjMsMHgzOSwweEUyLDB4MzgsMHg4QiwweEFELDB4RTUsMHg1RCwweDIzLDB4NDEsMHhFMywweDM4
LDB4OEEsMHhCRSwweEFBLDB4QTIsCisgICAgMHg0NCwweDQ5LDB4RTMsMHgzOCwweEZCLDB4NkYs
MHhGQSwweDAyLDB4NDQsMHg0OSwweEUzLDB4NDAsMHhGNywweEVGLDB4M0YsMHhBQSwKKyAgICAw
eDY0LDB4NDksMHgyMywweDQxLDB4Q0IsMHhBOSwweEJCLDB4M0EsMHhBNSwweDUxLDB4NDQsMHg0
OSwweEZCLDB4RUEsMHhBQiwweDM3LAorICAgIDB4QTUsMHg1OSwweDQ0LDB4NDksMHhERiwweDdG
LDB4RDYsMHg3QywweEE1LDB4NTksMHgyMywweDQ5LDB4MkYsMHhCRiwweEZGLDB4RDcsCisgICAg
MHhDNSwweDYxLDB4NjQsMHg0OSwweEFBLDB4QUYsMHgyNywweDI1LDB4NjcsMHg3MiwweEM1LDB4
NTksMHgyOSwweDI1LDB4RDUsMHg1NSwKKyAgICAweDg4LDB4NzIsMHhFNSwweDYxLDB4N0UsMHhD
OCwweDhCLDB4QjUsMHg2NywweDcyLDB4QTQsMHg1OSwweERELDB4RkIsMHhGOCwweDg4LAorICAg
IDB4NDcsMHg3MiwweEU2LDB4NjEsMHg4QSwweEJGLDB4M0YsMHhGRiwweEM5LDB4ODIsMHgyNiww
eDZBLDB4QjUsMHgyRCwweDJCLDB4MkQsCisgICAgMHgwQSwweDhCLDB4NjcsMHg3MiwweDU3LDB4
N0IsMHhFRSwweEE4LDB4QTgsMHg3QSwweDI3LDB4NzIsMHhFNywweEE5LDB4QUEsMHhBOCwKKyAg
ICAweEVELDB4QTMsMHg4OCwweDdBLDB4M0QsMHhCNSwweEY1LDB4RkYsMHg1MSwweENELDB4RUQs
MHhBQiwweEEyLDB4MDMsMHgwOSwweDA5LAorICAgIDB4MTAsMHhDNSwweEFGLDB4QkMsMHg3RSww
eDdBLDB4NkEsMHhBMCwweENGLDB4QkMsMHg2RSwweEI0LDB4NzcsMHg1NywweEY3LDB4NUMsCisg
ICAgMHhDRiwweEJDLDB4NkUsMHhCNCwweDJELDB4QkYsMHhGRiwweDdELDB4Q0YsMHhCQywweDZF
LDB4QjQsMHg4MCwweEE4LDB4RjMsMHhENywKKyAgICAweEFGLDB4QjQsMHg2RiwweEI0LDB4QTAs
MHhEQywweERGLDB4N0UsMHgzMSwweENELDB4OEYsMHhCNCwweDc3LDB4QUQsMHgyRiwweDI5LAor
ICAgIDB4NTIsMHhDRCwweEFGLDB4QkMsMHhGRCwweEFCLDB4OEEsMHgyMCwweDUxLDB4QzUsMHhG
MCwweEM0LDB4NTUsMHhCNiwweDhFLDB4QTIsCisgICAgMHg3MiwweENELDB4RjAsMHhCQywweEE3
LDB4MzcsMHhBRiwweDJBLDB4QjMsMHhENSwweDcyLDB4Q0QsMHg1NSwweEFCLDB4ODMsMHg4QiwK
KyAgICAweEIzLDB4RDUsMHgxMCwweEJELDB4N0YsMHhGQSwweEZBLDB4RTAsMHg1MiwweEM1LDB4
MTEsMHhCRCwweDBELDB4MkYsMHhFRCwweDdFLAorICAgIDB4OTMsMHhDRCwweDExLDB4QkQsMHg4
MiwweDNGLDB4RkYsMHhGNSwweEIzLDB4Q0QsMHg1MiwweEM1LDB4MDAsMHgwMiwweEFBLDB4RDcs
CisgICAgMHg5MywweENELDB4RDEsMHhCNCwweDc4LDB4QTAsMHgwMCwweDAwLDB4NzMsMHhDRCww
eEIwLDB4QjQsMHg1NSwweDVGLDB4N0MsMHg2MCwKKyAgICAweEQxLDB4QjQsMHgyRiwweEE0LDB4
QkUsMHhCRiwweDNGLDB4MjgsMHgzMiwweEM1LDB4OTAsMHhBQywweDAzLDB4ODIsMHg0MiwweDYy
LAorICAgIDB4RDAsMHhCNCwweENELDB4OTMsMHhBOCwweEZBLDB4N0YsMHg1NywweEYxLDB4QjQs
MHgwRSwweDlDLDB4QkEsMHgyQiwweDJELDB4QUYsCisgICAgMHhGMSwweEI0LDB4QjAsMHhCNCww
eEJELDB4QjYsMHhGNSwweEQ1LDB4RDAsMHhCNCwweDkwLDB4QUMsMHhCQSwweEM4LDB4RUEsMHg3
QSwKKyAgICAweEQwLDB4QjQsMHg4RiwweEFDLDB4MkUsMHhCNiwweDU3LDB4RDcsMHgxMSwweEJE
LDB4OTAsMHhBQywweDJGLDB4QUYsMHhCOSwweDZGLAorICAgIDB4NDMsMHg1MSwweDAyLDB4NDks
MHhCRCwweEZGLDB4NUEsMHg3MiwweDQzLDB4NTEsMHhFMiwweDQ4LDB4QTIsMHhGOCwweEZGLDB4
QUUsCisgICAgMHg2NCwweDU5LDB4MjMsMHg1MSwweDc1LDB4RjUsMHhFRiwweDhGLDB4NjQsMHg1
OSwweDQzLDB4NTEsMHhGRCwweERELDB4NzUsMHg1RSwKKyAgICAweDY0LDB4NTksMHgwMiwweDQ5
LDB4NkIsMHg2QSwweEFBLDB4MjIsMHhBNCwweDYxLDB4MDIsMHg0OSwweEVGLDB4QUQsMHhBRiww
eDhBLAorICAgIDB4QTQsMHg2MSwweDQ0LDB4NTksMHhENywweEJELDB4RkYsMHhENSwweDg0LDB4
NjEsMHgyMywweDUxLDB4RjgsMHhCQSwweDdFLDB4RkYsCisgICAgMHg4NCwweDYxLDB4MjMsMHg1
MSwweDJBLDB4MkUsMHgyRiwweDBCLDB4ODQsMHg1OSwweDQzLDB4NTksMHhBRCwweDhBLDB4QUUs
MHhFRSwKKyAgICAweDg0LDB4NjEsMHgyMywweDUxLDB4ODgsMHhDMiwweEFBLDB4N0UsMHg2Myww
eDU5LDB4MDMsMHg1MSwweEEwLDB4ODIsMHg5OCwweEFFLAorICAgIDB4NDMsMHg1OSwweDIzLDB4
NTEsMHgwOCwweDM2LDB4MjgsMHgyMCwweDY0LDB4NTksMHgyMywweDUxLDB4OUIsMHhERiwweEJC
LDB4RjgsCisgICAgMHg2NCwweDU5LDB4MDIsMHg1MSwweDNGLDB4M0IsMHhERiwweEJBLDB4NjQs
MHg1OSwweDIzLDB4NTEsMHg3RSwweEVFLDB4QkEsMHhGQiwKKyAgICAweDY0LDB4NTksMHgyMyww
eDUxLDB4RjksMHg2QiwweDZDLDB4NTUsMHg0NCwweDU5LDB4MDMsMHg0OSwweEMyLDB4RDIsMHhC
QywweEQ2LAorICAgIDB4NDMsMHg1MSwweEUyLDB4NDgsMHhGRiwweEFFLDB4N0YsMHhCMiwweDIz
LDB4NTEsMHhFMiwweDQ4LDB4ODIsMHhBQSwweEVELDB4RjYsCisgICAgMHg0MywweDUxLDB4MDMs
MHg0OSwweEY3LDB4NzUsMHg3RCwweEZCLDB4NDMsMHg1MSwweDAzLDB4NDksMHhGQiwweEFCLDB4
OEIsMHgyRSwKKyAgICAweDY4LDB4N0EsMHgyMywweDUxLDB4RDUsMHhENSwweDM1LDB4MkQsMHhB
QiwweEEzLDB4MjcsMHg3MiwweDJELDB4MjksMHgwQiwweDBBLAorICAgIDB4Q0MsMHhBMywweDhC
LDB4QTMsMHhBQiwweDAwLDB4NjgsMHg1OCwweDhCLDB4QTMsMHg0QSwweDkzLDB4NkMsMHgyQyww
eEZGLDB4REYsCisgICAgMHg2QSwweDlCLDB4MjksMHg5MywweEJBLDB4QkUsMHhGOCwweDcyLDB4
NEEsMHg5MywweDA5LDB4OTMsMHhGOCwweDcyLDB4RUEsMHgyMCwKKyAgICAweDRBLDB4OTMsMHgw
OSwweDhCLDB4MzgsMHg5NSwweDI3LDB4QjQsMHg2QSwweDlCLDB4MjksMHg5MywweDZCLDB4QUIs
MHhCQiwweDI3LAorICAgIDB4NkEsMHg5MywweDA5LDB4OTMsMHg4RCwweEJFLDB4RUUsMHhFQSww
eDhCLDB4OUIsMHg0QSwweDkzLDB4QjIsMHhBRiwweEJGLDB4RkQsCisgICAgMHg4QiwweDlCLDB4
QTcsMHg4MiwweEZBLDB4N0EsMHg3QSwweDdBLDB4QTcsMHg4MiwweDg3LDB4N0EsMHgzRiwweEYw
LDB4QzgsMHhDOCwKKyAgICAweEE4LDB4ODIsMHg2NywweDdBLDB4QkUsMHhFMiwweEZGLDB4N0Ys
MHhBNywweDdBLDB4NjcsMHg3QSwweEJDLDB4REEsMHg2OSwweDVGLAorICAgIDB4ODcsMHg3QSww
eDI2LDB4NkEsMHg1QywweDdFLDB4RkEsMHhGQSwweDI2LDB4NkEsMHg2NCwweDUxLDB4NUMsMHg3
OCwweEUwLDB4ODAsCisgICAgMHg4NSwweDU5LDB4RTMsMHg0MCwweDc3LDB4NUYsMHhERSwweEMw
LDB4NDQsMHg0OSwweEUzLDB4NDAsMHgwQSwweDI5LDB4MkIsMHhBMiwKKyAgICAweDY0LDB4NDks
MHgyMywweDQ5LDB4ODAsMHhDQSwweEJFLDB4REQsMHg0NCwweDQ5LDB4QzIsMHgzOCwweEZBLDB4
N0UsMHg3NiwweEU4LAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzgsMHhCRiwweEJGLDB4ODksMHhB
QSwweDAzLDB4MzksMHhDMiwweDM4LDB4ODAsMHhBOCwweEFFLDB4RDYsCisgICAgMHg0NCwweDQ5
LDB4RTMsMHgzOCwweDhCLDB4QUIsMHhCRiwweEY1LDB4QTUsMHg1MSwweDIzLDB4NDEsMHhGNSww
eEU1LDB4QTUsMHgzRCwKKyAgICAweDg1LDB4NTEsMHgyMywweDQxLDB4N0EsMHg3QSwweDcyLDB4
RTAsMHgyMywweDQxLDB4QzMsMHgzOCwweDczLDB4RUEsMHhCOCwweEZBLAorICAgIDB4MDMsMHg0
MSwweEMyLDB4MzgsMHhFRiwweEFBLDB4RjAsMHg3MCwweDIzLDB4NDEsMHhFMywweDM4LDB4QkIs
MHhBQiwweEFCLDB4REQsCisgICAgMHgyNCwweDQxLDB4RTMsMHgzOCwweENBLDB4RkEsMHhGOCww
eEVBLDB4MDMsMHg0MSwweDIzLDB4MzksMHgyQSwweEEwLDB4ODAsMHg4OCwKKyAgICAweDQ0LDB4
NDksMHhFMywweDM4LDB4QUEsMHhBQSwweDJCLDB4QTcsMHg2NCwweDUxLDB4MjQsMHg0OSwweEY1
LDB4QjksMHhDRSwweEZGLAorICAgIDB4ODUsMHg1MSwweDQ0LDB4NTEsMHg3QiwweEY5LDB4ODks
MHg4NywweDg1LDB4NTksMHg2NSwweDUxLDB4MjUsMHgwRCwweEFCLDB4QzksCisgICAgMHhFNiww
eDYxLDB4ODUsMHg1OSwweEUxLDB4RTMsMHg3RCwweDU1LDB4QzYsMHg1OSwweDY1LDB4NTEsMHhC
NywweEJBLDB4RTMsMHhDRCwKKyAgICAweDg1LDB4NTEsMHg0NCwweDQ5LDB4NkEsMHg2OCwweEUy
LDB4NUMsMHg0NCwweDQ5LDB4QzIsMHgzMCwweDdFLDB4RjQsMHg3RSwweDVGLAorICAgIDB4QzIs
MHgzMCwweEEyLDB4MzAsMHhCRiwweDk4LDB4MjAsMHgyMiwweDI0LDB4MzksMHhDMiwweDMwLDB4
QTUsMHgzRCwweEE1LDB4RkQsCisgICAgMHgyNCwweDQxLDB4RTMsMHgzOCwweEFBLDB4OUUsMHhF
RSwweEU3LDB4MDMsMHg0MSwweEUzLDB4MzgsMHgyNywweDJCLDB4RTAsMHhFQSwKKyAgICAweEE1
LDB4NTksMHgwMywweDQxLDB4MDksMHgyRCwweDBGLDB4M0QsMHgwNywweDYyLDB4ODUsMHg1OSww
eERGLDB4N0IsMHhCMywweEJCLAorICAgIDB4MDcsMHg2QSwweDg1LDB4NTksMHg1NywweDdGLDB4
RjIsMHhFOCwweEM2LDB4NTksMHg0NCwweDUxLDB4MjksMHhBQSwweEUyLDB4RUEsCisgICAgMHhB
NSwweDU5LDB4MDMsMHg0MSwweDU4LDB4NzgsMHg3QSwweDdBLDB4MjQsMHg0OSwweDAzLDB4NDEs
MHg4QSwweEFBLDB4RjUsMHg1NSwKKyAgICAweDI0LDB4NDEsMHgwMywweDQxLDB4NjAsMHhFMCww
eDYwLDB4NjMsMHgwMywweDQxLDB4QzIsMHgzOCwweDdBLDB4NkEsMHhFRSwweEJBLAorICAgIDB4
MjQsMHg0MSwweEUzLDB4MzgsMHhBNSwweEE1LDB4QUYsMHhBRCwweDIzLDB4NDEsMHgwMywweDM5
LDB4QjcsMHhBRiwweDNGLDB4MzUsCisgICAgMHg2NCwweDQ5LDB4MjQsMHg0MSwweDZELDB4QTks
MHhBRCwweEJELDB4NjQsMHg0OSwweDIzLDB4NDEsMHgwOSwweEFGLDB4QTIsMHg4QSwKKyAgICAw
eDY1LDB4NDksMHgwMywweDQxLDB4QkYsMHhERiwweEJBLDB4OEEsMHg2NCwweDQ5LDB4MDMsMHgz
OSwweDc4LDB4RUMsMHg3RiwweDdFLAorICAgIDB4MjMsMHg0MSwweEUzLDB4MzgsMHhGRiwweDVG
LDB4N0YsMHgyQSwweDAzLDB4NDEsMHhDMiwweDMwLDB4QUUsMHhBRiwweDVELDB4RkMsCisgICAg
MHg0NCwweDQxLDB4RTIsMHgzOCwweDJCLDB4OEUsMHg3NSwweEQ1LDB4MjMsMHg0MSwweEUyLDB4
MzAsMHgzQSwweDNCLDB4RkYsMHhBRiwKKyAgICAweDI0LDB4MzksMHgwMywweDM5LDB4NjgsMHg1
NiwweEZGLDB4RjUsMHg0NCwweDQxLDB4RTMsMHgzOCwweDdCLDB4RkYsMHhFOCwweEFBLAorICAg
IDB4MjMsMHgzOSwweEUzLDB4MzAsMHhFNywweEQ3LDB4RjcsMHhFQSwweDIzLDB4MzksMHhFMyww
eDMwLDB4QUMsMHgzRSwweEZCLDB4RjIsCisgICAgMHgwMywweDM5LDB4RTIsMHgzMCwweERGLDB4
M0UsMHhCQSwweEY4LDB4NDQsMHg0MSwweEUyLDB4MzgsMHhGNSwweEY2LDB4RjcsMHgzNSwKKyAg
ICAweDg1LDB4NDksMHgwMywweDM5LDB4QUQsMHgyRCwweEE1LDB4RjUsMHg2NCwweDQ5LDB4MDMs
MHg0MSwweEY4LDB4REUsMHhGQSwweEFBLAorICAgIDB4NDQsMHg0OSwweDIzLDB4MzksMHgwMiww
eDgyLDB4MDIsMHgyMCwweDg1LDB4NTEsMHgyMywweDQ5LDB4QjcsMHhCRiwweEUyLDB4RTIsCisg
ICAgMHg4NSwweDUxLDB4MjMsMHg0OSwweDU4LDB4N0YsMHhENywweDdGLDB4NjQsMHg0OSwweDIz
LDB4NDksMHhBQiwweEI1LDB4QjUsMHg1RiwKKyAgICAweEE1LDB4NTksMHgyMywweDQ5LDB4MkYs
MHhBRiwweEZGLDB4N0QsMHhDNSwweDU5LDB4NjQsMHg1MSwweDAzLDB4MEIsMHgyQiwweEI1LAor
ICAgIDB4MDUsMHg2MiwweDg0LDB4NTEsMHgzQSwweEJCLDB4QUQsMHhGNSwweDQ3LDB4NzIsMHhD
NSwweDYxLDB4MDIsMHg4QSwweEVCLDB4QkQsCisgICAgMHg0NywweDcyLDB4RTUsMHg2MSwweEZF
LDB4RkUsMHgyRSwweDJCLDB4QzksMHg4MiwweDI2LDB4NkEsMHgyNSwweEI1LDB4RjUsMHhGRiwK
KyAgICAweDJBLDB4OEIsMHg4OCwweDdBLDB4QUEsMHgwQiwweEE5LDB4QkIsMHgyOSwweDkzLDB4
ODcsMHg3QSwweEQ3LDB4N0UsMHhFQSwweEEwLAorICAgIDB4MEEsMHg4QiwweDg4LDB4N0EsMHgy
QiwweEI1LDB4RkYsMHhCNiwweDUyLDB4RDUsMHg0QSwweDkzLDB4MDksMHgyRCwweDJELDB4MkQs
CisgICAgMHg3MiwweEQ1LDB4RjAsMHhDNCwweDdDLDB4NzgsMHhGOCwweEUwLDB4NTEsMHhDRCww
eDRFLDB4QUMsMHg1RSwweDdBLDB4QTgsMHgwMCwKKyAgICAweDcyLDB4Q0QsMHg0RSwweEFDLDB4
NTUsMHhENSwweEZGLDB4MDIsMHhEMywweERELDB4NkUsMHhCNCwweDU1LDB4NTUsMHg3RiwweEE4
LAorICAgIDB4RjAsMHhDNCwweDRELDB4QUMsMHg5NiwweEQ3LDB4OTcsMHgwMCwweDkyLDB4RDUs
MHhEMCwweEJDLDB4QkQsMHhBRCwweDJELDB4MEIsCisgICAgMHhCMywweEQ1LDB4NTEsMHhDRCww
eDVELDB4RkYsMHgwQiwweDBBLDB4RDQsMHhERCwweDcyLDB4Q0QsMHg1RCwweEVBLDB4NjAsMHg2
QSwKKyAgICAweDkzLDB4Q0QsMHg1MiwweENELDB4NTcsMHhEQywweDM3LDB4ODcsMHhENCwweEQ1
LDB4NzIsMHhDRCwweDhELDB4RjksMHhGRSwweERFLAorICAgIDB4QjQsMHhENSwweDczLDB4Q0Qs
MHg3MCwweDVBLDB4RjcsMHhENywweDcyLDB4Q0QsMHgxMSwweEJELDB4N0UsMHhFOCwweEY4LDB4
QkMsCisgICAgMHgzMiwweEM1LDB4MTEsMHhCRCwweEJGLDB4RkUsMHg5MCwweDYwLDB4NTIsMHhD
NSwweEYxLDB4QkMsMHg4MCwweEFFLDB4QUYsMHhGNywKKyAgICAweDkzLDB4Q0QsMHgzMiwweEM1
LDB4MDMsMHhBQiwweEJGLDB4RkQsMHhCNCwweENELDB4NTIsMHhDNSwweDVBLDB4MEIsMHhBRiww
eEJELAorICAgIDB4OTMsMHhDRCwweEYxLDB4QkMsMHg1NywweEUwLDB4QTAsMHhFMCwweDEyLDB4
QkQsMHhFRCwweDlCLDB4RTAsMHhFMCwweDY4LDB4NzgsCisgICAgMHg2RSwweEE0LDB4Q0MsMHg5
MywweDU3LDB4RDUsMHg5NSwweDM1LDB4RDAsMHhCNCwweDRFLDB4QTQsMHgyOSwweDM5LDB4QUIs
MHgwMiwKKyAgICAweEQwLDB4QjQsMHg4RiwweEI0LDB4QjAsMHg3OCwweEY4LDB4RUEsMHhEMSww
eEI0LDB4NkYsMHhBQywweEVBLDB4QTIsMHhERSwweEVGLAorICAgIDB4RDEsMHhCNCwweDZGLDB4
QUMsMHgzRiwweEFGLDB4QjcsMHhBRSwweEYxLDB4QjQsMHg5MCwweEFDLDB4NEYsMHhCRSwweEE5
LDB4RUIsCisgICAgMHg2MywweDU5LDB4MjMsMHg1MSwweDdFLDB4NTksMHhFNiwweEFFLDB4NDMs
MHg1MSwweDAyLDB4NDksMHgyMCwweEFBLDB4RkIsMHg2QSwKKyAgICAweDQzLDB4NTEsMHgyMyww
eDUxLDB4MDIsMHgwMiwweDI5LDB4OTksMHg2NCwweDU5LDB4MjMsMHg1MSwweDI4LDB4QUUsMHhE
QiwweDRGLAorICAgIDB4NjQsMHg1OSwweDIzLDB4NTEsMHhBMiwweEU4LDB4QTgsMHhCNywweDg0
LDB4NTksMHg0MywweDU5LDB4ODIsMHg2QiwweDVGLDB4NUYsCisgICAgMHg4NCwweDYxLDB4MjMs
MHg1MSwweEZELDB4QkIsMHhFQSwweEMyLDB4ODQsMHg2MSwweDIzLDB4NTEsMHhGNiwweEZGLDB4
RUYsMHg4QiwKKyAgICAweDg0LDB4NjEsMHg0MywweDU5LDB4MEEsMHgwMywweDI3LDB4QUEsMHhB
NCwweDYxLDB4NDMsMHg1OSwweEZBLDB4NkEsMHhFMCwweEYyLAorICAgIDB4NjQsMHg1OSwweDIz
LDB4NTksMHhGRSwweEZCLDB4QkEsMHhFOCwweDY0LDB4NTksMHgyMywweDUxLDB4QzgsMHg4QSww
eEVGLDB4NkIsCisgICAgMHg2NCwweDU5LDB4MjMsMHg1MSwweEJBLDB4QkYsMHgxRiwweEVGLDB4
NjQsMHg1OSwweDIzLDB4NTksMHhBOCwweEE4LDB4MDIsMHhBOSwKKyAgICAweDg1LDB4NjEsMHgy
NCwweDUxLDB4RkUsMHhGQSwweDYzLDB4RkYsMHg2NCwweDU5LDB4MjMsMHg1MSwweEFFLDB4REQs
MHg3RCwweDZGLAorICAgIDB4NDQsMHg1OSwweDAzLDB4NTEsMHg1RiwweEJDLDB4QkQsMHg2Riww
eDIzLDB4NTEsMHhFMiwweDQ4LDB4QjgsMHhGMCwweDI4LDB4QjMsCisgICAgMHg0MywweDUxLDB4
MDMsMHg0OSwweEZCLDB4RkEsMHhFQSwweERCLDB4MjMsMHg1MSwweEUyLDB4NDgsMHg3MiwweEM4
LDB4ODIsMHhBMiwKKyAgICAweDIzLDB4NTEsMHgwMywweDQ5LDB4QzEsMHhCNSwweENGLDB4MEEs
MHg2NCwweDU5LDB4MDMsMHg1MSwweEJGLDB4QkYsMHgzNywweDM3LAorICAgIDB4NEEsMHg5Myww
eDY0LDB4NTksMHgyRCwweDJELDB4MEIsMHgwQiwweENDLDB4QTMsMHg0QSwweDlCLDB4QUQsMHg4
QiwweDJBLDB4RUUsCisgICAgMHhFQywweEFCLDB4OEIsMHg5QiwweDVFLDB4QUYsMHhBRCwweDhG
LDB4Q0MsMHhBQiwweDRBLDB4OTMsMHg3NywweDVBLDB4RTgsMHhBMCwKKyAgICAweEFCLDB4QTMs
MHg0QSwweDkzLDB4NzcsMHhERCwweEVFLDB4QTgsMHg2QSwweDlCLDB4MjksMHg5MywweEZFLDB4
RTYsMHhGNywweDVFLAorICAgIDB4NkEsMHg5QiwweDA5LDB4OEIsMHg1RSwweEZFLDB4QTMsMHhB
QiwweDRBLDB4OTMsMHgwOSwweDkzLDB4QUYsMHhFRCwweEVGLDB4MzAsCisgICAgMHg0QSwweDkz
LDB4MDgsMHg5MywweDIwLDB4QUEsMHhBMSwweEU4LDB4NkEsMHg5MywweDA5LDB4OTMsMHgzQiww
eEFELDB4QUYsMHhFRiwKKyAgICAweDZBLDB4OUIsMHhDOCwweDgyLDB4NzIsMHg2MiwweEZBLDB4
N0EsMHhBNywweDdBLDB4NjcsMHg3MiwweEEyLDB4QjgsMHg2OCwweEFBLAorICAgIDB4QTgsMHg3
QSwweDQ3LDB4NzIsMHhFMiwweEUyLDB4N0YsMHhGNywweDY3LDB4N0EsMHgyNiwweDcyLDB4ODAs
MHhFMCwweDUyLDB4NTAsCisgICAgMHg4OCwweDdBLDB4NDcsMHg3MiwweDdCLDB4N0QsMHg3Nyww
eDQ5LDB4NDYsMHg3MiwweDA2LDB4NkEsMHg1RiwweDdBLDB4N0EsMHhGQSwKKyAgICAweDI2LDB4
NkEsMHg2NCwweDUxLDB4N0EsMHhFOCwweEVBLDB4MDgsMHhFNSwweDYxLDB4MjMsMHg0OSwweDU1
LDB4NUYsMHg1RSwweDY4LAorICAgIDB4NDMsMHg0OSwweEUzLDB4NDAsMHhBQSwweEZCLDB4NUYs
MHg1NCwweDQzLDB4NDksMHhFMywweDQwLDB4RTgsMHhFQiwweEVGLDB4RjUsCisgICAgMHhFMyww
eDQwLDB4QzIsMHgzMCwweEJFLDB4RUUsMHhFQSwweDYwLDB4RTIsMHgzOCwweEExLDB4MzAsMHgw
QywweEE4LDB4RkEsMHhGQiwKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4MEIsMHgwRCwweDdE
LDB4RjUsMHhBNSwweDUxLDB4RTMsMHgzOCwweDBGLDB4MkYsMHhBRCwweEZELAorICAgIDB4ODUs
MHg1MSwweDIzLDB4NDEsMHhDMCwweENBLDB4RUEsMHg3QSwweDIzLDB4NDEsMHhFMywweDM4LDB4
QkEsMHhEQywweERGLDB4NUYsCisgICAgMHgyNCwweDQxLDB4QzIsMHgzOCwweERBLDB4MkEsMHgw
MiwweDAwLDB4MDMsMHg0MSwweEUzLDB4MzgsMHg3RiwweEVDLDB4QkEsMHgzOCwKKyAgICAweDAz
LDB4NDEsMHhFMywweDM4LDB4MzYsMHhENSwweEQ3LDB4NUUsMHgyMywweDQxLDB4RTQsMHgzOCww
eEVBLDB4QkYsMHgwQiwweDBBLAorICAgIDB4NDQsMHg0OSwweEUzLDB4MzgsMHgyQiwweEI3LDB4
QUUsMHhFOCwweDY1LDB4NTEsMHgyMywweDQ5LDB4REMsMHhGMCwweDcwLDB4RjIsCisgICAgMHg4
NSwweDU5LDB4MDMsMHg0MSwweDBCLDB4MkIsMHhCRiwweDc3LDB4QzYsMHg1OSwweDQ0LDB4NTEs
MHg4QiwweDNBLDB4QUEsMHhGRCwKKyAgICAweEE1LDB4NTksMHg2NSwweDUxLDB4QkMsMHhCQyww
eEZFLDB4RkUsMHhDNiwweDU5LDB4NjQsMHg1MSwweDVBLDB4N0EsMHg0QiwweDRGLAorICAgIDB4
ODUsMHg1MSwweEMyLDB4MzAsMHhFOCwweDZBLDB4N0UsMHg1RSwweEUzLDB4MzgsMHg4MiwweDMw
LDB4QTAsMHhFQSwweERFLDB4QkYsCisgICAgMHhDMywweDMwLDB4QTIsMHgzMCwweEUyLDB4RkYs
MHg1RiwweDk0LDB4RTMsMHgzMCwweDgyLDB4MjgsMHhBQiwweEZELDB4QkEsMHhBOCwKKyAgICAw
eEUzLDB4MzgsMHhBMiwweDMwLDB4MjEsMHg3RCwweDVGLDB4NUUsMHgwMywweDQxLDB4QTMsMHgz
MCwweDJCLDB4RkIsMHhCRiwweEJELAorICAgIDB4NjQsMHg1MSwweDAzLDB4NDEsMHgyRCwweDI1
LDB4MTUsMHhENSwweEU2LDB4NjEsMHg4NSwweDUxLDB4MDksMHhBQiwweEZELDB4NTUsCisgICAg
MHhFNiwweDYxLDB4NjQsMHg1MSwweDAwLDB4ODIsMHg4QiwweEJGLDB4QzYsMHg2MSwweDY0LDB4
NTEsMHg2QSwweEY4LDB4RjAsMHg4MCwKKyAgICAweDY0LDB4NTEsMHgwMywweDQxLDB4QTgsMHhF
MCwweDYwLDB4RjAsMHgyNCwweDQ5LDB4MDMsMHg0MSwweDU2LDB4RkUsMHgyRiwweEFDLAorICAg
IDB4MjQsMHg0MSwweEUzLDB4MzgsMHhBQiwweEE2LDB4N0UsMHg3OCwweDA0LDB4NDEsMHhDMyww
eDM4LDB4NUUsMHg3MiwweEFBLDB4MjIsCisgICAgMHgwMywweDM5LDB4QTMsMHgzOCwweDBCLDB4
QUEsMHg4OCwweDI4LDB4MDMsMHgzOSwweEMyLDB4MzgsMHgyQSwweDJGLDB4QkQsMHhCRiwKKyAg
ICAweDg1LDB4NDksMHgwMywweDM5LDB4MkIsMHgyRiwweEFELDB4OEQsMHg4NSwweDQ5LDB4MjQs
MHg0MSwweEZGLDB4RDgsMHhFMCwweEZDLAorICAgIDB4ODUsMHg0OSwweEUyLDB4MzgsMHg4QSww
eDhBLDB4RkUsMHg1RCwweDQ0LDB4NDEsMHgwMywweDM5LDB4QTgsMHhBRSwweEZGLDB4MkQsCisg
ICAgMHgyMywweDQxLDB4RTMsMHgzOCwweDAwLDB4QTAsMHhGOCwweEUwLDB4MjMsMHg0MSwweEMy
LDB4MzAsMHhGRSwweDY2LDB4RkIsMHhBOCwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4MkYs
MHgyRiwweDFGLDB4RjgsMHgyNCwweDQxLDB4RTIsMHgzMCwweEFELDB4MkYsMHhBRiwweEI1LAor
ICAgIDB4MjMsMHgzOSwweEUzLDB4MzgsMHhBQSwweDg4LDB4QTgsMHgwRiwweDI0LDB4NDEsMHgw
MywweDM5LDB4MUUsMHhCOSwweEFELDB4RTIsCisgICAgMHgyMywweDM5LDB4RTIsMHgzOCwweEU4
LDB4NzgsMHhCMiwweEEwLDB4MjMsMHgzOSwweEUyLDB4MzAsMHhGRiwweDU1LDB4NUYsMHhGMCwK
KyAgICAweDIzLDB4NDEsMHgwMywweDM5LDB4NzUsMHgyNSwweEE1LDB4NTUsMHgyMywweDQxLDB4
QzIsMHgzMCwweDI3LDB4QUEsMHhBRiwweDBBLAorICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHgx
NywweDBFLDB4ODIsMHgwMiwweDY0LDB4NDksMHgyMywweDQxLDB4MEIsMHgwQiwweDdGLDB4RkYs
CisgICAgMHg2NCwweDQ5LDB4MjMsMHg0MSwweDM3LDB4REYsMHhCQSwweEU3LDB4ODQsMHg1MSww
eDQ0LDB4NDksMHg1RSwweDJGLDB4NjUsMHg3RCwKKyAgICAweDg1LDB4NTEsMHgyMywweDQxLDB4
RkQsMHhENywweEZCLDB4QzIsMHg2NSwweDQ5LDB4MjMsMHg0OSwweEY3LDB4QjUsMHgzNiwweEY3
LAorICAgIDB4ODUsMHg1MSwweDIzLDB4NDksMHhGRiwweEJGLDB4MzUsMHg4RiwweEM1LDB4NjEs
MHgyMiwweDQ5LDB4REYsMHhGRSwweEE4LDB4MkIsCisgICAgMHhBNCwweDU5LDB4NjQsMHg1MSww
eDlCLDB4N0QsMHhEOCwweEE4LDB4MDYsMHg2MiwweDY0LDB4NTEsMHgyRiwweEFELDB4NzUsMHhG
RiwKKyAgICAweDI2LDB4NkEsMHg4NCwweDU5LDB4MDAsMHhBRSwweEY3LDB4REQsMHg2NywweDdB
LDB4QTUsMHg2MSwweDJBLDB4MkIsMHhBRCwweEY1LAorICAgIDB4MEEsMHg4QiwweDI2LDB4NzIs
MHgwQSwweDJCLDB4QUIsMHhGRCwweDJBLDB4OEIsMHhDOSwweDgyLDB4QzAsMHhBMiwweDI5LDB4
RjksCisgICAgMHgwOSwweDhCLDB4QTgsMHg3QSwweEZBLDB4RjAsMHhBMCwweDI4LDB4NTIsMHhE
NSwweDA5LDB4OEIsMHgyRCwweDJELDB4QjUsMHhCNSwKKyAgICAweDM1LDB4RTYsMHg1MiwweEQ1
LDB4NUYsMHhFQiwweDBCLDB4MDksMHg1NSwweEVFLDB4NzIsMHhENSwweDU1LDB4QkYsMHhBQSww
eDAwLAorICAgIDB4MzUsMHhFRSwweDcyLDB4RDUsMHhBRCwweDhBLDB4MDAsMHgwMCwweDU1LDB4
RUUsMHhGNCwweERELDB4NUYsMHhGRiwweEVGLDB4RjIsCisgICAgMHgzNSwweEU2LDB4RDMsMHhE
RCwweDdELDB4QUIsMHg4QSwweDgwLDB4MTQsMHhFNiwweDkyLDB4RDUsMHhGNywweEFBLDB4MDAs
MHgwOCwKKyAgICAweDM0LDB4RTYsMHg5MiwweEQ1LDB4N0YsMHhGRSwweDhBLDB4MjAsMHgxNCww
eERFLDB4NTIsMHhDNSwweDU3LDB4NUYsMHg1QSwweDU4LAorICAgIDB4QjMsMHhENSwweDUyLDB4
QzUsMHhBNSwweDNELDB4QUYsMHhBRCwweEIzLDB4RDUsMHg3MywweENELDB4RkUsMHhFQSwweEFB
LDB4M0IsCisgICAgMHg5MywweENELDB4NTIsMHhDNSwweEVFLDB4QUUsMHhGRSwweEY4LDB4NzIs
MHhDRCwweDMyLDB4QzUsMHhGNCwweEY4LDB4NzgsMHhFMCwKKyAgICAweDUyLDB4QzUsMHgxMiww
eEJELDB4NkUsMHhGOCwweDdBLDB4QUEsMHgzMiwweEM1LDB4RjEsMHhCQywweDVGLDB4NzYsMHg3
QSwweEQ4LAorICAgIDB4NTIsMHhDNSwweEYxLDB4QkMsMHgyQiwweEU1LDB4NUQsMHg1RCwweDcz
LDB4Q0QsMHhGMSwweEJDLDB4MjIsMHgwQiwweEFGLDB4RjcsCisgICAgMHg3MywweENELDB4RDAs
MHhCNCwweEUwLDB4RjgsMHg3RSwweDdGLDB4RDEsMHhCNCwweENELDB4OUIsMHg3OCwweEY4LDB4
N0UsMHg3RSwKKyAgICAweEIwLDB4QjQsMHhDQywweDkzLDB4MjUsMHgyRiwweDBCLDB4MEIsMHhE
MSwweEI0LDB4OEYsMHhBQywweEEyLDB4RTIsMHg0MCwweEEyLAorICAgIDB4RDAsMHhCNCwweDhG
LDB4QUMsMHhFQSwweERCLDB4N0EsMHhDQywweEIwLDB4QjQsMHg3MCwweEFDLDB4REEsMHg5MCww
eDNDLDB4MkUsCisgICAgMHhCMCwweEI0LDB4NzAsMHhBQywweEE4LDB4RUEsMHhGRSwweDE4LDB4
RDEsMHhCNCwweDkwLDB4QUMsMHhFQiwweEU5LDB4RDUsMHhCRCwKKyAgICAweDYzLDB4NTksMHgy
MywweDUxLDB4QUUsMHhGQSwweEYxLDB4QTMsMHg4NCwweDU5LDB4NDMsMHg1MSwweDc1LDB4REYs
MHhFQiwweEZFLAorICAgIDB4ODQsMHg1OSwweDIzLDB4NTEsMHg1NywweEZBLDB4RkEsMHhEQyww
eDgzLDB4NTksMHgyMywweDUxLDB4N0QsMHhGNSwweEZELDB4RUYsCisgICAgMHg2MywweDU5LDB4
MjMsMHg1MSwweERGLDB4QjIsMHg4MywweENCLDB4NjMsMHg1OSwweDIzLDB4NTEsMHhGMSwweEFB
LDB4QUYsMHhBQSwKKyAgICAweDg0LDB4NjEsMHg0MywweDU5LDB4REIsMHhFRCwweDBGLDB4Mzks
MHhBNCwweDYxLDB4NDQsMHg1OSwweEVCLDB4MkQsMHhFOCwweEFBLAorICAgIDB4QTQsMHg2MSww
eDY0LDB4NTksMHhGRiwweEJELDB4QTksMHhGRiwweDg0LDB4NTksMHg0MywweDU5LDB4RjgsMHg2
QywweEVGLDB4QkYsCisgICAgMHg2NCwweDU5LDB4MjMsMHg1MSwweEFBLDB4MjEsMHgyQSwweEVF
LDB4NjMsMHg1OSwweDIzLDB4NTEsMHhEQSwweDdBLDB4NkYsMHhFRSwKKyAgICAweDY0LDB4NTks
MHgyMywweDUxLDB4RUEsMHg4QSwweEU5LDB4RkYsMHg0NCwweDU5LDB4MjMsMHg1MSwweEFCLDB4
NUUsMHg3NywweERBLAorICAgIDB4NDQsMHg1OSwweDIzLDB4NTEsMHg5MiwweDczLDB4QjYsMHhB
NywweDQ0LDB4NTksMHhFMiwweDQ4LDB4QTAsMHhFOCwweDc4LDB4RjgsCisgICAgMHgyMywweDUx
LDB4MDMsMHg0OSwweDZCLDB4REYsMHg2OSwweDZELDB4MjMsMHg1MSwweEMyLDB4NDAsMHhBQSww
eDk4LDB4QUEsMHhBQSwKKyAgICAweDIzLDB4NTEsMHhFMiwweDQ4LDB4QkEsMHg2QSwweERBLDB4
QjIsMHgyMywweDUxLDB4RTIsMHg0OCwweDkyLDB4MjMsMHgwMiwweEFBLAorICAgIDB4NDMsMHg1
MSwweDAzLDB4NDksMHhDQSwweEFGLDB4NUYsMHhGNywweEU5LDB4OEEsMHgyMywweDUxLDB4RDUs
MHg5NSwweEI1LDB4MjUsCisgICAgMHhBQiwweEEzLDB4ODgsMHg4MiwweDhELDB4MkIsMHg4Qiww
eDg4LDB4QUIsMHhBMywweDZCLDB4OUIsMHhGRSwweDJFLDB4QTYsMHgyRiwKKyAgICAweEVDLDB4
QUIsMHhBQiwweEEzLDB4ODUsMHhBRCwweDIxLDB4MkQsMHgwRCwweEFDLDB4Q0MsMHhBMywweDdG
LDB4N0QsMHg3RiwweDdBLAorICAgIDB4Q0IsMHhBMywweDhCLDB4OUIsMHhGRSwweDVDLDB4NTYs
MHg1RSwweDhBLDB4OUIsMHgyOSwweDkzLDB4NkUsMHhGOCwweDc4LDB4RDgsCisgICAgMHg2QSww
eDlCLDB4MjksMHg5MywweEVELDB4QTcsMHhDQSwweDdCLDB4NkEsMHg5QiwweDA5LDB4OEIsMHgz
RiwweERGLDB4RkUsMHhGRSwKKyAgICAweDZBLDB4OUIsMHgyQSwweDkzLDB4N0UsMHhGOSwweEFG
LDB4QUIsMHg2QSwweDlCLDB4MDgsMHg5MywweEFELDB4OEIsMHg4MiwweDAyLAorICAgIDB4NEEs
MHg5MywweEM4LDB4ODIsMHg3QSwweDY4LDB4NjAsMHg3MCwweEE4LDB4N0EsMHg0NiwweDcyLDB4
QTgsMHg1QSwweDc4LDB4RkUsCisgICAgMHg4OCwweDdBLDB4NDYsMHg3MiwweEJBLDB4NjksMHhF
OSwweEVGLDB4NjcsMHg3QSwweDA2LDB4NkEsMHg5MCwweEZFLDB4RUUsMHhBQSwKKyAgICAweDY3
LDB4N0EsMHgwNiwweDZBLDB4NjAsMHg3RSwweEZGLDB4REYsMHg0NywweDcyLDB4MDYsMHg2QSww
eDdCLDB4OEQsMHg3RiwweEU2LAorICAgIDB4MjYsMHg2QSwweEU2LDB4NjksMHg4MCwweEUwLDB4
QTgsMHhDMCwweDA2LDB4NkEsMHg2NCwweDUxLDB4NzgsMHhFQSwweEMwLDB4MDAsCisgICAgMHhF
NSwweDYxLDB4QzIsMHgzOCwweDdGLDB4N0UsMHg3QSwweEY4LDB4MjMsMHg0OSwweEMyLDB4Mzgs
MHhCRCwweEFELDB4MkIsMHg4MCwKKyAgICAweDIzLDB4NDEsMHhFMiwweDM4LDB4NUYsMHg1Nyww
eDVFLDB4NTgsMHhFMiwweDM4LDB4ODEsMHgzMCwweEEyLDB4MDAsMHhBQywweEJFLAorICAgIDB4
MDMsMHgzOSwweEMyLDB4MzgsMHhBQiwweEJCLDB4RkUsMHhFNywweDIzLDB4NDEsMHhFMywweDM4
LDB4MkQsMHhGQiwweEFELDB4QUQsCisgICAgMHg0NCwweDQ5LDB4RTMsMHgzOCwweEUyLDB4RUEs
MHhGRSwweDdCLDB4MDMsMHg0MSwweEUzLDB4MzgsMHhBQSwweDc2LDB4NEEsMHhFQiwKKyAgICAw
eDIzLDB4NDEsMHhFMywweDM4LDB4MEEsMHhFRCwweEY1LDB4NUYsMHgyNCwweDQxLDB4RTIsMHgz
OCwweEUwLDB4RjIsMHhGQSwweEUzLAorICAgIDB4MjQsMHg0MSwweEMyLDB4MzgsMHhFQSwweEJE
LDB4RUEsMHhBRSwweDI0LDB4NDEsMHhFMiwweDM4LDB4QUMsMHg3NywweERFLDB4OEEsCisgICAg
MHg0NCwweDQ5LDB4RTIsMHgzOCwweENBLDB4RkIsMHg1NywweEY1LDB4NDQsMHg0OSwweDAzLDB4
NDEsMHgyQSwweDVCLDB4RkQsMHg5RCwKKyAgICAweDQ0LDB4NDksMHgwMywweDQxLDB4RjgsMHg3
RiwweDVFLDB4RkUsMHg4NSwweDUxLDB4MjQsMHg0OSwweEEzLDB4QkQsMHhCRiwweDI3LAorICAg
IDB4QTUsMHg1OSwweDY1LDB4NTEsMHhGRSwweDhCLDB4MkYsMHg4RiwweDg1LDB4NTEsMHg0NCww
eDQ5LDB4QzMsMHg2RSwweDdDLDB4NUMsCisgICAgMHg0NCwweDQ5LDB4QzMsMHgzMCwweDU4LDB4
RjAsMHhFMCwweEY4LDB4MDQsMHgzOSwweEEyLDB4MzAsMHhENSwweDdGLDB4N0EsMHhGOCwKKyAg
ICAweEUzLDB4MzAsMHhBMiwweDMwLDB4OUMsMHg5RiwweDk1LDB4OTUsMHgyNCwweDM5LDB4QzMs
MHgzMCwweEZELDB4RkYsMHhFQiwweDgyLAorICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHg3Riww
eEJGLDB4RUEsMHhFQywweDA0LDB4MzksMHhDMywweDM4LDB4NTUsMHhGNSwweEFGLDB4QkQsCisg
ICAgMHgyMywweDQxLDB4RTMsMHgzOCwweDNELDB4RkQsMHhENSwweEJELDB4ODUsMHg1OSwweDAz
LDB4NDEsMHgwQiwweDBGLDB4QUQsMHhCRiwKKyAgICAweEE1LDB4NTksMHg2NSwweDUxLDB4MEYs
MHg4QSwweERCLDB4RkYsMHgyNiwweDZBLDB4ODUsMHg1MSwweEVCLDB4OEIsMHhBRiwweEY1LAor
ICAgIDB4QzYsMHg1OSwweDQ0LDB4NDksMHg3RSwweDVFLDB4RUMsMHhCQywweDQ0LDB4NDksMHgw
NCwweDQxLDB4N0YsMHgyOCwweEJBLDB4RjgsCisgICAgMHgyNCwweDQxLDB4RTMsMHgzOCwweEZD
LDB4RUUsMHhGRSwweEJDLDB4MDQsMHg0MSwweEMzLDB4MzgsMHhBMiwweEU4LDB4QjAsMHhGOCwK
KyAgICAweEUzLDB4MzgsMHhDMywweDM4LDB4MDAsMHgyMywweDAwLDB4MDgsMHgwMywweDM5LDB4
QzMsMHgzMCwweEFGLDB4QkYsMHgwRiwweDI4LAorICAgIDB4NjQsMHg0OSwweDAzLDB4MzksMHgy
QiwweDJGLDB4QkYsMHhCNSwweDY0LDB4NDEsMHgwMywweDQxLDB4NjgsMHg3RSwweEZFLDB4RkIs
CisgICAgMHg0NCwweDQxLDB4MDMsMHg0MSwweDU3LDB4RDUsMHhGRiwweEYzLDB4ODUsMHg0OSww
eDAzLDB4NDEsMHhCRCwweEFGLDB4QkQsMHhGRiwKKyAgICAweDg1LDB4NDksMHgyMywweDQxLDB4
NUUsMHhGRSwweDY4LDB4REEsMHg0NCwweDQxLDB4RTIsMHgzOCwweEFBLDB4QTIsMHhBQiwweDdG
LAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHg3OCwweEE4LDB4MkEsMHgwMCwweDAzLDB4Mzks
MHhDMiwweDMwLDB4MkYsMHhDQiwweEU4LDB4MjMsCisgICAgMHg0NCwweDM5LDB4RTMsMHgzOCww
eEJELDB4RkQsMHhERCwweDU1LDB4MjQsMHgzOSwweDAzLDB4MzksMHhEMCwweDVDLDB4NUUsMHg1
RCwKKyAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4QTIsMHhBOCwweEZFLDB4NzcsMHgwMywweDM5
LDB4RTIsMHgzMCwweEUwLDB4REUsMHhCQiwweEFELAorICAgIDB4MjMsMHg0MSwweEMyLDB4MzAs
MHhBRiwweDJCLDB4MEYsMHgyRiwweDQzLDB4NDEsMHhFMiwweDM4LDB4NkIsMHhGRSwweDJBLDB4
QUEsCisgICAgMHg4NSwweDQ5LDB4MjMsMHg0MSwweEY1LDB4N0QsMHg5NywweDNELDB4QTUsMHg1
MSwweDIzLDB4NDEsMHg3RCwweEVGLDB4NkEsMHg4MCwKKyAgICAweDg1LDB4NTEsMHgyMywweDQx
LDB4RjcsMHhGRiwweEVCLDB4MjAsMHg4NCwweDUxLDB4NDQsMHg0OSwweDVCLDB4NkEsMHhCQSww
eEM4LAorICAgIDB4QTYsMHg1MSwweDQ0LDB4NDksMHhGNSwweEZGLDB4RkYsMHhGOCwweEE1LDB4
NTksMHgyMywweDQxLDB4RDcsMHhGRiwweEEyLDB4MDIsCisgICAgMHhBNSwweDU5LDB4NjQsMHg1
MSwweDc1LDB4QTUsMHhFNSwweDg4LDB4QzUsMHg1OSwweDg0LDB4NTEsMHg4RCwweDJCLDB4QUIs
MHhGQiwKKyAgICAweEU2LDB4NjEsMHg4NCwweDU5LDB4NkEsMHhDNywweDI3LDB4M0YsMHhDNSww
eDYxLDB4ODQsMHg1OSwweEUzLDB4MDAsMHg4RSwweDlDLAorICAgIDB4MDYsMHg2QSwweDY0LDB4
NTksMHhGRCwweEZCLDB4QUEsMHgwMywweDA2LDB4NkEsMHg4NCwweDU5LDB4QjUsMHhCNywweDM3
LDB4M0UsCisgICAgMHg4OCwweDdBLDB4MDYsMHg2QSwweDJGLDB4QUYsMHhFRCwweEFGLDB4MDks
MHg4QiwweDQ2LDB4NzIsMHgyQSwweDhGLDB4QkQsMHhCNSwKKyAgICAweDA5LDB4OEIsMHhBOCww
eDgyLDB4MkYsMHhBNywweEE5LDB4MkYsMHgyRSwweEFDLDB4RTksMHg4MiwweDJELDB4MzUsMHgz
RCwweEI1LAorICAgIDB4MzUsMHhFRSwweEIwLDB4QkMsMHgwQiwweDBCLDB4MEIsMHgwOSwweDc2
LDB4RUUsMHgzNSwweEVFLDB4RkUsMHhFQSwweDJBLDB4MjgsCisgICAgMHg3NiwweEVFLDB4MzUs
MHhFNiwweEZGLDB4RkEsMHhBQSwweEFBLDB4NzYsMHhFRSwweDM1LDB4RTYsMHg3RSwweEVBLDB4
RTgsMHg2QSwKKyAgICAweDU1LDB4RUUsMHgzNSwweEU2LDB4N0YsMHhBOCwweEU4LDB4N0EsMHgx
NCwweEVFLDB4MzUsMHhFNiwweEZFLDB4NzUsMHhENSwweEY1LAorICAgIDB4MzUsMHhFNiwweEY0
LDB4REQsMHg4OCwweDg4LDB4QTgsMHg3OCwweEY0LDB4REQsMHgxMSwweEM1LDB4RjAsMHg3OCww
eDdDLDB4NUEsCisgICAgMHhCMywweENELDB4MzEsMHhDNSwweEFGLDB4OEYsMHgyRCwweDg5LDB4
QjMsMHhENSwweDUyLDB4QzUsMHgyQSwweEFBLDB4QkEsMHhGNiwKKyAgICAweEQzLDB4Q0QsMHg3
MywweENELDB4NUYsMHhERiwweDZGLDB4N0QsMHg5MywweENELDB4NTIsMHhDNSwweDdGLDB4NkEs
MHhCQiwweEJFLAorICAgIDB4NzMsMHhDRCwweDEyLDB4QkQsMHhGRiwweDdBLDB4N0EsMHg2OCww
eDMyLDB4QzUsMHgxMSwweEJELDB4NjAsMHhFQSwweDA5LDB4MEEsCisgICAgMHgzMiwweEM1LDB4
RDAsMHhCNCwweEZGLDB4NkEsMHhFQSwweEE4LDB4MTEsMHhCRCwweEIwLDB4QjQsMHgwQSwweDhC
LDB4RTgsMHg2QSwKKyAgICAweEYxLDB4QjQsMHg4OSwweDcyLDB4ODAsMHhBOCwweEZFLDB4NUUs
MHg5MCwweEFDLDB4QUQsMHg5MywweEZFLDB4QkYsMHhBRCwweDJELAorICAgIDB4QjAsMHhCNCww
eDRGLDB4QTQsMHgwNSwweDBCLDB4MkEsMHgwQiwweEQwLDB4QjQsMHg5MCwweEFDLDB4OEIsMHhE
RSwweDdFLDB4RkIsCisgICAgMHhEMSwweEI0LDB4NkYsMHhBQywweDBBLDB4MUQsMHhBQiwweDhB
LDB4RDEsMHhCNCwweDhGLDB4QUMsMHg5RiwweDNFLDB4RkMsMHgwOCwKKyAgICAweEQxLDB4QjQs
MHg5MCwweEFDLDB4RkEsMHhCQywweEZBLDB4MkEsMHhEMSwweEI0LDB4OEYsMHhBQywweDg4LDB4
RjgsMHg3QiwweDVGLAorICAgIDB4ODQsMHg1OSwweDQzLDB4NTEsMHgzRiwweDJFLDB4NkEsMHgy
QiwweDg0LDB4NTksMHgyMiwweDUxLDB4QTgsMHhBMiwweEU5LDB4QkYsCisgICAgMHg4NCwweDU5
LDB4MjMsMHg1MSwweEZGLDB4RkEsMHhGQiwweEUyLDB4NjQsMHg1MSwweDIzLDB4NTEsMHhBRiww
eEY2LDB4QUIsMHhBOSwKKyAgICAweDYzLDB4NTksMHgyMiwweDUxLDB4OEEsMHg4MiwweDhELDB4
MDIsMHg4NCwweDU5LDB4NDMsMHg1OSwweEVCLDB4RkYsMHhCRCwweEI1LAorICAgIDB4QTQsMHg2
MSwweDY0LDB4NTksMHhERiwweEZFLDB4M0IsMHgxQSwweDg0LDB4NjEsMHg0MywweDU5LDB4RUEs
MHhGRiwweDRFLDB4N0UsCisgICAgMHhBNCwweDYxLDB4MjMsMHg1MSwweEU4LDB4RkEsMHg3Riww
eEY1LDB4NjMsMHg2MSwweDQzLDB4NTEsMHhBOSwweENGLDB4RUQsMHhBQiwKKyAgICAweDYzLDB4
NTksMHgyMywweDUxLDB4RkYsMHhBQSwweEEzLDB4RUEsMHg2NCwweDU5LDB4NDMsMHg1OSwweEY1
LDB4RTIsMHg0QiwweDY1LAorICAgIDB4NDQsMHg1OSwweDIzLDB4NTEsMHgyRSwweDJDLDB4MEUs
MHg0RCwweDQzLDB4NTksMHgyMywweDUxLDB4RDgsMHg5RSwweDdDLDB4QjgsCisgICAgMHg0Myww
eDU5LDB4MDMsMHg1MSwweEZGLDB4NTYsMHhGQywweEJFLDB4NDMsMHg1MSwweDAzLDB4NDksMHg3
OCwweDY5LDB4QUEsMHhCMCwKKyAgICAweDIzLDB4NTEsMHgwMywweDQ5LDB4NzcsMHg3NSwweDYy
LDB4NUMsMHgwMywweDQ5LDB4RTIsMHg0OCwweEIyLDB4REQsMHg1NywweDBDLAorICAgIDB4MjMs
MHg1MSwweEUyLDB4NDgsMHhBMiwweDIyLDB4RTgsMHg2QSwweDI0LDB4NTEsMHhFMiwweDQ4LDB4
QjYsMHhFRSwweEY1LDB4QUQsCisgICAgMHg2MywweDU5LDB4RTIsMHg0MCwweEZGLDB4QkYsMHhB
RCwweDJELDB4NEEsMHg5MywweDgzLDB4NTksMHgyNSwweDJELDB4MjksMHgwQiwKKyAgICAweEFC
LDB4QTMsMHg0QSwweDlCLDB4Q0YsMHhGRiwweDJBLDB4MDIsMHhFQywweEFCLDB4NkIsMHg5Qiww
eEE1LDB4OEYsMHgyQSwweDBCLAorICAgIDB4RUMsMHhBQiwweEFCLDB4QTMsMHgzRCwweEU2LDB4
NkMsMHhGOCwweEVDLDB4QUIsMHg4QSwweDlCLDB4MDgsMHhDOCwweEZCLDB4NTcsCisgICAgMHhD
QiwweEEzLDB4OEEsMHg5QiwweEZCLDB4Q0UsMHhFQiwweDU1LDB4QUIsMHhBMywweDZBLDB4OUIs
MHg1NywweEU4LDB4RUUsMHhBOSwKKyAgICAweDhCLDB4OUIsMHgyOSwweDkzLDB4N0IsMHhGRSww
eEJBLDB4QTgsMHg4QiwweDlCLDB4NDksMHg5MywweDU1LDB4RDUsMHhFRSwweDAyLAorICAgIDB4
OEEsMHg5QiwweDRBLDB4OTMsMHg3RCwweERGLDB4NkIsMHhGMiwweDZBLDB4OUIsMHgyQSwweDkz
LDB4QUUsMHhBQywweEJGLDB4RkUsCisgICAgMHg2QSwweDlCLDB4ODcsMHg4MiwweDY4LDB4NjIs
MHhFQSwweEZBLDB4QTgsMHg3QSwweDQ2LDB4NzIsMHhGQywweERFLDB4N0YsMHg3RSwKKyAgICAw
eDY3LDB4NzIsMHgwNiwweDcyLDB4OEEsMHgyMiwweEVBLDB4OEEsMHg2NywweDcyLDB4MjYsMHg3
MiwweEVBLDB4RTgsMHhGRSwweEY5LAorICAgIDB4NDcsMHg3MiwweDA1LDB4NkEsMHhCQiwweEVF
LDB4N0EsMHgyMCwweDQ3LDB4NzIsMHgwNiwweDZBLDB4Q0EsMHhBMiwweDdBLDB4NzgsCisgICAg
MHg0NywweDcyLDB4MDYsMHg2QSwweDY5LDB4RkEsMHg3RiwweDU3LDB4MjYsMHg2QSwweDA2LDB4
NkEsMHg2RiwweEQ3LDB4MzcsMHgyNSwKKyAgICAweDA2LDB4NjIsMHg0MywweDUxLDB4NzgsMHhF
MCwweDgwLDB4ODAsMHhBNSwweDU5LDB4MDMsMHg0MSwweDVGLDB4N0YsMHhGQSwweEU4LAorICAg
IDB4MjMsMHg0MSwweEUyLDB4MzgsMHg3MCwweDYyLDB4QjgsMHhFQywweDAzLDB4NDEsMHhBMSww
eDMwLDB4RkYsMHg3RSwweEZBLDB4QzgsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEFELDB4
ODMsMHhBMSwweDNGLDB4NDQsMHg0OSwweEUyLDB4MzgsMHhBRCwweEFELDB4OEIsMHhBQiwKKyAg
ICAweDQ0LDB4NDksMHhFMiwweDM4LDB4NUUsMHg3QSwweEU4LDB4QTgsMHhFMywweDQwLDB4MDMs
MHgzOSwweDdFLDB4RDcsMHhGRCwweDNGLAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhBOCww
eEY4LDB4RkEsMHhGQSwweDAzLDB4NDEsMHhDMiwweDM4LDB4ODIsMHhBRSwweEY3LDB4RjcsCisg
ICAgMHgyNCwweDQxLDB4RTMsMHgzOCwweEJGLDB4M0QsMHhCRCwweEJELDB4NDQsMHg0MSwweDAz
LDB4NDEsMHhGNywweEZGLDB4QUYsMHhBQSwKKyAgICAweDQ0LDB4NDksMHgwMywweDQxLDB4RTUs
MHhCQiwweEVBLDB4ODIsMHgyNCwweDQ5LDB4MDMsMHg0MSwweEJGLDB4N0EsMHgyMywweDBCLAor
ICAgIDB4NDQsMHg0OSwweDAzLDB4NDEsMHhCQiwweENGLDB4QkIsMHhCRiwweEM2LDB4NjEsMHg0
NCwweDQ5LDB4RkQsMHhBNSwweDJELDB4QUQsCisgICAgMHhDNiwweDYxLDB4NjUsMHg1MSwweEZE
LDB4RkYsMHhGQSwweENBLDB4ODYsMHg1MSwweDA0LDB4NDEsMHhFRSwweDdDLDB4RkUsMHhFQSwK
KyAgICAweDI0LDB4NDEsMHhDMywweDM4LDB4RTAsMHhDQSwweEVBLDB4RTYsMHgwMywweDM5LDB4
QzMsMHgzOCwweDVELDB4RkIsMHg3MiwweEZFLAorICAgIDB4RTMsMHgzOCwweEEyLDB4MzAsMHg1
RCwweDVFLDB4REUsMHg1RSwweDQ1LDB4NDEsMHhDMywweDMwLDB4ODEsMHhGQiwweEZELDB4RjUs
CisgICAgMHgwMywweDM5LDB4QzMsMHgzMCwweEZFLDB4RUYsMHhGRSwweEUwLDB4MjQsMHg0MSww
eEMzLDB4MzAsMHhCRiwweEFCLDB4RjksMHhDRCwKKyAgICAweDQ0LDB4NDEsMHhFMywweDQwLDB4
RkYsMHhBQSwweDg5LDB4QkYsMHg2NSwweDQ5LDB4MDMsMHg0MSwweDNELDB4QkYsMHgzRSwweEFC
LAorICAgIDB4ODUsMHg1MSwweDQ0LDB4NDksMHhBQSwweDVBLDB4RkIsMHhFRiwweDg1LDB4NTEs
MHgyNCwweDQ5LDB4MkIsMHhBQiwweEZFLDB4N0EsCisgICAgMHg4NSwweDU5LDB4MDQsMHg0OSww
eDg4LDB4RkEsMHhGQSwweDdELDB4NDQsMHg0OSwweEUzLDB4MzgsMHhDMCwweEY4LDB4RUYsMHhG
RSwKKyAgICAweDA0LDB4NDEsMHhDMywweDM4LDB4QTIsMHgwQiwweDJGLDB4M0YsMHgwNCwweDQx
LDB4QzMsMHgzOCwweDY4LDB4RUEsMHg3MCwweEIwLAorICAgIDB4MjQsMHg0MSwweEMzLDB4Mzgs
MHhENywweEZELDB4QUIsMHgyOSwweDA0LDB4NDEsMHhDMywweDM4LDB4QTgsMHhFRiwweEFGLDB4
RUYsCisgICAgMHg0NCwweDQxLDB4QzIsMHgzMCwweDJGLDB4OEIsMHgyRiwweEI3LDB4NjUsMHg0
OSwweDA0LDB4NDEsMHhFQiwweEZCLDB4RUUsMHhGRSwKKyAgICAweDQ0LDB4NDEsMHgyMywweDQx
LDB4NTUsMHhENSwweDlELDB4NTcsMHg2NCwweDQ5LDB4RTMsMHgzOCwweEFBLDB4MkIsMHhGQSww
eEQ3LAorICAgIDB4NDQsMHg0MSwweDAzLDB4MzksMHhFQSwweDdFLDB4RkEsMHhFOCwweDIzLDB4
NDEsMHhDMiwweDMwLDB4QTgsMHhGRSwweEZBLDB4NUEsCisgICAgMHgwMywweDM5LDB4QzIsMHgz
MCwweDgwLDB4QTAsMHhBQiwweDhELDB4QzIsMHgzOCwweEUyLDB4MzAsMHg3NywweEY3LDB4RjUs
MHhERCwKKyAgICAweEUzLDB4MzgsMHhDMiwweDMwLDB4QTIsMHhBMywweDNFLDB4MkEsMHgwMyww
eDM5LDB4QzIsMHgzMCwweEUyLDB4RTgsMHg4QSwweEFGLAorICAgIDB4MDMsMHgzOSwweEMyLDB4
MzAsMHhGRiwweEZCLDB4QUEsMHhBOCwweDI0LDB4MzksMHhDMywweDMwLDB4RkQsMHhGQiwweEJG
LDB4QUIsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDJGLDB4OEEsMHgwMCwweDgwLDB4MjMs
MHg0MSwweEUzLDB4MzgsMHgwQSwweDNCLDB4M0IsMHhBRCwKKyAgICAweDg1LDB4NTEsMHgyMyww
eDQxLDB4QkQsMHhBQiwweDM3LDB4QkQsMHhDNSwweDUxLDB4NjQsMHg0OSwweDBCLDB4QUYsMHhG
QSwweEZCLAorICAgIDB4QzYsMHg1OSwweDg1LDB4NTEsMHg3QSwweDZFLDB4RkEsMHg1NSwweDg0
LDB4NTEsMHg2NCwweDUxLDB4REYsMHhGMiwweEVCLDB4NzksCisgICAgMHg4NSwweDUxLDB4MjMs
MHg0OSwweDAwLDB4MDIsMHhCRSwweDdFLDB4RTYsMHg2MSwweDQzLDB4NDksMHhBQiwweDBBLDB4
MEIsMHhBRCwKKyAgICAweDA2LDB4NjIsMHhDNiwweDYxLDB4NzUsMHg1QSwweEYyLDB4QTEsMHgw
NiwweDZBLDB4QTUsMHg1OSwweDdELDB4RkIsMHhCRSwweDNGLAorICAgIDB4MjcsMHg2QSwweEE0
LDB4NTksMHhENSwweERGLDB4NzgsMHhGMiwweDA2LDB4NkEsMHhDNSwweDYxLDB4NUEsMHg2RSww
eDIxLDB4OUYsCisgICAgMHg0NywweDcyLDB4ODQsMHg1OSwweDBGLDB4MjcsMHhCNywweEJGLDB4
QTgsMHg4MiwweDA2LDB4NkEsMHg1RCwweEZGLDB4QTksMHg4MSwKKyAgICAweDY3LDB4N0EsMHgw
NiwweDZBLDB4MEQsMHhGNSwweERGLDB4N0UsMHhDOSwweDgyLDB4NDYsMHg3MiwweDBGLDB4MkIs
MHgyOSwweEE1LAorICAgIDB4MDksMHg4QiwweEM4LDB4ODIsMHhGNSwweEQ1LDB4QkEsMHhBOSww
eDZCLDB4OTMsMHhFOSwweDgyLDB4MzUsMHgzRCwweDI3LDB4MkQsCisgICAgMHgxNSwweEU2LDB4
RUQsMHhBMywweDA5LDB4MEQsMHgyRCwweDJELDB4NzUsMHhFRSwweDM1LDB4RUUsMHg4QSwweDhC
LDB4RUQsMHhGNSwKKyAgICAweDc1LDB4RUUsMHgzNSwweEU2LDB4OEEsMHhBOCwweEVFLDB4RkQs
MHg1NSwweEVFLDB4MTUsMHhFNiwweDg4LDB4ODgsMHhBOCwweDQyLAorICAgIDB4NTUsMHhFRSww
eDE0LDB4RTYsMHg4QSwweEVFLDB4RkYsMHg1NSwweDM1LDB4RTYsMHhGNCwweERELDB4QTAsMHhF
OCwweEZBLDB4N0IsCisgICAgMHgxNCwweERFLDB4QjQsMHhENSwweEMwLDB4ODAsMHg2OCwweDdF
LDB4OTMsMHhENSwweEYxLDB4QkMsMHhEQywweEE4LDB4QUMsMHhBRSwKKyAgICAweEI0LDB4RDUs
MHg1MiwweEM1LDB4QTksMHg4QiwweEFBLDB4QTAsMHg5MywweENELDB4MzIsMHhDNSwweEJBLDB4
RTgsMHg2OCwweEVBLAorICAgIDB4NzIsMHhDRCwweDMyLDB4QzUsMHgwMCwweDgzLDB4MkQsMHhF
RiwweDczLDB4Q0QsMHg5MywweEM1LDB4ODIsMHhBQSwweDdDLDB4QUEsCisgICAgMHg3MywweEM1
LDB4MzIsMHhDNSwweEY4LDB4RUEsMHhFQSwweEFBLDB4NTIsMHhDNSwweDExLDB4QkQsMHhCQSww
eEZFLDB4RjcsMHg2NywKKyAgICAweDMyLDB4QzUsMHhGMSwweEJDLDB4QUMsMHhBQiwweDdGLDB4
NUUsMHgzMiwweEM1LDB4RUQsMHg5QiwweEU4LDB4RTgsMHg2QSwweDdBLAorICAgIDB4RUUsMHg5
QiwweDg5LDB4NzIsMHg1NCwweDlFLDB4QkUsMHgyQSwweDRGLDB4QTQsMHg2QywweDhCLDB4MkQs
MHgyQiwweDBCLDB4MDIsCisgICAgMHhEMSwweEI0LDB4NkYsMHhBQywweDI1LDB4RkQsMHhCNSww
eEY1LDB4RDAsMHhCNCwweDkwLDB4QUMsMHhGNiwweDNCLDB4QjUsMHhCNSwKKyAgICAweEQxLDB4
QjQsMHg4RiwweEFDLDB4QUEsMHhFRiwweDJCLDB4QjAsMHhEMCwweEI0LDB4NkYsMHhBQywweEEw
LDB4RkUsMHg3RSwweDU3LAorICAgIDB4QjAsMHhCNCwweDRGLDB4QTQsMHgwMCwweEFBLDB4QTYs
MHhCNywweEIwLDB4QjQsMHg0RiwweEE0LDB4QjAsMHhCQiwweEFGLDB4QjUsCisgICAgMHg2Myww
eDU5LDB4MjIsMHg0OSwweDgzLDB4RkEsMHg3QSwweDVCLDB4ODQsMHg1OSwweDIyLDB4NTEsMHhC
QiwweEVELDB4M0IsMHgzRiwKKyAgICAweDYzLDB4NTksMHgyMywweDUxLDB4MDAsMHg4MywweDND
LDB4MkYsMHg4NCwweDU5LDB4MjIsMHg0OSwweEY2LDB4QTIsMHhBQywweEJBLAorICAgIDB4ODQs
MHg2MSwweDYzLDB4NTksMHg1NSwweDc5LDB4NEIsMHg0NSwweDg0LDB4NjEsMHg0MywweDU5LDB4
MkQsMHgyQiwweDJCLDB4MEUsCisgICAgMHg4NCwweDYxLDB4NjMsMHg1OSwweDE1LDB4QjYsMHhG
RSwweDdBLDB4ODQsMHg1OSwweDQzLDB4NTksMHhFRSwweEJFLDB4RkUsMHhGRSwKKyAgICAweDg0
LDB4NjEsMHgyMywweDUxLDB4RkYsMHhBQSwweEJBLDB4NjgsMHg2MywweDU5LDB4MDIsMHg1MSww
eEEyLDB4MEEsMHhCOCwweDdGLAorICAgIDB4NjMsMHg1OSwweDIzLDB4NTEsMHgyQSwweDAyLDB4
MkIsMHg3RiwweDg0LDB4NjEsMHgyMywweDUxLDB4RkEsMHhFOCwweERCLDB4RjcsCisgICAgMHg2
NCwweDU5LDB4MjMsMHg1MSwweEZBLDB4RkUsMHg2MiwweDZGLDB4NDQsMHg1MSwweDAzLDB4NTEs
MHg4QSwweDAyLDB4MEIsMHg2QiwKKyAgICAweDQ0LDB4NTEsMHgwMywweDQ5LDB4N0UsMHg2QSww
eDczLDB4NjgsMHg0MywweDUxLDB4RTEsMHg0OCwweEEwLDB4RUEsMHhGQiwweEVBLAorICAgIDB4
MjMsMHg1MSwweEUyLDB4NDgsMHhBQSwweEE1LDB4RDUsMHhGQiwweDIzLDB4NTEsMHhFMywweDQ4
LDB4RUYsMHhFOCwweEFBLDB4QUEsCisgICAgMHgyMywweDUxLDB4QzIsMHg0OCwweEEyLDB4QUEs
MHhCQSwweDc4LDB4MjMsMHg1MSwweEMyLDB4NDgsMHhBQSwweEVGLDB4QjcsMHgyNSwKKyAgICAw
eEU2LDB4NjksMHgwMywweDUxLDB4RjUsMHgzNSwweDNELDB4MkYsMHg2QSwweDlCLDB4MjUsMHg3
MiwweDI5LDB4MDEsMHgwMywweDAyLAorICAgIDB4Q0MsMHhBMywweDhCLDB4OUIsMHhFRiwweEVG
LDB4RUQsMHg4QiwweEFDLDB4QTMsMHg4QiwweDlCLDB4MEEsMHhGOSwweDc5LDB4NjIsCisgICAg
MHhBQiwweEEzLDB4MjksMHg5MywweDgwLDB4N0EsMHhGRSwweEZFLDB4NjksMHg5QiwweDI4LDB4
OTMsMHg4QSwweEFELDB4QUEsMHg4MCwKKyAgICAweDhBLDB4OUIsMHg0OSwweDkzLDB4OEIsMHhB
QiwweDJGLDB4QkYsMHg4QSwweDlCLDB4NDksMHg5MywweDAwLDB4ODIsMHhGQywweDdBLAorICAg
IDB4OEIsMHg5QiwweDI5LDB4OTMsMHg4MCwweDMyLDB4RUIsMHg3RiwweDhCLDB4OUIsMHgwOSww
eDhCLDB4ODgsMHgyOCwweEZCLDB4NTUsCisgICAgMHg4QiwweEEzLDB4MDksMHg5MywweEEyLDB4
RTAsMHhFRiwweEVELDB4NEEsMHg5MywweEU5LDB4OEEsMHg4MCwweEE4LDB4RjgsMHhGRiwKKyAg
ICAweDA5LDB4OEIsMHg2NywweDdBLDB4RTAsMHhGOCwweEU4LDB4NzgsMHg4NywweDdBLDB4MjYs
MHg3MiwweERDLDB4RkEsMHhGRSwweERFLAorICAgIDB4NjcsMHg3QSwweDI2LDB4NkEsMHg2Riww
eDVCLDB4OEEsMHhGRiwweDQ2LDB4NzIsMHgwNSwweDZBLDB4QkIsMHhERSwweDgwLDB4MDIsCisg
ICAgMHg0NiwweDcyLDB4MDYsMHg2QSwweDNBLDB4RkEsMHg4QiwweEVCLDB4NDcsMHg3MiwweDA2
LDB4NkEsMHg1QywweERFLDB4N0IsMHhCNSwKKyAgICAweDI2LDB4NkEsMHhFNSwweDY5LDB4QUQs
MHgzNiwweEJBLDB4QTgsMHg0NywweDcyLDB4MDYsMHg2QSwweEMxLDB4QUIsMHgyOSwweDBGLAor
ICAgIDB4NjgsMHg3MiwweDA2LDB4NkEsMHg3QSwweDdBLDB4QjAsMHgyMiwweDY3LDB4NzIsMHg0
MywweDQ5LDB4N0UsMHhGQSwweEY4LDB4RTAsCisgICAgMHg2NCwweDQ5LDB4RTMsMHg0MCwweDc3
LDB4NUUsMHhGRSwweEY4LDB4MDMsMHg0MSwweEMyLDB4MzgsMHhBOCwweDBBLDB4ODAsMHg3OCwK
KyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4MDIsMHhBMiwweEVCLDB4RjksMHgyNCwweDQxLDB4
QzIsMHgzOCwweDBBLDB4MkUsMHhCQiwweEE5LAorICAgIDB4NDQsMHg0OSwweDAzLDB4MzksMHgw
MiwweEMwLDB4RUYsMHhBNSwweDIzLDB4NDEsMHhFMiwweDM4LDB4NUYsMHhEQSwweERFLDB4QzIs
CisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEYyLDB4Q0EsMHhFOCwweEZBLDB4MDMsMHgzOSww
eEMyLDB4MzgsMHhCNywweEVGLDB4M0YsMHhERiwKKyAgICAweDI0LDB4NDEsMHhDMiwweDM4LDB4
QUYsMHgyRiwweDJGLDB4OUYsMHg2NCwweDQ5LDB4MDMsMHg0MSwweEJELDB4QUYsMHgyRCwweDBE
LAorICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHhGQSwweEY4LDB4RTgsMHg1OCwweDI0LDB4NDks
MHgwMywweDQxLDB4OEEsMHgyMiwweDBBLDB4MkYsCisgICAgMHg0NCwweDQ5LDB4MjQsMHg0OSww
eDM3LDB4MUEsMHhEQywweDk0LDB4QTYsMHg1OSwweDQ0LDB4NDksMHgyRiwweDBGLDB4M0YsMHhC
RCwKKyAgICAweEM2LDB4NTksMHg2NSwweDUxLDB4QzIsMHhFMiwweDYwLDB4RkIsMHg4NSwweDUx
LDB4MjMsMHg0MSwweDZCLDB4NkEsMHhFRSwweEUwLAorICAgIDB4MjQsMHg0MSwweEMyLDB4Mzgs
MHhGRiwweEQ3LDB4NzYsMHg3OCwweDI0LDB4NDEsMHhDMywweDM4LDB4N0YsMHhGRiwweDczLDB4
RjMsCisgICAgMHhFMywweDMwLDB4QTIsMHgzMCwweDc3LDB4RkQsMHhCRSwweDJFLDB4MDMsMHgz
OSwweEMzLDB4MzAsMHhCNSwweEQ1LDB4QjcsMHgyRiwKKyAgICAweDQ1LDB4NDEsMHgwNCwweDM5
LDB4NTUsMHg3QSwweEUzLDB4N0IsMHgwMywweDM5LDB4RTMsMHgzOCwweEM5LDB4QkYsMHhERiww
eDFGLAorICAgIDB4MjQsMHg0MSwweEMyLDB4MzgsMHhCQSwweDlGLDB4MkUsMHgyMiwweDQ0LDB4
NDksMHgwNCwweDQxLDB4MEEsMHgyQiwweDI5LDB4MEQsCisgICAgMHg2NSwweDUxLDB4NDQsMHg0
OSwweEY1LDB4RkQsMHhCQiwweDc1LDB4NDQsMHg0OSwweDAzLDB4NDEsMHg4OCwweEVBLDB4RTgs
MHhFMCwKKyAgICAweDI0LDB4NDEsMHhFMywweDQwLDB4MEEsMHgwRiwweDI3LDB4OEEsMHgyNCww
eDQxLDB4RTMsMHgzOCwweEU4LDB4NzAsMHg1OCwweDZBLAorICAgIDB4MDMsMHg0MSwweEUzLDB4
MzgsMHhENywweEQ3LDB4N0YsMHhGQiwweDI0LDB4NDEsMHhFMywweDM4LDB4QkYsMHhCRiwweDU3
LDB4NUIsCisgICAgMHgyNCwweDQxLDB4MDMsMHgzOSwweDI3LDB4MUUsMHhGNiwweDdGLDB4MjQs
MHg0MSwweEUzLDB4MzgsMHg3OCwweDc4LDB4NkIsMHhBRiwKKyAgICAweDI0LDB4NDEsMHhFMyww
eDM4LDB4QkQsMHhGRCwweDNELDB4MzcsMHg2NSwweDQ5LDB4MDMsMHg0MSwweEZBLDB4RUEsMHg2
MiwweEU5LAorICAgIDB4NDQsMHg0OSwweEUzLDB4MzgsMHhBRiwweDZBLDB4MEIsMHgwQSwweDQ0
LDB4NDksMHhDMiwweDMwLDB4N0UsMHhGQSwweEU4LDB4RTAsCisgICAgMHgyMywweDQxLDB4QzIs
MHgzMCwweDhBLDB4REEsMHg1RSwweDUyLDB4RTIsMHgzOCwweEMyLDB4MzAsMHg3QywweEY2LDB4
QzUsMHgyQiwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4MkQsMHhFRCwweEFCLDB4MkEsMHgy
MywweDM5LDB4QzIsMHgzMCwweEY3LDB4OTcsMHg4RiwweEFFLAorICAgIDB4MjQsMHgzOSwweEMy
LDB4MzAsMHhGRCwweEJGLDB4RUIsMHgyQSwweDIzLDB4MzksMHhFMywweDMwLDB4RkQsMHhGRSww
eEQ0LDB4N0UsCisgICAgMHgyNCwweDM5LDB4QzMsMHgzMCwweEZFLDB4RkYsMHhGRSwweEEzLDB4
MjMsMHgzOSwweEUzLDB4MzgsMHgyQiwweDg5LDB4QjcsMHhGNSwKKyAgICAweDQ0LDB4NDEsMHhF
MywweDMwLDB4N0YsMHhFRiwweEJBLDB4OEIsMHgyMywweDQxLDB4RTIsMHgzOCwweEVELDB4N0Qs
MHhGRiwweDhCLAorICAgIDB4NDQsMHg0MSwweEUzLDB4MzgsMHgwOSwweEY1LDB4REIsMHhENSww
eDg1LDB4NTEsMHgwMywweDQxLDB4ODIsMHhFMywweEZGLDB4RkQsCisgICAgMHg4NSwweDUxLDB4
MDIsMHgzOSwweDI4LDB4OEEsMHhCNSwweDU3LDB4ODQsMHg1MSwweDIzLDB4NDEsMHgyMCwweEJB
LDB4RUEsMHg3RiwKKyAgICAweDg0LDB4NTEsMHgwMywweDQxLDB4NjgsMHg2QSwweEZFLDB4QUYs
MHhBNSwweDU5LDB4MDMsMHg0MSwweDI5LDB4MkQsMHhBRiwweDJGLAorICAgIDB4MDYsMHg2Miww
eEE1LDB4NTksMHg4QiwweEJGLDB4QUQsMHgyQiwweDI2LDB4NkEsMHhDNSwweDYxLDB4REMsMHhB
QiwweDhCLDB4QjcsCisgICAgMHgyNywweDZBLDB4QzYsMHg2MSwweEVCLDB4QkYsMHgzNywweDU2
LDB4NjcsMHg3QSwweEU1LDB4NjksMHg1RiwweEVBLDB4QzgsMHgwMywKKyAgICAweDI2LDB4NzIs
MHhDNiwweDYxLDB4QjcsMHhCRiwweEZGLDB4RkMsMHg4OCwweDdBLDB4MDYsMHg2QSwweDBELDB4
QUQsMHhGNywweEQ1LAorICAgIDB4NjgsMHg3QSwweDA2LDB4NkEsMHg3OCwweDdBLDB4NzcsMHg2
QiwweEE4LDB4N0EsMHhDNCwweDYxLDB4MkIsMHhBQiwweEJGLDB4RjUsCisgICAgMHgwOSwweDhC
LDB4NjcsMHg3MiwweDBBLDB4MDksMHhBRCwweEJELDB4MjksMHg4QiwweEU4LDB4ODIsMHgwRCww
eEZELDB4RkYsMHg1RCwKKyAgICAweEQ0LDB4REQsMHg2QSwweDkzLDB4MkQsMHgyRCwweDM1LDB4
QjUsMHg1NSwweEVFLDB4RDMsMHhERCwweDBBLDB4MkIsMHhBOSwweDJELAorICAgIDB4NTUsMHhF
RSwweDM1LDB4RTYsMHhCRiwweDMzLDB4QUYsMHhGRiwweDU1LDB4RUUsMHgxNSwweEU2LDB4RUEs
MHhCQSwweEZFLDB4RkYsCisgICAgMHgzNSwweEU2LDB4MTQsMHhFNiwweEY3LDB4N0UsMHhGQSww
eDU2LDB4MTQsMHhFNiwweEIzLDB4RDUsMHhBOCwweEU4LDB4RkUsMHg1QSwKKyAgICAweEQ0LDB4
REQsMHgzMiwweEM1LDB4QTAsMHhFOCwweEZBLDB4N0EsMHg5MywweENELDB4MTEsMHhCRCwweDJG
LDB4MkUsMHgwOSwweDJELAorICAgIDB4QjQsMHhENSwweDkzLDB4Q0QsMHg2QSwweDRCLDB4N0Ys
MHg3QiwweDkzLDB4Q0QsMHg3MywweENELDB4NzIsMHg2QSwweEVFLDB4NjgsCisgICAgMHg1Miww
eEM1LDB4MzIsMHhCRCwweDM4LDB4QkEsMHg3OCwweDM4LDB4NzIsMHhDRCwweDMyLDB4QzUsMHgw
OCwweDhBLDB4RUEsMHhEQSwKKyAgICAweDczLDB4Q0QsMHgzMiwweEM1LDB4OEEsMHhFRiwweDVE
LDB4NzcsMHgzMiwweEM1LDB4RjEsMHhCQywweEZFLDB4QkMsMHhFQywweDY4LAorICAgIDB4MTIs
MHhCRCwweEIwLDB4QjQsMHhFMCwweEZDLDB4NUYsMHg3NiwweEIwLDB4QjQsMHgwRSwweDlDLDB4
NjAsMHhGOCwweEU4LDB4NzgsCisgICAgMHgyRSwweEE0LDB4QUMsMHg5MywweDE3LDB4M0YsMHgz
RSwweEZBLDB4NkYsMHhBQywweDBGLDB4OUMsMHhBRCwweDJBLDB4MDMsMHhBOSwKKyAgICAweEIw
LDB4QjQsMHg2RiwweEFDLDB4RDUsMHg5NSwweEI5LDB4QkQsMHhEMSwweEI0LDB4NkYsMHhBQyww
eDI3LDB4M0IsMHhFRSwweEZFLAorICAgIDB4QjEsMHhCNCwweDRGLDB4QTQsMHhGOCwweEY4LDB4
RkYsMHg1RiwweDZGLDB4QTQsMHgyRiwweEE0LDB4QjIsMHgyQSwweEVCLDB4QUIsCisgICAgMHg4
RiwweEFDLDB4NEYsMHhBNCwweDJGLDB4QUYsMHhFQSwweEZCLDB4QjAsMHhBQywweDRGLDB4QTQs
MHhGNSwweEI3LDB4MDksMHgwRiwKKyAgICAweDYzLDB4NTksMHgwMiwweDUxLDB4N0UsMHhFRSww
eDJELDB4QUYsMHg2MywweDU5LDB4MjIsMHg1MSwweDNELDB4MkYsMHgwMiwweEUwLAorICAgIDB4
ODQsMHg1OSwweDIzLDB4NTEsMHg4NywweENBLDB4QTgsMHhFMywweDg0LDB4NTksMHgyMiwweDUx
LDB4N0UsMHhBMywweDgwLDB4MkIsCisgICAgMHhBNSwweDYxLDB4NjMsMHg1OSwweDI1LDB4RDUs
MHhGNSwweEVCLDB4QzUsMHg2MSwweDQzLDB4NTksMHhBRiwweDJGLDB4RTcsMHhGRCwKKyAgICAw
eDg0LDB4NjEsMHg0MywweDU5LDB4RTAsMHhGOCwweEVFLDB4N0UsMHg4NCwweDYxLDB4MjMsMHg1
OSwweEZDLDB4REIsMHhFQiwweERBLAorICAgIDB4NjQsMHg1OSwweDIzLDB4NTEsMHhBMiwweEZC
LDB4N0IsMHg1QSwweDYzLDB4NTksMHgyMywweDUxLDB4RkYsMHhEOCwweEJELDB4QTksCisgICAg
MHg2MywweDU5LDB4MjMsMHg1MSwweDdGLDB4QUEsMHg4QSwweDZFLDB4NjQsMHg1MSwweDAyLDB4
NTEsMHhBRSwweEI0LDB4QkEsMHhBQSwKKyAgICAweDQzLDB4NTksMHgwMywweDUxLDB4RTgsMHhB
OCwweEZGLDB4RkEsMHg0MywweDUxLDB4MDMsMHg0OSwweEFGLDB4QkUsMHhBRiwweEJFLAorICAg
IDB4NjQsMHg1OSwweDAyLDB4NDksMHhGOCwweEQyLDB4NUIsMHg3RiwweDIzLDB4NTEsMHgwMyww
eDQ5LDB4ODgsMHgzOCwweDBCLDB4MDMsCisgICAgMHgyMywweDUxLDB4MDMsMHg0OSwweDdGLDB4
QUMsMHhFRSwweDYzLDB4MjMsMHg1MSwweEUyLDB4NDAsMHhBQSwweEVBLDB4QjYsMHgwQSwKKyAg
ICAweDIzLDB4NTEsMHhDMiwweDQ4LDB4NzIsMHhCQSwweEVBLDB4MDAsMHg2NCwweDU5LDB4MDMs
MHg1MSwweEZELDB4OEIsMHhBQSwweEFBLAorICAgIDB4QzksMHg4QSwweDY0LDB4NTksMHg5NSww
eEI1LDB4MzUsMHgzNSwweEFDLDB4QTMsMHgwOSwweDhCLDB4MkQsMHgyQiwweDJCLDB4QUEsCisg
ICAgMHhDQywweEEzLDB4OEIsMHg5QiwweEVCLDB4RUIsMHhBQSwweDBGLDB4RUMsMHhBQiwweEFC
LDB4QTMsMHg3NSwweDc1LDB4RkIsMHgwNywKKyAgICAweEVDLDB4QUIsMHg0QSwweDkzLDB4NUYs
MHhGRSwweEFDLDB4ODgsMHhBQiwweEEzLDB4NDksMHg5MywweEZGLDB4REYsMHhBQSwweEUwLAor
ICAgIDB4NkEsMHg5QiwweDQ5LDB4OTMsMHg4QiwweDI4LDB4MkEsMHhDQywweDZBLDB4OUIsMHgw
OCwweDkzLDB4QTAsMHg3MiwweEY4LDB4QjIsCisgICAgMHg0OSwweDkzLDB4RTgsMHg4QSwweDdF
LDB4N0YsMHhENiwweDg4LDB4MjksMHg5MywweEU4LDB4OEEsMHhGQSwweERFLDB4RkUsMHhFQiwK
KyAgICAweEU5LDB4OTIsMHgwOSwweDhCLDB4NTUsMHhGRiwweDVGLDB4OTUsMHgyOSwweDkzLDB4
QzgsMHg4MiwweDY4LDB4N0EsMHg3QSwweEZGLAorICAgIDB4RTksMHg4QSwweDg3LDB4N0EsMHg3
QSwweEU4LDB4ODIsMHhBMCwweEE4LDB4ODIsMHg0NiwweDcyLDB4NzcsMHg3RiwweDdBLDB4N0Ms
CisgICAgMHg2NywweDcyLDB4MjYsMHg3MiwweDdELDB4NkYsMHgzQiwweDJBLDB4NjYsMHg3Miww
eDA1LDB4NkEsMHhFQiwweDZBLDB4RTgsMHhCOCwKKyAgICAweDY3LDB4NzIsMHhFNSwweDY5LDB4
NkUsMHhFRSwweEZFLDB4MkUsMHg0NywweDcyLDB4RTUsMHg2OSwweEFGLDB4MjcsMHgzNywweDlF
LAorICAgIDB4NDcsMHg3MiwweDA2LDB4NkEsMHg3NywweDU2LDB4RkMsMHhBRiwweDY3LDB4N0Es
MHgwNiwweDZBLDB4QTUsMHhCRiwweDhFLDB4QUEsCisgICAgMHg4NywweDdBLDB4NDcsMHg3Miww
eEY1LDB4QjcsMHhGRSwweDJGLDB4ODcsMHg3QSwweEU2LDB4NjEsMHg3MCwweDgyLDB4MDAsMHgw
MCwKKyAgICAweDI2LDB4NkEsMHgwMywweDQxLDB4NUUsMHg3QywweDc4LDB4RjgsMHgwMywweDQx
LDB4QTIsMHgzOCwweDVDLDB4RTAsMHg4MCwweEEwLAorICAgIDB4RTIsMHgzOCwweEEyLDB4MzAs
MHg4MiwweDJBLDB4MUUsMHhBRSwweDAzLDB4NDEsMHhFMywweDM4LDB4RTksMHhGRCwweEMyLDB4
RUIsCisgICAgMHgyNCwweDQxLDB4RTIsMHgzOCwweEY1LDB4RkEsMHhFMiwweEFCLDB4MjQsMHg0
MSwweEUzLDB4MzgsMHhFRiwweDVGLDB4N0IsMHg1RCwKKyAgICAweEUzLDB4MzgsMHhDMiwweDM4
LDB4ODAsMHhBMCwweEM4LDB4MDMsMHgyMywweDQxLDB4QzIsMHgzOCwweDU3LDB4REYsMHhGRiww
eEJGLAorICAgIDB4MDMsMHg0MSwweEUzLDB4MzgsMHgwNSwweDAxLDB4NjksMHgyQiwweDQ0LDB4
NDksMHgwMywweDM5LDB4QUEsMHg2QSwweEFELDB4QjUsCisgICAgMHg2NCwweDQ5LDB4MDMsMHg0
MSwweEY4LDB4N0UsMHhEQSwweDdBLDB4MjQsMHg0OSwweEUzLDB4NDAsMHhCNiwweEFFLDB4QjYs
MHhGRiwKKyAgICAweDY1LDB4NTEsMHgwMywweDQxLDB4M0QsMHhCNSwweEQ1LDB4NTUsMHg4NSww
eDUxLDB4QzMsMHg0MCwweDBBLDB4QUEsMHhBQSwweEZELAorICAgIDB4QTYsMHg1OSwweDI0LDB4
NDksMHhBMiwweDIyLDB4QkIsMHhGRCwweDg1LDB4NTEsMHg0NCwweDQ5LDB4NDIsMHhFOCwweEZB
LDB4MkYsCisgICAgMHg2NSwweDQ5LDB4QzIsMHgzMCwweDdFLDB4N0EsMHg3OCwweEUwLDB4MDMs
MHg0MSwweEMzLDB4MzAsMHhBMSwweEUzLDB4RkEsMHhGQSwKKyAgICAweEUzLDB4MzgsMHhDMyww
eDMwLDB4REMsMHg1QSwweEZDLDB4RkYsMHgwNCwweDM5LDB4QzMsMHgzMCwweDhELDB4QkQsMHhE
NSwweDdELAorICAgIDB4MjQsMHgzOSwweEEyLDB4MzAsMHgyMiwweDNFLDB4RkYsMHhENSwweDAz
LDB4MzksMHhDMywweDMwLDB4MDAsMHgwMCwweDBBLDB4M0QsCisgICAgMHgyNCwweDQxLDB4MDMs
MHgzOSwweDVCLDB4QkIsMHg4MywweEFELDB4NDQsMHg0OSwweDAzLDB4NDEsMHgwRCwweDBCLDB4
M0QsMHgwOSwKKyAgICAweDY0LDB4NDksMHgyNCwweDQ5LDB4QUUsMHhBRiwweEFGLDB4QkIsMHg0
NCwweDQ5LDB4MDMsMHg0MSwweDgwLDB4QTAsMHg3MiwweEZFLAorICAgIDB4MjQsMHg0MSwweEMy
LDB4MzgsMHgwMCwweEFBLDB4QkEsMHg3OCwweDAzLDB4NDEsMHhDMywweDM4LDB4ODIsMHgyQSww
eEEwLDB4M0YsCisgICAgMHgwMywweDQxLDB4RTMsMHgzOCwweEJBLDB4OUUsMHg1QSwweEY4LDB4
MjQsMHg0MSwweDAzLDB4MzksMHg1NywweDNBLDB4MEIsMHhFRiwKKyAgICAweDY1LDB4NDEsMHhF
MywweDMwLDB4RkYsMHhERiwweDdDLDB4N0YsMHg0NCwweDM5LDB4RTMsMHgzOCwweEJGLDB4QkYs
MHhGNywweDc1LAorICAgIDB4MjMsMHgzOSwweEUzLDB4MzgsMHgzOCwweEZBLDB4QkQsMHgyRiww
eDQ0LDB4NDEsMHgwMywweDM5LDB4OEIsMHhBOSwweEVBLDB4RTIsCisgICAgMHg2NCwweDQ5LDB4
MDIsMHgzOSwweEEwLDB4RUIsMHhGRiwweDU3LDB4NDQsMHg0MSwweEMyLDB4MzAsMHhGOCwweDZB
LDB4RjIsMHhGRiwKKyAgICAweDAyLDB4MzksMHhDMiwweDMwLDB4NTcsMHhERiwweERFLDB4Nzgs
MHgwMywweDM5LDB4QzIsMHgzMCwweEJGLDB4QTYsMHg4QiwweEU1LAorICAgIDB4MjMsMHgzOSww
eEUyLDB4MzgsMHhGRCwweEFGLDB4MEIsMHhBOSwweDIzLDB4MzksMHhFMiwweDMwLDB4RkYsMHhG
QSwweEUyLDB4RTMsCisgICAgMHgyNCwweDM5LDB4MDMsMHgzOSwweDJGLDB4RTUsMHg3NSwweEI1
LDB4MjQsMHgzOSwweEUzLDB4MzgsMHg3QywweEZDLDB4QTgsMHgwOCwKKyAgICAweDAzLDB4Mzks
MHhDMiwweDMwLDB4QTIsMHhFMCwweEI4LDB4QjAsMHgwMywweDM5LDB4QzIsMHgzMCwweDJCLDB4
QUYsMHhERCwweDdBLAorICAgIDB4MjMsMHg0MSwweEMyLDB4MzAsMHgwQiwweEJGLDB4REQsMHg1
RCwweDY0LDB4NDEsMHhDMiwweDM4LDB4RUEsMHhBQSwweEFCLDB4QUQsCisgICAgMHgyMywweDQx
LDB4RTMsMHgzOCwweEQ3LDB4NUIsMHhGQywweEE4LDB4NDMsMHg0MSwweEUzLDB4MzgsMHg4RCww
eEI1LDB4RjcsMHhGRiwKKyAgICAweDQ0LDB4NDEsMHhFMywweDM4LDB4RkUsMHhCQSwweDNCLDB4
QjksMHgyMywweDQxLDB4RTIsMHgzOCwweDAwLDB4QzcsMHhGNiwweEJDLAorICAgIDB4NDQsMHg0
OSwweEUyLDB4MzgsMHgwMiwweEZBLDB4OUUsMHhFQiwweEE1LDB4NTEsMHgyMywweDQ5LDB4Mjcs
MHhCRiwweEI3LDB4QkQsCisgICAgMHg0NywweDZBLDB4ODQsMHg1MSwweDI3LDB4M0YsMHhCRCww
eEZELDB4ODgsMHg3QSwweEU2LDB4NjEsMHhGNSwweEZBLDB4QUEsMHgwQiwKKyAgICAweDQ3LDB4
NzIsMHhBNSwweDYxLDB4NTUsMHg1NywweDVDLDB4RTIsMHg0NywweDcyLDB4ODUsMHg1OSwweDBC
LDB4MkQsMHhCNywweEZFLAorICAgIDB4NDcsMHg3MiwweEU1LDB4NjksMHg3OCwweDYwLDB4REIs
MHg3OSwweDA1LDB4NkEsMHhDNSwweDYxLDB4ODMsMHhCRiwweDhFLDB4MEIsCisgICAgMHg2Nyww
eDcyLDB4RTUsMHg2MSwweDhCLDB4MDksMHgwOSwweEI1LDB4NDcsMHg3MiwweEU1LDB4NjEsMHhG
NiwweEJFLDB4RTAsMHgwMCwKKyAgICAweEE3LDB4N0EsMHgyNiwweDcyLDB4MDksMHgyQiwweDA5
LDB4MkIsMHgwOSwweDgzLDB4QTgsMHg3QSwweEVCLDB4QTUsMHgzNSwweDdELAorICAgIDB4OEYs
MHhCNCwweEU4LDB4ODIsMHgyRCwweDJELDB4MkQsMHgyRCwweDM1LDB4RTYsMHgzMSwweENELDB4
MEIsMHgyOSwweEFELDB4MkQsCisgICAgMHgzNSwweEU2LDB4MTQsMHhFNiwweEE4LDB4QkYsMHhG
NywweDU1LDB4MzUsMHhFNiwweEY0LDB4REQsMHhBOCwweEE4LDB4RkEsMHhERiwKKyAgICAweDM0
LDB4RTYsMHhGNCwweERELDB4RUEsMHg2QSwweEZCLDB4N0IsMHgxNCwweERFLDB4OTMsMHhENSww
eEY4LDB4RkUsMHhGRSwweDdBLAorICAgIDB4OTMsMHhENSwweEYxLDB4QkMsMHg2OCwweDU4LDB4
NTgsMHg1RSwweDkzLDB4Q0QsMHgxMSwweEJELDB4MkQsMHgyOSwweDI5LDB4MkYsCisgICAgMHhC
NCwweENELDB4NzMsMHhDRCwweEFBLDB4RUEsMHhGRSwweDdCLDB4OTMsMHhDRCwweDMyLDB4QzUs
MHg4MiwweENBLDB4RkUsMHg3RiwKKyAgICAweDkyLDB4QzUsMHgzMiwweEM1LDB4OUUsMHhGRiww
eEY3LDB4RjcsMHg1MiwweEM1LDB4MzIsMHhDNSwweDgwLDB4QTAsMHhDNiwweEM4LAorICAgIDB4
NTIsMHhDNSwweDExLDB4QkQsMHhGMCwweEVBLDB4RkEsMHg3MiwweDEyLDB4QzUsMHhCMCwweEFD
LDB4QTAsMHhGQSwweEZFLDB4NjAsCisgICAgMHhGMSwweEJDLDB4OTAsMHhBQywweEY4LDB4Rjgs
MHhGNiwweERGLDB4QjAsMHhBQywweEVELDB4OUIsMHhGOCwweDc4LDB4NUUsMHg1NywKKyAgICAw
eDJFLDB4QTQsMHhDRCwweDkzLDB4OEUsMHgzRCwweEY3LDB4RjUsMHg5MCwweEFDLDB4RUUsMHg5
QiwweDJGLDB4MkYsMHgyQiwweDI5LAorICAgIDB4QjAsMHhCNCwweDRGLDB4QUMsMHhBRSwweEVG
LDB4RTIsMHhGQSwweDkwLDB4QUMsMHg0RiwweEE0LDB4ODgsMHhBMCwweEZFLDB4NTcsCisgICAg
MHg2RiwweEFDLDB4MEUsMHg5QywweDcyLDB4RTgsMHhBQSwweDAyLDB4OTAsMHhBQywweDJFLDB4
QTQsMHgyOSwweDI5LDB4MkYsMHgwQSwKKyAgICAweDkwLDB4QUMsMHg2RiwweEE0LDB4NkEsMHgw
MCwweDI4LDB4MDgsMHhCMCwweEFDLDB4NEUsMHhBNCwweDJBLDB4QjAsMHhGOCwweDU4LAorICAg
IDB4ODQsMHg1OSwweDIyLDB4NTEsMHhGRCwweDlGLDB4RjcsMHhDQSwweDg0LDB4NTksMHg0Myww
eDUxLDB4RkYsMHg4RSwweEY3LDB4NUEsCisgICAgMHg4MywweDU5LDB4MjIsMHg1MSwweENBLDB4
QUEsMHg2QSwweEVCLDB4ODQsMHg2MSwweDIyLDB4NTEsMHgyRiwweEFGLDB4MEQsMHhBOSwKKyAg
ICAweDg0LDB4NjEsMHg0MywweDUxLDB4NEMsMHhDQiwweEFFLDB4RkUsMHg2MywweDU5LDB4MjMs
MHg1MSwweDAwLDB4RDgsMHg1RSwweDY5LAorICAgIDB4NjQsMHg1OSwweDIyLDB4NTEsMHhFQSww
eDhBLDB4RkUsMHhGRiwweDg0LDB4NTksMHgyMiwweDUxLDB4REEsMHgyOCwweEFBLDB4QUYsCisg
ICAgMHg2MywweDU5LDB4MjMsMHg1MSwweEY4LDB4NjgsMHhGOCwweDMwLDB4NjQsMHg1OSwweDIy
LDB4NTEsMHg4QiwweDA5LDB4RDcsMHg1RSwKKyAgICAweDY0LDB4NTksMHgwMiwweDQ5LDB4RkYs
MHhGQSwweEZDLDB4RkYsMHg0MywweDUxLDB4MDIsMHg0OSwweEFBLDB4QUIsMHg2RiwweENCLAor
ICAgIDB4NDMsMHg1MSwweDAzLDB4NDksMHhGQSwweEZBLDB4QUIsMHgwRiwweDY0LDB4NTksMHgw
MywweDQ5LDB4QkYsMHhGQiwweEExLDB4RkIsCisgICAgMHg0NCwweDUxLDB4MDIsMHg0OSwweEFF
LDB4QUEsMHg2QSwweDQwLDB4NDQsMHg1MSwweEUzLDB4NDgsMHhFRiwweEFCLDB4OEYsMHhBRCwK
KyAgICAweDIzLDB4NTEsMHhFMiwweDQ4LDB4RTIsMHhFMCwweEUwLDB4NjgsMHgyNCwweDU5LDB4
MDIsMHg0OSwweEEzLDB4ODksMHgzQiwweDM5LAorICAgIDB4NDMsMHg1OSwweDAzLDB4NTEsMHgy
OSwweDAzLDB4QTIsMHgyMCwweDY0LDB4NTksMHg0NCwweDU5LDB4REIsMHgyMSwweEE1LDB4OTUs
CisgICAgMHg0QSwweDkzLDB4QTUsMHg2MSwweEI1LDB4MjUsMHgyNSwweDJELDB4Q0IsMHhBMyww
eDRCLDB4OUIsMHgzOSwweEJELDB4QkYsMHhCRiwKKyAgICAweENDLDB4QTMsMHg4QiwweDlCLDB4
MEIsMHhCQywweEJCLDB4QUYsMHhFQywweEFCLDB4Q0MsMHhBMywweDBDLDB4MDIsMHhBRSwweENC
LAorICAgIDB4RUMsMHhBQiwweEFCLDB4QTMsMHhCOCwweEFDLDB4RjgsMHg3RSwweENDLDB4QTMs
MHg2QSwweDlCLDB4RTgsMHhBQSwweDY4LDB4QkEsCisgICAgMHhBQiwweEEzLDB4NDksMHg5Myww
eEZFLDB4RkIsMHhBRSwweEIyLDB4OEEsMHg5QiwweDI5LDB4OTMsMHhBRiwweDg4LDB4QkEsMHg1
RSwKKyAgICAweDZBLDB4OUIsMHgwOSwweDhCLDB4QzgsMHg4MiwweEZDLDB4NzQsMHg0OSwweDkz
LDB4RTgsMHg4QSwweEFBLDB4RTgsMHhFRSwweEY3LAorICAgIDB4MjksMHg5MywweEM4LDB4ODIs
MHhDMiwweEUyLDB4N0EsMHg1RSwweDA5LDB4OEIsMHhDOCwweDgyLDB4N0YsMHg3MCwweDdGLDB4
NUQsCisgICAgMHhFOSwweDhBLDB4ODcsMHg3QSwweEYwLDB4NzgsMHhGOCwweEYyLDB4ODcsMHg3
QSwweDI2LDB4NkEsMHhEQSwweEZBLDB4NzgsMHhCOCwKKyAgICAweDY3LDB4NzIsMHg0NiwweDcy
LDB4N0UsMHhCNiwweEI1LDB4QUIsMHg2NywweDcyLDB4MjYsMHg3MiwweEZDLDB4QkEsMHgyNSww
eEFELAorICAgIDB4NDYsMHg3MiwweDA1LDB4NkEsMHg2MCwweEMyLDB4RTAsMHg4MCwweDQ2LDB4
NzIsMHhFNSwweDY5LDB4REIsMHgyOSwweDI5LDB4MEEsCisgICAgMHg0NiwweDcyLDB4MDUsMHg2
QSwweERBLDB4Q0EsMHhBRSwweEFBLDB4NDcsMHg3MiwweDA2LDB4NkEsMHgwMCwweDg5LDB4MDAs
MHgwOCwKKyAgICAweEE3LDB4N0EsMHg0NiwweDcyLDB4RUQsMHgyNSwweDJCLDB4MjcsMHhFOCww
eDgyLDB4ODcsMHg3QSwweDc3LDB4Q0YsMHhGQiwweEVCLAorICAgIDB4QTgsMHg3QSwweDY0LDB4
NTEsMHg1RSwweDZBLDB4RTAsMHhBMCwweDg0LDB4NTEsMHhFMywweDQwLDB4NUYsMHg3RSwweDVD
LDB4NTgsCisgICAgMHhFMywweDM4LDB4QTIsMHgzOCwweEMwLDB4QUEsMHhFMiwweEVBLDB4RTMs
MHgzOCwweEExLDB4MzAsMHgwRiwweDBGLDB4MkYsMHgyNywKKyAgICAweDI0LDB4MzksMHhDMiww
eDM4LDB4MkIsMHhBNywweDlGLDB4RkUsMHgwMywweDQxLDB4QTIsMHgzMCwweEUwLDB4RTAsMHg2
OCwweDdCLAorICAgIDB4RTMsMHgzOCwweEEyLDB4MzAsMHgyNSwweEFCLDB4QUIsMHhCOSwweDIz
LDB4NDEsMHhFMywweDM4LDB4QkQsMHhBRiwweDBCLDB4QUIsCisgICAgMHgyMywweDQxLDB4QzIs
MHgzOCwweEFFLDB4RkEsMHhGMiwweDZBLDB4NDUsMHg0MSwweEUzLDB4MzgsMHgzRiwweEY1LDB4
RkYsMHg1NywKKyAgICAweDQ0LDB4NDksMHhFMywweDM4LDB4RTgsMHhGOCwweEVFLDB4RUQsMHgw
MywweDQxLDB4RTMsMHgzOCwweDg4LDB4N0EsMHg4MiwweEUwLAorICAgIDB4MDMsMHg0MSwweEUz
LDB4NDAsMHg4MCwweDAzLDB4RjIsMHg2MSwweDAzLDB4NDEsMHhDMywweDM4LDB4OEEsMHhBQSww
eDZCLDB4REIsCisgICAgMHg0NCwweDQ5LDB4QzMsMHgzOCwweEFBLDB4QUIsMHhBRCwweEVGLDB4
ODYsMHg1MSwweDAzLDB4NDEsMHgyQiwweEI5LDB4QjUsMHhGRCwKKyAgICAweDY1LDB4NDksMHgw
MywweDQxLDB4QTAsMHhGOCwweEVBLDB4N0EsMHgyNCwweDQxLDB4QzMsMHgzMCwweEZFLDB4NTgs
MHg3QSwweEZBLAorICAgIDB4RTMsMHgzOCwweDgyLDB4MjgsMHgyRSwweEJGLDB4REEsMHhFOCww
eEMyLDB4MzAsMHg4MSwweDI4LDB4ODAsMHhFQSwweEZFLDB4RkYsCisgICAgMHhDMywweDMwLDB4
ODEsMHgyOCwweDJGLDB4MkYsMHgyRiwweDJCLDB4MDMsMHgzOSwweEMzLDB4MzAsMHgzNSwweEJC
LDB4QkYsMHg5RiwKKyAgICAweDI0LDB4NDEsMHhFMywweDM4LDB4MkYsMHgyNywweEFGLDB4QUIs
MHg2NSwweDQ5LDB4MDMsMHg0MSwweDJGLDB4QUYsMHhBRCwweDBGLAorICAgIDB4NjUsMHg0OSww
eDIzLDB4NDEsMHg2QSwweDZBLDB4RjcsMHhBQiwweDQ0LDB4NDksMHgwMywweDQxLDB4MkYsMHhB
RiwweEZGLDB4REMsCisgICAgMHg0NSwweDQ5LDB4RTMsMHgzOCwweDdFLDB4NkUsMHhBMCwweEFB
LDB4MjQsMHg0MSwweEMzLDB4MzgsMHhCRCwweEZGLDB4RkMsMHhGQywKKyAgICAweDAzLDB4Mzks
MHhFMywweDM4LDB4QkMsMHhGQywweEZBLDB4QkYsMHgyNCwweDM5LDB4QzMsMHgzMCwweEEyLDB4
QzIsMHg4QSwweEU2LAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhDQSwweDRBLDB4NTIsMHg1
QSwweDAzLDB4MzksMHhBMiwweDMwLDB4QUEsMHhBMywweDlGLDB4RkQsCisgICAgMHgyMywweDM5
LDB4RTMsMHgzOCwweDAyLDB4MkMsMHhCRCwweDdELDB4NDQsMHg0MSwweEUzLDB4MzgsMHg4MCww
eEZBLDB4NUUsMHg1NSwKKyAgICAweDI0LDB4NDEsMHhDMiwweDMwLDB4NzgsMHhEQSwweEZGLDB4
RkYsMHgwMywweDM5LDB4QzIsMHgzMCwweDJCLDB4QUQsMHhBQiwweEZBLAorICAgIDB4MDMsMHgz
OSwweEMyLDB4MzAsMHg4MCwweDIwLDB4RUYsMHhGNywweDAzLDB4MzksMHhDMiwweDMwLDB4RjYs
MHhBMiwweEVFLDB4RTgsCisgICAgMHgyMywweDM5LDB4RTMsMHgzMCwweEFELDB4QkQsMHhGNSww
eEU5LDB4MjMsMHgzOSwweEUzLDB4MzAsMHgyMiwweEFBLDB4QkYsMHg3NywKKyAgICAweDIzLDB4
MzksMHhFMiwweDMwLDB4OEEsMHg2MywweEFCLDB4QkUsMHg0NCwweDQxLDB4RTMsMHgzOCwweDNC
LDB4QkQsMHg3OSwweERGLAorICAgIDB4MjQsMHg0MSwweEUzLDB4MzgsMHhERSwweEZBLDB4RkUs
MHg3QywweDI0LDB4MzksMHhFMiwweDMwLDB4N0IsMHhGRiwweEIwLDB4QUEsCisgICAgMHgwMyww
eDM5LDB4QzIsMHgzMCwweDVELDB4RDcsMHhGNywweEZDLDB4NDQsMHg0MSwweEUyLDB4MzAsMHgz
RCwweEY1LDB4REYsMHhCNSwKKyAgICAweDQ0LDB4NDEsMHgwMywweDM5LDB4RkEsMHhCQSwweEVC
LDB4RkUsMHgyMywweDQxLDB4RTMsMHgzOCwweEZFLDB4QkUsMHhBQSwweEFFLAorICAgIDB4MDMs
MHg0MSwweEUyLDB4MzgsMHhBMCwweDUwLDB4NUYsMHg1NSwweDI0LDB4NDEsMHhDMiwweDM4LDB4
QUYsMHg3RSwweDYzLDB4OEEsCisgICAgMHg2NCwweDQ5LDB4MDMsMHgzOSwweEFELDB4QUQsMHhB
QiwweEFGLDB4ODQsMHg1MSwweDQ0LDB4NDksMHg5NSwweDM1LDB4MTUsMHhFRCwKKyAgICAweEM1
LDB4NTksMHg2NCwweDUxLDB4M0YsMHhGRSwweEZFLDB4NUYsMHg2NywweDcyLDB4QTUsMHg1OSww
eDBCLDB4MjUsMHhENSwweDU1LAorICAgIDB4ODgsMHg3QSwweEU2LDB4NjEsMHhFOCwweDA4LDB4
MDMsMHgyNSwweDg3LDB4N0EsMHhFNSwweDYxLDB4NTcsMHg1RiwweEUwLDB4QzAsCisgICAgMHgw
NiwweDYyLDB4QTUsMHg1OSwweEFBLDB4MjYsMHgxQywweDc4LDB4NjcsMHg3MiwweEE1LDB4NTks
MHhCRiwweEFGLDB4MkEsMHgyRCwKKyAgICAweDg4LDB4NzIsMHhFNSwweDYxLDB4REIsMHhBQSww
eDJBLDB4MjgsMHhBOCwweDdBLDB4NDYsMHg3MiwweEZELDB4NzUsMHhBQiwweDJCLAorICAgIDB4
QTgsMHg4MiwweDY3LDB4NzIsMHhGOSwweDRELDB4QkYsMHgxQSwweEE4LDB4N0EsMHg0NywweDcy
LDB4MDIsMHgyQiwweDJBLDB4QTYsCisgICAgMHhCMCwweEJDLDB4ODgsMHg3QSwweDJELDB4M0Qs
MHgzRCwweEJELDB4RjQsMHhERCwweEQxLDB4QzQsMHgwQiwweDBCLDB4MkIsMHgyRCwKKyAgICAw
eDE0LDB4RTYsMHhENCwweERELDB4QTAsMHg3OCwweEQ3LDB4NTUsMHgxNCwweEU2LDB4QjMsMHhE
NSwweDhBLDB4QUEsMHhFRiwweDVGLAorICAgIDB4MTQsMHhERSwweEIzLDB4RDUsMHg4MiwweEVD
LDB4N0UsMHhERiwweEQ0LDB4RDUsMHg1MiwweENELDB4RTAsMHhFQSwweDZBLDB4NkEsCisgICAg
MHg3MywweEM1LDB4RDEsMHhCQywweERFLDB4OUMsMHhCRSwweDNFLDB4RDMsMHhDRCwweDczLDB4
Q0QsMHhGNSwweEY1LDB4RkYsMHhFRCwKKyAgICAweDkzLDB4Q0QsMHg1MiwweEM1LDB4ODAsMHhF
QSwweEU4LDB4NzgsMHg3MywweENELDB4MTEsMHhCRCwweEVBLDB4RTgsMHg3RSwweDdBLAorICAg
IDB4NTIsMHhDNSwweEYxLDB4QkMsMHgyQiwweDNGLDB4RDUsMHhERiwweDczLDB4Q0QsMHgxMSww
eEJELDB4QTIsMHgwQSwweDIyLDB4MkQsCisgICAgMHg3MywweENELDB4RDEsMHhCNCwweEUyLDB4
RTIsMHhFOCwweDc4LDB4MTEsMHhCRCwweEIxLDB4QjQsMHhFOCwweEZBLDB4N0MsMHhFQiwKKyAg
ICAweEQxLDB4QjQsMHg0RSwweEE0LDB4QUEsMHg2QSwweDc4LDB4NTgsMHgyRSwweEE0LDB4NEMs
MHg4MywweEE4LDB4RjgsMHhGQywweDVFLAorICAgIDB4RUUsMHg5QiwweDZDLDB4OEIsMHg4Miww
eDBBLDB4QTcsMHgyNSwweDkwLDB4QUMsMHhFRSwweDlCLDB4QUQsMHgyOSwweDJGLDB4QUIsCisg
ICAgMHg5MCwweEFDLDB4MkYsMHhBNCwweEMwLDB4RjgsMHhERSwweDVGLDB4NEYsMHhBNCwweEVF
LDB4OUIsMHg4MCwweEFBLDB4RTYsMHhCRSwKKyAgICAweDZGLDB4QUMsMHgyRSwweDlDLDB4Mjks
MHgyOSwweDM5LDB4MEUsMHg5MCwweEFDLDB4MkUsMHhBNCwweDA4LDB4ODAsMHg3OCwweEU4LAor
ICAgIDB4OTAsMHhBQywweDBFLDB4OUMsMHg4QSwweEU2LDB4RkQsMHhGNywweDZGLDB4QUMsMHg0
RSwweEE0LDB4NzgsMHg3NywweEVBLDB4MzUsCisgICAgMHg2MywweDU5LDB4MDIsMHg0OSwweDAw
LDB4MjgsMHgwRiwweDI3LDB4ODQsMHg1OSwweDIzLDB4NTEsMHhFOCwweEZCLDB4NUEsMHhGQywK
KyAgICAweDYzLDB4NTksMHgyMywweDUxLDB4QUIsMHgwQiwweDAzLDB4MkYsMHg4NCwweDYxLDB4
MjMsMHg1MSwweEFDLDB4REEsMHhCQSwweEJDLAorICAgIDB4NjMsMHg1OSwweDAxLDB4NTEsMHgy
QywweEFFLDB4QUEsMHhCRiwweDQzLDB4NTksMHgyMywweDUxLDB4OEEsMHg2MCwweDcyLDB4Qjgs
CisgICAgMHg4NCwweDU5LDB4MjIsMHg1MSwweEZGLDB4N0YsMHg3QiwweDVGLDB4NjMsMHg1OSww
eDIzLDB4NTEsMHhDQSwweEZGLDB4REQsMHhCNywKKyAgICAweDYzLDB4NTksMHgwMiwweDQ5LDB4
QTgsMHg0OCwweEZBLDB4RkUsMHg2MywweDUxLDB4MjIsMHg1MSwweDczLDB4NjMsMHhGQiwweDVG
LAorICAgIDB4NDMsMHg1MSwweDAyLDB4NDksMHhBQiwweDQzLDB4RTgsMHhGRSwweDQ0LDB4NTEs
MHgwMiwweDQ5LDB4RTUsMHgyRCwweDJELDB4MjIsCisgICAgMHg2NCwweDU5LDB4MDMsMHg0OSww
eDhBLDB4RUIsMHg2RiwweDdGLDB4NDMsMHg1MSwweEUyLDB4NDgsMHg4QSwweEU4LDB4RUIsMHhG
NywKKyAgICAweDQ0LDB4NTEsMHhFMywweDQ4LDB4N0EsMHhGRiwweEFBLDB4OEIsMHg0NCwweDUx
LDB4RTIsMHg0OCwweEVELDB4M0YsMHhCQiwweEZCLAorICAgIDB4NDMsMHg1MSwweDAzLDB4NTEs
MHhGNywweERBLDB4RjIsMHhCNiwweEE1LDB4NjEsMHgyMywweDUxLDB4RjUsMHg3NSwweEJELDB4
REYsCisgICAgMHg2NCwweDU5LDB4MjMsMHg1MSwweEJBLDB4REEsMHhGOCwweEYwLDB4NjQsMHg1
OSwweDIzLDB4NTEsMHhBNiwweDM1LDB4MUQsMHhCRCwKKyAgICAweDJBLDB4OTMsMHg4NCwweDYx
LDB4MkQsMHgwOSwweDBGLDB4MEIsMHhBQiwweEEzLDB4NEEsMHg5QiwweEFELDB4MkQsMHgyRCww
eDI3LAorICAgIDB4Q0MsMHhBMywweDhCLDB4QTMsMHgyRiwweDNELDB4REUsMHgwOCwweDBELDB4
QUMsMHhBQiwweEEzLDB4QUEsMHhFRSwweEY3LDB4M0YsCisgICAgMHgyRCwweEI0LDB4Q0MsMHhB
MywweDU1LDB4QkYsMHhBRCwweDBFLDB4MEQsMHhBQywweEFCLDB4QTMsMHg2NywweEZBLDB4RTgs
MHhFRSwKKyAgICAweEVDLDB4QUIsMHg4QiwweDlCLDB4RkYsMHhERSwweDVBLDB4RjgsMHg4Qiww
eDlCLDB4MjgsMHg5MywweDdFLDB4RkUsMHhGOCwweDZDLAorICAgIDB4MjksMHg5MywweEU5LDB4
OEEsMHhGOCwweEUwLDB4RUEsMHhGQSwweDA5LDB4OEIsMHhDOCwweDhBLDB4NjgsMHhGQiwweDdB
LDB4N0EsCisgICAgMHgwOSwweDhCLDB4QTcsMHg4MiwweERBLDB4M0UsMHhBRSwweDlBLDB4MDgs
MHg4QiwweEE4LDB4ODIsMHhCRCwweEFBLDB4MkEsMHgyQSwKKyAgICAweDA5LDB4OEIsMHg4Nyww
eDdBLDB4NjIsMHg3MCwweEY4LDB4RkEsMHg4NywweDdBLDB4MjYsMHg2QSwweEJBLDB4RjYsMHhG
NiwweEI4LAorICAgIDB4NjcsMHg3MiwweDA1LDB4NzIsMHhDOCwweEEyLDB4QTgsMHhBOCwweDY3
LDB4NzIsMHgyNiwweDcyLDB4QTksMHhGRSwweEZFLDB4RkIsCisgICAgMHg0NiwweDcyLDB4MjYs
MHg2QSwweDgyLDB4QTgsMHhGQSwweDI0LDB4NDYsMHg3MiwweDA2LDB4NkEsMHgwQSwweDJBLDB4
MUUsMHhEOCwKKyAgICAweDQ2LDB4NzIsMHgwNSwweDZBLDB4MjAsMHhBNiwweDhCLDB4OEIsMHg4
NywweDgyLDB4MjYsMHg3MiwweEQ3LDB4QkYsMHhGRiwweDBCLAorICAgIDB4QTgsMHg4MiwweDQ2
LDB4NzIsMHgyRCwweEEyLDB4MjAsMHgwOCwweEU4LDB4ODIsMHhBOCwweDgyLDB4OEQsMHhGNSww
eEQ1LDB4NTcsCisgICAgMHhDOCwweDgyLDB4MjYsMHg2QSwweDZBLDB4RTgsMHg4QSwweDg4LDB4
NjcsMHg3QSwweEUzLDB4NDAsMHg3RSwweDdFLDB4RTgsMHhFOCwKKyAgICAweDAzLDB4NDksMHhB
MiwweDMwLDB4N0YsMHhGRiwweEVFLDB4RTAsMHhFMywweDM4LDB4QTIsMHgzMCwweEJELDB4RkYs
MHg2RSwweDVBLAorICAgIDB4RTMsMHgzOCwweDgxLDB4MzAsMHg4MCwweDJBLDB4QUIsMHhFRCww
eEUzLDB4MzgsMHg4MSwweDI4LDB4RTgsMHhBQSwweEIyLDB4QkYsCisgICAgMHhFMywweDM4LDB4
QTIsMHgzMCwweEFELDB4M0UsMHgzRSwweEFGLDB4MjQsMHg0MSwweEMzLDB4MzAsMHgyQiwweEJG
LDB4RjYsMHhGRiwKKyAgICAweDI0LDB4MzksMHhDMiwweDMwLDB4RjgsMHhCQSwweEVBLDB4RUYs
MHgwNCwweDM5LDB4QzIsMHgzOCwweDdBLDB4QkUsMHhGRiwweEZGLAorICAgIDB4MjMsMHg0MSww
eEUzLDB4MzgsMHgyRCwweDZELDB4RDUsMHg1NSwweDQ0LDB4NDksMHhFMywweDM4LDB4QjgsMHhB
QiwweEVCLDB4RkQsCisgICAgMHgyNCwweDQxLDB4MDMsMHg0MSwweDVELDB4RjAsMHhDQSwweDgy
LDB4NjUsMHg0OSwweEMyLDB4MzgsMHhERiwweEYzLDB4QUEsMHgyMiwKKyAgICAweDY1LDB4NDks
MHhFMywweDQwLDB4NzcsMHhGRCwweDJBLDB4OEEsMHgyNCwweDQxLDB4RTMsMHgzOCwweDJCLDB4
MkIsMHgyQSwweDI4LAorICAgIDB4NjUsMHg0OSwweDAzLDB4NDEsMHg2RiwweENFLDB4RUEsMHhF
QiwweDI0LDB4NDEsMHhDMywweDMwLDB4QUEsMHhGQywweDc4LDB4RkEsCisgICAgMHgwMywweDM5
LDB4QTIsMHgzMCwweDdDLDB4RTAsMHg4MiwweEFBLDB4RTMsMHgzMCwweDgyLDB4MjgsMHhERiww
eDdGLDB4OUYsMHgyRSwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4OTUsMHhCNSwweEE3LDB4
QUMsMHgwMywweDM5LDB4QzMsMHgzMCwweERGLDB4RkEsMHg4QiwweEFCLAorICAgIDB4MjMsMHg0
MSwweEUzLDB4MzgsMHgwRiwweEJCLDB4QkQsMHgwQiwweEM2LDB4NTEsMHgyMywweDQxLDB4QjUs
MHhGNSwweEJELDB4MkIsCisgICAgMHhBNiwweDUxLDB4NDQsMHg0OSwweDdFLDB4REYsMHhGQyww
eEU4LDB4NjQsMHg0OSwweDAzLDB4NDEsMHhGOCwweEQ3LDB4RkUsMHg4MCwKKyAgICAweDQ0LDB4
NDksMHgwMywweDQxLDB4RUEsMHhFQiwweEVBLDB4RTYsMHgwMywweDQxLDB4QzMsMHgzOCwweEE4
LDB4QkMsMHg5RSwweEZBLAorICAgIDB4RTMsMHgzOCwweDAzLDB4MzEsMHgyMiwweDgzLDB4ODIs
MHgwMCwweDAzLDB4MzksMHhDMiwweDMwLDB4OEEsMHhGRSwweDdGLDB4NTUsCisgICAgMHhFMyww
eDMwLDB4QTIsMHgzMCwweEI4LDB4RjYsMHhGRSwweDJBLDB4RTIsMHgzMCwweEExLDB4MzAsMHg4
RiwweDhBLDB4QTgsMHgwMCwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4NjIsMHg3RiwweEQ3
LDB4RkYsMHhFMiwweDMwLDB4QzIsMHgzMCwweEY2LDB4RkYsMHhCRSwweEZFLAorICAgIDB4MDMs
MHgzOSwweEMyLDB4MzAsMHhGRSwweEUyLDB4RTMsMHhBRCwweDAzLDB4MzksMHhDMiwweDMwLDB4
REYsMHhGRiwweEZBLDB4QTgsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEJGLDB4MkUsMHhB
QSwweEYyLDB4MDMsMHgzOSwweEMyLDB4MzAsMHhERSwweEZDLDB4RjYsMHgzRiwKKyAgICAweDAz
LDB4MzksMHhFMywweDMwLDB4MkUsMHgwRiwweDZCLDB4RUEsMHgyNCwweDM5LDB4QzIsMHgzMCww
eEEyLDB4QkIsMHg3RiwweDVELAorICAgIDB4MjQsMHgzOSwweEMyLDB4MzAsMHgyMywweDBCLDB4
MkQsMHhCNywweDIzLDB4MzksMHhFMywweDM4LDB4REUsMHg1NSwweEZGLDB4RjIsCisgICAgMHgw
MywweDM5LDB4RTMsMHgzMCwweDYwLDB4QzIsMHhDQSwweDdELDB4MjMsMHgzOSwweEUzLDB4Mzgs
MHhCRiwweERELDB4REIsMHg1NywKKyAgICAweDI0LDB4MzksMHhDMiwweDMwLDB4N0MsMHhEOCww
eEZBLDB4QkYsMHg0NCwweDQ5LDB4QzIsMHgzMCwweEFELDB4QUYsMHhCNSwweEJGLAorICAgIDB4
NDQsMHg0MSwweDAzLDB4MzksMHg5NywweEI1LDB4RDcsMHhENSwweDQ0LDB4NDEsMHgwMywweDM5
LDB4RDYsMHhERiwweEI3LDB4MkQsCisgICAgMHg0NCwweDQxLDB4QzIsMHgzMCwweEQ3LDB4QkUs
MHhFOCwweEE4LDB4NDMsMHg0MSwweEUzLDB4MzgsMHhGRiwweEZGLDB4Q0YsMHg5QiwKKyAgICAw
eDY1LDB4NDksMHhFMywweDM4LDB4MzUsMHhCRiwweEY3LDB4RkYsMHg4NSwweDUxLDB4MDMsMHgz
OSwweDhBLDB4OEIsMHhCRiwweEY1LAorICAgIDB4ODQsMHg1MSwweDQ0LDB4NDksMHhBQSwweEIy
LDB4REUsMHhCNywweEE1LDB4NTksMHg2NCwweDUxLDB4MjIsMHgyOSwweDM1LDB4OTUsCisgICAg
MHg0NywweDcyLDB4QTUsMHg1OSwweDA5LDB4QUQsMHhENSwweDU1LDB4QTcsMHg3QSwweEE1LDB4
NTksMHg4OCwweDgyLDB4QUIsMHhBNSwKKyAgICAweDY3LDB4NzIsMHg4NSwweDU5LDB4NzgsMHg3
OCwweEM4LDB4QTgsMHgwNiwweDZBLDB4NjQsMHg1MSwweDI3LDB4MzUsMHhGRiwweERFLAorICAg
IDB4NjcsMHg3MiwweEE1LDB4NTksMHgwMiwweDAyLDB4MDMsMHgwRCwweEE4LDB4N0EsMHg0Niww
eDZBLDB4MkYsMHgyRiwweEY3LDB4NUYsCisgICAgMHhDOSwweDgyLDB4NjcsMHg3QSwweEJBLDB4
RTgsMHhBMiwweDAxLDB4QzksMHg4MiwweDY3LDB4NzIsMHhGRiwweERFLDB4RkEsMHhCOCwKKyAg
ICAweDJFLDB4QUMsMHhBOCwweDdBLDB4MzUsMHgzNSwweEI1LDB4QkQsMHhCNCwweERELDB4NkYs
MHhCNCwweDBCLDB4MkIsMHhBRCwweEFELAorICAgIDB4RDMsMHhERCwweDcyLDB4Q0QsMHhBOCww
eDZGLDB4RjUsMHhGNSwweEIzLDB4RDUsMHg3MiwweENELDB4MkEsMHgwRSwweEI3LDB4NTcsCisg
ICAgMHhENCwweERELDB4OTMsMHhENSwweEEzLDB4RUEsMHhCRCwweEY1LDB4QjMsMHhENSwweDEx
LDB4QkQsMHhFMCwweEUwLDB4RjgsMHg3OCwKKyAgICAweDczLDB4Q0QsMHhGMSwweEJDLDB4Mjcs
MHgwNSwweDM1LDB4M0QsMHhCMywweEQ1LDB4NTMsMHhDNSwweDhCLDB4OEEsMHhGRiwweDVGLAor
ICAgIDB4OTMsMHhDRCwweDUyLDB4QzUsMHhFMCwweEFBLDB4RUUsMHhCNSwweDczLDB4Q0QsMHhG
MSwweEI0LDB4RjIsMHhFQSwweEU4LDB4ODgsCisgICAgMHg1MiwweEM1LDB4QjAsMHhCNCwweEZG
LDB4RDcsMHhGNiwweEI4LDB4NTIsMHhDNSwweEYxLDB4QkMsMHgyRiwweEE5LDB4RkYsMHg1NywK
KyAgICAweDMxLDB4QzUsMHhCMCwweEI0LDB4RTgsMHhGQywweEQ2LDB4NTcsMHhGMSwweEJDLDB4
OTAsMHhBQywweEM4LDB4RUYsMHhGQywweEZCLAorICAgIDB4RDAsMHhCNCwweEFELDB4OTMsMHhF
MCwweDYyLDB4N0MsMHg3QSwweEFELDB4OTMsMHhFQSwweDdBLDB4RjgsMHhGRSwweEY3LDB4RDcs
CisgICAgMHg0RiwweEE0LDB4NkMsMHg4QiwweEE1LDB4MkQsMHgyRiwweDBCLDB4NzAsMHhBQyww
eDJFLDB4QTQsMHhBRSwweDI4LDB4NzgsMHg1QiwKKyAgICAweDRGLDB4QTQsMHgwRSwweDlDLDB4
QzgsMHg5MiwweEQzLDB4NUQsMHhCMCwweEFDLDB4MEUsMHg5QywweEY1LDB4RkUsMHhFRiwweDJC
LAorICAgIDB4OTAsMHhBQywweDJFLDB4QTQsMHhBRiwweDk5LDB4RTIsMHgyMCwweDZGLDB4QUMs
MHgyRSwweDlDLDB4QzIsMHhBMiwweERGLDB4MDAsCisgICAgMHg5MCwweEFDLDB4MEQsMHg5Qyww
eEQ3LDB4RDcsMHhCRiwweDAwLDB4RDAsMHhCNCwweDRFLDB4QTQsMHhERCwweEJELDB4MEIsMHg4
QSwKKyAgICAweDY0LDB4NTksMHgyMiwweDUxLDB4QTUsMHhFRSwweEJBLDB4MkYsMHg4NCwweDYx
LDB4MjIsMHg1MSwweEZGLDB4RTUsMHhFQiwweEEwLAorICAgIDB4ODMsMHg2MSwweDIzLDB4NTEs
MHhCNywweEFGLDB4M0YsMHhCRiwweDg0LDB4NjEsMHgyMiwweDUxLDB4QkUsMHhGQywweDVBLDB4
NUEsCisgICAgMHg0MywweDUxLDB4MDIsMHg1MSwweEFBLDB4RTAsMHhFQSwweDIxLDB4NjMsMHg1
MSwweDIyLDB4NTEsMHhGNywweDk1LDB4RUQsMHhBRiwKKyAgICAweDQzLDB4NTksMHgyMiwweDQ5
LDB4REEsMHhERSwweDBBLDB4OEEsMHg2MywweDUxLDB4MjMsMHg1MSwweEFGLDB4RkUsMHhFRiww
eEFGLAorICAgIDB4NDMsMHg1MSwweDAyLDB4NDksMHhGMiwweEZFLDB4RTgsMHhBRSwweDIyLDB4
NTEsMHgwMiwweDQ5LDB4MkEsMHg2RSwweERFLDB4RDcsCisgICAgMHg0MywweDUxLDB4RTIsMHg0
OCwweDJFLDB4QTksMHhBRSwweEFCLDB4NDMsMHg1MSwweDAyLDB4NDksMHgwMCwweEI4LDB4QkUs
MHg2RSwKKyAgICAweDQzLDB4NTEsMHgwMywweDQ5LDB4NzgsMHhFQywweDdFLDB4OTcsMHg2NCww
eDU5LDB4MDMsMHg0OSwweDU1LDB4RDUsMHgzRiwweEZGLAorICAgIDB4NDMsMHg1MSwweDAyLDB4
NDksMHhBQiwweEZDLDB4RUIsMHg1QSwweDIzLDB4NTEsMHhFMiwweDQ4LDB4NkUsMHg4QiwweDNB
LDB4MkEsCisgICAgMHg0NCwweDU5LDB4MDMsMHg1MSwweEI3LDB4MTUsMHhBNywweDJCLDB4NjQs
MHg1OSwweDIzLDB4NTEsMHhCMywweDhCLDB4QkIsMHgyRCwKKyAgICAweDY0LDB4NTksMHgyMyww
eDUxLDB4RkEsMHg3RSwweEVBLDB4RUUsMHhDNSwweDY5LDB4MjMsMHg1MSwweEY1LDB4QjUsMHhG
NSwweDM3LAorICAgIDB4NEEsMHg5QiwweDI2LDB4NzIsMHgyRCwweDBELDB4MDksMHgwQiwweEFC
LDB4QTMsMHg2QSwweDlCLDB4MEQsMHhBOSwweEVFLDB4QUIsCisgICAgMHhFQywweEFCLDB4OEIs
MHhBMywweEFCLDB4MkIsMHhBNSwweEJELDB4MEQsMHhBQywweENDLDB4QTMsMHhCRiwweEFGLDB4
MkQsMHgyRCwKKyAgICAweDJELDB4QjQsMHhFQywweEFCLDB4ODksMHhBMiwweDgwLDB4M0YsMHgy
RCwweEI0LDB4Q0MsMHhBMywweEZFLDB4QkEsMHhBRiwweEUyLAorICAgIDB4RUQsMHhBQiwweDZC
LDB4OUIsMHg2OCwweEVDLDB4RjgsMHhFOCwweDhCLDB4OUIsMHgyOSwweDkzLDB4N0EsMHhFQiww
eEZCLDB4ODgsCisgICAgMHg2QiwweDlCLDB4MDksMHg4QiwweDVGLDB4N0YsMHhGQSwweEUwLDB4
MjksMHg5MywweEM4LDB4ODIsMHg1RSwweERFLDB4NUUsMHhCOCwKKyAgICAweEU4LDB4OEEsMHhD
OCwweDgyLDB4MzAsMHgwQSwweDBCLDB4RkEsMHgwOCwweDhCLDB4QzgsMHg4MiwweDhBLDB4Mjgs
MHg3NywweEY3LAorICAgIDB4RTgsMHg4MiwweDg3LDB4N0EsMHg3OCwweDdBLDB4RkUsMHg3Qyww
eDg3LDB4N0EsMHgyNiwweDZBLDB4QkMsMHhFQywweEQ4LDB4NTgsCisgICAgMHg2NywweDcyLDB4
MjYsMHg3MiwweDlBLDB4RkEsMHg2RiwweEFGLDB4NjYsMHg3MiwweDA1LDB4NkEsMHhEOCwweEY2
LDB4RkYsMHhCRSwKKyAgICAweDQ2LDB4NzIsMHgyNiwweDZBLDB4M0UsMHhBNSwweEVFLDB4QTcs
MHg0NiwweDcyLDB4MjYsMHg2QSwweEZBLDB4RUIsMHg4QSwweDhBLAorICAgIDB4NjcsMHg3QSww
eDI2LDB4NzIsMHhGNSwweDBELDB4MDIsMHgzQiwweEE4LDB4ODIsMHg0NiwweDdBLDB4QUYsMHgz
NiwweEFFLDB4MDIsCisgICAgMHhDOCwweDgyLDB4ODcsMHg4MiwweDFGLDB4QUQsMHhBQiwweEFB
LDB4QzgsMHg4MiwweDY4LDB4N0EsMHhBQSwweEJBLDB4RjYsMHhCOCwKKyAgICAweEM5LDB4ODIs
MHg2NywweDcyLDB4NkEsMHhGMiwweEY4LDB4RkEsMHg4OCwweDdBLDB4RTUsMHg2MSwweDU4LDB4
NzIsMHhFMCwweEUwLAorICAgIDB4QzUsMHg1OSwweEUyLDB4MzgsMHg1RSwweDVBLDB4RkUsMHhG
OCwweDAzLDB4NDEsMHg4MSwweDMwLDB4N0EsMHhFOCwweEE4LDB4QTAsCisgICAgMHhDMiwweDMw
LDB4ODEsMHgyOCwweEFGLDB4NUUsMHg3NywweEQ0LDB4QzIsMHgzMCwweDgxLDB4MjgsMHgzRiww
eEFCLDB4MkIsMHhBRCwKKyAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4ODAsMHhBMCwweEY4LDB4
RkYsMHhFMywweDM4LDB4QTIsMHgzMCwweDA4LDB4MEEsMHhGQiwweEZFLAorICAgIDB4MjMsMHg0
MSwweEExLDB4MzAsMHg4MywweEFCLDB4QUYsMHhGRCwweEUzLDB4MzgsMHhBMSwweDMwLDB4QTAs
MHhFMCwweEU4LDB4RkEsCisgICAgMHhFMywweDM4LDB4QzIsMHgzMCwweEE4LDB4MkIsMHgyMyww
eDAzLDB4MjQsMHg0MSwweEMyLDB4MzgsMHgyQiwweEFGLDB4RkYsMHg3RiwKKyAgICAweDI0LDB4
NDEsMHhDMywweDM4LDB4MDAsMHg4MiwweEZELDB4RkQsMHg2NSwweDQ5LDB4MDMsMHg0MSwweDIx
LDB4MjksMHhBQiwweEE1LAorICAgIDB4ODUsMHg1MSwweDI0LDB4NDEsMHhBQSwweEUyLDB4Q0Ys
MHhCNywweDQ0LDB4NDEsMHgwMywweDQxLDB4RDYsMHg2QSwweDYwLDB4QzIsCisgICAgMHg0NCww
eDQ5LDB4RTMsMHgzOCwweEEyLDB4RUYsMHg3RiwweDdGLDB4MjMsMHg0MSwweEUzLDB4MzgsMHg3
MCwweEJBLDB4RUUsMHhCNywKKyAgICAweEUzLDB4MzAsMHhBMywweDMwLDB4MEEsMHgwMCwweDgw
LDB4RjAsMHhDMiwweDMwLDB4QTIsMHgyOCwweDAwLDB4QTAsMHg5MCwweDk3LAorICAgIDB4MDQs
MHgzOSwweEMzLDB4MzAsMHg3NywweEE1LDB4QjUsMHhGRCwweEMzLDB4MzgsMHhFMywweDMwLDB4
N0YsMHhERiwweERGLDB4RDUsCisgICAgMHg0NCwweDQ5LDB4QzIsMHgzMCwweEFCLDB4MkQsMHhC
RCwweDNGLDB4ODUsMHg0OSwweDQ0LDB4NDksMHgyNSwweDJELDB4MkYsMHhCNSwKKyAgICAweEE1
LDB4NTEsMHg2NSwweDQ5LDB4NDgsMHg3MCwweDVBLDB4NUQsMHg2NSwweDQ5LDB4MjMsMHg0MSww
eEUwLDB4RTAsMHhGOCwweDc4LAorICAgIDB4NDQsMHg0MSwweDAzLDB4NDEsMHhCRiwweEJGLDB4
N0YsMHg1RiwweDAzLDB4NDEsMHhFMywweDM4LDB4NkEsMHhFQSwweDU4LDB4RjAsCisgICAgMHgw
MywweDM5LDB4QzMsMHgzMCwweEFGLDB4M0IsMHhGQiwweDdGLDB4RTMsMHgzOCwweEMyLDB4MzAs
MHg1NywweDU2LDB4RDcsMHhERSwKKyAgICAweEUzLDB4MzgsMHhDMywweDMwLDB4RTEsMHhCNyww
eDE0LDB4MEQsMHgwMywweDM5LDB4QzMsMHgzMCwweEJGLDB4QkYsMHhCRSwweEFBLAorICAgIDB4
MDMsMHgzOSwweEMyLDB4MzAsMHg5QSwweEE4LDB4QkEsMHhFRSwweEUzLDB4MzAsMHhDMiwweDMw
LDB4N0MsMHg1QywweDVCLDB4OTIsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEU1LDB4N0Is
MHhCRiwweEVCLDB4MDMsMHgzOSwweEMyLDB4MzAsMHhFQiwweEI3LDB4N0MsMHg3QSwKKyAgICAw
eDAzLDB4MzksMHhDMiwweDMwLDB4RTIsMHhBMywweDVGLDB4NzUsMHhFMywweDM4LDB4QzIsMHgz
MCwweDJBLDB4RkEsMHhGQSwweDAzLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhFQSwweEJE
LDB4RkIsMHhGMiwweEM0LDB4MzgsMHhFMiwweDMwLDB4QjcsMHhGNSwweDVGLDB4N0YsCisgICAg
MHgwMywweDM5LDB4QzIsMHgzMCwweDNGLDB4REYsMHhGQiwweERBLDB4MjQsMHgzOSwweEMyLDB4
MzAsMHg2MiwweEZFLDB4RkIsMHhERCwKKyAgICAweEUzLDB4MzAsMHhBMiwweDMwLDB4Q0IsMHhD
QSwweEY4LDB4RTgsMHhFMywweDMwLDB4QTEsMHgzMCwweEEwLDB4QUIsMHhBRiwweEJGLAorICAg
IDB4MDMsMHgzOSwweEMyLDB4MzAsMHgyRiwweEJELDB4RkQsMHhERCwweDAzLDB4MzksMHhDMiww
eDM4LDB4MEYsMHhCQiwweDlCLDB4MEQsCisgICAgMHgyMywweDQxLDB4RTIsMHgzOCwweDJBLDB4
MkMsMHgwRiwweDBELDB4NDQsMHg0MSwweDAzLDB4MzksMHg4RiwweEJGLDB4RDcsMHhGQywKKyAg
ICAweDQ0LDB4NDEsMHgyMywweDQxLDB4NTcsMHg2NSwweEI3LDB4RjUsMHg0NCwweDQxLDB4RTMs
MHgzOCwweEJFLDB4RkEsMHhGOCwweDFBLAorICAgIDB4NDQsMHg0MSwweDAzLDB4MzksMHhFRSww
eEFGLDB4RkIsMHgyRiwweDIzLDB4NDEsMHhDMiwweDM4LDB4RkEsMHhERSwweEY4LDB4RjgsCisg
ICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweDBELDB4MEQsMHhBRCwweEZELDB4ODUsMHg1MSwweDIz
LDB4NDEsMHgxRiwweEJFLDB4QUUsMHhFRCwKKyAgICAweEE1LDB4NTEsMHg0NCwweDQ5LDB4QTIs
MHgyMywweDI1LDB4M0QsMHhDNSwweDYxLDB4NDMsMHg0OSwweDJCLDB4RkYsMHhERiwweEZGLAor
ICAgIDB4MjYsMHg2QSwweDY0LDB4NTEsMHg4MCwweEFCLDB4QUYsMHhGNSwweEU2LDB4NjEsMHg2
MywweDUxLDB4N0UsMHhFQSwweEMyLDB4OEIsCisgICAgMHgyNiwweDZBLDB4ODQsMHg1OSwweDJE
LDB4MjUsMHg5RiwweEJGLDB4QTgsMHg3QSwweDI2LDB4NkEsMHgzRiwweEFGLDB4MkIsMHgyRCwK
KyAgICAweEM5LDB4ODIsMHg2NywweDcyLDB4OEEsMHhFQSwweEY2LDB4N0YsMHhDOSwweDgyLDB4
ODgsMHg3QSwweDZCLDB4QTIsMHhCRSwweEY3LAorICAgIDB4QUIsMHg5MywweEE4LDB4N0EsMHgz
NSwweEI1LDB4RjUsMHhGNSwweDUyLDB4Q0QsMHhFQywweEEzLDB4MEIsMHgyQiwweEFELDB4QUQs
CisgICAgMHg5MywweEQ1LDB4MTEsMHhDNSwweDBBLDB4MkIsMHhBRCwweEI1LDB4OTMsMHhENSww
eDUyLDB4Q0QsMHhGNCwweDU0LDB4N0IsMHhGQiwKKyAgICAweDkzLDB4Q0QsMHgzMSwweEM1LDB4
OEEsMHhBRSwweEFGLDB4RkYsMHg5MywweEQ1LDB4RjAsMHhCQywweDc4LDB4NTgsMHg1RiwweDU3
LAorICAgIDB4OTMsMHhDRCwweEYxLDB4QkMsMHhBRCwweDI5LDB4OEYsMHgyQSwweDczLDB4Q0Qs
MHgxMSwweEJELDB4RjgsMHg3OCwweEUwLDB4NjAsCisgICAgMHg1MiwweEM1LDB4RjEsMHhCQyww
eDBFLDB4QkYsMHhGNywweDU3LDB4NzMsMHhDRCwweEQxLDB4QjQsMHhBOCwweDI4LDB4QUYsMHhG
RCwKKyAgICAweDUyLDB4QzUsMHgxMSwweEJELDB4NzgsMHhBQSwweENGLDB4NkYsMHgxMSwweEJE
LDB4NkYsMHhBQywweEE4LDB4RjgsMHg3OCwweDVFLAorICAgIDB4QjAsMHhCNCwweDRGLDB4QTQs
MHhBMCwweDkyLDB4QkUsMHgxNywweEIwLDB4QjQsMHg5MCwweEFDLDB4NEEsMHgzMiwweDUyLDB4
NzYsCisgICAgMHg0RiwweEE0LDB4QzksMHg3QSwweEUwLDB4RjgsMHg1OCwweDU4LDB4MkUsMHg5
QywweEVBLDB4N0EsMHhCNSwweEJELDB4MjUsMHgwRCwKKyAgICAweEQwLDB4QjQsMHhFRSwweDlC
LDB4RkQsMHhFRCwweEFCLDB4MEEsMHhGMSwweEJDLDB4NEUsMHhBNCwweDU1LDB4NTUsMHhCRCww
eDBBLAorICAgIDB4MzIsMHhCRCwweDBFLDB4OUMsMHhGRCwweEFFLDB4QTIsMHg4MCwweEQwLDB4
QjQsMHg2RiwweEFDLDB4QkQsMHhBQSwweEE4LDB4MjAsCisgICAgMHhEMCwweEI0LDB4NkYsMHhB
QywweEEyLDB4QUYsMHhERiwweEZFLDB4QjAsMHhBQywweDZGLDB4QUMsMHgwMCwweEFFLDB4REMs
MHhERSwKKyAgICAweEIwLDB4QjQsMHg0RiwweEE0LDB4QTIsMHhFMiwweEZCLDB4RTIsMHhCMCww
eEFDLDB4NkYsMHhBQywweENCLDB4RDUsMHhENywweEY3LAorICAgIDB4ODQsMHg1OSwweDQzLDB4
NTEsMHhCRiwweEJBLDB4RTIsMHhGRSwweDg0LDB4NTksMHg0MywweDU5LDB4MEEsMHg4QiwweDBG
LDB4QjcsCisgICAgMHg2MywweDU5LDB4MjMsMHg1MSwweDBGLDB4OEEsMHhFRSwweEZDLDB4NjMs
MHg1OSwweDAyLDB4NTEsMHhGQSwweEVBLDB4RUEsMHhGQiwKKyAgICAweDQzLDB4NTEsMHgwMiww
eDQ5LDB4MDAsMHg3RiwweDZGLDB4N0YsMHg2NCwweDUxLDB4RTIsMHg0OCwweDBBLDB4QTUsMHhC
RiwweEFFLAorICAgIDB4NjMsMHg1MSwweDIyLDB4NTEsMHhCRiwweEZELDB4N0YsMHg1MywweDQz
LDB4NTEsMHgyMiwweDUxLDB4QzgsMHg3MCwweDcwLDB4N0EsCisgICAgMHg0MywweDUxLDB4MDIs
MHg0OSwweDhFLDB4RTIsMHg2MiwweEQ4LDB4NDMsMHg1MSwweDAyLDB4NDksMHg5NywweDhGLDB4
QkYsMHhFQiwKKyAgICAweDQ0LDB4NTEsMHgwMywweDQ5LDB4RUIsMHgyQSwweDJFLDB4MDEsMHg0
MywweDUxLDB4MDIsMHg0OSwweEFFLDB4MjcsMHhBRCwweEFELAorICAgIDB4NjQsMHg1MSwweDAy
LDB4NDksMHhGNSwweDM3LDB4RDcsMHg1RCwweDQzLDB4NTEsMHgwMywweDUxLDB4RUEsMHhDMiww
eEMzLDB4RkIsCisgICAgMHg0MywweDUxLDB4RTIsMHg0OCwweDc4LDB4RUIsMHhCRSwweEZBLDB4
NjQsMHg1OSwweDAzLDB4NTEsMHhGNywweEFGLDB4QUYsMHg4QiwKKyAgICAweDY0LDB4NTksMHgy
MywweDUxLDB4QUEsMHgyQSwweEVBLDB4RUEsMHg2NCwweDU5LDB4MjMsMHg1MSwweDJELDB4QUUs
MHhERSwweEZELAorICAgIDB4NDQsMHg1OSwweDIzLDB4NTksMHgwOCwweDIwLDB4MDAsMHhDMCww
eEU1LDB4NjksMHgwMywweDUxLDB4QkYsMHhCRiwweDNELDB4MzUsCisgICAgMHg0QSwweDlCLDB4
NjcsMHg3QSwweDA5LDB4MDksMHgwQiwweDBCLDB4QUIsMHhBMywweDZCLDB4OUIsMHgyMywweEFC
LDB4QUYsMHgyRSwKKyAgICAweEVDLDB4QUIsMHg4QiwweDlCLDB4RkYsMHhGRCwweDJGLDB4QkIs
MHhFQywweEFCLDB4QUMsMHhBMywweDJGLDB4QkYsMHhBRiwweEFGLAorICAgIDB4MEQsMHhBQyww
eENDLDB4QTMsMHgzQSwweEFGLDB4QkIsMHhCRiwweDBELDB4QUMsMHhDQywweEFCLDB4NjAsMHg4
MiwweEEyLDB4RUIsCisgICAgMHgwRCwweEFDLDB4QUIsMHhBMywweDdGLDB4QUUsMHhCRiwweDhB
LDB4RUMsMHhBQiwweDhCLDB4OUIsMHg1RiwweEYyLDB4RTIsMHhBMCwKKyAgICAweEFCLDB4QTMs
MHg0QSwweDkzLDB4NzUsMHg3RSwweEZFLDB4QTAsMHg2QSwweDlCLDB4RTksMHg4QSwweERFLDB4
NkUsMHhBOCwweDg4LAorICAgIDB4MjksMHg5MywweEM4LDB4ODIsMHg3NywweEZFLDB4QUEsMHhB
MCwweEU4LDB4OEEsMHhDOCwweDgyLDB4Q0IsMHhCRiwweEQ0LDB4RjgsCisgICAgMHhFOSwweDgy
LDB4NjcsMHg3MiwweEYwLDB4NjIsMHg3MiwweDdDLDB4NjcsMHg3MiwweDI2LDB4NzIsMHhEOCww
eEY4LDB4RkMsMHg3RiwKKyAgICAweDQ2LDB4NzIsMHgwNiwweDZBLDB4MkEsMHgwQSwweDI4LDB4
NkEsMHg0NiwweDcyLDB4MjYsMHg2QSwweEQ4LDB4MjgsMHg4OCwweDJCLAorICAgIDB4NDYsMHg3
MiwweDA1LDB4NkEsMHhBQywweDhBLDB4ODgsMHg2MCwweDY2LDB4NzIsMHgwNSwweDZBLDB4RkIs
MHhCRSwweEVGLDB4ODEsCisgICAgMHg4NywweDdBLDB4MjYsMHg3MiwweDlCLDB4M0IsMHgyQiww
eDAyLDB4RTgsMHg4QSwweDg4LDB4N0EsMHg5RiwweDk1LDB4QkYsMHhBQiwKKyAgICAweEM4LDB4
OEEsMHhBOCwweDdBLDB4OUYsMHhGRSwweEZDLDB4N0IsMHhFOSwweDhBLDB4ODgsMHg3QSwweEZB
LDB4QTgsMHhBMiwweEVBLAorICAgIDB4QTgsMHg4MiwweDY4LDB4N0EsMHg3OCwweEEwLDB4ODAs
MHhFOCwweDg3LDB4N0EsMHgyNiwweDZBLDB4NjIsMHgyMCwweEEwLDB4NjIsCisgICAgMHg0Niww
eDZBLDB4NDMsMHg0OSwweDVFLDB4NTgsMHg2OCwweDc4LDB4MjMsMHg0OSwweEEyLDB4MzAsMHhG
QSwweDdBLDB4RkMsMHg3OCwKKyAgICAweEEyLDB4MzAsMHg2MSwweDI4LDB4RjAsMHhGQSwweERF
LDB4RDgsMHhBMiwweDI4LDB4NjEsMHgyOCwweDJCLDB4MkYsMHgyQiwweEEyLAorICAgIDB4QzIs
MHgzMCwweEEyLDB4MjgsMHhENywweEVELDB4QUYsMHg2RCwweEMyLDB4MzAsMHg4MiwweDI4LDB4
MDgsMHhBRSwweEJCLDB4REIsCisgICAgMHhDMiwweDMwLDB4QTIsMHgzMCwweDBGLDB4MkEsMHgx
RiwweEQ3LDB4QzIsMHgzMCwweEEyLDB4MzAsMHhEQywweDU0LDB4NUEsMHhGMiwKKyAgICAweEUy
LDB4MzgsMHhBMiwweDMwLDB4MEYsMHhFRCwweEJELDB4RjcsMHhFMywweDM4LDB4QzMsMHgzOCww
eEUwLDB4RTAsMHhGRiwweDNCLAorICAgIDB4MDMsMHg0MSwweEUzLDB4MzgsMHhCRCwweEJELDB4
MDUsMHhBMiwweDQ0LDB4NDksMHhFMywweDM4LDB4MkIsMHgzRiwweERGLDB4NUYsCisgICAgMHg0
NCwweDQ5LDB4MDMsMHg0MSwweDgyLDB4RUUsMHhGNSwweDc1LDB4NDQsMHg0OSwweDAzLDB4Mzks
MHgyQSwweEVCLDB4QUQsMHgzNSwKKyAgICAweDQ1LDB4NDksMHhFMywweDM4LDB4NUUsMHhERiww
eEZDLDB4N0MsMHgwMywweDM5LDB4QTIsMHgzOCwweDJBLDB4MjgsMHgyOCwweEFCLAorICAgIDB4
MDMsMHgzOSwweEEyLDB4MzAsMHg3QSwweDdDLDB4RTgsMHhBMCwweEMzLDB4MzAsMHg4MSwweDI4
LDB4MkIsMHhBOSwweDdGLDB4RDYsCisgICAgMHhFMywweDMwLDB4ODIsMHgyOCwweDNBLDB4MkIs
MHhBRiwweEJELDB4MDQsMHgzOSwweEMyLDB4MzAsMHhFMywweEEzLDB4NzcsMHg3RiwKKyAgICAw
eDQ0LDB4NDksMHhDMiwweDMwLDB4MzUsMHhBNywweDM1LDB4QjUsMHg4NSwweDQ5LDB4MDMsMHg0
MSwweDJCLDB4QUUsMHhERiwweDU1LAorICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHg4OCwweEZF
LDB4RjUsMHhENywweDY0LDB4NDksMHhFMywweDM4LDB4RTAsMHhGMCwweEFGLDB4REYsCisgICAg
MHgyNCwweDQxLDB4RTMsMHgzOCwweEVCLDB4RUIsMHg1RSwweDU3LDB4MDMsMHgzOSwweEEyLDB4
MzAsMHhBMiwweEYyLDB4RkEsMHhEQSwKKyAgICAweEUzLDB4MzgsMHhBMiwweDMwLDB4RUEsMHhC
QSwweDJBLDB4QjcsMHgwNCwweDM5LDB4QzMsMHgzMCwweEI1LDB4QkYsMHgzRSwweDk3LAorICAg
IDB4MDMsMHgzOSwweEMzLDB4MzAsMHhGRiwweDdFLDB4RUEsMHhBQiwweDAzLDB4MzksMHhDMyww
eDMwLDB4QUIsMHhGQiwweEJGLDB4QkQsCisgICAgMHgwMywweDM5LDB4QzMsMHgzMCwweEEyLDB4
QUEsMHhCOCwweERBLDB4MDMsMHgzOSwweEMyLDB4MzAsMHgyQSwweDBBLDB4QkEsMHhGRSwKKyAg
ICAweEUzLDB4MzgsMHhDMiwweDMwLDB4MkYsMHhENywweDU3LDB4NTUsMHhFMywweDMwLDB4QTIs
MHgzMCwweEE4LDB4M0YsMHgyRiwweDJGLAorICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHhGQSww
eEZBLDB4RjAsMHg3MiwweEUzLDB4MzgsMHhDMiwweDMwLDB4MEQsMHhBRCwweDk1LDB4MjUsCisg
ICAgMHgwMywweDQxLDB4RTMsMHgzMCwweDUzLDB4NUQsMHhGNSwweEY1LDB4MjQsMHg0MSwweEMz
LDB4MzAsMHhGNywweEJGLDB4QkEsMHhBRSwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4N0Us
MHg3RSwweEJDLDB4QjgsMHgwMywweDM5LDB4QzIsMHgzMCwweEJGLDB4QkIsMHhBOCwweEMwLAor
ICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHg3OCwweEVBLDB4RTgsMHg4MiwweDAzLDB4MzksMHhB
MSwweDMwLDB4RjcsMHhCQiwweEFBLDB4QTAsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEZE
LDB4NUYsMHhDQiwweDhBLDB4MDMsMHgzOSwweEMyLDB4MzgsMHgwQiwweDAzLDB4MEIsMHhBQiwK
KyAgICAweDQ0LDB4NDEsMHhFMywweDM4LDB4QUQsMHgzRiwweEFCLDB4QUIsMHg2NCwweDQ5LDB4
MjMsMHg0MSwweEI4LDB4RkUsMHhCRSwweDZGLAorICAgIDB4NjQsMHg0OSwweDIzLDB4NDEsMHg1
NiwweDc4LDB4NUYsMHg1RiwweDIzLDB4NDEsMHgwMywweDM5LDB4RkIsMHhERiwweERELDB4MzYs
CisgICAgMHgyMywweDQxLDB4MDMsMHgzOSwweEVFLDB4N0IsMHhCRiwweEFFLDB4MDMsMHg0MSww
eEUzLDB4MzAsMHhBMiwweDhBLDB4MDAsMHgyOCwKKyAgICAweDI0LDB4NDEsMHhFMiwweDM4LDB4
MTYsMHhGNywweEJFLDB4QUYsMHg0NCwweDQ5LDB4RTIsMHgzOCwweDNFLDB4MzcsMHgzNywweEZG
LAorICAgIDB4QTUsMHg1MSwweDIzLDB4NDksMHhCRCwweEJCLDB4MkIsMHg4RiwweDg0LDB4NTEs
MHg0NCwweDQ5LDB4RUIsMHhFRSwweEY4LDB4RTgsCisgICAgMHhBNSwweDU5LDB4NDQsMHg0OSww
eDJGLDB4QjUsMHg1RiwweDVGLDB4QTQsMHg1OSwweDY0LDB4NTEsMHgyQiwweEFFLDB4MjksMHgw
QiwKKyAgICAweDA2LDB4NjIsMHhBNCwweDU5LDB4MkYsMHhBRCwweEJCLDB4RUIsMHhDOCwweDdB
LDB4MDYsMHg2MiwweEFELDB4MjksMHgyRCwweDI1LAorICAgIDB4MDksMHg4MywweDY3LDB4NzIs
MHg3RSwweDVBLDB4NkEsMHhBMiwweEM4LDB4ODIsMHg2NywweDcyLDB4QUUsMHg4QiwweEJELDB4
RDUsCisgICAgMHgyQSwweDgzLDB4ODcsMHg3QSwweDNELDB4RkYsMHhGNSwweEY1LDB4QUYsMHhC
QywweDRBLDB4OTMsMHgwQiwweDBCLDB4MjksMHgwRCwKKyAgICAweDUyLDB4Q0QsMHhBRiwweEI0
LDB4MEIsMHg4RSwweDJGLDB4QUQsMHg3MiwweENELDB4MzIsMHhDNSwweDgyLDB4MkIsMHg4OSww
eEE1LAorICAgIDB4OTMsMHhDRCwweDMxLDB4QzUsMHhGNywweEZGLDB4RTcsMHg4OSwweDMyLDB4
QzUsMHhGMSwweEJDLDB4RjgsMHgxRiwweDNDLDB4QkMsCisgICAgMHg5NCwweENELDB4NTIsMHhD
NSwweDg5LDB4MkIsMHgwQiwweDIzLDB4OTQsMHhDRCwweDMyLDB4QzUsMHg3OCwweEU4LDB4RTAs
MHg1OCwKKyAgICAweDMyLDB4QzUsMHhGMSwweEJDLDB4N0IsMHg1MCwweEZDLDB4OTYsMHgxMSww
eEJELDB4RDAsMHhCNCwweEVDLDB4RUEsMHhEMCwweERCLAorICAgIDB4MzIsMHhDNSwweDkwLDB4
QjQsMHgyMiwweEFBLDB4QkIsMHg3NywweEYxLDB4QkMsMHg0RiwweEE0LDB4N0MsMHg3OCwweDdB
LDB4RkYsCisgICAgMHg4RiwweEFDLDB4NEYsMHhBNCwweEI3LDB4QkQsMHgyQSwweDBBLDB4RDAs
MHhCNCwweDRGLDB4QTQsMHg3RSwweDdCLDB4NkIsMHg4QSwKKyAgICAweEQwLDB4QjQsMHhFQSww
eDdBLDB4NUUsMHhGRSwweEFBLDB4MDAsMHhGMCwweEJDLDB4OEMsMHg4QiwweDI1LDB4MkIsMHgw
MiwweDA4LAorICAgIDB4MTEsMHhCRCwweEIwLDB4QjQsMHhCOSwweDhFLDB4ODAsMHg3RiwweDEx
LDB4QkQsMHhEMCwweEI0LDB4MjIsMHgwQSwweEJBLDB4QjUsCisgICAgMHg1MiwweEM1LDB4MTEs
MHhCRCwweDZELDB4QkIsMHgyRCwweDNELDB4NTEsMHhDNSwweEQwLDB4QjQsMHg1RiwweDVBLDB4
RkEsMHhGOCwKKyAgICAweDExLDB4QkQsMHg4RiwweEFDLDB4NTcsMHg3RSwweEZBLDB4QjAsMHhG
MSwweEJDLDB4OEYsMHhBQywweDdGLDB4N0YsMHhFRiwweEUyLAorICAgIDB4QjAsMHhCNCwweDZG
LDB4QUMsMHg1RCwweDlGLDB4MjMsMHhDMiwweDkwLDB4QUMsMHg2RiwweEFDLDB4NTUsMHgyQiww
eDdBLDB4N0IsCisgICAgMHg2NCwweDU5LDB4NDMsMHg1MSwweDhFLDB4OTgsMHhGNiwweDU3LDB4
NjQsMHg1OSwweDIzLDB4NTEsMHhGMCwweDdBLDB4NUYsMHhEQiwKKyAgICAweDY0LDB4NTksMHgy
MywweDUxLDB4REIsMHhFNSwweEEzLDB4Q0IsMHg0MywweDUxLDB4MjIsMHg1MSwweEY1LDB4NzQs
MHg3NCwweDA4LAorICAgIDB4NDMsMHg1MSwweDAyLDB4NDksMHhBQiwweERBLDB4MzgsMHgyRiww
eDQzLDB4NTEsMHgyMywweDUxLDB4OEUsMHhBRiwweDlDLDB4NTgsCisgICAgMHg2MywweDUxLDB4
MDIsMHg0OSwweEVGLDB4OEYsMHhBRiwweEZFLDB4NDMsMHg1MSwweEUyLDB4NDAsMHhBOCwweEMy
LDB4RUEsMHg3QiwKKyAgICAweDIzLDB4NDksMHhFMiwweDQ4LDB4RDQsMHhCQSwweEE3LDB4ODks
MHg0MywweDUxLDB4MDMsMHg0OSwweDBCLDB4OEYsMHg4NSwweEQ1LAorICAgIDB4NDQsMHg1MSww
eDAzLDB4NDksMHhFQSwweEVBLDB4NUYsMHg1NywweDIzLDB4NTEsMHgwMywweDQ5LDB4MEQsMHg4
RiwweERDLDB4MkUsCisgICAgMHg0MywweDU5LDB4MDMsMHg1MSwweERELDB4M0IsMHg2OCwweEZB
LDB4MjMsMHg1MSwweEUzLDB4NDgsMHg4MiwweEIyLDB4RjgsMHhGQiwKKyAgICAweDQ0LDB4NTks
MHgwMywweDUxLDB4NTUsMHgzNSwweEE5LDB4M0YsMHg2NCwweDU5LDB4MjMsMHg1OSwweEFCLDB4
RTAsMHg2OCwweENBLAorICAgIDB4NjQsMHg1OSwweDIzLDB4NTEsMHg3OCwweEUyLDB4RkEsMHg1
RSwweDQ0LDB4NTksMHgyMywweDUxLDB4RkQsMHhERCwweDc0LDB4MDUsCisgICAgMHg0NCwweDU5
LDB4MDMsMHg1MSwweEVCLDB4QUYsMHg4MywweDgwLDB4ODcsMHg4MiwweDIzLDB4NTEsMHhCNSww
eEI1LDB4QjUsMHgyRCwKKyAgICAweDhCLDB4QTMsMHhDOCwweDhBLDB4MjksMHgwOSwweDA5LDB4
MEIsMHhDQywweEFCLDB4NkEsMHg5QiwweEJGLDB4QTcsMHhBRCwweEFBLAorICAgIDB4Q0MsMHhB
MywweEFCLDB4QTMsMHgwQiwweEI5LDB4N0IsMHhFQiwweEVDLDB4QUIsMHg4QiwweDlCLDB4MkEs
MHg4QSwweEFELDB4RUUsCisgICAgMHgwRCwweEFDLDB4QUIsMHhBMywweDI4LDB4MEUsMHgzNyww
eEQ3LDB4MkQsMHhCNCwweENDLDB4QTMsMHhBOCwweEEyLDB4Q0IsMHhFRCwKKyAgICAweDBELDB4
QUMsMHhDQywweEFCLDB4QUEsMHhGMCwweEUyLDB4NkQsMHgwRCwweEFDLDB4Q0MsMHhBQiwweEUy
LDB4RkIsMHhFOCwweERBLAorICAgIDB4RUMsMHhBQiwweEFCLDB4QTMsMHg1NiwweDY4LDB4MDAs
MHg2RSwweENDLDB4QUIsMHg2QSwweDlCLDB4NUYsMHhBQSwweDgwLDB4RkUsCisgICAgMHhBQiww
eEEzLDB4MDksMHg4QiwweDVBLDB4N0EsMHhGMCwweDc4LDB4MDksMHg5MywweDg3LDB4N0EsMHhB
QSwweEY4LDB4N0MsMHg3RSwKKyAgICAweEE4LDB4ODIsMHg0NiwweDcyLDB4RjAsMHhFOCwweEZG
LDB4NTcsMHg2NywweDdBLDB4MjYsMHg3MiwweDc2LDB4ODcsMHgzNywweEY3LAorICAgIDB4NDYs
MHg3MiwweDI2LDB4NkEsMHhBOCwweEMwLDB4ODAsMHgyMCwweDQ2LDB4NzIsMHgyNiwweDZBLDB4
QUQsMHg5RiwweEJBLDB4QTMsCisgICAgMHg0NiwweDcyLDB4MDUsMHg2QSwweDMyLDB4MkIsMHgw
QSwweDJGLDB4ODcsMHg3QSwweDQ2LDB4NzIsMHg3OSwweERELDB4RkQsMHg4QiwKKyAgICAweEM4
LDB4ODIsMHg2NywweDcyLDB4M0QsMHgwRiwweDA5LDB4MDIsMHhDOCwweDgyLDB4ODcsMHg3QSww
eEE4LDB4QjAsMHhGQSwweEYyLAorICAgIDB4QzgsMHg4MiwweDY3LDB4N0EsMHhBOCwweEFBLDB4
QUEsMHg1QSwweEM5LDB4ODIsMHgyNSwweDZBLDB4ODAsMHhBQiwweEZFLDB4NTYsCisgICAgMHg4
OCwweDdBLDB4MjYsMHg2QSwweDgwLDB4RkEsMHg1RiwweDVELDB4NjcsMHg3QSwweDA1LDB4NkEs
MHg4MCwweEZBLDB4NUIsMHhENywKKyAgICAweDI2LDB4NkEsMHhBNCwweDU5LDB4NzAsMHg2MCww
eEUwLDB4QUEsMHhBNCwweDU5LDB4QzIsMHgzOCwweDVGLDB4N0UsMHhERSwweDc4LAorICAgIDB4
QzIsMHgzOCwweDgyLDB4MzAsMHg1NiwweDVFLDB4N0MsMHg1QywweEEyLDB4MzAsMHg4MSwweDI4
LDB4QUEsMHhBRiwweDIyLDB4MjksCisgICAgMHhDMiwweDMwLDB4QTIsMHgyOCwweDZELDB4RTgs
MHhDMCwweEUwLDB4QzIsMHgzMCwweDgxLDB4MjgsMHg3QiwweEVBLDB4QTIsMHhBQSwKKyAgICAw
eEMzLDB4MzAsMHg4MSwweDI4LDB4RkEsMHhGQiwweEJDLDB4MkEsMHhDMiwweDMwLDB4QTIsMHgz
MCwweEVGLDB4QUYsMHgwQiwweDBCLAorICAgIDB4RTMsMHgzOCwweEEyLDB4MzAsMHhGNSwweEFG
LDB4MkIsMHgwMiwweDAzLDB4MzksMHhDMiwweDMwLDB4M0QsMHhBRiwweEFCLDB4MEUsCisgICAg
MHgwMywweDM5LDB4QzIsMHgzOCwweDlDLDB4NUMsMHg3RSwweDdFLDB4MDMsMHg0MSwweEMzLDB4
MzgsMHg4QSwweEM5LDB4RUQsMHhBRCwKKyAgICAweDQ0LDB4NDksMHhFMywweDM4LDB4QUQsMHhB
RCwweDBELDB4MkIsMHg2NSwweDQ5LDB4MDMsMHg0MSwweEY1LDB4QUUsMHhBQSwweENBLAorICAg
IDB4MjQsMHg0MSwweEUzLDB4MzgsMHg1NCwweDVDLDB4OEMsMHg4MCwweDI0LDB4NDEsMHhFMyww
eDM4LDB4NTUsMHg3RCwweDZBLDB4ODAsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEFCLDB4
OUQsMHg5NywweEJBLDB4RTMsMHgzOCwweDgyLDB4MjgsMHg3QywweEYwLDB4RjgsMHhBMCwKKyAg
ICAweEMyLDB4MzAsMHg4MiwweDI4LDB4OUYsMHhERiwweEQ3LDB4QjYsMHhDMiwweDMwLDB4QTIs
MHgyOCwweDAwLDB4QjMsMHg3RiwweEQ2LAorICAgIDB4RTMsMHgzOCwweDgyLDB4MjgsMHgyQSww
eEFBLDB4QUQsMHhCRiwweDIzLDB4NDEsMHhDMywweDM4LDB4QUYsMHgzRCwweDlELDB4QkQsCisg
ICAgMHg0NCwweDQ5LDB4RTMsMHgzOCwweERGLDB4RkYsMHhDMCwweDhBLDB4MjQsMHg0MSwweEMy
LDB4MzgsMHhFRSwweEYyLDB4RkEsMHhGOCwKKyAgICAweEUzLDB4MzgsMHg4MiwweDMwLDB4MzAs
MHhGRSwweEY2LDB4RkYsMHhDMywweDMwLDB4ODIsMHgyOCwweDIwLDB4QUIsMHhBNywweERGLAor
ICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHgwRSwweDJFLDB4MEEsMHg4MywweEUzLDB4MzAsMHhB
MiwweDI4LDB4MkYsMHhCNywweDdGLDB4RkYsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDBC
LDB4MEEsMHgyRiwweEEzLDB4MDMsMHgzMSwweEEyLDB4MjgsMHg4QSwweEFBLDB4QkUsMHhERCwK
KyAgICAweEUzLDB4MzAsMHhBMiwweDMwLDB4MjAsMHgyMiwweEI2LDB4QkYsMHgwMywweDM5LDB4
QzIsMHgzMCwweEZGLDB4OUIsMHhGQSwweEU4LAorICAgIDB4MDMsMHgzMSwweEEyLDB4MzAsMHhE
RiwweEZDLDB4RUIsMHhFQiwweEUzLDB4MzgsMHhDMiwweDMwLDB4QTUsMHhBNSwweDJBLDB4MDgs
CisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDUzLDB4RUIsMHhCRiwweEZDLDB4MDMsMHgzOSww
eEMyLDB4MzAsMHhBNSwweDk1LDB4OTcsMHg1NSwKKyAgICAweDAzLDB4MzksMHhBMiwweDMwLDB4
MkEsMHg5QSwweDJBLDB4QTIsMHgwMywweDM5LDB4RTMsMHgzOCwweEJDLDB4RDcsMHg1NywweERF
LAorICAgIDB4MjQsMHg0MSwweEUzLDB4MzgsMHhEQSwweDdELDB4RjIsMHg0QSwweDAzLDB4NDEs
MHhFMiwweDM4LDB4NzksMHhBQiwweDNBLDB4QTIsCisgICAgMHgyNCwweDQxLDB4RTIsMHgzOCww
eEZGLDB4NkIsMHhFOCwweDBGLDB4MDMsMHg0MSwweEUzLDB4MzgsMHhCRCwweEE3LDB4RkQsMHg3
QiwKKyAgICAweDIzLDB4NDEsMHhDMiwweDMwLDB4QjcsMHhCRSwweDJBLDB4QUEsMHgyNCwweDQx
LDB4RTIsMHgzOCwweDk3LDB4RjcsMHhCOSwweDhCLAorICAgIDB4NjQsMHg0OSwweDAzLDB4NDEs
MHhFRiwweEI3LDB4MjUsMHgwRCwweDY0LDB4NDksMHgwMywweDM5LDB4RUUsMHg1QSwweEZBLDB4
RjIsCisgICAgMHgwMywweDQxLDB4NDQsMHgzOSwweEFBLDB4RkEsMHgyQiwweEZGLDB4MjQsMHg0
MSwweEUyLDB4MzgsMHgyQSwweDhFLDB4RkIsMHhERSwKKyAgICAweDIzLDB4NDEsMHgwMywweDM5
LDB4MDMsMHgzRiwweDZGLDB4RDcsMHgyMywweDQxLDB4RTMsMHgzOCwweDJFLDB4MDgsMHhBRiww
eEJGLAorICAgIDB4MjQsMHg0MSwweEUyLDB4MzgsMHgyRSwweDJBLDB4MkYsMHhCNywweDQ0LDB4
NDksMHhFMiwweDM4LDB4QUEsMHgwQSwweEYyLDB4N0UsCisgICAgMHg4NSwweDUxLDB4MDMsMHg0
MSwweDJCLDB4MEYsMHgzRCwweEJELDB4QTUsMHg1MSwweDQ0LDB4NDksMHg3RSwweEFFLDB4OEIs
MHhBRCwKKyAgICAweEU2LDB4NTksMHg2NCwweDUxLDB4NUQsMHhGOSwweEFBLDB4MkMsMHhDNSww
eDU5LDB4NjQsMHg1MSwweDhELDB4QkQsMHg5RiwweDNGLAorICAgIDB4MjYsMHg2QSwweEU1LDB4
NjEsMHg3NSwweDM1LDB4OUYsMHhBMiwweEE4LDB4NzIsMHgwNiwweDZBLDB4MkQsMHhCRiwweEVG
LDB4QkYsCisgICAgMHhFOSwweDgyLDB4ODcsMHg3MiwweEVCLDB4RkIsMHgzRCwweEVELDB4Qzgs
MHg4MiwweDY3LDB4NzIsMHhENiwweDVBLDB4RjgsMHg2MCwKKyAgICAweEE4LDB4N0EsMHg0Niww
eDcyLDB4MEEsMHgyRCwweDM3LDB4OUUsMHg2RSwweEFDLDB4QTgsMHg3QSwweDBGLDB4MkIsMHgy
RCwweDJELAorICAgIDB4MTEsMHhDNSwweDhFLDB4QjQsMHgyOSwweEFGLDB4MkQsMHgyOSwweEIz
LDB4RDUsMHgxMSwweEJELDB4RkQsMHhCNSwweEFGLDB4MEIsCisgICAgMHhCMywweEQ1LDB4MzIs
MHhDNSwweEFCLDB4RUIsMHhGQSwweDc4LDB4MzIsMHhDNSwweEFGLDB4QUMsMHhBOCwweEFBLDB4
QUYsMHhCNSwKKyAgICAweEI0LDB4RDUsMHgzMiwweEM1LDB4QTksMHhBOSwweEE5LDB4OEYsMHg3
MywweENELDB4MzMsMHhDNSwweDcwLDB4RTgsMHhBOCwweEU4LAorICAgIDB4NTMsMHhDNSwweDEx
LDB4QkQsMHhGNywweDVBLDB4NTgsMHg3OCwweDExLDB4QkQsMHhCMCwweEI0LDB4N0YsMHg3RSww
eDdFLDB4NUMsCisgICAgMHhCMCwweEI0LDB4MEUsMHhBNCwweEUwLDB4RkEsMHhGQywweEJFLDB4
QjAsMHhCNCwweDJFLDB4QTQsMHhBRiwweEFELDB4QUIsMHg4QSwKKyAgICAweDExLDB4QkQsMHg2
RiwweEFDLDB4OUQsMHgyRiwweDBCLDB4QUEsMHhGMSwweEJDLDB4NkYsMHhBQywweEEyLDB4ODgs
MHg2OCwweDVFLAorICAgIDB4RDEsMHhCNCwweDRFLDB4QTQsMHg4MCwweEZFLDB4NTUsMHg1NSww
eEIwLDB4QjQsMHgyRSwweEE0LDB4ODAsMHhBRiwweEJGLDB4NTUsCisgICAgMHhCMCwweEI0LDB4
MEUsMHg5QywweEEwLDB4QUEsMHg3RSwweDU3LDB4RjEsMHhCNCwweENELDB4OUIsMHgyQSwweEJB
LDB4RkYsMHhENSwKKyAgICAweEYxLDB4QkMsMHg0RSwweEE0LDB4MDAsMHhBQiwweEY1LDB4NTUs
MHgxMSwweEJELDB4NkYsMHhBQywweDAwLDB4OEIsMHhCRiwweEY1LAorICAgIDB4MzIsMHhDNSww
eDhGLDB4QUMsMHhBQSwweDAyLDB4QkEsMHhERCwweDMyLDB4QzUsMHhEMCwweEI0LDB4N0EsMHhC
QywweEY2LDB4OUIsCisgICAgMHgxMSwweEJELDB4QjAsMHhCNCwweDVGLDB4MDgsMHgyMCwweDAw
LDB4MzIsMHhDNSwweDhGLDB4QUMsMHg1NSwweEVDLDB4ODgsMHgwQSwKKyAgICAweDY0LDB4NTks
MHgyMywweDUxLDB4RkUsMHhEQywweDU1LDB4RDUsMHg0MywweDUxLDB4MjMsMHg1MSwweENCLDB4
NjIsMHhCQywweDc1LAorICAgIDB4NjMsMHg1MSwweDAzLDB4NDksMHg4RCwweEZFLDB4NUEsMHhG
NywweDQzLDB4NTEsMHgwMiwweDQ5LDB4MEMsMHhCQSwweEZFLDB4OEEsCisgICAgMHg0MywweDUx
LDB4MDMsMHg1MSwweDJBLDB4OEEsMHg0QSwweEM4LDB4NjQsMHg1OSwweDAzLDB4NDksMHhFQiww
eEIyLDB4RkIsMHg2QiwKKyAgICAweDQzLDB4NTEsMHhFMiwweDQ4LDB4RTIsMHg4MiwweEY4LDB4
NkUsMHg0MywweDUxLDB4RTIsMHg0MCwweERCLDB4RUUsMHhGQiwweEEzLAorICAgIDB4NDMsMHg1
MSwweDAzLDB4NDksMHg3RiwweDdGLDB4RkIsMHg4QiwweDQ0LDB4NTEsMHgwMiwweDQ5LDB4RkQs
MHhBQiwweDhBLDB4QjgsCisgICAgMHgyMywweDUxLDB4MDIsMHg0OSwweDVFLDB4N0YsMHhBMiww
eDAyLDB4NDMsMHg1MSwweEUzLDB4NDgsMHg4QSwweEUyLDB4QTAsMHhBOCwKKyAgICAweDQ0LDB4
NTksMHhFMiwweDUwLDB4RUEsMHg2MiwweEZBLDB4RUEsMHg0NCwweDU5LDB4RTIsMHg0OCwweEJE
LDB4MkQsMHhBQSwweDAyLAorICAgIDB4ODUsMHg2MSwweDIzLDB4NTEsMHhGRCwweDdGLDB4NUUs
MHg3OCwweDY0LDB4NTksMHgyMywweDUxLDB4QjksMHhCMSwweDIyLDB4ODMsCisgICAgMHg2NCww
eDU5LDB4MjMsMHg1MSwweEY0LDB4RkUsMHhGRiwweEFELDB4NjQsMHg2MSwweDIzLDB4NTEsMHhC
RCwweEE5LDB4Q0IsMHhGQiwKKyAgICAweDY0LDB4NTksMHgyMywweDUxLDB4QUMsMHhCRiwweEY1
LDB4MkYsMHhBOCwweDgyLDB4NDQsMHg1OSwweDNELDB4M0QsMHgyRCwweDJELAorICAgIDB4QUIs
MHhBMywweDA5LDB4OTMsMHhBRiwweEFELDB4MEQsMHgyQiwweENCLDB4QTMsMHg4QiwweDlCLDB4
MUYsMHhBRCwweEFCLDB4QUEsCisgICAgMHhDQywweEEzLDB4OEIsMHhBMywweDgzLDB4QTIsMHhE
MiwweEVBLDB4Q0IsMHhBMywweDZBLDB4OUIsMHhBMiwweEFBLDB4RUIsMHg3RiwKKyAgICAweEFC
LDB4QTMsMHg0QiwweDlCLDB4MDAsMHhFMCwweEVCLDB4NUYsMHhBQywweEEzLDB4NEIsMHg5Qiww
eDgyLDB4QUIsMHhFQiwweEZELAorICAgIDB4Q0MsMHhBQiwweDJBLDB4OTMsMHgwMiwweEFBLDB4
QkIsMHg1RiwweENDLDB4QTMsMHgyOSwweDkzLDB4MDAsMHhBQSwweERGLDB4NTUsCisgICAgMHhB
QiwweEEzLDB4MDksMHg4QiwweDgwLDB4RUEsMHhGRSwweEQ1LDB4NkEsMHg5QiwweEM4LDB4ODIs
MHgwMCwweEVBLDB4RkUsMHg1RiwKKyAgICAweDI5LDB4OTMsMHg2NywweDdBLDB4QTAsMHhGOCww
eEZBLDB4NUYsMHhDOCwweDgyLDB4NjcsMHg3MiwweERFLDB4NUYsMHhGRiwweEZGLAorICAgIDB4
NjcsMHg3QSwweDQ2LDB4NzIsMHg1MywweENDLDB4N0EsMHg3NCwweDY3LDB4NzIsMHgyNiwweDcy
LDB4Q0UsMHg0QSwweDZBLDB4N0YsCisgICAgMHg0NiwweDcyLDB4MjUsMHg2QSwweEE4LDB4OTAs
MHg3QiwweDU3LDB4NDYsMHg3MiwweDA1LDB4NkEsMHhBRSwweEEyLDB4QUYsMHgzRiwKKyAgICAw
eDY3LDB4NzIsMHgwNiwweDZBLDB4QkYsMHhBNiwweEFGLDB4QUEsMHhFOSwweDgyLDB4NDYsMHg3
MiwweDk3LDB4QkQsMHhBRSwweDIzLAorICAgIDB4RTgsMHg4MiwweDg3LDB4N0EsMHhBRiwweEZB
LDB4REEsMHg3NCwweEM4LDB4ODIsMHg0NiwweDcyLDB4ODgsMHhBOCwweEFBLDB4N0EsCisgICAg
MHhBOCwweDgyLDB4MDUsMHg2QSwweEU4LDB4RjgsMHg3RSwweDVGLDB4NjcsMHg3MiwweEM1LDB4
NjEsMHhFOCwweDZBLDB4N0YsMHg1RiwKKyAgICAweDA1LDB4NkEsMHhBNCwweDU5LDB4RTAsMHg2
RCwweEZFLDB4NUYsMHgwNSwweDZBLDB4ODQsMHg1OSwweDAyLDB4QUIsMHg5RSwweEZGLAorICAg
IDB4MjUsMHg2MiwweEM1LDB4NjEsMHg2RiwweERGLDB4RkQsMHhFRCwweEM1LDB4NjEsMHhFMyww
eDQwLDB4NzgsMHg3OCwweEU4LDB4ODAsCisgICAgMHgwNCwweDQxLDB4NjEsMHgyOCwweDVFLDB4
NUUsMHg3OCwweDc4LDB4QzIsMHgzMCwweDYxLDB4MjgsMHgzRiwweDJELDB4MkYsMHhBRCwKKyAg
ICAweEUzLDB4MzgsMHhBMiwweDMwLDB4N0YsMHhGMiwweEFFLDB4M0YsMHhFMywweDM4LDB4QTIs
MHgzMCwweDdGLDB4RkIsMHg4QSwweEEwLAorICAgIDB4MDQsMHgzOSwweEMzLDB4MzAsMHhENSww
eERELDB4RjUsMHgwQSwweEUzLDB4MzgsMHhBMiwweDMwLDB4QUYsMHhBRSwweDVFLDB4RjgsCisg
ICAgMHgwMywweDM5LDB4QzIsMHgzOCwweEE5LDB4MkQsMHgwOSwweDJCLDB4RTIsMHg0MCwweDIz
LDB4MzksMHhGQywweEZFLDB4RkYsMHhBRiwKKyAgICAweDAzLDB4NDEsMHhBMiwweDM4LDB4RTgs
MHhBOCwweDJDLDB4MkUsMHgyNCwweDQxLDB4QzMsMHgzOCwweEE1LDB4MkYsMHg4QSwweEEwLAor
ICAgIDB4NjUsMHg0OSwweDAzLDB4NDEsMHhBRCwweEI1LDB4MEQsMHhFQiwweDY1LDB4NDksMHgy
NCwweDQxLDB4QUIsMHg5RiwweERFLDB4OUIsCisgICAgMHg0NCwweDQ5LDB4MjMsMHg0MSwweDU0
LDB4NzcsMHg1RiwweDU1LDB4NDQsMHg0MSwweDAzLDB4NDEsMHhFMiwweEYyLDB4RkYsMHhCNywK
KyAgICAweDQ0LDB4NDEsMHhFMywweDM4LDB4RkIsMHhEQSwweEUyLDB4RkEsMHgwMywweDM5LDB4
QzIsMHgzMCwweDdFLDB4RkEsMHhDMiwweEUyLAorICAgIDB4RTMsMHgzMCwweDgxLDB4MjgsMHhE
RiwweDVGLDB4RkMsMHhGOCwweEUzLDB4MzAsMHhBMiwweDMwLDB4NUYsMHg4OSwweDI5LDB4QkQs
CisgICAgMHgwMywweDM5LDB4QTIsMHgzMCwweDFELDB4RkIsMHhFRSwweEFFLDB4MjQsMHg0MSww
eEMzLDB4MzAsMHgyRiwweDI1LDB4MkYsMHgwQiwKKyAgICAweDY0LDB4NDksMHgwNCwweDQxLDB4
RUYsMHhGRiwweEVGLDB4RUYsMHgyNCwweDQxLDB4QTIsMHgzMCwweEUwLDB4QjAsMHhGQSwweDVF
LAorICAgIDB4RTMsMHgzOCwweEEyLDB4MzAsMHg3RiwweDdCLDB4RUIsMHg4QiwweEUyLDB4MzAs
MHg4MSwweDI4LDB4RkYsMHg3QiwweEFBLDB4QTAsCisgICAgMHgwMywweDM5LDB4ODIsMHgyOCww
eEVCLDB4N0IsMHhGQiwweDBCLDB4RTMsMHgzMCwweEEyLDB4MjgsMHhFRiwweEJCLDB4OEIsMHgy
OCwKKyAgICAweEUzLDB4MzAsMHhBMiwweDMwLDB4RTMsMHhGQiwweEZGLDB4RDYsMHhFMywweDMw
LDB4QTIsMHgzMCwweDk3LDB4MUYsMHhBQiwweDJFLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAs
MHg1NywweDdCLDB4RUIsMHhBQSwweDQ0LDB4NDEsMHhFMywweDM4LDB4NTUsMHhERCwweEJELDB4
OEYsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEZFLDB4QkMsMHhBOCwweDJBLDB4MDMsMHgz
OSwweEMyLDB4MzAsMHhBRiwweEFGLDB4QjYsMHhGQSwKKyAgICAweEUyLDB4MzgsMHhDMiwweDMw
LDB4QTIsMHgyQSwweEJGLDB4RDUsMHhFMiwweDM4LDB4QTIsMHgzMCwweEZFLDB4MkMsMHgyRSww
eEFBLAorICAgIDB4MDQsMHg0MSwweEUzLDB4MzAsMHhGOSwweDhELDB4QUYsMHhBOSwweDIzLDB4
NDEsMHhFMywweDM4LDB4MUQsMHhBRiwweEJBLDB4QTMsCisgICAgMHg0NCwweDQxLDB4MDMsMHgz
OSwweDdELDB4NUQsMHg4QiwweDJBLDB4MDMsMHg0MSwweEUzLDB4MzgsMHhFNywweEJFLDB4QTQs
MHgyNCwKKyAgICAweDQ0LDB4NDksMHgwMywweDM5LDB4QkQsMHhCQiwweDdCLDB4MDIsMHg0NCww
eDQ5LDB4MDMsMHgzOSwweEY3LDB4RkYsMHhGRiwweDBGLAorICAgIDB4NDMsMHg0MSwweEUzLDB4
MzgsMHhGNywweEVGLDB4RkUsMHhBOCwweDIzLDB4NDEsMHgwMywweDM5LDB4OUQsMHgxQiwweDAz
LDB4MDIsCisgICAgMHg4NSwweDUxLDB4MDMsMHgzOSwweDJCLDB4MkYsMHhGRCwweEY3LDB4ODUs
MHg0OSwweDAzLDB4NDEsMHhEQywweEZBLDB4RkIsMHhGRiwKKyAgICAweDQ0LDB4NDEsMHhFMiww
eDM4LDB4RTIsMHhFQSwweDdBLDB4RkEsMHgyMywweDQxLDB4RTMsMHgzOCwweDU2LDB4OUYsMHgz
RCwweEFFLAorICAgIDB4NjQsMHg0OSwweDAzLDB4MzksMHhGRCwweEZGLDB4QkEsMHg4QSwweDQ0
LDB4NDEsMHgwMywweDM5LDB4RkUsMHhBQSwweDlFLDB4MkEsCisgICAgMHg0NCwweDQxLDB4RTIs
MHgzOCwweEZGLDB4RDcsMHhGRSwweEVDLDB4MjMsMHg0MSwweDAzLDB4MzksMHg3NywweDJCLDB4
MDEsMHhBRCwKKyAgICAweDQ0LDB4NDksMHgwMywweDQxLDB4QUIsMHhBQSwweEZFLDB4RTgsMHg4
NSwweDUxLDB4NDQsMHg0OSwweDJCLDB4QkQsMHg2NSwweEQ1LAorICAgIDB4QTUsMHg1MSwweDY0
LDB4NTEsMHhGOCwweEZFLDB4QkQsMHgzNSwweEM2LDB4NTksMHg4NCwweDUxLDB4QjUsMHgxRCww
eDFBLDB4MkIsCisgICAgMHg2NywweDcyLDB4QTUsMHg1OSwweEFCLDB4MkIsMHgyQiwweEFELDB4
NjcsMHg3MiwweDA2LDB4NjIsMHgwQSwweDIyLDB4QTgsMHhERSwKKyAgICAweEE4LDB4N0EsMHgw
NiwweDZBLDB4MDIsMHgwQSwweEFGLDB4NzUsMHhBOCwweDdBLDB4MjYsMHg2QSwweDAwLDB4MDIs
MHhBQiwweEI1LAorICAgIDB4ODgsMHg3QSwweDQ3LDB4NzIsMHg1RSwweDVCLDB4QjAsMHhBRSww
eDRELDB4QUMsMHhBOCwweDdBLDB4MkQsMHgyRCwweDI1LDB4MjUsCisgICAgMHg3MiwweENELDB4
Q0YsMHhCQywweEE1LDB4MkQsMHgyOSwweDA5LDB4QjMsMHhENSwweDcyLDB4Q0QsMHhBRCwweDhC
LDB4Q0IsMHg3NSwKKyAgICAweDczLDB4Q0QsMHg4RiwweEFDLDB4RTAsMHg3MCwweDc4LDB4N0Ms
MHg3MywweENELDB4NEYsMHhBQywweEJELDB4QkQsMHgyRCwweDJCLAorICAgIDB4OTQsMHhDRCww
eDUzLDB4QzUsMHgwOSwweDdELDB4N0EsMHhGQiwweDczLDB4QzUsMHhGMSwweEJDLDB4RTAsMHhG
RSwweERGLDB4NUYsCisgICAgMHg1MywweEM1LDB4RDEsMHhCNCwweDhBLDB4MEYsMHhBNywweEZG
LDB4MzIsMHhDNSwweDkwLDB4QUMsMHhGOCwweEVBLDB4RjgsMHg3RSwKKyAgICAweDkwLDB4QUMs
MHhFRSwweDlCLDB4MDAsMHgwMCwweEEwLDB4N0EsMHg5MCwweEFDLDB4Q0QsMHg5MywweDA4LDB4
QTgsMHhGRiwweDc1LAorICAgIDB4QjAsMHhBQywweENELDB4OTMsMHhBMCwweEVFLDB4RjUsMHg1
NSwweDZGLDB4QUMsMHhFRSwweDlCLDB4QTAsMHhGQiwweEJGLDB4NzcsCisgICAgMHgwRSwweEE0
LDB4MkUsMHg5QywweEI1LDB4RkUsMHhCRiwweDhBLDB4MkUsMHhBNCwweENDLDB4OTMsMHgwMCww
eEVBLDB4RkEsMHg2MiwKKyAgICAweDJGLDB4QTQsMHhDRCwweDkzLDB4QTAsMHg3NywweDdGLDB4
QjcsMHgwRSwweDlDLDB4OEMsMHg4QiwweEJFLDB4RkYsMHhERiwweDIwLAorICAgIDB4NkYsMHhB
QywweEFELDB4OTMsMHgyRiwweEI3LDB4RjUsMHg1NSwweDZGLDB4QUMsMHhFRCwweDlCLDB4MkEs
MHgwQiwweDJCLDB4OTUsCisgICAgMHhCMCwweEI0LDB4MkUsMHhBNCwweDIyLDB4QTIsMHhGRiww
eDc3LDB4MTEsMHhCRCwweDRGLDB4QTQsMHgwQSwweDJGLDB4OUYsMHhENSwKKyAgICAweDMyLDB4
QzUsMHhCMCwweEFDLDB4ODAsMHgwMiwweDJCLDB4QjUsMHgzMiwweEM1LDB4MTEsMHhCRCwweDc3
LDB4MkEsMHg4MCwweDIzLAorICAgIDB4NDMsMHg1MSwweDIzLDB4NTEsMHhGRCwweEQ4LDB4MDAs
MHhFMCwweDQzLDB4NTEsMHgyMywweDUxLDB4NEEsMHhDMiwweDhELDB4MTMsCisgICAgMHg0Myww
eDUxLDB4RTIsMHg0OCwweEFBLDB4RkEsMHhGOCwweEJDLDB4NjMsMHg1OSwweDAzLDB4NDksMHhB
RiwweDI5LDB4MzUsMHhCRiwKKyAgICAweDY0LDB4NTksMHgyMywweDUxLDB4N0UsMHgwNywweEU1
LDB4NkQsMHg0MywweDUxLDB4MDIsMHg0OSwweDgzLDB4MDgsMHgwMiwweDVBLAorICAgIDB4MjMs
MHg1MSwweEUyLDB4NDAsMHg3QywweEVFLDB4NkUsMHhBRiwweDIzLDB4NDksMHhFMiwweDQ4LDB4
QUIsMHgzRiwweEFFLDB4MDAsCisgICAgMHg0NCwweDUxLDB4MDIsMHg0OSwweEJFLDB4OUQsMHhB
MywweEEyLDB4NDMsMHg1MSwweDAzLDB4NDksMHhGMiwweEU4LDB4QkUsMHgyRiwKKyAgICAweDQ0
LDB4NTEsMHgwMiwweDQ5LDB4OTksMHhGQywweEEyLDB4MjgsMHg0MywweDUxLDB4MDIsMHg1MSww
eEFBLDB4MEEsMHhDOCwweEVFLAorICAgIDB4NjMsMHg1MSwweDAzLDB4NTEsMHg2RiwweEJFLDB4
QUUsMHgyQSwweDg1LDB4NjEsMHgyMywweDUxLDB4RTcsMHhDRSwweEY3LDB4NTcsCisgICAgMHg2
NCwweDU5LDB4MjMsMHg1MSwweDcwLDB4NTgsMHhERiwweERELDB4NjQsMHg1OSwweDIzLDB4NTEs
MHg4RCwweEI3LDB4REEsMHg3QSwKKyAgICAweDY0LDB4NTksMHgwMywweDUxLDB4MkUsMHhCQiww
eEZELDB4QUYsMHg0MywweDU5LDB4MDMsMHg1MSwweDMyLDB4QkEsMHgyOCwweDFBLAorICAgIDB4
NjQsMHg1OSwweDAzLDB4NTEsMHgyRiwweEE3LDB4QUYsMHhBQSwweDRBLDB4OTMsMHg2NCwweDU5
LDB4M0QsMHgyRCwweDJELDB4MkYsCisgICAgMHhBQiwweEEzLDB4NDksMHg5QiwweEI1LDB4QTUs
MHhGQiwweDBGLDB4QUIsMHhBMywweDZBLDB4OUIsMHgwMiwweDAyLDB4MkIsMHhEQSwKKyAgICAw
eENDLDB4QUIsMHg2QiwweDlCLDB4RTIsMHhBMiwweEVBLDB4RUEsMHg4QiwweDlCLDB4MkEsMHg5
MywweEEyLDB4RUMsMHhGQSwweDdFLAorICAgIDB4NEIsMHg5QiwweDA5LDB4OTMsMHgyMCwweEMw
LDB4RkUsMHg3RiwweDZCLDB4OUIsMHhFOSwweDhBLDB4OEEsMHhFRSwweDdGLDB4NzcsCisgICAg
MHgyQSwweDkzLDB4ODcsMHg3QSwweDIwLDB4QkEsMHhGRSwweDU3LDB4MDksMHg4QiwweDg3LDB4
N0EsMHgwMCwweDgwLDB4RUEsMHg1RCwKKyAgICAweDJBLDB4OTMsMHg4NywweDdBLDB4OEEsMHhG
QSwweDdGLDB4NTUsMHhBOCwweDgyLDB4NjYsMHg3MiwweDAwLDB4QkYsMHg3RSwweDdELAorICAg
IDB4QTcsMHg3QSwweDQ2LDB4NzIsMHhGMCwweEZBLDB4RjcsMHhGRiwweDg3LDB4N0EsMHg0Niww
eDcyLDB4RTAsMHg3QiwweDU2LDB4RDcsCisgICAgMHg2NiwweDcyLDB4MjYsMHg2QSwweEU2LDB4
QUQsMHhDOCwweDNBLDB4ODcsMHg3QSwweDI2LDB4NkEsMHg1NywweEY1LDB4RjUsMHhEQSwKKyAg
ICAweDY2LDB4NzIsMHgyNSwweDZBLDB4N0YsMHhEQSwweEFGLDB4QkEsMHg2NiwweDcyLDB4MjYs
MHg3MiwweEJCLDB4RkIsMHhBQSwweDBFLAorICAgIDB4QzgsMHg4MiwweDQ2LDB4NzIsMHhCNSww
eEZGLDB4MkQsMHgyQSwweEU5LDB4ODIsMHg4OCwweDdBLDB4RUEsMHhGQiwweDcyLDB4RUEsCisg
ICAgMHhBNywweDdBLDB4NDYsMHg3MiwweEE4LDB4OEMsMHhFOCwweDdFLDB4ODcsMHg3QSwweEU1
LDB4NjksMHhBMCwweEVBLDB4NzIsMHg3RSwKKyAgICAweDI2LDB4NkEsMHhDNCwweDYxLDB4MjAs
MHhFMCwweDVFLDB4N0IsMHgwNSwweDZBLDB4QTQsMHg2MSwweDdDLDB4RTcsMHhFRSwweDJCLAor
ICAgIDB4MDUsMHg2QSwweEE0LDB4NjEsMHg3RiwweEY1LDB4RkUsMHhBMiwweDA2LDB4NkEsMHhB
NCwweDYxLDB4REYsMHhGQiwweEEzLDB4QUEsCisgICAgMHhFNSwweDY5LDB4QTQsMHg1OSwweDJC
LDB4QUUsMHhBRCwweDgyLDB4MDYsMHg2QSwweEE1LDB4NTksMHg1QSwweDdCLDB4N0EsMHhFMiwK
KyAgICAweEE1LDB4NTksMHg4MSwweDMwLDB4N0UsMHhGQSwweEZBLDB4RTgsMHhFMywweDM4LDB4
ODEsMHgyOCwweEY1LDB4REEsMHg3QywweEYwLAorICAgIDB4RTMsMHgzOCwweDYxLDB4MjgsMHgy
QiwweDJCLDB4RkYsMHg1RiwweDA0LDB4MzksMHhBMiwweDMwLDB4MDAsMHg4MiwweEJELDB4RjUs
CisgICAgMHgyNCwweDQxLDB4QTIsMHgzMCwweDhBLDB4MEUsMHhCRiwweDI3LDB4MjQsMHg0MSww
eEMyLDB4MzAsMHg3RSwweDdBLDB4QTAsMHg4MCwKKyAgICAweEUzLDB4MzgsMHhBMiwweDMwLDB4
MDIsMHhBOCwweEZDLDB4NTgsMHhFMiwweDM4LDB4QTIsMHgzMCwweEEwLDB4M0IsMHhCRiwweDlG
LAorICAgIDB4MjQsMHg0MSwweEUyLDB4MzgsMHgyNSwweEZCLDB4MkIsMHhCRiwweDY0LDB4NDks
MHgwMywweDQxLDB4RjcsMHhCRiwweEJGLDB4QUQsCisgICAgMHg2NCwweDQ5LDB4MjQsMHg0MSww
eEZCLDB4RTIsMHg4OCwweDAwLDB4NjUsMHg0OSwweDI0LDB4NDEsMHhEQiwweDdGLDB4NzcsMHg3
RiwKKyAgICAweDQ0LDB4NDEsMHhFMiwweDM4LDB4OEYsMHhGNywweEZBLDB4QTAsMHg0NCwweDQ5
LDB4MDMsMHgzOSwweEI3LDB4RkYsMHhBQSwweEVBLAorICAgIDB4MjMsMHg0MSwweEUzLDB4Mzgs
MHg3MCwweEY4LDB4REEsMHhCOCwweDI0LDB4NDEsMHhFMywweDM4LDB4NjksMHg1RiwweEJFLDB4
MEEsCisgICAgMHgyNCwweDM5LDB4QTIsMHgzMCwweDdCLDB4RkUsMHhFQSwweEYwLDB4QzMsMHgz
MCwweEEyLDB4MjgsMHgyNSwweDNGLDB4MkMsMHgwOCwKKyAgICAweDA0LDB4MzksMHhBMiwweDMw
LDB4QkYsMHgzRiwweDNFLDB4QjcsMHg0NCwweDQxLDB4MDQsMHgzOSwweEFELDB4RUYsMHhFMSww
eDU1LAorICAgIDB4MjQsMHg0MSwweEMzLDB4MzAsMHg4MCwweEE4LDB4RTgsMHhERSwweEUzLDB4
MzgsMHhDMywweDMwLDB4REMsMHhDOCwweEVBLDB4MTcsCisgICAgMHhDMywweDM4LDB4RTMsMHgz
MCwweEJGLDB4REYsMHg3RiwweDU1LDB4MDMsMHgzOSwweEMzLDB4MzAsMHg3NywweDhBLDB4RTIs
MHhENiwKKyAgICAweDAzLDB4MzksMHhDMywweDMwLDB4QUQsMHhBRiwweDNELDB4N0IsMHhFMyww
eDMwLDB4QzIsMHgyOCwweEFDLDB4NkMsMHhGRSwweDVDLAorICAgIDB4RTIsMHgzMCwweEEyLDB4
MjgsMHg5RCwweEY1LDB4REYsMHg3MywweDAzLDB4MzksMHhBMiwweDI4LDB4QkYsMHhCRCwweEFG
LDB4MjksCisgICAgMHg0NCwweDQxLDB4RTMsMHgzOCwweEZGLDB4QUIsMHgwRCwweDhGLDB4NDQs
MHg0MSwweDAzLDB4MzksMHhBRCwweEVCLDB4RkIsMHg3QSwKKyAgICAweDI0LDB4MzksMHhFMyww
eDM4LDB4RUYsMHg4QiwweEZBLDB4RkYsMHhFMiwweDMwLDB4QzIsMHgzMCwweDZFLDB4NTcsMHg1
NywweDU3LAorICAgIDB4RTMsMHgzOCwweEMyLDB4MzAsMHg1NSwweDVELDB4QTIsMHhBMiwweDAz
LDB4MzksMHhDMywweDMwLDB4RkYsMHgyRiwweDBGLDB4OEYsCisgICAgMHg0NSwweDQxLDB4RTMs
MHgzOCwweEE1LDB4MkIsMHgyRSwweEFCLDB4NjUsMHg0OSwweDI0LDB4NDEsMHg1RCwweDU1LDB4
QUUsMHhFQiwKKyAgICAweDY0LDB4NDksMHgwMywweDM5LDB4RkIsMHg3RSwweDlGLDB4QTIsMHg0
NCwweDQ5LDB4RTMsMHgzOCwweEY1LDB4RjYsMHhCOCwweEEyLAorICAgIDB4NjQsMHg0OSwweDI0
LDB4NDEsMHhBRiwweEJGLDB4RkMsMHhBQSwweDY1LDB4NDksMHgyMywweDQxLDB4QUYsMHhGRCww
eDlGLDB4ODIsCisgICAgMHg2NCwweDQ5LDB4MDMsMHgzOSwweEY4LDB4NzgsMHhGQSwweEFBLDB4
NDQsMHg0MSwweDAzLDB4NDEsMHhGQSwweEEyLDB4OTgsMHhGRSwKKyAgICAweDQ0LDB4NDEsMHhD
MiwweDM4LDB4MkEsMHgyMiwweEU4LDB4NUUsMHg0NCwweDQ5LDB4RTMsMHgzOCwweEE4LDB4QTgs
MHhFRiwweERELAorICAgIDB4MjMsMHg0MSwweDAzLDB4MzksMHhBMiwweDYwLDB4MkEsMHgwQiww
eDIzLDB4NDEsMHhFMiwweDM4LDB4MkUsMHgyRSwweDI4LDB4REMsCisgICAgMHg2NCwweDQ5LDB4
MDMsMHgzOSwweDhCLDB4QkYsMHhGNywweEQ1LDB4NDQsMHg0MSwweEUyLDB4MzgsMHg4OCwweEJB
LDB4RUYsMHg3NSwKKyAgICAweDIzLDB4NDEsMHhFMywweDMwLDB4MDgsMHg4OCwweDgzLDB4MDEs
MHg0MywweDQxLDB4MDMsMHgzOSwweEI1LDB4MzUsMHhCRCwweEQ1LAorICAgIDB4NjQsMHg0OSww
eDI0LDB4NDEsMHg4MiwweDgyLDB4OUIsMHhGRCwweDY0LDB4NDksMHgyMywweDQxLDB4QjIsMHhB
MiwweEI4LDB4REQsCisgICAgMHg4NSwweDUxLDB4MjMsMHg0MSwweDI3LDB4QkEsMHhGRSwweEVF
LDB4QzYsMHg1OSwweDY0LDB4NTEsMHg4MiwweEFFLDB4RkQsMHhGRCwKKyAgICAweDA2LDB4NjIs
MHg4NCwweDUxLDB4MkQsMHhCNywweEY3LDB4RkYsMHg0NywweDZBLDB4QzUsMHg2MSwweEFCLDB4
MEIsMHhBOSwweEFCLAorICAgIDB4NDcsMHg3MiwweEM1LDB4NTksMHhCRSwweDVBLDB4NTgsMHhF
OCwweDQ3LDB4NzIsMHhDNCwweDU5LDB4MEEsMHgzRCwweDJGLDB4QUYsCisgICAgMHg4OCwweDcy
LDB4MjYsMHg2QSwweEU4LDB4RjUsMHhCRCwweEI1LDB4MEQsMHhBNCwweDg3LDB4NzIsMHgzNSww
eDI1LDB4MzUsMHhCNSwKKyAgICAweDkyLDB4RDUsMHg4RiwweEI0LDB4OEIsMHgwQiwweDI5LDB4
MjksMHg5MywweEQ1LDB4MzEsMHhDNSwweEFBLDB4QTAsMHhFQSwweDY4LAorICAgIDB4NTIsMHhD
RCwweEIwLDB4QjQsMHg1QywweDU4LDB4NUUsMHg1NywweDczLDB4Q0QsMHhBRiwweEI0LDB4QUQs
MHgwQiwweDJCLDB4MEIsCisgICAgMHg5NCwweENELDB4NzMsMHhDNSwweDQ3LDB4ODgsMHhGQSww
eDVFLDB4MzIsMHhDNSwweDkwLDB4QUMsMHhFOCwweEUwLDB4RTAsMHg3OCwKKyAgICAweEQxLDB4
QjQsMHgyRSwweEE0LDB4MDAsMHg4OCwweEZBLDB4RjcsMHhCMCwweEI0LDB4MEUsMHg5QywweEM4
LDB4RUEsMHg3RSwweDVGLAorICAgIDB4NEYsMHhBNCwweEFELDB4OTMsMHhFOCwweEZFLDB4REYs
MHg3NywweENFLDB4OUIsMHg2QywweDhCLDB4MDgsMHhGQSwweDdFLDB4RkIsCisgICAgMHhDRCww
eDkzLDB4NkMsMHg4QiwweDA4LDB4MkIsMHhCNywweEE3LDB4MEUsMHg5QywweEFELDB4OTMsMHhB
MiwweEVBLDB4RkYsMHhGRCwKKyAgICAweDBFLDB4OUMsMHg4RCwweDkzLDB4MjAsMHhBQSwweEZG
LDB4N0YsMHgwRSwweEE0LDB4QUQsMHg5MywweDhBLDB4OEIsMHhBRCwweEY5LAorICAgIDB4MkUs
MHhBNCwweENELDB4OTMsMHhGRCwweEJGLDB4MEYsMHhFOSwweDJFLDB4OUMsMHhFRSwweDlCLDB4
OEIsMHg2OCwweDU4LDB4NUUsCisgICAgMHhDRCwweDkzLDB4NkMsMHg4QiwweEJDLDB4QjQsMHg1
RSwweDVFLDB4NEYsMHhBNCwweEFDLDB4OTMsMHhBRiwweDJCLDB4MkQsMHhBRCwKKyAgICAweDZG
LDB4QUMsMHgwRSwweEE0LDB4M0EsMHhBMiwweDBCLDB4QUIsMHhBRiwweEFDLDB4NEYsMHhBNCww
eEQ3LDB4REQsMHhCRiwweEFELAorICAgIDB4RjEsMHhCQywweDRGLDB4QTQsMHhCNywweEFCLDB4
MDIsMHgwMiwweDExLDB4QkQsMHg2RiwweEFDLDB4MkIsMHhENiwweEU4LDB4MDAsCisgICAgMHg2
NCwweDU5LDB4MDIsMHg0OSwweEYyLDB4QkUsMHg3OCwweEVCLDB4NjQsMHg1OSwweDAzLDB4NDks
MHhBRSwweDNGLDB4QjksMHhCRCwKKyAgICAweDY1LDB4NTksMHgwMywweDQ5LDB4RjQsMHg3Qiww
eEVGLDB4RkYsMHg0NCwweDUxLDB4RTMsMHg0OCwweEFGLDB4OEIsMHhFRiwweERCLAorICAgIDB4
NDMsMHg1MSwweEUxLDB4NDgsMHgwMiwweDhBLDB4QUEsMHg3RSwweDIzLDB4NDksMHhFMiwweDQw
LDB4RUMsMHg1RSwweEJGLDB4RkYsCisgICAgMHg0MywweDUxLDB4RTIsMHg0MCwweEZCLDB4Qjks
MHhGNywweDJGLDB4NDMsMHg1MSwweDAyLDB4NDksMHhGQiwweDhCLDB4MEYsMHhCRSwKKyAgICAw
eDQzLDB4NTEsMHgyMywweDQ5LDB4QzAsMHg0NCwweEM2LDB4RTAsMHg2NCwweDUxLDB4MjMsMHg1
MSwweEFELDB4NUQsMHhERiwweDU3LAorICAgIDB4NDMsMHg1MSwweDAzLDB4NTEsMHgyRSwweEE4
LDB4OEEsMHhFQiwweDQ0LDB4NTksMHgyMiwweDQ5LDB4QjcsMHhBNywweEE3LDB4Q0YsCisgICAg
MHg2NCwweDU5LDB4MjMsMHg1MSwweEJBLDB4QUIsMHg4QiwweEY5LDB4NjQsMHg1OSwweDAzLDB4
NTEsMHg3RSwweEFBLDB4QTAsMHhBRSwKKyAgICAweDQzLDB4NTksMHgyMywweDUxLDB4M0IsMHhG
QiwweDc1LDB4QUUsMHg2NCwweDU5LDB4MjMsMHg1MSwweEYyLDB4NUYsMHhGRiwweEZBLAorICAg
IDB4NDMsMHg1OSwweDIzLDB4NTEsMHgyQiwweDFCLDB4MUUsMHg4QiwweDQ0LDB4NTksMHgwMyww
eDUxLDB4RUEsMHhGMCwweDVBLDB4NUIsCisgICAgMHg4NCwweDYxLDB4MDIsMHg1MSwweEZGLDB4
QkQsMHgyRiwweEFELDB4NEEsMHg5QiwweEM1LDB4NjEsMHgyRCwweDBELDB4MjksMHgwOSwKKyAg
ICAweEFCLDB4QTMsMHg2QSwweDlCLDB4MEQsMHgyRCwweDJELDB4QTUsMHhBQiwweEEzLDB4NkEs
MHg5QiwweEIwLDB4RkMsMHhGQywweDc3LAorICAgIDB4OEIsMHg5QiwweDA5LDB4OEIsMHhBMCww
eDYwLDB4N0UsMHg1RiwweDRBLDB4OUIsMHg4NywweDgyLDB4QTAsMHhBQSwweDdCLDB4N0YsCisg
ICAgMHgyOSwweDkzLDB4ODcsMHg3QSwweEEwLDB4N0IsMHhERCwweDU1LDB4RTksMHg4QSwweDQ2
LDB4NzIsMHhFOCwweEZBLDB4RUYsMHhGRiwKKyAgICAweEE4LDB4ODIsMHg0NiwweDcyLDB4QjAs
MHhBQSwweEZGLDB4RjcsMHhBOCwweDdBLDB4NDYsMHg3MiwweEUyLDB4Q0EsMHhGQSwweDdELAor
ICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhDQSwweEVBLDB4QjgsMHg5NywweDg3LDB4N0EsMHg0
NiwweDcyLDB4QTMsMHg4OCwweEUyLDB4N0IsCisgICAgMHg4NywweDdBLDB4MjUsMHg3MiwweEMw
LDB4RUEsMHhFQSwweDg5LDB4NjYsMHg3MiwweDI3LDB4NzIsMHhBQSwweEJFLDB4QkIsMHhFRSwK
KyAgICAweDY2LDB4NzIsMHgwNSwweDZBLDB4QkMsMHhGQSwweEZFLDB4QUEsMHg2NiwweDcyLDB4
MDUsMHg3MiwweEEwLDB4RTYsMHgyRiwweEFFLAorICAgIDB4NjYsMHg3MiwweDI2LDB4NzIsMHg4
RiwweDIyLDB4MDAsMHgyOCwweEE4LDB4N0EsMHg0NiwweDcyLDB4RDUsMHhENSwweDM1LDB4MkUs
CisgICAgMHhDOCwweDgyLDB4ODcsMHg3QSwweDM1LDB4QTcsMHhFQSwweEE4LDB4QzgsMHg4Miww
eDI2LDB4NzIsMHhBMCwweEFBLDB4RkEsMHg3RiwKKyAgICAweDg3LDB4N0EsMHgwNSwweDZBLDB4
QUMsMHhGRiwweDdGLDB4NzUsMHgyNiwweDcyLDB4RTUsMHg2MSwweDc4LDB4QTgsMHhGMiwweEZB
LAorICAgIDB4MjUsMHg2QSwweEU1LDB4NjksMHhERiwweDNGLDB4QkQsMHg2MiwweDA1LDB4NkEs
MHhFNSwweDYxLDB4OEUsMHg4OCwweDkwLDB4QjAsCisgICAgMHgyNiwweDZBLDB4RTUsMHg2OSww
eERELDB4RjcsMHhGMywweEFFLDB4MjcsMHg3MiwweEM0LDB4NjEsMHhGNywweEZGLDB4QkYsMHgy
RSwKKyAgICAweDI2LDB4NzIsMHhDNSwweDYxLDB4OUEsMHhERSwweEFBLDB4MDIsMHgyNiwweDcy
LDB4QzUsMHg1OSwweDdFLDB4N0EsMHhGRSwweEVBLAorICAgIDB4QzUsMHg2MSwweDI0LDB4NDks
MHg3QywweDdBLDB4RjgsMHhFOCwweDQ1LDB4NDksMHhBMiwweDMwLDB4NUUsMHg1RSwweEY4LDB4
RjgsCisgICAgMHhDMywweDMwLDB4NjEsMHgyOCwweERGLDB4OUYsMHhCQywweDIwLDB4QTIsMHgz
MCwweDgyLDB4MjgsMHgwMiwweEZFLDB4ODgsMHg4OCwKKyAgICAweEUzLDB4MzgsMHg4MSwweDI4
LDB4MkIsMHgyRiwweEJELDB4QjksMHgyNCwweDQxLDB4QzIsMHgzMCwweEUyLDB4QUYsMHgyOSww
eEJELAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGOCwweDc4LDB4N0MsMHg3QSwweEMyLDB4
MzAsMHg4MiwweDMwLDB4QkMsMHgyRSwweDNFLDB4RkMsCisgICAgMHgyMywweDQxLDB4QTIsMHgz
MCwweDJCLDB4MkQsMHg4RCwweDNGLDB4NDQsMHg0MSwweDAzLDB4NDEsMHgzRiwweEIyLDB4QTIs
MHg4MCwKKyAgICAweDY1LDB4NDksMHgyNCwweDQxLDB4QzIsMHg4QSwweENCLDB4NUQsMHg2NCww
eDQ5LDB4MjQsMHg0MSwweDVGLDB4N0IsMHhFRiwweDhELAorICAgIDB4NjQsMHg0OSwweDI0LDB4
NDEsMHhEQSwweDU2LDB4NUUsMHg3RSwweDI0LDB4NDEsMHgwMywweDQxLDB4NTAsMHg3QSwweDc4
LDB4MEEsCisgICAgMHgyNCwweDQxLDB4RTMsMHgzOCwweEFFLDB4QUYsMHhCRSwweEZDLDB4NjUs
MHg0OSwweDAzLDB4MzksMHhGRiwweEZGLDB4Q0YsMHhBOSwKKyAgICAweDI0LDB4NDEsMHhBMiww
eDI4LDB4RjgsMHhFQSwweEY4LDB4N0EsMHhDMiwweDMwLDB4ODIsMHgyOCwweEEyLDB4OEEsMHhB
RiwweEVELAorICAgIDB4QzIsMHgzMCwweDgyLDB4MjgsMHgzQSwweDVFLDB4NTUsMHg1RiwweDA0
LDB4MzksMHg4MiwweDI4LDB4ODIsMHhGQSwweEZELDB4NzUsCisgICAgMHhDMywweDMwLDB4QTIs
MHgzMCwweDAwLDB4MDIsMHhFMywweDg1LDB4MDMsMHgzOSwweEMzLDB4MzAsMHgxNSwweEZELDB4
QkQsMHgxRCwKKyAgICAweDA0LDB4MzksMHhDMywweDMwLDB4MjAsMHhBMiwweDdFLDB4NTcsMHhF
MywweDM4LDB4QTIsMHgyOCwweEU4LDB4RkUsMHhGRiwweEY3LAorICAgIDB4QzIsMHgzMCwweEEy
LDB4MjgsMHhBMCwweDFFLDB4MzYsMHhCQSwweEUzLDB4MzAsMHhBMiwweDI4LDB4RUMsMHhGRiww
eEJCLDB4QkEsCisgICAgMHgwMywweDM5LDB4QTIsMHgyOCwweERGLDB4RjcsMHhGNSwweDNCLDB4
MDMsMHgzOSwweEMzLDB4MzAsMHgyNSwweDI1LDB4QUYsMHhCRiwKKyAgICAweDIzLDB4MzksMHhD
MiwweDMwLDB4MkIsMHhBQSwweEVBLDB4N0YsMHgyNCwweDM5LDB4QzIsMHgzMCwweDg4LDB4RTIs
MHhGRiwweDc1LAorICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHhBMiwweEVBLDB4RUEsMHhGNyww
eEUzLDB4MzgsMHhDMiwweDMwLDB4RjgsMHhGMCwweDJBLDB4MDcsCisgICAgMHgwNCwweDM5LDB4
QzMsMHgzMCwweERBLDB4RkUsMHhGNywweDVGLDB4MDMsMHgzOSwweEMzLDB4MzgsMHhCRiwweEZG
LDB4M0YsMHgzNSwKKyAgICAweDY0LDB4NDksMHhFMywweDM4LDB4QkYsMHhGNSwweEJELDB4M0Ys
MHg4NSwweDUxLDB4MjQsMHg0MSwweEZGLDB4QjUsMHgyRiwweDJBLAorICAgIDB4ODUsMHg0OSww
eDIzLDB4NDEsMHhGRSwweEY4LDB4RUMsMHg2MCwweDQ0LDB4NDksMHgwMywweDQxLDB4QUEsMHhF
RSwweDc2LDB4N0IsCisgICAgMHg2NSwweDQ5LDB4MDMsMHgzOSwweDBBLDB4MkIsMHgyQiwweEI1
LDB4ODUsMHg1MSwweDIzLDB4NDEsMHhFOCwweDVGLDB4REUsMHg3RiwKKyAgICAweDQ0LDB4NDks
MHgwMywweDM5LDB4QUEsMHg3MCwweEY4LDB4RkYsMHgyMywweDQxLDB4RTMsMHgzOCwweEEwLDB4
QjgsMHhGNiwweDVGLAorICAgIDB4MjMsMHg0MSwweEMyLDB4MzAsMHg3OCwweEZBLDB4N0IsMHhG
QiwweDAzLDB4MzksMHhDMiwweDMwLDB4MkIsMHhBNSwweEZELDB4NUYsCisgICAgMHgyMywweDQx
LDB4QzIsMHgzMCwweDhBLDB4QUIsMHg5RiwweEY1LDB4MDIsMHgzOSwweEMyLDB4MzAsMHg1Qyww
eERGLDB4RkUsMHg3RSwKKyAgICAweDAzLDB4MzEsMHhBMSwweDMwLDB4MjIsMHhCRiwweEJGLDB4
RjksMHgyMywweDM5LDB4QzIsMHgzMCwweEE3LDB4M0UsMHgwMiwweDhGLAorICAgIDB4NDQsMHg0
MSwweDAzLDB4MzksMHhCNywweDM3LDB4MzUsMHg5RCwweDQ0LDB4NDEsMHgwMywweDM5LDB4NUUs
MHg1QywweDU4LDB4RkUsCisgICAgMHg2NCwweDQ5LDB4MDMsMHgzOSwweEFELDB4MkQsMHhBRCww
eEZELDB4NDMsMHg0OSwweDIzLDB4NDEsMHhBNSwweEE2LDB4RTgsMHg3RCwKKyAgICAweDg1LDB4
NTEsMHhFMiwweDM4LDB4MkEsMHgzRiwweEI3LDB4OTUsMHhDNiwweDUxLDB4NjQsMHg1MSwweEZE
LDB4QjIsMHhCQiwweEI5LAorICAgIDB4MDYsMHg2MiwweEE1LDB4NTEsMHhCRCwweEFELDB4MkYs
MHgyRiwweDQ3LDB4NkEsMHhDNSwweDYxLDB4QkYsMHhBNywweDI3LDB4OEYsCisgICAgMHhBOCww
eDdBLDB4MDYsMHg2QSwweDVFLDB4N0UsMHhFQiwweDgzLDB4NDcsMHg2QSwweEU1LDB4NjEsMHgz
QiwweDc2LDB4RDcsMHhGOCwKKyAgICAweDY3LDB4NzIsMHgyNiwweDZBLDB4RkQsMHhGNSwweDFG
LDB4RjcsMHhDQywweDlCLDB4NDcsMHg3MiwweDJELDB4MzUsMHgzNSwweEI1LAorICAgIDB4NzIs
MHhDRCwweDJFLDB4QUMsMHgwQiwweDBCLDB4MEIsMHgyOSwweDkzLDB4RDUsMHhGMSwweEJDLDB4
QzAsMHhFMCwweDYwLDB4NzAsCisgICAgMHhGMSwweEJDLDB4NEYsMHhBQywweERDLDB4QkUsMHhC
RiwweEY3LDB4NTMsMHhDNSwweDkwLDB4QUMsMHgwQiwweEFCLDB4RkYsMHg1RCwKKyAgICAweDUy
LDB4QzUsMHhFRCwweDlCLDB4MjAsMHhCMiwweEZFLDB4N0YsMHhEMCwweEI0LDB4MEUsMHg5Qyww
eEU4LDB4RkEsMHg3RiwweDVELAorICAgIDB4NEYsMHhBNCwweENELDB4OUIsMHg4OCwweEU4LDB4
N0YsMHg1RiwweDBFLDB4QTQsMHg4RCwweDkzLDB4RTgsMHhGQSwweEQ3LDB4REYsCisgICAgMHhB
RCwweDkzLDB4OEMsMHg4QiwweDAwLDB4ODIsMHhBMiwweEQ2LDB4Q0QsMHg5MywweDhDLDB4OEIs
MHhGRiwweDVGLDB4N0UsMHg3OCwKKyAgICAweEFELDB4OTMsMHg2QywweDhCLDB4MzYsMHhBRSww
eEFFLDB4QUUsMHhFRSwweDlCLDB4NkMsMHg4QiwweDgyLDB4OEEsMHhBRiwweEE3LAorICAgIDB4
RUUsMHg5QiwweDhDLDB4OEIsMHhFRiwweEI5LDB4QUIsMHhFMCwweDJGLDB4QTQsMHg4QywweDhC
LDB4QUIsMHgwQSwweEJCLDB4REYsCisgICAgMHgwRSwweDlDLDB4Q0QsMHg5MywweDcyLDB4Njgs
MHg4QSwweDZCLDB4RUQsMHg5QiwweDZDLDB4ODMsMHg4MiwweEE4LDB4RkEsMHg1RSwKKyAgICAw
eENELDB4OTMsMHg0QiwweDgzLDB4RTgsMHhFQSwweDdCLDB4NUYsMHg0RiwweEE0LDB4NEIsMHg4
MywweDJGLDB4MkQsMHgyRCwweEI1LAorICAgIDB4OTAsMHhBQywweDJFLDB4QTQsMHg1NSwweEZB
LDB4RUIsMHg4RiwweEFGLDB4QjQsMHg0RiwweEE0LDB4QTcsMHgzRiwweEJGLDB4QkUsCisgICAg
MHgzMiwweEJELDB4QjAsMHhBQywweEVGLDB4RkYsMHgyOSwweEE1LDB4NTMsMHhDNSwweDExLDB4
QkQsMHhGNSwweDk1LDB4RjUsMHgyRCwKKyAgICAweDQzLDB4NTEsMHgyMywweDUxLDB4NTgsMHg3
RiwweDNGLDB4RDUsMHg2NCwweDU5LDB4MDMsMHg1MSwweEFFLDB4N0YsMHhFRiwweDgzLAorICAg
IDB4NDQsMHg1MSwweDAyLDB4NDksMHhGQywweEJGLDB4RkYsMHhEQSwweDIzLDB4NTEsMHgwMyww
eDQ5LDB4QkEsMHg1MCwweDU4LDB4NzMsCisgICAgMHgwMiwweDQ5LDB4QzIsMHg0MCwweEE4LDB4
QTQsMHgzQSwweDAyLDB4NDMsMHg1MSwweEUyLDB4NDAsMHhERiwweDdCLDB4RkEsMHhDRiwKKyAg
ICAweDQ0LDB4NTEsMHgwMywweDQ5LDB4QjUsMHgyNSwweDM1LDB4RkYsMHg0NCwweDUxLDB4MjMs
MHg0OSwweEJCLDB4RkEsMHg2MiwweDc3LAorICAgIDB4NjQsMHg1MSwweDIzLDB4NTEsMHhEQSww
eEVBLDB4RTIsMHg1OSwweDQ0LDB4NTEsMHgwMiwweDUxLDB4RUEsMHg4MCwweDhBLDB4RkIsCisg
ICAgMHg0MywweDUxLDB4MDMsMHg0OSwweEZCLDB4QUUsMHg4RiwweDA2LDB4NjQsMHg1OSwweDIz
LDB4NTEsMHhFRCwweDg1LDB4QkQsMHgzQSwKKyAgICAweDY0LDB4NTksMHgyMywweDUxLDB4RUYs
MHhBOCwweDkyLDB4QTYsMHg4NCwweDYxLDB4MjMsMHg1MSwweEZGLDB4RjMsMHg2RiwweDY1LAor
ICAgIDB4ODQsMHg1OSwweDIzLDB4NTEsMHhGRiwweEVFLDB4Q0IsMHhBOSwweDY0LDB4NTksMHgy
MywweDUxLDB4RkUsMHhBQiwweEM1LDB4RDUsCisgICAgMHg0NCwweDU5LDB4MDMsMHg1MSwweEVB
LDB4NjIsMHg2QSwweDk0LDB4MjMsMHg1OSwweDAyLDB4NDksMHhGRiwweEVELDB4QUEsMHhBQSwK
KyAgICAweEE0LDB4NjEsMHgwMiwweDUxLDB4QkQsMHgzNSwweDI3LDB4M0QsMHg4QiwweDlCLDB4
MjYsMHg3MiwweDI5LDB4MDksMHgwQiwweDJCLAorICAgIDB4OEEsMHg5QiwweDRBLDB4OTMsMHhD
MCwweDgyLDB4QTAsMHg5MiwweDZBLDB4OUIsMHgwOSwweDhCLDB4MDAsMHg4MiwweEUyLDB4NkEs
CisgICAgMHgyQSwweDkzLDB4ODcsMHg3QSwweDgwLDB4RTgsMHg3QSwweDc2LDB4MDksMHg4Qiww
eDY3LDB4NzIsMHhGOCwweEZGLDB4NzcsMHg3RCwKKyAgICAweEE4LDB4N0EsMHg0NiwweDcyLDB4
RkMsMHhEOCwweEVBLDB4QkYsMHg4NywweDdBLDB4MjYsMHg3MiwweEFFLDB4RUIsMHhERSwweEU0
LAorICAgIDB4NDUsMHg4MiwweDY3LDB4NzIsMHg1RiwweERELDB4RDcsMHg3NSwweDg3LDB4N0Es
MHg0NiwweDcyLDB4QTYsMHg4MiwweEY4LDB4OEQsCisgICAgMHg4NywweDdBLDB4NDYsMHg3Miww
eEJDLDB4OEEsMHhCMCwweDFBLDB4ODcsMHg3QSwweDQ2LDB4NzIsMHg2RiwweDhGLDB4QkUsMHhG
RiwKKyAgICAweDg3LDB4N0EsMHg2NywweDcyLDB4NzUsMHhCNywweDZFLDB4RjIsMHg2NiwweDcy
LDB4MjUsMHg3MiwweEE4LDB4MTAsMHhBQywweDBGLAorICAgIDB4NjcsMHg3QSwweDQ2LDB4NzIs
MHg2NSwweDdGLDB4QTMsMHhCQSwweDY2LDB4NzIsMHgyNiwweDZBLDB4REYsMHhCQSwweDY4LDB4
NkEsCisgICAgMHg2NiwweDcyLDB4MjUsMHg3MiwweEFFLDB4M0UsMHgzMiwweDJBLDB4QzgsMHg4
MiwweDY3LDB4N0EsMHhBNSwweEE3LDB4MkYsMHg2QiwKKyAgICAweEE4LDB4ODIsMHgyNSwweDZB
LDB4ODAsMHhBOCwweEZFLDB4NTUsMHg2NywweDdBLDB4QzQsMHg2OSwweEUwLDB4RTAsMHhGQiww
eEZGLAorICAgIDB4MjUsMHg2QSwweEU1LDB4NjksMHhFRSwweDYyLDB4N0EsMHg1RSwweDA1LDB4
NkEsMHhDNSwweDYxLDB4MzAsMHhCQSwweEJGLDB4RkQsCisgICAgMHgyNiwweDZBLDB4QzQsMHg2
MSwweDJBLDB4RkYsMHhGRiwweDdFLDB4MDYsMHg2QSwweEM1LDB4NjEsMHhCRSwweEVCLDB4QUUs
MHg5RiwKKyAgICAweDI2LDB4NkEsMHhFNSwweDY5LDB4RkYsMHhCQiwweDhCLDB4QUYsMHg0Niww
eDcyLDB4MDYsMHg2QSwweEQ1LDB4RkYsMHhFQSwweEZELAorICAgIDB4NDcsMHg3MiwweDA2LDB4
NkEsMHhGOSwweEE5LDB4QUQsMHhBRiwweDQ3LDB4NzIsMHhFNiwweDY5LDB4NkUsMHg3QSwweEE4
LDB4MjIsCisgICAgMHgyNiwweDZBLDB4NjQsMHg1MSwweDdFLDB4N0EsMHg3OCwweDY4LDB4NDQs
MHg0OSwweEMzLDB4MzgsMHhEOCwweDdCLDB4N0EsMHg3OCwKKyAgICAweEUzLDB4MzgsMHg4Miww
eDMwLDB4QzIsMHhDQSwweDdBLDB4N0UsMHhBMiwweDMwLDB4ODEsMHgyOCwweEMyLDB4NjMsMHhG
QSwweEFCLAorICAgIDB4QzEsMHgzMCwweDgyLDB4MjgsMHhBRCwweEJELDB4RjcsMHhGRiwweDAz
LDB4NDEsMHhBMiwweDMwLDB4QUIsMHgyQSwweDBGLDB4MzksCisgICAgMHgwMywweDM5LDB4RTMs
MHgzOCwweDVGLDB4OTYsMHhENCwweDdFLDB4RTIsMHgzOCwweEEyLDB4MzAsMHg1NiwweDc0LDB4
QUEsMHhFMiwKKyAgICAweDY0LDB4NDksMHhBMiwweDMwLDB4QjUsMHgyOSwweDJCLDB4MkIsMHg0
NCwweDQ5LDB4RTMsMHgzOCwweEVBLDB4RTAsMHhFMCwweDYwLAorICAgIDB4MDMsMHg0MSwweEUz
LDB4MzgsMHgyMCwweDk2LDB4M0UsMHg3NiwweDY1LDB4NDksMHhFMywweDM4LDB4MkEsMHhGRSww
eEVGLDB4RjUsCisgICAgMHg2NCwweDQ5LDB4RTMsMHgzOCwweEVDLDB4RkIsMHhGRiwweEQ3LDB4
MjQsMHg0MSwweEMyLDB4MzAsMHgwOCwweDgwLDB4QkMsMHg1NywKKyAgICAweDIzLDB4NDEsMHhD
MywweDMwLDB4QkUsMHhGNiwweEFGLDB4MkIsMHg0NCwweDQxLDB4QzMsMHgzMCwweDJBLDB4QUIs
MHg4RSwweDVFLAorICAgIDB4MDQsMHgzOSwweEEyLDB4MjgsMHg3OCwweDVDLDB4N0UsMHg1Riww
eEUzLDB4MjgsMHg4MiwweDI4LDB4RjUsMHhCRiwweEZGLDB4RDcsCisgICAgMHhBMiwweDI4LDB4
NjEsMHgyMCwweEUwLDB4RTAsMHhGMCwweEU2LDB4QTIsMHgyOCwweDYxLDB4MjAsMHgwRiwweEJE
LDB4QkQsMHgwQiwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4RDUsMHhCRCwweEJELDB4OEEs
MHhFMywweDMwLDB4QTIsMHgyOCwweDgyLDB4RUEsMHg3QSwweDY4LAorICAgIDB4ODEsMHgzMCww
eEMyLDB4MjgsMHhGRiwweEZBLDB4RUIsMHg3QSwweEMyLDB4MzAsMHhBMiwweDI4LDB4QkYsMHhC
NSwweDI1LDB4MDUsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEEzLDB4RkIsMHhBRiwweDI3
LDB4QzIsMHgzMCwweEEyLDB4MjgsMHhBRSwweENGLDB4ODgsMHgwOCwKKyAgICAweEUzLDB4MzAs
MHhDMywweDMwLDB4MDIsMHhBOSwweDc1LDB4MkQsMHgwNCwweDM5LDB4QzIsMHgzMCwweERGLDB4
OEIsMHhFQiwweERGLAorICAgIDB4QzMsMHgzOCwweEUzLDB4MzAsMHhGRCwweEY1LDB4RkYsMHhB
RCwweDA0LDB4MzksMHhDMiwweDMwLDB4NUYsMHg3RCwweEFELDB4MkIsCisgICAgMHhFMywweDM4
LDB4QzIsMHgzMCwweDU1LDB4NjEsMHg1QiwweEY4LDB4RTMsMHgzOCwweEMyLDB4MzAsMHgyOSww
eDgxLDB4RDcsMHhGMiwKKyAgICAweEUzLDB4MzgsMHhDMiwweDMwLDB4RDYsMHg3RiwweDg5LDB4
MkIsMHgwMywweDM5LDB4QzMsMHgzMCwweDE1LDB4MTUsMHhEQSwweEYyLAorICAgIDB4ODUsMHg1
MSwweEUzLDB4MzgsMHhBRCwweDJGLDB4MkQsMHhCRCwweDg1LDB4NTEsMHg2NSwweDQ5LDB4NTUs
MHg3RiwweEYyLDB4N0IsCisgICAgMHg4NSwweDUxLDB4MjMsMHg0MSwweEUyLDB4RTIsMHhFQSww
eDYyLDB4NDQsMHg0OSwweDAzLDB4MzksMHhGMiwweDQ4LDB4NEEsMHg3QiwKKyAgICAweDIzLDB4
NDEsMHhFMiwweDM4LDB4MkYsMHgyRiwweEU3LDB4RjcsMHg0NCwweDQ5LDB4MjQsMHg0MSwweDcy
LDB4NkEsMHg1MywweDk1LAorICAgIDB4MjMsMHg0MSwweEMyLDB4MzgsMHhGQSwweERGLDB4RUUs
MHhCQSwweDAzLDB4NDEsMHhDMiwweDMwLDB4N0UsMHhFQSwweEFBLDB4QTgsCisgICAgMHgwMyww
eDM5LDB4QzIsMHgzMCwweDBGLDB4QjUsMHhENSwweEJCLDB4MDMsMHgzOSwweEMyLDB4MzAsMHg3
RSwweEQ3LDB4RjYsMHhDQSwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4M0YsMHgzRSwweDI3
LDB4MkUsMHgyMywweDM5LDB4RTIsMHgzMCwweDc3LDB4RkYsMHhBQiwweEJDLAorICAgIDB4MjMs
MHgzOSwweEMyLDB4MzAsMHhGRCwweDdFLDB4NzgsMHhGOCwweDIzLDB4MzksMHhDMiwweDMwLDB4
OEIsMHgwRiwweDJELDB4MkIsCisgICAgMHgyMywweDM5LDB4MDMsMHgzOSwweEQzLDB4MkYsMHhG
RCwweDlCLDB4MjMsMHgzOSwweEUyLDB4MzgsMHhGOCwweEYwLDB4RTgsMHg2QSwKKyAgICAweDIz
LDB4NDEsMHhDMiwweDMwLDB4MDIsMHg4QSwweDBCLDB4ODksMHg0MywweDQxLDB4MDMsMHgzOSww
eDlGLDB4QjUsMHhBNSwweDJCLAorICAgIDB4NDQsMHg0OSwweDAzLDB4MzksMHgzNSwweEJCLDB4
QUEsMHhBMywweEE1LDB4NTksMHg0NCwweDQ5LDB4M0YsMHgzRCwweERELDB4MzcsCisgICAgMHgy
NiwweDYyLDB4ODUsMHg1MSwweEI3LDB4QkYsMHg5NywweDM3LDB4NjcsMHg3MiwweDA2LDB4NjIs
MHhDRCwweEVELDB4QTUsMHhCRSwKKyAgICAweDg4LDB4NzIsMHg0NiwweDZBLDB4QTksMHgyOSww
eEVELDB4RjUsMHg4NywweDcyLDB4RTUsMHg2MSwweEZBLDB4RTgsMHhFOCwweDVBLAorICAgIDB4
NDcsMHg2QSwweEM1LDB4NTksMHhBMCwweEVFLDB4N0UsMHg1RSwweDZCLDB4OTMsMHhFNSwweDYx
LDB4M0YsMHgzRCwweEJELDB4QjUsCisgICAgMHg3MywweENELDB4RUQsMHhBMywweDJCLDB4MDks
MHgyOSwweDA5LDB4OTMsMHhENSwweDZGLDB4QUMsMHhFMCwweDcwLDB4NzgsMHg3OCwKKyAgICAw
eEIwLDB4QjQsMHg0RiwweEFDLDB4QUYsMHgzNywweDdGLDB4N0QsMHg5MCwweEFDLDB4RUQsMHg5
QiwweEEwLDB4QTgsMHhGQSwweEQ3LAorICAgIDB4NEYsMHhBNCwweEVFLDB4OUIsMHhDMiwweDdG
LDB4NTcsMHg3NywweDBFLDB4OUMsMHhBRCwweDkzLDB4QTIsMHhFQSwweEYyLDB4NUUsCisgICAg
MHhFRSwweDlCLDB4QUQsMHg5MywweDdFLDB4NkEsMHg3QSwweDU0LDB4QUQsMHg5MywweDZELDB4
OEIsMHhCMCwweEU4LDB4QTIsMHhBMCwKKyAgICAweEFELDB4OTMsMHg2QywweDhCLDB4RUEsMHhF
QSwweDhCLDB4MEYsMHhDRCwweDkzLDB4OEMsMHg4QiwweDdELDB4QTksMHg3RCwweDVFLAorICAg
IDB4QUQsMHg5MywweDZDLDB4OEIsMHhCNiwweEVGLDB4QUEsMHgyMiwweENELDB4OTMsMHg4Qyww
eDhCLDB4MDUsMHgwRCwweEZGLDB4RkYsCisgICAgMHgwRSwweDlDLDB4OEMsMHg4QiwweDgyLDB4
QkEsMHg1QiwweDdGLDB4QUQsMHg5MywweDBBLDB4N0IsMHgyMCwweDg4LDB4QTgsMHg1RSwKKyAg
ICAweENELDB4OTMsMHgyQiwweDdCLDB4MDAsMHhBQSwweDZGLDB4NzUsMHg4QywweDgzLDB4MEEs
MHg3QiwweEJDLDB4RkUsMHg3RiwweEQ3LAorICAgIDB4NkMsMHg4MywweDBCLDB4N0IsMHhCQyww
eEI3LDB4RkQsMHhCNSwweEFELDB4OTMsMHgwQiwweDdCLDB4MkYsMHhCRiwweEJGLDB4NTUsCisg
ICAgMHg0RiwweEFDLDB4NkMsMHg4QiwweDBBLDB4MkYsMHhGRiwweDU1LDB4NkYsMHhBQywweEFE
LDB4OEIsMHgyMCwweDhBLDB4QUYsMHhCRCwKKyAgICAweDExLDB4QkQsMHgwRSwweDlDLDB4MkIs
MHgyQiwweEJGLDB4QjUsMHgzMiwweEM1LDB4OTAsMHhBQywweDAyLDB4MDAsMHgwRSwweEE1LAor
ICAgIDB4NDMsMHg1MSwweDAyLDB4NDksMHg5OCwweEUwLDB4RUMsMHhCRiwweDY0LDB4NTEsMHgw
MiwweDQ5LDB4OEIsMHhGOSwweEZGLDB4QkYsCisgICAgMHg0MywweDUxLDB4MDIsMHg0OSwweDZC
LDB4RjIsMHg1QSwweDVCLDB4MjMsMHg0OSwweEUxLDB4NDAsMHhGOCwweEJBLDB4QUQsMHg4MiwK
KyAgICAweDIzLDB4NDksMHhFMiwweDQ4LDB4QTMsMHgwMCwweEEyLDB4OUUsMHg0NCwweDUxLDB4
MDMsMHg0OSwweDZGLDB4RDYsMHhBNywweDI1LAorICAgIDB4NDMsMHg1MSwweDAyLDB4NDksMHhG
NSwweDA5LDB4MzYsMHhBQSwweDY0LDB4NTEsMHgyMywweDQ5LDB4RUYsMHhCRSwweDdBLDB4Nzgs
CisgICAgMHg0NCwweDUxLDB4MDMsMHg0OSwweEJCLDB4N0UsMHg1NiwweERBLDB4NDMsMHg1MSww
eDAzLDB4NDksMHhGRiwweEZGLDB4QkUsMHhCNywKKyAgICAweDY0LDB4NTksMHgwMiwweDQ5LDB4
MkYsMHgyNywweEEzLDB4QUEsMHg2NCwweDU5LDB4MjMsMHg1MSwweEEwLDB4RjcsMHhFNSwweDc3
LAorICAgIDB4NjQsMHg1OSwweDAzLDB4NDksMHhCRSwweEFGLDB4QUYsMHg4RiwweDQ0LDB4NTks
MHgwMywweDUxLDB4QUUsMHhFRSwweEY0LDB4QUMsCisgICAgMHg0NCwweDU5LDB4MjMsMHg1MSww
eDAxLDB4RUEsMHgwQiwweDA5LDB4NDQsMHg1OSwweEUyLDB4NDgsMHg2RSwweEU4LDB4RTgsMHhF
OCwKKyAgICAweDQzLDB4NTksMHhFMiwweDQ4LDB4RUUsMHhFMiwweEZCLDB4REYsMHgyMywweDUx
LDB4MDMsMHg1MSwweDIxLDB4REIsMHhGQSwweEZELAorICAgIDB4MjYsMHg3MiwweDIzLDB4NTEs
MHg5NSwweEI1LDB4MzUsMHgzNSwweDRBLDB4OUIsMHg4NywweDgyLDB4MDEsMHgwQiwweDA5LDB4
MDMsCisgICAgMHg2QSwweDlCLDB4MDksMHg5MywweDJBLDB4RkEsMHhGQSwweDdFLDB4NkEsMHg5
QiwweDg3LDB4N0EsMHhBOCwweEVFLDB4N0UsMHg3RSwKKyAgICAweEM4LDB4N0EsMHg2NywweDdB
LDB4RjgsMHhGRSwweEVDLDB4RDYsMHg4NywweDdBLDB4NDYsMHg3MiwweEJFLDB4QkMsMHg3RSww
eDYyLAorICAgIDB4ODcsMHg3QSwweDQ3LDB4NzIsMHhCRiwweEIyLDB4RkEsMHhGRiwweDg3LDB4
N0EsMHgyNiwweDcyLDB4MjgsMHhFQSwweDM1LDB4MEIsCisgICAgMHg4NywweDdBLDB4NDYsMHg3
MiwweDQ4LDB4MkEsMHhGQSwweEZBLDB4ODcsMHg3QSwweDI2LDB4NzIsMHgwQiwweDhBLDB4OEEs
MHhBNywKKyAgICAweDg3LDB4N0EsMHgyNSwweDcyLDB4QjgsMHhCNiwweEI2LDB4RUEsMHg4Nyww
eDdBLDB4NDYsMHg3MiwweEZDLDB4RkYsMHhGRiwweDFFLAorICAgIDB4ODcsMHg3QSwweDQ2LDB4
NzIsMHhDOSwweDYzLDB4NzgsMHg2QiwweDg3LDB4NzIsMHgyNSwweDcyLDB4MkYsMHhFRiwweEZF
LDB4N0YsCisgICAgMHg2NiwweDdBLDB4MjYsMHg2QSwweEIzLDB4RUYsMHhDQiwweDhCLDB4Njcs
MHg3QSwweDQ2LDB4NzIsMHhCNywweENGLDB4QUYsMHgyMiwKKyAgICAweDg3LDB4N0EsMHg0Niww
eDcyLDB4ODksMHhBQSwweDIzLDB4QUQsMHhBNywweDdBLDB4NDYsMHg3MiwweEEzLDB4RUEsMHhG
QiwweEZELAorICAgIDB4NjcsMHg3MiwweDA1LDB4NkEsMHg1RSwweDU4LDB4RkUsMHg3QSwweDI2
LDB4NzIsMHhFNSwweDY5LDB4NzcsMHg1NiwweDU1LDB4ODksCisgICAgMHgwNiwweDZBLDB4QzUs
MHg2MSwweEZFLDB4OEUsMHhGQiwweDdFLDB4MDUsMHg2QSwweEM1LDB4NjEsMHhFQSwweDVDLDB4
NTUsMHg1NSwKKyAgICAweDA1LDB4NkEsMHhDNSwweDYxLDB4RTIsMHhBMiwweEY5LDB4RkYsMHgw
NSwweDZBLDB4QzQsMHg2MSwweEI3LDB4QkYsMHhCRiwweEJGLAorICAgIDB4MDUsMHg2QSwweEU1
LDB4NjEsMHgyNywweDE4LDB4MDgsMHgwRiwweDY2LDB4NzIsMHgwNiwweDZBLDB4NUYsMHhGMyww
eEZELDB4RkQsCisgICAgMHg0NywweDcyLDB4MDYsMHg2QSwweEJGLDB4RkUsMHg2QiwweDJBLDB4
NDcsMHg3MiwweDI2LDB4NkEsMHhFQiwweEFBLDB4MkUsMHhBQSwKKyAgICAweDI2LDB4NkEsMHhB
NCwweDU5LDB4NzAsMHhFMCwweDAwLDB4MDAsMHhFNSwweDYxLDB4RTIsMHgzOCwweDVGLDB4N0Es
MHg3OCwweEYwLAorICAgIDB4RTIsMHgzOCwweDgyLDB4MjgsMHhGQSwweEZDLDB4RkEsMHg3OCww
eEEyLDB4MzAsMHg4MSwweDI4LDB4QzMsMHg4QSwweDBGLDB4M0YsCisgICAgMHhFMiwweDMwLDB4
ODEsMHgyOCwweEJELDB4MkQsMHgwQiwweDJBLDB4MDIsMHgzOSwweEExLDB4MzAsMHgzQSwweDNF
LDB4RkEsMHhEQSwKKyAgICAweDAzLDB4MzksMHhDMiwweDM4LDB4RkEsMHhGRSwweEJGLDB4QTEs
MHgwMywweDM5LDB4QzIsMHgzOCwweDVGLDB4RDQsMHhENiwweEZCLAorICAgIDB4NjQsMHg0OSww
eEMyLDB4MzgsMHhBOSwweDJELDB4MkQsMHg4OSwweDY1LDB4NDksMHhFMiwweDM4LDB4NzAsMHg2
QSwweEYwLDB4N0UsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDVFLDB4RUEsMHhGQSwweDdB
LDB4MDMsMHgzOSwweEMyLDB4MzAsMHgyOSwweEVFLDB4QkIsMHhBNSwKKyAgICAweDI0LDB4NDEs
MHhDMiwweDMwLDB4QUUsMHhDQiwweDU3LDB4NTUsMHhFMywweDM4LDB4QTIsMHgyOCwweEFBLDB4
QkEsMHhGQSwweEZGLAorICAgIDB4MjQsMHg0MSwweEMyLDB4MzAsMHgyQiwweDJELDB4QUIsMHhB
RCwweDI0LDB4MzksMHhBMiwweDI4LDB4NzgsMHhGOCwweEZFLDB4RkUsCisgICAgMHhFMywweDMw
LDB4ODIsMHgyOCwweEYyLDB4RjgsMHhGQywweDdGLDB4QTIsMHgyOCwweDYyLDB4MjAsMHhFQyww
eEY2LDB4RkYsMHhGNywKKyAgICAweDYzLDB4MjgsMHhBMiwweDIwLDB4QkUsMHhGQSwweEVCLDB4
NkUsMHhFMywweDMwLDB4ODIsMHgyOCwweEI1LDB4MkQsMHgyRiwweDNGLAorICAgIDB4MDQsMHgz
OSwweEEyLDB4MjgsMHhBQSwweEEwLDB4NzIsMHg2QSwweEMzLDB4MjgsMHg4MiwweDI4LDB4ODAs
MHhBQSwweEZCLDB4RjcsCisgICAgMHhBMiwweDI4LDB4ODIsMHgyMCwweDJCLDB4MkYsMHhCQSww
eDJDLDB4QzIsMHgyOCwweEEyLDB4MjgsMHhFNSwweEQ1LDB4QUQsMHhGOSwKKyAgICAweEUzLDB4
MzAsMHhBMiwweDI4LDB4RkYsMHhGQiwweDNFLDB4MjksMHhFMywweDMwLDB4QTIsMHgyOCwweDBF
LDB4MkYsMHgyQywweEFBLAorICAgIDB4RTMsMHgzMCwweEMyLDB4MzAsMHhCRiwweDBCLDB4RUEs
MHg2QSwweEUzLDB4MzgsMHhBMiwweDI4LDB4MkUsMHhBRiwweEZGLDB4RkYsCisgICAgMHhFMyww
eDMwLDB4QTIsMHgzMCwweDA4LDB4OEEsMHhBQiwweDJGLDB4MDMsMHgzOSwweEUzLDB4MzAsMHhB
RiwweEZCLDB4RjcsMHhGRSwKKyAgICAweEUzLDB4MzgsMHhDMywweDMwLDB4RjgsMHhFQywweENB
LDB4NzAsMHgyNCwweDM5LDB4QzIsMHgzMCwweEZCLDB4Q0IsMHg3OSwweDc1LAorICAgIDB4RTMs
MHgzOCwweEMzLDB4MzAsMHgzNywweEI1LDB4RDUsMHgzNSwweDAzLDB4MzksMHhDMywweDMwLDB4
QTIsMHhCRiwweEJGLDB4RjcsCisgICAgMHg0NCwweDQxLDB4RTMsMHgzOCwweDBELDB4M0QsMHg5
RiwweERGLDB4NDQsMHg0OSwweEUzLDB4MzgsMHgwMiwweEEzLDB4QkYsMHg3RCwKKyAgICAweDY0
LDB4NDksMHgwMywweDM5LDB4RTIsMHhGRiwweEQ3LDB4REQsMHgyNCwweDQxLDB4RTMsMHgzOCww
eEFFLDB4RkUsMHhCQSwweEY5LAorICAgIDB4MDMsMHgzOSwweEEyLDB4MzgsMHhCOCwweEE4LDB4
QTgsMHg4OCwweDIzLDB4NDEsMHhFMywweDM4LDB4MkEsMHhBRiwweEFCLDB4QUIsCisgICAgMHgw
MywweDQxLDB4RTMsMHgzOCwweEE1LDB4QUEsMHhFQiwweDYyLDB4NDQsMHg0MSwweEUyLDB4Mzgs
MHg3NywweEFGLDB4MEYsMHhFRSwKKyAgICAweDAzLDB4MzksMHhBMiwweDMwLDB4OUEsMHg5OCww
eEEwLDB4RTIsMHgwMywweDM5LDB4QzIsMHgzMCwweEU4LDB4RkEsMHhBNywweEQ1LAorICAgIDB4
MDMsMHgzOSwweEMyLDB4MzAsMHhBQywweDdFLDB4MTcsMHg5NSwweDAzLDB4MzksMHhFMiwweDMw
LDB4RTAsMHhBRCwweDJELDB4MkUsCisgICAgMHgyMywweDM5LDB4QzIsMHgzMCwweERCLDB4N0Ys
MHhGRSwweEU4LDB4MjMsMHgzOSwweEMyLDB4MzAsMHgyRiwweDBELDB4QkYsMHhFRiwKKyAgICAw
eDY0LDB4NDEsMHgwMywweDM5LDB4NjYsMHhFQSwweEEzLDB4OEQsMHg0MywweDQxLDB4RTIsMHgz
MCwweDdGLDB4RUEsMHhBQSwweEY4LAorICAgIDB4NDMsMHg0MSwweEUyLDB4MzAsMHgyRCwweDM1
LDB4RkIsMHhGRiwweDY0LDB4NDksMHgwMiwweDM5LDB4QUUsMHgyQiwweDAxLDB4MkIsCisgICAg
MHg4NCwweDUxLDB4MjMsMHg0MSwweEFELDB4QkUsMHgyRSwweDA4LDB4QTUsMHg1MSwweDY0LDB4
NDksMHg5NiwweEYyLDB4RTAsMHg4MiwKKyAgICAweDI2LDB4NjIsMHg4NCwweDUxLDB4MzcsMHhF
RCwweEY1LDB4NTcsMHgyNiwweDZBLDB4ODQsMHg1MSwweDgwLDB4RTIsMHhGQiwweDdFLAorICAg
IDB4NDcsMHg2QSwweDg0LDB4NTEsMHg4MiwweEFCLDB4RjcsMHhENSwweDI2LDB4NkEsMHhDNSww
eDU5LDB4RjgsMHhGRSwweDdGLDB4QUQsCisgICAgMHgwNiwweDYyLDB4QTQsMHg1OSwweEE4LDB4
RkYsMHg5RCwweEFELDB4QzksMHg3QSwweEU2LDB4NjEsMHgxNSwweDM1LDB4OUQsMHhGNSwKKyAg
ICAweDUyLDB4Q0QsMHhFQSwweDdBLDB4MEIsMHgwQiwweDA5LDB4MkQsMHg1MiwweENELDB4OEYs
MHhBQywweDc4LDB4NzgsMHg3OCwweDU4LAorICAgIDB4QjAsMHhCNCwweDRFLDB4QTQsMHg2Qiww
eDcwLDB4QzIsMHhBOCwweDRGLDB4QUMsMHhBRCwweDhCLDB4RkUsMHhGRSwweDVFLDB4N0MsCisg
ICAgMHhFRSwweDlCLDB4OEMsMHg4QiwweDBBLDB4QTcsMHhENSwweDU3LDB4Q0QsMHg5MywweDZD
LDB4OEIsMHhBOCwweEVCLDB4RUQsMHhGRiwKKyAgICAweENELDB4OTMsMHg2QywweDhCLDB4QkMs
MHhCQywweEFFLDB4QTksMHhDRCwweDkzLDB4OEQsMHg4QiwweEZCLDB4N0UsMHhBQiwweDJBLAor
ICAgIDB4Q0UsMHg5MywweDhDLDB4OEIsMHhFNSwweEZELDB4QkYsMHgzRiwweEVFLDB4OUIsMHg4
QywweDhCLDB4REYsMHg3NSwweEI1LDB4QUUsCisgICAgMHhDRCwweDkzLDB4OEMsMHg4QiwweEVE
LDB4OEIsMHgwMCwweEEwLDB4QUMsMHg4QiwweDRDLDB4ODMsMHhBMiwweDY4LDB4QUEsMHg3QiwK
KyAgICAweEFDLDB4OEIsMHgyQiwweDdCLDB4OEEsMHg2QSwweEVBLDB4N0YsMHg0QiwweDgzLDB4
RUEsMHg3MiwweEIwLDB4RDAsMHhGOCwweEVFLAorICAgIDB4MkIsMHg3QiwweEVBLDB4NzIsMHg4
QSwweEY2LDB4QTYsMHgxNSwweDJCLDB4N0IsMHhFQSwweDcyLDB4MjgsMHhCMCwweDkyLDB4QjUs
CisgICAgMHg0QywweDgzLDB4RUEsMHg3MiwweDJFLDB4QTksMHg1RiwweDVGLDB4NEIsMHg4Myww
eEM5LDB4NzIsMHhFOCwweEZBLDB4RkUsMHhGQiwKKyAgICAweDhDLDB4OEIsMHhFQSwweDdBLDB4
MkYsMHgyRCwweDJCLDB4MkYsMHhDRCwweDkzLDB4NkMsMHg4QiwweDNGLDB4OTUsMHg3NywweEZG
LAorICAgIDB4MkUsMHhBNCwweDhELDB4OEIsMHgwQSwweDJGLDB4MzUsMHhBRCwweEQxLDB4QjQs
MHgwRSwweDlDLDB4MEIsMHhCRCwweEZGLDB4NzUsCisgICAgMHg0MywweDUxLDB4RTMsMHg0OCww
eDhFLDB4QTksMHhBQSwweEJBLDB4NDMsMHg1MSwweDIzLDB4NDksMHhFNSwweDVGLDB4NUYsMHg3
RSwKKyAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4QUIsMHhBQSwweDlBLDB4OEUsMHg0NCwweDUx
LDB4RTEsMHg0MCwweDhGLDB4RUIsMHg3RiwweEZGLAorICAgIDB4NDMsMHg1MSwweEUxLDB4NDAs
MHgyRiwweDBCLDB4MkYsMHhCRCwweDQzLDB4NTEsMHgwMiwweDQ5LDB4MkUsMHhBQywweEFFLDB4
RTYsCisgICAgMHg0MywweDUxLDB4MDIsMHg0OSwweDA4LDB4QUUsMHhENiwweDdELDB4NDMsMHg1
MSwweEUyLDB4NDAsMHhFMCwweDlBLDB4RkIsMHhGQiwKKyAgICAweDQzLDB4NTEsMHgwMiwweDQ5
LDB4RUEsMHhCQiwweDdELDB4MkQsMHg2NCwweDU5LDB4MDIsMHg0OSwweDNCLDB4QjksMHg4OSww
eEEyLAorICAgIDB4NjQsMHg1OSwweDIzLDB4NTEsMHhBQiwweEVFLDB4RjcsMHg3NiwweDQzLDB4
NTEsMHgyMywweDUxLDB4RDQsMHhEQiwweEMyLDB4MDMsCisgICAgMHg0NCwweDU5LDB4MjMsMHg1
MSwweEFELDB4QUQsMHgzMSwweDNGLDB4NDQsMHg1MSwweDAzLDB4NTEsMHhCOCwweDlDLDB4REEs
MHhFOCwKKyAgICAweDQzLDB4NTEsMHgwMywweDUxLDB4REEsMHhEMywweDdBLDB4RkEsMHg0NCww
eDU5LDB4MDMsMHg1MSwweEI4LDB4RUEsMHg3QiwweERGLAorICAgIDB4RTMsMHg1MCwweDAyLDB4
NDksMHhGNywweEZDLDB4NTcsMHg3NywweDIzLDB4NTEsMHhFMywweDQ4LDB4OEYsMHhGQSwweEVF
LDB4RjIsCisgICAgMHg2NywweDdBLDB4MDMsMHg1MSwweDM1LDB4M0QsMHgzNSwweDM1LDB4NkIs
MHg5QiwweEM5LDB4OEEsMHgyOSwweDA5LDB4MkIsMHhBQiwKKyAgICAweDRBLDB4OTMsMHhDOCww
eDhBLDB4NjIsMHhGQSwweEU4LDB4NkYsMHhDOCwweDgyLDB4ODgsMHg3QSwweEUwLDB4RTgsMHhG
QSwweEFDLAorICAgIDB4QTgsMHg3QSwweDY3LDB4N0EsMHhEOCwweEYyLDB4RUEsMHhCQSwweEE3
LDB4N0EsMHg2NywweDdBLDB4NUYsMHhGRSwweDY4LDB4RUMsCisgICAgMHg4NywweDdBLDB4NDYs
MHg3MiwweDZBLDB4NjIsMHhDQSwweEEyLDB4ODcsMHg3QSwweDQ3LDB4NzIsMHhFOSwweEJFLDB4
M0IsMHhGOSwKKyAgICAweDg3LDB4N0EsMHg0NiwweDcyLDB4RUIsMHg3MCwweEUwLDB4RTgsMHg4
NywweDdBLDB4NDYsMHg3MiwweDNBLDB4QzAsMHhGQSwweDNGLAorICAgIDB4ODcsMHg3QSwweDQ2
LDB4NzIsMHhFQywweEVFLDB4QTYsMHhGRiwweDg3LDB4N0EsMHg0NiwweDcyLDB4QUUsMHhFQiww
eEFELDB4QkYsCisgICAgMHg4NywweDcyLDB4MjUsMHg2QSwweEYyLDB4NkUsMHhGQSwweEZBLDB4
ODcsMHg3MiwweDI1LDB4NzIsMHhGRiwweEZDLDB4RUUsMHhGRCwKKyAgICAweDY2LDB4NzIsMHgy
NSwweDZBLDB4REYsMHhBQSwweEFBLDB4RTgsMHg4NiwweDdBLDB4MjUsMHg3MiwweEU2LDB4RUIs
MHhBQiwweDNGLAorICAgIDB4QTcsMHg3QSwweDI2LDB4NkEsMHhFOSwweEFGLDB4QUEsMHgyQSww
eDg3LDB4N0EsMHgyNiwweDcyLDB4QTIsMHhFOCwweDc4LDB4RDIsCisgICAgMHg0NiwweDcyLDB4
RTUsMHg2MSwweEU4LDB4RTgsMHhFOCwweDdBLDB4MDYsMHg2QSwweEM1LDB4NjEsMHgwMCwweEZF
LDB4RDcsMHg3MiwKKyAgICAweEU1LDB4NjksMHg4NCwweDYxLDB4RUMsMHhGRSwweDdFLDB4RkIs
MHhFNSwweDYxLDB4ODQsMHg1OSwweEFCLDB4QTcsMHgyRCwweDJFLAorICAgIDB4MDUsMHg2QSww
eEM1LDB4NjEsMHhGNiwweEU1LDB4RUYsMHg1QSwweEU1LDB4NjksMHhDNSwweDYxLDB4OTYsMHgy
RiwweEFFLDB4NTcsCisgICAgMHgyNiwweDZBLDB4QzQsMHg2MSwweEFGLDB4MEYsMHg4RiwweEI5
LDB4NDYsMHg3MiwweDA1LDB4NkEsMHhFRCwweEY1LDB4N0QsMHhDNSwKKyAgICAweDQ2LDB4NzIs
MHgwNSwweDZBLDB4QUEsMHg4MiwweDAzLDB4QTMsMHg0NiwweDcyLDB4MjYsMHg2QSwweDBDLDB4
ODAsMHhGQiwweDFGLAorICAgIDB4NjYsMHg3MiwweEU0LDB4NjEsMHhCQSwweDcyLDB4RkMsMHg1
RSwweDA2LDB4NjIsMHgwMywweDQxLDB4RjgsMHg3OCwweEU4LDB4N0MsCisgICAgMHgwMywweDQx
LDB4ODEsMHgyOCwweDVDLDB4NUEsMHg1QywweDU2LDB4QTIsMHgzMCwweDgxLDB4MjgsMHgxNyww
eEI3LDB4QjcsMHgxRiwKKyAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4MEIsMHgwNiwweDBBLDB4
ODMsMHgwMiwweDM5LDB4QzIsMHgzMCwweDU1LDB4RDUsMHhGRCwweDJGLAorICAgIDB4MjMsMHg0
MSwweEUyLDB4MzgsMHhFNSwweEJELDB4MDksMHgwQiwweDQ0LDB4NDEsMHhFMiwweDM4LDB4NTUs
MHhGNSwweEJGLDB4MDIsCisgICAgMHg0NCwweDQ5LDB4RTIsMHgzOCwweDI5LDB4RUIsMHhBQSww
eDA4LDB4MjMsMHg0MSwweEMyLDB4MzAsMHhDMCwweEYyLDB4NzgsMHg3QywKKyAgICAweDAzLDB4
MzksMHhBMiwweDMwLDB4NzIsMHg3RSwweDVGLDB4NzcsMHhFMywweDM4LDB4QTIsMHgzMCwweDhC
LDB4RkIsMHg1NSwweDU1LAorICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHgwQSwweDAyLDB4RUYs
MHg1NSwweEUzLDB4MzAsMHhBMiwweDI4LDB4M0YsMHhBRCwweEJCLDB4QkQsCisgICAgMHgyMyww
eDM5LDB4QzMsMHgyOCwweEVGLDB4RkYsMHhENSwweEQ1LDB4RTMsMHgzMCwweDgyLDB4MjgsMHhB
OCwweEU4LDB4RkUsMHhEQywKKyAgICAweEMyLDB4MjgsMHg2MiwweDIwLDB4RUEsMHhGQywweDc3
LDB4RDYsMHg4MiwweDIwLDB4NjEsMHgyMCwweDNGLDB4MkEsMHgwQSwweEJBLAorICAgIDB4NjEs
MHgzMCwweDgyLDB4MjAsMHg1RiwweDU1LDB4N0QsMHg1NSwweEUzLDB4MzAsMHg4MiwweDIwLDB4
QUYsMHhFRiwweEE5LDB4QUYsCisgICAgMHhFMywweDMwLDB4ODIsMHgyOCwweEVBLDB4NjIsMHhG
QSwweEZCLDB4QTIsMHgyOCwweDgyLDB4MjAsMHhFNywweDU1LDB4RjcsMHgwOCwKKyAgICAweEUz
LDB4MzAsMHg4MiwweDIwLDB4RkQsMHhFRCwweEJCLDB4MkIsMHhFMywweDMwLDB4ODEsMHgyMCww
eERGLDB4RkYsMHhCRSwweEEwLAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhCNSwweEJGLDB4
QUEsMHhBQSwweEUzLDB4MzAsMHhBMiwweDI4LDB4QUEsMHg3QSwweDZFLDB4RUEsCisgICAgMHhF
MywweDMwLDB4QTIsMHgyOCwweEUyLDB4RUYsMHg3NSwweDU3LDB4QzIsMHgzMCwweEEyLDB4Mjgs
MHhGNSwweEY5LDB4MDEsMHgyOSwKKyAgICAweEUzLDB4MzAsMHhBMiwweDMwLDB4MEYsMHgwMSww
eDBCLDB4MEYsMHgwMywweDM5LDB4QzMsMHgzMCwweEJBLDB4QjMsMHhGRiwweEZGLAorICAgIDB4
RTMsMHgzMCwweEEyLDB4MzAsMHhGMCwweEZBLDB4RkEsMHhGNiwweEUzLDB4MzgsMHhBMiwweDMw
LDB4MEQsMHhCQiwweEUyLDB4RjAsCisgICAgMHhFMywweDM4LDB4QTIsMHgyOCwweDBCLDB4MkUs
MHhBNywweEI1LDB4MDMsMHgzOSwweEEyLDB4MzAsMHhGRiwweEY3LDB4QUUsMHg4OCwKKyAgICAw
eDAzLDB4MzksMHhFMywweDM4LDB4NzMsMHg3QiwweERGLDB4OTgsMHgyNCwweDM5LDB4RTMsMHgz
OCwweEE1LDB4QjUsMHhFRiwweDdCLAorICAgIDB4MjMsMHg0MSwweEMyLDB4MzAsMHhDRSwweEZF
LDB4RkYsMHg3QiwweDAzLDB4MzksMHhDMiwweDMwLDB4QTMsMHhBQSwweEVCLDB4QkYsCisgICAg
MHhFMywweDQ4LDB4MDMsMHgzOSwweDVELDB4NzcsMHhGNywweDU1LDB4MjMsMHg0MSwweEUzLDB4
MzgsMHhBQSwweDJFLDB4QTUsMHhGNSwKKyAgICAweDIzLDB4NDEsMHhDMiwweDMwLDB4QTIsMHhB
QSwweEY3LDB4RkYsMHgyNCwweDQxLDB4RTIsMHgzOCwweEZBLDB4M0EsMHg3QiwweDdGLAorICAg
IDB4NDQsMHg0MSwweEMyLDB4MzAsMHhFMiwweEEwLDB4N0YsMHg1RiwweDAzLDB4MzksMHhDMiww
eDMwLDB4QkYsMHhCNiwweEFGLDB4MkYsCisgICAgMHgyMywweDQxLDB4QzIsMHgzMCwweEI3LDB4
QUUsMHgzQiwweDNFLDB4NDQsMHg0MSwweEUyLDB4MzgsMHhGRiwweDA5LDB4RTUsMHhGNywKKyAg
ICAweDQzLDB4NDEsMHgwMywweDM5LDB4NUIsMHhGRCwweEI1LDB4RjcsMHgyMywweDM5LDB4RTIs
MHgzMCwweDVGLDB4RkEsMHhGQSwweEVCLAorICAgIDB4NDQsMHg0MSwweEUyLDB4MzAsMHgyOSww
eEZELDB4RkYsMHg1NSwweDQ0LDB4NDEsMHgwMywweDM5LDB4N0MsMHhCRiwweEFGLDB4RTUsCisg
ICAgMHgyMywweDM5LDB4QzIsMHgzMCwweEFBLDB4RTgsMHg3QSwweDVDLDB4NjQsMHg0OSwweEMy
LDB4MzAsMHgwQiwweEZGLDB4REYsMHg3RCwKKyAgICAweDg1LDB4NTEsMHhFMiwweDM4LDB4MjAs
MHhBMywweEFCLDB4RjUsMHhDNSwweDUxLDB4MjMsMHg0MSwweEEyLDB4RTIsMHhGRiwweDlELAor
ICAgIDB4ODQsMHg1MSwweDIzLDB4NDEsMHgyQywweDNELDB4M0QsMHgyQywweEM1LDB4NTksMHg2
NCwweDUxLDB4OEEsMHgyQiwweDlBLDB4QjUsCisgICAgMHhFNSwweDU5LDB4ODQsMHg1MSwweEI1
LDB4M0QsMHgyRSwweDJELDB4MjYsMHg2MiwweEU1LDB4NTksMHhFOSwweEI1LDB4MkIsMHgwQiwK
KyAgICAweDQ2LDB4NkEsMHhDNSwweDU5LDB4RjcsMHhCRSwweEFBLDB4MkEsMHg0OCwweDZBLDB4
RTUsMHg2MSwweDI1LDB4MkYsMHhCQSwweEZBLAorICAgIDB4OTAsMHhCNCwweDg5LDB4NzIsMHgw
RCwweDJELDB4QjUsMHhCNSwweEYxLDB4QkMsMHgwRSwweEE0LDB4RTgsMHhGRSwweEVELDB4OTUs
CisgICAgMHhCMCwweEI0LDB4NkYsMHhBQywweEFBLDB4Q0IsMHhGQiwweDRBLDB4NkYsMHhBQyww
eEFDLDB4OEIsMHg1OCwweDcwLDB4NjgsMHg2OCwKKyAgICAweDhDLDB4OEIsMHgyQiwweDgzLDB4
ODIsMHhFRSwweEZFLDB4NUMsMHhBRCwweDkzLDB4NEIsMHg4MywweENBLDB4QUIsMHhGNSwweDJE
LAorICAgIDB4Q0QsMHg5MywweDRCLDB4ODMsMHhBRCwweEFELDB4QUIsMHgyQSwweENELDB4OTMs
MHg4QywweDhCLDB4MEIsMHgyQiwweDJELDB4MzYsCisgICAgMHhFRSwweDkzLDB4QUQsMHg5Myww
eEY2LDB4OEEsMHhDMiwweEZFLDB4RUQsMHg5MywweDBCLDB4N0IsMHhBOCwweEE4LDB4RUEsMHg2
QSwKKyAgICAweEFELDB4OEIsMHhDQSwweDcyLDB4ODAsMHg4QSwweEZCLDB4NTUsMHg2QywweDgz
LDB4MEEsMHg3MywweDdBLDB4RjAsMHhGQiwweERELAorICAgIDB4NEIsMHg4MywweENBLDB4NkEs
MHhBMiwweDIyLDB4QUUsMHhCNiwweDRDLDB4ODMsMHhDQSwweDZBLDB4RTAsMHhBRSwweEYwLDB4
N0EsCisgICAgMHgwQiwweDdCLDB4Q0EsMHg3MiwweEY2LDB4REMsMHg1OCwweDdBLDB4MkEsMHg3
QiwweENBLDB4NzIsMHhGOSwweEY3LDB4NTUsMHg3NywKKyAgICAweDRCLDB4ODMsMHhFQSwweDcy
LDB4REQsMHg1NywweEJGLDB4M0IsMHg0QywweDgzLDB4RUEsMHg3MiwweEFELDB4QUIsMHgyQSww
eEM4LAorICAgIDB4NkIsMHg4MywweDBCLDB4N0IsMHgyRiwweDk3LDB4RjcsMHhCRiwweEFELDB4
OTMsMHg2QywweDhCLDB4RkYsMHhBQiwweDZELDB4RjUsCisgICAgMHhDRSwweDkzLDB4NkMsMHg4
QiwweDBELDB4MkYsMHhGOSwweDdFLDB4NEYsMHhBNCwweDZDLDB4OEIsMHgwQSwweEFCLDB4QUYs
MHhBRCwKKyAgICAweDQzLDB4NTEsMHhFMSwweDQwLDB4MkEsMHhFMCwweDRBLDB4N0EsMHg0Myww
eDUxLDB4RTIsMHg0MCwweDhFLDB4MkIsMHhBRiwweEU5LAorICAgIDB4NjQsMHg1MSwweDAyLDB4
NDksMHhGRCwweDczLDB4NUEsMHg3NSwweDIzLDB4NDksMHhFMSwweDQwLDB4QjIsMHg5RSwweDZC
LDB4QUIsCisgICAgMHg0MywweDUxLDB4RTIsMHg0OCwweEU2LDB4RTcsMHhBRCwweDNFLDB4MjMs
MHg0OSwweDAyLDB4NDksMHg4MCwweDdGLDB4QTQsMHg5NCwKKyAgICAweDQzLDB4NTEsMHgwMiww
eDQ5LDB4REQsMHg5RiwweDUyLDB4RTIsMHg0MywweDUxLDB4RTIsMHg0MCwweDdBLDB4RjgsMHhE
QSwweERCLAorICAgIDB4NjQsMHg1OSwweDAyLDB4NDksMHhCNSwweDJELDB4QTksMHhFQSwweDY0
LDB4NTksMHgyMywweDUxLDB4QUIsMHhBOCwweEVCLDB4RUYsCisgICAgMHg2NCwweDU5LDB4MjMs
MHg1MSwweEZGLDB4N0MsMHg3RCwweDZELDB4NDMsMHg1MSwweDAyLDB4NDksMHg4QSwweEY4LDB4
RkYsMHg4NywKKyAgICAweDY0LDB4NTEsMHgyMywweDUxLDB4N0EsMHhCRiwweEE3LDB4N0IsMHg2
NCwweDU5LDB4MDMsMHg0OSwweDJFLDB4QTgsMHhFQSwweERGLAorICAgIDB4NDQsMHg1MSwweDAz
LDB4NDksMHhCOCwweDY4LDB4RUEsMHhFQSwweDIzLDB4NTEsMHhFMiwweDQ4LDB4QUEsMHhGRiww
eEVGLDB4MEEsCisgICAgMHg0NCwweDUxLDB4MDMsMHg0OSwweDdGLDB4NUUsMHgzNSwweEJGLDB4
MjMsMHg1MSwweEUyLDB4NDgsMHhGQiwweEJGLDB4OEUsMHg4RSwKKyAgICAweDg4LDB4N0EsMHgy
MywweDUxLDB4MjUsMHgyNSwweDNELDB4MkQsMHgyQSwweDkzLDB4RTksMHg4QSwweEFCLDB4RkQs
MHhBOSwweDZCLAorICAgIDB4MDksMHg4QiwweEE4LDB4ODIsMHhGOCwweEYyLDB4NzgsMHg1QSww
eEM4LDB4ODIsMHg4NywweDdBLDB4RjIsMHhGMCwweERFLDB4NTcsCisgICAgMHhBOCwweDdBLDB4
NjcsMHg3QSwweEZFLDB4NUYsMHg3QywweEZGLDB4ODcsMHg3QSwweDQ2LDB4NzIsMHgwMCwweDBG
LDB4MkUsMHhCQiwKKyAgICAweEE4LDB4N0EsMHg2NywweDdBLDB4RjcsMHhFRiwweEJGLDB4QUQs
MHg4NywweDdBLDB4NjcsMHg3MiwweEI3LDB4OEEsMHhDMCwweEEwLAorICAgIDB4ODcsMHg3QSww
eDY2LDB4NzIsMHg3RSwweDBBLDB4M0UsMHgxMiwweEE3LDB4N0EsMHg2NywweDcyLDB4NzUsMHhF
NSwweERGLDB4MzcsCisgICAgMHg4NywweDdBLDB4NDYsMHg3MiwweEY1LDB4MEYsMHgyQSwweDA4
LDB4ODcsMHg3QSwweDQ2LDB4NzIsMHg1RCwweDVGLDB4M0EsMHhGQSwKKyAgICAweDg2LDB4NzIs
MHgyNSwweDZBLDB4RTAsMHg5RSwweEZFLDB4RkYsMHg2NywweDdBLDB4MjYsMHg2QSwweEJGLDB4
QjYsMHhCQywweDhBLAorICAgIDB4ODYsMHg3QSwweDQ2LDB4NzIsMHg3NSwweDc1LDB4RkQsMHhF
RCwweDg3LDB4N0EsMHg0NiwweDcyLDB4QTUsMHgwMywweDJBLDB4QUYsCisgICAgMHhBOCwweDdB
LDB4NDYsMHg3MiwweEVCLDB4MEUsMHhBQywweEVELDB4ODcsMHg3QSwweDI1LDB4NkEsMHg3RSww
eEVDLDB4QUUsMHg2RSwKKyAgICAweDI2LDB4NzIsMHhDNSwweDYxLDB4NjIsMHhCQSwweEI4LDB4
RUEsMHgwNiwweDZBLDB4QTQsMHg2MSwweEUwLDB4RjIsMHhGRSwweDc3LAorICAgIDB4QzUsMHg2
MSwweDYzLDB4NTksMHhBMiwweDI3LDB4QUMsMHg4QSwweDA1LDB4NkEsMHhBNCwweDYxLDB4QUQs
MHgyOSwweEFCLDB4NUUsCisgICAgMHgwNSwweDZBLDB4QTQsMHg2MSwweEZBLDB4QTgsMHhGQSww
eDdBLDB4MDYsMHg2QSwweEE0LDB4NTksMHhERiwweDdCLDB4RkYsMHgyQiwKKyAgICAweDA1LDB4
NkEsMHhBNCwweDYxLDB4QkYsMHg3RiwweEZGLDB4ODAsMHg0NiwweDcyLDB4QzQsMHg2MSwweDhC
LDB4MkQsMHhCRSwweDJFLAorICAgIDB4NDYsMHg3MiwweDI2LDB4NkEsMHgyRiwweDJFLDB4RDAs
MHhGQSwweDg3LDB4N0EsMHgyNiwweDZBLDB4RkQsMHg1NywweDZCLDB4QTIsCisgICAgMHg2Niww
eDcyLDB4RTUsMHg2MSwweDdFLDB4N0IsMHhFQSwweEUwLDB4QTQsMHg1OSwweEEyLDB4MzgsMHg3
QywweDc4LDB4NzgsMHhGOCwKKyAgICAweEExLDB4MzAsMHg2MSwweDI4LDB4NzgsMHg1RiwweDVF
LDB4NUUsMHhDMiwweDMwLDB4NjEsMHgyOCwweEJGLDB4M0QsMHhBRCwweEJELAorICAgIDB4MjMs
MHg0MSwweEExLDB4MjgsMHhGRCwweEZCLDB4MkIsMHgwQiwweDIzLDB4NDEsMHhFMiwweDM4LDB4
OEQsMHhGNywweEFGLDB4QUMsCisgICAgMHgyMywweDQxLDB4RTIsMHgzOCwweDBGLDB4MkYsMHhG
NywweERGLDB4NjQsMHg0OSwweDAzLDB4NDEsMHgyQiwweDg5LDB4ODUsMHgyNSwKKyAgICAweDY0
LDB4NDksMHgyMywweDQxLDB4RTYsMHhGQSwweDcwLDB4RTAsMHg0MywweDQxLDB4QTIsMHgzMCww
eEZDLDB4NUUsMHg3QSwweEZFLAorICAgIDB4QzIsMHgzMCwweDgxLDB4MjgsMHhGQywweEZBLDB4
RTgsMHhBOCwweEEyLDB4MjgsMHg4MSwweDI4LDB4QkUsMHg3RSwweEZDLDB4NjgsCisgICAgMHhB
MiwweDI4LDB4ODIsMHgyMCwweDgwLDB4RkEsMHg1RSwweDVELDB4QzIsMHgyOCwweDgyLDB4MjAs
MHhBRiwweEJELDB4MUYsMHg3RiwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4MDMsMHhGRiww
eEZGLDB4NUYsMHhDMywweDI4LDB4NjEsMHgyMCwweEY4LDB4RjgsMHg3RSwweDU2LAorICAgIDB4
ODMsMHgyMCwweDYxLDB4MjAsMHhEQywweDk2LDB4REYsMHhEMiwweDgyLDB4MjAsMHg2MSwweDIw
LDB4RjgsMHhCRSwweEVCLDB4RkIsCisgICAgMHhBMiwweDI4LDB4NDEsMHgxOCwweEEyLDB4QTgs
MHhCRSwweERGLDB4QzMsMHgyOCwweDYxLDB4MjAsMHgwQiwweEVGLDB4QkYsMHhGNSwKKyAgICAw
eEEyLDB4MjgsMHg4MiwweDIwLDB4QkEsMHhGRSwweDBGLDB4MkYsMHhDMywweDI4LDB4ODIsMHgy
MCwweDJFLDB4ODksMHgzQiwweEFCLAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHgzRiwweEJG
LDB4RkQsMHhCRCwweDAzLDB4MzEsMHhBMiwweDI4LDB4REEsMHhGQSwweEUzLDB4RkYsCisgICAg
MHhFMywweDMwLDB4QzIsMHgyOCwweEYyLDB4NzgsMHhERSwweDVELDB4RTMsMHgzMCwweEEyLDB4
MjgsMHgyQSwweEJGLDB4QkIsMHhGNywKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4N0YsMHhF
RSwweEFCLDB4OEEsMHhFMywweDM4LDB4QTIsMHgyOCwweEZELDB4RjUsMHhGRSwweDJCLAorICAg
IDB4RTMsMHgzMCwweEEyLDB4MzAsMHg4RiwweDJCLDB4ODgsMHhFQSwweEUzLDB4MzAsMHhBMiww
eDMwLDB4QjgsMHhGNiwweEY3LDB4N0QsCisgICAgMHhDMiwweDMwLDB4QTIsMHgzMCwweDBFLDB4
MEIsMHgwMywweDJBLDB4RTMsMHgzOCwweEEyLDB4MjgsMHhGOCwweEZCLDB4QkYsMHhBQSwKKyAg
ICAweDAzLDB4MzksMHhBMiwweDMwLDB4QjUsMHhGRCwweEJCLDB4MkEsMHgyNCwweDM5LDB4RTMs
MHgzMCwweEIyLDB4QkIsMHg1NywweDU3LAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHg4MCww
eEEwLDB4RkEsMHhGRSwweDAzLDB4MzksMHhDMiwweDMwLDB4QTIsMHhBQiwweEJGLDB4M0YsCisg
ICAgMHgyMywweDM5LDB4RTIsMHgzMCwweEVGLDB4RkUsMHhFOSwweEUyLDB4MDMsMHgzOSwweEMy
LDB4MzAsMHhGRiwweEFGLDB4QUIsMHgwMCwKKyAgICAweDAzLDB4MzksMHhFMiwweDM4LDB4MDMs
MHg1NywweDI3LDB4MDUsMHgyNCwweDM5LDB4RTIsMHgzOCwweDk1LDB4RjUsMHg5RSwweDVBLAor
ICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHg3RSwweDZFLDB4QTAsMHg4QSwweDAzLDB4MzksMHhD
MiwweDMwLDB4NjMsMHg2MiwweDcwLDB4RTgsCisgICAgMHgwMywweDM5LDB4QTIsMHgzMCwweDdC
LDB4M0YsMHgyRiwweDJFLDB4NDQsMHg0MSwweEUyLDB4MzAsMHhCNSwweEZELDB4RUUsMHgzQSwK
KyAgICAweDQ0LDB4NDksMHgwMywweDM5LDB4NTcsMHg3NywweEZGLDB4QjAsMHg0NCwweDQ5LDB4
MDMsMHgzOSwweEQ1LDB4NTUsMHg3RCwweEYyLAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzgsMHhF
QSwweEYyLDB4QjksMHhGRiwweDAzLDB4MzksMHhDMiwweDM4LDB4MDIsMHgwMCwweEMwLDB4QzIs
CisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDc3LDB4QUYsMHhCQiwweDhBLDB4MjMsMHgzOSww
eEMyLDB4MzAsMHg4QiwweEE2LDB4M0YsMHhBQiwKKyAgICAweDIzLDB4MzksMHhFMiwweDMwLDB4
NTYsMHhGRiwweDZBLDB4RTgsMHgwMiwweDM5LDB4QzEsMHgzMCwweEVBLDB4NjMsMHhBMiwweDgy
LAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzAsMHgyRiwweEE5LDB4MkIsMHgzRiwweEE0LDB4NTEs
MHgyMywweDQxLDB4QUQsMHgzNywweDI5LDB4MkQsCisgICAgMHhDNSwweDUxLDB4NjQsMHg0OSww
eERGLDB4NTksMHg4QSwweDIyLDB4QzUsMHg1OSwweDY0LDB4NDksMHhGRCwweDk1LDB4RkEsMHhG
OCwKKyAgICAweDA1LDB4NjIsMHg2MywweDQ5LDB4QUYsMHgyRiwweEFGLDB4RjcsMHg2NywweDZB
LDB4QzUsMHg1OSwweDhBLDB4QUEsMHhCRiwweDc1LAorICAgIDB4MDYsMHg2MiwweDg0LDB4NTEs
MHgwOCwweEI4LDB4RkUsMHhERiwweDQ3LDB4NkEsMHhBNCwweDUxLDB4MEEsMHgyQSwweEJELDB4
MkQsCisgICAgMHg4QywweDkzLDB4MjcsMHg2MiwweDJGLDB4MkQsMHgyRCwweDJELDB4QjAsMHhC
NCwweEVELDB4OUIsMHgzRCwweEFELDB4MjksMHgyOSwKKyAgICAweEQwLDB4QjQsMHg2RiwweEFD
LDB4RUUsMHg3RiwweEUyLDB4RkEsMHg2RiwweEFDLDB4QUQsMHg5MywweDY4LDB4RTAsMHhFOCww
eEUwLAorICAgIDB4QUQsMHg5MywweDBBLDB4N0IsMHhGRSwweEFDLDB4RjgsMHg1OCwweEFDLDB4
OEIsMHgyQiwweDgzLDB4MkIsMHgyQiwweDJGLDB4QkQsCisgICAgMHhDRCwweDhCLDB4OEMsMHg4
QiwweEJDLDB4NjgsMHg4MiwweEM5LDB4Q0QsMHg5MywweDZDLDB4N0IsMHhBOCwweEFBLDB4MkEs
MHhGRiwKKyAgICAweENELDB4OTMsMHgwQSwweDczLDB4QTAsMHhBMiwweEZBLDB4N0UsMHg4Qyww
eDhCLDB4QUEsMHg2QSwweEEwLDB4RkEsMHg3RSwweERGLAorICAgIDB4MEIsMHg3MywweEE5LDB4
NkEsMHg3QiwweEYyLDB4RkUsMHg1RSwweDBBLDB4NzMsMHg4OSwweDYyLDB4MDIsMHgyQiwweEY5
LDB4REQsCisgICAgMHgyQiwweDczLDB4RUEsMHg3MiwweEFELDB4N0QsMHhENSwweDVELDB4MkIs
MHg3QiwweEE5LDB4NkEsMHhCOCwweEJGLDB4RjcsMHhCNywKKyAgICAweDBBLDB4NzMsMHhDOSww
eDcyLDB4OTYsMHhGQiwweDQyLDB4RTAsMHgwQSwweDdCLDB4Q0EsMHg3MiwweDlFLDB4MzksMHgy
NSwweEQ1LAorICAgIDB4NEMsMHg3QiwweDBCLDB4N0IsMHhERCwweERELDB4ODksMHhCNywweDZD
LDB4ODMsMHgwQiwweDdCLDB4REUsMHhCRiwweDFGLDB4RUYsCisgICAgMHg2QywweDgzLDB4MkIs
MHg4MywweEZGLDB4RkEsMHhFQSwweEE4LDB4RUUsMHg5QiwweDRCLDB4ODMsMHhCRCwweDBGLDB4
MjksMHgyRCwKKyAgICAweEVFLDB4OUIsMHg0QiwweDgzLDB4N0UsMHg3QSwweDU4LDB4RjAsMHhF
RSwweDlCLDB4NEMsMHg4MywweDJELDB4MkQsMHhGRCwweEY1LAorICAgIDB4NDMsMHg1MSwweEUx
LDB4NDgsMHhERSwweEVCLDB4OEEsMHgwQiwweDIyLDB4NDksMHhFMiwweDQwLDB4RTAsMHhGQSww
eEZGLDB4RUYsCisgICAgMHg0NCwweDUxLDB4QzIsMHg0MCwweEZGLDB4N0YsMHhCRiwweDJCLDB4
NDMsMHg1MSwweEUyLDB4NDAsMHhGRCwweEVCLDB4MkYsMHgwOCwKKyAgICAweDYzLDB4NTEsMHgw
MiwweDQ5LDB4RjcsMHg1NSwweDZELDB4RkUsMHg0MywweDUxLDB4MDIsMHg0OSwweEY3LDB4QTUs
MHhCNSwweEJGLAorICAgIDB4NDMsMHg1MSwweEUyLDB4NDAsMHhFMCwweDdBLDB4N0MsMHhGQSww
eDQzLDB4NTEsMHhFMiwweDQwLDB4QkYsMHhBRiwweEI5LDB4RTksCisgICAgMHg0MywweDUxLDB4
MDIsMHg0OSwweDgwLDB4QTgsMHhBRiwweDRCLDB4NDMsMHg1MSwweDAzLDB4NDksMHhBMCwweEEz
LDB4QkIsMHgwRiwKKyAgICAweDY1LDB4NTksMHgyMywweDUxLDB4RUQsMHhCQSwweDVBLDB4NUYs
MHg2NCwweDU5LDB4MDIsMHg0OSwweEJCLDB4OEYsMHhDRCwweEVBLAorICAgIDB4NDQsMHg1MSww
eDIzLDB4NTEsMHg1QywweERCLDB4OEQsMHhFRCwweDQzLDB4NTEsMHgwMywweDQ5LDB4RjcsMHhG
QiwweENCLDB4RTIsCisgICAgMHgyMywweDUxLDB4MDMsMHg0OSwweEUwLDB4RkMsMHg1QSwweDcy
LDB4MjMsMHg1MSwweEUyLDB4NDgsMHhDQSwweEZBLDB4QUEsMHhBQiwKKyAgICAweDIzLDB4NTEs
MHhFMiwweDQ4LDB4RTIsMHhCQiwweEZGLDB4NzUsMHgyMywweDUxLDB4RTIsMHg0OCwweENGLDB4
Q0IsMHgyQiwweEVELAorICAgIDB4RTgsMHg4QSwweDIzLDB4NTEsMHgyRCwweDI1LDB4MjksMHgy
RCwweDI5LDB4OTMsMHhFOCwweDhBLDB4NzIsMHhGMiwweDYyLDB4NUYsCisgICAgMHhDOSwweDhB
LDB4QTcsMHg3QSwweEU4LDB4RjgsMHhCRSwweDcyLDB4QTgsMHg3QSwweDg3LDB4N0EsMHg1OCww
eDVDLDB4RTAsMHhGRiwKKyAgICAweEE3LDB4N0EsMHg2NywweDcyLDB4REIsMHgyQiwweEJGLDB4
NzcsMHg4NywweDdBLDB4NDYsMHg3MiwweDc5LDB4Q0EsMHgyQSwweDAwLAorICAgIDB4QTcsMHg3
QSwweDY3LDB4NzIsMHhBOSwweEI3LDB4RTQsMHg3QywweEE4LDB4ODIsMHgyNiwweDcyLDB4QTgs
MHhBRiwweDBBLDB4MjIsCisgICAgMHhBNywweDdBLDB4NjYsMHg3MiwweEJCLDB4REMsMHhFMCww
eDgyLDB4ODcsMHg3QSwweDY3LDB4NzIsMHgxOCwweDBDLDB4MkIsMHgwRSwKKyAgICAweEE3LDB4
N0EsMHg2NywweDdBLDB4RkYsMHg1RiwweEVGLDB4MUYsMHg4NywweDdBLDB4NDYsMHg3MiwweDJB
LDB4MkYsMHhCQSwweDkwLAorICAgIDB4NjYsMHg3MiwweDI2LDB4NzIsMHhFQywweDRDLDB4RDAs
MHhDMiwweDY3LDB4N0EsMHgyNSwweDZBLDB4OUEsMHhDMiwweENCLDB4NkYsCisgICAgMHg4Nyww
eDdBLDB4NDYsMHg3MiwweEZBLDB4NUUsMHg3RSwweDdELDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhF
RiwweDhGLDB4QUQsMHgwRiwKKyAgICAweDg3LDB4N0EsMHg2NywweDcyLDB4QTMsMHg5MywweEJE
LDB4NkYsMHg2NywweDcyLDB4MDUsMHg2QSwweEU4LDB4RUMsMHhGRSwweERGLAorICAgIDB4MjYs
MHg3MiwweEM1LDB4NjEsMHhGOCwweEVGLDB4NzksMHhCRSwweEM1LDB4NjEsMHg4MywweDU5LDB4
RUMsMHgwMiwweDIwLDB4RTgsCisgICAgMHgwNSwweDZBLDB4QTQsMHg2MSwweEY1LDB4RTUsMHgy
RCwweDBELDB4NDYsMHg3MiwweEE0LDB4NjEsMHhENywweEJELDB4MEEsMHhBQSwKKyAgICAweDQ2
LDB4NzIsMHhDNSwweDYxLDB4QTUsMHg4QiwweDgwLDB4MDgsMHg4NywweDdBLDB4MDYsMHg2QSww
eEZELDB4MkQsMHg4QSwweEFBLAorICAgIDB4QTcsMHg3QSwweDQ2LDB4NzIsMHg1RiwweDJCLDB4
MjIsMHhBQiwweEE4LDB4ODIsMHgwNSwweDZBLDB4RkQsMHhFQiwweDg4LDB4MjIsCisgICAgMHhB
OCwweDdBLDB4MjYsMHg3MiwweDc3LDB4QUYsMHg4QSwweEFBLDB4QTgsMHg3QSwweDY3LDB4NzIs
MHg3RiwweENCLDB4NkEsMHhERCwKKyAgICAweDg3LDB4NzIsMHgyNiwweDZBLDB4NjAsMHg4MCww
eEU4LDB4N0YsMHgwNiwweDYyLDB4RTIsMHgzOCwweDVBLDB4NzgsMHg3OCwweDc4LAorICAgIDB4
QzIsMHgzOCwweDYxLDB4MjgsMHg1RSwweEJFLDB4RkEsMHhCOCwweEUyLDB4MzgsMHg4MSwweDMw
LDB4QkQsMHgzRCwweDJGLDB4MkQsCisgICAgMHg2NCwweDQ5LDB4MDMsMHgzOSwweEE5LDB4OEYs
MHhBOSwweEZELDB4NjQsMHg0OSwweDAzLDB4MzksMHg3QSwweDdBLDB4N0UsMHhBRiwKKyAgICAw
eDIzLDB4NDEsMHhFMiwweDM4LDB4NDUsMHhGNywweDdBLDB4RUEsMHg2NSwweDQ5LDB4RTMsMHgz
OCwweDJELDB4QUQsMHhGRCwweERELAorICAgIDB4NjQsMHg0OSwweDAzLDB4MzksMHhBMiwweEEy
LDB4QUIsMHg4NywweDIzLDB4MzksMHhBMiwweDI4LDB4NjgsMHg2QSwweEYwLDB4NjgsCisgICAg
MHhDMiwweDMwLDB4ODIsMHgyOCwweDJGLDB4QUUsMHgyMCwweDIyLDB4QzIsMHgyOCwweEEyLDB4
MjgsMHg3NywweDVGLDB4N0YsMHhFRiwKKyAgICAweEEyLDB4MjgsMHg4MiwweDIwLDB4NzIsMHg2
MiwweEFCLDB4RUMsMHhDMywweDI4LDB4NjEsMHgyMCwweEZFLDB4RkEsMHhCOCwweDdFLAorICAg
IDB4QzMsMHgyOCwweDYxLDB4MjAsMHhFMywweEVGLDB4N0YsMHg1NywweDgyLDB4MjAsMHg2MSww
eDIwLDB4NTgsMHhERiwweEZGLDB4QkYsCisgICAgMHg4MiwweDIwLDB4NjEsMHgyMCwweDYwLDB4
MEIsMHgzRiwweDNCLDB4QTIsMHgyOCwweDYxLDB4MjAsMHhGRiwweEZBLDB4OEIsMHgwMiwKKyAg
ICAweEEyLDB4MjAsMHg2MSwweDIwLDB4NTcsMHg5RiwweEZBLDB4RjgsMHhBMiwweDI4LDB4NDEs
MHgxOCwweEJELDB4RUEsMHhBQSwweDJBLAorICAgIDB4QTIsMHgyOCwweDYxLDB4MjAsMHgyQiww
eEFGLDB4M0IsMHgwOCwweEMyLDB4MjgsMHg4MiwweDIwLDB4RkYsMHhGRiwweDNGLDB4QjcsCisg
ICAgMHhDMiwweDI4LDB4ODEsMHgyOCwweDBCLDB4MjIsMHhFOCwweEE4LDB4QzIsMHgyOCwweEEy
LDB4MjgsMHg3OCwweDVBLDB4NUQsMHhEQiwKKyAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4NzMs
MHhGNSwweDM1LDB4MkIsMHhDMiwweDMwLDB4QTIsMHgyOCwweDU1LDB4RkEsMHhBMCwweDgwLAor
ICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHhBQiwweDhCLDB4QTcsMHhGRiwweDAzLDB4MzksMHhD
MiwweDMwLDB4QUYsMHhGNiwweDU3LDB4NTcsCisgICAgMHhFMywweDM4LDB4QzMsMHgzMCwweDc4
LDB4RUQsMHgzQiwweDM5LDB4RTMsMHgzMCwweEEyLDB4MzAsMHhGRiwweEVFLDB4QUEsMHhBQiwK
KyAgICAweEMyLDB4MzAsMHhBMywweDI4LDB4MEEsMHhBQSwweDgwLDB4MjAsMHgwMywweDMxLDB4
QTIsMHgzMCwweEZFLDB4NUYsMHhGNSwweDc3LAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHgy
QiwweDJGLDB4QTUsMHg3NSwweDAzLDB4MzksMHhBMiwweDMwLDB4QTAsMHhBOCwweEZFLDB4RkEs
CisgICAgMHgwMywweDM5LDB4QzMsMHgzMCwweEFBLDB4MDIsMHhBNywweEQ3LDB4MjMsMHgzOSww
eEUzLDB4MzgsMHg5NywweEJCLDB4NzcsMHhENSwKKyAgICAweDIzLDB4MzksMHhFMywweDM4LDB4
RTYsMHhBQSwweDEzLDB4M0IsMHgyMywweDM5LDB4QzIsMHgzMCwweDg4LDB4OEEsMHhCQSwweDlB
LAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHgwMywweEJFLDB4M0MsMHhCQSwweDAzLDB4Mzks
MHhDMiwweDMwLDB4MDAsMHgyQSwweEFBLDB4RkUsCisgICAgMHgyMywweDM5LDB4RTIsMHgzMCww
eDI4LDB4M0IsMHhGNSwweDU3LDB4MjMsMHg0MSwweEUyLDB4MzgsMHhGQywweDU4LDB4NTAsMHg1
MywKKyAgICAweEUyLDB4MzgsMHhDMiwweDMwLDB4MjgsMHgwRSwweDBFLDB4MkUsMHg0NCwweDQx
LDB4RTMsMHgzOCwweDIzLDB4QUQsMHgzNywweDFGLAorICAgIDB4ODUsMHg0OSwweDIzLDB4NDEs
MHhGRiwweEZCLDB4OUYsMHgxRiwweDY0LDB4NDksMHgyNCwweDQxLDB4NTIsMHg1QSwweDc4LDB4
MkEsCisgICAgMHg0NCwweDQxLDB4RTIsMHgzOCwweDdGLDB4REUsMHhGRSwweEVDLDB4NDQsMHg0
MSwweEUzLDB4MzgsMHhFRCwweEFGLDB4RUYsMHhDQSwKKyAgICAweDAyLDB4MzksMHhDMiwweDMw
LDB4RjAsMHg1QSwweEMyLDB4QUUsMHgwMiwweDM5LDB4QzEsMHgzMCwweDJBLDB4MjUsMHhCNSww
eEVGLAorICAgIDB4MjMsMHgzOSwweEUyLDB4MzgsMHhFMiwweEFDLDB4QjcsMHhCRCwweDQzLDB4
NDEsMHhFMiwweDM4LDB4REYsMHhFQiwweEEwLDB4QkMsCisgICAgMHgyMywweDQxLDB4RTIsMHgz
OCwweDU1LDB4REYsMHgxNCwweEJGLDB4QTQsMHg1MSwweDAyLDB4MzksMHgyOSwweEFGLDB4QTUs
MHhENywKKyAgICAweEE0LDB4NTEsMHgwMiwweDQxLDB4MDAsMHg4MiwweEE4LDB4NkUsMHhBNCww
eDUxLDB4MjMsMHg0MSwweEEwLDB4RkUsMHhGRiwweEZELAorICAgIDB4QTQsMHg1OSwweDIyLDB4
NDEsMHhBRiwweEI3LDB4MkQsMHgyRiwweEM1LDB4NTksMHg4NCwweDUxLDB4ODMsMHhBOSwweEZC
LDB4QjMsCisgICAgMHhFNiwweDU5LDB4ODQsMHg1MSwweDU3LDB4NUYsMHg3QSwweEUyLDB4MjYs
MHg2MiwweDg0LDB4NTEsMHgyRiwweEI1LDB4QUQsMHhBRiwKKyAgICAweDhDLDB4OTMsMHgyNiww
eDYyLDB4MkQsMHgyRCwweDI1LDB4MjUsMHhCMCwweEI0LDB4MkUsMHhBNCwweDBELDB4MDksMHgy
OSwweEFELAorICAgIDB4QjAsMHhCNCwweDZGLDB4QUMsMHg3OCwweEY4LDB4N0IsMHhFNywweDZG
LDB4QUMsMHhDRCwweDkzLDB4NjgsMHg2OCwweEY4LDB4NTgsCisgICAgMHhBRCwweDkzLDB4QTks
MHg3MiwweDc4LDB4NzgsMHg3OCwweDcwLDB4MkMsMHg4MywweDQ4LDB4NjIsMHgwMiwweDhBLDB4
QUYsMHhENSwKKyAgICAweDhDLDB4OEIsMHg4OSwweDZBLDB4MEEsMHhGRiwweEZGLDB4N0YsMHg4
QywweDgzLDB4NjksMHg2MiwweDIwLDB4QUIsMHhGRiwweDU3LAorICAgIDB4MkIsMHg3MywweDY4
LDB4NjIsMHhBMCwweEU4LDB4N0YsMHg1NSwweENBLDB4NkEsMHg2OCwweDYyLDB4MjIsMHhFRCww
eEZBLDB4RjcsCisgICAgMHhDQSwweDZBLDB4NjgsMHg2MiwweEY4LDB4NUYsMHg3NSwweDdELDB4
Q0EsMHg2QSwweDY4LDB4NjIsMHgzQiwweEIzLDB4OUQsMHhFOSwKKyAgICAweEVBLDB4NzIsMHg4
OSwweDYyLDB4ODIsMHhBQSwweDJCLDB4QUQsMHhFQSwweDcyLDB4ODksMHg2MiwweDJCLDB4MkQs
MHhCRSwweEJFLAorICAgIDB4MEEsMHg3MywweEM5LDB4NkEsMHhBMCwweEZGLDB4QjUsMHgxNSww
eDRCLDB4N0IsMHhDQSwweDcyLDB4NTcsMHhGRCwweEFCLDB4MkQsCisgICAgMHhBRCwweDhCLDB4
MEIsMHg3QiwweEY1LDB4RkQsMHg4RiwweDBBLDB4MEUsMHg5QywweDJCLDB4N0IsMHhGNSwweEZG
LDB4QUIsMHgyQSwKKyAgICAweEVELDB4OTMsMHg0QiwweDgzLDB4NTcsMHg3NywweEZFLDB4RkMs
MHhFRCwweDkzLDB4NEIsMHg4MywweDNGLDB4MjcsMHgzRCwweEJGLAorICAgIDB4MkUsMHhBNCww
eDhDLDB4OEIsMHg2MCwweEEyLDB4MDIsMHgwMywweDBFLDB4OUMsMHg0QiwweDgzLDB4REQsMHg1
RiwweDdFLDB4NTgsCisgICAgMHg0MywweDUxLDB4MDMsMHg0OSwweDhCLDB4Q0UsMHg5RSwweDk2
LDB4MjMsMHg0OSwweEUyLDB4NDgsMHhGQywweDlFLDB4M0UsMHgwQSwKKyAgICAweDIzLDB4NDks
MHgwMiwweDQ5LDB4NUEsMHhGOCwweDg4LDB4QTgsMHg0NCwweDUxLDB4MDIsMHg0OSwweEJGLDB4
RkYsMHg2QSwweDUyLAorICAgIDB4NDQsMHg1MSwweDAzLDB4NDksMHhCNiwweEJBLDB4RjUsMHhG
NSwweDIyLDB4NDksMHhFMiwweDQwLDB4MjAsMHhBOCwweEFELDB4REMsCisgICAgMHg0MywweDUx
LDB4RTIsMHg0MCwweEZBLDB4QUQsMHgyQiwweDhBLDB4NDMsMHg1MSwweDAyLDB4NDksMHhGQiww
eERBLDB4QTgsMHhGQSwKKyAgICAweDY0LDB4NTEsMHgwMywweDQ5LDB4RkUsMHhGRSwweEVFLDB4
MzUsMHg0NCwweDUxLDB4MDIsMHg0OSwweENCLDB4RUYsMHhGOSwweEY5LAorICAgIDB4NjQsMHg1
MSwweDIzLDB4NTEsMHhGRCwweEQ1LDB4MzUsMHhBNSwweDQ0LDB4NTksMHgyMywweDQ5LDB4RUEs
MHhFMywweDdBLDB4N0EsCisgICAgMHg0MywweDUxLDB4MDMsMHg0OSwweEFGLDB4QTMsMHgwRiww
eDZGLDB4NDMsMHg1MSwweDAzLDB4NDksMHg4MywweDlDLDB4NUUsMHhGRCwKKyAgICAweDIzLDB4
NTEsMHhFMiwweDQ4LDB4RTgsMHg2OCwweEZDLDB4OTYsMHgyMywweDUxLDB4RTIsMHg0OCwweDM1
LDB4QTUsMHhBOSwweENFLAorICAgIDB4MDIsMHg0OSwweEUyLDB4NDgsMHg3MCwweDAyLDB4Qjgs
MHhGMCwweDQzLDB4NTEsMHhFMiwweDQ4LDB4RkYsMHhGNywweDJGLDB4QUQsCisgICAgMHhFOCww
eDgyLDB4ODMsMHg1OSwweDI1LDB4MEQsMHgwRCwweDBELDB4MjksMHg4QiwweEM4LDB4ODIsMHhF
QSwweDdBLDB4RTIsMHhGQSwKKyAgICAweEU5LDB4OEEsMHg4NywweDdBLDB4NjIsMHhFQiwweEZC
LDB4NTYsMHhBOCwweDdBLDB4NjcsMHg3MiwweEUyLDB4MkUsMHhCQSwweDdGLAorICAgIDB4QTcs
MHg4MiwweDY3LDB4NzIsMHhGRiwweEVFLDB4RUIsMHhGMSwweEE4LDB4N0EsMHg2NywweDdBLDB4
RkUsMHhEQSwweERBLDB4QUEsCisgICAgMHhDOCwweDgyLDB4NjcsMHg3MiwweDdGLDB4NUUsMHg1
OCwweEVCLDB4QTgsMHg3QSwweDY3LDB4NzIsMHhCRSwweEFCLDB4MkQsMHhCRiwKKyAgICAweDQ2
LDB4ODIsMHhBOCwweDdBLDB4RjYsMHhGNywweEZELDB4RkYsMHhBOCwweDdBLDB4NDYsMHg3Miww
eDhBLDB4QUUsMHhGRiwweEFCLAorICAgIDB4QTcsMHg3QSwweDY3LDB4NzIsMHhGRiwweDZCLDB4
NEIsMHhGRiwweDg3LDB4N0EsMHg0NiwweDcyLDB4QUIsMHhGQSwweEZBLDB4N0EsCisgICAgMHg2
NiwweDcyLDB4MjYsMHg3MiwweDJGLDB4QUEsMHg2QiwweEZGLDB4NjYsMHg3MiwweDA1LDB4NzIs
MHhBOCwweDhBLDB4OEIsMHg4MiwKKyAgICAweDY3LDB4N0EsMHg0NiwweDcyLDB4Q0QsMHgzNyww
eEQ1LDB4MTcsMHg4NywweDdBLDB4NDYsMHg3MiwweEIyLDB4QUYsMHhBRiwweEVGLAorICAgIDB4
ODcsMHg3QSwweDI2LDB4NzIsMHhDMiwweERGLDB4NkYsMHhGQiwweDQ2LDB4NzIsMHhFNSwweDYx
LDB4QjgsMHhGRSwweERFLDB4N0MsCisgICAgMHgwNiwweDZBLDB4QTQsMHg2MSwweERDLDB4NUEs
MHg1QSwweDZBLDB4MjUsMHg2QSwweDgzLDB4NTksMHg3RiwweEZGLDB4REQsMHgzQiwKKyAgICAw
eDQ2LDB4NzIsMHhBNCwweDU5LDB4RkQsMHg3NSwweDNCLDB4MDAsMHhBOCwweDdBLDB4MDUsMHg2
QSwweEQ1LDB4QjUsMHgwRiwweEVFLAorICAgIDB4ODcsMHg3QSwweDA1LDB4NkEsMHgyQiwweDJB
LDB4RTgsMHg1NiwweDg4LDB4N0EsMHgwNSwweDZBLDB4QTIsMHgyQywweEFGLDB4RjUsCisgICAg
MHg4NywweDdBLDB4MDUsMHg2QSwweDIyLDB4ODgsMHg4QiwweEZELDB4ODcsMHg3QSwweDI2LDB4
NkEsMHg4QSwweEFBLDB4QkIsMHhGRCwKKyAgICAweDY3LDB4NzIsMHgyNiwweDZBLDB4QTcsMHhC
OCwweDVBLDB4NzgsMHg4NywweDdBLDB4RTYsMHg2OSwweEFCLDB4RkUsMHhCRCwweDJFLAorICAg
IDB4NjcsMHg3MiwweDA2LDB4NkEsMHg2QSwweEJFLDB4RTAsMHg4MCwweEU2LDB4NjEsMHgwMyww
eDQxLDB4NzgsMHg1OCwweDc4LDB4NzgsCisgICAgMHhFMiwweDM4LDB4ODEsMHgzMCwweEQ4LDB4
ODgsMHhBMiwweEE4LDB4MDMsMHg0MSwweDgxLDB4MzAsMHhBRCwweEFGLDB4QUEsMHg4OCwKKyAg
ICAweDIzLDB4NDEsMHhFMywweDM4LDB4MDksMHgwOSwweEY3LDB4RjUsMHg2NCwweDQ5LDB4RTIs
MHgzOCwweDhCLDB4MkUsMHgyRCwweEI1LAorICAgIDB4NDQsMHg0OSwweEMyLDB4MzgsMHhGRSww
eEY4LDB4NTgsMHhGMCwweEUyLDB4MzgsMHhDMiwweDMwLDB4MDAsMHhFRSwweEVFLDB4QkYsCisg
ICAgMHgyNCwweDQxLDB4QzIsMHgzMCwweDBBLDB4QUIsMHhBRiwweDdELDB4MjMsMHgzOSwweEMy
LDB4MjgsMHg3OCwweEVBLDB4N0UsMHg3RiwKKyAgICAweEMyLDB4MjgsMHg2MiwweDIwLDB4QTIs
MHhBQSwweEFBLDB4RUEsMHhDMiwweDI4LDB4ODIsMHgyMCwweEVBLDB4NUIsMHg1RiwweDU1LAor
ICAgIDB4QTIsMHgyMCwweDYxLDB4MTgsMHgyQywweEJBLDB4QkEsMHhGRiwweEEyLDB4MjAsMHg2
MSwweDIwLDB4N0EsMHg3QSwweDc4LDB4N0YsCisgICAgMHg4MiwweDIwLDB4NjEsMHgyMCwweDU1
LDB4RDUsMHgzNywweDBCLDB4QTEsMHgyMCwweDYyLDB4MjAsMHhGNywweEY3LDB4RkUsMHhFQSwK
KyAgICAweEEyLDB4MjgsMHg2MSwweDIwLDB4NUYsMHhGRiwweDhCLDB4MDIsMHhDMiwweDI4LDB4
ODIsMHgyMCwweEJELDB4NUQsMHhCRiwweDdFLAorICAgIDB4QzMsMHgyOCwweDYxLDB4MjAsMHg3
QSwweEVBLDB4QUEsMHg4QSwweEEyLDB4MjgsMHg4MSwweDIwLDB4MDcsMHg3QywweDVFLDB4N0Es
CisgICAgMHhDMiwweDI4LDB4ODEsMHgyMCwweEFGLDB4QUYsMHhCNSwweEI1LDB4QzIsMHgyOCww
eDYxLDB4MjAsMHgyQSwweDIwLDB4QTgsMHhFQSwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4
QkYsMHhCQiwweEJGLDB4RDUsMHhDMiwweDI4LDB4QTIsMHgyOCwweDdBLDB4RUUsMHhENCwweDY3
LAorICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHg3RSwweDVGLDB4N0QsMHhBOSwweEUzLDB4MzAs
MHhBMiwweDI4LDB4RkIsMHgwQiwweDAzLDB4MjAsCisgICAgMHhFMywweDMwLDB4QzIsMHgyOCww
eEFCLDB4OEIsMHhBQiwweEY2LDB4RTMsMHgzMCwweDgyLDB4MjgsMHhFQSwweEZBLDB4RkEsMHhE
RSwKKyAgICAweEMyLDB4MzAsMHg4MSwweDI4LDB4QTAsMHhCOCwweDZGLDB4QkQsMHhFMywweDMw
LDB4QTIsMHgyOCwweEE5LDB4RUIsMHhFRCwweDY5LAorICAgIDB4RTMsMHgzMCwweEEyLDB4Mjgs
MHhFMywweEEzLDB4RkQsMHg3RCwweEMyLDB4MzAsMHhBMiwweDI4LDB4MzgsMHgzMCwweDNGLDB4
MEEsCisgICAgMHhFMywweDMwLDB4QTIsMHgzMCwweEJFLDB4QjYsMHhBRSwweDBBLDB4RTMsMHgz
OCwweEMyLDB4MzAsMHhGMCwweEUyLDB4RUEsMHhEMCwKKyAgICAweEMyLDB4MzgsMHhFMywweDMw
LDB4RkYsMHhERiwweEZFLDB4MkYsMHhFMywweDM4LDB4QTIsMHgyOCwweDIyLDB4RTAsMHhEQSww
eEZFLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHgzRSwweDlGLDB4RkYsMHhCNywweDIzLDB4
MzksMHhFMiwweDMwLDB4NUYsMHg1NywweEI1LDB4QjUsCisgICAgMHgwMywweDM5LDB4QzIsMHgz
MCwweERBLDB4QUEsMHgyQSwweDA4LDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGRiwweEJFLDB4QTQs
MHgwMCwKKyAgICAweDI0LDB4MzksMHhFMiwweDM4LDB4NzcsMHhGNywweEJGLDB4RjgsMHgyMyww
eDQxLDB4RTMsMHgzOCwweEZELDB4QTksMHhBQSwweDRCLAorICAgIDB4MjMsMHg0MSwweEMyLDB4
MzAsMHhGRiwweERBLDB4QzIsMHhBMiwweDQ0LDB4NDEsMHgwMywweDQxLDB4QTUsMHhBNSwweDhE
LDB4RkYsCisgICAgMHg4NSwweDQ5LDB4MjMsMHg0MSwweEVELDB4M0QsMHg5RiwweEJBLDB4ODUs
MHg1MSwweDQ0LDB4NDEsMHhBRCwweDBELDB4QkIsMHhCQSwKKyAgICAweDY0LDB4NDksMHgwMyww
eDM5LDB4NzYsMHhDRSwweEMwLDB4ODgsMHg4NCwweDQ5LDB4MjMsMHg0MSwweEY1LDB4NUYsMHg1
QiwweDYzLAorICAgIDB4NDQsMHg0OSwweEUyLDB4MzgsMHg3RSwweEFCLDB4OEEsMHg4MiwweDQz
LDB4NDksMHhDMSwweDM4LDB4N0QsMHhGRSwweEZBLDB4QTAsCisgICAgMHgyMywweDQxLDB4RTIs
MHgzOCwweDJGLDB4MjksMHhBRiwweEVGLDB4MjMsMHg0MSwweDAzLDB4MzksMHgyNCwweDBBLDB4
OEYsMHgyQiwKKyAgICAweDIzLDB4NDEsMHhFMiwweDM4LDB4QkYsMHgzOCwweDAwLDB4QjAsMHg0
MywweDQ5LDB4RTIsMHgzOCwweDJDLDB4RUEsMHhCNywweDJELAorICAgIDB4NjQsMHg0OSwweDAy
LDB4NDEsMHgyQSwweDJELDB4QUYsMHgwQSwweEE1LDB4NTEsMHg0MywweDQxLDB4REYsMHhFNyww
eDhBLDB4MDIsCisgICAgMHhFNSwweDU5LDB4MjIsMHg0MSwweEE3LDB4MkYsMHgwQiwweDJBLDB4
MjcsMHg2MiwweDg0LDB4NTEsMHg3RiwweEVGLDB4M0EsMHgyRiwKKyAgICAweDI3LDB4NjIsMHhD
NSwweDU5LDB4RkQsMHhFRiwweEE4LDB4MDAsMHgyNywweDYyLDB4QzUsMHg1OSwweEY3LDB4Nzks
MHhCRSwweEE4LAorICAgIDB4MkEsMHg4MywweEU2LDB4NTksMHgyRCwweDNELDB4MzUsMHgzNSww
eDMyLDB4QzUsMHhFRCwweDlCLDB4QkQsMHgyRCwweDI5LDB4MkQsCisgICAgMHg3MywweENELDB4
RDEsMHhCNCwweDU1LDB4RkYsMHhBMiwweDAwLDB4NTIsMHhDNSwweDRGLDB4QTQsMHg1RiwweEVB
LDB4QTAsMHg4MCwKKyAgICAweEIwLDB4QjQsMHhFQSwweDdBLDB4N0UsMHhGOCwweEEwLDB4MjAs
MHgyRiwweDlDLDB4MDcsMHg1QSwweDU1LDB4NTcsMHhGQSwweEEwLAorICAgIDB4Q0EsMHg3Miww
eDA3LDB4NUEsMHhBMCwweEE4LDB4NkEsMHg3MCwweDQ5LDB4NjIsMHhBNiwweDUxLDB4ODAsMHhB
QywweEJFLDB4RDcsCisgICAgMHg0OCwweDYyLDB4QTYsMHg1MSwweDBBLDB4QUIsMHg3RiwweDc3
LDB4NjgsMHg2MiwweEU2LDB4NTEsMHg4MCwweEVFLDB4RkYsMHhERiwKKyAgICAweDY4LDB4NjIs
MHgwNywweDUyLDB4MDIsMHgwMiwweEZCLDB4NzcsMHg4OSwweDYyLDB4MjcsMHg1QSwweDA4LDB4
MkEsMHhFOCwweERGLAorICAgIDB4QTksMHg2QSwweDY4LDB4NjIsMHgyQiwweEFBLDB4QUQsMHgy
NSwweENBLDB4NkEsMHg2OCwweDYyLDB4MjAsMHgwQiwweDBELDB4MEIsCisgICAgMHgwQSwweDdC
LDB4QTksMHg2QSwweEFGLDB4RTcsMHhCMywweDBBLDB4QUQsMHg4QiwweDBBLDB4NzMsMHg5NSww
eDM1LDB4MkQsMHgwQiwKKyAgICAweDRGLDB4QTQsMHhBRCwweDhCLDB4RjUsMHhCNSwweDNBLDB4
QUIsMHg0RSwweEE0LDB4Q0MsMHg5MywweEQ3LDB4RkEsMHhBQSwweDAyLAorICAgIDB4NEYsMHhB
NCwweEFDLDB4OEIsMHg3RSwweEVBLDB4QUEsMHg4MiwweENELDB4OTMsMHg2QiwweDhCLDB4QUEs
MHhCMCwweDk4LDB4ODgsCisgICAgMHg0RSwweEE0LDB4Q0QsMHg5MywweDBELDB4MkYsMHhBRiww
eDNELDB4NkYsMHhBQywweDhDLDB4OEIsMHg1RSwweDc4LDB4NzgsMHhFOCwKKyAgICAweDQ0LDB4
NDksMHgwMiwweDQ5LDB4NzgsMHg1NSwweEQ1LDB4RjUsMHgyMywweDQ5LDB4MDMsMHg0OSwweEVC
LDB4REEsMHhGNywweEM4LAorICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHgyOCwweEI3LDB4RDYs
MHhBRSwweDQzLDB4NTEsMHgwMywweDQ5LDB4RkYsMHgwQiwweEJGLDB4RjksCisgICAgMHg0Myww
eDUxLDB4RTIsMHg0MCwweEUyLDB4QTgsMHg3QSwweDlBLDB4NDMsMHg1MSwweEUyLDB4NDAsMHg5
NywweEE3LDB4MkYsMHgwQSwKKyAgICAweDY0LDB4NTEsMHgwMiwweDQ5LDB4RkIsMHhGQSwweEY2
LDB4RTgsMHg0MywweDUxLDB4MDMsMHg0OSwweDc3LDB4MEEsMHgyMCwweDVCLAorICAgIDB4NjQs
MHg1OSwweDAyLDB4NDksMHg5RiwweEJFLDB4QjgsMHhFRiwweDQzLDB4NTEsMHgwMywweDUxLDB4
MjAsMHgwMCwweDJDLDB4RUIsCisgICAgMHg0MywweDUxLDB4MjMsMHg1MSwweDI2LDB4RkUsMHg1
NiwweEYxLDB4NDMsMHg1MSwweDAyLDB4NDksMHg2QSwweEVBLDB4RkEsMHg1MiwKKyAgICAweDIz
LDB4NTEsMHgwMywweDQ5LDB4MEEsMHhDNywweDJGLDB4MDksMHhFMiwweDUwLDB4MjMsMHg0OSww
eEZFLDB4QkIsMHhBRCwweEVELAorICAgIDB4NDQsMHg1MSwweEUyLDB4NDgsMHhGRiwweEZELDB4
QUEsMHhBOCwweDIzLDB4NTEsMHhDMSwweDQwLDB4NkUsMHg3QSwweEVBLDB4RTgsCisgICAgMHgw
MiwweDQ5LDB4RTIsMHg0OCwweDM5LDB4MEIsMHg4QiwweENELDB4RTYsMHg2OSwweDAyLDB4NDks
MHhENSwweEQ1LDB4QjUsMHgyNSwKKyAgICAweDQ5LDB4OTMsMHhFNSwweDYxLDB4QUQsMHgyRCww
eEFCLDB4MkEsMHgwOCwweDhCLDB4QTcsMHg3QSwweEYwLDB4RkMsMHg3OCwweDdBLAorICAgIDB4
QzgsMHg4MiwweDY2LDB4NzIsMHhBOCwweEUwLDB4NkEsMHg3QSwweEE3LDB4N0EsMHg2NywweDdB
LDB4QUUsMHhBMiwweEZBLDB4MUYsCisgICAgMHhBNywweDdBLDB4NjYsMHg3MiwweEVFLDB4QTgs
MHg2NiwweEFBLDB4QTcsMHg4MiwweDY2LDB4NzIsMHhDMywweDcxLDB4N0QsMHg3NSwKKyAgICAw
eDg3LDB4N0EsMHg2NywweDcyLDB4MDIsMHhBMywweDIxLDB4MjMsMHhBNywweDdBLDB4NjYsMHg3
MiwweEJBLDB4QUIsMHgyOSwweERGLAorICAgIDB4QTcsMHg3QSwweDY2LDB4NzIsMHhCQSwweEFB
LDB4QjYsMHg3NywweEE4LDB4N0EsMHg2NiwweDdBLDB4MkYsMHhCRiwweEVFLDB4MkQsCisgICAg
MHhBOCwweDgyLDB4NDYsMHg3MiwweEJBLDB4RjIsMHg3OCwweDc4LDB4NjcsMHg3QSwweDQ2LDB4
NzIsMHhGMiwweEVCLDB4N0QsMHg2OSwKKyAgICAweDY2LDB4NzIsMHgyNiwweDZBLDB4RjcsMHhG
RiwweEY4LDB4RUIsMHg2NiwweDdBLDB4MjYsMHg2QSwweDJBLDB4ODksMHgwQiwweEJBLAorICAg
IDB4QTcsMHg3QSwweDI2LDB4NzIsMHhCRiwweEZGLDB4N0YsMHgwQSwweDA5LDB4OEIsMHgyNiww
eDcyLDB4RjUsMHhCRCwweEFELDB4MkEsCisgICAgMHg0QSwweDkzLDB4NDYsMHg3MiwweDU1LDB4
RkYsMHhBQSwweDJBLDB4MjksMHg4QiwweDQ2LDB4NzIsMHg1NSwweEVFLDB4QUEsMHhBMCwKKyAg
ICAweEE4LDB4N0EsMHhFNSwweDYxLDB4REYsMHhFQSwweEEwLDB4QjgsMHg2NywweDdBLDB4RTUs
MHg2OSwweDJCLDB4ODIsMHhGMCwweDU2LAorICAgIDB4NjcsMHg3MiwweEU1LDB4NjksMHhBQyww
eEZGLDB4RkYsMHhGNSwweDI1LDB4NzIsMHhDNSwweDYxLDB4RTgsMHhFQSwweEFBLDB4QUEsCisg
ICAgMHg0NiwweDcyLDB4QzQsMHg2MSwweDdGLDB4N0YsMHhCQSwweDhBLDB4NDYsMHg3MiwweEU1
LDB4NjEsMHhENywweERGLDB4RkIsMHgyOCwKKyAgICAweDY3LDB4NzIsMHgwNSwweDZBLDB4REQs
MHhGRCwweEY5LDB4ODMsMHg2NywweDdBLDB4MjYsMHg2QSwweDI5LDB4RjUsMHg1RCwweEZGLAor
ICAgIDB4ODcsMHg3QSwweDI2LDB4NkEsMHhCRiwweEI1LDB4QUYsMHgwQiwweDg3LDB4NzIsMHgy
NiwweDZBLDB4QUUsMHhGRSwweERGLDB4N0EsCisgICAgMHg4NywweDcyLDB4MjYsMHg2QSwweDdF
LDB4N0MsMHg1NywweDU3LDB4RTUsMHg1OSwweDIzLDB4NDEsMHg3OCwweDc4LDB4NzgsMHg3OCwK
KyAgICAweDIzLDB4NDEsMHhBMSwweDMwLDB4REUsMHhGRSwweERFLDB4RkMsMHgwNCwweDM5LDB4
QzIsMHgzOCwweEZCLDB4RjcsMHg2QiwweEU5LAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzgsMHhB
QiwweEZGLDB4RkQsMHg3NywweDIzLDB4NDEsMHhDMiwweDMwLDB4M0YsMHhCNywweEI3LDB4RkYs
CisgICAgMHg0NCwweDQxLDB4MDMsMHgzOSwweDZBLDB4N0EsMHg3RiwweDU1LDB4MDMsMHgzOSww
eEUyLDB4MzAsMHhCRiwweDIwLDB4RjgsMHgzNCwKKyAgICAweDAzLDB4MzksMHhBMiwweDI4LDB4
RkEsMHhGQywweDc4LDB4NzgsMHhDMiwweDI4LDB4ODEsMHgyMCwweEMwLDB4RTgsMHhGNywweDU1
LAorICAgIDB4QTIsMHgyOCwweDYxLDB4MjAsMHhFQSwweEU4LDB4RjgsMHhGQSwweDgyLDB4MjAs
MHg2MSwweDE4LDB4REIsMHg1QSwweDcyLDB4QzAsCisgICAgMHg4MiwweDIwLDB4NjEsMHgxOCww
eEQ1LDB4RjUsMHhFRiwweDhGLDB4QTIsMHgyMCwweDYxLDB4MTgsMHhGNSwweEU5LDB4QUIsMHhB
QiwKKyAgICAweEEyLDB4MjgsMHg2MSwweDIwLDB4QUIsMHhFRiwweDI3LDB4QUUsMHhDMiwweDI4
LDB4ODEsMHgyMCwweEZCLDB4OEYsMHhBRCwweEFGLAorICAgIDB4MDMsMHgzMSwweEEyLDB4Mjgs
MHhGNywweEU3LDB4N0QsMHhGRiwweEUzLDB4MzAsMHg4MSwweDIwLDB4N0UsMHhGRSwweEYyLDB4
QUEsCisgICAgMHhDMiwweDI4LDB4ODIsMHgyOCwweEZELDB4NUYsMHg1RSwweEI2LDB4QTIsMHgy
OCwweDgxLDB4MjAsMHhGRSwweDQwLDB4NzgsMHg1QSwKKyAgICAweEEyLDB4MjgsMHg2MSwweDIw
LDB4QUEsMHhBQywweDdBLDB4QUUsMHhBMiwweDI4LDB4NjEsMHgyMCwweDI4LDB4QTgsMHhGQSww
eEZBLAorICAgIDB4QTIsMHgyOCwweDYxLDB4MjAsMHgwMCwweDAyLDB4MkYsMHhBRiwweEMyLDB4
MjgsMHg4MSwweDI4LDB4QUIsMHg4RiwweDJGLDB4RkYsCisgICAgMHhDMiwweDI4LDB4ODEsMHgy
OCwweDAyLDB4QTgsMHg3QiwweDU1LDB4RTIsMHgzMCwweDgxLDB4MjgsMHg4QSwweEJFLDB4RTks
MHhCRiwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4OUIsMHgzQiwweDNFLDB4RkYsMHhDMiww
eDMwLDB4QTIsMHgyOCwweDVFLDB4REMsMHg3QywweDVGLAorICAgIDB4NjEsMHgzMCwweEMyLDB4
MjgsMHhGQiwweDc3LDB4RkYsMHg1RCwweDAzLDB4MzEsMHhDMiwweDI4LDB4N0QsMHhGNSwweDZE
LDB4NDMsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEZELDB4OEUsMHhBMiwweDgyLDB4MDQs
MHgzOSwweEMzLDB4MzAsMHhGNSwweEZGLDB4REYsMHhBRiwKKyAgICAweDI0LDB4MzksMHhFMyww
eDM4LDB4RjUsMHg4RCwweDI1LDB4RkYsMHgyNCwweDM5LDB4QzIsMHgzMCwweDVFLDB4N0UsMHg2
MCwweEU4LAorICAgIDB4RTMsMHgzMCwweEMyLDB4MzAsMHg3MiwweERELDB4RjcsMHhCNiwweEMz
LDB4MzgsMHhFMywweDMwLDB4RjYsMHhENywweEZELDB4RkYsCisgICAgMHgwMywweDM5LDB4QzIs
MHgzMCwweDJGLDB4MEIsMHhBQSwweEEzLDB4MjMsMHgzOSwweEUzLDB4MzgsMHhBRCwweDgyLDB4
QTEsMHgyRiwKKyAgICAweDIzLDB4MzksMHhFMiwweDMwLDB4QjgsMHhFQiwweEVDLDB4RjgsMHgy
MywweDM5LDB4RTIsMHgzMCwweDJBLDB4MDIsMHhBMywweERELAorICAgIDB4NDQsMHg0MSwweEMy
LDB4MzAsMHhGOCwweEZFLDB4N0YsMHg3RiwweDAzLDB4MzksMHhFMiwweDMwLDB4QUEsMHgxRiww
eDNGLDB4N0YsCisgICAgMHg0NCwweDQxLDB4RTIsMHgzOCwweDhGLDB4QUYsMHhCRiwweEQ1LDB4
NDQsMHg0MSwweEUyLDB4MzgsMHhGRSwweDdBLDB4RjgsMHhFRCwKKyAgICAweDQ0LDB4NDksMHgw
MywweDM5LDB4MjMsMHg4MywweEExLDB4RTksMHg4NSwweDQ5LDB4MDMsMHg0MSwweEFCLDB4MkQs
MHhCRiwweDVELAorICAgIDB4ODUsMHg1MSwweDQ0LDB4NDksMHhGQSwweEU5LDB4QUYsMHgwQSww
eDg1LDB4NTEsMHgyMywweDQxLDB4MDIsMHgyQSwweEVBLDB4RDgsCisgICAgMHg0NCwweDQ5LDB4
MDMsMHg0MSwweDA4LDB4MDAsMHg4MCwweEYyLDB4NjQsMHg0OSwweDAyLDB4MzksMHhGOCwweDUy
LDB4REUsMHg5RiwKKyAgICAweDIzLDB4NDEsMHhFMiwweDM4LDB4RkEsMHg3RSwweEY4LDB4RUMs
MHgyMywweDQxLDB4RTIsMHgzOCwweEEyLDB4QzksMHhGOSwweDZCLAorICAgIDB4NDMsMHg0MSww
eEUyLDB4MzgsMHhERSwweEJGLDB4RkYsMHhBMywweDQzLDB4NDEsMHgwMywweDQxLDB4MEQsMHhB
QSwweDhBLDB4QkYsCisgICAgMHg4NSwweDUxLDB4MDMsMHg0MSwweDIzLDB4MjIsMHhCQSwweEZE
LDB4QTUsMHg1MSwweDIyLDB4NDEsMHgwQSwweEVBLDB4NzcsMHg1NSwKKyAgICAweEM1LDB4NTks
MHgyMiwweDQxLDB4MEEsMHhBQSwweEFELDB4RkQsMHhFNiwweDYxLDB4NjMsMHg0OSwweDAyLDB4
MEYsMHhGNSwweEQ1LAorICAgIDB4MjcsMHg2MiwweDg0LDB4NTEsMHgyQSwweEJFLDB4REYsMHg3
NSwweDI3LDB4NjIsMHg4NCwweDUxLDB4MDAsMHg4OCwweEZCLDB4OTUsCisgICAgMHhFOSwweDdB
LDB4RTUsMHg1OSwweDM1LDB4MjUsMHgzNSwweEJELDB4MTIsMHhDNSwweDhDLDB4OTMsMHgyOSww
eDI5LDB4MjksMHgyRCwKKyAgICAweDczLDB4Q0QsMHgzMiwweEM1LDB4MDAsMHhBRSwweEFGLDB4
QkQsMHg3MywweENELDB4MTIsMHhCRCwweDZDLDB4RjgsMHhGQSwweENBLAorICAgIDB4NTIsMHhD
NSwweDkwLDB4QUMsMHg1RSwweDVFLDB4NzgsMHg3QSwweEIwLDB4QjQsMHgwRSwweDlDLDB4NUUs
MHhCQSwweEU4LDB4QUYsCisgICAgMHg2RiwweEE0LDB4NEMsMHg4MywweDVFLDB4RUEsMHhBOCww
eEEyLDB4MEUsMHg5QywweDY4LDB4NjIsMHg1NywweEE4LDB4MDAsMHgwMCwKKyAgICAweDBFLDB4
OUMsMHhFNywweDU5LDB4NTUsMHg3RiwweEU4LDB4MDAsMHhDRCwweDkzLDB4QzYsMHg1MSwweDU1
LDB4NTUsMHhGRiwweEE4LAorICAgIDB4NEMsMHg4MywweEU2LDB4NTEsMHg1NSwweDU1LDB4RkYs
MHgwMCwweDJCLDB4N0IsMHgwNywweDVBLDB4NzUsMHhERCwweEZGLDB4MDAsCisgICAgMHg2Qyww
eDgzLDB4MDYsMHg1MiwweEZELDB4RkYsMHhCRiwweDAwLDB4QUQsMHg4QiwweDY4LDB4NjIsMHhG
NSwweERGLDB4RUYsMHgwMCwKKyAgICAweDBELDB4OTQsMHhFQSwweDcyLDB4NzUsMHhGNSwweEFE
LDB4MkUsMHhFRCwweDkzLDB4NkIsMHg4MywweDNELDB4QUYsMHhCNywweDIwLAorICAgIDB4NEUs
MHhBNCwweENDLDB4OTMsMHhCRiwweDJGLDB4MkQsMHhBRiwweDZGLDB4QUMsMHgwRSwweDlDLDB4
MkUsMHg4QiwweDlBLDB4QTIsCisgICAgMHg2RiwweEE0LDB4MEUsMHhBNCwweDZBLDB4QTgsMHhG
QSwweEZFLDB4MkUsMHg5QywweDhCLDB4OEIsMHhGRSwweDVDLDB4RkUsMHhGOCwKKyAgICAweDJF
LDB4QTQsMHg4QywweDhCLDB4MkQsMHgyOSwweEFGLDB4MkYsMHg2RiwweEE0LDB4MkUsMHhBNCww
eDY3LDB4N0IsMHhFQSwweEFCLAorICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHgyRSwweEFGLDB4
M0UsMHgyQSwweDAzLDB4NTEsMHg0MywweDQ5LDB4RkEsMHhCRiwweEZGLDB4RkIsCisgICAgMHg0
MywweDUxLDB4MDMsMHg0OSwweEU3LDB4N0QsMHhGRiwweEVCLDB4NDMsMHg0OSwweDAzLDB4NDks
MHgyRSwweEY3LDB4N0QsMHhGQiwKKyAgICAweDQzLDB4NTEsMHgwMiwweDQ5LDB4RjYsMHhCQyww
eEJGLDB4QkYsMHg0MywweDUxLDB4MDIsMHg0OSwweEFBLDB4RUEsMHhFQiwweEVGLAorICAgIDB4
NjMsMHg1OSwweDAyLDB4NDksMHhFQSwweEFFLDB4MjcsMHhCRiwweDYzLDB4NTksMHgwMiwweDQ5
LDB4RkYsMHhFQiwweEFDLDB4QUIsCisgICAgMHg0MywweDUxLDB4MDIsMHg0OSwweEZFLDB4N0Ms
MHhDMiwweDA4LDB4NDMsMHg1MSwweEUyLDB4NDgsMHhCQiwweENELDB4QUIsMHhBQiwKKyAgICAw
eDY0LDB4NTksMHhFMiwweDQ4LDB4QUEsMHhBQiwweEY5LDB4NzcsMHgyMywweDUxLDB4MDIsMHg0
OSwweDUyLDB4RDQsMHhENywweDk1LAorICAgIDB4NDMsMHg1MSwweDAzLDB4NDksMHhGRCwweDNG
LDB4RkYsMHg1RiwweDQzLDB4NTEsMHgwMywweDQ5LDB4QjgsMHhFNywweEI3LDB4NTUsCisgICAg
MHgyMywweDQ5LDB4RTIsMHg0MCwweEEyLDB4QkYsMHhGMywweERBLDB4MjMsMHg1MSwweEUyLDB4
NDgsMHhGQywweDU2LDB4N0YsMHhBRiwKKyAgICAweDQzLDB4NTEsMHhFMiwweDQ4LDB4RDUsMHhE
NSwweEI1LDB4MkYsMHgwOSwweDhCLDB4MjMsMHg1MSwweEI1LDB4MkQsMHgwRiwweDAzLAorICAg
IDB4MjksMHg4QiwweEM4LDB4ODIsMHhCRCwweEU2LDB4NUMsMHg3QywweEU4LDB4ODIsMHg4Nyww
eDdBLDB4RjgsMHhDOCwweDY4LDB4RUEsCisgICAgMHhDNywweDgyLDB4ODcsMHg3QSwweDdELDB4
RkQsMHhBRCwweEJELDB4QTcsMHg3QSwweDY2LDB4NzIsMHhCNiwweDcyLDB4ODAsMHhDMCwKKyAg
ICAweEE3LDB4N0EsMHg2NiwweDcyLDB4RUEsMHg3QiwweEFFLDB4RUUsMHhBNywweDdBLDB4NDYs
MHg3QSwweEFBLDB4OEEsMHhFOCwweDIwLAorICAgIDB4QTcsMHg4MiwweDQ2LDB4NzIsMHhBQSww
eEFFLDB4MEEsMHgwRSwweEE3LDB4N0EsMHg2NiwweDcyLDB4RkIsMHhCRiwweEFBLDB4MEEsCisg
ICAgMHhBNywweDdBLDB4NjYsMHg3MiwweEZGLDB4QUYsMHhFQSwweEE4LDB4ODcsMHg3QSwweDY3
LDB4NzIsMHg4MCwweEMwLDB4OEEsMHhBRiwKKyAgICAweDg3LDB4N0EsMHg0NiwweDcyLDB4Njgs
MHhFNiwweDc2LDB4QUYsMHg2NywweDdBLDB4MDUsMHg2QSwweEFBLDB4NjgsMHhBOCwweDIyLAor
ICAgIDB4MDksMHg4QiwweDA1LDB4NkEsMHhGRCwweEZGLDB4RkQsMHgwRiwweDg5LDB4OUIsMHg0
NiwweDcyLDB4REQsMHhBRCwweDJCLDB4MDIsCisgICAgMHg4QSwweDlCLDB4QzgsMHg4MiwweEQ1
LDB4MkIsMHg4MCwweDAyLDB4OEEsMHg5QiwweDA4LDB4OEIsMHhGNSwweEFFLDB4OEUsMHg3OCwK
KyAgICAweDI5LDB4OEIsMHgwNSwweDZBLDB4ODAsMHgyMCwweEU4LDB4N0UsMHhDOCwweDgyLDB4
RTUsMHg2OSwweEEwLDB4RUEsMHhERiwweDU1LAorICAgIDB4NDYsMHg2QSwweEU2LDB4NjksMHhG
QywweEZGLDB4REQsMHhGRiwweDI2LDB4NkEsMHhFNSwweDYxLDB4RkUsMHhEQSwweEFBLDB4OEEs
CisgICAgMHgyNiwweDZBLDB4QzUsMHg1OSwweDBBLDB4QUEsMHhBQiwweERBLDB4NDYsMHg2QSww
eDg0LDB4NTEsMHgyQSwweDIwLDB4QTgsMHg1RiwKKyAgICAweDY3LDB4NzIsMHhBNSwweDU5LDB4
MjgsMHhBOCwweEVFLDB4NTUsMHg2NywweDcyLDB4QTUsMHg1OSwweDIwLDB4MEEsMHhGQiwweDU1
LAorICAgIDB4NjcsMHg3MiwweDg0LDB4NTEsMHgwMCwweDAwLDB4QkEsMHg1RCwweDg3LDB4NzIs
MHg4NCwweDUxLDB4MDAsMHgwMCwweEJBLDB4NTUsCisgICAgMHhBOCwweDdBLDB4NjQsMHg1MSww
eDAyLDB4QTgsMHhGRSwweDU1LDB4NjcsMHg3MiwweDQzLDB4NDksMHhBMCwweEE4LDB4RkYsMHg1
NSwKKyAgICAweDA2LDB4NjIsMHg0NCwweDQ5LDB4MDAsMHgwMCwweDJFLDB4RTUsMHhDNSwweDU5
LDB4MjMsMHg0OSwweEY4LDB4NzgsMHg3OCwweDc4LAorICAgIDB4NjUsMHg0OSwweEUzLDB4Mzgs
MHg1RiwweDdGLDB4QUEsMHhBQSwweDQzLDB4NDEsMHhFMywweDM4LDB4RkQsMHhFRiwweEZGLDB4
RjgsCisgICAgMHgyNCwweDQxLDB4QzIsMHgzMCwweEY3LDB4RTcsMHhBQywweEFBLDB4MDMsMHgz
OSwweEEyLDB4MzAsMHhBQSwweEE4LDB4RTgsMHhGQSwKKyAgICAweEUzLDB4MzgsMHhBMiwweDI4
LDB4QTgsMHhGQywweDdFLDB4NUYsMHgwMywweDM5LDB4ODEsMHgyMCwweEE4LDB4QUUsMHhENyww
eDdELAorICAgIDB4MDMsMHgzMSwweDgxLDB4MjAsMHhGQywweEZFLDB4RkYsMHg1NSwweEMyLDB4
MjgsMHg2MSwweDIwLDB4RkYsMHhFQSwweDc4LDB4NUUsCisgICAgMHg4MSwweDIwLDB4NjEsMHgx
OCwweEE4LDB4MjgsMHg4MCwweDc2LDB4QTIsMHgyMCwweDYxLDB4MTgsMHhFQSwweDdBLDB4N0Ys
MHhGRCwKKyAgICAweDgyLDB4MjAsMHg2MSwweDE4LDB4Q0QsMHgwQiwweDNCLDB4QkEsMHhDMiww
eDI4LDB4ODIsMHgyMCwweEZELDB4RkQsMHhCQiwweDJCLAorICAgIDB4RTMsMHgzMCwweDgxLDB4
MjAsMHhERCwweEY3LDB4QUIsMHgwQSwweEMyLDB4MjgsMHhBMiwweDI4LDB4QTcsMHgzNSwweDk1
LDB4QUMsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEFBLDB4QUIsMHhGOSwweDgwLDB4MDMs
MHgzMSwweEMyLDB4MjgsMHg3RCwweEVGLDB4QUUsMHgyRiwKKyAgICAweEUyLDB4MzAsMHhBMiww
eDI4LDB4NTcsMHg3MCwweEVDLDB4RTgsMHhFMywweDI4LDB4ODIsMHgyOCwweDVGLDB4QkYsMHhC
QiwweEUyLAorICAgIDB4QzIsMHgyOCwweDgxLDB4MjgsMHhGNSwweEQ2LDB4RUEsMHhBOCwweEEy
LDB4MjgsMHg4MSwweDIwLDB4RkEsMHhBQSwweDBBLDB4MEMsCisgICAgMHhDMiwweDMwLDB4NjEs
MHgyMCwweEU5LDB4OEIsMHgwMiwweDAyLDB4RTMsMHgzMCwweDgxLDB4MjgsMHg3RCwweDdCLDB4
RTgsMHhFMCwKKyAgICAweEMyLDB4MjgsMHg2MSwweDIwLDB4RjcsMHhCRiwweEFBLDB4OEEsMHhD
MiwweDMwLDB4QTIsMHgyOCwweEQ1LDB4NzUsMHg4RCwweEMzLAorICAgIDB4QzIsMHgzMCwweEEy
LDB4MjgsMHhCQiwweDFGLDB4REQsMHg3RiwweEMyLDB4MzAsMHhBMiwweDI4LDB4RjUsMHhFMiww
eEY3LDB4RTUsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDJGLDB4MEYsMHhCRCwweDg1LDB4
MDMsMHgzMSwweEMyLDB4MzAsMHhBQSwweDBBLDB4MEIsMHgzRCwKKyAgICAweDAzLDB4MzEsMHhD
MywweDMwLDB4QUEsMHgwOCwweDJBLDB4QjcsMHgyNCwweDM5LDB4RTMsMHgzMCwweDZCLDB4RkIs
MHhGRiwweEVELAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzgsMHhCRCwweEJCLDB4OTcsMHg1NSww
eDQ0LDB4NDEsMHhFMywweDM4LDB4RjMsMHhBQSwweEVFLDB4RkQsCisgICAgMHgwMywweDM5LDB4
RTMsMHgzMCwweEI1LDB4MEEsMHg4OCwweDhDLDB4MjQsMHg0MSwweEMzLDB4MzAsMHhFRiwweDJF
LDB4MkYsMHhCNywKKyAgICAweDI0LDB4MzksMHhDMiwweDMwLDB4QzksMHhBRSwweEI2LDB4RUEs
MHgwMywweDM5LDB4QzIsMHgzMCwweDFCLDB4RjIsMHgyMCwweDAwLAorICAgIDB4MjMsMHgzOSww
eEUyLDB4MzAsMHg3NiwweEJGLDB4M0YsMHhGOCwweEUyLDB4MzAsMHhDMywweDMwLDB4MjAsMHgy
RCwweEI2LDB4QTgsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDdBLDB4QUIsMHhBRiwweDZC
LDB4MDIsMHgzOSwweEMyLDB4MzAsMHhBRiwweDJFLDB4QjcsMHhGRiwKKyAgICAweDAzLDB4Mzks
MHhDMiwweDMwLDB4MEYsMHhBQSwweEFGLDB4NzMsMHgyNCwweDQxLDB4QzIsMHgzMCwweEFBLDB4
MEYsMHgwQSwweEE3LAorICAgIDB4NDMsMHg0MSwweEUzLDB4MzgsMHhGRiwweEVGLDB4RjYsMHhG
OCwweDQzLDB4NDEsMHgwMywweDQxLDB4RkYsMHgzRCwweDI2LDB4QTcsCisgICAgMHg4NSwweDUx
LDB4NDQsMHg0OSwweDJGLDB4OEIsMHgxRiwweERGLDB4ODQsMHg1MSwweDIzLDB4NDEsMHg1Qyww
eEU4LDB4RTMsMHhBMiwKKyAgICAweDQ0LDB4NDksMHgwMywweDQxLDB4RTIsMHhBMiwweDJDLDB4
QjQsMHg2NCwweDQ5LDB4MjMsMHg0MSwweERELDB4RUIsMHhBQiwweEFCLAorICAgIDB4NDQsMHg0
OSwweDAyLDB4MzksMHhGRSwweEQ3LDB4RkEsMHhGQywweDQ0LDB4NDEsMHgwMiwweDQxLDB4N0Ys
MHhFRiwweEFCLDB4OEIsCisgICAgMHg0MywweDQxLDB4RTMsMHgzOCwweEIyLDB4QUEsMHg4Miww
eDBBLDB4NDQsMHg0MSwweEUyLDB4MzgsMHhEQiwweEZFLDB4QUEsMHhFMCwKKyAgICAweDY0LDB4
NDksMHgwMywweDM5LDB4RDUsMHhGNSwweEJGLDB4MkQsMHg2NCwweDQ5LDB4MjMsMHg0MSwweEY3
LDB4NTcsMHhGQSwweEYwLAorICAgIDB4ODQsMHg0OSwweDIyLDB4NDEsMHg4RCwweEE3LDB4Mjks
MHhBQiwweDY0LDB4NTEsMHg0MywweDQxLDB4M0UsMHhERSwweDZGLDB4MkYsCisgICAgMHhBNSww
eDUxLDB4NDQsMHg0OSwweEJCLDB4RjksMHhBQiwweDhBLDB4QzUsMHg1OSwweDg0LDB4NTEsMHgy
RCwweEY1LDB4MEIsMHgwQiwKKyAgICAweDY4LDB4NzIsMHhBNCwweDUxLDB4MkIsMHgyRCwweEFE
LDB4M0YsMHhEMSwweEJDLDB4MEEsMHg4MywweDJGLDB4MkQsMHhBRCwweEFELAorICAgIDB4NzMs
MHhDRCwweDkwLDB4QjQsMHgyQSwweDJCLDB4RUQsMHhGRCwweDczLDB4Q0QsMHgxMSwweEJELDB4
RTIsMHg4QiwweDJCLDB4QTUsCisgICAgMHg3MywweENELDB4QjAsMHhBQywweDdBLDB4QjgsMHhB
MCwweDgwLDB4MTIsMHhCRCwweDZGLDB4QUMsMHg3NywweDVGLDB4REEsMHg4MCwKKyAgICAweEYx
LDB4QkMsMHg0RiwweEE0LDB4NUQsMHhCRiwweEFBLDB4MEEsMHhEMCwweEI0LDB4MkUsMHhBNCww
eDlELDB4QkYsMHhCQSwweDgwLAorICAgIDB4RDAsMHhCNCwweDJFLDB4OUMsMHg3RiwweEFBLDB4
QTIsMHgwOCwweEQwLDB4QjQsMHgyRSwweDlDLDB4RDUsMHhBQSwweDg4LDB4MDgsCisgICAgMHhE
MCwweEI0LDB4MkUsMHg5QywweDc3LDB4RkEsMHhBOCwweDgwLDB4QjAsMHhBQywweDBFLDB4OUMs
MHg1NSwweEVBLDB4QTgsMHgwQSwKKyAgICAweDhGLDB4QUMsMHgwRCwweDk0LDB4RDcsMHhGQSww
eEE4LDB4QUEsMHg2RiwweEE0LDB4MkUsMHg5QywweEY2LDB4QUEsMHhDMCwweEJBLAorICAgIDB4
NkYsMHhBNCwweDBFLDB4OUMsMHhGNSwweEUyLDB4RUEsMHhGQSwweDRGLDB4QTQsMHhFRCwweDkz
LDB4N0UsMHhGQywweEFFLDB4QTIsCisgICAgMHg2RiwweEE0LDB4MEUsMHg5QywweEJELDB4QUQs
MHg4RCwweEFGLDB4NkYsMHhBNCwweDJFLDB4QTQsMHg2OCwweDkzLDB4OEUsMHg3NywKKyAgICAw
eDZGLDB4QTQsMHgwRSwweDlDLDB4QkEsMHhGRiwweDhGLDB4M0QsMHgyRSwweEE0LDB4Q0MsMHg5
MywweDVDLDB4NkEsMHhFQSwweDgwLAorICAgIDB4MkUsMHhBNCwweENDLDB4OTMsMHgyNSwweDNE
LDB4OTUsMHgxNywweDkwLDB4QUMsMHgyRSwweEE0LDB4RUEsMHgyQSwweDI5LDB4QUIsCisgICAg
MHg0NCwweDUxLDB4MDIsMHg0OSwweEJDLDB4QUMsMHhFNiwweEI1LDB4MjMsMHg0OSwweEUyLDB4
NDgsMHgyOCwweDAwLDB4RjAsMHhGMCwKKyAgICAweDQzLDB4NTEsMHgwMiwweDQ5LDB4MkYsMHhC
NiwweDc3LDB4NzUsMHgyMywweDUxLDB4RTIsMHg0MCwweEE4LDB4QUYsMHgyRCwweDJELAorICAg
IDB4MjMsMHg1MSwweDQzLDB4NDksMHhBMCwweDJBLDB4MEIsMHg3OCwweDg0LDB4NTksMHgyMyww
eDUxLDB4RDUsMHg1NSwweEQ1LDB4REMsCisgICAgMHg2MywweDU5LDB4MDIsMHg0OSwweEFFLDB4
RTgsMHhGQSwweERBLDB4NDMsMHg1MSwweDAyLDB4NDksMHgzRSwweEI2LDB4NUEsMHhFMywKKyAg
ICAweDY0LDB4NTksMHgwMiwweDQ5LDB4MjUsMHhGQiwweEJGLDB4RUYsMHgyMywweDUxLDB4MDIs
MHg0OSwweEEyLDB4QzIsMHhBOCwweDJBLAorICAgIDB4MjMsMHg1MSwweDAyLDB4NDEsMHhGMiww
eDcyLDB4RkYsMHhERiwweDIzLDB4NDksMHgwMywweDQ5LDB4NTUsMHgxNiwweDM4LDB4MTcsCisg
ICAgMHgyMywweDQ5LDB4MDIsMHg0OSwweDVBLDB4RjAsMHgyOCwweEEwLDB4NDMsMHg0OSwweDAz
LDB4NDksMHg1NSwweDU1LDB4MTUsMHhGQiwKKyAgICAweDIzLDB4NDksMHhFMiwweDQ4LDB4RTIs
MHhBMiwweEE4LDB4RjEsMHgyMywweDQ5LDB4RTIsMHg0OCwweEI5LDB4QjMsMHhCQSwweDJBLAor
ICAgIDB4QzgsMHg4MiwweDAyLDB4NDksMHhGNSwweEI1LDB4MkQsMHgyRiwweDRBLDB4OTMsMHhB
NywweDdBLDB4QTksMHg4QiwweEEyLDB4OEEsCisgICAgMHgyOSwweDhCLDB4QzcsMHg4MiwweDc4
LDB4RDgsMHg3OCwweDVFLDB4RTgsMHg4MiwweEE3LDB4N0EsMHhGQSwweDU4LDB4NkEsMHhBQSwK
KyAgICAweEE3LDB4N0EsMHg2NiwweDcyLDB4M0MsMHhFMiwweDIyLDB4MDAsMHhDNywweDgyLDB4
NjYsMHg3MiwweDdCLDB4NkYsMHhBQiwweEFGLAorICAgIDB4QzcsMHg4MiwweDY2LDB4N0EsMHhG
QiwweEU5LDB4RUEsMHhGRSwweEE3LDB4ODIsMHg2NiwweDcyLDB4M0UsMHgzNiwweERGLDB4QjYs
CisgICAgMHhBNywweDdBLDB4ODcsMHg3QSwweEJELDB4MzUsMHhGRiwweERDLDB4ODcsMHg3QSww
eDY2LDB4NzIsMHgwOCwweDI4LDB4ODAsMHgwMCwKKyAgICAweEE4LDB4N0EsMHg0NiwweDcyLDB4
RUEsMHhCMiwweEZFLDB4RDcsMHg4NiwweDdBLDB4MjUsMHg2QSwweDgzLDB4RkEsMHhGQSwweDNF
LAorICAgIDB4RTgsMHg4QSwweDQ2LDB4NzIsMHhERCwweEVELDB4QUYsMHgyQSwweDRBLDB4OTMs
MHg0NywweDcyLDB4RDUsMHhCNywweDJFLDB4MDIsCisgICAgMHhBQiwweEEzLDB4QTgsMHg4Miww
eDNELDB4QUIsMHg4QSwweDAwLDB4QUEsMHhBMywweDQ5LDB4OTMsMHhBRiwweDhBLDB4QTIsMHg3
MiwKKyAgICAweDhBLDB4OUIsMHgyNywweDcyLDB4MDAsMHg4MCwweEU4LDB4N0UsMHg0OSwweDkz
LDB4QzUsMHg2MSwweEE4LDB4RkEsMHg1RiwweDU1LAorICAgIDB4NjYsMHg3MiwweEM0LDB4NjEs
MHhGOCwweDdGLDB4RjcsMHhERCwweDA2LDB4NkEsMHhDNSwweDYxLDB4Q0UsMHhBRCwweEI1LDB4
REYsCisgICAgMHgyNiwweDZBLDB4QzYsMHg2MSwweEFBLDB4QTMsMHhFQSwweERFLDB4MjYsMHg2
QSwweDIzLDB4NDksMHgwMCwweEEwLDB4N0EsMHg1RiwKKyAgICAweEU1LDB4NjEsMHgyMywweDQ5
LDB4RTgsMHg1RiwweDU1LDB4NTUsMHg2NCwweDUxLDB4MjMsMHg0OSwweDdBLDB4NUEsMHg1NSww
eDU1LAorICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHhBOSwweEJFLDB4QTgsMHhBRiwweDQzLDB4
NDksMHgyMywweDQxLDB4MDAsMHg4RSwweEM5LDB4Q0EsCisgICAgMHg2NCwweDQ5LDB4MjMsMHg0
OSwweEY1LDB4RUQsMHg1RCwweEYzLDB4NDMsMHg0OSwweDAzLDB4NDEsMHhDQSwweDZCLDB4RUUs
MHhBMiwKKyAgICAweDQzLDB4NDksMHhFMiwweDQwLDB4N0EsMHhCQiwweEZBLDB4RTgsMHg0Myww
eDQ5LDB4RTIsMHg0MCwweDcyLDB4RkEsMHg4RiwweDJGLAorICAgIDB4ODUsMHg1MSwweDAzLDB4
NDEsMHhBRCwweDA3LDB4QUYsMHhBQSwweDg1LDB4NTEsMHgyMywweDQxLDB4NzAsMHg2QywweEZC
LDB4RUEsCisgICAgMHg2NSwweDQ5LDB4RTMsMHgzOCwweDBCLDB4RUEsMHhCQSwweDVFLDB4NDQs
MHg0MSwweEUzLDB4MzgsMHhEOCwweEFFLDB4QTcsMHhERiwKKyAgICAweDI0LDB4NDEsMHhDMiww
eDMwLDB4MjgsMHhFQSwweDhBLDB4NUUsMHhFMywweDMwLDB4ODEsMHgyMCwweEE4LDB4NDgsMHg3
QSwweERGLAorICAgIDB4QTIsMHgyOCwweDgxLDB4MjAsMHg4MiwweDBCLDB4OEIsMHhDMiwweEEy
LDB4MjgsMHg4MSwweDIwLDB4NTAsMHg1NiwweDc2LDB4QTMsCisgICAgMHhBMiwweDIwLDB4ODEs
MHgyMCwweEU1LDB4RUYsMHhCQiwweEYwLDB4QTEsMHgyMCwweDYxLDB4MTgsMHhEQSwweDVBLDB4
NUEsMHg3QSwKKyAgICAweDQxLDB4MjAsMHg2MSwweDE4LDB4RkQsMHhERCwweDdGLDB4NzcsMHg4
MSwweDIwLDB4NDEsMHgxOCwweEFCLDB4M0IsMHgyRiwweDJCLAorICAgIDB4QTIsMHgyOCwweDYx
LDB4MTgsMHhCRiwweDNGLDB4QUYsMHhBQiwweEUzLDB4MjgsMHg4MiwweDIwLDB4QTMsMHhBQiww
eEZGLDB4RTcsCisgICAgMHgwMywweDMxLDB4QTIsMHgyOCwweDhGLDB4RUYsMHhENSwweDVGLDB4
MjQsMHgzOSwweEMyLDB4MjgsMHhCRiwweEJGLDB4MDksMHg4OSwKKyAgICAweDAzLDB4MzEsMHhD
MiwweDMwLDB4RjgsMHg5OCwweDVBLDB4NUMsMHgwMywweDM5LDB4QzIsMHgzMCwweEFGLDB4Rjcs
MHhFRSwweDgzLAorICAgIDB4RTIsMHgzMCwweEEyLDB4MjgsMHhGQSwweDVBLDB4NkUsMHhFMCww
eEMyLDB4MjgsMHg4MSwweDI4LDB4MjIsMHhBQSwweDlGLDB4REUsCisgICAgMHgwMywweDMxLDB4
QzIsMHgyOCwweDU1LDB4OTUsMHg5RCwweEI1LDB4MDMsMHgzMSwweEMyLDB4MjgsMHg1NSwweEY1
LDB4QjYsMHhBQywKKyAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4RkQsMHhGQSwweEZBLDB4QkUs
MHhFMywweDMwLDB4QTIsMHgyOCwweDdBLDB4N0MsMHhFRSwweEI2LAorICAgIDB4QzIsMHgzMCww
eDgxLDB4MjgsMHgwQiwweEFBLDB4RkEsMHhGOCwweEUzLDB4MjgsMHg4MSwweDI4LDB4RkIsMHhG
RiwweEZELDB4NzUsCisgICAgMHhBMiwweDI4LDB4ODEsMHgyOCwweDIwLDB4MjAsMHgyQSwweDBC
LDB4QTIsMHgyOCwweDgxLDB4MjAsMHgwMCwweEEwLDB4QTAsMHhDMiwKKyAgICAweEMyLDB4Mjgs
MHg4MSwweDI4LDB4MEIsMHhBQiwweEJGLDB4QUYsMHgwMywweDMxLDB4QTIsMHgyOCwweDNGLDB4
RkYsMHhGRiwweDdELAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHgzNCwweEFFLDB4RUIsMHhE
RiwweDAzLDB4MzksMHhBMiwweDI4LDB4QUEsMHhCRiwweEZGLDB4REQsCisgICAgMHhFMywweDMw
LDB4QTIsMHgyOCwweDAyLDB4QTcsMHhBRCwweEI2LDB4MjQsMHgzOSwweEMyLDB4MzAsMHhBRiww
eDhELDB4OEYsMHhFNSwKKyAgICAweDI0LDB4MzksMHhFMywweDM4LDB4RUYsMHhFQiwweEVCLDB4
N0YsMHgwMywweDM5LDB4QzIsMHgzMCwweEZGLDB4REEsMHhGQSwweEZGLAorICAgIDB4MjQsMHgz
OSwweEMyLDB4MzAsMHhBQiwweDJGLDB4QkYsMHhCRiwweDIzLDB4MzksMHhFMywweDM4LDB4MkIs
MHgzQSwweDNFLDB4RkUsCisgICAgMHgyMywweDM5LDB4RTIsMHgzMCwweEIwLDB4QTAsMHhFQSww
eEZBLDB4MjMsMHgzOSwweEMyLDB4MzAsMHhGRSwweEY4LDB4RkUsMHhGQiwKKyAgICAweDAzLDB4
MzksMHhDMSwweDMwLDB4QjcsMHgyQiwweEIzLDB4QUEsMHgyMywweDQxLDB4QzIsMHgzMCwweEFG
LDB4QUUsMHgyOSwweDhCLAorICAgIDB4MjMsMHg0MSwweEMyLDB4MzAsMHg1MiwweDc4LDB4QUMs
MHhBOCwweDAzLDB4MzksMHhBMiwweDMwLDB4MkIsMHg4RiwweEZBLDB4RjIsCisgICAgMHgyNCww
eDQxLDB4RTMsMHgzOCwweEZBLDB4N0EsMHg3RiwweEY3LDB4NjQsMHg0OSwweDAzLDB4NDEsMHhC
NSwweDI1LDB4MzUsMHgwNSwKKyAgICAweDg1LDB4NTEsMHgyMywweDQxLDB4RUYsMHhGRSwweDVD
LDB4NUYsMHg4NCwweDUxLDB4MjMsMHg0MSwweEEyLDB4MkIsMHhGRiwweDc1LAorICAgIDB4NDQs
MHg0OSwweDAzLDB4NDEsMHgyQywweEI0LDB4QjQsMHhGNiwweDQ0LDB4NDEsMHgwMywweDQxLDB4
MjAsMHgwMCwweDI4LDB4MkYsCisgICAgMHg0MywweDQxLDB4RTMsMHgzOCwweEEyLDB4QUEsMHg4
NiwweEZFLDB4NDQsMHg0MSwweDAzLDB4NDEsMHg4QSwweEVGLDB4M0YsMHhENywKKyAgICAweDQ0
LDB4NDEsMHgwMywweDM5LDB4MkUsMHhCRSwweEY0LDB4RjYsMHg2NCwweDQ5LDB4MDMsMHg0MSww
eDQyLDB4ODIsMHgwMywweEVELAorICAgIDB4QTUsMHg1MSwweDAzLDB4NDEsMHgyRCwweEFGLDB4
RUYsMHhGNSwweDg1LDB4NTEsMHgyMywweDQxLDB4QUEsMHg4OCwweEUyLDB4RjksCisgICAgMHhB
NSwweDUxLDB4NDMsMHg0MSwweEJGLDB4MkUsMHgyRiwweEE1LDB4QzUsMHg1MSwweDY0LDB4NDks
MHhENSwweEVBLDB4MEEsMHg4QSwKKyAgICAweEU1LDB4NTksMHg4NCwweDUxLDB4RUQsMHgzRCww
eDhCLDB4MEEsMHgyNiwweDYyLDB4QzUsMHg1OSwweERELDB4QkUsMHhGQiwweDM1LAorICAgIDB4
NDcsMHg2QSwweEM1LDB4NTksMHgzRiwweEFGLDB4QjYsMHhCNywweDBFLDB4QTQsMHg2NywweDZB
LDB4MEYsMHgwRiwweDI5LDB4MEQsCisgICAgMHhEMSwweEJDLDB4NEYsMHhBQywweDBCLDB4MkQs
MHhBRCwweEZELDB4MzIsMHhCRCwweEIwLDB4QjQsMHgyRiwweDNGLDB4RjUsMHhENSwKKyAgICAw
eDczLDB4QzUsMHhGMSwweEJDLDB4OEEsMHhCQSwweEQ3LDB4RDUsMHg1MywweEM1LDB4MTEsMHhC
RCwweEZFLDB4MkEsMHgyRiwweDM3LAorICAgIDB4NzMsMHhDRCwweDExLDB4QkQsMHg3NSwweEFG
LDB4QUEsMHg4MCwweDczLDB4QzUsMHhGMCwweEI0LDB4NTcsMHg3RSwweEFBLDB4MjIsCisgICAg
MHg1MiwweEM1LDB4QUYsMHhBQywweDVELDB4NUUsMHg1RSwweDdDLDB4RDAsMHhCNCwweDhGLDB4
QUMsMHgyQiwweDhCLDB4M0YsMHgxNSwKKyAgICAweEQwLDB4QjQsMHg2RiwweEFDLDB4QjIsMHhC
QSwweEY4LDB4N0EsMHhCMCwweEFDLDB4NEUsMHhBNCwweEU4LDB4RTAsMHhGQSwweDU2LAorICAg
IDB4OEYsMHhBQywweDJFLDB4QTQsMHhCQSwweEFCLDB4RUEsMHg3RCwweDZGLDB4QTQsMHgyRSww
eEE0LDB4M0YsMHhFQSwweEE5LDB4MjksCisgICAgMHg5MCwweEFDLDB4MkUsMHg5QywweDdCLDB4
N0UsMHhBQSwweDI4LDB4NkYsMHhBQywweEVELDB4OUIsMHhGRiwweDVGLDB4RUUsMHhCMCwKKyAg
ICAweDRGLDB4QTQsMHgwRSwweDlDLDB4M0IsMHhFQSwweERFLDB4NTYsMHg0RiwweEE0LDB4MEQs
MHg5QywweDM4LDB4M0MsMHgyMywweEZCLAorICAgIDB4NEUsMHhBNCwweDBFLDB4OUMsMHgwQSww
eDBBLDB4RUIsMHg3RiwweDZGLDB4QUMsMHgwRCwweDlDLDB4NjgsMHhFQSwweEJGLDB4RkYsCisg
ICAgMHgyRSwweEE0LDB4Q0QsMHg5MywweDM2LDB4QjgsMHhBQywweEUwLDB4OEYsMHhBQywweDJF
LDB4OUMsMHhBQiwweDBELDB4MzksMHgyNSwKKyAgICAweDIzLDB4NDksMHhFMiwweDQ4LDB4OUMs
MHhDMywweDZCLDB4MkYsMHgyMywweDQ5LDB4RTIsMHg0MCwweEI4LDB4MjMsMHhGRSwweEVBLAor
ICAgIDB4MjMsMHg1MSwweEUyLDB4NDAsMHhGRSwweEZGLDB4OUQsMHgzRCwweDQzLDB4NTEsMHhF
MiwweDQ4LDB4QUQsMHgyQiwweEFCLDB4ODgsCisgICAgMHg2MywweDUxLDB4MjMsMHg1MSwweEZB
LDB4MTYsMHg0RiwweDZELDB4NjQsMHg1OSwweDIzLDB4NTEsMHhGRSwweDY3LDB4RUYsMHhFRSwK
KyAgICAweDYzLDB4NTksMHgwMywweDQ5LDB4RjcsMHhGRiwweDdBLDB4RTgsMHg0MywweDUxLDB4
MDIsMHg0OSwweEIwLDB4RTAsMHhCQSwweEE5LAorICAgIDB4NDMsMHg1MSwweEUxLDB4NDAsMHhF
MiwweEVBLDB4QTIsMHhGOCwweDIzLDB4NTEsMHgwMiwweDQ5LDB4NjksMHgwQSwweDJELDB4NUQs
CisgICAgMHg0MywweDUxLDB4RTIsMHg0MCwweERFLDB4RkYsMHgyRSwweEJFLDB4MDIsMHg0OSww
eEUyLDB4NDAsMHhCQywweDI4LDB4MzgsMHhCMCwKKyAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4
QjAsMHgwQSwweDBBLDB4QkUsMHgwMywweDQ5LDB4MjIsMHg0MSwweDBBLDB4MDgsMHg4QSwweEEw
LAorICAgIDB4MjMsMHg0OSwweEMyLDB4NDAsMHhCRSwweEFGLDB4M0YsMHg5NywweDQ3LDB4NzIs
MHgwMiwweDQ5LDB4RDUsMHhGNSwweEI1LDB4MkQsCisgICAgMHgyOSwweDhCLDB4QTQsMHg2MSww
eDJELDB4MEIsMHgwMiwweDAwLDB4NEEsMHg5MywweEM4LDB4ODIsMHhBQSwweEVBLDB4N0UsMHhE
QywKKyAgICAweDA5LDB4OEIsMHhDOCwweDgyLDB4NzgsMHhBRiwweEVGLDB4NzcsMHhFOCwweDgy
LDB4QTcsMHg4MiwweEFBLDB4NTgsMHg1QiwweEZCLAorICAgIDB4RTgsMHg4MiwweDg3LDB4N0Es
MHg3RSwweEZCLDB4RjIsMHg4MCwweEM4LDB4ODIsMHg4NywweDdBLDB4RkUsMHg2QSwweDQyLDB4
QUIsCisgICAgMHhDOCwweDgyLDB4ODcsMHg3QSwweERGLDB4N0YsMHg1QiwweEY4LDB4QzgsMHg4
MiwweDg3LDB4N0EsMHg1NSwweEQ1LDB4QUYsMHhCQiwKKyAgICAweEM3LDB4N0EsMHg2NiwweDdB
LDB4QkEsMHhBMiwweDZBLDB4N0EsMHhBNywweDdBLDB4NDYsMHg3MiwweEUyLDB4RkEsMHhGQiww
eDdBLAorICAgIDB4NjYsMHg3QSwweDQ2LDB4NzIsMHg3NSwweDU2LDB4RDgsMHgxRSwweDZCLDB4
OUIsMHg0NSwweDcyLDB4RDUsMHhGNSwweEJELDB4MkIsCisgICAgMHhBQiwweEEzLDB4QzcsMHg4
MiwweEI1LDB4QUYsMHgyQSwweDAwLDB4Q0IsMHhBMywweDZBLDB4OUIsMHhBOSwweDhCLDB4Mjgs
MHhBOCwKKyAgICAweEFCLDB4QTMsMHgwOSwweDhCLDB4ODgsMHhBMCwweEU4LDB4NTgsMHg2QSww
eDlCLDB4RTUsMHg2OSwweDgwLDB4RTAsMHg3OCwweDVGLAorICAgIDB4ODcsMHg3QSwweEE1LDB4
NjEsMHhGOCwweDVFLDB4RDUsMHg1NywweEU2LDB4NjksMHhBNSwweDYxLDB4NzIsMHg3RSwweEZB
LDB4RUYsCisgICAgMHhFNiwweDYxLDB4QTQsMHg2MSwweDVFLDB4OUYsMHhBOSwweDJBLDB4MjYs
MHg2QSwweDgzLDB4NTksMHhGNywweEJGLDB4QUEsMHhDQSwKKyAgICAweEU1LDB4NjEsMHg0Myww
eDUxLDB4RTgsMHhGOCwweDdBLDB4RkIsMHg2NCwweDUxLDB4MDMsMHg0MSwweEZDLDB4RjYsMHhG
QSwweDhBLAorICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHg1RCwweDU3LDB4QkYsMHgyRiwweDY0
LDB4NDksMHgwMywweDQxLDB4RUQsMHg4MiwweDIwLDB4QjAsCisgICAgMHg2NCwweDQ5LDB4MjMs
MHg0MSwweEVGLDB4RUIsMHg3QywweEZFLDB4NDMsMHg0OSwweDAzLDB4NDEsMHg4QywweEVBLDB4
QkEsMHhDNiwKKyAgICAweDQ0LDB4NDksMHgwMywweDQxLDB4QUEsMHhDQSwweDdCLDB4NUQsMHg0
MywweDQxLDB4MDMsMHg0MSwweEZBLDB4RkEsMHg3OSwweDdGLAorICAgIDB4NDMsMHg0OSwweDAz
LDB4NDEsMHg3QSwweEZFLDB4NUYsMHhERCwweDQ0LDB4NDksMHhFMywweDM4LDB4MjcsMHhBQiww
eEVGLDB4QkUsCisgICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweDBBLDB4QUEsMHhBOSwweDhCLDB4
ODUsMHg1MSwweDIzLDB4NDEsMHhGMCwweEZGLDB4RjcsMHg1NSwKKyAgICAweDIzLDB4NDEsMHhD
MywweDMwLDB4RjgsMHhBQSwweEE4LDB4N0MsMHgwMywweDM5LDB4QTIsMHgzMCwweDJBLDB4QTgs
MHhCRSwweEQ3LAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhFQywweEZFLDB4N0EsMHhDMCww
eEEyLDB4MjgsMHg2MSwweDIwLDB4QTgsMHhGQSwweEY4LDB4RkEsCisgICAgMHhBMSwweDIwLDB4
NjAsMHgyMCwweDgyLDB4MDIsMHgyOSwweEFCLDB4QzIsMHgyOCwweDgxLDB4MjAsMHhFMiwweDc1
LDB4RjcsMHg1NSwKKyAgICAweEEyLDB4MjAsMHg4MSwweDIwLDB4RjAsMHg3QiwweDU4LDB4NTcs
MHg4MSwweDIwLDB4NjEsMHgxOCwweEU4LDB4QUMsMHhBQSwweENGLAorICAgIDB4QTIsMHgyMCww
eDQxLDB4MTgsMHhGRSwweEJFLDB4QTcsMHgyRiwweEEyLDB4MjAsMHg2MSwweDIwLDB4QUYsMHhC
QSwweEEwLDB4MDAsCisgICAgMHhBMiwweDI4LDB4ODEsMHgyMCwweDM1LDB4RUQsMHhDQSwweDA4
LDB4RTMsMHgzMCwweEEyLDB4MjgsMHhGNSwweEU1LDB4M0QsMHgyQSwKKyAgICAweDAzLDB4MzEs
MHhBMiwweDI4LDB4N0YsMHg3RiwweDc4LDB4RTAsMHgyNCwweDM5LDB4QTIsMHgyOCwweDBGLDB4
MDksMHgwOSwweDJGLAorICAgIDB4NDQsMHg0MSwweEMyLDB4MzAsMHg1QywweDU4LDB4RkMsMHg1
QywweDAzLDB4MzksMHhDMiwweDMwLDB4ODEsMHg4MCwweDhBLDB4RkEsCisgICAgMHgwMywweDM5
LDB4QTIsMHgyOCwweDVBLDB4RkEsMHhGQSwweEZFLDB4QzIsMHgzMCwweDgxLDB4MjgsMHg1Qiww
eDdFLDB4QkYsMHhBQSwKKyAgICAweEUyLDB4MzAsMHg4MSwweDIwLDB4MjUsMHg4QiwweEJGLDB4
RkYsMHgwMywweDMxLDB4QTEsMHgyOCwweEFFLDB4MkUsMHg5RCwweEQ1LAorICAgIDB4RTIsMHgz
MCwweEEyLDB4MjgsMHgyMiwweEEwLDB4RkEsMHg3RSwweEMyLDB4MzAsMHhBMiwweDI4LDB4MkEs
MHgyQSwweEVFLDB4QkUsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDVGLDB4NUYsMHg3QSww
eDVBLDB4QTIsMHgyOCwweDgyLDB4MjAsMHhGMiwweDYwLDB4QzAsMHgwMCwKKyAgICAweEEyLDB4
MjgsMHg4MSwweDIwLDB4MkUsMHg5RSwweDdGLDB4Q0IsMHhDMiwweDI4LDB4ODEsMHgyMCwweEVC
LDB4OEYsMHg4OSwweEEzLAorICAgIDB4QzIsMHgyOCwweEEyLDB4MjgsMHhGNywweDZELDB4Qzks
MHhFOSwweEMxLDB4MjgsMHg4MiwweDI4LDB4QUEsMHhEQSwweEZFLDB4RkUsCisgICAgMHhFMyww
eDMwLDB4QTIsMHgyOCwweDU3LDB4N0YsMHg2QiwweDU5LDB4QzIsMHgzMCwweEEyLDB4MjgsMHhB
QiwweEFGLDB4QzksMHg4OCwKKyAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4QUMsMHhBQywweEFC
LDB4OEIsMHhFMiwweDM4LDB4QTIsMHgyOCwweEFCLDB4M0YsMHhCRiwweEJGLAorICAgIDB4MDMs
MHgzOSwweEMyLDB4MzAsMHhBQSwweDVGLDB4N0YsMHg1NSwweEUzLDB4MzgsMHhBMiwweDMwLDB4
ODgsMHhFQSwweERBLDB4RkYsCisgICAgMHhFMywweDM4LDB4QzIsMHgzMCwweDNFLDB4NTksMHhG
RiwweDZELDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGMiwweEIyLDB4QjUsMHgwRCwKKyAgICAweDIz
LDB4MzksMHhFMywweDM4LDB4OEYsMHhCNywweEZFLDB4OEYsMHgyMywweDM5LDB4QzMsMHgzMCww
eEY4LDB4QUEsMHhCRSwweEVCLAorICAgIDB4MDIsMHg0MSwweEUzLDB4MzAsMHg1NSwweDdGLDB4
REYsMHhGRCwweDIzLDB4NDEsMHhFMiwweDMwLDB4MDksMHgyRiwweDNGLDB4QUYsCisgICAgMHgy
NCwweDQxLDB4RTIsMHgzOCwweEU4LDB4RUMsMHg3NywweDRELDB4MDMsMHgzOSwweEMyLDB4MzAs
MHhBQywweEU3LDB4NkIsMHg3RiwKKyAgICAweDIzLDB4NDEsMHhDMiwweDMwLDB4QUEsMHgyRiww
eDNELDB4RDUsMHg2NCwweDQ5LDB4RTMsMHgzOCwweDJGLDB4QUEsMHgwMywweDBGLAorICAgIDB4
QTUsMHg1MSwweDQzLDB4NDEsMHg1QiwweDYwLDB4RkUsMHhBQSwweDY0LDB4NDksMHgwMywweDQx
LDB4RkIsMHhEQSwweEE4LDB4QkMsCisgICAgMHg0NCwweDQ5LDB4QzIsMHgzOCwweEFGLDB4RkUs
MHhENCwweEZBLDB4NDQsMHg0MSwweEUyLDB4MzgsMHgyQiwweDJGLDB4RUYsMHg3RiwKKyAgICAw
eDQ0LDB4NDEsMHhDMiwweDM4LDB4RkMsMHg1RSwweEY3LDB4RUYsMHgwMywweDM5LDB4QzIsMHgz
OCwweEJBLDB4RkYsMHg3QSwweEUyLAorICAgIDB4MjQsMHg0MSwweEUzLDB4MzgsMHhFQSwweDdG
LDB4REQsMHhGRiwweDIzLDB4NDEsMHhFMywweDM4LDB4ODksMHg1RCwweDVGLDB4Q0QsCisgICAg
MHgwMywweDM5LDB4QzIsMHgzMCwweDhBLDB4RkYsMHhGRiwweEFBLDB4NDMsMHg0MSwweEUyLDB4
MzgsMHgzNywweDI3LDB4RUQsMHhBRCwKKyAgICAweDY0LDB4NDksMHgwMiwweDQxLDB4QTgsMHhF
QiwweEVGLDB4RjUsMHhBNCwweDUxLDB4MjMsMHg0MSwweDhCLDB4MkUsMHg3QiwweERGLAorICAg
IDB4QzUsMHg1MSwweDQzLDB4NDEsMHgyQSwweEFGLDB4RUIsMHg1RCwweEU2LDB4NjEsMHg2Myww
eDQ5LDB4MEEsMHhBQSwweEZGLDB4RDUsCisgICAgMHhFNiwweDYxLDB4NDMsMHg0OSwweDIwLDB4
QkIsMHhERiwweERGLDB4RUQsMHg5QiwweDA2LDB4NjIsMHgyRiwweDI5LDB4MkQsMHgyRCwKKyAg
ICAweDhGLDB4QUMsMHhFRCwweDlCLDB4MEIsMHhBQSwweEE5LDB4QUIsMHhEMCwweEI0LDB4NEUs
MHhBQywweDJFLDB4QUYsMHgzNywweERELAorICAgIDB4RjEsMHhCQywweDkwLDB4QUMsMHgwMCww
eDAwLDB4QUIsMHhCRCwweDUyLDB4QzUsMHhCMCwweEI0LDB4MkUsMHg5RiwweDU3LDB4RkIsCisg
ICAgMHg3MywweENELDB4RjEsMHhCNCwweDgyLDB4MDIsMHhBRCwweEI1LDB4NzMsMHhDNSwweDMy
LDB4QzUsMHhGRCwweEQ2LDB4N0UsMHhBOSwKKyAgICAweDUyLDB4QzUsMHhCMCwweEI0LDB4NUEs
MHg3QSwweEU4LDB4QTgsMHhGMSwweEJDLDB4NkYsMHhBQywweEY3LDB4RDcsMHhGRSwweDU4LAor
ICAgIDB4OTAsMHhBQywweDRGLDB4QTQsMHgwRiwweEZBLDB4NkEsMHhGOCwweDhGLDB4QUMsMHgy
RSwweEE0LDB4RUEsMHg2RiwweDZBLDB4M0EsCisgICAgMHg2RiwweEFDLDB4MEUsMHg5QywweEZG
LDB4RkQsMHhBRSwweEE4LDB4NEUsMHhBNCwweDBELDB4OUMsMHgyQSwweDcyLDB4RkEsMHhBMCwK
KyAgICAweDkwLDB4QUMsMHgyRSwweEE0LDB4MkUsMHhBMywweEE1LDB4QkYsMHg5MCwweEFDLDB4
MEQsMHg5QywweDlBLDB4ODIsMHgwQSwweDBBLAorICAgIDB4OTAsMHhBQywweDJFLDB4OUMsMHg1
RiwweEZCLDB4QTIsMHhBOCwweDZGLDB4QUMsMHgwRCwweDlDLDB4RUYsMHhERSwweERFLDB4QkMs
CisgICAgMHg0RSwweEE0LDB4MEUsMHg5QywweEZGLDB4RUUsMHhBOCwweDAwLDB4NEYsMHhBNCww
eEVELDB4OUIsMHgyQSwweDhBLDB4Q0UsMHg2MCwKKyAgICAweDRFLDB4QTQsMHgwRSwweDlDLDB4
N0YsMHg1RiwweEI4LDB4M0YsMHg2RiwweEFDLDB4MEUsMHg5QywweDA5LDB4MjksMHhBOSwweEFE
LAorICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHhBMywweDM1LDB4RkUsMHhGNiwweDQzLDB4NTEs
MHhDMiwweDQwLDB4RkEsMHhERSwweEFELDB4MkIsCisgICAgMHg0MywweDUxLDB4RTIsMHg0MCww
eEFELDB4M0YsMHgwQiwweDAyLDB4NjQsMHg1OSwweDIzLDB4NTEsMHhCRCwweDhBLDB4MkEsMHhB
QiwKKyAgICAweDg0LDB4NTksMHgwMiwweDQ5LDB4RkUsMHhGNiwweEZDLDB4RUEsMHg2NCwweDUx
LDB4MjIsMHg1MSwweEJGLDB4QjcsMHgxNSwweEY3LAorICAgIDB4NjMsMHg1OSwweDIzLDB4NTEs
MHhEMCwweEI4LDB4REEsMHhGRiwweDQzLDB4NTEsMHgyMywweDQ5LDB4NTMsMHg2MywweDY4LDB4
N0UsCisgICAgMHgyMywweDQ5LDB4MDMsMHg0OSwweEI4LDB4QUYsMHgzMSwweEFGLDB4MjMsMHg0
OSwweDAyLDB4NDksMHhENywweDk3LDB4MjQsMHg4QywKKyAgICAweDIzLDB4NDksMHhFMiwweDQ4
LDB4OTAsMHhBMiwweEE4LDB4QUEsMHgyMywweDQ5LDB4RTIsMHg0MCwweDc2LDB4QkEsMHhBMiww
eDBBLAorICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHhGMywweEYyLDB4RjAsMHhCOCwweDQ0LDB4
NTEsMHhFMiwweDQwLDB4RDcsMHhGRiwweENGLDB4RTgsCisgICAgMHhBNCwweDU5LDB4MDMsMHg0
OSwweDU1LDB4NTUsMHhENSwweDE1LDB4QUMsMHhBMywweDQzLDB4NTEsMHhBNSwweDJGLDB4ODMs
MHgwQSwKKyAgICAweDQ5LDB4OTMsMHgwOCwweDhCLDB4NUIsMHg1RSwweDVFLDB4NTYsMHgwOCww
eDhCLDB4QzgsMHg4MiwweEQ4LDB4REEsMHgwMiwweDAzLAorICAgIDB4RTgsMHg4QSwweEM4LDB4
ODIsMHhGRSwweEZFLDB4NDAsMHg2QiwweEM3LDB4ODIsMHhBNywweDgyLDB4QzAsMHg4OCwweEM5
LDB4RUUsCisgICAgMHhDNywweDgyLDB4QTcsMHg3QSwweDAwLDB4RUMsMHhGOSwweDFBLDB4Qzcs
MHg4MiwweDg3LDB4N0EsMHgxQiwweDg4LDB4QTAsMHgwMCwKKyAgICAweEM3LDB4ODIsMHg4Niww
eDdBLDB4RUYsMHg5RSwweERBLDB4REMsMHhFNywweDgyLDB4ODYsMHg3QSwweEY3LDB4NzcsMHg1
NCwweDVGLAorICAgIDB4QTcsMHg4MiwweDQ1LDB4N0EsMHhFOCwweEZCLDB4N0YsMHhGRSwweEU4
LDB4OEEsMHg0NSwweDcyLDB4NTUsMHhGNSwweEJGLDB4MkYsCisgICAgMHhBQiwweEEzLDB4NjYs
MHg3QSwweEQ1LDB4QjUsMHgyQiwweDAyLDB4Q0IsMHhBMywweDI5LDB4OTMsMHhBNSwweEEzLDB4
MDAsMHgwMCwKKyAgICAweENCLDB4QTMsMHg2QSwweDlCLDB4MkIsMHgwQSwweDAyLDB4NzgsMHhD
QiwweEEzLDB4QTcsMHg3QSwweDgwLDB4QTAsMHhFOCwweDVFLAorICAgIDB4NDksMHg5MywweDA2
LDB4NkEsMHhFMCwweDdFLDB4NUYsMHg1NywweDI3LDB4NzIsMHg4NCwweDU5LDB4QTgsMHhFRSww
eEZFLDB4NUUsCisgICAgMHhDNSwweDYxLDB4NjQsMHg1OSwweDI4LDB4RTgsMHhBQiwweEE3LDB4
MDYsMHg2QSwweEE0LDB4NTksMHhFRiwweEJELDB4OUQsMHgzNSwKKyAgICAweDA2LDB4NkEsMHhD
NSwweDYxLDB4MEIsMHg2QSwweDdCLDB4NTgsMHgwNiwweDZBLDB4QTUsMHg1OSwweEM4LDB4RUEs
MHg2QSwweDVDLAorICAgIDB4QTUsMHg1OSwweDQ0LDB4NDksMHg0OCwweEZDLDB4RUMsMHg3Qyww
eDY0LDB4NTEsMHg0NCwweDQ5LDB4QUQsMHhGMiwweEQwLDB4RjUsCisgICAgMHg2NCwweDQ5LDB4
MjMsMHg0OSwweEZBLDB4NUMsMHhGNywweEFFLDB4NjQsMHg0OSwweEUyLDB4NDAsMHhBQSwweEFC
LDB4QUUsMHhGQywKKyAgICAweDQzLDB4NDksMHgwMywweDQxLDB4QUEsMHhBQSwweEVBLDB4N0Es
MHg0MywweDQ5LDB4MDIsMHg0MSwweDBBLDB4Q0IsMHhFQiwweEZBLAorICAgIDB4NDMsMHg0OSww
eDAzLDB4NDEsMHg1QSwweEVGLDB4RkYsMHg3RiwweDI0LDB4NDksMHhFMywweDQwLDB4OEUsMHhF
RiwweEFGLDB4QUYsCisgICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweDlGLDB4QUUsMHgzQSwweEZF
LDB4NDMsMHg0MSwweEUzLDB4NDAsMHgxRiwweEI3LDB4QkYsMHhFRiwKKyAgICAweDY0LDB4NDks
MHgwMywweDQxLDB4QzIsMHhFMiwweEZCLDB4RkEsMHg0NCwweDQ5LDB4RTIsMHgzOCwweEY4LDB4
RkMsMHg1RSwweDc1LAorICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHhGOCwweEI4LDB4REIsMHhG
RCwweEMyLDB4MzAsMHhBMiwweDMwLDB4M0UsMHgzRSwweDJDLDB4OEEsCisgICAgMHhFMywweDMw
LDB4QzIsMHgzMCwweEVCLDB4REYsMHg4OSwweDgzLDB4QzIsMHgyOCwweDYxLDB4MjAsMHhGRSww
eEQ4LDB4RDgsMHhGOCwKKyAgICAweDgxLDB4MjAsMHg2MSwweDE4LDB4MDAsMHgyOCwweDI4LDB4
QTAsMHg4MSwweDIwLDB4NjEsMHgxOCwweDI4LDB4QTgsMHhBQSwweENCLAorICAgIDB4ODEsMHgy
MCwweDYxLDB4MTgsMHg4MCwweEU4LDB4RkYsMHg1NSwweDgyLDB4MjAsMHg2MSwweDE4LDB4RUIs
MHgyQiwweDg5LDB4MzUsCisgICAgMHg4MiwweDIwLDB4NjEsMHgxOCwweDBBLDB4MEYsMHgyOCww
eDA4LDB4QTIsMHgyOCwweDgyLDB4MTgsMHgyMiwweDAxLDB4MDIsMHg4MiwKKyAgICAweEEyLDB4
MjgsMHg4MiwweDIwLDB4MEEsMHg4QiwweEFGLDB4RkEsMHhFMywweDMwLDB4ODEsMHgyOCwweDI4
LDB4QTIsMHhGRiwweDk3LAorICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHg4MCwweDhGLDB4OEQs
MHhBRiwweDI0LDB4MzksMHhDMiwweDMwLDB4MzUsMHhCNywweEI1LDB4NTUsCisgICAgMHgwMyww
eDM5LDB4QTIsMHgyOCwweEYwLDB4RjAsMHg3RSwweERBLDB4RTIsMHgzOCwweEEyLDB4MzAsMHhG
MiwweEUyLDB4RUIsMHg2MCwKKyAgICAweDA0LDB4MzksMHhBMiwweDI4LDB4RkUsMHhFQSwweDhG
LDB4QjUsMHgwMywweDM5LDB4QTIsMHgyOCwweEZGLDB4RUYsMHhBMiwweEEyLAorICAgIDB4MDIs
MHgzMSwweDgwLDB4MjgsMHg3RiwweDdFLDB4QjgsMHhBOCwweEMyLDB4MzAsMHhBMSwweDI4LDB4
OUQsMHhENSwweDdGLDB4RTgsCisgICAgMHhDMiwweDI4LDB4ODEsMHgyMCwweEY4LDB4RUUsMHg3
QSwweEUwLDB4RTMsMHgyOCwweDgxLDB4MjgsMHhGRiwweEZGLDB4QjUsMHhGNSwKKyAgICAweEMy
LDB4MjgsMHg4MiwweDIwLDB4RTAsMHg2OCwweDZBLDB4QUUsMHhDMiwweDMwLDB4QTIsMHgyOCww
eEQ1LDB4QjUsMHhFNSwweEE5LAorICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHg3NSwweDU1LDB4
QkQsMHhGRSwweEUzLDB4MzAsMHg4MSwweDI4LDB4RkYsMHhGNywweEJGLDB4OEIsCisgICAgMHhD
MiwweDMwLDB4QTIsMHgyOCwweDc1LDB4RjQsMHhFMCwweDVGLDB4QzIsMHgyOCwweDgxLDB4MjAs
MHhGNiwweDhGLDB4ODIsMHhFQSwKKyAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4MkIsMHhBQSww
eDgxLDB4REIsMHhFMywweDMwLDB4QTIsMHgyOCwweEZCLDB4MkYsMHgzQSwweDU2LAorICAgIDB4
RTIsMHgzMCwweEEyLDB4MjgsMHhFRiwweEY1LDB4MzcsMHhBRiwweDAzLDB4MzksMHhDMiwweDMw
LDB4NTUsMHg2NSwweENCLDB4QUYsCisgICAgMHhFMiwweDMwLDB4QTIsMHgyOCwweEJCLDB4RjUs
MHhFRiwweEY4LDB4RTIsMHgzMCwweEEyLDB4MzAsMHhGRiwweEFBLDB4QTMsMHhBOCwKKyAgICAw
eDAzLDB4MzksMHhDMiwweDMwLDB4RTksMHhGOSwweDdGLDB4REQsMHg0NCwweDQxLDB4QzIsMHgz
MCwweEI1LDB4M0QsMHgyRiwweEJGLAorICAgIDB4NDQsMHg0MSwweDAzLDB4MzksMHg2RiwweEFB
LDB4OEUsMHgwOSwweDQ0LDB4NDEsMHhFMywweDM4LDB4RkIsMHg2QiwweEVBLDB4RTIsCisgICAg
MHgwMywweDM5LDB4QzIsMHgzMCwweEFCLDB4ODcsMHgzRiwweEJCLDB4MjMsMHgzOSwweDAyLDB4
MzksMHhFOSwweDY5LDB4NTksMHg0MiwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4NjgsMHhC
OCwweDBFLDB4QUMsMHgwMywweDM5LDB4QzIsMHgzMCwweERGLDB4QkUsMHg5QywweENDLAorICAg
IDB4MDMsMHgzOSwweEEyLDB4MzAsMHg3RCwweEY3LDB4RUIsMHhGMywweDY0LDB4NDksMHhDMiww
eDMwLDB4MEQsMHgzRCwweDJELDB4MkYsCisgICAgMHhDNSwweDU5LDB4NjQsMHg0OSwweDczLDB4
RTgsMHhFQiwweDhFLDB4ODUsMHg1MSwweDAzLDB4NDEsMHhEQSwweDdBLDB4RDAsMHhBOCwKKyAg
ICAweDI0LDB4NDEsMHhDMiwweDM4LDB4QTAsMHg4MiwweDYwLDB4RUEsMHgwMywweDM5LDB4QzIs
MHgzMCwweEUwLDB4RTIsMHhBOSwweDI1LAorICAgIDB4MDMsMHg0MSwweEUyLDB4MzAsMHgzNyww
eDhGLDB4RjksMHhGNSwweDQ0LDB4NDEsMHhFMywweDM4LDB4RTUsMHhBOSwweDI5LDB4MEIsCisg
ICAgMHgyMywweDM5LDB4RTIsMHgzOCwweEFBLDB4RUEsMHg3OCwweEU4LDB4MjMsMHgzOSwweEUy
LDB4MzgsMHg5NSwweDk3LDB4QkYsMHhGQiwKKyAgICAweDI0LDB4NDEsMHhDMiwweDMwLDB4Qjcs
MHhCRSwweEZGLDB4MkIsMHg2NCwweDQ5LDB4RTMsMHgzOCwweEU1LDB4RUYsMHhBQiwweDJBLAor
ICAgIDB4ODUsMHg0OSwweDIzLDB4NDEsMHhGRiwweEY1LDB4MkIsMHgwQSwweDg0LDB4NDksMHg0
NCwweDQ5LDB4NUYsMHg4QiwweDAxLDB4OEEsCisgICAgMHg2NCwweDQ5LDB4MjMsMHg0MSwweEUy
LDB4NjgsMHhFMiwweDA4LDB4RTYsMHg1OSwweDQ0LDB4NDksMHhGRCwweDdGLDB4RUYsMHgwQiwK
KyAgICAweEM1LDB4NTksMHg2NCwweDQ5LDB4OTYsMHhGNSwweEEyLDB4MEMsMHhBQywweDkzLDB4
QTQsMHg1MSwweDJELDB4M0QsMHhBRCwweEFELAorICAgIDB4NkYsMHhBQywweENELDB4OTMsMHg4
QSwweDg5LDB4QTksMHg4RCwweDZGLDB4QUMsMHgyRSwweEE0LDB4OEEsMHgzQSwweDI3LDB4QTUs
CisgICAgMHhCMCwweEI0LDB4MkUsMHhBNCwweDBBLDB4QUEsMHhCRiwweDVGLDB4MzEsMHhCRCww
eDRGLDB4QTQsMHgyMiwweDJBLDB4QUQsMHhGNSwKKyAgICAweDUyLDB4QzUsMHhEMCwweEI0LDB4
QUYsMHhBQSwweEEyLDB4ODksMHgzMiwweEM1LDB4RDAsMHhCNCwweDBBLDB4MDAsMHg2RSwweEY4
LAorICAgIDB4NTIsMHhDNSwweEQwLDB4QjQsMHhFOCwweEFBLDB4RkYsMHg3RiwweEQwLDB4QjQs
MHg2RiwweEFDLDB4NzgsMHhGOCwweEU4LDB4QUUsCisgICAgMHhCMCwweEFDLDB4NkYsMHhBQyww
eDdGLDB4RUIsMHhCRSwweEFBLDB4QjAsMHhCNCwweDRFLDB4QTQsMHhGNSwweEZFLDB4QjIsMHhF
MCwKKyAgICAweDhGLDB4QUMsMHg0RiwweEE0LDB4N0EsMHg3QSwweEJELDB4REQsMHg2RiwweEFD
LDB4MkUsMHhBNCwweDlFLDB4MkUsMHgyOCwweDJBLAorICAgIDB4OTAsMHhBQywweDRGLDB4QTQs
MHg1NSwweDBBLDB4MEUsMHhBQywweDhGLDB4QUMsMHg0RiwweEE0LDB4QkYsMHhGRSwweEU5LDB4
QUYsCisgICAgMHg4RiwweEFDLDB4NEYsMHhBNCwweERCLDB4RUUsMHhGRSwweEFBLDB4OEYsMHhB
QywweDJFLDB4QTQsMHhEQSwweEYyLDB4MkEsMHhDQiwKKyAgICAweDkwLDB4QUMsMHg0RSwweEE0
LDB4RkYsMHg1QSwweEQyLDB4QjcsMHg2RiwweEFDLDB4MkUsMHhBNCwweDVDLDB4RUUsMHhDMiww
eEEzLAorICAgIDB4OEYsMHhCNCwweDBFLDB4QTQsMHhGNSwweDZCLDB4RUIsMHg4QSwweDZGLDB4
QUMsMHgyRSwweEE0LDB4QUQsMHhGOSwweDlBLDB4ODAsCisgICAgMHgwMiwweDQ5LDB4RTIsMHg0
MCwweEY2LDB4REMsMHhGNSwweDM1LDB4ODQsMHg1OSwweDAzLDB4NDksMHhBRCwweDM1LDB4QjUs
MHhBRCwKKyAgICAweDYzLDB4NTksMHg0MywweDUxLDB4NkYsMHhDMiwweEU5LDB4NzcsMHg2NCww
eDU5LDB4MjMsMHg1MSwweEYyLDB4RTMsMHhGRiwweEZFLAorICAgIDB4ODQsMHg1OSwweDIyLDB4
NTEsMHg1NiwweEQ3LDB4RjcsMHhGNywweDYzLDB4NTksMHgwMiwweDQ5LDB4N0EsMHgzRSwweEZB
LDB4RjgsCisgICAgMHg0MywweDUxLDB4MDIsMHg0OSwweDhBLDB4QTgsMHgzQSwweDdFLDB4NDMs
MHg0OSwweDAyLDB4NDksMHg3QiwweEY4LDB4RDgsMHg5NSwKKyAgICAweDIzLDB4NDksMHgwMiww
eDQ5LDB4MzYsMHgwRiwweDA3LDB4MUYsMHg0MywweDUxLDB4MDMsMHg0OSwweDZGLDB4NkEsMHg1
RSwweDU1LAorICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHhGRSwweEFCLDB4MEEsMHgyRSwweDIz
LDB4NDksMHhDMSwweDQwLDB4OEUsMHhCNiwweDhFLDB4QTgsCisgICAgMHg0MywweDQ5LDB4RTIs
MHg0MCwweDNFLDB4REYsMHhERiwweEZGLDB4MjMsMHg0OSwweEUyLDB4NDAsMHhFMCwweEUwLDB4
RTIsMHhGMiwKKyAgICAweEE3LDB4N0EsMHgwMiwweDQxLDB4OTUsMHhCNSwweDI1LDB4MjUsMHgw
QywweEFDLDB4MkEsMHg4QiwweDg5LDB4ODMsMHgwMiwweDAyLAorICAgIDB4QUIsMHhBMywweDA4
LDB4OEIsMHg1RiwweEU4LDB4RjgsMHhCQSwweDY5LDB4OTMsMHhFNywweDhBLDB4NUYsMHhGRSww
eDY4LDB4QTIsCisgICAgMHgwOCwweDhCLDB4QzgsMHg4QSwweEVGLDB4RjgsMHhFMCwweEIwLDB4
RTgsMHg4QSwweEE3LDB4ODIsMHhCRiwweEFFLDB4RkMsMHhEQSwKKyAgICAweEU3LDB4ODIsMHg4
NiwweDdBLDB4NkIsMHhFQSwweDJBLDB4QUYsMHhFOCwweDgyLDB4QTcsMHg3QSwweDc3LDB4NTcs
MHhGOCwweDZFLAorICAgIDB4QzcsMHg4MiwweDg2LDB4N0EsMHg2RSwweDdBLDB4RjgsMHg1OCww
eEE2LDB4ODIsMHg2NiwweDdBLDB4OTIsMHhEQSwweEU1LDB4RUIsCisgICAgMHgyOSwweDkzLDB4
ODYsMHg3QSwweDU1LDB4NTUsMHhGNSwweDBGLDB4QUIsMHhBMywweDg3LDB4ODIsMHhBNSwweDJG
LDB4MEEsMHgwMiwKKyAgICAweENCLDB4QTMsMHg4QSwweDlCLDB4QTksMHgwRiwweDI4LDB4MDAs
MHhFQywweEFCLDB4OEEsMHg5QiwweEU4LDB4QjgsMHhGRSwweDVFLAorICAgIDB4OEIsMHg5Qiww
eDI2LDB4NzIsMHg4MCwweEUwLDB4NzgsMHg1NiwweEM4LDB4ODIsMHgyNiwweDZBLDB4NzgsMHg1
NiwweDU1LDB4NTUsCisgICAgMHg0NywweDcyLDB4MDUsMHg2QSwweDdFLDB4QjcsMHg3NSwweDU3
LDB4RTUsMHg2OSwweDg0LDB4NTksMHg3QSwweDc4LDB4N0MsMHhENiwKKyAgICAweEM1LDB4NjEs
MHg4NCwweDU5LDB4MkYsMHgyRCwweDJBLDB4QUYsMHgwNSwweDZBLDB4QTQsMHg1OSwweDJCLDB4
QUYsMHgyRiwweDJELAorICAgIDB4MjYsMHg2QSwweEM1LDB4NjEsMHg1RSwweERDLDB4N0UsMHg1
RSwweDA2LDB4NkEsMHg2NCwweDUxLDB4NzgsMHg3QiwweDVGLDB4NUYsCisgICAgMHg4NSwweDU5
LDB4MjMsMHg0MSwweEYwLDB4RkEsMHg3RSwweDVGLDB4NjQsMHg0OSwweDIzLDB4NDksMHhBOSww
eDE1LDB4QjUsMHgyRSwKKyAgICAweDY0LDB4NDksMHgyMywweDQxLDB4QjcsMHhCNiwweDNBLDB4
ODIsMHg2NCwweDQ5LDB4MDMsMHg0MSwweEZDLDB4NjAsMHhBQiwweEFBLAorICAgIDB4NDMsMHg0
OSwweDAzLDB4NDEsMHg1QiwweDdELDB4NzIsMHhBQSwweEE1LDB4NTEsMHgwMiwweDQxLDB4N0Ys
MHg3RiwweEJGLDB4MEIsCisgICAgMHhDNSwweDYxLDB4QzIsMHgzOCwweEZGLDB4RkYsMHg4QSww
eDAwLDB4RTYsMHg2MSwweEUyLDB4NDAsMHhENSwweEZGLDB4QUIsMHgwMCwKKyAgICAweEU1LDB4
NTksMHgyMywweDQxLDB4NTUsMHhERiwweEFBLDB4MDAsMHhDNiwweDU5LDB4MDMsMHg0MSwweDU1
LDB4RkYsMHhBMCwweDgwLAorICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHg3QSwweEZFLDB4QkMs
MHhGRSwweDIzLDB4NDEsMHhDMiwweDM4LDB4RkIsMHg5QSwweEZFLDB4RjAsCisgICAgMHgwMyww
eDM5LDB4QTIsMHgyOCwweEZGLDB4N0MsMHg3NCwweDU2LDB4RTMsMHgzMCwweEEyLDB4MjgsMHhC
OSwweDJCLDB4QjksMHhGRCwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4QTgsMHhGQSwweEYw
LDB4NzksMHhDMiwweDI4LDB4ODEsMHgyMCwweDVBLDB4N0UsMHg3QSwweDVGLAorICAgIDB4QTIs
MHgyMCwweDYxLDB4MjAsMHhGRiwweEZBLDB4RUEsMHg4MywweEEyLDB4MjAsMHg2MSwweDE4LDB4
Q0IsMHhFQSwweDdGLDB4RUUsCisgICAgMHg2MSwweDE4LDB4NDEsMHgxOCwweEFCLDB4MkYsMHgw
RiwweDA4LDB4QTIsMHgyMCwweDQxLDB4MTgsMHhGRiwweERGLDB4RkYsMHgyRSwKKyAgICAweEMy
LDB4MjgsMHg4MiwweDIwLDB4RjksMHhBOSwweEFCLDB4OEEsMHhDMiwweDI4LDB4ODEsMHgyMCww
eEVCLDB4QkEsMHhFOCwweEVFLAorICAgIDB4QTIsMHgyOCwweDgyLDB4MjAsMHhCQywweDk0LDB4
M0QsMHgzRiwweEEyLDB4MjgsMHg4MSwweDI4LDB4MEUsMHg4OCwweEI4LDB4ODAsCisgICAgMHhF
MywweDMwLDB4ODEsMHgyOCwweDhCLDB4QUIsMHg3RiwweEZGLDB4QzIsMHgzMCwweDgyLDB4Mjgs
MHgzQSwweEFGLDB4OEYsMHgwRiwKKyAgICAweEUyLDB4MzAsMHhBMiwweDI4LDB4REUsMHg5RCww
eDJELDB4OEIsMHhFMywweDMwLDB4QTIsMHgzMCwweEYwLDB4RkEsMHhGRSwweERGLAorICAgIDB4
RTMsMHgzMCwweEEyLDB4MzAsMHhBRCwweEFBLDB4QkEsMHhGRSwweDAzLDB4MzksMHhDMiwweDMw
LDB4QUEsMHg4MywweDAzLDB4QTEsCisgICAgMHhFMiwweDMwLDB4QzIsMHgzMCwweEY4LDB4RTAs
MHgwMCwweDAwLDB4MDMsMHgzOSwweEExLDB4MjgsMHhGRiwweERGLDB4RDcsMHg3MiwKKyAgICAw
eDAzLDB4MzksMHhBMiwweDI4LDB4N0IsMHhGRiwweEFCLDB4MkIsMHgwNCwweDM5LDB4QTIsMHgy
OCwweDU1LDB4NTcsMHg3RSwweEY4LAorICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHhGRCwweDNE
LDB4OUEsMHg5QSwweEUzLDB4MzAsMHhBMiwweDI4LDB4RTksMHg3RiwweEZBLDB4NjgsCisgICAg
MHhDMiwweDMwLDB4QTIsMHgyOCwweEFBLDB4QUYsMHgyRCwweEFFLDB4RTIsMHgzMCwweEEyLDB4
MjgsMHg4QiwweEVGLDB4RUUsMHhGRiwKKyAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4RDcsMHhB
NSwweEE2LDB4RjcsMHhFMywweDMwLDB4ODEsMHgyOCwweDJCLDB4N0EsMHg3RiwweEZGLAorICAg
IDB4QzIsMHgyOCwweDgxLDB4MjgsMHgzQiwweEE5LDB4RkQsMHhBRCwweEMzLDB4MzAsMHg4Miww
eDI4LDB4QjgsMHhBRSwweEZBLDB4RkUsCisgICAgMHhDMiwweDI4LDB4ODEsMHgyOCwweDAwLDB4
MjIsMHhBRiwweDBGLDB4RTIsMHgzMCwweEMyLDB4MjgsMHhBRiwweDlGLDB4MjcsMHgyNSwKKyAg
ICAweEUyLDB4MzAsMHhDMiwweDMwLDB4RDQsMHhGMCwweEEyLDB4RkQsMHhFMiwweDMwLDB4QTIs
MHgzMCwweEM4LDB4ODAsMHg4MCwweEEyLAorICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHhFRiww
eEZELDB4QUEsMHhFOCwweDAzLDB4MzksMHhDMiwweDMwLDB4QTcsMHhENywweEVGLDB4RUYsCisg
ICAgMHgyNCwweDM5LDB4QzMsMHgzMCwweEFCLDB4MkYsMHgzQiwweEZGLDB4NDQsMHg0MSwweDAz
LDB4MzksMHhFQSwweEVBLDB4RUIsMHg3RCwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4QkEs
MHgzRSwweEU2LDB4NTQsMHgyMywweDM5LDB4RTIsMHgzMCwweEEwLDB4RUEsMHhCNSwweEY3LAor
ICAgIDB4MDIsMHgzOSwweEMyLDB4MzAsMHhCRSwweDlFLDB4QkIsMHhGQSwweDAzLDB4MzksMHhD
MiwweDMwLDB4MDgsMHhBMiwweEQ4LDB4REEsCisgICAgMHhFMiwweDM4LDB4MDMsMHgzMSwweDA4
LDB4ODAsMHg4MCwweDZBLDB4ODUsMHg1MSwweDAzLDB4MzksMHgyNSwweDI1LDB4QkQsMHhCRCwK
KyAgICAweEE1LDB4NTEsMHg0NCwweDQxLDB4MDIsMHhDQSwweDdCLDB4NUYsMHg4NSwweDQ5LDB4
MjQsMHg0MSwweEU4LDB4RTIsMHhFQSwweERGLAorICAgIDB4NDQsMHg0OSwweEMzLDB4MzgsMHhF
RSwweDdBLDB4N0EsMHhFQywweDAzLDB4MzksMHhDMiwweDMwLDB4MjQsMHgwRiwweDJGLDB4QTks
CisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDNDLDB4RTgsMHhFRiwweEFGLDB4MjMsMHgzOSww
eEUzLDB4MzgsMHgwMiwweDNELDB4RkIsMHhFNiwKKyAgICAweDI0LDB4NDEsMHhFMywweDM4LDB4
QzgsMHhGQSwweEY3LDB4RjUsMHgwMywweDM5LDB4QzIsMHgzMCwweEEyLDB4MkMsMHhGNywweEZG
LAorICAgIDB4MjQsMHg0MSwweDAzLDB4MzksMHhCNywweEEzLDB4MEIsMHhBNSwweDY0LDB4NDks
MHgyNCwweDQxLDB4QkQsMHhGNSwweEFELDB4MjksCisgICAgMHhBNSwweDUxLDB4MjMsMHg0MSww
eEE5LDB4MEIsMHgwMywweDAwLDB4RTYsMHg1OSwweDg1LDB4NTEsMHg1NSwweEZELDB4QUQsMHgz
RiwKKyAgICAweEU2LDB4NTksMHg0MywweDQ5LDB4RDcsMHhCQSwweEI4LDB4QTAsMHhFNiwweDU5
LDB4QTUsMHg1MSwweDg5LDB4MEEsMHg4MiwweEFCLAorICAgIDB4MDYsMHg2MiwweEE1LDB4NDks
MHhCRiwweEIyLDB4QUYsMHhGRSwweDRCLDB4ODMsMHhFNSwweDU5LDB4MkQsMHgyRCwweDJELDB4
MkQsCisgICAgMHgyRSwweEE0LDB4OEMsMHg4QiwweDJCLDB4QUQsMHhBRiwweEFELDB4NEYsMHhB
NCwweEVELDB4OUIsMHgwRSwweEE3LDB4QkQsMHhGNSwKKyAgICAweDZGLDB4QUMsMHgwRSwweEE0
LDB4MEIsMHhBRiwweDdGLDB4REYsMHg4RiwweEFDLDB4MkUsMHhBNCwweDI3LDB4QUEsMHhBQiww
eEZELAorICAgIDB4RjEsMHhCQywweDBFLDB4QTQsMHgwQSwweEFGLDB4QkYsMHhENywweEYxLDB4
QkMsMHhCMCwweEI0LDB4QTgsMHhCQiwweEJCLDB4OTUsCisgICAgMHgxMSwweEJELDB4QjAsMHhC
NCwweDAyLDB4MEEsMHgyQSwweEJELDB4MzEsMHhCRCwweEIwLDB4QjQsMHg1NywweDdDLDB4RkEs
MHhBQSwKKyAgICAweEYwLDB4QkMsMHg4RiwweEFDLDB4REYsMHhERSwweEJFLDB4RkEsMHhCMCww
eEI0LDB4NkYsMHhBQywweDdCLDB4QUEsMHhFRiwweEJDLAorICAgIDB4OTAsMHhBQywweDRGLDB4
QTQsMHhENywweEZBLDB4OTAsMHhCOCwweDhGLDB4QUMsMHgyRSwweEE0LDB4OEYsMHg5QSwweDgy
LDB4QTIsCisgICAgMHhBRiwweEI0LDB4NEYsMHhBNCwweEJELDB4RkYsMHhGRiwweDczLDB4OEYs
MHhBQywweDRGLDB4QTQsMHhBQiwweEJGLDB4RjcsMHg3NSwKKyAgICAweDhGLDB4QUMsMHgyRSww
eEE0LDB4MEEsMHgyQSwweDJCLDB4RTksMHg5MCwweEFDLDB4NEUsMHhBNCwweEU3LDB4RUUsMHhF
MiwweEFCLAorICAgIDB4OEYsMHhBQywweDRFLDB4QTQsMHhFMiwweEFBLDB4QUIsMHhGNywweDZG
LDB4QUMsMHgyRSwweEE0LDB4QkIsMHgwQywweEEwLDB4QkEsCisgICAgMHg4RiwweEFDLDB4MkUs
MHhBNCwweDJDLDB4RkYsMHg2RiwweEZCLDB4NkYsMHhBQywweDBELDB4OUMsMHgyOCwweEJCLDB4
OUYsMHhGRiwKKyAgICAweDY0LDB4NTksMHhFMiwweDQwLDB4RjUsMHhBQiwweDJBLDB4QUEsMHg2
NCwweDUxLDB4MjMsMHg1MSwweEJELDB4QjksMHgyRiwweEUzLAorICAgIDB4ODQsMHg1OSwweDQz
LDB4NTEsMHg3RiwweERDLDB4RUUsMHhCRiwweDg0LDB4NTksMHg0MywweDUxLDB4N0QsMHg3OSww
eEFCLDB4RUUsCisgICAgMHg2NCwweDU5LDB4MjIsMHg1MSwweEY1LDB4NTYsMHhCQywweEU4LDB4
NDMsMHg1MSwweDAyLDB4NDksMHhCOCwweERBLDB4RTgsMHhGQSwKKyAgICAweDY0LDB4NTEsMHgw
MiwweDQ5LDB4RkYsMHhCRiwweDdGLDB4RjIsMHgyMywweDQ5LDB4RTIsMHg0MCwweDI5LDB4M0Us
MHhEQSwweDAyLAorICAgIDB4NDMsMHg1MSwweDAzLDB4NDksMHhGNiwweEZGLDB4QkEsMHhBRiww
eDIzLDB4NDksMHgwMiwweDQxLDB4ODAsMHg0MiwweEEwLDB4N0EsCisgICAgMHgyMywweDQ5LDB4
RTIsMHg0MCwweDNCLDB4MjMsMHhBRiwweDlGLDB4MjMsMHg0OSwweEUyLDB4NDAsMHhBMCwweDNF
LDB4QkUsMHgyRSwKKyAgICAweDIzLDB4NDksMHgwMiwweDQxLDB4MUIsMHhGNiwweEQ2LDB4RkMs
MHg0NCwweDQ5LDB4MDIsMHg0OSwweDVGLDB4NTcsMHg5NSwweDk1LAorICAgIDB4OEEsMHg5Qiww
eDQzLDB4NTEsMHhCNSwweDJELDB4MkQsMHgyRCwweDBDLDB4QUMsMHg4QSwweDkzLDB4ODIsMHhB
QSwweDYyLDB4RTIsCisgICAgMHhBQiwweDlCLDB4NDksMHg5MywweEZDLDB4RjgsMHhGQSwweERE
LDB4NjksMHg5QiwweDA4LDB4OEIsMHhFMCwweDc4LDB4RkMsMHg3OCwKKyAgICAweDA4LDB4OEIs
MHhFOCwweDhBLDB4ODAsMHg3NywweEZFLDB4OUMsMHgwOCwweDhCLDB4QTcsMHg4MiwweEJGLDB4
NkYsMHhFRiwweEIyLAorICAgIDB4RTgsMHg4MiwweEE3LDB4ODIsMHhCRSwweDdCLDB4QUUsMHhB
QiwweEM3LDB4ODIsMHg4NiwweDdBLDB4RUUsMHhFQSwweDgzLDB4Q0EsCisgICAgMHhDNywweDgy
LDB4ODcsMHg3QSwweEJBLDB4RUYsMHhCRiwweEFBLDB4OEEsMHg5QiwweDg3LDB4N0EsMHg1RCww
eEI3LDB4MkYsMHgwQiwKKyAgICAweENCLDB4QTMsMHgwOCwweDhCLDB4MjUsMHgwOSwweDAyLDB4
MDAsMHhFQSwweEFCLDB4QUIsMHhBMywweDY1LDB4RUYsMHhGQiwweEZBLAorICAgIDB4RUMsMHhB
QiwweEM4LDB4ODIsMHgyMCwweEE4LDB4RjAsMHg3RSwweDhBLDB4OUIsMHg0NiwweDcyLDB4RTAs
MHg3OCwweDVFLDB4NTUsCisgICAgMHg2NywweDdBLDB4MDUsMHg2QSwweERDLDB4RkYsMHg3Riww
eDc3LDB4NjcsMHg3MiwweDA2LDB4NkEsMHhGRCwweEFELDB4QUQsMHg4QiwKKyAgICAweDI2LDB4
NkEsMHg4NCwweDUxLDB4ODAsMHhFOCwweDQwLDB4NjAsMHhDNSwweDU5LDB4NDMsMHg1MSwweERD
LDB4RkYsMHhCRiwweDJGLAorICAgIDB4RTUsMHg2MSwweDg0LDB4NTEsMHhFRCwweEFCLDB4QUEs
MHhBQSwweDA2LDB4NjIsMHhDNSwweDU5LDB4QTcsMHhGQiwweDcyLDB4N0IsCisgICAgMHhFNSww
eDYxLDB4NDQsMHg1MSwweEE4LDB4NjgsMHg3OCwweDc3LDB4QTUsMHg1OSwweDIzLDB4NDksMHhD
QSwweEVBLDB4RUQsMHhGRSwKKyAgICAweDY0LDB4NDksMHgyNCwweDQ5LDB4RDYsMHhENiwweEQy
LDB4RjUsMHg4NCwweDUxLDB4NDQsMHg0OSwweDk5LDB4QjUsMHhGNSwweEI1LAorICAgIDB4ODUs
MHg1MSwweDIzLDB4NDEsMHhGQywweEZGLDB4RkUsMHhGQSwweDY0LDB4NTEsMHgyMywweDQxLDB4
RkUsMHhGNiwweEZFLDB4MzMsCisgICAgMHgyNiwweDZBLDB4NDMsMHg0OSwweEQ1LDB4QkQsMHgy
QiwweDBBLDB4MjYsMHg2QSwweEE1LDB4NTEsMHhCNSwweEVFLDB4RTAsMHhBMCwKKyAgICAweEU2
LDB4NjEsMHg0MywweDUxLDB4MDAsMHg4MiwweEUwLDB4RkEsMHgwNiwweDYyLDB4NDMsMHg0OSww
eDhBLDB4MkEsMHhCRiwweDU1LAorICAgIDB4QzUsMHg1OSwweDYzLDB4NDksMHgwMCwweEE4LDB4
RUEsMHg1RCwweEM1LDB4NTksMHgyMiwweDQxLDB4RTAsMHhGQSwweEZFLDB4N0YsCisgICAgMHgy
MywweDQxLDB4RTIsMHgzOCwweDAwLDB4QUMsMHg1RSwweDVFLDB4MDMsMHgzOSwweEMyLDB4Mzgs
MHhDMCwweEFBLDB4RkMsMHhCQywKKyAgICAweEUyLDB4MzAsMHg4MSwweDI4LDB4RkUsMHg3OCww
eEZBLDB4RUEsMHhDMiwweDMwLDB4NjEsMHgyMCwweEFBLDB4RUEsMHhGQSwweDdBLAorICAgIDB4
QzIsMHgyOCwweDgxLDB4MjAsMHhFMywweDhELDB4N0QsMHg3RCwweEEyLDB4MjgsMHg2MSwweDIw
LDB4QkEsMHg3RSwweDU2LDB4NUYsCisgICAgMHhBMiwweDIwLDB4NjEsMHgxOCwweEVBLDB4REIs
MHhENywweDU3LDB4ODEsMHgyMCwweDQxLDB4MTgsMHgwMiwweEUwLDB4RkUsMHhFMiwKKyAgICAw
eDgxLDB4MjAsMHg0MSwweDE4LDB4RkYsMHg1RiwweEJGLDB4MkUsMHhDMiwweDI4LDB4NjEsMHgx
OCwweEJELDB4M0QsMHgyRiwweDJFLAorICAgIDB4QzMsMHgyOCwweEEyLDB4MjgsMHhDQiwweEZF
LDB4RTAsMHg4MCwweEMyLDB4MjgsMHg4MSwweDIwLDB4RkEsMHhGQSwweERFLDB4QTIsCisgICAg
MHhBMiwweDI4LDB4ODIsMHgyMCwweDJGLDB4QUIsMHhFMywweDJFLDB4QzIsMHgyOCwweDgxLDB4
MjgsMHhGQiwweEVGLDB4QUIsMHhBQSwKKyAgICAweEMyLDB4MjgsMHg2MSwweDI4LDB4MkIsMHhB
QSwweDhBLDB4MDIsMHgwMywweDMxLDB4QTIsMHgyOCwweEY1LDB4QjUsMHgzOSwweDNBLAorICAg
IDB4MDMsMHgzMSwweEMyLDB4MzAsMHg1NywweDdFLDB4QkMsMHg4MiwweDAzLDB4MzEsMHhDMiww
eDMwLDB4RDcsMHg2NSwweEFGLDB4RUIsCisgICAgMHhDMiwweDMwLDB4ODIsMHgyOCwweEE4LDB4
RkMsMHhGMCwweDc4LDB4RTIsMHgzMCwweDgxLDB4MjgsMHgwMiwweEFFLDB4RUIsMHhCRiwKKyAg
ICAweEUyLDB4MzAsMHhBMSwweDI4LDB4ODgsMHhCOCwweEJGLDB4NTUsMHgwMywweDM5LDB4QzIs
MHgzMCwweEUyLDB4QkEsMHhCRiwweEZELAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhFRiww
eEY4LDB4RkEsMHhBMiwweDAzLDB4MzksMHhDMywweDMwLDB4N0EsMHhGRiwweDdGLDB4REYsCisg
ICAgMHhFMiwweDMwLDB4QTIsMHgyOCwweERGLDB4REYsMHhERSwweEY4LDB4RTMsMHgzMCwweEEy
LDB4MjgsMHhFMywweEFGLDB4QTYsMHhFNSwKKyAgICAweDgyLDB4MzAsMHhDMiwweDI4LDB4QkQs
MHhENSwweDc3LDB4REQsMHhBMiwweDI4LDB4ODEsMHgyMCwweDYyLDB4RkUsMHgwQSwweDAwLAor
ICAgIDB4QzIsMHgyOCwweDgxLDB4MjgsMHg4RiwweEVGLDB4RUYsMHhBRSwweEMyLDB4MjgsMHg4
MiwweDI4LDB4MjAsMHgwMiwweDA5LDB4MDIsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEZE
LDB4QUUsMHhBRSwweEJFLDB4QzIsMHgzMCwweEEyLDB4MjgsMHg1OCwweDUwLDB4RUEsMHhBRiwK
KyAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4RDUsMHhDMywweEY1LDB4RjUsMHhDMiwweDMwLDB4
QTIsMHgyOCwweDAyLDB4QkEsMHg5QiwweEFCLAorICAgIDB4RTMsMHgzMCwweEMyLDB4MjgsMHhF
RiwweDRELDB4NEQsMHgzRCwweEUyLDB4MzAsMHhBMSwweDI4LDB4RkEsMHhDQiwweEEzLDB4MEEs
CisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEY3LDB4RkYsMHg4MSwweDAzLDB4MDMsMHgzOSww
eEMyLDB4MzAsMHhBQiwweEFGLDB4QkYsMHhGNiwKKyAgICAweEUyLDB4MzAsMHhBMSwweDMwLDB4
MjAsMHhBMCwweEFGLDB4MkIsMHgyMywweDM5LDB4RTMsMHgzOCwweEJELDB4REYsMHhFRiwweEVE
LAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhFRSwweEFCLDB4MDYsMHhCNywweDAzLDB4Mzks
MHhDMiwweDMwLDB4OEYsMHg4OCwweEMwLDB4RDIsCisgICAgMHgwMywweDM5LDB4RTIsMHgzMCww
eEZGLDB4RTcsMHhFMywweEU4LDB4MDMsMHg0MSwweEUyLDB4MzAsMHg1NSwweDdGLDB4RDcsMHhE
NywKKyAgICAweDQzLDB4NDEsMHgwMywweDM5LDB4OTUsMHg3RCwweEZELDB4RUQsMHg0NCwweDQx
LDB4RTIsMHgzMCwweEEzLDB4QTksMHhFQSwweEVBLAorICAgIDB4NjQsMHg0OSwweEUzLDB4Mzgs
MHhBMCwweEJBLDB4RkUsMHhERCwweDQ0LDB4NDEsMHhFMywweDM4LDB4MjgsMHhGRSwweDU3LDB4
NTUsCisgICAgMHgyNCwweDQxLDB4QzIsMHgzMCwweEU4LDB4REUsMHhEQiwweERCLDB4RTMsMHgz
OCwweEMyLDB4MzAsMHhBRSwweDlFLDB4QjgsMHg4MCwKKyAgICAweDAzLDB4MzksMHhDMiwweDMw
LDB4MkYsMHgyRSwweEFELDB4M0YsMHgwMywweDM5LDB4RTMsMHgzMCwweEFBLDB4MEEsMHgyRiww
eEU3LAorICAgIDB4MjQsMHgzOSwweEMyLDB4MzAsMHhBQSwweDNBLDB4REUsMHhGQiwweEUzLDB4
MzgsMHhDMiwweDMwLDB4RkUsMHg1NCwweDc2LDB4OEUsCisgICAgMHgwMywweDM5LDB4QzIsMHgz
MCwweDAzLDB4QTksMHhERCwweDhBLDB4MjMsMHg0MSwweEUzLDB4MzAsMHgwRiwweDM1LDB4QTMs
MHg4OSwKKyAgICAweEE1LDB4NTEsMHgwMywweDM5LDB4MDIsMHgwQSwweEU5LDB4QkQsMHhDNSww
eDUxLDB4NDQsMHg0OSwweDJBLDB4OEYsMHhBNSwweEI1LAorICAgIDB4MDYsMHg1QSwweDY0LDB4
NDksMHg4RSwweEZBLDB4RkYsMHg3NSwweEE1LDB4NTEsMHg2NCwweDQ5LDB4MjAsMHhCOCwweDNC
LDB4MkIsCisgICAgMHhFNiwweDU5LDB4ODUsMHg1MSwweDJCLDB4MkIsMHgzRCwweDk3LDB4NEIs
MHg4MywweDA2LDB4NUEsMHgzNSwweEE1LDB4MzUsMHgyRCwKKyAgICAweEVELDB4OUIsMHg4Qyww
eDhCLDB4MkQsMHhCRCwweEI1LDB4NkYsMHhFRCwweDlCLDB4QUMsMHg5MywweDIyLDB4ODgsMHgy
QSwweEQ1LAorICAgIDB4MEUsMHhBNCwweEFDLDB4OTMsMHgwQSwweDJFLDB4QUUsMHhERCwweDJF
LDB4QTQsMHhDRCwweDkzLDB4MDAsMHhDRSwweEFGLDB4N0QsCisgICAgMHg0RSwweEE0LDB4RUQs
MHg5QiwweDA4LDB4MkIsMHhCNSwweEI1LDB4QjAsMHhBQywweDBELDB4OUMsMHgwQiwweEJCLDB4
RDcsMHg1NywKKyAgICAweEQwLDB4QjQsMHg0RSwweEE0LDB4MEEsMHhBQiwweDA5LDB4QUQsMHgx
MSwweEJELDB4QjAsMHhCNCwweDhCLDB4OEEsMHhGQiwweDU1LAorICAgIDB4MTEsMHhCRCwweEIw
LDB4QUMsMHg3QSwweDdFLDB4ODMsMHg4QiwweEYxLDB4QkMsMHg4RiwweEFDLDB4RDcsMHg5RSww
eDdGLDB4RUMsCisgICAgMHhCMCwweEI0LDB4NkYsMHhBQywweEZFLDB4QTgsMHhBQiwweEFBLDB4
QjAsMHhCNCwweDZGLDB4QUMsMHg3RiwweDdFLDB4RTAsMHhBQSwKKyAgICAweEFGLDB4QjQsMHg0
RiwweEE0LDB4NkYsMHhGRCwweDZFLDB4QTgsMHg4RiwweEFDLDB4NEYsMHhBNCwweEY3LDB4REYs
MHhGRCwweEIwLAorICAgIDB4OTAsMHhBQywweDJFLDB4QTQsMHg3QiwweDVBLDB4RkUsMHhEQyww
eDZGLDB4QTQsMHgyRSwweEE0LDB4MzMsMHhFOSwweDZBLDB4OUUsCisgICAgMHg2RSwweEFDLDB4
MkUsMHhBNCwweDJFLDB4Q0IsMHhFRCwweEY5LDB4NkYsMHhBQywweDJFLDB4QTQsMHhBMiwweEJC
LDB4REEsMHg0MiwKKyAgICAweDRGLDB4QTQsMHgwRSwweDlDLDB4RjgsMHhGOCwweDUwLDB4QUYs
MHgyRSwweEE0LDB4MEUsMHg5QywweDdCLDB4REQsMHhDQiwweDgyLAorICAgIDB4NjQsMHg1MSww
eDIzLDB4NTEsMHhFQiwweEEyLDB4QkEsMHhCRiwweDY0LDB4NTksMHg0MywweDUxLDB4RkQsMHhB
RCwweDUwLDB4RjgsCisgICAgMHg2NCwweDU5LDB4NDMsMHg1MSwweEEyLDB4ODgsMHg2QiwweEZE
LDB4ODQsMHg1OSwweDIzLDB4NTEsMHhFQSwweEVBLDB4RUEsMHg0QSwKKyAgICAweDYzLDB4NTEs
MHgyMiwweDUxLDB4RkYsMHhCRiwweDZGLDB4QTAsMHg0MywweDUxLDB4MDIsMHg0OSwweEU4LDB4
QkEsMHhGNiwweDdBLAorICAgIDB4NDMsMHg1MSwweDAyLDB4NDksMHhCQSwweDY4LDB4RjksMHhE
RCwweDQzLDB4NDksMHgwMiwweDQ5LDB4QUEsMHhBQiwweEVELDB4RTUsCisgICAgMHg0MywweDQ5
LDB4RTIsMHg0MCwweDhBLDB4QjgsMHhGRiwweERGLDB4NDMsMHg1MSwweEUyLDB4NDAsMHgzQiww
eEJFLDB4RkIsMHhGOSwKKyAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4QkYsMHhCRSwweEZFLDB4
RjgsMHgyMywweDQ5LDB4RTIsMHg0MCwweDNBLDB4RkEsMHhGOCwweEZBLAorICAgIDB4NDMsMHg0
OSwweDAyLDB4NDksMHg1RSwweDU1LDB4NTUsMHhENSwweDYzLDB4NTksMHhFMiwweDQwLDB4REQs
MHgzRiwweEFGLDB4MkYsCisgICAgMHhDQiwweEEzLDB4QzUsMHg2MSwweDJELDB4MkQsMHgwRCww
eEE5LDB4RUIsMHhBMywweDQ5LDB4OTMsMHhFMiwweDhBLDB4RUUsMHg3RSwKKyAgICAweDhBLDB4
OUIsMHg0OSwweDkzLDB4QTIsMHhFMiwweEZELDB4RUQsMHg2OSwweDlCLDB4MDgsMHg4QiwweDQ4
LDB4RjIsMHg3QSwweDVFLAorICAgIDB4MjgsMHg5MywweEM3LDB4ODIsMHhCQSwweDZFLDB4Nzgs
MHhGQSwweEM4LDB4OEEsMHgwNywweDgzLDB4QUYsMHhFRSwweEFFLDB4QkYsCisgICAgMHhFOCww
eDhBLDB4QzcsMHg4MiwweEQ2LDB4OTYsMHg4QSwweDFBLDB4MjksMHg5MywweEE3LDB4ODIsMHg1
NywweDU3LDB4QkYsMHgyQiwKKyAgICAweEFCLDB4QTMsMHhFOCwweDhBLDB4NTUsMHg1NSwweEFE
LDB4MDIsMHhFQiwweEFCLDB4NEEsMHg5MywweEFELDB4QUIsMHhBQiwweDg4LAorICAgIDB4MEIs
MHhBQywweEFCLDB4QTMsMHhGRSwweEYzLDB4NkIsMHg1QSwweENCLDB4QTMsMHg2NiwweDcyLDB4
MDAsMHhBMCwweEU4LDB4N0UsCisgICAgMHg0QSwweDkzLDB4MjYsMHg3MiwweDc4LDB4N0UsMHg1
NywweDU1LDB4NDYsMHg3MiwweDA1LDB4NkEsMHhFRiwweEVCLDB4OEQsMHhBQiwKKyAgICAweDY3
LDB4NzIsMHgyNiwweDcyLDB4NUUsMHg2NSwweDdELDB4MDcsMHg2NywweDcyLDB4MDYsMHg2Miww
eDAzLDB4MkEsMHhCQiwweDdFLAorICAgIDB4MjYsMHg2QSwweDg0LDB4NTEsMHg1MCwweDVFLDB4
REMsMHg3RiwweDA2LDB4NjIsMHg4NCwweDUxLDB4QjUsMHgzNywweEFBLDB4QUIsCisgICAgMHhF
NSwweDYxLDB4QzUsMHg1OSwweEIyLDB4RDQsMHg1NywweEZBLDB4RTYsMHg2MSwweDQzLDB4NDks
MHhBMCwweEY4LDB4N0YsMHg1NywKKyAgICAweDg0LDB4NTksMHg0NCwweDQ5LDB4N0MsMHhENyww
eDVGLDB4N0YsMHg2NCwweDUxLDB4MDMsMHg0MSwweEVDLDB4REEsMHhCQSwweEEwLAorICAgIDB4
NjQsMHg0OSwweDAzLDB4NDEsMHhCRCwweDg3LDB4OEIsMHgyQSwweDg0LDB4NDksMHg0NCwweDQ5
LDB4QkQsMHhERCwweDU2LDB4NTUsCisgICAgMHg4NSwweDUxLDB4MDMsMHg0MSwweEVDLDB4Qjgs
MHhGRSwweDdGLDB4QzUsMHg2MSwweDIzLDB4NDEsMHhCRCwweEI3LDB4M0QsMHgzRCwKKyAgICAw
eDI3LDB4NkEsMHhFNiwweDYxLDB4RTksMHhBQiwweEQ1LDB4NTcsMHgyNiwweDZBLDB4ODQsMHg1
MSwweEFBLDB4NkYsMHg3QywweDdBLAorICAgIDB4QTQsMHg1OSwweDAyLDB4NDEsMHhGOCwweDdG
LDB4NUUsMHg3RSwweDYzLDB4NDksMHhFMiwweDQwLDB4MkIsMHhCRCwweEY1LDB4RjUsCisgICAg
MHg2MywweDQ5LDB4RTIsMHg0MCwweDIyLDB4RUUsMHhGRiwweDc3LDB4NjMsMHg0OSwweDAzLDB4
NDEsMHhDQywweDZBLDB4N0QsMHg1RCwKKyAgICAweDAzLDB4NDEsMHhDMiwweDMwLDB4QjgsMHg2
QywweEY4LDB4RjgsMHhFMiwweDM4LDB4QTIsMHgzMCwweEFBLDB4RTIsMHhGQiwweDhBLAorICAg
IDB4RTIsMHgzMCwweEEyLDB4MjgsMHhGQSwweDVFLDB4N0EsMHg3QSwweEMyLDB4MjgsMHg2MSww
eDIwLDB4RkMsMHg3QSwweEZGLDB4QUUsCisgICAgMHhDMiwweDI4LDB4NjEsMHgyMCwweEZCLDB4
RTksMHhCQSwweEE4LDB4QTIsMHgyOCwweDYxLDB4MjAsMHg1NywweEZFLDB4NkMsMHhGQSwKKyAg
ICAweDgxLDB4MjAsMHg0MSwweDE4LDB4RkIsMHhGRSwweEZFLDB4RjgsMHg4MSwweDIwLDB4NDEs
MHgxOCwweEZCLDB4N0UsMHg3RiwweDNGLAorICAgIDB4QzMsMHgyOCwweDYxLDB4MTgsMHhCNSww
eEFELDB4QTksMHgwQSwweEUzLDB4MzAsMHhBMiwweDI4LDB4RTUsMHhFOSwweEFCLDB4RkIsCisg
ICAgMHhDMiwweDI4LDB4QTIsMHgyOCwweDgzLDB4ODgsMHgwOCwweEVBLDB4QzIsMHgyOCwweDgx
LDB4MjgsMHhFOCwweEEwLDB4MDAsMHgwMCwKKyAgICAweEMyLDB4MjgsMHg4MiwweDI4LDB4RUYs
MHgyRSwweDI4LDB4MDIsMHhDMiwweDMwLDB4ODEsMHgyOCwweEVGLDB4REUsMHhFNiwweDJCLAor
ICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHhGRCwweEJELDB4QUYsMHg4QiwweDAzLDB4MzksMHhD
MiwweDMwLDB4M0YsMHhBQiwweDY4LDB4NkEsCisgICAgMHgyMywweDM5LDB4QzIsMHgyOCwweEEy
LDB4MkEsMHhGRCwweEQ1LDB4RTMsMHgzMCwweEMyLDB4MjgsMHg4MCwweDVDLDB4NTYsMHhGRSwK
KyAgICAweEMyLDB4MzAsMHg4MiwweDI4LDB4NzAsMHhGOCwweEEyLDB4QTIsMHhFMywweDMwLDB4
ODEsMHgyOCwweEY1LDB4RkYsMHhGQSwweEEyLAorICAgIDB4QzIsMHgzMCwweEEyLDB4MzAsMHhE
QiwweERGLDB4MjksMHgwMiwweEUzLDB4MzgsMHhDMiwweDMwLDB4QTIsMHhBQSwweEE3LDB4MkQs
CisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEVCLDB4QkQsMHhCQiwweEFFLDB4RTMsMHgzMCww
eEMyLDB4MzAsMHhGQywweEZBLDB4RkYsMHgxNiwKKyAgICAweEUzLDB4MzAsMHg4MiwweDIwLDB4
QkEsMHhERSwweEZBLDB4QTAsMHhFMywweDMwLDB4QTIsMHgyOCwweDNELDB4QUIsMHgyQiwweDNG
LAorICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHhGQiwweEY4LDB4NzcsMHg3RSwweEMyLDB4MzAs
MHhBMiwweDI4LDB4RjksMHhFNSwweDQ1LDB4NzUsCisgICAgMHhBMiwweDMwLDB4QzIsMHgyOCww
eEZBLDB4RkYsMHhERiwweEZGLDB4QzIsMHgyOCwweEEyLDB4MjgsMHhFRiwweEVCLDB4QTMsMHg4
MCwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4RjcsMHg3RCwweEZGLDB4M0YsMHhFMywweDMw
LDB4QTIsMHgyOCwweEQ1LDB4RUIsMHg3MiwweDVBLAorICAgIDB4QzIsMHgzMCwweEEyLDB4Mjgs
MHhCRSwweEFFLDB4OEQsMHhFRiwweEMyLDB4MzAsMHhBMiwweDI4LDB4ODgsMHhCOCwweEQ4LDB4
OUYsCisgICAgMHhFMywweDMwLDB4QTEsMHgyOCwweDJGLDB4OEIsMHhFQiwweEE3LDB4RTMsMHgz
MCwweEEyLDB4MjgsMHgyMCwweEJFLDB4NzcsMHg1NSwKKyAgICAweDAzLDB4MzksMHhBMiwweDI4
LDB4MEEsMHgwRiwweDJGLDB4QUYsMHgwMywweDM5LDB4QzIsMHgzMCwweEEyLDB4REEsMHg2MCww
eENFLAorICAgIDB4RTMsMHgzMCwweEMyLDB4MzAsMHhCNywweEQ1LDB4RDUsMHg1NywweDAyLDB4
MzksMHhDMywweDMwLDB4RkUsMHhGQSwweDNCLDB4QUYsCisgICAgMHhFMiwweDMwLDB4QTIsMHgz
MCwweEZFLDB4REYsMHhFQywweEIyLDB4MDMsMHgzOSwweEMyLDB4MzAsMHhFQiwweDlELDB4QUIs
MHg1NywKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4Q0EsMHg4QSwweEFGLDB4OTUsMHgyMyww
eDM5LDB4QzIsMHgzMCwweEZGLDB4RjcsMHgzRiwweEVGLAorICAgIDB4MjMsMHgzOSwweEUzLDB4
MzAsMHgyMywweDNGLDB4QkQsMHhGRCwweDI0LDB4MzksMHhFMywweDMwLDB4N0UsMHg3MiwweEM4
LDB4NkIsCisgICAgMHgyNCwweDM5LDB4QzIsMHgzMCwweEY3LDB4QkQsMHhGRiwweEFGLDB4MDMs
MHgzOSwweEMzLDB4MzAsMHhFRSwweEYyLDB4QzAsMHhDMiwKKyAgICAweDAzLDB4MzksMHhDMyww
eDMwLDB4QkQsMHgzRiwweEVELDB4QUIsMHgwMywweDMxLDB4QzMsMHgzMCwweEVBLDB4ODAsMHgw
OCwweDY4LAorICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHgzRiwweDNELDB4NjcsMHhCNSwweDIz
LDB4MzksMHhFMywweDMwLDB4REYsMHhGRCwweERELDB4QzUsCisgICAgMHgwMywweDM5LDB4RTMs
MHgzMCwweDcxLDB4RkQsMHhGNSwweDU5LDB4NDQsMHg0MSwweEUzLDB4MzAsMHg3RCwweDZGLDB4
RUIsMHhBOSwKKyAgICAweDIzLDB4MzksMHhFMywweDMwLDB4RUYsMHhGRCwweDI5LDB4OEIsMHg2
NCwweDQxLDB4RTMsMHgzOCwweEVELDB4RUYsMHg4QSwweEFBLAorICAgIDB4NjQsMHg0OSwweDAz
LDB4MzksMHhBRCwweEE5LDB4M0QsMHgxRSwweDg0LDB4NDksMHgyMywweDQxLDB4QkYsMHg3Nyww
eEI2LDB4QkUsCisgICAgMHg4NCwweDUxLDB4NDQsMHg0OSwweEZFLDB4QjUsMHhCRCwweDI3LDB4
RTUsMHg1OSwweDg1LDB4NTEsMHg3RCwweEY1LDB4QjUsMHgwRSwKKyAgICAweEU2LDB4NTksMHhB
NSwweDUxLDB4MTUsMHhBNSwweDBGLDB4MjAsMHg2QywweDhCLDB4RTUsMHg1OSwweDJELDB4MkQs
MHgyRCwweDJGLAorICAgIDB4RUUsMHg5QiwweEFDLDB4OTMsMHg3RCwweEVCLDB4MjMsMHgyMyww
eEVELDB4OUIsMHg4QywweDhCLDB4RkYsMHhERiwweDdBLDB4NUMsCisgICAgMHhDRCwweDkzLDB4
NkIsMHg4QiwweEEwLDB4QjgsMHhGQiwweEZELDB4RUQsMHg5QiwweDhDLDB4OEIsMHg4RSwweDM5
LDB4QjksMHhGNywKKyAgICAweDBFLDB4QTQsMHhBQywweDkzLDB4MkEsMHgzRCwweEFGLDB4QkYs
MHgyRCwweEE0LDB4Q0MsMHg5MywweEI4LDB4MkUsMHhBQiwweEY3LAorICAgIDB4NkYsMHhBQyww
eEVELDB4OUIsMHgwQiwweEFELDB4RkYsMHg3NSwweEFGLDB4QUMsMHgwRCwweDlDLDB4MjgsMHhB
RiwweEJELDB4RDUsCisgICAgMHhGMSwweEJDLDB4NEUsMHhBNCwweDAyLDB4MkEsMHhCRCwweDlE
LDB4RjAsMHhCQywweDhGLDB4QUMsMHg3MCwweEVBLDB4QUUsMHhGQiwKKyAgICAweEQxLDB4QjQs
MHg4RiwweEFDLDB4NUYsMHg1RiwweEEwLDB4QUMsMHhCMCwweEI0LDB4OTAsMHhBQywweDJFLDB4
OEIsMHgwNCwweDM2LAorICAgIDB4RDAsMHhCNCwweDZGLDB4QUMsMHhBNywweEJGLDB4QjcsMHhG
NCwweEIwLDB4QjQsMHg2RiwweEFDLDB4RjgsMHhFMiwweEE4LDB4RTgsCisgICAgMHhCMCwweEI0
LDB4NEYsMHhBNCwweDVBLDB4QjgsMHhCQSwweEVFLDB4OEYsMHhBQywweDRFLDB4QTQsMHg1Nyww
eDRGLDB4QzMsMHhDRSwKKyAgICAweDZGLDB4QUMsMHgwRSwweEE0LDB4MjgsMHg4OCwweDg4LDB4
N0EsMHg2RiwweEFDLDB4MkUsMHhBNCwweEVBLDB4NzIsMHhGRSwweDdELAorICAgIDB4NEUsMHhB
NCwweDBELDB4OUMsMHhFRiwweEJGLDB4QkUsMHg0QiwweDJFLDB4QTQsMHhFRCwweDlCLDB4ODAs
MHhDQiwweDdGLDB4N0UsCisgICAgMHg2NCwweDU5LDB4MDIsMHg0OSwweEVGLDB4RUEsMHgzQyww
eDdGLDB4ODQsMHg1OSwweDIzLDB4NTEsMHhBRiwweDNCLDB4QkUsMHhGRCwKKyAgICAweDg0LDB4
NTksMHg0MywweDUxLDB4NzcsMHg1NiwweEY0LDB4MkYsMHg4NCwweDU5LDB4NDMsMHg1MSwweEVC
LDB4RUQsMHhGOCwweDdFLAorICAgIDB4ODQsMHg1OSwweDIyLDB4NDksMHg3RSwweDVFLDB4RUUs
MHg3MywweDQzLDB4NTEsMHgwMiwweDQ5LDB4NUUsMHhDRSwweDdFLDB4NUUsCisgICAgMHgyMyww
eDQ5LDB4MDIsMHg0MSwweEZCLDB4MjAsMHgwMiwweDAwLDB4MjIsMHg0OSwweDAyLDB4NDEsMHhD
QiwweDU2LDB4OEIsMHhGNiwKKyAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4QUIsMHhFQiwweEZB
LDB4QTgsMHgyMywweDQ5LDB4RTIsMHg0MCwweEFCLDB4QkIsMHhERSwweDdFLAorICAgIDB4MjMs
MHg0OSwweEUyLDB4NDAsMHhDOCwweDc4LDB4RUYsMHg4RCwweDAyLDB4NDksMHhFMiwweDQwLDB4
QTAsMHhCOSwweDI1LDB4ODcsCisgICAgMHgyMywweDQ5LDB4RTEsMHg0MCwweEJGLDB4QTUsMHgw
QSwweDJCLDB4MDUsMHg2QSwweDQzLDB4NDksMHhENSwweEQ1LDB4MTUsMHgzNSwKKyAgICAweEFC
LDB4OUIsMHg2NiwweDdBLDB4MjksMHg4OSwweDJGLDB4MjMsMHhBQiwweEEzLDB4NDksMHg5Myww
eDdCLDB4RjgsMHg2RSwweDdBLAorICAgIDB4NjksMHg5QiwweDI5LDB4OTMsMHhBNiwweEJFLDB4
NkIsMHhGQSwweDY5LDB4OUIsMHgwOCwweDhCLDB4REEsMHhFOCwweEUzLDB4N0UsCisgICAgMHgy
OCwweDkzLDB4QzcsMHg4MiwweEVBLDB4QTgsMHg4OCwweDI4LDB4MjgsMHg4QiwweEU4LDB4OEEs
MHg1MCwweDUyLDB4N0QsMHhGQiwKKyAgICAweDhBLDB4OUIsMHhFOCwweDgyLDB4NTUsMHhCRCww
eEFELDB4MkIsMHgwQywweEFDLDB4RTgsMHg4QSwweEJELDB4QUIsMHgyQSwweDBBLAorICAgIDB4
MEMsMHhBQywweEFBLDB4QTMsMHhERCwweDNFLDB4QkEsMHgyOCwweDBDLDB4QUMsMHg2OSwweDlC
LDB4QTIsMHhFQSwweEE4LDB4N0EsCisgICAgMHhDQiwweEEzLDB4NjYsMHg3MiwweEEwLDB4RTAs
MHg3QSwweDVFLDB4QzgsMHg4MiwweDI1LDB4NkEsMHhGMCwweERFLDB4NzcsMHg1RSwKKyAgICAw
eDQ2LDB4NzIsMHgwNSwweDZBLDB4MkMsMHhBRiwweDBCLDB4MDIsMHg2NywweDdBLDB4MjYsMHg2
QSwweEZBLDB4QUYsMHhBNywweDBBLAorICAgIDB4NjcsMHg3MiwweDI2LDB4NzIsMHg5RSwweERF
LDB4RkMsMHg4OCwweDQ3LDB4NzIsMHhBNSwweDU5LDB4RTgsMHhGOCwweDYyLDB4N0EsCisgICAg
MHhDNSwweDU5LDB4ODQsMHg1OSwweDJDLDB4MkYsMHhBRSwweDhFLDB4QzUsMHg2MSwweDQzLDB4
NTEsMHgyMCwweEEwLDB4QTgsMHhERSwKKyAgICAweEM1LDB4NTksMHgyMywweDQ5LDB4ODAsMHhG
QSwweDVFLDB4NUQsMHhBNSwweDUxLDB4MDIsMHg0MSwweDlGLDB4MkYsMHgyRiwweDgyLAorICAg
IDB4ODQsMHg1MSwweDQzLDB4NDksMHg3OCwweDc4LDB4N0MsMHg1QSwweDg0LDB4NTEsMHg0NCww
eDQ5LDB4NkYsMHhGRiwweEJGLDB4QUQsCisgICAgMHg2NCwweDQ5LDB4MjMsMHg0MSwweDMyLDB4
MkEsMHg5RSwweDVDLDB4NjQsMHg0OSwweDIzLDB4NDEsMHhFMywweDhCLDB4QUYsMHhCRiwKKyAg
ICAweDY0LDB4NDksMHgwMywweDQxLDB4N0YsMHg3RSwweERDLDB4NzgsMHhBNSwweDU5LDB4MDMs
MHg0MSwweDNELDB4MkQsMHgyOSwweDJGLAorICAgIDB4MDUsMHg2MiwweEM1LDB4NjEsMHg1RSww
eEQ3LDB4Q0EsMHhBMiwweDA2LDB4NkEsMHhBNCwweDU5LDB4NUEsMHg3QywweEM4LDB4QUIsCisg
ICAgMHhBNCwweDU5LDB4MjMsMHg0OSwweDdFLDB4N0MsMHg3OCwweDVFLDB4MjMsMHg0OSwweEMx
LDB4MzgsMHg4OCwweEJCLDB4RkUsMHg2QywKKyAgICAweDIzLDB4NDEsMHhFMiwweDQwLDB4REYs
MHhCQSwweDBCLDB4NDMsMHgyMywweDQxLDB4RTIsMHgzOCwweDVBLDB4REEsMHg1RiwweDU1LAor
ICAgIDB4MjMsMHg0MSwweEMyLDB4MzAsMHhGQiwweEEzLDB4RkYsMHg3RCwweDAzLDB4MzksMHhD
MiwweDMwLDB4RkEsMHhGQSwweEZGLDB4RkQsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDVF
LDB4RkEsMHhBRSwweEY4LDB4QTIsMHgyOCwweDgxLDB4MjgsMHgwRSwweDBFLDB4MDgsMHgwMCwK
KyAgICAweEMyLDB4MjgsMHg4MSwweDIwLDB4RUEsMHg4MiwweEUyLDB4NUUsMHhBMiwweDIwLDB4
NDAsMHgxOCwweEE4LDB4QUEsMHhGOCwweDdFLAorICAgIDB4ODIsMHgyMCwweDYxLDB4MTgsMHg1
QiwweDVELDB4RjksMHgzRCwweEMyLDB4MjgsMHg2MSwweDE4LDB4RDUsMHhENSwweDlELDB4MEYs
CisgICAgMHhFMywweDMwLDB4QTIsMHgyMCwweEZGLDB4RUYsMHhFQiwweEEyLDB4RTMsMHgzMCww
eEMyLDB4MjgsMHg1NywweDUyLDB4MkIsMHhGNywKKyAgICAweEEyLDB4MzAsMHhDMiwweDI4LDB4
REYsMHhGRCwweDZELDB4RjUsMHgwMywweDMxLDB4QTIsMHgyOCwweEZGLDB4REYsMHhCRSwweDNC
LAorICAgIDB4MjMsMHgzOSwweEMyLDB4MjgsMHg1NSwweDdGLDB4RUYsMHg4QSwweDAzLDB4MzEs
MHhDMiwweDMwLDB4NTUsMHg3QSwweEY4LDB4RkEsCisgICAgMHhFMywweDMwLDB4QTIsMHgzMCww
eDBBLDB4MkEsMHhFQSwweDdBLDB4RTMsMHgzOCwweDgxLDB4MjgsMHhFOCwweEVFLDB4NUIsMHg1
RiwKKyAgICAweEMyLDB4MzAsMHg4MSwweDI4LDB4MDIsMHg4QiwweEFGLDB4QUQsMHhBMiwweDMw
LDB4RTIsMHgyOCwweEJGLDB4QkUsMHhFQSwweEVBLAorICAgIDB4MDMsMHgzMSwweEMyLDB4MzAs
MHg5NSwweDlELDB4RDcsMHhCNSwweDAzLDB4MzksMHhDMiwweDMwLDB4RkEsMHhFQSwweEVGLDB4
RUIsCisgICAgMHhFMywweDM4LDB4QzIsMHgzMCwweEY3LDB4REYsMHgyRiwweDBFLDB4MDMsMHgz
OSwweEMyLDB4MzAsMHgzNywweEJCLDB4NkEsMHhBQSwKKyAgICAweDAzLDB4MzksMHhDMiwweDMw
LDB4QTIsMHhFQiwweEVCLDB4MDAsMHgwMywweDM5LDB4QzMsMHgzMCwweDlBLDB4QkIsMHhCMyww
eEY4LAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHg1NywweEUzLDB4RUEsMHhBQiwweDAzLDB4
MzEsMHhDMywweDMwLDB4NUUsMHhERSwweEJFLDB4REUsCisgICAgMHhFMywweDMwLDB4QTIsMHgy
OCwweDdBLDB4QjgsMHhGOCwweEYwLDB4QzIsMHgyOCwweEEyLDB4MjgsMHg3NSwweDY2LDB4Rjcs
MHgxRiwKKyAgICAweEUyLDB4MzAsMHg4MSwweDI4LDB4RkYsMHg1RCwweDc1LDB4RkUsMHhFMyww
eDMwLDB4ODEsMHgyMCwweDJCLDB4QUIsMHhGRiwweEZELAorICAgIDB4RTMsMHgzMCwweEEyLDB4
MjgsMHhCNywweEVBLDB4QjMsMHhCOSwweEUzLDB4MzAsMHhBMiwweDI4LDB4RkEsMHhGQSwweDc0
LDB4REYsCisgICAgMHhBMiwweDI4LDB4ODEsMHgyMCwweDI4LDB4QjAsMHhBOCwweDgwLDB4RTIs
MHgyOCwweDgyLDB4MjgsMHhCRiwweEZGLDB4NzUsMHhGRiwKKyAgICAweEMyLDB4MjgsMHhBMiww
eDI4LDB4RUEsMHg3QSwweDU1LDB4OUQsMHhFMywweDMwLDB4ODEsMHgyOCwweEZGLDB4N0YsMHhB
MiwweEEyLAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHgwQiwweDg5LDB4MDksMHhCRCwweEUz
LDB4MzAsMHhBMiwweDMwLDB4ODAsMHhBQSwweEZGLDB4RkUsCisgICAgMHhFMiwweDMwLDB4QTIs
MHgyOCwweEZBLDB4RkEsMHhGNywweDU2LDB4RTIsMHgzMCwweEMyLDB4MzAsMHgzQiwweDlGLDB4
NUYsMHhERSwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4RkEsMHg4MiwweDdBLDB4NTUsMHhF
MywweDMwLDB4QzIsMHgzMCwweEZGLDB4QjksMHg0QiwweDc3LAorICAgIDB4RTMsMHgzMCwweEEx
LDB4MjgsMHhCOCwweEJDLDB4QUUsMHhCNywweDIzLDB4MzksMHhDMiwweDI4LDB4QUYsMHhCRiww
eEJGLDB4RDcsCisgICAgMHgwMywweDMxLDB4QzIsMHgyOCwweDdBLDB4NTAsMHg5QywweEJDLDB4
MDMsMHgzMSwweEUzLDB4MzAsMHhFOSwweERELDB4NTYsMHg1RSwKKyAgICAweDI0LDB4MzEsMHhD
MiwweDMwLDB4RkYsMHhGNSwweDZGLDB4REYsMHgyNCwweDMxLDB4QzIsMHgzMCwweEZCLDB4REYs
MHhGRCwweEUzLAorICAgIDB4MDMsMHgzMSwweEMzLDB4MzAsMHhGMiwweEZGLDB4RkEsMHg3Riww
eEUzLDB4MzAsMHhDMiwweDI4LDB4QzAsMHg2MCwweDYwLDB4NDMsCisgICAgMHgwMywweDMxLDB4
QTIsMHgyOCwweEFBLDB4MkEsMHhFQiwweEY5LDB4MDMsMHgzOSwweEEyLDB4MjgsMHgyRSwweEFF
LDB4RjcsMHhGNywKKyAgICAweEUzLDB4MzAsMHhDMiwweDI4LDB4MTgsMHhBQSwweDcyLDB4RkIs
MHg0NSwweDM5LDB4RTMsMHgzMCwweENCLDB4RkQsMHhENSwweEQ1LAorICAgIDB4MDMsMHgzMSww
eEMyLDB4MzAsMHhFMiwweDlFLDB4QkMsMHhCOCwweDIzLDB4NDEsMHhFMiwweDMwLDB4MjAsMHgz
RSwweEJGLDB4MzYsCisgICAgMHg2NSwweDQxLDB4MjMsMHg0MSwweDlGLDB4QkYsMHhERSwweDlG
LDB4QTUsMHg1MSwweDQzLDB4NDEsMHg1NywweERELDB4QkQsMHhGRiwKKyAgICAweEM1LDB4NTks
MHg0NCwweDQ5LDB4QkIsMHgzOSwweEJGLDB4RkQsMHgwNiwweDYyLDB4QzUsMHg1MSwweEFCLDB4
OEEsMHhDRCwweEU1LAorICAgIDB4MjYsMHg2MiwweEM1LDB4NTksMHhERSwweEJCLDB4MkYsMHg4
RiwweDRCLDB4ODMsMHgyNiwweDYyLDB4MkQsMHgyRCwweDI5LDB4MkYsCisgICAgMHhFRCwweDlC
LDB4OEMsMHg4QiwweDAzLDB4ODEsMHg4QiwweEFCLDB4RUQsMHg5QiwweDhDLDB4OEIsMHg3Qyww
eEVGLDB4QkEsMHhBRSwKKyAgICAweEFDLDB4OTMsMHg2QiwweDhCLDB4QUYsMHhDNCwweDQ4LDB4
ODAsMHhDRCwweDlCLDB4NEIsMHg4QiwweDJBLDB4M0IsMHg5RCwweEQ3LAorICAgIDB4RUQsMHg5
QiwweDhDLDB4OEIsMHg4MywweEFBLDB4QUYsMHhGNSwweEVELDB4OUIsMHhBQywweDkzLDB4QUIs
MHhGMywweDkyLDB4RUEsCisgICAgMHgwRCwweDlDLDB4OEMsMHg5MywweDgwLDB4MEEsMHhBOSww
eDlELDB4MkUsMHhBNCwweENELDB4OTMsMHhFQSwweDJFLDB4QUQsMHhFQSwKKyAgICAweDZFLDB4
QTQsMHhFRCwweDlCLDB4MjMsMHhFRiwweEVGLDB4REQsMHhCMCwweEI0LDB4MEQsMHg5QywweDhB
LDB4QUIsMHhGNSwweEZELAorICAgIDB4QjAsMHhCNCwweDBFLDB4OUMsMHhBMCwweEFFLDB4QkUs
MHhGNywweDhGLDB4QUMsMHgyRSwweEE0LDB4MEEsMHgwRSwweEFGLDB4N0QsCisgICAgMHhCMCww
eEI0LDB4MEUsMHg5QywweDg4LDB4RUEsMHhBRiwweDdGLDB4OEYsMHhBQywweDJFLDB4QTQsMHg4
MCwweEVGLDB4QkYsMHg1NSwKKyAgICAweDhGLDB4QUMsMHgwRCwweDlDLDB4ODgsMHhBQSwweEVC
LDB4NTUsMHg4RiwweEFDLDB4Q0MsMHg5MywweDhBLDB4RUEsMHg3NywweDdGLAorICAgIDB4NEUs
MHhBNCwweENELDB4OTMsMHhBOCwweEJCLDB4RkYsMHhGRCwweDJFLDB4QTQsMHhFRCwweDlCLDB4
MjMsMHhFMCwweDU5LDB4NTUsCisgICAgMHg0RSwweEE0LDB4RUQsMHg5QiwweEZFLDB4NzMsMHhE
RCwweEQ1LDB4NEYsMHhBNCwweEVELDB4OUIsMHg1RSwweEZFLDB4RUYsMHg4MiwKKyAgICAweDY0
LDB4NTEsMHgwMiwweDUxLDB4OUUsMHhFQSwweEFBLDB4QkMsMHg2MywweDUxLDB4MjIsMHg1MSww
eEJGLDB4QkEsMHhBMiwweEE4LAorICAgIDB4ODQsMHg1OSwweDQzLDB4NTEsMHhBRSwweENFLDB4
RTksMHhFRiwweDY0LDB4NTEsMHgyMywweDUxLDB4RkEsMHhDOCwweEEyLDB4QUEsCisgICAgMHg2
NCwweDUxLDB4MjMsMHg0OSwweENBLDB4NTUsMHg1NywweDdGLDB4NDMsMHg0OSwweDAyLDB4NDks
MHg2QSwweDdFLDB4NTUsMHg3RCwKKyAgICAweDIzLDB4NDksMHhFMSwweDQwLDB4ODIsMHgyRCww
eEE5LDB4QkIsMHgyMywweDQ5LDB4RTIsMHg0MCwweEFBLDB4RTAsMHg3OCwweEY3LAorICAgIDB4
MjMsMHg0OSwweDAyLDB4NDEsMHhCMiwweEZELDB4NUQsMHg1RCwweDIzLDB4NDksMHhDMiwweDQw
LDB4RkEsMHhEQSwweEJBLDB4OEEsCisgICAgMHgyMywweDQ5LDB4QzIsMHg0MCwweDBELDB4MkYs
MHhFQSwweEJBLDB4NDQsMHg0OSwweEUyLDB4NDAsMHg4RSwweDlCLDB4QUYsMHhCQiwKKyAgICAw
eDIzLDB4NDksMHhFMywweDQwLDB4RUYsMHhFMywweEVFLDB4NkEsMHgwOCwweDhCLDB4MDMsMHg0
OSwweEI1LDB4QjUsMHhBRCwweDJELAorICAgIDB4QUIsMHg5QiwweDA4LDB4OEIsMHhBOSwweDBE
LDB4MEIsMHhBQiwweEFCLDB4OUIsMHg0OSwweDkzLDB4QzgsMHg2MiwweDU4LDB4N0MsCisgICAg
MHg2QSwweDlCLDB4MjksMHg5MywweEVCLDB4RUEsMHhCRSwweDdFLDB4NDksMHg5MywweEU4LDB4
OEEsMHg2MCwweEYwLDB4RUEsMHg4MCwKKyAgICAweDQ5LDB4OTMsMHhFNywweDhBLDB4RkUsMHhE
QiwweEJGLDB4MDAsMHg2QSwweDlCLDB4MDgsMHg4QiwweERELDB4OTUsMHg5RiwweDJFLAorICAg
IDB4Q0IsMHhBMywweDY5LDB4OTMsMHgyNSwweDJGLDB4RUYsMHhCNywweDBDLDB4QUMsMHhBQSww
eDlCLDB4QUIsMHhGNywweDc1LDB4RjUsCisgICAgMHhFQywweEEzLDB4NDksMHg4QiwweDAwLDB4
MDAsMHg4QSwweDdBLDB4Q0IsMHhBMywweDg2LDB4N0EsMHhFOCwweDc4LDB4NUUsMHg1NywKKyAg
ICAweDg2LDB4N0EsMHgyNiwweDZBLDB4RjgsMHhBQSwweERDLDB4RkYsMHg2NiwweDcyLDB4MjUs
MHg2QSwweEYwLDB4RkUsMHg1QSwweDgyLAorICAgIDB4NjYsMHg3MiwweDI1LDB4NzIsMHgyMSww
eEVCLDB4RUYsMHhDRSwweDg3LDB4N0EsMHg0NiwweDcyLDB4NzEsMHg3QiwweERELDB4NzIsCisg
ICAgMHg2NywweDcyLDB4QzUsMHg2MSwweEMyLDB4QTgsMHhGOCwweDcyLDB4RTUsMHg2MSwweDYz
LDB4NTEsMHhDMCwweEY4LDB4RkUsMHg1QywKKyAgICAweEM0LDB4NTksMHgyMiwweDQxLDB4QTgs
MHhFQSwweEZGLDB4NTUsMHg4NCwweDUxLDB4MjMsMHg0OSwweEY4LDB4NkEsMHg3RSwweDU1LAor
ICAgIDB4QTUsMHg1MSwweDAyLDB4NDEsMHhCRCwweEJGLDB4MkIsMHhBQiwweEE1LDB4NTksMHg0
MywweDQ5LDB4QUEsMHhFQSwweDY4LDB4RUEsCisgICAgMHg4NCwweDQ5LDB4MjMsMHg0MSwweEFD
LDB4RkUsMHhBQiwweEFBLDB4QTUsMHg1MSwweDQ0LDB4NDksMHg4RiwweEVCLDB4RkEsMHg3RiwK
KyAgICAweDY0LDB4NDksMHgyMywweDQxLDB4RkUsMHhGQSwweEZBLDB4NUYsMHg2NCwweDQ5LDB4
MjMsMHg0MSwweEFBLDB4QTAsMHhCNSwweEJCLAorICAgIDB4NDQsMHg0OSwweDAzLDB4MzksMHhB
OCwweEIyLDB4N0MsMHg1NiwweDg0LDB4NTEsMHhFMiwweDM4LDB4MkYsMHhCRiwweDlELDB4NTUs
CisgICAgMHhFNSwweDYxLDB4MjMsMHg0OSwweDAwLDB4MDIsMHgwMywweDI5LDB4RTUsMHg2MSww
eEE0LDB4NTksMHhGQSwweDVBLDB4QkEsMHg3OCwKKyAgICAweEM1LDB4NjEsMHgyMywweDQ5LDB4
NzgsMHg3QSwweEYwLDB4RjAsMHgyMywweDQ5LDB4RTIsMHg0MCwweEVBLDB4NkMsMHhBOCwweDAw
LAorICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHg2MywweEUxLDB4N0UsMHg2QSwweDAzLDB4NDEs
MHhDMiwweDM4LDB4RkYsMHg1QiwweDdBLDB4RUUsCisgICAgMHhFMiwweDM4LDB4QzIsMHgzMCww
eEY4LDB4RUYsMHg2NywweERGLDB4RTMsMHgzMCwweEMyLDB4MzAsMHhCRiwweEJBLDB4N0UsMHg1
QSwKKyAgICAweDAzLDB4MzksMHhBMiwweDI4LDB4NkEsMHg4QSwweEFCLDB4M0EsMHhFMywweDMw
LDB4ODEsMHgyMCwweEZGLDB4N0IsMHhGOCwweDY4LAorICAgIDB4QTIsMHgyOCwweDQwLDB4MTgs
MHg2OCwweEZBLDB4RUEsMHhGRSwweDgyLDB4MTgsMHg0MSwweDE4LDB4N0EsMHhGRiwweEFGLDB4
QUYsCisgICAgMHhBMSwweDIwLDB4NDAsMHgxOCwweEJELDB4MkEsMHgyQiwweDJCLDB4QzIsMHgy
OCwweEEyLDB4MjAsMHgwQiwweEUyLDB4NjEsMHhEQiwKKyAgICAweDAzLDB4MzEsMHhBMiwweDI4
LDB4QkYsMHhBRiwweEJELDB4MkQsMHgyNCwweDM5LDB4QzIsMHgyOCwweEQ1LDB4REQsMHhCNyww
eDBBLAorICAgIDB4NjUsMHg0MSwweEMyLDB4MjgsMHg1NywweERGLDB4RUYsMHgwMiwweDY1LDB4
NDEsMHhDMSwweDI4LDB4RjUsMHhFRiwweDgyLDB4ODAsCisgICAgMHg0NCwweDQxLDB4RTMsMHgz
MCwweEZCLDB4N0UsMHhCQywweEJDLDB4MjMsMHgzOSwweEMyLDB4MzAsMHg1NSwweDc2LDB4RkUs
MHhFOCwKKyAgICAweDAzLDB4MzksMHhBMiwweDI4LDB4NUYsMHhERiwweEZCLDB4NjAsMHhDMiww
eDMwLDB4ODEsMHgyOCwweEQwLDB4RTAsMHhGMCwweDBBLAorICAgIDB4MDMsMHgzOSwweEEyLDB4
MzAsMHhENSwweERELDB4QkQsMHg4MywweEUzLDB4MzgsMHhBMiwweDI4LDB4QkUsMHhGRSwweEY4
LDB4RTgsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEE5LDB4RUIsMHg3NywweEI1LDB4MDMs
MHgzOSwweEUyLDB4MzAsMHg3QSwweDcyLDB4NjEsMHg3OCwKKyAgICAweDI0LDB4MzksMHhDMiww
eDMwLDB4RUYsMHhBMywweEJCLDB4RkQsMHgyMywweDM5LDB4RTIsMHgzMCwweDhGLDB4RkEsMHhF
RiwweDc1LAorICAgIDB4MjMsMHgzOSwweEUzLDB4MzAsMHhBMiwweEJBLDB4QUIsMHhGOSwweDAz
LDB4MzksMHhBMiwweDI4LDB4RTgsMHhGOCwweEY4LDB4REMsCisgICAgMHgwMywweDM5LDB4QTIs
MHgyOCwweDIyLDB4QUYsMHhGRCwweEY3LDB4RTIsMHgzMCwweEEzLDB4MjgsMHhGRSwweEFBLDB4
RUEsMHgwMiwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4RUEsMHhBNywweEFGLDB4MkYsMHhF
MywweDMwLDB4QTIsMHgyOCwweEU3LDB4RkYsMHhFRiwweDJFLAorICAgIDB4RTIsMHgzMCwweEEy
LDB4MjgsMHhGNywweERGLDB4RkYsMHhGOCwweEMyLDB4MjgsMHg2MSwweDIwLDB4N0YsMHhGQSww
eDA4LDB4MDAsCisgICAgMHhDMiwweDI4LDB4ODEsMHgyMCwweEJELDB4RkQsMHhFQiwweDhCLDB4
QzIsMHgzMCwweDgxLDB4MjAsMHhBQSwweEVCLDB4RkQsMHg3QSwKKyAgICAweEEyLDB4MjgsMHg2
MSwweDIwLDB4QjAsMHhFRiwweEJFLDB4RkUsMHhBMiwweDI4LDB4ODEsMHgyMCwweDBBLDB4OEQs
MHhFRCwweDdELAorICAgIDB4QzIsMHgyOCwweDYxLDB4MjAsMHgwQSwweDJBLDB4MDEsMHgwQSww
eEUyLDB4MzAsMHhBMiwweDI4LDB4OEUsMHhCNywweENCLDB4ODgsCisgICAgMHhFMywweDMwLDB4
QTIsMHgyOCwweDZGLDB4QUMsMHgyRiwweDJGLDB4MDQsMHgzMSwweEMzLDB4MzAsMHg1NSwweERB
LDB4NUUsMHhGRiwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4NUYsMHgyQywweDlCLDB4QkIs
MHgwMywweDM5LDB4QzIsMHgzMCwweDdGLDB4REEsMHhFQSwweDZBLAorICAgIDB4RTIsMHgzMCww
eEEyLDB4MjgsMHhCQSwweEFGLDB4QTUsMHhENywweEUyLDB4MzAsMHhBMiwweDI4LDB4RkEsMHhG
RSwweEVFLDB4QkYsCisgICAgMHhDMiwweDI4LDB4QTIsMHgyOCwweEQ3LDB4QkQsMHhBRSwweEEw
LDB4MDMsMHgzMSwweEMyLDB4MjgsMHhGNywweEJGLDB4MkEsMHhBQiwKKyAgICAweDAzLDB4MzEs
MHhFMywweDMwLDB4RjUsMHhFNywweEZGLDB4N0IsMHgyNCwweDM5LDB4RTMsMHgzMCwweEVCLDB4
QjIsMHhBRiwweDI5LAorICAgIDB4MjQsMHgzOSwweEMyLDB4MjgsMHg3RSwweEVBLDB4RTIsMHhD
MywweDI0LDB4MzksMHhDMiwweDI4LDB4RTMsMHhBRCwweDZCLDB4NUUsCisgICAgMHhFMywweDMw
LDB4QzIsMHgyOCwweEJBLDB4M0MsMHgyOSwweDhELDB4MDMsMHgzMSwweEMyLDB4MzAsMHg2Qiww
eEZBLDB4RkUsMHhGRiwKKyAgICAweDIzLDB4MzEsMHhDMiwweDMwLDB4RkQsMHhGQiwweEZGLDB4
NTcsMHhFMywweDMwLDB4QzIsMHgyOCwweEQ3LDB4RjcsMHhGQSwweDAyLAorICAgIDB4MDMsMHgz
MSwweEEzLDB4MzAsMHhBQiwweDBBLDB4QUEsMHgwOCwweDAzLDB4MzEsMHhDMywweDMwLDB4MkMs
MHhCQywweEZFLDB4ODIsCisgICAgMHgwMywweDMxLDB4RTIsMHgzMCwweEQ4LDB4NTUsMHhBRiww
eEZCLDB4NDQsMHg0MSwweEUyLDB4MzAsMHgyRiwweEE1LDB4QkQsMHhGNywKKyAgICAweDY0LDB4
NDksMHgwMywweDM5LDB4QUEsMHgwMiwweEFFLDB4RjcsMHhBNSwweDUxLDB4MjMsMHg0MSwweDNF
LDB4MkIsMHhERiwweEZELAorICAgIDB4QTUsMHg1MSwweDQ0LDB4NDksMHhGRiwweEFBLDB4QUMs
MHhENiwweEM1LDB4NTEsMHg2NCwweDQ5LDB4QUEsMHgzRiwweEFELDB4MjksCisgICAgMHg0OCww
eDZBLDB4QzUsMHg1MSwweEZELDB4QkYsMHgzRCwweDM5LDB4QUMsMHg5MywweDg4LDB4NzIsMHhB
RCwweDJELDB4MjksMHgyRiwKKyAgICAweDBFLDB4OUMsMHhBRCwweDkzLDB4REQsMHg1RiwweEFC
LDB4QUIsMHhFRCwweDlCLDB4OEMsMHg4QiwweDI3LDB4RUYsMHg3RSwweEE4LAorICAgIDB4Q0Qs
MHg5MywweDhDLDB4OEIsMHhGQSwweDdBLDB4NkEsMHg3NiwweEFELDB4OTMsMHg2QiwweDhCLDB4
QjYsMHhERiwweEZCLDB4NUUsCisgICAgMHg4QywweDkzLDB4NEIsMHg4MywweEMwLDB4QkQsMHhC
NywweDZBLDB4Q0QsMHg5MywweDRCLDB4ODMsMHgwMiwweDBBLDB4M0IsMHgyRCwKKyAgICAweENE
LDB4OTMsMHhBQywweDkzLDB4OUEsMHgzMCwweDk4LDB4NUMsMHgyRSwweEE0LDB4Q0QsMHg5Myww
eEVCLDB4RkQsMHhERiwweDM1LAorICAgIDB4MkUsMHhBNCwweENELDB4OTMsMHhGRiwweEZGLDB4
NkYsMHhDRCwweDJFLDB4QTQsMHhDRCwweDkzLDB4OEIsMHhFRiwweDlCLDB4QkYsCisgICAgMHgy
RSwweEE0LDB4RUUsMHg5QiwweEZBLDB4ODIsMHhBRSwweDZCLDB4MkUsMHhBNCwweENELDB4OTMs
MHgwMiwweEFCLDB4N0EsMHhGOSwKKyAgICAweDJFLDB4QTQsMHhDRCwweDkzLDB4QTgsMHhBOCww
eDJCLDB4QUQsMHgwRCwweDlDLDB4Q0MsMHg5MywweDAwLDB4MjAsMHhBOCwweDVBLAorICAgIDB4
MkQsMHg5QywweEFDLDB4OTMsMHhFOCwweEU4LDB4RkEsMHg1RiwweENELDB4OTMsMHhBQywweDkz
LDB4ODMsMHhFRiwweEFDLDB4MzksCisgICAgMHhFRCwweDlCLDB4QUMsMHg5MywweDNGLDB4REYs
MHhFQiwweDdBLDB4RUQsMHg5QiwweENDLDB4OTMsMHgwMCwweDJBLDB4RkYsMHg5NSwKKyAgICAw
eDBELDB4OUMsMHhDQywweDkzLDB4OEEsMHgyOCwweDJCLDB4MkIsMHg0RiwweEE0LDB4RUQsMHg5
QiwweDBGLDB4QUYsMHhERiwweDZELAorICAgIDB4NDMsMHg1MSwweDIzLDB4NDksMHgxNywweDk1
LDB4QUEsMHgzOSwweDYzLDB4NTEsMHgyMywweDQ5LDB4NkEsMHhFQSwweEVFLDB4N0QsCisgICAg
MHg2NCwweDUxLDB4MjMsMHg0OSwweENCLDB4NzMsMHhFRSwweDY5LDB4NjQsMHg1MSwweDIzLDB4
NDksMHhBQSwweDZBLDB4N0YsMHhFRCwKKyAgICAweDQzLDB4NDksMHgwMiwweDQ5LDB4NkMsMHg1
RiwweDU3LDB4NTgsMHgyMiwweDQ5LDB4RTEsMHg0MCwweEVDLDB4REUsMHhFQiwweEFFLAorICAg
IDB4MDIsMHg0OSwweEUyLDB4NDAsMHhGRSwweDhBLDB4RjIsMHg4QSwweDIzLDB4NDksMHhFMiww
eDQwLDB4RTcsMHhBRiwweDk5LDB4NTUsCisgICAgMHgyMywweDQ5LDB4QzEsMHgzOCwweDBBLDB4
ODIsMHhBQSwweEI3LDB4MjIsMHg0OSwweEUzLDB4NDAsMHhBQSwweDJCLDB4QUIsMHhGRiwKKyAg
ICAweDIzLDB4NDksMHhFMiwweDQwLDB4NzcsMHhCNywweDE3LDB4RkIsMHgyMywweDQ5LDB4RTMs
MHg0MCwweEMzLDB4OEIsMHg4RSwweDJGLAorICAgIDB4NDMsMHg1MSwweDAzLDB4NDksMHhERCww
eDQzLDB4RUQsMHhCRCwweDQ5LDB4OTMsMHg0MywweDUxLDB4MjUsMHgyRCwweDJELDB4MEQsCisg
ICAgMHhBQSwweDlCLDB4NjksMHg5MywweEY3LDB4QUUsMHhFMywweDZCLDB4OEEsMHg5QiwweDQ5
LDB4OTMsMHhCQSwweEY4LDB4RkEsMHhFRiwKKyAgICAweDY5LDB4OUIsMHg0OSwweDkzLDB4RDYs
MHg1NSwweEU1LDB4NTUsMHg4OSwweDlCLDB4MjgsMHg5MywweEQ3LDB4NjcsMHgxNywweDNELAor
ICAgIDB4OEEsMHg5QiwweDI5LDB4OTMsMHg3RCwweDdGLDB4N0EsMHhDMCwweDZBLDB4OUIsMHgy
OSwweDkzLDB4NkIsMHgzRSwweEJBLDB4QkUsCisgICAgMHg4QSwweDlCLDB4NDksMHg5MywweDI3
LDB4MEYsMHhBQSwweEJGLDB4Q0IsMHhBMywweDI5LDB4OEIsMHg4QSwweEFBLDB4RUEsMHhGRiwK
KyAgICAweDhBLDB4OUIsMHg2NiwweDdBLDB4QTAsMHg3OCwweDdFLDB4NTcsMHhBNywweDdBLDB4
NDYsMHg3MiwweEY4LDB4N0IsMHhGRSwweEZGLAorICAgIDB4ODcsMHg3QSwweDI1LDB4NkEsMHhG
RiwweDZBLDB4QUIsMHhBQiwweDg2LDB4N0EsMHg0NSwweDZBLDB4RUIsMHhBRCwweEI2LDB4RTgs
CisgICAgMHg4NywweDcyLDB4NDYsMHg3MiwweEY3LDB4ODcsMHgwOCwweDZBLDB4ODcsMHg3QSww
eDA2LDB4NjIsMHg4MiwweDgwLDB4ODIsMHg3MiwKKyAgICAweDQ2LDB4NkEsMHgyMywweDQ5LDB4
RTAsMHhGQSwweDdBLDB4RDYsMHg4NCwweDU5LDB4MDIsMHg0MSwweEE4LDB4QkUsMHg3NywweDdG
LAorICAgIDB4NDMsMHg0OSwweDIzLDB4NDEsMHhEQywweEQ3LDB4QTUsMHg4OSwweDYzLDB4NDks
MHgyMywweDQ5LDB4OTcsMHgyRiwweDJBLDB4MEEsCisgICAgMHhBNSwweDU5LDB4NjQsMHg1MSww
eEJELDB4MkQsMHg4RiwweEJCLDB4ODQsMHg1MSwweDQzLDB4NDksMHhFRSwweDY4LDB4RkUsMHhG
QywKKyAgICAweDY0LDB4NDksMHg0MywweDQ5LDB4MUEsMHg5NSwweDM3LDB4OTgsMHg4NSwweDQ5
LDB4NDQsMHg0OSwweEZGLDB4QUUsMHhCQSwweEVCLAorICAgIDB4NjQsMHg0OSwweDI0LDB4NDEs
MHg3RiwweEVDLDB4NkUsMHg3RSwweDQ0LDB4NDksMHgyNCwweDQxLDB4MkEsMHg2RiwweEU1LDB4
MkQsCisgICAgMHgyMywweDQxLDB4MDMsMHg0MSwweEVDLDB4RkEsMHgyMywweEUwLDB4MjMsMHg0
MSwweEMyLDB4MzgsMHgyRSwweEFFLDB4QUEsMHhGNCwKKyAgICAweEE1LDB4NTksMHgwMywweDQx
LDB4MDksMHgwNSwweEY1LDB4NTUsMHhDNSwweDU5LDB4MjMsMHg0OSwweEE4LDB4QUEsMHhBQSww
eEJELAorICAgIDB4QTQsMHg1MSwweDQzLDB4NTEsMHhFOCwweEZBLDB4RkUsMHg3RSwweDY0LDB4
NTEsMHgwMywweDQxLDB4RkYsMHhFQSwweEZBLDB4NkMsCisgICAgMHgyMywweDQxLDB4QTEsMHgz
MCwweEU4LDB4RUEsMHg3QSwweDdFLDB4MDMsMHgzOSwweEExLDB4MzAsMHhBQiwweDhCLDB4QUQs
MHhCRSwKKyAgICAweEUyLDB4MzgsMHhBMSwweDI4LDB4MDIsMHgyOCwweEVFLDB4NzgsMHgwMyww
eDM5LDB4QzIsMHgzMCwweDVFLDB4QUEsMHg4MiwweDUzLAorICAgIDB4RTMsMHgzMCwweDgxLDB4
MjgsMHg4MiwweDhBLDB4RUYsMHhERiwweEUzLDB4MzAsMHg4MSwweDIwLDB4RkMsMHhGRSwweEY3
LDB4NUQsCisgICAgMHhBMSwweDIwLDB4NDAsMHgxOCwweEY4LDB4RjgsMHhGOCwweDdBLDB4ODIs
MHgyMCwweDQwLDB4MTgsMHhCOSwweDJGLDB4QUIsMHhBRiwKKyAgICAweEMyLDB4MjgsMHg2MSww
eDE4LDB4QjcsMHgyRiwweDJCLDB4MDMsMHgwMywweDMxLDB4QTIsMHgyOCwweDlGLDB4ODcsMHgy
QiwweDJBLAorICAgIDB4NDQsMHg0MSwweEMzLDB4MzAsMHgyRCwweEJCLDB4OEEsMHhCQSwweDQ0
LDB4NDEsMHhDMiwweDI4LDB4MDIsMHgwOCwweEJFLDB4REUsCisgICAgMHg4NSwweDQxLDB4QTIs
MHgyOCwweDBBLDB4QTgsMHhGRSwweEY3LDB4NDQsMHg0MSwweEMyLDB4MzAsMHg4MCwweEFBLDB4
RUYsMHg1RCwKKyAgICAweDI0LDB4MzksMHhFMywweDMwLDB4ODgsMHhBQiwweDNELDB4RDUsMHgy
MywweDQxLDB4MDMsMHgzOSwweDVELDB4NUYsMHg3QiwweDU1LAorICAgIDB4MDMsMHgzOSwweEMy
LDB4MzAsMHg3MiwweDk4LDB4QUEsMHhBMCwweDAzLDB4MzksMHhBMiwweDMwLDB4RTUsMHgyRSww
eDhBLDB4OEEsCisgICAgMHgwMywweDM5LDB4QzMsMHgzMCwweEUyLDB4RUEsMHhGRSwweEY1LDB4
QzIsMHgzOCwweEUzLDB4MzAsMHhGNSwweEJGLDB4RkQsMHhGRiwKKyAgICAweEUzLDB4MzgsMHhB
MSwweDI4LDB4MDMsMHhBQSwweEI2LDB4OUYsMHgwMywweDM5LDB4QzIsMHgzMCwweEVBLDB4QUEs
MHgyMiwweEYyLAorICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHhBQiwweEFCLDB4RUUsMHg3OCww
eEUyLDB4MzAsMHhDMiwweDMwLDB4RTEsMHhBMCwweDIzLDB4QkIsCisgICAgMHgwMywweDMxLDB4
QzIsMHgyOCwweEI5LDB4QjUsMHhBNywweEQ1LDB4RTMsMHgzMCwweDgxLDB4MjgsMHhCOCwweEY4
LDB4N0EsMHg3RiwKKyAgICAweEMyLDB4MjgsMHg4MiwweDI4LDB4MjgsMHgyRiwweEFGLDB4RjUs
MHhFMywweDMwLDB4QTIsMHgyOCwweDBBLDB4QUYsMHhCRCwweEU5LAorICAgIDB4MDQsMHgzMSww
eEMzLDB4MzAsMHhCRiwweEVELDB4RkYsMHhBRCwweEUzLDB4MzAsMHhDMiwweDI4LDB4Q0MsMHg5
OCwweEYwLDB4QzAsCisgICAgMHgwMywweDM5LDB4RTMsMHgzMCwweDU3LDB4N0IsMHhFQiwweEE1
LDB4RTMsMHgzMCwweEEyLDB4MjgsMHg3RiwweEZGLDB4MkUsMHhFMiwKKyAgICAweEUzLDB4MzAs
MHg4MSwweDI4LDB4QUQsMHhBQiwweEFBLDB4RUEsMHhDMiwweDI4LDB4ODIsMHgyOCwweDc4LDB4
QjAsMHhDMiwweDgwLAorICAgIDB4RTMsMHgzMCwweDgxLDB4MjAsMHg1NSwweDdGLDB4RUEsMHhB
MCwweEMyLDB4MjgsMHg2MSwweDIwLDB4RkQsMHhGQiwweEFBLDB4MDAsCisgICAgMHhFMiwweDMw
LDB4ODEsMHgyMCwweEFGLDB4QUQsMHhCRSwweDI4LDB4MjMsMHgzOSwweEMyLDB4MjgsMHhGRCww
eEZGLDB4RUIsMHg4RiwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4MkEsMHhBMCwweEEwLDB4
RjgsMHgwMywweDMxLDB4QzIsMHgzMCwweDE1LDB4QjUsMHhBNywweEFGLAorICAgIDB4MDMsMHgz
MSwweEEyLDB4MjgsMHg5QywweEZFLDB4RkYsMHg1NiwweEUzLDB4MzAsMHhBMiwweDI4LDB4MDIs
MHgwMiwweEVBLDB4REYsCisgICAgMHhDMiwweDMwLDB4QTIsMHgyOCwweEFFLDB4MEUsMHgyRSww
eEI3LDB4RTMsMHgzMCwweEMyLDB4MjgsMHhERSwweDk2LDB4MkYsMHhGRiwKKyAgICAweDAzLDB4
MzEsMHhBMiwweDI4LDB4NkEsMHhFMiwweEEwLDB4QUIsMHgwMywweDMxLDB4QTIsMHgzMCwweEE5
LDB4MjIsMHg4MiwweEE4LAorICAgIDB4MDMsMHgzMSwweEUzLDB4MzAsMHgyMiwweDZBLDB4RjEs
MHhCMiwweDI0LDB4MzksMHhBMSwweDI4LDB4MEEsMHhBQSwweERGLDB4NUYsCisgICAgMHgyNCww
eDM5LDB4QzIsMHgzMCwweEY4LDB4N0EsMHg3RiwweDVELDB4RTMsMHgzMCwweEEyLDB4MjgsMHhG
MCwweEY4LDB4RkEsMHg3QiwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4MDUsMHhFRCwweDlG
LDB4QUYsMHhFMywweDMwLDB4QzIsMHgyOCwweDhFLDB4MkYsMHgwRCwweEE1LAorICAgIDB4RTMs
MHgzMCwweEMyLDB4MjgsMHg1NiwweDJBLDB4MzksMHgyRiwweEUzLDB4MzAsMHhBMiwweDI4LDB4
MDgsMHhCRSwweDNFLDB4MkEsCisgICAgMHgyMywweDMxLDB4RTIsMHgzMCwweDk3LDB4QzcsMHg5
NSwweEY1LDB4MDMsMHgzMSwweEUyLDB4MzAsMHhFMCwweDY4LDB4NDAsMHhENywKKyAgICAweDAz
LDB4MzEsMHhBMSwweDI4LDB4MjIsMHg4MiwweEMyLDB4RkEsMHgwMywweDM5LDB4QzEsMHgyOCww
eDgyLDB4MDMsMHgwOSwweDA1LAorICAgIDB4NDQsMHg0MSwweDAzLDB4MzksMHhGQiwweDJCLDB4
QUIsMHhFRCwweDY0LDB4NDksMHgyMywweDQxLDB4OEYsMHhBRCwweDlELDB4RjUsCisgICAgMHg2
NCwweDQ5LDB4MjMsMHg0MSwweDc5LDB4RUUsMHhFMiwweEUwLDB4RTUsMHg1OSwweDQzLDB4NDEs
MHgyRiwweEFELDB4QUIsMHhBQSwKKyAgICAweEM4LDB4N0EsMHhFNCwweDUxLDB4QjcsMHhCRCww
eDJELDB4MkYsMHhDRCwweDlCLDB4QzksMHg3QSwweDJELDB4MEQsMHgyOSwweDBCLAorICAgIDB4
MEYsMHg5QywweENELDB4OTMsMHhBRiwweEE5LDB4QzMsMHgyRiwweEVELDB4OUIsMHhBRCwweDkz
LDB4QzgsMHhBMiwweDZBLDB4ODIsCisgICAgMHhFRSwweDlCLDB4OEMsMHg4QiwweDVFLDB4NUEs
MHhFOCwweEFBLDB4QUMsMHg5MywweDRCLDB4ODMsMHhEQSwweEZCLDB4RkYsMHhGNiwKKyAgICAw
eDhCLDB4OEIsMHg0QiwweDgzLDB4QkEsMHg5OSwweDc3LDB4QUYsMHhBRCwweDkzLDB4MkEsMHg4
MywweDM3LDB4OTcsMHhENSwweEY1LAorICAgIDB4Q0QsMHg5MywweDZDLDB4OEIsMHg4MCwweEJB
LDB4MkYsMHgyRCwweEVELDB4OUIsMHhDRCwweDkzLDB4MjYsMHgyRiwweDM1LDB4RjUsCisgICAg
MHgwRCwweDlDLDB4QUMsMHg5MywweDgwLDB4MEEsMHgzOSwweDJCLDB4MEUsMHg5QywweENELDB4
OUIsMHhBQSwweEI5LDB4RTAsMHhFMiwKKyAgICAweEVELDB4OUIsMHhDRCwweDkzLDB4NjgsMHgy
MCwweDBBLDB4RTIsMHgwRSwweDlDLDB4Q0QsMHg5MywweDYyLDB4REUsMHhDQiwweENFLAorICAg
IDB4RUQsMHg5QiwweENELDB4OTMsMHhFMywweDY4LDB4NTcsMHg5NywweEVELDB4OUIsMHhBRCww
eDkzLDB4RjYsMHhFRSwweDNBLDB4QUMsCisgICAgMHhFRCwweDkzLDB4OEMsMHg5MywweERBLDB4
QUEsMHgyQSwweEE4LDB4MEQsMHg5QywweEFDLDB4OTMsMHhGRCwweDU1LDB4RDQsMHg1RiwKKyAg
ICAweENELDB4OTMsMHg2QiwweDhCLDB4RTAsMHgyQSwweDIyLDB4QTIsMHhDRCwweDkzLDB4OEMs
MHg5MywweDJBLDB4MDIsMHhBRSwweDJELAorICAgIDB4RUQsMHg5QiwweDhDLDB4OEIsMHgwMiww
eDBBLDB4MkEsMHhCNiwweDJFLDB4QTQsMHhDRCwweDkzLDB4OEUsMHhGRSwweERGLDB4RkQsCisg
ICAgMHg0NCwweDUxLDB4MDMsMHg0OSwweEYyLDB4RTgsMHhGQiwweDk3LDB4NDMsMHg1MSwweDAz
LDB4NDksMHgzQSwweEFCLDB4MkYsMHhBNiwKKyAgICAweDYzLDB4NTEsMHgwMywweDQ5LDB4RUIs
MHhBMCwweEZCLDB4RDcsMHg0NCwweDUxLDB4MjMsMHg0OSwweDZCLDB4RUYsMHg1MiwweDU1LAor
ICAgIDB4MjIsMHg0OSwweDAyLDB4NDEsMHg4MCwweDBGLDB4QkEsMHhCOCwweDIzLDB4NDksMHgw
MiwweDQxLDB4RDYsMHhEQywweDBDLDB4QkUsCisgICAgMHgyMywweDQ5LDB4QzEsMHgzOCwweEEy
LDB4RTYsMHg2MiwweEFBLDB4MjMsMHg0OSwweEMxLDB4MzgsMHhGQSwweDZGLDB4MkYsMHgwQSwK
KyAgICAweDIzLDB4NDEsMHhDMSwweDQwLDB4RjYsMHg4OCwweEVBLDB4Q0UsMHgwMiwweDQxLDB4
QzIsMHgzOCwweDI4LDB4Q0QsMHhBQiwweDhCLAorICAgIDB4MjMsMHg0MSwweEUzLDB4NDAsMHhF
RSwweDBGLDB4MjcsMHgzRSwweDIzLDB4NDksMHhFMiwweDQwLDB4QjIsMHhEMCwweEVBLDB4RkIs
CisgICAgMHg0MywweDUxLDB4RTIsMHg0MCwweDJCLDB4MEYsMHgzRCwweEJGLDB4NjksMHg5Myww
eEM0LDB4NTksMHgyRCwweDA5LDB4MjksMHgwRCwKKyAgICAweEE5LDB4OUIsMHg2OSwweDkzLDB4
N0YsMHg1MywweDdFLDB4NTQsMHg4QSwweDlCLDB4NDksMHg5MywweEVGLDB4RUEsMHhFOCwweDZE
LAorICAgIDB4NjksMHg5MywweDI4LDB4OEIsMHhGRSwweEE5LDB4RkUsMHgwRSwweDhBLDB4OUIs
MHg0OSwweDkzLDB4QTUsMHgyRCwweDBELDB4QTAsCisgICAgMHhBQiwweDlCLDB4NDksMHg5Myww
eDQyLDB4QkEsMHhGQSwweEQ1LDB4OEEsMHg5QiwweDRBLDB4OTMsMHg5RiwweEFCLDB4RkEsMHhE
RiwKKyAgICAweDhBLDB4OUIsMHhFOSwweDhBLDB4QkEsMHhFOCwweEY4LDB4RkEsMHgyQSwweDkz
LDB4MDYsMHg2QSwweDgwLDB4RTgsMHhGQSwweDdFLAorICAgIDB4ODcsMHg3QSwweDI1LDB4NkEs
MHhCQywweEY4LDB4RUUsMHg3RiwweDg3LDB4NzIsMHg0NiwweDcyLDB4QUQsMHg4MywweDhBLDB4
NTgsCisgICAgMHg4NywweDcyLDB4NDYsMHg3MiwweEFBLDB4QkEsMHhBQiwweERELDB4QTcsMHg3
QSwweDQ2LDB4NzIsMHg1RiwweDlBLDB4QkYsMHgwQSwKKyAgICAweEE3LDB4N0EsMHg0NiwweDZB
LDB4RUIsMHhFRSwweEMyLDB4NjgsMHg0NiwweDcyLDB4NjQsMHg1MSwweEUwLDB4RTAsMHg3OCww
eDVFLAorICAgIDB4ODQsMHg1OSwweDAyLDB4NDEsMHhGQywweDVFLDB4RkYsMHhEQywweDQzLDB4
NDksMHgwMiwweDQxLDB4QzIsMHhBQSwweEFELDB4QkYsCisgICAgMHg2NCwweDUxLDB4MDIsMHg0
MSwweEE5LDB4OEYsMHhBRiwweDJBLDB4QTUsMHg1MSwweDQzLDB4NDksMHhCRiwweEE5LDB4QkIs
MHg4MiwKKyAgICAweEE0LDB4NTEsMHg0MywweDQ5LDB4QTgsMHhDOCwweDZBLDB4RkUsMHhBNCww
eDUxLDB4NDMsMHg0OSwweERBLDB4MzUsMHgyNSwweEVGLAorICAgIDB4ODQsMHg0OSwweDQ0LDB4
NDksMHg3QSwweDc4LDB4QTAsMHg4MCwweDg1LDB4NDksMHg0NCwweDQ5LDB4RUIsMHg4QiwweDM3
LDB4MTcsCisgICAgMHg4NCwweDQ5LDB4NDQsMHg0OSwweDc3LDB4RkUsMHhGNiwweERCLDB4NDQs
MHg0MSwweDAzLDB4NDEsMHhBOCwweEFFLDB4QUUsMHhFQSwKKyAgICAweDQ0LDB4NDksMHgwMyww
eDQxLDB4RUUsMHgyRiwweEFELDB4QkEsMHgyNCwweDQxLDB4RTMsMHgzOCwweEQ2LDB4RkIsMHhG
QywweEFBLAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhBOCwweDVBLDB4NzcsMHg1RSwweDY0
LDB4NTEsMHhBMiwweDM4LDB4MEIsMHhBRiwweEI1LDB4RjUsCisgICAgMHg4NCwweDUxLDB4MDMs
MHg0MSwweEEwLDB4QTIsMHg4QSwweEE1LDB4NjQsMHg1MSwweDAyLDB4NDEsMHhFOCwweEVFLDB4
NkEsMHhFQiwKKyAgICAweDIzLDB4NDEsMHhDMiwweDMwLDB4NUYsMHg3QiwweEVCLDB4RTgsMHgw
MywweDM5LDB4QzIsMHgzOCwweEZGLDB4RkYsMHhBNywweDhGLAorICAgIDB4MDMsMHgzOSwweEMy
LDB4MzAsMHg1NywweERGLDB4RkUsMHhGQSwweEUzLDB4MzAsMHg4MSwweDI4LDB4QTIsMHhFQSww
eEVBLDB4NUEsCisgICAgMHhBMiwweDI4LDB4NjEsMHgyMCwweEEwLDB4QTIsMHg3QSwweDdGLDB4
ODEsMHgyMCwweDQxLDB4MTgsMHg4MCwweEU4LDB4N0UsMHg3RiwKKyAgICAweDYxLDB4MjAsMHg0
MSwweDE4LDB4RTIsMHhFRiwweEZELDB4OTUsMHhBMiwweDI4LDB4NDEsMHgxOCwweEJELDB4QUYs
MHhBRiwweDNGLAorICAgIDB4RTMsMHgyOCwweDgxLDB4MjAsMHg4QiwweEFELDB4RkYsMHg1Nyww
eEUzLDB4MzAsMHg4MSwweDIwLDB4MEEsMHhBQiwweEVELDB4RjksCisgICAgMHhFMywweDMwLDB4
ODEsMHgyMCwweDgwLDB4RUYsMHhGRCwweDU3LDB4QzIsMHgyOCwweDgxLDB4MjAsMHgyMCwweEYy
LDB4QUYsMHhBRiwKKyAgICAweEMzLDB4MzAsMHg4MiwweDIwLDB4QTcsMHg5NywweEZGLDB4QkUs
MHhDMywweDI4LDB4ODIsMHgyOCwweEVBLDB4RUIsMHhGRSwweDc2LAorICAgIDB4MDMsMHgzOSww
eDgxLDB4MjAsMHhBQiwweDJGLDB4RkQsMHhGNSwweDI0LDB4MzksMHhFMiwweDMwLDB4QkYsMHhC
RSwweEFFLDB4QjUsCisgICAgMHgyNCwweDM5LDB4RTMsMHgzOCwweDdBLDB4RjMsMHhERCwweDc3
LDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGRiwweEZCLDB4RjgsMHhFRSwKKyAgICAweEUzLDB4MzAs
MHhBMSwweDI4LDB4M0UsMHhGOCwweDcwLDB4QTIsMHgwMywweDM5LDB4QTIsMHgyOCwweDhGLDB4
RUIsMHhGQiwweDdGLAorICAgIDB4QzIsMHgzMCwweDgxLDB4MjgsMHgyOCwweDI4LDB4QTgsMHhC
RCwweEUyLDB4MzAsMHhBMiwweDMwLDB4RUEsMHhBQSwweDhGLDB4MjYsCisgICAgMHhFMywweDMw
LDB4QTIsMHgzMCwweDQwLDB4ODIsMHgwMCwweDAyLDB4QzIsMHgzMCwweEUzLDB4MjgsMHhCQSww
eDJBLDB4MEUsMHhCRSwKKyAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4NUEsMHg1RSwweEU4LDB4
NTgsMHhBMiwweDI4LDB4ODEsMHgyMCwweDdCLDB4NkIsMHg1OCwweDcwLAorICAgIDB4QTIsMHgy
OCwweDYxLDB4MjAsMHhERiwweEJGLDB4MUIsMHgyQiwweEMzLDB4MzAsMHhBMiwweDI4LDB4MkQs
MHhERiwweENBLDB4MkIsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDJCLDB4RUEsMHhBQiww
eDNGLDB4MDMsMHgzMSwweEMyLDB4MzAsMHhFQSwweEZCLDB4RUEsMHgwOSwKKyAgICAweDAzLDB4
MzEsMHhDMywweDMwLDB4OEYsMHhCRiwweEFGLDB4QUYsMHhFMywweDMwLDB4QTEsMHgyOCwweEIy
LDB4QkMsMHhGMCwweEZBLAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhFQiwweEFCLDB4Qjks
MHhCQiwweEUzLDB4MzAsMHhBMiwweDI4LDB4QUYsMHgyNiwweDJBLDB4QUEsCisgICAgMHgwMyww
eDM5LDB4RTMsMHgzMCwweDU3LDB4OUYsMHgzOSwweDQzLDB4MjQsMHgzOSwweEMyLDB4MjgsMHg3
RSwweEVFLDB4RkUsMHhEQywKKyAgICAweDIzLDB4MzksMHhFMywweDMwLDB4QzUsMHhCRCwweEVG
LDB4RjUsMHgwMywweDM5LDB4QzIsMHgzMCwweEVFLDB4N0EsMHhFOCwweEU4LAorICAgIDB4RTMs
MHgzMCwweEMyLDB4MjgsMHg1MiwweDE1LDB4RjcsMHhGQiwweDAyLDB4MzEsMHhBMiwweDI4LDB4
M0YsMHhGRiwweEJELDB4RkYsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEZDLDB4RkMsMHg1
RiwweDU3LDB4RTMsMHgzMCwweEEyLDB4MjgsMHhCRCwweEUzLDB4N0IsMHhFQSwKKyAgICAweEMy
LDB4MjgsMHhBMiwweDI4LDB4REYsMHhENiwweEE1LDB4OEYsMHhDMiwweDMwLDB4QTIsMHgyOCww
eEQ2LDB4OTUsMHhBNSwweEFELAorICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHgzNSwweEE1LDB4
QUQsMHg5RCwweDAzLDB4MzEsMHhDMywweDMwLDB4MDgsMHg4MCwweEFBLDB4REUsCisgICAgMHgy
NCwweDM5LDB4RTMsMHgzMCwweDdFLDB4QTcsMHhFRCwweDZCLDB4MDMsMHgzMSwweEEyLDB4Mjgs
MHg3RSwweEY4LDB4RkEsMHhBQSwKKyAgICAweEUzLDB4MzAsMHhDMiwweDI4LDB4NzksMHhGRiww
eDZCLDB4QzAsMHgwMywweDMxLDB4QzIsMHgyOCwweDU1LDB4REQsMHhGMywweEI4LAorICAgIDB4
QzIsMHgzMCwweEUzLDB4MjgsMHhBRSwweEE5LDB4QUYsMHhCNywweEUzLDB4MzAsMHhBMiwweDI4
LDB4RjksMHgzRSwweEJBLDB4M0EsCisgICAgMHgwMywweDMxLDB4QzIsMHgzMCwweEI3LDB4MzYs
MHhGOCwweEI4LDB4MDMsMHgzMSwweEMyLDB4MzAsMHhBNywweEFBLDB4QkUsMHhGRSwKKyAgICAw
eDAzLDB4MzEsMHhDMiwweDI4LDB4MkIsMHg4RSwweDI3LDB4MEYsMHg0MywweDM5LDB4RTIsMHgz
MCwweDU1LDB4N0YsMHhFRiwweEYyLAorICAgIDB4MDIsMHgzMSwweEMyLDB4MzAsMHg3MiwweDQy
LDB4NzYsMHg3RSwweDAzLDB4MzksMHhBMSwweDI4LDB4M0QsMHhBRCwweDNELDB4QTcsCisgICAg
MHg2NCwweDQ5LDB4MDMsMHgzOSwweEY5LDB4QkYsMHgzRCwweDJELDB4QTUsMHg1MSwweDQzLDB4
NDEsMHg1NSwweEQ1LDB4OEIsMHg4MywKKyAgICAweEE1LDB4NTEsMHg2NCwweDQ5LDB4NTcsMHgw
NywweDJELDB4QUUsMHgwNiwweDVBLDB4ODQsMHg0OSwweEI3LDB4RUYsMHhBRiwweDJELAorICAg
IDB4MEEsMHg4MywweEU1LDB4NTksMHgyRiwweEFELDB4MjksMHgyRiwweEVELDB4OUIsMHg0Qiww
eDhCLDB4MkYsMHgwRiwweDNELDB4OTksCisgICAgMHgwRSwweDlDLDB4OEMsMHg5MywweEFBLDB4
MEEsMHhFRiwweDVGLDB4RUQsMHg5QiwweDhDLDB4OTMsMHgyMCwweEFBLDB4QUEsMHhFRiwKKyAg
ICAweENELDB4OTMsMHg4QywweDkzLDB4QzAsMHhDNCwweDZCLDB4NUUsMHg4QywweDhCLDB4NEIs
MHg4MywweEUwLDB4QkUsMHhFOCwweEY2LAorICAgIDB4OEMsMHg4QiwweDRCLDB4ODMsMHhFRiww
eDdFLDB4RkYsMHhENSwweDZCLDB4OEIsMHgwQSwweDdCLDB4QkUsMHhEOCwweERFLDB4N0MsCisg
ICAgMHhDQywweDkzLDB4MjksMHg3QiwweDJGLDB4QUYsMHhBRCwweEZELDB4RUQsMHg5QiwweDhC
LDB4OEIsMHhBQSwweEFBLDB4M0IsMHgzRCwKKyAgICAweEVELDB4OUIsMHhBQywweDkzLDB4MjIs
MHgzOCwweEFBLDB4RjUsMHgwRSwweDlDLDB4OEMsMHg4QiwweEE4LDB4MkEsMHhBQiwweDdGLAor
ICAgIDB4MkUsMHhBNCwweEFDLDB4OTMsMHhGOCwweEJFLDB4RjcsMHg3NSwweDBFLDB4OUMsMHhB
QywweDkzLDB4M0EsMHhCRSwweEVCLDB4OUYsCisgICAgMHhDRCwweDkzLDB4OEMsMHg4QiwweDAw
LDB4MDIsMHgwQSwweDJDLDB4Q0QsMHg5MywweDhDLDB4OEIsMHgzOCwweEQwLDB4NkYsMHhFRSwK
KyAgICAweENELDB4OTMsMHg4QywweDhCLDB4QTAsMHgzMCwweEZBLDB4RjcsMHhDRCwweDkzLDB4
OEMsMHg4QiwweDI4LDB4MEMsMHgwOCwweDg4LAorICAgIDB4Q0QsMHg5MywweDZDLDB4OEIsMHhB
QSwweEZFLDB4QTYsMHgyMiwweENDLDB4OTMsMHg2QiwweDhCLDB4MzIsMHhGQSwweEUyLDB4RTgs
CisgICAgMHhFRCwweDlCLDB4OEMsMHg4QiwweEVGLDB4RUIsMHhDRiwweDVELDB4MEUsMHg5Qyww
eEFDLDB4OTMsMHhCRCwweEJDLDB4RkYsMHhGNSwKKyAgICAweDQzLDB4NTEsMHgwMywweDQ5LDB4
RUEsMHhFQSwweEZCLDB4NkEsMHg0MywweDUxLDB4MDMsMHg0MSwweEVCLDB4QTIsMHhEMywweEZG
LAorICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHgwQiwweDBGLDB4QTIsMHg4OCwweDQzLDB4NDks
MHhFMiwweDQwLDB4QUMsMHhGQywweDdGLDB4RUUsCisgICAgMHgyMywweDQ5LDB4RTIsMHg0MCww
eEFCLDB4OEYsMHhCQiwweDI5LDB4MjMsMHg0OSwweEUyLDB4NDAsMHg2MiwweERDLDB4OTgsMHhG
OCwKKyAgICAweDAzLDB4NDksMHhFMSwweDM4LDB4QUEsMHhGMiwweEYyLDB4RDYsMHgyMywweDQx
LDB4QzEsMHgzOCwweDgyLDB4OEEsMHhFMywweEZFLAorICAgIDB4MDIsMHg0MSwweEUyLDB4Mzgs
MHg4OSwweEU1LDB4QUYsMHgyNSwweDIzLDB4NDksMHhFMiwweDM4LDB4QTUsMHg4RCwweEZGLDB4
RkIsCisgICAgMHgwMywweDQxLDB4RTIsMHgzOCwweDA4LDB4MDIsMHgyOCwweDA3LDB4MjMsMHg0
OSwweEUyLDB4NDAsMHhGQiwweEZDLDB4RkUsMHg3RiwKKyAgICAweDQzLDB4NTEsMHhFMiwweDQw
LDB4M0YsMHhCRiwweDJGLDB4MkQsMHg2QSwweDkzLDB4QTUsMHg1OSwweDBCLDB4MDksMHgwQiww
eDBCLAorICAgIDB4OEEsMHg5QiwweDY5LDB4OTMsMHg2OCwweEMwLDB4QTIsMHgyOSwweDhBLDB4
OUIsMHg0OSwweDkzLDB4ODcsMHgwNSwweDJBLDB4QjAsCisgICAgMHg4QSwweDlCLDB4MjgsMHg4
QiwweDI5LDB4MEEsMHhFOCwweEZFLDB4NkEsMHg5QiwweEU4LDB4ODIsMHhDMCwweDY4LDB4N0Us
MHg1NywKKyAgICAweDI5LDB4OEIsMHhDOCwweDgyLDB4MEEsMHgyRiwweEFGLDB4REQsMHg2QSww
eDkzLDB4MDksMHg4QiwweDIwLDB4MDMsMHhBRiwweEY1LAorICAgIDB4NEEsMHg5MywweDA1LDB4
NkEsMHg4MCwweEEwLDB4RTAsMHg3OCwweDY3LDB4N0EsMHhFNSwweDYxLDB4RTIsMHhGRSwweERF
LDB4REYsCisgICAgMHg2NiwweDcyLDB4MDUsMHg2QSwweDhCLDB4RUYsMHhCNSwweDdGLDB4NjYs
MHg3MiwweEU0LDB4NjEsMHhBOCwweDJCLDB4MkIsMHhBOSwKKyAgICAweDg3LDB4NzIsMHgyNiww
eDcyLDB4OUEsMHhFQSwweEUyLDB4Q0EsMHhDOCwweDdBLDB4NDYsMHg2QSwweDI5LDB4Q0YsMHhG
RiwweEQ3LAorICAgIDB4QTcsMHg3MiwweDg0LDB4NTksMHhBMCwweEVBLDB4NzgsMHg1RSwweEU1
LDB4NjEsMHgyMywweDQ5LDB4RDgsMHhERiwweDdGLDB4RkYsCisgICAgMHg2MywweDUxLDB4MjIs
MHg0MSwweDVDLDB4NzYsMHg2QSwweEVFLDB4NDMsMHg0OSwweDAyLDB4NDEsMHhGRiwweDlGLDB4
OUEsMHg1OCwKKyAgICAweDY0LDB4NTEsMHhFMiwweDM4LDB4MEEsMHgwQiwweDJGLDB4QUQsMHhB
NSwweDUxLDB4NjQsMHg0OSwweEMwLDB4OEUsMHg3NywweDc1LAorICAgIDB4ODQsMHg0OSwweDQ0
LDB4NDksMHhGQSwweEQ4LDB4MkEsMHgyRiwweEE1LDB4NTEsMHg0MywweDQ5LDB4QTYsMHhBOCww
eDg4LDB4QUEsCisgICAgMHg4NCwweDUxLDB4NjQsMHg0OSwweEUyLDB4NDIsMHg3RSwweDVFLDB4
ODUsMHg1MSwweDIzLDB4NDEsMHhCQywweEY3LDB4NTYsMHg3NywKKyAgICAweDY0LDB4NDksMHgy
MywweDQxLDB4QTAsMHg3OCwweEEzLDB4QTMsMHg2NCwweDQ5LDB4MjMsMHg0MSwweDdGLDB4Q0Qs
MHhGRiwweERFLAorICAgIDB4NjQsMHg0OSwweDAzLDB4MzksMHhBRiwweEI3LDB4RTYsMHhGRSww
eDY0LDB4NDEsMHgwMywweDQxLDB4NTcsMHg3RSwweDdGLDB4REYsCisgICAgMHgyMywweDQxLDB4
RTMsMHgzOCwweDdCLDB4QTIsMHhFQiwweEJGLDB4MDMsMHgzOSwweEMyLDB4MzgsMHg1NSwweDVF
LDB4NUEsMHhGOCwKKyAgICAweDAzLDB4NDEsMHhBMSwweDMwLDB4MkUsMHgzNywweEFGLDB4M0Is
MHg0MywweDQxLDB4MDMsMHg0MSwweDIyLDB4QTgsMHhBQiwweDBBLAorICAgIDB4NDMsMHg0MSww
eEUyLDB4MzgsMHhGRSwweEZBLDB4RTIsMHhGQSwweDAzLDB4MzksMHhDMiwweDM4LDB4OEEsMHgy
RCwweDJGLDB4MkIsCisgICAgMHgyMywweDM5LDB4QzIsMHgzMCwweEZCLDB4N0MsMHhGQSwweEVC
LDB4RTMsMHgzMCwweDgxLDB4MjgsMHg1MiwweDVBLDB4N0YsMHhERiwKKyAgICAweEExLDB4Mjgs
MHg0MCwweDIwLDB4RjgsMHg2RSwweEZBLDB4QkEsMHg2MSwweDIwLDB4NDEsMHgxOCwweEVBLDB4
QUEsMHhCMCwweDAwLAorICAgIDB4QTIsMHgyOCwweDQxLDB4MTgsMHg1NSwweEZGLDB4RkYsMHgy
RiwweEEyLDB4MjAsMHg2MSwweDIwLDB4QjUsMHhBOSwweEFCLDB4ODgsCisgICAgMHhBMSwweDIw
LDB4NjEsMHgyMCwweEJFLDB4QUYsMHhBNywweDBCLDB4QTIsMHgyOCwweDgxLDB4MjAsMHg4RCww
eEI3LDB4QkIsMHhCOCwKKyAgICAweEEyLDB4MjgsMHg4MSwweDIwLDB4QkUsMHgzRSwweEFBLDB4
RTIsMHhDMiwweDI4LDB4ODEsMHgyMCwweDJGLDB4QTIsMHhBRiwweEJGLAorICAgIDB4QTIsMHgy
OCwweDgyLDB4MjAsMHgwOCwweDhBLDB4N0UsMHhFOSwweEEyLDB4MjgsMHg4MSwweDIwLDB4QUMs
MHg3QSwweEZGLDB4RkIsCisgICAgMHhBMiwweDI4LDB4ODEsMHgyMCwweEJGLDB4NUUsMHg2Riww
eDlGLDB4MjQsMHgzOSwweEEyLDB4MjgsMHhBRiwweEJELDB4QjUsMHhENSwKKyAgICAweDAzLDB4
MzksMHhBMiwweDI4LDB4QTAsMHg4OCwweEFBLDB4QTksMHgwMywweDM5LDB4QzIsMHgzMCwweEVG
LDB4QTcsMHg3RSwweDk3LAorICAgIDB4QTEsMHgzOCwweEUyLDB4MzAsMHhGNywweEQ1LDB4QTcs
MHhGNywweEMyLDB4MzAsMHg4MSwweDI4LDB4NjgsMHhGQSwweEJGLDB4RjgsCisgICAgMHhDMiww
eDMwLDB4ODEsMHgyOCwweDM1LDB4RUMsMHhGRiwweEJBLDB4RTIsMHgzMCwweEEyLDB4MzAsMHgw
NywweDIxLDB4MkQsMHhCQiwKKyAgICAweEUyLDB4MzAsMHhBMiwweDI4LDB4MEMsMHg4MCwweDIw
LDB4QkUsMHhFMywweDMwLDB4QzIsMHgyOCwweDNCLDB4QkMsMHgyRSwweERGLAorICAgIDB4MDMs
MHgzMSwweEEyLDB4MjgsMHg1NiwweEQ3LDB4RTIsMHhCRiwweEMyLDB4MzAsMHhBMiwweDI4LDB4
NUQsMHg3RCwweDYyLDB4NTgsCisgICAgMHhBMiwweDI4LDB4ODEsMHgyMCwweDJGLDB4MjUsMHgy
RiwweDBBLDB4QzIsMHgyOCwweEEyLDB4MjgsMHhCRSwweDUzLDB4NUQsMHg1NSwKKyAgICAweEUz
LDB4MzAsMHhBMiwweDI4LDB4RjcsMHhGQSwweEFCLDB4MjcsMHhFMywweDMwLDB4QTIsMHgyOCww
eDBCLDB4NkUsMHhBRiwweENBLAorICAgIDB4MjQsMHgzOSwweEMyLDB4MzAsMHhFRiwweEM5LDB4
QTUsMHhENSwweDAzLDB4MzEsMHhBMiwweDI4LDB4NUUsMHhGQSwweDdFLDB4QUEsCisgICAgMHhF
MywweDMwLDB4QTIsMHgyOCwweEJFLDB4MUYsMHg5NywweEI1LDB4RTMsMHgzMCwweEMyLDB4MzAs
MHg2NCwweEUwLDB4QTAsMHgzRCwKKyAgICAweDA0LDB4MzksMHhDMiwweDMwLDB4RkYsMHhFNSww
eEMzLDB4QUUsMHgwMywweDM5LDB4QzIsMHgzMCwweEQ0LDB4RDYsMHg3NywweEI3LAorICAgIDB4
MDMsMHgzOSwweEMyLDB4MzAsMHgyRCwweEJELDB4RkQsMHg2QiwweDAzLDB4MzksMHhDMiwweDMw
LDB4Q0EsMHg4MiwweEM4LDB4ODIsCisgICAgMHgwMywweDM5LDB4QTIsMHgyOCwweEJBLDB4QkEs
MHhFOCwweEZDLDB4MDMsMHgzMSwweEMyLDB4MzAsMHg3NywweEY1LDB4QTUsMHg1NSwKKyAgICAw
eEUzLDB4MzAsMHhBMiwweDI4LDB4N0QsMHhGRiwweEY2LDB4QkUsMHgyNCwweDM5LDB4QzIsMHgy
OCwweDc1LDB4RkQsMHhBRCwweDI1LAorICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHhGRCwweERG
LDB4RjIsMHhFOCwweEMyLDB4MjgsMHg4MiwweDI4LDB4MjIsMHgwQSwweEE4LDB4QkUsCisgICAg
MHhFMywweDMwLDB4QTIsMHgyOCwweDAyLDB4ODIsMHg3QiwweERELDB4MDMsMHgzMSwweEMzLDB4
MjgsMHg3RSwweEVGLDB4QUYsMHhDRCwKKyAgICAweDAzLDB4MzksMHhDMywweDMwLDB4QzIsMHg4
QiwweEZCLDB4OUEsMHgwMywweDMxLDB4QzIsMHgzMCwweEVCLDB4RjcsMHg1RSwweEQ3LAorICAg
IDB4MDMsMHgzMSwweEEyLDB4MjgsMHhBOCwweEJBLDB4N0IsMHhGQiwweDAzLDB4MzksMHhDMiww
eDI4LDB4OUEsMHhBMCwweDVFLDB4NUQsCisgICAgMHhFMiwweDMwLDB4QzIsMHgyOCwweEFGLDB4
M0UsMHg2RCwweEY5LDB4MDMsMHgzMSwweEMyLDB4MjgsMHg5NywweEQ3LDB4OTUsMHgxNSwKKyAg
ICAweDAzLDB4MzEsMHhDMiwweDI4LDB4RkIsMHgzNiwweDJBLDB4ODgsMHgyMywweDM5LDB4RTMs
MHgzMCwweDdELDB4RUEsMHg2QiwweEJGLAorICAgIDB4MDMsMHgzMSwweEUyLDB4MzAsMHhCNSww
eEYzLDB4QTMsMHgzNSwweDQzLDB4MzksMHgwMywweDMxLDB4N0YsMHhGRiwweDhGLDB4NkQsCisg
ICAgMHgyMywweDM5LDB4QzIsMHgzMCwweERBLDB4QUMsMHg4QSwweDJFLDB4MDIsMHgzOSwweEMy
LDB4MzAsMHg2NSwweDMyLDB4QTIsMHgyOCwKKyAgICAweDY0LDB4NDksMHhFMiwweDM4LDB4MkQs
MHgyOSwweEFGLDB4QTcsMHg4NSwweDUxLDB4NDQsMHg0OSwweDhCLDB4QUEsMHhERiwweERELAor
ICAgIDB4ODQsMHg1MSwweDIzLDB4NDEsMHg4QSwweEZGLDB4M0QsMHg4QSwweDY4LDB4NkEsMHg2
NCwweDQ5LDB4QkQsMHhCRCwweEJELDB4M0YsCisgICAgMHg4QywweDkzLDB4ODgsMHg3MiwweEE1
LDB4MkQsMHgyOSwweDJELDB4QUMsMHg5MywweDRDLDB4OEIsMHhBMSwweEFFLDB4MkEsMHhFRSwK
KyAgICAweEFDLDB4OTMsMHg0QiwweDhCLDB4QTAsMHhBQiwweEVFLDB4N0YsMHhBRCwweDkzLDB4
MkIsMHg4MywweEEyLDB4ODgsMHhGOCwweERELAorICAgIDB4Q0MsMHg5MywweEVBLDB4N0EsMHgy
MiwweEFBLDB4RkUsMHg3RiwweDZCLDB4OEIsMHhBOSwweDcyLDB4QTgsMHhBMCwweEEyLDB4N0Us
CisgICAgMHg0QiwweDgzLDB4NDcsMHg2MiwweDAwLDB4OEEsMHhBQSwweDc3LDB4NEIsMHg4Myww
eDA3LDB4NUEsMHgyMCwweDg4LDB4RkUsMHg1NSwKKyAgICAweDRCLDB4ODMsMHgyNywweDYyLDB4
MDIsMHgwMiwweEFCLDB4RjUsMHhBQywweDhCLDB4ODksMHg2QSwweDAwLDB4OEEsMHhBQiwweEZE
LAorICAgIDB4QUMsMHg4QiwweDg5LDB4NzIsMHgwMCwweEEwLDB4RkEsMHg1RiwweDhDLDB4OEIs
MHgwNywweDVBLDB4QTAsMHhGQSwweDVGLDB4NTcsCisgICAgMHg2QiwweDhCLDB4MjcsMHg2Miww
eDAwLDB4QkQsMHg3NSwweDU1LDB4QUQsMHg5MywweDY4LDB4NjIsMHgwMCwweDBBLDB4QkQsMHg1
NSwKKyAgICAweEVELDB4OTMsMHhFQSwweDdBLDB4ODIsMHg4QSwweEFBLDB4QkQsMHhBRCwweDkz
LDB4OEMsMHg4QiwweEE4LDB4QTgsMHhFRiwweEZELAorICAgIDB4QUMsMHg5MywweDZDLDB4OEIs
MHgyQiwweEExLDB4Q0QsMHhBNSwweENDLDB4OTMsMHg2QywweDhCLDB4QUEsMHhFQSwweEVELDB4
M0YsCisgICAgMHhDRCwweDkzLDB4OEMsMHg4QiwweEFDLDB4NEYsMHhBOSwweDdCLDB4Q0MsMHg5
MywweDhCLDB4OEIsMHg4QywweEZELDB4RUIsMHhDQSwKKyAgICAweEFDLDB4OTMsMHg4QywweDhC
LDB4RDIsMHhGMiwweDlGLDB4MzYsMHhFRCwweDlCLDB4OEMsMHg4QiwweDg5LDB4RjksMHg5NSww
eERFLAorICAgIDB4NDMsMHg1MSwweEUyLDB4NDAsMHhDQSwweDdGLDB4RUEsMHhGRSwweDQzLDB4
NDksMHhFMiwweDQwLDB4RjksMHg2MSwweEVGLDB4QUQsCisgICAgMHg0MywweDQ5LDB4RTIsMHg0
MCwweEVFLDB4RUIsMHhCNywweEJGLDB4MjMsMHg0OSwweDAyLDB4NDEsMHhEQSwweERGLDB4RjIs
MHhFQSwKKyAgICAweDQzLDB4NDksMHhFMiwweDQwLDB4QkIsMHg2QiwweDc4LDB4NUYsMHgyMiww
eDQxLDB4QzEsMHgzOCwweDJBLDB4QUYsMHhCRiwweEI1LAorICAgIDB4MjMsMHg0OSwweEUyLDB4
MzgsMHg1RiwweDJCLDB4M0IsMHhENywweDAzLDB4NDEsMHhDMiwweDM4LDB4RUEsMHg3QywweEZD
LDB4RjYsCisgICAgMHgwMiwweDQxLDB4QzIsMHgzOCwweDBCLDB4OEIsMHhFRCwweEVCLDB4MDIs
MHg0MSwweEExLDB4MzgsMHgwMCwweDAxLDB4MDksMHgwQiwKKyAgICAweDIzLDB4NDksMHhFMiww
eDQwLDB4MzcsMHgzQSwweEJFLDB4RjYsMHgwMywweDQ5LDB4MjIsMHg0MSwweEFBLDB4QjksMHhG
NywweEFFLAorICAgIDB4NjQsMHg1MSwweEUyLDB4NDAsMHgzNSwweDE3LDB4QkYsMHhBRSwweDZB
LDB4OTMsMHhBNSwweDU5LDB4MEIsMHgwQiwweDJELDB4RjUsCisgICAgMHhBQSwweDlCLDB4ODcs
MHg3QSwweDhBLDB4ODIsMHhFRSwweDdELDB4NkEsMHg5MywweEM3LDB4ODIsMHg4MCwweEEwLDB4
RkYsMHg1RCwKKyAgICAweDQ5LDB4OTMsMHhBNywweDdBLDB4ODAsMHgyQSwweEZFLDB4NUYsMHgy
OSwweDhCLDB4QTcsMHg4MiwweEY4LDB4RUEsMHhCRiwweEQ3LAorICAgIDB4RTgsMHg4MiwweEE3
LDB4N0EsMHg3RSwweEZFLDB4QTAsMHg1MCwweDA5LDB4OEIsMHg2NiwweDcyLDB4MjIsMHhBQSww
eERBLDB4N0YsCisgICAgMHgwOSwweDhCLDB4QzUsMHg2MSwweEYwLDB4RkUsMHg3RiwweDVGLDB4
MDYsMHg2QSwweEU1LDB4NjEsMHhCQywweDNFLDB4N0MsMHg1NywKKyAgICAweDI2LDB4NkEsMHhD
NCwweDYxLDB4MjgsMHgyMCwweDBBLDB4RkQsMHg0NiwweDZBLDB4RTUsMHg2MSwweDBBLDB4QUEs
MHhCNiwweEY3LAorICAgIDB4NjcsMHg3MiwweEE0LDB4NTksMHgwMCwweEE4LDB4RkEsMHg1RSww
eDI1LDB4NkEsMHg2MywweDUxLDB4MDAsMHhGOCwweDVFLDB4NTUsCisgICAgMHhBNSwweDU5LDB4
MDMsMHg0OSwweEIwLDB4RkMsMHhGRiwweEJGLDB4ODQsMHg1MSwweDIzLDB4NDksMHhBMCwweEFB
LDB4MEQsMHgyRSwKKyAgICAweDg0LDB4NTEsMHgwMiwweDQxLDB4N0EsMHg3MiwweDdFLDB4RkUs
MHg2NCwweDQ5LDB4MDIsMHg0MSwweDdELDB4RkYsMHgzRCwweDBGLAorICAgIDB4QzUsMHg1MSww
eEUyLDB4NDAsMHhGRCwweEJGLDB4QUUsMHhBMCwweDg1LDB4NTEsMHgyMywweDQxLDB4QUEsMHgy
QSwweEE5LDB4QUIsCisgICAgMHhBNSwweDUxLDB4NDQsMHg0OSwweEJGLDB4QTcsMHgyRiwweEZF
LDB4QTUsMHg1MSwweDQ0LDB4NDksMHhGRiwweEQ2LDB4NzgsMHhGQiwKKyAgICAweDg0LDB4NDks
MHg0NCwweDQ5LDB4RUYsMHg3RiwweDVCLDB4NkIsMHg2NCwweDQ5LDB4MjMsMHg0MSwweDZGLDB4
Q0EsMHhBQSwweEUyLAorICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHhBRSwweEZGLDB4RkUsMHhE
QywweDQ0LDB4NDksMHhFMiwweDM4LDB4QTAsMHhBQSwweEVFLDB4REUsCisgICAgMHg0NCwweDQ5
LDB4RTMsMHg0MCwweEEyLDB4QUIsMHhFQiwweEJGLDB4MjMsMHg0MSwweDAzLDB4NDEsMHhGMCww
eEJFLDB4NTcsMHhEMCwKKyAgICAweDQ0LDB4NDEsMHhFMiwweDM4LDB4REYsMHhGRiwweEZFLDB4
QjgsMHgyMywweDQxLDB4RTIsMHgzOCwweDdFLDB4RkYsMHhEOCwweEJBLAorICAgIDB4NDQsMHg0
OSwweEUzLDB4MzgsMHg5RCwweEI3LDB4QUIsMHg4MiwweDY0LDB4NDksMHgwMywweDQxLDB4MkIs
MHhFQSwweEVGLDB4NTUsCisgICAgMHg0MywweDQxLDB4RTIsMHgzOCwweDcwLDB4N0EsMHg3QSww
eDdGLDB4MDMsMHgzOSwweEExLDB4MzAsMHhBQSwweEJCLDB4MkIsMHhGNSwKKyAgICAweDAzLDB4
MzksMHhDMiwweDMwLDB4RTIsMHg2QSwweDc4LDB4N0EsMHhFMywweDM4LDB4ODEsMHgyOCwweDdD
LDB4NUUsMHg3NywweEVGLAorICAgIDB4QTIsMHgyOCwweDYxLDB4MjAsMHhGRSwweDdBLDB4N0Is
MHg3QSwweEEyLDB4MjgsMHg2MSwweDIwLDB4RjcsMHhFRCwweDJELDB4MDksCisgICAgMHhBMiww
eDIwLDB4NjEsMHgyMCwweDI1LDB4MEMsMHgwOCwweDJBLDB4QzIsMHgyOCwweDgxLDB4MjAsMHhC
QSwweEVBLDB4MDIsMHgyNSwKKyAgICAweEMyLDB4MjgsMHg4MSwweDIwLDB4QkQsMHhBNSwweEJC
LDB4RkYsMHhBMiwweDI4LDB4ODEsMHgyMCwweDFBLDB4QkEsMHhGRiwweENBLAorICAgIDB4QTIs
MHgyOCwweDgxLDB4MjAsMHhFMiwweENCLDB4MkIsMHhBRiwweEEyLDB4MjgsMHg4MSwweDIwLDB4
QTgsMHhCRSwweEZCLDB4RDcsCisgICAgMHhBMiwweDI4LDB4ODIsMHgyMCwweEFFLDB4RUYsMHhF
RiwweEJGLDB4QTIsMHgyOCwweDYxLDB4MjAsMHhBQSwweEZCLDB4REYsMHhGQywKKyAgICAweEEy
LDB4MjgsMHg2MSwweDIwLDB4M0UsMHhBRSwweEJGLDB4M0YsMHhBMiwweDMwLDB4ODEsMHgyMCww
eDNGLDB4QkUsMHgzNywweDNFLAorICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHhCRCwweEFGLDB4
QTksMHhBRiwweEUzLDB4MzgsMHhDMiwweDMwLDB4QUQsMHhBOSwweDA4LDB4ODAsCisgICAgMHhF
MiwweDM4LDB4QzIsMHgzMCwweEVBLDB4NjYsMHhGRSwweEY0LDB4RTMsMHgzOCwweEEyLDB4Mjgs
MHg1RSwweEZCLDB4RkEsMHhGOCwKKyAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4RkEsMHhCRiww
eDNDLDB4MTMsMHhFMiwweDMwLDB4QTMsMHgyOCwweEVFLDB4RUIsMHhBQSwweEVBLAorICAgIDB4
RTMsMHgzMCwweEEyLDB4MjgsMHhCNywweEVCLDB4MjUsMHhGNSwweEMyLDB4MjgsMHhBMSwweDI4
LDB4MzAsMHhGOCwweDU3LDB4NTUsCisgICAgMHhDMiwweDI4LDB4NjEsMHgyOCwweDAyLDB4ODgs
MHhBQSwweEFFLDB4QzIsMHgyOCwweDgxLDB4MjAsMHhBOCwweEZBLDB4N0EsMHg3RSwKKyAgICAw
eEMyLDB4MjgsMHg4MiwweDI4LDB4QUIsMHgwRSwweDBELDB4MkIsMHhFMywweDMwLDB4QTIsMHgy
OCwweDVELDB4QzMsMHhGQiwweEJCLAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhCNSwweEQ1
LDB4NTUsMHg1NiwweEUzLDB4MzAsMHhBMiwweDI4LDB4QUUsMHhBQiwweDAxLDB4MDMsCisgICAg
MHgwMywweDMxLDB4QTIsMHgyOCwweDNGLDB4RkYsMHhERSwweEJGLDB4RTMsMHgzMCwweEMyLDB4
MzAsMHg4MiwweDczLDB4RTMsMHgwMCwKKyAgICAweDAzLDB4MzksMHhBMiwweDI4LDB4RjcsMHhB
NywweDNGLDB4MEUsMHgwMywweDM5LDB4QzMsMHgzMCwweEI1LDB4RkUsMHhDRSwweEFBLAorICAg
IDB4MjQsMHgzOSwweEUzLDB4MzAsMHg1OSwweDZCLDB4NTksMHg3RiwweEUyLDB4MzAsMHhBMiww
eDMwLDB4MEEsMHgwQSwweDJGLDB4QjUsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEVCLDB4
QUEsMHhGRiwweEZELDB4NDQsMHg0MSwweEEyLDB4MzAsMHhBRiwweDhELDB4QUYsMHhFRiwKKyAg
ICAweDIzLDB4MzksMHhDMiwweDMwLDB4NUUsMHg3QSwweEFDLDB4MjgsMHgwMywweDMxLDB4QzIs
MHgzMCwweDc1LDB4NUUsMHhCQywweEVBLAorICAgIDB4RTMsMHgzMCwweEExLDB4MjgsMHhCQSww
eEUwLDB4QkEsMHhENiwweDAzLDB4MzEsMHhDMiwweDMwLDB4MkIsMHhFRSwweDJGLDB4REYsCisg
ICAgMHgwMywweDMxLDB4QzIsMHgzMCwweDdBLDB4ODgsMHgyQSwweEZCLDB4RTMsMHgzMCwweEEy
LDB4MjgsMHg1NSwweDU3LDB4REMsMHgyOCwKKyAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4Nzks
MHg2MiwweDcyLDB4NTIsMHhFMywweDMwLDB4ODEsMHgyMCwweDBCLDB4QjcsMHhCNSwweEVGLAor
ICAgIDB4RTMsMHgzMCwweEMyLDB4MjgsMHhFMCwweEIwLDB4RUYsMHhFNSwweEUzLDB4MzAsMHhD
MiwweDI4LDB4QkEsMHhFRiwweDhFLDB4QUQsCisgICAgMHhFMywweDMwLDB4QzIsMHgyOCwweEE2
LDB4MDcsMHhGRSwweDZGLDB4MDMsMHgzMSwweEMyLDB4MzAsMHg1NSwweEQ3LDB4QkQsMHg5QiwK
KyAgICAweEUyLDB4MzAsMHhDMiwweDI4LDB4RUQsMHhCMywweDAwLDB4MDAsMHgyMywweDM5LDB4
QzIsMHgyOCwweERELDB4RkYsMHhGRiwweENBLAorICAgIDB4MjMsMHgzOSwweEUzLDB4MzAsMHg4
RiwweDJGLDB4N0YsMHhGQiwweDAzLDB4MzEsMHhDMiwweDMwLDB4ODgsMHhGRSwweEZFLDB4QkYs
CisgICAgMHgwMywweDM5LDB4QzIsMHgyOCwweDM3LDB4QjcsMHhCRiwweEZCLDB4MDMsMHgzOSww
eEUyLDB4MzAsMHg4MiwweEEyLDB4RkQsMHhCNSwKKyAgICAweDIzLDB4MzksMHhFMiwweDMwLDB4
OUYsMHg5RSwweDFGLDB4M0YsMHgyMywweDQxLDB4RTIsMHgzOCwweEQ1LDB4QjcsMHg5QiwweDA2
LAorICAgIDB4ODUsMHg0OSwweDAzLDB4MzksMHhCRCwweEJELDB4QUYsMHgyRiwweEM1LDB4NTEs
MHg2NCwweDQ5LDB4NTUsMHg5RCwweEVCLDB4MzIsCisgICAgMHhFNSwweDU5LDB4NjQsMHg0OSww
eEZELDB4QjUsMHhFQiwweDJBLDB4QzksMHg3QSwweEE1LDB4NTEsMHhCNSwweEJELDB4QUYsMHgy
RiwKKyAgICAweDhDLDB4OTMsMHhBOCwweDcyLDB4QUQsMHhGRCwweEZGLDB4OEEsMHg0QSwweDhC
LDB4ODcsMHg3MiwweDg4LDB4REYsMHg1NywweEEwLAorICAgIDB4MEEsMHg4MywweDQ3LDB4NkEs
MHgwMCwweEZFLDB4REYsMHhGOCwweEU5LDB4N0EsMHgyNiwweDYyLDB4MDgsMHhGRCwweERELDB4
QUEsCisgICAgMHhDOCwweDcyLDB4MjYsMHg2MiwweEU4LDB4NUYsMHhGRiwweEJGLDB4QTgsMHg3
MiwweDA2LDB4NUEsMHhGOCwweDc3LDB4RkUsMHgwMiwKKyAgICAweEE5LDB4NzIsMHhFNiwweDUx
LDB4NTcsMHg3NSwweEVCLDB4MDIsMHhDOSwweDcyLDB4RTYsMHg1MSwweDU1LDB4NzcsMHhCQSww
eDAwLAorICAgIDB4QTksMHg3MiwweDA3LDB4NUEsMHhGNSwweEJGLDB4QkIsMHgwMCwweEM5LDB4
NzIsMHgyNywweDYyLDB4RjcsMHhGRiwweEU4LDB4MkEsCisgICAgMHhBOSwweDcyLDB4NDcsMHg2
MiwweEVCLDB4RTksMHhFRiwweDBBLDB4QTksMHg3MiwweDA3LDB4NjIsMHhGRiwweDdGLDB4Rjgs
MHhCOCwKKyAgICAweDY4LDB4NkEsMHgwNiwweDVBLDB4QjksMHhFQSwweDgyLDB4ODgsMHg2OCww
eDZBLDB4MjcsMHg2MiwweDU2LDB4RkUsMHhCMCwweDIwLAorICAgIDB4MEEsMHg3QiwweDA2LDB4
NUEsMHgyRCwweEY3LDB4RkYsMHg3RiwweDhDLDB4OEIsMHg0NywweDYyLDB4MDAsMHgyQiwweEFE
LDB4QjUsCisgICAgMHhBRCwweDkzLDB4NEIsMHg4MywweDJGLDB4QUUsMHhGRiwweDc1LDB4QUQs
MHg5MywweDZCLDB4OEIsMHgwQSwweDNGLDB4QjUsMHg3QiwKKyAgICAweEFDLDB4OEIsMHg2Qiww
eDhCLDB4MkMsMHgyRiwweEI1LDB4MjUsMHhBQywweDkzLDB4NkMsMHg4QiwweDAwLDB4RUMsMHhB
QSwweDdFLAorICAgIDB4Q0QsMHg5MywweDZCLDB4OEIsMHg1QywweDU3LDB4QTUsMHhEQiwweEFE
LDB4OTMsMHg2QiwweDhCLDB4MkMsMHhBRSwweEFFLDB4MUUsCisgICAgMHgyMywweDQ5LDB4QzIs
MHg0MCwweEY2LDB4ODIsMHhBOCwweEE4LDB4MjMsMHg0OSwweEUyLDB4NDAsMHhBQiwweEFFLDB4
QkEsMHhFMiwKKyAgICAweDQzLDB4NTEsMHhFMiwweDQwLDB4OEEsMHhFMywweEVGLDB4RTcsMHgy
MywweDQ5LDB4RTIsMHg0MCwweENGLDB4QjcsMHgyQiwweEFBLAorICAgIDB4MjMsMHg0OSwweEUy
LDB4NDAsMHg1NywweEQ1LDB4REMsMHhBQSwweDIzLDB4NDksMHhDMSwweDM4LDB4QTcsMHhBRSww
eEVBLDB4OEEsCisgICAgMHgyMywweDQ5LDB4RTIsMHgzOCwweEJGLDB4QkQsMHhBRiwweDJFLDB4
MjQsMHg0MSwweEUyLDB4NDAsMHhENSwweDQ3LDB4RkIsMHhFRiwKKyAgICAweDAzLDB4NDEsMHhF
MiwweDM4LDB4NUUsMHg1QywweDI4LDB4ODAsMHgyMywweDQxLDB4QzEsMHg0MCwweDJELDB4QUYs
MHhBQSwweEFBLAorICAgIDB4NDMsMHg0OSwweEUyLDB4NDAsMHhCRSwweEJFLDB4OUIsMHgwMCww
eDIyLDB4NDksMHgwMywweDQxLDB4NjIsMHg2MCwweEVBLDB4QUUsCisgICAgMHgyMywweDQ5LDB4
RTIsMHg0MCwweDBBLDB4MkEsMHhGNywweEY3LDB4QzQsMHg1OSwweDAyLDB4NDEsMHgyRiwweEE1
LDB4NTUsMHg1NSwKKyAgICAweDQ2LDB4NzIsMHgwMiwweDQ5LDB4MEEsMHhCRiwweEZELDB4NzUs
MHhBNywweDdBLDB4QTMsMHg1OSwweDAyLDB4MkYsMHhBRCwweEI1LAorICAgIDB4QzgsMHg4Miww
eDI1LDB4NzIsMHhBMCwweEYyLDB4QkUsMHhENSwweEM3LDB4ODIsMHg0NSwweDcyLDB4QTgsMHhB
QSwweEZELDB4NzUsCisgICAgMHhFNywweDgyLDB4NDYsMHg3MiwweEEwLDB4QUEsMHhBQiwweEZE
LDB4ODYsMHg3QSwweEM0LDB4NjEsMHhDMCwweDQwLDB4NzgsMHg1RSwKKyAgICAweDA2LDB4NkEs
MHg2NCwweDUxLDB4QTIsMHhCRSwweERGLDB4NTcsMHhFNSwweDYxLDB4NDMsMHg1MSwweDgwLDB4
QUMsMHhGRSwweDU1LAorICAgIDB4RTUsMHg2MSwweDQzLDB4NTEsMHgwMCwweDBBLDB4QUUsMHhB
NSwweDA1LDB4NkEsMHg4NCwweDUxLDB4QTgsMHhFRSwweDdGLDB4REEsCisgICAgMHhDNSwweDYx
LDB4NDMsMHg1MSwweEYyLDB4NkEsMHg3OCwweEZBLDB4ODMsMHg1MSwweDAzLDB4NDksMHhBQSww
eEZGLDB4N0EsMHhBQSwKKyAgICAweDY0LDB4NTEsMHgyMywweDQ5LDB4QUQsMHhFNSwweEM1LDB4
N0QsMHg2NCwweDQ5LDB4MjMsMHg0OSwweDA4LDB4MDIsMHgwMywweDAzLAorICAgIDB4NjMsMHg0
OSwweDIyLDB4NDEsMHhFNiwweDhDLDB4MDAsMHgwRSwweEM2LDB4NTksMHgyMywweDQxLDB4QkQs
MHgyRCwweDJGLDB4OEIsCisgICAgMHhDNSwweDU5LDB4NDQsMHg0MSwweEEyLDB4QTgsMHg2QSww
eERFLDB4QTUsMHg1MSwweDY0LDB4NDksMHg2QSwweEU2LDB4M0QsMHhCQiwKKyAgICAweDg1LDB4
NDksMHg0NCwweDQ5LDB4RTIsMHhFOCwweEY4LDB4OUUsMHg2NCwweDQ5LDB4NDQsMHg0OSwweEEy
LDB4N0EsMHhGOCwweEZCLAorICAgIDB4ODUsMHg1MSwweDI0LDB4NDEsMHhBMywweEVGLDB4RkIs
MHhGRCwweDY0LDB4NDksMHgyMywweDQ5LDB4MzAsMHg4MywweEE5LDB4RUQsCisgICAgMHg0Myww
eDQ5LDB4MDMsMHg0MSwweEZDLDB4QkMsMHhBQSwweEIyLDB4RTYsMHg2MSwweDIzLDB4NDEsMHg1
NSwweDU1LDB4RjcsMHgyRCwKKyAgICAweEU2LDB4NjEsMHgwMywweDQxLDB4NTUsMHhERiwweEJG
LDB4MDAsMHhFNiwweDYxLDB4MjMsMHg0MSwweDU1LDB4RkEsMHg4MiwweDAwLAorICAgIDB4QzUs
MHg2MSwweDAzLDB4NDEsMHg1NSwweDc3LDB4RkUsMHg4MCwweDY0LDB4NDksMHgwMywweDQxLDB4
NzUsMHhGRiwweEJGLDB4QTgsCisgICAgMHg4NSwweDQ5LDB4MDMsMHg0MSwweDdCLDB4NUEsMHhG
QiwweENBLDB4MjMsMHg0MSwweEUyLDB4MzgsMHgyRiwweDJGLDB4QkUsMHg3QSwKKyAgICAweDIz
LDB4NDEsMHhDMiwweDMwLDB4RUIsMHg2QiwweEEwLDB4RTIsMHgwMywweDM5LDB4QTIsMHgzMCww
eEZELDB4MkYsMHgyQSwweEFBLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhFMiwweEUyLDB4
ODAsMHgwMCwweDAzLDB4MzksMHhBMiwweDI4LDB4NzcsMHg3RiwweDdDLDB4NzgsCisgICAgMHhD
MiwweDI4LDB4NjEsMHgyMCwweDdFLDB4RkUsMHhCRSwweDNGLDB4RTMsMHgzMCwweDYxLDB4MjAs
MHhGRCwweEFGLDB4MkEsMHgwMCwKKyAgICAweDA0LDB4MzEsMHg4MSwweDIwLDB4NUQsMHhENyww
eEE4LDB4ODAsMHhFMywweDMwLDB4ODEsMHgyMCwweEQ1LDB4RkUsMHhBMiwweEU4LAorICAgIDB4
RTIsMHgyOCwweEEyLDB4MjgsMHg1RiwweDdCLDB4RkUsMHhGMiwweEEyLDB4MjgsMHg4MSwweDIw
LDB4QzgsMHg0OCwweDQwLDB4RTAsCisgICAgMHhBMiwweDI4LDB4ODEsMHgyMCwweEZELDB4Njks
MHhCRiwweEI3LDB4QTIsMHgyOCwweDYxLDB4MjAsMHhBRSwweEFGLDB4MEYsMHgwQSwKKyAgICAw
eEEyLDB4MjgsMHg4MiwweDI4LDB4QjcsMHgzRiwweDNGLDB4RjMsMHhDMiwweDMwLDB4ODIsMHgy
OCwweDU0LDB4RjYsMHg3RiwweEY1LAorICAgIDB4QTEsMHgyOCwweDYxLDB4MjAsMHhCRSwweENG
LDB4RkQsMHhFRiwweEMzLDB4MzAsMHg4MiwweDI4LDB4RjcsMHhGRCwweERELDB4NDksCisgICAg
MHgwMywweDQxLDB4ODIsMHgyOCwweEFGLDB4MEQsMHgzRiwweDBCLDB4MjMsMHg0MSwweEMzLDB4
MzgsMHg2RiwweEZCLDB4RTAsMHgwOCwKKyAgICAweDIzLDB4NDEsMHhBMSwweDMwLDB4REQsMHhB
RiwweEU4LDB4MjgsMHhFMiwweDM4LDB4QTIsMHgzMCwweEY4LDB4RkEsMHhFOCwweEU4LAorICAg
IDB4QzIsMHgzMCwweEEyLDB4MjgsMHhCRiwweERFLDB4RDgsMHg1OCwweEMyLDB4MzAsMHg4MSww
eDI4LDB4MDAsMHhBQSwweEY4LDB4RkEsCisgICAgMHhDMiwweDI4LDB4ODEsMHgyOCwweDNBLDB4
QkIsMHhCQiwweEFCLDB4RTIsMHgzMCwweDgxLDB4MjgsMHg3RiwweEVCLDB4QTMsMHhBQSwKKyAg
ICAweEMzLDB4MzAsMHg4MSwweDI4LDB4RjUsMHhGRiwweEJFLDB4MDIsMHhDMiwweDI4LDB4ODEs
MHgyOCwweEU3LDB4RjcsMHhGRiwweEE4LAorICAgIDB4QTIsMHgyOCwweDgxLDB4MjAsMHgwMiww
eDA1LDB4MkQsMHg4MCwweEMzLDB4MzAsMHg4MSwweDI4LDB4MEEsMHhBQiwweDdGLDB4RDUsCisg
ICAgMHhDMiwweDI4LDB4ODEsMHgyMCwweDJBLDB4MkIsMHhENywweERELDB4MDMsMHgzOSwweEEy
LDB4MjgsMHgyQiwweDIzLDB4QUQsMHgwRCwKKyAgICAweDAzLDB4MzksMHhFMywweDI4LDB4RkYs
MHg5NCwweEE2LDB4MDgsMHhFMiwweDMwLDB4QzIsMHgyOCwweDgwLDB4ODgsMHgyNiwweDI2LAor
ICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBQSwweEZDLDB4RjgsMHhGNiwweDAzLDB4MzksMHhD
MywweDMwLDB4NUUsMHhBQiwweEEzLDB4RjgsCisgICAgMHgwMywweDM5LDB4RTMsMHgzMCwweDYx
LDB4N0EsMHg3OCwweDY4LDB4RTMsMHgzMCwweEEyLDB4MzAsMHhEQSwweDdBLDB4QUEsMHgwMiwK
KyAgICAweEMyLDB4MzAsMHhBMiwweDMwLDB4MjIsMHhBQiwweEI4LDB4MkMsMHgwMywweDM5LDB4
QzIsMHgzMCwweEYzLDB4MjUsMHgyNSwweEVELAorICAgIDB4MjMsMHgzOSwweEUyLDB4MzAsMHg2
QSwweEZFLDB4RkEsMHhBMywweDAzLDB4MzksMHhFMiwweDMwLDB4QUQsMHhBRCwweEY2LDB4Qjgs
CisgICAgMHgwMywweDMxLDB4QzIsMHgzMCwweEQ3LDB4NkIsMHg3QSwweDdBLDB4RTIsMHgzMCww
eEEyLDB4MjgsMHhBMiwweEJFLDB4RUYsMHhGQSwKKyAgICAweDAzLDB4MzksMHhDMiwweDI4LDB4
OUQsMHhGQywweEZBLDB4NTksMHhFMiwweDMwLDB4QTIsMHgyOCwweEFDLDB4QkUsMHhDRSwweEFG
LAorICAgIDB4RTIsMHgzMCwweEExLDB4MjgsMHg1QSwweEZBLDB4RkIsMHhCQSwweEMyLDB4Mjgs
MHhBMSwweDI4LDB4MjcsMHgwRSwweDAwLDB4MDAsCisgICAgMHhFMywweDMwLDB4QzIsMHgyOCww
eENELDB4MEIsMHgyNSwweDJELDB4RTMsMHgzMCwweEMyLDB4MzAsMHhFNSwweEJFLDB4QTAsMHgy
MCwKKyAgICAweDAzLDB4MzksMHhDMiwweDI4LDB4RjcsMHhGQiwweDJBLDB4NkEsMHgwMywweDMx
LDB4QzIsMHgyOCwweERBLDB4RkEsMHhBQiwweEFBLAorICAgIDB4MDMsMHgzMSwweEMyLDB4Mjgs
MHgzRiwweEJELDB4QUYsMHhGNywweDAzLDB4MzEsMHhFMiwweDMwLDB4QzQsMHgzRSwweEY5LDB4
NjMsCisgICAgMHgwMywweDMxLDB4QzIsMHgzMCwweDA4LDB4MkMsMHhDMCwweDgyLDB4MDMsMHgz
MSwweEMyLDB4MjgsMHhBQywweDcwLDB4NjAsMHg4MCwKKyAgICAweDAzLDB4MzEsMHhDMiwweDMw
LDB4QjQsMHhBQiwweEZELDB4N0EsMHgyMywweDM5LDB4QzIsMHgzMCwweEZFLDB4OTcsMHhBRCww
eDI3LAorICAgIDB4NDQsMHg0MSwweDAzLDB4MzksMHhERCwweEI2LDB4RTMsMHhFMywweDY0LDB4
NDksMHgyMywweDQxLDB4NUYsMHg1RCwweDRGLDB4QTMsCisgICAgMHg4NSwweDUxLDB4MDMsMHgz
OSwweDI1LDB4QkQsMHhBRiwweEVDLDB4QzUsMHg1MSwweDQzLDB4NDEsMHhFMiwweEFBLDB4QkYs
MHhENSwKKyAgICAweDI2LDB4NjIsMHg0MywweDQ5LDB4QUYsMHgyRiwweDJGLDB4QkQsMHgwRCww
eEE0LDB4MjYsMHg2MiwweEJELDB4QUQsMHgyRiwweDBGLAorICAgIDB4NkUsMHhBQywweDZCLDB4
OEIsMHhFRCwweEFGLDB4MEEsMHgwMCwweDZFLDB4QUMsMHhFRCwweDlCLDB4NTcsMHgyQSwweDgy
LDB4MDAsCisgICAgMHg2RSwweEFDLDB4MkEsMHg4MywweDdGLDB4QTgsMHgyMCwweDAwLDB4NkUs
MHhBQywweDJBLDB4ODMsMHg1NSwweEZFLDB4QUEsMHgwMCwKKyAgICAweDZGLDB4QUMsMHhFOSww
eDdBLDB4NTUsMHhGRSwweEEyLDB4MDgsMHgyRSwweEE0LDB4RTksMHg3QSwweDU1LDB4N0YsMHhF
QywweDgwLAorICAgIDB4OEIsMHg4QiwweEE5LDB4NzIsMHhGRCwweEZBLDB4QTIsMHhBMCwweDRC
LDB4OEIsMHhDOSwweDcyLDB4NzcsMHhGRSwweDcyLDB4RjgsCisgICAgMHgwOSwweDdCLDB4Qzks
MHg3MiwweEJCLDB4RUIsMHg4MiwweDZBLDB4RTksMHg3QSwweEE4LDB4NzIsMHgzNSwweDE3LDB4
RUUsMHhGQSwKKyAgICAweEU5LDB4N0EsMHhBOCwweDcyLDB4NjksMHhCQSwweDAyLDB4QTYsMHhF
OSwweDcyLDB4NjcsMHg2QSwweEQ2LDB4N0YsMHhBRSwweEU4LAorICAgIDB4QzksMHg3MiwweDY3
LDB4NkEsMHg1NiwweERFLDB4RkUsMHhEMCwweEE4LDB4NzIsMHg2NywweDZBLDB4NEYsMHhBMyww
eEY3LDB4QkIsCisgICAgMHg4OCwweDZBLDB4NDcsMHg2MiwweDY3LDB4NEIsMHg3NiwweEE4LDB4
QTgsMHg3MiwweDA2LDB4NUEsMHgyRiwweDVGLDB4RkEsMHhCQiwKKyAgICAweDZDLDB4OEIsMHg0
NywweDYyLDB4MEEsMHgyRCwweEI1LDB4NTUsMHg4QiwweDhCLDB4QTgsMHg2QSwweDgwLDB4MDAs
MHgwQiwweEFELAorICAgIDB4QUMsMHg5MywweDZCLDB4ODMsMHhGRiwweEFCLDB4RTksMHhCRCww
eDhCLDB4OEIsMHg0QiwweDgzLDB4RUUsMHhFQSwweEVBLDB4MjYsCisgICAgMHg4QywweDhCLDB4
MkEsMHg4MywweEFFLDB4RjcsMHhBQiwweEEyLDB4QUMsMHg5MywweDRCLDB4ODMsMHhBQiwweEFC
LDB4NkEsMHhGQSwKKyAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4M0EsMHhCQSwweEFDLDB4N0Es
MHgyMywweDQ5LDB4RTIsMHg0MCwweDJDLDB4MEEsMHhBRCwweDQxLAorICAgIDB4MDIsMHg0OSww
eEUyLDB4NDAsMHgyOCwweEJBLDB4QkUsMHgwNywweDIzLDB4NDksMHhFMiwweDQwLDB4QjAsMHhF
RSwweEU3LDB4OEIsCisgICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweDhBLDB4MDgsMHgyOCwweEFF
LDB4MjMsMHg0OSwweEMyLDB4MzgsMHgyQiwweDI2LDB4QUEsMHhCQSwKKyAgICAweDIzLDB4NDks
MHhFMiwweDQwLDB4OEIsMHhBRSwweDJFLDB4M0MsMHgyMiwweDQxLDB4RTIsMHg0MCwweDZCLDB4
M0UsMHgyMCwweDJBLAorICAgIDB4MjMsMHg0OSwweDAyLDB4NDEsMHg2MSwweEVCLDB4RUMsMHg3
NywweDIzLDB4NDEsMHhFMiwweDM4LDB4MkIsMHhCQSwweEFGLDB4RUIsCisgICAgMHg0MywweDQ5
LDB4MDIsMHg0MSwweDNGLDB4RkQsMHhDRiwweDg1LDB4RTIsMHg0OCwweDIyLDB4NDEsMHhCRCww
eEE5LDB4RUIsMHhCRiwKKyAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4RkQsMHhCRiwweEVFLDB4
NjIsMHgwMywweDQ5LDB4QzIsMHg0MCwweDBBLDB4RkEsMHhGRSwweEZGLAorICAgIDB4NjMsMHg1
MSwweEMyLDB4NDAsMHhCRCwweEI1LDB4M0YsMHhCRiwweDI1LDB4NkEsMHg2MywweDUxLDB4MDks
MHg4RCwweDhGLDB4QUQsCisgICAgMHgyNSwweDZBLDB4QzQsMHg2MSwweDBGLDB4RUQsMHgwRiww
eDIyLDB4NDcsMHg3MiwweEU1LDB4NjEsMHhBMiwweEVELDB4RTUsMHhENywKKyAgICAweDQ2LDB4
NzIsMHhDNSwweDU5LDB4OEEsMHhBRSwweEZCLDB4NTYsMHhFNSwweDYxLDB4NDMsMHg1MSwweDIw
LDB4RjgsMHhCOCwweDVFLAorICAgIDB4QTQsMHg1OSwweDAyLDB4NDksMHhGOCwweDVFLDB4NTcs
MHg1NywweDI0LDB4NDksMHhBMywweDQwLDB4RTgsMHhGRSwweERGLDB4QjcsCisgICAgMHg4NCww
eDU5LDB4RTIsMHg0MCwweDBGLDB4MkQsMHgyRCwweDJELDB4QzQsMHg1OSwweDg0LDB4NTksMHhD
MiwweEFBLDB4OEQsMHhFQiwKKyAgICAweEM1LDB4NTksMHg2MywweDUxLDB4REUsMHhFQSwweDgy
LDB4QTIsMHhBNCwweDU5LDB4NjMsMHg1MSwweEQ3LDB4REMsMHg2MCwweDcyLAorICAgIDB4ODQs
MHg1MSwweDQzLDB4NDksMHhGNSwweENGLDB4OEEsMHgyQiwweEE0LDB4NTEsMHg2NCwweDUxLDB4
NzksMHhFRCwweDdCLDB4NUQsCisgICAgMHhBNCwweDUxLDB4NDMsMHg0OSwweEI3LDB4QjUsMHhB
RiwweDJCLDB4QTUsMHg1MSwweDQ0LDB4NDksMHg4MCwweEEwLDB4QjgsMHhEOCwKKyAgICAweDg0
LDB4NTEsMHg0NCwweDQ5LDB4QUEsMHhFOCwweEY3LDB4RkYsMHg4NCwweDQ5LDB4NDQsMHg0OSww
eDAxLDB4QTEsMHhGRCwweERFLAorICAgIDB4NjQsMHg0OSwweDIzLDB4NDEsMHgwOCwweEFBLDB4
N0EsMHg4MCwweDY0LDB4NDksMHgyMywweDQxLDB4MkUsMHhFMiwweEVGLDB4REYsCisgICAgMHg2
NCwweDUxLDB4MjMsMHg0OSwweEFGLDB4MEEsMHhCRSwweDI3LDB4QTQsMHg1OSwweDIzLDB4NDks
MHhERiwweDdGLDB4REUsMHgzQiwKKyAgICAweDA2LDB4NkEsMHgwMiwweDQxLDB4RjUsMHhCRiww
eDJCLDB4MEUsMHgwNiwweDZBLDB4NjQsMHg1MSwweDBELDB4MEIsMHg4MiwweEEwLAorICAgIDB4
NDcsMHg3MiwweDQzLDB4NTEsMHg4QSwweEEyLDB4QTMsMHhENywweEU1LDB4NjEsMHg4MywweDU5
LDB4ODgsMHhCQSwweEUyLDB4NTUsCisgICAgMHhFNiwweDYxLDB4ODQsMHg1MSwweEUwLDB4QUIs
MHhFRCwweDdGLDB4ODUsMHg1MSwweDAzLDB4NDEsMHhEOCwweEY4LDB4N0EsMHg1QSwKKyAgICAw
eDY0LDB4NDksMHgwMiwweDQxLDB4MkEsMHhGRiwweDdELDB4NTUsMHgyMywweDQxLDB4QzIsMHgz
OCwweDY4LDB4RTAsMHhFQSwweEJBLAorICAgIDB4MjMsMHg0MSwweEUzLDB4MzgsMHg4MiwweDAz
LDB4RUIsMHhGOSwweDAzLDB4MzksMHhDMiwweDMwLDB4OEEsMHhBOCwweEYwLDB4N0UsCisgICAg
MHgyMywweDM5LDB4QzIsMHgzMCwweEFCLDB4QUYsMHhGRiwweEQ1LDB4MDMsMHgzOSwweDgyLDB4
MjAsMHg3MCwweEYwLDB4RjAsMHhGQSwKKyAgICAweEMyLDB4MjgsMHg2MSwweDIwLDB4M0YsMHhC
NywweEJELDB4MTcsMHgwMywweDMxLDB4QzMsMHgyOCwweDBBLDB4MDMsMHgwMywweEZELAorICAg
IDB4MDMsMHgzMSwweEMzLDB4MjgsMHgyMCwweDYyLDB4NzcsMHg1NSwweEMzLDB4MjgsMHg2Miww
eDI4LDB4QTgsMHgyQSwweEE4LDB4RTgsCisgICAgMHhDMiwweDMwLDB4ODEsMHgyOCwweDAyLDB4
QkMsMHhBQywweEI3LDB4QzIsMHgyOCwweDgxLDB4MjgsMHhGQSwweDdBLDB4NkYsMHhBRiwKKyAg
ICAweEEyLDB4MzAsMHg4MSwweDIwLDB4RUYsMHhGRCwweDVGLDB4MjgsMHhDMywweDMwLDB4ODEs
MHgyOCwweEVELDB4RjUsMHgzNSwweDNDLAorICAgIDB4NDQsMHg0MSwweDgxLDB4MjgsMHhENSww
eEJGLDB4QkIsMHg4MiwweDI0LDB4NDEsMHhBMiwweDMwLDB4NTcsMHg1QSwweEE4LDB4ODIsCisg
ICAgMHhFMywweDM4LDB4NjEsMHgyOCwweDU3LDB4RkYsMHhFQSwweEEwLDB4QTIsMHgzMCwweDgy
LDB4MjgsMHg4RCwweEI3LDB4QkIsMHg4OCwKKyAgICAweDI0LDB4NDEsMHhBMiwweDMwLDB4QUQs
MHgyRiwweEFELDB4QUQsMHg0NCwweDQ5LDB4MDMsMHg0MSwweEFGLDB4QkEsMHhBQiwweDlGLAor
ICAgIDB4NDQsMHg0OSwweDAzLDB4MzksMHhERSwweDdDLDB4N0UsMHhDMCwweDIzLDB4NDEsMHhB
MiwweDMwLDB4RkUsMHhFQSwweEVBLDB4RkMsCisgICAgMHhFMiwweDM4LDB4ODEsMHgyOCwweDdB
LDB4RUEsMHhBQSwweDAwLDB4QzIsMHgzMCwweDgxLDB4MjgsMHhGRiwweDdBLDB4RTgsMHhEQSwK
KyAgICAweEUyLDB4MzAsMHg4MSwweDIwLDB4RkYsMHhBRCwweDBCLDB4MkEsMHgyNCwweDM5LDB4
QzIsMHgyOCwweEZELDB4QkYsMHhBRiwweDBBLAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHg1
NSwweEU3LDB4MEIsMHgwMiwweDQ0LDB4MzksMHhDMiwweDMwLDB4NUYsMHg3QSwweEU4LDB4MEEs
CisgICAgMHg0NCwweDM5LDB4QTIsMHgyOCwweDU3LDB4NTcsMHhGRiwweEU4LDB4MDMsMHgzMSww
eDgyLDB4MjgsMHg3NywweEZGLDB4RTIsMHhBQSwKKyAgICAweEUzLDB4MzAsMHg4MSwweDI4LDB4
NzcsMHhGRiwweEJFLDB4MDIsMHgwNCwweDM5LDB4QTIsMHgyOCwweDA5LDB4QUQsMHgyRiwweDNB
LAorICAgIDB4MjQsMHgzOSwweEUyLDB4MzAsMHhBQSwweEVGLDB4RUYsMHhGRCwweEUyLDB4MzAs
MHhBMiwweDI4LDB4MDAsMHgwMiwweDAwLDB4RjgsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCww
eEJFLDB4QTYsMHhGQSwweEUzLDB4QzIsMHgzMCwweEEyLDB4MjgsMHgwMCwweDBFLDB4MkQsMHgy
RiwKKyAgICAweDAzLDB4MzksMHhDMywweDMwLDB4QzIsMHhFQiwweEZGLDB4RjcsMHhFMiwweDMw
LDB4QTEsMHgzMCwweEM4LDB4QTksMHhFNiwweEFFLAorICAgIDB4RTIsMHgzMCwweEMyLDB4MzAs
MHg1NywweDU3LDB4RDUsMHg4RCwweDAzLDB4MzksMHhDMiwweDMwLDB4QjUsMHgzRCwweDk3LDB4
RDcsCisgICAgMHg0NCwweDM5LDB4RTIsMHgzMCwweEZCLDB4REUsMHhBRSwweEY3LDB4MDMsMHgz
MSwweEUyLDB4MzAsMHgwMywweDgyLDB4QkUsMHhCNiwKKyAgICAweDAzLDB4MzEsMHhDMiwweDMw
LDB4OEYsMHg4QSwweDYyLDB4RjgsMHhFMiwweDMwLDB4QTIsMHgyOCwweEVBLDB4N0EsMHg2Riww
eEVDLAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhGRCwweEE5LDB4QUQsMHg4QiwweEUzLDB4
MzAsMHhBMiwweDI4LDB4QUQsMHhFQiwweDZCLDB4N0EsCisgICAgMHhFMiwweDI4LDB4QTEsMHgy
OCwweEJGLDB4NkYsMHg1NSwweEE1LDB4QzIsMHgyOCwweEEyLDB4MjgsMHg4MCwweDhCLDB4Rjks
MHhGOCwKKyAgICAweEUyLDB4MjgsMHhBMSwweDI4LDB4QUEsMHhEQSwweEY3LDB4NTUsMHhFMyww
eDMwLDB4QTEsMHgyOCwweDIzLDB4MEUsMHhBQiwweDlCLAorICAgIDB4MDMsMHgzMSwweEMyLDB4
MjgsMHhFMywweEIyLDB4RUIsMHhERiwweDAzLDB4MzEsMHhFMywweDMwLDB4Q0QsMHhFRiwweEE1
LDB4RjcsCisgICAgMHgwMiwweDMxLDB4QzIsMHgzMCwweDVCLDB4Q0EsMHhERSwweEZFLDB4MDMs
MHgzMSwweEMyLDB4MjgsMHhBOCwweEJCLDB4RkQsMHhFQiwKKyAgICAweDIzLDB4MzEsMHhDMiww
eDMwLDB4RkYsMHg3RSwweEY3LDB4RDUsMHgyMywweDMxLDB4QzIsMHgzMCwweENCLDB4RkYsMHhG
QiwweDlFLAorICAgIDB4MDIsMHgzOSwweEMyLDB4MzAsMHg3QSwweEUyLDB4RkEsMHhBQywweDI0
LDB4MzksMHhDMiwweDMwLDB4QjUsMHhBNSwweDI1LDB4QjUsCisgICAgMHg2NCwweDQxLDB4RTIs
MHgzOCwweEYzLDB4RkYsMHhENywweDU3LDB4ODUsMHg0OSwweDI0LDB4NDEsMHhGQiwweEFELDB4
QUQsMHgyOSwKKyAgICAweEE1LDB4NTEsMHg0MywweDQxLDB4REQsMHhGRCwweDZCLDB4OEEsMHhD
NiwweDU5LDB4NDMsMHg0OSwweDc1LDB4RkQsMHg5NywweDI3LAorICAgIDB4MDksMHg4MywweDQz
LDB4NDksMHhGRCwweEJELDB4MkYsMHgyRiwweEFGLDB4QjQsMHhBOCwweDcyLDB4QUQsMHhBRiww
eDJGLDB4MkEsCisgICAgMHhEMCwweEJDLDB4NkUsMHhBQywweDc1LDB4RkYsMHhBMywweEEyLDB4
QUYsMHhCNCwweDRFLDB4QUMsMHhGRiwweDdFLDB4QkEsMHhGRSwKKyAgICAweDhGLDB4QjQsMHg2
RSwweEFDLDB4REQsMHhCQSwweDBBLDB4MEYsMHhBRiwweEI0LDB4NEUsMHhBQywweERGLDB4QkEs
MHgwMCwweEEyLAorICAgIDB4QUYsMHhCNCwweDZFLDB4QUMsMHg1NywweEY1LDB4MkEsMHgwMCww
eEFGLDB4QjQsMHgwRCwweEE0LDB4NkEsMHhBQSwweEU4LDB4MjAsCisgICAgMHg0RiwweEFDLDB4
NkIsMHg4QiwweDU3LDB4NTgsMHg3OCwweEMwLDB4NEIsMHg4QiwweDBBLDB4ODMsMHhFRSwweEZB
LDB4NUYsMHg1QSwKKyAgICAweDBBLDB4N0IsMHhDOSwweDcyLDB4QTIsMHhFMCwweEU4LDB4Njgs
MHhFOSwweDdBLDB4QTgsMHg3MiwweEZBLDB4NjIsMHg1QSwweDdBLAorICAgIDB4QTgsMHg3Miww
eDQ3LDB4NjIsMHgyMCwweDAwLDB4RUEsMHhEQSwweEM5LDB4NzIsMHg0NywweDYyLDB4MDIsMHg4
RSwweDhGLDB4QjUsCisgICAgMHhFOSwweDdBLDB4ODgsMHg2QSwweDdGLDB4OUUsMHg4MywweENB
LDB4QzksMHg3MiwweDY3LDB4NkEsMHhGRCwweEJGLDB4MzgsMHhBQSwKKyAgICAweEM5LDB4NzIs
MHg2NywweDYyLDB4NUEsMHhGQSwweDg4LDB4QzAsMHhBOCwweDcyLDB4NDcsMHg2MiwweERGLDB4
RjgsMHhFMCwweEU4LAorICAgIDB4ODcsMHg2QSwweDI3LDB4NjIsMHg1NiwweEY3LDB4NkUsMHhD
QiwweEU5LDB4N0EsMHgwNiwweDVBLDB4MkYsMHhGRiwweEQ1LDB4NTcsCisgICAgMHg2QiwweDgz
LDB4MDYsMHg1QSwweDAwLDB4MDIsMHgyRCwweDM1LDB4OEMsMHg4QiwweDRCLDB4ODMsMHhFQSww
eDNBLDB4MkMsMHgzNSwKKyAgICAweDhDLDB4OEIsMHg0QiwweDgzLDB4QjgsMHhFOCwweDMwLDB4
OUEsMHg4QywweDhCLDB4NEIsMHg4MywweDlFLDB4QkEsMHhBRSwweERDLAorICAgIDB4MjMsMHg0
OSwweEUzLDB4NDAsMHhGQSwweEU4LDB4QkYsMHgyRCwweDIzLDB4NDksMHhFMiwweDQwLDB4QTUs
MHhBRCwweEZBLDB4NUUsCisgICAgMHgyMywweDQxLDB4QzIsMHg0MCwweDdGLDB4RkMsMHhCRSww
eEZBLDB4MjMsMHg0MSwweEMyLDB4NDAsMHhBQSwweEE5LDB4MkEsMHhBQiwKKyAgICAweDIzLDB4
NDksMHhFMiwweDQwLDB4QkUsMHg5RSwweEZFLDB4RUEsMHgyMywweDQ5LDB4RTIsMHg0MCwweDU2
LDB4REUsMHgxRSwweEVELAorICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHhBRiwweEZGLDB4RkUs
MHg4OCwweDQzLDB4NDksMHhFMiwweDQwLDB4RkYsMHhFRiwweEE3LDB4QUMsCisgICAgMHg0Myww
eDQ5LDB4RTIsMHg0MCwweEZCLDB4NkIsMHhFMCwweEQwLDB4MjMsMHg0MSwweEUyLDB4NDAsMHhB
QiwweDg5LDB4OEIsMHhBQSwKKyAgICAweDQzLDB4NDksMHgwMywweDQxLDB4RjUsMHhENywweEI3
LDB4QTQsMHg0MywweDQ5LDB4MDMsMHg0MSwweDlGLDB4M0UsMHhBOCwweEJGLAorICAgIDB4NDMs
MHg0OSwweEUzLDB4NDAsMHg3OCwweEM4LDB4QUYsMHhFRiwweDAyLDB4NDEsMHhDMiwweDQwLDB4
QkYsMHhERiwweDVDLDB4QTAsCisgICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweDNGLDB4M0YsMHhE
RCwweEY3LDB4RTUsMHg2MSwweDAzLDB4NDksMHgyRiwweDNGLDB4QjUsMHhGNSwKKyAgICAweDA1
LDB4NkEsMHhBNCwweDU5LDB4MEEsMHhBRSwweEMyLDB4MkQsMHgyNiwweDZBLDB4ODQsMHg1OSww
eEE4LDB4RTIsMHg3QSwweDdBLAorICAgIDB4RTUsMHg2MSwweDAzLDB4NDksMHhBOCwweEVBLDB4
RkUsMHg3RiwweDg0LDB4NTksMHhFMiwweDQwLDB4QTAsMHhFMCwweEZGLDB4REQsCisgICAgMHgw
MywweDQ5LDB4QzIsMHg0MCwweEE4LDB4RUEsMHhGRSwweDlBLDB4MDMsMHg0OSwweEMyLDB4NDAs
MHhCQSwweDg4LDB4NzgsMHg5QSwKKyAgICAweDg1LDB4NTksMHhFMiwweDQwLDB4M0QsMHgzRCww
eDM1LDB4MjcsMHhFNiwweDYxLDB4QTUsMHg1OSwweEVELDB4RDYsMHhCNiwweDA5LAorICAgIDB4
RTYsMHg2MSwweEE1LDB4NTksMHg1RCwweDc2LDB4REEsMHhCQiwweEM1LDB4NTksMHg2NCwweDUx
LDB4NUEsMHg2MCwweEZDLDB4RjgsCisgICAgMHg4NCwweDUxLDB4NDMsMHg1MSwweEFBLDB4OEIs
MHg4QiwweDA0LDB4QzUsMHg1MSwweDY0LDB4NTEsMHhGRCwweEZELDB4RUQsMHhCRiwKKyAgICAw
eEM1LDB4NTksMHg4NCwweDUxLDB4QjUsMHhCQSwweDZELDB4RDgsMHhBNSwweDUxLDB4NjQsMHg0
OSwweEY4LDB4RUUsMHhENiwweDU4LAorICAgIDB4ODUsMHg1MSwweDQ0LDB4NDksMHhFQywweEJB
LDB4RUYsMHhCRiwweDg0LDB4NDksMHgyMywweDQxLDB4RjgsMHg1RSwweEZBLDB4ODAsCisgICAg
MHg4NSwweDUxLDB4MjMsMHg0OSwweEZCLDB4RkIsMHg2QSwweEZBLDB4NjQsMHg0OSwweDIzLDB4
NDksMHg5NywweDZGLDB4REYsMHhGQSwKKyAgICAweDI1LDB4NkEsMHgyMywweDQ5LDB4RjUsMHgz
RCwweDBGLDB4MjMsMHg2NSwweDcyLDB4QzQsMHg1OSwweEI1LDB4OEUsMHgyMiwweEVBLAorICAg
IDB4NjYsMHg3MiwweEEzLDB4NTksMHhBQSwweEE4LDB4RjgsMHg3RSwweDA2LDB4NkEsMHg4NCww
eDUxLDB4QTgsMHhBOCwweEVBLDB4NUYsCisgICAgMHhDNSwweDU5LDB4NjQsMHg1MSwweDU2LDB4
RDQsMHg3RSwweDdCLDB4NjQsMHg1MSwweDIzLDB4NDksMHg4MCwweDA4LDB4RkEsMHg1NywKKyAg
ICAweEM1LDB4NTksMHg0MywweDQ5LDB4Q0EsMHhBQiwweEVCLDB4RkQsMHg2NCwweDQ5LDB4MDMs
MHg0MSwweEZBLDB4NUUsMHg3QywweERDLAorICAgIDB4MjMsMHg0MSwweEEyLDB4MzAsMHhBQSww
eEFBLDB4RkEsMHg3QSwweDAzLDB4MzksMHhDMiwweDM4LDB4QTIsMHhBRSwweEI3LDB4MjUsCisg
ICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDNCLDB4QkYsMHg1RiwweEQwLDB4RTMsMHgzOCwweDYx
LDB4MjgsMHhCMCwweEU4LDB4QTgsMHhBQSwKKyAgICAweEMyLDB4MzAsMHg2MSwweDI4LDB4MkEs
MHhBQiwweEVFLDB4RkEsMHhDMiwweDI4LDB4ODEsMHgyOCwweEFBLDB4RkQsMHhCNSwweERELAor
ICAgIDB4QTIsMHgyOCwweDYxLDB4MjAsMHgzRiwweEJBLDB4QjgsMHgyQSwweEUzLDB4MzAsMHhB
MiwweDI4LDB4MkYsMHhBQiwweEFCLDB4RkQsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDdF
LDB4N0EsMHhCQywweEI2LDB4QzMsMHgzMCwweDgyLDB4MjgsMHhGRiwweEVBLDB4MEEsMHg4MCwK
KyAgICAweEUzLDB4MzAsMHg4MiwweDIwLDB4REYsMHhENSwweEZCLDB4RUYsMHg0NCwweDQxLDB4
QTIsMHgyOCwweEQ1LDB4RkQsMHhBRCwweDJGLAorICAgIDB4NDQsMHg0MSwweEEyLDB4MzAsMHhC
RCwweDJGLDB4ODgsMHg4MCwweDY1LDB4NDksMHgwMywweDM5LDB4RDcsMHhGRiwweEVGLDB4M0Qs
CisgICAgMHg2NSwweDQ5LDB4QzMsMHgzOCwweEVBLDB4RTgsMHhGQSwweDU4LDB4MjQsMHg0MSww
eEMyLDB4MzgsMHgwQSwweDJBLDB4M0UsMHhGRCwKKyAgICAweDIzLDB4NDEsMHhFMywweDM4LDB4
REYsMHhFNiwweEU4LDB4QTAsMHgyMywweDQxLDB4QTIsMHgzMCwweEQ3LDB4RUYsMHhBQSwweDBB
LAorICAgIDB4MDMsMHg0MSwweEUyLDB4MzgsMHg3RCwweDZELDB4RDcsMHg1QywweDQ0LDB4NDks
MHhFMiwweDM4LDB4RkYsMHhDRCwweEI1LDB4QjUsCisgICAgMHg4NSwweDUxLDB4MjMsMHg0MSww
eEZGLDB4RkQsMHg4RCwweEM5LDB4ODQsMHg1MSwweDAzLDB4MzksMHg1NywweEZGLDB4QUIsMHhB
MiwKKyAgICAweDQzLDB4NDksMHhFMiwweDM4LDB4NUYsMHg3RSwweDc4LDB4NjAsMHhFMiwweDMw
LDB4QTIsMHgzMCwweDdGLDB4N0YsMHhGQywweEQ3LAorICAgIDB4RTIsMHgzMCwweEExLDB4Mjgs
MHgzRCwweEI1LDB4QkQsMHhERiwweDAzLDB4MzksMHhBMiwweDI4LDB4MDIsMHgyRiwweEJGLDB4
NTcsCisgICAgMHgyNCwweDM5LDB4QzIsMHgzMCwweEEwLDB4ODIsMHhFRiwweEY1LDB4NDQsMHg0
MSwweEUzLDB4MzAsMHgyRCwweDJELDB4QUQsMHhGRCwKKyAgICAweDQ1LDB4MzksMHhDMywweDMw
LDB4RUMsMHhGQSwweDdBLDB4REUsMHgyMywweDM5LDB4QzIsMHgzMCwweEY4LDB4RkIsMHhBQiww
eEFELAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHgyOCwweEMyLDB4QjgsMHhFMCwweEUzLDB4
MzAsMHhDMiwweDI4LDB4MDgsMHgwMiwweDIwLDB4MEQsCisgICAgMHgyNCwweDM5LDB4QzIsMHgy
OCwweEJGLDB4RkYsMHhGRiwweDU0LDB4MDMsMHgzMSwweEEyLDB4MjgsMHg1QSwweDU0LDB4NzYs
MHg3RiwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4RTksMHhGQiwweDdELDB4N0UsMHhDMiww
eDMwLDB4ODIsMHgyOCwweDNFLDB4M0YsMHhBQiwweEMyLAorICAgIDB4MDMsMHgzOSwweEMyLDB4
MzAsMHhBRiwweDhGLDB4RkIsMHhEQiwweDAzLDB4MzksMHhDMiwweDMwLDB4QUYsMHgwMiwweEEy
LDB4RjgsCisgICAgMHhFMiwweDMwLDB4ODEsMHgyOCwweEMyLDB4QzgsMHg2MCwweEM4LDB4RTIs
MHgzMCwweEExLDB4MjgsMHgyQSwweEFELDB4RUYsMHhCRCwKKyAgICAweEUyLDB4MzAsMHhDMiww
eDMwLDB4MDIsMHhEQiwweEVCLDB4NjMsMHgwMywweDMxLDB4QzIsMHgzMCwweDI4LDB4QTgsMHhB
MCwweDhCLAorICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHg1MiwweDVFLDB4QkIsMHhGNywweEUz
LDB4MzAsMHhBMiwweDI4LDB4QTgsMHhFMiwweDgwLDB4N0MsCisgICAgMHhFMywweDMwLDB4QTIs
MHgyOCwweDYyLDB4RkIsMHg5NywweEY3LDB4RTMsMHgzMCwweEMyLDB4MjgsMHg1RCwweDQ1LDB4
OEQsMHgyNSwKKyAgICAweEUyLDB4MzAsMHhDMiwweDI4LDB4ODksMHhBQiwweDdGLDB4NzcsMHhF
MiwweDMwLDB4QTEsMHgyOCwweDVBLDB4REEsMHhBQSwweDIwLAorICAgIDB4RTMsMHgzMCwweDgx
LDB4MjAsMHhERiwweEFFLDB4OEEsMHg4QSwweEUyLDB4MzAsMHhBMiwweDI4LDB4RkIsMHhFOSww
eDhBLDB4MjIsCisgICAgMHgwMywweDMxLDB4QzIsMHgzMCwweDdGLDB4RjIsMHhDQSwweEZFLDB4
MjMsMHgzOSwweEUzLDB4MzAsMHg3RiwweEZFLDB4REQsMHgzRiwKKyAgICAweDIzLDB4MzksMHhF
MywweDMwLDB4NUYsMHhGRCwweEVGLDB4OEIsMHgyMywweDM5LDB4QzIsMHgyOCwweEZCLDB4RDcs
MHhFRiwweEI4LAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHg1NywweDU3LDB4NUMsMHg3OCww
eDIzLDB4MzksMHhDMiwweDMwLDB4RDcsMHhENSwweEJGLDB4QkQsCisgICAgMHgwMywweDM5LDB4
QzIsMHgzMCwweDk2LDB4RkYsMHhBQiwweEJFLDB4MDMsMHgzOSwweEMyLDB4MzAsMHhCRiwweEJE
LDB4QjcsMHgxNywKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4M0UsMHhFRSwweEI4LDB4QkEs
MHhBNSwweDQ5LDB4MDMsMHgzOSwweEFCLDB4MkQsMHgyRCwweEJELAorICAgIDB4QzUsMHg1OSww
eDg0LDB4NDksMHhCOSwweEZBLDB4QkIsMHhGOSwweDA2LDB4NjIsMHg4NCwweDUxLDB4QjUsMHhB
RCwweDI3LDB4MkQsCisgICAgMHhBRCwweDkzLDB4MjYsMHg2MiwweEI1LDB4MkQsMHgyRCwweDBC
LDB4RjAsMHhCQywweDBFLDB4QTQsMHhBOSwweDJGLDB4MEYsMHgyQSwKKyAgICAweEYwLDB4QzQs
MHhBRiwweEI0LDB4N0IsMHhFRSwweEJFLDB4NzgsMHhGMCwweEM0LDB4OEYsMHhCNCwweDdGLDB4
NzgsMHhGQSwweEJGLAorICAgIDB4RDAsMHhCQywweDZFLDB4QjQsMHhGNywweEY3LDB4RUMsMHhG
RSwweEQwLDB4QkMsMHg4RiwweEI0LDB4RkYsMHhCQiwweDNELDB4QkQsCisgICAgMHhEMCwweEJD
LDB4OEYsMHhCNCwweEZCLDB4QkEsMHhBOCwweEE4LDB4Q0YsMHhCQywweDhGLDB4QjQsMHhCNiww
eEVCLDB4RTIsMHhBQiwKKyAgICAweEFGLDB4QjQsMHgyRSwweEE0LDB4NzgsMHg2OCwweEE4LDB4
QTAsMHg2RSwweEFDLDB4MkIsMHg4MywweDU3LDB4NUUsMHhGQSwweEU4LAorICAgIDB4NkMsMHg4
QiwweEVBLDB4N0EsMHg1RiwweDU3LDB4QUYsMHhBOCwweDJCLDB4ODMsMHhBOSwweDcyLDB4NUIs
MHg3QSwweDc4LDB4NjgsCisgICAgMHhDOSwweDcyLDB4NDcsMHg2MiwweEY2LDB4N0YsMHgzQSww
eEUwLDB4ODcsMHg2QSwweDI2LDB4NjIsMHhCRSwweEFFLDB4QkEsMHg0OCwKKyAgICAweEM5LDB4
NzIsMHg0NiwweDYyLDB4QUUsMHgyRSwweEFGLDB4MkQsMHhFOSwweDdBLDB4QTgsMHg3MiwweDdE
LDB4N0MsMHg3RSwweDdELAorICAgIDB4MDksMHg3QiwweEE4LDB4NzIsMHg1QiwweDg5LDB4OEIs
MHg4QiwweEU5LDB4N0EsMHg4OCwweDZBLDB4N0UsMHhGRSwweEUyLDB4MjAsCisgICAgMHhDOSww
eDcyLDB4NjgsMHg2QSwweDc3LDB4RUIsMHhFRSwweDgwLDB4ODgsMHg2QSwweEU2LDB4NTksMHg3
RSwweDdBLDB4RUEsMHg4MCwKKyAgICAweDI3LDB4NjIsMHhDNSwweDUxLDB4MjksMHhBRiwweERF
LDB4QUMsMHg0QiwweDgzLDB4RTYsMHg1MSwweDBCLDB4MzUsMHhENSwweDU1LAorICAgIDB4NkIs
MHg4MywweDA2LDB4NUEsMHgwMCwweDAwLDB4MEEsMHhCNSwweDhDLDB4OEIsMHgyQSwweDdCLDB4
QkEsMHhBQSwweEI4LDB4RjUsCisgICAgMHgwMiwweDQ5LDB4RTIsMHg0MCwweDhCLDB4OEUsMHg5
RSwweDM3LDB4MjIsMHg0OSwweEMyLDB4MzgsMHhCNywweERGLDB4QkIsMHhGQywKKyAgICAweDAz
LDB4NDksMHhFMiwweDM4LDB4REEsMHhGQywweDdBLDB4RTIsMHgwMywweDQ5LDB4RTIsMHgzOCww
eEFBLDB4RkEsMHhCRiwweDJFLAorICAgIDB4MjMsMHg0MSwweEUyLDB4NDAsMHhDQSwweDhBLDB4
OUMsMHgzQywweDIzLDB4NDksMHhFMiwweDQwLDB4MDcsMHg4OCwweEJBLDB4RTgsCisgICAgMHgy
MywweDQ5LDB4RTIsMHg0MCwweEE4LDB4QTgsMHhCOCwweEQ3LDB4MjMsMHg0OSwweDAyLDB4NDEs
MHg3NSwweDU0LDB4NzgsMHhEOCwKKyAgICAweDY0LDB4NDksMHgwMiwweDQxLDB4REUsMHhCQiww
eEIzLDB4RUIsMHg0MywweDQ5LDB4RTIsMHg0MCwweDk2LDB4RkEsMHhFMiwweEE4LAorICAgIDB4
MjMsMHg0OSwweEUyLDB4NDAsMHgyQywweERFLDB4QUUsMHgzRSwweDIzLDB4NDEsMHhFMiwweDQw
LDB4QUUsMHhGQSwweEYzLDB4NTYsCisgICAgMHgyMywweDQ5LDB4QzIsMHgzOCwweEFBLDB4QTIs
MHhCNSwweDM3LDB4MjMsMHg0OSwweEUyLDB4NDAsMHg3MiwweDQwLDB4QTgsMHhFRSwKKyAgICAw
eDIzLDB4NDksMHhFMiwweDQwLDB4MTcsMHhCQiwweEFCLDB4QjMsMHgyMywweDQ5LDB4RTIsMHg0
MCwweEE2LDB4QUYsMHhBMSwweDgwLAorICAgIDB4QTUsMHg1OSwweDAyLDB4NDEsMHgyRiwweDJE
LDB4QkQsMHhGNywweEM1LDB4NjEsMHgyMywweDQ5LDB4RTAsMHhGQSwweDdGLDB4NTUsCisgICAg
MHg0NCwweDQ5LDB4RTMsMHg0MCwweEU2LDB4QkMsMHhGQSwweEU2LDB4MDMsMHg0OSwweEMyLDB4
NDAsMHgyQSwweEE4LDB4RkEsMHg1RiwKKyAgICAweEUyLDB4NDAsMHhDMiwweDM4LDB4QTgsMHgy
NiwweDFGLDB4M0IsMHgwMywweDQ5LDB4QzIsMHg0MCwweEJGLDB4QUUsMHg3QSwweEZBLAorICAg
IDB4QTUsMHg1OSwweDAzLDB4NDksMHgzNSwweDI1LDB4MzUsMHhBNSwweDA2LDB4NjIsMHhBNCww
eDU5LDB4QUYsMHhFQiwweDg5LDB4OEQsCisgICAgMHgwNiwweDYyLDB4QTQsMHg1OSwweEVGLDB4
RkYsMHhERiwweDVDLDB4RTUsMHg2MSwweDg0LDB4NTEsMHg3QSwweDdFLDB4NkIsMHhFQSwKKyAg
ICAweEM1LDB4NTksMHg2MywweDUxLDB4RDcsMHhCQiwweDAzLDB4MDksMHhDNSwweDU5LDB4ODQs
MHg1MSwweEQ3LDB4QkUsMHhCRiwweEZDLAorICAgIDB4QzUsMHg1OSwweDY0LDB4NTEsMHhFOCww
eEQ4LDB4RkYsMHhGRSwweDg0LDB4NTEsMHg0NCwweDQ5LDB4RjgsMHhFRSwweEJGLDB4QkUsCisg
ICAgMHhBNSwweDUxLDB4NjQsMHg0OSwweDVELDB4N0QsMHhBMywweDdCLDB4QTQsMHg0OSwweDQ0
LDB4NDksMHhFRiwweDdGLDB4NUYsMHhGOSwKKyAgICAweDY0LDB4NDksMHgyMywweDQxLDB4QTAs
MHg4MCwweDIyLDB4MEUsMHg2NCwweDUxLDB4MjMsMHg0OSwweDFDLDB4M0YsMHgyQSwweDBCLAor
ICAgIDB4ODgsMHg3QSwweEM1LDB4NTksMHhGRCwweEFGLDB4MjksMHgzNSwweDQ2LDB4NzIsMHhD
MywweDYxLDB4Q0EsMHg2QSwweEMwLDB4RTAsCisgICAgMHgwNSwweDZBLDB4QTMsMHg1OSwweDdF
LDB4RkEsMHhFOCwweEU4LDB4ODQsMHg1OSwweEUyLDB4MzgsMHgwMCwweEEwLDB4RjAsMHg3MCwK
KyAgICAweDY0LDB4NTEsMHhBMSwweDMwLDB4ODAsMHhGQSwweEZBLDB4NTcsMHg0NCwweDQ5LDB4
QTIsMHgzMCwweDJBLDB4QUYsMHgzNSwweERGLAorICAgIDB4NjQsMHg0OSwweDIzLDB4NDEsMHgy
MCwweDBBLDB4MDMsMHhCRCwweDg0LDB4NDksMHgwMywweDM5LDB4NUIsMHg3QSwweEY4LDB4N0Es
CisgICAgMHgwMywweDM5LDB4QTIsMHgzMCwweEU4LDB4QTgsMHgyQSwweDAwLDB4MjMsMHg0MSww
eEMyLDB4MzAsMHhGNSwweEZCLDB4ODIsMHgwMiwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4
RjIsMHhGMCwweEY3LDB4RTYsMHhFMywweDMwLDB4QTIsMHgzMCwweEZFLDB4RkUsMHhGQywweENB
LAorICAgIDB4QzIsMHgzMCwweDgyLDB4MjgsMHg1QywweEU4LDB4QTIsMHgyMiwweEMyLDB4Mjgs
MHg4MSwweDIwLDB4RkIsMHhGMiwweEVBLDB4RjgsCisgICAgMHhDMiwweDI4LDB4ODEsMHgyMCww
eEI1LDB4OTcsMHhBNSwweEFELDB4QTIsMHgzMCwweEMzLDB4MjgsMHhGRiwweEQ3LDB4NTUsMHhE
NywKKyAgICAweEUzLDB4MjgsMHhBMiwweDI4LDB4QkYsMHgxRCwweDk3LDB4RkYsMHhFMywweDMw
LDB4QTIsMHgyOCwweEZBLDB4RkUsMHg1NywweERELAorICAgIDB4RTMsMHgzMCwweEEyLDB4Mjgs
MHg3NywweEE3LDB4QjUsMHhCRCwweDQ0LDB4NDEsMHhFMywweDMwLDB4MjksMHgwQiwweDAyLDB4
MDMsCisgICAgMHg4NSwweDUxLDB4MDMsMHgzOSwweDVGLDB4QkEsMHgyQSwweDJBLDB4NjQsMHg0
OSwweDIzLDB4NDEsMHgxNSwweDJGLDB4OEEsMHhBMCwKKyAgICAweDY1LDB4NDksMHhDMiwweDM4
LDB4N0EsMHhGRSwweEZFLDB4NjgsMHgwMywweDM5LDB4QzIsMHgzOCwweEY5LDB4RTEsMHhBQSww
eEFBLAorICAgIDB4MjMsMHg0MSwweEUzLDB4MzgsMHhBMywweEJGLDB4QkYsMHhGRiwweDIzLDB4
NDEsMHhFMiwweDM4LDB4RUEsMHhGQywweDc2LDB4NzYsCisgICAgMHgwMywweDQxLDB4RTIsMHgz
OCwweDBBLDB4MDksMHhBQiwweDgzLDB4MjMsMHg0OSwweEMyLDB4NDAsMHgyRSwweDNBLDB4RkUs
MHg1RiwKKyAgICAweDY1LDB4NDksMHhFMiwweDQwLDB4MEIsMHhCQiwweEFGLDB4NUQsMHg2NCww
eDQ5LDB4MDMsMHg0MSwweDAwLDB4MDIsMHgyRCwweEI1LAorICAgIDB4NjQsMHg0OSwweDAzLDB4
NDEsMHg0OCwweDQwLDB4RTAsMHg2QiwweDIzLDB4NDEsMHhBMSwweDMwLDB4RDUsMHg1RiwweDdF
LDB4RTgsCisgICAgMHhDMiwweDMwLDB4NjEsMHgyOCwweEU4LDB4NkEsMHhBMiwweEEyLDB4QzIs
MHgzMCwweDgxLDB4MjgsMHhGNSwweEZELDB4QUEsMHgwQSwKKyAgICAweEUzLDB4MzgsMHg2MSww
eDI4LDB4MEIsMHgyRiwweEFBLDB4QTIsMHgwMywweDM5LDB4QTEsMHgyOCwweDgwLDB4ODIsMHhB
QSwweEFCLAorICAgIDB4MDMsMHgzMSwweEEyLDB4MzAsMHhFQSwweDhBLDB4MEEsMHg4QSwweDAz
LDB4MzEsMHhBMiwweDI4LDB4OEEsMHhCRSwweEZBLDB4N0UsCisgICAgMHhFMywweDMwLDB4ODEs
MHgyMCwweEUyLDB4RUYsMHhGNywweDdGLDB4QzIsMHgzMCwweDgxLDB4MjgsMHgwQSwweDNCLDB4
QUYsMHhDRCwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4RUEsMHg4QiwweDg5LDB4NUQsMHhF
MywweDMwLDB4QTIsMHgyOCwweEZCLDB4RkYsMHhGRiwweERBLAorICAgIDB4QzIsMHgzMCwweEEy
LDB4MjgsMHhFRSwweDdELDB4RUEsMHhFMiwweEUyLDB4MzAsMHhBMiwweDI4LDB4NkIsMHhGOSww
eDU3LDB4NTUsCisgICAgMHhFMiwweDMwLDB4QTIsMHgyOCwweDAyLDB4QUIsMHhDOSwweDg5LDB4
MDMsMHgzOSwweEEyLDB4MjgsMHhCOCwweENCLDB4QkYsMHg3RCwKKyAgICAweEUzLDB4MzAsMHhB
MiwweDI4LDB4QUIsMHgyQiwweEVGLDB4RkQsMHhFMiwweDMwLDB4QTIsMHgyOCwweEVFLDB4RjQs
MHhFQSwweDJCLAorICAgIDB4RTIsMHgzMCwweEEyLDB4MjgsMHhFQiwweEU4LDB4QkEsMHg3QSww
eEUyLDB4MzAsMHhDMiwweDI4LDB4MDksMHgwOSwweDg3LDB4N0QsCisgICAgMHhFMiwweDMwLDB4
QzIsMHgyOCwweDI4LDB4NzIsMHg3RiwweEU1LDB4RTIsMHgzMCwweEEyLDB4MjgsMHhCQywweDgy
LDB4QTIsMHhBRSwKKyAgICAweEUyLDB4MzAsMHhDMiwweDI4LDB4RjUsMHg3NywweEEwLDB4M0Is
MHhFMywweDMwLDB4QTEsMHgyOCwweDBELDB4Q0QsMHhGRiwweDVCLAorICAgIDB4RTIsMHgzMCww
eEEyLDB4MjgsMHhCQSwweEJGLDB4QUYsMHhCQiwweDAzLDB4MzEsMHhDMiwweDI4LDB4N0UsMHg3
RiwweEY3LDB4RUIsCisgICAgMHgwMywweDMxLDB4QTEsMHgyOCwweDJGLDB4QUYsMHhBNywweDFF
LDB4MDMsMHgzOSwweEUyLDB4MzAsMHhCNywweEIyLDB4NUUsMHhGRiwKKyAgICAweEUyLDB4MzAs
MHhBMiwweDI4LDB4QjAsMHhGMCwweEYyLDB4RjgsMHgwMywweDMxLDB4QzIsMHgyOCwweDBCLDB4
M0QsMHg5NSwweEQ1LAorICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHgwMiwweEJCLDB4RjcsMHg3
RCwweDIzLDB4MzksMHhFMywweDMwLDB4RjgsMHhGRSwweEU1LDB4RjUsCisgICAgMHgyMywweDM5
LDB4RTMsMHgzOCwweDVFLDB4RjMsMHg3RCwweDU1LDB4MDMsMHgzOSwweEMyLDB4MzAsMHg4Nyww
eEFFLDB4QkUsMHgzRSwKKyAgICAweDAzLDB4MzksMHhFMywweDMwLDB4QkYsMHgyMSwweDIxLDB4
MzEsMHgwMywweDM5LDB4QTEsMHgyOCwweEZFLDB4N0MsMHhEOCwweEI4LAorICAgIDB4MDMsMHgz
OSwweEMyLDB4MzAsMHhCMywweEFGLDB4QjksMHhENSwweDQ0LDB4NDksMHhDMiwweDMwLDB4Mjks
MHgwNywweDJELDB4QkQsCisgICAgMHhBNCwweDUxLDB4MjMsMHg0MSwweDIyLDB4QUYsMHhCRiww
eDNELDB4NkIsMHg4QiwweEE0LDB4NTEsMHhGNSwweEE1LDB4MjUsMHgyRCwKKyAgICAweEYwLDB4
QzQsMHg0QiwweDhCLDB4QkQsMHgyRiwweDAyLDB4MDIsMHgzMSwweENELDB4QjAsMHhCNCwweEJE
LDB4QUIsMHg4MiwweDAyLAorICAgIDB4MzEsMHhDNSwweEFGLDB4QkMsMHhERiwweEY4LDB4QTgs
MHg4MCwweDEwLDB4QzUsMHg4RSwweEI0LDB4NTcsMHg3NywweEZBLDB4ODAsCisgICAgMHhEMCww
eEJDLDB4NEUsMHhBQywweEJBLDB4RkUsMHhGRSwweDc4LDB4Q0YsMHhCNCwweDZFLDB4QjQsMHhE
RiwweEZELDB4RUQsMHg3NSwKKyAgICAweEFGLDB4QjQsMHg2RSwweEI0LDB4M0MsMHhCQSwweDdB
LDB4N0QsMHhDRiwweEJDLDB4NEUsMHhBQywweEEyLDB4RUEsMHhCRSwweERGLAorICAgIDB4QUYs
MHhCNCwweDRFLDB4QUMsMHhGOCwweDdFLDB4N0YsMHg1NywweDZFLDB4QUMsMHhDQywweDlCLDB4
NTgsMHhFRSwweEFBLDB4QUEsCisgICAgMHg0RSwweEE0LDB4MkIsMHg4MywweDc3LDB4N0YsMHhB
OCwweDgwLDB4Q0MsMHg5QiwweEE5LDB4NzIsMHg3RiwweDdFLDB4N0EsMHhFOCwKKyAgICAweEVB
LDB4N0EsMHg2OCwweDZBLDB4RkUsMHhGRiwweERBLDB4RjAsMHhBOCwweDcyLDB4NDcsMHg2Miww
eDVFLDB4RkEsMHhDQSwweDIwLAorICAgIDB4QzgsMHg3MiwweDQ2LDB4NjIsMHhBNSwweDJCLDB4
RUEsMHhGQSwweEU5LDB4N0EsMHg4NywweDZBLDB4RUIsMHg4RiwweEFELDB4MkEsCisgICAgMHgw
OSwweDdCLDB4QzksMHg3MiwweEE5LDB4QTksMHgzQiwweDA5LDB4MkEsMHg4MywweEM5LDB4NzIs
MHg3QiwweEZCLDB4QjMsMHhDQiwKKyAgICAweDBBLDB4N0IsMHg4OCwweDZBLDB4QkYsMHhFQSww
eERBLDB4RkMsMHhDOSwweDcyLDB4NjgsMHg2MiwweDdDLDB4RUEsMHg4QSwweEI4LAorICAgIDB4
QTksMHg2QSwweDA2LDB4NUEsMHg1RiwweERFLDB4RjgsMHhDOCwweDQ3LDB4NjIsMHhDNSwweDUx
LDB4N0YsMHg3MiwweEYwLDB4RTAsCisgICAgMHg4OCwweDZBLDB4QTUsMHg0OSwweDM3LDB4NTcs
MHg1NywweDVGLDB4RUEsMHg3MiwweDY0LDB4NDEsMHgwMiwweEFGLDB4RkQsMHg1NSwKKyAgICAw
eDQzLDB4NDksMHhFMiwweDM4LDB4RjcsMHhBRSwweEU4LDB4RUIsMHgyMywweDQ5LDB4RTIsMHgz
OCwweDdFLDB4RUUsMHhFQiwweEZBLAorICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHhBQiwweDA5
LDB4QzUsMHhGNywweDIzLDB4NDksMHhDMSwweDM4LDB4QTgsMHhFOCwweEJBLDB4QkQsCisgICAg
MHgyMywweDQ5LDB4MDIsMHg0MSwweDFGLDB4QTksMHhERiwweERFLDB4MjMsMHg0OSwweDAyLDB4
NDEsMHhFMCwweEUwLDB4RDgsMHg1NywKKyAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4RDcsMHhC
RCwweDgwLDB4MDAsMHg0MywweDQ5LDB4MDIsMHg0MSwweDVGLDB4NjksMHhFMywweEZCLAorICAg
IDB4NDMsMHg0OSwweDAyLDB4NDEsMHhBMywweEZFLDB4RUIsMHhFQiwweDIzLDB4NDksMHgwMiww
eDQxLDB4QUEsMHg5QSwweDJBLDB4QjcsCisgICAgMHg0MywweDQ5LDB4RTIsMHg0MCwweEJCLDB4
MkUsMHhEQiwweDVGLDB4MjMsMHg0MSwweEUyLDB4NDAsMHg1QSwweERFLDB4NTcsMHg3NywKKyAg
ICAweDIzLDB4NDksMHhDMiwweDQwLDB4RjUsMHhBRSwweEFCLDB4QUIsMHgyMywweDQ5LDB4QzIs
MHgzOCwweENBLDB4MkIsMHhFOCwweDVBLAorICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHgzQiww
eEFCLDB4QUIsMHhFRCwweDIzLDB4NDksMHhFMiwweDQwLDB4QUUsMHhDQSwweENBLDB4NEYsCisg
ICAgMHgwMywweDQ5LDB4RTEsMHgzOCwweDIzLDB4QTksMHhFNywweDZGLDB4MDMsMHg0MSwweEMy
LDB4NDAsMHgwMiwweDIwLDB4MzIsMHgwMiwKKyAgICAweDIzLDB4NDksMHhDMiwweDM4LDB4Q0Es
MHg2QSwweDY4LDB4RTgsMHgwMywweDQxLDB4QTEsMHgzOCwweEYyLDB4QTYsMHhBRCwweDhBLAor
ICAgIDB4MDMsMHg0OSwweEMyLDB4MzgsMHhERiwweEVBLDB4ODIsMHhCQSwweDIzLDB4NDksMHhF
MywweDQwLDB4RkEsMHhFQSwweEJELDB4QkQsCisgICAgMHhBNSwweDU5LDB4MDMsMHg0OSwweDJE
LDB4MzUsMHgzNSwweDI1LDB4NDYsMHg2QSwweEM1LDB4NTksMHg2NSwweEFGLDB4OEYsMHgwRiwK
KyAgICAweDI2LDB4NkEsMHhDNCwweDU5LDB4REUsMHhGQiwweDdCLDB4RkMsMHhFNSwweDU5LDB4
ODQsMHg1MSwweDZBLDB4RUEsMHhBQiwweEFCLAorICAgIDB4RTUsMHg2MSwweDg0LDB4NTEsMHhG
RCwweEY3LDB4MzIsMHgyQSwweEE0LDB4NTksMHg2NCwweDQ5LDB4RkUsMHhGRiwweDA4LDB4MDAs
CisgICAgMHhBNCwweDUxLDB4MjMsMHg0OSwweDhBLDB4RUEsMHhGRSwweDdGLDB4NjQsMHg0OSww
eDIzLDB4NDEsMHhDMCwweDYwLDB4QUEsMHhCRSwKKyAgICAweDg1LDB4NTEsMHg2NCwweDQ5LDB4
NEYsMHg5NSwweDk5LDB4NTksMHg4NCwweDQ5LDB4NDQsMHg0OSwweEM1LDB4NUUsMHg1QSwweEY3
LAorICAgIDB4NjQsMHg0OSwweDIzLDB4NDEsMHhBQSwweDZCLDB4MkIsMHhBOCwweDY0LDB4NTEs
MHgwMywweDQxLDB4OEIsMHhCRSwweEZDLDB4REUsCisgICAgMHg0NywweDcyLDB4NDQsMHg0OSww
eDBGLDB4QUQsMHhCOSwweEI1LDB4ODgsMHg3QSwweEU1LDB4NjEsMHhFOCwweEY3LDB4NzcsMHhE
RCwKKyAgICAweDA1LDB4NjIsMHg0MywweDQ5LDB4QTAsMHhFMCwweDY4LDB4NUUsMHg2MywweDUx
LDB4NDEsMHgyOCwweEUwLDB4RjgsMHg3QSwweDdFLAorICAgIDB4QzIsMHgzOCwweDQxLDB4MjAs
MHgyMiwweEFBLDB4RkYsMHg3RCwweEUyLDB4MzgsMHg2MSwweDI4LDB4QjAsMHhGMiwweEFCLDB4
RkQsCisgICAgMHg0NCwweDQxLDB4QzIsMHgzMCwweDBCLDB4QkQsMHhGRCwweEY1LDB4NDMsMHg0
MSwweEMyLDB4MzAsMHg2MiwweDdGLDB4RkYsMHg3RiwKKyAgICAweDQ0LDB4NDEsMHhFMiwweDMw
LDB4RTksMHhBRiwweDM5LDB4Q0YsMHgyNCwweDQxLDB4RTMsMHgzMCwweDhCLDB4OEIsMHhGRSww
eEZFLAorICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHhGQywweEEwLDB4OUUsMHg1NywweDAzLDB4
MzEsMHhDMywweDMwLDB4QTcsMHhGNiwweDdDLDB4RjAsCisgICAgMHhDMiwweDI4LDB4QTIsMHgy
OCwweEJFLDB4RkUsMHhCQSwweDVELDB4QzIsMHgyOCwweDgxLDB4MjAsMHhGMCwweDBCLDB4Mjks
MHhCRCwKKyAgICAweEMyLDB4MjgsMHg4MSwweDIwLDB4QUEsMHhBQSwweEJFLDB4RkYsMHhDMyww
eDI4LDB4QTIsMHgyOCwweDBCLDB4MDksMHgwMywweEEyLAorICAgIDB4QzIsMHgyOCwweEEyLDB4
MjgsMHg5MCwweDdDLDB4NjgsMHhDOCwweEMzLDB4MzAsMHg4MiwweDIwLDB4QTIsMHhFQiwweEFG
LDB4M0YsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDNELDB4QkIsMHgzQSwweDNGLDB4NjUs
MHg0OSwweDAzLDB4MzksMHhBOSwweDI5LDB4QUQsMHgyRCwKKyAgICAweDg1LDB4NTEsMHgwMyww
eDM5LDB4OEEsMHhCQSwweEZFLDB4NUUsMHg0NCwweDQ5LDB4QzIsMHgzMCwweDAwLDB4QTAsMHhB
QSwweEZGLAorICAgIDB4NDQsMHg0OSwweEMyLDB4MzAsMHg3MCwweEU4LDB4QUYsMHg1NSwweDIz
LDB4NDEsMHhDMywweDMwLDB4QjIsMHhBQSwweDhBLDB4NkYsCisgICAgMHgwMywweDQxLDB4RTMs
MHgzOCwweEY4LDB4NUEsMHg1QiwweDU1LDB4MjMsMHg0MSwweEMyLDB4MzgsMHhGRiwweEY1LDB4
RDcsMHg1NiwKKyAgICAweDIzLDB4NDEsMHhFMiwweDM4LDB4RUEsMHhFOSwweEU5LDB4QUUsMHgw
MywweDQxLDB4QzIsMHgzOCwweDVGLDB4RkUsMHhFQywweEUwLAorICAgIDB4RTMsMHg0MCwweEMy
LDB4MzgsMHg2OSwweERBLDB4QkEsMHhCRSwweDI0LDB4NDksMHhDMiwweDM4LDB4MEIsMHgyNyww
eEFGLDB4QUIsCisgICAgMHg0NCwweDQ5LDB4RTIsMHgzOCwweEMyLDB4RUIsMHg3NywweDdGLDB4
MjMsMHg0MSwweEMyLDB4MzgsMHhFMiwweEUwLDB4NkEsMHhBRCwKKyAgICAweEUyLDB4MzgsMHhB
MSwweDI4LDB4RkEsMHg3QywweEVBLDB4QzAsMHhDMiwweDMwLDB4QTIsMHgyOCwweEVFLDB4NzUs
MHg0RiwweEZBLAorICAgIDB4RTMsMHgzMCwweDgxLDB4MjgsMHhGQSwweDZBLDB4NzAsMHhFQSww
eEUzLDB4MzAsMHg4MiwweDI4LDB4MjksMHhBQiwweEJCLDB4RDcsCisgICAgMHhFMywweDMwLDB4
ODEsMHgyMCwweEEwLDB4QTIsMHhENiwweDVELDB4QzIsMHgyOCwweDgxLDB4MjgsMHhBMCwweDgw
LDB4M0UsMHhCRCwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4N0QsMHhGNywweEZGLDB4MDcs
MHhDMiwweDMwLDB4ODEsMHgyOCwweEY1LDB4REQsMHhCRiwweDAwLAorICAgIDB4RTMsMHgzMCww
eDgxLDB4MjgsMHg3RCwweEFGLDB4QUIsMHg4MiwweEUzLDB4MzAsMHhBMiwweDI4LDB4NTUsMHg1
NywweEZGLDB4QUEsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEZGLDB4RkQsMHg1RiwweEUw
LDB4QzMsMHgzMCwweDgxLDB4MjgsMHg2RSwweDc1LDB4NTcsMHg3OCwKKyAgICAweEUyLDB4MzAs
MHg4MiwweDI4LDB4ODksMHhGRCwweDc1LDB4NTUsMHhDMiwweDI4LDB4ODEsMHgyOCwweEVBLDB4
N0IsMHhCRSwweDhCLAorICAgIDB4QzIsMHgyOCwweEEyLDB4MjgsMHgzNSwweDU1LDB4NTUsMHg3
QiwweEMyLDB4MzAsMHhBMiwweDI4LDB4MkQsMHgyNSwweEVELDB4RkYsCisgICAgMHhFMiwweDMw
LDB4QzIsMHgyOCwweEVCLDB4QkYsMHhGRCwweEEzLDB4MjMsMHgzMSwweEMyLDB4MjgsMHg3RCww
eDdGLDB4NUIsMHhFQiwKKyAgICAweEUyLDB4MzAsMHhBMiwweDI4LDB4MkYsMHhGRiwweEQ3LDB4
RUEsMHhFMywweDMwLDB4QTIsMHgyOCwweEFFLDB4QUYsMHhBRCwweEFBLAorICAgIDB4RTMsMHgz
MCwweEEyLDB4MjgsMHhBRSwweDk3LDB4RjcsMHhFQSwweDAzLDB4MzEsMHhDMiwweDI4LDB4RkIs
MHhBRiwweDg5LDB4QUYsCisgICAgMHgwMywweDMxLDB4QzIsMHgzMCwweERGLDB4RUEsMHhDOCww
eEEyLDB4MDMsMHgzMSwweEMyLDB4MjgsMHhFMywweEVGLDB4QkYsMHhCRiwKKyAgICAweDI0LDB4
MzksMHhDMiwweDMwLDB4QjcsMHgwRCwweEJFLDB4QkYsMHg0NCwweDQxLDB4RTMsMHgzMCwweEJE
LDB4MjcsMHhBRiwweEFCLAorICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHg1RSwweDdBLDB4Njgs
MHhGQywweDAzLDB4MzksMHhBMSwweDI4LDB4RkQsMHhGRiwweEFELDB4MEYsCisgICAgMHgwMyww
eDM5LDB4QzIsMHgzMCwweEZCLDB4QkIsMHhFRiwweEVFLDB4MDMsMHgzOSwweEMyLDB4MzAsMHhG
RiwweDdBLDB4N0EsMHhCQiwKKyAgICAweEUzLDB4MzAsMHhDMiwweDMwLDB4RkIsMHhBQiwweDJG
LDB4RTcsMHhFMywweDM4LDB4MDMsMHgzMSwweEMyLDB4OEEsMHhFMiwweEVBLAorICAgIDB4MDMs
MHgzOSwweEMzLDB4MzAsMHhBQSwweDdCLDB4MjgsMHgyQSwweDIzLDB4MzksMHhFMiwweDM4LDB4
NTUsMHg1RCwweDdGLDB4N0MsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEZGLDB4RkIsMHg5
NSwweEFCLDB4NDQsMHg0OSwweEUzLDB4MzgsMHhCRCwweEJGLDB4QkIsMHgyQiwKKyAgICAweDI2
LDB4NjIsMHg0NCwweDQ5LDB4RkQsMHhCRCwweEJELDB4MjksMHhFQywweDlCLDB4QzQsMHg1OSww
eDJELDB4MkQsMHgyRiwweDJGLAorICAgIDB4MzEsMHhDNSwweDhFLDB4QjQsMHgyQiwweDBCLDB4
OEQsMHgwNSwweDMxLDB4Q0QsMHgxMCwweEM1LDB4QUEsMHhCRiwweEZDLDB4QzMsCisgICAgMHgz
MSwweENELDB4MTAsMHhDNSwweDQwLDB4QTksMHg4MiwweDJCLDB4MzEsMHhDRCwweDEwLDB4QzUs
MHhERSwweDZBLDB4RjAsMHg2MCwKKyAgICAweDMwLDB4QzUsMHhBRiwweEI0LDB4NUUsMHhGQSww
eEFBLDB4ODgsMHhFRiwweEM0LDB4NkUsMHhBQywweDVELDB4N0EsMHhFOCwweDAwLAorICAgIDB4
RUYsMHhCQywweDRELDB4QUMsMHg3RiwweDVGLDB4N0YsMHhFOCwweDhGLDB4QjQsMHg0RCwweEFD
LDB4QkYsMHhBRCwweDU1LDB4NTUsCisgICAgMHg4RiwweEI0LDB4MkQsMHhBQywweEZGLDB4Nzgs
MHhGRiwweERGLDB4OEYsMHhCNCwweDRFLDB4QUMsMHg1NSwweEY5LDB4QkEsMHhCOCwKKyAgICAw
eDhGLDB4QjQsMHhFQywweDlCLDB4N0UsMHg3MiwweDY4LDB4RkEsMHgwRCwweDlDLDB4MEEsMHg4
MywweDc4LDB4RTAsMHhFOCwweEEwLAorICAgIDB4NkIsMHg4QiwweEE5LDB4NzIsMHg3RiwweDdB
LDB4RUEsMHhBMCwweEU5LDB4N0EsMHg2NywweDZBLDB4NzcsMHhEQSwweEE4LDB4RTgsCisgICAg
MHhDOSwweDcyLDB4NjYsMHg2QSwweEJELDB4QUYsMHhBQSwweDIyLDB4RTksMHg3MiwweEE4LDB4
NzIsMHhCRCwweEFCLDB4MEYsMHgzNSwKKyAgICAweDBBLDB4N0IsMHhDOCwweDcyLDB4MkQsMHhC
RiwweDJELDB4QUYsMHg0QiwweDgzLDB4RTksMHg3QSwweDNELDB4QkYsMHhBQiwweEFGLAorICAg
IDB4NEIsMHg4MywweEU5LDB4N0EsMHg1RSwweDdFLDB4REUsMHhGQywweDJBLDB4ODMsMHg4OSww
eDZBLDB4NUEsMHhGQSwweEE4LDB4QTAsCisgICAgMHhFQSwweDdBLDB4ODgsMHg2QSwweDU1LDB4
NzYsMHhCQywweEI4LDB4QTksMHg2QSwweDA2LDB4NUEsMHg1RSwweEYyLDB4QTgsMHg4OCwKKyAg
ICAweDQ3LDB4NjIsMHhBNSwweDQ5LDB4NUUsMHhFRiwweEVBLDB4RTAsMHhFNiwweDUxLDB4MjQs
MHgzOSwweEZGLDB4NkUsMHhFQSwweDYwLAorICAgIDB4MjMsMHg0OSwweEMyLDB4MzgsMHhBQSww
eDIwLDB4QUIsMHhBRCwweDIzLDB4NDksMHhFMiwweDQwLDB4OEUsMHhBRSwweDk2LDB4NTcsCisg
ICAgMHgyMywweDQ5LDB4QzEsMHgzOCwweDY4LDB4NzIsMHhEQSwweEZFLDB4NDQsMHg0OSwweEUy
LDB4NDAsMHg1NSwweDc1LDB4RkYsMHgzNywKKyAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4MkYs
MHhFMSwweEUyLDB4RjgsMHgyMywweDQ5LDB4RTIsMHg0MCwweERFLDB4NTUsMHg1NSwweDFELAor
ICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHgyMywweDBCLDB4MkIsMHhBRCwweDIzLDB4NDksMHhF
MiwweDQwLDB4Q0EsMHg5QSwweEZCLDB4RkIsCisgICAgMHg0MywweDQ5LDB4MDIsMHg0MSwweDJC
LDB4RTUsMHhENSwweDdFLDB4MjIsMHg0MSwweEMyLDB4MzgsMHhBMCwweDI4LDB4QTgsMHg3RSwK
KyAgICAweDIzLDB4NDksMHhDMiwweDM4LDB4REYsMHhENiwweERDLDB4QUYsMHgwMiwweDQxLDB4
RTIsMHgzOCwweEFELDB4MDIsMHgwMiwweDAyLAorICAgIDB4MDMsMHg0MSwweEUyLDB4NDAsMHg0
MywweDc2LDB4RDcsMHhFOSwweDAzLDB4NDEsMHhDMSwweDM4LDB4RkIsMHhFRCwweENGLDB4ODAs
CisgICAgMHgwMiwweDQ5LDB4RTIsMHgzOCwweDJBLDB4QUIsMHhCRCwweDc1LDB4MDIsMHg0MSww
eEUxLDB4NDAsMHg3MywweDBBLDB4ODAsMHhDMCwKKyAgICAweDAyLDB4NDEsMHhDMSwweDM4LDB4
Q0EsMHgyNiwweDJGLDB4OEIsMHgyMiwweDQxLDB4RTIsMHgzOCwweEZCLDB4RUIsMHhCNywweDk1
LAorICAgIDB4MDIsMHg0MSwweEMyLDB4MzgsMHhFMCwweDAwLDB4QUUsMHg1RSwweDAyLDB4NDEs
MHhDMiwweDM4LDB4RUIsMHhFOCwweEQ4LDB4RkEsCisgICAgMHgwMywweDQ5LDB4RTIsMHg0MCww
eDdGLDB4NTUsMHg5NSwweDk3LDB4MDMsMHg0OSwweEMyLDB4NDAsMHgwQSwweEU3LDB4QTgsMHhG
RSwKKyAgICAweEU1LDB4NjEsMHgwMywweDQ5LDB4QTUsMHgzNSwweEI1LDB4QjUsMHgyNiwweDZB
LDB4QzUsMHg1OSwweDBCLDB4MjksMHg4MiwweDgwLAorICAgIDB4MjYsMHg2QSwweEM1LDB4NTks
MHhFOCwweEZBLDB4N0UsMHhGRiwweEU1LDB4NjEsMHhBNCwweDU5LDB4RUUsMHg4QywweEMwLDB4
MDIsCisgICAgMHhFNSwweDYxLDB4QTQsMHg1MSwweDJCLDB4QkYsMHhEQSwweDYwLDB4RTUsMHg1
OSwweDQzLDB4NDksMHhGQSwweEU4LDB4NkEsMHhFQSwKKyAgICAweDY0LDB4NDksMHgyMywweDQx
LDB4NzgsMHhFRSwweEY4LDB4Q0EsMHg0NCwweDQ5LDB4RTIsMHgzOCwweDJBLDB4MjYsMHhBQSww
eEFBLAorICAgIDB4NjQsMHg0OSwweDAyLDB4MzksMHhBOCwweEFBLDB4RkUsMHhENywweDY1LDB4
NDksMHgyNCwweDQxLDB4QjUsMHhCNSwweEU1LDB4RjcsCisgICAgMHg2NCwweDQ5LDB4MDMsMHgz
OSwweDI4LDB4QkIsMHhERiwweERFLDB4NjQsMHg0OSwweDAzLDB4NDEsMHg3QSwweDdDLDB4RDIs
MHhFMiwKKyAgICAweEE1LDB4NTksMHgwMywweDQxLDB4MkQsMHg5NSwweDk1LDB4NTUsMHgwNiww
eDZBLDB4ODQsMHg1MSwweDJBLDB4NjIsMHhFRiwweEZELAorICAgIDB4QzUsMHg1OSwweEUyLDB4
NDAsMHhGOCwweDdFLDB4NUEsMHhBQSwweDY0LDB4NDksMHg0MSwweDI4LDB4N0YsMHg1RiwweDdG
LDB4QTgsCisgICAgMHhFMywweDM4LDB4NDEsMHgyOCwweERELDB4N0QsMHhGQiwweEM4LDB4QTIs
MHgzMCwweDQxLDB4MjAsMHgyQiwweEE5LDB4MEEsMHgyMiwKKyAgICAweDAzLDB4MzksMHhBMSww
eDI4LDB4MkQsMHgyOSwweEZELDB4REQsMHgyMiwweDM5LDB4QzIsMHgzMCwweDU3LDB4RjYsMHhE
RiwweEY1LAorICAgIDB4NDMsMHg0MSwweEUyLDB4MzAsMHhBRiwweEE5LDB4OEIsMHhGRiwweDAz
LDB4MzksMHhBMiwweDI4LDB4ODgsMHhFRSwweEJFLDB4RjUsCisgICAgMHhFMywweDMwLDB4QTIs
MHgyOCwweDNBLDB4QjYsMHhENywweEQ1LDB4RTMsMHgzMCwweDYxLDB4MjAsMHg4MCwweEE4LDB4
NkEsMHg1QSwKKyAgICAweEEyLDB4MjgsMHg2MSwweDIwLDB4QkUsMHhGRSwweERGLDB4NTcsMHhB
MiwweDI4LDB4NjEsMHgyMCwweEEzLDB4QUIsMHhCRiwweEU5LAorICAgIDB4QTIsMHgyOCwweDgy
LDB4MjAsMHhBNCwweDM1LDB4RUIsMHgwOSwweEMyLDB4MjgsMHg4MiwweDIwLDB4MDIsMHgwMiww
eDBCLDB4MEYsCisgICAgMHhFMiwweDI4LDB4QTIsMHgyOCwweEY4LDB4NkEsMHg3QSwweDdGLDB4
QzIsMHgyOCwweDgyLDB4MjgsMHgyRiwweEFGLDB4RUEsMHgyMiwKKyAgICAweDAzLDB4MzksMHhB
MiwweDI4LDB4QUQsMHgyNywweDJGLDB4M0YsMHg0NCwweDQxLDB4MDMsMHgzOSwweDI1LDB4QUQs
MHhGMywweENCLAorICAgIDB4NDQsMHg0MSwweEEyLDB4MjgsMHhFMCwweEZFLDB4N0UsMHg3Riww
eEMyLDB4MzAsMHg2MSwweDIwLDB4ODAsMHhGRSwweDVBLDB4NUYsCisgICAgMHhDMiwweDMwLDB4
NjEsMHgyMCwweEEyLDB4QkUsMHhGRiwweEY1LDB4RTIsMHgzOCwweDgxLDB4MjgsMHhBMywweDNC
LDB4QkQsMHhGRiwKKyAgICAweEUyLDB4MzgsMHg4MSwweDI4LDB4MkEsMHhBQSwweEVGLDB4NzUs
MHhFMywweDM4LDB4ODEsMHgyOCwweDA4LDB4QUEsMHhCRSwweEQ3LAorICAgIDB4MjMsMHg0MSww
eEEyLDB4MzAsMHgyMiwweEJCLDB4QUQsMHhBRCwweDIzLDB4NDEsMHhFMywweDM4LDB4RjgsMHhB
QSwweDlCLDB4NUYsCisgICAgMHgyMywweDQxLDB4QzMsMHgzOCwweDdGLDB4RkEsMHgzRSwweEJG
LDB4MjMsMHg0MSwweEUzLDB4MzgsMHgwRCwweEVELDB4OUUsMHhERiwKKyAgICAweDIzLDB4NDEs
MHhFMiwweDM4LDB4RkEsMHg2QiwweEVBLDB4RUEsMHgyNCwweDQxLDB4RTIsMHgzOCwweEVELDB4
MkYsMHhCRCwweDdELAorICAgIDB4MjMsMHg0MSwweEMyLDB4MzAsMHhGQSwweEVBLDB4RjgsMHhG
QiwweEUyLDB4MzgsMHhBMiwweDI4LDB4RkUsMHg3QSwweEY4LDB4RkUsCisgICAgMHhDMiwweDMw
LDB4QTIsMHgyOCwweEZELDB4RkQsMHhCQSwweDIwLDB4QzMsMHgzOCwweDYxLDB4MjAsMHg1RSww
eEZFLDB4RkUsMHhGOCwKKyAgICAweEEyLDB4MjgsMHg2MSwweDIwLDB4RkEsMHhFRSwweEJFLDB4
MjAsMHhDMiwweDI4LDB4ODEsMHgyOCwweEI1LDB4QTUsMHhFOSwweDdDLAorICAgIDB4QzMsMHgy
OCwweDgyLDB4MjgsMHgwQiwweEFGLDB4RDUsMHg3NSwweEUzLDB4MzAsMHg4MSwweDI4LDB4MEEs
MHgyQiwweEFGLDB4NzUsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDAyLDB4MDAsMHhBRiww
eDc1LDB4RTMsMHgzMCwweEEyLDB4MjgsMHhBOCwweDJBLDB4MkUsMHgzRiwKKyAgICAweDAzLDB4
MzEsMHhDMiwweDMwLDB4N0EsMHg3QSwweEZFLDB4MDAsMHgwMywweDM5LDB4QTIsMHgyOCwweDdF
LDB4RUEsMHhGQSwweEU4LAorICAgIDB4QzIsMHgzMCwweDgyLDB4MjgsMHg1NiwweEJBLDB4OEEs
MHgwMCwweEMxLDB4MjgsMHg4MiwweDI4LDB4QkIsMHhGRSwweEZBLDB4M0UsCisgICAgMHhFMyww
eDMwLDB4QTIsMHgyOCwweEJGLDB4RDcsMHg3QiwweEJGLDB4RTMsMHgzMCwweEEyLDB4MjgsMHhG
QSwweDBBLDB4M0EsMHhBQSwKKyAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4OEEsMHg4MiwweEJC
LDB4MTcsMHgwMywweDMxLDB4QzIsMHgyOCwweEEyLDB4RjAsMHhGRSwweEQ2LAorICAgIDB4RTIs
MHgzMCwweEMyLDB4MjgsMHhFOCwweDhBLDB4MkEsMHgyMCwweDAzLDB4MzEsMHhFMiwweDMwLDB4
N0MsMHg0MCwweDBBLDB4MEIsCisgICAgMHgwMywweDMxLDB4QzIsMHgzMCwweEY3LDB4QTcsMHhC
RiwweDBFLDB4RTIsMHgzMCwweEMyLDB4MjgsMHgzRiwweDNGLDB4QjUsMHg5NSwKKyAgICAweDAz
LDB4MzEsMHhDMiwweDI4LDB4M0EsMHhEQSwweERDLDB4QUUsMHgwMywweDMxLDB4QzIsMHgyOCww
eERBLDB4RDcsMHhFRSwweEVCLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHgwQSwweDNFLDB4
OUQsMHhGNSwweDI0LDB4MzksMHhFMywweDMwLDB4ODMsMHhBQSwweEZBLDB4NTksCisgICAgMHgw
MywweDM5LDB4QzIsMHgzMCwweEE4LDB4ODAsMHg2QywweDdFLDB4MjMsMHgzOSwweEEyLDB4Mjgs
MHhCNywweEE3LDB4OEEsMHgyQSwKKyAgICAweDQ0LDB4NDEsMHhDMiwweDMwLDB4NzcsMHhGRiww
eEZBLDB4RjMsMHgyMywweDM5LDB4RTIsMHgzMCwweEI1LDB4NUQsMHg2RiwweEFCLAorICAgIDB4
MjMsMHgzOSwweEMyLDB4MzAsMHhFRiwweDdFLDB4N0EsMHhBMCwweDAzLDB4MzksMHhDMywweDMw
LDB4OEEsMHhGRiwweEZGLDB4M0UsCisgICAgMHgyMywweDQxLDB4QzIsMHgzMCwweDhCLDB4QTEs
MHhCQiwweEQ3LDB4RTIsMHg0MCwweDAzLDB4MzksMHhCNywweEQ3LDB4NUYsMHhERSwKKyAgICAw
eDQzLDB4NDEsMHhFMywweDM4LDB4RkQsMHgzRiwweEVELDB4RjcsMHg4NSwweDQ5LDB4MDMsMHgz
OSwweEJGLDB4QkYsMHgzRCwweDBGLAorICAgIDB4NDcsMHg2QSwweDY1LDB4NDksMHgyRCwweEFE
LDB4MkYsMHgyRiwweDJELDB4QTQsMHg2NywweDZBLDB4MkQsMHgyRCwweDJGLDB4MEIsCisgICAg
MHgxMCwweEM1LDB4OEUsMHhCNCwweDBELDB4OEIsMHg4OSwweEFELDB4MzEsMHhDNSwweEYwLDB4
QzQsMHg4MywweEVELDB4RjUsMHhGRiwKKyAgICAweDEwLDB4QzUsMHhDRiwweEJDLDB4MDAsMHgw
OCwweDBGLDB4OTcsMHgzMSwweEM1LDB4Q0YsMHhCQywweDBBLDB4QkIsMHhGRSwweEI2LAorICAg
IDB4MzAsMHhDNSwweEYwLDB4QkMsMHhFRSwweDVBLDB4NUYsMHg3RiwweDMwLDB4QzUsMHhGMCww
eEJDLDB4QkYsMHg3OSwweEYyLDB4RUUsCisgICAgMHgxMCwweEM1LDB4QUYsMHhCNCwweDYwLDB4
ODAsMHg4MiwweDg4LDB4MTAsMHhDNSwweDRELDB4QUMsMHg3RiwweEZBLDB4QTgsMHgyMiwKKyAg
ICAweEYwLDB4QzQsMHgyRCwweEE0LDB4RDcsMHhENywweEVBLDB4RTAsMHhBRiwweEJDLDB4NEUs
MHhBQywweEFFLDB4RkQsMHhERCwweDlDLAorICAgIDB4OEYsMHhCNCwweDRFLDB4QUMsMHg1RSww
eEJFLDB4ODMsMHhCNywweDZGLDB4QUMsMHhDRCwweDlCLDB4NUEsMHg3OCwweEVBLDB4RTgsCisg
ICAgMHhDQywweDlCLDB4NkIsMHg4QiwweDVFLDB4NUEsMHhGQSwweEUwLDB4QUIsMHg5MywweEM5
LDB4NzIsMHg1NywweDdFLDB4RUEsMHg4MCwKKyAgICAweDRBLDB4ODMsMHhBOCwweDcyLDB4NzUs
MHhENSwweEQ2LDB4RjgsMHhFOSwweDdBLDB4ODgsMHg2QSwweDM2LDB4MkQsMHgzMiwweDIyLAor
ICAgIDB4MkEsMHg4MywweEM5LDB4NzIsMHg3RSwweEVFLDB4M0IsMHhGRiwweDRBLDB4ODMsMHhF
OCwweDdBLDB4QkQsMHgyRiwweDJGLDB4MTcsCisgICAgMHg2QiwweDgzLDB4MEEsMHg4MywweEVF
LDB4RUUsMHgyRiwweEI2LDB4NEIsMHg4MywweEU5LDB4N0EsMHhCRCwweEZBLDB4QjgsMHgwOCwK
KyAgICAweDRCLDB4ODMsMHhDOSwweDcyLDB4NUYsMHg2QiwweEVBLDB4MjAsMHgyQiwweDgzLDB4
ODgsMHg2QSwweDU3LDB4N0YsMHg3RiwweEY4LAorICAgIDB4QzksMHg3MiwweDI3LDB4NUEsMHg1
QSwweDVFLDB4QUEsMHhFOCwweDI3LDB4NUEsMHg0NCwweDQxLDB4NzgsMHhFMCwweEEwLDB4ODAs
CisgICAgMHgyMywweDQ5LDB4RTIsMHgzOCwweEI3LDB4RjcsMHhBOSwweEMxLDB4MDMsMHg0OSww
eEUyLDB4MzgsMHhCNCwweDI3LDB4MkQsMHgzRiwKKyAgICAweDAyLDB4NDksMHhFMiwweDQwLDB4
NUEsMHhDOCwweDZDLDB4RkIsMHgyMywweDQ5LDB4RTIsMHg0MCwweDJCLDB4MzIsMHg3NywweEJG
LAorICAgIDB4MDIsMHg0OSwweEUyLDB4NDAsMHg4RiwweEFDLDB4QUQsMHgwQSwweDIzLDB4NDks
MHhFMiwweDQwLDB4QUQsMHhGQiwweEU4LDB4NUEsCisgICAgMHgyMywweDQ5LDB4RTIsMHg0MCww
eEJCLDB4QUEsMHgzOCwweDc3LDB4NDMsMHg0OSwweDAzLDB4NDEsMHg1NywweDdFLDB4N0QsMHhE
NSwKKyAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4REEsMHg3RiwweEFGLDB4MEIsMHgwMiwweDQx
LDB4QzEsMHgzOCwweEZBLDB4OEIsMHhBQiwweEVBLAorICAgIDB4MjMsMHg0MSwweEMyLDB4Mzgs
MHhCMCwweEVFLDB4QUIsMHhBOSwweDQ0LDB4NDEsMHhFMiwweDQwLDB4RjcsMHhCRiwweEZELDB4
RjUsCisgICAgMHgyMywweDQxLDB4QzIsMHg0MCwweEFGLDB4QkEsMHhGQywweDdFLDB4MjMsMHg0
OSwweEUyLDB4MzgsMHhFQSwweEVBLDB4RUUsMHhFRCwKKyAgICAweDAzLDB4NDEsMHhFMiwweDM4
LDB4OTksMHgwQiwweDAxLDB4MDEsMHgyMywweDQxLDB4RTIsMHg0MCwweERCLDB4NTcsMHhENyww
eDk3LAorICAgIDB4MjMsMHg0MSwweEMyLDB4MzgsMHhERiwweDlFLDB4QkEsMHgyQSwweDIzLDB4
NDEsMHhFMiwweDQwLDB4RDUsMHhGRiwweDJGLDB4QUIsCisgICAgMHgwMywweDQxLDB4QzIsMHgz
OCwweEZGLDB4QjgsMHgyMCwweEEwLDB4MjMsMHg0OSwweEUyLDB4NDAsMHhERiwweEZCLDB4RkEs
MHhBOSwKKyAgICAweDAzLDB4NDksMHhFMiwweDM4LDB4QTgsMHgyMiwweDhBLDB4QTIsMHgwMyww
eDQ5LDB4RTIsMHg0MCwweDdGLDB4RTgsMHhGOCwweDVBLAorICAgIDB4QTQsMHg1OSwweEUyLDB4
NDAsMHgzRCwweEJELDB4QTUsMHgzNSwweDQ2LDB4NkEsMHhFNSwweDYxLDB4QkUsMHhGQiwweEEx
LDB4MDksCisgICAgMHg0NiwweDZBLDB4QzUsMHg1OSwweDdGLDB4NkUsMHhGRiwweEEwLDB4MDYs
MHg2MiwweEM1LDB4NTksMHhERiwweEY1LDB4M0YsMHgyNSwKKyAgICAweDA1LDB4NjIsMHg4Myww
eDUxLDB4RTIsMHhGQSwweDY4LDB4RTgsMHhBNSwweDUxLDB4NDMsMHg0OSwweDcwLDB4N0UsMHhE
RSwweEQ3LAorICAgIDB4NDMsMHg0OSwweDAzLDB4NDEsMHhFMiwweEVBLDB4QzgsMHg5QywweDY0
LDB4NDksMHgwMywweDM5LDB4MkIsMHhBQSwweEU5LDB4RjksCisgICAgMHg2NCwweDQ5LDB4MDMs
MHgzOSwweDdDLDB4QjcsMHhCRiwweEZGLDB4NDQsMHg0MSwweDIzLDB4NDEsMHhBRiwweEE3LDB4
MjksMHgyMCwKKyAgICAweDQ0LDB4NDksMHgyMywweDM5LDB4REYsMHhCNywweEI2LDB4MDksMHg0
NCwweDQxLDB4MDMsMHg0MSwweDdBLDB4NTgsMHhGQywweDlDLAorICAgIDB4NDQsMHg0MSwweEUy
LDB4MzgsMHg3NywweEY2LDB4RTMsMHhFQiwweDg0LDB4NTEsMHhFMiwweDM4LDB4MDIsMHgzOSww
eDk3LDB4NTUsCisgICAgMHhFNSwweDU5LDB4NDMsMHg0OSwweDBFLDB4MEEsMHgyMywweEQ1LDB4
RTUsMHg1OSwweDQzLDB4NDEsMHg3OCwweEMwLDB4ODAsMHhFMiwKKyAgICAweDIzLDB4NDEsMHhB
MiwweDMwLDB4NkMsMHhGOCwweEZDLDB4NTgsMHhFMywweDM4LDB4ODEsMHgyOCwweDVGLDB4N0Us
MHhGOCwweDdCLAorICAgIDB4QzEsMHgzMCwweDgxLDB4MjAsMHg2QiwweDlGLDB4REUsMHgzQSww
eEMyLDB4MzAsMHhBMSwweDI4LDB4OUIsMHgyQSwweDJBLDB4RkMsCisgICAgMHgwMywweDMxLDB4
QTIsMHgyOCwweDg4LDB4RkIsMHhCRiwweDVGLDB4QzIsMHgyOCwweDgyLDB4MjAsMHgyNiwweEFF
LDB4RTgsMHhDQSwKKyAgICAweEMyLDB4MjgsMHg2MSwweDIwLDB4MEEsMHg4QSwweDdGLDB4NTcs
MHg4MSwweDIwLDB4NDEsMHgxOCwweEUwLDB4RTgsMHhGRiwweEZGLAorICAgIDB4ODIsMHgyMCww
eDYxLDB4MjAsMHhERCwweERGLDB4QUYsMHgwOCwweEMyLDB4MjgsMHg4MSwweDIwLDB4RjUsMHhC
RCwweEI1LDB4OTUsCisgICAgMHhDMiwweDI4LDB4ODEsMHgyMCwweDJGLDB4MkYsMHgwQiwweDJG
LDB4QzIsMHgyOCwweEEyLDB4MjgsMHgwRiwweDJBLDB4M0IsMHgyOCwKKyAgICAweEUzLDB4Mjgs
MHhBMSwweDIwLDB4RUUsMHgyQiwweEVGLDB4NkYsMHhFMywweDMwLDB4QTIsMHgyOCwweEZBLDB4
ODMsMHhGNSwweDk1LAorICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHgzNSwweDk1LDB4RkYsMHg1
QSwweDQ0LDB4NDEsMHhDMiwweDMwLDB4OEEsMHhFRiwweEZGLDB4REQsCisgICAgMHgwMywweDM5
LDB4QTIsMHgyOCwweEZDLDB4RkEsMHg3QSwweDdGLDB4QzIsMHgyOCwweDYxLDB4MjgsMHg3RSww
eEU4LDB4MjgsMHg4MiwKKyAgICAweEMyLDB4MzAsMHg2MSwweDIwLDB4RjUsMHhFRiwweDMyLDB4
QjIsMHhDMiwweDI4LDB4ODEsMHgyOCwweDdGLDB4RkEsMHhDQSwweDgwLAorICAgIDB4QTEsMHgy
OCwweDYxLDB4MjAsMHhGQiwweDdDLDB4N0EsMHg3QywweEEyLDB4MjgsMHg2MSwweDI4LDB4QkYs
MHg1NywweEVBLDB4Q0EsCisgICAgMHhFMywweDM4LDB4NjEsMHgyMCwweDBCLDB4MEIsMHg4Riww
eEVELDB4RTIsMHgzOCwweEMyLDB4MzAsMHg4MCwweDAwLDB4MDcsMHg4NSwKKyAgICAweDI0LDB4
NDEsMHhFMiwweDM4LDB4RDUsMHg5NSwweDhELDB4QkYsMHgyMywweDQxLDB4RTMsMHgzOCwweEJG
LDB4RjYsMHhCRiwweDk3LAorICAgIDB4MjMsMHg0MSwweEUzLDB4MzgsMHhGQSwweEE2LDB4MkUs
MHgyOCwweDIzLDB4NDEsMHhDMiwweDM4LDB4QkUsMHhGNiwweDNBLDB4MjAsCisgICAgMHgwMyww
eDM5LDB4QzIsMHgzOCwweDYwLDB4NjgsMHhGOCwweEMyLDB4QzIsMHgzMCwweEEyLDB4MzAsMHgw
MiwweDAwLDB4QjgsMHhGRSwKKyAgICAweEUzLDB4MzgsMHhBMiwweDMwLDB4REUsMHg1QSwweDdC
LDB4NkQsMHhDMiwweDMwLDB4ODEsMHgyOCwweEE4LDB4QUYsMHhCNCwweEFFLAorICAgIDB4RTMs
MHgzMCwweEEyLDB4MjgsMHhEMywweEI4LDB4QUIsMHgzNSwweEUzLDB4MzAsMHg2MSwweDIwLDB4
NzgsMHg3QSwweEU4LDB4QTAsCisgICAgMHhBMiwweDI4LDB4NjEsMHgyMCwweEJCLDB4RkYsMHhG
QiwweEEwLDB4QTIsMHgyOCwweDgxLDB4MjAsMHhCRCwweEZGLDB4NUUsMHhGRiwKKyAgICAweEEy
LDB4MjgsMHg2MSwweDIwLDB4MDIsMHgwQSwweDJGLDB4QTcsMHhDMiwweDI4LDB4ODEsMHgyOCww
eDBCLDB4QTIsMHhGQSwweEZBLAorICAgIDB4MDMsMHgzOSwweDgxLDB4MjgsMHgwMiwweEJGLDB4
QUQsMHhGRCwweDA0LDB4MzksMHhBMiwweDI4LDB4RTAsMHhGOCwweEZCLDB4RkUsCisgICAgMHhD
MiwweDI4LDB4ODIsMHgyOCwweEE4LDB4QUEsMHhGOCwweERBLDB4QzIsMHgyOCwweDgxLDB4MjAs
MHhBQSwweDhCLDB4RUIsMHg3RiwKKyAgICAweEMyLDB4MjgsMHg4MiwweDI4LDB4MEUsMHgyOCww
eEY4LDB4NjUsMHhFMywweDMwLDB4ODEsMHgyOCwweDhBLDB4MkYsMHhCNywweEVELAorICAgIDB4
RTMsMHgzMCwweEEyLDB4MjgsMHgzQywweDdFLDB4N0YsMHg3RCwweEUzLDB4MzAsMHhBMiwweDI4
LDB4M0UsMHgzNSwweDJELDB4RjUsCisgICAgMHgwMywweDMxLDB4QTIsMHgyOCwweDJBLDB4QUIs
MHgzRiwweEI1LDB4MjQsMHgzOSwweEUyLDB4MzAsMHg3RiwweEZGLDB4REYsMHhFQiwKKyAgICAw
eDAzLDB4MzEsMHhDMiwweDMwLDB4QUEsMHhCOCwweDc2LDB4RDcsMHhFMiwweDMwLDB4QzIsMHgy
OCwweDc4LDB4RTIsMHhDQiwweDg4LAorICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHgyRCwweEVG
LDB4Q0YsMHhFRiwweDAzLDB4MzEsMHhBMiwweDI4LDB4QzIsMHhBQSwweEZGLDB4NUUsCisgICAg
MHhFMiwweDMwLDB4QTIsMHgyOCwweDJBLDB4QUEsMHhBQSwweEE5LDB4MDMsMHgzOSwweEMyLDB4
MzAsMHg1MiwweDVGLDB4QjYsMHhCNSwKKyAgICAweDA0LDB4MzksMHhDMywweDMwLDB4RUYsMHgy
RCwweEFCLDB4QkUsMHgyMywweDM5LDB4QzIsMHgzMCwweEI3LDB4RkEsMHhGQSwweDgyLAorICAg
IDB4MjMsMHgzOSwweEMyLDB4MzAsMHhBMCwweDgyLDB4MDIsMHg2MiwweDIzLDB4NDEsMHhDMiww
eDMwLDB4MUUsMHhCQywweEEwLDB4MjAsCisgICAgMHgyMywweDQxLDB4MDMsMHgzOSwweDJCLDB4
MTksMHg4NSwweDI5LDB4NDQsMHg0OSwweEMyLDB4MzgsMHhGRSwweERGLDB4RkYsMHgwMiwKKyAg
ICAweDIzLDB4NDEsMHhDMiwweDM4LDB4RDYsMHhCRSwweEEyLDB4MkEsMHg2NCwweDQ5LDB4RTMs
MHgzOCwweEQ3LDB4RkYsMHhBQiwweEFCLAorICAgIDB4ODUsMHg1MSwweDAzLDB4MzksMHg3NSww
eEZGLDB4QUIsMHgwQSwweEM2LDB4NTksMHgyNCwweDQ5LDB4QkQsMHgzQiwweDJCLDB4MkIsCisg
ICAgMHg4OSwweDcyLDB4RTYsMHg1OSwweDM1LDB4MjUsMHhCRCwweEJGLDB4MkUsMHhBQywweEM5
LDB4N0EsMHgwOSwweDJELDB4QkQsMHhGNSwKKyAgICAweDEwLDB4QzUsMHhDQywweDlCLDB4MEEs
MHgwQSwweEFELDB4RjUsMHgxMCwweEM1LDB4OEYsMHhCNCwweDIyLDB4MjIsMHgwQSwweEZELAor
ICAgIDB4RjAsMHhDNCwweENGLDB4QkMsMHgzNywweDU3LDB4N0EsMHg4QiwweDEwLDB4QzUsMHhD
RiwweEJDLDB4QkYsMHhGOSwweEUzLDB4QUEsCisgICAgMHgxMCwweEM1LDB4Q0YsMHhCQywweEFB
LDB4RUYsMHhGRSwweDlBLDB4MTAsMHhDNSwweEYwLDB4QkMsMHhBMiwweDkwLDB4MzQsMHgzMiwK
KyAgICAweDMxLDB4QzUsMHhGMCwweEJDLDB4RkUsMHg3QiwweEVCLDB4RkUsMHgxMCwweEM1LDB4
RDAsMHhCQywweEIxLDB4MkEsMHgyOCwweEFCLAorICAgIDB4RjAsMHhCQywweEFGLDB4QkMsMHhF
OCwweDg4LDB4RUEsMHg4MiwweEYwLDB4QzQsMHg2RSwweEI0LDB4NUYsMHhFQSwweEEwLDB4MDAs
CisgICAgMHgxMCwweEM1LDB4NEUsMHhBQywweDU3LDB4RkYsMHhFQSwweDg4LDB4OEYsMHhCNCww
eDJELDB4QTQsMHg1RiwweEY4LDB4RjgsMHhGMCwKKyAgICAweDJELDB4QTQsMHhBQywweDkzLDB4
RkIsMHhGQSwweEE4LDB4ODIsMHgwRCwweDlDLDB4OEIsMHg5MywweDU3LDB4NzcsMHhGQSwweEE4
LAorICAgIDB4RUQsMHg5QiwweDA5LDB4N0IsMHg3RiwweEEyLDB4MDAsMHgwMCwweEVELDB4OUIs
MHhDOCwweDcyLDB4RDUsMHg1RiwweEU4LDB4QTAsCisgICAgMHg4QiwweDhCLDB4QzksMHg3QSww
eEZGLDB4RkYsMHhCRiwweDg4LDB4NEEsMHg4MywweEU5LDB4N0EsMHg5NywweEJCLDB4RkYsMHhF
OCwKKyAgICAweDZCLDB4OEIsMHgwQSwweDdCLDB4REYsMHhCRiwweEFGLDB4MkIsMHg2QiwweDhC
LDB4MkEsMHg4MywweEI2LDB4RUEsMHhEMywweERFLAorICAgIDB4NkIsMHg4QiwweDJBLDB4ODMs
MHg5RSwweEZFLDB4REIsMHhGQSwweDZDLDB4OEIsMHhDOSwweDcyLDB4NUUsMHg3QSwweEUwLDB4
QUEsCisgICAgMHgwQSwweDdCLDB4QTksMHg2QSwweDZELDB4N0IsMHhCQywweEIwLDB4RTksMHg3
MiwweDI2LDB4NUEsMHg1NywweDVBLDB4N0EsMHg3OCwKKyAgICAweDIzLDB4NDEsMHhFMiwweDQw
LDB4NkIsMHhFRCwweEY0LDB4QUUsMHgyMywweDQ5LDB4RTIsMHg0MCwweDk2LDB4MkEsMHhBRSww
eENCLAorICAgIDB4NDQsMHg0OSwweEUyLDB4NDAsMHhGOSwweEVDLDB4RjIsMHhGRiwweDIzLDB4
NDksMHgwMiwweDQxLDB4N0QsMHhERCwweDc3LDB4QUUsCisgICAgMHgyMywweDQ5LDB4RTIsMHg0
MCwweEI4LDB4MjUsMHhCRCwweEI4LDB4MjMsMHg0OSwweEUyLDB4NDAsMHhGMiwweEQ4LDB4RDgs
MHhGOCwKKyAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4QUIsMHgwRiwweEJBLDB4QTksMHg0Myww
eDQ5LDB4RTIsMHg0MCwweEI3LDB4QUYsMHg4MiwweEZFLAorICAgIDB4MDMsMHg0MSwweEMyLDB4
MzgsMHgwMCwweDgwLDB4RDAsMHhEQSwweDAzLDB4NDEsMHhDMiwweDM4LDB4NjIsMHhCRiwweEI3
LDB4QkYsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDhCLDB4RDgsMHg5MiwweEFDLDB4MDMs
MHg0MSwweEUyLDB4NDAsMHhCMywweEMyLDB4OEEsMHhERCwKKyAgICAweDAyLDB4NDEsMHhDMiww
eDM4LDB4N0UsMHhCQiwweEIyLDB4QTIsMHgwMywweDQxLDB4RTIsMHgzOCwweDBBLDB4RTUsMHg3
RCwweEVELAorICAgIDB4MDMsMHg0MSwweEUyLDB4NDAsMHhCQSwweDAwLDB4MDksMHhERiwweDIz
LDB4NDEsMHhFMiwweDQwLDB4M0YsMHhBRSwweEQ2LDB4NzUsCisgICAgMHgwMywweDQxLDB4QTIs
MHgzOCwweDA4LDB4QTgsMHhBOCwweEI3LDB4MDMsMHg0MSwweEMxLDB4MzgsMHg4MiwweEJFLDB4
RTIsMHg3OCwKKyAgICAweDAyLDB4NDEsMHhFMiwweDQwLDB4NTEsMHhDMywweDhELDB4RDUsMHgy
MywweDQxLDB4RTIsMHg0MCwweEJELDB4QUQsMHhCRCwweDczLAorICAgIDB4MDIsMHg0MSwweEUx
LDB4NDAsMHhDMCwweEMwLDB4RUEsMHhFMiwweDIyLDB4NDEsMHhDMSwweDQwLDB4RkQsMHg5Riww
eEQ3LDB4REYsCisgICAgMHhDNSwweDU5LDB4RTIsMHg0MCwweDM3LDB4M0QsMHhCNSwweEI1LDB4
NDcsMHg2QSwweEU1LDB4NjEsMHhBRiwweEMyLDB4QzksMHg4OSwKKyAgICAweDQ3LDB4NkEsMHhF
NSwweDYxLDB4NjMsMHg3QiwweDdCLDB4NkUsMHgwNSwweDYyLDB4QTQsMHg1OSwweEFGLDB4RkEs
MHhFMiwweDgyLAorICAgIDB4MDYsMHg2MiwweDY0LDB4NTEsMHhFQywweEZDLDB4RkEsMHg3QSww
eDQzLDB4NDksMHgwMywweDQxLDB4NzgsMHg3OCwweEY4LDB4NUMsCisgICAgMHgyMywweDQxLDB4
RTIsMHgzOCwweEJFLDB4QjUsMHhFNSwweEFBLDB4MjMsMHg0MSwweEMyLDB4MzAsMHhBMiwweEZC
LDB4N0EsMHhGQSwKKyAgICAweDQ0LDB4NDEsMHhFMiwweDMwLDB4QkYsMHhBQiwweEFGLDB4QTks
MHg0NCwweDQxLDB4MjQsMHgzOSwweDAyLDB4OEEsMHgwMiwweEMyLAorICAgIDB4NDQsMHg0MSww
eDAzLDB4MzksMHgwMiwweENCLDB4ODMsMHg4MiwweDQ0LDB4NDEsMHgwMywweDQxLDB4REMsMHhG
RSwweEVCLDB4QUEsCisgICAgMHg0MywweDQxLDB4RTMsMHgzOCwweDZCLDB4RjIsMHhGQSwweEJB
LDB4RTIsMHgzOCwweEExLDB4MzAsMHg4RSwweEJBLDB4NEEsMHg2OCwKKyAgICAweDQ0LDB4NDks
MHhDMiwweDMwLDB4QUYsMHhBRCwweEJELDB4QkQsMHg4NCwweDQ5LDB4RTMsMHgzOCwweDgyLDB4
QjksMHhFRiwweDVELAorICAgIDB4MjMsMHg0MSwweEEyLDB4MjgsMHg1OCwweEY4LDB4N0UsMHhG
RiwweEMyLDB4MjgsMHg4MSwweDI4LDB4QUEsMHhFRiwweEY3LDB4RUEsCisgICAgMHhFMiwweDI4
LDB4ODEsMHgyMCwweDNFLDB4M0YsMHhGRiwweEVELDB4RTIsMHgzMCwweEEyLDB4MjgsMHg3RSww
eEY4LDB4RkUsMHhGRiwKKyAgICAweEMyLDB4MjgsMHhBMiwweDI4LDB4REYsMHhGRiwweEZGLDB4
MjIsMHhBMiwweDI4LDB4NjEsMHgyMCwweDgwLDB4RjAsMHg3MCwweDc4LAorICAgIDB4ODEsMHgy
MCwweDQxLDB4MTgsMHg3OCwweEZFLDB4RkUsMHhGQiwweDgxLDB4MjAsMHg0MSwweDE4LDB4RkIs
MHhBQSwweDhBLDB4MEEsCisgICAgMHhBMiwweDI4LDB4NjEsMHgyMCwweEVGLDB4NkYsMHhBQSww
eDJCLDB4QzIsMHgyOCwweDYxLDB4MjAsMHhBRCwweEFCLDB4MzcsMHhBRSwKKyAgICAweEMyLDB4
MjgsMHg4MSwweDIwLDB4MjksMHg4NSwweEFBLDB4QkEsMHhFMywweDMwLDB4QTIsMHgyOCwweEZG
LDB4Q0EsMHhDRSwweEFBLAorICAgIDB4MDMsMHgyOSwweEEyLDB4MjgsMHhGNywweDVGLDB4RkQs
MHhGRSwweEUyLDB4MzAsMHhBMiwweDI4LDB4QjcsMHhCNSwweERELDB4NUEsCisgICAgMHhFMyww
eDMwLDB4QTIsMHgyOCwweDZBLDB4NjIsMHg3MiwweEZGLDB4QzIsMHgzMCwweEEyLDB4MjgsMHhF
MywweDY2LDB4NzUsMHg2NSwKKyAgICAweEEyLDB4MjgsMHg4MSwweDIwLDB4MDIsMHhCOCwweDU2
LDB4N0MsMHhDMiwweDI4LDB4ODEsMHgyMCwweEEyLDB4QjMsMHhGNSwweEZELAorICAgIDB4QzIs
MHgyOCwweEEyLDB4MjgsMHgzMywweDAxLDB4MjgsMHgyMywweEUzLDB4MzAsMHg4MSwweDIwLDB4
Q0EsMHhFQSwweEZGLDB4N0UsCisgICAgMHhBMiwweDI4LDB4ODEsMHgyMCwweDU3LDB4NjksMHg3
RCwweEJGLDB4QTIsMHgyOCwweDYxLDB4MjAsMHhGQiwweEZBLDB4QUEsMHg4MCwKKyAgICAweEEx
LDB4MjgsMHg2MSwweDIwLDB4MDksMHgzRiwweDhCLDB4MEUsMHhFMiwweDMwLDB4ODEsMHgyOCww
eDBGLDB4OUYsMHhBRiwweEJCLAorICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHgyMCwweDBBLDB4
QkYsMHhGRCwweDAzLDB4MzksMHhDMiwweDMwLDB4MEMsMHgwMiwweDBCLDB4QkYsCisgICAgMHg0
NCwweDQxLDB4MDMsMHgzOSwweEZBLDB4RkUsMHg2QiwweEZELDB4NDQsMHg0MSwweDAzLDB4Mzks
MHg1RSwweDc3LDB4REQsMHgzQiwKKyAgICAweDQ0LDB4NDEsMHhFMiwweDM4LDB4NkYsMHg3Qiww
eDZCLDB4NjMsMHhFMywweDM4LDB4QTIsMHgzMCwweERGLDB4NUYsMHg3QiwweDc4LAorICAgIDB4
QTIsMHgyOCwweDYxLDB4MjgsMHgwMCwweDAwLDB4MkEsMHgzRSwweEUzLDB4MzAsMHhBMiwweDMw
LDB4REQsMHg1RiwweEZFLDB4MkQsCisgICAgMHhFMiwweDMwLDB4ODEsMHgyOCwweDI3LDB4QUYs
MHhCRiwweEVFLDB4MDMsMHgzMSwweEMyLDB4MjgsMHhFMiwweEVELDB4REQsMHg3RCwKKyAgICAw
eEUzLDB4MzAsMHhBMiwweDI4LDB4NTQsMHhBRiwweDBGLDB4OEYsMHhDMywweDI4LDB4ODEsMHgy
OCwweEY3LDB4RkUsMHhGQywweEYwLAorICAgIDB4QTIsMHgzMCwweDYxLDB4MjAsMHhGNywweEZC
LDB4QkUsMHgyQSwweDgxLDB4MzAsMHhBMiwweDI4LDB4RDcsMHg1QywweDU2LDB4NUYsCisgICAg
MHhFMywweDMwLDB4QTIsMHgzMCwweEJELDB4MkYsMHgwQiwweDJCLDB4RTMsMHgzMCwweEMyLDB4
MjgsMHg3QywweEYwLDB4RkEsMHhCQSwKKyAgICAweEUzLDB4MzAsMHg4MSwweDIwLDB4RkYsMHhG
NiwweERDLDB4N0UsMHhBMiwweDI4LDB4ODEsMHgyMCwweDc4LDB4NUMsMHhBMCwweDIzLAorICAg
IDB4QzIsMHgyOCwweDYxLDB4MjAsMHhGRiwweEZELDB4QUEsMHgyQSwweEMyLDB4MzAsMHg4Miww
eDI4LDB4MEQsMHgwRCwweDBGLDB4MDAsCisgICAgMHhDMiwweDMwLDB4ODIsMHgyOCwweEUwLDB4
RTgsMHhGQywweEY4LDB4RTMsMHgzMCwweEEyLDB4MjgsMHhENSwweEI1LDB4M0QsMHhFRiwKKyAg
ICAweEUzLDB4MzAsMHhBMiwweDI4LDB4QkYsMHg5RiwweDJGLDB4QkYsMHgwMywweDMxLDB4QzMs
MHgzMCwweEFBLDB4RUEsMHhCQiwweEFGLAorICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHg5Riww
eEY1LDB4MzcsMHhCNywweDAzLDB4MzEsMHhBMiwweDI4LDB4MjIsMHhGMiwweDdGLDB4NTUsCisg
ICAgMHgwMywweDMxLDB4QTIsMHgyOCwweDhCLDB4QTIsMHhCQiwweDlELDB4RTIsMHgzMCwweEEy
LDB4MjgsMHg1RSwweEUwLDB4RTAsMHhBQSwKKyAgICAweEUzLDB4MzgsMHhDMiwweDI4LDB4NTcs
MHg3RCwweERELDB4N0QsMHgwMywweDMxLDB4QTIsMHgyOCwweEE3LDB4REQsMHg1RiwweDJCLAor
ICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHgzNSwweEFGLDB4QkYsMHgzRiwweDQ0LDB4NDEsMHhF
MiwweDMwLDB4QUIsMHhBMiwweDlBLDB4RjcsCisgICAgMHgyMywweDM5LDB4RTIsMHgzMCwweEUw
LDB4RTIsMHhFMCwweDYyLDB4NDQsMHg0MSwweEMxLDB4MzAsMHhBQSwweEFGLDB4MkIsMHg4OSwK
KyAgICAweDI0LDB4NDEsMHhFMiwweDM4LDB4MzYsMHgyNiwweEJCLDB4N0EsMHg2NCwweDQ5LDB4
RTMsMHgzOCwweEFCLDB4QkYsMHhFRCwweEZGLAorICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHg5
NSwweDM3LDB4MkQsMHgzRCwweDQ0LDB4NDksMHgwMywweDQxLDB4MDgsMHgzOCwweDI3LDB4MkEs
CisgICAgMHhDNiwweDU5LDB4MjQsMHg0MSwweEFELDB4RUQsMHhFQiwweDJCLDB4MDcsMHg2Miww
eDY0LDB4NDksMHhCNywweDNELDB4RkYsMHgwQiwKKyAgICAweENBLDB4N0EsMHgyNywweDZBLDB4
QTUsMHgyRiwweDhELDB4MEIsMHgyQiwweDhCLDB4Q0EsMHg3QSwweDNELDB4MjUsMHhGRCwweEVG
LAorICAgIDB4QUMsMHg5QiwweDBBLDB4ODMsMHgyQSwweEJELDB4RDUsMHg1NSwweDhGLDB4QjQs
MHgyQSwweDhCLDB4MEEsMHhCRiwweEZGLDB4NTUsCisgICAgMHhGMCwweEJDLDB4OEIsMHg5Myww
eDAyLDB4MkEsMHhCRCwweDU1LDB4RjAsMHhDNCwweDBELDB4QUMsMHgwMCwweDAwLDB4MEIsMHhC
RCwKKyAgICAweDEwLDB4QzUsMHhBRiwweEJDLDB4QUEsMHgyOCwweDJBLDB4MkQsMHgxMCwweEM1
LDB4RjAsMHhCQywweEQ2LDB4MkEsMHg4NiwweEFGLAorICAgIDB4MTAsMHhDNSwweENGLDB4QkMs
MHg5QSwweDYyLDB4RjgsMHhGRSwweDEwLDB4QzUsMHhBRiwweEI0LDB4QUEsMHg4RSwweDdFLDB4
RkIsCisgICAgMHhGMCwweEJDLDB4QUYsMHhCNCwweDJBLDB4QjIsMHhCMywweEFGLDB4RjAsMHhC
QywweEQwLDB4QkMsMHgwNSwweDJBLDB4MkUsMHhCQSwKKyAgICAweDExLDB4QzUsMHhBRiwweEI0
LDB4QUUsMHhBNiwweEFBLDB4RUIsMHhGMCwweEJDLDB4NEQsMHhBNCwweDU4LDB4NzgsMHg0OCww
eEUwLAorICAgIDB4NkQsMHhBQywweDBELDB4QTQsMHhERiwweDdGLDB4N0EsMHhGOCwweDJELDB4
QTQsMHhDQywweDlCLDB4N0MsMHhBQSwweEFBLDB4MEEsCisgICAgMHgyRCwweEE0LDB4RUMsMHg5
QiwweEY1LDB4QkQsMHg5NywweDJFLDB4MkQsMHhBNCwweDBELDB4OUMsMHhDRiwweDdGLDB4RkUs
MHhCMywKKyAgICAweDRFLDB4QTQsMHhDQywweDkzLDB4NjcsMHhBQSwweEEyLDB4MjgsMHgwRCww
eDlDLDB4MkEsMHg4MywweDdGLDB4RTgsMHgwMCwweDAwLAorICAgIDB4MEQsMHg5QywweDJBLDB4
ODMsMHg3NSwweEZGLDB4RUEsMHg4MCwweENDLDB4OTMsMHgyQSwweDgzLDB4NUYsMHhGRiwweEZB
LDB4MDAsCisgICAgMHgwRCwweDlDLDB4MkEsMHg4MywweDc3LDB4REYsMHhFRiwweDJBLDB4RUMs
MHg5QiwweDJBLDB4ODMsMHg1RCwweDdGLDB4RkUsMHgyMCwKKyAgICAweDhBLDB4OEIsMHhFOSww
eDdBLDB4NUYsMHhFQiwweDU4LDB4QTAsMHg0QSwweDgzLDB4NjgsMHg2QSwweDVGLDB4NUIsMHhF
QSwweEE4LAorICAgIDB4MjMsMHg0OSwweEMyLDB4MzgsMHhBQiwweEE2LDB4QTQsMHgyQSwweDQ0
LDB4NDksMHhFMiwweDM4LDB4QUQsMHhCNywweEVBLDB4QUEsCisgICAgMHgyMywweDQ5LDB4RTMs
MHg0MCwweDM4LDB4QUUsMHhFRSwweENFLDB4MjMsMHg0OSwweDAzLDB4NDEsMHg2MCwweENFLDB4
MkMsMHg1QSwKKyAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4QUEsMHgwQSwweEUwLDB4RkEsMHgy
MywweDUxLDB4MDMsMHg0MSwweEZBLDB4N0YsMHhERCwweDU1LAorICAgIDB4NDMsMHg0OSwweDAy
LDB4NDEsMHhGQiwweDNCLDB4QTMsMHhCQiwweDIzLDB4NDksMHhDMiwweDM4LDB4RUEsMHhCQSww
eDU4LDB4RTgsCisgICAgMHgyMywweDQxLDB4QTEsMHgzOCwweEVBLDB4QUEsMHhGQSwweDY4LDB4
MDMsMHg0MSwweEEyLDB4MzgsMHhGRiwweEJFLDB4QUIsMHg4OSwKKyAgICAweDAzLDB4NDEsMHhD
MiwweDM4LDB4QkMsMHhCNywweEQ0LDB4MkEsMHgyMywweDQxLDB4RTIsMHg0MCwweEQ3LDB4NUUs
MHhEQywweEU3LAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHg3QSwweEZGLDB4QjcsMHgyRiww
eDAzLDB4NDEsMHhFMiwweDQwLDB4MDUsMHgxNSwweEE5LDB4NUMsCisgICAgMHgwMywweDQxLDB4
RTIsMHgzOCwweDAzLDB4Q0EsMHhENSwweDVELDB4MDMsMHg0MSwweEMyLDB4MzgsMHhGRSwweEE2
LDB4RDYsMHhENiwKKyAgICAweDAyLDB4NDEsMHhDMiwweDM4LDB4M0QsMHgzQiwweEFGLDB4QkYs
MHgwMywweDQxLDB4RTIsMHgzOCwweDcwLDB4NzAsMHg1QywweDVELAorICAgIDB4RTIsMHg0MCww
eDAyLDB4MzksMHhFMCwweDM4LDB4QUEsMHhCMiwweDAyLDB4NDEsMHhFMiwweDM4LDB4RjgsMHhB
QiwweEJELDB4REQsCisgICAgMHgwMiwweDQxLDB4QzIsMHg0MCwweEEyLDB4MjIsMHgwMCwweEFD
LDB4MDMsMHg0MSwweEMyLDB4NDAsMHgyQiwweDA3LDB4MEUsMHhBOCwKKyAgICAweDg0LDB4NTEs
MHhFMiwweDQwLDB4MzUsMHgzRiwweDlELDB4RjUsMHg2NywweDcyLDB4QTQsMHg1OSwweDJCLDB4
MEIsMHgwOSwweDgxLAorICAgIDB4NjcsMHg3MiwweDA1LDB4NjIsMHg1QiwweDcxLDB4RTgsMHg2
QSwweDA1LDB4NjIsMHhDNSwweDU5LDB4MkIsMHgwOCwweDgwLDB4RTgsCisgICAgMHgwNSwweDYy
LDB4NjMsMHg0OSwweDYwLDB4N0EsMHhGQSwweDZBLDB4NjQsMHg0OSwweEUyLDB4MzgsMHhGMCww
eEY4LDB4RjgsMHg1QSwKKyAgICAweDQ0LDB4NDEsMHhFMiwweDM4LDB4RkUsMHhERiwweEQ3LDB4
M0QsMHg0NCwweDQxLDB4MDMsMHgzOSwweDc1LDB4Q0UsMHhBMiwweDk4LAorICAgIDB4MjMsMHgz
OSwweEUyLDB4MzgsMHg4QiwweEEyLDB4MDMsMHgyMCwweDIzLDB4MzksMHhDMywweDMwLDB4MkEs
MHg2RSwweEZFLDB4RjIsCisgICAgMHg0NCwweDQxLDB4RTMsMHgzMCwweDBBLDB4MkIsMHhCRCww
eEU3LDB4NDQsMHg0MSwweEUyLDB4MzgsMHhBQSwweDIwLDB4OEYsMHhBRCwKKyAgICAweDQ0LDB4
NDEsMHgyMywweDM5LDB4NTcsMHgxOCwweEQ4LDB4NzEsMHgyMywweDM5LDB4QzIsMHgzMCwweDVF
LDB4RkMsMHhGOCwweEE4LAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhFOSwweDdBLDB4QkEs
MHhBMiwweDAzLDB4MzksMHhBMSwweDI4LDB4RTIsMHhFQSwweEYzLDB4N0IsCisgICAgMHhDMiww
eDMwLDB4QTEsMHgyOCwweEEwLDB4RTgsMHhCQywweEE1LDB4RTIsMHgyOCwweDgxLDB4MjgsMHhF
QSwweEEyLDB4QTgsMHg2QSwKKyAgICAweEUyLDB4MzAsMHhBMiwweDIwLDB4RUQsMHhFRiwweEJF
LDB4N0IsMHhFMywweDI4LDB4ODEsMHgyMCwweDhBLDB4QTIsMHhFQSwweERGLAorICAgIDB4RTMs
MHgyOCwweDgyLDB4MjAsMHhFMiwweDdBLDB4NzcsMHhGRiwweEMyLDB4MjAsMHg2MSwweDIwLDB4
NUUsMHg1NywweDdGLDB4RkYsCisgICAgMHhBMiwweDI4LDB4NjEsMHgyMCwweDdELDB4RjMsMHg4
QiwweDAzLDB4RTMsMHgzMCwweDgxLDB4MjAsMHhENSwweEZELDB4QTksMHgwQSwKKyAgICAweEMz
LDB4MjgsMHg4MSwweDIwLDB4RkQsMHhGRSwweEZDLDB4QTgsMHgwMiwweDI5LDB4QTIsMHgyOCww
eDc1LDB4N0QsMHhGRiwweERFLAorICAgIDB4QzIsMHgyOCwweEEyLDB4MjgsMHhDQSwweDgwLDB4
OEUsMHhCQSwweDAzLDB4MzEsMHhDMiwweDI4LDB4RkQsMHhFRCwweEQ1LDB4OTUsCisgICAgMHgw
MywweDMxLDB4QzIsMHgyOCwweEY3LDB4N0YsMHg3QiwweEVBLDB4MDMsMHgyOSwweEEyLDB4Mjgs
MHhERiwweDVGLDB4RkUsMHhGRiwKKyAgICAweDAzLDB4MzEsMHhBMiwweDI4LDB4REQsMHg1RCww
eDVCLDB4RkIsMHhFMiwweDI4LDB4QTIsMHgyOCwweEVELDB4N0YsMHhCRSwweEVBLAorICAgIDB4
QzIsMHgyOCwweDgxLDB4MjAsMHg5NywweEZDLDB4ODIsMHhFMCwweDgxLDB4MjgsMHhDMiwweDIw
LDB4QTcsMHhCRiwweEJBLDB4RUEsCisgICAgMHhFMywweDMwLDB4ODEsMHgyMCwweEJGLDB4MkYs
MHhGRCwweEI3LDB4QzIsMHgyOCwweDgxLDB4MjAsMHg1NCwweDVFLDB4NTgsMHhGRSwKKyAgICAw
eEMyLDB4MjgsMHg4MSwweDIwLDB4RkYsMHg1RiwweEZFLDB4MzgsMHhDMiwweDI4LDB4ODEsMHgy
MCwweEVCLDB4NzIsMHg3QSwweEY4LAorICAgIDB4QzIsMHgyOCwweDgxLDB4MjAsMHhERiwweEFC
LDB4ODMsMHhFQiwweEUyLDB4MzAsMHhBMiwweDI4LDB4NTIsMHg2QiwweDdCLDB4NzUsCisgICAg
MHhDMiwweDMwLDB4ODEsMHgyMCwweEFBLDB4RkUsMHg3NSwweDU3LDB4QzIsMHgzMCwweDgxLDB4
MjAsMHgwOCwweDJGLDB4QUQsMHhFRCwKKyAgICAweDAzLDB4MzksMHg4MSwweDI4LDB4MDAsMHhB
QSwweEFGLDB4RjUsMHgyMywweDQxLDB4QzIsMHgzMCwweDIwLDB4MDgsMHgyRCwweDlGLAorICAg
IDB4NjUsMHg0OSwweDI0LDB4NDEsMHg0MSwweEEyLDB4QkIsMHhFQiwweDQ0LDB4NDEsMHhBMiww
eDI4LDB4N0EsMHhGOCwweENBLDB4NzgsCisgICAgMHhDMiwweDMwLDB4NjEsMHgyMCwweEQ2LDB4
RkUsMHhCOCwweEFBLDB4QTIsMHgzMCwweDgyLDB4MjAsMHgwOCwweEEwLDB4MjAsMHhBMCwKKyAg
ICAweEMzLDB4MzAsMHg4MiwweDI4LDB4RUEsMHhFQiwweEVCLDB4RkQsMHhDMiwweDMwLDB4ODEs
MHgyOCwweEIyLDB4OUYsMHg3RiwweEFGLAorICAgIDB4QzIsMHgzMCwweDgyLDB4MjgsMHg4QSww
eEFFLDB4QkQsMHhGQSwweDAzLDB4MzksMHhBMiwweDI4LDB4RDksMHhBRiwweEFGLDB4QkQsCisg
ICAgMHgwMywweDM5LDB4QTIsMHgyOCwweEQ1LDB4QkYsMHgyRSwweDBBLDB4MjQsMHgzOSwweEEy
LDB4MzAsMHhENSwweEZCLDB4QUEsMHhBQSwKKyAgICAweDAzLDB4MzksMHhBMiwweDMwLDB4Rjcs
MHhGRiwweEZFLDB4MjIsMHhFMiwweDMwLDB4QTIsMHgyOCwweEZGLDB4REYsMHg1MywweEMwLAor
ICAgIDB4QzIsMHgzMCwweDgyLDB4MjgsMHhCQywweDdFLDB4QkUsMHhBMiwweEUzLDB4MjgsMHg4
MSwweDI4LDB4QkQsMHhGNywweDU3LDB4RkYsCisgICAgMHgwMywweDMxLDB4ODIsMHgyOCwweDNG
LDB4QUYsMHhCRCwweEJELDB4MDMsMHgzOSwweEMyLDB4MjgsMHg2OCwweEUwLDB4QzIsMHg4MywK
KyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4NTgsMHhFQSwweEMwLDB4QjAsMHhFMiwweDMwLDB4
QTIsMHgyOCwweDI3LDB4RjcsMHhERiwweDdGLAorICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHg4
MCwweEJBLDB4NTksMHhBMywweEUzLDB4MzAsMHg4MSwweDI4LDB4MEEsMHhDQSwweERBLDB4REYs
CisgICAgMHhDMiwweDI4LDB4ODEsMHgyOCwweDg4LDB4MkEsMHgwQSwweEFELDB4QzIsMHgyOCww
eEEyLDB4MjgsMHg3NywweEI5LDB4RTIsMHgyMiwKKyAgICAweEMyLDB4MjgsMHg4MSwweDIwLDB4
M0UsMHhFQSwweEZFLDB4RjIsMHhDMywweDMwLDB4ODEsMHgyMCwweDAyLDB4QUIsMHhFRSwweDZG
LAorICAgIDB4RTMsMHgzMCwweDgxLDB4MjAsMHhBMiwweEJCLDB4QkQsMHhBNSwweEUzLDB4MzAs
MHhDMiwweDI4LDB4QTcsMHhGNywweDY1LDB4NzUsCisgICAgMHgwMywweDM5LDB4QzIsMHgyOCww
eDNCLDB4M0QsMHg3NSwweEFELDB4MDIsMHgzOSwweEEyLDB4MjgsMHgyOCwweEZGLDB4QkYsMHhG
RiwKKyAgICAweDAzLDB4MzksMHhBMSwweDI4LDB4QTAsMHg4QiwweEE5LDB4QUEsMHg0NCwweDQx
LDB4QzEsMHgzMCwweDI5LDB4RkIsMHg3RCwweEY1LAorICAgIDB4NDQsMHg0MSwweEUyLDB4Mzgs
MHhEQSwweDVCLDB4RDcsMHgzRCwweDg0LDB4NDksMHgwMywweDM5LDB4NUQsMHhGRiwweEMxLDB4
Q0EsCisgICAgMHg0NCwweDQ5LDB4MDMsMHg0MSwweEFELDB4QTUsMHgyNSwweEZGLDB4ODUsMHg1
MSwweDIzLDB4NDEsMHhGRCwweEJGLDB4MkYsMHgwQiwKKyAgICAweEM2LDB4NTksMHg2NCwweDQ5
LDB4QTUsMHhCNSwweDNGLDB4MEYsMHgyNywweDZBLDB4QzUsMHg1OSwweEFELDB4MzUsMHhGNSww
eDJCLAorICAgIDB4RUEsMHg4MiwweDQ4LDB4NkEsMHgyRCwweDJELDB4MkQsMHgwOSwweDJBLDB4
ODMsMHhFQSwweDdBLDB4RTksMHg3RiwweDc2LDB4NkEsCisgICAgMHgyQiwweDgzLDB4QzksMHg3
QSwweEFFLDB4QUYsMHhCNSwweEJGLDB4MkEsMHg4QiwweEM5LDB4N0EsMHgyRiwweEU2LDB4QTYs
MHhBRSwKKyAgICAweDhDLDB4OUIsMHhFOSwweDdBLDB4MkIsMHhCRiwweEQ3LDB4RkYsMHhFRCww
eEEzLDB4MkEsMHg4MywweDBCLDB4QjcsMHhGRCwweDU1LAorICAgIDB4QUYsMHhCQywweDJCLDB4
ODMsMHgwMiwweEFGLDB4RkQsMHhENSwweEYwLDB4QkMsMHhBQywweDlCLDB4MDAsMHgwMiwweEFE
LDB4NTUsCisgICAgMHhGMCwweEJDLDB4NEQsMHhBQywweDAwLDB4MDAsMHgwQSwweEU1LDB4RjAs
MHhCQywweEFGLDB4QjQsMHg3MiwweEEyLDB4MEEsMHgyRiwKKyAgICAweDExLDB4QzUsMHhEMCww
eEJDLDB4RkQsMHg3QiwweENBLDB4RUYsMHgxMCwweEM1LDB4RDAsMHhCQywweDdFLDB4N0YsMHg2
QiwweEVBLAorICAgIDB4MTAsMHhDNSwweEQwLDB4QkMsMHhFNSwweEZGLDB4QUYsMHg2QiwweEYw
LDB4QkMsMHg2RSwweEFDLDB4RTgsMHhBOCwweEUwLDB4NjAsCisgICAgMHg4RiwweEFDLDB4MEQs
MHhBNCwweDc0LDB4REMsMHhEQSwweEZBLDB4NEUsMHhBQywweDJELDB4QTQsMHg1RSwweDVFLDB4
NjcsMHgyNCwKKyAgICAweDJELDB4QTQsMHhFQywweDlCLDB4MTgsMHgyRSwweDAwLDB4MDAsMHgy
RCwweEE0LDB4MEQsMHhBNCwweDUwLDB4MDgsMHg5RCwweDBBLAorICAgIDB4NEUsMHhBQywweDBE
LDB4OUMsMHhGRCwweDk2LDB4QUUsMHhEQSwweDRFLDB4QTQsMHgwRCwweEE0LDB4RUEsMHhBQiww
eEE3LDB4OUYsCisgICAgMHg2RSwweEE0LDB4MkQsMHhBNCwweDdELDB4RTksMHg3RCwweEI1LDB4
NEUsMHhBNCwweEVDLDB4OUIsMHg5RSwweDIyLDB4ODAsMHgwQSwKKyAgICAweDZFLDB4QUMsMHgw
RCwweDlDLDB4RDcsMHhCOCwweDJBLDB4MDIsMHg2RiwweEFDLDB4MEQsMHg5QywweDdGLDB4Q0Ys
MHhBQSwweEVFLAorICAgIDB4NEUsMHhBNCwweEFCLDB4OEIsMHg1NywweEE4LDB4QzAsMHgwMiww
eDRFLDB4QTQsMHgyQSwweDgzLDB4NTcsMHhGRSwweEFBLDB4QTAsCisgICAgMHg0NCwweDQ5LDB4
RTIsMHg0MCwweEE1LDB4NkYsMHg1QSwweEZDLDB4MjMsMHg0OSwweEMyLDB4MzgsMHg4OCwweEVB
LDB4RUEsMHg3QSwKKyAgICAweDIzLDB4NDksMHhDMiwweDM4LDB4RTIsMHhGQSwweEZBLDB4QUQs
MHgyMywweDQ5LDB4RTMsMHg0MCwweDhBLDB4RUEsMHhGQSwweEJGLAorICAgIDB4MjMsMHg0OSww
eEUzLDB4NDAsMHg5QSwweEJCLDB4RTksMHhGMCwweDIzLDB4NDksMHhFMywweDQwLDB4OTYsMHgy
NSwweEJGLDB4OUIsCisgICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweDgyLDB4QTAsMHgyRSwweDdB
LDB4MjMsMHg0MSwweEUyLDB4NDAsMHhBQSwweDM2LDB4RDcsMHhGNSwKKyAgICAweDAzLDB4NDEs
MHhDMSwweDM4LDB4RjgsMHhFOCwweEE4LDB4M0UsMHgwMiwweDQxLDB4QTEsMHgzOCwweERBLDB4
RjgsMHhCQSwweEVFLAorICAgIDB4MDMsMHg0MSwweEEyLDB4MzgsMHgwMywweEFCLDB4RUYsMHhG
QSwweDAzLDB4NDEsMHhDMiwweDM4LDB4ODgsMHg5RSwweDU3LDB4NUYsCisgICAgMHgwMywweDQx
LDB4QzIsMHgzOCwweDJGLDB4RkEsMHhCOSwweEY5LDB4MDIsMHg0MSwweEMyLDB4MzgsMHhFQSww
eEVCLDB4NkEsMHhFRiwKKyAgICAweDIzLDB4NDksMHhDMiwweDM4LDB4REEsMHhGRSwweERDLDB4
N0EsMHhFMiwweDQwLDB4QzIsMHgzOCwweDk4LDB4NzgsMHg2OCwweEE4LAorICAgIDB4MDIsMHg0
MSwweEMyLDB4MzgsMHhGRiwweEZFLDB4QjMsMHgwMywweDAyLDB4NDEsMHhDMiwweDM4LDB4RkUs
MHhCNywweEJBLDB4QjgsCisgICAgMHgwMywweDQxLDB4RTIsMHg0MCwweDk1LDB4RjUsMHhDRCww
eDA2LDB4MDMsMHg0MSwweEUyLDB4NDAsMHhGRiwweEY4LDB4NzAsMHg1QywKKyAgICAweDAyLDB4
NDEsMHhDMiwweDM4LDB4OTcsMHhGRSwweEFFLDB4QUEsMHgwMywweDQxLDB4QTEsMHgzOCwweDE4
LDB4M0EsMHgwQSwweDgyLAorICAgIDB4MjMsMHg0OSwweEEwLDB4MzgsMHgyRSwweEE4LDB4MkUs
MHgyRCwweDY2LDB4NzIsMHg4NCwweDUxLDB4MEIsMHgwQiwweDA5LDB4QTksCisgICAgMHg0Niww
eDZBLDB4RTUsMHg2MSwweEFBLDB4OUMsMHg4MCwweDhBLDB4MjcsMHg2QSwweEM1LDB4NTksMHg2
RiwweEI3LDB4QUYsMHhBQywKKyAgICAweDA2LDB4NjIsMHg2MywweDQ5LDB4RkUsMHg1OCwweDc4
LDB4NzgsMHg0NCwweDQ5LDB4RTIsMHgzOCwweDdFLDB4NUUsMHg1RSwweDdDLAorICAgIDB4NDQs
MHg0MSwweEUyLDB4MzgsMHhCRCwweEQ1LDB4QjUsMHhDRCwweDQzLDB4NDEsMHgwMywweDM5LDB4
NzQsMHg1RiwweDVGLDB4NUYsCisgICAgMHgyMywweDM5LDB4RTMsMHgzOCwweDJBLDB4NTcsMHg1
QSwweEFCLDB4MjQsMHgzOSwweDAzLDB4MzksMHg4MSwweEQzLDB4N0YsMHhENywKKyAgICAweDI0
LDB4NDEsMHhFMywweDMwLDB4QkEsMHhBQSwweEVELDB4NkUsMHgwMywweDM5LDB4RTMsMHgzMCww
eDJELDB4RUYsMHg3RSwweEEyLAorICAgIDB4MjMsMHgzOSwweEUzLDB4MzgsMHgwMCwweDJBLDB4
QkQsMHg5RiwweDQzLDB4NDEsMHgwMywweDM5LDB4NEEsMHg2OSwweEZGLDB4N0YsCisgICAgMHg0
NCwweDQxLDB4RTIsMHgzMCwweEZCLDB4N0EsMHhFRiwweEUzLDB4MjMsMHgzOSwweEMxLDB4MzAs
MHg3RiwweEZELDB4RkIsMHgyOCwKKyAgICAweDAzLDB4MzksMHhBMSwweDI4LDB4NUYsMHg1Niww
eERFLDB4QTgsMHhDMiwweDI4LDB4ODEsMHgyMCwweDdBLDB4QkEsMHhBMywweDAyLAorICAgIDB4
RTMsMHgzMCwweDgxLDB4MjAsMHg2RCwweEJGLDB4RkMsMHhFQSwweEUzLDB4MzAsMHg4MSwweDIw
LDB4NUYsMHhGRiwweDhBLDB4MkEsCisgICAgMHgwMywweDMxLDB4QTIsMHgyOCwweEQ1LDB4Rjcs
MHhCRSwweEE4LDB4RTIsMHgzMCwweDgyLDB4MjAsMHg1RiwweEFFLDB4MkUsMHgyMiwKKyAgICAw
eEUzLDB4MzAsMHhBMiwweDI4LDB4RTUsMHhGRiwweDJGLDB4MjgsMHhFMywweDMwLDB4QzIsMHgy
OCwweDZCLDB4NjksMHg2RiwweDU1LAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhFQiwweEE5
LDB4RUIsMHhGQSwweEUzLDB4MzAsMHhBMiwweDI4LDB4QUEsMHhBOSwweEFCLDB4QjgsCisgICAg
MHgwMywweDMxLDB4QzIsMHgyOCwweEY3LDB4RjcsMHhGNSwweEI1LDB4RTMsMHgzMCwweEEyLDB4
MjgsMHhGMiwweEJBLDB4RkUsMHhBOCwKKyAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4RUEsMHg2
QiwweDdGLDB4RkIsMHhFMywweDMwLDB4QzIsMHgyOCwweDlBLDB4MjcsMHgyMywweDhCLAorICAg
IDB4MDMsMHgzMSwweEEyLDB4MjgsMHhBQSwweEZBLDB4RjgsMHhERSwweEUzLDB4MjgsMHhBMiww
eDI4LDB4QkEsMHhCQiwweEFFLDB4QUUsCisgICAgMHhFMiwweDI4LDB4QTIsMHgyOCwweDVFLDB4
RkEsMHhBQSwweDBFLDB4RTMsMHgyOCwweEEyLDB4MjgsMHhENSwweERFLDB4RDYsMHhFRSwKKyAg
ICAweEEyLDB4MjgsMHg2MSwweDIwLDB4OEEsMHhFOCwweEQ4LDB4OTgsMHhDMiwweDI4LDB4ODEs
MHgyMCwweDJCLDB4QjksMHhFRCwweDVELAorICAgIDB4RTIsMHgyOCwweEEyLDB4MjAsMHhERSww
eEYyLDB4NUQsMHg1NSwweEMyLDB4MjgsMHg4MiwweDIwLDB4QzIsMHg2MiwweEZBLDB4NjgsCisg
ICAgMHhBMiwweDIwLDB4NjEsMHgyMCwweDAwLDB4ODIsMHhCOCwweDNBLDB4QzIsMHgyOCwweDgx
LDB4MjAsMHhFQSwweEZGLDB4RDcsMHg1NywKKyAgICAweEEyLDB4MjgsMHg2MSwweDIwLDB4RkEs
MHhGQSwweDdBLDB4RjIsMHhBMiwweDI4LDB4ODEsMHgyMCwweDNGLDB4OTcsMHg5NSwweDNGLAor
ICAgIDB4QzIsMHgzMCwweDYxLDB4MjAsMHgyRiwweEZBLDB4NkUsMHhCQSwweEMyLDB4MzAsMHg4
MSwweDI4LDB4MjgsMHhGNywweEI1LDB4RUQsCisgICAgMHg0NCwweDQxLDB4QzIsMHgzMCwweDBC
LDB4QUQsMHhCRCwweERELDB4MjQsMHgzOSwweEMyLDB4MzAsMHhEOCwweEJBLDB4QUEsMHhGRSwK
KyAgICAweEUzLDB4MzAsMHhBMiwweDMwLDB4OTcsMHhBOCwweEEwLDB4QTIsMHhFMywweDM4LDB4
QTIsMHgzMCwweDVFLDB4NUYsMHhERSwweEI4LAorICAgIDB4RTIsMHgzMCwweDgxLDB4MjgsMHg3
RiwweEVFLDB4QUEsMHhBMiwweEUzLDB4MzAsMHhBMiwweDI4LDB4OTUsMHgzNywweDJFLDB4QUIs
CisgICAgMHgwMywweDM5LDB4QTIsMHgyOCwweERGLDB4QjYsMHhFQSwweDhBLDB4RTIsMHgzMCww
eEEyLDB4MzAsMHgwMSwweDBBLDB4MkEsMHg5QSwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4
RkEsMHhCRiwweEFFLDB4MEYsMHg0MywweDQxLDB4RTMsMHgzOCwweEZCLDB4N0QsMHg3OCwweEVB
LAorICAgIDB4NDQsMHg0MSwweDAzLDB4MzksMHhGNSwweDJELDB4RjksMHhBMiwweDY0LDB4NDEs
MHhFMywweDM4LDB4NTcsMHhBOCwweDhBLDB4MkEsCisgICAgMHg0NCwweDQxLDB4QzIsMHgzMCww
eDVELDB4NUYsMHhFQywweEFBLDB4MjQsMHg0MSwweEEyLDB4MjgsMHhENSwweEY3LDB4QUEsMHhF
OCwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4ODMsMHgwOCwweDJFLDB4QTcsMHhFMywweDMw
LDB4QzIsMHgyOCwweDAwLDB4RTgsMHhCOCwweDdFLAorICAgIDB4RTMsMHgzMCwweEEyLDB4Mjgs
MHhBMCwweEJDLDB4M0UsMHhGQSwweEMyLDB4MzAsMHhBMiwweDI4LDB4NUUsMHg1RSwweDdDLDB4
RkUsCisgICAgMHhFMiwweDI4LDB4ODIsMHgyOCwweEM3LDB4RkYsMHhGQiwweEJFLDB4QTIsMHgy
OCwweDgxLDB4MjAsMHhBOCwweDZFLDB4MzYsMHgzMiwKKyAgICAweEMyLDB4MjgsMHg2MSwweDIw
LDB4MkYsMHhCRiwweEQ3LDB4QkIsMHhDMiwweDI4LDB4ODEsMHgyOCwweDAyLDB4OEEsMHhGMiww
eEU4LAorICAgIDB4QzIsMHgyOCwweEEyLDB4MjgsMHgzRSwweDI3LDB4QjksMHgwRCwweEMyLDB4
MzAsMHg4MiwweDI4LDB4NkUsMHhBOCwweEZBLDB4QzAsCisgICAgMHhDMiwweDI4LDB4ODEsMHgy
OCwweEI1LDB4OTcsMHg5RiwweEJFLDB4RTIsMHgzMCwweEEyLDB4MjgsMHhCRiwweDlGLDB4OUYs
MHg5NSwKKyAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4RkIsMHhGRiwweEVGLDB4MkIsMHgwMyww
eDM5LDB4QzIsMHgzMCwweDVGLDB4NUEsMHhGOCwweEMwLAorICAgIDB4RTIsMHgzMCwweEEyLDB4
MzAsMHg4OCwweEJCLDB4QkIsMHhBMiwweDAzLDB4MzksMHhDMSwweDMwLDB4QkQsMHhCRiwweEFC
LDB4QTMsCisgICAgMHgyMywweDQxLDB4RTIsMHgzOCwweEFELDB4RTcsMHhGNywweEJGLDB4NjQs
MHg0OSwweDAzLDB4MzksMHg4MCwweEUzLDB4RkIsMHhFRCwKKyAgICAweDY0LDB4NDksMHgwMiww
eDM5LDB4N0UsMHhGQSwweEE5LDB4OEIsMHhDNSwweDUxLDB4NDMsMHg0MSwweEJELDB4MEYsMHhB
RiwweEZGLAorICAgIDB4RTYsMHg1OSwweDY0LDB4NTEsMHhBNSwweEJFLDB4RUEsMHgzNywweDY4
LDB4NkEsMHhDNiwweDU5LDB4QkQsMHgyQiwweDNELDB4MkIsCisgICAgMHhFQSwweDgyLDB4Njgs
MHg2QSwweDI5LDB4MkIsMHgwRCwweDJGLDB4MkEsMHg4MywweENBLDB4N0EsMHhBQSwweEE4LDB4
QkIsMHhCNiwKKyAgICAweDJBLDB4ODMsMHhFQSwweDdBLDB4RUUsMHg2MiwweDZBLDB4RkIsMHgy
QSwweDgzLDB4RUEsMHg3QSwweERFLDB4RkYsMHhERCwweEM5LAorICAgIDB4MkIsMHg4MywweEM4
LDB4N0EsMHhBQiwweDJCLDB4QTUsMHg3NywweDJBLDB4ODMsMHhDOSwweDdBLDB4MEYsMHhCQyww
eEZFLDB4NkYsCisgICAgMHg2QiwweDhCLDB4QzksMHg3QSwweDJGLDB4QUYsMHhFRCwweEZELDB4
OEMsMHg5MywweEVBLDB4N0EsMHgwMCwweDAyLDB4RUIsMHhGNSwKKyAgICAweDBELDB4QTQsMHgw
QSwweDgzLDB4MDIsMHhBRSwweEZELDB4N0QsMHhFRiwweEJDLDB4NkIsMHg4QiwweDBBLDB4QUIs
MHhGNSwweEQ1LAorICAgIDB4RjAsMHhCQywweDhDLDB4OTMsMHgwMCwweDAwLDB4QUIsMHhCRCww
eEYwLDB4QkMsMHg5MCwweEI0LDB4MjAsMHgwMiwweDAzLDB4RkQsCisgICAgMHgzMCwweEM1LDB4
Q0YsMHhCQywweEVGLDB4QkIsMHhCQSwweEYxLDB4MTAsMHhDNSwweDhGLDB4QjQsMHg2QywweEY4
LDB4RTgsMHhFOCwKKyAgICAweEFGLDB4QjQsMHgyRCwweEE0LDB4REEsMHhFOCwweEU4LDB4RkIs
MHg2RSwweEFDLDB4MEMsMHhBNCwweEE2LDB4MjMsMHgyRiwweDg4LAorICAgIDB4NkUsMHhBQyww
eDJFLDB4QTQsMHg3RSwweEUwLDB4RjMsMHg4MCwweDZGLDB4QUMsMHgyRSwweEE0LDB4N0YsMHg1
NywweEQ3LDB4RkUsCisgICAgMHg2RSwweEFDLDB4MEQsMHhBNCwweDc2LDB4N0YsMHhCRiwweENB
LDB4NEUsMHhBQywweDBELDB4OUMsMHhBRCwweEUzLDB4MDIsMHg4QSwKKyAgICAweDRFLDB4QUMs
MHgwRCwweEE0LDB4MkIsMHgzQiwweENBLDB4QTAsMHg2RSwweEFDLDB4MEQsMHhBNCwweEFELDB4
RkEsMHgyMiwweDJFLAorICAgIDB4OEYsMHhCNCwweDJELDB4QUMsMHhCQSwweEU2LDB4QkIsMHhB
QSwweDZFLDB4QUMsMHgyRSwweEE0LDB4NkEsMHhFQSwweDZFLDB4M0EsCisgICAgMHg2RSwweEFD
LDB4MkUsMHhBNCwweEVGLDB4QkYsMHhBQSwweEE4LDB4NEUsMHhBNCwweDBELDB4OUMsMHhGMCww
eDY4LDB4RjgsMHgwMCwKKyAgICAweDIzLDB4NDksMHhDMiwweDM4LDB4ODgsMHhGQSwweEZCLDB4
NjgsMHgwMiwweDQxLDB4QzIsMHgzOCwweDdCLDB4RkQsMHhGRCwweEI3LAorICAgIDB4MDMsMHg0
MSwweEMyLDB4MzgsMHhCMiwweEVBLDB4QkMsMHgwRSwweDIzLDB4NDEsMHhDMiwweDQwLDB4N0Us
MHhGQSwweEEyLDB4QUEsCisgICAgMHgyMywweDQ5LDB4RTMsMHg0MCwweDIzLDB4MEIsMHhBRiww
eEY3LDB4MjMsMHg0OSwweEUzLDB4NDAsMHgzQiwweDI4LDB4OEYsMHg4QywKKyAgICAweDIzLDB4
NDEsMHhFMiwweDQwLDB4REYsMHgyMCwweDg4LDB4NzcsMHgwMywweDQxLDB4RTIsMHgzOCwweEFG
LDB4RjAsMHhFQiwweDg5LAorICAgIDB4MDIsMHg0MSwweEMyLDB4MzgsMHhBRiwweEVGLDB4Qzcs
MHhGQiwweEUyLDB4NDAsMHhDMiwweDM4LDB4MzYsMHg5RiwweEU3LDB4NzcsCisgICAgMHgwMyww
eDQxLDB4QzIsMHgzOCwweEMyLDB4RTMsMHhCNSwweEI1LDB4MDQsMHg0MSwweEMyLDB4MzgsMHhF
MiwweEZBLDB4NzYsMHg1NywKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4QkYsMHhCNiwweEJF
LDB4QUYsMHgyMywweDQxLDB4RTIsMHg0MCwweEVELDB4RkQsMHg5NSwweDhCLAorICAgIDB4MjMs
MHg0OSwweEMyLDB4MzgsMHhERSwweEZGLDB4REYsMHgzNSwweDAzLDB4NDEsMHhDMiwweDM4LDB4
RkEsMHhBRSwweEZGLDB4QUEsCisgICAgMHgwMywweDQxLDB4RTIsMHgzOCwweEZCLDB4NkIsMHg4
QSwweDI1LDB4MjMsMHg0MSwweEMyLDB4MzgsMHhBNywweDJGLDB4OEIsMHhGQiwKKyAgICAweDAy
LDB4NDEsMHhDMiwweDM4LDB4QTgsMHg5QSwweEZGLDB4REIsMHgyMywweDQxLDB4QzIsMHgzOCww
eEZBLDB4RkQsMHhGRCwweDM1LAorICAgIDB4MDMsMHg0MSwweEUyLDB4MzgsMHhFRiwweDQyLDB4
NkYsMHg4RSwweDAzLDB4NDEsMHhBMSwweDM4LDB4ODgsMHhBMiwweEJGLDB4MjcsCisgICAgMHgy
MywweDQ5LDB4QzIsMHg0MCwweEI1LDB4MTcsMHg5RSwweEJGLDB4NjYsMHg3MiwweDQ0LDB4NTEs
MHgyQiwweEE5LDB4MkQsMHgwRCwKKyAgICAweDg3LDB4NzIsMHgwNiwweDYyLDB4RkYsMHg3QSww
eDc4LDB4RkMsMHgyNiwweDZBLDB4RTUsMHg1OSwweEVBLDB4OTgsMHhBQSwweDhBLAorICAgIDB4
MDYsMHg2MiwweDY0LDB4NDksMHg2OCwweDcwLDB4NkMsMHhGQSwweDQ0LDB4NDEsMHhFMywweDM4
LDB4N0UsMHg3QywweEZGLDB4REYsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDAzLDB4MEEs
MHgwMiwweEFCLDB4MDMsMHgzOSwweEUyLDB4MzAsMHgwMCwweDIwLDB4MEYsMHgwMywKKyAgICAw
eDIzLDB4MzksMHhFMywweDM4LDB4MDEsMHgyQiwweEZFLDB4NUYsMHgyNCwweDQxLDB4MDMsMHgz
OSwweDU2LDB4NzcsMHg3MywweDU3LAorICAgIDB4MjMsMHg0MSwweEUzLDB4MzAsMHg4RSwweEZE
LDB4QjIsMHhBQSwweDI0LDB4MzksMHgwMywweDM5LDB4NDIsMHg1RiwweEE5LDB4N0UsCisgICAg
MHg0NCwweDQxLDB4MDMsMHgzOSwweDVGLDB4NEIsMHg4MiwweDAzLDB4NDQsMHg0MSwweEUyLDB4
MzAsMHg1RiwweDdGLDB4RTIsMHhFMCwKKyAgICAweDIzLDB4MzksMHhFMywweDM4LDB4RjUsMHg3
RCwweEZGLDB4ODIsMHgyMywweDM5LDB4RTMsMHgzOCwweDAyLDB4MDIsMHhGRSwweEY5LAorICAg
IDB4NDQsMHgzOSwweEUzLDB4MzAsMHhGRiwweEZGLDB4QUYsMHg4OSwweDI0LDB4MzksMHhDMiww
eDMwLDB4REYsMHhGQSwweEU4LDB4MkEsCisgICAgMHgwMywweDMxLDB4QzIsMHgyOCwweEQ1LDB4
RkQsMHhCQSwweDgwLDB4MDMsMHgzMSwweEMyLDB4MjgsMHhCRiwweEZGLDB4NkEsMHg2MCwKKyAg
ICAweDAzLDB4MzEsMHhFMywweDMwLDB4NkQsMHhBRCwweEZFLDB4RjksMHgwMywweDMxLDB4QzIs
MHgyOCwweEVFLDB4QUYsMHgwQSwweEMyLAorICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHhCOSww
eDg4LDB4MDAsMHgwMCwweDI0LDB4MzksMHhDMiwweDMwLDB4NzcsMHhGMiwweEEyLDB4RTIsCisg
ICAgMHgyNCwweDMxLDB4QzIsMHgzMCwweDdGLDB4RUYsMHhBRSwweEEyLDB4RTMsMHgzMCwweEMy
LDB4MzAsMHhEQiwweEFCLDB4MjAsMHg4MiwKKyAgICAweDAzLDB4MzksMHhBMiwweDI4LDB4RkYs
MHhGNywweEE4LDB4Q0EsMHgyNCwweDM5LDB4QzIsMHgzMCwweDdDLDB4RjUsMHg3NSwweEZELAor
ICAgIDB4MjMsMHgzMSwweEUzLDB4MzAsMHg1RCwweERCLDB4N0IsMHg1RCwweDAzLDB4MzEsMHhD
MiwweDI4LDB4QkYsMHgyRSwweEZGLDB4RjUsCisgICAgMHgwMywweDMxLDB4QTIsMHgyOCwweEZF
LDB4QjgsMHhGQSwweEE5LDB4RTMsMHgzMCwweEEyLDB4MjgsMHhBQSwweEVBLDB4NDAsMHg4MiwK
KyAgICAweEUzLDB4MzAsMHhDMiwweDI4LDB4OUQsMHg5RiwweEFELDB4MEQsMHhBMiwweDMwLDB4
RTMsMHgyOCwweEI5LDB4NzksMHg3RCwweEZELAorICAgIDB4RTMsMHgyOCwweDgyLDB4MjAsMHhE
RiwweDlFLDB4ODgsMHgwOCwweEMzLDB4MjgsMHg4MSwweDIwLDB4NUIsMHhGMywweEUyLDB4QTgs
CisgICAgMHhDMywweDI4LDB4ODIsMHgyMCwweEZCLDB4RkYsMHhGQSwweDZCLDB4QzIsMHgyOCww
eDgyLDB4MjAsMHg3RSwweDVGLDB4N0UsMHg3QSwKKyAgICAweEEyLDB4MjgsMHg4MiwweDIwLDB4
NTUsMHhEOSwweEI2LDB4QUEsMHg2MSwweDI4LDB4QTIsMHgyMCwweEJGLDB4QTUsMHhCRCwweEZE
LAorICAgIDB4QTIsMHgyMCwweDYxLDB4MjAsMHhCOCwweEJGLDB4REUsMHhGOCwweEEyLDB4Mjgs
MHg4MiwweDIwLDB4MkEsMHhGMywweDU5LDB4RDUsCisgICAgMHhBMiwweDI4LDB4ODIsMHgyMCww
eEFFLDB4OTcsMHhERiwweDdCLDB4QTIsMHgyOCwweDgyLDB4MjAsMHgwQiwweDBELDB4MDIsMHhD
MiwKKyAgICAweEUzLDB4MzAsMHg4MiwweDI4LDB4MkYsMHgzRiwweDNELDB4M0QsMHgyMywweDM5
LDB4QzIsMHgzMCwweDdBLDB4RUIsMHhGQSwweEY4LAorICAgIDB4RTMsMHgzMCwweEEyLDB4Mjgs
MHhBRSwweEJGLDB4RjcsMHhFMCwweEUzLDB4MzAsMHhBMiwweDI4LDB4ODIsMHgzRSwweDJGLDB4
MkYsCisgICAgMHgyMywweDM5LDB4QzIsMHgzMCwweERGLDB4OUYsMHg3RSwweEZDLDB4RTIsMHgz
MCwweEMxLDB4MzAsMHg4MCwweDgwLDB4QTcsMHg1NiwKKyAgICAweDAzLDB4MzksMHhDMiwweDMw
LDB4QUIsMHhBQSwweEFCLDB4MEYsMHgyMywweDM5LDB4QzIsMHgzMCwweERGLDB4QkUsMHhFQSww
eEU4LAorICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHgyMywweDA5LDB4QUIsMHhGNywweDQ0LDB4
NDEsMHhFMiwweDM4LDB4M0EsMHhCRSwweEZFLDB4QkQsCisgICAgMHg2NCwweDQ5LDB4MjQsMHg0
MSwweDhFLDB4QUQsMHhBRCwweEE1LDB4NjQsMHg0MSwweDI0LDB4NDEsMHhCRiwweDhCLDB4ODgs
MHhDMCwKKyAgICAweDY0LDB4NDEsMHhFMywweDMwLDB4RkUsMHg3QywweDdBLDB4RjAsMHgyNCww
eDM5LDB4QzIsMHgzMCwweDYyLDB4RkYsMHg3NywweDc3LAorICAgIDB4RTIsMHgzMCwweDgyLDB4
MjgsMHgyRSwweEFFLDB4RTcsMHhGRSwweEUzLDB4MzAsMHhBMSwweDI4LDB4RDcsMHhCRCwweEVC
LDB4MEIsCisgICAgMHgwMywweDM5LDB4QTIsMHgyOCwweEFELDB4OEIsMHhCRiwweENCLDB4RTMs
MHgzMCwweEEyLDB4MjgsMHhBRiwweDJFLDB4M0EsMHg5QywKKyAgICAweEMyLDB4MzAsMHg4Miww
eDI4LDB4RUUsMHhGQywweEI4LDB4QkEsMHhBMiwweDI4LDB4ODEsMHgyMCwweDMwLDB4RjgsMHgz
RSwweDA2LAorICAgIDB4QzIsMHgyOCwweDgxLDB4MjAsMHhBQSwweDFCLDB4REUsMHgyRSwweEMy
LDB4MjgsMHg2MSwweDI4LDB4RTgsMHgyQSwweEEwLDB4QTgsCisgICAgMHgwMiwweDMxLDB4QTIs
MHgyOCwweDM1LDB4RjUsMHhGRiwweEZGLDB4RTIsMHgzMCwweEEyLDB4MjgsMHg3QSwweDVBLDB4
NzgsMHg1QSwKKyAgICAweEMyLDB4MjgsMHg4MSwweDIwLDB4QjYsMHhFRSwweEFGLDB4MEQsMHgw
MywweDMxLDB4ODIsMHgyOCwweEZGLDB4QkUsMHhFQiwweDhELAorICAgIDB4MjMsMHgzOSwweEMy
LDB4MzAsMHgyRCwweDBGLDB4ODksMHhBRiwweDIzLDB4MzksMHhFMywweDMwLDB4QzAsMHg4MCww
eDAxLDB4MEYsCisgICAgMHgyMywweDM5LDB4RTIsMHgzMCwweDU3LDB4RkEsMHhGRSwweDI4LDB4
NDQsMHg0MSwweEUyLDB4MzgsMHg3QiwweEU4LDB4ODMsMHg4MiwKKyAgICAweDIzLDB4NDEsMHhF
MiwweDM4LDB4NkYsMHhGQSwweDIyLDB4MDAsMHg2NCwweDQ5LDB4MDIsMHgzOSwweENELDB4QkQs
MHhCRiwweEZGLAorICAgIDB4ODUsMHg1MSwweDIzLDB4NDEsMHhBOSwweDhCLDB4OEIsMHgyQSww
eDg1LDB4NTEsMHg2NCwweDQ5LDB4MDksMHhDQSwweEYyLDB4MkUsCisgICAgMHgwNiwweDYyLDB4
NjQsMHg1MSwweEFGLDB4MzksMHhBRCwweDJGLDB4QzksMHg3QSwweDI2LDB4NjIsMHhCRCwweEE1
LDB4QUQsMHgyRCwKKyAgICAweEU5LDB4N0EsMHhBOSwweDcyLDB4MjUsMHgyMSwweEFBLDB4QUMs
MHgwQSwweDgzLDB4QTksMHg3QSwweDI4LDB4QTIsMHg1QSwweDZBLAorICAgIDB4MEEsMHg4Myww
eEM5LDB4N0EsMHhCMCwweEExLDB4QjUsMHhCRCwweDBBLDB4ODMsMHhDOSwweDdBLDB4QUIsMHhG
RiwweEVCLDB4N0YsCisgICAgMHgwQSwweDgzLDB4QzksMHg3QSwweEVDLDB4MDIsMHgyMywweDJE
LDB4MkIsMHg4MywweEM5LDB4N0EsMHhBRiwweEZGLDB4QTAsMHhBMCwKKyAgICAweDJCLDB4ODMs
MHhBOSwweDdBLDB4OEIsMHhGQSwweDdBLDB4RjAsMHgwQSwweDgzLDB4QzksMHg3QSwweDZFLDB4
QkEsMHgwMSwweDI5LAorICAgIDB4MkEsMHg4MywweEVBLDB4ODIsMHg4RCwweDhELDB4QTIsMHhG
MCwweDZDLDB4OEIsMHgwQSwweDgzLDB4MDksMHhCNSwweEJELDB4QjcsCisgICAgMHhBRCwweDkz
LDB4MEEsMHg4MywweDBBLDB4QUYsMHg5RiwweEQ3LDB4NkYsMHhBQywweDBBLDB4ODMsMHgwMiww
eEFGLDB4RkYsMHhGRCwKKyAgICAweEQwLDB4QkMsMHg0QiwweDhCLDB4MDAsMHgyQSwweEFGLDB4
RjUsMHgxMCwweEJELDB4MEQsMHhBNCwweDIwLDB4QTgsMHhDQiwweEY1LAorICAgIDB4Q0YsMHhC
NCwweDRFLDB4QUMsMHg1QywweDdDLDB4RkEsMHg3RiwweDhGLDB4QjQsMHg0RSwweEFDLDB4Njks
MHhCMSwweDJGLDB4RDcsCisgICAgMHhBRiwweEI0LDB4NEUsMHhBQywweDdGLDB4OUIsMHhEMyww
eEIzLDB4OEYsMHhCNCwweDRFLDB4QUMsMHhENywweDdGLDB4QkUsMHg4OCwKKyAgICAweDhGLDB4
QjQsMHg0RSwweEFDLDB4NTcsMHgzQSwweDhBLDB4Q0EsMHg2RSwweEFDLDB4MkQsMHhBNCwweEI2
LDB4QkMsMHgyQywweDJBLAorICAgIDB4OEYsMHhBQywweDRFLDB4QUMsMHg1RSwweDdGLDB4NkIs
MHhBRiwweEFFLDB4QUMsMHg0RSwweEFDLDB4NUQsMHhGRCwweDdELDB4RkUsCisgICAgMHg4Riww
eEI0LDB4MkQsMHhBNCwweEJBLDB4QjksMHhBQiwweEEwLDB4QUYsMHhBQywweDRELDB4QUMsMHg5
RiwweEY1LDB4RjcsMHhGRiwKKyAgICAweDZFLDB4QjQsMHg0RSwweEE0LDB4MkEsMHhFQSwweEY4
LDB4RjgsMHg4RiwweEFDLDB4NEUsMHhBQywweDVFLDB4NUQsMHhGOSwweDZBLAorICAgIDB4MjMs
MHg0OSwweEMyLDB4NDAsMHhGRSwweEJBLDB4RkUsMHhFNywweDAyLDB4NDEsMHhDMiwweDM4LDB4
QkYsMHhFRSwweEJGLDB4QkEsCisgICAgMHgwMywweDQxLDB4RTIsMHg0MCwweDBCLDB4MDEsMHg4
MSwweEFBLDB4MjMsMHg0MSwweEUyLDB4NDAsMHgyNywweEI5LDB4MEYsMHhGRCwKKyAgICAweDIz
LDB4NDksMHhFMiwweDQwLDB4QkYsMHgyRiwweDg3LDB4MzksMHgyMywweDQ5LDB4RTIsMHgzOCww
eEU4LDB4NTgsMHhERiwweDk2LAorICAgIDB4MjMsMHg0MSwweEMyLDB4NDAsMHhCOSwweEFCLDB4
QkEsMHhCOCwweDAzLDB4NDEsMHhDMiwweDM4LDB4QUIsMHg3RiwweEQ4LDB4NUMsCisgICAgMHgw
MywweDQxLDB4QzIsMHgzOCwweDhCLDB4QzEsMHhGMywweDVFLDB4MDMsMHg0MSwweEExLDB4Mzgs
MHhBRiwweEE4LDB4MDIsMHgyRiwKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4RUYsMHhBMiww
eDYwLDB4QUEsMHgwMywweDQxLDB4QzIsMHgzOCwweDM3LDB4ODIsMHhDMywweEFGLAorICAgIDB4
MDMsMHg0MSwweEMyLDB4MzgsMHgzRSwweEZBLDB4RjksMHhCRiwweDAzLDB4NDEsMHhDMiwweDM4
LDB4QzIsMHg2OCwweDRFLDB4RkYsCisgICAgMHgwMiwweDQxLDB4QTEsMHgzOCwweDNELDB4QUUs
MHhBRSwweEFBLDB4MDMsMHg0MSwweEMyLDB4MzgsMHgwMiwweEIyLDB4QUQsMHg4RSwKKyAgICAw
eDAzLDB4NDEsMHhFMiwweDM4LDB4N0YsMHg3RiwweEVELDB4QUQsMHgwMiwweDQxLDB4QzEsMHgz
OCwweEU5LDB4MzgsMHhGMiwweEVCLAorICAgIDB4RTIsMHg0MCwweEMyLDB4MzgsMHhEQSwweEYw
LDB4MDIsMHgwQiwweDAyLDB4NDEsMHhDMiwweDM4LDB4RUUsMHhGNywweDVFLDB4OUEsCisgICAg
MHhFMiwweDQwLDB4QzIsMHgzOCwweDA4LDB4MkMsMHgxQiwweDAyLDB4RTIsMHg0MCwweEMyLDB4
MzgsMHgyNywweEEyLDB4RTAsMHhDQSwKKyAgICAweDAzLDB4NDksMHhFMiwweDM4LDB4QjYsMHhC
NywweEJGLDB4QUQsMHg0NiwweDZBLDB4NDMsMHg0OSwweDBCLDB4MDksMHgwRCwweDBELAorICAg
IDB4ODYsMHg3MiwweDI1LDB4NkEsMHhGRSwweEZFLDB4NkEsMHg2MCwweDI2LDB4NkEsMHhFNSww
eDYxLDB4RjgsMHg3QywweDcwLDB4MTIsCisgICAgMHgwNSwweDYyLDB4MjMsMHg0MSwweDcwLDB4
RTAsMHhFOCwweEEwLDB4MjMsMHg0MSwweEMyLDB4MzAsMHhBQSwweDk4LDB4RDgsMHhGOCwKKyAg
ICAweDAzLDB4MzksMHhFMiwweDMwLDB4RUYsMHhFQSwweDdBLDB4NUIsMHgwMywweDM5LDB4RTIs
MHgzMCwweEFCLDB4MkQsMHgzNSwweDk1LAorICAgIDB4MjQsMHgzOSwweEMzLDB4MzAsMHhGRSww
eDlFLDB4RjIsMHhGQSwweDAzLDB4MzksMHhFMywweDMwLDB4RTgsMHg2RSwweEUzLDB4RUUsCisg
ICAgMHgyMywweDM5LDB4RTMsMHgzOCwweDJCLDB4QkQsMHhFRiwweEZELDB4MjMsMHgzOSwweEUy
LDB4MzgsMHhBOCwweDA4LDB4QkUsMHg3RiwKKyAgICAweDIzLDB4MzksMHhFMiwweDM4LDB4MDIs
MHgwRSwweEFGLDB4QUIsMHg0NCwweDM5LDB4RTMsMHgzMCwweENBLDB4OEEsMHhGNywweEJFLAor
ICAgIDB4NDQsMHg0MSwweEUzLDB4MzAsMHhFMiwweEFBLDB4M0EsMHhCRiwweDY0LDB4NDEsMHhF
MywweDMwLDB4N0QsMHg3QiwweEYwLDB4RTIsCisgICAgMHg0NCwweDQxLDB4RTMsMHgzMCwweEY1
LDB4NTUsMHhGQiwweEEyLDB4MjQsMHgzOSwweEUzLDB4MzAsMHgyQiwweDg3LDB4NUIsMHg3QiwK
KyAgICAweDI0LDB4MzksMHhFMywweDMwLDB4QTAsMHhBOCwweEVCLDB4QjksMHgyNCwweDM5LDB4
RTMsMHgzMCwweDdBLDB4RkEsMHhCRSwweEIyLAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHhF
NywweEZFLDB4QkEsMHhCQSwweDIzLDB4MzksMHhFMywweDMwLDB4MUYsMHhCQiwweEEyLDB4ODAs
CisgICAgMHg0NCwweDM5LDB4RTMsMHgzMCwweEZDLDB4REYsMHhENSwweEZCLDB4MjQsMHgzOSww
eEUzLDB4MzAsMHg4MiwweEFBLDB4QkQsMHhBRSwKKyAgICAweDIzLDB4MzksMHhFMiwweDMwLDB4
OEEsMHgzQSwweEFCLDB4RUQsMHgyNCwweDM5LDB4RTMsMHgzMCwweDdGLDB4RkMsMHhGQywweEZF
LAorICAgIDB4MjQsMHgzOSwweEMyLDB4MzAsMHg0QiwweDhBLDB4OEEsMHhBRSwweDAzLDB4Mzks
MHhFMywweDMwLDB4NTksMHg4MiwweDA2LDB4MjUsCisgICAgMHgyNCwweDM5LDB4QzIsMHgyOCww
eDVCLDB4RkIsMHhBMiwweEUyLDB4MDMsMHgzMSwweEMyLDB4MjgsMHhGNSwweEZGLDB4RUUsMHhB
OCwKKyAgICAweEUzLDB4MzAsMHhDMiwweDI4LDB4QkEsMHhFQSwweEU3LDB4QTgsMHgwMywweDMx
LDB4QzIsMHgyOCwweDRCLDB4QkQsMHhCNSwweEFGLAorICAgIDB4MDMsMHgzMSwweEMyLDB4Mjgs
MHhBRiwweERFLDB4OTQsMHhGOCwweDAzLDB4MzEsMHhDMywweDI4LDB4NUEsMHhGQSwweEZFLDB4
QkUsCisgICAgMHgwMywweDMxLDB4QzMsMHgyOCwweDc1LDB4NTUsMHhERSwweDZCLDB4RTMsMHgy
OCwweEEyLDB4MjAsMHhERSwweEJFLDB4QkEsMHhBQSwKKyAgICAweEMzLDB4MjgsMHg4MiwweDIw
LDB4OEEsMHhFMCwweDQwLDB4ODAsMHhDMiwweDI4LDB4ODIsMHgyMCwweDdBLDB4QUEsMHhBQSww
eDMwLAorICAgIDB4QzIsMHgyOCwweEEyLDB4MjAsMHg3RCwweDM1LDB4QUIsMHhFQywweEMzLDB4
MjgsMHg4MiwweDIwLDB4NTcsMHhEQywweEQ4LDB4N0IsCisgICAgMHhDMywweDI4LDB4ODIsMHgy
MCwweDVFLDB4NUYsMHhGQiwweDJBLDB4QzIsMHgyOCwweDYyLDB4MTgsMHhBRiwweEFCLDB4RUEs
MHhBOCwKKyAgICAweEEyLDB4MjgsMHg2MiwweDIwLDB4M0EsMHhGOCwweEJFLDB4QkUsMHhBMiww
eDI4LDB4ODIsMHgyMCwweEEwLDB4RUUsMHhFRiwweERGLAorICAgIDB4QzMsMHgzMCwweDgxLDB4
MjAsMHgwQiwweDJCLDB4QkYsMHhFRCwweDAzLDB4MzEsMHhBMiwweDI4LDB4ODAsMHgyMiwweEZC
LDB4NTUsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEMwLDB4QzAsMHhFMywweEE1LDB4RTMs
MHgzMCwweEEyLDB4MjgsMHg5RiwweEZCLDB4NkIsMHhFRSwKKyAgICAweDAzLDB4MzksMHhBMiww
eDI4LDB4MkIsMHgyRiwweEFELDB4RUYsMHgwMywweDM5LDB4QzIsMHgzMCwweEZBLDB4OEEsMHg4
QiwweEFCLAorICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHhGRCwweEFFLDB4MjMsMHgwMiwweDAz
LDB4MzksMHhBMiwweDI4LDB4QTIsMHhFQSwweEVBLDB4N0UsCisgICAgMHhDMiwweDMwLDB4ODEs
MHgyOCwweDA4LDB4OEEsMHhFQiwweEVBLDB4MDMsMHgzOSwweEExLDB4MzAsMHhBQSwweDJGLDB4
RUIsMHhBRCwKKyAgICAweDQ0LDB4NDEsMHhDMiwweDMwLDB4MDIsMHgyQiwweEVGLDB4RDcsMHg2
NSwweDQ5LDB4RTIsMHgzMCwweEEwLDB4QTIsMHhBRiwweEQ1LAorICAgIDB4NjUsMHg0OSwweDAz
LDB4MzksMHhGMiwweEYyLDB4OEIsMHhFOSwweDI0LDB4NDEsMHhBMiwweDMwLDB4NzIsMHhFOCww
eEU4LDB4RkEsCisgICAgMHhFMywweDMwLDB4ODIsMHgyOCwweEZFLDB4REYsMHhGQSwweEI4LDB4
RTMsMHgzMCwweDgxLDB4MjgsMHgwOSwweEFGLDB4QkIsMHhBRSwKKyAgICAweDAzLDB4MzksMHhB
MiwweDI4LDB4OEIsMHhCQiwweEY2LDB4QkYsMHgwMywweDM5LDB4QTIsMHgyOCwweEZFLDB4QUUs
MHhGQSwweDcyLAorICAgIDB4QzIsMHgzMCwweDgyLDB4MjgsMHhGRSwweEVDLDB4OTgsMHhGOCww
eEMyLDB4MzAsMHg4MSwweDI4LDB4MzcsMHhGNiwweEUyLDB4QTAsCisgICAgMHhFMiwweDMwLDB4
QTIsMHgyOCwweEE2LDB4QUIsMHg4OSwweEFELDB4RTIsMHgzMCwweEExLDB4MjgsMHhGNSwweEY1
LDB4RUUsMHhBOCwKKyAgICAweEUyLDB4MzAsMHg4MiwweDI4LDB4QjksMHhFQSwweEJBLDB4MDIs
MHhFMywweDMwLDB4QTEsMHgyOCwweDVBLDB4QjMsMHhFQSwweEVBLAorICAgIDB4QzIsMHgyOCww
eDgxLDB4MjgsMHgwNSwweEFGLDB4QkYsMHhCRSwweDIzLDB4MzksMHhDMiwweDI4LDB4MjUsMHhG
NSwweDVELDB4RDcsCisgICAgMHgyNCwweDM5LDB4QzMsMHgzMCwweDM2LDB4QUIsMHhFOSwweEVF
LDB4MjMsMHgzOSwweEMyLDB4MzAsMHgwRiwweEY5LDB4NUYsMHhFRiwKKyAgICAweDIzLDB4Mzks
MHhFMiwweDMwLDB4MzgsMHgwRCwweDJCLDB4MDMsMHg2NCwweDQ5LDB4MjMsMHg0MSwweEI1LDB4
MDUsMHhBNSwweEQ1LAorICAgIDB4NjMsMHg0OSwweDAzLDB4MzksMHhGRiwweEZGLDB4RUYsMHhG
QywweDQ0LDB4NDksMHgwMywweDQxLDB4RjUsMHgwNSwweEZELDB4OTcsCisgICAgMHhBNSwweDUx
LDB4MjMsMHg0MSwweDJGLDB4MkYsMHgyRCwweDM1LDB4NDcsMHg2QSwweDg0LDB4NDksMHhGNSww
eEJELDB4QTcsMHgwRiwKKyAgICAweDY4LDB4NkEsMHhDNSwweDU5LDB4RjUsMHgyRCwweDAyLDB4
MDgsMHhDOSwweDdBLDB4NjgsMHg2QSwweDFELDB4OUQsMHhBOSwweDhGLAorICAgIDB4RTksMHg3
QSwweEE5LDB4NzIsMHhCNiwweDI3LDB4Q0QsMHgwQiwweDBBLDB4ODMsMHhDOSwweDdBLDB4NUEs
MHg2MiwweDU5LDB4NTUsCisgICAgMHhFOSwweDdBLDB4QTksMHg3QSwweDhBLDB4OEUsMHhBQSww
eEZFLDB4MEEsMHg4MywweEE5LDB4NzIsMHgzRCwweEFGLDB4MDMsMHhCOCwKKyAgICAweDBBLDB4
ODMsMHhBOSwweDcyLDB4ODksMHg4RSwweEJCLDB4RUIsMHgyQSwweDgzLDB4QzgsMHg3QSwweDIw
LDB4RUEsMHhBQiwweDJELAorICAgIDB4NEIsMHg4QiwweEVBLDB4N0EsMHhFMywweEVFLDB4REUs
MHhGQSwweDJBLDB4ODMsMHhFQSwweDdBLDB4QkYsMHhCRSwweDhCLDB4QUIsCisgICAgMHg0Qiww
eDhCLDB4RUEsMHg3QSwweEJGLDB4OEYsMHhFRSwweDU3LDB4MkEsMHg4MywweEU5LDB4N0EsMHgy
OCwweDJBLDB4RUUsMHhCNywKKyAgICAweDRBLDB4OEIsMHhFOSwweDdBLDB4RjgsMHhGQiwweEYz
LDB4RkIsMHg0QiwweDhCLDB4RUEsMHg3QSwweDAxLDB4QkIsMHgzQSwweEI4LAorICAgIDB4NkIs
MHg4QiwweDBBLDB4ODMsMHgwMiwweEZFLDB4RDcsMHhERSwweEVDLDB4OUIsMHgyQSwweDgzLDB4
MEEsMHhCQiwweDlELDB4NzUsCisgICAgMHgyRCwweEE0LDB4MjksMHg4MywweDAwLDB4MkEsMHhG
RiwweDU1LDB4NEUsMHhBQywweDZCLDB4OEIsMHgwMCwweDAwLDB4MkIsMHhERCwKKyAgICAweDhG
LDB4QjQsMHhDRCwweDlCLDB4MDAsMHgwQSwweDBBLDB4QTksMHhBRiwweEI0LDB4NEUsMHhBQyww
eEVFLDB4OEEsMHhBQSwweDdGLAorICAgIDB4OEYsMHhCNCwweDZFLDB4QUMsMHg3RCwweEFELDB4
QTIsMHg2RSwweDhGLDB4QjQsMHgyRCwweEE0LDB4REEsMHhBQSwweEE4LDB4QjIsCisgICAgMHg4
RiwweEI0LDB4NkUsMHhBQywweEQ2LDB4QkMsMHhFNSwweDNFLDB4OEYsMHhCNCwweDRFLDB4QUMs
MHgwQSwweEFFLDB4OEUsMHhBNCwKKyAgICAweEFGLDB4QjQsMHg2RSwweEFDLDB4RkYsMHg3NSww
eEU3LDB4RkEsMHhBRiwweEI0LDB4NEQsMHhBQywweDM3LDB4QTcsMHgyQSwweEFBLAorICAgIDB4
QUYsMHhCNCwweDRELDB4QUMsMHhGNywweDZFLDB4MjgsMHgyOCwweEQwLDB4QjQsMHg2RSwweEFD
LDB4NzcsMHg3RSwweEVBLDB4QUEsCisgICAgMHgyMywweDQxLDB4RTIsMHg0MCwweDc1LDB4QkQs
MHhDQiwweEEyLDB4MjMsMHg0MSwweEUyLDB4NDAsMHg3RiwweEVGLDB4NkMsMHhGQiwKKyAgICAw
eDAzLDB4NDEsMHhFMiwweDQwLDB4NEIsMHhGMywweDUzLDB4NzMsMHgyMywweDQ5LDB4QzIsMHgz
OCwweEZGLDB4RkYsMHhGRiwweDNFLAorICAgIDB4MjMsMHg0MSwweEMyLDB4MzgsMHgyQiwweDdG
LDB4RUEsMHhFRiwweDIzLDB4NDEsMHhDMiwweDQwLDB4M0MsMHhBRiwweEVELDB4QUQsCisgICAg
MHgyMywweDQ5LDB4QzIsMHgzOCwweEZFLDB4RkYsMHhFQiwweEUyLDB4RTIsMHg0MCwweEMyLDB4
MzgsMHg5QywweEFDLDB4RUEsMHg1NiwKKyAgICAweDAyLDB4NDEsMHhDMiwweDM4LDB4RDUsMHhG
RCwweEVGLDB4MkYsMHgwMywweDQxLDB4QTEsMHgzMCwweDM1LDB4QkYsMHgyQiwweDBBLAorICAg
IDB4MDMsMHg0MSwweEUyLDB4MzgsMHhFQywweEZFLDB4RkUsMHhGOCwweDIzLDB4NDEsMHhDMiww
eDM4LDB4QkQsMHgzNywweERFLDB4QkIsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEVGLDB4
OEEsMHhBMiwweEU4LDB4RTIsMHg0MCwweEMyLDB4MzgsMHgyNywweDhGLDB4MDIsMHgwMCwKKyAg
ICAweEUyLDB4NDAsMHhDMiwweDM4LDB4MjIsMHhBQSwweEZFLDB4RUUsMHgwMywweDQxLDB4QzIs
MHgzOCwweEJCLDB4RTIsMHhERiwweDU1LAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHgwMiww
eENBLDB4NTUsMHg3OSwweDAzLDB4NDEsMHhBMSwweDMwLDB4OEEsMHhGRiwweEJGLDB4QUEsCisg
ICAgMHgwMywweDQxLDB4RTIsMHgzOCwweDU3LDB4RUMsMHhEMiwweDVBLDB4MDMsMHg0MSwweEMy
LDB4MzgsMHhCMiwweDgyLDB4MDksMHgyRCwKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4OEIs
MHhBRiwweENFLDB4NjIsMHhFMiwweDQwLDB4QTIsMHgzOCwweEMyLDB4RTAsMHhDOCwweDlBLAor
ICAgIDB4MDIsMHg0MSwweEMyLDB4MzgsMHgwRCwweDk1LDB4QkYsMHgyRiwweEE3LDB4N0EsMHg0
MywweDQ5LDB4MjksMHhBRCwweDJELDB4MkQsCisgICAgMHg4NiwweDcyLDB4NDYsMHg2QSwweDZB
LDB4OTIsMHhFMiwweEY2LDB4MjYsMHg2QSwweDA1LDB4NjIsMHg5MCwweEQyLDB4NzAsMHg1MCwK
KyAgICAweDA1LDB4NjIsMHg2MywweDQ5LDB4NjAsMHg3OCwweEUwLDB4NjAsMHg2MywweDQ5LDB4
QzIsMHgzMCwweDdCLDB4N0UsMHhGQywweDdFLAorICAgIDB4RTIsMHgzOCwweEMyLDB4MzAsMHhC
QSwweEVGLDB4NzYsMHhBMiwweDAzLDB4MzksMHhDMiwweDMwLDB4OTcsMHhGRSwweEFELDB4QTcs
CisgICAgMHgyMywweDM5LDB4RTIsMHgzOCwweDU1LDB4NzksMHhDQiwweDZBLDB4MjMsMHgzOSww
eEUyLDB4MzAsMHg1RCwweEZFLDB4MkYsMHhBQSwKKyAgICAweDIzLDB4MzksMHhFMywweDM4LDB4
RUYsMHhBRiwweDJELDB4RUYsMHgyMywweDM5LDB4QzIsMHgzOCwweDYzLDB4QUEsMHhBQSwweEFF
LAorICAgIDB4NDMsMHg0MSwweDAzLDB4MzksMHhGOSwweEVGLDB4NzgsMHhGRSwweDI0LDB4Mzks
MHgwMywweDM5LDB4QkMsMHgyNywweEE1LDB4OTUsCisgICAgMHg0NCwweDQxLDB4MDMsMHgzOSww
eDA2LDB4M0YsMHhCRSwweEVBLDB4NjUsMHg0MSwweDAzLDB4MzksMHhFMywweEFBLDB4MkYsMHhG
QSwKKyAgICAweDQ0LDB4NDEsMHgwMywweDM5LDB4QkEsMHhGOCwweEZFLDB4RUUsMHg0NCwweDQx
LDB4MDMsMHgzMSwweDdCLDB4QkEsMHhFMywweEEwLAorICAgIDB4NDQsMHgzOSwweDAzLDB4MzEs
MHg1RCwweDkyLDB4MDAsMHg4OCwweDQ0LDB4MzksMHgwMywweDMxLDB4NUQsMHg1NywweDU3LDB4
NzgsCisgICAgMHgyNCwweDM5LDB4RTIsMHgzMCwweEFBLDB4QUEsMHhBNywweDlGLDB4NDQsMHgz
OSwweEUyLDB4MzAsMHhBMiwweEFBLDB4RkYsMHhERiwKKyAgICAweDIzLDB4MzksMHgwMywweDM5
LDB4QjIsMHgyMiwweEMxLDB4NzksMHgyNCwweDM5LDB4RTMsMHgzOCwweEVBLDB4NzgsMHg3MCww
eEEyLAorICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHg4MiwweEEyLDB4QUMsMHhBQSwweDI0LDB4
MzksMHhDMywweDMwLDB4QkYsMHhGRCwweEJGLDB4QTgsCisgICAgMHgwMywweDM5LDB4RTMsMHgz
MCwweEFCLDB4QjAsMHhBMCwweEEwLDB4MjMsMHgzOSwweEUzLDB4MzAsMHhBRCwweEFGLDB4RUYs
MHhENywKKyAgICAweDI0LDB4MzksMHhFMywweDMwLDB4OEEsMHhBQiwweERGLDB4NTcsMHgyMyww
eDM5LDB4RTMsMHgzMCwweEZFLDB4RkYsMHhBMywweEJGLAorICAgIDB4MDMsMHgzMSwweEUzLDB4
MzAsMHhEQSwweDc4LDB4NUUsMHhGRSwweDAzLDB4MzEsMHhBMiwweDI4LDB4QUEsMHhFQSwweEFB
LDB4MDgsCisgICAgMHgyNCwweDM5LDB4QzIsMHgyOCwweDdGLDB4N0YsMHhEQiwweDYyLDB4MjMs
MHgzMSwweEUzLDB4MzAsMHhGNSwweDdGLDB4RkYsMHg3MywKKyAgICAweDI0LDB4MzEsMHhDMiww
eDI4LDB4RUMsMHhFMiwweEVCLDB4N0YsMHhFMywweDI4LDB4QzMsMHgyOCwweEQ3LDB4QkUsMHg1
RSwweDU3LAorICAgIDB4MDQsMHgzMSwweEMzLDB4MjgsMHg3RiwweDVFLDB4RUIsMHgyQywweEUz
LDB4MjgsMHhDMywweDI4LDB4NUYsMHhDOCwweDYyLDB4ODAsCisgICAgMHhFMywweDI4LDB4QTIs
MHgyMCwweEJGLDB4OEUsMHg4QSwweDgyLDB4RTMsMHgyOCwweEEyLDB4MjAsMHg2QiwweEIyLDB4
RjIsMHhBQSwKKyAgICAweEMyLDB4MjgsMHg4MiwweDIwLDB4QUIsMHhGMCwweEJBLDB4QTgsMHhD
MiwweDI4LDB4QTEsMHgyOCwweDZFLDB4NTMsMHhCNywweDAyLAorICAgIDB4QzIsMHgyOCwweDgy
LDB4MjAsMHg3RiwweDc2LDB4RkUsMHg2RSwweEMyLDB4MjgsMHg4MiwweDIwLDB4RDUsMHhGNSww
eEJGLDB4QUIsCisgICAgMHhDMywweDI4LDB4ODIsMHgyMCwweDZGLDB4RkEsMHhGRSwweDVBLDB4
QTIsMHgyOCwweDgyLDB4MjAsMHhCRiwweEFGLDB4RjYsMHhBNSwKKyAgICAweEMyLDB4MjgsMHg4
MiwweDIwLDB4MEUsMHhGQiwweEZBLDB4RDUsMHhDMiwweDMwLDB4QTIsMHgyOCwweDg5LDB4MkIs
MHg5NywweDVCLAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhCRSwweEJDLDB4QUYsMHg5Qiww
eDAzLDB4MzEsMHhDMiwweDMwLDB4MjksMHgyOSwweDA1LDB4QUIsCisgICAgMHgwMywweDM5LDB4
RTMsMHgzMCwweEZGLDB4N0MsMHhGRSwweEZGLDB4NDQsMHg0MSwweDgxLDB4MjgsMHg3RiwweDdG
LDB4N0EsMHhFQywKKyAgICAweDAzLDB4MzEsMHhBMiwweDMwLDB4N0QsMHhGRCwweEY1LDB4QkYs
MHhFMiwweDMwLDB4QTIsMHgyOCwweEExLDB4QTcsMHhCNywweEZFLAorICAgIDB4RTMsMHgzMCww
eEEyLDB4MzAsMHhGRiwweEJGLDB4QUUsMHhFMiwweDgyLDB4MzgsMHhFMywweDMwLDB4NzcsMHhG
RCwweEY3LDB4QkYsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEEyLDB4RjIsMHg1OSwweERE
LDB4RTIsMHgzMCwweEExLDB4MzAsMHhBMCwweEYwLDB4NUEsMHg2QSwKKyAgICAweEMyLDB4MzAs
MHg4MSwweDI4LDB4QjgsMHg1QywweEZFLDB4MEYsMHhFMiwweDMwLDB4QzIsMHgzMCwweEY1LDB4
NkQsMHhBRCwweEFCLAorICAgIDB4RTMsMHgzMCwweEEyLDB4MzAsMHgxQSwweDBFLDB4MDgsMHgy
QSwweEUzLDB4MzAsMHhDMiwweDMwLDB4N0EsMHg3MiwweDQ1LDB4Q0EsCisgICAgMHhDMiwweDMw
LDB4QTIsMHgyOCwweERGLDB4NjYsMHhGRiwweDQ4LDB4QzIsMHgyOCwweEEyLDB4MjgsMHgzQiww
eDhBLDB4OEIsMHhGRSwKKyAgICAweEUyLDB4MzAsMHhBMiwweDI4LDB4MkYsMHhBRCwweDc1LDB4
MjksMHgyMywweDM5LDB4QzIsMHgyOCwweEZGLDB4REYsMHhCOSwweEEyLAorICAgIDB4MDMsMHgz
OSwweEMyLDB4MjgsMHhBRSwweDdFLDB4QjgsMHgyOCwweDIzLDB4MzksMHhDMiwweDI4LDB4NUYs
MHg2QSwweEE4LDB4QTAsCisgICAgMHgwMywweDMxLDB4QTEsMHgyOCwweDc1LDB4NUYsMHhCQyww
eEFBLDB4RTMsMHgzMCwweEEyLDB4MjgsMHgyQiwweDhCLDB4QUEsMHg4OCwKKyAgICAweDAzLDB4
MzksMHhDMywweDMwLDB4QUEsMHhCRCwweEZBLDB4QkUsMHg0MywweDQxLDB4RTIsMHgzMCwweEI1
LDB4OTUsMHhGRiwweEFBLAorICAgIDB4NDQsMHg0MSwweDAyLDB4MzksMHhDRSwweDgwLDB4Q0Es
MHhFQiwweDY0LDB4NDksMHgwMywweDM5LDB4QkYsMHhDRiwweDdCLDB4NTUsCisgICAgMHg0NCww
eDQ5LDB4RTIsMHgzOCwweEI4LDB4QUEsMHhBNSwweDM1LDB4QTUsMHg1MSwweDAzLDB4NDEsMHg1
NSwweDVELDB4QkIsMHgyQSwKKyAgICAweDY3LDB4NkEsMHgyMywweDQxLDB4RjUsMHhCRCwweEFG
LDB4MkEsMHg2NywweDZBLDB4QzUsMHg1MSwweDI1LDB4MkYsMHhBQiwweDAwLAorICAgIDB4QTgs
MHg3MiwweDQ3LDB4NkEsMHhCRCwweDNGLDB4RkYsMHhFRiwweEU5LDB4N0EsMHg2NywweDcyLDB4
QUIsMHgwRiwweEU5LDB4RUYsCisgICAgMHhDOSwweDdBLDB4ODgsMHg3MiwweDA4LDB4QTgsMHgy
QSwweEJGLDB4QzksMHg3QSwweEE5LDB4NzIsMHhDNSwweDYxLDB4RkEsMHg1QywKKyAgICAweEVB
LDB4N0EsMHg4OSwweDcyLDB4MkYsMHgzRCwweEE1LDB4QUYsMHgwQSwweDgzLDB4QTksMHg3QSww
eDNBLDB4QjgsMHhGQSwweEZGLAorICAgIDB4RTksMHg3QSwweEE4LDB4N0EsMHg3QSwweDQwLDB4
RUUsMHgzRiwweEU5LDB4N0EsMHhBOSwweDcyLDB4MDEsMHhFRiwweEE0LDB4QjgsCisgICAgMHgw
QSwweDgzLDB4QzksMHg3QSwweDhGLDB4QjUsMHhCRiwweEZGLDB4MkEsMHg4MywweEM5LDB4N0Es
MHhBQSwweDJBLDB4MEIsMHgyNSwKKyAgICAweDJBLDB4ODMsMHhDOSwweDdBLDB4NUUsMHhGQyww
eEVFLDB4RTIsMHgyQSwweDgzLDB4RTksMHg3QSwweDc2LDB4RDUsMHhDRCwweEFELAorICAgIDB4
MEEsMHg4MywweEVBLDB4N0EsMHhFQSwweDAyLDB4MzIsMHg1RiwweDI5LDB4ODMsMHhFQSwweDdB
LDB4RDgsMHhFQywweDgyLDB4MDMsCisgICAgMHg0QiwweDhCLDB4QTgsMHg3MiwweEEwLDB4ODAs
MHhBMiwweEZFLDB4NEIsMHg4QiwweEM5LDB4NzIsMHgyQiwweDNFLDB4M0YsMHhGRCwKKyAgICAw
eDRBLDB4OEIsMHgwQSwweDgzLDB4RkMsMHhFRSwweEQ1LDB4REQsMHg4QiwweDkzLDB4RTksMHg3
QSwweDJCLDB4QUIsMHhGRiwweDdELAorICAgIDB4MEQsMHhBNCwweDJBLDB4ODMsMHgwQSwweEJE
LDB4RjUsMHg1NSwweDRFLDB4QUMsMHgyQSwweDhCLDB4MDIsMHhBQiwweEJGLDB4RjUsCisgICAg
MHg4RiwweEFDLDB4QUMsMHg5MywweDAwLDB4OEEsMHhBOSwweEI1LDB4OEYsMHhBQywweDRFLDB4
QUMsMHhBNSwweEY1LDB4RkYsMHg1NSwKKyAgICAweDhFLDB4QjQsMHg0RSwweEFDLDB4QUMsMHg4
QiwweEIyLDB4RkYsMHg4RSwweEI0LDB4NEQsMHhBNCwweEJGLDB4MUQsMHgwNywweEFFLAorICAg
IDB4QUYsMHhCNCwweDZFLDB4QUMsMHg5QSwweDJBLDB4MkIsMHgwMiwweENGLDB4QkMsMHg2RSww
eEFDLDB4RkUsMHhGRiwweDlGLDB4RjcsCisgICAgMHhBRiwweEI0LDB4OEYsMHhBQywweDFCLDB4
MkUsMHhFMCwweEMwLDB4Q0YsMHhCNCwweDhGLDB4QjQsMHhDQSwweEMwLDB4QUIsMHhGMiwKKyAg
ICAweDIzLDB4NDksMHhDMiwweDM4LDB4QUEsMHhGRSwweERELDB4QkYsMHgyMywweDQxLDB4RTIs
MHg0MCwweDdCLDB4N0YsMHg5RCwweEE3LAorICAgIDB4MDMsMHg0MSwweEUyLDB4MzgsMHg5NSww
eDkyLDB4RUEsMHhBMywweDIzLDB4NDEsMHhFMiwweDM4LDB4REEsMHg3RiwweDVBLDB4NzgsCisg
ICAgMHgwMiwweDQxLDB4QTIsMHgzMCwweEFFLDB4QUEsMHgyRCwweEFFLDB4MDMsMHg0MSwweEEx
LDB4MzAsMHgwQSwweEFDLDB4REEsMHhGQSwKKyAgICAweDAzLDB4NDEsMHhBMSwweDMwLDB4QjAs
MHhBMiwweEFGLDB4QUYsMHgwMywweDQxLDB4QTEsMHgzMCwweEVGLDB4RkUsMHhCQSwweDA4LAor
ICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhBQiwweEVGLDB4QUYsMHgzNywweDAzLDB4NDEsMHhB
MiwweDM4LDB4NDgsMHhCQSwweDJCLDB4MjAsCisgICAgMHgwMywweDQxLDB4RTIsMHgzOCwweEIz
LDB4NUEsMHg3NiwweEFFLDB4MDMsMHg0MSwweEMyLDB4MzgsMHhCMCwweEI4LDB4NkUsMHg3RSwK
KyAgICAweDAzLDB4NDEsMHhFMiwweDM4LDB4NjIsMHhDQiwweDg1LDB4QUQsMHgyNCwweDQxLDB4
QzIsMHgzOCwweEQ3LDB4RDYsMHg3RiwweEZCLAorICAgIDB4RTIsMHgzOCwweEMyLDB4MzgsMHhG
QywweDE2LDB4MTUsMHgyQiwweDIzLDB4NDEsMHhDMiwweDM4LDB4RkYsMHg4QiwweEJFLDB4NUYs
CisgICAgMHgwMywweDQxLDB4QTEsMHgzMCwweEUyLDB4QUIsMHhERSwweEFGLDB4MDMsMHg0MSww
eEUyLDB4MzgsMHhDMywweDYzLDB4NTAsMHhEQywKKyAgICAweDAyLDB4NDEsMHhFMiwweDM4LDB4
NUYsMHg3RCwweDM4LDB4QjksMHgwMywweDQxLDB4QzIsMHgzOCwweEIzLDB4REIsMHg5QSwweEFB
LAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhGMCwweEMyLDB4RUUsMHhERSwweDAzLDB4NDEs
MHhDMiwweDM4LDB4NTUsMHhFRCwweDJGLDB4QUYsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCww
eEYzLDB4RTMsMHhFQSwweEZBLDB4NjcsMHg3MiwweDAyLDB4NDEsMHgyRCwweDJELDB4MkQsMHgy
RCwKKyAgICAweDg3LDB4NzIsMHgwNSwweDYyLDB4QTgsMHhFMCwweDc4LDB4RkEsMHg0NiwweDcy
LDB4RTUsMHg2MSwweERGLDB4QjYsMHhGRiwweEZDLAorICAgIDB4MDUsMHg2MiwweDQzLDB4NDks
MHhFMCwweEUwLDB4NjAsMHhFMCwweDYzLDB4NDEsMHhFMiwweDM4LDB4N0YsMHg1RiwweDVFLDB4
REMsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDJBLDB4MkEsMHg4QSwweDI3LDB4MDMsMHgz
OSwweEUzLDB4MzAsMHg3QiwweEUyLDB4QkMsMHhBRSwKKyAgICAweDAzLDB4MzksMHhFMywweDMw
LDB4MUUsMHg2RSwweDczLDB4NTgsMHgyMywweDM5LDB4RTIsMHgzMCwweEMwLDB4Q0IsMHhFMyww
eEZBLAorICAgIDB4MjMsMHgzOSwweEUyLDB4MzAsMHg2QiwweEFBLDB4M0QsMHg5NSwweDIzLDB4
MzksMHhFMywweDM4LDB4RDcsMHhENywweEZDLDB4RDUsCisgICAgMHgyMywweDM5LDB4RTIsMHgz
MCwweDgyLDB4RUEsMHhBRSwweDdCLDB4NDQsMHg0MSwweEUzLDB4MzAsMHhBQiwweEFFLDB4RTcs
MHhGQiwKKyAgICAweDIzLDB4MzksMHgwMywweDM5LDB4MDEsMHg0MiwweEMyLDB4NjYsMHg0NCww
eDQxLDB4MDMsMHgzOSwweEZBLDB4QUIsMHhFQiwweEQ1LAorICAgIDB4NDQsMHg0MSwweDAzLDB4
MzksMHgyNywweDBGLDB4QUIsMHhBQiwweDQ0LDB4NDEsMHhFMywweDMwLDB4ODAsMHgyOCwweDM2
LDB4RUUsCisgICAgMHg0NCwweDQxLDB4MDMsMHgzOSwweEE4LDB4RTIsMHg3QSwweEFBLDB4NDQs
MHg0MSwweEUyLDB4MzAsMHhGRSwweEZGLDB4NkIsMHg2MiwKKyAgICAweEUzLDB4MzgsMHgwMyww
eDMxLDB4RkYsMHgyQSwweEFBLDB4OUUsMHgwMywweDM5LDB4RTMsMHgzMCwweEZGLDB4MjMsMHhB
RiwweDdFLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHgwQSwweDBFLDB4MDMsMHgyQiwweDQ0
LDB4NDEsMHhFMiwweDMwLDB4QUIsMHgyRiwweEZELDB4RTUsCisgICAgMHgyNCwweDM5LDB4RTMs
MHgzOCwweDhGLDB4OEIsMHgwRiwweEZELDB4NDQsMHg0MSwweDA0LDB4MzksMHhGRiwweEU2LDB4
NUEsMHg1OCwKKyAgICAweDQ0LDB4NDEsMHhFMywweDMwLDB4RkYsMHg3RiwweEZBLDB4QUIsMHgy
NCwweDQxLDB4RTMsMHgzOCwweEJGLDB4QjYsMHhGOCwweEY4LAorICAgIDB4MDMsMHgzOSwweEMy
LDB4MzAsMHhFMCwweENBLDB4QUEsMHhBMCwweDIzLDB4MzksMHhDMiwweDMwLDB4MkIsMHgyRiww
eEZGLDB4N0YsCisgICAgMHgyMywweDM5LDB4QzIsMHgyOCwweEJBLDB4M0UsMHhGNywweDk1LDB4
MDMsMHgzMSwweEUzLDB4MzAsMHg4MCwweDc4LDB4REYsMHg3NSwKKyAgICAweDI0LDB4MzksMHhF
MywweDMwLDB4N0EsMHg3QiwweEZELDB4NjUsMHgwMywweDMxLDB4QzMsMHgyOCwweEJBLDB4QUYs
MHhCRSwweEIyLAorICAgIDB4MjQsMHgzOSwweEMyLDB4MjgsMHg3RiwweEZGLDB4RUYsMHhBRSww
eDAzLDB4MzEsMHhDMiwweDI4LDB4RkYsMHhFOSwweENELDB4Q0EsCisgICAgMHgwNCwweDMxLDB4
QzIsMHgyOCwweDJBLDB4RUYsMHhFNSwweEVFLDB4MDQsMHgzMSwweEMzLDB4MjgsMHg2OCwweDYz
LDB4NjksMHhGRCwKKyAgICAweEUzLDB4MzAsMHhDMywweDI4LDB4REEsMHg3RCwweDU5LDB4NTcs
MHgwMywweDMxLDB4QzMsMHgyOCwweDc1LDB4REQsMHhGRCwweEFELAorICAgIDB4RTMsMHgzMCww
eEEyLDB4MjgsMHhGNiwweEY3LDB4MEEsMHgwQSwweEUzLDB4MzAsMHhBMiwweDI4LDB4RUYsMHhG
RiwweEZBLDB4QjgsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDY3LDB4RkQsMHhEQywweDM4
LDB4QzMsMHgyOCwweEEyLDB4MjgsMHg1MSwweDZCLDB4N0EsMHhDMywKKyAgICAweEMzLDB4Mjgs
MHg4MiwweDIwLDB4N0UsMHhGRiwweEJGLDB4QUYsMHhBMiwweDI4LDB4ODIsMHgyMCwweDI2LDB4
MjYsMHgzOCwweEE4LAorICAgIDB4QTIsMHgyMCwweDYxLDB4MjAsMHhGRSwweEZBLDB4REEsMHhB
QSwweEEyLDB4MjgsMHg2MSwweDE4LDB4MzgsMHhCRiwweDlGLDB4RkEsCisgICAgMHhDMiwweDI4
LDB4ODEsMHgyMCwweEI4LDB4MzcsMHhERiwweERFLDB4MDMsMHgzMSwweEMyLDB4MjgsMHhBRCww
eEU5LDB4QUQsMHg3RCwKKyAgICAweDIzLDB4MzksMHhDMiwweDI4LDB4QkYsMHhCRCwweEFGLDB4
QUYsMHg0NCwweDQxLDB4QTIsMHgzMCwweEZDLDB4N0UsMHg3RiwweEZFLAorICAgIDB4RTIsMHgz
MCwweDgyLDB4MzAsMHgyMiwweDBBLDB4QUIsMHgyMiwweEMyLDB4MzAsMHhDMiwweDI4LDB4MDgs
MHgwMCwweEEwLDB4MkEsCisgICAgMHgwMywweDM5LDB4QTIsMHgzMCwweEVGLDB4RkQsMHhCQiww
eDJCLDB4RTIsMHgzMCwweEExLDB4MzAsMHg3RiwweEFCLDB4MDAsMHhBMCwKKyAgICAweEUyLDB4
MzAsMHhDMiwweDMwLDB4MUIsMHgyRiwweDFCLDB4RDcsMHgwMywweDM5LDB4QzIsMHgzMCwweDdG
LDB4RjMsMHhBQiwweDJELAorICAgIDB4MDIsMHgzOSwweEEyLDB4MzAsMHhGRiwweERBLDB4RTAs
MHhBMCwweDAzLDB4MzksMHhDMiwweDMwLDB4N0YsMHg2RSwweEVCLDB4REQsCisgICAgMHgwMyww
eDM5LDB4QTIsMHgyOCwweEJGLDB4MUYsMHgzRiwweEFGLDB4MDMsMHgzOSwweEMyLDB4MjgsMHhG
RSwweEZCLDB4RjQsMHg1RiwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4QkEsMHhGMiwweEQ3
LDB4QjUsMHgwMywweDMxLDB4QTEsMHgyOCwweEZFLDB4N0MsMHhFQiwweEVBLAorICAgIDB4MDMs
MHgzMSwweEExLDB4MjgsMHhBOSwweEJGLDB4MkYsMHhBQSwweDQ0LDB4NDEsMHhFMiwweDMwLDB4
QUIsMHgwRCwweDJELDB4QUQsCisgICAgMHg0NCwweDQxLDB4MDMsMHgzOSwweDVFLDB4NUMsMHg3
OCwweDNFLDB4ODUsMHg0OSwweDAzLDB4MzksMHg1RCwweEVELDB4QTcsMHg4RSwKKyAgICAweDQ0
LDB4NDEsMHhFMiwweDMwLDB4NTUsMHg1RiwweDc4LDB4RTgsMHg0NCwweDQxLDB4RTMsMHgzMCww
eDU3LDB4RkYsMHhFQiwweDBCLAorICAgIDB4MjMsMHgzOSwweEUzLDB4MzAsMHhENSwweEU3LDB4
QTMsMHg4OCwweDQzLDB4NDEsMHgwMywweDM5LDB4RkUsMHhBQiwweEFGLDB4RTcsCisgICAgMHg0
MywweDQxLDB4MDMsMHgzOSwweEEyLDB4MDIsMHgwQiwweDBELDB4NjQsMHg0OSwweDAyLDB4Mzks
MHhENywweDk3LDB4QTMsMHhFRiwKKyAgICAweEM1LDB4NTEsMHgyMywweDQxLDB4RDUsMHhBRiww
eDJGLDB4MkIsMHgwNiwweDVBLDB4NjQsMHg1MSwweEI1LDB4OEYsMHhBRSwweDAzLAorICAgIDB4
NjcsMHg2QSwweDA2LDB4NUEsMHhCNSwweEJGLDB4RkIsMHhCRCwweDY3LDB4NkEsMHgyNywweDYy
LDB4MjgsMHgwOCwweDg4LDB4MkYsCisgICAgMHhBOSwweDZBLDB4NDcsMHg2QSwweEZBLDB4QjYs
MHgzRiwweEFGLDB4QzksMHg3MiwweDY3LDB4NkEsMHg4RCwweEI3LDB4RUUsMHg4QiwKKyAgICAw
eEM5LDB4N0EsMHg2OCwweDZBLDB4MUYsMHhFQiwweDhBLDB4MkUsMHhDOSwweDcyLDB4NjgsMHg3
MiwweEVBLDB4QUYsMHg0QSwweEFBLAorICAgIDB4RUEsMHg3QSwweDY4LDB4NzIsMHgyQSwweDAy
LDB4MkIsMHhENywweEU5LDB4N0EsMHhBOSwweDdBLDB4QjcsMHhGRCwweEVELDB4MjksCisgICAg
MHgwQSwweDdCLDB4ODgsMHg3MiwweERGLDB4NUYsMHhGRSwweEE4LDB4MkEsMHg4MywweEE4LDB4
NzIsMHhGRiwweDM1LDB4REQsMHhGRiwKKyAgICAweDBBLDB4ODMsMHhBOSwweDcyLDB4MkEsMHgy
QSwweEFCLDB4REUsMHgwQSwweDgzLDB4QzksMHg3QSwweEI3LDB4QjAsMHg4MCwweDhELAorICAg
IDB4MkIsMHg4MywweEM5LDB4N0EsMHg3RSwweDZELDB4NUMsMHhGQiwweDBBLDB4ODMsMHhBOSww
eDcyLDB4QUIsMHhEQiwweERFLDB4MkEsCisgICAgMHgwQSwweDgzLDB4QTgsMHg3QSwweDRBLDB4
RjksMHhCRiwweEY4LDB4MDksMHg3QiwweEE5LDB4N0EsMHg4MiwweEFBLDB4MkEsMHg5RSwKKyAg
ICAweDJBLDB4ODMsMHhDOSwweDdBLDB4NUYsMHhBOCwweEEyLDB4QUIsMHgyQSwweDgzLDB4Qzks
MHg3QSwweDc1LDB4RDcsMHhBQSwweEFDLAorICAgIDB4MkIsMHg4MywweEU5LDB4N0EsMHg5Qiww
eEE2LDB4RkYsMHgyMiwweDJBLDB4ODMsMHhDOSwweDdBLDB4RTgsMHhFRSwweDdBLDB4NjIsCisg
ICAgMHgwQSwweDgzLDB4QzksMHg3QSwweDA4LDB4RTIsMHgwRCwweEFGLDB4NEIsMHg4QiwweEM5
LDB4N0EsMHgwMiwweERELDB4N0UsMHg3NiwKKyAgICAweEFDLDB4OUIsMHgwQSwweDdCLDB4MkEs
MHhCRCwweDc1LDB4RDUsMHgyRCwweEE0LDB4MEEsMHg4MywweDAyLDB4QUYsMHhGRiwweDVELAor
ICAgIDB4NkUsMHhBQywweDRCLDB4OEIsMHgwMiwweDBBLDB4QkQsMHhGNSwweDhFLDB4QUMsMHhB
QywweDkzLDB4MjAsMHgwMCwweEFBLDB4RkQsCisgICAgMHg4RiwweEI0LDB4MkQsMHhBNCwweEE4
LDB4MkEsMHgyQiwweDA5LDB4QUYsMHhCNCwweDZFLDB4QUMsMHhGNywweEJBLDB4QjgsMHhBQiwK
KyAgICAweEYwLDB4QjQsMHg4RiwweEI0LDB4REIsMHhGNywweEQ3LDB4RkQsMHhBRiwweEI0LDB4
OEYsMHhCNCwweDIwLDB4ODgsMHgwRSwweDAyLAorICAgIDB4NDQsMHg0MSwweEUyLDB4NDAsMHhG
RCwweEJELDB4RjcsMHhERiwweDIzLDB4NDksMHhDMiwweDM4LDB4QUIsMHhBNywweEVBLDB4OEEs
CisgICAgMHg0MywweDQ5LDB4QzIsMHgzOCwweEZCLDB4RjcsMHg5RSwweEUzLDB4MDMsMHg0MSww
eEMyLDB4MzgsMHg3OCwweDZBLDB4Q0EsMHhDQywKKyAgICAweDIyLDB4MzksMHhDMiwweDM4LDB4
REYsMHg3OSwweEZGLDB4RDcsMHhFMiwweDM4LDB4QzIsMHgzOCwweDFGLDB4QUYsMHgzNiwweEIw
LAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhDQiwweDk2LDB4NTIsMHg3RiwweDAzLDB4NDEs
MHhDMiwweDM4LDB4MEYsMHgyRSwweEVBLDB4RUUsCisgICAgMHgwMywweDQxLDB4QTEsMHgzMCww
eDM2LDB4QkUsMHhBQiwweEEyLDB4MDIsMHg0MSwweEMyLDB4MzgsMHgzOCwweEY4LDB4RUIsMHhF
QSwKKyAgICAweDIyLDB4MzksMHhDMiwweDM4LDB4RjcsMHhGNiwweEZDLDB4RkEsMHgwMiwweDM5
LDB4QzIsMHgzOCwweDk2LDB4REUsMHhENCwweEJFLAorICAgIDB4MDIsMHg0MSwweEMyLDB4Mzgs
MHhBNiwweDI1LDB4OEEsMHhBQSwweDAzLDB4NDEsMHhDMiwweDM4LDB4QTcsMHhCNywweEY3LDB4
QkYsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEEyLDB4NjAsMHg2RSwweEZBLDB4MDMsMHg0
MSwweEExLDB4MzAsMHg5RSwweEZCLDB4RTIsMHhFQSwKKyAgICAweDAzLDB4MzksMHhDMiwweDM4
LDB4REIsMHgyNywweDAzLDB4QkYsMHgyMywweDM5LDB4QzIsMHgzOCwweEZFLDB4NUYsMHhGNyww
eEZELAorICAgIDB4MDMsMHg0MSwweEUyLDB4MzgsMHg5QSwweEI1LDB4QTksMHg0NywweDAzLDB4
NDEsMHhDMiwweDM4LDB4Q0YsMHhFRiwweDhBLDB4OEYsCisgICAgMHhFMiwweDM4LDB4QzIsMHgz
MCwweDg4LDB4MkUsMHgxQSwweDJFLDB4MDMsMHg0MSwweEMyLDB4MzgsMHgyRiwweEI1LDB4REUs
MHhFRiwKKyAgICAweEUyLDB4NDAsMHhBMiwweDM4LDB4MDAsMHhCOCwweEZBLDB4QkUsMHg2Niww
eDcyLDB4MjMsMHg0OSwweDJELDB4MkQsMHgyRCwweDJELAorICAgIDB4NjYsMHg3MiwweDA1LDB4
NjIsMHhGMCwweDQyLDB4NEEsMHhFOCwweDI2LDB4NkEsMHgwNiwweDYyLDB4NTQsMHg1RSwweEZF
LDB4ODAsCisgICAgMHg0NiwweDZBLDB4ODQsMHg1MSwweEZFLDB4NTgsMHhGQSwweEZBLDB4NjQs
MHg0OSwweEUyLDB4MzgsMHhERSwweDVBLDB4N0UsMHg1OCwKKyAgICAweDAzLDB4MzksMHhDMiww
eDMwLDB4MDMsMHgwMiwweEI4LDB4RDgsMHgyMywweDM5LDB4QzIsMHgzMCwweEJGLDB4RjgsMHg3
QywweDVBLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHg1QSwweDVGLDB4NTUsMHhENSwweDAz
LDB4MzksMHhDMiwweDMwLDB4RUQsMHhBRiwweEVCLDB4RUIsCisgICAgMHgyNCwweDM5LDB4QzIs
MHgzMCwweDM2LDB4QkYsMHhGQiwweEJGLDB4MDMsMHgzOSwweEUyLDB4MzAsMHhFRiwweEYwLDB4
QkQsMHg5NywKKyAgICAweDAzLDB4MzksMHhBMSwweDI4LDB4QTIsMHhBQSwweEJDLDB4NzgsMHgy
MywweDM5LDB4QzIsMHgzMCwweEUyLDB4QTIsMHhGRiwweDZELAorICAgIDB4MDMsMHgzOSwweEMy
LDB4MzAsMHhBQSwweDIyLDB4MkEsMHhGRCwweDIzLDB4MzksMHhDMiwweDMwLDB4OEEsMHgwMCww
eDJBLDB4MkIsCisgICAgMHg0NCwweDQxLDB4MDMsMHgzOSwweEEyLDB4RUQsMHg3RSwweEIzLDB4
MjQsMHgzOSwweEUyLDB4MzgsMHhGMiwweDIyLDB4QjAsMHg4OCwKKyAgICAweDQ0LDB4NDEsMHhF
MywweDM4LDB4QTAsMHhBMCwweEJCLDB4RjYsMHg0NCwweDQxLDB4RTMsMHgzOCwweDZBLDB4NkEs
MHgyQSwweEJCLAorICAgIDB4MjMsMHgzOSwweEUzLDB4MzgsMHhGNSwweEU1LDB4N0YsMHhBMiww
eDAzLDB4MzksMHhDMiwweDMwLDB4MEUsMHgyQSwweDgwLDB4NkEsCisgICAgMHgyNCwweDM5LDB4
QzIsMHgzMCwweDJELDB4MkUsMHhBRiwweDNGLDB4NDQsMHg0MSwweEUzLDB4MzAsMHhFNywweEZG
LDB4RkQsMHhBNSwKKyAgICAweDI0LDB4MzksMHhDMiwweDMwLDB4RkYsMHg3RiwweEZGLDB4QUEs
MHgwMywweDM5LDB4RTMsMHgzMCwweDAzLDB4MDksMHg4MSwweDBCLAorICAgIDB4NDQsMHg0MSww
eEMyLDB4MzAsMHgwQSwweEFGLDB4RkUsMHg3RiwweDQ0LDB4NDEsMHgwNCwweDM5LDB4NUEsMHgz
MiwweENGLDB4QUYsCisgICAgMHg0NCwweDQxLDB4RTMsMHgzOCwweDU2LDB4N0UsMHhFOCwweEVF
LDB4MjMsMHgzOSwweEUzLDB4MzAsMHg3RiwweEQ3LDB4RkQsMHhBQSwKKyAgICAweDAzLDB4Mzks
MHhDMiwweDI4LDB4MkIsMHgwOCwweDcwLDB4QTAsMHgyMywweDM5LDB4RTMsMHgzMCwweDVGLDB4
N0UsMHg2QywweEFELAorICAgIDB4MDMsMHgzMSwweEMzLDB4MzAsMHhCQiwweDNFLDB4MjIsMHhB
MCwweDIzLDB4MzksMHhFMywweDMwLDB4QkYsMHgzRiwweERGLDB4QUYsCisgICAgMHgyNCwweDM5
LDB4MDMsMHgzMSwweDU1LDB4NUMsMHhGRSwweDhCLDB4MjMsMHgzMSwweEUzLDB4MzAsMHg2Nyww
eENELDB4RUIsMHhFMCwKKyAgICAweDA0LDB4MzEsMHhFMywweDMwLDB4N0QsMHhCNywweDI4LDB4
RDYsMHgwMywweDMxLDB4QzIsMHgyOCwweDVBLDB4RjgsMHhFQywweEFFLAorICAgIDB4RTMsMHgz
MCwweEMyLDB4MjgsMHg1NywweDU2LDB4NUEsMHgwQSwweEUzLDB4MzAsMHhDMiwweDI4LDB4QUYs
MHgwRCwweEVELDB4MjgsCisgICAgMHgwMywweDMxLDB4QzIsMHgyOCwweDk3LDB4REMsMHhFRiww
eEZBLDB4RTMsMHgzMCwweEMyLDB4MzAsMHhGMCwweDcyLDB4QUEsMHhFMywKKyAgICAweEUzLDB4
MzAsMHhDMiwweDI4LDB4QjQsMHg2NywweEZGLDB4MkIsMHhFMywweDMwLDB4QTIsMHgyOCwweEZG
LDB4RkIsMHhFQiwweEU4LAorICAgIDB4RTIsMHgyOCwweEEyLDB4MjAsMHhGNywweEVCLDB4RUEs
MHhBQSwweDgyLDB4MjgsMHhBMiwweDIwLDB4REYsMHhGRCwweEZELDB4NUYsCisgICAgMHhDMiww
eDI4LDB4QTIsMHgyMCwweDVELDB4QTUsMHhENSwweDVDLDB4QzIsMHgyOCwweDgxLDB4MjAsMHg2
RSwweEYyLDB4NjgsMHhBNywKKyAgICAweEMyLDB4MjgsMHg4MSwweDIwLDB4REYsMHhENywweDdF
LDB4ODAsMHhDMiwweDI4LDB4ODEsMHgyMCwweDIzLDB4QkYsMHg1RiwweDdGLAorICAgIDB4MDMs
MHgzOSwweDgxLDB4MjAsMHgwQSwweDIyLDB4QUQsMHhCNSwweDI0LDB4MzksMHhDMiwweDMwLDB4
RUMsMHhBQSwweDJGLDB4QkQsCisgICAgMHgyNCwweDM5LDB4QzIsMHgzMCwweDVELDB4NzUsMHhF
RSwweDY4LDB4RTIsMHgzMCwweDgyLDB4MjgsMHg3RiwweEZFLDB4QUEsMHgwMCwKKyAgICAweEUz
LDB4MzgsMHhDMiwweDI4LDB4MkIsMHhBOSwweDBCLDB4QUIsMHgwMywweDM5LDB4RTIsMHgzMCww
eDlFLDB4QUUsMHhCRiwweDVELAorICAgIDB4RTIsMHgzMCwweEMyLDB4MzAsMHg1NywweEZELDB4
QUYsMHg5QSwweDAyLDB4MzksMHhDMiwweDMwLDB4M0QsMHhBRCwweEEzLDB4QkYsCisgICAgMHgw
MywweDM5LDB4QzIsMHgzMCwweEZBLDB4NUUsMHhFRiwweEFFLDB4RTMsMHgzMCwweEMyLDB4MzAs
MHg1NywweDlGLDB4RDUsMHg1NywKKyAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4RkYsMHg3Nyww
eDVELDB4QjUsMHgwMywweDMxLDB4QTIsMHgyOCwweEYyLDB4N0EsMHhGMiwweEY4LAorICAgIDB4
RTMsMHgzMCwweEEyLDB4MjgsMHg5RiwweEI1LDB4MEYsMHg4QSwweDAzLDB4MzEsMHhDMiwweDMw
LDB4ODMsMHhBQSwweDgyLDB4MEIsCisgICAgMHgwMywweDM5LDB4RTIsMHgzMCwweDVDLDB4OTks
MHhCNiwweEQ3LDB4MjMsMHgzOSwweEUyLDB4MzAsMHhCNSwweEY3LDB4ODcsMHhBQiwKKyAgICAw
eDQzLDB4MzksMHhFMiwweDMwLDB4MkEsMHhCRSwweEJFLDB4RkEsMHg2NCwweDQxLDB4MDMsMHgz
OSwweDgwLDB4RkIsMHg3RiwweDdCLAorICAgIDB4NDQsMHg0MSwweEUyLDB4MzAsMHhFOCwweEFF
LDB4RkUsMHhGRiwweDQ0LDB4MzksMHhFMiwweDMwLDB4OEYsMHhGRSwweDI5LDB4QjcsCisgICAg
MHgyMywweDM5LDB4QzIsMHgzMCwweDAwLDB4ODgsMHg3MCwweEFBLDB4MjMsMHgzOSwweEUyLDB4
MzAsMHhFNywweEQ0LDB4QTYsMHgwRSwKKyAgICAweDY0LDB4NDEsMHgwMywweDM5LDB4RjEsMHg3
QiwweDc1LDB4NTUsMHg2NCwweDQ5LDB4RTIsMHgzOCwweDJELDB4QUYsMHhBOSwweDJGLAorICAg
IDB4RTYsMHg1OSwweDY0LDB4NDksMHhBOSwweEFELDB4Q0YsMHgyOSwweDI2LDB4NjIsMHhDNSww
eDUxLDB4RDksMHhGOSwweEUyLDB4RkEsCisgICAgMHg0NywweDYyLDB4RTYsMHg1OSwweDNGLDB4
QjcsMHg5NywweEI1LDB4NjgsMHg2QSwweEU2LDB4NTksMHgyMiwweDAzLDB4QjcsMHhBRSwKKyAg
ICAweEE5LDB4NzIsMHg0NywweDZBLDB4QjUsMHg5RiwweEJGLDB4MkQsMHhDOSwweDcyLDB4Njgs
MHg2QSwweEFBLDB4RkEsMHhFQSwweDZCLAorICAgIDB4QzksMHg3MiwweDg4LDB4NkEsMHhCNSww
eERBLDB4QkEsMHg0RSwweEM5LDB4N0EsMHg4OCwweDZBLDB4RUUsMHhFQiwweDBGLDB4MzUsCisg
ICAgMHhDOSwweDdBLDB4ODgsMHg3MiwweEQ3LDB4RUQsMHhFMiwweDMwLDB4RUEsMHg4MiwweDg4
LDB4NzIsMHgyRCwweEE3LDB4QjcsMHhGNywKKyAgICAweDBBLDB4ODMsMHhBOSwweDcyLDB4MEEs
MHhBRiwweEI3LDB4RkQsMHhFOSwweDdBLDB4QTksMHg3MiwweEYyLDB4NDAsMHg2QSwweEZELAor
ICAgIDB4QzksMHg3QSwweDg4LDB4NzIsMHgzOCwweDNBLDB4OEIsMHhDMywweDBBLDB4ODMsMHhD
OSwweDdBLDB4QTcsMHhFNywweDY2LDB4RDUsCisgICAgMHhFQSwweDgyLDB4ODgsMHg3MiwweDA4
LDB4QUEsMHg1RSwweEFCLDB4MkIsMHg4QiwweEM5LDB4N0EsMHhCRiwweEFGLDB4MzUsMHgyRCwK
KyAgICAweDJBLDB4ODMsMHhFQSwweDdBLDB4NTgsMHg1RSwweDU4LDB4NTcsMHgwQSwweDgzLDB4
QzksMHg3QSwweDU1LDB4NUIsMHg5MCwweEYwLAorICAgIDB4MEEsMHg4MywweEE5LDB4NzIsMHgw
MiwweEJFLDB4MzcsMHhCNSwweDJCLDB4ODMsMHhDOSwweDdBLDB4QTIsMHhBOCwweEUyLDB4NUUs
CisgICAgMHgwQSwweDgzLDB4RUEsMHg3QSwweEMzLDB4NTcsMHg1NywweDdFLDB4MkIsMHg4Myww
eEVBLDB4ODIsMHg4MywweDNELDB4MDksMHhFQiwKKyAgICAweDJBLDB4ODMsMHhDOSwweDdBLDB4
N0IsMHhGQSwweEZDLDB4NkEsMHgwQSwweDgzLDB4QzksMHg3QSwweEZDLDB4Q0EsMHhBQSwweEU4
LAorICAgIDB4MkEsMHg4MywweEVBLDB4N0EsMHg5RCwweEI1LDB4NUYsMHg1RiwweDJBLDB4ODMs
MHhFQSwweDdBLDB4QUEsMHhCNywweDY5LDB4N0YsCisgICAgMHg2QiwweDhCLDB4RTksMHg3QSww
eDBCLDB4MkYsMHhGNSwweDVGLDB4QUMsMHg5MywweEU5LDB4N0EsMHgwMCwweDJBLDB4QUQsMHg1
NSwKKyAgICAweDRFLDB4QUMsMHg0QiwweDhCLDB4MEEsMHhBQiwweEZELDB4NTUsMHg2RSwweEFD
LDB4OEMsMHg5MywweDAwLDB4MEEsMHgyRiwweEQ1LAorICAgIDB4OEYsMHhCNCwweEVELDB4OUIs
MHgwMCwweDAwLDB4MDIsMHhCRCwweEYwLDB4QkMsMHg2RiwweEFDLDB4QUEsMHg4QiwweEVCLDB4
RkQsCisgICAgMHgyMywweDQxLDB4RTIsMHg0MCwweEZELDB4REIsMHgwQiwweDgwLDB4MjMsMHg0
OSwweEUyLDB4NDAsMHhBMiwweDVFLDB4NTgsMHg1MCwKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4
LDB4MDAsMHhBMiwweEVFLDB4MEEsMHgwMywweDQxLDB4QTEsMHgzMCwweEY4LDB4NjIsMHhBMCww
eEIwLAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHg5NSwweDJELDB4RUIsMHhGRSwweDIzLDB4
NDEsMHhFMiwweDM4LDB4RDcsMHhGNSwweDY1LDB4QkIsCisgICAgMHgwMywweDQxLDB4RTIsMHgz
OCwweEQ3LDB4MzUsMHgxQiwweEMxLDB4MjMsMHg0MSwweEUyLDB4MzgsMHg3NywweDZBLDB4RUYs
MHg2RiwKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4QTMsMHhCRiwweEZCLDB4N0EsMHgwMiww
eDM5LDB4QzIsMHgzOCwweEFBLDB4QkEsMHgyMCwweEJELAorICAgIDB4MDMsMHg0MSwweEMyLDB4
MzgsMHg3OCwweEQ0LDB4N0UsMHhGRSwweEUyLDB4MzgsMHhDMiwweDM4LDB4M0UsMHhCRCwweDMz
LDB4NkUsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEFBLDB4QTIsMHg4MiwweEJELDB4RTIs
MHgzOCwweEMyLDB4MzgsMHhDQSwweEMwLDB4MDAsMHgwMiwKKyAgICAweDIzLDB4NDEsMHhDMiww
eDM4LDB4RkYsMHhGQiwweDVGLDB4NzUsMHgwMiwweDM5LDB4QzIsMHgzOCwweDU1LDB4RjcsMHhC
RiwweDhGLAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhGNCwweDdDLDB4N0IsMHhBMiwweDIz
LDB4MzksMHhDMiwweDM4LDB4QjUsMHhGNSwweEZGLDB4RkYsCisgICAgMHhFMiwweDM4LDB4QTEs
MHgzMCwweDIwLDB4MDQsMHg4QSwweDI4LDB4MDMsMHgzOSwweEMyLDB4MzgsMHhGRiwweDJGLDB4
MEYsMHhDRCwKKyAgICAweDAyLDB4NDEsMHhFMywweDM4LDB4RDcsMHg1NSwweDVCLDB4NUQsMHgw
MywweDQxLDB4QTIsMHgzMCwweDhELDB4QUYsMHg3RSwweEVCLAorICAgIDB4RTMsMHg0MCwweEEy
LDB4MzgsMHhCRiwweEE4LDB4MjIsMHgwRCwweDY3LDB4NzIsMHgyMywweDQ5LDB4MkQsMHgyRCww
eDJELDB4MDksCisgICAgMHg2NiwweDcyLDB4MjYsMHg2QSwweDU1LDB4RTgsMHg4MCwweDEyLDB4
NjYsMHg3MiwweDA2LDB4NjIsMHhGQSwweERBLDB4QjgsMHhGQSwKKyAgICAweDQ2LDB4NkEsMHg2
NCwweDQ5LDB4RjgsMHg3QSwweDdFLDB4REEsMHg2NCwweDQ5LDB4RTIsMHgzOCwweDVDLDB4NzYs
MHg3RSwweDVGLAorICAgIDB4MjMsMHgzOSwweEUyLDB4MzAsMHhENSwweDk3LDB4RkEsMHg3Riww
eDIzLDB4MzksMHhBMiwweDMwLDB4QkEsMHhBOCwweEFFLDB4N0YsCisgICAgMHgwMywweDM5LDB4
RTMsMHgzMCwweDU3LDB4NjIsMHhBMiwweDBCLDB4MDMsMHgzMSwweEEyLDB4MzAsMHhBQiwweDJB
LDB4MDIsMHgyQSwKKyAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4RkUsMHhFNywweDk2LDB4RkUs
MHgyNCwweDM5LDB4RTMsMHgzMCwweEZCLDB4QkYsMHhCRCwweEZELAorICAgIDB4MDMsMHgzOSww
eEMyLDB4MzAsMHg3OCwweDY2LDB4RDQsMHhGRSwweDAzLDB4MzksMHhDMiwweDMwLDB4MjcsMHgy
QiwweDBGLDB4OEEsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweENBLDB4NkIsMHhBQSwweDgw
LDB4MDMsMHgzOSwweEMyLDB4MzAsMHgyOSwweEFGLDB4QkEsMHgyQSwKKyAgICAweDQ0LDB4NDEs
MHhFMiwweDMwLDB4OEIsMHhDNywweEQ1LDB4NTUsMHgyMywweDM5LDB4RTMsMHgzOCwweENCLDB4
RkUsMHhCQywweEZDLAorICAgIDB4MjMsMHgzOSwweEUzLDB4MzgsMHhGRSwweEE3LDB4RUIsMHhC
QSwweDAzLDB4MzksMHhFMywweDMwLDB4MDAsMHhBMiwweDIyLDB4MjAsCisgICAgMHgyNCwweDM5
LDB4RTMsMHgzOCwweDNBLDB4OEEsMHhEQSwweDU4LDB4NDQsMHg0MSwweEUzLDB4MzAsMHg3NCww
eDdGLDB4NUYsMHhGQiwKKyAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4MkYsMHhGRiwweEZGLDB4
RkUsMHgyNCwweDQxLDB4RTIsMHgzMCwweDI3LDB4RTEsMHhGRiwweEJGLAorICAgIDB4NDQsMHg0
MSwweDAzLDB4MzksMHg1MywweDdGLDB4RDUsMHhGNywweDQ0LDB4NDEsMHgwNCwweDM5LDB4NTUs
MHg1RiwweEU4LDB4QUEsCisgICAgMHgyNCwweDM5LDB4RTMsMHgzOCwweDZCLDB4ODIsMHhGOCww
eEJDLDB4MjMsMHgzOSwweEUzLDB4MzgsMHhBQiwweEY3LDB4QkYsMHg4RiwKKyAgICAweDIzLDB4
MzksMHhDMiwweDMwLDB4OEEsMHgzRSwweDI2LDB4QUEsMHgyMywweDM5LDB4RTMsMHgzOCwweEFB
LDB4QUEsMHhGRSwweDU2LAorICAgIDB4MjQsMHgzOSwweDAzLDB4MzksMHg1NSwweEJFLDB4M0Is
MHg5NSwweDI0LDB4MzksMHhFMiwweDMwLDB4QUEsMHgyMCwweDJDLDB4OUUsCisgICAgMHgyNCww
eDM5LDB4RTMsMHgzMCwweDVBLDB4RDgsMHhGRSwweEJGLDB4MjQsMHgzOSwweEUzLDB4MzAsMHhE
RiwweDdGLDB4REYsMHg2MCwKKyAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4MDIsMHgyQSwweEFB
LDB4RjcsMHgyNCwweDMxLDB4QzIsMHgzMCwweEI4LDB4QkEsMHhCRCwweEJGLAorICAgIDB4MjMs
MHgzOSwweEMyLDB4MjgsMHhGQiwweEJGLDB4QUEsMHhBMywweDIzLDB4MzEsMHhFMywweDMwLDB4
RDUsMHg3NSwweERFLDB4QkUsCisgICAgMHgwMywweDMxLDB4QzIsMHgyOCwweEJGLDB4QkYsMHhB
QiwweEFBLDB4MDMsMHgzMSwweEMyLDB4MjgsMHg5RSwweERGLDB4RTgsMHhBOCwKKyAgICAweDAz
LDB4MzEsMHhDMiwweDMwLDB4QUEsMHgyRCwweEVCLDB4RkEsMHgwNCwweDMxLDB4QTIsMHgyOCww
eEUyLDB4RUMsMHg2RiwweEVGLAorICAgIDB4RTMsMHgzMCwweEMyLDB4MjgsMHhBRiwweEJBLDB4
MkQsMHg5NSwweEUzLDB4MzAsMHhDMiwweDI4LDB4NkUsMHhENywweDc2LDB4RkMsCisgICAgMHhF
MiwweDMwLDB4QzIsMHgyOCwweDdGLDB4NjcsMHg3NywweDdELDB4RTMsMHgzMCwweEEyLDB4Mjgs
MHg4RiwweDgyLDB4RkIsMHg5RiwKKyAgICAweEUyLDB4MjgsMHg4MiwweDIwLDB4RkMsMHg3Riww
eEJGLDB4RUUsMHhDMiwweDI4LDB4ODIsMHgyMCwweEVGLDB4QkYsMHhBQSwweEEyLAorICAgIDB4
MDMsMHgyOSwweEEyLDB4MjgsMHhGOSwweEVGLDB4RkQsMHhERiwweEMyLDB4MjgsMHg4MSwweDIw
LDB4N0UsMHhGQywweEZGLDB4RUUsCisgICAgMHhBMiwweDI4LDB4ODEsMHgyMCwweDI3LDB4OTUs
MHhERiwweDdBLDB4RTMsMHgzMCwweDgxLDB4MjAsMHgwMiwweEFGLDB4RkYsMHg1RCwKKyAgICAw
eDI0LDB4MzksMHg4MSwweDIwLDB4OEEsMHhFQiwweEI5LDB4RjUsMHgwMywweDMxLDB4QTIsMHgy
OCwweEFCLDB4MkEsMHhBQSwweERCLAorICAgIDB4MjMsMHgzOSwweEUyLDB4MzAsMHhGNSwweDBF
LDB4QjIsMHhGQiwweDIzLDB4MzksMHhDMiwweDI4LDB4NUEsMHg2OCwweEVBLDB4QkEsCisgICAg
MHgwMywweDMxLDB4QTEsMHgzMCwweEJBLDB4ODIsMHg4MiwweEFBLDB4MDIsMHgzMSwweEMyLDB4
MjgsMHhCRCwweEJELDB4N0QsMHhGRSwKKyAgICAweDAyLDB4MzksMHhBMSwweDI4LDB4QUEsMHhB
OCwweEZBLDB4RTksMHgwMywweDM5LDB4QzIsMHgzMCwweEVGLDB4N0EsMHg1MiwweDVGLAorICAg
IDB4MDMsMHgzMSwweEMyLDB4MzAsMHgyRCwweDA3LDB4MEEsMHgwMiwweDI0LDB4MzksMHhDMiww
eDMwLDB4N0MsMHhCQSwweEFBLDB4RjIsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEVBLDB4
ODAsMHhGQSwweDk2LDB4MjQsMHgzOSwweEMyLDB4MjgsMHhBRiwweEE3LDB4QTcsMHgwRiwKKyAg
ICAweDAzLDB4MzksMHhFMywweDMwLDB4OUYsMHhCRSwweEI4LDB4NzAsMHgwMywweDM5LDB4RTMs
MHgzMCwweDAwLDB4MEEsMHgwMywweEJGLAorICAgIDB4NDQsMHg0MSwweDAzLDB4MzksMHg1Riww
eEJGLDB4MDgsMHgzOCwweDY1LDB4NDEsMHhFMywweDMwLDB4NkYsMHhGNiwweDVFLDB4NTQsCisg
ICAgMHgwMywweDMxLDB4QzIsMHgyOCwweEIwLDB4RUEsMHhGOCwweDU3LDB4MDMsMHgzMSwweEMy
LDB4MzAsMHhCRiwweEJGLDB4REYsMHhGOSwKKyAgICAweDIzLDB4MzksMHhDMiwweDI4LDB4MkUs
MHhBRSwweDRCLDB4NUYsMHgwMywweDMxLDB4QTIsMHgyOCwweDAwLDB4OEEsMHhBQiwweEE3LAor
ICAgIDB4NjQsMHg0MSwweEMyLDB4MzAsMHhCRiwweEJGLDB4QkQsMHgzRiwweDg1LDB4NDksMHhF
MiwweDM4LDB4QjksMHgyRiwweEEyLDB4MDIsCisgICAgMHgwNywweDYyLDB4ODUsMHg0OSwweEJE
LDB4QUYsMHhBQiwweEJCLDB4NDcsMHg2QSwweEU1LDB4NTksMHg1RiwweEZGLDB4QjcsMHhCRiwK
KyAgICAweDQ4LDB4NkEsMHhDNiwweDU5LDB4QkYsMHgyRiwweDI1LDB4MkYsMHg2OCwweDZBLDB4
MjcsMHg2MiwweDI5LDB4MEUsMHgyMiwweDAyLAorICAgIDB4QTksMHg3MiwweDQ3LDB4NjIsMHhB
NywweEVFLDB4QUEsMHhBQiwweEE4LDB4NzIsMHg2OCwweDZBLDB4RkYsMHgwRiwweEU3LDB4OUIs
CisgICAgMHhBOSwweDcyLDB4NjcsMHg2QSwweDhFLDB4QkIsMHg5QSwweDA4LDB4QTksMHg3Miww
eDg4LDB4NkEsMHgxNiwweDBFLDB4MkUsMHg0QSwKKyAgICAweEM5LDB4N0EsMHg4OCwweDZBLDB4
QTgsMHhCRSwweEVGLDB4RkQsMHhBOSwweDcyLDB4NjgsMHg2QSwweDhBLDB4QTAsMHg5RSwweDJB
LAorICAgIDB4RUEsMHg4MiwweDY4LDB4NkEsMHhBRSwweEVCLDB4RUYsMHg3MywweEU5LDB4N0Es
MHg4OCwweDcyLDB4RkEsMHhDQSwweERBLDB4RkQsCisgICAgMHhDOSwweDdBLDB4ODgsMHg3Miww
eDBBLDB4M0YsMHgyRiwweEEzLDB4MEEsMHg4MywweDg4LDB4NzIsMHgzMCwweEEyLDB4NkEsMHhE
RiwKKyAgICAweEVBLDB4N0EsMHg4OCwweDcyLDB4QTgsMHhCQiwweEZCLDB4OUUsMHgwQSwweDgz
LDB4QTgsMHg3MiwweDJGLDB4QUYsMHhBRiwweEQ1LAorICAgIDB4MEEsMHg4MywweEE5LDB4NzIs
MHhBMiwweEJBLDB4REYsMHg1RiwweDJCLDB4ODMsMHhDOSwweDdBLDB4RUEsMHhCRiwweDE1LDB4
NUQsCisgICAgMHgwQiwweDgzLDB4Q0EsMHg3QSwweERELDB4RkYsMHg3RSwweEFGLDB4MEEsMHg4
MywweEM5LDB4N0EsMHg2QywweEZGLDB4RkYsMHg4QSwKKyAgICAweDJCLDB4ODMsMHhDOSwweDdB
LDB4M0YsMHhFRCwweEJCLDB4NzEsMHgwQSwweDgzLDB4QTksMHg3QSwweDI4LDB4QkUsMHgyQiww
eDZELAorICAgIDB4NEIsMHg4QiwweENBLDB4N0EsMHgyQSwweDJBLDB4RUIsMHhGNSwweDJCLDB4
OEIsMHhDOSwweDdBLDB4NjAsMHg3NiwweEYyLDB4RkUsCisgICAgMHgwQSwweDgzLDB4QzksMHg3
QSwweDg4LDB4RUUsMHhBRiwweDlBLDB4NEIsMHg4QiwweEU5LDB4N0EsMHg3RCwweEZELDB4QjMs
MHgyQSwKKyAgICAweDJBLDB4ODMsMHhDOSwweDdBLDB4QkUsMHg3NywweEZDLDB4RDgsMHgwQSww
eDgzLDB4QTgsMHg3MiwweDNGLDB4MkQsMHg4QiwweEFFLAorICAgIDB4NEIsMHg4QiwweEVBLDB4
N0EsMHgwQiwweEE3LDB4RTcsMHhCRiwweDhDLDB4OTMsMHhFOSwweDdBLDB4MkEsMHhCQiwweEFG
LDB4N0UsCisgICAgMHhDRCwweDlCLDB4MEEsMHg4MywweDAyLDB4QUEsMHhCRiwweDdELDB4OEYs
MHhCNCwweDRCLDB4OEIsMHgyQSwweEFCLDB4RkQsMHg1NSwKKyAgICAweDAzLDB4NDEsMHgyMyww
eDM5LDB4ODIsMHgwMCwweDA4LDB4MjMsMHgyMywweDQxLDB4QTIsMHgzOCwweEU4LDB4N0EsMHhG
OCwweEZFLAorICAgIDB4MDIsMHg0MSwweEMyLDB4MzgsMHhCQSwweEI5LDB4NjksMHhFQSwweEUy
LDB4MzgsMHhDMiwweDM4LDB4RjgsMHhCQiwweDBCLDB4MEYsCisgICAgMHgwMiwweDQxLDB4QTIs
MHgzMCwweENBLDB4QUIsMHg4MywweDgyLDB4MjMsMHg0MSwweEUyLDB4MzgsMHhFQiwweDZELDB4
RkMsMHhGQiwKKyAgICAweDIzLDB4NDEsMHhFMiwweDM4LDB4NjUsMHhENSwweDU3LDB4OTUsMHgy
MywweDQxLDB4QzIsMHgzOCwweEZCLDB4M0IsMHhERiwweDVCLAorICAgIDB4MDMsMHg0MSwweEMy
LDB4MzgsMHhGQywweDU4LDB4NkUsMHhGRiwweDAyLDB4MzksMHhDMiwweDMwLDB4QUUsMHgzQiww
eEZCLDB4REUsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweERFLDB4QjgsMHgyMCwweDNCLDB4
MjMsMHg0MSwweEMyLDB4MzgsMHg1NiwweERGLDB4RkUsMHhGQywKKyAgICAweDAzLDB4NDEsMHhB
MiwweDMwLDB4QUIsMHhFQiwweEU3LDB4QjAsMHgwMywweDQxLDB4RTIsMHgzOCwweEUxLDB4MDks
MHg5RCwweDU1LAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHg3NywweEM0LDB4OEEsMHg4QSww
eDAzLDB4NDEsMHhDMiwweDM4LDB4NEQsMHg1OSwweDVCLDB4RTIsCisgICAgMHgwMywweDQxLDB4
RTIsMHgzOCwweEZDLDB4REYsMHg1NywweDU2LDB4MDMsMHgzOSwweEMyLDB4MzgsMHhBRSwweEYw
LDB4NUEsMHg1RCwKKyAgICAweDAzLDB4MzksMHhDMSwweDMwLDB4RUYsMHhCRCwweEJFLDB4OEIs
MHgwMywweDQxLDB4QzIsMHgzOCwweEI1LDB4QkYsMHg1RiwweENFLAorICAgIDB4MDMsMHgzOSww
eEMyLDB4MzgsMHhGQSwweDhBLDB4N0YsMHhGNywweEUzLDB4MzgsMHhDMiwweDM4LDB4NkMsMHg3
RSwweDdGLDB4RjcsCisgICAgMHgwMywweDQxLDB4QTEsMHgzMCwweDI1LDB4QUYsMHhBQiwweEZF
LDB4ODgsMHg3MiwweDY0LDB4NDksMHgwRCwweDJELDB4MkQsMHgyRCwKKyAgICAweDg3LDB4NzIs
MHg0NywweDZBLDB4QjgsMHgzQSwweEI2LDB4RjMsMHg2NiwweDcyLDB4QzQsMHg1OSwweEUyLDB4
N0EsMHg3OCwweDdFLAorICAgIDB4RTUsMHg1OSwweDQ0LDB4NDksMHhGOCwweDdFLDB4NUUsMHg3
QSwweDQzLDB4NDEsMHhFMiwweDM4LDB4NUMsMHg3RSwweEVGLDB4NzgsCisgICAgMHgwMywweDM5
LDB4QzIsMHgzMCwweDZBLDB4QTAsMHhBMiwweEJBLDB4MDMsMHgzOSwweEEyLDB4MzAsMHg3QSww
eEJBLDB4QUEsMHg4MCwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4ODgsMHhFMiwweDYyLDB4
NUEsMHgwMywweDMxLDB4QzIsMHgzMCwweDIzLDB4OEEsMHgyRiwweDJBLAorICAgIDB4MDMsMHgz
OSwweEEyLDB4MjgsMHhBQSwweEJBLDB4NjAsMHhFMCwweDAzLDB4MzEsMHhDMiwweDI4LDB4MkUs
MHhCRCwweDk1LDB4OUQsCisgICAgMHgwMywweDMxLDB4QzIsMHgyOCwweEFBLDB4MkMsMHg5Qyww
eEY2LDB4MDMsMHgzMSwweEMyLDB4MzAsMHhFRSwweEFBLDB4RkEsMHg2OCwKKyAgICAweDAzLDB4
MzEsMHhFMiwweDMwLDB4QkYsMHg1RiwweDk3LDB4RTksMHgyMywweDMxLDB4QzIsMHgyOCwweEVB
LDB4Q0EsMHhGRiwweEY4LAorICAgIDB4MDMsMHgzOSwweEUyLDB4MzAsMHhCRSwweDZCLDB4REUs
MHg1MiwweDAzLDB4MzksMHhFMywweDMwLDB4MDAsMHhERSwweDNFLDB4QUEsCisgICAgMHgwMyww
eDM5LDB4RTMsMHgzMCwweDQyLDB4ODIsMHgzRCwweEY3LDB4MjQsMHgzOSwweEMyLDB4MzAsMHg4
MiwweEFBLDB4QUIsMHhGNywKKyAgICAweDAzLDB4MzksMHhFMywweDMwLDB4QTAsMHhGMCwweDQy
LDB4RjAsMHgyNCwweDM5LDB4QzIsMHgzMCwweDhBLDB4QUIsMHhGRiwweERFLAorICAgIDB4MDMs
MHgzOSwweEUzLDB4MzAsMHhCOCwweDI4LDB4RjIsMHg5MiwweDIzLDB4MzksMHhFMywweDMwLDB4
QkUsMHhBRSwweEFFLDB4QkYsCisgICAgMHg0NCwweDQxLDB4MDMsMHgzOSwweERCLDB4OUYsMHgw
NywweEFGLDB4NDQsMHg0MSwweDAzLDB4MzksMHhFNywweEQ2LDB4QkUsMHgxRSwKKyAgICAweDQ0
LDB4NDEsMHgwNCwweDM5LDB4NzcsMHgxRCwweEZCLDB4QTAsMHg0NCwweDQxLDB4MDMsMHgzOSww
eEI1LDB4NkYsMHhGRSwweERBLAorICAgIDB4MjQsMHg0MSwweDAzLDB4MzksMHg1NSwweDk1LDB4
QkYsMHhCQywweDI0LDB4MzksMHhDMiwweDMwLDB4QkIsMHhBMiwweDgwLDB4MjIsCisgICAgMHgy
NCwweDM5LDB4QzIsMHgzMCwweEZGLDB4NUYsMHg1QSwweEY4LDB4MDMsMHgzOSwweEMyLDB4MzAs
MHgyQSwweDhGLDB4RjcsMHhCQSwKKyAgICAweDI0LDB4MzksMHhFMywweDMwLDB4OEYsMHhBOSww
eEZGLDB4QkYsMHgyNCwweDM5LDB4RTMsMHgzMCwweDYyLDB4QzAsMHhERSwweEZFLAorICAgIDB4
MjQsMHgzOSwweEMyLDB4MzAsMHhGRCwweEFBLDB4QUEsMHhFQiwweDAzLDB4MzEsMHhDMiwweDMw
LDB4QUYsMHgwRiwweDI4LDB4QTAsCisgICAgMHgwMywweDMxLDB4QTIsMHgzMCwweEEyLDB4RTgs
MHgyMiwweDJBLDB4MjQsMHgzOSwweEUzLDB4MzAsMHgyRSwweDBGLDB4OUYsMHhERSwKKyAgICAw
eDI0LDB4MzksMHhFMywweDMwLDB4NkYsMHhFQSwweEYyLDB4RUIsMHgwMywweDMxLDB4RTMsMHgz
MCwweDYyLDB4N0YsMHg1RiwweEIyLAorICAgIDB4MjMsMHgzOSwweEUzLDB4MzAsMHhENSwweDU1
LDB4QzUsMHhGMywweDI0LDB4MzksMHhDMiwweDMwLDB4NzcsMHg3RiwweDdCLDB4RUEsCisgICAg
MHgwMywweDMxLDB4QzMsMHgzMCwweEY1LDB4RUQsMHg4RiwweDhELDB4RTMsMHgzMCwweEMyLDB4
MjgsMHg3RSwweDc4LDB4NzQsMHg3MCwKKyAgICAweEUzLDB4MzAsMHhDMiwweDI4LDB4NTUsMHhG
QiwweEJCLDB4RkYsMHhFMiwweDI4LDB4ODIsMHgyOCwweDJFLDB4QUEsMHgyOCwweDAyLAorICAg
IDB4RTMsMHgzMCwweEEyLDB4MjAsMHhCRiwweEVFLDB4QkMsMHhGNCwweDAzLDB4MzEsMHhDMiww
eDI4LDB4N0QsMHg3RiwweDUzLDB4REQsCisgICAgMHhDMiwweDI4LDB4QTIsMHgyMCwweDNBLDB4
QUYsMHgyQSwweDBFLDB4RTIsMHgyOCwweEEyLDB4MjAsMHg1NywweDVFLDB4NUYsMHg3QywKKyAg
ICAweDgxLDB4MjgsMHhBMiwweDIwLDB4RkYsMHg5RiwweEZGLDB4RkQsMHhDMiwweDI4LDB4ODEs
MHgyMCwweEZCLDB4RUYsMHhBQSwweDJELAorICAgIDB4QTIsMHgyOCwweDgxLDB4MjAsMHhCNyww
eEFFLDB4QTAsMHhDOCwweEMyLDB4MjgsMHg2MSwweDIwLDB4MkEsMHhCQSwweEZGLDB4RkYsCisg
ICAgMHgwMywweDMxLDB4ODEsMHgyMCwweDBBLDB4QjksMHhGRiwweDc1LDB4MDMsMHgzMSwweEEy
LDB4MjgsMHgyOCwweEJBLDB4N0YsMHg1NSwKKyAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4MjIs
MHhBQSwweDJGLDB4QTUsMHgwMywweDM5LDB4RTIsMHgzMCwweERFLDB4MkEsMHgwMiwweDlGLAor
ICAgIDB4MjMsMHgzOSwweEMyLDB4MjgsMHg3NSwweEI3LDB4QUEsMHgzQSwweDI0LDB4MzEsMHhD
MiwweDMwLDB4N0QsMHhBQiwweEJBLDB4RjgsCisgICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweEVC
LDB4RUUsMHhBNSwweEUxLDB4MjQsMHgzOSwweEMyLDB4MjgsMHhGQSwweDdBLDB4NjgsMHg3QiwK
KyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4MTcsMHhCRiwweEI2LDB4QTgsMHgwMywweDM5LDB4
QTEsMHgyOCwweDBFLDB4MkUsMHg5RiwweEJGLAorICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHg2
MiwweEFBLDB4OEUsMHg4MywweDI0LDB4MzksMHhFMywweDM4LDB4QUQsMHhCRCwweDM3LDB4QUQs
CisgICAgMHg0NCwweDQxLDB4RTIsMHgzMCwweEFBLDB4QUYsMHhFQSwweDYyLDB4MjQsMHgzOSww
eEMzLDB4MjgsMHhGOCwweDdFLDB4RkIsMHhGRSwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4
RDYsMHg1QywweEVFLDB4QjgsMHgwMywweDMxLDB4QTIsMHgyOCwweEFELDB4QUYsMHhBQSwweDJF
LAorICAgIDB4MDMsMHgzMSwweEExLDB4MjgsMHhGRSwweEZGLDB4REMsMHgwRSwweDAzLDB4MzEs
MHhDMiwweDI4LDB4QTUsMHhBNSwweEEzLDB4MDgsCisgICAgMHg2NCwweDQxLDB4RTIsMHgzMCww
eEJELDB4QkQsMHhBQiwweDJCLDB4QTUsMHg0OSwweDY0LDB4NDksMHgyMSwweDJGLDB4QUQsMHgz
MywKKyAgICAweEU2LDB4NTksMHhBNSwweDUxLDB4QjEsMHhBNSwweEFELDB4MEIsMHg0OCwweDYy
LDB4MDYsMHg1QSwweEU3LDB4NTUsMHg5RiwweDQ5LAorICAgIDB4NjgsMHg2QSwweDA2LDB4NUEs
MHgzRCwweEI1LDB4REUsMHhGNywweDY4LDB4NkEsMHhFNiwweDU5LDB4MDgsMHgwQSwweDJBLDB4
QTcsCisgICAgMHhBOSwweDcyLDB4NDgsMHg2QSwweDVDLDB4RkUsMHhFMCwweDNELDB4QTksMHg3
MiwweDQ4LDB4NkEsMHgyMiwweEJBLDB4RjcsMHhGRSwKKyAgICAweEM5LDB4NzIsMHg2OCwweDZB
LDB4QjgsMHhCQiwweEJBLDB4OUYsMHhDQSwweDdBLDB4MjcsMHg2MiwweEJBLDB4ODIsMHg4Niww
eDA4LAorICAgIDB4QTksMHg3MiwweDY4LDB4NkEsMHgwRSwweDAzLDB4QkYsMHg5OCwweEE5LDB4
NzIsMHg4OCwweDZBLDB4RjQsMHhBNywweDk0LDB4MjQsCisgICAgMHhDOSwweDdBLDB4ODgsMHg3
MiwweDcwLDB4NkYsMHhEQSwweEIyLDB4RTksMHg3QSwweDg4LDB4NzIsMHhEOSwweEY1LDB4QTIs
MHhCMywKKyAgICAweEU5LDB4N0EsMHhBOSwweDcyLDB4Q0QsMHhGNiwweERDLDB4NUYsMHhFOSww
eDdBLDB4QTksMHg3MiwweEZELDB4ODAsMHhFMiwweDZFLAorICAgIDB4RTksMHg3QSwweDg5LDB4
NzIsMHhCQSwweDkyLDB4MkIsMHhCQSwweEU5LDB4N0EsMHhBOCwweDcyLDB4REYsMHg3MiwweDcz
LDB4REEsCisgICAgMHgwQSwweDdCLDB4ODgsMHg2QSwweEVFLDB4QkYsMHhCNSwweDJGLDB4MkEs
MHg4MywweEM5LDB4NzIsMHhENywweDNGLDB4RjUsMHhGRSwKKyAgICAweDJBLDB4ODMsMHhDOSww
eDdBLDB4RkQsMHhCNCwweEFBLDB4REQsMHgyQSwweDhCLDB4QTgsMHg3QSwweDJGLDB4RUUsMHg3
QSwweDc2LAorICAgIDB4MEEsMHg4MywweEE5LDB4N0EsMHhFMiwweEFCLDB4ODksMHhFQiwweEVB
LDB4N0EsMHhBOSwweDdBLDB4RUQsMHg1RCwweEE4LDB4QTgsCisgICAgMHgwQSwweDgzLDB4QTks
MHg3MiwweEE1LDB4QUQsMHhBRSwweEFFLDB4MEIsMHg4MywweENBLDB4N0EsMHhCRiwweDk1LDB4
QUYsMHg2QiwKKyAgICAweDBCLDB4ODMsMHhDQSwweDdBLDB4REUsMHhENywweERFLDB4NzksMHg0
QiwweDhCLDB4QzksMHg3QSwweDJCLDB4QUYsMHhGNSwweEZELAorICAgIDB4MkEsMHg4MywweEM5
LDB4N0EsMHhGMCwweEEyLDB4QTYsMHgwRSwweDJBLDB4ODMsMHhDOSwweDdBLDB4RDcsMHhFOCww
eEMwLDB4QTgsCisgICAgMHgwQSwweDgzLDB4QzksMHg3QSwweDI4LDB4MDksMHhFRCwweDgzLDB4
NEIsMHg4QiwweEU5LDB4N0EsMHhBOCwweDhCLDB4QkQsMHg4RCwKKyAgICAweDRBLDB4ODMsMHgw
OSwweDdCLDB4OEUsMHg2RiwweENCLDB4QUYsMHg0QiwweDhCLDB4RTksMHg3QSwweDBBLDB4M0Is
MHg5RSwweDdGLAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHgwNiwweEFBLDB4QzMsMHhFMCww
eDAzLDB4NDEsMHhBMiwweDMwLDB4NzgsMHhFQSwweEJFLDB4RUYsCisgICAgMHgwMywweDQxLDB4
QTIsMHgzOCwweEFCLDB4QkIsMHhFQiwweENELDB4RTIsMHgzOCwweEExLDB4MzAsMHgwOCwweDBB
LDB4MDgsMHhDOCwKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4QkEsMHhBNSwweDk3LDB4MTcs
MHgyMywweDQxLDB4RTIsMHgzOCwweDZGLDB4NzUsMHhGRSwweEZFLAorICAgIDB4MjMsMHg0MSww
eEMyLDB4MzgsMHhCNywweEVGLDB4RTAsMHg1MywweDAzLDB4NDEsMHhDMiwweDM4LDB4RTAsMHhG
QSwweDU3LDB4NzMsCisgICAgMHgwMywweDQxLDB4RTIsMHgzOCwweDU1LDB4NTYsMHhGRiwweDZG
LDB4MjMsMHg0MSwweEMxLDB4MzAsMHhERiwweEQ3LDB4QkYsMHhCQiwKKyAgICAweDAzLDB4NDEs
MHhDMiwweDM4LDB4QUYsMHhBNywweDJBLDB4M0MsMHgwMywweDQxLDB4QzIsMHgzOCwweEVCLDB4
QUYsMHgyNywweEI3LAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhBMCwweERBLDB4RjAsMHhB
MCwweDAzLDB4MzksMHhDMiwweDM4LDB4RUYsMHhFQSwweDZBLDB4RkIsCisgICAgMHgwMywweDM5
LDB4QzIsMHgzOCwweDM3LDB4RDcsMHhBRiwweEVCLDB4MDMsMHg0MSwweEMyLDB4MzgsMHhFOCww
eEMwLDB4QzIsMHhERSwKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4RUIsMHhEMywweDdCLDB4
REEsMHgwMywweDQxLDB4QTEsMHgzMCwweDdGLDB4RkEsMHhGRCwweENBLAorICAgIDB4RTIsMHgz
OCwweEMyLDB4MzgsMHg4RCwweDBELDB4QzUsMHgyRSwweEUyLDB4MzgsMHhDMiwweDM4LDB4ODQs
MHg3NCwweDk1LDB4QTQsCisgICAgMHhFMiwweDM4LDB4QzIsMHgzOCwweEMxLDB4RjIsMHgwMCww
eDA4LDB4MDMsMHg0MSwweEEyLDB4MzgsMHhCNywweEJGLDB4QkIsMHhBMiwKKyAgICAweDAzLDB4
NDEsMHhDMiwweDM4LDB4NTcsMHg3RiwweEVCLDB4NEIsMHg2NywweDcyLDB4MDMsMHg0MSwweDI5
LDB4MEQsMHgwRCwweDBELAorICAgIDB4ODcsMHg3MiwweDI2LDB4NkEsMHhBMCwweEFBLDB4N0Es
MHg3OCwweDQ3LDB4NkEsMHg2NCwweDUxLDB4RTgsMHg2OCwweEY4LDB4RkEsCisgICAgMHhBNCww
eDUxLDB4MDMsMHg0MSwweEZDLDB4REUsMHg3RSwweEZBLDB4NDQsMHg0OSwweEMyLDB4MzAsMHhF
OCwweEJFLDB4RkYsMHhGRSwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4MjgsMHhGOCwweEY4
LDB4RTAsMHgwMywweDM5LDB4QzIsMHgzMCwweEFBLDB4QTcsMHhFNSwweEY1LAorICAgIDB4MjMs
MHgzOSwweEMyLDB4MzAsMHhERiwweEJFLDB4QUIsMHgyRiwweDAzLDB4MzEsMHhBMiwweDMwLDB4
MEEsMHhBQSwweDg4LDB4RTIsCisgICAgMHgwMywweDMxLDB4QzIsMHgzMCwweEMyLDB4QkEsMHhC
QSwweDZFLDB4MDMsMHgzMSwweEMyLDB4MjgsMHhBQSwweEJBLDB4N0YsMHg1RiwKKyAgICAweDAz
LDB4MzEsMHhDMiwweDI4LDB4N0UsMHgyQSwweDg4LDB4MDIsMHgwMywweDMxLDB4QzIsMHgzMCww
eDZBLDB4RTIsMHg3QywweEI4LAorICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHg4QiwweENCLDB4
RjksMHg4RSwweDIzLDB4MzksMHhDMywweDMwLDB4QkMsMHhGRiwweDdGLDB4NUYsCisgICAgMHgw
MywweDMxLDB4QzIsMHgzMCwweEUyLDB4M0YsMHg4QiwweEFCLDB4MDMsMHgzMSwweEMyLDB4Mjgs
MHgwMiwweDAyLDB4MjMsMHg3QiwKKyAgICAweDAzLDB4MzksMHhFMywweDMwLDB4RkEsMHhFRiww
eDFFLDB4REIsMHgyNCwweDM5LDB4QzIsMHgzMCwweEI5LDB4RjcsMHhGQywweEUwLAorICAgIDB4
MDMsMHgzOSwweEMyLDB4MzAsMHhBMiwweEVCLDB4QUIsMHhBQSwweEUzLDB4MzAsMHhBMiwweDMw
LDB4MDgsMHgyOCwweDJBLDB4OEYsCisgICAgMHgyNCwweDQxLDB4RTMsMHgzMCwweEQ3LDB4QUMs
MHhBQSwweDgwLDB4MjQsMHgzOSwweEUzLDB4MzAsMHg3QiwweEJCLDB4QUUsMHhBRiwKKyAgICAw
eDI0LDB4MzksMHhFMywweDMwLDB4MDMsMHgyQSwweDVGLDB4OUYsMHg0NCwweDQxLDB4RTMsMHgz
MCwweDJBLDB4MkEsMHhBNywweDk1LAorICAgIDB4NjQsMHg0MSwweDAzLDB4MzksMHhGQSwweEQ4
LDB4NUYsMHhGNywweDI0LDB4MzksMHgwMywweDM5LDB4NzQsMHhGNCwweDU0LDB4NTcsCisgICAg
MHgyMywweDM5LDB4QzMsMHgzMCwweEUyLDB4OUEsMHhFRSwweEJCLDB4MjQsMHgzOSwweEUzLDB4
MzgsMHgyNywweEFGLDB4QUEsMHhBQSwKKyAgICAweDI0LDB4MzksMHhFMywweDM4LDB4RkEsMHhB
MiwweEVCLDB4RkYsMHg0NCwweDM5LDB4RTMsMHgzOCwweDVGLDB4RkYsMHg3RSwweEZELAorICAg
IDB4MjQsMHgzOSwweDAzLDB4MzksMHg1NCwweDZELDB4RjksMHhERCwweDIzLDB4MzksMHhFMyww
eDMwLDB4RkUsMHhEOCwweEE4LDB4QjYsCisgICAgMHgwMywweDM5LDB4RTMsMHgzMCwweEE5LDB4
RTUsMHgxNywweDc0LDB4MjQsMHgzOSwweEUzLDB4MzAsMHg1RSwweDE1LDB4MEYsMHhCNSwKKyAg
ICAweDQ0LDB4MzksMHhFMywweDMwLDB4RjUsMHhFOSwweEZGLDB4RTMsMHgyNCwweDM5LDB4QzIs
MHgyOCwweDNBLDB4QjgsMHhBRSwweDlBLAorICAgIDB4MjMsMHgzOSwweEMzLDB4MjgsMHhERiww
eEZGLDB4MkEsMHgwQSwweDIzLDB4MzksMHhFMywweDMwLDB4RkYsMHhGQiwweEZDLDB4NjgsCisg
ICAgMHhFNCwweDM4LDB4MjMsMHgzMSwweEVGLDB4RUEsMHhGQiwweEFCLDB4MjMsMHgzOSwweEUz
LDB4MzAsMHhENywweEZGLDB4RUMsMHhCQiwKKyAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4OEQs
MHhBRSwweEVFLDB4RkUsMHgwMywweDMxLDB4QzMsMHgzMCwweEY4LDB4RjgsMHhCQiwweDg3LAor
ICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHhGNywweEE3LDB4MDksMHgwMywweDAzLDB4MzEsMHhD
MiwweDI4LDB4RjcsMHhGRSwweDBBLDB4RjgsCisgICAgMHhFMiwweDMwLDB4QzIsMHgyOCwweDU2
LDB4RDcsMHhENywweDU3LDB4RTIsMHgyOCwweEEyLDB4MjgsMHhBQiwweDgwLDB4RUEsMHg4QSwK
KyAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4RDksMHhGQiwweDZGLDB4NzUsMHgwMywweDMxLDB4
ODEsMHgyMCwweDcyLDB4RTIsMHhFQSwweEFCLAorICAgIDB4QzIsMHgyOCwweDgxLDB4MjAsMHg3
OCwweDNFLDB4MkEsMHgwMCwweEUzLDB4MzAsMHg4MSwweDIwLDB4QTksMHg2MywweENBLDB4QkIs
CisgICAgMHhBMiwweDI4LDB4ODEsMHgyMCwweEVCLDB4MkIsMHhFQSwweEEwLDB4QTIsMHgyOCww
eDgyLDB4MjAsMHgzRiwweEFGLDB4QkEsMHhGQSwKKyAgICAweEEyLDB4MjgsMHg2MSwweDIwLDB4
QUYsMHhENywweEZGLDB4RjIsMHhDMiwweDI4LDB4NjEsMHgyMCwweDhBLDB4QkIsMHhGNywweDdG
LAorICAgIDB4RTMsMHgzMCwweDgxLDB4MjAsMHgyQiwweEI3LDB4QkQsMHhENSwweEUzLDB4MzAs
MHhBMiwweDI4LDB4MjAsMHgwMiwweERCLDB4NUYsCisgICAgMHgwMywweDMxLDB4QTIsMHgyOCww
eDJBLDB4QUEsMHg5RiwweEY1LDB4MjQsMHgzOSwweEMyLDB4MjgsMHgzQSwweEJBLDB4RUQsMHhE
NSwKKyAgICAweDI0LDB4MzksMHhFMywweDMwLDB4NjcsMHhGNywweDM1LDB4RkYsMHgwNCwweDMx
LDB4RTMsMHgzMCwweDdELDB4NjcsMHgxRCwweDU3LAorICAgIDB4MDMsMHgzMSwweEMyLDB4Mjgs
MHg3RSwweEE4LDB4QUUsMHhCNSwweDAzLDB4MzEsMHhDMiwweDI4LDB4RjUsMHhBRiwweDJBLDB4
ODgsCisgICAgMHg0NCwweDM5LDB4RTIsMHgzMCwweENGLDB4QkQsMHg4RiwweDJELDB4MjMsMHgz
OSwweEUyLDB4MzAsMHhBRiwweEFFLDB4Q0EsMHgyOCwKKyAgICAweDI0LDB4MzksMHhDMiwweDI4
LDB4ODAsMHhFMiwweEVBLDB4NjAsMHgwMywweDM5LDB4ODIsMHgyOCwweDAyLDB4ODAsMHhBQiww
eEI1LAorICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHg1RSwweDI3LDB4QTUsMHg5NSwweDAzLDB4
MzEsMHhDMiwweDI4LDB4MkYsMHg5RiwweEY3LDB4RkUsCisgICAgMHgwMywweDMxLDB4QzIsMHgy
OCwweDg4LDB4MkUsMHgzRSwweDNGLDB4NDQsMHgzOSwweEUzLDB4MzAsMHhCRiwweEZELDB4QUYs
MHgyRiwKKyAgICAweEE1LDB4NDksMHgyMywweDM5LDB4QkQsMHgyRCwweDJGLDB4MkIsMHhDNSww
eDUxLDB4ODUsMHg0OSwweEIxLDB4MEIsMHhBOCwweDAyLAorICAgIDB4MDYsMHg1QSwweEM2LDB4
NTEsMHg5RCwweEI1LDB4MjMsMHgzMiwweDI3LDB4NjIsMHhDNiwweDU5LDB4MEIsMHhGQiwweDZB
LDB4QkEsCisgICAgMHgyNywweDYyLDB4QzYsMHg1MSwweDgwLDB4QjgsMHhFQSwweDJBLDB4NDcs
MHg2MiwweDA3LDB4NjIsMHhBQSwweEFFLDB4MkYsMHgzOSwKKyAgICAweDY4LDB4NkEsMHgyNyww
eDYyLDB4MEUsMHhCRSwweERGLDB4QUEsMHg4OCwweDZBLDB4NDgsMHg2QSwweERDLDB4RUUsMHg5
NywweEJELAorICAgIDB4QzksMHg3MiwweDQ4LDB4NkEsMHhCRiwweDJGLDB4QkYsMHhERiwweEVB
LDB4N0EsMHhBOSwweDcyLDB4QkIsMHhFQiwweDdGLDB4RDYsCisgICAgMHhFQSwweDdBLDB4ODgs
MHg2QSwweDVFLDB4N0IsMHg3RiwweDJCLDB4RTksMHg3QSwweDg4LDB4NkEsMHhFNSwweDg5LDB4
RTAsMHhBRSwKKyAgICAweEU5LDB4N0EsMHg4OCwweDcyLDB4RjIsMHhFNSwweEI1LDB4QUMsMHhF
QSwweDdBLDB4ODksMHg3MiwweDVCLDB4RkYsMHhCRSwweDhFLAorICAgIDB4QzksMHg3QSwweDg4
LDB4NzIsMHhCMCwweEZBLDB4RDIsMHhBMCwweEU5LDB4N0EsMHg4OCwweDcyLDB4QUUsMHhBRCww
eEJGLDB4RkYsCisgICAgMHhFQSwweDdBLDB4ODgsMHg3MiwweEFCLDB4RUEsMHg3MiwweDYyLDB4
RTksMHg3QSwweEE4LDB4NzIsMHhGQSwweEVFLDB4RjksMHgyOSwKKyAgICAweDBBLDB4ODMsMHhB
OSwweDcyLDB4MjksMHhDQiwweEEyLDB4RUIsMHgyQSwweDgzLDB4QzksMHg3QSwweEVCLDB4QUEs
MHgyRiwweEJELAorICAgIDB4MEEsMHg4MywweEM5LDB4N0EsMHg1NCwweDNBLDB4QUEsMHhGQSww
eDBBLDB4ODMsMHhDOSwweDdBLDB4NTcsMHhBOCwweEE4LDB4RjcsCisgICAgMHgyQSwweDgzLDB4
QTksMHg3QSwweEI3LDB4QTMsMHhBQSwweEIyLDB4MkEsMHg4MywweEM5LDB4N0EsMHg3NSwweEZG
LDB4QTIsMHhBMiwKKyAgICAweDBBLDB4ODMsMHhBOSwweDcyLDB4QkUsMHhCQSwweDVFLDB4N0Ms
MHgwQSwweDgzLDB4QTksMHg3MiwweEZGLDB4QTIsMHhGQSwweDVCLAorICAgIDB4MEIsMHg4Myww
eENBLDB4N0EsMHhFQSwweEZGLDB4RkQsMHhGRCwweEVBLDB4N0EsMHhBOSwweDcyLDB4MjAsMHgy
MiwweERBLDB4QTAsCisgICAgMHgyQSwweDgzLDB4QTksMHg3MiwweDhBLDB4RUYsMHg3RiwweDdF
LDB4MkIsMHg4MywweEE5LDB4NzIsMHhBQSwweDJELDB4QkYsMHhGNywKKyAgICAweDJBLDB4ODMs
MHhDOSwweDdBLDB4QjIsMHhCOCwweEZFLDB4REYsMHg0QiwweDhCLDB4RUEsMHg3QSwweENCLDB4
MjEsMHg4RSwweDVELAorICAgIDB4NEIsMHg4MywweEU5LDB4N0EsMHhGRSwweERFLDB4QUIsMHg3
QiwweDBBLDB4ODMsMHhDOSwweDdBLDB4QjAsMHhGRiwweEJBLDB4RjYsCisgICAgMHgwMywweDQx
LDB4QTEsMHgzMCwweEIwLDB4RjIsMHhCQSwweDhCLDB4RTIsMHgzOCwweEExLDB4MzAsMHhCQyww
eEZCLDB4MjgsMHhCQywKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4NTUsMHg1RSwweEVBLDB4
QUYsMHgyMywweDQxLDB4QzIsMHgzOCwweDc1LDB4M0QsMHhCRCwweDlFLAorICAgIDB4MjMsMHg0
MSwweEMyLDB4MzgsMHhBRCwweEU3LDB4MjYsMHhBRiwweDIzLDB4NDEsMHhFMiwweDM4LDB4RDcs
MHhENywweDVFLDB4QjgsCisgICAgMHgwMiwweDM5LDB4QzIsMHgzOCwweDZBLDB4RUEsMHg2OCww
eEE4LDB4MDIsMHgzOSwweEMyLDB4MzgsMHhGRiwweDZGLDB4NUEsMHg3QywKKyAgICAweDIyLDB4
NDEsMHhDMiwweDM4LDB4NUIsMHg1RCwweDdELDB4N0YsMHgwMywweDQxLDB4QTEsMHgzMCwweDhC
LDB4QUIsMHhGRCwweEU1LAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhGNCwweDVBLDB4NUIs
MHg3QSwweDIzLDB4MzksMHhDMiwweDM4LDB4QkQsMHhENywweEZELDB4NUYsCisgICAgMHgwMyww
eDM5LDB4QTEsMHgzMCwweDJBLDB4QUYsMHhFNiwweEVBLDB4RTIsMHgzOCwweEMyLDB4MzgsMHgw
OCwweDJBLDB4Q0EsMHg3QiwKKyAgICAweDAyLDB4MzksMHhDMiwweDM4LDB4RkIsMHhGNywweDdG
LDB4RUIsMHhFMiwweDM4LDB4QzIsMHgzMCwweEFDLDB4MEUsMHhDOSwweDRGLAorICAgIDB4RTIs
MHgzOCwweEMyLDB4MzgsMHgwOCwweDAyLDB4QTIsMHgyMCwweDAzLDB4NDEsMHhDMiwweDM4LDB4
QUEsMHhERSwweEY5LDB4NEYsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEZDLDB4RjgsMHhG
QSwweEZELDB4MDMsMHgzOSwweEMyLDB4MzgsMHhGQSwweEJCLDB4REYsMHhENSwKKyAgICAweDAz
LDB4NDEsMHhBMiwweDM4LDB4RkEsMHg3QSwweEZFLDB4QjgsMHhFMiwweDM4LDB4QTIsMHgzMCww
eEEyLDB4OUIsMHhCQywweDNDLAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhBQiwweEFBLDB4
QkEsMHhFNywweDY3LDB4NzIsMHgwMiwweDQxLDB4MEQsMHgyRCwweEFELDB4MzUsCisgICAgMHg4
NywweDcyLDB4MDYsMHg2MiwweDc4LDB4NjgsMHg2QSwweEVBLDB4MDYsMHg2QSwweDYzLDB4NDks
MHhFMCwweEU4LDB4RkMsMHg3RSwKKyAgICAweDg0LDB4NTEsMHgyMywweDQxLDB4N0MsMHhGRSww
eDdFLDB4Q0IsMHgyMywweDQxLDB4RTIsMHgzMCwweEZFLDB4RkMsMHg3QywweDVDLAorICAgIDB4
MDMsMHgzOSwweEMyLDB4MzAsMHhBMCwweEZFLDB4QUYsMHhFNywweDAzLDB4MzksMHhDMiwweDMw
LDB4RjUsMHhENSwweEFCLDB4QkQsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweENCLDB4NkYs
MHhFQSwweENCLDB4RTMsMHgzMCwweEMyLDB4MjgsMHhFMCwweEZDLDB4QjAsMHhFMCwKKyAgICAw
eDAzLDB4MzEsMHhBMiwweDI4LDB4QkIsMHhBRSwweEZFLDB4NTgsMHhFMywweDMwLDB4QzIsMHgy
OCwweEJDLDB4RjYsMHgzRCwweDA5LAorICAgIDB4MjQsMHgzOSwweEMyLDB4MzAsMHgyQSwweDhC
LDB4RTcsMHhGRiwweDIzLDB4MzksMHhBMiwweDI4LDB4QTIsMHhGQiwweEY3LDB4RjcsCisgICAg
MHgwMywweDMxLDB4QzIsMHgzMCwweEE2LDB4QUUsMHg4QiwweEFCLDB4MDMsMHgzMSwweEMyLDB4
MzAsMHhEQSwweDUwLDB4RjIsMHhBQSwKKyAgICAweEUzLDB4MzAsMHhDMiwweDI4LDB4MkEsMHgy
RiwweEJDLDB4MjgsMHgyMywweDM5LDB4QzIsMHgyOCwweEZGLDB4RkYsMHhGQiwweEEyLAorICAg
IDB4MDMsMHgzMSwweEMyLDB4MzAsMHgwQiwweDJCLDB4MkYsMHgwQSwweDIzLDB4MzksMHhFMyww
eDMwLDB4N0EsMHg3QSwweERGLDB4RDcsCisgICAgMHgwMywweDM5LDB4RTMsMHgzMCwweDhCLDB4
RUIsMHhGMiwweEQyLDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBOCwweDM4LDB4RkYsMHg2RiwKKyAg
ICAweDI0LDB4MzksMHhDMiwweDMwLDB4QTAsMHhGQSwweDdGLDB4RUQsMHgyNCwweDM5LDB4RTMs
MHgzMCwweENGLDB4RTUsMHhGRiwweEY3LAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHg4Qiww
eDhCLDB4OEUsMHg5QywweDI0LDB4MzksMHhFMywweDMwLDB4M0YsMHgyRiwweEIzLDB4RkEsCisg
ICAgMHg0NCwweDQxLDB4RTIsMHgzMCwweEIyLDB4RjgsMHhFRSwweDdELDB4NDMsMHgzOSwweEUy
LDB4MzgsMHhGQSwweEFBLDB4QUEsMHhCRiwKKyAgICAweDQ0LDB4NDEsMHgwMywweDM5LDB4QkQs
MHhBQiwweEFELDB4RjcsMHg0NCwweDQxLDB4MDMsMHgzOSwweDc3LDB4N0UsMHhCNywweDY4LAor
ICAgIDB4NDQsMHg0MSwweEUzLDB4MzgsMHg3RiwweDRBLDB4RUEsMHhGRiwweEUzLDB4MzgsMHgy
MywweDMxLDB4RUYsMHhBQSwweEFFLDB4QUYsCisgICAgMHgwMywweDM5LDB4QzMsMHgzMCwweDAw
LDB4RTIsMHhEQSwweEEzLDB4MjQsMHg0MSwweEUzLDB4MzAsMHhBRiwweEJGLDB4QTksMHg4QSwK
KyAgICAweDI0LDB4MzksMHhDMiwweDMwLDB4RkEsMHhGRSwweEJFLDB4N0MsMHgyNCwweDM5LDB4
QzIsMHgzMCwweEFELDB4RUIsMHhBQSwweEUyLAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHg2
MywweDdCLDB4N0YsMHhFRCwweDAzLDB4MzEsMHhDMiwweDMwLDB4MDAsMHhBQiwweEFELDB4RUEs
CisgICAgMHg0MywweDM5LDB4RTIsMHgzMCwweEJELDB4RUEsMHhBQywweEVCLDB4MjMsMHgzOSww
eDAzLDB4MzEsMHg0QywweDUwLDB4NzAsMHg1QSwKKyAgICAweDI0LDB4MzksMHhFMywweDMwLDB4
NUYsMHhGRiwweEVCLDB4QTgsMHgwMywweDMxLDB4RTIsMHgzMCwweEMxLDB4RkEsMHhGNywweDVF
LAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHhCRiwweEZGLDB4RUIsMHhDQiwweDAzLDB4Mzks
MHhBMiwweDI4LDB4MjIsMHgyOCwweDJBLDB4MkIsCisgICAgMHg0NCwweDM5LDB4RTMsMHgzMCww
eDc1LDB4NzcsMHg3QywweEZBLDB4MDMsMHgzMSwweEMyLDB4MzAsMHhDMiwweEVFLDB4REUsMHg4
QSwKKyAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4NUQsMHhGRCwweEZGLDB4QTAsMHgwMywweDMx
LDB4QzIsMHgyOCwweDU1LDB4NTcsMHhCNywweDFGLAorICAgIDB4MDMsMHgzMSwweEMyLDB4Mjgs
MHhENSwweEY1LDB4QkEsMHgyMCwweDI0LDB4MzEsMHhDMiwweDI4LDB4NUYsMHg1QiwweDczLDB4
NkYsCisgICAgMHhFMywweDMwLDB4QzIsMHgyOCwweERELDB4RjcsMHg1NSwweDdGLDB4RTMsMHgy
OCwweEEyLDB4MjgsMHg3QSwweEQ4LDB4QUEsMHhBQiwKKyAgICAweEMyLDB4MjgsMHhBMiwweDIw
LDB4NUEsMHhFQiwweDBCLDB4OEYsMHhDMiwweDI4LDB4QTIsMHgyMCwweDdGLDB4RUMsMHhFQiww
eEI3LAorICAgIDB4QzIsMHgyOCwweDgyLDB4MjAsMHg1QSwweDVBLDB4REMsMHhGQSwweEMzLDB4
MjgsMHg4MiwweDIwLDB4NUQsMHg1NywweEZDLDB4QUEsCisgICAgMHhDMiwweDIwLDB4NjEsMHgx
OCwweEY3LDB4RkYsMHhCQSwweEEyLDB4QTIsMHgyOCwweDgxLDB4MjAsMHgwRiwweDE1LDB4Rjcs
MHg3OCwKKyAgICAweEEyLDB4MjgsMHg2MSwweDIwLDB4MkEsMHhCQSwweEJCLDB4QkYsMHhFMiww
eDMwLDB4ODIsMHgyMCwweEJBLDB4MkYsMHhGQiwweEY1LAorICAgIDB4MDMsMHgzMSwweEEyLDB4
MjgsMHgzQSwweEJFLDB4NUYsMHhENSwweDAzLDB4MzEsMHhBMiwweDI4LDB4MjIsMHgyQywweDJF
LDB4QkQsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEE4LDB4ODAsMHhGOCwweDVGLDB4MDMs
MHgzMSwweEEyLDB4MjgsMHg4QywweDhFLDB4NTcsMHg1NSwKKyAgICAweDQ0LDB4MzksMHhBMiww
eDI4LDB4MkIsMHhBRiwweEFGLDB4RkQsMHg2NSwweDQxLDB4MDMsMHgzMSwweEJFLDB4RTgsMHhF
MywweDdELAorICAgIDB4MjQsMHgzOSwweEMyLDB4MjgsMHhFOCwweDc4LDB4NUUsMHg1RSwweEUz
LDB4MzAsMHhBMiwweDI4LDB4RTMsMHhDMiwweEJGLDB4OEIsCisgICAgMHgwMywweDMxLDB4QzIs
MHgyOCwweEVGLDB4OEEsMHhBQiwweDNGLDB4MjMsMHgzOSwweEMyLDB4MjgsMHhERiwweEY3LDB4
RTIsMHhBQiwKKyAgICAweDIzLDB4MzksMHhFMywweDMwLDB4RjcsMHhBRiwweEFGLDB4MEQsMHhB
NSwweDQ5LDB4MDMsMHgzOSwweEE1LDB4MjUsMHhBRiwweDJCLAorICAgIDB4MDYsMHg1QSwweDY1
LDB4NDEsMHhBRCwweDhCLDB4QUIsMHhFQSwweDA2LDB4NUEsMHhBNSwweDUxLDB4QUIsMHgyRSww
eDA5LDB4QTIsCisgICAgMHhDNiwweDU5LDB4MDUsMHg1MiwweEFCLDB4RUUsMHhGQiwweEVBLDB4
MjcsMHg2MiwweEM1LDB4NTksMHhBNywweEFELDB4OEIsMHhBMiwKKyAgICAweDQ4LDB4NkEsMHhF
NiwweDU5LDB4QkEsMHhGRCwweERCLDB4ODIsMHg4OCwweDZBLDB4MDYsMHg1QSwweEQ3LDB4RDcs
MHhERiwweEFBLAorICAgIDB4QTksMHg3MiwweDQ3LDB4NjIsMHhFRiwweDJELDB4QUQsMHgzQiww
eDg5LDB4NkEsMHg0OCwweDZBLDB4RkEsMHhBMCwweDgyLDB4OEIsCisgICAgMHg4OCwweDZBLDB4
NDgsMHg2QSwweEFGLDB4QUEsMHhBQSwweERGLDB4Q0EsMHg3QSwweDY4LDB4NkEsMHg4QiwweDAz
LDB4MkIsMHhCRCwKKyAgICAweEU5LDB4N0EsMHg2OCwweDZBLDB4MjIsMHhGQiwweEZBLDB4Rjcs
MHhFOSwweDdBLDB4QTksMHg3MiwweEZELDB4QkIsMHhBRiwweEQ1LAorICAgIDB4RTksMHg3QSww
eDY4LDB4NkEsMHhCQSwweDlGLDB4RkUsMHhBOCwweEM5LDB4N0EsMHg2OCwweDZBLDB4ODAsMHgy
OCwweEVBLDB4RkMsCisgICAgMHhFOSwweDdBLDB4ODgsMHg3MiwweDYzLDB4QjIsMHgwMywweEFG
LDB4RTksMHg3QSwweDg4LDB4NzIsMHhGRiwweEJELDB4MkIsMHgwMCwKKyAgICAweEVBLDB4N0Es
MHg4OCwweDcyLDB4OEEsMHhCQSwweDZBLDB4N0MsMHhFOSwweDdBLDB4QTksMHg3MiwweDgyLDB4
MEIsMHhBRiwweDZELAorICAgIDB4RTksMHg3QSwweEE4LDB4NzIsMHg3OSwweDdBLDB4QTIsMHhF
QSwweEU5LDB4N0EsMHhBOSwweDcyLDB4QjgsMHhFNCwweEMwLDB4QjAsCisgICAgMHhDOSwweDdB
LDB4ODgsMHg3MiwweEJDLDB4REIsMHhCQiwweDdFLDB4QzksMHg3QSwweDg4LDB4NzIsMHgyQiww
eDJCLDB4QUYsMHgxNSwKKyAgICAweDBBLDB4ODMsMHhBOSwweDcyLDB4MjIsMHhCRiwweEY5LDB4
RkYsMHgyQiwweDgzLDB4ODgsMHg3MiwweEE4LDB4QTMsMHhCRCwweERGLAorICAgIDB4RUEsMHg3
QSwweEE4LDB4NzIsMHhCOCwweEZFLDB4QkMsMHhBQSwweEVBLDB4N0EsMHg4OCwweDcyLDB4RDIs
MHhCQSwweEFBLDB4QTgsCisgICAgMHgyQiwweDgzLDB4QzksMHg3QSwweEZELDB4NUQsMHhCNyww
eEQ1LDB4MEEsMHg4MywweEE5LDB4NzIsMHgyMCwweEI2LDB4OUUsMHhBMiwKKyAgICAweDJCLDB4
ODMsMHhDOSwweDdBLDB4NUUsMHhCRiwweDNGLDB4QUQsMHgyQiwweDgzLDB4QTgsMHg3QSwweDdC
LDB4MkEsMHgyMiwweDhBLAorICAgIDB4MEEsMHg4MywweEE4LDB4NzIsMHg4OSwweDJGLDB4QUIs
MHg4RSwweDBBLDB4ODMsMHhDOSwweDdBLDB4QzAsMHhBQSwweDAwLDB4QkUsCisgICAgMHhFQSww
eDgyLDB4MEEsMHg3QiwweEVGLDB4RjUsMHg2QSwweEVGLDB4MkEsMHg4MywweEVBLDB4N0EsMHg5
RSwweEI2LDB4NzYsMHg3MywKKyAgICAweDAzLDB4NDEsMHhBMSwweDMwLDB4QTgsMHhCQywweDc2
LDB4RDYsMHgyMywweDQxLDB4QzIsMHgzOCwweEU1LDB4NUQsMHhFRiwweEVGLAorICAgIDB4MDMs
MHg0MSwweEExLDB4MzAsMHhBRiwweDM5LDB4MEUsMHgyQSwweDAzLDB4MzksMHhDMiwweDM4LDB4
QUEsMHgyQiwweDNELDB4OTYsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDAzLDB4QUIsMHhB
OCwweDc4LDB4MDMsMHg0MSwweEMyLDB4MzgsMHgyOCwweEJBLDB4MTYsMHhENSwKKyAgICAweDAy
LDB4NDEsMHhFMiwweDM4LDB4QjIsMHgzOCwweDVFLDB4NUUsMHgwMywweDQxLDB4QTEsMHgzMCww
eEZFLDB4RjgsMHhBQSwweDJBLAorICAgIDB4RTIsMHgzOCwweEExLDB4MzAsMHhGRiwweERGLDB4
QkUsMHhFOCwweDAzLDB4NDEsMHhBMSwweDMwLDB4MjksMHhBQiwweEVCLDB4RkIsCisgICAgMHhF
MiwweDM4LDB4QTEsMHgzMCwweEEwLDB4MkEsMHhCRSwweDBBLDB4MDIsMHg0MSwweEUyLDB4Mzgs
MHg1RiwweDU3LDB4ODUsMHhERCwKKyAgICAweDAzLDB4NDEsMHhBMSwweDMwLDB4RUEsMHg3RSww
eDdBLDB4ODIsMHgyMywweDQxLDB4QzIsMHgzOCwweDdCLDB4NUYsMHg1RCwweDdGLAorICAgIDB4
MjIsMHg0MSwweEMyLDB4MzgsMHhENSwweEQ3LDB4NzcsMHg3RiwweEUyLDB4MzgsMHhBMSwweDMw
LDB4RkMsMHhGRSwweEJDLDB4QTIsCisgICAgMHgwMiwweDQxLDB4QzIsMHgzOCwweDU1LDB4RUQs
MHg4MywweDY4LDB4MDMsMHgzOSwweEMyLDB4MzgsMHhFQiwweEVCLDB4MkIsMHg0RiwKKyAgICAw
eDAzLDB4MzksMHhDMiwweDM4LDB4RDcsMHhGQiwweEFBLDB4RDYsMHgwMiwweDQxLDB4QTEsMHgz
MCwweEZFLDB4RkEsMHhGOCwweEI5LAorICAgIDB4RTIsMHgzOCwweEEyLDB4MzAsMHgzQSwweEFC
LDB4RUEsMHhBQywweEUyLDB4MzgsMHhBMiwweDMwLDB4NzgsMHhCOSwweEE4LDB4OEEsCisgICAg
MHhFMiwweDM4LDB4QTEsMHgzMCwweDhBLDB4ODgsMHhGRiwweDVBLDB4MjYsMHg2QSwweEMxLDB4
MzAsMHgzRCwweDM1LDB4QjUsMHhCNSwKKyAgICAweDY2LDB4NkEsMHhDNSwweDU5LDB4QTAsMHhF
MiwweDdBLDB4N0EsMHhFNSwweDU5LDB4ODQsMHg1MSwweDVDLDB4N0MsMHhGNywweEVCLAorICAg
IDB4QTQsMHg1MSwweDY0LDB4NDksMHg2RiwweDVFLDB4NUUsMHhFMiwweDY0LDB4NDksMHhFMiww
eDMwLDB4NTQsMHg1RSwweEQ2LDB4REYsCisgICAgMHgyMywweDM5LDB4QzIsMHgzMCwweEU1LDB4
QzksMHhBOCwweEUwLDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBRSwweEE3LDB4Q0YsMHhBRiwKKyAg
ICAweDI0LDB4MzEsMHhDMiwweDMwLDB4RTcsMHhERCwweEY3LDB4REYsMHgwMywweDMxLDB4QzIs
MHgzMCwweEFDLDB4RjAsMHg1NiwweEQ3LAorICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHhEOCww
eEJFLDB4RkYsMHhGRiwweEUzLDB4MzAsMHhDMiwweDI4LDB4MkEsMHgyOCwweEFFLDB4RkQsCisg
ICAgMHhFMywweDMwLDB4QzIsMHgyOCwweDJDLDB4MkYsMHgzQSwweEFCLDB4MDIsMHgzMSwweEMy
LDB4MjgsMHhENywweENGLDB4RUEsMHhBQiwKKyAgICAweDAzLDB4MzEsMHhFMywweDMwLDB4NTUs
MHhFNywweEJELDB4OEQsMHgwMywweDM5LDB4QTIsMHgyOCwweEFBLDB4RTMsMHhBQSwweDgyLAor
ICAgIDB4MDMsMHgzMSwweEUzLDB4MzAsMHgxNSwweDU1LDB4N0QsMHg3RiwweDIzLDB4MzksMHhF
MywweDMwLDB4NjIsMHhGNywweDU3LDB4NTUsCisgICAgMHgwMywweDMxLDB4QzIsMHgyOCwweDA4
LDB4RkEsMHhGNiwweDdELDB4MDMsMHgzMSwweEUyLDB4MzAsMHhENSwweERFLDB4RjUsMHhFNSwK
KyAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4QTMsMHhBMiwweDJBLDB4MkIsMHgwMywweDMxLDB4
RTIsMHgzMCwweENGLDB4QUEsMHgwRiwweDI4LAorICAgIDB4MDMsMHgzOSwweEMzLDB4MzAsMHg4
OSwweEM4LDB4ODgsMHhFOCwweDAzLDB4MzksMHhBMiwweDI4LDB4MkYsMHhCQSwweEVFLDB4MkUs
CisgICAgMHgwMywweDMxLDB4QzIsMHgzMCwweEE4LDB4MzAsMHg1RiwweEZGLDB4MDMsMHgzOSww
eEUzLDB4MzAsMHhFMiwweEFBLDB4RUQsMHg3MywKKyAgICAweDI0LDB4MzksMHhFMywweDMwLDB4
RjMsMHg3OSwweEZGLDB4QkQsMHgyMywweDM5LDB4RTMsMHgzMCwweEFBLDB4RjMsMHhENywweEQ4
LAorICAgIDB4MjMsMHgzOSwweEUzLDB4MzAsMHgyMiwweDJFLDB4M0YsMHgyRSwweDI0LDB4Mzks
MHhFMiwweDMwLDB4QTAsMHg3QSwweDdFLDB4OEEsCisgICAgMHgyMywweDM5LDB4RTMsMHgzMCww
eEU4LDB4RTMsMHg2QSwweDZBLDB4MjQsMHgzOSwweEMyLDB4MzgsMHhBQSwweEE4LDB4OEEsMHhB
OSwKKyAgICAweDIzLDB4MzksMHhFMywweDM4LDB4REYsMHg1OCwweEY4LDB4RjYsMHgyNCwweDM5
LDB4QzMsMHgzOCwweDAyLDB4OEIsMHhBQSwweDhBLAorICAgIDB4NDQsMHg0MSwweEMzLDB4MzAs
MHhGRSwweERBLDB4RkEsMHgyMiwweDI0LDB4MzksMHhDMiwweDMwLDB4QjMsMHhERiwweEJFLDB4
Q0MsCisgICAgMHg0NCwweDM5LDB4RTMsMHgzMCwweEVELDB4RUQsMHhGNSwweDg3LDB4NDQsMHgz
OSwweDAzLDB4MzEsMHg3RSwweEZBLDB4RUUsMHhBQiwKKyAgICAweDAzLDB4MzEsMHhDMiwweDMw
LDB4RTIsMHhBMiwweDAwLDB4QTAsMHgwMywweDMxLDB4QzIsMHgzMCwweDA4LDB4MkEsMHgzRSww
eDNFLAorICAgIDB4NDQsMHgzOSwweEUyLDB4MzAsMHhBNywweDJCLDB4QUIsMHhGQiwweDI0LDB4
MzksMHhFMiwweDMwLDB4REMsMHhCOCwweDI4LDB4QUEsCisgICAgMHgyNCwweDM5LDB4RTMsMHgz
MCwweEVBLDB4RjgsMHhBOCwweDAwLDB4MjQsMHgzOSwweEMyLDB4MzAsMHhCRCwweDIzLDB4MDAs
MHhBMCwKKyAgICAweDI0LDB4MzksMHhFMywweDMwLDB4MjcsMHgzQywweEEwLDB4QUUsMHgyNCww
eDM5LDB4RTMsMHgzMCwweEZFLDB4NUUsMHg3QSwweEIyLAorICAgIDB4MjMsMHgzOSwweEUzLDB4
MzAsMHg1RSwweEVFLDB4RjgsMHhDOCwweDIzLDB4MzksMHhDMiwweDI4LDB4RkYsMHhFRiwweEZF
LDB4RDIsCisgICAgMHgwMywweDMxLDB4QzIsMHgyOCwweEJCLDB4M0YsMHhCNiwweDJBLDB4MjQs
MHgzOSwweEMyLDB4MzAsMHhGRSwweEZBLDB4RjIsMHg3QSwKKyAgICAweEUzLDB4MzAsMHhDMiww
eDI4LDB4NUEsMHgyQSwweDBELDB4M0QsMHgwMywweDMxLDB4QzIsMHgyOCwweDU3LDB4N0UsMHhG
RSwweDM0LAorICAgIDB4MDMsMHgzMSwweEEyLDB4MjAsMHg2RiwweEZGLDB4QUIsMHhBOCwweDAz
LDB4MzEsMHhDMiwweDI4LDB4NTUsMHhERCwweEY3LDB4NEIsCisgICAgMHhFMywweDI4LDB4QTIs
MHgyMCwweDU3LDB4OUUsMHhFQSwweDAwLDB4RTMsMHgyOCwweEEyLDB4MjgsMHhGRCwweEZGLDB4
RjMsMHhGMywKKyAgICAweEMyLDB4MjgsMHhBMiwweDIwLDB4OTcsMHhBNSwweDA1LDB4MEUsMHhD
MywweDI4LDB4ODEsMHgyMCwweEZFLDB4RTAsMHgwMCwweDgwLAorICAgIDB4QzIsMHgyOCwweDgy
LDB4MjAsMHg1NSwweEQ1LDB4REIsMHhBOCwweEMzLDB4MjgsMHg4MiwweDIwLDB4RkQsMHhGNSww
eEI3LDB4MkIsCisgICAgMHhDMiwweDI4LDB4ODIsMHgyMCwweEY3LDB4RDUsMHhGNywweEFFLDB4
QzMsMHgyOCwweDgxLDB4MjAsMHhBQSwweDZGLDB4QkEsMHhGQywKKyAgICAweEEyLDB4MjgsMHg4
MiwweDIwLDB4REYsMHhGRiwweEJGLDB4QkMsMHhDMiwweDI4LDB4ODIsMHgyMCwweEZGLDB4MkYs
MHgyRiwweDNFLAorICAgIDB4RTIsMHgyOCwweEEyLDB4MjgsMHhBQiwweEE3LDB4RjUsMHhENSww
eDAzLDB4MzEsMHhDMiwweDI4LDB4MDMsMHgzQiwweEE3LDB4QkQsCisgICAgMHgwMywweDMxLDB4
QTIsMHgyOCwweDcyLDB4RUEsMHhCQSwweEZBLDB4MDMsMHgzMSwweEEyLDB4MjgsMHhFRiwweDM1
LDB4M0YsMHgzRSwKKyAgICAweDI0LDB4MzksMHhDMiwweDI4LDB4RkYsMHg5RiwweDlGLDB4M0Ys
MHgyNCwweDM5LDB4MDMsMHgzMSwweDU1LDB4QjUsMHgzRiwweDJBLAorICAgIDB4ODUsMHg0MSww
eEUyLDB4MzAsMHhBRCwweEE5LDB4MkYsMHgyQSwweEM2LDB4NTEsMHg2MywweDQxLDB4QkYsMHhF
QSwweDA5LDB4MDIsCisgICAgMHgwNiwweDVBLDB4QzYsMHg1MSwweEE5LDB4RUIsMHhCMiwweDNF
LDB4MDYsMHg1QSwweEM1LDB4NTEsMHhGOCwweEFBLDB4OTIsMHhFMiwKKyAgICAweDA2LDB4NUEs
MHhBNSwweDUxLDB4RUIsMHhCNywweEJGLDB4QTgsMHg0OCwweDZBLDB4RTYsMHg1OSwweEVGLDB4
QjUsMHgzQiwweEFELAorICAgIDB4NjgsMHg2QSwweDA2LDB4NUEsMHhFOSwweEE1LDB4QUYsMHgy
RiwweDg4LDB4NzIsMHgyNywweDYyLDB4QUYsMHgyOSwweDI1LDB4RjMsCisgICAgMHhBOSwweDcy
LDB4NjgsMHg2QSwweDJFLDB4QUEsMHhBQSwweEY2LDB4RUEsMHg3QSwweDY4LDB4NkEsMHhGRCww
eEZGLDB4RjUsMHhFMywKKyAgICAweENBLDB4NzIsMHg0OCwweDZBLDB4NUUsMHg3RiwweEVBLDB4
OEEsMHhDOSwweDcyLDB4NjgsMHg2QSwweDJELDB4QUUsMHgyMywweEMyLAorICAgIDB4QzksMHg3
QSwweDY4LDB4NkEsMHhFQiwweENBLDB4QjgsMHg5QSwweEM5LDB4NzIsMHg2NywweDZBLDB4OEIs
MHhBRiwweDU3LDB4RkUsCisgICAgMHhFQSwweDdBLDB4NjgsMHg2QSwweDgzLDB4QTUsMHhGRCww
eDdGLDB4QzksMHg3QSwweDY3LDB4NkEsMHhCOCwweEFGLDB4MzcsMHhBRCwKKyAgICAweEM5LDB4
N0EsMHg2NywweDZBLDB4QUMsMHgyRiwweDZBLDB4N0UsMHgwQSwweDgzLDB4QTksMHg3MiwweDhC
LDB4RUYsMHg3RiwweEY1LAorICAgIDB4MEEsMHg4MywweEE4LDB4NzIsMHg3OCwweEZCLDB4QjUs
MHhGRCwweDBCLDB4ODMsMHg4OCwweDcyLDB4RkQsMHg3RiwweDY4LDB4QkIsCisgICAgMHhFOSww
eDdBLDB4ODgsMHg3MiwweEE4LDB4RjUsMHhERCwweDYzLDB4RTksMHg3QSwweDg4LDB4NzIsMHhC
MCwweEFBLDB4QUIsMHhERiwKKyAgICAweEU5LDB4N0EsMHg4OCwweDcyLDB4N0UsMHhGRSwweEFG
LDB4MjksMHhFOSwweDdBLDB4ODgsMHg3MiwweDk1LDB4RjcsMHg3QywweDZFLAorICAgIDB4RUEs
MHg3QSwweEE5LDB4NzIsMHhFQiwweENBLDB4OEQsMHg2RCwweEM5LDB4N0EsMHg2OCwweDcyLDB4
OUEsMHhGMiwweEU4LDB4QUEsCisgICAgMHhFOSwweDdBLDB4ODgsMHg3MiwweEFCLDB4RkQsMHgy
RCwweDBELDB4RUEsMHg3QSwweDg5LDB4NzIsMHhBMiwweDgyLDB4RjAsMHhEMCwKKyAgICAweEVB
LDB4N0EsMHhBOSwweDcyLDB4QkYsMHhCRSwweEI3LDB4RjUsMHhFQSwweDdBLDB4ODgsMHg3Miww
eDgyLDB4NUEsMHhCNiwweEFBLAorICAgIDB4MEIsMHg3QiwweEE5LDB4NzIsMHhCRCwweERELDB4
QkUsMHhGOCwweDJCLDB4ODMsMHhBOSwweDcyLDB4MkEsMHhFRSwweEZGLDB4RkYsCisgICAgMHgw
QSwweDgzLDB4QTksMHg3MiwweEEyLDB4RjIsMHhGRCwweEI1LDB4NEIsMHg4MywweEM5LDB4N0Es
MHhGRCwweEZGLDB4MzUsMHhBNywKKyAgICAweDJCLDB4ODMsMHhFOSwweDdBLDB4RkYsMHhGNyww
eERDLDB4N0YsMHgyQiwweDgzLDB4RTksMHg3QSwweEZBLDB4RjUsMHhDRCwweDdELAorICAgIDB4
RTIsMHgzOCwweEExLDB4MzAsMHg5OCwweDA4LDB4MDIsMHg4QSwweDAzLDB4NDEsMHhDMiwweDM4
LDB4QTksMHhGOCwweDBBLDB4QUIsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEZGLDB4RkYs
MHgwRiwweDhCLDB4MDMsMHg0MSwweEExLDB4MzAsMHhFNiwweEJBLDB4QUEsMHhBMiwKKyAgICAw
eDAzLDB4NDEsMHhDMiwweDM4LDB4N0UsMHg3RiwweENGLDB4Q0IsMHgwMiwweDM5LDB4QTIsMHgz
MCwweDI3LDB4M0IsMHhBRiwweDJGLAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhGQSwweEZF
LDB4RkMsMHhGNiwweDAzLDB4NDEsMHhDMiwweDM4LDB4QjcsMHg5NSwweDJGLDB4QUIsCisgICAg
MHgyMywweDQxLDB4QzIsMHgzOCwweDVBLDB4NzgsMHhBOCwweEZBLDB4RTIsMHgzOCwweEExLDB4
MzAsMHgyMSwweEEwLDB4OEEsMHg4MiwKKyAgICAweDAzLDB4NDEsMHhBMSwweDMwLDB4MkMsMHhB
MiwweEFFLDB4RkQsMHgyMywweDM5LDB4QzIsMHgzOCwweERGLDB4RkYsMHhGNSwweDQ1LAorICAg
IDB4RTIsMHgzOCwweEMyLDB4MzgsMHgwMCwweDBBLDB4OUUsMHg3RiwweDAzLDB4NDEsMHhDMiww
eDM4LDB4REIsMHg3QiwweEFCLDB4RkYsCisgICAgMHgyMywweDQxLDB4QzEsMHgzMCwweDdCLDB4
RkYsMHhGRiwweEJELDB4MDMsMHgzOSwweEMyLDB4MzgsMHg1QSwweDdFLDB4MDYsMHg4RiwKKyAg
ICAweDAyLDB4MzksMHhBMSwweDMwLDB4NjIsMHhGQSwweEQyLDB4N0EsMHhFMiwweDM4LDB4QzEs
MHgzOCwweEE5LDB4NDMsMHhDRCwweDI3LAorICAgIDB4QTIsMHgzOCwweEUzLDB4MzAsMHhCQSww
eEZCLDB4RUEsMHhBQSwweDAzLDB4NDEsMHhBMSwweDMwLDB4QkQsMHg5NywweEFFLDB4MkUsCisg
ICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDVGLDB4N0IsMHg1RSwweDU4LDB4RTIsMHgzOCwweEEy
LDB4MzAsMHgyRSwweEE5LDB4NDMsMHg3QiwKKyAgICAweEMyLDB4MzAsMHg4MSwweDMwLDB4Qjgs
MHhCOCwweEZGLDB4QUIsMHg4MywweDQ5LDB4QzIsMHgzMCwweDI1LDB4MzUsMHhCNSwweDk1LAor
ICAgIDB4MjcsMHg2MiwweEE1LDB4NTksMHhFOCwweEU5LDB4QUUsMHhCRCwweEU1LDB4NTksMHg4
NCwweDUxLDB4QUEsMHgyOCwweEVBLDB4NjgsCisgICAgMHhDNSwweDUxLDB4MjIsMHg0MSwweEZB
LDB4NzgsMHhGQSwweDgyLDB4MjMsMHg0MSwweEMyLDB4MzAsMHhBQSwweEFGLDB4QkMsMHg5OCwK
KyAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4RUEsMHhFQSwweDJBLDB4RkUsMHgyMywweDM5LDB4
RTIsMHgzMCwweDU3LDB4RUUsMHhGRSwweEJCLAorICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHhF
QSwweDVBLDB4QjgsMHhBOCwweDAzLDB4MzEsMHhDMiwweDI4LDB4N0UsMHhCQiwweEJFLDB4MjAs
CisgICAgMHhFMywweDMwLDB4QzIsMHgyOCwweEQ1LDB4RUYsMHhGQywweDVDLDB4MDMsMHgzMSww
eEMyLDB4MjgsMHhGNywweEVGLDB4ODYsMHhBQiwKKyAgICAweDIzLDB4MzksMHhDMiwweDI4LDB4
NUYsMHhGRiwweDlGLDB4MjUsMHgwMywweDMxLDB4QzIsMHgyOCwweEJELDB4QjcsMHhGOCwweEM4
LAorICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHg4QSwweDhBLDB4QkUsMHg5RSwweDAzLDB4MzEs
MHhBMywweDI4LDB4QTIsMHgyMCwweDgwLDB4QTgsCisgICAgMHgwMywweDMxLDB4RTMsMHgzMCww
eDU1LDB4NUUsMHg1NiwweEQ1LDB4MjMsMHgzMSwweEMzLDB4MzAsMHhFRiwweEVGLDB4QTcsMHgz
NiwKKyAgICAweDIzLDB4MzksMHhDMiwweDI4LDB4RjUsMHhGRiwweEFFLDB4RjgsMHgwMywweDMx
LDB4RTMsMHgzMCwweEVELDB4MzMsMHg5OCwweDk3LAorICAgIDB4MDMsMHgzMSwweEMyLDB4Mjgs
MHg5QSwweEZFLDB4RUUsMHhBRSwweDAzLDB4MzEsMHhDMiwweDI4LDB4MDAsMHhFNiwweEVCLDB4
RUUsCisgICAgMHgwMywweDMxLDB4QzMsMHgzMCwweEFBLDB4QUIsMHhBNSwweEFGLDB4MjQsMHgz
OSwweEMyLDB4MzAsMHgyRiwweEJFLDB4N0EsMHg3NiwKKyAgICAweDI0LDB4MzksMHhDMiwweDI4
LDB4RkIsMHhCMiwweEZCLDB4QTEsMHgyNCwweDM5LDB4RTMsMHgzMCwweEZBLDB4RUYsMHhDQiww
eDIwLAorICAgIDB4NDQsMHgzOSwweEUzLDB4MzAsMHgzRCwweEJELDB4RkQsMHhGNywweDQ0LDB4
MzksMHgwMywweDM5LDB4REYsMHhEQSwweERGLDB4NTUsCisgICAgMHgyMywweDM5LDB4RTMsMHgz
OCwweEE4LDB4RUIsMHhFRiwweDdGLDB4MjMsMHgzOSwweEUzLDB4MzgsMHg4QSwweDhGLDB4Mjcs
MHhFRiwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4OEUsMHg2QywweEZDLDB4RTAsMHgyMyww
eDQxLDB4RTMsMHgzMCwweDdELDB4RkQsMHhBOCwweEEyLAorICAgIDB4MDMsMHgzOSwweEUyLDB4
MzAsMHhBNywweDE2LDB4NUMsMHhEQywweDY0LDB4NDEsMHgwMywweDM5LDB4NTUsMHhEQywweDVE
LDB4RUQsCisgICAgMHg0NSwweDQxLDB4RTMsMHgzMCwweEFBLDB4RkEsMHg3MCwweDZBLDB4MjMs
MHgzOSwweEUzLDB4MzgsMHg3QiwweDRCLDB4MkYsMHhCRiwKKyAgICAweDIzLDB4MzksMHhFMyww
eDMwLDB4MEIsMHhFMywweEU4LDB4QUEsMHgyMywweDM5LDB4RTIsMHgzMCwweDgyLDB4MDIsMHgy
MywweEI1LAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHg4RiwweEMwLDB4ODAsMHhBQSwweDIz
LDB4MzksMHhFMiwweDMwLDB4QjcsMHhGRiwweEQ5LDB4NkQsCisgICAgMHgwMywweDM5LDB4RTIs
MHgzMCwweEY4LDB4QzAsMHg3OCwweDRGLDB4MDMsMHgzOSwweEUzLDB4MzAsMHg5NSwweEQ1LDB4
RjUsMHhFRiwKKyAgICAweDQ1LDB4NDEsMHhDMiwweDMwLDB4MDgsMHg4QSwweDlGLDB4NTcsMHgy
NCwweDM5LDB4RTMsMHgzOCwweDgwLDB4QUEsMHhGRSwweDZGLAorICAgIDB4MjQsMHgzOSwweEUz
LDB4MzAsMHhBQSwweDYyLDB4N0EsMHhCQSwweDIzLDB4MzksMHhFMywweDMwLDB4QUYsMHhBMiww
eEJBLDB4OTgsCisgICAgMHgyMywweDM5LDB4RTIsMHgzMCwweEJFLDB4REEsMHg3OCwweEZBLDB4
MjQsMHgzOSwweEUyLDB4MzAsMHg3QSwweDdFLDB4RjcsMHhBNiwKKyAgICAweDIzLDB4MzksMHhF
MywweDMwLDB4RkIsMHhDQSwweEE3LDB4NkMsMHgwMywweDMxLDB4QzIsMHgyOCwweEUwLDB4QzIs
MHgxQSwweDIyLAorICAgIDB4NDQsMHgzOSwweEUyLDB4MjgsMHhENSwweEZBLDB4RUEsMHhGRSww
eDAzLDB4MzEsMHhDMiwweDI4LDB4MzcsMHhFNiwweEFBLDB4ODMsCisgICAgMHgwMywweDMxLDB4
QzIsMHgyOCwweEY2LDB4OEEsMHgzQSwweEFBLDB4MDMsMHgzMSwweEMyLDB4MjgsMHhFMywweEZF
LDB4QkEsMHgyMiwKKyAgICAweDAzLDB4MzEsMHhDMywweDI4LDB4N0EsMHhGRCwweEZGLDB4RUEs
MHhFMywweDMwLDB4QTIsMHgyOCwweEZCLDB4M0UsMHhFRiwweEY3LAorICAgIDB4RTMsMHgzMCww
eEEyLDB4MjgsMHhCQSwweEIyLDB4MkIsMHg4MywweEUzLDB4MzAsMHhBMiwweDI4LDB4N0EsMHhC
QywweEVBLDB4ODMsCisgICAgMHhFMywweDI4LDB4ODIsMHgyOCwweEJBLDB4RUQsMHhDRCwweDhB
LDB4QzIsMHgyOCwweEEyLDB4MjgsMHg0RSwweDIwLDB4MDMsMHg4QSwKKyAgICAweEUzLDB4MzAs
MHhBMywweDI4LDB4RkIsMHhGMiwweEE4LDB4MkUsMHgwMywweDMxLDB4QTIsMHgyOCwweERGLDB4
QkEsMHhGRiwweDhCLAorICAgIDB4RTIsMHgyOCwweEEyLDB4MjgsMHg1NywweEJGLDB4MEEsMHg4
MiwweEUzLDB4MzAsMHhBMiwweDI4LDB4NTksMHg4RiwweDAwLDB4MEEsCisgICAgMHgwMywweDMx
LDB4QTIsMHgyOCwweEQ1LDB4OUQsMHhBRSwweDBBLDB4MDMsMHgzMSwweEMyLDB4MjgsMHg5Riww
eDJGLDB4ODUsMHgyQSwKKyAgICAweDI0LDB4MzksMHhFMywweDMwLDB4NTcsMHg3RiwweDRGLDB4
RkYsMHgwMywweDM5LDB4RTMsMHgzMCwweDA5LDB4NjksMHg1RCwweEI1LAorICAgIDB4NDQsMHgz
OSwweEUzLDB4MzAsMHhCRiwweEFELDB4QjMsMHgzRiwweDY1LDB4NDEsMHgyNCwweDM5LDB4QTks
MHgwMywweDBCLDB4QTUsCisgICAgMHgwNywweDVBLDB4NjUsMHg0OSwweDdGLDB4QUYsMHhBRiww
eDBGLDB4MDYsMHg1QSwweEE1LDB4NDksMHhCRCwweEU5LDB4RUMsMHgwMCwKKyAgICAweDA2LDB4
NUEsMHhDNiwweDUxLDB4QkYsMHgwNiwweDgzLDB4MEUsMHgyNywweDYyLDB4QzUsMHg1MSwweDJG
LDB4RjcsMHhDRSwweEEyLAorICAgIDB4MjYsMHg2MiwweEM1LDB4NTEsMHhCRSwweDlFLDB4QUIs
MHhBQiwweDQ3LDB4NjIsMHgwNywweDYyLDB4RjMsMHhFQSwweDZFLDB4REQsCisgICAgMHg2OCww
eDZBLDB4MDcsMHg2MiwweEI1LDB4MjUsMHgwNywweDIyLDB4QTksMHg3MiwweDQ4LDB4NkEsMHg2
QiwweEEyLDB4RkYsMHhBQiwKKyAgICAweEE5LDB4NzIsMHg0OCwweDZBLDB4M0EsMHgzRCwweEZG
LDB4RkIsMHhFQSwweDdBLDB4NjgsMHg2QSwweEZDLDB4RkIsMHg3QiwweDdELAorICAgIDB4RUEs
MHg3QSwweDg5LDB4NzIsMHgyQiwweEFBLDB4RkQsMHhGNSwweEM5LDB4N0EsMHg4OCwweDZBLDB4
MEIsMHhBRiwweDdGLDB4NkUsCisgICAgMHhDOSwweDdBLDB4NDcsMHg2MiwweDZBLDB4QTgsMHgw
MiwweDJCLDB4RTksMHg3QSwweDY4LDB4NkEsMHg1NywweEJGLDB4RUUsMHgwQSwKKyAgICAweEM5
LDB4NzIsMHg4OCwweDcyLDB4RTgsMHhFRSwweDFGLDB4RkEsMHhFQSwweDdBLDB4ODcsMHg2QSww
eDc1LDB4NzcsMHhBQSwweDJGLAorICAgIDB4QzgsMHg3QSwweDY3LDB4NkEsMHgwQSwweDhELDB4
QTgsMHhBOCwweEU5LDB4N0EsMHg2OCwweDcyLDB4MjMsMHhBQSwweEFFLDB4REUsCisgICAgMHhF
OSwweDdBLDB4QTksMHg3MiwweEYxLDB4NDIsMHg4MCwweEE5LDB4RUEsMHg3QSwweDg4LDB4NzIs
MHgzRiwweEU2LDB4RkMsMHhBRiwKKyAgICAweEVBLDB4N0EsMHhBOSwweDdBLDB4QzIsMHhBMyww
eEE5LDB4NTgsMHgwQSwweDgzLDB4QTgsMHg3MiwweDdGLDB4N0EsMHg2MiwweEM5LAorICAgIDB4
RTksMHg3QSwweDg4LDB4NzIsMHgwQiwweDM3LDB4OTcsMHhBMywweDA5LDB4N0IsMHhBOSwweDcy
LDB4QTQsMHhGMiwweEVCLDB4RDQsCisgICAgMHhDOSwweDdBLDB4ODgsMHg3MiwweEY4LDB4Q0Us
MHg2QSwweDYzLDB4RUEsMHg3QSwweDg4LDB4NzIsMHhDQiwweEJGLDB4QUQsMHg4MiwKKyAgICAw
eDBBLDB4N0IsMHhBOCwweDcyLDB4RUQsMHhBNywweDhCLDB4QTMsMHgwQSwweDdCLDB4QzksMHg3
QSwweEZCLDB4QUEsMHhFQSwweEZDLAorICAgIDB4RUEsMHg3QSwweDg4LDB4NkEsMHhGQSwweEY2
LDB4OEEsMHgwOCwweEVBLDB4N0EsMHg2OCwweDZBLDB4OEYsMHhBNywweEI3LDB4RUEsCisgICAg
MHhFQSwweDdBLDB4QTksMHg3MiwweDIwLDB4MTAsMHhCRiwweDVFLDB4RUEsMHg3QSwweEE5LDB4
NzIsMHg4NSwweDAyLDB4QjIsMHhGRCwKKyAgICAweDBBLDB4ODMsMHhBOSwweDcyLDB4NUQsMHhG
RCwweDdGLDB4OEUsMHgwQSwweDgzLDB4QTksMHg3MiwweDI3LDB4QjcsMHhERCwweEVGLAorICAg
IDB4MkEsMHg4MywweEM5LDB4N0EsMHg4RSwweENCLDB4QTUsMHhENSwweDBBLDB4ODMsMHhDOSww
eDdBLDB4MzgsMHg3RSwweDdFLDB4QkEsCisgICAgMHhFMiwweDM4LDB4QzIsMHgzOCwweDVCLDB4
NUIsMHgwQSwweEM4LDB4MjMsMHgzOSwweEMyLDB4MzgsMHhFNywweDI2LDB4RUYsMHhBQSwKKyAg
ICAweDIzLDB4MzksMHhDMiwweDM4LDB4RkQsMHhGRiwweEYzLDB4RkIsMHgwMiwweDM5LDB4QzIs
MHgzOCwweEVGLDB4RjgsMHhFQSwweDlGLAorICAgIDB4MDMsMHg0MSwweEExLDB4MzAsMHhBMiww
eEFBLDB4QkEsMHhGRSwweDAzLDB4NDEsMHhDMiwweDM4LDB4QTcsMHg3OCwweDVBLDB4RDcsCisg
ICAgMHhFMiwweDM4LDB4QzIsMHgzOCwweEQwLDB4QkYsMHgwRiwweDIxLDB4MjMsMHg0MSwweEMy
LDB4MzgsMHg2RCwweEZELDB4Q0YsMHhFMywKKyAgICAweDAyLDB4MzksMHhDMiwweDM4LDB4RkEs
MHg0QSwweEUzLDB4RkYsMHhFMiwweDM4LDB4QTEsMHgzMCwweDIwLDB4QjIsMHgyRiwweDJFLAor
ICAgIDB4MDMsMHg0MSwweEExLDB4MzAsMHhCNywweDhBLDB4RUEsMHhCQSwweDAyLDB4MzksMHhD
MiwweDM4LDB4QUIsMHg4QiwweDRCLDB4NzgsCisgICAgMHhFMiwweDM4LDB4QTEsMHgzMCwweDg4
LDB4MjAsMHgwMiwweDBCLDB4RTIsMHgzOCwweEExLDB4MzAsMHhBMCwweEEwLDB4NjAsMHhFOCwK
KyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4RUYsMHhEOSwweEZGLDB4MkYsMHgwMiwweDM5LDB4
QzIsMHgzOCwweEI3LDB4RkYsMHhGRiwweDY4LAorICAgIDB4MDIsMHgzOSwweEMyLDB4MzgsMHhG
NiwweERBLDB4RjcsMHhERCwweEUyLDB4MzgsMHhBMiwweDMwLDB4OEUsMHgwMCwweDI4LDB4MEMs
CisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDQ5LDB4RTcsMHhGNSwweEQ3LDB4MDMsMHgzOSww
eEMyLDB4MzgsMHgxRCwweDJGLDB4MjksMHgwOCwKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4
NkUsMHg3QSwweDc4LDB4NzgsMHhDMiwweDM4LDB4QTEsMHgzMCwweEMwLDB4RkEsMHhGRSwweDUw
LAorICAgIDB4RTIsMHgzOCwweEExLDB4MzAsMHg1RiwweEU1LDB4MjUsMHgzNSwweDg1LDB4NTEs
MHhBMSwweDMwLDB4QjUsMHhCNSwweEI3LDB4MzcsCisgICAgMHhBOCwweDcyLDB4NDMsMHg0OSww
eEJELDB4RUYsMHhFQSwweEEyLDB4RTUsMHg1OSwweDg0LDB4NTEsMHg2OCwweENCLDB4MEEsMHgw
OCwKKyAgICAweEM1LDB4NTEsMHg4NCwweDQ5LDB4NDIsMHg2MiwweEZFLDB4N0UsMHgyMywweDQx
LDB4QzIsMHgzMCwweEY4LDB4NTAsMHhGOCwweEY4LAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAs
MHhBRiwweDZGLDB4NUYsMHg4MCwweDAzLDB4MzEsMHhDMiwweDI4LDB4MDIsMHgyMywweDIyLDB4
MUYsCisgICAgMHgwMywweDMxLDB4RTMsMHgzMCwweEJFLDB4NUMsMHg1NywweDVGLDB4MjQsMHgz
OSwweEUzLDB4MzAsMHg1QSwweDdGLDB4RkQsMHg2QiwKKyAgICAweDIzLDB4MzEsMHhDMiwweDMw
LDB4NzcsMHhGRSwweDVGLDB4QkYsMHgwMywweDM5LDB4QzIsMHgyOCwweEZGLDB4N0IsMHhBQiww
eEYyLAorICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHg4NywweEZELDB4RUEsMHhFQSwweDAzLDB4
MzEsMHhBMiwweDI4LDB4Q0EsMHhFRSwweDZCLDB4QkYsCisgICAgMHgwMywweDMxLDB4QzIsMHgz
MCwweEQ3LDB4RjUsMHhCOSwweDhCLDB4MDMsMHgzMSwweEMyLDB4MzAsMHhFQSwweDc4LDB4N0Es
MHg2MiwKKyAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4ODMsMHhCQiwweEZCLDB4RjUsMHgwMyww
eDMxLDB4QTIsMHgzMCwweDI4LDB4QUEsMHhBRSwweDhBLAorICAgIDB4MDMsMHgzMSwweEMyLDB4
MzAsMHhFOCwweEJBLDB4RTIsMHg2QSwweDAzLDB4MzEsMHhDMiwweDI4LDB4OEEsMHgwQiwweEE5
LDB4M0QsCisgICAgMHgyNCwweDM5LDB4QzIsMHgzMCwweEZGLDB4OEUsMHgyQiwweDlGLDB4RTMs
MHgzMCwweEMyLDB4MjgsMHhFQSwweEFFLDB4RUMsMHhGRSwKKyAgICAweDI0LDB4MzksMHhFMyww
eDMwLDB4NzksMHhFQSwweDdGLDB4NTUsMHgwMywweDMxLDB4QTIsMHgzMCwweEJBLDB4QUUsMHgy
QSwweDIyLAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHg4OSwweDVELDB4NTUsMHg1NywweDI0
LDB4MzksMHhDMiwweDMwLDB4ODIsMHhFQSwweEI3LDB4QkYsCisgICAgMHgyNCwweDM5LDB4RTIs
MHgzMCwweEZFLDB4N0EsMHg2QiwweDVGLDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBMiwweEJCLDB4
RUIsMHhDRiwKKyAgICAweDAzLDB4MzksMHhFMywweDMwLDB4QTgsMHgyRSwweDJCLDB4OTUsMHgy
NCwweDM5LDB4RTIsMHgzMCwweEVCLDB4QUEsMHhGQSwweDdGLAorICAgIDB4MDMsMHgzOSwweEUz
LDB4MzAsMHhDMSwweDY4LDB4NzgsMHhGMywweDAzLDB4MzksMHhFMywweDMwLDB4QzMsMHhDNyww
eEVFLDB4OEIsCisgICAgMHg0NCwweDQxLDB4QzIsMHgzMCwweERGLDB4MkUsMHhGRiwweDdELDB4
MjQsMHgzOSwweEUzLDB4MzgsMHhFMCwweEZBLDB4RUIsMHhFQiwKKyAgICAweDQ0LDB4NDEsMHhF
MywweDMwLDB4QTMsMHhFQiwweDdGLDB4NUYsMHgwMywweDM5LDB4RTMsMHgzOCwweDlDLDB4Qjgs
MHg1QiwweDFCLAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzgsMHhFQiwweDhCLDB4RkQsMHhENyww
eDAzLDB4MzksMHhFMywweDMwLDB4MjAsMHgwMCwweDgyLDB4ODMsCisgICAgMHg0NCwweDQxLDB4
MDMsMHgzOSwweDU1LDB4QUYsMHhBRCwweDZELDB4MjMsMHgzOSwweEUzLDB4MzAsMHgwQiwweDg5
LDB4QUEsMHhCNywKKyAgICAweDIzLDB4MzksMHhFMiwweDM4LDB4Q0IsMHhDMiwweEMyLDB4RkEs
MHgyNCwweDM5LDB4RTMsMHgzMCwweEJELDB4NkQsMHhCRiwweDE3LAorICAgIDB4MjQsMHgzOSww
eEMyLDB4MzAsMHhGNywweEFFLDB4RUMsMHhCOCwweDAzLDB4MzksMHhFMywweDMwLDB4RkUsMHg3
RCwweDlFLDB4MjMsCisgICAgMHgyNCwweDM5LDB4QzMsMHgzMCwweEFBLDB4QjUsMHhCQSwweEY4
LDB4MjMsMHgzOSwweEM0LDB4MzAsMHgwQSwweDJBLDB4QjIsMHhBQSwKKyAgICAweDIzLDB4Mzks
MHgwMywweDMxLDB4N0YsMHg3RSwweEI2LDB4OTUsMHgyMywweDM5LDB4RTIsMHgzMCwweEU3LDB4
MkYsMHgyQywweDMyLAorICAgIDB4NDQsMHgzOSwweEUyLDB4MzAsMHhGQiwweDdFLDB4RkEsMHg4
QSwweDIzLDB4MzksMHhDMiwweDI4LDB4QUEsMHg5QSwweEJFLDB4MkEsCisgICAgMHgyMywweDM5
LDB4RTMsMHgzMCwweDVBLDB4RkYsMHhCRSwweEFBLDB4MDMsMHgzMSwweEUzLDB4MzAsMHgyOSww
eEZELDB4RDcsMHgyQywKKyAgICAweDI0LDB4MzksMHhFMywweDMwLDB4RjgsMHhGRiwweEZBLDB4
RTIsMHgyNCwweDM5LDB4RTMsMHgyOCwweERGLDB4REYsMHhCQSwweEIzLAorICAgIDB4MjQsMHgz
OSwweEUzLDB4MzAsMHg3MywweEZBLDB4QTAsMHhBQSwweDA0LDB4MzEsMHhDMywweDI4LDB4RDcs
MHhENywweEJDLDB4MzAsCisgICAgMHgwNCwweDMxLDB4RTMsMHgzMCwweDU1LDB4RjUsMHhFQiww
eDcwLDB4MjQsMHgzMSwweEUzLDB4MzAsMHg3RiwweDhGLDB4RUYsMHg5NywKKyAgICAweDAzLDB4
MzEsMHhDMiwweDI4LDB4RUYsMHhFMCwweEU4LDB4QTAsMHgwMywweDMxLDB4QTIsMHgyOCwweEI3
LDB4RUEsMHhBMiwweEEwLAorICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHgzNiwweEEyLDB4MDMs
MHhBMiwweDIzLDB4MzEsMHhFMywweDMwLDB4RDUsMHhGNywweEZELDB4RkEsCisgICAgMHhFMyww
eDMwLDB4MDMsMHgyOSwweDJGLDB4MkIsMHhCMCwweDIwLDB4MjQsMHgzOSwweEMyLDB4MjgsMHhE
RiwweEZBLDB4RTIsMHgyMiwKKyAgICAweDI0LDB4MzksMHhFMywweDMwLDB4QkYsMHg4MywweDgx
LDB4QUEsMHgyNCwweDM5LDB4MDMsMHgzMSwweDU3LDB4NTcsMHhGRiwweDNGLAorICAgIDB4NDQs
MHg0MSwweEUzLDB4MzAsMHg3RCwweEY4LDB4RUUsMHhGRSwweDI0LDB4MzksMHhFMywweDMwLDB4
MzcsMHhBQSwweDIyLDB4MjAsCisgICAgMHg2NCwweDQxLDB4MDMsMHgzMSwweDI3LDB4MkQsMHhB
QiwweDJBLDB4QzUsMHg1MSwweDQzLDB4MzksMHhENSwweEJGLDB4QUYsMHgyQSwKKyAgICAweDA3
LDB4NUEsMHhBNSwweDQ5LDB4QjUsMHhCRiwweEJGLDB4M0YsMHgyNywweDYyLDB4RTYsMHg1OSww
eEM4LDB4QUUsMHgwNSwweDI3LAorICAgIDB4MjcsMHg2MiwweEU2LDB4NTksMHgyRiwweEJDLDB4
RDYsMHg3OCwweDQ3LDB4NjIsMHhFNSwweDU5LDB4NkEsMHhBMiwweEJELDB4MkQsCisgICAgMHgy
NywweDYyLDB4QzUsMHg1OSwweDZFLDB4QzAsMHhDOCwweEUwLDB4NjgsMHg2QSwweEU2LDB4NTks
MHgzRCwweEFELDB4MzUsMHhBNSwKKyAgICAweDg4LDB4NkEsMHgyNywweDYyLDB4QkYsMHhENyww
eERGLDB4ODcsMHhBOSwweDZBLDB4NDgsMHg2QSwweEVGLDB4QUUsMHhDQiwweEU3LAorICAgIDB4
QTgsMHg2QSwweDQ4LDB4NkEsMHg3QiwweDdGLDB4NzcsMHhERiwweDY4LDB4NkEsMHg0NywweDYy
LDB4OEIsMHhFMywweEYyLDB4RTEsCisgICAgMHhBOSwweDcyLDB4MjcsMHg2MiwweDJGLDB4QkIs
MHhCNywweEVCLDB4QTksMHg3MiwweDY4LDB4NkEsMHgyQywweDhGLDB4M0QsMHhCRCwKKyAgICAw
eEE5LDB4NzIsMHg0OCwweDZBLDB4MEIsMHgwMiwweDcyLDB4RjAsMHhDOSwweDdBLDB4NjcsMHg2
QSwweDJBLDB4QkIsMHhFQiwweEZELAorICAgIDB4RTksMHg3QSwweDg4LDB4NzIsMHg3OCwweDJF
LDB4RDksMHg1NSwweEM5LDB4N0EsMHg0NywweDYyLDB4MkYsMHg5NCwweEJBLDB4QUEsCisgICAg
MHhDOSwweDdBLDB4ODgsMHg3MiwweEJBLDB4QkEsMHgyQSwweEVGLDB4QzksMHg3QSwweDY3LDB4
NkEsMHhFQSwweEEyLDB4MDAsMHg4QSwKKyAgICAweEM5LDB4N0EsMHhBOCwweDcyLDB4OEEsMHhF
OSwweDcyLDB4RkMsMHhFOSwweDdBLDB4ODgsMHg3MiwweEUzLDB4RUUsMHg3NywweDVGLAorICAg
IDB4RUEsMHg3QSwweEE5LDB4NzIsMHg2MiwweEVCLDB4OUQsMHg1RiwweDBBLDB4N0IsMHhBOCww
eDcyLDB4RUYsMHhGRCwweEZGLDB4OUYsCisgICAgMHgwQSwweDdCLDB4QTgsMHg3MiwweENCLDB4
RjMsMHg2QiwweEFCLDB4RTksMHg3QSwweEE4LDB4NzIsMHhFQywweEFELDB4OEYsMHg3RiwKKyAg
ICAweDBBLDB4N0IsMHhBOCwweDcyLDB4RDcsMHhBNywweDBFLDB4M0IsMHgwQSwweDgzLDB4QTks
MHg2QSwweEVFLDB4RDcsMHhGNywweEUyLAorICAgIDB4RUEsMHg3QSwweEE5LDB4NzIsMHhFOCww
eDQ3LDB4QkYsMHg1RiwweEVBLDB4N0EsMHhBOSwweDcyLDB4QkYsMHhGQSwweEZCLDB4N0UsCisg
ICAgMHhFQSwweDdBLDB4QTksMHg3MiwweDNDLDB4QUEsMHhCQywweDRGLDB4RUEsMHg3QSwweDg5
LDB4NzIsMHg5QSwweEZFLDB4MEUsMHgwNiwKKyAgICAweEVBLDB4N0EsMHhBOSwweDcyLDB4N0Us
MHhCMywweEFFLDB4RkYsMHhFQSwweDdBLDB4ODgsMHg2QSwweEVGLDB4NTgsMHhBMiwweDAwLAor
ICAgIDB4MEIsMHg4MywweEE5LDB4NzIsMHg4MiwweEJELDB4OTcsMHhCRiwweDBBLDB4N0IsMHhD
OSwweDdBLDB4RkMsMHhBQiwweDYyLDB4Q0UsCisgICAgMHgwQSwweDdCLDB4QTgsMHg3MiwweERG
LDB4QkUsMHgzQiwweEEzLDB4MEEsMHg4MywweEM5LDB4N0EsMHg4MywweDAxLDB4QzAsMHhGRSwK
KyAgICAweDIzLDB4NDEsMHhDMiwweDM4LDB4RkUsMHhCQywweEZGLDB4N0YsMHgwMiwweDM5LDB4
QzIsMHgzOCwweEEwLDB4QkUsMHhCRiwweDdELAorICAgIDB4MjMsMHg0MSwweEMyLDB4MzgsMHg1
RSwweEZBLDB4QkIsMHhDRiwweEMyLDB4NDAsMHgwMywweDM5LDB4RkIsMHhFRiwweEFCLDB4OUYs
CisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDVFLDB4QUMsMHhBOSwweEJELDB4MDMsMHg0MSww
eEMyLDB4MzgsMHhENSwweEZGLDB4RUEsMHhDMCwKKyAgICAweDIzLDB4NDEsMHhDMiwweDM4LDB4
QkQsMHhENSwweEQ3LDB4N0YsMHgwMywweDQxLDB4QzIsMHgzOCwweDk4LDB4OUQsMHhGNywweEQ1
LAorICAgIDB4MDMsMHg0MSwweEExLDB4MzAsMHg5QSwweEUyLDB4ODgsMHhBRiwweDAzLDB4Mzks
MHhDMiwweDM4LDB4RkYsMHhBRiwweDBBLDB4MkIsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCww
eERCLDB4RjgsMHg3QSwweEY2LDB4RTIsMHgzOCwweEMxLDB4MzAsMHg3OCwweDE4LDB4MDAsMHg4
MiwKKyAgICAweEUyLDB4MzgsMHhDMiwweDM4LDB4N0YsMHg3MCwweDYwLDB4MEYsMHgwMywweDQx
LDB4QTEsMHgzMCwweDdFLDB4RUYsMHhBQiwweEFBLAorICAgIDB4MDMsMHg0MSwweEMyLDB4Mzgs
MHg4QiwweDc5LDB4N0UsMHhGRSwweEUyLDB4MzgsMHhBMiwweDMwLDB4MDAsMHg4QSwweEYwLDB4
MjAsCisgICAgMHhFMiwweDM4LDB4QzIsMHgzOCwweDczLDB4RUIsMHgwMCwweEUwLDB4RTMsMHgz
OCwweEMyLDB4MzgsMHgyQywweERFLDB4RDQsMHhGMCwKKyAgICAweEUyLDB4MzgsMHhDMiwweDM4
LDB4MEIsMHhFMiwweDZCLDB4RUQsMHgwMywweDQxLDB4QzIsMHgzOCwweERFLDB4NTUsMHhGQiww
eEUzLAorICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHhFMiwweDZBLDB4RkEsMHhERSwweEMyLDB4
MzgsMHg4MSwweDMwLDB4QkUsMHhBQSwweDI4LDB4MzcsCisgICAgMHhFMiwweDM4LDB4QTIsMHgz
MCwweDI1LDB4M0YsMHgwQSwweDAzLDB4MjYsMHg2MiwweEUyLDB4MzgsMHhCRCwweDM1LDB4MkQs
MHgyRCwKKyAgICAweEM4LDB4N0EsMHg0NywweDZBLDB4N0YsMHhFQSwweEUyLDB4QzAsMHg0Nyww
eDZBLDB4RTUsMHg1OSwweDdCLDB4NzgsMHg3QSwweEVBLAorICAgIDB4RTYsMHg1OSwweDY0LDB4
NDksMHhGQywweDdFLDB4NzIsMHg3QSwweDQzLDB4NDEsMHhDMiwweDMwLDB4REUsMHhERSwweEZF
LDB4RjIsCisgICAgMHgyMywweDM5LDB4RTIsMHgzMCwweEYzLDB4NTksMHhERSwweEZGLDB4MDMs
MHgzOSwweEMyLDB4MjgsMHg3QiwweEVCLDB4QUUsMHhGMCwKKyAgICAweDAzLDB4MzEsMHhFMyww
eDMwLDB4NDAsMHg3QSwweERGLDB4RDcsMHgwMywweDMxLDB4QzMsMHgzMCwweDgyLDB4OEEsMHgz
RSwweERFLAorICAgIDB4MDMsMHgzMSwweEUzLDB4MzAsMHgzNSwweEQ3LDB4NTcsMHg1OSwweDAz
LDB4MzEsMHhDMywweDMwLDB4RTAsMHhGMiwweEIwLDB4QjAsCisgICAgMHgwMywweDMxLDB4RTMs
MHgzMCwweEI1LDB4NjUsMHg2NSwweEJELDB4MDMsMHgzMSwweEMyLDB4MjgsMHhGRiwweEZFLDB4
RkEsMHhBMiwKKyAgICAweEUyLDB4MzAsMHhDMiwweDI4LDB4MDIsMHgwOSwweDBCLDB4MzAsMHgw
MywweDMxLDB4QzIsMHgzMCwweEFCLDB4RDcsMHhGRiwweEZCLAorICAgIDB4RTMsMHgzMCwweEMz
LDB4MjgsMHgzQSwweEFDLDB4MDgsMHhBQSwweDAzLDB4MzEsMHhDMywweDMwLDB4QTIsMHg4Qiww
eDBBLDB4QTksCisgICAgMHhFMywweDMwLDB4QzIsMHgzMCwweDAwLDB4MEMsMHg4MywweEQ4LDB4
RTMsMHgzMCwweEMyLDB4MjgsMHgwOCwweDhDLDB4QjgsMHg2MCwKKyAgICAweDAzLDB4MzEsMHhD
MiwweDI4LDB4QkUsMHhGQiwweEE5LDB4RUIsMHgwMywweDM5LDB4QzMsMHgyOCwweEI3LDB4Rjcs
MHhBQSwweEVCLAorICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHg5RiwweDBFLDB4RUEsMHhFQiww
eDAzLDB4MzEsMHhDMywweDMwLDB4MEYsMHgyQiwweDJGLDB4QUYsCisgICAgMHgwMywweDMxLDB4
RTMsMHgzMCwweDg2LDB4RTcsMHg3NywweEJELDB4QTIsMHgzOCwweDAzLDB4MzEsMHhERiwweDdG
LDB4RkYsMHhCRCwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4QjgsMHhEOCwweERFLDB4QzIs
MHgwMywweDM5LDB4QzIsMHgzMCwweDJGLDB4MUQsMHg5RiwweERGLAorICAgIDB4MDMsMHgzMSww
eEMyLDB4MzAsMHg5NywweDA4LDB4MEMsMHgyQSwweDAzLDB4MzksMHhFMiwweDMwLDB4QzAsMHhF
MywweEI2LDB4QTgsCisgICAgMHgwMywweDM5LDB4RTIsMHgzMCwweDMyLDB4QkYsMHhGRiwweEEz
LDB4MjQsMHgzOSwweEMyLDB4MzAsMHhBOCwweEY3LDB4OUQsMHhGRiwKKyAgICAweEUzLDB4Mzgs
MHhBMiwweDMwLDB4QjgsMHhCRSwweEJFLDB4RUUsMHgwMywweDM5LDB4QzIsMHgzMCwweEEyLDB4
QTMsMHhCOSwweDBELAorICAgIDB4MDMsMHgzOSwweEMzLDB4MzAsMHhCMCwweEM4LDB4QUEsMHhF
QSwweDI0LDB4MzksMHhDMiwweDMwLDB4MkIsMHhGRiwweDY3LDB4RkUsCisgICAgMHgwMywweDM5
LDB4RTMsMHgzMCwweDFCLDB4MTUsMHgyRCwweDAxLDB4MDMsMHgzOSwweEMzLDB4MzAsMHgwMCww
eDBBLDB4QUUsMHgzRSwKKyAgICAweDIzLDB4MzksMHhFMywweDMwLDB4OEUsMHgyNywweDk3LDB4
MzUsMHgyMywweDM5LDB4RTMsMHgzOCwweDdGLDB4QjAsMHhBRiwweEI3LAorICAgIDB4MDMsMHgz
OSwweEMzLDB4MzAsMHgzQiwweDA3LDB4RkYsMHgyMCwweDI0LDB4MzksMHhFMywweDMwLDB4N0Ys
MHg2RSwweEFCLDB4QjgsCisgICAgMHg0NCwweDQxLDB4RTMsMHgzMCwweEVCLDB4RUEsMHg2QSww
eERCLDB4MjQsMHgzOSwweEMyLDB4MzAsMHhCQSwweEI2LDB4QkIsMHgyQSwKKyAgICAweDAzLDB4
MzksMHhFMywweDM4LDB4MjgsMHgyMCwweEEwLDB4MjgsMHgyNCwweDQxLDB4RTMsMHgzMCwweEZF
LDB4REUsMHhBQiwweDAzLAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHg5RiwweEQ1LDB4MkUs
MHhBQywweDIzLDB4MzksMHhFMiwweDMwLDB4MkIsMHgyMCwweDIwLDB4N0EsCisgICAgMHg0NCww
eDM5LDB4RTIsMHgzMCwweDJFLDB4QUEsMHhGRSwweEY1LDB4NDQsMHgzOSwweEUyLDB4MzAsMHhB
QSwweEE4LDB4QTcsMHhCRCwKKyAgICAweDQ0LDB4MzksMHgwMywweDMxLDB4MkQsMHgyQiwweDlG
LDB4MkUsMHg0NCwweDM5LDB4MDMsMHgzOSwweDU3LDB4RkUsMHhFQiwweEEyLAorICAgIDB4NDQs
MHgzOSwweEUzLDB4MzAsMHhFRiwweDc2LDB4QTgsMHhFMCwweDI0LDB4MzksMHgwMywweDMxLDB4
RjksMHhGNSwweDhCLDB4MDMsCisgICAgMHg0NCwweDM5LDB4MDMsMHgzMSwweEI1LDB4QUEsMHhF
QSwweDA4LDB4MjQsMHgzOSwweEUzLDB4MzAsMHhCRSwweEJDLDB4QTgsMHg4QSwKKyAgICAweDI0
LDB4MzksMHhDMiwweDMwLDB4QkYsMHhGNiwweDJFLDB4QTgsMHgyNCwweDM5LDB4RTMsMHgzMCww
eEI4LDB4NUEsMHhGRSwweENBLAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHhEQSwweEJGLDB4
QkQsMHgyMywweDI0LDB4MzksMHhFMywweDMwLDB4NTYsMHhCRSwweEZELDB4Q0UsCisgICAgMHgy
NCwweDM5LDB4RTMsMHgzMCwweEJBLDB4Q0UsMHg2QiwweENCLDB4MjQsMHgzOSwweEUzLDB4MzAs
MHhCMCwweEFCLDB4NjksMHg2QSwKKyAgICAweDQ1LDB4NDEsMHhDMiwweDMwLDB4RjcsMHhGNyww
eEFGLDB4QTgsMHgyNCwweDM5LDB4MDMsMHgzMSwweDlELDB4RjUsMHg5NiwweEE2LAorICAgIDB4
MjQsMHgzOSwweEUzLDB4MzAsMHhFQiwweEVBLDB4RUEsMHg4QiwweDI0LDB4MzksMHhFMywweDMw
LDB4MjAsMHgwMiwweDA3LDB4ODksCisgICAgMHg2NSwweDQxLDB4MDMsMHgzOSwweDVDLDB4RjUs
MHhGNywweEY1LDB4NjUsMHg0OSwweDAzLDB4MzksMHhGNywweEZBLDB4QTMsMHg4QSwKKyAgICAw
eEE2LDB4NDksMHg0NCwweDQxLDB4N0QsMHg3NSwweDdGLDB4MEIsMHhFNywweDUxLDB4NjUsMHg0
MSwweDNELDB4QUQsMHgyQiwweDhBLAorICAgIDB4MDYsMHg1QSwweEE1LDB4NTEsMHg5QSwweEFC
LDB4MkEsMHg4QSwweDA3LDB4NjIsMHhBNSwweDUxLDB4RkUsMHg5QiwweEMyLDB4RTAsCisgICAg
MHgyNywweDYyLDB4QzYsMHg1OSwweEMwLDB4RkUsMHg1RiwweDk1LDB4NDcsMHg2MiwweEU2LDB4
NTksMHgzRiwweEJELDB4QkIsMHg4RiwKKyAgICAweDg4LDB4NkEsMHhFNiwweDU5LDB4RDcsMHhG
QiwweEEyLDB4RUEsMHg2OCwweDYyLDB4MDYsMHg1QSwweEI3LDB4M0UsMHg4QSwweEVBLAorICAg
IDB4ODksMHg2QSwweDI3LDB4NjIsMHg4OSwweDBELDB4RTksMHhFRiwweDg4LDB4NzIsMHg0Nyww
eDYyLDB4Q0EsMHg3OSwweEZCLDB4RkUsCisgICAgMHhBOSwweDcyLDB4NDgsMHg2MiwweEZFLDB4
NkEsMHg3QiwweDdDLDB4ODgsMHg2QSwweDQ4LDB4NkEsMHhGRiwweEFGLDB4RjUsMHhGRiwKKyAg
ICAweDg4LDB4NzIsMHg0OCwweDZBLDB4RTgsMHg3RSwweEZGLDB4MkYsMHhBOSwweDcyLDB4Njgs
MHg2QSwweERELDB4RDUsMHhFOSwweDhBLAorICAgIDB4QTksMHg3MiwweDY4LDB4NkEsMHg3Niww
eDlDLDB4RkUsMHhCQiwweEE5LDB4NzIsMHg0NywweDZBLDB4RUMsMHg5OCwweDM3LDB4QjcsCisg
ICAgMHhDOSwweDcyLDB4ODgsMHg2QSwweDU1LDB4NTMsMHgyQSwweDhELDB4QzksMHg3MiwweDg4
LDB4NzIsMHhFRCwweEFFLDB4QjgsMHhCNiwKKyAgICAweEU5LDB4N0EsMHg4OCwweDcyLDB4NkYs
MHhGRiwweDVFLDB4RjgsMHhDOSwweDdBLDB4ODgsMHg3MiwweDZGLDB4QUYsMHhEQSwweDhCLAor
ICAgIDB4QTgsMHg3MiwweDQ4LDB4NkEsMHgwOCwweDBBLDB4REMsMHhGOCwweEM5LDB4N0EsMHg2
OCwweDZBLDB4MkEsMHhCQywweEY3LDB4RkEsCisgICAgMHhFOSwweDdBLDB4ODgsMHg3MiwweDdB
LDB4RTYsMHgwRiwweEFCLDB4QzksMHg3MiwweDY4LDB4NkEsMHgzMiwweDc2LDB4RkYsMHhCQywK
KyAgICAweEU5LDB4N0EsMHg4OCwweDcyLDB4QTgsMHgyQiwweEYyLDB4QjUsMHgwQSwweDdCLDB4
QTgsMHg3MiwweDVGLDB4NzcsMHhDMywweDNBLAorICAgIDB4RUEsMHg3MiwweDg4LDB4NkEsMHgz
RiwweEZFLDB4NkEsMHhFQywweDBBLDB4N0IsMHhBOSwweDcyLDB4OEEsMHhBRiwweEY3LDB4N0Ys
CisgICAgMHhFQSwweDdBLDB4ODgsMHg2QSwweEJBLDB4MjIsMHg3QSwweEVCLDB4RUEsMHg3QSww
eEE5LDB4NzIsMHg1QiwweEEwLDB4QTksMHgyOSwKKyAgICAweEVBLDB4N0EsMHg4OCwweDZBLDB4
MEYsMHhBQiwweEE3LDB4MEYsMHgwQiwweDgzLDB4NjcsMHg2QSwweDBBLDB4QzIsMHhGRSwweDk3
LAorICAgIDB4RTksMHg3QSwweEE5LDB4NzIsMHhERiwweEJFLDB4QTMsMHg0RiwweDJBLDB4N0Is
MHhDQSwweDdBLDB4RUQsMHg3RCwweEZGLDB4NkYsCisgICAgMHgwQSwweDdCLDB4QzksMHg3QSww
eDcyLDB4QkYsMHgyRiwweDJGLDB4MkEsMHg4MywweEM5LDB4NzIsMHhGNSwweENGLDB4QzMsMHhF
QiwKKyAgICAweEU5LDB4N0EsMHg4NywweDZBLDB4QzAsMHg0MCwweEFBLDB4QTgsMHgwQSwweDdC
LDB4QTksMHg3MiwweEU1LDB4MjUsMHhBQywweEVGLAorICAgIDB4MDMsMHg0MSwweEMyLDB4Mzgs
MHhFRSwweEM4LDB4RjYsMHhFNiwweDAzLDB4NDEsMHhDMiwweDM4LDB4QTksMHhDQiwweENGLDB4
RUYsCisgICAgMHgwMywweDQxLDB4RTIsMHgzOCwweEU3LDB4NTUsMHg4NSwweEE5LDB4MDMsMHg0
MSwweEMyLDB4MzgsMHg4QiwweEZCLDB4N0EsMHg2OCwKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4
LDB4QkEsMHhGQiwweEExLDB4Q0IsMHgyMywweDQxLDB4QzIsMHgzOCwweEVBLDB4M0IsMHhERSww
eDlBLAorICAgIDB4QzMsMHg0MCwweDAyLDB4MzksMHhGRiwweEJGLDB4RjUsMHhERiwweDAzLDB4
NDEsMHhDMiwweDM4LDB4RDcsMHgyRCwweEUyLDB4RkEsCisgICAgMHgwMywweDQxLDB4QTIsMHgz
MCwweEJGLDB4RkYsMHg2MiwweENBLDB4RTMsMHgzOCwweEExLDB4MzAsMHhCMCwweDlGLDB4QUQs
MHgzRCwKKyAgICAweEUyLDB4MzgsMHhDMiwweDMwLDB4MkYsMHg3QywweDIwLDB4ODAsMHgwMyww
eDQxLDB4QzIsMHgzOCwweDNGLDB4MkQsMHg4QiwweEJGLAorICAgIDB4MDMsMHg0MSwweEExLDB4
MzAsMHhCRSwweEI2LDB4QUUsMHg4MiwweDAzLDB4NDEsMHhDMiwweDM4LDB4RjYsMHhGRiwweDI2
LDB4QkEsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEZGLDB4REYsMHg3QSwweDhGLDB4QzIs
MHgzOCwweEUyLDB4MzAsMHgzQSwweEEyLDB4MjAsMHgyQiwKKyAgICAweEMyLDB4MzgsMHhFMiww
eDMwLDB4QUEsMHg4MCwweDIwLDB4QUIsMHgwMywweDQxLDB4QTEsMHgzMCwweEVCLDB4RUYsMHhG
OSwweDhFLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzgsMHg3RiwweDdGLDB4N0UsMHhGRSwweDAz
LDB4MzksMHhBMiwweDMwLDB4RTMsMHhFMywweEVCLDB4N0EsCisgICAgMHhFMiwweDM4LDB4ODEs
MHgzMCwweDYyLDB4NUUsMHhCQSwweEFGLDB4RTMsMHgzOCwweDgxLDB4MjgsMHg5NywweEE3LDB4
ODIsMHg4OCwKKyAgICAweDAzLDB4MzksMHhBMiwweDMwLDB4RTEsMHhFQiwweEZELDB4QjUsMHhD
NywweDdBLDB4RTIsMHgzOCwweDJELDB4MkQsMHgyRCwweDI1LAorICAgIDB4MDgsMHg4MywweDY3
LDB4NkEsMHhFMiwweDZBLDB4RkEsMHhFQSwweDY3LDB4NkEsMHg2NCwweDQ5LDB4QTgsMHhFOCww
eEUwLDB4NzgsCisgICAgMHhDNSwweDU5LDB4MDMsMHgzOSwweEYwLDB4RkUsMHhENiwweDU3LDB4
NDQsMHg0MSwweEUyLDB4MzAsMHhFQiwweEYyLDB4NzIsMHhFQSwKKyAgICAweDIzLDB4MzksMHhD
MiwweDI4LDB4MkEsMHhGQSwweDZGLDB4RUUsMHgwMywweDMxLDB4QzIsMHgyOCwweEIwLDB4QTks
MHhGRCwweEU5LAorICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHhBQiwweEVFLDB4QUYsMHhBRiww
eDAzLDB4MzEsMHhDMiwweDMwLDB4RjIsMHg4MiwweEIyLDB4QTEsCisgICAgMHgwMywweDMxLDB4
QzMsMHgzMCwweEVCLDB4MDEsMHgyRiwweEJBLDB4MDMsMHgzMSwweEMyLDB4MjgsMHhFMiwweEU4
LDB4ODAsMHg0MiwKKyAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4M0UsMHgyQiwweDJBLDB4QUQs
MHgwMywweDMxLDB4QzMsMHgzMCwweDBFLDB4MEIsMHhFOCwweEY4LAorICAgIDB4RTMsMHgzMCww
eEMyLDB4MjgsMHhFQywweENFLDB4QTcsMHgwMiwweDAzLDB4MzEsMHhDMywweDMwLDB4QkQsMHg5
RCwweEQ3LDB4QkYsCisgICAgMHhFMywweDMwLDB4QzIsMHgyOCwweEEyLDB4RUEsMHhGMCwweEU3
LDB4RTMsMHgzMCwweEMyLDB4MjgsMHgwMiwweDAxLDB4NkEsMHg4NiwKKyAgICAweDAzLDB4MzEs
MHhDMywweDMwLDB4RkEsMHgyRSwweDYzLDB4NjMsMHgwMywweDMxLDB4QzIsMHgyOCwweEZBLDB4
OTIsMHhEQiwweEJGLAorICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHhGRSwweEZFLDB4QUIsMHg4
RSwweDAzLDB4MzEsMHhDMywweDMwLDB4N0IsMHhGRiwweDJBLDB4MEUsCisgICAgMHgwMywweDMx
LDB4QTIsMHgyOCwweEZBLDB4RDYsMHhGRSwweENDLDB4RTMsMHgzMCwweEEyLDB4MjgsMHgyMiww
eEZBLDB4QTEsMHgwQiwKKyAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4MkEsMHhBOSwweDVGLDB4
N0UsMHgwMywweDMxLDB4QzIsMHgzMCwweDdDLDB4RjcsMHg2NSwweDczLAorICAgIDB4RTMsMHgz
MCwweEMyLDB4MjgsMHgwMCwweDJCLDB4OTUsMHhEQSwweDIzLDB4MzksMHhDMiwweDI4LDB4RjIs
MHhDQiwweEY3LDB4QjcsCisgICAgMHgwMywweDMxLDB4RTIsMHgzMCwweEMzLDB4QzIsMHhDRiww
eDU3LDB4MjMsMHgzMSwweEMyLDB4MzAsMHhBNywweDZFLDB4RTMsMHhFMywKKyAgICAweDAzLDB4
MzEsMHhDMiwweDMwLDB4MDIsMHgyMCwweEVDLDB4NjgsMHgwMywweDM5LDB4QzIsMHgzMCwweDg4
LDB4MDAsMHhGOCwweDBCLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHg3RSwweEVBLDB4QTIs
MHgwQSwweDAzLDB4MzksMHhDMywweDMwLDB4MkEsMHgzNywweEFCLDB4REIsCisgICAgMHgyNCww
eDM5LDB4RTMsMHgzMCwweEVFLDB4QUEsMHhBRSwweEY1LDB4MjQsMHgzOSwweEMzLDB4MzAsMHhD
MiwweDdBLDB4QjgsMHhCMiwKKyAgICAweDI0LDB4MzksMHhFMywweDMwLDB4QTksMHhBRiwweEFC
LDB4QjcsMHgyNCwweDM5LDB4RTMsMHgzMCwweDU1LDB4REUsMHhGNywweDdBLAorICAgIDB4MjQs
MHg0MSwweEUzLDB4MzAsMHgwOSwweEJFLDB4QkQsMHg2NSwweDI0LDB4MzksMHhFMywweDM4LDB4
QjQsMHgzNiwweEY0LDB4RDcsCisgICAgMHgyNCwweDQxLDB4QzMsMHgzMCwweDhBLDB4ODgsMHhF
MywweERBLDB4MjQsMHgzOSwweEUzLDB4MzgsMHg1NywweEZCLDB4RTIsMHgyRiwKKyAgICAweDI0
LDB4MzksMHhFMywweDM4LDB4NkQsMHg3QSwweDcyLDB4RUMsMHgyNCwweDM5LDB4RTMsMHgzOCww
eDMzLDB4M0IsMHgzOSwweEI3LAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHhCRiwweEI2LDB4
QTIsMHhBMiwweDI0LDB4MzksMHgwMywweDM5LDB4QkUsMHg1NSwweDVGLDB4NTUsCisgICAgMHgy
MywweDM5LDB4RTQsMHgzMCwweEZBLDB4RUEsMHhFQiwweEEyLDB4MDMsMHgzOSwweEMyLDB4MzAs
MHgzRiwweEJGLDB4RUUsMHgwMiwKKyAgICAweDI0LDB4MzksMHhFMywweDMwLDB4REYsMHhENyww
eEZDLDB4QUIsMHgwMywweDMxLDB4QzIsMHgzMCwweDIyLDB4QkYsMHgyRSwweDAwLAorICAgIDB4
MjQsMHgzOSwweEUyLDB4MzAsMHgzQSwweEJGLDB4NzgsMHhBOCwweDY1LDB4NDEsMHhFMywweDMw
LDB4RTMsMHhCQiwweEE1LDB4QTcsCisgICAgMHg2NCwweDQxLDB4MDQsMHgzMSwweDdCLDB4RUUs
MHhGMCwweEFCLDB4NDQsMHgzOSwweDAzLDB4MzEsMHhBQSwweEUyLDB4RTgsMHg3MCwKKyAgICAw
eDQ0LDB4NDEsMHgyNCwweDM5LDB4Q0IsMHg3OSwweDU1LDB4MzUsMHg0NCwweDM5LDB4MDQsMHgz
OSwweDZBLDB4NkIsMHg3QSwweEJBLAorICAgIDB4MjQsMHg0MSwweDAzLDB4MzEsMHhGNywweEJF
LDB4QTcsMHgwRSwweDY0LDB4NDEsMHgwMywweDM5LDB4RkQsMHhGNywweEU1LDB4RkYsCisgICAg
MHg0NCwweDQxLDB4RTMsMHgzMCwweEYyLDB4RTIsMHhDMiwweEFBLDB4NDQsMHgzOSwweEUzLDB4
MzAsMHg2MiwweDYyLDB4QkIsMHhBQiwKKyAgICAweDQ0LDB4NDEsMHhFMywweDMwLDB4RUIsMHg3
MywweEJBLDB4QjIsMHgyNCwweDQxLDB4MDMsMHgzMSwweDdGLDB4QUYsMHhCQiwweDA4LAorICAg
IDB4NDQsMHg0MSwweEUzLDB4MzAsMHhCNywweEZCLDB4QkEsMHhBOCwweDQ0LDB4NDEsMHgwMyww
eDM5LDB4N0UsMHhGQSwweDJGLDB4MDEsCisgICAgMHg2NSwweDQxLDB4MDMsMHgzOSwweERELDB4
RjcsMHhDQSwweDIzLDB4NjUsMHg0MSwweDA0LDB4MzksMHg3NSwweEY3LDB4MkUsMHgwQywKKyAg
ICAweEM2LDB4NTEsMHhFMywweDM4LDB4NUYsMHg1RiwweEFGLDB4MkIsMHhDNiwweDUxLDB4MjQs
MHgzOSwweEJELDB4RkQsMHgyQiwweDAwLAorICAgIDB4MjcsMHg2MiwweDg1LDB4NDksMHhGNSww
eEJELDB4QTMsMHhBMiwweDI3LDB4NjIsMHhBNSwweDQ5LDB4QkQsMHhGRSwweEFFLDB4MEEsCisg
ICAgMHgyNywweDYyLDB4QzYsMHg1MSwweEVELDB4RUYsMHhGQSwweEE4LDB4MDcsMHg2MiwweEU2
LDB4NTksMHhCQSwweDk1LDB4QjUsMHgyRiwKKyAgICAweDQ3LDB4NkEsMHhFNiwweDU5LDB4QkQs
MHhBQiwweDAyLDB4ODAsMHg0NywweDYyLDB4MDcsMHg2MiwweDNELDB4NjIsMHgwMiwweDAwLAor
ICAgIDB4ODgsMHg2QSwweDI3LDB4NjIsMHhEMiwweDQyLDB4N0QsMHg1RiwweDY4LDB4NkEsMHgw
NywweDYyLDB4QUUsMHhBQSwweDFGLDB4QkQsCisgICAgMHhBOCwweDcyLDB4NDcsMHg2QSwweDdE
LDB4QUEsMHhBRiwweERGLDB4QTksMHg3MiwweDQ3LDB4NjIsMHhBNywweEJGLDB4QjgsMHhGQSwK
KyAgICAweEE4LDB4NzIsMHg0OCwweDYyLDB4RUYsMHg1RSwweEZFLDB4QTgsMHhBOSwweDcyLDB4
MjcsMHg2MiwweEFBLDB4M0UsMHhBNywweDJBLAorICAgIDB4QTksMHg3MiwweDY4LDB4NkEsMHhE
NiwweDc3LDB4Q0YsMHg5RSwweENBLDB4NzIsMHg0OCwweDZBLDB4QUQsMHhBQiwweEFCLDB4Nzgs
CisgICAgMHhBOCwweDcyLDB4NDcsMHg2MiwweEFBLDB4MkUsMHhGRiwweEI4LDB4QTksMHg3Miww
eDY3LDB4NkEsMHhFRSwweDQ2LDB4QTAsMHgwMiwKKyAgICAweEE4LDB4NzIsMHg0NywweDYyLDB4
MEIsMHg4OSwweDI3LDB4MDIsMHhDOSwweDdBLDB4ODgsMHg2QSwweEFBLDB4OUIsMHg2RiwweEUx
LAorICAgIDB4RUEsMHg3QSwweDY3LDB4NkEsMHhGOCwweEI2LDB4QkYsMHhGRCwweEM5LDB4NzIs
MHhBOCwweDcyLDB4QUQsMHgxNSwweEJGLDB4N0EsCisgICAgMHhDOSwweDcyLDB4NjgsMHg2QSww
eDdDLDB4RkIsMHhDOSwweEFCLDB4QzksMHg3MiwweDg5LDB4NzIsMHg0MywweDg5LDB4QkYsMHhB
QSwKKyAgICAweEVCLDB4N0EsMHhBOSwweDcyLDB4RDUsMHhENSwweEYzLDB4QUYsMHhDOSwweDcy
LDB4ODgsMHg2QSwweEY1LDB4RjUsMHg5NiwweEUyLAorICAgIDB4QzgsMHg3MiwweDY4LDB4NkEs
MHhGRSwweEZBLDB4MkIsMHgxRiwweEM5LDB4NzIsMHg2NywweDZBLDB4MzAsMHhBRSwweEVBLDB4
QUEsCisgICAgMHhDOSwweDcyLDB4ODgsMHg3MiwweDAwLDB4MEIsMHgzRCwweDlBLDB4RTksMHg3
QSwweDY4LDB4NkEsMHg2OCwweEVBLDB4QkMsMHhGQSwKKyAgICAweEVBLDB4N0EsMHg4OCwweDZB
LDB4RDUsMHhCQiwweEEzLDB4QUQsMHhFQSwweDdBLDB4QTksMHg3MiwweDgxLDB4MDIsMHg3RSww
eEFELAorICAgIDB4RUEsMHg3QSwweEE5LDB4NzIsMHgzOSwweDI4LDB4MDMsMHgyQSwweDBBLDB4
N0IsMHhBOCwweDcyLDB4NTYsMHg4RSwweDJDLDB4QkUsCisgICAgMHgwQSwweDdCLDB4QTksMHg3
MiwweDU3LDB4RjUsMHg3MCwweEEwLDB4MEIsMHg4MywweDg5LDB4NzIsMHg4RiwweDZGLDB4NkYs
MHg5RiwKKyAgICAweEU5LDB4N0EsMHhBOSwweDcyLDB4MEMsMHgyMywweDZFLDB4RDYsMHgwQSww
eDdCLDB4QzksMHg3MiwweEUzLDB4QkQsMHhCRiwweEFELAorICAgIDB4MkIsMHg4MywweEM5LDB4
NzIsMHg1RiwweDc3LDB4RDcsMHgyQSwweDJCLDB4ODMsMHhBOCwweDcyLDB4QUYsMHhBQiwweEE2
LDB4RjAsCisgICAgMHgyMywweDQxLDB4QzIsMHgzOCwweDU0LDB4NUUsMHg1RSwweDVFLDB4MDMs
MHg0MSwweEMyLDB4MzgsMHhCRiwweDgxLDB4RjksMHhBMywKKyAgICAweDAyLDB4NDEsMHhDMiww
eDM4LDB4OEEsMHgyQSwweEJBLDB4QjUsMHgwMywweDQxLDB4RTIsMHgzOCwweEYzLDB4RDUsMHhG
NywweDU2LAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHg3QywweEU4LDB4QUEsMHhGNywweDIz
LDB4NDEsMHhFMiwweDM4LDB4NzMsMHhFQiwweEY1LDB4NTUsCisgICAgMHgwMywweDM5LDB4QzIs
MHgzOCwweDc2LDB4REUsMHg5MCwweERBLDB4MDMsMHg0MSwweEMyLDB4MzgsMHg2RSwweDZFLDB4
RkEsMHhBQSwKKyAgICAweEUyLDB4MzgsMHhDMiwweDMwLDB4MEIsMHg4RCwweDI3LDB4REUsMHgw
MiwweDQxLDB4QTEsMHgzMCwweEI3LDB4QkEsMHhBRSwweEE4LAorICAgIDB4RTIsMHgzOCwweEMx
LDB4MzgsMHg0MCwweEZBLDB4NEIsMHg3QywweEUyLDB4MzgsMHhDMSwweDMwLDB4NkUsMHgzNyww
eDIyLDB4MDEsCisgICAgMHgwMiwweDQxLDB4QTIsMHgzMCwweEFBLDB4ODYsMHgyMiwweEUyLDB4
MDMsMHg0MSwweEMyLDB4MzgsMHg3RiwweEZBLDB4RjgsMHhERiwKKyAgICAweEUyLDB4MzgsMHhD
MiwweDM4LDB4MjksMHhCNSwweEQ4LDB4M0IsMHhFMiwweDM4LDB4QzIsMHgzOCwweEFGLDB4QkEs
MHg1OCwweERGLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzgsMHhGQiwweEQ3LDB4OTUsMHhCQSww
eDAzLDB4MzksMHhDMiwweDM4LDB4RkUsMHhCQiwweDZBLDB4NTgsCisgICAgMHhFMiwweDM4LDB4
QTIsMHgzMCwweEFBLDB4QjgsMHhGQSwweEVFLDB4QzIsMHgzMCwweDgyLDB4MzAsMHhCMCwweEY4
LDB4QkEsMHhCMiwKKyAgICAweDAzLDB4MzksMHhBMiwweDMwLDB4RjUsMHhBNSwweDJGLDB4QUYs
MHhFMiwweDM4LDB4QzIsMHgzMCwweDBCLDB4MkMsMHhGNiwweDc0LAorICAgIDB4RTIsMHgzOCww
eEEyLDB4MzAsMHhERiwweDVFLDB4N0EsMHhGQiwweDg3LDB4NzIsMHhFMiwweDM4LDB4MEQsMHgy
RCwweEJELDB4RDUsCisgICAgMHhBNywweDcyLDB4NjQsMHg0OSwweDAwLDB4QTgsMHg3RiwweDU1
LDB4MjYsMHg2MiwweDIzLDB4NDEsMHg3OCwweDVFLDB4N0YsMHg3NSwKKyAgICAweDI0LDB4NDEs
MHhFMywweDM4LDB4MUYsMHhGQiwweEU4LDB4QTAsMHgyMywweDM5LDB4RTIsMHgzMCwweEY4LDB4
RDcsMHhERiwweEVFLAorICAgIDB4MjQsMHgzOSwweEUyLDB4MzAsMHhGRiwweDg5LDB4NjYsMHg3
RSwweDAzLDB4MzEsMHhDMiwweDMwLDB4QTgsMHgzMywweEJCLDB4RUEsCisgICAgMHgyMywweDM5
LDB4RTMsMHgzMCwweEQ1LDB4NzUsMHg3NSwweERFLDB4MDMsMHgzMSwweEMzLDB4MzAsMHgwQiww
eEI3LDB4RjMsMHhCMCwKKyAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4QUYsMHg3RSwweEFCLDB4
QzgsMHgwMywweDMxLDB4QzMsMHgzMCwweEY2LDB4RUUsMHhBRSwweEE3LAorICAgIDB4MjMsMHgz
OSwweEMyLDB4MzAsMHgzRCwweEZGLDB4RDcsMHhEQiwweDAzLDB4MzEsMHhDMiwweDMwLDB4RkUs
MHhFRSwweEFFLDB4RUEsCisgICAgMHhFMywweDMwLDB4QzIsMHgyOCwweDJELDB4MzUsMHgyOCww
eDA4LDB4MDMsMHgzMSwweEMyLDB4MzAsMHhFNSwweDVFLDB4QUMsMHhFQiwKKyAgICAweEUyLDB4
MzAsMHhBMiwweDI4LDB4QTksMHhBNywweDJBLDB4MDAsMHhFMiwweDMwLDB4QzIsMHgyOCwweDJG
LDB4MEIsMHhBOCwweEEwLAorICAgIDB4MjMsMHgzMSwweEMyLDB4MzAsMHg2QiwweEZGLDB4N0Qs
MHg1RiwweDAzLDB4MzEsMHhDMiwweDMwLDB4RUYsMHgyRiwweDJGLDB4M0EsCisgICAgMHgwMyww
eDM5LDB4RTMsMHgzMCwweDU1LDB4NTUsMHhCNywweDVFLDB4MjQsMHgzOSwweEUzLDB4MzAsMHhC
RiwweERGLDB4RUYsMHhFRCwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4RkUsMHhGRSwweEY4
LDB4RjgsMHgwMywweDMxLDB4QzIsMHgyOCwweDk3LDB4RDUsMHhFNiwweDBGLAorICAgIDB4MjQs
MHgzOSwweEMyLDB4MjgsMHhGNywweEJGLDB4QjUsMHhBRiwweDAzLDB4MzEsMHhDMiwweDMwLDB4
RjIsMHhDOCwweEFBLDB4Q0EsCisgICAgMHhFMywweDMwLDB4QzIsMHgyOCwweEEyLDB4N0YsMHhF
NiwweDIwLDB4MDMsMHgzMSwweEMyLDB4MjgsMHhCNiwweEFGLDB4RjcsMHg3RSwKKyAgICAweDAz
LDB4MzEsMHhDMiwweDMwLDB4RkYsMHhCNiwweEJGLDB4QUQsMHgwNCwweDMxLDB4RTIsMHgzMCww
eEZELDB4RjMsMHgxRSwweDI1LAorICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHhERiwweDdGLDB4
NzAsMHg4MCwweDAzLDB4MzEsMHhDMiwweDMwLDB4QUIsMHhFQiwweEZELDB4RUEsCisgICAgMHgw
MywweDMxLDB4RTMsMHgzMCwweDA5LDB4N0IsMHg3QSwweDU1LDB4MDMsMHgzOSwweEMzLDB4MzAs
MHhCMiwweEJFLDB4QTgsMHhGNywKKyAgICAweDAzLDB4MzksMHhFMywweDMwLDB4RjUsMHhCRSww
eDFCLDB4QkUsMHgyNCwweDM5LDB4RTMsMHgzMCwweDdGLDB4QkYsMHhGQiwweEIyLAorICAgIDB4
MjQsMHgzOSwweEUzLDB4MzAsMHhENiwweDdFLDB4REEsMHg3QSwweDI0LDB4NDEsMHgwMywweDMx
LDB4RkYsMHhFQiwweEUzLDB4OEQsCisgICAgMHgwMywweDM5LDB4RTMsMHgzMCwweDU1LDB4Nzcs
MHhFMCwweEY4LDB4MjQsMHg0MSwweEUzLDB4MzgsMHhGNSwweEJELDB4QkQsMHhEMiwKKyAgICAw
eDI0LDB4MzksMHhFMywweDMwLDB4NTcsMHhBRSwweDNBLDB4QUEsMHgyNCwweDM5LDB4QzMsMHgz
OCwweDBCLDB4QUEsMHhCRSwweEFBLAorICAgIDB4RTMsMHgzOCwweDI0LDB4MzEsMHhFQSwweEFB
LDB4QUUsMHhBNiwweDI0LDB4NDEsMHhFMywweDMwLDB4RUYsMHg4QSwweDg4LDB4QUQsCisgICAg
MHg0NCwweDM5LDB4RTMsMHgzOCwweDdELDB4RkQsMHhGOSwweEJGLDB4MjQsMHgzOSwweEMzLDB4
MzgsMHhCQSwweEFBLDB4ODIsMHgyMCwKKyAgICAweDI0LDB4MzksMHgwMywweDM5LDB4M0UsMHg2
RSwweEEwLDB4NUMsMHgyMywweDM5LDB4RTMsMHgzMCwweDA5LDB4MkEsMHhCQSwweERCLAorICAg
IDB4MjQsMHgzOSwweDAzLDB4MzEsMHg1QSwweEIyLDB4OEIsMHg3RCwweDIzLDB4MzksMHhFMyww
eDMwLDB4MDAsMHhGMCwweDZBLDB4QUYsCisgICAgMHg0NCwweDM5LDB4MDMsMHgzMSwweEZELDB4
OEYsMHhDRiwweDY3LDB4NjUsMHg0MSwweEUzLDB4MzAsMHhDRiwweEVGLDB4NzksMHhCRiwKKyAg
ICAweDQ0LDB4MzksMHhFMywweDMwLDB4MkIsMHhBRiwweEZGLDB4RjcsMHgyMywweDM5LDB4RTMs
MHgzMCwweDAwLDB4QjgsMHhFRSwweDdFLAorICAgIDB4NjQsMHg0MSwweEMyLDB4MzAsMHgyQSww
eEFGLDB4RkYsMHg3NywweDQ0LDB4NDEsMHgwNCwweDM5LDB4MkMsMHgyMCwweEFBLDB4MTUsCisg
ICAgMHg2NSwweDQ5LDB4MjQsMHg0MSwweDdFLDB4RUUsMHhGQiwweDBBLDB4NjQsMHg0MSwweDAz
LDB4MzksMHg1QSwweEZBLDB4RUEsMHgyOCwKKyAgICAweDY0LDB4NDEsMHgwMywweDM5LDB4RkYs
MHhBNSwweEFFLDB4M0MsMHg4NiwweDQ5LDB4MDMsMHgzOSwweEY3LDB4QUQsMHg4QSwweDg4LAor
ICAgIDB4NjUsMHg0MSwweDA0LDB4MzksMHhERiwweEVCLDB4MzgsMHgwMCwweDg1LDB4NDksMHgy
NCwweDM5LDB4RDUsMHhCRiwweEJCLDB4MDIsCisgICAgMHg4NSwweDQ5LDB4MjQsMHgzOSwweDdE
LDB4RkYsMHhCOCwweEUwLDB4QTYsMHg1MSwweDIzLDB4MzksMHhGOSwweEVCLDB4OEEsMHhBQSwK
KyAgICAweDg1LDB4NDksMHgyNCwweDQxLDB4RjcsMHgwQSwweDAyLDB4OEUsMHhBNSwweDUxLDB4
NDQsMHg0MSwweEQ1LDB4QUUsMHhGRSwweDBCLAorICAgIDB4RTYsMHg1OSwweDg1LDB4NDksMHg5
NSwweDNELDB4M0YsMHhERiwweDA2LDB4NUEsMHhDNiwweDUxLDB4QkYsMHgzRiwweEUzLDB4OUIs
CisgICAgMHgyNywweDYyLDB4QzUsMHg1MSwweDIwLDB4MDgsMHhBOSwweDI5LDB4NDcsMHg2Miww
eDA2LDB4NUEsMHhENSwweEY1LDB4N0QsMHhCRCwKKyAgICAweDQ4LDB4NkEsMHgwNywweDVBLDB4
RkYsMHhBRiwweEE1LDB4MjcsMHg0OCwweDYyLDB4RTYsMHg1OSwweEY3LDB4QkEsMHgyRiwweDg3
LAorICAgIDB4NjgsMHg2QSwweDA2LDB4NUEsMHhGQSwweEVBLDB4OEIsMHg4NywweDY3LDB4NkEs
MHgyNywweDYyLDB4NEEsMHhCMCwweDNFLDB4QkYsCisgICAgMHg2OCwweDZBLDB4MDYsMHg1QSww
eDJBLDB4QkUsMHg3QywweDdCLDB4ODgsMHg2QSwweDI3LDB4NjIsMHg5NywweEQ5LDB4QkQsMHgw
RiwKKyAgICAweEE4LDB4NzIsMHg0NywweDYyLDB4REYsMHhCRiwweENBLDB4ODIsMHhDOSwweDcy
LDB4NjcsMHg2QSwweDJCLDB4MzUsMHhENSwweDU3LAorICAgIDB4QTgsMHg3MiwweDY4LDB4NkEs
MHhCQiwweEU4LDB4QTgsMHhGRiwweEE5LDB4NzIsMHg0NywweDYyLDB4REYsMHg1NSwweDZCLDB4
MkEsCisgICAgMHhBOSwweDcyLDB4NDcsMHg2MiwweDlFLDB4QjUsMHgyNywweEJFLDB4QzksMHg3
MiwweDg4LDB4NkEsMHg3QSwweEVBLDB4NkEsMHhDRiwKKyAgICAweEE5LDB4NzIsMHg0NywweDYy
LDB4RUEsMHgyMiwweDA5LDB4MDIsMHhDOSwweDcyLDB4ODgsMHg2QSwweDM5LDB4OTYsMHg1Riww
eDU3LAorICAgIDB4QzksMHg3MiwweDg4LDB4NzIsMHg4MCwweEVBLDB4QkUsMHhGRCwweEM5LDB4
N0EsMHg2OCwweDZBLDB4QzksMHhBQiwweEFBLDB4QjcsCisgICAgMHhDOSwweDcyLDB4NjcsMHg2
QSwweEM5LDB4RTAsMHhBOCwweERBLDB4QTgsMHg3MiwweDY4LDB4NkEsMHg3MCwweDlGLDB4REYs
MHhFQSwKKyAgICAweEM5LDB4N0EsMHg2OCwweDZBLDB4RkEsMHhCRiwweEIzLDB4QTUsMHhBOSww
eDcyLDB4NjgsMHg2QSwweDJFLDB4QUEsMHg5OCwweERCLAorICAgIDB4Q0EsMHg3QSwweDY4LDB4
NkEsMHgyOCwweEJGLDB4RkUsMHhFRiwweEM5LDB4NzIsMHg2OCwweDZBLDB4RTAsMHhBRSwweDg5
LDB4QjksCisgICAgMHhDOSwweDdBLDB4NjgsMHg2QSwweEI3LDB4MDUsMHg4RSwweEVBLDB4RTks
MHg3QSwweDg4LDB4NkEsMHhCQiwweEJBLDB4QTIsMHhENSwKKyAgICAweEVBLDB4N0EsMHg4OCww
eDZBLDB4N0EsMHhFOCwweDVBLDB4NzksMHhDQSwweDdBLDB4NjcsMHg2QSwweDhBLDB4QzEsMHgy
QiwweDBBLAorICAgIDB4QzksMHg3MiwweDg5LDB4NzIsMHg5OSwweEI3LDB4MjYsMHhCMiwweEM5
LDB4NzIsMHg2OCwweDZBLDB4MjgsMHhBQiwweEY3LDB4RkMsCisgICAgMHhDOSwweDcyLDB4MjYs
MHg2MiwweDAwLDB4MDAsMHgwMiwweEE2LDB4RTksMHg3QSwweDg3LDB4NkEsMHhCQSwweEVFLDB4
QTMsMHhBNywKKyAgICAweEVBLDB4N0EsMHg4OCwweDZBLDB4MDIsMHhBQiwweEZCLDB4RkEsMHhD
QSwweDdBLDB4NjgsMHg2QSwweDM5LDB4RkEsMHgyQSwweDBGLAorICAgIDB4Q0EsMHg3QSwweDY4
LDB4NkEsMHgwQSwweDhELDB4MkEsMHhBQiwweDBBLDB4ODMsMHhBOSwweDcyLDB4MkIsMHhBRiww
eEY1LDB4NTYsCisgICAgMHgwQSwweDdCLDB4QzksMHg3MiwweEVBLDB4RjgsMHhGQiwweDk1LDB4
MEEsMHg3QiwweEE4LDB4NzIsMHhBMCwweDdFLDB4REEsMHg3RiwKKyAgICAweDAzLDB4NDEsMHhD
MiwweDM4LDB4RkYsMHg5QiwweDczLDB4REIsMHgwMywweDQxLDB4QzIsMHgzOCwweDZBLDB4NTAs
MHhGMiwweEUyLAorICAgIDB4MDMsMHg0MSwweEEyLDB4MzgsMHhFRiwweEYyLDB4N0EsMHg2Qiww
eDAyLDB4MzksMHhBMSwweDMwLDB4QUIsMHhBMywweEY5LDB4RkIsCisgICAgMHgwMiwweDQxLDB4
QTIsMHgzMCwweEJFLDB4QUEsMHgyNiwweDhGLDB4MDMsMHgzOSwweEMyLDB4MzgsMHhGRiwweEU4
LDB4QkMsMHhGNiwKKyAgICAweEUyLDB4MzgsMHhBMSwweDMwLDB4QTAsMHhGQSwweEQ3LDB4RDcs
MHhFMywweDM4LDB4QTEsMHgzMCwweDAyLDB4ODMsMHhCRSwweDE2LAorICAgIDB4RTIsMHgzOCww
eEEyLDB4MzAsMHhBQSwweEEzLDB4OEEsMHgwMCwweDAyLDB4MzksMHhDMiwweDM4LDB4QUUsMHhE
NiwweEFGLDB4OTksCisgICAgMHhFMiwweDM4LDB4QTEsMHgzMCwweEEwLDB4RjAsMHhERSwweEFB
LDB4MDMsMHg0MSwweEMyLDB4MzgsMHhERiwweEFGLDB4MkYsMHg3OSwKKyAgICAweDAzLDB4Mzks
MHhDMiwweDM4LDB4OUEsMHhFQywweEZFLDB4RUYsMHgwMiwweDM5LDB4QTEsMHgzOCwweEVBLDB4
QTgsMHg2QSwweEJBLAorICAgIDB4RTIsMHgzOCwweEEyLDB4MzAsMHhGQSwweEFCLDB4QTMsMHhB
MCwweEUyLDB4MzgsMHhDMiwweDM4LDB4MDUsMHhBMywweEMyLDB4NjAsCisgICAgMHhFMiwweDM4
LDB4QzIsMHgzMCwweDAyLDB4OEYsMHhCRiwweEVGLDB4RTIsMHgzOCwweDgxLDB4MzAsMHhCMCww
eERCLDB4RDMsMHg3QSwKKyAgICAweEUzLDB4MzgsMHhBMiwweDMwLDB4NEEsMHg3QSwweERELDB4
RkQsMHgwMywweDM5LDB4QTIsMHgzMCwweDVELDB4OUQsMHgzNSwweERELAorICAgIDB4MDMsMHgz
OSwweEMyLDB4MzAsMHg5QSwweEVBLDB4RUEsMHhERiwweDAzLDB4MzksMHhBMiwweDI4LDB4QkMs
MHgxOCwweEVFLDB4RUIsCisgICAgMHgwMywweDM5LDB4ODEsMHgzMCwweEJFLDB4RUMsMHhCRiww
eDdELDB4RTMsMHgzOCwweEExLDB4MzAsMHgwQiwweEFCLDB4RkYsMHg3NSwKKyAgICAweDIzLDB4
NDEsMHhBMiwweDMwLDB4MEIsMHhFRiwweDdELDB4REYsMHgyNCwweDQxLDB4ODEsMHgzMCwweDgy
LDB4QUUsMHhGRiwweEQ3LAorICAgIDB4MjQsMHg0MSwweEExLDB4MzAsMHhBMCwweEJBLDB4RkYs
MHhENSwweDIzLDB4MzksMHhFMywweDMwLDB4QUUsMHhBQSwweDdCLDB4NjksCisgICAgMHgwMyww
eDM5LDB4QzIsMHgzMCwweEZBLDB4RjIsMHhGRiwweEZGLDB4MDMsMHgzMSwweEMyLDB4MzAsMHgy
OSwweDM1LDB4QkYsMHhGRiwKKyAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4ODAsMHhCRSwweEZC
LDB4RkQsMHgyNCwweDM5LDB4QzMsMHgyOCwweERBLDB4N0IsMHhDRiwweEZBLAorICAgIDB4MjQs
MHgzOSwweEMyLDB4MzAsMHg3MywweDZELDB4REQsMHg5NywweEUzLDB4MzAsMHhDMywweDI4LDB4
MEIsMHhFMywweEEyLDB4RTgsCisgICAgMHgwMywweDMxLDB4QzMsMHgzMCwweEJBLDB4M0UsMHhB
QSwweEFCLDB4MDMsMHgzMSwweEMyLDB4MjgsMHhBOCwweEUwLDB4NkEsMHhGQSwKKyAgICAweEUz
LDB4MzAsMHhDMiwweDI4LDB4MTgsMHgxRiwweDhGLDB4QkYsMHgwMywweDMxLDB4QzIsMHgzMCww
eEU3LDB4RkUsMHhCRiwweEZELAorICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHhFQiwweEU3LDB4
REUsMHg3MywweDAzLDB4MzEsMHhDMiwweDI4LDB4RUEsMHhBQiwweEVDLDB4REQsCisgICAgMHhF
MywweDMwLDB4QzIsMHgyOCwweEIyLDB4RDcsMHg4MCwweDNBLDB4MjQsMHgzOSwweEMyLDB4MzAs
MHgyQiwweEVCLDB4QjksMHg1QiwKKyAgICAweDIzLDB4MzksMHhDMywweDMwLDB4RkUsMHhGOSww
eEVBLDB4RTIsMHgyNCwweDM5LDB4QzIsMHgzMCwweDgyLDB4N0IsMHhGRCwweEQ3LAorICAgIDB4
MDMsMHgzOSwweEUzLDB4MzAsMHhFNywweDc1LDB4NTUsMHg1NCwweDA0LDB4MzksMHhFMywweDMw
LDB4MDksMHg1NSwweDU1LDB4NTUsCisgICAgMHhFMywweDMwLDB4QzIsMHgzMCwweDA4LDB4QTAs
MHhCMCwweDAwLDB4MDMsMHgzMSwweEMyLDB4MjgsMHg4RiwweDhBLDB4MkEsMHhBNywKKyAgICAw
eDAzLDB4MzEsMHhDMiwweDMwLDB4ODAsMHhBQSwweEI1LDB4MzYsMHgwMywweDMxLDB4QzMsMHgz
MCwweEZFLDB4RjAsMHhGRSwweEVFLAorICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHhBQiwweEZB
LDB4RUQsMHhCRSwweDI0LDB4MzksMHhDMiwweDMwLDB4MEYsMHgwRiwweEJCLDB4RjcsCisgICAg
MHgyNCwweDM5LDB4QzIsMHgzMCwweEE3LDB4M0UsMHhCRiwweEVGLDB4MDMsMHgzOSwweEMzLDB4
MzAsMHg3NiwweEVFLDB4Q0EsMHg4MCwKKyAgICAweDAzLDB4MzEsMHhBMiwweDMwLDB4QUEsMHgy
MiwweEFBLDB4QjIsMHgwMywweDMxLDB4QzIsMHgzMCwweERFLDB4QkEsMHgyQiwweDNBLAorICAg
IDB4MDMsMHgzMSwweEMyLDB4MzAsMHhBQSwweEI4LDB4NzAsMHg3MCwweDAzLDB4MzEsMHhDMiww
eDI4LDB4MDAsMHgyMCwweEJGLDB4MkQsCisgICAgMHgwMywweDM5LDB4RTMsMHgzMCwweEU4LDB4
QTYsMHg1RSwweDVGLDB4MjQsMHgzOSwweEUzLDB4MzAsMHgyRiwweDJGLDB4NzcsMHg3NSwKKyAg
ICAweDAzLDB4MzksMHhFMywweDMwLDB4OEIsMHgyMCwweDIwLDB4M0EsMHgyNCwweDM5LDB4MDMs
MHgzOSwweDdGLDB4NkYsMHgyNSwweEY1LAorICAgIDB4MjQsMHg0MSwweDAzLDB4MzksMHg2Myww
eDVCLDB4NUUsMHg1NiwweDQ0LDB4MzksMHhFMywweDM4LDB4RkQsMHhGRiwweDdGLDB4QTUsCisg
ICAgMHgyNCwweDM5LDB4RTMsMHgzOCwweDdGLDB4N0YsMHhGQSwweEEzLDB4MjQsMHgzOSwweEUz
LDB4MzgsMHhBNSwweDM3LDB4QkUsMHhGRiwKKyAgICAweDAzLDB4MzksMHhDMywweDMwLDB4MDAs
MHgwMCwweEUyLDB4RTIsMHgyNCwweDM5LDB4QzMsMHgzOCwweEEwLDB4MkEsMHhCMiwweEEyLAor
ICAgIDB4NDQsMHg0MSwweEUzLDB4MzgsMHhERSwweEFFLDB4M0UsMHgzNywweDQ0LDB4NDEsMHhF
MywweDMwLDB4REYsMHhCQiwweEVFLDB4MkUsCisgICAgMHg0NCwweDQxLDB4RTMsMHgzMCwweEVB
LDB4NTMsMHg2RSwweEU4LDB4NDQsMHg0MSwweEUzLDB4MzAsMHhCQSwweDBBLDB4QUQsMHhFRiwK
KyAgICAweDI0LDB4MzksMHgwMywweDM5LDB4ODAsMHg5OCwweDk1LDB4MTUsMHg0NCwweDM5LDB4
MDMsMHgzOSwweEZGLDB4OTcsMHhBRiwweEE4LAorICAgIDB4NjUsMHg0MSwweEUzLDB4MzAsMHhE
NywweDdFLDB4MkEsMHgyRSwweDI0LDB4NDEsMHgwMywweDM5LDB4NUQsMHg3OSwweDZGLDB4NDgs
CisgICAgMHg0NCwweDQxLDB4QzMsMHgzMCwweDdGLDB4N0IsMHhBQiwweDAyLDB4NDUsMHg0MSww
eDAzLDB4MzksMHgxNSwweEQ1LDB4N0QsMHhBRiwKKyAgICAweDY1LDB4NDEsMHhFMiwweDMwLDB4
MjgsMHgyRiwweEJELDB4RjcsMHg4NSwweDQ5LDB4MjMsMHgzOSwweDBBLDB4ODAsMHhBQSwweDZE
LAorICAgIDB4ODUsMHg0OSwweDQ0LDB4NDEsMHhCRSwweDMyLDB4ODIsMHgwOSwweEE1LDB4NDks
MHg0NCwweDQxLDB4RkUsMHhGQSwweEFBLDB4M0UsCisgICAgMHhBNiwweDQ5LDB4NDUsMHg0MSww
eEI2LDB4QjYsMHg5RSwweEZFLDB4QzYsMHg1MSwweDY1LDB4NDksMHhFQSwweDhBLDB4RTcsMHg5
NywKKyAgICAweEE1LDB4NTEsMHg2NSwweDQ5LDB4QUIsMHgyMiwweEFBLDB4M0YsMHhDNiwweDUx
LDB4ODUsMHg0OSwweDdELDB4RTYsMHgxRSwweEFCLAorICAgIDB4QzYsMHg1MSwweDY1LDB4NDks
MHg3NywweDlGLDB4QjYsMHgwRSwweDA2LDB4NUEsMHg0NCwweDQxLDB4QUQsMHhBQiwweEFBLDB4
MkEsCisgICAgMHgyNywweDYyLDB4ODUsMHg0OSwweEFELDB4M0YsMHgyRiwweDJFLDB4NDcsMHg2
MiwweEM2LDB4NTksMHhGNiwweDhBLDB4QUEsMHhBRSwKKyAgICAweDI3LDB4NjIsMHhFNiwweDU5
LDB4MjUsMHgzQiwweEYyLDB4QzgsMHg0NywweDYyLDB4MDYsMHg1QSwweEUyLDB4QkYsMHhBOSww
eDU3LAorICAgIDB4NDcsMHg2MiwweDA3LDB4NjIsMHhCRiwweEYyLDB4MjIsMHg4RSwweDg4LDB4
NkEsMHgwNiwweDVBLDB4QUQsMHhGRiwweEZGLDB4M0IsCisgICAgMHg2NywweDZBLDB4MDYsMHg2
MiwweEFFLDB4RkQsMHhGQiwweDYwLDB4NjcsMHg2QSwweEU2LDB4NTksMHgzQSwweEFGLDB4Q0Qs
MHgyNywKKyAgICAweDY3LDB4NkEsMHgyNiwweDYyLDB4N0EsMHhCMiwweEZCLDB4QjgsMHg4OCww
eDZBLDB4MjcsMHg2MiwweEJGLDB4QTIsMHg5QSwweEQ1LAorICAgIDB4QTgsMHg3MiwweDY4LDB4
NkEsMHgzQiwweEJGLDB4RkYsMHhGNSwweDg4LDB4NkEsMHgyNywweDYyLDB4ODAsMHgyRSwweEE3
LDB4QkUsCisgICAgMHg4OCwweDZBLDB4MjcsMHg2MiwweEQyLDB4N0EsMHhCQSwweEJBLDB4QTgs
MHg3MiwweDA3LDB4NjIsMHgyQiwweEY3LDB4RDcsMHhGRSwKKyAgICAweEE4LDB4NzIsMHg0Nyww
eDYyLDB4RUEsMHhDOCwweEFCLDB4MkQsMHhDOSwweDcyLDB4NjgsMHg2QSwweDJBLDB4MjMsMHhG
RiwweDU1LAorICAgIDB4QzksMHg3MiwweDY4LDB4NkEsMHgyQSwweEFBLDB4MkIsMHgyNSwweDBB
LDB4ODMsMHg4OCwweDZBLDB4RkYsMHg3RiwweDdBLDB4QTIsCisgICAgMHhDOSwweDcyLDB4Njgs
MHg2QSwweDc4LDB4RUEsMHhFQSwweEEwLDB4RUEsMHg3QSwweDY4LDB4NkEsMHhGNSwweDlFLDB4
MkYsMHhGRiwKKyAgICAweEM5LDB4NzIsMHg4OCwweDZBLDB4RDYsMHg5RiwweEY4LDB4OUIsMHhB
OSwweDcyLDB4NjgsMHg2QSwweEUyLDB4NjYsMHhGRSwweEZBLAorICAgIDB4QTksMHg2QSwweDQ4
LDB4NkEsMHhCRiwweERGLDB4RkYsMHgzQiwweDg5LDB4NkEsMHg0OCwweDZBLDB4NjgsMHg0QSww
eEJFLDB4MjgsCisgICAgMHhDOSwweDcyLDB4NDgsMHg2MiwweDhBLDB4QUYsMHhFNywweEZGLDB4
QzksMHg3MiwweDY4LDB4NkEsMHhBOCwweEU4LDB4N0YsMHg1RiwKKyAgICAweENBLDB4N0EsMHg2
OCwweDZBLDB4Q0EsMHg4QSwweDNCLDB4MjksMHhFOSwweDdBLDB4ODgsMHg2QSwweEVGLDB4Rjks
MHgyQSwweDgzLAorICAgIDB4QzksMHg3QSwweDY3LDB4NkEsMHg4MSwweEMzLDB4Q0EsMHhBNiww
eEVBLDB4N0EsMHhBOSwweDcyLDB4QTEsMHg4NSwweEFELDB4NTYsCisgICAgMHhFQSwweDdBLDB4
ODgsMHg2QSwweDdFLDB4N0EsMHg2OCwweEUwLDB4QTksMHg3MiwweDQ3LDB4NjIsMHgwMiwweEU5
LDB4QkYsMHhBRSwKKyAgICAweEE4LDB4NzIsMHg0NywweDYyLDB4OEUsMHg4MCwweDgwLDB4RTgs
MHhFOSwweDdBLDB4ODgsMHg2QSwweDFELDB4RkQsMHg3RCwweDFCLAorICAgIDB4RTksMHg3QSww
eDg5LDB4NkEsMHhGQiwweDdFLDB4RUEsMHhFMiwweEVBLDB4N0EsMHg4OCwweDZBLDB4QUIsMHg4
QiwweEVGLDB4MzcsCisgICAgMHgwQSwweDdCLDB4ODksMHg2QSwweDdCLDB4N0UsMHhCMCwweDIy
LDB4QzksMHg3MiwweDY4LDB4NkEsMHgwRSwweDBBLDB4MkMsMHgyNiwKKyAgICAweDBBLDB4N0Is
MHhBOSwweDcyLDB4OEIsMHhBMiwweEQ1LDB4REQsMHgwOSwweDdCLDB4QTksMHg3MiwweEFFLDB4
OEYsMHhBRCwweEJGLAorfTsKKworc3RhdGljIGNvbnN0IHNpemVfdCBwaXhlbF8xX3dpZHRoID0g
MjU2Oworc3RhdGljIGNvbnN0IHNpemVfdCBwaXhlbF8xX2hlaWdodCA9IDI1NjsKK3N0YXRpYyBj
b25zdCBzaXplX3QgcGl4ZWxfMV9zaXplID0gMzI3Njg7CitzdGF0aWMgY29uc3QgdW5zaWduZWQg
Y2hhciBwaXhlbF8xX2RhdGFbMzI3NjhdID0KK3sKKyAgICAweEE4LDB4NkEsMHg4NCwweDQ5LDB4
NUIsMHg1NSwweEFELDB4MEQsMHg0NiwweDYyLDB4MjMsMHgzOSwweEQ2LDB4REYsMHhGRSwweEY4
LAorICAgIDB4MDYsMHg1QSwweDAyLDB4MzksMHhBMiwweDU3LDB4N0UsMHhBRSwweDY3LDB4NjIs
MHhFMiwweDMwLDB4REYsMHhGRiwweDBCLDB4RkYsCisgICAgMHhDNSwweDQ5LDB4RTIsMHgzMCww
eEEyLDB4NUEsMHhFOCwweEJFLDB4ODgsMHg2MiwweDAyLDB4MzEsMHg1RiwweEFGLDB4MkYsMHhE
NSwKKyAgICAweEM1LDB4NDksMHgwMywweDM5LDB4NUYsMHg3OCwweDY4LDB4RUYsMHg2NywweDVB
LDB4RTIsMHgzMCwweEZGLDB4OEIsMHhCRCwweDU3LAorICAgIDB4QTUsMHg0OSwweEUyLDB4MzAs
MHhERSwweDcwLDB4QkEsMHgwQSwweDQ3LDB4NjIsMHgyMywweDM5LDB4RUYsMHgwRiwweDU1LDB4
NTcsCisgICAgMHhFNSwweDUxLDB4QzIsMHgzMCwweERFLDB4N0EsMHhGRiwweDhBLDB4MjYsMHg1
QSwweDAzLDB4MzksMHg4QiwweEFELDB4NTUsMHg1RiwKKyAgICAweDA2LDB4NUEsMHgyMywweDM5
LDB4OTcsMHhGRiwweEY1LDB4OEYsMHg0NywweDYyLDB4NjQsMHg0OSwweDgyLDB4N0IsMHg1NSww
eERGLAorICAgIDB4NDcsMHg2MiwweDQzLDB4NDEsMHg1RSwweDVGLDB4RUIsMHg4RiwweDI3LDB4
NUEsMHgwMywweDM5LDB4ODIsMHg1NSwweEQ3LDB4N0UsCisgICAgMHgwNywweDVBLDB4MjMsMHg0
MSwweERGLDB4N0QsMHhDQSwweEVGLDB4QzUsMHg1MSwweDAzLDB4MzksMHhBMiwweEY1LDB4OUUs
MHg1RiwKKyAgICAweDg5LDB4NkEsMHg0NCwweDQxLDB4NTUsMHg1RCwweEUzLDB4NUQsMHhDNSww
eDUxLDB4MDIsMHgzMSwweEVGLDB4QjUsMHgxQywweDdCLAorICAgIDB4MjcsMHg1QSwweDAzLDB4
MzksMHg1RiwweEZBLDB4RTIsMHg1NywweEM1LDB4NTEsMHgyNCwweDM5LDB4RjUsMHgyNSwweDk3
LDB4RkQsCisgICAgMHhFNSwweDUxLDB4MDMsMHgzOSwweDdFLDB4QTgsMHhFQSwweERGLDB4MjYs
MHg1QSwweDIzLDB4MzksMHhBRCwweDBELDB4RDcsMHg4QSwKKyAgICAweEU1LDB4NTEsMHgwMyww
eDM5LDB4N0UsMHhFOCwweEZFLDB4REYsMHg2NywweDYyLDB4NDQsMHg0MSwweDJELDB4QUQsMHhE
NSwweDAzLAorICAgIDB4MjcsMHg2MiwweDY0LDB4NDksMHhGMCwweEYwLDB4NTUsMHhFOCwweEU2
LDB4NTksMHg2NCwweDQxLDB4QUIsMHg3RiwweDk1LDB4MDIsCisgICAgMHg0NiwweDVBLDB4ODQs
MHg0OSwweEY3LDB4MDUsMHgyRCwweEZGLDB4NjgsMHg2QSwweEU1LDB4NTEsMHhCNSwweEFFLDB4
QTgsMHgyQiwKKyAgICAweDg3LDB4NkEsMHgwNiwweDVBLDB4QTcsMHgyQiwweENCLDB4OEEsMHg4
NywweDZBLDB4MjMsMHg0MSwweDIwLDB4QTIsMHhCRiwweEY3LAorICAgIDB4NDcsMHg2MiwweEE1
LDB4NTEsMHgwMCwweDAyLDB4OEMsMHhENywweDg3LDB4NkEsMHgyNiwweDVBLDB4NkUsMHgyRSww
eDg4LDB4RkYsCisgICAgMHhBNywweDZBLDB4NDMsMHg0MSwweDU1LDB4NUUsMHg3QSwweDZBLDB4
MjcsMHg1QSwweDAzLDB4MzksMHhGRiwweDgzLDB4OEIsMHhGNSwKKyAgICAweEE1LDB4NDksMHgy
MywweDM5LDB4QkQsMHhCNCwweDVFLDB4RjAsMHg0NywweDVBLDB4MDIsMHgzMSwweDdFLDB4RTAs
MHhGQiwweEZGLAorICAgIDB4MjYsMHg1MiwweDAzLDB4MzksMHgyRCwweDJELDB4RDcsMHg3Riww
eDI2LDB4NTIsMHgyMywweDM5LDB4REUsMHg3OCwweDc3LDB4QkQsCisgICAgMHgyNiwweDVBLDB4
MjMsMHgzOSwweDAyLDB4QUIsMHhGNSwweEQ3LDB4NTQsMHhFNiwweEE1LDB4NTEsMHgwRCwweEI1
LDB4NTUsMHg1NSwKKyAgICAweDk2LDB4RUUsMHgyNiwweDVBLDB4MDAsMHgwMCwweDAzLDB4MkQs
MHhCNiwweEY2LDB4OTYsMHhFRSwweEJGLDB4QUYsMHg4QiwweEFELAorICAgIDB4RDYsMHhGNiww
eDk2LDB4RUUsMHhERiwweEZELDB4QkQsMHgyRiwweEQ3LDB4RjYsMHg5NiwweEVFLDB4MEIsMHg4
MiwweDcwLDB4NUUsCisgICAgMHhENywweEY2LDB4OTYsMHhFRSwweDJFLDB4QUUsMHgzRCwweEI3
LDB4RDcsMHhGNiwweDc1LDB4RTYsMHg3OCwweEJDLDB4QUEsMHhGQSwKKyAgICAweEY3LDB4RjYs
MHhCNiwweEVFLDB4RDUsMHhFRCwweDhBLDB4RTUsMHhGOCwweEZFLDB4QjYsMHhFRSwweEY2LDB4
QkYsMHgwMiwweERGLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHgyOSwweDAyLDB4MDIsMHgw
OSwweDE4LDB4RkYsMHhGNywweEY2LDB4QkEsMHgzRSwweEY3LDB4NTUsCisgICAgMHgxOCwweEZG
LDB4RjgsMHhGNiwweEVBLDB4QTAsMHhBQiwweDU1LDB4MTgsMHhGRiwweEY4LDB4RjYsMHg1NSww
eEQ3LDB4RkUsMHhCOSwKKyAgICAweDE4LDB4RjcsMHhENywweEY2LDB4QUEsMHhGQSwweERBLDB4
QTAsMHgxOCwweEY3LDB4RDcsMHhGNiwweDVGLDB4N0YsMHhGRiwweDZBLAorICAgIDB4RDcsMHhG
NiwweDk3LDB4RUUsMHgyMCwweDBFLDB4RjgsMHhDMCwweEY3LDB4RjYsMHg5NiwweEVFLDB4MjIs
MHhBQiwweEZBLDB4QUQsCisgICAgMHhGNywweEY2LDB4OTYsMHhFRSwweDVFLDB4NzIsMHhFQiww
eEJGLDB4OTYsMHhFRSwweDUxLDB4QzUsMHg3MCwweDY4LDB4RTAsMHhFOCwKKyAgICAweDM0LDB4
RTYsMHgxMCwweEM1LDB4ODAsMHgwMywweDg5LDB4MEQsMHgxNCwweERFLDB4RjMsMHhERCwweDc2
LDB4N0MsMHg1RiwweDc2LAorICAgIDB4MTQsMHhERSwweEYzLDB4REQsMHg3RSwweEJGLDB4OEQs
MHg4QiwweDE0LDB4REUsMHhEMywweERELDB4QTksMHhBRiwweEVCLDB4RkUsCisgICAgMHg0Nyww
eDVBLDB4MjMsMHg0MSwweEY1LDB4M0QsMHhBNywweERFLDB4ODgsMHg2QSwweDQzLDB4NDEsMHg1
RCwweDgwLDB4QTIsMHg1RCwKKyAgICAweDg2LDB4NjIsMHgyMiwweDM5LDB4RkQsMHhGOCwweEZF
LDB4RDcsMHhDNSwweDQ5LDB4QzIsMHgzMCwweDVFLDB4RkEsMHhBQSwweDJFLAorICAgIDB4Mjcs
MHg1QSwweDAyLDB4MzEsMHhBRiwweDBCLDB4RkQsMHhGRSwweEE1LDB4NDksMHhFMiwweDMwLDB4
RjgsMHhFMCwweEJELDB4QUQsCisgICAgMHg2NywweDYyLDB4MjMsMHgzOSwweDJGLDB4QjUsMHg1
NSwweEYyLDB4QTUsMHg0OSwweDAyLDB4MzEsMHg2OCwweDdFLDB4QjUsMHgzNywKKyAgICAweDY4
LDB4NjIsMHhFMiwweDMwLDB4MEIsMHhGNSwweEZGLDB4QTAsMHhDNSwweDQ5LDB4RTIsMHgzMCww
eDcwLDB4N0UsMHhCNSwweEJFLAorICAgIDB4MDYsMHg1MiwweEMyLDB4MzAsMHgwQiwweEZELDB4
QjAsMHhBMiwweDg1LDB4NDksMHhFMiwweDMwLDB4RTAsMHhBRCwweDJFLDB4OTgsCisgICAgMHgw
NywweDYyLDB4MDMsMHg0MSwweEFELDB4RkQsMHhFMCwweEVCLDB4QzUsMHg2MSwweDY0LDB4NDks
MHg2NywweEFELDB4QUIsMHgwRiwKKyAgICAweEU2LDB4NjEsMHg0NCwweDQxLDB4REYsMHhGOCww
eEYwLDB4NkEsMHhBNSwweDQ5LDB4RTIsMHgzMCwweEZELDB4MjcsMHgzNiwweEZBLAorICAgIDB4
NDgsMHg2MiwweDI0LDB4MzksMHg3NSwweEYwLDB4RkEsMHhGRiwweDI3LDB4NUEsMHhFMiwweDMw
LDB4QkQsMHgyNywweEZGLDB4RkUsCisgICAgMHhDOCwweDZBLDB4MDMsMHgzOSwweDVGLDB4RjAs
MHg3RiwweEZGLDB4MjcsMHg1MiwweEUyLDB4MzAsMHgyRCwweEFGLDB4RkYsMHhBQSwKKyAgICAw
eDA2LDB4NTIsMHgyNCwweDQxLDB4N0MsMHhGOCwweEZGLDB4QUEsMHg2OCwweDYyLDB4MjMsMHgz
OSwweDJELDB4RjUsMHg1NywweDVGLAorICAgIDB4MDYsMHg1MiwweDIzLDB4MzksMHg3QSwweEZC
LDB4MEEsMHgwQiwweDI3LDB4NUEsMHgwMiwweDMxLDB4MEIsMHhGRCwweERFLDB4RkUsCisgICAg
MHgwNiwweDUyLDB4NDIsMHgzOSwweDdFLDB4RkYsMHgwMiwweEJGLDB4NjcsMHg2MiwweDg0LDB4
NDEsMHhBRCwweDU1LDB4RTAsMHg1NSwKKyAgICAweEU2LDB4NTEsMHgwMywweDMxLDB4ODAsMHg1
RSwweDY4LDB4RkUsMHg0NiwweDYyLDB4NDMsMHgzOSwweEZGLDB4MEYsMHhBRCwweDU1LAorICAg
IDB4MDUsMHg1MiwweDQzLDB4MzksMHhGRSwweEE4LDB4RkMsMHg1NSwweDI3LDB4NjIsMHgyMyww
eDMxLDB4MDMsMHgwQSwweEJGLDB4RDUsCisgICAgMHgyNywweDYyLDB4RTIsMHgzOCwweDAwLDB4
MkIsMHhCRiwweDVFLDB4MjYsMHg1QSwweDAyLDB4MzksMHhEQywweDY4LDB4RkEsMHhENSwKKyAg
ICAweDI2LDB4NUEsMHgyMywweDQxLDB4RkYsMHgwQiwweEY1LDB4NTYsMHgwNiwweDVBLDB4NDQs
MHg0MSwweEIwLDB4NTgsMHhENSwweDI1LAorICAgIDB4QzUsMHg1MSwweDAyLDB4MzksMHgwMiww
eDAyLDB4RUQsMHhGMCwweEM1LDB4NTEsMHgyMywweDM5LDB4REUsMHg1QywweDU1LDB4RUIsCisg
ICAgMHg2OCwweDYyLDB4MDIsMHgzOSwweEEyLDB4RkYsMHg1NSwweEFGLDB4QzYsMHg1MSwweDIz
LDB4MzksMHhBMiwweDU3LDB4NTUsMHgwMCwKKyAgICAweDI2LDB4NUEsMHgwMywweDM5LDB4RkYs
MHg1NSwweEY3LDB4ODIsMHgyNiwweDVBLDB4MDMsMHgzOSwweEJELDB4NTUsMHhGRiwweDAyLAor
ICAgIDB4MjYsMHg2MiwweDAyLDB4MzksMHg3RSwweDU1LDB4QUYsMHgwMCwweDI3LDB4NjIsMHgw
MiwweDM5LDB4REQsMHhERCwweEFFLDB4MDAsCisgICAgMHhGMCwweEJDLDB4NDQsMHg0OSwweDM1
LDB4RjUsMHhCRiwweDJGLDB4RDcsMHhGNiwweEQyLDB4RDUsMHgyMiwweDg5LDB4MjksMHgwQiwK
KyAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4OEIsMHg0MywweDY4LDB4NzgsMHhCNiwweEVFLDB4
NzYsMHhFRSwweEI2LDB4OUYsMHg5NSwweDU2LAorICAgIDB4QjYsMHhGNiwweDM0LDB4RTYsMHgw
MiwweDIyLDB4QUEsMHhGNSwweDk2LDB4RUUsMHhGMywweERELDB4RjAsMHg5QywweEQ2LDB4OTcs
CisgICAgMHhGNywweEY2LDB4RDMsMHhENSwweDJBLDB4QUEsMHhCRiwweDVGLDB4RjcsMHhGNiww
eEQzLDB4RDUsMHg4OCwweDBBLDB4MkEsMHhCNSwKKyAgICAweDE4LDB4RkYsMHg3NSwweEU2LDB4
RjcsMHg1RSwweEU4LDB4QkIsMHhGNywweEY2LDB4NTUsMHhFNiwweDAyLDB4QjUsMHg1RiwweEZB
LAorICAgIDB4RjcsMHhGNiwweDU1LDB4RTYsMHgyMCwweDAwLDB4MkQsMHg5NywweDE4LDB4Rjcs
MHhENywweEY2LDB4RjcsMHhGRiwweDhBLDB4RTksCisgICAgMHgxOCwweEZGLDB4RDcsMHhFRSww
eEFBLDB4RkQsMHhFQSwweEVCLDB4MTgsMHhGNywweEQ3LDB4RjYsMHhFMiwweEFBLDB4NTcsMHg1
QywKKyAgICAweEY3LDB4RjYsMHhCNywweEVFLDB4RjgsMHhBOCwweEZGLDB4RkUsMHhENywweEY2
LDB4NzUsMHhFRSwweDJFLDB4RjAsMHg0MCwweDgyLAorICAgIDB4RDcsMHhGNiwweDU1LDB4RTYs
MHhBMCwweEUyLDB4RTIsMHhDMSwweDk2LDB4RUUsMHhEMywweEQ1LDB4NjAsMHhFMCwweEMwLDB4
QzIsCisgICAgMHgxNCwweERFLDB4NTEsMHhDRCwweDI1LDB4MzUsMHhCRiwweEZGLDB4MTQsMHhE
RSwweEYzLDB4REQsMHhENCwweEJFLDB4QkMsMHhCQSwKKyAgICAweDM0LDB4RTYsMHhGMywweERE
LDB4RUIsMHhFQSwweEUyLDB4RkEsMHgxNCwweERFLDB4RjMsMHhERCwweEI3LDB4RUQsMHhEQiww
eEY1LAorICAgIDB4MDUsMHg1QSwweDQzLDB4NDEsMHhEOCwweDUwLDB4NzIsMHhDMCwweDQ3LDB4
NjIsMHg2MywweDQxLDB4MDMsMHhBQiwweDU1LDB4MjUsCisgICAgMHg2NywweDYyLDB4ODQsMHg0
MSwweDU3LDB4NzcsMHg1NSwweDc4LDB4QTUsMHg0OSwweDYzLDB4NDEsMHgwMCwweDZBLDB4RUIs
MHhGRSwKKyAgICAweEE1LDB4NDksMHgwMiwweDM5LDB4QTAsMHg3QiwweEEwLDB4QUEsMHhBNSww
eDQ5LDB4MDIsMHgzMSwweDNFLDB4QjMsMHg4RiwweDlBLAorICAgIDB4Q0EsMHg4QiwweEE0LDB4
NDksMHg1NSwweDdELDB4QzksMHg1NSwweDg1LDB4NDEsMHhFMiwweDI4LDB4OUUsMHhCRSwweEY4
LDB4NTgsCisgICAgMHg0NywweDVBLDB4MDIsMHgzMSwweEZGLDB4MEYsMHhBRiwweDc1LDB4QTUs
MHg0OSwweDAyLDB4MzEsMHg1RSwweEM4LDB4Q0EsMHhGRiwKKyAgICAweDg0LDB4NDksMHhFMiww
eDMwLDB4QUEsMHgwMiwweEE5LDB4NzcsMHg4NCwweDQ5LDB4RTIsMHgzMCwweEFCLDB4MjIsMHhB
OCwweDU1LAorICAgIDB4QTQsMHg1MSwweDAyLDB4MzksMHhBRiwweEFFLDB4QkEsMHg5NSwweDI2
LDB4NzIsMHg4NCwweDUxLDB4RUQsMHhCRCwweEFCLDB4OEIsCisgICAgMHgwNiwweDZBLDB4ODQs
MHg1MSwweDdFLDB4N0EsMHg3OCwweDQwLDB4ODUsMHg1MSwweEUzLDB4MzgsMHg4MCwweEFBLDB4
N0UsMHg1QywKKyAgICAweDg1LDB4NDksMHhDMiwweDMwLDB4MDAsMHgyQSwweDVELDB4RkQsMHg4
NSwweDQ5LDB4QzMsMHgzMCwweDAwLDB4QUEsMHg1NywweEFGLAorICAgIDB4ODUsMHg0OSwweEUy
LDB4MzAsMHg4OCwweEVFLDB4NTUsMHhBQSwweEM1LDB4NTEsMHhFMywweDMwLDB4QUEsMHg3Riww
eDU1LDB4MkEsCisgICAgMHhDNSwweDQ5LDB4MDMsMHgzOSwweEFBLDB4NTUsMHg1NSwweDI4LDB4
MDYsMHg1MiwweDAzLDB4MzksMHg1QiwweEQ1LDB4QjUsMHgwMCwKKyAgICAweDA2LDB4NUEsMHhF
MiwweDMwLDB4RkYsMHg1NSwweEFFLDB4MDAsMHgwNiwweDVBLDB4RTIsMHgzMCwweEZGLDB4QjUs
MHgyQiwweDAwLAorICAgIDB4MjcsMHg1QSwweDAyLDB4MzksMHg3NSwweDU3LDB4QUEsMHgwMCww
eDA2LDB4NUEsMHgyMywweDM5LDB4NTUsMHg1NSwweDJBLDB4MDAsCisgICAgMHgwNSwweDVBLDB4
RTIsMHgzMCwweEQ3LDB4QkYsMHgwMCwweDIwLDB4MDcsMHg1QSwweEMyLDB4MzAsMHhENiwweEE4
LDB4ODAsMHgyMiwKKyAgICAweDA3LDB4NjIsMHhFMiwweDMwLDB4NTUsMHhBQSwweDAwLDB4QUEs
MHgwNiwweDVBLDB4MDMsMHgzMSwweEQ1LDB4MEEsMHgyMCwweDAwLAorICAgIDB4QzgsMHg3Miww
eDY0LDB4NDksMHg1QiwweEZGLDB4RkEsMHgwQSwweEFDLDB4OTMsMHg4NCwweDQ5LDB4NTUsMHhG
RCwweDU1LDB4MDIsCisgICAgMHhEMCwweEI0LDB4RTYsMHg1OSwweDU1LDB4NTUsMHg1NSwweDBB
LDB4MzIsMHhDNSwweDA2LDB4NUEsMHg1NSwweDU1LDB4NTUsMHgwMCwKKyAgICAweEI0LDB4RDUs
MHgwNiwweDVBLDB4NTUsMHg1NSwweEY1LDB4MDAsMHgzNiwweEU2LDB4MDYsMHg1QSwweDU1LDB4
NTUsMHhGRiwweDAwLAorICAgIDB4NTUsMHhFNiwweDA2LDB4NUEsMHg1NSwweDU1LDB4QUIsMHgw
MCwweDk3LDB4RUUsMHgyNywweDYyLDB4NTUsMHg1NSwweEFBLDB4MDAsCisgICAgMHgzNSwweERF
LDB4MjYsMHg2MiwweDU1LDB4RDUsMHgwMCwweDAwLDB4NzUsMHhFNiwweEU1LDB4NTksMHg1NSww
eEZGLDB4MDAsMHgwMCwKKyAgICAweDc1LDB4RTYsMHgwNiwweDVBLDB4NTUsMHhBRiwweDAwLDB4
MDAsMHg5NiwweEVFLDB4MjcsMHg2MiwweDU1LDB4QUEsMHgwMCwweDAwLAorICAgIDB4QjYsMHhF
RSwweEU4LDB4N0EsMHhCRCwweDBBLDB4MDAsMHgwMCwweEQ3LDB4RjYsMHg3NSwweEVFLDB4MEQs
MHg4OSwweEEyLDB4QTAsCisgICAgMHhCNiwweEY2LDB4NzYsMHhFRSwweEUwLDB4NjgsMHg3OCww
eEVBLDB4OTYsMHhFRSwweEY0LDB4REQsMHhFOCwweEUwLDB4N0EsMHg3QSwKKyAgICAweEI2LDB4
RjYsMHhEMywweEQ1LDB4QkYsMHhCRCwweEI1LDB4MkYsMHhENywweEY2LDB4MTQsMHhERSwweEY1
LDB4QUIsMHg4MiwweDAwLAorICAgIDB4QjcsMHhGNiwweDU1LDB4RTYsMHg1RCwweEJGLDB4RkUs
MHhFMCwweEI2LDB4RUUsMHg1MSwweENELDB4NUYsMHg4MCwweDA4LDB4MjIsCisgICAgMHg5Niww
eEVFLDB4OTIsMHhDRCwweDBCLDB4QjUsMHhGOCwweDgwLDB4RjcsMHhGNiwweDM0LDB4REUsMHhB
QSwweEFCLDB4QjUsMHhGNSwKKyAgICAweEQ3LDB4RjYsMHgxNCwweERFLDB4NkEsMHhDMCwweDAy
LDB4MEEsMHhENywweEY2LDB4OTIsMHhDRCwweDAyLDB4MkQsMHhCRSwweDgwLAorICAgIDB4MTgs
MHhGRiwweDk2LDB4RTYsMHhBQSwweDIwLDB4MjksMHg5NSwweDE4LDB4RjcsMHhENywweEY2LDB4
RUEsMHhCQSwweEFBLDB4RUEsCisgICAgMHhGNywweEY2LDB4QjcsMHhFRSwweEVFLDB4RUMsMHhG
MCwweEMwLDB4RDcsMHhGNiwweDk2LDB4RUUsMHhBQSwweEJDLDB4RkEsMHg2QSwKKyAgICAweEI2
LDB4RUUsMHgzNCwweERFLDB4OEIsMHgyNywweEI0LDB4QkUsMHg5NiwweEVFLDB4MzQsMHhFNiww
eENCLDB4RUIsMHhGRCwweEI3LAorICAgIDB4RjMsMHhERCwweDcxLDB4Q0QsMHhERiwweEQ2LDB4
NUMsMHg1QywweDM0LDB4RTYsMHhEMywweERELDB4QUYsMHhBOSwweDM5LDB4QTksCisgICAgMHgz
NCwweEU2LDB4MTQsMHhERSwweDc4LDB4NTMsMHg1RiwweDVFLDB4MzQsMHhFNiwweEYzLDB4REQs
MHhENSwweEI1LDB4REYsMHhGRiwKKyAgICAweDJBLDB4ODMsMHhDNSwweDUxLDB4NTcsMHg1RSww
eDVFLDB4N0MsMHg4NCwweDQ5LDB4RTEsMHgzMCwweDJCLDB4RDYsMHg1QywweDAwLAorICAgIDB4
NjcsMHg2MiwweDIyLDB4MzksMHhGRiwweDc3LDB4NTUsMHgyQiwweEE4LDB4NkEsMHgyMywweDM5
LDB4RkYsMHg1NSwweEZGLDB4MDAsCisgICAgMHgyNywweDYyLDB4MDIsMHgzMSwweEZGLDB4NTUs
MHhBQSwweDAwLDB4MjcsMHg1QSwweDAyLDB4MzEsMHg1RiwweDdELDB4OEEsMHg4MCwKKyAgICAw
eDA2LDB4NUEsMHgwMiwweDMxLDB4NTUsMHg1NSwweEFBLDB4MDAsMHhFNiwweDUxLDB4QzIsMHgy
OCwweDVELDB4RkYsMHgwMCwweDIwLAorICAgIDB4MDcsMHg1QSwweEMxLDB4MzAsMHg1NSwweEZG
LDB4MDAsMHhBMiwweDA2LDB4NUEsMHhFMiwweDMwLDB4RDUsMHhGRiwweDAwLDB4QUEsCisgICAg
MHgwNywweDVBLDB4QzEsMHgzMCwweDU2LDB4QTIsMHgwMCwweEFBLDB4MDYsMHg1QSwweEUyLDB4
MzAsMHg1NSwweDIyLDB4ODAsMHhBRSwKKyAgICAweEM1LDB4NTksMHgwMiwweDM5LDB4QjUsMHgw
MCwweDAwLDB4MDAsMHgyNiwweDcyLDB4QzUsMHg2MSwweDA5LDB4QTksMHhFRiwweEVELAorICAg
IDB4MjYsMHg3MiwweEU1LDB4NjksMHg0QSwweEJGLDB4RkIsMHg4QiwweEFCLDB4QTMsMHhDNSww
eDU5LDB4NTUsMHg1NywweDVELDB4MkYsCisgICAgMHgxMSwweEM1LDB4QzYsMHg1OSwweDU1LDB4
NTUsMHg1NSwweDAyLDB4NzIsMHhDRCwweEU1LDB4NTEsMHg1NSwweDU1LDB4NzUsMHgwMCwKKyAg
ICAweEYzLDB4RDUsMHhDNSwweDUxLDB4NTUsMHg1NSwweEZGLDB4MDAsMHgzNSwweEU2LDB4RTYs
MHg1OSwweDU1LDB4NTUsMHhCRiwweDAwLAorICAgIDB4NTUsMHhFNiwweEU2LDB4NTksMHg1NSww
eDU1LDB4QUEsMHgwMCwweEI2LDB4RUUsMHgyNiwweDYyLDB4NTUsMHg1NSwweEFBLDB4MDAsCisg
ICAgMHgzNCwweERFLDB4QzYsMHg1MSwweDU1LDB4RkQsMHgwMCwweDAwLDB4NzYsMHhFRSwweEU2
LDB4NTksMHg1NSwweEZGLDB4MDAsMHgwMCwKKyAgICAweDc2LDB4RTYsMHhDNSwweDU5LDB4NTUs
MHhBQSwweDAwLDB4MDAsMHg5NiwweEVFLDB4MjYsMHg2MiwweDU1LDB4QUEsMHgwMCwweDAwLAor
ICAgIDB4QjcsMHhGNiwweEE4LDB4N0EsMHg1NSwweDJBLDB4MDAsMHgwMCwweDc2LDB4RUUsMHhF
OSwweDdBLDB4RjUsMHgyMCwweDAwLDB4MDAsCisgICAgMHg3NiwweEVFLDB4MkUsMHhBNCwweEQ1
LDB4MDAsMHgwMCwweDAwLDB4RDMsMHhERCwweDI2LDB4NkEsMHhBQSwweEMwLDB4RTAsMHg3OCwK
KyAgICAweDRFLDB4QUMsMHgwNiwweDYyLDB4M0UsMHhCNywweDU1LDB4NTUsMHhCNywweEY2LDB4
OEYsMHhCNCwweEFBLDB4MDMsMHgwOSwweDA5LAorICAgIDB4RjgsMHhGRSwweDU1LDB4RTYsMHhE
NSwweEFFLDB4QUEsMHgwMCwweDE4LDB4RkYsMHg3NiwweEVFLDB4NzUsMHhCRiwweEEyLDB4MDgs
CisgICAgMHhGNywweEY2LDB4OTYsMHhFRSwweDVELDB4QUUsMHhBOCwweEFDLDB4RDcsMHhGNiww
eDk2LDB4RUUsMHhCRCwweEFBLDB4MDgsMHgwMCwKKyAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4
NUQsMHhFRiwweEVDLDB4OEEsMHhENywweEY2LDB4OTYsMHhFRSwweEVGLDB4QUEsMHg4MiwweDgy
LAorICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHhGNywweEU3LDB4RUEsMHhBOCwweEQ3LDB4RjYs
MHhCNiwweEVFLDB4RUIsMHhFQiwweEZGLDB4QUEsCisgICAgMHhCNiwweEY2LDB4RDcsMHhFRSww
eDhBLDB4MjIsMHhGQSwweEVCLDB4RjcsMHhGNiwweEI2LDB4RUUsMHg3NywweDVGLDB4RkQsMHhC
QiwKKyAgICAweEY3LDB4RjYsMHg5NiwweEVFLDB4MkEsMHg4QiwweDYyLDB4NTgsMHhENywweEY2
LDB4NzYsMHhFRSwweEU4LDB4QkIsMHhGRCwweDVELAorICAgIDB4OTYsMHhFRSwweDE0LDB4RTYs
MHgwMCwweEU4LDB4RjgsMHg3RSwweEI2LDB4RjYsMHgxNCwweERFLDB4NUYsMHhGRCwweDJGLDB4
MkQsCisgICAgMHhGNywweEY2LDB4NTUsMHhFNiwweEFELDB4MEEsMHhBQSwweEFBLDB4RjcsMHhG
NiwweEI3LDB4RjYsMHg4QSwweEEyLDB4QUEsMHhBRCwKKyAgICAweEY3LDB4RjYsMHhCNiwweEVF
LDB4NUUsMHhGQSwweEE4LDB4QUIsMHhENywweEY2LDB4NzUsMHhFNiwweERGLDB4RkEsMHhBQSww
eDgwLAorICAgIDB4QjYsMHhFRSwweDc2LDB4RUUsMHgzNywweEJGLDB4QUEsMHgwMCwweEQ3LDB4
RjYsMHg1NSwweEU2LDB4RDYsMHhBOCwweDBBLDB4MkEsCisgICAgMHhGNywweEY2LDB4NzYsMHhF
RSwweEJELDB4QkYsMHhBRSwweEE4LDB4MzgsMHhGRiwweEQ3LDB4RjYsMHhGRiwweEVELDB4QkQs
MHgyRiwKKyAgICAweDE4LDB4RkYsMHhCNywweEVFLDB4N0UsMHhBRSwweEVBLDB4QTAsMHgxOCww
eEY3LDB4QjcsMHhFRSwweEEzLDB4QUQsMHhERSwweEZBLAorICAgIDB4MTgsMHhGNywweEQ3LDB4
RjYsMHg2QSwweEVBLDB4RUIsMHhGRiwweEI3LDB4RUUsMHg3NSwweEU2LDB4QTAsMHg2MCwweDYw
LDB4NjAsCisgICAgMHg5NiwweEVFLDB4OTIsMHhENSwweEE4LDB4QjgsMHhGQSwweDVBLDB4NzUs
MHhFRSwweDE0LDB4REUsMHhCNiwweEY0LDB4REUsMHg1NiwKKyAgICAweDU1LDB4RTYsMHg3MSww
eENELDB4NUUsMHg1QywweDVDLDB4NTgsMHgzNCwweEU2LDB4QjMsMHhENSwweDhCLDB4ODksMHgw
QiwweDAxLAorICAgIDB4MzQsMHhFNiwweEYzLDB4REQsMHhEQSwweDVBLDB4NUUsMHg1RiwweDE0
LDB4REUsMHhEMywweERELDB4MEIsMHhBMiwweEVBLDB4NkYsCisgICAgMHgzNSwweEU2LDB4RTUs
MHg1OSwweDU2LDB4N0EsMHhBMCwweDAwLDB4RjQsMHhENSwweEE0LDB4NTEsMHg1NSwweDU1LDB4
QkEsMHgwMCwKKyAgICAweEY0LDB4RDUsMHhDNSwweDUxLDB4NTUsMHg1NSwweEFBLDB4MDAsMHgz
NSwweEU2LDB4MDYsMHg1QSwweDU1LDB4NTUsMHhBQSwweDAwLAorICAgIDB4MzUsMHhFNiwweDI2
LDB4NjIsMHg1NSwweDU1LDB4OEEsMHgwMCwweDM1LDB4RTYsMHhBNSwweDUxLDB4NTUsMHhGRiww
eDAwLDB4MDAsCisgICAgMHgzNSwweEU2LDB4QzUsMHg1MSwweDU1LDB4QkIsMHgwMCwweDAwLDB4
NTUsMHhFNiwweEM1LDB4NTEsMHg1NSwweEFBLDB4MDAsMHgwMCwKKyAgICAweDc1LDB4RUUsMHg2
NywweDZBLDB4NTUsMHhBQSwweDAwLDB4MDAsMHg1NSwweEU2LDB4RTksMHg3QSwweDU1LDB4MjIs
MHgwMCwweDAwLAorICAgIDB4NTUsMHhFNiwweENDLDB4OTMsMHg1NSwweDAyLDB4MDAsMHgwMCww
eDc2LDB4RUUsMHgyRSwweEE0LDB4RjUsMHgyMCwweDAwLDB4MDAsCisgICAgMHg1NSwweEVFLDB4
QUMsMHg5QiwweDdCLDB4QzAsMHhDMCwweEMwLDB4NjcsMHg3MiwweEE0LDB4NjEsMHhGNywweEQ2
LDB4NTQsMHg1QywKKyAgICAweDI2LDB4NzIsMHhBNCwweDYxLDB4QUIsMHg4QiwweEE5LDB4MEYs
MHgyRCwweEFDLDB4MjYsMHg3MiwweDM1LDB4QjUsMHg1NSwweDU1LAorICAgIDB4NTUsMHhFRSww
eEU5LDB4OEEsMHgwMiwweDAzLDB4MEIsMHgyRCwweEI2LDB4RjYsMHg3NSwweEVFLDB4RDUsMHhB
QiwweEFBLDB4OEIsCisgICAgMHhCNiwweEY2LDB4NzUsMHhFRSwweEZELDB4QUIsMHhBMiwweDgy
LDB4QjYsMHhGNiwweDk2LDB4RUUsMHg1NSwweEVBLDB4RUEsMHhFQSwKKyAgICAweEI2LDB4RjYs
MHg5NiwweEVFLDB4QTUsMHgyQiwweEJFLDB4OEYsMHhCNiwweEY2LDB4OTYsMHhFRSwweEYzLDB4
ODgsMHgzMiwweDBGLAorICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHgyRSwweDgyLDB4MkEsMHgw
OCwweEI2LDB4RjYsMHhENywweEVFLDB4MjIsMHhDOCwweDg4LDB4RkMsCisgICAgMHhGNywweEY2
LDB4QjYsMHhGNiwweEU3LDB4QUEsMHgwQSwweDAyLDB4RjgsMHhGRSwweEQ3LDB4RUUsMHhGNSww
eEVBLDB4OEEsMHhBQSwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4RDUsMHgwQSwweDAyLDB4
MDAsMHhGNywweEZFLDB4RDcsMHhGNiwweEQ3LDB4RkMsMHhFQSwweDdFLAorICAgIDB4QjYsMHhG
NiwweENCLDB4QTMsMHg4MCwweEEwLDB4RTAsMHg3OCwweENGLDB4QkMsMHg2NywweDcyLDB4NTgs
MHg1NiwweDU3LDB4NTUsCisgICAgMHg2NywweDdBLDB4QzUsMHg2MSwweERFLDB4RkEsMHhCOCww
eDMwLDB4RDcsMHhGNiwweDJELDB4QUMsMHgwOSwweDA5LDB4MDksMHgwOSwKKyAgICAweDE4LDB4
RkYsMHhGNywweEY2LDB4REYsMHhCRiwweEJELDB4RkYsMHgxNywweEZGLDB4RjcsMHhGNiwweEVC
LDB4QkIsMHg4MiwweEFCLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg2QywweDVBLDB4RDAs
MHgzMCwweEY3LDB4RjYsMHhENywweEY2LDB4NTUsMHhGRSwweEZGLDB4RUYsCisgICAgMHhENyww
eEY2LDB4QjYsMHhFRSwweDBCLDB4MkIsMHgwMCwweDAwLDB4QjcsMHhGNiwweEY3LDB4RUUsMHhB
QSwweEVBLDB4QUUsMHhFRiwKKyAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4ODgsMHgwQSwweDAy
LDB4ODAsMHhGNywweEY2LDB4QjYsMHhFRSwweEZGLDB4QkUsMHhBRSwweEFFLAorICAgIDB4QjYs
MHhGNiwweEY3LDB4RUUsMHhBQSwweEJBLDB4QkIsMHhFRSwweEY3LDB4RjYsMHhCNiwweEVFLDB4
MEUsMHg4MiwweEMyLDB4NzgsCisgICAgMHhENywweEY2LDB4OTYsMHhFRSwweDc4LDB4NTQsMHg3
NiwweDU3LDB4OTYsMHhFRSwweEY0LDB4REQsMHhBMCwweEU4LDB4NkEsMHg3OCwKKyAgICAweDM1
LDB4RTYsMHg5MSwweENELDB4RTAsMHg3MCwweDVGLDB4MTYsMHg5NiwweEY2LDB4RjMsMHhERCww
eEFELDB4RkQsMHgwMywweDAwLAorICAgIDB4QjYsMHhGNiwweEIzLDB4RDUsMHgwQSwweEY3LDB4
RkUsMHhBOCwweEQ3LDB4RjYsMHhGNCwweERELDB4MDIsMHhBRiwweEZELDB4RkYsCisgICAgMHhE
NywweEY2LDB4NTUsMHhFNiwweDAwLDB4MEEsMHgzRCwweEQ1LDB4RjcsMHhGNiwweEI2LDB4RUUs
MHhBQSwweEFBLDB4ODMsMHhCNSwKKyAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4RkUsMHhGOCww
eDI4LDB4MDAsMHhENywweEY2LDB4OTYsMHhFRSwweDBBLDB4QUUsMHg5RSwweEY4LAorICAgIDB4
MTgsMHhGNywweEQ3LDB4RjYsMHhGRiwweEZELDB4QjUsMHhBNSwweDM4LDB4RkYsMHhGOCwweEY2
LDB4QTUsMHhCNSwweERELDB4RDcsCisgICAgMHgzOCwweEZGLDB4RjgsMHhGNiwweEZBLDB4RTgs
MHg4MiwweDBCLDB4MTgsMHhGRiwweEI3LDB4RjYsMHhFQSwweEZBLDB4RkEsMHhEQywKKyAgICAw
eEY3LDB4RjYsMHg3NiwweEVFLDB4ODIsMHhBQiwweEFGLDB4QjcsMHhENywweEY2LDB4NzUsMHhF
NiwweDdBLDB4NzgsMHg3OCwweERBLAorICAgIDB4NTUsMHhFNiwweDEwLDB4QzUsMHhGOCwweEY4
LDB4NTgsMHg1OCwweDU1LDB4RUUsMHhEMywweERELDB4RkEsMHhGMywweEYyLDB4RTEsCisgICAg
MHgxNCwweEU2LDB4MTAsMHhDNSwweEYwLDB4NjAsMHg2MCwweDQwLDB4RDcsMHhGNiwweDkyLDB4
RDUsMHhGRCwweEJELDB4QTksMHgyRCwKKyAgICAweDc1LDB4RUUsMHhGMywweERELDB4N0YsMHg3
NywweDdFLDB4ODAsMHgzNCwweEU2LDB4OTIsMHhDRCwweDZBLDB4N0EsMHg2QSwweDg4LAorICAg
IDB4RDYsMHhGNiwweDk2LDB4RUUsMHg1RiwweDVFLDB4RUEsMHhBRSwweEI2LDB4RUUsMHg3NSww
eEU2LDB4NTUsMHhCQiwweDAyLDB4MDAsCisgICAgMHhCNiwweEVFLDB4NzUsMHhFNiwweEQ1LDB4
QUEsMHgwMiwweDAwLDB4RDcsMHhGNiwweDc1LDB4RTYsMHg1NSwweEVGLDB4QUEsMHhBMiwKKyAg
ICAweEI2LDB4RUUsMHg3NSwweEU2LDB4RkQsMHhBQSwweDIwLDB4MDAsMHhCNiwweEVFLDB4NzUs
MHhFRSwweEZGLDB4MjIsMHgwMCwweDAwLAorICAgIDB4RDUsMHhFRSwweDc2LDB4RUUsMHhGNyww
eEZGLDB4RkYsMHhGRSwweDk2LDB4RUUsMHg3NSwweEVFLDB4OEIsMHhDOCwweDBBLDB4MDgsCisg
ICAgMHhCNywweEY2LDB4NzUsMHhFRSwweEZGLDB4RkYsMHhCRSwweEFBLDB4RDYsMHhGNiwweDk2
LDB4RUUsMHhGNywweEJGLDB4QUIsMHhBQSwKKyAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4RkYs
MHgyRiwweDhBLDB4QTIsMHhENywweEY2LDB4OTYsMHhGNiwweERCLDB4QUEsMHhBQSwweEE4LAor
ICAgIDB4QjYsMHhGNiwweDZELDB4QjQsMHg2MCwweDQwLDB4NjAsMHhDMCwweDY2LDB4N0EsMHg4
NCwweDYxLDB4N0UsMHhGRSwweEZBLDB4RUMsCisgICAgMHgyNywweDdBLDB4ODQsMHg2MSwweDJE
LDB4QkYsMHhGRiwweERFLDB4MjYsMHg3MiwweEU2LDB4NzEsMHgyNSwweDJFLDB4QkYsMHg2RCwK
KyAgICAweEQzLDB4REQsMHg2NywweDdBLDB4MjUsMHhCNSwweEQ1LDB4RDUsMHg5NiwweEY2LDB4
OEYsMHhCQywweDAwLDB4MDIsMHgwMiwweDA5LAorICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHgy
OCwweDAyLDB4OEEsMHgwQSwweEQ2LDB4RjYsMHg5NiwweEVFLDB4RkUsMHhFQSwweEFBLDB4RUEs
CisgICAgMHhCNiwweEY2LDB4OTYsMHhFRSwweDJBLDB4MDIsMHgyMiwweDAwLDB4QjYsMHhGNiww
eDk2LDB4RUUsMHhBQSwweDgyLDB4MjAsMHgwOCwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEY2LDB4
NUQsMHhENSwweDZELDB4QTUsMHhENywweEY2LDB4QjYsMHhFRSwweDJCLDB4MkIsMHgyRSwweDNB
LAorICAgIDB4RDcsMHhGRSwweEY3LDB4RjYsMHg3NSwweDU3LDB4RDcsMHg1NSwweDE3LDB4RkYs
MHhGNywweEY2LDB4NUQsMHhERiwweDdGLDB4NUIsCisgICAgMHhENiwweEZFLDB4RjcsMHhGNiww
eEQ3LDB4RDcsMHg1NSwweEE3LDB4RDYsMHhGNiwweEFGLDB4QkMsMHgwMCwweDgwLDB4RTAsMHg3
OCwKKyAgICAweDM1LDB4RUUsMHg4NywweDdBLDB4NzgsMHg1RSwweDU3LDB4NTcsMHhDNywweDhB
LDB4NDcsMHg3QSwweEZGLDB4RkYsMHhBRCwweDJGLAorICAgIDB4QUIsMHhBMywweDQ2LDB4NzIs
MHhENSwweDk3LDB4OTcsMHgxRiwweEY3LDB4RkUsMHg4RiwweEJDLDB4MDksMHgwQiwweDAzLDB4
MDIsCisgICAgMHgxNywweEZGLDB4RjgsMHhGNiwweEVBLDB4MkUsMHgyQSwweEFBLDB4MTgsMHhG
RiwweEY3LDB4RjYsMHgwQSwweEE4LDB4QTIsMHhDQSwKKyAgICAweEY3LDB4RjYsMHhENywweEY2
LDB4QTgsMHhBOCwweEE4LDB4ODIsMHhGNywweEY2LDB4RDcsMHhGNiwweEZGLDB4OUYsMHhGQSww
eDVBLAorICAgIDB4RDcsMHhGNiwweEQ2LDB4RUUsMHg4MiwweEE4LDB4MjIsMHg4QSwweEY3LDB4
RjYsMHhENywweEY2LDB4REYsMHg3QiwweEQ1LDB4OUQsCisgICAgMHhGNywweEY2LDB4QjcsMHhF
RSwweEFGLDB4QkEsMHhFQSwweEFBLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg1RCwweERELDB4Rjcs
MHgyQiwKKyAgICAweDE3LDB4RkYsMHhCNywweEVFLDB4QUYsMHhBQiwweEVBLDB4NzgsMHhGOCww
eEY2LDB4OTYsMHhFRSwweEZDLDB4N0UsMHg1RiwweDVGLAorICAgIDB4OTYsMHhFRSwweDM0LDB4
RTYsMHg4MCwweEM4LDB4NjgsMHg1QywweDU1LDB4RTYsMHhCMiwweEQ1LDB4RTgsMHhGQSwweEZF
LDB4OTcsCisgICAgMHhCNywweEY2LDB4RjMsMHhERCwweDM1LDB4MkQsMHgwQiwweDAyLDB4RDcs
MHhGNiwweEI2LDB4RjYsMHhBRCwweEEwLDB4ODIsMHhBMiwKKyAgICAweEQ3LDB4RjYsMHg5Niww
eEVFLDB4N0UsMHhBRSwweEJBLDB4QTgsMHhENywweEY2LDB4NTUsMHhFNiwweEQ3LDB4OEEsMHgy
MiwweDJBLAorICAgIDB4RDcsMHhGNiwweDc1LDB4RTYsMHg1RiwweEFGLDB4MjgsMHhBOCwweEY3
LDB4RjYsMHg3NSwweEU2LDB4QkQsMHhGRiwweEZFLDB4ODIsCisgICAgMHhGNywweEY2LDB4OTYs
MHhFRSwweEEyLDB4ODMsMHg4OSwweDJGLDB4RjcsMHhGNiwweEI3LDB4RUUsMHg1RSwweEZBLDB4
QjAsMHhBMCwKKyAgICAweEY4LDB4RjYsMHhCNywweEVFLDB4MEIsMHgwQiwweDhBLDB4QTIsMHgx
OCwweEY3LDB4RDcsMHhFRSwweDIwLDB4OEEsMHhBRiwweEI3LAorICAgIDB4MzgsMHhGRiwweEY4
LDB4RjYsMHg4RiwweEI1LDB4REYsMHg1NywweDM4LDB4RkYsMHg5NiwweEVFLDB4RjgsMHg3OCww
eDcyLDB4NkEsCisgICAgMHhENywweEY2LDB4MzUsMHhFNiwweDJFLDB4M0YsMHhCRSwweERGLDB4
QjYsMHhGNiwweDE0LDB4REUsMHhCOCwweEZDLDB4REMsMHg3QywKKyAgICAweDM0LDB4RTYsMHgx
MCwweEJELDB4NTgsMHg1QywweDVDLDB4NUMsMHgzNCwweEU2LDB4OTIsMHhDRCwweDgzLDB4QzEs
MHhDOSwweEM5LAorICAgIDB4RjQsMHhERCwweDUxLDB4QzUsMHg0MCwweDQyLDB4NDIsMHg4Qiww
eDc2LDB4RUUsMHhDRiwweEI0LDB4MEIsMHgyRCwweEI1LDB4MjUsCisgICAgMHg5NSwweEVFLDB4
NTUsMHhFNiwweEVDLDB4NUUsMHg1RiwweERDLDB4OTYsMHhFRSwweDU1LDB4RTYsMHhENywweEZC
LDB4QUQsMHhBOSwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4QjUsMHhGRCwweEZELDB4REQs
MHhENiwweEY2LDB4QjYsMHhFRSwweEY1LDB4REYsMHhGNiwweEY5LAorICAgIDB4RDYsMHhGNiww
eEI2LDB4RUUsMHhBRCwweEZGLDB4QkIsMHhCQiwweEQ2LDB4RjYsMHhCNiwweEVFLDB4RkYsMHhE
RiwweEJGLDB4RkYsCisgICAgMHhENywweEY2LDB4QjYsMHhFRSwweDc3LDB4RkYsMHhCQSwweEZB
LDB4QjYsMHhGNiwweEQ2LDB4RUUsMHgyOCwweEJBLDB4QUYsMHhCQSwKKyAgICAweEI3LDB4RUUs
MHg5NSwweEVFLDB4NTYsMHhERiwweDU3LDB4NzYsMHhCNywweEZFLDB4OTUsMHhFRSwweEQ1LDB4
RDUsMHg3RiwweEY1LAorICAgIDB4QjUsMHhGNiwweDk2LDB4RUUsMHhBRiwweEVFLDB4RkIsMHhC
RiwweEQ3LDB4RjYsMHhCNiwweEVFLDB4QUIsMHgyQiwweDhCLDB4MjksCisgICAgMHhENywweEY2
LDB4QjYsMHhFRSwweEFFLDB4MjgsMHgwMiwweDgwLDB4RDcsMHhGNiwweEI2LDB4RUUsMHhCQSww
eEFBLDB4QTAsMHgwMCwKKyAgICAweEI2LDB4RjYsMHg4NiwweDdBLDB4ODAsMHhFMCwweDYwLDB4
NzAsMHg0NywweDcyLDB4NjMsMHg2MSwweEE4LDB4QUUsMHhCQSwweERDLAorICAgIDB4MjYsMHg3
MiwweDg0LDB4NjEsMHg3QSwweDcwLDB4RjgsMHhFQSwweDA3LDB4NzIsMHg2NCwweDYxLDB4MEEs
MHhBQiwweEJGLDB4RjcsCisgICAgMHhBNywweDdBLDB4QTUsMHg2MSwweDJGLDB4QkYsMHhCRCww
eEY1LDB4NzUsMHhFRSwweEE3LDB4ODIsMHgwQiwweDJELDB4MzUsMHhCNSwKKyAgICAweEQ3LDB4
RjYsMHg3NSwweEY2LDB4QUEsMHgyQSwweEFBLDB4ODEsMHhENiwweEY2LDB4QjYsMHhGNiwweERC
LDB4RUUsMHhCOSwweEEzLAorICAgIDB4RDYsMHhGNiwweEI2LDB4RjYsMHg1RCwweDc2LDB4Nzgs
MHhGRiwweEI2LDB4RjYsMHhCNywweEVFLDB4ODgsMHgyMiwweDg4LDB4MjAsCisgICAgMHhENiww
eEY2LDB4QjYsMHhGNiwweDM3LDB4QkQsMHhCNywweDlELDB4RjcsMHhGNiwweEI2LDB4RUUsMHhC
QiwweEJFLDB4QUYsMHhBRiwKKyAgICAweEQ2LDB4RkUsMHhGNywweEY2LDB4RDUsMHhERiwweDc3
LDB4NTUsMHhENywweEZFLDB4RjcsMHhGNiwweDdELDB4NTUsMHhGNSwweEVELAorICAgIDB4Rjcs
MHhGRSwweDUxLDB4RDUsMHgwMCwweEEwLDB4RTAsMHg3OCwweEYzLDB4RTUsMHg0NiwweDcyLDB4
RTAsMHg3OCwweDVFLDB4NTcsCisgICAgMHg2NywweDdBLDB4MjYsMHg3QSwweDg5LDB4RkEsMHg3
QSwweEZFLDB4QTcsMHg4QSwweDQ3LDB4ODIsMHgzQiwweDBBLDB4QUYsMHg4RCwKKyAgICAweEIy
LDB4REQsMHg4NywweDgyLDB4OTUsMHg5NSwweEI1LDB4MzUsMHhGNywweEZFLDB4NTUsMHhFRSww
eDAxLDB4MDEsMHgwMywweDAyLAorICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHgzQSwweDJBLDB4
MkEsMHgyQSwweDM3LDB4RkYsMHhGOCwweEY2LDB4RkUsMHhGQSwweEVFLDB4QUUsCisgICAgMHhG
NywweEY2LDB4RDcsMHhGNiwweEEwLDB4RTAsMHhBOCwweEJDLDB4RjcsMHhGNiwweEQ3LDB4RjYs
MHg3QSwweDZGLDB4RkUsMHhEQiwKKyAgICAweEQ3LDB4RjYsMHhGNywweEVFLDB4MDgsMHg4OCww
eDBBLDB4MjIsMHhGNywweEY2LDB4RDcsMHhGNiwweEQ3LDB4QjUsMHhCNSwweEQ1LAorICAgIDB4
RjcsMHhGNiwweEQ3LDB4RjYsMHhERCwweEZELDB4M0QsMHgyQiwweDE4LDB4RkYsMHhENywweEY2
LDB4MkQsMHg4RiwweDYzLDB4NTgsCisgICAgMHhGNywweEY2LDB4OTYsMHhFRSwweEY4LDB4Rjgs
MHg3RiwweDVGLDB4QjcsMHhGNiwweDM1LDB4RTYsMHhBOCwweEVBLDB4N0EsMHg3QSwKKyAgICAw
eDU1LDB4RUUsMHg5MiwweENELDB4RTAsMHhFOCwweDVBLDB4REUsMHhENywweEY2LDB4NzEsMHhD
RCwweEI3LDB4MkQsMHgwQiwweDAyLAorICAgIDB4RDcsMHhGNiwweEI2LDB4RjYsMHg4RCwweDBC
LDB4MDAsMHgwMCwweEQ3LDB4RjYsMHhCNywweEVFLDB4QTgsMHhBQSwweDAwLDB4ODAsCisgICAg
MHhENywweEY2LDB4QjcsMHhFRSwweEU4LDB4OEEsMHhGOCwweEZDLDB4RDcsMHhGNiwweEI2LDB4
RUUsMHg1NSwweDdGLDB4OEYsMHgyMywKKyAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4NUQsMHg1
NSwweDc3LDB4NkUsMHhGNywweEY2LDB4OTYsMHhFRSwweDJCLDB4MkYsMHhCRCwweEZGLAorICAg
IDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhGRiwweEFBLDB4MkIsMHgyRCwweDM5LDB4RkYsMHhGNyww
eEY2LDB4NUYsMHg3RiwweEVBLDB4QUEsCisgICAgMHhGNywweEY2LDB4RDcsMHhFRSwweDJDLDB4
MkUsMHgwMiwweDAwLDB4RjgsMHhGNiwweEQ3LDB4RjYsMHhBNCwweEVDLDB4REEsMHhCOCwKKyAg
ICAweEY3LDB4RjYsMHhCNywweEVFLDB4QTAsMHhBMiwweEMyLDB4RTAsMHhENywweEY2LDB4Qjcs
MHhFRSwweDQwLDB4NkEsMHhBMiwweDIyLAorICAgIDB4QjcsMHhFRSwweDE0LDB4REUsMHg5RSww
eERFLDB4RDgsMHg1OCwweEQ3LDB4RjYsMHgzNCwweEU2LDB4NTgsMHg3QSwweDcyLDB4NjIsCisg
ICAgMHgxNCwweERFLDB4MTAsMHhDNSwweDVDLDB4RjgsMHhGOCwweEY4LDB4MzQsMHhFNiwweDcx
LDB4Q0QsMHg4OSwweEE5LDB4QUQsMHhBRCwKKyAgICAweEQzLDB4REQsMHg1MSwweEM1LDB4OEIs
MHgwQiwweDBGLDB4QTUsMHhCNiwweEY2LDB4MTAsMHhDNSwweDI1LDB4MkQsMHgyRiwweDJGLAor
ICAgIDB4QjYsMHhGNiwweDM0LDB4RTYsMHhEQSwweDU4LDB4RjgsMHg3MCwweDk2LDB4RUUsMHgz
NSwweEU2LDB4M0YsMHhCNSwweEJELDB4QkQsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDVC
LDB4RjcsMHhGRCwweEJELDB4RDYsMHhGNiwweEI2LDB4RUUsMHg2RiwweEJFLDB4QkEsMHhCNiwK
KyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4QkYsMHhFMywweEFELDB4QTcsMHhENiwweEY2LDB4
QjYsMHhFRSwweEFGLDB4NkUsMHhGRiwweEVDLAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhB
RCwweEJGLDB4RTMsMHhFRiwweEQ2LDB4RjYsMHhCNiwweEVFLDB4M0YsMHhFRSwweEVFLDB4RkQs
CisgICAgMHhCNiwweEY2LDB4OTUsMHhFRSwweEZBLDB4RjYsMHhGQywweEJFLDB4QjYsMHhGNiww
eDk2LDB4RUUsMHhBNSwweEVELDB4N0UsMHhGRSwKKyAgICAweDk2LDB4RjYsMHhCNiwweEVFLDB4
OUYsMHg2RSwweDdGLDB4N0EsMHhGNiwweEY2LDB4QjYsMHhFRSwweEZELDB4QkYsMHhGRiwweEFC
LAorICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHhFMCwweEUwLDB4MEEsMHgwOCwweEI2LDB4RjYs
MHhGNywweEVFLDB4QUYsMHhBRiwweEFCLDB4QUIsCisgICAgMHg1NSwweEVFLDB4QzQsMHg2MSww
eDcwLDB4NzAsMHg3MCwweDcwLDB4RTYsMHg2OSwweDIzLDB4NTEsMHg1OCwweDVFLDB4NUUsMHg3
RiwKKyAgICAweEU2LDB4NzEsMHgwMywweDUxLDB4MDIsMHgwMywweDA5LDB4QUQsMHhBNSwweDYx
LDB4NDQsMHg1OSwweEZBLDB4QkUsMHg1QywweDU4LAorICAgIDB4QzUsMHg2OSwweDQ0LDB4NTEs
MHgyRiwweEFELDB4QjUsMHhGNSwweEFCLDB4OUIsMHhFNiwweDY5LDB4MkQsMHhCRCwweEI1LDB4
RDUsCisgICAgMHhCNiwweEY2LDB4NkEsMHg5MywweDAyLDB4MEIsMHgwOSwweDI1LDB4RDYsMHhG
RSwweEQ3LDB4RjYsMHhGRiwweEZGLDB4REYsMHhCRSwKKyAgICAweEQ3LDB4RjYsMHhCNiwweEY2
LDB4QkMsMHhGRSwweEVDLDB4QjgsMHhENywweEY2LDB4QjYsMHhGNiwweEQ1LDB4QjcsMHhCRiww
eEFCLAorICAgIDB4RDYsMHhGNiwweEI2LDB4RjYsMHhGRSwweEJFLDB4QUMsMHhBMCwweEY3LDB4
RkUsMHhCNiwweEY2LDB4QkQsMHhFRiwweEJGLDB4QkUsCisgICAgMHhENywweEZFLDB4RjcsMHhG
NiwweDU1LDB4NTcsMHhGRiwweEVGLDB4RDcsMHhGNiwweEIyLDB4REQsMHgwMCwweDAwLDB4ODAs
MHg2MCwKKyAgICAweDc2LDB4RUUsMHg2NiwweDdBLDB4RTAsMHg3OCwweDVFLDB4NUYsMHg2Nyww
eDgyLDB4MDUsMHg3MiwweEU4LDB4RkQsMHhCRiwweDJCLAorICAgIDB4ODcsMHg4QSwweDA1LDB4
N0EsMHhBNywweEFELDB4MkYsMHhFQSwweDg3LDB4OEEsMHgyNSwweDdBLDB4MDIsMHhFQSwweEZF
LDB4REYsCisgICAgMHg3NiwweEVFLDB4NjYsMHg4MiwweDM1LDB4MjUsMHgyNSwweDJELDB4MTgs
MHhGRiwweEY3LDB4RkUsMHgyRCwweDA5LDB4MjksMHgwMSwKKyAgICAweDM4LDB4RkYsMHgxNyww
eEY3LDB4NTcsMHhERCwweDdGLDB4RkUsMHgxOCwweEZGLDB4RjcsMHhFRSwweDg4LDB4RTIsMHhB
MCwweEMwLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBQywweDJFLDB4QjgsMHhBQSwweEY3
LDB4RjYsMHhENywweEY2LDB4RkYsMHhGQSwweDdBLDB4QkEsCisgICAgMHhGNywweEY2LDB4RDcs
MHhGNiwweDVBLDB4RjcsMHg5NSwweEFBLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhENywweDVFLDB4
NUYsMHgyMywKKyAgICAweDE4LDB4RkYsMHhCNiwweEY2LDB4MkIsMHgyQiwweEEyLDB4NzIsMHgx
NywweEZGLDB4QjYsMHhGNiwweDVDLDB4NUYsMHg1NywweDU1LAorICAgIDB4QjYsMHhGNiwweDU0
LDB4RTYsMHhFMCwweEE4LDB4RTgsMHg3OCwweDc1LDB4RUUsMHg5MiwweEQ1LDB4QTAsMHhFOCww
eDc4LDB4RkEsCisgICAgMHhCNywweEY2LDB4OTIsMHhDRCwweEI3LDB4MjUsMHgwQiwweDAyLDB4
RjcsMHhGNiwweEI2LDB4RjYsMHhBRCwweEJCLDB4QUEsMHhBQiwKKyAgICAweEY3LDB4RjYsMHhE
NywweEY2LDB4NUYsMHhENSwweEZELDB4NzUsMHhENywweEY2LDB4QjcsMHhFRSwweEE4LDB4MDAs
MHgwMCwweDAwLAorICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHgzQSwweEFBLDB4MEEsMHhBOCww
eEQ3LDB4RjYsMHhCNiwweEVFLDB4MjgsMHhGQSwweEI4LDB4RkIsCisgICAgMHhENywweEY2LDB4
QjcsMHhFRSwweEZFLDB4QkUsMHgyRiwweEI4LDB4RDcsMHhGNiwweEI3LDB4RUUsMHg1RiwweEZD
LDB4QTIsMHhBMCwKKyAgICAweEY3LDB4RjYsMHhCNywweEVFLDB4MkQsMHgzRCwweEZGLDB4RkYs
MHgzOCwweEZGLDB4RjcsMHhGNiwweDJBLDB4QUIsMHhBRCwweEI1LAorICAgIDB4MzksMHhGRiww
eEY3LDB4RjYsMHg1RSwweDU4LDB4NjAsMHhDMCwweEY3LDB4RjYsMHhEOCwweEY2LDB4QUEsMHhB
QSwweDhCLDB4NzgsCisgICAgMHhGNywweEY2LDB4OTYsMHhFRSwweDhBLDB4RTgsMHg2OCwweDVG
LDB4RDcsMHhGNiwweDk2LDB4RUUsMHgyQSwweDJBLDB4MkYsMHgyRCwKKyAgICAweEI3LDB4RjYs
MHg5MSwweENELDB4QjgsMHhCOCwweEU4LDB4RDgsMHhENiwweEY2LDB4NTQsMHhFNiwweDYyLDB4
RTIsMHhBMywweEE5LAorICAgIDB4MTQsMHhERSwweDcxLDB4Q0QsMHg3NCwweEZDLDB4NzQsMHhG
QywweDM0LDB4RTYsMHg5MiwweENELDB4QUQsMHhBNSwweEI1LDB4QjUsCisgICAgMHg3MSwweENE
LDB4QUYsMHhCNCwweEE4LDB4QUMsMHhCRSwweEQ0LDB4QjYsMHhGNiwweDcxLDB4Q0QsMHgwRCww
eDA5LDB4MEIsMHgyRCwKKyAgICAweEQ3LDB4RjYsMHgzNCwweEU2LDB4RjgsMHhGOCwweDc4LDB4
N0EsMHg3NSwweEVFLDB4MzQsMHhFNiwweDI3LDB4QTcsMHhCRiwweEVGLAorICAgIDB4RDYsMHhG
NiwweEI2LDB4RUUsMHhGRiwweEVBLDB4QkEsMHhBQiwweEQ2LDB4RjYsMHhCNiwweEVFLDB4Mjks
MHhBQiwweEVDLDB4RUEsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEFBLDB4QUEsMHgwQSww
eDBFLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBQSwweEFBLDB4QUEsMHhBMiwKKyAgICAweEQ2LDB4
RjYsMHhCNiwweEVFLDB4QUEsMHg4NiwweDdGLDB4NEEsMHhENiwweEY2LDB4QjYsMHhFRSwweEZF
LDB4RUEsMHhCQiwweEJBLAorICAgIDB4OTYsMHhGNiwweEI2LDB4RUUsMHhGOSwweEZELDB4QkQs
MHhFRCwweEI2LDB4RjYsMHg5NiwweEVFLDB4RUUsMHhBQSwweEVFLDB4Q0EsCisgICAgMHg5NSww
eEY2LDB4QjYsMHhFRSwweERGLDB4N0YsMHhERCwweDU1LDB4RDYsMHhGNiwweEI2LDB4RUUsMHg4
MiwweDAzLDB4MjMsMHgwMywKKyAgICAweEQ2LDB4RjYsMHhGNywweEVFLDB4MDAsMHgyMCwweDIy
LDB4QTAsMHhENiwweEY2LDB4QjcsMHhFRSwweEEyLDB4ODIsMHgwMCwweDAwLAorICAgIDB4QjYs
MHhGNiwweEM0LDB4NTksMHg3MCwweDcwLDB4NzAsMHg2MCwweDg1LDB4NTksMHgyMywweDQ5LDB4
RTMsMHhBRSwweDVFLDB4RjcsCisgICAgMHg4NSwweDU5LDB4MjMsMHg1MSwweDJELDB4QUUsMHg3
RiwweDdGLDB4ODUsMHg2MSwweEUzLDB4NDAsMHhFMCwweEY4LDB4RkIsMHg1RiwKKyAgICAweDY0
LDB4NTEsMHhFMywweDQwLDB4MkEsMHgyRiwweDJGLDB4M0QsMHg4NywweDcyLDB4ODQsMHg1OSww
eDNELDB4QkQsMHhCRCwweDJELAorICAgIDB4Q0YsMHhCQywweEE4LDB4N0EsMHgyRCwweEJELDB4
RjUsMHhGNSwweDk2LDB4RjYsMHg4QiwweDkzLDB4MDAsMHgwQiwweEY1LDB4NTUsCisgICAgMHhC
NiwweEY2LDB4OEIsMHg5MywweDAwLDB4MjgsMHhGRiwweDU1LDB4QjYsMHhGNiwweEFCLDB4OTMs
MHgwMCwweDAwLDB4MkEsMHhENSwKKyAgICAweEI2LDB4RjYsMHhDRiwweEJDLDB4MDAsMHgwMCww
eDAwLDB4RjUsMHhENywweEY2LDB4MzEsMHhDRCwweDAwLDB4MDAsMHgwQSwweEI1LAorICAgIDB4
RDcsMHhGRSwweDkyLDB4RDUsMHgwMCwweDAwLDB4MDAsMHg3QSwweDM1LDB4RTYsMHhFNSwweDY5
LDB4ODAsMHhFMCwweDc4LDB4NUUsCisgICAgMHhFOCwweDhBLDB4RTUsMHg3MSwweERDLDB4Rjcs
MHhGRCwweEY1LDB4ODcsMHg4QSwweDI2LDB4N0EsMHgyOSwweEE5LDB4Q0EsMHhFQiwKKyAgICAw
eDY3LDB4OEEsMHgwNiwweDdBLDB4NjAsMHhGQywweDlBLDB4OTcsMHhDOCwweDkyLDB4MDYsMHg3
QSwweEY1LDB4QkQsMHgyRiwweDBBLAorICAgIDB4QjYsMHhGNiwweDg4LDB4OEEsMHgwRCwweDA5
LDB4MEIsMHgwQiwweDM4LDB4RkYsMHhGOCwweEZFLDB4QkYsMHhCRCwweEJGLDB4RjcsCisgICAg
MHgxOCwweEZGLDB4MzgsMHhGNywweEFFLDB4QkEsMHhBQSwweEE4LDB4MzgsMHhGRiwweEY3LDB4
RjYsMHhGQSwweDdBLDB4RkEsMHhGOCwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4Q0UsMHgz
MiwweEEwLDB4MjAsMHhGNywweEY2LDB4RDcsMHhGNiwweEFDLDB4QkEsMHhDMiwweDAwLAorICAg
IDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBMCwweEFBLDB4OEEsMHgyMywweDE4LDB4RkYsMHhENiww
eEY2LDB4QkYsMHgyRiwweDhBLDB4NzIsCisgICAgMHgxNywweEZGLDB4OTYsMHhFRSwweEY4LDB4
N0UsMHhENywweDU3LDB4QjYsMHhGNiwweDU1LDB4RTYsMHg4MiwweEFBLDB4RTIsMHg2MiwKKyAg
ICAweDk2LDB4RUUsMHhCMywweEQ1LDB4QTAsMHhBOCwweEZBLDB4REYsMHhENywweEY2LDB4MTQs
MHhERSwweEI1LDB4MEIsMHgyQiwweDAyLAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhENSww
eDk2LDB4QUYsMHhGRiwweEQ3LDB4RjYsMHhGNiwweEVFLDB4MDIsMHg4MiwweDBBLDB4MDAsCisg
ICAgMHhGNywweEY2LDB4QjYsMHhFRSwweEVBLDB4RUEsMHg3QSwweEVBLDB4RDcsMHhGNiwweEI3
LDB4RUUsMHg4MCwweEMyLDB4RkIsMHhBQywKKyAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4QUEs
MHhFQSwweDAwLDB4MDAsMHhCNywweEY2LDB4RDcsMHhFRSwweEVBLDB4RkYsMHhGRiwweEFFLAor
ICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHg4OCwweDBBLDB4MkIsMHhGRiwweEQ3LDB4RjYsMHhC
NywweEVFLDB4ODgsMHhBMCwweDgwLDB4QTAsCisgICAgMHhENywweEY2LDB4RjcsMHhFRSwweDg4
LDB4QTAsMHg4OCwweEEwLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHgzRCwweEJGLDB4QkQsMHhGNSwK
KyAgICAweDM4LDB4RkYsMHhGNywweEY2LDB4ODIsMHg4QSwweEFCLDB4QkQsMHgzOSwweEZGLDB4
OTcsMHhFRSwweEZFLDB4RkUsMHg3QywweDc4LAorICAgIDB4QjcsMHhGNiwweDc2LDB4RTYsMHhF
OCwweEU4LDB4RkYsMHhGRSwweEQ3LDB4RjYsMHg3NiwweEVFLDB4QUYsMHhCRiwweEJGLDB4QjUs
CisgICAgMHhCNywweEY2LDB4MzAsMHhDNSwweEQ4LDB4RDgsMHhEOCwweEY4LDB4QjcsMHhGNiww
eDM0LDB4RTYsMHg4MywweDhCLDB4MjMsMHg4OSwKKyAgICAweDU1LDB4RUUsMHg5MiwweENELDB4
NTYsMHg3QywweDVDLDB4RkMsMHhGNCwweERELDB4NzEsMHhDRCwweDJELDB4MkQsMHgyRiwweDJG
LAorICAgIDB4OTIsMHhDRCwweDRELDB4QUMsMHhGRSwweERDLDB4RDQsMHg1QywweDM1LDB4RTYs
MHgxMCwweEM1LDB4MkIsMHgyRCwweEJELDB4QUQsCisgICAgMHg5NiwweEVFLDB4MzQsMHhFNiww
eEUwLDB4RTIsMHhBOSwweEU5LDB4NTUsMHhFNiwweDM0LDB4RTYsMHg5MiwweDFDLDB4MjgsMHg4
MCwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4QUIsMHhFRSwweEFFLDB4MkEsMHhENiwweEY2
LDB4QjYsMHhFRSwweDhBLDB4QUIsMHhCQSwweEEwLAorICAgIDB4RDYsMHhGNiwweEI3LDB4RUUs
MHhBQSwweDAzLDB4MjgsMHhBQywweEY3LDB4RjYsMHhCNiwweEVFLDB4QUIsMHhFQSwweEJCLDB4
RUYsCisgICAgMHhENiwweEY2LDB4RDcsMHhFRSwweDhBLDB4OEEsMHhBMiwweEFBLDB4RDYsMHhG
NiwweEI2LDB4RUUsMHg3MiwweEUwLDB4ODAsMHg4MCwKKyAgICAweEQ2LDB4RjYsMHg5NiwweEVF
LDB4RkYsMHhGRSwweEZFLDB4RUEsMHg5NSwweEY2LDB4RDYsMHhFRSwweEJBLDB4RUEsMHhGNiww
eEZGLAorICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhGNSwweEY3LDB4RkQsMHhGRiwweEQ2LDB4
RjYsMHhGNywweEVFLDB4MjgsMHhBOCwweDgwLDB4MjAsCisgICAgMHhENiwweEY2LDB4RjcsMHhF
RSwweDgwLDB4MDgsMHgyOCwweDgyLDB4RjYsMHhGNiwweEQ3LDB4RjYsMHg3NywweDVGLDB4RkYs
MHhGRSwKKyAgICAweEQ2LDB4RjYsMHg0QSwweDhCLDB4NjAsMHhDMCwweDgwLDB4ODAsMHg0Nyww
eDZBLDB4MDMsMHg0MSwweDc3LDB4RDcsMHg1NiwweEQ0LAorICAgIDB4NDQsMHg0OSwweEUzLDB4
NDAsMHhBQiwweEE4LDB4QTAsMHg2MCwweDIzLDB4NDksMHhFMywweDQwLDB4N0EsMHg2OCwweDVF
LDB4NTYsCisgICAgMHg2NCwweDUxLDB4RTMsMHg0MCwweDNELDB4QjUsMHgzNSwweDNELDB4Qzgs
MHg3QSwweEE1LDB4NTksMHgyRCwweDJELDB4MkQsMHhCRCwKKyAgICAweDRBLDB4OTMsMHhBOCww
eDdBLDB4MkYsMHgyRCwweDhCLDB4Q0QsMHg0QiwweDkzLDB4QTgsMHg3QSwweDgwLDB4RTgsMHg1
RSwweDU3LAorICAgIDB4MDksMHg4MywweDQ3LDB4NzIsMHgwMCwweEFBLDB4RkYsMHhENywweDRB
LDB4OEIsMHg4NywweDcyLDB4MDIsMHhBRiwweEY1LDB4RDUsCisgICAgMHgwQywweEE0LDB4RTgs
MHg4MiwweDJBLDB4QUYsMHhCRCwweEJELDB4NkUsMHhCNCwweDA5LDB4OEIsMHgyQSwweEZBLDB4
N0IsMHg1RiwKKyAgICAweDZFLDB4QjQsMHgwNSwweDZBLDB4ODAsMHg3QSwweDVGLDB4NTcsMHhB
OCwweDgyLDB4QzQsMHg2MSwweEZDLDB4QkUsMHhBRiwweEFELAorICAgIDB4NDYsMHg3QSwweEM1
LDB4NjksMHhCQywweEZFLDB4RkUsMHhENiwweDQ3LDB4ODIsMHhFNSwweDc5LDB4RTIsMHhBRiww
eEI1LDB4MzUsCisgICAgMHhBOCwweDkyLDB4MDYsMHg3QSwweEE3LDB4ODksMHg4QiwweDhCLDB4
MkEsMHg5QiwweDY3LDB4OEEsMHgyNSwweDNELDB4MkIsMHgwQiwKKyAgICAweEY3LDB4RkUsMHgw
RCwweEI0LDB4MDksMHgwMywweDAxLDB4MDksMHgzOCwweEZGLDB4RjcsMHhGNiwweEJGLDB4RkYs
MHhCRiwweEZGLAorICAgIDB4MzgsMHhGRiwweDE3LDB4RjcsMHhGRiwweEJGLDB4RkQsMHhGQiww
eDM4LDB4RkYsMHgxNywweEY3LDB4NUUsMHg1RiwweEY3LDB4N0YsCisgICAgMHgzOCwweEZGLDB4
RjcsMHhGNiwweDU3LDB4NUYsMHg3RiwweEZBLDB4MTgsMHhGRiwweEY3LDB4RjYsMHg3NywweDVE
LDB4QjUsMHhBRSwKKyAgICAweDE3LDB4RkYsMHhCNiwweEVFLDB4MkEsMHgwQSwweEMwLDB4NjAs
MHhGNywweEZFLDB4NTUsMHhFNiwweEEwLDB4RkMsMHhGRiwweEZGLAorICAgIDB4QjYsMHhGNiww
eDc1LDB4RUUsMHg4MiwweDAyLDB4QUIsMHg1NywweEI2LDB4RjYsMHg1NSwweEU2LDB4NzAsMHg3
QSwweEJBLDB4REYsCisgICAgMHhGNywweEZFLDB4QjMsMHhENSwweDk3LDB4MEYsMHgwMiwweEFB
LDB4RjcsMHhGRSwweEQ3LDB4RjYsMHhENSwweDdBLDB4RUEsMHhBQiwKKyAgICAweEY3LDB4RjYs
MHhENywweEY2LDB4RTMsMHhFRiwweEUzLDB4RjksMHhGNywweEY2LDB4RDcsMHhGNiwweDU1LDB4
NUYsMHg3NiwweEVBLAorICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHhBQiwweEJGLDB4QkIsMHhC
MiwweEQ3LDB4RjYsMHhCNywweEVFLDB4MDgsMHg4MCwweEU4LDB4ODAsCisgICAgMHhENywweEY2
LDB4QjcsMHhFRSwweEEwLDB4QTgsMHhFOCwweEE2LDB4QjYsMHhGNiwweEQ3LDB4RUUsMHhBQiww
eEFCLDB4QUYsMHhGQSwKKyAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4RkYsMHhCQiwweEFBLDB4
RUEsMHhCNywweEY2LDB4RjcsMHhFRSwweEFBLDB4QUEsMHhBQSwweDZFLAorICAgIDB4RjgsMHhG
NiwweEQ3LDB4RjYsMHhENSwweDU1LDB4RkQsMHgyQiwweEY4LDB4RjYsMHhENywweEY2LDB4MEYs
MHgwQiwweDBBLDB4MEEsCisgICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweDJBLDB4MkIsMHhCQiww
eEZGLDB4MzksMHhGRiwweDk3LDB4RUUsMHg3OCwweDdBLDB4NzIsMHg2QSwKKyAgICAweDk2LDB4
RUUsMHg3NiwweEU2LDB4QjgsMHg4MCwweEE4LDB4QkQsMHhCNywweEY2LDB4NTYsMHhFRSwweDNG
LDB4QkYsMHhBRiwweEFFLAorICAgIDB4QjcsMHhGNiwweDMwLDB4QzUsMHhEOCwweEQ4LDB4Rjgs
MHg1OCwweEI3LDB4RjYsMHgzNCwweEU2LDB4MDksMHg4OSwweDI5LDB4ODksCisgICAgMHg3Niww
eEVFLDB4NzIsMHhDRCwweEY4LDB4RjgsMHg3OCwweDU4LDB4RDMsMHhENSwweDcxLDB4Q0QsMHgy
QiwweEFFLDB4RkUsMHhENSwKKyAgICAweDkyLDB4RDUsMHg2RCwweEFDLDB4RDQsMHg5NiwweDE2
LDB4MzYsMHgzNCwweEU2LDB4OTIsMHhENSwweEJELDB4QUYsMHgyQiwweDBGLAorICAgIDB4OTYs
MHhFRSwweDM0LDB4RTYsMHhFMSwweEVCLDB4Q0IsMHg4QiwweDU1LDB4RTYsMHgzNSwweEU2LDB4
QTIsMHhCRSwweEZBLDB4QUMsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEFBLDB4QUEsMHhB
QSwweDAyLDB4RDcsMHhGNiwweEI2LDB4RUUsMHhBQSwweEE4LDB4QkEsMHgyOCwKKyAgICAweEQ2
LDB4RjYsMHhCNywweEU2LDB4MjAsMHgwMiwweEMwLDB4QTIsMHhENiwweEY2LDB4QjYsMHhFRSww
eDhBLDB4MkEsMHgwQiwweDAyLAorICAgIDB4RDcsMHhGNiwweEQ2LDB4RUUsMHhBQSwweDJBLDB4
QjIsMHgyMiwweEY4LDB4RjYsMHhENiwweEY2LDB4N0QsMHg1RiwweDc3LDB4REQsCisgICAgMHhE
NiwweEY2LDB4QjYsMHhFRSwweDU2LDB4RjcsMHg1RSwweDlFLDB4RDYsMHhGNiwweEI2LDB4RUUs
MHg3NSwweEY1LDB4RDUsMHhCNiwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4OUQsMHhENyww
eEZELDB4QkIsMHhGOCwweEY2LDB4RDcsMHhGNiwweDVELDB4RjUsMHhGRiwweEJELAorICAgIDB4
RjYsMHhGNiwweEQ3LDB4RjYsMHg1NSwweERELDB4RkMsMHhGRSwweEY2LDB4RjYsMHhENywweEY2
LDB4RkQsMHg3NSwweDVGLDB4NkUsCisgICAgMHhGOCwweEZFLDB4NzYsMHhFNiwweDZBLDB4RTgs
MHhDQSwweEFBLDB4NTEsMHhDNSwweDAyLDB4NDEsMHg1NiwweDU2LDB4NTQsMHg1QywKKyAgICAw
eDg0LDB4NTEsMHgyMywweDQxLDB4RjcsMHhGRCwweDhELDB4OUQsMHg0NCwweDQ5LDB4MDMsMHg0
MSwweDU2LDB4OTQsMHhGNCwweDM2LAorICAgIDB4MDYsMHg2MiwweDAzLDB4NDEsMHhCNSwweEJG
LDB4MkIsMHgyMywweDY3LDB4NzIsMHhDNSwweDU5LDB4MjksMHgwQiwweDJBLDB4RDcsCisgICAg
MHgwOSwweDgzLDB4NDYsMHg2QSwweDJBLDB4QUIsMHhGRiwweEZELDB4QTgsMHg3QSwweDI3LDB4
NkEsMHhBOCwweEU4LDB4RkUsMHhGQiwKKyAgICAweDg4LDB4NzIsMHgyNiwweDZBLDB4QTgsMHgy
RSwweEVCLDB4NkYsMHhBNywweDdBLDB4MjYsMHg2QSwweDJGLDB4QkYsMHhCNywweEQ1LAorICAg
IDB4NkEsMHg5MywweEE3LDB4N0EsMHgyOSwweEJELDB4RDUsMHg1NSwweDZBLDB4OTMsMHg0Nyww
eDcyLDB4QTAsMHhBMiwweEVBLDB4N0YsCisgICAgMHg4OCwweDdBLDB4QTQsMHg2MSwweDc4LDB4
NzgsMHg1RSwweERGLDB4NjgsMHg3QSwweEU1LDB4NjksMHgwRCwweDJELDB4RUQsMHhFRCwKKyAg
ICAweDQ3LDB4N0EsMHgyMywweDU5LDB4QjgsMHhGOCwweERFLDB4REUsMHgyNiwweDgyLDB4ODQs
MHg2OSwweDJCLDB4MEIsMHgwQiwweDJELAorICAgIDB4NjcsMHg4QSwweDI2LDB4ODIsMHgwMiww
eERBLDB4N0EsMHhERCwweDQ5LDB4OUIsMHg2NywweDhBLDB4MkQsMHgzNSwweEJELDB4RTksCisg
ICAgMHhGNywweEZFLDB4MEMsMHhCNCwweDA5LDB4MDksMHgwOSwweDA5LDB4MTgsMHhGRiwweEY3
LDB4RjYsMHgyQSwweDJBLDB4QkEsMHhBQSwKKyAgICAweDM4LDB4RkYsMHhGNywweEY2LDB4M0Is
MHhBRSwweEZCLDB4RUYsMHgxOCwweEZGLDB4MzgsMHhGNywweEVCLDB4QUEsMHhBQSwweEE4LAor
ICAgIDB4MzgsMHhGRiwweDE4LDB4RkYsMHhCQSwweEFBLDB4OEEsMHhGQSwweDM4LDB4RkYsMHhE
NywweEY2LDB4QUEsMHhBQSwweENBLDB4NkEsCisgICAgMHgxOCwweEZGLDB4QjYsMHhFRSwweDU4
LDB4NUUsMHhGNywweEZGLDB4RDYsMHhGNiwweDk2LDB4RUUsMHhGRiwweEZGLDB4NjgsMHg3QSwK
KyAgICAweDk1LDB4RUUsMHg5MSwweEQ1LDB4QTAsMHhFMCwweDcwLDB4ODgsMHg3NiwweEVFLDB4
RjAsMHhDNCwweEEyLDB4QjcsMHgyRCwweDAyLAorICAgIDB4NTUsMHhFRSwweDUxLDB4Q0QsMHgy
RiwweEQ3LDB4RjgsMHhGMCwweEQ3LDB4RjYsMHhENCwweERELDB4MDIsMHgwMywweDBGLDB4MkQs
CisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEE5LDB4MkIsMHhCQSwweEFELDB4RDgsMHhGRSww
eEY3LDB4RjYsMHhENSwweDc1LDB4NzcsMHhERCwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4
NUUsMHhBNywweDg4LDB4NTYsMHhGNywweEY2LDB4QjcsMHhFRSwweEFBLDB4RTgsMHhFQSwweEZG
LAorICAgIDB4RjcsMHhGNiwweEI3LDB4RUUsMHhGRiwweERFLDB4RjUsMHhBQiwweEY3LDB4RjYs
MHhCNywweEY2LDB4RkYsMHhBQiwweEFBLDB4MDgsCisgICAgMHhGNywweEY2LDB4QjcsMHhFRSww
eEJGLDB4QUIsMHgwMCwweDAwLDB4RjgsMHhGNiwweEQ3LDB4RjYsMHg4QSwweEVBLDB4QTAsMHhB
QSwKKyAgICAweEY4LDB4RjYsMHhENywweEY2LDB4MkEsMHgwQSwweEEyLDB4NkUsMHhGNywweEY2
LDB4RDgsMHhGNiwweDAyLDB4MDAsMHhGOCwweEZCLAorICAgIDB4RDcsMHhGNiwweEY4LDB4RUUs
MHhBQSwweDgyLDB4MjIsMHgwQSwweDE4LDB4RkYsMHhCNywweEVFLDB4NEEsMHhFQSwweEVCLDB4
RUYsCisgICAgMHhCNiwweEVFLDB4NzYsMHhFRSwweDc3LDB4NUYsMHg1RSwweDc0LDB4OTYsMHhF
RSwweDU1LDB4RUUsMHgyMiwweDJBLDB4MkEsMHgzNywKKyAgICAweEI2LDB4RjYsMHgzMSwweEM1
LDB4RDgsMHhEOCwweEQ4LDB4RDgsMHg5NiwweEVFLDB4MTQsMHhFNiwweDAxLDB4MDksMHgwQiww
eDA5LAorICAgIDB4OTYsMHhFRSwweDcyLDB4Q0QsMHg1OCwweDc4LDB4NzgsMHg2OCwweDcyLDB4
Q0QsMHg1MSwweEM1LDB4MkEsMHg5QiwweEMyLDB4N0IsCisgICAgMHhEMywweEQ1LDB4Q0YsMHhC
QywweDM3LDB4MkYsMHgyQSwweDBCLDB4MzQsMHhFNiwweEQzLDB4RDUsMHgzRCwweDM5LDB4M0Is
MHhBRiwKKyAgICAweDk2LDB4RUUsMHg1NSwweEU2LDB4Q0YsMHhBQiwweEExLDB4QUIsMHg3Niww
eEVFLDB4NTUsMHhFNiwweDU3LDB4NTcsMHg5QywweDFFLAorICAgIDB4RDYsMHhGNiwweEI3LDB4
RUUsMHg4MCwweEE4LDB4RTgsMHhBMiwweEQ3LDB4RjYsMHhGNiwweEVFLDB4ODgsMHhBMCwweDAw
LDB4MDAsCisgICAgMHhENywweEY2LDB4RDYsMHhFRSwweEFBLDB4QTgsMHhBQSwweEFBLDB4RDcs
MHhGNiwweEY2LDB4RUUsMHgyMCwweDJBLDB4QTgsMHg4MCwKKyAgICAweEY3LDB4RjYsMHhENyww
eEY2LDB4NTksMHhENSwweEZELDB4QkQsMHhGNywweEY2LDB4RDcsMHhGNiwweEZGLDB4REYsMHhB
RiwweEEzLAorICAgIDB4RDYsMHhGNiwweEI3LDB4RUUsMHhBOCwweEVBLDB4QTAsMHhCMCwweEQ2
LDB4RjYsMHhCNiwweEVFLDB4REIsMHhGRSwweEIyLDB4ODIsCisgICAgMHhENywweEY2LDB4QjYs
MHhFRSwweEJGLDB4QkUsMHg2RSwweEFFLDB4RjgsMHhGNiwweEQ3LDB4RjYsMHhCRiwweDU1LDB4
REQsMHhEOSwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4NUYsMHhGRiwweEJGLDB4RUYsMHhG
NywweEY2LDB4RDcsMHhGNiwweEFBLDB4QUEsMHhBRSwweEUyLAorICAgIDB4RjcsMHhGNiwweEQ3
LDB4RjYsMHg3NiwweDc2LDB4NzYsMHhERCwweDU0LDB4RTYsMHgyMywweDQxLDB4NUMsMHg1Qyww
eDVDLDB4NTgsCisgICAgMHhDNSwweDU5LDB4QTIsMHgzOCwweEJGLDB4QkQsMHhCRCwweDJCLDB4
MDYsMHg2MiwweDIzLDB4NDksMHhGNSwweEJGLDB4MEIsMHgwMCwKKyAgICAweDI2LDB4NkEsMHhB
NSwweDU5LDB4RkQsMHhGQiwweEEwLDB4ODAsMHhFNSwweDYxLDB4QTUsMHg1OSwweEJGLDB4NjUs
MHhFNiwweDM4LAorICAgIDB4NDcsMHg2QSwweEU2LDB4NjEsMHgyRiwweEE1LDB4RkYsMHgwQiww
eDQ3LDB4NzIsMHhFNSwweDYxLDB4MkEsMHgzRSwweEQ3LDB4NUUsCisgICAgMHg2OCwweDcyLDB4
RTUsMHg2MSwweEU4LDB4RkUsMHg1NSwweDU1LDB4NDYsMHg2QSwweEU1LDB4NjEsMHg4RSwweEJG
LDB4QkQsMHg1NSwKKyAgICAweEE4LDB4N0EsMHhDNSwweDYxLDB4MDIsMHhBQSwweEZGLDB4NUQs
MHg2OCwweDcyLDB4QzQsMHg2MSwweEUwLDB4N0EsMHg1NywweDU1LAorICAgIDB4ODgsMHg4Miww
eEE0LDB4NjEsMHhENSwweEFELDB4OEYsMHgwQiwweEE4LDB4ODIsMHhBNSwweDY5LDB4RkUsMHhG
QSwweDZBLDB4NzAsCisgICAgMHg4NSwweDYxLDB4RTMsMHg1OCwweEI4LDB4RkUsMHhCRiwweEFG
LDB4NjcsMHg4MiwweDY0LDB4NjEsMHhCRCwweEI1LDB4QTUsMHgyNSwKKyAgICAweEE4LDB4OEEs
MHgyNiwweDgyLDB4N0QsMHhGRCwweEFCLDB4MDIsMHg2QSwweDlCLDB4NDYsMHg4MiwweEZELDB4
QkQsMHhCRiwweDE3LAorICAgIDB4RjcsMHhGRSwweDhGLDB4QkMsMHgwOSwweDA5LDB4MDMsMHgw
MywweEY3LDB4RkUsMHgxNywweEY3LDB4RkEsMHhFRSwweEFFLDB4RUYsCisgICAgMHgxOCwweEZG
LDB4RjcsMHhGNiwweDJGLDB4QUIsMHg4MiwweEFBLDB4MTcsMHhGRiwweEY3LDB4RjYsMHhBQSww
eEZBLDB4NUUsMHg3NiwKKyAgICAweDE3LDB4RkYsMHhENywweEY2LDB4MjAsMHgwQSwweDBCLDB4
NDIsMHgxNywweEZGLDB4QjYsMHhFRSwweEUwLDB4N0MsMHhERiwweDc1LAorICAgIDB4MTgsMHhG
RiwweEI2LDB4RUUsMHg3RCwweEY3LDB4RkQsMHgyQiwweEY4LDB4RkUsMHhGMywweERELDB4RUEs
MHg3QSwweDdBLDB4QzAsCisgICAgMHhGOCwweEZFLDB4RDMsMHhENSwweDBCLDB4MDksMHgwQiww
eDAyLDB4RjcsMHhGRSwweDc2LDB4RUUsMHg3RSwweDcwLDB4NjAsMHhDMCwKKyAgICAweDc2LDB4
RUUsMHhGNCwweERELDB4NzAsMHg0OCwweDg4LDB4ODgsMHg3NiwweEVFLDB4RDMsMHhENSwweDJE
LDB4MkQsMHgyRiwweEJFLAorICAgIDB4RjcsMHhGRSwweDk2LDB4RUUsMHhBQSwweDhCLDB4Mjks
MHgyOSwweEY3LDB4RjYsMHhENywweEY2LDB4RUIsMHhFQywweEZBLDB4QTAsCisgICAgMHhGNyww
eEY2LDB4RDcsMHhGNiwweEY1LDB4RjMsMHhCOSwweEQxLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhC
NSwweDJCLDB4RUYsMHg3NSwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4RDYsMHhGNiwweEY3
LDB4RkYsMHhGNywweEY2LDB4RDcsMHhGNiwweEFBLDB4QkUsMHhCRiwweEY5LAorICAgIDB4Rjcs
MHhGNiwweEQ3LDB4RjYsMHhBNiwweEFGLDB4QkEsMHhDQSwweEY3LDB4RjYsMHhENywweEY2LDB4
ODAsMHhBMiwweDBBLDB4QUEsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDhFLDB4ODIsMHg4
OCwweEI1LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHgwOCwweDAwLDB4QzgsMHg3MiwKKyAgICAweEY4
LDB4RjYsMHhCNywweEVFLDB4RkEsMHg3OCwweEZFLDB4NUYsMHhGOCwweEY2LDB4QjcsMHhFRSww
eDhCLDB4OEIsMHhBQiwweEI1LAorICAgIDB4QjYsMHhFRSwweDc2LDB4RTYsMHg3NiwweEY2LDB4
QkUsMHhBQywweDk2LDB4RUUsMHg3NiwweEVFLDB4MzUsMHg4OCwweEQ4LDB4RDYsCisgICAgMHg5
NiwweEY2LDB4NTEsMHhDRCwweEQ4LDB4RDgsMHhGOCwweEQ4LDB4OTYsMHhFRSwweDE0LDB4REUs
MHg4OSwweDhCLDB4OEIsMHhBQiwKKyAgICAweDU1LDB4RUUsMHg3MiwweENELDB4NjAsMHg2MCww
eDQwLDB4NjAsMHg1MSwweENELDB4QUYsMHhCNCwweEEwLDB4RTgsMHhGOCwweDdFLAorICAgIDB4
MzQsMHhFNiwweEYwLDB4QkMsMHhBOSwweDJELDB4MjksMHgwOSwweDU0LDB4RTYsMHgxNCwweEU2
LDB4RDcsMHhERiwweEJBLDB4OUEsCisgICAgMHg5NiwweEVFLDB4NTUsMHhFNiwweEE5LDB4MkIs
MHgwMywweDBGLDB4QjYsMHhFRSwweDU1LDB4RTYsMHhGNywweEZGLDB4RjcsMHgyNywKKyAgICAw
eEQ3LDB4RjYsMHhCNiwweEVFLDB4QUEsMHhBOCwweDBBLDB4MDIsMHhENywweEY2LDB4QjYsMHhF
RSwweEFBLDB4QUEsMHhBQSwweEE4LAorICAgIDB4RDYsMHhGNiwweEI3LDB4RUUsMHhBMiwweDIy
LDB4MjIsMHgwMiwweEY3LDB4RjYsMHhCNiwweEVFLDB4QUEsMHhCQSwweEVCLDB4QkIsCisgICAg
MHhENywweEY2LDB4RjcsMHhFRSwweEEwLDB4ODAsMHgyOCwweDhBLDB4RjcsMHhGNiwweEQ3LDB4
RjYsMHhFQiwweDZELDB4NTYsMHg1RSwKKyAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4RUEsMHhB
QSwweEFGLDB4RkYsMHhENywweEY2LDB4RjYsMHhFRSwweDg4LDB4ODAsMHhBMiwweDgwLAorICAg
IDB4RjcsMHhGNiwweEI2LDB4RUUsMHhGNiwweEZBLDB4RkEsMHhBQSwweEY3LDB4RjYsMHhENyww
eEY2LDB4RTksMHhGRCwweEUwLDB4OEEsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEFBLDB4
QUEsMHhCRSwweEFFLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBOSwweEFGLDB4RUIsMHhBQSwKKyAg
ICAweEY3LDB4RjYsMHg5NywweEY2LDB4MjIsMHhBOCwweEM4LDB4NkEsMHg3NSwweEVFLDB4QTQs
MHg1OSwweDc4LDB4NzgsMHg3QywweEZFLAorICAgIDB4QTcsMHg3QSwweDgzLDB4NTEsMHhGNSww
eEJGLDB4MkEsMHgwOCwweDA5LDB4OEIsMHgwNiwweDZBLDB4NTUsMHhGRiwweEVCLDB4MDIsCisg
ICAgMHhFOSwweDgyLDB4MjYsMHg2QSwweDU1LDB4N0YsMHhGQSwweDg4LDB4ODcsMHg3MiwweEM0
LDB4NTksMHg3RiwweDU3LDB4N0UsMHg3MCwKKyAgICAweEM4LDB4N0EsMHhBNCwweDU5LDB4QUYs
MHgyQiwweDI1LDB4QUQsMHg4OCwweDcyLDB4RTUsMHg2MSwweDU4LDB4NTgsMHg3OCwweDVDLAor
ICAgIDB4MDUsMHg2MiwweEE0LDB4NTksMHhCRiwweDJGLDB4MjcsMHhGRiwweDI3LDB4NkEsMHhF
NSwweDYxLDB4NTUsMHhENSwweDcwLDB4NTUsCisgICAgMHgwNiwweDYyLDB4ODQsMHg1OSwweDYy
LDB4NzgsMHhBQSwweDA4LDB4QzgsMHg4MiwweEE0LDB4NTksMHg5NSwweDI1LDB4MkYsMHgwQSwK
KyAgICAweEFDLDB4QTMsMHg4NywweDdBLDB4RjUsMHhBQiwweDJBLDB4MDIsMHg2QiwweEEzLDB4
RTYsMHg3MSwweDdBLDB4RUEsMHhBQywweDI4LAorICAgIDB4MkEsMHg5QiwweEM1LDB4NjksMHg1
NSwweDdCLDB4RTAsMHgwMCwweDhCLDB4QTMsMHhFNSwweDcxLDB4QjUsMHhCNSwweEJGLDB4RjAs
CisgICAgMHhDOSwweDkyLDB4QzUsMHg2OSwweEEwLDB4RTgsMHhGQSwweDdFLDB4NzYsMHhGNiww
eDQ2LDB4NzIsMHg5NSwweEI1LDB4MjUsMHgwRCwKKyAgICAweEY3LDB4RkUsMHgzNSwweEVFLDB4
MDEsMHgwMiwweDAwLDB4MDAsMHhGOCwweEZFLDB4MTcsMHhGNywweEY5LDB4RkIsMHhDRSwweEJF
LAorICAgIDB4MTcsMHhGRiwweEY3LDB4RjYsMHhDQSwweEVBLDB4RUEsMHhEQSwweDE3LDB4RkYs
MHhENywweEY2LDB4RUEsMHhBRSwweDhBLDB4NkEsCisgICAgMHgxOCwweEZGLDB4OTYsMHhFNiww
eEUyLDB4QjgsMHhGRSwweDdGLDB4RDcsMHhGNiwweDE0LDB4REUsMHgwMCwweDIwLDB4RUEsMHg3
RSwKKyAgICAweDM4LDB4RkYsMHgzNCwweERFLDB4MDIsMHgwQSwweDI5LDB4MDksMHgzOCwweEZG
LDB4NTUsMHhFNiwweDcwLDB4RTgsMHhBOCwweEEwLAorICAgIDB4MTgsMHhGRiwweEI3LDB4RUUs
MHgyRCwweDI5LDB4QUEsMHgwRiwweDE4LDB4RkYsMHhENywweEY2LDB4NkEsMHhFQSwweEFBLDB4
ODgsCisgICAgMHhENywweEY2LDB4NTUsMHhFNiwweEQ3LDB4NUUsMHg3QywweDc4LDB4NzYsMHhF
RSwweDE0LDB4RTYsMHhERSwweDVBLDB4RUEsMHhFQSwKKyAgICAweEY4LDB4RkUsMHg1NSwweEU2
LDB4ODksMHgyRCwweDJELDB4QTUsMHgxOCwweEZGLDB4RDcsMHhGNiwweEE5LDB4QkQsMHhCRiww
eEZGLAorICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYsMHg1RiwweDdFLDB4RkEsMHhBQiwweEY3LDB4
RjYsMHhENywweEY2LDB4NzUsMHg1NSwweDU3LDB4RjgsCisgICAgMHhGNywweEY2LDB4RDcsMHhG
NiwweEE3LDB4NkQsMHg2RCwweEFCLDB4MTcsMHhGNywweEQ3LDB4RjYsMHg3RCwweEQ1LDB4RkQs
MHhBQSwKKyAgICAweEY4LDB4RkUsMHhENywweEVFLDB4N0YsMHhCRiwweEFBLDB4MjgsMHgxOCww
eEZGLDB4RDcsMHhGNiwweEZELDB4RkEsMHhBQiwweEZBLAorICAgIDB4RDgsMHhGRSwweEY3LDB4
RjYsMHg1NSwweDU1LDB4RjUsMHhERCwweEY3LDB4RjYsMHhCNywweEVFLDB4RTgsMHhFOCwweEZB
LDB4N0EsCisgICAgMHhCNiwweEVFLDB4NTYsMHhFNiwweEEwLDB4QTgsMHgyOCwweDJDLDB4RDcs
MHhGNiwweDk2LDB4RUUsMHgwNywweDAzLDB4MDIsMHgwMCwKKyAgICAweEI2LDB4RjYsMHg1Niww
eEVFLDB4QkEsMHg3RSwweEVBLDB4RUUsMHg5NiwweEVFLDB4MzUsMHhFNiwweDg4LDB4MkIsMHgy
QSwweDJBLAorICAgIDB4NzYsMHhFRSwweDcyLDB4Q0QsMHhEOCwweEQwLDB4RDgsMHhGOCwweDk2
LDB4RUUsMHgxNSwweEU2LDB4OEIsMHg4OSwweEFGLDB4RTksCisgICAgMHg1NiwweEVFLDB4QjMs
MHhENSwweDYwLDB4NjAsMHg2QSwweDZBLDB4RjEsMHhDNCwweDZFLDB4QUMsMHhFOCwweEY4LDB4
N0UsMHhEQywKKyAgICAweDM0LDB4RTYsMHhFRiwweEM0LDB4MjksMHgwOSwweDBCLDB4MEIsMHg1
NSwweEU2LDB4MTQsMHhERSwweEJFLDB4OTcsMHhGRSwweDNFLAorICAgIDB4OTYsMHhFRSwweDM1
LDB4RTYsMHgwQiwweDNCLDB4NTcsMHg1RiwweEQ3LDB4RjYsMHgzNSwweEU2LDB4MkYsMHgyRiww
eDhELDB4MkIsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDAyLDB4MDAsMHhFMiwweDAyLDB4
RDYsMHhGNiwweEI2LDB4RUUsMHgyMiwweENBLDB4ODgsMHhBOCwKKyAgICAweEQ2LDB4RjYsMHhC
NiwweEVFLDB4MDIsMHgyQiwweEFBLDB4ODgsMHhENywweEY2LDB4RDYsMHhFRSwweEFBLDB4QTIs
MHhBQSwweDJBLAorICAgIDB4RDcsMHhGNiwweEY2LDB4RUUsMHg4MiwweDBBLDB4ODAsMHgwQSww
eEQ2LDB4RjYsMHhGNywweEVFLDB4MDgsMHg4MiwweDgyLDB4MDgsCisgICAgMHhENiwweEY2LDB4
QjYsMHhFRSwweEJBLDB4QkUsMHhGRSwweEZDLDB4RDYsMHhGNiwweEI2LDB4RUUsMHgwMiwweDIz
LDB4QUIsMHhBQSwKKyAgICAweEQ2LDB4RjYsMHhGNywweEVFLDB4QTgsMHhBMiwweEEwLDB4MDgs
MHhGNywweEY2LDB4RDYsMHhGNiwweDA4LDB4MDIsMHg4RiwweEZELAorICAgIDB4RjcsMHhGNiww
eEQ2LDB4RjYsMHhCOCwweDAyLDB4MDAsMHhBQiwweEQ3LDB4RkUsMHhGNywweEY2LDB4QkQsMHhG
NywweEQ1LDB4RjUsCisgICAgMHhENywweEY2LDB4MTMsMHhFNiwweEMwLDB4QzAsMHg0MCwweDQw
LDB4OEQsMHhCNCwweDg2LDB4NzIsMHg1QywweDVDLDB4NTYsMHg1NiwKKyAgICAweEE4LDB4N0Es
MHgwNiwweDZBLDB4MkEsMHhFRiwweEZGLDB4NUMsMHhFOCwweDhBLDB4RTUsMHg2MSwweDAyLDB4
QUEsMHg1RiwweDc1LAorICAgIDB4QzgsMHg4MiwweDA1LDB4NjIsMHhBOCwweEZFLDB4RjUsMHhE
RCwweDg3LDB4NzIsMHg4NCwweDUxLDB4RTgsMHg3QSwweDdFLDB4N0UsCisgICAgMHhFNSwweDYx
LDB4NDMsMHg0OSwweDAyLDB4QUIsMHhENywweERGLDB4RTYsMHg2MSwweDg0LDB4NTEsMHhBQSww
eEFCLDB4RTUsMHgyOSwKKyAgICAweDI2LDB4NkEsMHhBNSwweDU5LDB4NUYsMHhCRiwweEFGLDB4
M0YsMHg2NywweDcyLDB4QzUsMHg1OSwweEY1LDB4RkQsMHhBNywweDJCLAorICAgIDB4MjksMHg5
MywweEU1LDB4NjEsMHhENSwweEZGLDB4MkIsMHgwQiwweDRBLDB4OUIsMHg2NiwweDdBLDB4QUQs
MHgyQiwweDhBLDB4MDIsCisgICAgMHgyRSwweEJDLDB4NEEsMHg5QiwweDJELDB4MkQsMHgyRCww
eDNELDB4OEYsMHhDNCwweDJBLDB4OUIsMHg1RiwweEU4LDB4ODAsMHgwMCwKKyAgICAweEVDLDB4
QUIsMHhDOSwweDhBLDB4OUQsMHhENywweEZFLDB4RjgsMHhBQywweEFCLDB4MDUsMHg2QSwweEUw
LDB4RTgsMHhGQSwweDVGLAorICAgIDB4MzAsMHhDRCwweDI2LDB4NzIsMHg1NSwweEQ1LDB4QjUs
MHgyRCwweEQ3LDB4RkUsMHgyQSwweDkzLDB4MDksMHgwQiwweDAyLDB4MDAsCisgICAgMHgxOCww
eEZGLDB4RjcsMHhGNiwweEVFLDB4RUIsMHg4MywweEFCLDB4MTcsMHhGRiwweEY3LDB4RjYsMHhB
QiwweEJGLDB4QUUsMHhFQSwKKyAgICAweDE3LDB4RkYsMHhENywweEY2LDB4QkEsMHhCRSwweEFF
LDB4RkEsMHgxOCwweEY3LDB4OTUsMHhFRSwweDYwLDB4N0MsMHg1RSwweEI1LAorICAgIDB4MTcs
MHhGRiwweDc1LDB4RTYsMHg3NywweEY3LDB4QUIsMHgwMCwweDE3LDB4RkYsMHhCMywweEQ1LDB4
N0UsMHhGQSwweEE4LDB4QTAsCisgICAgMHgxOCwweEZGLDB4NzUsMHhFNiwweDAxLDB4MDIsMHgw
MCwweDAwLDB4MzksMHhGRiwweEQ3LDB4RjYsMHg3MCwweEYwLDB4RTgsMHhFMCwKKyAgICAweDE4
LDB4RkYsMHhENywweEY2LDB4QUQsMHgyRiwweEFGLDB4RUYsMHgxOCwweEZGLDB4RjgsMHhGNiww
eEVFLDB4REQsMHhBQiwweEJCLAorICAgIDB4RjgsMHhGRSwweDU1LDB4RTYsMHg3OCwweDYwLDB4
QzAsMHg4MCwweDc1LDB4RUUsMHgzNCwweEU2LDB4NkEsMHhFQSwweEVBLDB4RjgsCisgICAgMHhE
NywweEY2LDB4MzQsMHhFNiwweDJGLDB4MzUsMHhCRCwweEJGLDB4RjcsMHhGNiwweEI3LDB4RjYs
MHgyMCwweEFBLDB4QUIsMHhBQiwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4RjUsMHhENSww
eEJGLDB4NTUsMHhGOCwweEY2LDB4RDcsMHhGNiwweDNBLDB4QkMsMHhFMCwweDAwLAorICAgIDB4
MTgsMHhGRiwweEY4LDB4RjYsMHg1NywweDZCLDB4RDUsMHg1NSwweEY4LDB4RkUsMHhGNywweEY2
LDB4RDUsMHhENSwweDVGLDB4NUYsCisgICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweDc1LDB4Rjcs
MHhGRCwweEQ1LDB4RjcsMHhGNiwweEQ4LDB4RjYsMHgwMCwweDAwLDB4QTgsMHhFOCwKKyAgICAw
eEY3LDB4RjYsMHhENywweEY2LDB4RTgsMHg3QSwweEZBLDB4N0EsMHhENywweEY2LDB4OTYsMHhF
RSwweEIwLDB4RTgsMHhGMiwweDdBLAorICAgIDB4RDcsMHhFRSwweDc1LDB4RUUsMHgyRiwweEJG
LDB4MzcsMHhCNywweEQ3LDB4RjYsMHhCNiwweEVFLDB4MDAsMHgwMCwweEJFLDB4RUEsCisgICAg
MHg5NiwweEVFLDB4MzUsMHhFNiwweDJBLDB4QUMsMHhBNiwweDk2LDB4NzYsMHhFRSwweDU1LDB4
RTYsMHgwOCwweDJFLDB4MzgsMHgwQSwKKyAgICAweDc2LDB4RUUsMHg5MiwweENELDB4RDgsMHhE
OCwweEQ4LDB4RDgsMHg3NiwweEVFLDB4MTQsMHhERSwweEM5LDB4QzEsMHhBOSwweEVCLAorICAg
IDB4MzUsMHhFNiwweEIzLDB4RDUsMHg2OCwweDZBLDB4NkUsMHg3RSwweDUxLDB4Q0QsMHhFQyww
eEEzLDB4QkUsMHg5NiwweDk3LDB4MzYsCisgICAgMHg5NSwweEVFLDB4NzIsMHhENSwweEFELDB4
QTksMHg4RiwweDBCLDB4QjcsMHhGNiwweDE0LDB4REUsMHhCNywweDM3LDB4MkYsMHhBOCwKKyAg
ICAweEI3LDB4RjYsMHgzNSwweEU2LDB4RkYsMHhGOCwweEJFLDB4NTcsMHhCNiwweEVFLDB4NTUs
MHhFRSwweDAzLDB4OEEsMHhBQSwweDdCLAorICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHg4Riww
eEVGLDB4RUYsMHhBQiwweEQ3LDB4RjYsMHhENiwweEVFLDB4QUEsMHhBQSwweEFBLDB4QUEsCisg
ICAgMHhENiwweEY2LDB4RjYsMHhFRSwweDAwLDB4QTAsMHhBMCwweDgyLDB4RDcsMHhGNiwweEQ2
LDB4RUUsMHhBQSwweEFBLDB4MkEsMHgyQSwKKyAgICAweEQ2LDB4RjYsMHhENywweEVFLDB4MkEs
MHhBMiwweEFBLDB4OEEsMHhENiwweEY2LDB4RDYsMHhFRSwweDhBLDB4QUEsMHgyQSwweEEyLAor
ICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBRSwweERDLDB4RkIsMHhCQSwweEQ2LDB4RjYsMHhC
NiwweEVFLDB4RUYsMHhCQSwweEVFLDB4QkIsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDBB
LDB4ODMsMHhCQSwweEFFLDB4RDYsMHhGNiwweEI2LDB4RUUsMHgwMCwweDgyLDB4ODAsMHhBQSwK
KyAgICAweEQ2LDB4RjYsMHhGNywweEVFLDB4QTgsMHhBQSwweDgwLDB4MDAsMHhENywweEZFLDB4
RjYsMHhFRSwweEFCLDB4QUIsMHgzRSwweDJBLAorICAgIDB4QjYsMHhGNiwweDQ5LDB4OEIsMHg4
MCwweEUwLDB4NjAsMHg2MCwweDQ5LDB4OEIsMHg0MywweDQ5LDB4QTgsMHhGRSwweDVGLDB4NUYs
CisgICAgMHg4NywweDcyLDB4RTIsMHgzOCwweEE4LDB4QUUsMHhERiwweDU1LDB4MDYsMHg2Miww
eDIzLDB4NDEsMHgwMCwweDJBLDB4RkYsMHg1NSwKKyAgICAweDA1LDB4NjIsMHhFMiwweDM4LDB4
QTAsMHhFRSwweERGLDB4NTUsMHhBNCwweDU5LDB4MDIsMHgzOSwweDgwLDB4QUEsMHhCRCwweEI1
LAorICAgIDB4QTgsMHg3QSwweDQ0LDB4NTEsMHhGNSwweEFELDB4MEIsMHgwQiwweDg3LDB4N0Es
MHhFNSwweDYxLDB4NTUsMHg3RSwweEY4LDB4NzgsCisgICAgMHgyNywweDZBLDB4RTUsMHg2MSww
eERDLDB4NzAsMHhENywweEI3LDB4Q0MsMHhBMywweDI2LDB4NkEsMHhGNSwweEFELDB4MkQsMHhB
RCwKKyAgICAweDJELDB4QjQsMHgyOSwweDkzLDB4NTUsMHhGRiwweDgyLDB4MEEsMHg0RCwweEJD
LDB4MjksMHg5QiwweEQ1LDB4RDUsMHg3RSwweEY4LAorICAgIDB4MEQsMHhCNCwweDI5LDB4OTMs
MHgyQiwweDNGLDB4RjUsMHg1RiwweEFGLDB4Q0MsMHg4QiwweEEzLDB4ODIsMHhBQiwweERELDB4
NTUsCisgICAgMHhFQywweEFCLDB4NjcsMHg3QSwweEY4LDB4NzgsMHg1OCwweDVFLDB4RUMsMHhB
QiwweDA2LDB4NzIsMHg1NywweDU1LDB4RDUsMHgzRiwKKyAgICAweEQ3LDB4RkUsMHhFOCwweDgy
LDB4MkQsMHgyOSwweDBCLDB4MDIsMHgxOCwweEZGLDB4RjcsMHhGRSwweEJELDB4QUYsMHgwOSww
eDAxLAorICAgIDB4MTcsMHhGRiwweEY4LDB4RjYsMHhBMiwweDA4LDB4QTIsMHhBOCwweDE3LDB4
RkYsMHhGNywweEY2LDB4N0EsMHhGQSwweEFFLDB4NkEsCisgICAgMHgxOCwweEZGLDB4QjcsMHhF
RSwweDc4LDB4REEsMHhCRSwweEFGLDB4MzksMHhGRiwweEQ2LDB4RjYsMHhGNSwweEFGLDB4QUIs
MHgwQSwKKyAgICAweDU5LDB4RkYsMHhENywweEZFLDB4QUEsMHhBQSwweDhBLDB4NjAsMHhGOCww
eEZFLDB4RjQsMHhERCwweEI4LDB4MUMsMHgzNiwweDJGLAorICAgIDB4MzgsMHhGRiwweDE4LDB4
RkYsMHhCRCwweEJELDB4QkQsMHhGRCwweDM5LDB4RkYsMHhGOCwweEY2LDB4RTgsMHg3OCwweDdB
LDB4NUEsCisgICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEE1LDB4QTUsMHhFRCwweEVELDB4MTgs
MHhGRiwweEY4LDB4RjYsMHhGRiwweEFCLDB4MEIsMHhBRCwKKyAgICAweDE4LDB4RkYsMHhENyww
eEY2LDB4RTIsMHhBMiwweEEyLDB4QTAsMHhGNywweEY2LDB4NTUsMHhFNiwweDU3LDB4N0UsMHhG
OCwweEU4LAorICAgIDB4QjYsMHhGNiwweDU1LDB4RTYsMHgzNSwweEI3LDB4QkIsMHhBRSwweEY3
LDB4RjYsMHhCNywweEY2LDB4OEIsMHg4OSwweDBELDB4MkIsCisgICAgMHhGNywweEY2LDB4RDcs
MHhGNiwweDAwLDB4MEIsMHgyQiwweDBBLDB4RDcsMHhGRSwweEY4LDB4RjYsMHg3RCwweERGLDB4
NUQsMHg1NSwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4ODgsMHgwMiwweDAwLDB4ODIsMHhG
NywweEY2LDB4RDcsMHhGNiwweDA4LDB4MkIsMHg1RiwweDc4LAorICAgIDB4RjcsMHhGNiwweEQ3
LDB4RjYsMHgzOCwweEFBLDB4RkEsMHhFQSwweEY3LDB4RjYsMHhENywweEY2LDB4RjgsMHg3QSww
eDdCLDB4N0YsCisgICAgMHhGNywweEY2LDB4QjYsMHhFRSwweEIyLDB4RkEsMHhGQiwweDdGLDB4
RDcsMHhGNiwweDU1LDB4RTYsMHhFOCwweDdBLDB4N0EsMHg1RiwKKyAgICAweEQ3LDB4RjYsMHg1
NSwweEVFLDB4MkQsMHgyRCwweDJELDB4MkIsMHhENywweEY2LDB4OTYsMHhGNiwweEFBLDB4RTgs
MHhBOCwweDZBLAorICAgIDB4NzUsMHhFRSwweEQzLDB4RDUsMHgyQywweEJDLDB4QjYsMHhGNiww
eDk2LDB4RUUsMHg1NSwweEU2LDB4QUIsMHhCRiwweEFCLDB4QUQsCisgICAgMHg1NSwweEU2LDB4
OTIsMHhENSwweEQ4LDB4RjgsMHhEOCwweEQ4LDB4NzYsMHhFRSwweEYzLDB4REQsMHg4QiwweEFC
LDB4QUIsMHhBOSwKKyAgICAweDM0LDB4RUUsMHhCMywweERELDB4RkUsMHg2QSwweDdFLDB4N0Ms
MHg3MiwweEQ1LDB4NkUsMHhBQywweDM3LDB4M0YsMHgyRSwweDJBLAorICAgIDB4OTYsMHhGNiww
eDMxLDB4Q0QsMHgwQiwweEFGLDB4RkYsMHg3NywweDU1LDB4RUUsMHgzMSwweENELDB4QTAsMHhG
QSwweEZGLDB4NTUsCisgICAgMHhGMywweERELDB4NTEsMHhDRCwweEE4LDB4MkYsMHhBRCwweDJC
LDB4NzUsMHhFRSwweEY0LDB4REQsMHg4MSwweEJCLDB4RjksMHhBRiwKKyAgICAweEQ2LDB4RjYs
MHhGMiwweERELDB4MDAsMHgwMCwweDA4LDB4QUQsMHhGNywweEY2LDB4QjYsMHhFRSwweEFCLDB4
QUIsMHhBRiwweEZGLAorICAgIDB4RDYsMHhGNiwweEI3LDB4RUUsMHgwOCwweDAyLDB4MEEsMHgw
OCwweEQ2LDB4RjYsMHhGNywweEVFLDB4QTAsMHgwMiwweDgyLDB4MkMsCisgICAgMHhENiwweEY2
LDB4RjYsMHhFRSwweDAwLDB4MEEsMHg4OCwweDAwLDB4RDYsMHhGNiwweEY3LDB4RUUsMHgyOCww
eDAwLDB4ODgsMHgyOCwKKyAgICAweEY2LDB4RjYsMHhCNiwweEVFLDB4N0YsMHhCQiwweEFBLDB4
QkEsMHhENiwweEY2LDB4QjYsMHhFRSwweEVGLDB4ODgsMHgwMCwweDAwLAorICAgIDB4RDYsMHhG
NiwweEI2LDB4RUUsMHhGRiwweDNCLDB4MjAsMHg4MCwweEQ2LDB4RjYsMHhCNiwweEVFLDB4QUIs
MHhGQiwweEEyLDB4QTAsCisgICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDAyLDB4MDIsMHgwMCww
eDJBLDB4RDYsMHhGNiwweEI2LDB4RjYsMHhBMCwweEUwLDB4QzgsMHhFOCwKKyAgICAweDc1LDB4
RUUsMHg4NiwweDcyLDB4RTAsMHg2MCwweDYwLDB4NzAsMHgwNSwweDYyLDB4QzIsMHgzMCwweEU4
LDB4RUMsMHhGQSwweDdFLAorICAgIDB4MDIsMHgzOSwweEExLDB4MjgsMHg3QywweEZGLDB4N0Us
MHg1NiwweDAzLDB4MzksMHhBMSwweDI4LDB4QUIsMHhGRiwweDNGLDB4RjUsCisgICAgMHgyMyww
eDQxLDB4QzIsMHgzMCwweEVGLDB4MjksMHgyOSwweEFGLDB4RTUsMHg2OSwweDIzLDB4NDEsMHhG
NSwweEI1LDB4MzUsMHgzRCwKKyAgICAweDA5LDB4OTMsMHgwNiwweDZBLDB4QUQsMHhBQiwweDgy
LDB4MDIsMHg4NywweDdBLDB4MjMsMHg0MSwweEU4LDB4RkEsMHg1RSwweDVDLAorICAgIDB4QzUs
MHg2MSwweDAzLDB4NDEsMHgwMCwweDBGLDB4QjUsMHhENSwweDI5LDB4OTMsMHg4NCwweDUxLDB4
MkIsMHhBQiwweEJGLDB4RkQsCisgICAgMHhDQywweEFCLDB4NDcsMHg3MiwweDBBLDB4QUIsMHhC
NywweEY1LDB4MEQsMHhCNCwweDJBLDB4OTMsMHg4MCwweDgyLDB4QUIsMHhBRCwKKyAgICAweEFC
LDB4QUIsMHgwOSwweDhCLDB4NzgsMHhFMCwweEUyLDB4NjAsMHgyOSwweDkzLDB4NjcsMHg3QSww
eDgwLDB4RUUsMHg1RSwweDU3LAorICAgIDB4RUMsMHhBQiwweDY3LDB4N0EsMHg1NywweEZGLDB4
QUQsMHgyRCwweDhFLDB4QkMsMHhBOCwweDgyLDB4MzUsMHgzRCwweEJGLDB4QkYsCisgICAgMHhE
NywweEZFLDB4RUYsMHhDNCwweDAyLDB4MDMsMHgwMywweDJELDB4MTgsMHhGRiwweEY3LDB4RkUs
MHgyRSwweEE2LDB4QUUsMHhCRCwKKyAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4QTIsMHg4Miww
eDAyLDB4Q0EsMHgxOCwweEZGLDB4QjYsMHhFRSwweEUwLDB4QjgsMHhGRSwweDdFLAorICAgIDB4
MzgsMHhGRiwweEI2LDB4RUUsMHhCRiwweEVGLDB4QkYsMHgzNSwweDU5LDB4RkYsMHgxOCwweEZG
LDB4QTUsMHhBOSwweEFBLDB4OEEsCisgICAgMHgzOSwweEZGLDB4OTYsMHhFRSwweEUwLDB4NjAs
MHg3OCwweDU4LDB4MTgsMHhGRiwweDU1LDB4RTYsMHgzNywweEE3LDB4MjcsMHgyRCwKKyAgICAw
eDM5LDB4RkYsMHgxOCwweEZGLDB4RjUsMHhCRCwweEQ1LDB4RDUsMHgzOSwweEZGLDB4RjgsMHhG
NiwweEZBLDB4RkEsMHhGQywweEZBLAorICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHg3RSwweDdG
LDB4NTcsMHg5NiwweDE4LDB4RkYsMHhGOCwweEY2LDB4MkIsMHhFQiwweEVFLDB4QUIsCisgICAg
MHgxOCwweEZGLDB4RjgsMHhGNiwweDYyLDB4RUEsMHhDQSwweEVBLDB4RjcsMHhGNiwweDk2LDB4
RUUsMHg1QSwweEZBLDB4RjgsMHhCOCwKKyAgICAweEQ3LDB4RjYsMHg3NSwweEVFLDB4REYsMHhG
RSwweEI4LDB4QTAsMHhGOCwweEY2LDB4QjYsMHhGNiwweDA5LDB4MEQsMHgyNSwweDM3LAorICAg
IDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhBRiwweEJGLDB4M0UsMHhCRiwweDE4LDB4RkYsMHhGNyww
eEY2LDB4NTcsMHg3RSwweDgwLDB4QUEsCisgICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweERGLDB4
QUIsMHhCQSwweEFBLDB4RjgsMHhGRSwweEY3LDB4RjYsMHg3RiwweEZGLDB4RkQsMHhGRiwKKyAg
ICAweEY3LDB4RjYsMHhCNiwweEY2LDB4QTIsMHg2OCwweDdBLDB4NUEsMHhENywweEY2LDB4NzYs
MHhFRSwweDgwLDB4RUIsMHg3RSwweDdBLAorICAgIDB4QjYsMHhGNiwweDU1LDB4RTYsMHg4OCww
eDdFLDB4N0YsMHhGQiwweDk2LDB4RUUsMHg1NSwweEU2LDB4RDYsMHhBNSwweDJELDB4MDIsCisg
ICAgMHhENywweEY2LDB4NzYsMHhFRSwweDhELDB4OEYsMHgyRiwweEFGLDB4QjYsMHhGNiwweDk2
LDB4RUUsMHg1RSwweEVGLDB4MkIsMHhFNSwKKyAgICAweDU1LDB4RTYsMHhCMywweEQ1LDB4QjQs
MHhCRSwweEY0LDB4QkUsMHg3NSwweEVFLDB4MzUsMHhFNiwweDgzLDB4OEQsMHhGOSwweEFELAor
ICAgIDB4NTUsMHhFRSwweDkyLDB4RDUsMHhGQywweERDLDB4REMsMHhERSwweDU1LDB4RUUsMHg1
MSwweENELDB4MDIsMHhBMiwweEZBLDB4NUEsCisgICAgMHgxNCwweEU2LDB4NzIsMHhDRCwweEEw
LDB4ODAsMHg4MiwweEE5LDB4NTEsMHhDRCwweDZFLDB4QjQsMHgyOCwweDJFLDB4MkUsMHgzNiwK
KyAgICAweDcyLDB4Q0QsMHgzMSwweEM1LDB4ODAsMHhFMCwweDVDLDB4NUMsMHg5MiwweEQ1LDB4
MzAsMHhDNSwweDM3LDB4MkQsMHgwRiwweDJELAorICAgIDB4RjQsMHhERCwweDkyLDB4RDUsMHhC
RCwweEE1LDB4QTUsMHgyRCwweDU1LDB4RTYsMHhEMywweERELDB4MkIsMHhBNywweEI3LDB4NzUs
CisgICAgMHg5MiwweEQ1LDB4RTgsMHg4MiwweDJGLDB4RDUsMHg1NSwweDU1LDB4OTUsMHhFRSww
eDA4LDB4ODMsMHgwMCwweEFELDB4RDUsMHg1NSwKKyAgICAweEI1LDB4RjYsMHgyOCwweDgzLDB4
MDAsMHgwMCwweDJGLDB4RDUsMHhCNiwweEY2LDB4NkQsMHhCNCwweDAwLDB4MDAsMHgwMCwweDJE
LAorICAgIDB4RjcsMHhGNiwweDk1LDB4RjYsMHhBQSwweDJCLDB4QUEsMHhCRCwweEY3LDB4RjYs
MHhENiwweEY2LDB4REQsMHg5RiwweDVELDB4NzUsCisgICAgMHhGNywweEY2LDB4QjYsMHhGNiww
eEFBLDB4MzgsMHhCQiwweDdGLDB4RjYsMHhGNiwweEQ2LDB4RjYsMHhGNSwweDdFLDB4RjcsMHg1
RCwKKyAgICAweEY2LDB4RjYsMHhENiwweEY2LDB4N0IsMHg1NywweDU2LDB4NTcsMHhGNywweEZF
LDB4RDYsMHhGNiwweDVGLDB4RkIsMHg1NSwweDU3LAorICAgIDB4RDYsMHhGNiwweEI2LDB4RjYs
MHgzQSwweEEyLDB4MDAsMHgwMCwweEY3LDB4RjYsMHhCNiwweEY2LDB4RkYsMHhGRiwweEVBLDB4
QUEsCisgICAgMHg3NSwweEVFLDB4MjYsMHg2MiwweDcwLDB4NzAsMHg3MCwweDYwLDB4ODQsMHg0
OSwweEUyLDB4MzAsMHhGOCwweDdDLDB4N0UsMHhGRSwKKyAgICAweDAzLDB4MzksMHg2MSwweDIw
LDB4RkUsMHg1RSwweERBLDB4ODAsMHgwMiwweDM5LDB4ODEsMHgyMCwweEFELDB4QkQsMHgyQiww
eDJBLAorICAgIDB4MDIsMHgzOSwweEMyLDB4MzAsMHhCRSwweDJGLDB4QkIsMHhGMCwweDQ2LDB4
N0EsMHgwMywweDQxLDB4QkQsMHgzNSwweDNELDB4MkQsCisgICAgMHgwOSwweDkzLDB4NjcsMHg3
QSwweDgzLDB4ODMsMHhDQiwweDdGLDB4NDcsMHg3MiwweEUyLDB4MzgsMHg3OCwweDVDLDB4N0Ms
MHg1RSwKKyAgICAweDQ0LDB4NDksMHhDMiwweDMwLDB4M0YsMHgzNSwweEJELDB4QkQsMHhFNSww
eDYxLDB4QTEsMHgzMCwweDAyLDB4MEEsMHhBQSwweDU1LAorICAgIDB4RTgsMHg4MiwweEUzLDB4
NDAsMHgyQSwweDBBLDB4QUYsMHhENSwweDhBLDB4QTMsMHhFNSwweDYxLDB4MEEsMHhBQSwweEFC
LDB4QkQsCisgICAgMHhBQiwweEEzLDB4QzgsMHg4MiwweEUwLDB4RkEsMHg3QiwweDU1LDB4RTks
MHg4QSwweDQ2LDB4N0EsMHg5RiwweEI3LDB4QUYsMHgyRiwKKyAgICAweEVCLDB4QTMsMHhFOSww
eDhBLDB4MkQsMHgyRCwweEY3LDB4RDcsMHhFQywweEFCLDB4ODgsMHg3QSwweEY4LDB4NzAsMHg2
QSwweEZFLAorICAgIDB4RUYsMHhDNCwweDA2LDB4NkEsMHgyRiwweEY1LDB4NTUsMHg1NywweEI2
LDB4RjYsMHgyNSwweDZBLDB4MDAsMHgyRCwweDM1LDB4QjUsCisgICAgMHgxOCwweEZGLDB4NzUs
MHhFRSwweEEwLDB4RTIsMHhGRiwweEZELDB4RDYsMHhGNiwweDk2LDB4RUUsMHhBQSwweEFFLDB4
Q0YsMHgzOCwKKyAgICAweDU5LDB4RkYsMHhCNywweEVFLDB4QUQsMHgwRCwweDhCLDB4MjIsMHg1
OSwweEZGLDB4MTgsMHhGRiwweEVBLDB4RTgsMHhGRSwweDdBLAorICAgIDB4RjcsMHhGRSwweDU1
LDB4RTYsMHhGMCwweDdDLDB4NUMsMHg1RiwweEY4LDB4RkUsMHg1NSwweEU2LDB4MEQsMHgyRCww
eDBELDB4MEQsCisgICAgMHgzOSwweEZGLDB4RjgsMHhGNiwweEFCLDB4QUIsMHgyOSwweEFGLDB4
MzksMHhGRiwweEY4LDB4RjYsMHhFQSwweEZBLDB4NkEsMHhFQSwKKyAgICAweDE4LDB4RkYsMHhG
OCwweEY2LDB4N0QsMHhCNywweDVFLDB4REIsMHgxOCwweEZGLDB4RjgsMHhGNiwweEFGLDB4RkIs
MHhGRCwweEY3LAorICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGQSwweDZBLDB4RUYsMHg1Riww
eEY3LDB4RjYsMHg5NywweEVFLDB4QTgsMHhBOCwweEFBLDB4QTIsCisgICAgMHhGNywweEY2LDB4
RDcsMHhGNiwweDU1LDB4NUYsMHhBQiwweEFBLDB4RjgsMHhGNiwweEI3LDB4RjYsMHgzNywweDNC
LDB4MkEsMHgyMiwKKyAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4NUYsMHhERiwweDVBLDB4N0Is
MHgxOCwweEZGLDB4RjgsMHhGNiwweEJCLDB4QUEsMHhCRiwweEVGLAorICAgIDB4RjcsMHhGRSww
eDE4LDB4RjcsMHhBRiwweEJELDB4QUYsMHhGRiwweEY3LDB4RjYsMHhENywweEY2LDB4QTAsMHgw
MCwweEUwLDB4NTgsCisgICAgMHhENywweEY2LDB4OTYsMHhFRSwweEUwLDB4RUMsMHg3QSwweDc2
LDB4QjcsMHhGNiwweDc2LDB4RUUsMHhGOCwweEZBLDB4NUUsMHg1NSwKKyAgICAweDk2LDB4RUUs
MHg1NSwweEU2LDB4RUEsMHg3QSwweEZBLDB4NUIsMHg3NiwweEVFLDB4NTUsMHhFNiwweDhCLDB4
MkQsMHhCOSwweDJGLAorICAgIDB4QjYsMHhGNiwweDc2LDB4RUUsMHhBMywweEVCLDB4RUEsMHhB
QSwweEI2LDB4RjYsMHg3NiwweEVFLDB4QUIsMHg4RiwweEVCLDB4Q0IsCisgICAgMHgxNCwweEU2
LDB4NzIsMHhDRCwweEFDLDB4QkMsMHhCNCwweEQ2LDB4NzUsMHhFRSwweEY0LDB4RTUsMHgyQiww
eDhCLDB4QUIsMHhBOSwKKyAgICAweDM0LDB4RTYsMHhCMywweEQ1LDB4REMsMHhEQywweEQ0LDB4
REUsMHgxNCwweEU2LDB4MzAsMHhDNSwweDU4LDB4NTgsMHg2OCwweEUwLAorICAgIDB4QjMsMHhE
NSwweDEwLDB4QzUsMHgwOSwweDJELDB4MzUsMHg5RiwweDMxLDB4QzUsMHg0RCwweEFDLDB4MjYs
MHgyNiwweEE2LDB4MzYsCisgICAgMHgzMSwweENELDB4RjAsMHhCQywweDNDLDB4M0YsMHgzNyww
eEVBLDB4OTIsMHhENSwweDMxLDB4QzUsMHgyRiwweEFGLDB4QTcsMHhBNSwKKyAgICAweEYzLDB4
REQsMHg3MiwweEQ1LDB4MkYsMHhBRiwweEFELDB4QUQsMHhEMywweERELDB4NTEsMHhDRCwweDgy
LDB4RUEsMHg3MiwweDU4LAorICAgIDB4RTgsMHg4MiwweEM3LDB4N0EsMHgwMCwweDhFLDB4RkUs
MHg5OCwweDA4LDB4ODMsMHhDNywweDdBLDB4RkUsMHhBMiwweEZCLDB4REIsCisgICAgMHgwOCww
eDgzLDB4QzcsMHg4MiwweDJCLDB4MkUsMHhGRSwweEZELDB4RUIsMHg5QiwweEU4LDB4ODIsMHgz
RiwweDc1LDB4NTUsMHg1NSwKKyAgICAweDU1LDB4RUUsMHhFOCwweDgyLDB4MEEsMHhGNSwweDU1
LDB4NTUsMHhCNSwweEY2LDB4RTcsMHg4MiwweDAwLDB4MEEsMHhCRCwweDU1LAorICAgIDB4QjYs
MHhGNiwweDhBLDB4OUIsMHgwMCwweDAwLDB4MDIsMHhGNSwweEQ2LDB4RjYsMHhGNCwweEU1LDB4
MDAsMHgwOCwweDAyLDB4MkQsCisgICAgMHhGNiwweEZFLDB4QjYsMHhGNiwweEFFLDB4QUYsMHhG
RiwweEQ1LDB4RjgsMHhGRSwweEQ2LDB4RjYsMHhERiwweDVGLDB4RDUsMHg1NSwKKyAgICAweEQ3
LDB4RkUsMHhENiwweEY2LDB4RDUsMHg3RiwweDdGLDB4RkYsMHhGNiwweEZFLDB4RDcsMHhGNiww
eDdFLDB4NUQsMHg3QiwweDdBLAorICAgIDB4QjYsMHhGNiwweDg2LDB4NzIsMHg2MCwweDYwLDB4
QzAsMHhDMCwweEU2LDB4NTksMHgyMywweDQxLDB4NTUsMHg1NywweDVFLDB4RTgsCisgICAgMHg4
NCwweDQ5LDB4MjMsMHg0MSwweDdGLDB4RkIsMHg1NSwweDNBLDB4NjQsMHg0OSwweEUyLDB4MzAs
MHhENywweEVDLDB4QkEsMHhGOCwKKyAgICAweDIzLDB4NDEsMHhFMiwweDM4LDB4N0YsMHhGNiww
eEJCLDB4MjksMHg0NiwweDdBLDB4NDQsMHg0OSwweDJELDB4MkQsMHgwRCwweDJGLAorICAgIDB4
NjYsMHg3QSwweDg0LDB4NTksMHhBMCwweEU4LDB4N0EsMHg1QSwweDY0LDB4NTEsMHhFMywweDM4
LDB4NUMsMHg3OCwweDZFLDB4RTgsCisgICAgMHhFMiwweDM4LDB4QTIsMHgzMCwweDYyLDB4RTIs
MHg4MCwweDA4LDB4QzIsMHgzMCwweDgxLDB4MjgsMHg5NywweEJFLDB4RUEsMHhGOCwKKyAgICAw
eDIzLDB4NDEsMHg4MiwweDI4LDB4MkYsMHgyRiwweEFGLDB4MzUsMHg4OCwweDgyLDB4NDMsMHg0
OSwweDJELDB4QjUsMHgzNSwweDM1LAorICAgIDB4RTksMHg4QSwweDY3LDB4N0EsMHhBQiwweDNE
LDB4M0YsMHg3QSwweDA5LDB4OEIsMHg4OCwweDdBLDB4RkIsMHhERSwweEQ4LDB4REYsCisgICAg
MHgyOSwweDkzLDB4ODcsMHg3QSwweDJCLDB4QjcsMHhGRiwweDZGLDB4MDksMHg4QiwweEE1LDB4
NTksMHhBOCwweEY4LDB4N0EsMHg1RiwKKyAgICAweEU4LDB4ODIsMHhDNSwweDYxLDB4RUUsMHhB
RiwweDJELDB4MDksMHhDQywweEEzLDB4QzUsMHg2MSwweDM1LDB4RjcsMHhGQiwweEZFLAorICAg
IDB4QjYsMHhGNiwweEU5LDB4OEEsMHgwMiwweDBCLDB4MkQsMHhENSwweDM4LDB4RkYsMHg3NSww
eEVFLDB4QkUsMHgyRiwweDBBLDB4MDEsCisgICAgMHgzOSwweEZGLDB4MTksMHhGRiwweDAwLDB4
ODAsMHgyMCwweEUwLDB4MzksMHhGRiwweDk2LDB4RjYsMHhDMCwweEM4LDB4NjAsMHg3OCwKKyAg
ICAweDc2LDB4RUUsMHgzNSwweEU2LDB4QzgsMHg2OCwweDZFLDB4N0EsMHhGOCwweEZFLDB4NTUs
MHhFNiwweDA5LDB4MDksMHgwOSwweDBCLAorICAgIDB4MzksMHhGRiwweEY4LDB4RkUsMHhBRiww
eEFGLDB4QUQsMHhBRCwweDE4LDB4RkYsMHhGOCwweEY2LDB4RTAsMHhDMCwweEEwLDB4QTAsCisg
ICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEY3LDB4RkYsMHhERCwweEZFLDB4MTksMHhGRiwweEY3
LDB4RjYsMHhERiwweEZGLDB4RkQsMHg1NywKKyAgICAweEY4LDB4RkUsMHgxNywweEY3LDB4MkEs
MHhBMiwweDJBLDB4MkEsMHhGNywweEY2LDB4RDcsMHhGNiwweDlDLDB4RkEsMHhBQSwweEEyLAor
ICAgIDB4RjgsMHhGNiwweEQ3LDB4RjYsMHhCQSwweDNGLDB4MjcsMHgyRCwweDE3LDB4RkYsMHhG
OCwweEY2LDB4REQsMHhGNywweDdGLDB4RkQsCisgICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweDdG
LDB4RUIsMHhFOSwweEVCLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHgyQSwweEFBLDB4MkYsMHg4RiwK
KyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4RUEsMHg2QSwweDZGLDB4N0QsMHhGNywweEY2LDB4
QjcsMHhFRSwweDc4LDB4NzgsMHg3QSwweDVBLAorICAgIDB4QjcsMHhGNiwweDc2LDB4RUUsMHhG
OCwweDc2LDB4NUUsMHg3NSwweDk2LDB4RUUsMHg1NSwweEU2LDB4NUYsMHg3RSwweDhBLDB4OTcs
CisgICAgMHg5NiwweEVFLDB4MzUsMHhFNiwweDc3LDB4RjcsMHhGQSwweDI4LDB4OTYsMHhFRSww
eDM1LDB4RTYsMHhCRiwweEFGLDB4QjcsMHgzRiwKKyAgICAweEI3LDB4RjYsMHg3NiwweEVFLDB4
Q0EsMHhGQSwweDdFLDB4NUUsMHhCNiwweEY2LDB4NTUsMHhFNiwweEUyLDB4RUEsMHhFQSwweDZB
LAorICAgIDB4RDMsMHhERCwweDMxLDB4Q0QsMHgzQywweEFDLDB4QkMsMHhCNiwweDM1LDB4RTYs
MHhCMywweEQ1LDB4MDIsMHgwQiwweDBCLDB4MDksCisgICAgMHgxNCwweEU2LDB4QjMsMHhENSww
eDlFLDB4RkMsMHg5QywweEJDLDB4MTQsMHhFNiwweEQzLDB4REQsMHg3QSwweDZDLDB4REMsMHhG
NCwKKyAgICAweEQzLDB4REQsMHgzMSwweEM1LDB4NUUsMHg3OCwweDQwLDB4NDAsMHgzMSwweENE
LDB4NEUsMHhBQywweDM3LDB4MzcsMHgzNywweDE3LAorICAgIDB4MzEsMHhDRCwweENGLDB4QkMs
MHhBOCwweDI4LDB4QkMsMHg1RSwweDcxLDB4Q0QsMHgxMSwweEM1LDB4MkYsMHhBRiwweEFGLDB4
QTcsCisgICAgMHgxNCwweEU2LDB4MzEsMHhDNSwweDJCLDB4MEYsMHhCRiwweDVGLDB4RDMsMHhE
RCwweEYwLDB4QkMsMHhGOCwweDdDLDB4RjcsMHhCNSwKKyAgICAweEU4LDB4ODIsMHhBNywweDdB
LDB4RUYsMHgzRiwweEFCLDB4RUEsMHhFOCwweDgyLDB4QTcsMHg3QSwweDJDLDB4QkYsMHhERCww
eEZGLAorICAgIDB4RTgsMHg4MiwweEM3LDB4ODIsMHgyQiwweENBLDB4NUUsMHg3QiwweEU4LDB4
ODIsMHhBNywweDdBLDB4OEEsMHhBQSwweEZFLDB4MkQsCisgICAgMHhFOCwweDgyLDB4QzcsMHg4
MiwweEVGLDB4MkEsMHhDQiwweEM0LDB4MDgsMHg4QiwweEM4LDB4ODIsMHhBRCwweEFELDB4OUYs
MHg1NiwKKyAgICAweDQ5LDB4OEIsMHhDNywweDgyLDB4M0YsMHhGRiwweDdELDB4NTUsMHhCMyww
eERELDB4MDgsMHg4MywweDJGLDB4NTUsMHg1NSwweDU1LAorICAgIDB4NzUsMHhFRSwweDI4LDB4
OEIsMHgwMCwweDJGLDB4NTUsMHg1NSwweDk2LDB4RjYsMHgwOCwweDgzLDB4MDAsMHgwMCwweDJC
LDB4RDUsCisgICAgMHhCNiwweEY2LDB4OEUsMHhCNCwweDAwLDB4MDAsMHgwMCwweDJELDB4OTUs
MHhGRSwweEQ2LDB4RjYsMHg1NSwweDc1LDB4RkYsMHhCQSwKKyAgICAweEI2LDB4RjYsMHg1MSww
eEM1LDB4NDAsMHhDMCwweDAwLDB4MDAsMHgxMywweEU2LDB4ODQsMHg1MSwweDU3LDB4NTcsMHg1
RSwweDU4LAorICAgIDB4QzUsMHg1OSwweDY0LDB4NDksMHhBQSwweDhGLDB4QUEsMHhGNSwweDg1
LDB4NTEsMHgyMywweDQxLDB4NTgsMHg1QywweEY4LDB4QUEsCisgICAgMHg2NiwweDdBLDB4MjMs
MHg0OSwweDU1LDB4RDUsMHhCRCwweDJGLDB4MjksMHg5MywweDA2LDB4NkEsMHhGNSwweEVELDB4
QUIsMHg4QSwKKyAgICAweDg4LDB4ODIsMHg4NCwweDU5LDB4NzgsMHg2OCwweEYwLDB4RTgsMHhB
NSwweDYxLDB4MDMsMHg0MSwweDdGLDB4N0YsMHhCQSwweEEwLAorICAgIDB4QzYsMHg1OSwweEEy
LDB4MzAsMHhGNSwweEQ3LDB4RkUsMHhBMiwweDI0LDB4NDEsMHg4MSwweDI4LDB4NUUsMHg1RSww
eEZBLDB4MkEsCisgICAgMHg2NCwweDQ5LDB4QTEsMHgyOCwweEI1LDB4QjUsMHhBRCwweDAyLDB4
NjcsMHg3QSwweDQzLDB4NDksMHgyNSwweDJELDB4QUQsMHhGRiwKKyAgICAweEE4LDB4N0EsMHhB
NCwweDU5LDB4QzAsMHhGQSwweDVGLDB4RjUsMHg4OCwweDdBLDB4RTUsMHg2MSwweDBCLDB4QjUs
MHg1NSwweEQ1LAorICAgIDB4QTgsMHg3QSwweDIzLDB4NDksMHgwMCwweEUwLDB4RUEsMHg3Miww
eDI2LDB4NkEsMHgwMiwweDQ5LDB4QkEsMHhCNywweEI1LDB4MjUsCisgICAgMHhBNywweDdBLDB4
QzUsMHg2MSwweDI5LDB4MkYsMHhBRSwweEZBLDB4MDksMHg5MywweDA2LDB4NzIsMHhFQSwweEVB
LDB4RUIsMHg4OSwKKyAgICAweDRBLDB4OTMsMHgyNiwweDcyLDB4MkYsMHgzRiwweEJELDB4QjUs
MHgxOCwweEZGLDB4NkEsMHg5MywweDAzLDB4MDksMHgyNSwweDI1LAorICAgIDB4MzgsMHhGRiww
eDE4LDB4RkYsMHhFMiwweEEyLDB4NzksMHg1RCwweDE4LDB4RkYsMHg3NSwweEVFLDB4NzAsMHg3
MCwweDU4LDB4NUMsCisgICAgMHg3NSwweEVFLDB4MzUsMHhFNiwweDdFLDB4RUIsMHhGQSwweEJB
LDB4MTgsMHhGRiwweDk2LDB4RUUsMHhBOSwweDg5LDB4ODksMHg4QiwKKyAgICAweDM5LDB4RkYs
MHhGOCwweEY2LDB4QUYsMHhBOSwweEFGLDB4RUYsMHgxOCwweEZGLDB4RjgsMHhGNiwweEE4LDB4
QUUsMHhBQSwweEVBLAorICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGRiwweERBLDB4RjYsMHg3
RiwweDE3LDB4RkYsMHhGOCwweEY2LDB4NUYsMHg1NiwweDU3LDB4RDUsCisgICAgMHhEOCwweEZF
LDB4RjcsMHhGNiwweERGLDB4NUQsMHg3RCwweERELDB4RDcsMHhGRSwweEY3LDB4RjYsMHhENyww
eDdELDB4NUUsMHhERiwKKyAgICAweEY3LDB4RjYsMHhENywweEY2LDB4M0YsMHg5OCwweEUwLDB4
MkEsMHgxOCwweEZGLDB4RjgsMHhGNiwweEY3LDB4REQsMHhCNSwweEJGLAorICAgIDB4MTgsMHhG
RiwweEY4LDB4RjYsMHhFMywweEFCLDB4RkUsMHhGRSwweEQ4LDB4RkUsMHhGNywweEY2LDB4NTUs
MHg2RiwweDdELDB4RkYsCisgICAgMHhGNywweEY2LDB4QjcsMHhGNiwweDg4LDB4RTgsMHhFOCww
eEVBLDB4RDcsMHhGNiwweDc2LDB4RUUsMHhFMCwweEY4LDB4NUUsMHhERSwKKyAgICAweDk2LDB4
RUUsMHg3NiwweEVFLDB4NjcsMHg3NywweDU1LDB4NTcsMHg3NiwweEVFLDB4MzUsMHhFNiwweEVB
LDB4RkIsMHhGRSwweEVBLAorICAgIDB4NzUsMHhFRSwweDM0LDB4RTYsMHhBMiwweEZFLDB4RkEs
MHg4MiwweEI2LDB4RjYsMHg1NSwweEU2LDB4QTUsMHgyRiwweEFELDB4QkQsCisgICAgMHhCNiww
eEY2LDB4NTUsMHhFRSwweEJDLDB4QUUsMHhCRSwweEJGLDB4QjYsMHhGNiwweDM1LDB4RTYsMHhD
MiwweEYwLDB4NjIsMHhFQSwKKyAgICAweEQzLDB4REQsMHgzMSwweENELDB4QkMsMHhGNiwweEZF
LDB4N0MsMHgzNCwweEU2LDB4NzIsMHhDRCwweDBCLDB4QUIsMHhBRCwweEE5LAorICAgIDB4MTQs
MHhFNiwweEIzLDB4RDUsMHhCQywweDNFLDB4M0YsMHhCNiwweDE0LDB4RTYsMHgxMCwweEM1LDB4
ODgsMHg4OCwweDY4LDB4NTYsCisgICAgMHhEMywweERELDB4RjAsMHhDNCwweEUwLDB4N0UsMHg1
NSwweDU1LDB4MzEsMHhDNSwweDJELDB4QUMsMHhCNywweDk2LDB4REUsMHg5OCwKKyAgICAweDEx
LDB4QzUsMHg2RSwweEI0LDB4QjgsMHhGOCwweEQ4LDB4NTAsMHg3MiwweENELDB4RjAsMHhDNCww
eDJGLDB4QTksMHhBOSwweEJCLAorICAgIDB4NTEsMHhDRCwweEYwLDB4QkMsMHg2MCwweDc4LDB4
REMsMHg5NywweDcxLDB4RDUsMHhGMCwweEJDLDB4MkQsMHgwRiwweDJCLDB4MkEsCisgICAgMHhD
OCwweDgyLDB4NDUsMHg3MiwweDBBLDB4QUQsMHhENywweEQ3LDB4RTgsMHg4MiwweDQ1LDB4NkEs
MHgwQSwweDBBLDB4QUYsMHg1RCwKKyAgICAweEU4LDB4ODIsMHg2NiwweDcyLDB4QTIsMHgwMiww
eDhBLDB4QUQsMHhFOCwweDgyLDB4QTcsMHg3QSwweEYyLDB4QUUsMHhCNCwweEFBLAorICAgIDB4
RTgsMHg4MiwweEE3LDB4ODIsMHhBRSwweEMyLDB4NDIsMHhGRSwweEU4LDB4ODIsMHhDOCwweDgy
LDB4NUUsMHg3RiwweEY1LDB4RDUsCisgICAgMHhFOCwweDgyLDB4QTcsMHg4MiwweDBCLDB4MDIs
MHg4QiwweDJGLDB4QzgsMHg4QSwweEU4LDB4ODIsMHhFRCwweDdELDB4NUQsMHhFRiwKKyAgICAw
eDA4LDB4OEIsMHhDOCwweDgyLDB4QUYsMHhFQiwweEY2LDB4QkIsMHgwOCwweDhCLDB4QzgsMHg4
MiwweDJGLDB4QkYsMHg5RCwweEJCLAorICAgIDB4MkQsMHhBQywweEU4LDB4OEEsMHgyRCwweDU1
LDB4NTUsMHg1NSwweDc1LDB4RjYsMHgwOSwweDhCLDB4MEEsMHhGNSwweDU1LDB4NTUsCisgICAg
MHhCNiwweEY2LDB4MjksMHg4QiwweDAwLDB4MEEsMHhGRCwweDU1LDB4MzUsMHhFRSwweEU1LDB4
NTksMHg3MCwweDcwLDB4NjAsMHg3RiwKKyAgICAweDY0LDB4NDksMHgwMiwweDQxLDB4QUUsMHgz
RiwweEI1LDB4QUYsMHhBNSwweDU5LDB4NDMsMHg0OSwweEJBLDB4QkYsMHhBQiwweDNELAorICAg
IDB4QzgsMHg4QSwweEE1LDB4NTksMHgyRCwweDJELDB4MkYsMHhCRCwweDI5LDB4OUIsMHhDOCww
eDhBLDB4NDAsMHg0MCwweEFBLDB4MjksCisgICAgMHhDOSwweDkyLDB4RTUsMHg2OSwweEZBLDB4
N0EsMHhEOCwweEY4LDB4NjcsMHg3QSwweEM1LDB4NjEsMHhENywweEJGLDB4RkYsMHhGOCwKKyAg
ICAweDY3LDB4N0EsMHhBNSwweDU5LDB4N0YsMHhFQSwweDgwLDB4QTIsMHgwNiwweDYyLDB4RTIs
MHgzOCwweEZGLDB4RkEsMHg3RSwweEY4LAorICAgIDB4ODUsMHg1MSwweDAzLDB4NDEsMHgwMiww
eEVBLDB4QjUsMHhGRiwweDg1LDB4NTksMHgyMywweDQxLDB4QTgsMHgyRiwweDI1LDB4MkIsCisg
ICAgMHg0NywweDcyLDB4QTQsMHg1OSwweEVELDB4MEYsMHgwQiwweDBGLDB4ODgsMHg3MiwweEM1
LDB4NjEsMHhCNSwweEI3LDB4QUEsMHhBMCwKKyAgICAweDQ2LDB4NkEsMHhFMiwweDM4LDB4NzAs
MHg3OCwweDdDLDB4N0UsMHg2NywweDcyLDB4MDIsMHg0MSwweDJELDB4MkQsMHgyOSwweEFGLAor
ICAgIDB4NjcsMHg3QSwweEM1LDB4NjEsMHg4MCwweEU4LDB4NUYsMHhERiwweDA5LDB4OEIsMHgy
NiwweDcyLDB4MDksMHgyOSwweDBCLDB4OEIsCisgICAgMHhDOSwweDgyLDB4NjcsMHg3QSwweDJF
LDB4RTAsMHhCRSwweEY5LDB4OTMsMHhERCwweEM4LDB4ODIsMHgzNSwweEI1LDB4NTUsMHg1NSwK
KyAgICAweEY3LDB4RkUsMHg4QiwweDlCLDB4MDAsMHgwMiwweDAzLDB4MkQsMHhGNywweEZFLDB4
NTUsMHhFRSwweDVDLDB4REMsMHg1RSwweDU2LAorICAgIDB4OTYsMHhFRSwweDU1LDB4RUUsMHhE
NywweERELDB4QjcsMHgxNywweDE4LDB4RkYsMHhCNywweEY2LDB4QTksMHg4OSwweEFGLDB4ODks
CisgICAgMHgzOSwweEZGLDB4RjgsMHhGNiwweEFGLDB4RTksMHhBRiwweEFCLDB4MTgsMHhGRiww
eEY4LDB4RjYsMHhGQSwweEZFLDB4RUEsMHg2OCwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4
NzcsMHhEQiwweDU3LDB4NUYsMHhENywweEZFLDB4RjgsMHhGNiwweDU3LDB4NUQsMHhGRiwweEZG
LAorICAgIDB4RjcsMHhGNiwweEQ2LDB4RjYsMHgyRSwweEFFLDB4MjIsMHgwQSwweDE4LDB4RkYs
MHhGNywweEY2LDB4NTcsMHhGQiwweERBLDB4RkIsCisgICAgMHgxOCwweEZGLDB4RjcsMHhGNiww
eEVGLDB4RkYsMHg1RiwweDU1LDB4MTgsMHhGRiwweEY4LDB4RjYsMHhFNywweEU1LDB4REYsMHhG
RiwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4NUYsMHg3RiwweDVFLDB4REYsMHhGNywweEY2
LDB4RDcsMHhGNiwweEFBLDB4RUEsMHhFMiwweEY4LAorICAgIDB4RjgsMHhGNiwweDk2LDB4RUUs
MHhFOCwweEZBLDB4NUUsMHg3RSwweDk2LDB4RUUsMHg3NiwweEVFLDB4RDgsMHg1QywweDVDLDB4
NTcsCisgICAgMHg3NiwweEVFLDB4NTYsMHhFRSwweDcyLDB4NEQsMHhGMCwweEZBLDB4NzYsMHhF
RSwweDE0LDB4RTYsMHhBQSwweEE4LDB4RkEsMHg2QywKKyAgICAweDc2LDB4RUUsMHgxNCwweEU2
LDB4MEUsMHhBQiwweDBCLDB4QTksMHg5NiwweEVFLDB4NzYsMHhFRSwweDY1LDB4RjUsMHhCRiww
eEJELAorICAgIDB4OTYsMHhFRSwweDc2LDB4RUUsMHg1RCwweEY3LDB4RUYsMHhGRSwweDk2LDB4
RUUsMHgzNSwweEU2LDB4Q0EsMHhFQSwweDYwLDB4RTAsCisgICAgMHgxNCwweEU2LDB4NzIsMHhD
RCwweDc2LDB4RkEsMHg4OCwweDAwLDB4RjQsMHhERCwweDcyLDB4RDUsMHgwOSwweDJCLDB4MEEs
MHgyMCwKKyAgICAweEY0LDB4RTUsMHgzMSwweEM1LDB4QTgsMHhBOCwweEU4LDB4NjAsMHg1MCww
eENELDB4QUYsMHhCNCwweEY4LDB4RUUsMHg3RiwweEQ3LAorICAgIDB4RjAsMHhDNCwweDZELDB4
QUMsMHgwMiwweEE4LDB4RUEsMHg1RSwweDcxLDB4Q0QsMHg4RSwweEI0LDB4N0EsMHg2MiwweEUz
LDB4OEIsCisgICAgMHgxMCwweEM1LDB4MkQsMHhBNCwweEYwLDB4NzIsMHg3MiwweDYyLDB4NTEs
MHhDRCwweEQwLDB4QkMsMHgwQiwweDAxLDB4QTksMHg4OSwKKyAgICAweDcyLDB4Q0QsMHhGMCww
eEJDLDB4QjcsMHhBRiwweDJCLDB4MEIsMHg3MSwweENELDB4NTEsMHhDRCwweEY3LDB4RUUsMHhC
RiwweEY4LAorICAgIDB4QTcsMHg3QSwweDY2LDB4NzIsMHhGRCwweEY3LDB4RUUsMHhCQSwweEE2
LDB4N0EsMHg2NiwweDcyLDB4NzUsMHg3NiwweDc5LDB4RUEsCisgICAgMHg4NiwweDcyLDB4NDYs
MHg3MiwweEE1LDB4QUUsMHg4MCwweDIwLDB4QzgsMHg4MiwweDI1LDB4NkEsMHgwQSwweEQ3LDB4
RkYsMHhGRiwKKyAgICAweEM4LDB4ODIsMHg0NiwweDcyLDB4MDAsMHgwQSwweDk1LDB4NTUsMHhF
OCwweDhBLDB4NDYsMHg3MiwweDBBLDB4ODgsMHg4QSwweEI1LAorICAgIDB4RTgsMHg4MiwweEE3
LDB4N0EsMHhFQSwweDhBLDB4RUIsMHgyRCwweEU4LDB4ODIsMHhDOCwweDgyLDB4QkYsMHhGRCww
eDUxLDB4NTUsCisgICAgMHhFOCwweDgyLDB4QzgsMHg4MiwweEFCLDB4NjIsMHg5QywweENGLDB4
MDksMHg4QiwweEE3LDB4ODIsMHhFQSwweEI4LDB4RkUsMHhGNiwKKyAgICAweEU4LDB4OEEsMHhD
OCwweDgyLDB4QzAsMHhDOCwweEVFLDB4RkIsMHgwOCwweDhCLDB4QzgsMHg4MiwweEYyLDB4MEIs
MHhGRiwweDZFLAorICAgIDB4QzgsMHg4QSwweDA5LDB4ODMsMHhERiwweEJCLDB4QTIsMHhBOCww
eDA4LDB4OEIsMHhDNSwweDU5LDB4NjAsMHg2OCwweDcyLDB4NzgsCisgICAgMHg4NCwweDUxLDB4
NDMsMHg0OSwweEI1LDB4RjcsMHg5NCwweDU1LDB4QTUsMHg1OSwweDQ0LDB4NDksMHgzRCwweDJG
LDB4MDgsMHgwMiwKKyAgICAweEE4LDB4OEEsMHhDNSwweDYxLDB4QjUsMHgzNSwweDJELDB4MkYs
MHhFOSwweDkyLDB4NjcsMHg4MiwweDBBLDB4QTIsMHg2MiwweDc4LAorICAgIDB4QTgsMHg4QSww
eDI2LDB4NzIsMHhGMCwweDc4LDB4NTYsMHg1NywweDY3LDB4N0EsMHhFNSwweDY5LDB4RjAsMHhF
QSwweEZGLDB4NzcsCisgICAgMHg2NywweDcyLDB4QTQsMHg1OSwweEVBLDB4RTAsMHhGRiwweDU3
LDB4MDUsMHg2MiwweDQ0LDB4NTEsMHg3OCwweDdBLDB4NTcsMHg1NywKKyAgICAweDY0LDB4NTEs
MHgwMywweDQxLDB4RjcsMHhCNywweEVCLDB4RTgsMHhBNSwweDU5LDB4MjMsMHg0OSwweEZELDB4
QUYsMHgzNSwweDM3LAorICAgIDB4NjcsMHg3MiwweEM1LDB4NTksMHgzRCwweEI1LDB4QTUsMHhF
RCwweDg4LDB4NzIsMHhFNSwweDYxLDB4NjgsMHg3MCwweDdFLDB4RjcsCisgICAgMHhBNCwweDU5
LDB4MDIsMHg0MSwweDc4LDB4RkEsMHhGQywweDNDLDB4NDcsMHg3MiwweDQzLDB4NDksMHhGNSww
eDNELDB4MkYsMHhBRiwKKyAgICAweEU5LDB4OEEsMHhFNiwweDY5LDB4RDUsMHhCRCwweDNGLDB4
MkIsMHgyOSwweDkzLDB4NDcsMHg3QSwweDZGLDB4N0EsMHhGOCwweDc4LAorICAgIDB4RTksMHg4
QSwweDQ3LDB4N0EsMHgyRCwweDM1LDB4RjksMHhDMSwweDRBLDB4OTMsMHgyNiwweDZBLDB4Rjgs
MHhGQSwweEZGLDB4NTcsCisgICAgMHhEMywweERELDB4QzgsMHg4MiwweDJELDB4RDUsMHhENSww
eDU1LDB4NTUsMHhFRSwweDZCLDB4OUIsMHgwMCwweDAyLDB4MEIsMHgwRCwKKyAgICAweEI2LDB4
RjYsMHg1NSwweEVFLDB4QjcsMHgzNywweDE1LDB4QjUsMHgxOCwweEZGLDB4RDcsMHhGNiwweEU5
LDB4RUIsMHhGOSwweEU5LAorICAgIDB4MzgsMHhGRiwweEY4LDB4RjYsMHhBQiwweEFCLDB4RUIs
MHhCOSwweDE4LDB4RkYsMHhGOCwweEY2LDB4RUEsMHhGOCwweEY4LDB4RkEsCisgICAgMHgxOCww
eEZGLDB4RDgsMHhGNiwweEVBLDB4RkEsMHhCRSwweEZBLDB4RjcsMHhGNiwweEQ4LDB4RjYsMHhB
QSwweEJBLDB4MkEsMHhBMiwKKyAgICAweEQ4LDB4RkUsMHhGNywweEY2LDB4NUYsMHhGNywweDU3
LDB4NUYsMHgxOCwweEZGLDB4RjcsMHhGNiwweDZELDB4QkQsMHhBRCwweEVCLAorICAgIDB4MTgs
MHhGRiwweEY4LDB4RjYsMHg3NSwweEZGLDB4RkIsMHhFQSwweDE3LDB4RkYsMHhGOCwweEY2LDB4
RkEsMHhBRiwweEZGLDB4N0YsCisgICAgMHgxOCwweEZGLDB4QjcsMHhGNiwweEE4LDB4RUEsMHhF
RSwweDdCLDB4RDcsMHhGNiwweDk2LDB4RUUsMHgyMCwweEZFLDB4NUUsMHg1RSwKKyAgICAweEI3
LDB4RjYsMHg1NSwweEU2LDB4RTAsMHhFOCwweEZGLDB4RkYsMHg5NiwweEVFLDB4NTUsMHhFNiww
eEFGLDB4QkIsMHhFQSwweEZBLAorICAgIDB4NzYsMHhFRSwweDU2LDB4RUUsMHhERSwweEJFLDB4
QkEsMHg4QywweDc2LDB4RUUsMHgzNSwweEU2LDB4N0UsMHhFOCwweEEwLDB4ODIsCisgICAgMHg3
NiwweEVFLDB4MTQsMHhFNiwweDJGLDB4M0YsMHhGRSwweEZBLDB4OTYsMHhFRSwweDM1LDB4RTYs
MHgwMiwweDA4LDB4MEEsMHg3RiwKKyAgICAweDk2LDB4RUUsMHg1NSwweEVFLDB4QkUsMHgyQSww
eDgyLDB4RDUsMHg5NiwweEVFLDB4MzQsMHhFNiwweEM4LDB4NDgsMHg2MiwweDQyLAorICAgIDB4
MzQsMHhFNiwweEY0LDB4REQsMHhCQywweDVELDB4NTUsMHg1RCwweDE0LDB4RTYsMHhEMywweERE
LDB4QkEsMHg3RiwweEE1LDB4QUIsCisgICAgMHhGNCwweEU1LDB4QUYsMHhCQywweEUwLDB4NjAs
MHg3OCwweDU4LDB4Q0YsMHhCQywweDZFLDB4QjQsMHhFOCwweDdCLDB4N0EsMHg4MCwKKyAgICAw
eEFGLDB4QkMsMHgwRCwweEE0LDB4QkEsMHhERiwweERGLDB4RTgsMHg1MSwweENELDB4QUYsMHhC
QywweDA5LDB4MkQsMHg5NSwweDU1LAorICAgIDB4NTEsMHhDRCwweDBELDB4QUMsMHg2OCwweDYw
LDB4RTAsMHhERSwweDMxLDB4Q0QsMHhBRiwweEJDLDB4ODEsMHgwOSwweDBCLDB4QTMsCisgICAg
MHg5MiwweEQ1LDB4MzEsMHhDRCwweEE5LDB4QTksMHhBQiwweEE5LDB4OTEsMHhENSwweDUyLDB4
Q0QsMHhGQSwweEZFLDB4RUIsMHhFQSwKKyAgICAweEE3LDB4N0EsMHg0NSwweDZBLDB4MDIsMHg4
QSwweDBBLDB4OEQsMHhBNywweDdBLDB4ODYsMHg3MiwweEQ0LDB4NTYsMHhGRSwweEFELAorICAg
IDB4ODYsMHg3QSwweEE3LDB4NzIsMHhFQSwweEVGLDB4RUIsMHhBNywweEM4LDB4ODIsMHg2Niww
eDdBLDB4RkYsMHhERiwweDlFLDB4QUIsCisgICAgMHhBNywweDdBLDB4NjYsMHg3MiwweDU1LDB4
RkIsMHg4QiwweEE4LDB4ODcsMHg3QSwweDY2LDB4NzIsMHhCRCwweEYwLDB4QzIsMHgyQywKKyAg
ICAweEE2LDB4N0EsMHg0NiwweDcyLDB4MkYsMHhGNywweEZFLDB4RUUsMHhFOCwweDgyLDB4NDUs
MHg3MiwweDA4LDB4QUYsMHg1RCwweEQ1LAorICAgIDB4RTksMHg4QSwweDQ2LDB4NzIsMHgwMiww
eDg4LDB4MkIsMHhGRCwweEU4LDB4OEEsMHg4NywweDdBLDB4QTgsMHg4MiwweEE4LDB4QUQsCisg
ICAgMHhFOCwweDgyLDB4QTcsMHg4MiwweDAyLDB4OEEsMHg5RCwweEFBLDB4RTgsMHg4QSwweEM4
LDB4ODIsMHhGNiwweDJDLDB4MkYsMHg5RSwKKyAgICAweEU4LDB4OEEsMHhBNywweDdBLDB4QTIs
MHg4MiwweDZBLDB4QUUsMHhFOCwweDgyLDB4QTQsMHg1OSwweDc4LDB4NzgsMHg3MiwweDY4LAor
ICAgIDB4MjMsMHg0OSwweEUyLDB4MzgsMHgwOCwweEY4LDB4RkMsMHg1QywweDg0LDB4NTksMHhD
MiwweDMwLDB4MDIsMHgzRiwweEI1LDB4RDUsCisgICAgMHhDNywweDhBLDB4NjMsMHg1MSwweDJC
LDB4QUIsMHhCRiwweEY1LDB4MDksMHg5MywweDQ3LDB4N0EsMHhFMiwweDgyLDB4RUEsMHg3NSwK
KyAgICAweDY4LDB4N0EsMHgwNiwweDcyLDB4QTgsMHhCQywweEZGLDB4NjgsMHg0NywweDcyLDB4
NjQsMHg1OSwweEZFLDB4NzgsMHhGQSwweEFCLAorICAgIDB4QzUsMHg2MSwweDI0LDB4NTEsMHhG
MCwweDdCLDB4RUIsMHhFOCwweDY0LDB4NTEsMHgyMywweDQ5LDB4MkEsMHhENSwweEQ3LDB4RjUs
CisgICAgMHg4NCwweDUxLDB4MjMsMHg0OSwweDVFLDB4REUsMHgyRiwweDdCLDB4QzUsMHg1OSww
eDAzLDB4NDEsMHgyRiwweDBBLDB4RkEsMHhERiwKKyAgICAweEU2LDB4NjEsMHg0MywweDQxLDB4
MDAsMHhCQSwweEY1LDB4NTUsMHhDNSwweDU5LDB4MjMsMHg0MSwweDAwLDB4MDAsMHhDQSwweDU1
LAorICAgIDB4NDcsMHg3MiwweDY0LDB4NTEsMHhENSwweEY1LDB4MkQsMHgwRCwweDg4LDB4ODIs
MHhDNSwweDYxLDB4NzUsMHhCNSwweDJFLDB4MEEsCisgICAgMHhDOSwweDhBLDB4MDYsMHg3Miww
eDBCLDB4QkUsMHhGQywweDc4LDB4QzksMHg4QSwweDA2LDB4NkEsMHhFMCwweEU4LDB4QkEsMHhE
NSwKKyAgICAweDg3LDB4N0EsMHg2NCwweDUxLDB4MDIsMHg4QSwweEU4LDB4N0UsMHhDNSwweDYx
LDB4MDMsMHg0OSwweDIwLDB4OUUsMHhCNywweEI3LAorICAgIDB4ODcsMHg3QSwweDY0LDB4NTEs
MHgwQSwweDNGLDB4QUQsMHhBRiwweDE1LDB4RUUsMHg2NywweDcyLDB4MkYsMHhCRCwweEQ1LDB4
NTUsCisgICAgMHg3NiwweEVFLDB4MDksMHg4QiwweDAwLDB4MDIsMHhBRiwweDU1LDB4RDgsMHhG
RSwweDBELDB4QUMsMHgwMCwweDAwLDB4MjIsMHhGNSwKKyAgICAweDE4LDB4RkYsMHgzNCwweEU2
LDB4MDAsMHgwMiwweDAyLDB4MjksMHgxOCwweEZGLDB4RjgsMHhGNiwweEZBLDB4RkEsMHhGQSww
eEFGLAorICAgIDB4RjcsMHhGRSwweEY4LDB4RjYsMHhGRiwweEZGLDB4RUYsMHhGRiwweEY3LDB4
RjYsMHhEOCwweEY2LDB4MkEsMHhBOCwweEFFLDB4MkEsCisgICAgMHgxOCwweEZGLDB4RjcsMHhG
NiwweDU3LDB4RkQsMHhGNSwweEJGLDB4RjgsMHhGRSwweDE3LDB4RjcsMHhBQSwweEVBLDB4QkIs
MHg4RSwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4RkUsMHhGRiwweEVFLDB4RkUsMHgxOCww
eEZGLDB4RDcsMHhGNiwweEVBLDB4RUUsMHhGQiwweDdBLAorICAgIDB4MTcsMHhGNywweEI3LDB4
RjYsMHg3RiwweEZFLDB4NUYsMHg1RCwweEI3LDB4RjYsMHg3NiwweEVFLDB4RjgsMHg1OCwweEY4
LDB4RkUsCisgICAgMHg3NSwweEVFLDB4MzUsMHhFNiwweEFFLDB4RkUsMHhGQSwweEYwLDB4NzYs
MHhFRSwweDU1LDB4RUUsMHhGRSwweERELDB4MUUsMHgwMiwKKyAgICAweDc2LDB4RUUsMHg1NSww
eEVFLDB4RjksMHhEQywweDU4LDB4RjgsMHg3NiwweEVFLDB4NTUsMHhFRSwweEU5LDB4QUUsMHhF
RSwweEFCLAorICAgIDB4NzUsMHhFRSwweDM1LDB4RTYsMHg2RSwweDY4LDB4RTgsMHhBQSwweDU2
LDB4RUUsMHgxNCwweEU2LDB4N0YsMHhGRiwweEJFLDB4QUUsCisgICAgMHg5NiwweEY2LDB4MzUs
MHhFNiwweEI1LDB4MDUsMHgzRCwweEJGLDB4OTYsMHhGNiwweEQzLDB4REQsMHhFMCwweDYwLDB4
NjgsMHg3QSwKKyAgICAweDE0LDB4RTYsMHhEMywweERELDB4MEIsMHgwRCwweDA5LDB4MjUsMHgx
NCwweEU2LDB4RDMsMHhERCwweDgwLDB4MjAsMHg1QywweEQ4LAorICAgIDB4RDQsMHhERCwweEYw
LDB4QzQsMHg1OCwweDc4LDB4NzgsMHg3QywweEYwLDB4QzQsMHhBRiwweEJDLDB4QjAsMHhGQSww
eERBLDB4QUEsCisgICAgMHhGMCwweEM0LDB4NEQsMHhBQywweDZBLDB4NjIsMHhFMCwweDAwLDB4
RDAsMHhCQywweDZBLDB4OTMsMHhBMiwweEFBLDB4RkIsMHg1QywKKyAgICAweDhFLDB4QjQsMHg0
QiwweDkzLDB4MjgsMHgyQSwweDNGLDB4MzUsMHgzMSwweEM1LDB4RjAsMHhDNCwweEE5LDB4OEIs
MHhGOSwweDc1LAorICAgIDB4NzIsMHhENSwweDEwLDB4QzUsMHgyMywweEFGLDB4QUQsMHhGRCww
eDcyLDB4RDUsMHgzMSwweENELDB4MDAsMHhCQSwweEFBLDB4NTcsCisgICAgMHg0NSwweDZBLDB4
MDUsMHg2MiwweDNBLDB4RUEsMHg3RCwweEU2LDB4ODYsMHg3MiwweEU1LDB4NjEsMHgwMiwweEFG
LDB4NkYsMHhGRSwKKyAgICAweEE3LDB4N0EsMHgwNSwweDYyLDB4ODAsMHgwQSwweEFGLDB4RDUs
MHhBNywweDdBLDB4NDYsMHg3MiwweDgwLDB4QTgsMHgwQSwweDk1LAorICAgIDB4QTcsMHg3QSww
eDg2LDB4N0EsMHhGOSwweEI5LDB4QkIsMHhBQiwweEE3LDB4N0EsMHg2NiwweDdBLDB4QkQsMHhC
OCwweEFBLDB4QjgsCisgICAgMHhBNywweDdBLDB4NDYsMHg3MiwweEU4LDB4QTIsMHhBMiwweDAy
LDB4QTcsMHg3QSwweDY2LDB4N0EsMHg3RSwweDNCLDB4MkEsMHgyMiwKKyAgICAweEE3LDB4N0Es
MHg2NiwweDdBLDB4NzcsMHg1RSwweEI4LDB4MjAsMHhBNywweDdBLDB4NjYsMHg3QSwweEU1LDB4
NUQsMHhGRiwweEU4LAorICAgIDB4RTgsMHg4MiwweDQ1LDB4NzIsMHgwMiwweEJELDB4RDcsMHhG
RSwweEU4LDB4ODIsMHg2NiwweDcyLDB4QTIsMHgyQSwweEI1LDB4NTUsCisgICAgMHgwOCwweDhC
LDB4ODcsMHg3QSwweDJBLDB4QzgsMHhBMiwweEJELDB4QzcsMHg4MiwweDA1LDB4NjIsMHg2MCww
eDgwLDB4MDAsMHgwMCwKKyAgICAweEM3LDB4ODIsMHhFMiwweDQwLDB4NTcsMHg1NywweDVFLDB4
NzgsMHhFMiwweDM4LDB4QTEsMHgzOCwweEZDLDB4NUUsMHg3QSwweEU4LAorICAgIDB4NjQsMHg1
OSwweEEyLDB4MzgsMHgwQiwweEZELDB4QkQsMHgzRCwweDI2LDB4NzIsMHgyMywweDUxLDB4MkYs
MHgzRCwweDJELDB4MkYsCisgICAgMHg4OCwweDgyLDB4RTYsMHg2OSwweDZBLDB4MDIsMHgwMCww
eDJBLDB4ODgsMHg4MiwweDA1LDB4NkEsMHg1NSwweEZCLDB4MDIsMHg5NiwKKyAgICAweEU5LDB4
OEEsMHg4NCwweDUxLDB4N0YsMHhFQSwweEYwLDB4RUEsMHgyNywweDZBLDB4MDIsMHg0MSwweEZG
LDB4N0YsMHg1OCwweDVGLAorICAgIDB4NDQsMHg0OSwweEMyLDB4MzgsMHhFMCwweDY4LDB4RkUs
MHhENywweDQ0LDB4NDEsMHhFMiwweDM4LDB4MkIsMHhBOSwweEVELDB4N0YsCisgICAgMHg0NCww
eDQxLDB4QTIsMHgzMCwweEUwLDB4N0EsMHg1RiwweDVGLDB4QTUsMHg1OSwweDgxLDB4MzAsMHhG
RiwweEJELDB4QUQsMHgyQiwKKyAgICAweDQ3LDB4NzIsMHg0MywweDUxLDB4MEQsMHgwRCwweEFG
LDB4QkYsMHg4OCwweDdBLDB4MDYsMHg2QSwweENBLDB4RUYsMHg4QiwweEFELAorICAgIDB4Mjcs
MHg3MiwweDg0LDB4NTksMHhFMCwweEY4LDB4NjgsMHg1QSwweEU2LDB4NjEsMHg4NCwweDU5LDB4
MDksMHg2RiwweEFELDB4RUIsCisgICAgMHhDNiwweDYxLDB4MjMsMHg0MSwweDcwLDB4NzIsMHg3
QSwweDdFLDB4QTUsMHg1OSwweDAzLDB4NDEsMHhCNSwweEI1LDB4MzUsMHgzNSwKKyAgICAweDQ3
LDB4NzIsMHhDNSwweDYxLDB4RTksMHg2MywweEZCLDB4M0EsMHhFOSwweDhBLDB4MDYsMHg3Miww
eDI5LDB4MEQsMHhBQiwweEVBLAorICAgIDB4QzgsMHg4MiwweDI2LDB4NzIsMHhCQywweDVDLDB4
RkUsMHgyRiwweDhCLDB4OUIsMHg2NywweDdBLDB4MkIsMHhCRCwweEJELDB4RUYsCisgICAgMHhG
OCwweEZFLDB4QzgsMHg4MiwweDAyLDB4QUIsMHhGRCwweDU1LDB4RDcsMHhGRSwweDZBLDB4OTMs
MHgwMCwweDAyLDB4QUYsMHhENSwKKyAgICAweEY3LDB4RkUsMHg3MiwweEQ1LDB4MDAsMHgwMCww
eDIyLDB4RkQsMHhGOCwweEZFLDB4NTYsMHhFRSwweDA4LDB4MDgsMHgyMiwweEJELAorICAgIDB4
RjgsMHhGRSwweEQ3LDB4RjYsMHgwMCwweEFBLDB4QTgsMHhGRSwweDE4LDB4RkYsMHhENywweEY2
LDB4QUEsMHhBQSwweEFCLDB4RkYsCisgICAgMHgxOCwweEZGLDB4RDgsMHhGNiwweEFBLDB4QUYs
MHhGRiwweEVGLDB4RjgsMHhGRSwweEI3LDB4RjYsMHg2MCwweEYyLDB4RjgsMHg1RSwKKyAgICAw
eEQ3LDB4RjYsMHg3NiwweEVFLDB4QTAsMHhFQywweEZBLDB4N0UsMHhCNiwweEY2LDB4NTUsMHhF
RSwweEFBLDB4RkEsMHhGQSwweEY1LAorICAgIDB4OTYsMHhGNiwweDU1LDB4RUUsMHg3QSwweDhB
LDB4QUIsMHhFRiwweDc2LDB4RUUsMHg1NSwweEVFLDB4RkIsMHg3QywweDk4LDB4MEIsCisgICAg
MHg5NywweEY2LDB4NTYsMHhFRSwweERFLDB4OUYsMHhFNiwweEZBLDB4OTcsMHhGNiwweDU2LDB4
RUUsMHg3RCwweEZGLDB4RkEsMHhFQSwKKyAgICAweDc2LDB4RUUsMHg1NSwweEVFLDB4MzYsMHhF
QSwweEJBLDB4QUUsMHg3NSwweEVFLDB4MzUsMHhFRSwweEI3LDB4QUUsMHg4OCwweDBBLAorICAg
IDB4NzYsMHhFRSwweDM0LDB4RTYsMHg1QSwweDcwLDB4N0EsMHg1RiwweDU1LDB4RUUsMHhCMyww
eEQ1LDB4RjAsMHg2OCwweDcwLDB4NzgsCisgICAgMHgxNCwweEU2LDB4QjMsMHhENSwweDJELDB4
MkYsMHgyQiwweEFELDB4NzUsMHhFRSwweDE0LDB4RTYsMHg3RCwweEZGLDB4QkYsMHgyRCwKKyAg
ICAweDU1LDB4RUUsMHgzMSwweENELDB4NTYsMHg3QywweEUwLDB4ODAsMHhEMywweERELDB4RDAs
MHhCQywweDU1LDB4RjcsMHhERSwweEU4LAorICAgIDB4NzIsMHhDRCwweEYwLDB4QzQsMHhGRCww
eEFGLDB4MkIsMHhBQSwweDMxLDB4Q0QsMHgwOSwweDgzLDB4NzAsMHg3MCwweEMwLDB4ODAsCisg
ICAgMHhBRiwweEI0LDB4QTgsMHg3QSwweDJELDB4MkQsMHgzNSwweEY3LDB4RjAsMHhDNCwweDBD
LDB4QTQsMHgwMCwweDBBLDB4QUEsMHhCNSwKKyAgICAweDMxLDB4Q0QsMHhBRiwweEJDLDB4MEEs
MHhBQiwweDM3LDB4RjUsMHgzMSwweENELDB4Q0YsMHhCQywweDAwLDB4RUEsMHhFQiwweERGLAor
ICAgIDB4NDYsMHg3MiwweDI2LDB4NkEsMHhFRCwweERFLDB4MTgsMHg4OCwweDQ2LDB4NzIsMHgy
NiwweDZBLDB4RTUsMHg2QiwweDA4LDB4MjIsCisgICAgMHg0NiwweDcyLDB4MDUsMHg2QSwweEJG
LDB4QUEsMHhGRSwweERBLDB4NDYsMHg3MiwweDA1LDB4NkEsMHhGRiwweDZFLDB4RDcsMHhCQSwK
KyAgICAweEE3LDB4N0EsMHgwNSwweDZBLDB4MkYsMHg3RCwweERGLDB4RkYsMHhBNywweDdBLDB4
MjYsMHg2QSwweDAwLDB4MkIsMHhENywweDU1LAorICAgIDB4QTcsMHg4MiwweDI1LDB4NkEsMHgw
OCwweEEwLDB4MkEsMHg5NSwweEE3LDB4N0EsMHg4NywweDdBLDB4QUYsMHhGQSwweEZGLDB4QTUs
CisgICAgMHhBNywweDdBLDB4ODcsMHg3QSwweDhCLDB4MEYsMHgyRCwweEZDLDB4QzcsMHg4Miww
eDY2LDB4NzIsMHg3RiwweEZGLDB4M0EsMHhGOCwKKyAgICAweEE3LDB4ODIsMHg4NywweDdBLDB4
RkYsMHhCRCwweEZGLDB4MEMsMHhBNywweDgyLDB4NjYsMHg3QSwweEU2LDB4RkEsMHhBQSwweDA4
LAorICAgIDB4QzcsMHg4MiwweDY2LDB4NzIsMHhENSwweEJCLDB4RkUsMHg4QiwweEM4LDB4ODIs
MHg2NiwweDcyLDB4MEIsMHhGNywweEZGLDB4QUEsCisgICAgMHhDNywweDgyLDB4ODQsMHg1OSww
eDcwLDB4QzIsMHhBMiwweDI4LDB4NDYsMHg3MiwweEUzLDB4NDAsMHg1NSwweDU3LDB4RkMsMHhF
OCwKKyAgICAweDY0LDB4NTksMHhFMiwweDQwLDB4QUQsMHgyRCwweDhFLDB4ODgsMHhBNSwweDYx
LDB4MDMsMHg0OSwweDJGLDB4NTcsMHg1RiwweDVGLAorICAgIDB4MjcsMHg3MiwweEUzLDB4NDgs
MHgwQSwweEFGLDB4RjUsMHhGNSwweDY3LDB4N0EsMHg0NCwweDUxLDB4MDAsMHhBQSwweEZELDB4
NUQsCisgICAgMHg0NywweDdBLDB4RTMsMHg0MCwweEEwLDB4RkEsMHhGRiwweDdGLDB4NDQsMHg1
MSwweEEyLDB4MzAsMHhFMCwweEJBLDB4RkUsMHhENywKKyAgICAweDQ0LDB4NDEsMHhDMiwweDM4
LDB4RjcsMHhFRiwweEJCLDB4MkEsMHg0NCwweDQxLDB4RTMsMHgzOCwweDdGLDB4RUYsMHhFQSww
eDgzLAorICAgIDB4MjMsMHg0MSwweEEyLDB4MzAsMHhERSwweERFLDB4QkUsMHgyQSwweEE1LDB4
NTksMHgwMywweDQxLDB4MkQsMHgwRCwweDJELDB4MDMsCisgICAgMHgwNiwweDcyLDB4ODQsMHg1
OSwweDM1LDB4RkQsMHhDQSwweEEyLDB4MDYsMHg2QSwweEE0LDB4NjEsMHgyQSwweEZELDB4RDUs
MHhERSwKKyAgICAweEU1LDB4NjksMHgyNCwweDQ5LDB4QjgsMHhGQSwweEZFLDB4NUUsMHhFNSww
eDYxLDB4MjMsMHg0OSwweDhCLDB4MkEsMHhBRiwweEI1LAorICAgIDB4ODQsMHg1MSwweDAzLDB4
NDEsMHhGOCwweEY4LDB4RDYsMHhGNiwweEM2LDB4NTksMHgwMiwweDQxLDB4MkQsMHgyRCwweEFB
LDB4RTMsCisgICAgMHg4OCwweDdBLDB4NDQsMHg1MSwweDJBLDB4MEIsMHgyRiwweEI1LDB4ODgs
MHg4MiwweEU1LDB4NjksMHg0QSwweEY4LDB4NTgsMHhBMCwKKyAgICAweEM5LDB4OEEsMHgwNSww
eDZBLDB4MkQsMHgyRiwweEJGLDB4RUYsMHgwQSwweDkzLDB4NjcsMHg3QSwweEEwLDB4RTIsMHg3
RiwweDVELAorICAgIDB4ODgsMHg3QSwweDI2LDB4NzIsMHgyNiwweDNELDB4QkQsMHgwMSwweDJB
LDB4OTMsMHgyNiwweDcyLDB4M0UsMHhCNywweEQ3LDB4RkYsCisgICAgMHhFQywweEEzLDB4ODgs
MHg3QSwweEY4LDB4NTcsMHg1NSwweDU1LDB4RDMsMHhERCwweDY4LDB4N0EsMHgwQiwweEZELDB4
RDUsMHg1NSwKKyAgICAweDM0LDB4RTYsMHg4OCwweDdBLDB4MDAsMHhCRiwweEQ1LDB4NTUsMHg5
NiwweEY2LDB4QTgsMHg3QSwweDAwLDB4MDIsMHhGRiwweDU1LAorICAgIDB4QjcsMHhGNiwweDZB
LDB4OTMsMHgwMCwweDAwLDB4MDMsMHhCRCwweEQ3LDB4RjYsMHgzNSwweEU2LDB4ODgsMHhBOCww
eEFBLDB4RkQsCisgICAgMHg5NiwweEVFLDB4NTUsMHhFRSwweEMwLDB4RTgsMHhBRSwweEZGLDB4
OTYsMHhGNiwweDM1LDB4RTYsMHhBRSwweDhBLDB4N0UsMHhENywKKyAgICAweDc2LDB4RUUsMHgz
NCwweEU2LDB4MjgsMHhBRSwweEJGLDB4NTUsMHg3NiwweEVFLDB4MzUsMHhFRSwweDAwLDB4MDAs
MHhBMCwweEZCLAorICAgIDB4OTcsMHhGNiwweDM1LDB4RTYsMHhBQSwweEEyLDB4QUEsMHhENSww
eDk2LDB4RjYsMHgzNSwweEU2LDB4MjIsMHgwMiwweEY4LDB4REYsCisgICAgMHg3NiwweEVFLDB4
NTUsMHhFRSwweEQ0LDB4NTcsMHhFNSwweDI1LDB4OTYsMHhGNiwweDU1LDB4RUUsMHhENSwweEZE
LDB4RUIsMHgyQSwKKyAgICAweDc2LDB4RUUsMHgzNSwweEU2LDB4RkIsMHhGOCwweDcwLDB4NzAs
MHgzNSwweEVFLDB4OTIsMHhENSwweDcwLDB4NzgsMHg3OCwweDcwLAorICAgIDB4MTUsMHhFNiww
eDkyLDB4RDUsMHgyNSwweDNELDB4QUQsMHhBOSwweDM1LDB4RTYsMHhGNCwweEU1LDB4MEEsMHhE
RiwweDg1LDB4MEQsCisgICAgMHg5NiwweEVFLDB4MzUsMHhFNiwweEVELDB4ODksMHgyOSwweDJC
LDB4NzYsMHhFRSwweDkyLDB4RDUsMHg2QSwweDAwLDB4MDAsMHgwMCwKKyAgICAweDc1LDB4RUUs
MHg1MSwweENELDB4NTUsMHg1NywweEZDLDB4RjAsMHhCMiwweEQ1LDB4MTAsMHhDNSwweDdCLDB4
RUYsMHhBRSwweEE4LAorICAgIDB4NzIsMHhDRCwweDQ3LDB4NkEsMHg1NywweDVDLDB4NzgsMHhG
MCwweDBELDB4QTQsMHgwNiwweDYyLDB4MEIsMHhCNSwweEQ1LDB4NUYsCisgICAgMHhBRiwweEJD
LDB4ODgsMHg3MiwweDAwLDB4MjIsMHhBRCwweDU1LDB4Q0YsMHhCQywweDJCLDB4OEIsMHgwMCww
eDAyLDB4MEIsMHgwRCwKKyAgICAweDY2LDB4NzIsMHgyNiwweDZBLDB4QkEsMHg3RSwweDhDLDB4
MEMsMHg0NiwweDcyLDB4MjUsMHg2QSwweDIwLDB4MDgsMHgwMCwweDMwLAorICAgIDB4NjYsMHg3
MiwweDI2LDB4NkEsMHg3RiwweEIxLDB4QkIsMHgyQSwweDY2LDB4NzIsMHgyNSwweDZBLDB4RkQs
MHhFRSwweEZFLDB4M0MsCisgICAgMHg2NiwweDcyLDB4MjUsMHg2QSwweDZGLDB4QUUsMHhBRiww
eDFGLDB4NDYsMHg3MiwweDI2LDB4NkEsMHhCOSwweDI5LDB4M0IsMHgwMCwKKyAgICAweDQ2LDB4
NzIsMHgyNiwweDZBLDB4OTUsMHhDQywweEFCLDB4ODAsMHg4NywweDdBLDB4MjUsMHg2QSwweDI5
LDB4REYsMHg3RCwweDdELAorICAgIDB4QTcsMHg3QSwweDI1LDB4NkEsMHgyMCwweDJELDB4RDUs
MHg1NywweEM3LDB4ODIsMHgyNSwweDZBLDB4QUEsMHhBOCwweDJGLDB4RkQsCisgICAgMHhBNyww
eDgyLDB4NjcsMHg3QSwweEE4LDB4ODAsMHhBOCwweEJELDB4QTcsMHg4MiwweDg3LDB4N0EsMHgy
OCwweEUwLDB4OEEsMHhDOCwKKyAgICAweEM3LDB4OEEsMHhBNywweDdBLDB4NTUsMHg3RCwweEZE
LDB4RUYsMHhDNywweDgyLDB4ODYsMHg3QSwweEFFLDB4QTksMHg4MiwweEEyLAorICAgIDB4Qzgs
MHg4MiwweDg2LDB4N0EsMHg3RiwweEJCLDB4QkIsMHgzRSwweEM4LDB4ODIsMHg2NCwweDU5LDB4
N0EsMHg2OCwweEE4LDB4MjAsCisgICAgMHhDOCwweDhBLDB4NjQsMHg1OSwweDU1LDB4REQsMHhG
QSwweEEwLDB4NjcsMHg3MiwweDQ0LDB4NTksMHg1NSwweEZGLDB4RkEsMHhFMCwKKyAgICAweEE1
LDB4NTksMHgyNCwweDQ5LDB4QkYsMHhFOCwweEY4LDB4NUUsMHg4NSwweDUxLDB4RTIsMHgzOCww
eEEwLDB4QUEsMHhGRSwweDVFLAorICAgIDB4NjQsMHg1MSwweEMyLDB4MzAsMHg2OCwweDVBLDB4
NUYsMHg3RCwweDAzLDB4MzksMHhBMiwweDMwLDB4QjUsMHhFRiwweEFGLDB4MDMsCisgICAgMHg0
NCwweDQxLDB4QzIsMHgzMCwweDgzLDB4QUEsMHg3RSwweDdBLDB4NDQsMHg0OSwweEMyLDB4Mzgs
MHhBRSwweEJGLDB4QkQsMHgzRCwKKyAgICAweDY0LDB4NTEsMHgwMywweDQxLDB4MzUsMHg4Riww
eEM4LDB4QTAsMHhBNSwweDU5LDB4MjMsMHg0OSwweDBGLDB4M0QsMHhCRCwweEFGLAorICAgIDB4
NDcsMHg3QSwweEE1LDB4NTksMHhCMiwweDJCLDB4MjksMHhBNSwweDY3LDB4N0EsMHg0NCwweDUx
LDB4RkEsMHg2OCwweDcwLDB4N0EsCisgICAgMHhBNSwweDU5LDB4QzIsMHgzOCwweEI4LDB4RkEs
MHhGNywweEQ3LDB4QTUsMHg1OSwweDIzLDB4NDEsMHhGQiwweDZCLDB4RTksMHgwOSwKKyAgICAw
eEE1LDB4NTEsMHgwMywweDQxLDB4REUsMHhGRiwweEI1LDB4RkMsMHhBNSwweDUxLDB4MjMsMHg0
OSwweEVCLDB4QkIsMHhFOCwweDVGLAorICAgIDB4NjgsMHg3QSwweDAzLDB4NDEsMHgyRiwweEFE
LDB4MkQsMHgyNSwweDRCLDB4OTMsMHhBNywweDgyLDB4QTksMHg4RCwweEFFLDB4NUQsCisgICAg
MHhFOSwweDhBLDB4QTUsMHg1OSwweEZBLDB4RjgsMHg3RSwweDVFLDB4NjcsMHg3QSwweEU2LDB4
NjEsMHgyQiwweDJCLDB4QUYsMHhCRCwKKyAgICAweEM5LDB4OEEsMHgyNywweDcyLDB4MkYsMHhB
QSwweEJGLDB4MzUsMHgwOSwweDkzLDB4QTgsMHg4MiwweDVGLDB4N0EsMHgyRSwweEJGLAorICAg
IDB4RTksMHg4QSwweDQ3LDB4N0EsMHg1NSwweDVGLDB4RjgsMHhFOCwweDY3LDB4N0EsMHhFNSww
eDY5LDB4N0YsMHhBQSwweDhBLDB4RjgsCisgICAgMHg4NywweDdBLDB4RTUsMHg2OSwweEFELDB4
QUIsMHgwMiwweEFCLDB4ODcsMHg3MiwweDI2LDB4NkEsMHg3OCwweEVBLDB4REYsMHg1QSwKKyAg
ICAweDRFLDB4QUMsMHg0NywweDZBLDB4MjUsMHhENSwweDU1LDB4NTUsMHg1NSwweEVFLDB4ODgs
MHg3MiwweDAyLDB4MDMsMHhGNSwweDU1LAorICAgIDB4MzUsMHhFNiwweDZBLDB4OTMsMHgwMCww
eDAwLDB4MEEsMHhCNSwweDU1LDB4RUUsMHhEMywweERELDB4QTgsMHhBMiwweEFBLDB4QTksCisg
ICAgMHgzNCwweEU2LDB4RjQsMHhFNSwweEEwLDB4QTgsMHhGQSwweERFLDB4MzUsMHhFNiwweEY0
LDB4RTUsMHgwMiwweDhFLDB4MkYsMHhERCwKKyAgICAweDM0LDB4RTYsMHhGNCwweERELDB4RkUs
MHg1NywweEZDLDB4RUYsMHgzNSwweEU2LDB4RDMsMHhERCwweDJGLDB4MjksMHhCQiwweEFGLAor
ICAgIDB4OTYsMHhGNiwweDM0LDB4RTYsMHhBRCwweEFGLDB4MzcsMHhCNSwweDk2LDB4RjYsMHgz
NSwweEU2LDB4ODIsMHhBOCwweDcyLDB4NUYsCisgICAgMHg1NSwweEVFLDB4MzUsMHhFNiwweEMw
LDB4MkEsMHhBRCwweEY1LDB4MzUsMHhFNiwweDcyLDB4RDUsMHg3OCwweEEwLDB4MDAsMHgwMCwK
KyAgICAweDM1LDB4RUUsMHg5MiwweEQ1LDB4QjUsMHhCRCwweEE4LDB4ODAsMHgzNCwweEU2LDB4
RjQsMHhERCwweDBCLDB4QkEsMHhERiwweERCLAorICAgIDB4OTYsMHhFRSwweDE0LDB4RTYsMHg4
QiwweDBCLDB4MEYsMHgyRCwweDk2LDB4RUUsMHg3NiwweEVFLDB4RTgsMHhGOCwweDhBLDB4QTgs
CisgICAgMHg3NiwweEVFLDB4RDMsMHhERCwweDcwLDB4QzAsMHgwMCwweDAwLDB4NTUsMHhFRSww
eDcyLDB4RDUsMHg3RiwweDdGLDB4N0EsMHhFMCwKKyAgICAweEYzLDB4REQsMHhGMSwweEM0LDB4
NjIsMHgwQSwweDBBLDB4MEEsMHhCMywweERELDB4RTksMHg4MiwweDU3LDB4RTAsMHgwMCwweDAw
LAorICAgIDB4NzIsMHhENSwweDY3LDB4NzIsMHg1NSwweEZGLDB4QTgsMHg4MCwweENGLDB4QkMs
MHhFOSwweDgyLDB4MDksMHgwMywweDAyLDB4MjgsCisgICAgMHg2NiwweDcyLDB4NDYsMHg3Miww
eDI1LDB4RDYsMHg5QywweEJFLDB4NjYsMHg3MiwweDI1LDB4NzIsMHhBRSwweDg5LDB4QTgsMHhB
MCwKKyAgICAweDY3LDB4NzIsMHg0NiwweDcyLDB4RDksMHhBMywweDY2LDB4QjYsMHg2NiwweDdB
LDB4NDYsMHg3MiwweEFGLDB4Q0YsMHg3QywweEIyLAorICAgIDB4NjYsMHg3MiwweDQ2LDB4NzIs
MHhGRSwweEY0LDB4QkQsMHg1RCwweDY2LDB4NzIsMHg0NiwweDcyLDB4NUUsMHgxNiwweEY4LDB4
RjMsCisgICAgMHg2NywweDdBLDB4MjYsMHg3MiwweDdGLDB4OEYsMHgyRCwweEE4LDB4NjYsMHg3
QSwweDI2LDB4NkEsMHhERiwweEVGLDB4QTgsMHhDMywKKyAgICAweDY2LDB4NzIsMHgyNSwweDcy
LDB4RTIsMHhBQiwweEVBLDB4RUUsMHg2NiwweDcyLDB4MjUsMHg2QSwweDZGLDB4REYsMHg5QSww
eEJBLAorICAgIDB4NjYsMHg3MiwweDI1LDB4NkEsMHgyRiwweDdGLDB4NjcsMHhBOCwweEM3LDB4
ODIsMHgyNiwweDZBLDB4OEEsMHhBRCwweDdELDB4RkYsCisgICAgMHhDOCwweDhBLDB4NDYsMHg3
MiwweEFBLDB4OEEsMHg5RCwweEQ1LDB4QzcsMHg4MiwweDY2LDB4N0EsMHgyMiwweDBBLDB4QUEs
MHhCNSwKKyAgICAweEM3LDB4ODIsMHhBNywweDgyLDB4MDksMHgwMiwweDBBLDB4MDcsMHhFOCww
eDhBLDB4ODcsMHg3QSwweDdBLDB4RUEsMHgwMCwweDBBLAorICAgIDB4MDksMHg5MywweDQ2LDB4
NzIsMHg3QSwweEVCLDB4RTgsMHg2OCwweDg3LDB4N0EsMHgyMywweDQ5LDB4RTAsMHhGOCwweEZB
LDB4N0UsCisgICAgMHg2NSwweDUxLDB4QzIsMHgzMCwweDg4LDB4RkEsMHg1RSwweDU3LDB4MjMs
MHg0MSwweDgxLDB4MjgsMHhGOCwweERGLDB4REYsMHhENSwKKyAgICAweEUzLDB4MzAsMHhBMiww
eDI4LDB4MDIsMHhBQSwweEFGLDB4QkYsMHgwMywweDM5LDB4QTIsMHgyOCwweEEyLDB4QTIsMHhF
QSwweERFLAorICAgIDB4RTMsMHgzMCwweEEyLDB4MzAsMHgwMCwweEFBLDB4RkEsMHhGRiwweDg0
LDB4NTEsMHhDMiwweDMwLDB4QjcsMHhCRiwweDI1LDB4MEQsCisgICAgMHg4NCwweDUxLDB4RTMs
MHg0MCwweEUwLDB4QUUsMHhCNiwweEQ3LDB4QTUsMHg1OSwweDQ0LDB4NTEsMHhGNSwweDJGLDB4
MkYsMHhGQiwKKyAgICAweDI3LDB4NzIsMHg4NSwweDU5LDB4MzUsMHgzNSwweEE3LDB4QTUsMHhF
NiwweDYxLDB4MDMsMHg0MSwweEY4LDB4RjgsMHg3QSwweDdDLAorICAgIDB4NDQsMHg0OSwweEMz
LDB4MzgsMHhFRSwweDdBLDB4N0MsMHhCQSwweEM2LDB4NTksMHhFMywweDM4LDB4MkQsMHgwRCww
eDBCLDB4QUIsCisgICAgMHhDNiwweDU5LDB4NDQsMHg0OSwweEYwLDB4NUMsMHg3MCwweDdBLDB4
NDQsMHg0OSwweEUzLDB4MzgsMHhFOCwweEZFLDB4NzYsMHhBRSwKKyAgICAweEE1LDB4NTksMHhF
MywweDM4LDB4MjUsMHhCNSwweEZELDB4RkIsMHg2NywweDcyLDB4NDQsMHg0OSwweDgyLDB4RkEs
MHg3RiwweDc1LAorICAgIDB4RTUsMHg2MSwweDQ0LDB4NDksMHhFMCwweEJGLDB4RjUsMHg1NSww
eEU2LDB4NjEsMHg0MywweDUxLDB4MkIsMHhCRiwweEJGLDB4QjUsCisgICAgMHg2NywweDdBLDB4
ODQsMHg1OSwweDBCLDB4MkQsMHgyRiwweDNGLDB4RTksMHg4QSwweDA2LDB4NzIsMHgyQSwweEJF
LDB4REEsMHg1RiwKKyAgICAweEU5LDB4OTIsMHg2NywweDdBLDB4NzgsMHhFRiwweEFELDB4RTks
MHhDOSwweDhBLDB4MjcsMHg3MiwweDVFLDB4RjAsMHhDMCwweDg4LAorICAgIDB4ODcsMHg3QSww
eEM0LDB4NjEsMHhBQiwweDdGLDB4RkEsMHhBOCwweDQ3LDB4NzIsMHg4NCwweDU5LDB4MDAsMHgw
QiwweEZGLDB4NUUsCisgICAgMHgyNiwweDZBLDB4ODQsMHg1MSwweDgwLDB4QTAsMHhGQiwweDU1
LDB4NjcsMHg3MiwweEE1LDB4NTksMHgyQSwweEZELDB4RjUsMHhENSwKKyAgICAweDBDLDB4QTQs
MHgyNiwweDZBLDB4MkYsMHhCRCwweEQ1LDB4NTUsMHgzNCwweEVFLDB4MEEsMHg4QiwweDAyLDB4
MEEsMHgyRCwweEQ1LAorICAgIDB4MzUsMHhFRSwweDMxLDB4Q0QsMHhBMCwweEE4LDB4MjIsMHhB
RCwweDE0LDB4RTYsMHhCMywweERELDB4RUEsMHg2QiwweEEyLDB4ODgsCisgICAgMHgxNCwweEU2
LDB4QjMsMHhERCwweENBLDB4QUYsMHhGQSwweDZBLDB4RjQsMHhFNSwweEQzLDB4REQsMHgyRSww
eDlGLDB4OTcsMHhENSwKKyAgICAweDU1LDB4RTYsMHhGNCwweERELDB4MEIsMHhBQiwweEFGLDB4
RUYsMHgzNCwweEU2LDB4RjQsMHhERCwweDgwLDB4MkEsMHhBRiwweEQ1LAorICAgIDB4NTUsMHhF
RSwweDE0LDB4RTYsMHhBQSwweEFGLDB4QUYsMHhDRCwweDM0LDB4RTYsMHhGNCwweERELDB4RDYs
MHg1RSwweDdBLDB4NjcsCisgICAgMHgzNCwweEU2LDB4RjQsMHhERCwweEJGLDB4QUYsMHhCNSww
eEZELDB4MTQsMHhFNiwweEY0LDB4REQsMHgyMCwweDI4LDB4ODIsMHgwMiwKKyAgICAweDk2LDB4
RUUsMHgxNCwweEU2LDB4MkYsMHgwRCwweDJELDB4MjUsMHg3NiwweEZFLDB4OTYsMHhFRSwweDc3
LDB4REQsMHg3NSwweDVELAorICAgIDB4OTYsMHhFRSwweDc2LDB4RUUsMHhGOCwweEMyLDB4OEEs
MHhBMCwweDk2LDB4RUUsMHgzNSwweEU2LDB4N0EsMHg4OCwweEEyLDB4RTIsCisgICAgMHg3Niww
eEVFLDB4OTMsMHhENSwweEQ3LDB4RjgsMHhFMCwweEZBLDB4MTUsMHhFNiwweEIzLDB4RDUsMHhB
QSwweDhCLDB4QUYsMHhENywKKyAgICAweEY0LDB4REQsMHg5MiwweEQ1LDB4N0EsMHg4MCwweDBB
LDB4QUEsMHhEMywweERELDB4Q0MsMHg5QiwweDVBLDB4RTAsMHg4MCwweDAwLAorICAgIDB4NjYs
MHg3MiwweDQ1LDB4NzIsMHhDMywweDJCLDB4MDIsMHg4MywweDY2LDB4N0EsMHg0NiwweDcyLDB4
QkEsMHhCNCwweEZELDB4NDIsCisgICAgMHg4NywweDdBLDB4NDYsMHg3MiwweEVBLDB4QkEsMHhE
QiwweDdGLDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhGRCwweEVELDB4QkEsMHhCQiwKKyAgICAweDY2
LDB4NzIsMHgyNSwweDcyLDB4MUEsMHhBQSwweDg4LDB4ODIsMHg4NywweDdBLDB4NDYsMHg3Miww
eEY1LDB4RkUsMHhCMywweEVBLAorICAgIDB4ODYsMHg3QSwweDQ2LDB4NzIsMHg3RCwweEZELDB4
RUUsMHhGQywweDg3LDB4N0EsMHgyNSwweDZBLDB4RUYsMHhBRiwweEFBLDB4ODgsCisgICAgMHg2
NiwweDdBLDB4NDYsMHg3MiwweDc5LDB4QjgsMHg3NiwweEMyLDB4NjYsMHg3QSwweDQ2LDB4NzIs
MHhFQywweDRDLDB4NkMsMHhDNCwKKyAgICAweDY2LDB4N0EsMHg0NiwweDcyLDB4MTcsMHg3Miww
eDhGLDB4QzYsMHg4NywweDdBLDB4NDYsMHg3MiwweDc3LDB4N0QsMHhCRSwweEVBLAorICAgIDB4
ODcsMHg3QSwweDQ2LDB4NzIsMHg1RiwweDdELDB4QjUsMHg4QSwweDg3LDB4N0EsMHgyNSwweDcy
LDB4RkQsMHhBRiwweEVCLDB4OEEsCisgICAgMHhBNywweDgyLDB4NDYsMHg3MiwweDBBLDB4QkYs
MHg3RCwweDZGLDB4RTgsMHg4QSwweDQ2LDB4NzIsMHgwQSwweDBGLDB4QjcsMHgxRiwKKyAgICAw
eDA5LDB4OEIsMHhFNSwweDY5LDB4NzAsMHg3MCwweDc4LDB4NzgsMHhBNCwweDU5LDB4QzIsMHgz
OCwweEY4LDB4NUUsMHg3QywweDc4LAorICAgIDB4QzIsMHgzMCwweDgyLDB4MjgsMHg2MCwweEYw
LDB4QzgsMHhDMCwweEUyLDB4MzAsMHg4MiwweDIwLDB4RDUsMHg3RiwweEJGLDB4QUUsCisgICAg
MHhDMiwweDI4LDB4QTIsMHgyOCwweEZGLDB4RkYsMHg1MiwweDNBLDB4QzIsMHgzMCwweEEyLDB4
MjgsMHgwQSwweEEzLDB4N0IsMHg1QywKKyAgICAweDAzLDB4MzksMHhBMiwweDI4LDB4OTcsMHhC
RCwweDI1LDB4MkQsMHg2NSwweDQ5LDB4RTIsMHgzOCwweENELDB4RkIsMHg2MiwweDYyLAorICAg
IDB4MjQsMHg0MSwweEMyLDB4MzgsMHgzRiwweDI3LDB4QjcsMHgyRiwweDY0LDB4NTEsMHgwMyww
eDQxLDB4QTAsMHgwRiwweDAxLDB4ODMsCisgICAgMHhDNSwweDU5LDB4MjMsMHg0OSwweDJELDB4
RkYsMHg3QSwweDZBLDB4ODUsMHg1MSwweEUzLDB4MzgsMHg3OCwweDVBLDB4RkIsMHhGRSwKKyAg
ICAweDI0LDB4NDEsMHhFMiwweDM4LDB4MzIsMHhGNSwweEI1LDB4QUEsMHg2NSwweDQ5LDB4RTMs
MHgzOCwweEEyLDB4QTMsMHhGRiwweDU1LAorICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHhGMyww
eDVGLDB4REQsMHgzOSwweDY0LDB4NDksMHhFMywweDM4LDB4QkUsMHhGRiwweDdBLDB4NjAsCisg
ICAgMHgyNCwweDQ5LDB4QTIsMHgzMCwweDAwLDB4QUIsMHhCNywweEE3LDB4QzUsMHg1OSwweDQ0
LDB4NDksMHhFRCwweEFELDB4QUIsMHgwOSwKKyAgICAweDg0LDB4NTEsMHgwMiwweDQxLDB4RUEs
MHhFOCwweDdBLDB4N0MsMHg4NSwweDUxLDB4RTIsMHgzOCwweDJGLDB4MkYsMHhCRiwweEFELAor
ICAgIDB4MjYsMHg3MiwweDg1LDB4NTksMHg5NSwweEQ1LDB4QUIsMHgwMywweDA2LDB4NkEsMHhD
NSwweDY5LDB4MkIsMHg4RCwweEUyLDB4NjAsCisgICAgMHhBOCwweDgyLDB4QzUsMHg2MSwweDAy
LDB4ODIsMHhGRCwweDU1LDB4QTgsMHg4MiwweEM1LDB4NjksMHgwOCwweDhBLDB4QUYsMHhBRCwK
KyAgICAweDg4LDB4N0EsMHhBNSwweDYxLDB4RTgsMHhGRSwweEZBLDB4N0UsMHgwNiwweDZBLDB4
NDMsMHg1MSwweEZFLDB4QTgsMHg4MCwweDgyLAorICAgIDB4QzYsMHg1OSwweDY0LDB4NTEsMHhC
RCwweEFBLDB4ODAsMHg2OCwweEU2LDB4NjEsMHg4NSwweDUxLDB4QUEsMHhCQSwweEYwLDB4RkQs
CisgICAgMHgwNiwweDZBLDB4ODQsMHg1MSwweDJBLDB4MkYsMHgzNSwweEI1LDB4NEIsMHg5Myww
eEU1LDB4NjEsMHgyQiwweEFGLDB4QkQsMHhENSwKKyAgICAweDcyLDB4RDUsMHhBOCwweDgyLDB4
MkYsMHhCNSwweEQ1LDB4NTUsMHhGNCwweEU1LDB4Q0MsMHhBMywweDAwLDB4MDIsMHgwQiwweDI5
LAorICAgIDB4RjQsMHhFNSwweEIzLDB4REQsMHhGMCwweEQwLDB4NzgsMHhCQiwweEQzLDB4REQs
MHg3MiwweEQ1LDB4MjAsMHgyOCwweEEwLDB4NzgsCisgICAgMHgxNCwweEU2LDB4OTMsMHhENSww
eDgyLDB4MkEsMHhBRiwweEI1LDB4MzUsMHhFNiwweEQzLDB4REQsMHhERiwweEI3LDB4MzcsMHgy
RiwKKyAgICAweDU1LDB4RUUsMHhCMywweERELDB4ODIsMHg4MCwweEE4LDB4N0EsMHgzNSwweEU2
LDB4RDMsMHhERCwweEY3LDB4QkUsMHgwMCwweDAzLAorICAgIDB4MzUsMHhFNiwweEY0LDB4REQs
MHhCNSwweEZFLDB4QkUsMHhDMCwweDM1LDB4RTYsMHhEMywweERELDB4N0EsMHhGQSwweDhBLDB4
MjAsCisgICAgMHg5NiwweEVFLDB4RjQsMHhERCwweDJELDB4MjUsMHgyRiwweDJGLDB4QjcsMHhG
NiwweDk2LDB4RUUsMHhGNywweEZGLDB4NUYsMHhERiwKKyAgICAweDk2LDB4RUUsMHg3NiwweEVF
LDB4RjAsMHhGMCwweEU4LDB4QTAsMHg3NSwweEVFLDB4QjMsMHhENSwweEU4LDB4N0MsMHg3OCww
eDYwLAorICAgIDB4RDMsMHhERCwweDkyLDB4RDUsMHhBOCwweDdFLDB4RUYsMHg2QSwweEIzLDB4
RDUsMHg1MiwweEQ1LDB4MDIsMHhBMiwweEVBLDB4QUEsCisgICAgMHhCMywweEQ1LDB4NzIsMHhE
NSwweDAwLDB4OEEsMHhGRiwweDVGLDB4OTIsMHhENSwweDUxLDB4Q0QsMHgwMCwweEFDLDB4N0Us
MHhCNywKKyAgICAweDY3LDB4N0EsMHhFNSwweDY5LDB4ODAsMHgyMiwweDIyLDB4M0QsMHg2Nyww
eDdBLDB4NDcsMHg3MiwweEU4LDB4MjIsMHgzRiwweDRELAorICAgIDB4ODcsMHg3QSwweDQ2LDB4
NzIsMHhFRiwweEE3LDB4QkYsMHhERiwweDQ3LDB4N0EsMHg2NiwweDcyLDB4N0QsMHhGNywweDU2
LDB4NzcsCisgICAgMHg4NywweDgyLDB4NjYsMHg3MiwweDVELDB4NUQsMHhENywweERBLDB4ODcs
MHg3QSwweDQ2LDB4NzIsMHhFQSwweEFGLDB4M0UsMHhGRSwKKyAgICAweDg2LDB4N0EsMHg2Niww
eDcyLDB4N0UsMHhFRCwweENCLDB4QTEsMHg4NiwweDdBLDB4NDYsMHg3MiwweEJELDB4QUEsMHhB
QSwweDJBLAorICAgIDB4ODYsMHg3QSwweDY2LDB4NzIsMHg3RCwweDc5LDB4RjAsMHhCNCwweDg3
LDB4N0EsMHg0NiwweDcyLDB4RUEsMHhGMCwweEVBLDB4RjgsCisgICAgMHg4NywweDdBLDB4NDYs
MHg3MiwweEZCLDB4RkUsMHhCMiwweDJCLDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhBRSwweENFLDB4
QkUsMHhCRSwKKyAgICAweEE3LDB4ODIsMHg0NiwweDcyLDB4RkUsMHhCRiwweDlGLDB4MkEsMHhB
NywweDgyLDB4NjYsMHg3QSwweDc1LDB4NTcsMHhCRiwweEZGLAorICAgIDB4ODcsMHg3QSwweDQ1
LDB4N0EsMHhBRiwweDJCLDB4MjAsMHhBMCwweEVDLDB4QUIsMHg4NywweDdBLDB4OTUsMHhCNSww
eDJELDB4MEQsCisgICAgMHhDQiwweEEzLDB4RTUsMHg2OSwweDdFLDB4N0MsMHg3OCwweDc4LDB4
QTUsMHg1OSwweEUyLDB4MzgsMHg1QywweDU4LDB4NTgsMHhGOCwKKyAgICAweEUzLDB4MzgsMHhB
MiwweDI4LDB4N0QsMHg1QiwweEZFLDB4RjgsMHhFMywweDMwLDB4QTIsMHgyOCwweEJGLDB4OEIs
MHhBQSwweEZELAorICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhCRSwweEY4LDB4RjgsMHhGRSww
eEUyLDB4MzAsMHg4MSwweDI4LDB4RkEsMHhGRiwweDNFLDB4MkQsCisgICAgMHg0NCwweDQxLDB4
QTIsMHgyOCwweEJELDB4MkYsMHgyQiwweDAyLDB4ODUsMHg0OSwweEUzLDB4MzgsMHg2MywweDdF
LDB4NUYsMHg1NywKKyAgICAweDg1LDB4NTEsMHhFMywweDM4LDB4MjUsMHgyRCwweDBGLDB4QUQs
MHg4NSwweDUxLDB4RTIsMHgzOCwweEFBLDB4QjgsMHhGOCwweDdBLAorICAgIDB4ODUsMHg1MSww
eEUyLDB4MzgsMHg4MCwweEZBLDB4NTUsMHg1NSwweDI0LDB4MzksMHhDMiwweDM4LDB4QkUsMHhE
NCwweEJCLDB4NUYsCisgICAgMHg0NCwweDQxLDB4RTMsMHgzOCwweDBCLDB4Q0YsMHhENSwweDVG
LDB4NDQsMHg0OSwweEUyLDB4MzgsMHg1QywweERBLDB4RTksMHg5NywKKyAgICAweDg1LDB4NDks
MHgwMywweDQxLDB4M0QsMHhCNSwweERGLDB4NUYsMHg4NSwweDUxLDB4RTMsMHgzOCwweDU4LDB4
RkUsMHhBQSwweEFBLAorICAgIDB4NDUsMHg0OSwweEMzLDB4MzgsMHhGNSwweEZGLDB4RUUsMHgw
OCwweEE1LDB4NTEsMHgwMywweDM5LDB4MjksMHhCRCwweEZELDB4QkUsCisgICAgMHg4NSwweDUx
LDB4MDMsMHg0MSwweDc4LDB4RkEsMHhGQSwweEFBLDB4RTUsMHg2MSwweDAzLDB4NDEsMHhCRCww
eEFELDB4MkYsMHgyQiwKKyAgICAweDQ3LDB4NzIsMHhBNCwweDU5LDB4MEQsMHhCRiwweEZCLDB4
N0YsMHgyNiwweDZBLDB4NjQsMHg1MSwweEY4LDB4N0MsMHg3RiwweEY1LAorICAgIDB4QzYsMHg2
MSwweDQzLDB4NTEsMHg4QSwweEFELDB4ODUsMHgyRSwweDA2LDB4NkEsMHg4NSwweDU5LDB4QUYs
MHhDRCwweDhGLDB4MDIsCisgICAgMHhFNiwweDY5LDB4NjQsMHg1MSwweEMwLDB4RTIsMHhGNyww
eERELDB4QTUsMHg1OSwweDQ0LDB4NDksMHgwQiwweDc3LDB4REYsMHhGQiwKKyAgICAweEE1LDB4
NTksMHg0NCwweDQ5LDB4RjIsMHg3RiwweEZELDB4NTUsMHhDNiwweDU5LDB4NDQsMHg0OSwweEJE
LDB4MzUsMHgzNSwweEJCLAorICAgIDB4RTYsMHg1OSwweDg1LDB4NTksMHhGNiwweEMwLDB4ODAs
MHhCMiwweEU2LDB4NjEsMHhBNSwweDU5LDB4RTIsMHhGNSwweERGLDB4RjksCisgICAgMHhDOSww
eDgyLDB4QTUsMHg1OSwweDJCLDB4QUQsMHhCNywweEFGLDB4MTAsMHhDRCwweEE4LDB4ODIsMHgw
QiwweDJELDB4QkQsMHhGNSwKKyAgICAweEQzLDB4REQsMHg0RSwweEI0LDB4MDAsMHgwMCwweDAz
LDB4MkQsMHhCMywweERELDB4NzIsMHhENSwweERDLDB4NTcsMHg5NiwweEZFLAorICAgIDB4RjQs
MHhERCwweDcyLDB4RDUsMHgyRCwweEFCLDB4MkIsMHgyQiwweDM1LDB4RTYsMHhEMywweERELDB4
OEIsMHg3QSwweDU1LDB4QkYsCisgICAgMHhGNCwweERELDB4MTAsMHhDNSwweEEwLDB4RTAsMHhF
MCwweDcwLDB4MTQsMHhFNiwweDEwLDB4QzUsMHgwMiwweDAyLDB4MEIsMHgyRCwKKyAgICAweDc2
LDB4RUUsMHgxNCwweEU2LDB4RTksMHgyQSwweEFBLDB4RkEsMHg1NSwweEVFLDB4MTQsMHhFNiww
eEVBLDB4RjgsMHhGRSwweDdGLAorICAgIDB4QjcsMHhGNiwweDE0LDB4RTYsMHhCRCwweDI1LDB4
MjUsMHgyRCwweEI3LDB4RjYsMHg3NiwweEVFLDB4RjgsMHhCQSwweEZBLDB4NUUsCisgICAgMHg5
NiwweEVFLDB4NTUsMHhFRSwweDIwLDB4Q0EsMHhCQSwweEZELDB4NzYsMHhFRSwweEY0LDB4REQs
MHg2MCwweDgwLDB4QTAsMHhBMiwKKyAgICAweDU1LDB4RUUsMHhCMywweEQ1LDB4NTcsMHg1Riww
eDc4LDB4NzgsMHhCMiwweEQ1LDB4NzMsMHhDRCwweEJBLDB4RkUsMHhFQSwweDMyLAorICAgIDB4
OTIsMHhENSwweDcyLDB4Q0QsMHhGOCwweEVDLDB4NjgsMHhGQSwweDkyLDB4RDUsMHgzMSwweEM1
LDB4RkYsMHhGRSwweDdBLDB4NzIsCisgICAgMHhDNCwweDYxLDB4NDIsMHg1OSwweDNGLDB4RkYs
MHhCRiwweEZGLDB4NjYsMHg3MiwweDY0LDB4NTksMHgwQSwweEJELDB4RDUsMHg1NSwKKyAgICAw
eDg2LDB4N0EsMHg0NCwweDU5LDB4ODIsMHgyMiwweEFGLDB4RjUsMHg4NywweDdBLDB4QzQsMHg2
MSwweDBBLDB4ODAsMHhBQSwweEFELAorICAgIDB4ODYsMHg3QSwweDI2LDB4NzIsMHgyOCwweEFB
LDB4QUEsMHhBOSwweDg3LDB4N0EsMHgyNSwweDcyLDB4QUEsMHhBMiwweEFBLDB4OEIsCisgICAg
MHg4NywweDdBLDB4NjYsMHg3MiwweEExLDB4MEQsMHhCQiwweDYzLDB4ODYsMHg3QSwweDY2LDB4
NzIsMHgyNywweEMwLDB4QjgsMHgyQywKKyAgICAweDg3LDB4N0EsMHg2NiwweDcyLDB4QkIsMHgy
OCwweDAyLDB4QUMsMHg4NiwweDdBLDB4NDYsMHg3MiwweEI4LDB4QzAsMHgwOCwweEI4LAorICAg
IDB4ODcsMHg3QSwweDI1LDB4N0EsMHhBMiwweEEyLDB4QzIsMHgyMiwweEE3LDB4N0EsMHg0Niww
eDdBLDB4N0EsMHhCRiwweEJCLDB4MkUsCisgICAgMHg4NywweDdBLDB4NjYsMHg3QSwweDMyLDB4
MDgsMHhCMCwweEQzLDB4QTcsMHg4MiwweDY2LDB4N0EsMHg2NywweEJFLDB4QkYsMHhBRSwKKyAg
ICAweDZBLDB4OUIsMHg4NywweDdBLDB4NTUsMHhENSwweEQ1LDB4MTUsMHgyRSwweEI0LDB4MDgs
MHg4QiwweDJELDB4ODksMHg4MywweDIyLAorICAgIDB4OEEsMHg5QiwweDA1LDB4NkEsMHg3OCww
eDU4LDB4NUMsMHg3QywweEU2LDB4NjEsMHgwMiwweDQxLDB4RkEsMHg3OCwweDc4LDB4NzgsCisg
ICAgMHgyMywweDQxLDB4QTIsMHgyOCwweDc4LDB4N0EsMHhGQSwweDZBLDB4QzIsMHgzMCwweEEy
LDB4MjgsMHg5QiwweDNFLDB4NTcsMHg3RCwKKyAgICAweEMyLDB4MjgsMHg4MSwweDI4LDB4Rjgs
MHhFQSwweEI2LDB4QkIsMHhFMywweDM4LDB4ODIsMHgyOCwweDM3LDB4QUYsMHhBRiwweEFGLAor
ICAgIDB4MjQsMHg0MSwweEEyLDB4MzAsMHg4MCwweEFBLDB4RkYsMHhENywweDQ0LDB4NDEsMHhD
MiwweDMwLDB4RjcsMHhGRCwweDhCLDB4QzksCisgICAgMHgyNCwweDQxLDB4QzIsMHgzOCwweDJC
LDB4QTksMHhFRiwweDJCLDB4NDQsMHg0OSwweEMyLDB4MzgsMHg2OCwweEZFLDB4RjcsMHhCRSwK
KyAgICAweDI0LDB4NDEsMHhDMiwweDMwLDB4RTUsMHhCNywweEE3LDB4MEMsMHgwNCwweDQxLDB4
QTIsMHgzMCwweEY4LDB4QzAsMHgwMCwweEE4LAorICAgIDB4RTMsMHgzMCwweDgyLDB4MzAsMHhB
MywweEVGLDB4REYsMHhCRSwweDIzLDB4NDEsMHhDMiwweDM4LDB4MkIsMHgyOSwweEFCLDB4MkEs
CisgICAgMHg0NCwweDQxLDB4MDMsMHg0MSwweEVCLDB4NzIsMHg4MiwweDBBLDB4NDQsMHg0OSww
eEUzLDB4MzgsMHgwQSwweDgzLDB4QUUsMHg3RiwKKyAgICAweDg2LDB4NDksMHgwMywweDQxLDB4
QUYsMHgyNywweDJELDB4RkQsMHg4NSwweDUxLDB4MDMsMHg0MSwweEUwLDB4RjgsMHhEQywweDVG
LAorICAgIDB4ODUsMHg1MSwweDI0LDB4NDEsMHg4RCwweEVGLDB4RUIsMHg3RiwweDA2LDB4NjIs
MHgwNCwweDQxLDB4MkYsMHgzRiwweEI1LDB4RjUsCisgICAgMHhFNSwweDYxLDB4NDQsMHg0OSww
eEU4LDB4RUUsMHhERiwweDU3LDB4QTUsMHg1OSwweDIzLDB4NDksMHgwQSwweDI4LDB4QkYsMHg5
NSwKKyAgICAweEU2LDB4NjEsMHg4NSwweDU5LDB4M0YsMHhCQSwweEFBLDB4N0YsMHgyNywweDcy
LDB4QTUsMHg1OSwweEUwLDB4OEIsMHhBRiwweERELAorICAgIDB4RTYsMHg2MSwweDAzLDB4NDEs
MHhGRSwweDVFLDB4RjgsMHhBMiwweDg1LDB4NTEsMHgyMywweDQ5LDB4ODgsMHg4MywweDM1LDB4
RkUsCisgICAgMHg2NCwweDQ5LDB4NDQsMHg0OSwweEE4LDB4ODEsMHg4MywweDNELDB4QzYsMHg1
OSwweDY0LDB4NDksMHhGOSwweEUyLDB4MDEsMHg1RiwKKyAgICAweEE1LDB4NTksMHg0NCwweDQ5
LDB4ODgsMHhGQSwweDlBLDB4NUUsMHhFNSwweDYxLDB4NDMsMHg0OSwweDgzLDB4QUQsMHhGRiww
eEVELAorICAgIDB4NjcsMHg3MiwweEM1LDB4NTksMHgwOSwweDBCLDB4MkQsMHgyNSwweDI5LDB4
OEIsMHg4NywweDdBLDB4MkIsMHhBRiwweEZELDB4RkQsCisgICAgMHgxMSwweENELDB4QzgsMHg4
MiwweDBCLDB4MjUsMHhCRCwweEQ1LDB4MTQsMHhFNiwweEQwLDB4QzQsMHhBQSwweEEyLDB4MEEs
MHgwOSwKKyAgICAweDU2LDB4RUUsMHhCMywweEQ1LDB4QUQsMHhBRiwweEFBLDB4MEEsMHg1NSww
eEVFLDB4RjMsMHhERCwweERGLDB4QkYsMHhDQSwweEEwLAorICAgIDB4MTQsMHhFNiwweEYwLDB4
QzQsMHg1OCwweDU4LDB4REMsMHhGRSwweDE0LDB4RTYsMHhGMCwweEM0LDB4MkQsMHgyRiwweDNG
LDB4M0YsCisgICAgMHg3NiwweEVFLDB4MTQsMHhFNiwweEY4LDB4NkEsMHhGQSwweEVBLDB4OTYs
MHhFRSwweDE0LDB4RTYsMHhENywweEQ1LDB4QkQsMHgyRiwKKyAgICAweDk2LDB4RUUsMHgzNSww
eEU2LDB4MDksMHgwQSwweDAyLDB4QTAsMHg5NiwweEVFLDB4NTUsMHhFNiwweEY4LDB4NUUsMHhE
RSwweDVGLAorICAgIDB4NzUsMHhFRSwweDU1LDB4RTYsMHhFRiwweEJGLDB4QkUsMHg1RSwweDc1
LDB4RUUsMHg1NSwweEU2LDB4Q0IsMHhFQiwweEZBLDB4QkQsCisgICAgMHg3NiwweEVFLDB4RDMs
MHhERCwweDdBLDB4QUEsMHhBMCwweEEwLDB4NTUsMHhFRSwweDkyLDB4RDUsMHg1NywweDVFLDB4
RTgsMHg4MCwKKyAgICAweDE0LDB4RTYsMHg5MiwweEQ1LDB4NzUsMHg1NSwweDVGLDB4N0MsMHhC
MiwweEQ1LDB4NTEsMHhDRCwweERFLDB4REUsMHhGOCwweEVBLAorICAgIDB4ODQsMHg2MSwweDQz
LDB4NTksMHhCQiwweEZBLDB4QkUsMHg3QSwweDg0LDB4NjEsMHg0MywweDU5LDB4Q0EsMHg2Niww
eDhGLDB4RUQsCisgICAgMHg0MywweDYxLDB4ODQsMHg1OSwweERFLDB4REQsMHhGRiwweEZBLDB4
QzQsMHg2MSwweDYzLDB4NTksMHgzNSwweEJELDB4RjUsMHg3RCwKKyAgICAweDQ2LDB4NzIsMHg0
MywweDUxLDB4MDIsMHhGRiwweEQ1LDB4NTUsMHg2NiwweDcyLDB4NDMsMHg1MSwweDAwLDB4MEEs
MHhCRiwweDU1LAorICAgIDB4QzcsMHg3QSwweEE1LDB4NjEsMHhBOCwweEFBLDB4QUEsMHhGNSww
eDg3LDB4N0EsMHg0NiwweDcyLDB4QTAsMHhDMiwweDgwLDB4ODksCisgICAgMHg4NywweDdBLDB4
NjYsMHg3QSwweEJFLDB4QUUsMHhBNiwweEFELDB4ODcsMHg3QSwweDY2LDB4N0EsMHg5RSwweEJF
LDB4QUYsMHg0NywKKyAgICAweDg3LDB4N0EsMHg2NiwweDdBLDB4QUUsMHg2OCwweDhGLDB4QTAs
MHhBOCwweDgyLDB4NjcsMHg3QSwweEZCLDB4QUYsMHhBRiwweEJCLAorICAgIDB4QTcsMHg4Miww
eDY3LDB4N0EsMHhGRCwweEZCLDB4RUEsMHhCRiwweEE3LDB4ODIsMHg2NywweDdBLDB4QUUsMHhF
RiwweEVGLDB4RUUsCisgICAgMHhDQiwweEEzLDB4ODcsMHg4MiwweDM1LDB4MkQsMHgwOSwweDAz
LDB4MEQsMHhBQywweENDLDB4QUIsMHhGQSwweDVELDB4RjYsMHg1NSwKKyAgICAweEFBLDB4QTMs
MHhBNCwweDU5LDB4N0MsMHg3OCwweDc4LDB4NzAsMHhBNSwweDU5LDB4MDIsMHg0MSwweDc4LDB4
RkEsMHhGQSwweDZBLAorICAgIDB4MDIsMHg0MSwweEMyLDB4MzAsMHg3QSwweDVBLDB4NUEsMHg3
OCwweEMyLDB4MzAsMHg4MiwweDI4LDB4QUIsMHhBRiwweDAyLDB4MDgsCisgICAgMHhFMiwweDMw
LDB4QTIsMHgyOCwweEQ1LDB4QjUsMHhBQSwweEE4LDB4NDQsMHg0MSwweEEyLDB4MjgsMHhERCww
eEZELDB4QUYsMHgwMywKKyAgICAweDIzLDB4NDEsMHhBMSwweDMwLDB4RDcsMHhFRiwweDJBLDB4
MDAsMHgyNCwweDQxLDB4RTMsMHgzOCwweEFGLDB4MEEsMHgwMCwweDIyLAorICAgIDB4MjQsMHg0
MSwweEUzLDB4MzgsMHgwQiwweDBBLDB4MDIsMHg4MCwweDQ0LDB4NDEsMHhFMywweDM4LDB4QkEs
MHg2MCwweDVGLDB4RDcsCisgICAgMHg2NCwweDQ5LDB4MjQsMHg0MSwweDY2LDB4Q0IsMHg0MSww
eDRELDB4NDQsMHg0MSwweEMzLDB4MzgsMHg3NywweDc3LDB4QkYsMHhBMCwKKyAgICAweDIzLDB4
NDEsMHhBMiwweDMwLDB4QjUsMHhCRiwweEFBLDB4MDAsMHg2NSwweDQ5LDB4RTMsMHgzOCwweEFG
LDB4MEEsMHgyRCwweEI1LAorICAgIDB4MjMsMHg0MSwweEUzLDB4MzgsMHhBOCwweEE4LDB4Q0Ms
MHg3MiwweDI0LDB4NDEsMHhFMywweDM4LDB4RkYsMHgyRiwweDJGLDB4M0QsCisgICAgMHgyNCww
eDQxLDB4RTMsMHgzOCwweDhCLDB4RjcsMHhCQSwweEUwLDB4NjQsMHg0OSwweDAzLDB4NDEsMHg1
RCwweEZELDB4QkQsMHgwMywKKyAgICAweDY1LDB4NTEsMHgwMywweDQxLDB4REYsMHhFOSwweEVG
LDB4RTgsMHg0NCwweDQ5LDB4RTMsMHg0MCwweDI3LDB4RUYsMHhBQiwweDJFLAorICAgIDB4MjMs
MHg0OSwweEUzLDB4NDAsMHg4MCwweEUyLDB4NTAsMHhGOCwweDg1LDB4NTEsMHhFMiwweDQwLDB4
QTcsMHhCNywweEJELDB4QjUsCisgICAgMHhBNSwweDU5LDB4NDQsMHg0OSwweDAyLDB4QUEsMHhF
QSwweDdBLDB4QTUsMHg1OSwweDAzLDB4NDEsMHhBMiwweEVBLDB4NzcsMHhENSwKKyAgICAweEE1
LDB4NTksMHgwMywweDM5LDB4ODIsMHhBRSwweEZGLDB4RDUsMHg2NCwweDQ5LDB4MDMsMHg0MSww
eDJBLDB4MkMsMHgzNiwweDlELAorICAgIDB4NjQsMHg0OSwweDI0LDB4NDEsMHgyRSwweEI3LDB4
REIsMHhFOCwweDg1LDB4NDksMHgyMywweDQxLDB4MDIsMHhBRSwweEJGLDB4NzcsCisgICAgMHg2
NCwweDQ5LDB4MDMsMHg0MSwweEU4LDB4RTgsMHhERiwweDdGLDB4ODQsMHg1MSwweDIzLDB4NDEs
MHgyNSwweDI1LDB4QkQsMHgyOSwKKyAgICAweDQ3LDB4NzIsMHhBNCwweDUxLDB4QUQsMHhBNSww
eEFGLDB4MkQsMHg4NywweDdBLDB4QzYsMHg2MSwweDBCLDB4QjUsMHhCRiwweEJBLAorICAgIDB4
RTgsMHg4MiwweDY3LDB4N0EsMHgyMiwweDhBLDB4QTksMHhBOSwweEQzLDB4REQsMHgwOSwweDhC
LDB4MDksMHgwRCwweDJELDB4MzUsCisgICAgMHg1NSwweEVFLDB4RjQsMHhFNSwweDJELDB4MEQs
MHhBMiwweEZGLDB4MzUsMHhFRSwweDkyLDB4RDUsMHgwMCwweEUwLDB4NzgsMHg3RiwKKyAgICAw
eDkyLDB4RDUsMHhGMCwweEM0LDB4REMsMHhGRSwweEY3LDB4RkYsMHhEMywweERELDB4MTAsMHhD
NSwweDM1LDB4QkQsMHhCRiwweEJELAorICAgIDB4NzYsMHhFRSwweEQ0LDB4REQsMHgyMiwweDIz
LDB4MEIsMHgwOSwweEI3LDB4RjYsMHg3NiwweEVFLDB4QjUsMHhBRiwweEJGLDB4QUIsCisgICAg
MHg5NiwweEVFLDB4NzYsMHhFRSwweDdDLDB4NTgsMHg1QywweDdFLDB4NzUsMHhFRSwweDU1LDB4
RTYsMHhCRSwweEYwLDB4RkIsMHhGRSwKKyAgICAweDc1LDB4RUUsMHg1NSwweEU2LDB4RkMsMHg1
RiwweEZELDB4NTcsMHg3NSwweEVFLDB4MzQsMHhFNiwweDBGLDB4QUUsMHhBRSwweEZBLAorICAg
IDB4NzYsMHhFRSwweDU1LDB4RTYsMHg3RSwweDVBLDB4RkYsMHhFQiwweDc2LDB4RUUsMHg1NSww
eEU2LDB4NzcsMHg3RiwweDVELDB4MDgsCisgICAgMHg3NiwweEVFLDB4MTQsMHhFNiwweDU3LDB4
QkUsMHhBRSwweDAwLDB4NTYsMHhFRSwweEIzLDB4RDUsMHg1NywweEJBLDB4ODAsMHgwMCwKKyAg
ICAweDYzLDB4NTksMHgyMywweDUxLDB4RTIsMHgzQiwweDNBLDB4M0MsMHg4NCwweDYxLDB4NDMs
MHg1OSwweEJFLDB4REIsMHhFOCwweDZBLAorICAgIDB4ODQsMHg1OSwweDQzLDB4NTksMHhGQSww
eEVBLDB4MEEsMHg4MywweDg0LDB4NjEsMHgyMiwweDUxLDB4RTAsMHg3QSwweERFLDB4QkIsCisg
ICAgMHg0MywweDUxLDB4MjIsMHg1MSwweDRCLDB4OEMsMHg2QywweDFBLDB4NjQsMHg1OSwweDAy
LDB4NDksMHhGRiwweDk3LDB4QUYsMHhBMiwKKyAgICAweDg0LDB4NjEsMHgyMywweDUxLDB4QUQs
MHhCNywweDI3LDB4MkIsMHgyNiwweDcyLDB4ODQsMHg1OSwweDBBLDB4RDUsMHg1NSwweDU1LAor
ICAgIDB4NjYsMHg3QSwweDg0LDB4NjEsMHgwMCwweDBCLDB4RDUsMHg1NSwweDY3LDB4N0EsMHg4
NCwweDYxLDB4MDAsMHgwMCwweDAyLDB4QjUsCisgICAgMHhBNywweDgyLDB4NDcsMHg3QSwweEFB
LDB4MkEsMHhCQiwweEJELDB4QTcsMHg4MiwweDY3LDB4N0EsMHhFQiwweEFGLDB4QjcsMHhCQiwK
KyAgICAweEE3LDB4ODIsMHg4NywweDdBLDB4RkEsMHhGMywweDFGLDB4RjUsMHhBQiwweEEzLDB4
ODcsMHg4MiwweEQ1LDB4OTUsMHgzRCwweDJELAorICAgIDB4RUMsMHhBQiwweDhBLDB4OUIsMHhB
OSwweEUzLDB4RkEsMHhGQSwweENCLDB4QTMsMHhBQiwweEEzLDB4MEQsMHhGQSwweEZELDB4RkQs
CisgICAgMHhBQiwweEEzLDB4MDUsMHg2QSwweDcwLDB4NzgsMHg3MCwweEUwLDB4QzUsMHg1OSww
eEUyLDB4NDAsMHhGRSwweERFLDB4NzgsMHg3OCwKKyAgICAweDQ0LDB4NDEsMHhDMiwweDM4LDB4
NUEsMHg3MiwweEZCLDB4NUYsMHhFMywweDM4LDB4QTIsMHgzMCwweEVGLDB4Q0QsMHhGRCwweEFB
LAorICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHhBRiwweEFGLDB4MjUsMHgwRSwweDY0LDB4NDks
MHgwMywweDQxLDB4QTcsMHhBRiwweDhCLDB4MEIsCisgICAgMHg2NSwweDQ5LDB4MDMsMHg0MSww
eEZFLDB4N0EsMHhBQSwweDJBLDB4NjUsMHg0OSwweDAzLDB4NDEsMHhGRiwweEZCLDB4RjgsMHhE
QywKKyAgICAweDI0LDB4NDEsMHhFMywweDM4LDB4NDAsMHhGNywweDlDLDB4QTAsMHg4NSwweDUx
LDB4RTMsMHgzOCwweERELDB4QUQsMHhDMiwweDAyLAorICAgIDB4ODUsMHg1MSwweDAzLDB4NDEs
MHhFNywweEI3LDB4RkYsMHgyRiwweDg1LDB4NTEsMHgyNCwweDQ5LDB4RkIsMHg3QiwweEMyLDB4
MDAsCisgICAgMHg4NCwweDUxLDB4MjQsMHg0OSwweDdFLDB4QTksMHgyRCwweDJFLDB4NjUsMHg0
OSwweEUzLDB4MzgsMHhCNSwweEI3LDB4RkUsMHg1QywKKyAgICAweDIzLDB4NDEsMHhFMywweDM4
LDB4RTAsMHhFMCwweEZCLDB4REQsMHgyNCwweDQxLDB4RTMsMHgzOCwweDJGLDB4MjYsMHhFRiww
eEZFLAorICAgIDB4MjQsMHg0MSwweEUzLDB4MzgsMHhGOCwweDlFLDB4RkEsMHhGQSwweEE1LDB4
NTEsMHgwMywweDQxLDB4MjksMHgwOSwweDBELDB4MkQsCisgICAgMHg4NSwweDUxLDB4RTIsMHgz
OCwweDc4LDB4RkEsMHhGOCwweEZBLDB4NjUsMHg1MSwweEUzLDB4MzgsMHhBRiwweDBGLDB4QkYs
MHhGRCwKKyAgICAweDg1LDB4NTksMHgwMywweDQxLDB4N0UsMHhGRSwweEJGLDB4MkIsMHg2NCww
eDQ5LDB4MDMsMHg0MSwweDJELDB4MkUsMHgzMCwweDJDLAorICAgIDB4ODUsMHg1MSwweDIzLDB4
NDEsMHg1OCwweDdBLDB4RTIsMHhGMywweDQ0LDB4NDksMHgwMywweDQxLDB4RTIsMHgwMCwweDM3
LDB4MUIsCisgICAgMHg0MywweDQxLDB4RTMsMHgzOCwweEZBLDB4RkIsMHhFQSwweEVFLDB4MjMs
MHg0MSwweEMyLDB4MzgsMHgyQSwweEJGLDB4MjksMHgyQiwKKyAgICAweDY0LDB4NDksMHgyMyww
eDQxLDB4QTIsMHhFQiwweEQ1LDB4NUQsMHg0NCwweDQ5LDB4RTIsMHgzOCwweDI4LDB4RkEsMHhE
RiwweERGLAorICAgIDB4NDQsMHg0MSwweDAzLDB4NDEsMHhBRSwweDFGLDB4MkIsMHhBRiwweEE1
LDB4NTEsMHg0NCwweDQ5LDB4M0QsMHgwQiwweDJGLDB4RUQsCisgICAgMHg0NywweDZBLDB4QTUs
MHg1OSwweDJCLDB4MkQsMHg5NSwweEZELDB4QzgsMHg4MiwweDA2LDB4NjIsMHhGRiwweEFBLDB4
MDMsMHhBNSwKKyAgICAweEM4LDB4ODIsMHg2NywweDdBLDB4MjcsMHgzRiwweDk2LDB4NUYsMHg0
RCwweEFDLDB4RTgsMHg4MiwweDM1LDB4QjUsMHhENSwweDU1LAorICAgIDB4RjQsMHhFNSwweDhC
LDB4OUIsMHgwMCwweDAzLDB4MEIsMHgwOSwweDE1LDB4RTYsMHgxMCwweEM1LDB4RTgsMHg2MCww
eDcwLDB4NzgsCisgICAgMHgzMSwweENELDB4RjAsMHhDNCwweEFBLDB4QkYsMHg5NSwweDk1LDB4
NTEsMHhDRCwweDEwLDB4QzUsMHgwQSwweDJBLDB4M0YsMHgzRiwKKyAgICAweDk2LDB4RjYsMHg3
MiwweENELDB4MkIsMHgwRCwweDJELDB4MjUsMHhCNiwweEY2LDB4NzYsMHhFRSwweEFCLDB4RUYs
MHgwMiwweEZBLAorICAgIDB4QjcsMHhGNiwweDU1LDB4RTYsMHhFQiwweEJBLDB4ODAsMHg3Riww
eEI3LDB4RjYsMHgzNSwweEU2LDB4RkIsMHg4QSwweEFBLDB4NTUsCisgICAgMHhCNiwweEY2LDB4
MTQsMHhERSwweEFFLDB4MDgsMHhBQSwweDU1LDB4OTYsMHhFRSwweDkyLDB4Q0QsMHgwMCwweDAw
LDB4QTAsMHg1RiwKKyAgICAweDc2LDB4RUUsMHhGMCwweEJDLDB4MDAsMHgwMCwweEFBLDB4NUYs
MHg5NiwweEY2LDB4RDAsMHhCQywweDAwLDB4ODgsMHhGRSwweDU1LAorICAgIDB4NzYsMHhFRSww
eDhGLDB4QUMsMHgwMCwweEFBLDB4RkYsMHhGNSwweDM2LDB4RTYsMHgzMiwweEM1LDB4RTgsMHhG
RiwweEZGLDB4N0YsCisgICAgMHg4NCwweDU5LDB4MjMsMHg1OSwweEI3LDB4QkYsMHgyQiwweDhC
LDB4ODQsMHg1OSwweDQ0LDB4NTksMHhGNiwweEFBLDB4QTgsMHhDMiwKKyAgICAweDg0LDB4NTks
MHgyMywweDUxLDB4NkEsMHhGOCwweEFCLDB4RkYsMHg4NCwweDU5LDB4MjMsMHg1MSwweEYxLDB4
RkQsMHg3RiwweEFGLAorICAgIDB4NjMsMHg1OSwweDIzLDB4NTEsMHg2QSwweDcyLDB4REYsMHg3
NywweDg0LDB4NjEsMHgyMywweDUxLDB4N0QsMHhGNSwweDJELDB4QUYsCisgICAgMHg4NCwweDYx
LDB4NDMsMHg1OSwweEE5LDB4OEEsMHg4OCwweDA4LDB4QTQsMHg2MSwweDYzLDB4NTksMHhGRSww
eEJBLDB4MkYsMHhBRiwKKyAgICAweEE0LDB4NjEsMHg0MywweDU5LDB4RUEsMHg3QywweEZFLDB4
RkYsMHg2NCwweDU5LDB4NDMsMHg1OSwweDFFLDB4NTgsMHg3RSwweDU3LAorICAgIDB4NDcsMHg3
QSwweDIzLDB4NTEsMHgyQiwweEY1LDB4REQsMHg1NSwweDY3LDB4N0EsMHgyMywweDUxLDB4MDAs
MHgwQSwweEY1LDB4NTUsCisgICAgMHg4NywweDdBLDB4MjMsMHg1MSwweDAwLDB4MDAsMHgwQSww
eDM1LDB4RUIsMHhBQiwweEM4LDB4ODIsMHgyRCwweDA5LDB4ODMsMHhBMiwKKyAgICAweENCLDB4
QTMsMHg2QSwweDlCLDB4QTgsMHhERiwweDVGLDB4REQsMHhBQiwweEEzLDB4NkEsMHg5QiwweDJB
LDB4RUIsMHhFRCwweEE5LAorICAgIDB4QUIsMHhBMywweDQ2LDB4NzIsMHg2MCwweDdBLDB4NkEs
MHhGMCwweDY2LDB4N0EsMHgyMywweDQ5LDB4N0UsMHg3QSwweDdBLDB4RjgsCisgICAgMHgyMyww
eDQ5LDB4QzIsMHgzOCwweDU3LDB4NTcsMHg3QywweEQ4LDB4MDQsMHg0MSwweEMyLDB4MzgsMHhB
RCwweDJELDB4QkQsMHg5RiwKKyAgICAweDY0LDB4NDksMHhFMywweDM4LDB4RjUsMHhGRiwweEVF
LDB4Q0EsMHg4NCwweDQ5LDB4RTIsMHgzOCwweDJELDB4QUYsMHhCRiwweEY3LAorICAgIDB4NjQs
MHg0OSwweDAzLDB4NDEsMHhCMCwweDU4LDB4REUsMHg1RSwweDQ0LDB4NDksMHgwMywweDM5LDB4
RDYsMHg3RiwweDdBLDB4QTIsCisgICAgMHg0NCwweDQxLDB4RTIsMHg0MCwweERFLDB4QkUsMHg4
QSwweEYyLDB4QTYsMHg1MSwweDQzLDB4NDksMHhBQiwweEVBLDB4RTMsMHg3OSwKKyAgICAweEM2
LDB4NTksMHg0NCwweDQ5LDB4RjUsMHhBRCwweEVELDB4OEQsMHhBNSwweDU5LDB4NDQsMHg1MSww
eDNFLDB4MUYsMHgxNSwweEY3LAorICAgIDB4MDYsMHg2QSwweDg1LDB4NTEsMHg1NywweDdBLDB4
QzAsMHg4MywweEE1LDB4NTEsMHhFMiwweDM4LDB4NUMsMHg1QSwweDdBLDB4NjgsCisgICAgMHgw
MywweDM5LDB4QTIsMHgzMCwweEJGLDB4QUQsMHgyQiwweDJCLDB4MjMsMHg0MSwweEUzLDB4Mzgs
MHhERSwweDdELDB4QUEsMHg4MiwKKyAgICAweDIzLDB4NDEsMHhFMiwweDM4LDB4RTcsMHgzQiww
eEJCLDB4QTgsMHg2NCwweDUxLDB4MDMsMHg0MSwweDI5LDB4OEYsMHhENywweERELAorICAgIDB4
NjQsMHg1MSwweDAzLDB4NDEsMHg3MCwweEJBLDB4RUEsMHhBQiwweDY0LDB4NDksMHgwMywweDQ5
LDB4REQsMHgyRSwweDNFLDB4MzIsCisgICAgMHhBNiwweDU5LDB4NDMsMHg0OSwweEFGLDB4OEYs
MHhGQiwweDU3LDB4ODQsMHg0OSwweDIzLDB4NDEsMHg5NywweEZFLDB4RkIsMHhBQSwKKyAgICAw
eDY0LDB4NDksMHhFMywweDM4LDB4RUUsMHhFQywweDdBLDB4NUEsMHgyMywweDQxLDB4QzIsMHgz
MCwweDgwLDB4OEEsMHgyNiwweDJBLAorICAgIDB4NjQsMHg0OSwweEUyLDB4MzgsMHg3NywweEZE
LDB4MEUsMHgyQSwweDY0LDB4NDksMHhFMywweDM4LDB4MjUsMHhCRCwweEFFLDB4RTAsCisgICAg
MHg2NCwweDQxLDB4MDMsMHg0MSwweEFBLDB4QTgsMHhGRSwweDY3LDB4NjQsMHg0OSwweDAzLDB4
MzksMHhENSwweEI3LDB4MkIsMHgyRSwKKyAgICAweDY0LDB4NDksMHgyMywweDQxLDB4RkQsMHg3
RiwweDU3LDB4NTgsMHg2NCwweDQ5LDB4MDMsMHg0MSwweEJFLDB4RUEsMHhDMCwweDgxLAorICAg
IDB4RTYsMHg2MSwweDQ0LDB4NDksMHgyQiwweEFELDB4MjUsMHhGNSwweDY2LDB4NzIsMHhDNSww
eDU5LDB4MEYsMHhBRCwweEFGLDB4QUIsCisgICAgMHg2NywweDcyLDB4RTUsMHg2OSwweEU4LDB4
RUEsMHhGQSwweEUyLDB4QzgsMHg4MiwweDI2LDB4NkEsMHgwMywweDBELDB4RUQsMHhCNSwKKyAg
ICAweDcyLDB4RDUsMHhDOCwweDgyLDB4MEQsMHgyRCwweDM1LDB4QjUsMHhEMywweERELDB4RjAs
MHhDNCwweDcwLDB4NTgsMHg3OCwweDVFLAorICAgIDB4MTAsMHhDNSwweEQwLDB4QkMsMHgyRSww
eDJGLDB4QkYsMHgxNSwweDUxLDB4Q0QsMHgxMCwweEM1LDB4QkIsMHhCRiwweEVELDB4RkQsCisg
ICAgMHgxNCwweEU2LDB4MzEsMHhDRCwweDNELDB4MzUsMHhCNSwweEQ1LDB4RjQsMHhERCwweEFG
LDB4QkMsMHgwMCwweEZFLDB4NUUsMHg1NiwKKyAgICAweEIzLDB4RDUsMHg4RiwweEI0LDB4MDAs
MHhGRiwweDc1LDB4NTUsMHg3MiwweENELDB4MkQsMHhBQywweDAwLDB4RUEsMHg3NywweDU3LAor
ICAgIDB4NTIsMHhDRCwweDJELDB4QTQsMHgwMCwweEZGLDB4NUYsMHg1NSwweDExLDB4QzUsMHgy
RSwweEE0LDB4QTAsMHhGRSwweDU1LDB4M0QsCisgICAgMHgzMiwweEM1LDB4NEUsMHhBQywweDdF
LDB4NTUsMHhCNSwweDAwLDB4QjMsMHhENSwweDhGLDB4QUMsMHhCNSwweDBELDB4MEEsMHgyMiwK
KyAgICAweEI0LDB4RDUsMHgxMSwweEJELDB4QkQsMHhFOCwweEY4LDB4NUEsMHg3MiwweEM1LDB4
NkYsMHhBQywweEE4LDB4RUEsMHg1QSwweDdFLAorICAgIDB4ODQsMHg1OSwweDQzLDB4NTEsMHgy
RSwweENFLDB4NzcsMHg2RiwweDY0LDB4NTksMHgyMywweDUxLDB4QTAsMHg3QSwweDc3LDB4NUYs
CisgICAgMHg2MywweDU5LDB4MjMsMHg1MSwweEJFLDB4OEYsMHhFRiwweEY1LDB4MjIsMHg1OSww
eDYzLDB4NTEsMHhGRiwweEVGLDB4QkIsMHhBQiwKKyAgICAweDYzLDB4NTksMHgyMywweDUxLDB4
RkIsMHhBRiwweDA3LDB4MEYsMHg4NCwweDYxLDB4NDMsMHg1OSwweDM5LDB4REYsMHhCRSwweEZG
LAorICAgIDB4ODQsMHg2MSwweDYzLDB4NTksMHgwQSwweEFBLDB4OUYsMHhDNywweEE0LDB4NjEs
MHg0MywweDU5LDB4NkEsMHg2QywweDVGLDB4RDcsCisgICAgMHg2MywweDU5LDB4MjMsMHg1MSww
eDA4LDB4QUIsMHhGOCwweEZBLDB4NDMsMHg1OSwweDIzLDB4NTEsMHgwQSwweDhBLDB4ODAsMHg1
QywKKyAgICAweDIzLDB4NTksMHgwMiwweDQ5LDB4RDgsMHhGQSwweEJFLDB4RTcsMHgyMywweDUx
LDB4MDMsMHg0OSwweEMwLDB4QzgsMHg4OCwweDhBLAorICAgIDB4QUIsMHhBMywweDQzLDB4NTks
MHg5NSwweDM1LDB4MjUsMHgwOSwweENCLDB4QTMsMHg0QSwweDlCLDB4QzIsMHhGMCwweDU4LDB4
N0UsCisgICAgMHg4QiwweDlCLDB4NDksMHg5MywweDI4LDB4MDIsMHgwQiwweEVGLDB4QUMsMHhB
MywweDZBLDB4OUIsMHgwRSwweEFGLDB4RkYsMHhENSwKKyAgICAweENDLDB4QUIsMHhDNywweDgy
LDB4NzgsMHg1MiwweDVBLDB4NUUsMHhBNywweDdBLDB4NjQsMHg1MSwweDdFLDB4NTgsMHg3OCww
eDYwLAorICAgIDB4NDQsMHg0OSwweDAzLDB4NDEsMHg1OCwweEEwLDB4MjgsMHhCRSwweDIzLDB4
NDEsMHhFMywweDM4LDB4NTcsMHhEQywweDlFLDB4RjgsCisgICAgMHg4NCwweDUxLDB4MjMsMHg0
MSwweDg5LDB4QUIsMHg4QiwweDhCLDB4NDQsMHg0OSwweEUyLDB4MzgsMHhGRSwweDU4LDB4Rjgs
MHhCQSwKKyAgICAweDQ0LDB4NDksMHgwMywweDQxLDB4NzIsMHhFMywweDdCLDB4NTgsMHg2NSww
eDQ5LDB4RTMsMHgzOCwweEUyLDB4REEsMHhGRiwweDdBLAorICAgIDB4MjMsMHg0MSwweDAyLDB4
NDEsMHhFMCwweEEwLDB4REUsMHgwOSwweEUzLDB4NDAsMHgyMywweDM5LDB4QjcsMHgwQiwweEFB
LDB4QUQsCisgICAgMHhDNiwweDYxLDB4MDMsMHg0MSwweDBELDB4OEQsMHgyRCwweDA5LDB4QTUs
MHg1OSwweDAzLDB4NDksMHhFOCwweEZFLDB4RjYsMHg1NiwKKyAgICAweEM2LDB4NjEsMHgyMyww
eDQ5LDB4MEIsMHgzRiwweERGLDB4REQsMHg4NSwweDUxLDB4QzIsMHgzOCwweDc4LDB4NzAsMHg2
MCwweDYwLAorICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHgyRiwweDJELDB4QkYsMHg5NywweDIz
LDB4NDEsMHhFMywweDM4LDB4MjIsMHgyQiwweEZGLDB4NTcsCisgICAgMHg2NCwweDQ5LDB4MDQs
MHg0MSwweEZBLDB4QUEsMHg4OSwweEFCLDB4ODUsMHg1MSwweDIzLDB4NDksMHg1NywweEU3LDB4
MkIsMHgwQSwKKyAgICAweEE1LDB4NTksMHg0NCwweDQ5LDB4RUQsMHg4MiwweDg4LDB4OEIsMHg4
NSwweDUxLDB4MDMsMHg0MSwweEZBLDB4NTgsMHhGRSwweERDLAorICAgIDB4NDMsMHg0OSwweEUy
LDB4MzgsMHhFMCwweEVBLDB4RUEsMHhGOCwweDY0LDB4NDksMHgwMiwweDM5LDB4MEIsMHhBRCww
eEZELDB4RjUsCisgICAgMHgyMywweDQxLDB4MDMsMHgzOSwweDYwLDB4QzAsMHhGMCwweEFBLDB4
MjQsMHg0MSwweEUzLDB4MzgsMHgyQiwweEY4LDB4NzYsMHg3NiwKKyAgICAweDY1LDB4NDksMHhF
MiwweDM4LDB4MEEsMHgyQiwweEFGLDB4QkQsMHhBNSwweDUxLDB4MjMsMHg0MSwweDdBLDB4RTIs
MHhFRiwweDdGLAorICAgIDB4NDQsMHg0MSwweDAzLDB4MzksMHhERiwweDU3LDB4QTgsMHhFQSww
eDg1LDB4NDksMHgwMywweDM5LDB4MkIsMHgyOSwweEFELDB4RjcsCisgICAgMHg2NCwweDQ5LDB4
MjQsMHg0MSwweDAwLDB4MjAsMHg5NCwweEFGLDB4QTYsMHg1OSwweDIzLDB4NDEsMHhERCwweDdB
LDB4RUEsMHgyRiwKKyAgICAweDg0LDB4NTEsMHg0NCwweDQ5LDB4RUYsMHhGNSwweEE3LDB4Rjgs
MHg2NywweDcyLDB4ODQsMHg1MSwweDJELDB4QjUsMHg1NSwweDU1LAorICAgIDB4QTgsMHg3QSww
eEE1LDB4NTksMHhBMCwweEFBLDB4QUQsMHhCNSwweEM5LDB4ODIsMHgyNiwweDZBLDB4QUQsMHhB
QiwweDBGLDB4QjUsCisgICAgMHhFQywweEEzLDB4QzgsMHg4MiwweDE1LDB4QjUsMHg5NSwweEQ1
LDB4QjMsMHhERCwweDhGLDB4QjQsMHhGQSwweEYzLDB4RTIsMHhFOSwKKyAgICAweEYwLDB4QzQs
MHhBRiwweEJDLDB4MkUsMHgyRiwweEFGLDB4OTUsMHgzMSwweENELDB4RjAsMHhDNCwweEE5LDB4
MEIsMHgyOSwweEY1LAorICAgIDB4NTEsMHhDRCwweEYwLDB4QkMsMHgzQSwweEFCLDB4NkEsMHg3
RiwweDcxLDB4RDUsMHgyRCwweEFDLDB4RjgsMHg1RSwweDVGLDB4NTcsCisgICAgMHhDRiwweEJD
LDB4MkQsMHhBNCwweEZGLDB4NUYsMHhGNSwweDI1LDB4OTMsMHhDRCwweDJELDB4QTQsMHg1NSww
eDU1LDB4QkYsMHgwMiwKKyAgICAweEIzLDB4RDUsMHgwRCwweEE0LDB4RDUsMHgyRiwweDAyLDB4
MDAsMHhCNCwweEQ1LDB4MTEsMHhCRCwweEE5LDB4RUMsMHhGQywweDVDLAorICAgIDB4NzMsMHhD
RCwweEYwLDB4QjQsMHhBMCwweDNFLDB4M0YsMHgzNSwweDkzLDB4Q0QsMHhGMSwweEJDLDB4NjAs
MHg2MCwweEUwLDB4NzgsCisgICAgMHgzMiwweEJELDB4QjAsMHhCNCwweEIwLDB4QTUsMHhBNyww
eDY3LDB4RjEsMHhCQywweDhGLDB4QUMsMHg1QSwweDVDLDB4RDcsMHhGNSwKKyAgICAweDY0LDB4
NTEsMHgyMywweDUxLDB4RjAsMHg5NiwweEZGLDB4RjUsMHg0MywweDUxLDB4MjMsMHg1MSwweDND
LDB4ODQsMHg3NywweEJCLAorICAgIDB4NjQsMHg1OSwweDIzLDB4NTEsMHhCNywweEVELDB4Q0Us
MHhBQiwweDYzLDB4NTksMHgyMywweDUxLDB4RkYsMHhBRSwweDJFLDB4OEUsCisgICAgMHg4NCww
eDYxLDB4NDMsMHg1OSwweENCLDB4RUEsMHg4RSwweEZGLDB4ODQsMHg2MSwweDQzLDB4NTksMHgy
QiwweEFELDB4RjYsMHg3RiwKKyAgICAweDg0LDB4NTksMHgyMywweDUxLDB4QjgsMHhGQSwweEVF
LDB4N0YsMHg2MywweDU5LDB4MjMsMHg1MSwweEE4LDB4QkEsMHhFQSwweEU5LAorICAgIDB4NjMs
MHg1OSwweDIzLDB4NTEsMHhDRiwweEU1LDB4RkYsMHg3NywweDIzLDB4NTEsMHgwMywweDQ5LDB4
NkMsMHhEOCwweENFLDB4MEYsCisgICAgMHgyMywweDUxLDB4MDMsMHg0OSwweDRELDB4NzIsMHhG
RiwweEVCLDB4RTgsMHg4QSwweDAyLDB4NTEsMHg1NSwweEQ1LDB4QjUsMHgzNSwKKyAgICAweEFC
LDB4QTMsMHgyNiwweDcyLDB4MDksMHgwMywweDAyLDB4MDAsMHg4QiwweEEzLDB4MjksMHg5Myww
eEEwLDB4RTAsMHhFQSwweERFLAorICAgIDB4OEEsMHg5QiwweDA5LDB4OTMsMHhGOCwweEZFLDB4
REIsMHg3RiwweDhCLDB4OUIsMHgyOSwweDkzLDB4QUIsMHhBRiwweEFELDB4MkQsCisgICAgMHg2
QSwweDlCLDB4ODcsMHg3QSwweDc4LDB4RDgsMHg3OCwweDVDLDB4RTgsMHg4MiwweDA2LDB4NkEs
MHg2MiwweEUyLDB4RUEsMHhBQSwKKyAgICAweDg4LDB4N0EsMHgyMywweDQ5LDB4NTUsMHg1Nyww
eDVFLDB4NzgsMHg2NCwweDQ5LDB4RTMsMHg0MCwweEZCLDB4OEIsMHgyRCwweEJGLAorICAgIDB4
NjQsMHg0OSwweDAzLDB4NDEsMHhBRiwweDlFLDB4RDYsMHg1QywweDIzLDB4NDEsMHhFMywweDM4
LDB4QkMsMHhEQywweDVGLDB4NTcsCisgICAgMHg0NCwweDQ5LDB4MDMsMHg0MSwweDgyLDB4MDks
MHgwRCwweDI3LDB4NDQsMHg0OSwweEUzLDB4MzgsMHg3QSwweDc4LDB4N0IsMHg3QSwKKyAgICAw
eDIzLDB4NDEsMHhFMywweDM4LDB4QTksMHhCRCwweEZELDB4RjUsMHgyNCwweDQxLDB4RTIsMHgz
OCwweDlBLDB4MkYsMHgwRSwweEFBLAorICAgIDB4RTcsMHg2MSwweDQ0LDB4NDksMHgyRCwweEFE
LDB4RjUsMHg1NSwweEM2LDB4NjEsMHgyNCwweDQ5LDB4NUMsMHhGOCwweDJGLDB4QjcsCisgICAg
MHhBNiwweDU5LDB4NDQsMHg0OSwweEQ1LDB4QjcsMHg5NiwweEIwLDB4ODUsMHg1MSwweEUzLDB4
MzgsMHg3QSwweDc4LDB4NTgsMHg1OCwKKyAgICAweDA0LDB4MzksMHhBMiwweDMwLDB4REYsMHhE
NSwweEZELDB4MzUsMHgyNCwweDQxLDB4QzIsMHgzMCwweEQ3LDB4OUQsMHhBQSwweEIyLAorICAg
IDB4ODUsMHg1MSwweDIzLDB4NDEsMHhFRCwweEY5LDB4RUIsMHg4MiwweDg1LDB4NTksMHg0NCww
eDUxLDB4MDksMHhFRCwweENCLDB4MEEsCisgICAgMHg4NSwweDU5LDB4MDMsMHg0OSwweEEyLDB4
OEEsMHg1NywweEQ2LDB4NjQsMHg1MSwweEUzLDB4MzgsMHhGOCwweEVFLDB4N0UsMHg3RSwKKyAg
ICAweDIzLDB4NDEsMHhDMywweDM4LDB4ODgsMHhCRSwweEJGLDB4RUQsMHg2NSwweDQ5LDB4RTIs
MHgzOCwweEZELDB4RkQsMHhFRiwweDhBLAorICAgIDB4ODUsMHg0OSwweDAyLDB4MzksMHhENSww
eDdGLDB4Q0IsMHhFRiwweDIzLDB4NDEsMHhFMiwweDM4LDB4RUEsMHg4MCwweEJFLDB4RkIsCisg
ICAgMHg0MywweDQxLDB4MDMsMHgzOSwweDM1LDB4OTUsMHhENSwweERGLDB4NDMsMHg0MSwweEUy
LDB4MzgsMHhDOCwweEUwLDB4RjIsMHg2RSwKKyAgICAweDIzLDB4MzksMHhFMiwweDM4LDB4QkYs
MHg2RCwweEFGLDB4QUQsMHgyMywweDQxLDB4RTIsMHgzMCwweDA4LDB4MEEsMHhBMywweEFELAor
ICAgIDB4NjQsMHg0OSwweDAzLDB4MzksMHgyRiwweEQ3LDB4RDUsMHhGRSwweDg1LDB4NTEsMHgy
MywweDQ5LDB4QkUsMHhFQSwweDhGLDB4MkYsCisgICAgMHg4NSwweDUxLDB4NDQsMHg0OSwweDAy
LDB4MkUsMHgxRiwweDVFLDB4NDcsMHg2QSwweDg0LDB4NTEsMHg1NSwweEJGLDB4M0QsMHhGNSwK
KyAgICAweDY3LDB4NzIsMHhDNSwweDYxLDB4NzUsMHg5NywweDU4LDB4QTMsMHhBOCwweDgyLDB4
MDYsMHg2MiwweDk1LDB4RDUsMHgzNywweDNELAorICAgIDB4QzksMHg4MiwweDQ2LDB4NzIsMHgy
MiwweEJGLDB4REUsMHhFMCwweDMxLDB4Q0QsMHhDOSwweDgyLDB4MDMsMHgwOSwweDBELDB4MjUs
CisgICAgMHhGMCwweEM0LDB4NkUsMHhCNCwweEFFLDB4RkMsMHg1OCwweDcwLDB4RjAsMHhDNCww
eDhGLDB4QjQsMHgyQSwweEFCLDB4RUQsMHg1NSwKKyAgICAweDEwLDB4QzUsMHg2RSwweEI0LDB4
RTgsMHg3QSwweEI3LDB4MjUsMHgzMSwweENELDB4MkUsMHhBQywweDU1LDB4RkQsMHgyQSwweDAw
LAorICAgIDB4QjMsMHhENSwweDRFLDB4QUMsMHhCNSwweEFGLDB4MEEsMHgwQSwweEQ0LDB4RDUs
MHgxMSwweEJELDB4MkIsMHhCRiwweERGLDB4N0UsCisgICAgMHhENSwweEQ1LDB4MzIsMHhDNSww
eEIwLDB4RUEsMHgyRiwweEY1LDB4NzMsMHhDRCwweEQwLDB4QjQsMHg1OCwweDVDLDB4NUMsMHg0
MCwKKyAgICAweDczLDB4QzUsMHg4RiwweEFDLDB4MjUsMHgzNSwweEE1LDB4RTUsMHg3MywweEM1
LDB4MEQsMHg5QywweEUwLDB4RkEsMHhGRiwweDk1LAorICAgIDB4RDAsMHhCNCwweEIwLDB4QUMs
MHhDMywweDQzLDB4RTIsMHg3QiwweEYxLDB4QjQsMHg4RiwweEFDLDB4OTUsMHgyRCwweDNGLDB4
QTcsCisgICAgMHg0MywweDUxLDB4MDIsMHg0OSwweEVGLDB4RjYsMHg4OCwweEUwLDB4NjQsMHg1
OSwweDIzLDB4NTEsMHhFRCwweEFCLDB4QUIsMHhGRiwKKyAgICAweDg0LDB4NTksMHgyMywweDUx
LDB4OTcsMHhBRiwweDhFLDB4RUYsMHg2NCwweDU5LDB4NDMsMHg1OSwweEMyLDB4NzIsMHg1RCww
eDMwLAorICAgIDB4QTQsMHg2MSwweDQzLDB4NTksMHhCRiwweEY5LDB4RUIsMHhDQiwweDY0LDB4
NjEsMHg0MywweDUxLDB4RTAsMHg1RSwweEU3LDB4RjYsCisgICAgMHg0MywweDU5LDB4NjQsMHg1
MSwweDAwLDB4MjAsMHhBOCwweEMwLDB4NjQsMHg1OSwweDIzLDB4NTEsMHhFOSwweEU3LDB4RkMs
MHhGQywKKyAgICAweDQ0LDB4NTksMHgwMywweDQ5LDB4QzIsMHhGQSwweDZFLDB4N0YsMHgyMyww
eDUxLDB4MDMsMHg0OSwweEJGLDB4NUUsMHg2OCwweEE4LAorICAgIDB4NDQsMHg1OSwweDAzLDB4
NDksMHhGRCwweEJGLDB4M0QsMHgzRiwweDhCLDB4QTMsMHg0MywweDU5LDB4MjUsMHgyRCwweDBC
LDB4MDMsCisgICAgMHhDQywweEEzLDB4NEEsMHg5QiwweEYwLDB4N0MsMHg3QSwweDgyLDB4OEEs
MHg5QiwweDI5LDB4OTMsMHg3RiwweDVFLDB4RkYsMHg3MCwKKyAgICAweDRBLDB4OTMsMHgwOSww
eDkzLDB4MEYsMHgwQiwweEZFLDB4QTAsMHg2QiwweDlCLDB4MjksMHg5MywweDA5LDB4MkYsMHhE
NywweERELAorICAgIDB4NEEsMHg5MywweDg3LDB4N0EsMHg3QywweDdDLDB4NTgsMHg1OCwweEE4
LDB4N0EsMHgyNywweDcyLDB4ODgsMHhBQSwweEY4LDB4NkYsCisgICAgMHg2NywweDcyLDB4ODUs
MHg1OSwweDc4LDB4RTAsMHhBMCwweEEwLDB4RTYsMHg2MSwweDAzLDB4NDksMHhENSwweDc3LDB4
NzgsMHhFMCwKKyAgICAweDY0LDB4NTEsMHhFMiwweDM4LDB4NzAsMHg3QSwweEVGLDB4RDcsMHgw
MywweDM5LDB4QzIsMHgzOCwweDhCLDB4QkEsMHhGRiwweDVFLAorICAgIDB4ODUsMHg1MSwweEUy
LDB4MzgsMHhCRiwweDJELDB4M0QsMHg5NSwweDg1LDB4NTEsMHhFMiwweDM4LDB4N0EsMHg3OCww
eDc4LDB4NUEsCisgICAgMHgyNCwweDQxLDB4RTMsMHgzOCwweEE1LDB4RjYsMHg3NiwweEYwLDB4
MjQsMHg0MSwweEUzLDB4MzgsMHhBQSwweEFFLDB4RUQsMHgyNywKKyAgICAweDY1LDB4NTEsMHgw
MywweDQxLDB4QkYsMHhBRCwweENELDB4OEYsMHhBNiwweDU5LDB4MjMsMHg0OSwweEFGLDB4QUIs
MHgwQiwweEE1LAorICAgIDB4QzYsMHg1OSwweDY1LDB4NTEsMHhCOCwweEFFLDB4NkYsMHhCRiww
eDY1LDB4NTEsMHhDMiwweDM4LDB4NzAsMHg3MCwweDVBLDB4NTYsCisgICAgMHgwMywweDM5LDB4
QTIsMHgzMCwweDI3LDB4QkYsMHhENywweEY1LDB4MDMsMHgzOSwweEEyLDB4MzAsMHgwMCwweDAw
LDB4QkYsMHhGNywKKyAgICAweEM2LDB4NjEsMHgyMywweDQxLDB4ODksMHgwOSwweDBELDB4QTUs
MHhFNiwweDYxLDB4ODUsMHg1OSwweEQ3LDB4NzgsMHg3MCwweDQ5LAorICAgIDB4ODUsMHg1MSww
eDAzLDB4NDEsMHhEQywweDVDLDB4NUUsMHhGRSwweDI0LDB4NDEsMHhFMywweDM4LDB4NzgsMHg3
OCwweDdCLDB4NzYsCisgICAgMHgyNCwweDQxLDB4RTMsMHgzOCwweEE5LDB4M0IsMHhERCwweDU3
LDB4NjQsMHg0OSwweDIzLDB4NDEsMHhCQiwweDI5LDB4QzMsMHg4MSwKKyAgICAweDY0LDB4NDks
MHgwMywweDQxLDB4RUYsMHhGQSwweEYyLDB4RjcsMHgyMywweDQxLDB4RTIsMHgzOCwweDVGLDB4
NUIsMHg1OCwweEVDLAorICAgIDB4NDQsMHg0MSwweEUyLDB4MzgsMHhGMywweEY1LDB4RjUsMHg5
NSwweDI0LDB4NDEsMHgwMywweDM5LDB4NzYsMHg4RCwweEJFLDB4QjksCisgICAgMHg0NCwweDM5
LDB4RTIsMHgzOCwweEZELDB4RkYsMHhENiwweDdFLDB4MjMsMHgzOSwweEUyLDB4MzgsMHhGNyww
eDlGLDB4OTMsMHhCQiwKKyAgICAweDY0LDB4NDksMHgwMywweDM5LDB4RTMsMHhBOSwweDJELDB4
QkYsMHg2NCwweDQ5LDB4MjMsMHg0MSwweEFFLDB4MEIsMHgwRiwweEFCLAorICAgIDB4NjQsMHg0
OSwweDIzLDB4NDksMHhCRSwweERGLDB4REYsMHhGOCwweEM1LDB4NjEsMHg0NCwweDQ5LDB4MkQs
MHhCRCwweEY1LDB4QUQsCisgICAgMHgyNiwweDZBLDB4NjQsMHg1MSwweDBBLDB4MkQsMHhCNyww
eDc3LDB4ODgsMHg3QSwweEM1LDB4NjEsMHgzRiwweEFCLDB4QkYsMHhENSwKKyAgICAweDA5LDB4
OEIsMHg2OCwweDdBLDB4RTAsMHg4QSwweDAzLDB4MEQsMHgxMSwweEM1LDB4RTksMHg4MiwweDM1
LDB4MzUsMHgxNSwweDk1LAorICAgIDB4MzUsMHhFRSwweDZGLDB4QjQsMHg3RiwweEZFLDB4QUEs
MHgwMiwweDM1LDB4RTYsMHg2RSwweEI0LDB4NTUsMHhGRiwweDAyLDB4MDAsCisgICAgMHhGNCww
eERELDB4NkUsMHhCNCwweEI1LDB4QjcsMHgwMCwweDAwLDB4MTQsMHhFNiwweDUyLDB4Q0QsMHhG
NSwweEVCLDB4NUEsMHg2MCwKKyAgICAweEIzLDB4RDUsMHg1MiwweEM1LDB4MjcsMHhDRiwweEE5
LDB4MkIsMHhCNCwweENELDB4MzIsMHhDNSwweDc4LDB4N0EsMHg3QiwweDZFLAorICAgIDB4NTIs
MHhDNSwweEYxLDB4QkMsMHhBQiwweEJBLDB4N0MsMHg3QSwweDkzLDB4Q0QsMHhGMSwweEJDLDB4
MDIsMHgyQSwweEFELDB4RjUsCisgICAgMHg3MywweENELDB4MEUsMHg5QywweEU4LDB4NjAsMHg3
OCwweDdBLDB4QjAsMHhCNCwweENDLDB4OTMsMHgyNSwweDBELDB4MEIsMHgwMywKKyAgICAweEQw
LDB4QjQsMHg5MCwweEFDLDB4RUMsMHg3RSwweDdFLDB4REUsMHhEMCwweEI0LDB4OTAsMHhBQyww
eEE5LDB4MjksMHhGNywweEQ3LAorICAgIDB4ODQsMHg1OSwweDQzLDB4NTEsMHg3NywweEI1LDB4
RUIsMHhGQSwweDY0LDB4NTksMHgyMywweDUxLDB4RjYsMHhCQywweEZBLDB4QjgsCisgICAgMHg2
NCwweDU5LDB4NDMsMHg1OSwweDU1LDB4REYsMHgwQSwweDExLDB4ODQsMHg2MSwweDQzLDB4NTks
MHgyRiwweDgzLDB4RTgsMHhGMCwKKyAgICAweDg0LDB4NjEsMHg0MywweDU5LDB4RTIsMHhGMiww
eERDLDB4RDUsMHg2NCwweDU5LDB4MjMsMHg1MSwweEVBLDB4RkEsMHhBQiwweEFBLAorICAgIDB4
NjQsMHg1OSwweDIzLDB4NTEsMHhGQSwweDdGLDB4N0YsMHg2RiwweDQ0LDB4NTksMHhFMiwweDQ4
LDB4ODgsMHhFMiwweEVFLDB4OEEsCisgICAgMHgyMywweDUxLDB4RTIsMHg0OCwweEVBLDB4RUEs
MHg3RSwweEZDLDB4MjMsMHg1MSwweEUyLDB4NDgsMHhDRSwweDJFLDB4QTgsMHg5QSwKKyAgICAw
eEU5LDB4OEEsMHgyMywweDUxLDB4RDUsMHg5NSwweDM1LDB4MjUsMHhDQywweEEzLDB4QzksMHg4
QSwweEE5LDB4MkEsMHgyQSwweDAyLAorICAgIDB4RUMsMHhBQiwweDhCLDB4QTMsMHhBMywweDBB
LDB4QUEsMHhGQywweEFCLDB4QTMsMHg0QSwweDkzLDB4NzgsMHg2OCwweEUwLDB4QUEsCisgICAg
MHg4QiwweDlCLDB4MjksMHg5MywweDVELDB4N0YsMHhGRSwweDJBLDB4NkEsMHg5QiwweDJBLDB4
OTMsMHg5RiwweDJBLDB4QUEsMHhGMCwKKyAgICAweDJBLDB4OTMsMHg0NywweDcyLDB4NzgsMHg3
OCwweDc4LDB4NzgsMHg2NywweDcyLDB4MjYsMHg3MiwweDYwLDB4RjIsMHhBMiwweEZFLAorICAg
IDB4NDcsMHg3MiwweDA2LDB4NkEsMHhCQywweEZFLDB4OEUsMHg0QywweDI2LDB4NkEsMHhBNSww
eDU5LDB4NzAsMHg4OCwweDIwLDB4MjAsCisgICAgMHhFNiwweDYxLDB4RTMsMHg0MCwweDU3LDB4
REUsMHg3OCwweEUwLDB4MjMsMHg0MSwweEMyLDB4MzgsMHg3RiwweDVFLDB4NTgsMHhGQSwKKyAg
ICAweDI0LDB4NDEsMHhFMiwweDM4LDB4QjUsMHhCNSwweDNELDB4MkQsMHg0NCwweDQxLDB4RTMs
MHgzOCwweDdBLDB4REUsMHhGNiwweDc4LAorICAgIDB4MjQsMHg0MSwweEMyLDB4MzgsMHg4QSww
eEFCLDB4QkUsMHhERiwweDI0LDB4NDEsMHhFMiwweDM4LDB4RkYsMHhBRiwweEFCLDB4MDksCisg
ICAgMHg0NCwweDQ5LDB4RTMsMHgzOCwweEFFLDB4QkQsMHhFQSwweEFBLDB4QTYsMHg1OSwweDAz
LDB4NDEsMHhCNywweEJELDB4QTcsMHgyRCwKKyAgICAweEE2LDB4NTksMHg0NCwweDQ5LDB4RkEs
MHg3MiwweDdBLDB4NTgsMHg0NCwweDQ5LDB4QTIsMHgzMCwweDVDLDB4RjgsMHhGQSwweEZCLAor
ICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHhCRiwweDBELDB4MDcsMHgzNywweDAzLDB4MzksMHhD
MywweDMwLDB4RDUsMHhCRSwweDJGLDB4M0EsCisgICAgMHg4NSwweDUxLDB4RTMsMHgzOCwweDJE
LDB4QjUsMHhCRiwweEFGLDB4RTYsMHg2MSwweDQ0LDB4NDksMHgwQiwweDJGLDB4RDcsMHg1RCwK
KyAgICAweEE2LDB4NTksMHgwNCwweDQxLDB4N0EsMHhGOCwweDdFLDB4NUYsMHgwNCwweDQxLDB4
RTMsMHgzOCwweEU4LDB4NjAsMHg2QiwweDQ5LAorICAgIDB4MjMsMHgzOSwweEMzLDB4MzgsMHhG
RiwweEJGLDB4RUQsMHhEMywweDY0LDB4NDksMHhFMywweDM4LDB4RTIsMHhBQiwweEU5LDB4QUQs
CisgICAgMHg0NCwweDQxLDB4MDMsMHg0MSwweDI1LDB4MkUsMHgyQiwweDdFLDB4NjQsMHg0OSww
eEMyLDB4MzAsMHhBOCwweEY4LDB4RkEsMHg3QSwKKyAgICAweDAzLDB4MzksMHhFMiwweDMwLDB4
OTYsMHhFMiwweDU4LDB4N0QsMHgyMywweDM5LDB4RTMsMHgzOCwweENCLDB4RUQsMHg3NSwweEQ1
LAorICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHhDMCwweEI3LDB4NzUsMHgzRSwweDIzLDB4NDEs
MHhFMywweDM4LDB4ODksMHgwOSwweEFELDB4QkUsCisgICAgMHhBNiwweDUxLDB4MjQsMHg0MSww
eEZELDB4QUQsMHgwRiwweEE5LDB4QTUsMHg1MSwweDQ0LDB4NDksMHg3NSwweEVGLDB4QjAsMHhF
OCwKKyAgICAweEU2LDB4NjEsMHg0NCwweDQ5LDB4NUQsMHhGRiwweDJGLDB4QjUsMHhFNiwweDYx
LDB4NjQsMHg1MSwweEJELDB4QkYsMHhBOCwweDAwLAorICAgIDB4MDcsMHg2QSwweEE1LDB4NTks
MHg3RCwweDVELDB4QTcsMHhBQywweDg4LDB4N0EsMHg4NCwweDU5LDB4RDUsMHhGRiwweEFCLDB4
MkQsCisgICAgMHhFOCwweDgyLDB4MjYsMHg2QSwweDJELDB4QkQsMHgzNSwweEI1LDB4QUMsMHg5
QiwweEU4LDB4ODIsMHgzNSwweDE1LDB4OTUsMHg5NSwKKyAgICAweDU1LDB4RUUsMHg2RSwweEI0
LDB4MDIsMHgwMywweDAxLDB4MDksMHg3NiwweEVFLDB4MzUsMHhFNiwweEVGLDB4Q0EsMHhFQSww
eDdCLAorICAgIDB4NTUsMHhFRSwweEY0LDB4REQsMHhBOCwweEE4LDB4RTIsMHhGRiwweDM1LDB4
RTYsMHgzMiwweEM1LDB4NjAsMHg2OCwweDc4LDB4REEsCisgICAgMHhCMywweEQ1LDB4NTIsMHhD
NSwweEFCLDB4RTksMHhGQiwweDY4LDB4OTMsMHhDRCwweDUyLDB4QzUsMHhFOCwweEI4LDB4QUIs
MHgyRCwKKyAgICAweDczLDB4Q0QsMHgxMSwweEJELDB4N0UsMHhERSwweEZBLDB4RDgsMHgxMSww
eEJELDB4NEYsMHhBNCwweDA4LDB4ODAsMHhDMCwweDYwLAorICAgIDB4QjAsMHhCNCwweEVBLDB4
N0EsMHhBMCwweEI3LDB4MzcsMHhBRiwweEIwLDB4QjQsMHg2RiwweEFDLDB4MDEsMHg4QiwweDIx
LDB4MjksCisgICAgMHhEMSwweEI0LDB4NkYsMHhBQywweEFCLDB4OEEsMHhDQSwweDc4LDB4RDEs
MHhCNCwweDZGLDB4QUMsMHg4QSwweEVBLDB4RkEsMHg1NSwKKyAgICAweDYzLDB4NTksMHgyMyww
eDUxLDB4QkEsMHgyNiwweDE3LDB4ODksMHg4NCwweDU5LDB4NDMsMHg1MSwweEZGLDB4RUQsMHhG
QiwweEFFLAorICAgIDB4QTQsMHg2MSwweDY0LDB4NTksMHhENywweERELDB4MTksMHhERiwweDg0
LDB4NjEsMHg0MywweDU5LDB4RUEsMHhGOCwweDdDLDB4N0UsCisgICAgMHg2MywweDU5LDB4MjIs
MHg1MSwweEFBLDB4NjgsMHhFQSwweEI2LDB4NjMsMHg1OSwweDIyLDB4NTEsMHg4MiwweEFCLDB4
RkIsMHhFRSwKKyAgICAweDQzLDB4NTksMHgyMywweDQ5LDB4QTgsMHhGOCwweERFLDB4RDcsMHg0
NCwweDU5LDB4MDMsMHg0OSwweEU2LDB4RkUsMHhGQywweEI2LAorICAgIDB4MjMsMHg1MSwweEUz
LDB4NDgsMHhBQiwweEFGLDB4RUEsMHhBQSwweDQ0LDB4NTksMHhFMiwweDQ4LDB4RkYsMHg1Nyww
eDI3LDB4MEUsCisgICAgMHg2QSwweDlCLDB4MjMsMHg1MSwweDI1LDB4MEQsMHgwRCwweDA5LDB4
Q0MsMHhBQiwweDhCLDB4OUIsMHhGRiwweDdCLDB4QUUsMHgwQiwKKyAgICAweENCLDB4QTMsMHg0
OSwweDkzLDB4NUUsMHg3NywweEY2LDB4RTAsMHg4QSwweDlCLDB4MjksMHg5MywweDBBLDB4QUEs
MHg2QSwweDZFLAorICAgIDB4OEIsMHhBMywweDA5LDB4OEIsMHhBOCwweEZFLDB4NTUsMHg1Nyww
eDZBLDB4OUIsMHhDOCwweDhBLDB4QTAsMHhFQSwweEZGLDB4N0YsCisgICAgMHhFOSwweDhBLDB4
NDYsMHg3MiwweDc4LDB4NTgsMHg3QywweDc4LDB4ODYsMHg3MiwweDI2LDB4NzIsMHg1NywweEZG
LDB4N0YsMHg2RiwKKyAgICAweDI2LDB4NzIsMHgwNiwweDZBLDB4QzAsMHhFMCwweDFDLDB4OTAs
MHg0NywweDcyLDB4MDYsMHg2QSwweEJELDB4MjUsMHgxRiwweDBFLAorICAgIDB4ODcsMHg3QSww
eDg1LDB4NTEsMHg3QSwweEM4LDB4QTIsMHgwOCwweEU2LDB4NjEsMHhDMywweDM4LDB4NzcsMHg3
RiwweDVFLDB4NzgsCisgICAgMHgyMywweDQxLDB4QzIsMHgzOCwweDJBLDB4QkYsMHhGRCwweEE1
LDB4NDQsMHg0OSwweEUzLDB4MzgsMHg3MCwweEZCLDB4REYsMHg3RiwKKyAgICAweDAzLDB4NDEs
MHhDMiwweDM4LDB4OUEsMHhGQSwweDdGLDB4QUYsMHg2NCwweDQ5LDB4RTIsMHgzOCwweEJELDB4
M0QsMHhFRCwweEJELAorICAgIDB4NDQsMHg0OSwweDAzLDB4NDEsMHhCOCwweEJDLDB4NUMsMHg1
QywweEE2LDB4NTksMHgwNCwweDQxLDB4MkYsMHhCRiwweEJELDB4RjUsCisgICAgMHhBNiwweDU5
LDB4NDQsMHg0OSwweDcwLDB4RjgsMHhFOCwweEZELDB4NDQsMHg0MSwweEEyLDB4MzgsMHhGRiww
eEVFLDB4QkUsMHhGOCwKKyAgICAweEUzLDB4MzgsMHhBMiwweDMwLDB4MzcsMHgyQSwweDJBLDB4
QUEsMHgyNCwweDQxLDB4QzIsMHgzMCwweEI4LDB4QjAsMHhBQSwweEI1LAorICAgIDB4NDQsMHg0
OSwweEUzLDB4MzgsMHgyNywweDJGLDB4MkYsMHgzQSwweDY1LDB4NTEsMHgyNCwweDQxLDB4RkEs
MHg3QSwweEZCLDB4N0IsCisgICAgMHgyNCwweDQxLDB4RTMsMHgzOCwweEMyLDB4RTMsMHhGQSww
eEQ2LDB4MjQsMHg0MSwweEUzLDB4MzgsMHhGNSwweDdGLDB4QTcsMHgyRiwKKyAgICAweDI0LDB4
NDEsMHhFMywweDM4LDB4RTIsMHhFRSwweEJFLDB4REMsMHg0NCwweDQxLDB4RTMsMHgzOCwweDhE
LDB4MEYsMHhBRSwweDhELAorICAgIDB4NDQsMHg0MSwweEUyLDB4MzgsMHg3QSwweEMyLDB4NjAs
MHhGRSwweDAzLDB4MzksMHhDMiwweDMwLDB4NzgsMHhGNCwweEI3LDB4QkUsCisgICAgMHgyMyww
eDM5LDB4QzIsMHgzMCwweEQ5LDB4QkIsMHhBQiwweEEyLDB4MjQsMHg0MSwweEUzLDB4MzAsMHhG
NSwweEZCLDB4RUEsMHgyQiwKKyAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4MkYsMHhCQSwweEZF
LDB4N0UsMHg0NCwweDQxLDB4QzIsMHgzMCwweEZFLDB4QUEsMHhBQiwweDI1LAorICAgIDB4NjQs
MHg0OSwweEUzLDB4MzgsMHgwOSwweEE3LDB4RDUsMHhGRiwweDg0LDB4NTEsMHgwMywweDQxLDB4
ODIsMHhCRCwweDU1LDB4NUQsCisgICAgMHg4NSwweDUxLDB4MjMsMHg0MSwweDM2LDB4M0YsMHgz
NywweDk1LDB4NDcsMHg3MiwweEE1LDB4NTksMHhFRiwweEJGLDB4QTksMHgwRCwKKyAgICAweDQ3
LDB4NzIsMHhBNSwweDU5LDB4QUIsMHgwRiwweDM3LDB4RkUsMHg2NywweDdBLDB4RTUsMHg2MSww
eDNELDB4QjUsMHg1RSwweEQ3LAorICAgIDB4NjcsMHg3MiwweEU1LDB4NjEsMHgyQywweDlFLDB4
RjMsMHhBQiwweDI5LDB4OEIsMHg2NywweDcyLDB4MjMsMHhBOSwweEJELDB4QkQsCisgICAgMHgz
NSwweEU2LDB4MjksMHg4QiwweDBCLDB4MDksMHgyRCwweDJELDB4NTUsMHhFRSwweDE0LDB4RTYs
MHhBQSwweEVBLDB4N0YsMHg1NSwKKyAgICAweDM1LDB4RTYsMHhCMywweEQ1LDB4RTgsMHhGOCww
eDZBLDB4N0EsMHhCMywweEQ1LDB4RjEsMHhCQywweEIwLDB4M0MsMHhCRSwweEI2LAorICAgIDB4
QjQsMHhENSwweDUyLDB4QzUsMHhFOCwweEVBLDB4RUEsMHg1QSwweDczLDB4Q0QsMHgzMiwweEM1
LDB4MkYsMHhFNywweEVFLDB4RkYsCisgICAgMHg1MiwweEM1LDB4RDEsMHhCNCwweEUwLDB4QTgs
MHhGOCwweDc4LDB4MTEsMHhCRCwweEVFLDB4OUIsMHhFOCwweEVBLDB4NjgsMHg3QSwKKyAgICAw
eDZGLDB4QUMsMHhDRCwweDkzLDB4MkQsMHhBRiwweDJGLDB4MjUsMHhCMCwweEI0LDB4NEYsMHhB
NCwweDJCLDB4OEIsMHhFQSwweDdFLAorICAgIDB4QjAsMHhCNCwweDJFLDB4QTQsMHhGQywweEZF
LDB4OTcsMHhCRiwweEIwLDB4QjQsMHg0RiwweEE0LDB4OUYsMHgzRiwweEFBLDB4NEUsCisgICAg
MHg2MywweDU5LDB4MjIsMHg1MSwweDBCLDB4OEEsMHhBMCwweEM5LDB4ODQsMHg1OSwweDQzLDB4
NTksMHg5RSwweDE3LDB4NkQsMHhGRCwKKyAgICAweDgzLDB4NjEsMHgyMywweDUxLDB4RUEsMHg3
QSwweEZGLDB4N0QsMHg2MywweDU5LDB4MjMsMHg1MSwweDhBLDB4MkIsMHhBRSwweEY2LAorICAg
IDB4NjMsMHg1OSwweDIzLDB4NTEsMHgzRSwweDc4LDB4RUUsMHg3NywweDQzLDB4NTEsMHgwMiww
eDQ5LDB4QUEsMHhCQywweDlBLDB4MkUsCisgICAgMHg0MywweDUxLDB4MDIsMHg0OSwweEFFLDB4
MjMsMHhBMCwweDVFLDB4NDQsMHg1MSwweDAzLDB4NDksMHhGQSwweERDLDB4RDcsMHhGQiwKKyAg
ICAweDQ0LDB4NTksMHgwMiwweDQ5LDB4RTcsMHhCNywweDNGLDB4MEEsMHg2NCwweDU5LDB4MjMs
MHg1MSwweEE5LDB4QUYsMHhCRSwweERDLAorICAgIDB4OEIsMHg5QiwweEU2LDB4NjksMHgwRCww
eDA5LDB4MDksMHgwQiwweEVDLDB4QUIsMHg4QiwweDlCLDB4MEIsMHgyRiwweDg5LDB4MkYsCisg
ICAgMHgwRCwweEFDLDB4OEIsMHhBMywweDdBLDB4N0UsMHhCQSwweDgyLDB4Q0MsMHhBQiwweDQ5
LDB4OTMsMHhERiwweDdCLDB4NTgsMHg3OCwKKyAgICAweDZBLDB4OTMsMHhDOCwweDgyLDB4QTAs
MHhGQSwweEZFLDB4N0YsMHgyOSwweDkzLDB4QzgsMHg4QSwweDc4LDB4NTYsMHhERCwweEI3LAor
ICAgIDB4RTksMHg4QSwweDY2LDB4NzIsMHg1QywweDVDLDB4NTgsMHg1OCwweDY2LDB4NzIsMHgy
NiwweDcyLDB4RUEsMHhCQSwweEJBLDB4RkEsCisgICAgMHg0NiwweDcyLDB4MDYsMHg2QSwweEZD
LDB4QjgsMHgyOCwweEUyLDB4NjcsMHg3QSwweDI2LDB4NzIsMHhENSwweEJELDB4RkQsMHgyRCwK
KyAgICAweEM4LDB4ODIsMHg0NiwweDcyLDB4QTksMHgyQiwweDJCLDB4OEEsMHhBNywweDdBLDB4
MDMsMHg0OSwweDVFLDB4NzgsMHg3MCwweEUwLAorICAgIDB4RTMsMHgzOCwweEEyLDB4MzAsMHgz
OCwweDNBLDB4RkUsMHg2MCwweDAzLDB4NDEsMHhBMiwweDMwLDB4ODIsMHhFQSwweEZCLDB4N0Qs
CisgICAgMHgyNCwweDQxLDB4QzIsMHgzMCwweEE1LDB4MjUsMHhCRCwweEY1LDB4MjQsMHg0MSww
eEMzLDB4MzgsMHgyRSwweEVFLDB4RkUsMHhGRSwKKyAgICAweDQ0LDB4NDEsMHhFMywweDM4LDB4
N0MsMHhGQiwweEFELDB4RjUsMHg0NCwweDQ5LDB4RTMsMHg0MCwweERGLDB4NTcsMHg3RiwweDBB
LAorICAgIDB4NjUsMHg0OSwweEUzLDB4NDAsMHgyRiwweEJELDB4RkYsMHhGQSwweDY0LDB4NDks
MHhDMiwweDMwLDB4NzgsMHg2QSwweEZBLDB4RjIsCisgICAgMHgwMywweDM5LDB4QTIsMHgzMCww
eDdELDB4NTcsMHg1QywweERBLDB4RTMsMHgzOCwweEEyLDB4MjgsMHgyRCwweDJELDB4OEQsMHgw
QSwKKyAgICAweEE1LDB4NTEsMHgwMywweDM5LDB4RjUsMHhCNSwweEI1LDB4MzUsMHg4NSwweDUx
LDB4MjMsMHg0MSwweERGLDB4NUYsMHg3RSwweDcwLAorICAgIDB4NDQsMHg0OSwweEUzLDB4Mzgs
MHg1RSwweDdBLDB4N0EsMHg1QSwweDI0LDB4MzksMHhDMiwweDMwLDB4OEUsMHhCQiwweEZFLDB4
REYsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEJBLDB4NTYsMHhENSwweEY1LDB4MjMsMHgz
OSwweEMyLDB4MzAsMHgwMiwweEVBLDB4NzcsMHg3NywKKyAgICAweDAzLDB4MzksMHhDMiwweDMw
LDB4QkMsMHhBQSwweDdFLDB4QUIsMHgwMywweDQxLDB4RTIsMHgzMCwweEZFLDB4RjUsMHg3RCww
eDVGLAorICAgIDB4MjQsMHgzOSwweEMzLDB4MzAsMHgwQiwweEJBLDB4RUIsMHg3RSwweDI0LDB4
MzksMHhDMiwweDMwLDB4MkEsMHhBQSwweEUyLDB4QTksCisgICAgMHgwMywweDM5LDB4RTMsMHgz
MCwweEMwLDB4MDgsMHg4OCwweEVFLDB4MjMsMHg0MSwweEMyLDB4MzAsMHhCNSwweEJGLDB4M0Us
MHhCRSwKKyAgICAweDIzLDB4NDEsMHgwMywweDM5LDB4NTAsMHhCMCwweEUzLDB4MkYsMHgyMyww
eDQxLDB4RTMsMHgzOCwweDc2LDB4RTUsMHhFNywweEE4LAorICAgIDB4NjQsMHg0OSwweDAzLDB4
MzksMHgyQiwweDJCLDB4MEQsMHhCNSwweDQ3LDB4NzIsMHg2NCwweDUxLDB4MjcsMHhGNSwweEY1
LDB4NTUsCisgICAgMHg4NywweDdBLDB4QTUsMHg1OSwweEU4LDB4ODIsMHgwOSwweEI1LDB4NDcs
MHg3MiwweEE1LDB4NTksMHhCRiwweDJGLDB4RDQsMHg1OCwKKyAgICAweDg3LDB4N0EsMHgwNSww
eDYyLDB4QUYsMHgwQSwweDJBLDB4QTksMHhBOCwweDdBLDB4NjcsMHg3MiwweDNGLDB4QkEsMHhF
OCwweDgwLAorICAgIDB4OTMsMHhENSwweEM5LDB4ODIsMHgwOSwweDBELDB4MkQsMHgyRCwweDE0
LDB4RTYsMHg3MiwweENELDB4ODgsMHhBQSwweEZGLDB4NUQsCisgICAgMHhGNCwweERELDB4MzIs
MHhDNSwweEEwLDB4RTgsMHhFQSwweDdBLDB4OTMsMHhDRCwweEYxLDB4QkMsMHgwNywweDBGLDB4
MDksMHhBOSwKKyAgICAweDczLDB4Q0QsMHgxMSwweEJELDB4QTAsMHg2MCwweDQwLDB4QTAsMHg3
MywweENELDB4RDAsMHhCNCwweDBCLDB4MkYsMHhCNSwweEZGLAorICAgIDB4NTIsMHhDNSwweEIw
LDB4QjQsMHhFOCwweDc4LDB4REUsMHg3NywweDkwLDB4QUMsMHgyQiwweDdCLDB4RTAsMHhGMCww
eDc4LDB4NTgsCisgICAgMHg3MCwweEFDLDB4OEMsMHg4QiwweDJGLDB4MkQsMHgwOSwweEFCLDB4
OTAsMHhBQywweDBFLDB4OUMsMHhGOCwweERGLDB4RkYsMHhBNywKKyAgICAweDhGLDB4QUMsMHg0
RiwweEE0LDB4MEQsMHg2RCwweEZELDB4RDgsMHhEMCwweEI0LDB4MEUsMHg5QywweEZGLDB4QkQs
MHhCRCwweDJBLAorICAgIDB4ODQsMHg1OSwweDQzLDB4NTEsMHhENSwweEVELDB4MkUsMHgzQSww
eDYzLDB4NTksMHgyMiwweDUxLDB4ODMsMHg0MiwweDYyLDB4RkUsCisgICAgMHg0MywweDUxLDB4
MDIsMHg0OSwweEE4LDB4MkEsMHgzQSwweEI3LDB4NDMsMHg1MSwweDIyLDB4NTEsMHgwNCwweDAy
LDB4QzIsMHg0QywKKyAgICAweDQzLDB4NTEsMHgwMiwweDQ5LDB4RkUsMHg3QSwweEJBLDB4QjQs
MHg0NCwweDUxLDB4MDIsMHg0OSwweEFCLDB4RUIsMHhCQSwweEJBLAorICAgIDB4NDMsMHg1MSww
eDAzLDB4NDksMHhEQywweEJGLDB4OEIsMHhBNywweDQ0LDB4NTksMHgwMywweDQ5LDB4NUUsMHhG
RiwweEJGLDB4MjcsCisgICAgMHg2NCwweDU5LDB4MDMsMHg1MSwweEFELDB4QUYsMHhBMiwweEVB
LDB4QTQsMHg2MSwweDI0LDB4NTEsMHg5NywweDlGLDB4QkYsMHgxNywKKyAgICAweEFCLDB4QTMs
MHg0NywweDdBLDB4MDksMHgwQiwweDBCLDB4MEIsMHgwRCwweEFDLDB4QUIsMHhBMywweEFELDB4
M0QsMHhGNSwweEZELAorICAgIDB4MkQsMHhCNCwweEVDLDB4QUIsMHg3QSwweEYyLDB4NjUsMHg1
NSwweEVDLDB4QUIsMHg0QSwweDkzLDB4N0EsMHg3QywweEE4LDB4ODAsCisgICAgMHg4QiwweEEz
LDB4QzgsMHg4MiwweDdFLDB4N0UsMHhFMiwweEEwLDB4MjksMHg4QiwweEM4LDB4ODIsMHhCRiww
eDdELDB4REYsMHg3OCwKKyAgICAweEM4LDB4ODIsMHgyNiwweDZBLDB4RjgsMHg2OCwweDc4LDB4
NzgsMHg0NiwweDcyLDB4MjYsMHg2QSwweDYwLDB4RjAsMHg4QiwweEFFLAorICAgIDB4NDYsMHg3
MiwweDI1LDB4NkEsMHhFQiwweEFCLDB4RkIsMHgzRSwweEM4LDB4ODIsMHgyNiwweDcyLDB4QkQs
MHhBRiwweEFGLDB4MEIsCisgICAgMHhDOSwweDgyLDB4ODgsMHg4MiwweEJCLDB4NkEsMHg4QSww
eDBBLDB4QTgsMHg4MiwweDI2LDB4NkEsMHg2OCwweDY4LDB4RTgsMHhFMCwKKyAgICAweEU1LDB4
NjEsMHhDMiwweDM4LDB4NTYsMHg3RSwweDdDLDB4NzgsMHhBMiwweDMwLDB4NjEsMHgyOCwweDA4
LDB4MkEsMHgzQywweEFFLAorICAgIDB4RTMsMHgzOCwweEEyLDB4MzAsMHgyRSwweEVELDB4RDUs
MHg1RCwweDAzLDB4MzksMHhBMiwweDMwLDB4RTIsMHhFQiwweDdELDB4NUQsCisgICAgMHgwMyww
eDQxLDB4QTEsMHgzMCwweDBFLDB4QUEsMHhFOSwweEJELDB4NDQsMHg0OSwweEUzLDB4MzgsMHgw
RSwweDI1LDB4QkQsMHhGRCwKKyAgICAweDY1LDB4NDksMHgwMywweDQxLDB4NzAsMHhFMiwweEJG
LDB4REQsMHgyNCwweDQxLDB4RTMsMHgzOCwweEUwLDB4QkUsMHg3NiwweERDLAorICAgIDB4MDMs
MHgzOSwweDgyLDB4MjgsMHhFQSwweEZBLDB4RkMsMHg1OCwweEUzLDB4MzgsMHhBMiwweDMwLDB4
MjIsMHgwMywweDBCLDB4Q0QsCisgICAgMHg2NSwweDQ5LDB4QzIsMHgzMCwweDJCLDB4MDksMHgy
OSwweEVELDB4QTUsMHg1MSwweDAzLDB4NDEsMHhFOCwweEVBLDB4NkYsMHg1NSwKKyAgICAweDI0
LDB4NDEsMHhDMiwweDMwLDB4RTAsMHhFOCwweEVBLDB4N0UsMHhFMywweDM4LDB4QzIsMHgzMCww
eDcyLDB4RkMsMHgzNywweDI5LAorICAgIDB4RTMsMHgzOCwweEMzLDB4MjgsMHhBQSwweDBCLDB4
MDgsMHhBOCwweDAzLDB4MzksMHhDMiwweDMwLDB4N0UsMHg3QSwweDJBLDB4RUEsCisgICAgMHhF
MywweDM4LDB4QzIsMHgzMCwweEFCLDB4NDIsMHhEQiwweDk1LDB4MDMsMHgzOSwweEMyLDB4MzAs
MHhGQSwweEY3LDB4RjcsMHhENCwKKyAgICAweDAzLDB4MzksMHhFMywweDMwLDB4N0QsMHhENyww
eEQ2LDB4MkQsMHgwMywweDM5LDB4QzIsMHgzMCwweDhGLDB4RUUsMHhCNiwweDhBLAorICAgIDB4
MDMsMHgzOSwweEMyLDB4MzAsMHhGRCwweDU3LDB4NUUsMHhBOCwweDAzLDB4MzksMHhDMiwweDMw
LDB4QkIsMHhCRiwweDJELDB4MkEsCisgICAgMHg0NCwweDQxLDB4MDMsMHgzOSwweEJGLDB4RUQs
MHgwRCwweDA5LDB4NDQsMHg0MSwweDAzLDB4MzksMHhGQSwweDZCLDB4NzgsMHhGQywKKyAgICAw
eDIzLDB4NDEsMHhFMiwweDM4LDB4NzAsMHg2MCwweEVBLDB4QjIsMHg2NCwweDQ5LDB4MDMsMHg0
MSwweDIzLDB4MjksMHhENSwweDU1LAorICAgIDB4QTUsMHg1OSwweDQ0LDB4NDksMHhBQSwweEU5
LDB4RkYsMHhGOSwweEU2LDB4NjEsMHg0MywweDQ5LDB4QTAsMHhBMywweEJGLDB4QjUsCisgICAg
MHg4OCwweDdBLDB4QTUsMHg1OSwweDJELDB4MkQsMHgyRCwweDI3LDB4RTgsMHg4MiwweDY3LDB4
N0EsMHhFRSwweEU3LDB4QjYsMHhEOCwKKyAgICAweDMxLDB4QzUsMHhDOCwweDgyLDB4MkQsMHhB
NSwweDM1LDB4QjUsMHg5MiwweEQ1LDB4RDAsMHhCQywweEEyLDB4OEIsMHgyQiwweEFELAorICAg
IDB4NzIsMHhDRCwweEYxLDB4QkMsMHg0MCwweDcyLDB4RkEsMHhGMiwweDk0LDB4Q0QsMHgxMSww
eEJELDB4RTksMHhFMywweEMyLDB4QzIsCisgICAgMHg1MiwweEM1LDB4RDAsMHhCNCwweDBBLDB4
QkYsMHhGRSwweDdFLDB4MzIsMHhDNSwweDhGLDB4QUMsMHhFMCwweDcwLDB4N0EsMHg3RiwKKyAg
ICAweEIwLDB4QjQsMHg0RiwweEE0LDB4MEMsMHg4RiwweEVGLDB4QUIsMHhCMCwweEFDLDB4RUEs
MHg3QSwweERFLDB4OTYsMHgyNiwweDAwLAorICAgIDB4RjEsMHhCQywweDRFLDB4QTQsMHg1NSww
eDM5LDB4MDAsMHgwOCwweDMyLDB4QkQsMHg4RiwweEFDLDB4RDUsMHhGQSwweEUwLDB4ODAsCisg
ICAgMHhGMSwweEJDLDB4NkYsMHhBQywweEZCLDB4N0YsMHhGRSwweEE4LDB4QjAsMHhBQywweDZG
LDB4QUMsMHhGRSwweERFLDB4REYsMHg3OCwKKyAgICAweDYzLDB4NTksMHgyMywweDUxLDB4NDIs
MHhGRSwweEZFLDB4NzUsMHg0NCwweDU5LDB4MjMsMHg0OSwweEZBLDB4QTIsMHhCQiwweEY3LAor
ICAgIDB4NDMsMHg1MSwweDIzLDB4NTEsMHhCNSwweDZGLDB4OEIsMHg3NiwweDQzLDB4NTEsMHgw
MywweDQ5LDB4QTIsMHg3QSwweDdBLDB4NzYsCisgICAgMHg0NCwweDUxLDB4MDIsMHg0OSwweDM1
LDB4RDUsMHhCRiwweEFCLDB4NDMsMHg1MSwweDAzLDB4NDksMHg5QSwweEY3LDB4QTcsMHhBQiwK
KyAgICAweDYzLDB4NTksMHgwMywweDUxLDB4REYsMHg1RiwweEQ3LDB4RkYsMHg2NCwweDU5LDB4
MDMsMHg1MSwweDhELDB4QUYsMHhBQSwweDJDLAorICAgIDB4NjQsMHg1OSwweDIzLDB4NTEsMHg1
QywweEY2LDB4QkUsMHhBRiwweDY3LDB4N0EsMHg0MywweDU5LDB4RDUsMHg5NSwweDE1LDB4MTUs
CisgICAgMHhBQiwweEEzLDB4MjksMHg5MywweDI5LDB4MjksMHgwOSwweDBCLDB4RUMsMHhBQiww
eDhCLDB4OUIsMHgyQiwweEJFLDB4RkUsMHg3RiwKKyAgICAweDBELDB4QUMsMHg2QiwweDlCLDB4
MDIsMHgwQSwweERGLDB4NTUsMHhFQywweEFCLDB4MkEsMHg5MywweDAwLDB4MDAsMHhBQSwweERG
LAorICAgIDB4RUMsMHhBQiwweEU4LDB4OEEsMHhBOCwweEEwLDB4RkEsMHg1RiwweDhCLDB4OUIs
MHg4NywweDdBLDB4RjgsMHg3OCwweDU2LDB4NTcsCisgICAgMHhBOCwweDdBLDB4NDYsMHg3Miww
eDVDLDB4NUYsMHg1NywweDU3LDB4NDYsMHg3MiwweDI2LDB4NkEsMHg5OCwweDg4LDB4RjgsMHhE
RiwKKyAgICAweEM4LDB4ODIsMHgyNiwweDZBLDB4RjUsMHhGRCwweEI1LDB4MEQsMHhDOCwweDgy
LDB4ODcsMHg3QSwweDg5LDB4RTMsMHhBQSwweDdDLAorICAgIDB4QTgsMHg4MiwweDA1LDB4NkEs
MHgwMCwweEU4LDB4N0MsMHg1NywweDg3LDB4N0EsMHhDNCwweDYxLDB4QTgsMHhFRSwweEQ1LDB4
NTUsCisgICAgMHgyNiwweDZBLDB4MDMsMHg0MSwweDU4LDB4NzgsMHg3MiwweEUyLDB4RTMsMHg0
MCwweDYxLDB4MjgsMHhGRiwweEZFLDB4QjYsMHg5QywKKyAgICAweEUzLDB4MzgsMHhBMiwweDMw
LDB4NTcsMHg3RiwweEZFLDB4OEIsMHhFMywweDM4LDB4QTIsMHgzMCwweEQ1LDB4QjcsMHhCQSww
eEUyLAorICAgIDB4MDMsMHg0MSwweEEyLDB4MzAsMHgzRCwweEFBLDB4MEIsMHgwMiwweDI0LDB4
NDEsMHhDMiwweDM4LDB4QkYsMHhENywweDlFLDB4MEYsCisgICAgMHg0NCwweDQ5LDB4RTMsMHgz
OCwweEE5LDB4MDMsMHgwMywweDgyLDB4NDQsMHg0OSwweEUzLDB4MzgsMHg1NywweEVBLDB4QUEs
MHhBQSwKKyAgICAweDI0LDB4NDEsMHhBMiwweDI4LDB4N0IsMHg2RiwweEU4LDB4QTAsMHhDMyww
eDMwLDB4ODEsMHgyOCwweDhGLDB4RUYsMHgyRiwweDJDLAorICAgIDB4MjQsMHg0MSwweEEyLDB4
MzAsMHhCRiwweEI1LDB4M0YsMHgyRiwweDQ1LDB4NDEsMHhDMywweDM4LDB4RkUsMHhFOCwweEUy
LDB4NzIsCisgICAgMHhFMywweDMwLDB4QTIsMHgzMCwweEZFLDB4NTUsMHg1RiwweEVCLDB4RTMs
MHgzMCwweEEyLDB4MzAsMHhCRiwweEZGLDB4RkYsMHgyQSwKKyAgICAweEUzLDB4MzgsMHhBMiww
eDI4LDB4MEEsMHhCQiwweEZFLDB4QkYsMHgyNCwweDM5LDB4QzIsMHgzMCwweEZGLDB4RjUsMHhG
RCwweDJGLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhENywweEJGLDB4QkUsMHhFMiwweEUz
LDB4MzgsMHhDMiwweDMwLDB4OTgsMHhEOCwweDcyLDB4RkQsCisgICAgMHgwNCwweDQxLDB4RTIs
MHgzMCwweEZELDB4RkYsMHgyQiwweDBCLDB4NDQsMHg0MSwweEUzLDB4MzgsMHg3NywweEZGLDB4
N0YsMHhGMiwKKyAgICAweDI0LDB4NDEsMHhFMiwweDM4LDB4REYsMHg3QSwweDIwLDB4MjAsMHgy
NCwweDQxLDB4RTIsMHgzOCwweERELDB4QkIsMHhBQiwweDA4LAorICAgIDB4ODQsMHg0OSwweDAz
LDB4NDEsMHhGRiwweDY5LDB4RTMsMHhGRiwweDIzLDB4NDEsMHhFMywweDM4LDB4QTIsMHhGMCww
eEY4LDB4QjgsCisgICAgMHg0NCwweDQxLDB4MDMsMHgzOSwweEZGLDB4NUQsMHhBRiwweEEwLDB4
MjMsMHg0MSwweEUyLDB4MzgsMHgwMiwweDg5LDB4QUUsMHgyQSwKKyAgICAweEE1LDB4NTEsMHgy
MywweDQxLDB4QTksMHhBRCwweEJELDB4RjUsMHhDNSwweDU5LDB4NjQsMHg1MSwweDlGLDB4QjAs
MHhCRiwweEFELAorICAgIDB4NjcsMHg3MiwweEU2LDB4NjEsMHgyRCwweDI3LDB4MkIsMHhBOSww
eEM4LDB4ODIsMHgyNiwweDZBLDB4RTgsMHg4MiwweDhBLDB4OUQsCisgICAgMHg2RSwweEFDLDB4
NjcsMHg3MiwweDI1LDB4QjUsMHgzNSwweDk1LDB4OTMsMHhDRCwweEFGLDB4QkMsMHhCRCwweDJE
LDB4MEIsMHgwQiwKKyAgICAweDkzLDB4Q0QsMHg2RiwweEFDLDB4QjAsMHhGOCwweDlDLDB4QkUs
MHg5NCwweENELDB4RjEsMHhCQywweEEyLDB4QTIsMHhFMiwweDU4LAorICAgIDB4NTMsMHhDNSww
eEIwLDB4QjQsMHg3QSwweDc4LDB4NjIsMHg3RiwweDkwLDB4QUMsMHhFRSwweDlCLDB4MjgsMHgw
QSwweEEwLDB4N0MsCisgICAgMHhEMCwweEI0LDB4Q0QsMHg5MywweDAyLDB4ODAsMHhFQSwweEY1
LDB4QjAsMHhCNCwweDBFLDB4OUMsMHhBMCwweEZGLDB4RDcsMHg3NSwKKyAgICAweDZGLDB4QUMs
MHhDQywweDkzLDB4MDAsMHhBQSwweDVGLDB4NzcsMHgxMSwweEJELDB4Q0QsMHg5QiwweDAyLDB4
QUYsMHhGRCwweEQ1LAorICAgIDB4MTEsMHhCRCwweDRGLDB4QTQsMHgwMCwweDhBLDB4MkYsMHhE
NSwweDMyLDB4QzUsMHhCMCwweEI0LDB4N0YsMHgyQSwweDgwLDB4MDksCisgICAgMHg0MywweDUx
LDB4MjMsMHg1MSwweEFFLDB4QjAsMHgzQywweDk0LDB4NDMsMHg1MSwweDAzLDB4NDksMHgyRiww
eDM2LDB4QkMsMHg1QSwKKyAgICAweDQzLDB4NTEsMHhFMiwweDQwLDB4MDAsMHhBMiwweEYwLDB4
RkUsMHg0NCwweDUxLDB4MDMsMHg0OSwweDU3LDB4RDUsMHhBNSwweEJELAorICAgIDB4NDMsMHg1
MSwweDIzLDB4NDksMHg2NSwweEJGLDB4M0EsMHhFOCwweDQzLDB4NTEsMHgyMywweDUxLDB4QjUs
MHg3RSwweDlCLDB4OUQsCisgICAgMHg0NCwweDU5LDB4MjMsMHg1MSwweDBGLDB4QTMsMHg0MCww
eDAyLDB4NjQsMHg1OSwweDIzLDB4NTEsMHhCNCwweEU3LDB4NkYsMHhGNywKKyAgICAweDQzLDB4
NTksMHgwMywweDUxLDB4QTIsMHhBMywweEEyLDB4NjgsMHgyOSwweDkzLDB4NDMsMHg1MSwweEI1
LDB4MzUsMHgzNSwweDI1LAorICAgIDB4QUIsMHhBMywweDRBLDB4OTMsMHgwOSwweEFCLDB4ODIs
MHhFQiwweENCLDB4QTMsMHhBOCwweDgyLDB4QTAsMHhBOCwweEZBLDB4N0UsCisgICAgMHg0Qiww
eDlCLDB4ODcsMHg3QSwweDAwLDB4QUEsMHg3RSwweDU1LDB4MDksMHg4QiwweDY3LDB4NzIsMHgw
MCwweEVFLDB4NzcsMHg1NSwKKyAgICAweEU5LDB4OEEsMHg2NywweDcyLDB4RjAsMHg3RSwweEQ1
LDB4NTUsMHg4NywweDdBLDB4NDYsMHg3MiwweEU4LDB4N0YsMHg1QSwweDVGLAorICAgIDB4ODYs
MHg3MiwweDI2LDB4NzIsMHhERCwweDdCLDB4RjcsMHhERiwweDg3LDB4NzIsMHgyNSwweDZBLDB4
RjcsMHhCQiwweEJCLDB4MkEsCisgICAgMHhDOCwweDgyLDB4NDYsMHg3MiwweDhGLDB4MEIsMHhB
MiwweDcyLDB4ODcsMHg3QSwweDA1LDB4NkEsMHhDMCwweDY4LDB4N0UsMHg3NywKKyAgICAweDI2
LDB4NkEsMHhDNCwweDYxLDB4NTgsMHhGNiwweEFBLDB4RUEsMHgwNiwweDZBLDB4QzQsMHg2MSww
eDU1LDB4QkYsMHhCQSwweDIwLAorICAgIDB4MDYsMHg2QSwweEE1LDB4NTksMHg2QiwweEVGLDB4
QzgsMHg4MCwweEE1LDB4NTksMHhDMiwweDM4LDB4NTcsMHg1RSwweDU4LDB4NzgsCisgICAgMHgw
NCwweDQxLDB4ODEsMHgyOCwweDBCLDB4RjUsMHg3NSwweEZGLDB4MjQsMHg0MSwweEEyLDB4MzAs
MHhFQSwweDBCLDB4QUQsMHhCRCwKKyAgICAweDAzLDB4MzksMHhBMiwweDMwLDB4QkEsMHhGRiww
eDVDLDB4NUEsMHg0NCwweDQ5LDB4QzIsMHgzMCwweEFCLDB4MkIsMHgyOSwweDg5LAorICAgIDB4
NjUsMHg0OSwweDI0LDB4NDEsMHg2RSwweDcwLDB4NzgsMHhCNywweDQ0LDB4NDksMHgwMywweDQx
LDB4REQsMHhBRSwweDdDLDB4RjgsCisgICAgMHg0NCwweDQxLDB4RTMsMHgzOCwweDc2LDB4QkYs
MHhBRiwweDJGLDB4MDQsMHgzOSwweEEyLDB4MjgsMHhERSwweEY4LDB4N0MsMHg1QywKKyAgICAw
eDI0LDB4NDEsMHg4MiwweDI4LDB4MEIsMHgyQiwweEU3LDB4RDUsMHgwNCwweDQxLDB4QTIsMHgy
OCwweEUwLDB4QjgsMHhCRiwweEJELAorICAgIDB4MDQsMHgzOSwweEMzLDB4MzAsMHhCRiwweEVB
LDB4NUEsMHg1NywweDAzLDB4MzksMHhBMiwweDI4LDB4QjMsMHhGQSwweEY3LDB4RkYsCisgICAg
MHgwMywweDM5LDB4QTIsMHgyOCwweEJELDB4QjcsMHgzRiwweEFGLDB4MjQsMHg0MSwweEMzLDB4
MzAsMHgyMiwweDAyLDB4Q0EsMHhGRiwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4NzAsMHg1
MCwweEVFLDB4QjcsMHgwMywweDM5LDB4QzMsMHgzMCwweEI1LDB4M0UsMHhGRSwweDlELAorICAg
IDB4NjUsMHg0OSwweDAzLDB4MzksMHhGRCwweEFGLDB4MkQsMHgyOSwweDY0LDB4NDksMHgwMyww
eDM5LDB4NUYsMHhFRSwweEU4LDB4NzAsCisgICAgMHg2NSwweDQ5LDB4MDIsMHg0MSwweEFBLDB4
QUEsMHg4MiwweEE5LDB4NjQsMHg0OSwweEUzLDB4MzgsMHhBQywweEVBLDB4RUUsMHg1RSwKKyAg
ICAweDQ0LDB4NDksMHhDMiwweDMwLDB4QTIsMHhBRSwweEQ2LDB4NUYsMHgyMywweDQxLDB4QzEs
MHgzMCwweDI4LDB4QTAsMHg3QSwweEZELAorICAgIDB4NDQsMHg0MSwweEMyLDB4MzAsMHhBMCww
eEVCLDB4QkYsMHhCNSwweDQ0LDB4NDEsMHgwMywweDM5LDB4OUIsMHhEOSwweDZCLDB4RUQsCisg
ICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweEEwLDB4QUIsMHhCOSwweEZCLDB4QTUsMHg1OSwweDAz
LDB4NDEsMHgwQiwweEFFLDB4MkIsMHgwNSwKKyAgICAweDI2LDB4NkEsMHhBNSwweDU5LDB4MkQs
MHgyNSwweDM5LDB4M0IsMHg2NywweDcyLDB4RTUsMHg2MSwweDk3LDB4OTYsMHhGQywweEYwLAor
ICAgIDB4NkIsMHg5MywweDI2LDB4NkEsMHgzNSwweDNELDB4MTUsMHgxRCwweDcyLDB4Q0QsMHhE
MCwweEJDLDB4MDMsMHgwMSwweDAxLDB4ODEsCisgICAgMHg1MywweEM1LDB4NkYsMHhBQywweDJF
LDB4MkUsMHgyNywweEZELDB4OTMsMHhDRCwweDRFLDB4QTQsMHhFMCwweEU4LDB4N0UsMHg1NywK
KyAgICAweEQwLDB4QjQsMHhBRCwweDkzLDB4QTAsMHhFQSwweDdGLDB4NUYsMHgyRSwweEE0LDB4
OEMsMHg4QiwweEY4LDB4NUYsMHg3NywweDc1LAorICAgIDB4RUUsMHg5QiwweDhDLDB4OEIsMHgw
QiwweEFELDB4QTUsMHg5RCwweDBFLDB4OUMsMHhBRCwweDkzLDB4MkEsMHhGNSwweDJELDB4RkYs
CisgICAgMHgyRSwweDlDLDB4OEMsMHg4QiwweDhBLDB4QTIsMHhGQSwweDdBLDB4MkUsMHhBNCww
eDZDLDB4ODMsMHgyRiwweDM3LDB4MzcsMHg5NSwKKyAgICAweDhGLDB4QUMsMHgyRiwweEE0LDB4
QkYsMHgyQiwweDI3LDB4MkIsMHgzMiwweEM1LDB4OEYsMHhBQywweERELDB4QUIsMHgyQiwweDBC
LAorICAgIDB4NDMsMHg1MSwweDIzLDB4NTEsMHhGNiwweDM5LDB4OTYsMHhENSwweDIzLDB4NTEs
MHgwMiwweDQ5LDB4QzgsMHg2QSwweDc4LDB4NTQsCisgICAgMHgyMywweDQ5LDB4RTIsMHg0OCww
eEU3LDB4MkYsMHg4MiwweDJBLDB4NjQsMHg1MSwweDAyLDB4NDksMHhFRCwweEVELDB4QUYsMHhD
RiwKKyAgICAweDQ0LDB4NTEsMHgwMiwweDQ5LDB4ODAsMHhCMCwweEZGLDB4QTYsMHg0NCwweDU5
LDB4MjIsMHg0OSwweDNGLDB4MjksMHg4MSwweEI4LAorICAgIDB4NDQsMHg1OSwweDIzLDB4NTEs
MHgwMCwweDIwLDB4REIsMHhGMSwweDY0LDB4NTksMHgwMywweDUxLDB4QTIsMHhCMiwweDdBLDB4
RkIsCisgICAgMHg0MywweDU5LDB4MDMsMHg1MSwweERFLDB4RkUsMHhGNiwweDc1LDB4NkEsMHg5
QiwweDQzLDB4NTksMHgyNSwweDI1LDB4MjUsMHgyRCwKKyAgICAweDZBLDB4OUIsMHhDOCwweDgy
LDB4MDAsMHg4MCwweEU4LDB4N0EsMHgyOSwweDkzLDB4NjcsMHg3MiwweEU4LDB4NUUsMHg1Nyww
eDVGLAorICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhGQywweDcyLDB4RUUsMHg5RSwweDg3LDB4
N0EsMHg0NiwweDcyLDB4QUIsMHhCRSwweDNBLDB4QkUsCisgICAgMHg4NywweDdBLDB4NDYsMHg3
MiwweEJBLDB4QkMsMHhFRiwweEJGLDB4ODcsMHg3QSwweDQ2LDB4NzIsMHg3QSwweERBLDB4OUUs
MHg3RSwKKyAgICAweDY3LDB4N0EsMHg0NiwweDcyLDB4NTcsMHg3QSwweEI1LDB4QUQsMHhBOCww
eDdBLDB4NDYsMHg3MiwweDM1LDB4MkYsMHhBRiwweEZCLAorICAgIDB4QTgsMHg3QSwweDA1LDB4
NkEsMHg2MCwweDVGLDB4NTcsMHg1NywweDA1LDB4NkEsMHhDNSwweDYxLDB4QzAsMHg5OCwweEVB
LDB4NUYsCisgICAgMHgwNSwweDZBLDB4QzUsMHg2MSwweEUyLDB4QkUsMHhCOCwweEZGLDB4MjYs
MHg2QSwweEU1LDB4NjksMHhBRiwweDBBLDB4MEQsMHgwRiwKKyAgICAweDQ3LDB4NzIsMHgwNiww
eDZBLDB4N0IsMHhBQiwweDhGLDB4MkEsMHgyNiwweDZBLDB4RTMsMHgzOCwweDVBLDB4N0MsMHg3
OCwweEUwLAorICAgIDB4QzIsMHgzOCwweDgxLDB4MjgsMHhGMCwweEZDLDB4RkMsMHhGQywweDAz
LDB4MzksMHg4MSwweDI4LDB4MkQsMHhBRCwweEE5LDB4QUIsCisgICAgMHgwMywweDM5LDB4QTIs
MHgzOCwweDdBLDB4RTgsMHhGQSwweEFBLDB4NjUsMHg0OSwweEMyLDB4MzgsMHhFOSwweENCLDB4
Q0IsMHhFMywKKyAgICAweDQ0LDB4NDEsMHhDMiwweDM4LDB4MEYsMHhCRiwweEY3LDB4RDcsMHgy
NCwweDQxLDB4QzIsMHgzMCwweDAwLDB4RkEsMHg3QSwweDU1LAorICAgIDB4MjMsMHg0MSwweEMz
LDB4MzAsMHgyQiwweEFCLDB4NjMsMHg3QiwweEUzLDB4MzgsMHg4MiwweDIwLDB4RkMsMHhGRSww
eDVFLDB4NUUsCisgICAgMHhDMywweDI4LDB4NjEsMHgyMCwweEZFLDB4QkUsMHgzRiwweDJGLDB4
MDMsMHgzMSwweDgxLDB4MjgsMHhBRiwweEVCLDB4RjgsMHhGQywKKyAgICAweEMyLDB4MjgsMHg2
MSwweDIwLDB4MkEsMHgyMiwweDJCLDB4QUEsMHhFMywweDM4LDB4QzIsMHgyOCwweDVGLDB4REQs
MHg5NSwweEZELAorICAgIDB4RTMsMHgzMCwweEMyLDB4MzAsMHgwMiwweEE5LDB4OTMsMHg1RSww
eDAzLDB4MzksMHhDMywweDMwLDB4N0UsMHgzNywweEFGLDB4QUQsCisgICAgMHgwNCwweDM5LDB4
QzMsMHgzMCwweEY1LDB4N0YsMHhBRiwweERGLDB4RTMsMHgzOCwweEMyLDB4MzAsMHgxRiwweDhC
LDB4MEIsMHhCOSwKKyAgICAweDg1LDB4NTEsMHgwMywweDM5LDB4MjksMHg4OSwweEZELDB4NTUs
MHg4NSwweDQ5LDB4MDMsMHg0MSwweEY4LDB4N0EsMHg1RiwweDU3LAorICAgIDB4NDQsMHg0MSww
eEUzLDB4MzgsMHg4QiwweEFELDB4QjUsMHhGNywweDI0LDB4NDEsMHhFMiwweDM4LDB4NTcsMHg3
RiwweEJGLDB4MkYsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEY5LDB4RUYsMHhDNiwweERD
LDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBQiwweDAzLDB4OEUsMHgyRCwKKyAgICAweDIzLDB4Mzks
MHhDMiwweDMwLDB4M0YsMHgzRSwweDM2LDB4QkUsMHg0NCwweDQxLDB4MDMsMHgzOSwweDdGLDB4
NzcsMHg3QSwweEUyLAorICAgIDB4NDQsMHg0OSwweEMyLDB4MzAsMHhBQSwweEFCLDB4MEIsMHgy
RiwweEE1LDB4NTEsMHgwMywweDQxLDB4QUQsMHhCRiwweEFCLDB4MEEsCisgICAgMHg0NywweDZB
LDB4QTUsMHg1MSwweDJELDB4MkQsMHhBRCwweDc1LDB4NjcsMHg3MiwweEE1LDB4NTksMHg4MCww
eDgwLDB4RkIsMHhGNSwKKyAgICAweEM4LDB4N0EsMHg4NCwweDU5LDB4MkUsMHgzRiwweEJGLDB4
QkQsMHg3MiwweENELDB4OEMsMHg5MywweDgzLDB4ODIsMHhBMywweDg5LAorICAgIDB4OTAsMHhC
NCwweEFELDB4OTMsMHg4MiwweEU4LDB4RjgsMHg3MCwweDJGLDB4QTQsMHg4QywweDhCLDB4QTAs
MHhFQSwweDVGLDB4RDUsCisgICAgMHhFRSwweDkzLDB4OEMsMHg4QiwweDdBLDB4N0UsMHhGRiww
eEJELDB4Q0QsMHg5MywweDhELDB4OEIsMHhGNywweDc5LDB4RkQsMHgzQiwKKyAgICAweENELDB4
OTMsMHg2QywweDgzLDB4M0YsMHhBQSwweEZBLDB4NzAsMHhFRSwweDlCLDB4MEEsMHg3QiwweEEw
LDB4RkEsMHg3RSwweDdGLAorICAgIDB4QUQsMHg5MywweEVBLDB4NzIsMHhFMCwweEZFLDB4RkQs
MHg1RCwweDhDLDB4OEIsMHhFQiwweDcyLDB4M0IsMHhFRiwweEZGLDB4NzcsCisgICAgMHgyRSww
eEE0LDB4MkIsMHg3QiwweDAyLDB4MkIsMHhGRCwweEZELDB4MzIsMHhCRCwweEFELDB4OTMsMHgw
QSwweDJCLDB4QkQsMHhGRCwKKyAgICAweDQzLDB4NTEsMHgwMywweDQ5LDB4QkIsMHhBRiwweEJD
LDB4RDYsMHgyMywweDQ5LDB4MDIsMHg0OSwweDNELDB4NzcsMHg1OCwweDU4LAorICAgIDB4NDMs
MHg1MSwweDAyLDB4NDksMHgzMywweEJELDB4RkQsMHhERCwweDQzLDB4NDksMHhFMiwweDQ4LDB4
QTIsMHhFRSwweEVBLDB4NkEsCisgICAgMHg2NCwweDU5LDB4MDIsMHg0OSwweEJGLDB4QUQsMHgy
OSwweEFBLDB4NDMsMHg1MSwweDAzLDB4NTEsMHg4MCwweDI4LDB4QTgsMHhCMiwKKyAgICAweDQ0
LDB4NTEsMHgyMywweDUxLDB4NzMsMHg2MywweDA4LDB4N0EsMHg0MywweDUxLDB4MDIsMHg0OSww
eEFFLDB4RUUsMHg1QywweERBLAorICAgIDB4MjMsMHg1MSwweDAzLDB4NDksMHhENSwweDY1LDB4
NUUsMHgxMywweDBBLDB4OTMsMHgyMywweDUxLDB4MEQsMHgwRCwweDA5LDB4MDksCisgICAgMHgy
QSwweDkzLDB4ODcsMHg3QSwweEY4LDB4NzgsMHhGRSwweDdFLDB4QTcsMHg3QSwweDY3LDB4N0Es
MHhGQywweEVFLDB4QkYsMHg1RSwKKyAgICAweDg3LDB4N0EsMHg2NywweDdBLDB4NTYsMHg1Riww
eERBLDB4ODMsMHg4NywweDdBLDB4NDcsMHg3MiwweDhFLDB4QjgsMHhCQSwweDA4LAorICAgIDB4
ODcsMHg3QSwweDQ2LDB4NzIsMHhBRSwweEJCLDB4NUIsMHhBMiwweDY2LDB4NzIsMHg0NiwweDcy
LDB4NjQsMHhENiwweDVDLDB4RjcsCisgICAgMHg4NywweDdBLDB4NDYsMHg3MiwweEQ1LDB4Rjcs
MHgzNSwweEI5LDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhFOSwweDYwLDB4NzAsMHg3QSwKKyAgICAw
eDI2LDB4NzIsMHhDNSwweDYxLDB4RjAsMHhGOCwweDZFLDB4NUEsMHhFNSwweDYxLDB4QTQsMHg2
MSwweDlGLDB4MTcsMHgzNSwweEFELAorICAgIDB4RTUsMHg2OSwweEM1LDB4NjEsMHhCQiwweEY4
LDB4NUMsMHg5NCwweDI2LDB4NkEsMHhDNCwweDYxLDB4MjMsMHgyQiwweDI1LDB4MkYsCisgICAg
MHg2NywweDdBLDB4MjYsMHg3MiwweEZGLDB4REQsMHhGRCwweDg3LDB4NDYsMHg2QSwweEUyLDB4
MzgsMHhFMCwweEU4LDB4NzgsMHg3MCwKKyAgICAweEUyLDB4MzgsMHg2MSwweDI4LDB4RkMsMHhG
RSwweEQ3LDB4RjcsMHgyMywweDQxLDB4QTEsMHgyOCwweEZELDB4QkYsMHhBRiwweEEzLAorICAg
IDB4NjQsMHg0OSwweEUzLDB4MzgsMHg1RCwweEI5LDB4MkYsMHgzNSwweDY0LDB4NDksMHhDMiww
eDMwLDB4RUIsMHg2QSwweDc4LDB4NzgsCisgICAgMHhFMywweDM4LDB4ODEsMHgyOCwweEE4LDB4
RkUsMHg1RiwweDdFLDB4QzMsMHgzMCwweDgyLDB4MjAsMHgyMCwweDJCLDB4QkUsMHhGNSwKKyAg
ICAweEUzLDB4MzAsMHg2MiwweDIwLDB4ODAsMHhFMiwweEUyLDB4N0EsMHhDMiwweDI4LDB4NjEs
MHgyMCwweDdFLDB4REYsMHg3NSwweDc3LAorICAgIDB4QzMsMHgyOCwweDYxLDB4MjAsMHgyRiww
eDJGLDB4QkYsMHhGNSwweEMzLDB4MzAsMHg4MiwweDIwLDB4NTgsMHhGOCwweEI3LDB4QUYsCisg
ICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDU1LDB4NjksMHhDQiwweEFGLDB4RTMsMHgzMCwweEEy
LDB4MjgsMHhFQiwweEVBLDB4QTgsMHhGRSwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4N0Us
MHhGNSwweERGLDB4QUEsMHgwMywweDM5LDB4QTIsMHgzMCwweEFCLDB4QUIsMHhGQiwweDVFLAor
ICAgIDB4RTMsMHgzMCwweEEyLDB4MzAsMHgzQywweENFLDB4RTksMHhBRiwweDAzLDB4MzksMHhB
MiwweDMwLDB4RkIsMHhBRCwweDA5LDB4QUEsCisgICAgMHgwMywweDM5LDB4RTMsMHgzMCwweDNF
LDB4OEEsMHhBQywweDU3LDB4MDMsMHgzOSwweEUyLDB4MzgsMHhGQiwweDU3LDB4NTgsMHhCMCwK
KyAgICAweDAzLDB4MzksMHhFMiwweDM4LDB4MDAsMHgzMCwweEJGLDB4QzMsMHgyMywweDQxLDB4
RTIsMHgzOCwweEFFLDB4RjUsMHg3RSwweDc4LAorICAgIDB4MjMsMHg0MSwweEMyLDB4MzAsMHhG
OCwweEZGLDB4QjcsMHgyOSwweDQ0LDB4NDEsMHhFMiwweDM4LDB4QkQsMHhERCwweEZGLDB4QTgs
CisgICAgMHgyMywweDM5LDB4RTIsMHgzMCwweEY4LDB4QjIsMHhCQSwweEZCLDB4MjMsMHgzOSww
eEUyLDB4MzAsMHgwMywweDJELDB4QjUsMHg5RCwKKyAgICAweDIzLDB4NDEsMHhDMSwweDMwLDB4
MkEsMHhGNiwweEVFLDB4RkEsMHhDNSwweDUxLDB4MDIsMHgzOSwweDhFLDB4RkQsMHhCNSwweEI1
LAorICAgIDB4QzUsMHg1MSwweDQzLDB4NDksMHgyRCwweEFELDB4RkYsMHhBMCwweDQ2LDB4NkEs
MHhBNSwweDUxLDB4QTUsMHhBRCwweDBELDB4RjUsCisgICAgMHg0NywweDZBLDB4QTQsMHg1MSww
eDNCLDB4QTIsMHgyRiwweEI3LDB4OTAsMHhCNCwweDg4LDB4NzIsMHgwMywweDJELDB4MkQsMHgw
RCwKKyAgICAweDkwLDB4QjQsMHhBRCwweDhCLDB4NjAsMHhFMCwweEUwLDB4QzAsMHg4QywweDhC
LDB4MkIsMHg4MywweDBBLDB4M0UsMHgyRSwweDM0LAorICAgIDB4Q0QsMHg5MywweDZDLDB4ODMs
MHgyOSwweDNBLDB4QUEsMHhCQSwweENELDB4OTMsMHgwQSwweDczLDB4ODAsMHhDMCwweEY4LDB4
NUUsCisgICAgMHg4QywweDhCLDB4QTksMHg2QSwweEEwLDB4RUYsMHhGNywweDU3LDB4MkIsMHg3
QiwweENBLDB4NkEsMHg4MCwweDgyLDB4RkIsMHhERiwKKyAgICAweDJBLDB4NzMsMHhDQSwweDcy
LDB4RkYsMHhENiwweEY3LDB4REUsMHg0QywweDgzLDB4RUEsMHg3MiwweEI3LDB4QUIsMHhBQiww
eDJBLAorICAgIDB4Q0QsMHg5MywweDJCLDB4N0IsMHhBNSwweEE1LDB4MzcsMHgyRiwweDBFLDB4
OUMsMHg2QywweDgzLDB4MDksMHgzNywweDk3LDB4RDQsCisgICAgMHg0MywweDUxLDB4RTIsMHg0
MCwweDZFLDB4RDIsMHhGMiwweEJBLDB4NDMsMHg1MSwweEUyLDB4NDAsMHhCNSwweEFCLDB4QUUs
MHhFQSwKKyAgICAweDIzLDB4NTEsMHgwMiwweDQxLDB4QkYsMHgzOCwweEUwLDB4REIsMHg0Myww
eDUxLDB4MDIsMHg0OSwweEQ2LDB4RDYsMHhFRCwweEVCLAorICAgIDB4NDMsMHg1MSwweDAzLDB4
NTEsMHhBOCwweEJCLDB4QUEsMHhGQiwweDQzLDB4NTEsMHgyMywweDUxLDB4MzAsMHhCQywweEE5
LDB4NDEsCisgICAgMHg0MywweDUxLDB4MDMsMHg0OSwweEY4LDB4QUEsMHhBQiwweDZCLDB4MjMs
MHg1MSwweEUyLDB4NDgsMHhBOCwweEI4LDB4OUMsMHhCRSwKKyAgICAweDIzLDB4NTEsMHhFMiww
eDQ4LDB4QkEsMHhCRiwweEJGLDB4M0YsMHgwOSwweDhCLDB4ODQsMHg1OSwweDA5LDB4MDksMHgw
MSwweDBCLAorICAgIDB4QzgsMHg4MiwweDg3LDB4N0EsMHg3OCwweEY4LDB4NzgsMHg1RSwweEE3
LDB4N0EsMHg2NywweDdBLDB4NUUsMHhGRiwweEVGLDB4RUUsCisgICAgMHhBOCwweDgyLDB4Njcs
MHg3MiwweEZGLDB4QUUsMHhFNiwweEJDLDB4QTgsMHg3QSwweDY3LDB4N0EsMHhGRiwweEI4LDB4
QkEsMHhERSwKKyAgICAweDg3LDB4N0EsMHg2NywweDcyLDB4OUEsMHg2MiwweDc4LDB4NkEsMHg2
NiwweDcyLDB4NDYsMHg3MiwweEU2LDB4NTYsMHhGRCwweEQ1LAorICAgIDB4ODcsMHg3QSwweDQ2
LDB4NzIsMHhCNiwweDM3LDB4QTksMHhCRCwweDg3LDB4N0EsMHgwNSwweDZBLDB4RTAsMHhGQSww
eDdBLDB4N0UsCisgICAgMHgwNiwweDZBLDB4QTQsMHg2MSwweDc4LDB4N0EsMHg3NiwweDlFLDB4
ODcsMHg3QSwweEM0LDB4NjEsMHg1NSwweEJELDB4QjUsMHgyQiwKKyAgICAweDY3LDB4N0EsMHgw
NSwweDZBLDB4QjUsMHgwQiwweDAwLDB4QkUsMHhBOCwweDdBLDB4NDYsMHg3MiwweDVGLDB4OEEs
MHhGQiwweDU1LAorICAgIDB4ODcsMHg3QSwweDI2LDB4NkEsMHgwQiwweDgwLDB4N0YsMHhENyww
eDQ2LDB4NkEsMHgwMywweDQxLDB4NjAsMHg2MCwweDYwLDB4RTAsCisgICAgMHhFMiwweDM4LDB4
ODEsMHgzMCwweEI1LDB4QkYsMHgzRSwweDA4LDB4NDQsMHg0MSwweEUyLDB4MzgsMHg4MiwweEEy
LDB4MkIsMHgzRCwKKyAgICAweDQ0LDB4NDksMHhDMiwweDMwLDB4MkYsMHhCRSwweDdFLDB4NUMs
MHg0NCwweDQ5LDB4QzIsMHgzMCwweEYwLDB4NjIsMHg2QiwweDdGLAorICAgIDB4QzIsMHgzMCww
eDgyLDB4MjAsMHhBQSwweEEyLDB4RkEsMHg3NiwweEEyLDB4MjgsMHg2MiwweDIwLDB4QzgsMHhD
QSwweEVBLDB4N0YsCisgICAgMHhBMiwweDIwLDB4NjEsMHgyMCwweDc4LDB4RjcsMHhGNSwweEVG
LDB4QzMsMHgyOCwweDYyLDB4MjAsMHhGRiwweEJELDB4QjcsMHhBQiwKKyAgICAweEEyLDB4Mjgs
MHg2MSwweDIwLDB4RDcsMHhBRSwweEE4LDB4QTAsMHhDMiwweDI4LDB4ODIsMHgyMCwweEZELDB4
QkYsMHhBQiwweEFELAorICAgIDB4QzIsMHgyOCwweEEyLDB4MjgsMHg0QiwweEY2LDB4RTAsMHhF
QiwweEUzLDB4MzAsMHhBMiwweDI4LDB4NUYsMHhBRCwweEE3LDB4MkQsCisgICAgMHhFMywweDMw
LDB4QTIsMHgyOCwweDAyLDB4RTMsMHhFMiwweDdBLDB4RTMsMHgzOCwweEEyLDB4MjgsMHhCQSww
eEUyLDB4QjcsMHhGNSwKKyAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4ODIsMHhCMCwweDAwLDB4
MkIsMHgwNCwweDM5LDB4QzMsMHgzMCwweEUzLDB4N0QsMHhFNSwweEZELAorICAgIDB4MDMsMHgz
OSwweEMzLDB4MzAsMHgyMiwweEFGLDB4RUYsMHg1NywweDIzLDB4MzksMHhDMiwweDMwLDB4MkEs
MHhFQSwweEVGLDB4QkYsCisgICAgMHgwMywweDM5LDB4RTIsMHgzMCwweDhCLDB4N0YsMHg1Nyww
eDNBLDB4MjMsMHgzOSwweEUyLDB4MzgsMHg0QSwweDQ1LDB4RkYsMHhBRSwKKyAgICAweDIzLDB4
NDEsMHhFMywweDM4LDB4MjUsMHhCNSwweDM1LDB4MkEsMHg4NCwweDQ5LDB4MjQsMHg0MSwweDZG
LDB4RUYsMHgzQiwweEFGLAorICAgIDB4NjQsMHg0OSwweDAzLDB4MzksMHg1NSwweEY3LDB4QkYs
MHg4OCwweDQzLDB4NDksMHhDMSwweDMwLDB4RjcsMHhERiwweEZBLDB4QTIsCisgICAgMHg0Myww
eDQxLDB4RTIsMHgzOCwweEZFLDB4OEQsMHhCQiwweEJGLDB4ODQsMHg0OSwweEUyLDB4MzgsMHgy
NSwweEI3LDB4RkYsMHg5RiwKKyAgICAweEE0LDB4NTEsMHg0MywweDQ5LDB4RTAsMHg1NywweEY1
LDB4MDUsMHgwNiwweDYyLDB4NjMsMHg0OSwweEI1LDB4RkQsMHhBRCwweDJCLAorICAgIDB4Mjcs
MHg2MiwweDg0LDB4NTEsMHg5NywweEJGLDB4QkEsMHg4OCwweEYxLDB4QkMsMHgyNywweDYyLDB4
MEQsMHgyRCwweDJELDB4MkQsCisgICAgMHg3MywweEM1LDB4RUQsMHg5QiwweDdGLDB4N0YsMHhF
QSwweDgwLDB4NzAsMHhBQywweDQ4LDB4NjIsMHhGRSwweEQ2LDB4NUEsMHhFMCwKKyAgICAweDRD
LDB4ODMsMHhDNywweDUxLDB4MDAsMHhFQSwweEZFLDB4NUUsMHgwQiwweDczLDB4QTYsMHg1MSww
eEEwLDB4QUEsMHhGRiwweEY1LAorICAgIDB4QTksMHg2QSwweDI3LDB4NUEsMHgwOCwweEFFLDB4
QUIsMHhGNSwweEVBLDB4NzIsMHg2OCwweDYyLDB4MzIsMHhBQSwweEFGLDB4QkQsCisgICAgMHg2
QywweDhCLDB4QTksMHg2QSwweEZGLDB4QkYsMHgzRCwweDJGLDB4MkUsMHg5QywweDBCLDB4N0Is
MHhGRCwweEFGLDB4OEEsMHgwMCwKKyAgICAweDBFLDB4OUMsMHg2QywweDgzLDB4OTUsMHhENyww
eEU4LDB4RTAsMHg0RiwweEE0LDB4NkIsMHg4QiwweDVBLDB4NzIsMHg2MiwweDhBLAorICAgIDB4
MjMsMHg0OSwweDAyLDB4NDksMHhFNCwweEI5LDB4MEQsMHgwOSwweDIzLDB4NDksMHgwMywweDQ5
LDB4MEQsMHgyNSwweDJGLDB4QTAsCisgICAgMHg0MywweDUxLDB4MDIsMHg0OSwweDVFLDB4MTYs
MHhBRSwweEJCLDB4NDMsMHg1MSwweDIzLDB4NTEsMHg1NiwweDc0LDB4RDIsMHgwMSwKKyAgICAw
eDQzLDB4NTEsMHgwMywweDQ5LDB4MEEsMHhCMiwweDlFLDB4OTIsMHg0MywweDUxLDB4MDIsMHg0
OSwweEUyLDB4RUMsMHg3MiwweERELAorICAgIDB4MjMsMHg1MSwweDAzLDB4NDksMHhEMywweDYz
LDB4MDIsMHhERSwweDIzLDB4NTEsMHhFMiwweDQ4LDB4N0IsMHg2MCwweEVFLDB4RkUsCisgICAg
MHhFOSwweDgyLDB4RTIsMHg0OCwweEQ1LDB4RDUsMHhCNSwweDJELDB4RTgsMHg4QSwweDI2LDB4
NkEsMHg4MSwweDgyLDB4ODAsMHhBMCwKKyAgICAweEM4LDB4N0EsMHg2NiwweDcyLDB4QjgsMHhG
RSwweEZFLDB4RTMsMHhBNywweDdBLDB4NjYsMHg3MiwweEZBLDB4RkUsMHhCRSwweDhCLAorICAg
IDB4QTcsMHg3QSwweDY2LDB4N0EsMHhBRiwweEZGLDB4RkIsMHhBMiwweDg3LDB4N0EsMHg2Niww
eDcyLDB4MDAsMHgwQSwweDBBLDB4QTAsCisgICAgMHhBNywweDdBLDB4NDYsMHg3MiwweEZFLDB4
NUMsMHg1RiwweDdGLDB4NDksMHg4QiwweDQ2LDB4NzIsMHg1NSwweDU1LDB4OTUsMHgwRCwKKyAg
ICAweDhBLDB4OUIsMHg2NywweDdBLDB4NTUsMHhENSwweEFBLDB4MjAsMHgyOSwweDhCLDB4MDYs
MHg2QSwweEZGLDB4ODIsMHhFMCwweDVFLAorICAgIDB4NjcsMHg3QSwweDA2LDB4NkEsMHhBRSww
eDcwLDB4NTcsMHg1NSwweDI2LDB4NkEsMHhDNSwweDU5LDB4QTAsMHhBMiwweDAyLDB4N0UsCisg
ICAgMHg0NiwweDcyLDB4QzQsMHg1OSwweEZGLDB4QUEsMHgwMCwweEQ1LDB4NjcsMHg3MiwweEM1
LDB4NjEsMHgyRSwweEEyLDB4MDAsMHg1NSwKKyAgICAweEE4LDB4N0EsMHg4NCwweDUxLDB4QUEs
MHhBMiwweEEyLDB4NTcsMHg2NiwweDcyLDB4NDQsMHg0OSwweDc4LDB4NjgsMHg3QSwweDdGLAor
ICAgIDB4NDQsMHg0MSwweEMyLDB4MzgsMHhENywweDc3LDB4QkUsMHhFMCwweDAzLDB4MzksMHhD
MiwweDM4LDB4QkIsMHhCRiwweEFGLDB4NjAsCisgICAgMHgyNCwweDQxLDB4ODEsMHgyOCwweEEw
LDB4QTgsMHhFRiwweERGLDB4MDMsMHgzMSwweDYxLDB4MTgsMHhFQSwweEY4LDB4RkUsMHg3RiwK
KyAgICAweEEyLDB4MjAsMHg2MSwweDE4LDB4N0MsMHhFQywweEVGLDB4RkYsMHhBMiwweDIwLDB4
NjEsMHgxOCwweEY1LDB4QUQsMHhBQiwweDBGLAorICAgIDB4RTMsMHgzMCwweDgyLDB4MjAsMHhG
NSwweEY1LDB4QkQsMHhCMiwweEUzLDB4MzAsMHhBMiwweDI4LDB4NUIsMHhFRiwweEFBLDB4MEEs
CisgICAgMHhFMiwweDMwLDB4ODEsMHgyMCwweDc3LDB4N0YsMHhGRSwweEE4LDB4QTIsMHgyOCww
eDgxLDB4MjAsMHhBQiwweDY3LDB4RUUsMHgwMCwKKyAgICAweEUyLDB4MzAsMHg4MiwweDIwLDB4
QkYsMHhGRCwweEZELDB4QTIsMHhDMiwweDI4LDB4ODEsMHgyOCwweDA4LDB4QTcsMHhBNSwweDBC
LAorICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHg2MiwweDZBLDB4RkIsMHhENywweDAzLDB4MzEs
MHhBMiwweDI4LDB4QjUsMHhFRCwweDJCLDB4MkQsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCww
eEQ1LDB4QkYsMHg4QSwweDJCLDB4MjQsMHgzOSwweEMyLDB4MzgsMHg2QiwweENBLDB4MEIsMHhB
QiwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4RjcsMHhGRCwweDIyLDB4MzIsMHgyMywweDM5
LDB4RTMsMHgzMCwweEFELDB4M0QsMHg3OSwweEVGLAorICAgIDB4MjMsMHgzOSwweEMyLDB4MzAs
MHgyQSwweEFBLDB4RkEsMHg1QSwweDIzLDB4MzksMHhFMiwweDMwLDB4RkMsMHhENSwweEQ3LDB4
NTUsCisgICAgMHgyMywweDQxLDB4RTMsMHgzOCwweEEyLDB4QTksMHhCRCwweDk1LDB4NjQsMHg0
OSwweDAzLDB4MzksMHgyQiwweEZGLDB4RjUsMHhCNywKKyAgICAweDg1LDB4NTEsMHg0NCwweDQ5
LDB4QUUsMHg3MywweDYzLDB4RUYsMHg0NCwweDQ5LDB4MjMsMHg0MSwweDQwLDB4NUUsMHhFNiww
eDBGLAorICAgIDB4NDMsMHg0MSwweDAzLDB4MzksMHhENywweDU1LDB4RkYsMHhBRSwweDQzLDB4
NDEsMHgwMywweDM5LDB4MzUsMHhBRiwweDdFLDB4RTIsCisgICAgMHg4NCwweDUxLDB4MDMsMHgz
OSwweDAyLDB4RkYsMHhGRCwweEVGLDB4QzUsMHg1OSwweDQzLDB4NDEsMHgwQSwweDk5LDB4N0Qs
MHhERCwKKyAgICAweDA2LDB4NjIsMHg2NCwweDQ5LDB4MDIsMHhCRiwweEY1LDB4QkYsMHhEMSww
eEI0LDB4MDYsMHg2MiwweDJELDB4MjUsMHgyNSwweEI1LAorICAgIDB4OTMsMHhDRCwweEQxLDB4
QkMsMHhBQSwweEFBLDB4QUIsMHhCRCwweDUzLDB4QzUsMHgyRiwweEE0LDB4N0UsMHhGRSwweEY4
LDB4RTAsCisgICAgMHhCMCwweEFDLDB4RUIsMHg3QSwweDdFLDB4QUEsMHgyMCwweDAwLDB4OEYs
MHhBQywweEU2LDB4NTEsMHg1NywweEZBLDB4MDAsMHgwMCwKKyAgICAweDZGLDB4QTQsMHgwNyww
eDVBLDB4NTUsMHhGRiwweDAwLDB4MDAsMHg0RiwweEE0LDB4QTksMHg2QSwweDU1LDB4RkQsMHgw
MCwweDAwLAorICAgIDB4MkUsMHg5QywweENBLDB4NzIsMHhBRCwweEFCLDB4MDAsMHgwMCwweDZG
LDB4QUMsMHhFRCwweDkzLDB4MkQsMHhBOSwweDhCLDB4QUIsCisgICAgMHg0RiwweEE0LDB4QUMs
MHg4QiwweDcwLDB4RjgsMHhFMCwweEEyLDB4NkYsMHhBQywweENDLDB4OTMsMHhBRCwweDhELDB4
MEQsMHgwRCwKKyAgICAweDIzLDB4NTEsMHgwMiwweDQxLDB4QTAsMHg0MywweEZGLDB4RkYsMHgy
MywweDUxLDB4RTIsMHg0MCwweEEyLDB4MUEsMHgyRiwweDBGLAorICAgIDB4NDMsMHg1MSwweDIz
LDB4NTEsMHhGRCwweDhCLDB4QTAsMHgwMywweDQzLDB4NTEsMHgyMywweDUxLDB4NTgsMHg3NCww
eDY1LDB4NTQsCisgICAgMHg0MywweDUxLDB4MDMsMHg0OSwweEYzLDB4QkEsMHhGRSwweERFLDB4
MjMsMHg1MSwweDAyLDB4NDEsMHhGQywweEE3LDB4NUYsMHg3QiwKKyAgICAweDIzLDB4NDksMHgw
MywweDQ5LDB4NTQsMHgyOCwweDdFLDB4RjksMHhDNCwweDYxLDB4QTEsMHg0MCwweEZGLDB4RkYs
MHhCRiwweDNELAorICAgIDB4MDksMHg4QiwweDQzLDB4NTEsMHgwRCwweDA5LDB4MDIsMHgwMCww
eDA5LDB4OEIsMHhBNywweDgyLDB4NzgsMHhFQywweEZBLDB4N0EsCisgICAgMHhFOCwweDgyLDB4
ODYsMHg3QSwweDU3LDB4REYsMHhGRiwweEY4LDB4QTcsMHg3QSwweDg3LDB4N0EsMHhERSwweDVF
LDB4NUUsMHgwOCwKKyAgICAweEE3LDB4N0EsMHg2NiwweDcyLDB4QjIsMHhFQSwweDYwLDB4Nzgs
MHgyOSwweDkzLDB4NjYsMHg3MiwweDU3LDB4NTUsMHg1NSwweDE1LAorICAgIDB4QUIsMHhBMyww
eDg3LDB4N0EsMHg1NSwweEI1LDB4MEIsMHgwMCwweDhBLDB4OUIsMHgyNSwweDZBLDB4MDIsMHgw
MCwweEMwLDB4NzgsCisgICAgMHg4QSwweDlCLDB4QzUsMHg2MSwweEUwLDB4NUEsMHg1NywweDU1
LDB4MjYsMHg2QSwweEE0LDB4NjEsMHhCOCwweEZCLDB4RDcsMHhBRiwKKyAgICAweDA2LDB4NkEs
MHg0NCwweDQ5LDB4MDAsMHg2OCwweDVFLDB4NUUsMHhBNCwweDU5LDB4MDMsMHg0MSwweEVDLDB4
NzcsMHhGNSwweEVGLAorICAgIDB4NDMsMHg0OSwweDIzLDB4NDEsMHgwQiwweEEyLDB4RTIsMHhE
OCwweDQzLDB4NDksMHgwMywweDQxLDB4RTIsMHhBOCwweEVBLDB4RjcsCisgICAgMHg0MywweDQ5
LDB4MDMsMHg0MSwweDY3LDB4OUUsMHhERSwweEQ3LDB4ODUsMHg1MSwweDIzLDB4NDEsMHhDOSww
eEVCLDB4RUYsMHhEOSwKKyAgICAweDQ0LDB4NDksMHhDMiwweDMwLDB4QTAsMHhCQSwweEZFLDB4
NUUsMHgwMywweDM5LDB4ODIsMHgyMCwweEUwLDB4RjAsMHg1RSwweDdFLAorICAgIDB4QTIsMHgy
OCwweDgxLDB4MjAsMHg2MiwweEUyLDB4QUEsMHhERCwweEEyLDB4MjAsMHg2MSwweDE4LDB4NkEs
MHhFOCwweEY4LDB4RkUsCisgICAgMHhBMiwweDI4LDB4NjEsMHgxOCwweEQ1LDB4RDUsMHhBNyww
eEE5LDB4RTMsMHgzMCwweDgyLDB4MjAsMHhBNSwweEY1LDB4QkQsMHgyRiwKKyAgICAweDI0LDB4
MzksMHhBMSwweDI4LDB4QUYsMHgzRCwweDM3LDB4M0UsMHgyNCwweDM5LDB4QzIsMHgzMCwweEY2
LDB4RjcsMHhBNCwweEZDLAorICAgIDB4RTIsMHgzMCwweDgxLDB4MjgsMHhCQSwweDc4LDB4RkMs
MHhGOCwweEUzLDB4MzAsMHhBMSwweDI4LDB4QkIsMHgwMiwweDI5LDB4RjUsCisgICAgMHhFMiww
eDMwLDB4QTIsMHgyOCwweEUyLDB4RjAsMHhFOCwweEZFLDB4RTMsMHgyOCwweDgxLDB4MjgsMHhG
QiwweERFLDB4N0UsMHhGRSwKKyAgICAweEMyLDB4MjgsMHg4MSwweDIwLDB4RUEsMHhFRiwweEJG
LDB4MjcsMHhDMiwweDI4LDB4QTIsMHgyOCwweDA5LDB4MDUsMHg1OSwweDVCLAorICAgIDB4RTMs
MHgzMCwweEEyLDB4MjgsMHgwQSwweEZGLDB4RjcsMHhGNywweDAzLDB4MzksMHhBMiwweDI4LDB4
MkIsMHgyRCwweEZGLDB4REYsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEUwLDB4RjAsMHhG
RiwweDU3LDB4MjQsMHgzOSwweEMyLDB4MzAsMHhBMywweEFGLDB4RUQsMHg5NSwKKyAgICAweDIz
LDB4MzksMHhFMiwweDMwLDB4NjgsMHg3RSwweEVCLDB4RkEsMHgyMywweDM5LDB4RTIsMHgzOCww
eEI1LDB4QjcsMHgzNSwweEI1LAorICAgIDB4MjMsMHg0MSwweEMyLDB4MzAsMHhGNCwweDdBLDB4
RjgsMHhGQiwweDY0LDB4NDksMHhDMiwweDM4LDB4QkYsMHgzRiwweDJGLDB4MkQsCisgICAgMHg4
NSwweDQ5LDB4MjMsMHg0MSwweEFCLDB4RDYsMHg3QywweEYwLDB4NDQsMHg0OSwweEUyLDB4Mzgs
MHgwQSwweDJBLDB4QkYsMHhGNiwKKyAgICAweDIzLDB4NDEsMHhDMiwweDM4LDB4MDAsMHgwMiww
eEZDLDB4RkYsMHg2NCwweDQ5LDB4RTMsMHgzOCwweDhCLDB4QUYsMHhERiwweERELAorICAgIDB4
ODUsMHg0OSwweEUyLDB4MzgsMHg4MiwweEFCLDB4RDUsMHhGNSwweEM1LDB4NTEsMHgyMywweDQx
LDB4QUIsMHgyQiwweEE3LDB4NzUsCisgICAgMHgwNiwweDYyLDB4NjMsMHg0OSwweDJCLDB4MkEs
MHhBRiwweEQ1LDB4QUMsMHg5MywweDY0LDB4NTEsMHgyRiwweDJGLDB4MjUsMHgzNSwKKyAgICAw
eDExLDB4QkQsMHgyRSwweEE0LDB4MkIsMHhBRiwweEJELDB4RkQsMHg1MiwweEM1LDB4QjAsMHhC
NCwweDIwLDB4MkIsMHhCRiwweDdELAorICAgIDB4NzMsMHhDRCwweEYwLDB4QkMsMHg3QiwweEE4
LDB4QTIsMHhBOSwweDMyLDB4QzUsMHg2RiwweEFDLDB4RkUsMHhGRSwweERDLDB4NjgsCisgICAg
MHhBRiwweEI0LDB4NEYsMHhBNCwweEMwLDB4RjgsMHg1QiwweEZGLDB4NkYsMHhBQywweDJFLDB4
QTQsMHhFOCwweEJBLDB4NTUsMHg3RiwKKyAgICAweDhGLDB4QUMsMHgwRSwweDlDLDB4NUUsMHhF
MiwweEFBLDB4MjMsMHg2RiwweEFDLDB4MEUsMHg5QywweEVGLDB4RjcsMHhGQSwweEUwLAorICAg
IDB4NkYsMHhBNCwweDJFLDB4QTQsMHg0RiwweEQ1LDB4NTUsMHg1RiwweDkwLDB4QUMsMHhFRCww
eDlCLDB4MkQsMHgzNywweEJGLDB4QkYsCisgICAgMHg0MywweDUxLDB4RTIsMHg0MCwweEZGLDB4
OUYsMHgyNSwweDNELDB4NjQsMHg1OSwweDAyLDB4NDksMHhBRCwweDJCLDB4QTIsMHhBQSwKKyAg
ICAweDgzLDB4NTEsMHgyMywweDUxLDB4RjcsMHhERSwweDc3LDB4N0YsMHg2MywweDUxLDB4MDIs
MHg0OSwweEU4LDB4RkEsMHhFRSwweDdGLAorICAgIDB4MjMsMHg0OSwweDAzLDB4NDksMHhEQSww
eDIzLDB4MDMsMHg3OSwweDIzLDB4NDksMHhFMiwweDQwLDB4RjgsMHgyQSwweDlFLDB4QTIsCisg
ICAgMHgyMywweDQ5LDB4MDIsMHg0MSwweDU2LDB4MjQsMHhDRiwweDY3LDB4Q0IsMHhBMywweDAz
LDB4NDksMHhCNSwweDI1LDB4MEQsMHgwRCwKKyAgICAweDhCLDB4OUIsMHhDOCwweDgyLDB4N0Us
MHhGRiwweEZDLDB4QzgsMHgwOCwweDhCLDB4QTcsMHg4MiwweEZCLDB4REUsMHhGQSwweEU4LAor
ICAgIDB4QTcsMHg4MiwweEU3LDB4N0EsMHgyQSwweEFBLDB4MjIsMHhCRSwweEM3LDB4ODIsMHg4
NiwweDdBLDB4RkIsMHg3NiwweDdFLDB4NTQsCisgICAgMHhBQiwweEEzLDB4NDYsMHg3MiwweDU3
LDB4RjUsMHhCNywweDJCLDB4Q0IsMHhBMywweDY3LDB4N0EsMHgyRCwweDBBLDB4MDAsMHg4MCwK
KyAgICAweEFCLDB4QTMsMHgyNiwweDZBLDB4MDAsMHhDMCwweDc4LDB4NTYsMHhFOSwweDhBLDB4
QTQsMHg1OSwweEY4LDB4NUUsMHg1RiwweDVGLAorICAgIDB4RTYsMHg2MSwweDg0LDB4NTksMHhB
RSwweDNELDB4MkIsMHgyRiwweDA2LDB4NkEsMHg2NCwweDUxLDB4MjIsMHhFOCwweEU4LDB4N0Es
CisgICAgMHg4NCwweDUxLDB4MjMsMHg0OSwweEE4LDB4RTgsMHhEQywweEY3LDB4NjQsMHg0OSww
eDIzLDB4NDEsMHhGRSwweDdCLDB4NkYsMHhCMiwKKyAgICAweDY0LDB4NDksMHgwMywweDQxLDB4
QkIsMHhGRiwweEU3LDB4MkUsMHhFNSwweDYxLDB4MDMsMHg0MSwweDU1LDB4NUQsMHhENywweDJB
LAorICAgIDB4QzUsMHg1OSwweDAzLDB4NDEsMHg1NSwweDU1LDB4RkYsMHg4MCwweDY0LDB4NDks
MHhFMiwweDM4LDB4RTgsMHg1QSwweDdFLDB4N0EsCisgICAgMHhFMywweDM4LDB4QTEsMHgyOCww
eEY4LDB4QkUsMHhBRSwweEY2LDB4RTMsMHgzMCwweDgxLDB4MjAsMHg3MiwweDcwLDB4NzgsMHg3
QSwKKyAgICAweDgxLDB4MjAsMHg2MSwweDE4LDB4MDAsMHhBQSwweDA4LDB4ODAsMHg4MiwweDIw
LDB4NjEsMHgxOCwweEI4LDB4QkYsMHg1NSwweEI1LAorICAgIDB4QzMsMHgyOCwweDYxLDB4MTgs
MHhBRiwweEFGLDB4QUEsMHg4QSwweEMzLDB4MzAsMHg4MiwweDIwLDB4MEYsMHhCRiwweEY3LDB4
RUQsCisgICAgMHgwNCwweDM5LDB4QTIsMHgyOCwweDNBLDB4QkIsMHhERiwweEQ1LDB4MDMsMHgz
OSwweEEyLDB4MjgsMHhFQywweEU2LDB4RkYsMHg3OSwKKyAgICAweDAzLDB4MzksMHhBMiwweDMw
LDB4RkUsMHhBOSwweDBGLDB4MkYsMHhFMiwweDMwLDB4QTEsMHgyOCwweDU3LDB4RjgsMHhGOCww
eEMwLAorICAgIDB4RTMsMHgzMCwweDgxLDB4MjgsMHhGRiwweEQ2LDB4RkEsMHg4MCwweEMyLDB4
MzAsMHhBMiwweDI4LDB4RDYsMHg5NSwweEFCLDB4OEUsCisgICAgMHhDMiwweDMwLDB4QTIsMHgy
OCwweDU1LDB4QkYsMHgyQSwweDhCLDB4QzIsMHgzMCwweEEyLDB4MjgsMHg1RiwweEY0LDB4QUQs
MHg1QiwKKyAgICAweEMyLDB4MjgsMHg4MiwweDI4LDB4MDAsMHgwQSwweEFBLDB4RUYsMHhFMiww
eDMwLDB4QTIsMHgyOCwweEFGLDB4MEIsMHhBRiwweDNELAorICAgIDB4RTIsMHgzMCwweEEyLDB4
MjgsMHhFRiwweDhFLDB4MjgsMHgwQSwweDI0LDB4MzksMHhDMiwweDMwLDB4QkYsMHgzNywweEQ1
LDB4RkYsCisgICAgMHg0NCwweDQxLDB4RTMsMHgzOCwweEZBLDB4QzIsMHhBRCwweEFELDB4MjMs
MHgzOSwweEUyLDB4MzAsMHhBRCwweDg1LDB4QUQsMHhENSwKKyAgICAweDAzLDB4MzksMHhDMiww
eDMwLDB4RUMsMHhBQSwweDhFLDB4RUUsMHg2NCwweDQ5LDB4QzIsMHgzMCwweEI1LDB4MzUsMHgz
NywweDJGLAorICAgIDB4QTUsMHg1MSwweDI0LDB4NDEsMHg2OCwweDYwLDB4RTAsMHhGNiwweDI0
LDB4NDEsMHhDMiwweDMwLDB4RTgsMHg5QywweEJBLDB4RkMsCisgICAgMHg0NCwweDQxLDB4RTIs
MHgzOCwweEJELDB4MzUsMHhCNywweEY1LDB4MjMsMHg0MSwweEMyLDB4MzAsMHhCQSwweEE4LDB4
QkEsMHg3RSwKKyAgICAweDY1LDB4NDEsMHhFMywweDM4LDB4RjUsMHhBRCwweEFGLDB4MkIsMHhD
NiwweDU5LDB4MjMsMHg0OSwweEZELDB4QkYsMHhBQiwweDJBLAorICAgIDB4RTYsMHg1OSwweDQz
LDB4NDEsMHhGNSwweEI3LDB4MEYsMHg4OCwweDBBLDB4N0IsMHg2NCwweDQ5LDB4MzUsMHgzRiww
eDI3LDB4M0YsCisgICAgMHg2RiwweEFDLDB4Q0QsMHg5MywweDBBLDB4QUIsMHhCRCwweEI1LDB4
RjEsMHhCQywweDBFLDB4QTQsMHgwQiwweDNGLDB4RkYsMHhGNSwKKyAgICAweDMyLDB4QkQsMHg0
RSwweEFDLDB4MDIsMHg4MCwweEFCLDB4QjUsMHgzMiwweEM1LDB4OEYsMHhBQywweDc4LDB4N0Es
MHhFQSwweEFCLAorICAgIDB4RDAsMHhCNCwweDZGLDB4QUMsMHg1NywweDZGLDB4RkEsMHhGOCww
eDhGLDB4QUMsMHg0RiwweEE0LDB4REUsMHhGRiwweEY3LDB4Q0MsCisgICAgMHg4RiwweEFDLDB4
NEYsMHhBNCwweEJGLDB4QkEsMHhBQiwweERDLDB4OTAsMHhBQywweDRFLDB4QTQsMHg2RiwweEJB
LDB4QjIsMHhBOSwKKyAgICAweDhGLDB4QUMsMHg0RiwweEE0LDB4NUYsMHg3RSwweERBLDB4NkYs
MHg2RiwweEFDLDB4MkUsMHhBNCwweEZELDB4ODgsMHhCMiwweDVBLAorICAgIDB4NjQsMHg1OSww
eDAzLDB4NDksMHhCRCwweEFBLDB4MkEsMHg4QSwweDY0LDB4NTksMHg0MywweDUxLDB4NkUsMHgw
OCwweDgyLDB4QUYsCisgICAgMHg2MywweDUxLDB4MjIsMHg0OSwweDc3LDB4NzgsMHg3RiwweDVB
LDB4NDMsMHg0OSwweDAyLDB4NDksMHg1QSwweDVDLDB4QUEsMHg5RiwKKyAgICAweDIzLDB4NDks
MHgwMiwweDQ5LDB4QzAsMHhDMCwweDgwLDB4RDUsMHgyMywweDQ5LDB4MDIsMHg0MSwweEIzLDB4
RDUsMHhFRCwweDY2LAorICAgIDB4NjMsMHg1MSwweDAyLDB4NDksMHg1RCwweEQ1LDB4RDcsMHg5
NSwweEFCLDB4OUIsMHg4NCwweDU5LDB4MDksMHgwOSwweDAzLDB4MDMsCisgICAgMHg4QSwweDlC
LDB4MDgsMHg4QiwweEU4LDB4RUEsMHhFMCwweDdBLDB4MDgsMHg4QiwweEM4LDB4ODIsMHg1OCww
eEZBLDB4RTgsMHhFQywKKyAgICAweDA4LDB4OEIsMHhBNywweDgyLDB4NUYsMHhERiwweDdGLDB4
MkEsMHhDQiwweEEzLDB4QTcsMHg4MiwweDU1LDB4QjUsMHgyRCwweDAyLAorICAgIDB4Q0IsMHhB
MywweEM4LDB4ODIsMHgwMywweDAwLDB4ODAsMHg2MCwweEFCLDB4QTMsMHgyNiwweDcyLDB4QzAs
MHg1OCwweDU2LDB4NTUsCisgICAgMHg2NywweDcyLDB4MDUsMHg2QSwweDlFLDB4QjcsMHgyRSww
eEYzLDB4MjYsMHg2QSwweDYzLDB4NTEsMHg3OCwweERDLDB4RkUsMHhCRSwKKyAgICAweEU2LDB4
NjEsMHg2MywweDQ5LDB4MEIsMHgwOCwweEM4LDB4NTIsMHhDNSwweDU5LDB4MjMsMHg0MSwweEU4
LDB4RkUsMHg3RiwweEZGLAorICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHgwRSwweDJBLDB4Mjks
MHhBMiwweDg1LDB4NTEsMHgyMywweDQ5LDB4N0YsMHhGRSwweDNFLDB4MzcsCisgICAgMHgwNiww
eDZBLDB4NjQsMHg0OSwweEFELDB4MDIsMHhBMCwweEUyLDB4QzUsMHg2MSwweEUyLDB4NDAsMHgw
MCwweEE4LDB4RkUsMHg1RiwKKyAgICAweEM1LDB4NTksMHgwMiwweDQxLDB4QzAsMHhGQSwweEZG
LDB4NTUsMHgyMywweDQxLDB4QzIsMHgzMCwweEUwLDB4RkUsMHg1RSwweDVFLAorICAgIDB4QzIs
MHgzMCwweDgxLDB4MjAsMHhFQywweDY4LDB4NjgsMHhEOCwweEEyLDB4MjgsMHg2MSwweDIwLDB4
RTAsMHg3QSwweDdBLDB4RTgsCisgICAgMHg4MSwweDIwLDB4NDEsMHgxOCwweDIwLDB4RUEsMHhG
RiwweEVFLDB4QzIsMHgyOCwweDQwLDB4MTgsMHhCNywweEFGLDB4MEIsMHgwQSwKKyAgICAweEMz
LDB4MzAsMHhBMSwweDIwLDB4N0UsMHhGQSwweENBLDB4QUEsMHhDMiwweDMwLDB4ODEsMHgyMCww
eEZGLDB4QUYsMHhFQiwweEI4LAorICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHhENSwweEJELDB4
QUYsMHg4QiwweDAzLDB4MzEsMHhDMiwweDMwLDB4RDcsMHhBOCwweEYwLDB4N0QsCisgICAgMHhF
MiwweDMwLDB4ODIsMHgyOCwweEFFLDB4QjYsMHhERSwweDhFLDB4MDMsMHgzOSwweEEyLDB4MzAs
MHhBRSwweEE1LDB4QTUsMHhCRiwKKyAgICAweDAyLDB4MzksMHhDMywweDMwLDB4RUUsMHg3QSww
eDdCLDB4REUsMHhFMywweDMwLDB4QTIsMHgyOCwweEJGLDB4QkUsMHhCNywweEI0LAorICAgIDB4
RTMsMHgzMCwweDgxLDB4MjgsMHg3RSwweEZBLDB4RjgsMHhGRSwweEMyLDB4MzAsMHhBMiwweDI4
LDB4QTUsMHgzNSwweEZCLDB4QUEsCisgICAgMHhBMiwweDMwLDB4QzIsMHgyOCwweDk3LDB4RjUs
MHhGRiwweDk3LDB4QzIsMHgzMCwweEEyLDB4MjgsMHgyRiwweEFELDB4QUEsMHhFOSwKKyAgICAw
eEUzLDB4MzAsMHhBMiwweDI4LDB4RUEsMHgyQSwweEEzLDB4NUIsMHgwMywweDM5LDB4QzMsMHgz
MCwweEJGLDB4RjIsMHhFMywweEE5LAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHgyRiwweDJE
LDB4RTUsMHhCNSwweDAzLDB4MzksMHhBMiwweDMwLDB4MkEsMHg4MywweEE3LDB4RUYsCisgICAg
MHgwMywweDM5LDB4RTIsMHgzMCwweDdGLDB4RkUsMHhEQiwweDk1LDB4MjMsMHgzOSwweEUzLDB4
MzAsMHgwQSwweDAyLDB4RUEsMHhFOSwKKyAgICAweDY0LDB4NDEsMHhDMywweDMwLDB4QTgsMHg3
RiwweEZELDB4RkYsMHgwMywweDM5LDB4QzIsMHgzMCwweEY4LDB4RUUsMHhBQiwweEFCLAorICAg
IDB4MDMsMHgzOSwweEMyLDB4MzAsMHgyMywweEFCLDB4QUEsMHgyMywweDI0LDB4MzksMHhDMiww
eDMwLDB4N0EsMHhERSwweEFGLDB4MkYsCisgICAgMHg0NCwweDQxLDB4RTMsMHgzMCwweDlELDB4
QjUsMHhCRiwweDA5LDB4QTUsMHg1MSwweDIzLDB4NDEsMHgyMiwweDNELDB4RkQsMHhGNSwKKyAg
ICAweEM1LDB4NTksMHg0NCwweDQ5LDB4QTAsMHhCQiwweEFELDB4MkQsMHgyQSwweDgzLDB4QzUs
MHg1MSwweEI1LDB4QjUsMHgzNSwweDM1LAorICAgIDB4RUQsMHg5QiwweDhDLDB4OEIsMHgwOSww
eEJGLDB4RkEsMHg2MiwweDJFLDB4QTQsMHg4QywweDhCLDB4MEEsMHhBRiwweEZGLDB4RDUsCisg
ICAgMHg2RiwweEFDLDB4Q0QsMHg5MywweDBBLDB4RUYsMHhGRCwweERELDB4RjAsMHhCNCwweDBE
LDB4OUMsMHgwQSwweDBCLDB4QkQsMHhENSwKKyAgICAweEYxLDB4QkMsMHg4RiwweEFDLDB4RkMs
MHhFMiwweEUyLDB4QjUsMHhEMSwweEI0LDB4NzAsMHhBQywweDdFLDB4RUYsMHhBRSwweEI4LAor
ICAgIDB4QjAsMHhCNCwweDRGLDB4QTQsMHhERiwweEZBLDB4OEEsMHg4QSwweDhGLDB4QUMsMHgy
RCwweEE0LDB4RjYsMHhGRSwweEU4LDB4MjgsCisgICAgMHg2RiwweEFDLDB4MkUsMHhBNCwweEFB
LDB4Q0YsMHhFQSwweEZFLDB4NEYsMHhBNCwweDBFLDB4OUMsMHg3RSwweEJFLDB4RkIsMHg1QSwK
KyAgICAweDY0LDB4NTksMHgyMywweDUxLDB4MjcsMHhBNywweEU3LDB4QUUsMHg2NCwweDU5LDB4
NDMsMHg1MSwweDJGLDB4ODAsMHg2MCwweDcyLAorICAgIDB4NjQsMHg1MSwweDAyLDB4NDksMHhG
QSwweDc4LDB4RkUsMHg1RSwweDIyLDB4NDksMHhFMSwweDQwLDB4QTgsMHhBMCwweDgyLDB4RkIs
CisgICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweEFCLDB4RUMsMHg3QSwweEFFLDB4MjMsMHg0OSww
eEUyLDB4NDAsMHhGQSwweDlCLDB4MjksMHgyRiwKKyAgICAweDI1LDB4NkEsMHhFMiwweDQwLDB4
RjUsMHhCRCwweDM1LDB4MzcsMHg4QSwweDlCLDB4RTgsMHg4MiwweDgxLDB4ODEsMHgwMywweDgy
LAorICAgIDB4NjksMHg5QiwweDA5LDB4OEIsMHhFQSwweEVBLDB4NkEsMHhFQSwweDQ5LDB4OTMs
MHhFOCwweDhBLDB4NkYsMHg3RSwweEJGLDB4MkEsCisgICAgMHhDQiwweEEzLDB4RTgsMHg4QSww
eEJELDB4MEYsMHgwMiwweDBBLDB4RUIsMHhBMywweDg2LDB4N0EsMHgwMCwweDgwLDB4RTAsMHg3
OCwKKyAgICAweEFBLDB4OUIsMHg0NiwweDcyLDB4NzgsMHg1RSwweDU1LDB4NTUsMHg2NywweDdB
LDB4MjYsMHg2QSwweEVELDB4M0IsMHg4QiwweDhCLAorICAgIDB4NDYsMHg3MiwweEE0LDB4NTks
MHhFMCwweEUwLDB4NzAsMHg1QywweEM1LDB4NjEsMHgyMiwweDQxLDB4ODIsMHhBMiwweEZBLDB4
NzcsCisgICAgMHhBNSwweDUxLDB4MjMsMHg0MSwweEY4LDB4M0YsMHhBRCwweDhCLDB4ODQsMHg1
MSwweDQ0LDB4NDksMHhGNCwweEI2LDB4QUYsMHhFRiwKKyAgICAweDY0LDB4NDksMHgyMywweDQx
LDB4QTIsMHhCNiwweEFFLDB4QkYsMHg4NCwweDUxLDB4RTMsMHgzOCwweDNGLDB4MkUsMHhCRSww
eERGLAorICAgIDB4MDYsMHg2MiwweDg0LDB4NTksMHhFQSwweDg4LDB4RUEsMHhFOSwweEE1LDB4
NTksMHgwMiwweDQxLDB4NUUsMHg1RSwweDVDLDB4NzgsCisgICAgMHgwMywweDQxLDB4QzIsMHgz
OCwweDgwLDB4RTAsMHg2MCwweEUwLDB4MDIsMHgzOSwweEMzLDB4MzAsMHhFOCwweEZGLDB4REYs
MHg3NSwKKyAgICAweEUzLDB4MzAsMHg4MSwweDIwLDB4REEsMHhCQSwweEYwLDB4QzAsMHhDMiww
eDI4LDB4NjEsMHgxOCwweEY4LDB4N0EsMHg1NiwweDU3LAorICAgIDB4QzIsMHgyOCwweDYxLDB4
MTgsMHhENywweEI1LDB4MEQsMHhBQiwweDAzLDB4MzEsMHhDMiwweDI4LDB4NzUsMHhERCwweERE
LDB4MjksCisgICAgMHg0NCwweDM5LDB4QTIsMHgyOCwweERELDB4RjcsMHhCRiwweDAyLDB4MjMs
MHgzOSwweEMyLDB4MzAsMHg3NSwweDZBLDB4NTgsMHhFOCwKKyAgICAweEUzLDB4MzAsMHg4MSww
eDMwLDB4QTIsMHg3OCwweEVFLDB4RTgsMHhFMywweDM4LDB4QTIsMHgyOCwweEVGLDB4RjUsMHhF
RCwweEEyLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhFRCwweEJELDB4QUIsMHg4RCwweDAz
LDB4MzksMHhDMiwweDMwLDB4QjcsMHhFQiwweDAyLDB4QUIsCisgICAgMHgyMywweDM5LDB4QzIs
MHgzMCwweEZCLDB4RkIsMHg2OCwweDdBLDB4MDQsMHgzOSwweEEyLDB4MjgsMHhFOCwweEEwLDB4
RkEsMHhFRCwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4NUUsMHhGQywweEZFLDB4QjMsMHhD
MiwweDMwLDB4ODEsMHgyOCwweDJGLDB4RkYsMHg3QSwweDIwLAorICAgIDB4QzIsMHgyOCwweDgy
LDB4MjgsMHgwMCwweDgwLDB4QUQsMHhGQSwweEEyLDB4MjgsMHg4MSwweDIwLDB4MDgsMHgyOCww
eDNFLDB4RjUsCisgICAgMHhFMiwweDMwLDB4QTIsMHgyOCwweDVGLDB4RTUsMHhCRCwweEFELDB4
RTMsMHgzMCwweEEyLDB4MjgsMHg4MywweEZCLDB4OEUsMHg4MywKKyAgICAweEUzLDB4MzAsMHhB
MiwweDI4LDB4QUUsMHhBRiwweDhGLDB4MEUsMHgwMiwweDM5LDB4QTIsMHgyOCwweEI4LDB4RUUs
MHhGRiwweEZELAorICAgIDB4MDMsMHgzMSwweEExLDB4MjgsMHgyRiwweEFGLDB4QkQsMHgyRiww
eDI0LDB4MzEsMHhDMiwweDMwLDB4RjYsMHhGRiwweEFCLDB4MkYsCisgICAgMHgwMywweDMxLDB4
QTIsMHgzMCwweEFCLDB4QUEsMHgyOCwweEEwLDB4RTMsMHgzMCwweEMyLDB4MjgsMHhDOCwweDg4
LDB4OEEsMHg4MywKKyAgICAweDA0LDB4MzEsMHhDMiwweDMwLDB4QkIsMHg1RCwweDVGLDB4RkYs
MHgyNCwweDM5LDB4QzMsMHgyOCwweDI3LDB4QjcsMHhCRiwweEVCLAorICAgIDB4MjMsMHgzOSww
eEUzLDB4MzAsMHgyNywweEI1LDB4MzcsMHhCRiwweDg1LDB4NDksMHgyMywweDQxLDB4QkYsMHhB
NywweDJCLDB4RjUsCisgICAgMHgwNiwweDVBLDB4NjQsMHg0OSwweDBELDB4QTUsMHhGNywweEY1
LDB4OEMsMHg4QiwweDA2LDB4NUEsMHg5NSwweDM1LDB4MzUsMHgyNSwKKyAgICAweEVELDB4OUIs
MHhBRCwweDkzLDB4NzMsMHhGQiwweEQ3LDB4NjIsMHhBQywweDkzLDB4NkIsMHg4QiwweDJCLDB4
NTgsMHhGMCwweDY4LAorICAgIDB4RUQsMHg5QiwweDZCLDB4OEIsMHhBMiwweDhCLDB4QTUsMHhE
NSwweDBFLDB4OUMsMHhBQywweDkzLDB4MDIsMHgyRCwweEE3LDB4QTcsCisgICAgMHg4RiwweEFD
LDB4RUQsMHg5QiwweDJCLDB4QkYsMHg1NSwweDU1LDB4OTAsMHhBQywweEVELDB4OUIsMHgyOCww
eEFBLDB4REYsMHg3NywKKyAgICAweDkwLDB4QUMsMHhFRCwweDlCLDB4QTAsMHhCQiwweDdGLDB4
NUQsMHg2RSwweEFDLDB4Q0MsMHg5MywweEEwLDB4RkEsMHg1RiwweDU3LAorICAgIDB4MkUsMHhB
NCwweENDLDB4OTMsMHg4OCwweEZGLDB4RjUsMHhENSwweDJFLDB4QTQsMHhFRCwweDlCLDB4RUMs
MHgyRCwweDJGLDB4RkQsCisgICAgMHg2MywweDUxLDB4MjMsMHg0OSwweEVELDB4RkYsMHhENyww
eEQ1LDB4NDMsMHg1MSwweDIzLDB4NDksMHgwMCwweEFBLDB4RjgsMHg3NywKKyAgICAweDIyLDB4
NDksMHgwMiwweDQxLDB4NzgsMHhEQywweEYyLDB4QUEsMHgyMywweDQ5LDB4RTIsMHg0MCwweEJG
LDB4N0YsMHg3RSwweEI2LAorICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHhBQSwweEZGLDB4REYs
MHhERiwweDIzLDB4NDksMHhFMywweDQwLDB4QUYsMHgzRiwweENCLDB4RUIsCisgICAgMHg0OSww
eDkzLDB4MjMsMHg0OSwweDE1LDB4MzUsMHgzNSwweDI1LDB4OEEsMHg5QiwweDY5LDB4OTMsMHg2
MiwweDU4LDB4N0MsMHg1RSwKKyAgICAweDhBLDB4OUIsMHgyOCwweDkzLDB4RkYsMHg5RiwweDNG
LDB4MkYsMHg4QSwweDlCLDB4MjksMHg5MywweEY3LDB4RkMsMHhBMCwweEFBLAorICAgIDB4QUIs
MHg5QiwweDY3LDB4N0EsMHgwMiwweEEyLDB4RUEsMHg1OCwweDQ5LDB4OEIsMHg0NiwweDcyLDB4
NzgsMHg3NiwweEQ3LDB4NzUsCisgICAgMHg4NywweDcyLDB4NDYsMHg3MiwweEI3LDB4RUIsMHhF
QSwweDJGLDB4QTcsMHg3QSwweEE1LDB4NTksMHg4QSwweEE4LDB4RTIsMHg3OCwKKyAgICAweDA1
LDB4NjIsMHgwMiwweDQxLDB4RjgsMHhERSwweDc3LDB4RDcsMHg4NCwweDUxLDB4MjMsMHg0MSww
eEY1LDB4QkQsMHgyOSwweDBGLAorICAgIDB4QTQsMHg1MSwweDY0LDB4NDksMHg3QiwweDVBLDB4
REEsMHhENywweDg0LDB4NDksMHg0NCwweDQ5LDB4QjcsMHhFRCwweEI0LDB4QjgsCisgICAgMHg2
NCwweDQ5LDB4MjQsMHg0MSwweEZFLDB4REUsMHg3QSwweDU4LDB4MjMsMHg0MSwweEUzLDB4Mzgs
MHhCQSwweEYwLDB4RjAsMHhBMCwKKyAgICAweEE1LDB4NTEsMHhBMiwweDM4LDB4MDMsMHgyQiww
eEJGLDB4RDcsMHg4NCwweDUxLDB4MjMsMHg0MSwweDc4LDB4RjgsMHhGOCwweDc5LAorICAgIDB4
MDMsMHg0MSwweEMyLDB4MzgsMHhCQywweEQ2LDB4RjcsMHhCOCwweEUzLDB4MzAsMHhBMiwweDMw
LDB4MDIsMHgwRSwweEU4LDB4NzAsCisgICAgMHhFMywweDMwLDB4NjEsMHgxOCwweEEyLDB4RkEs
MHg3RiwweDVGLDB4ODEsMHgyMCwweDQxLDB4MTgsMHhCOCwweEJDLDB4M0YsMHgzRCwKKyAgICAw
eEUzLDB4MzAsMHg4MSwweDIwLDB4MkQsMHgyOSwweDJCLDB4RkYsMHgyNCwweDM5LDB4NjEsMHgy
MCwweDAyLDB4ODAsMHhGQiwweEZGLAorICAgIDB4NDQsMHg0MSwweEEyLDB4MjgsMHg4MCwweEZF
LDB4NTUsMHg1NSwweDQzLDB4NDEsMHhBMiwweDI4LDB4QUEsMHhBQiwweEVGLDB4QjUsCisgICAg
MHgwMywweDM5LDB4QzIsMHgzMCwweERFLDB4QTgsMHhGOCwweEVBLDB4MDMsMHgzOSwweEMyLDB4
MzAsMHhGQSwweEVGLDB4RDUsMHg3NywKKyAgICAweDAzLDB4MzksMHhBMiwweDI4LDB4QUIsMHg4
RiwweEZGLDB4QjUsMHhFMywweDM4LDB4QzIsMHgyOCwweEUyLDB4RUMsMHhGRSwweEUyLAorICAg
IDB4RTMsMHgzMCwweDgxLDB4MjgsMHhBMiwweDYyLDB4NUUsMHg3RSwweEUzLDB4MzAsMHg4MSww
eDIwLDB4MkIsMHhCRiwweEI1LDB4QTUsCisgICAgMHhFMywweDMwLDB4QzMsMHgyOCwweEEyLDB4
ODIsMHgwRiwweDBELDB4MDMsMHgzMSwweEEyLDB4MzAsMHg3QSwweEIyLDB4RUEsMHg2QSwKKyAg
ICAweEUzLDB4MzAsMHhBMiwweDI4LDB4NkQsMHhGRSwweEJBLDB4QUYsMHgwMywweDM5LDB4ODEs
MHgyMCwweDU1LDB4RUUsMHhBOCwweDgwLAorICAgIDB4MDMsMHgzOSwweEExLDB4MjgsMHhBRCww
eDJGLDB4QTIsMHg4MiwweEUzLDB4MzAsMHhDMiwweDI4LDB4MUMsMHgyRSwweDlGLDB4REYsCisg
ICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDJBLDB4RUUsMHhCRSwweEU3LDB4RTMsMHgzMCwweEEy
LDB4MjgsMHhBRiwweEFGLDB4RjUsMHhERCwKKyAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4QkUs
MHg4RSwweDA5LDB4RUQsMHgwMywweDMxLDB4QzIsMHgyOCwweDA4LDB4NzgsMHg3MiwweEUwLAor
ICAgIDB4MDMsMHgzOSwweEMyLDB4MjgsMHg2QywweDVGLDB4NTcsMHhFRiwweEUzLDB4MzAsMHhB
MiwweDI4LDB4MjEsMHgzRiwweEI4LDB4QTgsCisgICAgMHgyMywweDMxLDB4QzIsMHgzMCwweERE
LDB4NUQsMHhGRiwweEY2LDB4MjMsMHgzOSwweEUyLDB4MzAsMHhGRiwweEZELDB4N0QsMHg4RCwK
KyAgICAweDAzLDB4MzksMHhBMSwweDI4LDB4MjIsMHgzRSwweEI4LDB4OUUsMHg4NCwweDUxLDB4
MDMsMHgzOSwweEJGLDB4RkQsMHhCRiwweDA5LAorICAgIDB4RTUsMHg1OSwweDQ0LDB4NDEsMHhC
NSwweEI3LDB4MkYsMHgyQiwweEFDLDB4OTMsMHgyNSwweDYyLDB4MjUsMHgyRCwweDBELDB4Mjks
CisgICAgMHhFRSwweDlCLDB4QUMsMHg5MywweDgyLDB4ODAsMHg4MCwweEY3LDB4Q0QsMHg5Myww
eDZCLDB4OEIsMHg3QywweDUwLDB4NzgsMHg1RSwKKyAgICAweDZCLDB4OEIsMHgwQSwweDdCLDB4
MjAsMHhCOCwweEU4LDB4NjIsMHhFRCwweDlCLDB4NEIsMHg4MywweDBBLDB4MkIsMHgyOSwweEFE
LAorICAgIDB4MEQsMHg5QywweEFDLDB4OTMsMHhBMCwweDhCLDB4QUEsMHg3RiwweEVELDB4OUIs
MHhDRCwweDkzLDB4ODgsMHgwMiwweEE4LDB4RkQsCisgICAgMHhFRCwweDlCLDB4QUMsMHg5Myww
eEY4LDB4QUIsMHg3QiwweDVGLDB4Q0QsMHg5MywweDhDLDB4OEIsMHgyOCwweDgwLDB4MDgsMHgy
RiwKKyAgICAweENELDB4OTMsMHg4QywweDhCLDB4MjgsMHhCQSwweEVGLDB4RUIsMHgwRSwweDlD
LDB4QUMsMHg5MywweDBCLDB4QkYsMHhCNSwweEY1LAorICAgIDB4NDMsMHg0OSwweDAyLDB4NDks
MHhBQSwweEZFLDB4NTcsMHhENywweDIzLDB4NDksMHgwMiwweDQxLDB4ODEsMHg3QSwweEZCLDB4
RTksCisgICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweEUzLDB4Q0IsMHg5OCwweDU2LDB4MDIsMHg0
MSwweEUyLDB4MzgsMHgwOCwweENDLDB4NzIsMHg3MiwKKyAgICAweDAyLDB4NDEsMHhDMiwweDM4
LDB4MkEsMHgwQSwweDIzLDB4M0IsMHgyMywweDQ5LDB4RTIsMHg0MCwweEVGLDB4RkIsMHhBQiww
eDJCLAorICAgIDB4NkEsMHg5MywweDAzLDB4NDksMHgyNSwweDI1LDB4MjUsMHhCNSwweDhBLDB4
OUIsMHhFOCwweDgyLDB4MjAsMHgyMCwweEEyLDB4NTUsCisgICAgMHg4QSwweDlCLDB4RTgsMHg4
MiwweEUyLDB4N0EsMHg3RSwweDU1LDB4NkEsMHg5MywweDg3LDB4N0EsMHgwQSwweEFGLDB4RkYs
MHg3RiwKKyAgICAweDI5LDB4OTMsMHhFNSwweDYxLDB4NzAsMHhEQywweDVFLDB4NTcsMHg0Niww
eDZBLDB4RTUsMHg2MSwweDAwLDB4MkIsMHhBQSwweEZELAorICAgIDB4QzgsMHg3QSwweDg0LDB4
NTksMHgyQSwweEFBLDB4RkEsMHg1RiwweDY3LDB4NzIsMHg0MywweDQ5LDB4NzAsMHg1RSwweDc3
LDB4RDUsCisgICAgMHg2MywweDQ5LDB4MDIsMHg0MSwweEZFLDB4NkEsMHhEQywweDNFLDB4QTUs
MHg1MSwweDAyLDB4NDEsMHg4QiwweEFELDB4QUQsMHhCOCwKKyAgICAweDg0LDB4NTEsMHg2NCww
eDQ5LDB4QTcsMHgwOSwweDc5LDB4NkIsMHg4NCwweDUxLDB4MjQsMHg0MSwweEYwLDB4N0EsMHhG
RSwweEVFLAorICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHhBOCwweEVBLDB4RUUsMHg1RSwweDY0
LDB4NDEsMHgwMywweDQxLDB4N0IsMHhGRiwweDdGLDB4NUQsCisgICAgMHgyMywweDQxLDB4QzIs
MHgzOCwweDVBLDB4NkEsMHhFQSwweEE4LDB4NDQsMHg0OSwweEMyLDB4MzgsMHgwRCwweDJELDB4
MEIsMHhBQSwKKyAgICAweDQzLDB4NDksMHhDMiwweDMwLDB4RkUsMHhGOCwweERFLDB4REUsMHgw
MywweDM5LDB4ODEsMHgyOCwweDY4LDB4NzgsMHg3OCwweEZBLAorICAgIDB4QTIsMHgyOCwweDYx
LDB4MjAsMHg1NywweDVFLDB4RjYsMHhCNiwweEMyLDB4MjgsMHg0MSwweDE4LDB4QkQsMHhBRiww
eDhCLDB4MkEsCisgICAgMHhBMiwweDI4LDB4ODEsMHgyMCwweDlELDB4Q0QsMHhBMSwweEJBLDB4
QzIsMHgyOCwweDgxLDB4MjAsMHhBRiwweEJGLDB4RkUsMHhERiwKKyAgICAweEEyLDB4MjgsMHg4
MSwweDIwLDB4QTIsMHhGRiwweEZCLDB4NUIsMHhFMywweDMwLDB4ODEsMHgyOCwweDI1LDB4QjUs
MHhGNSwweEQ1LAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhCQSwweEZCLDB4RjUsMHhCOSww
eEUyLDB4MzAsMHhBMiwweDI4LDB4NzgsMHg3QywweEY4LDB4Q0EsCisgICAgMHhFMywweDMwLDB4
QTIsMHgzMCwweDM1LDB4QjUsMHhFNywweEFGLDB4RTMsMHgzMCwweEExLDB4MjgsMHg4OCwweEFB
LDB4RkIsMHg1OSwKKyAgICAweEUzLDB4MzAsMHg4MSwweDI4LDB4RkUsMHhFMCwweEZCLDB4N0Ys
MHhDMiwweDI4LDB4NjEsMHgyMCwweDhCLDB4QUEsMHgwMiwweDBBLAorICAgIDB4RTMsMHgzMCww
eEEyLDB4MjgsMHhCRiwweEFCLDB4QUQsMHgyNywweDAzLDB4MzksMHhBMiwweDMwLDB4RjIsMHhF
QiwweEVGLDB4QUYsCisgICAgMHgwMywweDM5LDB4QTIsMHgyOCwweEVGLDB4QUQsMHhCRiwweDIz
LDB4MDMsMHgzOSwweEEyLDB4MjgsMHhFQiwweEIyLDB4QTgsMHhEOCwKKyAgICAweDIzLDB4Mzks
MHhDMiwweDMwLDB4QjksMHhFRiwweDFGLDB4QkYsMHgyMywweDM5LDB4QzIsMHgzMCwweERGLDB4
NTcsMHg3NiwweEYyLAorICAgIDB4MDMsMHgzMSwweEExLDB4MjgsMHhCNywweDNGLDB4MkUsMHhB
RiwweDAzLDB4MzEsMHhBMiwweDI4LDB4N0YsMHhERSwweDU4LDB4RUEsCisgICAgMHgwNCwweDMx
LDB4QTIsMHgyOCwweEFBLDB4QjcsMHhENywweDU3LDB4MDQsMHgzMSwweEMyLDB4MzAsMHhGQSww
eDdBLDB4RjYsMHhERCwKKyAgICAweDAzLDB4MzEsMHhBMiwweDI4LDB4OEEsMHhFNiwweEZCLDB4
QUIsMHgwMywweDMxLDB4QzIsMHgyOCwweERGLDB4REQsMHhGRiwweDJCLAorICAgIDB4MDMsMHgz
MSwweEUyLDB4MzAsMHg4NSwweDhCLDB4RTIsMHg1OCwweDIzLDB4MzksMHhFMiwweDMwLDB4ODcs
MHgyRiwweEY1LDB4RDUsCisgICAgMHgyMywweDM5LDB4RTIsMHgzMCwweDVFLDB4RkIsMHhGRiww
eDNCLDB4QTUsMHg1MSwweDAyLDB4MzksMHhBRCwweEFELDB4QUYsMHgwRiwKKyAgICAweDg4LDB4
NzIsMHg2MywweDQ5LDB4OTUsMHhGNSwweEI1LDB4MkYsMHg4QywweDkzLDB4QTksMHg3QSwweDA5
LDB4MDEsMHhGOSwweDdFLAorICAgIDB4OEMsMHg4QiwweDY4LDB4NkEsMHgwMCwweDgwLDB4REYs
MHg1NywweDhDLDB4OEIsMHgwNiwweDYyLDB4ODAsMHhBOCwweDVGLDB4RjcsCisgICAgMHgyQSww
eDdCLDB4MDYsMHg1QSwweDAwLDB4RkEsMHg1NSwweEZGLDB4OEIsMHg4QiwweDI3LDB4NjIsMHgw
QSwweEFGLDB4RDUsMHhGRiwKKyAgICAweDhDLDB4OTMsMHgyNywweDYyLDB4QTAsMHg3RSwweDVG
LDB4N0YsMHhDRCwweDkzLDB4NDcsMHg2MiwweDJCLDB4RDUsMHg1NSwweDU1LAorICAgIDB4QUQs
MHg5MywweDQ3LDB4NjIsMHgwMCwweDAyLDB4QUQsMHg5NSwweEFDLDB4OTMsMHg0QiwweDgzLDB4
MDIsMHhBQiwweDIzLDB4QkQsCisgICAgMHhBQywweDkzLDB4NkMsMHg4QiwweDAwLDB4MDAsMHg4
QiwweEU5LDB4Q0QsMHg5MywweDZCLDB4OEIsMHgyRSwweEFCLDB4QjcsMHhGRiwKKyAgICAweDAz
LDB4NDksMHgyMiwweDQxLDB4ODAsMHhBQSwweEFBLDB4ODIsMHgyMywweDQ5LDB4RTIsMHg0MCww
eEIwLDB4QUIsMHhDRSwweEJGLAorICAgIDB4MjMsMHg0MSwweEUyLDB4NDAsMHg5NSwweEZBLDB4
MTIsMHhFMiwweDIzLDB4NDEsMHhFMiwweDQwLDB4REIsMHhCQiwweEFBLDB4QTIsCisgICAgMHgy
MywweDQ5LDB4RTIsMHg0MCwweEQ3LDB4QkYsMHhFQSwweEJBLDB4NDMsMHg0OSwweDAyLDB4NDEs
MHhFRiwweEZFLDB4N0YsMHg1QiwKKyAgICAweDYzLDB4NTEsMHhFMiwweDQwLDB4MkYsMHhGRCww
eDU3LDB4NUYsMHg2NiwweDcyLDB4MjIsMHg0OSwweDBCLDB4MjUsMHhCNSwweEI1LAorICAgIDB4
QTcsMHg3QSwweEU0LDB4NjEsMHgwMCwweEFFLDB4RkQsMHg1RCwweEM3LDB4ODIsMHg2NCwweDUx
LDB4QTAsMHhFMiwweDdCLDB4N0YsCisgICAgMHhDNSwweDYxLDB4QzIsMHg0MCwweDAwLDB4QUEs
MHg3RSwweDVGLDB4QzQsMHg2MSwweDAzLDB4NDksMHgwMCwweDgyLDB4MDksMHgyRCwKKyAgICAw
eEE0LDB4NTksMHg0MywweDQ5LDB4NTgsMHg3QywweEU4LDB4ODAsMHg4NCwweDUxLDB4MjMsMHg0
OSwweEFELDB4QkQsMHgwQiwweDgyLAorICAgIDB4QTUsMHg1MSwweDQzLDB4NDksMHg5NSwweDNG
LDB4OEQsMHhDQSwweEE1LDB4NTEsMHg0NCwweDQ5LDB4QTAsMHhBRSwweEJFLDB4NzcsCisgICAg
MHg4NCwweDQ5LDB4MjMsMHg0MSwweEU4LDB4QUEsMHhGQSwweERFLDB4NjQsMHg1MSwweDQ0LDB4
NDksMHhFQiwweDU1LDB4NzksMHg4RCwKKyAgICAweEU2LDB4NjEsMHgyMywweDQ5LDB4NTUsMHg5
NSwweDJELDB4MDIsMHgwNiwweDZBLDB4MjMsMHg0MSwweDc1LDB4MkEsMHhBMCwweEFBLAorICAg
IDB4QTUsMHg1OSwweDIzLDB4NDEsMHg1NSwweDU4LDB4RTAsMHg2MCwweDY0LDB4NDksMHhFMiww
eDM4LDB4RkUsMHg3OCwweEZBLDB4N0YsCisgICAgMHgyMywweDQxLDB4QzIsMHgzMCwweERFLDB4
RjgsMHhFMiwweEZBLDB4MDMsMHgzOSwweEEyLDB4MjgsMHg3OCwweDYwLDB4NDIsMHg0QiwKKyAg
ICAweDAzLDB4MzEsMHg2MSwweDIwLDB4RjcsMHhBRiwweDBELDB4MkQsMHhFMywweDMwLDB4ODEs
MHgyMCwweEY3LDB4QTAsMHhFMCwweEU4LAorICAgIDB4QzIsMHgyOCwweDgyLDB4MjAsMHhGOCww
eEUwLDB4RTgsMHhCQSwweEMyLDB4MjgsMHg4MSwweDIwLDB4REQsMHhERCwweDlGLDB4M0YsCisg
ICAgMHgyNCwweDM5LDB4ODEsMHgyOCwweDc1LDB4NUQsMHhFRCwweDgwLDB4QzIsMHgzMCwweDYx
LDB4MjgsMHhCRiwweEJELDB4QkYsMHhFMCwKKyAgICAweDI0LDB4NDEsMHhBMiwweDMwLDB4RTks
MHg4OSwweDBCLDB4MDksMHg0MywweDQxLDB4QTEsMHgzMCwweDdGLDB4RkEsMHhGQSwweEU4LAor
ICAgIDB4RTIsMHgzOCwweEEyLDB4MzAsMHhGNywweDU3LDB4NTcsMHg1QSwweDAzLDB4MzEsMHhB
MSwweDI4LDB4NzUsMHhGNSwweEFELDB4MEYsCisgICAgMHgyNCwweDM5LDB4ODEsMHgyOCwweEQ1
LDB4N0YsMHhBQSwweDAwLDB4MDMsMHgzOSwweDgxLDB4MjgsMHhGRCwweDVELDB4RkYsMHhBOCwK
KyAgICAweDA0LDB4MzEsMHg4MiwweDI4LDB4MkYsMHgzNSwweDNGLDB4QUIsMHgwMywweDMxLDB4
QzIsMHgzMCwweEZBLDB4OTIsMHhCMCwweDYyLAorICAgIDB4RTMsMHgzMCwweEEyLDB4MzAsMHgw
MCwweDAwLDB4QkIsMHhEQSwweDAzLDB4MzksMHhBMiwweDMwLDB4NkEsMHhCOCwweEZBLDB4RkEs
CisgICAgMHgwMywweDMxLDB4QTIsMHgzMCwweEJGLDB4M0QsMHhCRiwweEJCLDB4MjQsMHgzOSww
eEUzLDB4MzAsMHhERSwweEZBLDB4RkUsMHhGQSwKKyAgICAweDAyLDB4MzEsMHhBMSwweDI4LDB4
RUUsMHhGQSwweEYyLDB4RjgsMHhFMiwweDMwLDB4QzIsMHgyOCwweEY4LDB4REMsMHhENSwweDdE
LAorICAgIDB4QzIsMHgyOCwweEEyLDB4MjgsMHgzOCwweDAwLDB4MDIsMHhFOSwweEUzLDB4MzAs
MHhBMSwweDI4LDB4QTIsMHgwMywweDJFLDB4RTcsCisgICAgMHgwMywweDMxLDB4RTMsMHgzMCww
eDU1LDB4REYsMHg5NywweDk1LDB4MDMsMHgzMSwweEMyLDB4MjgsMHgyQiwweEFGLDB4QUUsMHhG
RSwKKyAgICAweDAzLDB4MzEsMHhFMiwweDMwLDB4NkEsMHg0QSwweEI3LDB4NzUsMHgwMywweDM5
LDB4QzIsMHgzMCwweEFFLDB4M0YsMHgxRSwweDFDLAorICAgIDB4NjQsMHg0OSwweDAzLDB4Mzks
MHhFNywweEFGLDB4MjcsMHgyNSwweEE1LDB4NTEsMHgwMywweDQxLDB4MDksMHhBRiwweEJFLDB4
MjIsCisgICAgMHg0RSwweEE0LDB4QzUsMHg1OSwweEI1LDB4QjUsMHgyNSwweDJELDB4QUYsMHhC
NCwweENDLDB4OUIsMHhGRCwweEFCLDB4QTIsMHg4MCwKKyAgICAweEFGLDB4QjQsMHg4QiwweDkz
LDB4NTcsMHhFQSwweDg4LDB4MDIsMHg4RiwweEI0LDB4MkEsMHg4MywweDU1LDB4RUEsMHgwMCww
eDAwLAorICAgIDB4MkUsMHhBQywweEU5LDB4N0EsMHg1NSwweDdGLDB4N0UsMHg3OCwweDBBLDB4
N0IsMHhBOCwweDcyLDB4REEsMHhGOCwweEU4LDB4NzgsCisgICAgMHhFOSwweDdBLDB4NjcsMHg2
MiwweEZBLDB4QTAsMHhCQiwweEQ3LDB4RTksMHg3MiwweDY3LDB4NkEsMHhGNywweEY2LDB4RkUs
MHhCMiwKKyAgICAweEM5LDB4NzIsMHg0NiwweDYyLDB4NUQsMHg3RiwweEZFLDB4RTgsMHg2Qiww
eDgzLDB4MjcsMHg2MiwweDAzLDB4MkYsMHhENSwweDU3LAorICAgIDB4NkIsMHg4QiwweDQ3LDB4
NjIsMHgwMCwweDAwLDB4MDAsMHgwOSwweDhDLDB4OEIsMHg0QiwweDgzLDB4MEQsMHg4QiwweEVD
LDB4RTgsCisgICAgMHgwMywweDQ5LDB4RTIsMHg0MCwweDEwLDB4ODIsMHg1MiwweDdGLDB4MDMs
MHg0MSwweEUyLDB4NDAsMHgyNiwweDI2LDB4ODYsMHgzQywKKyAgICAweDIzLDB4NDksMHhFMiww
eDQwLDB4N0YsMHhBRSwweEFBLDB4QUUsMHgyMywweDQ5LDB4MDIsMHg0MSwweEQ1LDB4M0YsMHg3
QywweEU3LAorICAgIDB4NDMsMHg0OSwweDAyLDB4NDEsMHhENywweEQ0LDB4N0EsMHhFOCwweDIz
LDB4NDksMHgwMywweDQxLDB4MjksMHgwMiwweDc3LDB4NUYsCisgICAgMHgyMywweDQ5LDB4QzIs
MHgzOCwweEY4LDB4RTIsMHhDQSwweDhGLDB4ODQsMHg1OSwweEMyLDB4NDAsMHgyRiwweDNELDB4
RkYsMHhGRiwKKyAgICAweDI2LDB4NkEsMHg0MywweDQ5LDB4OEEsMHhBMiwweEZELDB4NTUsMHhD
NSwweDU5LDB4QzIsMHg0MCwweEE4LDB4RkUsMHg3RiwweDVGLAorICAgIDB4MDMsMHg0MSwweEMy
LDB4NDAsMHg4QSwweENFLDB4QkYsMHhFRiwweDA1LDB4NjIsMHgwMywweDQ5LDB4QUQsMHgyRCww
eDhELDB4MkQsCisgICAgMHhFNSwweDYxLDB4ODQsMHg1OSwweDdFLDB4N0EsMHg2QSwweEVDLDB4
RTYsMHg1OSwweDY0LDB4NTEsMHhGNSwweERELDB4RkYsMHhFQiwKKyAgICAweEE1LDB4NTEsMHg2
NCwweDQ5LDB4RTIsMHg2MCwweDc4LDB4NUEsMHg4NSwweDUxLDB4MjIsMHgzOSwweEVBLDB4QUEs
MHhBQSwweEEwLAorICAgIDB4NjQsMHg0OSwweDIzLDB4NDEsMHhGQSwweEU4LDB4QTgsMHgyMiww
eDY2LDB4NzIsMHg0MywweDQ5LDB4QUQsMHgyQiwweDhBLDB4QTIsCisgICAgMHg0NiwweDZBLDB4
MjIsMHg0OSwweEEwLDB4RUMsMHhGQSwweDdBLDB4QTQsMHg1OSwweEUyLDB4MzgsMHhBOCwweEY4
LDB4REUsMHg1NSwKKyAgICAweEE0LDB4NTEsMHgwMywweDQxLDB4NzAsMHg3QSwweEZBLDB4NkYs
MHgyMywweDQxLDB4QzIsMHgzMCwweEVFLDB4OTYsMHhGRiwweDJBLAorICAgIDB4MDMsMHgzOSww
eEEyLDB4MzAsMHg2QSwweEZFLDB4RjgsMHhGRSwweEMyLDB4MzAsMHg4MiwweDI4LDB4QkIsMHhE
NywweEVDLDB4RUEsCisgICAgMHhFMywweDMwLDB4ODIsMHgyMCwweDI1LDB4QTcsMHhBRCwweEFE
LDB4QzMsMHgzMCwweEEyLDB4MjgsMHg3QywweEE4LDB4OEIsMHhGQiwKKyAgICAweDQ0LDB4NDEs
MHhBMiwweDI4LDB4RDUsMHhCNSwweDI1LDB4MEQsMHg2NCwweDQ5LDB4QzMsMHgzMCwweEFELDB4
QUEsMHgyOCwweDgyLAorICAgIDB4NDUsMHg0MSwweEUzLDB4MzgsMHhCOCwweDU0LDB4NTYsMHg1
RSwweDIzLDB4NDEsMHhDMiwweDM4LDB4REUsMHhBOCwweEEyLDB4RkEsCisgICAgMHgyMywweDQx
LDB4RTIsMHgzOCwweDNELDB4OTcsMHhCQiwweDdGLDB4NjQsMHg0OSwweDAzLDB4NDEsMHhGQSww
eDgyLDB4MEIsMHg5NSwKKyAgICAweDQ0LDB4NDksMHhBMSwweDI4LDB4N0UsMHg1OCwweDcwLDB4
RTgsMHhFMywweDMwLDB4ODEsMHgyOCwweDBCLDB4QkEsMHhENywweEFFLAorICAgIDB4NDQsMHgz
OSwweEEyLDB4MzAsMHgyQSwweEJGLDB4QUQsMHhGNywweDI0LDB4MzksMHhDMiwweDI4LDB4RTgs
MHhCRSwweEZGLDB4N0IsCisgICAgMHhFMywweDMwLDB4ODEsMHgyOCwweDA4LDB4MDgsMHhCRSww
eEZELDB4RTMsMHgzMCwweEEyLDB4MjgsMHg0MCwweEY4LDB4RUEsMHhGRiwKKyAgICAweEMyLDB4
MzAsMHhBMiwweDI4LDB4OTIsMHhGNiwweEFGLDB4NTgsMHgwMywweDM5LDB4QzIsMHgyOCwweEFC
LDB4OEUsMHhFRCwweDVELAorICAgIDB4RTIsMHgzMCwweEEyLDB4MjgsMHhCOCwweEJFLDB4RkEs
MHhBRiwweDAzLDB4MzEsMHhDMiwweDI4LDB4OEYsMHgyRiwweDk3LDB4RDcsCisgICAgMHhFMyww
eDMwLDB4QzIsMHgyOCwweEVDLDB4NjIsMHhBQywweEVGLDB4RTIsMHgzMCwweEExLDB4MjgsMHhC
RSwweDNGLDB4QkEsMHhFQSwKKyAgICAweEUyLDB4MzAsMHhBMiwweDI4LDB4NjIsMHg4RSwweEFB
LDB4OEIsMHgwMywweDMxLDB4QTEsMHgyOCwweEZELDB4QUYsMHg4QiwweDJCLAorICAgIDB4MDMs
MHgzMSwweEMyLDB4MzAsMHg4RSwweDJFLDB4MzcsMHg1NywweDAzLDB4MzksMHhDMiwweDMwLDB4
RkEsMHg4MCwweDBBLDB4QUYsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEQ3LDB4QkUsMHhC
OCwweEFBLDB4MDMsMHgzOSwweEMyLDB4MzAsMHhCRiwweERCLDB4NzIsMHg2MiwKKyAgICAweDY0
LDB4NDksMHhBMiwweDMwLDB4MkYsMHgyRiwweDNGLDB4QkYsMHhFOSwweDdBLDB4MjMsMHg0MSww
eEZGLDB4RkYsMHhCRCwweDM1LAorICAgIDB4MTEsMHhDNSwweEE5LDB4NzIsMHgyNSwweDJELDB4
MDMsMHgwMiwweDMwLDB4Q0QsMHg4RSwweEI0LDB4N0YsMHhGRiwweDdFLDB4RTgsCisgICAgMHhB
RiwweEJDLDB4NkUsMHhBQywweDJCLDB4MjgsMHhFRiwweDk0LDB4RDAsMHhCQywweDZFLDB4QjQs
MHhBQSwweDg4LDB4RUIsMHg3NywKKyAgICAweDhGLDB4QjQsMHgyQiwweDgzLDB4NzgsMHhFMCww
eEEwLDB4ODgsMHgyRCwweEE0LDB4QTksMHg3MiwweDc3LDB4N0YsMHhGRSwweDYwLAorICAgIDB4
QzksMHg3MiwweDQ2LDB4NjIsMHhERiwweDdDLDB4NkEsMHhBOCwweEU5LDB4NzIsMHg2NywweDZB
LDB4QUYsMHhBOSwweEFELDB4MkYsCisgICAgMHgwQSwweDdCLDB4QTgsMHg2QSwweDdGLDB4RTIs
MHg4QSwweDBBLDB4RTksMHg3QSwweDA2LDB4NUEsMHg3QSwweEZBLDB4QzgsMHhBOCwKKyAgICAw
eEVBLDB4N0EsMHhFNiwweDU5LDB4MzUsMHhENSwweDVGLDB4N0UsMHg2QiwweDgzLDB4QTUsMHg0
OSwweDAwLDB4MDMsMHhCRCwweDU1LAorICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHhGQiwweEU4
LDB4QUEsMHg3OSwweDIzLDB4NDksMHhFMiwweDQwLDB4Q0IsMHg1QiwweDU2LDB4QjcsCisgICAg
MHgyMywweDQ5LDB4RTIsMHg0MCwweDhBLDB4QUEsMHg3QiwweERDLDB4MjMsMHg0OSwweEUyLDB4
NDAsMHhBRiwweDAwLDB4QUEsMHhFQiwKKyAgICAweDIzLDB4NDEsMHhFMiwweDQwLDB4ODAsMHgw
MCwweEEyLDB4NjgsMHgyMywweDQ5LDB4QzIsMHgzOCwweEUwLDB4RkUsMHhCRiwweEFFLAorICAg
IDB4MDMsMHg0MSwweEUyLDB4NDAsMHgwOSwweDQzLDB4NUUsMHhCRCwweDIzLDB4NDksMHhFMiww
eDQwLDB4QUEsMHhCQiwweEZGLDB4RTUsCisgICAgMHgwMiwweDQxLDB4RTIsMHg0MCwweDIzLDB4
QUYsMHgwOSwweDlELDB4MjMsMHg0OSwweEMyLDB4MzgsMHg3QSwweERDLDB4RUUsMHhGRiwKKyAg
ICAweDAzLDB4NDksMHhFMiwweDQwLDB4MDUsMHhCRiwweDk3LDB4N0QsMHgyNiwweDZBLDB4MDMs
MHg0OSwweDJELDB4MjksMHgwRCwweDBELAorICAgIDB4MDYsMHg2MiwweEE0LDB4NTksMHg3Qyww
eEQ4LDB4RTgsMHhBQSwweEU1LDB4NjEsMHg4NCwweDUxLDB4NUQsMHhGOCwweDZBLDB4N0MsCisg
ICAgMHg4NCwweDUxLDB4MDMsMHg0MSwweEEwLDB4QkEsMHhERSwweEZFLDB4NjQsMHg0OSwweDIz
LDB4NDEsMHg4MCwweDgwLDB4OUEsMHhENSwKKyAgICAweDY0LDB4NDksMHgwMywweDQxLDB4QUEs
MHhFMiwweDZBLDB4QzcsMHgyNiwweDZBLDB4MDMsMHg0OSwweDAzLDB4MEIsMHhBRCwweEE1LAor
ICAgIDB4RTUsMHg2MSwweDYxLDB4MjgsMHhFMCwweDc4LDB4N0UsMHg3QSwweEMyLDB4MzgsMHg2
MSwweDI4LDB4OEEsMHhBNSwweEQ1LDB4QUMsCisgICAgMHgyMywweDQxLDB4QzIsMHgzMCwweEMz
LDB4RjksMHg3RCwweEQ1LDB4MjMsMHgzOSwweEMyLDB4MzAsMHgyMiwweEEyLDB4RjIsMHg1MiwK
KyAgICAweDAzLDB4MzksMHg4MiwweDIwLDB4QTAsMHg4QSwweEVBLDB4N0YsMHhDMiwweDI4LDB4
NjEsMHgyMCwweEEyLDB4QTgsMHhCRiwweEY1LAorICAgIDB4QzIsMHgyOCwweDgyLDB4MjAsMHgy
QSwweDBGLDB4MEQsMHgyRiwweEUyLDB4MjgsMHg4MSwweDI4LDB4RUUsMHg5QSwweEJDLDB4RkEs
CisgICAgMHg0NCwweDQxLDB4QzIsMHgzMCwweDI1LDB4MjUsMHgyRCwweEFELDB4NDQsMHg0OSww
eDgxLDB4MjgsMHgwMCwweEEwLDB4NUEsMHg1RSwKKyAgICAweDQ0LDB4NDksMHg2MSwweDIwLDB4
QTgsMHhBQSwweEY3LDB4RkQsMHgwMywweDQxLDB4ODEsMHgyOCwweEE4LDB4QUEsMHhBQSwweDdE
LAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhGMCwweEMwLDB4MDIsMHg4OSwweDIzLDB4NDEs
MHhDMiwweDM4LDB4MzcsMHhCRiwweDNGLDB4RUIsCisgICAgMHgyMywweDQxLDB4RTIsMHgzOCww
eEUwLDB4RkYsMHhCRSwweEZFLDB4MDMsMHg0MSwweEEyLDB4MjgsMHg1RiwweDdFLDB4RjgsMHhG
OCwKKyAgICAweEUzLDB4MzAsMHg2MSwweDI4LDB4QUEsMHhCQywweDdCLDB4RUEsMHhFMywweDMw
LDB4ODEsMHgyOCwweEU4LDB4RjcsMHhENSwweEY1LAorICAgIDB4QzIsMHgyOCwweDgyLDB4Mjgs
MHhEQSwweDgyLDB4MDMsMHhCNSwweEUzLDB4MzAsMHhBMiwweDI4LDB4NzUsMHhFQSwweDgyLDB4
M0YsCisgICAgMHgwMywweDMxLDB4ODIsMHgyOCwweDdGLDB4N0UsMHhFOCwweEEyLDB4QzIsMHgy
OCwweDgxLDB4MjgsMHhFMywweEFELDB4RkYsMHhBMCwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4
LDB4OUQsMHg3NywweEFGLDB4QUYsMHgwMywweDMxLDB4QzIsMHgzMCwweDY3LDB4RUYsMHhDQSww
eEZCLAorICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHhENSwweEQ1LDB4OEYsMHgwRSwweDAyLDB4
MzEsMHhDMiwweDI4LDB4QTUsMHg5NSwweEZGLDB4REIsCisgICAgMHgwMywweDMxLDB4QzIsMHgy
OCwweEVFLDB4QjgsMHg2RSwweEVFLDB4MjQsMHgzOSwweEMyLDB4MzAsMHgzQiwweDJCLDB4MkIs
MHhFRCwKKyAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4NTYsMHhERSwweERFLDB4M0YsMHgyMyww
eDM5LDB4RTIsMHgzMCwweDU1LDB4NUQsMHhENSwweEJDLAorICAgIDB4MjQsMHgzOSwweEMyLDB4
MzAsMHhGRCwweEI3LDB4RkYsMHhGQywweDAzLDB4NDEsMHhFMywweDMwLDB4NzcsMHhFQSwweEFB
LDB4MkYsCisgICAgMHg2NCwweDQ5LDB4QzIsMHgzOCwweEZELDB4QTUsMHhBQiwweDJGLDB4MEMs
MHhBNCwweDg1LDB4NTEsMHhCNSwweDM1LDB4M0QsMHgyRCwKKyAgICAweDMxLDB4Q0QsMHhBRiww
eEI0LDB4MDMsMHg4OSwweDI5LDB4QTksMHgzMSwweEM1LDB4RDAsMHhCQywweDgwLDB4MDAsMHhB
QSwweEY5LAorICAgIDB4MTAsMHhDNSwweDhFLDB4QjQsMHg3RSwweEUwLDB4MDAsMHgwOCwweDEw
LDB4QzUsMHg0RCwweEFDLDB4RDcsMHg1RSwweEY4LDB4ODAsCisgICAgMHhEMCwweEJDLDB4NEUs
MHhBQywweDU3LDB4RjUsMHhGNSwweEZDLDB4NkUsMHhBQywweDZCLDB4OEIsMHg3OCwweEU4LDB4
RTAsMHg4MCwKKyAgICAweENDLDB4OUIsMHg4OCwweDZBLDB4NUYsMHg3RSwweEY4LDB4ODgsMHgw
QSwweDdCLDB4ODcsMHg2QSwweEJELDB4QkYsMHhCRiwweEE4LAorICAgIDB4MkEsMHg4MywweEM4
LDB4NzIsMHgyOSwweDJGLDB4MkUsMHgyRiwweDRCLDB4ODMsMHhBOSwweDZBLDB4N0EsMHhBQSww
eEEwLDB4ODIsCisgICAgMHgyQSwweDgzLDB4MjcsMHg1QSwweDdGLDB4RkEsMHhFOCwweEEwLDB4
ODgsMHg2QSwweDY0LDB4NDEsMHg1RiwweDdBLDB4RTgsMHhFMCwKKyAgICAweDIzLDB4NDksMHhF
MiwweDQwLDB4REQsMHhGQiwweEFGLDB4QkIsMHgyMywweDQ5LDB4RTIsMHg0MCwweEFGLDB4RkYs
MHhGQSwweEE4LAorICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHhGRiwweEVGLDB4Q0IsMHhDQiww
eDIzLDB4NDksMHgwMiwweDQxLDB4NkYsMHhGNSwweDkxLDB4ODcsCisgICAgMHgwMywweDQxLDB4
QzIsMHgzOCwweEE4LDB4QTAsMHhFMCwweEJDLDB4MDMsMHg0MSwweEUyLDB4NDAsMHgyQywweDMz
LDB4ODcsMHhGRiwKKyAgICAweDAzLDB4NDEsMHhFMiwweDM4LDB4MEEsMHgwRSwweEI1LDB4REUs
MHgwMywweDQxLDB4RTIsMHg0MCwweDZCLDB4QjMsMHgyMCwweEJCLAorICAgIDB4MDMsMHg0MSww
eEMxLDB4MzgsMHhBRSwweDAwLDB4ODgsMHhDRiwweDIzLDB4NDEsMHhFMiwweDQwLDB4RjUsMHhF
RiwweEJGLDB4RkQsCisgICAgMHgwMiwweDQxLDB4QzIsMHg0MCwweEEwLDB4ODAsMHhCOCwweEY4
LDB4NDYsMHg2QSwweDAyLDB4NDEsMHg4RCwweDJELDB4MEQsMHgyRCwKKyAgICAweDI2LDB4NkEs
MHhDNSwweDU5LDB4REUsMHhEOCwweEQ4LDB4RkEsMHgwNSwweDYyLDB4MDMsMHg0MSwweEU4LDB4
RjgsMHg3QSwweDdDLAorICAgIDB4NDQsMHg0OSwweEUyLDB4MzgsMHgwQSwweEE4LDB4RkQsMHg3
RiwweDQ0LDB4NDEsMHgwMywweDM5LDB4MkUsMHgyQSwweDBELDB4ODksCisgICAgMHg0NCwweDQx
LDB4MDMsMHg0MSwweEVBLDB4RUEsMHg2MiwweEFBLDB4NjQsMHg0OSwweEMyLDB4MzAsMHgyRiww
eEZBLDB4NUUsMHg1RSwKKyAgICAweEU1LDB4NTksMHhFMywweDM4LDB4ODIsMHg4QSwweEZELDB4
NzUsMHgwMywweDM5LDB4ODEsMHgyMCwweDc4LDB4RTgsMHhGQywweDdBLAorICAgIDB4QzIsMHgz
MCwweEExLDB4MjAsMHhBNywweEFGLDB4OEIsMHhBRCwweEUzLDB4MzAsMHg4MSwweDIwLDB4RjAs
MHhGQSwweDZGLDB4N0EsCisgICAgMHhDMiwweDI4LDB4NjEsMHgyMCwweDcyLDB4NTcsMHg1NSww
eEQ1LDB4QTIsMHgyOCwweDYxLDB4MjAsMHhBNSwweDJGLDB4M0IsMHgyQSwKKyAgICAweEUzLDB4
MzAsMHg4MSwweDI4LDB4QkIsMHhBQiwweEFELDB4MkYsMHhDMiwweDI4LDB4QTIsMHgyOCwweDAw
LDB4MzMsMHgxQSwweEMwLAorICAgIDB4MjQsMHgzOSwweEEyLDB4MjgsMHgwRCwweEY3LDB4N0Ys
MHg1NywweEUzLDB4MzAsMHg4MSwweDIwLDB4NzgsMHhCOCwweEZGLDB4RjUsCisgICAgMHhDMiww
eDI4LDB4NjEsMHgyMCwweEE5LDB4ODgsMHgwMCwweEEwLDB4QTEsMHgyOCwweDYxLDB4MjAsMHhG
RSwweEFFLDB4RUUsMHhBQSwKKyAgICAweEUzLDB4MzgsMHg4MSwweDI4LDB4MDMsMHgyOSwweEI1
LDB4QkQsMHgwMywweDQxLDB4QzIsMHgzMCwweDBCLDB4QTIsMHgyMiwweEI1LAorICAgIDB4MjMs
MHg0MSwweEUyLDB4MzgsMHg1QSwweEFBLDB4ODgsMHgwOCwweDIzLDB4NDEsMHhBMiwweDMwLDB4
RkUsMHg1QSwweDU4LDB4RjgsCisgICAgMHhDMiwweDMwLDB4ODIsMHgyOCwweEE4LDB4QTgsMHhB
QSwweDJELDB4RTMsMHgzMCwweDgxLDB4MjgsMHg2QSwweENBLDB4MEIsMHhBRiwKKyAgICAweEUz
LDB4MzAsMHg4MSwweDI4LDB4NTUsMHg1NSwweEZFLDB4NjIsMHhDMiwweDI4LDB4ODIsMHgyOCww
eDJGLDB4RUQsMHg5NSwweEJELAorICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHhDQiwweEVELDB4
RUYsMHhFQiwweEMyLDB4MjgsMHg4MSwweDI4LDB4QUEsMHhGRSwweDdFLDB4RUUsCisgICAgMHhF
MywweDMwLDB4ODEsMHgyMCwweEFCLDB4QkYsMHg5NSwweEFGLDB4RTMsMHgzMCwweEEyLDB4Mjgs
MHhCRSwweDlGLDB4RDcsMHhCNywKKyAgICAweDAzLDB4MzksMHhBMiwweDI4LDB4MkEsMHg4Qiww
eEFELDB4QUYsMHgwMywweDMxLDB4QTIsMHgyOCwweEVBLDB4QUUsMHg4RCwweDc5LAorICAgIDB4
MDMsMHgzMSwweEMyLDB4MjgsMHhBQiwweDVCLDB4N0UsMHg3RCwweEMyLDB4MzAsMHhFMywweDI4
LDB4QkEsMHhFOCwweDBBLDB4QTIsCisgICAgMHgyMywweDQxLDB4QzIsMHgzMCwweEY5LDB4QUYs
MHgwOSwweEFGLDB4MjMsMHg0MSwweDAzLDB4MzksMHg1RSwweDY3LDB4OTYsMHgxNiwKKyAgICAw
eDIzLDB4NDEsMHhFMywweDM4LDB4NzIsMHgyMiwweDBCLDB4M0UsMHg0NCwweDQ5LDB4RTIsMHgz
OCwweEY1LDB4MkIsMHgyMywweEEyLAorICAgIDB4QzYsMHg1OSwweDIzLDB4NDEsMHhCNSwweDJG
LDB4M0IsMHgwQiwweEVFLDB4QTMsMHhFNiwweDU5LDB4MkQsMHhBNSwweEJGLDB4RUYsCisgICAg
MHhGMCwweEJDLDB4MkIsMHg4QiwweDAwLDB4MEIsMHhCRCwweDU1LDB4RjAsMHhCQywweEFCLDB4
OTMsMHgwMCwweDAwLDB4MDIsMHhBNSwKKyAgICAweDEwLDB4QzUsMHhGMCwweEJDLDB4OEQsMHhB
NywweEFGLDB4QkQsMHgxMCwweEM1LDB4Q0YsMHhCQywweEE4LDB4QTAsMHhCRSwweDdFLAorICAg
IDB4RjAsMHhCQywweDhGLDB4QjQsMHg3OCwweDA4LDB4MjIsMHgwQSwweEYwLDB4QkMsMHg0RSww
eEFDLDB4NzcsMHg3OCwweDYwLDB4ODAsCisgICAgMHg0RSwweEFDLDB4QUMsMHg5MywweDVGLDB4
RkEsMHhFQSwweEE4LDB4MkQsMHhBNCwweDA5LDB4N0IsMHg1RiwweEU4LDB4MDIsMHg4MCwKKyAg
ICAweDJELDB4OUMsMHgwQSwweDdCLDB4NTUsMHg1RiwweEUyLDB4MDAsMHhDQywweDkzLDB4MkEs
MHg3QiwweEY1LDB4N0QsMHhGRiwweEEwLAorICAgIDB4Q0IsMHg5MywweEVBLDB4N0EsMHg3Riww
eEZFLDB4RkIsMHg4MCwweDhCLDB4OEIsMHgyNywweDVBLDB4N0YsMHg3QSwweEZBLDB4QTgsCisg
ICAgMHgyMywweDQ5LDB4RTIsMHgzOCwweEJGLDB4OEIsMHhBQiwweDZDLDB4MjMsMHg0OSwweEUz
LDB4NDAsMHg4QSwweEFBLDB4QTYsMHhFRCwKKyAgICAweDIzLDB4NDksMHhFMywweDQwLDB4QTIs
MHhFRSwweEJFLDB4RkUsMHgyMywweDQ5LDB4RTIsMHg0MCwweEYwLDB4NjAsMHhBOCwweERBLAor
ICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHg3QSwweDlDLDB4NkMsMHhGQSwweDAzLDB4NDEsMHhD
MiwweDM4LDB4QUIsMHgwRSwweEEzLDB4NzcsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDNF
LDB4QUIsMHhFQiwweEVGLDB4MDMsMHg0MSwweEMyLDB4MzgsMHhCMiwweEZFLDB4RkMsMHhFQywK
KyAgICAweEUyLDB4NDAsMHgwMywweDMxLDB4MjgsMHgwOCwweDgwLDB4MkEsMHgwMywweDQxLDB4
RTIsMHg0MCwweEVELDB4NTksMHhFRCwweEMzLAorICAgIDB4MDMsMHg0MSwweEMyLDB4NDAsMHgz
QSwweDI4LDB4RUYsMHgyQSwweDY3LDB4NzIsMHgwMiwweDQxLDB4MkQsMHgyNSwweDI1LDB4MjUs
CisgICAgMHg0NiwweDZBLDB4RTUsMHg2MSwweERDLDB4NzgsMHg1QSwweEY4LDB4RTUsMHg1OSww
eDAzLDB4NDEsMHg3OCwweDc4LDB4NUMsMHg1OCwKKyAgICAweDQ0LDB4NDEsMHhFMywweDM4LDB4
QUYsMHg4RiwweEVELDB4RjksMHgyMywweDM5LDB4RTMsMHgzOCwweEYyLDB4NzgsMHg4RiwweEFF
LAorICAgIDB4NDMsMHg0MSwweEUzLDB4MzAsMHg4MiwweEJGLDB4REYsMHg3RiwweDQ0LDB4NDEs
MHhFMiwweDMwLDB4N0EsMHhGOCwweEFBLDB4RUQsCisgICAgMHgyMywweDM5LDB4QzIsMHgzMCww
eDdGLDB4N0YsMHg3OCwweEEyLDB4RTIsMHgzMCwweEExLDB4MjgsMHhFRSwweEZGLDB4NTcsMHhG
OCwKKyAgICAweEUzLDB4MjgsMHhBMiwweDI4LDB4QUYsMHg3RiwweDU1LDB4QTYsMHhFMiwweDI4
LDB4ODEsMHgyMCwweDVFLDB4NUYsMHhGQiwweDIwLAorICAgIDB4RTMsMHgzMCwweDgxLDB4MjAs
MHhENSwweEFELDB4MkEsMHhBQSwweEUzLDB4MzAsMHhBMiwweDI4LDB4RDUsMHhFNSwweEJCLDB4
QUUsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDJGLDB4QkYsMHhFQSwweEEzLDB4RTMsMHgz
MCwweEEyLDB4MjgsMHg2QSwweEU4LDB4MjAsMHgyOCwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4
LDB4REYsMHhFRSwweEI4LDB4RUMsMHhFMiwweDI4LDB4QTIsMHgyOCwweDU1LDB4NTcsMHhGNiww
eEYyLAorICAgIDB4QzIsMHgyOCwweDgxLDB4MjAsMHg2MywweDZCLDB4QUYsMHhENywweEMyLDB4
MjgsMHg4MiwweDIwLDB4RUYsMHhFRSwweEM4LDB4Q0UsCisgICAgMHhDMiwweDI4LDB4ODIsMHgy
MCwweDhCLDB4OEEsMHhCQiwweDU3LDB4QzIsMHgzMCwweDYxLDB4MjAsMHgyQSwweEJGLDB4QkYs
MHhGNiwKKyAgICAweDI0LDB4NDEsMHg4MSwweDIwLDB4MEEsMHhBRiwweERELDB4RDcsMHg0NCww
eDQxLDB4QzIsMHgzMCwweDYwLDB4RTAsMHhFMywweEZELAorICAgIDB4RTMsMHgzMCwweDgxLDB4
MjgsMHhGNSwweEZGLDB4RUEsMHg4OCwweEUyLDB4MzAsMHhBMiwweDI4LDB4NUQsMHg1NSwweEQ3
LDB4QUEsCisgICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEJGLDB4MzUsMHgyQiwweEEwLDB4MjMs
MHgzOSwweEEyLDB4MjgsMHhGRCwweEFBLDB4OEUsMHgwQiwKKyAgICAweDQ0LDB4NDEsMHhBMiww
eDMwLDB4NUQsMHg3RiwweEEyLDB4MDIsMHgyNCwweDM5LDB4ODEsMHgyOCwweEQ3LDB4NUYsMHhG
RSwweDg4LAorICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHg4OSwweDBELDB4RUIsMHhBRiwweEUz
LDB4MzAsMHhBMiwweDI4LDB4QkUsMHg3OCwweDc4LDB4RkUsCisgICAgMHhDMiwweDI4LDB4ODIs
MHgyOCwweDAwLDB4RUEsMHhFQiwweEZBLDB4QzIsMHgyOCwweDgxLDB4MjgsMHhBMiwweDgzLDB4
MEQsMHhDNSwKKyAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4QjUsMHg1NywweDdGLDB4RTksMHhD
MiwweDI4LDB4ODIsMHgyOCwweDAwLDB4MEIsMHgwRCwweDJFLAorICAgIDB4MDMsMHgzOSwweEMy
LDB4MjgsMHhCQiwweERELDB4NkYsMHg4QSwweDAyLDB4MzksMHhDMiwweDMwLDB4MkEsMHhCRCww
eEZELDB4QTcsCisgICAgMHg2NCwweDQ5LDB4RTIsMHgzOCwweEI3LDB4OEYsMHg4RCwweEJELDB4
QTUsMHg1MSwweDAzLDB4NDEsMHhGRCwweDNELDB4MjcsMHhBRiwKKyAgICAweDQ3LDB4NkEsMHg2
NCwweDUxLDB4QkQsMHhBRCwweDJGLDB4MkYsMHgwQSwweDgzLDB4NjgsMHg2QSwweDA5LDB4MDks
MHgwQiwweDBCLAorICAgIDB4MEEsMHg4MywweEU5LDB4N0EsMHgzMywweDNELDB4QTgsMHgzMCww
eEFDLDB4OUIsMHhFOSwweDdBLDB4MkIsMHhCNywweERELDB4NTUsCisgICAgMHhEMCwweEJDLDB4
RUEsMHg4MiwweDBBLDB4QkYsMHhGRCwweEQ1LDB4Q0YsMHhCQywweDRCLDB4OEIsMHgwMCwweDAw
LDB4MkYsMHhENSwKKyAgICAweEYwLDB4QkMsMHgwRSwweEE0LDB4MDAsMHgwMCwweDAwLDB4MkQs
MHgxMCwweEM1LDB4QUUsMHhCNCwweDdBLDB4NkEsMHhFQSwweEM4LAorICAgIDB4OEUsMHhCNCww
eDJELDB4QTQsMHg3NywweEQ2LDB4REMsMHhCOCwweDZFLDB4QUMsMHgwRCwweEE0LDB4RjUsMHhE
RSwweEZBLDB4RTgsCisgICAgMHg0RSwweEFDLDB4MEQsMHhBNCwweEFELDB4OUUsMHhGRSwweDBB
LDB4NEUsMHhBQywweDJELDB4OUMsMHg3QSwweEJCLDB4QUIsMHgwQSwKKyAgICAweDZFLDB4QUMs
MHgyRCwweEE0LDB4NTUsMHhGMiwweEUyLDB4QTgsMHg0RSwweEE0LDB4NkIsMHg4MywweDdFLDB4
QTAsMHg4MCwweDAwLAorICAgIDB4MDMsMHg0MSwweEMxLDB4MzgsMHhGMCwweDk4LDB4RjgsMHhB
QSwweDQzLDB4NDEsMHhFMiwweDQwLDB4NzcsMHhGNSwweEZGLDB4OUYsCisgICAgMHgyMywweDQ5
LDB4RTMsMHg0MCwweEEyLDB4MkYsMHhFQiwweDdCLDB4MDMsMHg0MSwweEMyLDB4MzgsMHg4MCww
eEEwLDB4RjIsMHg2MCwKKyAgICAweDAyLDB4NDEsMHhDMiwweDM4LDB4RkIsMHhEQiwweEYzLDB4
M0UsMHgwMywweDQxLDB4QzIsMHgzOCwweEVBLDB4NzksMHhCQSwweEFFLAorICAgIDB4MDMsMHg0
MSwweEUyLDB4MzgsMHgzRCwweDJELDB4RUYsMHg1NSwweDAzLDB4NDEsMHhDMiwweDM4LDB4RUUs
MHhFQiwweDhELDB4M0IsCisgICAgMHgwMywweDQxLDB4RTIsMHgzOCwweDFFLDB4QjMsMHhGRiww
eDZGLDB4MDIsMHg0MSwweEMyLDB4MzgsMHhBQSwweDlGLDB4QkUsMHhGQiwKKyAgICAweDAzLDB4
NDEsMHhDMSwweDM4LDB4QUEsMHg5QSwweEZBLDB4RUYsMHg0NiwweDZBLDB4RTIsMHg0MCwweDI1
LDB4MzUsMHgyNSwweDM1LAorICAgIDB4NjYsMHg3MiwweEU1LDB4NjEsMHhGQSwweEZDLDB4Nzgs
MHhFOCwweDA1LDB4NjIsMHhFMiwweDM4LDB4NTgsMHg3QSwweDVDLDB4NzgsCisgICAgMHgwMyww
eDM5LDB4RTIsMHgzMCwweDAyLDB4MkIsMHhCRSwweDk3LDB4MjQsMHgzOSwweEUzLDB4MzgsMHhF
MiwweEFGLDB4RjcsMHg3NiwKKyAgICAweDIzLDB4MzksMHgwMywweDM5LDB4NkQsMHhGNiwweEFE
LDB4NTUsMHg0NCwweDQxLDB4RTIsMHgzMCwweEZFLDB4ODIsMHhBQSwweEZGLAorICAgIDB4NDMs
MHgzOSwweEUzLDB4MzgsMHhBRCwweDdGLDB4RkEsMHg4QSwweDI0LDB4MzksMHhFMywweDMwLDB4
N0IsMHhBMiwweEJELDB4RjgsCisgICAgMHgyNCwweDM5LDB4QzIsMHgyOCwweDdELDB4RUUsMHhB
OCwweDhBLDB4MjMsMHgzOSwweEUzLDB4MzAsMHg1RCwweEQ3LDB4QUYsMHhBQSwKKyAgICAweDIz
LDB4MzksMHhFMywweDMwLDB4NUQsMHhDRSwweEFFLDB4QkYsMHgyNCwweDM5LDB4QzIsMHgzMCww
eERGLDB4RkEsMHhFMiwweEFBLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MjgsMHhFNSwweEZBLDB4
MjAsMHgyMCwweDAzLDB4MzEsMHhDMiwweDI4LDB4QjgsMHhEQSwweERDLDB4QTAsCisgICAgMHhF
MywweDMwLDB4QzIsMHgyOCwweEY0LDB4Q0EsMHgyRSwweDNBLDB4RTMsMHgzMCwweEMyLDB4Mjgs
MHhGRiwweEJCLDB4QzIsMHgwOCwKKyAgICAweEUzLDB4MjgsMHg4MiwweDIwLDB4N0YsMHhFOCww
eEFBLDB4QTAsMHhDMiwweDI4LDB4ODIsMHgyMCwweDdGLDB4RUUsMHhFOCwweDg4LAorICAgIDB4
QzMsMHgyOCwweDgyLDB4MjAsMHg3NSwweDdGLDB4NkIsMHhFMiwweEEyLDB4MjgsMHg4MSwweDIw
LDB4QTcsMHg1NSwweDE2LDB4ODAsCisgICAgMHhBMiwweDI4LDB4ODIsMHgyMCwweDNCLDB4MDcs
MHhBRSwweEZELDB4MDMsMHgzOSwweDgyLDB4MjgsMHg4RiwweDg5LDB4MEYsMHhGRCwKKyAgICAw
eEMyLDB4MzAsMHhFMywweDI4LDB4QTAsMHg4MiwweDBCLDB4MDgsMHgwMywweDM5LDB4QzIsMHgz
MCwweEVGLDB4NUMsMHhBQiwweDNELAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhFQSwweDgz
LDB4RUEsMHg3MCwweDIzLDB4NDEsMHhBMiwweDI4LDB4MDIsMHhBQiwweEJELDB4RjUsCisgICAg
MHg2NCwweDQ5LDB4RTMsMHgzOCwweEEyLDB4MDMsMHg4QiwweEQ1LDB4NjQsMHg0MSwweEMyLDB4
MzAsMHhGRSwweDdDLDB4NzgsMHg2QSwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4RkIsMHhC
NSwweEI1LDB4RkUsMHhFMywweDM4LDB4QzIsMHgyOCwweEQxLDB4RUEsMHhCMywweDRGLAorICAg
IDB4QzIsMHgzMCwweDgxLDB4MjgsMHhGRSwweERBLDB4QkUsMHg4QSwweEUyLDB4MzAsMHhBMiww
eDI4LDB4NTUsMHhGNSwweERCLDB4QTMsCisgICAgMHhFMiwweDMwLDB4QTIsMHgyOCwweDY5LDB4
NkIsMHhFRiwweEFBLDB4RTMsMHgzMCwweDgxLDB4MjAsMHhBRiwweDM5LDB4MkIsMHhBRiwKKyAg
ICAweDIzLDB4MzksMHhFMiwweDMwLDB4MDksMHgyOSwweDlELDB4NUYsMHg2NCwweDQ5LDB4RTIs
MHgzMCwweEU3LDB4QkYsMHgyRiwweEJGLAorICAgIDB4NDMsMHg0MSwweDAzLDB4MzksMHgzNSww
eEFFLDB4OUIsMHhGOCwweDI2LDB4NjIsMHgyMywweDQxLDB4RkQsMHhGRiwweEJGLDB4MkQsCisg
ICAgMHhBOCwweDcyLDB4ODQsMHg1MSwweDJELDB4MkQsMHgyQiwweDBBLDB4MEEsMHg4MywweEE4
LDB4N0EsMHgyOSwweEVCLDB4Q0QsMHhGQiwKKyAgICAweDBBLDB4ODMsMHhDOSwweDdBLDB4QUEs
MHhGOSwweERELDB4QTUsMHgyQiwweDgzLDB4Q0EsMHg3QSwweEZCLDB4OEIsMHhBOSwweEI3LAor
ICAgIDB4MkEsMHg4MywweEM5LDB4N0EsMHhGQiwweEI2LDB4QjAsMHgyOCwweDRCLDB4OEIsMHhF
QSwweDdBLDB4MzksMHgyRSwweEJCLDB4REYsCisgICAgMHgyRSwweEE0LDB4MkEsMHg4MywweDJG
LDB4RjUsMHg1NSwweDU1LDB4RjAsMHhCQywweDRBLDB4OEIsMHgwMiwweEFGLDB4RDUsMHg1NSwK
KyAgICAweEQwLDB4QjQsMHg4QiwweDkzLDB4QTgsMHhBQSwweEFCLDB4RDUsMHhCMCwweEI0LDB4
MkUsMHhBNCwweEZFLDB4QUEsMHhBQSwweEE5LAorICAgIDB4OEYsMHhCNCwweDRFLDB4QUMsMHg1
RiwweEZBLDB4N0EsMHhDQSwweDhGLDB4QjQsMHg0RSwweEFDLDB4RDcsMHhFQiwweDNBLDB4QjIs
CisgICAgMHg4RiwweEI0LDB4NEUsMHhBQywweEZELDB4QkUsMHgzQSwweDAwLDB4QUYsMHhCNCww
eDRFLDB4QUMsMHg1RiwweEY3LDB4QUYsMHg4MCwKKyAgICAweDQzLDB4NDEsMHhFMiwweDQwLDB4
N0QsMHhFRiwweDdGLDB4RDUsMHgwMywweDQxLDB4RTIsMHgzOCwweDdBLDB4QjYsMHg0RSwweENB
LAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHgwQSwweEJBLDB4QkIsMHg2OSwweDAyLDB4NDEs
MHhDMiwweDM4LDB4NkUsMHhGOCwweDVBLDB4QUQsCisgICAgMHgwMywweDM5LDB4QTEsMHgzOCww
eDlCLDB4MkEsMHhBQSwweDIzLDB4RTIsMHg0MCwweDAzLDB4MzksMHg4QiwweEFCLDB4M0IsMHgy
QiwKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4OUEsMHhBQSwweDc4LDB4RTMsMHgwMiwweDQx
LDB4QzIsMHgzOCwweEVCLDB4NzcsMHhBRiwweEVELAorICAgIDB4MDMsMHg0MSwweEMyLDB4Mzgs
MHhGQSwweERGLDB4QUUsMHg4RCwweDAzLDB4NDEsMHhFMiwweDM4LDB4Q0YsMHg5NiwweDU1LDB4
RkEsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDczLDB4N0UsMHhGQywweEJFLDB4NDYsMHg2
QSwweEUyLDB4NDAsMHgyNSwweDM1LDB4MzUsMHgzNSwKKyAgICAweDg3LDB4NzIsMHgwNSwweDYy
LDB4NzgsMHg3QSwweDU4LDB4N0UsMHgwNSwweDYyLDB4RTIsMHgzOCwweDU4LDB4NzgsMHg1OCww
eDc4LAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGRiwweDlGLDB4OEEsMHgyMywweDIzLDB4
MzksMHhFMywweDMwLDB4RjcsMHhCQSwweDg3LDB4RTcsCisgICAgMHgyMywweDM5LDB4RTIsMHgz
MCwweEVCLDB4QkIsMHg3QSwweEZELDB4MjMsMHgzOSwweDAzLDB4MzksMHhCMiwweDk4LDB4MzYs
MHg1NSwKKyAgICAweDQ0LDB4NDEsMHgwMywweDM5LDB4OEIsMHgyQSwweEVGLDB4RkYsMHg0NCww
eDQxLDB4MDMsMHgzOSwweDZFLDB4OEUsMHg4QiwweERBLAorICAgIDB4NDQsMHgzOSwweDAzLDB4
MzksMHg1RiwweDYwLDB4NUEsMHg2RSwweDI0LDB4MzksMHhFMiwweDMwLDB4MEEsMHhFRiwweEZG
LDB4REYsCisgICAgMHgyNCwweDM5LDB4RTMsMHgzOCwweEUwLDB4Q0EsMHgyRCwweDk5LDB4NDQs
MHg0MSwweEUzLDB4MzAsMHg1NywweEY1LDB4QUIsMHhFRCwKKyAgICAweDI0LDB4NDEsMHhFMyww
eDMwLDB4QkYsMHhERSwweEJFLDB4Q0EsMHgwMywweDM5LDB4RTIsMHgzMCwweDgwLDB4MkUsMHgz
RSwweDVFLAorICAgIDB4MDMsMHgzMSwweEEyLDB4MzAsMHhBOCwweDJBLDB4ODAsMHhBQiwweDAz
LDB4MzEsMHhFMywweDMwLDB4QjUsMHhDNiwweDdDLDB4NUIsCisgICAgMHgwMywweDMxLDB4QzMs
MHgyOCwweDc4LDB4NUEsMHhCRSwweEIyLDB4MDMsMHgzMSwweEMzLDB4MjgsMHhGNywweDZBLDB4
RUEsMHhGRiwKKyAgICAweEUzLDB4MzAsMHhDMywweDI4LDB4NTUsMHg3RiwweEZGLDB4QjcsMHgw
MywweDMxLDB4QTIsMHgyMCwweDc3LDB4RjcsMHhGRiwweEZCLAorICAgIDB4RTMsMHgyOCwweDgx
LDB4MjAsMHhENywweEZGLDB4RkEsMHhBQSwweEEyLDB4MjgsMHg4MiwweDIwLDB4QjgsMHhGQyww
eDNBLDB4QTIsCisgICAgMHhDMiwweDMwLDB4ODEsMHgyMCwweDJCLDB4QUYsMHg1NSwweDU3LDB4
RTMsMHgzMCwweDgxLDB4MjgsMHgwQSwweDJBLDB4MEYsMHgyNywKKyAgICAweDAzLDB4MzksMHhB
MiwweDMwLDB4NkEsMHg0OCwweEMzLDB4RTIsMHhFMywweDMwLDB4QTIsMHgzMCwweEJGLDB4RkIs
MHhFQSwweEFCLAorICAgIDB4RTIsMHgzMCwweEMyLDB4MzAsMHhGNSwweDc3LDB4NUQsMHhBMiww
eDAyLDB4MzksMHhBMSwweDI4LDB4RTgsMHg2RiwweEVBLDB4MkYsCisgICAgMHgwMywweDM5LDB4
QTIsMHgyOCwweEY3LDB4QjUsMHhFRiwweEE4LDB4RTMsMHgzMCwweEMyLDB4MzAsMHhFRiwweEIz
LDB4OEQsMHhDMSwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4RjcsMHhGRiwweENFLDB4QUQs
MHg0NCwweDQxLDB4QTEsMHgyOCwweEZELDB4RUQsMHgyRiwweDNGLAorICAgIDB4NjQsMHg0MSww
eEMyLDB4MjgsMHg3NywweEVGLDB4QUUsMHgyQSwweDI0LDB4MzksMHhBMSwweDI4LDB4RjUsMHhG
RSwweEFBLDB4MDgsCisgICAgMHgyMywweDM5LDB4RTMsMHgzMCwweEI1LDB4QTUsMHgwRiwweDBB
LDB4NDMsMHg0MSwweDAzLDB4MzksMHgyQSwweEZBLDB4RDIsMHgyMywKKyAgICAweEM1LDB4NTEs
MHhDMiwweDM4LDB4RkYsMHhBRiwweDJCLDB4MDIsMHg2NywweDZBLDB4NjMsMHg0OSwweDNELDB4
OEIsMHgwQSwweDAyLAorICAgIDB4QzksMHg3QSwweDY4LDB4NkEsMHgyRCwweEI1LDB4QjcsMHhC
RCwweEM5LDB4N0EsMHg4OCwweDcyLDB4QTgsMHg4QiwweEZELDB4RUIsCisgICAgMHhFQSwweDdB
LDB4ODgsMHg3MiwweDBCLDB4ODksMHhBMiwweEJGLDB4RTksMHg3QSwweEE5LDB4NzIsMHhCQyww
eEFCLDB4QjcsMHhBRSwKKyAgICAweDJBLDB4ODMsMHhDOSwweDdBLDB4QTksMHgzRiwweEZCLDB4
QjUsMHgwQSwweDgzLDB4QzksMHg3QSwweEFDLDB4MjgsMHg3RiwweEZDLAorICAgIDB4MkEsMHg4
MywweEM5LDB4N0EsMHhBQSwweDhGLDB4QjcsMHg3NywweDJBLDB4OEIsMHhDOSwweDdBLDB4MjAs
MHhGQywweERFLDB4QUEsCisgICAgMHg0QiwweDhCLDB4RUEsMHg3QSwweDJBLDB4QkIsMHg3Riww
eDdGLDB4RUQsMHg5QiwweEM5LDB4N0EsMHgwMiwweEFGLDB4RjcsMHg1RCwKKyAgICAweDRFLDB4
QUMsMHhFQSwweDgyLDB4MDAsMHgwMiwweEFGLDB4RkQsMHg2RSwweEFDLDB4NkIsMHg4QiwweDAw
LDB4MDAsMHgwMiwweEFELAorICAgIDB4QUYsMHhCNCwweDRFLDB4QUMsMHhBQSwweEEyLDB4QUIs
MHhBOSwweEQwLDB4QjQsMHg4RiwweEI0LDB4QUYsMHhFRiwweEVFLDB4QkYsCisgICAgMHgyMyww
eDQxLDB4RTIsMHg0MCwweERCLDB4RUYsMHhBRiwweDQyLDB4MDIsMHg0MSwweEMyLDB4MzgsMHhF
QSwweEEwLDB4NDgsMHhDQSwKKyAgICAweDAzLDB4MzksMHhDMiwweDM4LDB4REUsMHhGRiwweEFC
LDB4MkUsMHgwMywweDQxLDB4QzIsMHgzOCwweDNGLDB4QTYsMHg4QSwweDAyLAorICAgIDB4MDMs
MHg0MSwweEMyLDB4MzgsMHhDRCwweEFFLDB4QUIsMHhCRSwweDAzLDB4NDEsMHhDMiwweDM4LDB4
RkYsMHhFQywweERFLDB4RkUsCisgICAgMHgwMiwweDQxLDB4QzIsMHgzOCwweEJCLDB4RkEsMHhG
QSwweEJBLDB4MDMsMHg0MSwweEMyLDB4MzgsMHg3OCwweEVGLDB4NUUsMHhCRiwKKyAgICAweEUy
LDB4MzgsMHhDMiwweDM4LDB4ODIsMHgwMCwweDMwLDB4MDAsMHgwMywweDM5LDB4QzIsMHgzOCww
eEJBLDB4MzIsMHhCRiwweEJGLAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhCRiwweEY3LDB4
OUUsMHg3RSwweDQ2LDB4NkEsMHhFMiwweDM4LDB4MzUsMHgzNSwweDM1LDB4MzUsCisgICAgMHg2
NywweDcyLDB4MDYsMHg2MiwweDdDLDB4N0EsMHhFRSwweEU4LDB4MDUsMHg2MiwweEUyLDB4Mzgs
MHg3OCwweDc4LDB4NzgsMHg1OCwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4ODIsMHg0Qyww
eDhBLDB4RjgsMHgwMywweDM5LDB4QzIsMHgzMCwweEI2LDB4RTUsMHhCQSwweEEyLAorICAgIDB4
MDMsMHgzOSwweEUyLDB4MjgsMHhBQiwweEJCLDB4MkQsMHhBNywweDAzLDB4MzksMHhDMiwweDMw
LDB4MEUsMHhCNiwweEJFLDB4MkUsCisgICAgMHgyMywweDM5LDB4QzIsMHgzMCwweDJBLDB4QUQs
MHhGRiwweEVFLDB4MjMsMHg0MSwweEUzLDB4MzAsMHhBMCwweDg4LDB4QjMsMHhFRCwKKyAgICAw
eDQ0LDB4NDEsMHgwMywweDM5LDB4NzgsMHhCRCwweDU1LDB4NTUsMHgyMywweDM5LDB4RTMsMHgz
OCwweDlELDB4N0EsMHg2QSwweEU2LAorICAgIDB4MjMsMHgzOSwweEUzLDB4MzAsMHhBOSwweDk5
LDB4QkQsMHhCRCwweDQ0LDB4NDEsMHhFMywweDMwLDB4RjUsMHhERiwweEZFLDB4OEIsCisgICAg
MHg0NCwweDQxLDB4RTMsMHgzMCwweDhCLDB4QTcsMHhERSwweEJFLDB4MjQsMHg0MSwweEUzLDB4
MzgsMHg3NiwweEI4LDB4QkIsMHg2RiwKKyAgICAweDIzLDB4MzksMHhFMywweDMwLDB4N0IsMHhC
NywweDhBLDB4QUEsMHgyNCwweDM5LDB4RTMsMHgzMCwweEI1LDB4RkYsMHhGNCwweEVGLAorICAg
IDB4MjMsMHgzMSwweEUzLDB4MzAsMHhCRSwweEEyLDB4NkYsMHhENSwweDAzLDB4MzEsMHhDMyww
eDI4LDB4RUEsMHhBQSwweEFBLDB4MDAsCisgICAgMHgwMywweDMxLDB4QzIsMHgyOCwweEI1LDB4
RkYsMHhGRiwweEFBLDB4RTMsMHgzMCwweEMyLDB4MjgsMHhDRSwweEE4LDB4MDAsMHhGMCwKKyAg
ICAweEMzLDB4MzAsMHhFMiwweDI4LDB4MEUsMHhCRSwweEFFLDB4QjgsMHhFMiwweDMwLDB4QTIs
MHgyMCwweDVGLDB4NUEsMHhBQSwweEZFLAorICAgIDB4QzIsMHgyOCwweDgyLDB4MjAsMHhFQiww
eEVFLDB4QkEsMHhBQSwweEMyLDB4MjgsMHg4MSwweDIwLDB4QkYsMHhGRSwweEUwLDB4QjAsCisg
ICAgMHgwMywweDM5LDB4ODEsMHgyMCwweDAyLDB4MjksMHhCRCwweDc1LDB4MDMsMHgzMSwweEEy
LDB4MjgsMHg3RiwweEYwLDB4QUEsMHhFRCwKKyAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4QUYs
MHhBQiwweEMwLDB4ODAsMHgyMywweDMxLDB4QzIsMHgzMCwweEY1LDB4RjcsMHhERiwweDdCLAor
ICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHg1RSwweDVCLDB4RUUsMHg2RiwweDAzLDB4MzEsMHhD
MiwweDMwLDB4NkYsMHg2RiwweDgzLDB4ODIsCisgICAgMHgwMywweDM5LDB4QTIsMHgyOCwweDJE
LDB4MkIsMHgyRSwweDI3LDB4MDMsMHgzOSwweEUyLDB4MzAsMHgxNiwweDI5LDB4MEYsMHhBQywK
KyAgICAweDQ0LDB4NDEsMHhFMiwweDMwLDB4MEEsMHhFRSwweEZCLDB4NjAsMHgyMywweDM5LDB4
QzIsMHgyOCwweDIwLDB4MkEsMHhGRSwweEY3LAorICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHhF
MCwweDJFLDB4QkEsMHhERiwweDg0LDB4NTEsMHhFMiwweDMwLDB4QkYsMHhCRiwweEJELDB4MkQs
CisgICAgMHgyNywweDYyLDB4ODQsMHg0OSwweEFELDB4QTksMHhBRiwweDJCLDB4NjgsMHg2QSww
eEU2LDB4NTksMHgyRiwweEJELDB4MkQsMHgwOSwKKyAgICAweEE4LDB4NzIsMHg2OCwweDZBLDB4
ODUsMHg4RCwweEJELDB4RkIsMHhDOSwweDdBLDB4ODgsMHg2QSwweEVGLDB4MUIsMHhERCwweEY3
LAorICAgIDB4QzksMHg3QSwweDg4LDB4NzIsMHgzRiwweEI4LDB4RkEsMHg1RCwweEVBLDB4N0Es
MHhBOSwweDcyLDB4QzAsMHhGQiwweEU1LDB4NTUsCisgICAgMHgwQSwweDgzLDB4QTksMHg3Miww
eEE3LDB4QkQsMHhDRCwweDdELDB4MEEsMHg4MywweEE5LDB4NzIsMHgyRSwweDNELDB4QkYsMHg5
NywKKyAgICAweDBBLDB4ODMsMHhBOSwweDcyLDB4RTgsMHg4OCwweDJBLDB4QjcsMHgyQSwweDgz
LDB4QzksMHg3QSwweDhGLDB4RTUsMHhGRCwweEZGLAorICAgIDB4MkIsMHg4MywweEM5LDB4N0Es
MHhBQiwweDJGLDB4RkIsMHhERiwweDJCLDB4OEIsMHhFQSwweDdBLDB4NzcsMHg3NiwweDYyLDB4
RkYsCisgICAgMHgyQSwweDgzLDB4RTksMHg3QSwweEFELDB4RjcsMHhGRiwweDA1LDB4QUMsMHg5
MywweEU5LDB4N0EsMHgyQiwweERELDB4NTUsMHg1NywKKyAgICAweDZFLDB4QUMsMHgwQSwweDgz
LDB4MEEsMHhCRiwweEY1LDB4NTUsMHhBRiwweEI0LDB4NEEsMHg4QiwweDAwLDB4MEEsMHhBRiww
eDU1LAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhDMCwweEMwLDB4NzIsMHg3QywweEUyLDB4
NDAsMHhDMiwweDMwLDB4RjIsMHgzOCwweEFBLDB4QTksCisgICAgMHgwMywweDQxLDB4QzIsMHgz
OCwweEFCLDB4MEEsMHhBQiwweDBGLDB4MDMsMHgzOSwweEMyLDB4MzgsMHgyQSwweEVCLDB4Q0Es
MHg2OCwKKyAgICAweDIyLDB4MzksMHhDMiwweDM4LDB4RjYsMHg3RiwweDdGLDB4QkYsMHgwMyww
eDM5LDB4QzIsMHgzOCwweDZFLDB4QzIsMHhCQiwweEIyLAorICAgIDB4MDMsMHg0MSwweEMyLDB4
MzgsMHgyRiwweEJGLDB4RUMsMHhFQywweDAzLDB4NDEsMHhDMiwweDM4LDB4N0YsMHhFMiwweDhG
LDB4RUIsCisgICAgMHgyMiwweDM5LDB4QzIsMHgzOCwweEZFLDB4N0YsMHg1RiwweERGLDB4RTIs
MHgzOCwweEMyLDB4MzgsMHgzMywweDAwLDB4QjMsMHhCMSwKKyAgICAweEUyLDB4MzgsMHhDMiww
eDM4LDB4RTAsMHhGOCwweERBLDB4MjgsMHg0NywweDZBLDB4RTIsMHgzOCwweDM1LDB4MjUsMHgz
NSwweDM1LAorICAgIDB4NjcsMHg3MiwweEM1LDB4NTksMHhFMCwweEUwLDB4NjAsMHg3OCwweEE1
LDB4NTksMHgwMiwweDM5LDB4NzgsMHg1QywweDdFLDB4NTYsCisgICAgMHgwMywweDM5LDB4QzIs
MHgzMCwweDdDLDB4OEEsMHhCOCwweDlDLDB4MDMsMHgzOSwweEUzLDB4MzAsMHhCRSwweEQ3LDB4
RDcsMHhGMSwKKyAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4QkUsMHhEQywweEEyLDB4N0UsMHgw
MywweDMxLDB4RTIsMHgzMCwweDdGLDB4NjUsMHg3NSwweDcyLAorICAgIDB4MDMsMHgzMSwweEMy
LDB4MzAsMHg4QSwweEFBLDB4OEIsMHhGQSwweDAzLDB4MzEsMHhFMywweDMwLDB4OEUsMHgyNCww
eDJELDB4NTksCisgICAgMHgyMywweDM5LDB4RTMsMHgzMCwweEFGLDB4REQsMHhERiwweEU3LDB4
MDMsMHgzOSwweEMyLDB4MzAsMHgwOCwweEU4LDB4RkEsMHhEQSwKKyAgICAweDI0LDB4MzksMHhF
MywweDMwLDB4QUYsMHhCRiwweEZFLDB4MzgsMHg0NCwweDQxLDB4RTMsMHgzMCwweEJBLDB4QTMs
MHhBQiwweEY3LAorICAgIDB4NDQsMHg0MSwweDAzLDB4MzksMHhGRiwweEVFLDB4NzgsMHg1Riww
eDI0LDB4MzksMHhFMywweDM4LDB4RkIsMHg4OCwweEJFLDB4QUYsCisgICAgMHgyNCwweDM5LDB4
QzIsMHgzMCwweEJGLDB4RjYsMHhFOCwweEFBLDB4MjMsMHgzOSwweEUyLDB4MzAsMHhDMywweEZG
LDB4RUEsMHhBQSwKKyAgICAweDIzLDB4MzksMHhFMywweDMwLDB4REYsMHhGRiwweEZELDB4OUYs
MHgyMywweDM5LDB4RTMsMHgzMCwweDM3LDB4RkQsMHhFQiwweEZBLAorICAgIDB4MjMsMHgzOSww
eEUzLDB4MzAsMHg3RSwweEZFLDB4RjUsMHhBMywweDAzLDB4MzEsMHhDMiwweDMwLDB4RkIsMHhD
MCwweDIwLDB4MDAsCisgICAgMHgwMywweDMxLDB4QzIsMHgyOCwweDc5LDB4NzMsMHhDMiwweEJB
LDB4MDMsMHgzMSwweEMyLDB4MjgsMHg1NSwweEZGLDB4RkYsMHg4MywKKyAgICAweEUzLDB4Mjgs
MHhDMiwweDI4LDB4NjUsMHhDNSwweEY3LDB4QkQsMHhFMiwweDI4LDB4QTIsMHgyMCwweDdGLDB4
N0IsMHg4OCwweEEyLAorICAgIDB4QzIsMHgyOCwweDgxLDB4MjAsMHhCRiwweEFGLDB4MkUsMHg4
MCwweEEyLDB4MjgsMHg4MSwweDIwLDB4MkIsMHhEOCwweEJCLDB4RTgsCisgICAgMHhFMywweDMw
LDB4NjEsMHgyMCwweDAyLDB4QUYsMHhGRiwweEY3LDB4MDMsMHgzOSwweDgyLDB4MjAsMHg4Miww
eDIyLDB4QUYsMHhGRCwKKyAgICAweDAzLDB4MzksMHhDMiwweDI4LDB4QTksMHg4OCwweDhCLDB4
OTUsMHgwMywweDM5LDB4RTMsMHgzMCwweDQyLDB4NjIsMHg1QiwweDUzLAorICAgIDB4MDMsMHgz
MSwweEEyLDB4MjgsMHgyRCwweEZCLDB4QkEsMHgwQiwweDIzLDB4MzksMHhFMywweDMwLDB4QkUs
MHhCQiwweEJBLDB4ODMsCisgICAgMHgyMywweDM5LDB4QTEsMHgyOCwweEUwLDB4QTAsMHhBOCww
eERDLDB4RTMsMHgzMCwweEEyLDB4MjgsMHgyNywweDJBLDB4MjAsMHg4MywKKyAgICAweDQ0LDB4
NDEsMHhDMiwweDI4LDB4RDUsMHhGRiwweEJGLDB4QUQsMHhDNSwweDUxLDB4MDIsMHgzMSwweEFE
LDB4QUQsMHgwQiwweDBCLAorICAgIDB4MjcsMHg2MiwweEE1LDB4NTEsMHgyRCwweDBGLDB4QUYs
MHhBQSwweDY4LDB4NkEsMHgwNywweDVBLDB4MjksMHg5RiwweEI3LDB4RjUsCisgICAgMHg4OCww
eDZBLDB4NDgsMHg2QSwweDBDLDB4QTIsMHg2RCwweEQ1LDB4QzksMHg3QSwweDY4LDB4NkEsMHhF
RSwweDNFLDB4MDksMHhBRCwKKyAgICAweEM5LDB4NzIsMHg4OSwweDcyLDB4RDksMHhGNSwweDM2
LDB4MEEsMHhDOSwweDdBLDB4ODgsMHg3MiwweEZFLDB4MEUsMHhFQSwweDJCLAorICAgIDB4RTks
MHg3QSwweEE5LDB4NzIsMHhFQiwweEU3LDB4OTcsMHhENiwweEM5LDB4N0EsMHhBOSwweDcyLDB4
Q0MsMHhDMiwweDg4LDB4MjQsCisgICAgMHgwQSwweDgzLDB4QTgsMHg3MiwweEFELDB4QjksMHgw
QiwweDJBLDB4MEEsMHg4MywweEM5LDB4N0EsMHgzQiwweDZBLDB4RkUsMHhBRSwKKyAgICAweDBB
LDB4ODMsMHhBOSwweDdBLDB4REEsMHhGQiwweEFBLDB4MDgsMHhFQSwweDdBLDB4QTksMHg3QSww
eDIxLDB4MDAsMHg4QSwweDQ0LAorICAgIDB4MkIsMHg4MywweEM5LDB4N0EsMHgyNywweEQ3LDB4
RkYsMHg3RCwweDJBLDB4ODMsMHhBOSwweDcyLDB4RTgsMHg4QSwweDNBLDB4RkYsCisgICAgMHgy
QSwweDgzLDB4RTksMHg3QSwweDA5LDB4M0QsMHgyRSwweDI3LDB4MkEsMHg4MywweEU5LDB4N0Es
MHgwMCwweEUwLDB4N0UsMHg1QSwKKyAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4NTQsMHg3Riww
eERFLDB4MzUsMHgwMywweDM5LDB4QzIsMHgzOCwweEI3LDB4QkEsMHhBOSwweEJCLAorICAgIDB4
MjMsMHg0MSwweEMyLDB4MzgsMHhGOSwweDhCLDB4RkEsMHhGRiwweDAzLDB4NDEsMHhDMiwweDM4
LDB4RkUsMHhFQywweDY4LDB4QkUsCisgICAgMHgwMiwweDM5LDB4QTEsMHgzMCwweEJFLDB4RkEs
MHgzNywweEVGLDB4MDIsMHgzOSwweEMyLDB4MzgsMHhCRSwweEY2LDB4RUYsMHgzRCwKKyAgICAw
eEUyLDB4MzgsMHhDMiwweDM4LDB4MjMsMHhFQiwweEM0LDB4QzgsMHhFMiwweDM4LDB4QzIsMHgz
OCwweDJBLDB4RDgsMHg3QiwweDdDLAorICAgIDB4MDMsMHgzOSwweEMyLDB4MzgsMHhFQiwweEZG
LDB4QkYsMHhCQSwweDAzLDB4MzksMHhDMiwweDM4LDB4RUUsMHg3RSwweDdGLDB4RkYsCisgICAg
MHhFMiwweDM4LDB4QzIsMHgzMCwweDZDLDB4RkMsMHg3QiwweEZGLDB4MjUsMHg2MiwweEMyLDB4
MzgsMHgzRCwweDM1LDB4OTUsMHg5NSwKKyAgICAweDY2LDB4NkEsMHhBNCwweDUxLDB4RjgsMHg3
OCwweDc4LDB4NUUsMHg4NCwweDUxLDB4RTIsMHgzMCwweDdBLDB4N0EsMHg3MCwweDc4LAorICAg
IDB4MjMsMHgzOSwweEMyLDB4MzAsMHhERiwweEZGLDB4OUIsMHhGQSwweDAzLDB4MzEsMHhDMiww
eDI4LDB4RkEsMHhFQSwweEFCLDB4N0YsCisgICAgMHhFMywweDMwLDB4QzIsMHgyOCwweEJBLDB4
MzQsMHgyNCwweEY3LDB4MDMsMHgzOSwweEMyLDB4MjgsMHhBMiwweDVBLDB4RkYsMHhBRiwKKyAg
ICAweDAzLDB4MzEsMHhDMiwweDMwLDB4NEIsMHhFQSwweEVCLDB4QTIsMHgwMywweDM5LDB4QzIs
MHgyOCwweEVGLDB4OEYsMHg4QiwweEFBLAorICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHg4Myww
eEEyLDB4QUEsMHhCRiwweDAzLDB4MzksMHhFMywweDMwLDB4RUIsMHg1QywweEZGLDB4MzksCisg
ICAgMHgyNCwweDM5LDB4QzIsMHgzMCwweEFDLDB4QkYsMHhGRiwweERBLDB4MjMsMHgzOSwweEMy
LDB4MzAsMHhBMiwweEFBLDB4QUUsMHhFNywKKyAgICAweDIzLDB4MzksMHhFMywweDMwLDB4ODgs
MHgyQSwweEFFLDB4NkQsMHgyNCwweDM5LDB4MDMsMHgzOSwweDQyLDB4MDMsMHg2MywweDdELAor
ICAgIDB4MjMsMHgzOSwweDAzLDB4MzksMHg3NiwweDVFLDB4NzcsMHg1NywweDIzLDB4MzksMHhF
MywweDM4LDB4QkYsMHgzNywweDI2LDB4QkUsCisgICAgMHgyMywweDM5LDB4RTMsMHgzMCwweEQ3
LDB4RTYsMHg3NiwweEU4LDB4NDQsMHgzOSwweEUzLDB4MzAsMHg3RiwweDVELDB4RUYsMHgyOSwK
KyAgICAweDI0LDB4MzksMHhFMiwweDMwLDB4OEEsMHhFMiwweEY3LDB4REUsMHgyNCwweDM5LDB4
RTIsMHgzMCwweEZGLDB4N0UsMHhFMywweDg4LAorICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHhB
QSwweDlBLDB4QjgsMHgwMCwweDI0LDB4MzksMHhFMywweDMwLDB4NUYsMHg3QywweEYzLDB4RUEs
CisgICAgMHgyNCwweDM5LDB4QzIsMHgyOCwweDU1LDB4RkYsMHhGQSwweEU4LDB4MDMsMHgzMSww
eEMyLDB4MjgsMHg2RCwweEVBLDB4OEIsMHhDQSwKKyAgICAweEEyLDB4MzAsMHhFMiwweDI4LDB4
QkYsMHhGQiwweERELDB4NzcsMHhFMywweDI4LDB4QTIsMHgyMCwweEY3LDB4N0IsMHhBQiwweDAw
LAorICAgIDB4RTMsMHgyOCwweDgyLDB4MjAsMHg1NywweEZFLDB4QUYsMHhBMCwweEMzLDB4Mjgs
MHg4MSwweDIwLDB4OTUsMHg3RiwweEVBLDB4MDIsCisgICAgMHhDMiwweDI4LDB4ODIsMHgyMCww
eDJGLDB4QjUsMHhENSwweEJBLDB4MDMsMHgzMSwweDgyLDB4MjAsMHg4QSwweDNGLDB4N0QsMHhG
NywKKyAgICAweEUzLDB4MzAsMHg4MSwweDIwLDB4MjAsMHhFRSwweEY3LDB4OUQsMHg0NCwweDM5
LDB4QTIsMHgyOCwweDBCLDB4QUIsMHhCRCwweEY1LAorICAgIDB4MDMsMHgzOSwweEMyLDB4Mjgs
MHg3OCwweEQ2LDB4RDYsMHhERiwweDIzLDB4MzksMHhFMiwweDMwLDB4NUQsMHhGNSwweEI1LDB4
MkQsCisgICAgMHhFNiwweDUxLDB4MDMsMHgzMSwweDk1LDB4QjUsMHhBRCwweDJGLDB4MDYsMHg1
QSwweEE1LDB4NTEsMHgzOSwweEFGLDB4QUEsMHg4QSwKKyAgICAweDI3LDB4NjIsMHhDNSwweDUx
LDB4QkYsMHhBRiwweEFELDB4MjcsMHg2OCwweDZBLDB4MDcsMHg2MiwweDc1LDB4QUYsMHgyOSww
eDJCLAorICAgIDB4QTksMHg3MiwweDY4LDB4NkEsMHg3RCwweEZELDB4QkEsMHg4RSwweEM5LDB4
NzIsMHg0OCwweDZBLDB4MkYsMHhBNywweDNGLDB4MkEsCisgICAgMHhDOSwweDdBLDB4NjgsMHg2
QSwweDg4LDB4MkIsMHhCQSwweDdFLDB4QzksMHg3QSwweDY3LDB4NkEsMHg4QSwweEU4LDB4QTMs
MHg5RiwKKyAgICAweEVBLDB4N0EsMHg4OCwweDcyLDB4RkUsMHgyMiwweDJGLDB4QjcsMHhFOSww
eDdBLDB4QTksMHg3MiwweDJBLDB4RjcsMHg1QywweDhCLAorICAgIDB4RTksMHg3QSwweEE5LDB4
NzIsMHhFRSwweDhBLDB4RUQsMHhENywweEM5LDB4N0EsMHg4OCwweDcyLDB4M0UsMHhCRiwweERD
LDB4QzMsCisgICAgMHgwQiwweDgzLDB4ODgsMHg3MiwweDhBLDB4RkUsMHg3QiwweDdCLDB4RUEs
MHg3QSwweEE5LDB4NzIsMHg2RSwweEFBLDB4OEQsMHg2OSwKKyAgICAweEVBLDB4N0EsMHhBOSww
eDcyLDB4MDIsMHgwMiwweDZCLDB4RkQsMHgwQSwweDgzLDB4QTksMHg3MiwweEFBLDB4MDIsMHgw
RCwweEZFLAorICAgIDB4MkEsMHg4MywweEE4LDB4NzIsMHhBQiwweEFCLDB4QUUsMHgzRCwweDBB
LDB4ODMsMHhFOSwweDdBLDB4MjgsMHhDQiwweEFBLDB4OUMsCisgICAgMHgwMywweDM5LDB4QzIs
MHgzOCwweEFGLDB4MkYsMHgzNywweEFCLDB4MDMsMHg0MSwweEMyLDB4MzgsMHhGRiwweEUzLDB4
RUYsMHhGQSwKKyAgICAweDIyLDB4MzksMHhDMiwweDM4LDB4RDcsMHhEQiwweEZGLDB4NzcsMHgw
MywweDQxLDB4QzIsMHgzOCwweERFLDB4QUUsMHhCNywweEFGLAorICAgIDB4MDMsMHg0MSwweEMy
LDB4MzgsMHhEQywweEY4LDB4N0UsMHhERSwweDAyLDB4MzksMHhDMiwweDM4LDB4RkEsMHg5RCww
eEE5LDB4RUYsCisgICAgMHhFMiwweDM4LDB4QzIsMHgzOCwweEMwLDB4MEYsMHhDQSwweDQzLDB4
MDMsMHg0MSwweEMyLDB4MzgsMHg2RSwweDNGLDB4REYsMHhFQiwKKyAgICAweDAyLDB4MzksMHhB
MSwweDMwLDB4QUUsMHhCNCwweEJBLDB4QkIsMHgwMiwweDQxLDB4QTIsMHgzMCwweERGLDB4QUYs
MHgzQiwweDJCLAorICAgIDB4MDMsMHg0MSwweEExLDB4MzAsMHhGRSwweEZFLDB4RjgsMHg3RSww
eDIzLDB4NDksMHhBMSwweDMwLDB4MzcsMHhCNSwweDk1LDB4M0QsCisgICAgMHg0NywweDZBLDB4
QTQsMHg1MSwweEZFLDB4N0YsMHg3RCwweEY4LDB4QTQsMHg1MSwweEUyLDB4MzAsMHhEOCwweDc4
LDB4NzAsMHg3MCwKKyAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4QTgsMHgwOCwweDJGLDB4QUEs
MHgwMywweDMxLDB4QTMsMHgzMCwweEFFLDB4ODgsMHg4OCwweDBBLAorICAgIDB4MjMsMHgzMSww
eEMyLDB4MzAsMHg3NSwweEI3LDB4N0YsMHhGNywweDAzLDB4MzEsMHhDMiwweDI4LDB4RkYsMHg4
QiwweEZCLDB4REEsCisgICAgMHgwMywweDMxLDB4QzIsMHgyOCwweDhBLDB4ODcsMHhFRCwweENB
LDB4MDMsMHgzMSwweEEyLDB4MzAsMHgyQSwweDJBLDB4QTIsMHhBRSwKKyAgICAweDAzLDB4MzEs
MHhBMiwweDMwLDB4MkEsMHg4OCwweDI4LDB4M0EsMHgwMywweDMxLDB4QzIsMHgyOCwweEFFLDB4
RUIsMHhGMiwweEYyLAorICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHgzRCwweDdELDB4NUEsMHhE
NywweDIzLDB4MzksMHhFMywweDMwLDB4RTcsMHhBRiwweEFGLDB4RDUsCisgICAgMHgyMywweDM5
LDB4RTMsMHgzMCwweDgzLDB4QUQsMHg3RSwweDVGLDB4MjMsMHgzOSwweEUzLDB4MzAsMHgzQSww
eEJGLDB4QUIsMHhGRCwKKyAgICAweDIzLDB4MzksMHhFMywweDM4LDB4RDcsMHg4NywweERGLDB4
RjcsMHgyNCwweDQxLDB4RTMsMHgzOCwweENELDB4MjcsMHhFOSwweEU1LAorICAgIDB4NDQsMHg0
MSwweEUzLDB4MzgsMHg3QSwweEY0LDB4REIsMHg3NywweDIzLDB4MzksMHgwMywweDM5LDB4Mjks
MHhERiwweDU3LDB4NTUsCisgICAgMHgyNCwweDQxLDB4RTMsMHgzMCwweEZBLDB4REEsMHgzQSww
eEIyLDB4MjMsMHgzOSwweEUzLDB4MzAsMHg1RSwweEQ3LDB4RkEsMHhGQSwKKyAgICAweDQ0LDB4
NDEsMHhDMywweDMwLDB4QTIsMHhGNywweEZGLDB4RkUsMHgyNCwweDM5LDB4RTMsMHgzMCwweEFF
LDB4RUEsMHgyRCwweEVFLAorICAgIDB4MjMsMHgzOSwweEUzLDB4MzAsMHg2RSwweEZFLDB4QkEs
MHgyQiwweDI0LDB4MzksMHhFMiwweDMwLDB4N0EsMHhEQiwweEZFLDB4QjgsCisgICAgMHgyMyww
eDMxLDB4RTMsMHgzMCwweDVCLDB4REMsMHhERSwweDdBLDB4MDMsMHgzOSwweEUzLDB4MjgsMHg3
RiwweEZGLDB4RjgsMHgwOCwKKyAgICAweDI0LDB4MzksMHhDMywweDI4LDB4NTcsMHg1RiwweDVB
LDB4RTgsMHgwMywweDMxLDB4QzMsMHgyOCwweDc3LDB4N0QsMHgyQSwweDA4LAorICAgIDB4MDMs
MHgzMSwweEEyLDB4MjgsMHg3RCwweEZELDB4RkEsMHg4OCwweDAzLDB4MzEsMHhDMywweDI4LDB4
NTcsMHg5RiwweEFBLDB4MDIsCisgICAgMHgyMywweDMxLDB4QTIsMHgyOCwweERELDB4RUYsMHhB
QSwweEFBLDB4MjQsMHgzOSwweEEyLDB4MjgsMHhCRCwweEJCLDB4QTIsMHgwOCwKKyAgICAweDIz
LDB4MzksMHhFMywweDMwLDB4RjcsMHhERiwweEJBLDB4MEEsMHhBNSwweDQ5LDB4MDMsMHgzMSww
eEJELDB4QjUsMHhCOSwweDBGLAorICAgIDB4MjcsMHg2MiwweEE1LDB4NDksMHhGNSwweEFELDB4
OEQsMHgyRiwweDI2LDB4NjIsMHhFNiwweDU5LDB4RDUsMHhCRCwweDhBLDB4MzYsCisgICAgMHg0
NywweDYyLDB4RTYsMHg1OSwweDg1LDB4QkYsMHhCRiwweDFFLDB4ODksMHg3MiwweDI3LDB4NjIs
MHg4RCwweDI5LDB4MkYsMHhBRiwKKyAgICAweEE5LDB4NzIsMHg0OCwweDZBLDB4OEIsMHg4RSww
eDc3LDB4NzcsMHhDOSwweDcyLDB4NjgsMHg2QSwweDIwLDB4QUEsMHhCRCwweEQ1LAorICAgIDB4
QzksMHg3QSwweDY3LDB4NkEsMHhGRSwweDIyLDB4QUIsMHhGNiwweEM5LDB4N0EsMHg4OCwweDcy
LDB4NUUsMHgyRiwweDU4LDB4NzcsCisgICAgMHhDOSwweDdBLDB4ODgsMHg3MiwweDIxLDB4RUUs
MHhFQSwweDJCLDB4RTksMHg3QSwweDg4LDB4NzIsMHhCQSwweEIyLDB4QkEsMHg3RSwKKyAgICAw
eEU5LDB4N0EsMHhBOSwweDcyLDB4RUEsMHg4RSwweEJFLDB4QjcsMHhFOSwweDdBLDB4QTgsMHg3
MiwweDg5LDB4QUYsMHhCOCwweEJBLAorICAgIDB4MEEsMHg3QiwweEE5LDB4NzIsMHhENywweEY1
LDB4REYsMHhFMywweDBBLDB4N0IsMHhBOSwweDcyLDB4QTksMHhBMiwweEZGLDB4RjcsCisgICAg
MHhFQSwweDdBLDB4ODksMHg3MiwweDlGLDB4RjIsMHhFOCwweDNBLDB4RUEsMHg3QSwweEE5LDB4
NzIsMHgzOCwweEVGLDB4N0UsMHg4QiwKKyAgICAweEVBLDB4N0EsMHhBOSwweDcyLDB4M0QsMHhC
QSwweDAwLDB4MEIsMHgwQSwweDdCLDB4QzksMHg3QSwweEEwLDB4RTksMHgyNSwweDhCLAorICAg
IDB4MDMsMHg0MSwweEMyLDB4MzgsMHhBQSwweERCLDB4QkEsMHhBRiwweDAzLDB4NDEsMHhFMiww
eDM4LDB4RDYsMHg1QiwweDdELDB4NkIsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweERFLDB4
OEYsMHg4RSwweEVCLDB4MDMsMHg0MSwweEMyLDB4MzgsMHhFRCwweERGLDB4REEsMHhBQSwKKyAg
ICAweDAzLDB4NDEsMHhBMiwweDMwLDB4QUUsMHgyQSwweEVGLDB4REEsMHgyMywweDM5LDB4QzIs
MHgzOCwweDdGLDB4RkYsMHg5RCwweEZGLAorICAgIDB4MjMsMHgzOSwweEMyLDB4MzgsMHg1Nyww
eEZGLDB4RjUsMHhGQiwweEUyLDB4MzgsMHhDMiwweDM4LDB4MDAsMHhFOCwweEQ4LDB4RTAsCisg
ICAgMHhFMiwweDM4LDB4QzIsMHgzOCwweEFFLDB4QzgsMHhCRiwweEI3LDB4RTIsMHgzOCwweEMy
LDB4MzgsMHhFQSwweDBGLDB4OEEsMHg0QywKKyAgICAweEUyLDB4MzgsMHg4MSwweDMwLDB4RTgs
MHhGOCwweDlFLDB4QUIsMHg2NywweDZBLDB4QzIsMHgzMCwweEY1LDB4QjUsMHgzNSwweDM1LAor
ICAgIDB4RTgsMHg3QSwweEE1LDB4NTksMHhGQSwweEY4LDB4RTgsMHg3MCwweEM1LDB4NTksMHhF
MiwweDMwLDB4NTgsMHg3OCwweEZBLDB4N0YsCisgICAgMHgwMywweDM5LDB4RTIsMHgzMCwweDVD
LDB4N0MsMHg1QSwweDVGLDB4MDMsMHgzMSwweEUzLDB4MzAsMHgyQywweDVELDB4NjUsMHhGRCwK
KyAgICAweDAzLDB4MzEsMHhFMywweDMwLDB4NEQsMHg0NywweDY5LDB4Q0QsMHgwMywweDMxLDB4
RTMsMHgzMCwweDU5LDB4N0QsMHgxRCwweDZELAorICAgIDB4RTMsMHgzMCwweEMyLDB4MzAsMHgy
MiwweDgyLDB4M0EsMHhBMywweDAzLDB4MzEsMHhDMiwweDMwLDB4MkYsMHgzRiwweEJGLDB4RkYs
CisgICAgMHgwMywweDMxLDB4QzIsMHgyOCwweEVFLDB4RkYsMHhFQSwweEVFLDB4MDMsMHgzMSww
eEMyLDB4MzAsMHg5RiwweEVBLDB4RkUsMHgyQiwKKyAgICAweDAzLDB4MzEsMHhBMiwweDMwLDB4
MkEsMHhBQSwweEU2LDB4QkUsMHgwMywweDMxLDB4QzIsMHgzMCwweEFBLDB4RUEsMHhGQiwweEZG
LAorICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHhCRSwweEZBLDB4MEIsMHhGNSwweDAzLDB4Mzks
MHhFMywweDMwLDB4OEQsMHhBQiwweERBLDB4RUQsCisgICAgMHgwMywweDM5LDB4RTIsMHgzMCww
eEFBLDB4REYsMHhBMiwweEI3LDB4MDMsMHgzOSwweEMyLDB4MzAsMHg4NywweEI1LDB4M0UsMHhG
MiwKKyAgICAweDI0LDB4MzksMHhFMywweDMwLDB4RkYsMHg1NywweEVBLDB4Q0YsMHhFMywweDM4
LDB4MDMsMHgzMSwweEZFLDB4QUUsMHhBNywweEY3LAorICAgIDB4MjMsMHgzOSwweEUzLDB4MzAs
MHhFQiwweEI5LDB4QjMsMHhGOSwweDI0LDB4MzksMHhFMywweDM4LDB4RkQsMHhCRCwweEYyLDB4
QTYsCisgICAgMHgyNCwweDM5LDB4RTMsMHgzOCwweEZBLDB4QkMsMHhBRiwweEJFLDB4MjQsMHgz
OSwweEUzLDB4MzgsMHg2QiwweEFGLDB4QUYsMHhBOCwKKyAgICAweDI0LDB4MzksMHhDMiwweDMw
LDB4MkIsMHg4QSwweEZBLDB4RUEsMHgyMywweDM5LDB4RTIsMHgzMCwweDAwLDB4MUIsMHhERiww
eEZFLAorICAgIDB4NDQsMHgzOSwweDAzLDB4MzEsMHhGMywweEFCLDB4QTUsMHg5NywweDY1LDB4
NDEsMHgwMywweDMxLDB4NTUsMHhGRSwweEZFLDB4RUEsCisgICAgMHg0NCwweDM5LDB4MDMsMHgz
OSwweDVGLDB4RjIsMHhFQSwweEVBLDB4MjQsMHgzOSwweEUzLDB4MzAsMHhFNSwweEVBLDB4MkEs
MHgwMiwKKyAgICAweDI0LDB4MzksMHhFMywweDMwLDB4RkYsMHhCQiwweDgwLDB4MjAsMHgyNCww
eDQxLDB4MDMsMHgzMSwweEZELDB4N0QsMHhGRSwweEFDLAorICAgIDB4NDQsMHg0MSwweEUzLDB4
MzAsMHhGNSwweEVFLDB4QUYsMHgyQSwweDY0LDB4NDEsMHgwNCwweDM5LDB4RjUsMHg1NSwweERG
LDB4MkEsCisgICAgMHhDNSwweDUxLDB4MjQsMHgzOSwweDU1LDB4RjUsMHhENSwweDJGLDB4MDYs
MHg1QSwweDY1LDB4NDEsMHg5NSwweEE1LDB4QUIsMHgwMCwKKyAgICAweDA3LDB4NUEsMHhDNiww
eDU5LDB4N0YsMHhDQiwweDJCLDB4QTAsMHg0NywweDZBLDB4QzYsMHg1OSwweEJFLDB4QUQsMHhB
QiwweDAwLAorICAgIDB4NjgsMHg2QSwweDA2LDB4NUEsMHhCNywweEE4LDB4QTgsMHhCRSwweDg4
LDB4NkEsMHg0NywweDYyLDB4QTksMHhFRCwweDNBLDB4OEEsCisgICAgMHg4OCwweDZBLDB4NDgs
MHg2QSwweEJDLDB4NzQsMHhBRSwweDM4LDB4QTksMHg3MiwweDY4LDB4NkEsMHg1NSwweEE1LDB4
MzcsMHhDRSwKKyAgICAweEE5LDB4NzIsMHg2OCwweDZBLDB4NkUsMHhERiwweEZCLDB4MEYsMHhB
OCwweDcyLDB4NjgsMHg2QSwweDJBLDB4MDAsMHgwMSwweDAzLAorICAgIDB4QzksMHg3QSwweDg4
LDB4NkEsMHhCRSwweEFDLDB4M0UsMHhBOSwweENBLDB4NzIsMHg2OCwweDZBLDB4QUIsMHhFNyww
eEFFLDB4QUIsCisgICAgMHhFQSwweDdBLDB4ODgsMHg2QSwweDdFLDB4N0IsMHhEQiwweEZBLDB4
RTksMHg3QSwweDg4LDB4NkEsMHhFQSwweDBCLDB4RjcsMHhGRCwKKyAgICAweEU5LDB4NzIsMHg4
OCwweDZBLDB4MEYsMHhBQywweEVCLDB4RUYsMHhFQSwweDdBLDB4ODgsMHg3MiwweDhBLDB4M0Us
MHgwRCwweEJBLAorICAgIDB4RUEsMHg3QSwweEE4LDB4NzIsMHgwOSwweDU5LDB4QUEsMHgwMiww
eDBBLDB4N0IsMHhBOSwweDcyLDB4QkYsMHhBRiwweEZELDB4REMsCisgICAgMHgwQSwweDdCLDB4
QTksMHg3MiwweDNBLDB4MDIsMHhBQiwweEI3LDB4MEEsMHg3QiwweEE5LDB4NzIsMHg5RSwweEFG
LDB4QUUsMHgyMiwKKyAgICAweDAyLDB4MzksMHhDMiwweDM4LDB4QjYsMHhBNCwweEVGLDB4Q0Us
MHgwMywweDQxLDB4QzIsMHgzOCwweEFBLDB4RUIsMHhGRiwweDU3LAorICAgIDB4MDMsMHgzOSww
eEMyLDB4MzgsMHgwRSwweEFFLDB4RUYsMHhFOSwweDAzLDB4MzksMHhBMSwweDMwLDB4QUUsMHhB
OCwweEFFLDB4RjUsCisgICAgMHhFMiwweDM4LDB4QzIsMHgzOCwweEQzLDB4MEQsMHgwQiwweDI4
LDB4RTIsMHgzOCwweEMyLDB4MzAsMHhGOCwweDJFLDB4MDQsMHgyNywKKyAgICAweDAyLDB4NDEs
MHhDMiwweDM4LDB4RUIsMHg2QSwweEZFLDB4RUYsMHhFMiwweDM4LDB4QzIsMHgzOCwweEFCLDB4
RUUsMHgzNSwweENFLAorICAgIDB4RTIsMHgzOCwweEExLDB4MzAsMHgwOCwweDgyLDB4NjAsMHg2
QSwweEUyLDB4MzgsMHhBMiwweDMwLDB4N0EsMHg3RSwweEZFLDB4OUYsCisgICAgMHhFMiwweDM4
LDB4QTIsMHgzMCwweDA5LDB4QTIsMHg4MCwweDg4LDB4NDYsMHg2QSwweEMyLDB4MzAsMHgzNSww
eDk1LDB4NTUsMHg1NSwKKyAgICAweEE3LDB4NzIsMHhDMywweDM4LDB4RTgsMHhGRiwweDVELDB4
NTUsMHgyNCwweDQxLDB4QzIsMHgzMCwweEVBLDB4RTgsMHhBRSwweEE1LAorICAgIDB4MDMsMHgz
OSwweEMyLDB4MzAsMHhBMiwweEU4LDB4QkMsMHhGRiwweDAzLDB4MzEsMHhBMiwweDMwLDB4MkEs
MHg4OCwweENBLDB4MkEsCisgICAgMHgwMywweDMxLDB4QzIsMHgyOCwweEJFLDB4QkEsMHhGQSww
eEZGLDB4MDMsMHgzMSwweEMyLDB4MzAsMHhFMywweEJFLDB4OEEsMHhGQSwKKyAgICAweEUzLDB4
MzAsMHhDMiwweDI4LDB4RTksMHgwMCwweEFBLDB4QUIsMHhFMywweDMwLDB4QzIsMHgyOCwweDJE
LDB4QTgsMHgwMiwweDhDLAorICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHhCQSwweDI3LDB4MDcs
MHhFRSwweDIzLDB4MzksMHhDMywweDMwLDB4RUYsMHhCRiwweEFGLDB4RDgsCisgICAgMHgwMyww
eDM5LDB4QzIsMHgyOCwweERFLDB4QkMsMHhBQSwweEVFLDB4QTIsMHgzOCwweDAzLDB4MzEsMHhE
RiwweDc2LDB4N0YsMHhGRiwKKyAgICAweDAyLDB4MzksMHhDMywweDMwLDB4QjcsMHg3RiwweEVB
LDB4RkIsMHgyNCwweDM5LDB4QzIsMHgyOCwweEJGLDB4QkQsMHgzRiwweEJELAorICAgIDB4MDMs
MHgzOSwweEMyLDB4MjgsMHhBNywweEZDLDB4RTMsMHg4QSwweDAzLDB4MzEsMHhFMywweDMwLDB4
RkIsMHhERiwweDc3LDB4OTUsCisgICAgMHhDMywweDM4LDB4MDMsMHgzMSwweERGLDB4NTcsMHg1
RiwweEU5LDB4MjQsMHgzOSwweEUzLDB4MzAsMHhBRiwweDJFLDB4QkYsMHhENywKKyAgICAweDI0
LDB4MzksMHhFMywweDMwLDB4RjUsMHhFRSwweEFGLDB4MkUsMHgyNCwweDM5LDB4RTMsMHgzOCww
eEJGLDB4RUEsMHhCQywweEJBLAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzgsMHhBRiwweEFFLDB4
OUYsMHhCQSwweDI0LDB4MzksMHhFMywweDM4LDB4RUYsMHgyQiwweENFLDB4QTcsCisgICAgMHgy
NCwweDQxLDB4MDMsMHgzMSwweDlBLDB4N0EsMHhGRSwweEEzLDB4NDUsMHgzOSwweDAzLDB4Mzks
MHhGNywweDVELDB4QjYsMHg5NywKKyAgICAweDIzLDB4MzksMHgwMywweDM5LDB4MjMsMHhCMiww
eEE4LDB4MEQsMHg2NCwweDQxLDB4MDMsMHgzOSwweEZELDB4NTUsMHg1NSwweDczLAorICAgIDB4
NDQsMHg0MSwweEUzLDB4MzAsMHgyMiwweEE1LDB4QjcsMHhBQSwweDg1LDB4NDEsMHhFMywweDM4
LDB4RUEsMHhBQSwweDBCLDB4QUQsCisgICAgMHg4NSwweDQ5LDB4MjQsMHgzOSwweEQ1LDB4MkYs
MHg4QSwweDIwLDB4QTYsMHg1MSwweDI0LDB4MzksMHhENSwweEFFLDB4MEIsMHhBRSwKKyAgICAw
eEE1LDB4NTEsMHgyNCwweDM5LDB4QjcsMHhBRSwweDAwLDB4MEEsMHhDNiwweDUxLDB4NDQsMHg0
MSwweERELDB4QkYsMHgyQiwweDBBLAorICAgIDB4MjcsMHg2MiwweDg1LDB4NDksMHhBRCwweEJG
LDB4ODksMHgwQSwweDI3LDB4NjIsMHhFNiwweDU5LDB4QjgsMHgyOSwweDAzLDB4QUEsCisgICAg
MHg0OCwweDZBLDB4MDYsMHg2MiwweDVGLDB4OTksMHgzRSwweDIyLDB4NjcsMHg2QSwweDA2LDB4
NUEsMHg4RSwweEEzLDB4QkIsMHg5RSwKKyAgICAweDY4LDB4NkEsMHgwNiwweDYyLDB4QUEsMHgy
NiwweDJBLDB4QUEsMHhBOCwweDZBLDB4NDcsMHg2MiwweDJGLDB4QjIsMHhCQSwweERCLAorICAg
IDB4QTksMHg3MiwweDI3LDB4NjIsMHhGOCwweEFBLDB4RjYsMHg3RiwweEE4LDB4NzIsMHg2OCww
eDZBLDB4MDUsMHgwRCwweDBFLDB4RjksCisgICAgMHhFQSwweDdBLDB4ODgsMHg2QSwweEY1LDB4
N0QsMHhGQiwweDhELDB4QzksMHg3MiwweDg4LDB4NzIsMHg5OCwweEZGLDB4RDYsMHhCRSwKKyAg
ICAweEE4LDB4NzIsMHg2OCwweDZBLDB4RTAsMHhGOCwweEVBLDB4RTAsMHhBOSwweDcyLDB4Njgs
MHg2QSwweEFBLDB4RUEsMHg3NSwweDdELAorICAgIDB4QzksMHg3MiwweDY4LDB4NkEsMHhBQSww
eEJCLDB4QUIsMHg3RCwweEU5LDB4N0EsMHg4OSwweDZBLDB4QUQsMHhGRiwweEZCLDB4MkYsCisg
ICAgMHhDOSwweDcyLDB4ODgsMHg3MiwweEJDLDB4MjQsMHgyQiwweDBCLDB4QzksMHg3QSwweDY3
LDB4NkEsMHhBQiwweEYyLDB4RkMsMHhEOCwKKyAgICAweEM5LDB4NzIsMHg4OCwweDZBLDB4ODAs
MHgyOSwweDlELDB4RUYsMHhFQSwweDcyLDB4ODgsMHg2QSwweEQyLDB4QkUsMHhCRSwweEJFLAor
ICAgIDB4RUEsMHg3QSwweDg4LDB4NzIsMHgyOSwweEFGLDB4OUUsMHhGMCwweEU5LDB4N0EsMHhB
OSwweDcyLDB4ODAsMHhFMiwweDIwLDB4QkQsCit9OworCitzdGF0aWMgY29uc3Qgc2l6ZV90IHBp
eGVsXzJfd2lkdGggPSAxMjg7CitzdGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVsXzJfaGVpZ2h0ID0g
MTI4Oworc3RhdGljIGNvbnN0IHNpemVfdCBwaXhlbF8yX3NpemUgPSA4MTkyOworc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGNoYXIgcGl4ZWxfMl9kYXRhWzgxOTJdID0KK3sKKyAgICAweDg3LDB4NjIs
MHgyMywweDQxLDB4N0YsMHhFMywweEFELDB4RkYsMHhFNSwweDUxLDB4RTIsMHgzMCwweEVFLDB4
M0EsMHg2OCwweEJBLAorICAgIDB4RTYsMHg1MSwweDAyLDB4MzEsMHhBNiwweEJFLDB4RTMsMHhE
QiwweDA2LDB4NTIsMHgyMywweDM5LDB4QjcsMHhERiwweDczLDB4REUsCisgICAgMHhFNiwweDUx
LDB4MjMsMHgzOSwweDM3LDB4N0YsMHg3MywweEQ4LDB4RTYsMHg1MSwweDAyLDB4MzksMHgzNyww
eDVCLDB4RkIsMHhGOCwKKyAgICAweEU2LDB4NTksMHg0MywweDQxLDB4MEQsMHhGOSwweEJELDB4
QUMsMHhFNSwweDU5LDB4MjMsMHgzOSwweEJFLDB4NzIsMHhERSwweDVDLAorICAgIDB4QzYsMHg1
MSwweDIzLDB4MzksMHhGRiwweDcyLDB4MUMsMHhGQywweDI3LDB4NUEsMHgyNCwweDM5LDB4RDcs
MHg3QSwweDlDLDB4RkYsCisgICAgMHhFNiwweDUxLDB4MDMsMHgzOSwweDlFLDB4RkUsMHgzQyww
eEZBLDB4MjYsMHg1MiwweDQ0LDB4NDEsMHgxNywweEY3LDB4OUYsMHg3MywKKyAgICAweDI2LDB4
NUEsMHg2NCwweDQxLDB4MTcsMHhCNSwweDk3LDB4RUIsMHgyNywweDVBLDB4NDQsMHg0MSwweEY4
LDB4QkYsMHhCNiwweEQ3LAorICAgIDB4NDcsMHg2MiwweDQzLDB4MzksMHgyQiwweDBCLDB4MkUs
MHg1NywweDY2LDB4NjIsMHg0MywweDQxLDB4ODIsMHhGMCwweDZBLDB4NTUsCisgICAgMHg0Niww
eDYyLDB4NDMsMHg0MSwweDAwLDB4MEEsMHhFQiwweEQ1LDB4NjcsMHg2MiwweDQ0LDB4NDEsMHhG
NywweERDLDB4N0YsMHg1NywKKyAgICAweEU2LDB4NTEsMHg0MywweDM5LDB4Q0QsMHhGNywweEY4
LDB4RkQsMHhDNSwweDUxLDB4MjMsMHgzOSwweEMxLDB4QkYsMHg1NywweDBBLAorICAgIDB4NEUs
MHhBNCwweDAyLDB4MzksMHgzRiwweEY1LDB4NTUsMHhGRiwweDk2LDB4RUUsMHhFNiwweDU5LDB4
MDAsMHgwMywweDBELDB4MEQsCisgICAgMHhENywweEY2LDB4NzUsMHhFRSwweDJCLDB4Q0EsMHhE
MiwweDdDLDB4RjcsMHhGNiwweDM0LDB4RTYsMHhBQSwweEFBLDB4N0EsMHg1RiwKKyAgICAweEQ3
LDB4RjYsMHgxNCwweERFLDB4MDAsMHgwMCwweDBBLDB4OTUsMHgxOCwweEZGLDB4NzUsMHhFNiww
eDBBLDB4QTIsMHhCNywweDdBLAorICAgIDB4MTgsMHhGRiwweDk2LDB4RTYsMHhBMCwweDBBLDB4
QUEsMHhBRCwweDE4LDB4RjcsMHhENywweEY2LDB4N0UsMHhFQSwweEFCLDB4N0EsCisgICAgMHhE
NywweEY2LDB4QjcsMHhFRSwweDBBLDB4QkUsMHg3MCwweEU4LDB4RDcsMHhGNiwweEIyLDB4RDUs
MHg2OCwweEUwLDB4QzgsMHhBOCwKKyAgICAweDE0LDB4RTYsMHg3MSwweENELDB4ODIsMHg4MSww
eDI5LDB4MEQsMHgzNCwweERFLDB4RjMsMHhERCwweDVGLDB4NUQsMHhERSwweDVBLAorICAgIDB4
QTgsMHg3MiwweDYzLDB4NDEsMHhCNywweERGLDB4NUUsMHg1QywweDI3LDB4NUEsMHg0MywweDM5
LDB4RkYsMHhGQywweDU3LDB4MEIsCisgICAgMHhFNiwweDUxLDB4MjMsMHgzOSwweEZGLDB4RkUs
MHg3NSwweDAwLDB4NjcsMHg2MiwweDAzLDB4MzEsMHg3RSwweDcyLDB4NTUsMHhBQSwKKyAgICAw
eEM2LDB4NTEsMHgyMywweDM5LDB4NjIsMHhGOSwweDU1LDB4MDAsMHhDNiwweDUxLDB4MjMsMHgz
OSwweEZGLDB4NTUsMHhGNiwweDAwLAorICAgIDB4RTYsMHg2OSwweDQzLDB4NDEsMHgyRCwweDI1
LDB4MDksMHgwQSwweDY4LDB4N0EsMHgwMywweDM5LDB4RkUsMHg1QSwweEFBLDB4MEEsCisgICAg
MHgwRCwweDlDLDB4MjQsMHgzOSwweDc1LDB4NTUsMHg3NywweDAyLDB4QUYsMHhBQywweDIzLDB4
MzksMHg1NSwweDU1LDB4RkYsMHgwMCwKKyAgICAweEQzLDB4RDUsMHg4NSwweDQ5LDB4NTUsMHg1
NSwweDU1LDB4MDAsMHgzNSwweEU2LDB4NjQsMHg0MSwweDU1LDB4NTUsMHhGRiwweDAwLAorICAg
IDB4OTYsMHhFRSwweDg0LDB4NDksMHg1NSwweDU1LDB4QkYsMHgwMCwweDc1LDB4RUUsMHg4NCww
eDQ5LDB4NTUsMHg1NSwweEFBLDB4MDAsCisgICAgMHhENywweEZFLDB4QTUsMHg1MSwweDU1LDB4
NTUsMHhBQSwweEUwLDB4NTUsMHhFRSwweEU2LDB4NTksMHg1NSwweEQ1LDB4MEYsMHgyNSwKKyAg
ICAweEI3LDB4RjYsMHhFNiwweDU5LDB4NTUsMHhGRiwweDAwLDB4MDAsMHhCNiwweEVFLDB4MDYs
MHg1QSwweDU1LDB4QUIsMHgwMCwweDAwLAorICAgIDB4QjcsMHhGNiwweDI2LDB4NjIsMHg1NSww
eDJBLDB4MDAsMHgwMCwweDk2LDB4RUUsMHg4NywweDZBLDB4NTUsMHgwMCwweDAwLDB4MDAsCisg
ICAgMHhCNiwweEVFLDB4MkEsMHg4MywweEQ1LDB4MDAsMHgwMCwweDAwLDB4QjYsMHhGNiwweDhF
LDB4QUMsMHgwOSwweDAwLDB4MDAsMHgwMCwKKyAgICAweEI2LDB4RjYsMHgxNCwweERFLDB4RTgs
MHg2OCwweEZBLDB4QjYsMHhENywweEY2LDB4MTQsMHhERSwweEZELDB4MEQsMHgwMiwweDA4LAor
ICAgIDB4RDcsMHhGNiwweEYzLDB4RDUsMHg3QSwweEFBLDB4QTAsMHgwMCwweEQ3LDB4RjYsMHhE
MywweEQ1LDB4MEQsMHhCRSwweEEyLDB4MDgsCisgICAgMHgxOCwweEY3LDB4MzUsMHhERSwweDlF
LDB4RkEsMHg4QiwweDJBLDB4MTgsMHhGNywweDk2LDB4RUUsMHg4OCwweDI5LDB4QUEsMHhFOCwK
KyAgICAweDE4LDB4RjcsMHg5NiwweEU2LDB4RkUsMHhGOCwweDdBLDB4N0EsMHg3NSwweEVFLDB4
RDMsMHhENSwweDAwLDB4QTAsMHhBQywweEU2LAorICAgIDB4MzQsMHhFNiwweDkyLDB4Q0QsMHhB
NSwweEE3LDB4MzYsMHgyNiwweDM0LDB4RTYsMHhGMywweERELDB4REEsMHhGRSwweEQ2LDB4NTYs
CisgICAgMHg5NiwweEVFLDB4RTUsMHg1MSwweDU2LDB4QTgsMHgwMCwweDAwLDB4QjYsMHhFRSww
eDA2LDB4NUEsMHg1NSwweEFBLDB4MDAsMHgwMCwKKyAgICAweDk2LDB4RUUsMHg0NywweDYyLDB4
NTUsMHgwMiwweDAwLDB4MDAsMHg3NSwweEVFLDB4QzksMHg3MiwweEQ1LDB4MDAsMHgwMCwweDAw
LAorICAgIDB4OTYsMHhFRSwweDhCLDB4OTMsMHhGNSwweDAwLDB4MDAsMHgwMCwweEI2LDB4RUUs
MHgxMCwweEJELDB4RDUsMHgwMiwweDAwLDB4MDAsCisgICAgMHhENywweEY2LDB4RTUsMHg2OSww
eDVBLDB4NTgsMHg1OCwweDU4LDB4MEEsMHg4QiwweEM1LDB4NjksMHgzRCwweERELDB4RjUsMHhE
NSwKKyAgICAweDk2LDB4RUUsMHg0NiwweDcyLDB4MDIsMHgwMywweDA5LDB4MjUsMHhCNiwweEY2
LDB4OTYsMHhFRSwweEY1LDB4QUEsMHg4MiwweDAyLAorICAgIDB4QjYsMHhGNiwweDk2LDB4RUUs
MHhBQiwweEFCLDB4MDIsMHgyMCwweEI2LDB4RjYsMHhENiwweEVFLDB4MjAsMHhDMCwweDYwLDB4
RkMsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEY1LDB4ODIsMHgwMiwweDAwLDB4RjcsMHhG
NiwweDcxLDB4Q0QsMHgwMCwweDAwLDB4ODAsMHg2MCwKKyAgICAweDU1LDB4RUUsMHg4NywweDdB
LDB4NzAsMHg1OCwweDU2LDB4NTUsMHhCNywweEY2LDB4NDYsMHg3MiwweDI1LDB4MjUsMHgyNSww
eDBELAorICAgIDB4RjgsMHhGRSwweDE3LDB4RjcsMHhGQSwweEZFLDB4RkYsMHhGNywweEY3LDB4
RjYsMHhENywweEY2LDB4N0UsMHhGQywweEY4LDB4NjIsCisgICAgMHhENywweEY2LDB4RjcsMHhF
RSwweDAwLDB4MDAsMHgyOCwweDgwLDB4RDcsMHhGNiwweEY3LDB4RUUsMHgwMCwweEEwLDB4MDgs
MHhBOCwKKyAgICAweEY3LDB4RjYsMHg5NiwweEVFLDB4MkEsMHg4QSwweEUyLDB4NzgsMHg5Niww
eEVFLDB4RjMsMHhERCwweDgwLDB4RTAsMHg3MCwweDVDLAorICAgIDB4QjcsMHhGNiwweEQyLDB4
RDUsMHhCNywweDI1LDB4MEIsMHgwMiwweEQ3LDB4RjYsMHgzNCwweEU2LDB4QkQsMHg1NywweEFB
LDB4MjgsCisgICAgMHhGOCwweEY2LDB4NTUsMHhFNiwweDBBLDB4MkQsMHhGQiwweEFBLDB4Rjcs
MHhGNiwweEI3LDB4RUUsMHhENywweDdFLDB4NkEsMHg4OSwKKyAgICAweDE4LDB4RjcsMHhENyww
eEY2LDB4M0YsMHhBOSwweDI5LDB4RkYsMHgzOSwweEZGLDB4QjYsMHhFRSwweEU4LDB4RjIsMHg2
MiwweEVFLAorICAgIDB4RDcsMHhGNiwweDM0LDB4RTYsMHhDMCwweDhBLDB4NkIsMHg2RiwweDM0
LDB4RTYsMHgxMCwweEM1LDB4OEMsMHgwNCwweEE2LDB4MjYsCisgICAgMHg3NiwweEVFLDB4Q0Ys
MHhCQywweEFFLDB4MkEsMHgzRSwweDlBLDB4OTYsMHhFRSwweEQzLDB4RDUsMHg3RiwweDdBLDB4
QTgsMHgyQSwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4RkQsMHhGNywweEZGLDB4QUQsMHhE
NiwweEY2LDB4QjYsMHhFRSwweEZCLDB4RkEsMHhCQSwweEU5LAorICAgIDB4RDYsMHhGNiwweEI2
LDB4RUUsMHhERiwweEVFLDB4QkIsMHhGQSwweEI1LDB4RjYsMHg5NiwweEVFLDB4RDcsMHhERCww
eEJFLDB4RkUsCisgICAgMHhENywweEY2LDB4OTYsMHhFRSwweDJGLDB4MjcsMHgyRiwweDJGLDB4
RDcsMHhGNiwweEI2LDB4RUUsMHhDQSwweDA4LDB4MDgsMHg4MiwKKyAgICAweDk1LDB4RjYsMHhB
NSwweDYxLDB4NTgsMHg3QywweDVDLDB4NTQsMHgwNiwweDcyLDB4NDQsMHg1OSwweDJDLDB4Qjgs
MHg3QSwweDc5LAorICAgIDB4OTIsMHhENSwweDg0LDB4NTksMHgyRCwweEI1LDB4RjUsMHhENSww
eEQ2LDB4RjYsMHhFQywweEEzLDB4MDAsMHgwMCwweDAyLDB4MDksCisgICAgMHhENywweEY2LDB4
QjYsMHhGNiwweDc3LDB4REUsMHhERSwweEI4LDB4RDYsMHhGNiwweEI2LDB4RjYsMHgwQiwweDJE
LDB4MkUsMHgwOCwKKyAgICAweEY3LDB4RjYsMHg1NSwweEVFLDB4MDAsMHgwMCwweDgwLDB4NDAs
MHgxNywweEZGLDB4NDYsMHg3QSwweEUwLDB4NzgsMHg1RSwweDU3LAorICAgIDB4ODcsMHg4QSww
eDI2LDB4N0EsMHgwRiwweDI3LDB4QTksMHhGQiwweEY3LDB4RkUsMHg4NywweDgyLDB4MEQsMHgw
RCwweDA5LDB4MDksCisgICAgMHgxOCwweEZGLDB4MTcsMHhGNywweEVFLDB4QkIsMHhFRSwweEVB
LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhFOCwweEU4LDB4RUEsMHhFQSwKKyAgICAweEY3LDB4RjYs
MHhENywweEY2LDB4RjUsMHhENywweDdGLDB4RUIsMHgxNywweEZGLDB4QjcsMHhFRSwweEFGLDB4
Q0IsMHg2QSwweDVBLAorICAgIDB4RDYsMHhGNiwweEQzLDB4RDUsMHhBMCwweEE4LDB4RTgsMHg3
QSwweEQ3LDB4RjYsMHg5MiwweEQ1LDB4OUUsMHgyNywweDA5LDB4MDIsCisgICAgMHhGNywweEY2
LDB4QjYsMHhFRSwweEJGLDB4QUEsMHhFRSwweEVBLDB4RDcsMHhGNiwweEI2LDB4RUUsMHhEOCww
eEFFLDB4OEEsMHhFOCwKKyAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4MTUsMHg1NywweDc3LDB4
RUYsMHgzOCwweEZGLDB4RDcsMHhFRSwweEVGLDB4QUIsMHgyRCwweEI1LAorICAgIDB4MzksMHhG
RiwweEQ3LDB4RjYsMHhERiwweDdGLDB4REUsMHg3OCwweEY4LDB4RjYsMHhCNiwweEVFLDB4Rjgs
MHhGOCwweEZFLDB4RDcsCisgICAgMHhCNiwweEVFLDB4RjMsMHhENSwweENFLDB4OEUsMHg4Qyww
eDI2LDB4RjMsMHhERCwweDMwLDB4QzUsMHgyNCwweDNDLDB4MkEsMHgzQSwKKyAgICAweDk2LDB4
RjYsMHgzMCwweEM1LDB4MUYsMHgzRCwweDM1LDB4MzUsMHhCNiwweEY2LDB4MzQsMHhFNiwweERF
LDB4REMsMHhEQywweEZDLAorICAgIDB4QjYsMHhGNiwweEQ2LDB4RUUsMHhFQiwweEZGLDB4RkIs
MHhGRiwweEQ2LDB4RjYsMHhCNywweEVFLDB4QUEsMHg4MiwweDBBLDB4MjIsCisgICAgMHhENiww
eEY2LDB4QjYsMHhFRSwweEVBLDB4QUUsMHhDMCwweDgwLDB4RDYsMHhGNiwweDk2LDB4RUUsMHhG
RiwweEZGLDB4QkIsMHhCRSwKKyAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4QjUsMHhCNSwweEJE
LDB4QTcsMHhENiwweEY2LDB4RjcsMHhFRSwweDAwLDB4MDgsMHhBMiwweEE4LAorICAgIDB4OTUs
MHhFRSwweDQzLDB4NTEsMHg1QywweDVDLDB4NTgsMHg1MCwweDg1LDB4NTksMHhFMiwweDQwLDB4
QzIsMHhGRSwweDdCLDB4NzYsCisgICAgMHg2NywweDcyLDB4MDMsMHg0MSwweDNELDB4QUQsMHgy
NSwweDI1LDB4MzQsMHhFNiwweDA5LDB4ODMsMHgwRCwweEY1LDB4NTUsMHg1NSwKKyAgICAweDk1
LDB4RUUsMHhDOCwweDdBLDB4MDAsMHhCRiwweEQ1LDB4NTUsMHhCNiwweEY2LDB4MDksMHg4Qiww
eDAwLDB4MjIsMHg3RCwweDU1LAorICAgIDB4NzYsMHhGNiwweDQ2LDB4NzIsMHg4MCwweDYwLDB4
NUYsMHg1NSwweDY3LDB4ODIsMHhFNSwweDcxLDB4MkMsMHgwQiwweEU3LDB4RDcsCisgICAgMHgy
OSwweDlCLDB4MjYsMHg4MiwweEQ3LDB4RjUsMHhCRCwweDJELDB4RjcsMHhGRSwweDRCLDB4QTMs
MHgwMSwweDAzLDB4MDIsMHgwMiwKKyAgICAweDM4LDB4RkYsMHgxOCwweEY3LDB4N0UsMHg2Qiww
eDdGLDB4RkYsMHgxNywweEY3LDB4RDcsMHhGNiwweEZGLDB4RUUsMHhFRSwweEEwLAorICAgIDB4
MTgsMHhGRiwweDc1LDB4RUUsMHgyQSwweDgyLDB4RTIsMHg1OCwweEY3LDB4RkUsMHg1NSwweEVF
LDB4RjgsMHhFRSwweDZFLDB4N0YsCisgICAgMHhENywweEY2LDB4RjQsMHhERCwweEJFLDB4Mjcs
MHgwOSwweDAyLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg3RCwweDdCLDB4NUEsMHhFRSwKKyAgICAw
eEQ3LDB4RjYsMHhCNiwweEVFLDB4MDAsMHhBMCwweDgwLDB4ODAsMHhENywweEY2LDB4QjYsMHhF
RSwweEFBLDB4QTAsMHhFOCwweEFBLAorICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHg4MCwweDBC
LDB4QUYsMHgwQSwweEY4LDB4RjYsMHhENywweEY2LDB4MkQsMHgzRCwweDI1LDB4QUIsCisgICAg
MHgzOSwweEZGLDB4OTcsMHhFRSwweEUwLDB4NkEsMHg0QSwweEVBLDB4QjYsMHhFRSwweDc2LDB4
RUUsMHgzOCwweEJGLDB4OUYsMHhGRiwKKyAgICAweEI3LDB4RjYsMHg3MSwweENELDB4MjQsMHgw
NiwweDI0LDB4MjYsMHgzNSwweEU2LDB4OTIsMHhDRCwweEQ2LDB4OUUsMHhEQywweDU0LAorICAg
IDB4RjMsMHhERCwweDhFLDB4QjQsMHgyNywweDM3LDB4MDcsMHgwOSwweDk2LDB4RUUsMHgzNCww
eEU2LDB4RDgsMHhGQiwweERCLDB4RkIsCisgICAgMHhENiwweEY2LDB4QjcsMHhFRSwweEFBLDB4
OEEsMHgwMCwweDJBLDB4RDcsMHhGNiwweEQ2LDB4RUUsMHhBQSwweEFBLDB4QUEsMHgwQSwKKyAg
ICAweEY3LDB4RjYsMHhENywweEY2LDB4NzUsMHg3NywweEY1LDB4QUQsMHhENiwweEY2LDB4QjYs
MHhFRSwweERGLDB4RDYsMHhFQSwweEE4LAorICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHhBRCww
eEE3LDB4QUYsMHhBRiwweEY3LDB4RjYsMHhENywweEY2LDB4RjUsMHg3RSwweEE3LDB4QUIsCisg
ICAgMHhENywweEY2LDB4MDIsMHg0MSwweDcwLDB4NzAsMHg2MCwweDYwLDB4RTUsMHg2MSwweEUy
LDB4NDAsMHg3RiwweEZGLDB4QkQsMHgwOSwKKyAgICAweDY3LDB4NzIsMHg0NCwweDQ5LDB4MkQs
MHhBRiwweEZCLDB4RUEsMHhBOCwweDdBLDB4RTUsMHg2MSwweDgwLDB4QTIsMHhGRCwweDVGLAor
ICAgIDB4ODgsMHg3MiwweEU1LDB4NjEsMHgyMiwweEJBLDB4RkUsMHhENSwweDJBLDB4OEIsMHhF
NSwweDYxLDB4MDIsMHhBQSwweDdCLDB4NTUsCisgICAgMHg2NywweDdBLDB4QzUsMHg2MSwweDM0
LDB4QjcsMHhFRCwweEMzLDB4MjYsMHg3QSwweDQzLDB4NTksMHgyQywweDI2LDB4QjUsMHgxNSwK
KyAgICAweEU5LDB4OTIsMHg0NywweDgyLDB4MzUsMHgyNSwweEI1LDB4M0YsMHhGNywweEZFLDB4
MTAsMHhDRCwweDAxLDB4MDEsMHgwMywweDAzLAorICAgIDB4MzgsMHhGRiwweEY3LDB4RjYsMHhB
QSwweEFGLDB4RkYsMHg1QiwweDM4LDB4RkYsMHhENiwweEY2LDB4QTgsMHhFMCwweDZCLDB4NUIs
CisgICAgMHhENywweEY2LDB4NTQsMHhFNiwweEE4LDB4ODAsMHg2MCwweDQwLDB4RjgsMHhGRSww
eEQzLDB4REQsMHg1RSwweEQ2LDB4ODMsMHg4MiwKKyAgICAweEQ3LDB4RjYsMHhCMiwweEQ1LDB4
MjUsMHgzNywweEJFLDB4RkEsMHhGNywweEY2LDB4QjYsMHhGNiwweDAyLDB4MDIsMHhBQiwweDA5
LAorICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg3RiwweDVBLDB4QkYsMHhERiwweEY3LDB4RjYs
MHg5NywweEVFLDB4QUEsMHgwRSwweDIyLDB4OEEsCisgICAgMHhGNywweEY2LDB4RDcsMHhGNiww
eDg1LDB4QzIsMHg4QiwweEFBLDB4RjgsMHhGNiwweEQ3LDB4RjYsMHgwMiwweEVBLDB4MEEsMHhD
QSwKKyAgICAweEY4LDB4RjYsMHhCNywweEVFLDB4OEEsMHgyQSwweEJFLDB4QjcsMHg5NiwweEVF
LDB4NzYsMHhFRSwweEFFLDB4OUMsMHhCRSwweEUwLAorICAgIDB4OTYsMHhFRSwweDUxLDB4Q0Qs
MHgyNCwweDI0LDB4MkUsMHgyQywweDU1LDB4RUUsMHhGMCwweEJDLDB4RkMsMHhGOCwweDc4LDB4
NTgsCisgICAgMHgzNCwweEU2LDB4MTAsMHhDNSwweDJELDB4MkIsMHgwMSwweDBCLDB4OTYsMHhF
RSwweDU1LDB4RTYsMHg1QiwweEZBLDB4RjMsMHgzMywKKyAgICAweEQ2LDB4RjYsMHhCNiwweEU2
LDB4MjgsMHg4MiwweDIwLDB4ODgsMHhENywweEY2LDB4RDYsMHhFRSwweDhBLDB4QUEsMHgyQiww
eEFBLAorICAgIDB4RjYsMHhGNiwweEQ3LDB4RjYsMHhGRCwweDdGLDB4NzcsMHg3RCwweEQ2LDB4
RjYsMHhCNywweEVFLDB4MDAsMHgwOCwweDJBLDB4QUUsCisgICAgMHhGNywweEY2LDB4RDcsMHhG
NiwweEQ1LDB4QTcsMHgyRCwweEE1LDB4RjcsMHhGNiwweEQ2LDB4RjYsMHhCQSwweEFBLDB4Q0Es
MHgwMiwKKyAgICAweEI2LDB4RjYsMHg2NiwweDcyLDB4NjAsMHg2MCwweDcwLDB4NzAsMHhDOCww
eDgyLDB4QzUsMHg1OSwweEU1LDB4MEEsMHgyQSwweEZFLAorICAgIDB4QTgsMHg3QSwweEE0LDB4
NTksMHg3QSwweEUwLDB4NjgsMHg3QiwweDY3LDB4NzIsMHg2NCwweDUxLDB4ODIsMHhDMywweEZG
LDB4RjUsCisgICAgMHg0NiwweDcyLDB4QzUsMHg1OSwweEZELDB4RTUsMHhENSwweDM5LDB4MkEs
MHg5MywweEM1LDB4NjEsMHhENSwweEI1LDB4MkYsMHgwQSwKKyAgICAweDhFLDB4QzQsMHg4OCww
eDgyLDB4N0QsMHhEQiwweEVCLDB4MEEsMHg4QiwweEEzLDB4QzUsMHg2OSwweDk3LDB4RUEsMHg4
QSwweEU4LAorICAgIDB4RDcsMHhGRSwweDY3LDB4N0EsMHhENSwweDE1LDB4MjUsMHgwRCwweDE3
LDB4RkYsMHhCOCwweEY2LDB4MjEsMHgyMiwweDIyLDB4MjAsCisgICAgMHgxOCwweEZGLDB4QjYs
MHhFRSwweDI4LDB4ODgsMHg2QSwweDVBLDB4MTcsMHhGRiwweDM0LDB4RTYsMHhBOCwweDdBLDB4
N0YsMHhBMiwKKyAgICAweDM5LDB4RkYsMHg5NiwweEVFLDB4RTIsMHhDMSwweDgzLDB4ODgsMHgx
OCwweEZGLDB4RDgsMHhGNiwweEU5LDB4ODksMHhBQiwweEFCLAorICAgIDB4MTgsMHhGRiwweDE0
LDB4RTYsMHg3RiwweDdFLDB4RkMsMHg3OCwweDE4LDB4RkYsMHg1NSwweEU2LDB4MkIsMHgyOSww
eEFELDB4QUQsCisgICAgMHgzOCwweEZGLDB4RDcsMHhGNiwweDU3LDB4N0YsMHhGRiwweEZCLDB4
RjcsMHhGNiwweEQ3LDB4RjYsMHhEOSwweDBCLDB4MDAsMHgwMCwKKyAgICAweDE4LDB4RkYsMHhE
NywweEY2LDB4RkQsMHhBRSwweEJCLDB4RkEsMHhGNywweEY2LDB4OTUsMHhFRSwweDgwLDB4QTAs
MHhFOCwweEU4LAorICAgIDB4RDcsMHhGNiwweDk2LDB4RUUsMHgzNywweDBELDB4MDksMHhBRCww
eDk2LDB4RUUsMHg1NSwweEU2LDB4QTgsMHhBOCwweEJCLDB4QkQsCisgICAgMHg1NSwweEVFLDB4
QjMsMHhENSwweDA0LDB4MjQsMHgwNCwweDI0LDB4NTUsMHhFRSwweDZFLDB4QjQsMHg3OCwweDc4
LDB4NTgsMHg1QSwKKyAgICAweDc2LDB4RUUsMHg5MiwweEQ1LDB4QTksMHhBOSwweDI5LDB4MDMs
MHhCNiwweEY2LDB4MzQsMHhFNiwweDNCLDB4MjUsMHgyRSwweEFGLAorICAgIDB4RDYsMHhGNiww
eDU1LDB4RUUsMHgwMCwweDAwLDB4MDAsMHgwOSwweEQ2LDB4RjYsMHhGNywweEVFLDB4MjAsMHg4
OCwweDg4LDB4MjAsCisgICAgMHhENiwweEY2LDB4RDcsMHhFRSwweDhBLDB4QUEsMHg4OCwweDIy
LDB4RDYsMHhGNiwweEI2LDB4RUUsMHhFRSwweEJFLDB4QUEsMHgwMCwKKyAgICAweEQ2LDB4RjYs
MHhCNiwweEVFLDB4MDIsMHg4QSwweEJCLDB4ODAsMHhGNywweEY2LDB4QjYsMHhFRSwweEFBLDB4
QUIsMHhFQiwweEZFLAorICAgIDB4NzUsMHhFRSwweDYzLDB4NDksMHg3OCwweDU4LDB4NTgsMHg1
QywweEU1LDB4NjEsMHhBMSwweDI4LDB4MDAsMHhFRiwweEQ3LDB4RDUsCisgICAgMHhDNSwweDU5
LDB4RTIsMHgzOCwweEE4LDB4QjcsMHhCRCwweDM1LDB4MDksMHg5MywweDg0LDB4NTEsMHhGRCww
eEVCLDB4N0EsMHg3MiwKKyAgICAweDJBLDB4OEIsMHgyMywweDQ5LDB4MkYsMHgyQiwweDNGLDB4
QjUsMHhFQywweEFCLDB4ODcsMHg4MiwweEJBLDB4ODAsMHgwQiwweDJELAorICAgIDB4NEUsMHhC
QywweDQ3LDB4N0EsMHgwQSwweEFFLDB4RkUsMHg3QSwweEVDLDB4QUIsMHgyNiwweDcyLDB4NUMs
MHhENiwweDNGLDB4MkIsCisgICAgMHhGOCwweEZFLDB4Q0IsMHhBMywweDA5LDB4MDIsMHgwMiww
eDAyLDB4MTgsMHhGRiwweEQ2LDB4RjYsMHhBMCwweEEyLDB4RTAsMHg3MCwKKyAgICAweDU5LDB4
RkYsMHhENiwweEY2LDB4RDcsMHhBNSwweEFELDB4MEQsMHgzOCwweEZGLDB4NzUsMHhFNiwweDcw
LDB4RDAsMHhEQywweDlDLAorICAgIDB4MzgsMHhGRiwweEY5LDB4RjYsMHhDQSwweDZBLDB4RUEs
MHhFRSwweDE4LDB4RkYsMHhGOCwweEY2LDB4QjksMHhCRiwweEFGLDB4QTcsCisgICAgMHgxOCww
eEZGLDB4NTUsMHhFRSwweDc4LDB4RTAsMHhFMCwweEE4LDB4RjcsMHhGNiwweDU1LDB4RUUsMHgy
RCwweDJGLDB4MEYsMHgyQSwKKyAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4NTUsMHg1NSwweEZE
LDB4QTUsMHhGNywweEY2LDB4RDcsMHhGNiwweDI4LDB4NjIsMHgwMCwweDAwLAorICAgIDB4Rjcs
MHhGNiwweDk2LDB4RUUsMHg4MCwweDI4LDB4RjgsMHg3QSwweEQ3LDB4RjYsMHg1NSwweEU2LDB4
RTAsMHhGMCwweERFLDB4RjcsCisgICAgMHhENywweEY2LDB4NzYsMHhFRSwweDg5LDB4ODksMHhG
MywweEJCLDB4NzUsMHhFRSwweEY0LDB4REQsMHgwQSwweDA3LDB4MjUsMHhBNywKKyAgICAweDU2
LDB4RUUsMHg5MiwweENELDB4MkMsMHgyRSwweDJFLDB4NjYsMHgxNCwweEU2LDB4QUYsMHhCQyww
eEQ4LDB4RjgsMHhGMCwweEQyLAorICAgIDB4MzQsMHhFNiwweDMxLDB4Q0QsMHg4MiwweDdGLDB4
RDcsMHhENywweDM1LDB4RTYsMHg5MiwweEQ1LDB4MEYsMHgwRCwweDJELDB4QkQsCisgICAgMHgz
NCwweEU2LDB4RTgsMHg4MiwweDJELDB4NTUsMHg1NSwweDU1LDB4QjYsMHhGNiwweDA4LDB4ODMs
MHgwMCwweDJGLDB4NTUsMHg1NSwKKyAgICAweEI2LDB4RjYsMHhFOCwweDgyLDB4MDAsMHgwMCww
eDBCLDB4RDUsMHhENiwweEY2LDB4RjAsMHhDNCwweDAwLDB4MDAsMHgwMCwweDJELAorICAgIDB4
QjcsMHhGRSwweEY2LDB4RjYsMHhGRiwweEZGLDB4QkYsMHhFQSwweEY3LDB4RkUsMHhCNiwweEY2
LDB4RkYsMHhBRSwweEVFLDB4QUEsCisgICAgMHg5NSwweEVFLDB4NDMsMHg0MSwweDVDLDB4NUMs
MHg1QywweDU4LDB4NDQsMHg0MSwweEExLDB4MjgsMHhENSwweEY3LDB4QTAsMHg4MCwKKyAgICAw
eDA2LDB4NzIsMHhFMiwweDM4LDB4QjUsMHgzNSwweDM1LDB4MkQsMHhDOCwweDgyLDB4RTMsMHg0
MCwweDYwLDB4NzAsMHg3QSwweDVFLAorICAgIDB4RTYsMHg2MSwweDgxLDB4MjgsMHgyRiwweEZG
LDB4NzcsMHg1RiwweDA5LDB4OTMsMHhDMiwweDMwLDB4MEEsMHgyRiwweEI1LDB4QjUsCisgICAg
MHg2QiwweDlCLDB4NjcsMHg3QSwweEQ4LDB4REUsMHhGRiwweEZGLDB4Q0IsMHhBMywweDA2LDB4
NkEsMHhDMiwweEFBLDB4RkIsMHg3RiwKKyAgICAweDM0LDB4RTYsMHg2NywweDcyLDB4MkQsMHg5
NSwweDU1LDB4NTUsMHhENywweEY2LDB4NEIsMHg5MywweDAwLDB4MDAsMHgwMiwweDBELAorICAg
IDB4NzksMHhGRiwweEQ3LDB4RjYsMHhBOSwweEVCLDB4RUEsMHg2RSwweEY3LDB4RkUsMHgzNSww
eEU2LDB4M0MsMHgzRiwweDM3LDB4MjcsCisgICAgMHgzOCwweEZGLDB4RjcsMHhGNiwweEUzLDB4
RUIsMHhFQiwweEVCLDB4RjgsMHhGRSwweDE4LDB4RjcsMHhFQSwweEFCLDB4QUEsMHhBQSwKKyAg
ICAweDE4LDB4RkYsMHhENywweEY2LDB4N0EsMHg1QSwweEZFLDB4RkEsMHhGOCwweEY2LDB4RDcs
MHhGNiwweEQ1LDB4QkEsMHgwQSwweDBCLAorICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHhBNyww
eEY2LDB4QkYsMHg5QiwweDE4LDB4RkYsMHhCNywweEY2LDB4QTgsMHhFMiwweDY4LDB4N0EsCisg
ICAgMHhENywweEY2LDB4NTUsMHhFNiwweEU4LDB4RkEsMHg3RSwweEZGLDB4NzUsMHhFRSwweDM1
LDB4RTYsMHgyMCwweEE4LDB4QUYsMHgzOCwKKyAgICAweEI3LDB4RjYsMHg3NiwweEVFLDB4M0Us
MHhBQSwweEVFLDB4N0YsMHg3NSwweEVFLDB4OTIsMHhENSwweDJGLDB4MjUsMHhBNSwweEI1LAor
ICAgIDB4RjQsMHhERCwweDUxLDB4Q0QsMHg0OCwweEM4LDB4MDAsMHgwMCwweEQzLDB4REQsMHg2
RSwweEI0LDB4RkEsMHhEQSwweERBLDB4RDgsCisgICAgMHg3MiwweEQ1LDB4RjAsMHhDNCwweDJG
LDB4MkQsMHhBRiwweEI3LDB4RDMsMHhERCwweDMwLDB4QzUsMHgyMiwweEUyLDB4NjIsMHg1RiwK
KyAgICAweEU4LDB4ODIsMHg2NSwweDcyLDB4MkEsMHhBOCwweDJCLDB4NTUsMHhFOCwweDgyLDB4
QTcsMHg3QSwweEEyLDB4QkEsMHhFQSwweEFELAorICAgIDB4RTgsMHg4MiwweEM4LDB4ODIsMHgy
MywweEFBLDB4RkYsMHg1NywweDRELDB4QUMsMHhFOCwweDgyLDB4MzUsMHg1NSwweDU1LDB4NTUs
CisgICAgMHg3NSwweEVFLDB4RTgsMHg4MiwweDAyLDB4QjUsMHg1NSwweDU1LDB4QjYsMHhGNiww
eDA5LDB4OEIsMHgwMCwweDAyLDB4QjUsMHg1NSwKKyAgICAweDc1LDB4RUUsMHg2MywweDUxLDB4
NzAsMHg2MCwweEMwLDB4RUYsMHhBNSwweDUxLDB4MjMsMHg0MSwweDYwLDB4RTIsMHhBRCwweEE1
LAorICAgIDB4MDksMHg5MywweDY0LDB4NTEsMHhCNSwweDJELDB4MEIsMHgwQiwweDg3LDB4ODIs
MHgyNCwweDQ5LDB4NUMsMHhGOCwweEI4LDB4ODgsCisgICAgMHg0NywweDdBLDB4QzIsMHgzMCww
eDU1LDB4NUYsMHhFOCwweDYwLDB4MDYsMHg3MiwweEEyLDB4MzAsMHgzRCwweDJGLDB4RUUsMHhC
RiwKKyAgICAweDg4LDB4N0EsMHhDNSwweDYxLDB4QkMsMHhENSwweDk5LDB4QUIsMHhBOCwweDdB
LDB4MjIsMHg0MSwweEY4LDB4REUsMHg5NiwweEI3LAorICAgIDB4MDksMHg4QiwweEM1LDB4NjEs
MHhBRiwweEFGLDB4MkYsMHgyNywweEI2LDB4RjYsMHhBOCwweDgyLDB4MjUsMHgzNSwweEQ1LDB4
NTUsCisgICAgMHgxOCwweEZGLDB4RjAsMHhDQywweDgwLDB4ODAsMHhBMCwweDg5LDB4RjgsMHhG
RSwweDU1LDB4RUUsMHgyNSwweDI1LDB4MjUsMHgwRCwKKyAgICAweDE4LDB4RkYsMHhGOCwweEY2
LDB4ODIsMHhFMiwweEUyLDB4QzIsMHgxOCwweEZGLDB4RjgsMHhGNiwweDdFLDB4NUYsMHhGNyww
eDU3LAorICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhGRiwweEJCLDB4RUYsMHhBQiwweDE4LDB4
RkYsMHhENywweEY2LDB4QUYsMHhCRiwweEFBLDB4QUUsCisgICAgMHgxOCwweEZGLDB4RDcsMHhG
NiwweEJBLDB4RkEsMHhGQSwweEZFLDB4RjgsMHhGNiwweDc2LDB4RUUsMHhFOCwweDc4LDB4N0Es
MHg1RSwKKyAgICAweDc2LDB4RUUsMHgzNSwweEU2LDB4RTAsMHhFMCwweEU4LDB4NjgsMHg5Niww
eEVFLDB4MzUsMHhFNiwweDNGLDB4MkUsMHhBQiwweDJELAorICAgIDB4OTYsMHhFRSwweDU1LDB4
RUUsMHg4OCwweEMyLDB4RUUsMHg0QSwweDE0LDB4RTYsMHg3MSwweENELDB4MjcsMHhCNSwweEJF
LDB4QTgsCisgICAgMHhEMywweERELDB4Q0YsMHhCQywweDAwLDB4ODAsMHg3MCwweDU4LDB4OTIs
MHhENSwweDZFLDB4QjQsMHg1OCwweDdCLDB4RUYsMHhBNywKKyAgICAweDUxLDB4Q0QsMHg0RSww
eEFDLDB4MkUsMHgwRSwweDI2LDB4MjYsMHg3MiwweENELDB4MTAsMHhDNSwweDE2LDB4QjUsMHgw
RCwweEEzLAorICAgIDB4QTcsMHg3QSwweDY2LDB4NzIsMHhERCwweEZBLDB4QUEsMHhBQiwweEE3
LDB4N0EsMHg0NiwweDcyLDB4QkYsMHhEQSwweEEyLDB4MDgsCisgICAgMHhFOCwweDgyLDB4NDYs
MHg3MiwweDBBLDB4QkQsMHhGNywweEZCLDB4RTgsMHg4QSwweDY2LDB4NzIsMHgyMiwweEFBLDB4
M0QsMHg1NSwKKyAgICAweEU4LDB4ODIsMHg4NywweDdBLDB4MDgsMHhBMCwweDgyLDB4QTUsMHgw
OCwweDhCLDB4QzgsMHg4MiwweEFFLDB4RkYsMHhGRiwweEY1LAorICAgIDB4MDgsMHg4QiwweEM0
LDB4NTksMHhDMCwweEUyLDB4NjgsMHhFMiwweEE0LDB4NTksMHhDMiwweDMwLDB4MkEsMHgwQSww
eEJGLDB4REYsCisgICAgMHhFOCwweDkyLDB4QTQsMHg1OSwweDA5LDB4OEIsMHgwQiwweEFELDB4
QTgsMHg4QSwweEE1LDB4NjEsMHhFOCwweEZFLDB4N0EsMHg3RSwKKyAgICAweDQ2LDB4NzIsMHgy
MywweDQ5LDB4RTgsMHg3QSwweDVGLDB4NUYsMHhBNSwweDUxLDB4MjMsMHg0MSwweEI1LDB4Qjcs
MHgzRiwweEVGLAorICAgIDB4ODgsMHg3MiwweDY0LDB4NDksMHg4QiwweEFCLDB4RkYsMHg1NSww
eDQ3LDB4NzIsMHgwMywweDQ5LDB4QjcsMHhCRiwweDJGLDB4MDMsCisgICAgMHhFOSwweDkyLDB4
MDYsMHg2QSwweEFELDB4OEIsMHhFQiwweEZFLDB4RTksMHg4QSwweDIzLDB4NDksMHg4MiwweEEy
LDB4N0EsMHg1RSwKKyAgICAweDE0LDB4RTYsMHhFNSwweDYxLDB4MEIsMHgyRCwweEI1LDB4RDUs
MHhENywweEZFLDB4MEQsMHhBQywweDA4LDB4MDIsMHgwMiwweEI1LAorICAgIDB4MTgsMHhGRiww
eEI3LDB4RjYsMHg4MCwweDgwLDB4ODIsMHg4OSwweEQ3LDB4RkUsMHhGOCwweEY2LDB4RjUsMHg3
RCwweEQ3LDB4RjUsCisgICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweERELDB4QjUsMHhGRiwweEVE
LDB4MTgsMHhGRiwweEQ3LDB4RjYsMHg4RSwweEFBLDB4QUEsMHg2QSwKKyAgICAweEY4LDB4RkUs
MHg5NiwweEVFLDB4RjAsMHg3QSwweDdBLDB4NUUsMHhCNiwweEY2LDB4NTUsMHhFNiwweEZDLDB4
RUYsMHg3NSwweEY3LAorICAgIDB4NzYsMHhFRSwweDM1LDB4RUUsMHhFQSwweDg4LDB4MkEsMHhB
OCwweDc2LDB4RUUsMHgxNCwweEU2LDB4MEIsMHgwRSwweDdBLDB4RjgsCisgICAgMHg5NiwweEY2
LDB4RjQsMHhFNSwweDgyLDB4OEEsMHhDMywweDZBLDB4MTQsMHhFNiwweEQzLDB4REQsMHhFQSww
eEJFLDB4MDMsMHg2MSwKKyAgICAweEQzLDB4REQsMHg4RSwweEI0LDB4NTgsMHg1QywweEZDLDB4
N0UsMHg1MSwweENELDB4Q0MsMHg5QiwweDJGLDB4QUYsMHhGRSwweDdBLAorICAgIDB4MTAsMHhD
NSwweEFCLDB4OUIsMHgwOCwweDA4LDB4MEYsMHgwRCwweDcyLDB4Q0QsMHgxMSwweEM1LDB4MDIs
MHgwMCwweDAzLDB4QUYsCisgICAgMHg2NywweDcyLDB4MjUsMHg2QSwweDI1LDB4NTUsMHhERCww
eEJFLDB4QTgsMHg3QSwweDI1LDB4NkEsMHg4MiwweEJELDB4NTUsMHg1NSwKKyAgICAweEE3LDB4
N0EsMHgyNiwweDcyLDB4QTIsMHg4MCwweDJELDB4NTUsMHhBNywweDdBLDB4NDYsMHg3QSwweEE4
LDB4MEEsMHhBMCwweDJELAorICAgIDB4QTcsMHg3QSwweDY2LDB4N0EsMHhENywweEU4LDB4RTIs
MHg4QSwweEM4LDB4ODIsMHg2NiwweDcyLDB4MEEsMHhENywweEZCLDB4QUEsCisgICAgMHhFOCww
eDgyLDB4ODYsMHg3QSwweDYwLDB4MjIsMHhENSwweDc3LDB4ODYsMHg3QSwweEEyLDB4MzgsMHg1
NywweDVDLDB4RjgsMHhFMCwKKyAgICAweEU2LDB4NjksMHhDMiwweDQwLDB4MkQsMHgyRCwweEZG
LDB4RkYsMHg2NywweDdBLDB4MDMsMHg0OSwweDIwLDB4MDAsMHg4QiwweEY1LAorICAgIDB4QTgs
MHg4MiwweEMyLDB4MzgsMHhGQSwweEY4LDB4N0EsMHg1RiwweDQ0LDB4NDksMHhFMiwweDM4LDB4
QkMsMHhGNywweEZELDB4QUIsCisgICAgMHhBNCwweDU5LDB4QTIsMHgzMCwweERGLDB4QjcsMHgz
NywweDJGLDB4NjcsMHg3QSwweDg0LDB4NTksMHgwOSwweDJELDB4RkQsMHhGRiwKKyAgICAweDA2
LDB4NkEsMHg0NCwweDUxLDB4QTgsMHhCOCwweEJFLDB4RDcsMHhBNSwweDU5LDB4MDMsMHg0MSww
eDlDLDB4OUMsMHgzRSwweEE3LAorICAgIDB4RTksMHg4QSwweEE1LDB4NTksMHgzRiwweEFGLDB4
RUIsMHhFRCwweDRBLDB4OTMsMHg2NywweDdBLDB4MzcsMHhCNSwweEVELDB4NTUsCisgICAgMHg5
NiwweEY2LDB4NjcsMHg3QSwweDAyLDB4QjcsMHg1NSwweDU1LDB4OTcsMHhGNiwweDY3LDB4N0Es
MHgwMCwweDAwLDB4QjcsMHg1NSwKKyAgICAweEQ3LDB4RkUsMHg2NywweDcyLDB4MDAsMHgwMCww
eDBBLDB4NzUsMHhENywweEZFLDB4QjAsMHhCQywweDAwLDB4MDAsMHgwMCwweDI5LAorICAgIDB4
RDcsMHhGNiwweDU1LDB4RUUsMHhFOCwweDdFLDB4RkYsMHg1RiwweDk2LDB4RjYsMHgzNSwweEU2
LDB4RUEsMHhBQSwweEFCLDB4RTUsCisgICAgMHg5NiwweEY2LDB4NTUsMHhFRSwweDdGLDB4RUUs
MHgyQSwweDdELDB4NzYsMHhFRSwweDU1LDB4RUUsMHg1QSwweDNBLDB4RDcsMHgwOSwKKyAgICAw
eDc1LDB4RUUsMHhCMywweEQ1LDB4RTgsMHg2MiwweDY4LDB4NjgsMHg3NSwweEVFLDB4QjMsMHhE
NSwweEFELDB4QUYsMHhBRCwweEJELAorICAgIDB4NzUsMHhFRSwweDEwLDB4QzUsMHg1NiwweDc4
LDB4ODIsMHgwMCwweDM1LDB4RTYsMHg4QiwweDkzLDB4NkEsMHhFQSwweEFBLDB4QTgsCisgICAg
MHgzMCwweEM1LDB4NjgsMHg3MiwweDBCLDB4QUQsMHhENywweDVDLDB4RjAsMHhDNCwweEM5LDB4
N0EsMHgwMCwweDAwLDB4MDIsMHgzNSwKKyAgICAweDY2LDB4NzIsMHg0NiwweDcyLDB4RDcsMHg1
QiwweERELDB4QUUsMHg2NywweDdBLDB4NDYsMHg2QSwweDU1LDB4RkYsMHhBQSwweEFCLAorICAg
IDB4NjYsMHg3MiwweDI2LDB4NkEsMHhGRSwweEVCLDB4QUEsMHg4QSwweDY2LDB4NzIsMHgyNiww
eDcyLDB4M0QsMHhGRiwweEZCLDB4QUEsCisgICAgMHhBNywweDdBLDB4MjUsMHg2QSwweDBBLDB4
QkQsMHg1RiwweEZGLDB4QTcsMHg4MiwweDQ2LDB4NzIsMHgwOCwweDBBLDB4QjUsMHg1NSwKKyAg
ICAweEM3LDB4ODIsMHg0NiwweDcyLDB4MkEsMHg4OCwweDBBLDB4QUQsMHhFOCwweDhBLDB4RTUs
MHg2OSwweDZBLDB4RUEsMHg4MCwweDAyLAorICAgIDB4RTgsMHg4QSwweDg0LDB4NTksMHg1NSww
eEZBLDB4NjgsMHg3OCwweDg1LDB4NTEsMHhBMiwweDMwLDB4MjAsMHhFOCwweDdBLDB4NTcsCisg
ICAgMHg0NCwweDQ5LDB4QTIsMHgyOCwweERDLDB4QkYsMHhGRiwweEZELDB4NjQsMHg0OSwweEMy
LDB4MzAsMHhGQSwweEI3LDB4QjcsMHgxNSwKKyAgICAweDg1LDB4NTksMHgyMywweDQxLDB4M0Qs
MHhBRiwweDJFLDB4MjUsMHgyNywweDcyLDB4NDQsMHg0OSwweEMwLDB4QzMsMHg2QiwweDdCLAor
ICAgIDB4QTUsMHg1OSwweEUyLDB4MzgsMHhBRSwweEE1LDB4MzcsMHgyNywweEE1LDB4NTksMHgw
MywweDQxLDB4QUYsMHhFRiwweDc4LDB4NUMsCisgICAgMHhDOCwweDgyLDB4RTMsMHg0MCwweDBC
LDB4MDksMHhBRCwweEZELDB4NjcsMHg3QSwweDQ0LDB4NTEsMHgyOCwweEE4LDB4RkYsMHhENSwK
KyAgICAweEU5LDB4OEEsMHhFNSwweDYxLDB4OEEsMHgwQiwweEFELDB4RkQsMHhDOSwweDhBLDB4
MjcsMHg3MiwweDVGLDB4NzgsMHg2OCwweDhBLAorICAgIDB4NjcsMHg3MiwweEE1LDB4NTksMHgw
MiwweDgwLDB4QUEsMHg1OCwweDU1LDB4RUUsMHgwNiwweDYyLDB4MkQsMHhGNSwweDU1LDB4NTUs
CisgICAgMHgzNCwweEVFLDB4NDcsMHg3MiwweDAwLDB4MEEsMHgyRCwweEI1LDB4MzUsMHhFNiww
eDkzLDB4REQsMHgyMCwweDJBLDB4RTgsMHhBOSwKKyAgICAweDE0LDB4RTYsMHhEMywweERELDB4
M0EsMHgyMCwweEZGLDB4NTYsMHg5NiwweEY2LDB4RjQsMHhFNSwweDhBLDB4QUIsMHhGQiwweDVE
LAorICAgIDB4NTUsMHhFRSwweEQzLDB4REQsMHg2MCwweEFBLDB4RjIsMHhGMiwweDU1LDB4RTYs
MHhCMywweEQ1LDB4QUQsMHhFQSwweEFBLDB4QkIsCisgICAgMHg5NiwweEVFLDB4MTQsMHhFNiww
eDgyLDB4MEIsMHgwMywweDAxLDB4NzYsMHhFRSwweDkyLDB4RDUsMHg3OCwweEUwLDB4MDAsMHgw
MCwKKyAgICAweDM1LDB4RTYsMHgwRCwweEE0LDB4N0EsMHhBMiwweDA4LDB4MjAsMHhCMiwweEQ1
LDB4QzksMHg3QSwweEI1LDB4QTgsMHhDMCwweDAwLAorICAgIDB4NjYsMHg3MiwweDI3LDB4NzIs
MHg4MiwweEEwLDB4MDIsMHhBOSwweDQ3LDB4N0EsMHg2NiwweDcyLDB4RjUsMHg1RiwweERGLDB4
N0YsCisgICAgMHg4NiwweDdBLDB4NDYsMHg3MiwweEY3LDB4RUYsMHhCQiwweEJBLDB4ODYsMHg3
QSwweDQ2LDB4NzIsMHhERiwweEVFLDB4QkEsMHhBMiwKKyAgICAweDg2LDB4N0EsMHg0NiwweDcy
LDB4RkYsMHhGRiwweEVBLDB4QTgsMHg2NiwweDdBLDB4NDYsMHg3MiwweEJGLDB4MEEsMHgwOCww
eDAwLAorICAgIDB4ODcsMHg3QSwweDQ1LDB4N0EsMHhENywweEZCLDB4QUEsMHg4MiwweEFCLDB4
QTMsMHg2NiwweDdBLDB4REQsMHhENSwweDk1LDB4MzUsCisgICAgMHgwOSwweDkzLDB4QzIsMHgz
OCwweDc4LDB4NzgsMHg3OCwweDc4LDB4QzIsMHgzMCwweDgxLDB4MjgsMHg3QywweEE4LDB4MDgs
MHgwOCwKKyAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4QUYsMHhFRSwweDY4LDB4MTgsMHg0NCww
eDQxLDB4QTIsMHgyOCwweDJELDB4ODksMHg4QiwweEUyLAorICAgIDB4NjQsMHg1MSwweEUyLDB4
MzgsMHgyRCwweDJELDB4ODEsMHg0MywweDg1LDB4NTEsMHhFMywweDM4LDB4NjIsMHhFOCwweDVB
LDB4NTUsCisgICAgMHg0NCwweDQxLDB4RTMsMHgzOCwweDBGLDB4N0YsMHg2MywweEI1LDB4NjUs
MHg0OSwweDAzLDB4NDEsMHhGNiwweDZGLDB4NjEsMHgyNywKKyAgICAweDg1LDB4NTEsMHhFMyww
eDM4LDB4MkYsMHgwNSwweDM1LDB4QUYsMHhBNSwweDU5LDB4MDMsMHg0MSwweEZFLDB4RDYsMHgz
NiwweDJFLAorICAgIDB4MjYsMHg2QSwweDg0LDB4NTksMHhBRCwweEEyLDB4NjMsMHhERSwweDg3
LDB4ODIsMHg2NCwweDU5LDB4MDAsMHgzQiwweEZELDB4RkQsCisgICAgMHg0NywweDcyLDB4NjQs
MHg1MSwweEY4LDB4QTgsMHg1RiwweDVELDB4QzUsMHg1OSwweDQ0LDB4NDksMHgwQSwweDg4LDB4
OUYsMHhCNSwKKyAgICAweEM4LDB4N0EsMHg2NCwweDQ5LDB4MEYsMHhCRCwweEZGLDB4N0YsMHhE
MywweEU1LDB4MjYsMHg3MiwweDBCLDB4MkQsMHhCNSwweEY1LAorICAgIDB4RDQsMHhERCwweDEw
LDB4QzUsMHgwMCwweDgwLDB4QTAsMHhBOSwweDE0LDB4RTYsMHg5MywweEQ1LDB4QTIsMHgyRiww
eDA5LDB4QUIsCisgICAgMHgzNSwweEVFLDB4NTEsMHhDRCwweEEwLDB4MDgsMHgyRSwweDE2LDB4
NTUsMHhFRSwweEY0LDB4REQsMHg3RCwweEJFLDB4ODIsMHhFOCwKKyAgICAweEI2LDB4RjYsMHgx
NCwweEU2LDB4MjksMHgyOSwweDg5LDB4OEIsMHg5NiwweEY2LDB4RjQsMHhERCwweDcwLDB4NjAs
MHhDOCwweEFBLAorICAgIDB4MzUsMHhFNiwweDkyLDB4RDUsMHg1RiwweDVELDB4NUYsMHg1Qyww
eEIzLDB4RDUsMHg1MSwweENELDB4QTAsMHg3RSwweDVFLDB4N0UsCisgICAgMHgyNSwweDcyLDB4
NjQsMHg1OSwweDNELDB4RDUsMHg1NSwweDU1LDB4NjYsMHg3MiwweDYzLDB4NTksMHgwMCwweDI5
LDB4RDUsMHg1NSwKKyAgICAweDY2LDB4NzIsMHg2MywweDUxLDB4MDAsMHgwMCwweDBCLDB4RDUs
MHg4NywweDdBLDB4RTUsMHg2OSwweDAwLDB4MDgsMHg4MCwweDBELAorICAgIDB4ODcsMHg3QSww
eDY2LDB4N0EsMHhFQSwweEEyLDB4RUUsMHhCQiwweDY2LDB4ODIsMHg4NywweDdBLDB4QkIsMHhG
QiwweDdGLDB4N0YsCisgICAgMHg2NiwweDhBLDB4ODcsMHg3QSwweDc1LDB4NUYsMHhERCwweERE
LDB4RUMsMHhBQiwweDg3LDB4ODIsMHgyNSwweDA1LDB4MDksMHgwMiwKKyAgICAweDY5LDB4OUIs
MHg0MywweDQ5LDB4N0MsMHg3RSwweDVDLDB4NUMsMHgwMiwweDM5LDB4QTIsMHgyOCwweDdDLDB4
NUMsMHhERSwweEY4LAorICAgIDB4MjMsMHg0MSwweEEyLDB4MjgsMHhENSwweEQ1LDB4REQsMHgy
RiwweDI0LDB4NDEsMHhDMiwweDMwLDB4RkEsMHgyNSwweDJELDB4MDIsCisgICAgMHgyMywweDQx
LDB4RTMsMHgzOCwweENCLDB4RjksMHg4MiwweEUwLDB4NDQsMHg0OSwweEMyLDB4MzAsMHg2RCww
eEZCLDB4RjAsMHhFMCwKKyAgICAweDY0LDB4NDksMHhBMiwweDMwLDB4QjUsMHhCRCwweDJELDB4
QkEsMHg0NCwweDQ5LDB4RTMsMHgzOCwweDJBLDB4RjAsMHhGRiwweDlFLAorICAgIDB4NjUsMHg1
MSwweDAzLDB4MzksMHg4MywweEVCLDB4RjUsMHhCNywweEE1LDB4NTksMHgwMywweDQxLDB4MkIs
MHg5RiwweDU3LDB4REYsCisgICAgMHhBNSwweDU5LDB4MDMsMHg0MSwweDIwLDB4QkUsMHhENyww
eEQ3LDB4MDYsMHg2QSwweDIzLDB4NDksMHgwQSwweEFBLDB4RkIsMHg1RiwKKyAgICAweEM2LDB4
NTksMHgyMywweDQxLDB4QjYsMHhGOCwweERCLDB4NTUsMHhBNSwweDUxLDB4NDQsMHg0OSwweDhG
LDB4MjUsMHhGNSwweDU1LAorICAgIDB4QzUsMHg1OSwweDIzLDB4NDEsMHgyQSwweEJFLDB4RDcs
MHhGNSwweDA5LDB4OEIsMHhDNSwweDU5LDB4MEYsMHhBRCwweEZELDB4RkQsCisgICAgMHhCMyww
eERELDB4QzgsMHg4MiwweDBCLDB4MEQsMHgzNSwweDE1LDB4MzUsMHhFNiwweEIzLDB4RDUsMHg4
QiwweDAwLDB4ODIsMHg2MCwKKyAgICAweEYzLDB4REQsMHhGMCwweEM0LDB4MzQsMHhCRSwweEI3
LDB4RkYsMHg5NiwweEVFLDB4MTUsMHhFNiwweDVFLDB4QkUsMHgyQiwweDA5LAorICAgIDB4OTYs
MHhFRSwweDU1LDB4RUUsMHg2MywweDdBLDB4RkMsMHhGOCwweDc1LDB4RUUsMHg1NSwweEU2LDB4
QUYsMHhGRSwweDlGLDB4RjcsCisgICAgMHg1NSwweEVFLDB4OTIsMHhENSwweDc4LDB4ODAsMHgw
MCwweDAwLDB4NzYsMHhFRSwweDUxLDB4Q0QsMHg1RiwweDdGLDB4RUEsMHgwMCwKKyAgICAweDg0
LDB4NTksMHg0MywweDU5LDB4RTcsMHhDNSwweEFELDB4QUIsMHg4NCwweDYxLDB4NDMsMHg1MSww
eDZFLDB4NzIsMHhENiwweDVGLAorICAgIDB4NjMsMHg1OSwweDIzLDB4NTEsMHg1RiwweEY3LDB4
RkUsMHgzRiwweEU1LDB4NjksMHg0MywweDU5LDB4MjUsMHhGRCwweEZGLDB4QkYsCisgICAgMHg4
NywweDdBLDB4NDMsMHg1OSwweDAyLDB4QkQsMHg1NywweDVELDB4ODcsMHg3QSwweDQzLDB4NTks
MHgwMCwweDAwLDB4MkQsMHg1NSwKKyAgICAweENCLDB4QTMsMHhFNSwweDY5LDB4RkYsMHgzRiww
eDJGLDB4MEQsMHhDQiwweEFCLDB4NkEsMHg5QiwweDIyLDB4QTgsMHhCRSwweEY3LAorICAgIDB4
OEEsMHg5QiwweDQzLDB4NDksMHg1QywweDc4LDB4NTgsMHhGOCwweDIzLDB4NDEsMHhDMiwweDMw
LDB4NUMsMHg1NiwweEI3LDB4RkUsCisgICAgMHg2NCwweDQ5LDB4QzIsMHgzMCwweEFELDB4MkQs
MHgzRiwweEFBLDB4NjQsMHg0OSwweDAzLDB4NDEsMHhGRSwweEVBLDB4N0MsMHhGNiwKKyAgICAw
eDg1LDB4NTEsMHgwMywweDM5LDB4RDUsMHgyNywweDA1LDB4QUYsMHhBNSwweDU5LDB4MjQsMHg0
MSwweEZELDB4QUQsMHhBQiwweEIyLAorICAgIDB4MDYsMHg2MiwweEUzLDB4MzgsMHhERiwweDdC
LDB4N0EsMHhGMCwweDI0LDB4NDEsMHhDMiwweDMwLDB4MjgsMHhBRSwweEVELDB4MjksCisgICAg
MHhBNSwweDUxLDB4MDMsMHg0MSwweDM1LDB4MTUsMHhGNSwweEQ1LDB4NjQsMHg1MSwweDAzLDB4
NDEsMHg5NCwweERFLDB4RkUsMHhBQSwKKyAgICAweDg1LDB4NDksMHgyMywweDQ5LDB4RDcsMHhG
QiwweEUyLDB4RUUsMHg2NCwweDUxLDB4RTMsMHgzOCwweEE4LDB4QjgsMHhGRSwweERFLAorICAg
IDB4NjQsMHg0OSwweEUzLDB4MzgsMHhERiwweERGLDB4OUYsMHhBMiwweDY0LDB4NDksMHhFMyww
eDM4LDB4RTgsMHg3QiwweEY4LDB4MkIsCisgICAgMHg4NSwweDUxLDB4MjMsMHg0MSwweDI1LDB4
MjUsMHhGNywweEY3LDB4QTgsMHg3QSwweDQ0LDB4NDksMHg4QiwweDJGLDB4QUYsMHhCRCwKKyAg
ICAweDhBLDB4OUIsMHgyNiwweDcyLDB4MkYsMHhCRiwweEY1LDB4RDUsMHhEMywweERELDB4Mjks
MHg4QiwweDAwLDB4ODMsMHg4MSwweDhELAorICAgIDB4NTEsMHhENSwweEQwLDB4QzQsMHgyQiww
eEFGLDB4MkQsMHhBRCwweDk2LDB4RUUsMHhBRiwweEJDLDB4MDIsMHgwMywweEZCLDB4N0YsCisg
ICAgMHg3NiwweEVFLDB4OEUsMHhCNCwweDAwLDB4MDAsMHhGQiwweDU1LDB4NzUsMHhFRSwweDRF
LDB4QUMsMHgwMCwweDgwLDB4N0YsMHg1NSwKKyAgICAweDc2LDB4RUUsMHg4RiwweEI0LDB4MDAs
MHhGRSwweEQ1LDB4QkQsMHgxNSwweERFLDB4QjAsMHhCNCwweDgwLDB4RUQsMHhGRSwweDdFLAor
ICAgIDB4NjQsMHg1OSwweDIzLDB4NTEsMHhDMCwweDdBLDB4RkUsMHhERiwweDYzLDB4NTksMHgy
MywweDUxLDB4QUIsMHhGRiwweEI5LDB4QUEsCisgICAgMHg4NCwweDYxLDB4NDMsMHg1OSwweEY1
LDB4RkQsMHhCRSwweEZCLDB4ODQsMHg2MSwweDQzLDB4NTksMHhDMiwweDZBLDB4NUUsMHg1NSwK
KyAgICAweDYzLDB4NTksMHgwMywweDQ5LDB4QTIsMHhFQywweDczLDB4REUsMHgyNSwweDcyLDB4
MjMsMHg1MSwweDU1LDB4NTUsMHg1NSwweDk1LAorICAgIDB4OEIsMHg5QiwweDAyLDB4NTEsMHgw
OSwweDAzLDB4MDIsMHgwMCwweDhCLDB4OUIsMHgyOSwweDkzLDB4MDAsMHgwQSwweEI2LDB4Qjcs
CisgICAgMHg0OSwweDkzLDB4QTQsMHg1OSwweDc4LDB4NjAsMHhFOCwweEU4LDB4RTUsMHg2OSww
eEUzLDB4NDAsMHg1RiwweDVGLDB4RjcsMHhEQywKKyAgICAweDg1LDB4NTEsMHhFMywweDM4LDB4
RkEsMHhGMiwweDdCLDB4NUUsMHg0NCwweDQ5LDB4RTMsMHgzOCwweDhDLDB4RUEsMHg2MiwweEUz
LAorICAgIDB4MjMsMHg0MSwweEUzLDB4MzgsMHhFMCwweEVBLDB4QUIsMHhBRCwweEM2LDB4NjEs
MHgyMywweDQ5LDB4RjEsMHg3MSwweEUzLDB4QkQsCisgICAgMHg4NSwweDU5LDB4RTMsMHgzOCww
eDQyLDB4NEEsMHhFQSwweDYwLDB4MjQsMHg0MSwweEEyLDB4MzAsMHgyQiwweEFELDB4RkQsMHhB
RCwKKyAgICAweDg1LDB4NTksMHgyMywweDQxLDB4RkYsMHhBRCwweEFGLDB4MkEsMHhBNSwweDU5
LDB4RTMsMHgzOCwweEUyLDB4RTgsMHhGQSwweDdGLAorICAgIDB4NDQsMHg0OSwweEUyLDB4Mzgs
MHgyQywweEJBLDB4REYsMHgyRCwweDQ0LDB4NDEsMHhFMywweDM4LDB4RkEsMHhGRSwweEVCLDB4
RjAsCisgICAgMHg4NSwweDUxLDB4MDMsMHgzOSwweDhCLDB4QUQsMHg3RCwweDc1LDB4NjQsMHg0
OSwweEUzLDB4MzgsMHgyRiwweEJFLDB4QkQsMHhGRCwKKyAgICAweDg1LDB4NTEsMHgyMywweDQx
LDB4RUEsMHgyRiwweEU1LDB4MzUsMHhFNiwweDYxLDB4NDQsMHg0OSwweDJELDB4RjcsMHhBRiww
eDNELAorICAgIDB4QTgsMHg3QSwweEU1LDB4NjEsMHgyQSwweDNELDB4RjUsMHg5RiwweDExLDB4
QzUsMHhBOCwweDdBLDB4MEQsMHgwRCwweDI1LDB4MTUsCisgICAgMHgzMSwweENELDB4OEUsMHhC
NCwweDJCLDB4MkYsMHhGRiwweEQ3LDB4MTEsMHhDNSwweDJFLDB4QUMsMHhDMCwweDcwLDB4N0Ms
MHgwQiwKKyAgICAweDkzLDB4Q0QsMHgyRCwweEFDLDB4NTUsMHhBRCwweDBCLDB4ODIsMHhCNCww
eENELDB4NkYsMHhBQywweDJELDB4QTAsMHhFMCwweEUyLAorICAgIDB4OTQsMHhDRCwweDJFLDB4
QTQsMHg4OCwweDhBLDB4RUIsMHhEQiwweEYxLDB4QkMsMHg4RiwweEFDLDB4NjAsMHhGMiwweDlF
LDB4QkYsCisgICAgMHg2MywweDU5LDB4MDMsMHg0OSwweEJGLDB4QUUsMHhBMiwweEEwLDB4ODQs
MHg1OSwweDQzLDB4NTksMHhGRCwweDdELDB4MkQsMHhDRiwKKyAgICAweDg0LDB4NjEsMHg0Myww
eDU5LDB4N0UsMHg1MiwweDdBLDB4NUYsMHg2NCwweDU5LDB4MjMsMHg1MSwweDlCLDB4RUIsMHg3
RSwweDVGLAorICAgIDB4NDQsMHg1MSwweEUyLDB4NDAsMHhFOCwweEFBLDB4QkYsMHhGRSwweDZC
LDB4OUIsMHgwMywweDQ5LDB4MzUsMHgyNSwweDBELDB4MDksCisgICAgMHhFRCwweEFCLDB4NEEs
MHg5MywweDVFLDB4N0UsMHg3MiwweEU4LDB4NkEsMHg5QiwweDI5LDB4OTMsMHgzRCwweEY3LDB4
QjcsMHg4MCwKKyAgICAweDA5LDB4OEIsMHg0NywweDcyLDB4RkMsMHg3OCwweDVDLDB4NUMsMHg2
NywweDcyLDB4MjQsMHg0OSwweDU4LDB4NjgsMHhBMiwweEE4LAorICAgIDB4QzUsMHg2MSwweEMy
LDB4MzgsMHg3NiwweDVGLDB4NUYsMHg3OCwweDY0LDB4NDksMHhFMywweDM4LDB4Q0IsMHg0OSww
eEZELDB4RkQsCisgICAgMHgyMywweDQxLDB4RTMsMHgzOCwweEFGLDB4OUUsMHhCQiwweDI1LDB4
ODUsMHg1OSwweDAzLDB4NDEsMHgyRiwweDI5LDB4OTUsMHhCRiwKKyAgICAweDg1LDB4NTksMHhD
MywweDM4LDB4NDAsMHg3MCwweDcwLDB4NzgsMHgwNCwweDQxLDB4QTIsMHgzMCwweDBCLDB4RjUs
MHhCQiwweEExLAorICAgIDB4QTYsMHg1OSwweEUzLDB4MzgsMHgwMiwweDAzLDB4MDksMHhBRiww
eDg1LDB4NTEsMHhFMywweDM4LDB4N0UsMHg1RSwweEZDLDB4NUUsCisgICAgMHg2NCwweDQ5LDB4
RTMsMHgzOCwweDJGLDB4MjUsMHhBNSwweEI1LDB4NDQsMHg0MSwweEUyLDB4MzgsMHg3OCwweDZB
LDB4ODIsMHhFQSwKKyAgICAweDI0LDB4NDEsMHhFMiwweDM4LDB4QUUsMHgyRCwweEJGLDB4NTUs
MHgyMywweDM5LDB4RTIsMHgzMCwweEZCLDB4QUUsMHgzRiwweEJELAorICAgIDB4QTUsMHg1OSww
eDIzLDB4NDEsMHhGRCwweERELDB4QjksMHhBMywweEU2LDB4NjEsMHg0NCwweDQ5LDB4OTUsMHhE
NSwweEI3LDB4MEIsCisgICAgMHg0NywweDcyLDB4ODQsMHg1OSwweDJCLDB4QTUsMHhGRiwweDNG
LDB4NEUsMHhCNCwweDI2LDB4NzIsMHgzRiwweDNGLDB4QkQsMHhGNSwKKyAgICAweDU1LDB4RUUs
MHhEMCwweEJDLDB4NTcsMHgyQSwweDAyLDB4MDMsMHgzNSwweEU2LDB4RDAsMHhCQywweEJELDB4
QzgsMHhDMCwweEUwLAorICAgIDB4OTMsMHhDRCwweDUyLDB4QzUsMHg0MywweDYyLDB4QzIsMHhC
QywweDkzLDB4Q0QsMHhCMCwweEI0LDB4MEUsMHhCRSwweEZBLDB4N0EsCisgICAgMHg1MiwweEM1
LDB4NEMsMHg4QiwweEI4LDB4QUMsMHhBRiwweEFELDB4RDAsMHhCNCwweDkwLDB4QUMsMHhCRSww
eEY2LDB4RUEsMHg1NiwKKyAgICAweDYzLDB4NTksMHg0MywweDUxLDB4QUQsMHgwRCwweDI5LDB4
M0IsMHg4NCwweDYxLDB4NDMsMHg1MSwweEFBLDB4RTIsMHhENiwweDU1LAorICAgIDB4NjMsMHg1
OSwweDIzLDB4NTEsMHhBQSwweEVGLDB4NUEsMHg1RiwweDQzLDB4NTEsMHgwNCwweDQ5LDB4Qjgs
MHhFQSwweEVBLDB4RkUsCisgICAgMHg0NCwweDU5LDB4RTIsMHg0OCwweDdGLDB4M0UsMHgwQiww
eDAyLDB4QUIsMHhBMywweEE1LDB4NjEsMHgwOSwweDAxLDB4MDMsMHgwMywKKyAgICAweENDLDB4
QUIsMHg0OSwweDkzLDB4RjcsMHg3RSwweEY4LDB4NjAsMHg2QSwweDlCLDB4QzgsMHg4MiwweDg4
LDB4RkIsMHg3QSwweERGLAorICAgIDB4QzgsMHg4MiwweDI2LDB4NzIsMHg1QywweDdDLDB4RkMs
MHg3QywweDQ2LDB4NzIsMHgwNiwweDZBLDB4OUUsMHhBNiwweDJFLDB4MjgsCisgICAgMHhBOCww
eDgyLDB4MDMsMHg0MSwweDVBLDB4NzgsMHg2MCwweEMwLDB4MjQsMHg0MSwweEMyLDB4MzAsMHg4
QiwweEFCLDB4RkQsMHg1NywKKyAgICAweDQ0LDB4NDksMHhDMiwweDMwLDB4M0YsMHhCRiwweEJE
LDB4NkQsMHg2NSwweDUxLDB4RTMsMHgzOCwweDJFLDB4QkUsMHg3RiwweEZELAorICAgIDB4QTYs
MHg1OSwweEUzLDB4MzgsMHg1OCwweDdBLDB4N0YsMHhGRiwweDAzLDB4MzksMHhBMiwweDMwLDB4
MEIsMHgyQiwweDk3LDB4QjYsCisgICAgMHg2NSwweDQ5LDB4MDMsMHg0MSwweENELDB4RTksMHhF
OSwweDgxLDB4MjQsMHg0MSwweEUzLDB4MzgsMHhGQSwweEI2LDB4RkMsMHg1NCwKKyAgICAweDQ0
LDB4NDEsMHhFMywweDMwLDB4M0YsMHgzRiwweEY1LDB4NTUsMHg0NCwweDQxLDB4QzIsMHgzMCww
eDdBLDB4RDgsMHhGRiwweEY3LAorICAgIDB4MjMsMHgzOSwweEUyLDB4MzAsMHhGRCwweEFFLDB4
QUIsMHhGNywweDIzLDB4MzksMHhDMywweDM4LDB4QUIsMHgzRSwweDlBLDB4QkEsCisgICAgMHg2
NCwweDQ5LDB4MDMsMHgzOSwweDI5LDB4NzUsMHg1NywweDVGLDB4NDcsMHg2QSwweDAzLDB4NDEs
MHhBRiwweDJELDB4QkQsMHhGRCwKKyAgICAweDQ3LDB4NzIsMHhBNSwweDU5LDB4MzMsMHhFRiww
eEIwLDB4NjMsMHgwOSwweDgzLDB4MjYsMHg2QSwweDI1LDB4QjUsMHhFRiwweEVELAorICAgIDB4
MTUsMHhFNiwweDhCLDB4OTMsMHgwMywweDAxLDB4MDksMHhBOSwweDE0LDB4RTYsMHgzMiwweEM1
LDB4RjgsMHhEOCwweERBLDB4REUsCisgICAgMHg5MywweENELDB4RjEsMHhCQywweEEwLDB4RTgs
MHhCQywweERBLDB4NTIsMHhDNSwweDZDLDB4OEIsMHhBMCwweEU4LDB4RTgsMHg2QSwKKyAgICAw
eDkwLDB4QUMsMHhFRSwweDlCLDB4MDksMHg4OSwweEVELDB4QjksMHg4RiwweEFDLDB4NEYsMHhB
NCwweDNFLDB4ODksMHg1OSwweDFFLAorICAgIDB4NjMsMHg1OSwweDIzLDB4NTEsMHhBQSwweEMw
LDB4RkUsMHhERiwweDQzLDB4NTEsMHgwMywweDQ5LDB4MDIsMHgyQiwweENBLDB4RkEsCisgICAg
MHg0MywweDUxLDB4MDIsMHg0OSwweEJFLDB4QUUsMHhFRCwweEJCLDB4NDQsMHg1OSwweDAzLDB4
NTEsMHg3RiwweEJCLDB4M0YsMHgwRiwKKyAgICAweEM2LDB4NjksMHgwMywweDUxLDB4RkQsMHhC
RiwweEJGLDB4M0YsMHhFQywweEFCLDB4RTksMHg4QSwweDI5LDB4MDksMHgyQiwweDhBLAorICAg
IDB4MkQsMHhCNCwweDhCLDB4OUIsMHg3OCwweEZBLDB4QUEsMHg1NSwweEFCLDB4QTMsMHg4Nyww
eDdBLDB4RkUsMHhGQSwweEUwLDB4N0EsCisgICAgMHhBNywweDgyLDB4MjUsMHg2QSwweDdDLDB4
REMsMHg3RSwweDVGLDB4QTgsMHg4MiwweDI1LDB4NkEsMHhCRCwweDI3LDB4MEQsMHgwMywKKyAg
ICAweEE4LDB4ODIsMHhFNSwweDY5LDB4QzAsMHg4MCwweEU4LDB4NTYsMHhFNSwweDYxLDB4QTIs
MHgzMCwweDVGLDB4NTQsMHg1QywweDU4LAorICAgIDB4RTMsMHgzOCwweEEyLDB4MzAsMHg4Qiww
eEY1LDB4RDcsMHhBQSwweDI0LDB4NDksMHhDMiwweDMwLDB4MkYsMHhBRCwweEZELDB4QkIsCisg
ICAgMHg2NSwweDQ5LDB4MDMsMHgzOSwweDdDLDB4NUYsMHg1QiwweEZCLDB4MDMsMHg0MSwweEEy
LDB4MjgsMHhCRSwweEI2LDB4NUUsMHhEOCwKKyAgICAweDY1LDB4NDksMHhDMiwweDMwLDB4MDMs
MHhBQiwweEVELDB4RUQsMHgyMywweDQxLDB4QTIsMHgyOCwweEY4LDB4QkUsMHg3NywweEY3LAor
ICAgIDB4MDMsMHgzOSwweEMzLDB4MzAsMHhFRiwweEFCLDB4OUYsMHgzNSwweDAzLDB4MzksMHhD
MiwweDMwLDB4QkYsMHg3RCwweEZGLDB4RkUsCisgICAgMHgyMywweDQxLDB4RTMsMHgzOCwweDU1
LDB4NTUsMHhGRCwweENCLDB4MjMsMHg0MSwweEMyLDB4MzAsMHhGNSwweEJFLDB4QUUsMHgyMCwK
KyAgICAweDQ0LDB4NDksMHgwMywweDM5LDB4RUYsMHhFMywweDdBLDB4NzgsMHg0NCwweDQ5LDB4
MDMsMHg0MSwweDI3LDB4RDUsMHhENywweDVBLAorICAgIDB4QzUsMHg2MSwweDIzLDB4NDEsMHgw
RSwweEJCLDB4QUYsMHhBRCwweEE4LDB4N0EsMHhDNSwweDYxLDB4MDksMHgwOSwweDBCLDB4QUIs
CisgICAgMHg1MiwweENELDB4QTgsMHg3QSwweDA5LDB4MDksMHgwRCwweDJELDB4NzMsMHhDRCww
eEQwLDB4QjQsMHg4QywweDBDLDB4MEMsMHhDNywKKyAgICAweDMyLDB4QzUsMHgyRSwweEE0LDB4
ODAsMHhFQSwweEY4LDB4NzgsMHhGMSwweEJDLDB4QUQsMHg5MywweDVBLDB4QkEsMHhBOCwweEZG
LAorICAgIDB4MzEsMHhCRCwweEVELDB4OUIsMHhBRiwweDAyLDB4QkYsMHhENSwweDMyLDB4QzUs
MHg4RiwweEFDLDB4NTUsMHg1RiwweEFBLDB4MjUsCisgICAgMHg0MywweDUxLDB4MDIsMHg0OSww
eEI4LDB4RTAsMHhGQSwweDZBLDB4NDMsMHg1MSwweDAyLDB4NDksMHhEOCwweDk2LDB4QjUsMHgy
RCwKKyAgICAweDQzLDB4NTEsMHgyMywweDUxLDB4REQsMHhGQSwweDNDLDB4MjUsMHg0NCwweDU5
LDB4MjMsMHg1MSwweEFBLDB4QTgsMHg4MCwweDRFLAorICAgIDB4MjksMHg5MywweDIzLDB4NTEs
MHg5NSwweDk1LDB4MTUsMHgzNSwweEFCLDB4QTMsMHg4NywweDdBLDB4ODIsMHhFMCwweDdBLDB4
NUUsCisgICAgMHgwQSwweDkzLDB4NjcsMHg3MiwweEEwLDB4N0UsMHg1NSwweDU1LDB4QzgsMHg4
MiwweDQ2LDB4NzIsMHg3OCwweDdGLDB4N0YsMHg3NywKKyAgICAweDg3LDB4N0EsMHgyNiwweDZB
LDB4RkYsMHhBRiwweDNGLDB4MkIsMHhDOCwweDgyLDB4QzUsMHg2MSwweEEyLDB4RjgsMHg3RSww
eDVGLAorICAgIDB4MjYsMHg2QSwweEM0LDB4NjEsMHhERSwweEVBLDB4MkYsMHgzRiwweDA2LDB4
NkEsMHg4MiwweDMwLDB4NzgsMHhFMCwweEMwLDB4ODAsCisgICAgMHgwMywweDM5LDB4ODEsMHgy
OCwweDBCLDB4M0QsMHg5RiwweEJGLDB4NDQsMHg0OSwweEEyLDB4MzAsMHhBRiwweDM3LDB4QUYs
MHgyRiwKKyAgICAweDY1LDB4NDksMHhDMywweDMwLDB4QTgsMHhBQSwweEVCLDB4NzcsMHgyNCww
eDQxLDB4ODIsMHgyMCwweEU4LDB4RTIsMHhGMiwweDdBLAorICAgIDB4MjQsMHg0MSwweDgyLDB4
MjAsMHhBMywweEJGLDB4RjUsMHhFRCwweEUzLDB4MzAsMHhBMiwweDI4LDB4ODAsMHhGOCwweEVE
LDB4QjUsCisgICAgMHgyNCwweDQxLDB4QTIsMHgzMCwweDBELDB4QUYsMHhGRiwweEJGLDB4MDQs
MHgzOSwweEMyLDB4MzAsMHhCNCwweEZGLDB4RkYsMHhGRiwKKyAgICAweDg1LDB4NDksMHgwMyww
eDM5LDB4RkYsMHhFOSwweEUzLDB4N0QsMHg0NCwweDQ5LDB4RTMsMHgzOCwweDgwLDB4RTAsMHg1
QiwweEZELAorICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHg4MiwweDU3LDB4RDUsMHg1NSwweDQz
LDB4NDEsMHhDMiwweDMwLDB4QUEsMHhBOSwweEFGLDB4OEYsCisgICAgMHg4NSwweDUxLDB4MDIs
MHgzOSwweDJFLDB4M0YsMHgzRCwweDI5LDB4NjcsMHg3MiwweEM1LDB4NTksMHhCRCwweENELDB4
ODksMHhERCwKKyAgICAweDMxLDB4QzUsMHgwNiwweDYyLDB4MEQsMHgwRCwweDA1LDB4MjUsMHg1
MywweENELDB4OEMsMHg4QiwweDAyLDB4RUEsMHhGRiwweDVFLAorICAgIDB4OTAsMHhBQywweEFE
LDB4OTMsMHg3OCwweDVGLDB4NTUsMHg1NSwweEVFLDB4OUIsMHg0QiwweDgzLDB4MjIsMHgyQiww
eEVCLDB4N0UsCisgICAgMHgwRSwweDlDLDB4MkIsMHg3QiwweDMwLDB4QjgsMHhENywweDU1LDB4
RjEsMHhCQywweDRCLDB4ODMsMHgwQSwweDBBLDB4MkIsMHhCNSwKKyAgICAweDIzLDB4NTEsMHgw
MiwweDQxLDB4RjIsMHhFQywweDlFLDB4QUMsMHgyMywweDQ5LDB4MDIsMHg0OSwweDgwLDB4Q0Is
MHhFQSwweDBDLAorICAgIDB4NDMsMHg1MSwweDIzLDB4NTEsMHhBMSwweEUzLDB4OEYsMHhBNyww
eDQ0LDB4NTEsMHgwMiwweDQ5LDB4QjgsMHg2OCwweEZBLDB4NUUsCisgICAgMHgwOSwweDhCLDB4
MDMsMHg0OSwweDM1LDB4MzUsMHgyNSwweDI1LDB4RTksMHg4QSwweDQ3LDB4NzIsMHhGOCwweEY4
LDB4RkEsMHhGRSwKKyAgICAweDg3LDB4N0EsMHg2NywweDcyLDB4RkYsMHhBQSwweDgwLDB4MDAs
MHg4NywweDdBLDB4NDYsMHg3MiwweDdFLDB4N0UsMHhEOCwweDVBLAorICAgIDB4ODcsMHg3QSww
eDI2LDB4NkEsMHhBQiwweENCLDB4Q0EsMHg3QSwweDI2LDB4NzIsMHhBNCwweDYxLDB4N0MsMHhE
RSwweEI2LDB4MkYsCisgICAgMHg4NywweDdBLDB4RTUsMHg2MSwweEQ1LDB4RDUsMHg4QiwweEFB
LDB4ODcsMHg3QSwweDIzLDB4NDEsMHhFQSwweDYwLDB4QzAsMHhFQSwKKyAgICAweDIzLDB4NDEs
MHg4MSwweDI4LDB4QjcsMHhBNSwweDBELDB4MEIsMHg0NCwweDQ5LDB4RTIsMHgzOCwweEVGLDB4
NDMsMHg0RiwweDU3LAorICAgIDB4QzIsMHgzMCwweDgyLDB4MjAsMHgyMCwweEZFLDB4N0EsMHg1
RiwweEUzLDB4MzAsMHg2MSwweDIwLDB4NzgsMHhERSwweEY3LDB4RkQsCisgICAgMHhDMywweDI4
LDB4ODIsMHgyMCwweEM5LDB4QkQsMHhENSwweEI3LDB4RTMsMHgzMCwweEEyLDB4MjgsMHhBNyww
eEVCLDB4RkYsMHhCRiwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4MEYsMHhFQiwweEE4LDB4
OUUsMHgwMywweDM5LDB4QzMsMHgzMCwweERELDB4QjUsMHhGNSwweDk1LAorICAgIDB4MDMsMHgz
OSwweEMyLDB4MzAsMHhBMiwweDhBLDB4MEEsMHhBNywweDAzLDB4NDEsMHhFMiwweDMwLDB4QTIs
MHhDRSwweEJGLDB4MkYsCisgICAgMHg2NSwweDQ5LDB4RTIsMHgzOCwweEQ3LDB4RkQsMHhBRCww
eDBGLDB4NDMsMHg0OSwweEUzLDB4MzAsMHhCNiwweERGLDB4NUIsMHhFMCwKKyAgICAweDg0LDB4
NDksMHhFMiwweDM4LDB4MkQsMHg5NywweEJELDB4RkYsMHgwNiwweDYyLDB4NjMsMHg0OSwweDJE
LDB4M0YsMHhENSwweEI1LAorICAgIDB4NkYsMHhBQywweEU2LDB4NTksMHgyNSwweDM1LDB4MzUs
MHgzNSwweEQwLDB4QjQsMHhDQSwweDcyLDB4RjgsMHhGOCwweDVBLDB4NjAsCisgICAgMHhBRCww
eDhCLDB4MDcsMHg1QSwweDAwLDB4ODAsMHhGQSwweDU3LDB4NEIsMHg3QiwweDY4LDB4NUEsMHgy
MCwweEVCLDB4RkQsMHhGNSwKKyAgICAweEVELDB4OTMsMHhFQSwweDcyLDB4RDUsMHhGNSwweEI1
LDB4MEQsMHgwRSwweDlDLDB4NEIsMHg4MywweDNELDB4RkQsMHhDRiwweDA4LAorICAgIDB4MjMs
MHg0OSwweDAzLDB4NDksMHgxQiwweEEzLDB4RTgsMHg5NywweDQzLDB4NTEsMHgyMywweDUxLDB4
NzUsMHhBNSwweDZCLDB4RjgsCisgICAgMHg0MywweDUxLDB4MDMsMHg0OSwweEEyLDB4N0UsMHhE
RSwweDdGLDB4NjQsMHg1MSwweEUyLDB4NDgsMHhGRiwweEZGLDB4RkYsMHgxRiwKKyAgICAweEU4
LDB4ODIsMHgwMiwweDQ5LDB4MDUsMHgwOSwweDAzLDB4MDAsMHhDNywweDgyLDB4ODcsMHg3QSww
eDU3LDB4NUYsMHg3NywweEY4LAorICAgIDB4QTcsMHg3QSwweDY2LDB4NzIsMHhFQiwweEJBLDB4
N0EsMHgxQywweEFBLDB4OUIsMHg2NywweDcyLDB4NTUsMHhENSwweDJELDB4QzIsCisgICAgMHg0
OSwweDkzLDB4RTUsMHg2MSwweEFGLDB4RTAsMHg1QywweDU1LDB4NjcsMHg3QSwweDIzLDB4NDks
MHhBOCwweEFBLDB4NUEsMHhENywKKyAgICAweDQ2LDB4NzIsMHg0MywweDQxLDB4MDIsMHgyQSww
eDU1LDB4NTUsMHg0NywweDcyLDB4MDMsMHg0MSwweEMwLDB4RTgsMHhGNSwweEQ1LAorICAgIDB4
MjMsMHg0MSwweDgxLDB4MjgsMHhBQSwweEE4LDB4RTAsMHg3QSwweDIzLDB4MzksMHg4MSwweDIw
LDB4NjgsMHg3RiwweDU3LDB4NUQsCisgICAgMHhDMywweDI4LDB4NjEsMHgxOCwweERGLDB4QkYs
MHhCNSwweDI5LDB4MDMsMHgzOSwweDgyLDB4MjAsMHhGRCwweEFGLDB4QTMsMHgwMiwKKyAgICAw
eEUyLDB4MzAsMHg4MiwweDIwLDB4RDcsMHhGQSwweDJFLDB4QUMsMHhFMiwweDMwLDB4QTIsMHgy
OCwweEQ1LDB4REYsMHg1QywweDdBLAorICAgIDB4RTMsMHgzMCwweDgxLDB4MjgsMHgzRSwweDJC
LDB4QkYsMHhFRCwweDA0LDB4MzksMHhBMiwweDI4LDB4OEIsMHgyMiwweDNGLDB4RkQsCisgICAg
MHgyNCwweDM5LDB4QzMsMHgzMCwweDNELDB4RUEsMHhBRSwweEQ1LDB4MDMsMHgzOSwweEUyLDB4
MzAsMHhBMCwweDU0LDB4MzgsMHgzOCwKKyAgICAweDQ0LDB4NDEsMHhFMiwweDM4LDB4MEYsMHhC
RCwweEI3LDB4MTcsMHg2NCwweDQ5LDB4MDMsMHg0MSwweEUwLDB4QjAsMHhCMiwweDU4LAorICAg
IDB4NDQsMHg0MSwweEUyLDB4MzgsMHgzRiwweENBLDB4MkEsMHhGNSwweEE1LDB4NTEsMHhFMiww
eDM4LDB4MkEsMHhBRiwweDJBLDB4QkQsCisgICAgMHgwRSwweEE0LDB4QzUsMHg1OSwweDM1LDB4
MTUsMHg5NSwweDk1LDB4NTIsMHhDNSwweDZGLDB4QUMsMHg3MCwweEMyLDB4MjksMHhCNSwKKyAg
ICAweDUyLDB4QzUsMHhFQSwweDcyLDB4NUYsMHhBQSwweEEwLDB4ODAsMHg2RiwweEE0LDB4ODks
MHg2MiwweEQ1LDB4MDAsMHgwMCwweDAwLAorICAgIDB4NkYsMHhBNCwweDZCLDB4ODMsMHgyRCww
eDJBLDB4MjgsMHg4MCwweDZGLDB4QUMsMHhDRCwweDkzLDB4QjYsMHgzRSwweDNBLDB4QUEsCisg
ICAgMHg2NCwweDU5LDB4RTIsMHg0MCwweDNGLDB4QTksMHgwQSwweDAyLDB4NDMsMHg1MSwweDAy
LDB4NDksMHg4OCwweEE4LDB4NjgsMHhGOCwKKyAgICAweDIyLDB4NDksMHgwMywweDQ5LDB4RkUs
MHg1QSwweEY4LDB4N0YsMHhDQiwweEEzLDB4MDMsMHg0OSwweDk1LDB4MzUsMHgzNSwweDI1LAor
ICAgIDB4NkEsMHg5QiwweEM3LDB4ODIsMHg1RiwweDc4LDB4NzgsMHhGOCwweDhBLDB4OUIsMHg4
NiwweDdBLDB4NzcsMHg1NywweDlGLDB4MkYsCisgICAgMHhDQiwweEEzLDB4NjYsMHg3QSwweDM1
LDB4MEIsMHhFMiwweDU4LDB4OEEsMHg5QiwweEE0LDB4NTksMHg3MCwweDdFLDB4NUYsMHg1RiwK
KyAgICAweEU1LDB4NjEsMHg0MywweDQ5LDB4MEEsMHg4MiwweDYyLDB4NUMsMHg4NCwweDUxLDB4
MjQsMHg0MSwweDc4LDB4RkYsMHhGQiwweEJGLAorICAgIDB4MDYsMHg2MiwweDAzLDB4NDEsMHg1
RCwweEZELDB4QTIsMHg3OCwweEE0LDB4NTEsMHhDMiwweDM4LDB4RUYsMHhGQSwweDcwLDB4N0Ys
CisgICAgMHhFMywweDM4LDB4NjEsMHgxOCwweEM4LDB4RUEsMHhGRSwweDZFLDB4QzIsMHgzMCww
eDYxLDB4MTgsMHhERiwweDVGLDB4RDcsMHgyNSwKKyAgICAweEMyLDB4MjgsMHg4MSwweDIwLDB4
M0QsMHhGQSwweEI4LDB4QTIsMHhFMywweDMwLDB4QTIsMHgyOCwweEEwLDB4RTcsMHgwQiwweDgy
LAorICAgIDB4RTIsMHgzMCwweEEyLDB4MjgsMHhGMiwweEMyLDB4MzksMHgzRiwweEUzLDB4MzAs
MHhBMiwweDI4LDB4RDUsMHhGQSwweEYwLDB4QjgsCisgICAgMHhDMiwweDMwLDB4QTIsMHgyOCww
eEZELDB4RkEsMHg5NiwweEE0LDB4RTIsMHgzMCwweEEyLDB4MjgsMHhBRiwweEI1LDB4RkYsMHhG
RiwKKyAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4MzUsMHhGRiwweEU3LDB4QjUsMHgyMywweDM5
LDB4QzIsMHgzMCwweEIwLDB4QjIsMHhGOSwweERELAorICAgIDB4NDQsMHg0MSwweEMyLDB4MzAs
MHg5RiwweDNGLDB4QUYsMHhCRiwweDg1LDB4NTEsMHhFMywweDMwLDB4NzgsMHg3OCwweDVGLDB4
RDUsCisgICAgMHgyNCwweDM5LDB4QzMsMHgyOCwweEEyLDB4RUIsMHhFQiwweEJFLDB4QTUsMHg1
MSwweDAzLDB4MzksMHhCRCwweDBELDB4QTUsMHhGNSwKKyAgICAweDg4LDB4NkEsMHg2NCwweDQ5
LDB4MzUsMHgzRiwweDM3LDB4M0QsMHhEMCwweEI0LDB4QUQsMHg5MywweDJCLDB4QkYsMHhGNSww
eDU1LAorICAgIDB4MzEsMHhCRCwweEVELDB4OUIsMHg4MCwweEFCLDB4QUYsMHhENSwweEYwLDB4
QjQsMHg0RiwweEE0LDB4REYsMHhGRSwweEY4LDB4QUEsCisgICAgMHhCMCwweEFDLDB4NEUsMHhB
NCwweEZGLDB4RkYsMHg1RiwweEUyLDB4NkYsMHhBQywweDBFLDB4OUMsMHhBOCwweEEwLDB4RkEs
MHg3QSwKKyAgICAweDY0LDB4NTEsMHgyMywweDQ5LDB4MEIsMHg4QiwweEVGLDB4REQsMHg0Myww
eDUxLDB4MDIsMHg0OSwweEZDLDB4NUUsMHg1NywweDU3LAorICAgIDB4MjMsMHg0OSwweEUyLDB4
NDAsMHhFQSwweEJFLDB4QkIsMHhBNywweDZBLDB4OTMsMHgyMywweDQ5LDB4MDUsMHgwRCwweDBE
LDB4MDksCisgICAgMHg2QSwweDlCLDB4MDgsMHg4QiwweDVBLDB4RkUsMHhBQSwweDAyLDB4Q0Is
MHhBMywweDY2LDB4NzIsMHgwMiwweEMyLDB4NzIsMHg1RSwKKyAgICAweDI5LDB4OTMsMHgwNSww
eDYyLDB4RkMsMHhERiwweEZGLDB4N0YsMHg0NiwweDcyLDB4NDMsMHg0OSwweEY4LDB4N0MsMHg1
NywweDU1LAorICAgIDB4ODQsMHg1MSwweDQ0LDB4NDksMHhGRSwweEIzLDB4OTgsMHhFOCwweDY0
LDB4NTEsMHgwMywweDM5LDB4M0EsMHhGQSwweDdFLDB4N0EsCisgICAgMHhDNSwweDYxLDB4RTIs
MHg0MCwweDYwLDB4RTAsMHhFQiwweEU1LDB4MDMsMHg0MSwweEMyLDB4MzAsMHhFOCwweDdDLDB4
RkUsMHg3RSwKKyAgICAweEUyLDB4MzAsMHg2MSwweDE4LDB4NkEsMHg1OCwweDdBLDB4NTcsMHgy
NCwweDM5LDB4NjEsMHgxOCwweEJELDB4QUQsMHgwQiwweEZGLAorICAgIDB4MjMsMHgzOSwweEEy
LDB4MjgsMHhGRiwweDgyLDB4QTgsMHhCNSwweDAzLDB4MzksMHhBMiwweDI4LDB4REYsMHhGRiww
eEFBLDB4QjgsCisgICAgMHgwMywweDM5LDB4QTIsMHgyOCwweEFCLDB4OEEsMHhBMywweEVGLDB4
MDMsMHgzMSwweDgyLDB4MjAsMHg4OCwweEE4LDB4QkEsMHhENywKKyAgICAweEUzLDB4MzAsMHhB
MiwweDI4LDB4NTYsMHg3RSwweDgwLDB4ODIsMHhFMywweDMwLDB4ODEsMHgyOCwweEZBLDB4NUYs
MHhGRSwweDBBLAorICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHhGRCwweEJELDB4QkIsMHhGOCww
eEUyLDB4MzAsMHhBMSwweDI4LDB4OEIsMHhFMiwweEJBLDB4RkYsCisgICAgMHgwMywweDMxLDB4
QzIsMHgyOCwweEI5LDB4MEQsMHg4QSwweEVCLDB4MDMsMHgzMSwweEMzLDB4MzAsMHhGQiwweEY4
LDB4RDYsMHg3RCwKKyAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4MUYsMHhBRiwweDI3LDB4MkUs
MHg2NCwweDQ5LDB4QzIsMHgyOCwweDJGLDB4MEYsMHhBRiwweDI1LAorICAgIDB4NEIsMHg4Qiww
eDY0LDB4NDksMHhCRCwweDM1LDB4MjUsMHgyRCwweEVFLDB4OUIsMHg2QiwweDhCLDB4RkEsMHhG
QSwweDYwLDB4NkEsCisgICAgMHhFRCwweDlCLDB4MkEsMHg4MywweDAyLDB4MkIsMHgyRiwweEI3
LDB4NkYsMHhBNCwweENELDB4OTMsMHgwMiwweEY3LDB4RkYsMHg1NSwKKyAgICAweDZGLDB4QUMs
MHhDRCwweDkzLDB4QzgsMHg3RiwweDU1LDB4NTUsMHgyRSwweDlDLDB4QUMsMHg5MywweDJBLDB4
QUYsMHhCNSwweEQ1LAorICAgIDB4MjMsMHg0OSwweDAyLDB4NDEsMHhFMCwweEVFLDB4RUYsMHhE
RiwweDIzLDB4NDksMHhFMiwweDQwLDB4RkEsMHg3NiwweEZGLDB4QUUsCisgICAgMHgyMywweDQ5
LDB4RTIsMHg0MCwweEZGLDB4QUQsMHg4RiwweEFBLDB4NDksMHg5MywweDAzLDB4NDksMHgwMSww
eDA5LDB4RjUsMHhENSwKKyAgICAweDI5LDB4OTMsMHg4NCwweDU5LDB4MDAsMHhBOCwweEVBLDB4
N0YsMHhDOCwweDgyLDB4MDMsMHg0MSwweEE4LDB4QUEsMHhGRiwweEQ1LAorICAgIDB4NjcsMHg3
MiwweDQzLDB4NTEsMHg2MCwweDdFLDB4NTcsMHhERiwweDg1LDB4NTEsMHgyMiwweDQxLDB4Mzcs
MHhCNywweDAzLDB4QTIsCisgICAgMHg4NCwweDQ5LDB4NDQsMHg0OSwweDYyLDB4N0EsMHg3RSww
eEQ3LDB4RTYsMHg2MSwweDIzLDB4NDEsMHg1NywweDU1LDB4QkQsMHg4MiwKKyAgICAweEM0LDB4
NTksMHgwMywweDM5LDB4NTUsMHhENSwweDdGLDB4NUMsMHgyMywweDQxLDB4QTIsMHgyOCwweDY4
LDB4NkUsMHg2QSwweEVDLAorICAgIDB4MDMsMHgzMSwweDYxLDB4MjAsMHhENSwweEY3LDB4RUIs
MHhBQiwweDgxLDB4MjgsMHhDMiwweDIwLDB4RTgsMHhBQSwweDhGLDB4QUIsCisgICAgMHhFMyww
eDMwLDB4ODEsMHgyOCwweDk3LDB4RDUsMHhERiwweDcwLDB4MjMsMHg0MSwweEExLDB4MjgsMHg3
RSwweEZCLDB4RUIsMHg4MywKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4MjksMHhGQiwweERG
LDB4MzcsMHgwMywweDM5LDB4ODEsMHgyOCwweERFLDB4RkYsMHhGNywweEUwLAorICAgIDB4MDMs
MHgzMSwweEEyLDB4MjgsMHhFRiwweEI5LDB4QTksMHg4OSwweDAzLDB4MzksMHhDMiwweDMwLDB4
RkQsMHg2OSwweEVFLDB4NzUsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEYzLDB4RUIsMHgw
RCwweDhELDB4RTMsMHgzMCwweEMyLDB4MjgsMHg3MSwweDRCLDB4RUUsMHg1NCwKKyAgICAweEUz
LDB4MzAsMHhBMSwweDI4LDB4MDIsMHg4NywweDhGLDB4QkYsMHgwMywweDMxLDB4QzIsMHgyOCww
eEZCLDB4QjcsMHhCQSwweEVCLAorICAgIDB4MjMsMHgzOSwweEUyLDB4MzAsMHhCRCwweERGLDB4
NTcsMHhERCwweDg0LDB4NTEsMHhFMiwweDMwLDB4MzcsMHgyRCwweDNCLDB4OEIsCisgICAgMHgy
RCwweEE0LDB4ODQsMHg1MSwweEE1LDB4RUQsMHgwOSwweDBCLDB4OEYsMHhCNCwweEE4LDB4NzIs
MHhGRiwweDU1LDB4RUEsMHgwMCwKKyAgICAweENELDB4OUIsMHg2NywweDYyLDB4QkYsMHg1NSww
eEZGLDB4RjgsMHg0QiwweDgzLDB4NDcsMHg2MiwweEJDLDB4NTcsMHhGRiwweEZGLAorICAgIDB4
QUMsMHg4QiwweDY3LDB4NjIsMHgwMCwweDJELDB4QjUsMHg1NywweEFELDB4OTMsMHgwOSwweDdC
LDB4MDAsMHgyMiwweEFBLDB4QTksCisgICAgMHgwMiwweDQxLDB4RTMsMHg0MCwweDMwLDB4QUUs
MHgwMCwweEIwLDB4MjMsMHg0OSwweEUyLDB4NDAsMHhBRiwweEFBLDB4MjIsMHhFNiwKKyAgICAw
eDIzLDB4NDEsMHhFMiwweDQwLDB4MEEsMHhFMCwweEUwLDB4OUMsMHg0NCwweDQ5LDB4RTIsMHg0
MCwweDM2LDB4QkQsMHhGRiwweEY1LAorICAgIDB4RTUsMHg2MSwweDAyLDB4NDEsMHhFMCwweDVG
LDB4NTUsMHg1NSwweDA2LDB4NjIsMHhFMiwweDQwLDB4QjUsMHgzNSwweDM1LDB4MzUsCisgICAg
MHhFNSwweDYxLDB4ODQsMHg1MSwweDVFLDB4RkUsMHg3OCwweEUwLDB4QTUsMHg1MSwweDIzLDB4
NDEsMHhFOCwweEU4LDB4RUYsMHhENywKKyAgICAweDI2LDB4NkEsMHg0NCwweDQ5LDB4MzUsMHgw
NSwweDI1LDB4RDUsMHhFNCwweDYxLDB4ODIsMHgzMCwweEEwLDB4RjgsMHg1QywweDU2LAorICAg
IDB4ODQsMHg1MSwweEMyLDB4MzAsMHg3OCwweERBLDB4RkYsMHhGNSwweDAzLDB4MzksMHg4MSww
eDIwLDB4N0EsMHhGQSwweEY4LDB4NUYsCisgICAgMHhDMiwweDI4LDB4ODIsMHgyOCwweDgxLDB4
ODMsMHhBMiwweDhCLDB4NjQsMHg0OSwweEEyLDB4MjgsMHhBRCwweDg5LDB4OEIsMHg3QiwKKyAg
ICAweDI0LDB4NDEsMHg4MSwweDI4LDB4ODgsMHhBOCwweEFBLDB4RkQsMHg0NCwweDQ5LDB4RTIs
MHgzOCwweDBELDB4MkYsMHhENywweERELAorICAgIDB4NDQsMHg0MSwweEExLDB4MjgsMHhERSww
eDVDLDB4N0EsMHhGQSwweDA0LDB4MzksMHg4MSwweDI4LDB4MDAsMHhBMywweEZGLDB4RDcsCisg
ICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEMwLDB4RjUsMHhGNywweEFELDB4RTMsMHgzMCwweEEy
LDB4MjgsMHgwRiwweEFGLDB4NTcsMHg3OCwKKyAgICAweDAzLDB4MzEsMHhBMiwweDI4LDB4MkYs
MHhGRiwweEFELDB4QUYsMHgwMywweDMxLDB4QzIsMHgyOCwweDVGLDB4N0YsMHhENSwweEUzLAor
ICAgIDB4MjMsMHgzOSwweEMyLDB4MjgsMHhENSwweEZELDB4QUYsMHhCRiwweDAzLDB4MzksMHhD
MiwweDMwLDB4OEIsMHhCRiwweEE2LDB4QUEsCisgICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEZG
LDB4Q0EsMHhBQiwweDJBLDB4NEEsMHg4QiwweDAzLDB4MzksMHhGNSwweEI1LDB4QjUsMHgzNSwK
KyAgICAweDMxLDB4QzUsMHg0QSwweDgzLDB4QTksMHg4MiwweDAyLDB4MDAsMHgxMCwweEM1LDB4
NkUsMHhBQywweEJGLDB4RjcsMHg3QywweEEwLAorICAgIDB4NkUsMHhBQywweDBBLDB4ODMsMHg1
QywweDcwLDB4ODAsMHg4MCwweDZCLDB4OTMsMHg2NywweDZBLDB4RDUsMHhGNywweERFLDB4RTgs
CisgICAgMHg0QSwweDgzLDB4NDcsMHg2MiwweDdFLDB4RUEsMHhBQSwweDAyLDB4NEIsMHg4Myww
eEE1LDB4NDksMHgwRiwweERGLDB4N0UsMHhGOCwKKyAgICAweDIzLDB4NDksMHhFMywweDQwLDB4
QkYsMHhBQiwweEFCLDB4QkUsMHgyMywweDQ5LDB4MDMsMHg0MSwweEY1LDB4QkYsMHg0RiwweDc3
LAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHgyOCwweDJDLDB4QUUsMHhGRSwweDAzLDB4NDEs
MHhFMiwweDM4LDB4QTIsMHhBRiwweDc5LDB4NjUsCisgICAgMHgwMiwweDQxLDB4RTIsMHgzOCww
eDMyLDB4MkIsMHhGRCwweEFGLDB4MjYsMHg2QSwweEUyLDB4NDAsMHgzNSwweDM1LDB4MzUsMHgx
NSwKKyAgICAweDI2LDB4NkEsMHgyMywweDQxLDB4RTgsMHg2OCwweDY4LDB4NjgsMHg0NCwweDQx
LDB4MDMsMHgzOSwweEEyLDB4MzUsMHg3RCwweDVELAorICAgIDB4NDQsMHg0MSwweEUyLDB4MzAs
MHhCQSwweDY4LDB4NEEsMHhCRiwweEE0LDB4NTEsMHhBMiwweDI4LDB4NzAsMHg3QiwweDU3LDB4
N0YsCisgICAgMHhDMiwweDI4LDB4ODEsMHgyMCwweDgzLDB4QzIsMHg2MCwweDBBLDB4RTMsMHgy
OCwweDYxLDB4MjAsMHhENywweEY1LDB4QUIsMHgyMiwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4
LDB4RkYsMHhGOSwweEFCLDB4OEEsMHgwMywweDMxLDB4QTIsMHgyOCwweDczLDB4NTcsMHg1Riww
eEZFLAorICAgIDB4QzIsMHgyOCwweDgxLDB4MjAsMHg1QiwweDc4LDB4QkUsMHhBRiwweDAzLDB4
NDEsMHg4MSwweDIwLDB4MEIsMHhBRCwweEZGLDB4NTcsCisgICAgMHg0NCwweDQxLDB4QTIsMHgy
OCwweEZBLDB4RUEsMHg4QiwweEU1LDB4RTIsMHgzMCwweDgxLDB4MjgsMHhFRSwweDNCLDB4RkQs
MHhBOCwKKyAgICAweDAzLDB4MzksMHg4MSwweDIwLDB4RjUsMHhERSwweEFGLDB4MkEsMHgyNCww
eDQxLDB4QTIsMHgyOCwweDVGLDB4NUYsMHg1RiwweEUwLAorICAgIDB4MDMsMHgzOSwweDgyLDB4
MjgsMHhGRiwweEJELDB4RTMsMHhFQSwweDAzLDB4MzEsMHg4MSwweDI4LDB4QTIsMHhCMywweEZG
LDB4REYsCisgICAgMHhFMiwweDMwLDB4QTIsMHgyOCwweDI4LDB4QTgsMHg5NSwweERGLDB4MjMs
MHgzOSwweEMyLDB4MzAsMHhBQiwweDIzLDB4RjcsMHhGRiwKKyAgICAweDY1LDB4NTEsMHgwMyww
eDM5LDB4RDcsMHhCRCwweEJELDB4MzksMHg2QywweDkzLDB4ODUsMHg1MSwweDM1LDB4QjUsMHhB
RCwweEFELAorICAgIDB4RjAsMHhCQywweDBBLDB4ODMsMHgwMiwweDJELDB4RDUsMHg1NSwweEYw
LDB4QkMsMHhFOSwweDdBLDB4MDAsMHgwMCwweDAzLDB4RkQsCisgICAgMHgxMCwweEM1LDB4NkUs
MHhBQywweDdBLDB4RUEsMHhBMiwweDhCLDB4NkUsMHhBQywweDZCLDB4OEIsMHg3RSwweEFBLDB4
QTgsMHg4MCwKKyAgICAweDJELDB4QTQsMHgwQSwweDdCLDB4NzUsMHhFOCwweDAwLDB4MDAsMHg0
RSwweEE0LDB4NjgsMHg2MiwweDdGLDB4RkEsMHg4MCwweDAwLAorICAgIDB4MDMsMHg0MSwweEUy
LDB4NDAsMHgzNCwweDI3LDB4RjgsMHhCQiwweDIzLDB4NDksMHhFMiwweDM4LDB4RUEsMHg3RSww
eDdGLDB4NTUsCisgICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEZGLDB4QUEsMHhBRiwweEFCLDB4
MDMsMHg0MSwweEMyLDB4MzgsMHhBMywweEJCLDB4RkUsMHhCQSwKKyAgICAweDAzLDB4NDEsMHhF
MiwweDM4LDB4RkEsMHg1RiwweEY1LDB4RkQsMHgwNSwweDYyLDB4RTIsMHg0MCwweDE1LDB4MTUs
MHgxNSwweDk1LAorICAgIDB4NDYsMHg2QSwweDAzLDB4MzksMHg2OCwweDYwLDB4NjAsMHg2OCww
eDAzLDB4MzksMHhFMiwweDMwLDB4MDIsMHhBQiwweDI1LDB4M0IsCisgICAgMHgyMywweDM5LDB4
RTMsMHgzOCwweDhBLDB4MkIsMHg4QiwweEJGLDB4NDQsMHg0MSwweEUzLDB4MzAsMHg2RiwweEZB
LDB4QTIsMHhBQSwKKyAgICAweDQ0LDB4MzksMHhFMywweDMwLDB4NTUsMHhCRiwweEZDLDB4RkEs
MHgyNCwweDQxLDB4RTMsMHgzMCwweDdGLDB4RkYsMHhGQSwweDNCLAorICAgIDB4MjMsMHgzOSww
eEUzLDB4MzAsMHg1NSwweDdGLDB4RkUsMHhGQSwweDAzLDB4MzEsMHhDMywweDI4LDB4RkYsMHhG
RiwweDJBLDB4Q0EsCisgICAgMHgwMywweDMxLDB4QTIsMHgyMCwweDU3LDB4N0UsMHhBQSwweEFB
LDB4RTMsMHgyOCwweDgyLDB4MjAsMHg1RCwweEY2LDB4QUEsMHhBMiwKKyAgICAweDAzLDB4Mzks
MHg4MiwweDIwLDB4M0QsMHhCRCwweDc3LDB4N0YsMHhFMywweDMwLDB4ODIsMHgyMCwweDAyLDB4
MEEsMHgyQiwweDM1LAorICAgIDB4MjMsMHg0MSwweEEyLDB4MzAsMHhBQSwweERFLDB4RkUsMHhG
RSwweDQ0LDB4NDEsMHhDMiwweDMwLDB4RTAsMHhDQSwweDc1LDB4REQsCisgICAgMHhFMiwweDMw
LDB4QTIsMHgzMCwweDhGLDB4QUYsMHhBOSwweDIyLDB4MjIsMHgzOSwweEEyLDB4MjgsMHg1NSww
eEY1LDB4RkQsMHgzRiwKKyAgICAweDQ0LDB4NDEsMHhBMSwweDI4LDB4RDcsMHhERCwweEZFLDB4
QTIsMHg0MywweDQxLDB4RTMsMHgzMCwweEJCLDB4MzUsMHhBOSwweDhCLAorICAgIDB4NDcsMHg2
MiwweDIzLDB4NDEsMHhGNSwweDk1LDB4MjUsMHgyQiwweEU5LDB4N0EsMHhDNSwweDU5LDB4MDks
MHgyQiwweDhBLDB4MkEsCisgICAgMHgwQSwweDgzLDB4QTksMHg3MiwweDJBLDB4MkIsMHhGQiww
eEZGLDB4MkIsMHg4MywweEM5LDB4N0EsMHgyRiwweDI4LDB4RUIsMHhGRiwKKyAgICAweENGLDB4
QjQsMHgwQSwweDgzLDB4MkQsMHhERCwweDU1LDB4NTUsMHg2RSwweEFDLDB4MEEsMHg4MywweDAw
LDB4MEEsMHhCNSwweDU1LAorICAgIDB4NkUsMHhBQywweDRBLDB4OEIsMHgwMCwweDAwLDB4MDAs
MHgyNSwweEFGLDB4QjQsMHg0RSwweEFDLDB4N0YsMHhBQiwweDBBLDB4MEIsCisgICAgMHgwMyww
eDQxLDB4QzIsMHgzOCwweEEwLDB4QzAsMHhFOCwweEZFLDB4MDMsMHg0MSwweEUyLDB4MzgsMHhE
NSwweEFELDB4RDEsMHg3OSwKKyAgICAweDAyLDB4NDEsMHhFMiwweDM4LDB4N0QsMHg1RCwweDU1
LDB4RjUsMHgwMywweDQxLDB4RTIsMHgzOCwweDc3LDB4NTcsMHg1RCwweEQ3LAorICAgIDB4RTIs
MHgzOCwweEMyLDB4MzgsMHgwMCwweDAwLDB4MDAsMHhBOCwweDA2LDB4NjIsMHhFMiwweDM4LDB4
OTUsMHgxNSwweDk1LDB4MTUsCisgICAgMHg2NywweDcyLDB4MDMsMHg0MSwweDY4LDB4NjgsMHg3
OCwweDc4LDB4MDMsMHgzOSwweEUyLDB4MzAsMHg1RSwweEVFLDB4REYsMHhGNywKKyAgICAweDAy
LDB4MzksMHhFMywweDMwLDB4REYsMHg5OSwweDU1LDB4NzUsMHgyMywweDM5LDB4RTMsMHgzMCww
eDBCLDB4QTcsMHhGRiwweEQ1LAorICAgIDB4MjQsMHgzOSwweEUzLDB4MzgsMHg2OCwweEJCLDB4
RkYsMHg1RiwweDI0LDB4NDEsMHhFMywweDMwLDB4RkYsMHgyOSwweDhGLDB4QUUsCisgICAgMHgy
NCwweDQxLDB4MDMsMHgzOSwweDcxLDB4NTcsMHg3QSwweDVDLDB4MjQsMHgzOSwweEUyLDB4MzAs
MHhGRiwweEZBLDB4QkQsMHhBRSwKKyAgICAweDAzLDB4MzEsMHhFMywweDMwLDB4NjAsMHhBRSww
eDJFLDB4MDMsMHgwMywweDMxLDB4QzIsMHgyOCwweEZGLDB4RUIsMHhDOCwweDAwLAorICAgIDB4
MDMsMHgzMSwweEEyLDB4MjAsMHg3RSwweEZCLDB4QkEsMHhBOCwweEUyLDB4MjgsMHhBMiwweDI4
LDB4NTUsMHg2NywweDczLDB4QUEsCisgICAgMHgwMywweDMxLDB4ODEsMHgyMCwweEEyLDB4QUQs
MHhERiwweDdGLDB4MDMsMHgzOSwweDgyLDB4MjAsMHhBMiwweEE4LDB4MEIsMHhGNSwKKyAgICAw
eDAzLDB4MzEsMHhDMiwweDMwLDB4RjcsMHgyRSwweDgyLDB4QTksMHgyMywweDM5LDB4QzIsMHgy
OCwweEI5LDB4QTksMHhBRCwweDJGLAorICAgIDB4MjMsMHg0MSwweEMyLDB4MjgsMHhBMCwweEY4
LDB4REMsMHhGRSwweEE1LDB4NTEsMHhDMiwweDI4LDB4RkYsMHhCNywweDNELDB4MkYsCisgICAg
MHg2OCwweDZBLDB4QzUsMHg1MSwweEJELDB4M0QsMHhBOSwweEJGLDB4QzksMHg3MiwweDQ4LDB4
NkEsMHhBQiwweEFCLDB4QUYsMHgzRCwKKyAgICAweEU5LDB4N0EsMHg4OSwweDcyLDB4OEYsMHhG
RiwweEI1LDB4QkIsMHhFQSwweDgyLDB4QTksMHg3QSwweDNCLDB4QjksMHhGQiwweEY3LAorICAg
IDB4MEEsMHg4MywweEM5LDB4NzIsMHgzQSwweEJGLDB4RTksMHhBQiwweDBBLDB4ODMsMHhDOSww
eDdBLDB4QTIsMHgwRSwweEY3LDB4REEsCisgICAgMHg0QiwweDhCLDB4RUEsMHg3QSwweDJGLDB4
NUQsMHhGRCwweDU1LDB4OEYsMHhBQywweDBBLDB4ODMsMHgwQiwweEJELDB4NTUsMHg1NSwKKyAg
ICAweDAzLDB4MzksMHhDMiwweDM4LDB4RTcsMHhCRiwweEVCLDB4RUIsMHgwMywweDQxLDB4RTIs
MHgzOCwweDVCLDB4N0YsMHg1NSwweEQ1LAorICAgIDB4MjIsMHgzOSwweEMyLDB4MzgsMHhGNyww
eERELDB4RjYsMHhGRiwweEUyLDB4MzgsMHhDMiwweDM4LDB4QUEsMHhFQSwweDAyLDB4MEEsCisg
ICAgMHhFMiwweDM4LDB4QzIsMHgzOCwweDgwLDB4QzAsMHhEQSwweDJBLDB4ODQsMHg1MSwweEMy
LDB4MzAsMHgzNSwweDk1LDB4RDcsMHg1NywKKyAgICAweDI2LDB4NkEsMHgwMywweDM5LDB4Nzgs
MHg3OCwweDdBLDB4NjgsMHgwMywweDM5LDB4RTMsMHgzMCwweDU3LDB4NTYsMHg1QSwweEJELAor
ICAgIDB4RTIsMHgzMCwweEMzLDB4MzAsMHgwRiwweDIzLDB4MDMsMHg4MiwweDAzLDB4MzEsMHhF
MywweDMwLDB4REQsMHg5NywweEY5LDB4NTUsCisgICAgMHgwMywweDMxLDB4QTIsMHgzMCwweDgy
LDB4MkEsMHhBMiwweENBLDB4MDMsMHgzOSwweEMzLDB4MzAsMHgwQSwweEFFLDB4MkEsMHgyQSwK
KyAgICAweDIzLDB4MzksMHhFMywweDMwLDB4ODIsMHhBRiwweEFBLDB4RjcsMHhFMywweDM4LDB4
MjQsMHgzMSwweEFCLDB4RUIsMHhFRSwweENBLAorICAgIDB4MjMsMHgzOSwweEUzLDB4MzgsMHhG
RiwweDJFLDB4QUUsMHhGRSwweDIzLDB4MzksMHhFMiwweDMwLDB4RkEsMHg4RiwweDdFLDB4RTgs
CisgICAgMHgyMywweDM5LDB4RTMsMHgzMCwweDdGLDB4QTgsMHhBQSwweEJGLDB4MjMsMHgzOSww
eEMyLDB4MjgsMHhGNywweEJBLDB4RUEsMHg4QSwKKyAgICAweDAzLDB4MzEsMHhBMiwweDIwLDB4
N0YsMHhCQSwweDg4LDB4MDAsMHgwMywweDMxLDB4ODEsMHgyMCwweEQ3LDB4RkUsMHhBQSwweDA4
LAorICAgIDB4RTMsMHgzMCwweDgyLDB4MjAsMHgyRCwweEZGLDB4QUUsMHgwMCwweDI0LDB4Mzks
MHhBMiwweDIwLDB4MkYsMHhGNSwweEJGLDB4MkEsCisgICAgMHg2NSwweDQxLDB4QzIsMHgyOCww
eEY3LDB4RjUsMHhBRiwweDJFLDB4MjcsMHg2MiwweDAzLDB4MzEsMHhBRCwweDJCLDB4MkEsMHgw
MiwKKyAgICAweDY4LDB4NkEsMHhFNiwweDU5LDB4QkQsMHhBRCwweDJELDB4MEYsMHhDOSwweDcy
LDB4NDgsMHg2QSwweEJGLDB4QkEsMHg4QiwweEI3LAorICAgIDB4QzksMHg3MiwweDg4LDB4NzIs
MHhBQSwweEZGLDB4QkUsMHg2RCwweEM5LDB4N0EsMHhBOCwweDcyLDB4MjgsMHg4MSwweDhGLDB4
N0IsCisgICAgMHhDOSwweDdBLDB4QTksMHg3MiwweEQwLDB4NkIsMHgyMCwweDAyLDB4RTksMHg3
QSwweEE5LDB4NzIsMHhBQSwweEI2LDB4MkQsMHhCQSwKKyAgICAweDBBLDB4ODMsMHhBOSwweDcy
LDB4MkEsMHhCNywweEY3LDB4RkYsMHgwQSwweDgzLDB4QzksMHg3QSwweDhCLDB4OEIsMHhBNSww
eDlCLAorICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhBRSwweEFFLDB4RUIsMHhGQiwweDAzLDB4
NDEsMHhDMiwweDM4LDB4RkIsMHhFQSwweEJCLDB4REUsCisgICAgMHhFMiwweDM4LDB4QzIsMHgz
OCwweDgwLDB4MjYsMHhBQiwweDMyLDB4RTIsMHgzOCwweEMyLDB4MzgsMHg4QSwweEUwLDB4QjAs
MHhCMCwKKyAgICAweEUyLDB4MzgsMHhBMiwweDMwLDB4MDgsMHgyQSwweDYyLDB4RkMsMHhFNSww
eDU5LDB4QzIsMHgzOCwweDk1LDB4MTUsMHg5NSwweDU1LAorICAgIDB4QTgsMHg3MiwweEUzLDB4
MzgsMHg3OCwweDc4LDB4NUUsMHg1NSwweDAzLDB4MzksMHhFMywweDMwLDB4RjYsMHhENywweEZD
LDB4RDUsCisgICAgMHgwMywweDMxLDB4RTMsMHgzMCwweDdELDB4RkIsMHhENywweDU1LDB4RTMs
MHgzMCwweEMyLDB4MjgsMHgyMCwweDJBLDB4QjIsMHgwQiwKKyAgICAweDAzLDB4MzEsMHhFMyww
eDMwLDB4NTUsMHg1NSwweEI1LDB4RUQsMHgwMywweDMxLDB4QzIsMHgzMCwweEFBLDB4RjcsMHhB
RSwweEJBLAorICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHgyRSwweDhCLDB4QkYsMHgzRSwweDAz
LDB4MzEsMHhDMywweDMwLDB4OUEsMHhBOCwweEFCLDB4QUEsCisgICAgMHhFMywweDM4LDB4MjQs
MHgzMSwweEFBLDB4QUEsMHhFRSwweEFBLDB4MjQsMHgzOSwweEUzLDB4MzAsMHhGQiwweEVFLDB4
QUYsMHhFQiwKKyAgICAweDI0LDB4MzksMHgwMywweDM5LDB4NTcsMHg3NSwweERELDB4RDUsMHgy
NCwweDM5LDB4RTIsMHgzMCwweEEzLDB4RjYsMHhBOCwweDBBLAorICAgIDB4MDMsMHgzOSwweDY0
LDB4MzEsMHhBQSwweEE4LDB4OEEsMHgyQSwweDY0LDB4NDEsMHgwMywweDM5LDB4NTcsMHhGRiww
eEFGLDB4M0QsCisgICAgMHg4NSwweDQ5LDB4MDMsMHgzMSwweDU1LDB4REYsMHhBQiwweDA4LDB4
QzYsMHg1MSwweDAzLDB4MzEsMHg1NSwweEZELDB4QkIsMHgyMiwKKyAgICAweDA3LDB4NjIsMHg0
NCwweDQxLDB4OTUsMHhBRCwweDBCLDB4MDAsMHg0NywweDYyLDB4RTYsMHg1OSwweDk1LDB4QUQs
MHgwRSwweDgyLAorICAgIDB4ODgsMHg3MiwweDI3LDB4NjIsMHhCRCwweDJGLDB4MkYsMHg4Riww
eEE4LDB4NzIsMHg0OCwweDYyLDB4QkYsMHhBRSwweDNFLDB4MjcsCisgICAgMHhDOSwweDcyLDB4
ODgsMHg2QSwweEI1LDB4OUQsMHhFRCwweEYyLDB4QTksMHg3MiwweDY4LDB4NkEsMHhBMCwweDIw
LDB4QTgsMHg3QywKKyAgICAweEM5LDB4NzIsMHg4OSwweDcyLDB4MEUsMHhGRSwweEJGLDB4MkQs
MHhDOSwweDdBLDB4ODgsMHg2QSwweDAyLDB4MkEsMHhGRSwweDYzLAorICAgIDB4RUEsMHg3QSww
eEE5LDB4NzIsMHgyRiwweEUyLDB4N0QsMHhGNSwweDBBLDB4N0IsMHhBOSwweDcyLDB4QjIsMHhB
QiwweEVELDB4QkYsCit9OworCitzdGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVsXzNfd2lkdGggPSA2
NDsKK3N0YXRpYyBjb25zdCBzaXplX3QgcGl4ZWxfM19oZWlnaHQgPSA2NDsKK3N0YXRpYyBjb25z
dCBzaXplX3QgcGl4ZWxfM19zaXplID0gMjA0ODsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy
IHBpeGVsXzNfZGF0YVsyMDQ4XSA9Cit7CisgICAgMHgyNiwweDVBLDB4NDMsMHg0MSwweEZFLDB4
N0IsMHhGQSwweEI0LDB4MDUsMHg1MiwweDIzLDB4MzksMHhGRiwweEZGLDB4NEYsMHhGRSwKKyAg
ICAweEE1LDB4NDksMHg0MywweDM5LDB4REIsMHg2NCwweDVFLDB4OEIsMHgyNiwweDZBLDB4NDQs
MHg0MSwweEZGLDB4N0YsMHg2OSwweDAzLAorICAgIDB4MkEsMHg4MywweDQ0LDB4NDEsMHg1NSww
eDc3LDB4NTUsMHgwMiwweDZFLDB4QTQsMHg4NCwweDQ5LDB4NTUsMHg1NSwweDU1LDB4MEEsCisg
ICAgMHg1MiwweEM1LDB4QTUsMHg0OSwweDU1LDB4NTUsMHg1NSwweDAwLDB4RjQsMHhFNSwweEM1
LDB4NTEsMHg3NSwweDU1LDB4NTUsMHgzOCwKKyAgICAweDk3LDB4RUUsMHg2NCwweDQ5LDB4NUQs
MHg1NSwweEZGLDB4MDAsMHhCNiwweEVFLDB4ODQsMHg0OSwweDU1LDB4NTUsMHhCQiwweDAwLAor
ICAgIDB4NzUsMHhFRSwweDY0LDB4NDksMHgwRCwweDM1LDB4MEEsMHgwMCwweEQ3LDB4RjYsMHgz
NCwweEU2LDB4QTIsMHg2QywweDlFLDB4MjcsCisgICAgMHhGNywweEY2LDB4NTUsMHhFNiwweDAy
LDB4RUQsMHhENywweEJBLDB4MzgsMHhGRiwweDc2LDB4RUUsMHhBQSwweEFCLDB4QTcsMHhBQiwK
KyAgICAweEQ3LDB4RjYsMHgzNCwweEU2LDB4NjAsMHhFMCwweEY4LDB4NTAsMHgxNCwweERFLDB4
OTIsMHhENSwweEEyLDB4MDEsMHgwMSwweDgzLAorICAgIDB4QjYsMHhFRSwweDhCLDB4OEIsMHg1
NywweDAwLDB4MDAsMHgwMCwweEI2LDB4RUUsMHhFRCwweDlCLDB4RjUsMHgwMCwweDAwLDB4MDAs
CisgICAgMHhCNiwweEY2LDB4NTEsMHhDNSwweEY1LDB4MDAsMHgwMCwweDAwLDB4QjMsMHhENSww
eEM1LDB4NjksMHhENCwweDU0LDB4NTQsMHg1NiwKKyAgICAweEI2LDB4RjYsMHhFNSwweDY5LDB4
MDIsMHgwMywweDBELDB4MDUsMHhENiwweEY2LDB4QjYsMHhGNiwweEQ1LDB4MTUsMHgzNywweEFF
LAorICAgIDB4RDcsMHhGNiwweDQ2LDB4N0EsMHgwMCwweDAwLDB4QzAsMHg3MCwweEY3LDB4RkUs
MHg2NywweDdBLDB4OTYsMHgxNywweDM1LDB4MzUsCisgICAgMHgxOCwweEY3LDB4RDcsMHhGNiww
eDcyLDB4RjgsMHhGMCwweEYwLDB4RjcsMHhGNiwweEI2LDB4RjYsMHhFQiwweEFBLDB4MkUsMHhD
QSwKKyAgICAweEQ3LDB4RjYsMHgxNCwweERFLDB4RTAsMHg2MCwweERDLDB4MzYsMHhENywweEY2
LDB4RDMsMHhERCwweEI5LDB4ODIsMHgwMCwweDAwLAorICAgIDB4MTgsMHhGRiwweEI2LDB4RUUs
MHg3RCwweEY1LDB4MjUsMHgzRiwweDM4LDB4RkYsMHhCNywweEVFLDB4Q0IsMHhFQiwweEZGLDB4
N0MsCisgICAgMHhCNiwweEVFLDB4NzEsMHhDRCwweEYwLDB4RDgsMHhEMiwweEYyLDB4OTYsMHhF
RSwweDMxLDB4QzUsMHhBQiwweDhGLDB4OEIsMHg4OSwKKyAgICAweEQ2LDB4RjYsMHhCNiwweEU2
LDB4OEEsMHgyMiwweDg4LDB4MDIsMHhGNywweEY2LDB4QjYsMHhFRSwweDVGLDB4NUUsMHg3QSww
eEZBLAorICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHhFRCwweEFCLDB4QTksMHgyQiwweDk2LDB4
RUUsMHg0NCwweDUxLDB4NTYsMHg1NCwweDU0LDB4NUMsCisgICAgMHg2RSwweEI0LDB4MjMsMHg0
OSwweDJELDB4QUQsMHhGRCwweEZGLDB4MTQsMHhFNiwweDA2LDB4NkEsMHgwMiwweEY3LDB4RkQs
MHg1NSwKKyAgICAweDU1LDB4RUUsMHhFNiwweDcxLDB4NTgsMHg1NywweDU1LDB4NTUsMHgxNyww
eEZGLDB4ODcsMHg4QSwweDI1LDB4MjUsMHgyNSwweDA1LAorICAgIDB4MzgsMHhGRiwweEQ3LDB4
RjYsMHhGQSwweEVBLDB4QTIsMHg2RSwweEY3LDB4RjYsMHhGMywweERELDB4QTAsMHhBOCwweDc4
LDB4MjgsCisgICAgMHhGNywweEY2LDB4RDMsMHhERCwweDBCLDB4MDIsMHgwOSwweDJGLDB4Rjcs
MHhGNiwweEI3LDB4RUUsMHhGRSwweEVFLDB4QkEsMHgyQSwKKyAgICAweEY3LDB4RjYsMHhENyww
eEY2LDB4MTUsMHhCNSwweDhCLDB4QTIsMHgxOCwweEZGLDB4NzYsMHhFRSwweEY4LDB4NTgsMHg1
QSwweDdBLAorICAgIDB4NzUsMHhFRSwweDEwLDB4QzUsMHhFMiwweEUyLDB4RTIsMHg2MiwweDU1
LDB4RUUsMHhFRiwweEJDLDB4MEQsMHgwOSwweDBCLDB4MDIsCisgICAgMHhENiwweEY2LDB4QjYs
MHhFRSwweDIyLDB4MDgsMHgwMCwweDAxLDB4RjcsMHhGNiwweEI2LDB4RUUsMHhBQSwweEZBLDB4
RkUsMHhCQSwKKyAgICAweEY3LDB4RjYsMHg5NiwweEVFLDB4MjIsMHgwMiwweEFBLDB4QUEsMHgz
NCwweEVFLDB4MDIsMHg0MSwweEY4LDB4RkMsMHg1QywweDU2LAorICAgIDB4QTgsMHg4MiwweEUy
LDB4MzgsMHhBOCwweEJBLDB4QUYsMHhDRCwweEFCLDB4QTMsMHg0MywweDQ5LDB4RkYsMHhCRiww
eDBCLDB4MkQsCisgICAgMHgwRCwweEI0LDB4ODcsMHg4MiwweDVGLDB4RjIsMHg3MiwweEI2LDB4
RjcsMHhGRSwweEE4LDB4ODIsMHgwRCwweDA5LDB4MDIsMHgwMCwKKyAgICAweDM4LDB4RkYsMHg5
NiwweEVFLDB4N0EsMHg3RSwweDRBLDB4NjMsMHgxOCwweEZGLDB4RjgsMHhGNiwweERELDB4OTAs
MHhCMCwweEIwLAorICAgIDB4MTgsMHhGRiwweDU1LDB4RTYsMHhCNywweEI2LDB4QkMsMHhCOCww
eDE4LDB4RkYsMHhENywweEY2LDB4REYsMHhFRSwweEZCLDB4QkEsCisgICAgMHhGNywweEY2LDB4
NzUsMHhFRSwweDgwLDB4ODAsMHg2MCwweDVFLDB4RDcsMHhGNiwweEY0LDB4REQsMHhBMiwweEUy
LDB4QjIsMHhEOCwKKyAgICAweDc2LDB4RUUsMHhBRSwweEJDLDB4NjIsMHg2MiwweEUyLDB4NkEs
MHg5NiwweEVFLDB4NTIsMHhDRCwweDBCLDB4MjIsMHhCRiwweEI1LAorICAgIDB4OTUsMHhFRSww
eEU4LDB4ODIsMHgyRCwweDU1LDB4NTUsMHg1NSwweEQ2LDB4RjYsMHhFOCwweDgyLDB4MDAsMHgw
RiwweDU1LDB4NTUsCisgICAgMHhENiwweEY2LDB4RTgsMHg4QSwweDAwLDB4MDAsMHgwQiwweEQ1
LDB4OTYsMHhGNiwweDIzLDB4NDEsMHg1NiwweDU2LDB4NUMsMHg1QSwKKyAgICAweEU4LDB4OTIs
MHhFMywweDM4LDB4Q0QsMHg2RCwweEUzLDB4RTIsMHhDOCwweDgyLDB4RTIsMHgzOCwweDJELDB4
RDUsMHhENSwweERFLAorICAgIDB4NEEsMHg5MywweDg0LDB4NTksMHgwOCwweEVBLDB4N0YsMHg1
RiwweEQ3LDB4RjYsMHg4OCwweDdBLDB4MEQsMHgyNSwweDk1LDB4RDUsCisgICAgMHgzOCwweEZG
LDB4NTUsMHhFRSwweEYwLDB4OTgsMHg5QywweDlELDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGMCww
eEY4LDB4RjgsMHg1OCwKKyAgICAweDE4LDB4RkYsMHhENywweEY2LDB4NzYsMHhCRSwweEJGLDB4
QUIsMHgxOCwweEZGLDB4OTYsMHhFRSwweDgyLDB4QzgsMHg2OCwweDdBLAorICAgIDB4QjYsMHhG
NiwweDU1LDB4RTYsMHhGOCwweDc2LDB4RjcsMHhENywweDk2LDB4RUUsMHg5MiwweEQ1LDB4QjAs
MHhEMCwweEQwLDB4RjgsCisgICAgMHhEMywweERELDB4QUYsMHhCQywweDYwLDB4NjAsMHg3MCww
eERDLDB4OTIsMHhENSwweEFGLDB4QkMsMHgwMywweDhCLDB4QTksMHhBRCwKKyAgICAweEE3LDB4
N0EsMHgyNSwweDZBLDB4QUEsMHhBMiwweDNELDB4NTcsMHhDNywweDgyLDB4NDUsMHg3MiwweDBB
LDB4QkIsMHhFRSwweEJELAorICAgIDB4RTgsMHg4QSwweDg3LDB4N0EsMHgwMiwweEFCLDB4RDUs
MHg3NywweEU4LDB4ODIsMHhDMiwweDM4LDB4RjgsMHg3OCwweDcwLDB4RTIsCisgICAgMHhDOCww
eDhBLDB4NDQsMHg1MSwweEEyLDB4RTMsMHhBRCwweEQ1LDB4MDYsMHg2QSwweDAzLDB4NDEsMHhG
QywweEZGLDB4NUMsMHg1NiwKKyAgICAweDI2LDB4NzIsMHgwMywweDQxLDB4QjAsMHgyRiwweDI1
LDB4QUQsMHhBOCwweDgyLDB4NDQsMHg0OSwweDAyLDB4NjgsMHg1RiwweDVGLAorICAgIDB4OTYs
MHhGNiwweDQ3LDB4N0EsMHgwQiwweDJELDB4NTUsMHg1NSwweEY3LDB4RjYsMHg4OCwweDdBLDB4
MDAsMHgwMCwweDBCLDB4RDUsCisgICAgMHhGOCwweEZFLDB4RUMsMHhBMywweDAwLDB4MDAsMHgw
MCwweDJELDB4RjcsMHhGNiwweDU1LDB4RUUsMHhGOCwweDVFLDB4N0UsMHg1NywKKyAgICAweDc2
LDB4RUUsMHgzNSwweEU2LDB4MzgsMHg2QSwweDgwLDB4MjAsMHg3NiwweEVFLDB4RDMsMHhERCww
eEYwLDB4RjgsMHg5RSwweEQ0LAorICAgIDB4NzUsMHhFRSwweDRELDB4QUMsMHhENiwweDdGLDB4
N0UsMHhBMCwweDMxLDB4Q0QsMHhDOCwweDdBLDB4MDAsMHgwMywweDBCLDB4QjcsCisgICAgMHg2
NiwweDcyLDB4NDYsMHg3MiwweDU3LDB4QUUsMHgwQSwweDI5LDB4NjYsMHg3MiwweDI2LDB4NzIs
MHhGRSwweEFBLDB4ODIsMHgwMCwKKyAgICAweEE3LDB4ODIsMHg0NiwweDcyLDB4MjksMHhENSww
eERGLDB4RkYsMHgwOSwweDhCLDB4NjYsMHg3QSwweDdGLDB4QUYsMHhENSwweDE1LAorICAgIDB4
ODcsMHg4MiwweEEyLDB4MzAsMHhGQSwweDc4LDB4NUMsMHg1QywweDIzLDB4NDEsMHhBMiwweDI4
LDB4QUUsMHgzQiwweDM1LDB4ODcsCisgICAgMHgwNiwweDZBLDB4RTMsMHgzOCwweDBGLDB4RUIs
MHhGRCwweDdGLDB4ODUsMHg1MSwweDAzLDB4MzksMHhBQiwweDQ5LDB4RkQsMHhGNSwKKyAgICAw
eEM4LDB4OEEsMHgyMywweDQxLDB4QTMsMHhGRCwweDVELDB4RDUsMHhDOSwweDhBLDB4QzUsMHg2
MSwweEUyLDB4OEIsMHhCNSwweDU3LAorICAgIDB4RUMsMHhBQiwweDg0LDB4NTEsMHgzRiwweERG
LDB4NTcsMHg1NSwweEY0LDB4RTUsMHgwNiwweDZBLDB4MDAsMHgwOSwweDM1LDB4RDUsCisgICAg
MHg1NSwweEVFLDB4OTIsMHhENSwweDBBLDB4QUYsMHhCRiwweEI1LDB4NTUsMHhFRSwweEIzLDB4
REQsMHhCOCwweEJBLDB4QUEsMHhBRCwKKyAgICAweEI2LDB4RjYsMHhEMywweERELDB4NkEsMHhB
MiwweEMzLDB4QUEsMHhGMywweERELDB4MkQsMHhBQywweDVDLDB4ODAsMHhBOCwweDg4LAorICAg
IDB4NDYsMHg3MiwweDYzLDB4NTksMHgyRCwweEQ1LDB4NTUsMHg1NSwweDY2LDB4N0EsMHg0Myww
eDUxLDB4MDAsMHgwQiwweEQ1LDB4RDUsCisgICAgMHg4NywweDdBLDB4NjQsMHg1OSwweDAwLDB4
MDAsMHgwQiwweEQ1LDB4Q0MsMHhBQiwweDg3LDB4N0EsMHgxNSwweDI1LDB4MEQsMHhBOSwKKyAg
ICAweDI5LDB4OTMsMHhDMiwweDM4LDB4NUUsMHg1RSwweDVDLDB4NUMsMHg0NCwweDQ5LDB4QzIs
MHgzMCwweEY1LDB4QjUsMHg4MSwweDhBLAorICAgIDB4ODQsMHg1MSwweEUyLDB4MzgsMHg1Nyww
eEVGLDB4QkIsMHgwMywweEM2LDB4NjEsMHhBMiwweDMwLDB4RkQsMHhGRiwweEZFLDB4RDgsCisg
ICAgMHg2NSwweDQ5LDB4MDMsMHg0MSwweDJBLDB4RjksMHhFMSwweEVELDB4QzYsMHg2MSwweDAz
LDB4NDEsMHgwQSwweEU1LDB4RkYsMHg1RSwKKyAgICAweEE1LDB4NTEsMHgwMywweDM5LDB4QUEs
MHhCRSwweDc1LDB4RkYsMHhBOCwweDgyLDB4MjMsMHg0MSwweDJGLDB4QTUsMHgzRCwweEI1LAor
ICAgIDB4MTQsMHhFNiwweDg3LDB4N0EsMHgwMywweDA5LDB4ODUsMHhCNSwweDk2LDB4RUUsMHgx
MCwweEM1LDB4QUYsMHgwRCwweDI1LDB4NzUsCisgICAgMHg3NSwweEVFLDB4OEYsMHhCNCwweDAw
LDB4MDAsMHgwMCwweDU3LDB4NTUsMHhFRSwweEYxLDB4QkMsMHhFOCwweDgwLDB4QkEsMHg3RCwK
KyAgICAweDg0LDB4NTksMHgyMywweDUxLDB4RkUsMHhGNywweEFELDB4M0UsMHg4NCwweDU5LDB4
MjMsMHg1MSwweDhCLDB4RUEsMHhGQywweDdFLAorICAgIDB4NkIsMHg5QiwweDIzLDB4NTEsMHg1
NSwweDU1LDB4OTUsMHgzNSwweEFCLDB4QTMsMHg2NywweDdBLDB4MjEsMHhBQSwweEE4LDB4QTAs
CisgICAgMHhFOCwweDhBLDB4MDMsMHg0MSwweDU4LDB4NzgsMHhFOCwweEU4LDB4NjQsMHg1MSww
eEUyLDB4MzgsMHhFQywweEU2LDB4QjcsMHhGNCwKKyAgICAweDg1LDB4NTEsMHgwMywweDQxLDB4
ODUsMHg4NSwweDM1LDB4OTUsMHhBNSwweDU5LDB4QzMsMHgzMCwweERBLDB4REUsMHg1QywweERF
LAorICAgIDB4QTUsMHg1OSwweDAzLDB4MzksMHhFQiwweEZCLDB4NzAsMHg3QiwweDQ0LDB4NDEs
MHhFMywweDM4LDB4RUEsMHhFQiwweEMxLDB4QTEsCisgICAgMHg2NSwweDQxLDB4RTMsMHgzOCww
eEIyLDB4RkYsMHhGRiwweERELDB4QzUsMHg1OSwweDIzLDB4NDEsMHgzRiwweDNELDB4RkQsMHgz
QiwKKyAgICAweDMxLDB4Q0QsMHgwNiwweDZBLDB4MzUsMHhCNSwweEY1LDB4RDUsMHgzNSwweEU2
LDB4QUYsMHhCQywweDdELDB4NTUsMHhBRSwweDgyLAorICAgIDB4OTMsMHhDRCwweDRFLDB4QUMs
MHgyRCwweDhBLDB4QTAsMHhBMCwweDMyLDB4QzUsMHgwRSwweDlDLDB4QTAsMHhBQSwweEJFLDB4
RUQsCisgICAgMHg4NCwweDU5LDB4MjMsMHg1MSwweDhCLDB4RkUsMHhGRSwweDU3LDB4NDMsMHg1
OSwweDIzLDB4NDksMHhGMCwweDdDLDB4REQsMHhCRCwKKyAgICAweEFCLDB4QTMsMHg0NCwweDU5
LDB4MzUsMHgyNSwweDA1LDB4MDUsMHgwQywweEFDLDB4RTgsMHg4QSwweDdCLDB4N0UsMHg3OCww
eDZBLAorICAgIDB4QTcsMHg4MiwweDI2LDB4NkEsMHg1NCwweEZFLDB4OUUsMHgzRiwweDY3LDB4
N0EsMHhBMiwweDMwLDB4REMsMHg1OCwweDcwLDB4NjAsCisgICAgMHg0NCwweDQ5LDB4QzIsMHgz
MCwweDJCLDB4QUYsMHg5NSwweEY1LDB4NjUsMHg1MSwweEEyLDB4MzAsMHhGQywweERBLDB4RkUs
MHg3QSwKKyAgICAweDQ0LDB4NDksMHhDMywweDMwLDB4RTIsMHhFMiwweEYyLDB4NUIsMHgyNCww
eDM5LDB4QzIsMHgzMCwweEMyLDB4RkYsMHhGRiwweEZELAorICAgIDB4MDMsMHg0MSwweEUzLDB4
MzAsMHhCQiwweEVBLDB4REYsMHgwQSwweEU2LDB4NTksMHgwMywweDQxLDB4M0QsMHhCNSwweDU1
LDB4NzcsCisgICAgMHg4OCwweDdBLDB4NjQsMHg1MSwweDJBLDB4MEUsMHgyRCwweDI1LDB4MTUs
MHhERSwweDZCLDB4OTMsMHg4MiwweEEzLDB4QTksMHhBOSwKKyAgICAweDczLDB4Q0QsMHhFRCww
eDlCLDB4RTAsMHg2OCwweDdBLDB4RkUsMHgxMSwweEJELDB4MkUsMHhBNCwweEZELDB4RjUsMHhF
QSwweDJELAorICAgIDB4NDQsMHg1MSwweDAzLDB4NDksMHhFQywweDlFLDB4RkYsMHhGRiwweDQz
LDB4NTEsMHgwMywweDQ5LDB4MEEsMHg4MiwweEEyLDB4NjIsCisgICAgMHg2QSwweDkzLDB4MjMs
MHg1MSwweDBELDB4OEQsMHhBOSwweEE5LDB4RTksMHg4QSwweDQ2LDB4NzIsMHhGOCwweERGLDB4
NUYsMHg3RiwKKyAgICAweEE3LDB4N0EsMHhDNCwweDYxLDB4OEEsMHg3QSwweDdBLDB4REEsMHg2
NywweDcyLDB4MDMsMHg0OSwweDZBLDB4Q0EsMHhDQSwweDgwLAorICAgIDB4MjMsMHg0MSwweEEy
LDB4MzAsMHhCOSwweDNELDB4MEQsMHhBMSwweDI0LDB4NDEsMHg4MSwweDIwLDB4QzAsMHhFQSww
eDdGLDB4NTcsCisgICAgMHhFMywweDM4LDB4ODIsMHgyMCwweEEyLDB4QkIsMHhBRCwweEJELDB4
MDQsMHgzOSwweEMzLDB4MzAsMHhCMSwweEZCLDB4RDUsMHhENSwKKyAgICAweDQ0LDB4NDksMHhF
MiwweDMwLDB4ODIsMHhGQSwweEZGLDB4RjUsMHg0NCwweDQxLDB4RTIsMHgzOCwweEJGLDB4OTUs
MHhGRCwweEMzLAorICAgIDB4MjYsMHg2QSwweDAzLDB4MzksMHgyRiwweDJELDB4QkQsMHhCNSww
eEYxLDB4QkMsMHgwNiwweDYyLDB4MDMsMHhBMSwweEE5LDB4QzksCisgICAgMHgyRiwweEE0LDB4
ODksMHg2MiwweDI4LDB4QUEsMHhGQSwweDU1LDB4MTEsMHhCRCwweDBCLDB4N0IsMHgyRiwweEI1
LDB4RjUsMHhGRCwKKyAgICAweDY0LDB4NTksMHgwMiwweDQ5LDB4RjcsMHhFNywweEU5LDB4RjIs
MHgwOSwweDhCLDB4MjMsMHg0OSwweDU1LDB4NTUsMHg5NSwweDE1LAorICAgIDB4NDksMHg5Myww
eDg0LDB4NTksMHhBOSwweEFBLDB4QTgsMHgyOCwweEFCLDB4QTMsMHhFNSwweDYxLDB4RkYsMHhB
RiwweDYyLDB4N0MsCisgICAgMHhDNywweDgyLDB4NDQsMHg0OSwweEUwLDB4N0UsMHg1RiwweDU3
LDB4MDYsMHg2QSwweEUyLDB4MzgsMHgwMCwweEZGLDB4N0YsMHg3QSwKKyAgICAweDAzLDB4NDEs
MHg2MSwweDE4LDB4QTgsMHhGOCwweDdFLDB4REYsMHhFMywweDMwLDB4ODEsMHgyMCwweEI1LDB4
MEQsMHhBRiwweDJFLAorICAgIDB4RTIsMHgzMCwweEEyLDB4MjgsMHg1NSwweDZCLDB4RjgsMHhD
QiwweDAzLDB4MzksMHhBMiwweDI4LDB4MkYsMHhGNSwweERELDB4RjcsCisgICAgMHgyMywweDM5
LDB4QzIsMHgzMCwweEVCLDB4QUYsMHg4RCwweEZELDB4NjQsMHg0OSwweEUyLDB4MzAsMHg4Qiww
eENELDB4Q0QsMHg3RCwKKyAgICAweDg0LDB4NTEsMHhFMiwweDMwLDB4MkYsMHhCRiwweDM3LDB4
QkQsMHhEMSwweEI0LDB4ODUsMHg1MSwweDA5LDB4MEQsMHgyRCwweEE1LAorICAgIDB4MTEsMHhC
RCwweEFDLDB4OEIsMHg1NywweEYwLDB4QTgsMHhBQiwweDZGLDB4QUMsMHhDRCwweDkzLDB4Qjks
MHhBOCwweDgwLDB4QTAsCisgICAgMHg2NCwweDU5LDB4MDIsMHg0MSwweEYyLDB4NUIsMHg1Nyww
eDVELDB4NjksMHg5MywweDAyLDB4NDEsMHgxNSwweDM1LDB4MzUsMHhENSwKKyAgICAweDY5LDB4
OTMsMHg4NCwweDU5LDB4MDgsMHg4MCwweEY4LDB4NUYsMHg2NiwweDcyLDB4NDMsMHg0OSwweEUw
LDB4NTAsMHg1RSwweDc3LAorICAgIDB4QTUsMHg1MSwweDAzLDB4NDEsMHhGQSwweDdBLDB4N0Es
MHgyRSwweEM1LDB4NTksMHhDMiwweDMwLDB4NTgsMHhEQiwweDdGLDB4NUUsCisgICAgMHhFMyww
eDMwLDB4NjEsMHgyMCwweDNFLDB4MjcsMHhGRiwweEVBLDB4MDMsMHgzOSwweDgxLDB4MjAsMHhC
MiwweEEyLDB4QUQsMHgwNiwKKyAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4MDAsMHhGMiwweDdC
LDB4RUYsMHhFMywweDMwLDB4ODIsMHgyOCwweEZFLDB4QTAsMHgyQSwweDAyLAorICAgIDB4MDMs
MHgzOSwweEMyLDB4MzAsMHhENSwweDVGLDB4NUUsMHg3MywweDAzLDB4MzEsMHhDMiwweDI4LDB4
RUIsMHhGQSwweEY5LDB4QUQsCisgICAgMHg2NCwweDQ5LDB4RTMsMHgzMCwweEI1LDB4OTUsMHgz
RCwweDI1LDB4MEQsMHhBNCwweEE1LDB4NTEsMHg4RCwweDI5LDB4RTksMHgwMywKKyAgICAweDZG
LDB4QUMsMHhBOSwweDcyLDB4MkEsMHhBQiwweDU1LDB4NTcsMHgyRSwweDlDLDB4QTgsMHg3Miww
eDIwLDB4QUEsMHhBQiwweEI1LAorICAgIDB4MjMsMHg0OSwweDAzLDB4NDEsMHhENSwweEY1LDB4
REQsMHhGRCwweDIzLDB4NDksMHhFMiwweDQwLDB4MzgsMHhGRSwweERGLDB4NTUsCisgICAgMHhB
NCwweDU5LDB4RTIsMHg0MCwweDFDLDB4MTUsMHgxRCwweDE1LDB4RTUsMHg2MSwweDIzLDB4Mzks
MHhFQSwweDc4LDB4NTgsMHg1QywKKyAgICAweEU1LDB4NjEsMHhBMiwweDMwLDB4QzIsMHg3Myww
eDZGLDB4N0YsMHg0NCwweDQ5LDB4ODEsMHgyMCwweEY4LDB4N0EsMHg1NywweEZGLAorICAgIDB4
MjQsMHg0MSwweEEyLDB4MjgsMHgzRCwweEE1LDB4N0YsMHg3RiwweDIzLDB4NDksMHg4MSwweDIw
LDB4MkEsMHhBQSwweEI3LDB4REQsCisgICAgMHgwMywweDM5LDB4QTIsMHgyOCwweEFDLDB4N0Ms
MHhEOCwweEYzLDB4MDMsMHgzOSwweEEyLDB4MjgsMHhCRiwweDdELDB4NzUsMHhDQiwKKyAgICAw
eEUyLDB4MzAsMHhBMiwweDI4LDB4OEEsMHhBMywweDhELDB4N0MsMHgwMywweDM5LDB4QTEsMHgy
OCwweEFCLDB4QTIsMHgwRiwweEE3LAorICAgIDB4QzksMHg3QSwweDAzLDB4MzksMHhENSwweDE1
LDB4MzUsMHgzRCwweDEwLDB4QzUsMHgyQSwweDgzLDB4MkEsMHg4MCwweDBBLDB4QjUsCisgICAg
MHhEMCwweEJDLDB4QTgsMHg3MiwweDVFLDB4NTgsMHhBMCwweEEwLDB4MkQsMHhBNCwweDA2LDB4
NUEsMHhERiwweDdCLDB4RUEsMHgwMCwKKyAgICAweDAzLDB4NDEsMHhFMiwweDM4LDB4MDMsMHg3
QSwweEZDLDB4NzcsMHgwMywweDQ5LDB4RTIsMHgzOCwweEZELDB4N0QsMHg1NSwweERELAorICAg
IDB4ODQsMHg1OSwweEUyLDB4MzgsMHgxNSwweDk1LDB4OTUsMHg5NSwweDQ2LDB4NkEsMHgwMyww
eDM5LDB4NUMsMHg1QywweDVDLDB4NTQsCisgICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweENBLDB4
MEIsMHhBNywweEY1LDB4MjMsMHgzOSwweEUyLDB4MzAsMHhGRiwweEFDLDB4QkEsMHgzRiwKKyAg
ICAweDIzLDB4MzksMHhFMywweDMwLDB4NTcsMHg1RSwweEVFLDB4QjgsMHgwMywweDMxLDB4QTIs
MHgyMCwweDU3LDB4RkEsMHhBMCwweDAwLAorICAgIDB4RTMsMHgzMCwweDgxLDB4MjAsMHgyQiww
eEJGLDB4RkEsMHhBMCwweDQ0LDB4NDEsMHhBMiwweDI4LDB4QUIsMHhGRiwweEZGLDB4RDUsCisg
ICAgMHgwMywweDM5LDB4QTIsMHgyOCwweERGLDB4QkIsMHhBQSwweDJBLDB4NjQsMHg0OSwweEMy
LDB4MjgsMHhCNSwweEJGLDB4QkUsMHgzNywKKyAgICAweEE5LDB4NzIsMHg0NCwweDQ5LDB4MjUs
MHgwOSwweDBCLDB4MkEsMHgwQSwweDgzLDB4QTksMHg3MiwweDBBLDB4OEYsMHhGRCwweEY1LAor
ICAgIDB4NkYsMHhBQywweEVBLDB4N0EsMHgyQiwweEY1LDB4NTUsMHg1NSwweDZFLDB4QUMsMHgw
QSwweDgzLDB4MDAsMHgwMiwweDM1LDB4NTUsCisgICAgMHgwMywweDQxLDB4RTIsMHgzOCwweEY1
LDB4NTUsMHg3RiwweDU1LDB4RTIsMHgzOCwweEMyLDB4MzgsMHhBMywweDIwLDB4QTIsMHg4QSwK
KyAgICAweDQzLDB4NDksMHhBMiwweDMwLDB4QkYsMHhGRiwweDFGLDB4RjcsMHg2NiwweDZBLDB4
RTMsMHgzMCwweDVFLDB4NUUsMHg1QywweDU3LAorICAgIDB4RTMsMHgzMCwweEMzLDB4MzAsMHgw
MywweDAyLDB4MDAsMHg4MCwweDAzLDB4MzEsMHhFMywweDMwLDB4M0YsMHhCRiwweEQ1LDB4N0Ys
CisgICAgMHgyMywweDM5LDB4RTMsMHgzMCwweEVBLDB4QkIsMHg3RCwweEQ1LDB4MDMsMHgzOSww
eDA0LDB4MzEsMHhCQSwweEEwLDB4MEEsMHgyQiwKKyAgICAweDI0LDB4MzksMHhFMywweDMwLDB4
NUUsMHhFQiwweEJBLDB4MkEsMHg0NCwweDQxLDB4QTIsMHgyMCwweDVGLDB4RkIsMHhBMiwweDBB
LAorICAgIDB4NjUsMHg0OSwweEEyLDB4MjgsMHhENSwweEZGLDB4QUIsMHgwMCwweDQ4LDB4NkEs
MHgwMywweDMxLDB4QjUsMHhBNSwweDJCLDB4MEEsCisgICAgMHhBOSwweDcyLDB4MDYsMHg2Miww
eDJELDB4MjksMHhBQiwweEFCLDB4QzksMHg3QSwweDg4LDB4NkEsMHgyQiwweEFCLDB4RUQsMHg3
RSwKKyAgICAweEU5LDB4N0EsMHg4OCwweDcyLDB4QUUsMHgyQSwweEJCLDB4RUQsMHgwQSwweDgz
LDB4QTksMHg3MiwweDJCLDB4QUYsMHhFRiwweEZELAorfTsKKworc3RhdGljIGNvbnN0IHNpemVf
dCBwaXhlbF80X3dpZHRoID0gMzI7CitzdGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVsXzRfaGVpZ2h0
ID0gMzI7CitzdGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVsXzRfc2l6ZSA9IDUxMjsKK3N0YXRpYyBj
b25zdCB1bnNpZ25lZCBjaGFyIHBpeGVsXzRfZGF0YVs1MTJdID0KK3sKKyAgICAweEQ3LDB4RjYs
MHhBNCwweDQ5LDB4NTUsMHg1NSwweEFBLDB4MDAsMHg3NSwweEVFLDB4QTUsMHg1MSwweDU1LDB4
NTUsMHg3MCwweDcwLAorICAgIDB4QjYsMHhGNiwweDg1LDB4NDksMHg1NSwweERELDB4MDIsMHgw
MywweEY3LDB4RkUsMHhFNiwweDU5LDB4NTUsMHhGRiwweEYwLDB4OUMsCisgICAgMHhGNywweEY2
LDB4ODUsMHg0OSwweDU1LDB4QUEsMHgwMCwweDAwLDB4OTYsMHhFRSwweDQ2LDB4NUEsMHgwOSww
eDAyLDB4MDAsMHgwMCwKKyAgICAweEY4LDB4RjYsMHg3NSwweEVFLDB4MEIsMHgyNywweDBBLDB4
ODIsMHhENywweEVFLDB4QjIsMHhENSwweEY4LDB4RDgsMHhENiwweDk2LAorICAgIDB4RDYsMHhG
NiwweEI2LDB4RUUsMHg0QSwweDgyLDB4MDAsMHgwMiwweEQ2LDB4RjYsMHg0MywweDQ5LDB4NzAs
MHg2MCwweEUwLDB4NzAsCisgICAgMHg4RiwweEJDLDB4MDIsMHg0MSwweDA5LDB4RkYsMHhGRiww
eEJELDB4QjYsMHhGNiwweDQ3LDB4ODIsMHgxNywweDE1LDB4MzcsMHgwNywKKyAgICAweDE4LDB4
RkYsMHg5NSwweEVFLDB4NjgsMHg3MCwweEFFLDB4MEMsMHhGNywweEY2LDB4MzUsMHhFNiwweDgz
LDB4MjEsMHgwQiwweDA4LAorICAgIDB4RjcsMHhGNiwweDU1LDB4RTYsMHhDMiwweEMwLDB4NjAs
MHg2RSwweDc1LDB4RUUsMHg1MSwweENELDB4MUMsMHgzRSwweDI2LDB4QjYsCisgICAgMHhCNiww
eEY2LDB4QTcsMHg3QSwweDJGLDB4NTUsMHg1NSwweDU1LDB4OTUsMHhGNiwweDAyLDB4NDksMHg3
MCwweDZBLDB4N0YsMHg3RiwKKyAgICAweDQ3LDB4N0EsMHhFMywweDM4LDB4OUIsMHhGOCwweEYw
LDB4NkIsMHhGMywweEU1LDB4QTUsMHg1OSwweDNGLDB4RjUsMHg3NSwweDU1LAorICAgIDB4RDcs
MHhGNiwweDQ3LDB4N0EsMHgwMCwweDAwLDB4MEIsMHhCNSwweEY4LDB4RjYsMHhCMywweEQ1LDB4
MDAsMHg4MCwweDgwLDB4QTksCisgICAgMHg3NiwweEVFLDB4RjQsMHhERCwweDQwLDB4NDAsMHg0
OCwweDcwLDB4QjMsMHhENSwweENDLDB4OUIsMHgyOCwweEE4LDB4QUUsMHhEOCwKKyAgICAweDY2
LDB4NzIsMHg0MywweDU5LDB4MDAsMHgwMCwweDJELDB4RDcsMHg4QSwweEEzLDB4RTUsMHg2OSww
eEZGLDB4QkYsMHgzRiwweDI1LAorICAgIDB4MDYsMHg2QSwweEMyLDB4MzAsMHhEQywweDU0LDB4
RDQsMHhGNCwweEM1LDB4NjEsMHgwMywweDM5LDB4RjMsMHhERiwweDU1LDB4N0YsCisgICAgMHg2
NywweDdBLDB4NDQsMHg0OSwweDBFLDB4QTUsMHhENSwweDU1LDB4NzIsMHhERCwweDQzLDB4NDks
MHgyRiwweEI1LDB4RDUsMHg1NSwKKyAgICAweDE0LDB4RTYsMHhFOCwweDgyLDB4MDAsMHgwMCww
eDIzLDB4MjksMHg1NSwweEU2LDB4RjAsMHhCQywweDYwLDB4RTAsMHg4MCwweEZFLAorICAgIDB4
NjMsMHg1OSwweDIzLDB4NTEsMHgwQSwweEUzLDB4NzIsMHg1NiwweENCLDB4QTMsMHg0NCwweDU5
LDB4MjUsMHg4RCwweDg5LDB4ODEsCisgICAgMHg4NywweDdBLDB4MjMsMHg0MSwweDU0LDB4NTgs
MHg2OCwweDYwLDB4NjUsMHg1MSwweEMyLDB4MzAsMHg0MywweDRCLDB4NkIsMHg2RCwKKyAgICAw
eDY0LDB4NDksMHhFMywweDMwLDB4RTgsMHhCOCwweDdFLDB4NTcsMHg4NSwweDUxLDB4RTMsMHgz
OCwweDJGLDB4MjcsMHgzRCwweEY1LAorICAgIDB4OTMsMHhENSwweDg0LDB4NTksMHg4RiwweDBE
LDB4MEQsMHgyRCwweDcyLDB4Q0QsMHg0RSwweEE0LDB4RUEsMHhGOCwweDVDLDB4RjcsCisgICAg
MHhDNSwweDYxLDB4MjMsMHg0OSwweEQ1LDB4NzUsMHg1NSwweDE3LDB4MjksMHg4QiwweEM1LDB4
NjEsMHhFMSwweEI5LDB4QUIsMHhDOCwKKyAgICAweDY3LDB4N0EsMHgyMywweDQxLDB4RTAsMHhB
QywweEY4LDB4N0YsMHgwMywweDM5LDB4ODEsMHgyMCwweDgyLDB4NzIsMHg5RSwweEI3LAorICAg
IDB4RTMsMHgzMCwweEEyLDB4MjgsMHgwQiwweEFELDB4M0YsMHhGRSwweDQ0LDB4NDksMHhFMiww
eDMwLDB4RkEsMHhCRiwweDNELDB4RkQsCisgICAgMHhEMSwweEJDLDB4NDMsMHg0MSwweDJELDB4
QjUsMHgzNSwweEI1LDB4NEYsMHhBNCwweEVBLDB4NzIsMHgzQSwweEI1LDB4ODgsMHgwMCwKKyAg
ICAweDg3LDB4N0EsMHgwMiwweDQxLDB4MTcsMHg5NSwweDU1LDB4NTUsMHgyOSwweDkzLDB4MjMs
MHg0OSwweEUwLDB4N0UsMHg3NSwweDc1LAorICAgIDB4NjQsMHg1MSwweEEyLDB4MjgsMHhDOCww
eEUwLDB4NjgsMHg1RSwweDAzLDB4NDEsMHg4MiwweDIwLDB4QUQsMHhCRiwweDIzLDB4RkYsCisg
ICAgMHhFMywweDM4LDB4QzIsMHgyOCwweDdFLDB4QjcsMHg1RSwweEZDLDB4RTMsMHgzMCwweEMy
LDB4MjgsMHgwRiwweDM4LDB4MEEsMHgxNSwKKyAgICAweEFGLDB4QjQsMHgwMywweDM5LDB4QjUs
MHhBNSwweDA1LDB4MkQsMHhBRiwweEI0LDB4MjcsMHg1QSwweEFBLDB4QkYsMHg3RSwweEE4LAor
ICAgIDB4MDMsMHg0MSwweEUyLDB4MzgsMHhGQSwweDdGLDB4NUQsMHg1NSwweEE1LDB4NTEsMHhF
MiwweDM4LDB4Q0QsMHg0RCwweDQ1LDB4NDUsCisgICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweEUy
LDB4QkQsMHhGNSwweDU1LDB4MDMsMHgzOSwweEMyLDB4MjgsMHg1QSwweEEwLDB4MDAsMHgwQSwK
KyAgICAweDI0LDB4MzksMHhBMiwweDI4LDB4QkQsMHhERiwweEVBLDB4MDgsMHgyNywweDYyLDB4
QzIsMHgyOCwweEQ1LDB4REQsMHhCNSwweDJGLAorICAgIDB4MEEsMHg4MywweEE1LDB4NTEsMHgw
OSwweEFCLDB4MkIsMHhBQiwweDZFLDB4QUMsMHhDOSwweDdBLDB4MEIsMHhENSwweEQ1LDB4NTUs
Cit9OworCitzdGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVsXzVfd2lkdGggPSAxNjsKK3N0YXRpYyBj
b25zdCBzaXplX3QgcGl4ZWxfNV9oZWlnaHQgPSAxNjsKK3N0YXRpYyBjb25zdCBzaXplX3QgcGl4
ZWxfNV9zaXplID0gMTI4Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcGl4ZWxfNV9kYXRh
WzEyOF0gPQoreworICAgIDB4OTYsMHhFRSwweDY0LDB4NDksMHg1NSwweEMwLDB4QzAsMHhDMCww
eDU1LDB4RUUsMHg0NywweDZBLDB4NTUsMHhDMiwweDlELDB4MzUsCisgICAgMHhENywweEY2LDB4
OEIsMHg4QiwweDM1LDB4MDAsMHgwMCwweDAwLDB4RDcsMHhGNiwweEIyLDB4RDUsMHhFMCwweEYw
LDB4RjAsMHhEOCwKKyAgICAweDcxLDB4Q0QsMHg0MywweDU5LDB4QzMsMHg3RiwweEZGLDB4RjUs
MHg2QSwweDlCLDB4RTMsMHgzOCwweDJGLDB4RkYsMHhENywweDU3LAorICAgIDB4RjcsMHhGNiww
eEM1LDB4NTksMHgwMCwweDBCLDB4RDUsMHg1NSwweDc2LDB4RUUsMHhBRiwweEI0LDB4RjAsMHg3
OCwweEMyLDB4QUQsCisgICAgMHg0OSwweDkzLDB4NDMsMHg1MSwweDE1LDB4MjUsMHhCNSwweEE1
LDB4MjYsMHg2QSwweEMyLDB4MzAsMHhGQywweDU4LDB4NTAsMHg1QSwKKyAgICAweDY0LDB4NTEs
MHhDMiwweDI4LDB4MkMsMHhCRiwweEZELDB4QjUsMHhEMCwweEI0LDB4NDMsMHg0OSwweDAzLDB4
MDMsMHhBOSwweDg5LAorICAgIDB4QzgsMHg4MiwweDAyLDB4NDEsMHhDRCwweEQ1LDB4RDUsMHg1
NSwweDQ0LDB4NDEsMHhBMiwweDI4LDB4RDgsMHhGQywweEZBLDB4QUYsCisgICAgMHg4NSwweDQ5
LDB4QzIsMHgzMCwweEQ1LDB4NTUsMHhGNSwweDNGLDB4MEQsMHhBNCwweDY0LDB4NDksMHhBOSww
eDgxLDB4MkIsMHhFRiwKK307CisKK3N0YXRpYyBjb25zdCBzaXplX3QgcGl4ZWxfNl93aWR0aCA9
IDg7CitzdGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVsXzZfaGVpZ2h0ID0gODsKK3N0YXRpYyBjb25z
dCBzaXplX3QgcGl4ZWxfNl9zaXplID0gMzI7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBw
aXhlbF82X2RhdGFbMzJdID0KK3sKKyAgICAweDM0LDB4RTYsMHg2NCwweDUxLDB4RUYsMHhCOCww
eERCLDB4NUQsMHhCNywweEY2LDB4NDcsMHg2QSwweDAyLDB4ODAsMHg4MiwweEE1LAorICAgIDB4
NjcsMHg3QSwweEMyLDB4MzAsMHhFMywweDYzLDB4N0IsMHg1RCwweEYxLDB4QkMsMHgwMywweDM5
LDB4MjUsMHhCNSwweEI1LDB4QjUsCit9OworCitzdGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVsXzdf
d2lkdGggPSA0Oworc3RhdGljIGNvbnN0IHNpemVfdCBwaXhlbF83X2hlaWdodCA9IDQ7CitzdGF0
aWMgY29uc3Qgc2l6ZV90IHBpeGVsXzdfc2l6ZSA9IDg7CitzdGF0aWMgY29uc3QgdW5zaWduZWQg
Y2hhciBwaXhlbF83X2RhdGFbOF0gPQoreworICAgIDB4MTQsMHhERSwweDQ0LDB4NDksMHgwQSww
eDI3LDB4RDUsMHhENSwKK307CisKK3N0YXRpYyBjb25zdCBzaXplX3QgcGl4ZWxfOF93aWR0aCA9
IDI7CitzdGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVsXzhfaGVpZ2h0ID0gMjsKK3N0YXRpYyBjb25z
dCBzaXplX3QgcGl4ZWxfOF9zaXplID0gODsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHBp
eGVsXzhfZGF0YVs4XSA9Cit7CisgICAgMHg5MiwweENELDB4NDQsMHg0OSwweDMzLDB4REQsMHgz
MywweERELAorfTsKKworc3RhdGljIGNvbnN0IHNpemVfdCBwaXhlbF85X3dpZHRoID0gMTsKK3N0
YXRpYyBjb25zdCBzaXplX3QgcGl4ZWxfOV9oZWlnaHQgPSAxOworc3RhdGljIGNvbnN0IHNpemVf
dCBwaXhlbF85X3NpemUgPSA4Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcGl4ZWxfOV9k
YXRhWzhdID0KK3sKKyAgICAweDJBLDB4ODMsMHgwQSwweDgzLDB4RkIsMHhFRiwweEVFLDB4RUYs
Cit9OwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsZXNfY29uZm9y
bWFuY2VfdGVzdHMvZ2VuZXJhdGVfZ2xlc19jb25mb3JtYW5jZV90ZXN0cy5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xlc19jb25mb3JtYW5jZV90
ZXN0cy9nZW5lcmF0ZV9nbGVzX2NvbmZvcm1hbmNlX3Rlc3RzLnB5CShub25leGlzdGVudCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbGVzX2NvbmZvcm1hbmNlX3Rlc3Rz
L2dlbmVyYXRlX2dsZXNfY29uZm9ybWFuY2VfdGVzdHMucHkJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw2OCBAQAoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKKworZGVmIFJlYWRG
aWxlQXNMaW5lcyhmaWxlbmFtZSk6CisgICAgIiIiUmVhZHMgYSBmaWxlLCByZW1vdmluZyBibGFu
ayBsaW5lcyBhbmQgbGluZXMgdGhhdCBzdGFydCB3aXRoICMiIiIKKyAgICBmaWxlID0gb3Blbihm
aWxlbmFtZSwgInIiKQorICAgIHJhd19saW5lcyA9IGZpbGUucmVhZGxpbmVzKCkKKyAgICBmaWxl
LmNsb3NlKCkKKyAgICBsaW5lcyA9IFtdCisgICAgZm9yIGxpbmUgaW4gcmF3X2xpbmVzOgorICAg
ICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgIGlmIGxlbihsaW5lKSA+IDAgYW5kIG5v
dCBsaW5lLnN0YXJ0c3dpdGgoIiMiKToKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZChsaW5lKQor
ICAgIHJldHVybiBsaW5lcworCitkZWYgR2V0U3VpdGVOYW1lKHRlc3ROYW1lKToKKyAgICByZXR1
cm4gdGVzdE5hbWVbOnRlc3ROYW1lLmZpbmQoIi8iKV0KKworZGVmIEdldFRlc3ROYW1lKHRlc3RO
YW1lKToKKyAgICByZXBsYWNlbWVudHMgPSB7ICIudGVzdCI6ICIiLCAiLiI6ICJfIiB9CisgICAg
c3BsaXRUZXN0TmFtZSA9IHRlc3ROYW1lLnNwbGl0KCIvIikKKyAgICBjbGVhbk5hbWUgPSBzcGxp
dFRlc3ROYW1lWy0yXSArICJfIiArIHNwbGl0VGVzdE5hbWVbLTFdCisgICAgZm9yIHJlcGxhY2VL
ZXkgaW4gcmVwbGFjZW1lbnRzOgorICAgICAgICBjbGVhbk5hbWUgPSBjbGVhbk5hbWUucmVwbGFj
ZShyZXBsYWNlS2V5LCByZXBsYWNlbWVudHNbcmVwbGFjZUtleV0pCisgICAgcmV0dXJuIGNsZWFu
TmFtZQorCitkZWYgR2VuZXJhdGVUZXN0cyhvdXRGaWxlLCB0ZXN0TmFtZXMpOgorICAgICMgUmVt
b3ZlIGR1cGxpY2F0ZSB0ZXN0cworICAgIHRlc3ROYW1lcyA9IGxpc3Qoc2V0KHRlc3ROYW1lcykp
CisgICAgdGVzdFN1aXRlcyA9IFtdCisKKyAgICBvdXRGaWxlLndyaXRlKCIjaW5jbHVkZSBcImds
ZXNfY29uZm9ybWFuY2VfdGVzdHMuaFwiXG5cbiIpCisKKyAgICBmb3IgdGVzdCBpbiB0ZXN0TmFt
ZXM6CisgICAgICAgIHRlc3RTdWl0ZSA9IEdldFN1aXRlTmFtZSh0ZXN0KQorICAgICAgICBpZiBu
b3QgdGVzdFN1aXRlIGluIHRlc3RTdWl0ZXM6CisgICAgICAgICAgICBvdXRGaWxlLndyaXRlKCJE
RUZJTkVfQ09ORk9STUFOQ0VfVEVTVF9DTEFTUygiICsgdGVzdFN1aXRlICsgIik7XG5cbiIpCisg
ICAgICAgICAgICB0ZXN0U3VpdGVzLmFwcGVuZCh0ZXN0U3VpdGUpCisKKyAgICAgICAgb3V0Rmls
ZS53cml0ZSgiVFlQRURfVEVTVCgiICsgdGVzdFN1aXRlICsgIiwgIiArIEdldFRlc3ROYW1lKHRl
c3QpICsgIilcbiIpCisgICAgICAgIG91dEZpbGUud3JpdGUoIntcbiIpCisgICAgICAgIG91dEZp
bGUud3JpdGUoIiAgICBydW4oXCIiICsgdGVzdCArICJcIik7XG4iKQorICAgICAgICBvdXRGaWxl
LndyaXRlKCJ9XG5cbiIpCisKK2RlZiBHZW5lcmF0ZVRlc3RMaXN0KHNvdXJjZUZpbGUsIHJvb3RE
aXIpOgorICAgIHRlc3RzID0gWyBdCisgICAgZmlsZU5hbWUsIGZpbGVFeHRlbnNpb24gPSBvcy5w
YXRoLnNwbGl0ZXh0KHNvdXJjZUZpbGUpCisgICAgaWYgZmlsZUV4dGVuc2lvbiA9PSAiLnJ1biI6
CisgICAgICAgIGxpbmVzID0gUmVhZEZpbGVBc0xpbmVzKHNvdXJjZUZpbGUpCisgICAgICAgIGZv
ciBsaW5lIGluIGxpbmVzOgorICAgICAgICAgICAgdGVzdHMgKz0gR2VuZXJhdGVUZXN0TGlzdChv
cy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHNvdXJjZUZpbGUpLCBsaW5lKSwgcm9vdERpcikK
KyAgICBlbGlmIGZpbGVFeHRlbnNpb24gPT0gIi50ZXN0IjoKKyAgICAgICAgdGVzdHMuYXBwZW5k
KG9zLnBhdGgucmVscGF0aChvcy5wYXRoLnJlYWxwYXRoKHNvdXJjZUZpbGUpLCByb290RGlyKS5y
ZXBsYWNlKCJcXCIsICIvIikpCisgICAgcmV0dXJuIHRlc3RzOworCitkZWYgbWFpbihhcmd2KToK
KyAgICB0ZXN0cyA9IEdlbmVyYXRlVGVzdExpc3QoYXJndlswXSwgYXJndlsxXSkKKyAgICB0ZXN0
cy5zb3J0KCkKKworICAgIG91dHB1dCA9IG9wZW4oYXJndlsyXSwgJ3diJykKKyAgICBHZW5lcmF0
ZVRlc3RzKG91dHB1dCwgdGVzdHMpCisgICAgb3V0cHV0LmNsb3NlKCkKKworICAgIHJldHVybiAw
CisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgc3lzLmV4aXQobWFpbihzeXMuYXJn
dlsxOl0pKQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsZXNfY29u
Zm9ybWFuY2VfdGVzdHMvZ2xlc19jb25mb3JtYW5jZV90ZXN0cy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsZXNfY29uZm9ybWFuY2VfdGVzdHMv
Z2xlc19jb25mb3JtYW5jZV90ZXN0cy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsZXNfY29uZm9ybWFuY2VfdGVzdHMvZ2xlc19jb25mb3Jt
YW5jZV90ZXN0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MiBAQAorI2luY2x1ZGUg
ImdsZXNfY29uZm9ybWFuY2VfdGVzdHMuaCIKKyNpbmNsdWRlICJHVEZNYWluLmgiCisKKyNpbmNs
dWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHZlY3Rvcj4KKyNp
bmNsdWRlIDxzc3RyZWFtPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorCitzdGF0aWMgc3RkOjp2ZWN0
b3I8Y2hhcj4gRm9ybWF0QXJnKGNvbnN0IGNoYXIqIGZtdCwgLi4uKQoreworICAgIHZhX2xpc3Qg
dmFyYXJnOworICAgIHZhX3N0YXJ0KHZhcmFyZywgZm10KTsKKyAgICBpbnQgbGVuID0gdnNucHJp
bnRmKE5VTEwsIDAsIGZtdCwgdmFyYXJnKTsKKyAgICB2YV9lbmQodmFyYXJnKTsKKworICAgIHN0
ZDo6dmVjdG9yPGNoYXI+IGJ1ZihsZW4gKyAxKTsKKworICAgIHZhX3N0YXJ0KHZhcmFyZywgZm10
KTsKKyAgICB2c25wcmludGYoYnVmLmRhdGEoKSwgYnVmLnNpemUoKSwgZm10LCB2YXJhcmcpOwor
ICAgIHZhX2VuZCh2YXJhcmcpOworCisgICAgcmV0dXJuIGJ1ZjsKK30KKworc3RhdGljIHN0ZDo6
c3RyaW5nIEdldEV4ZWN1dGFibGVEaXJlY3RvcnkoKQoreworICAgIHN0ZDo6dmVjdG9yPGNoYXI+
IGV4ZWN1dGFibGVGaWxlQnVmKE1BWF9QQVRIKTsKKyAgICBEV09SRCBleGVjdXRhYmxlUGF0aExl
biA9IEdldE1vZHVsZUZpbGVOYW1lQShOVUxMLCBleGVjdXRhYmxlRmlsZUJ1Zi5kYXRhKCksIGV4
ZWN1dGFibGVGaWxlQnVmLnNpemUoKSk7CisgICAgaWYgKGV4ZWN1dGFibGVQYXRoTGVuID09IDAp
CisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3RkOjpzdHJpbmcg
ZXhlY3V0YWJsZUxvY2F0aW9uID0gZXhlY3V0YWJsZUZpbGVCdWYuZGF0YSgpOworICAgIHNpemVf
dCBsYXN0UGF0aFNlcExvYyA9IGV4ZWN1dGFibGVMb2NhdGlvbi5maW5kX2xhc3Rfb2YoIlxcLyIp
OworICAgIGlmIChsYXN0UGF0aFNlcExvYyAhPSBzdGQ6OnN0cmluZzo6bnBvcykKKyAgICB7Cisg
ICAgICAgIGV4ZWN1dGFibGVMb2NhdGlvbiA9IGV4ZWN1dGFibGVMb2NhdGlvbi5zdWJzdHIoMCwg
bGFzdFBhdGhTZXBMb2MpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBleGVjdXRh
YmxlTG9jYXRpb24gPSAiIjsKKyAgICB9CisKKyAgICByZXR1cm4gZXhlY3V0YWJsZUxvY2F0aW9u
OworfQorCit2b2lkIFJ1bkNvbmZvcm1hbmNlVGVzdChjb25zdCBzdGQ6OnN0cmluZyAmdGVzdFBh
dGgsIEVHTE5hdGl2ZURpc3BsYXlUeXBlIG5hdGl2ZURpc3BsYXkpCit7CisgICAgc3RkOjp2ZWN0
b3I8Y2hhcio+IGFyZ3M7CisKKyAgICAvLyBFbXB0eSBmaXJzdCBhcmd1bWVudCBmb3IgdGhlIHBy
b2dyYW0gbmFtZQorICAgIGFyZ3MucHVzaF9iYWNrKCIiKTsKKworICAgIHN0ZDo6dmVjdG9yPGNo
YXI+IHdpZHRoQXJnID0gRm9ybWF0QXJnKCItd2lkdGg9JXUiLCA2NCk7CisgICAgYXJncy5wdXNo
X2JhY2sod2lkdGhBcmcuZGF0YSgpKTsKKworICAgIHN0ZDo6dmVjdG9yPGNoYXI+IGhlaWdodEFy
ZyA9IEZvcm1hdEFyZygiLWhlaWdodD0ldSIsIDY0KTsKKyAgICBhcmdzLnB1c2hfYmFjayhoZWln
aHRBcmcuZGF0YSgpKTsKKworICAgIHN0ZDo6dmVjdG9yPGNoYXI+IGRpc3BsYXlBcmcgPSBGb3Jt
YXRBcmcoIi1kPSVsbHUiLCBuYXRpdmVEaXNwbGF5KTsKKyAgICBhcmdzLnB1c2hfYmFjayhkaXNw
bGF5QXJnLmRhdGEoKSk7CisKKyAgICBzdGQ6OnZlY3RvcjxjaGFyPiBydW5BcmcgPSBGb3JtYXRB
cmcoIi1ydW49JXMvY29uZm9ybWFuY2VfdGVzdHMvJXMiLCBHZXRFeGVjdXRhYmxlRGlyZWN0b3J5
KCkuY19zdHIoKSwgdGVzdFBhdGguY19zdHIoKSk7CisgICAgYXJncy5wdXNoX2JhY2socnVuQXJn
LmRhdGEoKSk7CisKKyAgICAvLyBSZWRpcmVjdCBjb3V0CisgICAgc3RkOjpzdHJlYW1idWYqIG9s
ZENvdXRTdHJlYW1CdWYgPSBzdGQ6OmNvdXQucmRidWYoKTsKKyAgICBzdGQ6Om9zdHJpbmdzdHJl
YW0gc3RyQ291dDsKKyAgICBzdGQ6OmNvdXQucmRidWYoc3RyQ291dC5yZGJ1ZigpKTsKKworICAg
IGlmIChHVEZNYWluKGFyZ3Muc2l6ZSgpLCBhcmdzLmRhdGEoKSkgIT0gMCkKKyAgICB7CisgICAg
ICAgIEZBSUwoKSA8PCAiR1RGTWFpbiBmYWlsZWQuIjsKKyAgICB9CisKKyAgICAvLyBSZXN0b3Jl
IG9sZCBjb3V0CisgICAgc3RkOjpjb3V0LnJkYnVmKG9sZENvdXRTdHJlYW1CdWYpOworICAgIHN0
ZDo6c3RyaW5nIGxvZyA9IHN0ckNvdXQuc3RyKCk7CisKKyAgICAvLyBMb29rIGZvciBmYWlsdXJl
cworICAgIHNpemVfdCBvZmZzZXQgPSAwOworICAgIHN0ZDo6c3RyaW5nIG9mZnNldFNlYXJjaFN0
cmluZyA9ICJmYWlsdXJlID0gIjsKKyAgICB3aGlsZSAoKG9mZnNldCA9IGxvZy5maW5kKCJmYWls
dXJlID0gIiwgb2Zmc2V0KSkgIT0gc3RkOjpzdHJpbmc6Om5wb3MpCisgICAgeworICAgICAgICBv
ZmZzZXQgKz0gb2Zmc2V0U2VhcmNoU3RyaW5nLmxlbmd0aCgpOworCisgICAgICAgIHNpemVfdCBm
YWlsdXJlQ291bnQgPSBhdG9sbChsb2cuY19zdHIoKSArIG9mZnNldCk7CisgICAgICAgIEVYUEVD
VF9FUSgwLCBmYWlsdXJlQ291bnQpIDw8IGxvZzsKKyAgICB9Cit9CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xlc19jb25mb3JtYW5jZV90ZXN0cy9nbGVzX2NvbmZv
cm1hbmNlX3Rlc3RzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL2dsZXNfY29uZm9ybWFuY2VfdGVzdHMvZ2xlc19jb25mb3JtYW5jZV90ZXN0cy5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbGVzX2Nv
bmZvcm1hbmNlX3Rlc3RzL2dsZXNfY29uZm9ybWFuY2VfdGVzdHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDY5IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2lmbmRlZiBDT05GT1JNQU5DRV9URVNU
U19DT05GT1JNQU5DRV9URVNUX0hfCisjZGVmaW5lIENPTkZPUk1BTkNFX1RFU1RTX0NPTkZPUk1B
TkNFX1RFU1RfSF8KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpbmNsdWRlIDxFR0wv
ZWdsLmg+CisjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgorCisjaW5jbHVkZSA8c3RyaW5nPgorCitz
dHJ1Y3QgRDNEOQoreworICAgIHN0YXRpYyBFR0xOYXRpdmVEaXNwbGF5VHlwZSBHZXROYXRpdmVE
aXNwbGF5KCkKKyAgICB7CisgICAgICAgIHJldHVybiBFR0xfREVGQVVMVF9ESVNQTEFZOworICAg
IH0KK307CisKK3N0cnVjdCBEM0QxMQoreworICAgIHN0YXRpYyBFR0xOYXRpdmVEaXNwbGF5VHlw
ZSBHZXROYXRpdmVEaXNwbGF5KCkKKyAgICB7CisgICAgICAgIHJldHVybiBFR0xfRDNEMTFfT05M
WV9ESVNQTEFZX0FOR0xFOworICAgIH0KK307CisKKyNkZWZpbmUgQ09ORk9STUFOQ0VfVEVTVFNf
RVMyIDIKKyNkZWZpbmUgQ09ORk9STUFOQ0VfVEVTVFNfRVMzIDMKKworI2lmIENPTkZPUk1BTkNF
X1RFU1RTX1RZUEUgPT0gQ09ORk9STUFOQ0VfVEVTVFNfRVMyCisgICAgdHlwZWRlZiB0ZXN0aW5n
OjpUeXBlczxEM0Q5LCBEM0QxMT4gQ29uZm9ybWFuY2VUZXN0VHlwZXM7CisjZWxpZiBDT05GT1JN
QU5DRV9URVNUU19UWVBFID09IENPTkZPUk1BTkNFX1RFU1RTX0VTMworICAgIHR5cGVkZWYgdGVz
dGluZzo6VHlwZXM8RDNEMTE+IENvbmZvcm1hbmNlVGVzdFR5cGVzOworI2Vsc2UKKyMgICBlcnJv
ciAiVW5rbm93biBDT05GT1JNQU5DRV9URVNUU19UWVBFIgorI2VuZGlmCisKKyNkZWZpbmUgREVG
SU5FX0NPTkZPUk1BTkNFX1RFU1RfQ0xBU1MobmFtZSkgXAorICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBjbGFzcyBuYW1lIDogcHVibGljIENvbmZvcm1hbmNlVGVzdDxUPiB7IH07IFwKKyAgICBU
WVBFRF9URVNUX0NBU0UobmFtZSwgQ29uZm9ybWFuY2VUZXN0VHlwZXMpOworCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK2NsYXNzIENvbmZvcm1hbmNlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
Cit7CisgIHB1YmxpYzoKKyAgICBDb25mb3JtYW5jZVRlc3QoKQorICAgICAgICA6IG1OYXRpdmVE
aXNwbGF5KFQ6OkdldE5hdGl2ZURpc3BsYXkoKSkKKyAgICB7CisgICAgfQorCisgIHByb3RlY3Rl
ZDoKKyAgICB2b2lkIHJ1bihjb25zdCBzdGQ6OnN0cmluZyAmdGVzdFBhdGgpCisgICAgeworICAg
ICAgICBSdW5Db25mb3JtYW5jZVRlc3QodGVzdFBhdGgsIG1OYXRpdmVEaXNwbGF5KTsKKyAgICB9
CisKKyAgcHJpdmF0ZToKKyAgICBFR0xOYXRpdmVEaXNwbGF5VHlwZSBtTmF0aXZlRGlzcGxheTsK
K307CisKK3ZvaWQgUnVuQ29uZm9ybWFuY2VUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nICZ0ZXN0UGF0
aCwgRUdMTmF0aXZlRGlzcGxheVR5cGUgbmF0aXZlRGlzcGxheSk7CisKKyNlbmRpZiAvLyBDT05G
T1JNQU5DRV9URVNUU19DT05GT1JNQU5DRV9URVNUX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvZ2xlc19jb25mb3JtYW5jZV90ZXN0cy9nbGVzX2NvbmZvcm1hbmNl
X3Rlc3RzX21haW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9nbGVzX2NvbmZvcm1hbmNlX3Rlc3RzL2dsZXNfY29uZm9ybWFuY2VfdGVzdHNfbWFp
bi5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2dsZXNfY29uZm9ybWFuY2VfdGVzdHMvZ2xlc19jb25mb3JtYW5jZV90ZXN0c19tYWluLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIzIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE0
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUg
ImdsZXNfY29uZm9ybWFuY2VfdGVzdHMuaCIKKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisK
KyNpbmNsdWRlIDxFR0wvZWdsLmg+CisjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgorCisjaW5jbHVk
ZSA8bWFwPgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKK2ludCBtYWlu
KGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKyAgICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgm
YXJnYywgYXJndik7CisgICAgaW50IHJ0ID0gUlVOX0FMTF9URVNUUygpOworICAgIHJldHVybiBy
dDsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3Rz
L0FOR0xFUGVyZlRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0FOR0xFUGVyZlRlc3QuY3BwCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0FOR0xFUGVyZlRl
c3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTk0IEBACisvLworLy8gQ29weXJpZ2h0
IChjKSAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8v
IEFOR0xFUGVyZlRlc3RzOgorLy8gICBCYXNlIGNsYXNzIGZvciBnb29nbGUgdGVzdCBwZXJmb3Jt
YW5jZSB0ZXN0cworLy8KKworI2luY2x1ZGUgIkFOR0xFUGVyZlRlc3QuaCIKKworI2luY2x1ZGUg
InRoaXJkX3BhcnR5L3BlcmYvcGVyZl90ZXN0LmgiCisKKyNpbmNsdWRlIDxjYXNzZXJ0PgorI2lu
Y2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGlvc3RyZWFtPgorCitBTkdMRVBlcmZUZXN0OjpBTkdM
RVBlcmZUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lLCBjb25zdCBzdGQ6OnN0cmluZyAmc3Vm
Zml4KQorICAgIDogbU5hbWUobmFtZSksCisgICAgICBtU3VmZml4KHN1ZmZpeCksCisgICAgICBt
VGltZXIobnVsbHB0ciksCisgICAgICBtUnVuVGltZVNlY29uZHMoNS4wKSwKKyAgICAgIG1OdW1T
dGVwc1BlcmZvcm1lZCgwKSwKKyAgICAgIG1SdW5uaW5nKHRydWUpCit7CisgICAgbVRpbWVyID0g
Q3JlYXRlVGltZXIoKTsKK30KKworQU5HTEVQZXJmVGVzdDo6fkFOR0xFUGVyZlRlc3QoKQorewor
ICAgIFNhZmVEZWxldGUobVRpbWVyKTsKK30KKwordm9pZCBBTkdMRVBlcmZUZXN0OjpydW4oKQor
eworICAgIG1UaW1lci0+c3RhcnQoKTsKKyAgICB3aGlsZSAobVJ1bm5pbmcpCisgICAgeworICAg
ICAgICBzdGVwKCk7CisgICAgICAgIGlmIChtUnVubmluZykKKyAgICAgICAgeworICAgICAgICAg
ICAgKyttTnVtU3RlcHNQZXJmb3JtZWQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1UaW1lci0+
Z2V0RWxhcHNlZFRpbWUoKSA+IG1SdW5UaW1lU2Vjb25kcykKKyAgICAgICAgeworICAgICAgICAg
ICAgbVJ1bm5pbmcgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBmaW5pc2hUZXN0KCk7
CisgICAgbVRpbWVyLT5zdG9wKCk7Cit9CisKK3ZvaWQgQU5HTEVQZXJmVGVzdDo6cHJpbnRSZXN1
bHQoY29uc3Qgc3RkOjpzdHJpbmcgJnRyYWNlLCBkb3VibGUgdmFsdWUsIGNvbnN0IHN0ZDo6c3Ry
aW5nICZ1bml0cywgYm9vbCBpbXBvcnRhbnQpIGNvbnN0Cit7CisgICAgcGVyZl90ZXN0OjpQcmlu
dFJlc3VsdChtTmFtZSwgbVN1ZmZpeCwgdHJhY2UsIHZhbHVlLCB1bml0cywgaW1wb3J0YW50KTsK
K30KKwordm9pZCBBTkdMRVBlcmZUZXN0OjpwcmludFJlc3VsdChjb25zdCBzdGQ6OnN0cmluZyAm
dHJhY2UsIHNpemVfdCB2YWx1ZSwgY29uc3Qgc3RkOjpzdHJpbmcgJnVuaXRzLCBib29sIGltcG9y
dGFudCkgY29uc3QKK3sKKyAgICBwZXJmX3Rlc3Q6OlByaW50UmVzdWx0KG1OYW1lLCBtU3VmZml4
LCB0cmFjZSwgdmFsdWUsIHVuaXRzLCBpbXBvcnRhbnQpOworfQorCit2b2lkIEFOR0xFUGVyZlRl
c3Q6OlNldFVwKCkKK3sKK30KKwordm9pZCBBTkdMRVBlcmZUZXN0OjpUZWFyRG93bigpCit7Cisg
ICAgZG91YmxlIHJlbGF0aXZlU2NvcmUgPSBzdGF0aWNfY2FzdDxkb3VibGU+KG1OdW1TdGVwc1Bl
cmZvcm1lZCkgLyBtVGltZXItPmdldEVsYXBzZWRUaW1lKCk7CisgICAgcHJpbnRSZXN1bHQoInNj
b3JlIiwgc3RhdGljX2Nhc3Q8c2l6ZV90PihzdGQ6OnJvdW5kKHJlbGF0aXZlU2NvcmUpKSwgInNj
b3JlIiwgdHJ1ZSk7Cit9CisKK2RvdWJsZSBBTkdMRVBlcmZUZXN0Ojpub3JtYWxpemVkVGltZShz
aXplX3QgdmFsdWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4odmFs
dWUpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihtTnVtU3RlcHNQZXJmb3JtZWQpOworfQorCitzdGQ6
OnN0cmluZyBSZW5kZXJUZXN0UGFyYW1zOjpzdWZmaXgoKSBjb25zdAoreworICAgIHN3aXRjaCAo
Z2V0UmVuZGVyZXIoKSkKKyAgICB7CisgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZ
UEVfRDNEMTFfQU5HTEU6CisgICAgICAgICAgICByZXR1cm4gIl9kM2QxMSI7CisgICAgICAgIGNh
c2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEOV9BTkdMRToKKyAgICAgICAgICAgIHJldHVy
biAiX2QzZDkiOworICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9B
TkdMRToKKyAgICAgICAgICAgIHJldHVybiAiX2dsIjsKKyAgICAgICAgY2FzZSBFR0xfUExBVEZP
Uk1fQU5HTEVfVFlQRV9PUEVOR0xFU19BTkdMRToKKyAgICAgICAgICAgIHJldHVybiAiX2dsZXMi
OworICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0RFRkFVTFRfQU5HTEU6Cisg
ICAgICAgICAgICByZXR1cm4gIl9kZWZhdWx0IjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIGFzc2VydCgwKTsKKyAgICAgICAgICAgIHJldHVybiAiX3VuayI7CisgICAgfQorfQorCitB
TkdMRVJlbmRlclRlc3Q6OkFOR0xFUmVuZGVyVGVzdChjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSwg
Y29uc3QgUmVuZGVyVGVzdFBhcmFtcyAmdGVzdFBhcmFtcykKKyAgICA6IEFOR0xFUGVyZlRlc3Qo
bmFtZSwgdGVzdFBhcmFtcy5zdWZmaXgoKSksCisgICAgICBtVGVzdFBhcmFtcyh0ZXN0UGFyYW1z
KSwKKyAgICAgIG1FR0xXaW5kb3cobnVsbHB0ciksCisgICAgICBtT1NXaW5kb3cobnVsbHB0cikK
K3sKK30KKworQU5HTEVSZW5kZXJUZXN0Ojp+QU5HTEVSZW5kZXJUZXN0KCkKK3sKKyAgICBTYWZl
RGVsZXRlKG1PU1dpbmRvdyk7CisgICAgU2FmZURlbGV0ZShtRUdMV2luZG93KTsKK30KKwordm9p
ZCBBTkdMRVJlbmRlclRlc3Q6OlNldFVwKCkKK3sKKyAgICBtT1NXaW5kb3cgPSBDcmVhdGVPU1dp
bmRvdygpOworICAgIG1FR0xXaW5kb3cgPSBuZXcgRUdMV2luZG93KG1UZXN0UGFyYW1zLm1ham9y
VmVyc2lvbiwgbVRlc3RQYXJhbXMubWlub3JWZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1UZXN0UGFyYW1zLmVnbFBhcmFtZXRlcnMpOworICAgIG1FR0xXaW5kb3ctPnNl
dFN3YXBJbnRlcnZhbCgwKTsKKworICAgIGlmICghbU9TV2luZG93LT5pbml0aWFsaXplKG1OYW1l
LCBtVGVzdFBhcmFtcy53aW5kb3dXaWR0aCwgbVRlc3RQYXJhbXMud2luZG93SGVpZ2h0KSkKKyAg
ICB7CisgICAgICAgIEZBSUwoKSA8PCAiRmFpbGVkIGluaXRpYWxpemluZyBPU1dpbmRvdyI7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1FR0xXaW5kb3ctPmluaXRpYWxpemVH
TChtT1NXaW5kb3cpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJGYWlsZWQgaW5pdGlhbGl6
aW5nIEVHTFdpbmRvdyI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbml0aWFsaXpl
QmVuY2htYXJrKCk7CisKKyAgICBBTkdMRVBlcmZUZXN0OjpTZXRVcCgpOworfQorCit2b2lkIEFO
R0xFUmVuZGVyVGVzdDo6VGVhckRvd24oKQoreworICAgIEFOR0xFUGVyZlRlc3Q6OlRlYXJEb3du
KCk7CisKKyAgICBkZXN0cm95QmVuY2htYXJrKCk7CisKKyAgICBtRUdMV2luZG93LT5kZXN0cm95
R0woKTsKKyAgICBtT1NXaW5kb3ctPmRlc3Ryb3koKTsKK30KKwordm9pZCBBTkdMRVJlbmRlclRl
c3Q6OnN0ZXAoKQoreworICAgIC8vIENsZWFyIGV2ZW50cyB0aGF0IHRoZSBhcHBsaWNhdGlvbiBk
aWQgbm90IHByb2Nlc3MgZnJvbSB0aGlzIGZyYW1lCisgICAgRXZlbnQgZXZlbnQ7CisgICAgYm9v
bCBjbG9zZWQgPSBmYWxzZTsKKyAgICB3aGlsZSAocG9wRXZlbnQoJmV2ZW50KSkKKyAgICB7Cisg
ICAgICAgIC8vIElmIHRoZSBhcHBsaWNhdGlvbiBkaWQgbm90IGNhdGNoIGEgY2xvc2UgZXZlbnQs
IGNsb3NlIG5vdworICAgICAgICBpZiAoZXZlbnQuVHlwZSA9PSBFdmVudDo6RVZFTlRfQ0xPU0VE
KQorICAgICAgICB7CisgICAgICAgICAgICBjbG9zZWQgPSB0cnVlOworICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKGNsb3NlZCkKKyAgICB7CisgICAgICAgIGFib3J0VGVzdCgpOworICAgIH0K
KyAgICBlbHNlCisgICAgeworICAgICAgICBkcmF3QmVuY2htYXJrKCk7CisgICAgICAgIC8vIFN3
YXAgaXMgbmVlZGVkIHNvIHRoYXQgdGhlIEdQVSBkcml2ZXIgd2lsbCBvY2Nhc2lvbmFsbHkgZmx1
c2ggaXRzIGludGVybmFsIGNvbW1hbmQgcXVldWUKKyAgICAgICAgLy8gdG8gdGhlIEdQVS4gVGhl
IG51bGwgZGV2aWNlIGJlbmNobWFya3MgYXJlIG9ubHkgdGVzdGluZyBDUFUgb3ZlcmhlYWQsIHNv
IHRoZXkgZG9uJ3QgbmVlZAorICAgICAgICAvLyB0byBzd2FwLgorICAgICAgICBpZiAobVRlc3RQ
YXJhbXMuZWdsUGFyYW1ldGVycy5kZXZpY2VUeXBlICE9IEVHTF9QTEFURk9STV9BTkdMRV9ERVZJ
Q0VfVFlQRV9OVUxMX0FOR0xFKQorICAgICAgICB7CisgICAgICAgICAgICBtRUdMV2luZG93LT5z
d2FwKCk7CisgICAgICAgIH0KKyAgICAgICAgbU9TV2luZG93LT5tZXNzYWdlTG9vcCgpOworICAg
IH0KK30KKwordm9pZCBBTkdMRVJlbmRlclRlc3Q6OmZpbmlzaFRlc3QoKQoreworICAgIGlmICht
VGVzdFBhcmFtcy5lZ2xQYXJhbWV0ZXJzLmRldmljZVR5cGUgIT0gRUdMX1BMQVRGT1JNX0FOR0xF
X0RFVklDRV9UWVBFX05VTExfQU5HTEUpCisgICAgeworICAgICAgICBnbEZpbmlzaCgpOworICAg
IH0KK30KKworYm9vbCBBTkdMRVJlbmRlclRlc3Q6OnBvcEV2ZW50KEV2ZW50ICpldmVudCkKK3sK
KyAgICByZXR1cm4gbU9TV2luZG93LT5wb3BFdmVudChldmVudCk7Cit9CisKK09TV2luZG93ICpB
TkdMRVJlbmRlclRlc3Q6OmdldFdpbmRvdygpCit7CisgICAgcmV0dXJuIG1PU1dpbmRvdzsKK30K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0FOR0xF
UGVyZlRlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvcGVyZl90ZXN0cy9BTkdMRVBlcmZUZXN0LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvQU5HTEVQZXJmVGVzdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA3IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE0IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEFOR0xFUGVyZlRl
c3RzOgorLy8gICBCYXNlIGNsYXNzIGZvciBnb29nbGUgdGVzdCBwZXJmb3JtYW5jZSB0ZXN0cwor
Ly8KKworI2lmbmRlZiBQRVJGX1RFU1RTX0FOR0xFX1BFUkZfVEVTVF9IXworI2RlZmluZSBQRVJG
X1RFU1RTX0FOR0xFX1BFUkZfVEVTVF9IXworCisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUg
PHZlY3Rvcj4KKworI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8RUdML2VnbC5o
PgorI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KKworI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxz
LmgiCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisjaW5jbHVkZSAiRUdMV2luZG93LmgiCisj
aW5jbHVkZSAiT1NXaW5kb3cuaCIKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfY29u
Zmlncy5oIgorI2luY2x1ZGUgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0ZS5oIgor
I2luY2x1ZGUgIlRpbWVyLmgiCisKK2NsYXNzIEV2ZW50OworCisjaWZuZGVmIEFTU0VSVF9HTF9O
T19FUlJPUgorI2RlZmluZSBBU1NFUlRfR0xfTk9fRVJST1IoKSBBU1NFUlRfRVEoc3RhdGljX2Nh
c3Q8R0xlbnVtPihHTF9OT19FUlJPUiksIGdsR2V0RXJyb3IoKSkKKyNlbmRpZgorCitjbGFzcyBB
TkdMRVBlcmZUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QsIGFuZ2xlOjpOb25Db3B5YWJsZQor
eworICBwdWJsaWM6CisgICAgQU5HTEVQZXJmVGVzdChjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSwg
Y29uc3Qgc3RkOjpzdHJpbmcgJnN1ZmZpeCk7CisgICAgdmlydHVhbCB+QU5HTEVQZXJmVGVzdCgp
OworCisgICAgdmlydHVhbCB2b2lkIHN0ZXAoKSA9IDA7CisKKyAgICAvLyBDYWxsZWQgcmlnaHQg
YmVmb3JlIHRpbWVyIGlzIHN0b3BwZWQgdG8gbGV0IHRoZSB0ZXN0IHdhaXQgZm9yIGFzeW5jaHJv
bm91cyBvcGVyYXRpb25zLgorICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hUZXN0KCkge30KKworICBw
cm90ZWN0ZWQ6CisgICAgdm9pZCBydW4oKTsKKyAgICB2b2lkIHByaW50UmVzdWx0KGNvbnN0IHN0
ZDo6c3RyaW5nICZ0cmFjZSwgZG91YmxlIHZhbHVlLCBjb25zdCBzdGQ6OnN0cmluZyAmdW5pdHMs
IGJvb2wgaW1wb3J0YW50KSBjb25zdDsKKyAgICB2b2lkIHByaW50UmVzdWx0KGNvbnN0IHN0ZDo6
c3RyaW5nICZ0cmFjZSwgc2l6ZV90IHZhbHVlLCBjb25zdCBzdGQ6OnN0cmluZyAmdW5pdHMsIGJv
b2wgaW1wb3J0YW50KSBjb25zdDsKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBUZWFyRG93bigpIG92ZXJyaWRlOworCisgICAgLy8gTm9ybWFsaXplIGEgdGltZSB2YWx1ZSBh
Y2NvcmRpbmcgdG8gdGhlIG51bWJlciBvZiB0ZXN0IGxvb3AgaXRlcmF0aW9ucyAobUZyYW1lQ291
bnQpCisgICAgZG91YmxlIG5vcm1hbGl6ZWRUaW1lKHNpemVfdCB2YWx1ZSkgY29uc3Q7CisKKyAg
ICAvLyBDYWxsIGlmIHRoZSB0ZXN0IHN0ZXAgd2FzIGFib3J0ZWQgYW5kIHRoZSB0ZXN0IHNob3Vs
ZCBzdG9wIHJ1bm5pbmcuCisgICAgdm9pZCBhYm9ydFRlc3QoKSB7IG1SdW5uaW5nID0gZmFsc2U7
IH0KKworICAgIHVuc2lnbmVkIGludCBnZXROdW1TdGVwc1BlcmZvcm1lZCgpIGNvbnN0IHsgcmV0
dXJuIG1OdW1TdGVwc1BlcmZvcm1lZDsgfQorCisgICAgc3RkOjpzdHJpbmcgbU5hbWU7CisgICAg
c3RkOjpzdHJpbmcgbVN1ZmZpeDsKKyAgICBUaW1lciAqbVRpbWVyOworICAgIGRvdWJsZSBtUnVu
VGltZVNlY29uZHM7CisKKyAgcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBpbnQgbU51bVN0ZXBzUGVy
Zm9ybWVkOworICAgIGJvb2wgbVJ1bm5pbmc7Cit9OworCitzdHJ1Y3QgUmVuZGVyVGVzdFBhcmFt
cyA6IHB1YmxpYyBhbmdsZTo6UGxhdGZvcm1QYXJhbWV0ZXJzCit7CisgICAgdmlydHVhbCBzdGQ6
OnN0cmluZyBzdWZmaXgoKSBjb25zdDsKKworICAgIEVHTGludCB3aW5kb3dXaWR0aDsKKyAgICBF
R0xpbnQgd2luZG93SGVpZ2h0OworfTsKKworY2xhc3MgQU5HTEVSZW5kZXJUZXN0IDogcHVibGlj
IEFOR0xFUGVyZlRlc3QKK3sKKyAgcHVibGljOgorICAgIEFOR0xFUmVuZGVyVGVzdChjb25zdCBz
dGQ6OnN0cmluZyAmbmFtZSwgY29uc3QgUmVuZGVyVGVzdFBhcmFtcyAmdGVzdFBhcmFtcyk7Cisg
ICAgfkFOR0xFUmVuZGVyVGVzdCgpOworCisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVCZW5j
aG1hcmsoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveUJlbmNobWFyaygpIHsgfQorCisg
ICAgdmlydHVhbCB2b2lkIGRyYXdCZW5jaG1hcmsoKSA9IDA7CisKKyAgICBib29sIHBvcEV2ZW50
KEV2ZW50ICpldmVudCk7CisKKyAgICBPU1dpbmRvdyAqZ2V0V2luZG93KCk7CisKKyAgcHJvdGVj
dGVkOgorICAgIGNvbnN0IFJlbmRlclRlc3RQYXJhbXMgJm1UZXN0UGFyYW1zOworCisgIHByaXZh
dGU6CisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlOworICAgIHZvaWQgVGVhckRvd24oKSBvdmVy
cmlkZTsKKworICAgIHZvaWQgc3RlcCgpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoVGVzdCgp
IG92ZXJyaWRlOworCisgICAgRUdMV2luZG93ICptRUdMV2luZG93OworICAgIE9TV2luZG93ICpt
T1NXaW5kb3c7Cit9OworCisjZW5kaWYgLy8gUEVSRl9URVNUU19BTkdMRV9QRVJGX1RFU1RfSF8K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0J1ZmZl
clN1YkRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9wZXJmX3Rlc3RzL0J1ZmZlclN1YkRhdGEuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0J1ZmZlclN1YkRhdGEuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDE4IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAy
MDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEJ1ZmZl
clN1YkRhdGFCZW5jaG1hcms6CisvLyAgIFBlcmZvcm1hbmNlIHRlc3QgZm9yIEFOR0xFIGJ1ZmZl
ciB1cGRhdGVzLgorLy8KKworI2luY2x1ZGUgPHNzdHJlYW0+CisKKyNpbmNsdWRlICJBTkdMRVBl
cmZUZXN0LmgiCisjaW5jbHVkZSAic2hhZGVyX3V0aWxzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBh
bmdsZTsKKworbmFtZXNwYWNlCit7CisKK3N0cnVjdCBCdWZmZXJTdWJEYXRhUGFyYW1zIGZpbmFs
IDogcHVibGljIFJlbmRlclRlc3RQYXJhbXMKK3sKKyAgICBCdWZmZXJTdWJEYXRhUGFyYW1zKCkK
KyAgICB7CisgICAgICAgIC8vIENvbW1vbiBkZWZhdWx0IHZhbHVlcworICAgICAgICBtYWpvclZl
cnNpb24gPSAyOworICAgICAgICBtaW5vclZlcnNpb24gPSAwOworICAgICAgICB3aW5kb3dXaWR0
aCA9IDUxMjsKKyAgICAgICAgd2luZG93SGVpZ2h0ID0gNTEyOworICAgICAgICB1cGRhdGVTaXpl
ID0gMzAwMDsKKyAgICAgICAgYnVmZmVyU2l6ZSA9IDQwMDAwMDAwOworICAgICAgICBpdGVyYXRp
b25zICAgPSA0OworICAgICAgICB1cGRhdGVSYXRlID0gMTsKKyAgICB9CisKKyAgICBzdGQ6OnN0
cmluZyBzdWZmaXgoKSBjb25zdCBvdmVycmlkZTsKKworICAgIEdMYm9vbGVhbiB2ZXJ0ZXhOb3Jt
YWxpemVkOworICAgIEdMZW51bSB2ZXJ0ZXhUeXBlOworICAgIEdMaW50IHZlcnRleENvbXBvbmVu
dENvdW50OworICAgIHVuc2lnbmVkIGludCB1cGRhdGVSYXRlOworCisgICAgLy8gc3RhdGljIHBh
cmFtZXRlcnMKKyAgICBHTHNpemVpcHRyIHVwZGF0ZVNpemU7CisgICAgR0xzaXplaXB0ciBidWZm
ZXJTaXplOworICAgIHVuc2lnbmVkIGludCBpdGVyYXRpb25zOworfTsKKworc3RkOjpvc3RyZWFt
ICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmb3MsIGNvbnN0IEJ1ZmZlclN1YkRhdGFQYXJhbXMg
JnBhcmFtcykKK3sKKyAgICBvcyA8PCBwYXJhbXMuc3VmZml4KCkuc3Vic3RyKDEpOworICAgIHJl
dHVybiBvczsKK30KKworY2xhc3MgQnVmZmVyU3ViRGF0YUJlbmNobWFyayA6IHB1YmxpYyBBTkdM
RVJlbmRlclRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIDo6dGVz
dGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPEJ1ZmZlclN1YkRhdGFQYXJhbXM+Cit7CisgIHB1Ymxp
YzoKKyAgICBCdWZmZXJTdWJEYXRhQmVuY2htYXJrKCk7CisKKyAgICB2b2lkIGluaXRpYWxpemVC
ZW5jaG1hcmsoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlc3Ryb3lCZW5jaG1hcmsoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRyYXdCZW5jaG1hcmsoKSBvdmVycmlkZTsKKworICBwcml2YXRlOgorICAg
IEdMdWludCBtUHJvZ3JhbTsKKyAgICBHTHVpbnQgbUJ1ZmZlcjsKKyAgICB1aW50OF90ICptVXBk
YXRlRGF0YTsKKyAgICBpbnQgbU51bVRyaXM7Cit9OworCitHTGZsb2F0ICpHZXRGbG9hdERhdGEo
R0xpbnQgY29tcG9uZW50Q291bnQpCit7CisgICAgc3RhdGljIEdMZmxvYXQgdmVydGljZXMyW10g
PQorICAgIHsKKyAgICAgICAgMSwgMiwKKyAgICAgICAgMCwgMCwKKyAgICAgICAgMiwgMCwKKyAg
ICB9OworCisgICAgc3RhdGljIEdMZmxvYXQgdmVydGljZXMzW10gPQorICAgIHsKKyAgICAgICAg
MSwgMiwgMSwKKyAgICAgICAgMCwgMCwgMSwKKyAgICAgICAgMiwgMCwgMSwKKyAgICB9OworCisg
ICAgc3RhdGljIEdMZmxvYXQgdmVydGljZXM0W10gPQorICAgIHsKKyAgICAgICAgMSwgMiwgMSwg
MywKKyAgICAgICAgMCwgMCwgMSwgMywKKyAgICAgICAgMiwgMCwgMSwgMywKKyAgICB9OworCisg
ICAgc3dpdGNoIChjb21wb25lbnRDb3VudCkKKyAgICB7CisgICAgICAgIGNhc2UgMjoKKyAgICAg
ICAgICAgIHJldHVybiB2ZXJ0aWNlczI7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgIHJl
dHVybiB2ZXJ0aWNlczM7CisgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgIHJldHVybiB2ZXJ0
aWNlczQ7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPgorR0xzaXplaXB0ciBHZXROb3JtYWxpemVkRGF0
YShHTHNpemVpcHRyIG51bUVsZW1lbnRzLCBHTGZsb2F0ICpmbG9hdERhdGEsIHN0ZDo6dmVjdG9y
PHVpbnQ4X3Q+ICpkYXRhKQoreworICAgIEdMc2l6ZWlwdHIgdHJpRGF0YVNpemUgPSBzaXplb2Yo
VCkgKiBudW1FbGVtZW50czsKKyAgICBkYXRhLT5yZXNpemUodHJpRGF0YVNpemUpOworCisgICAg
VCAqZGVzdFB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KGRhdGEtPmRhdGEoKSk7CisKKyAgICBm
b3IgKEdMc2l6ZWlwdHIgZGF0YUluZGV4ID0gMDsgZGF0YUluZGV4IDwgbnVtRWxlbWVudHM7IGRh
dGFJbmRleCsrKQorICAgIHsKKyAgICAgICAgR0xmbG9hdCBzY2FsZWQgPSBmbG9hdERhdGFbZGF0
YUluZGV4XSAqIDAuMjVmOworICAgICAgICBkZXN0UHRyW2RhdGFJbmRleF0gPSBzdGF0aWNfY2Fz
dDxUPihzY2FsZWQgKiBzdGF0aWNfY2FzdDxHTGZsb2F0PihzdGQ6Om51bWVyaWNfbGltaXRzPFQ+
OjptYXgoKSkpOworICAgIH0KKworICAgIHJldHVybiB0cmlEYXRhU2l6ZTsKK30KKwordGVtcGxh
dGUgPGNsYXNzIFQ+CitHTHNpemVpcHRyIEdldEludERhdGEoR0xzaXplaXB0ciBudW1FbGVtZW50
cywgR0xmbG9hdCAqZmxvYXREYXRhLCBzdGQ6OnZlY3Rvcjx1aW50OF90PiAqZGF0YSkKK3sKKyAg
ICBHTHNpemVpcHRyIHRyaURhdGFTaXplID0gc2l6ZW9mKFQpICogbnVtRWxlbWVudHM7CisgICAg
ZGF0YS0+cmVzaXplKHRyaURhdGFTaXplKTsKKworICAgIFQgKmRlc3RQdHIgPSByZWludGVycHJl
dF9jYXN0PFQqPihkYXRhLT5kYXRhKCkpOworCisgICAgZm9yIChHTHNpemVpcHRyIGRhdGFJbmRl
eCA9IDA7IGRhdGFJbmRleCA8IG51bUVsZW1lbnRzOyBkYXRhSW5kZXgrKykKKyAgICB7CisgICAg
ICAgIGRlc3RQdHJbZGF0YUluZGV4XSA9IHN0YXRpY19jYXN0PFQ+KGZsb2F0RGF0YVtkYXRhSW5k
ZXhdKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJpRGF0YVNpemU7Cit9CisKK0dMc2l6ZWlwdHIg
R2V0VmVydGV4RGF0YShHTGVudW0gdHlwZSwgR0xpbnQgY29tcG9uZW50Q291bnQsIEdMYm9vbGVh
biBub3JtYWxpemVkLCBzdGQ6OnZlY3Rvcjx1aW50OF90PiAqZGF0YSkKK3sKKyAgICBHTHNpemVp
cHRyIHRyaURhdGFTaXplID0gMDsKKyAgICBHTGZsb2F0ICpmbG9hdERhdGEgPSBHZXRGbG9hdERh
dGEoY29tcG9uZW50Q291bnQpOworCisgICAgaWYgKHR5cGUgPT0gR0xfRkxPQVQpCisgICAgewor
ICAgICAgICB0cmlEYXRhU2l6ZSA9IHNpemVvZihHTGZsb2F0KSAqIGNvbXBvbmVudENvdW50ICog
MzsKKyAgICAgICAgZGF0YS0+cmVzaXplKHRyaURhdGFTaXplKTsKKyAgICAgICAgbWVtY3B5KGRh
dGEtPmRhdGEoKSwgZmxvYXREYXRhLCB0cmlEYXRhU2l6ZSk7CisgICAgfQorICAgIGVsc2UgaWYg
KG5vcm1hbGl6ZWQgPT0gR0xfVFJVRSkKKyAgICB7CisgICAgICAgIEdMc2l6ZWlwdHIgbnVtRWxl
bWVudHMgPSBjb21wb25lbnRDb3VudCAqIDM7CisKKyAgICAgICAgc3dpdGNoICh0eXBlKQorICAg
ICAgICB7CisgICAgICAgICAgICBjYXNlIEdMX0JZVEU6CisgICAgICAgICAgICAgICAgdHJpRGF0
YVNpemUgPSBHZXROb3JtYWxpemVkRGF0YTxHTGJ5dGU+KG51bUVsZW1lbnRzLCBmbG9hdERhdGEs
IGRhdGEpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBHTF9TSE9S
VDoKKyAgICAgICAgICAgICAgICB0cmlEYXRhU2l6ZSA9IEdldE5vcm1hbGl6ZWREYXRhPEdMc2hv
cnQ+KG51bUVsZW1lbnRzLCBmbG9hdERhdGEsIGRhdGEpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBHTF9JTlQ6CisgICAgICAgICAgICAgICAgdHJpRGF0YVNpemUg
PSBHZXROb3JtYWxpemVkRGF0YTxHTGludD4obnVtRWxlbWVudHMsIGZsb2F0RGF0YSwgZGF0YSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZ
VEU6CisgICAgICAgICAgICAgICAgdHJpRGF0YVNpemUgPSBHZXROb3JtYWxpemVkRGF0YTxHTHVi
eXRlPihudW1FbGVtZW50cywgZmxvYXREYXRhLCBkYXRhKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAgICAgICAgICAgICAg
dHJpRGF0YVNpemUgPSBHZXROb3JtYWxpemVkRGF0YTxHTHVzaG9ydD4obnVtRWxlbWVudHMsIGZs
b2F0RGF0YSwgZGF0YSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IEdMX1VOU0lHTkVEX0lOVDoKKyAgICAgICAgICAgICAgICB0cmlEYXRhU2l6ZSA9IEdldE5vcm1h
bGl6ZWREYXRhPEdMdWludD4obnVtRWxlbWVudHMsIGZsb2F0RGF0YSwgZGF0YSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGFz
c2VydCgwKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBHTHNp
emVpcHRyIG51bUVsZW1lbnRzID0gY29tcG9uZW50Q291bnQgKiAzOworCisgICAgICAgIHN3aXRj
aCAodHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSBHTF9CWVRFOgorICAgICAgICAg
ICAgICAgIHRyaURhdGFTaXplID0gR2V0SW50RGF0YTxHTGJ5dGU+KG51bUVsZW1lbnRzLCBmbG9h
dERhdGEsIGRhdGEpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBH
TF9TSE9SVDoKKyAgICAgICAgICAgICAgICB0cmlEYXRhU2l6ZSA9IEdldEludERhdGE8R0xzaG9y
dD4obnVtRWxlbWVudHMsIGZsb2F0RGF0YSwgZGF0YSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIEdMX0lOVDoKKyAgICAgICAgICAgICAgICB0cmlEYXRhU2l6ZSA9
IEdldEludERhdGE8R0xpbnQ+KG51bUVsZW1lbnRzLCBmbG9hdERhdGEsIGRhdGEpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAg
ICAgICAgICAgICAgIHRyaURhdGFTaXplID0gR2V0SW50RGF0YTxHTHVieXRlPihudW1FbGVtZW50
cywgZmxvYXREYXRhLCBkYXRhKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAgICAgICAgICAgICAgdHJpRGF0YVNpemUgPSBH
ZXRJbnREYXRhPEdMdXNob3J0PihudW1FbGVtZW50cywgZmxvYXREYXRhLCBkYXRhKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgorICAg
ICAgICAgICAgICAgIHRyaURhdGFTaXplID0gR2V0SW50RGF0YTxHTHVpbnQ+KG51bUVsZW1lbnRz
LCBmbG9hdERhdGEsIGRhdGEpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICByZXR1cm4gdHJpRGF0YVNpemU7Cit9CisKK3N0ZDo6c3RyaW5nIEJ1ZmZlclN1YkRhdGFQ
YXJhbXM6OnN1ZmZpeCgpIGNvbnN0Cit7CisgICAgc3RkOjpzdHJpbmdzdHJlYW0gc3Ryc3RyOwor
CisgICAgc3Ryc3RyIDw8IFJlbmRlclRlc3RQYXJhbXM6OnN1ZmZpeCgpOworCisgICAgaWYgKHZl
cnRleE5vcm1hbGl6ZWQpCisgICAgeworICAgICAgICBzdHJzdHIgPDwgIl9ub3JtIjsKKyAgICB9
CisKKyAgICBzd2l0Y2ggKHZlcnRleFR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX0ZMT0FU
OgorICAgICAgICAgICAgc3Ryc3RyIDw8ICJfZmxvYXQiOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgR0xfSU5UOgorICAgICAgICAgICAgc3Ryc3RyIDw8ICJfaW50IjsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX0JZVEU6CisgICAgICAgICAgICBzdHJzdHIg
PDwgIl9ieXRlIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1NIT1JUOgor
ICAgICAgICAgICAgc3Ryc3RyIDw8ICJfc2hvcnQiOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgorICAgICAgICAgICAgc3Ryc3RyIDw8ICJfdWludCI7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAg
ICAgICAgICAgc3Ryc3RyIDw8ICJfdWJ5dGUiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAgICAgICAgICBzdHJzdHIgPDwgIl91c2hvcnQi
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBzdHJz
dHIgPDwgIl92dW5rXyIgPDwgdmVydGV4VHlwZSA8PCAiXyI7CisgICAgICAgICAgICBicmVhazsK
KyAgICB9CisKKyAgICBzdHJzdHIgPDwgdmVydGV4Q29tcG9uZW50Q291bnQ7CisgICAgc3Ryc3Ry
IDw8ICJfZXZlcnkiIDw8IHVwZGF0ZVJhdGU7CisKKyAgICByZXR1cm4gc3Ryc3RyLnN0cigpOwor
fQorCitCdWZmZXJTdWJEYXRhQmVuY2htYXJrOjpCdWZmZXJTdWJEYXRhQmVuY2htYXJrKCkKKyAg
ICA6IEFOR0xFUmVuZGVyVGVzdCgiQnVmZmVyU3ViRGF0YSIsIEdldFBhcmFtKCkpLAorICAgICAg
bVByb2dyYW0oMCksCisgICAgICBtQnVmZmVyKDApLAorICAgICAgbVVwZGF0ZURhdGEobnVsbHB0
ciksCisgICAgICBtTnVtVHJpcygwKQoreworfQorCit2b2lkIEJ1ZmZlclN1YkRhdGFCZW5jaG1h
cms6OmluaXRpYWxpemVCZW5jaG1hcmsoKQoreworICAgIGNvbnN0IGF1dG8gJnBhcmFtcyA9IEdl
dFBhcmFtKCk7CisKKyAgICBBU1NFUlRfTFQoMSwgcGFyYW1zLnZlcnRleENvbXBvbmVudENvdW50
KTsKKyAgICBBU1NFUlRfTFQoMHUsIHBhcmFtcy5pdGVyYXRpb25zKTsKKworICAgIGNvbnN0IHN0
ZDo6c3RyaW5nIHZzID0gU0hBREVSX1NPVVJDRQorICAgICgKKyAgICAgICAgYXR0cmlidXRlIHZl
YzIgdlBvc2l0aW9uOworICAgICAgICB1bmlmb3JtIGZsb2F0IHVTY2FsZTsKKyAgICAgICAgdW5p
Zm9ybSBmbG9hdCB1T2Zmc2V0OworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAg
ICAgICAgICBnbF9Qb3NpdGlvbiA9IHZlYzQodlBvc2l0aW9uICogdmVjMih1U2NhbGUpIC0gdmVj
Mih1T2Zmc2V0KSwgMCwgMSk7CisgICAgICAgIH0KKyAgICApOworCisgICAgY29uc3Qgc3RkOjpz
dHJpbmcgZnMgPSBTSEFERVJfU09VUkNFCisgICAgKAorICAgICAgICBwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xf
RnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApOworICAgICAgICB9CisgICAgKTsK
KworICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odnMsIGZzKTsKKyAgICBBU1NFUlRfTkUo
MHUsIG1Qcm9ncmFtKTsKKworICAgIC8vIFVzZSB0aGUgcHJvZ3JhbSBvYmplY3QKKyAgICBnbFVz
ZVByb2dyYW0obVByb2dyYW0pOworCisgICAgZ2xDbGVhckNvbG9yKDAuMGYsIDAuMGYsIDAuMGYs
IDAuMGYpOworCisKKyAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiB6ZXJvRGF0YShwYXJhbXMuYnVm
ZmVyU2l6ZSk7CisgICAgbWVtc2V0KCZ6ZXJvRGF0YVswXSwgMCwgemVyb0RhdGEuc2l6ZSgpKTsK
KworICAgIGdsR2VuQnVmZmVycygxLCAmbUJ1ZmZlcik7CisgICAgZ2xCaW5kQnVmZmVyKEdMX0FS
UkFZX0JVRkZFUiwgbUJ1ZmZlcik7CisgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwg
cGFyYW1zLmJ1ZmZlclNpemUsICZ6ZXJvRGF0YVswXSwgR0xfRFlOQU1JQ19EUkFXKTsKKworICAg
IGdsVmVydGV4QXR0cmliUG9pbnRlcigwLCBwYXJhbXMudmVydGV4Q29tcG9uZW50Q291bnQsIHBh
cmFtcy52ZXJ0ZXhUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudmVydGV4
Tm9ybWFsaXplZCwgMCwgMCk7CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKwor
ICAgIGlmIChwYXJhbXMudXBkYXRlU2l6ZSA+IDApCisgICAgeworICAgICAgICBtVXBkYXRlRGF0
YSA9IG5ldyB1aW50OF90W3BhcmFtcy51cGRhdGVTaXplXTsKKyAgICB9CisKKyAgICBzdGQ6OnZl
Y3Rvcjx1aW50OF90PiBkYXRhOworICAgIEdMc2l6ZWkgdHJpRGF0YVNpemUgPSBzdGF0aWNfY2Fz
dDxHTHNpemVpPihHZXRWZXJ0ZXhEYXRhKHBhcmFtcy52ZXJ0ZXhUeXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy52
ZXJ0ZXhDb21wb25lbnRDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudmVydGV4Tm9ybWFsaXplZCwgJmRhdGEp
KTsKKworICAgIG1OdW1UcmlzID0gc3RhdGljX2Nhc3Q8aW50PihwYXJhbXMudXBkYXRlU2l6ZSAv
IHRyaURhdGFTaXplKTsKKyAgICBmb3IgKGludCBpID0gMCwgb2Zmc2V0ID0gMDsgaSA8IG1OdW1U
cmlzOyArK2kpCisgICAgeworICAgICAgICBtZW1jcHkobVVwZGF0ZURhdGEgKyBvZmZzZXQsICZk
YXRhWzBdLCB0cmlEYXRhU2l6ZSk7CisgICAgICAgIG9mZnNldCArPSB0cmlEYXRhU2l6ZTsKKyAg
ICB9CisKKyAgICBpZiAocGFyYW1zLnVwZGF0ZVNpemUgPT0gMCkKKyAgICB7CisgICAgICAgIG1O
dW1UcmlzID0gMTsKKyAgICAgICAgZ2xCdWZmZXJTdWJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgMCwg
ZGF0YS5zaXplKCksICZkYXRhWzBdKTsKKyAgICB9CisKKyAgICAvLyBTZXQgdGhlIHZpZXdwb3J0
CisgICAgZ2xWaWV3cG9ydCgwLCAwLCBnZXRXaW5kb3coKS0+Z2V0V2lkdGgoKSwgZ2V0V2luZG93
KCktPmdldEhlaWdodCgpKTsKKworICAgIEdMZmxvYXQgc2NhbGUgPSAwLjVmOworICAgIEdMZmxv
YXQgb2Zmc2V0ID0gMC41ZjsKKworICAgIGlmIChwYXJhbXMudmVydGV4Tm9ybWFsaXplZCA9PSBH
TF9UUlVFKQorICAgIHsKKyAgICAgICAgc2NhbGUgPSAyLjBmOworICAgICAgICBvZmZzZXQgPSAw
LjVmOworICAgIH0KKworICAgIGdsVW5pZm9ybTFmKGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9n
cmFtLCAidVNjYWxlIiksIHNjYWxlKTsKKyAgICBnbFVuaWZvcm0xZihnbEdldFVuaWZvcm1Mb2Nh
dGlvbihtUHJvZ3JhbSwgInVPZmZzZXQiKSwgb2Zmc2V0KTsKKworICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOworfQorCit2b2lkIEJ1ZmZlclN1YkRhdGFCZW5jaG1hcms6OmRlc3Ryb3lCZW5jaG1h
cmsoKQoreworICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgZ2xEZWxldGVCdWZm
ZXJzKDEsICZtQnVmZmVyKTsKKyAgICBTYWZlRGVsZXRlQXJyYXkobVVwZGF0ZURhdGEpOworfQor
Cit2b2lkIEJ1ZmZlclN1YkRhdGFCZW5jaG1hcms6OmRyYXdCZW5jaG1hcmsoKQoreworICAgIGds
Q2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisKKyAgICBjb25zdCBhdXRvICZwYXJhbXMgPSBH
ZXRQYXJhbSgpOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaXQgPSAwOyBpdCA8IHBhcmFtcy5p
dGVyYXRpb25zOyBpdCsrKQorICAgIHsKKyAgICAgICAgaWYgKHBhcmFtcy51cGRhdGVTaXplID4g
MCAmJiAoKGdldE51bVN0ZXBzUGVyZm9ybWVkKCkgJSBwYXJhbXMudXBkYXRlUmF0ZSkgPT0gMCkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGdsQnVmZmVyU3ViRGF0YShHTF9BUlJBWV9CVUZGRVIs
IDAsIHBhcmFtcy51cGRhdGVTaXplLCBtVXBkYXRlRGF0YSk7CisgICAgICAgIH0KKworICAgICAg
ICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVTLCAwLCAzICogbU51bVRyaXMpOworICAgIH0KKwor
ICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworfQorCitCdWZmZXJTdWJEYXRhUGFyYW1zIEJ1ZmZl
clVwZGF0ZUQzRDExUGFyYW1zKCkKK3sKKyAgICBCdWZmZXJTdWJEYXRhUGFyYW1zIHBhcmFtczsK
KyAgICBwYXJhbXMuZWdsUGFyYW1ldGVycyA9IGVnbF9wbGF0Zm9ybTo6RDNEMTEoKTsKKyAgICBw
YXJhbXMudmVydGV4VHlwZSA9IEdMX0ZMT0FUOworICAgIHBhcmFtcy52ZXJ0ZXhDb21wb25lbnRD
b3VudCA9IDQ7CisgICAgcGFyYW1zLnZlcnRleE5vcm1hbGl6ZWQgPSBHTF9GQUxTRTsKKyAgICBy
ZXR1cm4gcGFyYW1zOworfQorCitCdWZmZXJTdWJEYXRhUGFyYW1zIEJ1ZmZlclVwZGF0ZUQzRDlQ
YXJhbXMoKQoreworICAgIEJ1ZmZlclN1YkRhdGFQYXJhbXMgcGFyYW1zOworICAgIHBhcmFtcy5l
Z2xQYXJhbWV0ZXJzID0gZWdsX3BsYXRmb3JtOjpEM0Q5KCk7CisgICAgcGFyYW1zLnZlcnRleFR5
cGUgPSBHTF9GTE9BVDsKKyAgICBwYXJhbXMudmVydGV4Q29tcG9uZW50Q291bnQgPSA0OworICAg
IHBhcmFtcy52ZXJ0ZXhOb3JtYWxpemVkID0gR0xfRkFMU0U7CisgICAgcmV0dXJuIHBhcmFtczsK
K30KKworQnVmZmVyU3ViRGF0YVBhcmFtcyBCdWZmZXJVcGRhdGVPcGVuR0xQYXJhbXMoKQorewor
ICAgIEJ1ZmZlclN1YkRhdGFQYXJhbXMgcGFyYW1zOworICAgIHBhcmFtcy5lZ2xQYXJhbWV0ZXJz
ID0gZWdsX3BsYXRmb3JtOjpPUEVOR0woKTsKKyAgICBwYXJhbXMudmVydGV4VHlwZSA9IEdMX0ZM
T0FUOworICAgIHBhcmFtcy52ZXJ0ZXhDb21wb25lbnRDb3VudCA9IDQ7CisgICAgcGFyYW1zLnZl
cnRleE5vcm1hbGl6ZWQgPSBHTF9GQUxTRTsKKyAgICByZXR1cm4gcGFyYW1zOworfQorCitURVNU
X1AoQnVmZmVyU3ViRGF0YUJlbmNobWFyaywgUnVuKQoreworICAgIHJ1bigpOworfQorCitBTkdM
RV9JTlNUQU5USUFURV9URVNUKEJ1ZmZlclN1YkRhdGFCZW5jaG1hcmssCisgICAgICAgICAgICAg
ICAgICAgICAgIEJ1ZmZlclVwZGF0ZUQzRDExUGFyYW1zKCksIEJ1ZmZlclVwZGF0ZUQzRDlQYXJh
bXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyVXBkYXRlT3BlbkdMUGFyYW1zKCkp
OworCit9IC8vIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL3BlcmZfdGVzdHMvRHJhd0NhbGxQZXJmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9EcmF3Q2FsbFBlcmYuY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3Rz
L0RyYXdDYWxsUGVyZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNTYgQEAKKy8vCisv
LyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworLy8gRHJhd0NhbGxQZXJmOgorLy8gICBQZXJmb3JtYW5jZSB0ZXN0cyBmb3IgQU5H
TEUgZHJhdyBjYWxsIG92ZXJoZWFkLgorLy8KKworI2luY2x1ZGUgPHNzdHJlYW0+CisKKyNpbmNs
dWRlICJBTkdMRVBlcmZUZXN0LmgiCisjaW5jbHVkZSAic2hhZGVyX3V0aWxzLmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNlCit7CisKK3N0cnVjdCBEcmF3Q2FsbFBlcmZQ
YXJhbXMgZmluYWwgOiBwdWJsaWMgUmVuZGVyVGVzdFBhcmFtcworeworICAgIC8vIENvbW1vbiBk
ZWZhdWx0IG9wdGlvbnMKKyAgICBEcmF3Q2FsbFBlcmZQYXJhbXMoKQorICAgIHsKKyAgICAgICAg
bWFqb3JWZXJzaW9uID0gMjsKKyAgICAgICAgbWlub3JWZXJzaW9uID0gMDsKKyAgICAgICAgd2lu
ZG93V2lkdGggPSAyNTY7CisgICAgICAgIHdpbmRvd0hlaWdodCA9IDI1NjsKKyAgICB9CisKKyAg
ICBzdGQ6OnN0cmluZyBzdWZmaXgoKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgc3Rk
OjpzdHJpbmdzdHJlYW0gc3Ryc3RyOworCisgICAgICAgIHN0cnN0ciA8PCBSZW5kZXJUZXN0UGFy
YW1zOjpzdWZmaXgoKTsKKworICAgICAgICBpZiAobnVtVHJpcyA9PSAwKQorICAgICAgICB7Cisg
ICAgICAgICAgICBzdHJzdHIgPDwgIl92YWxpZGF0aW9uX29ubHkiOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKHVzZUZCTykKKyAgICAgICAgeworICAgICAgICAgICAgc3Ryc3RyIDw8ICJfcmVu
ZGVyX3RvX3RleHR1cmUiOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGVnbFBhcmFtZXRlcnMu
ZGV2aWNlVHlwZSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfTlVMTF9BTkdMRSkK
KyAgICAgICAgeworICAgICAgICAgICAgc3Ryc3RyIDw8ICJfbnVsbCI7CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gc3Ryc3RyLnN0cigpOworICAgIH0KKworICAgIHVuc2lnbmVkIGludCBp
dGVyYXRpb25zID0gNTA7CisgICAgZG91YmxlIHJ1blRpbWVTZWNvbmRzICAgPSAxMC4wOworICAg
IGludCBudW1UcmlzICAgICAgICAgICAgID0gMTsKKyAgICBib29sIHVzZUZCTyAgICAgICAgICAg
ICA9IGZhbHNlOworfTsKKworc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAm
b3MsIGNvbnN0IERyYXdDYWxsUGVyZlBhcmFtcyAmcGFyYW1zKQoreworICAgIG9zIDw8IHBhcmFt
cy5zdWZmaXgoKS5zdWJzdHIoMSk7CisgICAgcmV0dXJuIG9zOworfQorCitjbGFzcyBEcmF3Q2Fs
bFBlcmZCZW5jaG1hcmsgOiBwdWJsaWMgQU5HTEVSZW5kZXJUZXN0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVibGljIDo6dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPERyYXdD
YWxsUGVyZlBhcmFtcz4KK3sKKyAgcHVibGljOgorICAgIERyYXdDYWxsUGVyZkJlbmNobWFyaygp
OworCisgICAgdm9pZCBpbml0aWFsaXplQmVuY2htYXJrKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBk
ZXN0cm95QmVuY2htYXJrKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3QmVuY2htYXJrKCkgb3Zl
cnJpZGU7CisKKyAgcHJpdmF0ZToKKyAgICBHTHVpbnQgbVByb2dyYW0gPSAwOworICAgIEdMdWlu
dCBtQnVmZmVyICA9IDA7CisgICAgR0x1aW50IG1GQk8gICAgID0gMDsKKyAgICBHTHVpbnQgbVRl
eHR1cmUgPSAwOworICAgIGludCBtTnVtVHJpcyAgICA9IEdldFBhcmFtKCkubnVtVHJpczsKK307
CisKK0RyYXdDYWxsUGVyZkJlbmNobWFyazo6RHJhd0NhbGxQZXJmQmVuY2htYXJrKCkgOiBBTkdM
RVJlbmRlclRlc3QoIkRyYXdDYWxsUGVyZiIsIEdldFBhcmFtKCkpCit7CisgICAgbVJ1blRpbWVT
ZWNvbmRzID0gR2V0UGFyYW0oKS5ydW5UaW1lU2Vjb25kczsKK30KKwordm9pZCBEcmF3Q2FsbFBl
cmZCZW5jaG1hcms6OmluaXRpYWxpemVCZW5jaG1hcmsoKQoreworICAgIGNvbnN0IGF1dG8gJnBh
cmFtcyA9IEdldFBhcmFtKCk7CisKKyAgICBBU1NFUlRfTFQoMHUsIHBhcmFtcy5pdGVyYXRpb25z
KTsKKworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzID0gU0hBREVSX1NPVVJDRQorICAgICgKKyAg
ICAgICAgYXR0cmlidXRlIHZlYzIgdlBvc2l0aW9uOworICAgICAgICB1bmlmb3JtIGZsb2F0IHVT
Y2FsZTsKKyAgICAgICAgdW5pZm9ybSBmbG9hdCB1T2Zmc2V0OworICAgICAgICB2b2lkIG1haW4o
KQorICAgICAgICB7CisgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHZlYzQodlBvc2l0aW9uICog
dmVjMih1U2NhbGUpIC0gdmVjMih1T2Zmc2V0KSwgMCwgMSk7CisgICAgICAgIH0KKyAgICApOwor
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnMgPSBTSEFERVJfU09VUkNFCisgICAgKAorICAgICAg
ICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAg
eworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApOwor
ICAgICAgICB9CisgICAgKTsKKworICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odnMsIGZz
KTsKKyAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsKKworICAgIC8vIFVzZSB0aGUgcHJvZ3Jh
bSBvYmplY3QKKyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworCisgICAgZ2xDbGVhckNvbG9y
KDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYpOworCisgICAgc3RkOjp2ZWN0b3I8R0xmbG9hdD4gZmxv
YXREYXRhOworCisgICAgZm9yIChpbnQgcXVhZEluZGV4ID0gMDsgcXVhZEluZGV4IDwgbU51bVRy
aXM7ICsrcXVhZEluZGV4KQorICAgIHsKKyAgICAgICAgZmxvYXREYXRhLnB1c2hfYmFjaygxKTsK
KyAgICAgICAgZmxvYXREYXRhLnB1c2hfYmFjaygyKTsKKyAgICAgICAgZmxvYXREYXRhLnB1c2hf
YmFjaygwKTsKKyAgICAgICAgZmxvYXREYXRhLnB1c2hfYmFjaygwKTsKKyAgICAgICAgZmxvYXRE
YXRhLnB1c2hfYmFjaygyKTsKKyAgICAgICAgZmxvYXREYXRhLnB1c2hfYmFjaygwKTsKKyAgICB9
CisKKyAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1CdWZmZXIpOworICAgIGdsQmluZEJ1ZmZlcihHTF9B
UlJBWV9CVUZGRVIsIG1CdWZmZXIpOworCisgICAgLy8gVG8gYXZvaWQgZ2VuZXJhdGluZyBHTCBl
cnJvcnMgd2hlbiB0ZXN0aW5nIHZhbGlkYXRpb24tb25seQorICAgIGlmIChmbG9hdERhdGEuZW1w
dHkoKSkKKyAgICB7CisgICAgICAgIGZsb2F0RGF0YS5wdXNoX2JhY2soMC4wZik7CisgICAgfQor
CisgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgZmxvYXREYXRhLnNpemUoKSAqIHNp
emVvZihHTGZsb2F0KSwgJmZsb2F0RGF0YVswXSwgR0xfU1RBVElDX0RSQVcpOworCisgICAgZ2xW
ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgMCk7CisgICAg
Z2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKworICAgIC8vIFNldCB0aGUgdmlld3BvcnQK
KyAgICBnbFZpZXdwb3J0KDAsIDAsIGdldFdpbmRvdygpLT5nZXRXaWR0aCgpLCBnZXRXaW5kb3co
KS0+Z2V0SGVpZ2h0KCkpOworCisgICAgR0xmbG9hdCBzY2FsZSA9IDAuNWY7CisgICAgR0xmbG9h
dCBvZmZzZXQgPSAwLjVmOworCisgICAgZ2xVbmlmb3JtMWYoZ2xHZXRVbmlmb3JtTG9jYXRpb24o
bVByb2dyYW0sICJ1U2NhbGUiKSwgc2NhbGUpOworICAgIGdsVW5pZm9ybTFmKGdsR2V0VW5pZm9y
bUxvY2F0aW9uKG1Qcm9ncmFtLCAidU9mZnNldCIpLCBvZmZzZXQpOworCisgICAgaWYgKHBhcmFt
cy51c2VGQk8pCisgICAgeworICAgICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbUZCTyk7Cisg
ICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRkJPKTsKKyAgICAgICAg
Z2xHZW5UZXh0dXJlcygxLCAmbVRleHR1cmUpOworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RF
WFRVUkVfMkQsIG1UZXh0dXJlKTsKKyAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQs
IDAsIEdMX1JHQkEsIGdldFdpbmRvdygpLT5nZXRXaWR0aCgpLCBnZXRXaW5kb3coKS0+Z2V0SGVp
Z2h0KCksCisgICAgICAgICAgICAgICAgICAgICAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRF
LCBudWxscHRyKTsKKyAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZF
UiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlLCAwKTsKKyAg
ICB9CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKK30KKwordm9pZCBEcmF3Q2FsbFBlcmZC
ZW5jaG1hcms6OmRlc3Ryb3lCZW5jaG1hcmsoKQoreworICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJv
Z3JhbSk7CisgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtQnVmZmVyKTsKKyAgICBnbERlbGV0ZVRl
eHR1cmVzKDEsICZtVGV4dHVyZSk7CisgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1GQk8p
OworfQorCit2b2lkIERyYXdDYWxsUGVyZkJlbmNobWFyazo6ZHJhd0JlbmNobWFyaygpCit7Cisg
ICAgLy8gVGhpcyB3b3JrYXJvdW5kIGZpeGVzIGEgaHVnZSBxdWV1ZSBvZiBncmFwaGljcyBjb21t
YW5kcyBhY2N1bXVsYXRpbmcgb24gdGhlIEdMCisgICAgLy8gYmFjay1lbmQuIFRoZSBHTCBiYWNr
LWVuZCBkb2Vzbid0IGhhdmUgYSBwcm9wZXIgTlVMTCBkZXZpY2UgYXQgdGhlIG1vbWVudC4KKyAg
ICAvLyBUT0RPKGptYWRpbGwpOiBSZW1vdmUgdGhpcyB3aGVuL2lmIHdlIGV2ZXIgZ2V0IGEgcHJv
cGVyIE9wZW5HTCBOVUxMIGRldmljZS4KKyAgICBjb25zdCBhdXRvICZlZ2xQYXJhbXMgPSBHZXRQ
YXJhbSgpLmVnbFBhcmFtZXRlcnM7CisgICAgaWYgKGVnbFBhcmFtcy5kZXZpY2VUeXBlICE9IEVH
TF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9OVUxMX0FOR0xFIHx8CisgICAgICAgIChlZ2xQ
YXJhbXMucmVuZGVyZXIgIT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFICYm
CisgICAgICAgICBlZ2xQYXJhbXMucmVuZGVyZXIgIT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVf
T1BFTkdMRVNfQU5HTEUpKQorICAgIHsKKyAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJf
QklUKTsKKyAgICB9CisKKyAgICBjb25zdCBhdXRvICZwYXJhbXMgPSBHZXRQYXJhbSgpOworCisg
ICAgZm9yICh1bnNpZ25lZCBpbnQgaXQgPSAwOyBpdCA8IHBhcmFtcy5pdGVyYXRpb25zOyBpdCsr
KQorICAgIHsKKyAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMCwgc3RhdGljX2Nh
c3Q8R0xzaXplaT4oMyAqIG1OdW1UcmlzKSk7CisgICAgfQorCisgICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7Cit9CisKK3VzaW5nIG5hbWVzcGFjZSBlZ2xfcGxhdGZvcm07CisKK0RyYXdDYWxsUGVy
ZlBhcmFtcyBEcmF3Q2FsbFBlcmZEM0QxMVBhcmFtcyhib29sIHVzZU51bGxEZXZpY2UsIGJvb2wg
cmVuZGVyVG9UZXh0dXJlKQoreworICAgIERyYXdDYWxsUGVyZlBhcmFtcyBwYXJhbXM7CisgICAg
cGFyYW1zLmVnbFBhcmFtZXRlcnMgPSB1c2VOdWxsRGV2aWNlID8gRDNEMTFfTlVMTCgpIDogRDNE
MTEoKTsKKyAgICBwYXJhbXMudXNlRkJPICAgICAgICA9IHJlbmRlclRvVGV4dHVyZTsKKyAgICBy
ZXR1cm4gcGFyYW1zOworfQorCitEcmF3Q2FsbFBlcmZQYXJhbXMgRHJhd0NhbGxQZXJmRDNEOVBh
cmFtcyhib29sIHVzZU51bGxEZXZpY2UsIGJvb2wgcmVuZGVyVG9UZXh0dXJlKQoreworICAgIERy
YXdDYWxsUGVyZlBhcmFtcyBwYXJhbXM7CisgICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSB1c2VO
dWxsRGV2aWNlID8gRDNEOV9OVUxMKCkgOiBEM0Q5KCk7CisgICAgcGFyYW1zLnVzZUZCTyAgICAg
ICAgPSByZW5kZXJUb1RleHR1cmU7CisgICAgcmV0dXJuIHBhcmFtczsKK30KKworRHJhd0NhbGxQ
ZXJmUGFyYW1zIERyYXdDYWxsUGVyZk9wZW5HTFBhcmFtcyhib29sIHVzZU51bGxEZXZpY2UsIGJv
b2wgcmVuZGVyVG9UZXh0dXJlKQoreworICAgIERyYXdDYWxsUGVyZlBhcmFtcyBwYXJhbXM7Cisg
ICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSB1c2VOdWxsRGV2aWNlID8gT1BFTkdMX05VTEwoKSA6
IE9QRU5HTCgpOworICAgIHBhcmFtcy51c2VGQk8gICAgICAgID0gcmVuZGVyVG9UZXh0dXJlOwor
ICAgIHJldHVybiBwYXJhbXM7Cit9CisKK0RyYXdDYWxsUGVyZlBhcmFtcyBEcmF3Q2FsbFBlcmZW
YWxpZGF0aW9uT25seSgpCit7CisgICAgRHJhd0NhbGxQZXJmUGFyYW1zIHBhcmFtczsKKyAgICBw
YXJhbXMuZWdsUGFyYW1ldGVycyA9IERFRkFVTFQoKTsKKyAgICBwYXJhbXMuaXRlcmF0aW9ucyAg
ICAgPSAxMDAwMDsKKyAgICBwYXJhbXMubnVtVHJpcyA9IDA7CisgICAgcGFyYW1zLnJ1blRpbWVT
ZWNvbmRzID0gNS4wOworICAgIHJldHVybiBwYXJhbXM7Cit9CisKK1RFU1RfUChEcmF3Q2FsbFBl
cmZCZW5jaG1hcmssIFJ1bikKK3sKKyAgICBydW4oKTsKK30KKworQU5HTEVfSU5TVEFOVElBVEVf
VEVTVChEcmF3Q2FsbFBlcmZCZW5jaG1hcmssCisgICAgICAgICAgICAgICAgICAgICAgIERyYXdD
YWxsUGVyZkQzRDlQYXJhbXMoZmFsc2UsIGZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
RHJhd0NhbGxQZXJmRDNEOVBhcmFtcyh0cnVlLCBmYWxzZSksCisgICAgICAgICAgICAgICAgICAg
ICAgIERyYXdDYWxsUGVyZkQzRDExUGFyYW1zKGZhbHNlLCBmYWxzZSksCisgICAgICAgICAgICAg
ICAgICAgICAgIERyYXdDYWxsUGVyZkQzRDExUGFyYW1zKHRydWUsIGZhbHNlKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgRHJhd0NhbGxQZXJmRDNEMTFQYXJhbXModHJ1ZSwgdHJ1ZSksCisgICAg
ICAgICAgICAgICAgICAgICAgIERyYXdDYWxsUGVyZk9wZW5HTFBhcmFtcyhmYWxzZSwgZmFsc2Up
LAorICAgICAgICAgICAgICAgICAgICAgICBEcmF3Q2FsbFBlcmZPcGVuR0xQYXJhbXModHJ1ZSwg
ZmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICBEcmF3Q2FsbFBlcmZPcGVuR0xQYXJhbXMo
dHJ1ZSwgdHJ1ZSksCisgICAgICAgICAgICAgICAgICAgICAgIERyYXdDYWxsUGVyZlZhbGlkYXRp
b25Pbmx5KCkpOworCit9IC8vIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvRHluYW1pY1Byb21vdGlvblBlcmZUZXN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9E
eW5hbWljUHJvbW90aW9uUGVyZlRlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0R5bmFtaWNQcm9tb3Rpb25QZXJmVGVz
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxODkgQEAKKy8vCisvLyBDb3B5cmlnaHQg
MjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBEeW5h
bWljUHJvbW90aW9uUGVyZlRlc3Q6CisvLyAgIFRlc3RzIHRoYXQgQU5HTEUgd2lsbCBwcm9tb3Rl
IGJ1ZmZlciBzcGVjZmllZCB3aXRoIERZTkFNSUMgdXNhZ2UgdG8gc3RhdGljIGFmdGVyIGEgbnVt
YmVyIG9mCisvLyAgIGl0ZXJhdGlvbnMgd2l0aG91dCBjaGFuZ2luZyB0aGUgZGF0YS4gSXQgc3Bl
Y2lmaWNhbGx5IGFmZmVjdHMgdGhlIEQzRCBiYWNrLWVuZCwgd2hpY2ggdHJlYXRzCisvLyAgIGR5
bmFtaWMgYW5kIHN0YXRpYyBidWZmZXJzIHF1aXRlIGRpZmZlcmVudGx5LgorLy8KKworI2luY2x1
ZGUgIkFOR0xFUGVyZlRlc3QuaCIKKyNpbmNsdWRlICJyYW5kb21fdXRpbHMuaCIKKyNpbmNsdWRl
ICJzaGFkZXJfdXRpbHMuaCIKKyNpbmNsdWRlICJWZWN0b3IuaCIKKwordXNpbmcgbmFtZXNwYWNl
IGFuZ2xlOworCituYW1lc3BhY2UKK3sKKworc3RydWN0IER5bmFtaWNQcm9tb3Rpb25QYXJhbXMg
ZmluYWwgOiBwdWJsaWMgUmVuZGVyVGVzdFBhcmFtcworeworICAgIER5bmFtaWNQcm9tb3Rpb25Q
YXJhbXMoKTsKKyAgICBzdGQ6OnN0cmluZyBzdWZmaXgoKSBjb25zdCBvdmVycmlkZTsKKworICAg
IHNpemVfdCB2ZXJ0ZXhDb3VudDsKKyAgICB1bnNpZ25lZCBpbnQgaXRlcmF0aW9uczsKK307CisK
K0R5bmFtaWNQcm9tb3Rpb25QYXJhbXM6OkR5bmFtaWNQcm9tb3Rpb25QYXJhbXMoKSA6IHZlcnRl
eENvdW50KDEwMjQpLCBpdGVyYXRpb25zKDQpCit7Cit9CisKK3N0ZDo6c3RyaW5nIER5bmFtaWNQ
cm9tb3Rpb25QYXJhbXM6OnN1ZmZpeCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFJlbmRlclRlc3RQ
YXJhbXM6OnN1ZmZpeCgpOworfQorCitzdGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3Ry
ZWFtICZvcywgY29uc3QgRHluYW1pY1Byb21vdGlvblBhcmFtcyAmcGFyYW1zKQoreworICAgIG9z
IDw8IHBhcmFtcy5zdWZmaXgoKS5zdWJzdHIoMSk7CisgICAgcmV0dXJuIG9zOworfQorCitjbGFz
cyBEeW5hbWljUHJvbW90aW9uUGVyZlRlc3QgOiBwdWJsaWMgQU5HTEVSZW5kZXJUZXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHRlc3Rpbmc6OldpdGhQYXJhbUlu
dGVyZmFjZTxEeW5hbWljUHJvbW90aW9uUGFyYW1zPgoreworICBwdWJsaWM6CisgICAgRHluYW1p
Y1Byb21vdGlvblBlcmZUZXN0KCk7CisKKyAgICB2b2lkIGluaXRpYWxpemVCZW5jaG1hcmsoKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRlc3Ryb3lCZW5jaG1hcmsoKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRyYXdCZW5jaG1hcmsoKSBvdmVycmlkZTsKKworICBwcml2YXRlOgorICAgIEdMdWludCBtUHJv
Z3JhbTsKKyAgICBHTHVpbnQgbUVsZW1lbnRBcnJheUJ1ZmZlcjsKKyAgICBHTHVpbnQgbUFycmF5
QnVmZmVyOworfTsKKworRHluYW1pY1Byb21vdGlvblBlcmZUZXN0OjpEeW5hbWljUHJvbW90aW9u
UGVyZlRlc3QoKQorICAgIDogQU5HTEVSZW5kZXJUZXN0KCJEeW5hbWljUHJvbW90aW9uIiwgR2V0
UGFyYW0oKSksCisgICAgICBtUHJvZ3JhbSgwKSwKKyAgICAgIG1FbGVtZW50QXJyYXlCdWZmZXIo
MCksCisgICAgICBtQXJyYXlCdWZmZXIoMCkKK3sKK30KKwordm9pZCBEeW5hbWljUHJvbW90aW9u
UGVyZlRlc3Q6OmluaXRpYWxpemVCZW5jaG1hcmsoKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZ2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQorICAgICAgICAiYXR0cmlidXRlIHZlYzIgcG9zaXRpb247
XG4iCisgICAgICAgICJhdHRyaWJ1dGUgdmVjMyBjb2xvcjtcbiIKKyAgICAgICAgInZhcnlpbmcg
dmVjMyB2Q29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgor
ICAgICAgICAiICAgIHZDb2xvciA9IGNvbG9yO1xuIgorICAgICAgICAiICAgIGdsX1Bvc2l0aW9u
ID0gdmVjNChwb3NpdGlvbiwgMCwgMSk7XG4iCisgICAgICAgICJ9IjsKKworICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZmcmFnbWVudFNoYWRlclNvdXJjZSA9CisgICAgICAgICJ2YXJ5aW5nIG1lZGl1
bXAgdmVjMyB2Q29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xu
IgorICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQodkNvbG9yLCAxKTtcbiIKKyAgICAg
ICAgIn0iOworCisgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3Vy
Y2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKKyAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsK
KworICAgIGNvbnN0IHNpemVfdCB2ZXJ0ZXhDb3VudCA9IEdldFBhcmFtKCkudmVydGV4Q291bnQ7
CisKKyAgICBzdGQ6OnZlY3RvcjxHTHVzaG9ydD4gaW5kZXhEYXRhOworICAgIHN0ZDo6dmVjdG9y
PFZlY3RvcjI+IHBvc2l0aW9uRGF0YTsKKyAgICBzdGQ6OnZlY3RvcjxWZWN0b3IzPiBjb2xvckRh
dGE7CisKKyAgICBBU1NFUlRfR0Uoc3RhdGljX2Nhc3Q8c2l6ZV90PihzdGQ6Om51bWVyaWNfbGlt
aXRzPEdMdXNob3J0Pjo6bWF4KCkpLCB2ZXJ0ZXhDb3VudCk7CisKKyAgICBSTkcgcm5nKDEpOwor
CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IHZlcnRleENvdW50OyArK2luZGV4
KQorICAgIHsKKyAgICAgICAgaW5kZXhEYXRhLnB1c2hfYmFjayhzdGF0aWNfY2FzdDxHTHVzaG9y
dD4oaW5kZXgpKTsKKworICAgICAgICBWZWN0b3IyIHBvc2l0aW9uKHJuZy5yYW5kb21OZWdhdGl2
ZU9uZVRvT25lKCksIHJuZy5yYW5kb21OZWdhdGl2ZU9uZVRvT25lKCkpOworICAgICAgICBwb3Np
dGlvbkRhdGEucHVzaF9iYWNrKHBvc2l0aW9uKTsKKworICAgICAgICBWZWN0b3IzIGNvbG9yKHJu
Zy5yYW5kb21GbG9hdCgpLCBybmcucmFuZG9tRmxvYXQoKSwgcm5nLnJhbmRvbUZsb2F0KCkpOwor
ICAgICAgICBjb2xvckRhdGEucHVzaF9iYWNrKGNvbG9yKTsKKyAgICB9CisKKyAgICBnbEdlbkJ1
ZmZlcnMoMSwgJm1FbGVtZW50QXJyYXlCdWZmZXIpOworICAgIGdsR2VuQnVmZmVycygxLCAmbUFy
cmF5QnVmZmVyKTsKKworICAgIGdsQmluZEJ1ZmZlcihHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwg
bUVsZW1lbnRBcnJheUJ1ZmZlcik7CisgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwg
bUFycmF5QnVmZmVyKTsKKworICAgIEdMc2l6ZWlwdHIgZWxlbWVudEFycmF5U2l6ZSAgPSBzaXpl
b2YoR0x1c2hvcnQpICogdmVydGV4Q291bnQ7CisgICAgR0xzaXplaXB0ciBwb3NpdGlvbkFycmF5
U2l6ZSA9IHNpemVvZihWZWN0b3IyKSAqIHZlcnRleENvdW50OworICAgIEdMc2l6ZWlwdHIgY29s
b3JBcnJheVNpemUgICAgPSBzaXplb2YoVmVjdG9yMykgKiB2ZXJ0ZXhDb3VudDsKKworICAgIC8v
IFRoZSBEWU5BTUlDX0RSQVcgdXNhZ2UgaXMgdGhlIGtleSB0byB0aGUgdGVzdC4KKyAgICBnbEJ1
ZmZlckRhdGEoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGVsZW1lbnRBcnJheVNpemUsIGluZGV4
RGF0YS5kYXRhKCksIEdMX0RZTkFNSUNfRFJBVyk7CisgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZ
X0JVRkZFUiwgcG9zaXRpb25BcnJheVNpemUgKyBjb2xvckFycmF5U2l6ZSwgbnVsbHB0ciwgR0xf
RFlOQU1JQ19EUkFXKTsKKyAgICBnbEJ1ZmZlclN1YkRhdGEoR0xfQVJSQVlfQlVGRkVSLCAwLCBw
b3NpdGlvbkFycmF5U2l6ZSwgcG9zaXRpb25EYXRhLmRhdGEoKSk7CisgICAgZ2xCdWZmZXJTdWJE
YXRhKEdMX0FSUkFZX0JVRkZFUiwgcG9zaXRpb25BcnJheVNpemUsIGNvbG9yQXJyYXlTaXplLCBj
b2xvckRhdGEuZGF0YSgpKTsKKworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgR0xp
bnQgcG9zaXRpb25Mb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJwb3Np
dGlvbiIpOworICAgIEFTU0VSVF9ORSgtMSwgcG9zaXRpb25Mb2NhdGlvbik7CisgICAgR0xpbnQg
Y29sb3JMb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJjb2xvciIpOwor
ICAgIEFTU0VSVF9ORSgtMSwgY29sb3JMb2NhdGlvbik7CisKKyAgICBnbFZlcnRleEF0dHJpYlBv
aW50ZXIocG9zaXRpb25Mb2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCBudWxscHRy
KTsKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoY29sb3JMb2NhdGlvbiwgMywgR0xfRkxPQVQs
IEdMX0ZBTFNFLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0
PGNvbnN0IEdMdm9pZCAqPihwb3NpdGlvbkFycmF5U2l6ZSkpOworCisgICAgZ2xFbmFibGVWZXJ0
ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxvY2F0aW9uKTsKKyAgICBnbEVuYWJsZVZlcnRleEF0dHJp
YkFycmF5KGNvbG9yTG9jYXRpb24pOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9CisK
K3ZvaWQgRHluYW1pY1Byb21vdGlvblBlcmZUZXN0OjpkZXN0cm95QmVuY2htYXJrKCkKK3sKKyAg
ICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOworICAgIGdsRGVsZXRlQnVmZmVycygxLCAmbUVs
ZW1lbnRBcnJheUJ1ZmZlcik7CisgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtQXJyYXlCdWZmZXIp
OworfQorCit2b2lkIER5bmFtaWNQcm9tb3Rpb25QZXJmVGVzdDo6ZHJhd0JlbmNobWFyaygpCit7
CisgICAgdW5zaWduZWQgaW50IGl0ZXJhdGlvbnMgPSBHZXRQYXJhbSgpLml0ZXJhdGlvbnM7Cisg
ICAgc2l6ZV90IHZlcnRleENvdW50ICAgICAgPSBHZXRQYXJhbSgpLnZlcnRleENvdW50OworCisg
ICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBj
b3VudCA9IDA7IGNvdW50IDwgaXRlcmF0aW9uczsgKytjb3VudCkKKyAgICB7CisgICAgICAgIGds
RHJhd0VsZW1lbnRzKEdMX1RSSUFOR0xFUywgc3RhdGljX2Nhc3Q8R0xzaXplaT4odmVydGV4Q291
bnQpLCBHTF9VTlNJR05FRF9TSE9SVCwgbnVsbHB0cik7CisgICAgfQorCisgICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7Cit9CisKK0R5bmFtaWNQcm9tb3Rpb25QYXJhbXMgRHluYW1pY1Byb21vdGlv
bkQzRDExUGFyYW1zKCkKK3sKKyAgICBEeW5hbWljUHJvbW90aW9uUGFyYW1zIHBhcmFtczsKKyAg
ICBwYXJhbXMuZWdsUGFyYW1ldGVycyA9IGVnbF9wbGF0Zm9ybTo6RDNEMTEoKTsKKyAgICByZXR1
cm4gcGFyYW1zOworfQorCitEeW5hbWljUHJvbW90aW9uUGFyYW1zIER5bmFtaWNQcm9tb3Rpb25E
M0Q5UGFyYW1zKCkKK3sKKyAgICBEeW5hbWljUHJvbW90aW9uUGFyYW1zIHBhcmFtczsKKyAgICBw
YXJhbXMuZWdsUGFyYW1ldGVycyA9IGVnbF9wbGF0Zm9ybTo6RDNEOSgpOworICAgIHJldHVybiBw
YXJhbXM7Cit9CisKK1RFU1RfUChEeW5hbWljUHJvbW90aW9uUGVyZlRlc3QsIFJ1bikKK3sKKyAg
ICBydW4oKTsKK30KKworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChEeW5hbWljUHJvbW90aW9uUGVy
ZlRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNQcm9tb3Rpb25EM0QxMVBhcmFt
cygpLAorICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljUHJvbW90aW9uRDNEOVBhcmFtcygp
KTsKKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvRUdMSW5pdGlhbGl6ZVBlcmYuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0VHTElu
aXRpYWxpemVQZXJmLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9FR0xJbml0aWFsaXplUGVyZi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxNjEgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBFR0xJbml0aWFsaXplUGVyZlRlc3Q6
CisvLyAgIFBlcmZvcm1hbmNlIHRlc3QgZm9yIGRldmljZSBjcmVhdGlvbi4KKy8vCisKKyNpbmNs
dWRlICJBTkdMRVBlcmZUZXN0LmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlICJ0ZXN0
X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmlncy5oIgorI2luY2x1ZGUgInRlc3RfdXRpbHMvYW5nbGVf
dGVzdF9pbnN0YW50aWF0ZS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1BsYXRmb3JtLmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSB0ZXN0aW5nOworCituYW1lc3BhY2UKK3sKKworLy8gT25seSBhcHBsaWVz
IHRvIEQzRDExCitjbGFzcyBDYXB0dXJlUGxhdGZvcm0gOiBwdWJsaWMgYW5nbGU6OlBsYXRmb3Jt
Cit7CisgIHB1YmxpYzoKKyAgICBDYXB0dXJlUGxhdGZvcm0oKQorICAgICAgICA6IG1UaW1lcihD
cmVhdGVUaW1lcigpKSwKKyAgICAgICAgICBtTG9hZERMTHNNUygwKSwKKyAgICAgICAgICBtQ3Jl
YXRlRGV2aWNlTVMoMCksCisgICAgICAgICAgbUluaXRSZXNvdXJjZXNNUygwKQorICAgIHsKKyAg
ICAgICAgbVRpbWVyLT5zdGFydCgpOworICAgIH0KKworICAgIGRvdWJsZSBjdXJyZW50VGltZSgp
IG92ZXJyaWRlOworICAgIHZvaWQgaGlzdG9ncmFtQ3VzdG9tQ291bnRzKAorICAgICAgICBjb25z
dCBjaGFyICpuYW1lLCBpbnQgc2FtcGxlLCBpbnQgbWluLCBpbnQgbWF4LCBpbnQgYnVja2V0Q291
bnQpIG92ZXJyaWRlOworCisgICAgc2l6ZV90IGdldExvYWRETExzTVMoKSBjb25zdCB7IHJldHVy
biBtTG9hZERMTHNNUzsgfQorICAgIHNpemVfdCBnZXRDcmVhdGVEZXZpY2VNUygpIGNvbnN0IHsg
cmV0dXJuIG1DcmVhdGVEZXZpY2VNUzsgfQorICAgIHNpemVfdCBnZXRJbml0UmVzb3VyY2VzTVMo
KSBjb25zdCB7IHJldHVybiBtSW5pdFJlc291cmNlc01TOyB9CisKKyAgcHJpdmF0ZToKKyAgICBU
aW1lciAqbVRpbWVyOworICAgIHNpemVfdCBtTG9hZERMTHNNUzsKKyAgICBzaXplX3QgbUNyZWF0
ZURldmljZU1TOworICAgIHNpemVfdCBtSW5pdFJlc291cmNlc01TOworfTsKKworZG91YmxlIENh
cHR1cmVQbGF0Zm9ybTo6Y3VycmVudFRpbWUoKQoreworICAgIHJldHVybiBtVGltZXItPmdldEVs
YXBzZWRUaW1lKCk7Cit9CisKK3ZvaWQgQ2FwdHVyZVBsYXRmb3JtOjpoaXN0b2dyYW1DdXN0b21D
b3VudHMoCisgICAgY29uc3QgY2hhciAqbmFtZSwgaW50IHNhbXBsZSwgaW50IC8qbWluKi8sIGlu
dCAvKm1heCovLCBpbnQgLypidWNrZXRDb3VudCovKQoreworICAgIC8vIFRoZXNlIG11c3QgbWF0
Y2ggdGhlIG5hbWVzIG9mIHRoZSBoaXN0b2dyYW1zLgorICAgIGlmIChzdHJjbXAobmFtZSwgIkdQ
VS5BTkdMRS5SZW5kZXJlcjExSW5pdGlhbGl6ZURMTHNNUyIpID09IDApCisgICAgeworICAgICAg
ICBtTG9hZERMTHNNUyArPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNhbXBsZSk7CisgICAgfQorICAg
IC8vIE5vdGU6IG5vdCBjYXB0dXJlZCBpbiBkZWJ1ZywgZHVlIHRvIGNyZWF0aW5nIGEgZGVidWcg
ZGV2aWNlCisgICAgZWxzZSBpZiAoc3RyY21wKG5hbWUsICJHUFUuQU5HTEUuRDNEMTFDcmVhdGVE
ZXZpY2VNUyIpID09IDApCisgICAgeworICAgICAgICBtQ3JlYXRlRGV2aWNlTVMgKz0gc3RhdGlj
X2Nhc3Q8c2l6ZV90PihzYW1wbGUpOworICAgIH0KKyAgICBlbHNlIGlmIChzdHJjbXAobmFtZSwg
IkdQVS5BTkdMRS5SZW5kZXJlcjExSW5pdGlhbGl6ZURldmljZU1TIikgPT0gMCkKKyAgICB7Cisg
ICAgICAgIG1Jbml0UmVzb3VyY2VzTVMgKz0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzYW1wbGUpOwor
ICAgIH0KK30KKworY2xhc3MgRUdMSW5pdGlhbGl6ZVBlcmZUZXN0IDogcHVibGljIEFOR0xFUGVy
ZlRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgV2l0aFBhcmFtSW50
ZXJmYWNlPGFuZ2xlOjpQbGF0Zm9ybVBhcmFtZXRlcnM+Cit7CisgIHB1YmxpYzoKKyAgICBFR0xJ
bml0aWFsaXplUGVyZlRlc3QoKTsKKyAgICB+RUdMSW5pdGlhbGl6ZVBlcmZUZXN0KCk7CisKKyAg
ICB2b2lkIHN0ZXAoKSBvdmVycmlkZTsKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGU7CisK
KyAgcHJpdmF0ZToKKyAgICBPU1dpbmRvdyAqbU9TV2luZG93OworICAgIEVHTERpc3BsYXkgbURp
c3BsYXk7CisgICAgQ2FwdHVyZVBsYXRmb3JtIG1DYXB0dXJlUGxhdGZvcm07Cit9OworCitFR0xJ
bml0aWFsaXplUGVyZlRlc3Q6OkVHTEluaXRpYWxpemVQZXJmVGVzdCgpCisgICAgOiBBTkdMRVBl
cmZUZXN0KCJFR0xJbml0aWFsaXplIiwgIl9ydW4iKSwKKyAgICAgIG1PU1dpbmRvdyhudWxscHRy
KSwKKyAgICAgIG1EaXNwbGF5KEVHTF9OT19ESVNQTEFZKQoreworICAgIGF1dG8gcGxhdGZvcm0g
PSBHZXRQYXJhbSgpLmVnbFBhcmFtZXRlcnM7CisKKyAgICBzdGQ6OnZlY3RvcjxFR0xpbnQ+IGRp
c3BsYXlBdHRyaWJ1dGVzOworICAgIGRpc3BsYXlBdHRyaWJ1dGVzLnB1c2hfYmFjayhFR0xfUExB
VEZPUk1fQU5HTEVfVFlQRV9BTkdMRSk7CisgICAgZGlzcGxheUF0dHJpYnV0ZXMucHVzaF9iYWNr
KHBsYXRmb3JtLnJlbmRlcmVyKTsKKyAgICBkaXNwbGF5QXR0cmlidXRlcy5wdXNoX2JhY2soRUdM
X1BMQVRGT1JNX0FOR0xFX01BWF9WRVJTSU9OX01BSk9SX0FOR0xFKTsKKyAgICBkaXNwbGF5QXR0
cmlidXRlcy5wdXNoX2JhY2socGxhdGZvcm0ubWFqb3JWZXJzaW9uKTsKKyAgICBkaXNwbGF5QXR0
cmlidXRlcy5wdXNoX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX01BWF9WRVJTSU9OX01JTk9SX0FO
R0xFKTsKKyAgICBkaXNwbGF5QXR0cmlidXRlcy5wdXNoX2JhY2socGxhdGZvcm0ubWlub3JWZXJz
aW9uKTsKKworICAgIGlmIChwbGF0Zm9ybS5yZW5kZXJlciA9PSBFR0xfUExBVEZPUk1fQU5HTEVf
VFlQRV9EM0Q5X0FOR0xFIHx8CisgICAgICAgIHBsYXRmb3JtLnJlbmRlcmVyID09IEVHTF9QTEFU
Rk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFKQorICAgIHsKKyAgICAgICAgZGlzcGxheUF0dHJp
YnV0ZXMucHVzaF9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9BTkdMRSk7Cisg
ICAgICAgIGRpc3BsYXlBdHRyaWJ1dGVzLnB1c2hfYmFjayhwbGF0Zm9ybS5kZXZpY2VUeXBlKTsK
KyAgICB9CisgICAgZGlzcGxheUF0dHJpYnV0ZXMucHVzaF9iYWNrKEVHTF9OT05FKTsKKworICAg
IG1PU1dpbmRvdyA9IENyZWF0ZU9TV2luZG93KCk7CisgICAgbU9TV2luZG93LT5pbml0aWFsaXpl
KCJFR0xJbml0aWFsaXplIFRlc3QiLCA2NCwgNjQpOworCisgICAgYXV0byBlZ2xHZXRQbGF0Zm9y
bURpc3BsYXlFWFQgPQorICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkVHTEdFVFBMQVRGT1JN
RElTUExBWUVYVFBST0M+KGVnbEdldFByb2NBZGRyZXNzKCJlZ2xHZXRQbGF0Zm9ybURpc3BsYXlF
WFQiKSk7CisgICAgaWYgKGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVCA9PSBudWxscHRyKQorICAg
IHsKKyAgICAgICAgc3RkOjpjZXJyIDw8ICJFcnJvciBnZXR0aW5nIHBsYXRmb3JtIGRpc3BsYXkh
IiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtRGlzcGxheSA9
IGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVChFR0xfUExBVEZPUk1fQU5HTEVfQU5HTEUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lk
ICo+KG1PU1dpbmRvdy0+Z2V0TmF0aXZlRGlzcGxheSgpKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmZGlzcGxheUF0dHJpYnV0ZXNbMF0pOworCisgICAgQU5HTEVQ
bGF0Zm9ybUluaXRpYWxpemUoJm1DYXB0dXJlUGxhdGZvcm0pOworfQorCitFR0xJbml0aWFsaXpl
UGVyZlRlc3Q6On5FR0xJbml0aWFsaXplUGVyZlRlc3QoKQoreworICAgIFNhZmVEZWxldGUobU9T
V2luZG93KTsKK30KKwordm9pZCBFR0xJbml0aWFsaXplUGVyZlRlc3Q6OnN0ZXAoKQoreworICAg
IEFTU0VSVF9ORShFR0xfTk9fRElTUExBWSwgbURpc3BsYXkpOworCisgICAgRUdMaW50IG1ham9y
VmVyc2lvbiwgbWlub3JWZXJzaW9uOworICAgIEFTU0VSVF9FUShzdGF0aWNfY2FzdDxFR0xCb29s
ZWFuPihFR0xfVFJVRSksIGVnbEluaXRpYWxpemUobURpc3BsYXksICZtYWpvclZlcnNpb24sICZt
aW5vclZlcnNpb24pKTsKKyAgICBBU1NFUlRfRVEoc3RhdGljX2Nhc3Q8RUdMQm9vbGVhbj4oRUdM
X1RSVUUpLCBlZ2xUZXJtaW5hdGUobURpc3BsYXkpKTsKK30KKwordm9pZCBFR0xJbml0aWFsaXpl
UGVyZlRlc3Q6OlRlYXJEb3duKCkKK3sKKyAgICBBTkdMRVBlcmZUZXN0OjpUZWFyRG93bigpOwor
ICAgIHByaW50UmVzdWx0KCJMb2FkRExMcyIsIG5vcm1hbGl6ZWRUaW1lKG1DYXB0dXJlUGxhdGZv
cm0uZ2V0TG9hZERMTHNNUygpKSwgIm1zIiwgdHJ1ZSk7CisgICAgcHJpbnRSZXN1bHQoIkQzRDEx
Q3JlYXRlRGV2aWNlIiwgbm9ybWFsaXplZFRpbWUobUNhcHR1cmVQbGF0Zm9ybS5nZXRDcmVhdGVE
ZXZpY2VNUygpKSwgIm1zIiwgdHJ1ZSk7CisgICAgcHJpbnRSZXN1bHQoIkluaXRSZXNvdXJjZXMi
LCBub3JtYWxpemVkVGltZShtQ2FwdHVyZVBsYXRmb3JtLmdldEluaXRSZXNvdXJjZXNNUygpKSwg
Im1zIiwgdHJ1ZSk7CisKKyAgICBBTkdMRVBsYXRmb3JtU2h1dGRvd24oKTsKK30KKworVEVTVF9Q
KEVHTEluaXRpYWxpemVQZXJmVGVzdCwgUnVuKQoreworICAgIHJ1bigpOworfQorCitBTkdMRV9J
TlNUQU5USUFURV9URVNUKEVHTEluaXRpYWxpemVQZXJmVGVzdCwgYW5nbGU6OkVTMl9EM0QxMSgp
KTsKKworfSAvLyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9wZXJmX3Rlc3RzL0luZGV4Q29udmVyc2lvblBlcmYuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0luZGV4Q29udmVyc2lv
blBlcmYuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9wZXJmX3Rlc3RzL0luZGV4Q29udmVyc2lvblBlcmYuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMjcxIEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gSW5kZXhDb252ZXJzaW9uUGVyZjoKKy8vICAg
UGVyZm9ybWFuY2UgdGVzdHMgZm9yIEFOR0xFIGluZGV4IGNvbnZlcnNpb24gaW4gRDNEMTEuCisv
LworCisjaW5jbHVkZSA8c3N0cmVhbT4KKworI2luY2x1ZGUgIkFOR0xFUGVyZlRlc3QuaCIKKyNp
bmNsdWRlICJzaGFkZXJfdXRpbHMuaCIKKwordXNpbmcgbmFtZXNwYWNlIGFuZ2xlOworCituYW1l
c3BhY2UKK3sKKworc3RydWN0IEluZGV4Q29udmVyc2lvblBlcmZQYXJhbXMgZmluYWwgOiBwdWJs
aWMgUmVuZGVyVGVzdFBhcmFtcworeworICAgIHN0ZDo6c3RyaW5nIHN1ZmZpeCgpIGNvbnN0IG92
ZXJyaWRlCisgICAgeworICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzdHJzdHI7CisKKyAgICAg
ICAgaWYgKGluZGV4UmFuZ2VPZmZzZXQgPiAwKQorICAgICAgICB7CisgICAgICAgICAgICBzdHJz
dHIgPDwgIl9pbmRleF9yYW5nZSI7CisgICAgICAgIH0KKworICAgICAgICBzdHJzdHIgPDwgUmVu
ZGVyVGVzdFBhcmFtczo6c3VmZml4KCk7CisKKyAgICAgICAgcmV0dXJuIHN0cnN0ci5zdHIoKTsK
KyAgICB9CisKKyAgICB1bnNpZ25lZCBpbnQgaXRlcmF0aW9uczsKKyAgICB1bnNpZ25lZCBpbnQg
bnVtSW5kZXhUcmlzOworCisgICAgLy8gQSBzZWNvbmQgdGVzdCwgd2hpY2ggY292ZXJzIHVzaW5n
IGluZGV4IHJhbmdlcyB3aXRoIGFuIG9mZnNldC4KKyAgICB1bnNpZ25lZCBpbnQgaW5kZXhSYW5n
ZU9mZnNldDsKK307CisKKy8vIFByb3ZpZGUgYSBjdXN0b20gZ3Rlc3QgcGFyYW1ldGVyIG5hbWUg
ZnVuY3Rpb24gZm9yIEluZGV4Q29udmVyc2lvblBlcmZQYXJhbXMuCitzdGQ6Om9zdHJlYW0gJm9w
ZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZzdHJlYW0sIGNvbnN0IEluZGV4Q29udmVyc2lvblBlcmZQ
YXJhbXMgJnBhcmFtKQoreworICAgIHN0cmVhbSA8PCBwYXJhbS5zdWZmaXgoKS5zdWJzdHIoMSk7
CisgICAgcmV0dXJuIHN0cmVhbTsKK30KKworY2xhc3MgSW5kZXhDb252ZXJzaW9uUGVyZlRlc3Qg
OiBwdWJsaWMgQU5HTEVSZW5kZXJUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdWJsaWMgOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8SW5kZXhDb252ZXJzaW9uUGVy
ZlBhcmFtcz4KK3sKKyAgcHVibGljOgorICAgIEluZGV4Q29udmVyc2lvblBlcmZUZXN0KCk7CisK
KyAgICB2b2lkIGluaXRpYWxpemVCZW5jaG1hcmsoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlc3Ry
b3lCZW5jaG1hcmsoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdCZW5jaG1hcmsoKSBvdmVycmlk
ZTsKKworICBwcml2YXRlOgorICAgIHZvaWQgdXBkYXRlQnVmZmVyRGF0YSgpOworICAgIHZvaWQg
ZHJhd0NvbnZlcnNpb24oKTsKKyAgICB2b2lkIGRyYXdJbmRleFJhbmdlKCk7CisKKyAgICBHTHVp
bnQgbVByb2dyYW07CisgICAgR0x1aW50IG1WZXJ0ZXhCdWZmZXI7CisgICAgR0x1aW50IG1JbmRl
eEJ1ZmZlcjsKKyAgICBzdGQ6OnZlY3RvcjxHTHVzaG9ydD4gbUluZGV4RGF0YTsKK307CisKK0lu
ZGV4Q29udmVyc2lvblBlcmZUZXN0OjpJbmRleENvbnZlcnNpb25QZXJmVGVzdCgpCisgICAgOiBB
TkdMRVJlbmRlclRlc3QoIkluZGV4Q29udmVyc2lvblBlcmZUZXN0IiwgR2V0UGFyYW0oKSksCisg
ICAgICBtUHJvZ3JhbSgwKSwKKyAgICAgIG1WZXJ0ZXhCdWZmZXIoMCksCisgICAgICBtSW5kZXhC
dWZmZXIoMCkKK3sKKyAgICBtUnVuVGltZVNlY29uZHMgPSAzLjA7Cit9CisKK3ZvaWQgSW5kZXhD
b252ZXJzaW9uUGVyZlRlc3Q6OmluaXRpYWxpemVCZW5jaG1hcmsoKQoreworICAgIGNvbnN0IGF1
dG8gJnBhcmFtcyA9IEdldFBhcmFtKCk7CisKKyAgICBBU1NFUlRfTFQoMHUsIHBhcmFtcy5pdGVy
YXRpb25zKTsKKyAgICBBU1NFUlRfTFQoMHUsIHBhcmFtcy5udW1JbmRleFRyaXMpOworCisgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgdnMgPSBTSEFERVJfU09VUkNFCisgICAgKAorICAgICAgICBhdHRy
aWJ1dGUgdmVjMiB2UG9zaXRpb247CisgICAgICAgIHVuaWZvcm0gZmxvYXQgdVNjYWxlOworICAg
ICAgICB1bmlmb3JtIGZsb2F0IHVPZmZzZXQ7CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNCh2UG9zaXRpb24gKiB2ZWMyKHVTY2Fs
ZSkgLSB2ZWMyKHVPZmZzZXQpLCAwLCAxKTsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBjb25z
dCBzdGQ6OnN0cmluZyBmcyA9IFNIQURFUl9TT1VSQ0UKKyAgICAoCisgICAgICAgIHByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAg
ICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgICAgIH0K
KyAgICApOworCisgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2cywgZnMpOworICAgIEFT
U0VSVF9ORSgwdSwgbVByb2dyYW0pOworCisgICAgLy8gVXNlIHRoZSBwcm9ncmFtIG9iamVjdAor
ICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisKKyAgICBnbENsZWFyQ29sb3IoMC4wZiwgMC4w
ZiwgMC4wZiwgMC4wZik7CisKKyAgICAvLyBJbml0aWFsaXplIHRoZSB2ZXJ0ZXggZGF0YQorICAg
IHN0ZDo6dmVjdG9yPEdMZmxvYXQ+IGZsb2F0RGF0YTsKKworICAgIHNpemVfdCBudW1UcmlzID0g
c3RkOjpudW1lcmljX2xpbWl0czxHTHVzaG9ydD46Om1heCgpIC8gMyArIDE7CisgICAgZm9yIChz
aXplX3QgdHJpSW5kZXggPSAwOyB0cmlJbmRleCA8IG51bVRyaXM7ICsrdHJpSW5kZXgpCisgICAg
eworICAgICAgICBmbG9hdERhdGEucHVzaF9iYWNrKDEpOworICAgICAgICBmbG9hdERhdGEucHVz
aF9iYWNrKDIpOworICAgICAgICBmbG9hdERhdGEucHVzaF9iYWNrKDApOworICAgICAgICBmbG9h
dERhdGEucHVzaF9iYWNrKDApOworICAgICAgICBmbG9hdERhdGEucHVzaF9iYWNrKDIpOworICAg
ICAgICBmbG9hdERhdGEucHVzaF9iYWNrKDApOworICAgIH0KKworICAgIGdsR2VuQnVmZmVycygx
LCAmbVZlcnRleEJ1ZmZlcik7CisgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbVZl
cnRleEJ1ZmZlcik7CisgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgZmxvYXREYXRh
LnNpemUoKSAqIHNpemVvZihHTGZsb2F0KSwgJmZsb2F0RGF0YVswXSwgR0xfU1RBVElDX0RSQVcp
OworCisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwg
MCwgMCk7CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKworICAgIC8vIEluaXRp
YWxpemUgdGhlIGluZGV4IGJ1ZmZlcgorICAgIGZvciAodW5zaWduZWQgaW50IHRyaUluZGV4ID0g
MDsgdHJpSW5kZXggPCBwYXJhbXMubnVtSW5kZXhUcmlzOyArK3RyaUluZGV4KQorICAgIHsKKyAg
ICAgICAgLy8gSGFuZGxlIHR3byBkaWZmZXJlbnQgdHlwZXMgb2YgdGVzdHMsIG9uZSB3aXRoIGlu
ZGV4IGNvbnZlcnNpb24gdHJpZ2dlcmVkIGJ5IGEgLTEgaW5kZXguCisgICAgICAgIGlmIChwYXJh
bXMuaW5kZXhSYW5nZU9mZnNldCA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBtSW5kZXhE
YXRhLnB1c2hfYmFjayhzdGQ6Om51bWVyaWNfbGltaXRzPEdMdXNob3J0Pjo6bWF4KCkpOworICAg
ICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgbUluZGV4RGF0YS5w
dXNoX2JhY2soMCk7CisgICAgICAgIH0KKworICAgICAgICBtSW5kZXhEYXRhLnB1c2hfYmFjaygx
KTsKKyAgICAgICAgbUluZGV4RGF0YS5wdXNoX2JhY2soMik7CisgICAgfQorCisgICAgZ2xHZW5C
dWZmZXJzKDEsICZtSW5kZXhCdWZmZXIpOworICAgIGdsQmluZEJ1ZmZlcihHTF9FTEVNRU5UX0FS
UkFZX0JVRkZFUiwgbUluZGV4QnVmZmVyKTsKKyAgICB1cGRhdGVCdWZmZXJEYXRhKCk7CisKKyAg
ICAvLyBTZXQgdGhlIHZpZXdwb3J0CisgICAgZ2xWaWV3cG9ydCgwLCAwLCBnZXRXaW5kb3coKS0+
Z2V0V2lkdGgoKSwgZ2V0V2luZG93KCktPmdldEhlaWdodCgpKTsKKworICAgIEdMZmxvYXQgc2Nh
bGUgPSAwLjVmOworICAgIEdMZmxvYXQgb2Zmc2V0ID0gMC41ZjsKKworICAgIGdsVW5pZm9ybTFm
KGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidVNjYWxlIiksIHNjYWxlKTsKKyAgICBn
bFVuaWZvcm0xZihnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInVPZmZzZXQiKSwgb2Zm
c2V0KTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworfQorCit2b2lkIEluZGV4Q29udmVy
c2lvblBlcmZUZXN0Ojp1cGRhdGVCdWZmZXJEYXRhKCkKK3sKKyAgICBnbEJ1ZmZlckRhdGEoR0xf
RUxFTUVOVF9BUlJBWV9CVUZGRVIsIG1JbmRleERhdGEuc2l6ZSgpICogc2l6ZW9mKG1JbmRleERh
dGFbMF0pLCAmbUluZGV4RGF0YVswXSwgR0xfU1RBVElDX0RSQVcpOworfQorCit2b2lkIEluZGV4
Q29udmVyc2lvblBlcmZUZXN0OjpkZXN0cm95QmVuY2htYXJrKCkKK3sKKyAgICBnbERlbGV0ZVBy
b2dyYW0obVByb2dyYW0pOworICAgIGdsRGVsZXRlQnVmZmVycygxLCAmbVZlcnRleEJ1ZmZlcik7
CisgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtSW5kZXhCdWZmZXIpOworfQorCit2b2lkIEluZGV4
Q29udmVyc2lvblBlcmZUZXN0OjpkcmF3QmVuY2htYXJrKCkKK3sKKyAgICBjb25zdCBhdXRvICZw
YXJhbXMgPSBHZXRQYXJhbSgpOworCisgICAgaWYgKHBhcmFtcy5pbmRleFJhbmdlT2Zmc2V0ID09
IDApCisgICAgeworICAgICAgICBkcmF3Q29udmVyc2lvbigpOworICAgIH0KKyAgICBlbHNlCisg
ICAgeworICAgICAgICBkcmF3SW5kZXhSYW5nZSgpOworICAgIH0KK30KKwordm9pZCBJbmRleENv
bnZlcnNpb25QZXJmVGVzdDo6ZHJhd0NvbnZlcnNpb24oKQoreworICAgIGNvbnN0IGF1dG8gJnBh
cmFtcyA9IEdldFBhcmFtKCk7CisKKyAgICAvLyBUcmlnZ2VyIGFuIHVwZGF0ZSB0byBlbnN1cmUg
d2UgY29udmVydCBvbmNlIGEgZnJhbWUKKyAgICB1cGRhdGVCdWZmZXJEYXRhKCk7CisKKyAgICBm
b3IgKHVuc2lnbmVkIGludCBpdCA9IDA7IGl0IDwgcGFyYW1zLml0ZXJhdGlvbnM7IGl0KyspCisg
ICAgeworICAgICAgICBnbERyYXdFbGVtZW50cyhHTF9UUklBTkdMRVMsCisgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHBhcmFtcy5udW1JbmRleFRyaXMgKiAzIC0g
MSksCisgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX1NIT1JULAorICAgICAgICAg
ICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KDApKTsKKyAgICB9CisKKyAg
ICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKK30KKwordm9pZCBJbmRleENvbnZlcnNpb25QZXJmVGVz
dDo6ZHJhd0luZGV4UmFuZ2UoKQoreworICAgIGNvbnN0IGF1dG8gJnBhcmFtcyA9IEdldFBhcmFt
KCk7CisKKyAgICB1bnNpZ25lZCBpbnQgaW5kZXhDb3VudCA9IDM7CisgICAgc2l6ZV90IG9mZnNl
dCAgICAgICAgICAgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4Q291bnQgKiBnZXROdW1TdGVw
c1BlcmZvcm1lZCgpKTsKKworICAgIG9mZnNldCAlPSAocGFyYW1zLm51bUluZGV4VHJpcyAqIDMp
OworCisgICAgLy8gVGhpcyB0ZXN0IGluY3JlbWVudHMgYW4gb2Zmc2V0IGVhY2ggc3RlcC4gRHJh
d2luZyByZXBlYXRlZGx5IG1heSBjYXVzZSB0aGUgc3lzdGVtIG1lbW9yeQorICAgIC8vIHRvIHJl
bGVhc2UuIFRoZW4sIHVzaW5nIGEgZnJlc2ggb2Zmc2V0IHdpbGwgcmVxdWlyZSBpbmRleCByYW5n
ZSB2YWxpZGF0aW9uLCB3aGljaCBwYWdlcworICAgIC8vIGl0IGJhY2sgaW4uIFRoZSBwZXJmb3Jt
YW5jZSBzaG91bGQgYmUgZ29vZCBldmVuIGlmIHRoZSBkYXRhIGlzIHdhcyB1c2VkIHF1aXRlIGEg
Yml0LgorICAgIGZvciAodW5zaWduZWQgaW50IGl0ID0gMDsgaXQgPCBwYXJhbXMuaXRlcmF0aW9u
czsgaXQrKykKKyAgICB7CisgICAgICAgIGdsRHJhd0VsZW1lbnRzKEdMX1RSSUFOR0xFUywgc3Rh
dGljX2Nhc3Q8R0xzaXplaT4oaW5kZXhDb3VudCksIEdMX1VOU0lHTkVEX1NIT1JULAorICAgICAg
ICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PEdMdm9pZCAqPihvZmZzZXQpKTsKKyAg
ICB9CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKK30KKworSW5kZXhDb252ZXJzaW9uUGVy
ZlBhcmFtcyBJbmRleENvbnZlcnNpb25QZXJmRDNEMTFQYXJhbXMoKQoreworICAgIEluZGV4Q29u
dmVyc2lvblBlcmZQYXJhbXMgcGFyYW1zOworICAgIHBhcmFtcy5lZ2xQYXJhbWV0ZXJzID0gZWds
X3BsYXRmb3JtOjpEM0QxMV9OVUxMKCk7CisgICAgcGFyYW1zLm1ham9yVmVyc2lvbiA9IDI7Cisg
ICAgcGFyYW1zLm1pbm9yVmVyc2lvbiA9IDA7CisgICAgcGFyYW1zLndpbmRvd1dpZHRoID0gMjU2
OworICAgIHBhcmFtcy53aW5kb3dIZWlnaHQgPSAyNTY7CisgICAgcGFyYW1zLml0ZXJhdGlvbnMg
ICAgPSAyMjU7CisgICAgcGFyYW1zLm51bUluZGV4VHJpcyA9IDMwMDA7CisgICAgcGFyYW1zLmlu
ZGV4UmFuZ2VPZmZzZXQgPSAwOworICAgIHJldHVybiBwYXJhbXM7Cit9CisKK0luZGV4Q29udmVy
c2lvblBlcmZQYXJhbXMgSW5kZXhSYW5nZU9mZnNldFBlcmZEM0QxMVBhcmFtcygpCit7CisgICAg
SW5kZXhDb252ZXJzaW9uUGVyZlBhcmFtcyBwYXJhbXM7CisgICAgcGFyYW1zLmVnbFBhcmFtZXRl
cnMgICAgPSBlZ2xfcGxhdGZvcm06OkQzRDExX05VTEwoKTsKKyAgICBwYXJhbXMubWFqb3JWZXJz
aW9uICAgICA9IDI7CisgICAgcGFyYW1zLm1pbm9yVmVyc2lvbiAgICAgPSAwOworICAgIHBhcmFt
cy53aW5kb3dXaWR0aCAgICAgID0gMjU2OworICAgIHBhcmFtcy53aW5kb3dIZWlnaHQgICAgID0g
MjU2OworICAgIHBhcmFtcy5pdGVyYXRpb25zICAgICAgID0gMTY7CisgICAgcGFyYW1zLm51bUlu
ZGV4VHJpcyAgICAgPSA1MDAwMDsKKyAgICBwYXJhbXMuaW5kZXhSYW5nZU9mZnNldCA9IDY0Owor
ICAgIHJldHVybiBwYXJhbXM7Cit9CisKK1RFU1RfUChJbmRleENvbnZlcnNpb25QZXJmVGVzdCwg
UnVuKQoreworICAgIHJ1bigpOworfQorCitBTkdMRV9JTlNUQU5USUFURV9URVNUKEluZGV4Q29u
dmVyc2lvblBlcmZUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICBJbmRleENvbnZlcnNpb25Q
ZXJmRDNEMTFQYXJhbXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgSW5kZXhSYW5nZU9mZnNl
dFBlcmZEM0QxMVBhcmFtcygpKTsKKworfSAgLy8gbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9JbmRleERhdGFNYW5hZ2VyVGVzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZf
dGVzdHMvSW5kZXhEYXRhTWFuYWdlclRlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0luZGV4RGF0YU1hbmFnZXJUZXN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3NiBAQAorLy8KKy8vIENvcHlyaWdodCAy
MDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEluZGV4
RGF0YU1hbmFnZXJQZXJmVGVzdDoKKy8vICAgUGVyZm9ybWFuY2UgdGVzdCBmb3IgaW5kZXggYnVm
ZmVyIG1hbmFnZW1lbnQuCisvLworCisjaW5jbHVkZSAiQU5HTEVQZXJmVGVzdC5oIgorCisjaW5j
bHVkZSA8Z21vY2svZ21vY2suaD4KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9C
dWZmZXJEM0QuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvSW5kZXhCdWZmZXIu
aCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvSW5kZXhEYXRhTWFuYWdlci5oIgor
Cit1c2luZyBuYW1lc3BhY2UgdGVzdGluZzsKKworbmFtZXNwYWNlCit7CisKK2NsYXNzIE1vY2tJ
bmRleEJ1ZmZlciA6IHB1YmxpYyByeDo6SW5kZXhCdWZmZXIKK3sKKyAgcHVibGljOgorICAgIE1v
Y2tJbmRleEJ1ZmZlcih1bnNpZ25lZCBpbnQgYnVmZmVyU2l6ZSwgR0xlbnVtIGluZGV4VHlwZSkK
KyAgICAgICAgOiBtQnVmZmVyU2l6ZShidWZmZXJTaXplKSwKKyAgICAgICAgICBtSW5kZXhUeXBl
KGluZGV4VHlwZSkKKyAgICB7CisgICAgfQorCisgICAgTU9DS19NRVRIT0QzKGluaXRpYWxpemUs
IGdsOjpFcnJvcih1bnNpZ25lZCBpbnQsIEdMZW51bSwgYm9vbCkpOworICAgIE1PQ0tfTUVUSE9E
MyhtYXBCdWZmZXIsIGdsOjpFcnJvcih1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCwgdm9pZCoq
KSk7CisgICAgTU9DS19NRVRIT0QwKHVubWFwQnVmZmVyLCBnbDo6RXJyb3IoKSk7CisgICAgTU9D
S19NRVRIT0QwKGRpc2NhcmQsIGdsOjpFcnJvcigpKTsKKyAgICBNT0NLX01FVEhPRDIoc2V0U2l6
ZSwgZ2w6OkVycm9yKHVuc2lnbmVkIGludCwgR0xlbnVtKSk7CisKKyAgICAvLyBpbmxpbmVkIGZv
ciBzcGVlZAorICAgIEdMZW51bSBnZXRJbmRleFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtSW5kZXhUeXBlOyB9CisgICAgdW5zaWduZWQgaW50IGdldEJ1ZmZlclNpemUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtQnVmZmVyU2l6ZTsgfQorCisgIHByaXZhdGU6CisgICAgdW5zaWdu
ZWQgaW50IG1CdWZmZXJTaXplOworICAgIEdMZW51bSBtSW5kZXhUeXBlOworfTsKKworY2xhc3Mg
TW9ja0J1ZmZlckZhY3RvcnlEM0QgOiBwdWJsaWMgcng6OkJ1ZmZlckZhY3RvcnlEM0QKK3sKKyAg
cHVibGljOgorICAgIE1vY2tCdWZmZXJGYWN0b3J5RDNEKHVuc2lnbmVkIGludCBidWZmZXJTaXpl
LCBHTGVudW0gaW5kZXhUeXBlKQorICAgICAgICA6IG1CdWZmZXJTaXplKGJ1ZmZlclNpemUpLAor
ICAgICAgICAgIG1JbmRleFR5cGUoaW5kZXhUeXBlKQorICAgIHsKKyAgICB9CisKKyAgICBNT0NL
X01FVEhPRDAoY3JlYXRlVmVydGV4QnVmZmVyLCByeDo6VmVydGV4QnVmZmVyKigpKTsKKyAgICBN
T0NLX0NPTlNUX01FVEhPRDEoZ2V0VmVydGV4Q29udmVyc2lvblR5cGUsIHJ4OjpWZXJ0ZXhDb252
ZXJzaW9uVHlwZShnbDo6VmVydGV4Rm9ybWF0VHlwZSkpOworICAgIE1PQ0tfQ09OU1RfTUVUSE9E
MShnZXRWZXJ0ZXhDb21wb25lbnRUeXBlLCBHTGVudW0oZ2w6OlZlcnRleEZvcm1hdFR5cGUpKTsK
KyAgICBNT0NLX0NPTlNUX01FVEhPRDMoZ2V0VmVydGV4U3BhY2VSZXF1aXJlZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgZ2w6OkVycm9yT3JSZXN1bHQ8dW5zaWduZWQgaW50Pihjb25zdCBnbDo6
VmVydGV4QXR0cmlidXRlICYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpKSk7CisKKyAgICAvLyBEZXBlbmRlbmN5
IGluamVjdGlvbgorICAgIHJ4OjpJbmRleEJ1ZmZlciogY3JlYXRlSW5kZXhCdWZmZXIoKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBNb2NrSW5kZXhCdWZmZXIobUJ1ZmZlclNp
emUsIG1JbmRleFR5cGUpOworICAgIH0KKworICBwcml2YXRlOgorICAgIHVuc2lnbmVkIGludCBt
QnVmZmVyU2l6ZTsKKyAgICBHTGVudW0gbUluZGV4VHlwZTsKK307CisKK2NsYXNzIE1vY2tCdWZm
ZXJEM0QgOiBwdWJsaWMgcng6OkJ1ZmZlckQzRAoreworICBwdWJsaWM6CisgICAgTW9ja0J1ZmZl
ckQzRChyeDo6QnVmZmVyRmFjdG9yeUQzRCAqZmFjdG9yeSkKKyAgICAgICAgOiBCdWZmZXJEM0Qo
ZmFjdG9yeSksCisgICAgICAgICAgbURhdGEoKQorICAgIHsKKyAgICB9CisKKyAgICAvLyBCdWZm
ZXJJbXBsCisgICAgZ2w6OkVycm9yIHNldERhdGEoR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCAq
ZGF0YSwgc2l6ZV90IHNpemUsIEdMZW51bSkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIG1EYXRh
LnJlc2l6ZShzaXplKTsKKyAgICAgICAgaWYgKGRhdGEgJiYgc2l6ZSA+IDApCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1lbWNweSgmbURhdGFbMF0sIGRhdGEsIHNpemUpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIH0KKworICAgIE1PQ0tf
TUVUSE9ENChzZXRTdWJEYXRhLCBnbDo6RXJyb3IoR0xlbnVtLCBjb25zdCB2b2lkICosIHNpemVf
dCwgc2l6ZV90KSk7CisgICAgTU9DS19NRVRIT0Q0KGNvcHlTdWJEYXRhLCBnbDo6RXJyb3IoQnVm
ZmVySW1wbCosIEdMaW50cHRyLCBHTGludHB0ciwgR0xzaXplaXB0cikpOworICAgIE1PQ0tfTUVU
SE9EMihtYXAsIGdsOjpFcnJvcihHTGVudW0sIEdMdm9pZCAqKikpOworICAgIE1PQ0tfTUVUSE9E
NChtYXBSYW5nZSwgZ2w6OkVycm9yKHNpemVfdCwgc2l6ZV90LCBHTGJpdGZpZWxkLCBHTHZvaWQg
KiopKTsKKyAgICBNT0NLX01FVEhPRDEodW5tYXAsIGdsOjpFcnJvcihHTGJvb2xlYW4gKikpOwor
CisgICAgLy8gQnVmZmVyRDNECisgICAgTU9DS19NRVRIT0QwKG1hcmtUcmFuc2Zvcm1GZWVkYmFj
a1VzYWdlLCBnbDo6RXJyb3IoKSk7CisKKyAgICAvLyBpbmxpbmVkIGZvciBzcGVlZAorICAgIGJv
b2wgc3VwcG9ydHNEaXJlY3RCaW5kaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICBzaXplX3QgZ2V0U2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1EYXRhLnNp
emUoKTsgfQorCisgICAgZ2w6OkVycm9yIGdldERhdGEoY29uc3QgdWludDhfdCAqKm91dERhdGEp
IG92ZXJyaWRlCisgICAgeworICAgICAgICAqb3V0RGF0YSA9ICZtRGF0YVswXTsKKyAgICAgICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgfQorCisgIHByaXZhdGU6CisgICAg
c3RkOjp2ZWN0b3I8dWludDhfdD4gbURhdGE7Cit9OworCitjbGFzcyBJbmRleERhdGFNYW5hZ2Vy
UGVyZlRlc3QgOiBwdWJsaWMgQU5HTEVQZXJmVGVzdAoreworICBwdWJsaWM6CisgICAgSW5kZXhE
YXRhTWFuYWdlclBlcmZUZXN0KCk7CisKKyAgICB2b2lkIHN0ZXAoKSBvdmVycmlkZTsKKworICAg
IHJ4OjpJbmRleERhdGFNYW5hZ2VyIG1JbmRleERhdGFNYW5hZ2VyOworICAgIEdMc2l6ZWkgbUlu
ZGV4Q291bnQ7CisgICAgdW5zaWduZWQgaW50IG1CdWZmZXJTaXplOworICAgIE1vY2tCdWZmZXJG
YWN0b3J5RDNEIG1Nb2NrRmFjdG9yeTsKKyAgICBnbDo6QnVmZmVyIG1JbmRleEJ1ZmZlcjsKK307
CisKK01vY2tCdWZmZXJEM0QgKkluaXRNb2NrQnVmZmVyRDNEKE1vY2tCdWZmZXJGYWN0b3J5RDNE
ICptb2NrRmFjdG9yeSkKK3sKKyAgICBNb2NrQnVmZmVyRDNEICptb2NrQnVmZmVyRDNEID0gbmV3
IE1vY2tCdWZmZXJEM0QobW9ja0ZhY3RvcnkpOworCisgICAgRVhQRUNUX0NBTEwoKm1vY2tGYWN0
b3J5LCBjcmVhdGVWZXJ0ZXhCdWZmZXIoKSkuV2lsbE9uY2UoUmV0dXJuKG51bGxwdHIpKS5SZXRp
cmVzT25TYXR1cmF0aW9uKCk7CisgICAgbW9ja0J1ZmZlckQzRC0+aW5pdGlhbGl6ZVN0YXRpY0Rh
dGEoKTsKKworICAgIHJldHVybiBtb2NrQnVmZmVyRDNEOworfQorCitJbmRleERhdGFNYW5hZ2Vy
UGVyZlRlc3Q6OkluZGV4RGF0YU1hbmFnZXJQZXJmVGVzdCgpCisgICAgOiBBTkdMRVBlcmZUZXN0
KCJJbmRleERhdGFNYW5nZXIiLCAiX3J1biIpLAorICAgICAgbUluZGV4RGF0YU1hbmFnZXIoJm1N
b2NrRmFjdG9yeSwgcng6OlJFTkRFUkVSX0QzRDExKSwKKyAgICAgIG1JbmRleENvdW50KDQwMDAp
LAorICAgICAgbUJ1ZmZlclNpemUobUluZGV4Q291bnQgKiBzaXplb2YoR0x1c2hvcnQpKSwKKyAg
ICAgIG1Nb2NrRmFjdG9yeShtQnVmZmVyU2l6ZSwgR0xfVU5TSUdORURfU0hPUlQpLAorICAgICAg
bUluZGV4QnVmZmVyKEluaXRNb2NrQnVmZmVyRDNEKCZtTW9ja0ZhY3RvcnkpLCAxKQoreworICAg
IHN0ZDo6dmVjdG9yPEdMdXNob3J0PiBpbmRleERhdGEobUluZGV4Q291bnQpOworICAgIGZvciAo
R0xzaXplaSBpbmRleCA9IDA7IGluZGV4IDwgbUluZGV4Q291bnQ7ICsraW5kZXgpCisgICAgewor
ICAgICAgICBpbmRleERhdGFbaW5kZXhdID0gc3RhdGljX2Nhc3Q8R0x1c2hvcnQ+KGluZGV4KTsK
KyAgICB9CisgICAgbUluZGV4QnVmZmVyLmJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCAmaW5k
ZXhEYXRhWzBdLCBpbmRleERhdGEuc2l6ZSgpICogc2l6ZW9mKEdMdXNob3J0KSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9TVEFUSUNfRFJBVyk7Cit9CisKK3ZvaWQgSW5kZXhEYXRh
TWFuYWdlclBlcmZUZXN0OjpzdGVwKCkKK3sKKyAgICByeDo6VHJhbnNsYXRlZEluZGV4RGF0YSB0
cmFuc2xhdGVkSW5kZXhEYXRhOworICAgIGZvciAodW5zaWduZWQgaW50IGl0ZXJhdGlvbiA9IDA7
IGl0ZXJhdGlvbiA8IDEwMDsgKytpdGVyYXRpb24pCisgICAgeworICAgICAgICBtSW5kZXhCdWZm
ZXIuZ2V0SW5kZXhSYW5nZShHTF9VTlNJR05FRF9TSE9SVCwgMCwgbUluZGV4Q291bnQsIGZhbHNl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHJhbnNsYXRlZEluZGV4RGF0
YS5pbmRleFJhbmdlKTsKKyAgICAgICAgbUluZGV4RGF0YU1hbmFnZXIucHJlcGFyZUluZGV4RGF0
YShHTF9VTlNJR05FRF9TSE9SVCwgbUluZGV4Q291bnQsICZtSW5kZXhCdWZmZXIsIG51bGxwdHIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRyYW5zbGF0ZWRJ
bmRleERhdGEsIGZhbHNlKTsKKyAgICB9Cit9CisKK1RFU1RfRihJbmRleERhdGFNYW5hZ2VyUGVy
ZlRlc3QsIFJ1bikKK3sKKyAgICBydW4oKTsKK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvSW5zdGFuY2luZ1BlcmYuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0luc3Rh
bmNpbmdQZXJmLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvcGVyZl90ZXN0cy9JbnN0YW5jaW5nUGVyZi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwzNjYgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBJbnN0YW5jaW5nUGVyZjoKKy8vICAgUGVyZm9y
bWFuY2UgdGVzdHMgZm9yIEFOR0xFIGluc3RhbmNlZCBkcmF3IGNhbGxzLgorLy8KKworI2luY2x1
ZGUgPGNtYXRoPgorI2luY2x1ZGUgPHNzdHJlYW0+CisKKyNpbmNsdWRlICJBTkdMRVBlcmZUZXN0
LmgiCisjaW5jbHVkZSAiTWF0cml4LmgiCisjaW5jbHVkZSAicmFuZG9tX3V0aWxzLmgiCisjaW5j
bHVkZSAic2hhZGVyX3V0aWxzLmgiCisjaW5jbHVkZSAiVmVjdG9yLmgiCisKK3VzaW5nIG5hbWVz
cGFjZSBhbmdsZTsKK3VzaW5nIG5hbWVzcGFjZSBlZ2xfcGxhdGZvcm07CisKK25hbWVzcGFjZQor
eworCitmbG9hdCBBbmltYXRpb25TaWduYWwoZmxvYXQgdCkKK3sKKyAgICBmbG9hdCBsID0gdCAv
IDIuMGY7CisgICAgZmxvYXQgZiA9IGwgLSBzdGQ6OmZsb29yKGwpOworICAgIHJldHVybiAoZiA+
IDAuNWYgPyAxLjBmIC0gZiA6IGYpICogNC4wZiAtIDEuMGY7Cit9CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgorc2l6ZV90IFZlY3RvclNpemVCeXRlcyhjb25zdCBzdGQ6OnZlY3RvcjxUPiAmdmVj
KQoreworICAgIHJldHVybiBzaXplb2YoVCkgKiB2ZWMuc2l6ZSgpOworfQorCitWZWN0b3IzIFJh
bmRvbVZlY3RvcjMoUk5HICpybmcpCit7CisgICAgcmV0dXJuIFZlY3RvcjMocm5nLT5yYW5kb21O
ZWdhdGl2ZU9uZVRvT25lKCksIHJuZy0+cmFuZG9tTmVnYXRpdmVPbmVUb09uZSgpLAorICAgICAg
ICAgICAgICAgICAgIHJuZy0+cmFuZG9tTmVnYXRpdmVPbmVUb09uZSgpKTsKK30KKworc3RydWN0
IEluc3RhbmNpbmdQZXJmUGFyYW1zIGZpbmFsIDogcHVibGljIFJlbmRlclRlc3RQYXJhbXMKK3sK
KyAgICAvLyBDb21tb24gZGVmYXVsdCBvcHRpb25zCisgICAgSW5zdGFuY2luZ1BlcmZQYXJhbXMo
KQorICAgIHsKKyAgICAgICAgbWFqb3JWZXJzaW9uICAgICAgPSAyOworICAgICAgICBtaW5vclZl
cnNpb24gICAgICA9IDA7CisgICAgICAgIHdpbmRvd1dpZHRoICAgICAgID0gMjU2OworICAgICAg
ICB3aW5kb3dIZWlnaHQgICAgICA9IDI1NjsKKyAgICAgICAgaXRlcmF0aW9ucyAgICAgICAgPSAx
OworICAgICAgICBydW5UaW1lU2Vjb25kcyAgICA9IDEwLjA7CisgICAgICAgIGFuaW1hdGlvbkVu
YWJsZWQgID0gZmFsc2U7CisgICAgICAgIGluc3RhbmNpbmdFbmFibGVkID0gdHJ1ZTsKKyAgICB9
CisKKyAgICBzdGQ6OnN0cmluZyBzdWZmaXgoKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgc3RkOjpzdHJpbmdzdHJlYW0gc3Ryc3RyOworCisgICAgICAgIHN0cnN0ciA8PCBSZW5kZXJU
ZXN0UGFyYW1zOjpzdWZmaXgoKTsKKworICAgICAgICBpZiAoIWluc3RhbmNpbmdFbmFibGVkKQor
ICAgICAgICB7CisgICAgICAgICAgICBzdHJzdHIgPDwgIl9iaWxsYm9hcmRzIjsKKyAgICAgICAg
fQorCisgICAgICAgIHJldHVybiBzdHJzdHIuc3RyKCk7CisgICAgfQorCisgICAgdW5zaWduZWQg
aW50IGl0ZXJhdGlvbnM7CisgICAgZG91YmxlIHJ1blRpbWVTZWNvbmRzOworICAgIGJvb2wgYW5p
bWF0aW9uRW5hYmxlZDsKKyAgICBib29sIGluc3RhbmNpbmdFbmFibGVkOworfTsKKworc3RkOjpv
c3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmb3MsIGNvbnN0IEluc3RhbmNpbmdQZXJm
UGFyYW1zICZwYXJhbXMpCit7CisgICAgb3MgPDwgcGFyYW1zLnN1ZmZpeCgpLnN1YnN0cigxKTsK
KyAgICByZXR1cm4gb3M7Cit9CisKK2NsYXNzIEluc3RhbmNpbmdQZXJmQmVuY2htYXJrIDogcHVi
bGljIEFOR0xFUmVuZGVyVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVi
bGljIDo6dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPEluc3RhbmNpbmdQZXJmUGFyYW1zPgor
eworICBwdWJsaWM6CisgICAgSW5zdGFuY2luZ1BlcmZCZW5jaG1hcmsoKTsKKworICAgIHZvaWQg
aW5pdGlhbGl6ZUJlbmNobWFyaygpIG92ZXJyaWRlOworICAgIHZvaWQgZGVzdHJveUJlbmNobWFy
aygpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0JlbmNobWFyaygpIG92ZXJyaWRlOworCisgIHBy
aXZhdGU6CisgICAgR0x1aW50IG1Qcm9ncmFtOworICAgIHN0ZDo6dmVjdG9yPEdMdWludD4gbUJ1
ZmZlcnM7CisgICAgR0x1aW50IG1OdW1Qb2ludHM7CisgICAgc3RkOjp2ZWN0b3I8VmVjdG9yMz4g
bVRyYW5zbGF0ZURhdGE7CisgICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IG1TaXplRGF0YTsKKyAgICBz
dGQ6OnZlY3RvcjxWZWN0b3IzPiBtQ29sb3JEYXRhOworICAgIGFuZ2xlOjpSTkcgbVJORzsKK307
CisKK0luc3RhbmNpbmdQZXJmQmVuY2htYXJrOjpJbnN0YW5jaW5nUGVyZkJlbmNobWFyaygpCisg
ICAgOiBBTkdMRVJlbmRlclRlc3QoIkluc3RhbmNpbmdQZXJmIiwgR2V0UGFyYW0oKSksIG1Qcm9n
cmFtKDApLCBtTnVtUG9pbnRzKDc1MDAwKQoreworICAgIG1SdW5UaW1lU2Vjb25kcyA9IEdldFBh
cmFtKCkucnVuVGltZVNlY29uZHM7Cit9CisKK3ZvaWQgSW5zdGFuY2luZ1BlcmZCZW5jaG1hcms6
OmluaXRpYWxpemVCZW5jaG1hcmsoKQoreworICAgIGNvbnN0IGF1dG8gJnBhcmFtcyA9IEdldFBh
cmFtKCk7CisKKyAgICBBU1NFUlRfTFQoMHUsIHBhcmFtcy5pdGVyYXRpb25zKTsKKworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nIHZzID0KKyAgICAgICAgImF0dHJpYnV0ZSB2ZWMyIGFQb3NpdGlvbjtc
biIKKyAgICAgICAgImF0dHJpYnV0ZSB2ZWMzIGFUcmFuc2xhdGU7XG4iCisgICAgICAgICJhdHRy
aWJ1dGUgZmxvYXQgYVNjYWxlO1xuIgorICAgICAgICAiYXR0cmlidXRlIHZlYzMgYUNvbG9yO1xu
IgorICAgICAgICAidW5pZm9ybSBtYXQ0IHVXb3JsZE1hdHJpeDtcbiIKKyAgICAgICAgInVuaWZv
cm0gbWF0NCB1UHJvamVjdGlvbk1hdHJpeDtcbiIKKyAgICAgICAgInZhcnlpbmcgdmVjMyB2Q29s
b3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAi
ICAgIHZlYzQgcG9zaXRpb24gPSB1V29ybGRNYXRyaXggKiB2ZWM0KGFUcmFuc2xhdGUsIDEuMCk7
XG4iCisgICAgICAgICIgICAgcG9zaXRpb24ueHkgKz0gYVBvc2l0aW9uICogYVNjYWxlO1xuIgor
ICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gdVByb2plY3Rpb25NYXRyaXggKiBwb3NpdGlvbjtc
biIKKyAgICAgICAgIiAgICB2Q29sb3IgPSBhQ29sb3I7XG4iCisgICAgICAgICJ9XG4iOworCisg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgZnMgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7XG4iCisgICAgICAgICJ2YXJ5aW5nIHZlYzMgdkNvbG9yO1xuIgorICAgICAgICAidm9pZCBt
YWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0
KHZDb2xvciwgMS4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBtUHJvZ3JhbSA9IENvbXBp
bGVQcm9ncmFtKHZzLCBmcyk7CisgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7CisKKyAgICBn
bFVzZVByb2dyYW0obVByb2dyYW0pOworCisgICAgZ2xDbGVhckNvbG9yKDAuMGYsIDAuMGYsIDAu
MGYsIDAuMGYpOworCisgICAgR0x1aW50IGJhc2VJbmRleERhdGFbNl0gICAgID0gezAsIDEsIDIs
IDEsIDMsIDJ9OworICAgIFZlY3RvcjIgYmFzZVBvc2l0aW9uRGF0YVs0XSA9IHtWZWN0b3IyKC0x
LjBmLCAxLjBmKSwgVmVjdG9yMigxLjBmLCAxLjBmKSwgVmVjdG9yMigtMS4wZiwgLTEuMGYpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3IyKDEuMGYsIC0xLjBmKX07
CisKKyAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IGluZGV4RGF0YTsKKyAgICBzdGQ6OnZlY3RvcjxW
ZWN0b3IyPiBwb3NpdGlvbkRhdGE7CisKKyAgICBpZiAoIXBhcmFtcy5pbnN0YW5jaW5nRW5hYmxl
ZCkKKyAgICB7CisgICAgICAgIEdMdWludCBwb2ludFZlcnRleFN0cmlkZSA9IDQ7CisgICAgICAg
IGZvciAoR0x1aW50IHBvaW50SW5kZXggPSAwOyBwb2ludEluZGV4IDwgbU51bVBvaW50czsgKytw
b2ludEluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKEdMdWludCBpbmRleEluZGV4
ID0gMDsgaW5kZXhJbmRleCA8IDY7ICsraW5kZXhJbmRleCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBpbmRleERhdGEucHVzaF9iYWNrKGJhc2VJbmRleERhdGFbaW5kZXhJbmRleF0g
KyBwb2ludEluZGV4ICogcG9pbnRWZXJ0ZXhTdHJpZGUpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBWZWN0b3IzIHJhbmRWZWMgPSBSYW5kb21WZWN0b3IzKCZtUk5HKTsKKyAgICAgICAg
ICAgIGZvciAoR0x1aW50IHZlcnRleEluZGV4ID0gMDsgdmVydGV4SW5kZXggPCA0OyArK3ZlcnRl
eEluZGV4KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uRGF0YS5wdXNo
X2JhY2soYmFzZVBvc2l0aW9uRGF0YVt2ZXJ0ZXhJbmRleF0pOworICAgICAgICAgICAgICAgIG1U
cmFuc2xhdGVEYXRhLnB1c2hfYmFjayhyYW5kVmVjKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgIG1TaXplRGF0YS5yZXNpemUobU51bVBvaW50cyAqIDQsIDAuMDEyZik7Cisg
ICAgICAgIG1Db2xvckRhdGEucmVzaXplKG1OdW1Qb2ludHMgKiA0LCBWZWN0b3IzKDEuMGYsIDAu
MGYsIDAuMGYpKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgZm9yIChHTHVpbnQg
aW5kZXggOiBiYXNlSW5kZXhEYXRhKQorICAgICAgICB7CisgICAgICAgICAgICBpbmRleERhdGEu
cHVzaF9iYWNrKGluZGV4KTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoY29uc3QgVmVjdG9y
MiAmcG9zaXRpb24gOiBiYXNlUG9zaXRpb25EYXRhKQorICAgICAgICB7CisgICAgICAgICAgICBw
b3NpdGlvbkRhdGEucHVzaF9iYWNrKHBvc2l0aW9uKTsKKyAgICAgICAgfQorCisgICAgICAgIGZv
ciAoR0x1aW50IHBvaW50SW5kZXggPSAwOyBwb2ludEluZGV4IDwgbU51bVBvaW50czsgKytwb2lu
dEluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBWZWN0b3IzIHJhbmRWZWMgPSBSYW5kb21W
ZWN0b3IzKCZtUk5HKTsKKyAgICAgICAgICAgIG1UcmFuc2xhdGVEYXRhLnB1c2hfYmFjayhyYW5k
VmVjKTsKKyAgICAgICAgfQorCisgICAgICAgIG1TaXplRGF0YS5yZXNpemUobU51bVBvaW50cywg
MC4wMTJmKTsKKyAgICAgICAgbUNvbG9yRGF0YS5yZXNpemUobU51bVBvaW50cywgVmVjdG9yMygx
LjBmLCAwLjBmLCAwLjBmKSk7CisgICAgfQorCisgICAgbUJ1ZmZlcnMucmVzaXplKDUsIDApOwor
ICAgIGdsR2VuQnVmZmVycyhzdGF0aWNfY2FzdDxHTHNpemVpPihtQnVmZmVycy5zaXplKCkpLCAm
bUJ1ZmZlcnNbMF0pOworCisgICAgLy8gSW5kZXggRGF0YQorICAgIGdsQmluZEJ1ZmZlcihHTF9F
TEVNRU5UX0FSUkFZX0JVRkZFUiwgbUJ1ZmZlcnNbMF0pOworICAgIGdsQnVmZmVyRGF0YShHTF9F
TEVNRU5UX0FSUkFZX0JVRkZFUiwgVmVjdG9yU2l6ZUJ5dGVzKGluZGV4RGF0YSksICZpbmRleERh
dGFbMF0sCisgICAgICAgICAgICAgICAgIEdMX1NUQVRJQ19EUkFXKTsKKworICAgIC8vIFBvc2l0
aW9uIERhdGEKKyAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtQnVmZmVyc1sxXSk7
CisgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgVmVjdG9yU2l6ZUJ5dGVzKHBvc2l0
aW9uRGF0YSksICZwb3NpdGlvbkRhdGFbMF0sIEdMX1NUQVRJQ19EUkFXKTsKKyAgICBHTGludCBw
b3NpdGlvbkxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgImFQb3NpdGlv
biIpOworICAgIEFTU0VSVF9ORSgtMSwgcG9zaXRpb25Mb2NhdGlvbik7CisgICAgZ2xWZXJ0ZXhB
dHRyaWJQb2ludGVyKHBvc2l0aW9uTG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgOCwg
bnVsbHB0cik7CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxvY2F0aW9u
KTsKKworICAgIC8vIFRyYW5zbGF0ZSBEYXRhCisgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JV
RkZFUiwgbUJ1ZmZlcnNbMl0pOworICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIFZl
Y3RvclNpemVCeXRlcyhtVHJhbnNsYXRlRGF0YSksICZtVHJhbnNsYXRlRGF0YVswXSwKKyAgICAg
ICAgICAgICAgICAgR0xfU1RBVElDX0RSQVcpOworICAgIEdMaW50IHRyYW5zbGF0ZUxvY2F0aW9u
ID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgImFUcmFuc2xhdGUiKTsKKyAgICBBU1NF
UlRfTkUoLTEsIHRyYW5zbGF0ZUxvY2F0aW9uKTsKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIo
dHJhbnNsYXRlTG9jYXRpb24sIDMsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMTIsIG51bGxwdHIpOwor
ICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkodHJhbnNsYXRlTG9jYXRpb24pOworICAgIGds
VmVydGV4QXR0cmliRGl2aXNvckFOR0xFKHRyYW5zbGF0ZUxvY2F0aW9uLCAxKTsKKworICAgIC8v
IFNjYWxlIERhdGEKKyAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtQnVmZmVyc1sz
XSk7CisgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgVmVjdG9yU2l6ZUJ5dGVzKG1T
aXplRGF0YSksIG51bGxwdHIsIEdMX0RZTkFNSUNfRFJBVyk7CisgICAgR0xpbnQgc2NhbGVMb2Nh
dGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJhU2NhbGUiKTsKKyAgICBBU1NF
UlRfTkUoLTEsIHNjYWxlTG9jYXRpb24pOworICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihzY2Fs
ZUxvY2F0aW9uLCAxLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDQsIG51bGxwdHIpOworICAgIGdsRW5h
YmxlVmVydGV4QXR0cmliQXJyYXkoc2NhbGVMb2NhdGlvbik7CisgICAgZ2xWZXJ0ZXhBdHRyaWJE
aXZpc29yQU5HTEUoc2NhbGVMb2NhdGlvbiwgMSk7CisKKyAgICAvLyBDb2xvciBEYXRhCisgICAg
Z2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZlcnNbNF0pOworICAgIGdsQnVmZmVy
RGF0YShHTF9BUlJBWV9CVUZGRVIsIFZlY3RvclNpemVCeXRlcyhtQ29sb3JEYXRhKSwgbnVsbHB0
ciwgR0xfRFlOQU1JQ19EUkFXKTsKKyAgICBHTGludCBjb2xvckxvY2F0aW9uID0gZ2xHZXRBdHRy
aWJMb2NhdGlvbihtUHJvZ3JhbSwgImFDb2xvciIpOworICAgIEFTU0VSVF9ORSgtMSwgY29sb3JM
b2NhdGlvbik7CisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKGNvbG9yTG9jYXRpb24sIDMsIEdM
X0ZMT0FULCBHTF9GQUxTRSwgMTIsIG51bGxwdHIpOworICAgIGdsRW5hYmxlVmVydGV4QXR0cmli
QXJyYXkoY29sb3JMb2NhdGlvbik7CisgICAgZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoY29s
b3JMb2NhdGlvbiwgMSk7CisKKyAgICAvLyBTZXQgdGhlIHZpZXdwb3J0CisgICAgZ2xWaWV3cG9y
dCgwLCAwLCBnZXRXaW5kb3coKS0+Z2V0V2lkdGgoKSwgZ2V0V2luZG93KCktPmdldEhlaWdodCgp
KTsKKworICAgIC8vIEluaXQgbWF0cmljZXMKKyAgICBHTGludCB3b3JsZE1hdHJpeExvY2F0aW9u
ID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ1V29ybGRNYXRyaXgiKTsKKyAgICBB
U1NFUlRfTkUoLTEsIHdvcmxkTWF0cml4TG9jYXRpb24pOworICAgIE1hdHJpeDQgd29ybGRNYXRy
aXggPSBNYXRyaXg0Ojp0cmFuc2xhdGUoVmVjdG9yMygwLCAwLCAtMy4wZikpOworICAgIHdvcmxk
TWF0cml4ICo9IE1hdHJpeDQ6OnJvdGF0ZSgyNS4wZiwgVmVjdG9yMygwLjZmLCAxLjBmLCAwLjBm
KSk7CisgICAgZ2xVbmlmb3JtTWF0cml4NGZ2KHdvcmxkTWF0cml4TG9jYXRpb24sIDEsIEdMX0ZB
TFNFLCAmd29ybGRNYXRyaXguZGF0YVswXSk7CisKKyAgICBHTGludCBwcm9qZWN0aW9uTWF0cml4
TG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInVQcm9qZWN0aW9uTWF0
cml4Iik7CisgICAgQVNTRVJUX05FKC0xLCBwcm9qZWN0aW9uTWF0cml4TG9jYXRpb24pOworICAg
IGZsb2F0IGZvdiA9CisgICAgICAgIHN0YXRpY19jYXN0PGZsb2F0PihnZXRXaW5kb3coKS0+Z2V0
V2lkdGgoKSkgLyBzdGF0aWNfY2FzdDxmbG9hdD4oZ2V0V2luZG93KCktPmdldEhlaWdodCgpKTsK
KyAgICBNYXRyaXg0IHByb2plY3Rpb25NYXRyaXggPSBNYXRyaXg0OjpwZXJzcGVjdGl2ZSg2MC4w
ZiwgZm92LCAxLjBmLCAzMDAuMGYpOworICAgIGdsVW5pZm9ybU1hdHJpeDRmdihwcm9qZWN0aW9u
TWF0cml4TG9jYXRpb24sIDEsIEdMX0ZBTFNFLCAmcHJvamVjdGlvbk1hdHJpeC5kYXRhWzBdKTsK
KworICAgIGdldFdpbmRvdygpLT5zZXRWaXNpYmxlKHRydWUpOworCisgICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7Cit9CisKK3ZvaWQgSW5zdGFuY2luZ1BlcmZCZW5jaG1hcms6OmRlc3Ryb3lCZW5j
aG1hcmsoKQoreworICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7CisKKyAgICBpZiAoIW1C
dWZmZXJzLmVtcHR5KCkpCisgICAgeworICAgICAgICBnbERlbGV0ZUJ1ZmZlcnMoc3RhdGljX2Nh
c3Q8R0xzaXplaT4obUJ1ZmZlcnMuc2l6ZSgpKSwgJm1CdWZmZXJzWzBdKTsKKyAgICAgICAgbUJ1
ZmZlcnMuY2xlYXIoKTsKKyAgICB9Cit9CisKK3ZvaWQgSW5zdGFuY2luZ1BlcmZCZW5jaG1hcms6
OmRyYXdCZW5jaG1hcmsoKQoreworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisK
KyAgICBjb25zdCBhdXRvICZwYXJhbXMgPSBHZXRQYXJhbSgpOworCisgICAgLy8gQW5pbWF0aW5v
IG1ha2VzIHRoZSB0ZXN0IG1vcmUgaW50ZXJlc3RpbmcgdmlzdWFsbHksIGJ1dCBhbHNvIGVhdHMg
dXAgbWFueSBDUFUgY3ljbGVzLgorICAgIGlmIChwYXJhbXMuYW5pbWF0aW9uRW5hYmxlZCkKKyAg
ICB7CisgICAgICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBmb3IgYmlsbGJvYXJkcy4KKyAgICAgICAg
QVNTRVJUKHBhcmFtcy5pbnN0YW5jaW5nRW5hYmxlZCk7CisKKyAgICAgICAgZmxvYXQgdGltZSA9
IHN0YXRpY19jYXN0PGZsb2F0PihtVGltZXItPmdldEVsYXBzZWRUaW1lKCkpOworCisgICAgICAg
IGZvciAoc2l6ZV90IHBvaW50SW5kZXggPSAwOyBwb2ludEluZGV4IDwgbVRyYW5zbGF0ZURhdGEu
c2l6ZSgpOyArK3BvaW50SW5kZXgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IFZlY3Rv
cjMgJnRyYW5zbGF0ZSA9IG1UcmFuc2xhdGVEYXRhW3BvaW50SW5kZXhdOworCisgICAgICAgICAg
ICBmbG9hdCB0eCA9IHRyYW5zbGF0ZS54ICsgdGltZTsKKyAgICAgICAgICAgIGZsb2F0IHR5ID0g
dHJhbnNsYXRlLnkgKyB0aW1lOworICAgICAgICAgICAgZmxvYXQgdHogPSB0cmFuc2xhdGUueiAr
IHRpbWU7CisKKyAgICAgICAgICAgIGZsb2F0IHNjYWxlICAgICAgICAgICA9IEFuaW1hdGlvblNp
Z25hbCh0eCkgKiAwLjAxZiArIDAuMDFmOworICAgICAgICAgICAgbVNpemVEYXRhW3BvaW50SW5k
ZXhdID0gc2NhbGU7CisKKyAgICAgICAgICAgIFZlY3RvcjMgY29sb3I7CisgICAgICAgICAgICBj
b2xvci54ID0gQW5pbWF0aW9uU2lnbmFsKHR4KSAqIDAuNWYgKyAwLjVmOworICAgICAgICAgICAg
Y29sb3IueSA9IEFuaW1hdGlvblNpZ25hbCh0eSkgKiAwLjVmICsgMC41ZjsKKyAgICAgICAgICAg
IGNvbG9yLnogPSBBbmltYXRpb25TaWduYWwodHopICogMC41ZiArIDAuNWY7CisKKyAgICAgICAg
ICAgIG1Db2xvckRhdGFbcG9pbnRJbmRleF0gPSBjb2xvcjsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIC8vIFVwZGF0ZSBzY2FsZXMgYW5kIGNvbG9ycy4KKyAgICBnbEJpbmRCdWZmZXIoR0xfQVJS
QVlfQlVGRkVSLCBtQnVmZmVyc1szXSk7CisgICAgZ2xCdWZmZXJTdWJEYXRhKEdMX0FSUkFZX0JV
RkZFUiwgMCwgVmVjdG9yU2l6ZUJ5dGVzKG1TaXplRGF0YSksICZtU2l6ZURhdGFbMF0pOworCisg
ICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZlcnNbNF0pOworICAgIGdsQnVm
ZmVyU3ViRGF0YShHTF9BUlJBWV9CVUZGRVIsIDAsIFZlY3RvclNpemVCeXRlcyhtQ29sb3JEYXRh
KSwgJm1Db2xvckRhdGFbMF0pOworCisgICAgLy8gUmVuZGVyIHRoZSBpbnN0YW5jZXMvYmlsbGJv
YXJkcy4KKyAgICBpZiAocGFyYW1zLmluc3RhbmNpbmdFbmFibGVkKQorICAgIHsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbnQgaXQgPSAwOyBpdCA8IHBhcmFtcy5pdGVyYXRpb25zOyBpdCsrKQor
ICAgICAgICB7CisgICAgICAgICAgICBnbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdMX1RS
SUFOR0xFUywgNiwgR0xfVU5TSUdORURfSU5ULCBudWxscHRyLCBtTnVtUG9pbnRzKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBp
dCA9IDA7IGl0IDwgcGFyYW1zLml0ZXJhdGlvbnM7IGl0KyspCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGdsRHJhd0VsZW1lbnRzKEdMX1RSSUFOR0xFUywgNiAqIG1OdW1Qb2ludHMsIEdMX1VOU0lH
TkVEX0lOVCwgbnVsbHB0cik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKK30KKworSW5zdGFuY2luZ1BlcmZQYXJhbXMgSW5zdGFuY2luZ1BlcmZEM0QxMVBh
cmFtcygpCit7CisgICAgSW5zdGFuY2luZ1BlcmZQYXJhbXMgcGFyYW1zOworICAgIHBhcmFtcy5l
Z2xQYXJhbWV0ZXJzID0gRDNEMTEoKTsKKyAgICByZXR1cm4gcGFyYW1zOworfQorCitJbnN0YW5j
aW5nUGVyZlBhcmFtcyBJbnN0YW5jaW5nUGVyZkQzRDlQYXJhbXMoKQoreworICAgIEluc3RhbmNp
bmdQZXJmUGFyYW1zIHBhcmFtczsKKyAgICBwYXJhbXMuZWdsUGFyYW1ldGVycyA9IEQzRDkoKTsK
KyAgICByZXR1cm4gcGFyYW1zOworfQorCitJbnN0YW5jaW5nUGVyZlBhcmFtcyBJbnN0YW5jaW5n
UGVyZk9wZW5HTFBhcmFtcygpCit7CisgICAgSW5zdGFuY2luZ1BlcmZQYXJhbXMgcGFyYW1zOwor
ICAgIHBhcmFtcy5lZ2xQYXJhbWV0ZXJzID0gT1BFTkdMKCk7CisgICAgcmV0dXJuIHBhcmFtczsK
K30KKworVEVTVF9QKEluc3RhbmNpbmdQZXJmQmVuY2htYXJrLCBSdW4pCit7CisgICAgcnVuKCk7
Cit9CisKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1QoSW5zdGFuY2luZ1BlcmZCZW5jaG1hcmssCisg
ICAgICAgICAgICAgICAgICAgICAgIEluc3RhbmNpbmdQZXJmRDNEMTFQYXJhbXMoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgSW5zdGFuY2luZ1BlcmZEM0Q5UGFyYW1zKCksCisgICAgICAgICAg
ICAgICAgICAgICAgIEluc3RhbmNpbmdQZXJmT3BlbkdMUGFyYW1zKCkpOworCit9ICAvLyBhbm9u
eW1vdXMgbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
cGVyZl90ZXN0cy9JbnRlcmxlYXZlZEF0dHJpYnV0ZURhdGEuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0ludGVybGVhdmVkQXR0
cmlidXRlRGF0YS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL3BlcmZfdGVzdHMvSW50ZXJsZWF2ZWRBdHRyaWJ1dGVEYXRhLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDIzMSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNCBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBJbnRlcmxlYXZlZEF0
dHJpYnV0ZURhdGE6CisvLyAgIFBlcmZvcm1hbmNlIHRlc3QgZm9yIGRyYXdzIHVzaW5nIGludGVy
bGVhdmVkIGF0dHJpYnV0ZSBkYXRhIGluIHZlcnRleCBidWZmZXJzLgorLy8KKworI2luY2x1ZGUg
PHNzdHJlYW0+CisKKyNpbmNsdWRlICJBTkdMRVBlcmZUZXN0LmgiCisjaW5jbHVkZSAic2hhZGVy
X3V0aWxzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNlCit7CisKK3N0
cnVjdCBJbnRlcmxlYXZlZEF0dHJpYnV0ZURhdGFQYXJhbXMgZmluYWwgOiBwdWJsaWMgUmVuZGVy
VGVzdFBhcmFtcworeworICAgIEludGVybGVhdmVkQXR0cmlidXRlRGF0YVBhcmFtcygpCisgICAg
eworICAgICAgICAvLyBDb21tb24gZGVmYXVsdCB2YWx1ZXMKKyAgICAgICAgbWFqb3JWZXJzaW9u
ID0gMjsKKyAgICAgICAgbWlub3JWZXJzaW9uID0gMDsKKyAgICAgICAgd2luZG93V2lkdGggID0g
NTEyOworICAgICAgICB3aW5kb3dIZWlnaHQgPSA1MTI7CisgICAgICAgIG51bVNwcml0ZXMgICA9
IDMwMDA7CisgICAgfQorCisgICAgLy8gc3RhdGljIHBhcmFtZXRlcnMKKyAgICB1bnNpZ25lZCBp
bnQgbnVtU3ByaXRlczsKK307CisKK3N0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJl
YW0gJm9zLCBjb25zdCBJbnRlcmxlYXZlZEF0dHJpYnV0ZURhdGFQYXJhbXMgJnBhcmFtcykKK3sK
KyAgICBvcyA8PCBwYXJhbXMuc3VmZml4KCkuc3Vic3RyKDEpOworCisgICAgaWYgKHBhcmFtcy5l
Z2xQYXJhbWV0ZXJzLm1ham9yVmVyc2lvbiAhPSBFR0xfRE9OVF9DQVJFKQorICAgIHsKKyAgICAg
ICAgb3MgPDwgIl8iIDw8IHBhcmFtcy5lZ2xQYXJhbWV0ZXJzLm1ham9yVmVyc2lvbiA8PCAiXyIg
PDwgcGFyYW1zLmVnbFBhcmFtZXRlcnMubWlub3JWZXJzaW9uOworICAgIH0KKworICAgIHJldHVy
biBvczsKK30KKworY2xhc3MgSW50ZXJsZWF2ZWRBdHRyaWJ1dGVEYXRhQmVuY2htYXJrCisgICAg
OiBwdWJsaWMgQU5HTEVSZW5kZXJUZXN0LAorICAgICAgcHVibGljIDo6dGVzdGluZzo6V2l0aFBh
cmFtSW50ZXJmYWNlPEludGVybGVhdmVkQXR0cmlidXRlRGF0YVBhcmFtcz4KK3sKKyAgcHVibGlj
OgorICAgIEludGVybGVhdmVkQXR0cmlidXRlRGF0YUJlbmNobWFyaygpOworCisgICAgdm9pZCBp
bml0aWFsaXplQmVuY2htYXJrKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXN0cm95QmVuY2htYXJr
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3QmVuY2htYXJrKCkgb3ZlcnJpZGU7CisKKyAgcHJp
dmF0ZToKKyAgICBHTHVpbnQgbVBvaW50U3ByaXRlUHJvZ3JhbTsKKyAgICBHTHVpbnQgbVBvc2l0
aW9uQ29sb3JCdWZmZXJbMl07CisKKyAgICAvLyBUaGUgYnVmZmVycyBjb250YWluIHR3byBmbG9h
dHMgYW5kIDMgdW5zaWduZWQgYnl0ZXMgcGVyIHBvaW50IHNwcml0ZQorICAgIGNvbnN0IHNpemVf
dCBtQnl0ZXNQZXJTcHJpdGUgPSAyICogc2l6ZW9mKGZsb2F0KSArIDM7Cit9OworCitJbnRlcmxl
YXZlZEF0dHJpYnV0ZURhdGFCZW5jaG1hcms6OkludGVybGVhdmVkQXR0cmlidXRlRGF0YUJlbmNo
bWFyaygpCisgICAgOiBBTkdMRVJlbmRlclRlc3QoIkludGVybGVhdmVkQXR0cmlidXRlRGF0YSIs
IEdldFBhcmFtKCkpLCBtUG9pbnRTcHJpdGVQcm9ncmFtKDApCit7Cit9CisKK3ZvaWQgSW50ZXJs
ZWF2ZWRBdHRyaWJ1dGVEYXRhQmVuY2htYXJrOjppbml0aWFsaXplQmVuY2htYXJrKCkKK3sKKyAg
ICBjb25zdCBhdXRvICZwYXJhbXMgPSBHZXRQYXJhbSgpOworCisgICAgLy8gQ29tcGlsZSBwb2lu
dCBzcHJpdGUgc2hhZGVycworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzID0KKyAgICAgICAgImF0
dHJpYnV0ZSB2ZWM0IGFQb3NpdGlvbjsiCisgICAgICAgICJhdHRyaWJ1dGUgdmVjNCBhQ29sb3I7
IgorICAgICAgICAidmFyeWluZyB2ZWM0IHZDb2xvcjsiCisgICAgICAgICJ2b2lkIG1haW4oKSIK
KyAgICAgICAgInsiCisgICAgICAgICIgICAgZ2xfUG9pbnRTaXplID0gMjUuMDsiCisgICAgICAg
ICIgICAgZ2xfUG9zaXRpb24gID0gYVBvc2l0aW9uOyIKKyAgICAgICAgIiAgICB2Q29sb3IgPSBh
Q29sb3I7IgorICAgICAgICAifSI7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBmcyA9CisgICAg
ICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsiCisgICAgICAgICJ2YXJ5aW5nIHZlYzQgdkNv
bG9yOyIKKyAgICAgICAgInZvaWQgbWFpbigpIgorICAgICAgICAieyIKKyAgICAgICAgIiAgICBn
bF9GcmFnQ29sb3IgPSB2Q29sb3I7IgorICAgICAgICAifSI7CisKKyAgICBtUG9pbnRTcHJpdGVQ
cm9ncmFtID0gQ29tcGlsZVByb2dyYW0odnMsIGZzKTsKKyAgICBBU1NFUlRfTkUoMHUsIG1Qb2lu
dFNwcml0ZVByb2dyYW0pOworCisgICAgZ2xDbGVhckNvbG9yKDAuMGYsIDEuMGYsIDAuMGYsIDEu
MGYpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBBcnJheVNpemUobVBvc2l0aW9uQ29s
b3JCdWZmZXIpOyBpKyspCisgICAgeworICAgICAgICAvLyBTZXQgdXAgaW5pdGlhbCBkYXRhIGZv
ciBwb2ludHNwcml0ZSBwb3NpdGlvbnMgYW5kIGNvbG9ycworICAgICAgICBzdGQ6OnZlY3Rvcjx1
aW50OF90PiBwb3NpdGlvbkNvbG9yRGF0YShtQnl0ZXNQZXJTcHJpdGUgKiBwYXJhbXMubnVtU3By
aXRlcyk7CisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGogPSAwOyBqIDwgcGFyYW1zLm51bVNw
cml0ZXM7IGorKykKKyAgICAgICAgeworICAgICAgICAgICAgZmxvYXQgcG9pbnRTcHJpdGVYID0K
KyAgICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJhbmQoKSAlIGdldFdpbmRvdygp
LT5nZXRXaWR0aCgpKSAvIGdldFdpbmRvdygpLT5nZXRXaWR0aCgpKSAqCisgICAgICAgICAgICAg
ICAgICAgIDIuMGYgLSAxLjBmOworICAgICAgICAgICAgZmxvYXQgcG9pbnRTcHJpdGVZID0KKyAg
ICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJhbmQoKSAlIGdldFdpbmRvdygpLT5n
ZXRIZWlnaHQoKSkgLyBnZXRXaW5kb3coKS0+Z2V0SGVpZ2h0KCkpICoKKyAgICAgICAgICAgICAg
ICAgICAgMi4wZiAtIDEuMGY7CisgICAgICAgICAgICBHTHVieXRlIHBvaW50U3ByaXRlUmVkICAg
PSBzdGF0aWNfY2FzdDxHTHVieXRlPihyYW5kKCkgJSAyNTUpOworICAgICAgICAgICAgR0x1Ynl0
ZSBwb2ludFNwcml0ZUdyZWVuID0gc3RhdGljX2Nhc3Q8R0x1Ynl0ZT4ocmFuZCgpICUgMjU1KTsK
KyAgICAgICAgICAgIEdMdWJ5dGUgcG9pbnRTcHJpdGVCbHVlICA9IHN0YXRpY19jYXN0PEdMdWJ5
dGU+KHJhbmQoKSAlIDI1NSk7CisKKyAgICAgICAgICAgIC8vIEFkZCBwb3NpdGlvbiBkYXRhIGZv
ciB0aGUgcG9pbnRzcHJpdGUKKyAgICAgICAgICAgICpyZWludGVycHJldF9jYXN0PGZsb2F0ICo+
KAorICAgICAgICAgICAgICAgICYocG9zaXRpb25Db2xvckRhdGFbaiAqIG1CeXRlc1BlclNwcml0
ZSArIDAgKiBzaXplb2YoZmxvYXQpICsgMF0pKSA9CisgICAgICAgICAgICAgICAgcG9pbnRTcHJp
dGVYOyAgLy8gWAorICAgICAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQgKj4oCisgICAg
ICAgICAgICAgICAgJihwb3NpdGlvbkNvbG9yRGF0YVtqICogbUJ5dGVzUGVyU3ByaXRlICsgMSAq
IHNpemVvZihmbG9hdCkgKyAwXSkpID0KKyAgICAgICAgICAgICAgICBwb2ludFNwcml0ZVk7ICAv
LyBZCisKKyAgICAgICAgICAgIC8vIEFkZCBjb2xvciBkYXRhIGZvciB0aGUgcG9pbnRzcHJpdGUK
KyAgICAgICAgICAgIHBvc2l0aW9uQ29sb3JEYXRhW2ogKiBtQnl0ZXNQZXJTcHJpdGUgKyAyICog
c2l6ZW9mKGZsb2F0KSArIDBdID0gcG9pbnRTcHJpdGVSZWQ7ICAgIC8vIFIKKyAgICAgICAgICAg
IHBvc2l0aW9uQ29sb3JEYXRhW2ogKiBtQnl0ZXNQZXJTcHJpdGUgKyAyICogc2l6ZW9mKGZsb2F0
KSArIDFdID0gcG9pbnRTcHJpdGVHcmVlbjsgIC8vIEcKKyAgICAgICAgICAgIHBvc2l0aW9uQ29s
b3JEYXRhW2ogKiBtQnl0ZXNQZXJTcHJpdGUgKyAyICogc2l6ZW9mKGZsb2F0KSArIDJdID0gcG9p
bnRTcHJpdGVCbHVlOyAgIC8vIEIKKyAgICAgICAgfQorCisgICAgICAgIC8vIEdlbmVyYXRlIHRo
ZSBHTCBidWZmZXIgd2l0aCB0aGUgcG9zaXRpb24vY29sb3IgZGF0YQorICAgICAgICBnbEdlbkJ1
ZmZlcnMoMSwgJm1Qb3NpdGlvbkNvbG9yQnVmZmVyW2ldKTsKKyAgICAgICAgZ2xCaW5kQnVmZmVy
KEdMX0FSUkFZX0JVRkZFUiwgbVBvc2l0aW9uQ29sb3JCdWZmZXJbaV0pOworICAgICAgICBnbEJ1
ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBwYXJhbXMubnVtU3ByaXRlcyAqIG1CeXRlc1BlclNw
cml0ZSwgJihwb3NpdGlvbkNvbG9yRGF0YVswXSksCisgICAgICAgICAgICAgICAgICAgICBHTF9T
VEFUSUNfRFJBVyk7CisgICAgfQorCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9CisKK3Zv
aWQgSW50ZXJsZWF2ZWRBdHRyaWJ1dGVEYXRhQmVuY2htYXJrOjpkZXN0cm95QmVuY2htYXJrKCkK
K3sKKyAgICBnbERlbGV0ZVByb2dyYW0obVBvaW50U3ByaXRlUHJvZ3JhbSk7CisKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IEFycmF5U2l6ZShtUG9zaXRpb25Db2xvckJ1ZmZlcik7IGkrKykK
KyAgICB7CisgICAgICAgIGdsRGVsZXRlQnVmZmVycygxLCAmbVBvc2l0aW9uQ29sb3JCdWZmZXJb
aV0pOworICAgIH0KK30KKwordm9pZCBJbnRlcmxlYXZlZEF0dHJpYnV0ZURhdGFCZW5jaG1hcms6
OmRyYXdCZW5jaG1hcmsoKQoreworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisK
KyAgICBmb3IgKHNpemVfdCBrID0gMDsgayA8IDIwOyBrKyspCisgICAgeworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IEFycmF5U2l6ZShtUG9zaXRpb25Db2xvckJ1ZmZlcik7IGkrKykK
KyAgICAgICAgeworICAgICAgICAgICAgLy8gRmlyc3RseSBnZXQgdGhlIGF0dHJpYnV0ZSBsb2Nh
dGlvbnMgZm9yIHRoZSBwcm9ncmFtCisgICAgICAgICAgICBnbFVzZVByb2dyYW0obVBvaW50U3By
aXRlUHJvZ3JhbSk7CisgICAgICAgICAgICBHTGludCBwb3NpdGlvbkxvY2F0aW9uID0gZ2xHZXRB
dHRyaWJMb2NhdGlvbihtUG9pbnRTcHJpdGVQcm9ncmFtLCAiYVBvc2l0aW9uIik7CisgICAgICAg
ICAgICBBU1NFUlRfTkUocG9zaXRpb25Mb2NhdGlvbiwgLTEpOworICAgICAgICAgICAgR0xpbnQg
Y29sb3JMb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24obVBvaW50U3ByaXRlUHJvZ3JhbSwg
ImFDb2xvciIpOworICAgICAgICAgICAgQVNTRVJUX05FKGNvbG9yTG9jYXRpb24sIC0xKTsKKwor
ICAgICAgICAgICAgLy8gQmluZCB0aGUgcG9zaXRpb24gZGF0YSBmcm9tIG9uZSBidWZmZXIKKyAg
ICAgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1Qb3NpdGlvbkNvbG9yQnVm
ZmVyW2ldKTsKKyAgICAgICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25M
b2NhdGlvbik7CisgICAgICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25Mb2Nh
dGlvbiwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1CeXRlc1BlclNwcml0ZSksIDApOworCisgICAg
ICAgICAgICAvLyBCdXQgYmluZCB0aGUgY29sb3IgZGF0YSBmcm9tIHRoZSBvdGhlciBidWZmZXIu
CisgICAgICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIG1Qb3NpdGlvbkNvbG9yQnVmZmVyWyhpICsgMSkgJSBBcnJheVNpemUobVBv
c2l0aW9uQ29sb3JCdWZmZXIpXSk7CisgICAgICAgICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5KGNvbG9yTG9jYXRpb24pOworICAgICAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKGNv
bG9yTG9jYXRpb24sIDMsIEdMX1VOU0lHTkVEX0JZVEUsIEdMX1RSVUUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0xzaXplaT4obUJ5dGVzUGVyU3ByaXRl
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZv
aWQgKj4oMiAqIHNpemVvZihmbG9hdCkpKTsKKworICAgICAgICAgICAgLy8gVGhlbiBkcmF3IHRo
ZSBjb2xvcmVkIHBvaW50c3ByaXRlcworICAgICAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1BPSU5U
UywgMCwgR2V0UGFyYW0oKS5udW1TcHJpdGVzKTsKKyAgICAgICAgICAgIGdsRmx1c2goKTsKKwor
ICAgICAgICAgICAgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2NhdGlvbik7
CisgICAgICAgICAgICBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShjb2xvckxvY2F0aW9uKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworfQorCitURVNU
X1AoSW50ZXJsZWF2ZWRBdHRyaWJ1dGVEYXRhQmVuY2htYXJrLCBSdW4pCit7CisgICAgcnVuKCk7
Cit9CisKK0ludGVybGVhdmVkQXR0cmlidXRlRGF0YVBhcmFtcyBEM0QxMVBhcmFtcygpCit7Cisg
ICAgSW50ZXJsZWF2ZWRBdHRyaWJ1dGVEYXRhUGFyYW1zIHBhcmFtczsKKyAgICBwYXJhbXMuZWds
UGFyYW1ldGVycyA9IGVnbF9wbGF0Zm9ybTo6RDNEMTEoKTsKKyAgICByZXR1cm4gcGFyYW1zOwor
fQorCitJbnRlcmxlYXZlZEF0dHJpYnV0ZURhdGFQYXJhbXMgRDNEMTFfOV8zUGFyYW1zKCkKK3sK
KyAgICBJbnRlcmxlYXZlZEF0dHJpYnV0ZURhdGFQYXJhbXMgcGFyYW1zOworICAgIHBhcmFtcy5l
Z2xQYXJhbWV0ZXJzID0gZWdsX3BsYXRmb3JtOjpEM0QxMV9GTDlfMygpOworICAgIHJldHVybiBw
YXJhbXM7Cit9CisKK0ludGVybGVhdmVkQXR0cmlidXRlRGF0YVBhcmFtcyBEM0Q5UGFyYW1zKCkK
K3sKKyAgICBJbnRlcmxlYXZlZEF0dHJpYnV0ZURhdGFQYXJhbXMgcGFyYW1zOworICAgIHBhcmFt
cy5lZ2xQYXJhbWV0ZXJzID0gZWdsX3BsYXRmb3JtOjpEM0Q5KCk7CisgICAgcmV0dXJuIHBhcmFt
czsKK30KKworSW50ZXJsZWF2ZWRBdHRyaWJ1dGVEYXRhUGFyYW1zIE9wZW5HTFBhcmFtcygpCit7
CisgICAgSW50ZXJsZWF2ZWRBdHRyaWJ1dGVEYXRhUGFyYW1zIHBhcmFtczsKKyAgICBwYXJhbXMu
ZWdsUGFyYW1ldGVycyA9IGVnbF9wbGF0Zm9ybTo6T1BFTkdMKCk7CisgICAgcmV0dXJuIHBhcmFt
czsKK30KKworQU5HTEVfSU5TVEFOVElBVEVfVEVTVChJbnRlcmxlYXZlZEF0dHJpYnV0ZURhdGFC
ZW5jaG1hcmssCisgICAgICAgICAgICAgICAgICAgICAgIEQzRDExUGFyYW1zKCksCisgICAgICAg
ICAgICAgICAgICAgICAgIEQzRDExXzlfM1BhcmFtcygpLAorICAgICAgICAgICAgICAgICAgICAg
ICBEM0Q5UGFyYW1zKCksCisgICAgICAgICAgICAgICAgICAgICAgIE9wZW5HTFBhcmFtcygpKTsK
KworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvUG9pbnRTcHJpdGVzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9Qb2ludFNwcml0ZXMu
Y3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9w
ZXJmX3Rlc3RzL1BvaW50U3ByaXRlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMzAg
QEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisvLworLy8gUG9pbnRTcHJpdGVzQmVuY2htYXJrOgorLy8gICBQZXJmb3Jt
YW5jZSB0ZXN0IGZvciBBTkdMRSBwb2ludCBzcHJpdGVzLgorLy8KKy8vCisjaW5jbHVkZSAiQU5H
TEVQZXJmVGVzdC5oIgorCisjaW5jbHVkZSA8aW9zdHJlYW0+CisjaW5jbHVkZSA8c3N0cmVhbT4K
KworI2luY2x1ZGUgInNoYWRlcl91dGlscy5oIgorI2luY2x1ZGUgInJhbmRvbV91dGlscy5oIgor
Cit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKK25hbWVzcGFjZQoreworCitzdHJ1Y3QgUG9pbnRT
cHJpdGVzUGFyYW1zIGZpbmFsIDogcHVibGljIFJlbmRlclRlc3RQYXJhbXMKK3sKKyAgICBQb2lu
dFNwcml0ZXNQYXJhbXMoKQorICAgIHsKKyAgICAgICAgLy8gQ29tbW9uIGRlZmF1bHQgcGFyYW1z
CisgICAgICAgIG1ham9yVmVyc2lvbiA9IDI7CisgICAgICAgIG1pbm9yVmVyc2lvbiA9IDA7Cisg
ICAgICAgIHdpbmRvd1dpZHRoID0gMTI4MDsKKyAgICAgICAgd2luZG93SGVpZ2h0ID0gNzIwOwor
ICAgICAgICBpdGVyYXRpb25zICAgPSAxMDA7CisgICAgICAgIGNvdW50ID0gMTA7CisgICAgICAg
IHNpemUgPSAzLjBmOworICAgICAgICBudW1WYXJ5aW5ncyA9IDM7CisgICAgfQorCisgICAgc3Rk
OjpzdHJpbmcgc3VmZml4KCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICB1bnNpZ25lZCBpbnQgY291
bnQ7CisgICAgZmxvYXQgc2l6ZTsKKyAgICB1bnNpZ25lZCBpbnQgbnVtVmFyeWluZ3M7CisKKyAg
ICAvLyBzdGF0aWMgcGFyYW1ldGVycworICAgIHVuc2lnbmVkIGludCBpdGVyYXRpb25zOworfTsK
Kworc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmb3MsIGNvbnN0IFBvaW50
U3ByaXRlc1BhcmFtcyAmcGFyYW1zKQoreworICAgIG9zIDw8IHBhcmFtcy5zdWZmaXgoKS5zdWJz
dHIoMSk7CisgICAgcmV0dXJuIG9zOworfQorCitjbGFzcyBQb2ludFNwcml0ZXNCZW5jaG1hcmsg
OiBwdWJsaWMgQU5HTEVSZW5kZXJUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVibGljIDo6dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPFBvaW50U3ByaXRlc1BhcmFtcz4K
K3sKKyAgcHVibGljOgorICAgIFBvaW50U3ByaXRlc0JlbmNobWFyaygpOworCisgICAgdm9pZCBp
bml0aWFsaXplQmVuY2htYXJrKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXN0cm95QmVuY2htYXJr
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3QmVuY2htYXJrKCkgb3ZlcnJpZGU7CisKKyAgcHJp
dmF0ZToKKyAgICBHTHVpbnQgbVByb2dyYW07CisgICAgR0x1aW50IG1CdWZmZXI7CisgICAgUk5H
IG1STkc7Cit9OworCitzdGQ6OnN0cmluZyBQb2ludFNwcml0ZXNQYXJhbXM6OnN1ZmZpeCgpIGNv
bnN0Cit7CisgICAgc3RkOjpzdHJpbmdzdHJlYW0gc3Ryc3RyOworCisgICAgc3Ryc3RyIDw8IFJl
bmRlclRlc3RQYXJhbXM6OnN1ZmZpeCgpCisgICAgICAgICAgIDw8ICJfIiA8PCBjb3VudCA8PCAi
XyIgPDwgc2l6ZSA8PCAicHgiCisgICAgICAgICAgIDw8ICJfIiA8PCBudW1WYXJ5aW5ncyA8PCAi
dmFycyI7CisKKyAgICByZXR1cm4gc3Ryc3RyLnN0cigpOworfQorCitQb2ludFNwcml0ZXNCZW5j
aG1hcms6OlBvaW50U3ByaXRlc0JlbmNobWFyaygpCisgICAgOiBBTkdMRVJlbmRlclRlc3QoIlBv
aW50U3ByaXRlcyIsIEdldFBhcmFtKCkpLCBtUk5HKDEpCit7Cit9CisKK3ZvaWQgUG9pbnRTcHJp
dGVzQmVuY2htYXJrOjppbml0aWFsaXplQmVuY2htYXJrKCkKK3sKKyAgICBjb25zdCBhdXRvICZw
YXJhbXMgPSBHZXRQYXJhbSgpOworCisgICAgQVNTRVJUX0xUKDB1LCBwYXJhbXMuaXRlcmF0aW9u
cyk7CisKKyAgICBzdGQ6OnN0cmluZ3N0cmVhbSB2c3Ryc3RyOworCisgICAgLy8gVmVyaWZ5ICJu
dW1WYXJ5aW5ncyIgaXMgd2l0aGluIE1BWF9WQVJZSU5HUyBsaW1pdAorICAgIEdMaW50IG1heFZh
cnlpbmdzOworICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJTkdfVkVDVE9SUywgJm1heFZh
cnlpbmdzKTsKKworICAgIGlmIChwYXJhbXMubnVtVmFyeWluZ3MgPiBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBpbnQ+KG1heFZhcnlpbmdzKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiVmFyeWlu
ZyBjb3VudCAoIiA8PCBwYXJhbXMubnVtVmFyeWluZ3MgPDwgIikiCisgICAgICAgICAgICAgICA8
PCAiIGV4Y2VlZHMgbWF4aW11bSB2YXJ5aW5nczogIiA8PCBtYXhWYXJ5aW5ncyA8PCBzdGQ6OmVu
ZGw7CisgICAgfQorCisgICAgdnN0cnN0ciA8PCAiYXR0cmlidXRlIHZlYzIgdlBvc2l0aW9uO1xu
IgorICAgICAgICAgICAgICAgInVuaWZvcm0gZmxvYXQgdVBvaW50U2l6ZTtcbiI7CisKKyAgICBm
b3IgKHVuc2lnbmVkIGludCB2YXJDb3VudCA9IDA7IHZhckNvdW50IDwgcGFyYW1zLm51bVZhcnlp
bmdzOyB2YXJDb3VudCsrKQorICAgIHsKKyAgICAgICAgdnN0cnN0ciA8PCAidmFyeWluZyB2ZWM0
IHYiIDw8IHZhckNvdW50IDw8ICI7XG4iOworICAgIH0KKworICAgIHZzdHJzdHIgPDwgInZvaWQg
bWFpbigpXG4iCisgICAgICAgICAgICAgICAie1xuIjsKKworICAgIGZvciAodW5zaWduZWQgaW50
IHZhckNvdW50ID0gMDsgdmFyQ291bnQgPCBwYXJhbXMubnVtVmFyeWluZ3M7IHZhckNvdW50Kysp
CisgICAgeworICAgICAgICB2c3Ryc3RyIDw8ICIgICAgdiIgPDwgdmFyQ291bnQgPDwgIiA9IHZl
YzQoMS4wKTtcbiI7CisgICAgfQorCisgICAgdnN0cnN0ciA8PCAiICAgIGdsX1Bvc2l0aW9uID0g
dmVjNCh2UG9zaXRpb24sIDAsIDEuMCk7XG4iCisgICAgICAgICAgICAgICAiICAgIGdsX1BvaW50
U2l6ZSA9IHVQb2ludFNpemU7XG4iCisgICAgICAgICAgICAgICAifSI7CisKKyAgICBzdGQ6OnN0
cmluZ3N0cmVhbSBmc3Ryc3RyOworCisgICAgZnN0cnN0ciA8PCAicHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7XG4iOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgdmFyQ291bnQgPSAwOyB2YXJDb3Vu
dCA8IHBhcmFtcy5udW1WYXJ5aW5nczsgdmFyQ291bnQrKykKKyAgICB7CisgICAgICAgIGZzdHJz
dHIgPDwgInZhcnlpbmcgdmVjNCB2IiA8PCB2YXJDb3VudCA8PCAiO1xuIjsKKyAgICB9CisKKyAg
ICBmc3Ryc3RyIDw8ICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAgICAgICAgIntcbiIKKyAgICAg
ICAgICAgICAgICIgICAgdmVjNCBjb2xvck91dCA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTtc
biI7CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCB2YXJDb3VudCA9IDA7IHZhckNvdW50IDwgcGFy
YW1zLm51bVZhcnlpbmdzOyB2YXJDb3VudCsrKQorICAgIHsKKyAgICAgICAgZnN0cnN0ciA8PCAi
ICAgIGNvbG9yT3V0LnIgKz0gdiIgPDwgdmFyQ291bnQgPDwgIi5yO1xuIjsKKyAgICB9CisKKyAg
ICBmc3Ryc3RyIDw8ICIgICAgZ2xfRnJhZ0NvbG9yID0gY29sb3JPdXQ7XG4iCisgICAgICAgICAg
ICAgICAifVxuIjsKKworICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odnN0cnN0ci5zdHIo
KSwgZnN0cnN0ci5zdHIoKSk7CisgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7CisKKyAgICAv
LyBVc2UgdGhlIHByb2dyYW0gb2JqZWN0CisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKKwor
ICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKKworICAgIHN0ZDo6dmVj
dG9yPGZsb2F0PiB2ZXJ0ZXhQb3NpdGlvbnMocGFyYW1zLmNvdW50ICogMik7CisgICAgZm9yIChz
aXplX3QgcG9pbnRJbmRleCA9IDA7IHBvaW50SW5kZXggPCB2ZXJ0ZXhQb3NpdGlvbnMuc2l6ZSgp
OyArK3BvaW50SW5kZXgpCisgICAgeworICAgICAgICB2ZXJ0ZXhQb3NpdGlvbnNbcG9pbnRJbmRl
eF0gPSBtUk5HLnJhbmRvbU5lZ2F0aXZlT25lVG9PbmUoKTsKKyAgICB9CisKKyAgICBnbEdlbkJ1
ZmZlcnMoMSwgJm1CdWZmZXIpOworICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1C
dWZmZXIpOworICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIHZlcnRleFBvc2l0aW9u
cy5zaXplKCkgKiBzaXplb2YoZmxvYXQpLCAmdmVydGV4UG9zaXRpb25zWzBdLCBHTF9TVEFUSUNf
RFJBVyk7CisKKyAgICBHTGludCBwb3NpdGlvbkxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlv
bihtUHJvZ3JhbSwgInZQb3NpdGlvbiIpOworICAgIEFTU0VSVF9ORSgtMSwgcG9zaXRpb25Mb2Nh
dGlvbik7CisKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25Mb2NhdGlvbiwgMiwg
R0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCBudWxscHRyKTsKKyAgICBnbEVuYWJsZVZlcnRleEF0dHJp
YkFycmF5KHBvc2l0aW9uTG9jYXRpb24pOworCisgICAgLy8gU2V0IHRoZSB2aWV3cG9ydAorICAg
IGdsVmlld3BvcnQoMCwgMCwgZ2V0V2luZG93KCktPmdldFdpZHRoKCksIGdldFdpbmRvdygpLT5n
ZXRIZWlnaHQoKSk7CisKKyAgICBHTGludCBwb2ludFNpemVMb2NhdGlvbiA9IGdsR2V0VW5pZm9y
bUxvY2F0aW9uKG1Qcm9ncmFtLCAidVBvaW50U2l6ZSIpOworICAgIEFTU0VSVF9ORSgtMSwgcG9p
bnRTaXplTG9jYXRpb24pOworCisgICAgZ2xVbmlmb3JtMWYocG9pbnRTaXplTG9jYXRpb24sIHBh
cmFtcy5zaXplKTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworfQorCit2b2lkIFBvaW50
U3ByaXRlc0JlbmNobWFyazo6ZGVzdHJveUJlbmNobWFyaygpCit7CisgICAgZ2xEZWxldGVQcm9n
cmFtKG1Qcm9ncmFtKTsKKyAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1CdWZmZXIpOworfQorCit2
b2lkIFBvaW50U3ByaXRlc0JlbmNobWFyazo6ZHJhd0JlbmNobWFyaygpCit7CisgICAgZ2xDbGVh
cihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAgIGNvbnN0IGF1dG8gJnBhcmFtcyA9IEdldFBh
cmFtKCk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpdCA9IDA7IGl0IDwgcGFyYW1zLml0ZXJh
dGlvbnM7IGl0KyspCisgICAgeworICAgICAgICAvL1RPRE8oam1hZGlsbCk6IEluZGV4ZWQgcG9p
bnQgcmVuZGVyaW5nLiBBTkdMRSBpcyBiYWQgYXQgdGhpcy4KKyAgICAgICAgZ2xEcmF3QXJyYXlz
KEdMX1BPSU5UUywgMCwgcGFyYW1zLmNvdW50KTsKKyAgICB9CisKKyAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKK30KKworUG9pbnRTcHJpdGVzUGFyYW1zIEQzRDExUGFyYW1zKCkKK3sKKyAgICBQ
b2ludFNwcml0ZXNQYXJhbXMgcGFyYW1zOworICAgIHBhcmFtcy5lZ2xQYXJhbWV0ZXJzID0gZWds
X3BsYXRmb3JtOjpEM0QxMSgpOworICAgIHJldHVybiBwYXJhbXM7Cit9CisKK1BvaW50U3ByaXRl
c1BhcmFtcyBEM0Q5UGFyYW1zKCkKK3sKKyAgICBQb2ludFNwcml0ZXNQYXJhbXMgcGFyYW1zOwor
ICAgIHBhcmFtcy5lZ2xQYXJhbWV0ZXJzID0gZWdsX3BsYXRmb3JtOjpEM0Q5KCk7CisgICAgcmV0
dXJuIHBhcmFtczsKK30KKworUG9pbnRTcHJpdGVzUGFyYW1zIE9wZW5HTFBhcmFtcygpCit7Cisg
ICAgUG9pbnRTcHJpdGVzUGFyYW1zIHBhcmFtczsKKyAgICBwYXJhbXMuZWdsUGFyYW1ldGVycyA9
IGVnbF9wbGF0Zm9ybTo6T1BFTkdMKCk7CisgICAgcmV0dXJuIHBhcmFtczsKK30KKworfSAvLyBu
YW1lc3BhY2UKKworVEVTVF9QKFBvaW50U3ByaXRlc0JlbmNobWFyaywgUnVuKQoreworICAgIHJ1
bigpOworfQorCitBTkdMRV9JTlNUQU5USUFURV9URVNUKFBvaW50U3ByaXRlc0JlbmNobWFyaywK
KyAgICAgICAgICAgICAgICAgICAgICAgRDNEMTFQYXJhbXMoKSwgRDNEOVBhcmFtcygpLCBPcGVu
R0xQYXJhbXMoKSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVy
Zl90ZXN0cy9UZXhTdWJJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvVGV4U3ViSW1hZ2UuY3BwCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL1RleFN1Yklt
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5OCBAQAorLy8KKy8vIENvcHlyaWdo
dCAoYykgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisv
LyBUZXhTdWJJbWFnZUJlbmNobWFyazoKKy8vICAgUGVyZm9ybWFjZSB0ZXN0IGZvciBBTkdMRSB0
ZXh0dXJlIHVwZGF0ZXMuCisvLworCisjaW5jbHVkZSA8c3N0cmVhbT4KKworI2luY2x1ZGUgIkFO
R0xFUGVyZlRlc3QuaCIKKyNpbmNsdWRlICJzaGFkZXJfdXRpbHMuaCIKKwordXNpbmcgbmFtZXNw
YWNlIGFuZ2xlOworCituYW1lc3BhY2UKK3sKKworc3RydWN0IFRleFN1YkltYWdlUGFyYW1zIGZp
bmFsIDogcHVibGljIFJlbmRlclRlc3RQYXJhbXMKK3sKKyAgICBUZXhTdWJJbWFnZVBhcmFtcygp
CisgICAgeworICAgICAgICAvLyBDb21tb24gZGVmYXVsdCBwYXJhbWV0ZXJzCisgICAgICAgIG1h
am9yVmVyc2lvbiA9IDI7CisgICAgICAgIG1pbm9yVmVyc2lvbiA9IDA7CisgICAgICAgIHdpbmRv
d1dpZHRoID0gNTEyOworICAgICAgICB3aW5kb3dIZWlnaHQgPSA1MTI7CisKKyAgICAgICAgaW1h
Z2VXaWR0aCA9IDEwMjQ7CisgICAgICAgIGltYWdlSGVpZ2h0ID0gMTAyNDsKKyAgICAgICAgc3Vi
SW1hZ2VXaWR0aCA9IDY0OworICAgICAgICBzdWJJbWFnZUhlaWdodCA9IDY0OworICAgICAgICBp
dGVyYXRpb25zICAgICA9IDk7CisgICAgfQorCisgICAgc3RkOjpzdHJpbmcgc3VmZml4KCkgY29u
c3Qgb3ZlcnJpZGU7CisKKyAgICAvLyBTdGF0aWMgcGFyYW1ldGVycworICAgIGludCBpbWFnZVdp
ZHRoOworICAgIGludCBpbWFnZUhlaWdodDsKKyAgICBpbnQgc3ViSW1hZ2VXaWR0aDsKKyAgICBp
bnQgc3ViSW1hZ2VIZWlnaHQ7CisgICAgdW5zaWduZWQgaW50IGl0ZXJhdGlvbnM7Cit9OworCitz
dGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZvcywgY29uc3QgVGV4U3ViSW1h
Z2VQYXJhbXMgJnBhcmFtcykKK3sKKyAgICBvcyA8PCBwYXJhbXMuc3VmZml4KCkuc3Vic3RyKDEp
OworICAgIHJldHVybiBvczsKK30KKworY2xhc3MgVGV4U3ViSW1hZ2VCZW5jaG1hcmsgOiBwdWJs
aWMgQU5HTEVSZW5kZXJUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMg
Ojp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8VGV4U3ViSW1hZ2VQYXJhbXM+Cit7CisgIHB1
YmxpYzoKKyAgICBUZXhTdWJJbWFnZUJlbmNobWFyaygpOworCisgICAgdm9pZCBpbml0aWFsaXpl
QmVuY2htYXJrKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXN0cm95QmVuY2htYXJrKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkcmF3QmVuY2htYXJrKCkgb3ZlcnJpZGU7CisKKyAgcHJpdmF0ZToKKyAg
ICBHTHVpbnQgY3JlYXRlVGV4dHVyZSgpOworCisgICAgLy8gSGFuZGxlIHRvIGEgcHJvZ3JhbSBv
YmplY3QKKyAgICBHTHVpbnQgbVByb2dyYW07CisKKyAgICAvLyBBdHRyaWJ1dGUgbG9jYXRpb25z
CisgICAgR0xpbnQgbVBvc2l0aW9uTG9jOworICAgIEdMaW50IG1UZXhDb29yZExvYzsKKworICAg
IC8vIFNhbXBsZXIgbG9jYXRpb24KKyAgICBHTGludCBtU2FtcGxlckxvYzsKKworICAgIC8vIFRl
eHR1cmUgaGFuZGxlCisgICAgR0x1aW50IG1UZXh0dXJlOworCisgICAgLy8gQnVmZmVyIGhhbmRs
ZQorICAgIEdMdWludCBtVmVydGV4QnVmZmVyOworICAgIEdMdWludCBtSW5kZXhCdWZmZXI7CisK
KyAgICBHTHVieXRlICptUGl4ZWxzOworfTsKKworc3RkOjpzdHJpbmcgVGV4U3ViSW1hZ2VQYXJh
bXM6OnN1ZmZpeCgpIGNvbnN0Cit7CisgICAgLy8gVE9ETyhqbWFkaWxsKQorICAgIHJldHVybiBS
ZW5kZXJUZXN0UGFyYW1zOjpzdWZmaXgoKTsKK30KKworVGV4U3ViSW1hZ2VCZW5jaG1hcms6OlRl
eFN1YkltYWdlQmVuY2htYXJrKCkKKyAgICA6IEFOR0xFUmVuZGVyVGVzdCgiVGV4U3ViSW1hZ2Ui
LCBHZXRQYXJhbSgpKSwKKyAgICAgIG1Qcm9ncmFtKDApLAorICAgICAgbVBvc2l0aW9uTG9jKC0x
KSwKKyAgICAgIG1UZXhDb29yZExvYygtMSksCisgICAgICBtU2FtcGxlckxvYygtMSksCisgICAg
ICBtVGV4dHVyZSgwKSwKKyAgICAgIG1WZXJ0ZXhCdWZmZXIoMCksCisgICAgICBtSW5kZXhCdWZm
ZXIoMCksCisgICAgICBtUGl4ZWxzKG51bGxwdHIpCit7Cit9CisKK0dMdWludCBUZXhTdWJJbWFn
ZUJlbmNobWFyazo6Y3JlYXRlVGV4dHVyZSgpCit7CisgICAgY29uc3QgYXV0byAmcGFyYW1zID0g
R2V0UGFyYW0oKTsKKworICAgIGFzc2VydChwYXJhbXMuaXRlcmF0aW9ucyA+IDApOworCisgICAg
Ly8gVXNlIHRpZ2h0bHkgcGFja2VkIGRhdGEKKyAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19B
TElHTk1FTlQsIDEpOworCisgICAgLy8gR2VuZXJhdGUgYSB0ZXh0dXJlIG9iamVjdAorICAgIEdM
dWludCB0ZXh0dXJlOworICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleHR1cmUpOworCisgICAgLy8g
QmluZCB0aGUgdGV4dHVyZSBvYmplY3QKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQs
IHRleHR1cmUpOworCisgICAgZ2xUZXhTdG9yYWdlMkRFWFQoR0xfVEVYVFVSRV8yRCwgMSwgR0xf
UkdCQTgsIHBhcmFtcy5pbWFnZVdpZHRoLCBwYXJhbXMuaW1hZ2VIZWlnaHQpOworCisgICAgLy8g
U2V0IHRoZSBmaWx0ZXJpbmcgbW9kZQorICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgIGdsVGV4UGFyYW1ldGVy
aShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOworCisg
ICAgcmV0dXJuIHRleHR1cmU7Cit9CisKK3ZvaWQgVGV4U3ViSW1hZ2VCZW5jaG1hcms6OmluaXRp
YWxpemVCZW5jaG1hcmsoKQoreworICAgIGNvbnN0IGF1dG8gJnBhcmFtcyA9IEdldFBhcmFtKCk7
CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyB2cyA9IFNIQURFUl9TT1VSQ0UKKyAgICAoCisgICAg
ICAgIGF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247CisgICAgICAgIGF0dHJpYnV0ZSB2ZWMyIGFf
dGV4Q29vcmQ7CisgICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleENvb3JkOworICAgICAgICB2b2lk
IG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247
CisgICAgICAgICAgICB2X3RleENvb3JkID0gYV90ZXhDb29yZDsKKyAgICAgICAgfQorICAgICk7
CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBmcyA9IFNIQURFUl9TT1VSQ0UKKyAgICAoCisgICAg
ICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhD
b29yZDsKKyAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJlOworICAgICAgICB2b2lk
IG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQo
c190ZXh0dXJlLCB2X3RleENvb3JkKTsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBtUHJvZ3Jh
bSA9IENvbXBpbGVQcm9ncmFtKHZzLCBmcyk7CisgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7
CisKKyAgICAvLyBHZXQgdGhlIGF0dHJpYnV0ZSBsb2NhdGlvbnMKKyAgICBtUG9zaXRpb25Mb2Mg
PSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAiYV9wb3NpdGlvbiIpOworICAgIG1UZXhD
b29yZExvYyA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJhX3RleENvb3JkIik7CisK
KyAgICAvLyBHZXQgdGhlIHNhbXBsZXIgbG9jYXRpb24KKyAgICBtU2FtcGxlckxvYyA9IGdsR2V0
VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAic190ZXh0dXJlIik7CisKKyAgICAvLyBCdWlsZCB0
aGUgdmVydGV4IGJ1ZmZlcgorICAgIEdMZmxvYXQgdmVydGljZXNbXSA9CisgICAgeworICAgICAg
ICAtMC41ZiwgMC41ZiwgMC4wZiwgIC8vIFBvc2l0aW9uIDAKKyAgICAgICAgMC4wZiwgMC4wZiwg
ICAgICAgIC8vIFRleENvb3JkIDAKKyAgICAgICAgLTAuNWYsIC0wLjVmLCAwLjBmLCAgLy8gUG9z
aXRpb24gMQorICAgICAgICAwLjBmLCAxLjBmLCAgICAgICAgLy8gVGV4Q29vcmQgMQorICAgICAg
ICAwLjVmLCAtMC41ZiwgMC4wZiwgIC8vIFBvc2l0aW9uIDIKKyAgICAgICAgMS4wZiwgMS4wZiwg
ICAgICAgIC8vIFRleENvb3JkIDIKKyAgICAgICAgMC41ZiwgMC41ZiwgMC4wZiwgIC8vIFBvc2l0
aW9uIDMKKyAgICAgICAgMS4wZiwgMC4wZiAgICAgICAgIC8vIFRleENvb3JkIDMKKyAgICB9Owor
CisgICAgZ2xHZW5CdWZmZXJzKDEsICZtVmVydGV4QnVmZmVyKTsKKyAgICBnbEJpbmRCdWZmZXIo
R0xfQVJSQVlfQlVGRkVSLCBtVmVydGV4QnVmZmVyKTsKKyAgICBnbEJ1ZmZlckRhdGEoR0xfQVJS
QVlfQlVGRkVSLCBzaXplb2YodmVydGljZXMpLCB2ZXJ0aWNlcywgR0xfU1RBVElDX0RSQVcpOwor
CisgICAgR0x1c2hvcnQgaW5kaWNlc1tdID0geyAwLCAxLCAyLCAwLCAyLCAzIH07CisgICAgZ2xH
ZW5CdWZmZXJzKDEsICZtSW5kZXhCdWZmZXIpOworICAgIGdsQmluZEJ1ZmZlcihHTF9FTEVNRU5U
X0FSUkFZX0JVRkZFUiwgbUluZGV4QnVmZmVyKTsKKyAgICBnbEJ1ZmZlckRhdGEoR0xfRUxFTUVO
VF9BUlJBWV9CVUZGRVIsIHNpemVvZihpbmRpY2VzKSwgaW5kaWNlcywgR0xfU1RBVElDX0RSQVcp
OworCisgICAgLy8gTG9hZCB0aGUgdGV4dHVyZQorICAgIG1UZXh0dXJlID0gY3JlYXRlVGV4dHVy
ZSgpOworCisgICAgZ2xDbGVhckNvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYpOworCisgICAg
bVBpeGVscyA9IG5ldyBHTHVieXRlW3BhcmFtcy5zdWJJbWFnZVdpZHRoICogcGFyYW1zLnN1Yklt
YWdlSGVpZ2h0ICogNF07CisKKyAgICAvLyBGaWxsIHRoZSBwaXhlbHMgc3RydWN0dXJlIHdpdGgg
cmFuZG9tIGRhdGE6CisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBwYXJhbXMuc3ViSW1hZ2VIZWln
aHQ7ICsreSkKKyAgICB7CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgcGFyYW1zLnN1Yklt
YWdlV2lkdGg7ICsreCkKKyAgICAgICAgeworICAgICAgICAgICAgaW50IG9mZnNldCA9ICh4ICsg
KHkgKiBwYXJhbXMuc3ViSW1hZ2VXaWR0aCkpICogNDsKKyAgICAgICAgICAgIG1QaXhlbHNbb2Zm
c2V0ICsgMF0gPSByYW5kKCkgJSAyNTU7IC8vIFJlZAorICAgICAgICAgICAgbVBpeGVsc1tvZmZz
ZXQgKyAxXSA9IHJhbmQoKSAlIDI1NTsgLy8gR3JlZW4KKyAgICAgICAgICAgIG1QaXhlbHNbb2Zm
c2V0ICsgMl0gPSByYW5kKCkgJSAyNTU7IC8vIEJsdWUKKyAgICAgICAgICAgIG1QaXhlbHNbb2Zm
c2V0ICsgM10gPSAyNTU7IC8vIEFscGhhCisgICAgICAgIH0KKyAgICB9CisKKyAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKK30KKwordm9pZCBUZXhTdWJJbWFnZUJlbmNobWFyazo6ZGVzdHJveUJl
bmNobWFyaygpCit7CisgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICBnbERlbGV0
ZUJ1ZmZlcnMoMSwgJm1WZXJ0ZXhCdWZmZXIpOworICAgIGdsRGVsZXRlQnVmZmVycygxLCAmbUlu
ZGV4QnVmZmVyKTsKKyAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtVGV4dHVyZSk7CisgICAgZGVs
ZXRlW10gbVBpeGVsczsKK30KKwordm9pZCBUZXhTdWJJbWFnZUJlbmNobWFyazo6ZHJhd0JlbmNo
bWFyaygpCit7CisgICAgLy8gU2V0IHRoZSB2aWV3cG9ydAorICAgIGdsVmlld3BvcnQoMCwgMCwg
Z2V0V2luZG93KCktPmdldFdpZHRoKCksIGdldFdpbmRvdygpLT5nZXRIZWlnaHQoKSk7CisKKyAg
ICAvLyBDbGVhciB0aGUgY29sb3IgYnVmZmVyCisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJf
QklUKTsKKworICAgIC8vIFVzZSB0aGUgcHJvZ3JhbSBvYmplY3QKKyAgICBnbFVzZVByb2dyYW0o
bVByb2dyYW0pOworCisgICAgLy8gQmluZCB0aGUgYnVmZmVycworICAgIGdsQmluZEJ1ZmZlcihH
TF9BUlJBWV9CVUZGRVIsIG1WZXJ0ZXhCdWZmZXIpOworICAgIGdsQmluZEJ1ZmZlcihHTF9FTEVN
RU5UX0FSUkFZX0JVRkZFUiwgbUluZGV4QnVmZmVyKTsKKworICAgIC8vIExvYWQgdGhlIHZlcnRl
eCBwb3NpdGlvbgorICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihtUG9zaXRpb25Mb2MsIDMsIEdM
X0ZMT0FULCBHTF9GQUxTRSwgNSAqIHNpemVvZihHTGZsb2F0KSwgMCk7CisgICAgLy8gTG9hZCB0
aGUgdGV4dHVyZSBjb29yZGluYXRlCisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKG1UZXhDb29y
ZExvYywgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCA1ICogc2l6ZW9mKEdMZmxvYXQpLCAoR0x2b2lk
KikoMyAqIHNpemVvZihHTGZsb2F0KSkpOworCisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJh
eShtUG9zaXRpb25Mb2MpOworICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkobVRleENvb3Jk
TG9jKTsKKworICAgIC8vIEJpbmQgdGhlIHRleHR1cmUKKyAgICBnbEFjdGl2ZVRleHR1cmUoR0xf
VEVYVFVSRTApOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUpOwor
CisgICAgLy8gU2V0IHRoZSB0ZXh0dXJlIHNhbXBsZXIgdG8gdGV4dHVyZSB1bml0IHRvIDAKKyAg
ICBnbFVuaWZvcm0xaShtU2FtcGxlckxvYywgMCk7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1Io
KTsKKworICAgIGNvbnN0IGF1dG8gJnBhcmFtcyA9IEdldFBhcmFtKCk7CisKKyAgICBmb3IgKHVu
c2lnbmVkIGludCBpdGVyYXRpb24gPSAwOyBpdGVyYXRpb24gPCBwYXJhbXMuaXRlcmF0aW9uczsg
KytpdGVyYXRpb24pCisgICAgeworICAgICAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8y
RCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhbmQoKSAlIChwYXJhbXMuaW1hZ2VXaWR0
aCAtIHBhcmFtcy5zdWJJbWFnZVdpZHRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhbmQo
KSAlIChwYXJhbXMuaW1hZ2VIZWlnaHQgLSBwYXJhbXMuc3ViSW1hZ2VIZWlnaHQpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgcGFyYW1zLnN1YkltYWdlV2lkdGgsIHBhcmFtcy5zdWJJbWFnZUhl
aWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUs
IG1QaXhlbHMpOworCisgICAgICAgIGdsRHJhd0VsZW1lbnRzKEdMX1RSSUFOR0xFUywgNiwgR0xf
VU5TSUdORURfU0hPUlQsIDApOworICAgIH0KKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwor
fQorCitUZXhTdWJJbWFnZVBhcmFtcyBEM0QxMVBhcmFtcygpCit7CisgICAgVGV4U3ViSW1hZ2VQ
YXJhbXMgcGFyYW1zOworICAgIHBhcmFtcy5lZ2xQYXJhbWV0ZXJzID0gZWdsX3BsYXRmb3JtOjpE
M0QxMSgpOworICAgIHJldHVybiBwYXJhbXM7Cit9CisKK1RleFN1YkltYWdlUGFyYW1zIEQzRDlQ
YXJhbXMoKQoreworICAgIFRleFN1YkltYWdlUGFyYW1zIHBhcmFtczsKKyAgICBwYXJhbXMuZWds
UGFyYW1ldGVycyA9IGVnbF9wbGF0Zm9ybTo6RDNEOSgpOworICAgIHJldHVybiBwYXJhbXM7Cit9
CisKK1RleFN1YkltYWdlUGFyYW1zIE9wZW5HTFBhcmFtcygpCit7CisgICAgVGV4U3ViSW1hZ2VQ
YXJhbXMgcGFyYW1zOworICAgIHBhcmFtcy5lZ2xQYXJhbWV0ZXJzID0gZWdsX3BsYXRmb3JtOjpP
UEVOR0woKTsKKyAgICByZXR1cm4gcGFyYW1zOworfQorCit9IC8vIG5hbWVzcGFjZQorCitURVNU
X1AoVGV4U3ViSW1hZ2VCZW5jaG1hcmssIFJ1bikKK3sKKyAgICBydW4oKTsKK30KKworQU5HTEVf
SU5TVEFOVElBVEVfVEVTVChUZXhTdWJJbWFnZUJlbmNobWFyaywKKyAgICAgICAgICAgICAgICAg
ICAgICAgRDNEMTFQYXJhbXMoKSwgRDNEOVBhcmFtcygpLCBPcGVuR0xQYXJhbXMoKSk7CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9UZXh0dXJlU2Ft
cGxpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9wZXJmX3Rlc3RzL1RleHR1cmVTYW1wbGluZy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvVGV4dHVyZVNhbXBsaW5nLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4OCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykg
MjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBUZXh0
dXJlU2FtcGxpbmdCZW5jaG1hcms6CisvLyAgIFBlcmZvcm1hbmNlIHRlc3QgZm9yIHRleHR1cmUg
c2FtcGxpbmcuIFRoZSB0ZXN0IGdlbmVyYXRlcyBhIHRleHR1cmUgY29udGFpbmluZyByYW5kb20g
ZGF0YQorLy8gICBhbmQgdGhlbiBibHVycyBpdCBpbiBhIGZyYWdtZW50IHNoYWRlciB1c2luZyBu
ZWFyZXN0IG5laWdoYm9yIHNhbXBsaW5nLiBUaGUgdGVzdCBpcworLy8gICBzcGVjaWZpY2FsbHkg
ZGVzaWduZWQgdG8gdGVzdCBvdmVyaGVhZCBvZiBHTFNMJ3MgYnVpbHRpbiB0ZXh0dXJlKigpIGZ1
bmN0aW9ucyB0aGF0IG1heSByZXN1bHQKKy8vICAgZnJvbSBob3cgQU5HTEUgdHJhbnNsYXRlcyB0
aGVtIG9uIGVhY2ggYmFja2VuZC4KKy8vCisKKyNpbmNsdWRlICJBTkdMRVBlcmZUZXN0LmgiCisK
KyNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlIDxyYW5kb20+CisjaW5jbHVkZSA8c3N0cmVh
bT4KKworI2luY2x1ZGUgInNoYWRlcl91dGlscy5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7
CisKK25hbWVzcGFjZQoreworCitzdHJ1Y3QgVGV4dHVyZVNhbXBsaW5nUGFyYW1zIGZpbmFsIDog
cHVibGljIFJlbmRlclRlc3RQYXJhbXMKK3sKKyAgICBUZXh0dXJlU2FtcGxpbmdQYXJhbXMoKQor
ICAgIHsKKyAgICAgICAgLy8gQ29tbW9uIGRlZmF1bHQgcGFyYW1zCisgICAgICAgIG1ham9yVmVy
c2lvbiA9IDI7CisgICAgICAgIG1pbm9yVmVyc2lvbiA9IDA7CisgICAgICAgIHdpbmRvd1dpZHRo
ICA9IDcyMDsKKyAgICAgICAgd2luZG93SGVpZ2h0ID0gNzIwOworICAgICAgICBpdGVyYXRpb25z
ICAgPSA0OworCisgICAgICAgIG51bVNhbXBsZXJzID0gMjsKKyAgICAgICAgdGV4dHVyZVNpemUg
PSAzMjsKKyAgICAgICAga2VybmVsU2l6ZSAgPSAzOworICAgIH0KKworICAgIHN0ZDo6c3RyaW5n
IHN1ZmZpeCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHVuc2lnbmVkIGludCBudW1TYW1wbGVyczsK
KyAgICB1bnNpZ25lZCBpbnQgdGV4dHVyZVNpemU7CisgICAgdW5zaWduZWQgaW50IGtlcm5lbFNp
emU7CisKKyAgICAvLyBzdGF0aWMgcGFyYW1ldGVycworICAgIHVuc2lnbmVkIGludCBpdGVyYXRp
b25zOworfTsKKworc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmb3MsIGNv
bnN0IFRleHR1cmVTYW1wbGluZ1BhcmFtcyAmcGFyYW1zKQoreworICAgIG9zIDw8IHBhcmFtcy5z
dWZmaXgoKS5zdWJzdHIoMSk7CisgICAgcmV0dXJuIG9zOworfQorCitzdGQ6OnN0cmluZyBUZXh0
dXJlU2FtcGxpbmdQYXJhbXM6OnN1ZmZpeCgpIGNvbnN0Cit7CisgICAgc3RkOjpzdHJpbmdzdHJl
YW0gc3Ryc3RyOworCisgICAgc3Ryc3RyIDw8IFJlbmRlclRlc3RQYXJhbXM6OnN1ZmZpeCgpIDw8
ICJfIiA8PCBudW1TYW1wbGVycyA8PCAic2FtcGxlcnMiOworCisgICAgcmV0dXJuIHN0cnN0ci5z
dHIoKTsKK30KKworY2xhc3MgVGV4dHVyZVNhbXBsaW5nQmVuY2htYXJrIDogcHVibGljIEFOR0xF
UmVuZGVyVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyA6OnRl
c3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxUZXh0dXJlU2FtcGxpbmdQYXJhbXM+Cit7CisgIHB1
YmxpYzoKKyAgICBUZXh0dXJlU2FtcGxpbmdCZW5jaG1hcmsoKTsKKworICAgIHZvaWQgaW5pdGlh
bGl6ZUJlbmNobWFyaygpIG92ZXJyaWRlOworICAgIHZvaWQgZGVzdHJveUJlbmNobWFyaygpIG92
ZXJyaWRlOworICAgIHZvaWQgZHJhd0JlbmNobWFyaygpIG92ZXJyaWRlOworCisgIHByaXZhdGU6
CisgICAgdm9pZCBpbml0U2hhZGVycygpOworICAgIHZvaWQgaW5pdFZlcnRleEJ1ZmZlcigpOwor
ICAgIHZvaWQgaW5pdFRleHR1cmVzKCk7CisKKyAgICBHTHVpbnQgbVByb2dyYW07CisgICAgR0x1
aW50IG1CdWZmZXI7CisgICAgc3RkOjp2ZWN0b3I8R0x1aW50PiBtVGV4dHVyZXM7Cit9OworCitU
ZXh0dXJlU2FtcGxpbmdCZW5jaG1hcms6OlRleHR1cmVTYW1wbGluZ0JlbmNobWFyaygpCisgICAg
OiBBTkdMRVJlbmRlclRlc3QoIlRleHR1cmVTYW1wbGluZyIsIEdldFBhcmFtKCkpLCBtUHJvZ3Jh
bSgwdSksIG1CdWZmZXIoMHUpCit7Cit9CisKK3ZvaWQgVGV4dHVyZVNhbXBsaW5nQmVuY2htYXJr
Ojppbml0aWFsaXplQmVuY2htYXJrKCkKK3sKKyAgICBjb25zdCBhdXRvICZwYXJhbXMgPSBHZXRQ
YXJhbSgpOworCisgICAgQVNTRVJUX0xUKDB1LCBwYXJhbXMuaXRlcmF0aW9ucyk7CisKKyAgICAv
LyBWZXJpZnkgIm51bVNhbXBsZXJzIiBpcyB3aXRoaW4gTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMg
bGltaXQKKyAgICBHTGludCBtYXhUZXh0dXJlSW1hZ2VVbml0czsKKyAgICBnbEdldEludGVnZXJ2
KEdMX01BWF9URVhUVVJFX0lNQUdFX1VOSVRTLCAmbWF4VGV4dHVyZUltYWdlVW5pdHMpOworCisg
ICAgaWYgKHBhcmFtcy5udW1TYW1wbGVycyA+IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4obWF4
VGV4dHVyZUltYWdlVW5pdHMpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJTYW1wbGVyIGNv
dW50ICgiIDw8IHBhcmFtcy5udW1TYW1wbGVycyA8PCAiKSIKKyAgICAgICAgICAgICAgIDw8ICIg
ZXhjZWVkcyBtYXhpbXVtIHRleHR1cmUgY291bnQ6ICIgPDwgbWF4VGV4dHVyZUltYWdlVW5pdHMg
PDwgc3RkOjplbmRsOworICAgIH0KKyAgICBpbml0U2hhZGVycygpOworICAgIGluaXRWZXJ0ZXhC
dWZmZXIoKTsKKyAgICBpbml0VGV4dHVyZXMoKTsKKyAgICBnbENsZWFyQ29sb3IoMC4wZiwgMC4w
ZiwgMC4wZiwgMC4wZik7CisgICAgZ2xWaWV3cG9ydCgwLCAwLCBnZXRXaW5kb3coKS0+Z2V0V2lk
dGgoKSwgZ2V0V2luZG93KCktPmdldEhlaWdodCgpKTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOworfQorCit2b2lkIFRleHR1cmVTYW1wbGluZ0JlbmNobWFyazo6aW5pdFNoYWRlcnMoKQor
eworICAgIGNvbnN0IGF1dG8gJnBhcmFtcyA9IEdldFBhcmFtKCk7CisKKyAgICBzdGQ6OnN0cmlu
Z3N0cmVhbSB2c3Ryc3RyOworICAgIHZzdHJzdHIgPDwgImF0dHJpYnV0ZSB2ZWMyIGFQb3NpdGlv
bjtcbiIKKyAgICAgICAgICAgICAgICJ2YXJ5aW5nIHZlYzIgdlRleHR1cmVDb29yZGluYXRlcztc
biIKKyAgICAgICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAgICAgICAgIntcbiIK
KyAgICAgICAgICAgICAgICIgICAgdlRleHR1cmVDb29yZGluYXRlcyA9IChhUG9zaXRpb24gKyB2
ZWMyKDEuMCkpICogMC41O1xuIgorICAgICAgICAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZl
YzQoYVBvc2l0aW9uLCAwLCAxLjApO1xuIgorICAgICAgICAgICAgICAgIn0iOworCisgICAgc3Rk
OjpzdHJpbmdzdHJlYW0gZnN0cnN0cjsKKyAgICBmc3Ryc3RyIDw8ICJwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDtcbiIKKyAgICAgICAgICAgICAgICJ2YXJ5aW5nIHZlYzIgdlRleHR1cmVDb29yZGlu
YXRlcztcbiI7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgY291bnQgPSAwOyBjb3VudCA8IHBhcmFt
cy5udW1TYW1wbGVyczsgY291bnQrKykKKyAgICB7CisgICAgICAgIGZzdHJzdHIgPDwgInVuaWZv
cm0gc2FtcGxlcjJEIHVTYW1wbGVyIiA8PCBjb3VudCA8PCAiO1xuIjsKKyAgICB9CisgICAgZnN0
cnN0ciA8PCAidm9pZCBtYWluKClcbiIKKyAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAg
ICAgICAiICAgIGNvbnN0IGZsb2F0IGludmVyc2VUZXh0dXJlU2l6ZSA9IDEuMCAvICIKKyAgICAg
ICAgICAgIDw8IHBhcmFtcy50ZXh0dXJlU2l6ZSA8PCAiLjA7XG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIiAgICB2ZWM0IGNvbG9yT3V0ID0gdmVjNCgwLjAsIDAuMCwg
MC4wLCAxLjApO1xuIjsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBjb3VudCA9IDA7IGNvdW50IDwg
cGFyYW1zLm51bVNhbXBsZXJzOyBjb3VudCsrKQorICAgIHsKKyAgICAgICAgZnN0cnN0ciA8PCAi
ICAgIGZvciAoaW50IHggPSAwOyB4IDwgIiA8PCBwYXJhbXMua2VybmVsU2l6ZSA8PCAiOyArK3gp
XG4iCisgICAgICAgICAgICAgICAgICAgIiAgICB7XG4iCisgICAgICAgICAgICAgICAgICAgIiAg
ICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCAiIDw8IHBhcmFtcy5rZXJuZWxTaXplIDw8ICI7ICsr
eSlcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgICB7XG4iCisgICAgICAgICAgICAgICAg
ICAgIiAgICAgICAgICAgIGNvbG9yT3V0ICs9IHRleHR1cmUyRCh1U2FtcGxlciIgPDwgY291bnQK
KyAgICAgICAgICAgICAgICAgICA8PCAiLCB2VGV4dHVyZUNvb3JkaW5hdGVzICsgdmVjMih4LCB5
KSAqIGludmVyc2VUZXh0dXJlU2l6ZSkgKiAwLjE7XG4iCisgICAgICAgICAgICAgICAgICAgIiAg
ICAgICAgfVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgfVxuIjsKKyAgICB9CisgICAgZnN0
cnN0ciA8PCAiICAgIGdsX0ZyYWdDb2xvciA9IGNvbG9yT3V0O1xuIgorICAgICAgICAgICAgICAg
In1cbiI7CisKKyAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZzdHJzdHIuc3RyKCksIGZz
dHJzdHIuc3RyKCkpOworICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOworCisgICAgLy8gVXNl
IHRoZSBwcm9ncmFtIG9iamVjdAorICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7Cit9CisKK3Zv
aWQgVGV4dHVyZVNhbXBsaW5nQmVuY2htYXJrOjppbml0VmVydGV4QnVmZmVyKCkKK3sKKyAgICBz
dGQ6OnZlY3RvcjxmbG9hdD4gdmVydGV4UG9zaXRpb25zKDEyKTsKKyAgICB7CisgICAgICAgIC8v
IEJvdHRvbSBsZWZ0IHRyaWFuZ2xlCisgICAgICAgIHZlcnRleFBvc2l0aW9uc1swXSA9IC0xLjBm
OworICAgICAgICB2ZXJ0ZXhQb3NpdGlvbnNbMV0gPSAtMS4wZjsKKyAgICAgICAgdmVydGV4UG9z
aXRpb25zWzJdID0gMS4wZjsKKyAgICAgICAgdmVydGV4UG9zaXRpb25zWzNdID0gLTEuMGY7Cisg
ICAgICAgIHZlcnRleFBvc2l0aW9uc1s0XSA9IC0xLjBmOworICAgICAgICB2ZXJ0ZXhQb3NpdGlv
bnNbNV0gPSAxLjBmOworCisgICAgICAgIC8vIFRvcCByaWdodCB0cmlhbmdsZQorICAgICAgICB2
ZXJ0ZXhQb3NpdGlvbnNbNl0gID0gLTEuMGY7CisgICAgICAgIHZlcnRleFBvc2l0aW9uc1s3XSAg
PSAxLjBmOworICAgICAgICB2ZXJ0ZXhQb3NpdGlvbnNbOF0gID0gMS4wZjsKKyAgICAgICAgdmVy
dGV4UG9zaXRpb25zWzldICA9IC0xLjBmOworICAgICAgICB2ZXJ0ZXhQb3NpdGlvbnNbMTBdID0g
MS4wZjsKKyAgICAgICAgdmVydGV4UG9zaXRpb25zWzExXSA9IDEuMGY7CisgICAgfQorCisgICAg
Z2xHZW5CdWZmZXJzKDEsICZtQnVmZmVyKTsKKyAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVG
RkVSLCBtQnVmZmVyKTsKKyAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhQ
b3NpdGlvbnMuc2l6ZSgpICogc2l6ZW9mKGZsb2F0KSwgJnZlcnRleFBvc2l0aW9uc1swXSwKKyAg
ICAgICAgICAgICAgICAgR0xfU1RBVElDX0RSQVcpOworCisgICAgR0xpbnQgcG9zaXRpb25Mb2Nh
dGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJhUG9zaXRpb24iKTsKKyAgICBB
U1NFUlRfTkUoLTEsIHBvc2l0aW9uTG9jYXRpb24pOworCisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2lu
dGVyKHBvc2l0aW9uTG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgbnVsbHB0cik7
CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxvY2F0aW9uKTsKK30KKwor
dm9pZCBUZXh0dXJlU2FtcGxpbmdCZW5jaG1hcms6OmluaXRUZXh0dXJlcygpCit7CisgICAgY29u
c3QgYXV0byAmcGFyYW1zID0gR2V0UGFyYW0oKTsKKworICAgIHVuc2lnbmVkIGludCBkYXRhU2l6
ZSA9IHBhcmFtcy50ZXh0dXJlU2l6ZSAqIHBhcmFtcy50ZXh0dXJlU2l6ZTsKKyAgICBzdGQ6OnZl
Y3Rvcjx1bnNpZ25lZCBpbnQ+IHJhbmRvbVRleHR1cmVEYXRhOworICAgIHJhbmRvbVRleHR1cmVE
YXRhLnJlc2l6ZShkYXRhU2l6ZSk7CisKKyAgICB1bnNpZ25lZCBpbnQgcHNldWRvUmFuZG9tID0g
MXU7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBkYXRhU2l6ZTsgKytpKQorICAg
IHsKKyAgICAgICAgcHNldWRvUmFuZG9tICAgICAgICAgPSBwc2V1ZG9SYW5kb20gKiAxNjY0NTI1
dSArIDEwMTM5MDQyMjN1OworICAgICAgICByYW5kb21UZXh0dXJlRGF0YVtpXSA9IHBzZXVkb1Jh
bmRvbTsKKyAgICB9CisKKyAgICBtVGV4dHVyZXMucmVzaXplKHBhcmFtcy5udW1TYW1wbGVycyk7
CisgICAgZ2xHZW5UZXh0dXJlcyhwYXJhbXMubnVtU2FtcGxlcnMsIG1UZXh0dXJlcy5kYXRhKCkp
OworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGFyYW1zLm51bVNhbXBsZXJzOyAr
K2kpCisgICAgeworICAgICAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTAgKyBpKTsKKyAg
ICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbaV0pOworICAgICAg
ICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NM
QU1QX1RPX0VER0UpOworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAg
ICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRF
UiwgR0xfTkVBUkVTVCk7CisgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBH
TF9SR0JBLCBwYXJhbXMudGV4dHVyZVNpemUsIHBhcmFtcy50ZXh0dXJlU2l6ZSwgMCwgR0xfUkdC
QSwKKyAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIHJhbmRvbVRleHR1cmVE
YXRhLmRhdGEoKSk7CisgICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpbnQgY291bnQgPSAwOyBj
b3VudCA8IHBhcmFtcy5udW1TYW1wbGVyczsgY291bnQrKykKKyAgICB7CisgICAgICAgIHN0ZDo6
c3RyaW5nc3RyZWFtIHNhbXBsZXJzdHJzdHI7CisgICAgICAgIHNhbXBsZXJzdHJzdHIgPDwgInVT
YW1wbGVyIiA8PCBjb3VudDsKKyAgICAgICAgR0xpbnQgc2FtcGxlckxvY2F0aW9uID0gZ2xHZXRV
bmlmb3JtTG9jYXRpb24obVByb2dyYW0sIHNhbXBsZXJzdHJzdHIuc3RyKCkuY19zdHIoKSk7Cisg
ICAgICAgIEFTU0VSVF9ORSgtMSwgc2FtcGxlckxvY2F0aW9uKTsKKworICAgICAgICBnbFVuaWZv
cm0xaShzYW1wbGVyTG9jYXRpb24sIGNvdW50KTsKKyAgICB9Cit9CisKK3ZvaWQgVGV4dHVyZVNh
bXBsaW5nQmVuY2htYXJrOjpkZXN0cm95QmVuY2htYXJrKCkKK3sKKyAgICBjb25zdCBhdXRvICZw
YXJhbXMgPSBHZXRQYXJhbSgpOworCisgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKKyAg
ICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1CdWZmZXIpOworICAgIGlmICghbVRleHR1cmVzLmVtcHR5
KCkpCisgICAgeworICAgICAgICBnbERlbGV0ZVRleHR1cmVzKHBhcmFtcy5udW1TYW1wbGVycywg
bVRleHR1cmVzLmRhdGEoKSk7CisgICAgfQorfQorCit2b2lkIFRleHR1cmVTYW1wbGluZ0JlbmNo
bWFyazo6ZHJhd0JlbmNobWFyaygpCit7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklU
KTsKKworICAgIGNvbnN0IGF1dG8gJnBhcmFtcyA9IEdldFBhcmFtKCk7CisKKyAgICBmb3IgKHVu
c2lnbmVkIGludCBpdCA9IDA7IGl0IDwgcGFyYW1zLml0ZXJhdGlvbnM7ICsraXQpCisgICAgewor
ICAgICAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVTLCAwLCA2KTsKKyAgICB9CisKKyAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKK30KKworVGV4dHVyZVNhbXBsaW5nUGFyYW1zIEQzRDExUGFy
YW1zKCkKK3sKKyAgICBUZXh0dXJlU2FtcGxpbmdQYXJhbXMgcGFyYW1zOworICAgIHBhcmFtcy5l
Z2xQYXJhbWV0ZXJzID0gZWdsX3BsYXRmb3JtOjpEM0QxMSgpOworICAgIHJldHVybiBwYXJhbXM7
Cit9CisKK1RleHR1cmVTYW1wbGluZ1BhcmFtcyBEM0Q5UGFyYW1zKCkKK3sKKyAgICBUZXh0dXJl
U2FtcGxpbmdQYXJhbXMgcGFyYW1zOworICAgIHBhcmFtcy5lZ2xQYXJhbWV0ZXJzID0gZWdsX3Bs
YXRmb3JtOjpEM0Q5KCk7CisgICAgcmV0dXJuIHBhcmFtczsKK30KKworVGV4dHVyZVNhbXBsaW5n
UGFyYW1zIE9wZW5HTFBhcmFtcygpCit7CisgICAgVGV4dHVyZVNhbXBsaW5nUGFyYW1zIHBhcmFt
czsKKyAgICBwYXJhbXMuZWdsUGFyYW1ldGVycyA9IGVnbF9wbGF0Zm9ybTo6T1BFTkdMKCk7Cisg
ICAgcmV0dXJuIHBhcmFtczsKK30KKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCitURVNU
X1AoVGV4dHVyZVNhbXBsaW5nQmVuY2htYXJrLCBSdW4pCit7CisgICAgcnVuKCk7Cit9CisKK0FO
R0xFX0lOU1RBTlRJQVRFX1RFU1QoVGV4dHVyZVNhbXBsaW5nQmVuY2htYXJrLCBEM0QxMVBhcmFt
cygpLCBEM0Q5UGFyYW1zKCksIE9wZW5HTFBhcmFtcygpKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL1RleHR1cmVzUGVyZi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvVGV4dHVy
ZXNQZXJmLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvcGVyZl90ZXN0cy9UZXh0dXJlc1BlcmYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMjkzIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFRleHR1cmVzUGVyZjoKKy8vICAgUGVyZm9ybWFu
Y2UgdGVzdCBmb3Igc2V0dGluZyB0ZXh0dXJlIHN0YXRlLgorLy8KKworI2luY2x1ZGUgIkFOR0xF
UGVyZlRlc3QuaCIKKworI2luY2x1ZGUgPGlvc3RyZWFtPgorI2luY2x1ZGUgPHJhbmRvbT4KKyNp
bmNsdWRlIDxzc3RyZWFtPgorCisjaW5jbHVkZSAic2hhZGVyX3V0aWxzLmgiCisKK25hbWVzcGFj
ZSBhbmdsZQoreworCitzdHJ1Y3QgVGV4dHVyZXNQYXJhbXMgZmluYWwgOiBwdWJsaWMgUmVuZGVy
VGVzdFBhcmFtcworeworICAgIFRleHR1cmVzUGFyYW1zKCkKKyAgICB7CisgICAgICAgIC8vIENv
bW1vbiBkZWZhdWx0IHBhcmFtcworICAgICAgICBtYWpvclZlcnNpb24gPSAyOworICAgICAgICBt
aW5vclZlcnNpb24gPSAwOworICAgICAgICB3aW5kb3dXaWR0aCAgPSA3MjA7CisgICAgICAgIHdp
bmRvd0hlaWdodCA9IDcyMDsKKyAgICAgICAgaXRlcmF0aW9ucyAgID0gMjU2OworCisgICAgICAg
IG51bVRleHR1cmVzICAgICAgICAgICAgICAgICA9IDg7CisgICAgICAgIHRleHR1cmVSZWJpbmRG
cmVxdWVuY3kgICAgICA9IDU7CisgICAgICAgIHRleHR1cmVTdGF0ZVVwZGF0ZUZyZXF1ZW5jeSA9
IDM7CisgICAgICAgIHRleHR1cmVNaXBDb3VudCAgICAgICAgICAgICA9IDg7CisgICAgfQorCisg
ICAgc3RkOjpzdHJpbmcgc3VmZml4KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc2l6ZV90IG51bVRl
eHR1cmVzOworICAgIHNpemVfdCB0ZXh0dXJlUmViaW5kRnJlcXVlbmN5OworICAgIHNpemVfdCB0
ZXh0dXJlU3RhdGVVcGRhdGVGcmVxdWVuY3k7CisgICAgc2l6ZV90IHRleHR1cmVNaXBDb3VudDsK
KworICAgIC8vIHN0YXRpYyBwYXJhbWV0ZXJzCisgICAgc2l6ZV90IGl0ZXJhdGlvbnM7Cit9Owor
CitzdGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZvcywgY29uc3QgVGV4dHVy
ZXNQYXJhbXMgJnBhcmFtcykKK3sKKyAgICBvcyA8PCBwYXJhbXMuc3VmZml4KCkuc3Vic3RyKDEp
OworICAgIHJldHVybiBvczsKK30KKworc3RkOjpzdHJpbmcgVGV4dHVyZXNQYXJhbXM6OnN1ZmZp
eCgpIGNvbnN0Cit7CisgICAgc3RkOjpzdHJpbmdzdHJlYW0gc3Ryc3RyOworCisgICAgc3Ryc3Ry
IDw8IFJlbmRlclRlc3RQYXJhbXM6OnN1ZmZpeCgpOworICAgIHN0cnN0ciA8PCAiXyIgPDwgbnVt
VGV4dHVyZXMgPDwgIl90ZXh0dXJlcyI7CisgICAgc3Ryc3RyIDw8ICJfIiA8PCB0ZXh0dXJlUmVi
aW5kRnJlcXVlbmN5IDw8ICJfcmViaW5kIjsKKyAgICBzdHJzdHIgPDwgIl8iIDw8IHRleHR1cmVT
dGF0ZVVwZGF0ZUZyZXF1ZW5jeSA8PCAiX3N0YXRlIjsKKyAgICBzdHJzdHIgPDwgIl8iIDw8IHRl
eHR1cmVNaXBDb3VudCA8PCAiX21pcHMiOworCisgICAgcmV0dXJuIHN0cnN0ci5zdHIoKTsKK30K
KworY2xhc3MgVGV4dHVyZXNCZW5jaG1hcmsgOiBwdWJsaWMgQU5HTEVSZW5kZXJUZXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZh
Y2U8VGV4dHVyZXNQYXJhbXM+Cit7CisgIHB1YmxpYzoKKyAgICBUZXh0dXJlc0JlbmNobWFyaygp
OworCisgICAgdm9pZCBpbml0aWFsaXplQmVuY2htYXJrKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBk
ZXN0cm95QmVuY2htYXJrKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3QmVuY2htYXJrKCkgb3Zl
cnJpZGU7CisKKyAgcHJpdmF0ZToKKyAgICB2b2lkIGluaXRTaGFkZXJzKCk7CisgICAgdm9pZCBp
bml0VGV4dHVyZXMoKTsKKworICAgIHN0ZDo6dmVjdG9yPEdMdWludD4gbVRleHR1cmVzOworCisg
ICAgR0x1aW50IG1Qcm9ncmFtOworICAgIHN0ZDo6dmVjdG9yPEdMdWludD4gbVVuaWZvcm1Mb2Nh
dGlvbnM7Cit9OworCitUZXh0dXJlc0JlbmNobWFyazo6VGV4dHVyZXNCZW5jaG1hcmsoKSA6IEFO
R0xFUmVuZGVyVGVzdCgiVGV4dHVyZXMiLCBHZXRQYXJhbSgpKSwgbVByb2dyYW0oMHUpCit7Cit9
CisKK3ZvaWQgVGV4dHVyZXNCZW5jaG1hcms6OmluaXRpYWxpemVCZW5jaG1hcmsoKQoreworICAg
IGNvbnN0IGF1dG8gJnBhcmFtcyA9IEdldFBhcmFtKCk7CisKKyAgICBBU1NFUlRfR1QocGFyYW1z
Lml0ZXJhdGlvbnMsIDB1KTsKKworICAgIC8vIFZlcmlmeSB0aGUgdW5pZm9ybSBjb3VudHMgYXJl
IHdpdGhpbiB0aGUgbGltaXRzCisgICAgR0xpbnQgbWF4VGV4dHVyZVVuaXRzOworICAgIGdsR2V0
SW50ZWdlcnYoR0xfTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMsICZtYXhUZXh0dXJlVW5pdHMpOwor
ICAgIGlmIChwYXJhbXMubnVtVGV4dHVyZXMgPiBzdGF0aWNfY2FzdDxzaXplX3Q+KG1heFRleHR1
cmVVbml0cykpCisgICAgeworICAgICAgICBGQUlMKCkgPDwgIlRleHR1cmUgY291bnQgKCIgPDwg
cGFyYW1zLm51bVRleHR1cmVzIDw8ICIpIgorICAgICAgICAgICAgICAgPDwgIiBleGNlZWRzIG1h
eGltdW0gdGV4dHVyZSB1bml0IGNvdW50OiAiIDw8IG1heFRleHR1cmVVbml0cyA8PCBzdGQ6OmVu
ZGw7CisgICAgfQorCisgICAgaW5pdFNoYWRlcnMoKTsKKyAgICBpbml0VGV4dHVyZXMoKTsKKyAg
ICBnbENsZWFyQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgMC4wZik7CisgICAgZ2xWaWV3cG9ydCgw
LCAwLCBnZXRXaW5kb3coKS0+Z2V0V2lkdGgoKSwgZ2V0V2luZG93KCktPmdldEhlaWdodCgpKTsK
KworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworfQorCitzdGQ6OnN0cmluZyBHZXRVbmlmb3Jt
TG9jYXRpb25OYW1lKHNpemVfdCBpZHgsIGJvb2wgdmVydGV4U2hhZGVyKQoreworICAgIHN0ZDo6
c3RyaW5nc3RyZWFtIHN0cnN0cjsKKyAgICBzdHJzdHIgPDwgKHZlcnRleFNoYWRlciA/ICJ2cyIg
OiAiZnMiKSA8PCAiX3VfIiA8PCBpZHg7CisgICAgcmV0dXJuIHN0cnN0ci5zdHIoKTsKK30KKwor
dm9pZCBUZXh0dXJlc0JlbmNobWFyazo6aW5pdFNoYWRlcnMoKQoreworICAgIGNvbnN0IGF1dG8g
JnBhcmFtcyA9IEdldFBhcmFtKCk7CisKKyAgICBzdGQ6OnN0cmluZyB2cyA9CisgICAgICAgICJ2
b2lkIG1haW4oKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0g
dmVjNCgwLCAwLCAwLCAwKTtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBzdGQ6OnN0cmluZ3N0
cmVhbSBmc3Ryc3RyOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyYW1zLm51bVRleHR1
cmVzOyBpKyspCisgICAgeworICAgICAgICBmc3Ryc3RyIDw8ICJ1bmlmb3JtIHNhbXBsZXIyRCB0
ZXgiIDw8IGkgPDwgIjsiOworICAgIH0KKyAgICBmc3Ryc3RyIDw8ICJ2b2lkIG1haW4oKVxuIgor
ICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0g
dmVjNCgwLCAwLCAwLCAwKSI7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJhbXMubnVt
VGV4dHVyZXM7IGkrKykKKyAgICB7CisgICAgICAgIGZzdHJzdHIgPDwgIisgdGV4dHVyZTJEKHRl
eCIgPDwgaSA8PCAiLCB2ZWMyKDAsIDApKSI7CisgICAgfQorICAgIGZzdHJzdHIgPDwgIjtcbiIK
KyAgICAgICAgICAgICAgICJ9XG4iOworCisgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2
cywgZnN0cnN0ci5zdHIoKSk7CisgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7CisKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtcy5udW1UZXh0dXJlczsgKytpKQorICAgIHsKKyAg
ICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gdW5pZm9ybU5hbWU7CisgICAgICAgIHVuaWZvcm1OYW1l
IDw8ICJ0ZXgiIDw8IGk7CisKKyAgICAgICAgR0xpbnQgbG9jYXRpb24gPSBnbEdldFVuaWZvcm1M
b2NhdGlvbihtUHJvZ3JhbSwgdW5pZm9ybU5hbWUuc3RyKCkuY19zdHIoKSk7CisgICAgICAgIEFT
U0VSVF9ORSgtMSwgbG9jYXRpb24pOworICAgICAgICBtVW5pZm9ybUxvY2F0aW9ucy5wdXNoX2Jh
Y2sobG9jYXRpb24pOworICAgIH0KKworICAgIC8vIFVzZSB0aGUgcHJvZ3JhbSBvYmplY3QKKyAg
ICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworfQorCit2b2lkIFRleHR1cmVzQmVuY2htYXJrOjpp
bml0VGV4dHVyZXMoKQoreworICAgIGNvbnN0IGF1dG8gJnBhcmFtcyA9IEdldFBhcmFtKCk7CisK
KyAgICBzaXplX3QgdGV4dHVyZVNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KDEpIDw8IHBhcmFt
cy50ZXh0dXJlTWlwQ291bnQ7CisgICAgc3RkOjp2ZWN0b3I8R0x1Ynl0ZT4gdGV4dHVyZURhdGEo
dGV4dHVyZVNpemUgKiB0ZXh0dXJlU2l6ZSAqIDQpOworICAgIGZvciAoYXV0byAmYnl0ZSA6IHRl
eHR1cmVEYXRhKQorICAgIHsKKyAgICAgICAgYnl0ZSA9IHJhbmQoKSAlIDI1NXU7CisgICAgfQor
CisgICAgZm9yIChzaXplX3QgdGV4SW5kZXggPSAwOyB0ZXhJbmRleCA8IHBhcmFtcy5udW1UZXh0
dXJlczsgdGV4SW5kZXgrKykKKyAgICB7CisgICAgICAgIEdMdWludCB0ZXggPSAwOworICAgICAg
ICBnbEdlblRleHR1cmVzKDEsICZ0ZXgpOworCisgICAgICAgIGdsQWN0aXZlVGV4dHVyZShzdGF0
aWNfY2FzdDxHTGVudW0+KEdMX1RFWFRVUkUwICsgdGV4SW5kZXgpKTsKKyAgICAgICAgZ2xCaW5k
VGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXgpOworICAgICAgICBmb3IgKHNpemVfdCBtaXAgPSAw
OyBtaXAgPCBwYXJhbXMudGV4dHVyZU1pcENvdW50OyBtaXArKykKKyAgICAgICAgeworICAgICAg
ICAgICAgR0xzaXplaSBsZXZlbFNpemUgPSBzdGF0aWNfY2FzdDxHTHNpemVpPih0ZXh0dXJlU2l6
ZSA+PiBtaXApOworICAgICAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIHN0YXRp
Y19jYXN0PEdMaW50PihtaXApLCBHTF9SR0JBLCBsZXZlbFNpemUsIGxldmVsU2l6ZSwgMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCB0ZXh0dXJl
RGF0YS5kYXRhKCkpOworICAgICAgICB9CisgICAgICAgIG1UZXh0dXJlcy5wdXNoX2JhY2sodGV4
KTsKKworICAgICAgICBnbFVuaWZvcm0xaShtVW5pZm9ybUxvY2F0aW9uc1t0ZXhJbmRleF0sIHN0
YXRpY19jYXN0PEdMaW50Pih0ZXhJbmRleCkpOworICAgIH0KK30KKwordm9pZCBUZXh0dXJlc0Jl
bmNobWFyazo6ZGVzdHJveUJlbmNobWFyaygpCit7CisgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9n
cmFtKTsKK30KKwordm9pZCBUZXh0dXJlc0JlbmNobWFyazo6ZHJhd0JlbmNobWFyaygpCit7Cisg
ICAgY29uc3QgYXV0byAmcGFyYW1zID0gR2V0UGFyYW0oKTsKKworICAgIGZvciAoc2l6ZV90IGl0
ID0gMDsgaXQgPCBwYXJhbXMuaXRlcmF0aW9uczsgKytpdCkKKyAgICB7CisgICAgICAgIGlmIChp
dCAlIHBhcmFtcy50ZXh0dXJlUmViaW5kRnJlcXVlbmN5ID09IDApCisgICAgICAgIHsKKyAgICAg
ICAgICAgIC8vIFN3YXAgdHdvIHRleHR1cmVzCisgICAgICAgICAgICBzaXplX3Qgc3dhcFRleHR1
cmUgPSAoaXQgLyBwYXJhbXMudGV4dHVyZVJlYmluZEZyZXF1ZW5jeSkgJSAocGFyYW1zLm51bVRl
eHR1cmVzIC0gMSk7CisKKyAgICAgICAgICAgIGdsQWN0aXZlVGV4dHVyZShzdGF0aWNfY2FzdDxH
TGVudW0+KEdMX1RFWFRVUkUwICsgc3dhcFRleHR1cmUpKTsKKyAgICAgICAgICAgIGdsQmluZFRl
eHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzW3N3YXBUZXh0dXJlXSk7CisgICAgICAgICAg
ICBnbEFjdGl2ZVRleHR1cmUoc3RhdGljX2Nhc3Q8R0xlbnVtPihHTF9URVhUVVJFMCArIHN3YXBU
ZXh0dXJlICsgMSkpOworICAgICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBt
VGV4dHVyZXNbc3dhcFRleHR1cmUgKyAxXSk7CisgICAgICAgICAgICBzdGQ6OnN3YXAobVRleHR1
cmVzW3N3YXBUZXh0dXJlXSwgbVRleHR1cmVzW3N3YXBUZXh0dXJlICsgMV0pOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKGl0ICUgcGFyYW1zLnRleHR1cmVTdGF0ZVVwZGF0ZUZyZXF1ZW5jeSA9
PSAwKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBVcGRhdGUgYSB0ZXh0dXJlJ3Mgc3RhdGUK
KyAgICAgICAgICAgIHNpemVfdCBzdGF0ZVVwZGF0ZUNvdW50ID0gaXQgLyBwYXJhbXMudGV4dHVy
ZVN0YXRlVXBkYXRlRnJlcXVlbmN5OworCisgICAgICAgICAgICBjb25zdCBzaXplX3QgbnVtVXBk
YXRlVGV4dHVyZXMgPSA0OworICAgICAgICAgICAgQVNTRVJUX0xFKG51bVVwZGF0ZVRleHR1cmVz
LCBwYXJhbXMubnVtVGV4dHVyZXMpOworCisgICAgICAgICAgICBzaXplX3QgZmlyc3RUZXh0dXJl
ID0gc3RhdGVVcGRhdGVDb3VudCAlIChwYXJhbXMubnVtVGV4dHVyZXMgLSBudW1VcGRhdGVUZXh0
dXJlcyk7CisKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IHVwZGF0ZVRleHR1cmVJZHggPSAwOyB1
cGRhdGVUZXh0dXJlSWR4IDwgbnVtVXBkYXRlVGV4dHVyZXM7CisgICAgICAgICAgICAgICAgIHVw
ZGF0ZVRleHR1cmVJZHgrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzaXplX3Qg
dXBkYXRlVGV4dHVyZSA9IGZpcnN0VGV4dHVyZSArIHVwZGF0ZVRleHR1cmVJZHg7CisgICAgICAg
ICAgICAgICAgZ2xBY3RpdmVUZXh0dXJlKHN0YXRpY19jYXN0PEdMZW51bT4oR0xfVEVYVFVSRTAg
KyB1cGRhdGVUZXh0dXJlKSk7CisKKyAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gbWluRmls
dGVyc1tdID0geworICAgICAgICAgICAgICAgICAgICBHTF9ORUFSRVNULAorICAgICAgICAgICAg
ICAgICAgICBHTF9MSU5FQVIsCisgICAgICAgICAgICAgICAgICAgIEdMX05FQVJFU1RfTUlQTUFQ
X05FQVJFU1QsCisgICAgICAgICAgICAgICAgICAgIEdMX0xJTkVBUl9NSVBNQVBfTkVBUkVTVCwK
KyAgICAgICAgICAgICAgICAgICAgR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSLAorICAgICAgICAg
ICAgICAgICAgICBHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUiwKKyAgICAgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJF
X01JTl9GSUxURVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkZpbHRlcnNb
c3RhdGVVcGRhdGVDb3VudCAlIEFycmF5U2l6ZShtaW5GaWx0ZXJzKV0pOworCisgICAgICAgICAg
ICAgICAgY29uc3QgR0xlbnVtIG1hZ0ZpbHRlcnNbXSA9IHsKKyAgICAgICAgICAgICAgICAgICAg
R0xfTkVBUkVTVCwgR0xfTElORUFSLAorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAg
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFnRmlsdGVyc1tzdGF0ZVVwZGF0ZUNv
dW50ICUgQXJyYXlTaXplKG1hZ0ZpbHRlcnMpXSk7CisKKyAgICAgICAgICAgICAgICBjb25zdCBH
TGVudW0gd3JhcFBhcmFtZXRlcnNbXSA9IHsKKyAgICAgICAgICAgICAgICAgICAgR0xfQ0xBTVBf
VE9fRURHRSwgR0xfUkVQRUFULCBHTF9NSVJST1JFRF9SRVBFQVQsCisgICAgICAgICAgICAgICAg
fTsKKyAgICAgICAgICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVY
VFVSRV9XUkFQX1MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBQYXJhbWV0
ZXJzW3N0YXRlVXBkYXRlQ291bnQgJSBBcnJheVNpemUod3JhcFBhcmFtZXRlcnMpXSk7CisgICAg
ICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JB
UF9ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwUGFyYW1ldGVyc1tzdGF0
ZVVwZGF0ZUNvdW50ICUgQXJyYXlTaXplKHdyYXBQYXJhbWV0ZXJzKV0pOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMCwgMyk7
CisgICAgfQorCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9CisKK1RleHR1cmVzUGFyYW1z
IEQzRDExUGFyYW1zKCkKK3sKKyAgICBUZXh0dXJlc1BhcmFtcyBwYXJhbXM7CisgICAgcGFyYW1z
LmVnbFBhcmFtZXRlcnMgPSBlZ2xfcGxhdGZvcm06OkQzRDExX05VTEwoKTsKKyAgICByZXR1cm4g
cGFyYW1zOworfQorCitUZXh0dXJlc1BhcmFtcyBEM0Q5UGFyYW1zKCkKK3sKKyAgICBUZXh0dXJl
c1BhcmFtcyBwYXJhbXM7CisgICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBlZ2xfcGxhdGZvcm06
OkQzRDlfTlVMTCgpOworICAgIHJldHVybiBwYXJhbXM7Cit9CisKK1RleHR1cmVzUGFyYW1zIE9w
ZW5HTFBhcmFtcygpCit7CisgICAgVGV4dHVyZXNQYXJhbXMgcGFyYW1zOworICAgIHBhcmFtcy5l
Z2xQYXJhbWV0ZXJzID0gZWdsX3BsYXRmb3JtOjpPUEVOR0xfTlVMTCgpOworICAgIHJldHVybiBw
YXJhbXM7Cit9CisKK1RFU1RfUChUZXh0dXJlc0JlbmNobWFyaywgUnVuKQoreworICAgIHJ1bigp
OworfQorCitBTkdMRV9JTlNUQU5USUFURV9URVNUKFRleHR1cmVzQmVuY2htYXJrLCBEM0QxMVBh
cmFtcygpLCBEM0Q5UGFyYW1zKCksIE9wZW5HTFBhcmFtcygpKTsKKworfSAgLy8gbmFtZXNwYWNl
IGFuZ2xlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0
cy9Vbmlmb3Jtc1BlcmYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9wZXJmX3Rlc3RzL1VuaWZvcm1zUGVyZi5jcHAJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvVW5pZm9ybXNQZXJm
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIyOCBAQAorLy8KKy8vIENvcHlyaWdodCAo
YykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBV
bmlmb3Jtc0JlbmNobWFyazoKKy8vICAgUGVyZm9ybWFuY2UgdGVzdCBmb3Igc2V0dGluZyB1bmlm
b3JtIGRhdGEuCisvLworCisjaW5jbHVkZSAiQU5HTEVQZXJmVGVzdC5oIgorCisjaW5jbHVkZSA8
aW9zdHJlYW0+CisjaW5jbHVkZSA8cmFuZG9tPgorI2luY2x1ZGUgPHNzdHJlYW0+CisKKyNpbmNs
dWRlICJzaGFkZXJfdXRpbHMuaCIKKwordXNpbmcgbmFtZXNwYWNlIGFuZ2xlOworCituYW1lc3Bh
Y2UKK3sKKworc3RydWN0IFVuaWZvcm1zUGFyYW1zIGZpbmFsIDogcHVibGljIFJlbmRlclRlc3RQ
YXJhbXMKK3sKKyAgICBVbmlmb3Jtc1BhcmFtcygpCisgICAgeworICAgICAgICAvLyBDb21tb24g
ZGVmYXVsdCBwYXJhbXMKKyAgICAgICAgbWFqb3JWZXJzaW9uID0gMjsKKyAgICAgICAgbWlub3JW
ZXJzaW9uID0gMDsKKyAgICAgICAgd2luZG93V2lkdGggID0gNzIwOworICAgICAgICB3aW5kb3dI
ZWlnaHQgPSA3MjA7CisgICAgICAgIGl0ZXJhdGlvbnMgICA9IDQ7CisKKyAgICAgICAgbnVtVmVy
dGV4VW5pZm9ybXMgICA9IDIwMDsKKyAgICAgICAgbnVtRnJhZ21lbnRVbmlmb3JtcyA9IDIwMDsK
KyAgICB9CisKKyAgICBzdGQ6OnN0cmluZyBzdWZmaXgoKSBjb25zdCBvdmVycmlkZTsKKyAgICBz
aXplX3QgbnVtVmVydGV4VW5pZm9ybXM7CisgICAgc2l6ZV90IG51bUZyYWdtZW50VW5pZm9ybXM7
CisKKyAgICAvLyBzdGF0aWMgcGFyYW1ldGVycworICAgIHNpemVfdCBpdGVyYXRpb25zOworfTsK
Kworc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmb3MsIGNvbnN0IFVuaWZv
cm1zUGFyYW1zICZwYXJhbXMpCit7CisgICAgb3MgPDwgcGFyYW1zLnN1ZmZpeCgpLnN1YnN0cigx
KTsKKyAgICByZXR1cm4gb3M7Cit9CisKK3N0ZDo6c3RyaW5nIFVuaWZvcm1zUGFyYW1zOjpzdWZm
aXgoKSBjb25zdAoreworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cnN0cjsKKworICAgIHN0cnN0
ciA8PCBSZW5kZXJUZXN0UGFyYW1zOjpzdWZmaXgoKTsKKyAgICBzdHJzdHIgPDwgIl8iIDw8IG51
bVZlcnRleFVuaWZvcm1zIDw8ICJfdmVydGV4X3VuaWZvcm1zIjsKKyAgICBzdHJzdHIgPDwgIl8i
IDw8IG51bUZyYWdtZW50VW5pZm9ybXMgPDwgIl9mcmFnbWVudF91bmlmb3JtcyI7CisKKyAgICBy
ZXR1cm4gc3Ryc3RyLnN0cigpOworfQorCitjbGFzcyBVbmlmb3Jtc0JlbmNobWFyayA6IHB1Ymxp
YyBBTkdMRVJlbmRlclRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyA6OnRl
c3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxVbmlmb3Jtc1BhcmFtcz4KK3sKKyAgcHVibGljOgor
ICAgIFVuaWZvcm1zQmVuY2htYXJrKCk7CisKKyAgICB2b2lkIGluaXRpYWxpemVCZW5jaG1hcmso
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRlc3Ryb3lCZW5jaG1hcmsoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRyYXdCZW5jaG1hcmsoKSBvdmVycmlkZTsKKworICBwcml2YXRlOgorICAgIHZvaWQgaW5p
dFNoYWRlcnMoKTsKKyAgICB2b2lkIGluaXRWZXJ0ZXhCdWZmZXIoKTsKKyAgICB2b2lkIGluaXRU
ZXh0dXJlcygpOworCisgICAgR0x1aW50IG1Qcm9ncmFtOworICAgIHN0ZDo6dmVjdG9yPEdMdWlu
dD4gbVVuaWZvcm1Mb2NhdGlvbnM7Cit9OworCitVbmlmb3Jtc0JlbmNobWFyazo6VW5pZm9ybXNC
ZW5jaG1hcmsoKSA6IEFOR0xFUmVuZGVyVGVzdCgiVW5pZm9ybXMiLCBHZXRQYXJhbSgpKSwgbVBy
b2dyYW0oMHUpCit7Cit9CisKK3ZvaWQgVW5pZm9ybXNCZW5jaG1hcms6OmluaXRpYWxpemVCZW5j
aG1hcmsoKQoreworICAgIGNvbnN0IGF1dG8gJnBhcmFtcyA9IEdldFBhcmFtKCk7CisKKyAgICBB
U1NFUlRfR1QocGFyYW1zLml0ZXJhdGlvbnMsIDB1KTsKKworICAgIC8vIFZlcmlmeSB0aGUgdW5p
Zm9ybSBjb3VudHMgYXJlIHdpdGhpbiB0aGUgbGltaXRzCisgICAgR0xpbnQgbWF4VmVydGV4VW5p
Zm9ybXMsIG1heEZyYWdtZW50VW5pZm9ybXM7CisgICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVkVS
VEVYX1VOSUZPUk1fVkVDVE9SUywgJm1heFZlcnRleFVuaWZvcm1zKTsKKyAgICBnbEdldEludGVn
ZXJ2KEdMX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMsICZtYXhGcmFnbWVudFVuaWZvcm1z
KTsKKworICAgIGlmIChwYXJhbXMubnVtVmVydGV4VW5pZm9ybXMgPiBzdGF0aWNfY2FzdDxzaXpl
X3Q+KG1heFZlcnRleFVuaWZvcm1zKSkKKyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiVmVydGV4
IHVuaWZvcm0gY291bnQgKCIgPDwgcGFyYW1zLm51bVZlcnRleFVuaWZvcm1zIDw8ICIpIgorICAg
ICAgICAgICAgICAgPDwgIiBleGNlZWRzIG1heGltdW0gdmVydGV4IHVuaWZvcm0gY291bnQ6ICIg
PDwgbWF4VmVydGV4VW5pZm9ybXMgPDwgc3RkOjplbmRsOworICAgIH0KKyAgICBpZiAocGFyYW1z
Lm51bUZyYWdtZW50VW5pZm9ybXMgPiBzdGF0aWNfY2FzdDxzaXplX3Q+KG1heEZyYWdtZW50VW5p
Zm9ybXMpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJGcmFnbWVudCB1bmlmb3JtIGNvdW50
ICgiIDw8IHBhcmFtcy5udW1GcmFnbWVudFVuaWZvcm1zIDw8ICIpIgorICAgICAgICAgICAgICAg
PDwgIiBleGNlZWRzIG1heGltdW0gZnJhZ21lbnQgdW5pZm9ybSBjb3VudDogIiA8PCBtYXhGcmFn
bWVudFVuaWZvcm1zIDw8IHN0ZDo6ZW5kbDsKKyAgICB9CisKKyAgICBpbml0U2hhZGVycygpOwor
ICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKKyAgICBnbFZpZXdwb3J0
KDAsIDAsIGdldFdpbmRvdygpLT5nZXRXaWR0aCgpLCBnZXRXaW5kb3coKS0+Z2V0SGVpZ2h0KCkp
OworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cit9CisKK3N0ZDo6c3RyaW5nIEdldFVuaWZv
cm1Mb2NhdGlvbk5hbWUoc2l6ZV90IGlkeCwgYm9vbCB2ZXJ0ZXhTaGFkZXIpCit7CisgICAgc3Rk
OjpzdHJpbmdzdHJlYW0gc3Ryc3RyOworICAgIHN0cnN0ciA8PCAodmVydGV4U2hhZGVyID8gInZz
IiA6ICJmcyIpIDw8ICJfdV8iIDw8IGlkeDsKKyAgICByZXR1cm4gc3Ryc3RyLnN0cigpOworfQor
Cit2b2lkIFVuaWZvcm1zQmVuY2htYXJrOjppbml0U2hhZGVycygpCit7CisgICAgY29uc3QgYXV0
byAmcGFyYW1zID0gR2V0UGFyYW0oKTsKKworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHZzdHJzdHI7
CisgICAgdnN0cnN0ciA8PCAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcGFyYW1zLm51bVZlcnRleFVuaWZvcm1zOyBpKyspCisgICAgewor
ICAgICAgICB2c3Ryc3RyIDw8ICJ1bmlmb3JtIHZlYzQgIiA8PCBHZXRVbmlmb3JtTG9jYXRpb25O
YW1lKGksIHRydWUpIDw8ICI7XG4iOworICAgIH0KKyAgICB2c3Ryc3RyIDw8ICJ2b2lkIG1haW4o
KVxuIgorICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICIgICAgZ2xfUG9zaXRp
b24gPSB2ZWM0KDAsIDAsIDAsIDApO1xuIjsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBh
cmFtcy5udW1WZXJ0ZXhVbmlmb3JtczsgaSsrKQorICAgIHsKKyAgICAgICAgdnN0cnN0ciA8PCAi
ICAgIGdsX1Bvc2l0aW9uID0gZ2xfUG9zaXRpb24gKyAiIDw8IEdldFVuaWZvcm1Mb2NhdGlvbk5h
bWUoaSwgdHJ1ZSkgPDwgIjtcbiI7CisgICAgfQorICAgIHZzdHJzdHIgPDwgIn0iOworCisgICAg
c3RkOjpzdHJpbmdzdHJlYW0gZnN0cnN0cjsKKyAgICBmc3Ryc3RyIDw8ICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDtcbiI7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJhbXMubnVtRnJh
Z21lbnRVbmlmb3JtczsgaSsrKQorICAgIHsKKyAgICAgICAgZnN0cnN0ciA8PCAidW5pZm9ybSB2
ZWM0ICIgPDwgR2V0VW5pZm9ybUxvY2F0aW9uTmFtZShpLCBmYWxzZSkgPDwgIjtcbiI7CisgICAg
fQorICAgIGZzdHJzdHIgPDwgInZvaWQgbWFpbigpXG4iCisgICAgICAgICAgICAgICAie1xuIgor
ICAgICAgICAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAsIDAsIDAsIDApO1xuIjsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtcy5udW1GcmFnbWVudFVuaWZvcm1zOyBp
KyspCisgICAgeworICAgICAgICBmc3Ryc3RyIDw8ICIgICAgZ2xfRnJhZ0NvbG9yID0gZ2xfRnJh
Z0NvbG9yICsgIiA8PCBHZXRVbmlmb3JtTG9jYXRpb25OYW1lKGksIGZhbHNlKQorICAgICAgICAg
ICAgICAgIDw8ICI7XG4iOworICAgIH0KKyAgICBmc3Ryc3RyIDw8ICJ9IjsKKworICAgIG1Qcm9n
cmFtID0gQ29tcGlsZVByb2dyYW0odnN0cnN0ci5zdHIoKSwgZnN0cnN0ci5zdHIoKSk7CisgICAg
QVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBh
cmFtcy5udW1WZXJ0ZXhVbmlmb3JtczsgKytpKQorICAgIHsKKyAgICAgICAgR0xpbnQgbG9jYXRp
b24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgR2V0VW5pZm9ybUxvY2F0aW9uTmFt
ZShpLCB0cnVlKS5jX3N0cigpKTsKKyAgICAgICAgQVNTRVJUX05FKC0xLCBsb2NhdGlvbik7Cisg
ICAgICAgIG1Vbmlmb3JtTG9jYXRpb25zLnB1c2hfYmFjayhsb2NhdGlvbik7CisgICAgfQorICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyYW1zLm51bUZyYWdtZW50VW5pZm9ybXM7ICsraSkK
KyAgICB7CisgICAgICAgIEdMaW50IGxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVBy
b2dyYW0sIEdldFVuaWZvcm1Mb2NhdGlvbk5hbWUoaSwgZmFsc2UpLmNfc3RyKCkpOworICAgICAg
ICBBU1NFUlRfTkUoLTEsIGxvY2F0aW9uKTsKKyAgICAgICAgbVVuaWZvcm1Mb2NhdGlvbnMucHVz
aF9iYWNrKGxvY2F0aW9uKTsKKyAgICB9CisKKyAgICAvLyBVc2UgdGhlIHByb2dyYW0gb2JqZWN0
CisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKK30KKwordm9pZCBVbmlmb3Jtc0JlbmNobWFy
azo6ZGVzdHJveUJlbmNobWFyaygpCit7CisgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsK
K30KKwordm9pZCBVbmlmb3Jtc0JlbmNobWFyazo6ZHJhd0JlbmNobWFyaygpCit7CisgICAgY29u
c3QgYXV0byAmcGFyYW1zID0gR2V0UGFyYW0oKTsKKworICAgIGZvciAoc2l6ZV90IGl0ID0gMDsg
aXQgPCBwYXJhbXMuaXRlcmF0aW9uczsgKytpdCkKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90
IHVuaWZvcm0gPSAwOyB1bmlmb3JtIDwgbVVuaWZvcm1Mb2NhdGlvbnMuc2l6ZSgpOyArK3VuaWZv
cm0pCisgICAgICAgIHsKKyAgICAgICAgICAgIGZsb2F0IHZhbHVlID0gc3RhdGljX2Nhc3Q8Zmxv
YXQ+KHVuaWZvcm0pOworICAgICAgICAgICAgZ2xVbmlmb3JtNGYobVVuaWZvcm1Mb2NhdGlvbnNb
dW5pZm9ybV0sIHZhbHVlLCB2YWx1ZSwgdmFsdWUsIHZhbHVlKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDMpOworICAgIH0KKworICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOworfQorCitVbmlmb3Jtc1BhcmFtcyBEM0QxMVBhcmFtcygpCit7Cisg
ICAgVW5pZm9ybXNQYXJhbXMgcGFyYW1zOworICAgIHBhcmFtcy5lZ2xQYXJhbWV0ZXJzID0gZWds
X3BsYXRmb3JtOjpEM0QxMSgpOworICAgIHJldHVybiBwYXJhbXM7Cit9CisKK1VuaWZvcm1zUGFy
YW1zIEQzRDlQYXJhbXMoKQoreworICAgIFVuaWZvcm1zUGFyYW1zIHBhcmFtczsKKyAgICBwYXJh
bXMuZWdsUGFyYW1ldGVycyA9IGVnbF9wbGF0Zm9ybTo6RDNEOSgpOworICAgIHJldHVybiBwYXJh
bXM7Cit9CisKK1VuaWZvcm1zUGFyYW1zIE9wZW5HTFBhcmFtcygpCit7CisgICAgVW5pZm9ybXNQ
YXJhbXMgcGFyYW1zOworICAgIHBhcmFtcy5lZ2xQYXJhbWV0ZXJzID0gZWdsX3BsYXRmb3JtOjpP
UEVOR0woKTsKKyAgICByZXR1cm4gcGFyYW1zOworfQorCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNw
YWNlCisKK1RFU1RfUChVbmlmb3Jtc0JlbmNobWFyaywgUnVuKQoreworICAgIHJ1bigpOworfQor
CitBTkdMRV9JTlNUQU5USUFURV9URVNUKFVuaWZvcm1zQmVuY2htYXJrLCBEM0QxMVBhcmFtcygp
LCBEM0Q5UGFyYW1zKCksIE9wZW5HTFBhcmFtcygpKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL3RoaXJkX3BhcnR5L3BlcmYvYW5nbGUtbW9kcy5w
YXRjaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVy
Zl90ZXN0cy90aGlyZF9wYXJ0eS9wZXJmL2FuZ2xlLW1vZHMucGF0Y2gJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvdGhpcmRfcGFy
dHkvcGVyZi9hbmdsZS1tb2RzLnBhdGNoCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjEgQEAK
K2RpZmYgLS1naXQgYS90ZXN0cy9wZXJmX3Rlc3RzL3RoaXJkX3BhcnR5L3BlcmYvcGVyZl90ZXN0
LmNjIGIvdGVzdHMvcGVyZl90ZXN0cy90aGlyZF9wYXJ0eS9wZXJmL3BlcmZfdGVzdC5jYworaW5k
ZXggMGQ1YWJjMC4uNzM2NDMzMCAxMDA2NDQKKy0tLSBhL3Rlc3RzL3BlcmZfdGVzdHMvdGhpcmRf
cGFydHkvcGVyZi9wZXJmX3Rlc3QuY2MKKysrKyBiL3Rlc3RzL3BlcmZfdGVzdHMvdGhpcmRfcGFy
dHkvcGVyZi9wZXJmX3Rlc3QuY2MKK0BAIC0yLDE2ICsyLDUxIEBACisgLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCistI2luY2x1ZGUgInRlc3Rpbmcv
cGVyZi9wZXJmX3Rlc3QuaCIKKysjaW5jbHVkZSAicGVyZl90ZXN0LmgiCisgCisgI2luY2x1ZGUg
PHN0ZGlvLmg+CistCistI2luY2x1ZGUgImJhc2UvbG9nZ2luZy5oIgorLSNpbmNsdWRlICJiYXNl
L3N0cmluZ3Mvc3RyaW5nX251bWJlcl9jb252ZXJzaW9ucy5oIgorLSNpbmNsdWRlICJiYXNlL3N0
cmluZ3Mvc3RyaW5ncHJpbnRmLmgiCisrI2luY2x1ZGUgPHN0ZGFyZy5oPgorKyNpbmNsdWRlIDx2
ZWN0b3I+CisgCisgbmFtZXNwYWNlIHsKKyAKKytuYW1lc3BhY2UgYmFzZSB7CisrCisrc3RkOjpz
dHJpbmcgRm9ybWF0U3RyaW5nKGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCB2YXJhcmcpIHsKKysg
IHN0YXRpYyBzdGQ6OnZlY3RvcjxjaGFyPiBidWZmZXIoNTEyKTsKKysKKysgIC8vIEF0dGVtcHQg
dG8ganVzdCBwcmludCB0byB0aGUgY3VycmVudCBidWZmZXIKKysgIGludCBsZW4gPSB2c25wcmlu
dGYoJmJ1ZmZlclswXSwgYnVmZmVyLnNpemUoKSwgZm10LCB2YXJhcmcpOworKyAgaWYgKGxlbiA8
IDAgfHwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW4pID49IGJ1ZmZlci5zaXplKCkpIHsKKysgICAg
Ly8gQnVmZmVyIHdhcyBub3QgbGFyZ2UgZW5vdWdoLCBjYWxjdWxhdGUgdGhlIHJlcXVpcmVkIHNp
emUgYW5kIHJlc2l6ZSB0aGUgYnVmZmVyCisrICAgIGxlbiA9IHZzbnByaW50ZihOVUxMLCAwLCBm
bXQsIHZhcmFyZyk7CisrICAgIGJ1ZmZlci5yZXNpemUobGVuICsgMSk7CisrCisrICAgIC8vIFBy
aW50IGFnYWluCisrICAgIHZzbnByaW50ZigmYnVmZmVyWzBdLCBidWZmZXIuc2l6ZSgpLCBmbXQs
IHZhcmFyZyk7CisrICB9CisrCisrICByZXR1cm4gc3RkOjpzdHJpbmcoYnVmZmVyLmRhdGEoKSwg
bGVuKTsKKyt9CisrCisrc3RkOjpzdHJpbmcgU3RyaW5nUHJpbnRmKGNvbnN0IGNoYXIgKmZtdCwg
Li4uKSB7CisrICB2YV9saXN0IHZhcmFyZzsKKysgIHZhX3N0YXJ0KHZhcmFyZywgZm10KTsKKysg
IHN0ZDo6c3RyaW5nIHJlc3VsdCA9IEZvcm1hdFN0cmluZyhmbXQsIHZhcmFyZyk7CisrICB2YV9l
bmQodmFyYXJnKTsKKysgIHJldHVybiByZXN1bHQ7CisrfQorKworK3N0ZDo6c3RyaW5nIFVpbnRU
b1N0cmluZyh1bnNpZ25lZCBpbnQgdmFsdWUpIHsKKysgIHJldHVybiBTdHJpbmdQcmludGYoIiV1
IiwgdmFsdWUpOworK30KKysKKytzdGQ6OnN0cmluZyBEb3VibGVUb1N0cmluZyhkb3VibGUgdmFs
dWUpIHsKKysgIHJldHVybiBTdHJpbmdQcmludGYoIiUuMTBsZiIsIHZhbHVlKTsKKyt9CisrCisr
fQorKworIHN0ZDo6c3RyaW5nIFJlc3VsdHNUb1N0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgbWVh
c3VyZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBtb2RpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIHRyYWNlLApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZf
dGVzdHMvdGhpcmRfcGFydHkvcGVyZi9wZXJmX3Rlc3QuY2MKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvdGhpcmRfcGFydHkvcGVyZi9w
ZXJmX3Rlc3QuY2MJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL3BlcmZfdGVzdHMvdGhpcmRfcGFydHkvcGVyZi9wZXJmX3Rlc3QuY2MJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwyMzkgQEAKKy8vIENvcHlyaWdodCAyMDEzIFRoZSBDaHJvbWl1bSBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKworI2luY2x1ZGUgInBlcmZfdGVzdC5oIgorCisjaW5jbHVk
ZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKK25h
bWVzcGFjZSB7CisKK25hbWVzcGFjZSBiYXNlIHsKKworc3RkOjpzdHJpbmcgRm9ybWF0U3RyaW5n
KGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCB2YXJhcmcpIHsKKyAgc3RhdGljIHN0ZDo6dmVjdG9y
PGNoYXI+IGJ1ZmZlcig1MTIpOworCisgIC8vIEF0dGVtcHQgdG8ganVzdCBwcmludCB0byB0aGUg
Y3VycmVudCBidWZmZXIKKyAgaW50IGxlbiA9IHZzbnByaW50ZigmYnVmZmVyWzBdLCBidWZmZXIu
c2l6ZSgpLCBmbXQsIHZhcmFyZyk7CisgIGlmIChsZW4gPCAwIHx8IHN0YXRpY19jYXN0PHNpemVf
dD4obGVuKSA+PSBidWZmZXIuc2l6ZSgpKSB7CisgICAgLy8gQnVmZmVyIHdhcyBub3QgbGFyZ2Ug
ZW5vdWdoLCBjYWxjdWxhdGUgdGhlIHJlcXVpcmVkIHNpemUgYW5kIHJlc2l6ZSB0aGUgYnVmZmVy
CisgICAgbGVuID0gdnNucHJpbnRmKE5VTEwsIDAsIGZtdCwgdmFyYXJnKTsKKyAgICBidWZmZXIu
cmVzaXplKGxlbiArIDEpOworCisgICAgLy8gUHJpbnQgYWdhaW4KKyAgICB2c25wcmludGYoJmJ1
ZmZlclswXSwgYnVmZmVyLnNpemUoKSwgZm10LCB2YXJhcmcpOworICB9CisKKyAgcmV0dXJuIHN0
ZDo6c3RyaW5nKGJ1ZmZlci5kYXRhKCksIGxlbik7Cit9CisKK3N0ZDo6c3RyaW5nIFN0cmluZ1By
aW50Zihjb25zdCBjaGFyICpmbXQsIC4uLikgeworICB2YV9saXN0IHZhcmFyZzsKKyAgdmFfc3Rh
cnQodmFyYXJnLCBmbXQpOworICBzdGQ6OnN0cmluZyByZXN1bHQgPSBGb3JtYXRTdHJpbmcoZm10
LCB2YXJhcmcpOworICB2YV9lbmQodmFyYXJnKTsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworc3Rk
OjpzdHJpbmcgVWludFRvU3RyaW5nKHVuc2lnbmVkIGludCB2YWx1ZSkgeworICByZXR1cm4gU3Ry
aW5nUHJpbnRmKCIldSIsIHZhbHVlKTsKK30KKworc3RkOjpzdHJpbmcgRG91YmxlVG9TdHJpbmco
ZG91YmxlIHZhbHVlKSB7CisgIHJldHVybiBTdHJpbmdQcmludGYoIiUuMTBsZiIsIHZhbHVlKTsK
K30KKworfQorCitzdGQ6OnN0cmluZyBSZXN1bHRzVG9TdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcm
IG1lYXN1cmVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBtb2RpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgdHJhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIHZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgcHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBzdWZmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcm
IHVuaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50KSB7Cisg
IC8vIDwqPlJFU1VMVCA8Z3JhcGhfbmFtZT46IDx0cmFjZV9uYW1lPj0gPHZhbHVlPiA8dW5pdHM+
CisgIC8vIDwqPlJFU1VMVCA8Z3JhcGhfbmFtZT46IDx0cmFjZV9uYW1lPj0gezxtZWFuPiwgPHN0
ZCBkZXZpYXRpb24+fSA8dW5pdHM+CisgIC8vIDwqPlJFU1VMVCA8Z3JhcGhfbmFtZT46IDx0cmFj
ZV9uYW1lPj0gWzx2YWx1ZT4sdmFsdWUsdmFsdWUsLi4uLF0gPHVuaXRzPgorICByZXR1cm4gYmFz
ZTo6U3RyaW5nUHJpbnRmKCIlc1JFU1VMVCAlcyVzOiAlcz0gJXMlcyVzICVzXG4iLAorICAgICAg
ICAgaW1wb3J0YW50ID8gIioiIDogIiIsIG1lYXN1cmVtZW50LmNfc3RyKCksIG1vZGlmaWVyLmNf
c3RyKCksCisgICAgICAgICB0cmFjZS5jX3N0cigpLCBwcmVmaXguY19zdHIoKSwgdmFsdWVzLmNf
c3RyKCksIHN1ZmZpeC5jX3N0cigpLAorICAgICAgICAgdW5pdHMuY19zdHIoKSk7Cit9CisKK3Zv
aWQgUHJpbnRSZXN1bHRzSW1wbChjb25zdCBzdGQ6OnN0cmluZyYgbWVhc3VyZW1lbnQsCisgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1vZGlmaWVyLAorICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFjZSwKKyAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBwcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIHN1ZmZpeCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgdW5pdHMsCisgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQpIHsKKyAgZmZs
dXNoKHN0ZG91dCk7CisgIHByaW50ZigiJXMiLCBSZXN1bHRzVG9TdHJpbmcobWVhc3VyZW1lbnQs
IG1vZGlmaWVyLCB0cmFjZSwgdmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHByZWZpeCwgc3VmZml4LCB1bml0cywgaW1wb3J0YW50KS5jX3N0cigpKTsKKyAgZmZsdXNoKHN0
ZG91dCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCituYW1lc3BhY2UgcGVyZl90ZXN0IHsKKwor
dm9pZCBQcmludFJlc3VsdChjb25zdCBzdGQ6OnN0cmluZyYgbWVhc3VyZW1lbnQsCisgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtb2RpZmllciwKKyAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIHRyYWNlLAorICAgICAgICAgICAgICAgICBzaXplX3QgdmFsdWUs
CisgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1bml0cywKKyAgICAgICAgICAg
ICAgICAgYm9vbCBpbXBvcnRhbnQpIHsKKyAgUHJpbnRSZXN1bHRzSW1wbChtZWFzdXJlbWVudCwK
KyAgICAgICAgICAgICAgICAgICBtb2RpZmllciwKKyAgICAgICAgICAgICAgICAgICB0cmFjZSwK
KyAgICAgICAgICAgICAgICAgICBiYXNlOjpVaW50VG9TdHJpbmcoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgaW50Pih2YWx1ZSkpLAorICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKCksCisgICAg
ICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgICB1bml0cywK
KyAgICAgICAgICAgICAgICAgICBpbXBvcnRhbnQpOworfQorCit2b2lkIFByaW50UmVzdWx0KGNv
bnN0IHN0ZDo6c3RyaW5nJiBtZWFzdXJlbWVudCwKKyAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIG1vZGlmaWVyLAorICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
dHJhY2UsCisgICAgICAgICAgICAgICAgIGRvdWJsZSB2YWx1ZSwKKyAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIHVuaXRzLAorICAgICAgICAgICAgICAgICBib29sIGltcG9ydGFu
dCkgeworICBQcmludFJlc3VsdHNJbXBsKG1lYXN1cmVtZW50LAorICAgICAgICAgICAgICAgICAg
IG1vZGlmaWVyLAorICAgICAgICAgICAgICAgICAgIHRyYWNlLAorICAgICAgICAgICAgICAgICAg
IGJhc2U6OkRvdWJsZVRvU3RyaW5nKHZhbHVlKSwKKyAgICAgICAgICAgICAgICAgICBzdGQ6OnN0
cmluZygpLAorICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKCksCisgICAgICAgICAgICAg
ICAgICAgdW5pdHMsCisgICAgICAgICAgICAgICAgICAgaW1wb3J0YW50KTsKK30KKwordm9pZCBB
cHBlbmRSZXN1bHQoc3RkOjpzdHJpbmcmIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBtZWFzdXJlbWVudCwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBtb2RpZmllciwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0
cmFjZSwKKyAgICAgICAgICAgICAgICAgIHNpemVfdCB2YWx1ZSwKKyAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiB1bml0cywKKyAgICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0
YW50KSB7CisgIG91dHB1dCArPSBSZXN1bHRzVG9TdHJpbmcoCisgICAgICBtZWFzdXJlbWVudCwK
KyAgICAgIG1vZGlmaWVyLAorICAgICAgdHJhY2UsCisgICAgICBiYXNlOjpVaW50VG9TdHJpbmco
c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pih2YWx1ZSkpLAorICAgICAgc3RkOjpzdHJpbmcoKSwK
KyAgICAgIHN0ZDo6c3RyaW5nKCksCisgICAgICB1bml0cywKKyAgICAgIGltcG9ydGFudCk7Cit9
CisKK3ZvaWQgUHJpbnRSZXN1bHQoY29uc3Qgc3RkOjpzdHJpbmcmIG1lYXN1cmVtZW50LAorICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbW9kaWZpZXIsCisgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFjZSwKKyAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIHZhbHVlLAorICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdW5p
dHMsCisgICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50KSB7CisgIFByaW50UmVzdWx0c0lt
cGwobWVhc3VyZW1lbnQsCisgICAgICAgICAgICAgICAgICAgbW9kaWZpZXIsCisgICAgICAgICAg
ICAgICAgICAgdHJhY2UsCisgICAgICAgICAgICAgICAgICAgdmFsdWUsCisgICAgICAgICAgICAg
ICAgICAgc3RkOjpzdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZygpLAor
ICAgICAgICAgICAgICAgICAgIHVuaXRzLAorICAgICAgICAgICAgICAgICAgIGltcG9ydGFudCk7
Cit9CisKK3ZvaWQgQXBwZW5kUmVzdWx0KHN0ZDo6c3RyaW5nJiBvdXRwdXQsCisgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWVhc3VyZW1lbnQsCisgICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgbW9kaWZpZXIsCisgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgdHJhY2UsCisgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
dmFsdWUsCisgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdW5pdHMsCisgICAg
ICAgICAgICAgICAgICBib29sIGltcG9ydGFudCkgeworICBvdXRwdXQgKz0gUmVzdWx0c1RvU3Ry
aW5nKG1lYXN1cmVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBv
cnRhbnQpOworfQorCit2b2lkIFByaW50UmVzdWx0TWVhbkFuZEVycm9yKGNvbnN0IHN0ZDo6c3Ry
aW5nJiBtZWFzdXJlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIG1vZGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgdHJhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBtZWFuX2FuZF9lcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIHVuaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGltcG9ydGFudCkgeworICBQcmludFJlc3VsdHNJbXBsKG1lYXN1cmVtZW50LCBtb2RpZmll
ciwgdHJhY2UsIG1lYW5fYW5kX2Vycm9yLAorICAgICAgICAgICAgICAgICAgICJ7IiwgIn0iLCB1
bml0cywgaW1wb3J0YW50KTsKK30KKwordm9pZCBBcHBlbmRSZXN1bHRNZWFuQW5kRXJyb3Ioc3Rk
OjpzdHJpbmcmIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBtZWFzdXJlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBtb2RpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiBtZWFuX2FuZF9lcnJvciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1bml0cywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaW1wb3J0YW50KSB7CisgIG91dHB1dCArPSBSZXN1bHRzVG9TdHJpbmco
bWVhc3VyZW1lbnQsIG1vZGlmaWVyLCB0cmFjZSwgbWVhbl9hbmRfZXJyb3IsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInsiLCAifSIsIHVuaXRzLCBpbXBvcnRhbnQpOworfQorCit2b2lk
IFByaW50UmVzdWx0TGlzdChjb25zdCBzdGQ6OnN0cmluZyYgbWVhc3VyZW1lbnQsCisgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbW9kaWZpZXIsCisgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdHJhY2UsCisgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgdmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIHVuaXRzLAorICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQpIHsK
KyAgUHJpbnRSZXN1bHRzSW1wbChtZWFzdXJlbWVudCwgbW9kaWZpZXIsIHRyYWNlLCB2YWx1ZXMs
CisgICAgICAgICAgICAgICAgICAgIlsiLCAiXSIsIHVuaXRzLCBpbXBvcnRhbnQpOworfQorCit2
b2lkIEFwcGVuZFJlc3VsdExpc3Qoc3RkOjpzdHJpbmcmIG91dHB1dCwKKyAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWVhc3VyZW1lbnQsCisgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1vZGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgdmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiB1bml0cywKKyAgICAgICAgICAgICAgICAgICAgICBib29sIGltcG9ydGFudCkgeworICBv
dXRwdXQgKz0gUmVzdWx0c1RvU3RyaW5nKG1lYXN1cmVtZW50LCBtb2RpZmllciwgdHJhY2UsIHZh
bHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWyIsICJdIiwgdW5pdHMsIGltcG9y
dGFudCk7Cit9CisKK3ZvaWQgUHJpbnRTeXN0ZW1Db21taXRDaGFyZ2UoY29uc3Qgc3RkOjpzdHJp
bmcmIHRlc3RfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNoYXJn
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQpIHsKKyAgUHJp
bnRTeXN0ZW1Db21taXRDaGFyZ2Uoc3Rkb3V0LCB0ZXN0X25hbWUsIGNoYXJnZSwgaW1wb3J0YW50
KTsKK30KKwordm9pZCBQcmludFN5c3RlbUNvbW1pdENoYXJnZShGSUxFKiB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0X25hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjaGFyZ2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50KSB7CisgIGZwcmludGYodGFyZ2V0LCAiJXMi
LCBTeXN0ZW1Db21taXRDaGFyZ2VUb1N0cmluZyh0ZXN0X25hbWUsIGNoYXJnZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGFudCkuY19z
dHIoKSk7Cit9CisKK3N0ZDo6c3RyaW5nIFN5c3RlbUNvbW1pdENoYXJnZVRvU3RyaW5nKGNvbnN0
IHN0ZDo6c3RyaW5nJiB0ZXN0X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgY2hhcmdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBpbXBvcnRhbnQpIHsKKyAgc3RkOjpzdHJpbmcgdHJhY2VfbmFtZSh0ZXN0X25h
bWUpOworICBzdGQ6OnN0cmluZyBvdXRwdXQ7CisgIEFwcGVuZFJlc3VsdChvdXRwdXQsCisgICAg
ICAgICAgICAgICAiY29tbWl0X2NoYXJnZSIsCisgICAgICAgICAgICAgICBzdGQ6OnN0cmluZygp
LAorICAgICAgICAgICAgICAgImNjIiArIHRyYWNlX25hbWUsCisgICAgICAgICAgICAgICBjaGFy
Z2UsCisgICAgICAgICAgICAgICAia2IiLAorICAgICAgICAgICAgICAgaW1wb3J0YW50KTsKKyAg
cmV0dXJuIG91dHB1dDsKK30KKworfSAgLy8gbmFtZXNwYWNlIHBlcmZfdGVzdApJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvdGhpcmRfcGFydHkvcGVy
Zi9wZXJmX3Rlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvcGVyZl90ZXN0cy90aGlyZF9wYXJ0eS9wZXJmL3BlcmZfdGVzdC5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL3RoaXJk
X3BhcnR5L3BlcmYvcGVyZl90ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTYgQEAK
Ky8vIENvcHlyaWdodCAyMDEzIFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKwor
I2lmbmRlZiBURVNUSU5HX1BFUkZfUEVSRl9URVNUX0hfCisjZGVmaW5lIFRFU1RJTkdfUEVSRl9Q
RVJGX1RFU1RfSF8KKworI2luY2x1ZGUgPHN0cmluZz4KKworbmFtZXNwYWNlIHBlcmZfdGVzdCB7
CisKKy8vIFByaW50cyBudW1lcmljYWwgaW5mb3JtYXRpb24gdG8gc3Rkb3V0IGluIGEgY29udHJv
bGxlZCBmb3JtYXQsIGZvcgorLy8gcG9zdC1wcm9jZXNzaW5nLiB8bWVhc3VyZW1lbnR8IGlzIGEg
ZGVzY3JpcHRpb24gb2YgdGhlIHF1YW50aXR5IGJlaW5nCisvLyBtZWFzdXJlZCwgZS5nLiAidm1f
cGVhayI7IHxtb2RpZmllcnwgaXMgcHJvdmlkZWQgYXMgYSBjb252ZW5pZW5jZSBhbmQKKy8vIHdp
bGwgYmUgYXBwZW5kZWQgZGlyZWN0bHkgdG8gdGhlIG5hbWUgb2YgdGhlIHxtZWFzdXJlbWVudHws
IGUuZy4KKy8vICJfYnJvd3NlciI7IHx0cmFjZXwgaXMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgcGFy
dGljdWxhciBkYXRhIHBvaW50LCBlLmcuCisvLyAicmVmZXJlbmNlIjsgfHZhbHVlfCBpcyB0aGUg
bWVhc3VyZWQgdmFsdWU7IGFuZCB8dW5pdHN8IGlzIGEgZGVzY3JpcHRpb24KKy8vIG9mIHRoZSB1
bml0cyBvZiBtZWFzdXJlLCBlLmcuICJieXRlcyIuIElmIHxpbXBvcnRhbnR8IGlzIHRydWUsIHRo
ZSBvdXRwdXQKKy8vIGxpbmUgd2lsbCBiZSBzcGVjaWFsbHkgbWFya2VkLCB0byBub3RpZnkgdGhl
IHBvc3QtcHJvY2Vzc29yLiBUaGUgc3RyaW5ncworLy8gbWF5IGJlIGVtcHR5LiAgVGhleSBzaG91
bGQgbm90IGNvbnRhaW4gYW55IGNvbG9ucyAoOikgb3IgZXF1YWxzIHNpZ25zICg9KS4KKy8vIEEg
dHlwaWNhbCBwb3N0LXByb2Nlc3Npbmcgc3RlcCB3b3VsZCBiZSB0byBwcm9kdWNlIGdyYXBocyBv
ZiB0aGUgZGF0YQorLy8gcHJvZHVjZWQgZm9yIHZhcmlvdXMgYnVpbGRzLCB1c2luZyB0aGUgY29t
YmluZWQgfG1lYXN1cmVtZW50fCArIHxtb2RpZmllcnwKKy8vIHN0cmluZyB0byBzcGVjaWZ5IGEg
cGFydGljdWxhciBncmFwaCBhbmQgdGhlIHx0cmFjZXwgdG8gaWRlbnRpZnkgYSB0cmFjZQorLy8g
KGkuZS4sIGRhdGEgc2VyaWVzKSBvbiB0aGF0IGdyYXBoLgordm9pZCBQcmludFJlc3VsdChjb25z
dCBzdGQ6OnN0cmluZyYgbWVhc3VyZW1lbnQsCisgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBtb2RpZmllciwKKyAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHRy
YWNlLAorICAgICAgICAgICAgICAgICBzaXplX3QgdmFsdWUsCisgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiB1bml0cywKKyAgICAgICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQp
Owordm9pZCBQcmludFJlc3VsdChjb25zdCBzdGQ6OnN0cmluZyYgbWVhc3VyZW1lbnQsCisgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtb2RpZmllciwKKyAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIHRyYWNlLAorICAgICAgICAgICAgICAgICBkb3VibGUgdmFs
dWUsCisgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1bml0cywKKyAgICAgICAg
ICAgICAgICAgYm9vbCBpbXBvcnRhbnQpOworCit2b2lkIEFwcGVuZFJlc3VsdChzdGQ6OnN0cmlu
ZyYgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1lYXN1cmVt
ZW50LAorICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1vZGlmaWVyLAorICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHRyYWNlLAorICAgICAgICAgICAgICAg
ICAgc2l6ZV90IHZhbHVlLAorICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVu
aXRzLAorICAgICAgICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQpOworCisvLyBMaWtlIHRoZSBh
Ym92ZSB2ZXJzaW9uIG9mIFByaW50UmVzdWx0KCksIGJ1dCB0YWtlcyBhIHN0ZDo6c3RyaW5nIHZh
bHVlCisvLyBpbnN0ZWFkIG9mIGEgc2l6ZV90Lgordm9pZCBQcmludFJlc3VsdChjb25zdCBzdGQ6
OnN0cmluZyYgbWVhc3VyZW1lbnQsCisgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBtb2RpZmllciwKKyAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHRyYWNlLAor
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUsCisgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1bml0cywKKyAgICAgICAgICAgICAgICAgYm9vbCBpbXBv
cnRhbnQpOworCit2b2lkIEFwcGVuZFJlc3VsdChzdGQ6OnN0cmluZyYgb3V0cHV0LAorICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1lYXN1cmVtZW50LAorICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1vZGlmaWVyLAorICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIHRyYWNlLAorICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIHZhbHVlLAorICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVuaXRzLAor
ICAgICAgICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQpOworCisvLyBMaWtlIFByaW50UmVzdWx0
KCksIGJ1dCBwcmludHMgYSAobWVhbiwgc3RhbmRhcmQgZGV2aWF0aW9uKSByZXN1bHQgcGFpci4K
Ky8vIFRoZSB8PHZhbHVlcz58IHNob3VsZCBiZSB0d28gY29tbWEtc2VwYXJhdGVkIG51bWJlcnMs
IHRoZSBtZWFuIGFuZAorLy8gc3RhbmRhcmQgZGV2aWF0aW9uIChvciBvdGhlciBlcnJvciBtZXRy
aWMpIG9mIHRoZSBtZWFzdXJlbWVudC4KK3ZvaWQgUHJpbnRSZXN1bHRNZWFuQW5kRXJyb3IoY29u
c3Qgc3RkOjpzdHJpbmcmIG1lYXN1cmVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgbW9kaWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1lYW5fYW5kX2Vycm9yLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdW5pdHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaW1wb3J0YW50KTsKKwordm9pZCBBcHBlbmRSZXN1bHRNZWFuQW5kRXJy
b3Ioc3RkOjpzdHJpbmcmIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBtZWFzdXJlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtb2RpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZWFuX2FuZF9lcnJvciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1bml0cywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50KTsKKworLy8gTGlrZSBQcmludFJlc3VsdCgp
LCBidXQgcHJpbnRzIGFuIGVudGlyZSBsaXN0IG9mIHJlc3VsdHMuIFRoZSB8dmFsdWVzfAorLy8g
d2lsbCBnZW5lcmFsbHkgYmUgYSBsaXN0IG9mIGNvbW1hLXNlcGFyYXRlZCBudW1iZXJzLiBBIHR5
cGljYWwKKy8vIHBvc3QtcHJvY2Vzc2luZyBzdGVwIG1pZ2h0IHByb2R1Y2UgcGxvdHMgb2YgdGhl
aXIgbWVhbiBhbmQgc3RhbmRhcmQKKy8vIGRldmlhdGlvbi4KK3ZvaWQgUHJpbnRSZXN1bHRMaXN0
KGNvbnN0IHN0ZDo6c3RyaW5nJiBtZWFzdXJlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBtb2RpZmllciwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiB0cmFjZSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiB2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdW5pdHMs
CisgICAgICAgICAgICAgICAgICAgICBib29sIGltcG9ydGFudCk7CisKK3ZvaWQgQXBwZW5kUmVz
dWx0TGlzdChzdGQ6OnN0cmluZyYgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBtZWFzdXJlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgbW9kaWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIHRyYWNlLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2
YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVuaXRzLAor
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50KTsKKworLy8gUHJpbnRzIG1lbW9y
eSBjb21taXQgY2hhcmdlIHN0YXRzIGZvciB1c2UgYnkgcGVyZiBncmFwaHMuCit2b2lkIFByaW50
U3lzdGVtQ29tbWl0Q2hhcmdlKGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0X25hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjaGFyZ2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaW1wb3J0YW50KTsKKwordm9pZCBQcmludFN5c3RlbUNvbW1pdENoYXJn
ZShGSUxFKiB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiB0ZXN0X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBj
aGFyZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50KTsKKwor
c3RkOjpzdHJpbmcgU3lzdGVtQ29tbWl0Q2hhcmdlVG9TdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcm
IHRlc3RfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBjaGFyZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlt
cG9ydGFudCk7CisKK30gIC8vIG5hbWVzcGFjZSBwZXJmX3Rlc3QKKworI2VuZGlmICAvLyBURVNU
SU5HX1BFUkZfUEVSRl9URVNUX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL01vY2tEaWFnbm9zdGljcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvTW9j
a0RpYWdub3N0aWNzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9Nb2NrRGlhZ25vc3RpY3MuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDIwIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2lmbmRlZiBQUkVQUk9DRVNT
T1JfVEVTVFNfTU9DS19ESUFHTk9TVElDU19IXworI2RlZmluZSBQUkVQUk9DRVNTT1JfVEVTVFNf
TU9DS19ESUFHTk9TVElDU19IXworCisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKKyNpbmNsdWRl
ICJjb21waWxlci9wcmVwcm9jZXNzb3IvRGlhZ25vc3RpY3NCYXNlLmgiCisKK2NsYXNzIE1vY2tE
aWFnbm9zdGljcyA6IHB1YmxpYyBwcDo6RGlhZ25vc3RpY3MKK3sKKyAgcHVibGljOgorICAgIE1P
Q0tfTUVUSE9EMyhwcmludCwKKyAgICAgICAgdm9pZChJRCBpZCwgY29uc3QgcHA6OlNvdXJjZUxv
Y2F0aW9uJiBsb2MsIGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXh0KSk7Cit9OworCisjZW5kaWYgIC8v
IFBSRVBST0NFU1NPUl9URVNUU19NT0NLX0RJQUdOT1NUSUNTX0hfCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL01vY2tEaXJlY3RpdmVI
YW5kbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L3ByZXByb2Nlc3Nvcl90ZXN0cy9Nb2NrRGlyZWN0aXZlSGFuZGxlci5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMv
TW9ja0RpcmVjdGl2ZUhhbmRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBACisv
LworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKworI2lmbmRlZiBQUkVQUk9DRVNTT1JfVEVTVFNfTU9DS19ESVJFQ1RJVkVf
SEFORExFUl9IXworI2RlZmluZSBQUkVQUk9DRVNTT1JfVEVTVFNfTU9DS19ESVJFQ1RJVkVfSEFO
RExFUl9IXworCisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKKyNpbmNsdWRlICJjb21waWxlci9w
cmVwcm9jZXNzb3IvRGlyZWN0aXZlSGFuZGxlckJhc2UuaCIKKworY2xhc3MgTW9ja0RpcmVjdGl2
ZUhhbmRsZXIgOiBwdWJsaWMgcHA6OkRpcmVjdGl2ZUhhbmRsZXIKK3sKKyAgcHVibGljOgorICAg
IE1PQ0tfTUVUSE9EMihoYW5kbGVFcnJvciwKKyAgICAgICAgdm9pZChjb25zdCBwcDo6U291cmNl
TG9jYXRpb24mIGxvYywgY29uc3Qgc3RkOjpzdHJpbmcmIG1zZykpOworCisgICAgTU9DS19NRVRI
T0Q0KGhhbmRsZVByYWdtYSwKKyAgICAgICAgdm9pZChjb25zdCBwcDo6U291cmNlTG9jYXRpb24m
IGxvYywKKyAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKKyAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUsCisgICAgICAgICAgICAgYm9vbCBzdGRnbCkpOwor
CisgICAgTU9DS19NRVRIT0QzKGhhbmRsZUV4dGVuc2lvbiwKKyAgICAgICAgdm9pZChjb25zdCBw
cDo6U291cmNlTG9jYXRpb24mIGxvYywKKyAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
bmFtZSwKKyAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgYmVoYXZpb3IpKTsKKworICAg
IE1PQ0tfTUVUSE9EMihoYW5kbGVWZXJzaW9uLAorICAgICAgICB2b2lkKGNvbnN0IHBwOjpTb3Vy
Y2VMb2NhdGlvbiYgbG9jLCBpbnQgdmVyc2lvbikpOworfTsKKworI2VuZGlmICAvLyBQUkVQUk9D
RVNTT1JfVEVTVFNfTU9DS19ESVJFQ1RJVkVfSEFORExFUl9IXwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9QcmVwcm9jZXNzb3JUZXN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJl
cHJvY2Vzc29yX3Rlc3RzL1ByZXByb2Nlc3NvclRlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvUHJlcHJv
Y2Vzc29yVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOSBAQAorLy8KKy8vIENv
cHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisKKyNpbmNsdWRlICJQcmVwcm9jZXNzb3JUZXN0LmgiCisjaW5jbHVkZSAiY29tcGlsZXIv
cHJlcHJvY2Vzc29yL1Rva2VuLmgiCisKK3ZvaWQgUHJlcHJvY2Vzc29yVGVzdDo6cHJlcHJvY2Vz
cyhjb25zdCBjaGFyKiBpbnB1dCwgY29uc3QgY2hhciogZXhwZWN0ZWQpCit7CisgICAgQVNTRVJU
X1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZpbnB1dCwgTlVMTCkpOworCisgICAgaW50IGxp
bmUgPSAxOworICAgIHBwOjpUb2tlbiB0b2tlbjsKKyAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzdHJl
YW07CisgICAgZG8KKyAgICB7CisgICAgICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Cisg
ICAgICAgIGZvciAoOyBsaW5lIDwgdG9rZW4ubG9jYXRpb24ubGluZTsgKytsaW5lKQorICAgICAg
ICB7CisgICAgICAgICAgICBzdHJlYW0gPDwgIlxuIjsKKyAgICAgICAgfQorICAgICAgICBzdHJl
YW0gPDwgdG9rZW47CisgICAgfSB3aGlsZSAodG9rZW4udHlwZSAhPSBwcDo6VG9rZW46OkxBU1Qp
OworCisgICAgc3RkOjpzdHJpbmcgYWN0dWFsID0gc3RyZWFtLnN0cigpOworICAgIEVYUEVDVF9T
VFJFUShleHBlY3RlZCwgYWN0dWFsLmNfc3RyKCkpOworfQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9QcmVwcm9jZXNzb3JUZXN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nl
c3Nvcl90ZXN0cy9QcmVwcm9jZXNzb3JUZXN0LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9QcmVwcm9jZXNzb3JU
ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMCBAQAorLy8KKy8vIENvcHlyaWdodCAo
YykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNp
bmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisjaW5jbHVkZSAiTW9ja0RpYWdub3N0aWNzLmgiCisj
aW5jbHVkZSAiTW9ja0RpcmVjdGl2ZUhhbmRsZXIuaCIKKyNpbmNsdWRlICJjb21waWxlci9wcmVw
cm9jZXNzb3IvUHJlcHJvY2Vzc29yLmgiCisKKyNpZm5kZWYgUFJFUFJPQ0VTU09SX1RFU1RTX1BS
RVBST0NFU1NPUl9URVNUX0hfCisjZGVmaW5lIFBSRVBST0NFU1NPUl9URVNUU19QUkVQUk9DRVNT
T1JfVEVTVF9IXworCitjbGFzcyBQcmVwcm9jZXNzb3JUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIFByZXByb2Nlc3NvclRlc3QoKSA6IG1QcmVwcm9jZXNz
b3IoJm1EaWFnbm9zdGljcywgJm1EaXJlY3RpdmVIYW5kbGVyKSB7IH0KKworICAgIC8vIFByZXBy
b2Nlc3NlcyB0aGUgaW5wdXQgc3RyaW5nIGFuZCB2ZXJpZmllcyB0aGF0IGl0IG1hdGNoZXMKKyAg
ICAvLyBleHBlY3RlZCBvdXRwdXQuCisgICAgdm9pZCBwcmVwcm9jZXNzKGNvbnN0IGNoYXIqIGlu
cHV0LCBjb25zdCBjaGFyKiBleHBlY3RlZCk7CisKKyAgICBNb2NrRGlhZ25vc3RpY3MgbURpYWdu
b3N0aWNzOworICAgIE1vY2tEaXJlY3RpdmVIYW5kbGVyIG1EaXJlY3RpdmVIYW5kbGVyOworICAg
IHBwOjpQcmVwcm9jZXNzb3IgbVByZXByb2Nlc3NvcjsKK307CisKKyNlbmRpZiAgLy8gUFJFUFJP
Q0VTU09SX1RFU1RTX1BSRVBST0NFU1NPUl9URVNUX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2NoYXJfdGVzdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90
ZXN0cy9jaGFyX3Rlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvY2hhcl90ZXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDk4IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgPGFsZ29yaXRo
bT4KKyNpbmNsdWRlIDxjbGltaXRzPgorCisjaW5jbHVkZSAiUHJlcHJvY2Vzc29yVGVzdC5oIgor
I2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5oIgorCitjbGFzcyBDaGFyVGVz
dCA6IHB1YmxpYyBQcmVwcm9jZXNzb3JUZXN0LAorICAgICAgICAgICAgICAgICBwdWJsaWMgdGVz
dGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPGludD4KK3sKK307CisKK3N0YXRpYyBjb25zdCBjaGFy
IGtQdW5jdHVhdG9yc1tdID0geworICAgICcuJywgJysnLCAnLScsICcvJywgJyonLCAnJScsICc8
JywgJz4nLCAnWycsICddJywgJygnLCAnKScsICd7JywgJ30nLAorICAgICdeJywgJ3wnLCAnJics
ICd+JywgJz0nLCAnIScsICc6JywgJzsnLCAnLCcsICc/J307CitzdGF0aWMgY29uc3QgaW50IGtO
dW1QdW5jdHVhdG9ycyA9CisgICAgc2l6ZW9mKGtQdW5jdHVhdG9ycykgLyBzaXplb2Yoa1B1bmN0
dWF0b3JzWzBdKTsKKworYm9vbCBpc1B1bmN0dWF0b3IoY2hhciBjKQoreworICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBrUHVuY3R1YXRvckJlZyA9IGtQdW5jdHVhdG9yczsKKyAgICBzdGF0aWMgY29u
c3QgY2hhcioga1B1bmN0dWF0b3JFbmQgPSBrUHVuY3R1YXRvcnMgKyBrTnVtUHVuY3R1YXRvcnM7
CisgICAgcmV0dXJuIHN0ZDo6ZmluZChrUHVuY3R1YXRvckJlZywga1B1bmN0dWF0b3JFbmQsIGMp
ICE9IGtQdW5jdHVhdG9yRW5kOworfQorCitzdGF0aWMgY29uc3QgY2hhciBrV2hpdGVzcGFjZXNb
XSA9IHsnICcsICdcdCcsICdcdicsICdcZicsICdcbicsICdccid9Oworc3RhdGljIGNvbnN0IGlu
dCBrTnVtV2hpdGVzcGFjZXMgPQorICAgIHNpemVvZihrV2hpdGVzcGFjZXMpIC8gc2l6ZW9mKGtX
aGl0ZXNwYWNlc1swXSk7CisKK2Jvb2wgaXNXaGl0ZXNwYWNlKGNoYXIgYykKK3sKKyAgICBzdGF0
aWMgY29uc3QgY2hhcioga1doaXRlc3BhY2VCZWcgPSBrV2hpdGVzcGFjZXM7CisgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIGtXaGl0ZXNwYWNlRW5kID0ga1doaXRlc3BhY2VzICsga051bVdoaXRlc3Bh
Y2VzOworICAgIHJldHVybiBzdGQ6OmZpbmQoa1doaXRlc3BhY2VCZWcsIGtXaGl0ZXNwYWNlRW5k
LCBjKSAhPSBrV2hpdGVzcGFjZUVuZDsKK30KKworVEVTVF9QKENoYXJUZXN0LCBJZGVudGlmaWVk
KQoreworICAgIHN0ZDo6c3RyaW5nIHN0cigxLCBzdGF0aWNfY2FzdDxjaGFyPihHZXRQYXJhbSgp
KSk7CisgICAgY29uc3QgY2hhciogY3N0ciA9IHN0ci5jX3N0cigpOworICAgIGludCBsZW5ndGgg
PSAxOworCisgICAgLy8gTm90ZSB0aGF0IHdlIHBhc3MgdGhlIGxlbmd0aCBwYXJhbSBhcyB3ZWxs
IGJlY2F1c2UgdGhlIGludmFsaWQKKyAgICAvLyBzdHJpbmcgbWF5IGNvbnRhaW4gdGhlIG51bGwg
Y2hhcmFjdGVyLgorICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmY3N0ciwg
Jmxlbmd0aCkpOworCisgICAgaW50IGV4cGVjdGVkVHlwZSA9IHBwOjpUb2tlbjo6TEFTVDsKKyAg
ICBzdGQ6OnN0cmluZyBleHBlY3RlZFZhbHVlOworCisgICAgaWYgKHN0clswXSA9PSAnIycpCisg
ICAgeworICAgICAgICAvLyBMb25lICcjJyBpcyBpZ25vcmVkLgorICAgIH0KKyAgICBlbHNlIGlm
ICgoc3RyWzBdID09ICdfJykgfHwKKyAgICAgICAgICAgICAoKHN0clswXSA+PSAnYScpICYmIChz
dHJbMF0gPD0gJ3onKSkgfHwKKyAgICAgICAgICAgICAoKHN0clswXSA+PSAnQScpICYmIChzdHJb
MF0gPD0gJ1onKSkpCisgICAgeworICAgICAgICBleHBlY3RlZFR5cGUgPSBwcDo6VG9rZW46OklE
RU5USUZJRVI7CisgICAgICAgIGV4cGVjdGVkVmFsdWUgPSBzdHI7CisgICAgfQorICAgIGVsc2Ug
aWYgKHN0clswXSA+PSAnMCcgJiYgc3RyWzBdIDw9ICc5JykKKyAgICB7CisgICAgICAgIGV4cGVj
dGVkVHlwZSA9IHBwOjpUb2tlbjo6Q09OU1RfSU5UOworICAgICAgICBleHBlY3RlZFZhbHVlID0g
c3RyOworICAgIH0KKyAgICBlbHNlIGlmIChpc1B1bmN0dWF0b3Ioc3RyWzBdKSkKKyAgICB7Cisg
ICAgICAgIGV4cGVjdGVkVHlwZSA9IHN0clswXTsKKyAgICAgICAgZXhwZWN0ZWRWYWx1ZSA9IHN0
cjsKKyAgICB9CisgICAgZWxzZSBpZiAoaXNXaGl0ZXNwYWNlKHN0clswXSkpCisgICAgeworICAg
ICAgICAvLyBXaGl0ZXNwYWNlIGlzIGlnbm9yZWQuCisgICAgfQorICAgIGVsc2UKKyAgICB7Cisg
ICAgICAgIC8vIEV2ZXJ5dGhpbmcgZWxzZSBpcyBpbnZhbGlkLgorICAgICAgICB1c2luZyB0ZXN0
aW5nOjpfOworICAgICAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsCisgICAgICAgICAgICBw
cmludChwcDo6RGlhZ25vc3RpY3M6OlBQX0lOVkFMSURfQ0hBUkFDVEVSLCBfLCBzdHIpKTsKKyAg
ICB9CisKKyAgICBwcDo6VG9rZW4gdG9rZW47CisgICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2Vu
KTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRUeXBlLCB0b2tlbi50eXBlKTsKKyAgICBFWFBFQ1Rf
RVEoZXhwZWN0ZWRWYWx1ZSwgdG9rZW4udGV4dCk7Cit9OworCisvLyBOb3RlICsxIGZvciB0aGUg
bWF4LXZhbHVlIGluIHJhbmdlLiBJdCBpcyB0aGVyZSBiZWNhdXNlIHRoZSBtYXgtdmFsdWUKKy8v
IG5vdCBpbmNsdWRlZCBpbiB0aGUgcmFuZ2UuCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChBbGws
IENoYXJUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6UmFuZ2UoQ0hBUl9N
SU4sIENIQVJfTUFYICsgMSkpOworCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2NvbW1lbnRfdGVzdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9jb21t
ZW50X3Rlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvY29tbWVudF90ZXN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDY5IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgIlByZXByb2Nlc3Nv
clRlc3QuaCIKKyNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uaCIKKworY2xh
c3MgQ29tbWVudFRlc3QgOiBwdWJsaWMgUHJlcHJvY2Vzc29yVGVzdCwKKyAgICAgICAgICAgICAg
ICAgICAgcHVibGljIHRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxjb25zdCBjaGFyKj4KK3sK
K307CisKK1RFU1RfUChDb21tZW50VGVzdCwgQ29tbWVudElnbm9yZWQpCit7CisgICAgY29uc3Qg
Y2hhciogc3RyID0gR2V0UGFyYW0oKTsKKworICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3Iu
aW5pdCgxLCAmc3RyLCAwKSk7CisKKyAgICBwcDo6VG9rZW4gdG9rZW47CisgICAgbVByZXByb2Nl
c3Nvci5sZXgoJnRva2VuKTsKKyAgICBFWFBFQ1RfRVEocHA6OlRva2VuOjpMQVNULCB0b2tlbi50
eXBlKTsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoTGluZUNvbW1lbnQsIENvbW1lbnRU
ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6VmFsdWVzKCIvL2Zvb1xuIiwg
Ly8gV2l0aCBuZXdsaW5lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICIvL2ZvbyIsICAgLy8gV2l0aG91dCBuZXdsaW5lLgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIvLyoqLyIsICAgLy8gTmVzdGVkIGJsb2NrIGNvbW1lbnQuCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8vLy8iLCAgICAvLyBOZXN0ZWQg
bGluZSBjb21tZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIv
L1wiIikpOyAgLy8gSW52YWxpZCBjaGFyYWN0ZXIuICAKKworSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AoQmxvY2tDb21tZW50LCBDb21tZW50VGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3Rpbmc6OlZhbHVlcygiLypmb28qLyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIi8qZm9vXG4qLyIsIC8vIFdpdGggbmV3bGluZS4KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiLyovLyovIiwgICAgLy8gTmVzdGVkIGxpbmUgY29tbWVu
dC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLyovKiovIiwgICAg
Ly8gTmVzdGVkIGJsb2NrIGNvbW1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIi8qKiovIiwgICAgIC8vIFdpdGggbG9uZSAnKicuCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIi8qXCIqLyIpKTsgIC8vIEludmFsaWQgY2hhcmFjdGVy
LgorCitjbGFzcyBCbG9ja0NvbW1lbnRUZXN0IDogcHVibGljIFByZXByb2Nlc3NvclRlc3QKK3sK
K307CisKK1RFU1RfRihCbG9ja0NvbW1lbnRUZXN0LCBDb21tZW50UmVwbGFjZWRXaXRoU3BhY2Up
Cit7CisgICAgY29uc3QgY2hhciogc3RyID0gIi8qZm9vKi9iYXIiOworCisgICAgQVNTRVJUX1RS
VUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZzdHIsIDApKTsKKworICAgIHBwOjpUb2tlbiB0b2tl
bjsKKyAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOworICAgIEVYUEVDVF9FUShwcDo6VG9r
ZW46OklERU5USUZJRVIsIHRva2VuLnR5cGUpOworICAgIEVYUEVDVF9FUSgiYmFyIiwgdG9rZW4u
dGV4dCk7CisgICAgRVhQRUNUX1RSVUUodG9rZW4uaGFzTGVhZGluZ1NwYWNlKCkpOworfQorCitU
RVNUX0YoQmxvY2tDb21tZW50VGVzdCwgVW50ZXJtaW5hdGVkQ29tbWVudCkKK3sKKyAgICBjb25z
dCBjaGFyKiBzdHIgPSAiLypmb28iOworCisgICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5p
bml0KDEsICZzdHIsIDApKTsKKworICAgIHVzaW5nIHRlc3Rpbmc6Ol87CisgICAgRVhQRUNUX0NB
TEwobURpYWdub3N0aWNzLCBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX0VPRl9JTl9DT01NRU5U
LCBfLCBfKSk7CisKKyAgICBwcDo6VG9rZW4gdG9rZW47CisgICAgbVByZXByb2Nlc3Nvci5sZXgo
JnRva2VuKTsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVw
cm9jZXNzb3JfdGVzdHMvZGVmaW5lX3Rlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvZGVmaW5lX3Rlc3QuY3Bw
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVw
cm9jZXNzb3JfdGVzdHMvZGVmaW5lX3Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
OTU3IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgIlByZXByb2Nlc3NvclRlc3QuaCIKKyNp
bmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uaCIKKwordXNpbmcgdGVzdGluZzo6
XzsKKworY2xhc3MgRGVmaW5lVGVzdCA6IHB1YmxpYyBQcmVwcm9jZXNzb3JUZXN0Cit7Cit9Owor
CitURVNUX0YoRGVmaW5lVGVzdCwgTm9uSWRlbnRpZmllcikKK3sKKyAgICBjb25zdCBjaGFyKiBp
bnB1dCA9ICIjZGVmaW5lIDIgZm9vXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiMlxuIjsK
KyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIyXG4iOworCisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAorICAgICAgICAgICAg
ICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfVU5FWFBFQ1RFRF9UT0tFTiwKKyAgICAgICAg
ICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgMSksCisgICAgICAgICAgICAgICAg
ICAgICAgIjIiKSk7CisKKyAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Cit9OworCitU
RVNUX0YoRGVmaW5lVGVzdCwgUmVkZWZpbmVQcmVkZWZpbmVkKQoreworICAgIGNvbnN0IGNoYXIq
IGlucHV0ID0gIiNkZWZpbmUgX19MSU5FX18gMTBcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJfX0xJTkVfX1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgX19GSUxFX18g
MjBcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJfX0ZJTEVfX1xuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgIiNkZWZpbmUgX19WRVJTSU9OX18gMjAwXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAiX19WRVJTSU9OX19cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5l
IEdMX0VTIDBcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJHTF9FU1xuIjsKKyAgICBjb25z
dCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIyXG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiMFxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIjEwMFxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIjFcbiI7CisKKyAgICBFWFBFQ1RfQ0FMTChtRGlh
Z25vc3RpY3MsCisgICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9NQUNS
T19QUkVERUZJTkVEX1JFREVGSU5FRCwKKyAgICAgICAgICAgICAgICAgICAgICBwcDo6U291cmNl
TG9jYXRpb24oMCwgMSksCisgICAgICAgICAgICAgICAgICAgICAgIl9fTElORV9fIikpOworICAg
IEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKKyAgICAgICAgICAgICAgICBwcmludChwcDo6RGlh
Z25vc3RpY3M6OlBQX01BQ1JPX1BSRURFRklORURfUkVERUZJTkVELAorICAgICAgICAgICAgICAg
ICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAzKSwKKyAgICAgICAgICAgICAgICAgICAgICAi
X19GSUxFX18iKSk7CisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAorICAgICAgICAgICAg
ICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfTUFDUk9fUFJFREVGSU5FRF9SRURFRklORUQs
CisgICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDUpLAorICAgICAg
ICAgICAgICAgICAgICAgICJfX1ZFUlNJT05fXyIpKTsKKyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25v
c3RpY3MsCisgICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9NQUNST19Q
UkVERUZJTkVEX1JFREVGSU5FRCwKKyAgICAgICAgICAgICAgICAgICAgICBwcDo6U291cmNlTG9j
YXRpb24oMCwgNyksCisgICAgICAgICAgICAgICAgICAgICAgIkdMX0VTIikpOworCisgICAgcHJl
cHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoRGVmaW5lVGVzdCwgUmVzZXJ2
ZWRVbmRlclNjb3JlMSkKK3sKKyAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIF9fZm9v
IGJhclxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIl9fZm9vXG4iOworICAgIGNvbnN0IGNo
YXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhclxuIjsK
KworICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQ
UF9XQVJOSU5HX01BQ1JPX05BTUVfUkVTRVJWRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgMSksICJfX2ZvbyIpKTsKKworICAgIHBy
ZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKERlZmluZVRlc3QsIFJlc2Vy
dmVkVW5kZXJTY29yZTIpCit7CisgICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBmb29f
X2JhciBiYXpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJmb29fX2JhclxuIjsKKyAgICBj
b25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJi
YXpcbiI7CisKKyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KHBwOjpEaWFnbm9z
dGljczo6UFBfV0FSTklOR19NQUNST19OQU1FX1JFU0VSVkVELAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLCAiZm9vX19iYXIiKSk7
CisKKyAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihEZWZpbmVU
ZXN0LCBSZXNlcnZlZEdMKQoreworICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgR0xf
Zm9vIGJhclxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIkdMX2Zvb1xuIjsKKyAgICBjb25z
dCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJHTF9m
b29cbiI7CisKKyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsCisgICAgICAgICAgICAgICAg
cHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9NQUNST19OQU1FX1JFU0VSVkVELAorICAgICAgICAg
ICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAiR0xfZm9vIikpOworCisgICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOworfQor
CitURVNUX0YoRGVmaW5lVGVzdCwgT2JqUmVkZWZpbmVWYWxpZCkKK3sKKyAgICBjb25zdCBjaGFy
KiBpbnB1dCA9ICIjZGVmaW5lIGZvbyAoMS0xKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAg
IiNkZWZpbmUgZm9vIC8qIHdoaXRlc3BhY2UgKi8gKDEtMSkgLyogb3RoZXIgKi8gXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAiZm9vXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0g
IlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIigxLTEpXG4iOworICAgIC8vIE5vIGVycm9yIG9yIHdhcm5pbmcuCisgICAgdXNp
bmcgdGVzdGluZzo6XzsKKyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KF8sIF8s
IF8pKS5UaW1lcygwKTsKKworICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKK30KKwor
VEVTVF9GKERlZmluZVRlc3QsIE9ialJlZGVmaW5lSW52YWxpZCkKK3sKKyAgICBjb25zdCBjaGFy
KiBpbnB1dCA9ICIjZGVmaW5lIGZvbyAoMClcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICIj
ZGVmaW5lIGZvbyAoMS0xKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgImZvb1xuIjsKKyAg
ICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIoMClcbiI7CisKKyAgICBFWFBFQ1Rf
Q0FMTChtRGlhZ25vc3RpY3MsCisgICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNz
OjpQUF9NQUNST19SRURFRklORUQsCisgICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxv
Y2F0aW9uKDAsIDIpLAorICAgICAgICAgICAgICAgICAgICAgICJmb28iKSk7CisKKyAgICBwcmVw
cm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihEZWZpbmVUZXN0LCBGdW5jUmVk
ZWZpbmVWYWxpZCkKK3sKKyAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZvbyhhKSAo
IGEgKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgZm9vKCBhICkoIC8qIHdo
aXRlc3BhY2UgKi8gYSAvKiBvdGhlciAqLyApXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAi
Zm9vKGIpXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIiggYiApXG4i
OworICAgIC8vIE5vIGVycm9yIG9yIHdhcm5pbmcuCisgICAgdXNpbmcgdGVzdGluZzo6XzsKKyAg
ICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KF8sIF8sIF8pKS5UaW1lcygwKTsKKwor
ICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKERlZmluZVRlc3Qs
IEZ1bmNSZWRlZmluZUludmFsaWQpCit7CisgICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmlu
ZSBmb28oYikgKCBhIClcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIGZvbyhi
KSAoIGIgKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgImZvbygxKVxuIjsKKyAgICBjb25z
dCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICIoIGEgKVxuIjsKKworICAgIEVYUEVDVF9DQUxM
KG1EaWFnbm9zdGljcywKKyAgICAgICAgICAgICAgICBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQ
X01BQ1JPX1JFREVGSU5FRCwKKyAgICAgICAgICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRp
b24oMCwgMiksCisgICAgICAgICAgICAgICAgICAgICAgImZvbyIpKTsKKworICAgIHByZXByb2Nl
c3MoaW5wdXQsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKERlZmluZVRlc3QsIE9iakJhc2ljKQor
eworICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9vIDFcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJmb29cbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiMVxuIjsKKworICAgIHByZXByb2Nlc3MoaW5wdXQs
IGV4cGVjdGVkKTsKK30KKworVEVTVF9GKERlZmluZVRlc3QsIE9iakVtcHR5KQoreworICAgIGNv
bnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9vXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAiZm9vXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIlxuIjsKKworICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsK
K30KKworVEVTVF9GKERlZmluZVRlc3QsIE9iakNoYWluKQoreworICAgIGNvbnN0IGNoYXIqIGlu
cHV0ID0gIiNkZWZpbmUgZm9vIDFcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5l
IGJhciBmb29cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJiYXJcbiI7CisgICAgY29uc3Qg
Y2hhciogZXhwZWN0ZWQgPSAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiMVxuIjsKKworICAgIHByZXByb2Nlc3MoaW5wdXQs
IGV4cGVjdGVkKTsKK30KKworVEVTVF9GKERlZmluZVRlc3QsIE9iakNoYWluUmV2ZXJzZSkKK3sK
KyAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGJhciBmb29cbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICIjZGVmaW5lIGZvbyAxXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAi
YmFyXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIjFcbiI7CisKKyAg
ICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihEZWZpbmVUZXN0LCBP
YmpSZWN1cnNpdmUpCit7CisgICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBmb28gYmFy
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBiYXIgYmF6XG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAiI2RlZmluZSBiYXogZm9vXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAiZm9vXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiYmFyXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAiYmF6XG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvb1xuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImJhclxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhelxu
IjsKKworICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKERlZmlu
ZVRlc3QsIE9iakNvbXBvc2l0ZUNoYWluKQoreworICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNk
ZWZpbmUgZm9vIDFcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIGJhciBhIGZv
b1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgImJhclxuIjsKKyAgICBjb25zdCBjaGFyKiBl
eHBlY3RlZCA9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJhIDFcbiI7CisKKyAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBl
Y3RlZCk7Cit9CisKK1RFU1RfRihEZWZpbmVUZXN0LCBPYmpDb21wb3NpdGVDaGFpblJldmVyc2Up
Cit7CisgICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBiYXIgYSBmb29cbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIGZvbyAxXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAiYmFyXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgImEgMVxu
IjsKKworICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKERlZmlu
ZVRlc3QsIE9iakNvbXBvc2l0ZVJlY3Vyc2l2ZSkKK3sKKyAgICBjb25zdCBjaGFyKiBpbnB1dCA9
ICIjZGVmaW5lIGZvbyBhIGJhclxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUg
YmFyIGIgYmF6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBiYXogYyBmb29c
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICJmb29cbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICJiYXJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJiYXpcbiI7CisgICAgY29uc3Qg
Y2hhciogZXhwZWN0ZWQgPSAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiYSBiIGMgZm9vXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiYiBjIGEgYmFyXG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAiYyBhIGIgYmF6XG4iOworCisgICAgcHJlcHJv
Y2VzcyhpbnB1dCwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoRGVmaW5lVGVzdCwgT2JqQ2hhaW5T
ZWxmUmVjdXJzaXZlKQoreworICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9vIGZv
b1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgYmFyIGZvb1xuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgImJhclxuIjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJmb29cbiI7CisKKyAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Cit9CisK
K1RFU1RfRihEZWZpbmVUZXN0LCBPYmplY3RMaWtlV2l0aFBhcmVucykKK3sKKyAgICBjb25zdCBj
aGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZvbyAoKTFcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJmb28oKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgYmFyICgpMlxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgImJhcigpXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVj
dGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIigpMSgpXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiKCky
KClcbiI7CisKKyAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihE
ZWZpbmVUZXN0LCBGdW5jRW1wdHkpCit7CisgICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmlu
ZSBmb28oKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgImZvbygpXG4iOworICAgIGNvbnN0
IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsK
KworICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKERlZmluZVRl
c3QsIEZ1bmNOb0FyZ3MpCit7CisgICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBmb28o
KSBiYXJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJmb28oKVxuIjsKKyAgICBjb25zdCBj
aGFyKiBleHBlY3RlZCA9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYXJcbiI7
CisKKyAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihEZWZpbmVU
ZXN0LCBGdW5jT25lQXJnVW51c2VkKQoreworICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZp
bmUgZm9vKHgpIDFcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJmb28oYmFyKVxuIjsKKyAg
ICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICIxXG4iOworCisgICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOworfQorCitURVNUX0Yo
RGVmaW5lVGVzdCwgRnVuY1R3b0FyZ3NVbnVzZWQpCit7CisgICAgY29uc3QgY2hhciogaW5wdXQg
PSAiI2RlZmluZSBmb28oeCx5KSAxXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiZm9vKGJh
cixiYXopXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIjFcbiI7CisKKyAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7
Cit9CisKK1RFU1RfRihEZWZpbmVUZXN0LCBGdW5jT25lQXJnKQoreworICAgIGNvbnN0IGNoYXIq
IGlucHV0ID0gIiNkZWZpbmUgZm9vKHgpICgoeCkrMSlcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICJmb28oYmFyKVxuIjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICIoKGJhcikrMSlcbiI7CisKKyAgICBwcmVwcm9jZXNzKGlu
cHV0LCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihEZWZpbmVUZXN0LCBGdW5jVHdvQXJncykKK3sK
KyAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZvbyh4LHkpICgoeCkqKHkpKVxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgImZvbyhiYXIsYmF6KVxuIjsKKyAgICBjb25zdCBjaGFy
KiBleHBlY3RlZCA9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIoKGJhcikqKGJh
eikpXG4iOworCisgICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOworfQorCitURVNUX0Yo
RGVmaW5lVGVzdCwgRnVuY0VtcHR5QXJncykKK3sKKyAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIj
ZGVmaW5lIHplcm8oKSBwYXNzXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBv
bmUoeCkgcGFzc1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgdHdvKHgseSkg
cGFzc1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgInplcm8oKVxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgIm9uZSgpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAidHdvKCwpXG4i
OworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInBhc3NcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNz
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc1xuIjsKKworICAgIHByZXByb2Nl
c3MoaW5wdXQsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKERlZmluZVRlc3QsIEZ1bmNNYWNyb0Fz
UGFyYW0pCit7CisgICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSB4IDBcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIGZvbyh4KSB4XG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAiZm9vKDEpXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IjFcbiI7CisKKyAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihE
ZWZpbmVUZXN0LCBGdW5jT25lQXJnTXVsdGkpCit7CisgICAgY29uc3QgY2hhciogaW5wdXQgPSAi
I2RlZmluZSBmb28oeCkgKHgpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiZm9vKHRoaXMg
aXMgYSBtdWx0aS13b3JkIGFyZ3VtZW50KVxuIjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9
ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIodGhpcyBpcyBhIG11bHRpLXdvcmQg
YXJndW1lbnQpXG4iOworCisgICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOworfQorCitU
RVNUX0YoRGVmaW5lVGVzdCwgRnVuY1R3b0FyZ3NNdWx0aSkKK3sKKyAgICBjb25zdCBjaGFyKiBp
bnB1dCA9ICIjZGVmaW5lIGZvbyh4LHkpIHgsdHdvIGZpc2gscmVkIGZpc2gseVxuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgImZvbyhvbmUgZmlzaCwgYmx1ZSBmaXNoKVxuIjsKKyAgICBjb25z
dCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJvbmUg
ZmlzaCx0d28gZmlzaCxyZWQgZmlzaCxibHVlIGZpc2hcbiI7CisKKyAgICBwcmVwcm9jZXNzKGlu
cHV0LCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihEZWZpbmVUZXN0LCBGdW5jQ29tcG9zZSkKK3sK
KyAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGJhcih4KSAoMSsoeCkpXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBmb28oeSkgKDIqKHkpKVxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgImZvbyhiYXIoMykpXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVk
ID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIigyKigoMSsoMykpKSlcbiI7CisKKyAgICBwcmVwcm9jZXNzKGlucHV0LCBl
eHBlY3RlZCk7Cit9CisKK1RFU1RfRihEZWZpbmVUZXN0LCBGdW5jQXJnV2l0aFBhcmVucykKK3sK
KyAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZvbyh4KSAoeClcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICJmb28oYXJndW1lbnQod2l0aCBwYXJlbnMpIEZUVylcbiI7CisgICAg
Y29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAi
KGFyZ3VtZW50KHdpdGggcGFyZW5zKSBGVFcpXG4iOworCisgICAgcHJlcHJvY2VzcyhpbnB1dCwg
ZXhwZWN0ZWQpOworfQorCitURVNUX0YoRGVmaW5lVGVzdCwgRnVuY01hY3JvQXNOb25NYWNybykK
K3sKKyAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZvbyhiYXIpIGJhclxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgImZvbyBiYXJcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0
ZWQgPSAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9vIGJhclxuIjsKKworICAg
IHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKERlZmluZVRlc3QsIEZ1
bmNFeHRyYU5ld2xpbmVzKQoreworICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9v
KGEpIChhKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgImZvb1xuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgIihcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICIxXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAiKVxuIjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIoMSlcbiI7CisKKyAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7
Cit9CisKK1RFU1RfRihEZWZpbmVUZXN0LCBDaGFpbk9ialRvRnVuYykKK3sKKyAgICBjb25zdCBj
aGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZvbygpIHBhc3NcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICIjZGVmaW5lIGJhciBmb28oKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgImJhclxu
IjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzXG4iOworCisgICAg
cHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoRGVmaW5lVGVzdCwgQ2hh
aW5PYmpUb05vbkZ1bmMpCit7CisgICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBwYXNz
KCkgZmFpbFxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgYmFyIHBhc3NcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICJiYXJcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0
ZWQgPSAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAicGFzc1xuIjsKKworICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVk
KTsKK30KKworVEVTVF9GKERlZmluZVRlc3QsIENoYWluT2JqVG9GdW5jV2l0aEFyZ3MpCit7Cisg
ICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBmb28oZmFpbCkgZmFpbFxuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgYmFyIGZvbyhwYXNzKVxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgImJhclxuIjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJwYXNzXG4iOworCisgICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOworfQorCitURVNU
X0YoRGVmaW5lVGVzdCwgQ2hhaW5PYmpUb0Z1bmNDb21wb3NlKQoreworICAgIGNvbnN0IGNoYXIq
IGlucHV0ID0gIiNkZWZpbmUgYmF6KGZhaWwpIGZhaWxcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICIjZGVmaW5lIGJhcihmYWlsKSBmYWlsXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAi
I2RlZmluZSBmb28gYmFyKGJheihwYXNzKSlcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJm
b29cbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAicGFzc1xuIjsKKworICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4
cGVjdGVkKTsKK30KKworVEVTVF9GKERlZmluZVRlc3QsIENoYWluT2JqVG9GdW5jUGFyZW5zSW5U
ZXh0MSkKK3sKKyAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZhaWwoKSBwYXNzXG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBmb28gZmFpbFxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgImZvbygpXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgInBhc3NcbiI7CisKKyAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Cit9CisK
K1RFU1RfRihEZWZpbmVUZXN0LCBDaGFpbk9ialRvRnVuY1BhcmVuc0luVGV4dDIpCit7CisgICAg
Y29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBiYXIgd2l0aCxlbWJlZGRlZCxjb21tYXNcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIGZ1bmMoeCkgcGFzc1xuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgZm9vIGZ1bmNcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICJmb28oYmFyKVxuIjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzXG4iOworCisgICAgcHJlcHJv
Y2VzcyhpbnB1dCwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoRGVmaW5lVGVzdCwgQ2hhaW5PYmpU
b0Z1bmNNdWx0aUxldmVsKQoreworICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9v
KHgpIHBhc3NcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIGJhciBmb29cbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIGJheiBiYXJcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICIjZGVmaW5lIGpvZSBiYXpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJqb2UgKGZhaWwpXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgInBhc3NcbiI7CisKKyAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Cit9CisK
K1RFU1RfRihEZWZpbmVUZXN0LCBPYmpUb0Z1bmNSZWN1cnNpdmUpCit7CisgICAgY29uc3QgY2hh
ciogaW5wdXQgPSAiI2RlZmluZSBBKGEsYikgQihhLGIpXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAiI2RlZmluZSBDIEEoMCxDKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIkNcbiI7
CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiQigwLEMpXG4iOworCisgICAg
cHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoRGVmaW5lVGVzdCwgQ2hh
aW5GdW5jVG9GdW5jQ29tcG9zZSkKK3sKKyAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5l
IGJheihmYWlsKSBmYWlsXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBiYXIo
ZmFpbCkgZmFpbFxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgZm9vKCkgYmFy
KGJheihwYXNzKSlcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJmb28oKVxuIjsKKyAgICBj
b25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJwYXNzXG4iOworCisgICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOworfQor
CitURVNUX0YoRGVmaW5lVGVzdCwgRnVuY1NlbGZSZWN1cnNpdmUpCit7CisgICAgY29uc3QgY2hh
ciogaW5wdXQgPSAiI2RlZmluZSBmb28oYSkgZm9vKDIqKGEpKVxuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgImZvbygzKVxuIjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJmb28oMiooMykpXG4iOworCisgICAgcHJlcHJvY2Vz
cyhpbnB1dCwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoRGVmaW5lVGVzdCwgRnVuY1NlbGZDb21w
b3NlKQoreworICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9vKGEpIGZvbygyKihh
KSlcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJmb28oZm9vKDMpKVxuIjsKKyAgICBjb25z
dCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb28o
MiooZm9vKDIqKDMpKSkpXG4iOworCisgICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwor
fQorCitURVNUX0YoRGVmaW5lVGVzdCwgRnVuY1NlbGZDb21wb3NlTm9uRnVuYykKK3sKKyAgICBj
b25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZvbyhiYXIpIGJhclxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgImZvbyhmb28pXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvb1xuIjsKKworICAgIHByZXByb2Nlc3Mo
aW5wdXQsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKERlZmluZVRlc3QsIEZ1bmNTZWxmQ29tcG9z
ZU5vbkZ1bmNNdWx0aVRva2VuQXJnKQoreworICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZp
bmUgZm9vKGJhcikgYmFyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiZm9vKDErZm9vKVxu
IjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICIxK2Zvb1xuIjsKKworICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKK30K
KworVEVTVF9GKERlZmluZVRlc3QsIEZpbmFsaXplVW5leHBhbmRlZE1hY3JvKQoreworICAgIGNv
bnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZXhwYW5kKHgpIGV4cGFuZCh4IG9uY2UpXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBmb28oeCkgeFxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgImZvbyhleHBhbmQoanVzdCkpXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVj
dGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImV4cGFuZChqdXN0IG9uY2UpXG4iOworCisgICAgcHJlcHJvY2Vzcyhp
bnB1dCwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoRGVmaW5lVGVzdCwgRnVuY0FyZ1dpdGhDb21t
YXMpCit7CisgICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBmb28oeCkgcGFzc1xuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgImZvbyhhcmd1bWVudCAod2l0aCxlbWJlZGRlZCwgY29t
bWFzKSAtLSBiYXopXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInBhc3NcbiI7CisKKyAgICBwcmVwcm9jZXNzKGlucHV0LCBl
eHBlY3RlZCk7Cit9CisKK1RFU1RfRihEZWZpbmVUZXN0LCBGdW5jQXJnT2JqTWFyb1dpdGhDb21t
YSkKK3sKKyAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZvbyhhKSAoYSlcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIGJhciB0d28sd29yZHNcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICJmb28oYmFyKVxuIjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9
ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIodHdvLHdvcmRzKVxuIjsKKworICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVj
dGVkKTsKK30KKworVEVTVF9GKERlZmluZVRlc3QsIEZ1bmNMZWZ0UGFyZW5Jbk1hY3JvUmlnaHRQ
YXJlbkluVGV4dCkKK3sKKyAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGJhcihhKSBh
KjJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIGZvbyBiYXIoXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAiZm9vIGIpXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVk
ID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImIqMlxuIjsKKworICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsK
K30KKworVEVTVF9GKERlZmluZVRlc3QsIFJlcGVhdGVkQXJnKQoreworICAgIGNvbnN0IGNoYXIq
IGlucHV0ID0gIiNkZWZpbmUgZG91YmxlKHgpIHggeFxuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgImRvdWJsZSgxKVxuIjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICIxIDFcbiI7CisKKyAgICBwcmVwcm9jZXNzKGlucHV0LCBl
eHBlY3RlZCk7Cit9CisKK1RFU1RfRihEZWZpbmVUZXN0LCBGdW5jTWlzc2luZ1JpZ2h0UGFyZW4p
Cit7CisgICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBmb28oeCkgKDIqKHgpKVxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgImZvbygzXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVj
dGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKworICAgIEVYUEVD
VF9DQUxMKG1EaWFnbm9zdGljcywKKyAgICAgICAgICAgICAgICBwcmludChwcDo6RGlhZ25vc3Rp
Y3M6OlBQX01BQ1JPX1VOVEVSTUlOQVRFRF9JTlZPQ0FUSU9OLAorICAgICAgICAgICAgICAgICAg
ICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAyKSwKKyAgICAgICAgICAgICAgICAgICAgICAiZm9v
IikpOworCisgICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoRGVm
aW5lVGVzdCwgRnVuY0luY29ycmVjdEFyZ0NvdW50KQoreworICAgIGNvbnN0IGNoYXIqIGlucHV0
ID0gIiNkZWZpbmUgZm9vKHgseSkgKCh4KSsoeSkpXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAiZm9vKClcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJmb28oMSlcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICJmb28oMSwyLDMpXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVk
ID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKworICAg
IEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKKyAgICAgICAgICAgICAgICBwcmludChwcDo6RGlh
Z25vc3RpY3M6OlBQX01BQ1JPX1RPT19GRVdfQVJHUywKKyAgICAgICAgICAgICAgICAgICAgICBw
cDo6U291cmNlTG9jYXRpb24oMCwgMiksCisgICAgICAgICAgICAgICAgICAgICAgImZvbyIpKTsK
KyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsCisgICAgICAgICAgICAgICAgcHJpbnQocHA6
OkRpYWdub3N0aWNzOjpQUF9NQUNST19UT09fRkVXX0FSR1MsCisgICAgICAgICAgICAgICAgICAg
ICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDMpLAorICAgICAgICAgICAgICAgICAgICAgICJmb28i
KSk7CisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAorICAgICAgICAgICAgICAgIHByaW50
KHBwOjpEaWFnbm9zdGljczo6UFBfTUFDUk9fVE9PX01BTllfQVJHUywKKyAgICAgICAgICAgICAg
ICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgNCksCisgICAgICAgICAgICAgICAgICAgICAg
ImZvbyIpKTsKKworICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKK30KKworVEVTVF9G
KERlZmluZVRlc3QsIFVuZGVmKQoreworICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUg
Zm9vIDFcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJmb29cbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICIjdW5kZWYgZm9vXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiZm9vXG4i
OworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIjFcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJmb29cbiI7CisKKyAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3Rl
ZCk7Cit9CisKK1RFU1RfRihEZWZpbmVUZXN0LCBVbmRlZlByZWRlZmluZWQpCit7CisgICAgY29u
c3QgY2hhciogaW5wdXQgPSAiI3VuZGVmIF9fTElORV9fXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAiX19MSU5FX19cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICIjdW5kZWYgX19GSUxF
X19cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJfX0ZJTEVfX1xuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgIiN1bmRlZiBfX1ZFUlNJT05fX1xuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgIl9fVkVSU0lPTl9fXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiI3VuZGVmIEdMX0VT
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiR0xfRVNcbiI7CisgICAgY29uc3QgY2hhciog
ZXhwZWN0ZWQgPSAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiMlxuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIjBc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICIxMDBcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICIxXG4iOworCisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNz
LAorICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfTUFDUk9fUFJFREVG
SU5FRF9VTkRFRklORUQsCisgICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9u
KDAsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICJfX0xJTkVfXyIpKTsKKyAgICBFWFBFQ1Rf
Q0FMTChtRGlhZ25vc3RpY3MsCisgICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNz
OjpQUF9NQUNST19QUkVERUZJTkVEX1VOREVGSU5FRCwKKyAgICAgICAgICAgICAgICAgICAgICBw
cDo6U291cmNlTG9jYXRpb24oMCwgMyksCisgICAgICAgICAgICAgICAgICAgICAgIl9fRklMRV9f
IikpOworICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKKyAgICAgICAgICAgICAgICBwcmlu
dChwcDo6RGlhZ25vc3RpY3M6OlBQX01BQ1JPX1BSRURFRklORURfVU5ERUZJTkVELAorICAgICAg
ICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCA1KSwKKyAgICAgICAgICAgICAg
ICAgICAgICAiX19WRVJTSU9OX18iKSk7CisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAor
ICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfTUFDUk9fUFJFREVGSU5F
RF9VTkRFRklORUQsCisgICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAs
IDcpLAorICAgICAgICAgICAgICAgICAgICAgICJHTF9FUyIpKTsKKworICAgIHByZXByb2Nlc3Mo
aW5wdXQsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKERlZmluZVRlc3QsIFVuZGVmUmVkZWZpbmUp
Cit7CisgICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBmb28gMVxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgImZvb1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgIiN1bmRlZiBm
b29cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJmb29cbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICIjZGVmaW5lIGZvbyAyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiZm9vXG4i
OworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIjFcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJmb29cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICIyXG4iOworCisgICAgcHJlcHJvY2VzcyhpbnB1
dCwgZXhwZWN0ZWQpOworfQorCisvLyBFeGFtcGxlIGZyb20gQzk5IHN0YW5kYXJkIHNlY3Rpb24g
Ni4xMC4zLjUgU2NvcGUgb2YgbWFjcm8gZGVmaW5pdGlvbnMKK1RFU1RfRihEZWZpbmVUZXN0LCBD
OTlFeGFtcGxlKQoreworICAgIGNvbnN0IGNoYXIqIGlucHV0ID0KKyAgICAgICAgIiNkZWZpbmUg
eCAgICAzICAgICAgICAgIFxuIgorICAgICAgICAiI2RlZmluZSBmKGEpIGYoeCAqIChhKSkgXG4i
CisgICAgICAgICIjdW5kZWYgIHggICAgICAgICAgICAgICBcbiIKKyAgICAgICAgIiNkZWZpbmUg
eCAgICAyICAgICAgICAgIFxuIgorICAgICAgICAiI2RlZmluZSBnICAgIGYgICAgICAgICAgXG4i
CisgICAgICAgICIjZGVmaW5lIHogICAgelswXSAgICAgICBcbiIKKyAgICAgICAgIiNkZWZpbmUg
aCAgICBnKH4gICAgICAgIFxuIgorICAgICAgICAiI2RlZmluZSBtKGEpIGEodykgICAgICAgXG4i
CisgICAgICAgICIjZGVmaW5lIHcgICAgMCwxICAgICAgICBcbiIKKyAgICAgICAgIiNkZWZpbmUg
dChhKSBhICAgICAgICAgIFxuIgorICAgICAgICAiI2RlZmluZSBwKCkgIGludCAgICAgICAgXG4i
CisgICAgICAgICIjZGVmaW5lIHEoeCkgeCAgICAgICAgICBcbiIKKyAgICAgICAgIiAgICAgICAg
ICAgICAgICAgICAgICAgIFxuIgorICAgICAgICAiZih5KzEpICsgZihmKHopKSAlIHQodChnKSgw
KSArIHQpKDEpO1xuIgorICAgICAgICAiZyh4KygzLDQpLXcpIHwgaCA1KSAmIG1cbiIKKyAgICAg
ICAgIiAgICAoZilebShtKTtcbiIKKyAgICAgICAgInAoKSBpW3EoKV0gPSB7IHEoMSksIDIzLCA0
LCA1LCB9O1xuIjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9IAorICAgICAgICAiXG4iCisg
ICAgICAgICJcbiIKKyAgICAgICAgIlxuIgorICAgICAgICAiXG4iCisgICAgICAgICJcbiIKKyAg
ICAgICAgIlxuIgorICAgICAgICAiXG4iCisgICAgICAgICJcbiIKKyAgICAgICAgIlxuIgorICAg
ICAgICAiXG4iCisgICAgICAgICJcbiIKKyAgICAgICAgIlxuIgorICAgICAgICAiXG4iCisgICAg
ICAgICJmKDIgKiAoeSsxKSkgKyBmKDIgKiAoZigyICogKHpbMF0pKSkpICUgZigyICogKDApKSAr
IHQoMSk7XG4iCisgICAgICAgICJmKDIgKiAoMisoMyw0KS0wLDEpKSB8IGYoMiAqICh+IDUpKSAm
XG4iCisgICAgICAgICIgZigyICogKDAsMSkpXm0oMCwxKTtcbiIKKyAgICAgICAgImludCBpW10g
PSB7IDEsIDIzLCA0LCA1LCB9O1xuIjsKKworICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVk
KTsKK30KKworVEVTVF9GKERlZmluZVRlc3QsIFByZWRlZmluZWRfR0xfRVMpCit7CisgICAgY29u
c3QgY2hhciogaW5wdXQgPSAiR0xfRVNcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAi
MVxuIjsKKworICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKERl
ZmluZVRlc3QsIFByZWRlZmluZWRfVkVSU0lPTikKK3sKKyAgICBjb25zdCBjaGFyKiBpbnB1dCA9
ICJfX1ZFUlNJT05fX1xuIjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICIxMDBcbiI7CisK
KyAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihEZWZpbmVUZXN0
LCBQcmVkZWZpbmVkX0xJTkUxKQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICJcblxuX19MSU5F
X18iOworICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCBOVUxMKSk7
CisKKyAgICBwcDo6VG9rZW4gdG9rZW47CisgICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsK
KyAgICBFWFBFQ1RfRVEocHA6OlRva2VuOjpDT05TVF9JTlQsIHRva2VuLnR5cGUpOworICAgIEVY
UEVDVF9FUSgiMyIsIHRva2VuLnRleHQpOworfQorCitURVNUX0YoRGVmaW5lVGVzdCwgUHJlZGVm
aW5lZF9MSU5FMikKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2xpbmUgMTBcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAiX19MSU5FX19cbiI7CisgICAgQVNTRVJUX1RSVUUobVByZXByb2Nl
c3Nvci5pbml0KDEsICZzdHIsIE5VTEwpKTsKKworICAgIHBwOjpUb2tlbiB0b2tlbjsKKyAgICBt
UHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOworICAgIEVYUEVDVF9FUShwcDo6VG9rZW46OkNPTlNU
X0lOVCwgdG9rZW4udHlwZSk7CisgICAgRVhQRUNUX0VRKCIxMCIsIHRva2VuLnRleHQpOworfQor
CitURVNUX0YoRGVmaW5lVGVzdCwgUHJlZGVmaW5lZF9GSUxFMSkKK3sKKyAgICBjb25zdCBjaGFy
KiBjb25zdCBzdHJbXSA9IHsiIiwgIiIsICJfX0ZJTEVfXyJ9OworICAgIEFTU0VSVF9UUlVFKG1Q
cmVwcm9jZXNzb3IuaW5pdCgzLCBzdHIsIE5VTEwpKTsKKworICAgIHBwOjpUb2tlbiB0b2tlbjsK
KyAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOworICAgIEVYUEVDVF9FUShwcDo6VG9rZW46
OkNPTlNUX0lOVCwgdG9rZW4udHlwZSk7CisgICAgRVhQRUNUX0VRKCIyIiwgdG9rZW4udGV4dCk7
Cit9CisKK1RFU1RfRihEZWZpbmVUZXN0LCBQcmVkZWZpbmVkX0ZJTEUyKQoreworICAgIGNvbnN0
IGNoYXIqIGNvbnN0IHN0cltdID0geyIjbGluZSAxMCAyMFxuIiwgIl9fRklMRV9fIn07CisgICAg
QVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDIsIHN0ciwgTlVMTCkpOworCisgICAgcHA6
OlRva2VuIHRva2VuOworICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7CisgICAgRVhQRUNU
X0VRKHBwOjpUb2tlbjo6Q09OU1RfSU5ULCB0b2tlbi50eXBlKTsKKyAgICBFWFBFQ1RfRVEoIjIx
IiwgdG9rZW4udGV4dCk7Cit9CisKKy8vIERlZmluZWQgb3BlcmF0b3IgcHJvZHVjZWQgYnkgbWFj
cm8gZXhwYW5zaW9uIHNob3VsZCBiZSBwYXJzZWQgaW5zaWRlICNpZiBkaXJlY3RpdmVzCitURVNU
X0YoRGVmaW5lVGVzdCwgRXhwYW5kZWREZWZpbmVkUGFyc2VkSW5zaWRlSWYpCit7CisgICAgY29u
c3QgY2hhciAqaW5wdXQgPQorICAgICAgICAiI2RlZmluZSBiYXIgMVxuIgorICAgICAgICAiI2Rl
ZmluZSBmb28gZGVmaW5lZChiYXIpXG4iCisgICAgICAgICIjaWYgZm9vXG4iCisgICAgICAgICJi
YXJcbiIKKyAgICAgICAgIiNlbmRpZlxuIjsKKyAgICBjb25zdCBjaGFyICpleHBlY3RlZCA9Cisg
ICAgICAgICJcbiIKKyAgICAgICAgIlxuIgorICAgICAgICAiXG4iCisgICAgICAgICIxXG4iCisg
ICAgICAgICJcbiI7CisgICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOworfQorCisvLyBE
ZWZpbmVkIG9wZXJhdG9yIHByb2R1Y2VkIGJ5IG1hY3JvIGV4cGFuc2lvbiBzaG91bGQgbm90IGJl
IHBhcnNlZCBvdXRzaWRlICNpZiBkaXJlY3RpdmVzCitURVNUX0YoRGVmaW5lVGVzdCwgRXhwYW5k
ZWREZWZpbmVkTm90UGFyc2VkT3V0c2lkZUlmKQoreworICAgIGNvbnN0IGNoYXIgKmlucHV0ID0K
KyAgICAgICAgIiNkZWZpbmUgZm9vIGRlZmluZWQoYmFyKVxuIgorICAgICAgICAiZm9vXG4iOwor
ICAgIGNvbnN0IGNoYXIgKmV4cGVjdGVkID0KKyAgICAgICAgIlxuIgorICAgICAgICAiZGVmaW5l
ZChiYXIpXG4iOworICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKK30KKworLy8gVGVz
dCB0aGF0IGxpbmUgZGlyZWN0aXZlIGV4cHJlc3Npb25zIGdpdmUgZXJyb3JzIG9uIG5lZ2F0aXZl
IG9yIHVuZGVmaW5lZCBzaGlmdHMuCitURVNUX0YoRGVmaW5lVGVzdCwgTmVnYXRpdmVTaGlmdElu
TGluZURpcmVjdGl2ZSkKK3sKKyAgICBjb25zdCBjaGFyICppbnB1dCA9CisgICAgICAgICIjbGlu
ZSAxIDw8IC0xXG4iCisgICAgICAgICIjbGluZSAxID4+IC0xXG4iCisgICAgICAgICIjbGluZSAx
IDw8IHhcbiIKKyAgICAgICAgIiNsaW5lIDEgPj4geFxuIjsKKyAgICBjb25zdCBjaGFyICpleHBl
Y3RlZCA9CisgICAgICAgICJcbiIKKyAgICAgICAgIlxuIgorICAgICAgICAiXG4iCisgICAgICAg
ICJcbiI7CisKKyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KHBwOjpEaWFnbm9z
dGljczo6UFBfVU5ERUZJTkVEX1NISUZULCBfLCBfKSkuVGltZXMoNCk7CisgICAgRVhQRUNUX0NB
TEwobURpYWdub3N0aWNzLCBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX0lOVkFMSURfTElORV9O
VU1CRVIsIF8sIF8pKS5UaW1lcygyKTsKKyAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7
Cit9CisKKy8vIFVuZGVmaW5pbmcgYSBtYWNybyBpbiBpdHMgaW52b2NhdGlvbiBwYXJhbWV0ZXJz
IHByb2R1Y2VzIGFuZCBlcnJvcgorVEVTVF9GKERlZmluZVRlc3QsIFVuZGVmaW5lSW5JbnZvY2F0
aW9uKQoreworICAgIGNvbnN0IGNoYXIgKmlucHV0ID0KKyAgICAgICAgIiNkZWZpbmUgRyhhLCBi
KSBhIGJcbiIKKyAgICAgICAgIkcoXG4iCisgICAgICAgICIjdW5kZWYgR1xuIgorICAgICAgICAi
MSwgMilcbiI7CisgICAgY29uc3QgY2hhciAqZXhwZWN0ZWQgPSAiXG5cblxuMSAyXG4iOworCisg
ICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX01B
Q1JPX1VOREVGSU5FRF9XSElMRV9JTlZPS0VELAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDMpLCBfKSk7CisKKyAgICBwcmVwcm9jZXNz
KGlucHV0LCBleHBlY3RlZCk7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2Vycm9yX3Rlc3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvZXJyb3Jf
dGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9lcnJvcl90ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDkyIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgIlByZXByb2Nlc3NvclRlc3Qu
aCIKKyNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uaCIKKworY2xhc3MgRXJy
b3JUZXN0IDogcHVibGljIFByZXByb2Nlc3NvclRlc3QKK3sKK307CisKK1RFU1RfRihFcnJvclRl
c3QsIEVtcHR5KQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjZXJyb3JcbiI7CisgICAgY29u
c3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iOworCisgICAgdXNpbmcgdGVzdGluZzo6XzsKKyAgICBF
WFBFQ1RfQ0FMTChtRGlyZWN0aXZlSGFuZGxlciwgaGFuZGxlRXJyb3IocHA6OlNvdXJjZUxvY2F0
aW9uKDAsIDEpLCAiIikpOworICAgIC8vIE5vIGVycm9yIG9yIHdhcm5pbmcuCisgICAgRVhQRUNU
X0NBTEwobURpYWdub3N0aWNzLCBwcmludChfLCBfLCBfKSkuVGltZXMoMCk7CisKKyAgICBwcmVw
cm9jZXNzKHN0ciwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoRXJyb3JUZXN0LCBPbmVUb2tlbk1l
c3NhZ2UpCit7CisgICAgY29uc3QgY2hhciogc3RyID0gIiNlcnJvciBmb29cbiI7CisgICAgY29u
c3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iOworCisgICAgdXNpbmcgdGVzdGluZzo6XzsKKyAgICBF
WFBFQ1RfQ0FMTChtRGlyZWN0aXZlSGFuZGxlciwKKyAgICAgICAgICAgICAgICBoYW5kbGVFcnJv
cihwcDo6U291cmNlTG9jYXRpb24oMCwgMSksICIgZm9vIikpOworICAgIC8vIE5vIGVycm9yIG9y
IHdhcm5pbmcuCisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmludChfLCBfLCBfKSku
VGltZXMoMCk7CisKKyAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOworfQorCitURVNUX0Yo
RXJyb3JUZXN0LCBUd29Ub2tlbk1lc3NhZ2UpCit7CisgICAgY29uc3QgY2hhciogc3RyID0gIiNl
cnJvciBmb28gYmFyXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIjsKKworICAg
IHVzaW5nIHRlc3Rpbmc6Ol87CisgICAgRVhQRUNUX0NBTEwobURpcmVjdGl2ZUhhbmRsZXIsCisg
ICAgICAgICAgICAgICAgaGFuZGxlRXJyb3IocHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLCAiIGZv
byBiYXIiKSk7CisgICAgLy8gTm8gZXJyb3Igb3Igd2FybmluZy4KKyAgICBFWFBFQ1RfQ0FMTCht
RGlhZ25vc3RpY3MsIHByaW50KF8sIF8sIF8pKS5UaW1lcygwKTsKKworICAgIHByZXByb2Nlc3Mo
c3RyLCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihFcnJvclRlc3QsIENvbW1lbnRzKQoreworICAg
IGNvbnN0IGNoYXIqIHN0ciA9ICIvKmZvbyovIgorICAgICAgICAgICAgICAgICAgICAgICIjIgor
ICAgICAgICAgICAgICAgICAgICAgICIvKmZvbyovIgorICAgICAgICAgICAgICAgICAgICAgICJl
cnJvciIKKyAgICAgICAgICAgICAgICAgICAgICAiLypmb28qLyIKKyAgICAgICAgICAgICAgICAg
ICAgICAiZm9vIgorICAgICAgICAgICAgICAgICAgICAgICIvKmZvbyovIgorICAgICAgICAgICAg
ICAgICAgICAgICJiYXIiCisgICAgICAgICAgICAgICAgICAgICAgIi8qZm9vKi8iCisgICAgICAg
ICAgICAgICAgICAgICAgIi8vZm9vIgorICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAg
Y29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iOworCisgICAgdXNpbmcgdGVzdGluZzo6XzsKKyAg
ICBFWFBFQ1RfQ0FMTChtRGlyZWN0aXZlSGFuZGxlciwKKyAgICAgICAgICAgICAgICBoYW5kbGVF
cnJvcihwcDo6U291cmNlTG9jYXRpb24oMCwgMSksICIgZm9vIGJhciIpKTsKKyAgICAvLyBObyBl
cnJvciBvciB3YXJuaW5nLgorICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQoXywg
XywgXykpLlRpbWVzKDApOworCisgICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKK30KKwor
VEVTVF9GKEVycm9yVGVzdCwgTWlzc2luZ05ld2xpbmUpCit7CisgICAgY29uc3QgY2hhciogc3Ry
ID0gIiNlcnJvciBmb28iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIiI7CisKKyAgICB1
c2luZyB0ZXN0aW5nOjpfOworICAgIC8vIERpcmVjdGl2ZSBzdWNjZXNzZnVsbHkgcGFyc2VkLgor
ICAgIEVYUEVDVF9DQUxMKG1EaXJlY3RpdmVIYW5kbGVyLAorICAgICAgICAgICAgICAgIGhhbmRs
ZUVycm9yKHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwgIiBmb28iKSk7CisgICAgLy8gRXJyb3Ig
cmVwb3J0ZWQgYWJvdXQgRU9GLgorICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQo
cHA6OkRpYWdub3N0aWNzOjpQUF9FT0ZfSU5fRElSRUNUSVZFLCBfLCBfKSk7CisKKyAgICBwcmVw
cm9jZXNzKHN0ciwgZXhwZWN0ZWQpOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9leHRlbnNpb25fdGVzdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0
cy9leHRlbnNpb25fdGVzdC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9leHRlbnNpb25fdGVzdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzYgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTIg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAi
UHJlcHJvY2Vzc29yVGVzdC5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tl
bi5oIgorCitjbGFzcyBFeHRlbnNpb25UZXN0IDogcHVibGljIFByZXByb2Nlc3NvclRlc3QKK3sK
K307CisKK1RFU1RfRihFeHRlbnNpb25UZXN0LCBWYWxpZCkKK3sKKyAgICBjb25zdCBjaGFyKiBz
dHIgPSAiI2V4dGVuc2lvbiBmb28gOiBiYXJcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQg
PSAiXG4iOworCisgICAgdXNpbmcgdGVzdGluZzo6XzsKKyAgICBFWFBFQ1RfQ0FMTChtRGlyZWN0
aXZlSGFuZGxlciwKKyAgICAgICAgICAgICAgICBoYW5kbGVFeHRlbnNpb24ocHA6OlNvdXJjZUxv
Y2F0aW9uKDAsIDEpLCAiZm9vIiwgImJhciIpKTsKKyAgICAvLyBObyBlcnJvciBvciB3YXJuaW5n
LgorICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQoXywgXywgXykpLlRpbWVzKDAp
OworCisgICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKEV4dGVuc2lv
blRlc3QsIENvbW1lbnRzKQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIvKmZvbyovIgorICAg
ICAgICAgICAgICAgICAgICAgICIjIgorICAgICAgICAgICAgICAgICAgICAgICIvKmZvbyovIgor
ICAgICAgICAgICAgICAgICAgICAgICJleHRlbnNpb24iCisgICAgICAgICAgICAgICAgICAgICAg
Ii8qZm9vKi8iCisgICAgICAgICAgICAgICAgICAgICAgImZvbyIKKyAgICAgICAgICAgICAgICAg
ICAgICAiLypmb28qLyIKKyAgICAgICAgICAgICAgICAgICAgICAiOiIKKyAgICAgICAgICAgICAg
ICAgICAgICAiLypmb28qLyIKKyAgICAgICAgICAgICAgICAgICAgICAiYmFyIgorICAgICAgICAg
ICAgICAgICAgICAgICIvKmZvbyovIgorICAgICAgICAgICAgICAgICAgICAgICIvL2ZvbyIKKyAg
ICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxu
IjsKKworICAgIHVzaW5nIHRlc3Rpbmc6Ol87CisgICAgRVhQRUNUX0NBTEwobURpcmVjdGl2ZUhh
bmRsZXIsCisgICAgICAgICAgICAgICAgaGFuZGxlRXh0ZW5zaW9uKHBwOjpTb3VyY2VMb2NhdGlv
bigwLCAxKSwgImZvbyIsICJiYXIiKSk7CisgICAgLy8gTm8gZXJyb3Igb3Igd2FybmluZy4KKyAg
ICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KF8sIF8sIF8pKS5UaW1lcygwKTsKKwor
ICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihFeHRlbnNpb25UZXN0
LCBNaXNzaW5nTmV3bGluZSkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2V4dGVuc2lvbiBm
b28gOiBiYXIiOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIiI7CisKKyAgICB1c2luZyB0
ZXN0aW5nOjpfOworICAgIC8vIERpcmVjdGl2ZSBzdWNjZXNzZnVsbHkgcGFyc2VkLgorICAgIEVY
UEVDVF9DQUxMKG1EaXJlY3RpdmVIYW5kbGVyLAorICAgICAgICAgICAgICAgIGhhbmRsZUV4dGVu
c2lvbihwcDo6U291cmNlTG9jYXRpb24oMCwgMSksICJmb28iLCAiYmFyIikpOworICAgIC8vIEVy
cm9yIHJlcG9ydGVkIGFib3V0IEVPRi4KKyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHBy
aW50KHBwOjpEaWFnbm9zdGljczo6UFBfRU9GX0lOX0RJUkVDVElWRSwgXywgXykpOworCisgICAg
cHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKEV4dGVuc2lvblRlc3QsIEV4
dGVuc2lvbkFmdGVyTm9uUHJlUHJvY2Vzc29yVG9rZW5FU1NMMSkKK3sKKyAgICBjb25zdCBjaGFy
ICpzdHIgPSAiaW50IGJheiA9IDE7XG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNleHRlbnNp
b24gZm9vIDogYmFyXG4iOworICAgIGNvbnN0IGNoYXIgKmV4cGVjdGVkID0gImludCBiYXogPSAx
O1xuXG4iOworCisgICAgdXNpbmcgdGVzdGluZzo6XzsKKyAgICAvLyBEaXJlY3RpdmUgc3VjY2Vz
c2Z1bGx5IHBhcnNlZC4KKyAgICBFWFBFQ1RfQ0FMTChtRGlyZWN0aXZlSGFuZGxlciwKKyAgICAg
ICAgaGFuZGxlRXh0ZW5zaW9uKHBwOjpTb3VyY2VMb2NhdGlvbigwLCAyKSwgImZvbyIsICJiYXIi
KSk7CisgICAgLy8gRXhwZWN0IGEgd2FybmluZyBhYm91dCBleHRlbnNpb24gcHJhZ21hcyBhZnRl
ciBub24tcHJlcHJvY2Vzc29yIHRva2Vucy4KKyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3Ms
IHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfTk9OX1BQX1RPS0VOX0JFRk9SRV9FWFRFTlNJT05f
RVNTTDEsIF8sIF8pKTsKKworICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Cit9CisKK1RF
U1RfRihFeHRlbnNpb25UZXN0LCBFeHRlbnNpb25BZnRlck5vblByZVByb2Nlc3NvclRva2VuRVNT
TDMpCit7CisgICAgY29uc3QgY2hhciAqc3RyID0gIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAg
ICAgICAgICAgICAgICAgICJpbnQgYmF6ID0gMTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAi
I2V4dGVuc2lvbiBmb28gOiBiYXJcbiI7CisgICAgY29uc3QgY2hhciAqZXhwZWN0ZWQgPSAiXG5p
bnQgYmF6ID0gMTtcblxuIjsKKworICAgIHVzaW5nIHRlc3Rpbmc6Ol87CisgICAgLy8gRGlyZWN0
aXZlIHN1Y2Nlc3NmdWxseSBwYXJzZWQuCisgICAgRVhQRUNUX0NBTEwobURpcmVjdGl2ZUhhbmRs
ZXIsCisgICAgICAgIGhhbmRsZVZlcnNpb24ocHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLCAzMDAp
KTsKKyAgICAvLyBFeHBlY3QgYSBlcnJvciBhYm91dCBleHRlbnNpb24gcHJhZ21hcyBhZnRlciBu
b24tcHJlcHJvY2Vzc29yIHRva2Vucy4KKyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHBy
aW50KHBwOjpEaWFnbm9zdGljczo6UFBfTk9OX1BQX1RPS0VOX0JFRk9SRV9FWFRFTlNJT05fRVNT
TDMsIF8sIF8pKTsKKworICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Cit9CisKK3N0cnVj
dCBFeHRlbnNpb25UZXN0UGFyYW0KK3sKKyAgICBjb25zdCBjaGFyKiBzdHI7CisgICAgcHA6OkRp
YWdub3N0aWNzOjpJRCBpZDsKK307CisKK3VzaW5nIHRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFj
ZTsKK2NsYXNzIEludmFsaWRFeHRlbnNpb25UZXN0IDogcHVibGljIEV4dGVuc2lvblRlc3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXaXRoUGFyYW1JbnRlcmZhY2U8RXh0
ZW5zaW9uVGVzdFBhcmFtPgoreworfTsKKworVEVTVF9QKEludmFsaWRFeHRlbnNpb25UZXN0LCBJ
ZGVudGlmaWVkKQoreworICAgIEV4dGVuc2lvblRlc3RQYXJhbSBwYXJhbSA9IEdldFBhcmFtKCk7
CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iOworCisgICAgdXNpbmcgdGVzdGluZzo6
XzsKKyAgICAvLyBObyBoYW5kbGVFeHRlbnNpb24gY2FsbC4KKyAgICBFWFBFQ1RfQ0FMTChtRGly
ZWN0aXZlSGFuZGxlciwgaGFuZGxlRXh0ZW5zaW9uKF8sIF8sIF8pKS5UaW1lcygwKTsKKyAgICAv
LyBJbnZhbGlkIGV4dGVuc2lvbiBkaXJlY3RpdmUgY2FsbC4KKyAgICBFWFBFQ1RfQ0FMTChtRGlh
Z25vc3RpY3MsIHByaW50KHBhcmFtLmlkLCBwcDo6U291cmNlTG9jYXRpb24oMCwgMSksIF8pKTsK
KworICAgIHByZXByb2Nlc3MocGFyYW0uc3RyLCBleHBlY3RlZCk7Cit9CisKK3N0YXRpYyBjb25z
dCBFeHRlbnNpb25UZXN0UGFyYW0ga1BhcmFtc1tdID0geworICAgIHsiI2V4dGVuc2lvblxuIiwg
cHA6OkRpYWdub3N0aWNzOjpQUF9JTlZBTElEX0VYVEVOU0lPTl9ESVJFQ1RJVkV9LAorICAgIHsi
I2V4dGVuc2lvbiAxXG4iLCBwcDo6RGlhZ25vc3RpY3M6OlBQX0lOVkFMSURfRVhURU5TSU9OX05B
TUV9LAorICAgIHsiI2V4dGVuc2lvbiBmb28gYmFyXG4iLCBwcDo6RGlhZ25vc3RpY3M6OlBQX1VO
RVhQRUNURURfVE9LRU59LAorICAgIHsiI2V4dGVuc2lvbiBmb28gOiBcbiIsIHBwOjpEaWFnbm9z
dGljczo6UFBfSU5WQUxJRF9FWFRFTlNJT05fRElSRUNUSVZFfSwKKyAgICB7IiNleHRlbnNpb24g
Zm9vIDogMVxuIiwgcHA6OkRpYWdub3N0aWNzOjpQUF9JTlZBTElEX0VYVEVOU0lPTl9CRUhBVklP
Un0sCisgICAgeyIjZXh0ZW5zaW9uIGZvbyA6IGJhciBiYXpcbiIsIHBwOjpEaWFnbm9zdGljczo6
UFBfVU5FWFBFQ1RFRF9UT0tFTn0KK307CitJTlNUQU5USUFURV9URVNUX0NBU0VfUChBbGwsIElu
dmFsaWRFeHRlbnNpb25UZXN0LCB0ZXN0aW5nOjpWYWx1ZXNJbihrUGFyYW1zKSk7CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2lkZW50
aWZpZXJfdGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9pZGVudGlmaWVyX3Rlc3QuY3BwCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVz
dHMvaWRlbnRpZmllcl90ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2MiBAQAor
Ly8KKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisKKyNpbmNsdWRlICJQcmVwcm9jZXNzb3JUZXN0LmgiCisjaW5jbHVkZSAi
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmgiCisKKyNkZWZpbmUgQ0xPU0VEX1JBTkdFKHgs
IHkpIHRlc3Rpbmc6OlJhbmdlKHgsIHN0YXRpY19jYXN0PGNoYXI+KCh5KSArIDEpKQorCitjbGFz
cyBJZGVudGlmaWVyVGVzdCA6IHB1YmxpYyBQcmVwcm9jZXNzb3JUZXN0Cit7Citwcm90ZWN0ZWQ6
CisgICAgdm9pZCBleHBlY3RJZGVudGlmaWVyKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpCisgICAg
eworICAgICAgICBjb25zdCBjaGFyKiBjc3RyID0gc3RyLmNfc3RyKCk7CisgICAgICAgIEFTU0VS
VF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmY3N0ciwgMCkpOworCisgICAgICAgIHBwOjpU
b2tlbiB0b2tlbjsKKyAgICAgICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKKyAgICAgICAg
RVhQRUNUX0VRKHBwOjpUb2tlbjo6SURFTlRJRklFUiwgdG9rZW4udHlwZSk7CisgICAgICAgIEVY
UEVDVF9FUShzdHIsIHRva2VuLnRleHQpOworICAgIH0KK307CisKK2NsYXNzIFNpbmdsZUxldHRl
cklkZW50aWZpZXJUZXN0IDogcHVibGljIElkZW50aWZpZXJUZXN0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPGNo
YXI+Cit7Cit9OworCisvLyBUaGlzIHRlc3QgY292ZXJzIGlkZW50aWZpZXIgbmFtZXMgb2YgZm9y
bSBbX2EtekEtWl0uCitURVNUX1AoU2luZ2xlTGV0dGVySWRlbnRpZmllclRlc3QsIElkZW50aWZp
ZWQpCit7CisgICAgc3RkOjpzdHJpbmcgc3RyKDEsIEdldFBhcmFtKCkpOworICAgIGV4cGVjdElk
ZW50aWZpZXIoc3RyKTsKK30KKworLy8gVGVzdCBzdHJpbmc6ICdfJworSU5TVEFOVElBVEVfVEVT
VF9DQVNFX1AoVW5kZXJzY29yZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZUxldHRl
cklkZW50aWZpZXJUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6VmFsdWVz
KCdfJykpOworCisvLyBUZXN0IHN0cmluZzogW2Etel0KK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9Q
KGFfeiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZUxldHRlcklkZW50aWZpZXJUZXN0
LAorICAgICAgICAgICAgICAgICAgICAgICAgQ0xPU0VEX1JBTkdFKCdhJywgJ3onKSk7CisKKy8v
IFRlc3Qgc3RyaW5nOiBbQS1aXQorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQV9aLAorICAgICAg
ICAgICAgICAgICAgICAgICAgU2luZ2xlTGV0dGVySWRlbnRpZmllclRlc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICBDTE9TRURfUkFOR0UoJ0EnLCAnWicpKTsKKwordHlwZWRlZiBzdGQ6OnRy
MTo6dHVwbGU8Y2hhciwgY2hhcj4gSWRlbnRpZmllclBhcmFtczsKK2NsYXNzIERvdWJsZUxldHRl
cklkZW50aWZpZXJUZXN0IDoKKyAgICBwdWJsaWMgSWRlbnRpZmllclRlc3QsCisgICAgcHVibGlj
IHRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxJZGVudGlmaWVyUGFyYW1zPgoreworfTsKKwor
Ly8gVGhpcyB0ZXN0IGNvdmVycyBpZGVudGlmaWVyIG5hbWVzIG9mIGZvcm0gW19hLXpBLVpdW19h
LXpBLVowLTldLgorVEVTVF9QKERvdWJsZUxldHRlcklkZW50aWZpZXJUZXN0LCBJZGVudGlmaWVk
KQoreworICAgIHN0ZDo6c3RyaW5nIHN0cjsKKyAgICBzdHIucHVzaF9iYWNrKHN0ZDo6dHIxOjpn
ZXQ8MD4oR2V0UGFyYW0oKSkpOworICAgIHN0ci5wdXNoX2JhY2soc3RkOjp0cjE6OmdldDwxPihH
ZXRQYXJhbSgpKSk7CisKKyAgICBleHBlY3RJZGVudGlmaWVyKHN0cik7Cit9CisKKy8vIFRlc3Qg
c3RyaW5nOiAiX18iCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChVbmRlcnNjb3JlX1VuZGVyc2Nv
cmUsCisgICAgICAgICAgICAgICAgICAgICAgICBEb3VibGVMZXR0ZXJJZGVudGlmaWVyVGVzdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OkNvbWJpbmUodGVzdGluZzo6VmFsdWVz
KCdfJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6
OlZhbHVlcygnXycpKSk7CisKKy8vIFRlc3Qgc3RyaW5nOiAiXyJbYS16XQorSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoVW5kZXJzY29yZV9hX3osCisgICAgICAgICAgICAgICAgICAgICAgICBEb3Vi
bGVMZXR0ZXJJZGVudGlmaWVyVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6
OkNvbWJpbmUodGVzdGluZzo6VmFsdWVzKCdfJyksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENMT1NFRF9SQU5HRSgnYScsICd6JykpKTsKKworLy8gVGVzdCBzdHJp
bmc6ICJfIltBLVpdCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChVbmRlcnNjb3JlX0FfWiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIERvdWJsZUxldHRlcklkZW50aWZpZXJUZXN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdGluZzo6Q29tYmluZSh0ZXN0aW5nOjpWYWx1ZXMoJ18nKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0xPU0VEX1JBTkdFKCdB
JywgJ1onKSkpOworCisvLyBUZXN0IHN0cmluZzogIl8iWzAtOV0KK0lOU1RBTlRJQVRFX1RFU1Rf
Q0FTRV9QKFVuZGVyc2NvcmVfMF85LAorICAgICAgICAgICAgICAgICAgICAgICAgRG91YmxlTGV0
dGVySWRlbnRpZmllclRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpDb21i
aW5lKHRlc3Rpbmc6OlZhbHVlcygnXycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDTE9TRURfUkFOR0UoJzAnLCAnOScpKSk7CisKKy8vIFRlc3Qgc3RyaW5nOiBb
YS16XSJfIgorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoYV96X1VuZGVyc2NvcmUsCisgICAgICAg
ICAgICAgICAgICAgICAgICBEb3VibGVMZXR0ZXJJZGVudGlmaWVyVGVzdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3Rpbmc6OkNvbWJpbmUoQ0xPU0VEX1JBTkdFKCdhJywgJ3onKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6VmFsdWVzKCdf
JykpKTsKKworLy8gVGVzdCBzdHJpbmc6IFthLXpdW2Etel0KK0lOU1RBTlRJQVRFX1RFU1RfQ0FT
RV9QKGFfel9hX3osCisgICAgICAgICAgICAgICAgICAgICAgICBEb3VibGVMZXR0ZXJJZGVudGlm
aWVyVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OkNvbWJpbmUoQ0xPU0VE
X1JBTkdFKCdhJywgJ3onKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ0xPU0VEX1JBTkdFKCdhJywgJ3onKSkpOworCisvLyBUZXN0IHN0cmluZzogW2Etel1bQS1a
XQorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoYV96X0FfWiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIERvdWJsZUxldHRlcklkZW50aWZpZXJUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
dGVzdGluZzo6Q29tYmluZShDTE9TRURfUkFOR0UoJ2EnLCAneicpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDTE9TRURfUkFOR0UoJ0EnLCAnWicpKSk7CisKKy8v
IFRlc3Qgc3RyaW5nOiBbYS16XVswLTldCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChhX3pfMF85
LAorICAgICAgICAgICAgICAgICAgICAgICAgRG91YmxlTGV0dGVySWRlbnRpZmllclRlc3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpDb21iaW5lKENMT1NFRF9SQU5HRSgnYScs
ICd6JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMT1NFRF9S
QU5HRSgnMCcsICc5JykpKTsKKworLy8gVGVzdCBzdHJpbmc6IFtBLVpdIl8iCitJTlNUQU5USUFU
RV9URVNUX0NBU0VfUChBX1pfVW5kZXJzY29yZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIERv
dWJsZUxldHRlcklkZW50aWZpZXJUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGlu
Zzo6Q29tYmluZShDTE9TRURfUkFOR0UoJ0EnLCAnWicpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpWYWx1ZXMoJ18nKSkpOworCisvLyBUZXN0IHN0
cmluZzogW0EtWl1bYS16XQorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQV9aX2FfeiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIERvdWJsZUxldHRlcklkZW50aWZpZXJUZXN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdGluZzo6Q29tYmluZShDTE9TRURfUkFOR0UoJ0EnLCAnWicpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDTE9TRURfUkFOR0UoJ2En
LCAneicpKSk7CisKKy8vIFRlc3Qgc3RyaW5nOiBbQS1aXVtBLVpdCitJTlNUQU5USUFURV9URVNU
X0NBU0VfUChBX1pfQV9aLAorICAgICAgICAgICAgICAgICAgICAgICAgRG91YmxlTGV0dGVySWRl
bnRpZmllclRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpDb21iaW5lKENM
T1NFRF9SQU5HRSgnQScsICdaJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENMT1NFRF9SQU5HRSgnQScsICdaJykpKTsKKworLy8gVGVzdCBzdHJpbmc6IFtBLVpd
WzAtOV0KK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFfWl8wXzksCisgICAgICAgICAgICAgICAg
ICAgICAgICBEb3VibGVMZXR0ZXJJZGVudGlmaWVyVGVzdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3Rpbmc6OkNvbWJpbmUoQ0xPU0VEX1JBTkdFKCdBJywgJ1onKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0xPU0VEX1JBTkdFKCcwJywgJzknKSkpOwor
CisvLyBUaGUgdGVzdHMgYWJvdmUgY292ZXIgb25lLWxldHRlciBhbmQgdmFyaW91cyBjb21iaW5h
dGlvbnMgb2YgdHdvLWxldHRlcgorLy8gaWRlbnRpZmllciBuYW1lcy4gVGhpcyB0ZXN0IGNvdmVy
cyBhbGwgY2hhcmFjdGVycyBpbiBhIHNpbmdsZSBzdHJpbmcuCitURVNUX0YoSWRlbnRpZmllclRl
c3QsIEFsbExldHRlcnMpCit7CisgICAgc3RkOjpzdHJpbmcgc3RyOworICAgIGZvciAoY2hhciBj
ID0gJ2EnOyBjIDw9ICd6JzsgKytjKQorICAgICAgICBzdHIucHVzaF9iYWNrKGMpOworCisgICAg
c3RyLnB1c2hfYmFjaygnXycpOworCisgICAgZm9yIChjaGFyIGMgPSAnQSc7IGMgPD0gJ1onOyAr
K2MpCisgICAgICAgIHN0ci5wdXNoX2JhY2soYyk7CisKKyAgICBzdHIucHVzaF9iYWNrKCdfJyk7
CisKKyAgICBmb3IgKGNoYXIgYyA9ICcwJzsgYyA8PSAnOSc7ICsrYykKKyAgICAgICAgc3RyLnB1
c2hfYmFjayhjKTsKKworICAgIGV4cGVjdElkZW50aWZpZXIoc3RyKTsKK30KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvaWZfdGVzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXBy
b2Nlc3Nvcl90ZXN0cy9pZl90ZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2lmX3Rlc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA0OCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMiBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpbmNsdWRlICJQ
cmVwcm9jZXNzb3JUZXN0LmgiCisjaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2Vu
LmgiCisKK2NsYXNzIElmVGVzdCA6IHB1YmxpYyBQcmVwcm9jZXNzb3JUZXN0Cit7Cit9OworCitU
RVNUX0YoSWZUZXN0LCBJZl8wKQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICJwYXNzXzFcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAiI2lmIDBcbiIKKyAgICAgICAgICAgICAgICAgICAgICAi
ZmFpbFxuIgorICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAicGFzc18yXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gInBhc3NfMVxu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInBhc3NfMlxuIjsKKworICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3Rl
ZCk7Cit9CisKK1RFU1RfRihJZlRlc3QsIElmXzEpCit7CisgICAgY29uc3QgY2hhciogc3RyID0g
InBhc3NfMVxuIgorICAgICAgICAgICAgICAgICAgICAgICIjaWYgMVxuIgorICAgICAgICAgICAg
ICAgICAgICAgICJwYXNzXzJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgInBhc3NfM1xuIjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3Rl
ZCA9ICJwYXNzXzFcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJwYXNzXzJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzNcbiI7CisKKyAgICBwcmVw
cm9jZXNzKHN0ciwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoSWZUZXN0LCBJZl8wX0Vsc2UpCit7
CisgICAgY29uc3QgY2hhciogc3RyID0gInBhc3NfMVxuIgorICAgICAgICAgICAgICAgICAgICAg
ICIjaWYgMFxuIgorICAgICAgICAgICAgICAgICAgICAgICJmYWlsXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgIiNlbHNlXG4iCisgICAgICAgICAgICAgICAgICAgICAgInBhc3NfMlxuIgorICAg
ICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiIKKyAgICAgICAgICAgICAgICAgICAgICAicGFz
c18zXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gInBhc3NfMVxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInBhc3NfMlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInBhc3NfM1xuIjsKKworICAgIHByZXByb2Nlc3Moc3RyLCBleHBl
Y3RlZCk7Cit9CisKK1RFU1RfRihJZlRlc3QsIElmXzFfRWxzZSkKK3sKKyAgICBjb25zdCBjaGFy
KiBzdHIgPSAicGFzc18xXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNpZiAxXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgInBhc3NfMlxuIgorICAgICAgICAgICAgICAgICAgICAgICIjZWxz
ZVxuIgorICAgICAgICAgICAgICAgICAgICAgICJmYWlsXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgIiNlbmRpZlxuIgorICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzNcbiI7CisgICAgY29u
c3QgY2hhciogZXhwZWN0ZWQgPSAicGFzc18xXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc18yXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAicGFzc18zXG4iOworCisgICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKK30KKworVEVT
VF9GKElmVGVzdCwgSWZfMF9FbGlmKQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICJwYXNzXzFc
biIKKyAgICAgICAgICAgICAgICAgICAgICAiI2lmIDBcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAiZmFpbF8xXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNlbGlmIDBcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAiZmFpbF8yXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNlbGlmIDFc
biIKKyAgICAgICAgICAgICAgICAgICAgICAicGFzc18yXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgIiNlbGlmIDFcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiZmFpbF8zXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgIiNlbHNlXG4iCisgICAgICAgICAgICAgICAgICAgICAgImZhaWxfNFxu
IgorICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAicGFzc18zXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gInBhc3NfMVxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInBhc3NfMlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3Nf
M1xuIjsKKworICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihJZlRl
c3QsIElmXzFfRWxpZikKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAicGFzc18xXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgIiNpZiAxXG4iCisgICAgICAgICAgICAgICAgICAgICAgInBhc3Nf
MlxuIgorICAgICAgICAgICAgICAgICAgICAgICIjZWxpZiAwXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgImZhaWxfMVxuIgorICAgICAgICAgICAgICAgICAgICAgICIjZWxpZiAxXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgImZhaWxfMlxuIgorICAgICAgICAgICAgICAgICAgICAgICIjZWxz
ZVxuIgorICAgICAgICAgICAgICAgICAgICAgICJmYWlsXzRcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAiI2VuZGlmXG4iCisgICAgICAgICAgICAgICAgICAgICAgInBhc3NfM1xuIjsKKyAgICBj
b25zdCBjaGFyKiBleHBlY3RlZCA9ICJwYXNzXzFcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzJcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzNcbiI7CisKKyAgICBwcmVwcm9jZXNzKHN0ciwg
ZXhwZWN0ZWQpOworfQorCitURVNUX0YoSWZUZXN0LCBJZl9FbGlmX0Vsc2UpCit7CisgICAgY29u
c3QgY2hhciogc3RyID0gInBhc3NfMVxuIgorICAgICAgICAgICAgICAgICAgICAgICIjaWYgMFxu
IgorICAgICAgICAgICAgICAgICAgICAgICJmYWlsXzFcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAiI2VsaWYgMFxuIgorICAgICAgICAgICAgICAgICAgICAgICJmYWlsXzJcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAiI2VsaWYgMFxuIgorICAgICAgICAgICAgICAgICAgICAgICJmYWlsXzNc
biIKKyAgICAgICAgICAgICAgICAgICAgICAiI2Vsc2VcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAicGFzc18yXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIgorICAgICAgICAg
ICAgICAgICAgICAgICJwYXNzXzNcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAicGFz
c18xXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc18yXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFz
c18zXG4iOworCisgICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKElm
VGVzdCwgSWZfMF9OZXN0ZWQpCit7CisgICAgY29uc3QgY2hhciogc3RyID0gInBhc3NfMVxuIgor
ICAgICAgICAgICAgICAgICAgICAgICIjaWYgMFxuIgorICAgICAgICAgICAgICAgICAgICAgICJm
YWlsXzFcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2lmIDFcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAiZmFpbF8yXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNlbHNlXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgImZhaWxfM1xuIgorICAgICAgICAgICAgICAgICAgICAgICIjZW5k
aWZcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2Vsc2VcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAicGFzc18yXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIgorICAgICAg
ICAgICAgICAgICAgICAgICJwYXNzXzNcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAi
cGFzc18xXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAi
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAicGFzc18yXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAi
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc18zXG4iOworCisgICAgcHJlcHJv
Y2VzcyhzdHIsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKElmVGVzdCwgSWZfMV9OZXN0ZWQpCit7
CisgICAgY29uc3QgY2hhciogc3RyID0gInBhc3NfMVxuIgorICAgICAgICAgICAgICAgICAgICAg
ICIjaWYgMVxuIgorICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzJcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAiI2lmIDFcbiIKKyAgICAgICAgICAgICAgICAgICAgICAicGFzc18zXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgIiNlbHNlXG4iCisgICAgICAgICAgICAgICAgICAgICAgImZh
aWxfMVxuIgorICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAiI2Vsc2VcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiZmFpbF8yXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIgorICAgICAgICAgICAgICAgICAgICAgICJwYXNz
XzRcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAicGFzc18xXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc18y
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAicGFzc18zXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAi
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAicGFzc180XG4iOworCisgICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVj
dGVkKTsKK30KKworVEVTVF9GKElmVGVzdCwgT3BlcmF0b3JQcmVjZWRlbmNlKQoreworICAgIGNv
bnN0IGNoYXIqIHN0ciA9ICIjaWYgMSArIDIgKiAzICsgLSAoMjYgJSAxNyAtICsgNCAvIDIpXG4i
CisgICAgICAgICAgICAgICAgICAgICAgImZhaWxfMVxuIgorICAgICAgICAgICAgICAgICAgICAg
ICIjZWxzZVxuIgorICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzFcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAiI2VuZGlmXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NfMVxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlxuIjsKKworICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7
Cit9CisKK1RFU1RfRihJZlRlc3QsIE9wZXJhdG9yRGVmaW5lZCkKK3sKKyAgICBjb25zdCBjaGFy
KiBzdHIgPSAiI2lmIGRlZmluZWQgZm9vXG4iCisgICAgICAgICAgICAgICAgICAgICAgImZhaWxf
MVxuIgorICAgICAgICAgICAgICAgICAgICAgICIjZWxzZVxuIgorICAgICAgICAgICAgICAgICAg
ICAgICJwYXNzXzFcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgIiNkZWZpbmUgZm9vXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNp
ZiBkZWZpbmVkKGZvbylcbiIKKyAgICAgICAgICAgICAgICAgICAgICAicGFzc18yXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgIiNlbHNlXG4iCisgICAgICAgICAgICAgICAgICAgICAgImZhaWxf
MlxuIgorICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAiI3VuZGVmIGZvb1xuIgorICAgICAgICAgICAgICAgICAgICAgICIjaWYgZGVmaW5lZCAo
IGZvbyApIFxuIgorICAgICAgICAgICAgICAgICAgICAgICJmYWlsXzNcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAiI2Vsc2VcbiIKKyAgICAgICAgICAgICAgICAgICAgICAicGFzc18zXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3Rl
ZCA9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzFcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJwYXNzXzJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJw
YXNzXzNcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisKKyAgICBwcmVwcm9j
ZXNzKHN0ciwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoSWZUZXN0LCBPcGVyYXRvckVRKQorewor
ICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjaWYgNCAtIDEgPT0gMiArIDFcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAicGFzc1xuIgorICAgICAgICAgICAgICAgICAgICAgICIjZWxzZVxuIgorICAg
ICAgICAgICAgICAgICAgICAgICJmYWlsXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNlbmRp
ZlxuIjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJwYXNzXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAi
XG4iOworCisgICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKElmVGVz
dCwgT3BlcmF0b3JORSkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2lmIDEgIT0gMlxuIgor
ICAgICAgICAgICAgICAgICAgICAgICJwYXNzXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNl
bHNlXG4iCisgICAgICAgICAgICAgICAgICAgICAgImZhaWxcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAiI2VuZGlmXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInBhc3NcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJcbiI7CisKKyAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOworfQorCitU
RVNUX0YoSWZUZXN0LCBPcGVyYXRvckxlc3MpCit7CisgICAgY29uc3QgY2hhciogc3RyID0gIiNp
ZiAxIDwgMlxuIgorICAgICAgICAgICAgICAgICAgICAgICJwYXNzXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgIiNlbHNlXG4iCisgICAgICAgICAgICAgICAgICAgICAgImZhaWxcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0g
IlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisKKyAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0
ZWQpOworfQorCitURVNUX0YoSWZUZXN0LCBPcGVyYXRvckdyZWF0ZXIpCit7CisgICAgY29uc3Qg
Y2hhciogc3RyID0gIiNpZiAyID4gMVxuIgorICAgICAgICAgICAgICAgICAgICAgICJwYXNzXG4i
CisgICAgICAgICAgICAgICAgICAgICAgIiNlbHNlXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ImZhaWxcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iOworICAgIGNvbnN0IGNo
YXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisKKyAgICBwcmVwcm9j
ZXNzKHN0ciwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoSWZUZXN0LCBPcGVyYXRvckxFKQorewor
ICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjaWYgMSA8PSAyXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgInBhc3NfMVxuIgorICAgICAgICAgICAgICAgICAgICAgICIjZWxzZVxuIgorICAgICAgICAg
ICAgICAgICAgICAgICJmYWlsXzFcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4i
CisgICAgICAgICAgICAgICAgICAgICAgIiNpZiAyIDw9IDJcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAicGFzc18yXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNlbHNlXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgImZhaWxfMlxuIgorICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZc
biI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAicGFzc18xXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAi
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAicGFzc18yXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAi
XG4iOworCisgICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKElmVGVz
dCwgT3BlcmF0b3JHRSkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2lmIDIgPj0gMVxuIgor
ICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzFcbiIKKyAgICAgICAgICAgICAgICAgICAgICAi
I2Vsc2VcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiZmFpbF8xXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgIiNlbmRpZlxuIgorICAgICAgICAgICAgICAgICAgICAgICIjaWYgMiA+PSAyXG4i
CisgICAgICAgICAgICAgICAgICAgICAgInBhc3NfMlxuIgorICAgICAgICAgICAgICAgICAgICAg
ICIjZWxzZVxuIgorICAgICAgICAgICAgICAgICAgICAgICJmYWlsXzJcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAiI2VuZGlmXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NfMVxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NfMlxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlxuIjsKKworICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7
Cit9CisKK1RFU1RfRihJZlRlc3QsIE9wZXJhdG9yQml0d2lzZU9SKQoreworICAgIGNvbnN0IGNo
YXIqIHN0ciA9ICIjaWYgKDB4YWFhYWFhYWEgfCAweDU1NTU1NTU1KSA9PSAweGZmZmZmZmZmXG4i
CisgICAgICAgICAgICAgICAgICAgICAgInBhc3NcbiIKKyAgICAgICAgICAgICAgICAgICAgICAi
I2Vsc2VcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiZmFpbFxuIgorICAgICAgICAgICAgICAg
ICAgICAgICIjZW5kaWZcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAicGFzc1xuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlxuIjsKKworICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Cit9CisK
K1RFU1RfRihJZlRlc3QsIE9wZXJhdG9yQml0d2lzZUFORCkKK3sKKyAgICBjb25zdCBjaGFyKiBz
dHIgPSAiI2lmICgweGFhYWFhYWEgJiAweDU1NTU1NTUpID09IDBcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAicGFzc1xuIgorICAgICAgICAgICAgICAgICAgICAgICIjZWxzZVxuIgorICAgICAg
ICAgICAgICAgICAgICAgICJmYWlsXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxu
IjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJwYXNzXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4i
OworCisgICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKElmVGVzdCwg
T3BlcmF0b3JCaXR3aXNlWE9SKQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjaWYgKDB4YWFh
YWFhYSBeIDB4NTU1NTU1NSkgPT0gMHhmZmZmZmZmXG4iCisgICAgICAgICAgICAgICAgICAgICAg
InBhc3NcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2Vsc2VcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAiZmFpbFxuIgorICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiI7CisgICAg
Y29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAi
cGFzc1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKworICAg
IHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihJZlRlc3QsIE9wZXJhdG9y
Qml0d2lzZUNvbXBsZW1lbnQpCit7CisgICAgY29uc3QgY2hhciogc3RyID0gIiNpZiAofiAweGRl
YWRiZWVmKSA9PSAtMzczNTkyODU2MFxuIgorICAgICAgICAgICAgICAgICAgICAgICJwYXNzXG4i
CisgICAgICAgICAgICAgICAgICAgICAgIiNlbHNlXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ImZhaWxcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iOworICAgIGNvbnN0IGNo
YXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisKKyAgICBwcmVwcm9j
ZXNzKHN0ciwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoSWZUZXN0LCBPcGVyYXRvckxlZnQpCit7
CisgICAgY29uc3QgY2hhciogc3RyID0gIiNpZiAoMSA8PCAxMikgPT0gNDA5NlxuIgorICAgICAg
ICAgICAgICAgICAgICAgICJwYXNzXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNlbHNlXG4i
CisgICAgICAgICAgICAgICAgICAgICAgImZhaWxcbiIKKyAgICAgICAgICAgICAgICAgICAgICAi
I2VuZGlmXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInBhc3NcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJcbiI7CisKKyAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOworfQorCitURVNUX0Yo
SWZUZXN0LCBPcGVyYXRvclJpZ2h0KQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjaWYgKDMx
NzYyID4+IDgpID09IDEyNFxuIgorICAgICAgICAgICAgICAgICAgICAgICJwYXNzXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgIiNlbHNlXG4iCisgICAgICAgICAgICAgICAgICAgICAgImZhaWxc
biIKKyAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iOworICAgIGNvbnN0IGNoYXIqIGV4
cGVjdGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisKKyAgICBwcmVwcm9jZXNzKHN0
ciwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoSWZUZXN0LCBFeHByZXNzaW9uV2l0aE1hY3JvcykK
K3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2RlZmluZSBvbmUgMVxuIgorICAgICAgICAgICAg
ICAgICAgICAgICIjZGVmaW5lIHR3byAyXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNkZWZp
bmUgdGhyZWUgM1xuIgorICAgICAgICAgICAgICAgICAgICAgICIjaWYgb25lICsgdHdvID09IHRo
cmVlXG4iCisgICAgICAgICAgICAgICAgICAgICAgInBhc3NcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAiI2Vsc2VcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiZmFpbFxuIgorICAgICAgICAg
ICAgICAgICAgICAgICIjZW5kaWZcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAicGFzc1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIlxuIjsKKworICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihJ
ZlRlc3QsIEp1bmtJbnNpZGVFeGNsdWRlZEJsb2NrSWdub3JlZCkKK3sKKyAgICBjb25zdCBjaGFy
KiBzdHIgPSAiI2lmIDBcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiZm9vICFAIyQlXiYqIC4x
YmFyXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNmb29cbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAiI2lmIGJhclxuIgorICAgICAgICAgICAgICAgICAgICAgICJmYWlsXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgIiNlbmRpZlxuIgorICAgICAgICAgICAgICAgICAgICAgICIjZWxzZVxu
IgorICAgICAgICAgICAgICAgICAgICAgICJwYXNzXG4iCisgICAgICAgICAgICAgICAgICAgICAg
IiNlbmRpZlxuIjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworCisgICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVj
dGVkKTsKK30KKworVEVTVF9GKElmVGVzdCwgSWZkZWYpCit7CisgICAgY29uc3QgY2hhciogc3Ry
ID0gIiNkZWZpbmUgZm9vXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNpZmRlZiBmb29cbiIK
KyAgICAgICAgICAgICAgICAgICAgICAicGFzc18xXG4iCisgICAgICAgICAgICAgICAgICAgICAg
IiNlbHNlXG4iCisgICAgICAgICAgICAgICAgICAgICAgImZhaWxfMVxuIgorICAgICAgICAgICAg
ICAgICAgICAgICIjZW5kaWZcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI3VuZGVmIGZvb1xu
IgorICAgICAgICAgICAgICAgICAgICAgICIjaWZkZWYgZm9vXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgImZhaWxfMlxuIgorICAgICAgICAgICAgICAgICAgICAgICIjZWxzZVxuIgorICAgICAg
ICAgICAgICAgICAgICAgICJwYXNzXzJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlm
XG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NfMVxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NfMlxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIlxuIjsKKworICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Cit9CisKK1RF
U1RfRihJZlRlc3QsIElmbmRlZikKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2RlZmluZSBm
b29cbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2lmbmRlZiBmb29cbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAiZmFpbF8xXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNlbHNlXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgInBhc3NfMVxuIgorICAgICAgICAgICAgICAgICAgICAgICIj
ZW5kaWZcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI3VuZGVmIGZvb1xuIgorICAgICAgICAg
ICAgICAgICAgICAgICIjaWZuZGVmIGZvb1xuIgorICAgICAgICAgICAgICAgICAgICAgICJwYXNz
XzJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2Vsc2VcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAiZmFpbF8yXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIjsKKyAgICBj
b25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzFcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJwYXNzXzJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJc
biI7CisKKyAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoSWZUZXN0
LCBNaXNzaW5nRXhwcmVzc2lvbikKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2lmXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIjsKKyAgICBBU1NFUlRfVFJVRShtUHJlcHJv
Y2Vzc29yLmluaXQoMSwgJnN0ciwgMCkpOworCisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNz
LAorICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfSU5WQUxJRF9FWFBS
RVNTSU9OLAorICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwK
KyAgICAgICAgICAgICAgICAgICAgICAic3ludGF4IGVycm9yIikpOworCisgICAgcHA6OlRva2Vu
IHRva2VuOworICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Cit9CisKK1RFU1RfRihJZlRl
c3QsIERpdmlzaW9uQnlaZXJvKQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjaWYgMSAvICgz
IC0gKDEgKyAyKSlcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iOworICAgIEFT
U0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCAwKSk7CisKKyAgICBFWFBFQ1Rf
Q0FMTChtRGlhZ25vc3RpY3MsCisgICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNz
OjpQUF9ESVZJU0lPTl9CWV9aRVJPLAorICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VM
b2NhdGlvbigwLCAxKSwgIjEgLyAwIikpOworCisgICAgcHA6OlRva2VuIHRva2VuOworICAgIG1Q
cmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Cit9CisKK1RFU1RfRihJZlRlc3QsIE1vZHVsb0J5WmVy
bykKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2lmIDEgJSAoMyAtICgxICsgMikpXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIjsKKyAgICBBU1NFUlRfVFJVRShtUHJlcHJv
Y2Vzc29yLmluaXQoMSwgJnN0ciwgMCkpOworCisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNz
LAorICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfRElWSVNJT05fQllf
WkVSTywKKyAgICAgICAgICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgMSksICIx
ICUgMCIpKTsKKworICAgIHBwOjpUb2tlbiB0b2tlbjsKKyAgICBtUHJlcHJvY2Vzc29yLmxleCgm
dG9rZW4pOworfQorCitURVNUX0YoSWZUZXN0LCBEZWNJbnRlZ2VyT3ZlcmZsb3cpCit7CisgICAg
Y29uc3QgY2hhciogc3RyID0gIiNpZiA0Mjk0OTY3Mjk2XG4iCisgICAgICAgICAgICAgICAgICAg
ICAgIiNlbmRpZlxuIjsKKyAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJnN0
ciwgMCkpOworCisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAorICAgICAgICAgICAgICAg
IHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfSU5URUdFUl9PVkVSRkxPVywKKyAgICAgICAgICAg
ICAgICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgMSksICI0Mjk0OTY3Mjk2IikpOworCisg
ICAgcHA6OlRva2VuIHRva2VuOworICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Cit9CisK
K1RFU1RfRihJZlRlc3QsIE9jdEludGVnZXJPdmVyZmxvdykKK3sKKyAgICBjb25zdCBjaGFyKiBz
dHIgPSAiI2lmIDA3Nzc3Nzc3Nzc3N1xuIgorICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZc
biI7CisgICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZzdHIsIDApKTsKKwor
ICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKKyAgICAgICAgICAgICAgICBwcmludChwcDo6
RGlhZ25vc3RpY3M6OlBQX0lOVEVHRVJfT1ZFUkZMT1csCisgICAgICAgICAgICAgICAgICAgICAg
cHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLCAiMDc3Nzc3Nzc3Nzc3IikpOworCisgICAgcHA6OlRv
a2VuIHRva2VuOworICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Cit9CisKK1RFU1RfRihJ
ZlRlc3QsIEhleEludGVnZXJPdmVyZmxvdykKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2lm
IDB4ZmZmZmZmZmZmXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIjsKKyAgICBB
U1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJnN0ciwgMCkpOworCisgICAgRVhQRUNU
X0NBTEwobURpYWdub3N0aWNzLAorICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGlj
czo6UFBfSU5URUdFUl9PVkVSRkxPVywKKyAgICAgICAgICAgICAgICAgICAgICBwcDo6U291cmNl
TG9jYXRpb24oMCwgMSksICIweGZmZmZmZmZmZiIpKTsKKworICAgIHBwOjpUb2tlbiB0b2tlbjsK
KyAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOworfQorCitURVNUX0YoSWZUZXN0LCBVbmRl
ZmluZWRNYWNybykKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2lmIFVOREVGSU5FRFxuIgor
ICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiI7CisgICAgQVNTRVJUX1RSVUUobVByZXBy
b2Nlc3Nvci5pbml0KDEsICZzdHIsIDApKTsKKworICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGlj
cywKKyAgICAgICAgICAgICAgICBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX0NPTkRJVElPTkFM
X1VORVhQRUNURURfVE9LRU4sCisgICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0
aW9uKDAsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICJVTkRFRklORUQiKSk7CisKKyAgICBw
cDo6VG9rZW4gdG9rZW47CisgICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKK30KKworVEVT
VF9GKElmVGVzdCwgSW52YWxpZEV4cHJlc3Npb25JZ25vcmVkRm9yRXhjbHVkZWRFbGlmKQorewor
ICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjaWYgMVxuIgorICAgICAgICAgICAgICAgICAgICAgICJw
YXNzXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNlbGlmIFVOREVGSU5FRFxuIgorICAgICAg
ICAgICAgICAgICAgICAgICJmYWlsXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxu
IjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJwYXNzXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4i
OworCisgICAgLy8gTm8gZXJyb3Igb3Igd2FybmluZy4KKyAgICB1c2luZyB0ZXN0aW5nOjpfOwor
ICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQoXywgXywgXykpLlRpbWVzKDApOwor
CisgICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKElmVGVzdCwgRWxz
ZVdpdGhvdXRJZikKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2Vsc2VcbiI7CisgICAgQVNT
RVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZzdHIsIDApKTsKKworICAgIEVYUEVDVF9D
QUxMKG1EaWFnbm9zdGljcywKKyAgICAgICAgICAgICAgICBwcmludChwcDo6RGlhZ25vc3RpY3M6
OlBQX0NPTkRJVElPTkFMX0VMU0VfV0lUSE9VVF9JRiwKKyAgICAgICAgICAgICAgICAgICAgICBw
cDo6U291cmNlTG9jYXRpb24oMCwgMSksCisgICAgICAgICAgICAgICAgICAgICAgImVsc2UiKSk7
CisKKyAgICBwcDo6VG9rZW4gdG9rZW47CisgICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsK
K30KKworVEVTVF9GKElmVGVzdCwgRWxpZldpdGhvdXRJZikKK3sKKyAgICBjb25zdCBjaGFyKiBz
dHIgPSAiI2VsaWYgMVxuIjsKKyAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwg
JnN0ciwgMCkpOworCisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAorICAgICAgICAgICAg
ICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfQ09ORElUSU9OQUxfRUxJRl9XSVRIT1VUX0lG
LAorICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAiZWxpZiIpKTsKKworICAgIHBwOjpUb2tlbiB0b2tlbjsKKyAgICBt
UHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOworfQorCitURVNUX0YoSWZUZXN0LCBFbmRpZldpdGhv
dXRJZikKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2VuZGlmXG4iOworICAgIEFTU0VSVF9U
UlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCAwKSk7CisKKyAgICBFWFBFQ1RfQ0FMTCht
RGlhZ25vc3RpY3MsCisgICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9D
T05ESVRJT05BTF9FTkRJRl9XSVRIT1VUX0lGLAorICAgICAgICAgICAgICAgICAgICAgIHBwOjpT
b3VyY2VMb2NhdGlvbigwLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAiZW5kaWYiKSk7CisK
KyAgICBwcDo6VG9rZW4gdG9rZW47CisgICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKK30K
KworVEVTVF9GKElmVGVzdCwgRWxzZUFmdGVyRWxzZSkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIg
PSAiI2lmIDFcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2Vsc2VcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAiI2Vsc2VcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iOwor
ICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCAwKSk7CisKKyAgICBF
WFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsCisgICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdu
b3N0aWNzOjpQUF9DT05ESVRJT05BTF9FTFNFX0FGVEVSX0VMU0UsCisgICAgICAgICAgICAgICAg
ICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDMpLAorICAgICAgICAgICAgICAgICAgICAgICJl
bHNlIikpOworCisgICAgcHA6OlRva2VuIHRva2VuOworICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0
b2tlbik7Cit9CisKK1RFU1RfRihJZlRlc3QsIEVsaWZBZnRlckVsc2UpCit7CisgICAgY29uc3Qg
Y2hhciogc3RyID0gIiNpZiAxXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiNlbHNlXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgIiNlbGlmIDBcbiIKKyAgICAgICAgICAgICAgICAgICAgICAi
I2VuZGlmXG4iOworICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCAw
KSk7CisKKyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsCisgICAgICAgICAgICAgICAgcHJp
bnQocHA6OkRpYWdub3N0aWNzOjpQUF9DT05ESVRJT05BTF9FTElGX0FGVEVSX0VMU0UsCisgICAg
ICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDMpLAorICAgICAgICAgICAg
ICAgICAgICAgICJlbGlmIikpOworCisgICAgcHA6OlRva2VuIHRva2VuOworICAgIG1QcmVwcm9j
ZXNzb3IubGV4KCZ0b2tlbik7Cit9CisKK1RFU1RfRihJZlRlc3QsIFVudGVybWluYXRlZElmKQor
eworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjaWYgMVxuIjsKKyAgICBBU1NFUlRfVFJVRShtUHJl
cHJvY2Vzc29yLmluaXQoMSwgJnN0ciwgMCkpOworCisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0
aWNzLAorICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfQ09ORElUSU9O
QUxfVU5URVJNSU5BVEVELAorICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlv
bigwLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAiaWYiKSk7CisKKyAgICBwcDo6VG9rZW4g
dG9rZW47CisgICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKK30KKworVEVTVF9GKElmVGVz
dCwgVW50ZXJtaW5hdGVkSWZkZWYpCit7CisgICAgY29uc3QgY2hhciogc3RyID0gIiNpZmRlZiBm
b29cbiI7CisgICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZzdHIsIDApKTsK
KworICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKKyAgICAgICAgICAgICAgICBwcmludChw
cDo6RGlhZ25vc3RpY3M6OlBQX0NPTkRJVElPTkFMX1VOVEVSTUlOQVRFRCwKKyAgICAgICAgICAg
ICAgICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgMSksCisgICAgICAgICAgICAgICAgICAg
ICAgImlmZGVmIikpOworCisgICAgcHA6OlRva2VuIHRva2VuOworICAgIG1QcmVwcm9jZXNzb3Iu
bGV4KCZ0b2tlbik7Cit9CisKKy8vIFRoZSBwcmVwcm9jZXNzb3Igb25seSBhbGxvd3Mgb25lIGV4
cHJlc3Npb24gdG8gZm9sbG93IGFuICNpZiBkaXJlY3RpdmUuCisvLyBTdXBwbHlpbmcgdHdvIGlu
dGVnZXIgZXhwcmVzc2lvbnMgc2hvdWxkIGJlIGFuIGVycm9yLgorVEVTVF9GKElmVGVzdCwgRXh0
cmFJbnRFeHByZXNzaW9uKQoreworICAgIGNvbnN0IGNoYXIgKnN0ciA9CisgICAgICAgICIjaWYg
MSAxXG4iCisgICAgICAgICIjZW5kaWZcbiI7CisgICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nv
ci5pbml0KDEsICZzdHIsIDApKTsKKworICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJp
bnQocHA6OkRpYWdub3N0aWNzOjpQUF9DT05ESVRJT05BTF9VTkVYUEVDVEVEX1RPS0VOLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEp
LCAiMSIpKTsKKworICAgIHBwOjpUb2tlbiB0b2tlbjsKKyAgICBtUHJlcHJvY2Vzc29yLmxleCgm
dG9rZW4pOworfQorCisvLyBUaGUgcHJlcHJvY2Vzc29yIG9ubHkgYWxsb3dzIG9uZSBleHByZXNz
aW9uIHRvIGZvbGxvdyBhbiAjaWYgZGlyZWN0aXZlLgorLy8gU3VwcGx5aW5nIHR3byBleHByZXNz
aW9ucyB3aGVyZSBvbmUgdXNlcyBhIHByZXByb2Nlc3NvciBkZWZpbmUgc2hvdWxkIGJlIGFuIGVy
cm9yLgorVEVTVF9GKElmVGVzdCwgRXh0cmFJZGVudGlmaWVyRXhwcmVzc2lvbikKK3sKKyAgICBj
b25zdCBjaGFyICpzdHIgPQorICAgICAgICAiI2RlZmluZSBvbmUgMVxuIgorICAgICAgICAiI2lm
IDEgb25lXG4iCisgICAgICAgICIjZW5kaWZcbiI7CisgICAgQVNTRVJUX1RSVUUobVByZXByb2Nl
c3Nvci5pbml0KDEsICZzdHIsIDApKTsKKworICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywg
cHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9DT05ESVRJT05BTF9VTkVYUEVDVEVEX1RPS0VOLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAs
IDIpLCAiMSIpKTsKKworICAgIHBwOjpUb2tlbiB0b2tlbjsKKyAgICBtUHJlcHJvY2Vzc29yLmxl
eCgmdG9rZW4pOworfQorCisvLyBEaXZpZGUgYnkgemVybyB0aGF0J3Mgbm90IGV2YWx1YXRlZCBi
ZWNhdXNlIG9mIHNob3J0LWNpcmN1aXRpbmcgc2hvdWxkIG5vdCBjYXVzZSBhbiBlcnJvci4KK1RF
U1RfRihJZlRlc3QsIFNob3J0Q2lyY3VpdGVkRGl2aWRlQnlaZXJvKQoreworICAgIGNvbnN0IGNo
YXIgKnN0ciA9CisgICAgICAgICIjaWYgMSB8fCAoMiAvIDApXG4iCisgICAgICAgICJwYXNzXG4i
CisgICAgICAgICIjZW5kaWZcbiI7CisgICAgY29uc3QgY2hhciAqZXhwZWN0ZWQgPQorICAgICAg
ICAiXG4iCisgICAgICAgICJwYXNzXG4iCisgICAgICAgICJcbiI7CisKKyAgICBwcmVwcm9jZXNz
KHN0ciwgZXhwZWN0ZWQpOworfQorCisvLyBVbmRlZmluZWQgaWRlbnRpZmllciB0aGF0J3Mgbm90
IGV2YWx1YXRlZCBiZWNhdXNlIG9mIHNob3J0LWNpcmN1aXRpbmcgc2hvdWxkIG5vdCBjYXVzZSBh
biBlcnJvci4KK1RFU1RfRihJZlRlc3QsIFNob3J0Q2lyY3VpdGVkVW5kZWZpbmVkKQoreworICAg
IGNvbnN0IGNoYXIgKnN0ciA9CisgICAgICAgICIjaWYgMSB8fCBVTkRFRklORURcbiIKKyAgICAg
ICAgInBhc3NcbiIKKyAgICAgICAgIiNlbmRpZlxuIjsKKyAgICBjb25zdCBjaGFyICpleHBlY3Rl
ZCA9CisgICAgICAgICJcbiIKKyAgICAgICAgInBhc3NcbiIKKyAgICAgICAgIlxuIjsKKworICAg
IHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Cit9CisKKy8vIERlZmluZWQgb3BlcmF0b3IgcHJv
ZHVjZWQgYnkgbWFjcm8gZXhwYW5zaW9uIGhhcyB1bmRlZmluZWQgYmVoYXZpb3IgYWNjb3JkaW5n
IHRvIEMrKyBzcGVjLAorLy8gd2hpY2ggdGhlIEdMU0wgc3BlYyByZWZlcmVuY2VzIChzZWUgQysr
MTQgZHJhZnQgc3BlYyBzZWN0aW9uIDE2LjEuNCksIGJ1dCB0aGlzIGJlaGF2aW9yIGlzCisvLyBu
ZWVkZWQgZm9yIHBhc3NpbmcgZEVRUCB0ZXN0cywgd2hpY2ggZW5mb3JjZSBzdHJpY3RlciBjb21w
YXRpYmlsaXR5IGJldHdlZW4gaW1wbGVtZW50YXRpb25zLgorVEVTVF9GKElmVGVzdCwgRGVmaW5l
ZE9wZXJhdG9yVmFsaWRBZnRlck1hY3JvRXhwYW5zaW9uKQoreworICAgIGNvbnN0IGNoYXIgKnN0
ciA9CisgICAgICAgICIjZGVmaW5lIGZvbyBkZWZpbmVkXG4iCisgICAgICAgICIjaWYgIWZvbyBi
YXJcbiIKKyAgICAgICAgInBhc3NcbiIKKyAgICAgICAgIiNlbmRpZlxuIjsKKyAgICBBU1NFUlRf
VFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJnN0ciwgMCkpOworCisgICAgRVhQRUNUX0NBTEwo
bURpYWdub3N0aWNzLCBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX0NPTkRJVElPTkFMX1VORVhQ
RUNURURfVE9LRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcDo6U291
cmNlTG9jYXRpb24oMCwgMiksICJkZWZpbmVkIikpOworICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9z
dGljcywgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9DT05ESVRJT05BTF9VTkVYUEVDVEVEX1RP
S0VOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0
aW9uKDAsIDIpLCAiYmFyIikpOworCisgICAgcHA6OlRva2VuIHRva2VuOworICAgIG1QcmVwcm9j
ZXNzb3IubGV4KCZ0b2tlbik7Cit9CisKKy8vIERlZmluZWQgb3BlcmF0b3IgcHJvZHVjZWQgYnkg
bWFjcm8gZXhwYW5zaW9uIGhhcyB1bmRlZmluZWQgYmVoYXZpb3IgYWNjb3JkaW5nIHRvIEMrKyBz
cGVjLAorLy8gd2hpY2ggdGhlIEdMU0wgc3BlYyByZWZlcmVuY2VzIChzZWUgQysrMTQgZHJhZnQg
c3BlYyBzZWN0aW9uIDE2LjEuNCksIGJ1dCB0aGlzIGJlaGF2aW9yIGlzCisvLyBuZWVkZWQgZm9y
IHBhc3NpbmcgZEVRUCB0ZXN0cywgd2hpY2ggZW5mb3JjZSBzdHJpY3RlciBjb21wYXRpYmlsaXR5
IGJldHdlZW4gaW1wbGVtZW50YXRpb25zLgorVEVTVF9GKElmVGVzdCwgVW50ZXJtaW5hdGVkRGVm
aW5lZEluTWFjcm8pCit7CisgICAgY29uc3QgY2hhciAqc3RyID0KKyAgICAgICAgIiNkZWZpbmUg
Zm9vIGRlZmluZWQoXG4iCisgICAgICAgICIjaWYgZm9vXG4iCisgICAgICAgICIjZW5kaWZcbiI7
CisgICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZzdHIsIDApKTsKKworICAg
IEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9DT05E
SVRJT05BTF9VTkVYUEVDVEVEX1RPS0VOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDIpLCAiZGVmaW5lZCIpKTsKKyAgICBFWFBFQ1Rf
Q0FMTChtRGlhZ25vc3RpY3MsIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfQ09ORElUSU9OQUxf
VU5FWFBFQ1RFRF9UT0tFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBw
OjpTb3VyY2VMb2NhdGlvbigwLCAyKSwgIigiKSk7CisKKyAgICBwcDo6VG9rZW4gdG9rZW47Cisg
ICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKK30KKworLy8gRGVmaW5lZCBvcGVyYXRvciBw
cm9kdWNlZCBieSBtYWNybyBleHBhbnNpb24gaGFzIHVuZGVmaW5lZCBiZWhhdmlvciBhY2NvcmRp
bmcgdG8gQysrIHNwZWMsCisvLyB3aGljaCB0aGUgR0xTTCBzcGVjIHJlZmVyZW5jZXMgKHNlZSBD
KysxNCBkcmFmdCBzcGVjIHNlY3Rpb24gMTYuMS40KSwgYnV0IHRoaXMgYmVoYXZpb3IgaXMKKy8v
IG5lZWRlZCBmb3IgcGFzc2luZyBkRVFQIHRlc3RzLCB3aGljaCBlbmZvcmNlIHN0cmljdGVyIGNv
bXBhdGliaWxpdHkgYmV0d2VlbiBpbXBsZW1lbnRhdGlvbnMuCitURVNUX0YoSWZUZXN0LCBVbnRl
cm1pbmF0ZWREZWZpbmVkSW5NYWNybzIpCit7CisgICAgY29uc3QgY2hhciAqc3RyID0KKyAgICAg
ICAgIiNkZWZpbmUgZm9vIGRlZmluZWQoYmFyXG4iCisgICAgICAgICIjaWYgZm9vXG4iCisgICAg
ICAgICIjZW5kaWZcbiI7CisgICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZz
dHIsIDApKTsKKworICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQocHA6OkRpYWdu
b3N0aWNzOjpQUF9DT05ESVRJT05BTF9VTkVYUEVDVEVEX1RPS0VOLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDIpLCAiZGVmaW5lZCIp
KTsKKyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KHBwOjpEaWFnbm9zdGljczo6
UFBfQ09ORElUSU9OQUxfVU5FWFBFQ1RFRF9UT0tFTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAyKSwgIigiKSk7CisKKyAgICBwcDo6
VG9rZW4gdG9rZW47CisgICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKK30KKworLy8gVW5k
ZWZpbmVkIHNoaWZ0OiBuZWdhdGl2ZSBzaGlmdCBvZmZzZXQuCitURVNUX0YoSWZUZXN0LCBCaXRT
aGlmdExlZnRPcGVyYXRvck5lZ2F0aXZlT2Zmc2V0KQoreworICAgIGNvbnN0IGNoYXIgKnN0ciA9
CisgICAgICAgICIjaWYgMiA8PCAtMSA9PSAxXG4iCisgICAgICAgICJmb29cbiIKKyAgICAgICAg
IiNlbmRpZlxuIjsKKyAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJnN0ciwg
MCkpOworCisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAorICAgICAgICAgICAgICAgIHBy
aW50KHBwOjpEaWFnbm9zdGljczo6UFBfVU5ERUZJTkVEX1NISUZULCBwcDo6U291cmNlTG9jYXRp
b24oMCwgMSksICIyIDw8IC0xIikpOworCisgICAgcHA6OlRva2VuIHRva2VuOworICAgIG1QcmVw
cm9jZXNzb3IubGV4KCZ0b2tlbik7Cit9CisKKy8vIFVuZGVmaW5lZCBzaGlmdDogc2hpZnQgb2Zm
c2V0IGlzIG91dCBvZiByYW5nZS4KK1RFU1RfRihJZlRlc3QsIEJpdFNoaWZ0TGVmdE9wZXJhdG9y
T2Zmc2V0MzIpCit7CisgICAgY29uc3QgY2hhciAqc3RyID0KKyAgICAgICAgIiNpZiAyIDw8IDMy
ID09IDFcbiIKKyAgICAgICAgImZvb1xuIgorICAgICAgICAiI2VuZGlmXG4iOworICAgIEFTU0VS
VF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCAwKSk7CisKKyAgICBFWFBFQ1RfQ0FM
TChtRGlhZ25vc3RpY3MsCisgICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQ
UF9VTkRFRklORURfU0hJRlQsIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwgIjIgPDwgMzIiKSk7
CisKKyAgICBwcDo6VG9rZW4gdG9rZW47CisgICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsK
K30KKworLy8gTGVmdCBoYW5kIHNpZGUgb2Ygc2hpZnQgaXMgbmVnYXRpdmUuCitURVNUX0YoSWZU
ZXN0LCBCaXRTaGlmdExlZnRPcGVyYXRvck5lZ2F0aXZlTEhTKQoreworICAgIGNvbnN0IGNoYXIg
KnN0ciA9CisgICAgICAgICIjaWYgKC0yKSA8PCAxID09IC00XG4iCisgICAgICAgICJwYXNzXG4i
CisgICAgICAgICIjZW5kaWZcbiI7CisgICAgY29uc3QgY2hhciAqZXhwZWN0ZWQgPQorICAgICAg
ICAiXG4iCisgICAgICAgICJwYXNzXG4iCisgICAgICAgICJcbiI7CisKKyAgICBwcmVwcm9jZXNz
KHN0ciwgZXhwZWN0ZWQpOworfQorCisvLyBVbmRlZmluZWQgc2hpZnQ6IHNoaWZ0IG9mZnNldCBp
cyBvdXQgb2YgcmFuZ2UuCitURVNUX0YoSWZUZXN0LCBCaXRTaGlmdFJpZ2h0T3BlcmF0b3JOZWdh
dGl2ZU9mZnNldCkKK3sKKyAgICBjb25zdCBjaGFyICpzdHIgPQorICAgICAgICAiI2lmIDIgPj4g
LTEgPT0gNFxuIgorICAgICAgICAiZm9vXG4iCisgICAgICAgICIjZW5kaWZcbiI7CisgICAgQVNT
RVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZzdHIsIDApKTsKKworICAgIEVYUEVDVF9D
QUxMKG1EaWFnbm9zdGljcywKKyAgICAgICAgICAgICAgICBwcmludChwcDo6RGlhZ25vc3RpY3M6
OlBQX1VOREVGSU5FRF9TSElGVCwgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLCAiMiA+PiAtMSIp
KTsKKworICAgIHBwOjpUb2tlbiB0b2tlbjsKKyAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4p
OworfQorCisvLyBVbmRlZmluZWQgc2hpZnQ6IHNoaWZ0IG9mZnNldCBpcyBvdXQgb2YgcmFuZ2Uu
CitURVNUX0YoSWZUZXN0LCBCaXRTaGlmdFJpZ2h0T3BlcmF0b3JPZmZzZXQzMikKK3sKKyAgICBj
b25zdCBjaGFyICpzdHIgPQorICAgICAgICAiI2lmIDIgPj4gMzIgPT0gMFxuIgorICAgICAgICAi
Zm9vXG4iCisgICAgICAgICIjZW5kaWZcbiI7CisgICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nv
ci5pbml0KDEsICZzdHIsIDApKTsKKworICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKKyAg
ICAgICAgICAgICAgICBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX1VOREVGSU5FRF9TSElGVCwg
cHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLCAiMiA+PiAzMiIpKTsKKworICAgIHBwOjpUb2tlbiB0
b2tlbjsKKyAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOworfQorCisvLyBMZWZ0IGhhbmQg
c2lkZSBvZiBzaGlmdCBpcyBuZWdhdGl2ZS4KK1RFU1RfRihJZlRlc3QsIEJpdFNoaWZ0UmlnaHRP
cGVyYXRvck5lZ2F0aXZlTEhTKQoreworICAgIGNvbnN0IGNoYXIgKnN0ciA9CisgICAgICAgICIj
aWYgKC0yKSA+PiAxID09IDB4N2ZmZmZmZmZcbiIKKyAgICAgICAgInBhc3NcbiIKKyAgICAgICAg
IiNlbmRpZlxuIjsKKyAgICBjb25zdCBjaGFyICpleHBlY3RlZCA9CisgICAgICAgICJcbiIKKyAg
ICAgICAgInBhc3NcbiIKKyAgICAgICAgIlxuIjsKKworICAgIHByZXByb2Nlc3Moc3RyLCBleHBl
Y3RlZCk7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJv
Y2Vzc29yX3Rlc3RzL2lucHV0X3Rlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvaW5wdXRfdGVzdC5jcHAJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nl
c3Nvcl90ZXN0cy9pbnB1dF90ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3OCBA
QAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKy8vCisKKyNpbmNsdWRlICJQcmVwcm9jZXNzb3JUZXN0LmgiCisjaW5jbHVk
ZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL0lucHV0LmgiCisjaW5jbHVkZSAiY29tcGlsZXIvcHJl
cHJvY2Vzc29yL1Rva2VuLmgiCisKK2NsYXNzIEluaXRUZXN0IDogcHVibGljIFByZXByb2Nlc3Nv
clRlc3QKK3sKK307CisKK1RFU1RfRihJbml0VGVzdCwgWmVyb0NvdW50KQoreworICAgIEVYUEVD
VF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgwLCBOVUxMLCBOVUxMKSk7CisKKyAgICBwcDo6VG9r
ZW4gdG9rZW47CisgICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKKyAgICBFWFBFQ1RfRVEo
cHA6OlRva2VuOjpMQVNULCB0b2tlbi50eXBlKTsKK30KKworVEVTVF9GKEluaXRUZXN0LCBOdWxs
U3RyaW5nKQoreworICAgIEVYUEVDVF9GQUxTRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgTlVMTCwg
TlVMTCkpOworfQorCitURVNUKElucHV0VGVzdCwgRGVmYXVsdENvbnN0cnVjdG9yKQoreworICAg
IHBwOjpJbnB1dCBpbnB1dDsKKyAgICBFWFBFQ1RfRVEoMHUsIGlucHV0LmNvdW50KCkpOworICAg
IGludCBsaW5lTm8gPSAwOworICAgIEVYUEVDVF9FUSgwdSwgaW5wdXQucmVhZChOVUxMLCAxLCAm
bGluZU5vKSk7Cit9CisKK1RFU1QoSW5wdXRUZXN0LCBOdWxsTGVuZ3RoKQoreworICAgIGNvbnN0
IGNoYXIqIHN0cltdID0geyJmb28ifTsKKyAgICBwcDo6SW5wdXQgaW5wdXQoMSwgc3RyLCBOVUxM
KTsKKyAgICBFWFBFQ1RfRVEoM3UsIGlucHV0Lmxlbmd0aCgwKSk7Cit9CisKK1RFU1QoSW5wdXRU
ZXN0LCBOZWdhdGl2ZUxlbmd0aCkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHJbXSA9IHsiZm9vIn07
CisgICAgaW50IGxlbmd0aFtdID0gey0xfTsKKyAgICBwcDo6SW5wdXQgaW5wdXQoMSwgc3RyLCBs
ZW5ndGgpOworICAgIEVYUEVDVF9FUSgzdSwgaW5wdXQubGVuZ3RoKDApKTsKK30KKworVEVTVChJ
bnB1dFRlc3QsIEFjdHVhbExlbmd0aCkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHJbXSA9IHsiZm9v
YmFyIn07CisgICAgaW50IGxlbmd0aFtdID0gezN9OworICAgIHBwOjpJbnB1dCBpbnB1dCgxLCBz
dHIsIGxlbmd0aCk7CisgICAgLy8gTm90ZSB0aGF0IHN0cmxlbihzdHJbMF0pICE9IGxlbmd0aFsw
XS4KKyAgICAvLyBFdmVuIHRoZW4gSW5wdXQgc2hvdWxkIGp1c3QgYWNjZXB0IGFueSBub24tbmVn
YXRpdmUgbnVtYmVyLgorICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aFsw
XSksIGlucHV0Lmxlbmd0aCgwKSk7Cit9CisKK1RFU1QoSW5wdXRUZXN0LCBTdHJpbmcpCit7Cisg
ICAgY29uc3QgY2hhciogc3RyW10gPSB7ImZvbyJ9OworICAgIHBwOjpJbnB1dCBpbnB1dCgxLCBz
dHIsIE5VTEwpOworICAgIEVYUEVDVF9TVFJFUShzdHJbMF0sIGlucHV0LnN0cmluZygwKSk7Cit9
CisKK1RFU1QoSW5wdXRUZXN0LCBSZWFkU2luZ2xlU3RyaW5nKQoreworICAgIGludCBjb3VudCA9
IDE7CisgICAgY29uc3QgY2hhciogc3RyW10gPSB7ImZvbyJ9OworICAgIGNoYXIgYnVmWzRdID0g
eydcMCcsICdcMCcsICdcMCcsICdcMCd9OworCisgICAgaW50IG1heFNpemUgPSAxOworICAgIGlu
dCBsaW5lTm8gPSAwOworICAgIHBwOjpJbnB1dCBpbnB1dDEoY291bnQsIHN0ciwgTlVMTCk7Cisg
ICAgRVhQRUNUX0VRKDF1LCBpbnB1dDEucmVhZChidWYsIG1heFNpemUsICZsaW5lTm8pKTsKKyAg
ICBFWFBFQ1RfRVEoJ2YnLCBidWZbMF0pOworICAgIEVYUEVDVF9FUSgxdSwgaW5wdXQxLnJlYWQo
YnVmLCBtYXhTaXplLCAmbGluZU5vKSk7CisgICAgRVhQRUNUX0VRKCdvJywgYnVmWzBdKTsKKyAg
ICBFWFBFQ1RfRVEoMXUsIGlucHV0MS5yZWFkKGJ1ZiwgbWF4U2l6ZSwgJmxpbmVObykpOworICAg
IEVYUEVDVF9FUSgnbycsIGJ1ZlswXSk7CisgICAgRVhQRUNUX0VRKDB1LCBpbnB1dDEucmVhZChi
dWYsIG1heFNpemUsICZsaW5lTm8pKTsKKworICAgIG1heFNpemUgPSAyOworICAgIHBwOjpJbnB1
dCBpbnB1dDIoY291bnQsIHN0ciwgTlVMTCk7CisgICAgRVhQRUNUX0VRKDJ1LCBpbnB1dDIucmVh
ZChidWYsIG1heFNpemUsICZsaW5lTm8pKTsKKyAgICBFWFBFQ1RfU1RSRVEoImZvIiwgYnVmKTsK
KyAgICBFWFBFQ1RfRVEoMXUsIGlucHV0Mi5yZWFkKGJ1ZiwgbWF4U2l6ZSwgJmxpbmVObykpOwor
ICAgIEVYUEVDVF9FUSgnbycsIGJ1ZlswXSk7CisgICAgRVhQRUNUX0VRKDB1LCBpbnB1dDIucmVh
ZChidWYsIG1heFNpemUsICZsaW5lTm8pKTsKKworICAgIG1heFNpemUgPSAzOworICAgIHBwOjpJ
bnB1dCBpbnB1dDMoY291bnQsIHN0ciwgTlVMTCk7CisgICAgRVhQRUNUX0VRKDN1LCBpbnB1dDMu
cmVhZChidWYsIG1heFNpemUsICZsaW5lTm8pKTsKKyAgICBFWFBFQ1RfU1RSRVEoImZvbyIsIGJ1
Zik7CisgICAgRVhQRUNUX0VRKDB1LCBpbnB1dDMucmVhZChidWYsIG1heFNpemUsICZsaW5lTm8p
KTsKKworICAgIG1heFNpemUgPSA0OworICAgIHBwOjpJbnB1dCBpbnB1dDQoY291bnQsIHN0ciwg
TlVMTCk7CisgICAgRVhQRUNUX0VRKDN1LCBpbnB1dDQucmVhZChidWYsIG1heFNpemUsICZsaW5l
Tm8pKTsKKyAgICBFWFBFQ1RfU1RSRVEoImZvbyIsIGJ1Zik7CisgICAgRVhQRUNUX0VRKDB1LCBp
bnB1dDQucmVhZChidWYsIG1heFNpemUsICZsaW5lTm8pKTsKK30KKworVEVTVChJbnB1dFRlc3Qs
IFJlYWRNdWx0aXBsZVN0cmluZ3MpCit7CisgICAgaW50IGNvdW50ID0gMzsKKyAgICBjb25zdCBj
aGFyKiBzdHJbXSA9IHsiZiIsICJvIiwgIm8ifTsKKyAgICBjaGFyIGJ1Zls0XSA9IHsnXDAnLCAn
XDAnLCAnXDAnLCAnXDAnfTsKKworICAgIGludCBtYXhTaXplID0gMTsKKyAgICBpbnQgbGluZU5v
ID0gMDsKKyAgICBwcDo6SW5wdXQgaW5wdXQxKGNvdW50LCBzdHIsIE5VTEwpOworICAgIEVYUEVD
VF9FUSgxdSwgaW5wdXQxLnJlYWQoYnVmLCBtYXhTaXplLCAmbGluZU5vKSk7CisgICAgRVhQRUNU
X0VRKCdmJywgYnVmWzBdKTsKKyAgICBFWFBFQ1RfRVEoMXUsIGlucHV0MS5yZWFkKGJ1ZiwgbWF4
U2l6ZSwgJmxpbmVObykpOworICAgIEVYUEVDVF9FUSgnbycsIGJ1ZlswXSk7CisgICAgRVhQRUNU
X0VRKDF1LCBpbnB1dDEucmVhZChidWYsIG1heFNpemUsICZsaW5lTm8pKTsKKyAgICBFWFBFQ1Rf
RVEoJ28nLCBidWZbMF0pOworICAgIEVYUEVDVF9FUSgwdSwgaW5wdXQxLnJlYWQoYnVmLCBtYXhT
aXplLCAmbGluZU5vKSk7CisKKyAgICBtYXhTaXplID0gMjsKKyAgICBwcDo6SW5wdXQgaW5wdXQy
KGNvdW50LCBzdHIsIE5VTEwpOworICAgIEVYUEVDVF9FUSgydSwgaW5wdXQyLnJlYWQoYnVmLCBt
YXhTaXplLCAmbGluZU5vKSk7CisgICAgRVhQRUNUX1NUUkVRKCJmbyIsIGJ1Zik7CisgICAgRVhQ
RUNUX0VRKDF1LCBpbnB1dDIucmVhZChidWYsIG1heFNpemUsICZsaW5lTm8pKTsKKyAgICBFWFBF
Q1RfRVEoJ28nLCBidWZbMF0pOworICAgIEVYUEVDVF9FUSgwdSwgaW5wdXQyLnJlYWQoYnVmLCBt
YXhTaXplLCAmbGluZU5vKSk7CisKKyAgICBtYXhTaXplID0gMzsKKyAgICBwcDo6SW5wdXQgaW5w
dXQzKGNvdW50LCBzdHIsIE5VTEwpOworICAgIEVYUEVDVF9FUSgzdSwgaW5wdXQzLnJlYWQoYnVm
LCBtYXhTaXplLCAmbGluZU5vKSk7CisgICAgRVhQRUNUX1NUUkVRKCJmb28iLCBidWYpOworICAg
IEVYUEVDVF9FUSgwdSwgaW5wdXQzLnJlYWQoYnVmLCBtYXhTaXplLCAmbGluZU5vKSk7CisKKyAg
ICBtYXhTaXplID0gNDsKKyAgICBwcDo6SW5wdXQgaW5wdXQ0KGNvdW50LCBzdHIsIE5VTEwpOwor
ICAgIEVYUEVDVF9FUSgzdSwgaW5wdXQ0LnJlYWQoYnVmLCBtYXhTaXplLCAmbGluZU5vKSk7Cisg
ICAgRVhQRUNUX1NUUkVRKCJmb28iLCBidWYpOworICAgIEVYUEVDVF9FUSgwdSwgaW5wdXQ0LnJl
YWQoYnVmLCBtYXhTaXplLCAmbGluZU5vKSk7Cit9CisKK1RFU1QoSW5wdXRUZXN0LCBSZWFkU3Ry
aW5nc1dpdGhMZW5ndGgpCit7CisgICAgaW50IGNvdW50ID0gMjsKKyAgICBjb25zdCBjaGFyKiBz
dHJbXSA9IHsiZm9vIiwgImJhciJ9OworICAgIC8vIE5vdGUgdGhhdCB0aGUgbGVuZ3RoIGZvciB0
aGUgZmlyc3Qgc3RyaW5nIGlzIDIgd2hpY2ggaXMgbGVzcyB0aGFuCisgICAgLy8gc3RybGVuKHN0
clswXS4gV2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbGFzdCBjaGFyYWN0ZXIgaXMgaWdu
b3JlZC4KKyAgICBpbnQgbGVuZ3RoW10gPSB7MiwgM307CisgICAgY2hhciBidWZbNl0gPSB7J1ww
JywgJ1wwJywgJ1wwJywgJ1wwJywgJ1wwJywgJ1wwJ307CisgICAgc2l6ZV90IG1heFNpemUgPSA1
OworICAgIGludCBsaW5lTm8gPSAwOworCisgICAgcHA6OklucHV0IGlucHV0KGNvdW50LCBzdHIs
IGxlbmd0aCk7CisgICAgRVhQRUNUX0VRKG1heFNpemUsIGlucHV0LnJlYWQoYnVmLCBtYXhTaXpl
LCAmbGluZU5vKSk7CisgICAgRVhQRUNUX1NUUkVRKCJmb2JhciIsIGJ1Zik7Cit9CisKK1RFU1Qo
SW5wdXRUZXN0LCBSZWFkU3RyaW5nc1dpdGhMaW5lQ29udGludWF0aW9uKQoreworICAgIGludCBj
b3VudCA9IDI7CisgICAgY29uc3QgY2hhciogc3RyW10gPSB7ImZvb1xcIiwgIlxuYmFcXFxyXG5y
In07CisgICAgaW50IGxlbmd0aFtdID0gezQsIDd9OworICAgIGNoYXIgYnVmWzExXSA9IHsnXDAn
LCAnXDAnLCAnXDAnLCAnXDAnLCAnXDAnLCAnXDAnLCAnXDAnLCAnXDAnLCAnXDAnLCAnXDAnLCAn
XDAnfTsKKyAgICBzaXplX3QgbWF4U2l6ZSA9IDExOworICAgIGludCBsaW5lTm8gPSAwOworCisg
ICAgcHA6OklucHV0IGlucHV0KGNvdW50LCBzdHIsIGxlbmd0aCk7CisgICAgRVhQRUNUX0VRKDN1
LCBpbnB1dC5yZWFkKGJ1ZiwgbWF4U2l6ZSwgJmxpbmVObykpOworICAgIEVYUEVDVF9FUSgwLCBs
aW5lTm8pOworICAgIEVYUEVDVF9FUSgydSwgaW5wdXQucmVhZChidWYgKyAzLCBtYXhTaXplIC0g
MywgJmxpbmVObykpOworICAgIEVYUEVDVF9FUSgxLCBsaW5lTm8pOworICAgIEVYUEVDVF9FUSgx
dSwgaW5wdXQucmVhZChidWYgKyA1LCBtYXhTaXplIC0gNSwgJmxpbmVObykpOworICAgIEVYUEVD
VF9FUSgyLCBsaW5lTm8pOworICAgIEVYUEVDVF9TVFJFUSgiZm9vYmFyIiwgYnVmKTsKK30KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMv
bG9jYXRpb25fdGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9sb2NhdGlvbl90ZXN0LmNwcAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rl
c3RzL2xvY2F0aW9uX3Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUxIEBACisv
LworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKworI2luY2x1ZGUgIlByZXByb2Nlc3NvclRlc3QuaCIKKyNpbmNsdWRlICJj
b21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uaCIKKworY2xhc3MgTG9jYXRpb25UZXN0IDogcHVi
bGljIFByZXByb2Nlc3NvclRlc3QKK3sKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGV4cGVjdExvY2F0
aW9uKGludCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0
IHN0cmluZ1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IGxlbmd0aFtdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHA6OlNvdXJjZUxvY2F0aW9uJiBsb2NhdGlv
bikKKyAgICB7CisgICAgICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdChjb3VudCwg
c3RyaW5nLCBsZW5ndGgpKTsKKworICAgICAgICBwcDo6VG9rZW4gdG9rZW47CisgICAgICAgIG1Q
cmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7CisgICAgICAgIEVYUEVDVF9FUShwcDo6VG9rZW46OklE
RU5USUZJRVIsIHRva2VuLnR5cGUpOworICAgICAgICBFWFBFQ1RfRVEoImZvbyIsIHRva2VuLnRl
eHQpOworCisgICAgICAgIEVYUEVDVF9FUShsb2NhdGlvbi5maWxlLCB0b2tlbi5sb2NhdGlvbi5m
aWxlKTsKKyAgICAgICAgRVhQRUNUX0VRKGxvY2F0aW9uLmxpbmUsIHRva2VuLmxvY2F0aW9uLmxp
bmUpOworICAgIH0KK307CisKK1RFU1RfRihMb2NhdGlvblRlc3QsIFN0cmluZzBfTGluZTEpCit7
CisgICAgY29uc3QgY2hhciogc3RyID0gImZvbyI7CisgICAgcHA6OlNvdXJjZUxvY2F0aW9uIGxv
YygwLCAxKTsKKworICAgIFNDT1BFRF9UUkFDRSgiU3RyaW5nMF9MaW5lMSIpOworICAgIGV4cGVj
dExvY2F0aW9uKDEsICZzdHIsIE5VTEwsIGxvYyk7Cit9CisKK1RFU1RfRihMb2NhdGlvblRlc3Qs
IFN0cmluZzBfTGluZTIpCit7CisgICAgY29uc3QgY2hhciogc3RyID0gIlxuZm9vIjsKKyAgICBw
cDo6U291cmNlTG9jYXRpb24gbG9jKDAsIDIpOworCisgICAgU0NPUEVEX1RSQUNFKCJTdHJpbmcw
X0xpbmUyIik7CisgICAgZXhwZWN0TG9jYXRpb24oMSwgJnN0ciwgTlVMTCwgbG9jKTsKK30KKwor
VEVTVF9GKExvY2F0aW9uVGVzdCwgU3RyaW5nMV9MaW5lMSkKK3sKKyAgICBjb25zdCBjaGFyKiBj
b25zdCBzdHJbXSA9IHsiXG5cbiIsICJmb28ifTsKKyAgICBwcDo6U291cmNlTG9jYXRpb24gbG9j
KDEsIDEpOworCisgICAgU0NPUEVEX1RSQUNFKCJTdHJpbmcxX0xpbmUxIik7CisgICAgZXhwZWN0
TG9jYXRpb24oMiwgc3RyLCBOVUxMLCBsb2MpOworfQorCitURVNUX0YoTG9jYXRpb25UZXN0LCBT
dHJpbmcxX0xpbmUyKQoreworICAgIGNvbnN0IGNoYXIqIGNvbnN0IHN0cltdID0geyJcblxuIiwg
IlxuZm9vIn07CisgICAgcHA6OlNvdXJjZUxvY2F0aW9uIGxvYygxLCAyKTsKKworICAgIFNDT1BF
RF9UUkFDRSgiU3RyaW5nMV9MaW5lMiIpOworICAgIGV4cGVjdExvY2F0aW9uKDIsIHN0ciwgTlVM
TCwgbG9jKTsKK30KKworVEVTVF9GKExvY2F0aW9uVGVzdCwgTmV3bGluZUluc2lkZUNvbW1lbnRD
b3VudGVkKQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIvKlxuXG4qL2ZvbyI7CisgICAgcHA6
OlNvdXJjZUxvY2F0aW9uIGxvYygwLCAzKTsKKworICAgIFNDT1BFRF9UUkFDRSgiTmV3bGluZUlu
c2lkZUNvbW1lbnRDb3VudGVkIik7CisgICAgZXhwZWN0TG9jYXRpb24oMSwgJnN0ciwgTlVMTCwg
bG9jKTsKK30KKworVEVTVF9GKExvY2F0aW9uVGVzdCwgRXJyb3JMb2NhdGlvbkFmdGVyQ29tbWVu
dCkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAiLypcblxuKi9AIjsKKworICAgIEFTU0VSVF9U
UlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCBOVUxMKSk7CisgICAgRVhQRUNUX0NBTEwo
bURpYWdub3N0aWNzLCBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX0lOVkFMSURfQ0hBUkFDVEVS
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9u
KDAsIDMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkAiKSk7CisKKyAg
ICBwcDo6VG9rZW4gdG9rZW47CisgICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKK30KKwor
Ly8gVGhlIGxvY2F0aW9uIG9mIGEgdG9rZW4gc3RyYWRkbGluZyB0d28gb3IgbW9yZSBzdHJpbmdz
IGlzIHRoYXQgb2YgdGhlCisvLyBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHRva2VuLgorCitURVNU
X0YoTG9jYXRpb25UZXN0LCBUb2tlblN0cmFkZGxpbmdUd29TdHJpbmdzKQoreworICAgIGNvbnN0
IGNoYXIqIGNvbnN0IHN0cltdID0geyJmIiwgIm9vIn07CisgICAgcHA6OlNvdXJjZUxvY2F0aW9u
IGxvYygwLCAxKTsKKworICAgIFNDT1BFRF9UUkFDRSgiVG9rZW5TdHJhZGRsaW5nVHdvU3RyaW5n
cyIpOworICAgIGV4cGVjdExvY2F0aW9uKDIsIHN0ciwgTlVMTCwgbG9jKTsKK30KKworVEVTVF9G
KExvY2F0aW9uVGVzdCwgVG9rZW5TdHJhZGRsaW5nVGhyZWVTdHJpbmdzKQoreworICAgIGNvbnN0
IGNoYXIqIGNvbnN0IHN0cltdID0geyJmIiwgIm8iLCAibyJ9OworICAgIHBwOjpTb3VyY2VMb2Nh
dGlvbiBsb2MoMCwgMSk7CisKKyAgICBTQ09QRURfVFJBQ0UoIlRva2VuU3RyYWRkbGluZ1RocmVl
U3RyaW5ncyIpOworICAgIGV4cGVjdExvY2F0aW9uKDMsIHN0ciwgTlVMTCwgbG9jKTsKK30KKwor
VEVTVF9GKExvY2F0aW9uVGVzdCwgRW5kT2ZGaWxlV2l0aG91dE5ld2xpbmUpCit7CisgICAgY29u
c3QgY2hhciogY29uc3Qgc3RyW10gPSB7ImZvbyJ9OworICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9j
ZXNzb3IuaW5pdCgxLCBzdHIsIE5VTEwpKTsKKworICAgIHBwOjpUb2tlbiB0b2tlbjsKKyAgICBt
UHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOworICAgIEVYUEVDVF9FUShwcDo6VG9rZW46OklERU5U
SUZJRVIsIHRva2VuLnR5cGUpOworICAgIEVYUEVDVF9FUSgiZm9vIiwgdG9rZW4udGV4dCk7Cisg
ICAgRVhQRUNUX0VRKDAsIHRva2VuLmxvY2F0aW9uLmZpbGUpOworICAgIEVYUEVDVF9FUSgxLCB0
b2tlbi5sb2NhdGlvbi5saW5lKTsKKworICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Cisg
ICAgRVhQRUNUX0VRKHBwOjpUb2tlbjo6TEFTVCwgdG9rZW4udHlwZSk7CisgICAgRVhQRUNUX0VR
KDAsIHRva2VuLmxvY2F0aW9uLmZpbGUpOworICAgIEVYUEVDVF9FUSgxLCB0b2tlbi5sb2NhdGlv
bi5saW5lKTsKK30KKworVEVTVF9GKExvY2F0aW9uVGVzdCwgRW5kT2ZGaWxlQWZ0ZXJOZXdsaW5l
KQoreworICAgIGNvbnN0IGNoYXIqIGNvbnN0IHN0cltdID0geyJmb29cbiJ9OworICAgIEFTU0VS
VF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCBzdHIsIE5VTEwpKTsKKworICAgIHBwOjpUb2tl
biB0b2tlbjsKKyAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOworICAgIEVYUEVDVF9FUShw
cDo6VG9rZW46OklERU5USUZJRVIsIHRva2VuLnR5cGUpOworICAgIEVYUEVDVF9FUSgiZm9vIiwg
dG9rZW4udGV4dCk7CisgICAgRVhQRUNUX0VRKDAsIHRva2VuLmxvY2F0aW9uLmZpbGUpOworICAg
IEVYUEVDVF9FUSgxLCB0b2tlbi5sb2NhdGlvbi5saW5lKTsKKworICAgIG1QcmVwcm9jZXNzb3Iu
bGV4KCZ0b2tlbik7CisgICAgRVhQRUNUX0VRKHBwOjpUb2tlbjo6TEFTVCwgdG9rZW4udHlwZSk7
CisgICAgRVhQRUNUX0VRKDAsIHRva2VuLmxvY2F0aW9uLmZpbGUpOworICAgIEVYUEVDVF9FUSgy
LCB0b2tlbi5sb2NhdGlvbi5saW5lKTsKK30KKworVEVTVF9GKExvY2F0aW9uVGVzdCwgRW5kT2ZG
aWxlQWZ0ZXJFbXB0eVN0cmluZykKK3sKKyAgICBjb25zdCBjaGFyKiBjb25zdCBzdHJbXSA9IHsi
Zm9vXG4iLCAiXG4iLCAiIn07CisgICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDMs
IHN0ciwgTlVMTCkpOworCisgICAgcHA6OlRva2VuIHRva2VuOworICAgIG1QcmVwcm9jZXNzb3Iu
bGV4KCZ0b2tlbik7CisgICAgRVhQRUNUX0VRKHBwOjpUb2tlbjo6SURFTlRJRklFUiwgdG9rZW4u
dHlwZSk7CisgICAgRVhQRUNUX0VRKCJmb28iLCB0b2tlbi50ZXh0KTsKKyAgICBFWFBFQ1RfRVEo
MCwgdG9rZW4ubG9jYXRpb24uZmlsZSk7CisgICAgRVhQRUNUX0VRKDEsIHRva2VuLmxvY2F0aW9u
LmxpbmUpOworCisgICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKKyAgICBFWFBFQ1RfRVEo
cHA6OlRva2VuOjpMQVNULCB0b2tlbi50eXBlKTsKKyAgICBFWFBFQ1RfRVEoMiwgdG9rZW4ubG9j
YXRpb24uZmlsZSk7CisgICAgRVhQRUNUX0VRKDEsIHRva2VuLmxvY2F0aW9uLmxpbmUpOworfQor
CitURVNUX0YoTG9jYXRpb25UZXN0LCBWYWxpZExpbmVEaXJlY3RpdmUxKQoreworICAgIGNvbnN0
IGNoYXIqIHN0ciA9ICIjbGluZSAxMFxuIgorICAgICAgICAgICAgICAgICAgICAgICJmb28iOwor
ICAgIHBwOjpTb3VyY2VMb2NhdGlvbiBsb2MoMCwgMTApOworCisgICAgU0NPUEVEX1RSQUNFKCJW
YWxpZExpbmVEaXJlY3RpdmUxIik7CisgICAgZXhwZWN0TG9jYXRpb24oMSwgJnN0ciwgTlVMTCwg
bG9jKTsKK30KKworVEVTVF9GKExvY2F0aW9uVGVzdCwgVmFsaWRMaW5lRGlyZWN0aXZlMikKK3sK
KyAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2xpbmUgMTAgMjBcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAiZm9vIjsKKyAgICBwcDo6U291cmNlTG9jYXRpb24gbG9jKDIwLCAxMCk7CisKKyAgICBT
Q09QRURfVFJBQ0UoIlZhbGlkTGluZURpcmVjdGl2ZTIiKTsKKyAgICBleHBlY3RMb2NhdGlvbigx
LCAmc3RyLCBOVUxMLCBsb2MpOworfQorCitURVNUX0YoTG9jYXRpb25UZXN0LCBMaW5lRGlyZWN0
aXZlQ29tbWVudHNJZ25vcmVkKQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIvKiBiYXIgKi8i
CisgICAgICAgICAgICAgICAgICAgICAgIiMiCisgICAgICAgICAgICAgICAgICAgICAgIi8qIGJh
ciAqLyIKKyAgICAgICAgICAgICAgICAgICAgICAibGluZSIKKyAgICAgICAgICAgICAgICAgICAg
ICAiLyogYmFyICovIgorICAgICAgICAgICAgICAgICAgICAgICIxMCIKKyAgICAgICAgICAgICAg
ICAgICAgICAiLyogYmFyICovIgorICAgICAgICAgICAgICAgICAgICAgICIyMCIKKyAgICAgICAg
ICAgICAgICAgICAgICAiLyogYmFyICovIgorICAgICAgICAgICAgICAgICAgICAgICIvLyBiYXIg
ICAiCisgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICJm
b28iOworICAgIHBwOjpTb3VyY2VMb2NhdGlvbiBsb2MoMjAsIDEwKTsKKworICAgIFNDT1BFRF9U
UkFDRSgiTGluZURpcmVjdGl2ZUNvbW1lbnRzSWdub3JlZCIpOworICAgIGV4cGVjdExvY2F0aW9u
KDEsICZzdHIsIE5VTEwsIGxvYyk7Cit9CisKK1RFU1RfRihMb2NhdGlvblRlc3QsIExpbmVEaXJl
Y3RpdmVXaXRoTWFjcm8xKQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjZGVmaW5lIEwgMTBc
biIKKyAgICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBGKHgpIHhcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAiI2xpbmUgTCBGKDIwKVxuIgorICAgICAgICAgICAgICAgICAgICAgICJmb28i
OworICAgIHBwOjpTb3VyY2VMb2NhdGlvbiBsb2MoMjAsIDEwKTsKKworICAgIFNDT1BFRF9UUkFD
RSgiTGluZURpcmVjdGl2ZVdpdGhNYWNybzEiKTsKKyAgICBleHBlY3RMb2NhdGlvbigxLCAmc3Ry
LCBOVUxMLCBsb2MpOworfQorCitURVNUX0YoTG9jYXRpb25UZXN0LCBMaW5lRGlyZWN0aXZlV2l0
aE1hY3JvMikKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2RlZmluZSBMT0MgMTAgMjBcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAiI2xpbmUgTE9DXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgImZvbyI7CisgICAgcHA6OlNvdXJjZUxvY2F0aW9uIGxvYygyMCwgMTApOworCisgICAgU0NP
UEVEX1RSQUNFKCJMaW5lRGlyZWN0aXZlV2l0aE1hY3JvMiIpOworICAgIGV4cGVjdExvY2F0aW9u
KDEsICZzdHIsIE5VTEwsIGxvYyk7Cit9CisKK1RFU1RfRihMb2NhdGlvblRlc3QsIExpbmVEaXJl
Y3RpdmVXaXRoUHJlZGVmaW5lZE1hY3JvKQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjbGlu
ZSBfX0xJTkVfXyBfX0ZJTEVfX1xuIgorICAgICAgICAgICAgICAgICAgICAgICJmb28iOworICAg
IHBwOjpTb3VyY2VMb2NhdGlvbiBsb2MoMCwgMSk7CisKKyAgICBTQ09QRURfVFJBQ0UoIkxpbmVE
aXJlY3RpdmVXaXRoTWFjcm8iKTsKKyAgICBleHBlY3RMb2NhdGlvbigxLCAmc3RyLCBOVUxMLCBs
b2MpOworfQorCitURVNUX0YoTG9jYXRpb25UZXN0LCBMaW5lRGlyZWN0aXZlTmV3bGluZUJlZm9y
ZVN0cmluZ0JyZWFrKQoreworICAgIGNvbnN0IGNoYXIqIGNvbnN0IHN0cltdID0geyIjbGluZSAx
MCAyMFxuIiwgImZvbyJ9OworICAgIC8vIFN0cmluZyBudW1iZXIgaXMgaW5jcmVtZW50ZWQgYWZ0
ZXIgaXQgaXMgc2V0IGJ5IHRoZSBsaW5lIGRpcmVjdGl2ZS4KKyAgICAvLyBBbHNvIG5vdGljZSB0
aGF0IGxpbmUgbnVtYmVyIGlzIHJlc2V0IGFmdGVyIHRoZSBzdHJpbmcgYnJlYWsuCisgICAgcHA6
OlNvdXJjZUxvY2F0aW9uIGxvYygyMSwgMSk7CisKKyAgICBTQ09QRURfVFJBQ0UoIkxpbmVEaXJl
Y3RpdmVOZXdsaW5lQmVmb3JlU3RyaW5nQnJlYWsiKTsKKyAgICBleHBlY3RMb2NhdGlvbigyLCBz
dHIsIE5VTEwsIGxvYyk7Cit9CisKK1RFU1RfRihMb2NhdGlvblRlc3QsIExpbmVEaXJlY3RpdmVO
ZXdsaW5lQWZ0ZXJTdHJpbmdCcmVhaykKK3sKKyAgICBjb25zdCBjaGFyKiBjb25zdCBzdHJbXSA9
IHsiI2xpbmUgMTAgMjAiLCAiXG5mb28ifTsKKyAgICAvLyBTdHJpbmcgbnVtYmVyIGlzIGluY3Jl
bWVudGVkIGJlZm9yZSBpdCBpcyBzZXQgYnkgdGhlIGxpbmUgZGlyZWN0aXZlLgorICAgIHBwOjpT
b3VyY2VMb2NhdGlvbiBsb2MoMjAsIDEwKTsKKworICAgIFNDT1BFRF9UUkFDRSgiTGluZURpcmVj
dGl2ZU5ld2xpbmVBZnRlclN0cmluZ0JyZWFrIik7CisgICAgZXhwZWN0TG9jYXRpb24oMiwgc3Ry
LCBOVUxMLCBsb2MpOworfQorCitURVNUX0YoTG9jYXRpb25UZXN0LCBMaW5lRGlyZWN0aXZlTWlz
c2luZ05ld2xpbmUpCit7CisgICAgY29uc3QgY2hhciogc3RyID0gIiNsaW5lIDEwIjsKKyAgICBB
U1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJnN0ciwgTlVMTCkpOworCisgICAgdXNp
bmcgdGVzdGluZzo6XzsKKyAgICAvLyBFcnJvciByZXBvcnRlZCBhYm91dCBFT0YuCisgICAgRVhQ
RUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX0VPRl9JTl9E
SVJFQ1RJVkUsIF8sIF8pKTsKKworICAgIHBwOjpUb2tlbiB0b2tlbjsKKyAgICBtUHJlcHJvY2Vz
c29yLmxleCgmdG9rZW4pOworfQorCitzdHJ1Y3QgTGluZVRlc3RQYXJhbQoreworICAgIGNvbnN0
IGNoYXIqIHN0cjsKKyAgICBwcDo6RGlhZ25vc3RpY3M6OklEIGlkOworfTsKKworY2xhc3MgSW52
YWxpZExpbmVUZXN0IDogcHVibGljIExvY2F0aW9uVGVzdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHB1YmxpYyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8TGluZVRlc3RQYXJhbT4KK3sK
K307CisKK1RFU1RfUChJbnZhbGlkTGluZVRlc3QsIElkZW50aWZpZWQpCit7CisgICAgTGluZVRl
c3RQYXJhbSBwYXJhbSA9IEdldFBhcmFtKCk7CisgICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nv
ci5pbml0KDEsICZwYXJhbS5zdHIsIE5VTEwpKTsKKworICAgIHVzaW5nIHRlc3Rpbmc6Ol87Cisg
ICAgLy8gSW52YWxpZCBsaW5lIGRpcmVjdGl2ZSBjYWxsLgorICAgIEVYUEVDVF9DQUxMKG1EaWFn
bm9zdGljcywgcHJpbnQocGFyYW0uaWQsIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwgXykpOwor
CisgICAgcHA6OlRva2VuIHRva2VuOworICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Cit9
CisKK3N0YXRpYyBjb25zdCBMaW5lVGVzdFBhcmFtIGtQYXJhbXNbXSA9IHsKKyAgICB7IiNsaW5l
XG4iLCBwcDo6RGlhZ25vc3RpY3M6OlBQX0lOVkFMSURfTElORV9ESVJFQ1RJVkV9LAorICAgIHsi
I2xpbmUgZm9vXG4iLCBwcDo6RGlhZ25vc3RpY3M6OlBQX0lOVkFMSURfTElORV9OVU1CRVJ9LAor
ICAgIHsiI2xpbmUgZGVmaW5lZChmb28pXG4iLCBwcDo6RGlhZ25vc3RpY3M6OlBQX0lOVkFMSURf
TElORV9OVU1CRVJ9LAorICAgIHsiI2xpbmUgMTAgZm9vXG4iLCBwcDo6RGlhZ25vc3RpY3M6OlBQ
X0lOVkFMSURfRklMRV9OVU1CRVJ9LAorICAgIHsiI2xpbmUgMTAgMjAgZm9vXG4iLCBwcDo6RGlh
Z25vc3RpY3M6OlBQX1VORVhQRUNURURfVE9LRU59LAorICAgIHsiI2xpbmUgMHhmZmZmZmZmZlxu
IiwgcHA6OkRpYWdub3N0aWNzOjpQUF9JTlRFR0VSX09WRVJGTE9XfSwKKyAgICB7IiNsaW5lIDEw
IDB4ZmZmZmZmZmZcbiIsIHBwOjpEaWFnbm9zdGljczo6UFBfSU5URUdFUl9PVkVSRkxPV319Owor
CitJTlNUQU5USUFURV9URVNUX0NBU0VfUChBbGwsIEludmFsaWRMaW5lVGVzdCwgdGVzdGluZzo6
VmFsdWVzSW4oa1BhcmFtcykpOworCitzdHJ1Y3QgTGluZUV4cHJlc3Npb25UZXN0UGFyYW0KK3sK
KyAgICBjb25zdCBjaGFyICpleHByZXNzaW9uOworICAgIGludCBleHBlY3RlZExpbmU7Cit9Owor
CitjbGFzcyBMaW5lRXhwcmVzc2lvblRlc3QgOiBwdWJsaWMgTG9jYXRpb25UZXN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVibGljIHRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxM
aW5lRXhwcmVzc2lvblRlc3RQYXJhbT4KK3sKK307CisKK1RFU1RfUChMaW5lRXhwcmVzc2lvblRl
c3QsIEV4cHJlc3Npb25FdmFsdWF0aW9uKQoreworICAgIExpbmVFeHByZXNzaW9uVGVzdFBhcmFt
IHBhcmFtID0gR2V0UGFyYW0oKTsKKyAgICBjb25zdCBjaGFyICpzdHJzWzNdID0geyIjbGluZSAi
LCBwYXJhbS5leHByZXNzaW9uLCAiXG5mb28ifTsKKworICAgIHBwOjpTb3VyY2VMb2NhdGlvbiBs
b2MoMiwgcGFyYW0uZXhwZWN0ZWRMaW5lKTsKKworICAgIGV4cGVjdExvY2F0aW9uKDMsIHN0cnMs
IE5VTEwsIGxvYyk7Cit9CisKK3N0YXRpYyBjb25zdCBMaW5lRXhwcmVzc2lvblRlc3RQYXJhbSBr
UGFyYW1zTGluZUV4cHJlc3Npb25UZXN0W10gPSB7CisgICAgeyIxICsgMiIsIDN9LAorICAgIHsi
NSAtIDMiLCAyfSwKKyAgICB7IjcgKiAxMSIsIDc3fSwKKyAgICB7IjIwIC8gMTAiLCAyfSwKKyAg
ICB7IjEwICUgNSIsIDB9LAorICAgIHsiNyAmJiAzIiwgMX0sCisgICAgeyI3IHx8IDAiLCAxfSwK
KyAgICB7IjExID09IDExIiwgMX0sCisgICAgeyIxMSAhPSAxMSIsIDB9LAorICAgIHsiMTEgPiA3
IiwgMX0sCisgICAgeyIxMSA8IDciLCAwfSwKKyAgICB7IjExID49IDciLCAxfSwKKyAgICB7IjEx
IDw9IDciLCAwfSwKKyAgICB7IiExMSIsIDB9LAorICAgIHsiLTEiLCAtMX0sCisgICAgeyIrOSIs
IDl9LAorICAgIHsiKDEgKyAyKSAqIDQiLCAxMn0sCisgICAgeyIzIHwgNSIsIDd9LAorICAgIHsi
MyBeIDUiLCA2fSwKKyAgICB7IjMgJiA1IiwgMX0sCisgICAgeyJ+NSIsIH41fSwKKyAgICB7IjIg
PDwgMyIsIDE2fSwKKyAgICB7IjE2ID4+IDIiLCA0fX07CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FT
RV9QKEFsbCwgTGluZUV4cHJlc3Npb25UZXN0LCB0ZXN0aW5nOjpWYWx1ZXNJbihrUGFyYW1zTGlu
ZUV4cHJlc3Npb25UZXN0KSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvcHJlcHJvY2Vzc29yX3Rlc3RzL251bWJlcl90ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL251bWJlcl90
ZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvcHJlcHJvY2Vzc29yX3Rlc3RzL251bWJlcl90ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE3MCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpbmNsdWRlICJQcmVwcm9jZXNzb3JUZXN0
LmgiCisjaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmgiCisKKyNkZWZpbmUg
Q0xPU0VEX1JBTkdFKHgsIHkpIHRlc3Rpbmc6OlJhbmdlKHgsIHN0YXRpY19jYXN0PGNoYXI+KCh5
KSArIDEpKQorCitjbGFzcyBJbnZhbGlkTnVtYmVyVGVzdCA6IHB1YmxpYyBQcmVwcm9jZXNzb3JU
ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdGVzdGluZzo6V2l0aFBhcmFt
SW50ZXJmYWNlPGNvbnN0IGNoYXIqPgoreworfTsKKworVEVTVF9QKEludmFsaWROdW1iZXJUZXN0
LCBJbnZhbGlkTnVtYmVySWRlbnRpZmllZCkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSBHZXRQ
YXJhbSgpOworICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCAwKSk7
CisKKyAgICB1c2luZyB0ZXN0aW5nOjpfOworICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywg
cHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9JTlZBTElEX05VTUJFUiwgXywgc3RyKSk7CisKKyAg
ICBwcDo6VG9rZW4gdG9rZW47CisgICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKK30KKwor
SU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoSW52YWxpZEludGVnZXJzLCBJbnZhbGlkTnVtYmVyVGVz
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlZhbHVlcygiMWEiLCAiMDgiLCAi
MHhHIikpOworCisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEludmFsaWRGbG9hdHMsIEludmFs
aWROdW1iZXJUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6VmFsdWVzKCIx
ZWciLCAiMC5hIiwgIjAuMS4yIiwgIi4wYSIsICIuMC4xIikpOworCit0eXBlZGVmIHN0ZDo6dHIx
Ojp0dXBsZTxjb25zdCBjaGFyKiwgY2hhcj4gSW50ZWdlclBhcmFtczsKK2NsYXNzIEludGVnZXJU
ZXN0IDogcHVibGljIFByZXByb2Nlc3NvclRlc3QsCisgICAgICAgICAgICAgICAgICAgIHB1Ymxp
YyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8SW50ZWdlclBhcmFtcz4KK3sKK307CisKK1RF
U1RfUChJbnRlZ2VyVGVzdCwgSWRlbnRpZmllZCkKK3sKKyAgICBzdGQ6OnN0cmluZyBzdHIoc3Rk
Ojp0cjE6OmdldDwwPihHZXRQYXJhbSgpKSk7ICAvLyBwcmVmaXguCisgICAgc3RyLnB1c2hfYmFj
ayhzdGQ6OnRyMTo6Z2V0PDE+KEdldFBhcmFtKCkpKTsgIC8vIGRpZ2l0LgorICAgIGNvbnN0IGNo
YXIqIGNzdHIgPSBzdHIuY19zdHIoKTsKKworICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3Iu
aW5pdCgxLCAmY3N0ciwgMCkpOworCisgICAgcHA6OlRva2VuIHRva2VuOworICAgIG1QcmVwcm9j
ZXNzb3IubGV4KCZ0b2tlbik7CisgICAgRVhQRUNUX0VRKHBwOjpUb2tlbjo6Q09OU1RfSU5ULCB0
b2tlbi50eXBlKTsKKyAgICBFWFBFQ1RfRVEoc3RyLCB0b2tlbi50ZXh0KTsKK30KKworSU5TVEFO
VElBVEVfVEVTVF9DQVNFX1AoRGVjaW1hbEludGVnZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICBJbnRlZ2VyVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OkNvbWJpbmUo
dGVzdGluZzo6VmFsdWVzKCIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ0xPU0VEX1JBTkdFKCcwJywgJzknKSkpOworCitJTlNUQU5USUFURV9URVNUX0NBU0Vf
UChPY3RhbEludGVnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyVGVzdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OkNvbWJpbmUodGVzdGluZzo6VmFsdWVzKCIw
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMT1NFRF9SQU5H
RSgnMCcsICc3JykpKTsKKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoSGV4YWRlY2ltYWxJbnRl
Z2VyXzBfOSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEludGVnZXJUZXN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdGluZzo6Q29tYmluZSh0ZXN0aW5nOjpWYWx1ZXMoIjB4IiwgIjBY
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMT1NFRF9SQU5H
RSgnMCcsICc5JykpKTsKKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoSGV4YWRlY2ltYWxJbnRl
Z2VyX2FfZiwKKyAgICAgICAgICAgICAgICAgICAgICAgIEludGVnZXJUZXN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdGluZzo6Q29tYmluZSh0ZXN0aW5nOjpWYWx1ZXMoIjB4IiwgIjBY
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMT1NFRF9SQU5H
RSgnYScsICdmJykpKTsKKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoSGV4YWRlY2ltYWxJbnRl
Z2VyX0FfRiwKKyAgICAgICAgICAgICAgICAgICAgICAgIEludGVnZXJUZXN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdGluZzo6Q29tYmluZSh0ZXN0aW5nOjpWYWx1ZXMoIjB4IiwgIjBY
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMT1NFRF9SQU5H
RSgnQScsICdGJykpKTsKKworY2xhc3MgRmxvYXRUZXN0IDogcHVibGljIFByZXByb2Nlc3NvclRl
c3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIHZvaWQgZXhwZWN0RmxvYXQoY29uc3Qgc3RkOjpzdHJp
bmcmIHN0cikKKyAgICB7CisgICAgICAgIGNvbnN0IGNoYXIqIGNzdHIgPSBzdHIuY19zdHIoKTsK
KyAgICAgICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZjc3RyLCAwKSk7CisK
KyAgICAgICAgcHA6OlRva2VuIHRva2VuOworICAgICAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9r
ZW4pOworICAgICAgICBFWFBFQ1RfRVEocHA6OlRva2VuOjpDT05TVF9GTE9BVCwgdG9rZW4udHlw
ZSk7CisgICAgICAgIEVYUEVDVF9FUShzdHIsIHRva2VuLnRleHQpOworICAgIH0KK307CisKK3R5
cGVkZWYgc3RkOjp0cjE6OnR1cGxlPGNoYXIsIGNoYXIsIGNvbnN0IGNoYXIqLCBjaGFyPiBGbG9h
dFNjaWVudGlmaWNQYXJhbXM7CitjbGFzcyBGbG9hdFNjaWVudGlmaWNUZXN0IDoKKyAgICBwdWJs
aWMgRmxvYXRUZXN0LAorICAgIHB1YmxpYyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8Rmxv
YXRTY2llbnRpZmljUGFyYW1zPgoreworfTsKKworLy8gVGhpcyB0ZXN0IGNvdmVycyBmbG9hdGlu
ZyBwb2ludCBudW1iZXJzIG9mIGZvcm0gWzAtOV1bZUVdWystXT9bMC05XS4KK1RFU1RfUChGbG9h
dFNjaWVudGlmaWNUZXN0LCBGbG9hdElkZW50aWZpZWQpCit7CisgICAgc3RkOjpzdHJpbmcgc3Ry
OworICAgIHN0ci5wdXNoX2JhY2soc3RkOjp0cjE6OmdldDwwPihHZXRQYXJhbSgpKSk7ICAvLyBz
aWduaWZpY2FuZCBbMC05XS4KKyAgICBzdHIucHVzaF9iYWNrKHN0ZDo6dHIxOjpnZXQ8MT4oR2V0
UGFyYW0oKSkpOyAgLy8gc2VwYXJhdG9yIFtlRV0uCisgICAgc3RyLmFwcGVuZChzdGQ6OnRyMTo6
Z2V0PDI+KEdldFBhcmFtKCkpKTsgIC8vIHNpZ24gWyIgIiAiKyIgIi0iXS4KKyAgICBzdHIucHVz
aF9iYWNrKHN0ZDo6dHIxOjpnZXQ8Mz4oR2V0UGFyYW0oKSkpOyAgLy8gZXhwb25lbnQgWzAtOV0u
CisKKyAgICBTQ09QRURfVFJBQ0UoIkZsb2F0U2NpZW50aWZpY1Rlc3QiKTsKKyAgICBleHBlY3RG
bG9hdChzdHIpOworfQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChGbG9hdFNjaWVudGlmaWMs
CisgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdFNjaWVudGlmaWNUZXN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdGluZzo6Q29tYmluZShDTE9TRURfUkFOR0UoJzAnLCAnOScpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpWYWx1ZXMo
J2UnLCAnRScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
aW5nOjpWYWx1ZXMoIiIsICIrIiwgIi0iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ0xPU0VEX1JBTkdFKCcwJywgJzknKSkpOworCit0eXBlZGVmIHN0ZDo6dHIx
Ojp0dXBsZTxjaGFyLCBjaGFyPiBGbG9hdEZyYWN0aW9uUGFyYW1zOworY2xhc3MgRmxvYXRGcmFj
dGlvblRlc3QgOgorICAgIHB1YmxpYyBGbG9hdFRlc3QsCisgICAgcHVibGljIHRlc3Rpbmc6Oldp
dGhQYXJhbUludGVyZmFjZTxGbG9hdEZyYWN0aW9uUGFyYW1zPgoreworfTsKKworLy8gVGhpcyB0
ZXN0IGNvdmVycyBmbG9hdGluZyBwb2ludCBudW1iZXJzIG9mIGZvcm0gWzAtOV0iLiIgYW5kIFsw
LTldPyIuIlswLTldLgorVEVTVF9QKEZsb2F0RnJhY3Rpb25UZXN0LCBGbG9hdElkZW50aWZpZWQp
Cit7CisgICAgc3RkOjpzdHJpbmcgc3RyOworCisgICAgY2hhciBzaWduaWZpY2FuZCA9IHN0ZDo6
dHIxOjpnZXQ8MD4oR2V0UGFyYW0oKSk7CisgICAgaWYgKHNpZ25pZmljYW5kICE9ICdcMCcpCisg
ICAgICAgIHN0ci5wdXNoX2JhY2soc2lnbmlmaWNhbmQpOworCisgICAgc3RyLnB1c2hfYmFjaygn
LicpOworCisgICAgY2hhciBmcmFjdGlvbiA9IHN0ZDo6dHIxOjpnZXQ8MT4oR2V0UGFyYW0oKSk7
CisgICAgaWYgKGZyYWN0aW9uICE9ICdcMCcpCisgICAgICAgIHN0ci5wdXNoX2JhY2soZnJhY3Rp
b24pOworCisgICAgU0NPUEVEX1RSQUNFKCJGbG9hdEZyYWN0aW9uVGVzdCIpOworICAgIGV4cGVj
dEZsb2F0KHN0cik7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEZsb2F0RnJhY3Rpb25f
WF9YLAorICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRGcmFjdGlvblRlc3QsCisgICAgICAg
ICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpDb21iaW5lKENMT1NFRF9SQU5HRSgnMCcsICc5Jyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMT1NFRF9SQU5HRSgn
MCcsICc5JykpKTsKKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoRmxvYXRGcmFjdGlvbl8wX1gs
CisgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdEZyYWN0aW9uVGVzdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3Rpbmc6OkNvbWJpbmUodGVzdGluZzo6VmFsdWVzKCdcMCcpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDTE9TRURfUkFOR0UoJzAnLCAn
OScpKSk7CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEZsb2F0RnJhY3Rpb25fWF8wLAorICAg
ICAgICAgICAgICAgICAgICAgICAgRmxvYXRGcmFjdGlvblRlc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0aW5nOjpDb21iaW5lKENMT1NFRF9SQU5HRSgnMCcsICc5JyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlZhbHVlcygnXDAnKSkp
OworCisvLyBJbiB0aGUgdGVzdHMgYWJvdmUgd2UgaGF2ZSB0ZXN0ZWQgaW5kaXZpZHVhbCBwYXJ0
cyBvZiBhIGZsb2F0IHNlcGFyYXRlbHkuCisvLyBUaGlzIHRlc3QgaGFzIGFsbCBwYXJ0cyBvZiBh
IGZsb2F0LgorVEVTVF9GKEZsb2F0VGVzdCwgRnJhY3Rpb25TY2llbnRpZmljKQoreworICAgIFND
T1BFRF9UUkFDRSgiRnJhY3Rpb25TY2llbnRpZmljIik7CisgICAgZXhwZWN0RmxvYXQoIjAuMWUr
MiIpOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nl
c3Nvcl90ZXN0cy9vcGVyYXRvcl90ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL29wZXJhdG9yX3Rlc3QuY3Bw
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVw
cm9jZXNzb3JfdGVzdHMvb3BlcmF0b3JfdGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw4MCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpbmNsdWRlICJQcmVwcm9jZXNzb3JUZXN0LmgiCisj
aW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmgiCisKK3N0cnVjdCBPcGVyYXRv
clRlc3RQYXJhbQoreworICAgIGNvbnN0IGNoYXIqIHN0cjsKKyAgICBpbnQgb3A7Cit9OworCitj
bGFzcyBPcGVyYXRvclRlc3QgOiBwdWJsaWMgUHJlcHJvY2Vzc29yVGVzdCwKKyAgICAgICAgICAg
ICAgICAgICAgIHB1YmxpYyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8T3BlcmF0b3JUZXN0
UGFyYW0+Cit7Cit9OworCitURVNUX1AoT3BlcmF0b3JUZXN0LCBJZGVudGlmaWVkKQoreworICAg
IE9wZXJhdG9yVGVzdFBhcmFtIHBhcmFtID0gR2V0UGFyYW0oKTsKKworICAgIEFTU0VSVF9UUlVF
KG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmcGFyYW0uc3RyLCAwKSk7CisKKyAgICBwcDo6VG9rZW4g
dG9rZW47CisgICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKKyAgICBFWFBFQ1RfRVEocGFy
YW0ub3AsIHRva2VuLnR5cGUpOworICAgIEVYUEVDVF9FUShwYXJhbS5zdHIsIHRva2VuLnRleHQp
OworfQorCitzdGF0aWMgY29uc3QgT3BlcmF0b3JUZXN0UGFyYW0ga09wZXJhdG9yc1tdID0gewor
ICAgIHsiKCIsICcoJ30sCisgICAgeyIpIiwgJyknfSwKKyAgICB7IlsiLCAnWyd9LAorICAgIHsi
XSIsICddJ30sCisgICAgeyIuIiwgJy4nfSwKKyAgICB7IisiLCAnKyd9LAorICAgIHsiLSIsICct
J30sCisgICAgeyJ+IiwgJ34nfSwKKyAgICB7IiEiLCAnISd9LAorICAgIHsiKiIsICcqJ30sCisg
ICAgeyIvIiwgJy8nfSwKKyAgICB7IiUiLCAnJSd9LAorICAgIHsiPCIsICc8J30sCisgICAgeyI+
IiwgJz4nfSwKKyAgICB7IiYiLCAnJid9LAorICAgIHsiXiIsICdeJ30sCisgICAgeyJ8IiwgJ3wn
fSwKKyAgICB7Ij8iLCAnPyd9LAorICAgIHsiOiIsICc6J30sCisgICAgeyI9IiwgJz0nfSwKKyAg
ICB7IiwiLCAnLCd9LAorICAgIHsiKysiLCAgcHA6OlRva2VuOjpPUF9JTkN9LAorICAgIHsiLS0i
LCAgcHA6OlRva2VuOjpPUF9ERUN9LAorICAgIHsiPDwiLCAgcHA6OlRva2VuOjpPUF9MRUZUfSwK
KyAgICB7Ij4+IiwgIHBwOjpUb2tlbjo6T1BfUklHSFR9LAorICAgIHsiPD0iLCAgcHA6OlRva2Vu
OjpPUF9MRX0sCisgICAgeyI+PSIsICBwcDo6VG9rZW46Ok9QX0dFfSwKKyAgICB7Ij09IiwgIHBw
OjpUb2tlbjo6T1BfRVF9LAorICAgIHsiIT0iLCAgcHA6OlRva2VuOjpPUF9ORX0sCisgICAgeyIm
JiIsICBwcDo6VG9rZW46Ok9QX0FORH0sCisgICAgeyJeXiIsICBwcDo6VG9rZW46Ok9QX1hPUn0s
CisgICAgeyJ8fCIsICBwcDo6VG9rZW46Ok9QX09SfSwKKyAgICB7Iis9IiwgIHBwOjpUb2tlbjo6
T1BfQUREX0FTU0lHTn0sCisgICAgeyItPSIsICBwcDo6VG9rZW46Ok9QX1NVQl9BU1NJR059LAor
ICAgIHsiKj0iLCAgcHA6OlRva2VuOjpPUF9NVUxfQVNTSUdOfSwKKyAgICB7Ii89IiwgIHBwOjpU
b2tlbjo6T1BfRElWX0FTU0lHTn0sCisgICAgeyIlPSIsICBwcDo6VG9rZW46Ok9QX01PRF9BU1NJ
R059LAorICAgIHsiPDw9IiwgcHA6OlRva2VuOjpPUF9MRUZUX0FTU0lHTn0sCisgICAgeyI+Pj0i
LCBwcDo6VG9rZW46Ok9QX1JJR0hUX0FTU0lHTn0sCisgICAgeyImPSIsICBwcDo6VG9rZW46Ok9Q
X0FORF9BU1NJR059LAorICAgIHsiXj0iLCAgcHA6OlRva2VuOjpPUF9YT1JfQVNTSUdOfSwKKyAg
ICB7Inw9IiwgIHBwOjpUb2tlbjo6T1BfT1JfQVNTSUdOfQorfTsKKworSU5TVEFOVElBVEVfVEVT
VF9DQVNFX1AoQWxsLCBPcGVyYXRvclRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
aW5nOjpWYWx1ZXNJbihrT3BlcmF0b3JzKSk7CisKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvcHJhZ21hX3Rlc3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVz
dHMvcHJhZ21hX3Rlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvcHJhZ21hX3Rlc3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTU0IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgIlByZXBy
b2Nlc3NvclRlc3QuaCIKKyNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uaCIK
KworY2xhc3MgUHJhZ21hVGVzdCA6IHB1YmxpYyBQcmVwcm9jZXNzb3JUZXN0Cit7Cit9OworCitU
RVNUX0YoUHJhZ21hVGVzdCwgRW1wdHlOYW1lKQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIj
cHJhZ21hXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIjsKKworICAgIHVzaW5n
IHRlc3Rpbmc6Ol87CisgICAgLy8gTm8gaGFuZGxlUHJhZ21hIGNhbGxzLgorICAgIEVYUEVDVF9D
QUxMKG1EaXJlY3RpdmVIYW5kbGVyLCBoYW5kbGVQcmFnbWEoXywgXywgXywgZmFsc2UpKS5UaW1l
cygwKTsKKyAgICAvLyBObyBlcnJvciBvciB3YXJuaW5nLgorICAgIEVYUEVDVF9DQUxMKG1EaWFn
bm9zdGljcywgcHJpbnQoXywgXywgXykpLlRpbWVzKDApOworCisgICAgcHJlcHJvY2VzcyhzdHIs
IGV4cGVjdGVkKTsKK30KKworVEVTVF9GKFByYWdtYVRlc3QsIEVtcHR5VmFsdWUpCit7CisgICAg
Y29uc3QgY2hhciogc3RyID0gIiNwcmFnbWEgZm9vXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVj
dGVkID0gIlxuIjsKKworICAgIHVzaW5nIHRlc3Rpbmc6Ol87CisgICAgRVhQRUNUX0NBTEwobURp
cmVjdGl2ZUhhbmRsZXIsCisgICAgICAgICAgICAgICAgaGFuZGxlUHJhZ21hKHBwOjpTb3VyY2VM
b2NhdGlvbigwLCAxKSwgImZvbyIsICIiLCBmYWxzZSkpOworICAgIC8vIE5vIGVycm9yIG9yIHdh
cm5pbmcuCisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmludChfLCBfLCBfKSkuVGlt
ZXMoMCk7CisKKyAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoUHJh
Z21hVGVzdCwgTmFtZVZhbHVlKQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjcHJhZ21hIGZv
byhiYXIpXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIjsKKworICAgIHVzaW5n
IHRlc3Rpbmc6Ol87CisgICAgRVhQRUNUX0NBTEwobURpcmVjdGl2ZUhhbmRsZXIsCisgICAgICAg
ICAgICAgICAgaGFuZGxlUHJhZ21hKHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwgImZvbyIsICJi
YXIiLCBmYWxzZSkpOworICAgIC8vIE5vIGVycm9yIG9yIHdhcm5pbmcuCisgICAgRVhQRUNUX0NB
TEwobURpYWdub3N0aWNzLCBwcmludChfLCBfLCBfKSkuVGltZXMoMCk7CisKKyAgICBwcmVwcm9j
ZXNzKHN0ciwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoUHJhZ21hVGVzdCwgU1RER0wpCit7Cisg
ICAgY29uc3QgY2hhciogc3RyID0gIiNwcmFnbWEgU1RER0xcbiI7CisgICAgY29uc3QgY2hhciog
ZXhwZWN0ZWQgPSAiXG4iOworCisgICAgdXNpbmcgdGVzdGluZzo6XzsKKyAgICBFWFBFQ1RfQ0FM
TChtRGlyZWN0aXZlSGFuZGxlciwKKyAgICAgICAgICAgICAgICBoYW5kbGVQcmFnbWEoXywgXywg
XywgXykpLlRpbWVzKDApOworICAgIC8vIE5vIGVycm9yIG9yIHdhcm5pbmcuCisgICAgRVhQRUNU
X0NBTEwobURpYWdub3N0aWNzLCBwcmludChfLCBfLCBfKSkuVGltZXMoMCk7CisKKyAgICBwcmVw
cm9jZXNzKHN0ciwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoUHJhZ21hVGVzdCwgU1RER0xJbnZh
cmlhbnRBbGwpCit7CisgICAgY29uc3QgY2hhciogc3RyID0gIiNwcmFnbWEgU1RER0wgaW52YXJp
YW50KGFsbClcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iOworCisgICAgdXNp
bmcgdGVzdGluZzo6XzsKKyAgICBFWFBFQ1RfQ0FMTChtRGlyZWN0aXZlSGFuZGxlciwKKyAgICAg
ICAgICAgICAgICBoYW5kbGVQcmFnbWEocHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLCAiaW52YXJp
YW50IiwgImFsbCIsIHRydWUpKTsKKyAgICAvLyBObyBlcnJvciBvciB3YXJuaW5nLgorICAgIEVY
UEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQoXywgXywgXykpLlRpbWVzKDApOworCisgICAg
cHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKFByYWdtYVRlc3QsIENvbW1l
bnRzKQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIvKmZvbyovIgorICAgICAgICAgICAgICAg
ICAgICAgICIjIgorICAgICAgICAgICAgICAgICAgICAgICIvKmZvbyovIgorICAgICAgICAgICAg
ICAgICAgICAgICJwcmFnbWEiCisgICAgICAgICAgICAgICAgICAgICAgIi8qZm9vKi8iCisgICAg
ICAgICAgICAgICAgICAgICAgImZvbyIKKyAgICAgICAgICAgICAgICAgICAgICAiLypmb28qLyIK
KyAgICAgICAgICAgICAgICAgICAgICAiKCIKKyAgICAgICAgICAgICAgICAgICAgICAiLypmb28q
LyIKKyAgICAgICAgICAgICAgICAgICAgICAiYmFyIgorICAgICAgICAgICAgICAgICAgICAgICIv
KmZvbyovIgorICAgICAgICAgICAgICAgICAgICAgICIpIgorICAgICAgICAgICAgICAgICAgICAg
ICIvKmZvbyovIgorICAgICAgICAgICAgICAgICAgICAgICIvL2ZvbyIKKyAgICAgICAgICAgICAg
ICAgICAgICAiXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIjsKKworICAgIHVz
aW5nIHRlc3Rpbmc6Ol87CisgICAgRVhQRUNUX0NBTEwobURpcmVjdGl2ZUhhbmRsZXIsCisgICAg
ICAgICAgICAgICAgaGFuZGxlUHJhZ21hKHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwgImZvbyIs
ICJiYXIiLCBmYWxzZSkpOworICAgIC8vIE5vIGVycm9yIG9yIHdhcm5pbmcuCisgICAgRVhQRUNU
X0NBTEwobURpYWdub3N0aWNzLCBwcmludChfLCBfLCBfKSkuVGltZXMoMCk7CisKKyAgICBwcmVw
cm9jZXNzKHN0ciwgZXhwZWN0ZWQpOworfQorCitURVNUX0YoUHJhZ21hVGVzdCwgTWlzc2luZ05l
d2xpbmUpCit7CisgICAgY29uc3QgY2hhciogc3RyID0gIiNwcmFnbWEgZm9vKGJhcikiOworICAg
IGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIiI7CisKKyAgICB1c2luZyB0ZXN0aW5nOjpfOworICAg
IC8vIFByYWdtYSBzdWNjZXNzZnVsbHkgcGFyc2VkLgorICAgIEVYUEVDVF9DQUxMKG1EaXJlY3Rp
dmVIYW5kbGVyLAorICAgICAgICAgICAgICAgIGhhbmRsZVByYWdtYShwcDo6U291cmNlTG9jYXRp
b24oMCwgMSksICJmb28iLCAiYmFyIiwgZmFsc2UpKTsKKyAgICAvLyBFcnJvciByZXBvcnRlZCBh
Ym91dCBFT0YuCisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmludChwcDo6RGlhZ25v
c3RpY3M6OlBQX0VPRl9JTl9ESVJFQ1RJVkUsIF8sIF8pKTsKKworICAgIHByZXByb2Nlc3Moc3Ry
LCBleHBlY3RlZCk7Cit9CisKK2NsYXNzIEludmFsaWRQcmFnbWFUZXN0IDogcHVibGljIFByYWdt
YVRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB0ZXN0aW5nOjpXaXRoUGFy
YW1JbnRlcmZhY2U8Y29uc3QgY2hhcio+Cit7Cit9OworCitURVNUX1AoSW52YWxpZFByYWdtYVRl
c3QsIElkZW50aWZpZWQpCit7CisgICAgY29uc3QgY2hhciogc3RyID0gR2V0UGFyYW0oKTsKKyAg
ICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiI7CisKKyAgICB1c2luZyB0ZXN0aW5nOjpfOwor
ICAgIC8vIE5vIGhhbmRsZVByYWdtYSBjYWxscy4KKyAgICBFWFBFQ1RfQ0FMTChtRGlyZWN0aXZl
SGFuZGxlciwgaGFuZGxlUHJhZ21hKF8sIF8sIF8sIGZhbHNlKSkuVGltZXMoMCk7CisgICAgLy8g
VW5yZWNvZ25pemVkIHByYWdtYSB3YXJuaW5nLgorICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGlj
cywKKyAgICAgICAgICAgICAgICBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX1VOUkVDT0dOSVpF
RF9QUkFHTUEsCisgICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEp
LCBfKSk7CisKKyAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOworfQorCitJTlNUQU5USUFU
RV9URVNUX0NBU0VfUChBbGwsIEludmFsaWRQcmFnbWFUZXN0LCB0ZXN0aW5nOjpWYWx1ZXMoCisg
ICAgIiNwcmFnbWEgMVxuIiwgICAgICAgICAgICAgICAvLyBJbnZhbGlkIG5hbWUuCisgICAgIiNw
cmFnbWEgZm9vKClcbiIsICAgICAgICAgICAvLyBNaXNzaW5nIHZhbHVlLgorICAgICIjcHJhZ21h
IGZvbyBiYXIpXG4iLCAgICAgICAgLy8gTWlzc2luZyBsZWZ0IHBhcmVuLAorICAgICIjcHJhZ21h
IGZvbyhiYXJcbiIsICAgICAgICAgLy8gTWlzc2luZyByaWdodCBwYXJlbi4KKyAgICAiI3ByYWdt
YSBmb28gYmFyXG4iLCAgICAgICAgIC8vIE1pc3NpbmcgcGFyZW5zLgorICAgICIjcHJhZ21hIGZv
byhiYXIpIGJhelxuIikpOyAgLy8gRXh0cmEgdG9rZW5zLgpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9zcGFjZV90ZXN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29y
X3Rlc3RzL3NwYWNlX3Rlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvc3BhY2VfdGVzdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMDYgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAiUHJl
cHJvY2Vzc29yVGVzdC5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5o
IgorCitjbGFzcyBTcGFjZVRlc3QgOiBwdWJsaWMgUHJlcHJvY2Vzc29yVGVzdAoreworICBwcm90
ZWN0ZWQ6CisgICAgdm9pZCBleHBlY3RTcGFjZShjb25zdCBzdGQ6OnN0cmluZyYgc3RyKQorICAg
IHsKKyAgICAgICAgY29uc3QgY2hhciogY3N0ciA9IHN0ci5jX3N0cigpOworICAgICAgICBBU1NF
UlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJmNzdHIsIDApKTsKKworICAgICAgICBwcDo6
VG9rZW4gdG9rZW47CisgICAgICAgIC8vICJmb28iIGlzIHJldHVybmVkIGFmdGVyIGlnbm9yaW5n
IHRoZSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMuCisgICAgICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0
b2tlbik7CisgICAgICAgIEVYUEVDVF9FUShwcDo6VG9rZW46OklERU5USUZJRVIsIHRva2VuLnR5
cGUpOworICAgICAgICBFWFBFQ1RfRVEoImZvbyIsIHRva2VuLnRleHQpOworICAgICAgICAvLyBU
aGUgd2hpdGVzcGFjZSBjaGFyYWN0ZXIgaXMgaG93ZXZlciByZWNvcmRlZCB3aXRoIHRoZSBuZXh0
IHRva2VuLgorICAgICAgICBFWFBFQ1RfVFJVRSh0b2tlbi5oYXNMZWFkaW5nU3BhY2UoKSk7Cisg
ICAgfQorfTsKKworLy8gV2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGFsbG93ZWQgaW4gR0xTTC4KKy8v
IE5vdGUgdGhhdCBuZXdsaW5lIGNoYXJhY3RlcnMgKFxuKSB3aWxsIGJlIHRlc3RlZCBzZXBhcmF0
ZWx5Lgorc3RhdGljIGNvbnN0IGNoYXIga1NwYWNlQ2hhcnNbXSA9IHsnICcsICdcdCcsICdcdics
ICdcZid9OworCisvLyBUaGlzIHRlc3QgZml4dHVyZSB0ZXN0cyB0aGUgcHJvY2Vzc2luZyBvZiBh
IHNpbmdsZSB3aGl0ZXNwYWNlIGNoYXJhY3Rlci4KKy8vIEFsbCB0ZXN0cyBpbiB0aGlzIGZpeHR1
cmUgYXJlIHJhbiB3aXRoIGFsbCBwb3NzaWJsZSB3aGl0ZXNwYWNlIGNoYXJhY3RlcgorLy8gYWxs
b3dlZCBpbiBHTFNMLgorY2xhc3MgU3BhY2VDaGFyVGVzdCA6IHB1YmxpYyBTcGFjZVRlc3QsCisg
ICAgICAgICAgICAgICAgICAgICAgcHVibGljIHRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxj
aGFyPgoreworfTsKKworVEVTVF9QKFNwYWNlQ2hhclRlc3QsIFNwYWNlSWdub3JlZCkKK3sKKyAg
ICAvLyBDb25zdHJ1Y3QgdGVzdCBzdHJpbmcgd2l0aCB0aGUgd2hpdGVzcGFjZSBjaGFyIGJlZm9y
ZSAiZm9vIi4KKyAgICBzdGQ6OnN0cmluZyBzdHIoMSwgR2V0UGFyYW0oKSk7CisgICAgc3RyLmFw
cGVuZCgiZm9vIik7CisKKyAgICBleHBlY3RTcGFjZShzdHIpOworfQorCitJTlNUQU5USUFURV9U
RVNUX0NBU0VfUChTaW5nbGVTcGFjZUNoYXIsCisgICAgICAgICAgICAgICAgICAgICAgICBTcGFj
ZUNoYXJUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6VmFsdWVzSW4oa1Nw
YWNlQ2hhcnMpKTsKKworLy8gVGhpcyB0ZXN0IGZpeHR1cmUgdGVzdHMgdGhlIHByb2Nlc3Npbmcg
b2YgYSBzdHJpbmcgY29udGFpbmluZyBjb25zZWN1dGl2ZQorLy8gd2hpdGVzcGFjZSBjaGFyYWN0
ZXJzLiBBbGwgdGVzdHMgaW4gdGhpcyBmaXh0dXJlIGFyZSByYW4gd2l0aCBhbGwgcG9zc2libGUK
Ky8vIGNvbWJpbmF0aW9ucyBvZiB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgYWxsb3dlZCBpbiBHTFNM
LgordHlwZWRlZiBzdGQ6OnRyMTo6dHVwbGU8Y2hhciwgY2hhciwgY2hhcj4gU3BhY2VTdHJpbmdQ
YXJhbXM7CitjbGFzcyBTcGFjZVN0cmluZ1Rlc3QgOiBwdWJsaWMgU3BhY2VUZXN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgcHVibGljIHRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxTcGFj
ZVN0cmluZ1BhcmFtcz4KK3sKK307CisKK1RFU1RfUChTcGFjZVN0cmluZ1Rlc3QsIFNwYWNlSWdu
b3JlZCkKK3sKKyAgICAvLyBDb25zdHJ1Y3QgdGVzdCBzdHJpbmcgd2l0aCB0aGUgd2hpdGVzcGFj
ZSBjaGFyIGJlZm9yZSAiZm9vIi4KKyAgICBzdGQ6OnN0cmluZyBzdHI7CisgICAgc3RyLnB1c2hf
YmFjayhzdGQ6OnRyMTo6Z2V0PDA+KEdldFBhcmFtKCkpKTsKKyAgICBzdHIucHVzaF9iYWNrKHN0
ZDo6dHIxOjpnZXQ8MT4oR2V0UGFyYW0oKSkpOworICAgIHN0ci5wdXNoX2JhY2soc3RkOjp0cjE6
OmdldDwyPihHZXRQYXJhbSgpKSk7CisgICAgc3RyLmFwcGVuZCgiZm9vIik7CisKKyAgICBleHBl
Y3RTcGFjZShzdHIpOworfQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChTcGFjZUNoYXJDb21i
aW5hdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFNwYWNlU3RyaW5nVGVzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OkNvbWJpbmUodGVzdGluZzo6VmFsdWVzSW4oa1Nw
YWNlQ2hhcnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
aW5nOjpWYWx1ZXNJbihrU3BhY2VDaGFycyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3Rpbmc6OlZhbHVlc0luKGtTcGFjZUNoYXJzKSkpOworCisvLyBUaGUg
dGVzdHMgYWJvdmUgbWFrZSBzdXJlIHRoYXQgdGhlIHNwYWNlIGNoYXIgaXMgcmVjb3JkZWQgaW4g
dGhlCisvLyBuZXh0IHRva2VuLiBUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IGEgdG9rZW4gaXMg
bm90IGluY29ycmVjdGx5IG1hcmtlZAorLy8gdG8gaGF2ZSBsZWFkaW5nIHNwYWNlLgorVEVTVF9G
KFNwYWNlVGVzdCwgTGVhZGluZ1NwYWNlKQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIgZm9v
KyAtYmFyIjsKKyAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJnN0ciwgMCkp
OworCisgICAgcHA6OlRva2VuIHRva2VuOworICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7
CisgICAgRVhQRUNUX0VRKHBwOjpUb2tlbjo6SURFTlRJRklFUiwgdG9rZW4udHlwZSk7CisgICAg
RVhQRUNUX0VRKCJmb28iLCB0b2tlbi50ZXh0KTsKKyAgICBFWFBFQ1RfVFJVRSh0b2tlbi5oYXNM
ZWFkaW5nU3BhY2UoKSk7CisKKyAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOworICAgIEVY
UEVDVF9FUSgnKycsIHRva2VuLnR5cGUpOworICAgIEVYUEVDVF9GQUxTRSh0b2tlbi5oYXNMZWFk
aW5nU3BhY2UoKSk7CisKKyAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOworICAgIEVYUEVD
VF9FUSgnLScsIHRva2VuLnR5cGUpOworICAgIEVYUEVDVF9UUlVFKHRva2VuLmhhc0xlYWRpbmdT
cGFjZSgpKTsKKworICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7CisgICAgRVhQRUNUX0VR
KHBwOjpUb2tlbjo6SURFTlRJRklFUiwgdG9rZW4udHlwZSk7CisgICAgRVhQRUNUX0VRKCJiYXIi
LCB0b2tlbi50ZXh0KTsKKyAgICBFWFBFQ1RfRkFMU0UodG9rZW4uaGFzTGVhZGluZ1NwYWNlKCkp
OworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nv
cl90ZXN0cy90b2tlbl90ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL3Rva2VuX3Rlc3QuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3Jf
dGVzdHMvdG9rZW5fdGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MCBAQAorLy8K
Ky8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisjaW5jbHVkZSAiY29tcGls
ZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmgiCisKK1RFU1QoVG9rZW5UZXN0LCBEZWZhdWx0Q29uc3Ry
dWN0b3IpCit7CisgICAgcHA6OlRva2VuIHRva2VuOworICAgIEVYUEVDVF9FUSgwLCB0b2tlbi50
eXBlKTsKKyAgICBFWFBFQ1RfRVEoMHUsIHRva2VuLmZsYWdzKTsKKyAgICBFWFBFQ1RfRVEoMCwg
dG9rZW4ubG9jYXRpb24ubGluZSk7CisgICAgRVhQRUNUX0VRKDAsIHRva2VuLmxvY2F0aW9uLmZp
bGUpOworICAgIEVYUEVDVF9FUSgiIiwgdG9rZW4udGV4dCk7Cit9CisKK1RFU1QoVG9rZW5UZXN0
LCBBc3NpZ25tZW50KQoreworICAgIHBwOjpUb2tlbiB0b2tlbjsKKyAgICB0b2tlbi50eXBlID0g
MTsKKyAgICB0b2tlbi5mbGFncyA9IDE7CisgICAgdG9rZW4ubG9jYXRpb24ubGluZSA9IDE7Cisg
ICAgdG9rZW4ubG9jYXRpb24uZmlsZSA9IDE7CisgICAgdG9rZW4udGV4dC5hc3NpZ24oImZvbyIp
OworCisgICAgdG9rZW4gPSBwcDo6VG9rZW4oKTsKKyAgICBFWFBFQ1RfRVEoMCwgdG9rZW4udHlw
ZSk7CisgICAgRVhQRUNUX0VRKDB1LCB0b2tlbi5mbGFncyk7CisgICAgRVhQRUNUX0VRKDAsIHRv
a2VuLmxvY2F0aW9uLmxpbmUpOworICAgIEVYUEVDVF9FUSgwLCB0b2tlbi5sb2NhdGlvbi5maWxl
KTsKKyAgICBFWFBFQ1RfRVEoIiIsIHRva2VuLnRleHQpOworfQorCitURVNUKFRva2VuVGVzdCwg
RXF1YWxzKQoreworICAgIHBwOjpUb2tlbiB0b2tlbjsKKyAgICBFWFBFQ1RfVFJVRSh0b2tlbi5l
cXVhbHMocHA6OlRva2VuKCkpKTsKKworICAgIHRva2VuLnR5cGUgPSAxOworICAgIEVYUEVDVF9G
QUxTRSh0b2tlbi5lcXVhbHMocHA6OlRva2VuKCkpKTsKKyAgICB0b2tlbi50eXBlID0gMDsKKwor
ICAgIHRva2VuLmZsYWdzID0gMTsKKyAgICBFWFBFQ1RfRkFMU0UodG9rZW4uZXF1YWxzKHBwOjpU
b2tlbigpKSk7CisgICAgdG9rZW4uZmxhZ3MgPSAwOworCisgICAgdG9rZW4ubG9jYXRpb24ubGlu
ZSA9IDE7CisgICAgRVhQRUNUX0ZBTFNFKHRva2VuLmVxdWFscyhwcDo6VG9rZW4oKSkpOworICAg
IHRva2VuLmxvY2F0aW9uLmxpbmUgPSAwOworCisgICAgdG9rZW4ubG9jYXRpb24uZmlsZSA9IDE7
CisgICAgRVhQRUNUX0ZBTFNFKHRva2VuLmVxdWFscyhwcDo6VG9rZW4oKSkpOworICAgIHRva2Vu
LmxvY2F0aW9uLmZpbGUgPSAwOworCisgICAgdG9rZW4udGV4dC5hc3NpZ24oImZvbyIpOworICAg
IEVYUEVDVF9GQUxTRSh0b2tlbi5lcXVhbHMocHA6OlRva2VuKCkpKTsKKyAgICB0b2tlbi50ZXh0
LmNsZWFyKCk7CisKKyAgICBFWFBFQ1RfVFJVRSh0b2tlbi5lcXVhbHMocHA6OlRva2VuKCkpKTsK
K30KKworVEVTVChUb2tlblRlc3QsIEhhc0xlYWRpbmdTcGFjZSkKK3sKKyAgICBwcDo6VG9rZW4g
dG9rZW47CisgICAgRVhQRUNUX0ZBTFNFKHRva2VuLmhhc0xlYWRpbmdTcGFjZSgpKTsKKyAgICB0
b2tlbi5zZXRIYXNMZWFkaW5nU3BhY2UodHJ1ZSk7CisgICAgRVhQRUNUX1RSVUUodG9rZW4uaGFz
TGVhZGluZ1NwYWNlKCkpOworICAgIHRva2VuLnNldEhhc0xlYWRpbmdTcGFjZShmYWxzZSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKHRva2VuLmhhc0xlYWRpbmdTcGFjZSgpKTsKK30KKworVEVTVChUb2tl
blRlc3QsIFdyaXRlKQoreworICAgIHBwOjpUb2tlbiB0b2tlbjsKKyAgICB0b2tlbi50ZXh0LmFz
c2lnbigiZm9vIik7CisgICAgc3RkOjpzdHJpbmdzdHJlYW0gb3V0MTsKKyAgICBvdXQxIDw8IHRv
a2VuOworICAgIEVYUEVDVF9UUlVFKG91dDEuZ29vZCgpKTsKKyAgICBFWFBFQ1RfRVEoImZvbyIs
IG91dDEuc3RyKCkpOworCisgICAgdG9rZW4uc2V0SGFzTGVhZGluZ1NwYWNlKHRydWUpOworICAg
IHN0ZDo6c3RyaW5nc3RyZWFtIG91dDI7CisgICAgb3V0MiA8PCB0b2tlbjsKKyAgICBFWFBFQ1Rf
VFJVRShvdXQyLmdvb2QoKSk7CisgICAgRVhQRUNUX0VRKCIgZm9vIiwgb3V0Mi5zdHIoKSk7Cit9
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rl
c3RzL3ZlcnNpb25fdGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy92ZXJzaW9uX3Rlc3QuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3Jf
dGVzdHMvdmVyc2lvbl90ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIyOSBAQAor
Ly8KKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisKKyNpbmNsdWRlICJQcmVwcm9jZXNzb3JUZXN0LmgiCisjaW5jbHVkZSAi
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmgiCisKK2NsYXNzIFZlcnNpb25UZXN0IDogcHVi
bGljIFByZXByb2Nlc3NvclRlc3QKK3sKK307CisKK1RFU1RfRihWZXJzaW9uVGVzdCwgVmFsaWQp
Cit7CisgICAgY29uc3QgY2hhciogc3RyID0gIiN2ZXJzaW9uIDIwMFxuIjsKKyAgICBjb25zdCBj
aGFyKiBleHBlY3RlZCA9ICJcbiI7CisKKyAgICB1c2luZyB0ZXN0aW5nOjpfOworICAgIEVYUEVD
VF9DQUxMKG1EaXJlY3RpdmVIYW5kbGVyLAorICAgICAgICAgICAgICAgIGhhbmRsZVZlcnNpb24o
cHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLCAyMDApKTsKKyAgICAvLyBObyBlcnJvciBvciB3YXJu
aW5nLgorICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQoXywgXywgXykpLlRpbWVz
KDApOworCisgICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKFZlcnNp
b25UZXN0LCBDb21tZW50c0lnbm9yZWQpCit7CisgICAgY29uc3QgY2hhciogc3RyID0gIi8qZm9v
Ki8iCisgICAgICAgICAgICAgICAgICAgICAgIiMiCisgICAgICAgICAgICAgICAgICAgICAgIi8q
Zm9vKi8iCisgICAgICAgICAgICAgICAgICAgICAgInZlcnNpb24iCisgICAgICAgICAgICAgICAg
ICAgICAgIi8qZm9vKi8iCisgICAgICAgICAgICAgICAgICAgICAgIjIwMCIKKyAgICAgICAgICAg
ICAgICAgICAgICAiLypmb28qLyIKKyAgICAgICAgICAgICAgICAgICAgICAiLy9mb28iCisgICAg
ICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiI7
CisKKyAgICB1c2luZyB0ZXN0aW5nOjpfOworICAgIEVYUEVDVF9DQUxMKG1EaXJlY3RpdmVIYW5k
bGVyLAorICAgICAgICAgICAgICAgIGhhbmRsZVZlcnNpb24ocHA6OlNvdXJjZUxvY2F0aW9uKDAs
IDEpLCAyMDApKTsKKyAgICAvLyBObyBlcnJvciBvciB3YXJuaW5nLgorICAgIEVYUEVDVF9DQUxM
KG1EaWFnbm9zdGljcywgcHJpbnQoXywgXywgXykpLlRpbWVzKDApOworCisgICAgcHJlcHJvY2Vz
cyhzdHIsIGV4cGVjdGVkKTsKK30KKworVEVTVF9GKFZlcnNpb25UZXN0LCBNaXNzaW5nTmV3bGlu
ZSkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHIgPSAiI3ZlcnNpb24gMjAwIjsKKyAgICBjb25zdCBj
aGFyKiBleHBlY3RlZCA9ICIiOworCisgICAgdXNpbmcgdGVzdGluZzo6XzsKKyAgICAvLyBEaXJl
Y3RpdmUgc3VjY2Vzc2Z1bGx5IHBhcnNlZC4KKyAgICBFWFBFQ1RfQ0FMTChtRGlyZWN0aXZlSGFu
ZGxlciwKKyAgICAgICAgICAgICAgICBoYW5kbGVWZXJzaW9uKHBwOjpTb3VyY2VMb2NhdGlvbigw
LCAxKSwgMjAwKSk7CisgICAgLy8gRXJyb3IgcmVwb3J0ZWQgYWJvdXQgRU9GLgorICAgIEVYUEVD
VF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9FT0ZfSU5fRElS
RUNUSVZFLCBfLCBfKSk7CisKKyAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOworfQorCitU
RVNUX0YoVmVyc2lvblRlc3QsIEFmdGVyQ29tbWVudHMpCit7CisgICAgY29uc3QgY2hhciogc3Ry
ID0gIi8qIGJsb2NrIGNvbW1lbnQgYWNjZXB0YWJsZSAqL1xuIgorICAgICAgICAgICAgICAgICAg
ICAgICIvLyBsaW5lIGNvbW1lbnQgYWNjZXB0YWJsZVxuIgorICAgICAgICAgICAgICAgICAgICAg
ICIjdmVyc2lvbiAyMDBcbiI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG5cblxuIjsK
KworICAgIHVzaW5nIHRlc3Rpbmc6Ol87CisgICAgLy8gRGlyZWN0aXZlIHN1Y2Nlc3NmdWxseSBw
YXJzZWQuCisgICAgRVhQRUNUX0NBTEwobURpcmVjdGl2ZUhhbmRsZXIsCisgICAgICAgICAgICAg
ICAgaGFuZGxlVmVyc2lvbihwcDo6U291cmNlTG9jYXRpb24oMCwgMyksIDIwMCkpOworICAgIC8v
IE5vIGVycm9yIG9yIHdhcm5pbmcuCisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmlu
dChfLCBfLCBfKSkuVGltZXMoMCk7CisgICAgCisgICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVk
KTsKK30KKworVEVTVF9GKFZlcnNpb25UZXN0LCBBZnRlcldoaXRlc3BhY2UpCit7CisgICAgY29u
c3QgY2hhciogc3RyID0gIlxuIgorICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAiI3ZlcnNpb24gMjAwXG4iOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVk
ID0gIlxuXG5cbiI7CisKKyAgICB1c2luZyB0ZXN0aW5nOjpfOworICAgIC8vIERpcmVjdGl2ZSBz
dWNjZXNzZnVsbHkgcGFyc2VkLgorICAgIEVYUEVDVF9DQUxMKG1EaXJlY3RpdmVIYW5kbGVyLAor
ICAgICAgICAgICAgICAgIGhhbmRsZVZlcnNpb24ocHA6OlNvdXJjZUxvY2F0aW9uKDAsIDMpLCAy
MDApKTsKKyAgICAvLyBObyBlcnJvciBvciB3YXJuaW5nLgorICAgIEVYUEVDVF9DQUxMKG1EaWFn
bm9zdGljcywgcHJpbnQoXywgXywgXykpLlRpbWVzKDApOworICAgIAorICAgIHByZXByb2Nlc3Mo
c3RyLCBleHBlY3RlZCk7Cit9CisKK1RFU1RfRihWZXJzaW9uVGVzdCwgQWZ0ZXJWYWxpZFRva2Vu
KQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICJmb29cbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAiI3ZlcnNpb24gMjAwXG4iOworICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgx
LCAmc3RyLCBOVUxMKSk7CisKKyAgICB1c2luZyB0ZXN0aW5nOjpfOworICAgIEVYUEVDVF9DQUxM
KG1EaWFnbm9zdGljcywKKyAgICAgICAgICAgICAgICBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQ
X1ZFUlNJT05fTk9UX0ZJUlNUX1NUQVRFTUVOVCwKKyAgICAgICAgICAgICAgICAgICAgICBwcDo6
U291cmNlTG9jYXRpb24oMCwgMiksIF8pKTsKKworICAgIHBwOjpUb2tlbiB0b2tlbjsKKyAgICBk
bworICAgIHsKKyAgICAgICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKKyAgICB9IHdoaWxl
ICh0b2tlbi50eXBlICE9IHBwOjpUb2tlbjo6TEFTVCk7Cit9CisKK1RFU1RfRihWZXJzaW9uVGVz
dCwgQWZ0ZXJJbnZhbGlkVG9rZW4pCit7CisgICAgY29uc3QgY2hhciogc3RyID0gIiRcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAiI3ZlcnNpb24gMjAwXG4iOworICAgIEFTU0VSVF9UUlVFKG1Q
cmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCBOVUxMKSk7CisKKyAgICB1c2luZyB0ZXN0aW5nOjpf
OworICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKKyAgICAgICAgICAgICAgICBwcmludChw
cDo6RGlhZ25vc3RpY3M6OlBQX0lOVkFMSURfQ0hBUkFDVEVSLAorICAgICAgICAgICAgICAgICAg
ICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwgIiQiKSk7CisgICAgRVhQRUNUX0NBTEwobURp
YWdub3N0aWNzLAorICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfVkVS
U0lPTl9OT1RfRklSU1RfU1RBVEVNRU5ULAorICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3Vy
Y2VMb2NhdGlvbigwLCAyKSwgXykpOworCisgICAgcHA6OlRva2VuIHRva2VuOworICAgIGRvCisg
ICAgeworICAgICAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOworICAgIH0gd2hpbGUgKHRv
a2VuLnR5cGUgIT0gcHA6OlRva2VuOjpMQVNUKTsKK30KKworVEVTVF9GKFZlcnNpb25UZXN0LCBB
ZnRlclZhbGlkRGlyZWN0aXZlKQoreworICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgIiN2ZXJzaW9uIDIwMFxuIjsKKyAgICBBU1NFUlRfVFJVRShtUHJl
cHJvY2Vzc29yLmluaXQoMSwgJnN0ciwgTlVMTCkpOworCisgICAgdXNpbmcgdGVzdGluZzo6XzsK
KyAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsCisgICAgICAgICAgICAgICAgcHJpbnQocHA6
OkRpYWdub3N0aWNzOjpQUF9WRVJTSU9OX05PVF9GSVJTVF9TVEFURU1FTlQsCisgICAgICAgICAg
ICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDIpLCBfKSk7CisKKyAgICBwcDo6VG9r
ZW4gdG9rZW47CisgICAgZG8KKyAgICB7CisgICAgICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tl
bik7CisgICAgfSB3aGlsZSAodG9rZW4udHlwZSAhPSBwcDo6VG9rZW46OkxBU1QpOworfQorCitU
RVNUX0YoVmVyc2lvblRlc3QsIEFmdGVySW52YWxpZERpcmVjdGl2ZSkKK3sKKyAgICBjb25zdCBj
aGFyKiBzdHIgPSAiI2Zvb1xuIgorICAgICAgICAgICAgICAgICAgICAgICIjdmVyc2lvbiAyMDBc
biI7CisgICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZzdHIsIE5VTEwpKTsK
KworICAgIHVzaW5nIHRlc3Rpbmc6Ol87CisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAor
ICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfRElSRUNUSVZFX0lOVkFM
SURfTkFNRSwKKyAgICAgICAgICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgMSks
ICJmb28iKSk7CisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAorICAgICAgICAgICAgICAg
IHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfVkVSU0lPTl9OT1RfRklSU1RfU1RBVEVNRU5ULAor
ICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAyKSwgXykpOworCisg
ICAgcHA6OlRva2VuIHRva2VuOworICAgIGRvCisgICAgeworICAgICAgICBtUHJlcHJvY2Vzc29y
LmxleCgmdG9rZW4pOworICAgIH0gd2hpbGUgKHRva2VuLnR5cGUgIT0gcHA6OlRva2VuOjpMQVNU
KTsKK30KKworVEVTVF9GKFZlcnNpb25UZXN0LCBBZnRlckV4Y2x1ZGVkQmxvY2spCit7CisgICAg
Y29uc3QgY2hhciogc3RyID0gIiNpZiAwXG4iCisgICAgICAgICAgICAgICAgICAgICAgImZvb1xu
IgorICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAiI3ZlcnNpb24gMjAwXG4iOworICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgx
LCAmc3RyLCBOVUxMKSk7CisKKyAgICB1c2luZyB0ZXN0aW5nOjpfOworICAgIEVYUEVDVF9DQUxM
KG1EaWFnbm9zdGljcywKKyAgICAgICAgICAgICAgICBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQ
X1ZFUlNJT05fTk9UX0ZJUlNUX1NUQVRFTUVOVCwKKyAgICAgICAgICAgICAgICAgICAgICBwcDo6
U291cmNlTG9jYXRpb24oMCwgNCksIF8pKTsKKworICAgIHBwOjpUb2tlbiB0b2tlbjsKKyAgICBk
bworICAgIHsKKyAgICAgICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKKyAgICB9IHdoaWxl
ICh0b2tlbi50eXBlICE9IHBwOjpUb2tlbjo6TEFTVCk7Cit9CisKK3N0cnVjdCBWZXJzaW9uVGVz
dFBhcmFtCit7CisgICAgY29uc3QgY2hhciogc3RyOworICAgIHBwOjpEaWFnbm9zdGljczo6SUQg
aWQ7Cit9OworCitjbGFzcyBJbnZhbGlkVmVyc2lvblRlc3QgOiBwdWJsaWMgVmVyc2lvblRlc3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdGVzdGluZzo6V2l0aFBhcmFtSW50
ZXJmYWNlPFZlcnNpb25UZXN0UGFyYW0+Cit7Cit9OworCitURVNUX1AoSW52YWxpZFZlcnNpb25U
ZXN0LCBJZGVudGlmaWVkKQoreworICAgIFZlcnNpb25UZXN0UGFyYW0gcGFyYW0gPSBHZXRQYXJh
bSgpOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIjsKKworICAgIHVzaW5nIHRlc3Rp
bmc6Ol87CisgICAgLy8gTm8gaGFuZGxlVmVyc2lvbiBjYWxsLgorICAgIEVYUEVDVF9DQUxMKG1E
aXJlY3RpdmVIYW5kbGVyLCBoYW5kbGVWZXJzaW9uKF8sIF8pKS5UaW1lcygwKTsKKyAgICAvLyBJ
bnZhbGlkIHZlcnNpb24gZGlyZWN0aXZlIGNhbGwuCisgICAgRVhQRUNUX0NBTEwobURpYWdub3N0
aWNzLCBwcmludChwYXJhbS5pZCwgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLCBfKSk7CisKKyAg
ICBwcmVwcm9jZXNzKHBhcmFtLnN0ciwgZXhwZWN0ZWQpOworfQorCitzdGF0aWMgY29uc3QgVmVy
c2lvblRlc3RQYXJhbSBrUGFyYW1zW10gPSB7CisgICAgeyIjdmVyc2lvblxuIiwgcHA6OkRpYWdu
b3N0aWNzOjpQUF9JTlZBTElEX1ZFUlNJT05fRElSRUNUSVZFfSwKKyAgICB7IiN2ZXJzaW9uIGZv
b1xuIiwgcHA6OkRpYWdub3N0aWNzOjpQUF9JTlZBTElEX1ZFUlNJT05fTlVNQkVSfSwKKyAgICB7
IiN2ZXJzaW9uIDEwMCBmb29cbiIsIHBwOjpEaWFnbm9zdGljczo6UFBfVU5FWFBFQ1RFRF9UT0tF
Tn0sCisgICAgeyIjdmVyc2lvbiAweGZmZmZmZmZmXG4iLCBwcDo6RGlhZ25vc3RpY3M6OlBQX0lO
VEVHRVJfT1ZFUkZMT1d9Cit9OworCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChBbGwsIEludmFs
aWRWZXJzaW9uVGVzdCwgdGVzdGluZzo6VmFsdWVzSW4oa1BhcmFtcykpOwpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvQU5HTEVUZXN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9B
TkdMRVRlc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy90ZXN0X3V0aWxzL0FOR0xFVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw4NTUgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisvLyBBTkdMRVRlc3Q6CisvLyAgIEltcGxlbWVudGF0aW9uIG9m
IGNvbW1vbiBBTkdMRSB0ZXN0aW5nIGZpeHR1cmUuCisvLworCisjaW5jbHVkZSAiQU5HTEVUZXN0
LmgiCisjaW5jbHVkZSAiRUdMV2luZG93LmgiCisjaW5jbHVkZSAiT1NXaW5kb3cuaCIKKyNpbmNs
dWRlICJwbGF0Zm9ybS9QbGF0Zm9ybS5oIgorCituYW1lc3BhY2UgYW5nbGUKK3sKKworY29uc3Qg
R0xDb2xvclJHQiBHTENvbG9yUkdCOjpibGFjaygwdSwgMHUsIDB1KTsKK2NvbnN0IEdMQ29sb3JS
R0IgR0xDb2xvclJHQjo6Ymx1ZSgwdSwgMHUsIDI1NXUpOworY29uc3QgR0xDb2xvclJHQiBHTENv
bG9yUkdCOjpncmVlbigwdSwgMjU1dSwgMHUpOworY29uc3QgR0xDb2xvclJHQiBHTENvbG9yUkdC
OjpyZWQoMjU1dSwgMHUsIDB1KTsKK2NvbnN0IEdMQ29sb3JSR0IgR0xDb2xvclJHQjo6eWVsbG93
KDI1NXUsIDI1NXUsIDApOworCitjb25zdCBHTENvbG9yIEdMQ29sb3I6OmJsYWNrICAgICAgICAg
ICAgPSBHTENvbG9yKDB1LCAwdSwgMHUsIDI1NXUpOworY29uc3QgR0xDb2xvciBHTENvbG9yOjpi
bHVlICAgICAgICAgICAgID0gR0xDb2xvcigwdSwgMHUsIDI1NXUsIDI1NXUpOworY29uc3QgR0xD
b2xvciBHTENvbG9yOjpjeWFuICAgICAgICAgICAgID0gR0xDb2xvcigwdSwgMjU1dSwgMjU1dSwg
MjU1dSk7Citjb25zdCBHTENvbG9yIEdMQ29sb3I6OmdyZWVuICAgICAgICAgICAgPSBHTENvbG9y
KDB1LCAyNTV1LCAwdSwgMjU1dSk7Citjb25zdCBHTENvbG9yIEdMQ29sb3I6OnJlZCAgICAgICAg
ICAgICAgPSBHTENvbG9yKDI1NXUsIDB1LCAwdSwgMjU1dSk7Citjb25zdCBHTENvbG9yIEdMQ29s
b3I6OnRyYW5zcGFyZW50QmxhY2sgPSBHTENvbG9yKDB1LCAwdSwgMHUsIDB1KTsKK2NvbnN0IEdM
Q29sb3IgR0xDb2xvcjo6d2hpdGUgICAgICAgICAgICA9IEdMQ29sb3IoMjU1dSwgMjU1dSwgMjU1
dSwgMjU1dSk7Citjb25zdCBHTENvbG9yIEdMQ29sb3I6OnllbGxvdyAgICAgICAgICAgPSBHTENv
bG9yKDI1NXUsIDI1NXUsIDAsIDI1NXUpOworCituYW1lc3BhY2UKK3sKK2Zsb2F0IENvbG9yTm9y
bShHTHVieXRlIGNoYW5uZWxWYWx1ZSkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KGNoYW5uZWxWYWx1ZSkgLyAyNTUuMGY7Cit9CisKK0dMdWJ5dGUgQ29sb3JEZW5vcm0oZmxvYXQg
Y29sb3JWYWx1ZSkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0x1Ynl0ZT4oY29sb3JWYWx1
ZSAqIDI1NS4wZik7Cit9CisKKy8vIFVzZSBhIGN1c3RvbSBBTkdMRSBwbGF0Zm9ybSBjbGFzcyB0
byBjYXB0dXJlIGFuZCByZXBvcnQgaW50ZXJuYWwgZXJyb3JzLgorY2xhc3MgVGVzdFBsYXRmb3Jt
IDogcHVibGljIGFuZ2xlOjpQbGF0Zm9ybQoreworICBwdWJsaWM6CisgICAgVGVzdFBsYXRmb3Jt
KCkgOiBtSWdub3JlTWVzc2FnZXMoZmFsc2UpIHt9CisKKyAgICB2b2lkIGxvZ0Vycm9yKGNvbnN0
IGNoYXIgKmVycm9yTWVzc2FnZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBsb2dXYXJuaW5nKGNvbnN0
IGNoYXIgKndhcm5pbmdNZXNzYWdlKSBvdmVycmlkZTsKKyAgICB2b2lkIGxvZ0luZm8oY29uc3Qg
Y2hhciAqaW5mb01lc3NhZ2UpIG92ZXJyaWRlOworCisgICAgdm9pZCBpZ25vcmVNZXNzYWdlcygp
OworICAgIHZvaWQgZW5hYmxlTWVzc2FnZXMoKTsKKworICBwcml2YXRlOgorICAgIGJvb2wgbUln
bm9yZU1lc3NhZ2VzOworfTsKKwordm9pZCBUZXN0UGxhdGZvcm06OmxvZ0Vycm9yKGNvbnN0IGNo
YXIgKmVycm9yTWVzc2FnZSkKK3sKKyAgICBpZiAobUlnbm9yZU1lc3NhZ2VzKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBGQUlMKCkgPDwgZXJyb3JNZXNzYWdlOworfQorCit2b2lkIFRlc3RQbGF0
Zm9ybTo6bG9nV2FybmluZyhjb25zdCBjaGFyICp3YXJuaW5nTWVzc2FnZSkKK3sKKyAgICBpZiAo
bUlnbm9yZU1lc3NhZ2VzKQorICAgICAgICByZXR1cm47CisKKyAgICBzdGQ6OmNlcnIgPDwgIldh
cm5pbmc6ICIgPDwgd2FybmluZ01lc3NhZ2UgPDwgc3RkOjplbmRsOworfQorCit2b2lkIFRlc3RQ
bGF0Zm9ybTo6bG9nSW5mbyhjb25zdCBjaGFyICppbmZvTWVzc2FnZSkKK3sKKyAgICBpZiAobUln
bm9yZU1lc3NhZ2VzKQorICAgICAgICByZXR1cm47CisKKyAgICBhbmdsZTo6V3JpdGVEZWJ1Z01l
c3NhZ2UoIiVzXG4iLCBpbmZvTWVzc2FnZSk7Cit9CisKK3ZvaWQgVGVzdFBsYXRmb3JtOjppZ25v
cmVNZXNzYWdlcygpCit7CisgICAgbUlnbm9yZU1lc3NhZ2VzID0gdHJ1ZTsKK30KKwordm9pZCBU
ZXN0UGxhdGZvcm06OmVuYWJsZU1lc3NhZ2VzKCkKK3sKKyAgICBtSWdub3JlTWVzc2FnZXMgPSBm
YWxzZTsKK30KKworVGVzdFBsYXRmb3JtIGdfdGVzdFBsYXRmb3JtSW5zdGFuY2U7CisKK3N0ZDo6
YXJyYXk8VmVjdG9yMywgND4gR2V0SW5kZXhlZFF1YWRWZXJ0aWNlcygpCit7CisgICAgc3RkOjph
cnJheTxWZWN0b3IzLCA0PiB2ZXJ0aWNlczsKKyAgICB2ZXJ0aWNlc1swXSA9IFZlY3RvcjMoLTEu
MGYsIDEuMGYsIDAuNWYpOworICAgIHZlcnRpY2VzWzFdID0gVmVjdG9yMygtMS4wZiwgLTEuMGYs
IDAuNWYpOworICAgIHZlcnRpY2VzWzJdID0gVmVjdG9yMygxLjBmLCAtMS4wZiwgMC41Zik7Cisg
ICAgdmVydGljZXNbM10gPSBWZWN0b3IzKDEuMGYsIDEuMGYsIDAuNWYpOworICAgIHJldHVybiB2
ZXJ0aWNlczsKK30KKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCitHTENvbG9yUkdCOjpH
TENvbG9yUkdCKCkgOiBSKDApLCBHKDApLCBCKDApCit7Cit9CisKK0dMQ29sb3JSR0I6OkdMQ29s
b3JSR0IoR0x1Ynl0ZSByLCBHTHVieXRlIGcsIEdMdWJ5dGUgYikgOiBSKHIpLCBHKGcpLCBCKGIp
Cit7Cit9CisKK0dMQ29sb3JSR0I6OkdMQ29sb3JSR0IoY29uc3QgVmVjdG9yMyAmZmxvYXRDb2xv
cikKKyAgICA6IFIoQ29sb3JEZW5vcm0oZmxvYXRDb2xvci54KSksIEcoQ29sb3JEZW5vcm0oZmxv
YXRDb2xvci55KSksIEIoQ29sb3JEZW5vcm0oZmxvYXRDb2xvci56KSkKK3sKK30KKworR0xDb2xv
cjo6R0xDb2xvcigpIDogUigwKSwgRygwKSwgQigwKSwgQSgwKQoreworfQorCitHTENvbG9yOjpH
TENvbG9yKEdMdWJ5dGUgciwgR0x1Ynl0ZSBnLCBHTHVieXRlIGIsIEdMdWJ5dGUgYSkgOiBSKHIp
LCBHKGcpLCBCKGIpLCBBKGEpCit7Cit9CisKK0dMQ29sb3I6OkdMQ29sb3IoY29uc3QgVmVjdG9y
NCAmZmxvYXRDb2xvcikKKyAgICA6IFIoQ29sb3JEZW5vcm0oZmxvYXRDb2xvci54KSksCisgICAg
ICBHKENvbG9yRGVub3JtKGZsb2F0Q29sb3IueSkpLAorICAgICAgQihDb2xvckRlbm9ybShmbG9h
dENvbG9yLnopKSwKKyAgICAgIEEoQ29sb3JEZW5vcm0oZmxvYXRDb2xvci53KSkKK3sKK30KKwor
R0xDb2xvcjo6R0xDb2xvcihHTHVpbnQgY29sb3JWYWx1ZSkgOiBSKDApLCBHKDApLCBCKDApLCBB
KDApCit7CisgICAgbWVtY3B5KCZSLCAmY29sb3JWYWx1ZSwgc2l6ZW9mKEdMdWludCkpOworfQor
CitWZWN0b3I0IEdMQ29sb3I6OnRvTm9ybWFsaXplZFZlY3RvcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFZlY3RvcjQoQ29sb3JOb3JtKFIpLCBDb2xvck5vcm0oRyksIENvbG9yTm9ybShCKSwgQ29s
b3JOb3JtKEEpKTsKK30KKworR0xDb2xvciBSZWFkQ29sb3IoR0xpbnQgeCwgR0xpbnQgeSkKK3sK
KyAgICBHTENvbG9yIGFjdHVhbDsKKyAgICBnbFJlYWRQaXhlbHMoKHgpLCAoeSksIDEsIDEsIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsICZhY3R1YWwuUik7CisgICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7CisgICAgcmV0dXJuIGFjdHVhbDsKK30KKworYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdM
Q29sb3IgJmEsIGNvbnN0IEdMQ29sb3IgJmIpCit7CisgICAgcmV0dXJuIGEuUiA9PSBiLlIgJiYg
YS5HID09IGIuRyAmJiBhLkIgPT0gYi5CICYmIGEuQSA9PSBiLkE7Cit9CisKK3N0ZDo6b3N0cmVh
bSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJm9zdHJlYW0sIGNvbnN0IEdMQ29sb3IgJmNvbG9y
KQoreworICAgIG9zdHJlYW0gPDwgIigiIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oY29s
b3IuUikgPDwgIiwgIgorICAgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihj
b2xvci5HKSA8PCAiLCAiIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oY29sb3IuQikKKyAg
ICAgICAgICAgIDw8ICIsICIgPDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihjb2xvci5BKSA8
PCAiKSI7CisgICAgcmV0dXJuIG9zdHJlYW07Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmdsZQor
CisvLyBzdGF0aWMKK3N0ZDo6YXJyYXk8VmVjdG9yMywgNj4gQU5HTEVUZXN0OjpHZXRRdWFkVmVy
dGljZXMoKQoreworICAgIHN0ZDo6YXJyYXk8VmVjdG9yMywgNj4gdmVydGljZXM7CisgICAgdmVy
dGljZXNbMF0gPSBWZWN0b3IzKC0xLjBmLCAxLjBmLCAwLjVmKTsKKyAgICB2ZXJ0aWNlc1sxXSA9
IFZlY3RvcjMoLTEuMGYsIC0xLjBmLCAwLjVmKTsKKyAgICB2ZXJ0aWNlc1syXSA9IFZlY3RvcjMo
MS4wZiwgLTEuMGYsIDAuNWYpOworICAgIHZlcnRpY2VzWzNdID0gVmVjdG9yMygtMS4wZiwgMS4w
ZiwgMC41Zik7CisgICAgdmVydGljZXNbNF0gPSBWZWN0b3IzKDEuMGYsIC0xLjBmLCAwLjVmKTsK
KyAgICB2ZXJ0aWNlc1s1XSA9IFZlY3RvcjMoMS4wZiwgMS4wZiwgMC41Zik7CisgICAgcmV0dXJu
IHZlcnRpY2VzOworfQorCitBTkdMRVRlc3Q6OkFOR0xFVGVzdCgpCisgICAgOiBtRUdMV2luZG93
KG51bGxwdHIpLAorICAgICAgbVdpZHRoKDE2KSwKKyAgICAgIG1IZWlnaHQoMTYpLAorICAgICAg
bUlnbm9yZUQzRDExU0RLTGF5ZXJzV2FybmluZ3MoZmFsc2UpLAorICAgICAgbVF1YWRWZXJ0ZXhC
dWZmZXIoMCkKK3sKKyAgICBtRUdMV2luZG93ID0KKyAgICAgICAgbmV3IEVHTFdpbmRvdyhHZXRQ
YXJhbSgpLm1ham9yVmVyc2lvbiwgR2V0UGFyYW0oKS5taW5vclZlcnNpb24sIEdldFBhcmFtKCku
ZWdsUGFyYW1ldGVycyk7Cit9CisKK0FOR0xFVGVzdDo6fkFOR0xFVGVzdCgpCit7CisgICAgaWYg
KG1RdWFkVmVydGV4QnVmZmVyKQorICAgIHsKKyAgICAgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZt
UXVhZFZlcnRleEJ1ZmZlcik7CisgICAgfQorICAgIFNhZmVEZWxldGUobUVHTFdpbmRvdyk7Cit9
CisKK3ZvaWQgQU5HTEVUZXN0OjpTZXRVcCgpCit7CisgICAgYW5nbGU6OmdfdGVzdFBsYXRmb3Jt
SW5zdGFuY2UuZW5hYmxlTWVzc2FnZXMoKTsKKworICAgIC8vIFJlc2l6ZSB0aGUgd2luZG93IGJl
Zm9yZSBjcmVhdGluZyB0aGUgY29udGV4dCBzbyB0aGF0IHRoZSBmaXJzdCBtYWtlIGN1cnJlbnQK
KyAgICAvLyBzZXRzIHRoZSB2aWV3cG9ydCBhbmQgc2Npc3NvciBib3ggdG8gdGhlIHJpZ2h0IHNp
emUuCisgICAgYm9vbCBuZWVkU3dhcCA9IGZhbHNlOworICAgIGlmIChtT1NXaW5kb3ctPmdldFdp
ZHRoKCkgIT0gbVdpZHRoIHx8IG1PU1dpbmRvdy0+Z2V0SGVpZ2h0KCkgIT0gbUhlaWdodCkKKyAg
ICB7CisgICAgICAgIGlmICghbU9TV2luZG93LT5yZXNpemUobVdpZHRoLCBtSGVpZ2h0KSkKKyAg
ICAgICAgeworICAgICAgICAgICAgRkFJTCgpIDw8ICJGYWlsZWQgdG8gcmVzaXplIEFOR0xFIHRl
c3Qgd2luZG93LiI7CisgICAgICAgIH0KKyAgICAgICAgbmVlZFN3YXAgPSB0cnVlOworICAgIH0K
KworICAgIGlmICghY3JlYXRlRUdMQ29udGV4dCgpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8
ICJlZ2wgY29udGV4dCBjcmVhdGlvbiBmYWlsZWQuIjsKKyAgICB9CisKKyAgICBpZiAobmVlZFN3
YXApCisgICAgeworICAgICAgICAvLyBTd2FwIHRoZSBidWZmZXJzIHNvIHRoYXQgdGhlIGRlZmF1
bHQgZnJhbWVidWZmZXIgcGlja3MgdXAgdGhlIHJlc2l6ZQorICAgICAgICAvLyB3aGljaCB3aWxs
IGFsbG93IGZvbGxvdy11cCB0ZXN0IGNvZGUgdG8gYXNzdW1lIHRoZSBmcmFtZWJ1ZmZlciBjb3Zl
cnMKKyAgICAgICAgLy8gdGhlIHdob2xlIHdpbmRvdy4KKyAgICAgICAgc3dhcEJ1ZmZlcnMoKTsK
KyAgICB9CisKKyAgICAvLyBUaGlzIFZpZXdwb3J0IGNvbW1hbmQgaXMgbm90IHN0cmljdGx5IG5l
Y2Vzc2FyeSBidXQgd2UgYWRkIGl0IHNvIHRoYXQgcHJvZ3JhbXMKKyAgICAvLyB0YWtpbmcgT3Bl
bkdMIHRyYWNlcyBjYW4gZ3Vlc3MgdGhlIHNpemUgb2YgdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIg
YW5kIHNob3cgaXQKKyAgICAvLyBpbiB0aGVpciBVSXMKKyAgICBnbFZpZXdwb3J0KDAsIDAsIG1X
aWR0aCwgbUhlaWdodCk7CisKKyAgICBjb25zdCBhdXRvICZpbmZvID0gdGVzdGluZzo6VW5pdFRl
c3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisgICAgYW5nbGU6OldyaXRl
RGVidWdNZXNzYWdlKCJFbnRlcmluZyAlcy4lc1xuIiwgaW5mby0+dGVzdF9jYXNlX25hbWUoKSwg
aW5mby0+bmFtZSgpKTsKK30KKwordm9pZCBBTkdMRVRlc3Q6OlRlYXJEb3duKCkKK3sKKyAgICBj
aGVja0QzRDExU0RLTGF5ZXJzTWVzc2FnZXMoKTsKKworICAgIGNvbnN0IGF1dG8gJmluZm8gPSB0
ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKKyAg
ICBhbmdsZTo6V3JpdGVEZWJ1Z01lc3NhZ2UoIkV4aXRpbmcgJXMuJXNcbiIsIGluZm8tPnRlc3Rf
Y2FzZV9uYW1lKCksIGluZm8tPm5hbWUoKSk7CisKKyAgICBzd2FwQnVmZmVycygpOworICAgIG1P
U1dpbmRvdy0+bWVzc2FnZUxvb3AoKTsKKworICAgIGlmICghZGVzdHJveUVHTENvbnRleHQoKSkK
KyAgICB7CisgICAgICAgIEZBSUwoKSA8PCAiZWdsIGNvbnRleHQgZGVzdHJ1Y3Rpb24gZmFpbGVk
LiI7CisgICAgfQorCisgICAgLy8gQ2hlY2sgZm9yIHF1aXQgbWVzc2FnZQorICAgIEV2ZW50IG15
RXZlbnQ7CisgICAgd2hpbGUgKG1PU1dpbmRvdy0+cG9wRXZlbnQoJm15RXZlbnQpKQorICAgIHsK
KyAgICAgICAgaWYgKG15RXZlbnQuVHlwZSA9PSBFdmVudDo6RVZFTlRfQ0xPU0VEKQorICAgICAg
ICB7CisgICAgICAgICAgICBleGl0KDApOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEFO
R0xFVGVzdDo6c3dhcEJ1ZmZlcnMoKQoreworICAgIGlmIChtRUdMV2luZG93LT5pc0dMSW5pdGlh
bGl6ZWQoKSkKKyAgICB7CisgICAgICAgIG1FR0xXaW5kb3ctPnN3YXAoKTsKKyAgICB9Cit9CisK
K3ZvaWQgQU5HTEVUZXN0OjpzZXR1cFF1YWRWZXJ0ZXhCdWZmZXIoR0xmbG9hdCBwb3NpdGlvbkF0
dHJpYlosIEdMZmxvYXQgcG9zaXRpb25BdHRyaWJYWVNjYWxlKQoreworICAgIGlmIChtUXVhZFZl
cnRleEJ1ZmZlciA9PSAwKQorICAgIHsKKyAgICAgICAgZ2xHZW5CdWZmZXJzKDEsICZtUXVhZFZl
cnRleEJ1ZmZlcik7CisgICAgfQorCisgICAgYXV0byBxdWFkVmVydGljZXMgPSBHZXRRdWFkVmVy
dGljZXMoKTsKKyAgICBmb3IgKFZlY3RvcjMgJnZlcnRleCA6IHF1YWRWZXJ0aWNlcykKKyAgICB7
CisgICAgICAgIHZlcnRleC54ICo9IHBvc2l0aW9uQXR0cmliWFlTY2FsZTsKKyAgICAgICAgdmVy
dGV4LnkgKj0gcG9zaXRpb25BdHRyaWJYWVNjYWxlOworICAgICAgICB2ZXJ0ZXgueiA9IHBvc2l0
aW9uQXR0cmliWjsKKyAgICB9CisKKyAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBt
UXVhZFZlcnRleEJ1ZmZlcik7CisgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgc2l6
ZW9mKEdMZmxvYXQpICogMyAqIDYsIHF1YWRWZXJ0aWNlcy5kYXRhKCksIEdMX1NUQVRJQ19EUkFX
KTsKK30KKwordm9pZCBBTkdMRVRlc3Q6OnNldHVwSW5kZXhlZFF1YWRWZXJ0ZXhCdWZmZXIoR0xm
bG9hdCBwb3NpdGlvbkF0dHJpYlosIEdMZmxvYXQgcG9zaXRpb25BdHRyaWJYWVNjYWxlKQorewor
ICAgIGlmIChtUXVhZFZlcnRleEJ1ZmZlciA9PSAwKQorICAgIHsKKyAgICAgICAgZ2xHZW5CdWZm
ZXJzKDEsICZtUXVhZFZlcnRleEJ1ZmZlcik7CisgICAgfQorCisgICAgYXV0byBxdWFkVmVydGlj
ZXMgPSBhbmdsZTo6R2V0SW5kZXhlZFF1YWRWZXJ0aWNlcygpOworICAgIGZvciAoVmVjdG9yMyAm
dmVydGV4IDogcXVhZFZlcnRpY2VzKQorICAgIHsKKyAgICAgICAgdmVydGV4LnggKj0gcG9zaXRp
b25BdHRyaWJYWVNjYWxlOworICAgICAgICB2ZXJ0ZXgueSAqPSBwb3NpdGlvbkF0dHJpYlhZU2Nh
bGU7CisgICAgICAgIHZlcnRleC56ID0gcG9zaXRpb25BdHRyaWJaOworICAgIH0KKworICAgIGds
QmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1RdWFkVmVydGV4QnVmZmVyKTsKKyAgICBnbEJ1
ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBzaXplb2YoR0xmbG9hdCkgKiAzICogNCwgcXVhZFZl
cnRpY2VzLmRhdGEoKSwgR0xfU1RBVElDX0RSQVcpOworfQorCisvLyBzdGF0aWMKK3ZvaWQgQU5H
TEVUZXN0OjpkcmF3UXVhZChHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmcG9zaXRpb25BdHRyaWJOYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZmxvYXQgcG9zaXRpb25BdHRyaWJaKQoreworICAgIGRyYXdRdWFkKHByb2dy
YW0sIHBvc2l0aW9uQXR0cmliTmFtZSwgcG9zaXRpb25BdHRyaWJaLCAxLjBmKTsKK30KKworLy8g
c3RhdGljCit2b2lkIEFOR0xFVGVzdDo6ZHJhd1F1YWQoR0x1aW50IHByb2dyYW0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnBvc2l0aW9uQXR0cmliTmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHBvc2l0aW9uQXR0cmliWiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHBvc2l0aW9uQXR0cmliWFlTY2FsZSkKK3sKKyAg
ICBkcmF3UXVhZChwcm9ncmFtLCBwb3NpdGlvbkF0dHJpYk5hbWUsIHBvc2l0aW9uQXR0cmliWiwg
cG9zaXRpb25BdHRyaWJYWVNjYWxlLCBmYWxzZSk7Cit9CisKK3ZvaWQgQU5HTEVUZXN0OjpkcmF3
UXVhZChHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyAmcG9zaXRpb25BdHRyaWJOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZmxvYXQgcG9zaXRpb25BdHRyaWJaLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQg
cG9zaXRpb25BdHRyaWJYWVNjYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdXNl
VmVydGV4QnVmZmVyKQoreworICAgIEdMaW50IHByZXZpb3VzUHJvZ3JhbSA9IDA7CisgICAgZ2xH
ZXRJbnRlZ2VydihHTF9DVVJSRU5UX1BST0dSQU0sICZwcmV2aW91c1Byb2dyYW0pOworICAgIGlm
IChwcmV2aW91c1Byb2dyYW0gIT0gc3RhdGljX2Nhc3Q8R0xpbnQ+KHByb2dyYW0pKQorICAgIHsK
KyAgICAgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0pOworICAgIH0KKworICAgIEdMaW50IHBvc2l0
aW9uTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIHBvc2l0aW9uQXR0cmli
TmFtZS5jX3N0cigpKTsKKworICAgIGlmICh1c2VWZXJ0ZXhCdWZmZXIpCisgICAgeworICAgICAg
ICBzZXR1cFF1YWRWZXJ0ZXhCdWZmZXIocG9zaXRpb25BdHRyaWJaLCBwb3NpdGlvbkF0dHJpYlhZ
U2NhbGUpOworICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25Mb2NhdGlvbiwg
MywgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCAwKTsKKyAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FS
UkFZX0JVRkZFUiwgMCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGF1dG8gcXVh
ZFZlcnRpY2VzID0gR2V0UXVhZFZlcnRpY2VzKCk7CisgICAgICAgIGZvciAoVmVjdG9yMyAmdmVy
dGV4IDogcXVhZFZlcnRpY2VzKQorICAgICAgICB7CisgICAgICAgICAgICB2ZXJ0ZXgueCAqPSBw
b3NpdGlvbkF0dHJpYlhZU2NhbGU7CisgICAgICAgICAgICB2ZXJ0ZXgueSAqPSBwb3NpdGlvbkF0
dHJpYlhZU2NhbGU7CisgICAgICAgICAgICB2ZXJ0ZXgueiA9IHBvc2l0aW9uQXR0cmliWjsKKyAg
ICAgICAgfQorCisgICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxvY2F0aW9u
LCAzLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIHF1YWRWZXJ0aWNlcy5kYXRhKCkpOworICAgIH0K
KyAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHBvc2l0aW9uTG9jYXRpb24pOworCisgICAg
Z2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMCwgNik7CisKKyAgICBnbERpc2FibGVWZXJ0ZXhB
dHRyaWJBcnJheShwb3NpdGlvbkxvY2F0aW9uKTsKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIo
cG9zaXRpb25Mb2NhdGlvbiwgNCwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCBOVUxMKTsKKworICAg
IGlmIChwcmV2aW91c1Byb2dyYW0gIT0gc3RhdGljX2Nhc3Q8R0xpbnQ+KHByb2dyYW0pKQorICAg
IHsKKyAgICAgICAgZ2xVc2VQcm9ncmFtKHByZXZpb3VzUHJvZ3JhbSk7CisgICAgfQorfQorCit2
b2lkIEFOR0xFVGVzdDo6ZHJhd0luZGV4ZWRRdWFkKEdMdWludCBwcm9ncmFtLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmcG9zaXRpb25BdHRyaWJO
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHBvc2l0aW9uQXR0
cmliWikKK3sKKyAgICBkcmF3SW5kZXhlZFF1YWQocHJvZ3JhbSwgcG9zaXRpb25BdHRyaWJOYW1l
LCBwb3NpdGlvbkF0dHJpYlosIDEuMGYpOworfQorCit2b2lkIEFOR0xFVGVzdDo6ZHJhd0luZGV4
ZWRRdWFkKEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyAmcG9zaXRpb25BdHRyaWJOYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGZsb2F0IHBvc2l0aW9uQXR0cmliWiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xmbG9hdCBwb3NpdGlvbkF0dHJpYlhZU2NhbGUpCit7CisgICAgR0xp
bnQgcG9zaXRpb25Mb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgcG9zaXRp
b25BdHRyaWJOYW1lLmNfc3RyKCkpOworCisgICAgR0xpbnQgYWN0aXZlUHJvZ3JhbSA9IDA7Cisg
ICAgZ2xHZXRJbnRlZ2VydihHTF9DVVJSRU5UX1BST0dSQU0sICZhY3RpdmVQcm9ncmFtKTsKKyAg
ICBpZiAoc3RhdGljX2Nhc3Q8R0x1aW50PihhY3RpdmVQcm9ncmFtKSAhPSBwcm9ncmFtKQorICAg
IHsKKyAgICAgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0pOworICAgIH0KKworICAgIEdMdWludCBw
cmV2QmluZGluZyA9IDA7CisgICAgZ2xHZXRJbnRlZ2VydihHTF9BUlJBWV9CVUZGRVJfQklORElO
RywgcmVpbnRlcnByZXRfY2FzdDxHTGludCAqPigmcHJldkJpbmRpbmcpKTsKKworICAgIHNldHVw
SW5kZXhlZFF1YWRWZXJ0ZXhCdWZmZXIocG9zaXRpb25BdHRyaWJaLCBwb3NpdGlvbkF0dHJpYlhZ
U2NhbGUpOworCisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0aW9uTG9jYXRpb24sIDMs
IEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgbnVsbHB0cik7CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheShwb3NpdGlvbkxvY2F0aW9uKTsKKyAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVG
RkVSLCBwcmV2QmluZGluZyk7CisKKyAgICBjb25zdCBHTHVzaG9ydCBpbmRpY2VzW10gPSB7Cisg
ICAgICAgIDAsIDEsIDIsIDAsIDIsIDMsCisgICAgfTsKKworICAgIGdsRHJhd0VsZW1lbnRzKEdM
X1RSSUFOR0xFUywgNiwgR0xfVU5TSUdORURfU0hPUlQsIGluZGljZXMpOworCisgICAgZ2xEaXNh
YmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2NhdGlvbik7CisgICAgZ2xWZXJ0ZXhBdHRy
aWJQb2ludGVyKHBvc2l0aW9uTG9jYXRpb24sIDQsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgTlVM
TCk7CisKKyAgICBpZiAoc3RhdGljX2Nhc3Q8R0x1aW50PihhY3RpdmVQcm9ncmFtKSAhPSBwcm9n
cmFtKQorICAgIHsKKyAgICAgICAgZ2xVc2VQcm9ncmFtKHN0YXRpY19jYXN0PEdMdWludD4oYWN0
aXZlUHJvZ3JhbSkpOworICAgIH0KK30KKworR0x1aW50IEFOR0xFVGVzdDo6Y29tcGlsZVNoYWRl
cihHTGVudW0gdHlwZSwgY29uc3Qgc3RkOjpzdHJpbmcgJnNvdXJjZSkKK3sKKyAgICBHTHVpbnQg
c2hhZGVyID0gZ2xDcmVhdGVTaGFkZXIodHlwZSk7CisKKyAgICBjb25zdCBjaGFyICpzb3VyY2VB
cnJheVsxXSA9IHsgc291cmNlLmNfc3RyKCkgfTsKKyAgICBnbFNoYWRlclNvdXJjZShzaGFkZXIs
IDEsIHNvdXJjZUFycmF5LCBOVUxMKTsKKyAgICBnbENvbXBpbGVTaGFkZXIoc2hhZGVyKTsKKwor
ICAgIEdMaW50IGNvbXBpbGVSZXN1bHQ7CisgICAgZ2xHZXRTaGFkZXJpdihzaGFkZXIsIEdMX0NP
TVBJTEVfU1RBVFVTLCAmY29tcGlsZVJlc3VsdCk7CisKKyAgICBpZiAoY29tcGlsZVJlc3VsdCA9
PSAwKQorICAgIHsKKyAgICAgICAgR0xpbnQgaW5mb0xvZ0xlbmd0aDsKKyAgICAgICAgZ2xHZXRT
aGFkZXJpdihzaGFkZXIsIEdMX0lORk9fTE9HX0xFTkdUSCwgJmluZm9Mb2dMZW5ndGgpOworCisg
ICAgICAgIGlmIChpbmZvTG9nTGVuZ3RoID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0
ZDo6Y2VyciA8PCAic2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCB3aXRoIGVtcHR5IGxvZy4iIDw8
IHN0ZDo6ZW5kbDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0ZDo6dmVjdG9yPEdMY2hhcj4gaW5mb0xvZyhpbmZvTG9nTGVuZ3RoKTsKKyAgICAgICAg
ICAgIGdsR2V0U2hhZGVySW5mb0xvZyhzaGFkZXIsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KGluZm9M
b2cuc2l6ZSgpKSwgTlVMTCwgJmluZm9Mb2dbMF0pOworCisgICAgICAgICAgICBzdGQ6OmNlcnIg
PDwgInNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQ6ICIgPDwgJmluZm9Mb2dbMF07CisgICAgICAg
IH0KKworICAgICAgICBnbERlbGV0ZVNoYWRlcihzaGFkZXIpOworICAgICAgICBzaGFkZXIgPSAw
OworICAgIH0KKworICAgIHJldHVybiBzaGFkZXI7Cit9CisKK3ZvaWQgQU5HTEVUZXN0OjpjaGVj
a0QzRDExU0RLTGF5ZXJzTWVzc2FnZXMoKQoreworI2lmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1f
V0lORE9XUykgJiYgIWRlZmluZWQoTkRFQlVHKQorICAgIC8vIEluIGRlYnVnIEQzRDExIG1vZGUs
IGNoZWNrIElEM0QxMUluZm9RdWV1ZSB0byBzZWUgaWYgYW55IEQzRDExIFNESyBMYXllcnMgbWVz
c2FnZXMKKyAgICAvLyB3ZXJlIG91dHB1dHRlZCBieSB0aGUgdGVzdAorICAgIGlmIChtSWdub3Jl
RDNEMTFTREtMYXllcnNXYXJuaW5ncyB8fAorICAgICAgICBtRUdMV2luZG93LT5nZXRQbGF0Zm9y
bSgpLnJlbmRlcmVyICE9IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFIHx8Cisg
ICAgICAgIG1FR0xXaW5kb3ctPmdldERpc3BsYXkoKSA9PSBFR0xfTk9fRElTUExBWSkKKyAgICB7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCBjaGFyICpleHRlbnNpb25TdHJp
bmcgPQorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBjaGFyICo+KGVnbFF1ZXJ5U3RyaW5nKG1F
R0xXaW5kb3ctPmdldERpc3BsYXkoKSwgRUdMX0VYVEVOU0lPTlMpKTsKKyAgICBpZiAoIXN0cnN0
cihleHRlbnNpb25TdHJpbmcsICJFR0xfRVhUX2RldmljZV9xdWVyeSIpKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIEVHTEF0dHJpYiBkZXZpY2UgICAgICA9IDA7CisgICAg
RUdMQXR0cmliIGFuZ2xlRGV2aWNlID0gMDsKKworICAgIFBGTkVHTFFVRVJZRElTUExBWUFUVFJJ
QkVYVFBST0MgcXVlcnlEaXNwbGF5QXR0cmliRVhUOworICAgIFBGTkVHTFFVRVJZREVWSUNFQVRU
UklCRVhUUFJPQyBxdWVyeURldmljZUF0dHJpYkVYVDsKKworICAgIHF1ZXJ5RGlzcGxheUF0dHJp
YkVYVCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZORUdMUVVFUllESVNQTEFZQVRUUklCRVhUUFJPQz4o
CisgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJlZ2xRdWVyeURpc3BsYXlBdHRyaWJFWFQiKSk7
CisgICAgcXVlcnlEZXZpY2VBdHRyaWJFWFQgPSByZWludGVycHJldF9jYXN0PFBGTkVHTFFVRVJZ
REVWSUNFQVRUUklCRVhUUFJPQz4oCisgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJlZ2xRdWVy
eURldmljZUF0dHJpYkVYVCIpKTsKKyAgICBBU1NFUlRfTkUobnVsbHB0ciwgcXVlcnlEaXNwbGF5
QXR0cmliRVhUKTsKKyAgICBBU1NFUlRfTkUobnVsbHB0ciwgcXVlcnlEZXZpY2VBdHRyaWJFWFQp
OworCisgICAgQVNTRVJUX0VHTF9UUlVFKHF1ZXJ5RGlzcGxheUF0dHJpYkVYVChtRUdMV2luZG93
LT5nZXREaXNwbGF5KCksIEVHTF9ERVZJQ0VfRVhULCAmYW5nbGVEZXZpY2UpKTsKKyAgICBBU1NF
UlRfRUdMX1RSVUUocXVlcnlEZXZpY2VBdHRyaWJFWFQocmVpbnRlcnByZXRfY2FzdDxFR0xEZXZp
Y2VFWFQ+KGFuZ2xlRGV2aWNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRUdMX0QzRDExX0RFVklDRV9BTkdMRSwgJmRldmljZSkpOworICAgIElEM0QxMURldmlj
ZSAqZDNkMTFEZXZpY2UgPSByZWludGVycHJldF9jYXN0PElEM0QxMURldmljZSAqPihkZXZpY2Up
OworCisgICAgSUQzRDExSW5mb1F1ZXVlICppbmZvUXVldWUgPSBudWxscHRyOworICAgIEhSRVNV
TFQgaHIgPQorICAgICAgICBkM2QxMURldmljZS0+UXVlcnlJbnRlcmZhY2UoX191dWlkb2YoaW5m
b1F1ZXVlKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkICoqPigmaW5mb1F1ZXVlKSk7CisgICAgaWYg
KFNVQ0NFRURFRChocikpCisgICAgeworICAgICAgICBVSU5UNjQgbnVtU3RvcmVkRDNERGVidWdN
ZXNzYWdlcyA9CisgICAgICAgICAgICBpbmZvUXVldWUtPkdldE51bVN0b3JlZE1lc3NhZ2VzQWxs
b3dlZEJ5UmV0cmlldmFsRmlsdGVyKCk7CisKKyAgICAgICAgaWYgKG51bVN0b3JlZEQzRERlYnVn
TWVzc2FnZXMgPiAwKQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKFVJTlQ2NCBpID0gMDsg
aSA8IG51bVN0b3JlZEQzRERlYnVnTWVzc2FnZXM7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBTSVpFX1QgbWVzc2FnZUxlbmd0aCA9IDA7CisgICAgICAgICAgICAgICAgaHIg
ICAgICAgICAgICAgICAgICAgPSBpbmZvUXVldWUtPkdldE1lc3NhZ2UoaSwgbnVsbHB0ciwgJm1l
c3NhZ2VMZW5ndGgpOworCisgICAgICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChocikpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBEM0QxMV9NRVNTQUdFICpwTWVzc2Fn
ZSA9CisgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PEQzRDExX01FU1NB
R0UgKj4obWFsbG9jKG1lc3NhZ2VMZW5ndGgpKTsKKyAgICAgICAgICAgICAgICAgICAgaW5mb1F1
ZXVlLT5HZXRNZXNzYWdlKGksIHBNZXNzYWdlLCAmbWVzc2FnZUxlbmd0aCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJNZXNzYWdlICIgPDwgaSA8PCAiOiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDw8ICIgIiA8PCBwTWVzc2FnZS0+cERlc2NyaXB0aW9uIDw8
ICJcbiI7CisgICAgICAgICAgICAgICAgICAgIGZyZWUocE1lc3NhZ2UpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgRkFJTCgpIDw8IG51bVN0b3JlZEQz
RERlYnVnTWVzc2FnZXMKKyAgICAgICAgICAgICAgICAgICA8PCAiIEQzRDExIFNESyBMYXllcnMg
bWVzc2FnZShzKSBkZXRlY3RlZCEgVGVzdCBGYWlsZWQuXG4iOworICAgICAgICB9CisgICAgfQor
CisgICAgU2FmZVJlbGVhc2UoaW5mb1F1ZXVlKTsKKyNlbmRpZgorfQorCitzdGF0aWMgYm9vbCBj
aGVja0V4dGVuc2lvbkV4aXN0cyhjb25zdCBjaGFyICphbGxFeHRlbnNpb25zLCBjb25zdCBzdGQ6
OnN0cmluZyAmZXh0TmFtZSkKK3sKKyAgICByZXR1cm4gc3Ryc3RyKGFsbEV4dGVuc2lvbnMsIGV4
dE5hbWUuY19zdHIoKSkgIT0gbnVsbHB0cjsKK30KKworYm9vbCBBTkdMRVRlc3Q6OmV4dGVuc2lv
bkVuYWJsZWQoY29uc3Qgc3RkOjpzdHJpbmcgJmV4dE5hbWUpCit7CisgICAgcmV0dXJuIGNoZWNr
RXh0ZW5zaW9uRXhpc3RzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihnbEdldFN0cmlu
ZyhHTF9FWFRFTlNJT05TKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dE5h
bWUpOworfQorCitib29sIEFOR0xFVGVzdDo6ZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQoRUdM
RGlzcGxheSBkaXNwbGF5LCBjb25zdCBzdGQ6OnN0cmluZyAmZXh0TmFtZSkKK3sKKyAgICByZXR1
cm4gY2hlY2tFeHRlbnNpb25FeGlzdHMoZWdsUXVlcnlTdHJpbmcoZGlzcGxheSwgRUdMX0VYVEVO
U0lPTlMpLCBleHROYW1lKTsKK30KKworYm9vbCBBTkdMRVRlc3Q6OmVnbENsaWVudEV4dGVuc2lv
bkVuYWJsZWQoY29uc3Qgc3RkOjpzdHJpbmcgJmV4dE5hbWUpCit7CisgICAgcmV0dXJuIGNoZWNr
RXh0ZW5zaW9uRXhpc3RzKGVnbFF1ZXJ5U3RyaW5nKEVHTF9OT19ESVNQTEFZLCBFR0xfRVhURU5T
SU9OUyksIGV4dE5hbWUpOworfQorCit2b2lkIEFOR0xFVGVzdDo6c2V0V2luZG93V2lkdGgoaW50
IHdpZHRoKQoreworICAgIG1XaWR0aCA9IHdpZHRoOworfQorCit2b2lkIEFOR0xFVGVzdDo6c2V0
V2luZG93SGVpZ2h0KGludCBoZWlnaHQpCit7CisgICAgbUhlaWdodCA9IGhlaWdodDsKK30KKwor
dm9pZCBBTkdMRVRlc3Q6OnNldENvbmZpZ1JlZEJpdHMoaW50IGJpdHMpCit7CisgICAgbUVHTFdp
bmRvdy0+c2V0Q29uZmlnUmVkQml0cyhiaXRzKTsKK30KKwordm9pZCBBTkdMRVRlc3Q6OnNldENv
bmZpZ0dyZWVuQml0cyhpbnQgYml0cykKK3sKKyAgICBtRUdMV2luZG93LT5zZXRDb25maWdHcmVl
bkJpdHMoYml0cyk7Cit9CisKK3ZvaWQgQU5HTEVUZXN0OjpzZXRDb25maWdCbHVlQml0cyhpbnQg
Yml0cykKK3sKKyAgICBtRUdMV2luZG93LT5zZXRDb25maWdCbHVlQml0cyhiaXRzKTsKK30KKwor
dm9pZCBBTkdMRVRlc3Q6OnNldENvbmZpZ0FscGhhQml0cyhpbnQgYml0cykKK3sKKyAgICBtRUdM
V2luZG93LT5zZXRDb25maWdBbHBoYUJpdHMoYml0cyk7Cit9CisKK3ZvaWQgQU5HTEVUZXN0Ojpz
ZXRDb25maWdEZXB0aEJpdHMoaW50IGJpdHMpCit7CisgICAgbUVHTFdpbmRvdy0+c2V0Q29uZmln
RGVwdGhCaXRzKGJpdHMpOworfQorCit2b2lkIEFOR0xFVGVzdDo6c2V0Q29uZmlnU3RlbmNpbEJp
dHMoaW50IGJpdHMpCit7CisgICAgbUVHTFdpbmRvdy0+c2V0Q29uZmlnU3RlbmNpbEJpdHMoYml0
cyk7Cit9CisKK3ZvaWQgQU5HTEVUZXN0OjpzZXRNdWx0aXNhbXBsZUVuYWJsZWQoYm9vbCBlbmFi
bGVkKQoreworICAgIG1FR0xXaW5kb3ctPnNldE11bHRpc2FtcGxlKGVuYWJsZWQpOworfQorCit2
b2lkIEFOR0xFVGVzdDo6c2V0RGVidWdFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtRUdM
V2luZG93LT5zZXREZWJ1Z0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKK3ZvaWQgQU5HTEVUZXN0Ojpz
ZXROb0Vycm9yRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgbUVHTFdpbmRvdy0+c2V0Tm9F
cnJvckVuYWJsZWQoZW5hYmxlZCk7Cit9CisKK3ZvaWQgQU5HTEVUZXN0OjpzZXRXZWJHTENvbXBh
dGliaWxpdHlFbmFibGVkKGJvb2wgd2ViZ2xDb21wYXRpYmlsaXR5KQoreworICAgIG1FR0xXaW5k
b3ctPnNldFdlYkdMQ29tcGF0aWJpbGl0eUVuYWJsZWQod2ViZ2xDb21wYXRpYmlsaXR5KTsKK30K
Kwordm9pZCBBTkdMRVRlc3Q6OnNldEJpbmRHZW5lcmF0ZXNSZXNvdXJjZShib29sIGJpbmRHZW5l
cmF0ZXNSZXNvdXJjZSkKK3sKKyAgICBtRUdMV2luZG93LT5zZXRCaW5kR2VuZXJhdGVzUmVzb3Vy
Y2UoYmluZEdlbmVyYXRlc1Jlc291cmNlKTsKK30KKworaW50IEFOR0xFVGVzdDo6Z2V0Q2xpZW50
TWFqb3JWZXJzaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUVHTFdpbmRvdy0+Z2V0Q2xpZW50
TWFqb3JWZXJzaW9uKCk7Cit9CisKK2ludCBBTkdMRVRlc3Q6OmdldENsaWVudE1pbm9yVmVyc2lv
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1FR0xXaW5kb3ctPmdldENsaWVudE1pbm9yVmVyc2lv
bigpOworfQorCitFR0xXaW5kb3cgKkFOR0xFVGVzdDo6Z2V0RUdMV2luZG93KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbUVHTFdpbmRvdzsKK30KKworaW50IEFOR0xFVGVzdDo6Z2V0V2luZG93V2lk
dGgoKSBjb25zdAoreworICAgIHJldHVybiBtV2lkdGg7Cit9CisKK2ludCBBTkdMRVRlc3Q6Omdl
dFdpbmRvd0hlaWdodCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1IZWlnaHQ7Cit9CisKK2Jvb2wg
QU5HTEVUZXN0Ojppc011bHRpc2FtcGxlRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1F
R0xXaW5kb3ctPmlzTXVsdGlzYW1wbGUoKTsKK30KKworYm9vbCBBTkdMRVRlc3Q6OmNyZWF0ZUVH
TENvbnRleHQoKQoreworICAgIHJldHVybiBtRUdMV2luZG93LT5pbml0aWFsaXplR0wobU9TV2lu
ZG93KTsKK30KKworYm9vbCBBTkdMRVRlc3Q6OmRlc3Ryb3lFR0xDb250ZXh0KCkKK3sKKyAgICBt
RUdMV2luZG93LT5kZXN0cm95R0woKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBBTkdM
RVRlc3Q6OkluaXRUZXN0V2luZG93KCkKK3sKKyAgICBtT1NXaW5kb3cgPSBDcmVhdGVPU1dpbmRv
dygpOworICAgIGlmICghbU9TV2luZG93LT5pbml0aWFsaXplKCJBTkdMRV9URVNUIiwgMTI4LCAx
MjgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1PU1dpbmRv
dy0+c2V0VmlzaWJsZSh0cnVlKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEFOR0xF
VGVzdDo6RGVzdHJveVRlc3RXaW5kb3coKQoreworICAgIGlmIChtT1NXaW5kb3cpCisgICAgewor
ICAgICAgICBtT1NXaW5kb3ctPmRlc3Ryb3koKTsKKyAgICAgICAgZGVsZXRlIG1PU1dpbmRvdzsK
KyAgICAgICAgbU9TV2luZG93ID0gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kwordm9pZCBBTkdMRVRlc3Q6OlNldFdpbmRvd1Zpc2libGUoYm9vbCBpc1Zpc2libGUpCit7Cisg
ICAgbU9TV2luZG93LT5zZXRWaXNpYmxlKGlzVmlzaWJsZSk7Cit9CisKK2Jvb2wgSXNJbnRlbCgp
Cit7CisgICAgc3RkOjpzdHJpbmcgcmVuZGVyZXJTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyICo+KGdsR2V0U3RyaW5nKEdMX1JFTkRFUkVSKSkpOworICAgIHJldHVybiAocmVuZGVy
ZXJTdHJpbmcuZmluZCgiSW50ZWwiKSAhPSBzdGQ6OnN0cmluZzo6bnBvcyk7Cit9CisKK2Jvb2wg
SXNBZHJlbm8oKQoreworICAgIHN0ZDo6c3RyaW5nIHJlbmRlcmVyU3RyaW5nKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhciAqPihnbEdldFN0cmluZyhHTF9SRU5ERVJFUikpKTsKKyAgICByZXR1
cm4gKHJlbmRlcmVyU3RyaW5nLmZpbmQoIkFkcmVubyIpICE9IHN0ZDo6c3RyaW5nOjpucG9zKTsK
K30KKworYm9vbCBJc0FNRCgpCit7CisgICAgc3RkOjpzdHJpbmcgcmVuZGVyZXJTdHJpbmcocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KGdsR2V0U3RyaW5nKEdMX1JFTkRFUkVSKSkpOwor
ICAgIHJldHVybiAocmVuZGVyZXJTdHJpbmcuZmluZCgiQU1EIikgIT0gc3RkOjpzdHJpbmc6Om5w
b3MpIHx8CisgICAgICAgICAgIChyZW5kZXJlclN0cmluZy5maW5kKCJBVEkiKSAhPSBzdGQ6OnN0
cmluZzo6bnBvcyk7Cit9CisKK2Jvb2wgSXNOVklESUEoKQoreworICAgIHN0ZDo6c3RyaW5nIHJl
bmRlcmVyU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihnbEdldFN0cmluZyhH
TF9SRU5ERVJFUikpKTsKKyAgICByZXR1cm4gKHJlbmRlcmVyU3RyaW5nLmZpbmQoIk5WSURJQSIp
ICE9IHN0ZDo6c3RyaW5nOjpucG9zKTsKK30KKworYm9vbCBJc0QzRDExKCkKK3sKKyAgICBzdGQ6
OnN0cmluZyByZW5kZXJlclN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4oZ2xH
ZXRTdHJpbmcoR0xfUkVOREVSRVIpKSk7CisgICAgcmV0dXJuIChyZW5kZXJlclN0cmluZy5maW5k
KCJEaXJlY3QzRDExIHZzXzVfMCIpICE9IHN0ZDo6c3RyaW5nOjpucG9zKTsKK30KKworYm9vbCBJ
c0QzRDExX0ZMOTMoKQoreworICAgIHN0ZDo6c3RyaW5nIHJlbmRlcmVyU3RyaW5nKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihnbEdldFN0cmluZyhHTF9SRU5ERVJFUikpKTsKKyAgICBy
ZXR1cm4gKHJlbmRlcmVyU3RyaW5nLmZpbmQoIkRpcmVjdDNEMTEgdnNfNF8wXyIpICE9IHN0ZDo6
c3RyaW5nOjpucG9zKTsKK30KKworYm9vbCBJc0QzRDkoKQoreworICAgIHN0ZDo6c3RyaW5nIHJl
bmRlcmVyU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihnbEdldFN0cmluZyhH
TF9SRU5ERVJFUikpKTsKKyAgICByZXR1cm4gKHJlbmRlcmVyU3RyaW5nLmZpbmQoIkRpcmVjdDNE
OSIpICE9IHN0ZDo6c3RyaW5nOjpucG9zKTsKK30KKworYm9vbCBJc0QzRFNNMygpCit7CisgICAg
cmV0dXJuIElzRDNEOSgpIHx8IElzRDNEMTFfRkw5MygpOworfQorCitib29sIElzRGVza3RvcE9w
ZW5HTCgpCit7CisgICAgcmV0dXJuIElzT3BlbkdMKCkgJiYgIUlzT3BlbkdMRVMoKTsKK30KKwor
Ym9vbCBJc09wZW5HTEVTKCkKK3sKKyAgICBzdGQ6OnN0cmluZyByZW5kZXJlclN0cmluZyhyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4oZ2xHZXRTdHJpbmcoR0xfUkVOREVSRVIpKSk7Cisg
ICAgcmV0dXJuIChyZW5kZXJlclN0cmluZy5maW5kKCJPcGVuR0wgRVMiKSAhPSBzdGQ6OnN0cmlu
Zzo6bnBvcyk7Cit9CisKK2Jvb2wgSXNPcGVuR0woKQoreworICAgIHN0ZDo6c3RyaW5nIHJlbmRl
cmVyU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihnbEdldFN0cmluZyhHTF9S
RU5ERVJFUikpKTsKKyAgICByZXR1cm4gKHJlbmRlcmVyU3RyaW5nLmZpbmQoIk9wZW5HTCIpICE9
IHN0ZDo6c3RyaW5nOjpucG9zKTsKK30KKworYm9vbCBJc0FuZHJvaWQoKQoreworI2lmIGRlZmlu
ZWQoQU5HTEVfUExBVEZPUk1fQU5EUk9JRCkKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAg
cmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK2Jvb2wgSXNMaW51eCgpCit7CisjaWYgZGVmaW5l
ZChBTkdMRV9QTEFURk9STV9MSU5VWCkKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCit9CisKK2Jvb2wgSXNPU1goKQoreworI2lmIGRlZmluZWQoQU5H
TEVfUExBVEZPUk1fQVBQTEUpCisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgorfQorCitib29sIElzV2luZG93cygpCit7CisjaWYgZGVmaW5lZChBTkdM
RV9QTEFURk9STV9XSU5ET1dTKQorICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICByZXR1cm4g
ZmFsc2U7CisjZW5kaWYKK30KKworYm9vbCBJc0RlYnVnKCkKK3sKKyNpZiAhZGVmaW5lZChOREVC
VUcpCisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgor
fQorCitib29sIElzUmVsZWFzZSgpCit7CisgICAgcmV0dXJuICFJc0RlYnVnKCk7Cit9CisKK0VH
TGludCBBTkdMRVRlc3Q6OmdldFBsYXRmb3JtUmVuZGVyZXIoKSBjb25zdAoreworICAgIGFzc2Vy
dChtRUdMV2luZG93KTsKKyAgICByZXR1cm4gbUVHTFdpbmRvdy0+Z2V0UGxhdGZvcm0oKS5yZW5k
ZXJlcjsKK30KKwordm9pZCBBTkdMRVRlc3Q6Omlnbm9yZUQzRDExU0RLTGF5ZXJzV2FybmluZ3Mo
KQoreworICAgIC8vIFNvbWUgdGVzdHMgbWF5IG5lZWQgdG8gZGlzYWJsZSB0aGUgRDNEMTEgU0RL
IExheWVycyBXYXJuaW5ncyBjaGVja3MKKyAgICBtSWdub3JlRDNEMTFTREtMYXllcnNXYXJuaW5n
cyA9IHRydWU7Cit9CisKK09TV2luZG93ICpBTkdMRVRlc3Q6Om1PU1dpbmRvdyA9IE5VTEw7CisK
K3ZvaWQgQU5HTEVUZXN0RW52aXJvbm1lbnQ6OlNldFVwKCkKK3sKKyAgICBtR0xFU0xpYnJhcnku
cmVzZXQoYW5nbGU6OmxvYWRMaWJyYXJ5KCJsaWJHTEVTdjIiKSk7CisgICAgaWYgKG1HTEVTTGli
cmFyeSkKKyAgICB7CisgICAgICAgIGF1dG8gaW5pdEZ1bmMgPSByZWludGVycHJldF9jYXN0PEFO
R0xFUGxhdGZvcm1Jbml0aWFsaXplRnVuYz4oCisgICAgICAgICAgICBtR0xFU0xpYnJhcnktPmdl
dFN5bWJvbCgiQU5HTEVQbGF0Zm9ybUluaXRpYWxpemUiKSk7CisgICAgICAgIGlmIChpbml0RnVu
YykKKyAgICAgICAgeworICAgICAgICAgICAgaW5pdEZ1bmMoJmFuZ2xlOjpnX3Rlc3RQbGF0Zm9y
bUluc3RhbmNlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghQU5HTEVUZXN0OjpJbml0
VGVzdFdpbmRvdygpKQorICAgIHsKKyAgICAgICAgRkFJTCgpIDw8ICJGYWlsZWQgdG8gY3JlYXRl
IEFOR0xFIHRlc3Qgd2luZG93LiI7CisgICAgfQorfQorCit2b2lkIEFOR0xFVGVzdEVudmlyb25t
ZW50OjpUZWFyRG93bigpCit7CisgICAgQU5HTEVUZXN0OjpEZXN0cm95VGVzdFdpbmRvdygpOwor
CisgICAgaWYgKG1HTEVTTGlicmFyeSkKKyAgICB7CisgICAgICAgIGF1dG8gc2h1dGRvd25GdW5j
ID0gcmVpbnRlcnByZXRfY2FzdDxBTkdMRVBsYXRmb3JtU2h1dGRvd25GdW5jPigKKyAgICAgICAg
ICAgIG1HTEVTTGlicmFyeS0+Z2V0U3ltYm9sKCJBTkdMRVBsYXRmb3JtU2h1dGRvd24iKSk7Cisg
ICAgICAgIGlmIChzaHV0ZG93bkZ1bmMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNodXRkb3du
RnVuYygpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIElnbm9yZUFOR0xFUGxhdGZvcm1N
ZXNzYWdlcygpCit7CisgICAgLy8gTmVnYXRpdmUgdGVzdHMgbWF5IHRyaWdnZXIgZXhwZWN0ZWQg
ZXJyb3JzL3dhcm5pbmdzIGluIHRoZSBBTkdMRSBQbGF0Zm9ybS4KKyAgICBhbmdsZTo6Z190ZXN0
UGxhdGZvcm1JbnN0YW5jZS5pZ25vcmVNZXNzYWdlcygpOworfQpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvQU5HTEVUZXN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvQU5HTEVUZXN0
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rl
c3RfdXRpbHMvQU5HTEVUZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNzMgQEAKKy8v
CisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworLy8gQU5HTEVUZXN0OgorLy8gICBJbXBsZW1lbnRhdGlvbiBvZiBjb21tb24g
QU5HTEUgdGVzdGluZyBmaXh0dXJlLgorLy8KKworI2lmbmRlZiBBTkdMRV9URVNUU19BTkdMRV9U
RVNUX0hfCisjZGVmaW5lIEFOR0xFX1RFU1RTX0FOR0xFX1RFU1RfSF8KKworI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGFycmF5PgorCisj
aW5jbHVkZSAiYW5nbGVfZ2wuaCIKKyNpbmNsdWRlICJhbmdsZV90ZXN0X2NvbmZpZ3MuaCIKKyNp
bmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorI2luY2x1ZGUgInNoYWRlcl91dGlscy5oIgor
I2luY2x1ZGUgInN5c3RlbV91dGlscy5oIgorI2luY2x1ZGUgIlZlY3Rvci5oIgorCisjZGVmaW5l
IEVYUEVDVF9HTF9FUlJPUihlcnIpIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxHTGVudW0+KGVyciks
IGdsR2V0RXJyb3IoKSkKKyNkZWZpbmUgRVhQRUNUX0dMX05PX0VSUk9SKCkgRVhQRUNUX0VRKHN0
YXRpY19jYXN0PEdMZW51bT4oR0xfTk9fRVJST1IpLCBnbEdldEVycm9yKCkpCisKKyNkZWZpbmUg
QVNTRVJUX0dMX0VSUk9SKGVycikgQVNTRVJUX0VRKHN0YXRpY19jYXN0PEdMZW51bT4oZXJyKSwg
Z2xHZXRFcnJvcigpKQorI2RlZmluZSBBU1NFUlRfR0xfTk9fRVJST1IoKSBBU1NFUlRfRVEoc3Rh
dGljX2Nhc3Q8R0xlbnVtPihHTF9OT19FUlJPUiksIGdsR2V0RXJyb3IoKSkKKworI2RlZmluZSBF
WFBFQ1RfRUdMX0VSUk9SKGVycikgRVhQRUNUX0VRKChlcnIpLCBlZ2xHZXRFcnJvcigpKQorI2Rl
ZmluZSBFWFBFQ1RfRUdMX1NVQ0NFU1MoKSBFWFBFQ1RfRUdMX0VSUk9SKEVHTF9TVUNDRVNTKQor
CisvLyBFR0xCb29sZWFuIGlzIHx1bnNpZ25lZCBpbnR8IGJ1dCBFR0xfVFJVRSBpcyAwLCBub3Qg
MHUuCisjZGVmaW5lIEFTU0VSVF9FR0xfVFJVRShhKSBBU1NFUlRfRVEoc3RhdGljX2Nhc3Q8RUdM
Qm9vbGVhbj4oRUdMX1RSVUUpLCAoYSkpCisjZGVmaW5lIEFTU0VSVF9FR0xfRkFMU0UoYSkgQVNT
RVJUX0VRKHN0YXRpY19jYXN0PEVHTEJvb2xlYW4+KEVHTF9GQUxTRSksIChhKSkKKyNkZWZpbmUg
RVhQRUNUX0VHTF9UUlVFKGEpIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxFR0xCb29sZWFuPihFR0xf
VFJVRSksIChhKSkKKyNkZWZpbmUgRVhQRUNUX0VHTF9GQUxTRShhKSBFWFBFQ1RfRVEoc3RhdGlj
X2Nhc3Q8RUdMQm9vbGVhbj4oRUdMX0ZBTFNFKSwgKGEpKQorCisjZGVmaW5lIEFTU0VSVF9FR0xf
RVJST1IoZXJyKSBBU1NFUlRfRVEoKGVyciksIGVnbEdldEVycm9yKCkpCisjZGVmaW5lIEFTU0VS
VF9FR0xfU1VDQ0VTUygpIEFTU0VSVF9FR0xfRVJST1IoRUdMX1NVQ0NFU1MpCisKKyNkZWZpbmUg
QVNTRVJUX0dMRU5VTV9FUShleHBlY3RlZCwgYWN0dWFsKSBBU1NFUlRfRVEoc3RhdGljX2Nhc3Q8
R0xlbnVtPihleHBlY3RlZCksIHN0YXRpY19jYXN0PEdMZW51bT4oYWN0dWFsKSkKKyNkZWZpbmUg
RVhQRUNUX0dMRU5VTV9FUShleHBlY3RlZCwgYWN0dWFsKSBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8
R0xlbnVtPihleHBlY3RlZCksIHN0YXRpY19jYXN0PEdMZW51bT4oYWN0dWFsKSkKKworbmFtZXNw
YWNlIGFuZ2xlCit7CitzdHJ1Y3QgR0xDb2xvclJHQgoreworICAgIEdMQ29sb3JSR0IoKTsKKyAg
ICBHTENvbG9yUkdCKEdMdWJ5dGUgciwgR0x1Ynl0ZSBnLCBHTHVieXRlIGIpOworICAgIEdMQ29s
b3JSR0IoY29uc3QgVmVjdG9yMyAmZmxvYXRDb2xvcik7CisKKyAgICBHTHVieXRlIFIsIEcsIEI7
CisKKyAgICBzdGF0aWMgY29uc3QgR0xDb2xvclJHQiBibGFjazsKKyAgICBzdGF0aWMgY29uc3Qg
R0xDb2xvclJHQiBibHVlOworICAgIHN0YXRpYyBjb25zdCBHTENvbG9yUkdCIGdyZWVuOworICAg
IHN0YXRpYyBjb25zdCBHTENvbG9yUkdCIHJlZDsKKyAgICBzdGF0aWMgY29uc3QgR0xDb2xvclJH
QiB5ZWxsb3c7Cit9OworCitzdHJ1Y3QgR0xDb2xvcgoreworICAgIEdMQ29sb3IoKTsKKyAgICBH
TENvbG9yKEdMdWJ5dGUgciwgR0x1Ynl0ZSBnLCBHTHVieXRlIGIsIEdMdWJ5dGUgYSk7CisgICAg
R0xDb2xvcihjb25zdCBWZWN0b3I0ICZmbG9hdENvbG9yKTsKKyAgICBHTENvbG9yKEdMdWludCBj
b2xvclZhbHVlKTsKKworICAgIFZlY3RvcjQgdG9Ob3JtYWxpemVkVmVjdG9yKCkgY29uc3Q7CisK
KyAgICBHTHVieXRlIFIsIEcsIEIsIEE7CisKKyAgICBzdGF0aWMgY29uc3QgR0xDb2xvciBibGFj
azsKKyAgICBzdGF0aWMgY29uc3QgR0xDb2xvciBibHVlOworICAgIHN0YXRpYyBjb25zdCBHTENv
bG9yIGN5YW47CisgICAgc3RhdGljIGNvbnN0IEdMQ29sb3IgZ3JlZW47CisgICAgc3RhdGljIGNv
bnN0IEdMQ29sb3IgcmVkOworICAgIHN0YXRpYyBjb25zdCBHTENvbG9yIHRyYW5zcGFyZW50Qmxh
Y2s7CisgICAgc3RhdGljIGNvbnN0IEdMQ29sb3Igd2hpdGU7CisgICAgc3RhdGljIGNvbnN0IEdM
Q29sb3IgeWVsbG93OworfTsKKworLy8gVXNlZnVsIHRvIGNhc3QgYW55IHR5cGUgdG8gR0x1Ynl0
ZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUUiwgdHlwZW5hbWUgVEcsIHR5cGVuYW1lIFRCLCB0eXBl
bmFtZSBUQT4KK0dMQ29sb3IgTWFrZUdMQ29sb3IoVFIgciwgVEcgZywgVEIgYiwgVEEgYSkKK3sK
KyAgICByZXR1cm4gR0xDb2xvcihzdGF0aWNfY2FzdDxHTHVieXRlPihyKSwgc3RhdGljX2Nhc3Q8
R0x1Ynl0ZT4oZyksIHN0YXRpY19jYXN0PEdMdWJ5dGU+KGIpLAorICAgICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PEdMdWJ5dGU+KGEpKTsKK30KKworYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdM
Q29sb3IgJmEsIGNvbnN0IEdMQ29sb3IgJmIpOworc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0
ZDo6b3N0cmVhbSAmb3N0cmVhbSwgY29uc3QgR0xDb2xvciAmY29sb3IpOworR0xDb2xvciBSZWFk
Q29sb3IoR0xpbnQgeCwgR0xpbnQgeSk7CisKK30gIC8vIG5hbWVzcGFjZSBhbmdsZQorCisjZGVm
aW5lIEVYUEVDVF9QSVhFTF9FUSh4LCB5LCByLCBnLCBiLCBhKSBcCisgICAgRVhQRUNUX0VRKGFu
Z2xlOjpNYWtlR0xDb2xvcihyLCBnLCBiLCBhKSwgYW5nbGU6OlJlYWRDb2xvcih4LCB5KSkKKwor
I2RlZmluZSBFWFBFQ1RfUElYRUxfQUxQSEFfRVEoeCwgeSwgYSkgRVhQRUNUX0VRKGEsIGFuZ2xl
OjpSZWFkQ29sb3IoeCwgeSkuQSkKKworI2RlZmluZSBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoeCwg
eSwgYW5nbGVDb2xvcikgRVhQRUNUX0VRKGFuZ2xlQ29sb3IsIGFuZ2xlOjpSZWFkQ29sb3IoeCwg
eSkpCisKKyNkZWZpbmUgRVhQRUNUX1BJWEVMX05FQVIoeCwgeSwgciwgZywgYiwgYSwgYWJzX2Vy
cm9yKSBcCit7IFwKKyAgICBHTHVieXRlIHBpeGVsWzRdOyBcCisgICAgZ2xSZWFkUGl4ZWxzKCh4
KSwgKHkpLCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbCk7IFwKKyAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsgXAorICAgIEVYUEVDVF9ORUFSKChyKSwgcGl4ZWxbMF0sIGFi
c19lcnJvcik7IFwKKyAgICBFWFBFQ1RfTkVBUigoZyksIHBpeGVsWzFdLCBhYnNfZXJyb3IpOyBc
CisgICAgRVhQRUNUX05FQVIoKGIpLCBwaXhlbFsyXSwgYWJzX2Vycm9yKTsgXAorICAgIEVYUEVD
VF9ORUFSKChhKSwgcGl4ZWxbM10sIGFic19lcnJvcik7IFwKK30KKworLy8gVE9ETyhqbWFkaWxs
KTogRmlndXJlIG91dCBob3cgd2UgY2FuIHVzZSBHTENvbG9yJ3MgbmljZSBwcmludGluZyB3aXRo
IEVYUEVDVF9ORUFSLgorI2RlZmluZSBFWFBFQ1RfUElYRUxfQ09MT1JfTkVBUih4LCB5LCBhbmds
ZUNvbG9yLCBhYnNfZXJyb3IpIFwKKyAgICBFWFBFQ1RfUElYRUxfTkVBUih4LCB5LCBhbmdsZUNv
bG9yLlIsIGFuZ2xlQ29sb3IuRywgYW5nbGVDb2xvci5CLCBhbmdsZUNvbG9yLkEsIGFic19lcnJv
cikKKworI2RlZmluZSBFWFBFQ1RfQ09MT1JfTkVBUihleHBlY3RlZCwgYWN0dWFsLCBhYnNfZXJy
b3IpIFwKKyAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIEVYUEVDVF9ORUFSKGV4cGVjdGVkLlIsIGFjdHVhbC5SLCBhYnNfZXJy
b3IpOyAgXAorICAgICAgICBFWFBFQ1RfTkVBUihleHBlY3RlZC5HLCBhY3R1YWwuRywgYWJzX2Vy
cm9yKTsgIFwKKyAgICAgICAgRVhQRUNUX05FQVIoZXhwZWN0ZWQuQiwgYWN0dWFsLkIsIGFic19l
cnJvcik7ICBcCisgICAgICAgIEVYUEVDVF9ORUFSKGV4cGVjdGVkLkEsIGFjdHVhbC5BLCBhYnNf
ZXJyb3IpOyAgXAorICAgIFwKK30KKworY2xhc3MgRUdMV2luZG93OworY2xhc3MgT1NXaW5kb3c7
CisKK2NsYXNzIEFOR0xFVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08YW5n
bGU6OlBsYXRmb3JtUGFyYW1ldGVycz4KK3sKKyAgcHJvdGVjdGVkOgorICAgIEFOR0xFVGVzdCgp
OworICAgIH5BTkdMRVRlc3QoKTsKKworICBwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgSW5pdFRl
c3RXaW5kb3coKTsKKyAgICBzdGF0aWMgYm9vbCBEZXN0cm95VGVzdFdpbmRvdygpOworICAgIHN0
YXRpYyB2b2lkIFNldFdpbmRvd1Zpc2libGUoYm9vbCBpc1Zpc2libGUpOworICAgIHN0YXRpYyBi
b29sIGVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKEVHTERpc3BsYXkgZGlzcGxheSwgY29uc3Qg
c3RkOjpzdHJpbmcgJmV4dE5hbWUpOworCisgIHByb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQg
U2V0VXAoKTsKKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKTsKKworICAgIHZpcnR1YWwgdm9p
ZCBzd2FwQnVmZmVycygpOworCisgICAgdm9pZCBzZXR1cFF1YWRWZXJ0ZXhCdWZmZXIoR0xmbG9h
dCBwb3NpdGlvbkF0dHJpYlosIEdMZmxvYXQgcG9zaXRpb25BdHRyaWJYWVNjYWxlKTsKKyAgICB2
b2lkIHNldHVwSW5kZXhlZFF1YWRWZXJ0ZXhCdWZmZXIoR0xmbG9hdCBwb3NpdGlvbkF0dHJpYlos
IEdMZmxvYXQgcG9zaXRpb25BdHRyaWJYWVNjYWxlKTsKKworICAgIHZvaWQgZHJhd1F1YWQoR0x1
aW50IHByb2dyYW0sIGNvbnN0IHN0ZDo6c3RyaW5nICZwb3NpdGlvbkF0dHJpYk5hbWUsIEdMZmxv
YXQgcG9zaXRpb25BdHRyaWJaKTsKKyAgICB2b2lkIGRyYXdRdWFkKEdMdWludCBwcm9ncmFtLAor
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnBvc2l0aW9uQXR0cmliTmFtZSwK
KyAgICAgICAgICAgICAgICAgIEdMZmxvYXQgcG9zaXRpb25BdHRyaWJaLAorICAgICAgICAgICAg
ICAgICAgR0xmbG9hdCBwb3NpdGlvbkF0dHJpYlhZU2NhbGUpOworICAgIHZvaWQgZHJhd1F1YWQo
R0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmcG9z
aXRpb25BdHRyaWJOYW1lLAorICAgICAgICAgICAgICAgICAgR0xmbG9hdCBwb3NpdGlvbkF0dHJp
YlosCisgICAgICAgICAgICAgICAgICBHTGZsb2F0IHBvc2l0aW9uQXR0cmliWFlTY2FsZSwKKyAg
ICAgICAgICAgICAgICAgIGJvb2wgdXNlVmVydGV4QnVmZmVyKTsKKyAgICBzdGF0aWMgc3RkOjph
cnJheTxWZWN0b3IzLCA2PiBHZXRRdWFkVmVydGljZXMoKTsKKyAgICB2b2lkIGRyYXdJbmRleGVk
UXVhZChHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyAmcG9zaXRpb25BdHRyaWJOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZmxvYXQgcG9zaXRpb25BdHRyaWJaKTsKKyAgICB2b2lkIGRyYXdJbmRleGVkUXVhZChHTHVpbnQg
cHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmcG9z
aXRpb25BdHRyaWJOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgcG9zaXRp
b25BdHRyaWJaLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgcG9zaXRpb25BdHRy
aWJYWVNjYWxlKTsKKworICAgIHN0YXRpYyBHTHVpbnQgY29tcGlsZVNoYWRlcihHTGVudW0gdHlw
ZSwgY29uc3Qgc3RkOjpzdHJpbmcgJnNvdXJjZSk7CisgICAgc3RhdGljIGJvb2wgZXh0ZW5zaW9u
RW5hYmxlZChjb25zdCBzdGQ6OnN0cmluZyAmZXh0TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZWds
Q2xpZW50RXh0ZW5zaW9uRW5hYmxlZChjb25zdCBzdGQ6OnN0cmluZyAmZXh0TmFtZSk7CisKKyAg
ICB2b2lkIHNldFdpbmRvd1dpZHRoKGludCB3aWR0aCk7CisgICAgdm9pZCBzZXRXaW5kb3dIZWln
aHQoaW50IGhlaWdodCk7CisgICAgdm9pZCBzZXRDb25maWdSZWRCaXRzKGludCBiaXRzKTsKKyAg
ICB2b2lkIHNldENvbmZpZ0dyZWVuQml0cyhpbnQgYml0cyk7CisgICAgdm9pZCBzZXRDb25maWdC
bHVlQml0cyhpbnQgYml0cyk7CisgICAgdm9pZCBzZXRDb25maWdBbHBoYUJpdHMoaW50IGJpdHMp
OworICAgIHZvaWQgc2V0Q29uZmlnRGVwdGhCaXRzKGludCBiaXRzKTsKKyAgICB2b2lkIHNldENv
bmZpZ1N0ZW5jaWxCaXRzKGludCBiaXRzKTsKKyAgICB2b2lkIHNldE11bHRpc2FtcGxlRW5hYmxl
ZChib29sIGVuYWJsZWQpOworICAgIHZvaWQgc2V0RGVidWdFbmFibGVkKGJvb2wgZW5hYmxlZCk7
CisgICAgdm9pZCBzZXROb0Vycm9yRW5hYmxlZChib29sIGVuYWJsZWQpOworICAgIHZvaWQgc2V0
V2ViR0xDb21wYXRpYmlsaXR5RW5hYmxlZChib29sIHdlYmdsQ29tcGF0aWJpbGl0eSk7CisgICAg
dm9pZCBzZXRCaW5kR2VuZXJhdGVzUmVzb3VyY2UoYm9vbCBiaW5kR2VuZXJhdGVzUmVzb3VyY2Up
OworCisgICAgaW50IGdldENsaWVudE1ham9yVmVyc2lvbigpIGNvbnN0OworICAgIGludCBnZXRD
bGllbnRNaW5vclZlcnNpb24oKSBjb25zdDsKKworICAgIEVHTFdpbmRvdyAqZ2V0RUdMV2luZG93
KCkgY29uc3Q7CisgICAgaW50IGdldFdpbmRvd1dpZHRoKCkgY29uc3Q7CisgICAgaW50IGdldFdp
bmRvd0hlaWdodCgpIGNvbnN0OworICAgIGJvb2wgaXNNdWx0aXNhbXBsZUVuYWJsZWQoKSBjb25z
dDsKKworICAgIEVHTGludCBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgY29uc3Q7CisKKyAgICB2b2lk
IGlnbm9yZUQzRDExU0RLTGF5ZXJzV2FybmluZ3MoKTsKKworICBwcml2YXRlOgorICAgIGJvb2wg
Y3JlYXRlRUdMQ29udGV4dCgpOworICAgIGJvb2wgZGVzdHJveUVHTENvbnRleHQoKTsKKworICAg
IHZvaWQgY2hlY2tEM0QxMVNES0xheWVyc01lc3NhZ2VzKCk7CisKKyAgICBFR0xXaW5kb3cgKm1F
R0xXaW5kb3c7CisgICAgaW50IG1XaWR0aDsKKyAgICBpbnQgbUhlaWdodDsKKworICAgIGJvb2wg
bUlnbm9yZUQzRDExU0RLTGF5ZXJzV2FybmluZ3M7CisKKyAgICAvLyBVc2VkIGZvciBpbmRleGVk
IHF1YWQgcmVuZGVyaW5nCisgICAgR0x1aW50IG1RdWFkVmVydGV4QnVmZmVyOworCisgICAgc3Rh
dGljIE9TV2luZG93ICptT1NXaW5kb3c7Cit9OworCitjbGFzcyBBTkdMRVRlc3RFbnZpcm9ubWVu
dCA6IHB1YmxpYyB0ZXN0aW5nOjpFbnZpcm9ubWVudAoreworICBwdWJsaWM6CisgICAgdm9pZCBT
ZXRVcCgpIG92ZXJyaWRlOworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZTsKKworICBwcml2
YXRlOgorICAgIC8vIEZvciBsb2FkaW5nIGFuZCBmcmVlaW5nIHBsYXRmb3JtCisgICAgc3RkOjp1
bmlxdWVfcHRyPGFuZ2xlOjpMaWJyYXJ5PiBtR0xFU0xpYnJhcnk7Cit9OworCisvLyBEcml2ZXIg
dmVuZG9ycworYm9vbCBJc0ludGVsKCk7Citib29sIElzQWRyZW5vKCk7Citib29sIElzQU1EKCk7
Citib29sIElzTlZJRElBKCk7CisKKy8vIFJlbmRlcmVyIGJhY2stZW5kcworLy8gTm90ZTogRkw5
XzMgaXMgZXhwbGljaXRseSAqbm90KiBjb25zaWRlcmVkIEQzRDExLgorYm9vbCBJc0QzRDExKCk7
Citib29sIElzRDNEMTFfRkw5MygpOworLy8gSXMgYSBEM0Q5LWNsYXNzIHJlbmRlcmVyLgorYm9v
bCBJc0QzRDkoKTsKKy8vIElzIEQzRDkgb3IgU005XzMgcmVuZGVyZXIuCitib29sIElzRDNEU00z
KCk7Citib29sIElzRGVza3RvcE9wZW5HTCgpOworYm9vbCBJc09wZW5HTEVTKCk7Citib29sIElz
T3BlbkdMKCk7CisKKy8vIE9wZXJhdGluZyBzeXN0ZW1zCitib29sIElzQW5kcm9pZCgpOworYm9v
bCBJc0xpbnV4KCk7Citib29sIElzT1NYKCk7Citib29sIElzV2luZG93cygpOworCisvLyBEZWJ1
Zy9SZWxlYXNlCitib29sIElzRGVidWcoKTsKK2Jvb2wgSXNSZWxlYXNlKCk7CisKKy8vIE5lZ2F0
aXZlIHRlc3RzIG1heSB0cmlnZ2VyIGV4cGVjdGVkIGVycm9ycy93YXJuaW5ncyBpbiB0aGUgQU5H
TEUgUGxhdGZvcm0uCit2b2lkIElnbm9yZUFOR0xFUGxhdGZvcm1NZXNzYWdlcygpOworCisvLyBO
b3RlOiBnaXQgY2wgZm9ybWF0IG1lc3NlcyB1cCB0aGlzIGZvcm1hdHRpbmcuCisjZGVmaW5lIEFO
R0xFX1NLSVBfVEVTVF9JRihDT05EKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICBcCitpZihDT05EKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZDog
IiAjQ09ORCAiLiIgPDwgc3RkOjplbmRsOyBcCisgICAgICAgIHJldHVybjsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBcCit9CisKKyNlbmRpZiAg
Ly8gQU5HTEVfVEVTVFNfQU5HTEVfVEVTVF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvYW5nbGVfdGVzdF9jb25maWdzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90
ZXN0X2NvbmZpZ3MuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmlncy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw1OTggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAidGVzdF91dGls
cy9hbmdsZV90ZXN0X2NvbmZpZ3MuaCIKKworbmFtZXNwYWNlIGFuZ2xlCit7CisKK1BsYXRmb3Jt
UGFyYW1ldGVyczo6UGxhdGZvcm1QYXJhbWV0ZXJzKCkKKyAgICA6IFBsYXRmb3JtUGFyYW1ldGVy
cygyLCAwLCBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMoKSkKK3sKK30KKworUGxhdGZvcm1QYXJhbWV0
ZXJzOjpQbGF0Zm9ybVBhcmFtZXRlcnMoRUdMaW50IG1ham9yVmVyc2lvbiwgRUdMaW50IG1pbm9y
VmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVH
TFBsYXRmb3JtUGFyYW1ldGVycyAmZWdsUGxhdGZvcm1QYXJhbWV0ZXJzKQorICAgIDogbWFqb3JW
ZXJzaW9uKG1ham9yVmVyc2lvbiksCisgICAgICBtaW5vclZlcnNpb24obWlub3JWZXJzaW9uKSwK
KyAgICAgIGVnbFBhcmFtZXRlcnMoZWdsUGxhdGZvcm1QYXJhbWV0ZXJzKQoreworfQorCitFR0xp
bnQgUGxhdGZvcm1QYXJhbWV0ZXJzOjpnZXRSZW5kZXJlcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGVnbFBhcmFtZXRlcnMucmVuZGVyZXI7Cit9CisKK2Jvb2wgb3BlcmF0b3I8KGNvbnN0IFBsYXRm
b3JtUGFyYW1ldGVycyAmYSwgY29uc3QgUGxhdGZvcm1QYXJhbWV0ZXJzICZiKQoreworICAgIGlm
IChhLm1ham9yVmVyc2lvbiAhPSBiLm1ham9yVmVyc2lvbikKKyAgICB7CisgICAgICAgIHJldHVy
biBhLm1ham9yVmVyc2lvbiA8IGIubWFqb3JWZXJzaW9uOworICAgIH0KKworICAgIGlmIChhLm1p
bm9yVmVyc2lvbiAhPSBiLm1pbm9yVmVyc2lvbikKKyAgICB7CisgICAgICAgIHJldHVybiBhLm1p
bm9yVmVyc2lvbiA8IGIubWlub3JWZXJzaW9uOworICAgIH0KKworICAgIHJldHVybiBhLmVnbFBh
cmFtZXRlcnMgPCBiLmVnbFBhcmFtZXRlcnM7Cit9CisKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBQ
bGF0Zm9ybVBhcmFtZXRlcnMgJmEsIGNvbnN0IFBsYXRmb3JtUGFyYW1ldGVycyAmYikKK3sKKyAg
ICByZXR1cm4gKGEubWFqb3JWZXJzaW9uID09IGIubWFqb3JWZXJzaW9uKSAmJgorICAgICAgICAg
ICAoYS5taW5vclZlcnNpb24gPT0gYi5taW5vclZlcnNpb24pICYmCisgICAgICAgICAgIChhLmVn
bFBhcmFtZXRlcnMgPT0gYi5lZ2xQYXJhbWV0ZXJzKTsKK30KKworc3RkOjpvc3RyZWFtICZvcGVy
YXRvcjw8KHN0ZDo6b3N0cmVhbSYgc3RyZWFtLCBjb25zdCBQbGF0Zm9ybVBhcmFtZXRlcnMgJnBw
KQoreworICAgIHN0cmVhbSA8PCAiRVMiIDw8IHBwLm1ham9yVmVyc2lvbiA8PCAiXyIgOworICAg
IGlmIChwcC5taW5vclZlcnNpb24gIT0gMCkKKyAgICB7CisgICAgICAgIHN0cmVhbSA8PCBwcC5t
aW5vclZlcnNpb24gPDwgIl8iOworICAgIH0KKworICAgIHN3aXRjaCAocHAuZWdsUGFyYW1ldGVy
cy5yZW5kZXJlcikKKyAgICB7CisgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0Qz
RDlfQU5HTEU6CisgICAgICAgIHN0cmVhbSA8PCAiRDNEOSI7CisgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRToKKyAgICAgICAgc3Ry
ZWFtIDw8ICJEM0QxMSI7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBFR0xfUExBVEZPUk1f
QU5HTEVfVFlQRV9PUEVOR0xfQU5HTEU6CisgICAgICAgIHN0cmVhbSA8PCAiT1BFTkdMIjsKKyAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTEVT
X0FOR0xFOgorICAgICAgICAgIHN0cmVhbSA8PCAiT1BFTkdMRVMiOworICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfREVGQVVMVF9BTkdMRToKKyAgICAg
ICAgc3RyZWFtIDw8ICJERUZBVUxUIjsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0Ogor
ICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAo
cHAuZWdsUGFyYW1ldGVycy5tYWpvclZlcnNpb24gIT0gRUdMX0RPTlRfQ0FSRSkKKyAgICB7Cisg
ICAgICAgIHN0cmVhbSA8PCAiXyIgPDwgcHAuZWdsUGFyYW1ldGVycy5tYWpvclZlcnNpb247Cisg
ICAgfQorCisgICAgaWYgKHBwLmVnbFBhcmFtZXRlcnMubWlub3JWZXJzaW9uICE9IEVHTF9ET05U
X0NBUkUpCisgICAgeworICAgICAgICBzdHJlYW0gPDwgIl8iIDw8IHBwLmVnbFBhcmFtZXRlcnMu
bWlub3JWZXJzaW9uOworICAgIH0KKworICAgIHN3aXRjaCAocHAuZWdsUGFyYW1ldGVycy5kZXZp
Y2VUeXBlKQorICAgIHsKKyAgICAgIGNhc2UgRUdMX0RPTlRfQ0FSRToKKyAgICAgIGNhc2UgRUdM
X1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0hBUkRXQVJFX0FOR0xFOgorICAgICAgICAvLyBk
ZWZhdWx0CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9E
RVZJQ0VfVFlQRV9OVUxMX0FOR0xFOgorICAgICAgICAgIHN0cmVhbSA8PCAiX05VTEwiOworICAg
ICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQ
RV9SRUZFUkVOQ0VfQU5HTEU6CisgICAgICAgIHN0cmVhbSA8PCAiX1JFRkVSRU5DRSI7CisgICAg
ICAgIGJyZWFrOworCisgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9X
QVJQX0FOR0xFOgorICAgICAgICBzdHJlYW0gPDwgIl9XQVJQIjsKKyAgICAgICAgYnJlYWs7CisK
KyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKworICAgIHN3aXRjaCAocHAuZWdsUGFyYW1ldGVycy5wcmVzZW50UGF0aCkKKyAgICB7
CisgICAgICAgIGNhc2UgRUdMX0VYUEVSSU1FTlRBTF9QUkVTRU5UX1BBVEhfQ09QWV9BTkdMRToK
KyAgICAgICAgICAgIHN0cmVhbSA8PCAiX1BSRVNFTlRfUEFUSF9DT1BZIjsKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2UgRUdMX0VYUEVSSU1FTlRBTF9QUkVTRU5UX1BBVEhfRkFT
VF9BTkdMRToKKyAgICAgICAgICAgIHN0cmVhbSA8PCAiX1BSRVNFTlRfUEFUSF9GQVNUIjsKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRUdMX0RPTlRfQ0FSRToKKyAgICAgICAg
ICAgIC8vIGRlZmF1bHQKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgcmV0dXJuIHN0cmVhbTsKK30KKworLy8gRUdMIHBsYXRmb3JtcworbmFtZXNwYWNlIGVnbF9w
bGF0Zm9ybQoreworCitFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgREVGQVVMVCgpCit7CisgICAgcmV0
dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVycyhFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9ERUZBVUxU
X0FOR0xFKTsKK30KKworRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIERFRkFVTFRfTlVMTCgpCit7Cisg
ICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVycygKKyAgICAgICAgRUdMX1BMQVRGT1JNX0FO
R0xFX1RZUEVfREVGQVVMVF9BTkdMRSwKKyAgICAgICAgRUdMX0RPTlRfQ0FSRSwgRUdMX0RPTlRf
Q0FSRSwKKyAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX05VTExfQU5HTEUp
OworfQorCitFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEOSgpCit7CisgICAgcmV0dXJuIEVHTFBs
YXRmb3JtUGFyYW1ldGVycygKKyAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEOV9B
TkdMRSwKKyAgICAgICAgRUdMX0RPTlRfQ0FSRSwgRUdMX0RPTlRfQ0FSRSwKKyAgICAgICAgRUdM
X1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0hBUkRXQVJFX0FOR0xFKTsKK30KKworRUdMUGxh
dGZvcm1QYXJhbWV0ZXJzIEQzRDlfTlVMTCgpCit7CisgICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFy
YW1ldGVycygKKyAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEOV9BTkdMRSwKKyAg
ICAgICAgRUdMX0RPTlRfQ0FSRSwgRUdMX0RPTlRfQ0FSRSwKKyAgICAgICAgRUdMX1BMQVRGT1JN
X0FOR0xFX0RFVklDRV9UWVBFX05VTExfQU5HTEUpOworfQorCitFR0xQbGF0Zm9ybVBhcmFtZXRl
cnMgRDNEOV9SRUZFUkVOQ0UoKQoreworICAgIHJldHVybiBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMo
CisgICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDlfQU5HTEUsCisgICAgICAgIEVH
TF9ET05UX0NBUkUsIEVHTF9ET05UX0NBUkUsCisgICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9E
RVZJQ0VfVFlQRV9SRUZFUkVOQ0VfQU5HTEUpOworfQorCitFR0xQbGF0Zm9ybVBhcmFtZXRlcnMg
RDNEMTEoKQoreworICAgIHJldHVybiBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMoCisgICAgICAgIEVH
TF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFLAorICAgICAgICBFR0xfRE9OVF9DQVJF
LCBFR0xfRE9OVF9DQVJFLAorICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVf
SEFSRFdBUkVfQU5HTEUpOworfQorCitFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTEoRUdMZW51
bSBwcmVzZW50UGF0aCkKK3sKKyAgICByZXR1cm4gRUdMUGxhdGZvcm1QYXJhbWV0ZXJzKEVHTF9Q
TEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFLCBFR0xfRE9OVF9DQVJFLCBFR0xfRE9OVF9D
QVJFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xF
X0RFVklDRV9UWVBFX0hBUkRXQVJFX0FOR0xFLCBwcmVzZW50UGF0aCk7Cit9CisKK0VHTFBsYXRm
b3JtUGFyYW1ldGVycyBEM0QxMV9GTDExXzEoKQoreworICAgIHJldHVybiBFR0xQbGF0Zm9ybVBh
cmFtZXRlcnMoCisgICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFLAor
ICAgICAgICAxMSwgMSwKKyAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0hB
UkRXQVJFX0FOR0xFKTsKK30KKworRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDExX0ZMMTFfMCgp
Cit7CisgICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVycygKKyAgICAgICAgRUdMX1BMQVRG
T1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUsCisgICAgICAgIDExLCAwLAorICAgICAgICBFR0xf
UExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfSEFSRFdBUkVfQU5HTEUpOworfQorCitFR0xQbGF0
Zm9ybVBhcmFtZXRlcnMgRDNEMTFfRkwxMF8xKCkKK3sKKyAgICByZXR1cm4gRUdMUGxhdGZvcm1Q
YXJhbWV0ZXJzKAorICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwK
KyAgICAgICAgMTAsIDEsCisgICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9I
QVJEV0FSRV9BTkdMRSk7Cit9CisKK0VHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0QxMV9GTDEwXzAo
KQoreworICAgIHJldHVybiBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMoCisgICAgICAgIEVHTF9QTEFU
Rk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFLAorICAgICAgICAxMCwgMCwKKyAgICAgICAgRUdM
X1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0hBUkRXQVJFX0FOR0xFKTsKK30KKworRUdMUGxh
dGZvcm1QYXJhbWV0ZXJzIEQzRDExX0ZMOV8zKCkKK3sKKyAgICByZXR1cm4gRUdMUGxhdGZvcm1Q
YXJhbWV0ZXJzKAorICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwK
KyAgICAgICAgOSwgMywKKyAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0hB
UkRXQVJFX0FOR0xFKTsKK30KKworRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDExX05VTEwoKQor
eworICAgIHJldHVybiBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMoCisgICAgICAgIEVHTF9QTEFURk9S
TV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFLAorICAgICAgICBFR0xfRE9OVF9DQVJFLCBFR0xfRE9O
VF9DQVJFLAorICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfTlVMTF9BTkdM
RSk7Cit9CisKK0VHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0QxMV9XQVJQKCkKK3sKKyAgICByZXR1
cm4gRUdMUGxhdGZvcm1QYXJhbWV0ZXJzKAorICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQ
RV9EM0QxMV9BTkdMRSwKKyAgICAgICAgRUdMX0RPTlRfQ0FSRSwgRUdMX0RPTlRfQ0FSRSwKKyAg
ICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX1dBUlBfQU5HTEUpOworfQorCitF
R0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFfRkwxMV8xX1dBUlAoKQoreworICAgIHJldHVybiBF
R0xQbGF0Zm9ybVBhcmFtZXRlcnMoCisgICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0Qz
RDExX0FOR0xFLAorICAgICAgICAxMSwgMSwKKyAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0RF
VklDRV9UWVBFX1dBUlBfQU5HTEUpOworfQorCitFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFf
RkwxMV8wX1dBUlAoKQoreworICAgIHJldHVybiBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMoCisgICAg
ICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFLAorICAgICAgICAxMSwgMCwK
KyAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX1dBUlBfQU5HTEUpOworfQor
CitFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFfRkwxMF8xX1dBUlAoKQoreworICAgIHJldHVy
biBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMoCisgICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBF
X0QzRDExX0FOR0xFLAorICAgICAgICAxMCwgMSwKKyAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xF
X0RFVklDRV9UWVBFX1dBUlBfQU5HTEUpOworfQorCitFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNE
MTFfRkwxMF8wX1dBUlAoKQoreworICAgIHJldHVybiBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMoCisg
ICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFLAorICAgICAgICAxMCwg
MCwKKyAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX1dBUlBfQU5HTEUpOwor
fQorCitFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFfRkw5XzNfV0FSUCgpCit7CisgICAgcmV0
dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVycygKKyAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZ
UEVfRDNEMTFfQU5HTEUsCisgICAgICAgIDksIDMsCisgICAgICAgIEVHTF9QTEFURk9STV9BTkdM
RV9ERVZJQ0VfVFlQRV9XQVJQX0FOR0xFKTsKK30KKworRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQz
RDExX1JFRkVSRU5DRSgpCit7CisgICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVycygKKyAg
ICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUsCisgICAgICAgIEVHTF9E
T05UX0NBUkUsIEVHTF9ET05UX0NBUkUsCisgICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJ
Q0VfVFlQRV9SRUZFUkVOQ0VfQU5HTEUpOworfQorCitFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNE
MTFfRkwxMV8xX1JFRkVSRU5DRSgpCit7CisgICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVy
cygKKyAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUsCisgICAgICAg
IDExLCAxLAorICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfUkVGRVJFTkNF
X0FOR0xFKTsKK30KKworRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDExX0ZMMTFfMF9SRUZFUkVO
Q0UoKQoreworICAgIHJldHVybiBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMoCisgICAgICAgIEVHTF9Q
TEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFLAorICAgICAgICAxMSwgMCwKKyAgICAgICAg
RUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX1JFRkVSRU5DRV9BTkdMRSk7Cit9CisKK0VH
TFBsYXRmb3JtUGFyYW1ldGVycyBEM0QxMV9GTDEwXzFfUkVGRVJFTkNFKCkKK3sKKyAgICByZXR1
cm4gRUdMUGxhdGZvcm1QYXJhbWV0ZXJzKAorICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQ
RV9EM0QxMV9BTkdMRSwKKyAgICAgICAgMTAsIDEsCisgICAgICAgIEVHTF9QTEFURk9STV9BTkdM
RV9ERVZJQ0VfVFlQRV9SRUZFUkVOQ0VfQU5HTEUpOworfQorCitFR0xQbGF0Zm9ybVBhcmFtZXRl
cnMgRDNEMTFfRkwxMF8wX1JFRkVSRU5DRSgpCit7CisgICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFy
YW1ldGVycygKKyAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUsCisg
ICAgICAgIDEwLCAwLAorICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfUkVG
RVJFTkNFX0FOR0xFKTsKK30KKworRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDExX0ZMOV8zX1JF
RkVSRU5DRSgpCit7CisgICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVycygKKyAgICAgICAg
RUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUsCisgICAgICAgIDksIDMsCisgICAg
ICAgIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9SRUZFUkVOQ0VfQU5HTEUpOworfQor
CitFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgT1BFTkdMKCkKK3sKKyAgICByZXR1cm4gRUdMUGxhdGZv
cm1QYXJhbWV0ZXJzKEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSk7Cit9CisK
KworRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIE9QRU5HTChFR0xpbnQgbWFqb3IsIEVHTGludCBtaW5v
cikKK3sKKyAgICByZXR1cm4gRUdMUGxhdGZvcm1QYXJhbWV0ZXJzKAorICAgICAgICBFR0xfUExB
VEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUsCisgICAgICAgIG1ham9yLCBtaW5vciwKKyAg
ICAgICAgRUdMX0RPTlRfQ0FSRSk7Cit9CisKK0VHTFBsYXRmb3JtUGFyYW1ldGVycyBPUEVOR0xf
TlVMTCgpCit7CisgICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVycygKKyAgICAgICAgRUdM
X1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFLAorICAgICAgICAwLCAwLAorICAgICAg
ICBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfTlVMTF9BTkdMRSk7Cit9CisKK0VHTFBs
YXRmb3JtUGFyYW1ldGVycyBPUEVOR0xFUygpCit7CisgICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFy
YW1ldGVycyhFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xFU19BTkdMRSk7Cit9CisKK0VH
TFBsYXRmb3JtUGFyYW1ldGVycyBPUEVOR0xFUyhFR0xpbnQgbWFqb3IsIEVHTGludCBtaW5vcikK
K3sKKyAgICByZXR1cm4gRUdMUGxhdGZvcm1QYXJhbWV0ZXJzKEVHTF9QTEFURk9STV9BTkdMRV9U
WVBFX09QRU5HTEVTX0FOR0xFLCBtYWpvciwgbWlub3IsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFR0xfRE9OVF9DQVJFKTsKK30KKworfSAvLyBuYW1lc3BhY2UgZWdsX3BsYXRm
b3JtCisKKy8vIEFOR0xFIHRlc3RzIHBsYXRmb3JtcworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9E
M0Q5KCkKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDIsIDAsIGVnbF9wbGF0Zm9y
bTo6RDNEOSgpKTsKK30KKworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9EM0Q5X1JFRkVSRU5DRSgp
Cit7CisgICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygyLCAwLCBlZ2xfcGxhdGZvcm06OkQz
RDlfUkVGRVJFTkNFKCkpOworfQorCitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDExKCkKK3sK
KyAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDIsIDAsIGVnbF9wbGF0Zm9ybTo6RDNEMTEo
KSk7Cit9CisKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEMTEoRUdMZW51bSBwcmVzZW50UGF0
aCkKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDIsIDAsIGVnbF9wbGF0Zm9ybTo6
RDNEMTEocHJlc2VudFBhdGgpKTsKK30KKworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9EM0QxMV9G
TDExXzAoKQoreworICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMiwgMCwgZWdsX3BsYXRm
b3JtOjpEM0QxMV9GTDExXzAoKSk7Cit9CisKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEMTFf
RkwxMF8xKCkKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDIsIDAsIGVnbF9wbGF0
Zm9ybTo6RDNEMTFfRkwxMF8xKCkpOworfQorCitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDEx
X0ZMMTBfMCgpCit7CisgICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygyLCAwLCBlZ2xfcGxh
dGZvcm06OkQzRDExX0ZMMTBfMCgpKTsKK30KKworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9EM0Qx
MV9GTDlfMygpCit7CisgICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygyLCAwLCBlZ2xfcGxh
dGZvcm06OkQzRDExX0ZMOV8zKCkpOworfQorCitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDEx
X1dBUlAoKQoreworICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMiwgMCwgZWdsX3BsYXRm
b3JtOjpEM0QxMV9XQVJQKCkpOworfQorCitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDExX0ZM
MTFfMF9XQVJQKCkKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDIsIDAsIGVnbF9w
bGF0Zm9ybTo6RDNEMTFfRkwxMV8wX1dBUlAoKSk7Cit9CisKK1BsYXRmb3JtUGFyYW1ldGVycyBF
UzJfRDNEMTFfRkwxMF8xX1dBUlAoKQoreworICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMo
MiwgMCwgZWdsX3BsYXRmb3JtOjpEM0QxMV9GTDEwXzFfV0FSUCgpKTsKK30KKworUGxhdGZvcm1Q
YXJhbWV0ZXJzIEVTMl9EM0QxMV9GTDEwXzBfV0FSUCgpCit7CisgICAgcmV0dXJuIFBsYXRmb3Jt
UGFyYW1ldGVycygyLCAwLCBlZ2xfcGxhdGZvcm06OkQzRDExX0ZMMTBfMF9XQVJQKCkpOworfQor
CitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDExX0ZMOV8zX1dBUlAoKQoreworICAgIHJldHVy
biBQbGF0Zm9ybVBhcmFtZXRlcnMoMiwgMCwgZWdsX3BsYXRmb3JtOjpEM0QxMV9GTDlfM19XQVJQ
KCkpOworfQorCitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDExX1JFRkVSRU5DRSgpCit7Cisg
ICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygyLCAwLCBlZ2xfcGxhdGZvcm06OkQzRDExX1JF
RkVSRU5DRSgpKTsKK30KKworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9EM0QxMV9GTDExXzBfUkVG
RVJFTkNFKCkKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDIsIDAsIGVnbF9wbGF0
Zm9ybTo6RDNEMTFfRkwxMV8wX1JFRkVSRU5DRSgpKTsKK30KKworUGxhdGZvcm1QYXJhbWV0ZXJz
IEVTMl9EM0QxMV9GTDEwXzFfUkVGRVJFTkNFKCkKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1QYXJh
bWV0ZXJzKDIsIDAsIGVnbF9wbGF0Zm9ybTo6RDNEMTFfRkwxMF8xX1JFRkVSRU5DRSgpKTsKK30K
KworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9EM0QxMV9GTDEwXzBfUkVGRVJFTkNFKCkKK3sKKyAg
ICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDIsIDAsIGVnbF9wbGF0Zm9ybTo6RDNEMTFfRkwx
MF8wX1JFRkVSRU5DRSgpKTsKK30KKworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9EM0QxMV9GTDlf
M19SRUZFUkVOQ0UoKQoreworICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMiwgMCwgZWds
X3BsYXRmb3JtOjpEM0QxMV9GTDlfM19SRUZFUkVOQ0UoKSk7Cit9CisKK1BsYXRmb3JtUGFyYW1l
dGVycyBFUzNfRDNEMTEoKQoreworICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMywgMCwg
ZWdsX3BsYXRmb3JtOjpEM0QxMSgpKTsKK30KKworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19EM0Qx
MV9GTDExXzEoKQoreworICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMywgMCwgZWdsX3Bs
YXRmb3JtOjpEM0QxMV9GTDExXzEoKSk7Cit9CisKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzNfRDNE
MTFfRkwxMV8wKCkKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDMsIDAsIGVnbF9w
bGF0Zm9ybTo6RDNEMTFfRkwxMV8wKCkpOworfQorCitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMzX0Qz
RDExX0ZMMTBfMSgpCit7CisgICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygzLCAwLCBlZ2xf
cGxhdGZvcm06OkQzRDExX0ZMMTBfMSgpKTsKK30KKworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19E
M0QxMV9GTDEwXzAoKQoreworICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMywgMCwgZWds
X3BsYXRmb3JtOjpEM0QxMV9GTDEwXzAoKSk7Cit9CisKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzNf
RDNEMTFfV0FSUCgpCit7CisgICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygzLCAwLCBlZ2xf
cGxhdGZvcm06OkQzRDExX1dBUlAoKSk7Cit9CisKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzNfRDNE
MTFfRkwxMV8xX1dBUlAoKQoreworICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMywgMCwg
ZWdsX3BsYXRmb3JtOjpEM0QxMV9GTDExXzFfV0FSUCgpKTsKK30KKworUGxhdGZvcm1QYXJhbWV0
ZXJzIEVTM19EM0QxMV9GTDExXzBfV0FSUCgpCit7CisgICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1l
dGVycygzLCAwLCBlZ2xfcGxhdGZvcm06OkQzRDExX0ZMMTFfMF9XQVJQKCkpOworfQorCitQbGF0
Zm9ybVBhcmFtZXRlcnMgRVMzX0QzRDExX0ZMMTBfMV9XQVJQKCkKK3sKKyAgICByZXR1cm4gUGxh
dGZvcm1QYXJhbWV0ZXJzKDMsIDAsIGVnbF9wbGF0Zm9ybTo6RDNEMTFfRkwxMF8xX1dBUlAoKSk7
Cit9CisKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzNfRDNEMTFfRkwxMF8wX1dBUlAoKQoreworICAg
IHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMywgMCwgZWdsX3BsYXRmb3JtOjpEM0QxMV9GTDEw
XzBfV0FSUCgpKTsKK30KKworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19EM0QxMV9SRUZFUkVOQ0Uo
KQoreworICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMywgMCwgZWdsX3BsYXRmb3JtOjpE
M0QxMV9SRUZFUkVOQ0UoKSk7Cit9CisKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzNfRDNEMTFfRkwx
MV8xX1JFRkVSRU5DRSgpCit7CisgICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygzLCAwLCBl
Z2xfcGxhdGZvcm06OkQzRDExX0ZMMTFfMV9SRUZFUkVOQ0UoKSk7Cit9CisKK1BsYXRmb3JtUGFy
YW1ldGVycyBFUzNfRDNEMTFfRkwxMV8wX1JFRkVSRU5DRSgpCit7CisgICAgcmV0dXJuIFBsYXRm
b3JtUGFyYW1ldGVycygzLCAwLCBlZ2xfcGxhdGZvcm06OkQzRDExX0ZMMTFfMF9SRUZFUkVOQ0Uo
KSk7Cit9CisKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzNfRDNEMTFfRkwxMF8xX1JFRkVSRU5DRSgp
Cit7CisgICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygzLCAwLCBlZ2xfcGxhdGZvcm06OkQz
RDExX0ZMMTBfMV9SRUZFUkVOQ0UoKSk7Cit9CisKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzNfRDNE
MTFfRkwxMF8wX1JFRkVSRU5DRSgpCit7CisgICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygz
LCAwLCBlZ2xfcGxhdGZvcm06OkQzRDExX0ZMMTBfMF9SRUZFUkVOQ0UoKSk7Cit9CisKK1BsYXRm
b3JtUGFyYW1ldGVycyBFUzJfT1BFTkdMRVMoKQoreworICAgIHJldHVybiBQbGF0Zm9ybVBhcmFt
ZXRlcnMoMiwgMCwgZWdsX3BsYXRmb3JtOjpPUEVOR0xFUygpKTsKK30KKworUGxhdGZvcm1QYXJh
bWV0ZXJzIEVTMl9PUEVOR0xFUyhFR0xpbnQgbWFqb3IsIEVHTGludCBtaW5vcikKK3sKKyAgICBy
ZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDIsIDAsIGVnbF9wbGF0Zm9ybTo6T1BFTkdMRVMobWFq
b3IsIG1pbm9yKSk7Cit9CisKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzNfT1BFTkdMRVMoKQorewor
ICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMywgMCwgZWdsX3BsYXRmb3JtOjpPUEVOR0xF
UygpKTsKK30KKworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19PUEVOR0xFUyhFR0xpbnQgbWFqb3Is
IEVHTGludCBtaW5vcikKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDMsIDAsIGVn
bF9wbGF0Zm9ybTo6T1BFTkdMRVMobWFqb3IsIG1pbm9yKSk7Cit9CisKK1BsYXRmb3JtUGFyYW1l
dGVycyBFUzMxX09QRU5HTEVTKCkKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDMs
IDEsIGVnbF9wbGF0Zm9ybTo6T1BFTkdMRVMoKSk7Cit9CisKK1BsYXRmb3JtUGFyYW1ldGVycyBF
UzMxX09QRU5HTEVTKEVHTGludCBtYWpvciwgRUdMaW50IG1pbm9yKQoreworICAgIHJldHVybiBQ
bGF0Zm9ybVBhcmFtZXRlcnMoMywgMSwgZWdsX3BsYXRmb3JtOjpPUEVOR0xFUyhtYWpvciwgbWlu
b3IpKTsKK30KKworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9PUEVOR0woKQoreworICAgIHJldHVy
biBQbGF0Zm9ybVBhcmFtZXRlcnMoMiwgMCwgZWdsX3BsYXRmb3JtOjpPUEVOR0woKSk7Cit9CisK
K1BsYXRmb3JtUGFyYW1ldGVycyBFUzJfT1BFTkdMKEVHTGludCBtYWpvciwgRUdMaW50IG1pbm9y
KQoreworICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMiwgMCwgZWdsX3BsYXRmb3JtOjpP
UEVOR0wobWFqb3IsIG1pbm9yKSk7Cit9CisKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzNfT1BFTkdM
KCkKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDMsIDAsIGVnbF9wbGF0Zm9ybTo6
T1BFTkdMKCkpOworfQorCitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMzX09QRU5HTChFR0xpbnQgbWFq
b3IsIEVHTGludCBtaW5vcikKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDMsIDAs
IGVnbF9wbGF0Zm9ybTo6T1BFTkdMKG1ham9yLCBtaW5vcikpOworfQorCitQbGF0Zm9ybVBhcmFt
ZXRlcnMgRVMzMV9PUEVOR0woKQoreworICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMywg
MSwgZWdsX3BsYXRmb3JtOjpPUEVOR0woKSk7Cit9CisKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzMx
X09QRU5HTChFR0xpbnQgbWFqb3IsIEVHTGludCBtaW5vcikKK3sKKyAgICByZXR1cm4gUGxhdGZv
cm1QYXJhbWV0ZXJzKDMsIDEsIGVnbF9wbGF0Zm9ybTo6T1BFTkdMKG1ham9yLCBtaW5vcikpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBhbmdsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL3Rlc3RfdXRpbHMvYW5nbGVfdGVzdF9jb25maWdzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvYW5nbGVfdGVzdF9j
b25maWdzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL3Rlc3RfdXRpbHMvYW5nbGVfdGVzdF9jb25maWdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxNDQgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaWZuZGVmIEFOR0xFX1RFU1RfQ09ORklHU19I
XworI2RlZmluZSBBTkdMRV9URVNUX0NPTkZJR1NfSF8KKworLy8gT24gTGludXggRUdML2VnbC5o
IGluY2x1ZGVzIFguaCB3aGljaCBkb2VzIGRlZmluZXMgZm9yIHNvbWUgdmVyeSBjb21tb24KKy8v
IG5hbWVzIHRoYXQgYXJlIHVzZWQgYnkgZ3Rlc3QgKGxpa2UgTm9uZSBhbmQgQm9vbCkgYW5kIGNh
dXNlcyBhIGxvdCBvZgorLy8gY29tcGlsYXRpb24gZXJyb3JzLiBUbyB3b3JrIGFyb3VuZCB0aGlz
LCBldmVuIGlmIHRoaXMgZmlsZSBkb2Vzbid0IHVzZSBpdCwKKy8vIHdlIGluY2x1ZGUgZ3Rlc3Qg
YmVmb3JlIEVHTCBzbyB0aGF0IGl0IGNvbXBpbGVzIGZpbmUgaW4gb3RoZXIgZmlsZXMgdGhhdAor
Ly8gd2FudCB0byB1c2UgZ3Rlc3QuCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKworI2luY2x1
ZGUgPEVHTC9lZ2wuaD4KKyNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisKKyNpbmNsdWRlICJhbmds
ZV90ZXN0X2luc3RhbnRpYXRlLmgiCisjaW5jbHVkZSAiRUdMV2luZG93LmgiCisKK25hbWVzcGFj
ZSBhbmdsZQoreworCitzdHJ1Y3QgUGxhdGZvcm1QYXJhbWV0ZXJzCit7CisgICAgUGxhdGZvcm1Q
YXJhbWV0ZXJzKCk7CisgICAgUGxhdGZvcm1QYXJhbWV0ZXJzKEVHTGludCBtYWpvclZlcnNpb24s
IEVHTGludCBtaW5vclZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVHTFBs
YXRmb3JtUGFyYW1ldGVycyAmZWdsUGxhdGZvcm1QYXJhbWV0ZXJzKTsKKworICAgIEVHTGludCBn
ZXRSZW5kZXJlcigpIGNvbnN0OworCisgICAgRUdMaW50IG1ham9yVmVyc2lvbjsKKyAgICBFR0xp
bnQgbWlub3JWZXJzaW9uOworICAgIEVHTFBsYXRmb3JtUGFyYW1ldGVycyBlZ2xQYXJhbWV0ZXJz
OworfTsKKworYm9vbCBvcGVyYXRvcjwoY29uc3QgUGxhdGZvcm1QYXJhbWV0ZXJzICZhLCBjb25z
dCBQbGF0Zm9ybVBhcmFtZXRlcnMgJmIpOworYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBsYXRmb3Jt
UGFyYW1ldGVycyAmYSwgY29uc3QgUGxhdGZvcm1QYXJhbWV0ZXJzICZiKTsKK3N0ZDo6b3N0cmVh
bSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIHN0cmVhbSwgY29uc3QgUGxhdGZvcm1QYXJhbWV0
ZXJzICZwcCk7CisKKy8vIEVHTCBwbGF0Zm9ybXMKK25hbWVzcGFjZSBlZ2xfcGxhdGZvcm0KK3sK
KworRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIERFRkFVTFQoKTsKK0VHTFBsYXRmb3JtUGFyYW1ldGVy
cyBERUZBVUxUX05VTEwoKTsKKworRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDkoKTsKK0VHTFBs
YXRmb3JtUGFyYW1ldGVycyBEM0Q5X05VTEwoKTsKK0VHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0Q5
X1JFRkVSRU5DRSgpOworCitFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTEoKTsKK0VHTFBsYXRm
b3JtUGFyYW1ldGVycyBEM0QxMShFR0xlbnVtIHByZXNlbnRQYXRoKTsKK0VHTFBsYXRmb3JtUGFy
YW1ldGVycyBEM0QxMV9GTDExXzEoKTsKK0VHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0QxMV9GTDEx
XzAoKTsKK0VHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0QxMV9GTDEwXzEoKTsKK0VHTFBsYXRmb3Jt
UGFyYW1ldGVycyBEM0QxMV9GTDEwXzAoKTsKK0VHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0QxMV9G
TDlfMygpOworCitFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFfTlVMTCgpOworCitFR0xQbGF0
Zm9ybVBhcmFtZXRlcnMgRDNEMTFfV0FSUCgpOworRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDEx
X0ZMMTFfMV9XQVJQKCk7CitFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFfRkwxMV8wX1dBUlAo
KTsKK0VHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0QxMV9GTDEwXzFfV0FSUCgpOworRUdMUGxhdGZv
cm1QYXJhbWV0ZXJzIEQzRDExX0ZMMTBfMF9XQVJQKCk7CitFR0xQbGF0Zm9ybVBhcmFtZXRlcnMg
RDNEMTFfRkw5XzNfV0FSUCgpOworCitFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFfUkVGRVJF
TkNFKCk7CitFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFfRkwxMV8xX1JFRkVSRU5DRSgpOwor
RUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDExX0ZMMTFfMF9SRUZFUkVOQ0UoKTsKK0VHTFBsYXRm
b3JtUGFyYW1ldGVycyBEM0QxMV9GTDEwXzFfUkVGRVJFTkNFKCk7CitFR0xQbGF0Zm9ybVBhcmFt
ZXRlcnMgRDNEMTFfRkwxMF8wX1JFRkVSRU5DRSgpOworRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQz
RDExX0ZMOV8zX1JFRkVSRU5DRSgpOworCitFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgT1BFTkdMKCk7
CitFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgT1BFTkdMKEVHTGludCBtYWpvciwgRUdMaW50IG1pbm9y
KTsKK0VHTFBsYXRmb3JtUGFyYW1ldGVycyBPUEVOR0xfTlVMTCgpOworCitFR0xQbGF0Zm9ybVBh
cmFtZXRlcnMgT1BFTkdMRVMoKTsKK0VHTFBsYXRmb3JtUGFyYW1ldGVycyBPUEVOR0xFUyhFR0xp
bnQgbWFqb3IsIEVHTGludCBtaW5vcik7CisKK30gLy8gbmFtZXNwYWNlIGVnbF9wbGF0Zm9ybQor
CisvLyBBTkdMRSB0ZXN0cyBwbGF0Zm9ybXMKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEOSgp
OworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9EM0Q5X1JFRkVSRU5DRSgpOworCitQbGF0Zm9ybVBh
cmFtZXRlcnMgRVMyX0QzRDExKCk7CitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDExKEVHTGVu
dW0gcHJlc2VudFBhdGgpOworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9EM0QxMV9GTDExXzAoKTsK
K1BsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEMTFfRkwxMF8xKCk7CitQbGF0Zm9ybVBhcmFtZXRl
cnMgRVMyX0QzRDExX0ZMMTBfMCgpOworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9EM0QxMV9GTDlf
MygpOworCitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDExX1dBUlAoKTsKK1BsYXRmb3JtUGFy
YW1ldGVycyBFUzJfRDNEMTFfRkwxMV8wX1dBUlAoKTsKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzJf
RDNEMTFfRkwxMF8xX1dBUlAoKTsKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEMTFfRkwxMF8w
X1dBUlAoKTsKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEMTFfRkw5XzNfV0FSUCgpOworCitQ
bGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDExX1JFRkVSRU5DRSgpOworUGxhdGZvcm1QYXJhbWV0
ZXJzIEVTMl9EM0QxMV9GTDExXzBfUkVGRVJFTkNFKCk7CitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMy
X0QzRDExX0ZMMTBfMV9SRUZFUkVOQ0UoKTsKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEMTFf
RkwxMF8wX1JFRkVSRU5DRSgpOworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9EM0QxMV9GTDlfM19S
RUZFUkVOQ0UoKTsKKworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19EM0QxMSgpOworUGxhdGZvcm1Q
YXJhbWV0ZXJzIEVTM19EM0QxMV9GTDExXzEoKTsKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzNfRDNE
MTFfRkwxMV8wKCk7CitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMzX0QzRDExX0ZMMTBfMSgpOworUGxh
dGZvcm1QYXJhbWV0ZXJzIEVTM19EM0QxMV9GTDEwXzAoKTsKKworUGxhdGZvcm1QYXJhbWV0ZXJz
IEVTM19EM0QxMV9XQVJQKCk7CitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMzX0QzRDExX0ZMMTFfMV9X
QVJQKCk7CitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMzX0QzRDExX0ZMMTFfMF9XQVJQKCk7CitQbGF0
Zm9ybVBhcmFtZXRlcnMgRVMzX0QzRDExX0ZMMTBfMV9XQVJQKCk7CitQbGF0Zm9ybVBhcmFtZXRl
cnMgRVMzX0QzRDExX0ZMMTBfMF9XQVJQKCk7CisKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzNfRDNE
MTFfUkVGRVJFTkNFKCk7CitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMzX0QzRDExX0ZMMTFfMV9SRUZF
UkVOQ0UoKTsKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzNfRDNEMTFfRkwxMV8wX1JFRkVSRU5DRSgp
OworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19EM0QxMV9GTDEwXzFfUkVGRVJFTkNFKCk7CitQbGF0
Zm9ybVBhcmFtZXRlcnMgRVMzX0QzRDExX0ZMMTBfMF9SRUZFUkVOQ0UoKTsKKworUGxhdGZvcm1Q
YXJhbWV0ZXJzIEVTMl9PUEVOR0woKTsKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzJfT1BFTkdMKEVH
TGludCBtYWpvciwgRUdMaW50IG1pbm9yKTsKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzNfT1BFTkdM
KCk7CitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMzX09QRU5HTChFR0xpbnQgbWFqb3IsIEVHTGludCBt
aW5vcik7CitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMzMV9PUEVOR0woKTsKK1BsYXRmb3JtUGFyYW1l
dGVycyBFUzMxX09QRU5HTChFR0xpbnQgbWFqb3IsIEVHTGludCBtaW5vcik7CisKK1BsYXRmb3Jt
UGFyYW1ldGVycyBFUzJfT1BFTkdMRVMoKTsKK1BsYXRmb3JtUGFyYW1ldGVycyBFUzJfT1BFTkdM
RVMoRUdMaW50IG1ham9yLCBFR0xpbnQgbWlub3IpOworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19P
UEVOR0xFUygpOworUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19PUEVOR0xFUyhFR0xpbnQgbWFqb3Is
IEVHTGludCBtaW5vcik7CitQbGF0Zm9ybVBhcmFtZXRlcnMgRVMzMV9PUEVOR0xFUygpOworUGxh
dGZvcm1QYXJhbWV0ZXJzIEVTMzFfT1BFTkdMRVMoRUdMaW50IG1ham9yLCBFR0xpbnQgbWlub3Ip
OworCit9IC8vIG5hbWVzcGFjZSBhbmdsZQorCisjZW5kaWYgLy8gQU5HTEVfVEVTVF9DT05GSUdT
X0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9h
bmdsZV90ZXN0X2luc3RhbnRpYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2luc3RhbnRpYXRlLmNwcAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91
dGlscy9hbmdsZV90ZXN0X2luc3RhbnRpYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDg4IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gYW5nbGVfdGVzdF9pbnN0YW50aWF0ZS5jcHA6IEFk
ZHMgc3VwcG9ydCBmb3IgZmlsdGVyaW5nIHBhcmFtZXRlcml6ZWQKKy8vIHRlc3RzIGJ5IHBsYXRm
b3JtLCBzbyB3ZSBza2lwIHVuc3VwcG9ydGVkIGNvbmZpZ3MuCisKKyNpbmNsdWRlICJ0ZXN0X3V0
aWxzL2FuZ2xlX3Rlc3RfaW5zdGFudGlhdGUuaCIKKworI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRl
IDxpb3N0cmVhbT4KKworI2luY2x1ZGUgIkVHTFdpbmRvdy5oIgorI2luY2x1ZGUgIk9TV2luZG93
LmgiCisjaW5jbHVkZSAidGVzdF91dGlscy9hbmdsZV90ZXN0X2NvbmZpZ3MuaCIKKworbmFtZXNw
YWNlIGFuZ2xlCit7CisKK2Jvb2wgSXNQbGF0Zm9ybUF2YWlsYWJsZShjb25zdCBQbGF0Zm9ybVBh
cmFtZXRlcnMgJnBhcmFtKQoreworICAgIHN3aXRjaCAocGFyYW0uZ2V0UmVuZGVyZXIoKSkKKyAg
ICB7CisgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0RFRkFVTFRfQU5HTEU6Cisg
ICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDlf
QU5HTEU6CisjaWZuZGVmIEFOR0xFX0VOQUJMRV9EM0Q5CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyNlbmRpZgorICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVf
VFlQRV9EM0QxMV9BTkdMRToKKyNpZm5kZWYgQU5HTEVfRU5BQkxFX0QzRDExCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyNlbmRpZgorICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBFR0xfUExB
VEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEU6CisgICAgICBjYXNlIEVHTF9QTEFURk9STV9B
TkdMRV9UWVBFX09QRU5HTEVTX0FOR0xFOgorI2lmbmRlZiBBTkdMRV9FTkFCTEVfT1BFTkdMCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAgICAgICBicmVhazsKKworICAgICAgZGVm
YXVsdDoKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgc3RhdGljIHN0ZDo6bWFwPFBsYXRmb3JtUGFyYW1ldGVycywgYm9vbD4gcGFyYW1BdmFpbGFi
aWxpdHlDYWNoZTsKKyAgICBhdXRvIGl0ZXIgPSBwYXJhbUF2YWlsYWJpbGl0eUNhY2hlLmZpbmQo
cGFyYW0pOworICAgIGlmIChpdGVyICE9IHBhcmFtQXZhaWxhYmlsaXR5Q2FjaGUuZW5kKCkpCisg
ICAgeworICAgICAgICByZXR1cm4gaXRlci0+c2Vjb25kOworICAgIH0KKyAgICBlbHNlCisgICAg
eworICAgICAgICBPU1dpbmRvdyAqb3NXaW5kb3cgPSBDcmVhdGVPU1dpbmRvdygpOworICAgICAg
ICBib29sIHJlc3VsdCA9IG9zV2luZG93LT5pbml0aWFsaXplKCJDT05GSUdfVEVTVEVSIiwgMSwg
MSk7CisKKyAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgeworICAgICAgICAgICAgRUdMV2lu
ZG93ICplZ2xXaW5kb3cgPQorICAgICAgICAgICAgICAgIG5ldyBFR0xXaW5kb3cocGFyYW0ubWFq
b3JWZXJzaW9uLCBwYXJhbS5taW5vclZlcnNpb24sIHBhcmFtLmVnbFBhcmFtZXRlcnMpOworICAg
ICAgICAgICAgcmVzdWx0ID0gZWdsV2luZG93LT5pbml0aWFsaXplR0wob3NXaW5kb3cpOworCisg
ICAgICAgICAgICBlZ2xXaW5kb3ctPmRlc3Ryb3lHTCgpOworICAgICAgICAgICAgU2FmZURlbGV0
ZShlZ2xXaW5kb3cpOworICAgICAgICB9CisKKyAgICAgICAgb3NXaW5kb3ctPmRlc3Ryb3koKTsK
KyAgICAgICAgU2FmZURlbGV0ZShvc1dpbmRvdyk7CisKKyAgICAgICAgcGFyYW1BdmFpbGFiaWxp
dHlDYWNoZVtwYXJhbV0gPSByZXN1bHQ7CisKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiU2tpcHBpbmcgdGVzdHMgdXNpbmcgY29uZmln
dXJhdGlvbiAiIDw8IHBhcmFtIDw8ICIgYmVjYXVzZSBpdCBpcyBub3QgYXZhaWxhYmxlLiIgPDwg
c3RkOjplbmRsOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9Cit9
CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxz
L2FuZ2xlX3Rlc3RfaW5zdGFudGlhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2luc3RhbnRpYXRlLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRp
bHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIg
QEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisvLworCisvLyBhbmdsZV90ZXN0X2luc3RhbnRpYXRlLmg6IEFkZHMgc3Vw
cG9ydCBmb3IgZmlsdGVyaW5nIHBhcmFtZXRlcml6ZWQKKy8vIHRlc3RzIGJ5IHBsYXRmb3JtLCBz
byB3ZSBza2lwIHVuc3VwcG9ydGVkIGNvbmZpZ3MuCisKKyNpZm5kZWYgQU5HTEVfVEVTVF9JTlNU
QU5USUFURV9IXworI2RlZmluZSBBTkdMRV9URVNUX0lOU1RBTlRJQVRFX0hfCisKKyNpbmNsdWRl
IDxndGVzdC9ndGVzdC5oPgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK25hbWVzcGFj
ZSBhbmdsZQoreworCitzdHJ1Y3QgUGxhdGZvcm1QYXJhbWV0ZXJzOworCitib29sIElzUGxhdGZv
cm1BdmFpbGFibGUoY29uc3QgUGxhdGZvcm1QYXJhbWV0ZXJzICZwYXJhbSk7CisKKy8vIFRoaXMg
ZnVuY3Rpb25zIGlzIHVzZWQgdG8gZmlsdGVyIHdoaWNoIHRlc3RzIHNob3VsZCBiZSByZWdpc3Rl
cmVkLAorLy8gVCBtdXN0IGJlIG9yIGluaGVyaXQgZnJvbSBhbmdsZTo6UGxhdGZvcm1QYXJhbWV0
ZXJzLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGQ6OnZlY3RvcjxUPiBGaWx0ZXJUZXN0UGFy
YW1zKGNvbnN0IFQgKnBhcmFtcywgc2l6ZV90IG51bVBhcmFtcykKK3sKKyAgICBzdGQ6OnZlY3Rv
cjxUPiBmaWx0ZXJlZDsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtUGFyYW1zOyBp
KyspCisgICAgeworICAgICAgICBpZiAoSXNQbGF0Zm9ybUF2YWlsYWJsZShwYXJhbXNbaV0pKQor
ICAgICAgICB7CisgICAgICAgICAgICBmaWx0ZXJlZC5wdXNoX2JhY2socGFyYW1zW2ldKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBmaWx0ZXJlZDsKK30KKworLy8gSW5zdGFudGlh
dGUgdGhlIHRlc3Qgb25jZSBmb3IgZWFjaCBleHRyYSBhcmd1bWVudC4gVGhlIHR5cGVzIG9mIGFs
bCB0aGUKKy8vIGFyZ3VtZW50cyBtdXN0IG1hdGNoLCBhbmQgZ2V0UmVuZGVyZXIgbXVzdCBiZSBp
bXBsZW1lbnRlZCBmb3IgdGhhdCB0eXBlLgorI2RlZmluZSBBTkdMRV9JTlNUQU5USUFURV9URVNU
KHRlc3ROYW1lLCBmaXJzdFBhcmFtLCAuLi4pIFwKKyAgICBjb25zdCBkZWNsdHlwZShmaXJzdFBh
cmFtKSB0ZXN0TmFtZSMjcGFyYW1zW10gPSB7IGZpcnN0UGFyYW0sICMjX19WQV9BUkdTX18gfTsg
XAorICAgIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKCwgdGVzdE5hbWUsIFwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlZhbHVlc0luKDo6YW5nbGU6OkZpbHRlclRlc3RQ
YXJhbXModGVzdE5hbWUjI3BhcmFtcywgQXJyYXlTaXplKHRlc3ROYW1lIyNwYXJhbXMpKSksIFwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlByaW50VG9TdHJpbmdQYXJh
bU5hbWUoKSk7CisKK30gLy8gbmFtZXNwYWNlIGFuZ2xlCisKKyNlbmRpZiAvLyBBTkdMRV9URVNU
X0lOU1RBTlRJQVRFX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
dGVzdF91dGlscy9jb21waWxlcl90ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9jb21waWxlcl90ZXN0LmNwcAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9j
b21waWxlcl90ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIxNyBAQAorLy8KKy8v
IENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisvLyBjb21waWxlcl90ZXN0LmNwcDoKKy8vICAgICB1dGlsaXRpZXMgZm9yIGNvbXBp
bGVyIHVuaXQgdGVzdHMuCisKKyNpbmNsdWRlICJ0ZXN0cy90ZXN0X3V0aWxzL2NvbXBpbGVyX3Rl
c3QuaCIKKworI2luY2x1ZGUgImFuZ2xlX2dsLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNs
YXRvci9Db21waWxlci5oIgorCituYW1lc3BhY2UKK3sKKworY2xhc3MgU2hhZGVyVmFyaWFibGVG
aW5kZXIgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgoreworICBwdWJsaWM6CisgICAgU2hhZGVy
VmFyaWFibGVGaW5kZXIoY29uc3QgVFN0cmluZyAmdmFyaWFibGVOYW1lLCBUQmFzaWNUeXBlIGJh
c2ljVHlwZSkKKyAgICAgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSks
CisgICAgICAgICAgbVZhcmlhYmxlTmFtZSh2YXJpYWJsZU5hbWUpLAorICAgICAgICAgIG1Ob2Rl
Rm91bmQobnVsbHB0ciksCisgICAgICAgICAgbUJhc2ljVHlwZShiYXNpY1R5cGUpCisgICAgewor
ICAgIH0KKworICAgIHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqbm9kZSkKKyAgICB7
CisgICAgICAgIGlmIChub2RlLT5nZXRCYXNpY1R5cGUoKSA9PSBtQmFzaWNUeXBlICYmIG5vZGUt
PmdldFN5bWJvbCgpID09IG1WYXJpYWJsZU5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1O
b2RlRm91bmQgPSBub2RlOworICAgICAgICB9CisgICAgfQorCisgICAgYm9vbCBpc0ZvdW5kKCkg
Y29uc3QgeyByZXR1cm4gbU5vZGVGb3VuZCAhPSBudWxscHRyOyB9CisgICAgY29uc3QgVEludGVy
bVN5bWJvbCAqZ2V0Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1Ob2RlRm91bmQ7IH0KKworICBwcml2
YXRlOgorICAgIFRTdHJpbmcgbVZhcmlhYmxlTmFtZTsKKyAgICBUSW50ZXJtU3ltYm9sICptTm9k
ZUZvdW5kOworICAgIFRCYXNpY1R5cGUgbUJhc2ljVHlwZTsKK307CisKK30gIC8vIGFub255bW91
cyBuYW1lc3BhY2UKKworYm9vbCBjb21waWxlVGVzdFNoYWRlcihHTGVudW0gdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgU2hTaGFkZXJTcGVjIHNwZWMsCisgICAgICAgICAgICAgICAgICAg
ICAgIFNoU2hhZGVyT3V0cHV0IG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgU2hCdWls
dEluUmVzb3VyY2VzICpyZXNvdXJjZXMsCisgICAgICAgICAgICAgICAgICAgICAgIFNoQ29tcGls
ZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3Ry
aW5nICp0cmFuc2xhdGVkQ29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcg
KmluZm9Mb2cpCit7CisgICAgVENvbXBpbGVyICp0cmFuc2xhdG9yID0gQ29uc3RydWN0Q29tcGls
ZXIodHlwZSwgc3BlYywgb3V0cHV0KTsKKyAgICBpZiAoIXRyYW5zbGF0b3ItPkluaXQoKnJlc291
cmNlcykpCisgICAgeworICAgICAgICBTYWZlRGVsZXRlKHRyYW5zbGF0b3IpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uc3QgY2hhciAqc2hhZGVyU3RyaW5nc1tdID0g
eyBzaGFkZXJTdHJpbmcuY19zdHIoKSB9OworCisgICAgYm9vbCBjb21waWxhdGlvblN1Y2Nlc3Mg
PSB0cmFuc2xhdG9yLT5jb21waWxlKHNoYWRlclN0cmluZ3MsIDEsIFNIX09CSkVDVF9DT0RFIHwg
Y29tcGlsZU9wdGlvbnMpOworICAgIFRJbmZvU2luayAmaW5mb1NpbmsgPSB0cmFuc2xhdG9yLT5n
ZXRJbmZvU2luaygpOworICAgIGlmICh0cmFuc2xhdGVkQ29kZSkKKyAgICAgICAgKnRyYW5zbGF0
ZWRDb2RlID0gaW5mb1Npbmsub2JqLmNfc3RyKCk7CisgICAgaWYgKGluZm9Mb2cpCisgICAgICAg
ICppbmZvTG9nID0gaW5mb1NpbmsuaW5mby5jX3N0cigpOworICAgIFNhZmVEZWxldGUodHJhbnNs
YXRvcik7CisgICAgcmV0dXJuIGNvbXBpbGF0aW9uU3VjY2VzczsKK30KKworYm9vbCBjb21waWxl
VGVzdFNoYWRlcihHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgU2hTaGFkZXJT
cGVjIHNwZWMsCisgICAgICAgICAgICAgICAgICAgICAgIFNoU2hhZGVyT3V0cHV0IG91dHB1dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZywK
KyAgICAgICAgICAgICAgICAgICAgICAgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucywK
KyAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgKnRyYW5zbGF0ZWRDb2RlLAorICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyAqaW5mb0xvZykKK3sKKyAgICBTaEJ1aWx0
SW5SZXNvdXJjZXMgcmVzb3VyY2VzOworICAgIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoJnJlc291
cmNlcyk7CisgICAgcmV0dXJuIGNvbXBpbGVUZXN0U2hhZGVyKHR5cGUsIHNwZWMsIG91dHB1dCwg
c2hhZGVyU3RyaW5nLCAmcmVzb3VyY2VzLCBjb21waWxlT3B0aW9ucywgdHJhbnNsYXRlZENvZGUs
IGluZm9Mb2cpOworfQorCitNYXRjaE91dHB1dENvZGVUZXN0OjpNYXRjaE91dHB1dENvZGVUZXN0
KEdMZW51bSBzaGFkZXJUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTaENvbXBpbGVPcHRpb25zIGRlZmF1bHRDb21waWxlT3B0aW9ucywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hTaGFkZXJPdXRwdXQgb3V0cHV0VHlwZSkK
KyAgICA6IG1TaGFkZXJUeXBlKHNoYWRlclR5cGUpLCBtRGVmYXVsdENvbXBpbGVPcHRpb25zKGRl
ZmF1bHRDb21waWxlT3B0aW9ucykKK3sKKyAgICBTaEluaXRCdWlsdEluUmVzb3VyY2VzKCZtUmVz
b3VyY2VzKTsKKyAgICBtT3V0cHV0Q29kZVtvdXRwdXRUeXBlXSA9IHN0ZDo6c3RyaW5nKCk7Cit9
CisKK3ZvaWQgTWF0Y2hPdXRwdXRDb2RlVGVzdDo6YWRkT3V0cHV0VHlwZShjb25zdCBTaFNoYWRl
ck91dHB1dCBvdXRwdXRUeXBlKQoreworICAgIG1PdXRwdXRDb2RlW291dHB1dFR5cGVdID0gc3Rk
OjpzdHJpbmcoKTsKK30KKworU2hCdWlsdEluUmVzb3VyY2VzICpNYXRjaE91dHB1dENvZGVUZXN0
OjpnZXRSZXNvdXJjZXMoKQoreworICAgIHJldHVybiAmbVJlc291cmNlczsKK30KKwordm9pZCBN
YXRjaE91dHB1dENvZGVUZXN0Ojpjb21waWxlKGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJp
bmcpCit7CisgICAgY29tcGlsZShzaGFkZXJTdHJpbmcsIG1EZWZhdWx0Q29tcGlsZU9wdGlvbnMp
OworfQorCit2b2lkIE1hdGNoT3V0cHV0Q29kZVRlc3Q6OmNvbXBpbGUoY29uc3Qgc3RkOjpzdHJp
bmcgJnNoYWRlclN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25zKQoreworICAgIHN0ZDo6c3RyaW5nIGlu
Zm9Mb2c7CisgICAgZm9yIChhdXRvICZjb2RlIDogbU91dHB1dENvZGUpCisgICAgeworICAgICAg
ICBib29sIGNvbXBpbGF0aW9uU3VjY2VzcyA9CisgICAgICAgICAgICBjb21waWxlV2l0aFNldHRp
bmdzKGNvZGUuZmlyc3QsIHNoYWRlclN0cmluZywgY29tcGlsZU9wdGlvbnMsICZjb2RlLnNlY29u
ZCwgJmluZm9Mb2cpOworICAgICAgICBpZiAoIWNvbXBpbGF0aW9uU3VjY2VzcykKKyAgICAgICAg
eworICAgICAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkOlxuIiA8
PCBpbmZvTG9nOworICAgICAgICB9CisgICAgfQorfQorCitib29sIE1hdGNoT3V0cHV0Q29kZVRl
c3Q6OmNvbXBpbGVXaXRoU2V0dGluZ3MoU2hTaGFkZXJPdXRwdXQgb3V0cHV0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZz
aGFkZXJTdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyAqdHJhbnNsYXRlZENv
ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpz
dHJpbmcgKmluZm9Mb2cpCit7CisgICAgcmV0dXJuIGNvbXBpbGVUZXN0U2hhZGVyKG1TaGFkZXJU
eXBlLCBTSF9HTEVTM19TUEVDLCBvdXRwdXQsIHNoYWRlclN0cmluZywgJm1SZXNvdXJjZXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVPcHRpb25zLCB0cmFuc2xhdGVkQ29k
ZSwgaW5mb0xvZyk7Cit9CisKK2Jvb2wgTWF0Y2hPdXRwdXRDb2RlVGVzdDo6Zm91bmRJbkNvZGUo
U2hTaGFkZXJPdXRwdXQgb3V0cHV0LCBjb25zdCBjaGFyICpzdHJpbmdUb0ZpbmQpIGNvbnN0Cit7
CisgICAgY29uc3QgYXV0byBjb2RlID0gbU91dHB1dENvZGUuZmluZChvdXRwdXQpOworICAgIEVY
UEVDVF9ORShtT3V0cHV0Q29kZS5lbmQoKSwgY29kZSk7CisgICAgaWYgKGNvZGUgPT0gbU91dHB1
dENvZGUuZW5kKCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
cmV0dXJuIGNvZGUtPnNlY29uZC5maW5kKHN0cmluZ1RvRmluZCkgIT0gc3RkOjpzdHJpbmc6Om5w
b3M7Cit9CisKK2Jvb2wgTWF0Y2hPdXRwdXRDb2RlVGVzdDo6Zm91bmRJbkNvZGUoU2hTaGFkZXJP
dXRwdXQgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyICpzdHJpbmdUb0ZpbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGludCBleHBlY3RlZE9jY3VycmVuY2VzKSBjb25zdAoreworICAgIGNvbnN0IGF1
dG8gY29kZSA9IG1PdXRwdXRDb2RlLmZpbmQob3V0cHV0KTsKKyAgICBFWFBFQ1RfTkUobU91dHB1
dENvZGUuZW5kKCksIGNvZGUpOworICAgIGlmIChjb2RlID09IG1PdXRwdXRDb2RlLmVuZCgpKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHNpemVfdCBjdXJyZW50
UG9zICA9IDA7CisgICAgaW50IG9jY3VyZW5jZXNMZWZ0ID0gZXhwZWN0ZWRPY2N1cnJlbmNlczsK
KyAgICB3aGlsZSAob2NjdXJlbmNlc0xlZnQtLSA+IDApCisgICAgeworICAgICAgICBhdXRvIHBv
c2l0aW9uID0gY29kZS0+c2Vjb25kLmZpbmQoc3RyaW5nVG9GaW5kLCBjdXJyZW50UG9zKTsKKyAg
ICAgICAgaWYgKHBvc2l0aW9uID09IHN0ZDo6c3RyaW5nOjpucG9zKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgY3VycmVudFBvcyA9IHBv
c2l0aW9uICsgMTsKKyAgICB9CisgICAgcmV0dXJuIGNvZGUtPnNlY29uZC5maW5kKHN0cmluZ1Rv
RmluZCwgY3VycmVudFBvcykgPT0gc3RkOjpzdHJpbmc6Om5wb3M7Cit9CisKK2Jvb2wgTWF0Y2hP
dXRwdXRDb2RlVGVzdDo6Zm91bmRJbkNvZGUoY29uc3QgY2hhciAqc3RyaW5nVG9GaW5kKSBjb25z
dAoreworICAgIGZvciAoYXV0byAmY29kZSA6IG1PdXRwdXRDb2RlKQorICAgIHsKKyAgICAgICAg
aWYgKCFmb3VuZEluQ29kZShjb2RlLmZpcnN0LCBzdHJpbmdUb0ZpbmQpKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgTWF0Y2hPdXRwdXRDb2RlVGVzdDo6Zm91bmRJbkNvZGUoY29uc3QgY2hh
ciAqc3RyaW5nVG9GaW5kLCBjb25zdCBpbnQgZXhwZWN0ZWRPY2N1cnJlbmNlcykgY29uc3QKK3sK
KyAgICBmb3IgKGF1dG8gJmNvZGUgOiBtT3V0cHV0Q29kZSkKKyAgICB7CisgICAgICAgIGlmICgh
Zm91bmRJbkNvZGUoY29kZS5maXJzdCwgc3RyaW5nVG9GaW5kLCBleHBlY3RlZE9jY3VycmVuY2Vz
KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
fQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIE1hdGNoT3V0cHV0Q29kZVRlc3Q6Om5vdEZv
dW5kSW5Db2RlKGNvbnN0IGNoYXIgKnN0cmluZ1RvRmluZCkgY29uc3QKK3sKKyAgICBmb3IgKGF1
dG8gJmNvZGUgOiBtT3V0cHV0Q29kZSkKKyAgICB7CisgICAgICAgIGlmIChmb3VuZEluQ29kZShj
b2RlLmZpcnN0LCBzdHJpbmdUb0ZpbmQpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2NvbnN0IFRJ
bnRlcm1TeW1ib2wgKkZpbmRTeW1ib2xOb2RlKFRJbnRlcm1Ob2RlICpyb290LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmc3ltYm9sTmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRCYXNpY1R5cGUgYmFzaWNUeXBlKQor
eworICAgIFNoYWRlclZhcmlhYmxlRmluZGVyIGZpbmRlcihzeW1ib2xOYW1lLCBiYXNpY1R5cGUp
OworICAgIHJvb3QtPnRyYXZlcnNlKCZmaW5kZXIpOworICAgIHJldHVybiBmaW5kZXIuZ2V0Tm9k
ZSgpOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRp
bHMvY29tcGlsZXJfdGVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy90ZXN0X3V0aWxzL2NvbXBpbGVyX3Rlc3QuaAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9jb21waWxlcl90ZXN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NiBAQAorLy8KKy8vIENvcHlyaWdodCAoYykg
MjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBjb21w
aWxlcl90ZXN0Lmg6CisvLyAgICAgdXRpbGl0aWVzIGZvciBjb21waWxlciB1bml0IHRlc3RzLgor
CisjaWZuZGVmIFRFU1RTX1RFU1RfVVRJTFNfQ09NUElMRVJfVEVTVF9IXworI2RlZmluZSBURVNU
U19URVNUX1VUSUxTX0NPTVBJTEVSX1RFU1RfSF8KKworI2luY2x1ZGUgPG1hcD4KKworI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpbmNsdWRlICJhbmdsZV9nbC5oIgorI2luY2x1ZGUgImNv
bXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckVTU0wuaCIKKyNpbmNsdWRlICJHTFNMQU5HL1No
YWRlckxhbmcuaCIKKworYm9vbCBjb21waWxlVGVzdFNoYWRlcihHTGVudW0gdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgU2hTaGFkZXJTcGVjIHNwZWMsCisgICAgICAgICAgICAgICAgICAg
ICAgIFNoU2hhZGVyT3V0cHV0IG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgU2hCdWls
dEluUmVzb3VyY2VzICpyZXNvdXJjZXMsCisgICAgICAgICAgICAgICAgICAgICAgIFNoQ29tcGls
ZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3Ry
aW5nICp0cmFuc2xhdGVkQ29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcg
KmluZm9Mb2cpOworCitib29sIGNvbXBpbGVUZXN0U2hhZGVyKEdMZW51bSB0eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICBTaFNoYWRlclNwZWMgc3BlYywKKyAgICAgICAgICAgICAgICAgICAg
ICAgU2hTaGFkZXJPdXRwdXQgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICBTaENvbXBp
bGVPcHRpb25zIGNvbXBpbGVPcHRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0
cmluZyAqdHJhbnNsYXRlZENvZGUsCisgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5n
ICppbmZvTG9nKTsKKworY2xhc3MgTWF0Y2hPdXRwdXRDb2RlVGVzdCA6IHB1YmxpYyB0ZXN0aW5n
OjpUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBNYXRjaE91dHB1dENvZGVUZXN0KEdMZW51bSBz
aGFkZXJUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgU2hDb21waWxlT3B0aW9ucyBkZWZh
dWx0Q29tcGlsZU9wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICBTaFNoYWRlck91dHB1
dCBvdXRwdXRUeXBlKTsKKworICAgIHZvaWQgYWRkT3V0cHV0VHlwZShjb25zdCBTaFNoYWRlck91
dHB1dCBvdXRwdXRUeXBlKTsKKworICAgIFNoQnVpbHRJblJlc291cmNlcyAqZ2V0UmVzb3VyY2Vz
KCk7CisKKyAgICAvLyBDb21waWxlIGZ1bmN0aW9ucyBjbGVhciBhbnkgcmVzdWx0cyBmcm9tIGVh
cmxpZXIgY2FsbHMgdG8gdGhlbS4KKyAgICB2b2lkIGNvbXBpbGUoY29uc3Qgc3RkOjpzdHJpbmcg
JnNoYWRlclN0cmluZyk7CisgICAgdm9pZCBjb21waWxlKGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFk
ZXJTdHJpbmcsIGNvbnN0IFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpOworCisgICAg
Ym9vbCBmb3VuZEluRVNTTENvZGUoY29uc3QgY2hhciAqc3RyaW5nVG9GaW5kKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIGZvdW5kSW5Db2RlKFNIX0VTU0xfT1VUUFVULCBzdHJpbmdUb0Zp
bmQpOworICAgIH0KKworICAgIGJvb2wgZm91bmRJbkdMU0xDb2RlKGNvbnN0IGNoYXIgKnN0cmlu
Z1RvRmluZCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBmb3VuZEluQ29kZShTSF9HTFNM
X0NPTVBBVElCSUxJVFlfT1VUUFVULCBzdHJpbmdUb0ZpbmQpOworICAgIH0KKworICAgIGJvb2wg
Zm91bmRJbkNvZGUoU2hTaGFkZXJPdXRwdXQgb3V0cHV0LCBjb25zdCBjaGFyICpzdHJpbmdUb0Zp
bmQpIGNvbnN0OworCisgICAgLy8gVGVzdCB0aGF0IHRoZSBzdHJpbmcgb2NjdXJzIGZvciBleGFj
dGx5IGV4cGVjdGVkT2NjdXJyZW5jZXMgdGltZXMKKyAgICBib29sIGZvdW5kSW5Db2RlKFNoU2hh
ZGVyT3V0cHV0IG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0cmlu
Z1RvRmluZCwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBleHBlY3RlZE9jY3VycmVu
Y2VzKSBjb25zdDsKKworICAgIC8vIFRlc3QgdGhhdCB0aGUgc3RyaW5nIGlzIGZvdW5kIGluIGFs
bCBvdXRwdXRzCisgICAgYm9vbCBmb3VuZEluQ29kZShjb25zdCBjaGFyICpzdHJpbmdUb0ZpbmQp
IGNvbnN0OworCisgICAgLy8gVGVzdCB0aGF0IHRoZSBzdHJpbmcgb2NjdXJzIGZvciBleGFjdGx5
IGV4cGVjdGVkT2NjdXJyZW5jZXMgdGltZXMgaW4gYWxsIG91dHB1dHMKKyAgICBib29sIGZvdW5k
SW5Db2RlKGNvbnN0IGNoYXIgKnN0cmluZ1RvRmluZCwgY29uc3QgaW50IGV4cGVjdGVkT2NjdXJy
ZW5jZXMpIGNvbnN0OworCisgICAgLy8gVGVzdCB0aGF0IHRoZSBzdHJpbmcgaXMgZm91bmQgaW4g
bm9uZSBvZiB0aGUgb3V0cHV0cworICAgIGJvb2wgbm90Rm91bmRJbkNvZGUoY29uc3QgY2hhciAq
c3RyaW5nVG9GaW5kKSBjb25zdDsKKworICBwcml2YXRlOgorICAgIGJvb2wgY29tcGlsZVdpdGhT
ZXR0aW5ncyhTaFNoYWRlck91dHB1dCBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nICp0cmFuc2xhdGVkQ29kZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgKmluZm9Mb2cpOworCisgICAgR0xlbnVtIG1T
aGFkZXJUeXBlOworICAgIFNoQ29tcGlsZU9wdGlvbnMgbURlZmF1bHRDb21waWxlT3B0aW9uczsK
KyAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgbVJlc291cmNlczsKKworICAgIHN0ZDo6bWFwPFNoU2hh
ZGVyT3V0cHV0LCBzdGQ6OnN0cmluZz4gbU91dHB1dENvZGU7Cit9OworCitjb25zdCBUSW50ZXJt
U3ltYm9sICpGaW5kU3ltYm9sTm9kZShUSW50ZXJtTm9kZSAqcm9vdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJnN5bWJvbE5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQmFzaWNUeXBlIGJhc2ljVHlwZSk7CisKKyNl
bmRpZiAvLyBURVNUU19URVNUX1VUSUxTX0NPTVBJTEVSX1RFU1RfSF8KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2dsX3JhaWkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9nbF9yYWlp
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rl
c3RfdXRpbHMvZ2xfcmFpaS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTUgQEAKKy8vCisv
LyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworLy8gZ2xfcmFpaToKKy8vICAgSGVscGVyIG1ldGhvZHMgZm9yIGNvbnRhaW5pbmcg
R0wgb2JqZWN0cyBsaWtlIGJ1ZmZlcnMgYW5kIHRleHR1cmVzLgorCisjaWZuZGVmIEFOR0xFX1RF
U1RTX0dMX1JBSUlfSF8KKyNkZWZpbmUgQU5HTEVfVEVTVFNfR0xfUkFJSV9IXworCisjaW5jbHVk
ZSA8ZnVuY3Rpb25hbD4KKworI2luY2x1ZGUgImFuZ2xlX2dsLmgiCisKK25hbWVzcGFjZSBhbmds
ZQoreworCisvLyBUaGlzIGlzIGEgYml0IG9mIGhhY2sgdG8gd29yayBhcm91bmQgYSBidWcgaW4g
TVNWUyBpbnRlbGxpc2Vuc2UsIGFuZCBtYWtlIGl0IHZlcnkgZWFzeSB0bworLy8gdXNlIHRoZSBj
b3JyZWN0IGZ1bmN0aW9uIHBvaW50ZXIgdHlwZSB3aXRob3V0IHdvcnJ5aW5nIGFib3V0IHRoZSB2
YXJpb3VzIGRlZmluaXRpb25zIG9mCisvLyBHTF9BUElDQUxMLgordXNpbmcgR0xHZW4gICAgPSBk
ZWNsdHlwZShnbEdlbkJ1ZmZlcnMpOwordXNpbmcgR0xEZWxldGUgPSBkZWNsdHlwZShnbERlbGV0
ZUJ1ZmZlcnMpOworCit0ZW1wbGF0ZSA8R0xHZW4gR2VuRiwgR0xEZWxldGUgRGVsZXRlRj4KK2Ns
YXNzIEdMV3JhcHBlcgoreworICBwdWJsaWM6CisgICAgR0xXcmFwcGVyKCkge30KKyAgICB+R0xX
cmFwcGVyKCkgeyBEZWxldGVGKDEsICZtSGFuZGxlKTsgfQorCisgICAgR0x1aW50IGdldCgpCisg
ICAgeworICAgICAgICBpZiAoIW1IYW5kbGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEdlbkYo
MSwgJm1IYW5kbGUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtSGFuZGxlOworICAgIH0K
KworICBwcml2YXRlOgorICAgIEdMdWludCBtSGFuZGxlID0gMDsKK307CisKK3VzaW5nIEdMQnVm
ZmVyICAgICAgID0gR0xXcmFwcGVyPGdsR2VuQnVmZmVycywgZ2xEZWxldGVCdWZmZXJzPjsKK3Vz
aW5nIEdMVGV4dHVyZSAgICAgID0gR0xXcmFwcGVyPGdsR2VuVGV4dHVyZXMsIGdsRGVsZXRlVGV4
dHVyZXM+OwordXNpbmcgR0xGcmFtZWJ1ZmZlciAgPSBHTFdyYXBwZXI8Z2xHZW5GcmFtZWJ1ZmZl
cnMsIGdsRGVsZXRlRnJhbWVidWZmZXJzPjsKK3VzaW5nIEdMUmVuZGVyYnVmZmVyID0gR0xXcmFw
cGVyPGdsR2VuUmVuZGVyYnVmZmVycywgZ2xEZWxldGVSZW5kZXJidWZmZXJzPjsKKworY2xhc3Mg
R0xQcm9ncmFtCit7CisgIHB1YmxpYzoKKyAgICBHTFByb2dyYW0oY29uc3Qgc3RkOjpzdHJpbmcg
JnZlcnRleFNoYWRlciwgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdtZW50U2hhZGVyKQorICAgICAg
ICA6IG1IYW5kbGUoMCksIG1WZXJ0ZXhTaGFkZXIodmVydGV4U2hhZGVyKSwgbUZyYWdtZW50U2hh
ZGVyKGZyYWdtZW50U2hhZGVyKQorICAgIHsKKyAgICB9CisKKyAgICBHTFByb2dyYW0oY29uc3Qg
c3RkOjpzdHJpbmcgJmNvbXB1dGVTaGFkZXIpIDogbUhhbmRsZSgwKSwgbUNvbXB1dGVTaGFkZXIo
Y29tcHV0ZVNoYWRlcikge30KKworICAgIH5HTFByb2dyYW0oKSB7IGdsRGVsZXRlUHJvZ3JhbSht
SGFuZGxlKTsgfQorCisgICAgR0x1aW50IGdldCgpCisgICAgeworICAgICAgICBpZiAobUhhbmRs
ZSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1Db21wdXRlU2hhZGVyLmVtcHR5
KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbUhhbmRsZSA9IENvbXBpbGVDb21w
dXRlUHJvZ3JhbShtQ29tcHV0ZVNoYWRlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbUhhbmRsZSA9IENvbXBpbGVQcm9n
cmFtKG1WZXJ0ZXhTaGFkZXIsIG1GcmFnbWVudFNoYWRlcik7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIG1IYW5kbGU7CisgICAgfQorCisgIHByaXZhdGU6CisgICAg
R0x1aW50IG1IYW5kbGU7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgbVZlcnRleFNoYWRlcjsKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyBtRnJhZ21lbnRTaGFkZXI7CisgICAgY29uc3Qgc3RkOjpzdHJp
bmcgbUNvbXB1dGVTaGFkZXI7Cit9OworCisjZGVmaW5lIEFOR0xFX0dMX1BST0dSQU0obmFtZSwg
dmVydGV4LCBmcmFnbWVudCkgXAorICAgIEdMUHJvZ3JhbSBuYW1lKHZlcnRleCwgZnJhZ21lbnQp
OyAgICAgICAgICAgIFwKKyAgICBBU1NFUlRfTkUoMHUsIG5hbWUuZ2V0KCkpOworCisjZGVmaW5l
IEFOR0xFX0dMX0NPTVBVVEVfUFJPR1JBTShuYW1lLCBjb21wdXRlKSBcCisgICAgR0xQcm9ncmFt
IG5hbWUoY29tcHV0ZSk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgQVNTRVJUX05FKDB1LCBu
YW1lLmdldCgpKTsKKworfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCisKKyNlbmRpZiAgLy8gQU5HTEVf
VEVTVFNfR0xfUkFJSV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L3Rlc3RzLmd5cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvdGVzdHMuZ3lwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy90ZXN0cy5neXAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNDkgQEAKKyMgQ29w
eXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKwor
eworICAgICdpbmNsdWRlcyc6CisgICAgWworICAgICAgICAnZGVxcC5neXBpJywKKyAgICAgICAg
Jy4uLy4uL2J1aWxkL2NvbW1vbl9kZWZpbmVzLmd5cGknLAorICAgIF0sCisgICAgJ3ZhcmlhYmxl
cyc6CisgICAgeworICAgICAgICAnYW5nbGVfYnVpbGRfY29uZm9ybWFuY2VfdGVzdHMlJzogJzAn
LAorCisgICAgICAgICdyYXBpZGpzb25faW5jbHVkZV9kaXInOiAndGhpcmRfcGFydHkvcmFwaWRq
c29uL2luY2x1ZGUnLAorICAgICAgICAncmFwaWRqc29uX2hlYWRlcnMnOgorICAgICAgICBbCisg
ICAgICAgICAgICAndGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2FsbG9j
YXRvcnMuaCcsCisgICAgICAgICAgICAndGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFw
aWRqc29uL2RvY3VtZW50LmgnLAorICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L3JhcGlkanNvbi9p
bmNsdWRlL3JhcGlkanNvbi9lbmNvZGVkc3RyZWFtLmgnLAorICAgICAgICAgICAgJ3RoaXJkX3Bh
cnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9lbmNvZGluZ3MuaCcsCisgICAgICAgICAg
ICAndGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ZpbGVyZWFkc3RyZWFt
LmgnLAorICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNv
bi9maWxlc3RyZWFtLmgnLAorICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNs
dWRlL3JhcGlkanNvbi9maWxld3JpdGVzdHJlYW0uaCcsCisgICAgICAgICAgICAndGhpcmRfcGFy
dHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL21lbW9yeWJ1ZmZlci5oJywKKyAgICAgICAg
ICAgICd0aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vbWVtb3J5c3RyZWFt
LmgnLAorICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNv
bi9wcmV0dHl3cml0ZXIuaCcsCisgICAgICAgICAgICAndGhpcmRfcGFydHkvcmFwaWRqc29uL2lu
Y2x1ZGUvcmFwaWRqc29uL3JhcGlkanNvbi5oJywKKyAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9y
YXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vcmVhZGVyLmgnLAorICAgICAgICAgICAgJ3RoaXJk
X3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9zdHJpbmdidWZmZXIuaCcsCisgICAg
ICAgICAgICAndGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL3dyaXRlci5o
JywKKyAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24v
ZXJyb3IvZW4uaCcsCisgICAgICAgICAgICAndGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUv
cmFwaWRqc29uL2Vycm9yL2Vycm9yLmgnLAorICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L3JhcGlk
anNvbi9pbmNsdWRlL3JhcGlkanNvbi9pbnRlcm5hbC9kdG9hLmgnLAorICAgICAgICAgICAgJ3Ro
aXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9pbnRlcm5hbC9pdG9hLmgnLAor
ICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9pbnRl
cm5hbC9tZXRhLmgnLAorICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRl
L3JhcGlkanNvbi9pbnRlcm5hbC9wb3cxMC5oJywKKyAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9y
YXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvc3RhY2suaCcsCisgICAgICAgICAg
ICAndGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ludGVybmFsL3N0cmZ1
bmMuaCcsCisgICAgICAgICAgICAndGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRq
c29uL21zaW50dHlwZXMvaW50dHlwZXMuaCcsCisgICAgICAgICAgICAndGhpcmRfcGFydHkvcmFw
aWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL21zaW50dHlwZXMvc3RkaW50LmgnLAorICAgICAgICBd
LAorICAgIH0sCisgICAgJ2NvbmRpdGlvbnMnOgorICAgIFsKKyAgICAgICAgIyBHb29nbGVUZXN0
IGRvZXNuJ3Qgc3VwcG9ydCBXaW5SVAorICAgICAgICBbJ2FuZ2xlX2J1aWxkX3dpbnJ0PT0wJywK
KyAgICAgICAgeworICAgICAgICAgICAgJ3RhcmdldHMnOgorICAgICAgICAgICAgWworICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2FuZ2xlX3Rl
c3Rfc3VwcG9ydCcsCisgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ25vbmUnLAorICAgICAg
ICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzoKKyAgICAgICAgICAgICAgICAgICAgWworICAg
ICAgICAgICAgICAgICAgICAgICAgJ2FuZ2xlX2ludGVybmFsX2dtb2NrJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICdhbmdsZV9pbnRlcm5hbF9ndGVzdCcsCisgICAgICAgICAgICAgICAgICAg
IF0sCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIF0sCisgICAgICAgIH1dLAorICAg
ICAgICBbJ2FuZ2xlX2J1aWxkX3dpbnJ0PT0wJywKKyAgICAgICAgeworICAgICAgICAgICAgJ3Rh
cmdldHMnOgorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICMgSGlkZSB0aGVzZSB0YXJn
ZXRzIGZyb20gQ2hyb21pdW0sIGJlY2F1c2UgaXQgY2FuJ3QKKyAgICAgICAgICAgICAgICAjIGZp
bmQgb3VyIHN0YW5kYWxvbmUgY29weSBvZiB0aGUgZ3Rlc3QvZ21vY2sgc291cmNlcy4KKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV9p
bnRlcm5hbF9ndGVzdCcsCisgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ3N0YXRpY19saWJy
YXJ5JywKKyAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGVzJzogWyAnLi4vLi4vYnVpbGQvY29t
bW9uX2RlZmluZXMuZ3lwaScsIF0sCisgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlX2RpcnMn
OgorICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAndGhpcmRf
cGFydHkvZ29vZ2xldGVzdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAndGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9pbmNsdWRlJywKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAg
ICAgICAgICAgJ3NvdXJjZXMnOgorICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAndGhpcmRfcGFydHkvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QtYWxsLmNjJywKKyAg
ICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOgorICAg
ICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAnX1ZBUklBRElDX01B
WD0xMCcsCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICdhbGxf
ZGVwZW5kZW50X3NldHRpbmdzJzoKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgJ2RlZmluZXMnOgorICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdfVkFSSUFESUNfTUFYPTEwJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhp
cmRfcGFydHkvZ29vZ2xldGVzdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvaW5jbHVkZScsCisgICAgICAgICAgICAgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV9pbnRlcm5h
bF9nbW9jaycsCisgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ3N0YXRpY19saWJyYXJ5JywK
KyAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGVzJzogWyAnLi4vLi4vYnVpbGQvY29tbW9uX2Rl
ZmluZXMuZ3lwaScsIF0sCisgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlX2RpcnMnOgorICAg
ICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAndGhpcmRfcGFydHkv
Z29vZ2xlbW9jaycsCisgICAgICAgICAgICAgICAgICAgICAgICAndGhpcmRfcGFydHkvZ29vZ2xl
bW9jay9pbmNsdWRlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2luY2x1ZGUnLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAg
ICAgICAnc291cmNlcyc6CisgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICd0aGlyZF9wYXJ0eS9nb29nbGVtb2NrL3NyYy9nbW9jay1hbGwuY2MnLAorICAgICAg
ICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6CisgICAgICAg
ICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICdfVkFSSUFESUNfTUFYPTEw
JywKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgJ2FsbF9kZXBl
bmRlbnRfc2V0dGluZ3MnOgorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAnZGVmaW5lcyc6CisgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ19WQVJJQURJQ19NQVg9MTAnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlX2RpcnMnOgorICAgICAg
ICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlyZF9w
YXJ0eS9nb29nbGVtb2NrJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhpcmRfcGFy
dHkvZ29vZ2xlbW9jay9pbmNsdWRlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9pbmNsdWRlJywKKyAgICAgICAgICAgICAgICAgICAgICAgIF0s
CisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgfSwKKworICAgICAgICAg
ICAgICAgICMgVGhlc2Ugc2FtZSB0YXJnZXQgbmFtZXMgZXhpc3Qgb24gdGhlIENocm9taXVtIHNp
ZGUsCisgICAgICAgICAgICAgICAgIyB3aGljaCBpcyBmb3JiaWRkZW4sIHNvIHdlIG1ha2UgdGhl
bSBjb25kaXRpb25hbCBvbgorICAgICAgICAgICAgICAgICMgQU5HTEUncyBzdGFuZGFsb25lIGJ1
aWxkLgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgJ3RhcmdldF9uYW1l
JzogJ2FuZ2xlX3VuaXR0ZXN0cycsCisgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ2V4ZWN1
dGFibGUnLAorICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZXMnOgorICAgICAgICAgICAgICAg
ICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAnLi4vLi4vYnVpbGQvY29tbW9uX2RlZmlu
ZXMuZ3lwaScsCisgICAgICAgICAgICAgICAgICAgICAgICAnYW5nbGVfdW5pdHRlc3RzLmd5cGkn
LAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6
CisgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICdhbmdsZV91
bml0dGVzdHNfbWFpbi5jcHAnLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAg
ICAgICAgICAnbXN2c19zZXR0aW5ncyc6CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICdWQ0xpbmtlclRvb2wnOgorICAgICAgICAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb25kaXRpb25zJzoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnYW5n
bGVfYnVpbGRfd2lucnQ9PTEnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWRkaXRpb25hbERlcGVuZGVuY2ll
cyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3J1bnRpbWVvYmplY3QubGliJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAg
ICAnbXN2c19kaXNhYmxlZF93YXJuaW5ncyc6CisgICAgICAgICAgICAgICAgICAgIFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIDQyNDQsICMgQ29udmVyc2lvbiBmcm9tICd0eXBlMScgdG8gJ3R5
cGUyJywgcG9zc2libGUgbG9zcyBvZiBkYXRhCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICd0
YXJnZXRfbmFtZSc6ICdhbmdsZV9lbmQyZW5kX3Rlc3RzJywKKyAgICAgICAgICAgICAgICAgICAg
J3R5cGUnOiAnZXhlY3V0YWJsZScsCisgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlcyc6Cisg
ICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICcuLi8uLi9idWls
ZC9jb21tb25fZGVmaW5lcy5neXBpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdhbmdsZV9l
bmQyZW5kX3Rlc3RzLmd5cGknLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAg
ICAgICAgICAnc291cmNlcyc6CisgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICdhbmdsZV9lbmQyZW5kX3Rlc3RzX21haW4uY3BwJywKKyAgICAgICAgICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2FuZ2xlX3BlcmZ0ZXN0cycsCisgICAgICAgICAg
ICAgICAgICAgICd0eXBlJzogJ2V4ZWN1dGFibGUnLAorICAgICAgICAgICAgICAgICAgICAnaW5j
bHVkZXMnOgorICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAn
Li4vLi4vYnVpbGQvY29tbW9uX2RlZmluZXMuZ3lwaScsCisgICAgICAgICAgICAgICAgICAgICAg
ICAnYW5nbGVfcGVyZnRlc3RzLmd5cGknLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAg
ICAgICAgICAgICAgICAnc291cmNlcyc6CisgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICdhbmdsZV9wZXJmdGVzdHNfbWFpbi5jcHAnLAorICAgICAgICAgICAg
ICAgICAgICBdLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICBdLAorICAgICAgICB9
XSwKKyAgICAgICAgWydPUz09IndpbiInLAorICAgICAgICB7CisgICAgICAgICAgICAnY29uZGl0
aW9ucyc6CisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgWydhbmdsZV9idWlsZF9jb25m
b3JtYW5jZV90ZXN0cycsCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAn
dmFyaWFibGVzJzoKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgJ2dsZXNfY29uZm9ybWFuY2VfdGVzdHNfb3V0cHV0X2Rpcic6ICc8KFNIQVJFRF9JTlRFUk1F
RElBVEVfRElSKS9jb25mb3JtYW5jZV90ZXN0cycsCisgICAgICAgICAgICAgICAgICAgICAgICAn
Z2xlc19jb25mb3JtYW5jZV90ZXN0c19pbnB1dF9kaXInOiAndGhpcmRfcGFydHkvZ2xlc19jb25m
b3JtYW5jZV90ZXN0cy9jb25mb3JtL0dURl9FUy9nbHNsL0dURicsCisgICAgICAgICAgICAgICAg
ICAgICAgICAnZ2xlc19jb25mb3JtYW5jZV90ZXN0c19nZW5lcmF0b3Jfc2NyaXB0JzogJ2dsZXNf
Y29uZm9ybWFuY2VfdGVzdHMvZ2VuZXJhdGVfZ2xlc19jb25mb3JtYW5jZV90ZXN0cy5weScsCisg
ICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICd0YXJnZXRzJzoKKyAg
ICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV9nbGVzMl9jb25mb3JtYW5j
ZV90ZXN0cycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnZXhlY3V0YWJs
ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGVzJzogWyAnLi4vLi4vYnVp
bGQvY29tbW9uX2RlZmluZXMuZ3lwaScsIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2RlcGVuZGVuY2llcyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvYW5nbGUuZ3lwOmxpYkdM
RVN2MicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3Ny
Yy9hbmdsZS5neXA6bGliRUdMJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Ro
aXJkX3BhcnR5L2dsZXNfY29uZm9ybWFuY2VfdGVzdHMvY29uZm9ybS9HVEZfRVMvZ2xzbC9HVEYv
ZXNfY3RzLmd5cDplc19jdHNfdGVzdF9kYXRhJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3RoaXJkX3BhcnR5L2dsZXNfY29uZm9ybWFuY2VfdGVzdHMvY29uZm9ybS9HVEZfRVMv
Z2xzbC9HVEYvZXNfY3RzLmd5cDplczJfY3RzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2FuZ2xlX3Rlc3Rfc3VwcG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmFyaWFibGVzJzoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnbGVz
Ml9jb25mb3JtYW5jZV90ZXN0c19pbnB1dF9maWxlJzogJzwoZ2xlc19jb25mb3JtYW5jZV90ZXN0
c19pbnB1dF9kaXIpL211c3RwYXNzX2VzMjAucnVuJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2dsZXMyX2NvbmZvcm1hbmNlX3Rlc3RzX2dlbmVyYXRlZF9maWxlJzogJzwoZ2xl
c19jb25mb3JtYW5jZV90ZXN0c19vdXRwdXRfZGlyKS9nZW5lcmF0ZWRfZ2xlczJfY29uZm9ybWFu
Y2VfdGVzdHMuY3BwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdzb3VyY2VzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnbGVzX2NvbmZvcm1hbmNlX3Rl
c3RzL2dsZXNfY29uZm9ybWFuY2VfdGVzdHMuY3BwJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2dsZXNfY29uZm9ybWFuY2VfdGVzdHMvZ2xlc19jb25mb3JtYW5jZV90ZXN0cy5o
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dsZXNfY29uZm9ybWFuY2VfdGVz
dHMvZ2xlc19jb25mb3JtYW5jZV90ZXN0c19tYWluLmNwcCcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICc8KGdsZXMyX2NvbmZvcm1hbmNlX3Rlc3RzX2dlbmVyYXRlZF9maWxlKScs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnaW5jbHVkZV9kaXJzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL2luY2x1ZGUnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2xlc19jb25mb3JtYW5jZV90ZXN0cycsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnZGVmaW5lcyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnQ09ORk9STUFOQ0VfVEVTVFNfVFlQRT1DT05GT1JNQU5DRV9U
RVNUU19FUzInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ21zdnNfc2V0dGluZ3MnOgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZDQ0xDb21waWxlclRvb2wn
OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjIE1TVlMgaGFzIHRyb3VibGUgY29tcGlsaW5nIHRoaXMgZHVlIHRv
IHRoZSBvYmogZmlsZXMgYmVjb21pbmcgdG9vIGxhcmdlLgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ0FkZGl0aW9uYWxPcHRpb25zJzogWyAnL2JpZ29iaicgXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb25zJzoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb25fbmFtZSc6ICdnZW5lcmF0
ZV9nbGVzMl9jb25mb3JtYW5jZV90ZXN0cycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnbWVzc2FnZSc6ICdHZW5lcmF0aW5nIEVTMiBjb25mb3JtYW5jZSB0ZXN0cy4uLics
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbXN2c19jeWd3aW5fc2hlbGwn
OiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lucHV0cyc6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJzwoZ2xlc19jb25mb3JtYW5jZV90ZXN0c19nZW5lcmF0b3Jfc2Ny
aXB0KScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwoZ2xlczJf
Y29uZm9ybWFuY2VfdGVzdHNfaW5wdXRfZmlsZSknLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvdXRw
dXRzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPChnbGVzMl9jb25mb3JtYW5jZV90ZXN0c19n
ZW5lcmF0ZWRfZmlsZSknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb24nOgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdweXRob24nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICc8KGdsZXNfY29uZm9ybWFuY2VfdGVzdHNfZ2VuZXJhdG9yX3NjcmlwdCknLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8KGdsZXMyX2NvbmZvcm1hbmNl
X3Rlc3RzX2lucHV0X2ZpbGUpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnPChnbGVzX2NvbmZvcm1hbmNlX3Rlc3RzX2lucHV0X2RpciknLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8KGdsZXMyX2NvbmZvcm1hbmNlX3Rlc3RzX2dl
bmVyYXRlZF9maWxlKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdhbmds
ZV9nbGVzM19jb25mb3JtYW5jZV90ZXN0cycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3R5cGUnOiAnZXhlY3V0YWJsZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1
ZGVzJzogWyAnLi4vLi4vYnVpbGQvY29tbW9uX2RlZmluZXMuZ3lwaScsIF0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9z
cmMvYW5nbGUuZ3lwOmxpYkdMRVN2MicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICc8KGFuZ2xlX3BhdGgpL3NyYy9hbmdsZS5neXA6bGliRUdMJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L2dsZXNfY29uZm9ybWFuY2VfdGVzdHMvY29uZm9y
bS9HVEZfRVMvZ2xzbC9HVEYvZXNfY3RzLmd5cDplc19jdHNfdGVzdF9kYXRhJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L2dsZXNfY29uZm9ybWFuY2VfdGVz
dHMvY29uZm9ybS9HVEZfRVMvZ2xzbC9HVEYvZXNfY3RzLmd5cDplczNfY3RzJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZ2xlX3Rlc3Rfc3VwcG9ydCcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmFyaWFi
bGVzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdnbGVzM19jb25mb3JtYW5jZV90ZXN0c19pbnB1dF9maWxlJzogJzwoZ2xl
c19jb25mb3JtYW5jZV90ZXN0c19pbnB1dF9kaXIpL211c3RwYXNzX2VzMzAucnVuJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dsZXMzX2NvbmZvcm1hbmNlX3Rlc3RzX2dlbmVy
YXRlZF9maWxlJzogJzwoZ2xlc19jb25mb3JtYW5jZV90ZXN0c19vdXRwdXRfZGlyKS9nZW5lcmF0
ZWRfZ2xlczNfY29uZm9ybWFuY2VfdGVzdHMuY3BwJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzb3VyY2VzJzoKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdn
bGVzX2NvbmZvcm1hbmNlX3Rlc3RzL2dsZXNfY29uZm9ybWFuY2VfdGVzdHMuY3BwJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dsZXNfY29uZm9ybWFuY2VfdGVzdHMvZ2xlc19j
b25mb3JtYW5jZV90ZXN0cy5oJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ds
ZXNfY29uZm9ybWFuY2VfdGVzdHMvZ2xlc19jb25mb3JtYW5jZV90ZXN0c19tYWluLmNwcCcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8KGdsZXMzX2NvbmZvcm1hbmNlX3Rlc3Rz
X2dlbmVyYXRlZF9maWxlKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzoKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8KGFuZ2xlX3Bh
dGgpL2luY2x1ZGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2xlc19jb25m
b3JtYW5jZV90ZXN0cycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ09ORk9STUFOQ0VfVEVTVFNf
VFlQRT1DT05GT1JNQU5DRV9URVNUU19FUzMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21zdnNfc2V0dGluZ3MnOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J1ZDQ0xDb21waWxlclRvb2wnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE1TVlMgaGFzIHRyb3VibGUgY29t
cGlsaW5nIHRoaXMgZHVlIHRvIHRoZSBvYmogZmlsZXMgYmVjb21pbmcgdG9vIGxhcmdlLgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FkZGl0aW9uYWxPcHRpb25zJzogWyAn
L2JpZ29iaicgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rp
b25zJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rp
b25fbmFtZSc6ICdnZW5lcmF0ZV9nbGVzM19jb25mb3JtYW5jZV90ZXN0cycsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnbWVzc2FnZSc6ICdHZW5lcmF0aW5nIEVTMyBjb25m
b3JtYW5jZSB0ZXN0cy4uLicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
bXN2c19jeWd3aW5fc2hlbGwnOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2lucHV0cyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwoZ2xlc19jb25mb3JtYW5jZV90
ZXN0c19nZW5lcmF0b3Jfc2NyaXB0KScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJzwoZ2xlczNfY29uZm9ybWFuY2VfdGVzdHNfaW5wdXRfZmlsZSknLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdvdXRwdXRzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPChnbGVzM19j
b25mb3JtYW5jZV90ZXN0c19nZW5lcmF0ZWRfZmlsZSknLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdh
Y3Rpb24nOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdweXRob24nLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICc8KGdsZXNfY29uZm9ybWFuY2VfdGVzdHNfZ2VuZXJh
dG9yX3NjcmlwdCknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8
KGdsZXMzX2NvbmZvcm1hbmNlX3Rlc3RzX2lucHV0X2ZpbGUpJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnPChnbGVzX2NvbmZvcm1hbmNlX3Rlc3RzX2lucHV0X2Rp
ciknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8KGdsZXMzX2Nv
bmZvcm1hbmNlX3Rlc3RzX2dlbmVyYXRlZF9maWxlKScsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIH1dLAorICAgICAgICAgICAg
XSwKKyAgICAgICAgfV0sCisgICAgXSwKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBlY3RhdGlvbnMvSG93VG9NYWtlQ2hh
bmdlcy5tZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
dGhpcmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL0hvd1RvTWFrZUNoYW5nZXMubWQJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3Bh
cnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9Ib3dUb01ha2VDaGFuZ2VzLm1kCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMjIgQEAKK0JlY2F1c2UgdGhlIGBgYGdwdV90ZXN0X2V4cGVjdGF0aW9u
c2BgYCBkaXJlY3RvcnkgaXMgYmFzZWQgb24gcGFydHMgb2YgQ2hyb21pdW0ncyBgYGBncHUvY29u
ZmlnYGBgCitkaXJlY3RvcnksIHdlIHdhbnQgdG8ga2VlcCBhIHBhdGNoIG9mIHRoZSBjaGFuZ2Vz
IGFkZGVkIHRvIG1ha2UgaXQgY29tcGlsZSB3aXRoIEFOR0xFLiBUaGlzCit3aWxsIGFsbG93IHVz
IHRvIG1lcmdlIENocm9taXVtIGNoYW5nZXMgZWFzaWx5IGluIG91ciBgYGBncHVfdGVzdF9leHBl
Y3RhdGlvbnNgYGAuCisKK0luIG9yZGVyIHRvIG1ha2UgYSBjaGFuZ2UgdG8gdGhpcyBkaXJlY3Rv
cnksIGRvIHRoZSBmb2xsb3dpbmc6CisKKyAqIGNvcHkgdGhlIGRpcmVjdG9yeSBzb21ld2hlcmUg
bGlrZSBpbiBgYGBncHVfdGVzdF9leHBlY3RhdGlvbnNfcmV2ZXJ0ZWRgYGAKKyAqIGluIGBgYGdw
dV90ZXN0X2V4cGVjdGF0aW9uc19yZXZlcnRlZGBgYCBydW4gYGBgcGF0Y2ggLXAgMSAtUiA8IGFu
Z2xlLW1vZHMucGF0Y2hgYGAKKyAqIGRvIHlvdXIgY2hhbmdlcyBpbiBgYGBncHVfdGVzdF9leHBl
Y3RhdGlvbnNgYGAKKyAqIGRlbGV0ZSBhbmdsZS1tb2RzLnBhdGNoIGluIGJvdGggZGlyZWN0b3Jp
ZXMKKyAqIHJ1biBgYGBkaWZmIC1ydXBOIGdwdV90ZXN0X2V4cGVjdGF0aW9uc19yZXZlcnRlZCBn
cHVfdGVzdF9leHBlY3RhdGlvbnMgPiBhbmdsZS1tb2RzLnBhdGNoYGBgCisgKiBjb3B5IGBgYGFu
Z2xlLW1vZHMucGF0Y2hgYGAgaW4gYGBgZ3B1X3Rlc3RfZXhwZWN0YXRpb25zYGBgCisKK0hvdyB0
byB1cGRhdGUgZnJvbSBDaHJvbWl1bToKKworICogYGBgZ2l0IGFwcGx5IC1SIGFuZ2xlLW1vZHMu
cGF0Y2hgYGAsIGBgYGdpdCBhZGQgLiAtdWBgYCwgYGBgZ2l0IGNvbW1pdGBgYAorICogQ29weSBv
dmVyIENocm9taXVtIGZpbGVzLCBgYGBnaXQgYWRkIC4gLXVgYGAsIGBgYGdpdCBjb21taXRgYGAK
KyAqIGBgYGdpdCByZXZlcnQgSEVBRH5gYGAKKyAqIGBgYHJtIGFuZ2xlLW1vZHMucGF0Y2hgYGAK
KyAqIGBgYGdpdCBkaWZmIEhFQUR+IChgKWxzKGApID4gYW5nbGUtbW9kcy5wYXRjaGBgYCxgYGBn
aXQgYWRkIGFuZ2xlLW1vZHMucGF0Y2hgYGAsIGBgYGdpdCBjb21taXQgLS1hbWVuZGBgYAorICog
YGBgZ2l0IHJlYmFzZSAtaWBgYCB0byBzcXVhc2ggdGhlIHRocmVlIHBhdGNoZXMgaW50byBvbmUu
CisKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9n
cHVfdGVzdF9leHBlY3RhdGlvbnMvYW5nbGUtbW9kcy5wYXRjaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0
YXRpb25zL2FuZ2xlLW1vZHMucGF0Y2gJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9hbmds
ZS1tb2RzLnBhdGNoCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODY4IEBACitkaWZmIC1ydXBO
IGdwdV90ZXN0X2V4cGVjdGF0aW9uc19yZXZlcnRlZC9hbmdsZV9jb25maWcuaCBncHVfdGVzdF9l
eHBlY3RhdGlvbnMvYW5nbGVfY29uZmlnLmgKKy0tLSBncHVfdGVzdF9leHBlY3RhdGlvbnNfcmV2
ZXJ0ZWQvYW5nbGVfY29uZmlnLmgJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAK
KysrKyBncHVfdGVzdF9leHBlY3RhdGlvbnMvYW5nbGVfY29uZmlnLmgJMjAxNi0wOC0yMyAxMzo1
MDoxOC4yODI3NDI1MDUgLTA0MDAKK0BAIC0wLDAgKzEsNjYgQEAKKysvLworKy8vIENvcHlyaWdo
dCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisr
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisrLy8KKysv
LyBhbmdsZV9jb25maWcuaDoKKysvLyAgIEhlbHBlcnMgZm9yIGltcG9ydGluZyB0aGUgZ3B1IHRl
c3QgZXhwZWN0YXRpb25zIHBhY2thZ2UgZnJvbSBDaHJvbWUuCisrLy8KKysKKysjaWZuZGVmIEdQ
VV9URVNUX0VYUEVDVEFUSU9OU19BTkdMRV9DT05GSUdfSF8KKysjZGVmaW5lIEdQVV9URVNUX0VY
UEVDVEFUSU9OU19BTkdMRV9DT05GSUdfSF8KKysKKysjaW5jbHVkZSA8c3RkaW50Lmg+CisrCisr
I2luY2x1ZGUgPGlvc3RyZWFtPgorKworKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKysjaW5j
bHVkZSAiY29tbW9uL3N0cmluZ191dGlscy5oIgorKworKyNkZWZpbmUgRENIRUNLX0VRKEEsQikg
QVNTRVJUKChBKSA9PSAoQikpCisrI2RlZmluZSBEQ0hFQ0tfTkUoQSxCKSBBU1NFUlQoKEEpICE9
IChCKSkKKysjZGVmaW5lIERDSEVDSyhYKSBBU1NFUlQoWCkKKysjZGVmaW5lIExPRyhYKSBzdGQ6
OmNlcnIKKysKKysjZGVmaW5lIEdQVV9FWFBPUlQKKysKKyt0eXBlZGVmIGludDMyX3QgaW50MzI7
CisrdHlwZWRlZiB1aW50MzJfdCB1aW50MzI7CisrdHlwZWRlZiBpbnQ2NF90IGludDY0OworK3R5
cGVkZWYgdWludDY0X3QgdWludDY0OworKworKy8vIFNoaW0gQ2hyb21pdW0ncyBiYXNlIGJ5IGlt
cG9ydGluZyBmdW5jdGlvbnMgaW4gdGhlIGJhc2UgbmFtZXNwYWNlLgorK25hbWVzcGFjZSBiYXNl
CisreworKyAgICB1c2luZyBhbmdsZTo6a1doaXRlc3BhY2VBU0NJSTsKKysgICAgdXNpbmcgYW5n
bGU6OlRSSU1fV0hJVEVTUEFDRTsKKysgICAgdXNpbmcgYW5nbGU6OktFRVBfV0hJVEVTUEFDRTsK
KysgICAgdXNpbmcgYW5nbGU6OlNQTElUX1dBTlRfQUxMOworKyAgICB1c2luZyBhbmdsZTo6U1BM
SVRfV0FOVF9OT05FTVBUWTsKKysgICAgdXNpbmcgYW5nbGU6OlNwbGl0U3RyaW5nOworKyAgICB1
c2luZyBhbmdsZTo6U3BsaXRTdHJpbmdBbG9uZ1doaXRlc3BhY2U7CisrICAgIHVzaW5nIGFuZ2xl
OjpIZXhTdHJpbmdUb1VJbnQ7CisrICAgIHVzaW5nIGFuZ2xlOjpSZWFkRmlsZVRvU3RyaW5nOwor
KworKyAgICAvLyBTdHJpbmdQcmludGYgaXMgY2FsbGVkIGRpZmZlcmVudGx5IGluIEFOR0xFIGJ1
dCB1c2luZyBjYW5ub3QgY2hhbmdlCisrICAgIC8vIHRoZSBuYW1lIG9mIHRoZSBpbXBvcnRlZCBm
dW5jdGlvbi4gVXNlIGEgZGVmaW5lIHRvIGNoYW5nZSB0aGUgbmFtZS4KKysgICAgdXNpbmcgOjpG
b3JtYXRTdHJpbmc7CisrICAgICNkZWZpbmUgU3RyaW5nUHJpbnRmIEZvcm1hdFN0cmluZworK30K
KysKKysvLyBUT0RPKGptYWRpbGwpOiBvdGhlciBwbGF0Zm9ybXMKKysvLyBjbGFuZy1mb3JtYXQg
b2ZmCisrI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9XSU42NCkKKysjICAgIGRlZmlu
ZSBPU19XSU4KKysjZWxpZiBkZWZpbmVkKEFORFJPSUQpCisrIyAgICBkZWZpbmUgT1NfQU5EUk9J
RAorKyNlbGlmIGRlZmluZWQoX19saW51eF9fKQorKyMgICAgZGVmaW5lIE9TX0xJTlVYCisrI2Vs
aWYgZGVmaW5lZChfX0FQUExFX18pCisrIyAgICBkZWZpbmUgT1NfTUFDT1NYCisrI2Vsc2UKKysj
ICAgIGVycm9yICJVbnN1cHBvcnRlZCBwbGF0Zm9ybSIKKysjZW5kaWYKKysvLyBjbGFuZy1mb3Jt
YXQgb24KKysKKysjZW5kaWYKK2RpZmYgLXJ1cE4gZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3JldmVy
dGVkL2dwdV9pbmZvLmNjIGdwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfaW5mby5jYworLS0tIGdw
dV90ZXN0X2V4cGVjdGF0aW9uc19yZXZlcnRlZC9ncHVfaW5mby5jYwkyMDE2LTA4LTEyIDIxOjIz
OjU0Ljg4NDEzMjQwNSAtMDQwMAorKysrIGdwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfaW5mby5j
YwkyMDE1LTExLTMwIDIxOjU0OjMwLjIzOTI2NzYzNSAtMDUwMAorQEAgLTIsNyArMiw3IEBACisg
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCistI2lu
Y2x1ZGUgImdwdS9jb25maWcvZ3B1X2luZm8uaCIKKysjaW5jbHVkZSAiZ3B1X2luZm8uaCIKKyAK
KyBuYW1lc3BhY2UgeworIAorQEAgLTE3LDMxICsxNyw2IEBAIHZvaWQgRW51bWVyYXRlR1BVRGV2
aWNlKGNvbnN0IGdwdTo6R1BVSW4KKyAgIGVudW1lcmF0b3ItPkVuZEdQVURldmljZSgpOworIH0K
KyAKKy12b2lkIEVudW1lcmF0ZVZpZGVvRGVjb2RlQWNjZWxlcmF0b3JTdXBwb3J0ZWRQcm9maWxl
KAorLSAgICBjb25zdCBncHU6OlZpZGVvRGVjb2RlQWNjZWxlcmF0b3JTdXBwb3J0ZWRQcm9maWxl
JiBwcm9maWxlLAorLSAgICBncHU6OkdQVUluZm86OkVudW1lcmF0b3IqIGVudW1lcmF0b3IpIHsK
Ky0gIGVudW1lcmF0b3ItPkJlZ2luVmlkZW9EZWNvZGVBY2NlbGVyYXRvclN1cHBvcnRlZFByb2Zp
bGUoKTsKKy0gIGVudW1lcmF0b3ItPkFkZEludCgicHJvZmlsZSIsIHByb2ZpbGUucHJvZmlsZSk7
CistICBlbnVtZXJhdG9yLT5BZGRJbnQoIm1heFJlc29sdXRpb25XaWR0aCIsIHByb2ZpbGUubWF4
X3Jlc29sdXRpb24ud2lkdGgoKSk7CistICBlbnVtZXJhdG9yLT5BZGRJbnQoIm1heFJlc29sdXRp
b25IZWlnaHQiLCBwcm9maWxlLm1heF9yZXNvbHV0aW9uLmhlaWdodCgpKTsKKy0gIGVudW1lcmF0
b3ItPkFkZEludCgibWluUmVzb2x1dGlvbldpZHRoIiwgcHJvZmlsZS5taW5fcmVzb2x1dGlvbi53
aWR0aCgpKTsKKy0gIGVudW1lcmF0b3ItPkFkZEludCgibWluUmVzb2x1dGlvbkhlaWdodCIsIHBy
b2ZpbGUubWluX3Jlc29sdXRpb24uaGVpZ2h0KCkpOworLSAgZW51bWVyYXRvci0+RW5kVmlkZW9E
ZWNvZGVBY2NlbGVyYXRvclN1cHBvcnRlZFByb2ZpbGUoKTsKKy19CistCistdm9pZCBFbnVtZXJh
dGVWaWRlb0VuY29kZUFjY2VsZXJhdG9yU3VwcG9ydGVkUHJvZmlsZSgKKy0gICAgY29uc3QgZ3B1
OjpWaWRlb0VuY29kZUFjY2VsZXJhdG9yU3VwcG9ydGVkUHJvZmlsZSYgcHJvZmlsZSwKKy0gICAg
Z3B1OjpHUFVJbmZvOjpFbnVtZXJhdG9yKiBlbnVtZXJhdG9yKSB7CistICBlbnVtZXJhdG9yLT5C
ZWdpblZpZGVvRW5jb2RlQWNjZWxlcmF0b3JTdXBwb3J0ZWRQcm9maWxlKCk7CistICBlbnVtZXJh
dG9yLT5BZGRJbnQoInByb2ZpbGUiLCBwcm9maWxlLnByb2ZpbGUpOworLSAgZW51bWVyYXRvci0+
QWRkSW50KCJtYXhSZXNvbHV0aW9uV2lkdGgiLCBwcm9maWxlLm1heF9yZXNvbHV0aW9uLndpZHRo
KCkpOworLSAgZW51bWVyYXRvci0+QWRkSW50KCJtYXhSZXNvbHV0aW9uSGVpZ2h0IiwgcHJvZmls
ZS5tYXhfcmVzb2x1dGlvbi5oZWlnaHQoKSk7CistICBlbnVtZXJhdG9yLT5BZGRJbnQoIm1heEZy
YW1lcmF0ZU51bWVyYXRvciIsIHByb2ZpbGUubWF4X2ZyYW1lcmF0ZV9udW1lcmF0b3IpOworLSAg
ZW51bWVyYXRvci0+QWRkSW50KCJtYXhGcmFtZXJhdGVEZW5vbWluYXRvciIsCistICAgICAgICAg
ICAgICAgICAgICAgcHJvZmlsZS5tYXhfZnJhbWVyYXRlX2Rlbm9taW5hdG9yKTsKKy0gIGVudW1l
cmF0b3ItPkVuZFZpZGVvRW5jb2RlQWNjZWxlcmF0b3JTdXBwb3J0ZWRQcm9maWxlKCk7CistfQor
LQorIH0gIC8vIG5hbWVzcGFjZQorIAorIG5hbWVzcGFjZSBncHUgeworQEAgLTY4LDkgKzQzLDYg
QEAgR1BVSW5mbzo6R1BVSW5mbygpCisgICAgICAgaW5fcHJvY2Vzc19ncHUodHJ1ZSksCisgICAg
ICAgYmFzaWNfaW5mb19zdGF0ZShrQ29sbGVjdEluZm9Ob25lKSwKKyAgICAgICBjb250ZXh0X2lu
Zm9fc3RhdGUoa0NvbGxlY3RJbmZvTm9uZSksCistI2lmIGRlZmluZWQoT1NfV0lOKQorLSAgICAg
IGR4X2RpYWdub3N0aWNzX2luZm9fc3RhdGUoa0NvbGxlY3RJbmZvTm9uZSksCistI2VuZGlmCisg
ICAgICAganBlZ19kZWNvZGVfYWNjZWxlcmF0b3Jfc3VwcG9ydGVkKGZhbHNlKSB7CisgfQorIAor
QEAgLTc4LDExICs1MCw5IEBAIEdQVUluZm86On5HUFVJbmZvKCkgeyB9CisgCisgdm9pZCBHUFVJ
bmZvOjpFbnVtZXJhdGVGaWVsZHMoRW51bWVyYXRvciogZW51bWVyYXRvcikgY29uc3QgeworICAg
c3RydWN0IEdQVUluZm9Lbm93bkZpZWxkcyB7CistICAgIGJhc2U6OlRpbWVEZWx0YSBpbml0aWFs
aXphdGlvbl90aW1lOworICAgICBib29sIG9wdGltdXM7CisgICAgIGJvb2wgYW1kX3N3aXRjaGFi
bGU7CisgICAgIGJvb2wgbGVub3ZvX2RjdXRlOworLSAgICBWZXJzaW9uIGRpc3BsYXlfbGlua192
ZXJzaW9uOworICAgICBHUFVEZXZpY2UgZ3B1OworICAgICBzdGQ6OnZlY3RvcjxHUFVEZXZpY2U+
IHNlY29uZGFyeV9ncHVzOworICAgICB1aW50NjQgYWRhcHRlcl9sdWlkOworQEAgLTExMCwxNCAr
ODAsNiBAQCB2b2lkIEdQVUluZm86OkVudW1lcmF0ZUZpZWxkcyhFbnVtZXJhdG9yCisgICAgIGJv
b2wgaW5fcHJvY2Vzc19ncHU7CisgICAgIENvbGxlY3RJbmZvUmVzdWx0IGJhc2ljX2luZm9fc3Rh
dGU7CisgICAgIENvbGxlY3RJbmZvUmVzdWx0IGNvbnRleHRfaW5mb19zdGF0ZTsKKy0jaWYgZGVm
aW5lZChPU19XSU4pCistICAgIENvbGxlY3RJbmZvUmVzdWx0IGR4X2RpYWdub3N0aWNzX2luZm9f
c3RhdGU7CistICAgIER4RGlhZ05vZGUgZHhfZGlhZ25vc3RpY3M7CistI2VuZGlmCistICAgIFZp
ZGVvRGVjb2RlQWNjZWxlcmF0b3JTdXBwb3J0ZWRQcm9maWxlcworLSAgICAgICAgdmlkZW9fZGVj
b2RlX2FjY2VsZXJhdG9yX3N1cHBvcnRlZF9wcm9maWxlczsKKy0gICAgVmlkZW9FbmNvZGVBY2Nl
bGVyYXRvclN1cHBvcnRlZFByb2ZpbGVzCistICAgICAgICB2aWRlb19lbmNvZGVfYWNjZWxlcmF0
b3Jfc3VwcG9ydGVkX3Byb2ZpbGVzOworICAgICBib29sIGpwZWdfZGVjb2RlX2FjY2VsZXJhdG9y
X3N1cHBvcnRlZDsKKyAgIH07CisgCitAQCAtMTM2LDE1ICs5OCw5IEBAIHZvaWQgR1BVSW5mbzo6
RW51bWVyYXRlRmllbGRzKEVudW1lcmF0b3IKKyAgICAgRW51bWVyYXRlR1BVRGV2aWNlKHNlY29u
ZGFyeV9ncHUsIGVudW1lcmF0b3IpOworIAorICAgZW51bWVyYXRvci0+QmVnaW5BdXhBdHRyaWJ1
dGVzKCk7CistICBlbnVtZXJhdG9yLT5BZGRUaW1lRGVsdGFJblNlY29uZHNGKCJpbml0aWFsaXph
dGlvblRpbWUiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFs
aXphdGlvbl90aW1lKTsKKyAgIGVudW1lcmF0b3ItPkFkZEJvb2woIm9wdGltdXMiLCBvcHRpbXVz
KTsKKyAgIGVudW1lcmF0b3ItPkFkZEJvb2woImFtZFN3aXRjaGFibGUiLCBhbWRfc3dpdGNoYWJs
ZSk7CisgICBlbnVtZXJhdG9yLT5BZGRCb29sKCJsZW5vdm9EY3V0ZSIsIGxlbm92b19kY3V0ZSk7
CistICBpZiAoZGlzcGxheV9saW5rX3ZlcnNpb24uSXNWYWxpZCgpKSB7CistICAgIGVudW1lcmF0
b3ItPkFkZFN0cmluZygiZGlzcGxheUxpbmtWZXJzaW9uIiwKKy0gICAgICAgICAgICAgICAgICAg
ICAgICAgIGRpc3BsYXlfbGlua192ZXJzaW9uLkdldFN0cmluZygpKTsKKy0gIH0KKyAgIGVudW1l
cmF0b3ItPkFkZEludDY0KCJhZGFwdGVyTHVpZCIsIGFkYXB0ZXJfbHVpZCk7CisgICBlbnVtZXJh
dG9yLT5BZGRTdHJpbmcoImRyaXZlclZlbmRvciIsIGRyaXZlcl92ZW5kb3IpOworICAgZW51bWVy
YXRvci0+QWRkU3RyaW5nKCJkcml2ZXJWZXJzaW9uIiwgZHJpdmVyX3ZlcnNpb24pOworQEAgLTE3
MSwxNCArMTI3LDcgQEAgdm9pZCBHUFVJbmZvOjpFbnVtZXJhdGVGaWVsZHMoRW51bWVyYXRvcgor
ICAgZW51bWVyYXRvci0+QWRkQm9vbCgiaW5Qcm9jZXNzR3B1IiwgaW5fcHJvY2Vzc19ncHUpOwor
ICAgZW51bWVyYXRvci0+QWRkSW50KCJiYXNpY0luZm9TdGF0ZSIsIGJhc2ljX2luZm9fc3RhdGUp
OworICAgZW51bWVyYXRvci0+QWRkSW50KCJjb250ZXh0SW5mb1N0YXRlIiwgY29udGV4dF9pbmZv
X3N0YXRlKTsKKy0jaWYgZGVmaW5lZChPU19XSU4pCistICBlbnVtZXJhdG9yLT5BZGRJbnQoIkR4
RGlhZ25vc3RpY3NJbmZvU3RhdGUiLCBkeF9kaWFnbm9zdGljc19pbmZvX3N0YXRlKTsKKy0jZW5k
aWYKKyAgIC8vIFRPRE8oa2JyKTogYWRkIGR4X2RpYWdub3N0aWNzIG9uIFdpbmRvd3MuCistICBm
b3IgKGNvbnN0IGF1dG8mIHByb2ZpbGUgOiB2aWRlb19kZWNvZGVfYWNjZWxlcmF0b3Jfc3VwcG9y
dGVkX3Byb2ZpbGVzKQorLSAgICBFbnVtZXJhdGVWaWRlb0RlY29kZUFjY2VsZXJhdG9yU3VwcG9y
dGVkUHJvZmlsZShwcm9maWxlLCBlbnVtZXJhdG9yKTsKKy0gIGZvciAoY29uc3QgYXV0byYgcHJv
ZmlsZSA6IHZpZGVvX2VuY29kZV9hY2NlbGVyYXRvcl9zdXBwb3J0ZWRfcHJvZmlsZXMpCistICAg
IEVudW1lcmF0ZVZpZGVvRW5jb2RlQWNjZWxlcmF0b3JTdXBwb3J0ZWRQcm9maWxlKHByb2ZpbGUs
IGVudW1lcmF0b3IpOworICAgZW51bWVyYXRvci0+QWRkQm9vbCgianBlZ0RlY29kZUFjY2VsZXJh
dG9yU3VwcG9ydGVkIiwKKyAgICAgICBqcGVnX2RlY29kZV9hY2NlbGVyYXRvcl9zdXBwb3J0ZWQp
OworICAgZW51bWVyYXRvci0+RW5kQXV4QXR0cmlidXRlcygpOworZGlmZiAtcnVwTiBncHVfdGVz
dF9leHBlY3RhdGlvbnNfcmV2ZXJ0ZWQvZ3B1X2luZm8uaCBncHVfdGVzdF9leHBlY3RhdGlvbnMv
Z3B1X2luZm8uaAorLS0tIGdwdV90ZXN0X2V4cGVjdGF0aW9uc19yZXZlcnRlZC9ncHVfaW5mby5o
CTIwMTYtMDgtMTIgMjE6MjM6NTQuODg0MTMyNDA1IC0wNDAwCisrKysgZ3B1X3Rlc3RfZXhwZWN0
YXRpb25zL2dwdV9pbmZvLmgJMjAxNS0xMS0zMCAyMTo1NDozMC4yMzkyNjc2MzUgLTA1MDAKK0BA
IC0xMSwxMyArMTEsNyBAQAorICNpbmNsdWRlIDxzdHJpbmc+CisgI2luY2x1ZGUgPHZlY3Rvcj4K
KyAKKy0jaW5jbHVkZSAiYmFzZS9iYXNpY3R5cGVzLmgiCistI2luY2x1ZGUgImJhc2UvdGltZS90
aW1lLmgiCistI2luY2x1ZGUgImJhc2UvdmVyc2lvbi5oIgorLSNpbmNsdWRlICJidWlsZC9idWls
ZF9jb25maWcuaCIKKy0jaW5jbHVkZSAiZ3B1L2NvbmZpZy9keF9kaWFnX25vZGUuaCIKKy0jaW5j
bHVkZSAiZ3B1L2dwdV9leHBvcnQuaCIKKy0jaW5jbHVkZSAidWkvZ2Z4L2dlb21ldHJ5L3NpemUu
aCIKKysjaW5jbHVkZSAiYW5nbGVfY29uZmlnLmgiCisgCisgbmFtZXNwYWNlIGdwdSB7CisgCitA
QCAtNTQsMjUgKzQ4LDYgQEAgZW51bSBWaWRlb0NvZGVjUHJvZmlsZSB7CisgICBWSURFT19DT0RF
Q19QUk9GSUxFX01BWCA9IFZQOVBST0ZJTEVfQU5ZLAorIH07CisgCistLy8gU3BlY2lmaWNhdGlv
biBvZiBhIGRlY29kaW5nIHByb2ZpbGUgc3VwcG9ydGVkIGJ5IGEgaGFyZHdhcmUgZGVjb2Rlci4K
Ky1zdHJ1Y3QgR1BVX0VYUE9SVCBWaWRlb0RlY29kZUFjY2VsZXJhdG9yU3VwcG9ydGVkUHJvZmls
ZSB7CistICBWaWRlb0NvZGVjUHJvZmlsZSBwcm9maWxlOworLSAgZ2Z4OjpTaXplIG1heF9yZXNv
bHV0aW9uOworLSAgZ2Z4OjpTaXplIG1pbl9yZXNvbHV0aW9uOworLX07CistdXNpbmcgVmlkZW9E
ZWNvZGVBY2NlbGVyYXRvclN1cHBvcnRlZFByb2ZpbGVzID0KKy0gICAgc3RkOjp2ZWN0b3I8Vmlk
ZW9EZWNvZGVBY2NlbGVyYXRvclN1cHBvcnRlZFByb2ZpbGU+OworLQorLS8vIFNwZWNpZmljYXRp
b24gb2YgYW4gZW5jb2RpbmcgcHJvZmlsZSBzdXBwb3J0ZWQgYnkgYSBoYXJkd2FyZSBlbmNvZGVy
LgorLXN0cnVjdCBHUFVfRVhQT1JUIFZpZGVvRW5jb2RlQWNjZWxlcmF0b3JTdXBwb3J0ZWRQcm9m
aWxlIHsKKy0gIFZpZGVvQ29kZWNQcm9maWxlIHByb2ZpbGU7CistICBnZng6OlNpemUgbWF4X3Jl
c29sdXRpb247CistICB1aW50MzIgbWF4X2ZyYW1lcmF0ZV9udW1lcmF0b3I7CistICB1aW50MzIg
bWF4X2ZyYW1lcmF0ZV9kZW5vbWluYXRvcjsKKy19OworLXVzaW5nIFZpZGVvRW5jb2RlQWNjZWxl
cmF0b3JTdXBwb3J0ZWRQcm9maWxlcyA9CistICAgIHN0ZDo6dmVjdG9yPFZpZGVvRW5jb2RlQWNj
ZWxlcmF0b3JTdXBwb3J0ZWRQcm9maWxlPjsKKy0KKyBzdHJ1Y3QgR1BVX0VYUE9SVCBHUFVJbmZv
IHsKKyAgIHN0cnVjdCBHUFVfRVhQT1JUIEdQVURldmljZSB7CisgICAgIEdQVURldmljZSgpOwor
QEAgLTEwNCwxMCArNzksNiBAQCBzdHJ1Y3QgR1BVX0VYUE9SVCBHUFVJbmZvIHsKKyAgICAgcmV0
dXJuICFjYW5fbG9zZV9jb250ZXh0ICYmICFzb2Z0d2FyZV9yZW5kZXJpbmc7CisgICB9CisgCist
ICAvLyBUaGUgYW1vdW50IG9mIHRpbWUgdGFrZW4gdG8gZ2V0IGZyb20gdGhlIHByb2Nlc3Mgc3Rh
cnRpbmcgdG8gdGhlIG1lc3NhZ2UKKy0gIC8vIGxvb3AgYmVpbmcgcHVtcGVkLgorLSAgYmFzZTo6
VGltZURlbHRhIGluaXRpYWxpemF0aW9uX3RpbWU7CistCisgICAvLyBDb21wdXRlciBoYXMgTlZJ
RElBIE9wdGltdXMKKyAgIGJvb2wgb3B0aW11czsKKyAKK0BAIC0xMTcsMTAgKzg4LDYgQEAgc3Ry
dWN0IEdQVV9FWFBPUlQgR1BVSW5mbyB7CisgICAvLyBMZW5vdm8gZEN1dGUgaXMgaW5zdGFsbGVk
LiBodHRwOi8vY3JidWcuY29tLzE4MTY2NS4KKyAgIGJvb2wgbGVub3ZvX2RjdXRlOworIAorLSAg
Ly8gVmVyc2lvbiBvZiBEaXNwbGF5TGluayBkcml2ZXIgaW5zdGFsbGVkLiBaZXJvIGlmIG5vdCBp
bnN0YWxsZWQuCistICAvLyBodHRwOi8vY3JidWcuY29tLzE3NzYxMS4KKy0gIFZlcnNpb24gZGlz
cGxheV9saW5rX3ZlcnNpb247CistCisgICAvLyBQcmltYXJ5IEdQVSwgZm9yIGV4bWFwbGUsIHRo
ZSBkaXNjcmV0ZSBHUFUgaW4gYSBkdWFsIEdQVSBtYWNoaW5lLgorICAgR1BVRGV2aWNlIGdwdTsK
KyAKK0BAIC0yMTMsMTcgKzE4MCw3IEBAIHN0cnVjdCBHUFVfRVhQT1JUIEdQVUluZm8geworICAg
Ly8gaWYgdGhlIGNvbGxlY3Rpb24gZmFpbHMgb3Igbm90LgorICAgQ29sbGVjdEluZm9SZXN1bHQg
YmFzaWNfaW5mb19zdGF0ZTsKKyAgIENvbGxlY3RJbmZvUmVzdWx0IGNvbnRleHRfaW5mb19zdGF0
ZTsKKy0jaWYgZGVmaW5lZChPU19XSU4pCistICBDb2xsZWN0SW5mb1Jlc3VsdCBkeF9kaWFnbm9z
dGljc19pbmZvX3N0YXRlOworIAorLSAgLy8gVGhlIGluZm9ybWF0aW9uIHJldHVybmVkIGJ5IHRo
ZSBEaXJlY3RYIERpYWdub3N0aWNzIFRvb2wuCistICBEeERpYWdOb2RlIGR4X2RpYWdub3N0aWNz
OworLSNlbmRpZgorLQorLSAgVmlkZW9EZWNvZGVBY2NlbGVyYXRvclN1cHBvcnRlZFByb2ZpbGVz
CistICAgICAgdmlkZW9fZGVjb2RlX2FjY2VsZXJhdG9yX3N1cHBvcnRlZF9wcm9maWxlczsKKy0g
IFZpZGVvRW5jb2RlQWNjZWxlcmF0b3JTdXBwb3J0ZWRQcm9maWxlcworLSAgICAgIHZpZGVvX2Vu
Y29kZV9hY2NlbGVyYXRvcl9zdXBwb3J0ZWRfcHJvZmlsZXM7CisgICBib29sIGpwZWdfZGVjb2Rl
X2FjY2VsZXJhdG9yX3N1cHBvcnRlZDsKKyAKKyAgIC8vIE5vdGU6IHdoZW4gYWRkaW5nIG5ldyBt
ZW1iZXJzLCBwbGVhc2UgcmVtZW1iZXIgdG8gdXBkYXRlIEVudW1lcmF0ZUZpZWxkcworQEAgLTI0
Myw4ICsyMDAsNiBAQCBzdHJ1Y3QgR1BVX0VYUE9SVCBHUFVJbmZvIHsKKyAgICAgdmlydHVhbCB2
b2lkIEFkZEludChjb25zdCBjaGFyKiBuYW1lLCBpbnQgdmFsdWUpID0gMDsKKyAgICAgdmlydHVh
bCB2b2lkIEFkZFN0cmluZyhjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBzdGQ6OnN0cmluZyYgdmFs
dWUpID0gMDsKKyAgICAgdmlydHVhbCB2b2lkIEFkZEJvb2woY29uc3QgY2hhciogbmFtZSwgYm9v
bCB2YWx1ZSkgPSAwOworLSAgICB2aXJ0dWFsIHZvaWQgQWRkVGltZURlbHRhSW5TZWNvbmRzRihj
b25zdCBjaGFyKiBuYW1lLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBiYXNlOjpUaW1lRGVsdGEmIHZhbHVlKSA9IDA7CisgCisgICAgIC8vIE1hcmtlcnMg
aW5kaWNhdGluZyB0aGF0IGEgR1BVRGV2aWNlIGlzIGJlaW5nIGRlc2NyaWJlZC4KKyAgICAgdmly
dHVhbCB2b2lkIEJlZ2luR1BVRGV2aWNlKCkgPSAwOworZGlmZiAtcnVwTiBncHVfdGVzdF9leHBl
Y3RhdGlvbnNfcmV2ZXJ0ZWQvZ3B1X3Rlc3RfY29uZmlnLmNjIGdwdV90ZXN0X2V4cGVjdGF0aW9u
cy9ncHVfdGVzdF9jb25maWcuY2MKKy0tLSBncHVfdGVzdF9leHBlY3RhdGlvbnNfcmV2ZXJ0ZWQv
Z3B1X3Rlc3RfY29uZmlnLmNjCTIwMTYtMDgtMTIgMjE6MjM6NTQuODg0MTMyNDA1IC0wNDAwCisr
KysgZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV90ZXN0X2NvbmZpZy5jYwkyMDE2LTA5LTA5IDE2
OjQwOjA1LjU5Nzg2NDQ2NSAtMDQwMAorQEAgLTIsMjAgKzIsMjA1IEBACisgLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCistI2luY2x1ZGUgImdwdS9j
b25maWcvZ3B1X3Rlc3RfY29uZmlnLmgiCisrI2luY2x1ZGUgImdwdV90ZXN0X2NvbmZpZy5oIgor
IAorLSNpbmNsdWRlICJiYXNlL2xvZ2dpbmcuaCIKKy0jaW5jbHVkZSAiYmFzZS9zeXNfaW5mby5o
IgorLSNpbmNsdWRlICJncHUvY29uZmlnL2dwdV9pbmZvLmgiCistI2luY2x1ZGUgImdwdS9jb25m
aWcvZ3B1X2luZm9fY29sbGVjdG9yLmgiCistI2luY2x1ZGUgImdwdS9jb25maWcvZ3B1X3Rlc3Rf
ZXhwZWN0YXRpb25zX3BhcnNlci5oIgorKyNpbmNsdWRlICJncHVfaW5mby5oIgorKyNpbmNsdWRl
ICJncHVfdGVzdF9leHBlY3RhdGlvbnNfcGFyc2VyLmgiCisrCisrI2lmIGRlZmluZWQoT1NfTElO
VVgpCisrZXh0ZXJuICJDIiB7CisrIyAgIGluY2x1ZGUgPHBjaS9wY2kuaD4KKyt9CisrI2VuZGlm
CisgCisgI2lmIGRlZmluZWQoT1NfTUFDT1NYKQorLSNpbmNsdWRlICJiYXNlL21hYy9tYWNfdXRp
bC5oIgorLSNlbGlmIGRlZmluZWQoT1NfV0lOKQorLSNpbmNsdWRlICJiYXNlL3dpbi93aW5kb3dz
X3ZlcnNpb24uaCIKKysjaW5jbHVkZSAiZ3B1X3Rlc3RfY29uZmlnX21hYy5oIgorKyNlbmRpZgor
KworK3VzaW5nIG5hbWVzcGFjZSBncHU7CisrCisrI2lmIGRlZmluZWQoT1NfV0lOKQorKworK25h
bWVzcGFjZSBiYXNlIHsKKysKKytuYW1lc3BhY2UgeworKworKy8vIERpc2FibGUgdGhlIGRlcHJl
Y2F0ZWQgZnVuY3Rpb24gd2FybmluZyBmb3IgR2V0VmVyc2lvbkV4CisrI3ByYWdtYSB3YXJuaW5n
KGRpc2FibGU6IDQ5OTYpCisrCisrY2xhc3MgU3lzSW5mbworK3sKKysgIHB1YmxpYzoKKysgICAg
c3RhdGljIHZvaWQgT3BlcmF0aW5nU3lzdGVtVmVyc2lvbk51bWJlcnMoCisrICAgICAgICBpbnQz
MiAqbWFqb3JfdmVyc2lvbiwgaW50MzIgKm1pbm9yX3ZlcnNpb24sIGludDMyICpidWdmaXhfdmVy
c2lvbik7CisrfTsKKysKKysvLyBzdGF0aWMKKyt2b2lkIFN5c0luZm86Ok9wZXJhdGluZ1N5c3Rl
bVZlcnNpb25OdW1iZXJzKAorKyAgICBpbnQzMiAqbWFqb3JfdmVyc2lvbiwgaW50MzIgKm1pbm9y
X3ZlcnNpb24sIGludDMyICpidWdmaXhfdmVyc2lvbikKKyt7CisrICBPU1ZFUlNJT05JTkZPRVgg
dmVyc2lvbl9pbmZvID0geyBzaXplb2YgdmVyc2lvbl9pbmZvIH07CisrICA6OkdldFZlcnNpb25F
eChyZWludGVycHJldF9jYXN0PE9TVkVSU0lPTklORk8qPigmdmVyc2lvbl9pbmZvKSk7CisrICAq
bWFqb3JfdmVyc2lvbiA9IHZlcnNpb25faW5mby5kd01ham9yVmVyc2lvbjsKKysgICptaW5vcl92
ZXJzaW9uID0gdmVyc2lvbl9pbmZvLmR3TWlub3JWZXJzaW9uOworKyAgKmJ1Z2ZpeF92ZXJzaW9u
ID0gdmVyc2lvbl9pbmZvLmR3QnVpbGROdW1iZXI7CisrfQorKworK30gLy8gYW5vbnltb3VzIG5h
bWVzcGFjZQorKworK30gLy8gbmFtZXNwYWNlIGJhc2UKKysKKyt2b2lkIERldmljZUlEVG9WZW5k
b3JBbmREZXZpY2UoY29uc3Qgc3RkOjpzdHJpbmcmIGlkLAorKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50MzIqIHZlbmRvcl9pZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDMyKiBkZXZpY2VfaWQpIHsKKysgICp2ZW5kb3JfaWQgPSAwOworKyAgKmRldmlj
ZV9pZCA9IDA7CisrICBpZiAoaWQubGVuZ3RoKCkgPCAyMSkKKysgICAgcmV0dXJuOworKyAgc3Rk
OjpzdHJpbmcgdmVuZG9yX2lkX3N0cmluZyA9IGlkLnN1YnN0cig4LCA0KTsKKysgIHN0ZDo6c3Ry
aW5nIGRldmljZV9pZF9zdHJpbmcgPSBpZC5zdWJzdHIoMTcsIDQpOworKyAgYmFzZTo6SGV4U3Ry
aW5nVG9VSW50KHZlbmRvcl9pZF9zdHJpbmcsIHZlbmRvcl9pZCk7CisrICBiYXNlOjpIZXhTdHJp
bmdUb1VJbnQoZGV2aWNlX2lkX3N0cmluZywgZGV2aWNlX2lkKTsKKyt9CisrCisrQ29sbGVjdElu
Zm9SZXN1bHQgQ29sbGVjdEdwdUlEKHVpbnQzMiogdmVuZG9yX2lkLCB1aW50MzIqIGRldmljZV9p
ZCkgeworKyAgRENIRUNLKHZlbmRvcl9pZCAmJiBkZXZpY2VfaWQpOworKyAgKnZlbmRvcl9pZCA9
IDA7CisrICAqZGV2aWNlX2lkID0gMDsKKysKKysgIC8vIFRha2VuIGZyb20gaHR0cDovL2RldmVs
b3Blci5udmlkaWEuY29tL29iamVjdC9kZXZpY2VfaWRzLmh0bWwKKysgIERJU1BMQVlfREVWSUNF
QSBkZDsKKysgIGRkLmNiID0gc2l6ZW9mKERJU1BMQVlfREVWSUNFQSk7CisrICBzdGQ6OnN0cmlu
ZyBpZDsKKysgIGZvciAoaW50IGkgPSAwOyBFbnVtRGlzcGxheURldmljZXNBKE5VTEwsIGksICZk
ZCwgMCk7ICsraSkgeworKyAgICBpZiAoZGQuU3RhdGVGbGFncyAmIERJU1BMQVlfREVWSUNFX1BS
SU1BUllfREVWSUNFKSB7CisrICAgICAgaWQgPSBkZC5EZXZpY2VJRDsKKysgICAgICBicmVhazsK
KysgICAgfQorKyAgfQorKworKyAgaWYgKGlkLmxlbmd0aCgpID4gMjApIHsKKysgICAgRGV2aWNl
SURUb1ZlbmRvckFuZERldmljZShpZCwgdmVuZG9yX2lkLCBkZXZpY2VfaWQpOworKyAgICBpZiAo
KnZlbmRvcl9pZCAhPSAwICYmICpkZXZpY2VfaWQgIT0gMCkKKysgICAgICByZXR1cm4ga0NvbGxl
Y3RJbmZvU3VjY2VzczsKKysgIH0KKysgIHJldHVybiBrQ29sbGVjdEluZm9Ob25GYXRhbEZhaWx1
cmU7CisrfQorKworKyNlbmRpZiAvLyBkZWZpbmVkKE9TX1dJTikKKysKKysjaWYgZGVmaW5lZChP
U19MSU5VWCkKKysKKytjb25zdCB1aW50MzIga1ZlbmRvcklESW50ZWwgPSAweDgwODY7CisrY29u
c3QgdWludDMyIGtWZW5kb3JJRE5WaWRpYSA9IDB4MTBkZTsKKytjb25zdCB1aW50MzIga1ZlbmRv
cklEQU1EID0gMHgxMDAyOworKworK0NvbGxlY3RJbmZvUmVzdWx0IENvbGxlY3RQQ0lWaWRlb0Nh
cmRJbmZvKEdQVUluZm8qIGdwdV9pbmZvKSB7CisrICBEQ0hFQ0soZ3B1X2luZm8pOworKworKyAg
c3RydWN0IHBjaV9hY2Nlc3MqIGFjY2VzcyA9IHBjaV9hbGxvYygpOworKyAgRENIRUNLKGFjY2Vz
cyAhPSBOVUxMKTsKKysgIHBjaV9pbml0KGFjY2Vzcyk7CisrICBwY2lfc2Nhbl9idXMoYWNjZXNz
KTsKKysKKysgIGJvb2wgcHJpbWFyeV9ncHVfaWRlbnRpZmllZCA9IGZhbHNlOworKyAgZm9yIChw
Y2lfZGV2KiBkZXZpY2UgPSBhY2Nlc3MtPmRldmljZXM7CisrICAgICAgIGRldmljZSAhPSBOVUxM
OyBkZXZpY2UgPSBkZXZpY2UtPm5leHQpIHsKKysgICAgcGNpX2ZpbGxfaW5mbyhkZXZpY2UsIDMz
KTsKKysgICAgYm9vbCBpc19ncHUgPSBmYWxzZTsKKysgICAgc3dpdGNoIChkZXZpY2UtPmRldmlj
ZV9jbGFzcykgeworKyAgICAgIGNhc2UgUENJX0NMQVNTX0RJU1BMQVlfVkdBOgorKyAgICAgIGNh
c2UgUENJX0NMQVNTX0RJU1BMQVlfWEdBOgorKyAgICAgIGNhc2UgUENJX0NMQVNTX0RJU1BMQVlf
M0Q6CisrICAgICAgICBpc19ncHUgPSB0cnVlOworKyAgICAgICAgYnJlYWs7CisrICAgICAgY2Fz
ZSBQQ0lfQ0xBU1NfRElTUExBWV9PVEhFUjoKKysgICAgICBkZWZhdWx0OgorKyAgICAgICAgYnJl
YWs7CisrICAgIH0KKysgICAgaWYgKCFpc19ncHUpCisrICAgICAgY29udGludWU7CisrICAgIGlm
IChkZXZpY2UtPnZlbmRvcl9pZCA9PSAwIHx8IGRldmljZS0+ZGV2aWNlX2lkID09IDApCisrICAg
ICAgY29udGludWU7CisrCisrICAgIEdQVUluZm86OkdQVURldmljZSBncHU7CisrICAgIGdwdS52
ZW5kb3JfaWQgPSBkZXZpY2UtPnZlbmRvcl9pZDsKKysgICAgZ3B1LmRldmljZV9pZCA9IGRldmlj
ZS0+ZGV2aWNlX2lkOworKworKyAgICBpZiAoIXByaW1hcnlfZ3B1X2lkZW50aWZpZWQpIHsKKysg
ICAgICBwcmltYXJ5X2dwdV9pZGVudGlmaWVkID0gdHJ1ZTsKKysgICAgICBncHVfaW5mby0+Z3B1
ID0gZ3B1OworKyAgICB9IGVsc2UgeworKyAgICAgIC8vIFRPRE8oem1vKTogaWYgdGhlcmUgYXJl
IG11bHRpcGxlIEdQVXMsIHdlIGFzc3VtZSB0aGUgbm9uIEludGVsCisrICAgICAgLy8gb25lIGlz
IHByaW1hcnkuIFJldmlzaXQgdGhpcyBsb2dpYyBiZWNhdXNlIHdlIGFjdHVhbGx5IGRvbid0IGtu
b3cKKysgICAgICAvLyB3aGljaCBHUFUgd2UgYXJlIHVzaW5nIGF0IHRoaXMgcG9pbnQuCisrICAg
ICAgaWYgKGdwdV9pbmZvLT5ncHUudmVuZG9yX2lkID09IGtWZW5kb3JJREludGVsICYmCisrICAg
ICAgICAgIGdwdS52ZW5kb3JfaWQgIT0ga1ZlbmRvcklESW50ZWwpIHsKKysgICAgICAgIGdwdV9p
bmZvLT5zZWNvbmRhcnlfZ3B1cy5wdXNoX2JhY2soZ3B1X2luZm8tPmdwdSk7CisrICAgICAgICBn
cHVfaW5mby0+Z3B1ID0gZ3B1OworKyAgICAgIH0gZWxzZSB7CisrICAgICAgICBncHVfaW5mby0+
c2Vjb25kYXJ5X2dwdXMucHVzaF9iYWNrKGdwdSk7CisrICAgICAgfQorKyAgICB9CisrICB9Cisr
CisrICAvLyBEZXRlY3QgT3B0aW11cyBvciBBTUQgU3dpdGNoYWJsZSBHUFUuCisrICBpZiAoZ3B1
X2luZm8tPnNlY29uZGFyeV9ncHVzLnNpemUoKSA9PSAxICYmCisrICAgICAgZ3B1X2luZm8tPnNl
Y29uZGFyeV9ncHVzWzBdLnZlbmRvcl9pZCA9PSBrVmVuZG9ySURJbnRlbCkgeworKyAgICBpZiAo
Z3B1X2luZm8tPmdwdS52ZW5kb3JfaWQgPT0ga1ZlbmRvcklETlZpZGlhKQorKyAgICAgIGdwdV9p
bmZvLT5vcHRpbXVzID0gdHJ1ZTsKKysgICAgaWYgKGdwdV9pbmZvLT5ncHUudmVuZG9yX2lkID09
IGtWZW5kb3JJREFNRCkKKysgICAgICBncHVfaW5mby0+YW1kX3N3aXRjaGFibGUgPSB0cnVlOwor
KyAgfQorKworKyAgcGNpX2NsZWFudXAoYWNjZXNzKTsKKysgIGlmICghcHJpbWFyeV9ncHVfaWRl
bnRpZmllZCkKKysgICAgcmV0dXJuIGtDb2xsZWN0SW5mb05vbkZhdGFsRmFpbHVyZTsKKysgIHJl
dHVybiBrQ29sbGVjdEluZm9TdWNjZXNzOworK30KKysKKytDb2xsZWN0SW5mb1Jlc3VsdCBDb2xs
ZWN0R3B1SUQodWludDMyKiB2ZW5kb3JfaWQsIHVpbnQzMiogZGV2aWNlX2lkKSB7CisrICBEQ0hF
Q0sodmVuZG9yX2lkICYmIGRldmljZV9pZCk7CisrICAqdmVuZG9yX2lkID0gMDsKKysgICpkZXZp
Y2VfaWQgPSAwOworKworKyAgR1BVSW5mbyBncHVfaW5mbzsKKysgIENvbGxlY3RJbmZvUmVzdWx0
IHJlc3VsdCA9IENvbGxlY3RQQ0lWaWRlb0NhcmRJbmZvKCZncHVfaW5mbyk7CisrICBpZiAocmVz
dWx0ID09IGtDb2xsZWN0SW5mb1N1Y2Nlc3MpIHsKKysgICAgKnZlbmRvcl9pZCA9IGdwdV9pbmZv
LmdwdS52ZW5kb3JfaWQ7CisrICAgICpkZXZpY2VfaWQgPSBncHVfaW5mby5ncHUuZGV2aWNlX2lk
OworKyAgfQorKyAgcmV0dXJuIHJlc3VsdDsKKyt9CisrCisrI2VuZGlmIC8vIGRlZmluZWQoT1Nf
TElOVVgpCisrCisrI2lmIGRlZmluZWQoT1NfTUFDT1NYKQorKworK0NvbGxlY3RJbmZvUmVzdWx0
IENvbGxlY3RHcHVJRCh1aW50MzIqIHZlbmRvcl9pZCwgdWludDMyKiBkZXZpY2VfaWQpIHsKKysg
IERDSEVDSyh2ZW5kb3JfaWQgJiYgZGV2aWNlX2lkKTsKKysKKysgIEdQVUluZm86OkdQVURldmlj
ZSBncHUgPSBHZXRBY3RpdmVHUFUoKTsKKysgICp2ZW5kb3JfaWQgPSBncHUudmVuZG9yX2lkOwor
KyAgKmRldmljZV9pZCA9IGdwdS5kZXZpY2VfaWQ7CisrCisrICBpZiAoKnZlbmRvcl9pZCAhPSAw
ICYmICpkZXZpY2VfaWQgIT0gMCkKKysgICAgcmV0dXJuIGtDb2xsZWN0SW5mb1N1Y2Nlc3M7Cisr
ICByZXR1cm4ga0NvbGxlY3RJbmZvTm9uRmF0YWxGYWlsdXJlOworK30KKysKKyAjZW5kaWYKKyAK
KysjaWYgZGVmaW5lZChPU19BTkRST0lEKQorK0NvbGxlY3RJbmZvUmVzdWx0IENvbGxlY3RHcHVJ
RCh1aW50MzIgKnZlbmRvcl9pZCwgdWludDMyICpkZXZpY2VfaWQpCisreworKyAgICBEQ0hFQ0so
dmVuZG9yX2lkICYmIGRldmljZV9pZCk7CisrICAgICp2ZW5kb3JfaWQgPSAwOworKyAgICAqZGV2
aWNlX2lkID0gMDsKKysgICAgcmV0dXJuIGtDb2xsZWN0SW5mb05vbkZhdGFsRmFpbHVyZTsKKyt9
CisrI2VuZGlmICAvLyBkZWZpbmVkKE9TX0FORFJPSUQpCisrCisgbmFtZXNwYWNlIGdwdSB7Cisg
CisgbmFtZXNwYWNlIHsKK0BAIC0yNDUsMzMgKzQzMCw0MSBAQCBib29sIEdQVVRlc3RCb3RDb25m
aWc6Ok1hdGNoZXMoY29uc3Qgc3RkCisgICByZXR1cm4gTWF0Y2hlcyhjb25maWcpOworIH0KKyAK
Ky1ib29sIEdQVVRlc3RCb3RDb25maWc6OkxvYWRDdXJyZW50Q29uZmlnKGNvbnN0IEdQVUluZm8q
IGdwdV9pbmZvKSB7CistICBib29sIHJ0OworLSAgaWYgKGdwdV9pbmZvID09IE5VTEwpIHsKKy0g
ICAgR1BVSW5mbyBteV9ncHVfaW5mbzsKKy0gICAgQ29sbGVjdEluZm9SZXN1bHQgcmVzdWx0ID0g
Q29sbGVjdEdwdUlEKAorLSAgICAgICAgJm15X2dwdV9pbmZvLmdwdS52ZW5kb3JfaWQsICZteV9n
cHVfaW5mby5ncHUuZGV2aWNlX2lkKTsKKy0gICAgaWYgKHJlc3VsdCAhPSBrQ29sbGVjdEluZm9T
dWNjZXNzKSB7CistICAgICAgTE9HKEVSUk9SKSA8PCAiRmFpbCB0byBpZGVudGlmeSBHUFUiOwor
LSAgICAgIERpc2FibGVHUFVJbmZvVmFsaWRhdGlvbigpOworLSAgICAgIHJ0ID0gdHJ1ZTsKKy0g
ICAgfSBlbHNlIHsKKy0gICAgICBydCA9IFNldEdQVUluZm8obXlfZ3B1X2luZm8pOworK2Jvb2wg
R1BVVGVzdEJvdENvbmZpZzo6TG9hZEN1cnJlbnRDb25maWcoY29uc3QgR1BVSW5mbyAqZ3B1X2lu
Zm8pCisreworKyAgICBib29sIHJ0OworKyAgICBpZiAoZ3B1X2luZm8gPT0gTlVMTCkKKysgICAg
eworKyAgICAgICAgR1BVSW5mbyBteV9ncHVfaW5mbzsKKysgICAgICAgIENvbGxlY3RJbmZvUmVz
dWx0IHJlc3VsdCA9CisrICAgICAgICAgICAgQ29sbGVjdEdwdUlEKCZteV9ncHVfaW5mby5ncHUu
dmVuZG9yX2lkLCAmbXlfZ3B1X2luZm8uZ3B1LmRldmljZV9pZCk7CisrICAgICAgICBpZiAocmVz
dWx0ICE9IGtDb2xsZWN0SW5mb1N1Y2Nlc3MpCisrICAgICAgICB7CisrICAgICAgICAgICAgTE9H
KEVSUk9SKSA8PCAiRmFpbCB0byBpZGVudGlmeSBHUFVcbiI7CisrICAgICAgICAgICAgRGlzYWJs
ZUdQVUluZm9WYWxpZGF0aW9uKCk7CisrICAgICAgICAgICAgcnQgPSB0cnVlOworKyAgICAgICAg
fQorKyAgICAgICAgZWxzZQorKyAgICAgICAgeworKyAgICAgICAgICAgIHJ0ID0gU2V0R1BVSW5m
byhteV9ncHVfaW5mbyk7CisrICAgICAgICB9CisrICAgIH0KKysgICAgZWxzZQorKyAgICB7Cisr
ICAgICAgICBydCA9IFNldEdQVUluZm8oKmdwdV9pbmZvKTsKKysgICAgfQorKyAgICBzZXRfb3Mo
R2V0Q3VycmVudE9TKCkpOworKyAgICBpZiAob3MoKSA9PSBrT3NVbmtub3duKQorKyAgICB7Cisr
ICAgICAgICBMT0coRVJST1IpIDw8ICJVbmtub3duIE9TXG4iOworKyAgICAgICAgcnQgPSBmYWxz
ZTsKKyAgICAgfQorLSAgfSBlbHNlIHsKKy0gICAgcnQgPSBTZXRHUFVJbmZvKCpncHVfaW5mbyk7
CistICB9CistICBzZXRfb3MoR2V0Q3VycmVudE9TKCkpOworLSAgaWYgKG9zKCkgPT0ga09zVW5r
bm93bikgeworLSAgICBMT0coRVJST1IpIDw8ICJVbmtub3duIE9TIjsKKy0gICAgcnQgPSBmYWxz
ZTsKKy0gIH0KKyAjaWYgZGVmaW5lZChOREVCVUcpCistICBzZXRfYnVpbGRfdHlwZShrQnVpbGRU
eXBlUmVsZWFzZSk7CisrICAgIHNldF9idWlsZF90eXBlKGtCdWlsZFR5cGVSZWxlYXNlKTsKKyAj
ZWxzZQorLSAgc2V0X2J1aWxkX3R5cGUoa0J1aWxkVHlwZURlYnVnKTsKKysgICAgc2V0X2J1aWxk
X3R5cGUoa0J1aWxkVHlwZURlYnVnKTsKKyAjZW5kaWYKKy0gIHJldHVybiBydDsKKysgICAgcmV0
dXJuIHJ0OworIH0KKyAKKyAvLyBzdGF0aWMKK0BAIC0yOTUsMjEgKzQ4OCw1IEBAIGJvb2wgR1BV
VGVzdEJvdENvbmZpZzo6Q3VycmVudENvbmZpZ01hdGMKKyAgIHJldHVybiBmYWxzZTsKKyB9Cisg
CistLy8gc3RhdGljCistYm9vbCBHUFVUZXN0Qm90Q29uZmlnOjpHcHVCbGFja2xpc3RlZE9uQm90
KCkgeworLSNpZiBkZWZpbmVkKE9TX01BQ09TWCkKKy0gIC8vIEJsYWNrbGlzdCBydWxlICM4MSBk
aXNhYmxlcyBhbGwgR3B1IGFjY2VsZXJhdGlvbiBvbiBNYWMgPCAxMC44IGJvdHMuCistICBpZiAo
Q3VycmVudENvbmZpZ01hdGNoZXMoIk1BQyBWTVdBUkUiKSAmJiBiYXNlOjptYWM6OklzT1NMaW9u
T3JFYXJsaWVyKCkpIHsKKy0gICAgcmV0dXJuIHRydWU7CistICB9CistI2VsaWYgZGVmaW5lZChP
U19XSU4pCistICAvLyBCbGFja2xpc3QgcnVsZSAjNzkgZGlzYWJsZXMgYWxsIEdwdSBhY2NlbGVy
YXRpb24gYmVmb3JlIFdpbmRvd3MgNy4KKy0gIGlmIChiYXNlOjp3aW46OkdldFZlcnNpb24oKSA8
PSBiYXNlOjp3aW46OlZFUlNJT05fVklTVEEpIHsKKy0gICAgcmV0dXJuIHRydWU7CistICB9Cist
I2VuZGlmCistICByZXR1cm4gZmFsc2U7CistfQorLQorIH0gIC8vIG5hbWVzcGFjZSBncHUKKyAK
K2RpZmYgLXJ1cE4gZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3JldmVydGVkL2dwdV90ZXN0X2NvbmZp
Zy5oIGdwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9jb25maWcuaAorLS0tIGdwdV90ZXN0
X2V4cGVjdGF0aW9uc19yZXZlcnRlZC9ncHVfdGVzdF9jb25maWcuaAkyMDE2LTA4LTEyIDIxOjIz
OjU0Ljg4NDEzMjQwNSAtMDQwMAorKysrIGdwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9j
b25maWcuaAkyMDE1LTExLTMwIDIxOjU0OjMwLjIzOTI2NzYzNSAtMDUwMAorQEAgLTgsOSArOCw3
IEBACisgI2luY2x1ZGUgPHN0cmluZz4KKyAjaW5jbHVkZSA8dmVjdG9yPgorIAorLSNpbmNsdWRl
ICJiYXNlL2Jhc2ljdHlwZXMuaCIKKy0jaW5jbHVkZSAiYmFzZS9jb21waWxlcl9zcGVjaWZpYy5o
IgorLSNpbmNsdWRlICJncHUvZ3B1X2V4cG9ydC5oIgorKyNpbmNsdWRlICJhbmdsZV9jb25maWcu
aCIKKyAKKyBuYW1lc3BhY2UgZ3B1IHsKKyAKK0BAIC0xMzQsOSArMTMyLDYgQEAgY2xhc3MgR1BV
X0VYUE9SVCBHUFVUZXN0Qm90Q29uZmlnIDogcHVibAorICAgLy8gQ2hlY2sgaWYgdGhpcyBib3Qn
cyBjb25maWcgbWF0Y2hlcyB8Y29uZmlnX2RhdGF8IG9yIGFueSBvZiB0aGUgfGNvbmZpZ3N8Lgor
ICAgc3RhdGljIGJvb2wgQ3VycmVudENvbmZpZ01hdGNoZXMoY29uc3Qgc3RkOjpzdHJpbmcmIGNv
bmZpZ19kYXRhKTsKKyAgIHN0YXRpYyBib29sIEN1cnJlbnRDb25maWdNYXRjaGVzKGNvbnN0IHN0
ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgY29uZmlncyk7CistCistICAvLyBDaGVjayBpZiB0aGUg
Ym90IGhhcyBibGFja2xpc3RlZCBhbGwgR1BVIGZlYXR1cmVzLgorLSAgc3RhdGljIGJvb2wgR3B1
QmxhY2tsaXN0ZWRPbkJvdCgpOworIH07CisgCisgfSAgLy8gbmFtZXNwYWNlIGdwdQorZGlmZiAt
cnVwTiBncHVfdGVzdF9leHBlY3RhdGlvbnNfcmV2ZXJ0ZWQvZ3B1X3Rlc3RfY29uZmlnX21hYy5o
IGdwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9jb25maWdfbWFjLmgKKy0tLSBncHVfdGVz
dF9leHBlY3RhdGlvbnNfcmV2ZXJ0ZWQvZ3B1X3Rlc3RfY29uZmlnX21hYy5oCTE5NjktMTItMzEg
MTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCisrKysgZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV90
ZXN0X2NvbmZpZ19tYWMuaAkyMDE1LTExLTMwIDIxOjU0OjMwLjIzOTI2NzYzNSAtMDUwMAorQEAg
LTAsMCArMSwyOCBAQAorKy8vCisrLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisrLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKysvLworKy8vIGdwdV90ZXN0X2NvbmZpZ19tYWMuaDoK
KysvLyAgIEhlbHBlciBmdW5jdGlvbnMgZm9yIGdwdV90ZXN0X2NvbmZpZyB0aGF0IGhhdmUgdG8g
YmUgY29tcGlsZWQgaW4gT2JqZWN0aXZlQysrCisrLy8KKysKKysjaWZuZGVmIEdQVV9URVNUX0VY
UEVDVEFUSU9OU19HUFVfVEVTVF9DT05GSUdfTUFDX0hfCisrI2RlZmluZSBHUFVfVEVTVF9FWFBF
Q1RBVElPTlNfR1BVX1RFU1RfQ09ORklHX01BQ19IXworKworKyNpbmNsdWRlICJncHVfaW5mby5o
IgorKworK25hbWVzcGFjZSBiYXNlIHsKKysKKytjbGFzcyBTeXNJbmZvCisreworKyAgcHVibGlj
OgorKyAgICBzdGF0aWMgdm9pZCBPcGVyYXRpbmdTeXN0ZW1WZXJzaW9uTnVtYmVycygKKysgICAg
ICAgIGludDMyICptYWpvcl92ZXJzaW9uLCBpbnQzMiAqbWlub3JfdmVyc2lvbiwgaW50MzIgKmJ1
Z2ZpeF92ZXJzaW9uKTsKKyt9OworKworK30gLy8gbmFtZXNwYWNlIGJhc2UKKysKKytncHU6OkdQ
VUluZm86OkdQVURldmljZSBHZXRBY3RpdmVHUFUoKTsKKysKKysjZW5kaWYgLy8gR1BVX1RFU1Rf
RVhQRUNUQVRJT05TX0dQVV9URVNUX0NPTkZJR19NQUNfSF8KK2RpZmYgLXJ1cE4gZ3B1X3Rlc3Rf
ZXhwZWN0YXRpb25zX3JldmVydGVkL2dwdV90ZXN0X2NvbmZpZ19tYWMubW0gZ3B1X3Rlc3RfZXhw
ZWN0YXRpb25zL2dwdV90ZXN0X2NvbmZpZ19tYWMubW0KKy0tLSBncHVfdGVzdF9leHBlY3RhdGlv
bnNfcmV2ZXJ0ZWQvZ3B1X3Rlc3RfY29uZmlnX21hYy5tbQkxOTY5LTEyLTMxIDE5OjAwOjAwLjAw
MDAwMDAwMCAtMDUwMAorKysrIGdwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9jb25maWdf
bWFjLm1tCTIwMTUtMTEtMzAgMjE6NTQ6MzAuMjM5MjY3NjM1IC0wNTAwCitAQCAtMCwwICsxLDY3
IEBACisrLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKysvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorKworKy8vIGdwdV90ZXN0X2NvbmZpZ19tYWMubW06CisrLy8gICBIZWxwZXIgZnVu
Y3Rpb25zIGZvciBncHVfdGVzdF9jb25maWcgdGhhdCBoYXZlIHRvIGJlIGNvbXBpbGVkIGluIE9i
amVjdGl2ZUMrKworKworKyNpbmNsdWRlICJncHVfdGVzdF9jb25maWdfbWFjLmgiCisrCisrI2lt
cG9ydCA8Q29jb2EvQ29jb2EuaD4KKysKKytuYW1lc3BhY2UgYmFzZSB7CisrCisrdm9pZCBTeXNJ
bmZvOjpPcGVyYXRpbmdTeXN0ZW1WZXJzaW9uTnVtYmVycygKKysgICAgaW50MzIgKm1ham9yX3Zl
cnNpb24sIGludDMyICptaW5vcl92ZXJzaW9uLCBpbnQzMiAqYnVnZml4X3ZlcnNpb24pCisrewor
KyNpZiBNQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IE1BQ19PU19YX1ZFUlNJT05fMTBf
OAorKyAgR2VzdGFsdChnZXN0YWx0U3lzdGVtVmVyc2lvbk1ham9yLCByZWludGVycHJldF9jYXN0
PFNJbnQzMio+KG1ham9yX3ZlcnNpb24pKTsKKysgIEdlc3RhbHQoZ2VzdGFsdFN5c3RlbVZlcnNp
b25NaW5vciwgcmVpbnRlcnByZXRfY2FzdDxTSW50MzIqPihtaW5vcl92ZXJzaW9uKSk7CisrICBH
ZXN0YWx0KGdlc3RhbHRTeXN0ZW1WZXJzaW9uQnVnRml4LCByZWludGVycHJldF9jYXN0PFNJbnQz
Mio+KGJ1Z2ZpeF92ZXJzaW9uKSk7CisrI2Vsc2UKKysgIE5TT3BlcmF0aW5nU3lzdGVtVmVyc2lv
biB2ZXJzaW9uID0gW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBvcGVyYXRpbmdTeXN0ZW1W
ZXJzaW9uXTsKKysgICptYWpvcl92ZXJzaW9uID0gdmVyc2lvbi5tYWpvclZlcnNpb247CisrICAq
bWlub3JfdmVyc2lvbiA9IHZlcnNpb24ubWlub3JWZXJzaW9uOworKyAgKmJ1Z2ZpeF92ZXJzaW9u
ID0gdmVyc2lvbi5wYXRjaFZlcnNpb247CisrI2VuZGlmCisrfQorKworK30gLy8gbmFtZXNwYWNl
IGJhc2UKKysKKytVSW50MzIgR2V0RW50cnlQcm9wZXJ0eShpb19yZWdpc3RyeV9lbnRyeV90IGVu
dHJ5LCBDRlN0cmluZ1JlZiBwcm9wZXJ0eV9uYW1lKSB7CisrICBDRlR5cGVSZWYgdHlwZSA9IElP
UmVnaXN0cnlFbnRyeVNlYXJjaENGUHJvcGVydHkoZW50cnksCisrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0lPU2VydmljZVBsYW5lLAorKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5X25h
bWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
a0NGQWxsb2NhdG9yRGVmYXVsdCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBrSU9SZWdpc3RyeUl0ZXJhdGVSZWN1cnNpdmVseSB8IGtJT1JlZ2lz
dHJ5SXRlcmF0ZVBhcmVudHMpOworKyAgQ0ZEYXRhUmVmIGRhdGEgPSByZWludGVycHJldF9jYXN0
PENGRGF0YVJlZj4odHlwZSk7CisrICBpZiAoIWRhdGEpIHsKKysgICAgQ0ZSZWxlYXNlKGRhdGEp
OworKyAgICByZXR1cm4gMDsKKysgIH0KKysKKysgIFVJbnQzMiB2YWx1ZSA9IDA7CisrICBjb25z
dCB1aW50MzJfdCogdmFsdWVQb2ludGVyID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJf
dCo+KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpOworKyAgaWYgKHZhbHVlUG9pbnRlciAhPSBOVUxM
KSB7CisrICAgIHZhbHVlID0gKnZhbHVlUG9pbnRlcjsKKysgIH0KKysgIENGUmVsZWFzZShkYXRh
KTsKKysgIHJldHVybiB2YWx1ZTsKKyt9CisrCisrZ3B1OjpHUFVJbmZvOjpHUFVEZXZpY2UgR2V0
QWN0aXZlR1BVKCkgeworKyAgZ3B1OjpHUFVJbmZvOjpHUFVEZXZpY2UgZ3B1OworKworKyAgLy8g
SWdub3JlIHRoZSBmYWN0IHRoYXQgQ0dEaXNwbGF5SU9TZXJ2aWNlUG9ydCBpcyBkZXByZWNhdGVk
IGFzIEFwcGxlCisrICAvLyBkaWQgbm90IHByb3ZpZGUgYSBnb29kIHJlcGxhY2VtZW50IGZvciBp
dCBhcyBvZiAxMC4xMC4KKysgIC8vIFRPRE8oY3dhbGxleikgcmV2aXNpdCB3aXRoIGxhdGVyIHN5
c3RlbXMKKysgICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisrICAjcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKKysgICAgaW9f
cmVnaXN0cnlfZW50cnlfdCBkc3BfcG9ydCA9IENHRGlzcGxheUlPU2VydmljZVBvcnQoa0NHRGly
ZWN0TWFpbkRpc3BsYXkpOworKyAgI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorKworKyAg
Z3B1LnZlbmRvcl9pZCA9IEdldEVudHJ5UHJvcGVydHkoZHNwX3BvcnQsIENGU1RSKCJ2ZW5kb3It
aWQiKSk7CisrICBncHUuZGV2aWNlX2lkID0gR2V0RW50cnlQcm9wZXJ0eShkc3BfcG9ydCwgQ0ZT
VFIoImRldmljZS1pZCIpKTsKKysgIHJldHVybiBncHU7CisrfQorKworZGlmZiAtcnVwTiBncHVf
dGVzdF9leHBlY3RhdGlvbnNfcmV2ZXJ0ZWQvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3BhcnNlci5j
YyBncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3BhcnNlci5jYwor
LS0tIGdwdV90ZXN0X2V4cGVjdGF0aW9uc19yZXZlcnRlZC9ncHVfdGVzdF9leHBlY3RhdGlvbnNf
cGFyc2VyLmNjCTIwMTYtMDgtMTIgMjE6MjM6NTQuODg0MTMyNDA1IC0wNDAwCisrKysgZ3B1X3Rl
c3RfZXhwZWN0YXRpb25zL2dwdV90ZXN0X2V4cGVjdGF0aW9uc19wYXJzZXIuY2MJMjAxNS0xMS0z
MCAyMTo1NDozMC4yMzkyNjc2MzUgLTA1MDAKK0BAIC0yLDE0ICsyLDQzIEBACisgLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCistI2luY2x1ZGUgImdw
dS9jb25maWcvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3BhcnNlci5oIgorKyNpbmNsdWRlICJncHVf
dGVzdF9leHBlY3RhdGlvbnNfcGFyc2VyLmgiCisgCistI2luY2x1ZGUgImJhc2UvZmlsZXMvZmls
ZV91dGlsLmgiCistI2luY2x1ZGUgImJhc2UvbG9nZ2luZy5oIgorLSNpbmNsdWRlICJiYXNlL3N0
cmluZ3Mvc3RyaW5nX251bWJlcl9jb252ZXJzaW9ucy5oIgorLSNpbmNsdWRlICJiYXNlL3N0cmlu
Z3Mvc3RyaW5nX3NwbGl0LmgiCistI2luY2x1ZGUgImJhc2Uvc3RyaW5ncy9zdHJpbmdfdXRpbC5o
IgorLSNpbmNsdWRlICJiYXNlL3N0cmluZ3Mvc3RyaW5ncHJpbnRmLmgiCisrI2luY2x1ZGUgImNv
bW1vbi9hbmdsZXV0aWxzLmgiCisrCisrbmFtZXNwYWNlIGJhc2UgeworKworK25hbWVzcGFjZSB7
CisrCisrYm9vbCBTdGFydHNXaXRoQVNDSUkoY29uc3Qgc3RkOjpzdHJpbmcmIHN0ciwKKysgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgc2VhcmNoLAorKyAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgY2FzZV9zZW5zaXRpdmUpIHsKKysgIEFTU0VSVCghY2FzZV9zZW5zaXRp
dmUpOworKyAgcmV0dXJuIHN0ci5jb21wYXJlKDAsIHNlYXJjaC5sZW5ndGgoKSwgc2VhcmNoKSA9
PSAwOworK30KKysKKyt0ZW1wbGF0ZSA8Y2xhc3MgQ2hhcj4gaW5saW5lIENoYXIgVG9Mb3dlckFT
Q0lJKENoYXIgYykgeworKyAgcmV0dXJuIChjID49ICdBJyAmJiBjIDw9ICdaJykgPyAoYyArICgn
YScgLSAnQScpKSA6IGM7CisrfQorKworK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZXI+Cisrc3RhdGlj
IGlubGluZSBib29sIERvTG93ZXJDYXNlRXF1YWxzQVNDSUkoSXRlciBhX2JlZ2luLAorKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXIgYV9lbmQsCisrICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYikgeworKyAg
Zm9yIChJdGVyIGl0ID0gYV9iZWdpbjsgaXQgIT0gYV9lbmQ7ICsraXQsICsrYikgeworKyAgICBp
ZiAoISpiIHx8IGJhc2U6OlRvTG93ZXJBU0NJSSgqaXQpICE9ICpiKQorKyAgICAgIHJldHVybiBm
YWxzZTsKKysgIH0KKysgIHJldHVybiAqYiA9PSAwOworK30KKysKKytib29sIExvd2VyQ2FzZUVx
dWFsc0FTQ0lJKGNvbnN0IHN0ZDo6c3RyaW5nJiBhLCBjb25zdCBjaGFyKiBiKSB7CisrICByZXR1
cm4gRG9Mb3dlckNhc2VFcXVhbHNBU0NJSShhLmJlZ2luKCksIGEuZW5kKCksIGIpOworK30KKysK
Kyt9IC8vIGFub255bW91cyBuYW1lc3BhY2UKKysKKyt9IC8vIG5hbWVzcGFjZSBiYXNlCisgCisg
bmFtZXNwYWNlIGdwdSB7CisgCitAQCAtMTQ2LDkgKzE3NSw5IEBAIGNvbnN0IGNoYXIqIGtFcnJv
ck1lc3NhZ2VbXSA9IHsKKyB9OworIAorIFRva2VuIFBhcnNlVG9rZW4oY29uc3Qgc3RkOjpzdHJp
bmcmIHdvcmQpIHsKKy0gIGlmIChiYXNlOjpTdGFydHNXaXRoKHdvcmQsICIvLyIsIGJhc2U6OkNv
bXBhcmVDYXNlOjpJTlNFTlNJVElWRV9BU0NJSSkpCisrICBpZiAoYmFzZTo6U3RhcnRzV2l0aEFT
Q0lJKHdvcmQsICIvLyIsIGZhbHNlKSkKKyAgICAgcmV0dXJuIGtUb2tlbkNvbW1lbnQ7CistICBp
ZiAoYmFzZTo6U3RhcnRzV2l0aCh3b3JkLCAiMHgiLCBiYXNlOjpDb21wYXJlQ2FzZTo6SU5TRU5T
SVRJVkVfQVNDSUkpKQorKyAgaWYgKGJhc2U6OlN0YXJ0c1dpdGhBU0NJSSh3b3JkLCAiMHgiLCBm
YWxzZSkpCisgICAgIHJldHVybiBrQ29uZmlnR1BVRGV2aWNlSUQ7CisgCisgICBmb3IgKGludDMy
IGkgPSAwOyBpIDwga051bWJlck9mRXhhY3RNYXRjaFRva2VuczsgKytpKSB7CitAQCAtMTc2LDEw
ICsyMDUsMTAgQEAgYm9vbCBOYW1lc01hdGNoaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiByZQorIAor
IEdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXI6OkdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXIoKSB7
CisgICAvLyBTb21lIHNhbml0eSBjaGVjay4KKy0gIERDSEVDS19FUShzdGF0aWNfY2FzdDx1bnNp
Z25lZCBpbnQ+KGtOdW1iZXJPZkV4YWN0TWF0Y2hUb2tlbnMpLAorLSAgICAgICAgICAgIHNpemVv
ZihrVG9rZW5EYXRhKSAvIHNpemVvZihrVG9rZW5EYXRhWzBdKSk7CistICBEQ0hFQ0tfRVEoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgaW50PihrTnVtYmVyT2ZFcnJvcnMpLAorLSAgICAgICAgICAgIHNp
emVvZihrRXJyb3JNZXNzYWdlKSAvIHNpemVvZihrRXJyb3JNZXNzYWdlWzBdKSk7CisrICBzdGF0
aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oa051bWJlck9mRXhhY3RNYXRjaFRv
a2VucykgPT0KKysgICAgICAgICAgICAgICAgc2l6ZW9mKGtUb2tlbkRhdGEpIC8gc2l6ZW9mKGtU
b2tlbkRhdGFbMF0pLCAic2FuaXR5IGNoZWNrIik7CisrICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19j
YXN0PHVuc2lnbmVkIGludD4oa051bWJlck9mRXJyb3JzKSA9PQorKyAgICAgICAgICAgICAgICBz
aXplb2Yoa0Vycm9yTWVzc2FnZSkgLyBzaXplb2Yoa0Vycm9yTWVzc2FnZVswXSksICJzYW5pdHkg
Y2hlY2siKTsKKyB9CisgCisgR1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNlcjo6fkdQVVRlc3RFeHBl
Y3RhdGlvbnNQYXJzZXIoKSB7CitAQCAtMjA0LDggKzIzMyw4IEBAIGJvb2wgR1BVVGVzdEV4cGVj
dGF0aW9uc1BhcnNlcjo6TG9hZFRlc3QKKyAgIHJldHVybiBydDsKKyB9CisgCistYm9vbCBHUFVU
ZXN0RXhwZWN0YXRpb25zUGFyc2VyOjpMb2FkVGVzdEV4cGVjdGF0aW9ucygKKy0gICAgY29uc3Qg
YmFzZTo6RmlsZVBhdGgmIHBhdGgpIHsKKytib29sIEdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXI6
OkxvYWRUZXN0RXhwZWN0YXRpb25zRnJvbUZpbGUoCisrICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBw
YXRoKSB7CisgICBlbnRyaWVzXy5jbGVhcigpOworICAgZXJyb3JfbWVzc2FnZXNfLmNsZWFyKCk7
CisgCitAQCAtMzk5LDcgKzQyOCw3IEBAIGJvb2wgR1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNlcjo6
UGFyc2VMaW4KKyAgICAgICAgICAgc3RhZ2UrKzsKKyAgICAgICAgIGJyZWFrOworICAgICAgIGRl
ZmF1bHQ6CistICAgICAgICBEQ0hFQ0soZmFsc2UpOworKyAgICAgICAgVU5SRUFDSEFCTEUoKTsK
KyAgICAgICAgIGJyZWFrOworICAgICB9CisgICB9CitAQCAtNDg4LDcgKzUxNyw3IEBAIGJvb2wg
R1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNlcjo6VXBkYXRlVGUKKyAgICAgICBjb25maWctPnNldF9h
cGkoY29uZmlnLT5hcGkoKSB8IGtUb2tlbkRhdGFbdG9rZW5dLmZsYWcpOworICAgICAgIGJyZWFr
OworICAgICBkZWZhdWx0OgorLSAgICAgIERDSEVDSyhmYWxzZSk7CisrICAgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICAgICBicmVhazsKKyAgIH0KKyAgIHJldHVybiB0cnVlOworZGlmZiAtcnVwTiBn
cHVfdGVzdF9leHBlY3RhdGlvbnNfcmV2ZXJ0ZWQvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3BhcnNl
ci5oIGdwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9leHBlY3RhdGlvbnNfcGFyc2VyLmgK
Ky0tLSBncHVfdGVzdF9leHBlY3RhdGlvbnNfcmV2ZXJ0ZWQvZ3B1X3Rlc3RfZXhwZWN0YXRpb25z
X3BhcnNlci5oCTIwMTYtMDgtMTIgMjE6MjM6NTQuODg0MTMyNDA1IC0wNDAwCisrKysgZ3B1X3Rl
c3RfZXhwZWN0YXRpb25zL2dwdV90ZXN0X2V4cGVjdGF0aW9uc19wYXJzZXIuaAkyMDE1LTExLTMw
IDIxOjU0OjMwLjIzOTI2NzYzNSAtMDUwMAorQEAgLTgsMTAgKzgsOCBAQAorICNpbmNsdWRlIDxz
dHJpbmc+CisgI2luY2x1ZGUgPHZlY3Rvcj4KKyAKKy0jaW5jbHVkZSAiYmFzZS9iYXNpY3R5cGVz
LmgiCistI2luY2x1ZGUgImJhc2UvZmlsZXMvZmlsZV9wYXRoLmgiCistI2luY2x1ZGUgImdwdS9j
b25maWcvZ3B1X3Rlc3RfY29uZmlnLmgiCistI2luY2x1ZGUgImdwdS9ncHVfZXhwb3J0LmgiCisr
I2luY2x1ZGUgImFuZ2xlX2NvbmZpZy5oIgorKyNpbmNsdWRlICJncHVfdGVzdF9jb25maWcuaCIK
KyAKKyBuYW1lc3BhY2UgZ3B1IHsKKyAKK0BAIC0zMiw3ICszMCw3IEBAIGNsYXNzIEdQVV9FWFBP
UlQgR1BVVGVzdEV4cGVjdGF0aW9uc1BhcnMKKyAgIC8vIHNhdmUgYWxsIHRoZSBlbnRyaWVzLiBP
dGhlcndpc2UsIGdlbmVyYXRlIGVycm9yIG1lc3NhZ2VzLgorICAgLy8gUmV0dXJuIHRydWUgaWYg
cGFyc2luZyBzdWNjZWVkcy4KKyAgIGJvb2wgTG9hZFRlc3RFeHBlY3RhdGlvbnMoY29uc3Qgc3Rk
OjpzdHJpbmcmIGRhdGEpOworLSAgYm9vbCBMb2FkVGVzdEV4cGVjdGF0aW9ucyhjb25zdCBiYXNl
OjpGaWxlUGF0aCYgcGF0aCk7CisrICBib29sIExvYWRUZXN0RXhwZWN0YXRpb25zRnJvbUZpbGUo
Y29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgpOworIAorICAgLy8gUXVlcnkgZXJyb3IgbWVzc2FnZXMg
ZnJvbSB0aGUgbGFzdCBMb2FkVGVzdEV4cGVjdGF0aW9ucygpIGNhbGwuCisgICBjb25zdCBzdGQ6
OnZlY3RvcjxzdGQ6OnN0cmluZz4mIEdldEVycm9yTWVzc2FnZXMoKSBjb25zdDsKK2RpZmYgLXJ1
cE4gZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3JldmVydGVkL0hvd1RvTWFrZUNoYW5nZXMubWQgZ3B1
X3Rlc3RfZXhwZWN0YXRpb25zL0hvd1RvTWFrZUNoYW5nZXMubWQKKy0tLSBncHVfdGVzdF9leHBl
Y3RhdGlvbnNfcmV2ZXJ0ZWQvSG93VG9NYWtlQ2hhbmdlcy5tZAkxOTY5LTEyLTMxIDE5OjAwOjAw
LjAwMDAwMDAwMCAtMDUwMAorKysrIGdwdV90ZXN0X2V4cGVjdGF0aW9ucy9Ib3dUb01ha2VDaGFu
Z2VzLm1kCTIwMTYtMDktMDkgMTY6Mjc6NTYuNTc1ODA5OTIxIC0wNDAwCitAQCAtMCwwICsxLDIy
IEBACisrQmVjYXVzZSB0aGUgYGBgZ3B1X3Rlc3RfZXhwZWN0YXRpb25zYGBgIGRpcmVjdG9yeSBp
cyBiYXNlZCBvbiBwYXJ0cyBvZiBDaHJvbWl1bSdzIGBgYGdwdS9jb25maWdgYGAKKytkaXJlY3Rv
cnksIHdlIHdhbnQgdG8ga2VlcCBhIHBhdGNoIG9mIHRoZSBjaGFuZ2VzIGFkZGVkIHRvIG1ha2Ug
aXQgY29tcGlsZSB3aXRoIEFOR0xFLiBUaGlzCisrd2lsbCBhbGxvdyB1cyB0byBtZXJnZSBDaHJv
bWl1bSBjaGFuZ2VzIGVhc2lseSBpbiBvdXIgYGBgZ3B1X3Rlc3RfZXhwZWN0YXRpb25zYGBgLgor
KworK0luIG9yZGVyIHRvIG1ha2UgYSBjaGFuZ2UgdG8gdGhpcyBkaXJlY3RvcnksIGRvIHRoZSBm
b2xsb3dpbmc6CisrCisrICogY29weSB0aGUgZGlyZWN0b3J5IHNvbWV3aGVyZSBsaWtlIGluIGBg
YGdwdV90ZXN0X2V4cGVjdGF0aW9uc19yZXZlcnRlZGBgYAorKyAqIGluIGBgYGdwdV90ZXN0X2V4
cGVjdGF0aW9uc19yZXZlcnRlZGBgYCBydW4gYGBgcGF0Y2ggLXAgMSAtUiA8IGFuZ2xlLW1vZHMu
cGF0Y2hgYGAKKysgKiBkbyB5b3VyIGNoYW5nZXMgaW4gYGBgZ3B1X3Rlc3RfZXhwZWN0YXRpb25z
YGBgCisrICogZGVsZXRlIGFuZ2xlLW1vZHMucGF0Y2ggaW4gYm90aCBkaXJlY3RvcmllcworKyAq
IHJ1biBgYGBkaWZmIC1ydXBOIGdwdV90ZXN0X2V4cGVjdGF0aW9uc19yZXZlcnRlZCBncHVfdGVz
dF9leHBlY3RhdGlvbnMgPiBhbmdsZS1tb2RzLnBhdGNoYGBgCisrICogY29weSBgYGBhbmdsZS1t
b2RzLnBhdGNoYGBgIGluIGBgYGdwdV90ZXN0X2V4cGVjdGF0aW9uc2BgYAorKworK0hvdyB0byB1
cGRhdGUgZnJvbSBDaHJvbWl1bToKKysKKysgKiBgYGBnaXQgYXBwbHkgLVIgYW5nbGUtbW9kcy5w
YXRjaGBgYCwgYGBgZ2l0IGFkZCAuIC11YGBgLCBgYGBnaXQgY29tbWl0YGBgCisrICogQ29weSBv
dmVyIENocm9taXVtIGZpbGVzLCBgYGBnaXQgYWRkIC4gLXVgYGAsIGBgYGdpdCBjb21taXRgYGAK
KysgKiBgYGBnaXQgcmV2ZXJ0IEhFQUR+YGBgCisrICogYGBgcm0gYW5nbGUtbW9kcy5wYXRjaGBg
YAorKyAqIGBgYGdpdCBkaWZmIEhFQUR+IChgKWxzKGApID4gYW5nbGUtbW9kcy5wYXRjaGBgYCxg
YGBnaXQgYWRkIGFuZ2xlLW1vZHMucGF0Y2hgYGAsIGBgYGdpdCBjb21taXQgLS1hbWVuZGBgYAor
KyAqIGBgYGdpdCByZWJhc2UgLWlgYGAgdG8gc3F1YXNoIHRoZSB0aHJlZSBwYXRjaGVzIGludG8g
b25lLgorKwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3Bh
cnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9hbmdsZV9jb25maWcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvZ3B1X3Rlc3RfZXhw
ZWN0YXRpb25zL2FuZ2xlX2NvbmZpZy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBlY3RhdGlvbnMvYW5n
bGVfY29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NiBAQAorLy8KKy8vIENvcHly
aWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8v
IGFuZ2xlX2NvbmZpZy5oOgorLy8gICBIZWxwZXJzIGZvciBpbXBvcnRpbmcgdGhlIGdwdSB0ZXN0
IGV4cGVjdGF0aW9ucyBwYWNrYWdlIGZyb20gQ2hyb21lLgorLy8KKworI2lmbmRlZiBHUFVfVEVT
VF9FWFBFQ1RBVElPTlNfQU5HTEVfQ09ORklHX0hfCisjZGVmaW5lIEdQVV9URVNUX0VYUEVDVEFU
SU9OU19BTkdMRV9DT05GSUdfSF8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorCisjaW5jbHVkZSA8
aW9zdHJlYW0+CisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKyNpbmNsdWRlICJjb21tb24v
c3RyaW5nX3V0aWxzLmgiCisKKyNkZWZpbmUgRENIRUNLX0VRKEEsQikgQVNTRVJUKChBKSA9PSAo
QikpCisjZGVmaW5lIERDSEVDS19ORShBLEIpIEFTU0VSVCgoQSkgIT0gKEIpKQorI2RlZmluZSBE
Q0hFQ0soWCkgQVNTRVJUKFgpCisjZGVmaW5lIExPRyhYKSBzdGQ6OmNlcnIKKworI2RlZmluZSBH
UFVfRVhQT1JUCisKK3R5cGVkZWYgaW50MzJfdCBpbnQzMjsKK3R5cGVkZWYgdWludDMyX3QgdWlu
dDMyOwordHlwZWRlZiBpbnQ2NF90IGludDY0OwordHlwZWRlZiB1aW50NjRfdCB1aW50NjQ7CisK
Ky8vIFNoaW0gQ2hyb21pdW0ncyBiYXNlIGJ5IGltcG9ydGluZyBmdW5jdGlvbnMgaW4gdGhlIGJh
c2UgbmFtZXNwYWNlLgorbmFtZXNwYWNlIGJhc2UKK3sKKyAgICB1c2luZyBhbmdsZTo6a1doaXRl
c3BhY2VBU0NJSTsKKyAgICB1c2luZyBhbmdsZTo6VFJJTV9XSElURVNQQUNFOworICAgIHVzaW5n
IGFuZ2xlOjpLRUVQX1dISVRFU1BBQ0U7CisgICAgdXNpbmcgYW5nbGU6OlNQTElUX1dBTlRfQUxM
OworICAgIHVzaW5nIGFuZ2xlOjpTUExJVF9XQU5UX05PTkVNUFRZOworICAgIHVzaW5nIGFuZ2xl
OjpTcGxpdFN0cmluZzsKKyAgICB1c2luZyBhbmdsZTo6U3BsaXRTdHJpbmdBbG9uZ1doaXRlc3Bh
Y2U7CisgICAgdXNpbmcgYW5nbGU6OkhleFN0cmluZ1RvVUludDsKKyAgICB1c2luZyBhbmdsZTo6
UmVhZEZpbGVUb1N0cmluZzsKKworICAgIC8vIFN0cmluZ1ByaW50ZiBpcyBjYWxsZWQgZGlmZmVy
ZW50bHkgaW4gQU5HTEUgYnV0IHVzaW5nIGNhbm5vdCBjaGFuZ2UKKyAgICAvLyB0aGUgbmFtZSBv
ZiB0aGUgaW1wb3J0ZWQgZnVuY3Rpb24uIFVzZSBhIGRlZmluZSB0byBjaGFuZ2UgdGhlIG5hbWUu
CisgICAgdXNpbmcgOjpGb3JtYXRTdHJpbmc7CisgICAgI2RlZmluZSBTdHJpbmdQcmludGYgRm9y
bWF0U3RyaW5nCit9CisKKy8vIFRPRE8oam1hZGlsbCk6IG90aGVyIHBsYXRmb3JtcworLy8gY2xh
bmctZm9ybWF0IG9mZgorI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9XSU42NCkKKyMg
ICAgZGVmaW5lIE9TX1dJTgorI2VsaWYgZGVmaW5lZChBTkRST0lEKQorIyAgICBkZWZpbmUgT1Nf
QU5EUk9JRAorI2VsaWYgZGVmaW5lZChfX2xpbnV4X18pCisjICAgIGRlZmluZSBPU19MSU5VWAor
I2VsaWYgZGVmaW5lZChfX0FQUExFX18pCisjICAgIGRlZmluZSBPU19NQUNPU1gKKyNlbHNlCisj
ICAgIGVycm9yICJVbnN1cHBvcnRlZCBwbGF0Zm9ybSIKKyNlbmRpZgorLy8gY2xhbmctZm9ybWF0
IG9uCisKKyNlbmRpZgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Ro
aXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfaW5mby5jYwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvZ3B1X3Rlc3Rf
ZXhwZWN0YXRpb25zL2dwdV9pbmZvLmNjCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1
X2luZm8uY2MJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzYgQEAKKy8vIENvcHlyaWdodCAo
YykgMjAxMiBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKyNpbmNsdWRlICJn
cHVfaW5mby5oIgorCituYW1lc3BhY2UgeworCit2b2lkIEVudW1lcmF0ZUdQVURldmljZShjb25z
dCBncHU6OkdQVUluZm86OkdQVURldmljZSYgZGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgZ3B1OjpHUFVJbmZvOjpFbnVtZXJhdG9yKiBlbnVtZXJhdG9yKSB7CisgIGVudW1lcmF0b3It
PkJlZ2luR1BVRGV2aWNlKCk7CisgIGVudW1lcmF0b3ItPkFkZEludCgidmVuZG9ySWQiLCBkZXZp
Y2UudmVuZG9yX2lkKTsKKyAgZW51bWVyYXRvci0+QWRkSW50KCJkZXZpY2VJZCIsIGRldmljZS5k
ZXZpY2VfaWQpOworICBlbnVtZXJhdG9yLT5BZGRCb29sKCJhY3RpdmUiLCBkZXZpY2UuYWN0aXZl
KTsKKyAgZW51bWVyYXRvci0+QWRkU3RyaW5nKCJ2ZW5kb3JTdHJpbmciLCBkZXZpY2UudmVuZG9y
X3N0cmluZyk7CisgIGVudW1lcmF0b3ItPkFkZFN0cmluZygiZGV2aWNlU3RyaW5nIiwgZGV2aWNl
LmRldmljZV9zdHJpbmcpOworICBlbnVtZXJhdG9yLT5FbmRHUFVEZXZpY2UoKTsKK30KKworfSAg
Ly8gbmFtZXNwYWNlCisKK25hbWVzcGFjZSBncHUgeworCitHUFVJbmZvOjpHUFVEZXZpY2U6OkdQ
VURldmljZSgpCisgICAgOiB2ZW5kb3JfaWQoMCksCisgICAgICBkZXZpY2VfaWQoMCksCisgICAg
ICBhY3RpdmUoZmFsc2UpIHsKK30KKworR1BVSW5mbzo6R1BVRGV2aWNlOjp+R1BVRGV2aWNlKCkg
eyB9CisKK0dQVUluZm86OkdQVUluZm8oKQorICAgIDogb3B0aW11cyhmYWxzZSksCisgICAgICBh
bWRfc3dpdGNoYWJsZShmYWxzZSksCisgICAgICBsZW5vdm9fZGN1dGUoZmFsc2UpLAorICAgICAg
YWRhcHRlcl9sdWlkKDApLAorICAgICAgZ2xfcmVzZXRfbm90aWZpY2F0aW9uX3N0cmF0ZWd5KDAp
LAorICAgICAgY2FuX2xvc2VfY29udGV4dChmYWxzZSksCisgICAgICBzb2Z0d2FyZV9yZW5kZXJp
bmcoZmFsc2UpLAorICAgICAgZGlyZWN0X3JlbmRlcmluZyh0cnVlKSwKKyAgICAgIHNhbmRib3hl
ZChmYWxzZSksCisgICAgICBwcm9jZXNzX2NyYXNoX2NvdW50KDApLAorICAgICAgaW5fcHJvY2Vz
c19ncHUodHJ1ZSksCisgICAgICBiYXNpY19pbmZvX3N0YXRlKGtDb2xsZWN0SW5mb05vbmUpLAor
ICAgICAgY29udGV4dF9pbmZvX3N0YXRlKGtDb2xsZWN0SW5mb05vbmUpLAorICAgICAganBlZ19k
ZWNvZGVfYWNjZWxlcmF0b3Jfc3VwcG9ydGVkKGZhbHNlKSB7Cit9CisKK0dQVUluZm86On5HUFVJ
bmZvKCkgeyB9CisKK3ZvaWQgR1BVSW5mbzo6RW51bWVyYXRlRmllbGRzKEVudW1lcmF0b3IqIGVu
dW1lcmF0b3IpIGNvbnN0IHsKKyAgc3RydWN0IEdQVUluZm9Lbm93bkZpZWxkcyB7CisgICAgYm9v
bCBvcHRpbXVzOworICAgIGJvb2wgYW1kX3N3aXRjaGFibGU7CisgICAgYm9vbCBsZW5vdm9fZGN1
dGU7CisgICAgR1BVRGV2aWNlIGdwdTsKKyAgICBzdGQ6OnZlY3RvcjxHUFVEZXZpY2U+IHNlY29u
ZGFyeV9ncHVzOworICAgIHVpbnQ2NCBhZGFwdGVyX2x1aWQ7CisgICAgc3RkOjpzdHJpbmcgZHJp
dmVyX3ZlbmRvcjsKKyAgICBzdGQ6OnN0cmluZyBkcml2ZXJfdmVyc2lvbjsKKyAgICBzdGQ6OnN0
cmluZyBkcml2ZXJfZGF0ZTsKKyAgICBzdGQ6OnN0cmluZyBwaXhlbF9zaGFkZXJfdmVyc2lvbjsK
KyAgICBzdGQ6OnN0cmluZyB2ZXJ0ZXhfc2hhZGVyX3ZlcnNpb247CisgICAgc3RkOjpzdHJpbmcg
bWF4X21zYWFfc2FtcGxlczsKKyAgICBzdGQ6OnN0cmluZyBtYWNoaW5lX21vZGVsX25hbWU7Cisg
ICAgc3RkOjpzdHJpbmcgbWFjaGluZV9tb2RlbF92ZXJzaW9uOworICAgIHN0ZDo6c3RyaW5nIGds
X3ZlcnNpb25fc3RyaW5nOworICAgIHN0ZDo6c3RyaW5nIGdsX3ZlbmRvcjsKKyAgICBzdGQ6OnN0
cmluZyBnbF9yZW5kZXJlcjsKKyAgICBzdGQ6OnN0cmluZyBnbF9leHRlbnNpb25zOworICAgIHN0
ZDo6c3RyaW5nIGdsX3dzX3ZlbmRvcjsKKyAgICBzdGQ6OnN0cmluZyBnbF93c192ZXJzaW9uOwor
ICAgIHN0ZDo6c3RyaW5nIGdsX3dzX2V4dGVuc2lvbnM7CisgICAgdWludDMyIGdsX3Jlc2V0X25v
dGlmaWNhdGlvbl9zdHJhdGVneTsKKyAgICBib29sIGNhbl9sb3NlX2NvbnRleHQ7CisgICAgYm9v
bCBzb2Z0d2FyZV9yZW5kZXJpbmc7CisgICAgYm9vbCBkaXJlY3RfcmVuZGVyaW5nOworICAgIGJv
b2wgc2FuZGJveGVkOworICAgIGludCBwcm9jZXNzX2NyYXNoX2NvdW50OworICAgIGJvb2wgaW5f
cHJvY2Vzc19ncHU7CisgICAgQ29sbGVjdEluZm9SZXN1bHQgYmFzaWNfaW5mb19zdGF0ZTsKKyAg
ICBDb2xsZWN0SW5mb1Jlc3VsdCBjb250ZXh0X2luZm9fc3RhdGU7CisgICAgYm9vbCBqcGVnX2Rl
Y29kZV9hY2NlbGVyYXRvcl9zdXBwb3J0ZWQ7CisgIH07CisKKyAgLy8gSWYgdGhpcyBhc3NlcnQg
ZmFpbHMgdGhlbiBtb3N0IGxpa2VseSBzb21ldGhpbmcgYmVsb3cgbmVlZHMgdG8gYmUgdXBkYXRl
ZC4KKyAgLy8gTm90ZSB0aGF0IHRoaXMgYXNzZXJ0IGlzIG9ubHkgYXBwcm94aW1hdGUuIElmIGEg
bmV3IGZpZWxkIGlzIGFkZGVkIHRvCisgIC8vIEdQVUluZm8gd2hpY2ggZml0cyB3aXRoaW4gdGhl
IGN1cnJlbnQgcGFkZGluZyB0aGVuIGl0IHdpbGwgbm90IGJlIGNhdWdodC4KKyAgc3RhdGljX2Fz
c2VydCgKKyAgICAgIHNpemVvZihHUFVJbmZvKSA9PSBzaXplb2YoR1BVSW5mb0tub3duRmllbGRz
KSwKKyAgICAgICJmaWVsZHMgaGF2ZSBjaGFuZ2VkIGluIEdQVUluZm8sIEdQVUluZm9Lbm93bkZp
ZWxkcyBtdXN0IGJlIHVwZGF0ZWQiKTsKKworICAvLyBSZXF1aXJlZCBmaWVsZHMgKGFjY29yZGlu
ZyB0byBEZXZUb29scyBwcm90b2NvbCkgZmlyc3QuCisgIGVudW1lcmF0b3ItPkFkZFN0cmluZygi
bWFjaGluZU1vZGVsTmFtZSIsIG1hY2hpbmVfbW9kZWxfbmFtZSk7CisgIGVudW1lcmF0b3ItPkFk
ZFN0cmluZygibWFjaGluZU1vZGVsVmVyc2lvbiIsIG1hY2hpbmVfbW9kZWxfdmVyc2lvbik7Cisg
IEVudW1lcmF0ZUdQVURldmljZShncHUsIGVudW1lcmF0b3IpOworICBmb3IgKGNvbnN0IGF1dG8m
IHNlY29uZGFyeV9ncHU6IHNlY29uZGFyeV9ncHVzKQorICAgIEVudW1lcmF0ZUdQVURldmljZShz
ZWNvbmRhcnlfZ3B1LCBlbnVtZXJhdG9yKTsKKworICBlbnVtZXJhdG9yLT5CZWdpbkF1eEF0dHJp
YnV0ZXMoKTsKKyAgZW51bWVyYXRvci0+QWRkQm9vbCgib3B0aW11cyIsIG9wdGltdXMpOworICBl
bnVtZXJhdG9yLT5BZGRCb29sKCJhbWRTd2l0Y2hhYmxlIiwgYW1kX3N3aXRjaGFibGUpOworICBl
bnVtZXJhdG9yLT5BZGRCb29sKCJsZW5vdm9EY3V0ZSIsIGxlbm92b19kY3V0ZSk7CisgIGVudW1l
cmF0b3ItPkFkZEludDY0KCJhZGFwdGVyTHVpZCIsIGFkYXB0ZXJfbHVpZCk7CisgIGVudW1lcmF0
b3ItPkFkZFN0cmluZygiZHJpdmVyVmVuZG9yIiwgZHJpdmVyX3ZlbmRvcik7CisgIGVudW1lcmF0
b3ItPkFkZFN0cmluZygiZHJpdmVyVmVyc2lvbiIsIGRyaXZlcl92ZXJzaW9uKTsKKyAgZW51bWVy
YXRvci0+QWRkU3RyaW5nKCJkcml2ZXJEYXRlIiwgZHJpdmVyX2RhdGUpOworICBlbnVtZXJhdG9y
LT5BZGRTdHJpbmcoInBpeGVsU2hhZGVyVmVyc2lvbiIsIHBpeGVsX3NoYWRlcl92ZXJzaW9uKTsK
KyAgZW51bWVyYXRvci0+QWRkU3RyaW5nKCJ2ZXJ0ZXhTaGFkZXJWZXJzaW9uIiwgdmVydGV4X3No
YWRlcl92ZXJzaW9uKTsKKyAgZW51bWVyYXRvci0+QWRkU3RyaW5nKCJtYXhNc2FhU2FtcGxlcyIs
IG1heF9tc2FhX3NhbXBsZXMpOworICBlbnVtZXJhdG9yLT5BZGRTdHJpbmcoImdsVmVyc2lvbiIs
IGdsX3ZlcnNpb24pOworICBlbnVtZXJhdG9yLT5BZGRTdHJpbmcoImdsVmVuZG9yIiwgZ2xfdmVu
ZG9yKTsKKyAgZW51bWVyYXRvci0+QWRkU3RyaW5nKCJnbFJlbmRlcmVyIiwgZ2xfcmVuZGVyZXIp
OworICBlbnVtZXJhdG9yLT5BZGRTdHJpbmcoImdsRXh0ZW5zaW9ucyIsIGdsX2V4dGVuc2lvbnMp
OworICBlbnVtZXJhdG9yLT5BZGRTdHJpbmcoImdsV3NWZW5kb3IiLCBnbF93c192ZW5kb3IpOwor
ICBlbnVtZXJhdG9yLT5BZGRTdHJpbmcoImdsV3NWZXJzaW9uIiwgZ2xfd3NfdmVyc2lvbik7Cisg
IGVudW1lcmF0b3ItPkFkZFN0cmluZygiZ2xXc0V4dGVuc2lvbnMiLCBnbF93c19leHRlbnNpb25z
KTsKKyAgZW51bWVyYXRvci0+QWRkSW50KAorICAgICAgImdsUmVzZXROb3RpZmljYXRpb25TdHJh
dGVneSIsCisgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGdsX3Jlc2V0X25vdGlmaWNhdGlvbl9zdHJh
dGVneSkpOworICBlbnVtZXJhdG9yLT5BZGRCb29sKCJjYW5fbG9zZV9jb250ZXh0IiwgY2FuX2xv
c2VfY29udGV4dCk7CisgIC8vIFRPRE8oa2JyKTogYWRkIHBlcmZvcm1hbmNlX3N0YXRzLgorICBl
bnVtZXJhdG9yLT5BZGRCb29sKCJzb2Z0d2FyZVJlbmRlcmluZyIsIHNvZnR3YXJlX3JlbmRlcmlu
Zyk7CisgIGVudW1lcmF0b3ItPkFkZEJvb2woImRpcmVjdFJlbmRlcmluZyIsIGRpcmVjdF9yZW5k
ZXJpbmcpOworICBlbnVtZXJhdG9yLT5BZGRCb29sKCJzYW5kYm94ZWQiLCBzYW5kYm94ZWQpOwor
ICBlbnVtZXJhdG9yLT5BZGRJbnQoInByb2Nlc3NDcmFzaENvdW50IiwgcHJvY2Vzc19jcmFzaF9j
b3VudCk7CisgIGVudW1lcmF0b3ItPkFkZEJvb2woImluUHJvY2Vzc0dwdSIsIGluX3Byb2Nlc3Nf
Z3B1KTsKKyAgZW51bWVyYXRvci0+QWRkSW50KCJiYXNpY0luZm9TdGF0ZSIsIGJhc2ljX2luZm9f
c3RhdGUpOworICBlbnVtZXJhdG9yLT5BZGRJbnQoImNvbnRleHRJbmZvU3RhdGUiLCBjb250ZXh0
X2luZm9fc3RhdGUpOworICAvLyBUT0RPKGticik6IGFkZCBkeF9kaWFnbm9zdGljcyBvbiBXaW5k
b3dzLgorICBlbnVtZXJhdG9yLT5BZGRCb29sKCJqcGVnRGVjb2RlQWNjZWxlcmF0b3JTdXBwb3J0
ZWQiLAorICAgICAganBlZ19kZWNvZGVfYWNjZWxlcmF0b3Jfc3VwcG9ydGVkKTsKKyAgZW51bWVy
YXRvci0+RW5kQXV4QXR0cmlidXRlcygpOworfQorCit9ICAvLyBuYW1lc3BhY2UgZ3B1CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvZ3B1X3Rlc3Rf
ZXhwZWN0YXRpb25zL2dwdV9pbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfaW5m
by5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90
aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X2luZm8uaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDIzMyBAQAorLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBDaHJvbWl1bSBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKworI2lmbmRlZiBHUFVfQ09ORklHX0dQVV9JTkZPX0hfCisj
ZGVmaW5lIEdQVV9DT05GSUdfR1BVX0lORk9fSF8KKworLy8gUHJvdmlkZXMgYWNjZXNzIHRvIHRo
ZSBHUFUgaW5mb3JtYXRpb24gZm9yIHRoZSBzeXN0ZW0KKy8vIG9uIHdoaWNoIGNocm9tZSBpcyBj
dXJyZW50bHkgcnVubmluZy4KKworI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx2ZWN0b3I+
CisKKyNpbmNsdWRlICJhbmdsZV9jb25maWcuaCIKKworbmFtZXNwYWNlIGdwdSB7CisKKy8vIFJl
c3VsdCBmb3IgdGhlIHZhcmlvdXMgQ29sbGVjdCpJbmZvKiBmdW5jdGlvbnMgYmVsb3cuCisvLyBG
YXRhbCBmYWlsdXJlcyBhcmUgZm9yIGNhc2VzIHdoZXJlIHdlIGNhbid0IGNyZWF0ZSBhIGNvbnRl
eHQgYXQgYWxsIG9yCisvLyBzb21ldGhpbmcsIG1ha2luZyB0aGUgdXNlIG9mIHRoZSBHUFUgaW1w
b3NzaWJsZS4KKy8vIE5vbi1mYXRhbCBmYWlsdXJlcyBhcmUgZm9yIGNhc2VzIHdoZXJlIHdlIGNv
dWxkIGdhdGhlciBtb3N0IGluZm8sIGJ1dCBtYXliZQorLy8gc29tZSBpcyBtaXNzaW5nIChlLmcu
IHVuYWJsZSB0byBwYXJzZSBhIHZlcnNpb24gc3RyaW5nIG9yIHRvIGRldGVjdCB0aGUgZXhhY3QK
Ky8vIG1vZGVsKS4KK2VudW0gQ29sbGVjdEluZm9SZXN1bHQgeworICBrQ29sbGVjdEluZm9Ob25l
ID0gMCwKKyAga0NvbGxlY3RJbmZvU3VjY2VzcyA9IDEsCisgIGtDb2xsZWN0SW5mb05vbkZhdGFs
RmFpbHVyZSA9IDIsCisgIGtDb2xsZWN0SW5mb0ZhdGFsRmFpbHVyZSA9IDMKK307CisKKy8vIFZp
ZGVvIHByb2ZpbGUuICBUaGlzICptdXN0KiBtYXRjaCBtZWRpYTo6VmlkZW9Db2RlY1Byb2ZpbGUu
CitlbnVtIFZpZGVvQ29kZWNQcm9maWxlIHsKKyAgVklERU9fQ09ERUNfUFJPRklMRV9VTktOT1dO
ID0gLTEsCisgIFZJREVPX0NPREVDX1BST0ZJTEVfTUlOID0gVklERU9fQ09ERUNfUFJPRklMRV9V
TktOT1dOLAorICBIMjY0UFJPRklMRV9CQVNFTElORSA9IDAsCisgIEgyNjRQUk9GSUxFX01BSU4g
PSAxLAorICBIMjY0UFJPRklMRV9FWFRFTkRFRCA9IDIsCisgIEgyNjRQUk9GSUxFX0hJR0ggPSAz
LAorICBIMjY0UFJPRklMRV9ISUdIMTBQUk9GSUxFID0gNCwKKyAgSDI2NFBST0ZJTEVfSElHSDQy
MlBST0ZJTEUgPSA1LAorICBIMjY0UFJPRklMRV9ISUdINDQ0UFJFRElDVElWRVBST0ZJTEUgPSA2
LAorICBIMjY0UFJPRklMRV9TQ0FMQUJMRUJBU0VMSU5FID0gNywKKyAgSDI2NFBST0ZJTEVfU0NB
TEFCTEVISUdIID0gOCwKKyAgSDI2NFBST0ZJTEVfU1RFUkVPSElHSCA9IDksCisgIEgyNjRQUk9G
SUxFX01VTFRJVklFV0hJR0ggPSAxMCwKKyAgVlA4UFJPRklMRV9BTlkgPSAxMSwKKyAgVlA5UFJP
RklMRV9BTlkgPSAxMiwKKyAgVklERU9fQ09ERUNfUFJPRklMRV9NQVggPSBWUDlQUk9GSUxFX0FO
WSwKK307CisKK3N0cnVjdCBHUFVfRVhQT1JUIEdQVUluZm8geworICBzdHJ1Y3QgR1BVX0VYUE9S
VCBHUFVEZXZpY2UgeworICAgIEdQVURldmljZSgpOworICAgIH5HUFVEZXZpY2UoKTsKKworICAg
IC8vIFRoZSBEV09SRCAodWludDMyKSByZXByZXNlbnRpbmcgdGhlIGdyYXBoaWNzIGNhcmQgdmVu
ZG9yIGlkLgorICAgIHVpbnQzMiB2ZW5kb3JfaWQ7CisKKyAgICAvLyBUaGUgRFdPUkQgKHVpbnQz
MikgcmVwcmVzZW50aW5nIHRoZSBncmFwaGljcyBjYXJkIGRldmljZSBpZC4KKyAgICAvLyBEZXZp
Y2UgaWRzIGFyZSB1bmlxdWUgdG8gdmVuZG9yLCBub3QgdG8gb25lIGFub3RoZXIuCisgICAgdWlu
dDMyIGRldmljZV9pZDsKKworICAgIC8vIFdoZXRoZXIgdGhpcyBHUFUgaXMgdGhlIGN1cnJlbnRs
eSB1c2VkIG9uZS4KKyAgICAvLyBDdXJyZW50bHkgdGhpcyBmaWVsZCBpcyBvbmx5IHN1cHBvcnRl
ZCBhbmQgbWVhbmluZ2Z1bCBvbiBPUyBYLgorICAgIGJvb2wgYWN0aXZlOworCisgICAgLy8gVGhl
IHN0cmluZ3MgdGhhdCBkZXNjcmliZSB0aGUgR1BVLgorICAgIC8vIEluIExpbnV4IHRoZXNlIHN0
cmluZ3MgYXJlIG9idGFpbmVkIHRocm91Z2ggbGlicGNpLgorICAgIC8vIEluIFdpbi9NYWNPU1gs
IHRoZXNlIHR3byBzdHJpbmdzIGFyZSBub3QgZmlsbGVkIGF0IHRoZSBtb21lbnQuCisgICAgLy8g
SW4gQW5kcm9pZCwgdGhlc2UgYXJlIHJlc3BlY3RpdmVseSBHTF9WRU5ET1IgYW5kIEdMX1JFTkRF
UkVSLgorICAgIHN0ZDo6c3RyaW5nIHZlbmRvcl9zdHJpbmc7CisgICAgc3RkOjpzdHJpbmcgZGV2
aWNlX3N0cmluZzsKKyAgfTsKKworICBHUFVJbmZvKCk7CisgIH5HUFVJbmZvKCk7CisKKyAgYm9v
bCBTdXBwb3J0c0FjY2VsZXJhdGVkMmRDYW52YXMoKSBjb25zdCB7CisgICAgcmV0dXJuICFjYW5f
bG9zZV9jb250ZXh0ICYmICFzb2Z0d2FyZV9yZW5kZXJpbmc7CisgIH0KKworICAvLyBDb21wdXRl
ciBoYXMgTlZJRElBIE9wdGltdXMKKyAgYm9vbCBvcHRpbXVzOworCisgIC8vIENvbXB1dGVyIGhh
cyBBTUQgRHluYW1pYyBTd2l0Y2hhYmxlIEdyYXBoaWNzCisgIGJvb2wgYW1kX3N3aXRjaGFibGU7
CisKKyAgLy8gTGVub3ZvIGRDdXRlIGlzIGluc3RhbGxlZC4gaHR0cDovL2NyYnVnLmNvbS8xODE2
NjUuCisgIGJvb2wgbGVub3ZvX2RjdXRlOworCisgIC8vIFByaW1hcnkgR1BVLCBmb3IgZXhtYXBs
ZSwgdGhlIGRpc2NyZXRlIEdQVSBpbiBhIGR1YWwgR1BVIG1hY2hpbmUuCisgIEdQVURldmljZSBn
cHU7CisKKyAgLy8gU2Vjb25kYXJ5IEdQVXMsIGZvciBleGFtcGxlLCB0aGUgaW50ZWdyYXRlZCBH
UFUgaW4gYSBkdWFsIEdQVSBtYWNoaW5lLgorICBzdGQ6OnZlY3RvcjxHUFVEZXZpY2U+IHNlY29u
ZGFyeV9ncHVzOworCisgIC8vIE9uIFdpbmRvd3MsIHRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0
aGUgYWRhcHRlciB0aGUgR1BVIHByb2Nlc3MgdXNlcy4KKyAgLy8gVGhlIGRlZmF1bHQgaXMgemVy
bywgd2hpY2ggbWFrZXMgdGhlIGJyb3dzZXIgcHJvY2VzcyBjcmVhdGUgaXRzIEQzRCBkZXZpY2UK
KyAgLy8gb24gdGhlIHByaW1hcnkgYWRhcHRlci4gTm90ZSB0aGF0IHRoZSBwcmltYXJ5IGFkYXB0
ZXIgY2FuIGNoYW5nZSBhdCBhbnkKKyAgLy8gdGltZSBzbyBpdCBpcyBiZXR0ZXIgdG8gc3BlY2lm
eSBhIHBhcnRpY3VsYXIgTFVJRC4gTm90ZSB0aGF0IHZhbGlkIExVSURzCisgIC8vIGFyZSBhbHdh
eXMgbm9uLXplcm8uCisgIHVpbnQ2NCBhZGFwdGVyX2x1aWQ7CisKKyAgLy8gVGhlIHZlbmRvciBv
ZiB0aGUgZ3JhcGhpY3MgZHJpdmVyIGN1cnJlbnRseSBpbnN0YWxsZWQuCisgIHN0ZDo6c3RyaW5n
IGRyaXZlcl92ZW5kb3I7CisKKyAgLy8gVGhlIHZlcnNpb24gb2YgdGhlIGdyYXBoaWNzIGRyaXZl
ciBjdXJyZW50bHkgaW5zdGFsbGVkLgorICBzdGQ6OnN0cmluZyBkcml2ZXJfdmVyc2lvbjsKKwor
ICAvLyBUaGUgZGF0ZSBvZiB0aGUgZ3JhcGhpY3MgZHJpdmVyIGN1cnJlbnRseSBpbnN0YWxsZWQu
CisgIHN0ZDo6c3RyaW5nIGRyaXZlcl9kYXRlOworCisgIC8vIFRoZSB2ZXJzaW9uIG9mIHRoZSBw
aXhlbC9mcmFnbWVudCBzaGFkZXIgdXNlZCBieSB0aGUgZ3B1LgorICBzdGQ6OnN0cmluZyBwaXhl
bF9zaGFkZXJfdmVyc2lvbjsKKworICAvLyBUaGUgdmVyc2lvbiBvZiB0aGUgdmVydGV4IHNoYWRl
ciB1c2VkIGJ5IHRoZSBncHUuCisgIHN0ZDo6c3RyaW5nIHZlcnRleF9zaGFkZXJfdmVyc2lvbjsK
KworICAvLyBUaGUgbWF4aW11bSBtdWx0aXNhcGxpbmcgc2FtcGxlIGNvdW50LCBlaXRoZXIgdGhy
b3VnaCBFUzMgb3IKKyAgLy8gRVhUX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSBNU0FB
LgorICBzdGQ6OnN0cmluZyBtYXhfbXNhYV9zYW1wbGVzOworCisgIC8vIFRoZSBtYWNoaW5lIG1v
ZGVsIGlkZW50aWZpZXIuIFRoZXkgY2FuIGNvbnRhaW4gYW55IGNoYXJhY3RlciwgaW5jbHVkaW5n
CisgIC8vIHdoaXRlc3BhY2VzLiAgQ3VycmVudGx5IGl0IGlzIHN1cHBvcnRlZCBvbiBNYWNPU1gg
YW5kIEFuZHJvaWQuCisgIC8vIEFuZHJvaWQgZXhhbXBsZXM6ICJOYXh1cyA1IiwgIlhUMTAzMiIu
CisgIC8vIE9uIE1hY09TWCwgdGhlIHZlcnNpb24gaXMgc3RyaXBwZWQgb3V0IG9mIHRoZSBtb2Rl
bCBpZGVudGlmaWVyLCBmb3IKKyAgLy8gZXhhbXBsZSwgdGhlIG9yaWdpbmFsIGlkZW50aWZpZXIg
aXMgIk1hY0Jvb2tQcm83LDIiLCBhbmQgd2UgcHV0CisgIC8vICJNYWNCb29rUHJvIiBhcyBtYWNo
aW5lX21vZGVsX25hbWUsIGFuZCAiNy4yIiBhcyBtYWNoaW5lX21vZGVsX3ZlcnNpb24uCisgIHN0
ZDo6c3RyaW5nIG1hY2hpbmVfbW9kZWxfbmFtZTsKKworICAvLyBUaGUgdmVyc2lvbiBvZiB0aGUg
bWFjaGluZSBtb2RlbC4gQ3VycmVudGx5IGl0IGlzIHN1cHBvcnRlZCBvbiBNYWNPU1guCisgIC8v
IFNlZSBtYWNoaW5lX21vZGVsX25hbWUncyBjb21tZW50LgorICBzdGQ6OnN0cmluZyBtYWNoaW5l
X21vZGVsX3ZlcnNpb247CisKKyAgLy8gVGhlIEdMX1ZFUlNJT04gc3RyaW5nLgorICBzdGQ6OnN0
cmluZyBnbF92ZXJzaW9uOworCisgIC8vIFRoZSBHTF9WRU5ET1Igc3RyaW5nLgorICBzdGQ6OnN0
cmluZyBnbF92ZW5kb3I7CisKKyAgLy8gVGhlIEdMX1JFTkRFUkVSIHN0cmluZy4KKyAgc3RkOjpz
dHJpbmcgZ2xfcmVuZGVyZXI7CisKKyAgLy8gVGhlIEdMX0VYVEVOU0lPTlMgc3RyaW5nLgorICBz
dGQ6OnN0cmluZyBnbF9leHRlbnNpb25zOworCisgIC8vIEdMIHdpbmRvdyBzeXN0ZW0gYmluZGlu
ZyB2ZW5kb3IuICAiIiBpZiBub3QgYXZhaWxhYmxlLgorICBzdGQ6OnN0cmluZyBnbF93c192ZW5k
b3I7CisKKyAgLy8gR0wgd2luZG93IHN5c3RlbSBiaW5kaW5nIHZlcnNpb24uICAiIiBpZiBub3Qg
YXZhaWxhYmxlLgorICBzdGQ6OnN0cmluZyBnbF93c192ZXJzaW9uOworCisgIC8vIEdMIHdpbmRv
dyBzeXN0ZW0gYmluZGluZyBleHRlbnNpb25zLiAgIiIgaWYgbm90IGF2YWlsYWJsZS4KKyAgc3Rk
OjpzdHJpbmcgZ2xfd3NfZXh0ZW5zaW9uczsKKworICAvLyBHTCByZXNldCBub3RpZmljYXRpb24g
c3RyYXRlZ3kgYXMgZGVmaW5lZCBieSBHTF9BUkJfcm9idXN0bmVzcy4gMCBpZiBHUFUKKyAgLy8g
cmVzZXQgZGV0ZWN0aW9uIG9yIG5vdGlmaWNhdGlvbiBub3QgYXZhaWxhYmxlLgorICB1aW50MzIg
Z2xfcmVzZXRfbm90aWZpY2F0aW9uX3N0cmF0ZWd5OworCisgIC8vIFRoZSBkZXZpY2Ugc2VtYW50
aWNzLCBpLmUuIHdoZXRoZXIgdGhlIFZpc3RhIGFuZCBXaW5kb3dzIDcgc3BlY2lmaWMKKyAgLy8g
c2VtYW50aWNzIGFyZSBhdmFpbGFibGUuCisgIGJvb2wgY2FuX2xvc2VfY29udGV4dDsKKworICBi
b29sIHNvZnR3YXJlX3JlbmRlcmluZzsKKworICAvLyBXaGV0aGVyIHRoZSBkcml2ZXIgdXNlcyBk
aXJlY3QgcmVuZGVyaW5nLiBUcnVlIG9uIG1vc3QgcGxhdGZvcm1zLCBmYWxzZSBvbgorICAvLyBY
MTEgd2hlbiB1c2luZyByZW1vdGUgWC4KKyAgYm9vbCBkaXJlY3RfcmVuZGVyaW5nOworCisgIC8v
IFdoZXRoZXIgdGhlIGdwdSBwcm9jZXNzIGlzIHJ1bm5pbmcgaW4gYSBzYW5kYm94LgorICBib29s
IHNhbmRib3hlZDsKKworICAvLyBOdW1iZXIgb2YgR1BVIHByb2Nlc3MgY3Jhc2hlcyByZWNvcmRl
ZC4KKyAgaW50IHByb2Nlc3NfY3Jhc2hfY291bnQ7CisKKyAgLy8gVHJ1ZSBpZiB0aGUgR1BVIGlz
IHJ1bm5pbmcgaW4gdGhlIGJyb3dzZXIgcHJvY2VzcyBpbnN0ZWFkIG9mIGl0cyBvd24uCisgIGJv
b2wgaW5fcHJvY2Vzc19ncHU7CisKKyAgLy8gVGhlIHN0YXRlIG9mIHdoZXRoZXIgdGhlIGJhc2lj
L2NvbnRleHQvRHhEaWFnbm9zdGljcyBpbmZvIGlzIGNvbGxlY3RlZCBhbmQKKyAgLy8gaWYgdGhl
IGNvbGxlY3Rpb24gZmFpbHMgb3Igbm90LgorICBDb2xsZWN0SW5mb1Jlc3VsdCBiYXNpY19pbmZv
X3N0YXRlOworICBDb2xsZWN0SW5mb1Jlc3VsdCBjb250ZXh0X2luZm9fc3RhdGU7CisKKyAgYm9v
bCBqcGVnX2RlY29kZV9hY2NlbGVyYXRvcl9zdXBwb3J0ZWQ7CisKKyAgLy8gTm90ZTogd2hlbiBh
ZGRpbmcgbmV3IG1lbWJlcnMsIHBsZWFzZSByZW1lbWJlciB0byB1cGRhdGUgRW51bWVyYXRlRmll
bGRzCisgIC8vIGluIGdwdV9pbmZvLmNjLgorCisgIC8vIEluIGNvbmp1bmN0aW9uIHdpdGggRW51
bWVyYXRlRmllbGRzLCB0aGlzIGFsbG93cyB0aGUgZW1iZWRkZXIgdG8KKyAgLy8gZW51bWVyYXRl
IHRoZSB2YWx1ZXMgaW4gdGhpcyBzdHJ1Y3R1cmUgd2l0aG91dCBoYXZpbmcgdG8gZW1iZWQKKyAg
Ly8gcmVmZXJlbmNlcyB0byBpdHMgc3BlY2lmaWMgbWVtYmVyIHZhcmlhYmxlcy4gVGhpcyBzaW1w
bGlmaWVzIHRoZQorICAvLyBhZGRpdGlvbiBvZiBuZXcgZmllbGRzIHRvIHRoaXMgdHlwZS4KKyAg
Y2xhc3MgRW51bWVyYXRvciB7CisgICBwdWJsaWM6CisgICAgLy8gVGhlIGZvbGxvd2luZyBtZXRo
b2RzIGFwcGx5IHRvIHRoZSAiY3VycmVudCIgb2JqZWN0LiBJbml0aWFsbHkgdGhpcworICAgIC8v
IGlzIHRoZSByb290IG9iamVjdCwgYnV0IGNhbGxzIHRvIEJlZ2luR1BVRGV2aWNlL0VuZEdQVURl
dmljZSBhbmQKKyAgICAvLyBCZWdpbkF1eEF0dHJpYnV0ZXMvRW5kQXV4QXR0cmlidXRlcyBjaGFu
Z2UgdGhlIG9iamVjdCB0byB3aGljaCB0aGVzZQorICAgIC8vIGNhbGxzIHNob3VsZCBhcHBseS4K
KyAgICB2aXJ0dWFsIHZvaWQgQWRkSW50NjQoY29uc3QgY2hhciogbmFtZSwgaW50NjQgdmFsdWUp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgQWRkSW50KGNvbnN0IGNoYXIqIG5hbWUsIGludCB2YWx1
ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBBZGRTdHJpbmcoY29uc3QgY2hhciogbmFtZSwgY29u
c3Qgc3RkOjpzdHJpbmcmIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIEFkZEJvb2woY29u
c3QgY2hhciogbmFtZSwgYm9vbCB2YWx1ZSkgPSAwOworCisgICAgLy8gTWFya2VycyBpbmRpY2F0
aW5nIHRoYXQgYSBHUFVEZXZpY2UgaXMgYmVpbmcgZGVzY3JpYmVkLgorICAgIHZpcnR1YWwgdm9p
ZCBCZWdpbkdQVURldmljZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgRW5kR1BVRGV2aWNlKCkg
PSAwOworCisgICAgLy8gTWFya2VycyBpbmRpY2F0aW5nIHRoYXQgYSBWaWRlb0RlY29kZUFjY2Vs
ZXJhdG9yU3VwcG9ydGVkUHJvZmlsZSBpcworICAgIC8vIGJlaW5nIGRlc2NyaWJlZC4KKyAgICB2
aXJ0dWFsIHZvaWQgQmVnaW5WaWRlb0RlY29kZUFjY2VsZXJhdG9yU3VwcG9ydGVkUHJvZmlsZSgp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgRW5kVmlkZW9EZWNvZGVBY2NlbGVyYXRvclN1cHBvcnRl
ZFByb2ZpbGUoKSA9IDA7CisKKyAgICAvLyBNYXJrZXJzIGluZGljYXRpbmcgdGhhdCBhIFZpZGVv
RW5jb2RlQWNjZWxlcmF0b3JTdXBwb3J0ZWRQcm9maWxlIGlzCisgICAgLy8gYmVpbmcgZGVzY3Jp
YmVkLgorICAgIHZpcnR1YWwgdm9pZCBCZWdpblZpZGVvRW5jb2RlQWNjZWxlcmF0b3JTdXBwb3J0
ZWRQcm9maWxlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBFbmRWaWRlb0VuY29kZUFjY2VsZXJh
dG9yU3VwcG9ydGVkUHJvZmlsZSgpID0gMDsKKworICAgIC8vIE1hcmtlcnMgaW5kaWNhdGluZyB0
aGF0ICJhdXhpbGlhcnkiIGF0dHJpYnV0ZXMgb2YgdGhlIEdQVUluZm8KKyAgICAvLyAoYWNjb3Jk
aW5nIHRvIHRoZSBEZXZUb29scyBwcm90b2NvbCkgYXJlIGJlaW5nIGRlc2NyaWJlZC4KKyAgICB2
aXJ0dWFsIHZvaWQgQmVnaW5BdXhBdHRyaWJ1dGVzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBF
bmRBdXhBdHRyaWJ1dGVzKCkgPSAwOworCisgICBwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+RW51
bWVyYXRvcigpIHt9CisgIH07CisKKyAgLy8gT3V0cHV0cyB0aGUgZmllbGRzIGluIHRoaXMgc3Ry
dWN0dXJlIHRvIHRoZSBwcm92aWRlZCBlbnVtZXJhdG9yLgorICB2b2lkIEVudW1lcmF0ZUZpZWxk
cyhFbnVtZXJhdG9yKiBlbnVtZXJhdG9yKSBjb25zdDsKK307CisKK30gIC8vIG5hbWVzcGFjZSBn
cHUKKworI2VuZGlmICAvLyBHUFVfQ09ORklHX0dQVV9JTkZPX0hfCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25z
L2dwdV90ZXN0X2NvbmZpZy5jYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV90ZXN0X2Nv
bmZpZy5jYwkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvdGhpcmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV90ZXN0X2NvbmZpZy5jYwko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5MiBAQAorLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRo
ZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworI2luY2x1ZGUgImdwdV90ZXN0X2Nv
bmZpZy5oIgorCisjaW5jbHVkZSAiZ3B1X2luZm8uaCIKKyNpbmNsdWRlICJncHVfdGVzdF9leHBl
Y3RhdGlvbnNfcGFyc2VyLmgiCisKKyNpZiBkZWZpbmVkKE9TX0xJTlVYKQorZXh0ZXJuICJDIiB7
CisjICAgaW5jbHVkZSA8cGNpL3BjaS5oPgorfQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKE9TX01B
Q09TWCkKKyNpbmNsdWRlICJncHVfdGVzdF9jb25maWdfbWFjLmgiCisjZW5kaWYKKwordXNpbmcg
bmFtZXNwYWNlIGdwdTsKKworI2lmIGRlZmluZWQoT1NfV0lOKQorCituYW1lc3BhY2UgYmFzZSB7
CisKK25hbWVzcGFjZSB7CisKKy8vIERpc2FibGUgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gd2Fy
bmluZyBmb3IgR2V0VmVyc2lvbkV4CisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDk5NikKKwor
Y2xhc3MgU3lzSW5mbworeworICBwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgT3BlcmF0aW5nU3lz
dGVtVmVyc2lvbk51bWJlcnMoCisgICAgICAgIGludDMyICptYWpvcl92ZXJzaW9uLCBpbnQzMiAq
bWlub3JfdmVyc2lvbiwgaW50MzIgKmJ1Z2ZpeF92ZXJzaW9uKTsKK307CisKKy8vIHN0YXRpYwor
dm9pZCBTeXNJbmZvOjpPcGVyYXRpbmdTeXN0ZW1WZXJzaW9uTnVtYmVycygKKyAgICBpbnQzMiAq
bWFqb3JfdmVyc2lvbiwgaW50MzIgKm1pbm9yX3ZlcnNpb24sIGludDMyICpidWdmaXhfdmVyc2lv
bikKK3sKKyAgT1NWRVJTSU9OSU5GT0VYIHZlcnNpb25faW5mbyA9IHsgc2l6ZW9mIHZlcnNpb25f
aW5mbyB9OworICA6OkdldFZlcnNpb25FeChyZWludGVycHJldF9jYXN0PE9TVkVSU0lPTklORk8q
PigmdmVyc2lvbl9pbmZvKSk7CisgICptYWpvcl92ZXJzaW9uID0gdmVyc2lvbl9pbmZvLmR3TWFq
b3JWZXJzaW9uOworICAqbWlub3JfdmVyc2lvbiA9IHZlcnNpb25faW5mby5kd01pbm9yVmVyc2lv
bjsKKyAgKmJ1Z2ZpeF92ZXJzaW9uID0gdmVyc2lvbl9pbmZvLmR3QnVpbGROdW1iZXI7Cit9CisK
K30gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCit9IC8vIG5hbWVzcGFjZSBiYXNlCisKK3ZvaWQg
RGV2aWNlSURUb1ZlbmRvckFuZERldmljZShjb25zdCBzdGQ6OnN0cmluZyYgaWQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyKiB2ZW5kb3JfaWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDMyKiBkZXZpY2VfaWQpIHsKKyAgKnZlbmRvcl9pZCA9IDA7
CisgICpkZXZpY2VfaWQgPSAwOworICBpZiAoaWQubGVuZ3RoKCkgPCAyMSkKKyAgICByZXR1cm47
CisgIHN0ZDo6c3RyaW5nIHZlbmRvcl9pZF9zdHJpbmcgPSBpZC5zdWJzdHIoOCwgNCk7CisgIHN0
ZDo6c3RyaW5nIGRldmljZV9pZF9zdHJpbmcgPSBpZC5zdWJzdHIoMTcsIDQpOworICBiYXNlOjpI
ZXhTdHJpbmdUb1VJbnQodmVuZG9yX2lkX3N0cmluZywgdmVuZG9yX2lkKTsKKyAgYmFzZTo6SGV4
U3RyaW5nVG9VSW50KGRldmljZV9pZF9zdHJpbmcsIGRldmljZV9pZCk7Cit9CisKK0NvbGxlY3RJ
bmZvUmVzdWx0IENvbGxlY3RHcHVJRCh1aW50MzIqIHZlbmRvcl9pZCwgdWludDMyKiBkZXZpY2Vf
aWQpIHsKKyAgRENIRUNLKHZlbmRvcl9pZCAmJiBkZXZpY2VfaWQpOworICAqdmVuZG9yX2lkID0g
MDsKKyAgKmRldmljZV9pZCA9IDA7CisKKyAgLy8gVGFrZW4gZnJvbSBodHRwOi8vZGV2ZWxvcGVy
Lm52aWRpYS5jb20vb2JqZWN0L2RldmljZV9pZHMuaHRtbAorICBESVNQTEFZX0RFVklDRUEgZGQ7
CisgIGRkLmNiID0gc2l6ZW9mKERJU1BMQVlfREVWSUNFQSk7CisgIHN0ZDo6c3RyaW5nIGlkOwor
ICBmb3IgKGludCBpID0gMDsgRW51bURpc3BsYXlEZXZpY2VzQShOVUxMLCBpLCAmZGQsIDApOyAr
K2kpIHsKKyAgICBpZiAoZGQuU3RhdGVGbGFncyAmIERJU1BMQVlfREVWSUNFX1BSSU1BUllfREVW
SUNFKSB7CisgICAgICBpZCA9IGRkLkRldmljZUlEOworICAgICAgYnJlYWs7CisgICAgfQorICB9
CisKKyAgaWYgKGlkLmxlbmd0aCgpID4gMjApIHsKKyAgICBEZXZpY2VJRFRvVmVuZG9yQW5kRGV2
aWNlKGlkLCB2ZW5kb3JfaWQsIGRldmljZV9pZCk7CisgICAgaWYgKCp2ZW5kb3JfaWQgIT0gMCAm
JiAqZGV2aWNlX2lkICE9IDApCisgICAgICByZXR1cm4ga0NvbGxlY3RJbmZvU3VjY2VzczsKKyAg
fQorICByZXR1cm4ga0NvbGxlY3RJbmZvTm9uRmF0YWxGYWlsdXJlOworfQorCisjZW5kaWYgLy8g
ZGVmaW5lZChPU19XSU4pCisKKyNpZiBkZWZpbmVkKE9TX0xJTlVYKQorCitjb25zdCB1aW50MzIg
a1ZlbmRvcklESW50ZWwgPSAweDgwODY7Citjb25zdCB1aW50MzIga1ZlbmRvcklETlZpZGlhID0g
MHgxMGRlOworY29uc3QgdWludDMyIGtWZW5kb3JJREFNRCA9IDB4MTAwMjsKKworQ29sbGVjdElu
Zm9SZXN1bHQgQ29sbGVjdFBDSVZpZGVvQ2FyZEluZm8oR1BVSW5mbyogZ3B1X2luZm8pIHsKKyAg
RENIRUNLKGdwdV9pbmZvKTsKKworICBzdHJ1Y3QgcGNpX2FjY2VzcyogYWNjZXNzID0gcGNpX2Fs
bG9jKCk7CisgIERDSEVDSyhhY2Nlc3MgIT0gTlVMTCk7CisgIHBjaV9pbml0KGFjY2Vzcyk7Cisg
IHBjaV9zY2FuX2J1cyhhY2Nlc3MpOworCisgIGJvb2wgcHJpbWFyeV9ncHVfaWRlbnRpZmllZCA9
IGZhbHNlOworICBmb3IgKHBjaV9kZXYqIGRldmljZSA9IGFjY2Vzcy0+ZGV2aWNlczsKKyAgICAg
ICBkZXZpY2UgIT0gTlVMTDsgZGV2aWNlID0gZGV2aWNlLT5uZXh0KSB7CisgICAgcGNpX2ZpbGxf
aW5mbyhkZXZpY2UsIDMzKTsKKyAgICBib29sIGlzX2dwdSA9IGZhbHNlOworICAgIHN3aXRjaCAo
ZGV2aWNlLT5kZXZpY2VfY2xhc3MpIHsKKyAgICAgIGNhc2UgUENJX0NMQVNTX0RJU1BMQVlfVkdB
OgorICAgICAgY2FzZSBQQ0lfQ0xBU1NfRElTUExBWV9YR0E6CisgICAgICBjYXNlIFBDSV9DTEFT
U19ESVNQTEFZXzNEOgorICAgICAgICBpc19ncHUgPSB0cnVlOworICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgUENJX0NMQVNTX0RJU1BMQVlfT1RIRVI6CisgICAgICBkZWZhdWx0OgorICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgaWYgKCFpc19ncHUpCisgICAgICBjb250aW51ZTsKKyAgICBp
ZiAoZGV2aWNlLT52ZW5kb3JfaWQgPT0gMCB8fCBkZXZpY2UtPmRldmljZV9pZCA9PSAwKQorICAg
ICAgY29udGludWU7CisKKyAgICBHUFVJbmZvOjpHUFVEZXZpY2UgZ3B1OworICAgIGdwdS52ZW5k
b3JfaWQgPSBkZXZpY2UtPnZlbmRvcl9pZDsKKyAgICBncHUuZGV2aWNlX2lkID0gZGV2aWNlLT5k
ZXZpY2VfaWQ7CisKKyAgICBpZiAoIXByaW1hcnlfZ3B1X2lkZW50aWZpZWQpIHsKKyAgICAgIHBy
aW1hcnlfZ3B1X2lkZW50aWZpZWQgPSB0cnVlOworICAgICAgZ3B1X2luZm8tPmdwdSA9IGdwdTsK
KyAgICB9IGVsc2UgeworICAgICAgLy8gVE9ETyh6bW8pOiBpZiB0aGVyZSBhcmUgbXVsdGlwbGUg
R1BVcywgd2UgYXNzdW1lIHRoZSBub24gSW50ZWwKKyAgICAgIC8vIG9uZSBpcyBwcmltYXJ5LiBS
ZXZpc2l0IHRoaXMgbG9naWMgYmVjYXVzZSB3ZSBhY3R1YWxseSBkb24ndCBrbm93CisgICAgICAv
LyB3aGljaCBHUFUgd2UgYXJlIHVzaW5nIGF0IHRoaXMgcG9pbnQuCisgICAgICBpZiAoZ3B1X2lu
Zm8tPmdwdS52ZW5kb3JfaWQgPT0ga1ZlbmRvcklESW50ZWwgJiYKKyAgICAgICAgICBncHUudmVu
ZG9yX2lkICE9IGtWZW5kb3JJREludGVsKSB7CisgICAgICAgIGdwdV9pbmZvLT5zZWNvbmRhcnlf
Z3B1cy5wdXNoX2JhY2soZ3B1X2luZm8tPmdwdSk7CisgICAgICAgIGdwdV9pbmZvLT5ncHUgPSBn
cHU7CisgICAgICB9IGVsc2UgeworICAgICAgICBncHVfaW5mby0+c2Vjb25kYXJ5X2dwdXMucHVz
aF9iYWNrKGdwdSk7CisgICAgICB9CisgICAgfQorICB9CisKKyAgLy8gRGV0ZWN0IE9wdGltdXMg
b3IgQU1EIFN3aXRjaGFibGUgR1BVLgorICBpZiAoZ3B1X2luZm8tPnNlY29uZGFyeV9ncHVzLnNp
emUoKSA9PSAxICYmCisgICAgICBncHVfaW5mby0+c2Vjb25kYXJ5X2dwdXNbMF0udmVuZG9yX2lk
ID09IGtWZW5kb3JJREludGVsKSB7CisgICAgaWYgKGdwdV9pbmZvLT5ncHUudmVuZG9yX2lkID09
IGtWZW5kb3JJRE5WaWRpYSkKKyAgICAgIGdwdV9pbmZvLT5vcHRpbXVzID0gdHJ1ZTsKKyAgICBp
ZiAoZ3B1X2luZm8tPmdwdS52ZW5kb3JfaWQgPT0ga1ZlbmRvcklEQU1EKQorICAgICAgZ3B1X2lu
Zm8tPmFtZF9zd2l0Y2hhYmxlID0gdHJ1ZTsKKyAgfQorCisgIHBjaV9jbGVhbnVwKGFjY2Vzcyk7
CisgIGlmICghcHJpbWFyeV9ncHVfaWRlbnRpZmllZCkKKyAgICByZXR1cm4ga0NvbGxlY3RJbmZv
Tm9uRmF0YWxGYWlsdXJlOworICByZXR1cm4ga0NvbGxlY3RJbmZvU3VjY2VzczsKK30KKworQ29s
bGVjdEluZm9SZXN1bHQgQ29sbGVjdEdwdUlEKHVpbnQzMiogdmVuZG9yX2lkLCB1aW50MzIqIGRl
dmljZV9pZCkgeworICBEQ0hFQ0sodmVuZG9yX2lkICYmIGRldmljZV9pZCk7CisgICp2ZW5kb3Jf
aWQgPSAwOworICAqZGV2aWNlX2lkID0gMDsKKworICBHUFVJbmZvIGdwdV9pbmZvOworICBDb2xs
ZWN0SW5mb1Jlc3VsdCByZXN1bHQgPSBDb2xsZWN0UENJVmlkZW9DYXJkSW5mbygmZ3B1X2luZm8p
OworICBpZiAocmVzdWx0ID09IGtDb2xsZWN0SW5mb1N1Y2Nlc3MpIHsKKyAgICAqdmVuZG9yX2lk
ID0gZ3B1X2luZm8uZ3B1LnZlbmRvcl9pZDsKKyAgICAqZGV2aWNlX2lkID0gZ3B1X2luZm8uZ3B1
LmRldmljZV9pZDsKKyAgfQorICByZXR1cm4gcmVzdWx0OworfQorCisjZW5kaWYgLy8gZGVmaW5l
ZChPU19MSU5VWCkKKworI2lmIGRlZmluZWQoT1NfTUFDT1NYKQorCitDb2xsZWN0SW5mb1Jlc3Vs
dCBDb2xsZWN0R3B1SUQodWludDMyKiB2ZW5kb3JfaWQsIHVpbnQzMiogZGV2aWNlX2lkKSB7Cisg
IERDSEVDSyh2ZW5kb3JfaWQgJiYgZGV2aWNlX2lkKTsKKworICBHUFVJbmZvOjpHUFVEZXZpY2Ug
Z3B1ID0gR2V0QWN0aXZlR1BVKCk7CisgICp2ZW5kb3JfaWQgPSBncHUudmVuZG9yX2lkOworICAq
ZGV2aWNlX2lkID0gZ3B1LmRldmljZV9pZDsKKworICBpZiAoKnZlbmRvcl9pZCAhPSAwICYmICpk
ZXZpY2VfaWQgIT0gMCkKKyAgICByZXR1cm4ga0NvbGxlY3RJbmZvU3VjY2VzczsKKyAgcmV0dXJu
IGtDb2xsZWN0SW5mb05vbkZhdGFsRmFpbHVyZTsKK30KKworI2VuZGlmCisKKyNpZiBkZWZpbmVk
KE9TX0FORFJPSUQpCitDb2xsZWN0SW5mb1Jlc3VsdCBDb2xsZWN0R3B1SUQodWludDMyICp2ZW5k
b3JfaWQsIHVpbnQzMiAqZGV2aWNlX2lkKQoreworICAgIERDSEVDSyh2ZW5kb3JfaWQgJiYgZGV2
aWNlX2lkKTsKKyAgICAqdmVuZG9yX2lkID0gMDsKKyAgICAqZGV2aWNlX2lkID0gMDsKKyAgICBy
ZXR1cm4ga0NvbGxlY3RJbmZvTm9uRmF0YWxGYWlsdXJlOworfQorI2VuZGlmICAvLyBkZWZpbmVk
KE9TX0FORFJPSUQpCisKK25hbWVzcGFjZSBncHUgeworCituYW1lc3BhY2UgeworCitHUFVUZXN0
Q29uZmlnOjpPUyBHZXRDdXJyZW50T1MoKSB7CisjaWYgZGVmaW5lZChPU19DSFJPTUVPUykKKyAg
cmV0dXJuIEdQVVRlc3RDb25maWc6OmtPc0Nocm9tZU9TOworI2VsaWYgZGVmaW5lZChPU19MSU5V
WCkgfHwgZGVmaW5lZChPU19PUEVOQlNEKQorICByZXR1cm4gR1BVVGVzdENvbmZpZzo6a09zTGlu
dXg7CisjZWxpZiBkZWZpbmVkKE9TX1dJTikKKyAgaW50MzIgbWFqb3JfdmVyc2lvbiA9IDA7Cisg
IGludDMyIG1pbm9yX3ZlcnNpb24gPSAwOworICBpbnQzMiBidWdmaXhfdmVyc2lvbiA9IDA7Cisg
IGJhc2U6OlN5c0luZm86Ok9wZXJhdGluZ1N5c3RlbVZlcnNpb25OdW1iZXJzKAorICAgICAgJm1h
am9yX3ZlcnNpb24sICZtaW5vcl92ZXJzaW9uLCAmYnVnZml4X3ZlcnNpb24pOworICBpZiAobWFq
b3JfdmVyc2lvbiA9PSA1KQorICAgIHJldHVybiBHUFVUZXN0Q29uZmlnOjprT3NXaW5YUDsKKyAg
aWYgKG1ham9yX3ZlcnNpb24gPT0gNiAmJiBtaW5vcl92ZXJzaW9uID09IDApCisgICAgcmV0dXJu
IEdQVVRlc3RDb25maWc6OmtPc1dpblZpc3RhOworICBpZiAobWFqb3JfdmVyc2lvbiA9PSA2ICYm
IG1pbm9yX3ZlcnNpb24gPT0gMSkKKyAgICByZXR1cm4gR1BVVGVzdENvbmZpZzo6a09zV2luNzsK
KyAgaWYgKG1ham9yX3ZlcnNpb24gPT0gNiAmJiAobWlub3JfdmVyc2lvbiA9PSAyIHx8IG1pbm9y
X3ZlcnNpb24gPT0gMykpCisgICAgcmV0dXJuIEdQVVRlc3RDb25maWc6OmtPc1dpbjg7CisgIGlm
IChtYWpvcl92ZXJzaW9uID09IDEwKQorICAgIHJldHVybiBHUFVUZXN0Q29uZmlnOjprT3NXaW4x
MDsKKyNlbGlmIGRlZmluZWQoT1NfTUFDT1NYKQorICBpbnQzMiBtYWpvcl92ZXJzaW9uID0gMDsK
KyAgaW50MzIgbWlub3JfdmVyc2lvbiA9IDA7CisgIGludDMyIGJ1Z2ZpeF92ZXJzaW9uID0gMDsK
KyAgYmFzZTo6U3lzSW5mbzo6T3BlcmF0aW5nU3lzdGVtVmVyc2lvbk51bWJlcnMoCisgICAgICAm
bWFqb3JfdmVyc2lvbiwgJm1pbm9yX3ZlcnNpb24sICZidWdmaXhfdmVyc2lvbik7CisgIGlmICht
YWpvcl92ZXJzaW9uID09IDEwKSB7CisgICAgc3dpdGNoIChtaW5vcl92ZXJzaW9uKSB7CisgICAg
ICBjYXNlIDU6CisgICAgICAgIHJldHVybiBHUFVUZXN0Q29uZmlnOjprT3NNYWNMZW9wYXJkOwor
ICAgICAgY2FzZSA2OgorICAgICAgICByZXR1cm4gR1BVVGVzdENvbmZpZzo6a09zTWFjU25vd0xl
b3BhcmQ7CisgICAgICBjYXNlIDc6CisgICAgICAgIHJldHVybiBHUFVUZXN0Q29uZmlnOjprT3NN
YWNMaW9uOworICAgICAgY2FzZSA4OgorICAgICAgICByZXR1cm4gR1BVVGVzdENvbmZpZzo6a09z
TWFjTW91bnRhaW5MaW9uOworICAgICAgY2FzZSA5OgorICAgICAgICByZXR1cm4gR1BVVGVzdENv
bmZpZzo6a09zTWFjTWF2ZXJpY2tzOworICAgICAgY2FzZSAxMDoKKyAgICAgICAgcmV0dXJuIEdQ
VVRlc3RDb25maWc6OmtPc01hY1lvc2VtaXRlOworICAgICAgY2FzZSAxMToKKyAgICAgICAgcmV0
dXJuIEdQVVRlc3RDb25maWc6OmtPc01hY0VsQ2FwaXRhbjsKKyAgICB9CisgIH0KKyNlbGlmIGRl
ZmluZWQoT1NfQU5EUk9JRCkKKyAgcmV0dXJuIEdQVVRlc3RDb25maWc6OmtPc0FuZHJvaWQ7Cisj
ZW5kaWYKKyAgcmV0dXJuIEdQVVRlc3RDb25maWc6OmtPc1Vua25vd247Cit9CisKK30gIC8vIG5h
bWVzcGFjZSBhbm9ueW1vdXMKKworR1BVVGVzdENvbmZpZzo6R1BVVGVzdENvbmZpZygpCisgICAg
OiB2YWxpZGF0ZV9ncHVfaW5mb18odHJ1ZSksCisgICAgICBvc18oa09zVW5rbm93biksCisgICAg
ICBncHVfZGV2aWNlX2lkXygwKSwKKyAgICAgIGJ1aWxkX3R5cGVfKGtCdWlsZFR5cGVVbmtub3du
KSwKKyAgICAgIGFwaV8oa0FQSVVua25vd24pIHt9CisKK0dQVVRlc3RDb25maWc6On5HUFVUZXN0
Q29uZmlnKCkgeworfQorCit2b2lkIEdQVVRlc3RDb25maWc6OnNldF9vcyhpbnQzMiBvcykgewor
ICBEQ0hFQ0tfRVEoMCwgb3MgJiB+KGtPc0FuZHJvaWQgfCBrT3NXaW4gfCBrT3NNYWMgfCBrT3NM
aW51eCB8IGtPc0Nocm9tZU9TKSk7CisgIG9zXyA9IG9zOworfQorCit2b2lkIEdQVVRlc3RDb25m
aWc6OkFkZEdQVVZlbmRvcih1aW50MzIgZ3B1X3ZlbmRvcikgeworICBEQ0hFQ0tfTkUoMHUsIGdw
dV92ZW5kb3IpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGdwdV92ZW5kb3JfLnNpemUoKTsg
KytpKQorICAgIERDSEVDS19ORShncHVfdmVuZG9yX1tpXSwgZ3B1X3ZlbmRvcik7CisgIGdwdV92
ZW5kb3JfLnB1c2hfYmFjayhncHVfdmVuZG9yKTsKK30KKwordm9pZCBHUFVUZXN0Q29uZmlnOjpz
ZXRfZ3B1X2RldmljZV9pZCh1aW50MzIgaWQpIHsKKyAgZ3B1X2RldmljZV9pZF8gPSBpZDsKK30K
Kwordm9pZCBHUFVUZXN0Q29uZmlnOjpzZXRfYnVpbGRfdHlwZShpbnQzMiBidWlsZF90eXBlKSB7
CisgIERDSEVDS19FUSgwLCBidWlsZF90eXBlICYgfihrQnVpbGRUeXBlUmVsZWFzZSB8IGtCdWls
ZFR5cGVEZWJ1ZykpOworICBidWlsZF90eXBlXyA9IGJ1aWxkX3R5cGU7Cit9CisKK3ZvaWQgR1BV
VGVzdENvbmZpZzo6c2V0X2FwaShpbnQzMiBhcGkpIHsKKyAgRENIRUNLX0VRKDAsIGFwaSAmIH4o
a0FQSUQzRDkgfCBrQVBJRDNEMTEgfCBrQVBJR0xEZXNrdG9wIHwga0FQSUdMRVMpKTsKKyAgYXBp
XyA9IGFwaTsKK30KKworYm9vbCBHUFVUZXN0Q29uZmlnOjpJc1ZhbGlkKCkgY29uc3QgeworICBp
ZiAoIXZhbGlkYXRlX2dwdV9pbmZvXykKKyAgICByZXR1cm4gdHJ1ZTsKKyAgaWYgKGdwdV9kZXZp
Y2VfaWRfICE9IDAgJiYgKGdwdV92ZW5kb3JfLnNpemUoKSAhPSAxIHx8IGdwdV92ZW5kb3JfWzBd
ID09IDApKQorICAgIHJldHVybiBmYWxzZTsKKyAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgR1BV
VGVzdENvbmZpZzo6T3ZlcmxhcHNXaXRoKGNvbnN0IEdQVVRlc3RDb25maWcmIGNvbmZpZykgY29u
c3QgeworICBEQ0hFQ0soSXNWYWxpZCgpKTsKKyAgRENIRUNLKGNvbmZpZy5Jc1ZhbGlkKCkpOwor
ICBpZiAoY29uZmlnLm9zXyAhPSBrT3NVbmtub3duICYmIG9zXyAhPSBrT3NVbmtub3duICYmCisg
ICAgICAob3NfICYgY29uZmlnLm9zXykgPT0gMCkKKyAgICByZXR1cm4gZmFsc2U7CisgIGlmIChj
b25maWcuZ3B1X3ZlbmRvcl8uc2l6ZSgpID4gMCAmJiBncHVfdmVuZG9yXy5zaXplKCkgPiAwKSB7
CisgICAgYm9vbCBzaGFyZWQgPSBmYWxzZTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNv
bmZpZy5ncHVfdmVuZG9yXy5zaXplKCkgJiYgIXNoYXJlZDsgKytpKSB7CisgICAgICBmb3IgKHNp
emVfdCBqID0gMDsgaiA8IGdwdV92ZW5kb3JfLnNpemUoKTsgKytqKSB7CisgICAgICAgIGlmIChj
b25maWcuZ3B1X3ZlbmRvcl9baV0gPT0gZ3B1X3ZlbmRvcl9bal0pIHsKKyAgICAgICAgICBzaGFy
ZWQgPSB0cnVlOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICB9CisgICAgfQor
ICAgIGlmICghc2hhcmVkKQorICAgICAgcmV0dXJuIGZhbHNlOworICB9CisgIGlmIChjb25maWcu
Z3B1X2RldmljZV9pZF8gIT0gMCAmJiBncHVfZGV2aWNlX2lkXyAhPSAwICYmCisgICAgICBncHVf
ZGV2aWNlX2lkXyAhPSBjb25maWcuZ3B1X2RldmljZV9pZF8pCisgICAgcmV0dXJuIGZhbHNlOwor
ICBpZiAoY29uZmlnLmJ1aWxkX3R5cGVfICE9IGtCdWlsZFR5cGVVbmtub3duICYmCisgICAgICBi
dWlsZF90eXBlXyAhPSBrQnVpbGRUeXBlVW5rbm93biAmJgorICAgICAgKGJ1aWxkX3R5cGVfICYg
Y29uZmlnLmJ1aWxkX3R5cGVfKSA9PSAwKQorICAgIHJldHVybiBmYWxzZTsKKyAgcmV0dXJuIHRy
dWU7Cit9CisKK3ZvaWQgR1BVVGVzdENvbmZpZzo6RGlzYWJsZUdQVUluZm9WYWxpZGF0aW9uKCkg
eworICB2YWxpZGF0ZV9ncHVfaW5mb18gPSBmYWxzZTsKK30KKwordm9pZCBHUFVUZXN0Q29uZmln
OjpDbGVhckdQVVZlbmRvcigpIHsKKyAgZ3B1X3ZlbmRvcl8uY2xlYXIoKTsKK30KKworR1BVVGVz
dEJvdENvbmZpZzo6fkdQVVRlc3RCb3RDb25maWcoKSB7Cit9CisKK3ZvaWQgR1BVVGVzdEJvdENv
bmZpZzo6QWRkR1BVVmVuZG9yKHVpbnQzMiBncHVfdmVuZG9yKSB7CisgIERDSEVDS19FUSgwdSwg
R1BVVGVzdENvbmZpZzo6Z3B1X3ZlbmRvcigpLnNpemUoKSk7CisgIEdQVVRlc3RDb25maWc6OkFk
ZEdQVVZlbmRvcihncHVfdmVuZG9yKTsKK30KKworYm9vbCBHUFVUZXN0Qm90Q29uZmlnOjpTZXRH
UFVJbmZvKGNvbnN0IEdQVUluZm8mIGdwdV9pbmZvKSB7CisgIERDSEVDSyh2YWxpZGF0ZV9ncHVf
aW5mb18pOworICBpZiAoZ3B1X2luZm8uZ3B1LmRldmljZV9pZCA9PSAwIHx8IGdwdV9pbmZvLmdw
dS52ZW5kb3JfaWQgPT0gMCkKKyAgICByZXR1cm4gZmFsc2U7CisgIENsZWFyR1BVVmVuZG9yKCk7
CisgIEFkZEdQVVZlbmRvcihncHVfaW5mby5ncHUudmVuZG9yX2lkKTsKKyAgc2V0X2dwdV9kZXZp
Y2VfaWQoZ3B1X2luZm8uZ3B1LmRldmljZV9pZCk7CisgIHJldHVybiB0cnVlOworfQorCitib29s
IEdQVVRlc3RCb3RDb25maWc6OklzVmFsaWQoKSBjb25zdCB7CisgIHN3aXRjaCAob3MoKSkgewor
ICAgIGNhc2Uga09zV2luWFA6CisgICAgY2FzZSBrT3NXaW5WaXN0YToKKyAgICBjYXNlIGtPc1dp
bjc6CisgICAgY2FzZSBrT3NXaW44OgorICAgIGNhc2Uga09zV2luMTA6CisgICAgY2FzZSBrT3NN
YWNMZW9wYXJkOgorICAgIGNhc2Uga09zTWFjU25vd0xlb3BhcmQ6CisgICAgY2FzZSBrT3NNYWNM
aW9uOgorICAgIGNhc2Uga09zTWFjTW91bnRhaW5MaW9uOgorICAgIGNhc2Uga09zTWFjTWF2ZXJp
Y2tzOgorICAgIGNhc2Uga09zTWFjWW9zZW1pdGU6CisgICAgY2FzZSBrT3NNYWNFbENhcGl0YW46
CisgICAgY2FzZSBrT3NMaW51eDoKKyAgICBjYXNlIGtPc0Nocm9tZU9TOgorICAgIGNhc2Uga09z
QW5kcm9pZDoKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gZmFsc2U7
CisgIH0KKyAgaWYgKHZhbGlkYXRlX2dwdV9pbmZvXykgeworICAgIGlmIChncHVfdmVuZG9yKCku
c2l6ZSgpICE9IDEgfHwgZ3B1X3ZlbmRvcigpWzBdID09IDApCisgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKGdwdV9kZXZpY2VfaWQoKSA9PSAwKQorICAgICAgcmV0dXJuIGZhbHNlOworICB9
CisgIHN3aXRjaCAoYnVpbGRfdHlwZSgpKSB7CisgICAgY2FzZSBrQnVpbGRUeXBlUmVsZWFzZToK
KyAgICBjYXNlIGtCdWlsZFR5cGVEZWJ1ZzoKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6Cisg
ICAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgR1BVVGVz
dEJvdENvbmZpZzo6TWF0Y2hlcyhjb25zdCBHUFVUZXN0Q29uZmlnJiBjb25maWcpIGNvbnN0IHsK
KyAgRENIRUNLKElzVmFsaWQoKSk7CisgIERDSEVDSyhjb25maWcuSXNWYWxpZCgpKTsKKyAgaWYg
KGNvbmZpZy5vcygpICE9IGtPc1Vua25vd24gJiYgKG9zKCkgJiBjb25maWcub3MoKSkgPT0gMCkK
KyAgICByZXR1cm4gZmFsc2U7CisgIGlmIChjb25maWcuZ3B1X3ZlbmRvcigpLnNpemUoKSA+IDAp
IHsKKyAgICBib29sIGNvbnRhaW5lZCA9IGZhbHNlOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgY29uZmlnLmdwdV92ZW5kb3IoKS5zaXplKCk7ICsraSkgeworICAgICAgaWYgKGNvbmZpZy5n
cHVfdmVuZG9yKClbaV0gPT0gZ3B1X3ZlbmRvcigpWzBdKSB7CisgICAgICAgIGNvbnRhaW5lZCA9
IHRydWU7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKyAgICBpZiAoIWNvbnRhaW5l
ZCkKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgfQorICBpZiAoY29uZmlnLmdwdV9kZXZpY2VfaWQo
KSAhPSAwICYmCisgICAgICBncHVfZGV2aWNlX2lkKCkgIT0gY29uZmlnLmdwdV9kZXZpY2VfaWQo
KSkKKyAgICByZXR1cm4gZmFsc2U7CisgIGlmIChjb25maWcuYnVpbGRfdHlwZSgpICE9IGtCdWls
ZFR5cGVVbmtub3duICYmCisgICAgICAoYnVpbGRfdHlwZSgpICYgY29uZmlnLmJ1aWxkX3R5cGUo
KSkgPT0gMCkKKyAgICByZXR1cm4gZmFsc2U7CisgIGlmIChjb25maWcuYXBpKCkgIT0gMCAmJiAo
YXBpKCkgJiBjb25maWcuYXBpKCkpID09IDApCisgICAgcmV0dXJuIGZhbHNlOworICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBHUFVUZXN0Qm90Q29uZmlnOjpNYXRjaGVzKGNvbnN0IHN0ZDo6c3Ry
aW5nJiBjb25maWdfZGF0YSkgY29uc3QgeworICBHUFVUZXN0RXhwZWN0YXRpb25zUGFyc2VyIHBh
cnNlcjsKKyAgR1BVVGVzdENvbmZpZyBjb25maWc7CisKKyAgaWYgKCFwYXJzZXIuUGFyc2VDb25m
aWcoY29uZmlnX2RhdGEsICZjb25maWcpKQorICAgIHJldHVybiBmYWxzZTsKKyAgcmV0dXJuIE1h
dGNoZXMoY29uZmlnKTsKK30KKworYm9vbCBHUFVUZXN0Qm90Q29uZmlnOjpMb2FkQ3VycmVudENv
bmZpZyhjb25zdCBHUFVJbmZvICpncHVfaW5mbykKK3sKKyAgICBib29sIHJ0OworICAgIGlmIChn
cHVfaW5mbyA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgR1BVSW5mbyBteV9ncHVfaW5mbzsKKyAg
ICAgICAgQ29sbGVjdEluZm9SZXN1bHQgcmVzdWx0ID0KKyAgICAgICAgICAgIENvbGxlY3RHcHVJ
RCgmbXlfZ3B1X2luZm8uZ3B1LnZlbmRvcl9pZCwgJm15X2dwdV9pbmZvLmdwdS5kZXZpY2VfaWQp
OworICAgICAgICBpZiAocmVzdWx0ICE9IGtDb2xsZWN0SW5mb1N1Y2Nlc3MpCisgICAgICAgIHsK
KyAgICAgICAgICAgIExPRyhFUlJPUikgPDwgIkZhaWwgdG8gaWRlbnRpZnkgR1BVXG4iOworICAg
ICAgICAgICAgRGlzYWJsZUdQVUluZm9WYWxpZGF0aW9uKCk7CisgICAgICAgICAgICBydCA9IHRy
dWU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBydCA9
IFNldEdQVUluZm8obXlfZ3B1X2luZm8pOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAg
ICB7CisgICAgICAgIHJ0ID0gU2V0R1BVSW5mbygqZ3B1X2luZm8pOworICAgIH0KKyAgICBzZXRf
b3MoR2V0Q3VycmVudE9TKCkpOworICAgIGlmIChvcygpID09IGtPc1Vua25vd24pCisgICAgewor
ICAgICAgICBMT0coRVJST1IpIDw8ICJVbmtub3duIE9TXG4iOworICAgICAgICBydCA9IGZhbHNl
OworICAgIH0KKyNpZiBkZWZpbmVkKE5ERUJVRykKKyAgICBzZXRfYnVpbGRfdHlwZShrQnVpbGRU
eXBlUmVsZWFzZSk7CisjZWxzZQorICAgIHNldF9idWlsZF90eXBlKGtCdWlsZFR5cGVEZWJ1Zyk7
CisjZW5kaWYKKyAgICByZXR1cm4gcnQ7Cit9CisKKy8vIHN0YXRpYworYm9vbCBHUFVUZXN0Qm90
Q29uZmlnOjpDdXJyZW50Q29uZmlnTWF0Y2hlcyhjb25zdCBzdGQ6OnN0cmluZyYgY29uZmlnX2Rh
dGEpIHsKKyAgR1BVVGVzdEJvdENvbmZpZyBteV9jb25maWc7CisgIGlmICghbXlfY29uZmlnLkxv
YWRDdXJyZW50Q29uZmlnKE5VTEwpKQorICAgIHJldHVybiBmYWxzZTsKKyAgcmV0dXJuIG15X2Nv
bmZpZy5NYXRjaGVzKGNvbmZpZ19kYXRhKTsKK30KKworLy8gc3RhdGljCitib29sIEdQVVRlc3RC
b3RDb25maWc6OkN1cnJlbnRDb25maWdNYXRjaGVzKAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiYgY29uZmlncykgeworICBHUFVUZXN0Qm90Q29uZmlnIG15X2NvbmZpZzsKKyAg
aWYgKCFteV9jb25maWcuTG9hZEN1cnJlbnRDb25maWcoTlVMTCkpCisgICAgcmV0dXJuIGZhbHNl
OworICBmb3IgKHNpemVfdCBpID0gMCA7IGkgPCBjb25maWdzLnNpemUoKTsgKytpKSB7CisgICAg
aWYgKG15X2NvbmZpZy5NYXRjaGVzKGNvbmZpZ3NbaV0pKQorICAgICAgcmV0dXJuIHRydWU7Cisg
IH0KKyAgcmV0dXJuIGZhbHNlOworfQorCit9ICAvLyBuYW1lc3BhY2UgZ3B1CisKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBl
Y3RhdGlvbnMvZ3B1X3Rlc3RfY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVf
dGVzdF9jb25maWcuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvdGhpcmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV90ZXN0X2NvbmZp
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQwIEBACisvLyBDb3B5cmlnaHQgKGMpIDIw
MTIgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisjaWZuZGVmIEdQVV9DT05G
SUdfR1BVX1RFU1RfQ09ORklHX0hfCisjZGVmaW5lIEdQVV9DT05GSUdfR1BVX1RFU1RfQ09ORklH
X0hfCisKKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAi
YW5nbGVfY29uZmlnLmgiCisKK25hbWVzcGFjZSBncHUgeworCitzdHJ1Y3QgR1BVSW5mbzsKKwor
Y2xhc3MgR1BVX0VYUE9SVCBHUFVUZXN0Q29uZmlnIHsKKyBwdWJsaWM6CisgIGVudW0gT1Mgewor
ICAgIGtPc1Vua25vd24gPSAwLAorICAgIGtPc1dpblhQID0gMSA8PCAwLAorICAgIGtPc1dpblZp
c3RhID0gMSA8PCAxLAorICAgIGtPc1dpbjcgPSAxIDw8IDIsCisgICAga09zV2luOCA9IDEgPDwg
MywKKyAgICBrT3NNYWNMZW9wYXJkID0gMSA8PCA0LAorICAgIGtPc01hY1Nub3dMZW9wYXJkID0g
MSA8PCA1LAorICAgIGtPc01hY0xpb24gPSAxIDw8IDYsCisgICAga09zTWFjTW91bnRhaW5MaW9u
ID0gMSA8PCA3LAorICAgIGtPc01hY01hdmVyaWNrcyA9IDEgPDwgOCwKKyAgICBrT3NNYWNZb3Nl
bWl0ZSA9IDEgPDwgOSwKKyAgICBrT3NNYWNFbENhcGl0YW4gPSAxIDw8IDEwLAorICAgIGtPc01h
YyA9IGtPc01hY0xlb3BhcmQgfCBrT3NNYWNTbm93TGVvcGFyZCB8IGtPc01hY0xpb24gfAorICAg
ICAgICAgICAgIGtPc01hY01vdW50YWluTGlvbiB8IGtPc01hY01hdmVyaWNrcyB8IGtPc01hY1lv
c2VtaXRlIHwKKyAgICAgICAgICAgICBrT3NNYWNFbENhcGl0YW4sCisgICAga09zTGludXggPSAx
IDw8IDExLAorICAgIGtPc0Nocm9tZU9TID0gMSA8PCAxMiwKKyAgICBrT3NBbmRyb2lkID0gMSA8
PCAxMywKKyAgICBrT3NXaW4xMCA9IDEgPDwgMTQsCisgICAga09zV2luID0ga09zV2luWFAgfCBr
T3NXaW5WaXN0YSB8IGtPc1dpbjcgfCBrT3NXaW44IHwga09zV2luMTAsCisgIH07CisKKyAgZW51
bSBCdWlsZFR5cGUgeworICAgIGtCdWlsZFR5cGVVbmtub3duID0gMCwKKyAgICBrQnVpbGRUeXBl
UmVsZWFzZSA9IDEgPDwgMCwKKyAgICBrQnVpbGRUeXBlRGVidWcgPSAxIDw8IDEsCisgIH07CisK
KyAgZW51bSBBUEkgeworICAgIGtBUElVbmtub3duID0gMCwKKyAgICBrQVBJRDNEOSA9IDEgPDwg
MCwKKyAgICBrQVBJRDNEMTEgPSAxIDw8IDEsCisgICAga0FQSUdMRGVza3RvcCA9IDEgPDwgMiwK
KyAgICBrQVBJR0xFUyA9IDEgPDwgMywKKyAgfTsKKworICBHUFVUZXN0Q29uZmlnKCk7CisgIHZp
cnR1YWwgfkdQVVRlc3RDb25maWcoKTsKKworICB2b2lkIHNldF9vcyhpbnQzMiBvcyk7CisgIHZv
aWQgc2V0X2dwdV9kZXZpY2VfaWQodWludDMyIGlkKTsKKyAgdm9pZCBzZXRfYnVpbGRfdHlwZShp
bnQzMiBidWlsZF90eXBlKTsKKyAgdm9pZCBzZXRfYXBpKGludDMyIGFwaSk7CisKKyAgdmlydHVh
bCB2b2lkIEFkZEdQVVZlbmRvcih1aW50MzIgZ3B1X3ZlbmRvcik7CisKKyAgaW50MzIgb3MoKSBj
b25zdCB7IHJldHVybiBvc187IH0KKyAgY29uc3Qgc3RkOjp2ZWN0b3I8dWludDMyPiYgZ3B1X3Zl
bmRvcigpIGNvbnN0IHsgcmV0dXJuIGdwdV92ZW5kb3JfOyB9CisgIHVpbnQzMiBncHVfZGV2aWNl
X2lkKCkgY29uc3QgeyByZXR1cm4gZ3B1X2RldmljZV9pZF87IH0KKyAgaW50MzIgYnVpbGRfdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIGJ1aWxkX3R5cGVfOyB9CisgIGludDMyIGFwaSgpIGNvbnN0IHsg
cmV0dXJuIGFwaV87IH0KKworICAvLyBDaGVjayBpZiB0aGUgY29uZmlnIGlzIHZhbGlkLiBGb3Ig
ZXhhbXBsZSwgaWYgZ3B1X2RldmljZV9pZF8gaXMgc2V0LCBidXQKKyAgLy8gZ3B1X3ZlbmRvcl8g
aXMgdW5rbm93biwgdGhlbiBpdCdzIGludmFsaWQuCisgIHZpcnR1YWwgYm9vbCBJc1ZhbGlkKCkg
Y29uc3Q7CisKKyAgLy8gQ2hlY2sgaWYgdHdvIGNvbmZpZ3Mgb3ZlcmxhcCwgaS5lLiwgaWYgdGhl
cmUgZXhpc3RzIGEgY29uZmlnIHRoYXQgbWF0Y2hlcworICAvLyBib3RoIGNvbmZpZ3MuCisgIGJv
b2wgT3ZlcmxhcHNXaXRoKGNvbnN0IEdQVVRlc3RDb25maWcmIGNvbmZpZykgY29uc3Q7CisKKyAg
Ly8gRGlzYWJsZSB2YWxpZGF0aW9uIG9mIEdQVSB2ZW5kb3IgYW5kIGRldmljZSBpZHMuCisgIHZv
aWQgRGlzYWJsZUdQVUluZm9WYWxpZGF0aW9uKCk7CisKKyBwcm90ZWN0ZWQ6CisgIHZvaWQgQ2xl
YXJHUFVWZW5kb3IoKTsKKworICAvLyBJbmRpY2F0ZXMgdGhhdCB0aGUgT1MgaGFzIHRoZSBub3Rp
b24gb2YgYSBudW1lcmljIEdQVSB2ZW5kb3IgYW5kIGRldmljZSBpZAorICAvLyBhbmQgdGhpcyBk
YXRhIHNob3VsZCBiZSB2YWxpZGF0ZWQuCisgIGJvb2wgdmFsaWRhdGVfZ3B1X2luZm9fOworCisg
cHJpdmF0ZToKKyAgLy8gb3BlcmF0aW5nIHN5c3RlbS4KKyAgaW50MzIgb3NfOworCisgIC8vIEdQ
VSB2ZW5kb3IuCisgIHN0ZDo6dmVjdG9yPHVpbnQzMj4gZ3B1X3ZlbmRvcl87CisKKyAgLy8gR1BV
IGRldmljZSBpZCAodW5pcXVlIHRvIGVhY2ggdmVuZG9yKS4KKyAgdWludDMyIGdwdV9kZXZpY2Vf
aWRfOworCisgIC8vIFJlbGVhc2Ugb3IgRGVidWcuCisgIGludDMyIGJ1aWxkX3R5cGVfOworCisg
IC8vIEJhY2stZW5kIHJlbmRlcmluZyBBUElzLgorICBpbnQzMiBhcGlfOworfTsKKworY2xhc3Mg
R1BVX0VYUE9SVCBHUFVUZXN0Qm90Q29uZmlnIDogcHVibGljIEdQVVRlc3RDb25maWcgeworIHB1
YmxpYzoKKyAgR1BVVGVzdEJvdENvbmZpZygpIHsgfQorICB+R1BVVGVzdEJvdENvbmZpZygpIG92
ZXJyaWRlOworCisgIC8vIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gbm8gZ3B1X3Zl
bmRvciBpcyBhZGRlZC4KKyAgdm9pZCBBZGRHUFVWZW5kb3IodWludDMyIGdwdV92ZW5kb3IpIG92
ZXJyaWRlOworCisgIC8vIFJldHVybiBmYWxzZSBpZiBncHVfaW5mbyBkb2VzIG5vdCBoYXZlIHZh
bGlkIHZlbmRvcl9pZCBhbmQgZGV2aWNlX2lkLgorICBib29sIFNldEdQVUluZm8oY29uc3QgR1BV
SW5mbyYgZ3B1X2luZm8pOworCisgIC8vIENoZWNrIGlmIHRoZSBib3QgY29uZmlnIGlzIHZhbGlk
LCBpLmUuLCBpZiBpdCBpcyBvbmUgdmFsaWQgdGVzdC1ib3QKKyAgLy8gZW52aXJvbm1lbnQuIEZv
ciBleGFtcGxlLCBpZiBhIGZpZWxkIGlzIHVua25vd24sIG9yIGlmIE9TIGlzIG5vdCBvbmUKKyAg
Ly8gZnVsbHkgZGVmaW5lZCBPUywgdGhlbiBpdCdzIHZhbGlkLgorICBib29sIElzVmFsaWQoKSBj
b25zdCBvdmVycmlkZTsKKworICAvLyBDaGVjayBpZiBhIGJvdCBjb25maWcgbWF0Y2hlcyBhIHRl
c3QgY29uZmlnLCBpLmUuLCB0aGUgdGVzdCBjb25maWcgaXMgYQorICAvLyBzdXBlcnNldCBvZiB0
aGUgYm90IGNvbmZpZy4KKyAgYm9vbCBNYXRjaGVzKGNvbnN0IEdQVVRlc3RDb25maWcmIGNvbmZp
ZykgY29uc3Q7CisgIGJvb2wgTWF0Y2hlcyhjb25zdCBzdGQ6OnN0cmluZyYgY29uZmlnX2RhdGEp
IGNvbnN0OworCisgIC8vIFNldHVwIHRoZSBjb25maWcgd2l0aCB0aGUgY3VycmVudCBncHUgdGVz
dGluZyBlbnZpcm9ubWVudC4KKyAgLy8gSWYgZ3B1X2luZm8gaXMgTlVMTCwgY29sbGVjdCBHUFVJ
bmZvIGZpcnN0LgorICBib29sIExvYWRDdXJyZW50Q29uZmlnKGNvbnN0IEdQVUluZm8qIGdwdV9p
bmZvKTsKKworICAvLyBDaGVjayBpZiB0aGlzIGJvdCdzIGNvbmZpZyBtYXRjaGVzIHxjb25maWdf
ZGF0YXwgb3IgYW55IG9mIHRoZSB8Y29uZmlnc3wuCisgIHN0YXRpYyBib29sIEN1cnJlbnRDb25m
aWdNYXRjaGVzKGNvbnN0IHN0ZDo6c3RyaW5nJiBjb25maWdfZGF0YSk7CisgIHN0YXRpYyBib29s
IEN1cnJlbnRDb25maWdNYXRjaGVzKGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgY29u
Zmlncyk7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgZ3B1CisKKyNlbmRpZiAgLy8gR1BVX0NPTkZJ
R19HUFVfVEVTVF9DT05GSUdfSF8KKwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9jb25maWdf
bWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Ro
aXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9jb25maWdfbWFjLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3Bh
cnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9jb25maWdfbWFjLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwyOCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIGdwdV90ZXN0X2NvbmZpZ19tYWMu
aDoKKy8vICAgSGVscGVyIGZ1bmN0aW9ucyBmb3IgZ3B1X3Rlc3RfY29uZmlnIHRoYXQgaGF2ZSB0
byBiZSBjb21waWxlZCBpbiBPYmplY3RpdmVDKysKKy8vCisKKyNpZm5kZWYgR1BVX1RFU1RfRVhQ
RUNUQVRJT05TX0dQVV9URVNUX0NPTkZJR19NQUNfSF8KKyNkZWZpbmUgR1BVX1RFU1RfRVhQRUNU
QVRJT05TX0dQVV9URVNUX0NPTkZJR19NQUNfSF8KKworI2luY2x1ZGUgImdwdV9pbmZvLmgiCisK
K25hbWVzcGFjZSBiYXNlIHsKKworY2xhc3MgU3lzSW5mbworeworICBwdWJsaWM6CisgICAgc3Rh
dGljIHZvaWQgT3BlcmF0aW5nU3lzdGVtVmVyc2lvbk51bWJlcnMoCisgICAgICAgIGludDMyICpt
YWpvcl92ZXJzaW9uLCBpbnQzMiAqbWlub3JfdmVyc2lvbiwgaW50MzIgKmJ1Z2ZpeF92ZXJzaW9u
KTsKK307CisKK30gLy8gbmFtZXNwYWNlIGJhc2UKKworZ3B1OjpHUFVJbmZvOjpHUFVEZXZpY2Ug
R2V0QWN0aXZlR1BVKCk7CisKKyNlbmRpZiAvLyBHUFVfVEVTVF9FWFBFQ1RBVElPTlNfR1BVX1RF
U1RfQ09ORklHX01BQ19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9jb25maWdfbWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9w
YXJ0eS9ncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X3Rlc3RfY29uZmlnX21hYy5tbQkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkv
Z3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV90ZXN0X2NvbmZpZ19tYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw2NyBAQAorLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBDaHJvbWl1bSBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gZ3B1X3Rlc3RfY29uZmlnX21hYy5tbToKKy8vICAg
SGVscGVyIGZ1bmN0aW9ucyBmb3IgZ3B1X3Rlc3RfY29uZmlnIHRoYXQgaGF2ZSB0byBiZSBjb21w
aWxlZCBpbiBPYmplY3RpdmVDKysKKworI2luY2x1ZGUgImdwdV90ZXN0X2NvbmZpZ19tYWMuaCIK
KworI2ltcG9ydCA8Q29jb2EvQ29jb2EuaD4KKworbmFtZXNwYWNlIGJhc2UgeworCit2b2lkIFN5
c0luZm86Ok9wZXJhdGluZ1N5c3RlbVZlcnNpb25OdW1iZXJzKAorICAgIGludDMyICptYWpvcl92
ZXJzaW9uLCBpbnQzMiAqbWlub3JfdmVyc2lvbiwgaW50MzIgKmJ1Z2ZpeF92ZXJzaW9uKQorewor
I2lmIE1BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgTUFDX09TX1hfVkVSU0lPTl8xMF84
CisgIEdlc3RhbHQoZ2VzdGFsdFN5c3RlbVZlcnNpb25NYWpvciwgcmVpbnRlcnByZXRfY2FzdDxT
SW50MzIqPihtYWpvcl92ZXJzaW9uKSk7CisgIEdlc3RhbHQoZ2VzdGFsdFN5c3RlbVZlcnNpb25N
aW5vciwgcmVpbnRlcnByZXRfY2FzdDxTSW50MzIqPihtaW5vcl92ZXJzaW9uKSk7CisgIEdlc3Rh
bHQoZ2VzdGFsdFN5c3RlbVZlcnNpb25CdWdGaXgsIHJlaW50ZXJwcmV0X2Nhc3Q8U0ludDMyKj4o
YnVnZml4X3ZlcnNpb24pKTsKKyNlbHNlCisgIE5TT3BlcmF0aW5nU3lzdGVtVmVyc2lvbiB2ZXJz
aW9uID0gW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBvcGVyYXRpbmdTeXN0ZW1WZXJzaW9u
XTsKKyAgKm1ham9yX3ZlcnNpb24gPSB2ZXJzaW9uLm1ham9yVmVyc2lvbjsKKyAgKm1pbm9yX3Zl
cnNpb24gPSB2ZXJzaW9uLm1pbm9yVmVyc2lvbjsKKyAgKmJ1Z2ZpeF92ZXJzaW9uID0gdmVyc2lv
bi5wYXRjaFZlcnNpb247CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgYmFzZQorCitVSW50
MzIgR2V0RW50cnlQcm9wZXJ0eShpb19yZWdpc3RyeV9lbnRyeV90IGVudHJ5LCBDRlN0cmluZ1Jl
ZiBwcm9wZXJ0eV9uYW1lKSB7CisgIENGVHlwZVJlZiB0eXBlID0gSU9SZWdpc3RyeUVudHJ5U2Vh
cmNoQ0ZQcm9wZXJ0eShlbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGtJT1NlcnZpY2VQbGFuZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5X25hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ0ZBbGxvY2F0b3JEZWZhdWx0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0lP
UmVnaXN0cnlJdGVyYXRlUmVjdXJzaXZlbHkgfCBrSU9SZWdpc3RyeUl0ZXJhdGVQYXJlbnRzKTsK
KyAgQ0ZEYXRhUmVmIGRhdGEgPSByZWludGVycHJldF9jYXN0PENGRGF0YVJlZj4odHlwZSk7Cisg
IGlmICghZGF0YSkgeworICAgIENGUmVsZWFzZShkYXRhKTsKKyAgICByZXR1cm4gMDsKKyAgfQor
CisgIFVJbnQzMiB2YWx1ZSA9IDA7CisgIGNvbnN0IHVpbnQzMl90KiB2YWx1ZVBvaW50ZXIgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7
CisgIGlmICh2YWx1ZVBvaW50ZXIgIT0gTlVMTCkgeworICAgIHZhbHVlID0gKnZhbHVlUG9pbnRl
cjsKKyAgfQorICBDRlJlbGVhc2UoZGF0YSk7CisgIHJldHVybiB2YWx1ZTsKK30KKworZ3B1OjpH
UFVJbmZvOjpHUFVEZXZpY2UgR2V0QWN0aXZlR1BVKCkgeworICBncHU6OkdQVUluZm86OkdQVURl
dmljZSBncHU7CisKKyAgLy8gSWdub3JlIHRoZSBmYWN0IHRoYXQgQ0dEaXNwbGF5SU9TZXJ2aWNl
UG9ydCBpcyBkZXByZWNhdGVkIGFzIEFwcGxlCisgIC8vIGRpZCBub3QgcHJvdmlkZSBhIGdvb2Qg
cmVwbGFjZW1lbnQgZm9yIGl0IGFzIG9mIDEwLjEwLgorICAvLyBUT0RPKGN3YWxsZXopIHJldmlz
aXQgd2l0aCBsYXRlciBzeXN0ZW1zCisgICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisg
ICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRp
b25zIgorICAgIGlvX3JlZ2lzdHJ5X2VudHJ5X3QgZHNwX3BvcnQgPSBDR0Rpc3BsYXlJT1NlcnZp
Y2VQb3J0KGtDR0RpcmVjdE1haW5EaXNwbGF5KTsKKyAgI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IHBvcAorCisgIGdwdS52ZW5kb3JfaWQgPSBHZXRFbnRyeVByb3BlcnR5KGRzcF9wb3J0LCBDRlNU
UigidmVuZG9yLWlkIikpOworICBncHUuZGV2aWNlX2lkID0gR2V0RW50cnlQcm9wZXJ0eShkc3Bf
cG9ydCwgQ0ZTVFIoImRldmljZS1pZCIpKTsKKyAgcmV0dXJuIGdwdTsKK30KKwpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVj
dGF0aW9ucy9ncHVfdGVzdF9leHBlY3RhdGlvbnNfcGFyc2VyLmNjCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBl
Y3RhdGlvbnMvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3BhcnNlci5jYwkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvZ3B1X3Rlc3Rf
ZXhwZWN0YXRpb25zL2dwdV90ZXN0X2V4cGVjdGF0aW9uc19wYXJzZXIuY2MJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw1ODMgQEAKKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQ2hyb21pdW0g
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKyNpbmNsdWRlICJncHVfdGVzdF9leHBlY3RhdGlvbnNf
cGFyc2VyLmgiCisKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorCituYW1lc3BhY2Ug
YmFzZSB7CisKK25hbWVzcGFjZSB7CisKK2Jvb2wgU3RhcnRzV2l0aEFTQ0lJKGNvbnN0IHN0ZDo6
c3RyaW5nJiBzdHIsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgc2Vh
cmNoLAorICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYXNlX3NlbnNpdGl2ZSkgeworICBBU1NF
UlQoIWNhc2Vfc2Vuc2l0aXZlKTsKKyAgcmV0dXJuIHN0ci5jb21wYXJlKDAsIHNlYXJjaC5sZW5n
dGgoKSwgc2VhcmNoKSA9PSAwOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgQ2hhcj4gaW5saW5lIENo
YXIgVG9Mb3dlckFTQ0lJKENoYXIgYykgeworICByZXR1cm4gKGMgPj0gJ0EnICYmIGMgPD0gJ1on
KSA/IChjICsgKCdhJyAtICdBJykpIDogYzsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgSXRlcj4K
K3N0YXRpYyBpbmxpbmUgYm9vbCBEb0xvd2VyQ2FzZUVxdWFsc0FTQ0lJKEl0ZXIgYV9iZWdpbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXIgYV9lbmQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBiKSB7
CisgIGZvciAoSXRlciBpdCA9IGFfYmVnaW47IGl0ICE9IGFfZW5kOyArK2l0LCArK2IpIHsKKyAg
ICBpZiAoISpiIHx8IGJhc2U6OlRvTG93ZXJBU0NJSSgqaXQpICE9ICpiKQorICAgICAgcmV0dXJu
IGZhbHNlOworICB9CisgIHJldHVybiAqYiA9PSAwOworfQorCitib29sIExvd2VyQ2FzZUVxdWFs
c0FTQ0lJKGNvbnN0IHN0ZDo6c3RyaW5nJiBhLCBjb25zdCBjaGFyKiBiKSB7CisgIHJldHVybiBE
b0xvd2VyQ2FzZUVxdWFsc0FTQ0lJKGEuYmVnaW4oKSwgYS5lbmQoKSwgYik7Cit9CisKK30gLy8g
YW5vbnltb3VzIG5hbWVzcGFjZQorCit9IC8vIG5hbWVzcGFjZSBiYXNlCisKK25hbWVzcGFjZSBn
cHUgeworCituYW1lc3BhY2UgeworCitlbnVtIExpbmVQYXJzZXJTdGFnZSB7CisgIGtMaW5lUGFy
c2VyQmVnaW4gPSAwLAorICBrTGluZVBhcnNlckJ1Z0lELAorICBrTGluZVBhcnNlckNvbmZpZ3Ms
CisgIGtMaW5lUGFyc2VyQ29sb24sCisgIGtMaW5lUGFyc2VyVGVzdE5hbWUsCisgIGtMaW5lUGFy
c2VyRXF1YWwsCisgIGtMaW5lUGFyc2VyRXhwZWN0YXRpb25zLAorfTsKKworZW51bSBUb2tlbiB7
CisgIC8vIG9zCisgIGtDb25maWdXaW5YUCA9IDAsCisgIGtDb25maWdXaW5WaXN0YSwKKyAga0Nv
bmZpZ1dpbjcsCisgIGtDb25maWdXaW44LAorICBrQ29uZmlnV2luMTAsCisgIGtDb25maWdXaW4s
CisgIGtDb25maWdNYWNMZW9wYXJkLAorICBrQ29uZmlnTWFjU25vd0xlb3BhcmQsCisgIGtDb25m
aWdNYWNMaW9uLAorICBrQ29uZmlnTWFjTW91bnRhaW5MaW9uLAorICBrQ29uZmlnTWFjTWF2ZXJp
Y2tzLAorICBrQ29uZmlnTWFjWW9zZW1pdGUsCisgIGtDb25maWdNYWNFbENhcGl0YW4sCisgIGtD
b25maWdNYWMsCisgIGtDb25maWdMaW51eCwKKyAga0NvbmZpZ0Nocm9tZU9TLAorICBrQ29uZmln
QW5kcm9pZCwKKyAgLy8gZ3B1IHZlbmRvcgorICBrQ29uZmlnTlZpZGlhLAorICBrQ29uZmlnQU1E
LAorICBrQ29uZmlnSW50ZWwsCisgIGtDb25maWdWTVdhcmUsCisgIC8vIGJ1aWxkIHR5cGUKKyAg
a0NvbmZpZ1JlbGVhc2UsCisgIGtDb25maWdEZWJ1ZywKKyAgLy8gQU5HTEUgcmVuZGVyZXIKKyAg
a0NvbmZpZ0QzRDksCisgIGtDb25maWdEM0QxMSwKKyAga0NvbmZpZ0dMRGVza3RvcCwKKyAga0Nv
bmZpZ0dMRVMsCisgIC8vIGV4cGVjdGF0aW9uCisgIGtFeHBlY3RhdGlvblBhc3MsCisgIGtFeHBl
Y3RhdGlvbkZhaWwsCisgIGtFeHBlY3RhdGlvbkZsYWt5LAorICBrRXhwZWN0YXRpb25UaW1lb3V0
LAorICBrRXhwZWN0YXRpb25Ta2lwLAorICAvLyBzZXBhcmF0b3IKKyAga1NlcGFyYXRvckNvbG9u
LAorICBrU2VwYXJhdG9yRXF1YWwsCisKKyAga051bWJlck9mRXhhY3RNYXRjaFRva2VucywKKwor
ICAvLyBvdGhlcnMKKyAga0NvbmZpZ0dQVURldmljZUlELAorICBrVG9rZW5Db21tZW50LAorICBr
VG9rZW5Xb3JkLAorfTsKKworc3RydWN0IFRva2VuSW5mbyB7CisgIGNvbnN0IGNoYXIqIG5hbWU7
CisgIGludDMyIGZsYWc7Cit9OworCitjb25zdCBUb2tlbkluZm8ga1Rva2VuRGF0YVtdID0gewor
ICAgIHsieHAiLCBHUFVUZXN0Q29uZmlnOjprT3NXaW5YUH0sCisgICAgeyJ2aXN0YSIsIEdQVVRl
c3RDb25maWc6OmtPc1dpblZpc3RhfSwKKyAgICB7IndpbjciLCBHUFVUZXN0Q29uZmlnOjprT3NX
aW43fSwKKyAgICB7IndpbjgiLCBHUFVUZXN0Q29uZmlnOjprT3NXaW44fSwKKyAgICB7IndpbjEw
IiwgR1BVVGVzdENvbmZpZzo6a09zV2luMTB9LAorICAgIHsid2luIiwgR1BVVGVzdENvbmZpZzo6
a09zV2lufSwKKyAgICB7Imxlb3BhcmQiLCBHUFVUZXN0Q29uZmlnOjprT3NNYWNMZW9wYXJkfSwK
KyAgICB7InNub3dsZW9wYXJkIiwgR1BVVGVzdENvbmZpZzo6a09zTWFjU25vd0xlb3BhcmR9LAor
ICAgIHsibGlvbiIsIEdQVVRlc3RDb25maWc6OmtPc01hY0xpb259LAorICAgIHsibW91bnRhaW5s
aW9uIiwgR1BVVGVzdENvbmZpZzo6a09zTWFjTW91bnRhaW5MaW9ufSwKKyAgICB7Im1hdmVyaWNr
cyIsIEdQVVRlc3RDb25maWc6OmtPc01hY01hdmVyaWNrc30sCisgICAgeyJ5b3NlbWl0ZSIsIEdQ
VVRlc3RDb25maWc6OmtPc01hY1lvc2VtaXRlfSwKKyAgICB7ImVsY2FwaXRhbiIsIEdQVVRlc3RD
b25maWc6OmtPc01hY0VsQ2FwaXRhbn0sCisgICAgeyJtYWMiLCBHUFVUZXN0Q29uZmlnOjprT3NN
YWN9LAorICAgIHsibGludXgiLCBHUFVUZXN0Q29uZmlnOjprT3NMaW51eH0sCisgICAgeyJjaHJv
bWVvcyIsIEdQVVRlc3RDb25maWc6OmtPc0Nocm9tZU9TfSwKKyAgICB7ImFuZHJvaWQiLCBHUFVU
ZXN0Q29uZmlnOjprT3NBbmRyb2lkfSwKKyAgICB7Im52aWRpYSIsIDB4MTBERX0sCisgICAgeyJh
bWQiLCAweDEwMDJ9LAorICAgIHsiaW50ZWwiLCAweDgwODZ9LAorICAgIHsidm13YXJlIiwgMHgx
NWFkfSwKKyAgICB7InJlbGVhc2UiLCBHUFVUZXN0Q29uZmlnOjprQnVpbGRUeXBlUmVsZWFzZX0s
CisgICAgeyJkZWJ1ZyIsIEdQVVRlc3RDb25maWc6OmtCdWlsZFR5cGVEZWJ1Z30sCisgICAgeyJk
M2Q5IiwgR1BVVGVzdENvbmZpZzo6a0FQSUQzRDl9LAorICAgIHsiZDNkMTEiLCBHUFVUZXN0Q29u
ZmlnOjprQVBJRDNEMTF9LAorICAgIHsib3BlbmdsIiwgR1BVVGVzdENvbmZpZzo6a0FQSUdMRGVz
a3RvcH0sCisgICAgeyJnbGVzIiwgR1BVVGVzdENvbmZpZzo6a0FQSUdMRVN9LAorICAgIHsicGFz
cyIsIEdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXI6OmtHcHVUZXN0UGFzc30sCisgICAgeyJmYWls
IiwgR1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNlcjo6a0dwdVRlc3RGYWlsfSwKKyAgICB7ImZsYWt5
IiwgR1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNlcjo6a0dwdVRlc3RGbGFreX0sCisgICAgeyJ0aW1l
b3V0IiwgR1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNlcjo6a0dwdVRlc3RUaW1lb3V0fSwKKyAgICB7
InNraXAiLCBHUFVUZXN0RXhwZWN0YXRpb25zUGFyc2VyOjprR3B1VGVzdFNraXB9LAorICAgIHsi
OiIsIDB9LAorICAgIHsiPSIsIDB9LAorfTsKKworZW51bSBFcnJvclR5cGUgeworICBrRXJyb3JG
aWxlSU8gPSAwLAorICBrRXJyb3JJbGxlZ2FsRW50cnksCisgIGtFcnJvckludmFsaWRFbnRyeSwK
KyAga0Vycm9yRW50cnlXaXRoT3NDb25mbGljdHMsCisgIGtFcnJvckVudHJ5V2l0aEdwdVZlbmRv
ckNvbmZsaWN0cywKKyAga0Vycm9yRW50cnlXaXRoQnVpbGRUeXBlQ29uZmxpY3RzLAorICBrRXJy
b3JFbnRyeVdpdGhBUElDb25mbGljdHMsCisgIGtFcnJvckVudHJ5V2l0aEdwdURldmljZUlkQ29u
ZmxpY3RzLAorICBrRXJyb3JFbnRyeVdpdGhFeHBlY3RhdGlvbkNvbmZsaWN0cywKKyAga0Vycm9y
RW50cmllc092ZXJsYXAsCisKKyAga051bWJlck9mRXJyb3JzLAorfTsKKworY29uc3QgY2hhciog
a0Vycm9yTWVzc2FnZVtdID0geworICAgICJmaWxlIElPIGZhaWxlZCIsCisgICAgImVudHJ5IHdp
dGggd3JvbmcgZm9ybWF0IiwKKyAgICAiZW50cnkgaW52YWxpZCwgbGlrZWx5IHdyb25nIG1vZGlm
aWVycyBjb21iaW5hdGlvbiIsCisgICAgImVudHJ5IHdpdGggT1MgbW9kaWZpZXIgY29uZmxpY3Rz
IiwKKyAgICAiZW50cnkgd2l0aCBHUFUgdmVuZG9yIG1vZGlmaWVyIGNvbmZsaWN0cyIsCisgICAg
ImVudHJ5IHdpdGggR1BVIGJ1aWxkIHR5cGUgY29uZmxpY3RzIiwKKyAgICAiZW50cnkgd2l0aCBH
UFUgQVBJIGNvbmZsaWN0cyIsCisgICAgImVudHJ5IHdpdGggR1BVIGRldmljZSBpZCBjb25mbGlj
dHMgb3IgbWFsZm9ybWF0IiwKKyAgICAiZW50cnkgd2l0aCBleHBlY3RhdGlvbiBtb2RpZmllciBj
b25mbGljdHMiLAorICAgICJ0d28gZW50cmllcycgY29uZmlncyBvdmVybGFwIiwKK307CisKK1Rv
a2VuIFBhcnNlVG9rZW4oY29uc3Qgc3RkOjpzdHJpbmcmIHdvcmQpIHsKKyAgaWYgKGJhc2U6OlN0
YXJ0c1dpdGhBU0NJSSh3b3JkLCAiLy8iLCBmYWxzZSkpCisgICAgcmV0dXJuIGtUb2tlbkNvbW1l
bnQ7CisgIGlmIChiYXNlOjpTdGFydHNXaXRoQVNDSUkod29yZCwgIjB4IiwgZmFsc2UpKQorICAg
IHJldHVybiBrQ29uZmlnR1BVRGV2aWNlSUQ7CisKKyAgZm9yIChpbnQzMiBpID0gMDsgaSA8IGtO
dW1iZXJPZkV4YWN0TWF0Y2hUb2tlbnM7ICsraSkgeworICAgIGlmIChiYXNlOjpMb3dlckNhc2VF
cXVhbHNBU0NJSSh3b3JkLCBrVG9rZW5EYXRhW2ldLm5hbWUpKQorICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFRva2VuPihpKTsKKyAgfQorICByZXR1cm4ga1Rva2VuV29yZDsKK30KKworLy8gcmVm
ZXJlbmNlIG5hbWUgY2FuIGhhdmUgdGhlIGxhc3QgY2hhcmFjdGVyIGFzICouCitib29sIE5hbWVz
TWF0Y2hpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIHJlZiwgY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3Rf
bmFtZSkgeworICBzaXplX3QgbGVuID0gcmVmLmxlbmd0aCgpOworICBpZiAobGVuID09IDApCisg
ICAgcmV0dXJuIGZhbHNlOworICBpZiAocmVmW2xlbiAtIDFdID09ICcqJykgeworICAgIGlmICh0
ZXN0X25hbWUubGVuZ3RoKCkgPiBsZW4gLTEgJiYKKyAgICAgICAgcmVmLmNvbXBhcmUoMCwgbGVu
IC0gMSwgdGVzdF9uYW1lLCAwLCBsZW4gLSAxKSA9PSAwKQorICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgcmV0dXJuIGZhbHNlOworICB9CisgIHJldHVybiAocmVmID09IHRlc3RfbmFtZSk7Cit9CisK
K30gIC8vIG5hbWVzcGFjZSBhbm9ueW1vdXMKKworR1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNlcjo6
R1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNlcigpIHsKKyAgLy8gU29tZSBzYW5pdHkgY2hlY2suCisg
IHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihrTnVtYmVyT2ZFeGFjdE1h
dGNoVG9rZW5zKSA9PQorICAgICAgICAgICAgICAgIHNpemVvZihrVG9rZW5EYXRhKSAvIHNpemVv
ZihrVG9rZW5EYXRhWzBdKSwgInNhbml0eSBjaGVjayIpOworICBzdGF0aWNfYXNzZXJ0KHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGludD4oa051bWJlck9mRXJyb3JzKSA9PQorICAgICAgICAgICAgICAg
IHNpemVvZihrRXJyb3JNZXNzYWdlKSAvIHNpemVvZihrRXJyb3JNZXNzYWdlWzBdKSwgInNhbml0
eSBjaGVjayIpOworfQorCitHUFVUZXN0RXhwZWN0YXRpb25zUGFyc2VyOjp+R1BVVGVzdEV4cGVj
dGF0aW9uc1BhcnNlcigpIHsKK30KKworYm9vbCBHUFVUZXN0RXhwZWN0YXRpb25zUGFyc2VyOjpM
b2FkVGVzdEV4cGVjdGF0aW9ucyhjb25zdCBzdGQ6OnN0cmluZyYgZGF0YSkgeworICBlbnRyaWVz
Xy5jbGVhcigpOworICBlcnJvcl9tZXNzYWdlc18uY2xlYXIoKTsKKworICBzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4gbGluZXMgPSBiYXNlOjpTcGxpdFN0cmluZygKKyAgICAgIGRhdGEsICJcbiIs
IGJhc2U6OlRSSU1fV0hJVEVTUEFDRSwgYmFzZTo6U1BMSVRfV0FOVF9BTEwpOworICBib29sIHJ0
ID0gdHJ1ZTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaW5lcy5zaXplKCk7ICsraSkgewor
ICAgIGlmICghUGFyc2VMaW5lKGxpbmVzW2ldLCBpICsgMSkpCisgICAgICBydCA9IGZhbHNlOwor
ICB9CisgIGlmIChEZXRlY3RDb25mbGljdHNCZXR3ZWVuRW50cmllcygpKSB7CisgICAgZW50cmll
c18uY2xlYXIoKTsKKyAgICBydCA9IGZhbHNlOworICB9CisKKyAgcmV0dXJuIHJ0OworfQorCiti
b29sIEdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXI6OkxvYWRUZXN0RXhwZWN0YXRpb25zRnJvbUZp
bGUoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgpIHsKKyAgZW50cmllc18uY2xlYXIoKTsK
KyAgZXJyb3JfbWVzc2FnZXNfLmNsZWFyKCk7CisKKyAgc3RkOjpzdHJpbmcgZGF0YTsKKyAgaWYg
KCFiYXNlOjpSZWFkRmlsZVRvU3RyaW5nKHBhdGgsICZkYXRhKSkgeworICAgIGVycm9yX21lc3Nh
Z2VzXy5wdXNoX2JhY2soa0Vycm9yTWVzc2FnZVtrRXJyb3JGaWxlSU9dKTsKKyAgICByZXR1cm4g
ZmFsc2U7CisgIH0KKyAgcmV0dXJuIExvYWRUZXN0RXhwZWN0YXRpb25zKGRhdGEpOworfQorCitp
bnQzMiBHUFVUZXN0RXhwZWN0YXRpb25zUGFyc2VyOjpHZXRUZXN0RXhwZWN0YXRpb24oCisgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIHRlc3RfbmFtZSwKKyAgICBjb25zdCBHUFVUZXN0Qm90Q29uZmln
JiBib3RfY29uZmlnKSBjb25zdCB7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW50cmllc18u
c2l6ZSgpOyArK2kpIHsKKyAgICBpZiAoTmFtZXNNYXRjaGluZyhlbnRyaWVzX1tpXS50ZXN0X25h
bWUsIHRlc3RfbmFtZSkgJiYKKyAgICAgICAgYm90X2NvbmZpZy5NYXRjaGVzKGVudHJpZXNfW2ld
LnRlc3RfY29uZmlnKSkKKyAgICAgIHJldHVybiBlbnRyaWVzX1tpXS50ZXN0X2V4cGVjdGF0aW9u
OworICB9CisgIHJldHVybiBrR3B1VGVzdFBhc3M7Cit9CisKK2NvbnN0IHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiYKK0dQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXI6OkdldEVycm9yTWVzc2FnZXMo
KSBjb25zdCB7CisgIHJldHVybiBlcnJvcl9tZXNzYWdlc187Cit9CisKK2Jvb2wgR1BVVGVzdEV4
cGVjdGF0aW9uc1BhcnNlcjo6UGFyc2VDb25maWcoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNv
bmZpZ19kYXRhLCBHUFVUZXN0Q29uZmlnKiBjb25maWcpIHsKKyAgRENIRUNLKGNvbmZpZyk7Cisg
IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB0b2tlbnMgPSBiYXNlOjpTcGxpdFN0cmluZygKKyAg
ICAgIGNvbmZpZ19kYXRhLCBiYXNlOjprV2hpdGVzcGFjZUFTQ0lJLCBiYXNlOjpLRUVQX1dISVRF
U1BBQ0UsCisgICAgICBiYXNlOjpTUExJVF9XQU5UX05PTkVNUFRZKTsKKworICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHRva2Vucy5zaXplKCk7ICsraSkgeworICAgIFRva2VuIHRva2VuID0gUGFy
c2VUb2tlbih0b2tlbnNbaV0pOworICAgIHN3aXRjaCAodG9rZW4pIHsKKyAgICAgIGNhc2Uga0Nv
bmZpZ1dpblhQOgorICAgICAgY2FzZSBrQ29uZmlnV2luVmlzdGE6CisgICAgICBjYXNlIGtDb25m
aWdXaW43OgorICAgICAgY2FzZSBrQ29uZmlnV2luODoKKyAgICAgIGNhc2Uga0NvbmZpZ1dpbjEw
OgorICAgICAgY2FzZSBrQ29uZmlnV2luOgorICAgICAgY2FzZSBrQ29uZmlnTWFjTGVvcGFyZDoK
KyAgICAgIGNhc2Uga0NvbmZpZ01hY1Nub3dMZW9wYXJkOgorICAgICAgY2FzZSBrQ29uZmlnTWFj
TGlvbjoKKyAgICAgIGNhc2Uga0NvbmZpZ01hY01vdW50YWluTGlvbjoKKyAgICAgIGNhc2Uga0Nv
bmZpZ01hY01hdmVyaWNrczoKKyAgICAgIGNhc2Uga0NvbmZpZ01hY1lvc2VtaXRlOgorICAgICAg
Y2FzZSBrQ29uZmlnTWFjRWxDYXBpdGFuOgorICAgICAgY2FzZSBrQ29uZmlnTWFjOgorICAgICAg
Y2FzZSBrQ29uZmlnTGludXg6CisgICAgICBjYXNlIGtDb25maWdDaHJvbWVPUzoKKyAgICAgIGNh
c2Uga0NvbmZpZ0FuZHJvaWQ6CisgICAgICBjYXNlIGtDb25maWdOVmlkaWE6CisgICAgICBjYXNl
IGtDb25maWdBTUQ6CisgICAgICBjYXNlIGtDb25maWdJbnRlbDoKKyAgICAgIGNhc2Uga0NvbmZp
Z1ZNV2FyZToKKyAgICAgIGNhc2Uga0NvbmZpZ1JlbGVhc2U6CisgICAgICBjYXNlIGtDb25maWdE
ZWJ1ZzoKKyAgICAgIGNhc2Uga0NvbmZpZ0QzRDk6CisgICAgICBjYXNlIGtDb25maWdEM0QxMToK
KyAgICAgIGNhc2Uga0NvbmZpZ0dMRGVza3RvcDoKKyAgICAgIGNhc2Uga0NvbmZpZ0dMRVM6Cisg
ICAgICBjYXNlIGtDb25maWdHUFVEZXZpY2VJRDoKKyAgICAgICAgaWYgKHRva2VuID09IGtDb25m
aWdHUFVEZXZpY2VJRCkgeworICAgICAgICAgIGlmICghVXBkYXRlVGVzdENvbmZpZyhjb25maWcs
IHRva2Vuc1tpXSwgMCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgaWYgKCFVcGRhdGVUZXN0Q29uZmlnKGNvbmZpZywgdG9rZW4sIDApKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgfQorICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBHUFVUZXN0RXhwZWN0YXRpb25zUGFyc2VyOjpQYXJzZUxpbmUoCisg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxpbmVfZGF0YSwgc2l6ZV90IGxpbmVfbnVtYmVyKSB7Cisg
IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB0b2tlbnMgPSBiYXNlOjpTcGxpdFN0cmluZygKKyAg
ICAgIGxpbmVfZGF0YSwgYmFzZTo6a1doaXRlc3BhY2VBU0NJSSwgYmFzZTo6S0VFUF9XSElURVNQ
QUNFLAorICAgICAgYmFzZTo6U1BMSVRfV0FOVF9OT05FTVBUWSk7CisgIGludDMyIHN0YWdlID0g
a0xpbmVQYXJzZXJCZWdpbjsKKyAgR1BVVGVzdEV4cGVjdGF0aW9uRW50cnkgZW50cnk7CisgIGVu
dHJ5LmxpbmVfbnVtYmVyID0gbGluZV9udW1iZXI7CisgIEdQVVRlc3RDb25maWcmIGNvbmZpZyA9
IGVudHJ5LnRlc3RfY29uZmlnOworICBib29sIGNvbW1lbnRzX2VuY291bnRlcmVkID0gZmFsc2U7
CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdG9rZW5zLnNpemUoKSAmJiAhY29tbWVudHNfZW5j
b3VudGVyZWQ7ICsraSkgeworICAgIFRva2VuIHRva2VuID0gUGFyc2VUb2tlbih0b2tlbnNbaV0p
OworICAgIHN3aXRjaCAodG9rZW4pIHsKKyAgICAgIGNhc2Uga1Rva2VuQ29tbWVudDoKKyAgICAg
ICAgY29tbWVudHNfZW5jb3VudGVyZWQgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICAgIGNh
c2Uga0NvbmZpZ1dpblhQOgorICAgICAgY2FzZSBrQ29uZmlnV2luVmlzdGE6CisgICAgICBjYXNl
IGtDb25maWdXaW43OgorICAgICAgY2FzZSBrQ29uZmlnV2luODoKKyAgICAgIGNhc2Uga0NvbmZp
Z1dpbjEwOgorICAgICAgY2FzZSBrQ29uZmlnV2luOgorICAgICAgY2FzZSBrQ29uZmlnTWFjTGVv
cGFyZDoKKyAgICAgIGNhc2Uga0NvbmZpZ01hY1Nub3dMZW9wYXJkOgorICAgICAgY2FzZSBrQ29u
ZmlnTWFjTGlvbjoKKyAgICAgIGNhc2Uga0NvbmZpZ01hY01vdW50YWluTGlvbjoKKyAgICAgIGNh
c2Uga0NvbmZpZ01hY01hdmVyaWNrczoKKyAgICAgIGNhc2Uga0NvbmZpZ01hY1lvc2VtaXRlOgor
ICAgICAgY2FzZSBrQ29uZmlnTWFjRWxDYXBpdGFuOgorICAgICAgY2FzZSBrQ29uZmlnTWFjOgor
ICAgICAgY2FzZSBrQ29uZmlnTGludXg6CisgICAgICBjYXNlIGtDb25maWdDaHJvbWVPUzoKKyAg
ICAgIGNhc2Uga0NvbmZpZ0FuZHJvaWQ6CisgICAgICBjYXNlIGtDb25maWdOVmlkaWE6CisgICAg
ICBjYXNlIGtDb25maWdBTUQ6CisgICAgICBjYXNlIGtDb25maWdJbnRlbDoKKyAgICAgIGNhc2Ug
a0NvbmZpZ1ZNV2FyZToKKyAgICAgIGNhc2Uga0NvbmZpZ1JlbGVhc2U6CisgICAgICBjYXNlIGtD
b25maWdEZWJ1ZzoKKyAgICAgIGNhc2Uga0NvbmZpZ0QzRDk6CisgICAgICBjYXNlIGtDb25maWdE
M0QxMToKKyAgICAgIGNhc2Uga0NvbmZpZ0dMRGVza3RvcDoKKyAgICAgIGNhc2Uga0NvbmZpZ0dM
RVM6CisgICAgICBjYXNlIGtDb25maWdHUFVEZXZpY2VJRDoKKyAgICAgICAgLy8gTU9ESUZJRVJT
LCBjb3VsZCBiZSBpbiBhbnkgb3JkZXIsIG5lZWQgYXQgbGVhc3Qgb25lLgorICAgICAgICBpZiAo
c3RhZ2UgIT0ga0xpbmVQYXJzZXJDb25maWdzICYmIHN0YWdlICE9IGtMaW5lUGFyc2VyQnVnSUQp
IHsKKyAgICAgICAgICBQdXNoRXJyb3JNZXNzYWdlKGtFcnJvck1lc3NhZ2Vba0Vycm9ySWxsZWdh
bEVudHJ5XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVyKTsKKyAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRva2VuID09IGtDb25m
aWdHUFVEZXZpY2VJRCkgeworICAgICAgICAgIGlmICghVXBkYXRlVGVzdENvbmZpZygmY29uZmln
LCB0b2tlbnNbaV0sIGxpbmVfbnVtYmVyKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBpZiAoIVVwZGF0ZVRlc3RDb25maWcoJmNvbmZpZywg
dG9rZW4sIGxpbmVfbnVtYmVyKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorICAgICAgICBpZiAoc3RhZ2UgPT0ga0xpbmVQYXJzZXJCdWdJRCkKKyAgICAgICAgICBzdGFn
ZSsrOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2Uga1NlcGFyYXRvckNvbG9uOgorICAgICAg
ICAvLyA6CisgICAgICAgIGlmIChzdGFnZSAhPSBrTGluZVBhcnNlckNvbmZpZ3MpIHsKKyAgICAg
ICAgICBQdXNoRXJyb3JNZXNzYWdlKGtFcnJvck1lc3NhZ2Vba0Vycm9ySWxsZWdhbEVudHJ5XSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVyKTsKKyAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgc3RhZ2UrKzsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIGtTZXBhcmF0b3JFcXVhbDoKKyAgICAgICAgLy8gPQorICAgICAgICBpZiAoc3Rh
Z2UgIT0ga0xpbmVQYXJzZXJUZXN0TmFtZSkgeworICAgICAgICAgIFB1c2hFcnJvck1lc3NhZ2Uo
a0Vycm9yTWVzc2FnZVtrRXJyb3JJbGxlZ2FsRW50cnldLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbGluZV9udW1iZXIpOworICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgICAgICBzdGFnZSsrOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2Uga1Rva2VuV29yZDoK
KyAgICAgICAgLy8gQlVHX0lEIG9yIFRFU1RfTkFNRQorICAgICAgICBpZiAoc3RhZ2UgPT0ga0xp
bmVQYXJzZXJCZWdpbikgeworICAgICAgICAgIC8vIEJ1ZyBJRCBpcyBub3QgdXNlZCBmb3IgYW55
dGhpbmc7IGlnbm9yZSBpdC4KKyAgICAgICAgfSBlbHNlIGlmIChzdGFnZSA9PSBrTGluZVBhcnNl
ckNvbG9uKSB7CisgICAgICAgICAgZW50cnkudGVzdF9uYW1lID0gdG9rZW5zW2ldOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgIFB1c2hFcnJvck1lc3NhZ2Uoa0Vycm9yTWVzc2FnZVtrRXJy
b3JJbGxlZ2FsRW50cnldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9udW1iZXIp
OworICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBzdGFnZSsrOwor
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2Uga0V4cGVjdGF0aW9uUGFzczoKKyAgICAgIGNhc2Ug
a0V4cGVjdGF0aW9uRmFpbDoKKyAgICAgIGNhc2Uga0V4cGVjdGF0aW9uRmxha3k6CisgICAgICBj
YXNlIGtFeHBlY3RhdGlvblRpbWVvdXQ6CisgICAgICBjYXNlIGtFeHBlY3RhdGlvblNraXA6Cisg
ICAgICAgIC8vIFRFU1RfRVhQRUNUQVRJT05TCisgICAgICAgIGlmIChzdGFnZSAhPSBrTGluZVBh
cnNlckVxdWFsICYmIHN0YWdlICE9IGtMaW5lUGFyc2VyRXhwZWN0YXRpb25zKSB7CisgICAgICAg
ICAgUHVzaEVycm9yTWVzc2FnZShrRXJyb3JNZXNzYWdlW2tFcnJvcklsbGVnYWxFbnRyeV0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX251bWJlcik7CisgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmICgoa1Rva2VuRGF0YVt0b2tlbl0uZmxhZyAm
IGVudHJ5LnRlc3RfZXhwZWN0YXRpb24pICE9IDApIHsKKyAgICAgICAgICBQdXNoRXJyb3JNZXNz
YWdlKGtFcnJvck1lc3NhZ2Vba0Vycm9yRW50cnlXaXRoRXhwZWN0YXRpb25Db25mbGljdHNdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9udW1iZXIpOworICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBlbnRyeS50ZXN0X2V4cGVjdGF0aW9uID0KKyAg
ICAgICAgICAgIChrVG9rZW5EYXRhW3Rva2VuXS5mbGFnIHwgZW50cnkudGVzdF9leHBlY3RhdGlv
bik7CisgICAgICAgIGlmIChzdGFnZSA9PSBrTGluZVBhcnNlckVxdWFsKQorICAgICAgICAgIHN0
YWdlKys7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICB9CisgIGlmIChzdGFnZSA9PSBrTGluZVBh
cnNlckJlZ2luKSB7CisgICAgLy8gVGhlIHdob2xlIGxpbmUgaXMgZW1wdHkgb3IgYWxsIGNvbW1l
bnRzCisgICAgcmV0dXJuIHRydWU7CisgIH0KKyAgaWYgKHN0YWdlID09IGtMaW5lUGFyc2VyRXhw
ZWN0YXRpb25zKSB7CisgICAgaWYgKCFjb25maWcuSXNWYWxpZCgpKSB7CisgICAgICAgIFB1c2hF
cnJvck1lc3NhZ2Uoa0Vycm9yTWVzc2FnZVtrRXJyb3JJbnZhbGlkRW50cnldLCBsaW5lX251bWJl
cik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgZW50cmllc18ucHVzaF9iYWNr
KGVudHJ5KTsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorICBQdXNoRXJyb3JNZXNzYWdlKGtFcnJv
ck1lc3NhZ2Vba0Vycm9ySWxsZWdhbEVudHJ5XSwgbGluZV9udW1iZXIpOworICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgR1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNlcjo6VXBkYXRlVGVzdENvbmZp
ZygKKyAgICBHUFVUZXN0Q29uZmlnKiBjb25maWcsIGludDMyIHRva2VuLCBzaXplX3QgbGluZV9u
dW1iZXIpIHsKKyAgRENIRUNLKGNvbmZpZyk7CisgIHN3aXRjaCAodG9rZW4pIHsKKyAgICBjYXNl
IGtDb25maWdXaW5YUDoKKyAgICBjYXNlIGtDb25maWdXaW5WaXN0YToKKyAgICBjYXNlIGtDb25m
aWdXaW43OgorICAgIGNhc2Uga0NvbmZpZ1dpbjg6CisgICAgY2FzZSBrQ29uZmlnV2luMTA6Cisg
ICAgY2FzZSBrQ29uZmlnV2luOgorICAgIGNhc2Uga0NvbmZpZ01hY0xlb3BhcmQ6CisgICAgY2Fz
ZSBrQ29uZmlnTWFjU25vd0xlb3BhcmQ6CisgICAgY2FzZSBrQ29uZmlnTWFjTGlvbjoKKyAgICBj
YXNlIGtDb25maWdNYWNNb3VudGFpbkxpb246CisgICAgY2FzZSBrQ29uZmlnTWFjTWF2ZXJpY2tz
OgorICAgIGNhc2Uga0NvbmZpZ01hY1lvc2VtaXRlOgorICAgIGNhc2Uga0NvbmZpZ01hY0VsQ2Fw
aXRhbjoKKyAgICBjYXNlIGtDb25maWdNYWM6CisgICAgY2FzZSBrQ29uZmlnTGludXg6CisgICAg
Y2FzZSBrQ29uZmlnQ2hyb21lT1M6CisgICAgY2FzZSBrQ29uZmlnQW5kcm9pZDoKKyAgICAgIGlm
ICgoY29uZmlnLT5vcygpICYga1Rva2VuRGF0YVt0b2tlbl0uZmxhZykgIT0gMCkgeworICAgICAg
ICBQdXNoRXJyb3JNZXNzYWdlKGtFcnJvck1lc3NhZ2Vba0Vycm9yRW50cnlXaXRoT3NDb25mbGlj
dHNdLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVyKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgfQorICAgICAgY29uZmlnLT5zZXRfb3MoY29uZmlnLT5vcygpIHwg
a1Rva2VuRGF0YVt0b2tlbl0uZmxhZyk7CisgICAgICBicmVhazsKKyAgICBjYXNlIGtDb25maWdO
VmlkaWE6CisgICAgY2FzZSBrQ29uZmlnQU1EOgorICAgIGNhc2Uga0NvbmZpZ0ludGVsOgorICAg
IGNhc2Uga0NvbmZpZ1ZNV2FyZToKKyAgICAgIHsKKyAgICAgICAgdWludDMyIGdwdV92ZW5kb3Ig
PQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyPihrVG9rZW5EYXRhW3Rva2VuXS5mbGFn
KTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb25maWctPmdwdV92ZW5kb3IoKS5z
aXplKCk7ICsraSkgeworICAgICAgICAgIGlmIChjb25maWctPmdwdV92ZW5kb3IoKVtpXSA9PSBn
cHVfdmVuZG9yKSB7CisgICAgICAgICAgICBQdXNoRXJyb3JNZXNzYWdlKAorICAgICAgICAgICAg
ICAgIGtFcnJvck1lc3NhZ2Vba0Vycm9yRW50cnlXaXRoR3B1VmVuZG9yQ29uZmxpY3RzXSwKKyAg
ICAgICAgICAgICAgICBsaW5lX251bWJlcik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNvbmZpZy0+QWRkR1BVVmVuZG9yKGdwdV92
ZW5kb3IpOworICAgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBrQ29uZmlnUmVsZWFzZToK
KyAgICBjYXNlIGtDb25maWdEZWJ1ZzoKKyAgICAgIGlmICgoY29uZmlnLT5idWlsZF90eXBlKCkg
JiBrVG9rZW5EYXRhW3Rva2VuXS5mbGFnKSAhPSAwKSB7CisgICAgICAgIFB1c2hFcnJvck1lc3Nh
Z2UoCisgICAgICAgICAgICBrRXJyb3JNZXNzYWdlW2tFcnJvckVudHJ5V2l0aEJ1aWxkVHlwZUNv
bmZsaWN0c10sCisgICAgICAgICAgICBsaW5lX251bWJlcik7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgIH0KKyAgICAgIGNvbmZpZy0+c2V0X2J1aWxkX3R5cGUoCisgICAgICAgICAgY29u
ZmlnLT5idWlsZF90eXBlKCkgfCBrVG9rZW5EYXRhW3Rva2VuXS5mbGFnKTsKKyAgICAgIGJyZWFr
OworICAgIGNhc2Uga0NvbmZpZ0QzRDk6CisgICAgY2FzZSBrQ29uZmlnRDNEMTE6CisgICAgY2Fz
ZSBrQ29uZmlnR0xEZXNrdG9wOgorICAgIGNhc2Uga0NvbmZpZ0dMRVM6CisgICAgICBpZiAoKGNv
bmZpZy0+YXBpKCkgJiBrVG9rZW5EYXRhW3Rva2VuXS5mbGFnKSAhPSAwKSB7CisgICAgICAgIFB1
c2hFcnJvck1lc3NhZ2Uoa0Vycm9yTWVzc2FnZVtrRXJyb3JFbnRyeVdpdGhBUElDb25mbGljdHNd
LAorICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVyKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgfQorICAgICAgY29uZmlnLT5zZXRfYXBpKGNvbmZpZy0+YXBpKCkgfCBr
VG9rZW5EYXRhW3Rva2VuXS5mbGFnKTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICBVTlJFQUNIQUJMRSgpOworICAgICAgYnJlYWs7CisgIH0KKyAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgR1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNlcjo6VXBkYXRlVGVzdENvbmZpZygKKyAgICBH
UFVUZXN0Q29uZmlnKiBjb25maWcsCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGdwdV9kZXZpY2Vf
aWQsCisgICAgc2l6ZV90IGxpbmVfbnVtYmVyKSB7CisgIERDSEVDSyhjb25maWcpOworICB1aW50
MzIgZGV2aWNlX2lkID0gMDsKKyAgaWYgKGNvbmZpZy0+Z3B1X2RldmljZV9pZCgpICE9IDAgfHwK
KyAgICAgICFiYXNlOjpIZXhTdHJpbmdUb1VJbnQoZ3B1X2RldmljZV9pZCwgJmRldmljZV9pZCkg
fHwKKyAgICAgIGRldmljZV9pZCA9PSAwKSB7CisgICAgUHVzaEVycm9yTWVzc2FnZShrRXJyb3JN
ZXNzYWdlW2tFcnJvckVudHJ5V2l0aEdwdURldmljZUlkQ29uZmxpY3RzXSwKKyAgICAgICAgICAg
ICAgICAgICAgIGxpbmVfbnVtYmVyKTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgY29uZmln
LT5zZXRfZ3B1X2RldmljZV9pZChkZXZpY2VfaWQpOworICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBHUFVUZXN0RXhwZWN0YXRpb25zUGFyc2VyOjpEZXRlY3RDb25mbGljdHNCZXR3ZWVuRW50cmll
cygpIHsKKyAgYm9vbCBydCA9IGZhbHNlOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJp
ZXNfLnNpemUoKTsgKytpKSB7CisgICAgZm9yIChzaXplX3QgaiA9IGkgKyAxOyBqIDwgZW50cmll
c18uc2l6ZSgpOyArK2opIHsKKyAgICAgIGlmIChlbnRyaWVzX1tpXS50ZXN0X25hbWUgPT0gZW50
cmllc19bal0udGVzdF9uYW1lICYmCisgICAgICAgICAgZW50cmllc19baV0udGVzdF9jb25maWcu
T3ZlcmxhcHNXaXRoKGVudHJpZXNfW2pdLnRlc3RfY29uZmlnKSkgeworICAgICAgICBQdXNoRXJy
b3JNZXNzYWdlKGtFcnJvck1lc3NhZ2Vba0Vycm9yRW50cmllc092ZXJsYXBdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIGVudHJpZXNfW2ldLmxpbmVfbnVtYmVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIGVudHJpZXNfW2pdLmxpbmVfbnVtYmVyKTsKKyAgICAgICAgcnQgPSB0cnVlOwor
ICAgICAgfQorICAgIH0KKyAgfQorICByZXR1cm4gcnQ7Cit9CisKK3ZvaWQgR1BVVGVzdEV4cGVj
dGF0aW9uc1BhcnNlcjo6UHVzaEVycm9yTWVzc2FnZSgKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYg
bWVzc2FnZSwgc2l6ZV90IGxpbmVfbnVtYmVyKSB7CisgIGVycm9yX21lc3NhZ2VzXy5wdXNoX2Jh
Y2soCisgICAgICBiYXNlOjpTdHJpbmdQcmludGYoIkxpbmUgJWQgOiAlcyIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihsaW5lX251bWJlciksIG1lc3NhZ2UuY19z
dHIoKSkpOworfQorCit2b2lkIEdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXI6OlB1c2hFcnJvck1l
c3NhZ2UoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UsCisgICAgc2l6ZV90IGVudHJ5
MV9saW5lX251bWJlciwKKyAgICBzaXplX3QgZW50cnkyX2xpbmVfbnVtYmVyKSB7CisgIGVycm9y
X21lc3NhZ2VzXy5wdXNoX2JhY2soCisgICAgICBiYXNlOjpTdHJpbmdQcmludGYoIkxpbmUgJWQg
YW5kICVkIDogJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4o
ZW50cnkxX2xpbmVfbnVtYmVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxpbnQ+KGVudHJ5Ml9saW5lX251bWJlciksCisgICAgICAgICAgICAgICAgICAgICAgICAgbWVz
c2FnZS5jX3N0cigpKSk7Cit9CisKK0dQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXI6OiBHUFVUZXN0
RXhwZWN0YXRpb25FbnRyeTo6R1BVVGVzdEV4cGVjdGF0aW9uRW50cnkoKQorICAgIDogdGVzdF9l
eHBlY3RhdGlvbigwKSwKKyAgICAgIGxpbmVfbnVtYmVyKDApIHsKK30KKworfSAgLy8gbmFtZXNw
YWNlIGdwdQorCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRf
cGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV90ZXN0X2V4cGVjdGF0aW9uc19wYXJzZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRf
cGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV90ZXN0X2V4cGVjdGF0aW9uc19wYXJzZXIu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhp
cmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV90ZXN0X2V4cGVjdGF0aW9uc19wYXJz
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg2IEBACisvLyBDb3B5cmlnaHQgKGMpIDIw
MTIgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisjaWZuZGVmIEdQVV9DT05G
SUdfR1BVX1RFU1RfRVhQRUNUQVRJT05TX1BBUlNFUl9IXworI2RlZmluZSBHUFVfQ09ORklHX0dQ
VV9URVNUX0VYUEVDVEFUSU9OU19QQVJTRVJfSF8KKworI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNs
dWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJhbmdsZV9jb25maWcuaCIKKyNpbmNsdWRlICJncHVf
dGVzdF9jb25maWcuaCIKKworbmFtZXNwYWNlIGdwdSB7CisKK2NsYXNzIEdQVV9FWFBPUlQgR1BV
VGVzdEV4cGVjdGF0aW9uc1BhcnNlciB7CisgcHVibGljOgorICBlbnVtIEdQVVRlc3RFeHBlY3Rh
dGlvbiB7CisgICAga0dwdVRlc3RQYXNzID0gMSA8PCAwLAorICAgIGtHcHVUZXN0RmFpbCA9IDEg
PDwgMSwKKyAgICBrR3B1VGVzdEZsYWt5ID0gMSA8PCAyLAorICAgIGtHcHVUZXN0VGltZW91dCA9
IDEgPDwgMywKKyAgICBrR3B1VGVzdFNraXAgPSAxIDw8IDQsCisgIH07CisKKyAgR1BVVGVzdEV4
cGVjdGF0aW9uc1BhcnNlcigpOworICB+R1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNlcigpOworCisg
IC8vIFBhcnNlIHRoZSB0ZXh0IGV4cGVjdGF0aW9ucywgYW5kIGlmIG5vIGVycm9yIGlzIGVuY291
bnRlcmVkLAorICAvLyBzYXZlIGFsbCB0aGUgZW50cmllcy4gT3RoZXJ3aXNlLCBnZW5lcmF0ZSBl
cnJvciBtZXNzYWdlcy4KKyAgLy8gUmV0dXJuIHRydWUgaWYgcGFyc2luZyBzdWNjZWVkcy4KKyAg
Ym9vbCBMb2FkVGVzdEV4cGVjdGF0aW9ucyhjb25zdCBzdGQ6OnN0cmluZyYgZGF0YSk7CisgIGJv
b2wgTG9hZFRlc3RFeHBlY3RhdGlvbnNGcm9tRmlsZShjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCk7
CisKKyAgLy8gUXVlcnkgZXJyb3IgbWVzc2FnZXMgZnJvbSB0aGUgbGFzdCBMb2FkVGVzdEV4cGVj
dGF0aW9ucygpIGNhbGwuCisgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgR2V0RXJy
b3JNZXNzYWdlcygpIGNvbnN0OworCisgIC8vIEdldCB0aGUgdGVzdCBleHBlY3RhdGlvbiBvZiBh
IGdpdmVuIHRlc3Qgb24gYSBnaXZlbiBib3QuCisgIGludDMyIEdldFRlc3RFeHBlY3RhdGlvbihj
b25zdCBzdGQ6OnN0cmluZyYgdGVzdF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR1BVVGVzdEJvdENvbmZpZyYgYm90X2NvbmZpZykgY29uc3Q7CisKKyAgLy8gUGFyc2Ug
YSBsaXN0IG9mIGNvbmZpZyBtb2RpZmllcnMuIElmIHdlIGhhdmUgYSB2YWxpZCBlbnRyeSB3aXRo
IG5vCisgIC8vIGNvbmZsaWN0cywgfCBjb25maWcgfCBzdG9yZXMgaXQsIGFuZCB0aGUgZnVuY3Rp
b24gcmV0dXJucyB0cnVlLgorICBib29sIFBhcnNlQ29uZmlnKGNvbnN0IHN0ZDo6c3RyaW5nJiBj
b25maWdfZGF0YSwgR1BVVGVzdENvbmZpZyogY29uZmlnKTsKKworIHByaXZhdGU6CisgIHN0cnVj
dCBHUFVUZXN0RXhwZWN0YXRpb25FbnRyeSB7CisgICAgR1BVVGVzdEV4cGVjdGF0aW9uRW50cnko
KTsKKworICAgIHN0ZDo6c3RyaW5nIHRlc3RfbmFtZTsKKyAgICBHUFVUZXN0Q29uZmlnIHRlc3Rf
Y29uZmlnOworICAgIGludDMyIHRlc3RfZXhwZWN0YXRpb247CisgICAgc2l6ZV90IGxpbmVfbnVt
YmVyOworICB9OworCisgIC8vIFBhcnNlIGEgbGluZSBvZiB0ZXh0LiBJZiB3ZSBoYXZlIGEgdmFs
aWQgZW50cnksIHNhdmUgaXQ7IG90aGVyd2lzZSwKKyAgLy8gZ2VuZXJhdGUgZXJyb3IgbWVzc2Fn
ZXMuCisgIGJvb2wgUGFyc2VMaW5lKGNvbnN0IHN0ZDo6c3RyaW5nJiBsaW5lX2RhdGEsIHNpemVf
dCBsaW5lX251bWJlcik7CisKKyAgLy8gVXBkYXRlIE9TL0dQVVZlbmRvci9CdWlsZFR5cGUgbW9k
aWZpZXJzLiBNYXkgZ2VuZXJhdGUgYW4gZXJyb3IgbWVzc2FnZS4KKyAgYm9vbCBVcGRhdGVUZXN0
Q29uZmlnKAorICAgICAgR1BVVGVzdENvbmZpZyogY29uZmlnLCBpbnQzMiB0b2tlbiwgc2l6ZV90
IGxpbmVfbnVtYmVyKTsKKworICAvLyBVcGRhdGUgR1BVRGV2aWNlSUQgbW9kaWZpZXIuIE1heSBn
ZW5lcmF0ZSBhbiBlcnJvciBtZXNzYWdlLgorICBib29sIFVwZGF0ZVRlc3RDb25maWcoR1BVVGVz
dENvbmZpZyogY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJiBncHVfZGV2aWNlX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxpbmVf
bnVtYmVyKTsKKworICAvLyBDaGVjayBpZiB0d28gZW50cmllcycgY29uZmlnIG92ZXJsYXAgd2l0
aCBlYWNoIG90aGVyLiBNYXkgZ2VuZXJhdGUgYW4KKyAgLy8gZXJyb3IgbWVzc2FnZS4KKyAgYm9v
bCBEZXRlY3RDb25mbGljdHNCZXR3ZWVuRW50cmllcygpOworCisgIC8vIFNhdmUgYW4gZXJyb3Ig
bWVzc2FnZSwgd2hpY2ggY2FuIGJlIHF1ZXJpZWQgbGF0ZXIuCisgIHZvaWQgUHVzaEVycm9yTWVz
c2FnZShjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSwgc2l6ZV90IGxpbmVfbnVtYmVyKTsKKyAg
dm9pZCBQdXNoRXJyb3JNZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGVudHJ5MV9saW5lX251bWJlciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBlbnRyeTJfbGluZV9udW1iZXIpOworCisgIHN0ZDo6dmVjdG9y
PEdQVVRlc3RFeHBlY3RhdGlvbkVudHJ5PiBlbnRyaWVzXzsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpz
dHJpbmc+IGVycm9yX21lc3NhZ2VzXzsKK307CisKK30gIC8vIG5hbWVzcGFjZSBncHUKKworI2Vu
ZGlmICAvLyBHUFVfQ09ORklHX0dQVV9URVNUX0VYUEVDVEFUSU9OU19QQVJTRVJfSF8KKwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNv
bi9MSUNFTlNFCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vTElDRU5TRQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL0xJQ0VOU0UJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOSBAQAorQ29weXJpZ2h0IChDKSAyMDExIE1pbG8g
WWlwCisKK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh
bnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKK29mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0
ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCitpbiB0aGUg
U29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlv
biB0aGUgcmlnaHRzCit0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3Ry
aWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCitjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBh
bmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKK2Z1cm5pc2hlZCB0
byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKK1RoZSBhYm92
ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGlu
Y2x1ZGVkIGluCithbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0
d2FyZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFO
VFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKK0lNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJ
TUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFCitBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENM
QUlNLCBEQU1BR0VTIE9SIE9USEVSCitMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9G
IENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorT1VUIE9GIE9SIElO
IENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5H
UyBJTgorVEhFIFNPRlRXQVJFLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vUkVB
RE1FLmNocm9taXVtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vUkVBRE1FLmNocm9taXVtCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpz
b24vUkVBRE1FLmNocm9taXVtCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOCBAQAorTmFtZTog
UmFwaWRKU09OCitVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9taWxveWlwL3JhcGlkanNvbgorVmVy
c2lvbjogMjRkZDdlZjgzOWI3OTk0MWQxMjllODMzMzY4ZTkxM2FhOWMwNDVkYQorTGljZW5zZTog
Q3VzdG9tCitMaWNlbnNlIEZpbGU6IExJQ0VOU0UKKworRGVzY3JpcHRpb246CitSYXBpZEpTT04g
aXMgYSBKU09OIHBhcnNlciBhbmQgZ2VuZXJhdG9yIGZvciBDKysuClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJk
X3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9hbGxvY2F0b3JzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlk
anNvbi9pbmNsdWRlL3JhcGlkanNvbi9hbGxvY2F0b3JzLmgJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNs
dWRlL3JhcGlkanNvbi9hbGxvY2F0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNDUg
QEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSBNaWxvIFlpcAorLy8KKy8vIFBlcm1pc3Npb24gaXMg
aGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBh
IGNvcHkKKy8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBm
aWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCisvLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91
dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCisv
LyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1Ymxp
Y2Vuc2UsIGFuZC9vciBzZWxsCisvLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVy
bWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy8vIGZ1cm5pc2hlZCB0byBkbyBz
bywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisvLworLy8gVGhlIGFib3Zl
IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5j
bHVkZWQgaW4KKy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNv
ZnR3YXJlLgorLy8KKy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VU
IFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisvLyBJTVBMSUVELCBJTkNMVURJTkcg
QlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKy8v
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRQorLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBM
SUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorLy8gTElBQklMSVRZLCBXSEVU
SEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcg
RlJPTSwKKy8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRI
RSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KKy8vIFRIRSBTT0ZUV0FSRS4KKworI2lmbmRlZiBS
QVBJREpTT05fQUxMT0NBVE9SU19IXworI2RlZmluZSBSQVBJREpTT05fQUxMT0NBVE9SU19IXwor
CisjaW5jbHVkZSAicmFwaWRqc29uLmgiCisKK1JBUElESlNPTl9OQU1FU1BBQ0VfQkVHSU4KKwor
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gQWxsb2NhdG9yCisKKy8qISBcY2xhc3MgcmFwaWRq
c29uOjpBbGxvY2F0b3IKKyAgICBcYnJpZWYgQ29uY2VwdCBmb3IgYWxsb2NhdGluZywgcmVzaXpp
bmcgYW5kIGZyZWVpbmcgbWVtb3J5IGJsb2NrLgorICAgIAorICAgIE5vdGUgdGhhdCBNYWxsb2Mo
KSBhbmQgUmVhbGxvYygpIGFyZSBub24tc3RhdGljIGJ1dCBGcmVlKCkgaXMgc3RhdGljLgorICAg
IAorICAgIFNvIGlmIGFuIGFsbG9jYXRvciBuZWVkIHRvIHN1cHBvcnQgRnJlZSgpLCBpdCBuZWVk
cyB0byBwdXQgaXRzIHBvaW50ZXIgaW4gCisgICAgdGhlIGhlYWRlciBvZiBtZW1vcnkgYmxvY2su
CisKK1xjb2RlCitjb25jZXB0IEFsbG9jYXRvciB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wga05l
ZWRGcmVlOyAgICAvLyE8IFdoZXRoZXIgdGhpcyBhbGxvY2F0b3IgbmVlZHMgdG8gY2FsbCBGcmVl
KCkuCisKKyAgICAvLyBBbGxvY2F0ZSBhIG1lbW9yeSBibG9jay4KKyAgICAvLyBccGFyYW0gc2l6
ZSBvZiB0aGUgbWVtb3J5IGJsb2NrIGluIGJ5dGVzLgorICAgIC8vIFxyZXR1cm5zIHBvaW50ZXIg
dG8gdGhlIG1lbW9yeSBibG9jay4KKyAgICB2b2lkKiBNYWxsb2Moc2l6ZV90IHNpemUpOworCisg
ICAgLy8gUmVzaXplIGEgbWVtb3J5IGJsb2NrLgorICAgIC8vIFxwYXJhbSBvcmlnaW5hbFB0ciBU
aGUgcG9pbnRlciB0byBjdXJyZW50IG1lbW9yeSBibG9jay4gTnVsbCBwb2ludGVyIGlzIHBlcm1p
dHRlZC4KKyAgICAvLyBccGFyYW0gb3JpZ2luYWxTaXplIFRoZSBjdXJyZW50IHNpemUgaW4gYnl0
ZXMuIChEZXNpZ24gaXNzdWU6IHNpbmNlIHNvbWUgYWxsb2NhdG9yIG1heSBub3QgYm9vay1rZWVw
IHRoaXMsIGV4cGxpY2l0bHkgcGFzcyB0byBpdCBjYW4gc2F2ZSBtZW1vcnkuKQorICAgIC8vIFxw
YXJhbSBuZXdTaXplIHRoZSBuZXcgc2l6ZSBpbiBieXRlcy4KKyAgICB2b2lkKiBSZWFsbG9jKHZv
aWQqIG9yaWdpbmFsUHRyLCBzaXplX3Qgb3JpZ2luYWxTaXplLCBzaXplX3QgbmV3U2l6ZSk7CisK
KyAgICAvLyBGcmVlIGEgbWVtb3J5IGJsb2NrLgorICAgIC8vIFxwYXJhbSBwb2ludGVyIHRvIHRo
ZSBtZW1vcnkgYmxvY2suIE51bGwgcG9pbnRlciBpcyBwZXJtaXR0ZWQuCisgICAgc3RhdGljIHZv
aWQgRnJlZSh2b2lkICpwdHIpOworfTsKK1xlbmRjb2RlCisqLworCisvLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vCisvLyBDcnRBbGxvY2F0b3IKKworLy8hIEMtcnVudGltZSBsaWJyYXJ5IGFsbG9jYXRv
ci4KKy8qISBUaGlzIGNsYXNzIGlzIGp1c3Qgd3JhcHBlciBmb3Igc3RhbmRhcmQgQyBsaWJyYXJ5
IG1lbW9yeSByb3V0aW5lcy4KKyAgICBcbm90ZSBpbXBsZW1lbnRzIEFsbG9jYXRvciBjb25jZXB0
CisqLworY2xhc3MgQ3J0QWxsb2NhdG9yIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgYm9v
bCBrTmVlZEZyZWUgPSB0cnVlOworICAgIHZvaWQqIE1hbGxvYyhzaXplX3Qgc2l6ZSkgeyByZXR1
cm4gc3RkOjptYWxsb2Moc2l6ZSk7IH0KKyAgICB2b2lkKiBSZWFsbG9jKHZvaWQqIG9yaWdpbmFs
UHRyLCBzaXplX3Qgb3JpZ2luYWxTaXplLCBzaXplX3QgbmV3U2l6ZSkgeyAodm9pZClvcmlnaW5h
bFNpemU7IHJldHVybiBzdGQ6OnJlYWxsb2Mob3JpZ2luYWxQdHIsIG5ld1NpemUpOyB9CisgICAg
c3RhdGljIHZvaWQgRnJlZSh2b2lkICpwdHIpIHsgc3RkOjpmcmVlKHB0cik7IH0KK307CisKKy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIE1lbW9yeVBvb2xBbGxvY2F0b3IKKworLy8hIERlZmF1
bHQgbWVtb3J5IGFsbG9jYXRvciB1c2VkIGJ5IHRoZSBwYXJzZXIgYW5kIERPTS4KKy8qISBUaGlz
IGFsbG9jYXRvciBhbGxvY2F0ZSBtZW1vcnkgYmxvY2tzIGZyb20gcHJlLWFsbG9jYXRlZCBtZW1v
cnkgY2h1bmtzLiAKKworICAgIEl0IGRvZXMgbm90IGZyZWUgbWVtb3J5IGJsb2Nrcy4gQW5kIFJl
YWxsb2MoKSBvbmx5IGFsbG9jYXRlIG5ldyBtZW1vcnkuCisKKyAgICBUaGUgbWVtb3J5IGNodW5r
cyBhcmUgYWxsb2NhdGVkIGJ5IEJhc2VBbGxvY2F0b3IsIHdoaWNoIGlzIENydEFsbG9jYXRvciBi
eSBkZWZhdWx0LgorCisgICAgVXNlciBtYXkgYWxzbyBzdXBwbHkgYSBidWZmZXIgYXMgdGhlIGZp
cnN0IGNodW5rLgorCisgICAgSWYgdGhlIHVzZXItYnVmZmVyIGlzIGZ1bGwgdGhlbiBhZGRpdGlv
bmFsIGNodW5rcyBhcmUgYWxsb2NhdGVkIGJ5IEJhc2VBbGxvY2F0b3IuCisKKyAgICBUaGUgdXNl
ci1idWZmZXIgaXMgbm90IGRlYWxsb2NhdGVkIGJ5IHRoaXMgYWxsb2NhdG9yLgorCisgICAgXHRw
YXJhbSBCYXNlQWxsb2NhdG9yIHRoZSBhbGxvY2F0b3IgdHlwZSBmb3IgYWxsb2NhdGluZyBtZW1v
cnkgY2h1bmtzLiBEZWZhdWx0IGlzIENydEFsbG9jYXRvci4KKyAgICBcbm90ZSBpbXBsZW1lbnRz
IEFsbG9jYXRvciBjb25jZXB0CisqLwordGVtcGxhdGUgPHR5cGVuYW1lIEJhc2VBbGxvY2F0b3Ig
PSBDcnRBbGxvY2F0b3I+CitjbGFzcyBNZW1vcnlQb29sQWxsb2NhdG9yIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgY29uc3QgYm9vbCBrTmVlZEZyZWUgPSBmYWxzZTsgICAgLy8hPCBUZWxsIHVzZXJz
IHRoYXQgbm8gbmVlZCB0byBjYWxsIEZyZWUoKSB3aXRoIHRoaXMgYWxsb2NhdG9yLiAoY29uY2Vw
dCBBbGxvY2F0b3IpCisKKyAgICAvLyEgQ29uc3RydWN0b3Igd2l0aCBjaHVua1NpemUuCisgICAg
LyohIFxwYXJhbSBjaHVua1NpemUgVGhlIHNpemUgb2YgbWVtb3J5IGNodW5rLiBUaGUgZGVmYXVs
dCBpcyBrRGVmYXVsdENodW5rU2l6ZS4KKyAgICAgICAgXHBhcmFtIGJhc2VBbGxvY2F0b3IgVGhl
IGFsbG9jYXRvciBmb3IgYWxsb2NhdGluZyBtZW1vcnkgY2h1bmtzLgorICAgICovCisgICAgTWVt
b3J5UG9vbEFsbG9jYXRvcihzaXplX3QgY2h1bmtTaXplID0ga0RlZmF1bHRDaHVua0NhcGFjaXR5
LCBCYXNlQWxsb2NhdG9yKiBiYXNlQWxsb2NhdG9yID0gMCkgOiAKKyAgICAgICAgY2h1bmtIZWFk
XygwKSwgY2h1bmtfY2FwYWNpdHlfKGNodW5rU2l6ZSksIHVzZXJCdWZmZXJfKDApLCBiYXNlQWxs
b2NhdG9yXyhiYXNlQWxsb2NhdG9yKSwgb3duQmFzZUFsbG9jYXRvcl8oMCkKKyAgICB7CisgICAg
fQorCisgICAgLy8hIENvbnN0cnVjdG9yIHdpdGggdXNlci1zdXBwbGllZCBidWZmZXIuCisgICAg
LyohIFRoZSB1c2VyIGJ1ZmZlciB3aWxsIGJlIHVzZWQgZmlyc3RseS4gV2hlbiBpdCBpcyBmdWxs
LCBtZW1vcnkgcG9vbCBhbGxvY2F0ZXMgbmV3IGNodW5rIHdpdGggY2h1bmsgc2l6ZS4KKworICAg
ICAgICBUaGUgdXNlciBidWZmZXIgd2lsbCBub3QgYmUgZGVhbGxvY2F0ZWQgd2hlbiB0aGlzIGFs
bG9jYXRvciBpcyBkZXN0cnVjdGVkLgorCisgICAgICAgIFxwYXJhbSBidWZmZXIgVXNlciBzdXBw
bGllZCBidWZmZXIuCisgICAgICAgIFxwYXJhbSBzaXplIFNpemUgb2YgdGhlIGJ1ZmZlciBpbiBi
eXRlcy4gSXQgbXVzdCBhdCBsZWFzdCBsYXJnZXIgdGhhbiBzaXplb2YoQ2h1bmtIZWFkZXIpLgor
ICAgICAgICBccGFyYW0gY2h1bmtTaXplIFRoZSBzaXplIG9mIG1lbW9yeSBjaHVuay4gVGhlIGRl
ZmF1bHQgaXMga0RlZmF1bHRDaHVua1NpemUuCisgICAgICAgIFxwYXJhbSBiYXNlQWxsb2NhdG9y
IFRoZSBhbGxvY2F0b3IgZm9yIGFsbG9jYXRpbmcgbWVtb3J5IGNodW5rcy4KKyAgICAqLworICAg
IE1lbW9yeVBvb2xBbGxvY2F0b3Iodm9pZCAqYnVmZmVyLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IGNo
dW5rU2l6ZSA9IGtEZWZhdWx0Q2h1bmtDYXBhY2l0eSwgQmFzZUFsbG9jYXRvciogYmFzZUFsbG9j
YXRvciA9IDApIDoKKyAgICAgICAgY2h1bmtIZWFkXygwKSwgY2h1bmtfY2FwYWNpdHlfKGNodW5r
U2l6ZSksIHVzZXJCdWZmZXJfKGJ1ZmZlciksIGJhc2VBbGxvY2F0b3JfKGJhc2VBbGxvY2F0b3Ip
LCBvd25CYXNlQWxsb2NhdG9yXygwKQorICAgIHsKKyAgICAgICAgUkFQSURKU09OX0FTU0VSVChi
dWZmZXIgIT0gMCk7CisgICAgICAgIFJBUElESlNPTl9BU1NFUlQoc2l6ZSA+IHNpemVvZihDaHVu
a0hlYWRlcikpOworICAgICAgICBjaHVua0hlYWRfID0gcmVpbnRlcnByZXRfY2FzdDxDaHVua0hl
YWRlcio+KGJ1ZmZlcik7CisgICAgICAgIGNodW5rSGVhZF8tPmNhcGFjaXR5ID0gc2l6ZSAtIHNp
emVvZihDaHVua0hlYWRlcik7CisgICAgICAgIGNodW5rSGVhZF8tPnNpemUgPSAwOworICAgICAg
ICBjaHVua0hlYWRfLT5uZXh0ID0gMDsKKyAgICB9CisKKyAgICAvLyEgRGVzdHJ1Y3Rvci4KKyAg
ICAvKiEgVGhpcyBkZWFsbG9jYXRlcyBhbGwgbWVtb3J5IGNodW5rcywgZXhjbHVkaW5nIHRoZSB1
c2VyLXN1cHBsaWVkIGJ1ZmZlci4KKyAgICAqLworICAgIH5NZW1vcnlQb29sQWxsb2NhdG9yKCkg
eworICAgICAgICBDbGVhcigpOworICAgICAgICBSQVBJREpTT05fREVMRVRFKG93bkJhc2VBbGxv
Y2F0b3JfKTsKKyAgICB9CisKKyAgICAvLyEgRGVhbGxvY2F0ZXMgYWxsIG1lbW9yeSBjaHVua3Ms
IGV4Y2x1ZGluZyB0aGUgdXNlci1zdXBwbGllZCBidWZmZXIuCisgICAgdm9pZCBDbGVhcigpIHsK
KyAgICAgICAgd2hpbGUoY2h1bmtIZWFkXyAhPSAwICYmIGNodW5rSGVhZF8gIT0gdXNlckJ1ZmZl
cl8pIHsKKyAgICAgICAgICAgIENodW5rSGVhZGVyKiBuZXh0ID0gY2h1bmtIZWFkXy0+bmV4dDsK
KyAgICAgICAgICAgIGJhc2VBbGxvY2F0b3JfLT5GcmVlKGNodW5rSGVhZF8pOworICAgICAgICAg
ICAgY2h1bmtIZWFkXyA9IG5leHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyEgQ29tcHV0
ZXMgdGhlIHRvdGFsIGNhcGFjaXR5IG9mIGFsbG9jYXRlZCBtZW1vcnkgY2h1bmtzLgorICAgIC8q
ISBccmV0dXJuIHRvdGFsIGNhcGFjaXR5IGluIGJ5dGVzLgorICAgICovCisgICAgc2l6ZV90IENh
cGFjaXR5KCkgY29uc3QgeworICAgICAgICBzaXplX3QgY2FwYWNpdHkgPSAwOworICAgICAgICBm
b3IgKENodW5rSGVhZGVyKiBjID0gY2h1bmtIZWFkXzsgYyAhPSAwOyBjID0gYy0+bmV4dCkKKyAg
ICAgICAgICAgIGNhcGFjaXR5ICs9IGMtPmNhcGFjaXR5OworICAgICAgICByZXR1cm4gY2FwYWNp
dHk7CisgICAgfQorCisgICAgLy8hIENvbXB1dGVzIHRoZSBtZW1vcnkgYmxvY2tzIGFsbG9jYXRl
ZC4KKyAgICAvKiEgXHJldHVybiB0b3RhbCB1c2VkIGJ5dGVzLgorICAgICovCisgICAgc2l6ZV90
IFNpemUoKSBjb25zdCB7CisgICAgICAgIHNpemVfdCBzaXplID0gMDsKKyAgICAgICAgZm9yIChD
aHVua0hlYWRlciogYyA9IGNodW5rSGVhZF87IGMgIT0gMDsgYyA9IGMtPm5leHQpCisgICAgICAg
ICAgICBzaXplICs9IGMtPnNpemU7CisgICAgICAgIHJldHVybiBzaXplOworICAgIH0KKworICAg
IC8vISBBbGxvY2F0ZXMgYSBtZW1vcnkgYmxvY2suIChjb25jZXB0IEFsbG9jYXRvcikKKyAgICB2
b2lkKiBNYWxsb2Moc2l6ZV90IHNpemUpIHsKKyAgICAgICAgc2l6ZSA9IFJBUElESlNPTl9BTElH
TihzaXplKTsKKyAgICAgICAgaWYgKGNodW5rSGVhZF8gPT0gMCB8fCBjaHVua0hlYWRfLT5zaXpl
ICsgc2l6ZSA+IGNodW5rSGVhZF8tPmNhcGFjaXR5KQorICAgICAgICAgICAgQWRkQ2h1bmsoY2h1
bmtfY2FwYWNpdHlfID4gc2l6ZSA/IGNodW5rX2NhcGFjaXR5XyA6IHNpemUpOworCisgICAgICAg
IHZvaWQgKmJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhciAqPihjaHVua0hlYWRfICsgMSkg
KyBjaHVua0hlYWRfLT5zaXplOworICAgICAgICBjaHVua0hlYWRfLT5zaXplICs9IHNpemU7Cisg
ICAgICAgIHJldHVybiBidWZmZXI7CisgICAgfQorCisgICAgLy8hIFJlc2l6ZXMgYSBtZW1vcnkg
YmxvY2sgKGNvbmNlcHQgQWxsb2NhdG9yKQorICAgIHZvaWQqIFJlYWxsb2Modm9pZCogb3JpZ2lu
YWxQdHIsIHNpemVfdCBvcmlnaW5hbFNpemUsIHNpemVfdCBuZXdTaXplKSB7CisgICAgICAgIGlm
IChvcmlnaW5hbFB0ciA9PSAwKQorICAgICAgICAgICAgcmV0dXJuIE1hbGxvYyhuZXdTaXplKTsK
KworICAgICAgICAvLyBEbyBub3Qgc2hyaW5rIGlmIG5ldyBzaXplIGlzIHNtYWxsZXIgdGhhbiBv
cmlnaW5hbAorICAgICAgICBpZiAob3JpZ2luYWxTaXplID49IG5ld1NpemUpCisgICAgICAgICAg
ICByZXR1cm4gb3JpZ2luYWxQdHI7CisKKyAgICAgICAgLy8gU2ltcGx5IGV4cGFuZCBpdCBpZiBp
dCBpcyB0aGUgbGFzdCBhbGxvY2F0aW9uIGFuZCB0aGVyZSBpcyBzdWZmaWNpZW50IHNwYWNlCisg
ICAgICAgIGlmIChvcmlnaW5hbFB0ciA9PSAoY2hhciAqKShjaHVua0hlYWRfICsgMSkgKyBjaHVu
a0hlYWRfLT5zaXplIC0gb3JpZ2luYWxTaXplKSB7CisgICAgICAgICAgICBzaXplX3QgaW5jcmVt
ZW50ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihuZXdTaXplIC0gb3JpZ2luYWxTaXplKTsKKyAgICAg
ICAgICAgIGluY3JlbWVudCA9IFJBUElESlNPTl9BTElHTihpbmNyZW1lbnQpOworICAgICAgICAg
ICAgaWYgKGNodW5rSGVhZF8tPnNpemUgKyBpbmNyZW1lbnQgPD0gY2h1bmtIZWFkXy0+Y2FwYWNp
dHkpIHsKKyAgICAgICAgICAgICAgICBjaHVua0hlYWRfLT5zaXplICs9IGluY3JlbWVudDsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxQdHI7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICAvLyBSZWFsbG9jIHByb2Nlc3M6IGFsbG9jYXRlIGFuZCBjb3B5IG1lbW9y
eSwgZG8gbm90IGZyZWUgb3JpZ2luYWwgYnVmZmVyLgorICAgICAgICB2b2lkKiBuZXdCdWZmZXIg
PSBNYWxsb2MobmV3U2l6ZSk7CisgICAgICAgIFJBUElESlNPTl9BU1NFUlQobmV3QnVmZmVyICE9
IDApOyAgIC8vIERvIG5vdCBoYW5kbGUgb3V0LW9mLW1lbW9yeSBleHBsaWNpdGx5LgorICAgICAg
ICByZXR1cm4gc3RkOjptZW1jcHkobmV3QnVmZmVyLCBvcmlnaW5hbFB0ciwgb3JpZ2luYWxTaXpl
KTsKKyAgICB9CisKKyAgICAvLyEgRnJlZXMgYSBtZW1vcnkgYmxvY2sgKGNvbmNlcHQgQWxsb2Nh
dG9yKQorICAgIHN0YXRpYyB2b2lkIEZyZWUodm9pZCAqcHRyKSB7ICh2b2lkKXB0cjsgfSAvLyBE
byBub3RoaW5nCisKK3ByaXZhdGU6CisgICAgLy8hIENvcHkgY29uc3RydWN0b3IgaXMgbm90IHBl
cm1pdHRlZC4KKyAgICBNZW1vcnlQb29sQWxsb2NhdG9yKGNvbnN0IE1lbW9yeVBvb2xBbGxvY2F0
b3ImIHJocykgLyogPSBkZWxldGUgKi87CisgICAgLy8hIENvcHkgYXNzaWdubWVudCBvcGVyYXRv
ciBpcyBub3QgcGVybWl0dGVkLgorICAgIE1lbW9yeVBvb2xBbGxvY2F0b3ImIG9wZXJhdG9yPShj
b25zdCBNZW1vcnlQb29sQWxsb2NhdG9yJiByaHMpIC8qID0gZGVsZXRlICovOworCisgICAgLy8h
IENyZWF0ZXMgYSBuZXcgY2h1bmsuCisgICAgLyohIFxwYXJhbSBjYXBhY2l0eSBDYXBhY2l0eSBv
ZiB0aGUgY2h1bmsgaW4gYnl0ZXMuCisgICAgKi8KKyAgICB2b2lkIEFkZENodW5rKHNpemVfdCBj
YXBhY2l0eSkgeworICAgICAgICBpZiAoIWJhc2VBbGxvY2F0b3JfKQorICAgICAgICAgICAgb3du
QmFzZUFsbG9jYXRvcl8gPSBiYXNlQWxsb2NhdG9yXyA9IFJBUElESlNPTl9ORVcoQmFzZUFsbG9j
YXRvcigpKTsKKyAgICAgICAgQ2h1bmtIZWFkZXIqIGNodW5rID0gcmVpbnRlcnByZXRfY2FzdDxD
aHVua0hlYWRlcio+KGJhc2VBbGxvY2F0b3JfLT5NYWxsb2Moc2l6ZW9mKENodW5rSGVhZGVyKSAr
IGNhcGFjaXR5KSk7CisgICAgICAgIGNodW5rLT5jYXBhY2l0eSA9IGNhcGFjaXR5OworICAgICAg
ICBjaHVuay0+c2l6ZSA9IDA7CisgICAgICAgIGNodW5rLT5uZXh0ID0gY2h1bmtIZWFkXzsKKyAg
ICAgICAgY2h1bmtIZWFkXyA9ICBjaHVuazsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgaW50
IGtEZWZhdWx0Q2h1bmtDYXBhY2l0eSA9IDY0ICogMTAyNDsgLy8hPCBEZWZhdWx0IGNodW5rIGNh
cGFjaXR5LgorCisgICAgLy8hIENodW5rIGhlYWRlciBmb3IgcGVycGVuZGluZyB0byBlYWNoIGNo
dW5rLgorICAgIC8qISBDaHVua3MgYXJlIHN0b3JlZCBhcyBhIHNpbmdseSBsaW5rZWQgbGlzdC4K
KyAgICAqLworICAgIHN0cnVjdCBDaHVua0hlYWRlciB7CisgICAgICAgIHNpemVfdCBjYXBhY2l0
eTsgICAgLy8hPCBDYXBhY2l0eSBvZiB0aGUgY2h1bmsgaW4gYnl0ZXMgKGV4Y2x1ZGluZyB0aGUg
aGVhZGVyIGl0c2VsZikuCisgICAgICAgIHNpemVfdCBzaXplOyAgICAgICAgLy8hPCBDdXJyZW50
IHNpemUgb2YgYWxsb2NhdGVkIG1lbW9yeSBpbiBieXRlcy4KKyAgICAgICAgQ2h1bmtIZWFkZXIg
Km5leHQ7ICAvLyE8IE5leHQgY2h1bmsgaW4gdGhlIGxpbmtlZCBsaXN0LgorICAgIH07CisKKyAg
ICBDaHVua0hlYWRlciAqY2h1bmtIZWFkXzsgICAgLy8hPCBIZWFkIG9mIHRoZSBjaHVuayBsaW5r
ZWQtbGlzdC4gT25seSB0aGUgaGVhZCBjaHVuayBzZXJ2ZXMgYWxsb2NhdGlvbi4KKyAgICBzaXpl
X3QgY2h1bmtfY2FwYWNpdHlfOyAgICAgLy8hPCBUaGUgbWluaW11bSBjYXBhY2l0eSBvZiBjaHVu
ayB3aGVuIHRoZXkgYXJlIGFsbG9jYXRlZC4KKyAgICB2b2lkICp1c2VyQnVmZmVyXzsgICAgICAg
ICAgLy8hPCBVc2VyIHN1cHBsaWVkIGJ1ZmZlci4KKyAgICBCYXNlQWxsb2NhdG9yKiBiYXNlQWxs
b2NhdG9yXzsgIC8vITwgYmFzZSBhbGxvY2F0b3IgZm9yIGFsbG9jYXRpbmcgbWVtb3J5IGNodW5r
cy4KKyAgICBCYXNlQWxsb2NhdG9yKiBvd25CYXNlQWxsb2NhdG9yXzsgICAvLyE8IGJhc2UgYWxs
b2NhdG9yIGNyZWF0ZWQgYnkgdGhpcyBvYmplY3QuCit9OworCitSQVBJREpTT05fTkFNRVNQQUNF
X0VORAorCisjZW5kaWYgLy8gUkFQSURKU09OX0VOQ09ESU5HU19IXwpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3Jh
cGlkanNvbi9kb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vZG9jdW1l
bnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
dGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2RvY3VtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxOTMyIEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEgTWlsbyBZ
aXAKKy8vCisvLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg
dG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisvLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh
c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAor
Ly8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0
IGxpbWl0YXRpb24gdGhlIHJpZ2h0cworLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw
dWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorLy8gY29waWVzIG9m
IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJl
IGlzCisvLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zOgorLy8KKy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p
c3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisvLyBhbGwgY29waWVzIG9yIHN1YnN0
YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKy8vCisvLyBUSEUgU09GVFdBUkUgSVMg
UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP
UgorLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFksCisvLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKy8vIEFVVEhPUlMg
T1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1Ig
T1RIRVIKKy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP
UlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisvLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElP
TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCisvLyBU
SEUgU09GVFdBUkUuCisKKyNpZm5kZWYgUkFQSURKU09OX0RPQ1VNRU5UX0hfCisjZGVmaW5lIFJB
UElESlNPTl9ET0NVTUVOVF9IXworCisvKiEgXGZpbGUgZG9jdW1lbnQuaCAqLworCisjaW5jbHVk
ZSAicmVhZGVyLmgiCisjaW5jbHVkZSAiaW50ZXJuYWwvbWV0YS5oIgorI2luY2x1ZGUgImludGVy
bmFsL3N0cmZ1bmMuaCIKKyNpbmNsdWRlIDxuZXc+ICAgICAgLy8gcGxhY2VtZW50IG5ldworCisj
aWZkZWYgX01TQ19WRVIKK1JBUElESlNPTl9ESUFHX1BVU0gKK1JBUElESlNPTl9ESUFHX09GRig0
MTI3KSAvLyBjb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50CisjZWxpZiBkZWZpbmVk
KF9fR05VQ19fKQorUkFQSURKU09OX0RJQUdfUFVTSAorUkFQSURKU09OX0RJQUdfT0ZGKGVmZmMr
KykKKyNlbmRpZgorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBSQVBJREpTT05fSEFTX1NU
RFNUUklORworCisjaWZuZGVmIFJBUElESlNPTl9IQVNfU1REU1RSSU5HCisjaWZkZWYgUkFQSURK
U09OX0RPWFlHRU5fUlVOTklORworI2RlZmluZSBSQVBJREpTT05fSEFTX1NURFNUUklORyAxIC8v
IGZvcmNlIGdlbmVyYXRpb24gb2YgZG9jdW1lbnRhdGlvbgorI2Vsc2UKKyNkZWZpbmUgUkFQSURK
U09OX0hBU19TVERTVFJJTkcgMCAvLyBubyBzdGQ6OnN0cmluZyBzdXBwb3J0IGJ5IGRlZmF1bHQK
KyNlbmRpZgorLyohIFxkZWYgUkFQSURKU09OX0hBU19TVERTVFJJTkcKKyAgICBcaW5ncm91cCBS
QVBJREpTT05fQ09ORklHCisgICAgXGJyaWVmIEVuYWJsZSBSYXBpZEpTT04gc3VwcG9ydCBmb3Ig
XGMgc3RkOjpzdHJpbmcKKworICAgIEJ5IGRlZmluaW5nIHRoaXMgcHJlcHJvY2Vzc29yIHN5bWJv
bCB0byBcYyAxLCBzZXZlcmFsIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyBmb3IgdXNpbmcKKyAgICBc
cmVmIHJhcGlkanNvbjo6R2VuZXJpY1ZhbHVlIHdpdGggXGMgc3RkOjpzdHJpbmcgYXJlIGVuYWJs
ZWQsIGVzcGVjaWFsbHkKKyAgICBmb3IgY29uc3RydWN0aW9uIGFuZCBjb21wYXJpc29uLgorCisg
ICAgXGhpZGVpbml0aWFsaXplcgorKi8KKyNpbmNsdWRlIDxzdHJpbmc+CisjZW5kaWYgLy8gUkFQ
SURKU09OX0hBU19TVERTVFJJTkcKKworI2lmbmRlZiBSQVBJREpTT05fTk9NRU1CRVJJVEVSQVRP
UkNMQVNTCisjaW5jbHVkZSA8aXRlcmF0b3I+IC8vIHN0ZDo6aXRlcmF0b3IsIHN0ZDo6cmFuZG9t
X2FjY2Vzc19pdGVyYXRvcl90YWcKKyNlbmRpZgorCisjaWYgUkFQSURKU09OX0hBU19DWFgxMV9S
VkFMVUVfUkVGUworI2luY2x1ZGUgPHV0aWxpdHk+IC8vIHN0ZDo6bW92ZQorI2VuZGlmCisKK1JB
UElESlNPTl9OQU1FU1BBQ0VfQkVHSU4KKworLy8gRm9yd2FyZCBkZWNsYXJhdGlvbi4KK3RlbXBs
YXRlIDx0eXBlbmFtZSBFbmNvZGluZywgdHlwZW5hbWUgQWxsb2NhdG9yPgorY2xhc3MgR2VuZXJp
Y1ZhbHVlOworCisvLyEgTmFtZS12YWx1ZSBwYWlyIGluIGEgSlNPTiBvYmplY3QgdmFsdWUuCisv
KiEKKyAgICBUaGlzIGNsYXNzIHdhcyBpbnRlcm5hbCB0byBHZW5lcmljVmFsdWUuIEl0IHVzZWQg
dG8gYmUgYSBpbm5lciBzdHJ1Y3QuCisgICAgQnV0IGEgY29tcGlsZXIgKElCTSBYTCBDL0MrKyBm
b3IgQUlYKSBoYXZlIHJlcG9ydGVkIHRvIGhhdmUgcHJvYmxlbSB3aXRoIHRoYXQgc28gaXQgbW92
ZWQgYXMgYSBuYW1lc3BhY2Ugc2NvcGUgc3RydWN0LgorICAgIGh0dHBzOi8vY29kZS5nb29nbGUu
Y29tL3AvcmFwaWRqc29uL2lzc3Vlcy9kZXRhaWw/aWQ9NjQKKyovCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgRW5jb2RpbmcsIHR5cGVuYW1lIEFsbG9jYXRvcj4gCitzdHJ1Y3QgR2VuZXJpY01lbWJlciB7
IAorICAgIEdlbmVyaWNWYWx1ZTxFbmNvZGluZywgQWxsb2NhdG9yPiBuYW1lOyAgICAgLy8hPCBu
YW1lIG9mIG1lbWJlciAobXVzdCBiZSBhIHN0cmluZykKKyAgICBHZW5lcmljVmFsdWU8RW5jb2Rp
bmcsIEFsbG9jYXRvcj4gdmFsdWU7ICAgIC8vITwgdmFsdWUgb2YgbWVtYmVyLgorfTsKKworLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLworLy8gR2VuZXJpY01lbWJlckl0ZXJhdG9yCisKKyNpZm5kZWYg
UkFQSURKU09OX05PTUVNQkVSSVRFUkFUT1JDTEFTUworCisvLyEgKENvbnN0YW50KSBtZW1iZXIg
aXRlcmF0b3IgZm9yIGEgSlNPTiBvYmplY3QgdmFsdWUKKy8qIQorICAgIFx0cGFyYW0gQ29uc3Qg
SXMgdGhpcyBhIGNvbnN0YW50IGl0ZXJhdG9yPworICAgIFx0cGFyYW0gRW5jb2RpbmcgICAgRW5j
b2Rpbmcgb2YgdGhlIHZhbHVlLiAoRXZlbiBub24tc3RyaW5nIHZhbHVlcyBuZWVkIHRvIGhhdmUg
dGhlIHNhbWUgZW5jb2RpbmcgaW4gYSBkb2N1bWVudCkKKyAgICBcdHBhcmFtIEFsbG9jYXRvciAg
IEFsbG9jYXRvciB0eXBlIGZvciBhbGxvY2F0aW5nIG1lbW9yeSBvZiBvYmplY3QsIGFycmF5IGFu
ZCBzdHJpbmcuCisKKyAgICBUaGlzIGNsYXNzIGltcGxlbWVudHMgYSBSYW5kb20gQWNjZXNzIEl0
ZXJhdG9yIGZvciBHZW5lcmljTWVtYmVyIGVsZW1lbnRzCisgICAgb2YgYSBHZW5lcmljVmFsdWUs
IHNlZSBJU08vSUVDIDE0ODgyOjIwMDMoRSkgQysrIHN0YW5kYXJkLCAyNC4xIFtsaWIuaXRlcmF0
b3IucmVxdWlyZW1lbnRzXS4KKworICAgIFxub3RlIFRoaXMgaXRlcmF0b3IgaW1wbGVtZW50YXRp
b24gaXMgbWFpbmx5IGludGVuZGVkIHRvIGF2b2lkIGltcGxpY2l0CisgICAgICAgIGNvbnZlcnNp
b25zIGZyb20gaXRlcmF0b3IgdmFsdWVzIHRvIFxjIE5VTEwsCisgICAgICAgIGUuZy4gZnJvbSBH
ZW5lcmljVmFsdWU6OkZpbmRNZW1iZXIuCisKKyAgICBcbm90ZSBEZWZpbmUgXGMgUkFQSURKU09O
X05PTUVNQkVSSVRFUkFUT1JDTEFTUyB0byBmYWxsIGJhY2sgdG8gYQorICAgICAgICBwb2ludGVy
LWJhc2VkIGltcGxlbWVudGF0aW9uLCBpZiB5b3VyIHBsYXRmb3JtIGRvZXNuJ3QgcHJvdmlkZQor
ICAgICAgICB0aGUgQysrIDxpdGVyYXRvcj4gaGVhZGVyLgorCisgICAgXHNlZSBHZW5lcmljTWVt
YmVyLCBHZW5lcmljVmFsdWU6Ok1lbWJlckl0ZXJhdG9yLCBHZW5lcmljVmFsdWU6OkNvbnN0TWVt
YmVySXRlcmF0b3IKKyAqLwordGVtcGxhdGUgPGJvb2wgQ29uc3QsIHR5cGVuYW1lIEVuY29kaW5n
LCB0eXBlbmFtZSBBbGxvY2F0b3I+CitjbGFzcyBHZW5lcmljTWVtYmVySXRlcmF0b3IKKyAgICA6
IHB1YmxpYyBzdGQ6Oml0ZXJhdG9yPHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcKKyAg
ICAgICAgLCB0eXBlbmFtZSBpbnRlcm5hbDo6TWF5YmVBZGRDb25zdDxDb25zdCxHZW5lcmljTWVt
YmVyPEVuY29kaW5nLEFsbG9jYXRvcj4gPjo6VHlwZT4geworCisgICAgZnJpZW5kIGNsYXNzIEdl
bmVyaWNWYWx1ZTxFbmNvZGluZyxBbGxvY2F0b3I+OworICAgIHRlbXBsYXRlIDxib29sLCB0eXBl
bmFtZSwgdHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBHZW5lcmljTWVtYmVySXRlcmF0b3I7CisKKyAg
ICB0eXBlZGVmIEdlbmVyaWNNZW1iZXI8RW5jb2RpbmcsQWxsb2NhdG9yPiBQbGFpblR5cGU7Cisg
ICAgdHlwZWRlZiB0eXBlbmFtZSBpbnRlcm5hbDo6TWF5YmVBZGRDb25zdDxDb25zdCxQbGFpblR5
cGU+OjpUeXBlIFZhbHVlVHlwZTsKKyAgICB0eXBlZGVmIHN0ZDo6aXRlcmF0b3I8c3RkOjpyYW5k
b21fYWNjZXNzX2l0ZXJhdG9yX3RhZyxWYWx1ZVR5cGU+IEJhc2VUeXBlOworCitwdWJsaWM6Cisg
ICAgLy8hIEl0ZXJhdG9yIHR5cGUgaXRzZWxmCisgICAgdHlwZWRlZiBHZW5lcmljTWVtYmVySXRl
cmF0b3IgSXRlcmF0b3I7CisgICAgLy8hIENvbnN0YW50IGl0ZXJhdG9yIHR5cGUKKyAgICB0eXBl
ZGVmIEdlbmVyaWNNZW1iZXJJdGVyYXRvcjx0cnVlLEVuY29kaW5nLEFsbG9jYXRvcj4gIENvbnN0
SXRlcmF0b3I7CisgICAgLy8hIE5vbi1jb25zdGFudCBpdGVyYXRvciB0eXBlCisgICAgdHlwZWRl
ZiBHZW5lcmljTWVtYmVySXRlcmF0b3I8ZmFsc2UsRW5jb2RpbmcsQWxsb2NhdG9yPiBOb25Db25z
dEl0ZXJhdG9yOworCisgICAgLy8hIFBvaW50ZXIgdG8gKGNvbnN0KSBHZW5lcmljTWVtYmVyCisg
ICAgdHlwZWRlZiB0eXBlbmFtZSBCYXNlVHlwZTo6cG9pbnRlciAgICAgICAgIFBvaW50ZXI7Cisg
ICAgLy8hIFJlZmVyZW5jZSB0byAoY29uc3QpIEdlbmVyaWNNZW1iZXIKKyAgICB0eXBlZGVmIHR5
cGVuYW1lIEJhc2VUeXBlOjpyZWZlcmVuY2UgICAgICAgUmVmZXJlbmNlOworICAgIC8vISBTaWdu
ZWQgaW50ZWdlciB0eXBlIChlLmcuIFxjIHB0cmRpZmZfdCkKKyAgICB0eXBlZGVmIHR5cGVuYW1l
IEJhc2VUeXBlOjpkaWZmZXJlbmNlX3R5cGUgRGlmZmVyZW5jZVR5cGU7CisKKyAgICAvLyEgRGVm
YXVsdCBjb25zdHJ1Y3RvciAoc2luZ3VsYXIgdmFsdWUpCisgICAgLyohIENyZWF0ZXMgYW4gaXRl
cmF0b3IgcG9pbnRpbmcgdG8gbm8gZWxlbWVudC4KKyAgICAgICAgXG5vdGUgQWxsIG9wZXJhdGlv
bnMsIGV4Y2VwdCBmb3IgY29tcGFyaXNvbnMsIGFyZSB1bmRlZmluZWQgb24gc3VjaCB2YWx1ZXMu
CisgICAgICovCisgICAgR2VuZXJpY01lbWJlckl0ZXJhdG9yKCkgOiBwdHJfKCkge30KKworICAg
IC8vISBJdGVyYXRvciBjb252ZXJzaW9ucyB0byBtb3JlIGNvbnN0CisgICAgLyohCisgICAgICAg
IFxwYXJhbSBpdCAoTm9uLWNvbnN0KSBpdGVyYXRvciB0byBjb3B5IGZyb20KKworICAgICAgICBB
bGxvd3MgdGhlIGNyZWF0aW9uIG9mIGFuIGl0ZXJhdG9yIGZyb20gYW5vdGhlciBHZW5lcmljTWVt
YmVySXRlcmF0b3IKKyAgICAgICAgdGhhdCBpcyAibGVzcyBjb25zdCIuICBFc3BlY2lhbGx5LCBj
cmVhdGluZyBhIG5vbi1jb25zdGFudCBpdGVyYXRvcgorICAgICAgICBmcm9tIGEgY29uc3RhbnQg
aXRlcmF0b3IgYXJlIGRpc2FibGVkOgorICAgICAgICBcbGkgY29uc3QgLT4gbm9uLWNvbnN0IChu
b3Qgb2spCisgICAgICAgIFxsaSBjb25zdCAtPiBjb25zdCAob2spCisgICAgICAgIFxsaSBub24t
Y29uc3QgLT4gY29uc3QgKG9rKQorICAgICAgICBcbGkgbm9uLWNvbnN0IC0+IG5vbi1jb25zdCAo
b2spCisKKyAgICAgICAgXG5vdGUgSWYgdGhlIFxjIENvbnN0IHRlbXBsYXRlIHBhcmFtZXRlciBp
cyBhbHJlYWR5IFxjIGZhbHNlLCB0aGlzCisgICAgICAgICAgICBjb25zdHJ1Y3RvciBlZmZlY3Rp
dmVseSBkZWZpbmVzIGEgcmVndWxhciBjb3B5LWNvbnN0cnVjdG9yLgorICAgICAgICAgICAgT3Ro
ZXJ3aXNlLCB0aGUgY29weSBjb25zdHJ1Y3RvciBpcyBpbXBsaWNpdGx5IGRlZmluZWQuCisgICAg
Ki8KKyAgICBHZW5lcmljTWVtYmVySXRlcmF0b3IoY29uc3QgTm9uQ29uc3RJdGVyYXRvciAmIGl0
KSA6IHB0cl8oaXQucHRyXykge30KKworICAgIC8vISBAbmFtZSBzdGVwcGluZworICAgIC8vQHsK
KyAgICBJdGVyYXRvciYgb3BlcmF0b3IrKygpeyArK3B0cl87IHJldHVybiAqdGhpczsgfQorICAg
IEl0ZXJhdG9yJiBvcGVyYXRvci0tKCl7IC0tcHRyXzsgcmV0dXJuICp0aGlzOyB9CisgICAgSXRl
cmF0b3IgIG9wZXJhdG9yKysoaW50KXsgSXRlcmF0b3Igb2xkKCp0aGlzKTsgKytwdHJfOyByZXR1
cm4gb2xkOyB9CisgICAgSXRlcmF0b3IgIG9wZXJhdG9yLS0oaW50KXsgSXRlcmF0b3Igb2xkKCp0
aGlzKTsgLS1wdHJfOyByZXR1cm4gb2xkOyB9CisgICAgLy9AfQorCisgICAgLy8hIEBuYW1lIGlu
Y3JlbWVudC9kZWNyZW1lbnQKKyAgICAvL0B7CisgICAgSXRlcmF0b3Igb3BlcmF0b3IrKERpZmZl
cmVuY2VUeXBlIG4pIGNvbnN0IHsgcmV0dXJuIEl0ZXJhdG9yKHB0cl8rbik7IH0KKyAgICBJdGVy
YXRvciBvcGVyYXRvci0oRGlmZmVyZW5jZVR5cGUgbikgY29uc3QgeyByZXR1cm4gSXRlcmF0b3Io
cHRyXy1uKTsgfQorCisgICAgSXRlcmF0b3ImIG9wZXJhdG9yKz0oRGlmZmVyZW5jZVR5cGUgbikg
eyBwdHJfKz1uOyByZXR1cm4gKnRoaXM7IH0KKyAgICBJdGVyYXRvciYgb3BlcmF0b3ItPShEaWZm
ZXJlbmNlVHlwZSBuKSB7IHB0cl8tPW47IHJldHVybiAqdGhpczsgfQorICAgIC8vQH0KKworICAg
IC8vISBAbmFtZSByZWxhdGlvbnMKKyAgICAvL0B7CisgICAgYm9vbCBvcGVyYXRvcj09KENvbnN0
SXRlcmF0b3IgdGhhdCkgY29uc3QgeyByZXR1cm4gcHRyXyA9PSB0aGF0LnB0cl87IH0KKyAgICBi
b29sIG9wZXJhdG9yIT0oQ29uc3RJdGVyYXRvciB0aGF0KSBjb25zdCB7IHJldHVybiBwdHJfICE9
IHRoYXQucHRyXzsgfQorICAgIGJvb2wgb3BlcmF0b3I8PShDb25zdEl0ZXJhdG9yIHRoYXQpIGNv
bnN0IHsgcmV0dXJuIHB0cl8gPD0gdGhhdC5wdHJfOyB9CisgICAgYm9vbCBvcGVyYXRvcj49KENv
bnN0SXRlcmF0b3IgdGhhdCkgY29uc3QgeyByZXR1cm4gcHRyXyA+PSB0aGF0LnB0cl87IH0KKyAg
ICBib29sIG9wZXJhdG9yPCAoQ29uc3RJdGVyYXRvciB0aGF0KSBjb25zdCB7IHJldHVybiBwdHJf
IDwgdGhhdC5wdHJfOyB9CisgICAgYm9vbCBvcGVyYXRvcj4gKENvbnN0SXRlcmF0b3IgdGhhdCkg
Y29uc3QgeyByZXR1cm4gcHRyXyA+IHRoYXQucHRyXzsgfQorICAgIC8vQH0KKworICAgIC8vISBA
bmFtZSBkZXJlZmVyZW5jZQorICAgIC8vQHsKKyAgICBSZWZlcmVuY2Ugb3BlcmF0b3IqKCkgY29u
c3QgeyByZXR1cm4gKnB0cl87IH0KKyAgICBQb2ludGVyICAgb3BlcmF0b3ItPigpIGNvbnN0IHsg
cmV0dXJuIHB0cl87IH0KKyAgICBSZWZlcmVuY2Ugb3BlcmF0b3JbXShEaWZmZXJlbmNlVHlwZSBu
KSBjb25zdCB7IHJldHVybiBwdHJfW25dOyB9CisgICAgLy9AfQorCisgICAgLy8hIERpc3RhbmNl
CisgICAgRGlmZmVyZW5jZVR5cGUgb3BlcmF0b3ItKENvbnN0SXRlcmF0b3IgdGhhdCkgY29uc3Qg
eyByZXR1cm4gcHRyXy10aGF0LnB0cl87IH0KKworcHJpdmF0ZToKKyAgICAvLyEgSW50ZXJuYWwg
Y29uc3RydWN0b3IgZnJvbSBwbGFpbiBwb2ludGVyCisgICAgZXhwbGljaXQgR2VuZXJpY01lbWJl
ckl0ZXJhdG9yKFBvaW50ZXIgcCkgOiBwdHJfKHApIHt9CisKKyAgICBQb2ludGVyIHB0cl87IC8v
ITwgcmF3IHBvaW50ZXIKK307CisKKyNlbHNlIC8vIFJBUElESlNPTl9OT01FTUJFUklURVJBVE9S
Q0xBU1MKKworLy8gY2xhc3MtYmFzZWQgbWVtYmVyIGl0ZXJhdG9yIGltcGxlbWVudGF0aW9uIGRp
c2FibGVkLCB1c2UgcGxhaW4gcG9pbnRlcnMKKwordGVtcGxhdGUgPGJvb2wgQ29uc3QsIHR5cGVu
YW1lIEVuY29kaW5nLCB0eXBlbmFtZSBBbGxvY2F0b3I+CitzdHJ1Y3QgR2VuZXJpY01lbWJlckl0
ZXJhdG9yOworCisvLyEgbm9uLWNvbnN0IEdlbmVyaWNNZW1iZXJJdGVyYXRvcgordGVtcGxhdGUg
PHR5cGVuYW1lIEVuY29kaW5nLCB0eXBlbmFtZSBBbGxvY2F0b3I+CitzdHJ1Y3QgR2VuZXJpY01l
bWJlckl0ZXJhdG9yPGZhbHNlLEVuY29kaW5nLEFsbG9jYXRvcj4geworICAgIC8vISB1c2UgcGxh
aW4gcG9pbnRlciBhcyBpdGVyYXRvciB0eXBlCisgICAgdHlwZWRlZiBHZW5lcmljTWVtYmVyPEVu
Y29kaW5nLEFsbG9jYXRvcj4qIEl0ZXJhdG9yOworfTsKKy8vISBjb25zdCBHZW5lcmljTWVtYmVy
SXRlcmF0b3IKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbmNvZGluZywgdHlwZW5hbWUgQWxsb2NhdG9y
Pgorc3RydWN0IEdlbmVyaWNNZW1iZXJJdGVyYXRvcjx0cnVlLEVuY29kaW5nLEFsbG9jYXRvcj4g
eworICAgIC8vISB1c2UgcGxhaW4gY29uc3QgcG9pbnRlciBhcyBpdGVyYXRvciB0eXBlCisgICAg
dHlwZWRlZiBjb25zdCBHZW5lcmljTWVtYmVyPEVuY29kaW5nLEFsbG9jYXRvcj4qIEl0ZXJhdG9y
OworfTsKKworI2VuZGlmIC8vIFJBUElESlNPTl9OT01FTUJFUklURVJBVE9SQ0xBU1MKKworLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLworLy8gR2VuZXJpY1N0cmluZ1JlZgorCisvLyEgUmVmZXJlbmNl
IHRvIGEgY29uc3RhbnQgc3RyaW5nIChub3QgdGFraW5nIGEgY29weSkKKy8qIQorICAgIFx0cGFy
YW0gQ2hhclR5cGUgY2hhcmFjdGVyIHR5cGUgb2YgdGhlIHN0cmluZworCisgICAgVGhpcyBoZWxw
ZXIgY2xhc3MgaXMgdXNlZCB0byBhdXRvbWF0aWNhbGx5IGluZmVyIGNvbnN0YW50IHN0cmluZwor
ICAgIHJlZmVyZW5jZXMgZm9yIHN0cmluZyBsaXRlcmFscywgZXNwZWNpYWxseSBmcm9tIFxjIGNv
bnN0IFxiICghKQorICAgIGNoYXJhY3RlciBhcnJheXMuCisKKyAgICBUaGUgbWFpbiB1c2UgaXMg
Zm9yIGNyZWF0aW5nIEpTT04gc3RyaW5nIHZhbHVlcyB3aXRob3V0IGNvcHlpbmcgdGhlCisgICAg
c291cmNlIHN0cmluZyB2aWEgYW4gXHJlZiBBbGxvY2F0b3IuICBUaGlzIHJlcXVpcmVzIHRoYXQg
dGhlIHJlZmVyZW5jZWQKKyAgICBzdHJpbmcgcG9pbnRlcnMgaGF2ZSBhIHN1ZmZpY2llbnQgbGlm
ZXRpbWUsIHdoaWNoIGV4Y2VlZHMgdGhlIGxpZmV0aW1lCisgICAgb2YgdGhlIGFzc29jaWF0ZWQg
R2VuZXJpY1ZhbHVlLgorCisgICAgXGIgRXhhbXBsZQorICAgIFxjb2RlCisgICAgVmFsdWUgdigi
Zm9vIik7ICAgLy8gb2ssIG5vIG5lZWQgdG8gY29weSAmIGNhbGN1bGF0ZSBsZW5ndGgKKyAgICBj
b25zdCBjaGFyIGZvb1tdID0gImZvbyI7CisgICAgdi5TZXRTdHJpbmcoZm9vKTsgLy8gb2sKKwor
ICAgIGNvbnN0IGNoYXIqIGJhciA9IGZvbzsKKyAgICAvLyBWYWx1ZSB4KGJhcik7IC8vIG5vdCBv
aywgY2FuJ3QgcmVseSBvbiBiYXIncyBsaWZldGltZQorICAgIFZhbHVlIHgoU3RyaW5nUmVmKGJh
cikpOyAvLyBsaWZldGltZSBleHBsaWNpdGx5IGd1YXJhbnRlZWQgYnkgdXNlcgorICAgIFZhbHVl
IHkoU3RyaW5nUmVmKGJhciwgMykpOyAgLy8gb2ssIGV4cGxpY2l0bHkgcGFzcyBsZW5ndGgKKyAg
ICBcZW5kY29kZQorCisgICAgXHNlZSBTdHJpbmdSZWYsIEdlbmVyaWNWYWx1ZTo6U2V0U3RyaW5n
CisqLwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhclR5cGU+CitzdHJ1Y3QgR2VuZXJpY1N0cmluZ1Jl
ZiB7CisgICAgdHlwZWRlZiBDaGFyVHlwZSBDaDsgLy8hPCBjaGFyYWN0ZXIgdHlwZSBvZiB0aGUg
c3RyaW5nCisKKyAgICAvLyEgQ3JlYXRlIHN0cmluZyByZWZlcmVuY2UgZnJvbSBcYyBjb25zdCBj
aGFyYWN0ZXIgYXJyYXkKKyAgICAvKiEKKyAgICAgICAgVGhpcyBjb25zdHJ1Y3RvciBpbXBsaWNp
dGx5IGNyZWF0ZXMgYSBjb25zdGFudCBzdHJpbmcgcmVmZXJlbmNlIGZyb20KKyAgICAgICAgYSBc
YyBjb25zdCBjaGFyYWN0ZXIgYXJyYXkuICBJdCBoYXMgYmV0dGVyIHBlcmZvcm1hbmNlIHRoYW4K
KyAgICAgICAgXHJlZiBTdHJpbmdSZWYoY29uc3QgQ2hhclR5cGUqKSBieSBpbmZlcnJpbmcgdGhl
IHN0cmluZyBccmVmIGxlbmd0aAorICAgICAgICBmcm9tIHRoZSBhcnJheSBsZW5ndGgsIGFuZCBh
bHNvIHN1cHBvcnRzIHN0cmluZ3MgY29udGFpbmluZyBudWxsCisgICAgICAgIGNoYXJhY3RlcnMu
CisKKyAgICAgICAgXHRwYXJhbSBOIGxlbmd0aCBvZiB0aGUgc3RyaW5nLCBhdXRvbWF0aWNhbGx5
IGluZmVycmVkCisKKyAgICAgICAgXHBhcmFtIHN0ciBDb25zdGFudCBjaGFyYWN0ZXIgYXJyYXks
IGxpZmV0aW1lIGFzc3VtZWQgdG8gYmUgbG9uZ2VyCisgICAgICAgICAgICB0aGFuIHRoZSB1c2Ug
b2YgdGhlIHN0cmluZyBpbiBlLmcuIGEgR2VuZXJpY1ZhbHVlCisKKyAgICAgICAgXHBvc3QgXHJl
ZiBzID09IHN0cgorCisgICAgICAgIFxub3RlIENvbnN0YW50IGNvbXBsZXhpdHkuCisgICAgICAg
IFxub3RlIFRoZXJlIGlzIGEgaGlkZGVuLCBwcml2YXRlIG92ZXJsb2FkIHRvIGRpc2FsbG93IHJl
ZmVyZW5jZXMgdG8KKyAgICAgICAgICAgIG5vbi1jb25zdCBjaGFyYWN0ZXIgYXJyYXlzIHRvIGJl
IGNyZWF0ZWQgdmlhIHRoaXMgY29uc3RydWN0b3IuCisgICAgICAgICAgICBCeSB0aGlzLCBlLmcu
IGZ1bmN0aW9uLXNjb3BlIGFycmF5cyB1c2VkIHRvIGJlIGZpbGxlZCB2aWEKKyAgICAgICAgICAg
IFxjIHNucHJpbnRmIGFyZSBleGNsdWRlZCBmcm9tIGNvbnNpZGVyYXRpb24uCisgICAgICAgICAg
ICBJbiBzdWNoIGNhc2VzLCB0aGUgcmVmZXJlbmNlZCBzdHJpbmcgc2hvdWxkIGJlIFxiIGNvcGll
ZCB0byB0aGUKKyAgICAgICAgICAgIEdlbmVyaWNWYWx1ZSBpbnN0ZWFkLgorICAgICAqLworICAg
IHRlbXBsYXRlPFNpemVUeXBlIE4+CisgICAgR2VuZXJpY1N0cmluZ1JlZihjb25zdCBDaGFyVHlw
ZSAoJnN0cilbTl0pIFJBUElESlNPTl9OT0VYQ0VQVAorICAgICAgICA6IHMoc3RyKSwgbGVuZ3Ro
KE4tMSkge30KKworICAgIC8vISBFeHBsaWNpdGx5IGNyZWF0ZSBzdHJpbmcgcmVmZXJlbmNlIGZy
b20gXGMgY29uc3QgY2hhcmFjdGVyIHBvaW50ZXIKKyAgICAvKiEKKyAgICAgICAgVGhpcyBjb25z
dHJ1Y3RvciBjYW4gYmUgdXNlZCB0byBcYiBleHBsaWNpdGx5ICBjcmVhdGUgYSByZWZlcmVuY2Ug
dG8KKyAgICAgICAgYSBjb25zdGFudCBzdHJpbmcgcG9pbnRlci4KKworICAgICAgICBcc2VlIFN0
cmluZ1JlZihjb25zdCBDaGFyVHlwZSopCisKKyAgICAgICAgXHBhcmFtIHN0ciBDb25zdGFudCBj
aGFyYWN0ZXIgcG9pbnRlciwgbGlmZXRpbWUgYXNzdW1lZCB0byBiZSBsb25nZXIKKyAgICAgICAg
ICAgIHRoYW4gdGhlIHVzZSBvZiB0aGUgc3RyaW5nIGluIGUuZy4gYSBHZW5lcmljVmFsdWUKKwor
ICAgICAgICBccG9zdCBccmVmIHMgPT0gc3RyCisKKyAgICAgICAgXG5vdGUgVGhlcmUgaXMgYSBo
aWRkZW4sIHByaXZhdGUgb3ZlcmxvYWQgdG8gZGlzYWxsb3cgcmVmZXJlbmNlcyB0bworICAgICAg
ICAgICAgbm9uLWNvbnN0IGNoYXJhY3RlciBhcnJheXMgdG8gYmUgY3JlYXRlZCB2aWEgdGhpcyBj
b25zdHJ1Y3Rvci4KKyAgICAgICAgICAgIEJ5IHRoaXMsIGUuZy4gZnVuY3Rpb24tc2NvcGUgYXJy
YXlzIHVzZWQgdG8gYmUgZmlsbGVkIHZpYQorICAgICAgICAgICAgXGMgc25wcmludGYgYXJlIGV4
Y2x1ZGVkIGZyb20gY29uc2lkZXJhdGlvbi4KKyAgICAgICAgICAgIEluIHN1Y2ggY2FzZXMsIHRo
ZSByZWZlcmVuY2VkIHN0cmluZyBzaG91bGQgYmUgXGIgY29waWVkIHRvIHRoZQorICAgICAgICAg
ICAgR2VuZXJpY1ZhbHVlIGluc3RlYWQuCisgICAgICovCisgICAgZXhwbGljaXQgR2VuZXJpY1N0
cmluZ1JlZihjb25zdCBDaGFyVHlwZSogc3RyKQorICAgICAgICA6IHMoc3RyKSwgbGVuZ3RoKGlu
dGVybmFsOjpTdHJMZW4oc3RyKSl7IFJBUElESlNPTl9BU1NFUlQocyAhPSBOVUxMKTsgfQorCisg
ICAgLy8hIENyZWF0ZSBjb25zdGFudCBzdHJpbmcgcmVmZXJlbmNlIGZyb20gcG9pbnRlciBhbmQg
bGVuZ3RoCisgICAgLyohIFxwYXJhbSBzdHIgY29uc3RhbnQgc3RyaW5nLCBsaWZldGltZSBhc3N1
bWVkIHRvIGJlIGxvbmdlciB0aGFuIHRoZSB1c2Ugb2YgdGhlIHN0cmluZyBpbiBlLmcuIGEgR2Vu
ZXJpY1ZhbHVlCisgICAgICAgIFxwYXJhbSBsZW4gbGVuZ3RoIG9mIHRoZSBzdHJpbmcsIGV4Y2x1
ZGluZyB0aGUgdHJhaWxpbmcgTlVMTCB0ZXJtaW5hdG9yCisKKyAgICAgICAgXHBvc3QgXHJlZiBz
ID09IHN0ciAmJiBccmVmIGxlbmd0aCA9PSBsZW4KKyAgICAgICAgXG5vdGUgQ29uc3RhbnQgY29t
cGxleGl0eS4KKyAgICAgKi8KKyAgICBHZW5lcmljU3RyaW5nUmVmKGNvbnN0IENoYXJUeXBlKiBz
dHIsIFNpemVUeXBlIGxlbikKKyAgICAgICAgOiBzKHN0ciksIGxlbmd0aChsZW4pIHsgUkFQSURK
U09OX0FTU0VSVChzICE9IE5VTEwpOyB9CisKKyAgICAvLyEgaW1wbGljaXQgY29udmVyc2lvbiB0
byBwbGFpbiBDaGFyVHlwZSBwb2ludGVyCisgICAgb3BlcmF0b3IgY29uc3QgQ2ggKigpIGNvbnN0
IHsgcmV0dXJuIHM7IH0KKworICAgIGNvbnN0IENoKiBjb25zdCBzOyAvLyE8IHBsYWluIENoYXJU
eXBlIHBvaW50ZXIKKyAgICBjb25zdCBTaXplVHlwZSBsZW5ndGg7IC8vITwgbGVuZ3RoIG9mIHRo
ZSBzdHJpbmcgKGV4Y2x1ZGluZyB0aGUgdHJhaWxpbmcgTlVMTCB0ZXJtaW5hdG9yKQorCitwcml2
YXRlOgorICAgIC8vISBEaXNhbGxvdyBjb3B5LWFzc2lnbm1lbnQKKyAgICBHZW5lcmljU3RyaW5n
UmVmIG9wZXJhdG9yPShjb25zdCBHZW5lcmljU3RyaW5nUmVmJik7CisgICAgLy8hIERpc2FsbG93
IGNvbnN0cnVjdGlvbiBmcm9tIG5vbi1jb25zdCBhcnJheQorICAgIHRlbXBsYXRlPFNpemVUeXBl
IE4+CisgICAgR2VuZXJpY1N0cmluZ1JlZihDaGFyVHlwZSAoJnN0cilbTl0pIC8qID0gZGVsZXRl
ICovOworfTsKKworLy8hIE1hcmsgYSBjaGFyYWN0ZXIgcG9pbnRlciBhcyBjb25zdGFudCBzdHJp
bmcKKy8qISBNYXJrIGEgcGxhaW4gY2hhcmFjdGVyIHBvaW50ZXIgYXMgYSAic3RyaW5nIGxpdGVy
YWwiLiAgVGhpcyBmdW5jdGlvbgorICAgIGNhbiBiZSB1c2VkIHRvIGF2b2lkIGNvcHlpbmcgYSBj
aGFyYWN0ZXIgc3RyaW5nIHRvIGJlIHJlZmVyZW5jZWQgYXMgYQorICAgIHZhbHVlIGluIGEgSlNP
TiBHZW5lcmljVmFsdWUgb2JqZWN0LCBpZiB0aGUgc3RyaW5nJ3MgbGlmZXRpbWUgaXMga25vd24K
KyAgICB0byBiZSB2YWxpZCBsb25nIGVub3VnaC4KKyAgICBcdHBhcmFtIENoYXJUeXBlIENoYXJh
Y3RlciB0eXBlIG9mIHRoZSBzdHJpbmcKKyAgICBccGFyYW0gc3RyIENvbnN0YW50IHN0cmluZywg
bGlmZXRpbWUgYXNzdW1lZCB0byBiZSBsb25nZXIgdGhhbiB0aGUgdXNlIG9mIHRoZSBzdHJpbmcg
aW4gZS5nLiBhIEdlbmVyaWNWYWx1ZQorICAgIFxyZXR1cm4gR2VuZXJpY1N0cmluZ1JlZiBzdHJp
bmcgcmVmZXJlbmNlIG9iamVjdAorICAgIFxyZWxhdGVzYWxzbyBHZW5lcmljU3RyaW5nUmVmCisK
KyAgICBcc2VlIEdlbmVyaWNWYWx1ZTo6R2VuZXJpY1ZhbHVlKFN0cmluZ1JlZlR5cGUpLCBHZW5l
cmljVmFsdWU6Om9wZXJhdG9yPShTdHJpbmdSZWZUeXBlKSwgR2VuZXJpY1ZhbHVlOjpTZXRTdHJp
bmcoU3RyaW5nUmVmVHlwZSksIEdlbmVyaWNWYWx1ZTo6UHVzaEJhY2soU3RyaW5nUmVmVHlwZSwg
QWxsb2NhdG9yJiksIEdlbmVyaWNWYWx1ZTo6QWRkTWVtYmVyCisqLwordGVtcGxhdGU8dHlwZW5h
bWUgQ2hhclR5cGU+CitpbmxpbmUgR2VuZXJpY1N0cmluZ1JlZjxDaGFyVHlwZT4gU3RyaW5nUmVm
KGNvbnN0IENoYXJUeXBlKiBzdHIpIHsKKyAgICByZXR1cm4gR2VuZXJpY1N0cmluZ1JlZjxDaGFy
VHlwZT4oc3RyLCBpbnRlcm5hbDo6U3RyTGVuKHN0cikpOworfQorCisvLyEgTWFyayBhIGNoYXJh
Y3RlciBwb2ludGVyIGFzIGNvbnN0YW50IHN0cmluZworLyohIE1hcmsgYSBwbGFpbiBjaGFyYWN0
ZXIgcG9pbnRlciBhcyBhICJzdHJpbmcgbGl0ZXJhbCIuICBUaGlzIGZ1bmN0aW9uCisgICAgY2Fu
IGJlIHVzZWQgdG8gYXZvaWQgY29weWluZyBhIGNoYXJhY3RlciBzdHJpbmcgdG8gYmUgcmVmZXJl
bmNlZCBhcyBhCisgICAgdmFsdWUgaW4gYSBKU09OIEdlbmVyaWNWYWx1ZSBvYmplY3QsIGlmIHRo
ZSBzdHJpbmcncyBsaWZldGltZSBpcyBrbm93bgorICAgIHRvIGJlIHZhbGlkIGxvbmcgZW5vdWdo
LgorCisgICAgVGhpcyB2ZXJzaW9uIGhhcyBiZXR0ZXIgcGVyZm9ybWFuY2Ugd2l0aCBzdXBwbGll
ZCBsZW5ndGgsIGFuZCBhbHNvCisgICAgc3VwcG9ydHMgc3RyaW5nIGNvbnRhaW5pbmcgbnVsbCBj
aGFyYWN0ZXJzLgorCisgICAgXHRwYXJhbSBDaGFyVHlwZSBjaGFyYWN0ZXIgdHlwZSBvZiB0aGUg
c3RyaW5nCisgICAgXHBhcmFtIHN0ciBDb25zdGFudCBzdHJpbmcsIGxpZmV0aW1lIGFzc3VtZWQg
dG8gYmUgbG9uZ2VyIHRoYW4gdGhlIHVzZSBvZiB0aGUgc3RyaW5nIGluIGUuZy4gYSBHZW5lcmlj
VmFsdWUKKyAgICBccGFyYW0gbGVuZ3RoIFRoZSBsZW5ndGggb2Ygc291cmNlIHN0cmluZy4KKyAg
ICBccmV0dXJuIEdlbmVyaWNTdHJpbmdSZWYgc3RyaW5nIHJlZmVyZW5jZSBvYmplY3QKKyAgICBc
cmVsYXRlc2Fsc28gR2VuZXJpY1N0cmluZ1JlZgorKi8KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJU
eXBlPgoraW5saW5lIEdlbmVyaWNTdHJpbmdSZWY8Q2hhclR5cGU+IFN0cmluZ1JlZihjb25zdCBD
aGFyVHlwZSogc3RyLCBzaXplX3QgbGVuZ3RoKSB7CisgICAgcmV0dXJuIEdlbmVyaWNTdHJpbmdS
ZWY8Q2hhclR5cGU+KHN0ciwgU2l6ZVR5cGUobGVuZ3RoKSk7Cit9CisKKyNpZiBSQVBJREpTT05f
SEFTX1NURFNUUklORworLy8hIE1hcmsgYSBzdHJpbmcgb2JqZWN0IGFzIGNvbnN0YW50IHN0cmlu
ZworLyohIE1hcmsgYSBzdHJpbmcgb2JqZWN0IChlLmcuIFxjIHN0ZDo6c3RyaW5nKSBhcyBhICJz
dHJpbmcgbGl0ZXJhbCIuCisgICAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBhdm9pZCBj
b3B5aW5nIGEgc3RyaW5nIHRvIGJlIHJlZmVyZW5jZWQgYXMgYQorICAgIHZhbHVlIGluIGEgSlNP
TiBHZW5lcmljVmFsdWUgb2JqZWN0LCBpZiB0aGUgc3RyaW5nJ3MgbGlmZXRpbWUgaXMga25vd24K
KyAgICB0byBiZSB2YWxpZCBsb25nIGVub3VnaC4KKworICAgIFx0cGFyYW0gQ2hhclR5cGUgY2hh
cmFjdGVyIHR5cGUgb2YgdGhlIHN0cmluZworICAgIFxwYXJhbSBzdHIgQ29uc3RhbnQgc3RyaW5n
LCBsaWZldGltZSBhc3N1bWVkIHRvIGJlIGxvbmdlciB0aGFuIHRoZSB1c2Ugb2YgdGhlIHN0cmlu
ZyBpbiBlLmcuIGEgR2VuZXJpY1ZhbHVlCisgICAgXHJldHVybiBHZW5lcmljU3RyaW5nUmVmIHN0
cmluZyByZWZlcmVuY2Ugb2JqZWN0CisgICAgXHJlbGF0ZXNhbHNvIEdlbmVyaWNTdHJpbmdSZWYK
KyAgICBcbm90ZSBSZXF1aXJlcyB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgcHJlcHJvY2Vzc29yIHN5
bWJvbCBccmVmIFJBUElESlNPTl9IQVNfU1REU1RSSU5HLgorKi8KK3RlbXBsYXRlPHR5cGVuYW1l
IENoYXJUeXBlPgoraW5saW5lIEdlbmVyaWNTdHJpbmdSZWY8Q2hhclR5cGU+IFN0cmluZ1JlZihj
b25zdCBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyVHlwZT4mIHN0cikgeworICAgIHJldHVybiBHZW5l
cmljU3RyaW5nUmVmPENoYXJUeXBlPihzdHIuZGF0YSgpLCBTaXplVHlwZShzdHIuc2l6ZSgpKSk7
Cit9CisjZW5kaWYKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gR2VuZXJpY1ZhbHVlIHR5
cGUgdHJhaXRzCituYW1lc3BhY2UgaW50ZXJuYWwgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgRW5jb2RpbmcgPSB2b2lkLCB0eXBlbmFtZSBBbGxvY2F0b3IgPSB2b2lkPgorc3Ry
dWN0IElzR2VuZXJpY1ZhbHVlSW1wbCA6IEZhbHNlVHlwZSB7fTsKKworLy8gc2VsZWN0IGNhbmRp
ZGF0ZXMgYWNjb3JkaW5nIHRvIG5lc3RlZCBlbmNvZGluZyBhbmQgYWxsb2NhdG9yIHR5cGVzCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElzR2VuZXJpY1ZhbHVlSW1wbDxULCB0eXBlbmFt
ZSBWb2lkPHR5cGVuYW1lIFQ6OkVuY29kaW5nVHlwZT46OlR5cGUsIHR5cGVuYW1lIFZvaWQ8dHlw
ZW5hbWUgVDo6QWxsb2NhdG9yVHlwZT46OlR5cGU+CisgICAgOiBJc0Jhc2VPZjxHZW5lcmljVmFs
dWU8dHlwZW5hbWUgVDo6RW5jb2RpbmdUeXBlLCB0eXBlbmFtZSBUOjpBbGxvY2F0b3JUeXBlPiwg
VD46OlR5cGUge307CisKKy8vIGhlbHBlciB0byBtYXRjaCBhcmJpdHJhcnkgR2VuZXJpY1ZhbHVl
IGluc3RhbnRpYXRpb25zLCBpbmNsdWRpbmcgZGVyaXZlZCBjbGFzc2VzCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gc3RydWN0IElzR2VuZXJpY1ZhbHVlIDogSXNHZW5lcmljVmFsdWVJbXBsPFQ+OjpU
eXBlIHt9OworCit9IC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorCisvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCisvLyBHZW5lcmljVmFsdWUKKworLy8hIFJlcHJlc2VudHMgYSBKU09OIHZhbHVlLiBVc2Ug
VmFsdWUgZm9yIFVURjggZW5jb2RpbmcgYW5kIGRlZmF1bHQgYWxsb2NhdG9yLgorLyohCisgICAg
QSBKU09OIHZhbHVlIGNhbiBiZSBvbmUgb2YgNyB0eXBlcy4gVGhpcyBjbGFzcyBpcyBhIHZhcmlh
bnQgdHlwZSBzdXBwb3J0aW5nCisgICAgdGhlc2UgdHlwZXMuCisKKyAgICBVc2UgdGhlIFZhbHVl
IGlmIFVURjggYW5kIGRlZmF1bHQgYWxsb2NhdG9yCisKKyAgICBcdHBhcmFtIEVuY29kaW5nICAg
IEVuY29kaW5nIG9mIHRoZSB2YWx1ZS4gKEV2ZW4gbm9uLXN0cmluZyB2YWx1ZXMgbmVlZCB0byBo
YXZlIHRoZSBzYW1lIGVuY29kaW5nIGluIGEgZG9jdW1lbnQpCisgICAgXHRwYXJhbSBBbGxvY2F0
b3IgICBBbGxvY2F0b3IgdHlwZSBmb3IgYWxsb2NhdGluZyBtZW1vcnkgb2Ygb2JqZWN0LCBhcnJh
eSBhbmQgc3RyaW5nLgorKi8KK3RlbXBsYXRlIDx0eXBlbmFtZSBFbmNvZGluZywgdHlwZW5hbWUg
QWxsb2NhdG9yID0gTWVtb3J5UG9vbEFsbG9jYXRvcjw+ID4gCitjbGFzcyBHZW5lcmljVmFsdWUg
eworcHVibGljOgorICAgIC8vISBOYW1lLXZhbHVlIHBhaXIgaW4gYW4gb2JqZWN0LgorICAgIHR5
cGVkZWYgR2VuZXJpY01lbWJlcjxFbmNvZGluZywgQWxsb2NhdG9yPiBNZW1iZXI7CisgICAgdHlw
ZWRlZiBFbmNvZGluZyBFbmNvZGluZ1R5cGU7ICAgICAgICAgICAgICAgICAgLy8hPCBFbmNvZGlu
ZyB0eXBlIGZyb20gdGVtcGxhdGUgcGFyYW1ldGVyLgorICAgIHR5cGVkZWYgQWxsb2NhdG9yIEFs
bG9jYXRvclR5cGU7ICAgICAgICAgICAgICAgIC8vITwgQWxsb2NhdG9yIHR5cGUgZnJvbSB0ZW1w
bGF0ZSBwYXJhbWV0ZXIuCisgICAgdHlwZWRlZiB0eXBlbmFtZSBFbmNvZGluZzo6Q2ggQ2g7ICAg
ICAgICAgICAgICAgLy8hPCBDaGFyYWN0ZXIgdHlwZSBkZXJpdmVkIGZyb20gRW5jb2RpbmcuCisg
ICAgdHlwZWRlZiBHZW5lcmljU3RyaW5nUmVmPENoPiBTdHJpbmdSZWZUeXBlOyAgICAgLy8hPCBS
ZWZlcmVuY2UgdG8gYSBjb25zdGFudCBzdHJpbmcKKyAgICB0eXBlZGVmIHR5cGVuYW1lIEdlbmVy
aWNNZW1iZXJJdGVyYXRvcjxmYWxzZSxFbmNvZGluZyxBbGxvY2F0b3I+OjpJdGVyYXRvciBNZW1i
ZXJJdGVyYXRvcjsgIC8vITwgTWVtYmVyIGl0ZXJhdG9yIGZvciBpdGVyYXRpbmcgaW4gb2JqZWN0
LgorICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY01lbWJlckl0ZXJhdG9yPHRydWUsRW5jb2Rp
bmcsQWxsb2NhdG9yPjo6SXRlcmF0b3IgQ29uc3RNZW1iZXJJdGVyYXRvcjsgIC8vITwgQ29uc3Rh
bnQgbWVtYmVyIGl0ZXJhdG9yIGZvciBpdGVyYXRpbmcgaW4gb2JqZWN0LgorICAgIHR5cGVkZWYg
R2VuZXJpY1ZhbHVlKiBWYWx1ZUl0ZXJhdG9yOyAgICAgICAgICAgIC8vITwgVmFsdWUgaXRlcmF0
b3IgZm9yIGl0ZXJhdGluZyBpbiBhcnJheS4KKyAgICB0eXBlZGVmIGNvbnN0IEdlbmVyaWNWYWx1
ZSogQ29uc3RWYWx1ZUl0ZXJhdG9yOyAvLyE8IENvbnN0YW50IHZhbHVlIGl0ZXJhdG9yIGZvciBp
dGVyYXRpbmcgaW4gYXJyYXkuCisKKyAgICAvLyFAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIGRlc3Ry
dWN0b3IuCisgICAgLy9AeworCisgICAgLy8hIERlZmF1bHQgY29uc3RydWN0b3IgY3JlYXRlcyBh
IG51bGwgdmFsdWUuCisgICAgR2VuZXJpY1ZhbHVlKCkgUkFQSURKU09OX05PRVhDRVBUIDogZGF0
YV8oKSwgZmxhZ3NfKGtOdWxsRmxhZykge30KKworI2lmIFJBUElESlNPTl9IQVNfQ1hYMTFfUlZB
TFVFX1JFRlMKKyAgICAvLyEgTW92ZSBjb25zdHJ1Y3RvciBpbiBDKysxMQorICAgIEdlbmVyaWNW
YWx1ZShHZW5lcmljVmFsdWUmJiByaHMpIFJBUElESlNPTl9OT0VYQ0VQVCA6IGRhdGFfKHJocy5k
YXRhXyksIGZsYWdzXyhyaHMuZmxhZ3NfKSB7CisgICAgICAgIHJocy5mbGFnc18gPSBrTnVsbEZs
YWc7IC8vIGdpdmUgdXAgY29udGVudHMKKyAgICB9CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICAv
LyEgQ29weSBjb25zdHJ1Y3RvciBpcyBub3QgcGVybWl0dGVkLgorICAgIEdlbmVyaWNWYWx1ZShj
b25zdCBHZW5lcmljVmFsdWUmIHJocyk7CisKK3B1YmxpYzoKKworICAgIC8vISBDb25zdHJ1Y3Rv
ciB3aXRoIEpTT04gdmFsdWUgdHlwZS4KKyAgICAvKiEgVGhpcyBjcmVhdGVzIGEgVmFsdWUgb2Yg
c3BlY2lmaWVkIHR5cGUgd2l0aCBkZWZhdWx0IGNvbnRlbnQuCisgICAgICAgIFxwYXJhbSB0eXBl
IFR5cGUgb2YgdGhlIHZhbHVlLgorICAgICAgICBcbm90ZSBEZWZhdWx0IGNvbnRlbnQgZm9yIG51
bWJlciBpcyB6ZXJvLgorICAgICovCisgICAgZXhwbGljaXQgR2VuZXJpY1ZhbHVlKFR5cGUgdHlw
ZSkgUkFQSURKU09OX05PRVhDRVBUIDogZGF0YV8oKSwgZmxhZ3NfKCkgeworICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgZGVmYXVsdEZsYWdzWzddID0geworICAgICAgICAgICAga051bGxG
bGFnLCBrRmFsc2VGbGFnLCBrVHJ1ZUZsYWcsIGtPYmplY3RGbGFnLCBrQXJyYXlGbGFnLCBrU2hv
cnRTdHJpbmdGbGFnLAorICAgICAgICAgICAga051bWJlckFueUZsYWcKKyAgICAgICAgfTsKKyAg
ICAgICAgUkFQSURKU09OX0FTU0VSVCh0eXBlIDw9IGtOdW1iZXJUeXBlKTsKKyAgICAgICAgZmxh
Z3NfID0gZGVmYXVsdEZsYWdzW3R5cGVdOworCisgICAgICAgIC8vIFVzZSBTaG9ydFN0cmluZyB0
byBzdG9yZSBlbXB0eSBzdHJpbmcuCisgICAgICAgIGlmICh0eXBlID09IGtTdHJpbmdUeXBlKQor
ICAgICAgICAgICAgZGF0YV8uc3MuU2V0TGVuZ3RoKDApOworICAgIH0KKworICAgIC8vISBFeHBs
aWNpdCBjb3B5IGNvbnN0cnVjdG9yICh3aXRoIGFsbG9jYXRvcikKKyAgICAvKiEgQ3JlYXRlcyBh
IGNvcHkgb2YgYSBWYWx1ZSBieSB1c2luZyB0aGUgZ2l2ZW4gQWxsb2NhdG9yCisgICAgICAgIFx0
cGFyYW0gU291cmNlQWxsb2NhdG9yIGFsbG9jYXRvciBvZiBcYyByaHMKKyAgICAgICAgXHBhcmFt
IHJocyBWYWx1ZSB0byBjb3B5IGZyb20gKHJlYWQtb25seSkKKyAgICAgICAgXHBhcmFtIGFsbG9j
YXRvciBBbGxvY2F0b3IgZm9yIGFsbG9jYXRpbmcgY29waWVkIGVsZW1lbnRzIGFuZCBidWZmZXJz
LiBDb21tb25seSB1c2UgR2VuZXJpY0RvY3VtZW50OjpHZXRBbGxvY2F0b3IoKS4KKyAgICAgICAg
XHNlZSBDb3B5RnJvbSgpCisgICAgKi8KKyAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU291cmNlQWxs
b2NhdG9yID4KKyAgICBHZW5lcmljVmFsdWUoY29uc3QgR2VuZXJpY1ZhbHVlPEVuY29kaW5nLCBT
b3VyY2VBbGxvY2F0b3I+JiByaHMsIEFsbG9jYXRvciAmIGFsbG9jYXRvcik7CisKKyAgICAvLyEg
Q29uc3RydWN0b3IgZm9yIGJvb2xlYW4gdmFsdWUuCisgICAgLyohIFxwYXJhbSBiIEJvb2xlYW4g
dmFsdWUKKyAgICAgICAgXG5vdGUgVGhpcyBjb25zdHJ1Y3RvciBpcyBsaW1pdGVkIHRvIFxlbSBy
ZWFsIGJvb2xlYW4gdmFsdWVzIGFuZCByZWplY3RzCisgICAgICAgICAgICBpbXBsaWNpdGx5IGNv
bnZlcnRlZCB0eXBlcyBsaWtlIGFyYml0cmFyeSBwb2ludGVycy4gIFVzZSBhbiBleHBsaWNpdCBj
YXN0CisgICAgICAgICAgICB0byBcYyBib29sLCBpZiB5b3Ugd2FudCB0byBjb25zdHJ1Y3QgYSBi
b29sZWFuIEpTT04gdmFsdWUgaW4gc3VjaCBjYXNlcy4KKyAgICAgKi8KKyNpZm5kZWYgUkFQSURK
U09OX0RPWFlHRU5fUlVOTklORyAvLyBoaWRlIFNGSU5BRSBmcm9tIERveHlnZW4KKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KKyAgICBleHBsaWNpdCBHZW5lcmljVmFsdWUoVCBiLCBSQVBJREpT
T05fRU5BQkxFSUYoKGludGVybmFsOjpJc1NhbWU8VCxib29sPikpKSBSQVBJREpTT05fTk9FWENF
UFQKKyNlbHNlCisgICAgZXhwbGljaXQgR2VuZXJpY1ZhbHVlKGJvb2wgYikgUkFQSURKU09OX05P
RVhDRVBUCisjZW5kaWYKKyAgICAgICAgOiBkYXRhXygpLCBmbGFnc18oYiA/IGtUcnVlRmxhZyA6
IGtGYWxzZUZsYWcpIHsKKyAgICAgICAgICAgIC8vIHNhZmUtZ3VhcmQgYWdhaW5zdCBmYWlsaW5n
IFNGSU5BRQorICAgICAgICAgICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoKGludGVybmFsOjpJ
c1NhbWU8Ym9vbCxUPjo6VmFsdWUpKTsKKyAgICB9CisKKyAgICAvLyEgQ29uc3RydWN0b3IgZm9y
IGludCB2YWx1ZS4KKyAgICBleHBsaWNpdCBHZW5lcmljVmFsdWUoaW50IGkpIFJBUElESlNPTl9O
T0VYQ0VQVCA6IGRhdGFfKCksIGZsYWdzXyhrTnVtYmVySW50RmxhZykgeworICAgICAgICBkYXRh
Xy5uLmk2NCA9IGk7CisgICAgICAgIGlmIChpID49IDApCisgICAgICAgICAgICBmbGFnc18gfD0g
a1VpbnRGbGFnIHwga1VpbnQ2NEZsYWc7CisgICAgfQorCisgICAgLy8hIENvbnN0cnVjdG9yIGZv
ciB1bnNpZ25lZCB2YWx1ZS4KKyAgICBleHBsaWNpdCBHZW5lcmljVmFsdWUodW5zaWduZWQgdSkg
UkFQSURKU09OX05PRVhDRVBUIDogZGF0YV8oKSwgZmxhZ3NfKGtOdW1iZXJVaW50RmxhZykgewor
ICAgICAgICBkYXRhXy5uLnU2NCA9IHU7IAorICAgICAgICBpZiAoISh1ICYgMHg4MDAwMDAwMCkp
CisgICAgICAgICAgICBmbGFnc18gfD0ga0ludEZsYWcgfCBrSW50NjRGbGFnOworICAgIH0KKwor
ICAgIC8vISBDb25zdHJ1Y3RvciBmb3IgaW50NjRfdCB2YWx1ZS4KKyAgICBleHBsaWNpdCBHZW5l
cmljVmFsdWUoaW50NjRfdCBpNjQpIFJBUElESlNPTl9OT0VYQ0VQVCA6IGRhdGFfKCksIGZsYWdz
XyhrTnVtYmVySW50NjRGbGFnKSB7CisgICAgICAgIGRhdGFfLm4uaTY0ID0gaTY0OworICAgICAg
ICBpZiAoaTY0ID49IDApIHsKKyAgICAgICAgICAgIGZsYWdzXyB8PSBrTnVtYmVyVWludDY0Rmxh
ZzsKKyAgICAgICAgICAgIGlmICghKHN0YXRpY19jYXN0PHVpbnQ2NF90PihpNjQpICYgUkFQSURK
U09OX1VJTlQ2NF9DMigweEZGRkZGRkZGLCAweDAwMDAwMDAwKSkpCisgICAgICAgICAgICAgICAg
ZmxhZ3NfIHw9IGtVaW50RmxhZzsKKyAgICAgICAgICAgIGlmICghKHN0YXRpY19jYXN0PHVpbnQ2
NF90PihpNjQpICYgUkFQSURKU09OX1VJTlQ2NF9DMigweEZGRkZGRkZGLCAweDgwMDAwMDAwKSkp
CisgICAgICAgICAgICAgICAgZmxhZ3NfIHw9IGtJbnRGbGFnOworICAgICAgICB9CisgICAgICAg
IGVsc2UgaWYgKGk2NCA+PSBzdGF0aWNfY2FzdDxpbnQ2NF90PihSQVBJREpTT05fVUlOVDY0X0My
KDB4RkZGRkZGRkYsIDB4ODAwMDAwMDApKSkKKyAgICAgICAgICAgIGZsYWdzXyB8PSBrSW50Rmxh
ZzsKKyAgICB9CisKKyAgICAvLyEgQ29uc3RydWN0b3IgZm9yIHVpbnQ2NF90IHZhbHVlLgorICAg
IGV4cGxpY2l0IEdlbmVyaWNWYWx1ZSh1aW50NjRfdCB1NjQpIFJBUElESlNPTl9OT0VYQ0VQVCA6
IGRhdGFfKCksIGZsYWdzXyhrTnVtYmVyVWludDY0RmxhZykgeworICAgICAgICBkYXRhXy5uLnU2
NCA9IHU2NDsKKyAgICAgICAgaWYgKCEodTY0ICYgUkFQSURKU09OX1VJTlQ2NF9DMigweDgwMDAw
MDAwLCAweDAwMDAwMDAwKSkpCisgICAgICAgICAgICBmbGFnc18gfD0ga0ludDY0RmxhZzsKKyAg
ICAgICAgaWYgKCEodTY0ICYgUkFQSURKU09OX1VJTlQ2NF9DMigweEZGRkZGRkZGLCAweDAwMDAw
MDAwKSkpCisgICAgICAgICAgICBmbGFnc18gfD0ga1VpbnRGbGFnOworICAgICAgICBpZiAoISh1
NjQgJiBSQVBJREpTT05fVUlOVDY0X0MyKDB4RkZGRkZGRkYsIDB4ODAwMDAwMDApKSkKKyAgICAg
ICAgICAgIGZsYWdzXyB8PSBrSW50RmxhZzsKKyAgICB9CisKKyAgICAvLyEgQ29uc3RydWN0b3Ig
Zm9yIGRvdWJsZSB2YWx1ZS4KKyAgICBleHBsaWNpdCBHZW5lcmljVmFsdWUoZG91YmxlIGQpIFJB
UElESlNPTl9OT0VYQ0VQVCA6IGRhdGFfKCksIGZsYWdzXyhrTnVtYmVyRG91YmxlRmxhZykgeyBk
YXRhXy5uLmQgPSBkOyB9CisKKyAgICAvLyEgQ29uc3RydWN0b3IgZm9yIGNvbnN0YW50IHN0cmlu
ZyAoaS5lLiBkbyBub3QgbWFrZSBhIGNvcHkgb2Ygc3RyaW5nKQorICAgIEdlbmVyaWNWYWx1ZShj
b25zdCBDaCogcywgU2l6ZVR5cGUgbGVuZ3RoKSBSQVBJREpTT05fTk9FWENFUFQgOiBkYXRhXygp
LCBmbGFnc18oKSB7IFNldFN0cmluZ1JhdyhTdHJpbmdSZWYocywgbGVuZ3RoKSk7IH0KKworICAg
IC8vISBDb25zdHJ1Y3RvciBmb3IgY29uc3RhbnQgc3RyaW5nIChpLmUuIGRvIG5vdCBtYWtlIGEg
Y29weSBvZiBzdHJpbmcpCisgICAgZXhwbGljaXQgR2VuZXJpY1ZhbHVlKFN0cmluZ1JlZlR5cGUg
cykgUkFQSURKU09OX05PRVhDRVBUIDogZGF0YV8oKSwgZmxhZ3NfKCkgeyBTZXRTdHJpbmdSYXco
cyk7IH0KKworICAgIC8vISBDb25zdHJ1Y3RvciBmb3IgY29weS1zdHJpbmcgKGkuZS4gZG8gbWFr
ZSBhIGNvcHkgb2Ygc3RyaW5nKQorICAgIEdlbmVyaWNWYWx1ZShjb25zdCBDaCogcywgU2l6ZVR5
cGUgbGVuZ3RoLCBBbGxvY2F0b3ImIGFsbG9jYXRvcikgOiBkYXRhXygpLCBmbGFnc18oKSB7IFNl
dFN0cmluZ1JhdyhTdHJpbmdSZWYocywgbGVuZ3RoKSwgYWxsb2NhdG9yKTsgfQorCisgICAgLy8h
IENvbnN0cnVjdG9yIGZvciBjb3B5LXN0cmluZyAoaS5lLiBkbyBtYWtlIGEgY29weSBvZiBzdHJp
bmcpCisgICAgR2VuZXJpY1ZhbHVlKGNvbnN0IENoKnMsIEFsbG9jYXRvciYgYWxsb2NhdG9yKSA6
IGRhdGFfKCksIGZsYWdzXygpIHsgU2V0U3RyaW5nUmF3KFN0cmluZ1JlZihzKSwgYWxsb2NhdG9y
KTsgfQorCisjaWYgUkFQSURKU09OX0hBU19TVERTVFJJTkcKKyAgICAvLyEgQ29uc3RydWN0b3Ig
Zm9yIGNvcHktc3RyaW5nIGZyb20gYSBzdHJpbmcgb2JqZWN0IChpLmUuIGRvIG1ha2UgYSBjb3B5
IG9mIHN0cmluZykKKyAgICAvKiEgXG5vdGUgUmVxdWlyZXMgdGhlIGRlZmluaXRpb24gb2YgdGhl
IHByZXByb2Nlc3NvciBzeW1ib2wgXHJlZiBSQVBJREpTT05fSEFTX1NURFNUUklORy4KKyAgICAg
Ki8KKyAgICBHZW5lcmljVmFsdWUoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Q2g+JiBzLCBBbGxv
Y2F0b3ImIGFsbG9jYXRvcikgOiBkYXRhXygpLCBmbGFnc18oKSB7IFNldFN0cmluZ1JhdyhTdHJp
bmdSZWYocyksIGFsbG9jYXRvcik7IH0KKyNlbmRpZgorCisgICAgLy8hIERlc3RydWN0b3IuCisg
ICAgLyohIE5lZWQgdG8gZGVzdHJ1Y3QgZWxlbWVudHMgb2YgYXJyYXksIG1lbWJlcnMgb2Ygb2Jq
ZWN0LCBvciBjb3B5LXN0cmluZy4KKyAgICAqLworICAgIH5HZW5lcmljVmFsdWUoKSB7CisgICAg
ICAgIGlmIChBbGxvY2F0b3I6OmtOZWVkRnJlZSkgeyAvLyBTaG9ydGN1dCBieSBBbGxvY2F0b3In
cyB0cmFpdAorICAgICAgICAgICAgc3dpdGNoKGZsYWdzXykgeworICAgICAgICAgICAgY2FzZSBr
QXJyYXlGbGFnOgorICAgICAgICAgICAgICAgIGZvciAoR2VuZXJpY1ZhbHVlKiB2ID0gZGF0YV8u
YS5lbGVtZW50czsgdiAhPSBkYXRhXy5hLmVsZW1lbnRzICsgZGF0YV8uYS5zaXplOyArK3YpCisg
ICAgICAgICAgICAgICAgICAgIHYtPn5HZW5lcmljVmFsdWUoKTsKKyAgICAgICAgICAgICAgICBB
bGxvY2F0b3I6OkZyZWUoZGF0YV8uYS5lbGVtZW50cyk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgIGNhc2Uga09iamVjdEZsYWc6CisgICAgICAgICAgICAgICAgZm9yIChN
ZW1iZXJJdGVyYXRvciBtID0gTWVtYmVyQmVnaW4oKTsgbSAhPSBNZW1iZXJFbmQoKTsgKyttKQor
ICAgICAgICAgICAgICAgICAgICBtLT5+TWVtYmVyKCk7CisgICAgICAgICAgICAgICAgQWxsb2Nh
dG9yOjpGcmVlKGRhdGFfLm8ubWVtYmVycyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgIGNhc2Uga0NvcHlTdHJpbmdGbGFnOgorICAgICAgICAgICAgICAgIEFsbG9jYXRv
cjo6RnJlZShjb25zdF9jYXN0PENoKj4oZGF0YV8ucy5zdHIpKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsgIC8v
IERvIG5vdGhpbmcgZm9yIG90aGVyIHR5cGVzLgorICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgLy9AfQorCisgICAgLy8hQG5hbWUgQXNzaWdubWVudCBvcGVyYXRvcnMKKyAg
ICAvL0B7CisKKyAgICAvLyEgQXNzaWdubWVudCB3aXRoIG1vdmUgc2VtYW50aWNzLgorICAgIC8q
ISBccGFyYW0gcmhzIFNvdXJjZSBvZiB0aGUgYXNzaWdubWVudC4gSXQgd2lsbCBiZWNvbWUgYSBu
dWxsIHZhbHVlIGFmdGVyIGFzc2lnbm1lbnQuCisgICAgKi8KKyAgICBHZW5lcmljVmFsdWUmIG9w
ZXJhdG9yPShHZW5lcmljVmFsdWUmIHJocykgUkFQSURKU09OX05PRVhDRVBUIHsKKyAgICAgICAg
UkFQSURKU09OX0FTU0VSVCh0aGlzICE9ICZyaHMpOworICAgICAgICB0aGlzLT5+R2VuZXJpY1Zh
bHVlKCk7CisgICAgICAgIFJhd0Fzc2lnbihyaHMpOworICAgICAgICByZXR1cm4gKnRoaXM7Cisg
ICAgfQorCisjaWYgUkFQSURKU09OX0hBU19DWFgxMV9SVkFMVUVfUkVGUworICAgIC8vISBNb3Zl
IGFzc2lnbm1lbnQgaW4gQysrMTEKKyAgICBHZW5lcmljVmFsdWUmIG9wZXJhdG9yPShHZW5lcmlj
VmFsdWUmJiByaHMpIFJBUElESlNPTl9OT0VYQ0VQVCB7CisgICAgICAgIHJldHVybiAqdGhpcyA9
IHJocy5Nb3ZlKCk7CisgICAgfQorI2VuZGlmCisKKyAgICAvLyEgQXNzaWdubWVudCBvZiBjb25z
dGFudCBzdHJpbmcgcmVmZXJlbmNlIChubyBjb3B5KQorICAgIC8qISBccGFyYW0gc3RyIENvbnN0
YW50IHN0cmluZyByZWZlcmVuY2UgdG8gYmUgYXNzaWduZWQKKyAgICAgICAgXG5vdGUgVGhpcyBv
dmVybG9hZCBpcyBuZWVkZWQgdG8gYXZvaWQgY2xhc2hlcyB3aXRoIHRoZSBnZW5lcmljIHByaW1p
dGl2ZSB0eXBlIGFzc2lnbm1lbnQgb3ZlcmxvYWQgYmVsb3cuCisgICAgICAgIFxzZWUgR2VuZXJp
Y1N0cmluZ1JlZiwgb3BlcmF0b3I9KFQpCisgICAgKi8KKyAgICBHZW5lcmljVmFsdWUmIG9wZXJh
dG9yPShTdHJpbmdSZWZUeXBlIHN0cikgUkFQSURKU09OX05PRVhDRVBUIHsKKyAgICAgICAgR2Vu
ZXJpY1ZhbHVlIHMoc3RyKTsKKyAgICAgICAgcmV0dXJuICp0aGlzID0gczsKKyAgICB9CisKKyAg
ICAvLyEgQXNzaWdubWVudCB3aXRoIHByaW1pdGl2ZSB0eXBlcy4KKyAgICAvKiEgXHRwYXJhbSBU
IEVpdGhlciBccmVmIFR5cGUsIFxjIGludCwgXGMgdW5zaWduZWQsIFxjIGludDY0X3QsIFxjIHVp
bnQ2NF90CisgICAgICAgIFxwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gYmUgYXNzaWduZWQuCisK
KyAgICAgICAgXG5vdGUgVGhlIHNvdXJjZSB0eXBlIFxjIFQgZXhwbGljaXRseSBkaXNhbGxvd3Mg
YWxsIHBvaW50ZXIgdHlwZXMsCisgICAgICAgICAgICBlc3BlY2lhbGx5IChcYyBjb25zdCkgXHJl
ZiBDaCouICBUaGlzIGhlbHBzIGF2b2lkaW5nIGltcGxpY2l0bHkKKyAgICAgICAgICAgIHJlZmVy
ZW5jaW5nIGNoYXJhY3RlciBzdHJpbmdzIHdpdGggaW5zdWZmaWNpZW50IGxpZmV0aW1lLCB1c2UK
KyAgICAgICAgICAgIFxyZWYgU2V0U3RyaW5nKGNvbnN0IENoKiwgQWxsb2NhdG9yJikgKGZvciBj
b3B5aW5nKSBvcgorICAgICAgICAgICAgXHJlZiBTdHJpbmdSZWYoKSAodG8gZXhwbGljaXRseSBt
YXJrIHRoZSBwb2ludGVyIGFzIGNvbnN0YW50KSBpbnN0ZWFkLgorICAgICAgICAgICAgQWxsIG90
aGVyIHBvaW50ZXIgdHlwZXMgd291bGQgaW1wbGljaXRseSBjb252ZXJ0IHRvIFxjIGJvb2wsCisg
ICAgICAgICAgICB1c2UgXHJlZiBTZXRCb29sKCkgaW5zdGVhZC4KKyAgICAqLworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgorICAgIFJBUElESlNPTl9ESVNBQkxFSUZfUkVUVVJOKChpbnRlcm5h
bDo6SXNQb2ludGVyPFQ+KSwgKEdlbmVyaWNWYWx1ZSYpKQorICAgIG9wZXJhdG9yPShUIHZhbHVl
KSB7CisgICAgICAgIEdlbmVyaWNWYWx1ZSB2KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuICp0aGlz
ID0gdjsKKyAgICB9CisKKyAgICAvLyEgRGVlcC1jb3B5IGFzc2lnbm1lbnQgZnJvbSBWYWx1ZQor
ICAgIC8qISBBc3NpZ25zIGEgXGIgY29weSBvZiB0aGUgVmFsdWUgdG8gdGhlIGN1cnJlbnQgVmFs
dWUgb2JqZWN0CisgICAgICAgIFx0cGFyYW0gU291cmNlQWxsb2NhdG9yIEFsbG9jYXRvciB0eXBl
IG9mIFxjIHJocworICAgICAgICBccGFyYW0gcmhzIFZhbHVlIHRvIGNvcHkgZnJvbSAocmVhZC1v
bmx5KQorICAgICAgICBccGFyYW0gYWxsb2NhdG9yIEFsbG9jYXRvciB0byB1c2UgZm9yIGNvcHlp
bmcKKyAgICAgKi8KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU291cmNlQWxsb2NhdG9yPgorICAg
IEdlbmVyaWNWYWx1ZSYgQ29weUZyb20oY29uc3QgR2VuZXJpY1ZhbHVlPEVuY29kaW5nLCBTb3Vy
Y2VBbGxvY2F0b3I+JiByaHMsIEFsbG9jYXRvciYgYWxsb2NhdG9yKSB7CisgICAgICAgIFJBUElE
SlNPTl9BU1NFUlQoKHZvaWQqKXRoaXMgIT0gKHZvaWQgY29uc3QqKSZyaHMpOworICAgICAgICB0
aGlzLT5+R2VuZXJpY1ZhbHVlKCk7CisgICAgICAgIG5ldyAodGhpcykgR2VuZXJpY1ZhbHVlKHJo
cywgYWxsb2NhdG9yKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIC8vISBF
eGNoYW5nZSB0aGUgY29udGVudHMgb2YgdGhpcyB2YWx1ZSB3aXRoIHRob3NlIG9mIG90aGVyLgor
ICAgIC8qIQorICAgICAgICBccGFyYW0gb3RoZXIgQW5vdGhlciB2YWx1ZS4KKyAgICAgICAgXG5v
dGUgQ29uc3RhbnQgY29tcGxleGl0eS4KKyAgICAqLworICAgIEdlbmVyaWNWYWx1ZSYgU3dhcChH
ZW5lcmljVmFsdWUmIG90aGVyKSBSQVBJREpTT05fTk9FWENFUFQgeworICAgICAgICBHZW5lcmlj
VmFsdWUgdGVtcDsKKyAgICAgICAgdGVtcC5SYXdBc3NpZ24oKnRoaXMpOworICAgICAgICBSYXdB
c3NpZ24ob3RoZXIpOworICAgICAgICBvdGhlci5SYXdBc3NpZ24odGVtcCk7CisgICAgICAgIHJl
dHVybiAqdGhpczsKKyAgICB9CisKKyAgICAvLyEgUHJlcGFyZSBWYWx1ZSBmb3IgbW92ZSBzZW1h
bnRpY3MKKyAgICAvKiEgXHJldHVybiAqdGhpcyAqLworICAgIEdlbmVyaWNWYWx1ZSYgTW92ZSgp
IFJBUElESlNPTl9OT0VYQ0VQVCB7IHJldHVybiAqdGhpczsgfQorICAgIC8vQH0KKworICAgIC8v
IUBuYW1lIEVxdWFsLXRvIGFuZCBub3QtZXF1YWwtdG8gb3BlcmF0b3JzCisgICAgLy9AeworICAg
IC8vISBFcXVhbC10byBvcGVyYXRvcgorICAgIC8qIQorICAgICAgICBcbm90ZSBJZiBhbiBvYmpl
Y3QgY29udGFpbnMgZHVwbGljYXRlZCBuYW1lZCBtZW1iZXIsIGNvbXBhcmluZyBlcXVhbGl0eSB3
aXRoIGFueSBvYmplY3QgaXMgYWx3YXlzIFxjIGZhbHNlLgorICAgICAgICBcbm90ZSBMaW5lYXIg
dGltZSBjb21wbGV4aXR5IChudW1iZXIgb2YgYWxsIHZhbHVlcyBpbiB0aGUgc3VidHJlZSBhbmQg
dG90YWwgbGVuZ3RocyBvZiBhbGwgc3RyaW5ncykuCisgICAgKi8KKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgU291cmNlQWxsb2NhdG9yPgorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBHZW5lcmlj
VmFsdWU8RW5jb2RpbmcsIFNvdXJjZUFsbG9jYXRvcj4mIHJocykgY29uc3QgeworICAgICAgICB0
eXBlZGVmIEdlbmVyaWNWYWx1ZTxFbmNvZGluZywgU291cmNlQWxsb2NhdG9yPiBSaHNUeXBlOwor
ICAgICAgICBpZiAoR2V0VHlwZSgpICE9IHJocy5HZXRUeXBlKCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgc3dpdGNoIChHZXRUeXBlKCkpIHsKKyAgICAgICAgY2FzZSBr
T2JqZWN0VHlwZTogLy8gV2FybmluZzogTyhuXjIpIGlubmVyLWxvb3AKKyAgICAgICAgICAgIGlm
IChkYXRhXy5vLnNpemUgIT0gcmhzLmRhdGFfLm8uc2l6ZSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7ICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAoQ29uc3RNZW1iZXJJdGVyYXRv
ciBsaHNNZW1iZXJJdHIgPSBNZW1iZXJCZWdpbigpOyBsaHNNZW1iZXJJdHIgIT0gTWVtYmVyRW5k
KCk7ICsrbGhzTWVtYmVySXRyKSB7CisgICAgICAgICAgICAgICAgdHlwZW5hbWUgUmhzVHlwZTo6
Q29uc3RNZW1iZXJJdGVyYXRvciByaHNNZW1iZXJJdHIgPSByaHMuRmluZE1lbWJlcihsaHNNZW1i
ZXJJdHItPm5hbWUpOworICAgICAgICAgICAgICAgIGlmIChyaHNNZW1iZXJJdHIgPT0gcmhzLk1l
bWJlckVuZCgpIHx8IGxoc01lbWJlckl0ci0+dmFsdWUgIT0gcmhzTWVtYmVySXRyLT52YWx1ZSkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBrQXJyYXlUeXBl
OgorICAgICAgICAgICAgaWYgKGRhdGFfLmEuc2l6ZSAhPSByaHMuZGF0YV8uYS5zaXplKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGZvciAoU2l6ZVR5cGUgaSA9
IDA7IGkgPCBkYXRhXy5hLnNpemU7IGkrKykKKyAgICAgICAgICAgICAgICBpZiAoKCp0aGlzKVtp
XSAhPSByaHNbaV0pCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgICAgIGNhc2Uga1N0cmluZ1R5cGU6CisgICAgICAgICAg
ICByZXR1cm4gU3RyaW5nRXF1YWwocmhzKTsKKworICAgICAgICBjYXNlIGtOdW1iZXJUeXBlOgor
ICAgICAgICAgICAgaWYgKElzRG91YmxlKCkgfHwgcmhzLklzRG91YmxlKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIEdldERvdWJsZSgpID09IHJocy5HZXREb3VibGUoKTsgLy8gTWF5IGNvbnZl
cnQgb25lIG9wZXJhbmQgZnJvbSBpbnRlZ2VyIHRvIGRvdWJsZS4KKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICByZXR1cm4gZGF0YV8ubi51NjQgPT0gcmhzLmRhdGFfLm4udTY0Owor
CisgICAgICAgIGRlZmF1bHQ6IC8vIGtUcnVlVHlwZSwga0ZhbHNlVHlwZSwga051bGxUeXBlCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vISBFcXVh
bC10byBvcGVyYXRvciB3aXRoIGNvbnN0IEMtc3RyaW5nIHBvaW50ZXIKKyAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgQ2gqIHJocykgY29uc3QgeyByZXR1cm4gKnRoaXMgPT0gR2VuZXJpY1ZhbHVl
KFN0cmluZ1JlZihyaHMpKTsgfQorCisjaWYgUkFQSURKU09OX0hBU19TVERTVFJJTkcKKyAgICAv
LyEgRXF1YWwtdG8gb3BlcmF0b3Igd2l0aCBzdHJpbmcgb2JqZWN0CisgICAgLyohIFxub3RlIFJl
cXVpcmVzIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBwcmVwcm9jZXNzb3Igc3ltYm9sIFxyZWYgUkFQ
SURKU09OX0hBU19TVERTVFJJTkcuCisgICAgICovCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IHN0ZDo6YmFzaWNfc3RyaW5nPENoPiYgcmhzKSBjb25zdCB7IHJldHVybiAqdGhpcyA9PSBHZW5l
cmljVmFsdWUoU3RyaW5nUmVmKHJocykpOyB9CisjZW5kaWYKKworICAgIC8vISBFcXVhbC10byBv
cGVyYXRvciB3aXRoIHByaW1pdGl2ZSB0eXBlcworICAgIC8qISBcdHBhcmFtIFQgRWl0aGVyIFxy
ZWYgVHlwZSwgXGMgaW50LCBcYyB1bnNpZ25lZCwgXGMgaW50NjRfdCwgXGMgdWludDY0X3QsIFxj
IGRvdWJsZSwgXGMgdHJ1ZSwgXGMgZmFsc2UKKyAgICAqLworICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBSQVBJREpTT05fRElTQUJMRUlGX1JFVFVSTigoaW50ZXJuYWw6Ok9yRXhwcjxpbnRlcm5h
bDo6SXNQb2ludGVyPFQ+LGludGVybmFsOjpJc0dlbmVyaWNWYWx1ZTxUPiA+KSwgKGJvb2wpKSBv
cGVyYXRvcj09KGNvbnN0IFQmIHJocykgY29uc3QgeyByZXR1cm4gKnRoaXMgPT0gR2VuZXJpY1Zh
bHVlKHJocyk7IH0KKworICAgIC8vISBOb3QtZXF1YWwtdG8gb3BlcmF0b3IKKyAgICAvKiEgXHJl
dHVybiAhKCp0aGlzID09IHJocykKKyAgICAgKi8KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU291
cmNlQWxsb2NhdG9yPgorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBHZW5lcmljVmFsdWU8RW5j
b2RpbmcsIFNvdXJjZUFsbG9jYXRvcj4mIHJocykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBy
aHMpOyB9CisKKyAgICAvLyEgTm90LWVxdWFsLXRvIG9wZXJhdG9yIHdpdGggY29uc3QgQy1zdHJp
bmcgcG9pbnRlcgorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDaCogcmhzKSBjb25zdCB7IHJl
dHVybiAhKCp0aGlzID09IHJocyk7IH0KKworICAgIC8vISBOb3QtZXF1YWwtdG8gb3BlcmF0b3Ig
d2l0aCBhcmJpdHJhcnkgdHlwZXMKKyAgICAvKiEgXHJldHVybiAhKCp0aGlzID09IHJocykKKyAg
ICAgKi8KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gUkFQSURKU09OX0RJU0FCTEVJRl9SRVRV
Uk4oKGludGVybmFsOjpJc0dlbmVyaWNWYWx1ZTxUPiksIChib29sKSkgb3BlcmF0b3IhPShjb25z
dCBUJiByaHMpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gcmhzKTsgfQorCisgICAgLy8hIEVx
dWFsLXRvIG9wZXJhdG9yIHdpdGggYXJiaXRyYXJ5IHR5cGVzIChzeW1tZXRyaWMgdmVyc2lvbikK
KyAgICAvKiEgXHJldHVybiAocmhzID09IGxocykKKyAgICAgKi8KKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gZnJpZW5kIFJBUElESlNPTl9ESVNBQkxFSUZfUkVUVVJOKChpbnRlcm5hbDo6SXNH
ZW5lcmljVmFsdWU8VD4pLCAoYm9vbCkpIG9wZXJhdG9yPT0oY29uc3QgVCYgbGhzLCBjb25zdCBH
ZW5lcmljVmFsdWUmIHJocykgeyByZXR1cm4gcmhzID09IGxoczsgfQorCisgICAgLy8hIE5vdC1F
cXVhbC10byBvcGVyYXRvciB3aXRoIGFyYml0cmFyeSB0eXBlcyAoc3ltbWV0cmljIHZlcnNpb24p
CisgICAgLyohIFxyZXR1cm4gIShyaHMgPT0gbGhzKQorICAgICAqLworICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBmcmllbmQgUkFQSURKU09OX0RJU0FCTEVJRl9SRVRVUk4oKGludGVybmFsOjpJ
c0dlbmVyaWNWYWx1ZTxUPiksIChib29sKSkgb3BlcmF0b3IhPShjb25zdCBUJiBsaHMsIGNvbnN0
IEdlbmVyaWNWYWx1ZSYgcmhzKSB7IHJldHVybiAhKHJocyA9PSBsaHMpOyB9CisgICAgLy9AfQor
CisgICAgLy8hQG5hbWUgVHlwZQorICAgIC8vQHsKKworICAgIFR5cGUgR2V0VHlwZSgpICBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPihmbGFnc18gJiBrVHlwZU1hc2spOyB9CisgICAg
Ym9vbCBJc051bGwoKSAgIGNvbnN0IHsgcmV0dXJuIGZsYWdzXyA9PSBrTnVsbEZsYWc7IH0KKyAg
ICBib29sIElzRmFsc2UoKSAgY29uc3QgeyByZXR1cm4gZmxhZ3NfID09IGtGYWxzZUZsYWc7IH0K
KyAgICBib29sIElzVHJ1ZSgpICAgY29uc3QgeyByZXR1cm4gZmxhZ3NfID09IGtUcnVlRmxhZzsg
fQorICAgIGJvb2wgSXNCb29sKCkgICBjb25zdCB7IHJldHVybiAoZmxhZ3NfICYga0Jvb2xGbGFn
KSAhPSAwOyB9CisgICAgYm9vbCBJc09iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGZsYWdzXyA9PSBr
T2JqZWN0RmxhZzsgfQorICAgIGJvb2wgSXNBcnJheSgpICBjb25zdCB7IHJldHVybiBmbGFnc18g
PT0ga0FycmF5RmxhZzsgfQorICAgIGJvb2wgSXNOdW1iZXIoKSBjb25zdCB7IHJldHVybiAoZmxh
Z3NfICYga051bWJlckZsYWcpICE9IDA7IH0KKyAgICBib29sIElzSW50KCkgICAgY29uc3QgeyBy
ZXR1cm4gKGZsYWdzXyAmIGtJbnRGbGFnKSAhPSAwOyB9CisgICAgYm9vbCBJc1VpbnQoKSAgIGNv
bnN0IHsgcmV0dXJuIChmbGFnc18gJiBrVWludEZsYWcpICE9IDA7IH0KKyAgICBib29sIElzSW50
NjQoKSAgY29uc3QgeyByZXR1cm4gKGZsYWdzXyAmIGtJbnQ2NEZsYWcpICE9IDA7IH0KKyAgICBi
b29sIElzVWludDY0KCkgY29uc3QgeyByZXR1cm4gKGZsYWdzXyAmIGtVaW50NjRGbGFnKSAhPSAw
OyB9CisgICAgYm9vbCBJc0RvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIChmbGFnc18gJiBrRG91Ymxl
RmxhZykgIT0gMDsgfQorICAgIGJvb2wgSXNTdHJpbmcoKSBjb25zdCB7IHJldHVybiAoZmxhZ3Nf
ICYga1N0cmluZ0ZsYWcpICE9IDA7IH0KKworICAgIC8vQH0KKworICAgIC8vIUBuYW1lIE51bGwK
KyAgICAvL0B7CisKKyAgICBHZW5lcmljVmFsdWUmIFNldE51bGwoKSB7IHRoaXMtPn5HZW5lcmlj
VmFsdWUoKTsgbmV3ICh0aGlzKSBHZW5lcmljVmFsdWUoKTsgcmV0dXJuICp0aGlzOyB9CisKKyAg
ICAvL0B9CisKKyAgICAvLyFAbmFtZSBCb29sCisgICAgLy9AeworCisgICAgYm9vbCBHZXRCb29s
KCkgY29uc3QgeyBSQVBJREpTT05fQVNTRVJUKElzQm9vbCgpKTsgcmV0dXJuIGZsYWdzXyA9PSBr
VHJ1ZUZsYWc7IH0KKyAgICAvLyE8IFNldCBib29sZWFuIHZhbHVlCisgICAgLyohIFxwb3N0IElz
Qm9vbCgpID09IHRydWUgKi8KKyAgICBHZW5lcmljVmFsdWUmIFNldEJvb2woYm9vbCBiKSB7IHRo
aXMtPn5HZW5lcmljVmFsdWUoKTsgbmV3ICh0aGlzKSBHZW5lcmljVmFsdWUoYik7IHJldHVybiAq
dGhpczsgfQorCisgICAgLy9AfQorCisgICAgLy8hQG5hbWUgT2JqZWN0CisgICAgLy9AeworCisg
ICAgLy8hIFNldCB0aGlzIHZhbHVlIGFzIGFuIGVtcHR5IG9iamVjdC4KKyAgICAvKiEgXHBvc3Qg
SXNPYmplY3QoKSA9PSB0cnVlICovCisgICAgR2VuZXJpY1ZhbHVlJiBTZXRPYmplY3QoKSB7IHRo
aXMtPn5HZW5lcmljVmFsdWUoKTsgbmV3ICh0aGlzKSBHZW5lcmljVmFsdWUoa09iamVjdFR5cGUp
OyByZXR1cm4gKnRoaXM7IH0KKworICAgIC8vISBHZXQgdGhlIG51bWJlciBvZiBtZW1iZXJzIGlu
IHRoZSBvYmplY3QuCisgICAgU2l6ZVR5cGUgTWVtYmVyQ291bnQoKSBjb25zdCB7IFJBUElESlNP
Tl9BU1NFUlQoSXNPYmplY3QoKSk7IHJldHVybiBkYXRhXy5vLnNpemU7IH0KKworICAgIC8vISBD
aGVjayB3aGV0aGVyIHRoZSBvYmplY3QgaXMgZW1wdHkuCisgICAgYm9vbCBPYmplY3RFbXB0eSgp
IGNvbnN0IHsgUkFQSURKU09OX0FTU0VSVChJc09iamVjdCgpKTsgcmV0dXJuIGRhdGFfLm8uc2l6
ZSA9PSAwOyB9CisKKyAgICAvLyEgR2V0IGEgdmFsdWUgZnJvbSBhbiBvYmplY3QgYXNzb2NpYXRl
ZCB3aXRoIHRoZSBuYW1lLgorICAgIC8qISBccHJlIElzT2JqZWN0KCkgPT0gdHJ1ZQorICAgICAg
ICBcdHBhcmFtIFQgRWl0aGVyIFxjIENoIG9yIFxjIGNvbnN0IFxjIENoICh0ZW1wbGF0ZSB1c2Vk
IGZvciBkaXNhbWJpZ3VhdGlvbiB3aXRoIFxyZWYgb3BlcmF0b3JbXShTaXplVHlwZSkpCisgICAg
ICAgIFxub3RlIEluIHZlcnNpb24gMC4xeCwgaWYgdGhlIG1lbWJlciBpcyBub3QgZm91bmQsIHRo
aXMgZnVuY3Rpb24gcmV0dXJucyBhIG51bGwgdmFsdWUuIFRoaXMgbWFrZXMgaXNzdWUgNy4KKyAg
ICAgICAgU2luY2UgMC4yLCBpZiB0aGUgbmFtZSBpcyBub3QgY29ycmVjdCwgaXQgd2lsbCBhc3Nl
cnQuCisgICAgICAgIElmIHVzZXIgaXMgdW5zdXJlIHdoZXRoZXIgYSBtZW1iZXIgZXhpc3RzLCB1
c2VyIHNob3VsZCB1c2UgSGFzTWVtYmVyKCkgZmlyc3QuCisgICAgICAgIEEgYmV0dGVyIGFwcHJv
YWNoIGlzIHRvIHVzZSBGaW5kTWVtYmVyKCkuCisgICAgICAgIFxub3RlIExpbmVhciB0aW1lIGNv
bXBsZXhpdHkuCisgICAgKi8KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICBSQVBJREpT
T05fRElTQUJMRUlGX1JFVFVSTigoaW50ZXJuYWw6Ok5vdEV4cHI8aW50ZXJuYWw6OklzU2FtZTx0
eXBlbmFtZSBpbnRlcm5hbDo6UmVtb3ZlQ29uc3Q8VD46OlR5cGUsIENoPiA+KSwoR2VuZXJpY1Zh
bHVlJikpIG9wZXJhdG9yW10oVCogbmFtZSkgeworICAgICAgICBHZW5lcmljVmFsdWUgbihTdHJp
bmdSZWYobmFtZSkpOworICAgICAgICByZXR1cm4gKCp0aGlzKVtuXTsKKyAgICB9CisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgUkFQSURKU09OX0RJU0FCTEVJRl9SRVRVUk4oKGludGVy
bmFsOjpOb3RFeHByPGludGVybmFsOjpJc1NhbWU8dHlwZW5hbWUgaW50ZXJuYWw6OlJlbW92ZUNv
bnN0PFQ+OjpUeXBlLCBDaD4gPiksKGNvbnN0IEdlbmVyaWNWYWx1ZSYpKSBvcGVyYXRvcltdKFQq
IG5hbWUpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8R2VuZXJpY1ZhbHVlJj4oKnRoaXMpW25h
bWVdOyB9CisKKyAgICAvLyEgR2V0IGEgdmFsdWUgZnJvbSBhbiBvYmplY3QgYXNzb2NpYXRlZCB3
aXRoIHRoZSBuYW1lLgorICAgIC8qISBccHJlIElzT2JqZWN0KCkgPT0gdHJ1ZQorICAgICAgICBc
dHBhcmFtIFNvdXJjZUFsbG9jYXRvciBBbGxvY2F0b3Igb2YgdGhlIFxjIG5hbWUgdmFsdWUKKwor
ICAgICAgICBcbm90ZSBDb21wYXJlZCB0byBccmVmIG9wZXJhdG9yW10oVCopLCB0aGlzIHZlcnNp
b24gaXMgZmFzdGVyIGJlY2F1c2UgaXQgZG9lcyBub3QgbmVlZCBhIFN0ckxlbigpLgorICAgICAg
ICBBbmQgaXQgY2FuIGFsc28gaGFuZGxlIHN0cmluZ3Mgd2l0aCBlbWJlZGRlZCBudWxsIGNoYXJh
Y3RlcnMuCisKKyAgICAgICAgXG5vdGUgTGluZWFyIHRpbWUgY29tcGxleGl0eS4KKyAgICAqLwor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTb3VyY2VBbGxvY2F0b3I+CisgICAgR2VuZXJpY1ZhbHVl
JiBvcGVyYXRvcltdKGNvbnN0IEdlbmVyaWNWYWx1ZTxFbmNvZGluZywgU291cmNlQWxsb2NhdG9y
PiYgbmFtZSkgeworICAgICAgICBNZW1iZXJJdGVyYXRvciBtZW1iZXIgPSBGaW5kTWVtYmVyKG5h
bWUpOworICAgICAgICBpZiAobWVtYmVyICE9IE1lbWJlckVuZCgpKQorICAgICAgICAgICAgcmV0
dXJuIG1lbWJlci0+dmFsdWU7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUkFQSURKU09O
X0FTU0VSVChmYWxzZSk7ICAgIC8vIHNlZSBhYm92ZSBub3RlCisgICAgICAgICAgICBzdGF0aWMg
R2VuZXJpY1ZhbHVlIE51bGxWYWx1ZTsKKyAgICAgICAgICAgIHJldHVybiBOdWxsVmFsdWU7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFNvdXJjZUFsbG9jYXRvcj4K
KyAgICBjb25zdCBHZW5lcmljVmFsdWUmIG9wZXJhdG9yW10oY29uc3QgR2VuZXJpY1ZhbHVlPEVu
Y29kaW5nLCBTb3VyY2VBbGxvY2F0b3I+JiBuYW1lKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0
PEdlbmVyaWNWYWx1ZSY+KCp0aGlzKVtuYW1lXTsgfQorCisgICAgLy8hIENvbnN0IG1lbWJlciBp
dGVyYXRvcgorICAgIC8qISBccHJlIElzT2JqZWN0KCkgPT0gdHJ1ZSAqLworICAgIENvbnN0TWVt
YmVySXRlcmF0b3IgTWVtYmVyQmVnaW4oKSBjb25zdCB7IFJBUElESlNPTl9BU1NFUlQoSXNPYmpl
Y3QoKSk7IHJldHVybiBDb25zdE1lbWJlckl0ZXJhdG9yKGRhdGFfLm8ubWVtYmVycyk7IH0KKyAg
ICAvLyEgQ29uc3QgXGVtIHBhc3QtdGhlLWVuZCBtZW1iZXIgaXRlcmF0b3IKKyAgICAvKiEgXHBy
ZSBJc09iamVjdCgpID09IHRydWUgKi8KKyAgICBDb25zdE1lbWJlckl0ZXJhdG9yIE1lbWJlckVu
ZCgpIGNvbnN0ICAgeyBSQVBJREpTT05fQVNTRVJUKElzT2JqZWN0KCkpOyByZXR1cm4gQ29uc3RN
ZW1iZXJJdGVyYXRvcihkYXRhXy5vLm1lbWJlcnMgKyBkYXRhXy5vLnNpemUpOyB9CisgICAgLy8h
IE1lbWJlciBpdGVyYXRvcgorICAgIC8qISBccHJlIElzT2JqZWN0KCkgPT0gdHJ1ZSAqLworICAg
IE1lbWJlckl0ZXJhdG9yIE1lbWJlckJlZ2luKCkgICAgICAgICAgICB7IFJBUElESlNPTl9BU1NF
UlQoSXNPYmplY3QoKSk7IHJldHVybiBNZW1iZXJJdGVyYXRvcihkYXRhXy5vLm1lbWJlcnMpOyB9
CisgICAgLy8hIFxlbSBQYXN0LXRoZS1lbmQgbWVtYmVyIGl0ZXJhdG9yCisgICAgLyohIFxwcmUg
SXNPYmplY3QoKSA9PSB0cnVlICovCisgICAgTWVtYmVySXRlcmF0b3IgTWVtYmVyRW5kKCkgICAg
ICAgICAgICAgIHsgUkFQSURKU09OX0FTU0VSVChJc09iamVjdCgpKTsgcmV0dXJuIE1lbWJlckl0
ZXJhdG9yKGRhdGFfLm8ubWVtYmVycyArIGRhdGFfLm8uc2l6ZSk7IH0KKworICAgIC8vISBDaGVj
ayB3aGV0aGVyIGEgbWVtYmVyIGV4aXN0cyBpbiB0aGUgb2JqZWN0LgorICAgIC8qIQorICAgICAg
ICBccGFyYW0gbmFtZSBNZW1iZXIgbmFtZSB0byBiZSBzZWFyY2hlZC4KKyAgICAgICAgXHByZSBJ
c09iamVjdCgpID09IHRydWUKKyAgICAgICAgXHJldHVybiBXaGV0aGVyIGEgbWVtYmVyIHdpdGgg
dGhhdCBuYW1lIGV4aXN0cy4KKyAgICAgICAgXG5vdGUgSXQgaXMgYmV0dGVyIHRvIHVzZSBGaW5k
TWVtYmVyKCkgZGlyZWN0bHkgaWYgeW91IG5lZWQgdGhlIG9idGFpbiB0aGUgdmFsdWUgYXMgd2Vs
bC4KKyAgICAgICAgXG5vdGUgTGluZWFyIHRpbWUgY29tcGxleGl0eS4KKyAgICAqLworICAgIGJv
b2wgSGFzTWVtYmVyKGNvbnN0IENoKiBuYW1lKSBjb25zdCB7IHJldHVybiBGaW5kTWVtYmVyKG5h
bWUpICE9IE1lbWJlckVuZCgpOyB9CisKKyAgICAvLyEgQ2hlY2sgd2hldGhlciBhIG1lbWJlciBl
eGlzdHMgaW4gdGhlIG9iamVjdCB3aXRoIEdlbmVyaWNWYWx1ZSBuYW1lLgorICAgIC8qIQorICAg
ICAgICBUaGlzIHZlcnNpb24gaXMgZmFzdGVyIGJlY2F1c2UgaXQgZG9lcyBub3QgbmVlZCBhIFN0
ckxlbigpLiBJdCBjYW4gYWxzbyBoYW5kbGUgc3RyaW5nIHdpdGggbnVsbCBjaGFyYWN0ZXIuCisg
ICAgICAgIFxwYXJhbSBuYW1lIE1lbWJlciBuYW1lIHRvIGJlIHNlYXJjaGVkLgorICAgICAgICBc
cHJlIElzT2JqZWN0KCkgPT0gdHJ1ZQorICAgICAgICBccmV0dXJuIFdoZXRoZXIgYSBtZW1iZXIg
d2l0aCB0aGF0IG5hbWUgZXhpc3RzLgorICAgICAgICBcbm90ZSBJdCBpcyBiZXR0ZXIgdG8gdXNl
IEZpbmRNZW1iZXIoKSBkaXJlY3RseSBpZiB5b3UgbmVlZCB0aGUgb2J0YWluIHRoZSB2YWx1ZSBh
cyB3ZWxsLgorICAgICAgICBcbm90ZSBMaW5lYXIgdGltZSBjb21wbGV4aXR5LgorICAgICovCisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFNvdXJjZUFsbG9jYXRvcj4KKyAgICBib29sIEhhc01lbWJl
cihjb25zdCBHZW5lcmljVmFsdWU8RW5jb2RpbmcsIFNvdXJjZUFsbG9jYXRvcj4mIG5hbWUpIGNv
bnN0IHsgcmV0dXJuIEZpbmRNZW1iZXIobmFtZSkgIT0gTWVtYmVyRW5kKCk7IH0KKworICAgIC8v
ISBGaW5kIG1lbWJlciBieSBuYW1lLgorICAgIC8qIQorICAgICAgICBccGFyYW0gbmFtZSBNZW1i
ZXIgbmFtZSB0byBiZSBzZWFyY2hlZC4KKyAgICAgICAgXHByZSBJc09iamVjdCgpID09IHRydWUK
KyAgICAgICAgXHJldHVybiBJdGVyYXRvciB0byBtZW1iZXIsIGlmIGl0IGV4aXN0cy4KKyAgICAg
ICAgICAgIE90aGVyd2lzZSByZXR1cm5zIFxyZWYgTWVtYmVyRW5kKCkuCisKKyAgICAgICAgXG5v
dGUgRWFybGllciB2ZXJzaW9ucyBvZiBSYXBpZGpzb24gcmV0dXJuZWQgYSBcYyBOVUxMIHBvaW50
ZXIsIGluIGNhc2UKKyAgICAgICAgICAgIHRoZSByZXF1ZXN0ZWQgbWVtYmVyIGRvZXNuJ3QgZXhp
c3QuIEZvciBjb25zaXN0ZW5jeSB3aXRoIGUuZy4KKyAgICAgICAgICAgIFxjIHN0ZDo6bWFwLCB0
aGlzIGhhcyBiZWVuIGNoYW5nZWQgdG8gTWVtYmVyRW5kKCkgbm93LgorICAgICAgICBcbm90ZSBM
aW5lYXIgdGltZSBjb21wbGV4aXR5LgorICAgICovCisgICAgTWVtYmVySXRlcmF0b3IgRmluZE1l
bWJlcihjb25zdCBDaCogbmFtZSkgeworICAgICAgICBHZW5lcmljVmFsdWUgbihTdHJpbmdSZWYo
bmFtZSkpOworICAgICAgICByZXR1cm4gRmluZE1lbWJlcihuKTsKKyAgICB9CisKKyAgICBDb25z
dE1lbWJlckl0ZXJhdG9yIEZpbmRNZW1iZXIoY29uc3QgQ2gqIG5hbWUpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0X2Nhc3Q8R2VuZXJpY1ZhbHVlJj4oKnRoaXMpLkZpbmRNZW1iZXIobmFtZSk7IH0KKwor
ICAgIC8vISBGaW5kIG1lbWJlciBieSBuYW1lLgorICAgIC8qIQorICAgICAgICBUaGlzIHZlcnNp
b24gaXMgZmFzdGVyIGJlY2F1c2UgaXQgZG9lcyBub3QgbmVlZCBhIFN0ckxlbigpLiBJdCBjYW4g
YWxzbyBoYW5kbGUgc3RyaW5nIHdpdGggbnVsbCBjaGFyYWN0ZXIuCisgICAgICAgIFxwYXJhbSBu
YW1lIE1lbWJlciBuYW1lIHRvIGJlIHNlYXJjaGVkLgorICAgICAgICBccHJlIElzT2JqZWN0KCkg
PT0gdHJ1ZQorICAgICAgICBccmV0dXJuIEl0ZXJhdG9yIHRvIG1lbWJlciwgaWYgaXQgZXhpc3Rz
LgorICAgICAgICAgICAgT3RoZXJ3aXNlIHJldHVybnMgXHJlZiBNZW1iZXJFbmQoKS4KKworICAg
ICAgICBcbm90ZSBFYXJsaWVyIHZlcnNpb25zIG9mIFJhcGlkanNvbiByZXR1cm5lZCBhIFxjIE5V
TEwgcG9pbnRlciwgaW4gY2FzZQorICAgICAgICAgICAgdGhlIHJlcXVlc3RlZCBtZW1iZXIgZG9l
c24ndCBleGlzdC4gRm9yIGNvbnNpc3RlbmN5IHdpdGggZS5nLgorICAgICAgICAgICAgXGMgc3Rk
OjptYXAsIHRoaXMgaGFzIGJlZW4gY2hhbmdlZCB0byBNZW1iZXJFbmQoKSBub3cuCisgICAgICAg
IFxub3RlIExpbmVhciB0aW1lIGNvbXBsZXhpdHkuCisgICAgKi8KKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgU291cmNlQWxsb2NhdG9yPgorICAgIE1lbWJlckl0ZXJhdG9yIEZpbmRNZW1iZXIoY29u
c3QgR2VuZXJpY1ZhbHVlPEVuY29kaW5nLCBTb3VyY2VBbGxvY2F0b3I+JiBuYW1lKSB7CisgICAg
ICAgIFJBUElESlNPTl9BU1NFUlQoSXNPYmplY3QoKSk7CisgICAgICAgIFJBUElESlNPTl9BU1NF
UlQobmFtZS5Jc1N0cmluZygpKTsKKyAgICAgICAgTWVtYmVySXRlcmF0b3IgbWVtYmVyID0gTWVt
YmVyQmVnaW4oKTsKKyAgICAgICAgZm9yICggOyBtZW1iZXIgIT0gTWVtYmVyRW5kKCk7ICsrbWVt
YmVyKQorICAgICAgICAgICAgaWYgKG5hbWUuU3RyaW5nRXF1YWwobWVtYmVyLT5uYW1lKSkKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIG1lbWJlcjsKKyAgICB9CisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFNvdXJjZUFsbG9jYXRvcj4gQ29uc3RNZW1iZXJJdGVyYXRvciBG
aW5kTWVtYmVyKGNvbnN0IEdlbmVyaWNWYWx1ZTxFbmNvZGluZywgU291cmNlQWxsb2NhdG9yPiYg
bmFtZSkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxHZW5lcmljVmFsdWUmPigqdGhpcykuRmlu
ZE1lbWJlcihuYW1lKTsgfQorCisgICAgLy8hIEFkZCBhIG1lbWJlciAobmFtZS12YWx1ZSBwYWly
KSB0byB0aGUgb2JqZWN0LgorICAgIC8qISBccGFyYW0gbmFtZSBBIHN0cmluZyB2YWx1ZSBhcyBu
YW1lIG9mIG1lbWJlci4KKyAgICAgICAgXHBhcmFtIHZhbHVlIFZhbHVlIG9mIGFueSB0eXBlLgor
ICAgICAgICBccGFyYW0gYWxsb2NhdG9yICAgIEFsbG9jYXRvciBmb3IgcmVhbGxvY2F0aW5nIG1l
bW9yeS4gSXQgbXVzdCBiZSB0aGUgc2FtZSBvbmUgYXMgdXNlZCBiZWZvcmUuIENvbW1vbmx5IHVz
ZSBHZW5lcmljRG9jdW1lbnQ6OkdldEFsbG9jYXRvcigpLgorICAgICAgICBccmV0dXJuIFRoZSB2
YWx1ZSBpdHNlbGYgZm9yIGZsdWVudCBBUEkuCisgICAgICAgIFxub3RlIFRoZSBvd25lcnNoaXAg
b2YgXGMgbmFtZSBhbmQgXGMgdmFsdWUgd2lsbCBiZSB0cmFuc2ZlcnJlZCB0byB0aGlzIG9iamVj
dCBvbiBzdWNjZXNzLgorICAgICAgICBccHJlICBJc09iamVjdCgpICYmIG5hbWUuSXNTdHJpbmco
KQorICAgICAgICBccG9zdCBuYW1lLklzTnVsbCgpICYmIHZhbHVlLklzTnVsbCgpCisgICAgICAg
IFxub3RlIEFtb3J0aXplZCBDb25zdGFudCB0aW1lIGNvbXBsZXhpdHkuCisgICAgKi8KKyAgICBH
ZW5lcmljVmFsdWUmIEFkZE1lbWJlcihHZW5lcmljVmFsdWUmIG5hbWUsIEdlbmVyaWNWYWx1ZSYg
dmFsdWUsIEFsbG9jYXRvciYgYWxsb2NhdG9yKSB7CisgICAgICAgIFJBUElESlNPTl9BU1NFUlQo
SXNPYmplY3QoKSk7CisgICAgICAgIFJBUElESlNPTl9BU1NFUlQobmFtZS5Jc1N0cmluZygpKTsK
KworICAgICAgICBPYmplY3QmIG8gPSBkYXRhXy5vOworICAgICAgICBpZiAoby5zaXplID49IG8u
Y2FwYWNpdHkpIHsKKyAgICAgICAgICAgIGlmIChvLmNhcGFjaXR5ID09IDApIHsKKyAgICAgICAg
ICAgICAgICBvLmNhcGFjaXR5ID0ga0RlZmF1bHRPYmplY3RDYXBhY2l0eTsKKyAgICAgICAgICAg
ICAgICBvLm1lbWJlcnMgPSByZWludGVycHJldF9jYXN0PE1lbWJlcio+KGFsbG9jYXRvci5NYWxs
b2Moby5jYXBhY2l0eSAqIHNpemVvZihNZW1iZXIpKSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBTaXplVHlwZSBvbGRDYXBhY2l0eSA9IG8uY2Fw
YWNpdHk7CisgICAgICAgICAgICAgICAgby5jYXBhY2l0eSArPSAob2xkQ2FwYWNpdHkgKyAxKSAv
IDI7IC8vIGdyb3cgYnkgZmFjdG9yIDEuNQorICAgICAgICAgICAgICAgIG8ubWVtYmVycyA9IHJl
aW50ZXJwcmV0X2Nhc3Q8TWVtYmVyKj4oYWxsb2NhdG9yLlJlYWxsb2Moby5tZW1iZXJzLCBvbGRD
YXBhY2l0eSAqIHNpemVvZihNZW1iZXIpLCBvLmNhcGFjaXR5ICogc2l6ZW9mKE1lbWJlcikpKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBvLm1lbWJlcnNbby5zaXplXS5uYW1l
LlJhd0Fzc2lnbihuYW1lKTsKKyAgICAgICAgby5tZW1iZXJzW28uc2l6ZV0udmFsdWUuUmF3QXNz
aWduKHZhbHVlKTsKKyAgICAgICAgby5zaXplKys7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAg
ICB9CisKKyNpZiBSQVBJREpTT05fSEFTX0NYWDExX1JWQUxVRV9SRUZTCisgICAgR2VuZXJpY1Zh
bHVlJiBBZGRNZW1iZXIoR2VuZXJpY1ZhbHVlJiYgbmFtZSwgR2VuZXJpY1ZhbHVlJiYgdmFsdWUs
IEFsbG9jYXRvciYgYWxsb2NhdG9yKSB7CisgICAgICAgIHJldHVybiBBZGRNZW1iZXIobmFtZSwg
dmFsdWUsIGFsbG9jYXRvcik7CisgICAgfQorICAgIEdlbmVyaWNWYWx1ZSYgQWRkTWVtYmVyKEdl
bmVyaWNWYWx1ZSYmIG5hbWUsIEdlbmVyaWNWYWx1ZSYgdmFsdWUsIEFsbG9jYXRvciYgYWxsb2Nh
dG9yKSB7CisgICAgICAgIHJldHVybiBBZGRNZW1iZXIobmFtZSwgdmFsdWUsIGFsbG9jYXRvcik7
CisgICAgfQorICAgIEdlbmVyaWNWYWx1ZSYgQWRkTWVtYmVyKEdlbmVyaWNWYWx1ZSYgbmFtZSwg
R2VuZXJpY1ZhbHVlJiYgdmFsdWUsIEFsbG9jYXRvciYgYWxsb2NhdG9yKSB7CisgICAgICAgIHJl
dHVybiBBZGRNZW1iZXIobmFtZSwgdmFsdWUsIGFsbG9jYXRvcik7CisgICAgfQorICAgIEdlbmVy
aWNWYWx1ZSYgQWRkTWVtYmVyKFN0cmluZ1JlZlR5cGUgbmFtZSwgR2VuZXJpY1ZhbHVlJiYgdmFs
dWUsIEFsbG9jYXRvciYgYWxsb2NhdG9yKSB7CisgICAgICAgIEdlbmVyaWNWYWx1ZSBuKG5hbWUp
OworICAgICAgICByZXR1cm4gQWRkTWVtYmVyKG4sIHZhbHVlLCBhbGxvY2F0b3IpOworICAgIH0K
KyNlbmRpZiAvLyBSQVBJREpTT05fSEFTX0NYWDExX1JWQUxVRV9SRUZTCisKKworICAgIC8vISBB
ZGQgYSBtZW1iZXIgKG5hbWUtdmFsdWUgcGFpcikgdG8gdGhlIG9iamVjdC4KKyAgICAvKiEgXHBh
cmFtIG5hbWUgQSBjb25zdGFudCBzdHJpbmcgcmVmZXJlbmNlIGFzIG5hbWUgb2YgbWVtYmVyLgor
ICAgICAgICBccGFyYW0gdmFsdWUgVmFsdWUgb2YgYW55IHR5cGUuCisgICAgICAgIFxwYXJhbSBh
bGxvY2F0b3IgICAgQWxsb2NhdG9yIGZvciByZWFsbG9jYXRpbmcgbWVtb3J5LiBJdCBtdXN0IGJl
IHRoZSBzYW1lIG9uZSBhcyB1c2VkIGJlZm9yZS4gQ29tbW9ubHkgdXNlIEdlbmVyaWNEb2N1bWVu
dDo6R2V0QWxsb2NhdG9yKCkuCisgICAgICAgIFxyZXR1cm4gVGhlIHZhbHVlIGl0c2VsZiBmb3Ig
Zmx1ZW50IEFQSS4KKyAgICAgICAgXG5vdGUgVGhlIG93bmVyc2hpcCBvZiBcYyB2YWx1ZSB3aWxs
IGJlIHRyYW5zZmVycmVkIHRvIHRoaXMgb2JqZWN0IG9uIHN1Y2Nlc3MuCisgICAgICAgIFxwcmUg
IElzT2JqZWN0KCkKKyAgICAgICAgXHBvc3QgdmFsdWUuSXNOdWxsKCkKKyAgICAgICAgXG5vdGUg
QW1vcnRpemVkIENvbnN0YW50IHRpbWUgY29tcGxleGl0eS4KKyAgICAqLworICAgIEdlbmVyaWNW
YWx1ZSYgQWRkTWVtYmVyKFN0cmluZ1JlZlR5cGUgbmFtZSwgR2VuZXJpY1ZhbHVlJiB2YWx1ZSwg
QWxsb2NhdG9yJiBhbGxvY2F0b3IpIHsKKyAgICAgICAgR2VuZXJpY1ZhbHVlIG4obmFtZSk7Cisg
ICAgICAgIHJldHVybiBBZGRNZW1iZXIobiwgdmFsdWUsIGFsbG9jYXRvcik7CisgICAgfQorCisg
ICAgLy8hIEFkZCBhIGNvbnN0YW50IHN0cmluZyB2YWx1ZSBhcyBtZW1iZXIgKG5hbWUtdmFsdWUg
cGFpcikgdG8gdGhlIG9iamVjdC4KKyAgICAvKiEgXHBhcmFtIG5hbWUgQSBjb25zdGFudCBzdHJp
bmcgcmVmZXJlbmNlIGFzIG5hbWUgb2YgbWVtYmVyLgorICAgICAgICBccGFyYW0gdmFsdWUgY29u
c3RhbnQgc3RyaW5nIHJlZmVyZW5jZSBhcyB2YWx1ZSBvZiBtZW1iZXIuCisgICAgICAgIFxwYXJh
bSBhbGxvY2F0b3IgICAgQWxsb2NhdG9yIGZvciByZWFsbG9jYXRpbmcgbWVtb3J5LiBJdCBtdXN0
IGJlIHRoZSBzYW1lIG9uZSBhcyB1c2VkIGJlZm9yZS4gQ29tbW9ubHkgdXNlIEdlbmVyaWNEb2N1
bWVudDo6R2V0QWxsb2NhdG9yKCkuCisgICAgICAgIFxyZXR1cm4gVGhlIHZhbHVlIGl0c2VsZiBm
b3IgZmx1ZW50IEFQSS4KKyAgICAgICAgXHByZSAgSXNPYmplY3QoKQorICAgICAgICBcbm90ZSBU
aGlzIG92ZXJsb2FkIGlzIG5lZWRlZCB0byBhdm9pZCBjbGFzaGVzIHdpdGggdGhlIGdlbmVyaWMg
cHJpbWl0aXZlIHR5cGUgQWRkTWVtYmVyKFN0cmluZ1JlZlR5cGUsVCxBbGxvY2F0b3ImKSBvdmVy
bG9hZCBiZWxvdy4KKyAgICAgICAgXG5vdGUgQW1vcnRpemVkIENvbnN0YW50IHRpbWUgY29tcGxl
eGl0eS4KKyAgICAqLworICAgIEdlbmVyaWNWYWx1ZSYgQWRkTWVtYmVyKFN0cmluZ1JlZlR5cGUg
bmFtZSwgU3RyaW5nUmVmVHlwZSB2YWx1ZSwgQWxsb2NhdG9yJiBhbGxvY2F0b3IpIHsKKyAgICAg
ICAgR2VuZXJpY1ZhbHVlIHYodmFsdWUpOworICAgICAgICByZXR1cm4gQWRkTWVtYmVyKG5hbWUs
IHYsIGFsbG9jYXRvcik7CisgICAgfQorCisgICAgLy8hIEFkZCBhbnkgcHJpbWl0aXZlIHZhbHVl
IGFzIG1lbWJlciAobmFtZS12YWx1ZSBwYWlyKSB0byB0aGUgb2JqZWN0LgorICAgIC8qISBcdHBh
cmFtIFQgRWl0aGVyIFxyZWYgVHlwZSwgXGMgaW50LCBcYyB1bnNpZ25lZCwgXGMgaW50NjRfdCwg
XGMgdWludDY0X3QKKyAgICAgICAgXHBhcmFtIG5hbWUgQSBjb25zdGFudCBzdHJpbmcgcmVmZXJl
bmNlIGFzIG5hbWUgb2YgbWVtYmVyLgorICAgICAgICBccGFyYW0gdmFsdWUgVmFsdWUgb2YgcHJp
bWl0aXZlIHR5cGUgXGMgVCBhcyB2YWx1ZSBvZiBtZW1iZXIKKyAgICAgICAgXHBhcmFtIGFsbG9j
YXRvciBBbGxvY2F0b3IgZm9yIHJlYWxsb2NhdGluZyBtZW1vcnkuIENvbW1vbmx5IHVzZSBHZW5l
cmljRG9jdW1lbnQ6OkdldEFsbG9jYXRvcigpLgorICAgICAgICBccmV0dXJuIFRoZSB2YWx1ZSBp
dHNlbGYgZm9yIGZsdWVudCBBUEkuCisgICAgICAgIFxwcmUgIElzT2JqZWN0KCkKKworICAgICAg
ICBcbm90ZSBUaGUgc291cmNlIHR5cGUgXGMgVCBleHBsaWNpdGx5IGRpc2FsbG93cyBhbGwgcG9p
bnRlciB0eXBlcywKKyAgICAgICAgICAgIGVzcGVjaWFsbHkgKFxjIGNvbnN0KSBccmVmIENoKi4g
IFRoaXMgaGVscHMgYXZvaWRpbmcgaW1wbGljaXRseQorICAgICAgICAgICAgcmVmZXJlbmNpbmcg
Y2hhcmFjdGVyIHN0cmluZ3Mgd2l0aCBpbnN1ZmZpY2llbnQgbGlmZXRpbWUsIHVzZQorICAgICAg
ICAgICAgXHJlZiBBZGRNZW1iZXIoU3RyaW5nUmVmVHlwZSwgR2VuZXJpY1ZhbHVlJiwgQWxsb2Nh
dG9yJikgb3IgXHJlZgorICAgICAgICAgICAgQWRkTWVtYmVyKFN0cmluZ1JlZlR5cGUsIFN0cmlu
Z1JlZlR5cGUsIEFsbG9jYXRvciYpLgorICAgICAgICAgICAgQWxsIG90aGVyIHBvaW50ZXIgdHlw
ZXMgd291bGQgaW1wbGljaXRseSBjb252ZXJ0IHRvIFxjIGJvb2wsCisgICAgICAgICAgICB1c2Ug
YW4gZXhwbGljaXQgY2FzdCBpbnN0ZWFkLCBpZiBuZWVkZWQuCisgICAgICAgIFxub3RlIEFtb3J0
aXplZCBDb25zdGFudCB0aW1lIGNvbXBsZXhpdHkuCisgICAgKi8KKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KKyAgICBSQVBJREpTT05fRElTQUJMRUlGX1JFVFVSTigoaW50ZXJuYWw6Ok9yRXhw
cjxpbnRlcm5hbDo6SXNQb2ludGVyPFQ+LCBpbnRlcm5hbDo6SXNHZW5lcmljVmFsdWU8VD4gPiks
IChHZW5lcmljVmFsdWUmKSkKKyAgICBBZGRNZW1iZXIoU3RyaW5nUmVmVHlwZSBuYW1lLCBUIHZh
bHVlLCBBbGxvY2F0b3ImIGFsbG9jYXRvcikgeworICAgICAgICBHZW5lcmljVmFsdWUgbihuYW1l
KTsKKyAgICAgICAgR2VuZXJpY1ZhbHVlIHYodmFsdWUpOworICAgICAgICByZXR1cm4gQWRkTWVt
YmVyKG4sIHYsIGFsbG9jYXRvcik7CisgICAgfQorCisgICAgLy8hIFJlbW92ZSBhbGwgbWVtYmVy
cyBpbiB0aGUgb2JqZWN0LgorICAgIC8qISBUaGlzIGZ1bmN0aW9uIGRvIG5vdCBkZWFsbG9jYXRl
IG1lbW9yeSBpbiB0aGUgb2JqZWN0LCBpLmUuIHRoZSBjYXBhY2l0eSBpcyB1bmNoYW5nZWQuCisg
ICAgICAgIFxub3RlIExpbmVhciB0aW1lIGNvbXBsZXhpdHkuCisgICAgKi8KKyAgICB2b2lkIFJl
bW92ZUFsbE1lbWJlcnMoKSB7CisgICAgICAgIFJBUElESlNPTl9BU1NFUlQoSXNPYmplY3QoKSk7
IAorICAgICAgICBmb3IgKE1lbWJlckl0ZXJhdG9yIG0gPSBNZW1iZXJCZWdpbigpOyBtICE9IE1l
bWJlckVuZCgpOyArK20pCisgICAgICAgICAgICBtLT5+TWVtYmVyKCk7CisgICAgICAgIGRhdGFf
Lm8uc2l6ZSA9IDA7CisgICAgfQorCisgICAgLy8hIFJlbW92ZSBhIG1lbWJlciBpbiBvYmplY3Qg
YnkgaXRzIG5hbWUuCisgICAgLyohIFxwYXJhbSBuYW1lIE5hbWUgb2YgbWVtYmVyIHRvIGJlIHJl
bW92ZWQuCisgICAgICAgIFxyZXR1cm4gV2hldGhlciB0aGUgbWVtYmVyIGV4aXN0ZWQuCisgICAg
ICAgIFxub3RlIFRoaXMgZnVuY3Rpb24gbWF5IHJlb3JkZXIgdGhlIG9iamVjdCBtZW1iZXJzLiBV
c2UgXHJlZgorICAgICAgICAgICAgRXJhc2VNZW1iZXIoQ29uc3RNZW1iZXJJdGVyYXRvcikgaWYg
eW91IG5lZWQgdG8gcHJlc2VydmUgdGhlCisgICAgICAgICAgICByZWxhdGl2ZSBvcmRlciBvZiB0
aGUgcmVtYWluaW5nIG1lbWJlcnMuCisgICAgICAgIFxub3RlIExpbmVhciB0aW1lIGNvbXBsZXhp
dHkuCisgICAgKi8KKyAgICBib29sIFJlbW92ZU1lbWJlcihjb25zdCBDaCogbmFtZSkgeworICAg
ICAgICBHZW5lcmljVmFsdWUgbihTdHJpbmdSZWYobmFtZSkpOworICAgICAgICByZXR1cm4gUmVt
b3ZlTWVtYmVyKG4pOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTb3VyY2VBbGxv
Y2F0b3I+CisgICAgYm9vbCBSZW1vdmVNZW1iZXIoY29uc3QgR2VuZXJpY1ZhbHVlPEVuY29kaW5n
LCBTb3VyY2VBbGxvY2F0b3I+JiBuYW1lKSB7CisgICAgICAgIE1lbWJlckl0ZXJhdG9yIG0gPSBG
aW5kTWVtYmVyKG5hbWUpOworICAgICAgICBpZiAobSAhPSBNZW1iZXJFbmQoKSkgeworICAgICAg
ICAgICAgUmVtb3ZlTWVtYmVyKG0pOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IC8vISBSZW1vdmUgYSBtZW1iZXIgaW4gb2JqZWN0IGJ5IGl0ZXJhdG9yLgorICAgIC8qISBccGFy
YW0gbSBtZW1iZXIgaXRlcmF0b3IgKG9idGFpbmVkIGJ5IEZpbmRNZW1iZXIoKSBvciBNZW1iZXJC
ZWdpbigpKS4KKyAgICAgICAgXHJldHVybiB0aGUgbmV3IGl0ZXJhdG9yIGFmdGVyIHJlbW92YWwu
CisgICAgICAgIFxub3RlIFRoaXMgZnVuY3Rpb24gbWF5IHJlb3JkZXIgdGhlIG9iamVjdCBtZW1i
ZXJzLiBVc2UgXHJlZgorICAgICAgICAgICAgRXJhc2VNZW1iZXIoQ29uc3RNZW1iZXJJdGVyYXRv
cikgaWYgeW91IG5lZWQgdG8gcHJlc2VydmUgdGhlCisgICAgICAgICAgICByZWxhdGl2ZSBvcmRl
ciBvZiB0aGUgcmVtYWluaW5nIG1lbWJlcnMuCisgICAgICAgIFxub3RlIENvbnN0YW50IHRpbWUg
Y29tcGxleGl0eS4KKyAgICAqLworICAgIE1lbWJlckl0ZXJhdG9yIFJlbW92ZU1lbWJlcihNZW1i
ZXJJdGVyYXRvciBtKSB7CisgICAgICAgIFJBUElESlNPTl9BU1NFUlQoSXNPYmplY3QoKSk7Cisg
ICAgICAgIFJBUElESlNPTl9BU1NFUlQoZGF0YV8uby5zaXplID4gMCk7CisgICAgICAgIFJBUElE
SlNPTl9BU1NFUlQoZGF0YV8uby5tZW1iZXJzICE9IDApOworICAgICAgICBSQVBJREpTT05fQVNT
RVJUKG0gPj0gTWVtYmVyQmVnaW4oKSAmJiBtIDwgTWVtYmVyRW5kKCkpOworCisgICAgICAgIE1l
bWJlckl0ZXJhdG9yIGxhc3QoZGF0YV8uby5tZW1iZXJzICsgKGRhdGFfLm8uc2l6ZSAtIDEpKTsK
KyAgICAgICAgaWYgKGRhdGFfLm8uc2l6ZSA+IDEgJiYgbSAhPSBsYXN0KSB7CisgICAgICAgICAg
ICAvLyBNb3ZlIHRoZSBsYXN0IG9uZSB0byB0aGlzIHBsYWNlCisgICAgICAgICAgICAqbSA9ICps
YXN0OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gT25seSBvbmUg
bGVmdCwganVzdCBkZXN0cm95CisgICAgICAgICAgICBtLT5+TWVtYmVyKCk7CisgICAgICAgIH0K
KyAgICAgICAgLS1kYXRhXy5vLnNpemU7CisgICAgICAgIHJldHVybiBtOworICAgIH0KKworICAg
IC8vISBSZW1vdmUgYSBtZW1iZXIgZnJvbSBhbiBvYmplY3QgYnkgaXRlcmF0b3IuCisgICAgLyoh
IFxwYXJhbSBwb3MgaXRlcmF0b3IgdG8gdGhlIG1lbWJlciB0byByZW1vdmUKKyAgICAgICAgXHBy
ZSBJc09iamVjdCgpID09IHRydWUgJiYgXHJlZiBNZW1iZXJCZWdpbigpIDw9IFxjIHBvcyA8IFxy
ZWYgTWVtYmVyRW5kKCkKKyAgICAgICAgXHJldHVybiBJdGVyYXRvciBmb2xsb3dpbmcgdGhlIHJl
bW92ZWQgZWxlbWVudC4KKyAgICAgICAgICAgIElmIHRoZSBpdGVyYXRvciBcYyBwb3MgcmVmZXJz
IHRvIHRoZSBsYXN0IGVsZW1lbnQsIHRoZSBccmVmIE1lbWJlckVuZCgpIGl0ZXJhdG9yIGlzIHJl
dHVybmVkLgorICAgICAgICBcbm90ZSBUaGlzIGZ1bmN0aW9uIHByZXNlcnZlcyB0aGUgcmVsYXRp
dmUgb3JkZXIgb2YgdGhlIHJlbWFpbmluZyBvYmplY3QKKyAgICAgICAgICAgIG1lbWJlcnMuIElm
IHlvdSBkbyBub3QgbmVlZCB0aGlzLCB1c2UgdGhlIG1vcmUgZWZmaWNpZW50IFxyZWYgUmVtb3Zl
TWVtYmVyKE1lbWJlckl0ZXJhdG9yKS4KKyAgICAgICAgXG5vdGUgTGluZWFyIHRpbWUgY29tcGxl
eGl0eS4KKyAgICAqLworICAgIE1lbWJlckl0ZXJhdG9yIEVyYXNlTWVtYmVyKENvbnN0TWVtYmVy
SXRlcmF0b3IgcG9zKSB7CisgICAgICAgIHJldHVybiBFcmFzZU1lbWJlcihwb3MsIHBvcyArMSk7
CisgICAgfQorCisgICAgLy8hIFJlbW92ZSBtZW1iZXJzIGluIHRoZSByYW5nZSBbZmlyc3QsIGxh
c3QpIGZyb20gYW4gb2JqZWN0LgorICAgIC8qISBccGFyYW0gZmlyc3QgaXRlcmF0b3IgdG8gdGhl
IGZpcnN0IG1lbWJlciB0byByZW1vdmUKKyAgICAgICAgXHBhcmFtIGxhc3QgIGl0ZXJhdG9yIGZv
bGxvd2luZyB0aGUgbGFzdCBtZW1iZXIgdG8gcmVtb3ZlCisgICAgICAgIFxwcmUgSXNPYmplY3Qo
KSA9PSB0cnVlICYmIFxyZWYgTWVtYmVyQmVnaW4oKSA8PSBcYyBmaXJzdCA8PSBcYyBsYXN0IDw9
IFxyZWYgTWVtYmVyRW5kKCkKKyAgICAgICAgXHJldHVybiBJdGVyYXRvciBmb2xsb3dpbmcgdGhl
IGxhc3QgcmVtb3ZlZCBlbGVtZW50LgorICAgICAgICBcbm90ZSBUaGlzIGZ1bmN0aW9uIHByZXNl
cnZlcyB0aGUgcmVsYXRpdmUgb3JkZXIgb2YgdGhlIHJlbWFpbmluZyBvYmplY3QKKyAgICAgICAg
ICAgIG1lbWJlcnMuCisgICAgICAgIFxub3RlIExpbmVhciB0aW1lIGNvbXBsZXhpdHkuCisgICAg
Ki8KKyAgICBNZW1iZXJJdGVyYXRvciBFcmFzZU1lbWJlcihDb25zdE1lbWJlckl0ZXJhdG9yIGZp
cnN0LCBDb25zdE1lbWJlckl0ZXJhdG9yIGxhc3QpIHsKKyAgICAgICAgUkFQSURKU09OX0FTU0VS
VChJc09iamVjdCgpKTsKKyAgICAgICAgUkFQSURKU09OX0FTU0VSVChkYXRhXy5vLnNpemUgPiAw
KTsKKyAgICAgICAgUkFQSURKU09OX0FTU0VSVChkYXRhXy5vLm1lbWJlcnMgIT0gMCk7CisgICAg
ICAgIFJBUElESlNPTl9BU1NFUlQoZmlyc3QgPj0gTWVtYmVyQmVnaW4oKSk7CisgICAgICAgIFJB
UElESlNPTl9BU1NFUlQoZmlyc3QgPD0gbGFzdCk7CisgICAgICAgIFJBUElESlNPTl9BU1NFUlQo
bGFzdCA8PSBNZW1iZXJFbmQoKSk7CisKKyAgICAgICAgTWVtYmVySXRlcmF0b3IgcG9zID0gTWVt
YmVyQmVnaW4oKSArIChmaXJzdCAtIE1lbWJlckJlZ2luKCkpOworICAgICAgICBmb3IgKE1lbWJl
ckl0ZXJhdG9yIGl0ciA9IHBvczsgaXRyICE9IGxhc3Q7ICsraXRyKQorICAgICAgICAgICAgaXRy
LT5+TWVtYmVyKCk7CisgICAgICAgIHN0ZDo6bWVtbW92ZSgmKnBvcywgJipsYXN0LCAoTWVtYmVy
RW5kKCkgLSBsYXN0KSAqIHNpemVvZihNZW1iZXIpKTsKKyAgICAgICAgZGF0YV8uby5zaXplIC09
IChsYXN0IC0gZmlyc3QpOworICAgICAgICByZXR1cm4gcG9zOworICAgIH0KKworICAgIC8vQH0K
KworICAgIC8vIUBuYW1lIEFycmF5CisgICAgLy9AeworCisgICAgLy8hIFNldCB0aGlzIHZhbHVl
IGFzIGFuIGVtcHR5IGFycmF5LgorICAgIC8qISBccG9zdCBJc0FycmF5ID09IHRydWUgKi8KKyAg
ICBHZW5lcmljVmFsdWUmIFNldEFycmF5KCkgeyAgdGhpcy0+fkdlbmVyaWNWYWx1ZSgpOyBuZXcg
KHRoaXMpIEdlbmVyaWNWYWx1ZShrQXJyYXlUeXBlKTsgcmV0dXJuICp0aGlzOyB9CisKKyAgICAv
LyEgR2V0IHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gYXJyYXkuCisgICAgU2l6ZVR5cGUgU2l6
ZSgpIGNvbnN0IHsgUkFQSURKU09OX0FTU0VSVChJc0FycmF5KCkpOyByZXR1cm4gZGF0YV8uYS5z
aXplOyB9CisKKyAgICAvLyEgR2V0IHRoZSBjYXBhY2l0eSBvZiBhcnJheS4KKyAgICBTaXplVHlw
ZSBDYXBhY2l0eSgpIGNvbnN0IHsgUkFQSURKU09OX0FTU0VSVChJc0FycmF5KCkpOyByZXR1cm4g
ZGF0YV8uYS5jYXBhY2l0eTsgfQorCisgICAgLy8hIENoZWNrIHdoZXRoZXIgdGhlIGFycmF5IGlz
IGVtcHR5LgorICAgIGJvb2wgRW1wdHkoKSBjb25zdCB7IFJBUElESlNPTl9BU1NFUlQoSXNBcnJh
eSgpKTsgcmV0dXJuIGRhdGFfLmEuc2l6ZSA9PSAwOyB9CisKKyAgICAvLyEgUmVtb3ZlIGFsbCBl
bGVtZW50cyBpbiB0aGUgYXJyYXkuCisgICAgLyohIFRoaXMgZnVuY3Rpb24gZG8gbm90IGRlYWxs
b2NhdGUgbWVtb3J5IGluIHRoZSBhcnJheSwgaS5lLiB0aGUgY2FwYWNpdHkgaXMgdW5jaGFuZ2Vk
LgorICAgICAgICBcbm90ZSBMaW5lYXIgdGltZSBjb21wbGV4aXR5LgorICAgICovCisgICAgdm9p
ZCBDbGVhcigpIHsKKyAgICAgICAgUkFQSURKU09OX0FTU0VSVChJc0FycmF5KCkpOyAKKyAgICAg
ICAgZm9yIChTaXplVHlwZSBpID0gMDsgaSA8IGRhdGFfLmEuc2l6ZTsgKytpKQorICAgICAgICAg
ICAgZGF0YV8uYS5lbGVtZW50c1tpXS5+R2VuZXJpY1ZhbHVlKCk7CisgICAgICAgIGRhdGFfLmEu
c2l6ZSA9IDA7CisgICAgfQorCisgICAgLy8hIEdldCBhbiBlbGVtZW50IGZyb20gYXJyYXkgYnkg
aW5kZXguCisgICAgLyohIFxwcmUgSXNBcnJheSgpID09IHRydWUKKyAgICAgICAgXHBhcmFtIGlu
ZGV4IFplcm8tYmFzZWQgaW5kZXggb2YgZWxlbWVudC4KKyAgICAgICAgXHNlZSBvcGVyYXRvcltd
KFQqKQorICAgICovCisgICAgR2VuZXJpY1ZhbHVlJiBvcGVyYXRvcltdKFNpemVUeXBlIGluZGV4
KSB7CisgICAgICAgIFJBUElESlNPTl9BU1NFUlQoSXNBcnJheSgpKTsKKyAgICAgICAgUkFQSURK
U09OX0FTU0VSVChpbmRleCA8IGRhdGFfLmEuc2l6ZSk7CisgICAgICAgIHJldHVybiBkYXRhXy5h
LmVsZW1lbnRzW2luZGV4XTsKKyAgICB9CisgICAgY29uc3QgR2VuZXJpY1ZhbHVlJiBvcGVyYXRv
cltdKFNpemVUeXBlIGluZGV4KSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEdlbmVyaWNWYWx1
ZSY+KCp0aGlzKVtpbmRleF07IH0KKworICAgIC8vISBFbGVtZW50IGl0ZXJhdG9yCisgICAgLyoh
IFxwcmUgSXNBcnJheSgpID09IHRydWUgKi8KKyAgICBWYWx1ZUl0ZXJhdG9yIEJlZ2luKCkgeyBS
QVBJREpTT05fQVNTRVJUKElzQXJyYXkoKSk7IHJldHVybiBkYXRhXy5hLmVsZW1lbnRzOyB9Cisg
ICAgLy8hIFxlbSBQYXN0LXRoZS1lbmQgZWxlbWVudCBpdGVyYXRvcgorICAgIC8qISBccHJlIElz
QXJyYXkoKSA9PSB0cnVlICovCisgICAgVmFsdWVJdGVyYXRvciBFbmQoKSB7IFJBUElESlNPTl9B
U1NFUlQoSXNBcnJheSgpKTsgcmV0dXJuIGRhdGFfLmEuZWxlbWVudHMgKyBkYXRhXy5hLnNpemU7
IH0KKyAgICAvLyEgQ29uc3RhbnQgZWxlbWVudCBpdGVyYXRvcgorICAgIC8qISBccHJlIElzQXJy
YXkoKSA9PSB0cnVlICovCisgICAgQ29uc3RWYWx1ZUl0ZXJhdG9yIEJlZ2luKCkgY29uc3QgeyBy
ZXR1cm4gY29uc3RfY2FzdDxHZW5lcmljVmFsdWUmPigqdGhpcykuQmVnaW4oKTsgfQorICAgIC8v
ISBDb25zdGFudCBcZW0gcGFzdC10aGUtZW5kIGVsZW1lbnQgaXRlcmF0b3IKKyAgICAvKiEgXHBy
ZSBJc0FycmF5KCkgPT0gdHJ1ZSAqLworICAgIENvbnN0VmFsdWVJdGVyYXRvciBFbmQoKSBjb25z
dCB7IHJldHVybiBjb25zdF9jYXN0PEdlbmVyaWNWYWx1ZSY+KCp0aGlzKS5FbmQoKTsgfQorCisg
ICAgLy8hIFJlcXVlc3QgdGhlIGFycmF5IHRvIGhhdmUgZW5vdWdoIGNhcGFjaXR5IHRvIHN0b3Jl
IGVsZW1lbnRzLgorICAgIC8qISBccGFyYW0gbmV3Q2FwYWNpdHkgIFRoZSBjYXBhY2l0eSB0aGF0
IHRoZSBhcnJheSBhdCBsZWFzdCBuZWVkIHRvIGhhdmUuCisgICAgICAgIFxwYXJhbSBhbGxvY2F0
b3IgICAgQWxsb2NhdG9yIGZvciByZWFsbG9jYXRpbmcgbWVtb3J5LiBJdCBtdXN0IGJlIHRoZSBz
YW1lIG9uZSBhcyB1c2VkIGJlZm9yZS4gQ29tbW9ubHkgdXNlIEdlbmVyaWNEb2N1bWVudDo6R2V0
QWxsb2NhdG9yKCkuCisgICAgICAgIFxyZXR1cm4gVGhlIHZhbHVlIGl0c2VsZiBmb3IgZmx1ZW50
IEFQSS4KKyAgICAgICAgXG5vdGUgTGluZWFyIHRpbWUgY29tcGxleGl0eS4KKyAgICAqLworICAg
IEdlbmVyaWNWYWx1ZSYgUmVzZXJ2ZShTaXplVHlwZSBuZXdDYXBhY2l0eSwgQWxsb2NhdG9yICZh
bGxvY2F0b3IpIHsKKyAgICAgICAgUkFQSURKU09OX0FTU0VSVChJc0FycmF5KCkpOworICAgICAg
ICBpZiAobmV3Q2FwYWNpdHkgPiBkYXRhXy5hLmNhcGFjaXR5KSB7CisgICAgICAgICAgICBkYXRh
Xy5hLmVsZW1lbnRzID0gKEdlbmVyaWNWYWx1ZSopYWxsb2NhdG9yLlJlYWxsb2MoZGF0YV8uYS5l
bGVtZW50cywgZGF0YV8uYS5jYXBhY2l0eSAqIHNpemVvZihHZW5lcmljVmFsdWUpLCBuZXdDYXBh
Y2l0eSAqIHNpemVvZihHZW5lcmljVmFsdWUpKTsKKyAgICAgICAgICAgIGRhdGFfLmEuY2FwYWNp
dHkgPSBuZXdDYXBhY2l0eTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKnRoaXM7CisgICAg
fQorCisgICAgLy8hIEFwcGVuZCBhIEdlbmVyaWNWYWx1ZSBhdCB0aGUgZW5kIG9mIHRoZSBhcnJh
eS4KKyAgICAvKiEgXHBhcmFtIHZhbHVlICAgICAgICBWYWx1ZSB0byBiZSBhcHBlbmRlZC4KKyAg
ICAgICAgXHBhcmFtIGFsbG9jYXRvciAgICBBbGxvY2F0b3IgZm9yIHJlYWxsb2NhdGluZyBtZW1v
cnkuIEl0IG11c3QgYmUgdGhlIHNhbWUgb25lIGFzIHVzZWQgYmVmb3JlLiBDb21tb25seSB1c2Ug
R2VuZXJpY0RvY3VtZW50OjpHZXRBbGxvY2F0b3IoKS4KKyAgICAgICAgXHByZSBJc0FycmF5KCkg
PT0gdHJ1ZQorICAgICAgICBccG9zdCB2YWx1ZS5Jc051bGwoKSA9PSB0cnVlCisgICAgICAgIFxy
ZXR1cm4gVGhlIHZhbHVlIGl0c2VsZiBmb3IgZmx1ZW50IEFQSS4KKyAgICAgICAgXG5vdGUgVGhl
IG93bmVyc2hpcCBvZiBcYyB2YWx1ZSB3aWxsIGJlIHRyYW5zZmVycmVkIHRvIHRoaXMgYXJyYXkg
b24gc3VjY2Vzcy4KKyAgICAgICAgXG5vdGUgSWYgdGhlIG51bWJlciBvZiBlbGVtZW50cyB0byBi
ZSBhcHBlbmRlZCBpcyBrbm93biwgY2FsbHMgUmVzZXJ2ZSgpIG9uY2UgZmlyc3QgbWF5IGJlIG1v
cmUgZWZmaWNpZW50LgorICAgICAgICBcbm90ZSBBbW9ydGl6ZWQgY29uc3RhbnQgdGltZSBjb21w
bGV4aXR5LgorICAgICovCisgICAgR2VuZXJpY1ZhbHVlJiBQdXNoQmFjayhHZW5lcmljVmFsdWUm
IHZhbHVlLCBBbGxvY2F0b3ImIGFsbG9jYXRvcikgeworICAgICAgICBSQVBJREpTT05fQVNTRVJU
KElzQXJyYXkoKSk7CisgICAgICAgIGlmIChkYXRhXy5hLnNpemUgPj0gZGF0YV8uYS5jYXBhY2l0
eSkKKyAgICAgICAgICAgIFJlc2VydmUoZGF0YV8uYS5jYXBhY2l0eSA9PSAwID8ga0RlZmF1bHRB
cnJheUNhcGFjaXR5IDogKGRhdGFfLmEuY2FwYWNpdHkgKyAoZGF0YV8uYS5jYXBhY2l0eSArIDEp
IC8gMiksIGFsbG9jYXRvcik7CisgICAgICAgIGRhdGFfLmEuZWxlbWVudHNbZGF0YV8uYS5zaXpl
KytdLlJhd0Fzc2lnbih2YWx1ZSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyNp
ZiBSQVBJREpTT05fSEFTX0NYWDExX1JWQUxVRV9SRUZTCisgICAgR2VuZXJpY1ZhbHVlJiBQdXNo
QmFjayhHZW5lcmljVmFsdWUmJiB2YWx1ZSwgQWxsb2NhdG9yJiBhbGxvY2F0b3IpIHsKKyAgICAg
ICAgcmV0dXJuIFB1c2hCYWNrKHZhbHVlLCBhbGxvY2F0b3IpOworICAgIH0KKyNlbmRpZiAvLyBS
QVBJREpTT05fSEFTX0NYWDExX1JWQUxVRV9SRUZTCisKKyAgICAvLyEgQXBwZW5kIGEgY29uc3Rh
bnQgc3RyaW5nIHJlZmVyZW5jZSBhdCB0aGUgZW5kIG9mIHRoZSBhcnJheS4KKyAgICAvKiEgXHBh
cmFtIHZhbHVlICAgICAgICBDb25zdGFudCBzdHJpbmcgcmVmZXJlbmNlIHRvIGJlIGFwcGVuZGVk
LgorICAgICAgICBccGFyYW0gYWxsb2NhdG9yICAgIEFsbG9jYXRvciBmb3IgcmVhbGxvY2F0aW5n
IG1lbW9yeS4gSXQgbXVzdCBiZSB0aGUgc2FtZSBvbmUgdXNlZCBwcmV2aW91c2x5LiBDb21tb25s
eSB1c2UgR2VuZXJpY0RvY3VtZW50OjpHZXRBbGxvY2F0b3IoKS4KKyAgICAgICAgXHByZSBJc0Fy
cmF5KCkgPT0gdHJ1ZQorICAgICAgICBccmV0dXJuIFRoZSB2YWx1ZSBpdHNlbGYgZm9yIGZsdWVu
dCBBUEkuCisgICAgICAgIFxub3RlIElmIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gYmUgYXBw
ZW5kZWQgaXMga25vd24sIGNhbGxzIFJlc2VydmUoKSBvbmNlIGZpcnN0IG1heSBiZSBtb3JlIGVm
ZmljaWVudC4KKyAgICAgICAgXG5vdGUgQW1vcnRpemVkIGNvbnN0YW50IHRpbWUgY29tcGxleGl0
eS4KKyAgICAgICAgXHNlZSBHZW5lcmljU3RyaW5nUmVmCisgICAgKi8KKyAgICBHZW5lcmljVmFs
dWUmIFB1c2hCYWNrKFN0cmluZ1JlZlR5cGUgdmFsdWUsIEFsbG9jYXRvciYgYWxsb2NhdG9yKSB7
CisgICAgICAgIHJldHVybiAoKnRoaXMpLnRlbXBsYXRlIFB1c2hCYWNrPFN0cmluZ1JlZlR5cGU+
KHZhbHVlLCBhbGxvY2F0b3IpOworICAgIH0KKworICAgIC8vISBBcHBlbmQgYSBwcmltaXRpdmUg
dmFsdWUgYXQgdGhlIGVuZCBvZiB0aGUgYXJyYXkuCisgICAgLyohIFx0cGFyYW0gVCBFaXRoZXIg
XHJlZiBUeXBlLCBcYyBpbnQsIFxjIHVuc2lnbmVkLCBcYyBpbnQ2NF90LCBcYyB1aW50NjRfdAor
ICAgICAgICBccGFyYW0gdmFsdWUgVmFsdWUgb2YgcHJpbWl0aXZlIHR5cGUgVCB0byBiZSBhcHBl
bmRlZC4KKyAgICAgICAgXHBhcmFtIGFsbG9jYXRvciAgICBBbGxvY2F0b3IgZm9yIHJlYWxsb2Nh
dGluZyBtZW1vcnkuIEl0IG11c3QgYmUgdGhlIHNhbWUgb25lIGFzIHVzZWQgYmVmb3JlLiBDb21t
b25seSB1c2UgR2VuZXJpY0RvY3VtZW50OjpHZXRBbGxvY2F0b3IoKS4KKyAgICAgICAgXHByZSBJ
c0FycmF5KCkgPT0gdHJ1ZQorICAgICAgICBccmV0dXJuIFRoZSB2YWx1ZSBpdHNlbGYgZm9yIGZs
dWVudCBBUEkuCisgICAgICAgIFxub3RlIElmIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gYmUg
YXBwZW5kZWQgaXMga25vd24sIGNhbGxzIFJlc2VydmUoKSBvbmNlIGZpcnN0IG1heSBiZSBtb3Jl
IGVmZmljaWVudC4KKworICAgICAgICBcbm90ZSBUaGUgc291cmNlIHR5cGUgXGMgVCBleHBsaWNp
dGx5IGRpc2FsbG93cyBhbGwgcG9pbnRlciB0eXBlcywKKyAgICAgICAgICAgIGVzcGVjaWFsbHkg
KFxjIGNvbnN0KSBccmVmIENoKi4gIFRoaXMgaGVscHMgYXZvaWRpbmcgaW1wbGljaXRseQorICAg
ICAgICAgICAgcmVmZXJlbmNpbmcgY2hhcmFjdGVyIHN0cmluZ3Mgd2l0aCBpbnN1ZmZpY2llbnQg
bGlmZXRpbWUsIHVzZQorICAgICAgICAgICAgXHJlZiBQdXNoQmFjayhHZW5lcmljVmFsdWUmLCBB
bGxvY2F0b3ImKSBvciBccmVmCisgICAgICAgICAgICBQdXNoQmFjayhTdHJpbmdSZWZUeXBlLCBB
bGxvY2F0b3ImKS4KKyAgICAgICAgICAgIEFsbCBvdGhlciBwb2ludGVyIHR5cGVzIHdvdWxkIGlt
cGxpY2l0bHkgY29udmVydCB0byBcYyBib29sLAorICAgICAgICAgICAgdXNlIGFuIGV4cGxpY2l0
IGNhc3QgaW5zdGVhZCwgaWYgbmVlZGVkLgorICAgICAgICBcbm90ZSBBbW9ydGl6ZWQgY29uc3Rh
bnQgdGltZSBjb21wbGV4aXR5LgorICAgICovCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cisg
ICAgUkFQSURKU09OX0RJU0FCTEVJRl9SRVRVUk4oKGludGVybmFsOjpPckV4cHI8aW50ZXJuYWw6
OklzUG9pbnRlcjxUPiwgaW50ZXJuYWw6OklzR2VuZXJpY1ZhbHVlPFQ+ID4pLCAoR2VuZXJpY1Zh
bHVlJikpCisgICAgUHVzaEJhY2soVCB2YWx1ZSwgQWxsb2NhdG9yJiBhbGxvY2F0b3IpIHsKKyAg
ICAgICAgR2VuZXJpY1ZhbHVlIHYodmFsdWUpOworICAgICAgICByZXR1cm4gUHVzaEJhY2sodiwg
YWxsb2NhdG9yKTsKKyAgICB9CisKKyAgICAvLyEgUmVtb3ZlIHRoZSBsYXN0IGVsZW1lbnQgaW4g
dGhlIGFycmF5LgorICAgIC8qIQorICAgICAgICBcbm90ZSBDb25zdGFudCB0aW1lIGNvbXBsZXhp
dHkuCisgICAgKi8KKyAgICBHZW5lcmljVmFsdWUmIFBvcEJhY2soKSB7CisgICAgICAgIFJBUElE
SlNPTl9BU1NFUlQoSXNBcnJheSgpKTsKKyAgICAgICAgUkFQSURKU09OX0FTU0VSVCghRW1wdHko
KSk7CisgICAgICAgIGRhdGFfLmEuZWxlbWVudHNbLS1kYXRhXy5hLnNpemVdLn5HZW5lcmljVmFs
dWUoKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIC8vISBSZW1vdmUgYW4g
ZWxlbWVudCBvZiBhcnJheSBieSBpdGVyYXRvci4KKyAgICAvKiEKKyAgICAgICAgXHBhcmFtIHBv
cyBpdGVyYXRvciB0byB0aGUgZWxlbWVudCB0byByZW1vdmUKKyAgICAgICAgXHByZSBJc0FycmF5
KCkgPT0gdHJ1ZSAmJiBccmVmIEJlZ2luKCkgPD0gXGMgcG9zIDwgXHJlZiBFbmQoKQorICAgICAg
ICBccmV0dXJuIEl0ZXJhdG9yIGZvbGxvd2luZyB0aGUgcmVtb3ZlZCBlbGVtZW50LiBJZiB0aGUg
aXRlcmF0b3IgcG9zIHJlZmVycyB0byB0aGUgbGFzdCBlbGVtZW50LCB0aGUgRW5kKCkgaXRlcmF0
b3IgaXMgcmV0dXJuZWQuCisgICAgICAgIFxub3RlIExpbmVhciB0aW1lIGNvbXBsZXhpdHkuCisg
ICAgKi8KKyAgICBWYWx1ZUl0ZXJhdG9yIEVyYXNlKENvbnN0VmFsdWVJdGVyYXRvciBwb3MpIHsK
KyAgICAgICAgcmV0dXJuIEVyYXNlKHBvcywgcG9zICsgMSk7CisgICAgfQorCisgICAgLy8hIFJl
bW92ZSBlbGVtZW50cyBpbiB0aGUgcmFuZ2UgW2ZpcnN0LCBsYXN0KSBvZiB0aGUgYXJyYXkuCisg
ICAgLyohCisgICAgICAgIFxwYXJhbSBmaXJzdCBpdGVyYXRvciB0byB0aGUgZmlyc3QgZWxlbWVu
dCB0byByZW1vdmUKKyAgICAgICAgXHBhcmFtIGxhc3QgIGl0ZXJhdG9yIGZvbGxvd2luZyB0aGUg
bGFzdCBlbGVtZW50IHRvIHJlbW92ZQorICAgICAgICBccHJlIElzQXJyYXkoKSA9PSB0cnVlICYm
IFxyZWYgQmVnaW4oKSA8PSBcYyBmaXJzdCA8PSBcYyBsYXN0IDw9IFxyZWYgRW5kKCkKKyAgICAg
ICAgXHJldHVybiBJdGVyYXRvciBmb2xsb3dpbmcgdGhlIGxhc3QgcmVtb3ZlZCBlbGVtZW50Lgor
ICAgICAgICBcbm90ZSBMaW5lYXIgdGltZSBjb21wbGV4aXR5LgorICAgICovCisgICAgVmFsdWVJ
dGVyYXRvciBFcmFzZShDb25zdFZhbHVlSXRlcmF0b3IgZmlyc3QsIENvbnN0VmFsdWVJdGVyYXRv
ciBsYXN0KSB7CisgICAgICAgIFJBUElESlNPTl9BU1NFUlQoSXNBcnJheSgpKTsKKyAgICAgICAg
UkFQSURKU09OX0FTU0VSVChkYXRhXy5hLnNpemUgPiAwKTsKKyAgICAgICAgUkFQSURKU09OX0FT
U0VSVChkYXRhXy5hLmVsZW1lbnRzICE9IDApOworICAgICAgICBSQVBJREpTT05fQVNTRVJUKGZp
cnN0ID49IEJlZ2luKCkpOworICAgICAgICBSQVBJREpTT05fQVNTRVJUKGZpcnN0IDw9IGxhc3Qp
OworICAgICAgICBSQVBJREpTT05fQVNTRVJUKGxhc3QgPD0gRW5kKCkpOworICAgICAgICBWYWx1
ZUl0ZXJhdG9yIHBvcyA9IEJlZ2luKCkgKyAoZmlyc3QgLSBCZWdpbigpKTsKKyAgICAgICAgZm9y
IChWYWx1ZUl0ZXJhdG9yIGl0ciA9IHBvczsgaXRyICE9IGxhc3Q7ICsraXRyKQorICAgICAgICAg
ICAgaXRyLT5+R2VuZXJpY1ZhbHVlKCk7ICAgICAgIAorICAgICAgICBzdGQ6Om1lbW1vdmUocG9z
LCBsYXN0LCAoRW5kKCkgLSBsYXN0KSAqIHNpemVvZihHZW5lcmljVmFsdWUpKTsKKyAgICAgICAg
ZGF0YV8uYS5zaXplIC09IChsYXN0IC0gZmlyc3QpOworICAgICAgICByZXR1cm4gcG9zOworICAg
IH0KKworICAgIC8vQH0KKworICAgIC8vIUBuYW1lIE51bWJlcgorICAgIC8vQHsKKworICAgIGlu
dCBHZXRJbnQoKSBjb25zdCAgICAgICAgICB7IFJBUElESlNPTl9BU1NFUlQoZmxhZ3NfICYga0lu
dEZsYWcpOyAgIHJldHVybiBkYXRhXy5uLmkuaTsgICB9CisgICAgdW5zaWduZWQgR2V0VWludCgp
IGNvbnN0ICAgIHsgUkFQSURKU09OX0FTU0VSVChmbGFnc18gJiBrVWludEZsYWcpOyAgcmV0dXJu
IGRhdGFfLm4udS51OyAgIH0KKyAgICBpbnQ2NF90IEdldEludDY0KCkgY29uc3QgICAgeyBSQVBJ
REpTT05fQVNTRVJUKGZsYWdzXyAmIGtJbnQ2NEZsYWcpOyByZXR1cm4gZGF0YV8ubi5pNjQ7IH0K
KyAgICB1aW50NjRfdCBHZXRVaW50NjQoKSBjb25zdCAgeyBSQVBJREpTT05fQVNTRVJUKGZsYWdz
XyAmIGtVaW50NjRGbGFnKTsgcmV0dXJuIGRhdGFfLm4udTY0OyB9CisKKyAgICBkb3VibGUgR2V0
RG91YmxlKCkgY29uc3QgeworICAgICAgICBSQVBJREpTT05fQVNTRVJUKElzTnVtYmVyKCkpOwor
ICAgICAgICBpZiAoKGZsYWdzXyAmIGtEb3VibGVGbGFnKSAhPSAwKSAgICAgICAgICAgICAgICBy
ZXR1cm4gZGF0YV8ubi5kOyAgIC8vIGV4YWN0IHR5cGUsIG5vIGNvbnZlcnNpb24uCisgICAgICAg
IGlmICgoZmxhZ3NfICYga0ludEZsYWcpICE9IDApICAgICAgICAgICAgICAgICAgIHJldHVybiBk
YXRhXy5uLmkuaTsgLy8gaW50IC0+IGRvdWJsZQorICAgICAgICBpZiAoKGZsYWdzXyAmIGtVaW50
RmxhZykgIT0gMCkgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YV8ubi51LnU7IC8vIHVuc2ln
bmVkIC0+IGRvdWJsZQorICAgICAgICBpZiAoKGZsYWdzXyAmIGtJbnQ2NEZsYWcpICE9IDApICAg
ICAgICAgICAgICAgICByZXR1cm4gKGRvdWJsZSlkYXRhXy5uLmk2NDsgLy8gaW50NjRfdCAtPiBk
b3VibGUgKG1heSBsb3NlIHByZWNpc2lvbikKKyAgICAgICAgUkFQSURKU09OX0FTU0VSVCgoZmxh
Z3NfICYga1VpbnQ2NEZsYWcpICE9IDApOyAgcmV0dXJuIChkb3VibGUpZGF0YV8ubi51NjQ7IC8v
IHVpbnQ2NF90IC0+IGRvdWJsZSAobWF5IGxvc2UgcHJlY2lzaW9uKQorICAgIH0KKworICAgIEdl
bmVyaWNWYWx1ZSYgU2V0SW50KGludCBpKSAgICAgICAgICAgICB7IHRoaXMtPn5HZW5lcmljVmFs
dWUoKTsgbmV3ICh0aGlzKSBHZW5lcmljVmFsdWUoaSk7ICAgIHJldHVybiAqdGhpczsgfQorICAg
IEdlbmVyaWNWYWx1ZSYgU2V0VWludCh1bnNpZ25lZCB1KSAgICAgICB7IHRoaXMtPn5HZW5lcmlj
VmFsdWUoKTsgbmV3ICh0aGlzKSBHZW5lcmljVmFsdWUodSk7ICAgIHJldHVybiAqdGhpczsgfQor
ICAgIEdlbmVyaWNWYWx1ZSYgU2V0SW50NjQoaW50NjRfdCBpNjQpICAgICB7IHRoaXMtPn5HZW5l
cmljVmFsdWUoKTsgbmV3ICh0aGlzKSBHZW5lcmljVmFsdWUoaTY0KTsgIHJldHVybiAqdGhpczsg
fQorICAgIEdlbmVyaWNWYWx1ZSYgU2V0VWludDY0KHVpbnQ2NF90IHU2NCkgICB7IHRoaXMtPn5H
ZW5lcmljVmFsdWUoKTsgbmV3ICh0aGlzKSBHZW5lcmljVmFsdWUodTY0KTsgIHJldHVybiAqdGhp
czsgfQorICAgIEdlbmVyaWNWYWx1ZSYgU2V0RG91YmxlKGRvdWJsZSBkKSAgICAgICB7IHRoaXMt
Pn5HZW5lcmljVmFsdWUoKTsgbmV3ICh0aGlzKSBHZW5lcmljVmFsdWUoZCk7ICAgIHJldHVybiAq
dGhpczsgfQorCisgICAgLy9AfQorCisgICAgLy8hQG5hbWUgU3RyaW5nCisgICAgLy9AeworCisg
ICAgY29uc3QgQ2gqIEdldFN0cmluZygpIGNvbnN0IHsgUkFQSURKU09OX0FTU0VSVChJc1N0cmlu
ZygpKTsgcmV0dXJuICgoZmxhZ3NfICYga0lubGluZVN0ckZsYWcpID8gZGF0YV8uc3Muc3RyIDog
ZGF0YV8ucy5zdHIpOyB9CisKKyAgICAvLyEgR2V0IHRoZSBsZW5ndGggb2Ygc3RyaW5nLgorICAg
IC8qISBTaW5jZSByYXBpZGpzb24gcGVybWl0cyAiXFx1MDAwMCIgaW4gdGhlIGpzb24gc3RyaW5n
LCBzdHJsZW4odi5HZXRTdHJpbmcoKSkgbWF5IG5vdCBlcXVhbCB0byB2LkdldFN0cmluZ0xlbmd0
aCgpLgorICAgICovCisgICAgU2l6ZVR5cGUgR2V0U3RyaW5nTGVuZ3RoKCkgY29uc3QgeyBSQVBJ
REpTT05fQVNTRVJUKElzU3RyaW5nKCkpOyByZXR1cm4gKChmbGFnc18gJiBrSW5saW5lU3RyRmxh
ZykgPyAoZGF0YV8uc3MuR2V0TGVuZ3RoKCkpIDogZGF0YV8ucy5sZW5ndGgpOyB9CisKKyAgICAv
LyEgU2V0IHRoaXMgdmFsdWUgYXMgYSBzdHJpbmcgd2l0aG91dCBjb3B5aW5nIHNvdXJjZSBzdHJp
bmcuCisgICAgLyohIFRoaXMgdmVyc2lvbiBoYXMgYmV0dGVyIHBlcmZvcm1hbmNlIHdpdGggc3Vw
cGxpZWQgbGVuZ3RoLCBhbmQgYWxzbyBzdXBwb3J0IHN0cmluZyBjb250YWluaW5nIG51bGwgY2hh
cmFjdGVyLgorICAgICAgICBccGFyYW0gcyBzb3VyY2Ugc3RyaW5nIHBvaW50ZXIuIAorICAgICAg
ICBccGFyYW0gbGVuZ3RoIFRoZSBsZW5ndGggb2Ygc291cmNlIHN0cmluZywgZXhjbHVkaW5nIHRo
ZSB0cmFpbGluZyBudWxsIHRlcm1pbmF0b3IuCisgICAgICAgIFxyZXR1cm4gVGhlIHZhbHVlIGl0
c2VsZiBmb3IgZmx1ZW50IEFQSS4KKyAgICAgICAgXHBvc3QgSXNTdHJpbmcoKSA9PSB0cnVlICYm
IEdldFN0cmluZygpID09IHMgJiYgR2V0U3RyaW5nTGVuZ3RoKCkgPT0gbGVuZ3RoCisgICAgICAg
IFxzZWUgU2V0U3RyaW5nKFN0cmluZ1JlZlR5cGUpCisgICAgKi8KKyAgICBHZW5lcmljVmFsdWUm
IFNldFN0cmluZyhjb25zdCBDaCogcywgU2l6ZVR5cGUgbGVuZ3RoKSB7IHJldHVybiBTZXRTdHJp
bmcoU3RyaW5nUmVmKHMsIGxlbmd0aCkpOyB9CisKKyAgICAvLyEgU2V0IHRoaXMgdmFsdWUgYXMg
YSBzdHJpbmcgd2l0aG91dCBjb3B5aW5nIHNvdXJjZSBzdHJpbmcuCisgICAgLyohIFxwYXJhbSBz
IHNvdXJjZSBzdHJpbmcgcmVmZXJlbmNlCisgICAgICAgIFxyZXR1cm4gVGhlIHZhbHVlIGl0c2Vs
ZiBmb3IgZmx1ZW50IEFQSS4KKyAgICAgICAgXHBvc3QgSXNTdHJpbmcoKSA9PSB0cnVlICYmIEdl
dFN0cmluZygpID09IHMgJiYgR2V0U3RyaW5nTGVuZ3RoKCkgPT0gcy5sZW5ndGgKKyAgICAqLwor
ICAgIEdlbmVyaWNWYWx1ZSYgU2V0U3RyaW5nKFN0cmluZ1JlZlR5cGUgcykgeyB0aGlzLT5+R2Vu
ZXJpY1ZhbHVlKCk7IFNldFN0cmluZ1JhdyhzKTsgcmV0dXJuICp0aGlzOyB9CisKKyAgICAvLyEg
U2V0IHRoaXMgdmFsdWUgYXMgYSBzdHJpbmcgYnkgY29weWluZyBmcm9tIHNvdXJjZSBzdHJpbmcu
CisgICAgLyohIFRoaXMgdmVyc2lvbiBoYXMgYmV0dGVyIHBlcmZvcm1hbmNlIHdpdGggc3VwcGxp
ZWQgbGVuZ3RoLCBhbmQgYWxzbyBzdXBwb3J0IHN0cmluZyBjb250YWluaW5nIG51bGwgY2hhcmFj
dGVyLgorICAgICAgICBccGFyYW0gcyBzb3VyY2Ugc3RyaW5nLiAKKyAgICAgICAgXHBhcmFtIGxl
bmd0aCBUaGUgbGVuZ3RoIG9mIHNvdXJjZSBzdHJpbmcsIGV4Y2x1ZGluZyB0aGUgdHJhaWxpbmcg
bnVsbCB0ZXJtaW5hdG9yLgorICAgICAgICBccGFyYW0gYWxsb2NhdG9yIEFsbG9jYXRvciBmb3Ig
YWxsb2NhdGluZyBjb3BpZWQgYnVmZmVyLiBDb21tb25seSB1c2UgR2VuZXJpY0RvY3VtZW50OjpH
ZXRBbGxvY2F0b3IoKS4KKyAgICAgICAgXHJldHVybiBUaGUgdmFsdWUgaXRzZWxmIGZvciBmbHVl
bnQgQVBJLgorICAgICAgICBccG9zdCBJc1N0cmluZygpID09IHRydWUgJiYgR2V0U3RyaW5nKCkg
IT0gcyAmJiBzdHJjbXAoR2V0U3RyaW5nKCkscykgPT0gMCAmJiBHZXRTdHJpbmdMZW5ndGgoKSA9
PSBsZW5ndGgKKyAgICAqLworICAgIEdlbmVyaWNWYWx1ZSYgU2V0U3RyaW5nKGNvbnN0IENoKiBz
LCBTaXplVHlwZSBsZW5ndGgsIEFsbG9jYXRvciYgYWxsb2NhdG9yKSB7IHRoaXMtPn5HZW5lcmlj
VmFsdWUoKTsgU2V0U3RyaW5nUmF3KFN0cmluZ1JlZihzLCBsZW5ndGgpLCBhbGxvY2F0b3IpOyBy
ZXR1cm4gKnRoaXM7IH0KKworICAgIC8vISBTZXQgdGhpcyB2YWx1ZSBhcyBhIHN0cmluZyBieSBj
b3B5aW5nIGZyb20gc291cmNlIHN0cmluZy4KKyAgICAvKiEgXHBhcmFtIHMgc291cmNlIHN0cmlu
Zy4gCisgICAgICAgIFxwYXJhbSBhbGxvY2F0b3IgQWxsb2NhdG9yIGZvciBhbGxvY2F0aW5nIGNv
cGllZCBidWZmZXIuIENvbW1vbmx5IHVzZSBHZW5lcmljRG9jdW1lbnQ6OkdldEFsbG9jYXRvcigp
LgorICAgICAgICBccmV0dXJuIFRoZSB2YWx1ZSBpdHNlbGYgZm9yIGZsdWVudCBBUEkuCisgICAg
ICAgIFxwb3N0IElzU3RyaW5nKCkgPT0gdHJ1ZSAmJiBHZXRTdHJpbmcoKSAhPSBzICYmIHN0cmNt
cChHZXRTdHJpbmcoKSxzKSA9PSAwICYmIEdldFN0cmluZ0xlbmd0aCgpID09IGxlbmd0aAorICAg
ICovCisgICAgR2VuZXJpY1ZhbHVlJiBTZXRTdHJpbmcoY29uc3QgQ2gqIHMsIEFsbG9jYXRvciYg
YWxsb2NhdG9yKSB7IHJldHVybiBTZXRTdHJpbmcocywgaW50ZXJuYWw6OlN0ckxlbihzKSwgYWxs
b2NhdG9yKTsgfQorCisjaWYgUkFQSURKU09OX0hBU19TVERTVFJJTkcKKyAgICAvLyEgU2V0IHRo
aXMgdmFsdWUgYXMgYSBzdHJpbmcgYnkgY29weWluZyBmcm9tIHNvdXJjZSBzdHJpbmcuCisgICAg
LyohIFxwYXJhbSBzIHNvdXJjZSBzdHJpbmcuCisgICAgICAgIFxwYXJhbSBhbGxvY2F0b3IgQWxs
b2NhdG9yIGZvciBhbGxvY2F0aW5nIGNvcGllZCBidWZmZXIuIENvbW1vbmx5IHVzZSBHZW5lcmlj
RG9jdW1lbnQ6OkdldEFsbG9jYXRvcigpLgorICAgICAgICBccmV0dXJuIFRoZSB2YWx1ZSBpdHNl
bGYgZm9yIGZsdWVudCBBUEkuCisgICAgICAgIFxwb3N0IElzU3RyaW5nKCkgPT0gdHJ1ZSAmJiBH
ZXRTdHJpbmcoKSAhPSBzLmRhdGEoKSAmJiBzdHJjbXAoR2V0U3RyaW5nKCkscy5kYXRhKCkgPT0g
MCAmJiBHZXRTdHJpbmdMZW5ndGgoKSA9PSBzLnNpemUoKQorICAgICAgICBcbm90ZSBSZXF1aXJl
cyB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgcHJlcHJvY2Vzc29yIHN5bWJvbCBccmVmIFJBUElESlNP
Tl9IQVNfU1REU1RSSU5HLgorICAgICovCisgICAgR2VuZXJpY1ZhbHVlJiBTZXRTdHJpbmcoY29u
c3Qgc3RkOjpiYXNpY19zdHJpbmc8Q2g+JiBzLCBBbGxvY2F0b3ImIGFsbG9jYXRvcikgeyByZXR1
cm4gU2V0U3RyaW5nKHMuZGF0YSgpLCBzLnNpemUoKSwgYWxsb2NhdG9yKTsgfQorI2VuZGlmCisK
KyAgICAvL0B9CisKKyAgICAvLyEgR2VuZXJhdGUgZXZlbnRzIG9mIHRoaXMgdmFsdWUgdG8gYSBI
YW5kbGVyLgorICAgIC8qISBUaGlzIGZ1bmN0aW9uIGFkb3B0cyB0aGUgR29GIHZpc2l0b3IgcGF0
dGVybi4KKyAgICAgICAgVHlwaWNhbCB1c2FnZSBpcyB0byBvdXRwdXQgdGhpcyBKU09OIHZhbHVl
IGFzIEpTT04gdGV4dCB2aWEgV3JpdGVyLCB3aGljaCBpcyBhIEhhbmRsZXIuCisgICAgICAgIEl0
IGNhbiBhbHNvIGJlIHVzZWQgdG8gZGVlcCBjbG9uZSB0aGlzIHZhbHVlIHZpYSBHZW5lcmljRG9j
dW1lbnQsIHdoaWNoIGlzIGFsc28gYSBIYW5kbGVyLgorICAgICAgICBcdHBhcmFtIEhhbmRsZXIg
dHlwZSBvZiBoYW5kbGVyLgorICAgICAgICBccGFyYW0gaGFuZGxlciBBbiBvYmplY3QgaW1wbGVt
ZW50aW5nIGNvbmNlcHQgSGFuZGxlci4KKyAgICAqLworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBI
YW5kbGVyPgorICAgIGJvb2wgQWNjZXB0KEhhbmRsZXImIGhhbmRsZXIpIGNvbnN0IHsKKyAgICAg
ICAgc3dpdGNoKEdldFR5cGUoKSkgeworICAgICAgICBjYXNlIGtOdWxsVHlwZTogICAgIHJldHVy
biBoYW5kbGVyLk51bGwoKTsKKyAgICAgICAgY2FzZSBrRmFsc2VUeXBlOiAgICByZXR1cm4gaGFu
ZGxlci5Cb29sKGZhbHNlKTsKKyAgICAgICAgY2FzZSBrVHJ1ZVR5cGU6ICAgICByZXR1cm4gaGFu
ZGxlci5Cb29sKHRydWUpOworCisgICAgICAgIGNhc2Uga09iamVjdFR5cGU6CisgICAgICAgICAg
ICBpZiAoIWhhbmRsZXIuU3RhcnRPYmplY3QoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICBmb3IgKENvbnN0TWVtYmVySXRlcmF0b3IgbSA9IE1lbWJlckJlZ2lu
KCk7IG0gIT0gTWVtYmVyRW5kKCk7ICsrbSkgeworICAgICAgICAgICAgICAgIFJBUElESlNPTl9B
U1NFUlQobS0+bmFtZS5Jc1N0cmluZygpKTsgLy8gVXNlciBtYXkgY2hhbmdlIHRoZSB0eXBlIG9m
IG5hbWUgYnkgTWVtYmVySXRlcmF0b3IuCisgICAgICAgICAgICAgICAgaWYgKCFoYW5kbGVyLktl
eShtLT5uYW1lLkdldFN0cmluZygpLCBtLT5uYW1lLkdldFN0cmluZ0xlbmd0aCgpLCAobS0+bmFt
ZS5mbGFnc18gJiBrQ29weUZsYWcpICE9IDApKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKCFtLT52YWx1ZS5BY2NlcHQoaGFuZGxlcikpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHJldHVybiBoYW5kbGVyLkVuZE9iamVjdChkYXRhXy5vLnNpemUpOworCisgICAgICAgIGNh
c2Uga0FycmF5VHlwZToKKyAgICAgICAgICAgIGlmICghaGFuZGxlci5TdGFydEFycmF5KCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZm9yIChHZW5lcmljVmFs
dWUqIHYgPSBkYXRhXy5hLmVsZW1lbnRzOyB2ICE9IGRhdGFfLmEuZWxlbWVudHMgKyBkYXRhXy5h
LnNpemU7ICsrdikKKyAgICAgICAgICAgICAgICBpZiAoIXYtPkFjY2VwdChoYW5kbGVyKSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIGhhbmRs
ZXIuRW5kQXJyYXkoZGF0YV8uYS5zaXplKTsKKyAgICAKKyAgICAgICAgY2FzZSBrU3RyaW5nVHlw
ZToKKyAgICAgICAgICAgIHJldHVybiBoYW5kbGVyLlN0cmluZyhHZXRTdHJpbmcoKSwgR2V0U3Ry
aW5nTGVuZ3RoKCksIChmbGFnc18gJiBrQ29weUZsYWcpICE9IDApOworICAgIAorICAgICAgICBj
YXNlIGtOdW1iZXJUeXBlOgorICAgICAgICAgICAgaWYgKElzSW50KCkpICAgICAgICAgICAgcmV0
dXJuIGhhbmRsZXIuSW50KGRhdGFfLm4uaS5pKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKElzVWlu
dCgpKSAgICAgIHJldHVybiBoYW5kbGVyLlVpbnQoZGF0YV8ubi51LnUpOworICAgICAgICAgICAg
ZWxzZSBpZiAoSXNJbnQ2NCgpKSAgICAgcmV0dXJuIGhhbmRsZXIuSW50NjQoZGF0YV8ubi5pNjQp
OworICAgICAgICAgICAgZWxzZSBpZiAoSXNVaW50NjQoKSkgICAgcmV0dXJuIGhhbmRsZXIuVWlu
dDY0KGRhdGFfLm4udTY0KTsKKyAgICAgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBoYW5kbGVyLkRvdWJsZShkYXRhXy5uLmQpOworICAgIAorICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgUkFQSURKU09OX0FTU0VSVChmYWxzZSk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUs
IHR5cGVuYW1lPiBmcmllbmQgY2xhc3MgR2VuZXJpY1ZhbHVlOworICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSwgdHlwZW5hbWUsIHR5cGVuYW1lPiBmcmllbmQgY2xhc3MgR2VuZXJpY0RvY3VtZW50Owor
CisgICAgZW51bSB7CisgICAgICAgIGtCb29sRmxhZyA9IDB4MTAwLAorICAgICAgICBrTnVtYmVy
RmxhZyA9IDB4MjAwLAorICAgICAgICBrSW50RmxhZyA9IDB4NDAwLAorICAgICAgICBrVWludEZs
YWcgPSAweDgwMCwKKyAgICAgICAga0ludDY0RmxhZyA9IDB4MTAwMCwKKyAgICAgICAga1VpbnQ2
NEZsYWcgPSAweDIwMDAsCisgICAgICAgIGtEb3VibGVGbGFnID0gMHg0MDAwLAorICAgICAgICBr
U3RyaW5nRmxhZyA9IDB4MTAwMDAwLAorICAgICAgICBrQ29weUZsYWcgPSAweDIwMDAwMCwKKyAg
ICAgICAga0lubGluZVN0ckZsYWcgPSAweDQwMDAwMCwKKworICAgICAgICAvLyBJbml0aWFsIGZs
YWdzIG9mIGRpZmZlcmVudCB0eXBlcy4KKyAgICAgICAga051bGxGbGFnID0ga051bGxUeXBlLAor
ICAgICAgICBrVHJ1ZUZsYWcgPSBrVHJ1ZVR5cGUgfCBrQm9vbEZsYWcsCisgICAgICAgIGtGYWxz
ZUZsYWcgPSBrRmFsc2VUeXBlIHwga0Jvb2xGbGFnLAorICAgICAgICBrTnVtYmVySW50RmxhZyA9
IGtOdW1iZXJUeXBlIHwga051bWJlckZsYWcgfCBrSW50RmxhZyB8IGtJbnQ2NEZsYWcsCisgICAg
ICAgIGtOdW1iZXJVaW50RmxhZyA9IGtOdW1iZXJUeXBlIHwga051bWJlckZsYWcgfCBrVWludEZs
YWcgfCBrVWludDY0RmxhZyB8IGtJbnQ2NEZsYWcsCisgICAgICAgIGtOdW1iZXJJbnQ2NEZsYWcg
PSBrTnVtYmVyVHlwZSB8IGtOdW1iZXJGbGFnIHwga0ludDY0RmxhZywKKyAgICAgICAga051bWJl
clVpbnQ2NEZsYWcgPSBrTnVtYmVyVHlwZSB8IGtOdW1iZXJGbGFnIHwga1VpbnQ2NEZsYWcsCisg
ICAgICAgIGtOdW1iZXJEb3VibGVGbGFnID0ga051bWJlclR5cGUgfCBrTnVtYmVyRmxhZyB8IGtE
b3VibGVGbGFnLAorICAgICAgICBrTnVtYmVyQW55RmxhZyA9IGtOdW1iZXJUeXBlIHwga051bWJl
ckZsYWcgfCBrSW50RmxhZyB8IGtJbnQ2NEZsYWcgfCBrVWludEZsYWcgfCBrVWludDY0RmxhZyB8
IGtEb3VibGVGbGFnLAorICAgICAgICBrQ29uc3RTdHJpbmdGbGFnID0ga1N0cmluZ1R5cGUgfCBr
U3RyaW5nRmxhZywKKyAgICAgICAga0NvcHlTdHJpbmdGbGFnID0ga1N0cmluZ1R5cGUgfCBrU3Ry
aW5nRmxhZyB8IGtDb3B5RmxhZywKKyAgICAgICAga1Nob3J0U3RyaW5nRmxhZyA9IGtTdHJpbmdU
eXBlIHwga1N0cmluZ0ZsYWcgfCBrQ29weUZsYWcgfCBrSW5saW5lU3RyRmxhZywKKyAgICAgICAg
a09iamVjdEZsYWcgPSBrT2JqZWN0VHlwZSwKKyAgICAgICAga0FycmF5RmxhZyA9IGtBcnJheVR5
cGUsCisKKyAgICAgICAga1R5cGVNYXNrID0gMHhGRiAgICAvLyBiaXR3aXNlLWFuZCB3aXRoIG1h
c2sgb2YgMHhGRiBjYW4gYmUgb3B0aW1pemVkIGJ5IGNvbXBpbGVyCisgICAgfTsKKworICAgIHN0
YXRpYyBjb25zdCBTaXplVHlwZSBrRGVmYXVsdEFycmF5Q2FwYWNpdHkgPSAxNjsKKyAgICBzdGF0
aWMgY29uc3QgU2l6ZVR5cGUga0RlZmF1bHRPYmplY3RDYXBhY2l0eSA9IDE2OworCisgICAgc3Ry
dWN0IFN0cmluZyB7CisgICAgICAgIGNvbnN0IENoKiBzdHI7CisgICAgICAgIFNpemVUeXBlIGxl
bmd0aDsKKyAgICAgICAgdW5zaWduZWQgaGFzaGNvZGU7ICAvLyE8IHJlc2VydmVkCisgICAgfTsg
IC8vIDEyIGJ5dGVzIGluIDMyLWJpdCBtb2RlLCAxNiBieXRlcyBpbiA2NC1iaXQgbW9kZQorCisg
ICAgLy8gaW1wbGVtZW50YXRpb24gZGV0YWlsOiBTaG9ydFN0cmluZyBjYW4gcmVwcmVzZW50IHpl
cm8tdGVybWluYXRlZCBzdHJpbmdzIHVwIHRvIE1heFNpemUgY2hhcnMKKyAgICAvLyAoZXhjbHVk
aW5nIHRoZSB0ZXJtaW5hdGluZyB6ZXJvKSBhbmQgc3RvcmUgYSB2YWx1ZSB0byBkZXRlcm1pbmUg
dGhlIGxlbmd0aCBvZiB0aGUgY29udGFpbmVkCisgICAgLy8gc3RyaW5nIGluIHRoZSBsYXN0IGNo
YXJhY3RlciBzdHJbTGVuUG9zXSBieSBzdG9yaW5nICJNYXhTaXplIC0gbGVuZ3RoIiB0aGVyZS4g
SWYgdGhlIHN0cmluZworICAgIC8vIHRvIHN0b3JlIGhhcyB0aGUgbWF4aW1hbCBsZW5ndGggb2Yg
TWF4U2l6ZSB0aGVuIHN0cltMZW5Qb3NdIHdpbGwgYmUgMCBhbmQgdGhlcmVmb3JlIGFjdCBhcwor
ICAgIC8vIHRoZSBzdHJpbmcgdGVybWluYXRvciBhcyB3ZWxsLiBGb3IgZ2V0dGluZyB0aGUgc3Ry
aW5nIGxlbmd0aCBiYWNrIGZyb20gdGhhdCB2YWx1ZSBqdXN0IHVzZQorICAgIC8vICJNYXhTaXpl
IC0gc3RyW0xlblBvc10iLgorICAgIC8vIFRoaXMgYWxsb3dzIHRvIHN0b3JlIDExLWNoYXJzIHN0
cmluZ3MgaW4gMzItYml0IG1vZGUgYW5kIDE1LWNoYXJzIHN0cmluZ3MgaW4gNjQtYml0IG1vZGUK
KyAgICAvLyBpbmxpbmUgKGZvciBgVVRGOGAtZW5jb2RlZCBzdHJpbmdzKS4KKyAgICBzdHJ1Y3Qg
U2hvcnRTdHJpbmcgeworICAgICAgICBlbnVtIHsgTWF4Q2hhcnMgPSBzaXplb2YoU3RyaW5nKSAv
IHNpemVvZihDaCksIE1heFNpemUgPSBNYXhDaGFycyAtIDEsIExlblBvcyA9IE1heFNpemUgfTsK
KyAgICAgICAgQ2ggc3RyW01heENoYXJzXTsKKworICAgICAgICBpbmxpbmUgc3RhdGljIGJvb2wg
VXNhYmxlKFNpemVUeXBlIGxlbikgeyByZXR1cm4gICAgICAgICAgICAoTWF4U2l6ZSA+PSBsZW4p
OyB9CisgICAgICAgIGlubGluZSB2b2lkICAgICBTZXRMZW5ndGgoU2l6ZVR5cGUgbGVuKSB7IHN0
cltMZW5Qb3NdID0gKENoKShNYXhTaXplIC0gIGxlbik7IH0KKyAgICAgICAgaW5saW5lIFNpemVU
eXBlIEdldExlbmd0aCgpIGNvbnN0ICAgICAgIHsgcmV0dXJuICAoU2l6ZVR5cGUpKE1heFNpemUg
LSAgc3RyW0xlblBvc10pOyB9CisgICAgfTsgIC8vIGF0IG1vc3QgYXMgbWFueSBieXRlcyBhcyAi
U3RyaW5nIiBhYm92ZSA9PiAxMiBieXRlcyBpbiAzMi1iaXQgbW9kZSwgMTYgYnl0ZXMgaW4gNjQt
Yml0IG1vZGUKKworICAgIC8vIEJ5IHVzaW5nIHByb3BlciBiaW5hcnkgbGF5b3V0LCByZXRyaWV2
YWwgb2YgZGlmZmVyZW50IGludGVnZXIgdHlwZXMgZG8gbm90IG5lZWQgY29udmVyc2lvbnMuCisg
ICAgdW5pb24gTnVtYmVyIHsKKyNpZiBSQVBJREpTT05fRU5ESUFOID09IFJBUElESlNPTl9MSVRU
TEVFTkRJQU4KKyAgICAgICAgc3RydWN0IEkgeworICAgICAgICAgICAgaW50IGk7CisgICAgICAg
ICAgICBjaGFyIHBhZGRpbmdbNF07CisgICAgICAgIH1pOworICAgICAgICBzdHJ1Y3QgVSB7Cisg
ICAgICAgICAgICB1bnNpZ25lZCB1OworICAgICAgICAgICAgY2hhciBwYWRkaW5nMls0XTsKKyAg
ICAgICAgfXU7CisjZWxzZQorICAgICAgICBzdHJ1Y3QgSSB7CisgICAgICAgICAgICBjaGFyIHBh
ZGRpbmdbNF07CisgICAgICAgICAgICBpbnQgaTsKKyAgICAgICAgfWk7CisgICAgICAgIHN0cnVj
dCBVIHsKKyAgICAgICAgICAgIGNoYXIgcGFkZGluZzJbNF07CisgICAgICAgICAgICB1bnNpZ25l
ZCB1OworICAgICAgICB9dTsKKyNlbmRpZgorICAgICAgICBpbnQ2NF90IGk2NDsKKyAgICAgICAg
dWludDY0X3QgdTY0OworICAgICAgICBkb3VibGUgZDsKKyAgICB9OyAgLy8gOCBieXRlcworCisg
ICAgc3RydWN0IE9iamVjdCB7CisgICAgICAgIE1lbWJlciogbWVtYmVyczsKKyAgICAgICAgU2l6
ZVR5cGUgc2l6ZTsKKyAgICAgICAgU2l6ZVR5cGUgY2FwYWNpdHk7CisgICAgfTsgIC8vIDEyIGJ5
dGVzIGluIDMyLWJpdCBtb2RlLCAxNiBieXRlcyBpbiA2NC1iaXQgbW9kZQorCisgICAgc3RydWN0
IEFycmF5IHsKKyAgICAgICAgR2VuZXJpY1ZhbHVlKiBlbGVtZW50czsKKyAgICAgICAgU2l6ZVR5
cGUgc2l6ZTsKKyAgICAgICAgU2l6ZVR5cGUgY2FwYWNpdHk7CisgICAgfTsgIC8vIDEyIGJ5dGVz
IGluIDMyLWJpdCBtb2RlLCAxNiBieXRlcyBpbiA2NC1iaXQgbW9kZQorCisgICAgdW5pb24gRGF0
YSB7CisgICAgICAgIFN0cmluZyBzOworICAgICAgICBTaG9ydFN0cmluZyBzczsKKyAgICAgICAg
TnVtYmVyIG47CisgICAgICAgIE9iamVjdCBvOworICAgICAgICBBcnJheSBhOworICAgIH07ICAv
LyAxMiBieXRlcyBpbiAzMi1iaXQgbW9kZSwgMTYgYnl0ZXMgaW4gNjQtYml0IG1vZGUKKworICAg
IC8vIEluaXRpYWxpemUgdGhpcyB2YWx1ZSBhcyBhcnJheSB3aXRoIGluaXRpYWwgZGF0YSwgd2l0
aG91dCBjYWxsaW5nIGRlc3RydWN0b3IuCisgICAgdm9pZCBTZXRBcnJheVJhdyhHZW5lcmljVmFs
dWUqIHZhbHVlcywgU2l6ZVR5cGUgY291bnQsIEFsbG9jYXRvciYgYWxsb2NhdG9yKSB7CisgICAg
ICAgIGZsYWdzXyA9IGtBcnJheUZsYWc7CisgICAgICAgIGRhdGFfLmEuZWxlbWVudHMgPSAoR2Vu
ZXJpY1ZhbHVlKilhbGxvY2F0b3IuTWFsbG9jKGNvdW50ICogc2l6ZW9mKEdlbmVyaWNWYWx1ZSkp
OworICAgICAgICBzdGQ6Om1lbWNweShkYXRhXy5hLmVsZW1lbnRzLCB2YWx1ZXMsIGNvdW50ICog
c2l6ZW9mKEdlbmVyaWNWYWx1ZSkpOworICAgICAgICBkYXRhXy5hLnNpemUgPSBkYXRhXy5hLmNh
cGFjaXR5ID0gY291bnQ7CisgICAgfQorCisgICAgLy8hIEluaXRpYWxpemUgdGhpcyB2YWx1ZSBh
cyBvYmplY3Qgd2l0aCBpbml0aWFsIGRhdGEsIHdpdGhvdXQgY2FsbGluZyBkZXN0cnVjdG9yLgor
ICAgIHZvaWQgU2V0T2JqZWN0UmF3KE1lbWJlciogbWVtYmVycywgU2l6ZVR5cGUgY291bnQsIEFs
bG9jYXRvciYgYWxsb2NhdG9yKSB7CisgICAgICAgIGZsYWdzXyA9IGtPYmplY3RGbGFnOworICAg
ICAgICBkYXRhXy5vLm1lbWJlcnMgPSAoTWVtYmVyKilhbGxvY2F0b3IuTWFsbG9jKGNvdW50ICog
c2l6ZW9mKE1lbWJlcikpOworICAgICAgICBzdGQ6Om1lbWNweShkYXRhXy5vLm1lbWJlcnMsIG1l
bWJlcnMsIGNvdW50ICogc2l6ZW9mKE1lbWJlcikpOworICAgICAgICBkYXRhXy5vLnNpemUgPSBk
YXRhXy5vLmNhcGFjaXR5ID0gY291bnQ7CisgICAgfQorCisgICAgLy8hIEluaXRpYWxpemUgdGhp
cyB2YWx1ZSBhcyBjb25zdGFudCBzdHJpbmcsIHdpdGhvdXQgY2FsbGluZyBkZXN0cnVjdG9yLgor
ICAgIHZvaWQgU2V0U3RyaW5nUmF3KFN0cmluZ1JlZlR5cGUgcykgUkFQSURKU09OX05PRVhDRVBU
IHsKKyAgICAgICAgZmxhZ3NfID0ga0NvbnN0U3RyaW5nRmxhZzsKKyAgICAgICAgZGF0YV8ucy5z
dHIgPSBzOworICAgICAgICBkYXRhXy5zLmxlbmd0aCA9IHMubGVuZ3RoOworICAgIH0KKworICAg
IC8vISBJbml0aWFsaXplIHRoaXMgdmFsdWUgYXMgY29weSBzdHJpbmcgd2l0aCBpbml0aWFsIGRh
dGEsIHdpdGhvdXQgY2FsbGluZyBkZXN0cnVjdG9yLgorICAgIHZvaWQgU2V0U3RyaW5nUmF3KFN0
cmluZ1JlZlR5cGUgcywgQWxsb2NhdG9yJiBhbGxvY2F0b3IpIHsKKyAgICAgICAgQ2gqIHN0ciA9
IE5VTEw7CisgICAgICAgIGlmKFNob3J0U3RyaW5nOjpVc2FibGUocy5sZW5ndGgpKSB7CisgICAg
ICAgICAgICBmbGFnc18gPSBrU2hvcnRTdHJpbmdGbGFnOworICAgICAgICAgICAgZGF0YV8uc3Mu
U2V0TGVuZ3RoKHMubGVuZ3RoKTsKKyAgICAgICAgICAgIHN0ciA9IGRhdGFfLnNzLnN0cjsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZsYWdzXyA9IGtDb3B5U3RyaW5nRmxhZzsKKyAg
ICAgICAgICAgIGRhdGFfLnMubGVuZ3RoID0gcy5sZW5ndGg7CisgICAgICAgICAgICBzdHIgPSAo
Q2ggKilhbGxvY2F0b3IuTWFsbG9jKChzLmxlbmd0aCArIDEpICogc2l6ZW9mKENoKSk7CisgICAg
ICAgICAgICBkYXRhXy5zLnN0ciA9IHN0cjsKKyAgICAgICAgfQorICAgICAgICBzdGQ6Om1lbWNw
eShzdHIsIHMsIHMubGVuZ3RoICogc2l6ZW9mKENoKSk7CisgICAgICAgIHN0cltzLmxlbmd0aF0g
PSAnXDAnOworICAgIH0KKworICAgIC8vISBBc3NpZ25tZW50IHdpdGhvdXQgY2FsbGluZyBkZXN0
cnVjdG9yCisgICAgdm9pZCBSYXdBc3NpZ24oR2VuZXJpY1ZhbHVlJiByaHMpIFJBUElESlNPTl9O
T0VYQ0VQVCB7CisgICAgICAgIGRhdGFfID0gcmhzLmRhdGFfOworICAgICAgICBmbGFnc18gPSBy
aHMuZmxhZ3NfOworICAgICAgICByaHMuZmxhZ3NfID0ga051bGxGbGFnOworICAgIH0KKworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBTb3VyY2VBbGxvY2F0b3I+CisgICAgYm9vbCBTdHJpbmdFcXVh
bChjb25zdCBHZW5lcmljVmFsdWU8RW5jb2RpbmcsIFNvdXJjZUFsbG9jYXRvcj4mIHJocykgY29u
c3QgeworICAgICAgICBSQVBJREpTT05fQVNTRVJUKElzU3RyaW5nKCkpOworICAgICAgICBSQVBJ
REpTT05fQVNTRVJUKHJocy5Jc1N0cmluZygpKTsKKworICAgICAgICBjb25zdCBTaXplVHlwZSBs
ZW4xID0gR2V0U3RyaW5nTGVuZ3RoKCk7CisgICAgICAgIGNvbnN0IFNpemVUeXBlIGxlbjIgPSBy
aHMuR2V0U3RyaW5nTGVuZ3RoKCk7CisgICAgICAgIGlmKGxlbjEgIT0gbGVuMikgeyByZXR1cm4g
ZmFsc2U7IH0KKworICAgICAgICBjb25zdCBDaCogY29uc3Qgc3RyMSA9IEdldFN0cmluZygpOwor
ICAgICAgICBjb25zdCBDaCogY29uc3Qgc3RyMiA9IHJocy5HZXRTdHJpbmcoKTsKKyAgICAgICAg
aWYoc3RyMSA9PSBzdHIyKSB7IHJldHVybiB0cnVlOyB9IC8vIGZhc3QgcGF0aCBmb3IgY29uc3Rh
bnQgc3RyaW5nCisKKyAgICAgICAgcmV0dXJuIChzdGQ6Om1lbWNtcChzdHIxLCBzdHIyLCBzaXpl
b2YoQ2gpICogbGVuMSkgPT0gMCk7CisgICAgfQorCisgICAgRGF0YSBkYXRhXzsKKyAgICB1bnNp
Z25lZCBmbGFnc187Cit9OworCisvLyEgR2VuZXJpY1ZhbHVlIHdpdGggVVRGOCBlbmNvZGluZwor
dHlwZWRlZiBHZW5lcmljVmFsdWU8VVRGODw+ID4gVmFsdWU7CisKKy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KKy8vIEdlbmVyaWNEb2N1bWVudCAKKworLy8hIEEgZG9jdW1lbnQgZm9yIHBhcnNpbmcg
SlNPTiB0ZXh0IGFzIERPTS4KKy8qIQorICAgIFxub3RlIGltcGxlbWVudHMgSGFuZGxlciBjb25j
ZXB0CisgICAgXHRwYXJhbSBFbmNvZGluZyBFbmNvZGluZyBmb3IgYm90aCBwYXJzaW5nIGFuZCBz
dHJpbmcgc3RvcmFnZS4KKyAgICBcdHBhcmFtIEFsbG9jYXRvciBBbGxvY2F0b3IgZm9yIGFsbG9j
YXRpbmcgbWVtb3J5IGZvciB0aGUgRE9NCisgICAgXHRwYXJhbSBTdGFja0FsbG9jYXRvciBBbGxv
Y2F0b3IgZm9yIGFsbG9jYXRpbmcgbWVtb3J5IGZvciBzdGFjayBkdXJpbmcgcGFyc2luZy4KKyAg
ICBcd2FybmluZyBBbHRob3VnaCBHZW5lcmljRG9jdW1lbnQgaW5oZXJpdHMgZnJvbSBHZW5lcmlj
VmFsdWUsIHRoZSBBUEkgZG9lcyBcYiBub3QgcHJvdmlkZSBhbnkgdmlydHVhbCBmdW5jdGlvbnMs
IGVzcGVjaWFsbHkgbm8gdmlydHVhbCBkZXN0cnVjdG9yLiAgVG8gYXZvaWQgbWVtb3J5IGxlYWtz
LCBkbyBub3QgXGMgZGVsZXRlIGEgR2VuZXJpY0RvY3VtZW50IG9iamVjdCB2aWEgYSBwb2ludGVy
IHRvIGEgR2VuZXJpY1ZhbHVlLgorKi8KK3RlbXBsYXRlIDx0eXBlbmFtZSBFbmNvZGluZywgdHlw
ZW5hbWUgQWxsb2NhdG9yID0gTWVtb3J5UG9vbEFsbG9jYXRvcjw+LCB0eXBlbmFtZSBTdGFja0Fs
bG9jYXRvciA9IENydEFsbG9jYXRvcj4KK2NsYXNzIEdlbmVyaWNEb2N1bWVudCA6IHB1YmxpYyBH
ZW5lcmljVmFsdWU8RW5jb2RpbmcsIEFsbG9jYXRvcj4geworcHVibGljOgorICAgIHR5cGVkZWYg
dHlwZW5hbWUgRW5jb2Rpbmc6OkNoIENoOyAgICAgICAgICAgICAgICAgICAgICAgLy8hPCBDaGFy
YWN0ZXIgdHlwZSBkZXJpdmVkIGZyb20gRW5jb2RpbmcuCisgICAgdHlwZWRlZiBHZW5lcmljVmFs
dWU8RW5jb2RpbmcsIEFsbG9jYXRvcj4gVmFsdWVUeXBlOyAgICAvLyE8IFZhbHVlIHR5cGUgb2Yg
dGhlIGRvY3VtZW50LgorICAgIHR5cGVkZWYgQWxsb2NhdG9yIEFsbG9jYXRvclR5cGU7ICAgICAg
ICAgICAgICAgICAgICAgICAgLy8hPCBBbGxvY2F0b3IgdHlwZSBmcm9tIHRlbXBsYXRlIHBhcmFt
ZXRlci4KKworICAgIC8vISBDb25zdHJ1Y3RvcgorICAgIC8qISBccGFyYW0gYWxsb2NhdG9yICAg
ICAgICBPcHRpb25hbCBhbGxvY2F0b3IgZm9yIGFsbG9jYXRpbmcgbWVtb3J5LgorICAgICAgICBc
cGFyYW0gc3RhY2tDYXBhY2l0eSAgICBPcHRpb25hbCBpbml0aWFsIGNhcGFjaXR5IG9mIHN0YWNr
IGluIGJ5dGVzLgorICAgICAgICBccGFyYW0gc3RhY2tBbGxvY2F0b3IgICBPcHRpb25hbCBhbGxv
Y2F0b3IgZm9yIGFsbG9jYXRpbmcgbWVtb3J5IGZvciBzdGFjay4KKyAgICAqLworICAgIEdlbmVy
aWNEb2N1bWVudChBbGxvY2F0b3IqIGFsbG9jYXRvciA9IDAsIHNpemVfdCBzdGFja0NhcGFjaXR5
ID0ga0RlZmF1bHRTdGFja0NhcGFjaXR5LCBTdGFja0FsbG9jYXRvciogc3RhY2tBbGxvY2F0b3Ig
PSAwKSA6IAorICAgICAgICBhbGxvY2F0b3JfKGFsbG9jYXRvciksIG93bkFsbG9jYXRvcl8oMCks
IHN0YWNrXyhzdGFja0FsbG9jYXRvciwgc3RhY2tDYXBhY2l0eSksIHBhcnNlUmVzdWx0XygpCisg
ICAgeworICAgICAgICBpZiAoIWFsbG9jYXRvcl8pCisgICAgICAgICAgICBvd25BbGxvY2F0b3Jf
ID0gYWxsb2NhdG9yXyA9IFJBUElESlNPTl9ORVcoQWxsb2NhdG9yKCkpOworICAgIH0KKworI2lm
IFJBUElESlNPTl9IQVNfQ1hYMTFfUlZBTFVFX1JFRlMKKyAgICAvLyEgTW92ZSBjb25zdHJ1Y3Rv
ciBpbiBDKysxMQorICAgIEdlbmVyaWNEb2N1bWVudChHZW5lcmljRG9jdW1lbnQmJiByaHMpIFJB
UElESlNPTl9OT0VYQ0VQVAorICAgICAgICA6IFZhbHVlVHlwZShzdGQ6Om1vdmUocmhzKSksCisg
ICAgICAgICAgYWxsb2NhdG9yXyhyaHMuYWxsb2NhdG9yXyksCisgICAgICAgICAgb3duQWxsb2Nh
dG9yXyhyaHMub3duQWxsb2NhdG9yXyksCisgICAgICAgICAgc3RhY2tfKHN0ZDo6bW92ZShyaHMu
c3RhY2tfKSksCisgICAgICAgICAgcGFyc2VSZXN1bHRfKHJocy5wYXJzZVJlc3VsdF8pCisgICAg
eworICAgICAgICByaHMuYWxsb2NhdG9yXyA9IDA7CisgICAgICAgIHJocy5vd25BbGxvY2F0b3Jf
ID0gMDsKKyAgICAgICAgcmhzLnBhcnNlUmVzdWx0XyA9IFBhcnNlUmVzdWx0KCk7CisgICAgfQor
I2VuZGlmCisKKyAgICB+R2VuZXJpY0RvY3VtZW50KCkgeworICAgICAgICBEZXN0cm95KCk7Cisg
ICAgfQorCisjaWYgUkFQSURKU09OX0hBU19DWFgxMV9SVkFMVUVfUkVGUworICAgIC8vISBNb3Zl
IGFzc2lnbm1lbnQgaW4gQysrMTEKKyAgICBHZW5lcmljRG9jdW1lbnQmIG9wZXJhdG9yPShHZW5l
cmljRG9jdW1lbnQmJiByaHMpIFJBUElESlNPTl9OT0VYQ0VQVAorICAgIHsKKyAgICAgICAgLy8g
VGhlIGNhc3QgdG8gVmFsdWVUeXBlIGlzIG5lY2Vzc2FyeSBoZXJlLCBiZWNhdXNlIG90aGVyd2lz
ZSBpdCB3b3VsZAorICAgICAgICAvLyBhdHRlbXB0IHRvIGNhbGwgR2VuZXJpY1ZhbHVlJ3MgdGVt
cGxhdGVkIGFzc2lnbm1lbnQgb3BlcmF0b3IuCisgICAgICAgIFZhbHVlVHlwZTo6b3BlcmF0b3I9
KHN0ZDo6Zm9yd2FyZDxWYWx1ZVR5cGU+KHJocykpOworCisgICAgICAgIC8vIENhbGxpbmcgdGhl
IGRlc3RydWN0b3IgaGVyZSB3b3VsZCBwcmVtYXR1cmVseSBjYWxsIHN0YWNrXydzIGRlc3RydWN0
b3IKKyAgICAgICAgRGVzdHJveSgpOworCisgICAgICAgIGFsbG9jYXRvcl8gPSByaHMuYWxsb2Nh
dG9yXzsKKyAgICAgICAgb3duQWxsb2NhdG9yXyA9IHJocy5vd25BbGxvY2F0b3JfOworICAgICAg
ICBzdGFja18gPSBzdGQ6Om1vdmUocmhzLnN0YWNrXyk7CisgICAgICAgIHBhcnNlUmVzdWx0XyA9
IHJocy5wYXJzZVJlc3VsdF87CisKKyAgICAgICAgcmhzLmFsbG9jYXRvcl8gPSAwOworICAgICAg
ICByaHMub3duQWxsb2NhdG9yXyA9IDA7CisgICAgICAgIHJocy5wYXJzZVJlc3VsdF8gPSBQYXJz
ZVJlc3VsdCgpOworCisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisjZW5kaWYKKworICAg
IC8vIUBuYW1lIFBhcnNlIGZyb20gc3RyZWFtCisgICAgLy8hQHsKKworICAgIC8vISBQYXJzZSBK
U09OIHRleHQgZnJvbSBhbiBpbnB1dCBzdHJlYW0gKHdpdGggRW5jb2RpbmcgY29udmVyc2lvbikK
KyAgICAvKiEgXHRwYXJhbSBwYXJzZUZsYWdzIENvbWJpbmF0aW9uIG9mIFxyZWYgUGFyc2VGbGFn
LgorICAgICAgICBcdHBhcmFtIFNvdXJjZUVuY29kaW5nIEVuY29kaW5nIG9mIGlucHV0IHN0cmVh
bQorICAgICAgICBcdHBhcmFtIElucHV0U3RyZWFtIFR5cGUgb2YgaW5wdXQgc3RyZWFtLCBpbXBs
ZW1lbnRpbmcgU3RyZWFtIGNvbmNlcHQKKyAgICAgICAgXHBhcmFtIGlzIElucHV0IHN0cmVhbSB0
byBiZSBwYXJzZWQuCisgICAgICAgIFxyZXR1cm4gVGhlIGRvY3VtZW50IGl0c2VsZiBmb3IgZmx1
ZW50IEFQSS4KKyAgICAqLworICAgIHRlbXBsYXRlIDx1bnNpZ25lZCBwYXJzZUZsYWdzLCB0eXBl
bmFtZSBTb3VyY2VFbmNvZGluZywgdHlwZW5hbWUgSW5wdXRTdHJlYW0+CisgICAgR2VuZXJpY0Rv
Y3VtZW50JiBQYXJzZVN0cmVhbShJbnB1dFN0cmVhbSYgaXMpIHsKKyAgICAgICAgVmFsdWVUeXBl
OjpTZXROdWxsKCk7IC8vIFJlbW92ZSBleGlzdGluZyByb290IGlmIGV4aXN0CisgICAgICAgIEdl
bmVyaWNSZWFkZXI8U291cmNlRW5jb2RpbmcsIEVuY29kaW5nLCBBbGxvY2F0b3I+IHJlYWRlcigm
R2V0QWxsb2NhdG9yKCkpOworICAgICAgICBDbGVhclN0YWNrT25FeGl0IHNjb3BlKCp0aGlzKTsK
KyAgICAgICAgcGFyc2VSZXN1bHRfID0gcmVhZGVyLnRlbXBsYXRlIFBhcnNlPHBhcnNlRmxhZ3M+
KGlzLCAqdGhpcyk7CisgICAgICAgIGlmIChwYXJzZVJlc3VsdF8pIHsKKyAgICAgICAgICAgIFJB
UElESlNPTl9BU1NFUlQoc3RhY2tfLkdldFNpemUoKSA9PSBzaXplb2YoVmFsdWVUeXBlKSk7IC8v
IEdvdCBvbmUgYW5kIG9ubHkgb25lIHJvb3Qgb2JqZWN0CisgICAgICAgICAgICB0aGlzLT5SYXdB
c3NpZ24oKnN0YWNrXy50ZW1wbGF0ZSBQb3A8VmFsdWVUeXBlPigxKSk7ICAgIC8vIEFkZCB0aGlz
LT4gdG8gcHJldmVudCBpc3N1ZSAxMy4KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKnRoaXM7
CisgICAgfQorCisgICAgLy8hIFBhcnNlIEpTT04gdGV4dCBmcm9tIGFuIGlucHV0IHN0cmVhbQor
ICAgIC8qISBcdHBhcmFtIHBhcnNlRmxhZ3MgQ29tYmluYXRpb24gb2YgXHJlZiBQYXJzZUZsYWcu
CisgICAgICAgIFx0cGFyYW0gSW5wdXRTdHJlYW0gVHlwZSBvZiBpbnB1dCBzdHJlYW0sIGltcGxl
bWVudGluZyBTdHJlYW0gY29uY2VwdAorICAgICAgICBccGFyYW0gaXMgSW5wdXQgc3RyZWFtIHRv
IGJlIHBhcnNlZC4KKyAgICAgICAgXHJldHVybiBUaGUgZG9jdW1lbnQgaXRzZWxmIGZvciBmbHVl
bnQgQVBJLgorICAgICovCisgICAgdGVtcGxhdGUgPHVuc2lnbmVkIHBhcnNlRmxhZ3MsIHR5cGVu
YW1lIElucHV0U3RyZWFtPgorICAgIEdlbmVyaWNEb2N1bWVudCYgUGFyc2VTdHJlYW0oSW5wdXRT
dHJlYW0mIGlzKSB7CisgICAgICAgIHJldHVybiBQYXJzZVN0cmVhbTxwYXJzZUZsYWdzLEVuY29k
aW5nLElucHV0U3RyZWFtPihpcyk7CisgICAgfQorCisgICAgLy8hIFBhcnNlIEpTT04gdGV4dCBm
cm9tIGFuIGlucHV0IHN0cmVhbSAod2l0aCBccmVmIGtQYXJzZURlZmF1bHRGbGFncykKKyAgICAv
KiEgXHRwYXJhbSBJbnB1dFN0cmVhbSBUeXBlIG9mIGlucHV0IHN0cmVhbSwgaW1wbGVtZW50aW5n
IFN0cmVhbSBjb25jZXB0CisgICAgICAgIFxwYXJhbSBpcyBJbnB1dCBzdHJlYW0gdG8gYmUgcGFy
c2VkLgorICAgICAgICBccmV0dXJuIFRoZSBkb2N1bWVudCBpdHNlbGYgZm9yIGZsdWVudCBBUEku
CisgICAgKi8KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRTdHJlYW0+CisgICAgR2VuZXJp
Y0RvY3VtZW50JiBQYXJzZVN0cmVhbShJbnB1dFN0cmVhbSYgaXMpIHsKKyAgICAgICAgcmV0dXJu
IFBhcnNlU3RyZWFtPGtQYXJzZURlZmF1bHRGbGFncywgRW5jb2RpbmcsIElucHV0U3RyZWFtPihp
cyk7CisgICAgfQorICAgIC8vIUB9CisKKyAgICAvLyFAbmFtZSBQYXJzZSBpbi1wbGFjZSBmcm9t
IG11dGFibGUgc3RyaW5nCisgICAgLy8hQHsKKworICAgIC8vISBQYXJzZSBKU09OIHRleHQgZnJv
bSBhIG11dGFibGUgc3RyaW5nICh3aXRoIEVuY29kaW5nIGNvbnZlcnNpb24pCisgICAgLyohIFx0
cGFyYW0gcGFyc2VGbGFncyBDb21iaW5hdGlvbiBvZiBccmVmIFBhcnNlRmxhZy4KKyAgICAgICAg
XHRwYXJhbSBTb3VyY2VFbmNvZGluZyBUcmFuc2NvZGluZyBmcm9tIGlucHV0IEVuY29kaW5nCisg
ICAgICAgIFxwYXJhbSBzdHIgTXV0YWJsZSB6ZXJvLXRlcm1pbmF0ZWQgc3RyaW5nIHRvIGJlIHBh
cnNlZC4KKyAgICAgICAgXHJldHVybiBUaGUgZG9jdW1lbnQgaXRzZWxmIGZvciBmbHVlbnQgQVBJ
LgorICAgICovCisgICAgdGVtcGxhdGUgPHVuc2lnbmVkIHBhcnNlRmxhZ3MsIHR5cGVuYW1lIFNv
dXJjZUVuY29kaW5nPgorICAgIEdlbmVyaWNEb2N1bWVudCYgUGFyc2VJbnNpdHUoQ2gqIHN0cikg
eworICAgICAgICBHZW5lcmljSW5zaXR1U3RyaW5nU3RyZWFtPEVuY29kaW5nPiBzKHN0cik7Cisg
ICAgICAgIHJldHVybiBQYXJzZVN0cmVhbTxwYXJzZUZsYWdzIHwga1BhcnNlSW5zaXR1RmxhZywg
U291cmNlRW5jb2Rpbmc+KHMpOworICAgIH0KKworICAgIC8vISBQYXJzZSBKU09OIHRleHQgZnJv
bSBhIG11dGFibGUgc3RyaW5nCisgICAgLyohIFx0cGFyYW0gcGFyc2VGbGFncyBDb21iaW5hdGlv
biBvZiBccmVmIFBhcnNlRmxhZy4KKyAgICAgICAgXHBhcmFtIHN0ciBNdXRhYmxlIHplcm8tdGVy
bWluYXRlZCBzdHJpbmcgdG8gYmUgcGFyc2VkLgorICAgICAgICBccmV0dXJuIFRoZSBkb2N1bWVu
dCBpdHNlbGYgZm9yIGZsdWVudCBBUEkuCisgICAgKi8KKyAgICB0ZW1wbGF0ZSA8dW5zaWduZWQg
cGFyc2VGbGFncz4KKyAgICBHZW5lcmljRG9jdW1lbnQmIFBhcnNlSW5zaXR1KENoKiBzdHIpIHsK
KyAgICAgICAgcmV0dXJuIFBhcnNlSW5zaXR1PHBhcnNlRmxhZ3MsIEVuY29kaW5nPihzdHIpOwor
ICAgIH0KKworICAgIC8vISBQYXJzZSBKU09OIHRleHQgZnJvbSBhIG11dGFibGUgc3RyaW5nICh3
aXRoIFxyZWYga1BhcnNlRGVmYXVsdEZsYWdzKQorICAgIC8qISBccGFyYW0gc3RyIE11dGFibGUg
emVyby10ZXJtaW5hdGVkIHN0cmluZyB0byBiZSBwYXJzZWQuCisgICAgICAgIFxyZXR1cm4gVGhl
IGRvY3VtZW50IGl0c2VsZiBmb3IgZmx1ZW50IEFQSS4KKyAgICAqLworICAgIEdlbmVyaWNEb2N1
bWVudCYgUGFyc2VJbnNpdHUoQ2gqIHN0cikgeworICAgICAgICByZXR1cm4gUGFyc2VJbnNpdHU8
a1BhcnNlRGVmYXVsdEZsYWdzLCBFbmNvZGluZz4oc3RyKTsKKyAgICB9CisgICAgLy8hQH0KKwor
ICAgIC8vIUBuYW1lIFBhcnNlIGZyb20gcmVhZC1vbmx5IHN0cmluZworICAgIC8vIUB7CisKKyAg
ICAvLyEgUGFyc2UgSlNPTiB0ZXh0IGZyb20gYSByZWFkLW9ubHkgc3RyaW5nICh3aXRoIEVuY29k
aW5nIGNvbnZlcnNpb24pCisgICAgLyohIFx0cGFyYW0gcGFyc2VGbGFncyBDb21iaW5hdGlvbiBv
ZiBccmVmIFBhcnNlRmxhZyAobXVzdCBub3QgY29udGFpbiBccmVmIGtQYXJzZUluc2l0dUZsYWcp
LgorICAgICAgICBcdHBhcmFtIFNvdXJjZUVuY29kaW5nIFRyYW5zY29kaW5nIGZyb20gaW5wdXQg
RW5jb2RpbmcKKyAgICAgICAgXHBhcmFtIHN0ciBSZWFkLW9ubHkgemVyby10ZXJtaW5hdGVkIHN0
cmluZyB0byBiZSBwYXJzZWQuCisgICAgKi8KKyAgICB0ZW1wbGF0ZSA8dW5zaWduZWQgcGFyc2VG
bGFncywgdHlwZW5hbWUgU291cmNlRW5jb2Rpbmc+CisgICAgR2VuZXJpY0RvY3VtZW50JiBQYXJz
ZShjb25zdCBDaCogc3RyKSB7CisgICAgICAgIFJBUElESlNPTl9BU1NFUlQoIShwYXJzZUZsYWdz
ICYga1BhcnNlSW5zaXR1RmxhZykpOworICAgICAgICBHZW5lcmljU3RyaW5nU3RyZWFtPFNvdXJj
ZUVuY29kaW5nPiBzKHN0cik7CisgICAgICAgIHJldHVybiBQYXJzZVN0cmVhbTxwYXJzZUZsYWdz
LCBTb3VyY2VFbmNvZGluZz4ocyk7CisgICAgfQorCisgICAgLy8hIFBhcnNlIEpTT04gdGV4dCBm
cm9tIGEgcmVhZC1vbmx5IHN0cmluZworICAgIC8qISBcdHBhcmFtIHBhcnNlRmxhZ3MgQ29tYmlu
YXRpb24gb2YgXHJlZiBQYXJzZUZsYWcgKG11c3Qgbm90IGNvbnRhaW4gXHJlZiBrUGFyc2VJbnNp
dHVGbGFnKS4KKyAgICAgICAgXHBhcmFtIHN0ciBSZWFkLW9ubHkgemVyby10ZXJtaW5hdGVkIHN0
cmluZyB0byBiZSBwYXJzZWQuCisgICAgKi8KKyAgICB0ZW1wbGF0ZSA8dW5zaWduZWQgcGFyc2VG
bGFncz4KKyAgICBHZW5lcmljRG9jdW1lbnQmIFBhcnNlKGNvbnN0IENoKiBzdHIpIHsKKyAgICAg
ICAgcmV0dXJuIFBhcnNlPHBhcnNlRmxhZ3MsIEVuY29kaW5nPihzdHIpOworICAgIH0KKworICAg
IC8vISBQYXJzZSBKU09OIHRleHQgZnJvbSBhIHJlYWQtb25seSBzdHJpbmcgKHdpdGggXHJlZiBr
UGFyc2VEZWZhdWx0RmxhZ3MpCisgICAgLyohIFxwYXJhbSBzdHIgUmVhZC1vbmx5IHplcm8tdGVy
bWluYXRlZCBzdHJpbmcgdG8gYmUgcGFyc2VkLgorICAgICovCisgICAgR2VuZXJpY0RvY3VtZW50
JiBQYXJzZShjb25zdCBDaCogc3RyKSB7CisgICAgICAgIHJldHVybiBQYXJzZTxrUGFyc2VEZWZh
dWx0RmxhZ3M+KHN0cik7CisgICAgfQorICAgIC8vIUB9CisKKyAgICAvLyFAbmFtZSBIYW5kbGlu
ZyBwYXJzZSBlcnJvcnMKKyAgICAvLyFAeworCisgICAgLy8hIFdoZXRoZXIgYSBwYXJzZSBlcnJv
ciBoYXMgb2NjdXJlZCBpbiB0aGUgbGFzdCBwYXJzaW5nLgorICAgIGJvb2wgSGFzUGFyc2VFcnJv
cigpIGNvbnN0IHsgcmV0dXJuIHBhcnNlUmVzdWx0Xy5Jc0Vycm9yKCk7IH0KKworICAgIC8vISBH
ZXQgdGhlIFxyZWYgUGFyc2VFcnJvckNvZGUgb2YgbGFzdCBwYXJzaW5nLgorICAgIFBhcnNlRXJy
b3JDb2RlIEdldFBhcnNlRXJyb3IoKSBjb25zdCB7IHJldHVybiBwYXJzZVJlc3VsdF8uQ29kZSgp
OyB9CisKKyAgICAvLyEgR2V0IHRoZSBwb3NpdGlvbiBvZiBsYXN0IHBhcnNpbmcgZXJyb3IgaW4g
aW5wdXQsIDAgb3RoZXJ3aXNlLgorICAgIHNpemVfdCBHZXRFcnJvck9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIHBhcnNlUmVzdWx0Xy5PZmZzZXQoKTsgfQorCisgICAgLy8hQH0KKworICAgIC8vISBH
ZXQgdGhlIGFsbG9jYXRvciBvZiB0aGlzIGRvY3VtZW50LgorICAgIEFsbG9jYXRvciYgR2V0QWxs
b2NhdG9yKCkgeyByZXR1cm4gKmFsbG9jYXRvcl87IH0KKworICAgIC8vISBHZXQgdGhlIGNhcGFj
aXR5IG9mIHN0YWNrIGluIGJ5dGVzLgorICAgIHNpemVfdCBHZXRTdGFja0NhcGFjaXR5KCkgY29u
c3QgeyByZXR1cm4gc3RhY2tfLkdldENhcGFjaXR5KCk7IH0KKworcHJpdmF0ZToKKyAgICAvLyBj
bGVhciBzdGFjayBvbiBhbnkgZXhpdCBmcm9tIFBhcnNlU3RyZWFtLCBlLmcuIGR1ZSB0byBleGNl
cHRpb24KKyAgICBzdHJ1Y3QgQ2xlYXJTdGFja09uRXhpdCB7CisgICAgICAgIGV4cGxpY2l0IENs
ZWFyU3RhY2tPbkV4aXQoR2VuZXJpY0RvY3VtZW50JiBkKSA6IGRfKGQpIHt9CisgICAgICAgIH5D
bGVhclN0YWNrT25FeGl0KCkgeyBkXy5DbGVhclN0YWNrKCk7IH0KKyAgICBwcml2YXRlOgorICAg
ICAgICBDbGVhclN0YWNrT25FeGl0KGNvbnN0IENsZWFyU3RhY2tPbkV4aXQmKTsKKyAgICAgICAg
Q2xlYXJTdGFja09uRXhpdCYgb3BlcmF0b3I9KGNvbnN0IENsZWFyU3RhY2tPbkV4aXQmKTsKKyAg
ICAgICAgR2VuZXJpY0RvY3VtZW50JiBkXzsKKyAgICB9OworCisgICAgLy8gY2FsbGVycyBvZiB0
aGUgZm9sbG93aW5nIHByaXZhdGUgSGFuZGxlciBmdW5jdGlvbnMKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUsdHlwZW5hbWUsdHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBHZW5lcmljUmVhZGVyOyAvLyBm
b3IgcGFyc2luZworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSwgdHlwZW5hbWU+IGZyaWVuZCBjbGFz
cyBHZW5lcmljVmFsdWU7IC8vIGZvciBkZWVwIGNvcHlpbmcKKworICAgIC8vIEltcGxlbWVudGF0
aW9uIG9mIEhhbmRsZXIKKyAgICBib29sIE51bGwoKSB7IG5ldyAoc3RhY2tfLnRlbXBsYXRlIFB1
c2g8VmFsdWVUeXBlPigpKSBWYWx1ZVR5cGUoKTsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIEJv
b2woYm9vbCBiKSB7IG5ldyAoc3RhY2tfLnRlbXBsYXRlIFB1c2g8VmFsdWVUeXBlPigpKSBWYWx1
ZVR5cGUoYik7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBJbnQoaW50IGkpIHsgbmV3IChzdGFj
a18udGVtcGxhdGUgUHVzaDxWYWx1ZVR5cGU+KCkpIFZhbHVlVHlwZShpKTsgcmV0dXJuIHRydWU7
IH0KKyAgICBib29sIFVpbnQodW5zaWduZWQgaSkgeyBuZXcgKHN0YWNrXy50ZW1wbGF0ZSBQdXNo
PFZhbHVlVHlwZT4oKSkgVmFsdWVUeXBlKGkpOyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgSW50
NjQoaW50NjRfdCBpKSB7IG5ldyAoc3RhY2tfLnRlbXBsYXRlIFB1c2g8VmFsdWVUeXBlPigpKSBW
YWx1ZVR5cGUoaSk7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBVaW50NjQodWludDY0X3QgaSkg
eyBuZXcgKHN0YWNrXy50ZW1wbGF0ZSBQdXNoPFZhbHVlVHlwZT4oKSkgVmFsdWVUeXBlKGkpOyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgRG91YmxlKGRvdWJsZSBkKSB7IG5ldyAoc3RhY2tfLnRl
bXBsYXRlIFB1c2g8VmFsdWVUeXBlPigpKSBWYWx1ZVR5cGUoZCk7IHJldHVybiB0cnVlOyB9CisK
KyAgICBib29sIFN0cmluZyhjb25zdCBDaCogc3RyLCBTaXplVHlwZSBsZW5ndGgsIGJvb2wgY29w
eSkgeyAKKyAgICAgICAgaWYgKGNvcHkpIAorICAgICAgICAgICAgbmV3IChzdGFja18udGVtcGxh
dGUgUHVzaDxWYWx1ZVR5cGU+KCkpIFZhbHVlVHlwZShzdHIsIGxlbmd0aCwgR2V0QWxsb2NhdG9y
KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXcgKHN0YWNrXy50ZW1wbGF0ZSBQdXNo
PFZhbHVlVHlwZT4oKSkgVmFsdWVUeXBlKHN0ciwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCisgICAgYm9vbCBTdGFydE9iamVjdCgpIHsgbmV3IChzdGFja18udGVtcGxh
dGUgUHVzaDxWYWx1ZVR5cGU+KCkpIFZhbHVlVHlwZShrT2JqZWN0VHlwZSk7IHJldHVybiB0cnVl
OyB9CisgICAgCisgICAgYm9vbCBLZXkoY29uc3QgQ2gqIHN0ciwgU2l6ZVR5cGUgbGVuZ3RoLCBi
b29sIGNvcHkpIHsgcmV0dXJuIFN0cmluZyhzdHIsIGxlbmd0aCwgY29weSk7IH0KKworICAgIGJv
b2wgRW5kT2JqZWN0KFNpemVUeXBlIG1lbWJlckNvdW50KSB7CisgICAgICAgIHR5cGVuYW1lIFZh
bHVlVHlwZTo6TWVtYmVyKiBtZW1iZXJzID0gc3RhY2tfLnRlbXBsYXRlIFBvcDx0eXBlbmFtZSBW
YWx1ZVR5cGU6Ok1lbWJlcj4obWVtYmVyQ291bnQpOworICAgICAgICBzdGFja18udGVtcGxhdGUg
VG9wPFZhbHVlVHlwZT4oKS0+U2V0T2JqZWN0UmF3KG1lbWJlcnMsIChTaXplVHlwZSltZW1iZXJD
b3VudCwgR2V0QWxsb2NhdG9yKCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAg
ICBib29sIFN0YXJ0QXJyYXkoKSB7IG5ldyAoc3RhY2tfLnRlbXBsYXRlIFB1c2g8VmFsdWVUeXBl
PigpKSBWYWx1ZVR5cGUoa0FycmF5VHlwZSk7IHJldHVybiB0cnVlOyB9CisgICAgCisgICAgYm9v
bCBFbmRBcnJheShTaXplVHlwZSBlbGVtZW50Q291bnQpIHsKKyAgICAgICAgVmFsdWVUeXBlKiBl
bGVtZW50cyA9IHN0YWNrXy50ZW1wbGF0ZSBQb3A8VmFsdWVUeXBlPihlbGVtZW50Q291bnQpOwor
ICAgICAgICBzdGFja18udGVtcGxhdGUgVG9wPFZhbHVlVHlwZT4oKS0+U2V0QXJyYXlSYXcoZWxl
bWVudHMsIGVsZW1lbnRDb3VudCwgR2V0QWxsb2NhdG9yKCkpOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgLy8hIFByb2hpYml0IGNvcHlpbmcKKyAgICBHZW5l
cmljRG9jdW1lbnQoY29uc3QgR2VuZXJpY0RvY3VtZW50Jik7CisgICAgLy8hIFByb2hpYml0IGFz
c2lnbm1lbnQKKyAgICBHZW5lcmljRG9jdW1lbnQmIG9wZXJhdG9yPShjb25zdCBHZW5lcmljRG9j
dW1lbnQmKTsKKworICAgIHZvaWQgQ2xlYXJTdGFjaygpIHsKKyAgICAgICAgaWYgKEFsbG9jYXRv
cjo6a05lZWRGcmVlKQorICAgICAgICAgICAgd2hpbGUgKHN0YWNrXy5HZXRTaXplKCkgPiAwKSAg
ICAvLyBIZXJlIGFzc3VtZXMgYWxsIGVsZW1lbnRzIGluIHN0YWNrIGFycmF5IGFyZSBHZW5lcmlj
VmFsdWUgKE1lbWJlciBpcyBhY3R1YWxseSAyIEdlbmVyaWNWYWx1ZSBvYmplY3RzKQorICAgICAg
ICAgICAgICAgIChzdGFja18udGVtcGxhdGUgUG9wPFZhbHVlVHlwZT4oMSkpLT5+VmFsdWVUeXBl
KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHN0YWNrXy5DbGVhcigpOworICAgICAgICBz
dGFja18uU2hyaW5rVG9GaXQoKTsKKyAgICB9CisKKyAgICB2b2lkIERlc3Ryb3koKSB7CisgICAg
ICAgIFJBUElESlNPTl9ERUxFVEUob3duQWxsb2NhdG9yXyk7CisgICAgfQorCisgICAgc3RhdGlj
IGNvbnN0IHNpemVfdCBrRGVmYXVsdFN0YWNrQ2FwYWNpdHkgPSAxMDI0OworICAgIEFsbG9jYXRv
ciogYWxsb2NhdG9yXzsKKyAgICBBbGxvY2F0b3IqIG93bkFsbG9jYXRvcl87CisgICAgaW50ZXJu
YWw6OlN0YWNrPFN0YWNrQWxsb2NhdG9yPiBzdGFja187CisgICAgUGFyc2VSZXN1bHQgcGFyc2VS
ZXN1bHRfOworfTsKKworLy8hIEdlbmVyaWNEb2N1bWVudCB3aXRoIFVURjggZW5jb2RpbmcKK3R5
cGVkZWYgR2VuZXJpY0RvY3VtZW50PFVURjg8PiA+IERvY3VtZW50OworCisvLyBkZWZpbmVkIGhl
cmUgZHVlIHRvIHRoZSBkZXBlbmRlbmN5IG9uIEdlbmVyaWNEb2N1bWVudAordGVtcGxhdGUgPHR5
cGVuYW1lIEVuY29kaW5nLCB0eXBlbmFtZSBBbGxvY2F0b3I+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUg
U291cmNlQWxsb2NhdG9yPgoraW5saW5lCitHZW5lcmljVmFsdWU8RW5jb2RpbmcsQWxsb2NhdG9y
Pjo6R2VuZXJpY1ZhbHVlKGNvbnN0IEdlbmVyaWNWYWx1ZTxFbmNvZGluZyxTb3VyY2VBbGxvY2F0
b3I+JiByaHMsIEFsbG9jYXRvciYgYWxsb2NhdG9yKQoreworICAgIHN3aXRjaCAocmhzLkdldFR5
cGUoKSkgeworICAgIGNhc2Uga09iamVjdFR5cGU6CisgICAgY2FzZSBrQXJyYXlUeXBlOiB7IC8v
IHBlcmZvcm0gZGVlcCBjb3B5IHZpYSBTQVggSGFuZGxlcgorICAgICAgICAgICAgR2VuZXJpY0Rv
Y3VtZW50PEVuY29kaW5nLEFsbG9jYXRvcj4gZCgmYWxsb2NhdG9yKTsKKyAgICAgICAgICAgIHJo
cy5BY2NlcHQoZCk7CisgICAgICAgICAgICBSYXdBc3NpZ24oKmQuc3RhY2tfLnRlbXBsYXRlIFBv
cDxHZW5lcmljVmFsdWU+KDEpKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNl
IGtTdHJpbmdUeXBlOgorICAgICAgICBpZiAocmhzLmZsYWdzXyA9PSBrQ29uc3RTdHJpbmdGbGFn
KSB7CisgICAgICAgICAgICBmbGFnc18gPSByaHMuZmxhZ3NfOworICAgICAgICAgICAgZGF0YV8g
ID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRGF0YSo+KCZyaHMuZGF0YV8pOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgU2V0U3RyaW5nUmF3KFN0cmluZ1JlZihyaHMuR2V0U3RyaW5n
KCksIHJocy5HZXRTdHJpbmdMZW5ndGgoKSksIGFsbG9jYXRvcik7CisgICAgICAgIH0KKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDogLy8ga051bWJlclR5cGUsIGtUcnVlVHlwZSwga0ZhbHNl
VHlwZSwga051bGxUeXBlCisgICAgICAgIGZsYWdzXyA9IHJocy5mbGFnc187CisgICAgICAgIGRh
dGFfICA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IERhdGEqPigmcmhzLmRhdGFfKTsKKyAgICB9
Cit9CisKK1JBUElESlNPTl9OQU1FU1BBQ0VfRU5ECisKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKSB8
fCBkZWZpbmVkKF9fR05VQ19fKQorUkFQSURKU09OX0RJQUdfUE9QCisjZW5kaWYKKworI2VuZGlm
IC8vIFJBUElESlNPTl9ET0NVTUVOVF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9lbmNvZGVk
c3RyZWFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9lbmNvZGVkc3RyZWFtLmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJk
X3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9lbmNvZGVkc3RyZWFtLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwyOTAgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSBNaWxvIFlp
cAorLy8KKy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0
byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKy8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFz
c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCisv
LyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQg
bGltaXRhdGlvbiB0aGUgcmlnaHRzCisvLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1
Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCisvLyBjb3BpZXMgb2Yg
dGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUg
aXMKKy8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnM6CisvLworLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz
c2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKy8vIGFsbCBjb3BpZXMgb3Igc3Vic3Rh
bnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorLy8KKy8vIFRIRSBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9S
CisvLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSwKKy8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorLy8gQVVUSE9SUyBP
UiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBP
VEhFUgorLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9S
VCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKy8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9O
IFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KKy8vIFRI
RSBTT0ZUV0FSRS4KKworI2lmbmRlZiBSQVBJREpTT05fRU5DT0RFRFNUUkVBTV9IXworI2RlZmlu
ZSBSQVBJREpTT05fRU5DT0RFRFNUUkVBTV9IXworCisjaW5jbHVkZSAicmFwaWRqc29uLmgiCisK
KyNpZmRlZiBfX0dOVUNfXworUkFQSURKU09OX0RJQUdfUFVTSAorUkFQSURKU09OX0RJQUdfT0ZG
KGVmZmMrKykKKyNlbmRpZgorCitSQVBJREpTT05fTkFNRVNQQUNFX0JFR0lOCisKKy8vISBJbnB1
dCBieXRlIHN0cmVhbSB3cmFwcGVyIHdpdGggYSBzdGF0aWNhbGx5IGJvdW5kIGVuY29kaW5nLgor
LyohCisgICAgXHRwYXJhbSBFbmNvZGluZyBUaGUgaW50ZXJwcmV0YXRpb24gb2YgZW5jb2Rpbmcg
b2YgdGhlIHN0cmVhbS4gRWl0aGVyIFVURjgsIFVURjE2TEUsIFVURjE2QkUsIFVURjMyTEUsIFVU
RjMyQkUuCisgICAgXHRwYXJhbSBJbnB1dEJ5dGVTdHJlYW0gVHlwZSBvZiBpbnB1dCBieXRlIHN0
cmVhbS4gRm9yIGV4YW1wbGUsIEZpbGVSZWFkU3RyZWFtLgorKi8KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBFbmNvZGluZywgdHlwZW5hbWUgSW5wdXRCeXRlU3RyZWFtPgorY2xhc3MgRW5jb2RlZElucHV0
U3RyZWFtIHsKKyAgICBSQVBJREpTT05fU1RBVElDX0FTU0VSVChzaXplb2YodHlwZW5hbWUgSW5w
dXRCeXRlU3RyZWFtOjpDaCkgPT0gMSk7CitwdWJsaWM6CisgICAgdHlwZWRlZiB0eXBlbmFtZSBF
bmNvZGluZzo6Q2ggQ2g7CisKKyAgICBFbmNvZGVkSW5wdXRTdHJlYW0oSW5wdXRCeXRlU3RyZWFt
JiBpcykgOiBpc18oaXMpIHsgCisgICAgICAgIGN1cnJlbnRfID0gRW5jb2Rpbmc6OlRha2VCT00o
aXNfKTsKKyAgICB9CisKKyAgICBDaCBQZWVrKCkgY29uc3QgeyByZXR1cm4gY3VycmVudF87IH0K
KyAgICBDaCBUYWtlKCkgeyBDaCBjID0gY3VycmVudF87IGN1cnJlbnRfID0gRW5jb2Rpbmc6OlRh
a2UoaXNfKTsgcmV0dXJuIGM7IH0KKyAgICBzaXplX3QgVGVsbCgpIGNvbnN0IHsgcmV0dXJuIGlz
Xy5UZWxsKCk7IH0KKworICAgIC8vIE5vdCBpbXBsZW1lbnRlZAorICAgIHZvaWQgUHV0KENoKSB7
IFJBUElESlNPTl9BU1NFUlQoZmFsc2UpOyB9CisgICAgdm9pZCBGbHVzaCgpIHsgUkFQSURKU09O
X0FTU0VSVChmYWxzZSk7IH0gCisgICAgQ2gqIFB1dEJlZ2luKCkgeyBSQVBJREpTT05fQVNTRVJU
KGZhbHNlKTsgcmV0dXJuIDA7IH0KKyAgICBzaXplX3QgUHV0RW5kKENoKikgeyBSQVBJREpTT05f
QVNTRVJUKGZhbHNlKTsgcmV0dXJuIDA7IH0KKworcHJpdmF0ZToKKyAgICBFbmNvZGVkSW5wdXRT
dHJlYW0oY29uc3QgRW5jb2RlZElucHV0U3RyZWFtJik7CisgICAgRW5jb2RlZElucHV0U3RyZWFt
JiBvcGVyYXRvcj0oY29uc3QgRW5jb2RlZElucHV0U3RyZWFtJik7CisKKyAgICBJbnB1dEJ5dGVT
dHJlYW0mIGlzXzsKKyAgICBDaCBjdXJyZW50XzsKK307CisKKy8vISBPdXRwdXQgYnl0ZSBzdHJl
YW0gd3JhcHBlciB3aXRoIHN0YXRpY2FsbHkgYm91bmQgZW5jb2RpbmcuCisvKiEKKyAgICBcdHBh
cmFtIEVuY29kaW5nIFRoZSBpbnRlcnByZXRhdGlvbiBvZiBlbmNvZGluZyBvZiB0aGUgc3RyZWFt
LiBFaXRoZXIgVVRGOCwgVVRGMTZMRSwgVVRGMTZCRSwgVVRGMzJMRSwgVVRGMzJCRS4KKyAgICBc
dHBhcmFtIElucHV0Qnl0ZVN0cmVhbSBUeXBlIG9mIGlucHV0IGJ5dGUgc3RyZWFtLiBGb3IgZXhh
bXBsZSwgRmlsZVdyaXRlU3RyZWFtLgorKi8KK3RlbXBsYXRlIDx0eXBlbmFtZSBFbmNvZGluZywg
dHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVhbT4KK2NsYXNzIEVuY29kZWRPdXRwdXRTdHJlYW0gewor
ICAgIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHNpemVvZih0eXBlbmFtZSBPdXRwdXRCeXRlU3Ry
ZWFtOjpDaCkgPT0gMSk7CitwdWJsaWM6CisgICAgdHlwZWRlZiB0eXBlbmFtZSBFbmNvZGluZzo6
Q2ggQ2g7CisKKyAgICBFbmNvZGVkT3V0cHV0U3RyZWFtKE91dHB1dEJ5dGVTdHJlYW0mIG9zLCBi
b29sIHB1dEJPTSA9IHRydWUpIDogb3NfKG9zKSB7IAorICAgICAgICBpZiAocHV0Qk9NKQorICAg
ICAgICAgICAgRW5jb2Rpbmc6OlB1dEJPTShvc18pOworICAgIH0KKworICAgIHZvaWQgUHV0KENo
IGMpIHsgRW5jb2Rpbmc6OlB1dChvc18sIGMpOyAgfQorICAgIHZvaWQgRmx1c2goKSB7IG9zXy5G
bHVzaCgpOyB9CisKKyAgICAvLyBOb3QgaW1wbGVtZW50ZWQKKyAgICBDaCBQZWVrKCkgY29uc3Qg
eyBSQVBJREpTT05fQVNTRVJUKGZhbHNlKTsgfQorICAgIENoIFRha2UoKSB7IFJBUElESlNPTl9B
U1NFUlQoZmFsc2UpOyAgfQorICAgIHNpemVfdCBUZWxsKCkgY29uc3QgeyBSQVBJREpTT05fQVNT
RVJUKGZhbHNlKTsgIHJldHVybiAwOyB9CisgICAgQ2gqIFB1dEJlZ2luKCkgeyBSQVBJREpTT05f
QVNTRVJUKGZhbHNlKTsgcmV0dXJuIDA7IH0KKyAgICBzaXplX3QgUHV0RW5kKENoKikgeyBSQVBJ
REpTT05fQVNTRVJUKGZhbHNlKTsgcmV0dXJuIDA7IH0KKworcHJpdmF0ZToKKyAgICBFbmNvZGVk
T3V0cHV0U3RyZWFtKGNvbnN0IEVuY29kZWRPdXRwdXRTdHJlYW0mKTsKKyAgICBFbmNvZGVkT3V0
cHV0U3RyZWFtJiBvcGVyYXRvcj0oY29uc3QgRW5jb2RlZE91dHB1dFN0cmVhbSYpOworCisgICAg
T3V0cHV0Qnl0ZVN0cmVhbSYgb3NfOworfTsKKworI2RlZmluZSBSQVBJREpTT05fRU5DT0RJTkdT
X0ZVTkMoeCkgVVRGODxDaD46OngsIFVURjE2TEU8Q2g+Ojp4LCBVVEYxNkJFPENoPjo6eCwgVVRG
MzJMRTxDaD46OngsIFVURjMyQkU8Q2g+Ojp4CisKKy8vISBJbnB1dCBzdHJlYW0gd3JhcHBlciB3
aXRoIGR5bmFtaWNhbGx5IGJvdW5kIGVuY29kaW5nIGFuZCBhdXRvbWF0aWMgZW5jb2RpbmcgZGV0
ZWN0aW9uLgorLyohCisgICAgXHRwYXJhbSBDaGFyVHlwZSBUeXBlIG9mIGNoYXJhY3RlciBmb3Ig
cmVhZGluZy4KKyAgICBcdHBhcmFtIElucHV0Qnl0ZVN0cmVhbSB0eXBlIG9mIGlucHV0IGJ5dGUg
c3RyZWFtIHRvIGJlIHdyYXBwZWQuCisqLwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlLCB0
eXBlbmFtZSBJbnB1dEJ5dGVTdHJlYW0+CitjbGFzcyBBdXRvVVRGSW5wdXRTdHJlYW0geworICAg
IFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHNpemVvZih0eXBlbmFtZSBJbnB1dEJ5dGVTdHJlYW06
OkNoKSA9PSAxKTsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIENoYXJUeXBlIENoOworCisgICAgLy8h
IENvbnN0cnVjdG9yLgorICAgIC8qIQorICAgICAgICBccGFyYW0gaXMgaW5wdXQgc3RyZWFtIHRv
IGJlIHdyYXBwZWQuCisgICAgICAgIFxwYXJhbSB0eXBlIFVURiBlbmNvZGluZyB0eXBlIGlmIGl0
IGlzIG5vdCBkZXRlY3RlZCBmcm9tIHRoZSBzdHJlYW0uCisgICAgKi8KKyAgICBBdXRvVVRGSW5w
dXRTdHJlYW0oSW5wdXRCeXRlU3RyZWFtJiBpcywgVVRGVHlwZSB0eXBlID0ga1VURjgpIDogaXNf
KCZpcyksIHR5cGVfKHR5cGUpLCBoYXNCT01fKGZhbHNlKSB7CisgICAgICAgIERldGVjdFR5cGUo
KTsKKyAgICAgICAgc3RhdGljIGNvbnN0IFRha2VGdW5jIGZbXSA9IHsgUkFQSURKU09OX0VOQ09E
SU5HU19GVU5DKFRha2UpIH07CisgICAgICAgIHRha2VGdW5jXyA9IGZbdHlwZV9dOworICAgICAg
ICBjdXJyZW50XyA9IHRha2VGdW5jXygqaXNfKTsKKyAgICB9CisKKyAgICBVVEZUeXBlIEdldFR5
cGUoKSBjb25zdCB7IHJldHVybiB0eXBlXzsgfQorICAgIGJvb2wgSGFzQk9NKCkgY29uc3QgeyBy
ZXR1cm4gaGFzQk9NXzsgfQorCisgICAgQ2ggUGVlaygpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRf
OyB9CisgICAgQ2ggVGFrZSgpIHsgQ2ggYyA9IGN1cnJlbnRfOyBjdXJyZW50XyA9IHRha2VGdW5j
XygqaXNfKTsgcmV0dXJuIGM7IH0KKyAgICBzaXplX3QgVGVsbCgpIGNvbnN0IHsgcmV0dXJuIGlz
Xy0+VGVsbCgpOyB9CisKKyAgICAvLyBOb3QgaW1wbGVtZW50ZWQKKyAgICB2b2lkIFB1dChDaCkg
eyBSQVBJREpTT05fQVNTRVJUKGZhbHNlKTsgfQorICAgIHZvaWQgRmx1c2goKSB7IFJBUElESlNP
Tl9BU1NFUlQoZmFsc2UpOyB9IAorICAgIENoKiBQdXRCZWdpbigpIHsgUkFQSURKU09OX0FTU0VS
VChmYWxzZSk7IHJldHVybiAwOyB9CisgICAgc2l6ZV90IFB1dEVuZChDaCopIHsgUkFQSURKU09O
X0FTU0VSVChmYWxzZSk7IHJldHVybiAwOyB9CisKK3ByaXZhdGU6CisgICAgQXV0b1VURklucHV0
U3RyZWFtKGNvbnN0IEF1dG9VVEZJbnB1dFN0cmVhbSYpOworICAgIEF1dG9VVEZJbnB1dFN0cmVh
bSYgb3BlcmF0b3I9KGNvbnN0IEF1dG9VVEZJbnB1dFN0cmVhbSYpOworCisgICAgLy8gRGV0ZWN0
IGVuY29kaW5nIHR5cGUgd2l0aCBCT00gb3IgUkZDIDQ2MjcKKyAgICB2b2lkIERldGVjdFR5cGUo
KSB7CisgICAgICAgIC8vIEJPTSAoQnl0ZSBPcmRlciBNYXJrKToKKyAgICAgICAgLy8gMDAgMDAg
RkUgRkYgIFVURi0zMkJFCisgICAgICAgIC8vIEZGIEZFIDAwIDAwICBVVEYtMzJMRQorICAgICAg
ICAvLyBGRSBGRiAgICAgICAgVVRGLTE2QkUKKyAgICAgICAgLy8gRkYgRkUgICAgICAgIFVURi0x
NkxFCisgICAgICAgIC8vIEVGIEJCIEJGICAgICBVVEYtOAorCisgICAgICAgIGNvbnN0IHVuc2ln
bmVkIGNoYXIqIGMgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKWlzXy0+UGVlazQoKTsKKyAgICAg
ICAgaWYgKCFjKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHVuc2lnbmVkIGJvbSA9
IGNbMF0gfCAoY1sxXSA8PCA4KSB8IChjWzJdIDw8IDE2KSB8IChjWzNdIDw8IDI0KTsKKyAgICAg
ICAgaGFzQk9NXyA9IGZhbHNlOworICAgICAgICBpZiAoYm9tID09IDB4RkZGRTAwMDApICAgICAg
ICAgICAgICAgICAgeyB0eXBlXyA9IGtVVEYzMkJFOyBoYXNCT01fID0gdHJ1ZTsgaXNfLT5UYWtl
KCk7IGlzXy0+VGFrZSgpOyBpc18tPlRha2UoKTsgaXNfLT5UYWtlKCk7IH0KKyAgICAgICAgZWxz
ZSBpZiAoYm9tID09IDB4MDAwMEZFRkYpICAgICAgICAgICAgIHsgdHlwZV8gPSBrVVRGMzJMRTsg
aGFzQk9NXyA9IHRydWU7IGlzXy0+VGFrZSgpOyBpc18tPlRha2UoKTsgaXNfLT5UYWtlKCk7IGlz
Xy0+VGFrZSgpOyB9CisgICAgICAgIGVsc2UgaWYgKChib20gJiAweEZGRkYpID09IDB4RkZGRSkg
ICAgICB7IHR5cGVfID0ga1VURjE2QkU7IGhhc0JPTV8gPSB0cnVlOyBpc18tPlRha2UoKTsgaXNf
LT5UYWtlKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICBlbHNlIGlmICgo
Ym9tICYgMHhGRkZGKSA9PSAweEZFRkYpICAgICAgeyB0eXBlXyA9IGtVVEYxNkxFOyBoYXNCT01f
ID0gdHJ1ZTsgaXNfLT5UYWtlKCk7IGlzXy0+VGFrZSgpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgZWxzZSBpZiAoKGJvbSAmIDB4RkZGRkZGKSA9PSAweEJGQkJFRikgIHsg
dHlwZV8gPSBrVVRGODsgICAgaGFzQk9NXyA9IHRydWU7IGlzXy0+VGFrZSgpOyBpc18tPlRha2Uo
KTsgaXNfLT5UYWtlKCk7ICAgICAgICAgICAgICB9CisKKyAgICAgICAgLy8gUkZDIDQ2Mjc6IFNl
Y3Rpb24gMworICAgICAgICAvLyAiU2luY2UgdGhlIGZpcnN0IHR3byBjaGFyYWN0ZXJzIG9mIGEg
SlNPTiB0ZXh0IHdpbGwgYWx3YXlzIGJlIEFTQ0lJCisgICAgICAgIC8vIGNoYXJhY3RlcnMgW1JG
QzAwMjBdLCBpdCBpcyBwb3NzaWJsZSB0byBkZXRlcm1pbmUgd2hldGhlciBhbiBvY3RldAorICAg
ICAgICAvLyBzdHJlYW0gaXMgVVRGLTgsIFVURi0xNiAoQkUgb3IgTEUpLCBvciBVVEYtMzIgKEJF
IG9yIExFKSBieSBsb29raW5nCisgICAgICAgIC8vIGF0IHRoZSBwYXR0ZXJuIG9mIG51bGxzIGlu
IHRoZSBmaXJzdCBmb3VyIG9jdGV0cy4iCisgICAgICAgIC8vIDAwIDAwIDAwIHh4ICBVVEYtMzJC
RQorICAgICAgICAvLyAwMCB4eCAwMCB4eCAgVVRGLTE2QkUKKyAgICAgICAgLy8geHggMDAgMDAg
MDAgIFVURi0zMkxFCisgICAgICAgIC8vIHh4IDAwIHh4IDAwICBVVEYtMTZMRQorICAgICAgICAv
LyB4eCB4eCB4eCB4eCAgVVRGLTgKKworICAgICAgICBpZiAoIWhhc0JPTV8pIHsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIHBhdHRlcm4gPSAoY1swXSA/IDEgOiAwKSB8IChjWzFdID8gMiA6IDApIHwg
KGNbMl0gPyA0IDogMCkgfCAoY1szXSA/IDggOiAwKTsKKyAgICAgICAgICAgIHN3aXRjaCAocGF0
dGVybikgeworICAgICAgICAgICAgY2FzZSAweDA4OiB0eXBlXyA9IGtVVEYzMkJFOyBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgMHgwQTogdHlwZV8gPSBrVVRGMTZCRTsgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIDB4MDE6IHR5cGVfID0ga1VURjMyTEU7IGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSAweDA1OiB0eXBlXyA9IGtVVEYxNkxFOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMHgwRjog
dHlwZV8gPSBrVVRGODsgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OiBicmVhazsgLy8g
VXNlIHR5cGUgZGVmaW5lZCBieSB1c2VyLgorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgLy8gUnVudGltZSBjaGVjayB3aGV0aGVyIHRoZSBzaXplIG9mIGNoYXJhY3RlciB0eXBl
IGlzIHN1ZmZpY2llbnQuIEl0IG9ubHkgcGVyZm9ybSBjaGVja3Mgd2l0aCBhc3NlcnRpb24uCisg
ICAgICAgIHN3aXRjaCAodHlwZV8pIHsKKyAgICAgICAgY2FzZSBrVVRGODoKKyAgICAgICAgICAg
IC8vIERvIG5vdGhpbmcKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIGtVVEYxNkxF
OgorICAgICAgICBjYXNlIGtVVEYxNkJFOgorICAgICAgICAgICAgUkFQSURKU09OX0FTU0VSVChz
aXplb2YoQ2gpID49IDIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Uga1VURjMy
TEU6CisgICAgICAgIGNhc2Uga1VURjMyQkU6CisgICAgICAgICAgICBSQVBJREpTT05fQVNTRVJU
KHNpemVvZihDaCkgPj0gNCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIFJBUElESlNPTl9BU1NFUlQoZmFsc2UpOyAgICAvLyBJbnZhbGlkIHR5cGUK
KyAgICAgICAgfQorICAgIH0KKworICAgIHR5cGVkZWYgQ2ggKCpUYWtlRnVuYykoSW5wdXRCeXRl
U3RyZWFtJiBpcyk7CisgICAgSW5wdXRCeXRlU3RyZWFtKiBpc187CisgICAgVVRGVHlwZSB0eXBl
XzsKKyAgICBDaCBjdXJyZW50XzsKKyAgICBUYWtlRnVuYyB0YWtlRnVuY187CisgICAgYm9vbCBo
YXNCT01fOworfTsKKworLy8hIE91dHB1dCBzdHJlYW0gd3JhcHBlciB3aXRoIGR5bmFtaWNhbGx5
IGJvdW5kIGVuY29kaW5nIGFuZCBhdXRvbWF0aWMgZW5jb2RpbmcgZGV0ZWN0aW9uLgorLyohCisg
ICAgXHRwYXJhbSBDaGFyVHlwZSBUeXBlIG9mIGNoYXJhY3RlciBmb3Igd3JpdGluZy4KKyAgICBc
dHBhcmFtIElucHV0Qnl0ZVN0cmVhbSB0eXBlIG9mIG91dHB1dCBieXRlIHN0cmVhbSB0byBiZSB3
cmFwcGVkLgorKi8KK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZSwgdHlwZW5hbWUgT3V0cHV0
Qnl0ZVN0cmVhbT4KK2NsYXNzIEF1dG9VVEZPdXRwdXRTdHJlYW0geworICAgIFJBUElESlNPTl9T
VEFUSUNfQVNTRVJUKHNpemVvZih0eXBlbmFtZSBPdXRwdXRCeXRlU3RyZWFtOjpDaCkgPT0gMSk7
CitwdWJsaWM6CisgICAgdHlwZWRlZiBDaGFyVHlwZSBDaDsKKworICAgIC8vISBDb25zdHJ1Y3Rv
ci4KKyAgICAvKiEKKyAgICAgICAgXHBhcmFtIG9zIG91dHB1dCBzdHJlYW0gdG8gYmUgd3JhcHBl
ZC4KKyAgICAgICAgXHBhcmFtIHR5cGUgVVRGIGVuY29kaW5nIHR5cGUuCisgICAgICAgIFxwYXJh
bSBwdXRCT00gV2hldGhlciB0byB3cml0ZSBCT00gYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3Ry
ZWFtLgorICAgICovCisgICAgQXV0b1VURk91dHB1dFN0cmVhbShPdXRwdXRCeXRlU3RyZWFtJiBv
cywgVVRGVHlwZSB0eXBlLCBib29sIHB1dEJPTSkgOiBvc18oJm9zKSwgdHlwZV8odHlwZSkgewor
ICAgICAgICAvLyBSVW50aW1lIGNoZWNrIHdoZXRoZXIgdGhlIHNpemUgb2YgY2hhcmFjdGVyIHR5
cGUgaXMgc3VmZmljaWVudC4gSXQgb25seSBwZXJmb3JtIGNoZWNrcyB3aXRoIGFzc2VydGlvbi4K
KyAgICAgICAgc3dpdGNoICh0eXBlXykgeworICAgICAgICBjYXNlIGtVVEYxNkxFOgorICAgICAg
ICBjYXNlIGtVVEYxNkJFOgorICAgICAgICAgICAgUkFQSURKU09OX0FTU0VSVChzaXplb2YoQ2gp
ID49IDIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Uga1VURjMyTEU6CisgICAg
ICAgIGNhc2Uga1VURjMyQkU6CisgICAgICAgICAgICBSQVBJREpTT05fQVNTRVJUKHNpemVvZihD
aCkgPj0gNCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBrVVRGODoKKyAgICAg
ICAgICAgIC8vIERvIG5vdGhpbmcKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgUkFQSURKU09OX0FTU0VSVChmYWxzZSk7ICAgIC8vIEludmFsaWQgVVRG
VHlwZQorICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGNvbnN0IFB1dEZ1bmMgZltdID0geyBS
QVBJREpTT05fRU5DT0RJTkdTX0ZVTkMoUHV0KSB9OworICAgICAgICBwdXRGdW5jXyA9IGZbdHlw
ZV9dOworCisgICAgICAgIGlmIChwdXRCT00pCisgICAgICAgICAgICBQdXRCT00oKTsKKyAgICB9
CisKKyAgICBVVEZUeXBlIEdldFR5cGUoKSBjb25zdCB7IHJldHVybiB0eXBlXzsgfQorCisgICAg
dm9pZCBQdXQoQ2ggYykgeyBwdXRGdW5jXygqb3NfLCBjKTsgfQorICAgIHZvaWQgRmx1c2goKSB7
IG9zXy0+Rmx1c2goKTsgfSAKKworICAgIC8vIE5vdCBpbXBsZW1lbnRlZAorICAgIENoIFBlZWso
KSBjb25zdCB7IFJBUElESlNPTl9BU1NFUlQoZmFsc2UpOyB9CisgICAgQ2ggVGFrZSgpIHsgUkFQ
SURKU09OX0FTU0VSVChmYWxzZSk7IH0KKyAgICBzaXplX3QgVGVsbCgpIGNvbnN0IHsgUkFQSURK
U09OX0FTU0VSVChmYWxzZSk7IHJldHVybiAwOyB9CisgICAgQ2gqIFB1dEJlZ2luKCkgeyBSQVBJ
REpTT05fQVNTRVJUKGZhbHNlKTsgcmV0dXJuIDA7IH0KKyAgICBzaXplX3QgUHV0RW5kKENoKikg
eyBSQVBJREpTT05fQVNTRVJUKGZhbHNlKTsgcmV0dXJuIDA7IH0KKworcHJpdmF0ZToKKyAgICBB
dXRvVVRGT3V0cHV0U3RyZWFtKGNvbnN0IEF1dG9VVEZPdXRwdXRTdHJlYW0mKTsKKyAgICBBdXRv
VVRGT3V0cHV0U3RyZWFtJiBvcGVyYXRvcj0oY29uc3QgQXV0b1VURk91dHB1dFN0cmVhbSYpOwor
CisgICAgdm9pZCBQdXRCT00oKSB7IAorICAgICAgICB0eXBlZGVmIHZvaWQgKCpQdXRCT01GdW5j
KShPdXRwdXRCeXRlU3RyZWFtJik7CisgICAgICAgIHN0YXRpYyBjb25zdCBQdXRCT01GdW5jIGZb
XSA9IHsgUkFQSURKU09OX0VOQ09ESU5HU19GVU5DKFB1dEJPTSkgfTsKKyAgICAgICAgZlt0eXBl
X10oKm9zXyk7CisgICAgfQorCisgICAgdHlwZWRlZiB2b2lkICgqUHV0RnVuYykoT3V0cHV0Qnl0
ZVN0cmVhbSYsIENoKTsKKworICAgIE91dHB1dEJ5dGVTdHJlYW0qIG9zXzsKKyAgICBVVEZUeXBl
IHR5cGVfOworICAgIFB1dEZ1bmMgcHV0RnVuY187Cit9OworCisjdW5kZWYgUkFQSURKU09OX0VO
Q09ESU5HU19GVU5DCisKK1JBUElESlNPTl9OQU1FU1BBQ0VfRU5ECisKKyNpZmRlZiBfX0dOVUNf
XworUkFQSURKU09OX0RJQUdfUE9QCisjZW5kaWYKKworI2VuZGlmIC8vIFJBUElESlNPTl9GSUxF
U1RSRUFNX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRf
cGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2VuY29kaW5ncy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpz
b24vaW5jbHVkZS9yYXBpZGpzb24vZW5jb2RpbmdzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRl
L3JhcGlkanNvbi9lbmNvZGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYzMCBAQAor
Ly8gQ29weXJpZ2h0IChDKSAyMDExIE1pbG8gWWlwCisvLworLy8gUGVybWlzc2lvbiBpcyBoZXJl
YnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29w
eQorLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz
ICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKKy8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJl
c3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKKy8vIHRv
IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5z
ZSwgYW5kL29yIHNlbGwKKy8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQg
cGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBz
dWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKy8vCisvLyBUaGUgYWJvdmUgY29w
eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRl
ZCBpbgorLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdh
cmUuCisvLworLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FS
UkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKy8vIElNUExJRUQsIElOQ0xVRElORyBCVVQg
Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorLy8gRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFCisvLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJM
RSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisvLyBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9N
LAorLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVT
RSBPUiBPVEhFUiBERUFMSU5HUyBJTgorLy8gVEhFIFNPRlRXQVJFLgorCisjaWZuZGVmIFJBUElE
SlNPTl9FTkNPRElOR1NfSF8KKyNkZWZpbmUgUkFQSURKU09OX0VOQ09ESU5HU19IXworCisjaW5j
bHVkZSAicmFwaWRqc29uLmgiCisKKyNpZmRlZiBfTVNDX1ZFUgorUkFQSURKU09OX0RJQUdfUFVT
SAorUkFQSURKU09OX0RJQUdfT0ZGKDQyNDQpIC8vIGNvbnZlcnNpb24gZnJvbSAndHlwZTEnIHRv
ICd0eXBlMicsIHBvc3NpYmxlIGxvc3Mgb2YgZGF0YQorUkFQSURKU09OX0RJQUdfT0ZGKDQ3MDIp
ICAvLyB1bnJlYWNoYWJsZSBjb2RlCisjZWxpZiBkZWZpbmVkKF9fR05VQ19fKQorUkFQSURKU09O
X0RJQUdfUFVTSAorUkFQSURKU09OX0RJQUdfT0ZGKGVmZmMrKykKKyNlbmRpZgorCitSQVBJREpT
T05fTkFNRVNQQUNFX0JFR0lOCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIEVuY29kaW5n
CisKKy8qISBcY2xhc3MgcmFwaWRqc29uOjpFbmNvZGluZworICAgIFxicmllZiBDb25jZXB0IGZv
ciBlbmNvZGluZyBvZiBVbmljb2RlIGNoYXJhY3RlcnMuCisKK1xjb2RlCitjb25jZXB0IEVuY29k
aW5nIHsKKyAgICB0eXBlbmFtZSBDaDsgICAgLy8hIFR5cGUgb2YgY2hhcmFjdGVyLiBBICJjaGFy
YWN0ZXIiIGlzIGFjdHVhbGx5IGEgY29kZSB1bml0IGluIHVuaWNvZGUncyBkZWZpbml0aW9uLgor
CisgICAgZW51bSB7IHN1cHBvcnRVbmljb2RlID0gMSB9OyAvLyBvciAwIGlmIG5vdCBzdXBwb3J0
aW5nIHVuaWNvZGUKKworICAgIC8vISBcYnJpZWYgRW5jb2RlIGEgVW5pY29kZSBjb2RlcG9pbnQg
dG8gYW4gb3V0cHV0IHN0cmVhbS4KKyAgICAvLyEgXHBhcmFtIG9zIE91dHB1dCBzdHJlYW0uCisg
ICAgLy8hIFxwYXJhbSBjb2RlcG9pbnQgQW4gdW5pY29kZSBjb2RlcG9pbnQsIHJhbmdpbmcgZnJv
bSAweDAgdG8gMHgxMEZGRkYgaW5jbHVzaXZlbHkuCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3V0
cHV0U3RyZWFtPgorICAgIHN0YXRpYyB2b2lkIEVuY29kZShPdXRwdXRTdHJlYW0mIG9zLCB1bnNp
Z25lZCBjb2RlcG9pbnQpOworCisgICAgLy8hIFxicmllZiBEZWNvZGUgYSBVbmljb2RlIGNvZGVw
b2ludCBmcm9tIGFuIGlucHV0IHN0cmVhbS4KKyAgICAvLyEgXHBhcmFtIGlzIElucHV0IHN0cmVh
bS4KKyAgICAvLyEgXHBhcmFtIGNvZGVwb2ludCBPdXRwdXQgb2YgdGhlIHVuaWNvZGUgY29kZXBv
aW50LgorICAgIC8vISBccmV0dXJuIHRydWUgaWYgYSB2YWxpZCBjb2RlcG9pbnQgY2FuIGJlIGRl
Y29kZWQgZnJvbSB0aGUgc3RyZWFtLgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dFN0cmVh
bT4KKyAgICBzdGF0aWMgYm9vbCBEZWNvZGUoSW5wdXRTdHJlYW0mIGlzLCB1bnNpZ25lZCogY29k
ZXBvaW50KTsKKworICAgIC8vISBcYnJpZWYgVmFsaWRhdGUgb25lIFVuaWNvZGUgY29kZXBvaW50
IGZyb20gYW4gZW5jb2RlZCBzdHJlYW0uCisgICAgLy8hIFxwYXJhbSBpcyBJbnB1dCBzdHJlYW0g
dG8gb2J0YWluIGNvZGVwb2ludC4KKyAgICAvLyEgXHBhcmFtIG9zIE91dHB1dCBmb3IgY29weWlu
ZyBvbmUgY29kZXBvaW50LgorICAgIC8vISBccmV0dXJuIHRydWUgaWYgaXQgaXMgdmFsaWQuCisg
ICAgLy8hIFxub3RlIFRoaXMgZnVuY3Rpb24ganVzdCB2YWxpZGF0aW5nIGFuZCBjb3B5aW5nIHRo
ZSBjb2RlcG9pbnQgd2l0aG91dCBhY3R1YWxseSBkZWNvZGUgaXQuCisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIElucHV0U3RyZWFtLCB0eXBlbmFtZSBPdXRwdXRTdHJlYW0+CisgICAgc3RhdGljIGJv
b2wgVmFsaWRhdGUoSW5wdXRTdHJlYW0mIGlzLCBPdXRwdXRTdHJlYW0mIG9zKTsKKworICAgIC8v
IFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSBkZWFsIHdpdGggYnl0ZSBzdHJlYW1zLgorCisg
ICAgLy8hIFRha2UgYSBjaGFyYWN0ZXIgZnJvbSBpbnB1dCBieXRlIHN0cmVhbSwgc2tpcCBCT00g
aWYgZXhpc3QuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0Qnl0ZVN0cmVhbT4KKyAgICBz
dGF0aWMgQ2hhclR5cGUgVGFrZUJPTShJbnB1dEJ5dGVTdHJlYW0mIGlzKTsKKworICAgIC8vISBU
YWtlIGEgY2hhcmFjdGVyIGZyb20gaW5wdXQgYnl0ZSBzdHJlYW0uCisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIElucHV0Qnl0ZVN0cmVhbT4KKyAgICBzdGF0aWMgQ2ggVGFrZShJbnB1dEJ5dGVTdHJl
YW0mIGlzKTsKKworICAgIC8vISBQdXQgQk9NIHRvIG91dHB1dCBieXRlIHN0cmVhbS4KKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVhbT4KKyAgICBzdGF0aWMgdm9pZCBQdXRC
T00oT3V0cHV0Qnl0ZVN0cmVhbSYgb3MpOworCisgICAgLy8hIFB1dCBhIGNoYXJhY3RlciB0byBv
dXRwdXQgYnl0ZSBzdHJlYW0uCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE91dHB1dEJ5dGVTdHJl
YW0+CisgICAgc3RhdGljIHZvaWQgUHV0KE91dHB1dEJ5dGVTdHJlYW0mIG9zLCBDaCBjKTsKK307
CitcZW5kY29kZQorKi8KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gVVRGOAorCisvLyEg
VVRGLTggZW5jb2RpbmcuCisvKiEgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VVEYtOAor
ICAgIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM2MjkKKyAgICBcdHBhcmFtIENoYXJU
eXBlIENvZGUgdW5pdCBmb3Igc3RvcmluZyA4LWJpdCBVVEYtOCBkYXRhLiBEZWZhdWx0IGlzIGNo
YXIuCisgICAgXG5vdGUgaW1wbGVtZW50cyBFbmNvZGluZyBjb25jZXB0CisqLwordGVtcGxhdGU8
dHlwZW5hbWUgQ2hhclR5cGUgPSBjaGFyPgorc3RydWN0IFVURjggeworICAgIHR5cGVkZWYgQ2hh
clR5cGUgQ2g7CisKKyAgICBlbnVtIHsgc3VwcG9ydFVuaWNvZGUgPSAxIH07CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPdXRwdXRTdHJlYW0+CisgICAgc3RhdGljIHZvaWQgRW5jb2RlKE91dHB1
dFN0cmVhbSYgb3MsIHVuc2lnbmVkIGNvZGVwb2ludCkgeworICAgICAgICBpZiAoY29kZXBvaW50
IDw9IDB4N0YpIAorICAgICAgICAgICAgb3MuUHV0KHN0YXRpY19jYXN0PENoPihjb2RlcG9pbnQg
JiAweEZGKSk7CisgICAgICAgIGVsc2UgaWYgKGNvZGVwb2ludCA8PSAweDdGRikgeworICAgICAg
ICAgICAgb3MuUHV0KHN0YXRpY19jYXN0PENoPigweEMwIHwgKChjb2RlcG9pbnQgPj4gNikgJiAw
eEZGKSkpOworICAgICAgICAgICAgb3MuUHV0KHN0YXRpY19jYXN0PENoPigweDgwIHwgKChjb2Rl
cG9pbnQgJiAweDNGKSkpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChjb2RlcG9pbnQg
PD0gMHhGRkZGKSB7CisgICAgICAgICAgICBvcy5QdXQoc3RhdGljX2Nhc3Q8Q2g+KDB4RTAgfCAo
KGNvZGVwb2ludCA+PiAxMikgJiAweEZGKSkpOworICAgICAgICAgICAgb3MuUHV0KHN0YXRpY19j
YXN0PENoPigweDgwIHwgKChjb2RlcG9pbnQgPj4gNikgJiAweDNGKSkpOworICAgICAgICAgICAg
b3MuUHV0KHN0YXRpY19jYXN0PENoPigweDgwIHwgKGNvZGVwb2ludCAmIDB4M0YpKSk7CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBSQVBJREpTT05fQVNTRVJUKGNvZGVw
b2ludCA8PSAweDEwRkZGRik7CisgICAgICAgICAgICBvcy5QdXQoc3RhdGljX2Nhc3Q8Q2g+KDB4
RjAgfCAoKGNvZGVwb2ludCA+PiAxOCkgJiAweEZGKSkpOworICAgICAgICAgICAgb3MuUHV0KHN0
YXRpY19jYXN0PENoPigweDgwIHwgKChjb2RlcG9pbnQgPj4gMTIpICYgMHgzRikpKTsKKyAgICAg
ICAgICAgIG9zLlB1dChzdGF0aWNfY2FzdDxDaD4oMHg4MCB8ICgoY29kZXBvaW50ID4+IDYpICYg
MHgzRikpKTsKKyAgICAgICAgICAgIG9zLlB1dChzdGF0aWNfY2FzdDxDaD4oMHg4MCB8IChjb2Rl
cG9pbnQgJiAweDNGKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIElucHV0U3RyZWFtPgorICAgIHN0YXRpYyBib29sIERlY29kZShJbnB1dFN0cmVhbSYgaXMs
IHVuc2lnbmVkKiBjb2RlcG9pbnQpIHsKKyNkZWZpbmUgQ09QWSgpIGMgPSBpcy5UYWtlKCk7ICpj
b2RlcG9pbnQgPSAoKmNvZGVwb2ludCA8PCA2KSB8ICgodW5zaWduZWQgY2hhciljICYgMHgzRnUp
CisjZGVmaW5lIFRSQU5TKG1hc2spIHJlc3VsdCAmPSAoKEdldFJhbmdlKCh1bnNpZ25lZCBjaGFy
KWMpICYgbWFzaykgIT0gMCkKKyNkZWZpbmUgVEFJTCgpIENPUFkoKTsgVFJBTlMoMHg3MCkKKyAg
ICAgICAgQ2ggYyA9IGlzLlRha2UoKTsKKyAgICAgICAgaWYgKCEoYyAmIDB4ODApKSB7CisgICAg
ICAgICAgICAqY29kZXBvaW50ID0gKHVuc2lnbmVkIGNoYXIpYzsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgdW5zaWduZWQgY2hhciB0eXBlID0gR2V0UmFu
Z2UoKHVuc2lnbmVkIGNoYXIpYyk7CisgICAgICAgICpjb2RlcG9pbnQgPSAoMHhGRiA+PiB0eXBl
KSAmICh1bnNpZ25lZCBjaGFyKWM7CisgICAgICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKKyAgICAg
ICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgMjogVEFJTCgpOyByZXR1cm4gcmVzdWx0
OworICAgICAgICBjYXNlIDM6IFRBSUwoKTsgVEFJTCgpOyByZXR1cm4gcmVzdWx0OworICAgICAg
ICBjYXNlIDQ6IENPUFkoKTsgVFJBTlMoMHg1MCk7IFRBSUwoKTsgcmV0dXJuIHJlc3VsdDsKKyAg
ICAgICAgY2FzZSA1OiBDT1BZKCk7IFRSQU5TKDB4MTApOyBUQUlMKCk7IFRBSUwoKTsgcmV0dXJu
IHJlc3VsdDsKKyAgICAgICAgY2FzZSA2OiBUQUlMKCk7IFRBSUwoKTsgVEFJTCgpOyByZXR1cm4g
cmVzdWx0OworICAgICAgICBjYXNlIDEwOiBDT1BZKCk7IFRSQU5TKDB4MjApOyBUQUlMKCk7IHJl
dHVybiByZXN1bHQ7CisgICAgICAgIGNhc2UgMTE6IENPUFkoKTsgVFJBTlMoMHg2MCk7IFRBSUwo
KTsgVEFJTCgpOyByZXR1cm4gcmVzdWx0OworICAgICAgICBkZWZhdWx0OiByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyN1bmRlZiBDT1BZCisjdW5kZWYgVFJBTlMKKyN1bmRlZiBUQUlMCisgICAg
fQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0U3RyZWFtLCB0eXBlbmFtZSBPdXRwdXRT
dHJlYW0+CisgICAgc3RhdGljIGJvb2wgVmFsaWRhdGUoSW5wdXRTdHJlYW0mIGlzLCBPdXRwdXRT
dHJlYW0mIG9zKSB7CisjZGVmaW5lIENPUFkoKSBvcy5QdXQoYyA9IGlzLlRha2UoKSkKKyNkZWZp
bmUgVFJBTlMobWFzaykgcmVzdWx0ICY9ICgoR2V0UmFuZ2UoKHVuc2lnbmVkIGNoYXIpYykgJiBt
YXNrKSAhPSAwKQorI2RlZmluZSBUQUlMKCkgQ09QWSgpOyBUUkFOUygweDcwKQorICAgICAgICBD
aCBjOworICAgICAgICBDT1BZKCk7CisgICAgICAgIGlmICghKGMgJiAweDgwKSkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAg
c3dpdGNoIChHZXRSYW5nZSgodW5zaWduZWQgY2hhciljKSkgeworICAgICAgICBjYXNlIDI6IFRB
SUwoKTsgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgY2FzZSAzOiBUQUlMKCk7IFRBSUwoKTsgcmV0
dXJuIHJlc3VsdDsKKyAgICAgICAgY2FzZSA0OiBDT1BZKCk7IFRSQU5TKDB4NTApOyBUQUlMKCk7
IHJldHVybiByZXN1bHQ7CisgICAgICAgIGNhc2UgNTogQ09QWSgpOyBUUkFOUygweDEwKTsgVEFJ
TCgpOyBUQUlMKCk7IHJldHVybiByZXN1bHQ7CisgICAgICAgIGNhc2UgNjogVEFJTCgpOyBUQUlM
KCk7IFRBSUwoKTsgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgY2FzZSAxMDogQ09QWSgpOyBUUkFO
UygweDIwKTsgVEFJTCgpOyByZXR1cm4gcmVzdWx0OworICAgICAgICBjYXNlIDExOiBDT1BZKCk7
IFRSQU5TKDB4NjApOyBUQUlMKCk7IFRBSUwoKTsgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgZGVm
YXVsdDogcmV0dXJuIGZhbHNlOworICAgICAgICB9CisjdW5kZWYgQ09QWQorI3VuZGVmIFRSQU5T
CisjdW5kZWYgVEFJTAorICAgIH0KKworICAgIHN0YXRpYyB1bnNpZ25lZCBjaGFyIEdldFJhbmdl
KHVuc2lnbmVkIGNoYXIgYykgeworICAgICAgICAvLyBSZWZlcnJpbmcgdG8gREZBIG9mIGh0dHA6
Ly9iam9lcm4uaG9laHJtYW5uLmRlL3V0Zi04L2RlY29kZXIvZGZhLworICAgICAgICAvLyBXaXRo
IG5ldyBtYXBwaW5nIDEgLT4gMHgxMCwgNyAtPiAweDIwLCA5IC0+IDB4NDAsIHN1Y2ggdGhhdCBB
TkQgb3BlcmF0aW9uIGNhbiB0ZXN0IG11bHRpcGxlIHR5cGVzLgorICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgY2hhciB0eXBlW10gPSB7CisgICAgICAgICAgICAwLDAsMCwwLDAsMCwwLDAs
MCwwLDAsMCwwLDAsMCwwLCAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwKKyAgICAg
ICAgICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsICAwLDAsMCwwLDAsMCwwLDAs
MCwwLDAsMCwwLDAsMCwwLAorICAgICAgICAgICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCww
LDAsMCwgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCisgICAgICAgICAgICAwLDAs
MCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLCAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCww
LDAsMCwKKyAgICAgICAgICAgIDB4MTAsMHgxMCwweDEwLDB4MTAsMHgxMCwweDEwLDB4MTAsMHgx
MCwweDEwLDB4MTAsMHgxMCwweDEwLDB4MTAsMHgxMCwweDEwLDB4MTAsCisgICAgICAgICAgICAw
eDQwLDB4NDAsMHg0MCwweDQwLDB4NDAsMHg0MCwweDQwLDB4NDAsMHg0MCwweDQwLDB4NDAsMHg0
MCwweDQwLDB4NDAsMHg0MCwweDQwLAorICAgICAgICAgICAgMHgyMCwweDIwLDB4MjAsMHgyMCww
eDIwLDB4MjAsMHgyMCwweDIwLDB4MjAsMHgyMCwweDIwLDB4MjAsMHgyMCwweDIwLDB4MjAsMHgy
MCwKKyAgICAgICAgICAgIDB4MjAsMHgyMCwweDIwLDB4MjAsMHgyMCwweDIwLDB4MjAsMHgyMCww
eDIwLDB4MjAsMHgyMCwweDIwLDB4MjAsMHgyMCwweDIwLDB4MjAsCisgICAgICAgICAgICA4LDgs
MiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLCAgMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwy
LDIsMiwKKyAgICAgICAgICAgIDEwLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDQsMywzLCAxMSw2
LDYsNiw1LDgsOCw4LDgsOCw4LDgsOCw4LDgsOCwKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJu
IHR5cGVbY107CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0Qnl0ZVN0cmVh
bT4KKyAgICBzdGF0aWMgQ2hhclR5cGUgVGFrZUJPTShJbnB1dEJ5dGVTdHJlYW0mIGlzKSB7Cisg
ICAgICAgIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHNpemVvZih0eXBlbmFtZSBJbnB1dEJ5dGVT
dHJlYW06OkNoKSA9PSAxKTsKKyAgICAgICAgQ2ggYyA9IFRha2UoaXMpOworICAgICAgICBpZiAo
KHVuc2lnbmVkIGNoYXIpYyAhPSAweEVGdSkgcmV0dXJuIGM7CisgICAgICAgIGMgPSBpcy5UYWtl
KCk7CisgICAgICAgIGlmICgodW5zaWduZWQgY2hhciljICE9IDB4QkJ1KSByZXR1cm4gYzsKKyAg
ICAgICAgYyA9IGlzLlRha2UoKTsKKyAgICAgICAgaWYgKCh1bnNpZ25lZCBjaGFyKWMgIT0gMHhC
RnUpIHJldHVybiBjOworICAgICAgICBjID0gaXMuVGFrZSgpOworICAgICAgICByZXR1cm4gYzsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRCeXRlU3RyZWFtPgorICAgIHN0
YXRpYyBDaCBUYWtlKElucHV0Qnl0ZVN0cmVhbSYgaXMpIHsKKyAgICAgICAgUkFQSURKU09OX1NU
QVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIElucHV0Qnl0ZVN0cmVhbTo6Q2gpID09IDEpOwor
ICAgICAgICByZXR1cm4gaXMuVGFrZSgpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBPdXRwdXRCeXRlU3RyZWFtPgorICAgIHN0YXRpYyB2b2lkIFB1dEJPTShPdXRwdXRCeXRlU3Ry
ZWFtJiBvcykgeworICAgICAgICBSQVBJREpTT05fU1RBVElDX0FTU0VSVChzaXplb2YodHlwZW5h
bWUgT3V0cHV0Qnl0ZVN0cmVhbTo6Q2gpID09IDEpOworICAgICAgICBvcy5QdXQoMHhFRnUpOyBv
cy5QdXQoMHhCQnUpOyBvcy5QdXQoMHhCRnUpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBPdXRwdXRCeXRlU3RyZWFtPgorICAgIHN0YXRpYyB2b2lkIFB1dChPdXRwdXRCeXRlU3Ry
ZWFtJiBvcywgQ2ggYykgeworICAgICAgICBSQVBJREpTT05fU1RBVElDX0FTU0VSVChzaXplb2Yo
dHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVhbTo6Q2gpID09IDEpOworICAgICAgICBvcy5QdXQoc3Rh
dGljX2Nhc3Q8dHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVhbTo6Q2g+KGMpKTsKKyAgICB9Cit9Owor
CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBVVEYxNgorCisvLyEgVVRGLTE2IGVuY29kaW5n
LgorLyohIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVVRGLTE2CisgICAgaHR0cDovL3Rv
b2xzLmlldGYub3JnL2h0bWwvcmZjMjc4MQorICAgIFx0cGFyYW0gQ2hhclR5cGUgVHlwZSBmb3Ig
c3RvcmluZyAxNi1iaXQgVVRGLTE2IGRhdGEuIERlZmF1bHQgaXMgd2NoYXJfdC4gQysrMTEgbWF5
IHVzZSBjaGFyMTZfdCBpbnN0ZWFkLgorICAgIFxub3RlIGltcGxlbWVudHMgRW5jb2RpbmcgY29u
Y2VwdAorCisgICAgXG5vdGUgRm9yIGluLW1lbW9yeSBhY2Nlc3MsIG5vIG5lZWQgdG8gY29uY2Vy
biBlbmRpYW5uZXNzLiBUaGUgY29kZSB1bml0cyBhbmQgY29kZSBwb2ludHMgYXJlIHJlcHJlc2Vu
dGVkIGJ5IENQVSdzIGVuZGlhbm5lc3MuCisgICAgRm9yIHN0cmVhbWluZywgdXNlIFVURjE2TEUg
YW5kIFVURjE2QkUsIHdoaWNoIGhhbmRsZSBlbmRpYW5uZXNzLgorKi8KK3RlbXBsYXRlPHR5cGVu
YW1lIENoYXJUeXBlID0gd2NoYXJfdD4KK3N0cnVjdCBVVEYxNiB7CisgICAgdHlwZWRlZiBDaGFy
VHlwZSBDaDsKKyAgICBSQVBJREpTT05fU1RBVElDX0FTU0VSVChzaXplb2YoQ2gpID49IDIpOwor
CisgICAgZW51bSB7IHN1cHBvcnRVbmljb2RlID0gMSB9OworCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3V0cHV0U3RyZWFtPgorICAgIHN0YXRpYyB2b2lkIEVuY29kZShPdXRwdXRTdHJlYW0mIG9z
LCB1bnNpZ25lZCBjb2RlcG9pbnQpIHsKKyAgICAgICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQo
c2l6ZW9mKHR5cGVuYW1lIE91dHB1dFN0cmVhbTo6Q2gpID49IDIpOworICAgICAgICBpZiAoY29k
ZXBvaW50IDw9IDB4RkZGRikgeworICAgICAgICAgICAgUkFQSURKU09OX0FTU0VSVChjb2RlcG9p
bnQgPCAweEQ4MDAgfHwgY29kZXBvaW50ID4gMHhERkZGKTsgLy8gQ29kZSBwb2ludCBpdHNlbGYg
Y2Fubm90IGJlIHN1cnJvZ2F0ZSBwYWlyIAorICAgICAgICAgICAgb3MuUHV0KHN0YXRpY19jYXN0
PHR5cGVuYW1lIE91dHB1dFN0cmVhbTo6Q2g+KGNvZGVwb2ludCkpOworICAgICAgICB9CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgUkFQSURKU09OX0FTU0VSVChjb2RlcG9pbnQgPD0gMHgx
MEZGRkYpOworICAgICAgICAgICAgdW5zaWduZWQgdiA9IGNvZGVwb2ludCAtIDB4MTAwMDA7Cisg
ICAgICAgICAgICBvcy5QdXQoc3RhdGljX2Nhc3Q8dHlwZW5hbWUgT3V0cHV0U3RyZWFtOjpDaD4o
KHYgPj4gMTApIHwgMHhEODAwKSk7CisgICAgICAgICAgICBvcy5QdXQoKHYgJiAweDNGRikgfCAw
eERDMDApOworICAgICAgICB9CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0
U3RyZWFtPgorICAgIHN0YXRpYyBib29sIERlY29kZShJbnB1dFN0cmVhbSYgaXMsIHVuc2lnbmVk
KiBjb2RlcG9pbnQpIHsKKyAgICAgICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5
cGVuYW1lIElucHV0U3RyZWFtOjpDaCkgPj0gMik7CisgICAgICAgIENoIGMgPSBpcy5UYWtlKCk7
CisgICAgICAgIGlmIChjIDwgMHhEODAwIHx8IGMgPiAweERGRkYpIHsKKyAgICAgICAgICAgICpj
b2RlcG9pbnQgPSBjOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZSBpZiAoYyA8PSAweERCRkYpIHsKKyAgICAgICAgICAgICpjb2RlcG9pbnQgPSAoYyAm
IDB4M0ZGKSA8PCAxMDsKKyAgICAgICAgICAgIGMgPSBpcy5UYWtlKCk7CisgICAgICAgICAgICAq
Y29kZXBvaW50IHw9IChjICYgMHgzRkYpOworICAgICAgICAgICAgKmNvZGVwb2ludCArPSAweDEw
MDAwOworICAgICAgICAgICAgcmV0dXJuIGMgPj0gMHhEQzAwICYmIGMgPD0gMHhERkZGOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSW5wdXRTdHJlYW0sIHR5cGVuYW1lIE91dHB1dFN0cmVhbT4KKyAgICBzdGF0aWMgYm9v
bCBWYWxpZGF0ZShJbnB1dFN0cmVhbSYgaXMsIE91dHB1dFN0cmVhbSYgb3MpIHsKKyAgICAgICAg
UkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIElucHV0U3RyZWFtOjpDaCkg
Pj0gMik7CisgICAgICAgIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHNpemVvZih0eXBlbmFtZSBP
dXRwdXRTdHJlYW06OkNoKSA+PSAyKTsKKyAgICAgICAgQ2ggYzsKKyAgICAgICAgb3MuUHV0KGMg
PSBpcy5UYWtlKCkpOworICAgICAgICBpZiAoYyA8IDB4RDgwMCB8fCBjID4gMHhERkZGKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGVsc2UgaWYgKGMgPD0gMHhEQkZGKSB7Cisg
ICAgICAgICAgICBvcy5QdXQoYyA9IGlzLlRha2UoKSk7CisgICAgICAgICAgICByZXR1cm4gYyA+
PSAweERDMDAgJiYgYyA8PSAweERGRkY7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KK307CisKKy8vISBVVEYtMTYgbGl0dGxlIGVuZGlhbiBlbmNvZGluZy4KK3RlbXBs
YXRlPHR5cGVuYW1lIENoYXJUeXBlID0gd2NoYXJfdD4KK3N0cnVjdCBVVEYxNkxFIDogVVRGMTY8
Q2hhclR5cGU+IHsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRCeXRlU3RyZWFtPgorICAg
IHN0YXRpYyBDaGFyVHlwZSBUYWtlQk9NKElucHV0Qnl0ZVN0cmVhbSYgaXMpIHsKKyAgICAgICAg
UkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIElucHV0Qnl0ZVN0cmVhbTo6
Q2gpID09IDEpOworICAgICAgICBDaGFyVHlwZSBjID0gVGFrZShpcyk7CisgICAgICAgIHJldHVy
biAodW5zaWduZWQgc2hvcnQpYyA9PSAweEZFRkZ1ID8gVGFrZShpcykgOiBjOworICAgIH0KKwor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEJ5dGVTdHJlYW0+CisgICAgc3RhdGljIENoYXJU
eXBlIFRha2UoSW5wdXRCeXRlU3RyZWFtJiBpcykgeworICAgICAgICBSQVBJREpTT05fU1RBVElD
X0FTU0VSVChzaXplb2YodHlwZW5hbWUgSW5wdXRCeXRlU3RyZWFtOjpDaCkgPT0gMSk7CisgICAg
ICAgIENoYXJUeXBlIGMgPSAodW5zaWduZWQgY2hhcilpcy5UYWtlKCk7CisgICAgICAgIGMgfD0g
KHVuc2lnbmVkIGNoYXIpaXMuVGFrZSgpIDw8IDg7CisgICAgICAgIHJldHVybiBjOworICAgIH0K
KworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPdXRwdXRCeXRlU3RyZWFtPgorICAgIHN0YXRpYyB2
b2lkIFB1dEJPTShPdXRwdXRCeXRlU3RyZWFtJiBvcykgeworICAgICAgICBSQVBJREpTT05fU1RB
VElDX0FTU0VSVChzaXplb2YodHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVhbTo6Q2gpID09IDEpOwor
ICAgICAgICBvcy5QdXQoMHhGRnUpOyBvcy5QdXQoMHhGRXUpOworICAgIH0KKworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBPdXRwdXRCeXRlU3RyZWFtPgorICAgIHN0YXRpYyB2b2lkIFB1dChPdXRw
dXRCeXRlU3RyZWFtJiBvcywgQ2hhclR5cGUgYykgeworICAgICAgICBSQVBJREpTT05fU1RBVElD
X0FTU0VSVChzaXplb2YodHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVhbTo6Q2gpID09IDEpOworICAg
ICAgICBvcy5QdXQoYyAmIDB4RkZ1KTsKKyAgICAgICAgb3MuUHV0KChjID4+IDgpICYgMHhGRnUp
OworICAgIH0KK307CisKKy8vISBVVEYtMTYgYmlnIGVuZGlhbiBlbmNvZGluZy4KK3RlbXBsYXRl
PHR5cGVuYW1lIENoYXJUeXBlID0gd2NoYXJfdD4KK3N0cnVjdCBVVEYxNkJFIDogVVRGMTY8Q2hh
clR5cGU+IHsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRCeXRlU3RyZWFtPgorICAgIHN0
YXRpYyBDaGFyVHlwZSBUYWtlQk9NKElucHV0Qnl0ZVN0cmVhbSYgaXMpIHsKKyAgICAgICAgUkFQ
SURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIElucHV0Qnl0ZVN0cmVhbTo6Q2gp
ID09IDEpOworICAgICAgICBDaGFyVHlwZSBjID0gVGFrZShpcyk7CisgICAgICAgIHJldHVybiAo
dW5zaWduZWQgc2hvcnQpYyA9PSAweEZFRkZ1ID8gVGFrZShpcykgOiBjOworICAgIH0KKworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEJ5dGVTdHJlYW0+CisgICAgc3RhdGljIENoYXJUeXBl
IFRha2UoSW5wdXRCeXRlU3RyZWFtJiBpcykgeworICAgICAgICBSQVBJREpTT05fU1RBVElDX0FT
U0VSVChzaXplb2YodHlwZW5hbWUgSW5wdXRCeXRlU3RyZWFtOjpDaCkgPT0gMSk7CisgICAgICAg
IENoYXJUeXBlIGMgPSAodW5zaWduZWQgY2hhcilpcy5UYWtlKCkgPDwgODsKKyAgICAgICAgYyB8
PSAodW5zaWduZWQgY2hhcilpcy5UYWtlKCk7CisgICAgICAgIHJldHVybiBjOworICAgIH0KKwor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPdXRwdXRCeXRlU3RyZWFtPgorICAgIHN0YXRpYyB2b2lk
IFB1dEJPTShPdXRwdXRCeXRlU3RyZWFtJiBvcykgeworICAgICAgICBSQVBJREpTT05fU1RBVElD
X0FTU0VSVChzaXplb2YodHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVhbTo6Q2gpID09IDEpOworICAg
ICAgICBvcy5QdXQoMHhGRXUpOyBvcy5QdXQoMHhGRnUpOworICAgIH0KKworICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBPdXRwdXRCeXRlU3RyZWFtPgorICAgIHN0YXRpYyB2b2lkIFB1dChPdXRwdXRC
eXRlU3RyZWFtJiBvcywgQ2hhclR5cGUgYykgeworICAgICAgICBSQVBJREpTT05fU1RBVElDX0FT
U0VSVChzaXplb2YodHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVhbTo6Q2gpID09IDEpOworICAgICAg
ICBvcy5QdXQoKGMgPj4gOCkgJiAweEZGdSk7CisgICAgICAgIG9zLlB1dChjICYgMHhGRnUpOwor
ICAgIH0KK307CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIFVURjMyCisKKy8vISBVVEYt
MzIgZW5jb2RpbmcuIAorLyohIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVVRGLTMyCisg
ICAgXHRwYXJhbSBDaGFyVHlwZSBUeXBlIGZvciBzdG9yaW5nIDMyLWJpdCBVVEYtMzIgZGF0YS4g
RGVmYXVsdCBpcyB1bnNpZ25lZC4gQysrMTEgbWF5IHVzZSBjaGFyMzJfdCBpbnN0ZWFkLgorICAg
IFxub3RlIGltcGxlbWVudHMgRW5jb2RpbmcgY29uY2VwdAorCisgICAgXG5vdGUgRm9yIGluLW1l
bW9yeSBhY2Nlc3MsIG5vIG5lZWQgdG8gY29uY2VybiBlbmRpYW5uZXNzLiBUaGUgY29kZSB1bml0
cyBhbmQgY29kZSBwb2ludHMgYXJlIHJlcHJlc2VudGVkIGJ5IENQVSdzIGVuZGlhbm5lc3MuCisg
ICAgRm9yIHN0cmVhbWluZywgdXNlIFVURjMyTEUgYW5kIFVURjMyQkUsIHdoaWNoIGhhbmRsZSBl
bmRpYW5uZXNzLgorKi8KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlID0gdW5zaWduZWQ+Citz
dHJ1Y3QgVVRGMzIgeworICAgIHR5cGVkZWYgQ2hhclR5cGUgQ2g7CisgICAgUkFQSURKU09OX1NU
QVRJQ19BU1NFUlQoc2l6ZW9mKENoKSA+PSA0KTsKKworICAgIGVudW0geyBzdXBwb3J0VW5pY29k
ZSA9IDEgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE91dHB1dFN0cmVhbT4KKyAgICBzdGF0
aWMgdm9pZCBFbmNvZGUoT3V0cHV0U3RyZWFtJiBvcywgdW5zaWduZWQgY29kZXBvaW50KSB7Cisg
ICAgICAgIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHNpemVvZih0eXBlbmFtZSBPdXRwdXRTdHJl
YW06OkNoKSA+PSA0KTsKKyAgICAgICAgUkFQSURKU09OX0FTU0VSVChjb2RlcG9pbnQgPD0gMHgx
MEZGRkYpOworICAgICAgICBvcy5QdXQoY29kZXBvaW50KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgSW5wdXRTdHJlYW0+CisgICAgc3RhdGljIGJvb2wgRGVjb2RlKElucHV0U3Ry
ZWFtJiBpcywgdW5zaWduZWQqIGNvZGVwb2ludCkgeworICAgICAgICBSQVBJREpTT05fU1RBVElD
X0FTU0VSVChzaXplb2YodHlwZW5hbWUgSW5wdXRTdHJlYW06OkNoKSA+PSA0KTsKKyAgICAgICAg
Q2ggYyA9IGlzLlRha2UoKTsKKyAgICAgICAgKmNvZGVwb2ludCA9IGM7CisgICAgICAgIHJldHVy
biBjIDw9IDB4MTBGRkZGOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dFN0
cmVhbSwgdHlwZW5hbWUgT3V0cHV0U3RyZWFtPgorICAgIHN0YXRpYyBib29sIFZhbGlkYXRlKElu
cHV0U3RyZWFtJiBpcywgT3V0cHV0U3RyZWFtJiBvcykgeworICAgICAgICBSQVBJREpTT05fU1RB
VElDX0FTU0VSVChzaXplb2YodHlwZW5hbWUgSW5wdXRTdHJlYW06OkNoKSA+PSA0KTsKKyAgICAg
ICAgQ2ggYzsKKyAgICAgICAgb3MuUHV0KGMgPSBpcy5UYWtlKCkpOworICAgICAgICByZXR1cm4g
YyA8PSAweDEwRkZGRjsKKyAgICB9Cit9OworCisvLyEgVVRGLTMyIGxpdHRsZSBlbmRpYW4gZW5v
Y29kaW5nLgordGVtcGxhdGU8dHlwZW5hbWUgQ2hhclR5cGUgPSB1bnNpZ25lZD4KK3N0cnVjdCBV
VEYzMkxFIDogVVRGMzI8Q2hhclR5cGU+IHsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRC
eXRlU3RyZWFtPgorICAgIHN0YXRpYyBDaGFyVHlwZSBUYWtlQk9NKElucHV0Qnl0ZVN0cmVhbSYg
aXMpIHsKKyAgICAgICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIElu
cHV0Qnl0ZVN0cmVhbTo6Q2gpID09IDEpOworICAgICAgICBDaGFyVHlwZSBjID0gVGFrZShpcyk7
CisgICAgICAgIHJldHVybiAodW5zaWduZWQpYyA9PSAweDAwMDBGRUZGdSA/IFRha2UoaXMpIDog
YzsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRCeXRlU3RyZWFtPgorICAg
IHN0YXRpYyBDaGFyVHlwZSBUYWtlKElucHV0Qnl0ZVN0cmVhbSYgaXMpIHsKKyAgICAgICAgUkFQ
SURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIElucHV0Qnl0ZVN0cmVhbTo6Q2gp
ID09IDEpOworICAgICAgICBDaGFyVHlwZSBjID0gKHVuc2lnbmVkIGNoYXIpaXMuVGFrZSgpOwor
ICAgICAgICBjIHw9ICh1bnNpZ25lZCBjaGFyKWlzLlRha2UoKSA8PCA4OworICAgICAgICBjIHw9
ICh1bnNpZ25lZCBjaGFyKWlzLlRha2UoKSA8PCAxNjsKKyAgICAgICAgYyB8PSAodW5zaWduZWQg
Y2hhcilpcy5UYWtlKCkgPDwgMjQ7CisgICAgICAgIHJldHVybiBjOworICAgIH0KKworICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBPdXRwdXRCeXRlU3RyZWFtPgorICAgIHN0YXRpYyB2b2lkIFB1dEJP
TShPdXRwdXRCeXRlU3RyZWFtJiBvcykgeworICAgICAgICBSQVBJREpTT05fU1RBVElDX0FTU0VS
VChzaXplb2YodHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVhbTo6Q2gpID09IDEpOworICAgICAgICBv
cy5QdXQoMHhGRnUpOyBvcy5QdXQoMHhGRXUpOyBvcy5QdXQoMHgwMHUpOyBvcy5QdXQoMHgwMHUp
OworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPdXRwdXRCeXRlU3RyZWFtPgorICAg
IHN0YXRpYyB2b2lkIFB1dChPdXRwdXRCeXRlU3RyZWFtJiBvcywgQ2hhclR5cGUgYykgeworICAg
ICAgICBSQVBJREpTT05fU1RBVElDX0FTU0VSVChzaXplb2YodHlwZW5hbWUgT3V0cHV0Qnl0ZVN0
cmVhbTo6Q2gpID09IDEpOworICAgICAgICBvcy5QdXQoYyAmIDB4RkZ1KTsKKyAgICAgICAgb3Mu
UHV0KChjID4+IDgpICYgMHhGRnUpOworICAgICAgICBvcy5QdXQoKGMgPj4gMTYpICYgMHhGRnUp
OworICAgICAgICBvcy5QdXQoKGMgPj4gMjQpICYgMHhGRnUpOworICAgIH0KK307CisKKy8vISBV
VEYtMzIgYmlnIGVuZGlhbiBlbmNvZGluZy4KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlID0g
dW5zaWduZWQ+CitzdHJ1Y3QgVVRGMzJCRSA6IFVURjMyPENoYXJUeXBlPiB7CisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIElucHV0Qnl0ZVN0cmVhbT4KKyAgICBzdGF0aWMgQ2hhclR5cGUgVGFrZUJP
TShJbnB1dEJ5dGVTdHJlYW0mIGlzKSB7CisgICAgICAgIFJBUElESlNPTl9TVEFUSUNfQVNTRVJU
KHNpemVvZih0eXBlbmFtZSBJbnB1dEJ5dGVTdHJlYW06OkNoKSA9PSAxKTsKKyAgICAgICAgQ2hh
clR5cGUgYyA9IFRha2UoaXMpOworICAgICAgICByZXR1cm4gKHVuc2lnbmVkKWMgPT0gMHgwMDAw
RkVGRnUgPyBUYWtlKGlzKSA6IGM7IAorICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJ
bnB1dEJ5dGVTdHJlYW0+CisgICAgc3RhdGljIENoYXJUeXBlIFRha2UoSW5wdXRCeXRlU3RyZWFt
JiBpcykgeworICAgICAgICBSQVBJREpTT05fU1RBVElDX0FTU0VSVChzaXplb2YodHlwZW5hbWUg
SW5wdXRCeXRlU3RyZWFtOjpDaCkgPT0gMSk7CisgICAgICAgIENoYXJUeXBlIGMgPSAodW5zaWdu
ZWQgY2hhcilpcy5UYWtlKCkgPDwgMjQ7CisgICAgICAgIGMgfD0gKHVuc2lnbmVkIGNoYXIpaXMu
VGFrZSgpIDw8IDE2OworICAgICAgICBjIHw9ICh1bnNpZ25lZCBjaGFyKWlzLlRha2UoKSA8PCA4
OworICAgICAgICBjIHw9ICh1bnNpZ25lZCBjaGFyKWlzLlRha2UoKTsKKyAgICAgICAgcmV0dXJu
IGM7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE91dHB1dEJ5dGVTdHJlYW0+Cisg
ICAgc3RhdGljIHZvaWQgUHV0Qk9NKE91dHB1dEJ5dGVTdHJlYW0mIG9zKSB7CisgICAgICAgIFJB
UElESlNPTl9TVEFUSUNfQVNTRVJUKHNpemVvZih0eXBlbmFtZSBPdXRwdXRCeXRlU3RyZWFtOjpD
aCkgPT0gMSk7CisgICAgICAgIG9zLlB1dCgweDAwdSk7IG9zLlB1dCgweDAwdSk7IG9zLlB1dCgw
eEZFdSk7IG9zLlB1dCgweEZGdSk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE91
dHB1dEJ5dGVTdHJlYW0+CisgICAgc3RhdGljIHZvaWQgUHV0KE91dHB1dEJ5dGVTdHJlYW0mIG9z
LCBDaGFyVHlwZSBjKSB7CisgICAgICAgIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHNpemVvZih0
eXBlbmFtZSBPdXRwdXRCeXRlU3RyZWFtOjpDaCkgPT0gMSk7CisgICAgICAgIG9zLlB1dCgoYyA+
PiAyNCkgJiAweEZGdSk7CisgICAgICAgIG9zLlB1dCgoYyA+PiAxNikgJiAweEZGdSk7CisgICAg
ICAgIG9zLlB1dCgoYyA+PiA4KSAmIDB4RkZ1KTsKKyAgICAgICAgb3MuUHV0KGMgJiAweEZGdSk7
CisgICAgfQorfTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gQVNDSUkKKworLy8hIEFT
Q0lJIGVuY29kaW5nLgorLyohIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQVNDSUkKKyAg
ICBcdHBhcmFtIENoYXJUeXBlIENvZGUgdW5pdCBmb3Igc3RvcmluZyA3LWJpdCBBU0NJSSBkYXRh
LiBEZWZhdWx0IGlzIGNoYXIuCisgICAgXG5vdGUgaW1wbGVtZW50cyBFbmNvZGluZyBjb25jZXB0
CisqLwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhclR5cGUgPSBjaGFyPgorc3RydWN0IEFTQ0lJIHsK
KyAgICB0eXBlZGVmIENoYXJUeXBlIENoOworCisgICAgZW51bSB7IHN1cHBvcnRVbmljb2RlID0g
MCB9OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3V0cHV0U3RyZWFtPgorICAgIHN0YXRpYyB2
b2lkIEVuY29kZShPdXRwdXRTdHJlYW0mIG9zLCB1bnNpZ25lZCBjb2RlcG9pbnQpIHsKKyAgICAg
ICAgUkFQSURKU09OX0FTU0VSVChjb2RlcG9pbnQgPD0gMHg3Rik7CisgICAgICAgIG9zLlB1dChz
dGF0aWNfY2FzdDxDaD4oY29kZXBvaW50ICYgMHhGRikpOworICAgIH0KKworICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBJbnB1dFN0cmVhbT4KKyAgICBzdGF0aWMgYm9vbCBEZWNvZGUoSW5wdXRTdHJl
YW0mIGlzLCB1bnNpZ25lZCogY29kZXBvaW50KSB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGlzLlRha2UoKSk7CisgICAgICAgICpjb2RlcG9p
bnQgPSBjOworICAgICAgICByZXR1cm4gYyA8PSAwWDdGOworICAgIH0KKworICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBJbnB1dFN0cmVhbSwgdHlwZW5hbWUgT3V0cHV0U3RyZWFtPgorICAgIHN0YXRp
YyBib29sIFZhbGlkYXRlKElucHV0U3RyZWFtJiBpcywgT3V0cHV0U3RyZWFtJiBvcykgeworICAg
ICAgICB1bnNpZ25lZCBjaGFyIGMgPSBpcy5UYWtlKCk7CisgICAgICAgIG9zLlB1dChjKTsKKyAg
ICAgICAgcmV0dXJuIGMgPD0gMHg3RjsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
SW5wdXRCeXRlU3RyZWFtPgorICAgIHN0YXRpYyBDaGFyVHlwZSBUYWtlQk9NKElucHV0Qnl0ZVN0
cmVhbSYgaXMpIHsKKyAgICAgICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVu
YW1lIElucHV0Qnl0ZVN0cmVhbTo6Q2gpID09IDEpOworICAgICAgICBDaCBjID0gVGFrZShpcyk7
CisgICAgICAgIHJldHVybiBjOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1
dEJ5dGVTdHJlYW0+CisgICAgc3RhdGljIENoIFRha2UoSW5wdXRCeXRlU3RyZWFtJiBpcykgewor
ICAgICAgICBSQVBJREpTT05fU1RBVElDX0FTU0VSVChzaXplb2YodHlwZW5hbWUgSW5wdXRCeXRl
U3RyZWFtOjpDaCkgPT0gMSk7CisgICAgICAgIHJldHVybiBpcy5UYWtlKCk7CisgICAgfQorCisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIE91dHB1dEJ5dGVTdHJlYW0+CisgICAgc3RhdGljIHZvaWQg
UHV0Qk9NKE91dHB1dEJ5dGVTdHJlYW0mIG9zKSB7CisgICAgICAgIFJBUElESlNPTl9TVEFUSUNf
QVNTRVJUKHNpemVvZih0eXBlbmFtZSBPdXRwdXRCeXRlU3RyZWFtOjpDaCkgPT0gMSk7CisgICAg
ICAgICh2b2lkKW9zOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPdXRwdXRCeXRl
U3RyZWFtPgorICAgIHN0YXRpYyB2b2lkIFB1dChPdXRwdXRCeXRlU3RyZWFtJiBvcywgQ2ggYykg
eworICAgICAgICBSQVBJREpTT05fU1RBVElDX0FTU0VSVChzaXplb2YodHlwZW5hbWUgT3V0cHV0
Qnl0ZVN0cmVhbTo6Q2gpID09IDEpOworICAgICAgICBvcy5QdXQoc3RhdGljX2Nhc3Q8dHlwZW5h
bWUgT3V0cHV0Qnl0ZVN0cmVhbTo6Q2g+KGMpKTsKKyAgICB9Cit9OworCisvLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCisvLyBBdXRvVVRGCisKKy8vISBSdW50aW1lLXNwZWNpZmllZCBVVEYgZW5jb2Rp
bmcgdHlwZSBvZiBhIHN0cmVhbS4KK2VudW0gVVRGVHlwZSB7CisgICAga1VURjggPSAwLCAgICAg
IC8vITwgVVRGLTguCisgICAga1VURjE2TEUgPSAxLCAgIC8vITwgVVRGLTE2IGxpdHRsZSBlbmRp
YW4uCisgICAga1VURjE2QkUgPSAyLCAgIC8vITwgVVRGLTE2IGJpZyBlbmRpYW4uCisgICAga1VU
RjMyTEUgPSAzLCAgIC8vITwgVVRGLTMyIGxpdHRsZSBlbmRpYW4uCisgICAga1VURjMyQkUgPSA0
ICAgIC8vITwgVVRGLTMyIGJpZyBlbmRpYW4uCit9OworCisvLyEgRHluYW1pY2FsbHkgc2VsZWN0
IGVuY29kaW5nIGFjY29yZGluZyB0byBzdHJlYW0ncyBydW50aW1lLXNwZWNpZmllZCBVVEYgZW5j
b2RpbmcgdHlwZS4KKy8qISBcbm90ZSBUaGlzIGNsYXNzIGNhbiBiZSB1c2VkIHdpdGggQXV0b1VU
RklucHV0dFN0cmVhbSBhbmQgQXV0b1VURk91dHB1dFN0cmVhbSwgd2hpY2ggcHJvdmlkZXMgR2V0
VHlwZSgpLgorKi8KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlPgorc3RydWN0IEF1dG9VVEYg
eworICAgIHR5cGVkZWYgQ2hhclR5cGUgQ2g7CisKKyAgICBlbnVtIHsgc3VwcG9ydFVuaWNvZGUg
PSAxIH07CisKKyNkZWZpbmUgUkFQSURKU09OX0VOQ09ESU5HU19GVU5DKHgpIFVURjg8Q2g+Ojp4
LCBVVEYxNkxFPENoPjo6eCwgVVRGMTZCRTxDaD46OngsIFVURjMyTEU8Q2g+Ojp4LCBVVEYzMkJF
PENoPjo6eAorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3V0cHV0U3RyZWFtPgorICAgIFJBUElE
SlNPTl9GT1JDRUlOTElORSBzdGF0aWMgdm9pZCBFbmNvZGUoT3V0cHV0U3RyZWFtJiBvcywgdW5z
aWduZWQgY29kZXBvaW50KSB7CisgICAgICAgIHR5cGVkZWYgdm9pZCAoKkVuY29kZUZ1bmMpKE91
dHB1dFN0cmVhbSYsIHVuc2lnbmVkKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IEVuY29kZUZ1bmMg
ZltdID0geyBSQVBJREpTT05fRU5DT0RJTkdTX0ZVTkMoRW5jb2RlKSB9OworICAgICAgICAoKmZb
b3MuR2V0VHlwZSgpXSkob3MsIGNvZGVwb2ludCk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIElucHV0U3RyZWFtPgorICAgIFJBUElESlNPTl9GT1JDRUlOTElORSBzdGF0aWMgYm9v
bCBEZWNvZGUoSW5wdXRTdHJlYW0mIGlzLCB1bnNpZ25lZCogY29kZXBvaW50KSB7CisgICAgICAg
IHR5cGVkZWYgYm9vbCAoKkRlY29kZUZ1bmMpKElucHV0U3RyZWFtJiwgdW5zaWduZWQqKTsKKyAg
ICAgICAgc3RhdGljIGNvbnN0IERlY29kZUZ1bmMgZltdID0geyBSQVBJREpTT05fRU5DT0RJTkdT
X0ZVTkMoRGVjb2RlKSB9OworICAgICAgICByZXR1cm4gKCpmW2lzLkdldFR5cGUoKV0pKGlzLCBj
b2RlcG9pbnQpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dFN0cmVhbSwg
dHlwZW5hbWUgT3V0cHV0U3RyZWFtPgorICAgIFJBUElESlNPTl9GT1JDRUlOTElORSBzdGF0aWMg
Ym9vbCBWYWxpZGF0ZShJbnB1dFN0cmVhbSYgaXMsIE91dHB1dFN0cmVhbSYgb3MpIHsKKyAgICAg
ICAgdHlwZWRlZiBib29sICgqVmFsaWRhdGVGdW5jKShJbnB1dFN0cmVhbSYsIE91dHB1dFN0cmVh
bSYpOworICAgICAgICBzdGF0aWMgY29uc3QgVmFsaWRhdGVGdW5jIGZbXSA9IHsgUkFQSURKU09O
X0VOQ09ESU5HU19GVU5DKFZhbGlkYXRlKSB9OworICAgICAgICByZXR1cm4gKCpmW2lzLkdldFR5
cGUoKV0pKGlzLCBvcyk7CisgICAgfQorCisjdW5kZWYgUkFQSURKU09OX0VOQ09ESU5HU19GVU5D
Cit9OworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBUcmFuc2NvZGVyCisKKy8vISBFbmNv
ZGluZyBjb252ZXJzaW9uLgordGVtcGxhdGU8dHlwZW5hbWUgU291cmNlRW5jb2RpbmcsIHR5cGVu
YW1lIFRhcmdldEVuY29kaW5nPgorc3RydWN0IFRyYW5zY29kZXIgeworICAgIC8vISBUYWtlIG9u
ZSBVbmljb2RlIGNvZGVwb2ludCBmcm9tIHNvdXJjZSBlbmNvZGluZywgY29udmVydCBpdCB0byB0
YXJnZXQgZW5jb2RpbmcgYW5kIHB1dCBpdCB0byB0aGUgb3V0cHV0IHN0cmVhbS4KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBJbnB1dFN0cmVhbSwgdHlwZW5hbWUgT3V0cHV0U3RyZWFtPgorICAgIFJB
UElESlNPTl9GT1JDRUlOTElORSBzdGF0aWMgYm9vbCBUcmFuc2NvZGUoSW5wdXRTdHJlYW0mIGlz
LCBPdXRwdXRTdHJlYW0mIG9zKSB7CisgICAgICAgIHVuc2lnbmVkIGNvZGVwb2ludDsKKyAgICAg
ICAgaWYgKCFTb3VyY2VFbmNvZGluZzo6RGVjb2RlKGlzLCAmY29kZXBvaW50KSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgVGFyZ2V0RW5jb2Rpbmc6OkVuY29kZShvcywgY29k
ZXBvaW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8hIFZhbGlkYXRl
IG9uZSBVbmljb2RlIGNvZGVwb2ludCBmcm9tIGFuIGVuY29kZWQgc3RyZWFtLgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIElucHV0U3RyZWFtLCB0eXBlbmFtZSBPdXRwdXRTdHJlYW0+CisgICAgUkFQ
SURKU09OX0ZPUkNFSU5MSU5FIHN0YXRpYyBib29sIFZhbGlkYXRlKElucHV0U3RyZWFtJiBpcywg
T3V0cHV0U3RyZWFtJiBvcykgeworICAgICAgICByZXR1cm4gVHJhbnNjb2RlKGlzLCBvcyk7ICAg
Ly8gU2luY2Ugc291cmNlL3RhcmdldCBlbmNvZGluZyBpcyBkaWZmZXJlbnQsIG11c3QgdHJhbnNj
b2RlLgorICAgIH0KK307CisKKy8vISBTcGVjaWFsaXphdGlvbiBvZiBUcmFuc2NvZGVyIHdpdGgg
c2FtZSBzb3VyY2UgYW5kIHRhcmdldCBlbmNvZGluZy4KK3RlbXBsYXRlPHR5cGVuYW1lIEVuY29k
aW5nPgorc3RydWN0IFRyYW5zY29kZXI8RW5jb2RpbmcsIEVuY29kaW5nPiB7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgSW5wdXRTdHJlYW0sIHR5cGVuYW1lIE91dHB1dFN0cmVhbT4KKyAgICBSQVBJ
REpTT05fRk9SQ0VJTkxJTkUgc3RhdGljIGJvb2wgVHJhbnNjb2RlKElucHV0U3RyZWFtJiBpcywg
T3V0cHV0U3RyZWFtJiBvcykgeworICAgICAgICBvcy5QdXQoaXMuVGFrZSgpKTsgIC8vIEp1c3Qg
Y29weSBvbmUgY29kZSB1bml0LiBUaGlzIHNlbWFudGljIGlzIGRpZmZlcmVudCBmcm9tIHByaW1h
cnkgdGVtcGxhdGUgY2xhc3MuCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnB1dFN0cmVhbSwgdHlwZW5hbWUgT3V0cHV0U3RyZWFtPgor
ICAgIFJBUElESlNPTl9GT1JDRUlOTElORSBzdGF0aWMgYm9vbCBWYWxpZGF0ZShJbnB1dFN0cmVh
bSYgaXMsIE91dHB1dFN0cmVhbSYgb3MpIHsKKyAgICAgICAgcmV0dXJuIEVuY29kaW5nOjpWYWxp
ZGF0ZShpcywgb3MpOyAgLy8gc291cmNlL3RhcmdldCBlbmNvZGluZyBhcmUgdGhlIHNhbWUKKyAg
ICB9Cit9OworCitSQVBJREpTT05fTkFNRVNQQUNFX0VORAorCisjaWYgZGVmaW5lZChfX0dOVUNf
XykgfHwgZGVmaW5lZChfTVNWX1ZFUikKK1JBUElESlNPTl9ESUFHX1BPUAorI2VuZGlmCisKKyNl
bmRpZiAvLyBSQVBJREpTT05fRU5DT0RJTkdTX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2Vy
cm9yL2VuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9lcnJvci9lbi5oCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0
eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vZXJyb3IvZW4uaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDcxIEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEgTWlsbyBZaXAKKy8vCisvLyBQ
ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv
biBvYnRhaW5pbmcgYSBjb3B5CisvLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv
Y3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAorLy8gaW4gdGhlIFNv
ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24g
dGhlIHJpZ2h0cworLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0
cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorLy8gY29waWVzIG9mIHRoZSBTb2Z0d2Fy
ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisvLyBmdXJu
aXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorLy8K
Ky8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl
IHNoYWxsIGJlIGluY2x1ZGVkIGluCisvLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRp
b25zIG9mIHRoZSBTb2Z0d2FyZS4KKy8vCisvLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT
IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorLy8gSU1QTElF
RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFksCisvLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5G
UklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKy8vIEFVVEhPUlMgT1IgQ09QWVJJR0hU
IEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKy8vIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJX
SVNFLCBBUklTSU5HIEZST00sCisvLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBT
T0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCisvLyBUSEUgU09GVFdBUkUu
CisKKyNpZm5kZWYgUkFQSURKU09OX0VSUk9SX0VOX0hfXworI2RlZmluZSBSQVBJREpTT05fRVJS
T1JfRU5fSF9fCisKKyNpbmNsdWRlICJlcnJvci5oIgorCitSQVBJREpTT05fTkFNRVNQQUNFX0JF
R0lOCisKKy8vISBNYXBzIGVycm9yIGNvZGUgb2YgcGFyc2luZyBpbnRvIGVycm9yIG1lc3NhZ2Uu
CisvKiEKKyAgICBcaW5ncm91cCBSQVBJREpTT05fRVJST1JTCisgICAgXHBhcmFtIHBhcnNlRXJy
b3JDb2RlIEVycm9yIGNvZGUgb2J0YWluZWQgaW4gcGFyc2luZy4KKyAgICBccmV0dXJuIHRoZSBl
cnJvciBtZXNzYWdlLgorICAgIFxub3RlIFVzZXIgY2FuIG1ha2UgYSBjb3B5IG9mIHRoaXMgZnVu
Y3Rpb24gZm9yIGxvY2FsaXphdGlvbi4KKyAgICAgICAgVXNpbmcgc3dpdGNoLWNhc2UgaXMgc2Fm
ZXIgZm9yIGZ1dHVyZSBtb2RpZmljYXRpb24gb2YgZXJyb3IgY29kZXMuCisqLworaW5saW5lIGNv
bnN0IFJBUElESlNPTl9FUlJPUl9DSEFSVFlQRSogR2V0UGFyc2VFcnJvcl9FbihQYXJzZUVycm9y
Q29kZSBwYXJzZUVycm9yQ29kZSkgeworICAgIHN3aXRjaCAocGFyc2VFcnJvckNvZGUpIHsKKyAg
ICAgICAgY2FzZSBrUGFyc2VFcnJvck5vbmU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIFJBUElESlNPTl9FUlJPUl9TVFJJTkcoIk5vIGVycm9yLiIpOworCisgICAgICAgIGNhc2Ug
a1BhcnNlRXJyb3JEb2N1bWVudEVtcHR5OiAgICAgICAgICAgICAgICAgIHJldHVybiBSQVBJREpT
T05fRVJST1JfU1RSSU5HKCJUaGUgZG9jdW1lbnQgaXMgZW1wdHkuIik7CisgICAgICAgIGNhc2Ug
a1BhcnNlRXJyb3JEb2N1bWVudFJvb3ROb3RTaW5ndWxhcjogICAgICAgIHJldHVybiBSQVBJREpT
T05fRVJST1JfU1RSSU5HKCJUaGUgZG9jdW1lbnQgcm9vdCBtdXN0IG5vdCBmb2xsb3cgYnkgb3Ro
ZXIgdmFsdWVzLiIpOworICAgIAorICAgICAgICBjYXNlIGtQYXJzZUVycm9yVmFsdWVJbnZhbGlk
OiAgICAgICAgICAgICAgICAgICByZXR1cm4gUkFQSURKU09OX0VSUk9SX1NUUklORygiSW52YWxp
ZCB2YWx1ZS4iKTsKKyAgICAKKyAgICAgICAgY2FzZSBrUGFyc2VFcnJvck9iamVjdE1pc3NOYW1l
OiAgICAgICAgICAgICAgICAgcmV0dXJuIFJBUElESlNPTl9FUlJPUl9TVFJJTkcoIk1pc3Npbmcg
YSBuYW1lIGZvciBvYmplY3QgbWVtYmVyLiIpOworICAgICAgICBjYXNlIGtQYXJzZUVycm9yT2Jq
ZWN0TWlzc0NvbG9uOiAgICAgICAgICAgICAgICByZXR1cm4gUkFQSURKU09OX0VSUk9SX1NUUklO
RygiTWlzc2luZyBhIGNvbG9uIGFmdGVyIGEgbmFtZSBvZiBvYmplY3QgbWVtYmVyLiIpOworICAg
ICAgICBjYXNlIGtQYXJzZUVycm9yT2JqZWN0TWlzc0NvbW1hT3JDdXJseUJyYWNrZXQ6ICByZXR1
cm4gUkFQSURKU09OX0VSUk9SX1NUUklORygiTWlzc2luZyBhIGNvbW1hIG9yICd9JyBhZnRlciBh
biBvYmplY3QgbWVtYmVyLiIpOworICAgIAorICAgICAgICBjYXNlIGtQYXJzZUVycm9yQXJyYXlN
aXNzQ29tbWFPclNxdWFyZUJyYWNrZXQ6ICByZXR1cm4gUkFQSURKU09OX0VSUk9SX1NUUklORygi
TWlzc2luZyBhIGNvbW1hIG9yICddJyBhZnRlciBhbiBhcnJheSBlbGVtZW50LiIpOworCisgICAg
ICAgIGNhc2Uga1BhcnNlRXJyb3JTdHJpbmdVbmljb2RlRXNjYXBlSW52YWxpZEhleDogIHJldHVy
biBSQVBJREpTT05fRVJST1JfU1RSSU5HKCJJbmNvcnJlY3QgaGV4IGRpZ2l0IGFmdGVyIFxcdSBl
c2NhcGUgaW4gc3RyaW5nLiIpOworICAgICAgICBjYXNlIGtQYXJzZUVycm9yU3RyaW5nVW5pY29k
ZVN1cnJvZ2F0ZUludmFsaWQ6ICByZXR1cm4gUkFQSURKU09OX0VSUk9SX1NUUklORygiVGhlIHN1
cnJvZ2F0ZSBwYWlyIGluIHN0cmluZyBpcyBpbnZhbGlkLiIpOworICAgICAgICBjYXNlIGtQYXJz
ZUVycm9yU3RyaW5nRXNjYXBlSW52YWxpZDogICAgICAgICAgICByZXR1cm4gUkFQSURKU09OX0VS
Uk9SX1NUUklORygiSW52YWxpZCBlc2NhcGUgY2hhcmFjdGVyIGluIHN0cmluZy4iKTsKKyAgICAg
ICAgY2FzZSBrUGFyc2VFcnJvclN0cmluZ01pc3NRdW90YXRpb25NYXJrOiAgICAgICAgcmV0dXJu
IFJBUElESlNPTl9FUlJPUl9TVFJJTkcoIk1pc3NpbmcgYSBjbG9zaW5nIHF1b3RhdGlvbiBtYXJr
IGluIHN0cmluZy4iKTsKKyAgICAgICAgY2FzZSBrUGFyc2VFcnJvclN0cmluZ0ludmFsaWRFbmNv
ZGluZzogICAgICAgICAgcmV0dXJuIFJBUElESlNPTl9FUlJPUl9TVFJJTkcoIkludmFsaWQgZW5j
b2RpbmcgaW4gc3RyaW5nLiIpOworCisgICAgICAgIGNhc2Uga1BhcnNlRXJyb3JOdW1iZXJUb29C
aWc6ICAgICAgICAgICAgICAgICAgIHJldHVybiBSQVBJREpTT05fRVJST1JfU1RSSU5HKCJOdW1i
ZXIgdG9vIGJpZyB0byBiZSBzdG9yZWQgaW4gZG91YmxlLiIpOworICAgICAgICBjYXNlIGtQYXJz
ZUVycm9yTnVtYmVyTWlzc0ZyYWN0aW9uOiAgICAgICAgICAgICByZXR1cm4gUkFQSURKU09OX0VS
Uk9SX1NUUklORygiTWlzcyBmcmFjdGlvbiBwYXJ0IGluIG51bWJlci4iKTsKKyAgICAgICAgY2Fz
ZSBrUGFyc2VFcnJvck51bWJlck1pc3NFeHBvbmVudDogICAgICAgICAgICAgcmV0dXJuIFJBUElE
SlNPTl9FUlJPUl9TVFJJTkcoIk1pc3MgZXhwb25lbnQgaW4gbnVtYmVyLiIpOworCisgICAgICAg
IGNhc2Uga1BhcnNlRXJyb3JUZXJtaW5hdGlvbjogICAgICAgICAgICAgICAgICAgIHJldHVybiBS
QVBJREpTT05fRVJST1JfU1RSSU5HKCJUZXJtaW5hdGUgcGFyc2luZyBkdWUgdG8gSGFuZGxlciBl
cnJvci4iKTsKKyAgICAgICAgY2FzZSBrUGFyc2VFcnJvclVuc3BlY2lmaWNTeW50YXhFcnJvcjog
ICAgICAgICAgcmV0dXJuIFJBUElESlNPTl9FUlJPUl9TVFJJTkcoIlVuc3BlY2lmaWMgc3ludGF4
IGVycm9yLiIpOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gUkFQSURK
U09OX0VSUk9SX1NUUklORygiVW5rbm93biBlcnJvci4iKTsKKyAgICB9Cit9CisKK1JBUElESlNP
Tl9OQU1FU1BBQ0VfRU5ECisKKyNlbmRpZiAvLyBSQVBJREpTT05fRVJST1JfRU5fSF9fCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29u
L2luY2x1ZGUvcmFwaWRqc29uL2Vycm9yL2Vycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3Jh
cGlkanNvbi9lcnJvci9lcnJvci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24v
ZXJyb3IvZXJyb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1MCBAQAorLy8gQ29weXJp
Z2h0IChDKSAyMDExIE1pbG8gWWlwCisvLworLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl
ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorLy8gb2Yg
dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv
ZnR3YXJlIiksIHRvIGRlYWwKKy8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u
LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKKy8vIHRvIHVzZSwgY29w
eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29y
IHNlbGwKKy8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0
byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKy8vCisvLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5v
dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorLy8g
YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisvLwor
Ly8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg
QU5ZIEtJTkQsIEVYUFJFU1MgT1IKKy8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU
RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorLy8gRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFCisvLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5Z
IENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisvLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU
SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorLy8gT1VU
IE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhF
UiBERUFMSU5HUyBJTgorLy8gVEhFIFNPRlRXQVJFLgorCisjaWZuZGVmIFJBUElESlNPTl9FUlJP
Ul9FUlJPUl9IX18KKyNkZWZpbmUgUkFQSURKU09OX0VSUk9SX0VSUk9SX0hfXworCisvKiEgXGZp
bGUgZXJyb3IuaCAqLworCisvKiEgXGRlZmdyb3VwIFJBUElESlNPTl9FUlJPUlMgUmFwaWRKU09O
IGVycm9yIGhhbmRsaW5nICovCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIFJBUElESlNP
Tl9FUlJPUl9DSEFSVFlQRQorCisvLyEgQ2hhcmFjdGVyIHR5cGUgb2YgZXJyb3IgbWVzc2FnZXMu
CisvKiEgXGluZ3JvdXAgUkFQSURKU09OX0VSUk9SUworICAgIFRoZSBkZWZhdWx0IGNoYXJhY3Rl
ciB0eXBlIGlzIFxjIGNoYXIuCisgICAgT24gV2luZG93cywgdXNlciBjYW4gZGVmaW5lIHRoaXMg
bWFjcm8gYXMgXGMgVENIQVIgZm9yIHN1cHBvcnRpbmcgYm90aAorICAgIHVuaWNvZGUvbm9uLXVu
aWNvZGUgc2V0dGluZ3MuCisqLworI2lmbmRlZiBSQVBJREpTT05fRVJST1JfQ0hBUlRZUEUKKyNk
ZWZpbmUgUkFQSURKU09OX0VSUk9SX0NIQVJUWVBFIGNoYXIKKyNlbmRpZgorCisvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCisvLyBSQVBJREpTT05fRVJST1JfU1RSSU5HCisKKy8vISBNYWNybyBmb3Ig
Y29udmVydGluZyBzdHJpbmcgbGl0ZXJpYWwgdG8gXHJlZiBSQVBJREpTT05fRVJST1JfQ0hBUlRZ
UEVbXS4KKy8qISBcaW5ncm91cCBSQVBJREpTT05fRVJST1JTCisgICAgQnkgZGVmYXVsdCB0aGlz
IGNvbnZlcnNpb24gbWFjcm8gZG9lcyBub3RoaW5nLgorICAgIE9uIFdpbmRvd3MsIHVzZXIgY2Fu
IGRlZmluZSB0aGlzIG1hY3JvIGFzIFxjIF9UKHgpIGZvciBzdXBwb3J0aW5nIGJvdGgKKyAgICB1
bmljb2RlL25vbi11bmljb2RlIHNldHRpbmdzLgorKi8KKyNpZm5kZWYgUkFQSURKU09OX0VSUk9S
X1NUUklORworI2RlZmluZSBSQVBJREpTT05fRVJST1JfU1RSSU5HKHgpIHgKKyNlbmRpZgorCitS
QVBJREpTT05fTkFNRVNQQUNFX0JFR0lOCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIFBh
cnNlRXJyb3JDb2RlCisKKy8vISBFcnJvciBjb2RlIG9mIHBhcnNpbmcuCisvKiEgXGluZ3JvdXAg
UkFQSURKU09OX0VSUk9SUworICAgIFxzZWUgR2VuZXJpY1JlYWRlcjo6UGFyc2UsIEdlbmVyaWNS
ZWFkZXI6OkdldFBhcnNlRXJyb3JDb2RlCisqLworZW51bSBQYXJzZUVycm9yQ29kZSB7CisgICAg
a1BhcnNlRXJyb3JOb25lID0gMCwgICAgICAgICAgICAgICAgICAgICAgICAvLyE8IE5vIGVycm9y
LgorCisgICAga1BhcnNlRXJyb3JEb2N1bWVudEVtcHR5LCAgICAgICAgICAgICAgICAgICAvLyE8
IFRoZSBkb2N1bWVudCBpcyBlbXB0eS4KKyAgICBrUGFyc2VFcnJvckRvY3VtZW50Um9vdE5vdFNp
bmd1bGFyLCAgICAgICAgIC8vITwgVGhlIGRvY3VtZW50IHJvb3QgbXVzdCBub3QgZm9sbG93IGJ5
IG90aGVyIHZhbHVlcy4KKworICAgIGtQYXJzZUVycm9yVmFsdWVJbnZhbGlkLCAgICAgICAgICAg
ICAgICAgICAgLy8hPCBJbnZhbGlkIHZhbHVlLgorCisgICAga1BhcnNlRXJyb3JPYmplY3RNaXNz
TmFtZSwgICAgICAgICAgICAgICAgICAvLyE8IE1pc3NpbmcgYSBuYW1lIGZvciBvYmplY3QgbWVt
YmVyLgorICAgIGtQYXJzZUVycm9yT2JqZWN0TWlzc0NvbG9uLCAgICAgICAgICAgICAgICAgLy8h
PCBNaXNzaW5nIGEgY29sb24gYWZ0ZXIgYSBuYW1lIG9mIG9iamVjdCBtZW1iZXIuCisgICAga1Bh
cnNlRXJyb3JPYmplY3RNaXNzQ29tbWFPckN1cmx5QnJhY2tldCwgICAvLyE8IE1pc3NpbmcgYSBj
b21tYSBvciAnfScgYWZ0ZXIgYW4gb2JqZWN0IG1lbWJlci4KKworICAgIGtQYXJzZUVycm9yQXJy
YXlNaXNzQ29tbWFPclNxdWFyZUJyYWNrZXQsICAgLy8hPCBNaXNzaW5nIGEgY29tbWEgb3IgJ10n
IGFmdGVyIGFuIGFycmF5IGVsZW1lbnQuCisKKyAgICBrUGFyc2VFcnJvclN0cmluZ1VuaWNvZGVF
c2NhcGVJbnZhbGlkSGV4LCAgIC8vITwgSW5jb3JyZWN0IGhleCBkaWdpdCBhZnRlciBcXHUgZXNj
YXBlIGluIHN0cmluZy4KKyAgICBrUGFyc2VFcnJvclN0cmluZ1VuaWNvZGVTdXJyb2dhdGVJbnZh
bGlkLCAgIC8vITwgVGhlIHN1cnJvZ2F0ZSBwYWlyIGluIHN0cmluZyBpcyBpbnZhbGlkLgorICAg
IGtQYXJzZUVycm9yU3RyaW5nRXNjYXBlSW52YWxpZCwgICAgICAgICAgICAgLy8hPCBJbnZhbGlk
IGVzY2FwZSBjaGFyYWN0ZXIgaW4gc3RyaW5nLgorICAgIGtQYXJzZUVycm9yU3RyaW5nTWlzc1F1
b3RhdGlvbk1hcmssICAgICAgICAgLy8hPCBNaXNzaW5nIGEgY2xvc2luZyBxdW90YXRpb24gbWFy
ayBpbiBzdHJpbmcuCisgICAga1BhcnNlRXJyb3JTdHJpbmdJbnZhbGlkRW5jb2RpbmcsICAgICAg
ICAgICAvLyE8IEludmFsaWQgZW5jb2RpbmcgaW4gc3RyaW5nLgorCisgICAga1BhcnNlRXJyb3JO
dW1iZXJUb29CaWcsICAgICAgICAgICAgICAgICAgICAvLyE8IE51bWJlciB0b28gYmlnIHRvIGJl
IHN0b3JlZCBpbiBkb3VibGUuCisgICAga1BhcnNlRXJyb3JOdW1iZXJNaXNzRnJhY3Rpb24sICAg
ICAgICAgICAgICAvLyE8IE1pc3MgZnJhY3Rpb24gcGFydCBpbiBudW1iZXIuCisgICAga1BhcnNl
RXJyb3JOdW1iZXJNaXNzRXhwb25lbnQsICAgICAgICAgICAgICAvLyE8IE1pc3MgZXhwb25lbnQg
aW4gbnVtYmVyLgorCisgICAga1BhcnNlRXJyb3JUZXJtaW5hdGlvbiwgICAgICAgICAgICAgICAg
ICAgICAvLyE8IFBhcnNpbmcgd2FzIHRlcm1pbmF0ZWQuCisgICAga1BhcnNlRXJyb3JVbnNwZWNp
ZmljU3ludGF4RXJyb3IsICAgICAgICAgICAvLyE8IFVuc3BlY2lmaWMgc3ludGF4IGVycm9yLgor
fTsKKworLy8hIFJlc3VsdCBvZiBwYXJzaW5nICh3cmFwcyBQYXJzZUVycm9yQ29kZSkKKy8qIQor
ICAgIFxpbmdyb3VwIFJBUElESlNPTl9FUlJPUlMKKyAgICBcY29kZQorICAgICAgICBEb2N1bWVu
dCBkb2M7CisgICAgICAgIFBhcnNlUmVzdWx0IG9rID0gZG9jLlBhcnNlKCJbNDJdIik7CisgICAg
ICAgIGlmICghb2spIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiSlNPTiBwYXJzZSBl
cnJvcjogJXMgKCV1KSIsCisgICAgICAgICAgICAgICAgICAgIEdldFBhcnNlRXJyb3JfRW4ob2su
Q29kZSgpKSwgb2suT2Zmc2V0KCkpOworICAgICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwor
ICAgICAgICB9CisgICAgXGVuZGNvZGUKKyAgICBcc2VlIEdlbmVyaWNSZWFkZXI6OlBhcnNlLCBH
ZW5lcmljRG9jdW1lbnQ6OlBhcnNlCisqLworc3RydWN0IFBhcnNlUmVzdWx0IHsKKworICAgIC8v
ISBEZWZhdWx0IGNvbnN0cnVjdG9yLCBubyBlcnJvci4KKyAgICBQYXJzZVJlc3VsdCgpIDogY29k
ZV8oa1BhcnNlRXJyb3JOb25lKSwgb2Zmc2V0XygwKSB7fQorICAgIC8vISBDb25zdHJ1Y3RvciB0
byBzZXQgYW4gZXJyb3IuCisgICAgUGFyc2VSZXN1bHQoUGFyc2VFcnJvckNvZGUgY29kZSwgc2l6
ZV90IG9mZnNldCkgOiBjb2RlXyhjb2RlKSwgb2Zmc2V0XyhvZmZzZXQpIHt9CisKKyAgICAvLyEg
R2V0IHRoZSBlcnJvciBjb2RlLgorICAgIFBhcnNlRXJyb3JDb2RlIENvZGUoKSBjb25zdCB7IHJl
dHVybiBjb2RlXzsgfQorICAgIC8vISBHZXQgdGhlIGVycm9yIG9mZnNldCwgaWYgXHJlZiBJc0Vy
cm9yKCksIDAgb3RoZXJ3aXNlLgorICAgIHNpemVfdCBPZmZzZXQoKSBjb25zdCB7IHJldHVybiBv
ZmZzZXRfOyB9CisKKyAgICAvLyEgQ29udmVyc2lvbiB0byBcYyBib29sLCByZXR1cm5zIFxjIHRy
dWUsIGlmZiAhXHJlZiBJc0Vycm9yKCkuCisgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0
dXJuICFJc0Vycm9yKCk7IH0KKyAgICAvLyEgV2hldGhlciB0aGUgcmVzdWx0IGlzIGFuIGVycm9y
LgorICAgIGJvb2wgSXNFcnJvcigpIGNvbnN0IHsgcmV0dXJuIGNvZGVfICE9IGtQYXJzZUVycm9y
Tm9uZTsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBhcnNlUmVzdWx0JiB0aGF0KSBj
b25zdCB7IHJldHVybiBjb2RlXyA9PSB0aGF0LmNvZGVfOyB9CisgICAgYm9vbCBvcGVyYXRvcj09
KFBhcnNlRXJyb3JDb2RlIGNvZGUpIGNvbnN0IHsgcmV0dXJuIGNvZGVfID09IGNvZGU7IH0KKyAg
ICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KFBhcnNlRXJyb3JDb2RlIGNvZGUsIGNvbnN0IFBhcnNl
UmVzdWx0ICYgZXJyKSB7IHJldHVybiBjb2RlID09IGVyci5jb2RlXzsgfQorCisgICAgLy8hIFJl
c2V0IGVycm9yIGNvZGUuCisgICAgdm9pZCBDbGVhcigpIHsgU2V0KGtQYXJzZUVycm9yTm9uZSk7
IH0KKyAgICAvLyEgVXBkYXRlIGVycm9yIGNvZGUgYW5kIG9mZnNldC4KKyAgICB2b2lkIFNldChQ
YXJzZUVycm9yQ29kZSBjb2RlLCBzaXplX3Qgb2Zmc2V0ID0gMCkgeyBjb2RlXyA9IGNvZGU7IG9m
ZnNldF8gPSBvZmZzZXQ7IH0KKworcHJpdmF0ZToKKyAgICBQYXJzZUVycm9yQ29kZSBjb2RlXzsK
KyAgICBzaXplX3Qgb2Zmc2V0XzsKK307CisKKy8vISBGdW5jdGlvbiBwb2ludGVyIHR5cGUgb2Yg
R2V0UGFyc2VFcnJvcigpLgorLyohIFxpbmdyb3VwIFJBUElESlNPTl9FUlJPUlMKKworICAgIFRo
aXMgaXMgdGhlIHByb3RvdHlwZSBmb3IgXGMgR2V0UGFyc2VFcnJvcl9YKCksIHdoZXJlIFxjIFgg
aXMgYSBsb2NhbGUuCisgICAgVXNlciBjYW4gZHluYW1pY2FsbHkgY2hhbmdlIGxvY2FsZSBpbiBy
dW50aW1lLCBlLmcuOgorXGNvZGUKKyAgICBHZXRQYXJzZUVycm9yRnVuYyBHZXRQYXJzZUVycm9y
ID0gR2V0UGFyc2VFcnJvcl9FbjsgLy8gb3Igd2hhdGV2ZXIKKyAgICBjb25zdCBSQVBJREpTT05f
RVJST1JfQ0hBUlRZUEUqIHMgPSBHZXRQYXJzZUVycm9yKGRvY3VtZW50LkdldFBhcnNlRXJyb3JD
b2RlKCkpOworXGVuZGNvZGUKKyovCit0eXBlZGVmIGNvbnN0IFJBUElESlNPTl9FUlJPUl9DSEFS
VFlQRSogKCpHZXRQYXJzZUVycm9yRnVuYykoUGFyc2VFcnJvckNvZGUpOworCitSQVBJREpTT05f
TkFNRVNQQUNFX0VORAorCisjZW5kaWYgLy8gUkFQSURKU09OX0VSUk9SX0VSUk9SX0hfXwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNv
bi9pbmNsdWRlL3JhcGlkanNvbi9maWxlcmVhZHN0cmVhbS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVk
ZS9yYXBpZGpzb24vZmlsZXJlYWRzdHJlYW0uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFw
aWRqc29uL2ZpbGVyZWFkc3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NCBAQAor
Ly8gQ29weXJpZ2h0IChDKSAyMDExIE1pbG8gWWlwCisvLworLy8gUGVybWlzc2lvbiBpcyBoZXJl
YnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29w
eQorLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz
ICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKKy8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJl
c3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKKy8vIHRv
IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5z
ZSwgYW5kL29yIHNlbGwKKy8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQg
cGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBz
dWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKy8vCisvLyBUaGUgYWJvdmUgY29w
eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRl
ZCBpbgorLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdh
cmUuCisvLworLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FS
UkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKy8vIElNUExJRUQsIElOQ0xVRElORyBCVVQg
Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorLy8gRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFCisvLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJM
RSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisvLyBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9N
LAorLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVT
RSBPUiBPVEhFUiBERUFMSU5HUyBJTgorLy8gVEhFIFNPRlRXQVJFLgorCisjaWZuZGVmIFJBUElE
SlNPTl9GSUxFUkVBRFNUUkVBTV9IXworI2RlZmluZSBSQVBJREpTT05fRklMRVJFQURTVFJFQU1f
SF8KKworI2luY2x1ZGUgInJhcGlkanNvbi5oIgorI2luY2x1ZGUgPGNzdGRpbz4KKworUkFQSURK
U09OX05BTUVTUEFDRV9CRUdJTgorCisvLyEgRmlsZSBieXRlIHN0cmVhbSBmb3IgaW5wdXQgdXNp
bmcgZnJlYWQoKS4KKy8qIQorICAgIFxub3RlIGltcGxlbWVudHMgU3RyZWFtIGNvbmNlcHQKKyov
CitjbGFzcyBGaWxlUmVhZFN0cmVhbSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBjaGFyIENoOyAg
ICAvLyE8IENoYXJhY3RlciB0eXBlIChieXRlKS4KKworICAgIC8vISBDb25zdHJ1Y3Rvci4KKyAg
ICAvKiEKKyAgICAgICAgXHBhcmFtIGZwIEZpbGUgcG9pbnRlciBvcGVuZWQgZm9yIHJlYWQuCisg
ICAgICAgIFxwYXJhbSBidWZmZXIgdXNlci1zdXBwbGllZCBidWZmZXIuCisgICAgICAgIFxwYXJh
bSBidWZmZXJTaXplIHNpemUgb2YgYnVmZmVyIGluIGJ5dGVzLiBNdXN0ID49NCBieXRlcy4KKyAg
ICAqLworICAgIEZpbGVSZWFkU3RyZWFtKHN0ZDo6RklMRSogZnAsIGNoYXIqIGJ1ZmZlciwgc2l6
ZV90IGJ1ZmZlclNpemUpIDogZnBfKGZwKSwgYnVmZmVyXyhidWZmZXIpLCBidWZmZXJTaXplXyhi
dWZmZXJTaXplKSwgYnVmZmVyTGFzdF8oMCksIGN1cnJlbnRfKGJ1ZmZlcl8pLCByZWFkQ291bnRf
KDApLCBjb3VudF8oMCksIGVvZl8oZmFsc2UpIHsgCisgICAgICAgIFJBUElESlNPTl9BU1NFUlQo
ZnBfICE9IDApOworICAgICAgICBSQVBJREpTT05fQVNTRVJUKGJ1ZmZlclNpemUgPj0gNCk7Cisg
ICAgICAgIFJlYWQoKTsKKyAgICB9CisKKyAgICBDaCBQZWVrKCkgY29uc3QgeyByZXR1cm4gKmN1
cnJlbnRfOyB9CisgICAgQ2ggVGFrZSgpIHsgQ2ggYyA9ICpjdXJyZW50XzsgUmVhZCgpOyByZXR1
cm4gYzsgfQorICAgIHNpemVfdCBUZWxsKCkgY29uc3QgeyByZXR1cm4gY291bnRfICsgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihjdXJyZW50XyAtIGJ1ZmZlcl8pOyB9CisKKyAgICAvLyBOb3QgaW1wbGVt
ZW50ZWQKKyAgICB2b2lkIFB1dChDaCkgeyBSQVBJREpTT05fQVNTRVJUKGZhbHNlKTsgfQorICAg
IHZvaWQgRmx1c2goKSB7IFJBUElESlNPTl9BU1NFUlQoZmFsc2UpOyB9IAorICAgIENoKiBQdXRC
ZWdpbigpIHsgUkFQSURKU09OX0FTU0VSVChmYWxzZSk7IHJldHVybiAwOyB9CisgICAgc2l6ZV90
IFB1dEVuZChDaCopIHsgUkFQSURKU09OX0FTU0VSVChmYWxzZSk7IHJldHVybiAwOyB9CisKKyAg
ICAvLyBGb3IgZW5jb2RpbmcgZGV0ZWN0aW9uIG9ubHkuCisgICAgY29uc3QgQ2gqIFBlZWs0KCkg
Y29uc3QgeworICAgICAgICByZXR1cm4gKGN1cnJlbnRfICsgNCA8PSBidWZmZXJMYXN0XykgPyBj
dXJyZW50XyA6IDA7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgUmVhZCgpIHsKKyAgICAg
ICAgaWYgKGN1cnJlbnRfIDwgYnVmZmVyTGFzdF8pCisgICAgICAgICAgICArK2N1cnJlbnRfOwor
ICAgICAgICBlbHNlIGlmICghZW9mXykgeworICAgICAgICAgICAgY291bnRfICs9IHJlYWRDb3Vu
dF87CisgICAgICAgICAgICByZWFkQ291bnRfID0gZnJlYWQoYnVmZmVyXywgMSwgYnVmZmVyU2l6
ZV8sIGZwXyk7CisgICAgICAgICAgICBidWZmZXJMYXN0XyA9IGJ1ZmZlcl8gKyByZWFkQ291bnRf
IC0gMTsKKyAgICAgICAgICAgIGN1cnJlbnRfID0gYnVmZmVyXzsKKworICAgICAgICAgICAgaWYg
KHJlYWRDb3VudF8gPCBidWZmZXJTaXplXykgeworICAgICAgICAgICAgICAgIGJ1ZmZlcl9bcmVh
ZENvdW50X10gPSAnXDAnOworICAgICAgICAgICAgICAgICsrYnVmZmVyTGFzdF87CisgICAgICAg
ICAgICAgICAgZW9mXyA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBzdGQ6OkZJTEUqIGZwXzsKKyAgICBDaCAqYnVmZmVyXzsKKyAgICBzaXplX3QgYnVmZmVy
U2l6ZV87CisgICAgQ2ggKmJ1ZmZlckxhc3RfOworICAgIENoICpjdXJyZW50XzsKKyAgICBzaXpl
X3QgcmVhZENvdW50XzsKKyAgICBzaXplX3QgY291bnRfOyAgLy8hPCBOdW1iZXIgb2YgY2hhcmFj
dGVycyByZWFkCisgICAgYm9vbCBlb2ZfOworfTsKKworUkFQSURKU09OX05BTUVTUEFDRV9FTkQK
KworI2VuZGlmIC8vIFJBUElESlNPTl9GSUxFU1RSRUFNX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRq
c29uL2ZpbGVzdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ZpbGVzdHJl
YW0uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
dGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ZpbGVzdHJlYW0uaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDczIEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEgTWlsbyBZ
aXAKKy8vCisvLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg
dG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisvLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh
c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAor
Ly8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0
IGxpbWl0YXRpb24gdGhlIHJpZ2h0cworLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw
dWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorLy8gY29waWVzIG9m
IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJl
IGlzCisvLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zOgorLy8KKy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p
c3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisvLyBhbGwgY29waWVzIG9yIHN1YnN0
YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKy8vCisvLyBUSEUgU09GVFdBUkUgSVMg
UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP
UgorLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFksCisvLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKy8vIEFVVEhPUlMg
T1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1Ig
T1RIRVIKKy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP
UlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisvLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElP
TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCisvLyBU
SEUgU09GVFdBUkUuCisKKyNpZm5kZWYgUkFQSURKU09OX0ZJTEVTVFJFQU1fSF8KKyNkZWZpbmUg
UkFQSURKU09OX0ZJTEVTVFJFQU1fSF8KKworI2luY2x1ZGUgInJhcGlkanNvbi5oIgorI2luY2x1
ZGUgPGNzdGRpbz4KKworUkFQSURKU09OX05BTUVTUEFDRV9CRUdJTgorCisvLyEgKERlcHJlY2F0
ZWQpIFdyYXBwZXIgb2YgQyBmaWxlIHN0cmVhbSBmb3IgaW5wdXQgb3Igb3V0cHV0LgorLyohCisg
ICAgVGhpcyBzaW1wbGUgd3JhcHBlciBkb2VzIG5vdCBjaGVjayB0aGUgdmFsaWRpdHkgb2YgdGhl
IHN0cmVhbS4KKyAgICBcbm90ZSBpbXBsZW1lbnRzIFN0cmVhbSBjb25jZXB0CisgICAgXG5vdGUg
ZGVwcmVjYXRlZDogVGhpcyB3YXMgb25seSBmb3IgYmFzaWMgdGVzdGluZyBpbiB2ZXJzaW9uIDAu
MSwgaXQgaXMgZm91bmQgdGhhdCB0aGUgcGVyZm9ybWFuY2UgaXMgdmVyeSBsb3cgYnkgdXNpbmcg
ZmdldGMoKS4gVXNlIEZpbGVSZWFkU3RyZWFtIGluc3RlYWQuCisqLworY2xhc3MgRmlsZVN0cmVh
bSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBjaGFyIENoOyAgICAvLyE8IENoYXJhY3RlciB0eXBl
LiBPbmx5IHN1cHBvcnQgY2hhci4KKworICAgIEZpbGVTdHJlYW0oc3RkOjpGSUxFKiBmcCkgOiBm
cF8oZnApLCBjdXJyZW50XygnXDAnKSwgY291bnRfKDApIHsgUmVhZCgpOyB9CisgICAgY2hhciBQ
ZWVrKCkgY29uc3QgeyByZXR1cm4gY3VycmVudF87IH0KKyAgICBjaGFyIFRha2UoKSB7IGNoYXIg
YyA9IGN1cnJlbnRfOyBSZWFkKCk7IHJldHVybiBjOyB9CisgICAgc2l6ZV90IFRlbGwoKSBjb25z
dCB7IHJldHVybiBjb3VudF87IH0KKyAgICB2b2lkIFB1dChjaGFyIGMpIHsgZnB1dGMoYywgZnBf
KTsgfQorICAgIHZvaWQgRmx1c2goKSB7IGZmbHVzaChmcF8pOyB9CisKKyAgICAvLyBOb3QgaW1w
bGVtZW50ZWQKKyAgICBjaGFyKiBQdXRCZWdpbigpIHsgcmV0dXJuIDA7IH0KKyAgICBzaXplX3Qg
UHV0RW5kKGNoYXIqKSB7IHJldHVybiAwOyB9CisKK3ByaXZhdGU6CisgICAgLy8gUHJvaGliaXQg
Y29weSBjb25zdHJ1Y3RvciAmIGFzc2lnbm1lbnQgb3BlcmF0b3IuCisgICAgRmlsZVN0cmVhbShj
b25zdCBGaWxlU3RyZWFtJik7CisgICAgRmlsZVN0cmVhbSYgb3BlcmF0b3I9KGNvbnN0IEZpbGVT
dHJlYW0mKTsKKworICAgIHZvaWQgUmVhZCgpIHsKKyAgICAgICAgUkFQSURKU09OX0FTU0VSVChm
cF8gIT0gMCk7CisgICAgICAgIGludCBjID0gZmdldGMoZnBfKTsKKyAgICAgICAgaWYgKGMgIT0g
RU9GKSB7CisgICAgICAgICAgICBjdXJyZW50XyA9IChjaGFyKWM7CisgICAgICAgICAgICBjb3Vu
dF8rKzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChjdXJyZW50XyAhPSAnXDAnKQorICAg
ICAgICAgICAgY3VycmVudF8gPSAnXDAnOworICAgIH0KKworICAgIHN0ZDo6RklMRSogZnBfOwor
ICAgIGNoYXIgY3VycmVudF87CisgICAgc2l6ZV90IGNvdW50XzsKK307CisKK1JBUElESlNPTl9O
QU1FU1BBQ0VfRU5ECisKKyNlbmRpZiAvLyBSQVBJREpTT05fRklMRVNUUkVBTV9IXwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9p
bmNsdWRlL3JhcGlkanNvbi9maWxld3JpdGVzdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUv
cmFwaWRqc29uL2ZpbGV3cml0ZXN0cmVhbS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBp
ZGpzb24vZmlsZXdyaXRlc3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NyBAQAor
Ly8gQ29weXJpZ2h0IChDKSAyMDExIE1pbG8gWWlwCisvLworLy8gUGVybWlzc2lvbiBpcyBoZXJl
YnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29w
eQorLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz
ICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKKy8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJl
c3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKKy8vIHRv
IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5z
ZSwgYW5kL29yIHNlbGwKKy8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQg
cGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBz
dWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKy8vCisvLyBUaGUgYWJvdmUgY29w
eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRl
ZCBpbgorLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdh
cmUuCisvLworLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FS
UkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKy8vIElNUExJRUQsIElOQ0xVRElORyBCVVQg
Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorLy8gRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFCisvLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJM
RSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisvLyBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9N
LAorLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVT
RSBPUiBPVEhFUiBERUFMSU5HUyBJTgorLy8gVEhFIFNPRlRXQVJFLgorCisjaWZuZGVmIFJBUElE
SlNPTl9GSUxFV1JJVEVTVFJFQU1fSF8KKyNkZWZpbmUgUkFQSURKU09OX0ZJTEVXUklURVNUUkVB
TV9IXworCisjaW5jbHVkZSAicmFwaWRqc29uLmgiCisjaW5jbHVkZSA8Y3N0ZGlvPgorCitSQVBJ
REpTT05fTkFNRVNQQUNFX0JFR0lOCisKKy8vISBXcmFwcGVyIG9mIEMgZmlsZSBzdHJlYW0gZm9y
IGlucHV0IHVzaW5nIGZyZWFkKCkuCisvKiEKKyAgICBcbm90ZSBpbXBsZW1lbnRzIFN0cmVhbSBj
b25jZXB0CisqLworY2xhc3MgRmlsZVdyaXRlU3RyZWFtIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IGNoYXIgQ2g7ICAgIC8vITwgQ2hhcmFjdGVyIHR5cGUuIE9ubHkgc3VwcG9ydCBjaGFyLgorCisg
ICAgRmlsZVdyaXRlU3RyZWFtKHN0ZDo6RklMRSogZnAsIGNoYXIqIGJ1ZmZlciwgc2l6ZV90IGJ1
ZmZlclNpemUpIDogZnBfKGZwKSwgYnVmZmVyXyhidWZmZXIpLCBidWZmZXJFbmRfKGJ1ZmZlciAr
IGJ1ZmZlclNpemUpLCBjdXJyZW50XyhidWZmZXJfKSB7IAorICAgICAgICBSQVBJREpTT05fQVNT
RVJUKGZwXyAhPSAwKTsKKyAgICB9CisKKyAgICB2b2lkIFB1dChjaGFyIGMpIHsgCisgICAgICAg
IGlmIChjdXJyZW50XyA+PSBidWZmZXJFbmRfKQorICAgICAgICAgICAgRmx1c2goKTsKKworICAg
ICAgICAqY3VycmVudF8rKyA9IGM7CisgICAgfQorCisgICAgdm9pZCBQdXROKGNoYXIgYywgc2l6
ZV90IG4pIHsKKyAgICAgICAgc2l6ZV90IGF2YWlsID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihidWZm
ZXJFbmRfIC0gY3VycmVudF8pOworICAgICAgICB3aGlsZSAobiA+IGF2YWlsKSB7CisgICAgICAg
ICAgICBzdGQ6Om1lbXNldChjdXJyZW50XywgYywgYXZhaWwpOworICAgICAgICAgICAgY3VycmVu
dF8gKz0gYXZhaWw7CisgICAgICAgICAgICBGbHVzaCgpOworICAgICAgICAgICAgbiAtPSBhdmFp
bDsKKyAgICAgICAgICAgIGF2YWlsID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihidWZmZXJFbmRfIC0g
Y3VycmVudF8pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG4gPiAwKSB7CisgICAgICAgICAg
ICBzdGQ6Om1lbXNldChjdXJyZW50XywgYywgbik7CisgICAgICAgICAgICBjdXJyZW50XyArPSBu
OworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBGbHVzaCgpIHsKKyAgICAgICAgaWYgKGN1
cnJlbnRfICE9IGJ1ZmZlcl8pIHsKKyAgICAgICAgICAgIGZ3cml0ZShidWZmZXJfLCAxLCBzdGF0
aWNfY2FzdDxzaXplX3Q+KGN1cnJlbnRfIC0gYnVmZmVyXyksIGZwXyk7CisgICAgICAgICAgICBj
dXJyZW50XyA9IGJ1ZmZlcl87CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBOb3QgaW1wbGVt
ZW50ZWQKKyAgICBjaGFyIFBlZWsoKSBjb25zdCB7IFJBUElESlNPTl9BU1NFUlQoZmFsc2UpOyBy
ZXR1cm4gMDsgfQorICAgIGNoYXIgVGFrZSgpIHsgUkFQSURKU09OX0FTU0VSVChmYWxzZSk7IHJl
dHVybiAwOyB9CisgICAgc2l6ZV90IFRlbGwoKSBjb25zdCB7IFJBUElESlNPTl9BU1NFUlQoZmFs
c2UpOyByZXR1cm4gMDsgfQorICAgIGNoYXIqIFB1dEJlZ2luKCkgeyBSQVBJREpTT05fQVNTRVJU
KGZhbHNlKTsgcmV0dXJuIDA7IH0KKyAgICBzaXplX3QgUHV0RW5kKGNoYXIqKSB7IFJBUElESlNP
Tl9BU1NFUlQoZmFsc2UpOyByZXR1cm4gMDsgfQorCitwcml2YXRlOgorICAgIC8vIFByb2hpYml0
IGNvcHkgY29uc3RydWN0b3IgJiBhc3NpZ25tZW50IG9wZXJhdG9yLgorICAgIEZpbGVXcml0ZVN0
cmVhbShjb25zdCBGaWxlV3JpdGVTdHJlYW0mKTsKKyAgICBGaWxlV3JpdGVTdHJlYW0mIG9wZXJh
dG9yPShjb25zdCBGaWxlV3JpdGVTdHJlYW0mKTsKKworICAgIHN0ZDo6RklMRSogZnBfOworICAg
IGNoYXIgKmJ1ZmZlcl87CisgICAgY2hhciAqYnVmZmVyRW5kXzsKKyAgICBjaGFyICpjdXJyZW50
XzsKK307CisKKy8vISBJbXBsZW1lbnQgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBQdXROKCkgd2l0
aCBtZW1zZXQoKSBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLgordGVtcGxhdGU8PgoraW5saW5lIHZv
aWQgUHV0TihGaWxlV3JpdGVTdHJlYW0mIHN0cmVhbSwgY2hhciBjLCBzaXplX3QgbikgeworICAg
IHN0cmVhbS5QdXROKGMsIG4pOworfQorCitSQVBJREpTT05fTkFNRVNQQUNFX0VORAorCisjZW5k
aWYgLy8gUkFQSURKU09OX0ZJTEVTVFJFQU1fSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50
ZXJuYWwvYmlnaW50ZWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJu
YWwvYmlnaW50ZWdlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJu
YWwvYmlnaW50ZWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjk0IEBACisvLyBDb3B5
cmlnaHQgKEMpIDIwMTEgTWlsbyBZaXAKKy8vCisvLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu
dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisvLyBv
ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAi
U29mdHdhcmUiKSwgdG8gZGVhbAorLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp
b24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cworLy8gdG8gdXNlLCBj
b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQv
b3Igc2VsbAorLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z
IHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisvLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg
dG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorLy8KKy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQg
bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisv
LyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKy8v
CisvLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP
RiBBTlkgS0lORCwgRVhQUkVTUyBPUgorLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN
SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisvLyBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUKKy8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBB
TlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB
Q1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisvLyBP
VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9U
SEVSIERFQUxJTkdTIElOCisvLyBUSEUgU09GVFdBUkUuCisKKyNpZm5kZWYgUkFQSURKU09OX0JJ
R0lOVEVHRVJfSF8KKyNkZWZpbmUgUkFQSURKU09OX0JJR0lOVEVHRVJfSF8KKworI2luY2x1ZGUg
Ii4uL3JhcGlkanNvbi5oIgorCisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgZGVmaW5lZChfTV9B
TUQ2NCkKKyNpbmNsdWRlIDxpbnRyaW4uaD4gLy8gZm9yIF91bXVsMTI4CisjZW5kaWYKKworUkFQ
SURKU09OX05BTUVTUEFDRV9CRUdJTgorbmFtZXNwYWNlIGludGVybmFsIHsKKworY2xhc3MgQmln
SW50ZWdlciB7CitwdWJsaWM6CisgICAgdHlwZWRlZiB1aW50NjRfdCBUeXBlOworCisgICAgQmln
SW50ZWdlcihjb25zdCBCaWdJbnRlZ2VyJiByaHMpIDogY291bnRfKHJocy5jb3VudF8pIHsKKyAg
ICAgICAgc3RkOjptZW1jcHkoZGlnaXRzXywgcmhzLmRpZ2l0c18sIGNvdW50XyAqIHNpemVvZihU
eXBlKSk7CisgICAgfQorCisgICAgZXhwbGljaXQgQmlnSW50ZWdlcih1aW50NjRfdCB1KSA6IGNv
dW50XygxKSB7CisgICAgICAgIGRpZ2l0c19bMF0gPSB1OworICAgIH0KKworICAgIEJpZ0ludGVn
ZXIoY29uc3QgY2hhciogZGVjaW1hbHMsIHNpemVfdCBsZW5ndGgpIDogY291bnRfKDEpIHsKKyAg
ICAgICAgUkFQSURKU09OX0FTU0VSVChsZW5ndGggPiAwKTsKKyAgICAgICAgZGlnaXRzX1swXSA9
IDA7CisgICAgICAgIHNpemVfdCBpID0gMDsKKyAgICAgICAgY29uc3Qgc2l6ZV90IGtNYXhEaWdp
dFBlckl0ZXJhdGlvbiA9IDE5OyAgLy8gMl42NCA9IDE4NDQ2NzQ0MDczNzA5NTUxNjE2ID4gMTBe
MTkKKyAgICAgICAgd2hpbGUgKGxlbmd0aCA+PSBrTWF4RGlnaXRQZXJJdGVyYXRpb24pIHsKKyAg
ICAgICAgICAgIEFwcGVuZERlY2ltYWw2NChkZWNpbWFscyArIGksIGRlY2ltYWxzICsgaSArIGtN
YXhEaWdpdFBlckl0ZXJhdGlvbik7CisgICAgICAgICAgICBsZW5ndGggLT0ga01heERpZ2l0UGVy
SXRlcmF0aW9uOworICAgICAgICAgICAgaSArPSBrTWF4RGlnaXRQZXJJdGVyYXRpb247CisgICAg
ICAgIH0KKworICAgICAgICBpZiAobGVuZ3RoID4gMCkKKyAgICAgICAgICAgIEFwcGVuZERlY2lt
YWw2NChkZWNpbWFscyArIGksIGRlY2ltYWxzICsgaSArIGxlbmd0aCk7CisgICAgfQorCisgICAg
QmlnSW50ZWdlciYgb3BlcmF0b3I9KHVpbnQ2NF90IHUpIHsKKyAgICAgICAgZGlnaXRzX1swXSA9
IHU7ICAgICAgICAgICAgCisgICAgICAgIGNvdW50XyA9IDE7CisgICAgICAgIHJldHVybiAqdGhp
czsKKyAgICB9CisKKyAgICBCaWdJbnRlZ2VyJiBvcGVyYXRvcis9KHVpbnQ2NF90IHUpIHsKKyAg
ICAgICAgVHlwZSBiYWNrdXAgPSBkaWdpdHNfWzBdOworICAgICAgICBkaWdpdHNfWzBdICs9IHU7
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnRfIC0gMTsgaSsrKSB7CisgICAg
ICAgICAgICBpZiAoZGlnaXRzX1tpXSA+PSBiYWNrdXApCisgICAgICAgICAgICAgICAgcmV0dXJu
ICp0aGlzOyAvLyBubyBjYXJyeQorICAgICAgICAgICAgYmFja3VwID0gZGlnaXRzX1tpICsgMV07
CisgICAgICAgICAgICBkaWdpdHNfW2kgKyAxXSArPSAxOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gTGFzdCBjYXJyeQorICAgICAgICBpZiAoZGlnaXRzX1tjb3VudF8gLSAxXSA8IGJhY2t1cCkK
KyAgICAgICAgICAgIFB1c2hCYWNrKDEpOworCisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9
CisKKyAgICBCaWdJbnRlZ2VyJiBvcGVyYXRvcio9KHVpbnQ2NF90IHUpIHsKKyAgICAgICAgaWYg
KHUgPT0gMCkgcmV0dXJuICp0aGlzID0gMDsKKyAgICAgICAgaWYgKHUgPT0gMSkgcmV0dXJuICp0
aGlzOworICAgICAgICBpZiAoKnRoaXMgPT0gMSkgcmV0dXJuICp0aGlzID0gdTsKKworICAgICAg
ICB1aW50NjRfdCBrID0gMDsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudF87
IGkrKykgeworICAgICAgICAgICAgdWludDY0X3QgaGk7CisgICAgICAgICAgICBkaWdpdHNfW2ld
ID0gTXVsQWRkNjQoZGlnaXRzX1tpXSwgdSwgaywgJmhpKTsKKyAgICAgICAgICAgIGsgPSBoaTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGsgPiAwKQorICAgICAgICAgICAgUHVz
aEJhY2soayk7CisKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIEJpZ0ludGVn
ZXImIG9wZXJhdG9yKj0odWludDMyX3QgdSkgeworICAgICAgICBpZiAodSA9PSAwKSByZXR1cm4g
KnRoaXMgPSAwOworICAgICAgICBpZiAodSA9PSAxKSByZXR1cm4gKnRoaXM7CisgICAgICAgIGlm
ICgqdGhpcyA9PSAxKSByZXR1cm4gKnRoaXMgPSB1OworCisgICAgICAgIHVpbnQzMl90IGsgPSAw
OworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50XzsgaSsrKSB7CisgICAgICAg
ICAgICBjb25zdCB1aW50NjRfdCBjID0gZGlnaXRzX1tpXSA+PiAzMjsKKyAgICAgICAgICAgIGNv
bnN0IHVpbnQ2NF90IGQgPSBkaWdpdHNfW2ldICYgMHhGRkZGRkZGRjsKKyAgICAgICAgICAgIGNv
bnN0IHVpbnQ2NF90IHVjID0gdSAqIGM7CisgICAgICAgICAgICBjb25zdCB1aW50NjRfdCB1ZCA9
IHUgKiBkOworICAgICAgICAgICAgY29uc3QgdWludDY0X3QgcDAgPSB1ZCArIGs7CisgICAgICAg
ICAgICBjb25zdCB1aW50NjRfdCBwMSA9IHVjICsgKHAwID4+IDMyKTsKKyAgICAgICAgICAgIGRp
Z2l0c19baV0gPSAocDAgJiAweEZGRkZGRkZGKSB8IChwMSA8PCAzMik7CisgICAgICAgICAgICBr
ID0gcDEgPj4gMzI7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChrID4gMCkKKyAg
ICAgICAgICAgIFB1c2hCYWNrKGspOworCisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisK
KyAgICBCaWdJbnRlZ2VyJiBvcGVyYXRvcjw8PShzaXplX3Qgc2hpZnQpIHsKKyAgICAgICAgaWYg
KElzWmVybygpIHx8IHNoaWZ0ID09IDApIHJldHVybiAqdGhpczsKKworICAgICAgICBzaXplX3Qg
b2Zmc2V0ID0gc2hpZnQgLyBrVHlwZUJpdDsKKyAgICAgICAgc2l6ZV90IGludGVyU2hpZnQgPSBz
aGlmdCAlIGtUeXBlQml0OworICAgICAgICBSQVBJREpTT05fQVNTRVJUKGNvdW50XyArIG9mZnNl
dCA8PSBrQ2FwYWNpdHkpOworCisgICAgICAgIGlmIChpbnRlclNoaWZ0ID09IDApIHsKKyAgICAg
ICAgICAgIHN0ZDo6bWVtbW92ZSgmZGlnaXRzX1tjb3VudF8gLSAxICsgb2Zmc2V0XSwgJmRpZ2l0
c19bY291bnRfIC0gMV0sIGNvdW50XyAqIHNpemVvZihUeXBlKSk7CisgICAgICAgICAgICBjb3Vu
dF8gKz0gb2Zmc2V0OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZGln
aXRzX1tjb3VudF9dID0gMDsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBjb3VudF87IGkg
PiAwOyBpLS0pCisgICAgICAgICAgICAgICAgZGlnaXRzX1tpICsgb2Zmc2V0XSA9IChkaWdpdHNf
W2ldIDw8IGludGVyU2hpZnQpIHwgKGRpZ2l0c19baSAtIDFdID4+IChrVHlwZUJpdCAtIGludGVy
U2hpZnQpKTsKKyAgICAgICAgICAgIGRpZ2l0c19bb2Zmc2V0XSA9IGRpZ2l0c19bMF0gPDwgaW50
ZXJTaGlmdDsKKyAgICAgICAgICAgIGNvdW50XyArPSBvZmZzZXQ7CisgICAgICAgICAgICBpZiAo
ZGlnaXRzX1tjb3VudF9dKQorICAgICAgICAgICAgICAgIGNvdW50XysrOworICAgICAgICB9CisK
KyAgICAgICAgc3RkOjptZW1zZXQoZGlnaXRzXywgMCwgb2Zmc2V0ICogc2l6ZW9mKFR5cGUpKTsK
KworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEJpZ0ludGVnZXImIHJocykgY29uc3QgeworICAgICAgICByZXR1cm4gY291bnRfID09IHJo
cy5jb3VudF8gJiYgbWVtY21wKGRpZ2l0c18sIHJocy5kaWdpdHNfLCBjb3VudF8gKiBzaXplb2Yo
VHlwZSkpID09IDA7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFR5cGUgcmhz
KSBjb25zdCB7CisgICAgICAgIHJldHVybiBjb3VudF8gPT0gMSAmJiBkaWdpdHNfWzBdID09IHJo
czsKKyAgICB9CisKKyAgICBCaWdJbnRlZ2VyJiBNdWx0aXBseVBvdzUodW5zaWduZWQgZXhwKSB7
CisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBrUG93NVsxMl0gPSB7CisgICAgICAgICAg
ICA1LAorICAgICAgICAgICAgNSAqIDUsCisgICAgICAgICAgICA1ICogNSAqIDUsCisgICAgICAg
ICAgICA1ICogNSAqIDUgKiA1LAorICAgICAgICAgICAgNSAqIDUgKiA1ICogNSAqIDUsCisgICAg
ICAgICAgICA1ICogNSAqIDUgKiA1ICogNSAqIDUsCisgICAgICAgICAgICA1ICogNSAqIDUgKiA1
ICogNSAqIDUgKiA1LAorICAgICAgICAgICAgNSAqIDUgKiA1ICogNSAqIDUgKiA1ICogNSAqIDUs
CisgICAgICAgICAgICA1ICogNSAqIDUgKiA1ICogNSAqIDUgKiA1ICogNSAqIDUsCisgICAgICAg
ICAgICA1ICogNSAqIDUgKiA1ICogNSAqIDUgKiA1ICogNSAqIDUgKiA1LAorICAgICAgICAgICAg
NSAqIDUgKiA1ICogNSAqIDUgKiA1ICogNSAqIDUgKiA1ICogNSAqIDUsCisgICAgICAgICAgICA1
ICogNSAqIDUgKiA1ICogNSAqIDUgKiA1ICogNSAqIDUgKiA1ICogNSAqIDUKKyAgICAgICAgfTsK
KyAgICAgICAgaWYgKGV4cCA9PSAwKSByZXR1cm4gKnRoaXM7CisgICAgICAgIGZvciAoOyBleHAg
Pj0gMjc7IGV4cCAtPSAyNykgKnRoaXMgKj0gUkFQSURKU09OX1VJTlQ2NF9DMigwWDY3NjVDNzkz
LCAwWEZBMTAwNzlEKTsgLy8gNV4yNworICAgICAgICBmb3IgKDsgZXhwID49IDEzOyBleHAgLT0g
MTMpICp0aGlzICo9IDEyMjA3MDMxMjV1OyAvLyA1XjEzCisgICAgICAgIGlmIChleHAgPiAwKSAg
ICAgICAgICAgICAgICAgKnRoaXMgKj0ga1BvdzVbZXhwIC0gMV07CisgICAgICAgIHJldHVybiAq
dGhpczsKKyAgICB9CisKKyAgICAvLyBDb21wdXRlIGFic29sdXRlIGRpZmZlcmVuY2Ugb2YgdGhp
cyBhbmQgcmhzLgorICAgIC8vIFJldHVybiBmYWxzZSBpZiB0aGlzIDwgcmhzCisgICAgYm9vbCBE
aWZmZXJlbmNlKGNvbnN0IEJpZ0ludGVnZXImIHJocywgQmlnSW50ZWdlciogb3V0KSBjb25zdCB7
CisgICAgICAgIGludCBjbXAgPSBDb21wYXJlKHJocyk7CisgICAgICAgIGlmIChjbXAgPT0gMCkg
eworICAgICAgICAgICAgKm91dCA9IEJpZ0ludGVnZXIoMCk7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgY29uc3QgQmlnSW50ZWdlciAqYSwgKmI7ICAvLyBN
YWtlcyBhID4gYgorICAgICAgICBib29sIHJldDsKKyAgICAgICAgaWYgKGNtcCA8IDApIHsgYSA9
ICZyaHM7IGIgPSB0aGlzOyByZXQgPSB0cnVlOyB9CisgICAgICAgIGVsc2UgICAgICAgICB7IGEg
PSB0aGlzOyBiID0gJnJoczsgcmV0ID0gZmFsc2U7IH0KKworICAgICAgICBUeXBlIGJvcnJvdyA9
IDA7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYS0+Y291bnRfOyBpKyspIHsKKyAg
ICAgICAgICAgIFR5cGUgZCA9IGEtPmRpZ2l0c19baV0gLSBib3Jyb3c7CisgICAgICAgICAgICBp
ZiAoaSA8IGItPmNvdW50XykKKyAgICAgICAgICAgICAgICBkIC09IGItPmRpZ2l0c19baV07Cisg
ICAgICAgICAgICBib3Jyb3cgPSAoZCA+IGEtPmRpZ2l0c19baV0pID8gMSA6IDA7CisgICAgICAg
ICAgICBvdXQtPmRpZ2l0c19baV0gPSBkOworICAgICAgICAgICAgaWYgKGQgIT0gMCkKKyAgICAg
ICAgICAgICAgICBvdXQtPmNvdW50XyA9IGkgKyAxOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIHJldDsKKyAgICB9CisKKyAgICBpbnQgQ29tcGFyZShjb25zdCBCaWdJbnRlZ2VyJiByaHMp
IGNvbnN0IHsKKyAgICAgICAgaWYgKGNvdW50XyAhPSByaHMuY291bnRfKQorICAgICAgICAgICAg
cmV0dXJuIGNvdW50XyA8IHJocy5jb3VudF8gPyAtMSA6IDE7CisKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IGNvdW50XzsgaS0tID4gMDspCisgICAgICAgICAgICBpZiAoZGlnaXRzX1tpXSAhPSBy
aHMuZGlnaXRzX1tpXSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZGlnaXRzX1tpXSA8IHJocy5k
aWdpdHNfW2ldID8gLTEgOiAxOworCisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHNp
emVfdCBHZXRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIGNvdW50XzsgfQorICAgIFR5cGUgR2V0RGln
aXQoc2l6ZV90IGluZGV4KSBjb25zdCB7IFJBUElESlNPTl9BU1NFUlQoaW5kZXggPCBjb3VudF8p
OyByZXR1cm4gZGlnaXRzX1tpbmRleF07IH0KKyAgICBib29sIElzWmVybygpIGNvbnN0IHsgcmV0
dXJuIGNvdW50XyA9PSAxICYmIGRpZ2l0c19bMF0gPT0gMDsgfQorCitwcml2YXRlOgorICAgIHZv
aWQgQXBwZW5kRGVjaW1hbDY0KGNvbnN0IGNoYXIqIGJlZ2luLCBjb25zdCBjaGFyKiBlbmQpIHsK
KyAgICAgICAgdWludDY0X3QgdSA9IFBhcnNlVWludDY0KGJlZ2luLCBlbmQpOworICAgICAgICBp
ZiAoSXNaZXJvKCkpCisgICAgICAgICAgICAqdGhpcyA9IHU7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgdW5zaWduZWQgZXhwID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCAtIGJlZ2lu
KTsKKyAgICAgICAgICAgIChNdWx0aXBseVBvdzUoZXhwKSA8PD0gZXhwKSArPSB1OyAgIC8vICp0
aGlzID0gKnRoaXMgKiAxMF5leHAgKyB1CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIFB1
c2hCYWNrKFR5cGUgZGlnaXQpIHsKKyAgICAgICAgUkFQSURKU09OX0FTU0VSVChjb3VudF8gPCBr
Q2FwYWNpdHkpOworICAgICAgICBkaWdpdHNfW2NvdW50XysrXSA9IGRpZ2l0OworICAgIH0KKwor
ICAgIHN0YXRpYyB1aW50NjRfdCBQYXJzZVVpbnQ2NChjb25zdCBjaGFyKiBiZWdpbiwgY29uc3Qg
Y2hhciogZW5kKSB7CisgICAgICAgIHVpbnQ2NF90IHIgPSAwOworICAgICAgICBmb3IgKGNvbnN0
IGNoYXIqIHAgPSBiZWdpbjsgcCAhPSBlbmQ7ICsrcCkgeworICAgICAgICAgICAgUkFQSURKU09O
X0FTU0VSVCgqcCA+PSAnMCcgJiYgKnAgPD0gJzknKTsKKyAgICAgICAgICAgIHIgPSByICogMTAg
KyAoKnAgLSAnMCcpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByOworICAgIH0KKworICAg
IC8vIEFzc3VtZSBhICogYiArIGsgPCAyXjEyOAorICAgIHN0YXRpYyB1aW50NjRfdCBNdWxBZGQ2
NCh1aW50NjRfdCBhLCB1aW50NjRfdCBiLCB1aW50NjRfdCBrLCB1aW50NjRfdCogb3V0SGlnaCkg
eworI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIGRlZmluZWQoX01fQU1ENjQpCisgICAgICAgIHVp
bnQ2NF90IGxvdyA9IF91bXVsMTI4KGEsIGIsIG91dEhpZ2gpICsgazsKKyAgICAgICAgaWYgKGxv
dyA8IGspCisgICAgICAgICAgICAoKm91dEhpZ2gpKys7CisgICAgICAgIHJldHVybiBsb3c7Cisj
ZWxpZiAoX19HTlVDX18gPiA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fID49
IDYpKSAmJiBkZWZpbmVkKF9feDg2XzY0X18pCisgICAgICAgIHVuc2lnbmVkIF9faW50MTI4IHAg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBfX2ludDEyOD4oYSkgKiBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBfX2ludDEyOD4oYik7CisgICAgICAgIHAgKz0gazsKKyAgICAgICAgKm91dEhpZ2ggPSBwID4+
IDY0OworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHApOworI2Vsc2UKKyAg
ICAgICAgY29uc3QgdWludDY0X3QgYTAgPSBhICYgMHhGRkZGRkZGRiwgYTEgPSBhID4+IDMyLCBi
MCA9IGIgJiAweEZGRkZGRkZGLCBiMSA9IGIgPj4gMzI7CisgICAgICAgIHVpbnQ2NF90IHgwID0g
YTAgKiBiMCwgeDEgPSBhMCAqIGIxLCB4MiA9IGExICogYjAsIHgzID0gYTEgKiBiMTsKKyAgICAg
ICAgeDEgKz0gKHgwID4+IDMyKTsgLy8gY2FuJ3QgZ2l2ZSBjYXJyeQorICAgICAgICB4MSArPSB4
MjsKKyAgICAgICAgaWYgKHgxIDwgeDIpCisgICAgICAgICAgICB4MyArPSAoc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KDEpIDw8IDMyKTsKKyAgICAgICAgdWludDY0X3QgbG8gPSAoeDEgPDwgMzIpICsg
KHgwICYgMHhGRkZGRkZGRik7CisgICAgICAgIHVpbnQ2NF90IGhpID0geDMgKyAoeDEgPj4gMzIp
OworCisgICAgICAgIGxvICs9IGs7CisgICAgICAgIGlmIChsbyA8IGspCisgICAgICAgICAgICBo
aSsrOworICAgICAgICAqb3V0SGlnaCA9IGhpOworICAgICAgICByZXR1cm4gbG87CisjZW5kaWYK
KyAgICB9CisKKyAgICBzdGF0aWMgVHlwZSBGdWxsQWRkKFR5cGUgYSwgVHlwZSBiLCBib29sIGlu
Q2FycnksIGJvb2wqIG91dENhcnJ5KSB7CisgICAgICAgIFR5cGUgYyA9IGEgKyBiICsgKGluQ2Fy
cnkgPyAxIDogMCk7CisgICAgICAgICpvdXRDYXJyeSA9IGMgPCBhOworICAgICAgICByZXR1cm4g
YzsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtCaXRDb3VudCA9IDMzMjg7ICAv
LyA2NGJpdCAqIDU0ID4gMTBeMTAwMAorICAgIHN0YXRpYyBjb25zdCBzaXplX3Qga0NhcGFjaXR5
ID0ga0JpdENvdW50IC8gc2l6ZW9mKFR5cGUpOworICAgIHN0YXRpYyBjb25zdCBzaXplX3Qga1R5
cGVCaXQgPSBzaXplb2YoVHlwZSkgKiA4OworCisgICAgVHlwZSBkaWdpdHNfW2tDYXBhY2l0eV07
CisgICAgc2l6ZV90IGNvdW50XzsKK307CisKK30gLy8gbmFtZXNwYWNlIGludGVybmFsCitSQVBJ
REpTT05fTkFNRVNQQUNFX0VORAorCisjZW5kaWYgLy8gUkFQSURKU09OX0JJR0lOVEVHRVJfSF8K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBp
ZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvZGl5ZnAuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2lu
Y2x1ZGUvcmFwaWRqc29uL2ludGVybmFsL2RpeWZwLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRl
L3JhcGlkanNvbi9pbnRlcm5hbC9kaXlmcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjY4
IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEgTWlsbyBZaXAKKy8vCisvLyBQZXJtaXNzaW9uIGlz
IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcg
YSBjb3B5CisvLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24g
ZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAorLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhv
dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwor
Ly8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJs
aWNlbnNlLCBhbmQvb3Igc2VsbAorLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBl
cm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisvLyBmdXJuaXNoZWQgdG8gZG8g
c28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorLy8KKy8vIFRoZSBhYm92
ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGlu
Y2x1ZGVkIGluCisvLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBT
b2Z0d2FyZS4KKy8vCisvLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9V
VCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorLy8gSU1QTElFRCwgSU5DTFVESU5H
IEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisv
LyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUKKy8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUg
TElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKy8vIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5H
IEZST00sCisvLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU
SEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCisvLyBUSEUgU09GVFdBUkUuCisKKy8vIFRoaXMg
aXMgYSBDKysgaGVhZGVyLW9ubHkgaW1wbGVtZW50YXRpb24gb2YgR3Jpc3UyIGFsZ29yaXRobSBm
cm9tIHRoZSBwdWJsaWNhdGlvbjoKKy8vIExvaXRzY2gsIEZsb3JpYW4uICJQcmludGluZyBmbG9h
dGluZy1wb2ludCBudW1iZXJzIHF1aWNrbHkgYW5kIGFjY3VyYXRlbHkgd2l0aAorLy8gaW50ZWdl
cnMuIiBBQ00gU2lncGxhbiBOb3RpY2VzIDQ1LjYgKDIwMTApOiAyMzMtMjQzLgorCisjaWZuZGVm
IFJBUElESlNPTl9ESVlGUF9IXworI2RlZmluZSBSQVBJREpTT05fRElZRlBfSF8KKworI2lmIGRl
ZmluZWQoX01TQ19WRVIpCisjaW5jbHVkZSA8aW50cmluLmg+CisjaWYgZGVmaW5lZChfTV9BTUQ2
NCkKKyNwcmFnbWEgaW50cmluc2ljKF9CaXRTY2FuUmV2ZXJzZTY0KQorI2VuZGlmCisjZW5kaWYK
KworUkFQSURKU09OX05BTUVTUEFDRV9CRUdJTgorbmFtZXNwYWNlIGludGVybmFsIHsKKworI2lm
ZGVmIF9fR05VQ19fCitSQVBJREpTT05fRElBR19QVVNICitSQVBJREpTT05fRElBR19PRkYoZWZm
YysrKQorI2VuZGlmCisKK3N0cnVjdCBEaXlGcCB7CisgICAgRGl5RnAoKSB7fQorCisgICAgRGl5
RnAodWludDY0X3QgZnAsIGludCBleHApIDogZihmcCksIGUoZXhwKSB7fQorCisgICAgZXhwbGlj
aXQgRGl5RnAoZG91YmxlIGQpIHsKKyAgICAgICAgdW5pb24geworICAgICAgICAgICAgZG91Ymxl
IGQ7CisgICAgICAgICAgICB1aW50NjRfdCB1NjQ7CisgICAgICAgIH0gdSA9IHsgZCB9OworCisg
ICAgICAgIGludCBiaWFzZWRfZSA9ICh1LnU2NCAmIGtEcEV4cG9uZW50TWFzaykgPj4ga0RwU2ln
bmlmaWNhbmRTaXplOworICAgICAgICB1aW50NjRfdCBzaWduaWZpY2FuZCA9ICh1LnU2NCAmIGtE
cFNpZ25pZmljYW5kTWFzayk7CisgICAgICAgIGlmIChiaWFzZWRfZSAhPSAwKSB7CisgICAgICAg
ICAgICBmID0gc2lnbmlmaWNhbmQgKyBrRHBIaWRkZW5CaXQ7CisgICAgICAgICAgICBlID0gYmlh
c2VkX2UgLSBrRHBFeHBvbmVudEJpYXM7CisgICAgICAgIH0gCisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgZiA9IHNpZ25pZmljYW5kOworICAgICAgICAgICAgZSA9IGtEcE1pbkV4cG9uZW50
ICsgMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIERpeUZwIG9wZXJhdG9yLShjb25zdCBEaXlG
cCYgcmhzKSBjb25zdCB7CisgICAgICAgIHJldHVybiBEaXlGcChmIC0gcmhzLmYsIGUpOworICAg
IH0KKworICAgIERpeUZwIG9wZXJhdG9yKihjb25zdCBEaXlGcCYgcmhzKSBjb25zdCB7CisjaWYg
ZGVmaW5lZChfTVNDX1ZFUikgJiYgZGVmaW5lZChfTV9BTUQ2NCkKKyAgICAgICAgdWludDY0X3Qg
aDsKKyAgICAgICAgdWludDY0X3QgbCA9IF91bXVsMTI4KGYsIHJocy5mLCAmaCk7CisgICAgICAg
IGlmIChsICYgKHVpbnQ2NF90KDEpIDw8IDYzKSkgLy8gcm91bmRpbmcKKyAgICAgICAgICAgIGgr
KzsKKyAgICAgICAgcmV0dXJuIERpeUZwKGgsIGUgKyByaHMuZSArIDY0KTsKKyNlbGlmIChfX0dO
VUNfXyA+IDQgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPj0gNikpICYmIGRl
ZmluZWQoX194ODZfNjRfXykKKyAgICAgICAgdW5zaWduZWQgX19pbnQxMjggcCA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkIF9faW50MTI4PihmKSAqIHN0YXRpY19jYXN0PHVuc2lnbmVkIF9faW50MTI4
PihyaHMuZik7CisgICAgICAgIHVpbnQ2NF90IGggPSBwID4+IDY0OworICAgICAgICB1aW50NjRf
dCBsID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHApOworICAgICAgICBpZiAobCAmICh1aW50NjRf
dCgxKSA8PCA2MykpIC8vIHJvdW5kaW5nCisgICAgICAgICAgICBoKys7CisgICAgICAgIHJldHVy
biBEaXlGcChoLCBlICsgcmhzLmUgKyA2NCk7CisjZWxzZQorICAgICAgICBjb25zdCB1aW50NjRf
dCBNMzIgPSAweEZGRkZGRkZGOworICAgICAgICBjb25zdCB1aW50NjRfdCBhID0gZiA+PiAzMjsK
KyAgICAgICAgY29uc3QgdWludDY0X3QgYiA9IGYgJiBNMzI7CisgICAgICAgIGNvbnN0IHVpbnQ2
NF90IGMgPSByaHMuZiA+PiAzMjsKKyAgICAgICAgY29uc3QgdWludDY0X3QgZCA9IHJocy5mICYg
TTMyOworICAgICAgICBjb25zdCB1aW50NjRfdCBhYyA9IGEgKiBjOworICAgICAgICBjb25zdCB1
aW50NjRfdCBiYyA9IGIgKiBjOworICAgICAgICBjb25zdCB1aW50NjRfdCBhZCA9IGEgKiBkOwor
ICAgICAgICBjb25zdCB1aW50NjRfdCBiZCA9IGIgKiBkOworICAgICAgICB1aW50NjRfdCB0bXAg
PSAoYmQgPj4gMzIpICsgKGFkICYgTTMyKSArIChiYyAmIE0zMik7CisgICAgICAgIHRtcCArPSAx
VSA8PCAzMTsgIC8vLyBtdWx0X3JvdW5kCisgICAgICAgIHJldHVybiBEaXlGcChhYyArIChhZCA+
PiAzMikgKyAoYmMgPj4gMzIpICsgKHRtcCA+PiAzMiksIGUgKyByaHMuZSArIDY0KTsKKyNlbmRp
ZgorICAgIH0KKworICAgIERpeUZwIE5vcm1hbGl6ZSgpIGNvbnN0IHsKKyNpZiBkZWZpbmVkKF9N
U0NfVkVSKSAmJiBkZWZpbmVkKF9NX0FNRDY0KQorICAgICAgICB1bnNpZ25lZCBsb25nIGluZGV4
OworICAgICAgICBfQml0U2NhblJldmVyc2U2NCgmaW5kZXgsIGYpOworICAgICAgICByZXR1cm4g
RGl5RnAoZiA8PCAoNjMgLSBpbmRleCksIGUgLSAoNjMgLSBpbmRleCkpOworI2VsaWYgZGVmaW5l
ZChfX0dOVUNfXykgJiYgX19HTlVDX18gPj0gNAorICAgICAgICBpbnQgcyA9IF9fYnVpbHRpbl9j
bHpsbChmKTsKKyAgICAgICAgcmV0dXJuIERpeUZwKGYgPDwgcywgZSAtIHMpOworI2Vsc2UKKyAg
ICAgICAgRGl5RnAgcmVzID0gKnRoaXM7CisgICAgICAgIHdoaWxlICghKHJlcy5mICYgKHN0YXRp
Y19jYXN0PHVpbnQ2NF90PigxKSA8PCA2MykpKSB7CisgICAgICAgICAgICByZXMuZiA8PD0gMTsK
KyAgICAgICAgICAgIHJlcy5lLS07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlczsKKyNl
bmRpZgorICAgIH0KKworICAgIERpeUZwIE5vcm1hbGl6ZUJvdW5kYXJ5KCkgY29uc3QgeworICAg
ICAgICBEaXlGcCByZXMgPSAqdGhpczsKKyAgICAgICAgd2hpbGUgKCEocmVzLmYgJiAoa0RwSGlk
ZGVuQml0IDw8IDEpKSkgeworICAgICAgICAgICAgcmVzLmYgPDw9IDE7CisgICAgICAgICAgICBy
ZXMuZS0tOworICAgICAgICB9CisgICAgICAgIHJlcy5mIDw8PSAoa0RpeVNpZ25pZmljYW5kU2l6
ZSAtIGtEcFNpZ25pZmljYW5kU2l6ZSAtIDIpOworICAgICAgICByZXMuZSA9IHJlcy5lIC0gKGtE
aXlTaWduaWZpY2FuZFNpemUgLSBrRHBTaWduaWZpY2FuZFNpemUgLSAyKTsKKyAgICAgICAgcmV0
dXJuIHJlczsKKyAgICB9CisKKyAgICB2b2lkIE5vcm1hbGl6ZWRCb3VuZGFyaWVzKERpeUZwKiBt
aW51cywgRGl5RnAqIHBsdXMpIGNvbnN0IHsKKyAgICAgICAgRGl5RnAgcGwgPSBEaXlGcCgoZiA8
PCAxKSArIDEsIGUgLSAxKS5Ob3JtYWxpemVCb3VuZGFyeSgpOworICAgICAgICBEaXlGcCBtaSA9
IChmID09IGtEcEhpZGRlbkJpdCkgPyBEaXlGcCgoZiA8PCAyKSAtIDEsIGUgLSAyKSA6IERpeUZw
KChmIDw8IDEpIC0gMSwgZSAtIDEpOworICAgICAgICBtaS5mIDw8PSBtaS5lIC0gcGwuZTsKKyAg
ICAgICAgbWkuZSA9IHBsLmU7CisgICAgICAgICpwbHVzID0gcGw7CisgICAgICAgICptaW51cyA9
IG1pOworICAgIH0KKworICAgIGRvdWJsZSBUb0RvdWJsZSgpIGNvbnN0IHsKKyAgICAgICAgdW5p
b24geworICAgICAgICAgICAgZG91YmxlIGQ7CisgICAgICAgICAgICB1aW50NjRfdCB1NjQ7Cisg
ICAgICAgIH11OworICAgICAgICB1aW50NjRfdCBzaWduaWZpY2FuZCA9IGY7CisgICAgICAgIGlu
dCBleHBvbmVudCA9IGU7CisgICAgICAgIHdoaWxlIChzaWduaWZpY2FuZCA+IGtEcEhpZGRlbkJp
dCArIGtEcFNpZ25pZmljYW5kTWFzaykgeworICAgICAgICAgICAgc2lnbmlmaWNhbmQgPj49IDE7
CisgICAgICAgICAgICBleHBvbmVudCsrOworICAgICAgICB9CisgICAgICAgIHdoaWxlIChleHBv
bmVudCA+IGtEcERlbm9ybWFsRXhwb25lbnQgJiYgKHNpZ25pZmljYW5kICYga0RwSGlkZGVuQml0
KSA9PSAwKSB7CisgICAgICAgICAgICBzaWduaWZpY2FuZCA8PD0gMTsKKyAgICAgICAgICAgIGV4
cG9uZW50LS07CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4cG9uZW50ID49IGtEcE1heEV4cG9u
ZW50KSB7CisgICAgICAgICAgICB1LnU2NCA9IGtEcEV4cG9uZW50TWFzazsgICAgLy8gSW5maW5p
dHkKKyAgICAgICAgICAgIHJldHVybiB1LmQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAo
ZXhwb25lbnQgPCBrRHBEZW5vcm1hbEV4cG9uZW50KQorICAgICAgICAgICAgcmV0dXJuIDAuMDsK
KyAgICAgICAgY29uc3QgdWludDY0X3QgYmUgPSAoZXhwb25lbnQgPT0ga0RwRGVub3JtYWxFeHBv
bmVudCAmJiAoc2lnbmlmaWNhbmQgJiBrRHBIaWRkZW5CaXQpID09IDApID8gMCA6IAorICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGV4cG9uZW50ICsga0RwRXhwb25lbnRCaWFzKTsK
KyAgICAgICAgdS51NjQgPSAoc2lnbmlmaWNhbmQgJiBrRHBTaWduaWZpY2FuZE1hc2spIHwgKGJl
IDw8IGtEcFNpZ25pZmljYW5kU2l6ZSk7CisgICAgICAgIHJldHVybiB1LmQ7CisgICAgfQorCisg
ICAgc3RhdGljIGNvbnN0IGludCBrRGl5U2lnbmlmaWNhbmRTaXplID0gNjQ7CisgICAgc3RhdGlj
IGNvbnN0IGludCBrRHBTaWduaWZpY2FuZFNpemUgPSA1MjsKKyAgICBzdGF0aWMgY29uc3QgaW50
IGtEcEV4cG9uZW50QmlhcyA9IDB4M0ZGICsga0RwU2lnbmlmaWNhbmRTaXplOworICAgIHN0YXRp
YyBjb25zdCBpbnQga0RwTWF4RXhwb25lbnQgPSAweDdGRiAtIGtEcEV4cG9uZW50QmlhczsKKyAg
ICBzdGF0aWMgY29uc3QgaW50IGtEcE1pbkV4cG9uZW50ID0gLWtEcEV4cG9uZW50QmlhczsKKyAg
ICBzdGF0aWMgY29uc3QgaW50IGtEcERlbm9ybWFsRXhwb25lbnQgPSAta0RwRXhwb25lbnRCaWFz
ICsgMTsKKyAgICBzdGF0aWMgY29uc3QgdWludDY0X3Qga0RwRXhwb25lbnRNYXNrID0gUkFQSURK
U09OX1VJTlQ2NF9DMigweDdGRjAwMDAwLCAweDAwMDAwMDAwKTsKKyAgICBzdGF0aWMgY29uc3Qg
dWludDY0X3Qga0RwU2lnbmlmaWNhbmRNYXNrID0gUkFQSURKU09OX1VJTlQ2NF9DMigweDAwMEZG
RkZGLCAweEZGRkZGRkZGKTsKKyAgICBzdGF0aWMgY29uc3QgdWludDY0X3Qga0RwSGlkZGVuQml0
ID0gUkFQSURKU09OX1VJTlQ2NF9DMigweDAwMTAwMDAwLCAweDAwMDAwMDAwKTsKKworICAgIHVp
bnQ2NF90IGY7CisgICAgaW50IGU7Cit9OworCitpbmxpbmUgRGl5RnAgR2V0Q2FjaGVkUG93ZXJC
eUluZGV4KHNpemVfdCBpbmRleCkgeworICAgIC8vIDEwXi0zNDgsIDEwXi0zNDAsIC4uLiwgMTBe
MzQwCisgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGtDYWNoZWRQb3dlcnNfRltdID0geworICAg
ICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZmE4ZmQ1YTAsIDB4MDgxYzAyODgpLCBSQVBJREpT
T05fVUlOVDY0X0MyKDB4YmFhZWUxN2YsIDB4YTIzZWJmNzYpLAorICAgICAgICBSQVBJREpTT05f
VUlOVDY0X0MyKDB4OGIxNmZiMjAsIDB4MzA1NWFjNzYpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4
Y2Y0Mjg5NGEsIDB4NWRjZTM1ZWEpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4OWE2
YmIwYWEsIDB4NTU2NTNiMmQpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZTYxYWNmMDMsIDB4M2Qx
YTQ1ZGYpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4YWI3MGZlMTcsIDB4Yzc5YWM2
Y2EpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZmY3N2IxZmMsIDB4YmViY2RjNGYpLAorICAgICAg
ICBSQVBJREpTT05fVUlOVDY0X0MyKDB4YmU1NjkxZWYsIDB4NDE2YmQ2MGMpLCBSQVBJREpTT05f
VUlOVDY0X0MyKDB4OGRkMDFmYWQsIDB4OTA3ZmZjM2MpLAorICAgICAgICBSQVBJREpTT05fVUlO
VDY0X0MyKDB4ZDM1MTVjMjgsIDB4MzE1NTlhODMpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4OWQ3
MWFjOGYsIDB4YWRhNmM5YjUpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZWE5YzIy
NzcsIDB4MjNlZThiY2IpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4YWVjYzQ5OTEsIDB4NDA3ODUz
NmQpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ODIzYzEyNzksIDB4NWRiNmNlNTcp
LCBSQVBJREpTT05fVUlOVDY0X0MyKDB4YzIxMDk0MzYsIDB4NGRmYjU2MzcpLAorICAgICAgICBS
QVBJREpTT05fVUlOVDY0X0MyKDB4OTA5NmVhNmYsIDB4Mzg0ODk4NGYpLCBSQVBJREpTT05fVUlO
VDY0X0MyKDB4ZDc3NDg1Y2IsIDB4MjU4MjNhYzcpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0
X0MyKDB4YTA4NmNmY2QsIDB4OTdiZjk3ZjQpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZWYzNDBh
OTgsIDB4MTcyYWFjZTUpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4YjIzODY3ZmIs
IDB4MmEzNWIyOGUpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4ODRjOGQ0ZGYsIDB4ZDJjNjNmM2Ip
LAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4YzVkZDQ0MjcsIDB4MWFkM2NkYmEpLCBS
QVBJREpTT05fVUlOVDY0X0MyKDB4OTM2YjlmY2UsIDB4YmIyNWM5OTYpLAorICAgICAgICBSQVBJ
REpTT05fVUlOVDY0X0MyKDB4ZGJhYzZjMjQsIDB4N2Q2MmE1ODQpLCBSQVBJREpTT05fVUlOVDY0
X0MyKDB4YTNhYjY2NTgsIDB4MGQ1ZmRhZjYpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0My
KDB4ZjNlMmY4OTMsIDB4ZGVjM2YxMjYpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4YjViNWFkYTgs
IDB4YWFmZjgwYjgpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ODc2MjVmMDUsIDB4
NmM3YzRhOGIpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4YzliY2ZmNjAsIDB4MzRjMTMwNTMpLAor
ICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4OTY0ZTg1OGMsIDB4OTFiYTI2NTUpLCBSQVBJ
REpTT05fVUlOVDY0X0MyKDB4ZGZmOTc3MjQsIDB4NzAyOTdlYmQpLAorICAgICAgICBSQVBJREpT
T05fVUlOVDY0X0MyKDB4YTZkZmJkOWYsIDB4YjhlNWI4OGYpLCBSQVBJREpTT05fVUlOVDY0X0My
KDB4ZjhhOTVmY2YsIDB4ODg3NDdkOTQpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4
Yjk0NDcwOTMsIDB4OGZhODliY2YpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4OGEwOGYwZjgsIDB4
YmYwZjE1NmIpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4Y2RiMDI1NTUsIDB4NjUz
MTMxYjYpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4OTkzZmUyYzYsIDB4ZDA3YjdmYWMpLAorICAg
ICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZTQ1YzEwYzQsIDB4MmEyYjNiMDYpLCBSQVBJREpT
T05fVUlOVDY0X0MyKDB4YWEyNDI0OTksIDB4Njk3MzkyZDMpLAorICAgICAgICBSQVBJREpTT05f
VUlOVDY0X0MyKDB4ZmQ4N2I1ZjIsIDB4ODMwMGNhMGUpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4
YmNlNTA4NjQsIDB4OTIxMTFhZWIpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4OGNi
Y2NjMDksIDB4NmY1MDg4Y2MpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZDFiNzE3NTgsIDB4ZTIx
OTY1MmMpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4OWM0MDAwMDAsIDB4MDAwMDAw
MDApLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZThkNGE1MTAsIDB4MDAwMDAwMDApLAorICAgICAg
ICBSQVBJREpTT05fVUlOVDY0X0MyKDB4YWQ3OGViYzUsIDB4YWM2MjAwMDApLCBSQVBJREpTT05f
VUlOVDY0X0MyKDB4ODEzZjM5NzgsIDB4Zjg5NDA5ODQpLAorICAgICAgICBSQVBJREpTT05fVUlO
VDY0X0MyKDB4YzA5N2NlN2IsIDB4YzkwNzE1YjMpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4OGY3
ZTMyY2UsIDB4N2JlYTVjNzApLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZDVkMjM4
YTQsIDB4YWJlOTgwNjgpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4OWY0ZjI3MjYsIDB4MTc5YTIy
NDUpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZWQ2M2EyMzEsIDB4ZDRjNGZiMjcp
LCBSQVBJREpTT05fVUlOVDY0X0MyKDB4YjBkZTY1MzgsIDB4OGNjOGFkYTgpLAorICAgICAgICBS
QVBJREpTT05fVUlOVDY0X0MyKDB4ODNjNzA4OGUsIDB4MWFhYjY1ZGIpLCBSQVBJREpTT05fVUlO
VDY0X0MyKDB4YzQ1ZDFkZjksIDB4NDI3MTFkOWEpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0
X0MyKDB4OTI0ZDY5MmMsIDB4YTYxYmU3NTgpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZGEwMWVl
NjQsIDB4MWE3MDhkZWEpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4YTI2ZGEzOTks
IDB4OWFlZjc3NGEpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZjIwOTc4N2IsIDB4YjQ3ZDZiODUp
LAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4YjQ1NGU0YTEsIDB4NzlkZDE4NzcpLCBS
QVBJREpTT05fVUlOVDY0X0MyKDB4ODY1Yjg2OTIsIDB4NWI5YmM1YzIpLAorICAgICAgICBSQVBJ
REpTT05fVUlOVDY0X0MyKDB4YzgzNTUzYzUsIDB4Yzg5NjVkM2QpLCBSQVBJREpTT05fVUlOVDY0
X0MyKDB4OTUyYWI0NWMsIDB4ZmE5N2EwYjMpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0My
KDB4ZGU0NjlmYmQsIDB4OTlhMDVmZTMpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4YTU5YmMyMzQs
IDB4ZGIzOThjMjUpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZjZjNjlhNzIsIDB4
YTM5ODlmNWMpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4YjdkY2JmNTMsIDB4NTRlOWJlY2UpLAor
ICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ODhmY2YzMTcsIDB4ZjIyMjQxZTIpLCBSQVBJ
REpTT05fVUlOVDY0X0MyKDB4Y2MyMGNlOWIsIDB4ZDM1Yzc4YTUpLAorICAgICAgICBSQVBJREpT
T05fVUlOVDY0X0MyKDB4OTgxNjVhZjMsIDB4N2IyMTUzZGYpLCBSQVBJREpTT05fVUlOVDY0X0My
KDB4ZTJhMGI1ZGMsIDB4OTcxZjMwM2EpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4
YThkOWQxNTMsIDB4NWNlM2IzOTYpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZmI5YjdjZDksIDB4
YTRhNzQ0M2MpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4YmI3NjRjNGMsIDB4YTdh
NDQ0MTApLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4OGJhYjhlZWYsIDB4YjY0MDljMWEpLAorICAg
ICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZDAxZmVmMTAsIDB4YTY1Nzg0MmMpLCBSQVBJREpT
T05fVUlOVDY0X0MyKDB4OWIxMGE0ZTUsIDB4ZTk5MTMxMjkpLAorICAgICAgICBSQVBJREpTT05f
VUlOVDY0X0MyKDB4ZTcxMDliZmIsIDB4YTE5YzBjOWQpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4
YWMyODIwZDksIDB4NjIzYmY0MjkpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ODA0
NDRiNWUsIDB4N2FhN2NmODUpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4YmYyMWU0NDAsIDB4MDNh
Y2RkMmQpLAorICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4OGU2NzljMmYsIDB4NWU0NGZm
OGYpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZDQzMzE3OWQsIDB4OWM4Y2I4NDEpLAorICAgICAg
ICBSQVBJREpTT05fVUlOVDY0X0MyKDB4OWUxOWRiOTIsIDB4YjRlMzFiYTkpLCBSQVBJREpTT05f
VUlOVDY0X0MyKDB4ZWI5NmJmNmUsIDB4YmFkZjc3ZDkpLAorICAgICAgICBSQVBJREpTT05fVUlO
VDY0X0MyKDB4YWY4NzAyM2IsIDB4OWJmMGVlNmIpCisgICAgfTsKKyAgICBzdGF0aWMgY29uc3Qg
aW50MTZfdCBrQ2FjaGVkUG93ZXJzX0VbXSA9IHsKKyAgICAgICAgLTEyMjAsIC0xMTkzLCAtMTE2
NiwgLTExNDAsIC0xMTEzLCAtMTA4NywgLTEwNjAsIC0xMDM0LCAtMTAwNywgIC05ODAsCisgICAg
ICAgIC05NTQsICAtOTI3LCAgLTkwMSwgIC04NzQsICAtODQ3LCAgLTgyMSwgIC03OTQsICAtNzY4
LCAgLTc0MSwgIC03MTUsCisgICAgICAgIC02ODgsICAtNjYxLCAgLTYzNSwgIC02MDgsICAtNTgy
LCAgLTU1NSwgIC01MjksICAtNTAyLCAgLTQ3NSwgIC00NDksCisgICAgICAgIC00MjIsICAtMzk2
LCAgLTM2OSwgIC0zNDMsICAtMzE2LCAgLTI4OSwgIC0yNjMsICAtMjM2LCAgLTIxMCwgIC0xODMs
CisgICAgICAgIC0xNTcsICAtMTMwLCAgLTEwMywgICAtNzcsICAgLTUwLCAgIC0yNCwgICAgIDMs
ICAgIDMwLCAgICA1NiwgICAgODMsCisgICAgICAgIDEwOSwgICAxMzYsICAgMTYyLCAgIDE4OSwg
ICAyMTYsICAgMjQyLCAgIDI2OSwgICAyOTUsICAgMzIyLCAgIDM0OCwKKyAgICAgICAgMzc1LCAg
IDQwMiwgICA0MjgsICAgNDU1LCAgIDQ4MSwgICA1MDgsICAgNTM0LCAgIDU2MSwgICA1ODgsICAg
NjE0LAorICAgICAgICA2NDEsICAgNjY3LCAgIDY5NCwgICA3MjAsICAgNzQ3LCAgIDc3NCwgICA4
MDAsICAgODI3LCAgIDg1MywgICA4ODAsCisgICAgICAgIDkwNywgICA5MzMsICAgOTYwLCAgIDk4
NiwgIDEwMTMsICAxMDM5LCAgMTA2NgorICAgIH07CisgICAgcmV0dXJuIERpeUZwKGtDYWNoZWRQ
b3dlcnNfRltpbmRleF0sIGtDYWNoZWRQb3dlcnNfRVtpbmRleF0pOworfQorICAgIAoraW5saW5l
IERpeUZwIEdldENhY2hlZFBvd2VyKGludCBlLCBpbnQqIEspIHsKKworICAgIC8vaW50IGsgPSBz
dGF0aWNfY2FzdDxpbnQ+KGNlaWwoKC02MSAtIGUpICogMC4zMDEwMjk5OTU2NjM5ODExNCkpICsg
Mzc0OworICAgIGRvdWJsZSBkayA9ICgtNjEgLSBlKSAqIDAuMzAxMDI5OTk1NjYzOTgxMTQgKyAz
NDc7ICAvLyBkayBtdXN0IGJlIHBvc2l0aXZlLCBzbyBjYW4gZG8gY2VpbGluZyBpbiBwb3NpdGl2
ZQorICAgIGludCBrID0gc3RhdGljX2Nhc3Q8aW50Pihkayk7CisgICAgaWYgKGsgIT0gZGspCisg
ICAgICAgIGsrKzsKKworICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KChrID4+IDMpICsgMSk7CisgICAgKksgPSAtKC0zNDggKyBzdGF0aWNfY2FzdDxpbnQ+KGluZGV4
IDw8IDMpKTsgICAgLy8gZGVjaW1hbCBleHBvbmVudCBubyBuZWVkIGxvb2t1cCB0YWJsZQorCisg
ICAgcmV0dXJuIEdldENhY2hlZFBvd2VyQnlJbmRleChpbmRleCk7Cit9CisKK2lubGluZSBEaXlG
cCBHZXRDYWNoZWRQb3dlcjEwKGludCBleHAsIGludCAqb3V0RXhwKSB7CisgICAgIHVuc2lnbmVk
IGluZGV4ID0gKGV4cCArIDM0OCkgLyA4OworICAgICAqb3V0RXhwID0gLTM0OCArIGluZGV4ICog
ODsKKyAgICAgcmV0dXJuIEdldENhY2hlZFBvd2VyQnlJbmRleChpbmRleCk7CisgfQorCisjaWZk
ZWYgX19HTlVDX18KK1JBUElESlNPTl9ESUFHX1BPUAorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNl
IGludGVybmFsCitSQVBJREpTT05fTkFNRVNQQUNFX0VORAorCisjZW5kaWYgLy8gUkFQSURKU09O
X0RJWUZQX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRf
cGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ludGVybmFsL2R0b2EuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFw
aWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ludGVybmFsL2R0b2EuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29u
L2luY2x1ZGUvcmFwaWRqc29uL2ludGVybmFsL2R0b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDIyNSBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExIE1pbG8gWWlwCisvLworLy8gUGVybWlz
c2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0
YWluaW5nIGEgY29weQorLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVu
dGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKKy8vIGluIHRoZSBTb2Z0d2Fy
ZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSBy
aWdodHMKKy8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0
ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKKy8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFu
ZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLy8gZnVybmlzaGVk
IHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKy8vCisvLyBU
aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFs
bCBiZSBpbmNsdWRlZCBpbgorLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBv
ZiB0aGUgU29mdHdhcmUuCisvLworLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs
IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKy8vIElNUExJRUQsIElO
Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZLAorLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdF
TUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisvLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xE
RVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisvLyBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwg
QVJJU0lORyBGUk9NLAorLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdB
UkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgorLy8gVEhFIFNPRlRXQVJFLgorCisv
LyBUaGlzIGlzIGEgQysrIGhlYWRlci1vbmx5IGltcGxlbWVudGF0aW9uIG9mIEdyaXN1MiBhbGdv
cml0aG0gZnJvbSB0aGUgcHVibGljYXRpb246CisvLyBMb2l0c2NoLCBGbG9yaWFuLiAiUHJpbnRp
bmcgZmxvYXRpbmctcG9pbnQgbnVtYmVycyBxdWlja2x5IGFuZCBhY2N1cmF0ZWx5IHdpdGgKKy8v
IGludGVnZXJzLiIgQUNNIFNpZ3BsYW4gTm90aWNlcyA0NS42ICgyMDEwKTogMjMzLTI0My4KKwor
I2lmbmRlZiBSQVBJREpTT05fRFRPQV8KKyNkZWZpbmUgUkFQSURKU09OX0RUT0FfCisKKyNpbmNs
dWRlICJpdG9hLmgiIC8vIEdldERpZ2l0c0x1dCgpCisjaW5jbHVkZSAiZGl5ZnAuaCIKKworUkFQ
SURKU09OX05BTUVTUEFDRV9CRUdJTgorbmFtZXNwYWNlIGludGVybmFsIHsKKworI2lmZGVmIF9f
R05VQ19fCitSQVBJREpTT05fRElBR19QVVNICitSQVBJREpTT05fRElBR19PRkYoZWZmYysrKQor
I2VuZGlmCisKK2lubGluZSB2b2lkIEdyaXN1Um91bmQoY2hhciogYnVmZmVyLCBpbnQgbGVuLCB1
aW50NjRfdCBkZWx0YSwgdWludDY0X3QgcmVzdCwgdWludDY0X3QgdGVuX2thcHBhLCB1aW50NjRf
dCB3cF93KSB7CisgICAgd2hpbGUgKHJlc3QgPCB3cF93ICYmIGRlbHRhIC0gcmVzdCA+PSB0ZW5f
a2FwcGEgJiYKKyAgICAgICAgICAgKHJlc3QgKyB0ZW5fa2FwcGEgPCB3cF93IHx8ICAvLy8gY2xv
c2VyCisgICAgICAgICAgICB3cF93IC0gcmVzdCA+IHJlc3QgKyB0ZW5fa2FwcGEgLSB3cF93KSkg
eworICAgICAgICBidWZmZXJbbGVuIC0gMV0tLTsKKyAgICAgICAgcmVzdCArPSB0ZW5fa2FwcGE7
CisgICAgfQorfQorCitpbmxpbmUgdW5zaWduZWQgQ291bnREZWNpbWFsRGlnaXQzMih1aW50MzJf
dCBuKSB7CisgICAgLy8gU2ltcGxlIHB1cmUgQysrIGltcGxlbWVudGF0aW9uIHdhcyBmYXN0ZXIg
dGhhbiBfX2J1aWx0aW5fY2x6IHZlcnNpb24gaW4gdGhpcyBzaXR1YXRpb24uCisgICAgaWYgKG4g
PCAxMCkgcmV0dXJuIDE7CisgICAgaWYgKG4gPCAxMDApIHJldHVybiAyOworICAgIGlmIChuIDwg
MTAwMCkgcmV0dXJuIDM7CisgICAgaWYgKG4gPCAxMDAwMCkgcmV0dXJuIDQ7CisgICAgaWYgKG4g
PCAxMDAwMDApIHJldHVybiA1OworICAgIGlmIChuIDwgMTAwMDAwMCkgcmV0dXJuIDY7CisgICAg
aWYgKG4gPCAxMDAwMDAwMCkgcmV0dXJuIDc7CisgICAgaWYgKG4gPCAxMDAwMDAwMDApIHJldHVy
biA4OworICAgIGlmIChuIDwgMTAwMDAwMDAwMCkgcmV0dXJuIDk7CisgICAgcmV0dXJuIDEwOwor
fQorCitpbmxpbmUgdm9pZCBEaWdpdEdlbihjb25zdCBEaXlGcCYgVywgY29uc3QgRGl5RnAmIE1w
LCB1aW50NjRfdCBkZWx0YSwgY2hhciogYnVmZmVyLCBpbnQqIGxlbiwgaW50KiBLKSB7CisgICAg
c3RhdGljIGNvbnN0IHVpbnQzMl90IGtQb3cxMFtdID0geyAxLCAxMCwgMTAwLCAxMDAwLCAxMDAw
MCwgMTAwMDAwLCAxMDAwMDAwLCAxMDAwMDAwMCwgMTAwMDAwMDAwLCAxMDAwMDAwMDAwIH07Cisg
ICAgY29uc3QgRGl5RnAgb25lKHVpbnQ2NF90KDEpIDw8IC1NcC5lLCBNcC5lKTsKKyAgICBjb25z
dCBEaXlGcCB3cF93ID0gTXAgLSBXOworICAgIHVpbnQzMl90IHAxID0gc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KE1wLmYgPj4gLW9uZS5lKTsKKyAgICB1aW50NjRfdCBwMiA9IE1wLmYgJiAob25lLmYg
LSAxKTsKKyAgICBpbnQga2FwcGEgPSBDb3VudERlY2ltYWxEaWdpdDMyKHAxKTsKKyAgICAqbGVu
ID0gMDsKKworICAgIHdoaWxlIChrYXBwYSA+IDApIHsKKyAgICAgICAgdWludDMyX3QgZDsKKyAg
ICAgICAgc3dpdGNoIChrYXBwYSkgeworICAgICAgICAgICAgY2FzZSAxMDogZCA9IHAxIC8gMTAw
MDAwMDAwMDsgcDEgJT0gMTAwMDAwMDAwMDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlICA5OiBk
ID0gcDEgLyAgMTAwMDAwMDAwOyBwMSAlPSAgMTAwMDAwMDAwOyBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgIDg6IGQgPSBwMSAvICAgMTAwMDAwMDA7IHAxICU9ICAgMTAwMDAwMDA7IGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSAgNzogZCA9IHAxIC8gICAgMTAwMDAwMDsgcDEgJT0gICAgMTAwMDAw
MDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlICA2OiBkID0gcDEgLyAgICAgMTAwMDAwOyBwMSAl
PSAgICAgMTAwMDAwOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIDU6IGQgPSBwMSAvICAgICAg
MTAwMDA7IHAxICU9ICAgICAgMTAwMDA7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAgNDogZCA9
IHAxIC8gICAgICAgMTAwMDsgcDEgJT0gICAgICAgMTAwMDsgYnJlYWs7CisgICAgICAgICAgICBj
YXNlICAzOiBkID0gcDEgLyAgICAgICAgMTAwOyBwMSAlPSAgICAgICAgMTAwOyBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgIDI6IGQgPSBwMSAvICAgICAgICAgMTA7IHAxICU9ICAgICAgICAgMTA7
IGJyZWFrOworICAgICAgICAgICAgY2FzZSAgMTogZCA9IHAxOyAgICAgICAgICAgICAgcDEgPSAg
ICAgICAgICAgMDsgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OiAKKyNpZiBkZWZpbmVkKF9N
U0NfVkVSKQorICAgICAgICAgICAgICAgIF9fYXNzdW1lKDApOworI2VsaWYgX19HTlVDX18gPiA0
IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fID49IDUpCisgICAgICAgICAgICAg
ICAgX19idWlsdGluX3VucmVhY2hhYmxlKCk7CisjZWxzZQorICAgICAgICAgICAgICAgIGQgPSAw
OworI2VuZGlmCisgICAgICAgIH0KKyAgICAgICAgaWYgKGQgfHwgKmxlbikKKyAgICAgICAgICAg
IGJ1ZmZlclsoKmxlbikrK10gPSBzdGF0aWNfY2FzdDxjaGFyPignMCcgKyBzdGF0aWNfY2FzdDxj
aGFyPihkKSk7CisgICAgICAgIGthcHBhLS07CisgICAgICAgIHVpbnQ2NF90IHRtcCA9IChzdGF0
aWNfY2FzdDx1aW50NjRfdD4ocDEpIDw8IC1vbmUuZSkgKyBwMjsKKyAgICAgICAgaWYgKHRtcCA8
PSBkZWx0YSkgeworICAgICAgICAgICAgKksgKz0ga2FwcGE7CisgICAgICAgICAgICBHcmlzdVJv
dW5kKGJ1ZmZlciwgKmxlbiwgZGVsdGEsIHRtcCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGtQb3cx
MFtrYXBwYV0pIDw8IC1vbmUuZSwgd3Bfdy5mKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIC8vIGthcHBhID0gMAorICAgIGZvciAoOzspIHsKKyAgICAgICAg
cDIgKj0gMTA7CisgICAgICAgIGRlbHRhICo9IDEwOworICAgICAgICBjaGFyIGQgPSBzdGF0aWNf
Y2FzdDxjaGFyPihwMiA+PiAtb25lLmUpOworICAgICAgICBpZiAoZCB8fCAqbGVuKQorICAgICAg
ICAgICAgYnVmZmVyWygqbGVuKSsrXSA9IHN0YXRpY19jYXN0PGNoYXI+KCcwJyArIGQpOworICAg
ICAgICBwMiAmPSBvbmUuZiAtIDE7CisgICAgICAgIGthcHBhLS07CisgICAgICAgIGlmIChwMiA8
IGRlbHRhKSB7CisgICAgICAgICAgICAqSyArPSBrYXBwYTsKKyAgICAgICAgICAgIEdyaXN1Um91
bmQoYnVmZmVyLCAqbGVuLCBkZWx0YSwgcDIsIG9uZS5mLCB3cF93LmYgKiBrUG93MTBbLWthcHBh
XSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9CisKK2lubGluZSB2
b2lkIEdyaXN1Mihkb3VibGUgdmFsdWUsIGNoYXIqIGJ1ZmZlciwgaW50KiBsZW5ndGgsIGludCog
SykgeworICAgIGNvbnN0IERpeUZwIHYodmFsdWUpOworICAgIERpeUZwIHdfbSwgd19wOworICAg
IHYuTm9ybWFsaXplZEJvdW5kYXJpZXMoJndfbSwgJndfcCk7CisKKyAgICBjb25zdCBEaXlGcCBj
X21rID0gR2V0Q2FjaGVkUG93ZXIod19wLmUsIEspOworICAgIGNvbnN0IERpeUZwIFcgPSB2Lk5v
cm1hbGl6ZSgpICogY19tazsKKyAgICBEaXlGcCBXcCA9IHdfcCAqIGNfbWs7CisgICAgRGl5RnAg
V20gPSB3X20gKiBjX21rOworICAgIFdtLmYrKzsKKyAgICBXcC5mLS07CisgICAgRGlnaXRHZW4o
VywgV3AsIFdwLmYgLSBXbS5mLCBidWZmZXIsIGxlbmd0aCwgSyk7Cit9CisKK2lubGluZSBjaGFy
KiBXcml0ZUV4cG9uZW50KGludCBLLCBjaGFyKiBidWZmZXIpIHsKKyAgICBpZiAoSyA8IDApIHsK
KyAgICAgICAgKmJ1ZmZlcisrID0gJy0nOworICAgICAgICBLID0gLUs7CisgICAgfQorCisgICAg
aWYgKEsgPj0gMTAwKSB7CisgICAgICAgICpidWZmZXIrKyA9IHN0YXRpY19jYXN0PGNoYXI+KCcw
JyArIHN0YXRpY19jYXN0PGNoYXI+KEsgLyAxMDApKTsKKyAgICAgICAgSyAlPSAxMDA7CisgICAg
ICAgIGNvbnN0IGNoYXIqIGQgPSBHZXREaWdpdHNMdXQoKSArIEsgKiAyOworICAgICAgICAqYnVm
ZmVyKysgPSBkWzBdOworICAgICAgICAqYnVmZmVyKysgPSBkWzFdOworICAgIH0KKyAgICBlbHNl
IGlmIChLID49IDEwKSB7CisgICAgICAgIGNvbnN0IGNoYXIqIGQgPSBHZXREaWdpdHNMdXQoKSAr
IEsgKiAyOworICAgICAgICAqYnVmZmVyKysgPSBkWzBdOworICAgICAgICAqYnVmZmVyKysgPSBk
WzFdOworICAgIH0KKyAgICBlbHNlCisgICAgICAgICpidWZmZXIrKyA9IHN0YXRpY19jYXN0PGNo
YXI+KCcwJyArIHN0YXRpY19jYXN0PGNoYXI+KEspKTsKKworICAgIHJldHVybiBidWZmZXI7Cit9
CisKK2lubGluZSBjaGFyKiBQcmV0dGlmeShjaGFyKiBidWZmZXIsIGludCBsZW5ndGgsIGludCBr
KSB7CisgICAgY29uc3QgaW50IGtrID0gbGVuZ3RoICsgazsgIC8vIDEwXihray0xKSA8PSB2IDwg
MTBea2sKKworICAgIGlmIChsZW5ndGggPD0ga2sgJiYga2sgPD0gMjEpIHsKKyAgICAgICAgLy8g
MTIzNGU3IC0+IDEyMzQwMDAwMDAwCisgICAgICAgIGZvciAoaW50IGkgPSBsZW5ndGg7IGkgPCBr
azsgaSsrKQorICAgICAgICAgICAgYnVmZmVyW2ldID0gJzAnOworICAgICAgICBidWZmZXJba2td
ID0gJy4nOworICAgICAgICBidWZmZXJba2sgKyAxXSA9ICcwJzsKKyAgICAgICAgcmV0dXJuICZi
dWZmZXJba2sgKyAyXTsKKyAgICB9CisgICAgZWxzZSBpZiAoMCA8IGtrICYmIGtrIDw9IDIxKSB7
CisgICAgICAgIC8vIDEyMzRlLTIgLT4gMTIuMzQKKyAgICAgICAgc3RkOjptZW1tb3ZlKCZidWZm
ZXJba2sgKyAxXSwgJmJ1ZmZlcltra10sIGxlbmd0aCAtIGtrKTsKKyAgICAgICAgYnVmZmVyW2tr
XSA9ICcuJzsKKyAgICAgICAgcmV0dXJuICZidWZmZXJbbGVuZ3RoICsgMV07CisgICAgfQorICAg
IGVsc2UgaWYgKC02IDwga2sgJiYga2sgPD0gMCkgeworICAgICAgICAvLyAxMjM0ZS02IC0+IDAu
MDAxMjM0CisgICAgICAgIGNvbnN0IGludCBvZmZzZXQgPSAyIC0ga2s7CisgICAgICAgIHN0ZDo6
bWVtbW92ZSgmYnVmZmVyW29mZnNldF0sICZidWZmZXJbMF0sIGxlbmd0aCk7CisgICAgICAgIGJ1
ZmZlclswXSA9ICcwJzsKKyAgICAgICAgYnVmZmVyWzFdID0gJy4nOworICAgICAgICBmb3IgKGlu
dCBpID0gMjsgaSA8IG9mZnNldDsgaSsrKQorICAgICAgICAgICAgYnVmZmVyW2ldID0gJzAnOwor
ICAgICAgICByZXR1cm4gJmJ1ZmZlcltsZW5ndGggKyBvZmZzZXRdOworICAgIH0KKyAgICBlbHNl
IGlmIChsZW5ndGggPT0gMSkgeworICAgICAgICAvLyAxZTMwCisgICAgICAgIGJ1ZmZlclsxXSA9
ICdlJzsKKyAgICAgICAgcmV0dXJuIFdyaXRlRXhwb25lbnQoa2sgLSAxLCAmYnVmZmVyWzJdKTsK
KyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8vIDEyMzRlMzAgLT4gMS4yMzRlMzMKKyAgICAg
ICAgc3RkOjptZW1tb3ZlKCZidWZmZXJbMl0sICZidWZmZXJbMV0sIGxlbmd0aCAtIDEpOworICAg
ICAgICBidWZmZXJbMV0gPSAnLic7CisgICAgICAgIGJ1ZmZlcltsZW5ndGggKyAxXSA9ICdlJzsK
KyAgICAgICAgcmV0dXJuIFdyaXRlRXhwb25lbnQoa2sgLSAxLCAmYnVmZmVyWzAgKyBsZW5ndGgg
KyAyXSk7CisgICAgfQorfQorCitpbmxpbmUgY2hhciogZHRvYShkb3VibGUgdmFsdWUsIGNoYXIq
IGJ1ZmZlcikgeworICAgIGlmICh2YWx1ZSA9PSAwKSB7CisgICAgICAgIGJ1ZmZlclswXSA9ICcw
JzsKKyAgICAgICAgYnVmZmVyWzFdID0gJy4nOworICAgICAgICBidWZmZXJbMl0gPSAnMCc7Cisg
ICAgICAgIHJldHVybiAmYnVmZmVyWzNdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYg
KHZhbHVlIDwgMCkgeworICAgICAgICAgICAgKmJ1ZmZlcisrID0gJy0nOworICAgICAgICAgICAg
dmFsdWUgPSAtdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaW50IGxlbmd0aCwgSzsKKyAgICAg
ICAgR3Jpc3UyKHZhbHVlLCBidWZmZXIsICZsZW5ndGgsICZLKTsKKyAgICAgICAgcmV0dXJuIFBy
ZXR0aWZ5KGJ1ZmZlciwgbGVuZ3RoLCBLKTsKKyAgICB9Cit9CisKKyNpZmRlZiBfX0dOVUNfXwor
UkFQSURKU09OX0RJQUdfUE9QCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKK1JB
UElESlNPTl9OQU1FU1BBQ0VfRU5ECisKKyNlbmRpZiAvLyBSQVBJREpTT05fRFRPQV8KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24v
aW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvaWVlZTc1NC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVk
ZS9yYXBpZGpzb24vaW50ZXJuYWwvaWVlZTc1NC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9y
YXBpZGpzb24vaW50ZXJuYWwvaWVlZTc1NC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTAg
QEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSBNaWxvIFlpcAorLy8KKy8vIFBlcm1pc3Npb24gaXMg
aGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBh
IGNvcHkKKy8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBm
aWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCisvLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91
dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCisv
LyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1Ymxp
Y2Vuc2UsIGFuZC9vciBzZWxsCisvLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVy
bWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy8vIGZ1cm5pc2hlZCB0byBkbyBz
bywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisvLworLy8gVGhlIGFib3Zl
IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5j
bHVkZWQgaW4KKy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNv
ZnR3YXJlLgorLy8KKy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VU
IFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisvLyBJTVBMSUVELCBJTkNMVURJTkcg
QlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKy8v
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRQorLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBM
SUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorLy8gTElBQklMSVRZLCBXSEVU
SEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcg
RlJPTSwKKy8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRI
RSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KKy8vIFRIRSBTT0ZUV0FSRS4KKworI2lmbmRlZiBS
QVBJREpTT05fSUVFRTc1NF8KKyNkZWZpbmUgUkFQSURKU09OX0lFRUU3NTRfCisKKyNpbmNsdWRl
ICIuLi9yYXBpZGpzb24uaCIKKworUkFQSURKU09OX05BTUVTUEFDRV9CRUdJTgorbmFtZXNwYWNl
IGludGVybmFsIHsKKworY2xhc3MgRG91YmxlIHsKK3B1YmxpYzoKKyAgICBEb3VibGUoKSB7fQor
ICAgIERvdWJsZShkb3VibGUgZCkgOiBkKGQpIHt9CisgICAgRG91YmxlKHVpbnQ2NF90IHUpIDog
dSh1KSB7fQorCisgICAgZG91YmxlIFZhbHVlKCkgY29uc3QgeyByZXR1cm4gZDsgfQorICAgIHVp
bnQ2NF90IFVpbnQ2NFZhbHVlKCkgY29uc3QgeyByZXR1cm4gdTsgfQorCisgICAgZG91YmxlIE5l
eHRQb3NpdGl2ZURvdWJsZSgpIGNvbnN0IHsKKyAgICAgICAgUkFQSURKU09OX0FTU0VSVCghU2ln
bigpKTsKKyAgICAgICAgcmV0dXJuIERvdWJsZSh1ICsgMSkuVmFsdWUoKTsKKyAgICB9CisKKyAg
ICBkb3VibGUgUHJldmlvdXNQb3NpdGl2ZURvdWJsZSgpIGNvbnN0IHsKKyAgICAgICAgUkFQSURK
U09OX0FTU0VSVCghU2lnbigpKTsKKyAgICAgICAgaWYgKGQgPT0gMC4wKQorICAgICAgICAgICAg
cmV0dXJuIDAuMDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIERvdWJsZSh1IC0g
MSkuVmFsdWUoKTsKKyAgICB9CisKKyAgICBib29sIFNpZ24oKSBjb25zdCB7IHJldHVybiAodSAm
IGtTaWduTWFzaykgIT0gMDsgfQorICAgIHVpbnQ2NF90IFNpZ25pZmljYW5kKCkgY29uc3QgeyBy
ZXR1cm4gdSAmIGtTaWduaWZpY2FuZE1hc2s7IH0KKyAgICBpbnQgRXhwb25lbnQoKSBjb25zdCB7
IHJldHVybiAoKHUgJiBrRXhwb25lbnRNYXNrKSA+PiBrU2lnbmlmaWNhbmRTaXplKSAtIGtFeHBv
bmVudEJpYXM7IH0KKworICAgIGJvb2wgSXNOYW4oKSBjb25zdCB7IHJldHVybiAodSAmIGtFeHBv
bmVudE1hc2spID09IGtFeHBvbmVudE1hc2sgJiYgU2lnbmlmaWNhbmQoKSAhPSAwOyB9CisgICAg
Ym9vbCBJc0luZigpIGNvbnN0IHsgcmV0dXJuICh1ICYga0V4cG9uZW50TWFzaykgPT0ga0V4cG9u
ZW50TWFzayAmJiBTaWduaWZpY2FuZCgpID09IDA7IH0KKyAgICBib29sIElzTm9ybWFsKCkgY29u
c3QgeyByZXR1cm4gKHUgJiBrRXhwb25lbnRNYXNrKSAhPSAwIHx8IFNpZ25pZmljYW5kKCkgPT0g
MDsgfQorCisgICAgdWludDY0X3QgSW50ZWdlclNpZ25pZmljYW5kKCkgY29uc3QgeyByZXR1cm4g
SXNOb3JtYWwoKSA/IFNpZ25pZmljYW5kKCkgfCBrSGlkZGVuQml0IDogU2lnbmlmaWNhbmQoKTsg
fQorICAgIGludCBJbnRlZ2VyRXhwb25lbnQoKSBjb25zdCB7IHJldHVybiAoSXNOb3JtYWwoKSA/
IEV4cG9uZW50KCkgOiBrRGVub3JtYWxFeHBvbmVudCkgLSBrU2lnbmlmaWNhbmRTaXplOyB9Cisg
ICAgdWludDY0X3QgVG9CaWFzKCkgY29uc3QgeyByZXR1cm4gKHUgJiBrU2lnbk1hc2spID8gfnUg
KyAxIDogdSB8IGtTaWduTWFzazsgfQorCisgICAgc3RhdGljIHVuc2lnbmVkIEVmZmVjdGl2ZVNp
Z25pZmljYW5kU2l6ZShpbnQgb3JkZXIpIHsKKyAgICAgICAgaWYgKG9yZGVyID49IC0xMDIxKQor
ICAgICAgICAgICAgcmV0dXJuIDUzOworICAgICAgICBlbHNlIGlmIChvcmRlciA8PSAtMTA3NCkK
KyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4g
b3JkZXIgKyAxMDc0OworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3QgaW50IGtT
aWduaWZpY2FuZFNpemUgPSA1MjsKKyAgICBzdGF0aWMgY29uc3QgaW50IGtFeHBvbmVudEJpYXMg
PSAweDNGRjsKKyAgICBzdGF0aWMgY29uc3QgaW50IGtEZW5vcm1hbEV4cG9uZW50ID0gMSAtIGtF
eHBvbmVudEJpYXM7CisgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGtTaWduTWFzayA9IFJBUElE
SlNPTl9VSU5UNjRfQzIoMHg4MDAwMDAwMCwgMHgwMDAwMDAwMCk7CisgICAgc3RhdGljIGNvbnN0
IHVpbnQ2NF90IGtFeHBvbmVudE1hc2sgPSBSQVBJREpTT05fVUlOVDY0X0MyKDB4N0ZGMDAwMDAs
IDB4MDAwMDAwMDApOworICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBrU2lnbmlmaWNhbmRNYXNr
ID0gUkFQSURKU09OX1VJTlQ2NF9DMigweDAwMEZGRkZGLCAweEZGRkZGRkZGKTsKKyAgICBzdGF0
aWMgY29uc3QgdWludDY0X3Qga0hpZGRlbkJpdCA9IFJBUElESlNPTl9VSU5UNjRfQzIoMHgwMDEw
MDAwMCwgMHgwMDAwMDAwMCk7CisKKyAgICB1bmlvbiB7CisgICAgICAgIGRvdWJsZSBkOworICAg
ICAgICB1aW50NjRfdCB1OworICAgIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBpbnRlcm5hbAor
UkFQSURKU09OX05BTUVTUEFDRV9FTkQKKworI2VuZGlmIC8vIFJBUElESlNPTl9JRUVFNzU0XwpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlk
anNvbi9pbmNsdWRlL3JhcGlkanNvbi9pbnRlcm5hbC9pdG9hLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNs
dWRlL3JhcGlkanNvbi9pbnRlcm5hbC9pdG9hLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3Jh
cGlkanNvbi9pbnRlcm5hbC9pdG9hLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMDYgQEAK
Ky8vIENvcHlyaWdodCAoQykgMjAxMSBNaWxvIFlpcAorLy8KKy8vIFBlcm1pc3Npb24gaXMgaGVy
ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNv
cHkKKy8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl
cyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCisvLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCBy
ZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCisvLyB0
byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu
c2UsIGFuZC9vciBzZWxsCisvLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0
IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy8vIGZ1cm5pc2hlZCB0byBkbyBzbywg
c3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisvLworLy8gVGhlIGFib3ZlIGNv
cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVk
ZWQgaW4KKy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3
YXJlLgorLy8KKy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB
UlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisvLyBJTVBMSUVELCBJTkNMVURJTkcgQlVU
IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKy8vIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRQorLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFC
TEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorLy8gTElBQklMSVRZLCBXSEVUSEVS
IElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJP
TSwKKy8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBV
U0UgT1IgT1RIRVIgREVBTElOR1MgSU4KKy8vIFRIRSBTT0ZUV0FSRS4KKworI2lmbmRlZiBSQVBJ
REpTT05fSVRPQV8KKyNkZWZpbmUgUkFQSURKU09OX0lUT0FfCisKK1JBUElESlNPTl9OQU1FU1BB
Q0VfQkVHSU4KK25hbWVzcGFjZSBpbnRlcm5hbCB7CisKK2lubGluZSBjb25zdCBjaGFyKiBHZXRE
aWdpdHNMdXQoKSB7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgY0RpZ2l0c0x1dFsyMDBdID0gewor
ICAgICAgICAnMCcsJzAnLCcwJywnMScsJzAnLCcyJywnMCcsJzMnLCcwJywnNCcsJzAnLCc1Jywn
MCcsJzYnLCcwJywnNycsJzAnLCc4JywnMCcsJzknLAorICAgICAgICAnMScsJzAnLCcxJywnMScs
JzEnLCcyJywnMScsJzMnLCcxJywnNCcsJzEnLCc1JywnMScsJzYnLCcxJywnNycsJzEnLCc4Jywn
MScsJzknLAorICAgICAgICAnMicsJzAnLCcyJywnMScsJzInLCcyJywnMicsJzMnLCcyJywnNCcs
JzInLCc1JywnMicsJzYnLCcyJywnNycsJzInLCc4JywnMicsJzknLAorICAgICAgICAnMycsJzAn
LCczJywnMScsJzMnLCcyJywnMycsJzMnLCczJywnNCcsJzMnLCc1JywnMycsJzYnLCczJywnNycs
JzMnLCc4JywnMycsJzknLAorICAgICAgICAnNCcsJzAnLCc0JywnMScsJzQnLCcyJywnNCcsJzMn
LCc0JywnNCcsJzQnLCc1JywnNCcsJzYnLCc0JywnNycsJzQnLCc4JywnNCcsJzknLAorICAgICAg
ICAnNScsJzAnLCc1JywnMScsJzUnLCcyJywnNScsJzMnLCc1JywnNCcsJzUnLCc1JywnNScsJzYn
LCc1JywnNycsJzUnLCc4JywnNScsJzknLAorICAgICAgICAnNicsJzAnLCc2JywnMScsJzYnLCcy
JywnNicsJzMnLCc2JywnNCcsJzYnLCc1JywnNicsJzYnLCc2JywnNycsJzYnLCc4JywnNicsJzkn
LAorICAgICAgICAnNycsJzAnLCc3JywnMScsJzcnLCcyJywnNycsJzMnLCc3JywnNCcsJzcnLCc1
JywnNycsJzYnLCc3JywnNycsJzcnLCc4JywnNycsJzknLAorICAgICAgICAnOCcsJzAnLCc4Jywn
MScsJzgnLCcyJywnOCcsJzMnLCc4JywnNCcsJzgnLCc1JywnOCcsJzYnLCc4JywnNycsJzgnLCc4
JywnOCcsJzknLAorICAgICAgICAnOScsJzAnLCc5JywnMScsJzknLCcyJywnOScsJzMnLCc5Jywn
NCcsJzknLCc1JywnOScsJzYnLCc5JywnNycsJzknLCc4JywnOScsJzknCisgICAgfTsKKyAgICBy
ZXR1cm4gY0RpZ2l0c0x1dDsKK30KKworaW5saW5lIGNoYXIqIHUzMnRvYSh1aW50MzJfdCB2YWx1
ZSwgY2hhciogYnVmZmVyKSB7CisgICAgY29uc3QgY2hhciogY0RpZ2l0c0x1dCA9IEdldERpZ2l0
c0x1dCgpOworCisgICAgaWYgKHZhbHVlIDwgMTAwMDApIHsKKyAgICAgICAgY29uc3QgdWludDMy
X3QgZDEgPSAodmFsdWUgLyAxMDApIDw8IDE7CisgICAgICAgIGNvbnN0IHVpbnQzMl90IGQyID0g
KHZhbHVlICUgMTAwKSA8PCAxOworICAgICAgICAKKyAgICAgICAgaWYgKHZhbHVlID49IDEwMDAp
CisgICAgICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QxXTsKKyAgICAgICAgaWYgKHZh
bHVlID49IDEwMCkKKyAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDEgKyAxXTsK
KyAgICAgICAgaWYgKHZhbHVlID49IDEwKQorICAgICAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0
c0x1dFtkMl07CisgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDIgKyAxXTsKKyAgICB9
CisgICAgZWxzZSBpZiAodmFsdWUgPCAxMDAwMDAwMDApIHsKKyAgICAgICAgLy8gdmFsdWUgPSBi
YmJiY2NjYworICAgICAgICBjb25zdCB1aW50MzJfdCBiID0gdmFsdWUgLyAxMDAwMDsKKyAgICAg
ICAgY29uc3QgdWludDMyX3QgYyA9IHZhbHVlICUgMTAwMDA7CisgICAgICAgIAorICAgICAgICBj
b25zdCB1aW50MzJfdCBkMSA9IChiIC8gMTAwKSA8PCAxOworICAgICAgICBjb25zdCB1aW50MzJf
dCBkMiA9IChiICUgMTAwKSA8PCAxOworICAgICAgICAKKyAgICAgICAgY29uc3QgdWludDMyX3Qg
ZDMgPSAoYyAvIDEwMCkgPDwgMTsKKyAgICAgICAgY29uc3QgdWludDMyX3QgZDQgPSAoYyAlIDEw
MCkgPDwgMTsKKyAgICAgICAgCisgICAgICAgIGlmICh2YWx1ZSA+PSAxMDAwMDAwMCkKKyAgICAg
ICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDFdOworICAgICAgICBpZiAodmFsdWUgPj0g
MTAwMDAwMCkKKyAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDEgKyAxXTsKKyAg
ICAgICAgaWYgKHZhbHVlID49IDEwMDAwMCkKKyAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdp
dHNMdXRbZDJdOworICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QyICsgMV07CisgICAg
ICAgIAorICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QzXTsKKyAgICAgICAgKmJ1ZmZl
cisrID0gY0RpZ2l0c0x1dFtkMyArIDFdOworICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0
W2Q0XTsKKyAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkNCArIDFdOworICAgIH0KKyAg
ICBlbHNlIHsKKyAgICAgICAgLy8gdmFsdWUgPSBhYWJiYmJjY2NjIGluIGRlY2ltYWwKKyAgICAg
ICAgCisgICAgICAgIGNvbnN0IHVpbnQzMl90IGEgPSB2YWx1ZSAvIDEwMDAwMDAwMDsgLy8gMSB0
byA0MgorICAgICAgICB2YWx1ZSAlPSAxMDAwMDAwMDA7CisgICAgICAgIAorICAgICAgICBpZiAo
YSA+PSAxMCkgeworICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgaSA9IGEgPDwgMTsKKyAgICAg
ICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbaV07CisgICAgICAgICAgICAqYnVmZmVyKysg
PSBjRGlnaXRzTHV0W2kgKyAxXTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAg
ICAqYnVmZmVyKysgPSBzdGF0aWNfY2FzdDxjaGFyPignMCcgKyBzdGF0aWNfY2FzdDxjaGFyPihh
KSk7CisKKyAgICAgICAgY29uc3QgdWludDMyX3QgYiA9IHZhbHVlIC8gMTAwMDA7IC8vIDAgdG8g
OTk5OQorICAgICAgICBjb25zdCB1aW50MzJfdCBjID0gdmFsdWUgJSAxMDAwMDsgLy8gMCB0byA5
OTk5CisgICAgICAgIAorICAgICAgICBjb25zdCB1aW50MzJfdCBkMSA9IChiIC8gMTAwKSA8PCAx
OworICAgICAgICBjb25zdCB1aW50MzJfdCBkMiA9IChiICUgMTAwKSA8PCAxOworICAgICAgICAK
KyAgICAgICAgY29uc3QgdWludDMyX3QgZDMgPSAoYyAvIDEwMCkgPDwgMTsKKyAgICAgICAgY29u
c3QgdWludDMyX3QgZDQgPSAoYyAlIDEwMCkgPDwgMTsKKyAgICAgICAgCisgICAgICAgICpidWZm
ZXIrKyA9IGNEaWdpdHNMdXRbZDFdOworICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2Qx
ICsgMV07CisgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDJdOworICAgICAgICAqYnVm
ZmVyKysgPSBjRGlnaXRzTHV0W2QyICsgMV07CisgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNM
dXRbZDNdOworICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QzICsgMV07CisgICAgICAg
ICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDRdOworICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRz
THV0W2Q0ICsgMV07CisgICAgfQorICAgIHJldHVybiBidWZmZXI7Cit9CisKK2lubGluZSBjaGFy
KiBpMzJ0b2EoaW50MzJfdCB2YWx1ZSwgY2hhciogYnVmZmVyKSB7CisgICAgaWYgKHZhbHVlIDwg
MCkgeworICAgICAgICAqYnVmZmVyKysgPSAnLSc7CisgICAgICAgIHZhbHVlID0gLXZhbHVlOwor
ICAgIH0KKworICAgIHJldHVybiB1MzJ0b2Eoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlKSwg
YnVmZmVyKTsKK30KKworaW5saW5lIGNoYXIqIHU2NHRvYSh1aW50NjRfdCB2YWx1ZSwgY2hhciog
YnVmZmVyKSB7CisgICAgY29uc3QgY2hhciogY0RpZ2l0c0x1dCA9IEdldERpZ2l0c0x1dCgpOwor
ICAgIGNvbnN0IHVpbnQ2NF90ICBrVGVuOCA9IDEwMDAwMDAwMDsKKyAgICBjb25zdCB1aW50NjRf
dCAga1RlbjkgPSBrVGVuOCAqIDEwOworICAgIGNvbnN0IHVpbnQ2NF90IGtUZW4xMCA9IGtUZW44
ICogMTAwOworICAgIGNvbnN0IHVpbnQ2NF90IGtUZW4xMSA9IGtUZW44ICogMTAwMDsKKyAgICBj
b25zdCB1aW50NjRfdCBrVGVuMTIgPSBrVGVuOCAqIDEwMDAwOworICAgIGNvbnN0IHVpbnQ2NF90
IGtUZW4xMyA9IGtUZW44ICogMTAwMDAwOworICAgIGNvbnN0IHVpbnQ2NF90IGtUZW4xNCA9IGtU
ZW44ICogMTAwMDAwMDsKKyAgICBjb25zdCB1aW50NjRfdCBrVGVuMTUgPSBrVGVuOCAqIDEwMDAw
MDAwOworICAgIGNvbnN0IHVpbnQ2NF90IGtUZW4xNiA9IGtUZW44ICoga1Rlbjg7CisgICAgCisg
ICAgaWYgKHZhbHVlIDwga1RlbjgpIHsKKyAgICAgICAgdWludDMyX3QgdiA9IHN0YXRpY19jYXN0
PHVpbnQzMl90Pih2YWx1ZSk7CisgICAgICAgIGlmICh2IDwgMTAwMDApIHsKKyAgICAgICAgICAg
IGNvbnN0IHVpbnQzMl90IGQxID0gKHYgLyAxMDApIDw8IDE7CisgICAgICAgICAgICBjb25zdCB1
aW50MzJfdCBkMiA9ICh2ICUgMTAwKSA8PCAxOworICAgICAgICAgICAgCisgICAgICAgICAgICBp
ZiAodiA+PSAxMDAwKQorICAgICAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDFd
OworICAgICAgICAgICAgaWYgKHYgPj0gMTAwKQorICAgICAgICAgICAgICAgICpidWZmZXIrKyA9
IGNEaWdpdHNMdXRbZDEgKyAxXTsKKyAgICAgICAgICAgIGlmICh2ID49IDEwKQorICAgICAgICAg
ICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDJdOworICAgICAgICAgICAgKmJ1ZmZlcisr
ID0gY0RpZ2l0c0x1dFtkMiArIDFdOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgLy8gdmFsdWUgPSBiYmJiY2NjYworICAgICAgICAgICAgY29uc3QgdWludDMyX3QgYiA9
IHYgLyAxMDAwMDsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IGMgPSB2ICUgMTAwMDA7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IGQxID0gKGIgLyAxMDApIDw8
IDE7CisgICAgICAgICAgICBjb25zdCB1aW50MzJfdCBkMiA9IChiICUgMTAwKSA8PCAxOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBjb25zdCB1aW50MzJfdCBkMyA9IChjIC8gMTAwKSA8PCAx
OworICAgICAgICAgICAgY29uc3QgdWludDMyX3QgZDQgPSAoYyAlIDEwMCkgPDwgMTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgaWYgKHZhbHVlID49IDEwMDAwMDAwKQorICAgICAgICAgICAg
ICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDFdOworICAgICAgICAgICAgaWYgKHZhbHVlID49
IDEwMDAwMDApCisgICAgICAgICAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkMSArIDFd
OworICAgICAgICAgICAgaWYgKHZhbHVlID49IDEwMDAwMCkKKyAgICAgICAgICAgICAgICAqYnVm
ZmVyKysgPSBjRGlnaXRzTHV0W2QyXTsKKyAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNM
dXRbZDIgKyAxXTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0
c0x1dFtkM107CisgICAgICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QzICsgMV07Cisg
ICAgICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2Q0XTsKKyAgICAgICAgICAgICpidWZm
ZXIrKyA9IGNEaWdpdHNMdXRbZDQgKyAxXTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlm
ICh2YWx1ZSA8IGtUZW4xNikgeworICAgICAgICBjb25zdCB1aW50MzJfdCB2MCA9IHN0YXRpY19j
YXN0PHVpbnQzMl90Pih2YWx1ZSAvIGtUZW44KTsKKyAgICAgICAgY29uc3QgdWludDMyX3QgdjEg
PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4odmFsdWUgJSBrVGVuOCk7CisgICAgICAgIAorICAgICAg
ICBjb25zdCB1aW50MzJfdCBiMCA9IHYwIC8gMTAwMDA7CisgICAgICAgIGNvbnN0IHVpbnQzMl90
IGMwID0gdjAgJSAxMDAwMDsKKyAgICAgICAgCisgICAgICAgIGNvbnN0IHVpbnQzMl90IGQxID0g
KGIwIC8gMTAwKSA8PCAxOworICAgICAgICBjb25zdCB1aW50MzJfdCBkMiA9IChiMCAlIDEwMCkg
PDwgMTsKKyAgICAgICAgCisgICAgICAgIGNvbnN0IHVpbnQzMl90IGQzID0gKGMwIC8gMTAwKSA8
PCAxOworICAgICAgICBjb25zdCB1aW50MzJfdCBkNCA9IChjMCAlIDEwMCkgPDwgMTsKKworICAg
ICAgICBjb25zdCB1aW50MzJfdCBiMSA9IHYxIC8gMTAwMDA7CisgICAgICAgIGNvbnN0IHVpbnQz
Ml90IGMxID0gdjEgJSAxMDAwMDsKKyAgICAgICAgCisgICAgICAgIGNvbnN0IHVpbnQzMl90IGQ1
ID0gKGIxIC8gMTAwKSA8PCAxOworICAgICAgICBjb25zdCB1aW50MzJfdCBkNiA9IChiMSAlIDEw
MCkgPDwgMTsKKyAgICAgICAgCisgICAgICAgIGNvbnN0IHVpbnQzMl90IGQ3ID0gKGMxIC8gMTAw
KSA8PCAxOworICAgICAgICBjb25zdCB1aW50MzJfdCBkOCA9IChjMSAlIDEwMCkgPDwgMTsKKwor
ICAgICAgICBpZiAodmFsdWUgPj0ga1RlbjE1KQorICAgICAgICAgICAgKmJ1ZmZlcisrID0gY0Rp
Z2l0c0x1dFtkMV07CisgICAgICAgIGlmICh2YWx1ZSA+PSBrVGVuMTQpCisgICAgICAgICAgICAq
YnVmZmVyKysgPSBjRGlnaXRzTHV0W2QxICsgMV07CisgICAgICAgIGlmICh2YWx1ZSA+PSBrVGVu
MTMpCisgICAgICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QyXTsKKyAgICAgICAgaWYg
KHZhbHVlID49IGtUZW4xMikKKyAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDIg
KyAxXTsKKyAgICAgICAgaWYgKHZhbHVlID49IGtUZW4xMSkKKyAgICAgICAgICAgICpidWZmZXIr
KyA9IGNEaWdpdHNMdXRbZDNdOworICAgICAgICBpZiAodmFsdWUgPj0ga1RlbjEwKQorICAgICAg
ICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkMyArIDFdOworICAgICAgICBpZiAodmFsdWUg
Pj0ga1RlbjkpCisgICAgICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2Q0XTsKKyAgICAg
ICAgaWYgKHZhbHVlID49IGtUZW44KQorICAgICAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1
dFtkNCArIDFdOworICAgICAgICAKKyAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkNV07
CisgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDUgKyAxXTsKKyAgICAgICAgKmJ1ZmZl
cisrID0gY0RpZ2l0c0x1dFtkNl07CisgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDYg
KyAxXTsKKyAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkN107CisgICAgICAgICpidWZm
ZXIrKyA9IGNEaWdpdHNMdXRbZDcgKyAxXTsKKyAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1
dFtkOF07CisgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDggKyAxXTsKKyAgICB9Cisg
ICAgZWxzZSB7CisgICAgICAgIGNvbnN0IHVpbnQzMl90IGEgPSBzdGF0aWNfY2FzdDx1aW50MzJf
dD4odmFsdWUgLyBrVGVuMTYpOyAvLyAxIHRvIDE4NDQKKyAgICAgICAgdmFsdWUgJT0ga1RlbjE2
OworICAgICAgICAKKyAgICAgICAgaWYgKGEgPCAxMCkKKyAgICAgICAgICAgICpidWZmZXIrKyA9
IHN0YXRpY19jYXN0PGNoYXI+KCcwJyArIHN0YXRpY19jYXN0PGNoYXI+KGEpKTsKKyAgICAgICAg
ZWxzZSBpZiAoYSA8IDEwMCkgeworICAgICAgICAgICAgY29uc3QgdWludDMyX3QgaSA9IGEgPDwg
MTsKKyAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbaV07CisgICAgICAgICAgICAq
YnVmZmVyKysgPSBjRGlnaXRzTHV0W2kgKyAxXTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlm
IChhIDwgMTAwMCkgeworICAgICAgICAgICAgKmJ1ZmZlcisrID0gc3RhdGljX2Nhc3Q8Y2hhcj4o
JzAnICsgc3RhdGljX2Nhc3Q8Y2hhcj4oYSAvIDEwMCkpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBjb25zdCB1aW50MzJfdCBpID0gKGEgJSAxMDApIDw8IDE7CisgICAgICAgICAgICAqYnVm
ZmVyKysgPSBjRGlnaXRzTHV0W2ldOworICAgICAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1
dFtpICsgMV07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjb25zdCB1
aW50MzJfdCBpID0gKGEgLyAxMDApIDw8IDE7CisgICAgICAgICAgICBjb25zdCB1aW50MzJfdCBq
ID0gKGEgJSAxMDApIDw8IDE7CisgICAgICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2ld
OworICAgICAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtpICsgMV07CisgICAgICAgICAg
ICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2pdOworICAgICAgICAgICAgKmJ1ZmZlcisrID0gY0Rp
Z2l0c0x1dFtqICsgMV07CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNvbnN0IHVpbnQz
Ml90IHYwID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlIC8ga1RlbjgpOworICAgICAgICBj
b25zdCB1aW50MzJfdCB2MSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSAlIGtUZW44KTsK
KyAgICAgICAgCisgICAgICAgIGNvbnN0IHVpbnQzMl90IGIwID0gdjAgLyAxMDAwMDsKKyAgICAg
ICAgY29uc3QgdWludDMyX3QgYzAgPSB2MCAlIDEwMDAwOworICAgICAgICAKKyAgICAgICAgY29u
c3QgdWludDMyX3QgZDEgPSAoYjAgLyAxMDApIDw8IDE7CisgICAgICAgIGNvbnN0IHVpbnQzMl90
IGQyID0gKGIwICUgMTAwKSA8PCAxOworICAgICAgICAKKyAgICAgICAgY29uc3QgdWludDMyX3Qg
ZDMgPSAoYzAgLyAxMDApIDw8IDE7CisgICAgICAgIGNvbnN0IHVpbnQzMl90IGQ0ID0gKGMwICUg
MTAwKSA8PCAxOworICAgICAgICAKKyAgICAgICAgY29uc3QgdWludDMyX3QgYjEgPSB2MSAvIDEw
MDAwOworICAgICAgICBjb25zdCB1aW50MzJfdCBjMSA9IHYxICUgMTAwMDA7CisgICAgICAgIAor
ICAgICAgICBjb25zdCB1aW50MzJfdCBkNSA9IChiMSAvIDEwMCkgPDwgMTsKKyAgICAgICAgY29u
c3QgdWludDMyX3QgZDYgPSAoYjEgJSAxMDApIDw8IDE7CisgICAgICAgIAorICAgICAgICBjb25z
dCB1aW50MzJfdCBkNyA9IChjMSAvIDEwMCkgPDwgMTsKKyAgICAgICAgY29uc3QgdWludDMyX3Qg
ZDggPSAoYzEgJSAxMDApIDw8IDE7CisgICAgICAgIAorICAgICAgICAqYnVmZmVyKysgPSBjRGln
aXRzTHV0W2QxXTsKKyAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkMSArIDFdOworICAg
ICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QyXTsKKyAgICAgICAgKmJ1ZmZlcisrID0gY0Rp
Z2l0c0x1dFtkMiArIDFdOworICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QzXTsKKyAg
ICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkMyArIDFdOworICAgICAgICAqYnVmZmVyKysg
PSBjRGlnaXRzTHV0W2Q0XTsKKyAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkNCArIDFd
OworICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2Q1XTsKKyAgICAgICAgKmJ1ZmZlcisr
ID0gY0RpZ2l0c0x1dFtkNSArIDFdOworICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2Q2
XTsKKyAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkNiArIDFdOworICAgICAgICAqYnVm
ZmVyKysgPSBjRGlnaXRzTHV0W2Q3XTsKKyAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtk
NyArIDFdOworICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2Q4XTsKKyAgICAgICAgKmJ1
ZmZlcisrID0gY0RpZ2l0c0x1dFtkOCArIDFdOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gYnVm
ZmVyOworfQorCitpbmxpbmUgY2hhciogaTY0dG9hKGludDY0X3QgdmFsdWUsIGNoYXIqIGJ1ZmZl
cikgeworICAgIGlmICh2YWx1ZSA8IDApIHsKKyAgICAgICAgKmJ1ZmZlcisrID0gJy0nOworICAg
ICAgICB2YWx1ZSA9IC12YWx1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gdTY0dG9hKHN0YXRpY19j
YXN0PHVpbnQ2NF90Pih2YWx1ZSksIGJ1ZmZlcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIGludGVy
bmFsCitSQVBJREpTT05fTkFNRVNQQUNFX0VORAorCisjZW5kaWYgLy8gUkFQSURKU09OX0lUT0Ff
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFw
aWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ludGVybmFsL21ldGEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2lu
Y2x1ZGUvcmFwaWRqc29uL2ludGVybmFsL21ldGEuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUv
cmFwaWRqc29uL2ludGVybmFsL21ldGEuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4OSBA
QAorLy8gQ29weXJpZ2h0IChDKSAyMDExIE1pbG8gWWlwCisvLworLy8gUGVybWlzc2lvbiBpcyBo
ZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEg
Y29weQorLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZp
bGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKKy8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0
IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKKy8v
IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGlj
ZW5zZSwgYW5kL29yIHNlbGwKKy8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJt
aXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLy8gZnVybmlzaGVkIHRvIGRvIHNv
LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKy8vCisvLyBUaGUgYWJvdmUg
Y29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNs
dWRlZCBpbgorLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29m
dHdhcmUuCisvLworLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQg
V0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKy8vIElNUExJRUQsIElOQ0xVRElORyBC
VVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorLy8g
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFCisvLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJ
QUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisvLyBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBG
Uk9NLAorLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhF
IFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgorLy8gVEhFIFNPRlRXQVJFLgorCisjaWZuZGVmIFJB
UElESlNPTl9JTlRFUk5BTF9NRVRBX0hfCisjZGVmaW5lIFJBUElESlNPTl9JTlRFUk5BTF9NRVRB
X0hfCisKKyNpZm5kZWYgUkFQSURKU09OX1JBUElESlNPTl9IXworI2Vycm9yIDxyYXBpZGpzb24u
aD4gbm90IHlldCBpbmNsdWRlZC4gRG8gbm90IGluY2x1ZGUgdGhpcyBmaWxlIGRpcmVjdGx5Lgor
I2VuZGlmCisKKyNpZmRlZiBfX0dOVUNfXworUkFQSURKU09OX0RJQUdfUFVTSAorUkFQSURKU09O
X0RJQUdfT0ZGKGVmZmMrKykKKyNlbmRpZgorI2lmIGRlZmluZWQoX01TQ19WRVIpCitSQVBJREpT
T05fRElBR19QVVNICitSQVBJREpTT05fRElBR19PRkYoNjMzNCkKKyNlbmRpZgorCisjaWYgUkFQ
SURKU09OX0hBU19DWFgxMV9UWVBFVFJBSVRTCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjZW5k
aWYKKworLy9AY29uZCBSQVBJREpTT05fSU5URVJOQUwKK1JBUElESlNPTl9OQU1FU1BBQ0VfQkVH
SU4KK25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKy8vIEhlbHBlciB0byB3cmFwL2NvbnZlcnQgYXJi
aXRyYXJ5IHR5cGVzIHRvIHZvaWQsIHVzZWZ1bCBmb3IgYXJiaXRyYXJ5IHR5cGUgbWF0Y2hpbmcK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgVm9pZCB7IHR5cGVkZWYgdm9pZCBUeXBlOyB9
OworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBCb29sVHlwZSwgVHJ1ZVR5cGUsIEZhbHNl
VHlwZQorLy8KK3RlbXBsYXRlIDxib29sIENvbmQ+IHN0cnVjdCBCb29sVHlwZSB7CisgICAgc3Rh
dGljIGNvbnN0IGJvb2wgVmFsdWUgPSBDb25kOworICAgIHR5cGVkZWYgQm9vbFR5cGUgVHlwZTsK
K307Cit0eXBlZGVmIEJvb2xUeXBlPHRydWU+IFRydWVUeXBlOwordHlwZWRlZiBCb29sVHlwZTxm
YWxzZT4gRmFsc2VUeXBlOworCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIFNlbGVjdElm
LCBCb29sRXhwciwgTm90RXhwciwgQW5kRXhwciwgT3JFeHByCisvLworCit0ZW1wbGF0ZSA8Ym9v
bCBDPiBzdHJ1Y3QgU2VsZWN0SWZJbXBsIHsgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFt
ZSBUMj4gc3RydWN0IEFwcGx5IHsgdHlwZWRlZiBUMSBUeXBlOyB9OyB9OwordGVtcGxhdGUgPD4g
c3RydWN0IFNlbGVjdElmSW1wbDxmYWxzZT4geyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyPiBzdHJ1Y3QgQXBwbHkgeyB0eXBlZGVmIFQyIFR5cGU7IH07IH07Cit0ZW1wbGF0ZSA8
Ym9vbCBDLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+IHN0cnVjdCBTZWxlY3RJZkNvbmQgOiBT
ZWxlY3RJZkltcGw8Qz46OnRlbXBsYXRlIEFwcGx5PFQxLFQyPiB7fTsKK3RlbXBsYXRlIDx0eXBl
bmFtZSBDLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+IHN0cnVjdCBTZWxlY3RJZiA6IFNlbGVj
dElmQ29uZDxDOjpWYWx1ZSwgVDEsIFQyPiB7fTsKKwordGVtcGxhdGUgPGJvb2wgQ29uZDEsIGJv
b2wgQ29uZDI+IHN0cnVjdCBBbmRFeHByQ29uZCA6IEZhbHNlVHlwZSB7fTsKK3RlbXBsYXRlIDw+
IHN0cnVjdCBBbmRFeHByQ29uZDx0cnVlLCB0cnVlPiA6IFRydWVUeXBlIHt9OwordGVtcGxhdGUg
PGJvb2wgQ29uZDEsIGJvb2wgQ29uZDI+IHN0cnVjdCBPckV4cHJDb25kIDogVHJ1ZVR5cGUge307
Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgT3JFeHByQ29uZDxmYWxzZSwgZmFsc2U+IDogRmFsc2VUeXBl
IHt9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQz4gc3RydWN0IEJvb2xFeHByIDogU2VsZWN0SWY8
QyxUcnVlVHlwZSxGYWxzZVR5cGU+OjpUeXBlIHt9OwordGVtcGxhdGUgPHR5cGVuYW1lIEM+IHN0
cnVjdCBOb3RFeHByICA6IFNlbGVjdElmPEMsRmFsc2VUeXBlLFRydWVUeXBlPjo6VHlwZSB7fTsK
K3RlbXBsYXRlIDx0eXBlbmFtZSBDMSwgdHlwZW5hbWUgQzI+IHN0cnVjdCBBbmRFeHByIDogQW5k
RXhwckNvbmQ8QzE6OlZhbHVlLCBDMjo6VmFsdWU+OjpUeXBlIHt9OwordGVtcGxhdGUgPHR5cGVu
YW1lIEMxLCB0eXBlbmFtZSBDMj4gc3RydWN0IE9yRXhwciAgOiBPckV4cHJDb25kPEMxOjpWYWx1
ZSwgQzI6OlZhbHVlPjo6VHlwZSB7fTsKKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBB
ZGRDb25zdCwgTWF5YmVBZGRDb25zdCwgUmVtb3ZlQ29uc3QKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
PiBzdHJ1Y3QgQWRkQ29uc3QgeyB0eXBlZGVmIGNvbnN0IFQgVHlwZTsgfTsKK3RlbXBsYXRlIDxi
b29sIENvbnN0aWZ5LCB0eXBlbmFtZSBUPiBzdHJ1Y3QgTWF5YmVBZGRDb25zdCA6IFNlbGVjdElm
Q29uZDxDb25zdGlmeSwgY29uc3QgVCwgVD4ge307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3Ry
dWN0IFJlbW92ZUNvbnN0IHsgdHlwZWRlZiBUIFR5cGU7IH07Cit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gc3RydWN0IFJlbW92ZUNvbnN0PGNvbnN0IFQ+IHsgdHlwZWRlZiBUIFR5cGU7IH07CisKKwor
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gSXNTYW1lLCBJc0NvbnN0LCBJc01vcmVDb25zdCwg
SXNQb2ludGVyCisvLwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IHN0cnVjdCBJ
c1NhbWUgOiBGYWxzZVR5cGUge307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElzU2Ft
ZTxULCBUPiA6IFRydWVUeXBlIHt9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElz
Q29uc3QgOiBGYWxzZVR5cGUge307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElzQ29u
c3Q8Y29uc3QgVD4gOiBUcnVlVHlwZSB7fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIENULCB0eXBl
bmFtZSBUPgorc3RydWN0IElzTW9yZUNvbnN0CisgICAgOiBBbmRFeHByPElzU2FtZTx0eXBlbmFt
ZSBSZW1vdmVDb25zdDxDVD46OlR5cGUsIHR5cGVuYW1lIFJlbW92ZUNvbnN0PFQ+OjpUeXBlPiwK
KyAgICAgICAgICAgICAgQm9vbFR5cGU8SXNDb25zdDxDVD46OlZhbHVlID49IElzQ29uc3Q8VD46
OlZhbHVlPiA+OjpUeXBlIHt9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElzUG9p
bnRlciA6IEZhbHNlVHlwZSB7fTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgSXNQb2lu
dGVyPFQqPiA6IFRydWVUeXBlIHt9OworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBJc0Jh
c2VPZgorLy8KKyNpZiBSQVBJREpTT05fSEFTX0NYWDExX1RZUEVUUkFJVFMKKwordGVtcGxhdGUg
PHR5cGVuYW1lIEIsIHR5cGVuYW1lIEQ+IHN0cnVjdCBJc0Jhc2VPZgorICAgIDogQm9vbFR5cGU8
IDo6c3RkOjppc19iYXNlX29mPEIsRD46OnZhbHVlPiB7fTsKKworI2Vsc2UgLy8gc2ltcGxpZmll
ZCB2ZXJzaW9uIGFkb3B0ZWQgZnJvbSBCb29zdAorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCLCB0eXBl
bmFtZSBEPiBzdHJ1Y3QgSXNCYXNlT2ZJbXBsIHsKKyAgICBSQVBJREpTT05fU1RBVElDX0FTU0VS
VChzaXplb2YoQikgIT0gMCk7CisgICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKEQp
ICE9IDApOworCisgICAgdHlwZWRlZiBjaGFyICgmWWVzKVsxXTsKKyAgICB0eXBlZGVmIGNoYXIg
KCZObykgWzJdOworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgc3RhdGljIFllcyBD
aGVjayhjb25zdCBEKiwgVCk7CisgICAgc3RhdGljIE5vICBDaGVjayhjb25zdCBCKiwgaW50KTsK
KworICAgIHN0cnVjdCBIb3N0IHsKKyAgICAgICAgb3BlcmF0b3IgY29uc3QgQiooKSBjb25zdDsK
KyAgICAgICAgb3BlcmF0b3IgY29uc3QgRCooKTsKKyAgICB9OworCisgICAgZW51bSB7IFZhbHVl
ID0gKHNpemVvZihDaGVjayhIb3N0KCksIDApKSA9PSBzaXplb2YoWWVzKSkgfTsKK307CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBCLCB0eXBlbmFtZSBEPiBzdHJ1Y3QgSXNCYXNlT2YKKyAgICA6IE9y
RXhwcjxJc1NhbWU8QiwgRD4sIEJvb2xFeHByPElzQmFzZU9mSW1wbDxCLCBEPiA+ID46OlR5cGUg
e307CisKKyNlbmRpZiAvLyBSQVBJREpTT05fSEFTX0NYWDExX1RZUEVUUkFJVFMKKworCisvLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLworLy8gRW5hYmxlSWYgLyBEaXNhYmxlSWYKKy8vCit0ZW1wbGF0ZSA8Ym9v
bCBDb25kaXRpb24sIHR5cGVuYW1lIFQgPSB2b2lkPiBzdHJ1Y3QgRW5hYmxlSWZDb25kICB7IHR5
cGVkZWYgVCBUeXBlOyB9OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBFbmFibGVJZkNv
bmQ8ZmFsc2UsIFQ+IHsgLyogZW1wdHkgKi8gfTsKKwordGVtcGxhdGUgPGJvb2wgQ29uZGl0aW9u
LCB0eXBlbmFtZSBUID0gdm9pZD4gc3RydWN0IERpc2FibGVJZkNvbmQgeyB0eXBlZGVmIFQgVHlw
ZTsgfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGlzYWJsZUlmQ29uZDx0cnVlLCBU
PiB7IC8qIGVtcHR5ICovIH07CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDb25kaXRpb24sIHR5cGVu
YW1lIFQgPSB2b2lkPgorc3RydWN0IEVuYWJsZUlmIDogRW5hYmxlSWZDb25kPENvbmRpdGlvbjo6
VmFsdWUsIFQ+IHt9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29uZGl0aW9uLCB0eXBlbmFtZSBU
ID0gdm9pZD4KK3N0cnVjdCBEaXNhYmxlSWYgOiBEaXNhYmxlSWZDb25kPENvbmRpdGlvbjo6VmFs
dWUsIFQ+IHt9OworCisvLyBTRklOQUUgaGVscGVycworc3RydWN0IFNmaW5hZVRhZyB7fTsKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgUmVtb3ZlU2ZpbmFlVGFnOwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IHN0cnVjdCBSZW1vdmVTZmluYWVUYWc8U2ZpbmFlVGFnJigqKShUKT4geyB0eXBl
ZGVmIFQgVHlwZTsgfTsKKworI2RlZmluZSBSQVBJREpTT05fUkVNT1ZFRlBUUl8odHlwZSkgXAor
ICAgIHR5cGVuYW1lIDo6UkFQSURKU09OX05BTUVTUEFDRTo6aW50ZXJuYWw6OlJlbW92ZVNmaW5h
ZVRhZyBcCisgICAgICAgIDwgOjpSQVBJREpTT05fTkFNRVNQQUNFOjppbnRlcm5hbDo6U2ZpbmFl
VGFnJigqKSB0eXBlPjo6VHlwZQorCisjZGVmaW5lIFJBUElESlNPTl9FTkFCTEVJRihjb25kKSBc
CisgICAgdHlwZW5hbWUgOjpSQVBJREpTT05fTkFNRVNQQUNFOjppbnRlcm5hbDo6RW5hYmxlSWYg
XAorICAgICAgICA8UkFQSURKU09OX1JFTU9WRUZQVFJfKGNvbmQpPjo6VHlwZSAqID0gTlVMTAor
CisjZGVmaW5lIFJBUElESlNPTl9ESVNBQkxFSUYoY29uZCkgXAorICAgIHR5cGVuYW1lIDo6UkFQ
SURKU09OX05BTUVTUEFDRTo6aW50ZXJuYWw6OkRpc2FibGVJZiBcCisgICAgICAgIDxSQVBJREpT
T05fUkVNT1ZFRlBUUl8oY29uZCk+OjpUeXBlICogPSBOVUxMCisKKyNkZWZpbmUgUkFQSURKU09O
X0VOQUJMRUlGX1JFVFVSTihjb25kLHJldHVybnR5cGUpIFwKKyAgICB0eXBlbmFtZSA6OlJBUElE
SlNPTl9OQU1FU1BBQ0U6OmludGVybmFsOjpFbmFibGVJZiBcCisgICAgICAgIDxSQVBJREpTT05f
UkVNT1ZFRlBUUl8oY29uZCksIFwKKyAgICAgICAgIFJBUElESlNPTl9SRU1PVkVGUFRSXyhyZXR1
cm50eXBlKT46OlR5cGUKKworI2RlZmluZSBSQVBJREpTT05fRElTQUJMRUlGX1JFVFVSTihjb25k
LHJldHVybnR5cGUpIFwKKyAgICB0eXBlbmFtZSA6OlJBUElESlNPTl9OQU1FU1BBQ0U6OmludGVy
bmFsOjpEaXNhYmxlSWYgXAorICAgICAgICA8UkFQSURKU09OX1JFTU9WRUZQVFJfKGNvbmQpLCBc
CisgICAgICAgICBSQVBJREpTT05fUkVNT1ZFRlBUUl8ocmV0dXJudHlwZSk+OjpUeXBlCisKK30g
Ly8gbmFtZXNwYWNlIGludGVybmFsCitSQVBJREpTT05fTkFNRVNQQUNFX0VORAorLy9AZW5kY29u
ZAorCisjaWYgZGVmaW5lZChfX0dOVUNfXykgfHwgZGVmaW5lZChfTVNDX1ZFUikKK1JBUElESlNP
Tl9ESUFHX1BPUAorI2VuZGlmCisKKyNlbmRpZiAvLyBSQVBJREpTT05fSU5URVJOQUxfTUVUQV9I
XwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3Jh
cGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9pbnRlcm5hbC9wb3cxMC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24v
aW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvcG93MTAuaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1
ZGUvcmFwaWRqc29uL2ludGVybmFsL3BvdzEwLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
OSBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExIE1pbG8gWWlwCisvLworLy8gUGVybWlzc2lvbiBp
cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n
IGEgY29weQorLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u
IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKKy8vIGluIHRoZSBTb2Z0d2FyZSB3aXRo
b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMK
Ky8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi
bGljZW5zZSwgYW5kL29yIHNlbGwKKy8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw
ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLy8gZnVybmlzaGVkIHRvIGRv
IHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKy8vCisvLyBUaGUgYWJv
dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBp
bmNsdWRlZCBpbgorLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUg
U29mdHdhcmUuCisvLworLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP
VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKy8vIElNUExJRUQsIElOQ0xVRElO
RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAor
Ly8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFCisvLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJF
IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisvLyBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO
RyBGUk9NLAorLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig
VEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgorLy8gVEhFIFNPRlRXQVJFLgorCisjaWZuZGVm
IFJBUElESlNPTl9QT1cxMF8KKyNkZWZpbmUgUkFQSURKU09OX1BPVzEwXworCitSQVBJREpTT05f
TkFNRVNQQUNFX0JFR0lOCituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyEgQ29tcHV0ZXMgaW50
ZWdlciBwb3dlcnMgb2YgMTAgaW4gZG91YmxlICgxMC4wXm4pLgorLyohIFRoaXMgZnVuY3Rpb24g
dXNlcyBsb29rdXAgdGFibGUgZm9yIGZhc3QgYW5kIGFjY3VyYXRlIHJlc3VsdHMuCisgICAgXHBh
cmFtIG4gbm9uLW5lZ2F0aXZlIGV4cG9uZW50LiBNdXN0IDw9IDMwOC4KKyAgICBccmV0dXJuIDEw
LjBebgorKi8KK2lubGluZSBkb3VibGUgUG93MTAoaW50IG4pIHsKKyAgICBzdGF0aWMgY29uc3Qg
ZG91YmxlIGVbXSA9IHsgLy8gMWUtMC4uLjFlMzA4OiAzMDkgKiA4IGJ5dGVzID0gMjQ3MiBieXRl
cworICAgICAgICAxZSswLCAgCisgICAgICAgIDFlKzEsICAxZSsyLCAgMWUrMywgIDFlKzQsICAx
ZSs1LCAgMWUrNiwgIDFlKzcsICAxZSs4LCAgMWUrOSwgIDFlKzEwLCAxZSsxMSwgMWUrMTIsIDFl
KzEzLCAxZSsxNCwgMWUrMTUsIDFlKzE2LCAxZSsxNywgMWUrMTgsIDFlKzE5LCAxZSsyMCwgCisg
ICAgICAgIDFlKzIxLCAxZSsyMiwgMWUrMjMsIDFlKzI0LCAxZSsyNSwgMWUrMjYsIDFlKzI3LCAx
ZSsyOCwgMWUrMjksIDFlKzMwLCAxZSszMSwgMWUrMzIsIDFlKzMzLCAxZSszNCwgMWUrMzUsIDFl
KzM2LCAxZSszNywgMWUrMzgsIDFlKzM5LCAxZSs0MCwKKyAgICAgICAgMWUrNDEsIDFlKzQyLCAx
ZSs0MywgMWUrNDQsIDFlKzQ1LCAxZSs0NiwgMWUrNDcsIDFlKzQ4LCAxZSs0OSwgMWUrNTAsIDFl
KzUxLCAxZSs1MiwgMWUrNTMsIDFlKzU0LCAxZSs1NSwgMWUrNTYsIDFlKzU3LCAxZSs1OCwgMWUr
NTksIDFlKzYwLAorICAgICAgICAxZSs2MSwgMWUrNjIsIDFlKzYzLCAxZSs2NCwgMWUrNjUsIDFl
KzY2LCAxZSs2NywgMWUrNjgsIDFlKzY5LCAxZSs3MCwgMWUrNzEsIDFlKzcyLCAxZSs3MywgMWUr
NzQsIDFlKzc1LCAxZSs3NiwgMWUrNzcsIDFlKzc4LCAxZSs3OSwgMWUrODAsCisgICAgICAgIDFl
KzgxLCAxZSs4MiwgMWUrODMsIDFlKzg0LCAxZSs4NSwgMWUrODYsIDFlKzg3LCAxZSs4OCwgMWUr
ODksIDFlKzkwLCAxZSs5MSwgMWUrOTIsIDFlKzkzLCAxZSs5NCwgMWUrOTUsIDFlKzk2LCAxZSs5
NywgMWUrOTgsIDFlKzk5LCAxZSsxMDAsCisgICAgICAgIDFlKzEwMSwxZSsxMDIsMWUrMTAzLDFl
KzEwNCwxZSsxMDUsMWUrMTA2LDFlKzEwNywxZSsxMDgsMWUrMTA5LDFlKzExMCwxZSsxMTEsMWUr
MTEyLDFlKzExMywxZSsxMTQsMWUrMTE1LDFlKzExNiwxZSsxMTcsMWUrMTE4LDFlKzExOSwxZSsx
MjAsCisgICAgICAgIDFlKzEyMSwxZSsxMjIsMWUrMTIzLDFlKzEyNCwxZSsxMjUsMWUrMTI2LDFl
KzEyNywxZSsxMjgsMWUrMTI5LDFlKzEzMCwxZSsxMzEsMWUrMTMyLDFlKzEzMywxZSsxMzQsMWUr
MTM1LDFlKzEzNiwxZSsxMzcsMWUrMTM4LDFlKzEzOSwxZSsxNDAsCisgICAgICAgIDFlKzE0MSwx
ZSsxNDIsMWUrMTQzLDFlKzE0NCwxZSsxNDUsMWUrMTQ2LDFlKzE0NywxZSsxNDgsMWUrMTQ5LDFl
KzE1MCwxZSsxNTEsMWUrMTUyLDFlKzE1MywxZSsxNTQsMWUrMTU1LDFlKzE1NiwxZSsxNTcsMWUr
MTU4LDFlKzE1OSwxZSsxNjAsCisgICAgICAgIDFlKzE2MSwxZSsxNjIsMWUrMTYzLDFlKzE2NCwx
ZSsxNjUsMWUrMTY2LDFlKzE2NywxZSsxNjgsMWUrMTY5LDFlKzE3MCwxZSsxNzEsMWUrMTcyLDFl
KzE3MywxZSsxNzQsMWUrMTc1LDFlKzE3NiwxZSsxNzcsMWUrMTc4LDFlKzE3OSwxZSsxODAsCisg
ICAgICAgIDFlKzE4MSwxZSsxODIsMWUrMTgzLDFlKzE4NCwxZSsxODUsMWUrMTg2LDFlKzE4Nywx
ZSsxODgsMWUrMTg5LDFlKzE5MCwxZSsxOTEsMWUrMTkyLDFlKzE5MywxZSsxOTQsMWUrMTk1LDFl
KzE5NiwxZSsxOTcsMWUrMTk4LDFlKzE5OSwxZSsyMDAsCisgICAgICAgIDFlKzIwMSwxZSsyMDIs
MWUrMjAzLDFlKzIwNCwxZSsyMDUsMWUrMjA2LDFlKzIwNywxZSsyMDgsMWUrMjA5LDFlKzIxMCwx
ZSsyMTEsMWUrMjEyLDFlKzIxMywxZSsyMTQsMWUrMjE1LDFlKzIxNiwxZSsyMTcsMWUrMjE4LDFl
KzIxOSwxZSsyMjAsCisgICAgICAgIDFlKzIyMSwxZSsyMjIsMWUrMjIzLDFlKzIyNCwxZSsyMjUs
MWUrMjI2LDFlKzIyNywxZSsyMjgsMWUrMjI5LDFlKzIzMCwxZSsyMzEsMWUrMjMyLDFlKzIzMywx
ZSsyMzQsMWUrMjM1LDFlKzIzNiwxZSsyMzcsMWUrMjM4LDFlKzIzOSwxZSsyNDAsCisgICAgICAg
IDFlKzI0MSwxZSsyNDIsMWUrMjQzLDFlKzI0NCwxZSsyNDUsMWUrMjQ2LDFlKzI0NywxZSsyNDgs
MWUrMjQ5LDFlKzI1MCwxZSsyNTEsMWUrMjUyLDFlKzI1MywxZSsyNTQsMWUrMjU1LDFlKzI1Niwx
ZSsyNTcsMWUrMjU4LDFlKzI1OSwxZSsyNjAsCisgICAgICAgIDFlKzI2MSwxZSsyNjIsMWUrMjYz
LDFlKzI2NCwxZSsyNjUsMWUrMjY2LDFlKzI2NywxZSsyNjgsMWUrMjY5LDFlKzI3MCwxZSsyNzEs
MWUrMjcyLDFlKzI3MywxZSsyNzQsMWUrMjc1LDFlKzI3NiwxZSsyNzcsMWUrMjc4LDFlKzI3OSwx
ZSsyODAsCisgICAgICAgIDFlKzI4MSwxZSsyODIsMWUrMjgzLDFlKzI4NCwxZSsyODUsMWUrMjg2
LDFlKzI4NywxZSsyODgsMWUrMjg5LDFlKzI5MCwxZSsyOTEsMWUrMjkyLDFlKzI5MywxZSsyOTQs
MWUrMjk1LDFlKzI5NiwxZSsyOTcsMWUrMjk4LDFlKzI5OSwxZSszMDAsCisgICAgICAgIDFlKzMw
MSwxZSszMDIsMWUrMzAzLDFlKzMwNCwxZSszMDUsMWUrMzA2LDFlKzMwNywxZSszMDgKKyAgICB9
OworICAgIFJBUElESlNPTl9BU1NFUlQobiA+PSAwICYmIG4gPD0gMzA4KTsKKyAgICByZXR1cm4g
ZVtuXTsKK30KKworfSAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKK1JBUElESlNPTl9OQU1FU1BBQ0Vf
RU5ECisKKyNlbmRpZiAvLyBSQVBJREpTT05fUE9XMTBfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29u
L2ludGVybmFsL3N0YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9pbnRlcm5h
bC9zdGFjay5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvc3Rh
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4MyBAQAorLy8gQ29weXJpZ2h0IChDKSAy
MDExIE1pbG8gWWlwCisvLworLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv
ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorLy8gb2YgdGhpcyBzb2Z0
d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiks
IHRvIGRlYWwKKy8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp
bmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKKy8vIHRvIHVzZSwgY29weSwgbW9kaWZ5
LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKKy8v
IGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo
ZSBTb2Z0d2FyZSBpcworLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9uczoKKy8vCisvLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg
dGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorLy8gYWxsIGNvcGll
cyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisvLworLy8gVEhFIFNP
RlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs
IEVYUFJFU1MgT1IKKy8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhF
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisv
LyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBE
QU1BR0VTIE9SIE9USEVSCisvLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENP
TlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorLy8gT1VUIE9GIE9SIElO
IENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5H
UyBJTgorLy8gVEhFIFNPRlRXQVJFLgorCisjaWZuZGVmIFJBUElESlNPTl9JTlRFUk5BTF9TVEFD
S19IXworI2RlZmluZSBSQVBJREpTT05fSU5URVJOQUxfU1RBQ0tfSF8KKworUkFQSURKU09OX05B
TUVTUEFDRV9CRUdJTgorbmFtZXNwYWNlIGludGVybmFsIHsKKworLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLworLy8gU3RhY2sKKworLy8hIEEgdHlwZS11bnNhZmUgc3RhY2sgZm9yIHN0b3JpbmcgZGlm
ZmVyZW50IHR5cGVzIG9mIGRhdGEuCisvKiEgXHRwYXJhbSBBbGxvY2F0b3IgQWxsb2NhdG9yIGZv
ciBhbGxvY2F0aW5nIHN0YWNrIG1lbW9yeS4KKyovCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2Nh
dG9yPgorY2xhc3MgU3RhY2sgeworcHVibGljOgorICAgIC8vIE9wdGltaXphdGlvbiBub3RlOiBE
byBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBzdGFja18gaW4gY29uc3RydWN0b3IuCisgICAgLy8g
RG8gaXQgbGF6aWx5IHdoZW4gZmlyc3QgUHVzaCgpIC0+IEV4cGFuZCgpIC0+IFJlc2l6ZSgpLgor
ICAgIFN0YWNrKEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3Qgc3RhY2tDYXBhY2l0eSkgOiBh
bGxvY2F0b3JfKGFsbG9jYXRvciksIG93bkFsbG9jYXRvcl8oMCksIHN0YWNrXygwKSwgc3RhY2tU
b3BfKDApLCBzdGFja0VuZF8oMCksIGluaXRpYWxDYXBhY2l0eV8oc3RhY2tDYXBhY2l0eSkgewor
ICAgICAgICBSQVBJREpTT05fQVNTRVJUKHN0YWNrQ2FwYWNpdHkgPiAwKTsKKyAgICB9CisKKyNp
ZiBSQVBJREpTT05fSEFTX0NYWDExX1JWQUxVRV9SRUZTCisgICAgU3RhY2soU3RhY2smJiByaHMp
CisgICAgICAgIDogYWxsb2NhdG9yXyhyaHMuYWxsb2NhdG9yXyksCisgICAgICAgICAgb3duQWxs
b2NhdG9yXyhyaHMub3duQWxsb2NhdG9yXyksCisgICAgICAgICAgc3RhY2tfKHJocy5zdGFja18p
LAorICAgICAgICAgIHN0YWNrVG9wXyhyaHMuc3RhY2tUb3BfKSwKKyAgICAgICAgICBzdGFja0Vu
ZF8ocmhzLnN0YWNrRW5kXyksCisgICAgICAgICAgaW5pdGlhbENhcGFjaXR5XyhyaHMuaW5pdGlh
bENhcGFjaXR5XykKKyAgICB7CisgICAgICAgIHJocy5hbGxvY2F0b3JfID0gMDsKKyAgICAgICAg
cmhzLm93bkFsbG9jYXRvcl8gPSAwOworICAgICAgICByaHMuc3RhY2tfID0gMDsKKyAgICAgICAg
cmhzLnN0YWNrVG9wXyA9IDA7CisgICAgICAgIHJocy5zdGFja0VuZF8gPSAwOworICAgICAgICBy
aHMuaW5pdGlhbENhcGFjaXR5XyA9IDA7CisgICAgfQorI2VuZGlmCisKKyAgICB+U3RhY2soKSB7
CisgICAgICAgIERlc3Ryb3koKTsKKyAgICB9CisKKyNpZiBSQVBJREpTT05fSEFTX0NYWDExX1JW
QUxVRV9SRUZTCisgICAgU3RhY2smIG9wZXJhdG9yPShTdGFjayYmIHJocykgeworICAgICAgICBp
ZiAoJnJocyAhPSB0aGlzKQorICAgICAgICB7CisgICAgICAgICAgICBEZXN0cm95KCk7CisKKyAg
ICAgICAgICAgIGFsbG9jYXRvcl8gPSByaHMuYWxsb2NhdG9yXzsKKyAgICAgICAgICAgIG93bkFs
bG9jYXRvcl8gPSByaHMub3duQWxsb2NhdG9yXzsKKyAgICAgICAgICAgIHN0YWNrXyA9IHJocy5z
dGFja187CisgICAgICAgICAgICBzdGFja1RvcF8gPSByaHMuc3RhY2tUb3BfOworICAgICAgICAg
ICAgc3RhY2tFbmRfID0gcmhzLnN0YWNrRW5kXzsKKyAgICAgICAgICAgIGluaXRpYWxDYXBhY2l0
eV8gPSByaHMuaW5pdGlhbENhcGFjaXR5XzsKKworICAgICAgICAgICAgcmhzLmFsbG9jYXRvcl8g
PSAwOworICAgICAgICAgICAgcmhzLm93bkFsbG9jYXRvcl8gPSAwOworICAgICAgICAgICAgcmhz
LnN0YWNrXyA9IDA7CisgICAgICAgICAgICByaHMuc3RhY2tUb3BfID0gMDsKKyAgICAgICAgICAg
IHJocy5zdGFja0VuZF8gPSAwOworICAgICAgICAgICAgcmhzLmluaXRpYWxDYXBhY2l0eV8gPSAw
OworICAgICAgICB9CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisjZW5kaWYKKworICAg
IHZvaWQgQ2xlYXIoKSB7IHN0YWNrVG9wXyA9IHN0YWNrXzsgfQorCisgICAgdm9pZCBTaHJpbmtU
b0ZpdCgpIHsgCisgICAgICAgIGlmIChFbXB0eSgpKSB7CisgICAgICAgICAgICAvLyBJZiB0aGUg
c3RhY2sgaXMgZW1wdHksIGNvbXBsZXRlbHkgZGVhbGxvY2F0ZSB0aGUgbWVtb3J5LgorICAgICAg
ICAgICAgQWxsb2NhdG9yOjpGcmVlKHN0YWNrXyk7CisgICAgICAgICAgICBzdGFja18gPSAwOwor
ICAgICAgICAgICAgc3RhY2tUb3BfID0gMDsKKyAgICAgICAgICAgIHN0YWNrRW5kXyA9IDA7Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgUmVzaXplKEdldFNpemUoKSk7Cisg
ICAgfQorCisgICAgLy8gT3B0aW1pemF0aW9uIG5vdGU6IHRyeSB0byBtaW5pbWl6ZSB0aGUgc2l6
ZSBvZiB0aGlzIGZ1bmN0aW9uIGZvciBmb3JjZSBpbmxpbmUuCisgICAgLy8gRXhwYW5zaW9uIGlz
IHJ1biB2ZXJ5IGluZnJlcXVlbnRseSwgc28gaXQgaXMgbW92ZWQgdG8gYW5vdGhlciAocHJvYmFi
bHkgbm9uLWlubGluZSkgZnVuY3Rpb24uCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBS
QVBJREpTT05fRk9SQ0VJTkxJTkUgVCogUHVzaChzaXplX3QgY291bnQgPSAxKSB7CisgICAgICAg
ICAvLyBFeHBhbmQgdGhlIHN0YWNrIGlmIG5lZWRlZAorICAgICAgICBpZiAoc3RhY2tUb3BfICsg
c2l6ZW9mKFQpICogY291bnQgPj0gc3RhY2tFbmRfKQorICAgICAgICAgICAgRXhwYW5kPFQ+KGNv
dW50KTsKKworICAgICAgICBUKiByZXQgPSByZWludGVycHJldF9jYXN0PFQqPihzdGFja1RvcF8p
OworICAgICAgICBzdGFja1RvcF8gKz0gc2l6ZW9mKFQpICogY291bnQ7CisgICAgICAgIHJldHVy
biByZXQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBUKiBQb3Aoc2l6
ZV90IGNvdW50KSB7CisgICAgICAgIFJBUElESlNPTl9BU1NFUlQoR2V0U2l6ZSgpID49IGNvdW50
ICogc2l6ZW9mKFQpKTsKKyAgICAgICAgc3RhY2tUb3BfIC09IGNvdW50ICogc2l6ZW9mKFQpOwor
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4oc3RhY2tUb3BfKTsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFQqIFRvcCgpIHsgCisgICAgICAgIFJBUElE
SlNPTl9BU1NFUlQoR2V0U2l6ZSgpID49IHNpemVvZihUKSk7CisgICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PFQqPihzdGFja1RvcF8gLSBzaXplb2YoVCkpOworICAgIH0KKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgVCogQm90dG9tKCkgeyByZXR1cm4gKFQqKXN0YWNrXzsg
fQorCisgICAgQWxsb2NhdG9yJiBHZXRBbGxvY2F0b3IoKSB7IHJldHVybiAqYWxsb2NhdG9yXzsg
fQorICAgIGJvb2wgRW1wdHkoKSBjb25zdCB7IHJldHVybiBzdGFja1RvcF8gPT0gc3RhY2tfOyB9
CisgICAgc2l6ZV90IEdldFNpemUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+
KHN0YWNrVG9wXyAtIHN0YWNrXyk7IH0KKyAgICBzaXplX3QgR2V0Q2FwYWNpdHkoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0YWNrRW5kXyAtIHN0YWNrXyk7IH0KKworcHJp
dmF0ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHZvaWQgRXhwYW5kKHNpemVfdCBj
b3VudCkgeworICAgICAgICAvLyBPbmx5IGV4cGFuZCB0aGUgY2FwYWNpdHkgaWYgdGhlIGN1cnJl
bnQgc3RhY2sgZXhpc3RzLiBPdGhlcndpc2UganVzdCBjcmVhdGUgYSBzdGFjayB3aXRoIGluaXRp
YWwgY2FwYWNpdHkuCisgICAgICAgIHNpemVfdCBuZXdDYXBhY2l0eTsKKyAgICAgICAgaWYgKHN0
YWNrXyA9PSAwKSB7CisgICAgICAgICAgICBpZiAoIWFsbG9jYXRvcl8pCisgICAgICAgICAgICAg
ICAgb3duQWxsb2NhdG9yXyA9IGFsbG9jYXRvcl8gPSBSQVBJREpTT05fTkVXKEFsbG9jYXRvcigp
KTsKKyAgICAgICAgICAgIG5ld0NhcGFjaXR5ID0gaW5pdGlhbENhcGFjaXR5XzsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIG5ld0NhcGFjaXR5ID0gR2V0Q2FwYWNpdHkoKTsKKyAgICAg
ICAgICAgIG5ld0NhcGFjaXR5ICs9IChuZXdDYXBhY2l0eSArIDEpIC8gMjsKKyAgICAgICAgfQor
ICAgICAgICBzaXplX3QgbmV3U2l6ZSA9IEdldFNpemUoKSArIHNpemVvZihUKSAqIGNvdW50Owor
ICAgICAgICBpZiAobmV3Q2FwYWNpdHkgPCBuZXdTaXplKQorICAgICAgICAgICAgbmV3Q2FwYWNp
dHkgPSBuZXdTaXplOworCisgICAgICAgIFJlc2l6ZShuZXdDYXBhY2l0eSk7CisgICAgfQorCisg
ICAgdm9pZCBSZXNpemUoc2l6ZV90IG5ld0NhcGFjaXR5KSB7CisgICAgICAgIGNvbnN0IHNpemVf
dCBzaXplID0gR2V0U2l6ZSgpOyAgLy8gQmFja3VwIHRoZSBjdXJyZW50IHNpemUKKyAgICAgICAg
c3RhY2tfID0gKGNoYXIqKWFsbG9jYXRvcl8tPlJlYWxsb2Moc3RhY2tfLCBHZXRDYXBhY2l0eSgp
LCBuZXdDYXBhY2l0eSk7CisgICAgICAgIHN0YWNrVG9wXyA9IHN0YWNrXyArIHNpemU7CisgICAg
ICAgIHN0YWNrRW5kXyA9IHN0YWNrXyArIG5ld0NhcGFjaXR5OworICAgIH0KKworICAgIHZvaWQg
RGVzdHJveSgpIHsKKyAgICAgICAgQWxsb2NhdG9yOjpGcmVlKHN0YWNrXyk7CisgICAgICAgIFJB
UElESlNPTl9ERUxFVEUob3duQWxsb2NhdG9yXyk7IC8vIE9ubHkgZGVsZXRlIGlmIGl0IGlzIG93
bmVkIGJ5IHRoZSBzdGFjaworICAgIH0KKworICAgIC8vIFByb2hpYml0IGNvcHkgY29uc3RydWN0
b3IgJiBhc3NpZ25tZW50IG9wZXJhdG9yLgorICAgIFN0YWNrKGNvbnN0IFN0YWNrJik7CisgICAg
U3RhY2smIG9wZXJhdG9yPShjb25zdCBTdGFjayYpOworCisgICAgQWxsb2NhdG9yKiBhbGxvY2F0
b3JfOworICAgIEFsbG9jYXRvciogb3duQWxsb2NhdG9yXzsKKyAgICBjaGFyICpzdGFja187Cisg
ICAgY2hhciAqc3RhY2tUb3BfOworICAgIGNoYXIgKnN0YWNrRW5kXzsKKyAgICBzaXplX3QgaW5p
dGlhbENhcGFjaXR5XzsKK307CisKK30gLy8gbmFtZXNwYWNlIGludGVybmFsCitSQVBJREpTT05f
TkFNRVNQQUNFX0VORAorCisjZW5kaWYgLy8gUkFQSURKU09OX1NUQUNLX0hfCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1
ZGUvcmFwaWRqc29uL2ludGVybmFsL3N0cmZ1bmMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFw
aWRqc29uL2ludGVybmFsL3N0cmZ1bmMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRq
c29uL2ludGVybmFsL3N0cmZ1bmMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzIEBACisv
LyBDb3B5cmlnaHQgKEMpIDIwMTEgTWlsbyBZaXAKKy8vCisvLyBQZXJtaXNzaW9uIGlzIGhlcmVi
eSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5
CisvLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg
KHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAorLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz
dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cworLy8gdG8g
dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl
LCBhbmQvb3Igc2VsbAorLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBw
ZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisvLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1
YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorLy8KKy8vIFRoZSBhYm92ZSBjb3B5
cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVk
IGluCisvLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2Fy
ZS4KKy8vCisvLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJS
QU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBO
T1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisvLyBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUKKy8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxF
IEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKy8vIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00s
CisvLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNF
IE9SIE9USEVSIERFQUxJTkdTIElOCisvLyBUSEUgU09GVFdBUkUuCisKKyNpZm5kZWYgUkFQSURK
U09OX0lOVEVSTkFMX1NUUkZVTkNfSF8KKyNkZWZpbmUgUkFQSURKU09OX0lOVEVSTkFMX1NUUkZV
TkNfSF8KKworUkFQSURKU09OX05BTUVTUEFDRV9CRUdJTgorbmFtZXNwYWNlIGludGVybmFsIHsK
KworLy8hIEN1c3RvbSBzdHJsZW4oKSB3aGljaCB3b3JrcyBvbiBkaWZmZXJlbnQgY2hhcmFjdGVy
IHR5cGVzLgorLyohIFx0cGFyYW0gQ2ggQ2hhcmFjdGVyIHR5cGUgKGUuZy4gY2hhciwgd2NoYXJf
dCwgc2hvcnQpCisgICAgXHBhcmFtIHMgTnVsbC10ZXJtaW5hdGVkIGlucHV0IHN0cmluZy4KKyAg
ICBccmV0dXJuIE51bWJlciBvZiBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcuIAorICAgIFxub3Rl
IFRoaXMgaGFzIHRoZSBzYW1lIHNlbWFudGljcyBhcyBzdHJsZW4oKSwgdGhlIHJldHVybiB2YWx1
ZSBpcyBub3QgbnVtYmVyIG9mIFVuaWNvZGUgY29kZXBvaW50cy4KKyovCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2g+CitpbmxpbmUgU2l6ZVR5cGUgU3RyTGVuKGNvbnN0IENoKiBzKSB7CisgICAgY29u
c3QgQ2gqIHAgPSBzOworICAgIHdoaWxlICgqcCkgKytwOworICAgIHJldHVybiBTaXplVHlwZShw
IC0gcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIGludGVybmFsCitSQVBJREpTT05fTkFNRVNQQUNF
X0VORAorCisjZW5kaWYgLy8gUkFQSURKU09OX0lOVEVSTkFMX1NUUkZVTkNfSF8KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5j
bHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvc3RydG9kLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3Jh
cGlkanNvbi9pbnRlcm5hbC9zdHJ0b2QuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRq
c29uL2ludGVybmFsL3N0cnRvZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjg1IEBACisv
LyBDb3B5cmlnaHQgKEMpIDIwMTEgTWlsbyBZaXAKKy8vCisvLyBQZXJtaXNzaW9uIGlzIGhlcmVi
eSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5
CisvLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg
KHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAorLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz
dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cworLy8gdG8g
dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl
LCBhbmQvb3Igc2VsbAorLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBw
ZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisvLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1
YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorLy8KKy8vIFRoZSBhYm92ZSBjb3B5
cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVk
IGluCisvLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2Fy
ZS4KKy8vCisvLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJS
QU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBO
T1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisvLyBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUKKy8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxF
IEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKy8vIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00s
CisvLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNF
IE9SIE9USEVSIERFQUxJTkdTIElOCisvLyBUSEUgU09GVFdBUkUuCisKKyNpZm5kZWYgUkFQSURK
U09OX1NUUlRPRF8KKyNkZWZpbmUgUkFQSURKU09OX1NUUlRPRF8KKworI2luY2x1ZGUgIi4uL3Jh
cGlkanNvbi5oIgorI2luY2x1ZGUgImllZWU3NTQuaCIKKyNpbmNsdWRlICJiaWdpbnRlZ2VyLmgi
CisjaW5jbHVkZSAiZGl5ZnAuaCIKKyNpbmNsdWRlICJwb3cxMC5oIgorCitSQVBJREpTT05fTkFN
RVNQQUNFX0JFR0lOCituYW1lc3BhY2UgaW50ZXJuYWwgeworCitpbmxpbmUgZG91YmxlIEZhc3RQ
YXRoKGRvdWJsZSBzaWduaWZpY2FuZCwgaW50IGV4cCkgeworICAgIGlmIChleHAgPCAtMzA4KQor
ICAgICAgICByZXR1cm4gMC4wOworICAgIGVsc2UgaWYgKGV4cCA+PSAwKQorICAgICAgICByZXR1
cm4gc2lnbmlmaWNhbmQgKiBpbnRlcm5hbDo6UG93MTAoZXhwKTsKKyAgICBlbHNlCisgICAgICAg
IHJldHVybiBzaWduaWZpY2FuZCAvIGludGVybmFsOjpQb3cxMCgtZXhwKTsKK30KKworaW5saW5l
IGRvdWJsZSBTdHJ0b2ROb3JtYWxQcmVjaXNpb24oZG91YmxlIGQsIGludCBwKSB7CisgICAgaWYg
KHAgPCAtMzA4KSB7CisgICAgICAgIC8vIFByZXZlbnQgZXhwU3VtIDwgLTMwOCwgbWFraW5nIFBv
dzEwKHApID0gMAorICAgICAgICBkID0gRmFzdFBhdGgoZCwgLTMwOCk7CisgICAgICAgIGQgPSBG
YXN0UGF0aChkLCBwICsgMzA4KTsKKyAgICB9CisgICAgZWxzZQorICAgICAgICBkID0gRmFzdFBh
dGgoZCwgcCk7CisgICAgcmV0dXJuIGQ7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5s
aW5lIFQgTWluMyhUIGEsIFQgYiwgVCBjKSB7CisgICAgVCBtID0gYTsKKyAgICBpZiAobSA+IGIp
IG0gPSBiOworICAgIGlmIChtID4gYykgbSA9IGM7CisgICAgcmV0dXJuIG07Cit9CisKK2lubGlu
ZSBpbnQgQ2hlY2tXaXRoaW5IYWxmVUxQKGRvdWJsZSBiLCBjb25zdCBCaWdJbnRlZ2VyJiBkLCBp
bnQgZEV4cCwgYm9vbCogYWRqdXN0VG9OZWdhdGl2ZSkgeworICAgIGNvbnN0IERvdWJsZSBkYihi
KTsKKyAgICBjb25zdCB1aW50NjRfdCBiSW50ID0gZGIuSW50ZWdlclNpZ25pZmljYW5kKCk7Cisg
ICAgY29uc3QgaW50IGJFeHAgPSBkYi5JbnRlZ2VyRXhwb25lbnQoKTsKKyAgICBjb25zdCBpbnQg
aEV4cCA9IGJFeHAgLSAxOworCisgICAgaW50IGRTX0V4cDIgPSAwLCBkU19FeHA1ID0gMCwgYlNf
RXhwMiA9IDAsIGJTX0V4cDUgPSAwLCBoU19FeHAyID0gMCwgaFNfRXhwNSA9IDA7CisKKyAgICAv
LyBBZGp1c3QgZm9yIGRlY2ltYWwgZXhwb25lbnQKKyAgICBpZiAoZEV4cCA+PSAwKSB7CisgICAg
ICAgIGRTX0V4cDIgKz0gZEV4cDsKKyAgICAgICAgZFNfRXhwNSArPSBkRXhwOworICAgIH0KKyAg
ICBlbHNlIHsKKyAgICAgICAgYlNfRXhwMiAtPSBkRXhwOworICAgICAgICBiU19FeHA1IC09IGRF
eHA7CisgICAgICAgIGhTX0V4cDIgLT0gZEV4cDsKKyAgICAgICAgaFNfRXhwNSAtPSBkRXhwOwor
ICAgIH0KKworICAgIC8vIEFkanVzdCBmb3IgYmluYXJ5IGV4cG9uZW50CisgICAgaWYgKGJFeHAg
Pj0gMCkKKyAgICAgICAgYlNfRXhwMiArPSBiRXhwOworICAgIGVsc2UgeworICAgICAgICBkU19F
eHAyIC09IGJFeHA7CisgICAgICAgIGhTX0V4cDIgLT0gYkV4cDsKKyAgICB9CisKKyAgICAvLyBB
ZGp1c3QgZm9yIGhhbGYgdWxwIGV4cG9uZW50CisgICAgaWYgKGhFeHAgPj0gMCkKKyAgICAgICAg
aFNfRXhwMiArPSBoRXhwOworICAgIGVsc2UgeworICAgICAgICBkU19FeHAyIC09IGhFeHA7Cisg
ICAgICAgIGJTX0V4cDIgLT0gaEV4cDsKKyAgICB9CisKKyAgICAvLyBSZW1vdmUgY29tbW9uIHBv
d2VyIG9mIHR3byBmYWN0b3IgZnJvbSBhbGwgdGhyZWUgc2NhbGVkIHZhbHVlcworICAgIGludCBj
b21tb25fRXhwMiA9IE1pbjMoZFNfRXhwMiwgYlNfRXhwMiwgaFNfRXhwMik7CisgICAgZFNfRXhw
MiAtPSBjb21tb25fRXhwMjsKKyAgICBiU19FeHAyIC09IGNvbW1vbl9FeHAyOworICAgIGhTX0V4
cDIgLT0gY29tbW9uX0V4cDI7CisKKyAgICBCaWdJbnRlZ2VyIGRTID0gZDsKKyAgICBkUy5NdWx0
aXBseVBvdzUoZFNfRXhwNSkgPDw9IGRTX0V4cDI7CisKKyAgICBCaWdJbnRlZ2VyIGJTKGJJbnQp
OworICAgIGJTLk11bHRpcGx5UG93NShiU19FeHA1KSA8PD0gYlNfRXhwMjsKKworICAgIEJpZ0lu
dGVnZXIgaFMoMSk7CisgICAgaFMuTXVsdGlwbHlQb3c1KGhTX0V4cDUpIDw8PSBoU19FeHAyOwor
CisgICAgQmlnSW50ZWdlciBkZWx0YSgwKTsKKyAgICAqYWRqdXN0VG9OZWdhdGl2ZSA9IGRTLkRp
ZmZlcmVuY2UoYlMsICZkZWx0YSk7CisKKyAgICBpbnQgY21wID0gZGVsdGEuQ29tcGFyZShoUyk7
CisgICAgLy8gSWYgZGVsdGEgaXMgd2l0aGluIDEvMiBVTFAsIGNoZWNrIGZvciBzcGVjaWFsIGNh
c2Ugd2hlbiBzaWduaWZpY2FuZCBpcyBwb3dlciBvZiB0d28uCisgICAgLy8gSW4gdGhpcyBjYXNl
LCBuZWVkIHRvIGNvbXBhcmUgd2l0aCAxLzJoIGluIHRoZSBsb3dlciBib3VuZC4KKyAgICBpZiAo
Y21wIDwgMCAmJiAqYWRqdXN0VG9OZWdhdGl2ZSAmJiAvLyB3aXRoaW4gYW5kIGRTIDwgYlMKKyAg
ICAgICAgZGIuSXNOb3JtYWwoKSAmJiAoYkludCAmIChiSW50IC0gMSkpID09IDAgJiYgLy8gUG93
ZXIgb2YgMgorICAgICAgICBkYi5VaW50NjRWYWx1ZSgpICE9IFJBUElESlNPTl9VSU5UNjRfQzIo
MHgwMDEwMDAwMCwgMHgwMDAwMDAwMCkpIC8vIG1pbmltdW0gbm9ybWFsIG51bWJlciBtdXN0IG5v
dCBkbyB0aGlzCisgICAgeworICAgICAgICBkZWx0YSA8PD0gMTsKKyAgICAgICAgcmV0dXJuIGRl
bHRhLkNvbXBhcmUoaFMpOworICAgIH0KKyAgICByZXR1cm4gY21wOworfQorCitpbmxpbmUgYm9v
bCBTdHJ0b2RGYXN0KGRvdWJsZSBkLCBpbnQgcCwgZG91YmxlKiByZXN1bHQpIHsKKyAgICAvLyBV
c2UgZmFzdCBwYXRoIGZvciBzdHJpbmctdG8tZG91YmxlIGNvbnZlcnNpb24gaWYgcG9zc2libGUK
KyAgICAvLyBzZWUgaHR0cDovL3d3dy5leHBsb3JpbmdiaW5hcnkuY29tL2Zhc3QtcGF0aC1kZWNp
bWFsLXRvLWZsb2F0aW5nLXBvaW50LWNvbnZlcnNpb24vCisgICAgaWYgKHAgPiAyMiAgJiYgcCA8
IDIyICsgMTYpIHsKKyAgICAgICAgLy8gRmFzdCBQYXRoIENhc2VzIEluIERpc2d1aXNlCisgICAg
ICAgIGQgKj0gaW50ZXJuYWw6OlBvdzEwKHAgLSAyMik7CisgICAgICAgIHAgPSAyMjsKKyAgICB9
CisKKyAgICBpZiAocCA+PSAtMjIgJiYgcCA8PSAyMiAmJiBkIDw9IDkwMDcxOTkyNTQ3NDA5OTEu
MCkgeyAvLyAyXjUzIC0gMQorICAgICAgICAqcmVzdWx0ID0gRmFzdFBhdGgoZCwgcCk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIHJldHVybiBmYWxzZTsK
K30KKworLy8gQ29tcHV0ZSBhbiBhcHByb3hpbWF0aW9uIGFuZCBzZWUgaWYgaXQgaXMgd2l0aGlu
IDEvMiBVTFAKK2lubGluZSBib29sIFN0cnRvZERpeUZwKGNvbnN0IGNoYXIqIGRlY2ltYWxzLCBz
aXplX3QgbGVuZ3RoLCBzaXplX3QgZGVjaW1hbFBvc2l0aW9uLCBpbnQgZXhwLCBkb3VibGUqIHJl
c3VsdCkgeworICAgIHVpbnQ2NF90IHNpZ25pZmljYW5kID0gMDsKKyAgICBzaXplX3QgaSA9IDA7
ICAgLy8gMl42NCAtIDEgPSAxODQ0Njc0NDA3MzcwOTU1MTYxNSwgMTg0NDY3NDQwNzM3MDk1NTE2
MSA9IDB4MTk5OTk5OTk5OTk5OTk5OSAgICAKKyAgICBmb3IgKDsgaSA8IGxlbmd0aDsgaSsrKSB7
CisgICAgICAgIGlmIChzaWduaWZpY2FuZCAgPiAgUkFQSURKU09OX1VJTlQ2NF9DMigweDE5OTk5
OTk5LCAweDk5OTk5OTk5KSB8fAorICAgICAgICAgICAgKHNpZ25pZmljYW5kID09IFJBUElESlNP
Tl9VSU5UNjRfQzIoMHgxOTk5OTk5OSwgMHg5OTk5OTk5OSkgJiYgZGVjaW1hbHNbaV0gPiAnNScp
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHNpZ25pZmljYW5kID0gc2lnbmlmaWNhbmQg
KiAxMCArIChkZWNpbWFsc1tpXSAtICcwJyk7CisgICAgfQorICAgIAorICAgIGlmIChpIDwgbGVu
Z3RoICYmIGRlY2ltYWxzW2ldID49ICc1JykgLy8gUm91bmRpbmcKKyAgICAgICAgc2lnbmlmaWNh
bmQrKzsKKworICAgIHNpemVfdCByZW1haW5pbmcgPSBsZW5ndGggLSBpOworICAgIGNvbnN0IHVu
c2lnbmVkIGtVbHBTaGlmdCA9IDM7CisgICAgY29uc3QgdW5zaWduZWQga1VscCA9IDEgPDwga1Vs
cFNoaWZ0OworICAgIGludCBlcnJvciA9IChyZW1haW5pbmcgPT0gMCkgPyAwIDoga1VscCAvIDI7
CisKKyAgICBEaXlGcCB2KHNpZ25pZmljYW5kLCAwKTsKKyAgICB2ID0gdi5Ob3JtYWxpemUoKTsK
KyAgICBlcnJvciA8PD0gLXYuZTsKKworICAgIGNvbnN0IGludCBkRXhwID0gKGludClkZWNpbWFs
UG9zaXRpb24gLSAoaW50KWkgKyBleHA7CisKKyAgICBpbnQgYWN0dWFsRXhwOworICAgIERpeUZw
IGNhY2hlZFBvd2VyID0gR2V0Q2FjaGVkUG93ZXIxMChkRXhwLCAmYWN0dWFsRXhwKTsKKyAgICBp
ZiAoYWN0dWFsRXhwICE9IGRFeHApIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IERpeUZwIGtQb3cx
MFtdID0geworICAgICAgICAgICAgRGl5RnAoUkFQSURKU09OX1VJTlQ2NF9DMigweGEwMDAwMDAw
LCAwMDAwMDAwMCksIC02MCksICAvLyAxMF4xCisgICAgICAgICAgICBEaXlGcChSQVBJREpTT05f
VUlOVDY0X0MyKDB4YzgwMDAwMDAsIDAwMDAwMDAwKSwgLTU3KSwgIC8vIDEwXjIKKyAgICAgICAg
ICAgIERpeUZwKFJBUElESlNPTl9VSU5UNjRfQzIoMHhmYTAwMDAwMCwgMDAwMDAwMDApLCAtNTQp
LCAgLy8gMTBeMworICAgICAgICAgICAgRGl5RnAoUkFQSURKU09OX1VJTlQ2NF9DMigweDljNDAw
MDAwLCAwMDAwMDAwMCksIC01MCksICAvLyAxMF40CisgICAgICAgICAgICBEaXlGcChSQVBJREpT
T05fVUlOVDY0X0MyKDB4YzM1MDAwMDAsIDAwMDAwMDAwKSwgLTQ3KSwgIC8vIDEwXjUKKyAgICAg
ICAgICAgIERpeUZwKFJBUElESlNPTl9VSU5UNjRfQzIoMHhmNDI0MDAwMCwgMDAwMDAwMDApLCAt
NDQpLCAgLy8gMTBeNgorICAgICAgICAgICAgRGl5RnAoUkFQSURKU09OX1VJTlQ2NF9DMigweDk4
OTY4MDAwLCAwMDAwMDAwMCksIC00MCkgICAvLyAxMF43CisgICAgICAgIH07CisgICAgICAgIGlu
dCBhZGp1c3RtZW50ID0gZEV4cCAtIGFjdHVhbEV4cCAtIDE7CisgICAgICAgIFJBUElESlNPTl9B
U1NFUlQoYWRqdXN0bWVudCA+PSAwICYmIGFkanVzdG1lbnQgPCA3KTsKKyAgICAgICAgdiA9IHYg
KiBrUG93MTBbYWRqdXN0bWVudF07CisgICAgICAgIGlmIChsZW5ndGggKyBhZGp1c3RtZW50ID4g
MTkpIC8vIGhhcyBtb3JlIGRpZ2l0cyB0aGFuIGRlY2ltYWwgZGlnaXRzIGluIDY0LWJpdAorICAg
ICAgICAgICAgZXJyb3IgKz0ga1VscCAvIDI7CisgICAgfQorCisgICAgdiA9IHYgKiBjYWNoZWRQ
b3dlcjsKKworICAgIGVycm9yICs9IGtVbHAgKyAoZXJyb3IgPT0gMCA/IDAgOiAxKTsKKworICAg
IGNvbnN0IGludCBvbGRFeHAgPSB2LmU7CisgICAgdiA9IHYuTm9ybWFsaXplKCk7CisgICAgZXJy
b3IgPDw9IG9sZEV4cCAtIHYuZTsKKworICAgIGNvbnN0IHVuc2lnbmVkIGVmZmVjdGl2ZVNpZ25p
ZmljYW5kU2l6ZSA9IERvdWJsZTo6RWZmZWN0aXZlU2lnbmlmaWNhbmRTaXplKDY0ICsgdi5lKTsK
KyAgICB1bnNpZ25lZCBwcmVjaXNpb25TaXplID0gNjQgLSBlZmZlY3RpdmVTaWduaWZpY2FuZFNp
emU7CisgICAgaWYgKHByZWNpc2lvblNpemUgKyBrVWxwU2hpZnQgPj0gNjQpIHsKKyAgICAgICAg
dW5zaWduZWQgc2NhbGVFeHAgPSAocHJlY2lzaW9uU2l6ZSArIGtVbHBTaGlmdCkgLSA2MzsKKyAg
ICAgICAgdi5mID4+PSBzY2FsZUV4cDsKKyAgICAgICAgdi5lICs9IHNjYWxlRXhwOyAKKyAgICAg
ICAgZXJyb3IgPSAoZXJyb3IgPj4gc2NhbGVFeHApICsgMSArIGtVbHA7CisgICAgICAgIHByZWNp
c2lvblNpemUgLT0gc2NhbGVFeHA7CisgICAgfQorCisgICAgRGl5RnAgcm91bmRlZCh2LmYgPj4g
cHJlY2lzaW9uU2l6ZSwgdi5lICsgcHJlY2lzaW9uU2l6ZSk7CisgICAgY29uc3QgdWludDY0X3Qg
cHJlY2lzaW9uQml0cyA9ICh2LmYgJiAoKHVpbnQ2NF90KDEpIDw8IHByZWNpc2lvblNpemUpIC0g
MSkpICoga1VscDsKKyAgICBjb25zdCB1aW50NjRfdCBoYWxmV2F5ID0gKHVpbnQ2NF90KDEpIDw8
IChwcmVjaXNpb25TaXplIC0gMSkpICoga1VscDsKKyAgICBpZiAocHJlY2lzaW9uQml0cyA+PSBo
YWxmV2F5ICsgZXJyb3IpCisgICAgICAgIHJvdW5kZWQuZisrOworCisgICAgKnJlc3VsdCA9IHJv
dW5kZWQuVG9Eb3VibGUoKTsKKworICAgIHJldHVybiBoYWxmV2F5IC0gZXJyb3IgPj0gcHJlY2lz
aW9uQml0cyB8fCBwcmVjaXNpb25CaXRzID49IGhhbGZXYXkgKyBlcnJvcjsKK30KKworaW5saW5l
IGRvdWJsZSBTdHJ0b2RCaWdJbnRlZ2VyKGRvdWJsZSBhcHByb3gsIGNvbnN0IGNoYXIqIGRlY2lt
YWxzLCBzaXplX3QgbGVuZ3RoLCBzaXplX3QgZGVjaW1hbFBvc2l0aW9uLCBpbnQgZXhwKSB7Cisg
ICAgY29uc3QgQmlnSW50ZWdlciBkSW50KGRlY2ltYWxzLCBsZW5ndGgpOworICAgIGNvbnN0IGlu
dCBkRXhwID0gKGludClkZWNpbWFsUG9zaXRpb24gLSAoaW50KWxlbmd0aCArIGV4cDsKKyAgICBE
b3VibGUgYShhcHByb3gpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykgeworICAg
ICAgICBib29sIGFkanVzdFRvTmVnYXRpdmU7CisgICAgICAgIGludCBjbXAgPSBDaGVja1dpdGhp
bkhhbGZVTFAoYS5WYWx1ZSgpLCBkSW50LCBkRXhwLCAmYWRqdXN0VG9OZWdhdGl2ZSk7CisgICAg
ICAgIGlmIChjbXAgPCAwKQorICAgICAgICAgICAgcmV0dXJuIGEuVmFsdWUoKTsgIC8vIHdpdGhp
biBoYWxmIFVMUAorICAgICAgICBlbHNlIGlmIChjbXAgPT0gMCkgeworICAgICAgICAgICAgLy8g
Um91bmQgdG93YXJkcyBldmVuCisgICAgICAgICAgICBpZiAoYS5TaWduaWZpY2FuZCgpICYgMSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gYWRqdXN0VG9OZWdhdGl2ZSA/IGEuUHJldmlvdXNQb3Np
dGl2ZURvdWJsZSgpIDogYS5OZXh0UG9zaXRpdmVEb3VibGUoKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICByZXR1cm4gYS5WYWx1ZSgpOworICAgICAgICB9CisgICAgICAgIGVs
c2UgLy8gYWRqdXN0bWVudAorICAgICAgICAgICAgYSA9IGFkanVzdFRvTmVnYXRpdmUgPyBhLlBy
ZXZpb3VzUG9zaXRpdmVEb3VibGUoKSA6IGEuTmV4dFBvc2l0aXZlRG91YmxlKCk7CisgICAgfQor
CisgICAgLy8gVGhpcyBzaG91bGQgbm90IGhhcHBlbiwgYnV0IGluIGNhc2UgdGhlcmUgaXMgcmVh
bGx5IGEgYnVnLCBicmVhayB0aGUgaW5maW5pdGUtbG9vcAorICAgIHJldHVybiBhLlZhbHVlKCk7
Cit9CisKK2lubGluZSBkb3VibGUgU3RydG9kRnVsbFByZWNpc2lvbihkb3VibGUgZCwgaW50IHAs
IGNvbnN0IGNoYXIqIGRlY2ltYWxzLCBzaXplX3QgbGVuZ3RoLCBzaXplX3QgZGVjaW1hbFBvc2l0
aW9uLCBpbnQgZXhwKSB7CisgICAgUkFQSURKU09OX0FTU0VSVChkID49IDAuMCk7CisgICAgUkFQ
SURKU09OX0FTU0VSVChsZW5ndGggPj0gMSk7CisKKyAgICBkb3VibGUgcmVzdWx0OworICAgIGlm
IChTdHJ0b2RGYXN0KGQsIHAsICZyZXN1bHQpKQorICAgICAgICByZXR1cm4gcmVzdWx0OworCisg
ICAgLy8gVHJpbSBsZWFkaW5nIHplcm9zCisgICAgd2hpbGUgKCpkZWNpbWFscyA9PSAnMCcgJiYg
bGVuZ3RoID4gMSkgeworICAgICAgICBsZW5ndGgtLTsKKyAgICAgICAgZGVjaW1hbHMrKzsKKyAg
ICAgICAgZGVjaW1hbFBvc2l0aW9uLS07CisgICAgfQorCisgICAgLy8gVHJpbSB0cmFpbGluZyB6
ZXJvcworICAgIHdoaWxlIChkZWNpbWFsc1tsZW5ndGggLSAxXSA9PSAnMCcgJiYgbGVuZ3RoID4g
MSkgeworICAgICAgICBsZW5ndGgtLTsKKyAgICAgICAgZGVjaW1hbFBvc2l0aW9uLS07CisgICAg
ICAgIGV4cCsrOworICAgIH0KKworICAgIC8vIFRyaW0gcmlnaHQtbW9zdCBkaWdpdHMKKyAgICBj
b25zdCBpbnQga01heERlY2ltYWxEaWdpdCA9IDc4MDsKKyAgICBpZiAoKGludClsZW5ndGggPiBr
TWF4RGVjaW1hbERpZ2l0KSB7CisgICAgICAgIGV4cCArPSAoaW50KGxlbmd0aCkgLSBrTWF4RGVj
aW1hbERpZ2l0KTsKKyAgICAgICAgbGVuZ3RoID0ga01heERlY2ltYWxEaWdpdDsKKyAgICB9CisK
KyAgICAvLyBJZiB0b28gc21hbGwsIHVuZGVyZmxvdyB0byB6ZXJvCisgICAgaWYgKGludChsZW5n
dGgpICsgZXhwIDwgLTMyNCkKKyAgICAgICAgcmV0dXJuIDAuMDsKKworICAgIGlmIChTdHJ0b2RE
aXlGcChkZWNpbWFscywgbGVuZ3RoLCBkZWNpbWFsUG9zaXRpb24sIGV4cCwgJnJlc3VsdCkpCisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICAvLyBVc2UgYXBwcm94aW1hdGlvbiBmcm9tIFN0
cnRvZERpeUZwIGFuZCBtYWtlIGFkanVzdG1lbnQgd2l0aCBCaWdJbnRlZ2VyIGNvbXBhcmlzb24K
KyAgICByZXR1cm4gU3RydG9kQmlnSW50ZWdlcihyZXN1bHQsIGRlY2ltYWxzLCBsZW5ndGgsIGRl
Y2ltYWxQb3NpdGlvbiwgZXhwKTsKK30KKworfSAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKK1JBUElE
SlNPTl9OQU1FU1BBQ0VfRU5ECisKKyNlbmRpZiAvLyBSQVBJREpTT05fU1RSVE9EXwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9p
bmNsdWRlL3JhcGlkanNvbi9tZW1vcnlidWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFw
aWRqc29uL21lbW9yeWJ1ZmZlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24v
bWVtb3J5YnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NiBAQAorLy8gQ29weXJp
Z2h0IChDKSAyMDExIE1pbG8gWWlwCisvLworLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl
ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorLy8gb2Yg
dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv
ZnR3YXJlIiksIHRvIGRlYWwKKy8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u
LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKKy8vIHRvIHVzZSwgY29w
eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29y
IHNlbGwKKy8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0
byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKy8vCisvLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5v
dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorLy8g
YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisvLwor
Ly8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg
QU5ZIEtJTkQsIEVYUFJFU1MgT1IKKy8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU
RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorLy8gRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFCisvLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5Z
IENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisvLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU
SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorLy8gT1VU
IE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhF
UiBERUFMSU5HUyBJTgorLy8gVEhFIFNPRlRXQVJFLgorCisjaWZuZGVmIFJBUElESlNPTl9NRU1P
UllCVUZGRVJfSF8KKyNkZWZpbmUgUkFQSURKU09OX01FTU9SWUJVRkZFUl9IXworCisjaW5jbHVk
ZSAicmFwaWRqc29uLmgiCisjaW5jbHVkZSAiaW50ZXJuYWwvc3RhY2suaCIKKworUkFQSURKU09O
X05BTUVTUEFDRV9CRUdJTgorCisvLyEgUmVwcmVzZW50cyBhbiBpbi1tZW1vcnkgb3V0cHV0IGJ5
dGUgc3RyZWFtLgorLyohCisgICAgVGhpcyBjbGFzcyBpcyBtYWlubHkgZm9yIGJlaW5nIHdyYXBw
ZWQgYnkgRW5jb2RlZE91dHB1dFN0cmVhbSBvciBBdXRvVVRGT3V0cHV0U3RyZWFtLgorCisgICAg
SXQgaXMgc2ltaWxhciB0byBGaWxlV3JpdGVCdWZmZXIgYnV0IHRoZSBkZXN0aW5hdGlvbiBpcyBh
biBpbi1tZW1vcnkgYnVmZmVyIGluc3RlYWQgb2YgYSBmaWxlLgorCisgICAgRGlmZmVyZW5jZXMg
YmV0d2VlbiBNZW1vcnlCdWZmZXIgYW5kIFN0cmluZ0J1ZmZlcjoKKyAgICAxLiBTdHJpbmdCdWZm
ZXIgaGFzIEVuY29kaW5nIGJ1dCBNZW1vcnlCdWZmZXIgaXMgb25seSBhIGJ5dGUgYnVmZmVyLiAK
KyAgICAyLiBTdHJpbmdCdWZmZXI6OkdldFN0cmluZygpIHJldHVybnMgYSBudWxsLXRlcm1pbmF0
ZWQgc3RyaW5nLiBNZW1vcnlCdWZmZXI6OkdldEJ1ZmZlcigpIHJldHVybnMgYSBidWZmZXIgd2l0
aG91dCB0ZXJtaW5hdG9yLgorCisgICAgXHRwYXJhbSBBbGxvY2F0b3IgdHlwZSBmb3IgYWxsb2Nh
dGluZyBtZW1vcnkgYnVmZmVyLgorICAgIFxub3RlIGltcGxlbWVudHMgU3RyZWFtIGNvbmNlcHQK
KyovCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2NhdG9yID0gQ3J0QWxsb2NhdG9yPgorc3RydWN0
IEdlbmVyaWNNZW1vcnlCdWZmZXIgeworICAgIHR5cGVkZWYgY2hhciBDaDsgLy8gYnl0ZQorCisg
ICAgR2VuZXJpY01lbW9yeUJ1ZmZlcihBbGxvY2F0b3IqIGFsbG9jYXRvciA9IDAsIHNpemVfdCBj
YXBhY2l0eSA9IGtEZWZhdWx0Q2FwYWNpdHkpIDogc3RhY2tfKGFsbG9jYXRvciwgY2FwYWNpdHkp
IHt9CisKKyAgICB2b2lkIFB1dChDaCBjKSB7ICpzdGFja18udGVtcGxhdGUgUHVzaDxDaD4oKSA9
IGM7IH0KKyAgICB2b2lkIEZsdXNoKCkge30KKworICAgIHZvaWQgQ2xlYXIoKSB7IHN0YWNrXy5D
bGVhcigpOyB9CisgICAgdm9pZCBTaHJpbmtUb0ZpdCgpIHsgc3RhY2tfLlNocmlua1RvRml0KCk7
IH0KKyAgICBDaCogUHVzaChzaXplX3QgY291bnQpIHsgcmV0dXJuIHN0YWNrXy50ZW1wbGF0ZSBQ
dXNoPENoPihjb3VudCk7IH0KKyAgICB2b2lkIFBvcChzaXplX3QgY291bnQpIHsgc3RhY2tfLnRl
bXBsYXRlIFBvcDxDaD4oY291bnQpOyB9CisKKyAgICBjb25zdCBDaCogR2V0QnVmZmVyKCkgY29u
c3QgeworICAgICAgICByZXR1cm4gc3RhY2tfLnRlbXBsYXRlIEJvdHRvbTxDaD4oKTsKKyAgICB9
CisKKyAgICBzaXplX3QgR2V0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YWNrXy5HZXRTaXplKCk7
IH0KKworICAgIHN0YXRpYyBjb25zdCBzaXplX3Qga0RlZmF1bHRDYXBhY2l0eSA9IDI1NjsKKyAg
ICBtdXRhYmxlIGludGVybmFsOjpTdGFjazxBbGxvY2F0b3I+IHN0YWNrXzsKK307CisKK3R5cGVk
ZWYgR2VuZXJpY01lbW9yeUJ1ZmZlcjw+IE1lbW9yeUJ1ZmZlcjsKKworLy8hIEltcGxlbWVudCBz
cGVjaWFsaXplZCB2ZXJzaW9uIG9mIFB1dE4oKSB3aXRoIG1lbXNldCgpIGZvciBiZXR0ZXIgcGVy
Zm9ybWFuY2UuCit0ZW1wbGF0ZTw+CitpbmxpbmUgdm9pZCBQdXROKE1lbW9yeUJ1ZmZlciYgbWVt
b3J5QnVmZmVyLCBjaGFyIGMsIHNpemVfdCBuKSB7CisgICAgc3RkOjptZW1zZXQobWVtb3J5QnVm
ZmVyLnN0YWNrXy5QdXNoPGNoYXI+KG4pLCBjLCBuICogc2l6ZW9mKGMpKTsKK30KKworUkFQSURK
U09OX05BTUVTUEFDRV9FTkQKKworI2VuZGlmIC8vIFJBUElESlNPTl9NRU1PUllCVUZGRVJfSF8K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBp
ZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vbWVtb3J5c3RyZWFtLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNs
dWRlL3JhcGlkanNvbi9tZW1vcnlzdHJlYW0uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFw
aWRqc29uL21lbW9yeXN0cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjcgQEAKKy8v
IENvcHlyaWdodCAoQykgMjAxMSBNaWxvIFlpcAorLy8KKy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5
IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkK
Ky8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAo
dGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCisvLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0
cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCisvLyB0byB1
c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2Us
IGFuZC9vciBzZWxsCisvLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBl
cnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3Vi
amVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisvLworLy8gVGhlIGFib3ZlIGNvcHly
aWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQg
aW4KKy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJl
LgorLy8KKy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJB
TlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisvLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5P
VCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKy8vIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRQorLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUg
Rk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorLy8gTElBQklMSVRZLCBXSEVUSEVSIElO
IEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwK
Ky8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0Ug
T1IgT1RIRVIgREVBTElOR1MgSU4KKy8vIFRIRSBTT0ZUV0FSRS4KKworI2lmbmRlZiBSQVBJREpT
T05fTUVNT1JZU1RSRUFNX0hfCisjZGVmaW5lIFJBUElESlNPTl9NRU1PUllTVFJFQU1fSF8KKwor
I2luY2x1ZGUgInJhcGlkanNvbi5oIgorCitSQVBJREpTT05fTkFNRVNQQUNFX0JFR0lOCisKKy8v
ISBSZXByZXNlbnRzIGFuIGluLW1lbW9yeSBpbnB1dCBieXRlIHN0cmVhbS4KKy8qIQorICAgIFRo
aXMgY2xhc3MgaXMgbWFpbmx5IGZvciBiZWluZyB3cmFwcGVkIGJ5IEVuY29kZWRJbnB1dFN0cmVh
bSBvciBBdXRvVVRGSW5wdXRTdHJlYW0uCisKKyAgICBJdCBpcyBzaW1pbGFyIHRvIEZpbGVSZWFk
QnVmZmVyIGJ1dCB0aGUgc291cmNlIGlzIGFuIGluLW1lbW9yeSBidWZmZXIgaW5zdGVhZCBvZiBh
IGZpbGUuCisKKyAgICBEaWZmZXJlbmNlcyBiZXR3ZWVuIE1lbW9yeVN0cmVhbSBhbmQgU3RyaW5n
U3RyZWFtOgorICAgIDEuIFN0cmluZ1N0cmVhbSBoYXMgZW5jb2RpbmcgYnV0IE1lbW9yeVN0cmVh
bSBpcyBhIGJ5dGUgc3RyZWFtLgorICAgIDIuIE1lbW9yeVN0cmVhbSBuZWVkcyBzaXplIG9mIHRo
ZSBzb3VyY2UgYnVmZmVyIGFuZCB0aGUgYnVmZmVyIGRvbid0IG5lZWQgdG8gYmUgbnVsbCB0ZXJt
aW5hdGVkLiBTdHJpbmdTdHJlYW0gYXNzdW1lIG51bGwtdGVybWluYXRlZCBzdHJpbmcgYXMgc291
cmNlLgorICAgIDMuIE1lbW9yeVN0cmVhbSBzdXBwb3J0cyBQZWVrNCgpIGZvciBlbmNvZGluZyBk
ZXRlY3Rpb24uIFN0cmluZ1N0cmVhbSBpcyBzcGVjaWZpZWQgd2l0aCBhbiBlbmNvZGluZyBzbyBp
dCBzaG91bGQgbm90IGhhdmUgUGVlazQoKS4KKyAgICBcbm90ZSBpbXBsZW1lbnRzIFN0cmVhbSBj
b25jZXB0CisqLworc3RydWN0IE1lbW9yeVN0cmVhbSB7CisgICAgdHlwZWRlZiBjaGFyIENoOyAv
LyBieXRlCisKKyAgICBNZW1vcnlTdHJlYW0oY29uc3QgQ2ggKnNyYywgc2l6ZV90IHNpemUpIDog
c3JjXyhzcmMpLCBiZWdpbl8oc3JjKSwgZW5kXyhzcmMgKyBzaXplKSwgc2l6ZV8oc2l6ZSkge30K
KworICAgIENoIFBlZWsoKSBjb25zdCB7IHJldHVybiAoc3JjXyA9PSBlbmRfKSA/ICdcMCcgOiAq
c3JjXzsgfQorICAgIENoIFRha2UoKSB7IHJldHVybiAoc3JjXyA9PSBlbmRfKSA/ICdcMCcgOiAq
c3JjXysrOyB9CisgICAgc2l6ZV90IFRlbGwoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxz
aXplX3Q+KHNyY18gLSBiZWdpbl8pOyB9CisKKyAgICBDaCogUHV0QmVnaW4oKSB7IFJBUElESlNP
Tl9BU1NFUlQoZmFsc2UpOyByZXR1cm4gMDsgfQorICAgIHZvaWQgUHV0KENoKSB7IFJBUElESlNP
Tl9BU1NFUlQoZmFsc2UpOyB9CisgICAgdm9pZCBGbHVzaCgpIHsgUkFQSURKU09OX0FTU0VSVChm
YWxzZSk7IH0KKyAgICBzaXplX3QgUHV0RW5kKENoKikgeyBSQVBJREpTT05fQVNTRVJUKGZhbHNl
KTsgcmV0dXJuIDA7IH0KKworICAgIC8vIEZvciBlbmNvZGluZyBkZXRlY3Rpb24gb25seS4KKyAg
ICBjb25zdCBDaCogUGVlazQoKSBjb25zdCB7CisgICAgICAgIHJldHVybiBUZWxsKCkgKyA0IDw9
IHNpemVfID8gc3JjXyA6IDA7CisgICAgfQorCisgICAgY29uc3QgQ2gqIHNyY187ICAgICAvLyE8
IEN1cnJlbnQgcmVhZCBwb3NpdGlvbi4KKyAgICBjb25zdCBDaCogYmVnaW5fOyAgIC8vITwgT3Jp
Z2luYWwgaGVhZCBvZiB0aGUgc3RyaW5nLgorICAgIGNvbnN0IENoKiBlbmRfOyAgICAgLy8hPCBF
bmQgb2Ygc3RyZWFtLgorICAgIHNpemVfdCBzaXplXzsgICAgICAgLy8hPCBTaXplIG9mIHRoZSBz
dHJlYW0uCit9OworCitSQVBJREpTT05fTkFNRVNQQUNFX0VORAorCisjZW5kaWYgLy8gUkFQSURK
U09OX01FTU9SWUJVRkZFUl9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9tc2ludHR5cGVzL2lu
dHR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9tc2ludHR5cGVzL2ludHR5
cGVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9tc2ludHR5cGVzL2ludHR5
cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMTIgQEAKKy8vIElTTyBDOXggIGNvbXBs
aWFudCBpbnR0eXBlcy5oIGZvciBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbworLy8gQmFzZWQgb24g
SVNPL0lFQyA5ODk5OlRDMiBDb21taXR0ZWUgZHJhZnQgKE1heSA2LCAyMDA1KSBXRzE0L04xMTI0
IAorLy8gCisvLyAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTMgQWxleGFuZGVyIENoZW1lcmlzCisv
LyAKKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisvLyAKKy8vICAgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQgbm90aWNlLAorLy8gICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorLy8gCisvLyAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKy8vICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vIAorLy8gICAzLiBOZWl0aGVyIHRoZSBuYW1lIG9m
IHRoZSBwcm9kdWN0IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkKKy8vICAg
ICAgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRo
aXMgc29mdHdhcmUKKy8vICAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisvLyAKKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBg
YEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKKy8vIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisvLyBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTworLy8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7CisvLyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgCisvLyBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUgorLy8gT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRgorLy8gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisvLyAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworI2lmbmRlZiBf
TVNDX1ZFUiAvLyBbCisjZXJyb3IgIlVzZSB0aGlzIGhlYWRlciBvbmx5IHdpdGggTWljcm9zb2Z0
IFZpc3VhbCBDKysgY29tcGlsZXJzISIKKyNlbmRpZiAvLyBfTVNDX1ZFUiBdCisKKyNpZm5kZWYg
X01TQ19JTlRUWVBFU19IXyAvLyBbCisjZGVmaW5lIF9NU0NfSU5UVFlQRVNfSF8KKworI2lmIF9N
U0NfVkVSID4gMTAwMAorI3ByYWdtYSBvbmNlCisjZW5kaWYKKworI2luY2x1ZGUgInN0ZGludC5o
IgorCisvLyBtaWxveWlwOiBWQyBzdXBwb3J0cyBpbnR0eXBlcy5oIHNpbmNlIFZDMjAxMworI2lm
IF9NU0NfVkVSID49IDE4MDAKKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorI2Vsc2UKKworLy8gNy44
IEZvcm1hdCBjb252ZXJzaW9uIG9mIGludGVnZXIgdHlwZXMKKwordHlwZWRlZiBzdHJ1Y3Qgewor
ICAgaW50bWF4X3QgcXVvdDsKKyAgIGludG1heF90IHJlbTsKK30gaW1heGRpdl90OworCisvLyA3
LjguMSBNYWNyb3MgZm9yIGZvcm1hdCBzcGVjaWZpZXJzCisKKyNpZiAhZGVmaW5lZChfX2NwbHVz
cGx1cykgfHwgZGVmaW5lZChfX1NURENfRk9STUFUX01BQ1JPUykgLy8gWyAgIFNlZSBmb290bm90
ZSAxODUgYXQgcGFnZSAxOTgKKworLy8gVGhlIGZwcmludGYgbWFjcm9zIGZvciBzaWduZWQgaW50
ZWdlcnMgYXJlOgorI2RlZmluZSBQUklkOCAgICAgICAiZCIKKyNkZWZpbmUgUFJJaTggICAgICAg
ImkiCisjZGVmaW5lIFBSSWRMRUFTVDggICJkIgorI2RlZmluZSBQUklpTEVBU1Q4ICAiaSIKKyNk
ZWZpbmUgUFJJZEZBU1Q4ICAgImQiCisjZGVmaW5lIFBSSWlGQVNUOCAgICJpIgorCisjZGVmaW5l
IFBSSWQxNiAgICAgICAiaGQiCisjZGVmaW5lIFBSSWkxNiAgICAgICAiaGkiCisjZGVmaW5lIFBS
SWRMRUFTVDE2ICAiaGQiCisjZGVmaW5lIFBSSWlMRUFTVDE2ICAiaGkiCisjZGVmaW5lIFBSSWRG
QVNUMTYgICAiaGQiCisjZGVmaW5lIFBSSWlGQVNUMTYgICAiaGkiCisKKyNkZWZpbmUgUFJJZDMy
ICAgICAgICJJMzJkIgorI2RlZmluZSBQUklpMzIgICAgICAgIkkzMmkiCisjZGVmaW5lIFBSSWRM
RUFTVDMyICAiSTMyZCIKKyNkZWZpbmUgUFJJaUxFQVNUMzIgICJJMzJpIgorI2RlZmluZSBQUklk
RkFTVDMyICAgIkkzMmQiCisjZGVmaW5lIFBSSWlGQVNUMzIgICAiSTMyaSIKKworI2RlZmluZSBQ
UklkNjQgICAgICAgIkk2NGQiCisjZGVmaW5lIFBSSWk2NCAgICAgICAiSTY0aSIKKyNkZWZpbmUg
UFJJZExFQVNUNjQgICJJNjRkIgorI2RlZmluZSBQUklpTEVBU1Q2NCAgIkk2NGkiCisjZGVmaW5l
IFBSSWRGQVNUNjQgICAiSTY0ZCIKKyNkZWZpbmUgUFJJaUZBU1Q2NCAgICJJNjRpIgorCisjZGVm
aW5lIFBSSWRNQVggICAgICJJNjRkIgorI2RlZmluZSBQUklpTUFYICAgICAiSTY0aSIKKworI2Rl
ZmluZSBQUklkUFRSICAgICAiSWQiCisjZGVmaW5lIFBSSWlQVFIgICAgICJJaSIKKworLy8gVGhl
IGZwcmludGYgbWFjcm9zIGZvciB1bnNpZ25lZCBpbnRlZ2VycyBhcmU6CisjZGVmaW5lIFBSSW84
ICAgICAgICJvIgorI2RlZmluZSBQUkl1OCAgICAgICAidSIKKyNkZWZpbmUgUFJJeDggICAgICAg
IngiCisjZGVmaW5lIFBSSVg4ICAgICAgICJYIgorI2RlZmluZSBQUklvTEVBU1Q4ICAibyIKKyNk
ZWZpbmUgUFJJdUxFQVNUOCAgInUiCisjZGVmaW5lIFBSSXhMRUFTVDggICJ4IgorI2RlZmluZSBQ
UklYTEVBU1Q4ICAiWCIKKyNkZWZpbmUgUFJJb0ZBU1Q4ICAgIm8iCisjZGVmaW5lIFBSSXVGQVNU
OCAgICJ1IgorI2RlZmluZSBQUkl4RkFTVDggICAieCIKKyNkZWZpbmUgUFJJWEZBU1Q4ICAgIlgi
CisKKyNkZWZpbmUgUFJJbzE2ICAgICAgICJobyIKKyNkZWZpbmUgUFJJdTE2ICAgICAgICJodSIK
KyNkZWZpbmUgUFJJeDE2ICAgICAgICJoeCIKKyNkZWZpbmUgUFJJWDE2ICAgICAgICJoWCIKKyNk
ZWZpbmUgUFJJb0xFQVNUMTYgICJobyIKKyNkZWZpbmUgUFJJdUxFQVNUMTYgICJodSIKKyNkZWZp
bmUgUFJJeExFQVNUMTYgICJoeCIKKyNkZWZpbmUgUFJJWExFQVNUMTYgICJoWCIKKyNkZWZpbmUg
UFJJb0ZBU1QxNiAgICJobyIKKyNkZWZpbmUgUFJJdUZBU1QxNiAgICJodSIKKyNkZWZpbmUgUFJJ
eEZBU1QxNiAgICJoeCIKKyNkZWZpbmUgUFJJWEZBU1QxNiAgICJoWCIKKworI2RlZmluZSBQUklv
MzIgICAgICAgIkkzMm8iCisjZGVmaW5lIFBSSXUzMiAgICAgICAiSTMydSIKKyNkZWZpbmUgUFJJ
eDMyICAgICAgICJJMzJ4IgorI2RlZmluZSBQUklYMzIgICAgICAgIkkzMlgiCisjZGVmaW5lIFBS
SW9MRUFTVDMyICAiSTMybyIKKyNkZWZpbmUgUFJJdUxFQVNUMzIgICJJMzJ1IgorI2RlZmluZSBQ
Ukl4TEVBU1QzMiAgIkkzMngiCisjZGVmaW5lIFBSSVhMRUFTVDMyICAiSTMyWCIKKyNkZWZpbmUg
UFJJb0ZBU1QzMiAgICJJMzJvIgorI2RlZmluZSBQUkl1RkFTVDMyICAgIkkzMnUiCisjZGVmaW5l
IFBSSXhGQVNUMzIgICAiSTMyeCIKKyNkZWZpbmUgUFJJWEZBU1QzMiAgICJJMzJYIgorCisjZGVm
aW5lIFBSSW82NCAgICAgICAiSTY0byIKKyNkZWZpbmUgUFJJdTY0ICAgICAgICJJNjR1IgorI2Rl
ZmluZSBQUkl4NjQgICAgICAgIkk2NHgiCisjZGVmaW5lIFBSSVg2NCAgICAgICAiSTY0WCIKKyNk
ZWZpbmUgUFJJb0xFQVNUNjQgICJJNjRvIgorI2RlZmluZSBQUkl1TEVBU1Q2NCAgIkk2NHUiCisj
ZGVmaW5lIFBSSXhMRUFTVDY0ICAiSTY0eCIKKyNkZWZpbmUgUFJJWExFQVNUNjQgICJJNjRYIgor
I2RlZmluZSBQUklvRkFTVDY0ICAgIkk2NG8iCisjZGVmaW5lIFBSSXVGQVNUNjQgICAiSTY0dSIK
KyNkZWZpbmUgUFJJeEZBU1Q2NCAgICJJNjR4IgorI2RlZmluZSBQUklYRkFTVDY0ICAgIkk2NFgi
CisKKyNkZWZpbmUgUFJJb01BWCAgICAgIkk2NG8iCisjZGVmaW5lIFBSSXVNQVggICAgICJJNjR1
IgorI2RlZmluZSBQUkl4TUFYICAgICAiSTY0eCIKKyNkZWZpbmUgUFJJWE1BWCAgICAgIkk2NFgi
CisKKyNkZWZpbmUgUFJJb1BUUiAgICAgIklvIgorI2RlZmluZSBQUkl1UFRSICAgICAiSXUiCisj
ZGVmaW5lIFBSSXhQVFIgICAgICJJeCIKKyNkZWZpbmUgUFJJWFBUUiAgICAgIklYIgorCisvLyBU
aGUgZnNjYW5mIG1hY3JvcyBmb3Igc2lnbmVkIGludGVnZXJzIGFyZToKKyNkZWZpbmUgU0NOZDgg
ICAgICAgImQiCisjZGVmaW5lIFNDTmk4ICAgICAgICJpIgorI2RlZmluZSBTQ05kTEVBU1Q4ICAi
ZCIKKyNkZWZpbmUgU0NOaUxFQVNUOCAgImkiCisjZGVmaW5lIFNDTmRGQVNUOCAgICJkIgorI2Rl
ZmluZSBTQ05pRkFTVDggICAiaSIKKworI2RlZmluZSBTQ05kMTYgICAgICAgImhkIgorI2RlZmlu
ZSBTQ05pMTYgICAgICAgImhpIgorI2RlZmluZSBTQ05kTEVBU1QxNiAgImhkIgorI2RlZmluZSBT
Q05pTEVBU1QxNiAgImhpIgorI2RlZmluZSBTQ05kRkFTVDE2ICAgImhkIgorI2RlZmluZSBTQ05p
RkFTVDE2ICAgImhpIgorCisjZGVmaW5lIFNDTmQzMiAgICAgICAibGQiCisjZGVmaW5lIFNDTmkz
MiAgICAgICAibGkiCisjZGVmaW5lIFNDTmRMRUFTVDMyICAibGQiCisjZGVmaW5lIFNDTmlMRUFT
VDMyICAibGkiCisjZGVmaW5lIFNDTmRGQVNUMzIgICAibGQiCisjZGVmaW5lIFNDTmlGQVNUMzIg
ICAibGkiCisKKyNkZWZpbmUgU0NOZDY0ICAgICAgICJJNjRkIgorI2RlZmluZSBTQ05pNjQgICAg
ICAgIkk2NGkiCisjZGVmaW5lIFNDTmRMRUFTVDY0ICAiSTY0ZCIKKyNkZWZpbmUgU0NOaUxFQVNU
NjQgICJJNjRpIgorI2RlZmluZSBTQ05kRkFTVDY0ICAgIkk2NGQiCisjZGVmaW5lIFNDTmlGQVNU
NjQgICAiSTY0aSIKKworI2RlZmluZSBTQ05kTUFYICAgICAiSTY0ZCIKKyNkZWZpbmUgU0NOaU1B
WCAgICAgIkk2NGkiCisKKyNpZmRlZiBfV0lONjQgLy8gWworIyAgZGVmaW5lIFNDTmRQVFIgICAg
ICJJNjRkIgorIyAgZGVmaW5lIFNDTmlQVFIgICAgICJJNjRpIgorI2Vsc2UgIC8vIF9XSU42NCBd
WworIyAgZGVmaW5lIFNDTmRQVFIgICAgICJsZCIKKyMgIGRlZmluZSBTQ05pUFRSICAgICAibGki
CisjZW5kaWYgIC8vIF9XSU42NCBdCisKKy8vIFRoZSBmc2NhbmYgbWFjcm9zIGZvciB1bnNpZ25l
ZCBpbnRlZ2VycyBhcmU6CisjZGVmaW5lIFNDTm84ICAgICAgICJvIgorI2RlZmluZSBTQ051OCAg
ICAgICAidSIKKyNkZWZpbmUgU0NOeDggICAgICAgIngiCisjZGVmaW5lIFNDTlg4ICAgICAgICJY
IgorI2RlZmluZSBTQ05vTEVBU1Q4ICAibyIKKyNkZWZpbmUgU0NOdUxFQVNUOCAgInUiCisjZGVm
aW5lIFNDTnhMRUFTVDggICJ4IgorI2RlZmluZSBTQ05YTEVBU1Q4ICAiWCIKKyNkZWZpbmUgU0NO
b0ZBU1Q4ICAgIm8iCisjZGVmaW5lIFNDTnVGQVNUOCAgICJ1IgorI2RlZmluZSBTQ054RkFTVDgg
ICAieCIKKyNkZWZpbmUgU0NOWEZBU1Q4ICAgIlgiCisKKyNkZWZpbmUgU0NObzE2ICAgICAgICJo
byIKKyNkZWZpbmUgU0NOdTE2ICAgICAgICJodSIKKyNkZWZpbmUgU0NOeDE2ICAgICAgICJoeCIK
KyNkZWZpbmUgU0NOWDE2ICAgICAgICJoWCIKKyNkZWZpbmUgU0NOb0xFQVNUMTYgICJobyIKKyNk
ZWZpbmUgU0NOdUxFQVNUMTYgICJodSIKKyNkZWZpbmUgU0NOeExFQVNUMTYgICJoeCIKKyNkZWZp
bmUgU0NOWExFQVNUMTYgICJoWCIKKyNkZWZpbmUgU0NOb0ZBU1QxNiAgICJobyIKKyNkZWZpbmUg
U0NOdUZBU1QxNiAgICJodSIKKyNkZWZpbmUgU0NOeEZBU1QxNiAgICJoeCIKKyNkZWZpbmUgU0NO
WEZBU1QxNiAgICJoWCIKKworI2RlZmluZSBTQ05vMzIgICAgICAgImxvIgorI2RlZmluZSBTQ051
MzIgICAgICAgImx1IgorI2RlZmluZSBTQ054MzIgICAgICAgImx4IgorI2RlZmluZSBTQ05YMzIg
ICAgICAgImxYIgorI2RlZmluZSBTQ05vTEVBU1QzMiAgImxvIgorI2RlZmluZSBTQ051TEVBU1Qz
MiAgImx1IgorI2RlZmluZSBTQ054TEVBU1QzMiAgImx4IgorI2RlZmluZSBTQ05YTEVBU1QzMiAg
ImxYIgorI2RlZmluZSBTQ05vRkFTVDMyICAgImxvIgorI2RlZmluZSBTQ051RkFTVDMyICAgImx1
IgorI2RlZmluZSBTQ054RkFTVDMyICAgImx4IgorI2RlZmluZSBTQ05YRkFTVDMyICAgImxYIgor
CisjZGVmaW5lIFNDTm82NCAgICAgICAiSTY0byIKKyNkZWZpbmUgU0NOdTY0ICAgICAgICJJNjR1
IgorI2RlZmluZSBTQ054NjQgICAgICAgIkk2NHgiCisjZGVmaW5lIFNDTlg2NCAgICAgICAiSTY0
WCIKKyNkZWZpbmUgU0NOb0xFQVNUNjQgICJJNjRvIgorI2RlZmluZSBTQ051TEVBU1Q2NCAgIkk2
NHUiCisjZGVmaW5lIFNDTnhMRUFTVDY0ICAiSTY0eCIKKyNkZWZpbmUgU0NOWExFQVNUNjQgICJJ
NjRYIgorI2RlZmluZSBTQ05vRkFTVDY0ICAgIkk2NG8iCisjZGVmaW5lIFNDTnVGQVNUNjQgICAi
STY0dSIKKyNkZWZpbmUgU0NOeEZBU1Q2NCAgICJJNjR4IgorI2RlZmluZSBTQ05YRkFTVDY0ICAg
Ikk2NFgiCisKKyNkZWZpbmUgU0NOb01BWCAgICAgIkk2NG8iCisjZGVmaW5lIFNDTnVNQVggICAg
ICJJNjR1IgorI2RlZmluZSBTQ054TUFYICAgICAiSTY0eCIKKyNkZWZpbmUgU0NOWE1BWCAgICAg
Ikk2NFgiCisKKyNpZmRlZiBfV0lONjQgLy8gWworIyAgZGVmaW5lIFNDTm9QVFIgICAgICJJNjRv
IgorIyAgZGVmaW5lIFNDTnVQVFIgICAgICJJNjR1IgorIyAgZGVmaW5lIFNDTnhQVFIgICAgICJJ
NjR4IgorIyAgZGVmaW5lIFNDTlhQVFIgICAgICJJNjRYIgorI2Vsc2UgIC8vIF9XSU42NCBdWwor
IyAgZGVmaW5lIFNDTm9QVFIgICAgICJsbyIKKyMgIGRlZmluZSBTQ051UFRSICAgICAibHUiCisj
ICBkZWZpbmUgU0NOeFBUUiAgICAgImx4IgorIyAgZGVmaW5lIFNDTlhQVFIgICAgICJsWCIKKyNl
bmRpZiAgLy8gX1dJTjY0IF0KKworI2VuZGlmIC8vIF9fU1REQ19GT1JNQVRfTUFDUk9TIF0KKwor
Ly8gNy44LjIgRnVuY3Rpb25zIGZvciBncmVhdGVzdC13aWR0aCBpbnRlZ2VyIHR5cGVzCisKKy8v
IDcuOC4yLjEgVGhlIGltYXhhYnMgZnVuY3Rpb24KKyNkZWZpbmUgaW1heGFicyBfYWJzNjQKKwor
Ly8gNy44LjIuMiBUaGUgaW1heGRpdiBmdW5jdGlvbgorCisvLyBUaGlzIGlzIG1vZGlmaWVkIHZl
cnNpb24gb2YgZGl2KCkgZnVuY3Rpb24gZnJvbSBNaWNyb3NvZnQncyBkaXYuYyBmb3VuZAorLy8g
aW4gJU1TVkMuTkVUJVxjcnRcc3JjXGRpdi5jCisjaWZkZWYgU1RBVElDX0lNQVhESVYgLy8gWwor
c3RhdGljCisjZWxzZSAvLyBTVEFUSUNfSU1BWERJViBdWworX2lubGluZQorI2VuZGlmIC8vIFNU
QVRJQ19JTUFYRElWIF0KK2ltYXhkaXZfdCBfX2NkZWNsIGltYXhkaXYoaW50bWF4X3QgbnVtZXIs
IGludG1heF90IGRlbm9tKQoreworICAgaW1heGRpdl90IHJlc3VsdDsKKworICAgcmVzdWx0LnF1
b3QgPSBudW1lciAvIGRlbm9tOworICAgcmVzdWx0LnJlbSA9IG51bWVyICUgZGVub207CisKKyAg
IGlmIChudW1lciA8IDAgJiYgcmVzdWx0LnJlbSA+IDApIHsKKyAgICAgIC8vIGRpZCBkaXZpc2lv
biB3cm9uZzsgbXVzdCBmaXggdXAKKyAgICAgICsrcmVzdWx0LnF1b3Q7CisgICAgICByZXN1bHQu
cmVtIC09IGRlbm9tOworICAgfQorCisgICByZXR1cm4gcmVzdWx0OworfQorCisvLyA3LjguMi4z
IFRoZSBzdHJ0b2ltYXggYW5kIHN0cnRvdW1heCBmdW5jdGlvbnMKKyNkZWZpbmUgc3RydG9pbWF4
IF9zdHJ0b2k2NAorI2RlZmluZSBzdHJ0b3VtYXggX3N0cnRvdWk2NAorCisvLyA3LjguMi40IFRo
ZSB3Y3N0b2ltYXggYW5kIHdjc3RvdW1heCBmdW5jdGlvbnMKKyNkZWZpbmUgd2NzdG9pbWF4IF93
Y3N0b2k2NAorI2RlZmluZSB3Y3N0b3VtYXggX3djc3RvdWk2NAorCisjZW5kaWYgLy8gX01TQ19W
RVIgPj0gMTgwMAorCisjZW5kaWYgLy8gX01TQ19JTlRUWVBFU19IXyBdCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUv
cmFwaWRqc29uL21zaW50dHlwZXMvc3RkaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlk
anNvbi9tc2ludHR5cGVzL3N0ZGludC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpz
b24vbXNpbnR0eXBlcy9zdGRpbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5NiBAQAor
Ly8gSVNPIEM5eCAgY29tcGxpYW50IHN0ZGludC5oIGZvciBNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
bworLy8gQmFzZWQgb24gSVNPL0lFQyA5ODk5OlRDMiBDb21taXR0ZWUgZHJhZnQgKE1heSA2LCAy
MDA1KSBXRzE0L04xMTI0IAorLy8gCisvLyAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTMgQWxleGFu
ZGVyIENoZW1lcmlzCisvLyAKKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Cisv
LyAKKy8vICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorLy8gICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gCisvLyAgIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisv
LyAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vIAorLy8gICAzLiBOZWl0
aGVyIHRoZSBuYW1lIG9mIHRoZSBwcm9kdWN0IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkKKy8vICAgICAgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKy8vICAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisvLyAKKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKKy8vIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GCisvLyBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTworLy8gRVZFTlQgU0hBTEwgVEhFIEFVVEhP
UiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7CisvLyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgCisvLyBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUgorLy8gT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRgorLy8gQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLyAKKy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KKworI2lmbmRlZiBfTVNDX1ZFUiAvLyBbCisjZXJyb3IgIlVzZSB0aGlzIGhlYWRlciBvbmx5
IHdpdGggTWljcm9zb2Z0IFZpc3VhbCBDKysgY29tcGlsZXJzISIKKyNlbmRpZiAvLyBfTVNDX1ZF
UiBdCisKKyNpZm5kZWYgX01TQ19TVERJTlRfSF8gLy8gWworI2RlZmluZSBfTVNDX1NURElOVF9I
XworCisjaWYgX01TQ19WRVIgPiAxMDAwCisjcHJhZ21hIG9uY2UKKyNlbmRpZgorCisvLyBtaWxv
eWlwOiBPcmlnaW5hbGx5IFZpc3VhbCBTdHVkaW8gMjAxMCB1c2VzIGl0cyBvd24gc3RkaW50Lmgu
IEhvd2V2ZXIgaXQgZ2VuZXJhdGVzIHdhcm5pbmcgd2l0aCBJTlQ2NF9DKCksIHNvIGNoYW5nZSB0
byB1c2UgdGhpcyBmaWxlIGZvciB2czIwMTAuCisjaWYgX01TQ19WRVIgPj0gMTYwMCAvLyBbCisj
aW5jbHVkZSA8c3RkaW50Lmg+CisKKyNpZiAhZGVmaW5lZChfX2NwbHVzcGx1cykgfHwgZGVmaW5l
ZChfX1NURENfQ09OU1RBTlRfTUFDUk9TKSAvLyBbICAgU2VlIGZvb3Rub3RlIDIyNCBhdCBwYWdl
IDI2MAorCisjdW5kZWYgSU5UOF9DCisjdW5kZWYgSU5UMTZfQworI3VuZGVmIElOVDMyX0MKKyN1
bmRlZiBJTlQ2NF9DCisjdW5kZWYgVUlOVDhfQworI3VuZGVmIFVJTlQxNl9DCisjdW5kZWYgVUlO
VDMyX0MKKyN1bmRlZiBVSU5UNjRfQworCisvLyA3LjE4LjQuMSBNYWNyb3MgZm9yIG1pbmltdW0t
d2lkdGggaW50ZWdlciBjb25zdGFudHMKKworI2RlZmluZSBJTlQ4X0ModmFsKSAgdmFsIyNpOAor
I2RlZmluZSBJTlQxNl9DKHZhbCkgdmFsIyNpMTYKKyNkZWZpbmUgSU5UMzJfQyh2YWwpIHZhbCMj
aTMyCisjZGVmaW5lIElOVDY0X0ModmFsKSB2YWwjI2k2NAorCisjZGVmaW5lIFVJTlQ4X0ModmFs
KSAgdmFsIyN1aTgKKyNkZWZpbmUgVUlOVDE2X0ModmFsKSB2YWwjI3VpMTYKKyNkZWZpbmUgVUlO
VDMyX0ModmFsKSB2YWwjI3VpMzIKKyNkZWZpbmUgVUlOVDY0X0ModmFsKSB2YWwjI3VpNjQKKwor
Ly8gNy4xOC40LjIgTWFjcm9zIGZvciBncmVhdGVzdC13aWR0aCBpbnRlZ2VyIGNvbnN0YW50cwor
Ly8gVGhlc2UgI2lmbmRlZidzIGFyZSBuZWVkZWQgdG8gcHJldmVudCBjb2xsaXNpb25zIHdpdGgg
PGJvb3N0L2NzdGRpbnQuaHBwPi4KKy8vIENoZWNrIG91dCBJc3N1ZSA5IGZvciB0aGUgZGV0YWls
cy4KKyNpZm5kZWYgSU5UTUFYX0MgLy8gICBbCisjICBkZWZpbmUgSU5UTUFYX0MgICBJTlQ2NF9D
CisjZW5kaWYgLy8gSU5UTUFYX0MgICAgXQorI2lmbmRlZiBVSU5UTUFYX0MgLy8gIFsKKyMgIGRl
ZmluZSBVSU5UTUFYX0MgIFVJTlQ2NF9DCisjZW5kaWYgLy8gVUlOVE1BWF9DICAgXQorCisjZW5k
aWYgLy8gX19TVERDX0NPTlNUQU5UX01BQ1JPUyBdCisKKyNlbHNlIC8vIF0gX01TQ19WRVIgPj0g
MTcwMCBbCisKKyNpbmNsdWRlIDxsaW1pdHMuaD4KKworLy8gRm9yIFZpc3VhbCBTdHVkaW8gNiBp
biBDKysgbW9kZSBhbmQgZm9yIG1hbnkgVmlzdWFsIFN0dWRpbyB2ZXJzaW9ucyB3aGVuCisvLyBj
b21waWxpbmcgZm9yIEFSTSB3ZSBzaG91bGQgd3JhcCA8d2NoYXIuaD4gaW5jbHVkZSB3aXRoICdl
eHRlcm4gIkMrKyIge30nCisvLyBvciBjb21waWxlciBnaXZlIG1hbnkgZXJyb3JzIGxpa2UgdGhp
czoKKy8vICAgZXJyb3IgQzI3MzM6IHNlY29uZCBDIGxpbmthZ2Ugb2Ygb3ZlcmxvYWRlZCBmdW5j
dGlvbiAnd21lbWNocicgbm90IGFsbG93ZWQKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJD
IiB7CisjZW5kaWYKKyMgIGluY2x1ZGUgPHdjaGFyLmg+CisjaWZkZWYgX19jcGx1c3BsdXMKK30K
KyNlbmRpZgorCisvLyBEZWZpbmUgX1c2NCBtYWNyb3MgdG8gbWFyayB0eXBlcyBjaGFuZ2luZyB0
aGVpciBzaXplLCBsaWtlIGludHB0cl90LgorI2lmbmRlZiBfVzY0CisjICBpZiAhZGVmaW5lZChf
X21pZGwpICYmIChkZWZpbmVkKF9YODZfKSB8fCBkZWZpbmVkKF9NX0lYODYpKSAmJiBfTVNDX1ZF
UiA+PSAxMzAwCisjICAgICBkZWZpbmUgX1c2NCBfX3c2NAorIyAgZWxzZQorIyAgICAgZGVmaW5l
IF9XNjQKKyMgIGVuZGlmCisjZW5kaWYKKworCisvLyA3LjE4LjEgSW50ZWdlciB0eXBlcworCisv
LyA3LjE4LjEuMSBFeGFjdC13aWR0aCBpbnRlZ2VyIHR5cGVzCisKKy8vIFZpc3VhbCBTdHVkaW8g
NiBhbmQgRW1iZWRkZWQgVmlzdWFsIEMrKyA0IGRvZXNuJ3QKKy8vIHJlYWxpemUgdGhhdCwgZS5n
LiBjaGFyIGhhcyB0aGUgc2FtZSBzaXplIGFzIF9faW50OAorLy8gc28gd2UgZ2l2ZSB1cCBvbiBf
X2ludFggZm9yIHRoZW0uCisjaWYgKF9NU0NfVkVSIDwgMTMwMCkKKyAgIHR5cGVkZWYgc2lnbmVk
IGNoYXIgICAgICAgaW50OF90OworICAgdHlwZWRlZiBzaWduZWQgc2hvcnQgICAgICBpbnQxNl90
OworICAgdHlwZWRlZiBzaWduZWQgaW50ICAgICAgICBpbnQzMl90OworICAgdHlwZWRlZiB1bnNp
Z25lZCBjaGFyICAgICB1aW50OF90OworICAgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCAgICB1aW50
MTZfdDsKKyAgIHR5cGVkZWYgdW5zaWduZWQgaW50ICAgICAgdWludDMyX3Q7CisjZWxzZQorICAg
dHlwZWRlZiBzaWduZWQgX19pbnQ4ICAgICBpbnQ4X3Q7CisgICB0eXBlZGVmIHNpZ25lZCBfX2lu
dDE2ICAgIGludDE2X3Q7CisgICB0eXBlZGVmIHNpZ25lZCBfX2ludDMyICAgIGludDMyX3Q7Cisg
ICB0eXBlZGVmIHVuc2lnbmVkIF9faW50OCAgIHVpbnQ4X3Q7CisgICB0eXBlZGVmIHVuc2lnbmVk
IF9faW50MTYgIHVpbnQxNl90OworICAgdHlwZWRlZiB1bnNpZ25lZCBfX2ludDMyICB1aW50MzJf
dDsKKyNlbmRpZgordHlwZWRlZiBzaWduZWQgX19pbnQ2NCAgICAgICBpbnQ2NF90OwordHlwZWRl
ZiB1bnNpZ25lZCBfX2ludDY0ICAgICB1aW50NjRfdDsKKworCisvLyA3LjE4LjEuMiBNaW5pbXVt
LXdpZHRoIGludGVnZXIgdHlwZXMKK3R5cGVkZWYgaW50OF90ICAgIGludF9sZWFzdDhfdDsKK3R5
cGVkZWYgaW50MTZfdCAgIGludF9sZWFzdDE2X3Q7Cit0eXBlZGVmIGludDMyX3QgICBpbnRfbGVh
c3QzMl90OwordHlwZWRlZiBpbnQ2NF90ICAgaW50X2xlYXN0NjRfdDsKK3R5cGVkZWYgdWludDhf
dCAgIHVpbnRfbGVhc3Q4X3Q7Cit0eXBlZGVmIHVpbnQxNl90ICB1aW50X2xlYXN0MTZfdDsKK3R5
cGVkZWYgdWludDMyX3QgIHVpbnRfbGVhc3QzMl90OwordHlwZWRlZiB1aW50NjRfdCAgdWludF9s
ZWFzdDY0X3Q7CisKKy8vIDcuMTguMS4zIEZhc3Rlc3QgbWluaW11bS13aWR0aCBpbnRlZ2VyIHR5
cGVzCit0eXBlZGVmIGludDhfdCAgICBpbnRfZmFzdDhfdDsKK3R5cGVkZWYgaW50MTZfdCAgIGlu
dF9mYXN0MTZfdDsKK3R5cGVkZWYgaW50MzJfdCAgIGludF9mYXN0MzJfdDsKK3R5cGVkZWYgaW50
NjRfdCAgIGludF9mYXN0NjRfdDsKK3R5cGVkZWYgdWludDhfdCAgIHVpbnRfZmFzdDhfdDsKK3R5
cGVkZWYgdWludDE2X3QgIHVpbnRfZmFzdDE2X3Q7Cit0eXBlZGVmIHVpbnQzMl90ICB1aW50X2Zh
c3QzMl90OwordHlwZWRlZiB1aW50NjRfdCAgdWludF9mYXN0NjRfdDsKKworLy8gNy4xOC4xLjQg
SW50ZWdlciB0eXBlcyBjYXBhYmxlIG9mIGhvbGRpbmcgb2JqZWN0IHBvaW50ZXJzCisjaWZkZWYg
X1dJTjY0IC8vIFsKKyAgIHR5cGVkZWYgc2lnbmVkIF9faW50NjQgICAgaW50cHRyX3Q7CisgICB0
eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgIHVpbnRwdHJfdDsKKyNlbHNlIC8vIF9XSU42NCBdWwor
ICAgdHlwZWRlZiBfVzY0IHNpZ25lZCBpbnQgICBpbnRwdHJfdDsKKyAgIHR5cGVkZWYgX1c2NCB1
bnNpZ25lZCBpbnQgdWludHB0cl90OworI2VuZGlmIC8vIF9XSU42NCBdCisKKy8vIDcuMTguMS41
IEdyZWF0ZXN0LXdpZHRoIGludGVnZXIgdHlwZXMKK3R5cGVkZWYgaW50NjRfdCAgIGludG1heF90
OwordHlwZWRlZiB1aW50NjRfdCAgdWludG1heF90OworCisKKy8vIDcuMTguMiBMaW1pdHMgb2Yg
c3BlY2lmaWVkLXdpZHRoIGludGVnZXIgdHlwZXMKKworI2lmICFkZWZpbmVkKF9fY3BsdXNwbHVz
KSB8fCBkZWZpbmVkKF9fU1REQ19MSU1JVF9NQUNST1MpIC8vIFsgICBTZWUgZm9vdG5vdGUgMjIw
IGF0IHBhZ2UgMjU3IGFuZCBmb290bm90ZSAyMjEgYXQgcGFnZSAyNTkKKworLy8gNy4xOC4yLjEg
TGltaXRzIG9mIGV4YWN0LXdpZHRoIGludGVnZXIgdHlwZXMKKyNkZWZpbmUgSU5UOF9NSU4gICAg
ICgoaW50OF90KV9JOF9NSU4pCisjZGVmaW5lIElOVDhfTUFYICAgICBfSThfTUFYCisjZGVmaW5l
IElOVDE2X01JTiAgICAoKGludDE2X3QpX0kxNl9NSU4pCisjZGVmaW5lIElOVDE2X01BWCAgICBf
STE2X01BWAorI2RlZmluZSBJTlQzMl9NSU4gICAgKChpbnQzMl90KV9JMzJfTUlOKQorI2RlZmlu
ZSBJTlQzMl9NQVggICAgX0kzMl9NQVgKKyNkZWZpbmUgSU5UNjRfTUlOICAgICgoaW50NjRfdClf
STY0X01JTikKKyNkZWZpbmUgSU5UNjRfTUFYICAgIF9JNjRfTUFYCisjZGVmaW5lIFVJTlQ4X01B
WCAgICBfVUk4X01BWAorI2RlZmluZSBVSU5UMTZfTUFYICAgX1VJMTZfTUFYCisjZGVmaW5lIFVJ
TlQzMl9NQVggICBfVUkzMl9NQVgKKyNkZWZpbmUgVUlOVDY0X01BWCAgIF9VSTY0X01BWAorCisv
LyA3LjE4LjIuMiBMaW1pdHMgb2YgbWluaW11bS13aWR0aCBpbnRlZ2VyIHR5cGVzCisjZGVmaW5l
IElOVF9MRUFTVDhfTUlOICAgIElOVDhfTUlOCisjZGVmaW5lIElOVF9MRUFTVDhfTUFYICAgIElO
VDhfTUFYCisjZGVmaW5lIElOVF9MRUFTVDE2X01JTiAgIElOVDE2X01JTgorI2RlZmluZSBJTlRf
TEVBU1QxNl9NQVggICBJTlQxNl9NQVgKKyNkZWZpbmUgSU5UX0xFQVNUMzJfTUlOICAgSU5UMzJf
TUlOCisjZGVmaW5lIElOVF9MRUFTVDMyX01BWCAgIElOVDMyX01BWAorI2RlZmluZSBJTlRfTEVB
U1Q2NF9NSU4gICBJTlQ2NF9NSU4KKyNkZWZpbmUgSU5UX0xFQVNUNjRfTUFYICAgSU5UNjRfTUFY
CisjZGVmaW5lIFVJTlRfTEVBU1Q4X01BWCAgIFVJTlQ4X01BWAorI2RlZmluZSBVSU5UX0xFQVNU
MTZfTUFYICBVSU5UMTZfTUFYCisjZGVmaW5lIFVJTlRfTEVBU1QzMl9NQVggIFVJTlQzMl9NQVgK
KyNkZWZpbmUgVUlOVF9MRUFTVDY0X01BWCAgVUlOVDY0X01BWAorCisvLyA3LjE4LjIuMyBMaW1p
dHMgb2YgZmFzdGVzdCBtaW5pbXVtLXdpZHRoIGludGVnZXIgdHlwZXMKKyNkZWZpbmUgSU5UX0ZB
U1Q4X01JTiAgICBJTlQ4X01JTgorI2RlZmluZSBJTlRfRkFTVDhfTUFYICAgIElOVDhfTUFYCisj
ZGVmaW5lIElOVF9GQVNUMTZfTUlOICAgSU5UMTZfTUlOCisjZGVmaW5lIElOVF9GQVNUMTZfTUFY
ICAgSU5UMTZfTUFYCisjZGVmaW5lIElOVF9GQVNUMzJfTUlOICAgSU5UMzJfTUlOCisjZGVmaW5l
IElOVF9GQVNUMzJfTUFYICAgSU5UMzJfTUFYCisjZGVmaW5lIElOVF9GQVNUNjRfTUlOICAgSU5U
NjRfTUlOCisjZGVmaW5lIElOVF9GQVNUNjRfTUFYICAgSU5UNjRfTUFYCisjZGVmaW5lIFVJTlRf
RkFTVDhfTUFYICAgVUlOVDhfTUFYCisjZGVmaW5lIFVJTlRfRkFTVDE2X01BWCAgVUlOVDE2X01B
WAorI2RlZmluZSBVSU5UX0ZBU1QzMl9NQVggIFVJTlQzMl9NQVgKKyNkZWZpbmUgVUlOVF9GQVNU
NjRfTUFYICBVSU5UNjRfTUFYCisKKy8vIDcuMTguMi40IExpbWl0cyBvZiBpbnRlZ2VyIHR5cGVz
IGNhcGFibGUgb2YgaG9sZGluZyBvYmplY3QgcG9pbnRlcnMKKyNpZmRlZiBfV0lONjQgLy8gWwor
IyAgZGVmaW5lIElOVFBUUl9NSU4gICBJTlQ2NF9NSU4KKyMgIGRlZmluZSBJTlRQVFJfTUFYICAg
SU5UNjRfTUFYCisjICBkZWZpbmUgVUlOVFBUUl9NQVggIFVJTlQ2NF9NQVgKKyNlbHNlIC8vIF9X
SU42NCBdWworIyAgZGVmaW5lIElOVFBUUl9NSU4gICBJTlQzMl9NSU4KKyMgIGRlZmluZSBJTlRQ
VFJfTUFYICAgSU5UMzJfTUFYCisjICBkZWZpbmUgVUlOVFBUUl9NQVggIFVJTlQzMl9NQVgKKyNl
bmRpZiAvLyBfV0lONjQgXQorCisvLyA3LjE4LjIuNSBMaW1pdHMgb2YgZ3JlYXRlc3Qtd2lkdGgg
aW50ZWdlciB0eXBlcworI2RlZmluZSBJTlRNQVhfTUlOICAgSU5UNjRfTUlOCisjZGVmaW5lIElO
VE1BWF9NQVggICBJTlQ2NF9NQVgKKyNkZWZpbmUgVUlOVE1BWF9NQVggIFVJTlQ2NF9NQVgKKwor
Ly8gNy4xOC4zIExpbWl0cyBvZiBvdGhlciBpbnRlZ2VyIHR5cGVzCisKKyNpZmRlZiBfV0lONjQg
Ly8gWworIyAgZGVmaW5lIFBUUkRJRkZfTUlOICBfSTY0X01JTgorIyAgZGVmaW5lIFBUUkRJRkZf
TUFYICBfSTY0X01BWAorI2Vsc2UgIC8vIF9XSU42NCBdWworIyAgZGVmaW5lIFBUUkRJRkZfTUlO
ICBfSTMyX01JTgorIyAgZGVmaW5lIFBUUkRJRkZfTUFYICBfSTMyX01BWAorI2VuZGlmICAvLyBf
V0lONjQgXQorCisjZGVmaW5lIFNJR19BVE9NSUNfTUlOICBJTlRfTUlOCisjZGVmaW5lIFNJR19B
VE9NSUNfTUFYICBJTlRfTUFYCisKKyNpZm5kZWYgU0laRV9NQVggLy8gWworIyAgaWZkZWYgX1dJ
TjY0IC8vIFsKKyMgICAgIGRlZmluZSBTSVpFX01BWCAgX1VJNjRfTUFYCisjICBlbHNlIC8vIF9X
SU42NCBdWworIyAgICAgZGVmaW5lIFNJWkVfTUFYICBfVUkzMl9NQVgKKyMgIGVuZGlmIC8vIF9X
SU42NCBdCisjZW5kaWYgLy8gU0laRV9NQVggXQorCisvLyBXQ0hBUl9NSU4gYW5kIFdDSEFSX01B
WCBhcmUgYWxzbyBkZWZpbmVkIGluIDx3Y2hhci5oPgorI2lmbmRlZiBXQ0hBUl9NSU4gLy8gWwor
IyAgZGVmaW5lIFdDSEFSX01JTiAgMAorI2VuZGlmICAvLyBXQ0hBUl9NSU4gXQorI2lmbmRlZiBX
Q0hBUl9NQVggLy8gWworIyAgZGVmaW5lIFdDSEFSX01BWCAgX1VJMTZfTUFYCisjZW5kaWYgIC8v
IFdDSEFSX01BWCBdCisKKyNkZWZpbmUgV0lOVF9NSU4gIDAKKyNkZWZpbmUgV0lOVF9NQVggIF9V
STE2X01BWAorCisjZW5kaWYgLy8gX19TVERDX0xJTUlUX01BQ1JPUyBdCisKKworLy8gNy4xOC40
IExpbWl0cyBvZiBvdGhlciBpbnRlZ2VyIHR5cGVzCisKKyNpZiAhZGVmaW5lZChfX2NwbHVzcGx1
cykgfHwgZGVmaW5lZChfX1NURENfQ09OU1RBTlRfTUFDUk9TKSAvLyBbICAgU2VlIGZvb3Rub3Rl
IDIyNCBhdCBwYWdlIDI2MAorCisvLyA3LjE4LjQuMSBNYWNyb3MgZm9yIG1pbmltdW0td2lkdGgg
aW50ZWdlciBjb25zdGFudHMKKworI2RlZmluZSBJTlQ4X0ModmFsKSAgdmFsIyNpOAorI2RlZmlu
ZSBJTlQxNl9DKHZhbCkgdmFsIyNpMTYKKyNkZWZpbmUgSU5UMzJfQyh2YWwpIHZhbCMjaTMyCisj
ZGVmaW5lIElOVDY0X0ModmFsKSB2YWwjI2k2NAorCisjZGVmaW5lIFVJTlQ4X0ModmFsKSAgdmFs
IyN1aTgKKyNkZWZpbmUgVUlOVDE2X0ModmFsKSB2YWwjI3VpMTYKKyNkZWZpbmUgVUlOVDMyX0Mo
dmFsKSB2YWwjI3VpMzIKKyNkZWZpbmUgVUlOVDY0X0ModmFsKSB2YWwjI3VpNjQKKworLy8gNy4x
OC40LjIgTWFjcm9zIGZvciBncmVhdGVzdC13aWR0aCBpbnRlZ2VyIGNvbnN0YW50cworLy8gVGhl
c2UgI2lmbmRlZidzIGFyZSBuZWVkZWQgdG8gcHJldmVudCBjb2xsaXNpb25zIHdpdGggPGJvb3N0
L2NzdGRpbnQuaHBwPi4KKy8vIENoZWNrIG91dCBJc3N1ZSA5IGZvciB0aGUgZGV0YWlscy4KKyNp
Zm5kZWYgSU5UTUFYX0MgLy8gICBbCisjICBkZWZpbmUgSU5UTUFYX0MgICBJTlQ2NF9DCisjZW5k
aWYgLy8gSU5UTUFYX0MgICAgXQorI2lmbmRlZiBVSU5UTUFYX0MgLy8gIFsKKyMgIGRlZmluZSBV
SU5UTUFYX0MgIFVJTlQ2NF9DCisjZW5kaWYgLy8gVUlOVE1BWF9DICAgXQorCisjZW5kaWYgLy8g
X19TVERDX0NPTlNUQU5UX01BQ1JPUyBdCisKKyNlbmRpZiAvLyBfTVNDX1ZFUiA+PSAxNjAwIF0K
KworI2VuZGlmIC8vIF9NU0NfU1RESU5UX0hfIF0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vcHJl
dHR5d3JpdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9wcmV0dHl3cml0ZXIu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhp
cmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL3ByZXR0eXdyaXRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMjA1IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEgTWlsbyBZ
aXAKKy8vCisvLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg
dG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisvLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh
c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAor
Ly8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0
IGxpbWl0YXRpb24gdGhlIHJpZ2h0cworLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw
dWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorLy8gY29waWVzIG9m
IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJl
IGlzCisvLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zOgorLy8KKy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p
c3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisvLyBhbGwgY29waWVzIG9yIHN1YnN0
YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKy8vCisvLyBUSEUgU09GVFdBUkUgSVMg
UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP
UgorLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFksCisvLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKy8vIEFVVEhPUlMg
T1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1Ig
T1RIRVIKKy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP
UlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisvLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElP
TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCisvLyBU
SEUgU09GVFdBUkUuCisKKyNpZm5kZWYgUkFQSURKU09OX1BSRVRUWVdSSVRFUl9IXworI2RlZmlu
ZSBSQVBJREpTT05fUFJFVFRZV1JJVEVSX0hfCisKKyNpbmNsdWRlICJ3cml0ZXIuaCIKKworI2lm
ZGVmIF9fR05VQ19fCitSQVBJREpTT05fRElBR19QVVNICitSQVBJREpTT05fRElBR19PRkYoZWZm
YysrKQorI2VuZGlmCisKK1JBUElESlNPTl9OQU1FU1BBQ0VfQkVHSU4KKworLy8hIFdyaXRlciB3
aXRoIGluZGVudGF0aW9uIGFuZCBzcGFjaW5nLgorLyohCisgICAgXHRwYXJhbSBPdXRwdXRTdHJl
YW0gVHlwZSBvZiBvdXB0dXQgb3MuCisgICAgXHRwYXJhbSBTb3VyY2VFbmNvZGluZyBFbmNvZGlu
ZyBvZiBzb3VyY2Ugc3RyaW5nLgorICAgIFx0cGFyYW0gVGFyZ2V0RW5jb2RpbmcgRW5jb2Rpbmcg
b2Ygb3V0cHV0IHN0cmVhbS4KKyAgICBcdHBhcmFtIFN0YWNrQWxsb2NhdG9yIFR5cGUgb2YgYWxs
b2NhdG9yIGZvciBhbGxvY2F0aW5nIG1lbW9yeSBvZiBzdGFjay4KKyovCit0ZW1wbGF0ZTx0eXBl
bmFtZSBPdXRwdXRTdHJlYW0sIHR5cGVuYW1lIFNvdXJjZUVuY29kaW5nID0gVVRGODw+LCB0eXBl
bmFtZSBUYXJnZXRFbmNvZGluZyA9IFVURjg8PiwgdHlwZW5hbWUgU3RhY2tBbGxvY2F0b3IgPSBD
cnRBbGxvY2F0b3I+CitjbGFzcyBQcmV0dHlXcml0ZXIgOiBwdWJsaWMgV3JpdGVyPE91dHB1dFN0
cmVhbSwgU291cmNlRW5jb2RpbmcsIFRhcmdldEVuY29kaW5nLCBTdGFja0FsbG9jYXRvcj4gewor
cHVibGljOgorICAgIHR5cGVkZWYgV3JpdGVyPE91dHB1dFN0cmVhbSwgU291cmNlRW5jb2Rpbmcs
IFRhcmdldEVuY29kaW5nLCBTdGFja0FsbG9jYXRvcj4gQmFzZTsKKyAgICB0eXBlZGVmIHR5cGVu
YW1lIEJhc2U6OkNoIENoOworCisgICAgLy8hIENvbnN0cnVjdG9yCisgICAgLyohIFxwYXJhbSBv
cyBPdXRwdXQgc3RyZWFtLgorICAgICAgICBccGFyYW0gYWxsb2NhdG9yIFVzZXIgc3VwcGxpZWQg
YWxsb2NhdG9yLiBJZiBpdCBpcyBudWxsLCBpdCB3aWxsIGNyZWF0ZSBhIHByaXZhdGUgb25lLgor
ICAgICAgICBccGFyYW0gbGV2ZWxEZXB0aCBJbml0aWFsIGNhcGFjaXR5IG9mIHN0YWNrLgorICAg
ICovCisgICAgUHJldHR5V3JpdGVyKE91dHB1dFN0cmVhbSYgb3MsIFN0YWNrQWxsb2NhdG9yKiBh
bGxvY2F0b3IgPSAwLCBzaXplX3QgbGV2ZWxEZXB0aCA9IEJhc2U6OmtEZWZhdWx0TGV2ZWxEZXB0
aCkgOiAKKyAgICAgICAgQmFzZShvcywgYWxsb2NhdG9yLCBsZXZlbERlcHRoKSwgaW5kZW50Q2hh
cl8oJyAnKSwgaW5kZW50Q2hhckNvdW50Xyg0KSB7fQorCisgICAgLy8hIFNldCBjdXN0b20gaW5k
ZW50YXRpb24uCisgICAgLyohIFxwYXJhbSBpbmRlbnRDaGFyICAgICAgIENoYXJhY3RlciBmb3Ig
aW5kZW50YXRpb24uIE11c3QgYmUgd2hpdGVzcGFjZSBjaGFyYWN0ZXIgKCcgJywgJ1xcdCcsICdc
XG4nLCAnXFxyJykuCisgICAgICAgIFxwYXJhbSBpbmRlbnRDaGFyQ291bnQgIE51bWJlciBvZiBp
bmRlbnQgY2hhcmFjdGVycyBmb3IgZWFjaCBpbmRlbnRhdGlvbiBsZXZlbC4KKyAgICAgICAgXG5v
dGUgVGhlIGRlZmF1bHQgaW5kZW50YXRpb24gaXMgNCBzcGFjZXMuCisgICAgKi8KKyAgICBQcmV0
dHlXcml0ZXImIFNldEluZGVudChDaCBpbmRlbnRDaGFyLCB1bnNpZ25lZCBpbmRlbnRDaGFyQ291
bnQpIHsKKyAgICAgICAgUkFQSURKU09OX0FTU0VSVChpbmRlbnRDaGFyID09ICcgJyB8fCBpbmRl
bnRDaGFyID09ICdcdCcgfHwgaW5kZW50Q2hhciA9PSAnXG4nIHx8IGluZGVudENoYXIgPT0gJ1xy
Jyk7CisgICAgICAgIGluZGVudENoYXJfID0gaW5kZW50Q2hhcjsKKyAgICAgICAgaW5kZW50Q2hh
ckNvdW50XyA9IGluZGVudENoYXJDb3VudDsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0K
KworICAgIC8qISBAbmFtZSBJbXBsZW1lbnRhdGlvbiBvZiBIYW5kbGVyCisgICAgICAgIFxzZWUg
SGFuZGxlcgorICAgICovCisgICAgLy9AeworCisgICAgYm9vbCBOdWxsKCkgICAgICAgICAgICAg
ICAgIHsgUHJldHR5UHJlZml4KGtOdWxsVHlwZSk7ICAgcmV0dXJuIEJhc2U6OldyaXRlTnVsbCgp
OyB9CisgICAgYm9vbCBCb29sKGJvb2wgYikgICAgICAgICAgIHsgUHJldHR5UHJlZml4KGIgPyBr
VHJ1ZVR5cGUgOiBrRmFsc2VUeXBlKTsgcmV0dXJuIEJhc2U6OldyaXRlQm9vbChiKTsgfQorICAg
IGJvb2wgSW50KGludCBpKSAgICAgICAgICAgICB7IFByZXR0eVByZWZpeChrTnVtYmVyVHlwZSk7
IHJldHVybiBCYXNlOjpXcml0ZUludChpKTsgfQorICAgIGJvb2wgVWludCh1bnNpZ25lZCB1KSAg
ICAgICB7IFByZXR0eVByZWZpeChrTnVtYmVyVHlwZSk7IHJldHVybiBCYXNlOjpXcml0ZVVpbnQo
dSk7IH0KKyAgICBib29sIEludDY0KGludDY0X3QgaTY0KSAgICAgeyBQcmV0dHlQcmVmaXgoa051
bWJlclR5cGUpOyByZXR1cm4gQmFzZTo6V3JpdGVJbnQ2NChpNjQpOyB9CisgICAgYm9vbCBVaW50
NjQodWludDY0X3QgdTY0KSAgIHsgUHJldHR5UHJlZml4KGtOdW1iZXJUeXBlKTsgcmV0dXJuIEJh
c2U6OldyaXRlVWludDY0KHU2NCk7ICB9CisgICAgYm9vbCBEb3VibGUoZG91YmxlIGQpICAgICAg
IHsgUHJldHR5UHJlZml4KGtOdW1iZXJUeXBlKTsgcmV0dXJuIEJhc2U6OldyaXRlRG91YmxlKGQp
OyB9CisKKyAgICBib29sIFN0cmluZyhjb25zdCBDaCogc3RyLCBTaXplVHlwZSBsZW5ndGgsIGJv
b2wgY29weSA9IGZhbHNlKSB7CisgICAgICAgICh2b2lkKWNvcHk7CisgICAgICAgIFByZXR0eVBy
ZWZpeChrU3RyaW5nVHlwZSk7CisgICAgICAgIHJldHVybiBCYXNlOjpXcml0ZVN0cmluZyhzdHIs
IGxlbmd0aCk7CisgICAgfQorCisgICAgYm9vbCBTdGFydE9iamVjdCgpIHsKKyAgICAgICAgUHJl
dHR5UHJlZml4KGtPYmplY3RUeXBlKTsKKyAgICAgICAgbmV3IChCYXNlOjpsZXZlbF9zdGFja18u
dGVtcGxhdGUgUHVzaDx0eXBlbmFtZSBCYXNlOjpMZXZlbD4oKSkgdHlwZW5hbWUgQmFzZTo6TGV2
ZWwoZmFsc2UpOworICAgICAgICByZXR1cm4gQmFzZTo6V3JpdGVTdGFydE9iamVjdCgpOworICAg
IH0KKworICAgIGJvb2wgS2V5KGNvbnN0IENoKiBzdHIsIFNpemVUeXBlIGxlbmd0aCwgYm9vbCBj
b3B5ID0gZmFsc2UpIHsgcmV0dXJuIFN0cmluZyhzdHIsIGxlbmd0aCwgY29weSk7IH0KKwkKKyAg
ICBib29sIEVuZE9iamVjdChTaXplVHlwZSBtZW1iZXJDb3VudCA9IDApIHsKKyAgICAgICAgKHZv
aWQpbWVtYmVyQ291bnQ7CisgICAgICAgIFJBUElESlNPTl9BU1NFUlQoQmFzZTo6bGV2ZWxfc3Rh
Y2tfLkdldFNpemUoKSA+PSBzaXplb2YodHlwZW5hbWUgQmFzZTo6TGV2ZWwpKTsKKyAgICAgICAg
UkFQSURKU09OX0FTU0VSVCghQmFzZTo6bGV2ZWxfc3RhY2tfLnRlbXBsYXRlIFRvcDx0eXBlbmFt
ZSBCYXNlOjpMZXZlbD4oKS0+aW5BcnJheSk7CisgICAgICAgIGJvb2wgZW1wdHkgPSBCYXNlOjps
ZXZlbF9zdGFja18udGVtcGxhdGUgUG9wPHR5cGVuYW1lIEJhc2U6OkxldmVsPigxKS0+dmFsdWVD
b3VudCA9PSAwOworCisgICAgICAgIGlmICghZW1wdHkpIHsKKyAgICAgICAgICAgIEJhc2U6Om9z
Xy0+UHV0KCdcbicpOworICAgICAgICAgICAgV3JpdGVJbmRlbnQoKTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoIUJhc2U6OldyaXRlRW5kT2JqZWN0KCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGlmIChCYXNlOjpsZXZlbF9zdGFja18uRW1wdHkoKSkgLy8gZW5kIG9mIGpz
b24gdGV4dAorICAgICAgICAgICAgQmFzZTo6b3NfLT5GbHVzaCgpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICBib29sIFN0YXJ0QXJyYXkoKSB7CisgICAgICAgIFByZXR0eVBy
ZWZpeChrQXJyYXlUeXBlKTsKKyAgICAgICAgbmV3IChCYXNlOjpsZXZlbF9zdGFja18udGVtcGxh
dGUgUHVzaDx0eXBlbmFtZSBCYXNlOjpMZXZlbD4oKSkgdHlwZW5hbWUgQmFzZTo6TGV2ZWwodHJ1
ZSk7CisgICAgICAgIHJldHVybiBCYXNlOjpXcml0ZVN0YXJ0QXJyYXkoKTsKKyAgICB9CisKKyAg
ICBib29sIEVuZEFycmF5KFNpemVUeXBlIG1lbWJlckNvdW50ID0gMCkgeworICAgICAgICAodm9p
ZCltZW1iZXJDb3VudDsKKyAgICAgICAgUkFQSURKU09OX0FTU0VSVChCYXNlOjpsZXZlbF9zdGFj
a18uR2V0U2l6ZSgpID49IHNpemVvZih0eXBlbmFtZSBCYXNlOjpMZXZlbCkpOworICAgICAgICBS
QVBJREpTT05fQVNTRVJUKEJhc2U6OmxldmVsX3N0YWNrXy50ZW1wbGF0ZSBUb3A8dHlwZW5hbWUg
QmFzZTo6TGV2ZWw+KCktPmluQXJyYXkpOworICAgICAgICBib29sIGVtcHR5ID0gQmFzZTo6bGV2
ZWxfc3RhY2tfLnRlbXBsYXRlIFBvcDx0eXBlbmFtZSBCYXNlOjpMZXZlbD4oMSktPnZhbHVlQ291
bnQgPT0gMDsKKworICAgICAgICBpZiAoIWVtcHR5KSB7CisgICAgICAgICAgICBCYXNlOjpvc18t
PlB1dCgnXG4nKTsKKyAgICAgICAgICAgIFdyaXRlSW5kZW50KCk7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKCFCYXNlOjpXcml0ZUVuZEFycmF5KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIGlmIChCYXNlOjpsZXZlbF9zdGFja18uRW1wdHkoKSkgLy8gZW5kIG9mIGpzb24g
dGV4dAorICAgICAgICAgICAgQmFzZTo6b3NfLT5GbHVzaCgpOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKKyAgICAvL0B9CisKKyAgICAvKiEgQG5hbWUgQ29udmVuaWVuY2UgZXh0ZW5z
aW9ucyAqLworICAgIC8vQHsKKworICAgIC8vISBTaW1wbGVyIGJ1dCBzbG93ZXIgb3ZlcmxvYWQu
CisgICAgYm9vbCBTdHJpbmcoY29uc3QgQ2gqIHN0cikgeyByZXR1cm4gU3RyaW5nKHN0ciwgaW50
ZXJuYWw6OlN0ckxlbihzdHIpKTsgfQorICAgIGJvb2wgS2V5KGNvbnN0IENoKiBzdHIpIHsgcmV0
dXJuIEtleShzdHIsIGludGVybmFsOjpTdHJMZW4oc3RyKSk7IH0KKworICAgIC8vQH0KK3Byb3Rl
Y3RlZDoKKyAgICB2b2lkIFByZXR0eVByZWZpeChUeXBlIHR5cGUpIHsKKyAgICAgICAgKHZvaWQp
dHlwZTsKKyAgICAgICAgaWYgKEJhc2U6OmxldmVsX3N0YWNrXy5HZXRTaXplKCkgIT0gMCkgeyAv
LyB0aGlzIHZhbHVlIGlzIG5vdCBhdCByb290CisgICAgICAgICAgICB0eXBlbmFtZSBCYXNlOjpM
ZXZlbCogbGV2ZWwgPSBCYXNlOjpsZXZlbF9zdGFja18udGVtcGxhdGUgVG9wPHR5cGVuYW1lIEJh
c2U6OkxldmVsPigpOworCisgICAgICAgICAgICBpZiAobGV2ZWwtPmluQXJyYXkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAobGV2ZWwtPnZhbHVlQ291bnQgPiAwKSB7CisgICAgICAgICAgICAgICAg
ICAgIEJhc2U6Om9zXy0+UHV0KCcsJyk7IC8vIGFkZCBjb21tYSBpZiBpdCBpcyBub3QgdGhlIGZp
cnN0IGVsZW1lbnQgaW4gYXJyYXkKKyAgICAgICAgICAgICAgICAgICAgQmFzZTo6b3NfLT5QdXQo
J1xuJyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgQmFzZTo6b3NfLT5QdXQoJ1xuJyk7CisgICAgICAgICAgICAgICAgV3JpdGVJ
bmRlbnQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeyAgLy8gaW4gb2JqZWN0
CisgICAgICAgICAgICAgICAgaWYgKGxldmVsLT52YWx1ZUNvdW50ID4gMCkgeworICAgICAgICAg
ICAgICAgICAgICBpZiAobGV2ZWwtPnZhbHVlQ291bnQgJSAyID09IDApIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEJhc2U6Om9zXy0+UHV0KCcsJyk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBCYXNlOjpvc18tPlB1dCgnXG4nKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEJhc2U6Om9zXy0+UHV0
KCc6Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICBCYXNlOjpvc18tPlB1dCgnICcpOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgQmFzZTo6b3NfLT5QdXQoJ1xuJyk7CisKKyAgICAgICAg
ICAgICAgICBpZiAobGV2ZWwtPnZhbHVlQ291bnQgJSAyID09IDApCisgICAgICAgICAgICAgICAg
ICAgIFdyaXRlSW5kZW50KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWxldmVs
LT5pbkFycmF5ICYmIGxldmVsLT52YWx1ZUNvdW50ICUgMiA9PSAwKQorICAgICAgICAgICAgICAg
IFJBUElESlNPTl9BU1NFUlQodHlwZSA9PSBrU3RyaW5nVHlwZSk7ICAvLyBpZiBpdCdzIGluIG9i
amVjdCwgdGhlbiBldmVuIG51bWJlciBzaG91bGQgYmUgYSBuYW1lCisgICAgICAgICAgICBsZXZl
bC0+dmFsdWVDb3VudCsrOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
UkFQSURKU09OX0FTU0VSVCghQmFzZTo6aGFzUm9vdF8pOyAgLy8gU2hvdWxkIG9ubHkgaGFzIG9u
ZSBhbmQgb25seSBvbmUgcm9vdC4KKyAgICAgICAgICAgIEJhc2U6Omhhc1Jvb3RfID0gdHJ1ZTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgV3JpdGVJbmRlbnQoKSAgeworICAgICAgICBz
aXplX3QgY291bnQgPSAoQmFzZTo6bGV2ZWxfc3RhY2tfLkdldFNpemUoKSAvIHNpemVvZih0eXBl
bmFtZSBCYXNlOjpMZXZlbCkpICogaW5kZW50Q2hhckNvdW50XzsKKyAgICAgICAgUHV0TigqQmFz
ZTo6b3NfLCBpbmRlbnRDaGFyXywgY291bnQpOworICAgIH0KKworICAgIENoIGluZGVudENoYXJf
OworICAgIHVuc2lnbmVkIGluZGVudENoYXJDb3VudF87CisKK3ByaXZhdGU6CisgICAgLy8gUHJv
aGliaXQgY29weSBjb25zdHJ1Y3RvciAmIGFzc2lnbm1lbnQgb3BlcmF0b3IuCisgICAgUHJldHR5
V3JpdGVyKGNvbnN0IFByZXR0eVdyaXRlciYpOworICAgIFByZXR0eVdyaXRlciYgb3BlcmF0b3I9
KGNvbnN0IFByZXR0eVdyaXRlciYpOworfTsKKworUkFQSURKU09OX05BTUVTUEFDRV9FTkQKKwor
I2lmZGVmIF9fR05VQ19fCitSQVBJREpTT05fRElBR19QT1AKKyNlbmRpZgorCisjZW5kaWYgLy8g
UkFQSURKU09OX1JBUElESlNPTl9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9yYXBpZGpzb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRf
cGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL3JhcGlkanNvbi5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBp
ZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vcmFwaWRqc29uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw2MjggQEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSBNaWxvIFlpcAorLy8KKy8vIFBlcm1p
c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9i
dGFpbmluZyBhIGNvcHkKKy8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1l
bnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCisvLyBpbiB0aGUgU29mdHdh
cmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUg
cmlnaHRzCisvLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1
dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCisvLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBh
bmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy8vIGZ1cm5pc2hl
ZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisvLworLy8g
VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hh
bGwgYmUgaW5jbHVkZWQgaW4KKy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMg
b2YgdGhlIFNvZnR3YXJlLgorLy8KKy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMi
LCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisvLyBJTVBMSUVELCBJ
TkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSwKKy8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5H
RU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9M
REVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorLy8gTElBQklM
SVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0Us
IEFSSVNJTkcgRlJPTSwKKy8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX
QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KKy8vIFRIRSBTT0ZUV0FSRS4KKwor
I2lmbmRlZiBSQVBJREpTT05fUkFQSURKU09OX0hfCisjZGVmaW5lIFJBUElESlNPTl9SQVBJREpT
T05fSF8KKworLy8gQ29weXJpZ2h0IChjKSAyMDExIE1pbG8gWWlwIChtaWxveWlwQGdtYWlsLmNv
bSkKKy8vIFZlcnNpb24gMC4xCisKKy8qIVxmaWxlIHJhcGlkanNvbi5oCisgICAgXGJyaWVmIGNv
bW1vbiBkZWZpbml0aW9ucyBhbmQgY29uZmlndXJhdGlvbgorCisgICAgXHNlZSBSQVBJREpTT05f
Q09ORklHCisgKi8KKworLyohIFxkZWZncm91cCBSQVBJREpTT05fQ09ORklHIFJhcGlkSlNPTiBj
b25maWd1cmF0aW9uCisgICAgXGJyaWVmIENvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciBsaWJyYXJ5
IGZlYXR1cmVzCisKKyAgICBTb21lIFJhcGlkSlNPTiBmZWF0dXJlcyBhcmUgY29uZmlndXJhYmxl
IHRvIGFkYXB0IHRoZSBsaWJyYXJ5IHRvIGEgd2lkZQorICAgIHZhcmlldHkgb2YgcGxhdGZvcm1z
LCBlbnZpcm9ubWVudHMgYW5kIHVzYWdlIHNjZW5hcmlvcy4gIE1vc3Qgb2YgdGhlCisgICAgZmVh
dHVyZXMgY2FuIGJlIGNvbmZpZ3VyZWQgaW4gdGVybXMgb2Ygb3ZlcnJpZGVuIG9yIHByZWRlZmlu
ZWQKKyAgICBwcmVwcm9jZXNzb3IgbWFjcm9zIGF0IGNvbXBpbGUtdGltZS4KKworICAgIFNvbWUg
YWRkaXRpb25hbCBjdXN0b21pemF0aW9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgXHJlZiBSQVBJREpT
T05fRVJST1JTIEFQSXMuCisKKyAgICBcbm90ZSBUaGVzZSBtYWNyb3Mgc2hvdWxkIGJlIGdpdmVu
IG9uIHRoZSBjb21waWxlciBjb21tYW5kLWxpbmUKKyAgICAgICAgICAod2hlcmUgYXBwbGljYWJs
ZSkgIHRvIGF2b2lkIGluY29uc2lzdGVudCB2YWx1ZXMgd2hlbiBjb21waWxpbmcKKyAgICAgICAg
ICBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdHMgb2YgYSBzaW5nbGUgYXBwbGljYXRpb24uCisg
Ki8KKworI2luY2x1ZGUgPGNzdGRsaWI+ICAvLyBtYWxsb2MoKSwgcmVhbGxvYygpLCBmcmVlKCks
IHNpemVfdAorI2luY2x1ZGUgPGNzdHJpbmc+ICAvLyBtZW1zZXQoKSwgbWVtY3B5KCksIG1lbW1v
dmUoKSwgbWVtY21wKCkKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gUkFQSURKU09OX05B
TUVTUEFDRV8oQkVHSU58RU5EKQorLyohIFxkZWYgUkFQSURKU09OX05BTUVTUEFDRQorICAgIFxp
bmdyb3VwIFJBUElESlNPTl9DT05GSUcKKyAgICBcYnJpZWYgICBwcm92aWRlIGN1c3RvbSByYXBp
ZGpzb24gbmFtZXNwYWNlCisKKyAgICBJbiBvcmRlciB0byBhdm9pZCBzeW1ib2wgY2xhc2hlcyBh
bmQvb3IgIk9uZSBEZWZpbml0aW9uIFJ1bGUiIGVycm9ycworICAgIGJldHdlZW4gbXVsdGlwbGUg
aW5jbHVzaW9ucyBvZiAoZGlmZmVyZW50IHZlcnNpb25zIG9mKSBSYXBpZEpTT04gaW4KKyAgICBh
IHNpbmdsZSBiaW5hcnksIHVzZXJzIGNhbiBjdXN0b21pemUgdGhlIG5hbWUgb2YgdGhlIG1haW4g
UmFwaWRKU09OCisgICAgbmFtZXNwYWNlLgorCisgICAgSW4gY2FzZSBvZiBhIHNpbmdsZSBuZXN0
aW5nIGxldmVsLCBkZWZpbmluZyBcYyBSQVBJREpTT05fTkFNRVNQQUNFCisgICAgdG8gYSBjdXN0
b20gbmFtZSAoZS5nLiBcYyBNeVJhcGlkSlNPTikgaXMgc3VmZmljaWVudC4gIElmIG11bHRpcGxl
CisgICAgbGV2ZWxzIGFyZSBuZWVkZWQsIGJvdGggXHJlZiBSQVBJREpTT05fTkFNRVNQQUNFX0JF
R0lOIGFuZCBccmVmCisgICAgUkFQSURKU09OX05BTUVTUEFDRV9FTkQgbmVlZCB0byBiZSBkZWZp
bmVkIGFzIHdlbGw6CisKKyAgICBcY29kZQorICAgIC8vIGluIHNvbWUgLmNwcCBmaWxlCisgICAg
I2RlZmluZSBSQVBJREpTT05fTkFNRVNQQUNFIG15OjpyYXBpZGpzb24KKyAgICAjZGVmaW5lIFJB
UElESlNPTl9OQU1FU1BBQ0VfQkVHSU4gbmFtZXNwYWNlIG15IHsgbmFtZXNwYWNlIHJhcGlkanNv
biB7CisgICAgI2RlZmluZSBSQVBJREpTT05fTkFNRVNQQUNFX0VORCAgIH0gfQorICAgICNpbmNs
dWRlICJyYXBpZGpzb24vLi4uIgorICAgIFxlbmRjb2RlCisKKyAgICBcc2VlIHJhcGlkanNvbgor
ICovCisvKiEgXGRlZiBSQVBJREpTT05fTkFNRVNQQUNFX0JFR0lOCisgICAgXGluZ3JvdXAgUkFQ
SURKU09OX0NPTkZJRworICAgIFxicmllZiAgIHByb3ZpZGUgY3VzdG9tIHJhcGlkanNvbiBuYW1l
c3BhY2UgKG9wZW5pbmcgZXhwcmVzc2lvbikKKyAgICBcc2VlIFJBUElESlNPTl9OQU1FU1BBQ0UK
KyovCisvKiEgXGRlZiBSQVBJREpTT05fTkFNRVNQQUNFX0VORAorICAgIFxpbmdyb3VwIFJBUElE
SlNPTl9DT05GSUcKKyAgICBcYnJpZWYgICBwcm92aWRlIGN1c3RvbSByYXBpZGpzb24gbmFtZXNw
YWNlIChjbG9zaW5nIGV4cHJlc3Npb24pCisgICAgXHNlZSBSQVBJREpTT05fTkFNRVNQQUNFCisq
LworI2lmbmRlZiBSQVBJREpTT05fTkFNRVNQQUNFCisjZGVmaW5lIFJBUElESlNPTl9OQU1FU1BB
Q0UgcmFwaWRqc29uCisjZW5kaWYKKyNpZm5kZWYgUkFQSURKU09OX05BTUVTUEFDRV9CRUdJTgor
I2RlZmluZSBSQVBJREpTT05fTkFNRVNQQUNFX0JFR0lOIG5hbWVzcGFjZSBSQVBJREpTT05fTkFN
RVNQQUNFIHsKKyNlbmRpZgorI2lmbmRlZiBSQVBJREpTT05fTkFNRVNQQUNFX0VORAorI2RlZmlu
ZSBSQVBJREpTT05fTkFNRVNQQUNFX0VORCB9CisjZW5kaWYKKworLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLworLy8gUkFQSURKU09OX05PX0lOVDY0REVGSU5FCisKKy8qISBcZGVmIFJBUElESlNPTl9O
T19JTlQ2NERFRklORQorICAgIFxpbmdyb3VwIFJBUElESlNPTl9DT05GSUcKKyAgICBcYnJpZWYg
VXNlIGV4dGVybmFsIDY0LWJpdCBpbnRlZ2VyIHR5cGVzLgorCisgICAgUmFwaWRKU09OIHJlcXVp
cmVzIHRoZSA2NC1iaXQgaW50ZWdlciB0eXBlcyBcYyBpbnQ2NF90IGFuZCAgXGMgdWludDY0X3Qg
dHlwZXMKKyAgICB0byBiZSBhdmFpbGFibGUgYXQgZ2xvYmFsIHNjb3BlLgorCisgICAgSWYgdXNl
cnMgaGF2ZSB0aGVpciBvd24gZGVmaW5pdGlvbiwgZGVmaW5lIFJBUElESlNPTl9OT19JTlQ2NERF
RklORSB0bworICAgIHByZXZlbnQgUmFwaWRKU09OIGZyb20gZGVmaW5pbmcgaXRzIG93biB0eXBl
cy4KKyovCisjaWZuZGVmIFJBUElESlNPTl9OT19JTlQ2NERFRklORQorLy8hQGNvbmQgUkFQSURK
U09OX0hJRERFTl9GUk9NX0RPWFlHRU4KKyNpZmRlZiBfTVNDX1ZFUgorI2luY2x1ZGUgIm1zaW50
dHlwZXMvc3RkaW50LmgiCisjaW5jbHVkZSAibXNpbnR0eXBlcy9pbnR0eXBlcy5oIgorI2Vsc2UK
Ky8vIE90aGVyIGNvbXBpbGVycyBzaG91bGQgaGF2ZSB0aGlzLgorI2luY2x1ZGUgPHN0ZGludC5o
PgorI2luY2x1ZGUgPGludHR5cGVzLmg+CisjZW5kaWYKKy8vIUBlbmRjb25kCisjaWZkZWYgUkFQ
SURKU09OX0RPWFlHRU5fUlVOTklORworI2RlZmluZSBSQVBJREpTT05fTk9fSU5UNjRERUZJTkUK
KyNlbmRpZgorI2VuZGlmIC8vIFJBUElESlNPTl9OT19JTlQ2NFRZUEVERUYKKworLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLworLy8gUkFQSURKU09OX0ZPUkNFSU5MSU5FCisKKyNpZm5kZWYgUkFQSURK
U09OX0ZPUkNFSU5MSU5FCisvLyFAY29uZCBSQVBJREpTT05fSElEREVOX0ZST01fRE9YWUdFTgor
I2lmZGVmIF9NU0NfVkVSCisjZGVmaW5lIFJBUElESlNPTl9GT1JDRUlOTElORSBfX2ZvcmNlaW5s
aW5lCisjZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA+PSA0CisjZGVmaW5lIFJB
UElESlNPTl9GT1JDRUlOTElORSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkKKyNlbHNl
CisjZGVmaW5lIFJBUElESlNPTl9GT1JDRUlOTElORQorI2VuZGlmCisvLyFAZW5kY29uZAorI2Vu
ZGlmIC8vIFJBUElESlNPTl9GT1JDRUlOTElORQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisv
LyBSQVBJREpTT05fRU5ESUFOCisjZGVmaW5lIFJBUElESlNPTl9MSVRUTEVFTkRJQU4gIDAgICAv
LyE8IExpdHRsZSBlbmRpYW4gbWFjaGluZQorI2RlZmluZSBSQVBJREpTT05fQklHRU5ESUFOICAg
ICAxICAgLy8hPCBCaWcgZW5kaWFuIG1hY2hpbmUKKworLy8hIEVuZGlhbm5lc3Mgb2YgdGhlIG1h
Y2hpbmUuCisvKiEKKyAgICBcZGVmIFJBUElESlNPTl9FTkRJQU4KKyAgICBcaW5ncm91cCBSQVBJ
REpTT05fQ09ORklHCisKKyAgICBHQ0MgNC42IHByb3ZpZGVkIG1hY3JvIGZvciBkZXRlY3Rpbmcg
ZW5kaWFubmVzcyBvZiB0aGUgdGFyZ2V0IG1hY2hpbmUuIEJ1dCBvdGhlcgorICAgIGNvbXBpbGVy
cyBtYXkgbm90IGhhdmUgdGhpcy4gVXNlciBjYW4gZGVmaW5lIFJBUElESlNPTl9FTkRJQU4gdG8g
ZWl0aGVyCisgICAgXHJlZiBSQVBJREpTT05fTElUVExFRU5ESUFOIG9yIFxyZWYgUkFQSURKU09O
X0JJR0VORElBTi4KKworICAgIERlZmF1bHQgZGV0ZWN0aW9uIGltcGxlbWVudGVkIHdpdGggcmVm
ZXJlbmNlIHRvCisgICAgXGxpIGh0dHBzOi8vZ2NjLmdudS5vcmcvb25saW5lZG9jcy9nY2MtNC42
LjAvY3BwL0NvbW1vbi1QcmVkZWZpbmVkLU1hY3Jvcy5odG1sCisgICAgXGxpIGh0dHA6Ly93d3cu
Ym9vc3Qub3JnL2RvYy9saWJzLzFfNDJfMC9ib29zdC9kZXRhaWwvZW5kaWFuLmhwcAorKi8KKyNp
Zm5kZWYgUkFQSURKU09OX0VORElBTgorLy8gRGV0ZWN0IHdpdGggR0NDIDQuNidzIG1hY3JvCisj
ICBpZmRlZiBfX0JZVEVfT1JERVJfXworIyAgICBpZiBfX0JZVEVfT1JERVJfXyA9PSBfX09SREVS
X0xJVFRMRV9FTkRJQU5fXworIyAgICAgIGRlZmluZSBSQVBJREpTT05fRU5ESUFOIFJBUElESlNP
Tl9MSVRUTEVFTkRJQU4KKyMgICAgZWxpZiBfX0JZVEVfT1JERVJfXyA9PSBfX09SREVSX0JJR19F
TkRJQU5fXworIyAgICAgIGRlZmluZSBSQVBJREpTT05fRU5ESUFOIFJBUElESlNPTl9CSUdFTkRJ
QU4KKyMgICAgZWxzZQorIyAgICAgIGVycm9yIFVua25vd24gbWFjaGluZSBlbmRpYW5lc3MgZGV0
ZWN0ZWQuIFVzZXIgbmVlZHMgdG8gZGVmaW5lIFJBUElESlNPTl9FTkRJQU4uCisjICAgIGVuZGlm
IC8vIF9fQllURV9PUkRFUl9fCisvLyBEZXRlY3Qgd2l0aCBHTElCQydzIGVuZGlhbi5oCisjICBl
bGlmIGRlZmluZWQoX19HTElCQ19fKQorIyAgICBpbmNsdWRlIDxlbmRpYW4uaD4KKyMgICAgaWYg
KF9fQllURV9PUkRFUiA9PSBfX0xJVFRMRV9FTkRJQU4pCisjICAgICAgZGVmaW5lIFJBUElESlNP
Tl9FTkRJQU4gUkFQSURKU09OX0xJVFRMRUVORElBTgorIyAgICBlbGlmIChfX0JZVEVfT1JERVIg
PT0gX19CSUdfRU5ESUFOKQorIyAgICAgIGRlZmluZSBSQVBJREpTT05fRU5ESUFOIFJBUElESlNP
Tl9CSUdFTkRJQU4KKyMgICAgZWxzZQorIyAgICAgIGVycm9yIFVua25vd24gbWFjaGluZSBlbmRp
YW5lc3MgZGV0ZWN0ZWQuIFVzZXIgbmVlZHMgdG8gZGVmaW5lIFJBUElESlNPTl9FTkRJQU4uCisj
ICAgZW5kaWYgLy8gX19HTElCQ19fCisvLyBEZXRlY3Qgd2l0aCBfTElUVExFX0VORElBTiBhbmQg
X0JJR19FTkRJQU4gbWFjcm8KKyMgIGVsaWYgZGVmaW5lZChfTElUVExFX0VORElBTikgJiYgIWRl
ZmluZWQoX0JJR19FTkRJQU4pCisjICAgIGRlZmluZSBSQVBJREpTT05fRU5ESUFOIFJBUElESlNP
Tl9MSVRUTEVFTkRJQU4KKyMgIGVsaWYgZGVmaW5lZChfQklHX0VORElBTikgJiYgIWRlZmluZWQo
X0xJVFRMRV9FTkRJQU4pCisjICAgIGRlZmluZSBSQVBJREpTT05fRU5ESUFOIFJBUElESlNPTl9C
SUdFTkRJQU4KKy8vIERldGVjdCB3aXRoIGFyY2hpdGVjdHVyZSBtYWNyb3MKKyMgIGVsaWYgZGVm
aW5lZChfX3NwYXJjKSB8fCBkZWZpbmVkKF9fc3BhcmNfXykgfHwgZGVmaW5lZChfUE9XRVIpIHx8
IGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRlZmluZWQoX19wcGNfXykgfHwgZGVmaW5lZChfX2hw
dXgpIHx8IGRlZmluZWQoX19ocHBhKSB8fCBkZWZpbmVkKF9NSVBTRUIpIHx8IGRlZmluZWQoX1BP
V0VSKSB8fCBkZWZpbmVkKF9fczM5MF9fKQorIyAgICBkZWZpbmUgUkFQSURKU09OX0VORElBTiBS
QVBJREpTT05fQklHRU5ESUFOCisjICBlbGlmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQo
X19hbHBoYV9fKSB8fCBkZWZpbmVkKF9faWE2NCkgfHwgZGVmaW5lZChfX2lhNjRfXykgfHwgZGVm
aW5lZChfTV9JWDg2KSB8fCBkZWZpbmVkKF9NX0lBNjQpIHx8IGRlZmluZWQoX01fQUxQSEEpIHx8
IGRlZmluZWQoX19hbWQ2NCkgfHwgZGVmaW5lZChfX2FtZDY0X18pIHx8IGRlZmluZWQoX01fQU1E
NjQpIHx8IGRlZmluZWQoX194ODZfNjQpIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5l
ZChfTV9YNjQpIHx8IGRlZmluZWQoX19iZmluX18pCisjICAgIGRlZmluZSBSQVBJREpTT05fRU5E
SUFOIFJBUElESlNPTl9MSVRUTEVFTkRJQU4KKyMgIGVsaWYgZGVmaW5lZChSQVBJREpTT05fRE9Y
WUdFTl9SVU5OSU5HKQorIyAgICBkZWZpbmUgUkFQSURKU09OX0VORElBTgorIyAgZWxzZQorIyAg
ICBlcnJvciBVbmtub3duIG1hY2hpbmUgZW5kaWFuZXNzIGRldGVjdGVkLiBVc2VyIG5lZWRzIHRv
IGRlZmluZSBSQVBJREpTT05fRU5ESUFOLiAgIAorIyAgZW5kaWYKKyNlbmRpZiAvLyBSQVBJREpT
T05fRU5ESUFOCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIFJBUElESlNPTl82NEJJVAor
CisvLyEgV2hldGhlciB1c2luZyA2NC1iaXQgYXJjaGl0ZWN0dXJlCisjaWZuZGVmIFJBUElESlNP
Tl82NEJJVAorI2lmIGRlZmluZWQoX19MUDY0X18pIHx8IGRlZmluZWQoX1dJTjY0KQorI2RlZmlu
ZSBSQVBJREpTT05fNjRCSVQgMQorI2Vsc2UKKyNkZWZpbmUgUkFQSURKU09OXzY0QklUIDAKKyNl
bmRpZgorI2VuZGlmIC8vIFJBUElESlNPTl82NEJJVAorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
CisvLyBSQVBJREpTT05fQUxJR04KKworLy8hIERhdGEgYWxpZ25tZW50IG9mIHRoZSBtYWNoaW5l
LgorLyohIFxpbmdyb3VwIFJBUElESlNPTl9DT05GSUcKKyAgICBccGFyYW0geCBwb2ludGVyIHRv
IGFsaWduCisKKyAgICBTb21lIG1hY2hpbmVzIHJlcXVpcmUgc3RyaWN0IGRhdGEgYWxpZ25tZW50
LiBDdXJyZW50bHkgdGhlIGRlZmF1bHQgdXNlcyA0IGJ5dGVzCisgICAgYWxpZ25tZW50LiBVc2Vy
IGNhbiBjdXN0b21pemUgYnkgZGVmaW5pbmcgdGhlIFJBUElESlNPTl9BTElHTiBmdW5jdGlvbiBt
YWNyby4sCisqLworI2lmbmRlZiBSQVBJREpTT05fQUxJR04KKyNkZWZpbmUgUkFQSURKU09OX0FM
SUdOKHgpICgoeCArIDN1KSAmIH4zdSkKKyNlbmRpZgorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
CisvLyBSQVBJREpTT05fVUlOVDY0X0MyCisKKy8vISBDb25zdHJ1Y3QgYSA2NC1iaXQgbGl0ZXJh
bCBieSBhIHBhaXIgb2YgMzItYml0IGludGVnZXIuCisvKiEKKyAgICA2NC1iaXQgbGl0ZXJhbCB3
aXRoIG9yIHdpdGhvdXQgVUxMIHN1ZmZpeCBpcyBwcm9uZSB0byBjb21waWxlciB3YXJuaW5ncy4K
KyAgICBVSU5UNjRfQygpIGlzIEMgbWFjcm8gd2hpY2ggY2F1c2UgY29tcGlsYXRpb24gcHJvYmxl
bXMuCisgICAgVXNlIHRoaXMgbWFjcm8gdG8gZGVmaW5lIDY0LWJpdCBjb25zdGFudHMgYnkgYSBw
YWlyIG9mIDMyLWJpdCBpbnRlZ2VyLgorKi8KKyNpZm5kZWYgUkFQSURKU09OX1VJTlQ2NF9DMgor
I2RlZmluZSBSQVBJREpTT05fVUlOVDY0X0MyKGhpZ2gzMiwgbG93MzIpICgoc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KGhpZ2gzMikgPDwgMzIpIHwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxvdzMyKSkK
KyNlbmRpZgorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBSQVBJREpTT05fU1NFMi9SQVBJ
REpTT05fU1NFNDIvUkFQSURKU09OX1NJTUQKKworLyohIFxkZWYgUkFQSURKU09OX1NJTUQKKyAg
ICBcaW5ncm91cCBSQVBJREpTT05fQ09ORklHCisgICAgXGJyaWVmIEVuYWJsZSBTU0UyL1NTRTQu
MiBvcHRpbWl6YXRpb24uCisKKyAgICBSYXBpZEpTT04gc3VwcG9ydHMgb3B0aW1pemVkIGltcGxl
bWVudGF0aW9ucyBmb3Igc29tZSBwYXJzaW5nIG9wZXJhdGlvbnMKKyAgICBiYXNlZCBvbiB0aGUg
U1NFMiBvciBTU0U0LjIgU0lNRCBleHRlbnNpb25zIG9uIG1vZGVybiBJbnRlbC1jb21wYXRpYmxl
CisgICAgcHJvY2Vzc29ycy4KKworICAgIFRvIGVuYWJsZSB0aGVzZSBvcHRpbWl6YXRpb25zLCB0
d28gZGlmZmVyZW50IHN5bWJvbHMgY2FuIGJlIGRlZmluZWQ7CisgICAgXGNvZGUKKyAgICAvLyBF
bmFibGUgU1NFMiBvcHRpbWl6YXRpb24uCisgICAgI2RlZmluZSBSQVBJREpTT05fU1NFMgorCisg
ICAgLy8gRW5hYmxlIFNTRTQuMiBvcHRpbWl6YXRpb24uCisgICAgI2RlZmluZSBSQVBJREpTT05f
U1NFNDIKKyAgICBcZW5kY29kZQorCisgICAgXGMgUkFQSURKU09OX1NTRTQyIHRha2VzIHByZWNl
ZGVuY2UsIGlmIGJvdGggYXJlIGRlZmluZWQuCisKKyAgICBJZiBhbnkgb2YgdGhlc2Ugc3ltYm9s
cyBpcyBkZWZpbmVkLCBSYXBpZEpTT04gZGVmaW5lcyB0aGUgbWFjcm8KKyAgICBcYyBSQVBJREpT
T05fU0lNRCB0byBpbmRpY2F0ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoZSBvcHRpbWl6ZWQgY29k
ZS4KKyovCisjaWYgZGVmaW5lZChSQVBJREpTT05fU1NFMikgfHwgZGVmaW5lZChSQVBJREpTT05f
U1NFNDIpIFwKKyAgICB8fCBkZWZpbmVkKFJBUElESlNPTl9ET1hZR0VOX1JVTk5JTkcpCisjZGVm
aW5lIFJBUElESlNPTl9TSU1ECisjZW5kaWYKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8g
UkFQSURKU09OX05PX1NJWkVUWVBFREVGSU5FCisKKyNpZm5kZWYgUkFQSURKU09OX05PX1NJWkVU
WVBFREVGSU5FCisvKiEgXGRlZiBSQVBJREpTT05fTk9fU0laRVRZUEVERUZJTkUKKyAgICBcaW5n
cm91cCBSQVBJREpTT05fQ09ORklHCisgICAgXGJyaWVmIFVzZXItcHJvdmlkZWQgXGMgU2l6ZVR5
cGUgZGVmaW5pdGlvbi4KKworICAgIEluIG9yZGVyIHRvIGF2b2lkIHVzaW5nIDMyLWJpdCBzaXpl
IHR5cGVzIGZvciBpbmRleGluZyBzdHJpbmdzIGFuZCBhcnJheXMsCisgICAgZGVmaW5lIHRoaXMg
cHJlcHJvY2Vzc29yIHN5bWJvbCBhbmQgcHJvdmlkZSB0aGUgdHlwZSByYXBpZGpzb246OlNpemVU
eXBlCisgICAgYmVmb3JlIGluY2x1ZGluZyBSYXBpZEpTT046CisgICAgXGNvZGUKKyAgICAjZGVm
aW5lIFJBUElESlNPTl9OT19TSVpFVFlQRURFRklORQorICAgIG5hbWVzcGFjZSByYXBpZGpzb24g
eyB0eXBlZGVmIDo6c3RkOjpzaXplX3QgU2l6ZVR5cGU7IH0KKyAgICAjaW5jbHVkZSAicmFwaWRq
c29uLy4uLiIKKyAgICBcZW5kY29kZQorCisgICAgXHNlZSByYXBpZGpzb246OlNpemVUeXBlCisq
LworI2lmZGVmIFJBUElESlNPTl9ET1hZR0VOX1JVTk5JTkcKKyNkZWZpbmUgUkFQSURKU09OX05P
X1NJWkVUWVBFREVGSU5FCisjZW5kaWYKK1JBUElESlNPTl9OQU1FU1BBQ0VfQkVHSU4KKy8vISBT
aXplIHR5cGUgKGZvciBzdHJpbmcgbGVuZ3RocywgYXJyYXkgc2l6ZXMsIGV0Yy4pCisvKiEgUmFw
aWRKU09OIHVzZXMgMzItYml0IGFycmF5L3N0cmluZyBpbmRpY2VzIGV2ZW4gb24gNjQtYml0IHBs
YXRmb3JtcywKKyAgICBpbnN0ZWFkIG9mIHVzaW5nIFxjIHNpemVfdC4gVXNlcnMgbWF5IG92ZXJy
aWRlIHRoZSBTaXplVHlwZSBieSBkZWZpbmluZworICAgIFxyZWYgUkFQSURKU09OX05PX1NJWkVU
WVBFREVGSU5FLgorKi8KK3R5cGVkZWYgdW5zaWduZWQgU2l6ZVR5cGU7CitSQVBJREpTT05fTkFN
RVNQQUNFX0VORAorI2VuZGlmCisKKy8vIGFsd2F5cyBpbXBvcnQgc3RkOjpzaXplX3QgdG8gcmFw
aWRqc29uIG5hbWVzcGFjZQorUkFQSURKU09OX05BTUVTUEFDRV9CRUdJTgordXNpbmcgc3RkOjpz
aXplX3Q7CitSQVBJREpTT05fTkFNRVNQQUNFX0VORAorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
CisvLyBSQVBJREpTT05fQVNTRVJUCisKKy8vISBBc3NlcnRpb24uCisvKiEgXGluZ3JvdXAgUkFQ
SURKU09OX0NPTkZJRworICAgIEJ5IGRlZmF1bHQsIHJhcGlkanNvbiB1c2VzIEMgXGMgYXNzZXJ0
KCkgZm9yIGludGVybmFsIGFzc2VydGlvbnMuCisgICAgVXNlciBjYW4gb3ZlcnJpZGUgaXQgYnkg
ZGVmaW5pbmcgUkFQSURKU09OX0FTU0VSVCh4KSBtYWNyby4KKworICAgIFxub3RlIFBhcnNpbmcg
ZXJyb3JzIGFyZSBoYW5kbGVkIGFuZCBjYW4gYmUgY3VzdG9taXplZCBieSB0aGUKKyAgICAgICAg
ICBccmVmIFJBUElESlNPTl9FUlJPUlMgQVBJcy4KKyovCisjaWZuZGVmIFJBUElESlNPTl9BU1NF
UlQKKyNpbmNsdWRlIDxjYXNzZXJ0PgorI2RlZmluZSBSQVBJREpTT05fQVNTRVJUKHgpIGFzc2Vy
dCh4KQorI2VuZGlmIC8vIFJBUElESlNPTl9BU1NFUlQKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LworLy8gUkFQSURKU09OX1NUQVRJQ19BU1NFUlQKKworLy8gQWRvcHQgZnJvbSBib29zdAorI2lm
bmRlZiBSQVBJREpTT05fU1RBVElDX0FTU0VSVAorLy8hQGNvbmQgUkFQSURKU09OX0hJRERFTl9G
Uk9NX0RPWFlHRU4KK1JBUElESlNPTl9OQU1FU1BBQ0VfQkVHSU4KK3RlbXBsYXRlIDxib29sIHg+
IHN0cnVjdCBTVEFUSUNfQVNTRVJUSU9OX0ZBSUxVUkU7Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgU1RB
VElDX0FTU0VSVElPTl9GQUlMVVJFPHRydWU+IHsgZW51bSB7IHZhbHVlID0gMSB9OyB9OwordGVt
cGxhdGU8aW50IHg+IHN0cnVjdCBTdGF0aWNBc3NlcnRUZXN0IHt9OworUkFQSURKU09OX05BTUVT
UEFDRV9FTkQKKworI2RlZmluZSBSQVBJREpTT05fSk9JTihYLCBZKSBSQVBJREpTT05fRE9fSk9J
TihYLCBZKQorI2RlZmluZSBSQVBJREpTT05fRE9fSk9JTihYLCBZKSBSQVBJREpTT05fRE9fSk9J
TjIoWCwgWSkKKyNkZWZpbmUgUkFQSURKU09OX0RPX0pPSU4yKFgsIFkpIFgjI1kKKworI2lmIGRl
ZmluZWQoX19HTlVDX18pCisjZGVmaW5lIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUX1VOVVNFRF9B
VFRSSUJVVEUgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKKyNlbHNlCisjZGVmaW5lIFJBUElESlNP
Tl9TVEFUSUNfQVNTRVJUX1VOVVNFRF9BVFRSSUJVVEUgCisjZW5kaWYKKy8vIUBlbmRjb25kCisK
Ky8qISBcZGVmIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUCisgICAgXGJyaWVmIChJbnRlcm5hbCkg
bWFjcm8gdG8gY2hlY2sgZm9yIGNvbmRpdGlvbnMgYXQgY29tcGlsZS10aW1lCisgICAgXHBhcmFt
IHggY29tcGlsZS10aW1lIGNvbmRpdGlvbgorICAgIFxoaWRlaW5pdGlhbGl6ZXIKKyAqLworI2Rl
ZmluZSBSQVBJREpTT05fU1RBVElDX0FTU0VSVCh4KSBcCisgICAgdHlwZWRlZiA6OlJBUElESlNP
Tl9OQU1FU1BBQ0U6OlN0YXRpY0Fzc2VydFRlc3Q8IFwKKyAgICAgIHNpemVvZig6OlJBUElESlNP
Tl9OQU1FU1BBQ0U6OlNUQVRJQ19BU1NFUlRJT05fRkFJTFVSRTxib29sKHgpID4pPiBcCisgICAg
UkFQSURKU09OX0pPSU4oU3RhdGljQXNzZXJ0VHlwZWRlZiwgX19MSU5FX18pIFJBUElESlNPTl9T
VEFUSUNfQVNTRVJUX1VOVVNFRF9BVFRSSUJVVEUKKyNlbmRpZgorCisvLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vCisvLyBIZWxwZXJzCisKKy8vIUBjb25kIFJBUElESlNPTl9ISURERU5fRlJPTV9ET1hZ
R0VOCisKKyNkZWZpbmUgUkFQSURKU09OX01VTFRJTElORU1BQ1JPX0JFR0lOIGRvIHsgIAorI2Rl
ZmluZSBSQVBJREpTT05fTVVMVElMSU5FTUFDUk9fRU5EIFwKK30gd2hpbGUoKHZvaWQpMCwgMCkK
KworLy8gYWRvcHRlZCBmcm9tIEJvb3N0CisjZGVmaW5lIFJBUElESlNPTl9WRVJTSU9OX0NPREUo
eCx5LHopIFwKKyAgKCgoeCkqMTAwMDAwKSArICgoeSkqMTAwKSArICh6KSkKKworLy8gdG9rZW4g
c3RyaW5naWZpY2F0aW9uCisjZGVmaW5lIFJBUElESlNPTl9TVFJJTkdJRlkoeCkgUkFQSURKU09O
X0RPX1NUUklOR0lGWSh4KQorI2RlZmluZSBSQVBJREpTT05fRE9fU1RSSU5HSUZZKHgpICN4CisK
Ky8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIFJBUElESlNPTl9ESUFHX1BVU0gvUE9QLCBSQVBJ
REpTT05fRElBR19PRkYKKworI2lmIGRlZmluZWQoX19HTlVDX18pCisjZGVmaW5lIFJBUElESlNP
Tl9HTlVDIFwKKyAgICBSQVBJREpTT05fVkVSU0lPTl9DT0RFKF9fR05VQ19fLF9fR05VQ19NSU5P
Ul9fLF9fR05VQ19QQVRDSExFVkVMX18pCisjZW5kaWYKKworI2lmIGRlZmluZWQoX19jbGFuZ19f
KSB8fCAoZGVmaW5lZChSQVBJREpTT05fR05VQykgJiYgUkFQSURKU09OX0dOVUMgPj0gUkFQSURK
U09OX1ZFUlNJT05fQ09ERSg0LDIsMCkpCisKKyNkZWZpbmUgUkFQSURKU09OX1BSQUdNQSh4KSBf
UHJhZ21hKFJBUElESlNPTl9TVFJJTkdJRlkoeCkpCisjZGVmaW5lIFJBUElESlNPTl9ESUFHX1BS
QUdNQSh4KSBSQVBJREpTT05fUFJBR01BKEdDQyBkaWFnbm9zdGljIHgpCisjZGVmaW5lIFJBUElE
SlNPTl9ESUFHX09GRih4KSBcCisgICAgUkFQSURKU09OX0RJQUdfUFJBR01BKGlnbm9yZWQgUkFQ
SURKU09OX1NUUklOR0lGWShSQVBJREpTT05fSk9JTigtVyx4KSkpCisKKy8vIHB1c2gvcG9wIHN1
cHBvcnQgaW4gQ2xhbmcgYW5kIEdDQz49NC42CisjaWYgZGVmaW5lZChfX2NsYW5nX18pIHx8IChk
ZWZpbmVkKFJBUElESlNPTl9HTlVDKSAmJiBSQVBJREpTT05fR05VQyA+PSBSQVBJREpTT05fVkVS
U0lPTl9DT0RFKDQsNiwwKSkKKyNkZWZpbmUgUkFQSURKU09OX0RJQUdfUFVTSCBSQVBJREpTT05f
RElBR19QUkFHTUEocHVzaCkKKyNkZWZpbmUgUkFQSURKU09OX0RJQUdfUE9QICBSQVBJREpTT05f
RElBR19QUkFHTUEocG9wKQorI2Vsc2UgLy8gR0NDID49IDQuMiwgPCA0LjYKKyNkZWZpbmUgUkFQ
SURKU09OX0RJQUdfUFVTSCAvKiBpZ25vcmVkICovCisjZGVmaW5lIFJBUElESlNPTl9ESUFHX1BP
UCAvKiBpZ25vcmVkICovCisjZW5kaWYKKworI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKKworLy8g
cHJhZ21hIChNU1ZDIHNwZWNpZmljKQorI2RlZmluZSBSQVBJREpTT05fUFJBR01BKHgpIF9fcHJh
Z21hKHgpCisjZGVmaW5lIFJBUElESlNPTl9ESUFHX1BSQUdNQSh4KSBSQVBJREpTT05fUFJBR01B
KHdhcm5pbmcoeCkpCisKKyNkZWZpbmUgUkFQSURKU09OX0RJQUdfT0ZGKHgpIFJBUElESlNPTl9E
SUFHX1BSQUdNQShkaXNhYmxlOiB4KQorI2RlZmluZSBSQVBJREpTT05fRElBR19QVVNIIFJBUElE
SlNPTl9ESUFHX1BSQUdNQShwdXNoKQorI2RlZmluZSBSQVBJREpTT05fRElBR19QT1AgIFJBUElE
SlNPTl9ESUFHX1BSQUdNQShwb3ApCisKKyNlbHNlCisKKyNkZWZpbmUgUkFQSURKU09OX0RJQUdf
T0ZGKHgpIC8qIGlnbm9yZWQgKi8KKyNkZWZpbmUgUkFQSURKU09OX0RJQUdfUFVTSCAgIC8qIGln
bm9yZWQgKi8KKyNkZWZpbmUgUkFQSURKU09OX0RJQUdfUE9QICAgIC8qIGlnbm9yZWQgKi8KKwor
I2VuZGlmIC8vIFJBUElESlNPTl9ESUFHXyoKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8g
QysrMTEgZmVhdHVyZXMKKworI2lmbmRlZiBSQVBJREpTT05fSEFTX0NYWDExX1JWQUxVRV9SRUZT
CisjaWYgZGVmaW5lZChfX2NsYW5nX18pCisjZGVmaW5lIFJBUElESlNPTl9IQVNfQ1hYMTFfUlZB
TFVFX1JFRlMgX19oYXNfZmVhdHVyZShjeHhfcnZhbHVlX3JlZmVyZW5jZXMpCisjZWxpZiAoZGVm
aW5lZChSQVBJREpTT05fR05VQykgJiYgKFJBUElESlNPTl9HTlVDID49IFJBUElESlNPTl9WRVJT
SU9OX0NPREUoNCwzLDApKSAmJiBkZWZpbmVkKF9fR1hYX0VYUEVSSU1FTlRBTF9DWFgwWF9fKSkg
fHwgXAorICAgICAgKGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSID49IDE2MDApCisKKyNk
ZWZpbmUgUkFQSURKU09OX0hBU19DWFgxMV9SVkFMVUVfUkVGUyAxCisjZWxzZQorI2RlZmluZSBS
QVBJREpTT05fSEFTX0NYWDExX1JWQUxVRV9SRUZTIDAKKyNlbmRpZgorI2VuZGlmIC8vIFJBUElE
SlNPTl9IQVNfQ1hYMTFfUlZBTFVFX1JFRlMKKworI2lmbmRlZiBSQVBJREpTT05fSEFTX0NYWDEx
X05PRVhDRVBUCisjaWYgZGVmaW5lZChfX2NsYW5nX18pCisjZGVmaW5lIFJBUElESlNPTl9IQVNf
Q1hYMTFfTk9FWENFUFQgX19oYXNfZmVhdHVyZShjeHhfbm9leGNlcHQpCisjZWxpZiAoZGVmaW5l
ZChSQVBJREpTT05fR05VQykgJiYgKFJBUElESlNPTl9HTlVDID49IFJBUElESlNPTl9WRVJTSU9O
X0NPREUoNCw2LDApKSAmJiBkZWZpbmVkKF9fR1hYX0VYUEVSSU1FTlRBTF9DWFgwWF9fKSkKKy8v
ICAgIChkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+PSA/Pz8/KSAvLyBub3QgeWV0IHN1
cHBvcnRlZAorI2RlZmluZSBSQVBJREpTT05fSEFTX0NYWDExX05PRVhDRVBUIDEKKyNlbHNlCisj
ZGVmaW5lIFJBUElESlNPTl9IQVNfQ1hYMTFfTk9FWENFUFQgMAorI2VuZGlmCisjZW5kaWYKKyNp
ZiBSQVBJREpTT05fSEFTX0NYWDExX05PRVhDRVBUCisjZGVmaW5lIFJBUElESlNPTl9OT0VYQ0VQ
VCBub2V4Y2VwdAorI2Vsc2UKKyNkZWZpbmUgUkFQSURKU09OX05PRVhDRVBUIC8qIG5vZXhjZXB0
ICovCisjZW5kaWYgLy8gUkFQSURKU09OX0hBU19DWFgxMV9OT0VYQ0VQVAorCisvLyBubyBhdXRv
bWF0aWMgZGV0ZWN0aW9uLCB5ZXQKKyNpZm5kZWYgUkFQSURKU09OX0hBU19DWFgxMV9UWVBFVFJB
SVRTCisjZGVmaW5lIFJBUElESlNPTl9IQVNfQ1hYMTFfVFlQRVRSQUlUUyAwCisjZW5kaWYKKwor
Ly8hQGVuZGNvbmQKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gbmV3L2RlbGV0ZQorCisj
aWZuZGVmIFJBUElESlNPTl9ORVcKKy8vLyEgY3VzdG9taXphdGlvbiBwb2ludCBmb3IgZ2xvYmFs
IFxjIG5ldworI2RlZmluZSBSQVBJREpTT05fTkVXKHgpIG5ldyB4CisjZW5kaWYKKyNpZm5kZWYg
UkFQSURKU09OX0RFTEVURQorLy8vISBjdXN0b21pemF0aW9uIHBvaW50IGZvciBnbG9iYWwgXGMg
ZGVsZXRlCisjZGVmaW5lIFJBUElESlNPTl9ERUxFVEUoeCkgZGVsZXRlIHgKKyNlbmRpZgorCisv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBBbGxvY2F0b3JzIGFuZCBFbmNvZGluZ3MKKworI2lu
Y2x1ZGUgImFsbG9jYXRvcnMuaCIKKyNpbmNsdWRlICJlbmNvZGluZ3MuaCIKKworLyohIFxuYW1l
c3BhY2UgcmFwaWRqc29uCisgICAgXGJyaWVmIG1haW4gUmFwaWRKU09OIG5hbWVzcGFjZQorICAg
IFxzZWUgUkFQSURKU09OX05BTUVTUEFDRQorKi8KK1JBUElESlNPTl9OQU1FU1BBQ0VfQkVHSU4K
KworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gIFN0cmVhbQorCisvKiEgXGNsYXNzIHJhcGlk
anNvbjo6U3RyZWFtCisgICAgXGJyaWVmIENvbmNlcHQgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcg
Y2hhcmFjdGVycy4KKworICAgIEZvciByZWFkLW9ubHkgc3RyZWFtLCBubyBuZWVkIHRvIGltcGxl
bWVudCBQdXRCZWdpbigpLCBQdXQoKSwgRmx1c2goKSBhbmQgUHV0RW5kKCkuCisKKyAgICBGb3Ig
d3JpdGUtb25seSBzdHJlYW0sIG9ubHkgbmVlZCB0byBpbXBsZW1lbnQgUHV0KCkgYW5kIEZsdXNo
KCkuCisKK1xjb2RlCitjb25jZXB0IFN0cmVhbSB7CisgICAgdHlwZW5hbWUgQ2g7ICAgIC8vITwg
Q2hhcmFjdGVyIHR5cGUgb2YgdGhlIHN0cmVhbS4KKworICAgIC8vISBSZWFkIHRoZSBjdXJyZW50
IGNoYXJhY3RlciBmcm9tIHN0cmVhbSB3aXRob3V0IG1vdmluZyB0aGUgcmVhZCBjdXJzb3IuCisg
ICAgQ2ggUGVlaygpIGNvbnN0OworCisgICAgLy8hIFJlYWQgdGhlIGN1cnJlbnQgY2hhcmFjdGVy
IGZyb20gc3RyZWFtIGFuZCBtb3ZpbmcgdGhlIHJlYWQgY3Vyc29yIHRvIG5leHQgY2hhcmFjdGVy
LgorICAgIENoIFRha2UoKTsKKworICAgIC8vISBHZXQgdGhlIGN1cnJlbnQgcmVhZCBjdXJzb3Iu
CisgICAgLy8hIFxyZXR1cm4gTnVtYmVyIG9mIGNoYXJhY3RlcnMgcmVhZCBmcm9tIHN0YXJ0Lgor
ICAgIHNpemVfdCBUZWxsKCk7CisKKyAgICAvLyEgQmVnaW4gd3JpdGluZyBvcGVyYXRpb24gYXQg
dGhlIGN1cnJlbnQgcmVhZCBwb2ludGVyLgorICAgIC8vISBccmV0dXJuIFRoZSBiZWdpbiB3cml0
ZXIgcG9pbnRlci4KKyAgICBDaCogUHV0QmVnaW4oKTsKKworICAgIC8vISBXcml0ZSBhIGNoYXJh
Y3Rlci4KKyAgICB2b2lkIFB1dChDaCBjKTsKKworICAgIC8vISBGbHVzaCB0aGUgYnVmZmVyLgor
ICAgIHZvaWQgRmx1c2goKTsKKworICAgIC8vISBFbmQgdGhlIHdyaXRpbmcgb3BlcmF0aW9uLgor
ICAgIC8vISBccGFyYW0gYmVnaW4gVGhlIGJlZ2luIHdyaXRlIHBvaW50ZXIgcmV0dXJuZWQgYnkg
UHV0QmVnaW4oKS4KKyAgICAvLyEgXHJldHVybiBOdW1iZXIgb2YgY2hhcmFjdGVycyB3cml0dGVu
LgorICAgIHNpemVfdCBQdXRFbmQoQ2gqIGJlZ2luKTsKK30KK1xlbmRjb2RlCisqLworCisvLyEg
UHJvdmlkZXMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBmb3Igc3RyZWFtLgorLyohCisgICAgQnkg
dXNpbmcgdHJhaXRzIHBhdHRlcm4sIHRoaXMgdHlwZSBwcm92aWRlcyBhIGRlZmF1bHQgY29uZmln
dXJhdGlvbiBmb3Igc3RyZWFtLgorICAgIEZvciBjdXN0b20gc3RyZWFtLCB0aGlzIHR5cGUgY2Fu
IGJlIHNwZWNpYWxpemVkIGZvciBvdGhlciBjb25maWd1cmF0aW9uLgorICAgIFNlZSBURVNUKFJl
YWRlciwgQ3VzdG9tU3RyaW5nU3RyZWFtKSBpbiByZWFkZXJ0ZXN0LmNwcCBmb3IgZXhhbXBsZS4K
KyovCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJlYW0+CitzdHJ1Y3QgU3RyZWFtVHJhaXRzIHsKKyAg
ICAvLyEgV2hldGhlciB0byBtYWtlIGxvY2FsIGNvcHkgb2Ygc3RyZWFtIGZvciBvcHRpbWl6YXRp
b24gZHVyaW5nIHBhcnNpbmcuCisgICAgLyohCisgICAgICAgIEJ5IGRlZmF1bHQsIGZvciBzYWZl
dHksIHN0cmVhbXMgZG8gbm90IHVzZSBsb2NhbCBjb3B5IG9wdGltaXphdGlvbi4KKyAgICAgICAg
U3RyZWFtIHRoYXQgY2FuIGJlIGNvcGllZCBmYXN0IHNob3VsZCBzcGVjaWFsaXplIHRoaXMsIGxp
a2UgU3RyZWFtVHJhaXRzPFN0cmluZ1N0cmVhbT4uCisgICAgKi8KKyAgICBlbnVtIHsgY29weU9w
dGltaXphdGlvbiA9IDAgfTsKK307CisKKy8vISBQdXQgTiBjb3BpZXMgb2YgYSBjaGFyYWN0ZXIg
dG8gYSBzdHJlYW0uCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJlYW0sIHR5cGVuYW1lIENoPgoraW5s
aW5lIHZvaWQgUHV0TihTdHJlYW0mIHN0cmVhbSwgQ2ggYywgc2l6ZV90IG4pIHsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG47IGkrKykKKyAgICAgICAgc3RyZWFtLlB1dChjKTsKK30KKwor
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gU3RyaW5nU3RyZWFtCisKKy8vISBSZWFkLW9ubHkg
c3RyaW5nIHN0cmVhbS4KKy8qISBcbm90ZSBpbXBsZW1lbnRzIFN0cmVhbSBjb25jZXB0CisqLwor
dGVtcGxhdGUgPHR5cGVuYW1lIEVuY29kaW5nPgorc3RydWN0IEdlbmVyaWNTdHJpbmdTdHJlYW0g
eworICAgIHR5cGVkZWYgdHlwZW5hbWUgRW5jb2Rpbmc6OkNoIENoOworCisgICAgR2VuZXJpY1N0
cmluZ1N0cmVhbShjb25zdCBDaCAqc3JjKSA6IHNyY18oc3JjKSwgaGVhZF8oc3JjKSB7fQorCisg
ICAgQ2ggUGVlaygpIGNvbnN0IHsgcmV0dXJuICpzcmNfOyB9CisgICAgQ2ggVGFrZSgpIHsgcmV0
dXJuICpzcmNfKys7IH0KKyAgICBzaXplX3QgVGVsbCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PHNpemVfdD4oc3JjXyAtIGhlYWRfKTsgfQorCisgICAgQ2gqIFB1dEJlZ2luKCkgeyBSQVBJ
REpTT05fQVNTRVJUKGZhbHNlKTsgcmV0dXJuIDA7IH0KKyAgICB2b2lkIFB1dChDaCkgeyBSQVBJ
REpTT05fQVNTRVJUKGZhbHNlKTsgfQorICAgIHZvaWQgRmx1c2goKSB7IFJBUElESlNPTl9BU1NF
UlQoZmFsc2UpOyB9CisgICAgc2l6ZV90IFB1dEVuZChDaCopIHsgUkFQSURKU09OX0FTU0VSVChm
YWxzZSk7IHJldHVybiAwOyB9CisKKyAgICBjb25zdCBDaCogc3JjXzsgICAgIC8vITwgQ3VycmVu
dCByZWFkIHBvc2l0aW9uLgorICAgIGNvbnN0IENoKiBoZWFkXzsgICAgLy8hPCBPcmlnaW5hbCBo
ZWFkIG9mIHRoZSBzdHJpbmcuCit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRW5jb2Rpbmc+Citz
dHJ1Y3QgU3RyZWFtVHJhaXRzPEdlbmVyaWNTdHJpbmdTdHJlYW08RW5jb2Rpbmc+ID4geworICAg
IGVudW0geyBjb3B5T3B0aW1pemF0aW9uID0gMSB9OworfTsKKworLy8hIFN0cmluZyBzdHJlYW0g
d2l0aCBVVEY4IGVuY29kaW5nLgordHlwZWRlZiBHZW5lcmljU3RyaW5nU3RyZWFtPFVURjg8PiA+
IFN0cmluZ1N0cmVhbTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gSW5zaXR1U3RyaW5n
U3RyZWFtCisKKy8vISBBIHJlYWQtd3JpdGUgc3RyaW5nIHN0cmVhbS4KKy8qISBUaGlzIHN0cmlu
ZyBzdHJlYW0gaXMgcGFydGljdWxhcmx5IGRlc2lnbmVkIGZvciBpbi1zaXR1IHBhcnNpbmcuCisg
ICAgXG5vdGUgaW1wbGVtZW50cyBTdHJlYW0gY29uY2VwdAorKi8KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBFbmNvZGluZz4KK3N0cnVjdCBHZW5lcmljSW5zaXR1U3RyaW5nU3RyZWFtIHsKKyAgICB0eXBl
ZGVmIHR5cGVuYW1lIEVuY29kaW5nOjpDaCBDaDsKKworICAgIEdlbmVyaWNJbnNpdHVTdHJpbmdT
dHJlYW0oQ2ggKnNyYykgOiBzcmNfKHNyYyksIGRzdF8oMCksIGhlYWRfKHNyYykge30KKworICAg
IC8vIFJlYWQKKyAgICBDaCBQZWVrKCkgeyByZXR1cm4gKnNyY187IH0KKyAgICBDaCBUYWtlKCkg
eyByZXR1cm4gKnNyY18rKzsgfQorICAgIHNpemVfdCBUZWxsKCkgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8c2l6ZV90PihzcmNfIC0gaGVhZF8pOyB9CisKKyAgICAvLyBXcml0ZQorICAgIHZvaWQgUHV0
KENoIGMpIHsgUkFQSURKU09OX0FTU0VSVChkc3RfICE9IDApOyAqZHN0XysrID0gYzsgfQorCisg
ICAgQ2gqIFB1dEJlZ2luKCkgeyByZXR1cm4gZHN0XyA9IHNyY187IH0KKyAgICBzaXplX3QgUHV0
RW5kKENoKiBiZWdpbikgeyByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90Pihkc3RfIC0gYmVnaW4p
OyB9CisgICAgdm9pZCBGbHVzaCgpIHt9CisKKyAgICBDaCogUHVzaChzaXplX3QgY291bnQpIHsg
Q2gqIGJlZ2luID0gZHN0XzsgZHN0XyArPSBjb3VudDsgcmV0dXJuIGJlZ2luOyB9CisgICAgdm9p
ZCBQb3Aoc2l6ZV90IGNvdW50KSB7IGRzdF8gLT0gY291bnQ7IH0KKworICAgIENoKiBzcmNfOwor
ICAgIENoKiBkc3RfOworICAgIENoKiBoZWFkXzsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBF
bmNvZGluZz4KK3N0cnVjdCBTdHJlYW1UcmFpdHM8R2VuZXJpY0luc2l0dVN0cmluZ1N0cmVhbTxF
bmNvZGluZz4gPiB7CisgICAgZW51bSB7IGNvcHlPcHRpbWl6YXRpb24gPSAxIH07Cit9OworCisv
LyEgSW5zaXR1IHN0cmluZyBzdHJlYW0gd2l0aCBVVEY4IGVuY29kaW5nLgordHlwZWRlZiBHZW5l
cmljSW5zaXR1U3RyaW5nU3RyZWFtPFVURjg8PiA+IEluc2l0dVN0cmluZ1N0cmVhbTsKKworLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLworLy8gVHlwZQorCisvLyEgVHlwZSBvZiBKU09OIHZhbHVlCitl
bnVtIFR5cGUgeworICAgIGtOdWxsVHlwZSA9IDAsICAgICAgLy8hPCBudWxsCisgICAga0ZhbHNl
VHlwZSA9IDEsICAgICAvLyE8IGZhbHNlCisgICAga1RydWVUeXBlID0gMiwgICAgICAvLyE8IHRy
dWUKKyAgICBrT2JqZWN0VHlwZSA9IDMsICAgIC8vITwgb2JqZWN0CisgICAga0FycmF5VHlwZSA9
IDQsICAgICAvLyE8IGFycmF5IAorICAgIGtTdHJpbmdUeXBlID0gNSwgICAgLy8hPCBzdHJpbmcK
KyAgICBrTnVtYmVyVHlwZSA9IDYgICAgIC8vITwgbnVtYmVyCit9OworCitSQVBJREpTT05fTkFN
RVNQQUNFX0VORAorCisjZW5kaWYgLy8gUkFQSURKU09OX1JBUElESlNPTl9IXwpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNs
dWRlL3JhcGlkanNvbi9yZWFkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL3Jl
YWRlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vcmVhZGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxNDQ0IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEgTWlsbyBZ
aXAKKy8vCisvLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg
dG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisvLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh
c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAor
Ly8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0
IGxpbWl0YXRpb24gdGhlIHJpZ2h0cworLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw
dWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorLy8gY29waWVzIG9m
IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJl
IGlzCisvLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zOgorLy8KKy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p
c3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisvLyBhbGwgY29waWVzIG9yIHN1YnN0
YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKy8vCisvLyBUSEUgU09GVFdBUkUgSVMg
UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP
UgorLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFksCisvLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKy8vIEFVVEhPUlMg
T1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1Ig
T1RIRVIKKy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP
UlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisvLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElP
TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCisvLyBU
SEUgU09GVFdBUkUuCisKKyNpZm5kZWYgUkFQSURKU09OX1JFQURFUl9IXworI2RlZmluZSBSQVBJ
REpTT05fUkVBREVSX0hfCisKKy8qISBcZmlsZSByZWFkZXIuaCAqLworCisjaW5jbHVkZSAicmFw
aWRqc29uLmgiCisjaW5jbHVkZSAiZW5jb2RpbmdzLmgiCisjaW5jbHVkZSAiaW50ZXJuYWwvbWV0
YS5oIgorI2luY2x1ZGUgImludGVybmFsL3N0YWNrLmgiCisjaW5jbHVkZSAiaW50ZXJuYWwvc3Ry
dG9kLmgiCisKKyNpZiBkZWZpbmVkKFJBUElESlNPTl9TSU1EKSAmJiBkZWZpbmVkKF9NU0NfVkVS
KQorI2luY2x1ZGUgPGludHJpbi5oPgorI3ByYWdtYSBpbnRyaW5zaWMoX0JpdFNjYW5Gb3J3YXJk
KQorI2VuZGlmCisjaWZkZWYgUkFQSURKU09OX1NTRTQyCisjaW5jbHVkZSA8bm1taW50cmluLmg+
CisjZWxpZiBkZWZpbmVkKFJBUElESlNPTl9TU0UyKQorI2luY2x1ZGUgPGVtbWludHJpbi5oPgor
I2VuZGlmCisKKyNpZmRlZiBfTVNDX1ZFUgorUkFQSURKU09OX0RJQUdfUFVTSAorUkFQSURKU09O
X0RJQUdfT0ZGKDQxMjcpICAvLyBjb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50CitS
QVBJREpTT05fRElBR19PRkYoNDcwMikgIC8vIHVucmVhY2hhYmxlIGNvZGUKKyNlbmRpZgorCisj
aWZkZWYgX19HTlVDX18KK1JBUElESlNPTl9ESUFHX1BVU0gKK1JBUElESlNPTl9ESUFHX09GRihl
ZmZjKyspCisjZW5kaWYKKworLy8hQGNvbmQgUkFQSURKU09OX0hJRERFTl9GUk9NX0RPWFlHRU4K
KyNkZWZpbmUgUkFQSURKU09OX05PVEhJTkcgLyogZGVsaWJlcmF0ZWx5IGVtcHR5ICovCisjaWZu
ZGVmIFJBUElESlNPTl9QQVJTRV9FUlJPUl9FQVJMWV9SRVRVUk4KKyNkZWZpbmUgUkFQSURKU09O
X1BBUlNFX0VSUk9SX0VBUkxZX1JFVFVSTih2YWx1ZSkgXAorICAgIFJBUElESlNPTl9NVUxUSUxJ
TkVNQUNST19CRUdJTiBcCisgICAgaWYgKEhhc1BhcnNlRXJyb3IoKSkgeyByZXR1cm4gdmFsdWU7
IH0gXAorICAgIFJBUElESlNPTl9NVUxUSUxJTkVNQUNST19FTkQKKyNlbmRpZgorI2RlZmluZSBS
QVBJREpTT05fUEFSU0VfRVJST1JfRUFSTFlfUkVUVVJOX1ZPSUQgXAorICAgIFJBUElESlNPTl9Q
QVJTRV9FUlJPUl9FQVJMWV9SRVRVUk4oUkFQSURKU09OX05PVEhJTkcpCisvLyFAZW5kY29uZAor
CisvKiEgXGRlZiBSQVBJREpTT05fUEFSU0VfRVJST1JfTk9SRVRVUk4KKyAgICBcaW5ncm91cCBS
QVBJREpTT05fRVJST1JTCisgICAgXGJyaWVmIE1hY3JvIHRvIGluZGljYXRlIGEgcGFyc2UgZXJy
b3IuCisgICAgXHBhcmFtIHBhcnNlRXJyb3JDb2RlIFxyZWYgcmFwaWRqc29uOjpQYXJzZUVycm9y
Q29kZSBvZiB0aGUgZXJyb3IKKyAgICBccGFyYW0gb2Zmc2V0ICBwb3NpdGlvbiBvZiB0aGUgZXJy
b3IgaW4gSlNPTiBpbnB1dCAoXGMgc2l6ZV90KQorCisgICAgVGhpcyBtYWNyb3MgY2FuIGJlIHVz
ZWQgYXMgYSBjdXN0b21pemF0aW9uIHBvaW50IGZvciB0aGUgaW50ZXJuYWwKKyAgICBlcnJvciBo
YW5kbGluZyBtZWNoYW5pc20gb2YgUmFwaWRKU09OLgorCisgICAgQSBjb21tb24gdXNhZ2UgbW9k
ZWwgaXMgdG8gdGhyb3cgYW4gZXhjZXB0aW9uIGluc3RlYWQgb2YgcmVxdWlyaW5nIHRoZQorICAg
IGNhbGxlciB0byBleHBsaWNpdGx5IGNoZWNrIHRoZSBccmVmIHJhcGlkanNvbjo6R2VuZXJpY1Jl
YWRlcjo6UGFyc2UncworICAgIHJldHVybiB2YWx1ZToKKworICAgIFxjb2RlCisgICAgI2RlZmlu
ZSBSQVBJREpTT05fUEFSU0VfRVJST1JfTk9SRVRVUk4ocGFyc2VFcnJvckNvZGUsb2Zmc2V0KSBc
CisgICAgICAgdGhyb3cgUGFyc2VFeGNlcHRpb24ocGFyc2VFcnJvckNvZGUsICNwYXJzZUVycm9y
Q29kZSwgb2Zmc2V0KQorCisgICAgI2luY2x1ZGUgPHN0ZGV4Y2VwdD4gICAgICAgICAgICAgICAv
LyBzdGQ6OnJ1bnRpbWVfZXJyb3IKKyAgICAjaW5jbHVkZSAicmFwaWRqc29uL2Vycm9yL2Vycm9y
LmgiIC8vIHJhcGlkanNvbjo6UGFyc2VSZXN1bHQKKworICAgIHN0cnVjdCBQYXJzZUV4Y2VwdGlv
biA6IHN0ZDo6cnVudGltZV9lcnJvciwgcmFwaWRqc29uOjpQYXJzZVJlc3VsdCB7CisgICAgICBQ
YXJzZUV4Y2VwdGlvbihyYXBpZGpzb246OlBhcnNlRXJyb3JDb2RlIGNvZGUsIGNvbnN0IGNoYXIq
IG1zZywgc2l6ZV90IG9mZnNldCkKKyAgICAgICAgOiBzdGQ6OnJ1bnRpbWVfZXJyb3IobXNnKSwg
UGFyc2VSZXN1bHQoY29kZSwgb2Zmc2V0KSB7fQorICAgIH07CisKKyAgICAjaW5jbHVkZSAicmFw
aWRqc29uL3JlYWRlci5oIgorICAgIFxlbmRjb2RlCisKKyAgICBcc2VlIFJBUElESlNPTl9QQVJT
RV9FUlJPUiwgcmFwaWRqc29uOjpHZW5lcmljUmVhZGVyOjpQYXJzZQorICovCisjaWZuZGVmIFJB
UElESlNPTl9QQVJTRV9FUlJPUl9OT1JFVFVSTgorI2RlZmluZSBSQVBJREpTT05fUEFSU0VfRVJS
T1JfTk9SRVRVUk4ocGFyc2VFcnJvckNvZGUsIG9mZnNldCkgXAorICAgIFJBUElESlNPTl9NVUxU
SUxJTkVNQUNST19CRUdJTiBcCisgICAgUkFQSURKU09OX0FTU0VSVCghSGFzUGFyc2VFcnJvcigp
KTsgLyogRXJyb3IgY2FuIG9ubHkgYmUgYXNzaWduZWQgb25jZSAqLyBcCisgICAgU2V0UGFyc2VF
cnJvcihwYXJzZUVycm9yQ29kZSwgb2Zmc2V0KTsgXAorICAgIFJBUElESlNPTl9NVUxUSUxJTkVN
QUNST19FTkQKKyNlbmRpZgorCisvKiEgXGRlZiBSQVBJREpTT05fUEFSU0VfRVJST1IKKyAgICBc
aW5ncm91cCBSQVBJREpTT05fRVJST1JTCisgICAgXGJyaWVmIChJbnRlcm5hbCkgbWFjcm8gdG8g
aW5kaWNhdGUgYW5kIGhhbmRsZSBhIHBhcnNlIGVycm9yLgorICAgIFxwYXJhbSBwYXJzZUVycm9y
Q29kZSBccmVmIHJhcGlkanNvbjo6UGFyc2VFcnJvckNvZGUgb2YgdGhlIGVycm9yCisgICAgXHBh
cmFtIG9mZnNldCAgcG9zaXRpb24gb2YgdGhlIGVycm9yIGluIEpTT04gaW5wdXQgKFxjIHNpemVf
dCkKKworICAgIEludm9rZXMgUkFQSURKU09OX1BBUlNFX0VSUk9SX05PUkVUVVJOIGFuZCBzdG9w
cyB0aGUgcGFyc2luZy4KKworICAgIFxzZWUgUkFQSURKU09OX1BBUlNFX0VSUk9SX05PUkVUVVJO
CisgICAgXGhpZGVpbml0aWFsaXplcgorICovCisjaWZuZGVmIFJBUElESlNPTl9QQVJTRV9FUlJP
UgorI2RlZmluZSBSQVBJREpTT05fUEFSU0VfRVJST1IocGFyc2VFcnJvckNvZGUsIG9mZnNldCkg
XAorICAgIFJBUElESlNPTl9NVUxUSUxJTkVNQUNST19CRUdJTiBcCisgICAgUkFQSURKU09OX1BB
UlNFX0VSUk9SX05PUkVUVVJOKHBhcnNlRXJyb3JDb2RlLCBvZmZzZXQpOyBcCisgICAgUkFQSURK
U09OX1BBUlNFX0VSUk9SX0VBUkxZX1JFVFVSTl9WT0lEOyBcCisgICAgUkFQSURKU09OX01VTFRJ
TElORU1BQ1JPX0VORAorI2VuZGlmCisKKyNpbmNsdWRlICJlcnJvci9lcnJvci5oIiAvLyBQYXJz
ZUVycm9yQ29kZSwgUGFyc2VSZXN1bHQKKworUkFQSURKU09OX05BTUVTUEFDRV9CRUdJTgorCisv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBQYXJzZUZsYWcKKworLyohIFxkZWYgUkFQSURKU09O
X1BBUlNFX0RFRkFVTFRfRkxBR1MgCisgICAgXGluZ3JvdXAgUkFQSURKU09OX0NPTkZJRworICAg
IFxicmllZiBVc2VyLWRlZmluZWQga1BhcnNlRGVmYXVsdEZsYWdzIGRlZmluaXRpb24uCisKKyAg
ICBVc2VyIGNhbiBkZWZpbmUgdGhpcyBhcyBhbnkgXGMgUGFyc2VGbGFnIGNvbWJpbmF0aW9ucy4K
KyovCisjaWZuZGVmIFJBUElESlNPTl9QQVJTRV9ERUZBVUxUX0ZMQUdTCisjZGVmaW5lIFJBUElE
SlNPTl9QQVJTRV9ERUZBVUxUX0ZMQUdTIGtQYXJzZU5vRmxhZ3MKKyNlbmRpZgorCisvLyEgQ29t
YmluYXRpb24gb2YgcGFyc2VGbGFncworLyohIFxzZWUgUmVhZGVyOjpQYXJzZSwgRG9jdW1lbnQ6
OlBhcnNlLCBEb2N1bWVudDo6UGFyc2VJbnNpdHUsIERvY3VtZW50OjpQYXJzZVN0cmVhbQorICov
CitlbnVtIFBhcnNlRmxhZyB7CisgICAga1BhcnNlTm9GbGFncyA9IDAsICAgICAgICAgICAgICAv
LyE8IE5vIGZsYWdzIGFyZSBzZXQuCisgICAga1BhcnNlSW5zaXR1RmxhZyA9IDEsICAgICAgICAg
ICAvLyE8IEluLXNpdHUoZGVzdHJ1Y3RpdmUpIHBhcnNpbmcuCisgICAga1BhcnNlVmFsaWRhdGVF
bmNvZGluZ0ZsYWcgPSAyLCAvLyE8IFZhbGlkYXRlIGVuY29kaW5nIG9mIEpTT04gc3RyaW5ncy4K
KyAgICBrUGFyc2VJdGVyYXRpdmVGbGFnID0gNCwgICAgICAgIC8vITwgSXRlcmF0aXZlKGNvbnN0
YW50IGNvbXBsZXhpdHkgaW4gdGVybXMgb2YgZnVuY3Rpb24gY2FsbCBzdGFjayBzaXplKSBwYXJz
aW5nLgorICAgIGtQYXJzZVN0b3BXaGVuRG9uZUZsYWcgPSA4LCAgICAgLy8hPCBBZnRlciBwYXJz
aW5nIGEgY29tcGxldGUgSlNPTiByb290IGZyb20gc3RyZWFtLCBzdG9wIGZ1cnRoZXIgcHJvY2Vz
c2luZyB0aGUgcmVzdCBvZiBzdHJlYW0uIFdoZW4gdGhpcyBmbGFnIGlzIHVzZWQsIHBhcnNlciB3
aWxsIG5vdCBnZW5lcmF0ZSBrUGFyc2VFcnJvckRvY3VtZW50Um9vdE5vdFNpbmd1bGFyIGVycm9y
LgorICAgIGtQYXJzZUZ1bGxQcmVjaXNpb25GbGFnID0gMTYsICAgLy8hPCBQYXJzZSBudW1iZXIg
aW4gZnVsbCBwcmVjaXNpb24gKGJ1dCBzbG93ZXIpLgorICAgIGtQYXJzZURlZmF1bHRGbGFncyA9
IFJBUElESlNPTl9QQVJTRV9ERUZBVUxUX0ZMQUdTICAvLyE8IERlZmF1bHQgcGFyc2UgZmxhZ3Mu
IENhbiBiZSBjdXN0b21pemVkIGJ5IGRlZmluaW5nIFJBUElESlNPTl9QQVJTRV9ERUZBVUxUX0ZM
QUdTCit9OworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBIYW5kbGVyCisKKy8qISBcY2xh
c3MgcmFwaWRqc29uOjpIYW5kbGVyCisgICAgXGJyaWVmIENvbmNlcHQgZm9yIHJlY2VpdmluZyBl
dmVudHMgZnJvbSBHZW5lcmljUmVhZGVyIHVwb24gcGFyc2luZy4KKyAgICBUaGUgZnVuY3Rpb25z
IHJldHVybiB0cnVlIGlmIG5vIGVycm9yIG9jY3Vycy4gSWYgdGhleSByZXR1cm4gZmFsc2UsIAor
ICAgIHRoZSBldmVudCBwdWJsaXNoZXIgc2hvdWxkIHRlcm1pbmF0ZSB0aGUgcHJvY2Vzcy4KK1xj
b2RlCitjb25jZXB0IEhhbmRsZXIgeworICAgIHR5cGVuYW1lIENoOworCisgICAgYm9vbCBOdWxs
KCk7CisgICAgYm9vbCBCb29sKGJvb2wgYik7CisgICAgYm9vbCBJbnQoaW50IGkpOworICAgIGJv
b2wgVWludCh1bnNpZ25lZCBpKTsKKyAgICBib29sIEludDY0KGludDY0X3QgaSk7CisgICAgYm9v
bCBVaW50NjQodWludDY0X3QgaSk7CisgICAgYm9vbCBEb3VibGUoZG91YmxlIGQpOworICAgIGJv
b2wgU3RyaW5nKGNvbnN0IENoKiBzdHIsIFNpemVUeXBlIGxlbmd0aCwgYm9vbCBjb3B5KTsKKyAg
ICBib29sIFN0YXJ0T2JqZWN0KCk7CisgICAgYm9vbCBLZXkoY29uc3QgQ2gqIHN0ciwgU2l6ZVR5
cGUgbGVuZ3RoLCBib29sIGNvcHkpOworICAgIGJvb2wgRW5kT2JqZWN0KFNpemVUeXBlIG1lbWJl
ckNvdW50KTsKKyAgICBib29sIFN0YXJ0QXJyYXkoKTsKKyAgICBib29sIEVuZEFycmF5KFNpemVU
eXBlIGVsZW1lbnRDb3VudCk7Cit9OworXGVuZGNvZGUKKyovCisvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCisvLyBCYXNlUmVhZGVySGFuZGxlcgorCisvLyEgRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBv
ZiBIYW5kbGVyLgorLyohIFRoaXMgY2FuIGJlIHVzZWQgYXMgYmFzZSBjbGFzcyBvZiBhbnkgcmVh
ZGVyIGhhbmRsZXIuCisgICAgXG5vdGUgaW1wbGVtZW50cyBIYW5kbGVyIGNvbmNlcHQKKyovCit0
ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGluZyA9IFVURjg8PiwgdHlwZW5hbWUgRGVyaXZlZCA9IHZv
aWQ+CitzdHJ1Y3QgQmFzZVJlYWRlckhhbmRsZXIgeworICAgIHR5cGVkZWYgdHlwZW5hbWUgRW5j
b2Rpbmc6OkNoIENoOworCisgICAgdHlwZWRlZiB0eXBlbmFtZSBpbnRlcm5hbDo6U2VsZWN0SWY8
aW50ZXJuYWw6OklzU2FtZTxEZXJpdmVkLCB2b2lkPiwgQmFzZVJlYWRlckhhbmRsZXIsIERlcml2
ZWQ+OjpUeXBlIE92ZXJyaWRlOworCisgICAgYm9vbCBEZWZhdWx0KCkgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIGJvb2wgTnVsbCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE92ZXJyaWRlJj4oKnRoaXMp
LkRlZmF1bHQoKTsgfQorICAgIGJvb2wgQm9vbChib29sKSB7IHJldHVybiBzdGF0aWNfY2FzdDxP
dmVycmlkZSY+KCp0aGlzKS5EZWZhdWx0KCk7IH0KKyAgICBib29sIEludChpbnQpIHsgcmV0dXJu
IHN0YXRpY19jYXN0PE92ZXJyaWRlJj4oKnRoaXMpLkRlZmF1bHQoKTsgfQorICAgIGJvb2wgVWlu
dCh1bnNpZ25lZCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8T3ZlcnJpZGUmPigqdGhpcykuRGVmYXVs
dCgpOyB9CisgICAgYm9vbCBJbnQ2NChpbnQ2NF90KSB7IHJldHVybiBzdGF0aWNfY2FzdDxPdmVy
cmlkZSY+KCp0aGlzKS5EZWZhdWx0KCk7IH0KKyAgICBib29sIFVpbnQ2NCh1aW50NjRfdCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8T3ZlcnJpZGUmPigqdGhpcykuRGVmYXVsdCgpOyB9CisgICAgYm9v
bCBEb3VibGUoZG91YmxlKSB7IHJldHVybiBzdGF0aWNfY2FzdDxPdmVycmlkZSY+KCp0aGlzKS5E
ZWZhdWx0KCk7IH0KKyAgICBib29sIFN0cmluZyhjb25zdCBDaCosIFNpemVUeXBlLCBib29sKSB7
IHJldHVybiBzdGF0aWNfY2FzdDxPdmVycmlkZSY+KCp0aGlzKS5EZWZhdWx0KCk7IH0KKyAgICBi
b29sIFN0YXJ0T2JqZWN0KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8T3ZlcnJpZGUmPigqdGhpcyku
RGVmYXVsdCgpOyB9CisgICAgYm9vbCBLZXkoY29uc3QgQ2gqIHN0ciwgU2l6ZVR5cGUgbGVuLCBi
b29sIGNvcHkpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE92ZXJyaWRlJj4oKnRoaXMpLlN0cmluZyhz
dHIsIGxlbiwgY29weSk7IH0KKyAgICBib29sIEVuZE9iamVjdChTaXplVHlwZSkgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8T3ZlcnJpZGUmPigqdGhpcykuRGVmYXVsdCgpOyB9CisgICAgYm9vbCBTdGFy
dEFycmF5KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8T3ZlcnJpZGUmPigqdGhpcykuRGVmYXVsdCgp
OyB9CisgICAgYm9vbCBFbmRBcnJheShTaXplVHlwZSkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8T3Zl
cnJpZGUmPigqdGhpcykuRGVmYXVsdCgpOyB9Cit9OworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
CisvLyBTdHJlYW1Mb2NhbENvcHkKKworbmFtZXNwYWNlIGludGVybmFsIHsKKwordGVtcGxhdGU8
dHlwZW5hbWUgU3RyZWFtLCBpbnQgPSBTdHJlYW1UcmFpdHM8U3RyZWFtPjo6Y29weU9wdGltaXph
dGlvbj4KK2NsYXNzIFN0cmVhbUxvY2FsQ29weTsKKworLy8hIERvIGNvcHkgb3B0aW1pemF0aW9u
LgordGVtcGxhdGU8dHlwZW5hbWUgU3RyZWFtPgorY2xhc3MgU3RyZWFtTG9jYWxDb3B5PFN0cmVh
bSwgMT4geworcHVibGljOgorICAgIFN0cmVhbUxvY2FsQ29weShTdHJlYW0mIG9yaWdpbmFsKSA6
IHMob3JpZ2luYWwpLCBvcmlnaW5hbF8ob3JpZ2luYWwpIHt9CisgICAgflN0cmVhbUxvY2FsQ29w
eSgpIHsgb3JpZ2luYWxfID0gczsgfQorCisgICAgU3RyZWFtIHM7CisKK3ByaXZhdGU6CisgICAg
U3RyZWFtTG9jYWxDb3B5JiBvcGVyYXRvcj0oY29uc3QgU3RyZWFtTG9jYWxDb3B5JikgLyogPSBk
ZWxldGUgKi87CisKKyAgICBTdHJlYW0mIG9yaWdpbmFsXzsKK307CisKKy8vISBLZWVwIHJlZmVy
ZW5jZS4KK3RlbXBsYXRlPHR5cGVuYW1lIFN0cmVhbT4KK2NsYXNzIFN0cmVhbUxvY2FsQ29weTxT
dHJlYW0sIDA+IHsKK3B1YmxpYzoKKyAgICBTdHJlYW1Mb2NhbENvcHkoU3RyZWFtJiBvcmlnaW5h
bCkgOiBzKG9yaWdpbmFsKSB7fQorCisgICAgU3RyZWFtJiBzOworCitwcml2YXRlOgorICAgIFN0
cmVhbUxvY2FsQ29weSYgb3BlcmF0b3I9KGNvbnN0IFN0cmVhbUxvY2FsQ29weSYpIC8qID0gZGVs
ZXRlICovOworfTsKKworfSAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKKworLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLworLy8gU2tpcFdoaXRlc3BhY2UKKworLy8hIFNraXAgdGhlIEpTT04gd2hpdGUgc3Bh
Y2VzIGluIGEgc3RyZWFtLgorLyohIFxwYXJhbSBpcyBBIGlucHV0IHN0cmVhbSBmb3Igc2tpcHBp
bmcgd2hpdGUgc3BhY2VzLgorICAgIFxub3RlIFRoaXMgZnVuY3Rpb24gaGFzIFNTRTIvU1NFNC4y
IHNwZWNpYWxpemF0aW9uLgorKi8KK3RlbXBsYXRlPHR5cGVuYW1lIElucHV0U3RyZWFtPgordm9p
ZCBTa2lwV2hpdGVzcGFjZShJbnB1dFN0cmVhbSYgaXMpIHsKKyAgICBpbnRlcm5hbDo6U3RyZWFt
TG9jYWxDb3B5PElucHV0U3RyZWFtPiBjb3B5KGlzKTsKKyAgICBJbnB1dFN0cmVhbSYgcyhjb3B5
LnMpOworCisgICAgd2hpbGUgKHMuUGVlaygpID09ICcgJyB8fCBzLlBlZWsoKSA9PSAnXG4nIHx8
IHMuUGVlaygpID09ICdccicgfHwgcy5QZWVrKCkgPT0gJ1x0JykKKyAgICAgICAgcy5UYWtlKCk7
Cit9CisKKyNpZmRlZiBSQVBJREpTT05fU1NFNDIKKy8vISBTa2lwIHdoaXRlc3BhY2Ugd2l0aCBT
U0UgNC4yIHBjbXBpc3RybSBpbnN0cnVjdGlvbiwgdGVzdGluZyAxNiA4LWJ5dGUgY2hhcmFjdGVy
cyBhdCBvbmNlLgoraW5saW5lIGNvbnN0IGNoYXIgKlNraXBXaGl0ZXNwYWNlX1NJTUQoY29uc3Qg
Y2hhciogcCkgeworCS8vIEZhc3QgcmV0dXJuIGZvciBzaW5nbGUgbm9uLXdoaXRlc3BhY2UKKwlp
ZiAoKnAgPT0gJyAnIHx8ICpwID09ICdcbicgfHwgKnAgPT0gJ1xyJyB8fCAqcCA9PSAnXHQnKQor
CQkrK3A7CisJZWxzZQorCQlyZXR1cm4gcDsKKworCS8vIDE2LWJ5dGUgYWxpZ24gdG8gdGhlIG5l
eHQgYm91bmRhcnkKKwljb25zdCBjaGFyKiBuZXh0QWxpZ25lZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KChyZWludGVycHJldF9jYXN0PHNpemVfdD4ocCkgKyAxNSkgJiB+MTUpOwor
CXdoaWxlIChwICE9IG5leHRBbGlnbmVkKQorCQlpZiAoKnAgPT0gJyAnIHx8ICpwID09ICdcbicg
fHwgKnAgPT0gJ1xyJyB8fCAqcCA9PSAnXHQnKQorCQkJKytwOworCQllbHNlCisJCQlyZXR1cm4g
cDsKKworICAgIC8vIFRoZSByZXN0IG9mIHN0cmluZyB1c2luZyBTSU1ECisJc3RhdGljIGNvbnN0
IGNoYXIgd2hpdGVzcGFjZVsxNl0gPSAiIFxuXHJcdCI7CisJY29uc3QgX19tMTI4aSB3ID0gX21t
X2xvYWR1X3NpMTI4KChjb25zdCBfX20xMjhpICopJndoaXRlc3BhY2VbMF0pOworCisgICAgZm9y
ICg7OyBwICs9IDE2KSB7CisgICAgICAgIGNvbnN0IF9fbTEyOGkgcyA9IF9tbV9sb2FkX3NpMTI4
KChjb25zdCBfX20xMjhpICopcCk7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHIgPSBfbW1fY3Z0
c2kxMjhfc2kzMihfbW1fY21waXN0cm0odywgcywgX1NJRERfVUJZVEVfT1BTIHwgX1NJRERfQ01Q
X0VRVUFMX0FOWSB8IF9TSUREX0JJVF9NQVNLIHwgX1NJRERfTkVHQVRJVkVfUE9MQVJJVFkpKTsK
KyAgICAgICAgaWYgKHIgIT0gMCkgeyAgIC8vIHNvbWUgb2YgY2hhcmFjdGVycyBpcyBub24td2hp
dGVzcGFjZQorI2lmZGVmIF9NU0NfVkVSICAgICAgICAgLy8gRmluZCB0aGUgaW5kZXggb2YgZmly
c3Qgbm9uLXdoaXRlc3BhY2UKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0OworICAg
ICAgICAgICAgX0JpdFNjYW5Gb3J3YXJkKCZvZmZzZXQsIHIpOworICAgICAgICAgICAgcmV0dXJu
IHAgKyBvZmZzZXQ7CisjZWxzZQorICAgICAgICAgICAgcmV0dXJuIHAgKyBfX2J1aWx0aW5fZmZz
KHIpIC0gMTsKKyNlbmRpZgorICAgICAgICB9CisgICAgfQorfQorCisjZWxpZiBkZWZpbmVkKFJB
UElESlNPTl9TU0UyKQorCisvLyEgU2tpcCB3aGl0ZXNwYWNlIHdpdGggU1NFMiBpbnN0cnVjdGlv
bnMsIHRlc3RpbmcgMTYgOC1ieXRlIGNoYXJhY3RlcnMgYXQgb25jZS4KK2lubGluZSBjb25zdCBj
aGFyICpTa2lwV2hpdGVzcGFjZV9TSU1EKGNvbnN0IGNoYXIqIHApIHsKKwkvLyBGYXN0IHJldHVy
biBmb3Igc2luZ2xlIG5vbi13aGl0ZXNwYWNlCisJaWYgKCpwID09ICcgJyB8fCAqcCA9PSAnXG4n
IHx8ICpwID09ICdccicgfHwgKnAgPT0gJ1x0JykKKwkJKytwOworCWVsc2UKKwkJcmV0dXJuIHA7
CisKKyAgICAvLyAxNi1ieXRlIGFsaWduIHRvIHRoZSBuZXh0IGJvdW5kYXJ5CisJY29uc3QgY2hh
ciogbmV4dEFsaWduZWQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPigocmVpbnRlcnBy
ZXRfY2FzdDxzaXplX3Q+KHApICsgMTUpICYgfjE1KTsKKwl3aGlsZSAocCAhPSBuZXh0QWxpZ25l
ZCkKKwkJaWYgKCpwID09ICcgJyB8fCAqcCA9PSAnXG4nIHx8ICpwID09ICdccicgfHwgKnAgPT0g
J1x0JykKKwkJCSsrcDsKKwkJZWxzZQorCQkJcmV0dXJuIHA7CisKKyAgICAvLyBUaGUgcmVzdCBv
ZiBzdHJpbmcKKwlzdGF0aWMgY29uc3QgY2hhciB3aGl0ZXNwYWNlc1s0XVsxN10gPSB7CisJCSIg
ICAgICAgICAgICAgICAgIiwKKwkJIlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuIiwK
KwkJIlxyXHJcclxyXHJcclxyXHJcclxyXHJcclxyXHJcclxyIiwKKwkJIlx0XHRcdFx0XHRcdFx0
XHRcdFx0XHRcdFx0XHRcdFx0In07CisKKwkJY29uc3QgX19tMTI4aSB3MCA9IF9tbV9sb2FkdV9z
aTEyOCgoY29uc3QgX19tMTI4aSAqKSZ3aGl0ZXNwYWNlc1swXVswXSk7CisJCWNvbnN0IF9fbTEy
OGkgdzEgPSBfbW1fbG9hZHVfc2kxMjgoKGNvbnN0IF9fbTEyOGkgKikmd2hpdGVzcGFjZXNbMV1b
MF0pOworCQljb25zdCBfX20xMjhpIHcyID0gX21tX2xvYWR1X3NpMTI4KChjb25zdCBfX20xMjhp
ICopJndoaXRlc3BhY2VzWzJdWzBdKTsKKwkJY29uc3QgX19tMTI4aSB3MyA9IF9tbV9sb2FkdV9z
aTEyOCgoY29uc3QgX19tMTI4aSAqKSZ3aGl0ZXNwYWNlc1szXVswXSk7CisKKyAgICBmb3IgKDs7
IHAgKz0gMTYpIHsKKyAgICAgICAgY29uc3QgX19tMTI4aSBzID0gX21tX2xvYWRfc2kxMjgoKGNv
bnN0IF9fbTEyOGkgKilwKTsKKyAgICAgICAgX19tMTI4aSB4ID0gX21tX2NtcGVxX2VwaTgocywg
dzApOworICAgICAgICB4ID0gX21tX29yX3NpMTI4KHgsIF9tbV9jbXBlcV9lcGk4KHMsIHcxKSk7
CisgICAgICAgIHggPSBfbW1fb3Jfc2kxMjgoeCwgX21tX2NtcGVxX2VwaTgocywgdzIpKTsKKyAg
ICAgICAgeCA9IF9tbV9vcl9zaTEyOCh4LCBfbW1fY21wZXFfZXBpOChzLCB3MykpOworICAgICAg
ICB1bnNpZ25lZCBzaG9ydCByID0gKHVuc2lnbmVkIHNob3J0KX5fbW1fbW92ZW1hc2tfZXBpOCh4
KTsKKyAgICAgICAgaWYgKHIgIT0gMCkgeyAgIC8vIHNvbWUgb2YgY2hhcmFjdGVycyBtYXkgYmUg
bm9uLXdoaXRlc3BhY2UKKyNpZmRlZiBfTVNDX1ZFUiAgICAgICAgIC8vIEZpbmQgdGhlIGluZGV4
IG9mIGZpcnN0IG5vbi13aGl0ZXNwYWNlCisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG9mZnNl
dDsKKyAgICAgICAgICAgIF9CaXRTY2FuRm9yd2FyZCgmb2Zmc2V0LCByKTsKKyAgICAgICAgICAg
IHJldHVybiBwICsgb2Zmc2V0OworI2Vsc2UKKyAgICAgICAgICAgIHJldHVybiBwICsgX19idWls
dGluX2ZmcyhyKSAtIDE7CisjZW5kaWYKKyAgICAgICAgfQorICAgIH0KK30KKworI2VuZGlmIC8v
IFJBUElESlNPTl9TU0UyCisKKyNpZmRlZiBSQVBJREpTT05fU0lNRAorLy8hIFRlbXBsYXRlIGZ1
bmN0aW9uIHNwZWNpYWxpemF0aW9uIGZvciBJbnNpdHVTdHJpbmdTdHJlYW0KK3RlbXBsYXRlPD4g
aW5saW5lIHZvaWQgU2tpcFdoaXRlc3BhY2UoSW5zaXR1U3RyaW5nU3RyZWFtJiBpcykgeyAKKyAg
ICBpcy5zcmNfID0gY29uc3RfY2FzdDxjaGFyKj4oU2tpcFdoaXRlc3BhY2VfU0lNRChpcy5zcmNf
KSk7Cit9CisKKy8vISBUZW1wbGF0ZSBmdW5jdGlvbiBzcGVjaWFsaXphdGlvbiBmb3IgU3RyaW5n
U3RyZWFtCit0ZW1wbGF0ZTw+IGlubGluZSB2b2lkIFNraXBXaGl0ZXNwYWNlKFN0cmluZ1N0cmVh
bSYgaXMpIHsKKyAgICBpcy5zcmNfID0gU2tpcFdoaXRlc3BhY2VfU0lNRChpcy5zcmNfKTsKK30K
KyNlbmRpZiAvLyBSQVBJREpTT05fU0lNRAorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBH
ZW5lcmljUmVhZGVyCisKKy8vISBTQVgtc3R5bGUgSlNPTiBwYXJzZXIuIFVzZSBccmVmIFJlYWRl
ciBmb3IgVVRGOCBlbmNvZGluZyBhbmQgZGVmYXVsdCBhbGxvY2F0b3IuCisvKiEgR2VuZXJpY1Jl
YWRlciBwYXJzZXMgSlNPTiB0ZXh0IGZyb20gYSBzdHJlYW0sIGFuZCBzZW5kIGV2ZW50cyBzeW5j
aHJvbm91c2x5IHRvIGFuIAorICAgIG9iamVjdCBpbXBsZW1lbnRpbmcgSGFuZGxlciBjb25jZXB0
LgorCisgICAgSXQgbmVlZHMgdG8gYWxsb2NhdGUgYSBzdGFjayBmb3Igc3RvcmluZyBhIHNpbmds
ZSBkZWNvZGVkIHN0cmluZyBkdXJpbmcgCisgICAgbm9uLWRlc3RydWN0aXZlIHBhcnNpbmcuCisK
KyAgICBGb3IgaW4tc2l0dSBwYXJzaW5nLCB0aGUgZGVjb2RlZCBzdHJpbmcgaXMgZGlyZWN0bHkg
d3JpdHRlbiB0byB0aGUgc291cmNlIAorICAgIHRleHQgc3RyaW5nLCBubyB0ZW1wb3JhcnkgYnVm
ZmVyIGlzIHJlcXVpcmVkLgorCisgICAgQSBHZW5lcmljUmVhZGVyIG9iamVjdCBjYW4gYmUgcmV1
c2VkIGZvciBwYXJzaW5nIG11bHRpcGxlIEpTT04gdGV4dC4KKyAgICAKKyAgICBcdHBhcmFtIFNv
dXJjZUVuY29kaW5nIEVuY29kaW5nIG9mIHRoZSBpbnB1dCBzdHJlYW0uCisgICAgXHRwYXJhbSBU
YXJnZXRFbmNvZGluZyBFbmNvZGluZyBvZiB0aGUgcGFyc2Ugb3V0cHV0LgorICAgIFx0cGFyYW0g
U3RhY2tBbGxvY2F0b3IgQWxsb2NhdG9yIHR5cGUgZm9yIHN0YWNrLgorKi8KK3RlbXBsYXRlIDx0
eXBlbmFtZSBTb3VyY2VFbmNvZGluZywgdHlwZW5hbWUgVGFyZ2V0RW5jb2RpbmcsIHR5cGVuYW1l
IFN0YWNrQWxsb2NhdG9yID0gQ3J0QWxsb2NhdG9yPgorY2xhc3MgR2VuZXJpY1JlYWRlciB7Citw
dWJsaWM6CisgICAgdHlwZWRlZiB0eXBlbmFtZSBTb3VyY2VFbmNvZGluZzo6Q2ggQ2g7IC8vITwg
U291cmNlRW5jb2RpbmcgY2hhcmFjdGVyIHR5cGUKKworICAgIC8vISBDb25zdHJ1Y3Rvci4KKyAg
ICAvKiEgXHBhcmFtIGFsbG9jYXRvciBPcHRpb25hbCBhbGxvY2F0b3IgZm9yIGFsbG9jYXRpbmcg
c3RhY2sgbWVtb3J5LiAoT25seSB1c2UgZm9yIG5vbi1kZXN0cnVjdGl2ZSBwYXJzaW5nKQorICAg
ICAgICBccGFyYW0gc3RhY2tDYXBhY2l0eSBzdGFjayBjYXBhY2l0eSBpbiBieXRlcyBmb3Igc3Rv
cmluZyBhIHNpbmdsZSBkZWNvZGVkIHN0cmluZy4gIChPbmx5IHVzZSBmb3Igbm9uLWRlc3RydWN0
aXZlIHBhcnNpbmcpCisgICAgKi8KKyAgICBHZW5lcmljUmVhZGVyKFN0YWNrQWxsb2NhdG9yKiBz
dGFja0FsbG9jYXRvciA9IDAsIHNpemVfdCBzdGFja0NhcGFjaXR5ID0ga0RlZmF1bHRTdGFja0Nh
cGFjaXR5KSA6IHN0YWNrXyhzdGFja0FsbG9jYXRvciwgc3RhY2tDYXBhY2l0eSksIHBhcnNlUmVz
dWx0XygpIHt9CisKKyAgICAvLyEgUGFyc2UgSlNPTiB0ZXh0LgorICAgIC8qISBcdHBhcmFtIHBh
cnNlRmxhZ3MgQ29tYmluYXRpb24gb2YgXHJlZiBQYXJzZUZsYWcuCisgICAgICAgIFx0cGFyYW0g
SW5wdXRTdHJlYW0gVHlwZSBvZiBpbnB1dCBzdHJlYW0sIGltcGxlbWVudGluZyBTdHJlYW0gY29u
Y2VwdC4KKyAgICAgICAgXHRwYXJhbSBIYW5kbGVyIFR5cGUgb2YgaGFuZGxlciwgaW1wbGVtZW50
aW5nIEhhbmRsZXIgY29uY2VwdC4KKyAgICAgICAgXHBhcmFtIGlzIElucHV0IHN0cmVhbSB0byBi
ZSBwYXJzZWQuCisgICAgICAgIFxwYXJhbSBoYW5kbGVyIFRoZSBoYW5kbGVyIHRvIHJlY2VpdmUg
ZXZlbnRzLgorICAgICAgICBccmV0dXJuIFdoZXRoZXIgdGhlIHBhcnNpbmcgaXMgc3VjY2Vzc2Z1
bC4KKyAgICAqLworICAgIHRlbXBsYXRlIDx1bnNpZ25lZCBwYXJzZUZsYWdzLCB0eXBlbmFtZSBJ
bnB1dFN0cmVhbSwgdHlwZW5hbWUgSGFuZGxlcj4KKyAgICBQYXJzZVJlc3VsdCBQYXJzZShJbnB1
dFN0cmVhbSYgaXMsIEhhbmRsZXImIGhhbmRsZXIpIHsKKyAgICAgICAgaWYgKHBhcnNlRmxhZ3Mg
JiBrUGFyc2VJdGVyYXRpdmVGbGFnKQorICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGl2ZVBhcnNl
PHBhcnNlRmxhZ3M+KGlzLCBoYW5kbGVyKTsKKworICAgICAgICBwYXJzZVJlc3VsdF8uQ2xlYXIo
KTsKKworICAgICAgICBDbGVhclN0YWNrT25FeGl0IHNjb3BlKCp0aGlzKTsKKworICAgICAgICBT
a2lwV2hpdGVzcGFjZShpcyk7CisKKyAgICAgICAgaWYgKGlzLlBlZWsoKSA9PSAnXDAnKSB7Cisg
ICAgICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJST1JfTk9SRVRVUk4oa1BhcnNlRXJyb3JEb2N1
bWVudEVtcHR5LCBpcy5UZWxsKCkpOworICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9S
X0VBUkxZX1JFVFVSTihwYXJzZVJlc3VsdF8pOworICAgICAgICB9CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgUGFyc2VWYWx1ZTxwYXJzZUZsYWdzPihpcywgaGFuZGxlcik7CisgICAgICAg
ICAgICBSQVBJREpTT05fUEFSU0VfRVJST1JfRUFSTFlfUkVUVVJOKHBhcnNlUmVzdWx0Xyk7CisK
KyAgICAgICAgICAgIGlmICghKHBhcnNlRmxhZ3MgJiBrUGFyc2VTdG9wV2hlbkRvbmVGbGFnKSkg
eworICAgICAgICAgICAgICAgIFNraXBXaGl0ZXNwYWNlKGlzKTsKKworICAgICAgICAgICAgICAg
IGlmIChpcy5QZWVrKCkgIT0gJ1wwJykgeworICAgICAgICAgICAgICAgICAgICBSQVBJREpTT05f
UEFSU0VfRVJST1JfTk9SRVRVUk4oa1BhcnNlRXJyb3JEb2N1bWVudFJvb3ROb3RTaW5ndWxhciwg
aXMuVGVsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SX0VB
UkxZX1JFVFVSTihwYXJzZVJlc3VsdF8pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBwYXJzZVJlc3VsdF87CisgICAgfQorCisg
ICAgLy8hIFBhcnNlIEpTT04gdGV4dCAod2l0aCBccmVmIGtQYXJzZURlZmF1bHRGbGFncykKKyAg
ICAvKiEgXHRwYXJhbSBJbnB1dFN0cmVhbSBUeXBlIG9mIGlucHV0IHN0cmVhbSwgaW1wbGVtZW50
aW5nIFN0cmVhbSBjb25jZXB0CisgICAgICAgIFx0cGFyYW0gSGFuZGxlciBUeXBlIG9mIGhhbmRs
ZXIsIGltcGxlbWVudGluZyBIYW5kbGVyIGNvbmNlcHQuCisgICAgICAgIFxwYXJhbSBpcyBJbnB1
dCBzdHJlYW0gdG8gYmUgcGFyc2VkLgorICAgICAgICBccGFyYW0gaGFuZGxlciBUaGUgaGFuZGxl
ciB0byByZWNlaXZlIGV2ZW50cy4KKyAgICAgICAgXHJldHVybiBXaGV0aGVyIHRoZSBwYXJzaW5n
IGlzIHN1Y2Nlc3NmdWwuCisgICAgKi8KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRTdHJl
YW0sIHR5cGVuYW1lIEhhbmRsZXI+CisgICAgUGFyc2VSZXN1bHQgUGFyc2UoSW5wdXRTdHJlYW0m
IGlzLCBIYW5kbGVyJiBoYW5kbGVyKSB7CisgICAgICAgIHJldHVybiBQYXJzZTxrUGFyc2VEZWZh
dWx0RmxhZ3M+KGlzLCBoYW5kbGVyKTsKKyAgICB9CisKKyAgICAvLyEgV2hldGhlciBhIHBhcnNl
IGVycm9yIGhhcyBvY2N1cmVkIGluIHRoZSBsYXN0IHBhcnNpbmcuCisgICAgYm9vbCBIYXNQYXJz
ZUVycm9yKCkgY29uc3QgeyByZXR1cm4gcGFyc2VSZXN1bHRfLklzRXJyb3IoKTsgfQorICAgIAor
ICAgIC8vISBHZXQgdGhlIFxyZWYgUGFyc2VFcnJvckNvZGUgb2YgbGFzdCBwYXJzaW5nLgorICAg
IFBhcnNlRXJyb3JDb2RlIEdldFBhcnNlRXJyb3JDb2RlKCkgY29uc3QgeyByZXR1cm4gcGFyc2VS
ZXN1bHRfLkNvZGUoKTsgfQorCisgICAgLy8hIEdldCB0aGUgcG9zaXRpb24gb2YgbGFzdCBwYXJz
aW5nIGVycm9yIGluIGlucHV0LCAwIG90aGVyd2lzZS4KKyAgICBzaXplX3QgR2V0RXJyb3JPZmZz
ZXQoKSBjb25zdCB7IHJldHVybiBwYXJzZVJlc3VsdF8uT2Zmc2V0KCk7IH0KKworcHJvdGVjdGVk
OgorICAgIHZvaWQgU2V0UGFyc2VFcnJvcihQYXJzZUVycm9yQ29kZSBjb2RlLCBzaXplX3Qgb2Zm
c2V0KSB7IHBhcnNlUmVzdWx0Xy5TZXQoY29kZSwgb2Zmc2V0KTsgfQorCitwcml2YXRlOgorICAg
IC8vIFByb2hpYml0IGNvcHkgY29uc3RydWN0b3IgJiBhc3NpZ25tZW50IG9wZXJhdG9yLgorICAg
IEdlbmVyaWNSZWFkZXIoY29uc3QgR2VuZXJpY1JlYWRlciYpOworICAgIEdlbmVyaWNSZWFkZXIm
IG9wZXJhdG9yPShjb25zdCBHZW5lcmljUmVhZGVyJik7CisKKyAgICB2b2lkIENsZWFyU3RhY2so
KSB7IHN0YWNrXy5DbGVhcigpOyB9CisKKyAgICAvLyBjbGVhciBzdGFjayBvbiBhbnkgZXhpdCBm
cm9tIFBhcnNlU3RyZWFtLCBlLmcuIGR1ZSB0byBleGNlcHRpb24KKyAgICBzdHJ1Y3QgQ2xlYXJT
dGFja09uRXhpdCB7CisgICAgICAgIGV4cGxpY2l0IENsZWFyU3RhY2tPbkV4aXQoR2VuZXJpY1Jl
YWRlciYgcikgOiByXyhyKSB7fQorICAgICAgICB+Q2xlYXJTdGFja09uRXhpdCgpIHsgcl8uQ2xl
YXJTdGFjaygpOyB9CisgICAgcHJpdmF0ZToKKyAgICAgICAgR2VuZXJpY1JlYWRlciYgcl87Cisg
ICAgICAgIENsZWFyU3RhY2tPbkV4aXQoY29uc3QgQ2xlYXJTdGFja09uRXhpdCYpOworICAgICAg
ICBDbGVhclN0YWNrT25FeGl0JiBvcGVyYXRvcj0oY29uc3QgQ2xlYXJTdGFja09uRXhpdCYpOwor
ICAgIH07CisKKyAgICAvLyBQYXJzZSBvYmplY3Q6IHsgc3RyaW5nIDogdmFsdWUsIC4uLiB9Cisg
ICAgdGVtcGxhdGU8dW5zaWduZWQgcGFyc2VGbGFncywgdHlwZW5hbWUgSW5wdXRTdHJlYW0sIHR5
cGVuYW1lIEhhbmRsZXI+CisgICAgdm9pZCBQYXJzZU9iamVjdChJbnB1dFN0cmVhbSYgaXMsIEhh
bmRsZXImIGhhbmRsZXIpIHsKKyAgICAgICAgUkFQSURKU09OX0FTU0VSVChpcy5QZWVrKCkgPT0g
J3snKTsKKyAgICAgICAgaXMuVGFrZSgpOyAgLy8gU2tpcCAneycKKyAgICAgICAgCisgICAgICAg
IGlmICghaGFuZGxlci5TdGFydE9iamVjdCgpKQorICAgICAgICAgICAgUkFQSURKU09OX1BBUlNF
X0VSUk9SKGtQYXJzZUVycm9yVGVybWluYXRpb24sIGlzLlRlbGwoKSk7CisKKyAgICAgICAgU2tp
cFdoaXRlc3BhY2UoaXMpOworCisgICAgICAgIGlmIChpcy5QZWVrKCkgPT0gJ30nKSB7CisgICAg
ICAgICAgICBpcy5UYWtlKCk7CisgICAgICAgICAgICBpZiAoIWhhbmRsZXIuRW5kT2JqZWN0KDAp
KSAgLy8gZW1wdHkgb2JqZWN0CisgICAgICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9S
KGtQYXJzZUVycm9yVGVybWluYXRpb24sIGlzLlRlbGwoKSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBmb3IgKFNpemVUeXBlIG1lbWJlckNvdW50ID0gMDs7KSB7
CisgICAgICAgICAgICBpZiAoaXMuUGVlaygpICE9ICciJykKKyAgICAgICAgICAgICAgICBSQVBJ
REpTT05fUEFSU0VfRVJST1Ioa1BhcnNlRXJyb3JPYmplY3RNaXNzTmFtZSwgaXMuVGVsbCgpKTsK
KworICAgICAgICAgICAgUGFyc2VTdHJpbmc8cGFyc2VGbGFncz4oaXMsIGhhbmRsZXIsIHRydWUp
OworICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SX0VBUkxZX1JFVFVSTl9WT0lEOwor
CisgICAgICAgICAgICBTa2lwV2hpdGVzcGFjZShpcyk7CisKKyAgICAgICAgICAgIGlmIChpcy5U
YWtlKCkgIT0gJzonKQorICAgICAgICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUihrUGFy
c2VFcnJvck9iamVjdE1pc3NDb2xvbiwgaXMuVGVsbCgpKTsKKworICAgICAgICAgICAgU2tpcFdo
aXRlc3BhY2UoaXMpOworCisgICAgICAgICAgICBQYXJzZVZhbHVlPHBhcnNlRmxhZ3M+KGlzLCBo
YW5kbGVyKTsKKyAgICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUl9FQVJMWV9SRVRVUk5f
Vk9JRDsKKworICAgICAgICAgICAgU2tpcFdoaXRlc3BhY2UoaXMpOworCisgICAgICAgICAgICAr
K21lbWJlckNvdW50OworCisgICAgICAgICAgICBzd2l0Y2ggKGlzLlRha2UoKSkgeworICAgICAg
ICAgICAgICAgIGNhc2UgJywnOiBTa2lwV2hpdGVzcGFjZShpcyk7IGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgJ30nOiAKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFoYW5kbGVyLkVuZE9i
amVjdChtZW1iZXJDb3VudCkpCisgICAgICAgICAgICAgICAgICAgICAgICBSQVBJREpTT05fUEFS
U0VfRVJST1Ioa1BhcnNlRXJyb3JUZXJtaW5hdGlvbiwgaXMuVGVsbCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6ICBSQVBJREpTT05fUEFS
U0VfRVJST1Ioa1BhcnNlRXJyb3JPYmplY3RNaXNzQ29tbWFPckN1cmx5QnJhY2tldCwgaXMuVGVs
bCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFBhcnNlIGFy
cmF5OiBbIHZhbHVlLCAuLi4gXQorICAgIHRlbXBsYXRlPHVuc2lnbmVkIHBhcnNlRmxhZ3MsIHR5
cGVuYW1lIElucHV0U3RyZWFtLCB0eXBlbmFtZSBIYW5kbGVyPgorICAgIHZvaWQgUGFyc2VBcnJh
eShJbnB1dFN0cmVhbSYgaXMsIEhhbmRsZXImIGhhbmRsZXIpIHsKKyAgICAgICAgUkFQSURKU09O
X0FTU0VSVChpcy5QZWVrKCkgPT0gJ1snKTsKKyAgICAgICAgaXMuVGFrZSgpOyAgLy8gU2tpcCAn
WycKKyAgICAgICAgCisgICAgICAgIGlmICghaGFuZGxlci5TdGFydEFycmF5KCkpCisgICAgICAg
ICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Ioa1BhcnNlRXJyb3JUZXJtaW5hdGlvbiwgaXMuVGVs
bCgpKTsKKyAgICAgICAgCisgICAgICAgIFNraXBXaGl0ZXNwYWNlKGlzKTsKKworICAgICAgICBp
ZiAoaXMuUGVlaygpID09ICddJykgeworICAgICAgICAgICAgaXMuVGFrZSgpOworICAgICAgICAg
ICAgaWYgKCFoYW5kbGVyLkVuZEFycmF5KDApKSAvLyBlbXB0eSBhcnJheQorICAgICAgICAgICAg
ICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUihrUGFyc2VFcnJvclRlcm1pbmF0aW9uLCBpcy5UZWxs
KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChTaXpl
VHlwZSBlbGVtZW50Q291bnQgPSAwOzspIHsKKyAgICAgICAgICAgIFBhcnNlVmFsdWU8cGFyc2VG
bGFncz4oaXMsIGhhbmRsZXIpOworICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SX0VB
UkxZX1JFVFVSTl9WT0lEOworCisgICAgICAgICAgICArK2VsZW1lbnRDb3VudDsKKyAgICAgICAg
ICAgIFNraXBXaGl0ZXNwYWNlKGlzKTsKKworICAgICAgICAgICAgc3dpdGNoIChpcy5UYWtlKCkp
IHsKKyAgICAgICAgICAgICAgICBjYXNlICcsJzogU2tpcFdoaXRlc3BhY2UoaXMpOyBicmVhazsK
KyAgICAgICAgICAgICAgICBjYXNlICddJzogCisgICAgICAgICAgICAgICAgICAgIGlmICghaGFu
ZGxlci5FbmRBcnJheShlbGVtZW50Q291bnQpKQorICAgICAgICAgICAgICAgICAgICAgICAgUkFQ
SURKU09OX1BBUlNFX0VSUk9SKGtQYXJzZUVycm9yVGVybWluYXRpb24sIGlzLlRlbGwoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OiAgUkFQ
SURKU09OX1BBUlNFX0VSUk9SKGtQYXJzZUVycm9yQXJyYXlNaXNzQ29tbWFPclNxdWFyZUJyYWNr
ZXQsIGlzLlRlbGwoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTx1bnNpZ25lZCBwYXJzZUZsYWdzLCB0eXBlbmFtZSBJbnB1dFN0cmVhbSwgdHlwZW5h
bWUgSGFuZGxlcj4KKyAgICB2b2lkIFBhcnNlTnVsbChJbnB1dFN0cmVhbSYgaXMsIEhhbmRsZXIm
IGhhbmRsZXIpIHsKKyAgICAgICAgUkFQSURKU09OX0FTU0VSVChpcy5QZWVrKCkgPT0gJ24nKTsK
KyAgICAgICAgaXMuVGFrZSgpOworCisgICAgICAgIGlmIChpcy5UYWtlKCkgPT0gJ3UnICYmIGlz
LlRha2UoKSA9PSAnbCcgJiYgaXMuVGFrZSgpID09ICdsJykgeworICAgICAgICAgICAgaWYgKCFo
YW5kbGVyLk51bGwoKSkKKyAgICAgICAgICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Ioa1Bh
cnNlRXJyb3JUZXJtaW5hdGlvbiwgaXMuVGVsbCgpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNl
CisgICAgICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Ioa1BhcnNlRXJyb3JWYWx1ZUludmFs
aWQsIGlzLlRlbGwoKSAtIDEpOworICAgIH0KKworICAgIHRlbXBsYXRlPHVuc2lnbmVkIHBhcnNl
RmxhZ3MsIHR5cGVuYW1lIElucHV0U3RyZWFtLCB0eXBlbmFtZSBIYW5kbGVyPgorICAgIHZvaWQg
UGFyc2VUcnVlKElucHV0U3RyZWFtJiBpcywgSGFuZGxlciYgaGFuZGxlcikgeworICAgICAgICBS
QVBJREpTT05fQVNTRVJUKGlzLlBlZWsoKSA9PSAndCcpOworICAgICAgICBpcy5UYWtlKCk7CisK
KyAgICAgICAgaWYgKGlzLlRha2UoKSA9PSAncicgJiYgaXMuVGFrZSgpID09ICd1JyAmJiBpcy5U
YWtlKCkgPT0gJ2UnKSB7CisgICAgICAgICAgICBpZiAoIWhhbmRsZXIuQm9vbCh0cnVlKSkKKyAg
ICAgICAgICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Ioa1BhcnNlRXJyb3JUZXJtaW5hdGlv
biwgaXMuVGVsbCgpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBSQVBJ
REpTT05fUEFSU0VfRVJST1Ioa1BhcnNlRXJyb3JWYWx1ZUludmFsaWQsIGlzLlRlbGwoKSAtIDEp
OworICAgIH0KKworICAgIHRlbXBsYXRlPHVuc2lnbmVkIHBhcnNlRmxhZ3MsIHR5cGVuYW1lIElu
cHV0U3RyZWFtLCB0eXBlbmFtZSBIYW5kbGVyPgorICAgIHZvaWQgUGFyc2VGYWxzZShJbnB1dFN0
cmVhbSYgaXMsIEhhbmRsZXImIGhhbmRsZXIpIHsKKyAgICAgICAgUkFQSURKU09OX0FTU0VSVChp
cy5QZWVrKCkgPT0gJ2YnKTsKKyAgICAgICAgaXMuVGFrZSgpOworCisgICAgICAgIGlmIChpcy5U
YWtlKCkgPT0gJ2EnICYmIGlzLlRha2UoKSA9PSAnbCcgJiYgaXMuVGFrZSgpID09ICdzJyAmJiBp
cy5UYWtlKCkgPT0gJ2UnKSB7CisgICAgICAgICAgICBpZiAoIWhhbmRsZXIuQm9vbChmYWxzZSkp
CisgICAgICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SKGtQYXJzZUVycm9yVGVybWlu
YXRpb24sIGlzLlRlbGwoKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
UkFQSURKU09OX1BBUlNFX0VSUk9SKGtQYXJzZUVycm9yVmFsdWVJbnZhbGlkLCBpcy5UZWxsKCkg
LSAxKTsKKyAgICB9CisKKyAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gcGFyc2UgZm91ciBoZXhp
ZGVjaW1hbCBkaWdpdHMgaW4gXHVYWFhYIGluIFBhcnNlU3RyaW5nKCkuCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgSW5wdXRTdHJlYW0+CisgICAgdW5zaWduZWQgUGFyc2VIZXg0KElucHV0U3RyZWFt
JiBpcykgeworICAgICAgICB1bnNpZ25lZCBjb2RlcG9pbnQgPSAwOworICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IDQ7IGkrKykgeworICAgICAgICAgICAgQ2ggYyA9IGlzLlRha2UoKTsKKyAg
ICAgICAgICAgIGNvZGVwb2ludCA8PD0gNDsKKyAgICAgICAgICAgIGNvZGVwb2ludCArPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oYyk7CisgICAgICAgICAgICBpZiAoYyA+PSAnMCcgJiYgYyA8PSAn
OScpCisgICAgICAgICAgICAgICAgY29kZXBvaW50IC09ICcwJzsKKyAgICAgICAgICAgIGVsc2Ug
aWYgKGMgPj0gJ0EnICYmIGMgPD0gJ0YnKQorICAgICAgICAgICAgICAgIGNvZGVwb2ludCAtPSAn
QScgLSAxMDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gJ2EnICYmIGMgPD0gJ2YnKQorICAg
ICAgICAgICAgICAgIGNvZGVwb2ludCAtPSAnYScgLSAxMDsKKyAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUl9OT1JFVFVSTihrUGFyc2VFcnJv
clN0cmluZ1VuaWNvZGVFc2NhcGVJbnZhbGlkSGV4LCBpcy5UZWxsKCkgLSAxKTsKKyAgICAgICAg
ICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJST1JfRUFSTFlfUkVUVVJOKDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBjb2RlcG9pbnQ7CisgICAgfQorCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgorICAgIGNsYXNzIFN0YWNrU3RyZWFtIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgQ2hhclR5cGUgQ2g7CisKKyAgICAgICAgU3RhY2tT
dHJlYW0oaW50ZXJuYWw6OlN0YWNrPFN0YWNrQWxsb2NhdG9yPiYgc3RhY2spIDogc3RhY2tfKHN0
YWNrKSwgbGVuZ3RoXygwKSB7fQorICAgICAgICBSQVBJREpTT05fRk9SQ0VJTkxJTkUgdm9pZCBQ
dXQoQ2ggYykgeworICAgICAgICAgICAgKnN0YWNrXy50ZW1wbGF0ZSBQdXNoPENoPigpID0gYzsK
KyAgICAgICAgICAgICsrbGVuZ3RoXzsKKyAgICAgICAgfQorICAgICAgICBzaXplX3QgTGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gbGVuZ3RoXzsgfQorICAgICAgICBDaCogUG9wKCkgeworICAgICAg
ICAgICAgcmV0dXJuIHN0YWNrXy50ZW1wbGF0ZSBQb3A8Q2g+KGxlbmd0aF8pOworICAgICAgICB9
CisKKyAgICBwcml2YXRlOgorICAgICAgICBTdGFja1N0cmVhbShjb25zdCBTdGFja1N0cmVhbSYp
OworICAgICAgICBTdGFja1N0cmVhbSYgb3BlcmF0b3I9KGNvbnN0IFN0YWNrU3RyZWFtJik7CisK
KyAgICAgICAgaW50ZXJuYWw6OlN0YWNrPFN0YWNrQWxsb2NhdG9yPiYgc3RhY2tfOworICAgICAg
ICBTaXplVHlwZSBsZW5ndGhfOworICAgIH07CisKKyAgICAvLyBQYXJzZSBzdHJpbmcgYW5kIGdl
bmVyYXRlIFN0cmluZyBldmVudC4gRGlmZmVyZW50IGNvZGUgcGF0aHMgZm9yIGtQYXJzZUluc2l0
dUZsYWcuCisgICAgdGVtcGxhdGU8dW5zaWduZWQgcGFyc2VGbGFncywgdHlwZW5hbWUgSW5wdXRT
dHJlYW0sIHR5cGVuYW1lIEhhbmRsZXI+CisgICAgdm9pZCBQYXJzZVN0cmluZyhJbnB1dFN0cmVh
bSYgaXMsIEhhbmRsZXImIGhhbmRsZXIsIGJvb2wgaXNLZXkgPSBmYWxzZSkgeworICAgICAgICBp
bnRlcm5hbDo6U3RyZWFtTG9jYWxDb3B5PElucHV0U3RyZWFtPiBjb3B5KGlzKTsKKyAgICAgICAg
SW5wdXRTdHJlYW0mIHMoY29weS5zKTsKKworICAgICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsK
KyAgICAgICAgaWYgKHBhcnNlRmxhZ3MgJiBrUGFyc2VJbnNpdHVGbGFnKSB7CisgICAgICAgICAg
ICB0eXBlbmFtZSBJbnB1dFN0cmVhbTo6Q2ggKmhlYWQgPSBzLlB1dEJlZ2luKCk7CisgICAgICAg
ICAgICBQYXJzZVN0cmluZ1RvU3RyZWFtPHBhcnNlRmxhZ3MsIFNvdXJjZUVuY29kaW5nLCBTb3Vy
Y2VFbmNvZGluZz4ocywgcyk7CisgICAgICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJST1JfRUFS
TFlfUkVUVVJOX1ZPSUQ7CisgICAgICAgICAgICBzaXplX3QgbGVuZ3RoID0gcy5QdXRFbmQoaGVh
ZCkgLSAxOworICAgICAgICAgICAgUkFQSURKU09OX0FTU0VSVChsZW5ndGggPD0gMHhGRkZGRkZG
Rik7CisgICAgICAgICAgICBjb25zdCB0eXBlbmFtZSBUYXJnZXRFbmNvZGluZzo6Q2gqIGNvbnN0
IHN0ciA9ICh0eXBlbmFtZSBUYXJnZXRFbmNvZGluZzo6Q2gqKWhlYWQ7CisgICAgICAgICAgICBz
dWNjZXNzID0gKGlzS2V5ID8gaGFuZGxlci5LZXkoc3RyLCBTaXplVHlwZShsZW5ndGgpLCBmYWxz
ZSkgOiBoYW5kbGVyLlN0cmluZyhzdHIsIFNpemVUeXBlKGxlbmd0aCksIGZhbHNlKSk7CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBTdGFja1N0cmVhbTx0eXBlbmFtZSBU
YXJnZXRFbmNvZGluZzo6Q2g+IHN0YWNrU3RyZWFtKHN0YWNrXyk7CisgICAgICAgICAgICBQYXJz
ZVN0cmluZ1RvU3RyZWFtPHBhcnNlRmxhZ3MsIFNvdXJjZUVuY29kaW5nLCBUYXJnZXRFbmNvZGlu
Zz4ocywgc3RhY2tTdHJlYW0pOworICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SX0VB
UkxZX1JFVFVSTl9WT0lEOworICAgICAgICAgICAgU2l6ZVR5cGUgbGVuZ3RoID0gc3RhdGljX2Nh
c3Q8U2l6ZVR5cGU+KHN0YWNrU3RyZWFtLkxlbmd0aCgpKSAtIDE7CisgICAgICAgICAgICBjb25z
dCB0eXBlbmFtZSBUYXJnZXRFbmNvZGluZzo6Q2gqIGNvbnN0IHN0ciA9IHN0YWNrU3RyZWFtLlBv
cCgpOworICAgICAgICAgICAgc3VjY2VzcyA9IChpc0tleSA/IGhhbmRsZXIuS2V5KHN0ciwgbGVu
Z3RoLCB0cnVlKSA6IGhhbmRsZXIuU3RyaW5nKHN0ciwgbGVuZ3RoLCB0cnVlKSk7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VS
Uk9SKGtQYXJzZUVycm9yVGVybWluYXRpb24sIHMuVGVsbCgpKTsKKyAgICB9CisKKyAgICAvLyBQ
YXJzZSBzdHJpbmcgdG8gYW4gb3V0cHV0IGlzCisgICAgLy8gVGhpcyBmdW5jdGlvbiBoYW5kbGVz
IHRoZSBwcmVmaXgvc3VmZml4IGRvdWJsZSBxdW90ZXMsIGVzY2FwaW5nLCBhbmQgb3B0aW9uYWwg
ZW5jb2RpbmcgdmFsaWRhdGlvbi4KKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBwYXJzZUZsYWdzLCB0
eXBlbmFtZSBTRW5jb2RpbmcsIHR5cGVuYW1lIFRFbmNvZGluZywgdHlwZW5hbWUgSW5wdXRTdHJl
YW0sIHR5cGVuYW1lIE91dHB1dFN0cmVhbT4KKyAgICBSQVBJREpTT05fRk9SQ0VJTkxJTkUgdm9p
ZCBQYXJzZVN0cmluZ1RvU3RyZWFtKElucHV0U3RyZWFtJiBpcywgT3V0cHV0U3RyZWFtJiBvcykg
eworLy8hQGNvbmQgUkFQSURKU09OX0hJRERFTl9GUk9NX0RPWFlHRU4KKyNkZWZpbmUgWjE2IDAs
MCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIg
ZXNjYXBlWzI1Nl0gPSB7CisgICAgICAgICAgICBaMTYsIFoxNiwgMCwgMCwnXCInLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCcvJywgCisgICAgICAgICAgICBaMTYsIFoxNiwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwnXFwnLCAwLCAwLCAwLCAKKyAgICAg
ICAgICAgIDAsIDAsJ1xiJywgMCwgMCwgMCwnXGYnLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCdcbics
IDAsIAorICAgICAgICAgICAgMCwgMCwnXHInLCAwLCdcdCcsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIAorICAgICAgICAgICAgWjE2LCBaMTYsIFoxNiwgWjE2LCBaMTYsIFoxNiwg
WjE2LCBaMTYKKyAgICAgICAgfTsKKyN1bmRlZiBaMTYKKy8vIUBlbmRjb25kCisKKyAgICAgICAg
UkFQSURKU09OX0FTU0VSVChpcy5QZWVrKCkgPT0gJ1wiJyk7CisgICAgICAgIGlzLlRha2UoKTsg
IC8vIFNraXAgJ1wiJworCisgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgIENoIGMgPSBp
cy5QZWVrKCk7CisgICAgICAgICAgICBpZiAoYyA9PSAnXFwnKSB7ICAgIC8vIEVzY2FwZQorICAg
ICAgICAgICAgICAgIGlzLlRha2UoKTsKKyAgICAgICAgICAgICAgICBDaCBlID0gaXMuVGFrZSgp
OworICAgICAgICAgICAgICAgIGlmICgoc2l6ZW9mKENoKSA9PSAxIHx8IHVuc2lnbmVkKGUpIDwg
MjU2KSAmJiBlc2NhcGVbKHVuc2lnbmVkIGNoYXIpZV0pIHsKKyAgICAgICAgICAgICAgICAgICAg
b3MuUHV0KGVzY2FwZVsodW5zaWduZWQgY2hhcillXSk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKGUgPT0gJ3UnKSB7ICAgIC8vIFVuaWNvZGUKKyAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgY29kZXBvaW50ID0gUGFyc2VIZXg0KGlzKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGNvZGVwb2ludCA+PSAweEQ4MDAgJiYgY29kZXBvaW50IDw9IDB4REJG
RikgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGFuZGxlIFVURi0xNiBzdXJyb2dhdGUg
cGFpcgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzLlRha2UoKSAhPSAnXFwnIHx8IGlz
LlRha2UoKSAhPSAndScpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkFQSURKU09OX1BB
UlNFX0VSUk9SKGtQYXJzZUVycm9yU3RyaW5nVW5pY29kZVN1cnJvZ2F0ZUludmFsaWQsIGlzLlRl
bGwoKSAtIDIpOworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY29kZXBvaW50MiA9
IFBhcnNlSGV4NChpcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29kZXBvaW50MiA8
IDB4REMwMCB8fCBjb2RlcG9pbnQyID4gMHhERkZGKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUihrUGFyc2VFcnJvclN0cmluZ1VuaWNvZGVTdXJyb2dh
dGVJbnZhbGlkLCBpcy5UZWxsKCkgLSAyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVw
b2ludCA9ICgoKGNvZGVwb2ludCAtIDB4RDgwMCkgPDwgMTApIHwgKGNvZGVwb2ludDIgLSAweERD
MDApKSArIDB4MTAwMDA7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgVEVuY29kaW5nOjpFbmNvZGUob3MsIGNvZGVwb2ludCk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgUkFQSURKU09OX1BBUlNF
X0VSUk9SKGtQYXJzZUVycm9yU3RyaW5nRXNjYXBlSW52YWxpZCwgaXMuVGVsbCgpIC0gMSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjID09ICciJykgeyAgICAvLyBDbG9z
aW5nIGRvdWJsZSBxdW90ZQorICAgICAgICAgICAgICAgIGlzLlRha2UoKTsKKyAgICAgICAgICAg
ICAgICBvcy5QdXQoJ1wwJyk7ICAgLy8gbnVsbC10ZXJtaW5hdGUgdGhlIHN0cmluZworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGMg
PT0gJ1wwJykKKyAgICAgICAgICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Ioa1BhcnNlRXJy
b3JTdHJpbmdNaXNzUXVvdGF0aW9uTWFyaywgaXMuVGVsbCgpIC0gMSk7CisgICAgICAgICAgICBl
bHNlIGlmICgodW5zaWduZWQpYyA8IDB4MjApIC8vIFJGQyA0NjI3OiB1bmVzY2FwZWQgPSAleDIw
LTIxIC8gJXgyMy01QiAvICV4NUQtMTBGRkZGCisgICAgICAgICAgICAgICAgUkFQSURKU09OX1BB
UlNFX0VSUk9SKGtQYXJzZUVycm9yU3RyaW5nRXNjYXBlSW52YWxpZCwgaXMuVGVsbCgpIC0gMSk7
CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAocGFyc2VGbGFncyAmIGtQ
YXJzZVZhbGlkYXRlRW5jb2RpbmdGbGFnID8gCisgICAgICAgICAgICAgICAgICAgICFUcmFuc2Nv
ZGVyPFNFbmNvZGluZywgVEVuY29kaW5nPjo6VmFsaWRhdGUoaXMsIG9zKSA6IAorICAgICAgICAg
ICAgICAgICAgICAhVHJhbnNjb2RlcjxTRW5jb2RpbmcsIFRFbmNvZGluZz46OlRyYW5zY29kZShp
cywgb3MpKQorICAgICAgICAgICAgICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Ioa1BhcnNl
RXJyb3JTdHJpbmdJbnZhbGlkRW5jb2RpbmcsIGlzLlRlbGwoKSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnB1dFN0cmVhbSwgYm9v
bCBiYWNrdXA+CisgICAgY2xhc3MgTnVtYmVyU3RyZWFtIHt9OworCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgSW5wdXRTdHJlYW0+CisgICAgY2xhc3MgTnVtYmVyU3RyZWFtPElucHV0U3RyZWFtLCBm
YWxzZT4geworICAgIHB1YmxpYzoKKyAgICAgICAgTnVtYmVyU3RyZWFtKEdlbmVyaWNSZWFkZXIm
IHJlYWRlciwgSW5wdXRTdHJlYW0mIGlzKSA6IGlzKGlzKSB7ICh2b2lkKXJlYWRlcjsgIH0KKyAg
ICAgICAgfk51bWJlclN0cmVhbSgpIHt9CisKKyAgICAgICAgUkFQSURKU09OX0ZPUkNFSU5MSU5F
IENoIFBlZWsoKSBjb25zdCB7IHJldHVybiBpcy5QZWVrKCk7IH0KKyAgICAgICAgUkFQSURKU09O
X0ZPUkNFSU5MSU5FIENoIFRha2VQdXNoKCkgeyByZXR1cm4gaXMuVGFrZSgpOyB9CisgICAgICAg
IFJBUElESlNPTl9GT1JDRUlOTElORSBDaCBUYWtlKCkgeyByZXR1cm4gaXMuVGFrZSgpOyB9Cisg
ICAgICAgIHNpemVfdCBUZWxsKCkgeyByZXR1cm4gaXMuVGVsbCgpOyB9CisgICAgICAgIHNpemVf
dCBMZW5ndGgoKSB7IHJldHVybiAwOyB9CisgICAgICAgIGNvbnN0IGNoYXIqIFBvcCgpIHsgcmV0
dXJuIDA7IH0KKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgTnVtYmVyU3RyZWFtJiBvcGVyYXRv
cj0oY29uc3QgTnVtYmVyU3RyZWFtJik7CisKKyAgICAgICAgSW5wdXRTdHJlYW0mIGlzOworICAg
IH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnB1dFN0cmVhbT4KKyAgICBjbGFzcyBOdW1i
ZXJTdHJlYW08SW5wdXRTdHJlYW0sIHRydWU+IDogcHVibGljIE51bWJlclN0cmVhbTxJbnB1dFN0
cmVhbSwgZmFsc2U+IHsKKyAgICAgICAgdHlwZWRlZiBOdW1iZXJTdHJlYW08SW5wdXRTdHJlYW0s
IGZhbHNlPiBCYXNlOworICAgIHB1YmxpYzoKKyAgICAgICAgTnVtYmVyU3RyZWFtKEdlbmVyaWNS
ZWFkZXImIHJlYWRlciwgSW5wdXRTdHJlYW0mIGlzKSA6IE51bWJlclN0cmVhbTxJbnB1dFN0cmVh
bSwgZmFsc2U+KHJlYWRlciwgaXMpLCBzdGFja1N0cmVhbShyZWFkZXIuc3RhY2tfKSB7fQorICAg
ICAgICB+TnVtYmVyU3RyZWFtKCkge30KKworICAgICAgICBSQVBJREpTT05fRk9SQ0VJTkxJTkUg
Q2ggVGFrZVB1c2goKSB7CisgICAgICAgICAgICBzdGFja1N0cmVhbS5QdXQoKGNoYXIpQmFzZTo6
aXMuUGVlaygpKTsKKyAgICAgICAgICAgIHJldHVybiBCYXNlOjppcy5UYWtlKCk7CisgICAgICAg
IH0KKworICAgICAgICBzaXplX3QgTGVuZ3RoKCkgeyByZXR1cm4gc3RhY2tTdHJlYW0uTGVuZ3Ro
KCk7IH0KKworICAgICAgICBjb25zdCBjaGFyKiBQb3AoKSB7CisgICAgICAgICAgICBzdGFja1N0
cmVhbS5QdXQoJ1wwJyk7CisgICAgICAgICAgICByZXR1cm4gc3RhY2tTdHJlYW0uUG9wKCk7Cisg
ICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFN0YWNrU3RyZWFtPGNoYXI+IHN0YWNr
U3RyZWFtOworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBwYXJzZUZsYWdzLCB0eXBl
bmFtZSBJbnB1dFN0cmVhbSwgdHlwZW5hbWUgSGFuZGxlcj4KKyAgICB2b2lkIFBhcnNlTnVtYmVy
KElucHV0U3RyZWFtJiBpcywgSGFuZGxlciYgaGFuZGxlcikgeworICAgICAgICBpbnRlcm5hbDo6
U3RyZWFtTG9jYWxDb3B5PElucHV0U3RyZWFtPiBjb3B5KGlzKTsKKyAgICAgICAgTnVtYmVyU3Ry
ZWFtPElucHV0U3RyZWFtLCAocGFyc2VGbGFncyAmIGtQYXJzZUZ1bGxQcmVjaXNpb25GbGFnKSAh
PSAwPiBzKCp0aGlzLCBjb3B5LnMpOworCisgICAgICAgIC8vIFBhcnNlIG1pbnVzCisgICAgICAg
IGJvb2wgbWludXMgPSBmYWxzZTsKKyAgICAgICAgaWYgKHMuUGVlaygpID09ICctJykgeworICAg
ICAgICAgICAgbWludXMgPSB0cnVlOworICAgICAgICAgICAgcy5UYWtlKCk7CisgICAgICAgIH0K
KworICAgICAgICAvLyBQYXJzZSBpbnQ6IHplcm8gLyAoIGRpZ2l0MS05ICpESUdJVCApCisgICAg
ICAgIHVuc2lnbmVkIGkgPSAwOworICAgICAgICB1aW50NjRfdCBpNjQgPSAwOworICAgICAgICBi
b29sIHVzZTY0Yml0ID0gZmFsc2U7CisgICAgICAgIGludCBzaWduaWZpY2FuZERpZ2l0ID0gMDsK
KyAgICAgICAgaWYgKHMuUGVlaygpID09ICcwJykgeworICAgICAgICAgICAgaSA9IDA7CisgICAg
ICAgICAgICBzLlRha2VQdXNoKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAocy5QZWVr
KCkgPj0gJzEnICYmIHMuUGVlaygpIDw9ICc5JykgeworICAgICAgICAgICAgaSA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihzLlRha2VQdXNoKCkgLSAnMCcpOworCisgICAgICAgICAgICBpZiAobWlu
dXMpCisgICAgICAgICAgICAgICAgd2hpbGUgKHMuUGVlaygpID49ICcwJyAmJiBzLlBlZWsoKSA8
PSAnOScpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj0gMjE0NzQ4MzY0KSB7IC8vIDJe
MzEgPSAyMTQ3NDgzNjQ4CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSAhPSAyMTQ3NDgz
NjQgfHwgcy5QZWVrKCkgPiAnOCcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpNjQg
PSBpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZTY0Yml0ID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpID0gaSAqIDEwICsg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHMuVGFrZVB1c2goKSAtICcwJyk7CisgICAgICAgICAgICAg
ICAgICAgIHNpZ25pZmljYW5kRGlnaXQrKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgd2hpbGUgKHMuUGVlaygpID49ICcwJyAmJiBzLlBlZWso
KSA8PSAnOScpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj0gNDI5NDk2NzI5KSB7IC8v
IDJeMzIgLSAxID0gNDI5NDk2NzI5NQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgIT0g
NDI5NDk2NzI5IHx8IHMuUGVlaygpID4gJzUnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaTY0ID0gaTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2U2NGJpdCA9IHRydWU7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaSA9IGkg
KiAxMCArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzLlRha2VQdXNoKCkgLSAnMCcpOworICAgICAg
ICAgICAgICAgICAgICBzaWduaWZpY2FuZERpZ2l0Kys7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUihr
UGFyc2VFcnJvclZhbHVlSW52YWxpZCwgcy5UZWxsKCkpOworCisgICAgICAgIC8vIFBhcnNlIDY0
Yml0IGludAorICAgICAgICBib29sIHVzZURvdWJsZSA9IGZhbHNlOworICAgICAgICBkb3VibGUg
ZCA9IDAuMDsKKyAgICAgICAgaWYgKHVzZTY0Yml0KSB7CisgICAgICAgICAgICBpZiAobWludXMp
IAorICAgICAgICAgICAgICAgIHdoaWxlIChzLlBlZWsoKSA+PSAnMCcgJiYgcy5QZWVrKCkgPD0g
JzknKSB7ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgIGlmIChpNjQg
Pj0gUkFQSURKU09OX1VJTlQ2NF9DMigweDBDQ0NDQ0NDLCAweENDQ0NDQ0NDKSkgLy8gMl42MyA9
IDkyMjMzNzIwMzY4NTQ3NzU4MDgKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpNjQgIT0g
UkFQSURKU09OX1VJTlQ2NF9DMigweDBDQ0NDQ0NDLCAweENDQ0NDQ0NDKSB8fCBzLlBlZWsoKSA+
ICc4JykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBpNjQ7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdXNlRG91YmxlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgaTY0ID0gaTY0ICogMTAgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocy5UYWtlUHVzaCgp
IC0gJzAnKTsKKyAgICAgICAgICAgICAgICAgICAgc2lnbmlmaWNhbmREaWdpdCsrOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB3aGlsZSAocy5Q
ZWVrKCkgPj0gJzAnICYmIHMuUGVlaygpIDw9ICc5JykgeyAgICAgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgICAgIGlmIChpNjQgPj0gUkFQSURKU09OX1VJTlQ2NF9DMigweDE5OTk5
OTk5LCAweDk5OTk5OTk5KSkgLy8gMl42NCAtIDEgPSAxODQ0Njc0NDA3MzcwOTU1MTYxNQorICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGk2NCAhPSBSQVBJREpTT05fVUlOVDY0X0MyKDB4MTk5
OTk5OTksIDB4OTk5OTk5OTkpIHx8IHMuUGVlaygpID4gJzUnKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZCA9IGk2NDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VEb3Vi
bGUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpNjQgPSBpNjQgKiAxMCArIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihzLlRha2VQdXNoKCkgLSAnMCcpOworICAgICAgICAgICAgICAg
ICAgICBzaWduaWZpY2FuZERpZ2l0Kys7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgLy8gRm9yY2UgZG91YmxlIGZvciBiaWcgaW50ZWdlcgorICAgICAgICBpZiAodXNl
RG91YmxlKSB7CisgICAgICAgICAgICB3aGlsZSAocy5QZWVrKCkgPj0gJzAnICYmIHMuUGVlaygp
IDw9ICc5JykgeworICAgICAgICAgICAgICAgIGlmIChkID49IDEuNzk3NjkzMTM0ODYyMzE1N2Uz
MDcpIC8vIERCTF9NQVggLyAxMC4wCisgICAgICAgICAgICAgICAgICAgIFJBUElESlNPTl9QQVJT
RV9FUlJPUihrUGFyc2VFcnJvck51bWJlclRvb0JpZywgcy5UZWxsKCkpOworICAgICAgICAgICAg
ICAgIGQgPSBkICogMTAgKyAocy5UYWtlUHVzaCgpIC0gJzAnKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIC8vIFBhcnNlIGZyYWMgPSBkZWNpbWFsLXBvaW50IDEqRElHSVQK
KyAgICAgICAgaW50IGV4cEZyYWMgPSAwOworICAgICAgICBzaXplX3QgZGVjaW1hbFBvc2l0aW9u
OworICAgICAgICBpZiAocy5QZWVrKCkgPT0gJy4nKSB7CisgICAgICAgICAgICBzLlRha2UoKTsK
KyAgICAgICAgICAgIGRlY2ltYWxQb3NpdGlvbiA9IHMuTGVuZ3RoKCk7CisKKyAgICAgICAgICAg
IGlmICghKHMuUGVlaygpID49ICcwJyAmJiBzLlBlZWsoKSA8PSAnOScpKQorICAgICAgICAgICAg
ICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUihrUGFyc2VFcnJvck51bWJlck1pc3NGcmFjdGlvbiwg
cy5UZWxsKCkpOworCisgICAgICAgICAgICBpZiAoIXVzZURvdWJsZSkgeworI2lmIFJBUElESlNP
Tl82NEJJVAorICAgICAgICAgICAgICAgIC8vIFVzZSBpNjQgdG8gc3RvcmUgc2lnbmlmaWNhbmQg
aW4gNjQtYml0IGFyY2hpdGVjdHVyZQorICAgICAgICAgICAgICAgIGlmICghdXNlNjRiaXQpCisg
ICAgICAgICAgICAgICAgICAgIGk2NCA9IGk7CisgICAgICAgIAorICAgICAgICAgICAgICAgIHdo
aWxlIChzLlBlZWsoKSA+PSAnMCcgJiYgcy5QZWVrKCkgPD0gJzknKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChpNjQgPiBSQVBJREpTT05fVUlOVDY0X0MyKDB4MUZGRkZGLCAweEZGRkZGRkZG
KSkgLy8gMl41MyAtIDEgZm9yIGZhc3QgcGF0aAorICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAg
aTY0ID0gaTY0ICogMTAgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocy5UYWtlUHVzaCgpIC0gJzAn
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC0tZXhwRnJhYzsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChpNjQgIT0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduaWZp
Y2FuZERpZ2l0Kys7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICBkID0gKGRvdWJsZSlpNjQ7CisjZWxzZQorICAgICAgICAgICAgICAg
IC8vIFVzZSBkb3VibGUgdG8gc3RvcmUgc2lnbmlmaWNhbmQgaW4gMzItYml0IGFyY2hpdGVjdHVy
ZQorICAgICAgICAgICAgICAgIGQgPSB1c2U2NGJpdCA/IChkb3VibGUpaTY0IDogKGRvdWJsZSlp
OworI2VuZGlmCisgICAgICAgICAgICAgICAgdXNlRG91YmxlID0gdHJ1ZTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgd2hpbGUgKHMuUGVlaygpID49ICcwJyAmJiBzLlBlZWsoKSA8PSAn
OScpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2lnbmlmaWNhbmREaWdpdCA8IDE3KSB7CisgICAg
ICAgICAgICAgICAgICAgIGQgPSBkICogMTAuMCArIChzLlRha2VQdXNoKCkgLSAnMCcpOworICAg
ICAgICAgICAgICAgICAgICAtLWV4cEZyYWM7CisgICAgICAgICAgICAgICAgICAgIGlmIChkICE9
IDAuMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25pZmljYW5kRGlnaXQrKzsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBz
LlRha2VQdXNoKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgZGVjaW1hbFBvc2l0aW9uID0gcy5MZW5ndGgoKTsgLy8gZGVjaW1hbCBwb3NpdGlv
biBhdCB0aGUgZW5kIG9mIGludGVnZXIuCisKKyAgICAgICAgLy8gUGFyc2UgZXhwID0gZSBbIG1p
bnVzIC8gcGx1cyBdIDEqRElHSVQKKyAgICAgICAgaW50IGV4cCA9IDA7CisgICAgICAgIGlmIChz
LlBlZWsoKSA9PSAnZScgfHwgcy5QZWVrKCkgPT0gJ0UnKSB7CisgICAgICAgICAgICBpZiAoIXVz
ZURvdWJsZSkgeworICAgICAgICAgICAgICAgIGQgPSB1c2U2NGJpdCA/IGk2NCA6IGk7CisgICAg
ICAgICAgICAgICAgdXNlRG91YmxlID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHMuVGFrZSgpOworCisgICAgICAgICAgICBib29sIGV4cE1pbnVzID0gZmFsc2U7CisgICAgICAg
ICAgICBpZiAocy5QZWVrKCkgPT0gJysnKQorICAgICAgICAgICAgICAgIHMuVGFrZSgpOworICAg
ICAgICAgICAgZWxzZSBpZiAocy5QZWVrKCkgPT0gJy0nKSB7CisgICAgICAgICAgICAgICAgcy5U
YWtlKCk7CisgICAgICAgICAgICAgICAgZXhwTWludXMgPSB0cnVlOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAocy5QZWVrKCkgPj0gJzAnICYmIHMuUGVlaygpIDw9ICc5Jykgewor
ICAgICAgICAgICAgICAgIGV4cCA9IHMuVGFrZSgpIC0gJzAnOworICAgICAgICAgICAgICAgIHdo
aWxlIChzLlBlZWsoKSA+PSAnMCcgJiYgcy5QZWVrKCkgPD0gJzknKSB7CisgICAgICAgICAgICAg
ICAgICAgIGV4cCA9IGV4cCAqIDEwICsgKHMuVGFrZSgpIC0gJzAnKTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGV4cCA+IDMwOCAmJiAhZXhwTWludXMpIC8vIGV4cCA+IDMwOCBzaG91bGQgYmUg
cmFyZSwgc28gaXQgc2hvdWxkIGJlIGNoZWNrZWQgZmlyc3QuCisgICAgICAgICAgICAgICAgICAg
ICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Ioa1BhcnNlRXJyb3JOdW1iZXJUb29CaWcsIHMuVGVs
bCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SKGtQYXJzZUVycm9yTnVtYmVy
TWlzc0V4cG9uZW50LCBzLlRlbGwoKSk7CisKKyAgICAgICAgICAgIGlmIChleHBNaW51cykKKyAg
ICAgICAgICAgICAgICBleHAgPSAtZXhwOworICAgICAgICB9CisKKyAgICAgICAgLy8gRmluaXNo
IHBhcnNpbmcsIGNhbGwgZXZlbnQgYWNjb3JkaW5nIHRvIHRoZSB0eXBlIG9mIG51bWJlci4KKyAg
ICAgICAgYm9vbCBjb250ID0gdHJ1ZTsKKyAgICAgICAgc2l6ZV90IGxlbmd0aCA9IHMuTGVuZ3Ro
KCk7CisgICAgICAgIGNvbnN0IGNoYXIqIGRlY2ltYWwgPSBzLlBvcCgpOyAgLy8gUG9wIHN0YWNr
IG5vIG1hdHRlciBpZiBpdCB3aWxsIGJlIHVzZWQgb3Igbm90LgorCisgICAgICAgIGlmICh1c2VE
b3VibGUpIHsKKyAgICAgICAgICAgIGludCBwID0gZXhwICsgZXhwRnJhYzsKKyAgICAgICAgICAg
IGlmIChwYXJzZUZsYWdzICYga1BhcnNlRnVsbFByZWNpc2lvbkZsYWcpCisgICAgICAgICAgICAg
ICAgZCA9IGludGVybmFsOjpTdHJ0b2RGdWxsUHJlY2lzaW9uKGQsIHAsIGRlY2ltYWwsIGxlbmd0
aCwgZGVjaW1hbFBvc2l0aW9uLCBleHApOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIGQgPSBpbnRlcm5hbDo6U3RydG9kTm9ybWFsUHJlY2lzaW9uKGQsIHApOworCisgICAgICAg
ICAgICBjb250ID0gaGFuZGxlci5Eb3VibGUobWludXMgPyAtZCA6IGQpOworICAgICAgICB9Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKHVzZTY0Yml0KSB7CisgICAgICAgICAgICAg
ICAgaWYgKG1pbnVzKQorICAgICAgICAgICAgICAgICAgICBjb250ID0gaGFuZGxlci5JbnQ2NCgt
KGludDY0X3QpaTY0KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IGNvbnQgPSBoYW5kbGVyLlVpbnQ2NChpNjQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKG1pbnVzKQorICAgICAgICAgICAgICAgICAgICBj
b250ID0gaGFuZGxlci5JbnQoLShpbnQpaSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICBjb250ID0gaGFuZGxlci5VaW50KGkpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGlmICghY29udCkKKyAgICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9F
UlJPUihrUGFyc2VFcnJvclRlcm1pbmF0aW9uLCBzLlRlbGwoKSk7CisgICAgfQorCisgICAgLy8g
UGFyc2UgYW55IEpTT04gdmFsdWUKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBwYXJzZUZsYWdzLCB0
eXBlbmFtZSBJbnB1dFN0cmVhbSwgdHlwZW5hbWUgSGFuZGxlcj4KKyAgICB2b2lkIFBhcnNlVmFs
dWUoSW5wdXRTdHJlYW0mIGlzLCBIYW5kbGVyJiBoYW5kbGVyKSB7CisgICAgICAgIHN3aXRjaCAo
aXMuUGVlaygpKSB7CisgICAgICAgICAgICBjYXNlICduJzogUGFyc2VOdWxsICA8cGFyc2VGbGFn
cz4oaXMsIGhhbmRsZXIpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ3QnOiBQYXJzZVRydWUg
IDxwYXJzZUZsYWdzPihpcywgaGFuZGxlcik7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAnZic6
IFBhcnNlRmFsc2UgPHBhcnNlRmxhZ3M+KGlzLCBoYW5kbGVyKTsgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlICciJzogUGFyc2VTdHJpbmc8cGFyc2VGbGFncz4oaXMsIGhhbmRsZXIpOyBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgJ3snOiBQYXJzZU9iamVjdDxwYXJzZUZsYWdzPihpcywgaGFuZGxl
cik7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAnWyc6IFBhcnNlQXJyYXkgPHBhcnNlRmxhZ3M+
KGlzLCBoYW5kbGVyKTsgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0IDogUGFyc2VOdW1iZXI8
cGFyc2VGbGFncz4oaXMsIGhhbmRsZXIpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gSXRl
cmF0aXZlIFBhcnNpbmcKKworICAgIC8vIFN0YXRlcworICAgIGVudW0gSXRlcmF0aXZlUGFyc2lu
Z1N0YXRlIHsKKyAgICAgICAgSXRlcmF0aXZlUGFyc2luZ1N0YXJ0U3RhdGUgPSAwLAorICAgICAg
ICBJdGVyYXRpdmVQYXJzaW5nRmluaXNoU3RhdGUsCisgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdF
cnJvclN0YXRlLAorCisgICAgICAgIC8vIE9iamVjdCBzdGF0ZXMKKyAgICAgICAgSXRlcmF0aXZl
UGFyc2luZ09iamVjdEluaXRpYWxTdGF0ZSwKKyAgICAgICAgSXRlcmF0aXZlUGFyc2luZ01lbWJl
cktleVN0YXRlLAorICAgICAgICBJdGVyYXRpdmVQYXJzaW5nS2V5VmFsdWVEZWxpbWl0ZXJTdGF0
ZSwKKyAgICAgICAgSXRlcmF0aXZlUGFyc2luZ01lbWJlclZhbHVlU3RhdGUsCisgICAgICAgIEl0
ZXJhdGl2ZVBhcnNpbmdNZW1iZXJEZWxpbWl0ZXJTdGF0ZSwKKyAgICAgICAgSXRlcmF0aXZlUGFy
c2luZ09iamVjdEZpbmlzaFN0YXRlLAorCisgICAgICAgIC8vIEFycmF5IHN0YXRlcworICAgICAg
ICBJdGVyYXRpdmVQYXJzaW5nQXJyYXlJbml0aWFsU3RhdGUsCisgICAgICAgIEl0ZXJhdGl2ZVBh
cnNpbmdFbGVtZW50U3RhdGUsCisgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFbGVtZW50RGVsaW1p
dGVyU3RhdGUsCisgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdBcnJheUZpbmlzaFN0YXRlLAorCisg
ICAgICAgIC8vIFNpbmdsZSB2YWx1ZSBzdGF0ZQorICAgICAgICBJdGVyYXRpdmVQYXJzaW5nVmFs
dWVTdGF0ZSwKKworICAgICAgICBjSXRlcmF0aXZlUGFyc2luZ1N0YXRlQ291bnQKKyAgICB9Owor
CisgICAgLy8gVG9rZW5zCisgICAgZW51bSBUb2tlbiB7CisgICAgICAgIExlZnRCcmFja2V0VG9r
ZW4gPSAwLAorICAgICAgICBSaWdodEJyYWNrZXRUb2tlbiwKKworICAgICAgICBMZWZ0Q3VybHlC
cmFja2V0VG9rZW4sCisgICAgICAgIFJpZ2h0Q3VybHlCcmFja2V0VG9rZW4sCisKKyAgICAgICAg
Q29tbWFUb2tlbiwKKyAgICAgICAgQ29sb25Ub2tlbiwKKworICAgICAgICBTdHJpbmdUb2tlbiwK
KyAgICAgICAgRmFsc2VUb2tlbiwKKyAgICAgICAgVHJ1ZVRva2VuLAorICAgICAgICBOdWxsVG9r
ZW4sCisgICAgICAgIE51bWJlclRva2VuLAorCisgICAgICAgIGtUb2tlbkNvdW50CisgICAgfTsK
KworICAgIFJBUElESlNPTl9GT1JDRUlOTElORSBUb2tlbiBUb2tlbml6ZShDaCBjKSB7CisKKy8v
IUBjb25kIFJBUElESlNPTl9ISURERU5fRlJPTV9ET1hZR0VOCisjZGVmaW5lIE4gTnVtYmVyVG9r
ZW4KKyNkZWZpbmUgTjE2IE4sTixOLE4sTixOLE4sTixOLE4sTixOLE4sTixOLE4KKyAgICAgICAg
Ly8gTWFwcyBmcm9tIEFTQ0lJIHRvIFRva2VuCisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBjaGFyIHRva2VuTWFwWzI1Nl0gPSB7CisgICAgICAgICAgICBOMTYsIC8vIDAwfjBGCisgICAg
ICAgICAgICBOMTYsIC8vIDEwfjFGCisgICAgICAgICAgICBOLCBOLCBTdHJpbmdUb2tlbiwgTiwg
TiwgTiwgTiwgTiwgTiwgTiwgTiwgTiwgQ29tbWFUb2tlbiwgTiwgTiwgTiwgLy8gMjB+MkYKKyAg
ICAgICAgICAgIE4sIE4sIE4sIE4sIE4sIE4sIE4sIE4sIE4sIE4sIENvbG9uVG9rZW4sIE4sIE4s
IE4sIE4sIE4sIC8vIDMwfjNGCisgICAgICAgICAgICBOMTYsIC8vIDQwfjRGCisgICAgICAgICAg
ICBOLCBOLCBOLCBOLCBOLCBOLCBOLCBOLCBOLCBOLCBOLCBMZWZ0QnJhY2tldFRva2VuLCBOLCBS
aWdodEJyYWNrZXRUb2tlbiwgTiwgTiwgLy8gNTB+NUYKKyAgICAgICAgICAgIE4sIE4sIE4sIE4s
IE4sIE4sIEZhbHNlVG9rZW4sIE4sIE4sIE4sIE4sIE4sIE4sIE4sIE51bGxUb2tlbiwgTiwgLy8g
NjB+NkYKKyAgICAgICAgICAgIE4sIE4sIE4sIE4sIFRydWVUb2tlbiwgTiwgTiwgTiwgTiwgTiwg
TiwgTGVmdEN1cmx5QnJhY2tldFRva2VuLCBOLCBSaWdodEN1cmx5QnJhY2tldFRva2VuLCBOLCBO
LCAvLyA3MH43RgorICAgICAgICAgICAgTjE2LCBOMTYsIE4xNiwgTjE2LCBOMTYsIE4xNiwgTjE2
LCBOMTYgLy8gODB+RkYKKyAgICAgICAgfTsKKyN1bmRlZiBOCisjdW5kZWYgTjE2CisvLyFAZW5k
Y29uZAorICAgICAgICAKKyAgICAgICAgaWYgKHNpemVvZihDaCkgPT0gMSB8fCB1bnNpZ25lZChj
KSA8IDI1NikKKyAgICAgICAgICAgIHJldHVybiAoVG9rZW4pdG9rZW5NYXBbKHVuc2lnbmVkIGNo
YXIpY107CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBOdW1iZXJUb2tlbjsKKyAg
ICB9CisKKyAgICBSQVBJREpTT05fRk9SQ0VJTkxJTkUgSXRlcmF0aXZlUGFyc2luZ1N0YXRlIFBy
ZWRpY3QoSXRlcmF0aXZlUGFyc2luZ1N0YXRlIHN0YXRlLCBUb2tlbiB0b2tlbikgeworICAgICAg
ICAvLyBjdXJyZW50IHN0YXRlIHggb25lIGxvb2thaGVhZCB0b2tlbiAtPiBuZXcgc3RhdGUKKyAg
ICAgICAgc3RhdGljIGNvbnN0IGNoYXIgR1tjSXRlcmF0aXZlUGFyc2luZ1N0YXRlQ291bnRdW2tU
b2tlbkNvdW50XSA9IHsKKyAgICAgICAgICAgIC8vIFN0YXJ0CisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0FycmF5SW5pdGlhbFN0YXRlLCAgLy8gTGVmdCBi
cmFja2V0CisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAg
ICAgLy8gUmlnaHQgYnJhY2tldAorICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdPYmpl
Y3RJbml0aWFsU3RhdGUsIC8vIExlZnQgY3VybHkgYnJhY2tldAorICAgICAgICAgICAgICAgIEl0
ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgIC8vIFJpZ2h0IGN1cmx5IGJyYWNrZXQK
KyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAvLyBD
b21tYQorICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAg
IC8vIENvbG9uCisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ1ZhbHVlU3RhdGUsICAg
ICAgICAgLy8gU3RyaW5nCisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ1ZhbHVlU3Rh
dGUsICAgICAgICAgLy8gRmFsc2UKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nVmFs
dWVTdGF0ZSwgICAgICAgICAvLyBUcnVlCisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2lu
Z1ZhbHVlU3RhdGUsICAgICAgICAgLy8gTnVsbAorICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBh
cnNpbmdWYWx1ZVN0YXRlICAgICAgICAgIC8vIE51bWJlcgorICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgIC8vIEZpbmlzaChzaW5rIHN0YXRlKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0
ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRl
LCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQ
YXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsIEl0ZXJhdGl2ZVBh
cnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFy
c2luZ0Vycm9yU3RhdGUsCisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3Rh
dGUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAvLyBFcnJvcihzaW5rIHN0YXRlKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJ
dGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsIEl0
ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwKKyAg
ICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2lu
Z0Vycm9yU3RhdGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJzaW5n
RXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsCisgICAgICAgICAgICAgICAg
SXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAv
LyBPYmplY3RJbml0aWFsCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSXRlcmF0aXZl
UGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgLy8gTGVmdCBicmFja2V0CisgICAgICAgICAgICAg
ICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgLy8gUmlnaHQgYnJhY2tldAor
ICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgIC8vIExl
ZnQgY3VybHkgYnJhY2tldAorICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdPYmplY3RG
aW5pc2hTdGF0ZSwgIC8vIFJpZ2h0IGN1cmx5IGJyYWNrZXQKKyAgICAgICAgICAgICAgICBJdGVy
YXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAvLyBDb21tYQorICAgICAgICAgICAgICAg
IEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgIC8vIENvbG9uCisgICAgICAgICAg
ICAgICAgSXRlcmF0aXZlUGFyc2luZ01lbWJlcktleVN0YXRlLCAgICAgLy8gU3RyaW5nCisgICAg
ICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgLy8gRmFsc2UK
KyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAvLyBU
cnVlCisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAg
Ly8gTnVsbAorICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlICAgICAg
ICAgIC8vIE51bWJlcgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIC8vIE1lbWJlcktleQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRl
LCAgICAgICAgICAgICAvLyBMZWZ0IGJyYWNrZXQKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQ
YXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAgICAgLy8gUmlnaHQgYnJhY2tldAorICAgICAgICAg
ICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgICAgICAvLyBMZWZ0IGN1
cmx5IGJyYWNrZXQKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwg
ICAgICAgICAgICAgLy8gUmlnaHQgY3VybHkgYnJhY2tldAorICAgICAgICAgICAgICAgIEl0ZXJh
dGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgICAgICAvLyBDb21tYQorICAgICAgICAgICAg
ICAgIEl0ZXJhdGl2ZVBhcnNpbmdLZXlWYWx1ZURlbGltaXRlclN0YXRlLCAvLyBDb2xvbgorICAg
ICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgICAgICAvLyBT
dHJpbmcKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAg
ICAgICAgLy8gRmFsc2UKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0
ZSwgICAgICAgICAgICAgLy8gVHJ1ZQorICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdF
cnJvclN0YXRlLCAgICAgICAgICAgICAvLyBOdWxsCisgICAgICAgICAgICAgICAgSXRlcmF0aXZl
UGFyc2luZ0Vycm9yU3RhdGUgICAgICAgICAgICAgIC8vIE51bWJlcgorICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgIC8vIEtleVZhbHVlRGVsaW1pdGVyCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0FycmF5SW5pdGlhbFN0YXRlLCAgICAgIC8vIExlZnQg
YnJhY2tldChwdXNoIE1lbWJlclZhbHVlIHN0YXRlKQorICAgICAgICAgICAgICAgIEl0ZXJhdGl2
ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgICAgICAvLyBSaWdodCBicmFja2V0CisgICAgICAg
ICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ09iamVjdEluaXRpYWxTdGF0ZSwgICAgIC8vIExlZnQg
Y3VybHkgYnJhY2tldChwdXNoIE1lbWJlclZhbHVlIHN0YXRlKQorICAgICAgICAgICAgICAgIEl0
ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgICAgICAvLyBSaWdodCBjdXJseSBicmFj
a2V0CisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAg
ICAgIC8vIENvbW1hCisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUs
ICAgICAgICAgICAgIC8vIENvbG9uCisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ01l
bWJlclZhbHVlU3RhdGUsICAgICAgIC8vIFN0cmluZworICAgICAgICAgICAgICAgIEl0ZXJhdGl2
ZVBhcnNpbmdNZW1iZXJWYWx1ZVN0YXRlLCAgICAgICAvLyBGYWxzZQorICAgICAgICAgICAgICAg
IEl0ZXJhdGl2ZVBhcnNpbmdNZW1iZXJWYWx1ZVN0YXRlLCAgICAgICAvLyBUcnVlCisgICAgICAg
ICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ01lbWJlclZhbHVlU3RhdGUsICAgICAgIC8vIE51bGwK
KyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nTWVtYmVyVmFsdWVTdGF0ZSAgICAgICAg
Ly8gTnVtYmVyCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgLy8gTWVtYmVyVmFsdWUKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwg
ICAgICAgICAgICAgLy8gTGVmdCBicmFja2V0CisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFy
c2luZ0Vycm9yU3RhdGUsICAgICAgICAgICAgIC8vIFJpZ2h0IGJyYWNrZXQKKyAgICAgICAgICAg
ICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAgICAgLy8gTGVmdCBjdXJs
eSBicmFja2V0CisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ09iamVjdEZpbmlzaFN0
YXRlLCAgICAgIC8vIFJpZ2h0IGN1cmx5IGJyYWNrZXQKKyAgICAgICAgICAgICAgICBJdGVyYXRp
dmVQYXJzaW5nTWVtYmVyRGVsaW1pdGVyU3RhdGUsICAgLy8gQ29tbWEKKyAgICAgICAgICAgICAg
ICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAgICAgLy8gQ29sb24KKyAgICAg
ICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAgICAgLy8gU3Ry
aW5nCisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAg
ICAgIC8vIEZhbHNlCisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUs
ICAgICAgICAgICAgIC8vIFRydWUKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJy
b3JTdGF0ZSwgICAgICAgICAgICAgLy8gTnVsbAorICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBh
cnNpbmdFcnJvclN0YXRlICAgICAgICAgICAgICAvLyBOdW1iZXIKKyAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAvLyBNZW1iZXJEZWxpbWl0ZXIKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAvLyBMZWZ0IGJyYWNrZXQK
KyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAvLyBS
aWdodCBicmFja2V0CisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUs
ICAgICAgICAgLy8gTGVmdCBjdXJseSBicmFja2V0CisgICAgICAgICAgICAgICAgSXRlcmF0aXZl
UGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgLy8gUmlnaHQgY3VybHkgYnJhY2tldAorICAgICAg
ICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgIC8vIENvbW1hCisg
ICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgLy8gQ29s
b24KKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nTWVtYmVyS2V5U3RhdGUsICAgICAv
LyBTdHJpbmcKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAg
ICAgICAvLyBGYWxzZQorICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRl
LCAgICAgICAgIC8vIFRydWUKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JT
dGF0ZSwgICAgICAgICAvLyBOdWxsCisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vy
cm9yU3RhdGUgICAgICAgICAgLy8gTnVtYmVyCisgICAgICAgICAgICB9LAorICAgICAgICAgICAg
Ly8gT2JqZWN0RmluaXNoKHNpbmsgc3RhdGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRl
LCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUs
IEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLAorICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBh
cnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFy
c2luZ0Vycm9yU3RhdGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJz
aW5nRXJyb3JTdGF0ZSwKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0
ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIC8vIEFycmF5SW5pdGlhbAorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdBcnJheUluaXRpYWxTdGF0ZSwg
ICAgICAvLyBMZWZ0IGJyYWNrZXQocHVzaCBFbGVtZW50IHN0YXRlKQorICAgICAgICAgICAgICAg
IEl0ZXJhdGl2ZVBhcnNpbmdBcnJheUZpbmlzaFN0YXRlLCAgICAgICAvLyBSaWdodCBicmFja2V0
CisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ09iamVjdEluaXRpYWxTdGF0ZSwgICAg
IC8vIExlZnQgY3VybHkgYnJhY2tldChwdXNoIEVsZW1lbnQgc3RhdGUpCisgICAgICAgICAgICAg
ICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgICAgIC8vIFJpZ2h0IGN1cmx5
IGJyYWNrZXQKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAg
ICAgICAgICAgLy8gQ29tbWEKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JT
dGF0ZSwgICAgICAgICAgICAgLy8gQ29sb24KKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJz
aW5nRWxlbWVudFN0YXRlLCAgICAgICAgICAgLy8gU3RyaW5nCisgICAgICAgICAgICAgICAgSXRl
cmF0aXZlUGFyc2luZ0VsZW1lbnRTdGF0ZSwgICAgICAgICAgIC8vIEZhbHNlCisgICAgICAgICAg
ICAgICAgSXRlcmF0aXZlUGFyc2luZ0VsZW1lbnRTdGF0ZSwgICAgICAgICAgIC8vIFRydWUKKyAg
ICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRWxlbWVudFN0YXRlLCAgICAgICAgICAgLy8g
TnVsbAorICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFbGVtZW50U3RhdGUgICAgICAg
ICAgICAvLyBOdW1iZXIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAvLyBFbGVtZW50Cisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUs
ICAgICAgICAgICAgIC8vIExlZnQgYnJhY2tldAorICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBh
cnNpbmdBcnJheUZpbmlzaFN0YXRlLCAgICAgICAvLyBSaWdodCBicmFja2V0CisgICAgICAgICAg
ICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgICAgIC8vIExlZnQgY3Vy
bHkgYnJhY2tldAorICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAg
ICAgICAgICAgICAvLyBSaWdodCBjdXJseSBicmFja2V0CisgICAgICAgICAgICAgICAgSXRlcmF0
aXZlUGFyc2luZ0VsZW1lbnREZWxpbWl0ZXJTdGF0ZSwgIC8vIENvbW1hCisgICAgICAgICAgICAg
ICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgICAgIC8vIENvbG9uCisgICAg
ICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgICAgIC8vIFN0
cmluZworICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAg
ICAgICAvLyBGYWxzZQorICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRl
LCAgICAgICAgICAgICAvLyBUcnVlCisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vy
cm9yU3RhdGUsICAgICAgICAgICAgIC8vIE51bGwKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQ
YXJzaW5nRXJyb3JTdGF0ZSAgICAgICAgICAgICAgLy8gTnVtYmVyCisgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgLy8gRWxlbWVudERlbGltaXRlcgorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdBcnJheUluaXRpYWxTdGF0ZSwgICAgICAvLyBMZWZ0IGJy
YWNrZXQocHVzaCBFbGVtZW50IHN0YXRlKQorICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNp
bmdFcnJvclN0YXRlLCAgICAgICAgICAgICAvLyBSaWdodCBicmFja2V0CisgICAgICAgICAgICAg
ICAgSXRlcmF0aXZlUGFyc2luZ09iamVjdEluaXRpYWxTdGF0ZSwgICAgIC8vIExlZnQgY3VybHkg
YnJhY2tldChwdXNoIEVsZW1lbnQgc3RhdGUpCisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFy
c2luZ0Vycm9yU3RhdGUsICAgICAgICAgICAgIC8vIFJpZ2h0IGN1cmx5IGJyYWNrZXQKKyAgICAg
ICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAgICAgLy8gQ29t
bWEKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAg
ICAgLy8gQ29sb24KKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRWxlbWVudFN0YXRl
LCAgICAgICAgICAgLy8gU3RyaW5nCisgICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vs
ZW1lbnRTdGF0ZSwgICAgICAgICAgIC8vIEZhbHNlCisgICAgICAgICAgICAgICAgSXRlcmF0aXZl
UGFyc2luZ0VsZW1lbnRTdGF0ZSwgICAgICAgICAgIC8vIFRydWUKKyAgICAgICAgICAgICAgICBJ
dGVyYXRpdmVQYXJzaW5nRWxlbWVudFN0YXRlLCAgICAgICAgICAgLy8gTnVsbAorICAgICAgICAg
ICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFbGVtZW50U3RhdGUgICAgICAgICAgICAvLyBOdW1iZXIK
KyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAvLyBBcnJheUZpbmlzaChzaW5rIHN0YXRlKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRl
LCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUs
IEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwK
KyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFy
c2luZ0Vycm9yU3RhdGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJz
aW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsCisgICAgICAgICAgICAg
ICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAvLyBTaW5nbGUgVmFsdWUgKHNpbmsgc3RhdGUpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0
YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3Rh
dGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLAorICAgICAgICAgICAgICAgIEl0ZXJhdGl2
ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZl
UGFyc2luZ0Vycm9yU3RhdGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQ
YXJzaW5nRXJyb3JTdGF0ZSwKKyAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JT
dGF0ZQorICAgICAgICAgICAgfQorICAgICAgICB9OyAvLyBFbmQgb2YgRworCisgICAgICAgIHJl
dHVybiAoSXRlcmF0aXZlUGFyc2luZ1N0YXRlKUdbc3RhdGVdW3Rva2VuXTsKKyAgICB9CisKKyAg
ICAvLyBNYWtlIGFuIGFkdmFuY2UgaW4gdGhlIHRva2VuIHN0cmVhbSBhbmQgc3RhdGUgYmFzZWQg
b24gdGhlIGNhbmRpZGF0ZSBkZXN0aW5hdGlvbiBzdGF0ZSB3aGljaCB3YXMgcmV0dXJuZWQgYnkg
VHJhbnNpdCgpLgorICAgIC8vIE1heSByZXR1cm4gYSBuZXcgc3RhdGUgb24gc3RhdGUgcG9wLgor
ICAgIHRlbXBsYXRlIDx1bnNpZ25lZCBwYXJzZUZsYWdzLCB0eXBlbmFtZSBJbnB1dFN0cmVhbSwg
dHlwZW5hbWUgSGFuZGxlcj4KKyAgICBSQVBJREpTT05fRk9SQ0VJTkxJTkUgSXRlcmF0aXZlUGFy
c2luZ1N0YXRlIFRyYW5zaXQoSXRlcmF0aXZlUGFyc2luZ1N0YXRlIHNyYywgVG9rZW4gdG9rZW4s
IEl0ZXJhdGl2ZVBhcnNpbmdTdGF0ZSBkc3QsIElucHV0U3RyZWFtJiBpcywgSGFuZGxlciYgaGFu
ZGxlcikgeworICAgICAgICBzd2l0Y2ggKGRzdCkgeworICAgICAgICBjYXNlIEl0ZXJhdGl2ZVBh
cnNpbmdTdGFydFN0YXRlOgorICAgICAgICAgICAgUkFQSURKU09OX0FTU0VSVChmYWxzZSk7Cisg
ICAgICAgICAgICByZXR1cm4gSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGU7CisKKyAgICAgICAg
Y2FzZSBJdGVyYXRpdmVQYXJzaW5nRmluaXNoU3RhdGU6CisgICAgICAgICAgICByZXR1cm4gZHN0
OworCisgICAgICAgIGNhc2UgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGU6CisgICAgICAgICAg
ICByZXR1cm4gZHN0OworCisgICAgICAgIGNhc2UgSXRlcmF0aXZlUGFyc2luZ09iamVjdEluaXRp
YWxTdGF0ZToKKyAgICAgICAgY2FzZSBJdGVyYXRpdmVQYXJzaW5nQXJyYXlJbml0aWFsU3RhdGU6
CisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFB1c2ggdGhlIHN0YXRlKEVsZW1lbnQgb3IgTWVt
ZWJlclZhbHVlKSBpZiB3ZSBhcmUgbmVzdGVkIGluIGFub3RoZXIgYXJyYXkgb3IgdmFsdWUgb2Yg
bWVtYmVyLgorICAgICAgICAgICAgLy8gSW4gdGhpcyB3YXkgd2UgY2FuIGdldCB0aGUgY29ycmVj
dCBzdGF0ZSBvbiBPYmplY3RGaW5pc2ggb3IgQXJyYXlGaW5pc2ggYnkgZnJhbWUgcG9wLgorICAg
ICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ1N0YXRlIG4gPSBzcmM7CisgICAgICAgICAgICBpZiAo
c3JjID09IEl0ZXJhdGl2ZVBhcnNpbmdBcnJheUluaXRpYWxTdGF0ZSB8fCBzcmMgPT0gSXRlcmF0
aXZlUGFyc2luZ0VsZW1lbnREZWxpbWl0ZXJTdGF0ZSkKKyAgICAgICAgICAgICAgICBuID0gSXRl
cmF0aXZlUGFyc2luZ0VsZW1lbnRTdGF0ZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHNyYyA9PSBJ
dGVyYXRpdmVQYXJzaW5nS2V5VmFsdWVEZWxpbWl0ZXJTdGF0ZSkKKyAgICAgICAgICAgICAgICBu
ID0gSXRlcmF0aXZlUGFyc2luZ01lbWJlclZhbHVlU3RhdGU7CisgICAgICAgICAgICAvLyBQdXNo
IGN1cnJlbnQgc3RhdGUuCisgICAgICAgICAgICAqc3RhY2tfLnRlbXBsYXRlIFB1c2g8U2l6ZVR5
cGU+KDEpID0gbjsKKyAgICAgICAgICAgIC8vIEluaXRpYWxpemUgYW5kIHB1c2ggdGhlIG1lbWJl
ci9lbGVtZW50IGNvdW50LgorICAgICAgICAgICAgKnN0YWNrXy50ZW1wbGF0ZSBQdXNoPFNpemVU
eXBlPigxKSA9IDA7CisgICAgICAgICAgICAvLyBDYWxsIGhhbmRsZXIKKyAgICAgICAgICAgIGJv
b2wgaHIgPSAoZHN0ID09IEl0ZXJhdGl2ZVBhcnNpbmdPYmplY3RJbml0aWFsU3RhdGUpID8gaGFu
ZGxlci5TdGFydE9iamVjdCgpIDogaGFuZGxlci5TdGFydEFycmF5KCk7CisgICAgICAgICAgICAv
LyBPbiBoYW5kbGVyIHNob3J0IGNpcmN1aXRzIHRoZSBwYXJzaW5nLgorICAgICAgICAgICAgaWYg
KCFocikgeworICAgICAgICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUl9OT1JFVFVSTihr
UGFyc2VFcnJvclRlcm1pbmF0aW9uLCBpcy5UZWxsKCkpOworICAgICAgICAgICAgICAgIHJldHVy
biBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgIGlzLlRha2UoKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gZHN0OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgY2FzZSBJdGVyYXRp
dmVQYXJzaW5nTWVtYmVyS2V5U3RhdGU6CisgICAgICAgICAgICBQYXJzZVN0cmluZzxwYXJzZUZs
YWdzPihpcywgaGFuZGxlciwgdHJ1ZSk7CisgICAgICAgICAgICBpZiAoSGFzUGFyc2VFcnJvcigp
KQorICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gZHN0OworCisgICAgICAgIGNh
c2UgSXRlcmF0aXZlUGFyc2luZ0tleVZhbHVlRGVsaW1pdGVyU3RhdGU6CisgICAgICAgICAgICBp
ZiAodG9rZW4gPT0gQ29sb25Ub2tlbikgeworICAgICAgICAgICAgICAgIGlzLlRha2UoKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZHN0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZTsKKwor
ICAgICAgICBjYXNlIEl0ZXJhdGl2ZVBhcnNpbmdNZW1iZXJWYWx1ZVN0YXRlOgorICAgICAgICAg
ICAgLy8gTXVzdCBiZSBub24tY29tcG91bmQgdmFsdWUuIE9yIGl0IHdvdWxkIGJlIE9iamVjdElu
aXRpYWwgb3IgQXJyYXlJbml0aWFsIHN0YXRlLgorICAgICAgICAgICAgUGFyc2VWYWx1ZTxwYXJz
ZUZsYWdzPihpcywgaGFuZGxlcik7CisgICAgICAgICAgICBpZiAoSGFzUGFyc2VFcnJvcigpKSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGRzdDsKKworICAgICAgICBjYXNlIEl0ZXJh
dGl2ZVBhcnNpbmdFbGVtZW50U3RhdGU6CisgICAgICAgICAgICAvLyBNdXN0IGJlIG5vbi1jb21w
b3VuZCB2YWx1ZS4gT3IgaXQgd291bGQgYmUgT2JqZWN0SW5pdGlhbCBvciBBcnJheUluaXRpYWwg
c3RhdGUuCisgICAgICAgICAgICBQYXJzZVZhbHVlPHBhcnNlRmxhZ3M+KGlzLCBoYW5kbGVyKTsK
KyAgICAgICAgICAgIGlmIChIYXNQYXJzZUVycm9yKCkpIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGU7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICByZXR1cm4gZHN0OworCisgICAgICAgIGNhc2UgSXRlcmF0aXZlUGFyc2luZ01lbWJlckRlbGlt
aXRlclN0YXRlOgorICAgICAgICBjYXNlIEl0ZXJhdGl2ZVBhcnNpbmdFbGVtZW50RGVsaW1pdGVy
U3RhdGU6CisgICAgICAgICAgICBpcy5UYWtlKCk7CisgICAgICAgICAgICAvLyBVcGRhdGUgbWVt
YmVyL2VsZW1lbnQgY291bnQuCisgICAgICAgICAgICAqc3RhY2tfLnRlbXBsYXRlIFRvcDxTaXpl
VHlwZT4oKSA9ICpzdGFja18udGVtcGxhdGUgVG9wPFNpemVUeXBlPigpICsgMTsKKyAgICAgICAg
ICAgIHJldHVybiBkc3Q7CisKKyAgICAgICAgY2FzZSBJdGVyYXRpdmVQYXJzaW5nT2JqZWN0Rmlu
aXNoU3RhdGU6CisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIEdldCBtZW1iZXIgY291bnQuCisg
ICAgICAgICAgICBTaXplVHlwZSBjID0gKnN0YWNrXy50ZW1wbGF0ZSBQb3A8U2l6ZVR5cGU+KDEp
OworICAgICAgICAgICAgLy8gSWYgdGhlIG9iamVjdCBpcyBub3QgZW1wdHksIGNvdW50IHRoZSBs
YXN0IG1lbWJlci4KKyAgICAgICAgICAgIGlmIChzcmMgPT0gSXRlcmF0aXZlUGFyc2luZ01lbWJl
clZhbHVlU3RhdGUpCisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgLy8gUmVzdG9y
ZSB0aGUgc3RhdGUuCisgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nU3RhdGUgbiA9IHN0YXRp
Y19jYXN0PEl0ZXJhdGl2ZVBhcnNpbmdTdGF0ZT4oKnN0YWNrXy50ZW1wbGF0ZSBQb3A8U2l6ZVR5
cGU+KDEpKTsKKyAgICAgICAgICAgIC8vIFRyYW5zaXQgdG8gRmluaXNoIHN0YXRlIGlmIHRoaXMg
aXMgdGhlIHRvcG1vc3Qgc2NvcGUuCisgICAgICAgICAgICBpZiAobiA9PSBJdGVyYXRpdmVQYXJz
aW5nU3RhcnRTdGF0ZSkKKyAgICAgICAgICAgICAgICBuID0gSXRlcmF0aXZlUGFyc2luZ0Zpbmlz
aFN0YXRlOworICAgICAgICAgICAgLy8gQ2FsbCBoYW5kbGVyCisgICAgICAgICAgICBib29sIGhy
ID0gaGFuZGxlci5FbmRPYmplY3QoYyk7CisgICAgICAgICAgICAvLyBPbiBoYW5kbGVyIHNob3J0
IGNpcmN1aXRzIHRoZSBwYXJzaW5nLgorICAgICAgICAgICAgaWYgKCFocikgeworICAgICAgICAg
ICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUl9OT1JFVFVSTihrUGFyc2VFcnJvclRlcm1pbmF0
aW9uLCBpcy5UZWxsKCkpOworICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpdmVQYXJzaW5n
RXJyb3JTdGF0ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgIGlzLlRha2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgSXRlcmF0aXZlUGFyc2luZ0FycmF5RmluaXNo
U3RhdGU6CisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIEdldCBlbGVtZW50IGNvdW50LgorICAg
ICAgICAgICAgU2l6ZVR5cGUgYyA9ICpzdGFja18udGVtcGxhdGUgUG9wPFNpemVUeXBlPigxKTsK
KyAgICAgICAgICAgIC8vIElmIHRoZSBhcnJheSBpcyBub3QgZW1wdHksIGNvdW50IHRoZSBsYXN0
IGVsZW1lbnQuCisgICAgICAgICAgICBpZiAoc3JjID09IEl0ZXJhdGl2ZVBhcnNpbmdFbGVtZW50
U3RhdGUpCisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgLy8gUmVzdG9yZSB0aGUg
c3RhdGUuCisgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nU3RhdGUgbiA9IHN0YXRpY19jYXN0
PEl0ZXJhdGl2ZVBhcnNpbmdTdGF0ZT4oKnN0YWNrXy50ZW1wbGF0ZSBQb3A8U2l6ZVR5cGU+KDEp
KTsKKyAgICAgICAgICAgIC8vIFRyYW5zaXQgdG8gRmluaXNoIHN0YXRlIGlmIHRoaXMgaXMgdGhl
IHRvcG1vc3Qgc2NvcGUuCisgICAgICAgICAgICBpZiAobiA9PSBJdGVyYXRpdmVQYXJzaW5nU3Rh
cnRTdGF0ZSkKKyAgICAgICAgICAgICAgICBuID0gSXRlcmF0aXZlUGFyc2luZ0ZpbmlzaFN0YXRl
OworICAgICAgICAgICAgLy8gQ2FsbCBoYW5kbGVyCisgICAgICAgICAgICBib29sIGhyID0gaGFu
ZGxlci5FbmRBcnJheShjKTsKKyAgICAgICAgICAgIC8vIE9uIGhhbmRsZXIgc2hvcnQgY2lyY3Vp
dHMgdGhlIHBhcnNpbmcuCisgICAgICAgICAgICBpZiAoIWhyKSB7CisgICAgICAgICAgICAgICAg
UkFQSURKU09OX1BBUlNFX0VSUk9SX05PUkVUVVJOKGtQYXJzZUVycm9yVGVybWluYXRpb24sIGlz
LlRlbGwoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0
YXRlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
aXMuVGFrZSgpOworICAgICAgICAgICAgICAgIHJldHVybiBuOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgY2FzZSBJdGVyYXRpdmVQYXJzaW5nVmFsdWVTdGF0ZToKKyAgICAg
ICAgICAgIC8vIE11c3QgYmUgbm9uLWNvbXBvdW5kIHZhbHVlLiBPciBpdCB3b3VsZCBiZSBPYmpl
Y3RJbml0aWFsIG9yIEFycmF5SW5pdGlhbCBzdGF0ZS4KKyAgICAgICAgICAgIFBhcnNlVmFsdWU8
cGFyc2VGbGFncz4oaXMsIGhhbmRsZXIpOworICAgICAgICAgICAgaWYgKEhhc1BhcnNlRXJyb3Io
KSkgeworICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpdmVQYXJzaW5nRmluaXNo
U3RhdGU7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJBUElESlNPTl9BU1NFUlQo
ZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlOwor
ICAgICAgICB9CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0U3RyZWFtPgor
ICAgIHZvaWQgSGFuZGxlRXJyb3IoSXRlcmF0aXZlUGFyc2luZ1N0YXRlIHNyYywgSW5wdXRTdHJl
YW0mIGlzKSB7CisgICAgICAgIGlmIChIYXNQYXJzZUVycm9yKCkpIHsKKyAgICAgICAgICAgIC8v
IEVycm9yIGZsYWcgaGFzIGJlZW4gc2V0LgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBzd2l0Y2ggKHNyYykgeworICAgICAgICBjYXNlIEl0ZXJhdGl2
ZVBhcnNpbmdTdGFydFN0YXRlOiAgICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUihrUGFy
c2VFcnJvckRvY3VtZW50RW1wdHksIGlzLlRlbGwoKSk7CisgICAgICAgIGNhc2UgSXRlcmF0aXZl
UGFyc2luZ0ZpbmlzaFN0YXRlOiAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SKGtQYXJz
ZUVycm9yRG9jdW1lbnRSb290Tm90U2luZ3VsYXIsIGlzLlRlbGwoKSk7CisgICAgICAgIGNhc2Ug
SXRlcmF0aXZlUGFyc2luZ09iamVjdEluaXRpYWxTdGF0ZToKKyAgICAgICAgY2FzZSBJdGVyYXRp
dmVQYXJzaW5nTWVtYmVyRGVsaW1pdGVyU3RhdGU6ICBSQVBJREpTT05fUEFSU0VfRVJST1Ioa1Bh
cnNlRXJyb3JPYmplY3RNaXNzTmFtZSwgaXMuVGVsbCgpKTsKKyAgICAgICAgY2FzZSBJdGVyYXRp
dmVQYXJzaW5nTWVtYmVyS2V5U3RhdGU6ICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Ioa1Bh
cnNlRXJyb3JPYmplY3RNaXNzQ29sb24sIGlzLlRlbGwoKSk7CisgICAgICAgIGNhc2UgSXRlcmF0
aXZlUGFyc2luZ01lbWJlclZhbHVlU3RhdGU6ICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SKGtQ
YXJzZUVycm9yT2JqZWN0TWlzc0NvbW1hT3JDdXJseUJyYWNrZXQsIGlzLlRlbGwoKSk7CisgICAg
ICAgIGNhc2UgSXRlcmF0aXZlUGFyc2luZ0VsZW1lbnRTdGF0ZTogICAgICAgICAgUkFQSURKU09O
X1BBUlNFX0VSUk9SKGtQYXJzZUVycm9yQXJyYXlNaXNzQ29tbWFPclNxdWFyZUJyYWNrZXQsIGlz
LlRlbGwoKSk7CisgICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SKGtQYXJzZUVycm9yVW5zcGVjaWZpY1N5bnRheEVy
cm9yLCBpcy5UZWxsKCkpOworICAgICAgICB9ICAgICAgIAorICAgIH0KKworICAgIHRlbXBsYXRl
IDx1bnNpZ25lZCBwYXJzZUZsYWdzLCB0eXBlbmFtZSBJbnB1dFN0cmVhbSwgdHlwZW5hbWUgSGFu
ZGxlcj4KKyAgICBQYXJzZVJlc3VsdCBJdGVyYXRpdmVQYXJzZShJbnB1dFN0cmVhbSYgaXMsIEhh
bmRsZXImIGhhbmRsZXIpIHsKKyAgICAgICAgcGFyc2VSZXN1bHRfLkNsZWFyKCk7CisgICAgICAg
IENsZWFyU3RhY2tPbkV4aXQgc2NvcGUoKnRoaXMpOworICAgICAgICBJdGVyYXRpdmVQYXJzaW5n
U3RhdGUgc3RhdGUgPSBJdGVyYXRpdmVQYXJzaW5nU3RhcnRTdGF0ZTsKKworICAgICAgICBTa2lw
V2hpdGVzcGFjZShpcyk7CisgICAgICAgIHdoaWxlIChpcy5QZWVrKCkgIT0gJ1wwJykgeworICAg
ICAgICAgICAgVG9rZW4gdCA9IFRva2VuaXplKGlzLlBlZWsoKSk7CisgICAgICAgICAgICBJdGVy
YXRpdmVQYXJzaW5nU3RhdGUgbiA9IFByZWRpY3Qoc3RhdGUsIHQpOworICAgICAgICAgICAgSXRl
cmF0aXZlUGFyc2luZ1N0YXRlIGQgPSBUcmFuc2l0PHBhcnNlRmxhZ3M+KHN0YXRlLCB0LCBuLCBp
cywgaGFuZGxlcik7CisKKyAgICAgICAgICAgIGlmIChkID09IEl0ZXJhdGl2ZVBhcnNpbmdFcnJv
clN0YXRlKSB7CisgICAgICAgICAgICAgICAgSGFuZGxlRXJyb3Ioc3RhdGUsIGlzKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3RhdGUgPSBk
OworCisgICAgICAgICAgICAvLyBEbyBub3QgZnVydGhlciBjb25zdW1lIHN0cmVhbXMgaWYgYSBy
b290IEpTT04gaGFzIGJlZW4gcGFyc2VkLgorICAgICAgICAgICAgaWYgKChwYXJzZUZsYWdzICYg
a1BhcnNlU3RvcFdoZW5Eb25lRmxhZykgJiYgc3RhdGUgPT0gSXRlcmF0aXZlUGFyc2luZ0Zpbmlz
aFN0YXRlKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBTa2lwV2hpdGVz
cGFjZShpcyk7CisgICAgICAgIH0KKworICAgICAgICAvLyBIYW5kbGUgdGhlIGVuZCBvZiBmaWxl
LgorICAgICAgICBpZiAoc3RhdGUgIT0gSXRlcmF0aXZlUGFyc2luZ0ZpbmlzaFN0YXRlKQorICAg
ICAgICAgICAgSGFuZGxlRXJyb3Ioc3RhdGUsIGlzKTsKKworICAgICAgICByZXR1cm4gcGFyc2VS
ZXN1bHRfOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBzaXplX3Qga0RlZmF1bHRTdGFja0Nh
cGFjaXR5ID0gMjU2OyAgICAvLyE8IERlZmF1bHQgc3RhY2sgY2FwYWNpdHkgaW4gYnl0ZXMgZm9y
IHN0b3JpbmcgYSBzaW5nbGUgZGVjb2RlZCBzdHJpbmcuCisgICAgaW50ZXJuYWw6OlN0YWNrPFN0
YWNrQWxsb2NhdG9yPiBzdGFja187ICAvLyE8IEEgc3RhY2sgZm9yIHN0b3JpbmcgZGVjb2RlZCBz
dHJpbmcgdGVtcG9yYXJpbHkgZHVyaW5nIG5vbi1kZXN0cnVjdGl2ZSBwYXJzaW5nLgorICAgIFBh
cnNlUmVzdWx0IHBhcnNlUmVzdWx0XzsKK307IC8vIGNsYXNzIEdlbmVyaWNSZWFkZXIKKworLy8h
IFJlYWRlciB3aXRoIFVURjggZW5jb2RpbmcgYW5kIGRlZmF1bHQgYWxsb2NhdG9yLgordHlwZWRl
ZiBHZW5lcmljUmVhZGVyPFVURjg8PiwgVVRGODw+ID4gUmVhZGVyOworCitSQVBJREpTT05fTkFN
RVNQQUNFX0VORAorCisjaWZkZWYgX19HTlVDX18KK1JBUElESlNPTl9ESUFHX1BPUAorI2VuZGlm
CisKKyNpZmRlZiBfTVNDX1ZFUgorUkFQSURKU09OX0RJQUdfUE9QCisjZW5kaWYKKworI2VuZGlm
IC8vIFJBUElESlNPTl9SRUFERVJfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vc3RyaW5nYnVm
ZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Ro
aXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9zdHJpbmdidWZmZXIuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFy
dHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL3N0cmluZ2J1ZmZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsOTkgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSBNaWxvIFlpcAorLy8K
Ky8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkg
cGVyc29uIG9idGFpbmluZyBhIGNvcHkKKy8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0
ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCisvLyBpbiB0
aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRh
dGlvbiB0aGUgcmlnaHRzCisvLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gs
IGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCisvLyBjb3BpZXMgb2YgdGhlIFNv
ZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy8v
IGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6
CisvLworLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBu
b3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwg
cG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorLy8KKy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURF
RCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisvLyBJ
TVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSwKKy8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBO
T05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorLy8gQVVUSE9SUyBPUiBDT1BZ
UklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgor
Ly8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBP
VEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKy8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEgg
VEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KKy8vIFRIRSBTT0ZU
V0FSRS4KKworI2lmbmRlZiBSQVBJREpTT05fU1RSSU5HQlVGRkVSX0hfCisjZGVmaW5lIFJBUElE
SlNPTl9TVFJJTkdCVUZGRVJfSF8KKworI2luY2x1ZGUgInJhcGlkanNvbi5oIgorCisjaWYgUkFQ
SURKU09OX0hBU19DWFgxMV9SVkFMVUVfUkVGUworI2luY2x1ZGUgPHV0aWxpdHk+IC8vIHN0ZDo6
bW92ZQorI2VuZGlmCisKKyNpbmNsdWRlICJpbnRlcm5hbC9zdGFjay5oIgorCitSQVBJREpTT05f
TkFNRVNQQUNFX0JFR0lOCisKKy8vISBSZXByZXNlbnRzIGFuIGluLW1lbW9yeSBvdXRwdXQgc3Ry
ZWFtLgorLyohCisgICAgXHRwYXJhbSBFbmNvZGluZyBFbmNvZGluZyBvZiB0aGUgc3RyZWFtLgor
ICAgIFx0cGFyYW0gQWxsb2NhdG9yIHR5cGUgZm9yIGFsbG9jYXRpbmcgbWVtb3J5IGJ1ZmZlci4K
KyAgICBcbm90ZSBpbXBsZW1lbnRzIFN0cmVhbSBjb25jZXB0CisqLwordGVtcGxhdGUgPHR5cGVu
YW1lIEVuY29kaW5nLCB0eXBlbmFtZSBBbGxvY2F0b3IgPSBDcnRBbGxvY2F0b3I+CitjbGFzcyBH
ZW5lcmljU3RyaW5nQnVmZmVyIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHR5cGVuYW1lIEVuY29k
aW5nOjpDaCBDaDsKKworICAgIEdlbmVyaWNTdHJpbmdCdWZmZXIoQWxsb2NhdG9yKiBhbGxvY2F0
b3IgPSAwLCBzaXplX3QgY2FwYWNpdHkgPSBrRGVmYXVsdENhcGFjaXR5KSA6IHN0YWNrXyhhbGxv
Y2F0b3IsIGNhcGFjaXR5KSB7fQorCisjaWYgUkFQSURKU09OX0hBU19DWFgxMV9SVkFMVUVfUkVG
UworICAgIEdlbmVyaWNTdHJpbmdCdWZmZXIoR2VuZXJpY1N0cmluZ0J1ZmZlciYmIHJocykgOiBz
dGFja18oc3RkOjptb3ZlKHJocy5zdGFja18pKSB7fQorICAgIEdlbmVyaWNTdHJpbmdCdWZmZXIm
IG9wZXJhdG9yPShHZW5lcmljU3RyaW5nQnVmZmVyJiYgcmhzKSB7CisgICAgICAgIGlmICgmcmhz
ICE9IHRoaXMpCisgICAgICAgICAgICBzdGFja18gPSBzdGQ6Om1vdmUocmhzLnN0YWNrXyk7Cisg
ICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisjZW5kaWYKKworICAgIHZvaWQgUHV0KENoIGMp
IHsgKnN0YWNrXy50ZW1wbGF0ZSBQdXNoPENoPigpID0gYzsgfQorICAgIHZvaWQgRmx1c2goKSB7
fQorCisgICAgdm9pZCBDbGVhcigpIHsgc3RhY2tfLkNsZWFyKCk7IH0KKyAgICB2b2lkIFNocmlu
a1RvRml0KCkgeworICAgICAgICAvLyBQdXNoIGFuZCBwb3AgYSBudWxsIHRlcm1pbmF0b3IuIFRo
aXMgaXMgc2FmZS4KKyAgICAgICAgKnN0YWNrXy50ZW1wbGF0ZSBQdXNoPENoPigpID0gJ1wwJzsK
KyAgICAgICAgc3RhY2tfLlNocmlua1RvRml0KCk7CisgICAgICAgIHN0YWNrXy50ZW1wbGF0ZSBQ
b3A8Q2g+KDEpOworICAgIH0KKyAgICBDaCogUHVzaChzaXplX3QgY291bnQpIHsgcmV0dXJuIHN0
YWNrXy50ZW1wbGF0ZSBQdXNoPENoPihjb3VudCk7IH0KKyAgICB2b2lkIFBvcChzaXplX3QgY291
bnQpIHsgc3RhY2tfLnRlbXBsYXRlIFBvcDxDaD4oY291bnQpOyB9CisKKyAgICBjb25zdCBDaCog
R2V0U3RyaW5nKCkgY29uc3QgeworICAgICAgICAvLyBQdXNoIGFuZCBwb3AgYSBudWxsIHRlcm1p
bmF0b3IuIFRoaXMgaXMgc2FmZS4KKyAgICAgICAgKnN0YWNrXy50ZW1wbGF0ZSBQdXNoPENoPigp
ID0gJ1wwJzsKKyAgICAgICAgc3RhY2tfLnRlbXBsYXRlIFBvcDxDaD4oMSk7CisKKyAgICAgICAg
cmV0dXJuIHN0YWNrXy50ZW1wbGF0ZSBCb3R0b208Q2g+KCk7CisgICAgfQorCisgICAgc2l6ZV90
IEdldFNpemUoKSBjb25zdCB7IHJldHVybiBzdGFja18uR2V0U2l6ZSgpOyB9CisKKyAgICBzdGF0
aWMgY29uc3Qgc2l6ZV90IGtEZWZhdWx0Q2FwYWNpdHkgPSAyNTY7CisgICAgbXV0YWJsZSBpbnRl
cm5hbDo6U3RhY2s8QWxsb2NhdG9yPiBzdGFja187CisKK3ByaXZhdGU6CisgICAgLy8gUHJvaGli
aXQgY29weSBjb25zdHJ1Y3RvciAmIGFzc2lnbm1lbnQgb3BlcmF0b3IuCisgICAgR2VuZXJpY1N0
cmluZ0J1ZmZlcihjb25zdCBHZW5lcmljU3RyaW5nQnVmZmVyJik7CisgICAgR2VuZXJpY1N0cmlu
Z0J1ZmZlciYgb3BlcmF0b3I9KGNvbnN0IEdlbmVyaWNTdHJpbmdCdWZmZXImKTsKK307CisKKy8v
ISBTdHJpbmcgYnVmZmVyIHdpdGggVVRGOCBlbmNvZGluZwordHlwZWRlZiBHZW5lcmljU3RyaW5n
QnVmZmVyPFVURjg8PiA+IFN0cmluZ0J1ZmZlcjsKKworLy8hIEltcGxlbWVudCBzcGVjaWFsaXpl
ZCB2ZXJzaW9uIG9mIFB1dE4oKSB3aXRoIG1lbXNldCgpIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2Uu
Cit0ZW1wbGF0ZTw+CitpbmxpbmUgdm9pZCBQdXROKEdlbmVyaWNTdHJpbmdCdWZmZXI8VVRGODw+
ID4mIHN0cmVhbSwgY2hhciBjLCBzaXplX3QgbikgeworICAgIHN0ZDo6bWVtc2V0KHN0cmVhbS5z
dGFja18uUHVzaDxjaGFyPihuKSwgYywgbiAqIHNpemVvZihjKSk7Cit9CisKK1JBUElESlNPTl9O
QU1FU1BBQ0VfRU5ECisKKyNlbmRpZiAvLyBSQVBJREpTT05fU1RSSU5HQlVGRkVSX0hfCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29u
L2luY2x1ZGUvcmFwaWRqc29uL3dyaXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpz
b24vd3JpdGVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi93cml0ZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM5MSBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExIE1p
bG8gWWlwCisvLworLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFy
Z2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorLy8gb2YgdGhpcyBzb2Z0d2FyZSBh
bmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRl
YWwKKy8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0
aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKKy8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJn
ZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKKy8vIGNvcGll
cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0
d2FyZSBpcworLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9uczoKKy8vCisvLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw
ZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorLy8gYWxsIGNvcGllcyBvciBz
dWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisvLworLy8gVEhFIFNPRlRXQVJF
IElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJF
U1MgT1IKKy8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisvLyBBVVRI
T1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VT
IE9SIE9USEVSCisvLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNU
LCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorLy8gT1VUIE9GIE9SIElOIENPTk5F
Q1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgor
Ly8gVEhFIFNPRlRXQVJFLgorCisjaWZuZGVmIFJBUElESlNPTl9XUklURVJfSF8KKyNkZWZpbmUg
UkFQSURKU09OX1dSSVRFUl9IXworCisjaW5jbHVkZSAicmFwaWRqc29uLmgiCisjaW5jbHVkZSAi
aW50ZXJuYWwvc3RhY2suaCIKKyNpbmNsdWRlICJpbnRlcm5hbC9zdHJmdW5jLmgiCisjaW5jbHVk
ZSAiaW50ZXJuYWwvZHRvYS5oIgorI2luY2x1ZGUgImludGVybmFsL2l0b2EuaCIKKyNpbmNsdWRl
ICJzdHJpbmdidWZmZXIuaCIKKyNpbmNsdWRlIDxuZXc+ICAgICAgLy8gcGxhY2VtZW50IG5ldwor
CisjaWZkZWYgX01TQ19WRVIKK1JBUElESlNPTl9ESUFHX1BVU0gKK1JBUElESlNPTl9ESUFHX09G
Rig0MTI3KSAvLyBjb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50CisjZW5kaWYKKwor
UkFQSURKU09OX05BTUVTUEFDRV9CRUdJTgorCisvLyEgSlNPTiB3cml0ZXIKKy8qISBXcml0ZXIg
aW1wbGVtZW50cyB0aGUgY29uY2VwdCBIYW5kbGVyLgorICAgIEl0IGdlbmVyYXRlcyBKU09OIHRl
eHQgYnkgZXZlbnRzIHRvIGFuIG91dHB1dCBvcy4KKworICAgIFVzZXIgbWF5IHByb2dyYW1tYXRp
Y2FsbHkgY2FsbHMgdGhlIGZ1bmN0aW9ucyBvZiBhIHdyaXRlciB0byBnZW5lcmF0ZSBKU09OIHRl
eHQuCisKKyAgICBPbiB0aGUgb3RoZXIgc2lkZSwgYSB3cml0ZXIgY2FuIGFsc28gYmUgcGFzc2Vk
IHRvIG9iamVjdHMgdGhhdCBnZW5lcmF0ZXMgZXZlbnRzLCAKKworICAgIGZvciBleGFtcGxlIFJl
YWRlcjo6UGFyc2UoKSBhbmQgRG9jdW1lbnQ6OkFjY2VwdCgpLgorCisgICAgXHRwYXJhbSBPdXRw
dXRTdHJlYW0gVHlwZSBvZiBvdXRwdXQgc3RyZWFtLgorICAgIFx0cGFyYW0gU291cmNlRW5jb2Rp
bmcgRW5jb2Rpbmcgb2Ygc291cmNlIHN0cmluZy4KKyAgICBcdHBhcmFtIFRhcmdldEVuY29kaW5n
IEVuY29kaW5nIG9mIG91dHB1dCBzdHJlYW0uCisgICAgXHRwYXJhbSBTdGFja0FsbG9jYXRvciBU
eXBlIG9mIGFsbG9jYXRvciBmb3IgYWxsb2NhdGluZyBtZW1vcnkgb2Ygc3RhY2suCisgICAgXG5v
dGUgaW1wbGVtZW50cyBIYW5kbGVyIGNvbmNlcHQKKyovCit0ZW1wbGF0ZTx0eXBlbmFtZSBPdXRw
dXRTdHJlYW0sIHR5cGVuYW1lIFNvdXJjZUVuY29kaW5nID0gVVRGODw+LCB0eXBlbmFtZSBUYXJn
ZXRFbmNvZGluZyA9IFVURjg8PiwgdHlwZW5hbWUgU3RhY2tBbGxvY2F0b3IgPSBDcnRBbGxvY2F0
b3I+CitjbGFzcyBXcml0ZXIgeworcHVibGljOgorICAgIHR5cGVkZWYgdHlwZW5hbWUgU291cmNl
RW5jb2Rpbmc6OkNoIENoOworCisgICAgLy8hIENvbnN0cnVjdG9yCisgICAgLyohIFxwYXJhbSBv
cyBPdXRwdXQgc3RyZWFtLgorICAgICAgICBccGFyYW0gc3RhY2tBbGxvY2F0b3IgVXNlciBzdXBw
bGllZCBhbGxvY2F0b3IuIElmIGl0IGlzIG51bGwsIGl0IHdpbGwgY3JlYXRlIGEgcHJpdmF0ZSBv
bmUuCisgICAgICAgIFxwYXJhbSBsZXZlbERlcHRoIEluaXRpYWwgY2FwYWNpdHkgb2Ygc3RhY2su
CisgICAgKi8KKyAgICBleHBsaWNpdAorICAgIFdyaXRlcihPdXRwdXRTdHJlYW0mIG9zLCBTdGFj
a0FsbG9jYXRvciogc3RhY2tBbGxvY2F0b3IgPSAwLCBzaXplX3QgbGV2ZWxEZXB0aCA9IGtEZWZh
dWx0TGV2ZWxEZXB0aCkgOiAKKyAgICAgICAgb3NfKCZvcyksIGxldmVsX3N0YWNrXyhzdGFja0Fs
bG9jYXRvciwgbGV2ZWxEZXB0aCAqIHNpemVvZihMZXZlbCkpLCBoYXNSb290XyhmYWxzZSkge30K
KworICAgIGV4cGxpY2l0CisgICAgV3JpdGVyKFN0YWNrQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSAw
LCBzaXplX3QgbGV2ZWxEZXB0aCA9IGtEZWZhdWx0TGV2ZWxEZXB0aCkgOgorICAgICAgICBvc18o
MCksIGxldmVsX3N0YWNrXyhhbGxvY2F0b3IsIGxldmVsRGVwdGggKiBzaXplb2YoTGV2ZWwpKSwg
aGFzUm9vdF8oZmFsc2UpIHt9CisKKyAgICAvLyEgUmVzZXQgdGhlIHdyaXRlciB3aXRoIGEgbmV3
IHN0cmVhbS4KKyAgICAvKiEKKyAgICAgICAgVGhpcyBmdW5jdGlvbiByZXNldCB0aGUgd3JpdGVy
IHdpdGggYSBuZXcgc3RyZWFtIGFuZCBkZWZhdWx0IHNldHRpbmdzLAorICAgICAgICBpbiBvcmRl
ciB0byBtYWtlIGEgV3JpdGVyIG9iamVjdCByZXVzYWJsZSBmb3Igb3V0cHV0IG11bHRpcGxlIEpT
T05zLgorCisgICAgICAgIFxwYXJhbSBvcyBOZXcgb3V0cHV0IHN0cmVhbS4KKyAgICAgICAgXGNv
ZGUKKyAgICAgICAgV3JpdGVyPE91dHB1dFN0cmVhbT4gd3JpdGVyKG9zMSk7CisgICAgICAgIHdy
aXRlci5TdGFydE9iamVjdCgpOworICAgICAgICAvLyAuLi4KKyAgICAgICAgd3JpdGVyLkVuZE9i
amVjdCgpOworCisgICAgICAgIHdyaXRlci5SZXNldChvczIpOworICAgICAgICB3cml0ZXIuU3Rh
cnRPYmplY3QoKTsKKyAgICAgICAgLy8gLi4uCisgICAgICAgIHdyaXRlci5FbmRPYmplY3QoKTsK
KyAgICAgICAgXGVuZGNvZGUKKyAgICAqLworICAgIHZvaWQgUmVzZXQoT3V0cHV0U3RyZWFtJiBv
cykgeworICAgICAgICBvc18gPSAmb3M7CisgICAgICAgIGhhc1Jvb3RfID0gZmFsc2U7CisgICAg
ICAgIGxldmVsX3N0YWNrXy5DbGVhcigpOworICAgIH0KKworICAgIC8vISBDaGVja3Mgd2hldGhl
ciB0aGUgb3V0cHV0IGlzIGEgY29tcGxldGUgSlNPTi4KKyAgICAvKiEKKyAgICAgICAgQSBjb21w
bGV0ZSBKU09OIGhhcyBhIGNvbXBsZXRlIHJvb3Qgb2JqZWN0IG9yIGFycmF5LgorICAgICovCisg
ICAgYm9vbCBJc0NvbXBsZXRlKCkgY29uc3QgeworICAgICAgICByZXR1cm4gaGFzUm9vdF8gJiYg
bGV2ZWxfc3RhY2tfLkVtcHR5KCk7CisgICAgfQorCisgICAgLyohQG5hbWUgSW1wbGVtZW50YXRp
b24gb2YgSGFuZGxlcgorICAgICAgICBcc2VlIEhhbmRsZXIKKyAgICAqLworICAgIC8vQHsKKwor
ICAgIGJvb2wgTnVsbCgpICAgICAgICAgICAgICAgICB7IFByZWZpeChrTnVsbFR5cGUpOyAgIHJl
dHVybiBXcml0ZU51bGwoKTsgfQorICAgIGJvb2wgQm9vbChib29sIGIpICAgICAgICAgICB7IFBy
ZWZpeChiID8ga1RydWVUeXBlIDoga0ZhbHNlVHlwZSk7IHJldHVybiBXcml0ZUJvb2woYik7IH0K
KyAgICBib29sIEludChpbnQgaSkgICAgICAgICAgICAgeyBQcmVmaXgoa051bWJlclR5cGUpOyBy
ZXR1cm4gV3JpdGVJbnQoaSk7IH0KKyAgICBib29sIFVpbnQodW5zaWduZWQgdSkgICAgICAgeyBQ
cmVmaXgoa051bWJlclR5cGUpOyByZXR1cm4gV3JpdGVVaW50KHUpOyB9CisgICAgYm9vbCBJbnQ2
NChpbnQ2NF90IGk2NCkgICAgIHsgUHJlZml4KGtOdW1iZXJUeXBlKTsgcmV0dXJuIFdyaXRlSW50
NjQoaTY0KTsgfQorICAgIGJvb2wgVWludDY0KHVpbnQ2NF90IHU2NCkgICB7IFByZWZpeChrTnVt
YmVyVHlwZSk7IHJldHVybiBXcml0ZVVpbnQ2NCh1NjQpOyB9CisKKyAgICAvLyEgV3JpdGVzIHRo
ZSBnaXZlbiBcYyBkb3VibGUgdmFsdWUgdG8gdGhlIHN0cmVhbQorICAgIC8qIQorICAgICAgICBc
cGFyYW0gZCBUaGUgdmFsdWUgdG8gYmUgd3JpdHRlbi4KKyAgICAgICAgXHJldHVybiBXaGV0aGVy
IGl0IGlzIHN1Y2NlZWQuCisgICAgKi8KKyAgICBib29sIERvdWJsZShkb3VibGUgZCkgICAgICAg
eyBQcmVmaXgoa051bWJlclR5cGUpOyByZXR1cm4gV3JpdGVEb3VibGUoZCk7IH0KKworICAgIGJv
b2wgU3RyaW5nKGNvbnN0IENoKiBzdHIsIFNpemVUeXBlIGxlbmd0aCwgYm9vbCBjb3B5ID0gZmFs
c2UpIHsKKyAgICAgICAgKHZvaWQpY29weTsKKyAgICAgICAgUHJlZml4KGtTdHJpbmdUeXBlKTsK
KyAgICAgICAgcmV0dXJuIFdyaXRlU3RyaW5nKHN0ciwgbGVuZ3RoKTsKKyAgICB9CisKKyAgICBi
b29sIFN0YXJ0T2JqZWN0KCkgeworICAgICAgICBQcmVmaXgoa09iamVjdFR5cGUpOworICAgICAg
ICBuZXcgKGxldmVsX3N0YWNrXy50ZW1wbGF0ZSBQdXNoPExldmVsPigpKSBMZXZlbChmYWxzZSk7
CisgICAgICAgIHJldHVybiBXcml0ZVN0YXJ0T2JqZWN0KCk7CisgICAgfQorCisgICAgYm9vbCBL
ZXkoY29uc3QgQ2gqIHN0ciwgU2l6ZVR5cGUgbGVuZ3RoLCBib29sIGNvcHkgPSBmYWxzZSkgeyBy
ZXR1cm4gU3RyaW5nKHN0ciwgbGVuZ3RoLCBjb3B5KTsgfQorCQorICAgIGJvb2wgRW5kT2JqZWN0
KFNpemVUeXBlIG1lbWJlckNvdW50ID0gMCkgeworICAgICAgICAodm9pZCltZW1iZXJDb3VudDsK
KyAgICAgICAgUkFQSURKU09OX0FTU0VSVChsZXZlbF9zdGFja18uR2V0U2l6ZSgpID49IHNpemVv
ZihMZXZlbCkpOworICAgICAgICBSQVBJREpTT05fQVNTRVJUKCFsZXZlbF9zdGFja18udGVtcGxh
dGUgVG9wPExldmVsPigpLT5pbkFycmF5KTsKKyAgICAgICAgbGV2ZWxfc3RhY2tfLnRlbXBsYXRl
IFBvcDxMZXZlbD4oMSk7CisgICAgICAgIGJvb2wgcmV0ID0gV3JpdGVFbmRPYmplY3QoKTsKKyAg
ICAgICAgaWYgKGxldmVsX3N0YWNrXy5FbXB0eSgpKSAgIC8vIGVuZCBvZiBqc29uIHRleHQKKyAg
ICAgICAgICAgIG9zXy0+Rmx1c2goKTsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAg
ICBib29sIFN0YXJ0QXJyYXkoKSB7CisgICAgICAgIFByZWZpeChrQXJyYXlUeXBlKTsKKyAgICAg
ICAgbmV3IChsZXZlbF9zdGFja18udGVtcGxhdGUgUHVzaDxMZXZlbD4oKSkgTGV2ZWwodHJ1ZSk7
CisgICAgICAgIHJldHVybiBXcml0ZVN0YXJ0QXJyYXkoKTsKKyAgICB9CisKKyAgICBib29sIEVu
ZEFycmF5KFNpemVUeXBlIGVsZW1lbnRDb3VudCA9IDApIHsKKyAgICAgICAgKHZvaWQpZWxlbWVu
dENvdW50OworICAgICAgICBSQVBJREpTT05fQVNTRVJUKGxldmVsX3N0YWNrXy5HZXRTaXplKCkg
Pj0gc2l6ZW9mKExldmVsKSk7CisgICAgICAgIFJBUElESlNPTl9BU1NFUlQobGV2ZWxfc3RhY2tf
LnRlbXBsYXRlIFRvcDxMZXZlbD4oKS0+aW5BcnJheSk7CisgICAgICAgIGxldmVsX3N0YWNrXy50
ZW1wbGF0ZSBQb3A8TGV2ZWw+KDEpOworICAgICAgICBib29sIHJldCA9IFdyaXRlRW5kQXJyYXko
KTsKKyAgICAgICAgaWYgKGxldmVsX3N0YWNrXy5FbXB0eSgpKSAgIC8vIGVuZCBvZiBqc29uIHRl
eHQKKyAgICAgICAgICAgIG9zXy0+Rmx1c2goKTsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9
CisgICAgLy9AfQorCisgICAgLyohIEBuYW1lIENvbnZlbmllbmNlIGV4dGVuc2lvbnMgKi8KKyAg
ICAvL0B7CisKKyAgICAvLyEgU2ltcGxlciBidXQgc2xvd2VyIG92ZXJsb2FkLgorICAgIGJvb2wg
U3RyaW5nKGNvbnN0IENoKiBzdHIpIHsgcmV0dXJuIFN0cmluZyhzdHIsIGludGVybmFsOjpTdHJM
ZW4oc3RyKSk7IH0KKyAgICBib29sIEtleShjb25zdCBDaCogc3RyKSB7IHJldHVybiBLZXkoc3Ry
LCBpbnRlcm5hbDo6U3RyTGVuKHN0cikpOyB9CisKKyAgICAvL0B9CisKK3Byb3RlY3RlZDoKKyAg
ICAvLyEgSW5mb3JtYXRpb24gZm9yIGVhY2ggbmVzdGVkIGxldmVsCisgICAgc3RydWN0IExldmVs
IHsKKyAgICAgICAgTGV2ZWwoYm9vbCBpbkFycmF5XykgOiB2YWx1ZUNvdW50KDApLCBpbkFycmF5
KGluQXJyYXlfKSB7fQorICAgICAgICBzaXplX3QgdmFsdWVDb3VudDsgIC8vITwgbnVtYmVyIG9m
IHZhbHVlcyBpbiB0aGlzIGxldmVsCisgICAgICAgIGJvb2wgaW5BcnJheTsgICAgICAgLy8hPCB0
cnVlIGlmIGluIGFycmF5LCBvdGhlcndpc2UgaW4gb2JqZWN0CisgICAgfTsKKworICAgIHN0YXRp
YyBjb25zdCBzaXplX3Qga0RlZmF1bHRMZXZlbERlcHRoID0gMzI7CisKKyAgICBib29sIFdyaXRl
TnVsbCgpICB7CisgICAgICAgIG9zXy0+UHV0KCduJyk7IG9zXy0+UHV0KCd1Jyk7IG9zXy0+UHV0
KCdsJyk7IG9zXy0+UHV0KCdsJyk7IHJldHVybiB0cnVlOworICAgIH0KKworICAgIGJvb2wgV3Jp
dGVCb29sKGJvb2wgYikgIHsKKyAgICAgICAgaWYgKGIpIHsKKyAgICAgICAgICAgIG9zXy0+UHV0
KCd0Jyk7IG9zXy0+UHV0KCdyJyk7IG9zXy0+UHV0KCd1Jyk7IG9zXy0+UHV0KCdlJyk7CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBvc18tPlB1dCgnZicpOyBvc18tPlB1
dCgnYScpOyBvc18tPlB1dCgnbCcpOyBvc18tPlB1dCgncycpOyBvc18tPlB1dCgnZScpOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGJvb2wgV3JpdGVJbnQo
aW50IGkpIHsKKyAgICAgICAgY2hhciBidWZmZXJbMTFdOworICAgICAgICBjb25zdCBjaGFyKiBl
bmQgPSBpbnRlcm5hbDo6aTMydG9hKGksIGJ1ZmZlcik7CisgICAgICAgIGZvciAoY29uc3QgY2hh
ciogcCA9IGJ1ZmZlcjsgcCAhPSBlbmQ7ICsrcCkKKyAgICAgICAgICAgIG9zXy0+UHV0KCpwKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgYm9vbCBXcml0ZVVpbnQodW5zaWdu
ZWQgdSkgeworICAgICAgICBjaGFyIGJ1ZmZlclsxMF07CisgICAgICAgIGNvbnN0IGNoYXIqIGVu
ZCA9IGludGVybmFsOjp1MzJ0b2EodSwgYnVmZmVyKTsKKyAgICAgICAgZm9yIChjb25zdCBjaGFy
KiBwID0gYnVmZmVyOyBwICE9IGVuZDsgKytwKQorICAgICAgICAgICAgb3NfLT5QdXQoKnApOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBib29sIFdyaXRlSW50NjQoaW50NjRf
dCBpNjQpIHsKKyAgICAgICAgY2hhciBidWZmZXJbMjFdOworICAgICAgICBjb25zdCBjaGFyKiBl
bmQgPSBpbnRlcm5hbDo6aTY0dG9hKGk2NCwgYnVmZmVyKTsKKyAgICAgICAgZm9yIChjb25zdCBj
aGFyKiBwID0gYnVmZmVyOyBwICE9IGVuZDsgKytwKQorICAgICAgICAgICAgb3NfLT5QdXQoKnAp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBib29sIFdyaXRlVWludDY0KHVp
bnQ2NF90IHU2NCkgeworICAgICAgICBjaGFyIGJ1ZmZlclsyMF07CisgICAgICAgIGNoYXIqIGVu
ZCA9IGludGVybmFsOjp1NjR0b2EodTY0LCBidWZmZXIpOworICAgICAgICBmb3IgKGNoYXIqIHAg
PSBidWZmZXI7IHAgIT0gZW5kOyArK3ApCisgICAgICAgICAgICBvc18tPlB1dCgqcCk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGJvb2wgV3JpdGVEb3VibGUoZG91YmxlIGQp
IHsKKyAgICAgICAgY2hhciBidWZmZXJbMjVdOworICAgICAgICBjaGFyKiBlbmQgPSBpbnRlcm5h
bDo6ZHRvYShkLCBidWZmZXIpOworICAgICAgICBmb3IgKGNoYXIqIHAgPSBidWZmZXI7IHAgIT0g
ZW5kOyArK3ApCisgICAgICAgICAgICBvc18tPlB1dCgqcCk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIGJvb2wgV3JpdGVTdHJpbmcoY29uc3QgQ2gqIHN0ciwgU2l6ZVR5cGUg
bGVuZ3RoKSAgeworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciBoZXhEaWdpdHNbMTZdID0geyAn
MCcsICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JywgJzgnLCAnOScsICdBJywgJ0In
LCAnQycsICdEJywgJ0UnLCAnRicgfTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgZXNjYXBl
WzI1Nl0gPSB7CisjZGVmaW5lIFoxNiAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwCisg
ICAgICAgICAgICAvLzAgICAgMSAgICAyICAgIDMgICAgNCAgICA1ICAgIDYgICAgNyAgICA4ICAg
IDkgICAgQSAgICBCICAgIEMgICAgRCAgICBFICAgIEYKKyAgICAgICAgICAgICd1JywgJ3UnLCAn
dScsICd1JywgJ3UnLCAndScsICd1JywgJ3UnLCAnYicsICd0JywgJ24nLCAndScsICdmJywgJ3In
LCAndScsICd1JywgLy8gMDAKKyAgICAgICAgICAgICd1JywgJ3UnLCAndScsICd1JywgJ3UnLCAn
dScsICd1JywgJ3UnLCAndScsICd1JywgJ3UnLCAndScsICd1JywgJ3UnLCAndScsICd1JywgLy8g
MTAKKyAgICAgICAgICAgICAgMCwgICAwLCAnIicsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgLy8gMjAKKyAgICAgICAgICAg
IFoxNiwgWjE2LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gMzB+NEYKKyAgICAgICAgICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsJ1xcJywgICAw
LCAgIDAsICAgMCwgLy8gNTAKKyAgICAgICAgICAgIFoxNiwgWjE2LCBaMTYsIFoxNiwgWjE2LCBa
MTYsIFoxNiwgWjE2LCBaMTYsIFoxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
NjB+RkYKKyN1bmRlZiBaMTYKKyAgICAgICAgfTsKKworICAgICAgICBvc18tPlB1dCgnXCInKTsK
KyAgICAgICAgR2VuZXJpY1N0cmluZ1N0cmVhbTxTb3VyY2VFbmNvZGluZz4gaXMoc3RyKTsKKyAg
ICAgICAgd2hpbGUgKGlzLlRlbGwoKSA8IGxlbmd0aCkgeworICAgICAgICAgICAgY29uc3QgQ2gg
YyA9IGlzLlBlZWsoKTsKKyAgICAgICAgICAgIGlmICghVGFyZ2V0RW5jb2Rpbmc6OnN1cHBvcnRV
bmljb2RlICYmICh1bnNpZ25lZCljID49IDB4ODApIHsKKyAgICAgICAgICAgICAgICAvLyBVbmlj
b2RlIGVzY2FwaW5nCisgICAgICAgICAgICAgICAgdW5zaWduZWQgY29kZXBvaW50OworICAgICAg
ICAgICAgICAgIGlmICghU291cmNlRW5jb2Rpbmc6OkRlY29kZShpcywgJmNvZGVwb2ludCkpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBvc18tPlB1
dCgnXFwnKTsKKyAgICAgICAgICAgICAgICBvc18tPlB1dCgndScpOworICAgICAgICAgICAgICAg
IGlmIChjb2RlcG9pbnQgPD0gMHhEN0ZGIHx8IChjb2RlcG9pbnQgPj0gMHhFMDAwICYmIGNvZGVw
b2ludCA8PSAweEZGRkYpKSB7CisgICAgICAgICAgICAgICAgICAgIG9zXy0+UHV0KGhleERpZ2l0
c1soY29kZXBvaW50ID4+IDEyKSAmIDE1XSk7CisgICAgICAgICAgICAgICAgICAgIG9zXy0+UHV0
KGhleERpZ2l0c1soY29kZXBvaW50ID4+ICA4KSAmIDE1XSk7CisgICAgICAgICAgICAgICAgICAg
IG9zXy0+UHV0KGhleERpZ2l0c1soY29kZXBvaW50ID4+ICA0KSAmIDE1XSk7CisgICAgICAgICAg
ICAgICAgICAgIG9zXy0+UHV0KGhleERpZ2l0c1soY29kZXBvaW50ICAgICAgKSAmIDE1XSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvZGVwb2ludCA+PSAw
eDAxMDAwMCAmJiBjb2RlcG9pbnQgPD0gMHgxMEZGRkYpICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgLy8gU3Vycm9nYXRlIHBhaXIKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcyA9IGNv
ZGVwb2ludCAtIDB4MDEwMDAwOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZWFkID0g
KHMgPj4gMTApICsgMHhEODAwOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB0cmFpbCA9
IChzICYgMHgzRkYpICsgMHhEQzAwOworICAgICAgICAgICAgICAgICAgICBvc18tPlB1dChoZXhE
aWdpdHNbKGxlYWQgPj4gMTIpICYgMTVdKTsKKyAgICAgICAgICAgICAgICAgICAgb3NfLT5QdXQo
aGV4RGlnaXRzWyhsZWFkID4+ICA4KSAmIDE1XSk7CisgICAgICAgICAgICAgICAgICAgIG9zXy0+
UHV0KGhleERpZ2l0c1sobGVhZCA+PiAgNCkgJiAxNV0pOworICAgICAgICAgICAgICAgICAgICBv
c18tPlB1dChoZXhEaWdpdHNbKGxlYWQgICAgICApICYgMTVdKTsKKyAgICAgICAgICAgICAgICAg
ICAgb3NfLT5QdXQoJ1xcJyk7CisgICAgICAgICAgICAgICAgICAgIG9zXy0+UHV0KCd1Jyk7Cisg
ICAgICAgICAgICAgICAgICAgIG9zXy0+UHV0KGhleERpZ2l0c1sodHJhaWwgPj4gMTIpICYgMTVd
KTsKKyAgICAgICAgICAgICAgICAgICAgb3NfLT5QdXQoaGV4RGlnaXRzWyh0cmFpbCA+PiAgOCkg
JiAxNV0pOworICAgICAgICAgICAgICAgICAgICBvc18tPlB1dChoZXhEaWdpdHNbKHRyYWlsID4+
ICA0KSAmIDE1XSk7CisgICAgICAgICAgICAgICAgICAgIG9zXy0+UHV0KGhleERpZ2l0c1sodHJh
aWwgICAgICApICYgMTVdKTsgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsg
ICAvLyBpbnZhbGlkIGNvZGUgcG9pbnQKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2Ug
aWYgKChzaXplb2YoQ2gpID09IDEgfHwgKHVuc2lnbmVkKWMgPCAyNTYpICYmIGVzY2FwZVsodW5z
aWduZWQgY2hhciljXSkgIHsKKyAgICAgICAgICAgICAgICBpcy5UYWtlKCk7CisgICAgICAgICAg
ICAgICAgb3NfLT5QdXQoJ1xcJyk7CisgICAgICAgICAgICAgICAgb3NfLT5QdXQoZXNjYXBlWyh1
bnNpZ25lZCBjaGFyKWNdKTsKKyAgICAgICAgICAgICAgICBpZiAoZXNjYXBlWyh1bnNpZ25lZCBj
aGFyKWNdID09ICd1JykgeworICAgICAgICAgICAgICAgICAgICBvc18tPlB1dCgnMCcpOworICAg
ICAgICAgICAgICAgICAgICBvc18tPlB1dCgnMCcpOworICAgICAgICAgICAgICAgICAgICBvc18t
PlB1dChoZXhEaWdpdHNbKHVuc2lnbmVkIGNoYXIpYyA+PiA0XSk7CisgICAgICAgICAgICAgICAg
ICAgIG9zXy0+UHV0KGhleERpZ2l0c1sodW5zaWduZWQgY2hhciljICYgMHhGXSk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIFRyYW5zY29kZXI8U291cmNlRW5jb2RpbmcsIFRhcmdldEVuY29kaW5nPjo6VHJhbnNjb2Rl
KGlzLCAqb3NfKTsKKyAgICAgICAgfQorICAgICAgICBvc18tPlB1dCgnXCInKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCisgICAgYm9vbCBXcml0ZVN0YXJ0T2JqZWN0KCkgeyBvc18t
PlB1dCgneycpOyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgV3JpdGVFbmRPYmplY3QoKSAgIHsg
b3NfLT5QdXQoJ30nKTsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIFdyaXRlU3RhcnRBcnJheSgp
ICB7IG9zXy0+UHV0KCdbJyk7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBXcml0ZUVuZEFycmF5
KCkgICAgeyBvc18tPlB1dCgnXScpOyByZXR1cm4gdHJ1ZTsgfQorCisgICAgdm9pZCBQcmVmaXgo
VHlwZSB0eXBlKSB7CisgICAgICAgICh2b2lkKXR5cGU7CisgICAgICAgIGlmIChsZXZlbF9zdGFj
a18uR2V0U2l6ZSgpICE9IDApIHsgLy8gdGhpcyB2YWx1ZSBpcyBub3QgYXQgcm9vdAorICAgICAg
ICAgICAgTGV2ZWwqIGxldmVsID0gbGV2ZWxfc3RhY2tfLnRlbXBsYXRlIFRvcDxMZXZlbD4oKTsK
KyAgICAgICAgICAgIGlmIChsZXZlbC0+dmFsdWVDb3VudCA+IDApIHsKKyAgICAgICAgICAgICAg
ICBpZiAobGV2ZWwtPmluQXJyYXkpIAorICAgICAgICAgICAgICAgICAgICBvc18tPlB1dCgnLCcp
OyAvLyBhZGQgY29tbWEgaWYgaXQgaXMgbm90IHRoZSBmaXJzdCBlbGVtZW50IGluIGFycmF5Cisg
ICAgICAgICAgICAgICAgZWxzZSAgLy8gaW4gb2JqZWN0CisgICAgICAgICAgICAgICAgICAgIG9z
Xy0+UHV0KChsZXZlbC0+dmFsdWVDb3VudCAlIDIgPT0gMCkgPyAnLCcgOiAnOicpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKCFsZXZlbC0+aW5BcnJheSAmJiBsZXZlbC0+dmFsdWVD
b3VudCAlIDIgPT0gMCkKKyAgICAgICAgICAgICAgICBSQVBJREpTT05fQVNTRVJUKHR5cGUgPT0g
a1N0cmluZ1R5cGUpOyAgLy8gaWYgaXQncyBpbiBvYmplY3QsIHRoZW4gZXZlbiBudW1iZXIgc2hv
dWxkIGJlIGEgbmFtZQorICAgICAgICAgICAgbGV2ZWwtPnZhbHVlQ291bnQrKzsKKyAgICAgICAg
fQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFJBUElESlNPTl9BU1NFUlQoIWhhc1Jvb3Rf
KTsgICAgLy8gU2hvdWxkIG9ubHkgaGFzIG9uZSBhbmQgb25seSBvbmUgcm9vdC4KKyAgICAgICAg
ICAgIGhhc1Jvb3RfID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIE91dHB1dFN0cmVh
bSogb3NfOworICAgIGludGVybmFsOjpTdGFjazxTdGFja0FsbG9jYXRvcj4gbGV2ZWxfc3RhY2tf
OworICAgIGJvb2wgaGFzUm9vdF87CisKK3ByaXZhdGU6CisgICAgLy8gUHJvaGliaXQgY29weSBj
b25zdHJ1Y3RvciAmIGFzc2lnbm1lbnQgb3BlcmF0b3IuCisgICAgV3JpdGVyKGNvbnN0IFdyaXRl
ciYpOworICAgIFdyaXRlciYgb3BlcmF0b3I9KGNvbnN0IFdyaXRlciYpOworfTsKKworLy8gRnVs
bCBzcGVjaWFsaXphdGlvbiBmb3IgU3RyaW5nU3RyZWFtIHRvIHByZXZlbnQgbWVtb3J5IGNvcHlp
bmcKKwordGVtcGxhdGU8PgoraW5saW5lIGJvb2wgV3JpdGVyPFN0cmluZ0J1ZmZlcj46OldyaXRl
SW50KGludCBpKSB7CisgICAgY2hhciAqYnVmZmVyID0gb3NfLT5QdXNoKDExKTsKKyAgICBjb25z
dCBjaGFyKiBlbmQgPSBpbnRlcm5hbDo6aTMydG9hKGksIGJ1ZmZlcik7CisgICAgb3NfLT5Qb3Ao
MTEgLSAoZW5kIC0gYnVmZmVyKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPD4K
K2lubGluZSBib29sIFdyaXRlcjxTdHJpbmdCdWZmZXI+OjpXcml0ZVVpbnQodW5zaWduZWQgdSkg
eworICAgIGNoYXIgKmJ1ZmZlciA9IG9zXy0+UHVzaCgxMCk7CisgICAgY29uc3QgY2hhciogZW5k
ID0gaW50ZXJuYWw6OnUzMnRvYSh1LCBidWZmZXIpOworICAgIG9zXy0+UG9wKDEwIC0gKGVuZCAt
IGJ1ZmZlcikpOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgYm9v
bCBXcml0ZXI8U3RyaW5nQnVmZmVyPjo6V3JpdGVJbnQ2NChpbnQ2NF90IGk2NCkgeworICAgIGNo
YXIgKmJ1ZmZlciA9IG9zXy0+UHVzaCgyMSk7CisgICAgY29uc3QgY2hhciogZW5kID0gaW50ZXJu
YWw6Omk2NHRvYShpNjQsIGJ1ZmZlcik7CisgICAgb3NfLT5Qb3AoMjEgLSAoZW5kIC0gYnVmZmVy
KSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPD4KK2lubGluZSBib29sIFdyaXRl
cjxTdHJpbmdCdWZmZXI+OjpXcml0ZVVpbnQ2NCh1aW50NjRfdCB1KSB7CisgICAgY2hhciAqYnVm
ZmVyID0gb3NfLT5QdXNoKDIwKTsKKyAgICBjb25zdCBjaGFyKiBlbmQgPSBpbnRlcm5hbDo6dTY0
dG9hKHUsIGJ1ZmZlcik7CisgICAgb3NfLT5Qb3AoMjAgLSAoZW5kIC0gYnVmZmVyKSk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPD4KK2lubGluZSBib29sIFdyaXRlcjxTdHJpbmdC
dWZmZXI+OjpXcml0ZURvdWJsZShkb3VibGUgZCkgeworICAgIGNoYXIgKmJ1ZmZlciA9IG9zXy0+
UHVzaCgyNSk7CisgICAgY2hhciogZW5kID0gaW50ZXJuYWw6OmR0b2EoZCwgYnVmZmVyKTsKKyAg
ICBvc18tPlBvcCgyNSAtIChlbmQgLSBidWZmZXIpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
UkFQSURKU09OX05BTUVTUEFDRV9FTkQKKworI2lmZGVmIF9NU0NfVkVSCitSQVBJREpTT05fRElB
R19QT1AKKyNlbmRpZgorCisjZW5kaWYgLy8gUkFQSURKU09OX1JBUElESlNPTl9IXwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0cmwvQlVJTEQu
Z24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5
L2xpYlhOVkN0cmwvQlVJTEQuZ24JKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0cmwvQlVJTEQuZ24JKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwyOCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorCisjIFRoaXMgd2FybmluZyBkaXNhYmxlIG11c3QgYmUgYXBw
ZW5kZWQgdG8gdGhlIGNvbW1hbmQgbGluZSBhZnRlciB0aGUgZ2VuZXJhbAorIyB3YXJuaW5ncyBz
ZXR1cCwgc28gbXVzdCBiZSBpbiBhIGNvbmZpZy4KK2NvbmZpZygibGliWE5WQ3RybF9jb25maWci
KSB7CisgICMgVGhpcyB3aWxsIGJ1aWxkIHVuZGVyIG1vc3QgY29uZmlndXJhdGlvbnMgd2l0aCB0
aGlzIHdhcm5pbmcgZW5hYmxlZCwgYnV0CisgICMgc29tZSBvbGRlciBzeXN0ZW0gaGVhZGVycyBh
cmUgbWlzc2luZyBhICJjb25zdCIgb24gdGhlIHRoaXJkIHBhcmFtZXRlciBvZgorICAjIFhleHRB
ZGREaXNwbGF5IHdoaWNoIHdpbGwgY2F1c2UgYSBmYWlsdXJlLgorICBjZmxhZ3MgPSBbCisgICAg
Ii1Xbm8taW5jb21wYXRpYmxlLXBvaW50ZXItdHlwZXMtZGlzY2FyZHMtcXVhbGlmaWVycyIsCisg
IF0KK30KKworc291cmNlX3NldCgibGliWE5WQ3RybCIpIHsKKyAgc291cmNlcyA9IFsKKyAgICAi
TlZDdHJsLmMiLAorICAgICJOVkN0cmwuaCIsCisgICAgIk5WQ3RybExpYi5oIiwKKyAgICAibnZf
Y29udHJvbC5oIiwKKyAgXQorCisgIGNvbmZpZ3MgKz0gWworICAgICI6bGliWE5WQ3RybF9jb25m
aWciLAorICAgICIvL2J1aWxkL2NvbmZpZy9saW51eDp4MTEiLAorICBdCit9CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbGliWE5WQ3RybC9MSUNFTlNFCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9saWJY
TlZDdHJsL0xJQ0VOU0UJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0cmwvTElDRU5TRQkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDIyIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4IE5WSURJQSwgQ29ycG9yYXRpb24K
KyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g
YW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv
Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAorICog
aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp
bWl0YXRpb24gdGhlIHJpZ2h0cworICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs
aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRo
ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlz
CisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np
b24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5j
bHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNv
ZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VU
IFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcg
QlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAq
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUg
TElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5H
IEZST00sCisgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU
SEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQorICogU09GVFdBUkUuCisgKi8KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGhpcmRfcGFydHkvbGliWE5WQ3RybC9OVkN0cmwuYwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbGliWE5WQ3RybC9OVkN0cmwuYwkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbGliWE5W
Q3RybC9OVkN0cmwuYwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyNDAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKGMpIDIwMDggTlZJRElBLCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24g
aXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmlu
ZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv
biBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCisgKiBpbiB0aGUgU29mdHdhcmUgd2l0
aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRz
CisgKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1
YmxpY2Vuc2UsIGFuZC9vciBzZWxsCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g
cGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBk
byBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFi
b3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGlu
ZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVz
IG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhF
IFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJ
TkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8g
VEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJ
TSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBP
RiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKyAqIE9VVCBPRiBP
UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVB
TElOR1MgSU4gVEhFCisgKiBTT0ZUV0FSRS4KKyAqLworCisvKgorICogTWFrZSBzdXJlIHRoYXQg
WFRIUkVBRFMgaXMgZGVmaW5lZCwgc28gdGhhdCB0aGUKKyAqIExvY2tEaXNwbGF5L1VubG9ja0Rp
c3BsYXkgbWFjcm9zIGFyZSBleHBhbmRlZCBwcm9wZXJseSBhbmQgdGhlCisgKiBsaWJYTlZDdHJs
IGxpYnJhcnkgcHJvcGVybHkgcHJvdGVjdHMgdGhlIERpc3BsYXkgY29ubmVjdGlvbi4KKyAqLwor
CisjaWYgIWRlZmluZWQoWFRIUkVBRFMpCisjZGVmaW5lIFhUSFJFQURTCisjZW5kaWYgLyogWFRI
UkVBRFMgKi8KKworI2RlZmluZSBORUVEX0VWRU5UUworI2RlZmluZSBORUVEX1JFUExJRVMKKyNp
bmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxYMTEvWGxp
YmludC5oPgorI2luY2x1ZGUgPFgxMS9YdXRpbC5oPgorI2luY2x1ZGUgPFgxMS9leHRlbnNpb25z
L1hleHQuaD4KKyNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9leHR1dGlsLmg+CisjaW5jbHVkZSAi
TlZDdHJsTGliLmgiCisjaW5jbHVkZSAibnZfY29udHJvbC5oIgorCisjZGVmaW5lIE5WQ1RSTF9F
WFRfRVhJU1RTICAgICAgICAgICAgICAxCisjZGVmaW5lIE5WQ1RSTF9FWFRfTkVFRF9UQVJHRVRf
U1dBUCAgICAyCisjZGVmaW5lIE5WQ1RSTF9FWFRfNjRfQklUX0FUVFJJQlVURVMgICA0CisjZGVm
aW5lIE5WQ1RSTF9FWFRfTkVFRF9DSEVDSyAgICAgICAgICAoMSA8PCAoc2l6ZW9mKFhQb2ludGVy
KSAtIDEpKQorCitzdGF0aWMgWEV4dGVuc2lvbkluZm8gX252Y3RybF9leHRfaW5mb19kYXRhOwor
c3RhdGljIFhFeHRlbnNpb25JbmZvICpudmN0cmxfZXh0X2luZm8gPSAmX252Y3RybF9leHRfaW5m
b19kYXRhOworc3RhdGljIGNvbnN0IGNoYXIgKm52Y3RybF9leHRlbnNpb25fbmFtZSA9IE5WX0NP
TlRST0xfTkFNRTsKKworI2RlZmluZSBYTlZDVFJMQ2hlY2tFeHRlbnNpb24oZHB5LGksdmFsKSBc
CisgIFhleHRDaGVja0V4dGVuc2lvbiAoZHB5LCBpLCBudmN0cmxfZXh0ZW5zaW9uX25hbWUsIHZh
bCkKKyNkZWZpbmUgWE5WQ1RSTFNpbXBsZUNoZWNrRXh0ZW5zaW9uKGRweSxpKSBcCisgIFhleHRT
aW1wbGVDaGVja0V4dGVuc2lvbiAoZHB5LCBpLCBudmN0cmxfZXh0ZW5zaW9uX25hbWUpCisKK3N0
YXRpYyBpbnQgY2xvc2VfZGlzcGxheSgpOworc3RhdGljIHVpbnRwdHJfdCB2ZXJzaW9uX2ZsYWdz
KERpc3BsYXkgKmRweSwgWEV4dERpc3BsYXlJbmZvICppbmZvKTsKK3N0YXRpYyBCb29sIHdpcmVf
dG9fZXZlbnQoKTsKK3N0YXRpYyAvKiBjb25zdCAqLyBYRXh0ZW5zaW9uSG9va3MgbnZjdHJsX2V4
dGVuc2lvbl9ob29rcyA9IHsKKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBjcmVhdGVfZ2MgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBjb3B5X2djICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogZmx1c2hfZ2MgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBmcmVlX2djICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
Y3JlYXRlX2ZvbnQgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBmcmVlX2ZvbnQgKi8KKyAgICBjbG9zZV9kaXNwbGF5LCAgICAgICAgICAgICAgICAgICAgICAv
KiBjbG9zZV9kaXNwbGF5ICovCisgICAgd2lyZV90b19ldmVudCwgICAgICAgICAgICAgICAgICAg
ICAgLyogd2lyZV90b19ldmVudCAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIGV2ZW50X3RvX3dpcmUgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBlcnJvciAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIGVycm9yX3N0cmluZyAqLworfTsKKworc3RhdGljIFhFWFRfR0VORVJBVEVfRklO
RF9ESVNQTEFZIChmaW5kX2Rpc3BsYXksIG52Y3RybF9leHRfaW5mbywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnZjdHJsX2V4dGVuc2lvbl9uYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmbnZjdHJsX2V4dGVuc2lvbl9ob29rcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTlZfQ09OVFJPTF9FVkVOVFMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChYUG9pbnRlcilOVkNUUkxfRVhUX05FRURfQ0hFQ0sp
CisKK3N0YXRpYyBYRVhUX0dFTkVSQVRFX0NMT1NFX0RJU1BMQVkgKGNsb3NlX2Rpc3BsYXksIG52
Y3RybF9leHRfaW5mbykKKworLyoKKyAqIE5WLUNPTlRST0wgdmVyc2lvbnMgMS44IGFuZCAxLjkg
cGFjayB0aGUgdGFyZ2V0X3R5cGUgYW5kIHRhcmdldF9pZAorICogZmllbGRzIGluIHJldmVyc2Vk
IG9yZGVyLiAgSW4gb3JkZXIgdG8gdGFsayB0byBvbmUgb2YgdGhlc2Ugc2VydmVycywKKyAqIHdl
IG5lZWQgdG8gc3dhcCB0aGVzZSBmaWVsZHMuCisgKi8KKworc3RhdGljIHZvaWQgWE5WQ1RSTENo
ZWNrVGFyZ2V0RGF0YShEaXNwbGF5ICpkcHksIFhFeHREaXNwbGF5SW5mbyAqaW5mbywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICp0YXJnZXRfdHlwZSwgaW50ICp0YXJn
ZXRfaWQpCit7CisgICAgdWludHB0cl90IGZsYWdzID0gdmVyc2lvbl9mbGFncyhkcHksIGluZm8p
OworCisgICAgLyogV2UgbmVlZCB0byBzd2FwIHRoZSB0YXJnZXRfdHlwZSBhbmQgdGFyZ2V0X2lk
ICovCisgICAgaWYgKGZsYWdzICYgTlZDVFJMX0VYVF9ORUVEX1RBUkdFVF9TV0FQKSB7CisgICAg
ICAgIGludCB0bXA7CisgICAgICAgIHRtcCA9ICp0YXJnZXRfdHlwZTsKKyAgICAgICAgKnRhcmdl
dF90eXBlID0gKnRhcmdldF9pZDsKKyAgICAgICAgKnRhcmdldF9pZCA9IHRtcDsKKyAgICB9Cit9
CisKKworQm9vbCBYTlZDVFJMUXVlcnlFeHRlbnNpb24gKAorICAgIERpc3BsYXkgKmRweSwKKyAg
ICBpbnQgKmV2ZW50X2Jhc2VwLAorICAgIGludCAqZXJyb3JfYmFzZXAKKyl7CisgICAgWEV4dERp
c3BsYXlJbmZvICppbmZvID0gZmluZF9kaXNwbGF5IChkcHkpOworCisgICAgaWYgKFhleHRIYXNF
eHRlbnNpb24oaW5mbykpIHsKKyAgICAgICAgaWYgKGV2ZW50X2Jhc2VwKSAqZXZlbnRfYmFzZXAg
PSBpbmZvLT5jb2Rlcy0+Zmlyc3RfZXZlbnQ7CisgICAgICAgIGlmIChlcnJvcl9iYXNlcCkgKmVy
cm9yX2Jhc2VwID0gaW5mby0+Y29kZXMtPmZpcnN0X2Vycm9yOworICAgICAgICByZXR1cm4gVHJ1
ZTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gRmFsc2U7CisgICAgfQorfQorCisvKgor
ICogUmV0cmlldmUgYW55IGNhY2hlZCBmbGFncyB0aGF0IGRlcGVuZCBvbiB0aGUgdmVyc2lvbiBv
ZiB0aGUgTlYtQ09OVFJPTAorICogZXh0ZW5zaW9uLgorICovCisKK3N0YXRpYyB1aW50cHRyX3Qg
dmVyc2lvbl9mbGFncyhEaXNwbGF5ICpkcHksIFhFeHREaXNwbGF5SW5mbyAqaW5mbykKK3sKKyAg
ICB1aW50cHRyX3QgZGF0YSA9ICh1aW50cHRyX3QpaW5mby0+ZGF0YTsKKworICAgIC8qIElmIG5l
Y2Vzc2FyeSwgZGV0ZXJtaW5lIHRoZSBOVi1DT05UUk9MIHZlcnNpb24gKi8KKyAgICBpZiAoZGF0
YSAmIE5WQ1RSTF9FWFRfTkVFRF9DSEVDSykgeworICAgICAgICBpbnQgbWFqb3IsIG1pbm9yOwor
ICAgICAgICBkYXRhID0gMDsKKyAgICAgICAgaWYgKFhOVkNUUkxRdWVyeVZlcnNpb24oZHB5LCAm
bWFqb3IsICZtaW5vcikpIHsKKyAgICAgICAgICAgIGRhdGEgfD0gTlZDVFJMX0VYVF9FWElTVFM7
CisgICAgICAgICAgICBpZiAobWFqb3IgPT0gMSAmJiAobWlub3IgPT0gOCB8fCBtaW5vciA9PSA5
KSkgeworICAgICAgICAgICAgICAgIGRhdGEgfD0gTlZDVFJMX0VYVF9ORUVEX1RBUkdFVF9TV0FQ
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKChtYWpvciA+IDEpIHx8ICgobWFqb3Ig
PT0gMSkgJiYgKG1pbm9yID4gMjApKSkgeworICAgICAgICAgICAgICAgIGRhdGEgfD0gTlZDVFJM
X0VYVF82NF9CSVRfQVRUUklCVVRFUzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIGluZm8tPmRhdGEgPSAoWFBvaW50ZXIpZGF0YTsKKyAgICB9CisKKyAgICByZXR1cm4gZGF0
YTsKK30KKworQm9vbCBYTlZDVFJMUXVlcnlWZXJzaW9uICgKKyAgICBEaXNwbGF5ICpkcHksCisg
ICAgaW50ICptYWpvciwKKyAgICBpbnQgKm1pbm9yCispeworICAgIFhFeHREaXNwbGF5SW5mbyAq
aW5mbyA9IGZpbmRfZGlzcGxheSAoZHB5KTsKKyAgICB4bnZDdHJsUXVlcnlFeHRlbnNpb25SZXBs
eSByZXA7CisgICAgeG52Q3RybFF1ZXJ5RXh0ZW5zaW9uUmVxICAgKnJlcTsKKworICAgIGlmKCFY
ZXh0SGFzRXh0ZW5zaW9uKGluZm8pKQorICAgICAgICByZXR1cm4gRmFsc2U7CisKKyAgICBYTlZD
VFJMQ2hlY2tFeHRlbnNpb24gKGRweSwgaW5mbywgRmFsc2UpOworCisgICAgTG9ja0Rpc3BsYXkg
KGRweSk7CisgICAgR2V0UmVxIChudkN0cmxRdWVyeUV4dGVuc2lvbiwgcmVxKTsKKyAgICByZXEt
PnJlcVR5cGUgPSBpbmZvLT5jb2Rlcy0+bWFqb3Jfb3Bjb2RlOworICAgIHJlcS0+bnZSZXFUeXBl
ID0gWF9udkN0cmxRdWVyeUV4dGVuc2lvbjsKKyAgICBpZiAoIV9YUmVwbHkgKGRweSwgKHhSZXBs
eSAqKSAmcmVwLCAwLCB4VHJ1ZSkpIHsKKyAgICAgICAgVW5sb2NrRGlzcGxheSAoZHB5KTsKKyAg
ICAgICAgU3luY0hhbmRsZSAoKTsKKyAgICAgICAgcmV0dXJuIEZhbHNlOworICAgIH0KKyAgICBp
ZiAobWFqb3IpICptYWpvciA9IHJlcC5tYWpvcjsKKyAgICBpZiAobWlub3IpICptaW5vciA9IHJl
cC5taW5vcjsKKyAgICBVbmxvY2tEaXNwbGF5IChkcHkpOworICAgIFN5bmNIYW5kbGUgKCk7Cisg
ICAgcmV0dXJuIFRydWU7Cit9CisKKworQm9vbCBYTlZDVFJMSXNOdlNjcmVlbiAoCisgICAgRGlz
cGxheSAqZHB5LAorICAgIGludCBzY3JlZW4KKyl7CisgICAgWEV4dERpc3BsYXlJbmZvICppbmZv
ID0gZmluZF9kaXNwbGF5IChkcHkpOworICAgIHhudkN0cmxJc052UmVwbHkgcmVwOworICAgIHhu
dkN0cmxJc052UmVxICAgKnJlcTsKKyAgICBCb29sIGlzbnY7CisKKyAgICBpZighWGV4dEhhc0V4
dGVuc2lvbihpbmZvKSkKKyAgICAgICAgcmV0dXJuIEZhbHNlOworCisgICAgWE5WQ1RSTENoZWNr
RXh0ZW5zaW9uIChkcHksIGluZm8sIEZhbHNlKTsKKworICAgIExvY2tEaXNwbGF5IChkcHkpOwor
ICAgIEdldFJlcSAobnZDdHJsSXNOdiwgcmVxKTsKKyAgICByZXEtPnJlcVR5cGUgPSBpbmZvLT5j
b2Rlcy0+bWFqb3Jfb3Bjb2RlOworICAgIHJlcS0+bnZSZXFUeXBlID0gWF9udkN0cmxJc052Owor
ICAgIHJlcS0+c2NyZWVuID0gc2NyZWVuOworICAgIGlmICghX1hSZXBseSAoZHB5LCAoeFJlcGx5
ICopICZyZXAsIDAsIHhUcnVlKSkgeworICAgICAgICBVbmxvY2tEaXNwbGF5IChkcHkpOworICAg
ICAgICBTeW5jSGFuZGxlICgpOworICAgICAgICByZXR1cm4gRmFsc2U7CisgICAgfQorICAgIGlz
bnYgPSByZXAuaXNudjsKKyAgICBVbmxvY2tEaXNwbGF5IChkcHkpOworICAgIFN5bmNIYW5kbGUg
KCk7CisgICAgcmV0dXJuIGlzbnY7Cit9CisKKworQm9vbCBYTlZDVFJMUXVlcnlUYXJnZXRDb3Vu
dCAoCisgICAgRGlzcGxheSAqZHB5LAorICAgIGludCB0YXJnZXRfdHlwZSwKKyAgICBpbnQgKnZh
bHVlCispeworICAgIFhFeHREaXNwbGF5SW5mbyAqaW5mbyA9IGZpbmRfZGlzcGxheSAoZHB5KTsK
KyAgICB4bnZDdHJsUXVlcnlUYXJnZXRDb3VudFJlcGx5ICByZXA7CisgICAgeG52Q3RybFF1ZXJ5
VGFyZ2V0Q291bnRSZXEgICAqcmVxOworCisgICAgaWYoIVhleHRIYXNFeHRlbnNpb24oaW5mbykp
CisgICAgICAgIHJldHVybiBGYWxzZTsKKworICAgIFhOVkNUUkxDaGVja0V4dGVuc2lvbiAoZHB5
LCBpbmZvLCBGYWxzZSk7CisKKyAgICBMb2NrRGlzcGxheSAoZHB5KTsKKyAgICBHZXRSZXEgKG52
Q3RybFF1ZXJ5VGFyZ2V0Q291bnQsIHJlcSk7CisgICAgcmVxLT5yZXFUeXBlID0gaW5mby0+Y29k
ZXMtPm1ham9yX29wY29kZTsKKyAgICByZXEtPm52UmVxVHlwZSA9IFhfbnZDdHJsUXVlcnlUYXJn
ZXRDb3VudDsKKyAgICByZXEtPnRhcmdldF90eXBlID0gdGFyZ2V0X3R5cGU7CisgICAgaWYgKCFf
WFJlcGx5IChkcHksICh4UmVwbHkgKikgJnJlcCwgMCwgeFRydWUpKSB7CisgICAgICAgIFVubG9j
a0Rpc3BsYXkgKGRweSk7CisgICAgICAgIFN5bmNIYW5kbGUgKCk7CisgICAgICAgIHJldHVybiBG
YWxzZTsKKyAgICB9CisgICAgaWYgKHZhbHVlKSAqdmFsdWUgPSByZXAuY291bnQ7CisgICAgVW5s
b2NrRGlzcGxheSAoZHB5KTsKKyAgICBTeW5jSGFuZGxlICgpOworICAgIHJldHVybiBUcnVlOwor
fQorCisKK3ZvaWQgWE5WQ1RSTFNldFRhcmdldEF0dHJpYnV0ZSAoCisgICAgRGlzcGxheSAqZHB5
LAorICAgIGludCB0YXJnZXRfdHlwZSwKKyAgICBpbnQgdGFyZ2V0X2lkLAorICAgIHVuc2lnbmVk
IGludCBkaXNwbGF5X21hc2ssCisgICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKKyAgICBpbnQg
dmFsdWUKKyl7CisgICAgWEV4dERpc3BsYXlJbmZvICppbmZvID0gZmluZF9kaXNwbGF5IChkcHkp
OworICAgIHhudkN0cmxTZXRBdHRyaWJ1dGVSZXEgKnJlcTsKKworICAgIFhOVkNUUkxTaW1wbGVD
aGVja0V4dGVuc2lvbiAoZHB5LCBpbmZvKTsKKyAgICBYTlZDVFJMQ2hlY2tUYXJnZXREYXRhKGRw
eSwgaW5mbywgJnRhcmdldF90eXBlLCAmdGFyZ2V0X2lkKTsKKworICAgIExvY2tEaXNwbGF5IChk
cHkpOworICAgIEdldFJlcSAobnZDdHJsU2V0QXR0cmlidXRlLCByZXEpOworICAgIHJlcS0+cmVx
VHlwZSA9IGluZm8tPmNvZGVzLT5tYWpvcl9vcGNvZGU7CisgICAgcmVxLT5udlJlcVR5cGUgPSBY
X252Q3RybFNldEF0dHJpYnV0ZTsKKyAgICByZXEtPnRhcmdldF90eXBlID0gdGFyZ2V0X3R5cGU7
CisgICAgcmVxLT50YXJnZXRfaWQgPSB0YXJnZXRfaWQ7CisgICAgcmVxLT5kaXNwbGF5X21hc2sg
PSBkaXNwbGF5X21hc2s7CisgICAgcmVxLT5hdHRyaWJ1dGUgPSBhdHRyaWJ1dGU7CisgICAgcmVx
LT52YWx1ZSA9IHZhbHVlOworICAgIFVubG9ja0Rpc3BsYXkgKGRweSk7CisgICAgU3luY0hhbmRs
ZSAoKTsKK30KKwordm9pZCBYTlZDVFJMU2V0QXR0cmlidXRlICgKKyAgICBEaXNwbGF5ICpkcHks
CisgICAgaW50IHNjcmVlbiwKKyAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrLAorICAgIHVu
c2lnbmVkIGludCBhdHRyaWJ1dGUsCisgICAgaW50IHZhbHVlCispeworICAgIFhOVkNUUkxTZXRU
YXJnZXRBdHRyaWJ1dGUgKGRweSwgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiwgc2NyZWVu
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlfbWFzaywgYXR0cmlidXRl
LCB2YWx1ZSk7Cit9CisKKworQm9vbCBYTlZDVFJMU2V0VGFyZ2V0QXR0cmlidXRlQW5kR2V0U3Rh
dHVzICgKKyAgICBEaXNwbGF5ICpkcHksCisgICAgaW50IHRhcmdldF90eXBlLAorICAgIGludCB0
YXJnZXRfaWQsCisgICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywKKyAgICB1bnNpZ25lZCBp
bnQgYXR0cmlidXRlLAorICAgIGludCB2YWx1ZQorKXsKKyAgICBYRXh0RGlzcGxheUluZm8gKmlu
Zm8gPSBmaW5kX2Rpc3BsYXkgKGRweSk7CisgICAgeG52Q3RybFNldEF0dHJpYnV0ZUFuZEdldFN0
YXR1c1JlcSAqcmVxOworICAgIHhudkN0cmxTZXRBdHRyaWJ1dGVBbmRHZXRTdGF0dXNSZXBseSBy
ZXA7CisgICAgQm9vbCBzdWNjZXNzOworCisgICAgaWYoIVhleHRIYXNFeHRlbnNpb24oaW5mbykp
CisgICAgICAgIHJldHVybiBGYWxzZTsKKworICAgIFhOVkNUUkxDaGVja0V4dGVuc2lvbiAoZHB5
LCBpbmZvLCBGYWxzZSk7CisKKyAgICBMb2NrRGlzcGxheSAoZHB5KTsKKyAgICBHZXRSZXEgKG52
Q3RybFNldEF0dHJpYnV0ZUFuZEdldFN0YXR1cywgcmVxKTsKKyAgICByZXEtPnJlcVR5cGUgPSBp
bmZvLT5jb2Rlcy0+bWFqb3Jfb3Bjb2RlOworICAgIHJlcS0+bnZSZXFUeXBlID0gWF9udkN0cmxT
ZXRBdHRyaWJ1dGVBbmRHZXRTdGF0dXM7CisgICAgcmVxLT50YXJnZXRfdHlwZSA9IHRhcmdldF90
eXBlOworICAgIHJlcS0+dGFyZ2V0X2lkID0gdGFyZ2V0X2lkOworICAgIHJlcS0+ZGlzcGxheV9t
YXNrID0gZGlzcGxheV9tYXNrOworICAgIHJlcS0+YXR0cmlidXRlID0gYXR0cmlidXRlOworICAg
IHJlcS0+dmFsdWUgPSB2YWx1ZTsKKyAgICBpZiAoIV9YUmVwbHkgKGRweSwgKHhSZXBseSAqKSAm
cmVwLCAwLCBGYWxzZSkpIHsKKyAgICAgICAgVW5sb2NrRGlzcGxheSAoZHB5KTsKKyAgICAgICAg
U3luY0hhbmRsZSAoKTsKKyAgICAgICAgcmV0dXJuIEZhbHNlOworICAgIH0KKyAgICBVbmxvY2tE
aXNwbGF5IChkcHkpOworICAgIFN5bmNIYW5kbGUgKCk7CisgICAgCisgICAgc3VjY2VzcyA9IHJl
cC5mbGFnczsKKyAgICByZXR1cm4gc3VjY2VzczsKK30KKworQm9vbCBYTlZDVFJMU2V0QXR0cmli
dXRlQW5kR2V0U3RhdHVzICgKKyAgICBEaXNwbGF5ICpkcHksCisgICAgaW50IHNjcmVlbiwKKyAg
ICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrLAorICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUs
CisgICAgaW50IHZhbHVlCispeworICAgIHJldHVybiBYTlZDVFJMU2V0VGFyZ2V0QXR0cmlidXRl
QW5kR2V0U3RhdHVzKGRweSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmVlbiwgZGlzcGxheV9tYXNrLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0
ZSwgdmFsdWUpOworfQorCisKK0Jvb2wgWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlICgKKyAg
ICBEaXNwbGF5ICpkcHksCisgICAgaW50IHRhcmdldF90eXBlLAorICAgIGludCB0YXJnZXRfaWQs
CisgICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywKKyAgICB1bnNpZ25lZCBpbnQgYXR0cmli
dXRlLAorICAgIGludCAqdmFsdWUKKyl7CisgICAgWEV4dERpc3BsYXlJbmZvICppbmZvID0gZmlu
ZF9kaXNwbGF5IChkcHkpOworICAgIHhudkN0cmxRdWVyeUF0dHJpYnV0ZVJlcGx5IHJlcDsKKyAg
ICB4bnZDdHJsUXVlcnlBdHRyaWJ1dGVSZXEgICAqcmVxOworICAgIEJvb2wgZXhpc3RzOworCisg
ICAgaWYoIVhleHRIYXNFeHRlbnNpb24oaW5mbykpCisgICAgICAgIHJldHVybiBGYWxzZTsKKwor
ICAgIFhOVkNUUkxDaGVja0V4dGVuc2lvbiAoZHB5LCBpbmZvLCBGYWxzZSk7CisgICAgWE5WQ1RS
TENoZWNrVGFyZ2V0RGF0YShkcHksIGluZm8sICZ0YXJnZXRfdHlwZSwgJnRhcmdldF9pZCk7CisK
KyAgICBMb2NrRGlzcGxheSAoZHB5KTsKKyAgICBHZXRSZXEgKG52Q3RybFF1ZXJ5QXR0cmlidXRl
LCByZXEpOworICAgIHJlcS0+cmVxVHlwZSA9IGluZm8tPmNvZGVzLT5tYWpvcl9vcGNvZGU7Cisg
ICAgcmVxLT5udlJlcVR5cGUgPSBYX252Q3RybFF1ZXJ5QXR0cmlidXRlOworICAgIHJlcS0+dGFy
Z2V0X3R5cGUgPSB0YXJnZXRfdHlwZTsKKyAgICByZXEtPnRhcmdldF9pZCA9IHRhcmdldF9pZDsK
KyAgICByZXEtPmRpc3BsYXlfbWFzayA9IGRpc3BsYXlfbWFzazsKKyAgICByZXEtPmF0dHJpYnV0
ZSA9IGF0dHJpYnV0ZTsKKyAgICBpZiAoIV9YUmVwbHkgKGRweSwgKHhSZXBseSAqKSAmcmVwLCAw
LCB4VHJ1ZSkpIHsKKyAgICAgICAgVW5sb2NrRGlzcGxheSAoZHB5KTsKKyAgICAgICAgU3luY0hh
bmRsZSAoKTsKKyAgICAgICAgcmV0dXJuIEZhbHNlOworICAgIH0KKyAgICBleGlzdHMgPSByZXAu
ZmxhZ3M7CisgICAgaWYgKGV4aXN0cyAmJiB2YWx1ZSkgKnZhbHVlID0gcmVwLnZhbHVlOworICAg
IFVubG9ja0Rpc3BsYXkgKGRweSk7CisgICAgU3luY0hhbmRsZSAoKTsKKyAgICByZXR1cm4gZXhp
c3RzOworfQorCitCb29sIFhOVkNUUkxRdWVyeUF0dHJpYnV0ZSAoCisgICAgRGlzcGxheSAqZHB5
LAorICAgIGludCBzY3JlZW4sCisgICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywKKyAgICB1
bnNpZ25lZCBpbnQgYXR0cmlidXRlLAorICAgIGludCAqdmFsdWUKKyl7CisgICAgcmV0dXJuIFhO
VkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZShkcHksIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JF
RU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JlZW4sIGRpc3Bs
YXlfbWFzaywgYXR0cmlidXRlLCB2YWx1ZSk7Cit9CisKKworQm9vbCBYTlZDVFJMUXVlcnlUYXJn
ZXRBdHRyaWJ1dGU2NCAoCisgICAgRGlzcGxheSAqZHB5LAorICAgIGludCB0YXJnZXRfdHlwZSwK
KyAgICBpbnQgdGFyZ2V0X2lkLAorICAgIHVuc2lnbmVkIGludCBkaXNwbGF5X21hc2ssCisgICAg
dW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKKyAgICBpbnQ2NF90ICp2YWx1ZQorKXsKKyAgICBYRXh0
RGlzcGxheUluZm8gKmluZm8gPSBmaW5kX2Rpc3BsYXkoZHB5KTsKKyAgICB4bnZDdHJsUXVlcnlB
dHRyaWJ1dGU2NFJlcGx5IHJlcDsKKyAgICB4bnZDdHJsUXVlcnlBdHRyaWJ1dGVSZXEgKnJlcTsK
KyAgICBCb29sIGV4aXN0czsKKworICAgIGlmICghWGV4dEhhc0V4dGVuc2lvbihpbmZvKSkKKyAg
ICAgICAgcmV0dXJuIEZhbHNlOworCisgICAgWE5WQ1RSTENoZWNrRXh0ZW5zaW9uKGRweSwgaW5m
bywgRmFsc2UpOworICAgIFhOVkNUUkxDaGVja1RhcmdldERhdGEoZHB5LCBpbmZvLCAmdGFyZ2V0
X3R5cGUsICZ0YXJnZXRfaWQpOworCisgICAgTG9ja0Rpc3BsYXkoZHB5KTsKKyAgICBHZXRSZXEo
bnZDdHJsUXVlcnlBdHRyaWJ1dGUsIHJlcSk7CisgICAgcmVxLT5yZXFUeXBlID0gaW5mby0+Y29k
ZXMtPm1ham9yX29wY29kZTsKKyAgICByZXEtPm52UmVxVHlwZSA9IFhfbnZDdHJsUXVlcnlBdHRy
aWJ1dGU2NDsKKyAgICByZXEtPnRhcmdldF90eXBlID0gdGFyZ2V0X3R5cGU7CisgICAgcmVxLT50
YXJnZXRfaWQgPSB0YXJnZXRfaWQ7CisgICAgcmVxLT5kaXNwbGF5X21hc2sgPSBkaXNwbGF5X21h
c2s7CisgICAgcmVxLT5hdHRyaWJ1dGUgPSBhdHRyaWJ1dGU7CisgICAgaWYgKCFfWFJlcGx5KGRw
eSwgKHhSZXBseSAqKSZyZXAsIDAsIHhUcnVlKSkgeworICAgICAgICBVbmxvY2tEaXNwbGF5KGRw
eSk7CisgICAgICAgIFN5bmNIYW5kbGUoKTsKKyAgICAgICAgcmV0dXJuIEZhbHNlOworICAgIH0K
KyAgICBleGlzdHMgPSByZXAuZmxhZ3M7CisgICAgaWYgKGV4aXN0cyAmJiB2YWx1ZSkgKnZhbHVl
ID0gcmVwLnZhbHVlXzY0OworICAgIFVubG9ja0Rpc3BsYXkoZHB5KTsKKyAgICBTeW5jSGFuZGxl
KCk7CisgICAgcmV0dXJuIGV4aXN0czsKK30KKworCitCb29sIFhOVkNUUkxRdWVyeVRhcmdldFN0
cmluZ0F0dHJpYnV0ZSAoCisgICAgRGlzcGxheSAqZHB5LAorICAgIGludCB0YXJnZXRfdHlwZSwK
KyAgICBpbnQgdGFyZ2V0X2lkLAorICAgIHVuc2lnbmVkIGludCBkaXNwbGF5X21hc2ssCisgICAg
dW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKKyAgICBjaGFyICoqcHRyCispeworICAgIFhFeHREaXNw
bGF5SW5mbyAqaW5mbyA9IGZpbmRfZGlzcGxheSAoZHB5KTsKKyAgICB4bnZDdHJsUXVlcnlTdHJp
bmdBdHRyaWJ1dGVSZXBseSByZXA7CisgICAgeG52Q3RybFF1ZXJ5U3RyaW5nQXR0cmlidXRlUmVx
ICAgKnJlcTsKKyAgICBCb29sIGV4aXN0czsKKyAgICBpbnQgbGVuZ3RoLCBudW1ieXRlcywgc2xv
cDsKKworICAgIGlmICghcHRyKSByZXR1cm4gRmFsc2U7CisKKyAgICBpZighWGV4dEhhc0V4dGVu
c2lvbihpbmZvKSkKKyAgICAgICAgcmV0dXJuIEZhbHNlOworCisgICAgWE5WQ1RSTENoZWNrRXh0
ZW5zaW9uIChkcHksIGluZm8sIEZhbHNlKTsKKyAgICBYTlZDVFJMQ2hlY2tUYXJnZXREYXRhKGRw
eSwgaW5mbywgJnRhcmdldF90eXBlLCAmdGFyZ2V0X2lkKTsKKworICAgIExvY2tEaXNwbGF5IChk
cHkpOworICAgIEdldFJlcSAobnZDdHJsUXVlcnlTdHJpbmdBdHRyaWJ1dGUsIHJlcSk7CisgICAg
cmVxLT5yZXFUeXBlID0gaW5mby0+Y29kZXMtPm1ham9yX29wY29kZTsKKyAgICByZXEtPm52UmVx
VHlwZSA9IFhfbnZDdHJsUXVlcnlTdHJpbmdBdHRyaWJ1dGU7CisgICAgcmVxLT50YXJnZXRfdHlw
ZSA9IHRhcmdldF90eXBlOworICAgIHJlcS0+dGFyZ2V0X2lkID0gdGFyZ2V0X2lkOworICAgIHJl
cS0+ZGlzcGxheV9tYXNrID0gZGlzcGxheV9tYXNrOworICAgIHJlcS0+YXR0cmlidXRlID0gYXR0
cmlidXRlOworICAgIGlmICghX1hSZXBseSAoZHB5LCAoeFJlcGx5ICopICZyZXAsIDAsIEZhbHNl
KSkgeworICAgICAgICBVbmxvY2tEaXNwbGF5IChkcHkpOworICAgICAgICBTeW5jSGFuZGxlICgp
OworICAgICAgICByZXR1cm4gRmFsc2U7CisgICAgfQorICAgIGxlbmd0aCA9IHJlcC5sZW5ndGg7
CisgICAgbnVtYnl0ZXMgPSByZXAubjsKKyAgICBzbG9wID0gbnVtYnl0ZXMgJiAzOworICAgIGV4
aXN0cyA9IHJlcC5mbGFnczsKKyAgICBpZiAoZXhpc3RzKSB7CisgICAgICAgICpwdHIgPSAoY2hh
ciAqKSBYbWFsbG9jKG51bWJ5dGVzKTsKKyAgICB9CisgICAgaWYgKCFleGlzdHMgfHwgISpwdHIp
IHsKKyAgICAgICAgX1hFYXREYXRhKGRweSwgbGVuZ3RoKTsKKyAgICAgICAgVW5sb2NrRGlzcGxh
eSAoZHB5KTsKKyAgICAgICAgU3luY0hhbmRsZSAoKTsKKyAgICAgICAgcmV0dXJuIEZhbHNlOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIF9YUmVhZChkcHksIChjaGFyICopICpwdHIsIG51bWJ5dGVz
KTsKKyAgICAgICAgaWYgKHNsb3ApIF9YRWF0RGF0YShkcHksIDQtc2xvcCk7CisgICAgfQorICAg
IFVubG9ja0Rpc3BsYXkgKGRweSk7CisgICAgU3luY0hhbmRsZSAoKTsKKyAgICByZXR1cm4gZXhp
c3RzOworfQorCitCb29sIFhOVkNUUkxRdWVyeVN0cmluZ0F0dHJpYnV0ZSAoCisgICAgRGlzcGxh
eSAqZHB5LAorICAgIGludCBzY3JlZW4sCisgICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywK
KyAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAorICAgIGNoYXIgKipwdHIKKyl7CisgICAgcmV0
dXJuIFhOVkNUUkxRdWVyeVRhcmdldFN0cmluZ0F0dHJpYnV0ZShkcHksIE5WX0NUUkxfVEFSR0VU
X1RZUEVfWF9TQ1JFRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzY3JlZW4sIGRpc3BsYXlfbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSwgcHRyKTsKK30KKworCitCb29sIFhOVkNUUkxTZXRU
YXJnZXRTdHJpbmdBdHRyaWJ1dGUgKAorICAgIERpc3BsYXkgKmRweSwKKyAgICBpbnQgdGFyZ2V0
X3R5cGUsCisgICAgaW50IHRhcmdldF9pZCwKKyAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNr
LAorICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCisgICAgY2hhciAqcHRyCispeworICAgIFhF
eHREaXNwbGF5SW5mbyAqaW5mbyA9IGZpbmRfZGlzcGxheSAoZHB5KTsKKyAgICB4bnZDdHJsU2V0
U3RyaW5nQXR0cmlidXRlUmVxICpyZXE7CisgICAgeG52Q3RybFNldFN0cmluZ0F0dHJpYnV0ZVJl
cGx5IHJlcDsKKyAgICBpbnQgc2l6ZTsKKyAgICBCb29sIHN1Y2Nlc3M7CisgICAgCisgICAgaWYo
IVhleHRIYXNFeHRlbnNpb24oaW5mbykpCisgICAgICAgIHJldHVybiBGYWxzZTsKKworICAgIFhO
VkNUUkxDaGVja0V4dGVuc2lvbiAoZHB5LCBpbmZvLCBGYWxzZSk7CisKKyAgICBzaXplID0gc3Ry
bGVuKHB0cikrMTsKKworICAgIExvY2tEaXNwbGF5IChkcHkpOworICAgIEdldFJlcSAobnZDdHJs
U2V0U3RyaW5nQXR0cmlidXRlLCByZXEpOworICAgIHJlcS0+cmVxVHlwZSA9IGluZm8tPmNvZGVz
LT5tYWpvcl9vcGNvZGU7CisgICAgcmVxLT5udlJlcVR5cGUgPSBYX252Q3RybFNldFN0cmluZ0F0
dHJpYnV0ZTsKKyAgICByZXEtPnRhcmdldF90eXBlID0gdGFyZ2V0X3R5cGU7CisgICAgcmVxLT50
YXJnZXRfaWQgPSB0YXJnZXRfaWQ7CisgICAgcmVxLT5kaXNwbGF5X21hc2sgPSBkaXNwbGF5X21h
c2s7CisgICAgcmVxLT5hdHRyaWJ1dGUgPSBhdHRyaWJ1dGU7CisgICAgcmVxLT5sZW5ndGggKz0g
KChzaXplICsgMykgJiB+MykgPj4gMjsKKyAgICByZXEtPm51bV9ieXRlcyA9IHNpemU7CisgICAg
RGF0YShkcHksIHB0ciwgc2l6ZSk7CisgICAgCisgICAgaWYgKCFfWFJlcGx5IChkcHksICh4UmVw
bHkgKikgJnJlcCwgMCwgRmFsc2UpKSB7CisgICAgICAgIFVubG9ja0Rpc3BsYXkgKGRweSk7Cisg
ICAgICAgIFN5bmNIYW5kbGUgKCk7CisgICAgICAgIHJldHVybiBGYWxzZTsKKyAgICB9CisgICAg
VW5sb2NrRGlzcGxheSAoZHB5KTsKKyAgICBTeW5jSGFuZGxlICgpOworICAgIAorICAgIHN1Y2Nl
c3MgPSByZXAuZmxhZ3M7CisgICAgcmV0dXJuIHN1Y2Nlc3M7Cit9CisKK0Jvb2wgWE5WQ1RSTFNl
dFN0cmluZ0F0dHJpYnV0ZSAoCisgICAgRGlzcGxheSAqZHB5LAorICAgIGludCBzY3JlZW4sCisg
ICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywKKyAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRl
LAorICAgIGNoYXIgKnB0cgorKXsKKyAgICByZXR1cm4gWE5WQ1RSTFNldFRhcmdldFN0cmluZ0F0
dHJpYnV0ZShkcHksIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyZWVuLCBkaXNwbGF5X21hc2ssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlLCBwdHIpOwor
fQorCisKK3N0YXRpYyBCb29sIFhOVkNUUkxRdWVyeVZhbGlkVGFyZ2V0QXR0cmlidXRlVmFsdWVz
MzIgKAorICAgIERpc3BsYXkgKmRweSwKKyAgICBYRXh0RGlzcGxheUluZm8gKmluZm8sCisgICAg
aW50IHRhcmdldF90eXBlLAorICAgIGludCB0YXJnZXRfaWQsCisgICAgdW5zaWduZWQgaW50IGRp
c3BsYXlfbWFzaywKKyAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIAorICAgIE5WQ1RSTEF0dHJpYnV0ZVZhbGlkVmFsdWVzUmVjICp2YWx1
ZXMKKyl7CisgICAgeG52Q3RybFF1ZXJ5VmFsaWRBdHRyaWJ1dGVWYWx1ZXNSZXBseSByZXA7Cisg
ICAgeG52Q3RybFF1ZXJ5VmFsaWRBdHRyaWJ1dGVWYWx1ZXNSZXEgICAqcmVxOworICAgIEJvb2wg
ZXhpc3RzOworCisgICAgTG9ja0Rpc3BsYXkgKGRweSk7CisgICAgR2V0UmVxIChudkN0cmxRdWVy
eVZhbGlkQXR0cmlidXRlVmFsdWVzLCByZXEpOworICAgIHJlcS0+cmVxVHlwZSA9IGluZm8tPmNv
ZGVzLT5tYWpvcl9vcGNvZGU7CisgICAgcmVxLT5udlJlcVR5cGUgPSBYX252Q3RybFF1ZXJ5VmFs
aWRBdHRyaWJ1dGVWYWx1ZXM7CisgICAgcmVxLT50YXJnZXRfdHlwZSA9IHRhcmdldF90eXBlOwor
ICAgIHJlcS0+dGFyZ2V0X2lkID0gdGFyZ2V0X2lkOworICAgIHJlcS0+ZGlzcGxheV9tYXNrID0g
ZGlzcGxheV9tYXNrOworICAgIHJlcS0+YXR0cmlidXRlID0gYXR0cmlidXRlOworICAgIGlmICgh
X1hSZXBseSAoZHB5LCAoeFJlcGx5ICopICZyZXAsIDAsIHhUcnVlKSkgeworICAgICAgICBVbmxv
Y2tEaXNwbGF5IChkcHkpOworICAgICAgICBTeW5jSGFuZGxlICgpOworICAgICAgICByZXR1cm4g
RmFsc2U7CisgICAgfQorICAgIGV4aXN0cyA9IHJlcC5mbGFnczsKKyAgICBpZiAoZXhpc3RzKSB7
CisgICAgICAgIHZhbHVlcy0+dHlwZSA9IHJlcC5hdHRyX3R5cGU7CisgICAgICAgIGlmIChyZXAu
YXR0cl90eXBlID09IEFUVFJJQlVURV9UWVBFX1JBTkdFKSB7CisgICAgICAgICAgICB2YWx1ZXMt
PnUucmFuZ2UubWluID0gcmVwLm1pbjsKKyAgICAgICAgICAgIHZhbHVlcy0+dS5yYW5nZS5tYXgg
PSByZXAubWF4OworICAgICAgICB9CisgICAgICAgIGlmIChyZXAuYXR0cl90eXBlID09IEFUVFJJ
QlVURV9UWVBFX0lOVF9CSVRTKSB7CisgICAgICAgICAgICB2YWx1ZXMtPnUuYml0cy5pbnRzID0g
cmVwLmJpdHM7CisgICAgICAgIH0KKyAgICAgICAgdmFsdWVzLT5wZXJtaXNzaW9ucyA9IHJlcC5w
ZXJtczsKKyAgICB9CisgICAgVW5sb2NrRGlzcGxheSAoZHB5KTsKKyAgICBTeW5jSGFuZGxlICgp
OworICAgIHJldHVybiBleGlzdHM7Cit9CisKKworQm9vbCBYTlZDVFJMUXVlcnlWYWxpZFRhcmdl
dFN0cmluZ0F0dHJpYnV0ZVZhbHVlcyAoCisgICAgRGlzcGxheSAqZHB5LAorICAgIGludCB0YXJn
ZXRfdHlwZSwKKyAgICBpbnQgdGFyZ2V0X2lkLAorICAgIHVuc2lnbmVkIGludCBkaXNwbGF5X21h
c2ssCisgICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKKyAgICBOVkNUUkxBdHRyaWJ1dGVWYWxp
ZFZhbHVlc1JlYyAqdmFsdWVzCispeworICAgIFhFeHREaXNwbGF5SW5mbyAqaW5mbyA9IGZpbmRf
ZGlzcGxheShkcHkpOworICAgIEJvb2wgZXhpc3RzOworICAgIHhudkN0cmxRdWVyeVZhbGlkQXR0
cmlidXRlVmFsdWVzUmVwbHkgcmVwOworICAgIHhudkN0cmxRdWVyeVZhbGlkQXR0cmlidXRlVmFs
dWVzUmVxICAgKnJlcTsKKworICAgIGlmICghdmFsdWVzKSByZXR1cm4gRmFsc2U7CisKKyAgICBp
ZiAoIVhleHRIYXNFeHRlbnNpb24oaW5mbykpCisgICAgICAgIHJldHVybiBGYWxzZTsKKworICAg
IFhOVkNUUkxDaGVja0V4dGVuc2lvbihkcHksIGluZm8sIEZhbHNlKTsKKworICAgIExvY2tEaXNw
bGF5KGRweSk7CisgICAgR2V0UmVxIChudkN0cmxRdWVyeVZhbGlkQXR0cmlidXRlVmFsdWVzLCBy
ZXEpOworICAgIHJlcS0+cmVxVHlwZSA9IGluZm8tPmNvZGVzLT5tYWpvcl9vcGNvZGU7CisgICAg
cmVxLT5udlJlcVR5cGUgPSBYX252Q3RybFF1ZXJ5VmFsaWRTdHJpbmdBdHRyaWJ1dGVWYWx1ZXM7
CisgICAgcmVxLT50YXJnZXRfdHlwZSA9IHRhcmdldF90eXBlOworICAgIHJlcS0+dGFyZ2V0X2lk
ID0gdGFyZ2V0X2lkOworICAgIHJlcS0+ZGlzcGxheV9tYXNrID0gZGlzcGxheV9tYXNrOworICAg
IHJlcS0+YXR0cmlidXRlID0gYXR0cmlidXRlOworICAgIGlmICghX1hSZXBseShkcHksICh4UmVw
bHkgKikmcmVwLCAwLCB4VHJ1ZSkpIHsKKyAgICAgICAgVW5sb2NrRGlzcGxheShkcHkpOworICAg
ICAgICBTeW5jSGFuZGxlKCk7CisgICAgICAgIHJldHVybiBGYWxzZTsKKyAgICB9CisgICAgZXhp
c3RzID0gcmVwLmZsYWdzOworICAgIGlmIChleGlzdHMpIHsKKyAgICAgICAgdmFsdWVzLT50eXBl
ID0gcmVwLmF0dHJfdHlwZTsKKyAgICAgICAgdmFsdWVzLT5wZXJtaXNzaW9ucyA9IHJlcC5wZXJt
czsKKyAgICB9CisgICAgVW5sb2NrRGlzcGxheShkcHkpOworICAgIFN5bmNIYW5kbGUoKTsKKyAg
ICByZXR1cm4gZXhpc3RzOworfQorCisKK3N0YXRpYyBCb29sIFhOVkNUUkxRdWVyeVZhbGlkVGFy
Z2V0QXR0cmlidXRlVmFsdWVzNjQgKAorICAgIERpc3BsYXkgKmRweSwKKyAgICBYRXh0RGlzcGxh
eUluZm8gKmluZm8sCisgICAgaW50IHRhcmdldF90eXBlLAorICAgIGludCB0YXJnZXRfaWQsCisg
ICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywKKyAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRl
LAorICAgIE5WQ1RSTEF0dHJpYnV0ZVZhbGlkVmFsdWVzUmVjICp2YWx1ZXMKKyl7CisgICAgeG52
Q3RybFF1ZXJ5VmFsaWRBdHRyaWJ1dGVWYWx1ZXM2NFJlcGx5IHJlcDsKKyAgICB4bnZDdHJsUXVl
cnlWYWxpZEF0dHJpYnV0ZVZhbHVlc1JlcSAqcmVxOworICAgIEJvb2wgZXhpc3RzOworCisgICAg
TG9ja0Rpc3BsYXkoZHB5KTsKKyAgICBHZXRSZXEobnZDdHJsUXVlcnlWYWxpZEF0dHJpYnV0ZVZh
bHVlcywgcmVxKTsKKyAgICByZXEtPnJlcVR5cGUgPSBpbmZvLT5jb2Rlcy0+bWFqb3Jfb3Bjb2Rl
OworICAgIHJlcS0+bnZSZXFUeXBlID0gWF9udkN0cmxRdWVyeVZhbGlkQXR0cmlidXRlVmFsdWVz
NjQ7CisgICAgcmVxLT50YXJnZXRfdHlwZSA9IHRhcmdldF90eXBlOworICAgIHJlcS0+dGFyZ2V0
X2lkID0gdGFyZ2V0X2lkOworICAgIHJlcS0+ZGlzcGxheV9tYXNrID0gZGlzcGxheV9tYXNrOwor
ICAgIHJlcS0+YXR0cmlidXRlID0gYXR0cmlidXRlOworICAgIGlmICghX1hSZXBseShkcHksICh4
UmVwbHkgKikmcmVwLAorICAgICAgICAgICAgICAgICBzel94bnZDdHJsUXVlcnlWYWxpZEF0dHJp
YnV0ZVZhbHVlczY0UmVwbHlfZXh0cmEsCisgICAgICAgICAgICAgICAgIHhUcnVlKSkgeworICAg
ICAgICBVbmxvY2tEaXNwbGF5KGRweSk7CisgICAgICAgIFN5bmNIYW5kbGUoKTsKKyAgICAgICAg
cmV0dXJuIEZhbHNlOworICAgIH0KKyAgICBleGlzdHMgPSByZXAuZmxhZ3M7CisgICAgaWYgKGV4
aXN0cykgeworICAgICAgICB2YWx1ZXMtPnR5cGUgPSByZXAuYXR0cl90eXBlOworICAgICAgICBp
ZiAocmVwLmF0dHJfdHlwZSA9PSBBVFRSSUJVVEVfVFlQRV9SQU5HRSkgeworICAgICAgICAgICAg
dmFsdWVzLT51LnJhbmdlLm1pbiA9IHJlcC5taW5fNjQ7CisgICAgICAgICAgICB2YWx1ZXMtPnUu
cmFuZ2UubWF4ID0gcmVwLm1heF82NDsKKyAgICAgICAgfQorICAgICAgICBpZiAocmVwLmF0dHJf
dHlwZSA9PSBBVFRSSUJVVEVfVFlQRV9JTlRfQklUUykgeworICAgICAgICAgICAgdmFsdWVzLT51
LmJpdHMuaW50cyA9IHJlcC5iaXRzXzY0OworICAgICAgICB9CisgICAgICAgIHZhbHVlcy0+cGVy
bWlzc2lvbnMgPSByZXAucGVybXM7CisgICAgfQorICAgIFVubG9ja0Rpc3BsYXkoZHB5KTsKKyAg
ICBTeW5jSGFuZGxlKCk7CisgICAgcmV0dXJuIGV4aXN0czsKK30KKworQm9vbCBYTlZDVFJMUXVl
cnlWYWxpZFRhcmdldEF0dHJpYnV0ZVZhbHVlcyAoCisgICAgRGlzcGxheSAqZHB5LAorICAgIGlu
dCB0YXJnZXRfdHlwZSwKKyAgICBpbnQgdGFyZ2V0X2lkLAorICAgIHVuc2lnbmVkIGludCBkaXNw
bGF5X21hc2ssCisgICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKKyAgICBOVkNUUkxBdHRyaWJ1
dGVWYWxpZFZhbHVlc1JlYyAqdmFsdWVzCispeworICAgIFhFeHREaXNwbGF5SW5mbyAqaW5mbyA9
IGZpbmRfZGlzcGxheShkcHkpOworICAgIEJvb2wgZXhpc3RzOworICAgIHVpbnRwdHJfdCBmbGFn
czsKKworICAgIGlmICghdmFsdWVzKSByZXR1cm4gRmFsc2U7CisKKyAgICBpZiAoIVhleHRIYXNF
eHRlbnNpb24oaW5mbykpCisgICAgICAgIHJldHVybiBGYWxzZTsKKworICAgIFhOVkNUUkxDaGVj
a0V4dGVuc2lvbihkcHksIGluZm8sIEZhbHNlKTsKKyAgICBYTlZDVFJMQ2hlY2tUYXJnZXREYXRh
KGRweSwgaW5mbywgJnRhcmdldF90eXBlLCAmdGFyZ2V0X2lkKTsKKworICAgIGZsYWdzID0gdmVy
c2lvbl9mbGFncyhkcHksaW5mbyk7CisKKyAgICBpZiAoIShmbGFncyAmIE5WQ1RSTF9FWFRfRVhJ
U1RTKSkKKyAgICAgICAgcmV0dXJuIEZhbHNlOworCisgICAgaWYgKGZsYWdzICYgTlZDVFJMX0VY
VF82NF9CSVRfQVRUUklCVVRFUykgeworICAgICAgICBleGlzdHMgPSBYTlZDVFJMUXVlcnlWYWxp
ZFRhcmdldEF0dHJpYnV0ZVZhbHVlczY0KGRweSwgaW5mbywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJn
ZXRfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGlzcGxheV9tYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIGV4aXN0cyA9IFhOVkNUUkxRdWVyeVZhbGlkVGFyZ2V0QXR0cmlidXRlVmFs
dWVzMzIoZHB5LCBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRhcmdldF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9pZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5X21h
c2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhbHVlcyk7CisgICAgfQorICAgIHJldHVybiBleGlzdHM7Cit9
CisKKworQm9vbCBYTlZDVFJMUXVlcnlWYWxpZEF0dHJpYnV0ZVZhbHVlcyAoCisgICAgRGlzcGxh
eSAqZHB5LAorICAgIGludCBzY3JlZW4sCisgICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywK
KyAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAorICAgIE5WQ1RSTEF0dHJpYnV0ZVZhbGlkVmFs
dWVzUmVjICp2YWx1ZXMKKyl7CisgICAgcmV0dXJuIFhOVkNUUkxRdWVyeVZhbGlkVGFyZ2V0QXR0
cmlidXRlVmFsdWVzKGRweSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyZWVuLCBkaXNwbGF5X21hc2ss
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJp
YnV0ZSwgdmFsdWVzKTsKK30KKworCitzdGF0aWMgQm9vbCBRdWVyeUF0dHJpYnV0ZVBlcm1pc3Np
b25zSW50ZXJuYWwgKAorICAgIERpc3BsYXkgKmRweSwKKyAgICB1bnNpZ25lZCBpbnQgYXR0cmli
dXRlLAorICAgIE5WQ1RSTEF0dHJpYnV0ZVBlcm1pc3Npb25zUmVjICpwZXJtaXNzaW9ucywKKyAg
ICB1bnNpZ25lZCBpbnQgcmVxVHlwZQorKXsKKyAgICBYRXh0RGlzcGxheUluZm8gKmluZm8gPSBm
aW5kX2Rpc3BsYXkgKGRweSk7CisgICAgeG52Q3RybFF1ZXJ5QXR0cmlidXRlUGVybWlzc2lvbnNS
ZXBseSByZXA7CisgICAgeG52Q3RybFF1ZXJ5QXR0cmlidXRlUGVybWlzc2lvbnNSZXEgKnJlcTsK
KyAgICBCb29sIGV4aXN0czsKKworICAgIGlmKCFYZXh0SGFzRXh0ZW5zaW9uKGluZm8pKQorICAg
ICAgICByZXR1cm4gRmFsc2U7CisKKyAgICBYTlZDVFJMQ2hlY2tFeHRlbnNpb24gKGRweSwgaW5m
bywgRmFsc2UpOworCisgICAgTG9ja0Rpc3BsYXkoZHB5KTsKKyAgICBHZXRSZXEobnZDdHJsUXVl
cnlBdHRyaWJ1dGVQZXJtaXNzaW9ucywgcmVxKTsKKyAgICByZXEtPnJlcVR5cGUgPSBpbmZvLT5j
b2Rlcy0+bWFqb3Jfb3Bjb2RlOworICAgIHJlcS0+bnZSZXFUeXBlID0gcmVxVHlwZTsKKyAgICBy
ZXEtPmF0dHJpYnV0ZSA9IGF0dHJpYnV0ZTsKKyAgICBpZiAoIV9YUmVwbHkgKGRweSwgKHhSZXBs
eSAqKSAmcmVwLCAwLCB4VHJ1ZSkpIHsKKyAgICAgICAgVW5sb2NrRGlzcGxheSAoZHB5KTsKKyAg
ICAgICAgU3luY0hhbmRsZSgpOworICAgICAgICByZXR1cm4gRmFsc2U7CisgICAgfQorICAgIGV4
aXN0cyA9IHJlcC5mbGFnczsKKyAgICBpZiAoZXhpc3RzICYmIHBlcm1pc3Npb25zKSB7CisgICAg
ICAgIHBlcm1pc3Npb25zLT50eXBlID0gcmVwLmF0dHJfdHlwZTsKKyAgICAgICAgcGVybWlzc2lv
bnMtPnBlcm1pc3Npb25zID0gcmVwLnBlcm1zOworICAgIH0KKyAgICBVbmxvY2tEaXNwbGF5KGRw
eSk7CisgICAgU3luY0hhbmRsZSgpOworICAgIHJldHVybiBleGlzdHM7Cit9CisKKworQm9vbCBY
TlZDVFJMUXVlcnlBdHRyaWJ1dGVQZXJtaXNzaW9ucyAoCisgICAgRGlzcGxheSAqZHB5LAorICAg
IHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCisgICAgTlZDVFJMQXR0cmlidXRlUGVybWlzc2lvbnNS
ZWMgKnBlcm1pc3Npb25zCispeworICAgIHJldHVybiBRdWVyeUF0dHJpYnV0ZVBlcm1pc3Npb25z
SW50ZXJuYWwoZHB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGVybWlzc2lvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBYX252Q3RybFF1ZXJ5QXR0cmlidXRlUGVybWlzc2lvbnMpOworfQorCisKK0Jvb2wgWE5W
Q1RSTFF1ZXJ5U3RyaW5nQXR0cmlidXRlUGVybWlzc2lvbnMgKAorICAgIERpc3BsYXkgKmRweSwK
KyAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAorICAgIE5WQ1RSTEF0dHJpYnV0ZVBlcm1pc3Np
b25zUmVjICpwZXJtaXNzaW9ucworKXsKKyAgICByZXR1cm4gUXVlcnlBdHRyaWJ1dGVQZXJtaXNz
aW9uc0ludGVybmFsKGRweSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBlcm1pc3Npb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgWF9udkN0cmxRdWVyeVN0cmluZ0F0dHJpYnV0ZVBlcm1pc3Npb25zKTsKK30KKwor
CitCb29sIFhOVkNUUkxRdWVyeUJpbmFyeURhdGFBdHRyaWJ1dGVQZXJtaXNzaW9ucyAoCisgICAg
RGlzcGxheSAqZHB5LAorICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCisgICAgTlZDVFJMQXR0
cmlidXRlUGVybWlzc2lvbnNSZWMgKnBlcm1pc3Npb25zCispeworICAgIHJldHVybiBRdWVyeUF0
dHJpYnV0ZVBlcm1pc3Npb25zSW50ZXJuYWwoZHB5LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGVybWlzc2lvbnMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBYX252Q3RybFF1ZXJ5QmluYXJ5RGF0YUF0dHJpYnV0ZVBl
cm1pc3Npb25zKTsKK30KKworCitCb29sIFhOVkNUUkxRdWVyeVN0cmluZ09wZXJhdGlvbkF0dHJp
YnV0ZVBlcm1pc3Npb25zICgKKyAgICBEaXNwbGF5ICpkcHksCisgICAgdW5zaWduZWQgaW50IGF0
dHJpYnV0ZSwKKyAgICBOVkNUUkxBdHRyaWJ1dGVQZXJtaXNzaW9uc1JlYyAqcGVybWlzc2lvbnMK
Kyl7CisgICAgcmV0dXJuIFF1ZXJ5QXR0cmlidXRlUGVybWlzc2lvbnNJbnRlcm5hbChkcHksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJtaXNzaW9ucywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhfbnZDdHJsUXVl
cnlTdHJpbmdPcGVyYXRpb25BdHRyaWJ1dGVQZXJtaXNzaW9ucyk7Cit9CisKKwordm9pZCBYTlZD
VFJMU2V0R3ZvQ29sb3JDb252ZXJzaW9uICgKKyAgICBEaXNwbGF5ICpkcHksCisgICAgaW50IHNj
cmVlbiwKKyAgICBmbG9hdCBjb2xvck1hdHJpeFszXVszXSwKKyAgICBmbG9hdCBjb2xvck9mZnNl
dFszXSwKKyAgICBmbG9hdCBjb2xvclNjYWxlWzNdCispeworICAgIFhFeHREaXNwbGF5SW5mbyAq
aW5mbyA9IGZpbmRfZGlzcGxheSAoZHB5KTsKKyAgICB4bnZDdHJsU2V0R3ZvQ29sb3JDb252ZXJz
aW9uUmVxICpyZXE7CisKKyAgICBYTlZDVFJMU2ltcGxlQ2hlY2tFeHRlbnNpb24gKGRweSwgaW5m
byk7CisKKyAgICBMb2NrRGlzcGxheSAoZHB5KTsKKyAgICBHZXRSZXEgKG52Q3RybFNldEd2b0Nv
bG9yQ29udmVyc2lvbiwgcmVxKTsKKyAgICByZXEtPnJlcVR5cGUgPSBpbmZvLT5jb2Rlcy0+bWFq
b3Jfb3Bjb2RlOworICAgIHJlcS0+bnZSZXFUeXBlID0gWF9udkN0cmxTZXRHdm9Db2xvckNvbnZl
cnNpb247CisgICAgcmVxLT5zY3JlZW4gPSBzY3JlZW47CisKKyAgICByZXEtPmNzY01hdHJpeF95
X3IgPSBjb2xvck1hdHJpeFswXVswXTsKKyAgICByZXEtPmNzY01hdHJpeF95X2cgPSBjb2xvck1h
dHJpeFswXVsxXTsKKyAgICByZXEtPmNzY01hdHJpeF95X2IgPSBjb2xvck1hdHJpeFswXVsyXTsK
KworICAgIHJlcS0+Y3NjTWF0cml4X2NyX3IgPSBjb2xvck1hdHJpeFsxXVswXTsKKyAgICByZXEt
PmNzY01hdHJpeF9jcl9nID0gY29sb3JNYXRyaXhbMV1bMV07CisgICAgcmVxLT5jc2NNYXRyaXhf
Y3JfYiA9IGNvbG9yTWF0cml4WzFdWzJdOworCisgICAgcmVxLT5jc2NNYXRyaXhfY2JfciA9IGNv
bG9yTWF0cml4WzJdWzBdOworICAgIHJlcS0+Y3NjTWF0cml4X2NiX2cgPSBjb2xvck1hdHJpeFsy
XVsxXTsKKyAgICByZXEtPmNzY01hdHJpeF9jYl9iID0gY29sb3JNYXRyaXhbMl1bMl07CisKKyAg
ICByZXEtPmNzY09mZnNldF95ICA9IGNvbG9yT2Zmc2V0WzBdOworICAgIHJlcS0+Y3NjT2Zmc2V0
X2NyID0gY29sb3JPZmZzZXRbMV07CisgICAgcmVxLT5jc2NPZmZzZXRfY2IgPSBjb2xvck9mZnNl
dFsyXTsKKworICAgIHJlcS0+Y3NjU2NhbGVfeSAgPSBjb2xvclNjYWxlWzBdOworICAgIHJlcS0+
Y3NjU2NhbGVfY3IgPSBjb2xvclNjYWxlWzFdOworICAgIHJlcS0+Y3NjU2NhbGVfY2IgPSBjb2xv
clNjYWxlWzJdOworCisgICAgVW5sb2NrRGlzcGxheSAoZHB5KTsKKyAgICBTeW5jSGFuZGxlICgp
OworfQorCisKK0Jvb2wgWE5WQ1RSTFF1ZXJ5R3ZvQ29sb3JDb252ZXJzaW9uICgKKyAgICBEaXNw
bGF5ICpkcHksCisgICAgaW50IHNjcmVlbiwKKyAgICBmbG9hdCBjb2xvck1hdHJpeFszXVszXSwK
KyAgICBmbG9hdCBjb2xvck9mZnNldFszXSwKKyAgICBmbG9hdCBjb2xvclNjYWxlWzNdCispewor
ICAgIFhFeHREaXNwbGF5SW5mbyAqaW5mbyA9IGZpbmRfZGlzcGxheSAoZHB5KTsKKyAgICB4bnZD
dHJsUXVlcnlHdm9Db2xvckNvbnZlcnNpb25SZXBseSByZXA7CisgICAgeG52Q3RybFF1ZXJ5R3Zv
Q29sb3JDb252ZXJzaW9uUmVxICpyZXE7CisKKyAgICBpZighWGV4dEhhc0V4dGVuc2lvbihpbmZv
KSkKKyAgICAgICAgcmV0dXJuIEZhbHNlOworCisgICAgWE5WQ1RSTENoZWNrRXh0ZW5zaW9uIChk
cHksIGluZm8sIEZhbHNlKTsKKworICAgIExvY2tEaXNwbGF5IChkcHkpOworCisgICAgR2V0UmVx
IChudkN0cmxRdWVyeUd2b0NvbG9yQ29udmVyc2lvbiwgcmVxKTsKKyAgICByZXEtPnJlcVR5cGUg
PSBpbmZvLT5jb2Rlcy0+bWFqb3Jfb3Bjb2RlOworICAgIHJlcS0+bnZSZXFUeXBlID0gWF9udkN0
cmxRdWVyeUd2b0NvbG9yQ29udmVyc2lvbjsKKyAgICByZXEtPnNjcmVlbiA9IHNjcmVlbjsKKwor
ICAgIGlmICghX1hSZXBseShkcHksICh4UmVwbHkgKikgJnJlcCwgMCwgeEZhbHNlKSkgeworICAg
ICAgICBVbmxvY2tEaXNwbGF5IChkcHkpOworICAgICAgICBTeW5jSGFuZGxlICgpOworICAgICAg
ICByZXR1cm4gRmFsc2U7CisgICAgfQorCisgICAgX1hSZWFkKGRweSwgKGNoYXIgKikoY29sb3JN
YXRyaXgpLCAzNik7CisgICAgX1hSZWFkKGRweSwgKGNoYXIgKikoY29sb3JPZmZzZXQpLCAxMik7
CisgICAgX1hSZWFkKGRweSwgKGNoYXIgKikoY29sb3JTY2FsZSksIDEyKTsKKworICAgIFVubG9j
a0Rpc3BsYXkgKGRweSk7CisgICAgU3luY0hhbmRsZSAoKTsKKworICAgIHJldHVybiBUcnVlOwor
fQorCisKK0Jvb2wgWE5WQ3RybFNlbGVjdFRhcmdldE5vdGlmeSAoCisgICAgRGlzcGxheSAqZHB5
LAorICAgIGludCB0YXJnZXRfdHlwZSwKKyAgICBpbnQgdGFyZ2V0X2lkLAorICAgIGludCBub3Rp
ZnlfdHlwZSwKKyAgICBCb29sIG9ub2ZmCispeworICAgIFhFeHREaXNwbGF5SW5mbyAqaW5mbyA9
IGZpbmRfZGlzcGxheSAoZHB5KTsKKyAgICB4bnZDdHJsU2VsZWN0VGFyZ2V0Tm90aWZ5UmVxICpy
ZXE7CisKKyAgICBpZighWGV4dEhhc0V4dGVuc2lvbiAoaW5mbykpCisgICAgICAgIHJldHVybiBG
YWxzZTsKKworICAgIFhOVkNUUkxDaGVja0V4dGVuc2lvbiAoZHB5LCBpbmZvLCBGYWxzZSk7CisK
KyAgICBMb2NrRGlzcGxheSAoZHB5KTsKKyAgICBHZXRSZXEgKG52Q3RybFNlbGVjdFRhcmdldE5v
dGlmeSwgcmVxKTsKKyAgICByZXEtPnJlcVR5cGUgPSBpbmZvLT5jb2Rlcy0+bWFqb3Jfb3Bjb2Rl
OworICAgIHJlcS0+bnZSZXFUeXBlID0gWF9udkN0cmxTZWxlY3RUYXJnZXROb3RpZnk7CisgICAg
cmVxLT50YXJnZXRfdHlwZSA9IHRhcmdldF90eXBlOworICAgIHJlcS0+dGFyZ2V0X2lkID0gdGFy
Z2V0X2lkOworICAgIHJlcS0+bm90aWZ5VHlwZSA9IG5vdGlmeV90eXBlOworICAgIHJlcS0+b25v
ZmYgPSBvbm9mZjsKKyAgICBVbmxvY2tEaXNwbGF5IChkcHkpOworICAgIFN5bmNIYW5kbGUgKCk7
CisKKyAgICByZXR1cm4gVHJ1ZTsKK30KKworCitCb29sIFhOVkN0cmxTZWxlY3ROb3RpZnkgKAor
ICAgIERpc3BsYXkgKmRweSwKKyAgICBpbnQgc2NyZWVuLAorICAgIGludCB0eXBlLAorICAgIEJv
b2wgb25vZmYKKyl7CisgICAgWEV4dERpc3BsYXlJbmZvICppbmZvID0gZmluZF9kaXNwbGF5IChk
cHkpOworICAgIHhudkN0cmxTZWxlY3ROb3RpZnlSZXEgKnJlcTsKKworICAgIGlmKCFYZXh0SGFz
RXh0ZW5zaW9uIChpbmZvKSkKKyAgICAgICAgcmV0dXJuIEZhbHNlOworCisgICAgWE5WQ1RSTENo
ZWNrRXh0ZW5zaW9uIChkcHksIGluZm8sIEZhbHNlKTsKKworICAgIExvY2tEaXNwbGF5IChkcHkp
OworICAgIEdldFJlcSAobnZDdHJsU2VsZWN0Tm90aWZ5LCByZXEpOworICAgIHJlcS0+cmVxVHlw
ZSA9IGluZm8tPmNvZGVzLT5tYWpvcl9vcGNvZGU7CisgICAgcmVxLT5udlJlcVR5cGUgPSBYX252
Q3RybFNlbGVjdE5vdGlmeTsKKyAgICByZXEtPnNjcmVlbiA9IHNjcmVlbjsKKyAgICByZXEtPm5v
dGlmeVR5cGUgPSB0eXBlOworICAgIHJlcS0+b25vZmYgPSBvbm9mZjsKKyAgICBVbmxvY2tEaXNw
bGF5IChkcHkpOworICAgIFN5bmNIYW5kbGUgKCk7CisKKyAgICByZXR1cm4gVHJ1ZTsKK30KKwor
Qm9vbCBYTlZDVFJMUXVlcnlUYXJnZXRCaW5hcnlEYXRhICgKKyAgICBEaXNwbGF5ICpkcHksCisg
ICAgaW50IHRhcmdldF90eXBlLAorICAgIGludCB0YXJnZXRfaWQsCisgICAgdW5zaWduZWQgaW50
IGRpc3BsYXlfbWFzaywKKyAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAorICAgIHVuc2lnbmVk
IGNoYXIgKipwdHIsCisgICAgaW50ICpsZW4KKyl7CisgICAgWEV4dERpc3BsYXlJbmZvICppbmZv
ID0gZmluZF9kaXNwbGF5IChkcHkpOworICAgIHhudkN0cmxRdWVyeUJpbmFyeURhdGFSZXBseSBy
ZXA7CisgICAgeG52Q3RybFF1ZXJ5QmluYXJ5RGF0YVJlcSAgICpyZXE7CisgICAgQm9vbCBleGlz
dHM7CisgICAgaW50IGxlbmd0aCwgbnVtYnl0ZXMsIHNsb3A7CisKKyAgICBpZiAoIXB0cikgcmV0
dXJuIEZhbHNlOworCisgICAgaWYoIVhleHRIYXNFeHRlbnNpb24oaW5mbykpCisgICAgICAgIHJl
dHVybiBGYWxzZTsKKworICAgIFhOVkNUUkxDaGVja0V4dGVuc2lvbiAoZHB5LCBpbmZvLCBGYWxz
ZSk7CisgICAgWE5WQ1RSTENoZWNrVGFyZ2V0RGF0YShkcHksIGluZm8sICZ0YXJnZXRfdHlwZSwg
JnRhcmdldF9pZCk7CisKKyAgICBMb2NrRGlzcGxheSAoZHB5KTsKKyAgICBHZXRSZXEgKG52Q3Ry
bFF1ZXJ5QmluYXJ5RGF0YSwgcmVxKTsKKyAgICByZXEtPnJlcVR5cGUgPSBpbmZvLT5jb2Rlcy0+
bWFqb3Jfb3Bjb2RlOworICAgIHJlcS0+bnZSZXFUeXBlID0gWF9udkN0cmxRdWVyeUJpbmFyeURh
dGE7CisgICAgcmVxLT50YXJnZXRfdHlwZSA9IHRhcmdldF90eXBlOworICAgIHJlcS0+dGFyZ2V0
X2lkID0gdGFyZ2V0X2lkOworICAgIHJlcS0+ZGlzcGxheV9tYXNrID0gZGlzcGxheV9tYXNrOwor
ICAgIHJlcS0+YXR0cmlidXRlID0gYXR0cmlidXRlOworICAgIGlmICghX1hSZXBseSAoZHB5LCAo
eFJlcGx5ICopICZyZXAsIDAsIEZhbHNlKSkgeworICAgICAgICBVbmxvY2tEaXNwbGF5IChkcHkp
OworICAgICAgICBTeW5jSGFuZGxlICgpOworICAgICAgICByZXR1cm4gRmFsc2U7CisgICAgfQor
ICAgIGxlbmd0aCA9IHJlcC5sZW5ndGg7CisgICAgbnVtYnl0ZXMgPSByZXAubjsKKyAgICBzbG9w
ID0gbnVtYnl0ZXMgJiAzOworICAgIGV4aXN0cyA9IHJlcC5mbGFnczsKKyAgICBpZiAoZXhpc3Rz
KSB7CisgICAgICAgICpwdHIgPSAodW5zaWduZWQgY2hhciAqKSBYbWFsbG9jKG51bWJ5dGVzKTsK
KyAgICB9CisgICAgaWYgKCFleGlzdHMgfHwgISpwdHIpIHsKKyAgICAgICAgX1hFYXREYXRhKGRw
eSwgbGVuZ3RoKTsKKyAgICAgICAgVW5sb2NrRGlzcGxheSAoZHB5KTsKKyAgICAgICAgU3luY0hh
bmRsZSAoKTsKKyAgICAgICAgcmV0dXJuIEZhbHNlOworICAgIH0gZWxzZSB7CisgICAgICAgIF9Y
UmVhZChkcHksIChjaGFyICopICpwdHIsIG51bWJ5dGVzKTsKKyAgICAgICAgaWYgKHNsb3ApIF9Y
RWF0RGF0YShkcHksIDQtc2xvcCk7CisgICAgfQorICAgIGlmIChsZW4pICpsZW4gPSBudW1ieXRl
czsKKyAgICBVbmxvY2tEaXNwbGF5IChkcHkpOworICAgIFN5bmNIYW5kbGUgKCk7CisgICAgcmV0
dXJuIGV4aXN0czsKK30KKworQm9vbCBYTlZDVFJMUXVlcnlCaW5hcnlEYXRhICgKKyAgICBEaXNw
bGF5ICpkcHksCisgICAgaW50IHNjcmVlbiwKKyAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNr
LAorICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCisgICAgdW5zaWduZWQgY2hhciAqKnB0ciwK
KyAgICBpbnQgKmxlbgorKXsKKyAgICByZXR1cm4gWE5WQ1RSTFF1ZXJ5VGFyZ2V0QmluYXJ5RGF0
YShkcHksIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2NyZWVuLCBkaXNwbGF5X21hc2ssCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlLCBwdHIsIGxlbik7Cit9CisKK0Jv
b2wgWE5WQ1RSTFN0cmluZ09wZXJhdGlvbiAoCisgICAgRGlzcGxheSAqZHB5LAorICAgIGludCB0
YXJnZXRfdHlwZSwKKyAgICBpbnQgdGFyZ2V0X2lkLAorICAgIHVuc2lnbmVkIGludCBkaXNwbGF5
X21hc2ssCisgICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKKyAgICBjaGFyICpwSW4sCisgICAg
Y2hhciAqKnBwT3V0CispIHsKKyAgICBYRXh0RGlzcGxheUluZm8gKmluZm8gPSBmaW5kX2Rpc3Bs
YXkoZHB5KTsKKyAgICB4bnZDdHJsU3RyaW5nT3BlcmF0aW9uUmVxICpyZXE7CisgICAgeG52Q3Ry
bFN0cmluZ09wZXJhdGlvblJlcGx5IHJlcDsKKyAgICBCb29sIHJldDsKKyAgICBpbnQgaW5TaXpl
LCBvdXRTaXplLCBsZW5ndGgsIHNsb3A7CisKKyAgICBpZiAoIVhleHRIYXNFeHRlbnNpb24oaW5m
bykpCisgICAgICAgIHJldHVybiBGYWxzZTsKKyAgICAKKyAgICBpZiAoIXBwT3V0KQorICAgICAg
ICByZXR1cm4gRmFsc2U7CisKKyAgICAqcHBPdXQgPSBOVUxMOworICAgIAorICAgIFhOVkNUUkxD
aGVja0V4dGVuc2lvbihkcHksIGluZm8sIEZhbHNlKTsKKyAgICBYTlZDVFJMQ2hlY2tUYXJnZXRE
YXRhKGRweSwgaW5mbywgJnRhcmdldF90eXBlLCAmdGFyZ2V0X2lkKTsKKyAgICAKKyAgICBpZiAo
cEluKSB7CisgICAgICAgIGluU2l6ZSA9IHN0cmxlbihwSW4pICsgMTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBpblNpemUgPSAwOworICAgIH0KKyAgICAKKyAgICBMb2NrRGlzcGxheShkcHkpOwor
ICAgIEdldFJlcShudkN0cmxTdHJpbmdPcGVyYXRpb24sIHJlcSk7CisgICAgCisgICAgcmVxLT5y
ZXFUeXBlID0gaW5mby0+Y29kZXMtPm1ham9yX29wY29kZTsKKyAgICByZXEtPm52UmVxVHlwZSA9
IFhfbnZDdHJsU3RyaW5nT3BlcmF0aW9uOworICAgIHJlcS0+dGFyZ2V0X3R5cGUgPSB0YXJnZXRf
dHlwZTsKKyAgICByZXEtPnRhcmdldF9pZCA9IHRhcmdldF9pZDsKKyAgICByZXEtPmRpc3BsYXlf
bWFzayA9IGRpc3BsYXlfbWFzazsKKyAgICByZXEtPmF0dHJpYnV0ZSA9IGF0dHJpYnV0ZTsKKwor
ICAgIHJlcS0+bGVuZ3RoICs9ICgoaW5TaXplICsgMykgJiB+MykgPj4gMjsKKyAgICByZXEtPm51
bV9ieXRlcyA9IGluU2l6ZTsKKyAgICAKKyAgICBpZiAocEluKSB7CisgICAgICAgIERhdGEoZHB5
LCBwSW4sIGluU2l6ZSk7CisgICAgfQorICAgIAorICAgIGlmICghX1hSZXBseSAoZHB5LCAoeFJl
cGx5ICopICZyZXAsIDAsIEZhbHNlKSkgeworICAgICAgICBVbmxvY2tEaXNwbGF5KGRweSk7Cisg
ICAgICAgIFN5bmNIYW5kbGUoKTsKKyAgICAgICAgcmV0dXJuIEZhbHNlOworICAgIH0KKyAgICAK
KyAgICBsZW5ndGggPSByZXAubGVuZ3RoOworICAgIG91dFNpemUgPSByZXAubnVtX2J5dGVzOwor
ICAgIHNsb3AgPSBvdXRTaXplICYgMzsKKworICAgIGlmIChvdXRTaXplKSAqcHBPdXQgPSAoY2hh
ciAqKSBYbWFsbG9jKG91dFNpemUpOworICAgIAorICAgIGlmICghKnBwT3V0KSB7CisgICAgICAg
IF9YRWF0RGF0YShkcHksIGxlbmd0aCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgX1hSZWFkKGRw
eSwgKGNoYXIgKikgKnBwT3V0LCBvdXRTaXplKTsKKyAgICAgICAgaWYgKHNsb3ApIF9YRWF0RGF0
YShkcHksIDQtc2xvcCk7CisgICAgfQorICAgIAorICAgIHJldCA9IHJlcC5yZXQ7CisgICAgCisg
ICAgVW5sb2NrRGlzcGxheShkcHkpOworICAgIFN5bmNIYW5kbGUoKTsKKyAgICAKKyAgICByZXR1
cm4gcmV0OworfQorCisKK3N0YXRpYyBCb29sIHdpcmVfdG9fZXZlbnQgKERpc3BsYXkgKmRweSwg
WEV2ZW50ICpob3N0LCB4RXZlbnQgKndpcmUpCit7CisgICAgWEV4dERpc3BsYXlJbmZvICppbmZv
ID0gZmluZF9kaXNwbGF5IChkcHkpOworICAgIFhOVkN0cmxFdmVudCAqcmU7CisgICAgeG52Y3Ry
bEV2ZW50ICpldmVudDsKKyAgICBYTlZDdHJsRXZlbnRUYXJnZXQgKnJlVGFyZ2V0OworICAgIHhu
dmN0cmxFdmVudFRhcmdldCAqZXZlbnRUYXJnZXQ7CisgICAgWE5WQ3RybEV2ZW50VGFyZ2V0QXZh
aWxhYmlsaXR5ICpyZVRhcmdldEF2YWlsYWJpbGl0eTsKKyAgICBYTlZDdHJsU3RyaW5nRXZlbnRU
YXJnZXQgKnJlVGFyZ2V0U3RyaW5nOworICAgIFhOVkN0cmxCaW5hcnlFdmVudFRhcmdldCAqcmVU
YXJnZXRCaW5hcnk7CisKKyAgICBYTlZDVFJMQ2hlY2tFeHRlbnNpb24gKGRweSwgaW5mbywgRmFs
c2UpOworICAgIAorICAgIHN3aXRjaCAoKHdpcmUtPnUudS50eXBlICYgMHg3RikgLSBpbmZvLT5j
b2Rlcy0+Zmlyc3RfZXZlbnQpIHsKKyAgICBjYXNlIEFUVFJJQlVURV9DSEFOR0VEX0VWRU5UOgor
ICAgICAgICByZSA9IChYTlZDdHJsRXZlbnQgKikgaG9zdDsKKyAgICAgICAgZXZlbnQgPSAoeG52
Y3RybEV2ZW50ICopIHdpcmU7CisgICAgICAgIHJlLT5hdHRyaWJ1dGVfY2hhbmdlZC50eXBlID0g
ZXZlbnQtPnUudS50eXBlICYgMHg3RjsKKyAgICAgICAgcmUtPmF0dHJpYnV0ZV9jaGFuZ2VkLnNl
cmlhbCA9CisgICAgICAgICAgICBfWFNldExhc3RSZXF1ZXN0UmVhZChkcHksICh4R2VuZXJpY1Jl
cGx5KikgZXZlbnQpOworICAgICAgICByZS0+YXR0cmlidXRlX2NoYW5nZWQuc2VuZF9ldmVudCA9
ICgoZXZlbnQtPnUudS50eXBlICYgMHg4MCkgIT0gMCk7CisgICAgICAgIHJlLT5hdHRyaWJ1dGVf
Y2hhbmdlZC5kaXNwbGF5ID0gZHB5OworICAgICAgICByZS0+YXR0cmlidXRlX2NoYW5nZWQudGlt
ZSA9IGV2ZW50LT51LmF0dHJpYnV0ZV9jaGFuZ2VkLnRpbWU7CisgICAgICAgIHJlLT5hdHRyaWJ1
dGVfY2hhbmdlZC5zY3JlZW4gPSBldmVudC0+dS5hdHRyaWJ1dGVfY2hhbmdlZC5zY3JlZW47Cisg
ICAgICAgIHJlLT5hdHRyaWJ1dGVfY2hhbmdlZC5kaXNwbGF5X21hc2sgPQorICAgICAgICAgICAg
ZXZlbnQtPnUuYXR0cmlidXRlX2NoYW5nZWQuZGlzcGxheV9tYXNrOworICAgICAgICByZS0+YXR0
cmlidXRlX2NoYW5nZWQuYXR0cmlidXRlID0gZXZlbnQtPnUuYXR0cmlidXRlX2NoYW5nZWQuYXR0
cmlidXRlOworICAgICAgICByZS0+YXR0cmlidXRlX2NoYW5nZWQudmFsdWUgPSBldmVudC0+dS5h
dHRyaWJ1dGVfY2hhbmdlZC52YWx1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUQVJHRVRf
QVRUUklCVVRFX0NIQU5HRURfRVZFTlQ6CisgICAgICAgIHJlVGFyZ2V0ID0gKFhOVkN0cmxFdmVu
dFRhcmdldCAqKSBob3N0OworICAgICAgICBldmVudFRhcmdldCA9ICh4bnZjdHJsRXZlbnRUYXJn
ZXQgKikgd2lyZTsKKyAgICAgICAgcmVUYXJnZXQtPmF0dHJpYnV0ZV9jaGFuZ2VkLnR5cGUgPSBl
dmVudFRhcmdldC0+dS51LnR5cGUgJiAweDdGOworICAgICAgICByZVRhcmdldC0+YXR0cmlidXRl
X2NoYW5nZWQuc2VyaWFsID0KKyAgICAgICAgICAgIF9YU2V0TGFzdFJlcXVlc3RSZWFkKGRweSwg
KHhHZW5lcmljUmVwbHkqKSBldmVudFRhcmdldCk7CisgICAgICAgIHJlVGFyZ2V0LT5hdHRyaWJ1
dGVfY2hhbmdlZC5zZW5kX2V2ZW50ID0KKyAgICAgICAgICAgICgoZXZlbnRUYXJnZXQtPnUudS50
eXBlICYgMHg4MCkgIT0gMCk7CisgICAgICAgIHJlVGFyZ2V0LT5hdHRyaWJ1dGVfY2hhbmdlZC5k
aXNwbGF5ID0gZHB5OworICAgICAgICByZVRhcmdldC0+YXR0cmlidXRlX2NoYW5nZWQudGltZSA9
CisgICAgICAgICAgICBldmVudFRhcmdldC0+dS5hdHRyaWJ1dGVfY2hhbmdlZC50aW1lOworICAg
ICAgICByZVRhcmdldC0+YXR0cmlidXRlX2NoYW5nZWQudGFyZ2V0X3R5cGUgPQorICAgICAgICAg
ICAgZXZlbnRUYXJnZXQtPnUuYXR0cmlidXRlX2NoYW5nZWQudGFyZ2V0X3R5cGU7CisgICAgICAg
IHJlVGFyZ2V0LT5hdHRyaWJ1dGVfY2hhbmdlZC50YXJnZXRfaWQgPQorICAgICAgICAgICAgZXZl
bnRUYXJnZXQtPnUuYXR0cmlidXRlX2NoYW5nZWQudGFyZ2V0X2lkOworICAgICAgICByZVRhcmdl
dC0+YXR0cmlidXRlX2NoYW5nZWQuZGlzcGxheV9tYXNrID0KKyAgICAgICAgICAgIGV2ZW50VGFy
Z2V0LT51LmF0dHJpYnV0ZV9jaGFuZ2VkLmRpc3BsYXlfbWFzazsKKyAgICAgICAgcmVUYXJnZXQt
PmF0dHJpYnV0ZV9jaGFuZ2VkLmF0dHJpYnV0ZSA9CisgICAgICAgICAgICBldmVudFRhcmdldC0+
dS5hdHRyaWJ1dGVfY2hhbmdlZC5hdHRyaWJ1dGU7CisgICAgICAgIHJlVGFyZ2V0LT5hdHRyaWJ1
dGVfY2hhbmdlZC52YWx1ZSA9CisgICAgICAgICAgICBldmVudFRhcmdldC0+dS5hdHRyaWJ1dGVf
Y2hhbmdlZC52YWx1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUQVJHRVRfQVRUUklCVVRF
X0FWQUlMQUJJTElUWV9DSEFOR0VEX0VWRU5UOgorICAgICAgICByZVRhcmdldEF2YWlsYWJpbGl0
eSA9IChYTlZDdHJsRXZlbnRUYXJnZXRBdmFpbGFiaWxpdHkgKikgaG9zdDsKKyAgICAgICAgZXZl
bnRUYXJnZXQgPSAoeG52Y3RybEV2ZW50VGFyZ2V0ICopIHdpcmU7CisgICAgICAgIHJlVGFyZ2V0
QXZhaWxhYmlsaXR5LT5hdHRyaWJ1dGVfY2hhbmdlZC50eXBlID0KKyAgICAgICAgICAgIGV2ZW50
VGFyZ2V0LT51LnUudHlwZSAmIDB4N0Y7CisgICAgICAgIHJlVGFyZ2V0QXZhaWxhYmlsaXR5LT5h
dHRyaWJ1dGVfY2hhbmdlZC5zZXJpYWwgPQorICAgICAgICAgICAgX1hTZXRMYXN0UmVxdWVzdFJl
YWQoZHB5LCAoeEdlbmVyaWNSZXBseSopIGV2ZW50VGFyZ2V0KTsKKyAgICAgICAgcmVUYXJnZXRB
dmFpbGFiaWxpdHktPmF0dHJpYnV0ZV9jaGFuZ2VkLnNlbmRfZXZlbnQgPQorICAgICAgICAgICAg
KChldmVudFRhcmdldC0+dS51LnR5cGUgJiAweDgwKSAhPSAwKTsKKyAgICAgICAgcmVUYXJnZXRB
dmFpbGFiaWxpdHktPmF0dHJpYnV0ZV9jaGFuZ2VkLmRpc3BsYXkgPSBkcHk7CisgICAgICAgIHJl
VGFyZ2V0QXZhaWxhYmlsaXR5LT5hdHRyaWJ1dGVfY2hhbmdlZC50aW1lID0KKyAgICAgICAgICAg
IGV2ZW50VGFyZ2V0LT51LmF2YWlsYWJpbGl0eV9jaGFuZ2VkLnRpbWU7CisgICAgICAgIHJlVGFy
Z2V0QXZhaWxhYmlsaXR5LT5hdHRyaWJ1dGVfY2hhbmdlZC50YXJnZXRfdHlwZSA9CisgICAgICAg
ICAgICBldmVudFRhcmdldC0+dS5hdmFpbGFiaWxpdHlfY2hhbmdlZC50YXJnZXRfdHlwZTsKKyAg
ICAgICAgcmVUYXJnZXRBdmFpbGFiaWxpdHktPmF0dHJpYnV0ZV9jaGFuZ2VkLnRhcmdldF9pZCA9
CisgICAgICAgICAgICBldmVudFRhcmdldC0+dS5hdmFpbGFiaWxpdHlfY2hhbmdlZC50YXJnZXRf
aWQ7CisgICAgICAgIHJlVGFyZ2V0QXZhaWxhYmlsaXR5LT5hdHRyaWJ1dGVfY2hhbmdlZC5kaXNw
bGF5X21hc2sgPQorICAgICAgICAgICAgZXZlbnRUYXJnZXQtPnUuYXZhaWxhYmlsaXR5X2NoYW5n
ZWQuZGlzcGxheV9tYXNrOworICAgICAgICByZVRhcmdldEF2YWlsYWJpbGl0eS0+YXR0cmlidXRl
X2NoYW5nZWQuYXR0cmlidXRlID0KKyAgICAgICAgICAgIGV2ZW50VGFyZ2V0LT51LmF2YWlsYWJp
bGl0eV9jaGFuZ2VkLmF0dHJpYnV0ZTsKKyAgICAgICAgcmVUYXJnZXRBdmFpbGFiaWxpdHktPmF0
dHJpYnV0ZV9jaGFuZ2VkLmF2YWlsYWJpbGl0eSA9CisgICAgICAgICAgICBldmVudFRhcmdldC0+
dS5hdmFpbGFiaWxpdHlfY2hhbmdlZC5hdmFpbGFiaWxpdHk7CisgICAgICAgIHJlVGFyZ2V0QXZh
aWxhYmlsaXR5LT5hdHRyaWJ1dGVfY2hhbmdlZC52YWx1ZSA9CisgICAgICAgICAgICBldmVudFRh
cmdldC0+dS5hdmFpbGFiaWxpdHlfY2hhbmdlZC52YWx1ZTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBUQVJHRVRfU1RSSU5HX0FUVFJJQlVURV9DSEFOR0VEX0VWRU5UOgorICAgICAgICByZVRh
cmdldFN0cmluZyA9IChYTlZDdHJsU3RyaW5nRXZlbnRUYXJnZXQgKikgaG9zdDsKKyAgICAgICAg
ZXZlbnRUYXJnZXQgPSAoeG52Y3RybEV2ZW50VGFyZ2V0ICopIHdpcmU7CisgICAgICAgIHJlVGFy
Z2V0U3RyaW5nLT5hdHRyaWJ1dGVfY2hhbmdlZC50eXBlID0gZXZlbnRUYXJnZXQtPnUudS50eXBl
ICYgMHg3RjsKKyAgICAgICAgcmVUYXJnZXRTdHJpbmctPmF0dHJpYnV0ZV9jaGFuZ2VkLnNlcmlh
bCA9CisgICAgICAgICAgICBfWFNldExhc3RSZXF1ZXN0UmVhZChkcHksICh4R2VuZXJpY1JlcGx5
KikgZXZlbnRUYXJnZXQpOworICAgICAgICByZVRhcmdldFN0cmluZy0+YXR0cmlidXRlX2NoYW5n
ZWQuc2VuZF9ldmVudCA9CisgICAgICAgICAgICAoKGV2ZW50VGFyZ2V0LT51LnUudHlwZSAmIDB4
ODApICE9IDApOworICAgICAgICByZVRhcmdldFN0cmluZy0+YXR0cmlidXRlX2NoYW5nZWQuZGlz
cGxheSA9IGRweTsKKyAgICAgICAgcmVUYXJnZXRTdHJpbmctPmF0dHJpYnV0ZV9jaGFuZ2VkLnRp
bWUgPQorICAgICAgICAgICAgZXZlbnRUYXJnZXQtPnUuYXR0cmlidXRlX2NoYW5nZWQudGltZTsK
KyAgICAgICAgcmVUYXJnZXRTdHJpbmctPmF0dHJpYnV0ZV9jaGFuZ2VkLnRhcmdldF90eXBlID0K
KyAgICAgICAgICAgIGV2ZW50VGFyZ2V0LT51LmF0dHJpYnV0ZV9jaGFuZ2VkLnRhcmdldF90eXBl
OworICAgICAgICByZVRhcmdldFN0cmluZy0+YXR0cmlidXRlX2NoYW5nZWQudGFyZ2V0X2lkID0K
KyAgICAgICAgICAgIGV2ZW50VGFyZ2V0LT51LmF0dHJpYnV0ZV9jaGFuZ2VkLnRhcmdldF9pZDsK
KyAgICAgICAgcmVUYXJnZXRTdHJpbmctPmF0dHJpYnV0ZV9jaGFuZ2VkLmRpc3BsYXlfbWFzayA9
CisgICAgICAgICAgICBldmVudFRhcmdldC0+dS5hdHRyaWJ1dGVfY2hhbmdlZC5kaXNwbGF5X21h
c2s7CisgICAgICAgIHJlVGFyZ2V0U3RyaW5nLT5hdHRyaWJ1dGVfY2hhbmdlZC5hdHRyaWJ1dGUg
PQorICAgICAgICAgICAgZXZlbnRUYXJnZXQtPnUuYXR0cmlidXRlX2NoYW5nZWQuYXR0cmlidXRl
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRBUkdFVF9CSU5BUllfQVRUUklCVVRFX0NIQU5H
RURfRVZFTlQ6CisgICAgICAgIHJlVGFyZ2V0QmluYXJ5ID0gKFhOVkN0cmxCaW5hcnlFdmVudFRh
cmdldCAqKSBob3N0OworICAgICAgICBldmVudFRhcmdldCA9ICh4bnZjdHJsRXZlbnRUYXJnZXQg
Kikgd2lyZTsKKyAgICAgICAgcmVUYXJnZXRCaW5hcnktPmF0dHJpYnV0ZV9jaGFuZ2VkLnR5cGUg
PSBldmVudFRhcmdldC0+dS51LnR5cGUgJiAweDdGOworICAgICAgICByZVRhcmdldEJpbmFyeS0+
YXR0cmlidXRlX2NoYW5nZWQuc2VyaWFsID0KKyAgICAgICAgICAgIF9YU2V0TGFzdFJlcXVlc3RS
ZWFkKGRweSwgKHhHZW5lcmljUmVwbHkqKSBldmVudFRhcmdldCk7CisgICAgICAgIHJlVGFyZ2V0
QmluYXJ5LT5hdHRyaWJ1dGVfY2hhbmdlZC5zZW5kX2V2ZW50ID0KKyAgICAgICAgICAgICgoZXZl
bnRUYXJnZXQtPnUudS50eXBlICYgMHg4MCkgIT0gMCk7CisgICAgICAgIHJlVGFyZ2V0QmluYXJ5
LT5hdHRyaWJ1dGVfY2hhbmdlZC5kaXNwbGF5ID0gZHB5OworICAgICAgICByZVRhcmdldEJpbmFy
eS0+YXR0cmlidXRlX2NoYW5nZWQudGltZSA9CisgICAgICAgICAgICBldmVudFRhcmdldC0+dS5h
dHRyaWJ1dGVfY2hhbmdlZC50aW1lOworICAgICAgICByZVRhcmdldEJpbmFyeS0+YXR0cmlidXRl
X2NoYW5nZWQudGFyZ2V0X3R5cGUgPQorICAgICAgICAgICAgZXZlbnRUYXJnZXQtPnUuYXR0cmli
dXRlX2NoYW5nZWQudGFyZ2V0X3R5cGU7CisgICAgICAgIHJlVGFyZ2V0QmluYXJ5LT5hdHRyaWJ1
dGVfY2hhbmdlZC50YXJnZXRfaWQgPQorICAgICAgICAgICAgZXZlbnRUYXJnZXQtPnUuYXR0cmli
dXRlX2NoYW5nZWQudGFyZ2V0X2lkOworICAgICAgICByZVRhcmdldEJpbmFyeS0+YXR0cmlidXRl
X2NoYW5nZWQuZGlzcGxheV9tYXNrID0KKyAgICAgICAgICAgIGV2ZW50VGFyZ2V0LT51LmF0dHJp
YnV0ZV9jaGFuZ2VkLmRpc3BsYXlfbWFzazsKKyAgICAgICAgcmVUYXJnZXRCaW5hcnktPmF0dHJp
YnV0ZV9jaGFuZ2VkLmF0dHJpYnV0ZSA9CisgICAgICAgICAgICBldmVudFRhcmdldC0+dS5hdHRy
aWJ1dGVfY2hhbmdlZC5hdHRyaWJ1dGU7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIEZhbHNlOworICAgIH0KKworICAgIHJldHVybiBUcnVlOworfQorCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbGliWE5WQ3RybC9O
VkN0cmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRf
cGFydHkvbGliWE5WQ3RybC9OVkN0cmwuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbGliWE5WQ3RybC9OVkN0cmwuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQzNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAgTlZJRElB
LCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUg
b2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29m
dHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIp
LCB0byBkZWFsCisgKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVk
aW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCisgKiB0byB1c2UsIGNvcHksIG1vZGlm
eSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCisg
KiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0
aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5k
IHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBo
KSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25z
IG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB
UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJ
RUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklO
RlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklH
SFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICog
TElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhF
UldJU0UsIEFSSVNJTkcgRlJPTSwKKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhF
IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCisgKiBTT0ZUV0FS
RS4KKyAqLworCisjaWZuZGVmIF9fTlZDVFJMX0gKKyNkZWZpbmUgX19OVkNUUkxfSAorCisjaW5j
bHVkZSA8c3RkaW50Lmg+CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIEF0dHJpYnV0
ZSBUYXJnZXRzCisgKgorICogVGFyZ2V0cyBkZWZpbmUgYXR0cmlidXRlIGdyb3Vwcy4gIEZvciBl
eGFtcGxlLCBzb21lIGF0dHJpYnV0ZXMgYXJlIG9ubHkKKyAqIHZhbGlkIHRvIHNldCBvbiBhIEdQ
VSwgb3RoZXJzIGFyZSBvbmx5IHZhbGlkIHdoZW4gdGFsa2luZyBhYm91dCBhbgorICogWCBTY3Jl
ZW4uICBUYXJnZXQgdHlwZXMgYXJlIHRoZW4gd2hhdCBpcyB1c2VkIHRvIGlkZW50aWZ5IHRoZSB0
YXJnZXQKKyAqIGdyb3VwIG9mIHRoZSBhdHRyaWJ1dGUgeW91IHdpc2ggdG8gc2V0L3F1ZXJ5Lgor
ICoKKyAqIEhlcmUgYXJlIHRoZSBzdXBwb3J0ZWQgdGFyZ2V0IHR5cGVzOgorICovCisKKyNkZWZp
bmUgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiAwCisjZGVmaW5lIE5WX0NUUkxfVEFSR0VU
X1RZUEVfR1BVIDEKKyNkZWZpbmUgTlZfQ1RSTF9UQVJHRVRfVFlQRV9GUkFNRUxPQ0sgMgorI2Rl
ZmluZSBOVl9DVFJMX1RBUkdFVF9UWVBFX1ZDU0MgMyAvKiBWaXN1YWwgQ29tcHV0aW5nIFN5c3Rl
bSAqLworI2RlZmluZSBOVl9DVFJMX1RBUkdFVF9UWVBFX0dWSSA0CisjZGVmaW5lIE5WX0NUUkxf
VEFSR0VUX1RZUEVfQ09PTEVSIDUgLyogZS5nLiwgZmFuICovCisjZGVmaW5lIE5WX0NUUkxfVEFS
R0VUX1RZUEVfVEhFUk1BTF9TRU5TT1IgNgorI2RlZmluZSBOVl9DVFJMX1RBUkdFVF9UWVBFXzNE
X1ZJU0lPTl9QUk9fVFJBTlNDRUlWRVIgNworI2RlZmluZSBOVl9DVFJMX1RBUkdFVF9UWVBFX0RJ
U1BMQVkgOAorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBBdHRyaWJ1dGVzCisgKgor
ICogU29tZSBhdHRyaWJ1dGVzIG1heSBvbmx5IGJlIHJlYWQ7IHNvbWUgbWF5IHJlcXVpcmUgYSBk
aXNwbGF5X21hc2sKKyAqIGFyZ3VtZW50IGFuZCBvdGhlcnMgbWF5IGJlIHZhbGlkIG9ubHkgZm9y
IHNwZWNpZmljIHRhcmdldCB0eXBlcy4KKyAqIFRoaXMgaW5mb3JtYXRpb24gaXMgZW5jb2RlZCBp
biB0aGUgInBlcm1pc3Npb24iIGNvbW1lbnQgYWZ0ZXIgZWFjaAorICogYXR0cmlidXRlICNkZWZp
bmUsIGFuZCBjYW4gYmUgcXVlcmllZCBhdCBydW4gdGltZSB3aXRoCisgKiBYTlZDVFJMUXVlcnlW
YWxpZEF0dHJpYnV0ZVZhbHVlcygpIGFuZC9vcgorICogWE5WQ1RSTFF1ZXJ5VmFsaWRUYXJnZXRB
dHRyaWJ1dGVWYWx1ZXMoKQorICoKKyAqIEtleSB0byBJbnRlZ2VyIEF0dHJpYnV0ZSAiUGVybWlz
c2lvbnMiOgorICoKKyAqIFI6IFRoZSBhdHRyaWJ1dGUgaXMgcmVhZGFibGUgKGluIGdlbmVyYWws
IGFsbCBhdHRyaWJ1dGVzIHdpbGwgYmUKKyAqICAgIHJlYWRhYmxlKQorICoKKyAqIFc6IFRoZSBh
dHRyaWJ1dGUgaXMgd3JpdGFibGUgKGF0dHJpYnV0ZXMgbWF5IG5vdCBiZSB3cml0YWJsZSBmb3IK
KyAqICAgIHZhcmlvdXMgcmVhc29uczogdGhleSByZXByZXNlbnQgc3RhdGljIHN5c3RlbSBpbmZv
cm1hdGlvbiwgdGhleQorICogICAgY2FuIG9ubHkgYmUgY2hhbmdlZCBieSBjaGFuZ2luZyBhbiBY
Rjg2Q29uZmlnIG9wdGlvbiwgZXRjKS4KKyAqCisgKiBEOiBUaGUgYXR0cmlidXRlIHJlcXVpcmVz
IHRoZSBkaXNwbGF5IG1hc2sgYXJndW1lbnQuICBUaGUKKyAqICAgIGF0dHJpYnV0ZXMgTlZfQ1RS
TF9DT05ORUNURURfRElTUExBWVMgYW5kIE5WX0NUUkxfRU5BQkxFRF9ESVNQTEFZUworICogICAg
d2lsbCBiZSBhIGJpdG1hc2sgb2Ygd2hhdCBkaXNwbGF5IGRldmljZXMgYXJlIGNvbm5lY3RlZCBh
bmQgd2hhdAorICogICAgZGlzcGxheSBkZXZpY2VzIGFyZSBlbmFibGVkIGZvciB1c2UgaW4gWCwg
cmVzcGVjdGl2ZWx5LiAgRWFjaCBiaXQKKyAqICAgIGluIHRoZSBiaXRtYXNrIHJlcHJlc2VudHMg
YSBkaXNwbGF5IGRldmljZTsgaXQgaXMgdGhlc2UgYml0cyB3aGljaAorICogICAgc2hvdWxkIGJl
IHVzZWQgYXMgdGhlIGRpc3BsYXlfbWFzayB3aGVuIGRlYWxpbmcgd2l0aCBhdHRyaWJ1dGVzCisg
KiAgICBkZXNpZ25hdGVkIHdpdGggIkQiIGJlbG93LiAgRm9yIGF0dHJpYnV0ZXMgdGhhdCBkbyBu
b3QgcmVxdWlyZSB0aGUKKyAqICAgIGRpc3BsYXkgbWFzaywgdGhlIGFyZ3VtZW50IGlzIGlnbm9y
ZWQuCisgKgorICogICAgQWx0ZXJuYXRpdmVseSwgTlYtQ09OVFJPTCB2ZXJzaW9ucyAxLjI3IGFu
ZCBncmVhdGVyIGFsbG93IHRoZXNlCisgKiAgICBhdHRyaWJ1dGVzIHRvIGJlIGFjY2Vzc2VkIHZp
YSBkaXNwbGF5IHRhcmdldCB0eXBlcywgaW4gd2hpY2ggY2FzZQorICogICAgdGhlIGRpc3BsYXlf
bWFzayBpcyBpZ25vcmVkLgorICoKKyAqIEc6IFRoZSBhdHRyaWJ1dGUgbWF5IGJlIHF1ZXJpZWQg
dXNpbmcgYW4gTlZfQ1RSTF9UQVJHRVRfVFlQRV9HUFUKKyAqICAgIHRhcmdldCB0eXBlIHZpYSBY
TlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUoKS4KKyAqCisgKiBGOiBUaGUgYXR0cmlidXRlIG1h
eSBiZSBxdWVyaWVkIHVzaW5nIGFuIE5WX0NUUkxfVEFSR0VUX1RZUEVfRlJBTUVMT0NLCisgKiAg
ICB0YXJnZXQgdHlwZSB2aWEgWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkuCisgKgorICog
WDogV2hlbiBYaW5lcmFtYSBpcyBlbmFibGVkLCB0aGlzIGF0dHJpYnV0ZSBpcyBrZXB0IGNvbnNp
c3RlbnQgYWNyb3NzCisgKiAgICBhbGwgUGh5c2ljYWwgWCBTY3JlZW5zOyAgYXNzaWdubWVudCBv
ZiB0aGlzIGF0dHJpYnV0ZSB3aWxsIGJlCisgKiAgICBicm9hZGNhc3QgYnkgdGhlIE5WSURJQSBY
IERyaXZlciB0byBhbGwgWCBTY3JlZW5zLgorICoKKyAqIFY6IFRoZSBhdHRyaWJ1dGUgbWF5IGJl
IHF1ZXJpZWQgdXNpbmcgYW4gTlZfQ1RSTF9UQVJHRVRfVFlQRV9WQ1NDCisgKiAgICB0YXJnZXQg
dHlwZSB2aWEgWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkuCisgKgorICogSTogVGhlIGF0
dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB1c2luZyBhbiBOVl9DVFJMX1RBUkdFVF9UWVBFX0dWSSB0
YXJnZXQgdHlwZQorICogICAgdmlhIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpLgorICoK
KyAqIFE6IFRoZSBhdHRyaWJ1dGUgaXMgYSA2NC1iaXQgaW50ZWdlciBhdHRyaWJ1dGU7ICB1c2Ug
dGhlIDY0LWJpdCB2ZXJzaW9ucworICogICAgb2YgdGhlIGFwcHJvcHJpYXRlIHF1ZXJ5IGludGVy
ZmFjZXMuCisgKgorICogQzogVGhlIGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB1c2luZyBhbiBO
Vl9DVFJMX1RBUkdFVF9UWVBFX0NPT0xFUiB0YXJnZXQKKyAqICAgIHR5cGUgdmlhIFhOVkNUUkxR
dWVyeVRhcmdldEF0dHJpYnV0ZSgpLgorICoKKyAqIFM6IFRoZSBhdHRyaWJ1dGUgbWF5IGJlIHF1
ZXJpZWQgdXNpbmcgYW4gTlZfQ1RSTF9UQVJHRVRfVFlQRV9USEVSTUFMX1NFTlNPUgorICogICAg
dGFyZ2V0IHR5cGUgdmlhIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpLgorICoKKyAqIFQ6
IFRoZSBhdHRyaWJ1dGUgbWF5IGJlIHF1ZXJpZWQgdXNpbmcgYW4KKyAqICAgIE5WX0NUUkxfVEFS
R0VUX1RZUEVfM0RfVklTSU9OX1BST19UUkFOU0NFSVZFUiB0YXJnZXQgdHlwZQorICogICAgdmlh
IFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpLgorICoKKyAqIE5PVEU6IFVubGVzcyBtZW50
aW9uZWQgb3RoZXJ3aXNlLCBhbGwgYXR0cmlidXRlcyBtYXkgYmUgcXVlcmllZCB1c2luZworICog
ICAgICAgYW4gTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiB0YXJnZXQgdHlwZSB2aWEKKyAq
ICAgICAgIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpLgorICovCisKKy8qKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKi8KKworLyoKKyAqIEludGVnZXIgYXR0cmlidXRlczoKKyAqCisgKiBJbnRlZ2VyIGF0
dHJpYnV0ZXMgY2FuIGJlIHF1ZXJpZWQgdGhyb3VnaCB0aGUgWE5WQ1RSTFF1ZXJ5QXR0cmlidXRl
KCkgYW5kCisgKiBYTlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUoKSBmdW5jdGlvbiBjYWxscy4K
KyAqCisgKiBJbnRlZ2VyIGF0dHJpYnV0ZXMgY2FuIGJlIHNldCB0aHJvdWdoIHRoZSBYTlZDVFJM
U2V0QXR0cmlidXRlKCkgYW5kCisgKiBYTlZDVFJMU2V0VGFyZ2V0QXR0cmlidXRlKCkgZnVuY3Rp
b24gY2FsbHMuCisgKgorICogVW5sZXNzIG90aGVyd2lzZSBub3RlZCwgYWxsIGludGVnZXIgYXR0
cmlidXRlcyBjYW4gYmUgcXVlcmllZC9zZXQKKyAqIHVzaW5nIGFuIE5WX0NUUkxfVEFSR0VUX1RZ
UEVfWF9TQ1JFRU4gdGFyZ2V0LiAgQXR0cmlidXRlcyB0aGF0IGNhbm5vdAorICogdGFrZSBhbiBO
Vl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOIGFsc28gY2Fubm90IGJlIHF1ZXJpZWQvc2V0IHRo
cm91Z2gKKyAqIFhOVkNUUkxRdWVyeUF0dHJpYnV0ZSgpL1hOVkNUUkxTZXRBdHRyaWJ1dGUoKSAo
U2luY2UgdGhlc2UgYXNzdW1lCisgKiBhbiBYIFNjcmVlbiB0YXJnZXQpLgorICovCisKKy8qCisg
KiBOVl9DVFJMX0ZMQVRQQU5FTF9TQ0FMSU5HIC0gbm90IHN1cHBvcnRlZAorICovCisKKyNkZWZp
bmUgTlZfQ1RSTF9GTEFUUEFORUxfU0NBTElORyAyIC8qIFJXREcgKi8KKyNkZWZpbmUgTlZfQ1RS
TF9GTEFUUEFORUxfU0NBTElOR19ERUZBVUxUIDAKKyNkZWZpbmUgTlZfQ1RSTF9GTEFUUEFORUxf
U0NBTElOR19OQVRJVkUgMQorI2RlZmluZSBOVl9DVFJMX0ZMQVRQQU5FTF9TQ0FMSU5HX1NDQUxF
RCAyCisjZGVmaW5lIE5WX0NUUkxfRkxBVFBBTkVMX1NDQUxJTkdfQ0VOVEVSRUQgMworI2RlZmlu
ZSBOVl9DVFJMX0ZMQVRQQU5FTF9TQ0FMSU5HX0FTUEVDVF9TQ0FMRUQgNAorCisvKgorICogTlZf
Q1RSTF9GTEFUUEFORUxfRElUSEVSSU5HIGlzIGRlcHJlY2F0ZWQ7IE5WX0NUUkxfRElUSEVSSU5H
IHNob3VsZAorICogYmUgdXNlZCBpbnN0ZWFkLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9GTEFU
UEFORUxfRElUSEVSSU5HIDMgLyogUldERyAqLworI2RlZmluZSBOVl9DVFJMX0ZMQVRQQU5FTF9E
SVRIRVJJTkdfREVGQVVMVCAwCisjZGVmaW5lIE5WX0NUUkxfRkxBVFBBTkVMX0RJVEhFUklOR19F
TkFCTEVEIDEKKyNkZWZpbmUgTlZfQ1RSTF9GTEFUUEFORUxfRElUSEVSSU5HX0RJU0FCTEVEIDIK
KworLyoKKyAqIE5WX0NUUkxfRElUSEVSSU5HIC0gdGhlIHJlcXVlc3RlZCBkaXRoZXJpbmcgY29u
ZmlndXJhdGlvbjsKKyAqIHBvc3NpYmxlIHZhbHVlcyBhcmU6CisgKgorICogMDogYXV0byAgICAg
KHRoZSBkcml2ZXIgd2lsbCBkZWNpZGUgd2hlbiB0byBkaXRoZXIpCisgKiAxOiBlbmFibGVkICAo
dGhlIGRyaXZlciB3aWxsIGFsd2F5cyBkaXRoZXIgd2hlbiBwb3NzaWJsZSkKKyAqIDI6IGRpc2Fi
bGVkICh0aGUgZHJpdmVyIHdpbGwgbmV2ZXIgZGl0aGVyKQorICovCisKKyNkZWZpbmUgTlZfQ1RS
TF9ESVRIRVJJTkcgMyAvKiBSV0RHICovCisjZGVmaW5lIE5WX0NUUkxfRElUSEVSSU5HX0FVVE8g
MAorI2RlZmluZSBOVl9DVFJMX0RJVEhFUklOR19FTkFCTEVEIDEKKyNkZWZpbmUgTlZfQ1RSTF9E
SVRIRVJJTkdfRElTQUJMRUQgMgorCisvKgorICogTlZfQ1RSTF9ESUdJVEFMX1ZJQlJBTkNFIC0g
c2V0cyB0aGUgZGlnaXRhbCB2aWJyYW5jZSBsZXZlbCBmb3IgdGhlCisgKiBzcGVjaWZpZWQgZGlz
cGxheSBkZXZpY2UuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0RJR0lUQUxfVklCUkFOQ0UgNCAv
KiBSV0RHICovCisKKy8qCisgKiBOVl9DVFJMX0JVU19UWVBFIC0gcmV0dXJucyB0aGUgYnVzIHR5
cGUgdGhyb3VnaCB3aGljaCB0aGUgc3BlY2lmaWVkIGRldmljZQorICogaXMgY29ubmVjdGVkIHRv
IHRoZSBjb21wdXRlci4KKyAqIFdoZW4gdGhpcyBhdHRyaWJ1dGUgaXMgcXVlcmllZCBvbiBhbiBY
IHNjcmVlbiB0YXJnZXQsIHRoZSBidXMgdHlwZSBvZiB0aGUKKyAqIEdQVSBkcml2aW5nIHRoZSBY
IHNjcmVlbiBpcyByZXR1cm5lZC4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfQlVTX1RZUEUgNSAv
KiBSLS1HSSAqLworI2RlZmluZSBOVl9DVFJMX0JVU19UWVBFX0FHUCAwCisjZGVmaW5lIE5WX0NU
UkxfQlVTX1RZUEVfUENJIDEKKyNkZWZpbmUgTlZfQ1RSTF9CVVNfVFlQRV9QQ0lfRVhQUkVTUyAy
CisjZGVmaW5lIE5WX0NUUkxfQlVTX1RZUEVfSU5URUdSQVRFRCAzCisKKy8qCisgKiBOVl9DVFJM
X1ZJREVPX1JBTSAtIHJldHVybnMgdGhlIHRvdGFsIGFtb3VudCBvZiBtZW1vcnkgYXZhaWxhYmxl
CisgKiB0byB0aGUgc3BlY2lmaWVkIEdQVSAob3IgdGhlIEdQVSBkcml2aW5nIHRoZSBzcGVjaWZp
ZWQgWAorICogc2NyZWVuKS4gIE5vdGU6IGlmIHRoZSBHUFUgc3VwcG9ydHMgVHVyYm9DYWNoZShU
TSksIHRoZSB2YWx1ZQorICogcmVwb3J0ZWQgbWF5IGV4Y2VlZCB0aGUgYW1vdW50IG9mIHZpZGVv
IG1lbW9yeSBpbnN0YWxsZWQgb24gdGhlCisgKiBHUFUuICBUaGUgdmFsdWUgcmVwb3J0ZWQgZm9y
IGludGVncmF0ZWQgR1BVcyBtYXkgbGlrZXdpc2UgZXhjZWVkCisgKiB0aGUgYW1vdW50IG9mIGRl
ZGljYXRlZCBzeXN0ZW0gbWVtb3J5IHNldCBhc2lkZSBieSB0aGUgc3lzdGVtCisgKiBCSU9TIGZv
ciB1c2UgYnkgdGhlIGludGVncmF0ZWQgR1BVLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9WSURF
T19SQU0gNiAvKiBSLS1HICovCisKKy8qCisgKiBOVl9DVFJMX0lSUSAtIHJldHVybnMgdGhlIGlu
dGVycnVwdCByZXF1ZXN0IGxpbmUgdXNlZCBieSB0aGUgc3BlY2lmaWVkCisgKiBkZXZpY2UuCisg
KiBXaGVuIHRoaXMgYXR0cmlidXRlIGlzIHF1ZXJpZWQgb24gYW4gWCBzY3JlZW4gdGFyZ2V0LCB0
aGUgSVJRIG9mIHRoZSBHUFUKKyAqIGRyaXZpbmcgdGhlIFggc2NyZWVuIGlzIHJldHVybmVkLgor
ICovCisKKyNkZWZpbmUgTlZfQ1RSTF9JUlEgNyAvKiBSLS1HSSAqLworCisvKgorICogTlZfQ1RS
TF9PUEVSQVRJTkdfU1lTVEVNIC0gcmV0dXJucyB0aGUgb3BlcmF0aW5nIHN5c3RlbSBvbiB3aGlj
aAorICogdGhlIFggc2VydmVyIGlzIHJ1bm5pbmcuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX09Q
RVJBVElOR19TWVNURU0gOCAvKiBSLS1HICovCisjZGVmaW5lIE5WX0NUUkxfT1BFUkFUSU5HX1NZ
U1RFTV9MSU5VWCAwCisjZGVmaW5lIE5WX0NUUkxfT1BFUkFUSU5HX1NZU1RFTV9GUkVFQlNEIDEK
KyNkZWZpbmUgTlZfQ1RSTF9PUEVSQVRJTkdfU1lTVEVNX1NVTk9TIDIKKworLyoKKyAqIE5WX0NU
UkxfU1lOQ19UT19WQkxBTksgLSBlbmFibGVzIHN5bmMgdG8gdmJsYW5rIGZvciBPcGVuR0wgY2xp
ZW50cy4KKyAqIFRoaXMgc2V0dGluZyBpcyBvbmx5IGFwcGxpZWQgdG8gT3BlbkdMIGNsaWVudHMg
dGhhdCBhcmUgc3RhcnRlZAorICogYWZ0ZXIgdGhpcyBzZXR0aW5nIGlzIGFwcGxpZWQuCisgKi8K
KworI2RlZmluZSBOVl9DVFJMX1NZTkNfVE9fVkJMQU5LIDkgLyogUlctWCAqLworI2RlZmluZSBO
Vl9DVFJMX1NZTkNfVE9fVkJMQU5LX09GRiAwCisjZGVmaW5lIE5WX0NUUkxfU1lOQ19UT19WQkxB
TktfT04gMQorCisvKgorICogTlZfQ1RSTF9MT0dfQU5JU08gLSBlbmFibGVzIGFuaXNvdHJvcGlj
IGZpbHRlcmluZyBmb3IgT3BlbkdMCisgKiBjbGllbnRzOyBvbiBzb21lIE5WSURJQSBoYXJkd2Fy
ZSwgdGhpcyBjYW4gb25seSBiZSBlbmFibGVkIG9yCisgKiBkaXNhYmxlZDsgb24gb3RoZXIgaGFy
ZHdhcmUgZGlmZmVyZW50IGxldmVscyBvZiBhbmlzb3Ryb3BpYworICogZmlsdGVyaW5nIGNhbiBi
ZSBzcGVjaWZpZWQuICBUaGlzIHNldHRpbmcgaXMgb25seSBhcHBsaWVkIHRvIE9wZW5HTAorICog
Y2xpZW50cyB0aGF0IGFyZSBzdGFydGVkIGFmdGVyIHRoaXMgc2V0dGluZyBpcyBhcHBsaWVkLgor
ICovCisKKyNkZWZpbmUgTlZfQ1RSTF9MT0dfQU5JU08gMTAgLyogUlctWCAqLworCisvKgorICog
TlZfQ1RSTF9GU0FBX01PREUgLSB0aGUgRlNBQSBzZXR0aW5nIGZvciBPcGVuR0wgY2xpZW50czsg
cG9zc2libGUKKyAqIEZTQUEgbW9kZXM6CisgKgorICogTlZfQ1RSTF9GU0FBX01PREVfMnggICAg
ICIyeCBCaWxpbmVhciBNdWx0aXNhbXBsaW5nIgorICogTlZfQ1RSTF9GU0FBX01PREVfMnhfNXQg
ICIyeCBRdWluY3VueCBNdWx0aXNhbXBsaW5nIgorICogTlZfQ1RSTF9GU0FBX01PREVfMTV4MTUg
ICIxLjUgeCAxLjUgU3VwZXJzYW1wbGluZyIKKyAqIE5WX0NUUkxfRlNBQV9NT0RFXzJ4MiAgICAi
MiB4IDIgU3VwZXJzYW1wbGluZyIKKyAqIE5WX0NUUkxfRlNBQV9NT0RFXzR4ICAgICAiNHggQmls
aW5lYXIgTXVsdGlzYW1wbGluZyIKKyAqIE5WX0NUUkxfRlNBQV9NT0RFXzR4Xzl0ICAiNHggR2F1
c3NpYW4gTXVsdGlzYW1wbGluZyIKKyAqIE5WX0NUUkxfRlNBQV9NT0RFXzh4ICAgICAiMnggQmls
aW5lYXIgTXVsdGlzYW1wbGluZyBieSA0eCBTdXBlcnNhbXBsaW5nIgorICogTlZfQ1RSTF9GU0FB
X01PREVfMTZ4ICAgICI0eCBCaWxpbmVhciBNdWx0aXNhbXBsaW5nIGJ5IDR4IFN1cGVyc2FtcGxp
bmciCisgKiBOVl9DVFJMX0ZTQUFfTU9ERV84eFMgICAgIjR4IE11bHRpc2FtcGxpbmcgYnkgMngg
U3VwZXJzYW1wbGluZyIKKyAqCisgKiBUaGlzIHNldHRpbmcgaXMgb25seSBhcHBsaWVkIHRvIE9w
ZW5HTCBjbGllbnRzIHRoYXQgYXJlIHN0YXJ0ZWQKKyAqIGFmdGVyIHRoaXMgc2V0dGluZyBpcyBh
cHBsaWVkLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9GU0FBX01PREUgMTEgLyogUlctWCAqLwor
I2RlZmluZSBOVl9DVFJMX0ZTQUFfTU9ERV9OT05FIDAKKyNkZWZpbmUgTlZfQ1RSTF9GU0FBX01P
REVfMnggMQorI2RlZmluZSBOVl9DVFJMX0ZTQUFfTU9ERV8yeF81dCAyCisjZGVmaW5lIE5WX0NU
UkxfRlNBQV9NT0RFXzE1eDE1IDMKKyNkZWZpbmUgTlZfQ1RSTF9GU0FBX01PREVfMngyIDQKKyNk
ZWZpbmUgTlZfQ1RSTF9GU0FBX01PREVfNHggNQorI2RlZmluZSBOVl9DVFJMX0ZTQUFfTU9ERV80
eF85dCA2CisjZGVmaW5lIE5WX0NUUkxfRlNBQV9NT0RFXzh4IDcKKyNkZWZpbmUgTlZfQ1RSTF9G
U0FBX01PREVfMTZ4IDgKKyNkZWZpbmUgTlZfQ1RSTF9GU0FBX01PREVfOHhTIDkKKyNkZWZpbmUg
TlZfQ1RSTF9GU0FBX01PREVfOHhRIDEwCisjZGVmaW5lIE5WX0NUUkxfRlNBQV9NT0RFXzE2eFMg
MTEKKyNkZWZpbmUgTlZfQ1RSTF9GU0FBX01PREVfMTZ4USAxMgorI2RlZmluZSBOVl9DVFJMX0ZT
QUFfTU9ERV8zMnhTIDEzCisjZGVmaW5lIE5WX0NUUkxfRlNBQV9NT0RFXzMyeCAxNAorI2RlZmlu
ZSBOVl9DVFJMX0ZTQUFfTU9ERV82NHhTIDE1CisjZGVmaW5lIE5WX0NUUkxfRlNBQV9NT0RFX01B
WCBOVl9DVFJMX0ZTQUFfTU9ERV82NHhTCisKKy8qCisgKiBOVl9DVFJMX1RFWFRVUkVfU0hBUlBF
TiAtIGVuYWJsZXMgdGV4dHVyZSBzaGFycGVuaW5nIGZvciBPcGVuR0wKKyAqIGNsaWVudHMuICBU
aGlzIHNldHRpbmcgaXMgb25seSBhcHBsaWVkIHRvIE9wZW5HTCBjbGllbnRzIHRoYXQgYXJlCisg
KiBzdGFydGVkIGFmdGVyIHRoaXMgc2V0dGluZyBpcyBhcHBsaWVkLgorICovCisKKyNkZWZpbmUg
TlZfQ1RSTF9URVhUVVJFX1NIQVJQRU4gMTIgLyogUlctWCAqLworI2RlZmluZSBOVl9DVFJMX1RF
WFRVUkVfU0hBUlBFTl9PRkYgMAorI2RlZmluZSBOVl9DVFJMX1RFWFRVUkVfU0hBUlBFTl9PTiAx
CisKKy8qCisgKiBOVl9DVFJMX1VCQiAtIHJldHVybnMgd2hldGhlciBVQkIgaXMgZW5hYmxlZCBm
b3IgdGhlIHNwZWNpZmllZCBYCisgKiBzY3JlZW4uCisgKi8KKworI2RlZmluZSBOVl9DVFJMX1VC
QiAxMyAvKiBSLS0gKi8KKyNkZWZpbmUgTlZfQ1RSTF9VQkJfT0ZGIDAKKyNkZWZpbmUgTlZfQ1RS
TF9VQkJfT04gMQorCisvKgorICogTlZfQ1RSTF9PVkVSTEFZIC0gcmV0dXJucyB3aGV0aGVyIHRo
ZSBSR0Igb3ZlcmxheSBpcyBlbmFibGVkIGZvcgorICogdGhlIHNwZWNpZmllZCBYIHNjcmVlbi4K
KyAqLworCisjZGVmaW5lIE5WX0NUUkxfT1ZFUkxBWSAxNCAvKiBSLS0gKi8KKyNkZWZpbmUgTlZf
Q1RSTF9PVkVSTEFZX09GRiAwCisjZGVmaW5lIE5WX0NUUkxfT1ZFUkxBWV9PTiAxCisKKy8qCisg
KiBOVl9DVFJMX1NURVJFTyAtIHJldHVybnMgd2hldGhlciBzdGVyZW8gKGFuZCB3aGF0IHR5cGUp
IGlzIGVuYWJsZWQKKyAqIGZvciB0aGUgc3BlY2lmaWVkIFggc2NyZWVuLgorICovCisKKyNkZWZp
bmUgTlZfQ1RSTF9TVEVSRU8gMTYgLyogUi0tICovCisjZGVmaW5lIE5WX0NUUkxfU1RFUkVPX09G
RiAwCisjZGVmaW5lIE5WX0NUUkxfU1RFUkVPX0REQyAxCisjZGVmaW5lIE5WX0NUUkxfU1RFUkVP
X0JMVUVMSU5FIDIKKyNkZWZpbmUgTlZfQ1RSTF9TVEVSRU9fRElOIDMKKyNkZWZpbmUgTlZfQ1RS
TF9TVEVSRU9fUEFTU0lWRV9FWUVfUEVSX0RQWSA0CisjZGVmaW5lIE5WX0NUUkxfU1RFUkVPX1ZF
UlRJQ0FMX0lOVEVSTEFDRUQgNQorI2RlZmluZSBOVl9DVFJMX1NURVJFT19DT0xPUl9JTlRFUkxB
Q0VEIDYKKyNkZWZpbmUgTlZfQ1RSTF9TVEVSRU9fSE9SSVpPTlRBTF9JTlRFUkxBQ0VEIDcKKyNk
ZWZpbmUgTlZfQ1RSTF9TVEVSRU9fQ0hFQ0tFUkJPQVJEX1BBVFRFUk4gOAorI2RlZmluZSBOVl9D
VFJMX1NURVJFT19JTlZFUlNFX0NIRUNLRVJCT0FSRF9QQVRURVJOIDkKKyNkZWZpbmUgTlZfQ1RS
TF9TVEVSRU9fM0RfVklTSU9OIDEwCisjZGVmaW5lIE5WX0NUUkxfU1RFUkVPXzNEX1ZJU0lPTl9Q
Uk8gMTEKKworLyoKKyAqIE5WX0NUUkxfRU1VTEFURSAtIGNvbnRyb2xzIE9wZW5HTCBzb2Z0d2Fy
ZSBlbXVsYXRpb24gb2YgZnV0dXJlCisgKiBOVklESUEgR1BVcy4KKyAqLworCisjZGVmaW5lIE5W
X0NUUkxfRU1VTEFURSAxNyAvKiBSVy0gKi8KKyNkZWZpbmUgTlZfQ1RSTF9FTVVMQVRFX05PTkUg
MAorCisvKgorICogTlZfQ1RSTF9UV0lOVklFVyAtIHJldHVybnMgd2hldGhlciBUd2luVmlldyBp
cyBlbmFibGVkIGZvciB0aGUKKyAqIHNwZWNpZmllZCBYIHNjcmVlbi4KKyAqLworCisjZGVmaW5l
IE5WX0NUUkxfVFdJTlZJRVcgMTggLyogUi0tICovCisjZGVmaW5lIE5WX0NUUkxfVFdJTlZJRVdf
Tk9UX0VOQUJMRUQgMAorI2RlZmluZSBOVl9DVFJMX1RXSU5WSUVXX0VOQUJMRUQgMQorCisvKgor
ICogTlZfQ1RSTF9DT05ORUNURURfRElTUExBWVMgLSByZXR1cm5zIGEgZGlzcGxheSBtYXNrIGlu
ZGljYXRpbmcgdGhlIGxhc3QKKyAqIGNhY2hlZCBzdGF0ZSBvZiB0aGUgZGlzcGxheSBkZXZpY2Vz
IGNvbm5lY3RlZCB0byB0aGUgR1BVIG9yIEdQVSBkcml2aW5nCisgKiB0aGUgc3BlY2lmaWVkIFgg
c2NyZWVuLgorICoKKyAqIFRoaXMgYXR0cmlidXRlIG1heSBiZSBxdWVyaWVkIHRocm91Z2ggWE5W
Q1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkKKyAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQ
RV9HUFUgb3IgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiB0YXJnZXQuCisgKi8KKworI2Rl
ZmluZSBOVl9DVFJMX0NPTk5FQ1RFRF9ESVNQTEFZUyAxOSAvKiBSLS1HICovCisKKy8qCisgKiBO
Vl9DVFJMX0VOQUJMRURfRElTUExBWVMgLSByZXR1cm5zIGEgZGlzcGxheSBtYXNrIGluZGljYXRp
bmcgd2hhdAorICogZGlzcGxheSBkZXZpY2VzIGFyZSBlbmFibGVkIGZvciB1c2Ugb24gdGhlIHNw
ZWNpZmllZCBYIHNjcmVlbiBvcgorICogR1BVLgorICoKKyAqIFRoaXMgYXR0cmlidXRlIG1heSBi
ZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkKKyAqIHVzaW5n
IGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9HUFUgb3IgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVF
TiB0YXJnZXQuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0VOQUJMRURfRElTUExBWVMgMjAgLyog
Ui0tRyAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogSW50ZWdlciBhdHRyaWJ1dGVz
IHNwZWNpZmljIHRvIGNvbmZpZ3VyaW5nIEZyYW1lIExvY2sgb24gYm9hcmRzIHRoYXQKKyAqIHN1
cHBvcnQgaXQuCisgKi8KKworLyoKKyAqIE5WX0NUUkxfRlJBTUVMT0NLIC0gcmV0dXJucyB3aGV0
aGVyIHRoZSB1bmRlcmx5aW5nIEdQVSBzdXBwb3J0cworICogRnJhbWUgTG9jay4gIEFsbCBvZiB0
aGUgb3RoZXIgZnJhbWUgbG9jayBhdHRyaWJ1dGVzIGFyZSBvbmx5CisgKiBhcHBsaWNhYmxlIGlm
IE5WX0NUUkxfRlJBTUVMT0NLIGlzIF9TVVBQT1JURUQuCisgKgorICogVGhpcyBhdHRyaWJ1dGUg
bWF5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUoKQorICog
dXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0dQVSBvciBOVl9DVFJMX1RBUkdFVF9UWVBFX1hf
U0NSRUVOIHRhcmdldC4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLIDIxIC8qIFIt
LUcgKi8KKyNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfTk9UX1NVUFBPUlRFRCAwCisjZGVmaW5l
IE5WX0NUUkxfRlJBTUVMT0NLX1NVUFBPUlRFRCAxCisKKy8qCisgKiBOVl9DVFJMX0ZSQU1FTE9D
S19NQVNURVIgLSBnZXQvc2V0IHdoaWNoIGRpc3BsYXkgZGV2aWNlIHRvIHVzZQorICogYXMgdGhl
IGZyYW1lIGxvY2sgbWFzdGVyIGZvciB0aGUgZW50aXJlIHN5bmMgZ3JvdXAuICBOb3RlIHRoYXQg
b25seQorICogb25lIG5vZGUgaW4gdGhlIHN5bmMgZ3JvdXAgc2hvdWxkIGJlIGNvbmZpZ3VyZWQg
YXMgdGhlIG1hc3Rlci4KKyAqCisgKiBUaGlzIGF0dHJpYnV0ZSBjYW4gb25seSBiZSBxdWVyaWVk
IHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkKKyAqIHVzaW5nIGEgTlZfQ1RS
TF9UQVJHRVRfVFlQRV9HUFUgdGFyZ2V0LiAgVGhpcyBhdHRyaWJ1dGUgY2Fubm90IGJlCisgKiBx
dWVyaWVkIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTi4KKyAqLworCisjZGVm
aW5lIE5WX0NUUkxfRlJBTUVMT0NLX01BU1RFUiAyMiAvKiBSVy1HICovCisKKy8qIFRoZXNlIGFy
ZSBkZXByZWNhdGVkLiAgTlZfQ1RSTF9GUkFNRUxPQ0tfTUFTVEVSIG5vdyB0YWtlcyBhbmQKKyAg
IHJldHVybnMgYSBkaXNwbGF5IG1hc2sgYXMgdmFsdWUuICovCisjZGVmaW5lIE5WX0NUUkxfRlJB
TUVMT0NLX01BU1RFUl9GQUxTRSAwCisjZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX01BU1RFUl9U
UlVFIDEKKworLyoKKyAqIE5WX0NUUkxfRlJBTUVMT0NLX1BPTEFSSVRZIC0gc3luYyBlaXRoZXIg
dG8gdGhlIHJpc2luZyBlZGdlIG9mIHRoZQorICogZnJhbWUgbG9jayBwdWxzZSwgdGhlIGZhbGxp
bmcgZWRnZSBvZiB0aGUgZnJhbWUgbG9jayBwdWxzZSBvciBib3RoLgorICoKKyAqIFRoaXMgYXR0
cmlidXRlIG1heSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRl
KCkKKyAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9GUkFNRUxPQ0sgb3IgTlZfQ1RSTF9U
QVJHRVRfVFlQRV9YX1NDUkVFTgorICogdGFyZ2V0LgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9G
UkFNRUxPQ0tfUE9MQVJJVFkgMjMgLyogUlctRiAqLworI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9D
S19QT0xBUklUWV9SSVNJTkdfRURHRSAweDEKKyNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfUE9M
QVJJVFlfRkFMTElOR19FREdFIDB4MgorI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19QT0xBUklU
WV9CT1RIX0VER0VTIDB4MworCisvKgorICogTlZfQ1RSTF9GUkFNRUxPQ0tfU1lOQ19ERUxBWSAt
IGRlbGF5IGJldHdlZW4gdGhlIGZyYW1lIGxvY2sgcHVsc2UKKyAqIGFuZCB0aGUgR1BVIHN5bmMu
ICBUaGlzIHZhbHVlIG11c3QgYmUgbXVsdGlwbGllZCBieQorICogTlZfQ1RSTF9GUkFNRUxPQ0tf
U1lOQ19ERUxBWV9SRVNPTFVUSU9OIHRvIGRldGVybWluZSB0aGUgc3luYyBkZWxheSBpbgorICog
bmFub3NlY29uZHMuCisgKgorICogVGhpcyBhdHRyaWJ1dGUgbWF5IGJlIHF1ZXJpZWQgdGhyb3Vn
aCBYTlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUoKQorICogdXNpbmcgYSBOVl9DVFJMX1RBUkdF
VF9UWVBFX0ZSQU1FTE9DSyBvciBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOCisgKiB0YXJn
ZXQuCisgKgorICogVVNBR0UgTk9ERTogTlZfQ1RSTF9GUkFNRUxPQ0tfU1lOQ19ERUxBWV9NQVgg
YW5kCisgKiAgICAgICAgICAgICBOVl9DVFJMX0ZSQU1FTE9DS19TWU5DX0RFTEFZX0ZBQ1RPUiBh
cmUgZGVwcmVjYXRlZC4KKyAqICAgICAgICAgICAgIFRoZSBTeW5jIERlbGF5IF9NQVggYW5kIF9G
QUNUT1IgYXJlIGRpZmZlcmVudCBmb3IgZGlmZmVyZW50CisgKiAgICAgICAgICAgICBHU3luYyBw
cm9kdWN0cyBhbmQgc28sIHRvIGJlIGNvcnJlY3QsIHRoZSB2YWxpZCB2YWx1ZXMgZm9yCisgKiAg
ICAgICAgICAgICBOVl9DVFJMX0ZSQU1FTE9DS19TWU5DX0RFTEFZIG11c3QgYmUgcXVlcmllZCB0
byBnZXQgdGhlIHJhbmdlCisgKiAgICAgICAgICAgICBvZiBhY2NlcHRhYmxlIHN5bmMgZGVsYXkg
dmFsdWVzLCBhbmQKKyAqICAgICAgICAgICAgIE5WX0NUUkxfRlJBTUVMT0NLX1NZTkNfREVMQVlf
UkVTT0xVVElPTiBtdXN0IGJlIHF1ZXJpZWQgdG8KKyAqICAgICAgICAgICAgIG9idGFpbiB0aGUg
Y29ycmVjdCBmYWN0b3IuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19TWU5DX0RF
TEFZIDI0ICAgICAgICAgICAvKiBSVy1GICovCisjZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX1NZ
TkNfREVMQVlfTUFYIDIwNDcgICAgIC8vIGRlcHJlY2F0ZWQKKyNkZWZpbmUgTlZfQ1RSTF9GUkFN
RUxPQ0tfU1lOQ19ERUxBWV9GQUNUT1IgNy44MSAgLy8gZGVwcmVjYXRlZAorCisvKgorICogTlZf
Q1RSTF9GUkFNRUxPQ0tfU1lOQ19JTlRFUlZBTCAtIGhvdyBtYW55IGhvdXNlIHN5bmMgcHVsc2Vz
CisgKiBiZXR3ZWVuIHRoZSBmcmFtZSBsb2NrIHN5bmMgZ2VuZXJhdGlvbiAoMCA9PSBzeW5jIGV2
ZXJ5IGhvdXNlIHN5bmMpOworICogdGhpcyBvbmx5IGFwcGxpZXMgdG8gdGhlIG1hc3RlciB3aGVu
IHJlY2VpdmluZyBob3VzZSBzeW5jLgorICoKKyAqIFRoaXMgYXR0cmlidXRlIG1heSBiZSBxdWVy
aWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkKKyAqIHVzaW5nIGEgTlZf
Q1RSTF9UQVJHRVRfVFlQRV9GUkFNRUxPQ0sgb3IgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVF
TgorICogdGFyZ2V0LgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfU1lOQ19JTlRF
UlZBTCAyNSAvKiBSVy1GICovCisKKy8qCisgKiBOVl9DVFJMX0ZSQU1FTE9DS19QT1JUMF9TVEFU
VVMgLSBzdGF0dXMgb2YgdGhlIHJqNDUgcG9ydDAuCisgKgorICogVGhpcyBhdHRyaWJ1dGUgbWF5
IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUoKQorICogdXNp
bmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0ZSQU1FTE9DSyBvciBOVl9DVFJMX1RBUkdFVF9UWVBF
X1hfU0NSRUVOCisgKiB0YXJnZXQuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19Q
T1JUMF9TVEFUVVMgMjYgLyogUi0tRiAqLworI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19QT1JU
MF9TVEFUVVNfSU5QVVQgMAorI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19QT1JUMF9TVEFUVVNf
T1VUUFVUIDEKKworLyoKKyAqIE5WX0NUUkxfRlJBTUVMT0NLX1BPUlQxX1NUQVRVUyAtIHN0YXR1
cyBvZiB0aGUgcmo0NSBwb3J0MS4KKyAqCisgKiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmll
ZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpCisgKiB1c2luZyBhIE5WX0NU
UkxfVEFSR0VUX1RZUEVfRlJBTUVMT0NLIG9yIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4K
KyAqIHRhcmdldC4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX1BPUlQxX1NUQVRV
UyAyNyAvKiBSLS1GICovCisjZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX1BPUlQxX1NUQVRVU19J
TlBVVCAwCisjZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX1BPUlQxX1NUQVRVU19PVVRQVVQgMQor
CisvKgorICogTlZfQ1RSTF9GUkFNRUxPQ0tfSE9VU0VfU1RBVFVTIC0gcmV0dXJucyB3aGV0aGVy
IG9yIG5vdCB0aGUgaG91c2UKKyAqIHN5bmMgc2lnbmFsIHdhcyBkZXRlY3RlZCBvbiB0aGUgQk5D
IGNvbm5lY3RvciBvZiB0aGUgZnJhbWUgbG9jaworICogYm9hcmQuCisgKgorICogVGhpcyBhdHRy
aWJ1dGUgbWF5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUo
KQorICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0ZSQU1FTE9DSyBvciBOVl9DVFJMX1RB
UkdFVF9UWVBFX1hfU0NSRUVOCisgKiB0YXJnZXQuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0ZS
QU1FTE9DS19IT1VTRV9TVEFUVVMgMjggLyogUi0tRiAqLworI2RlZmluZSBOVl9DVFJMX0ZSQU1F
TE9DS19IT1VTRV9TVEFUVVNfTk9UX0RFVEVDVEVEIDAKKyNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxP
Q0tfSE9VU0VfU1RBVFVTX0RFVEVDVEVEIDEKKworLyoKKyAqIE5WX0NUUkxfRlJBTUVMT0NLX1NZ
TkMgLSBlbmFibGUvZGlzYWJsZSB0aGUgc3luY2luZyBvZiBkaXNwbGF5CisgKiBkZXZpY2VzIHRv
IHRoZSBmcmFtZSBsb2NrIHB1bHNlIGFzIHNwZWNpZmllZCBieSBwcmV2aW91cyBjYWxscyB0bwor
ICogTlZfQ1RSTF9GUkFNRUxPQ0tfTUFTVEVSIGFuZCBOVl9DVFJMX0ZSQU1FTE9DS19TTEFWRVMu
CisgKgorICogVGhpcyBhdHRyaWJ1dGUgY2FuIG9ubHkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNU
UkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpCisgKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVf
R1BVIHRhcmdldC4gIFRoaXMgYXR0cmlidXRlIGNhbm5vdCBiZQorICogcXVlcmllZCB1c2luZyBh
IE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4uCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0ZS
QU1FTE9DS19TWU5DIDI5IC8qIFJXLUcgKi8KKyNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfU1lO
Q19ESVNBQkxFIDAKKyNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfU1lOQ19FTkFCTEUgMQorCisv
KgorICogTlZfQ1RSTF9GUkFNRUxPQ0tfU1lOQ19SRUFEWSAtIHJlcG9ydHMgd2hldGhlciBhIGZy
YW1lIGxvY2sKKyAqIGJvYXJkIGlzIHJlY2VpdmluZyBzeW5jIChyZWdhcmRsZXNzIG9mIHdoZXRo
ZXIgb3Igbm90IGFueSBkaXNwbGF5CisgKiBkZXZpY2VzIGFyZSB1c2luZyB0aGUgc3luYykuCisg
KgorICogVGhpcyBhdHRyaWJ1dGUgbWF5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlU
YXJnZXRBdHRyaWJ1dGUoKQorICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0ZSQU1FTE9D
SyBvciBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOCisgKiB0YXJnZXQuCisgKi8KKworI2Rl
ZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19TWU5DX1JFQURZIDMwIC8qIFItLUYgKi8KKyNkZWZpbmUg
TlZfQ1RSTF9GUkFNRUxPQ0tfU1lOQ19SRUFEWV9GQUxTRSAwCisjZGVmaW5lIE5WX0NUUkxfRlJB
TUVMT0NLX1NZTkNfUkVBRFlfVFJVRSAxCisKKy8qCisgKiBOVl9DVFJMX0ZSQU1FTE9DS19TVEVS
RU9fU1lOQyAtIHRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlIEdQVSBzdGVyZW8KKyAqIHNpZ25hbCBp
cyBpbiBzeW5jIHdpdGggdGhlIGZyYW1lIGxvY2sgc3RlcmVvIHNpZ25hbC4KKyAqCisgKiBUaGlz
IGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJp
YnV0ZSgpCisgKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfR1BVIG9yIE5WX0NUUkxfVEFS
R0VUX1RZUEVfWF9TQ1JFRU4KKyAqIHRhcmdldC4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfRlJB
TUVMT0NLX1NURVJFT19TWU5DIDMxIC8qIFItLUcgKi8KKyNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxP
Q0tfU1RFUkVPX1NZTkNfRkFMU0UgMAorI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19TVEVSRU9f
U1lOQ19UUlVFIDEKKworLyoKKyAqIE5WX0NUUkxfRlJBTUVMT0NLX1RFU1RfU0lHTkFMIC0gdG8g
dGVzdCB0aGUgY29ubmVjdGlvbnMgaW4gdGhlIHN5bmMKKyAqIGdyb3VwLCB0ZWxsIHRoZSBtYXN0
ZXIgdG8gZW5hYmxlIGEgdGVzdCBzaWduYWwsIHRoZW4gcXVlcnkgcG9ydFswMV0KKyAqIHN0YXR1
cyBhbmQgc3luY19yZWFkeSBvbiBhbGwgc2xhdmVzLiAgV2hlbiBkb25lLCB0ZWxsIHRoZSBtYXN0
ZXIgdG8KKyAqIGRpc2FibGUgdGhlIHRlc3Qgc2lnbmFsLiAgVGVzdCBzaWduYWwgc2hvdWxkIG9u
bHkgYmUgbWFuaXB1bGF0ZWQKKyAqIHdoaWxlIE5WX0NUUkxfRlJBTUVMT0NLX1NZTkMgaXMgZW5h
YmxlZC4KKyAqCisgKiBUaGUgVEVTVF9TSUdOQUwgaXMgYWxzbyB1c2VkIHRvIHJlc2V0IHRoZSBV
bml2ZXJzYWwgRnJhbWUgQ291bnQgKGFzCisgKiByZXR1cm5lZCBieSB0aGUgZ2xYUXVlcnlGcmFt
ZUNvdW50TlYoKSBmdW5jdGlvbiBpbiB0aGUKKyAqIEdMWF9OVl9zd2FwX2dyb3VwIGV4dGVuc2lv
bikuICBOb3RlOiBmb3IgYmVzdCBhY2N1cmFjeSBvZiB0aGUKKyAqIFVuaXZlcnNhbCBGcmFtZSBD
b3VudCwgaXQgaXMgcmVjb21tZW5kZWQgdG8gdG9nZ2xlIHRoZSBURVNUX1NJR05BTAorICogb24g
YW5kIG9mZiBhZnRlciBlbmFibGluZyBmcmFtZSBsb2NrLgorICoKKyAqIFRoaXMgYXR0cmlidXRl
IG1heSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkKKyAq
IHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9HUFUgb3IgTlZfQ1RSTF9UQVJHRVRfVFlQRV9Y
X1NDUkVFTiB0YXJnZXQuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19URVNUX1NJ
R05BTCAzMiAvKiBSVy1HICovCisjZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX1RFU1RfU0lHTkFM
X0RJU0FCTEUgMAorI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19URVNUX1NJR05BTF9FTkFCTEUg
MQorCisvKgorICogTlZfQ1RSTF9GUkFNRUxPQ0tfRVRIRVJORVRfREVURUNURUQgLSBUaGUgZnJh
bWUgbG9jayBib2FyZHMgYXJlCisgKiBjYWJsZWQgdG9nZXRoZXIgdXNpbmcgcmVndWxhciBjYXQ1
IGNhYmxlLCBjb25uZWN0aW5nIHRvIHJqNDUgcG9ydHMKKyAqIG9uIHRoZSBiYWNrcGxhbmUgb2Yg
dGhlIGNhcmQuICBUaGVyZSBpcyBzb21lIGNvbmNlcm4gdGhhdCB1c2VycyBtYXkKKyAqIHRoaW5r
IHRoZXNlIGFyZSBldGhlcm5ldCBwb3J0cyBhbmQgY29ubmVjdCB0aGVtIHRvIGEKKyAqIHJvdXRl
ci9odWIvZXRjLiAgVGhlIGhhcmR3YXJlIGNhbiBkZXRlY3QgdGhpcyBhbmQgd2lsbCBzaHV0IG9m
ZiB0bworICogcHJldmVudCBkYW1hZ2UgKGVpdGhlciB0byBpdHNlbGYgb3IgdG8gdGhlIHJvdXRl
cikuCisgKiBOVl9DVFJMX0ZSQU1FTE9DS19FVEhFUk5FVF9ERVRFQ1RFRCBtYXkgYmUgY2FsbGVk
IHRvIGZpbmQgb3V0IGlmCisgKiBldGhlcm5ldCBpcyBjb25uZWN0ZWQgdG8gb25lIG9mIHRoZSBy
ajQ1IHBvcnRzLiAgQW4gYXBwcm9wcmlhdGUKKyAqIGVycm9yIG1lc3NhZ2Ugc2hvdWxkIHRoZW4g
YmUgZGlzcGxheWVkLiAgVGhlIF9QT1JUMCBhbmQgX1BPUlQxCisgKiB2YWx1ZXMgbWF5IGJlIG9y
J2VkIHRvZ2V0aGVyLgorICoKKyAqIFRoaXMgYXR0cmlidXRlIG1heSBiZSBxdWVyaWVkIHRocm91
Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkKKyAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJH
RVRfVFlQRV9GUkFNRUxPQ0sgb3IgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTgorICogdGFy
Z2V0LgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfRVRIRVJORVRfREVURUNURUQg
MzMgLyogUi0tRiAqLworI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19FVEhFUk5FVF9ERVRFQ1RF
RF9OT05FIDAKKyNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfRVRIRVJORVRfREVURUNURURfUE9S
VDAgMHgxCisjZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX0VUSEVSTkVUX0RFVEVDVEVEX1BPUlQx
IDB4MgorCisvKgorICogTlZfQ1RSTF9GUkFNRUxPQ0tfVklERU9fTU9ERSAtIGdldC9zZXQgd2hh
dCB2aWRlbyBtb2RlIGlzIHVzZWQKKyAqIHRvIGludGVycGVyYXRlIHRoZSBob3VzZSBzeW5jIHNp
Z25hbC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgc2V0CisgKiBvbiB0aGUgbWFzdGVyLgorICoKKyAq
IFRoaXMgYXR0cmlidXRlIG1heSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0
QXR0cmlidXRlKCkKKyAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9GUkFNRUxPQ0sgb3Ig
TlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTgorICogdGFyZ2V0LgorICovCisKKyNkZWZpbmUg
TlZfQ1RSTF9GUkFNRUxPQ0tfVklERU9fTU9ERSAzNCAvKiBSVy1GICovCisjZGVmaW5lIE5WX0NU
UkxfRlJBTUVMT0NLX1ZJREVPX01PREVfTk9ORSAwCisjZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NL
X1ZJREVPX01PREVfVFRMIDEKKyNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfVklERU9fTU9ERV9O
VFNDUEFMU0VDQU0gMgorI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19WSURFT19NT0RFX0hEVFYg
MworCisvKgorICogRHVyaW5nIEZSQU1FTE9DSyBicmluZy11cCwgdGhlIGFib3ZlIHZhbHVlcyB3
ZXJlIHJlZGVmaW5lZCB0bworICogdGhlc2U6CisgKi8KKworI2RlZmluZSBOVl9DVFJMX0ZSQU1F
TE9DS19WSURFT19NT0RFX0NPTVBPU0lURV9BVVRPIDAKKyNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxP
Q0tfVklERU9fTU9ERV9UVEwgMQorI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19WSURFT19NT0RF
X0NPTVBPU0lURV9CSV9MRVZFTCAyCisjZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX1ZJREVPX01P
REVfQ09NUE9TSVRFX1RSSV9MRVZFTCAzCisKKy8qCisgKiBOVl9DVFJMX0ZSQU1FTE9DS19TWU5D
X1JBVEUgLSB0aGlzIGlzIHRoZSByZWZyZXNoIHJhdGUgdGhhdCB0aGUKKyAqIGZyYW1lIGxvY2sg
Ym9hcmQgaXMgc2VuZGluZyB0byB0aGUgR1BVLCBpbiBtaWxsaUh6LgorICoKKyAqIFRoaXMgYXR0
cmlidXRlIG1heSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRl
KCkKKyAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9GUkFNRUxPQ0sgb3IgTlZfQ1RSTF9U
QVJHRVRfVFlQRV9YX1NDUkVFTgorICogdGFyZ2V0LgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9G
UkFNRUxPQ0tfU1lOQ19SQVRFIDM1IC8qIFItLUYgKi8KKworLyoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwor
CisvKgorICogTlZfQ1RSTF9GT1JDRV9HRU5FUklDX0NQVSAtIGluaGliaXQgdGhlIHVzZSBvZiBD
UFUgc3BlY2lmaWMKKyAqIGZlYXR1cmVzIHN1Y2ggYXMgTU1YLCBTU0UsIG9yIDNETk9XISBmb3Ig
T3BlbkdMIGNsaWVudHM7IHRoaXMKKyAqIG9wdGlvbiBtYXkgcmVzdWx0IGluIHBlcmZvcm1hbmNl
IGxvc3MsIGJ1dCBtYXkgYmUgdXNlZnVsIGluCisgKiBjb25qdW5jdGlvbiB3aXRoIHNvZnR3YXJl
IHN1Y2ggYXMgdGhlIFZhbGdyaW5kIG1lbW9yeSBkZWJ1Z2dlci4KKyAqIFRoaXMgc2V0dGluZyBp
cyBvbmx5IGFwcGxpZWQgdG8gT3BlbkdMIGNsaWVudHMgdGhhdCBhcmUgc3RhcnRlZAorICogYWZ0
ZXIgdGhpcyBzZXR0aW5nIGlzIGFwcGxpZWQuCisgKgorICogVVNBR0UgTk9URTogVGhpcyBhdHRy
aWJ1dGUgaXMgZGVwcmVjYXRlZC4gQ1BVIGNvbXBhdGliaWxpdHkgaXMgbm93CisgKiAgICAgICAg
ICAgICBjaGVja2VkIGVhY2ggdGltZSBkdXJpbmcgaW5pdGlhbGl6YXRpb24uCisgKi8KKworI2Rl
ZmluZSBOVl9DVFJMX0ZPUkNFX0dFTkVSSUNfQ1BVIDM3IC8qIFJXLVggKi8KKyNkZWZpbmUgTlZf
Q1RSTF9GT1JDRV9HRU5FUklDX0NQVV9ESVNBQkxFIDAKKyNkZWZpbmUgTlZfQ1RSTF9GT1JDRV9H
RU5FUklDX0NQVV9FTkFCTEUgMQorCisvKgorICogTlZfQ1RSTF9PUEVOR0xfQUFfTElORV9HQU1N
QSAtIGZvciBPcGVuR0wgY2xpZW50cywgYWxsb3cKKyAqIEdhbW1hLWNvcnJlY3RlZCBhbnRpYWxp
YXNlZCBsaW5lcyB0byBjb25zaWRlciB2YXJpYW5jZXMgaW4gdGhlCisgKiBjb2xvciBkaXNwbGF5
IGNhcGFiaWxpdGllcyBvZiBvdXRwdXQgZGV2aWNlcyB3aGVuIHJlbmRlcmluZyBzbW9vdGgKKyAq
IGxpbmVzLiAgT25seSBhdmFpbGFibGUgb24gcmVjZW50IFF1YWRybyBHUFVzLiAgVGhpcyBzZXR0
aW5nIGlzIG9ubHkKKyAqIGFwcGxpZWQgdG8gT3BlbkdMIGNsaWVudHMgdGhhdCBhcmUgc3RhcnRl
ZCBhZnRlciB0aGlzIHNldHRpbmcgaXMKKyAqIGFwcGxpZWQuCisgKi8KKworI2RlZmluZSBOVl9D
VFJMX09QRU5HTF9BQV9MSU5FX0dBTU1BIDM4IC8qIFJXLVggKi8KKyNkZWZpbmUgTlZfQ1RSTF9P
UEVOR0xfQUFfTElORV9HQU1NQV9ESVNBQkxFIDAKKyNkZWZpbmUgTlZfQ1RSTF9PUEVOR0xfQUFf
TElORV9HQU1NQV9FTkFCTEUgMQorCisvKgorICogTlZfQ1RSTF9GUkFNRUxPQ0tfVElNSU5HIC0g
dGhpcyBpcyBUUlVFIHdoZW4gdGhlIGdwdSBpcyBib3RoIHJlY2VpdmluZworICogYW5kIGxvY2tl
ZCB0byBhbiBpbnB1dCB0aW1pbmcgc2lnbmFsLiBUaW1pbmcgaW5mb3JtYXRpb24gbWF5IGNvbWUg
ZnJvbQorICogdGhlIGZvbGxvd2luZyBwbGFjZXM6IEFub3RoZXIgZnJhbWUgbG9jayBkZXZpY2Ug
dGhhdCBpcyBzZXQgdG8gbWFzdGVyLAorICogdGhlIGhvdXNlIHN5bmMgc2lnbmFsLCBvciB0aGUg
R1BVJ3MgaW50ZXJuYWwgdGltaW5nIGZyb20gYSBkaXNwbGF5CisgKiBkZXZpY2UuCisgKgorICog
VGhpcyBhdHRyaWJ1dGUgbWF5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRB
dHRyaWJ1dGUoKQorICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0dQVSBvciBOVl9DVFJM
X1RBUkdFVF9UWVBFX1hfU0NSRUVOIHRhcmdldC4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfRlJB
TUVMT0NLX1RJTUlORyAzOSAvKiBSLS1HICovCisjZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX1RJ
TUlOR19GQUxTRSAwCisjZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX1RJTUlOR19UUlVFIDEKKwor
LyoKKyAqIE5WX0NUUkxfRkxJUFBJTkdfQUxMT1dFRCAtIHdoZW4gVFJVRSwgT3BlbkdMIHdpbGwg
c3dhcCBieSBmbGlwcGluZworICogd2hlbiBwb3NzaWJsZTsgd2hlbiBGQUxTRSwgT3BlbkdMIHdp
bGwgYWx3YXkgc3dhcCBieSBibGl0dGluZy4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfRkxJUFBJ
TkdfQUxMT1dFRCA0MCAvKiBSVy1YICovCisjZGVmaW5lIE5WX0NUUkxfRkxJUFBJTkdfQUxMT1dF
RF9GQUxTRSAwCisjZGVmaW5lIE5WX0NUUkxfRkxJUFBJTkdfQUxMT1dFRF9UUlVFIDEKKworLyoK
KyAqIE5WX0NUUkxfQVJDSElURUNUVVJFIC0gcmV0dXJucyB0aGUgYXJjaGl0ZWN0dXJlIG9uIHdo
aWNoIHRoZSBYIHNlcnZlciBpcworICogcnVubmluZy4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxf
QVJDSElURUNUVVJFIDQxIC8qIFItLSAqLworI2RlZmluZSBOVl9DVFJMX0FSQ0hJVEVDVFVSRV9Y
ODYgMAorI2RlZmluZSBOVl9DVFJMX0FSQ0hJVEVDVFVSRV9YODZfNjQgMQorI2RlZmluZSBOVl9D
VFJMX0FSQ0hJVEVDVFVSRV9JQTY0IDIKKworLyoKKyAqIE5WX0NUUkxfVEVYVFVSRV9DTEFNUElO
RyAtIHRleHR1cmUgY2xhbXBpbmcgbW9kZSBpbiBPcGVuR0wuICBCeQorICogZGVmYXVsdCwgX1NQ
RUMgaXMgdXNlZCwgd2hpY2ggZm9yY2VzIE9wZW5HTCB0ZXh0dXJlIGNsYW1waW5nIHRvCisgKiBj
b25mb3JtIHdpdGggdGhlIE9wZW5HTCBzcGVjaWZpY2F0aW9uLiAgX0VER0UgZm9yY2VzIE5WSURJ
QSdzCisgKiBPcGVuR0wgaW1wbGVtZW50YXRpb24gdG8gcmVtYXAgR0xfQ0xBTVAgdG8gR0xfQ0xB
TVBfVE9fRURHRSwKKyAqIHdoaWNoIGlzIG5vdCBzdHJpY3RseSBjb25mb3JtYW50LCBidXQgc29t
ZSBhcHBsaWNhdGlvbnMgcmVseSBvbgorICogdGhlIG5vbi1jb25mb3JtYW50IGJlaGF2aW9yLgor
ICovCisKKyNkZWZpbmUgTlZfQ1RSTF9URVhUVVJFX0NMQU1QSU5HIDQyIC8qIFJXLVggKi8KKyNk
ZWZpbmUgTlZfQ1RSTF9URVhUVVJFX0NMQU1QSU5HX0VER0UgMAorI2RlZmluZSBOVl9DVFJMX1RF
WFRVUkVfQ0xBTVBJTkdfU1BFQyAxCisKKyNkZWZpbmUgTlZfQ1RSTF9DVVJTT1JfU0hBRE9XIDQz
IC8qIFJXLSAqLworI2RlZmluZSBOVl9DVFJMX0NVUlNPUl9TSEFET1dfRElTQUJMRSAwCisjZGVm
aW5lIE5WX0NUUkxfQ1VSU09SX1NIQURPV19FTkFCTEUgMQorCisjZGVmaW5lIE5WX0NUUkxfQ1VS
U09SX1NIQURPV19BTFBIQSA0NCAvKiBSVy0gKi8KKyNkZWZpbmUgTlZfQ1RSTF9DVVJTT1JfU0hB
RE9XX1JFRCA0NSAgIC8qIFJXLSAqLworI2RlZmluZSBOVl9DVFJMX0NVUlNPUl9TSEFET1dfR1JF
RU4gNDYgLyogUlctICovCisjZGVmaW5lIE5WX0NUUkxfQ1VSU09SX1NIQURPV19CTFVFIDQ3ICAv
KiBSVy0gKi8KKworI2RlZmluZSBOVl9DVFJMX0NVUlNPUl9TSEFET1dfWF9PRkZTRVQgNDggLyog
UlctICovCisjZGVmaW5lIE5WX0NUUkxfQ1VSU09SX1NIQURPV19ZX09GRlNFVCA0OSAvKiBSVy0g
Ki8KKworLyoKKyAqIFdoZW4gQXBwbGljYXRpb24gQ29udHJvbCBmb3IgRlNBQSBpcyBlbmFibGVk
LCB0aGVuIHdoYXQgdGhlCisgKiBhcHBsaWNhdGlvbiByZXF1ZXN0cyBpcyB1c2VkLCBhbmQgTlZf
Q1RSTF9GU0FBX01PREUgaXMgaWdub3JlZC4gIElmCisgKiB0aGlzIGlzIGRpc2FibGVkLCB0aGVu
IGFueSBhcHBsaWNhdGlvbiBzZXR0aW5nIGlzIG92ZXJyaWRkZW4gd2l0aAorICogTlZfQ1RSTF9G
U0FBX01PREUKKyAqLworCisjZGVmaW5lIE5WX0NUUkxfRlNBQV9BUFBMSUNBVElPTl9DT05UUk9M
TEVEIDUwIC8qIFJXLVggKi8KKyNkZWZpbmUgTlZfQ1RSTF9GU0FBX0FQUExJQ0FUSU9OX0NPTlRS
T0xMRURfRU5BQkxFRCAxCisjZGVmaW5lIE5WX0NUUkxfRlNBQV9BUFBMSUNBVElPTl9DT05UUk9M
TEVEX0RJU0FCTEVEIDAKKworLyoKKyAqIFdoZW4gQXBwbGljYXRpb24gQ29udHJvbCBmb3IgTG9n
QW5pc28gaXMgZW5hYmxlZCwgdGhlbiB3aGF0IHRoZQorICogYXBwbGljYXRpb24gcmVxdWVzdHMg
aXMgdXNlZCwgYW5kIE5WX0NUUkxfTE9HX0FOSVNPIGlzIGlnbm9yZWQuICBJZgorICogdGhpcyBp
cyBkaXNhYmxlZCwgdGhlbiBhbnkgYXBwbGljYXRpb24gc2V0dGluZyBpcyBvdmVycmlkZGVuIHdp
dGgKKyAqIE5WX0NUUkxfTE9HX0FOSVNPCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0xPR19BTklT
T19BUFBMSUNBVElPTl9DT05UUk9MTEVEIDUxIC8qIFJXLVggKi8KKyNkZWZpbmUgTlZfQ1RSTF9M
T0dfQU5JU09fQVBQTElDQVRJT05fQ09OVFJPTExFRF9FTkFCTEVEIDEKKyNkZWZpbmUgTlZfQ1RS
TF9MT0dfQU5JU09fQVBQTElDQVRJT05fQ09OVFJPTExFRF9ESVNBQkxFRCAwCisKKy8qCisgKiBJ
TUFHRV9TSEFSUEVOSU5HIGFkanVzdHMgdGhlIHNoYXJwbmVzcyBvZiB0aGUgZGlzcGxheSdzIGlt
YWdlCisgKiBxdWFsaXR5IGJ5IGFtcGxpZnlpbmcgaGlnaCBmcmVxdWVuY3kgY29udGVudC4gIFZh
bGlkIHZhbHVlcyB3aWxsCisgKiBub3JtYWxseSBiZSBpbiB0aGUgcmFuZ2UgWzAsMzIpLiAgT25s
eSBhdmFpbGFibGUgb24gR2VGb3JjZUZYIG9yCisgKiBuZXdlci4KKyAqLworCisjZGVmaW5lIE5W
X0NUUkxfSU1BR0VfU0hBUlBFTklORyA1MiAvKiBSV0RHICovCisKKy8qCisgKiBOVl9DVFJMX1RW
X09WRVJTQ0FOIGFkanVzdHMgdGhlIGFtb3VudCBvZiBvdmVyc2NhbiBvbiB0aGUgc3BlY2lmaWVk
CisgKiBkaXNwbGF5IGRldmljZS4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfVFZfT1ZFUlNDQU4g
NTMgLyogUldERyAqLworCisvKgorICogTlZfQ1RSTF9UVl9GTElDS0VSX0ZJTFRFUiBhZGp1c3Rz
IHRoZSBhbW91bnQgb2YgZmxpY2tlciBmaWx0ZXIgb24KKyAqIHRoZSBzcGVjaWZpZWQgZGlzcGxh
eSBkZXZpY2UuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX1RWX0ZMSUNLRVJfRklMVEVSIDU0IC8q
IFJXREcgKi8KKworLyoKKyAqIE5WX0NUUkxfVFZfQlJJR0hUTkVTUyBhZGp1c3RzIHRoZSBhbW91
bnQgb2YgYnJpZ2h0bmVzcyBvbiB0aGUKKyAqIHNwZWNpZmllZCBkaXNwbGF5IGRldmljZS4KKyAq
LworCisjZGVmaW5lIE5WX0NUUkxfVFZfQlJJR0hUTkVTUyA1NSAvKiBSV0RHICovCisKKy8qCisg
KiBOVl9DVFJMX1RWX0hVRSBhZGp1c3RzIHRoZSBhbW91bnQgb2YgaHVlIG9uIHRoZSBzcGVjaWZp
ZWQgZGlzcGxheQorICogZGV2aWNlLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9UVl9IVUUgNTYg
LyogUldERyAqLworCisvKgorICogTlZfQ1RSTF9UVl9DT05UUkFTVCBhZGp1c3RzIHRoZSBhbW91
bnQgb2YgY29udHJhc3Qgb24gdGhlIHNwZWNpZmllZAorICogZGlzcGxheSBkZXZpY2UuCisgKi8K
KworI2RlZmluZSBOVl9DVFJMX1RWX0NPTlRSQVNUIDU3IC8qIFJXREcgKi8KKworLyoKKyAqIE5W
X0NUUkxfVFZfU0FUVVJBVElPTiBhZGp1c3RzIHRoZSBhbW91bnQgb2Ygc2F0dXJhdGlvbiBvbiB0
aGUKKyAqIHNwZWNpZmllZCBkaXNwbGF5IGRldmljZS4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxf
VFZfU0FUVVJBVElPTiA1OCAvKiBSV0RHICovCisKKy8qCisgKiBOVl9DVFJMX1RWX1JFU0VUX1NF
VFRJTkdTIC0gdGhpcyB3cml0ZS1vbmx5IGF0dHJpYnV0ZSBjYW4gYmUgdXNlZAorICogdG8gcmVx
dWVzdCB0aGF0IGFsbCBUViBTZXR0aW5ncyBiZSByZXNldCB0byB0aGVpciBkZWZhdWx0IHZhbHVl
czsKKyAqIHR5cGljYWwgdXNhZ2Ugd291bGQgYmUgdGhhdCB0aGlzIGF0dHJpYnV0ZSBiZSBzZW50
LCBhbmQgdGhlbiBhbGwKKyAqIHRoZSBUViBhdHRyaWJ1dGVzIGJlIHF1ZXJpZWQgdG8gcmV0cmll
dmUgdGhlaXIgbmV3IHZhbHVlcy4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfVFZfUkVTRVRfU0VU
VElOR1MgNTkgLyogLVdERyAqLworCisvKgorICogTlZfQ1RSTF9HUFVfQ09SRV9URU1QRVJBVFVS
RSByZXBvcnRzIHRoZSBjdXJyZW50IGNvcmUgdGVtcGVyYXR1cmUKKyAqIG9mIHRoZSBHUFUgZHJp
dmluZyB0aGUgWCBzY3JlZW4uCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0dQVV9DT1JFX1RFTVBF
UkFUVVJFIDYwIC8qIFItLUcgKi8KKworLyoKKyAqIE5WX0NUUkxfR1BVX0NPUkVfVEhSRVNIT0xE
IHJlcG9ydHMgdGhlIGN1cnJlbnQgR1BVIGNvcmUgc2xvd2Rvd24KKyAqIHRocmVzaG9sZCB0ZW1w
ZXJhdHVyZSwgTlZfQ1RSTF9HUFVfREVGQVVMVF9DT1JFX1RIUkVTSE9MRCBhbmQKKyAqIE5WX0NU
UkxfR1BVX01BWF9DT1JFX1RIUkVTSE9MRCByZXBvcnQgdGhlIGRlZmF1bHQgYW5kIE1BWCBjb3Jl
CisgKiBzbG93ZG93biB0aHJlc2hvbGQgdGVtcGVyYXR1cmVzLgorICoKKyAqIE5WX0NUUkxfR1BV
X0NPUkVfVEhSRVNIT0xEIHJlZmxlY3RzIHRoZSB0ZW1wZXJhdHVyZSBhdCB3aGljaCB0aGUKKyAq
IEdQVSBpcyB0aHJvdHRsZWQgdG8gcHJldmVudCBvdmVyaGVhdGluZy4KKyAqLworCisjZGVmaW5l
IE5WX0NUUkxfR1BVX0NPUkVfVEhSRVNIT0xEIDYxICAgICAgICAgLyogUi0tRyAqLworI2RlZmlu
ZSBOVl9DVFJMX0dQVV9ERUZBVUxUX0NPUkVfVEhSRVNIT0xEIDYyIC8qIFItLUcgKi8KKyNkZWZp
bmUgTlZfQ1RSTF9HUFVfTUFYX0NPUkVfVEhSRVNIT0xEIDYzICAgICAvKiBSLS1HICovCisKKy8q
CisgKiBOVl9DVFJMX0FNQklFTlRfVEVNUEVSQVRVUkUgcmVwb3J0cyB0aGUgY3VycmVudCB0ZW1w
ZXJhdHVyZSBpbiB0aGUKKyAqIGltbWVkaWF0ZSBuZWlnaGJvdXJob29kIG9mIHRoZSBHUFUgZHJp
dmluZyB0aGUgWCBzY3JlZW4uCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0FNQklFTlRfVEVNUEVS
QVRVUkUgNjQgLyogUi0tRyAqLworCisvKgorICogTlZfQ1RSTF9QQlVGRkVSX1NDQU5PVVRfU1VQ
UE9SVEVEIC0gcmV0dXJucyB3aGV0aGVyIHRoaXMgWCBzY3JlZW4KKyAqIHN1cHBvcnRzIHNjYW5v
dXQgb2YgRlAgcGJ1ZmZlcnM7CisgKgorICogaWYgdGhpcyBzY3JlZW4gZG9lcyBub3Qgc3VwcG9y
dCBQQlVGRkVSX1NDQU5PVVQsIHRoZW4gYWxsIG90aGVyCisgKiBQQlVGRkVSX1NDQU5PVVQgYXR0
cmlidXRlcyBhcmUgdW5hdmFpbGFibGUuCisgKgorICogUEJVRkZFUl9TQ0FOT1VUIGlzIHN1cHBv
cnRlZCBpZiBhbmQgb25seSBpZjoKKyAqIC0gVHdpbnZpZXcgaXMgY29uZmlndXJlZCB3aXRoIGNs
b25lIG1vZGUuICBUaGUgc2Vjb25kYXJ5IHNjcmVlbiBpcyB1c2VkIHRvCisgKiAgIHNjYW5vdXQg
dGhlIHBidWZmZXIuCisgKiAtIFRoZSBkZXNrdG9wIGlzIHJ1bm5pbmcgaW4gd2l0aCAxNiBiaXRz
IHBlciBwaXhlbC4KKyAqLworI2RlZmluZSBOVl9DVFJMX1BCVUZGRVJfU0NBTk9VVF9TVVBQT1JU
RUQgNjUgLyogUi0tICovCisjZGVmaW5lIE5WX0NUUkxfUEJVRkZFUl9TQ0FOT1VUX0ZBTFNFIDAK
KyNkZWZpbmUgTlZfQ1RSTF9QQlVGRkVSX1NDQU5PVVRfVFJVRSAxCisKKy8qCisgKiBOVl9DVFJM
X1BCVUZGRVJfU0NBTk9VVF9YSUQgaW5kaWNhdGVzIHRoZSBYSUQgb2YgdGhlIHBidWZmZXIgdXNl
ZCBmb3IKKyAqIHNjYW5vdXQuCisgKi8KKyNkZWZpbmUgTlZfQ1RSTF9QQlVGRkVSX1NDQU5PVVRf
WElEIDY2IC8qIFJXLSAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogVGhlIE5WX0NU
UkxfR1ZPXyogaW50ZWdlciBhdHRyaWJ1dGVzIGFyZSB1c2VkIHRvIGNvbmZpZ3VyZSBHVk8KKyAq
IChHcmFwaGljcyB0byBWaWRlbyBPdXQpLiAgVGhpcyBmdW5jdGlvbmFsaXR5IGlzIGF2YWlsYWJs
ZSwgZm9yCisgKiBleGFtcGxlLCBvbiB0aGUgUXVhZHJvIEZYIDQwMDAgU0RJIGdyYXBoaWNzIGJv
YXJkLgorICoKKyAqIFRoZSBmb2xsb3dpbmcgaXMgYSB0eXBpY2FsIHVzYWdlIHBhdHRlcm4gZm9y
IHRoZSBHVk8gYXR0cmlidXRlczoKKyAqCisgKiAtIHF1ZXJ5IE5WX0NUUkxfR1ZPX1NVUFBPUlRF
RCB0byBkZXRlcm1pbmUgaWYgdGhlIFggc2NyZWVuIHN1cHBvcnRzIEdWMC4KKyAqCisgKiAtIHNw
ZWNpZnkgTlZfQ1RSTF9HVk9fU1lOQ19NT0RFIChvbmUgb2YgRlJFRV9SVU5OSU5HLCBHRU5MT0NL
LCBvcgorICogRlJBTUVMT0NLKTsgaWYgeW91IHNwZWNpZnkgR0VOTE9DSyBvciBGUkFNRUxPQ0ss
IHlvdSBzaG91bGQgYWxzbworICogc3BlY2lmeSBOVl9DVFJMX0dWT19TWU5DX1NPVVJDRS4KKyAq
CisgKiAtIFVzZSBOVl9DVFJMX0dWT19DT01QT1NJVEVfU1lOQ19JTlBVVF9ERVRFQ1RFRCBhbmQK
KyAqIE5WX0NUUkxfR1ZPX1NESV9TWU5DX0lOUFVUX0RFVEVDVEVEIHRvIGRldGVjdCB3aGF0IGlu
cHV0IHN5bmNzIGFyZQorICogcHJlc2VudC4KKyAqCisgKiAoSWYgbm8gYW5hbG9nIHN5bmMgaXMg
ZGV0ZWN0ZWQgYnV0IGl0IGlzIGtub3duIHRoYXQgYSB2YWxpZAorICogYmktbGV2ZWwgb3IgdHJp
LWxldmVsIHN5bmMgaXMgY29ubmVjdGVkIHNldAorICogTlZfQ1RSTF9HVk9fQ09NUE9TSVRFX1NZ
TkNfSU5QVVRfREVURUNUX01PREUgYXBwcm9wcmlhdGVseSBhbmQKKyAqIHJldGVzdCB3aXRoIE5W
X0NUUkxfR1ZPX0NPTVBPU0lURV9TWU5DX0lOUFVUX0RFVEVDVEVEKS4KKyAqCisgKiAtIGlmIHN5
bmNpbmcgdG8gaW5wdXQgc3luYywgcXVlcnkgdGhlCisgKiBOVl9DVFJMX0dWSU9fREVURUNURURf
VklERU9fRk9STUFUIGF0dHJpYnV0ZTsgbm90ZSB0aGF0IElucHV0IHZpZGVvCisgKiBmb3JtYXQg
Y2FuIG9ubHkgYmUgcXVlcmllZCBhZnRlciBTWU5DX1NPVVJDRSBpcyBzcGVjaWZpZWQuCisgKgor
ICogLSBzcGVjaWZ5IHRoZSBOVl9DVFJMX0dWSU9fUkVRVUVTVEVEX1ZJREVPX0ZPUk1BVAorICoK
KyAqIC0gc3BlY2lmeSB0aGUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVQKKyAqCisgKiAtIHNwZWNp
ZnkgYW55IGN1c3RvbSBDb2xvciBTcGFjZSBDb252ZXJzaW9uIChDU0MpIG1hdHJpeCwgb2Zmc2V0
LAorICogYW5kIHNjYWxlIHdpdGggWE5WQ1RSTFNldEd2b0NvbG9yQ29udmVyc2lvbigpLgorICoK
KyAqIC0gaWYgdXNpbmcgdGhlIEdMWF9OVl92aWRlb19vdXQgZXh0ZW5zaW9uIHRvIGRpc3BsYXkg
b25lIG9yIG1vcmUKKyAqIHBidWZmZXJzLCBjYWxsIGdsWEdldFZpZGVvRGV2aWNlTlYoKSB0byBs
b2NrIHRoZSBHVk8gb3V0cHV0IGZvciB1c2UKKyAqIGJ5IHRoZSBHTFggY2xpZW50OyB0aGVuIGJp
bmQgdGhlIHBidWZmZXIocykgdG8gdGhlIEdWTyBvdXRwdXQgd2l0aAorICogZ2xYQmluZFZpZGVv
SW1hZ2VOVigpIGFuZCBzZW5kIHBidWZmZXJzIHRvIHRoZSBHVk8gb3V0cHV0IHdpdGgKKyAqIGds
WFNlbmRQYnVmZmVyVG9WaWRlb05WKCk7IHNlZSB0aGUgR0xYX05WX3ZpZGVvX291dCBzcGVjIGZv
ciBtb3JlCisgKiBkZXRhaWxzLgorICoKKyAqIC0gaWYgdXNpbmcgdGhlIEdMWF9OVl9wcmVzZW50
X3ZpZGVvIGV4dGVuc2lvbiwgY2FsbAorICogZ2xYQmluZFZpZGVvRGV2aWNlTlYoKSB0byBiaW5k
IHRoZSBHVk8gdmlkZW8gZGV2aWNlIHRvIGN1cnJlbnQKKyAqIE9wZW5HTCBjb250ZXh0LgorICoK
KyAqIE5vdGUgdGhhdCBzZXR0aW5nIG1vc3QgR1ZPIGF0dHJpYnV0ZXMgb25seSBjYXVzZXMgdGhl
IHZhbHVlIHRvIGJlCisgKiBjYWNoZWQgaW4gdGhlIFggc2VydmVyLiAgVGhlIHZhbHVlcyB3aWxs
IGJlIGZsdXNoZWQgdG8gdGhlIGhhcmR3YXJlCisgKiBlaXRoZXIgd2hlbiB0aGUgbmV4dCBNZXRh
TW9kZSBpcyBzZXQgdGhhdCB1c2VzIHRoZSBHVk8gZGlzcGxheQorICogZGV2aWNlLCBvciB3aGVu
IGEgR0xYIHBidWZmZXIgaXMgYm91bmQgdG8gdGhlIEdWTyBvdXRwdXQgKHdpdGgKKyAqIGdsWEJp
bmRWaWRlb0ltYWdlTlYoKSkuCisgKgorICogTm90ZSB0aGF0IEdMWF9OVl92aWRlb19vdXQvR0xY
X05WX3ByZXNlbnRfdmlkZW8gYW5kIFggc2NyZWVuIHVzZQorICogYXJlIG11dHVhbGx5IGV4Y2x1
c2l2ZS4gIElmIGEgTWV0YU1vZGUgaXMgY3VycmVudGx5IHVzaW5nIHRoZSBHVk8KKyAqIGRldmlj
ZSwgdGhlbiBnbFhHZXRWaWRlb0RldmljZU5WIGFuZCBnbFhCaW5kVmlkZW9JbWFnZU5WKCkgd2ls
bAorICogZmFpbC4gIFNpbWlsYXJseSwgaWYgYSBHTFggY2xpZW50IGhhcyBsb2NrZWQgdGhlIEdW
TyBvdXRwdXQgKHZpYQorICogZ2xYR2V0VmlkZW9EZXZpY2VOViBvciBnbFhCaW5kVmlkZW9JbWFn
ZU5WKSwgdGhlbiBzZXR0aW5nIGEKKyAqIE1ldGFNb2RlIHRoYXQgdXNlcyB0aGUgR1ZPIGRldmlj
ZSB3aWxsIGZhaWwuICBUaGUKKyAqIE5WX0NUUkxfR1ZPX0dMWF9MT0NLRUQgZXZlbnQgd2lsbCBi
ZSBzZW50IHdoZW4gYSBHTFggY2xpZW50IGxvY2tzCisgKiB0aGUgR1ZPIG91dHB1dC4KKyAqCisg
Ki8KKworLyoKKyAqIE5WX0NUUkxfR1ZPX1NVUFBPUlRFRCAtIHJldHVybnMgd2hldGhlciB0aGlz
IFggc2NyZWVuIHN1cHBvcnRzIEdWTzsKKyAqIGlmIHRoaXMgc2NyZWVuIGRvZXMgbm90IHN1cHBv
cnQgR1ZPIG91dHB1dCwgdGhlbiBhbGwgb3RoZXIgR1ZPCisgKiBhdHRyaWJ1dGVzIGFyZSB1bmF2
YWlsYWJsZS4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfR1ZPX1NVUFBPUlRFRCA2NyAvKiBSLS0g
Ki8KKyNkZWZpbmUgTlZfQ1RSTF9HVk9fU1VQUE9SVEVEX0ZBTFNFIDAKKyNkZWZpbmUgTlZfQ1RS
TF9HVk9fU1VQUE9SVEVEX1RSVUUgMQorCisvKgorICogTlZfQ1RSTF9HVk9fU1lOQ19NT0RFIC0g
c2VsZWN0cyB0aGUgR1ZPIHN5bmMgbW9kZTsgcG9zc2libGUgdmFsdWVzCisgKiBhcmU6CisgKgor
ICogRlJFRV9SVU5OSU5HIC0gR1ZPIGRvZXMgbm90IHN5bmMgdG8gYW55IGV4dGVybmFsIHNpZ25h
bAorICoKKyAqIEdFTkxPQ0sgLSB0aGUgR1ZPIG91dHB1dCBpcyBnZW5sb2NrZWQgdG8gYW4gaW5j
b21pbmcgc3luYyBzaWduYWw7CisgKiBnZW5sb2NraW5nIGxvY2tzIGF0IGhzeW5jLiAgVGhpcyBy
ZXF1aXJlcyB0aGF0IHRoZSBvdXRwdXQgdmlkZW8KKyAqIGZvcm1hdCBleGFjdGx5IG1hdGNoIHRo
ZSBpbmNvbWluZyBzeW5jIHZpZGVvIGZvcm1hdC4KKyAqCisgKiBGUkFNRUxPQ0sgLSB0aGUgR1ZP
IG91dHB1dCBpcyBmcmFtZSBsb2NrZWQgdG8gYW4gaW5jb21pbmcgc3luYworICogc2lnbmFsOyBm
cmFtZSBsb2NraW5nIGxvY2tzIGF0IHZzeW5jLiAgVGhpcyByZXF1aXJlcyB0aGF0IHRoZSBvdXRw
dXQKKyAqIHZpZGVvIGZvcm1hdCBoYXZlIHRoZSBzYW1lIHJlZnJlc2ggcmF0ZSBhcyB0aGUgaW5j
b21pbmcgc3luYyB2aWRlbworICogZm9ybWF0LgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HVk9f
U1lOQ19NT0RFIDY4IC8qIFJXLSAqLworI2RlZmluZSBOVl9DVFJMX0dWT19TWU5DX01PREVfRlJF
RV9SVU5OSU5HIDAKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fU1lOQ19NT0RFX0dFTkxPQ0sgMQorI2Rl
ZmluZSBOVl9DVFJMX0dWT19TWU5DX01PREVfRlJBTUVMT0NLIDIKKworLyoKKyAqIE5WX0NUUkxf
R1ZPX1NZTkNfU09VUkNFIC0gaWYgTlZfQ1RSTF9HVk9fU1lOQ19NT0RFIGlzIHNldCB0byBlaXRo
ZXIKKyAqIEdFTkxPQ0sgb3IgRlJBTUVMT0NLLCB0aGlzIGNvbnRyb2xzIHdoaWNoIHN5bmMgc291
cmNlIGlzIHVzZWQgYXMKKyAqIHRoZSBpbmNvbWluZyBzeW5jIHNpZ25hbCAoZWl0aGVyIENvbXBv
c2l0ZSBvciBTREkpLiAgSWYKKyAqIE5WX0NUUkxfR1ZPX1NZTkNfTU9ERSBpcyBGUkVFX1JVTk5J
TkcsIHRoaXMgYXR0cmlidXRlIGhhcyBubworICogZWZmZWN0LgorICovCisKKyNkZWZpbmUgTlZf
Q1RSTF9HVk9fU1lOQ19TT1VSQ0UgNjkgLyogUlctICovCisjZGVmaW5lIE5WX0NUUkxfR1ZPX1NZ
TkNfU09VUkNFX0NPTVBPU0lURSAwCisjZGVmaW5lIE5WX0NUUkxfR1ZPX1NZTkNfU09VUkNFX1NE
SSAxCisKKy8qCisgKiBOVl9DVFJMX0dWSU9fUkVRVUVTVEVEX1ZJREVPX0ZPUk1BVCAtIHNwZWNp
ZmllcyB0aGUgZGVzaXJlZCBvdXRwdXQgdmlkZW8KKyAqIGZvcm1hdCBmb3IgR1ZPIGRldmljZXMg
b3IgdGhlIGRlc2lyZWQgaW5wdXQgdmlkZW8gZm9ybWF0IGZvciBHVkkgZGV2aWNlcy4KKyAqCisg
KiBOb3RlIHRoYXQgZm9yIEdWTywgdGhlIHZhbGlkIHZpZGVvIGZvcm1hdHMgbWF5IHZhcnkgZGVw
ZW5kaW5nIG9uCisgKiB0aGUgTlZfQ1RSTF9HVk9fU1lOQ19NT0RFIGFuZCB0aGUgaW5jb21pbmcg
c3luYyB2aWRlbyBmb3JtYXQuICBTZWUKKyAqIHRoZSBkZWZpbml0aW9uIG9mIE5WX0NUUkxfR1ZP
X1NZTkNfTU9ERS4KKyAqCisgKiBOb3RlIHRoYXQgd2hlbiBxdWVyeWluZyB0aGUgVmFsaWRWYWx1
ZXMgZm9yIHRoaXMgZGF0YSB0eXBlLCB0aGUKKyAqIHZhbHVlcyBhcmUgcmVwb3J0ZWQgYXMgYml0
cyB3aXRoaW4gYSBiaXRtYXNrCisgKiAoQVRUUklCVVRFX1RZUEVfSU5UX0JJVFMpOyB1bmZvcnR1
bmF0ZWx5LCB0aGVyZSBhcmUgbW9yZSB2YWxpZAorICogdmFsdWUgYml0cyB0aGFuIHdpbGwgZml0
IGluIGEgc2luZ2xlIDMyLWJpdCB2YWx1ZS4gIFRvIHNvbHZlIHRoaXMsCisgKiBxdWVyeSB0aGUg
VmFsaWRWYWx1ZXMgZm9yIE5WX0NUUkxfR1ZJT19SRVFVRVNURURfVklERU9fRk9STUFUIHRvCisg
KiBjaGVjayB3aGljaCBvZiB0aGUgZmlyc3QgMzEgVklERU9fRk9STUFUUyBhcmUgdmFsaWQsIHF1
ZXJ5IHRoZQorICogVmFsaWRWYWx1ZXMgZm9yIE5WX0NUUkxfR1ZJT19SRVFVRVNURURfVklERU9f
Rk9STUFUMiB0byBjaGVjayB3aGljaAorICogb2YgdGhlIDMyLTYzIFZJREVPX0ZPUk1BVFMgYXJl
IHZhbGlkLCBhbmQgcXVlcnkgdGhlIFZhbGlkVmFsdWVzIG9mCisgKiBOVl9DVFJMX0dWSU9fUkVR
VUVTVEVEX1ZJREVPX0ZPUk1BVDMgdG8gY2hlY2sgd2hpY2ggb2YgdGhlIDY0LTk1CisgKiBWSURF
T19GT1JNQVRTIGFyZSB2YWxpZC4KKyAqCisgKiBOb3RlOiBTZXR0aW5nIHRoaXMgYXR0cmlidXRl
IG9uIGEgR1ZJIGRldmljZSBtYXkgYWxzbyByZXN1bHQgaW4gdGhlCisgKiAgICAgICBmb2xsb3dp
bmcgTlYtQ09OVFJPTCBhdHRyaWJ1dGVzIGJlaW5nIHJlc2V0IG9uIHRoYXQgZGV2aWNlICh0bwor
ICogICAgICAgZW5zdXJlIHRoZSBjb25maWd1cmF0aW9uIHJlbWFpbnMgdmFsaWQpOgorICogICAg
ICAgICAgIE5WX0NUUkxfR1ZJX1JFUVVFU1RFRF9TVFJFQU1fQklUU19QRVJfQ09NUE9ORU5UCisg
KiAgICAgICAgICAgTlZfQ1RSTF9HVklfUkVRVUVTVEVEX1NUUkVBTV9DT01QT05FTlRfU0FNUExJ
TkcKKyAqLworCisjZGVmaW5lIE5WX0NUUkxfR1ZJT19SRVFVRVNURURfVklERU9fRk9STUFUIDcw
IC8qIFJXLS1JICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF9OT05FIDAK
KyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF80ODdJXzU5Xzk0X1NNUFRFMjU5X05U
U0MgMQorI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzU3NklfNTBfMDBfU01QVEUy
NTlfUEFMIDIKKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF83MjBQXzU5Xzk0X1NN
UFRFMjk2IDMKKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF83MjBQXzYwXzAwX1NN
UFRFMjk2IDQKKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8xMDM1SV81OV85NF9T
TVBURTI2MCA1CisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMTAzNUlfNjBfMDBf
U01QVEUyNjAgNgorI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzEwODBJXzUwXzAw
X1NNUFRFMjk1IDcKKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8xMDgwSV81MF8w
MF9TTVBURTI3NCA4CisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMTA4MElfNTlf
OTRfU01QVEUyNzQgOQorI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzEwODBJXzYw
XzAwX1NNUFRFMjc0IDEwCisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMTA4MFBf
MjNfOTc2X1NNUFRFMjc0IDExCisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMTA4
MFBfMjRfMDBfU01QVEUyNzQgMTIKKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8x
MDgwUF8yNV8wMF9TTVBURTI3NCAxMworI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFU
XzEwODBQXzI5Xzk3X1NNUFRFMjc0IDE0CisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JN
QVRfMTA4MFBfMzBfMDBfU01QVEUyNzQgMTUKKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZP
Uk1BVF83MjBQXzUwXzAwX1NNUFRFMjk2IDE2CisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19G
T1JNQVRfMTA4MElfNDhfMDBfU01QVEUyNzQgMTcKKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVP
X0ZPUk1BVF8xMDgwSV80N185Nl9TTVBURTI3NCAxOAorI2RlZmluZSBOVl9DVFJMX0dWSU9fVklE
RU9fRk9STUFUXzcyMFBfMzBfMDBfU01QVEUyOTYgMTkKKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJ
REVPX0ZPUk1BVF83MjBQXzI5Xzk3X1NNUFRFMjk2IDIwCisjZGVmaW5lIE5WX0NUUkxfR1ZJT19W
SURFT19GT1JNQVRfNzIwUF8yNV8wMF9TTVBURTI5NiAyMQorI2RlZmluZSBOVl9DVFJMX0dWSU9f
VklERU9fRk9STUFUXzcyMFBfMjRfMDBfU01QVEUyOTYgMjIKKyNkZWZpbmUgTlZfQ1RSTF9HVklP
X1ZJREVPX0ZPUk1BVF83MjBQXzIzXzk4X1NNUFRFMjk2IDIzCisjZGVmaW5lIE5WX0NUUkxfR1ZJ
T19WSURFT19GT1JNQVRfMTA4MFBTRl8yNV8wMF9TTVBURTI3NCAyNAorI2RlZmluZSBOVl9DVFJM
X0dWSU9fVklERU9fRk9STUFUXzEwODBQU0ZfMjlfOTdfU01QVEUyNzQgMjUKKyNkZWZpbmUgTlZf
Q1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8xMDgwUFNGXzMwXzAwX1NNUFRFMjc0IDI2CisjZGVmaW5l
IE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMTA4MFBTRl8yNF8wMF9TTVBURTI3NCAyNworI2Rl
ZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzEwODBQU0ZfMjNfOThfU01QVEUyNzQgMjgK
KyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8yMDQ4UF8zMF8wMF9TTVBURTM3MiAy
OQorI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzIwNDhQXzI5Xzk3X1NNUFRFMzcy
IDMwCisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMjA0OElfNjBfMDBfU01QVEUz
NzIgMzEKKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8yMDQ4SV81OV85NF9TTVBU
RTM3MiAzMgorI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzIwNDhQXzI1XzAwX1NN
UFRFMzcyIDMzCisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMjA0OElfNTBfMDBf
U01QVEUzNzIgMzQKKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8yMDQ4UF8yNF8w
MF9TTVBURTM3MiAzNQorI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzIwNDhQXzIz
Xzk4X1NNUFRFMzcyIDM2CisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMjA0OElf
NDhfMDBfU01QVEUzNzIgMzcKKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8yMDQ4
SV80N185Nl9TTVBURTM3MiAzOAorI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzEw
ODBQXzUwXzAwXzNHX0xFVkVMX0FfU01QVEUyNzQgMzkKKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJ
REVPX0ZPUk1BVF8xMDgwUF81OV85NF8zR19MRVZFTF9BX1NNUFRFMjc0IDQwCisjZGVmaW5lIE5W
X0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMTA4MFBfNjBfMDBfM0dfTEVWRUxfQV9TTVBURTI3NCA0
MQorI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzEwODBQXzYwXzAwXzNHX0xFVkVM
X0JfU01QVEUyNzQgNDIKKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8xMDgwSV82
MF8wMF8zR19MRVZFTF9CX1NNUFRFMjc0IDQzCisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19G
T1JNQVRfMjA0OElfNjBfMDBfM0dfTEVWRUxfQl9TTVBURTM3MiA0NAorI2RlZmluZSBOVl9DVFJM
X0dWSU9fVklERU9fRk9STUFUXzEwODBQXzUwXzAwXzNHX0xFVkVMX0JfU01QVEUyNzQgNDUKKyNk
ZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8xMDgwSV81MF8wMF8zR19MRVZFTF9CX1NN
UFRFMjc0IDQ2CisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMjA0OElfNTBfMDBf
M0dfTEVWRUxfQl9TTVBURTM3MiA0NworI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFU
XzEwODBQXzMwXzAwXzNHX0xFVkVMX0JfU01QVEUyNzQgNDgKKyNkZWZpbmUgTlZfQ1RSTF9HVklP
X1ZJREVPX0ZPUk1BVF8yMDQ4UF8zMF8wMF8zR19MRVZFTF9CX1NNUFRFMzcyIDQ5CisjZGVmaW5l
IE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMTA4MFBfMjVfMDBfM0dfTEVWRUxfQl9TTVBURTI3
NCA1MAorI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzIwNDhQXzI1XzAwXzNHX0xF
VkVMX0JfU01QVEUzNzIgNTEKKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8xMDgw
UF8yNF8wMF8zR19MRVZFTF9CX1NNUFRFMjc0IDUyCisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURF
T19GT1JNQVRfMjA0OFBfMjRfMDBfM0dfTEVWRUxfQl9TTVBURTM3MiA1MworI2RlZmluZSBOVl9D
VFJMX0dWSU9fVklERU9fRk9STUFUXzEwODBJXzQ4XzAwXzNHX0xFVkVMX0JfU01QVEUyNzQgNTQK
KyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8yMDQ4SV80OF8wMF8zR19MRVZFTF9C
X1NNUFRFMzcyIDU1CisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMTA4MFBfNTlf
OTRfM0dfTEVWRUxfQl9TTVBURTI3NCA1NgorI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9S
TUFUXzEwODBJXzU5Xzk0XzNHX0xFVkVMX0JfU01QVEUyNzQgNTcKKyNkZWZpbmUgTlZfQ1RSTF9H
VklPX1ZJREVPX0ZPUk1BVF8yMDQ4SV81OV85NF8zR19MRVZFTF9CX1NNUFRFMzcyIDU4CisjZGVm
aW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMTA4MFBfMjlfOTdfM0dfTEVWRUxfQl9TTVBU
RTI3NCA1OQorI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzIwNDhQXzI5Xzk3XzNH
X0xFVkVMX0JfU01QVEUzNzIgNjAKKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8x
MDgwUF8yM185OF8zR19MRVZFTF9CX1NNUFRFMjc0IDYxCisjZGVmaW5lIE5WX0NUUkxfR1ZJT19W
SURFT19GT1JNQVRfMjA0OFBfMjNfOThfM0dfTEVWRUxfQl9TTVBURTM3MiA2MgorI2RlZmluZSBO
Vl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzEwODBJXzQ3Xzk2XzNHX0xFVkVMX0JfU01QVEUyNzQg
NjMKKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8yMDQ4SV80N185Nl8zR19MRVZF
TF9CX1NNUFRFMzcyIDY0CisKKy8qCisgKiBUaGUgZm9sbG93aW5nIGFyZSBkZXByZWNhdGVkOyBO
Vl9DVFJMX0dWSU9fUkVRVUVTVEVEX1ZJREVPX0ZPUk1BVCBhbmQgdGhlCisgKiBjb3JyZXNwb25k
aW5nIE5WX0NUUkxfR1ZJT18qIGZvcm1hdHMgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KKyAqLwor
I2RlZmluZSBOVl9DVFJMX0dWT19PVVRQVVRfVklERU9fRk9STUFUIDcwIC8qIFJXLSAqLworCisj
ZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF9OT05FIDAKKyNkZWZpbmUgTlZfQ1RSTF9H
Vk9fVklERU9fRk9STUFUXzQ4N0lfNTlfOTRfU01QVEUyNTlfTlRTQyAxCisjZGVmaW5lIE5WX0NU
UkxfR1ZPX1ZJREVPX0ZPUk1BVF81NzZJXzUwXzAwX1NNUFRFMjU5X1BBTCAyCisjZGVmaW5lIE5W
X0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF83MjBQXzU5Xzk0X1NNUFRFMjk2IDMKKyNkZWZpbmUgTlZf
Q1RSTF9HVk9fVklERU9fRk9STUFUXzcyMFBfNjBfMDBfU01QVEUyOTYgNAorI2RlZmluZSBOVl9D
VFJMX0dWT19WSURFT19GT1JNQVRfMTAzNUlfNTlfOTRfU01QVEUyNjAgNQorI2RlZmluZSBOVl9D
VFJMX0dWT19WSURFT19GT1JNQVRfMTAzNUlfNjBfMDBfU01QVEUyNjAgNgorI2RlZmluZSBOVl9D
VFJMX0dWT19WSURFT19GT1JNQVRfMTA4MElfNTBfMDBfU01QVEUyOTUgNworI2RlZmluZSBOVl9D
VFJMX0dWT19WSURFT19GT1JNQVRfMTA4MElfNTBfMDBfU01QVEUyNzQgOAorI2RlZmluZSBOVl9D
VFJMX0dWT19WSURFT19GT1JNQVRfMTA4MElfNTlfOTRfU01QVEUyNzQgOQorI2RlZmluZSBOVl9D
VFJMX0dWT19WSURFT19GT1JNQVRfMTA4MElfNjBfMDBfU01QVEUyNzQgMTAKKyNkZWZpbmUgTlZf
Q1RSTF9HVk9fVklERU9fRk9STUFUXzEwODBQXzIzXzk3Nl9TTVBURTI3NCAxMQorI2RlZmluZSBO
Vl9DVFJMX0dWT19WSURFT19GT1JNQVRfMTA4MFBfMjRfMDBfU01QVEUyNzQgMTIKKyNkZWZpbmUg
TlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzEwODBQXzI1XzAwX1NNUFRFMjc0IDEzCisjZGVmaW5l
IE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF8xMDgwUF8yOV85N19TTVBURTI3NCAxNAorI2RlZmlu
ZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfMTA4MFBfMzBfMDBfU01QVEUyNzQgMTUKKyNkZWZp
bmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzcyMFBfNTBfMDBfU01QVEUyOTYgMTYKKyNkZWZp
bmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzEwODBJXzQ4XzAwX1NNUFRFMjc0IDE3CisjZGVm
aW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF8xMDgwSV80N185Nl9TTVBURTI3NCAxOAorI2Rl
ZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfNzIwUF8zMF8wMF9TTVBURTI5NiAxOQorI2Rl
ZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfNzIwUF8yOV85N19TTVBURTI5NiAyMAorI2Rl
ZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfNzIwUF8yNV8wMF9TTVBURTI5NiAyMQorI2Rl
ZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfNzIwUF8yNF8wMF9TTVBURTI5NiAyMgorI2Rl
ZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfNzIwUF8yM185OF9TTVBURTI5NiAyMworI2Rl
ZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfMTA4MFBTRl8yNV8wMF9TTVBURTI3NCAyNAor
I2RlZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfMTA4MFBTRl8yOV85N19TTVBURTI3NCAy
NQorI2RlZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfMTA4MFBTRl8zMF8wMF9TTVBURTI3
NCAyNgorI2RlZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfMTA4MFBTRl8yNF8wMF9TTVBU
RTI3NCAyNworI2RlZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfMTA4MFBTRl8yM185OF9T
TVBURTI3NCAyOAorI2RlZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfMjA0OFBfMzBfMDBf
U01QVEUzNzIgMjkKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzIwNDhQXzI5Xzk3
X1NNUFRFMzcyIDMwCisjZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF8yMDQ4SV82MF8w
MF9TTVBURTM3MiAzMQorI2RlZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfMjA0OElfNTlf
OTRfU01QVEUzNzIgMzIKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzIwNDhQXzI1
XzAwX1NNUFRFMzcyIDMzCisjZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF8yMDQ4SV81
MF8wMF9TTVBURTM3MiAzNAorI2RlZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfMjA0OFBf
MjRfMDBfU01QVEUzNzIgMzUKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzIwNDhQ
XzIzXzk4X1NNUFRFMzcyIDM2CisjZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF8yMDQ4
SV80OF8wMF9TTVBURTM3MiAzNworI2RlZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfMjA0
OElfNDdfOTZfU01QVEUzNzIgMzgKKworLyoKKyAqIE5WX0NUUkxfR1ZJT19ERVRFQ1RFRF9WSURF
T19GT1JNQVQgLSBpbmRpY2F0ZXMgdGhlIGlucHV0IHZpZGVvIGZvcm1hdAorICogZGV0ZWN0ZWQg
Zm9yIEdWTyBvciBHVkkgZGV2aWNlczsgdGhlIHBvc3NpYmxlIHZhbHVlcyBhcmUgdGhlCisgKiBO
Vl9DVFJMX0dWSU9fVklERU9fRk9STUFUIGNvbnN0YW50cy4KKyAqCisgKiBGb3IgR1ZJIGRldmlj
ZXMsIHRoZSBqYWNrIG51bWJlciBzaG91bGQgYmUgc3BlY2lmaWVkIGluIHRoZSBsb3dlcgorICog
MTYgYml0cyBvZiB0aGUgImRpc3BsYXlfbWFzayIgcGFyYW1ldGVyLCB3aGlsZSB0aGUgY2hhbm5l
bCBudW1iZXIgc2hvdWxkIGJlCisgKiBzcGVjaWZpZWQgaW4gdGhlIHVwcGVyIDE2IGJpdHMuCisg
Ki8KKworI2RlZmluZSBOVl9DVFJMX0dWSU9fREVURUNURURfVklERU9fRk9STUFUIDcxIC8qIFIt
LUkgKi8KKworLyoKKyAqIFRoZSBmb2xsb3dpbmcgaXMgZGVwcmVjYXRlZC4gIFVzZSBOVl9DVFJM
X0dWSU9fREVURUNURURfVklERU9fRk9STUFULAorICogaW5zdGVhZC4KKyAqLworI2RlZmluZSBO
Vl9DVFJMX0dWT19JTlBVVF9WSURFT19GT1JNQVQgNzEgLyogUi0tICovCisKKy8qCisgKiBOVl9D
VFJMX0dWT19EQVRBX0ZPUk1BVCAtIFRoaXMgY29udHJvbHMgaG93IHRoZSBkYXRhIGluIHRoZSBz
b3VyY2UKKyAqIChlaXRoZXIgdGhlIFggc2NyZWVuIG9yIHRoZSBHTFggcGJ1ZmZlcikgaXMgaW50
ZXJwcmV0dGVkIGFuZAorICogZGlzcGxheWVkLgorICoKKyAqIE5vdGU6IHNvbWUgb2YgdGhlIGJl
bG93IERBVEFfRk9STUFUUyBoYXZlIGJlZW4gcmVuYW1lZC4gIEZvcgorICogZXhhbXBsZSwgUjhH
OEI4X1RPX1JHQjQ0NCBoYXMgYmVlbiByZW5hbWVkIHRvIFg4WDhYOF80NDRfUEFTU1RIUlUuCisg
KiBUaGlzIGlzIHRvIG1vcmUgYWNjdXJhdGVseSByZWZsZWN0IERBVEFfRk9STUFUUyB3aGVyZSB0
aGUKKyAqIHBlci1jaGFubmVsIGRhdGEgY291bGQgYmUgZWl0aGVyIFJHQiBvciBZQ3JDYiAtLSB0
aGUgcG9pbnQgaXMgdGhhdAorICogdGhlIGRyaXZlciBhbmQgR1ZPIGhhcmR3YXJlIGRvIG5vdCBw
ZXJmb3JtIGFueSBpbXBsaWNpdCBjb2xvciBzcGFjZQorICogY29udmVyc2lvbiBvbiB0aGUgZGF0
YTsgaXQgaXMgcGFzc2VkIHRocm91Z2ggdG8gdGhlIFNESSBvdXQuCisgKi8KKworI2RlZmluZSBO
Vl9DVFJMX0dWT19EQVRBX0ZPUk1BVCA3MiAvKiBSVy0gKi8KKyNkZWZpbmUgTlZfQ1RSTF9HVk9f
REFUQV9GT1JNQVRfUjhHOEI4X1RPX1lDUkNCNDQ0IDAKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fREFU
QV9GT1JNQVRfUjhHOEI4QThfVE9fWUNSQ0JBNDQ0NCAxCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0RB
VEFfRk9STUFUX1I4RzhCOFoxMF9UT19ZQ1JDQlo0NDQ0IDIKKyNkZWZpbmUgTlZfQ1RSTF9HVk9f
REFUQV9GT1JNQVRfUjhHOEI4X1RPX1lDUkNCNDIyIDMKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fREFU
QV9GT1JNQVRfUjhHOEI4QThfVE9fWUNSQ0JBNDIyNCA0CisjZGVmaW5lIE5WX0NUUkxfR1ZPX0RB
VEFfRk9STUFUX1I4RzhCOFoxMF9UT19ZQ1JDQlo0MjI0IDUKKyNkZWZpbmUgTlZfQ1RSTF9HVk9f
REFUQV9GT1JNQVRfUjhHOEI4X1RPX1JHQjQ0NCA2ICAvLyByZW5hbWVkCisjZGVmaW5lIE5WX0NU
UkxfR1ZPX0RBVEFfRk9STUFUX1g4WDhYOF80NDRfUEFTU1RIUlUgNgorI2RlZmluZSBOVl9DVFJM
X0dWT19EQVRBX0ZPUk1BVF9SOEc4QjhBOF9UT19SR0JBNDQ0NCA3ICAvLyByZW5hbWVkCisjZGVm
aW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUX1g4WDhYOEE4XzQ0NDRfUEFTU1RIUlUgNworI2Rl
ZmluZSBOVl9DVFJMX0dWT19EQVRBX0ZPUk1BVF9SOEc4QjhaMTBfVE9fUkdCWjQ0NDQgOCAgLy8g
cmVuYW1lZAorI2RlZmluZSBOVl9DVFJMX0dWT19EQVRBX0ZPUk1BVF9YOFg4WDhaOF80NDQ0X1BB
U1NUSFJVIDgKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRfWTEwQ1IxMENCMTBfVE9f
WUNSQ0I0NDQgOSAgLy8gcmVuYW1lZAorI2RlZmluZSBOVl9DVFJMX0dWT19EQVRBX0ZPUk1BVF9Y
MTBYMTBYMTBfNDQ0X1BBU1NUSFJVIDkKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRf
WTEwQ1I4Q0I4X1RPX1lDUkNCNDQ0IDEwICAvLyByZW5hbWVkCisjZGVmaW5lIE5WX0NUUkxfR1ZP
X0RBVEFfRk9STUFUX1gxMFg4WDhfNDQ0X1BBU1NUSFJVIDEwCisjZGVmaW5lIE5WX0NUUkxfR1ZP
X0RBVEFfRk9STUFUX1kxMENSOENCOEExMF9UT19ZQ1JDQkE0NDQ0IDExICAvLyByZW5hbWVkCisj
ZGVmaW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUX1gxMFg4WDhBMTBfNDQ0NF9QQVNTVEhSVSAx
MQorI2RlZmluZSBOVl9DVFJMX0dWT19EQVRBX0ZPUk1BVF9ZMTBDUjhDQjhaMTBfVE9fWUNSQ0Ja
NDQ0NCAxMiAgLy8gcmVuYW1lZAorI2RlZmluZSBOVl9DVFJMX0dWT19EQVRBX0ZPUk1BVF9YMTBY
OFg4WjEwXzQ0NDRfUEFTU1RIUlUgMTIKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRf
RFVBTF9SOEc4QjhfVE9fRFVBTF9ZQ1JDQjQyMiAxMworI2RlZmluZSBOVl9DVFJMX0dWT19EQVRB
X0ZPUk1BVF9EVUFMX1k4Q1I4Q0I4X1RPX0RVQUxfWUNSQ0I0MjIgMTQgIC8vIHJlbmFtZWQKKyNk
ZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRfRFVBTF9YOFg4WDhfVE9fRFVBTF80MjJfUEFT
U1RIUlUgMTQKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRfUjEwRzEwQjEwX1RPX1lD
UkNCNDIyIDE1CisjZGVmaW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUX1IxMEcxMEIxMF9UT19Z
Q1JDQjQ0NCAxNgorI2RlZmluZSBOVl9DVFJMX0dWT19EQVRBX0ZPUk1BVF9ZMTJDUjEyQ0IxMl9U
T19ZQ1JDQjQ0NCAxNyAgLy8gcmVuYW1lZAorI2RlZmluZSBOVl9DVFJMX0dWT19EQVRBX0ZPUk1B
VF9YMTJYMTJYMTJfNDQ0X1BBU1NUSFJVIDE3CisjZGVmaW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9S
TUFUX1IxMkcxMkIxMl9UT19ZQ1JDQjQ0NCAxOAorI2RlZmluZSBOVl9DVFJMX0dWT19EQVRBX0ZP
Uk1BVF9YOFg4WDhfNDIyX1BBU1NUSFJVIDE5CisjZGVmaW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9S
TUFUX1g4WDhYOEE4XzQyMjRfUEFTU1RIUlUgMjAKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9G
T1JNQVRfWDhYOFg4WjhfNDIyNF9QQVNTVEhSVSAyMQorI2RlZmluZSBOVl9DVFJMX0dWT19EQVRB
X0ZPUk1BVF9YMTBYMTBYMTBfNDIyX1BBU1NUSFJVIDIyCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0RB
VEFfRk9STUFUX1gxMFg4WDhfNDIyX1BBU1NUSFJVIDIzCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0RB
VEFfRk9STUFUX1gxMFg4WDhBMTBfNDIyNF9QQVNTVEhSVSAyNAorI2RlZmluZSBOVl9DVFJMX0dW
T19EQVRBX0ZPUk1BVF9YMTBYOFg4WjEwXzQyMjRfUEFTU1RIUlUgMjUKKyNkZWZpbmUgTlZfQ1RS
TF9HVk9fREFUQV9GT1JNQVRfWDEyWDEyWDEyXzQyMl9QQVNTVEhSVSAyNgorI2RlZmluZSBOVl9D
VFJMX0dWT19EQVRBX0ZPUk1BVF9SMTJHMTJCMTJfVE9fWUNSQ0I0MjIgMjcKKworLyoKKyAqIE5W
X0NUUkxfR1ZPX0RJU1BMQVlfWF9TQ1JFRU4gLSBubyBsb25nZXIgc3VwcG9ydGVkCisgKi8KKwor
I2RlZmluZSBOVl9DVFJMX0dWT19ESVNQTEFZX1hfU0NSRUVOIDczIC8qIFJXLSAqLworI2RlZmlu
ZSBOVl9DVFJMX0dWT19ESVNQTEFZX1hfU0NSRUVOX0VOQUJMRSAxCisjZGVmaW5lIE5WX0NUUkxf
R1ZPX0RJU1BMQVlfWF9TQ1JFRU5fRElTQUJMRSAwCisKKy8qCisgKiBOVl9DVFJMX0dWT19DT01Q
T1NJVEVfU1lOQ19JTlBVVF9ERVRFQ1RFRCAtIGluZGljYXRlcyB3aGV0aGVyCisgKiBDb21wb3Np
dGUgU3luYyBpbnB1dCBpcyBkZXRlY3RlZC4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0NP
TVBPU0lURV9TWU5DX0lOUFVUX0RFVEVDVEVEIDc0IC8qIFItLSAqLworI2RlZmluZSBOVl9DVFJM
X0dWT19DT01QT1NJVEVfU1lOQ19JTlBVVF9ERVRFQ1RFRF9GQUxTRSAwCisjZGVmaW5lIE5WX0NU
UkxfR1ZPX0NPTVBPU0lURV9TWU5DX0lOUFVUX0RFVEVDVEVEX1RSVUUgMQorCisvKgorICogTlZf
Q1RSTF9HVk9fQ09NUE9TSVRFX1NZTkNfSU5QVVRfREVURUNUX01PREUgLSBnZXQvc2V0IHRoZQor
ICogQ29tcG9zaXRlIFN5bmMgaW5wdXQgZGV0ZWN0IG1vZGUuCisgKi8KKworI2RlZmluZSBOVl9D
VFJMX0dWT19DT01QT1NJVEVfU1lOQ19JTlBVVF9ERVRFQ1RfTU9ERSA3NSAvKiBSVy0gKi8KKyNk
ZWZpbmUgTlZfQ1RSTF9HVk9fQ09NUE9TSVRFX1NZTkNfSU5QVVRfREVURUNUX01PREVfQVVUTyAw
CisjZGVmaW5lIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9TWU5DX0lOUFVUX0RFVEVDVF9NT0RFX0JJ
X0xFVkVMIDEKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fQ09NUE9TSVRFX1NZTkNfSU5QVVRfREVURUNU
X01PREVfVFJJX0xFVkVMIDIKKworLyoKKyAqIE5WX0NUUkxfR1ZPX1NZTkNfSU5QVVRfREVURUNU
RUQgLSBpbmRpY2F0ZXMgd2hldGhlciBTREkgU3luYyBpbnB1dAorICogaXMgZGV0ZWN0ZWQsIGFu
ZCB3aGF0IHR5cGUuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0dWT19TRElfU1lOQ19JTlBVVF9E
RVRFQ1RFRCA3NiAvKiBSLS0gKi8KKyNkZWZpbmUgTlZfQ1RSTF9HVk9fU0RJX1NZTkNfSU5QVVRf
REVURUNURURfTk9ORSAwCisjZGVmaW5lIE5WX0NUUkxfR1ZPX1NESV9TWU5DX0lOUFVUX0RFVEVD
VEVEX0hEIDEKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fU0RJX1NZTkNfSU5QVVRfREVURUNURURfU0Qg
MgorCisvKgorICogTlZfQ1RSTF9HVk9fVklERU9fT1VUUFVUUyAtIGluZGljYXRlcyB3aGljaCBH
Vk8gdmlkZW8gb3V0cHV0CisgKiBjb25uZWN0b3JzIGFyZSBjdXJyZW50bHkgb3V0cHV0aW5nIGRh
dGEuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0dWT19WSURFT19PVVRQVVRTIDc3IC8qIFItLSAq
LworI2RlZmluZSBOVl9DVFJMX0dWT19WSURFT19PVVRQVVRTX05PTkUgMAorI2RlZmluZSBOVl9D
VFJMX0dWT19WSURFT19PVVRQVVRTX1ZJREVPMSAxCisjZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVP
X09VVFBVVFNfVklERU8yIDIKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fT1VUUFVUU19WSURF
T19CT1RIIDMKKworLyoKKyAqIE5WX0NUUkxfR1ZPX0ZQR0FfVkVSU0lPTiAtIGluZGljYXRlcyB0
aGUgdmVyc2lvbiBvZiB0aGUgRmlybXdhcmUgb24KKyAqIHRoZSBHVk8gZGV2aWNlLiAgRGVwcmVj
YXRlZDsgdXNlCisgKiBOVl9DVFJMX1NUUklOR19HVklPX0ZJUk1XQVJFX1ZFUlNJT04gaW5zdGVh
ZC4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0ZJUk1XQVJFX1ZFUlNJT04gNzggLyogUi0t
ICovCisKKy8qCisgKiBOVl9DVFJMX0dWT19TWU5DX0RFTEFZX1BJWEVMUyAtIGNvbnRyb2xzIHRo
ZSBkZWxheSBiZXR3ZWVuIHRoZQorICogaW5wdXQgc3luYyBhbmQgdGhlIG91dHB1dCBzeW5jIGlu
IG51bWJlcnMgb2YgcGl4ZWxzIGZyb20gaHN5bmM7CisgKiB0aGlzIGlzIGEgMTIgYml0IHZhbHVl
LgorICoKKyAqIElmIHRoZSBOVl9DVFJMX0dWT19DQVBBQklMSVRJRVNfQURWQU5DRV9TWU5DX1NL
RVcgYml0IGlzIHNldCwKKyAqIHRoZW4gc2V0dGluZyB0aGlzIHZhbHVlIHdpbGwgc2V0IGFuIGFk
dmFuY2UgaW5zdGVhZCBvZiBhIGRlbGF5LgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fU1lO
Q19ERUxBWV9QSVhFTFMgNzkgLyogUlctICovCisKKy8qCisgKiBOVl9DVFJMX0dWT19TWU5DX0RF
TEFZX0xJTkVTIC0gY29udHJvbHMgdGhlIGRlbGF5IGJldHdlZW4gdGhlIGlucHV0CisgKiBzeW5j
IGFuZCB0aGUgb3V0cHV0IHN5bmMgaW4gbnVtYmVycyBvZiBsaW5lcyBmcm9tIHZzeW5jOyB0aGlz
IGlzIGEKKyAqIDEyIGJpdCB2YWx1ZS4KKyAqCisgKiBJZiB0aGUgTlZfQ1RSTF9HVk9fQ0FQQUJJ
TElUSUVTX0FEVkFOQ0VfU1lOQ19TS0VXIGJpdCBpcyBzZXQsCisgKiB0aGVuIHNldHRpbmcgdGhp
cyB2YWx1ZSB3aWxsIHNldCBhbiBhZHZhbmNlIGluc3RlYWQgb2YgYSBkZWxheS4KKyAqLworCisj
ZGVmaW5lIE5WX0NUUkxfR1ZPX1NZTkNfREVMQVlfTElORVMgODAgLyogUlctICovCisKKy8qCisg
KiBOVl9DVFJMX0dWT19JTlBVVF9WSURFT19GT1JNQVRfUkVBQ1FVSVJFIC0gbXVzdCBiZSBzZXQg
Zm9yIGEgcGVyaW9kCisgKiBvZiBhYm91dCAyIHNlY29uZHMgZm9yIHRoZSBuZXcgSW5wdXRWaWRl
b0Zvcm1hdCB0byBiZSBwcm9wZXJseQorICogbG9ja2VkIHRvLiAgSW4gbnZpZGlhLXNldHRpbmdz
LCB3ZSBkbyBhIHJlYWNxdWlyZSB3aGVuZXZlciBnZW5sb2NrCisgKiBvciBmcmFtZSBsb2NrIG1v
ZGUgaXMgZW50ZXJlZCBpbnRvLCB3aGVuIHRoZSB1c2VyIGNsaWNrcyB0aGUKKyAqICJkZXRlY3Qi
IGJ1dHRvbi4gIFRoaXMgdmFsdWUgY2FuIGJlIHdyaXR0ZW4sIGJ1dCBhbHdheXMgcmVhZHMgYmFj
aworICogX0ZBTFNFLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fSU5QVVRfVklERU9fRk9S
TUFUX1JFQUNRVUlSRSA4MSAvKiAtVy0gKi8KKyNkZWZpbmUgTlZfQ1RSTF9HVk9fSU5QVVRfVklE
RU9fRk9STUFUX1JFQUNRVUlSRV9GQUxTRSAwCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0lOUFVUX1ZJ
REVPX0ZPUk1BVF9SRUFDUVVJUkVfVFJVRSAxCisKKy8qCisgKiBOVl9DVFJMX0dWT19HTFhfTE9D
S0VEIC0gaW5kaWNhdGVzIHRoYXQgR1ZPIGNvbmZpZ3VyYWJpbGl0eSBpcworICogbG9ja2VkIGJ5
IEdMWDsgdGhpcyBvY2N1cnMgd2hlbiBlaXRoZXIgZ2xYR2V0VmlkZW9EZXZpY2VOViAocGFydCBv
ZgorICogR0xYX05WX3ZpZGVvX291dCkgb3IgZ2xYQmluZFZpZGVvRGV2aWNlTlYgKHBhcnQgb2YK
KyAqIEdMWF9OVl9wcmVzZW50X3ZpZGVvKSBpcyBjYWxsZWQuICBBbGwgR1ZPIG91dHB1dCByZXNv
dXJjZXMgYXJlCisgKiBsb2NrZWQgdW50aWwgcmVsZWFzZWQgYnkgdGhlIEdMWF9OVl92aWRlb19v
dXQvR0xYX05WX3ByZXNlbnRfdmlkZW8KKyAqIGNsaWVudC4KKyAqCisgKiBXaGVuIEdWTyBpcyBs
b2NrZWQsIHNldHRpbmcgb2YgdGhlIGZvbGxvd2luZyBHVk8gTlYtQ09OVFJPTCBhdHRyaWJ1dGVz
IHdpbGwKKyAqIG5vdCBoYXBwZW4gaW1tZWRpYXRlbHkgYW5kIHdpbGwgaW5zdGVhZCBiZSBjYWNo
ZWQuICBUaGUgR1ZPIHJlc291cmNlIHdpbGwKKyAqIG5lZWQgdG8gYmUgZGlzYWJsZWQvcmVsZWFz
ZWQgYW5kIHJlLWVuYWJsZWQvY2xhaW1lZCBmb3IgdGhlIHZhbHVlcyB0byBiZQorICogZmx1c2hl
ZC4gVGhlc2UgYXR0cmlidXRlcyBhcmU6CisgKiAgICBOVl9DVFJMX0dWSU9fUkVRVUVTVEVEX1ZJ
REVPX0ZPUk1BVAorICogICAgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVQKKyAqICAgIE5WX0NUUkxf
R1ZPX0ZMSVBfUVVFVUVfU0laRQorICoKKyAqIFRoaXMgYXR0cmlidXRlIGlzIGRlcHJlY2F0ZWQg
YW5kIG1heSBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuICBJdHMKKyAqIGZ1bmN0aW9u
YWxpdHkgaGFzIGJlZW4gcmVwbGFjZWQgYnkgTlZfQ1RSTF9HVk9fTE9DS19PV05FUi4KKyAqLwor
CisjZGVmaW5lIE5WX0NUUkxfR1ZPX0dMWF9MT0NLRUQgODIgLyogUi0tICovCisjZGVmaW5lIE5W
X0NUUkxfR1ZPX0dMWF9MT0NLRURfRkFMU0UgMAorI2RlZmluZSBOVl9DVFJMX0dWT19HTFhfTE9D
S0VEX1RSVUUgMQorCisvKgorICogTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF97V0lEVEgsSEVJ
R0hULFJFRlJFU0hfUkFURX0gLSBxdWVyeSB0aGUKKyAqIHdpZHRoLCBoZWlnaHQsIGFuZCByZWZy
ZXNoIHJhdGUgZm9yIHRoZSBzcGVjaWZpZWQKKyAqIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRf
Ki4gIFNvIHRoYXQgdGhpcyBjYW4gYmUgcXVlcmllZCB3aXRoCisgKiBleGlzdGluZyBpbnRlcmZh
Y2VzLCBYTlZDVFJMUXVlcnlBdHRyaWJ1dGUoKSBzaG91bGQgYmUgdXNlZCwgYW5kCisgKiB0aGUg
dmlkZW8gZm9ybWF0IHNwZWNpZmllZCBpbiB0aGUgZGlzcGxheV9tYXNrIGZpZWxkOyBlZzoKKyAq
CisgKiBYTlZDVFJMUXVlcnlBdHRyaWJ1dGUgKGRweSwKKyAqICAgICAgICAgICAgICAgICAgICAg
ICAgc2NyZWVuLAorICogICAgICAgICAgICAgICAgICAgICAgICBOVl9DVFJMX0dWSU9fVklERU9f
Rk9STUFUXzQ4N0lfNTlfOTRfU01QVEUyNTlfTlRTQywKKyAqICAgICAgICAgICAgICAgICAgICAg
ICAgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF9XSURUSCwKKyAqICAgICAgICAgICAgICAgICAg
ICAgICAgJnZhbHVlKTsKKyAqCisgKiBOb3RlIHRoYXQgUmVmcmVzaCBSYXRlIGlzIGluIG1pbGxp
SGVydHogdmFsdWVzCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUX1dJ
RFRIIDgzICAgICAgICAvKiBSLS1JICovCisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JN
QVRfSEVJR0hUIDg0ICAgICAgIC8qIFItLUkgKi8KKyNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVP
X0ZPUk1BVF9SRUZSRVNIX1JBVEUgODUgLyogUi0tSSAqLworCisvKiBUaGUgZm9sbG93aW5nIGFy
ZSBkZXByZWNhdGVkOyB1c2UgdGhlIE5WX0NUUkxfR1ZJT18qIHZlcnNpb25zLCBpbnN0ZWFkICov
CisjZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF9XSURUSCA4MyAgICAgICAgLyogUi0t
ICovCisjZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF9IRUlHSFQgODQgICAgICAgLyog
Ui0tICovCisjZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF9SRUZSRVNIX1JBVEUgODUg
LyogUi0tICovCisKKy8qCisgKiBOVl9DVFJMX0dWT19YX1NDUkVFTl9QQU5fW1hZXSAtIG5vIGxv
bmdlciBzdXBwb3J0ZWQKKyAqLworCisjZGVmaW5lIE5WX0NUUkxfR1ZPX1hfU0NSRUVOX1BBTl9Y
IDg2IC8qIFJXLSAqLworI2RlZmluZSBOVl9DVFJMX0dWT19YX1NDUkVFTl9QQU5fWSA4NyAvKiBS
Vy0gKi8KKworLyoKKyAqIE5WX0NUUkxfR1BVX09WRVJDTE9DS0lOR19TVEFURSAtIHF1ZXJ5IHRo
ZSBjdXJyZW50IG9yIHNldCBhIG5ldworICogb3ZlcmNsb2NraW5nIHN0YXRlOyB0aGUgdmFsdWUg
b2YgdGhpcyBhdHRyaWJ1dGUgY29udHJvbHMgdGhlCisgKiBhdmFpbGFiaWxpdHkgb2YgYWRkaXRp
b25hbCBvdmVyY2xvY2tpbmcgYXR0cmlidXRlcyAoc2VlIGJlbG93KS4KKyAqCisgKiBOb3RlOiB0
aGlzIGF0dHJpYnV0ZSBpcyB1bmF2YWlsYWJsZSB1bmxlc3Mgb3ZlcmNsb2NraW5nIHN1cHBvcnQK
KyAqIGhhcyBiZWVuIGVuYWJsZWQgaW4gdGhlIFggc2VydmVyIChieSB0aGUgdXNlcikuCisgKi8K
KworI2RlZmluZSBOVl9DVFJMX0dQVV9PVkVSQ0xPQ0tJTkdfU1RBVEUgODggLyogUlctRyAqLwor
I2RlZmluZSBOVl9DVFJMX0dQVV9PVkVSQ0xPQ0tJTkdfU1RBVEVfTk9ORSAwCisjZGVmaW5lIE5W
X0NUUkxfR1BVX09WRVJDTE9DS0lOR19TVEFURV9NQU5VQUwgMQorCisvKgorICogTlZfQ1RSTF9H
UFVfezIsM31EX0NMT0NLX0ZSRVFTIC0gcXVlcnkgb3Igc2V0IHRoZSBHUFUgYW5kIG1lbW9yeQor
ICogY2xvY2tzIG9mIHRoZSBkZXZpY2UgZHJpdmluZyB0aGUgWCBzY3JlZW4uICBOZXcgY2xvY2sg
ZnJlcXVlbmNpZXMKKyAqIGFyZSB0ZXN0ZWQgYmVmb3JlIGJlaW5nIGFwcGxpZWQsIGFuZCBtYXkg
YmUgcmVqZWN0ZWQuCisgKgorICogTm90ZTogaWYgdGhlIHRhcmdldCBjbG9ja3MgYXJlIHRvbyBh
Z2dyZXNzaXZlLCB0aGVpciB0ZXN0aW5nIG1heQorICogcmVuZGVyIHRoZSBzeXN0ZW0gdW5yZXNw
b25zaXZlLgorICoKKyAqIE5vdGU6IHdoaWxlIHRoaXMgYXR0cmlidXRlIGNhbiBhbHdheXMgYmUg
cXVlcmllZCwgaXQgY2FuJ3QgYmUgc2V0CisgKiB1bmxlc3MgTlZfQ1RSTF9HUFVfT1ZFUkNMT0NL
SU5HX1NUQVRFIGlzIHNldCB0byBfTUFOVUFMLiAgU2luY2UKKyAqIHRoZSB0YXJnZXQgY2xvY2tz
IG1heSBiZSByZWplY3RlZCwgdGhlIHJlcXVlc3RlciBzaG91bGQgcmVhZCB0aGlzCisgKiBhdHRy
aWJ1dGUgYWZ0ZXIgdGhlIHNldCB0byBkZXRlcm1pbmUgc3VjY2VzcyBvciBmYWlsdXJlLgorICoK
KyAqIE5WX0NUUkxfR1BVX3syLDN9RF9DTE9DS19GUkVRUyBhcmUgInBhY2tlZCIgaW50ZWdlciBh
dHRyaWJ1dGVzOyB0aGUKKyAqIEdQVSBjbG9jayBpcyBzdG9yZWQgaW4gdGhlIHVwcGVyIDE2IGJp
dHMgb2YgdGhlIGludGVnZXIsIGFuZCB0aGUKKyAqIG1lbW9yeSBjbG9jayBpcyBzdG9yZWQgaW4g
dGhlIGxvd2VyIDE2IGJpdHMgb2YgdGhlIGludGVnZXIuICBBbGwKKyAqIGNsb2NrIHZhbHVlcyBh
cmUgaW4gTUh6LgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HUFVfMkRfQ0xPQ0tfRlJFUVMgODkg
LyogUlctRyAqLworI2RlZmluZSBOVl9DVFJMX0dQVV8zRF9DTE9DS19GUkVRUyA5MCAvKiBSVy1H
ICovCisKKy8qCisgKiBOVl9DVFJMX0dQVV9ERUZBVUxUX3syLDN9RF9DTE9DS19GUkVRUyAtIHF1
ZXJ5IHRoZSBkZWZhdWx0IG1lbW9yeQorICogYW5kIEdQVSBjb3JlIGNsb2NrcyBvZiB0aGUgZGV2
aWNlIGRyaXZpbmcgdGhlIFggc2NyZWVuLgorICoKKyAqIE5WX0NUUkxfR1BVX0RFRkFVTFRfezIs
M31EX0NMT0NLX0ZSRVFTIGFyZSAicGFja2VkIiBpbnRlZ2VyCisgKiBhdHRyaWJ1dGVzOyB0aGUg
R1BVIGNsb2NrIGlzIHN0b3JlZCBpbiB0aGUgdXBwZXIgMTYgYml0cyBvZiB0aGUKKyAqIGludGVn
ZXIsIGFuZCB0aGUgbWVtb3J5IGNsb2NrIGlzIHN0b3JlZCBpbiB0aGUgbG93ZXIgMTYgYml0cyBv
ZiB0aGUKKyAqIGludGVnZXIuICBBbGwgY2xvY2sgdmFsdWVzIGFyZSBpbiBNSHouCisgKi8KKwor
I2RlZmluZSBOVl9DVFJMX0dQVV9ERUZBVUxUXzJEX0NMT0NLX0ZSRVFTIDkxIC8qIFItLUcgKi8K
KyNkZWZpbmUgTlZfQ1RSTF9HUFVfREVGQVVMVF8zRF9DTE9DS19GUkVRUyA5MiAvKiBSLS1HICov
CisKKy8qCisgKiBOVl9DVFJMX0dQVV9DVVJSRU5UX0NMT0NLX0ZSRVFTIC0gcXVlcnkgdGhlIGN1
cnJlbnQgR1BVIGFuZCBtZW1vcnkKKyAqIGNsb2NrcyBvZiB0aGUgZ3JhcGhpY3MgZGV2aWNlIGRy
aXZpbmcgdGhlIFggc2NyZWVuLgorICoKKyAqIE5WX0NUUkxfR1BVX0NVUlJFTlRfQ0xPQ0tfRlJF
UVMgaXMgYSAicGFja2VkIiBpbnRlZ2VyIGF0dHJpYnV0ZTsKKyAqIHRoZSBHUFUgY2xvY2sgaXMg
c3RvcmVkIGluIHRoZSB1cHBlciAxNiBiaXRzIG9mIHRoZSBpbnRlZ2VyLCBhbmQKKyAqIHRoZSBt
ZW1vcnkgY2xvY2sgaXMgc3RvcmVkIGluIHRoZSBsb3dlciAxNiBiaXRzIG9mIHRoZSBpbnRlZ2Vy
LgorICogQWxsIGNsb2NrIHZhbHVlcyBhcmUgaW4gTUh6LiAgQWxsIGNsb2NrIHZhbHVlcyBhcmUg
aW4gTUh6LgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HUFVfQ1VSUkVOVF9DTE9DS19GUkVRUyA5
MyAvKiBSLS1HICovCisKKy8qCisgKiBOVl9DVFJMX0dQVV9PUFRJTUFMX0NMT0NLX0ZSRVFTIC0g
SG9sZHMgdGhlIGxhc3QgY2FsY3VsYXRlZAorICogb3B0aW1hbCAzRCBjbG9jayBmcmVxdWVuY2ll
cyBmb3VuZCBieSB0aGUKKyAqIE5WX0NUUkxfR1BVX09QVElNQUxfQ0xPQ0tfRlJFUVNfREVURUNU
SU9OIHByb2Nlc3MuICBRdWVyeWluZyB0aGlzCisgKiBhdHRyaWJ1dGUgYmVmb3JlIGhhdmluZyBw
cm9iZWQgZm9yIHRoZSBvcHRpbWFsIGNsb2NrcyB3aWxsIHJldHVybgorICogTlZfQ1RSTF9HUFVf
T1BUSU1BTF9DTE9DS19GUkVRU19JTlZBTElECisgKgorICogTm90ZTogdW5sZXNzIE5WX0NUUkxf
R1BVX09WRVJDTE9DS0lOR19TVEFURSBpcyBzZXQgdG8gX01BTlVBTCwgdGhlCisgKiBvcHRpbWFs
IGNsb2NrIGRldGVjdGlvbiBwcm9jZXNzIGlzIHVuYXZhaWxhYmxlLgorICovCisKKyNkZWZpbmUg
TlZfQ1RSTF9HUFVfT1BUSU1BTF9DTE9DS19GUkVRUyA5NCAvKiBSLS1HICovCisjZGVmaW5lIE5W
X0NUUkxfR1BVX09QVElNQUxfQ0xPQ0tfRlJFUVNfSU5WQUxJRCAwCisKKy8qCisgKiBOVl9DVFJM
X0dQVV9PUFRJTUFMX0NMT0NLX0ZSRVFTX0RFVEVDVElPTiAtIHNldCB0byBfU1RBUlQgdG8KKyAq
IGluaXRpYXRlIHRlc3RpbmcgZm9yIHRoZSBvcHRpbWFsIDNEIGNsb2NrIGZyZXF1ZW5jaWVzLiAg
T25jZQorICogZm91bmQsIHRoZSBvcHRpbWFsIGNsb2NrIGZyZXF1ZW5jaWVzIHdpbGwgYmUgcmV0
dXJuZWQgYnkgdGhlCisgKiBOVl9DVFJMX0dQVV9PUFRJTUFMX0NMT0NLX0ZSRVFTIGF0dHJpYnV0
ZSBhc3luY2hyb25vdXNseQorICogKHVzaW5nIGFuIFggZXZlbnQsIHNlZSBYTlZDdHJsU2VsZWN0
Tm90aWZ5KS4KKyAqCisgKiBUbyBjYW5jZWwgYW4gb25nb2luZyB0ZXN0IGZvciB0aGUgb3B0aW1h
bCBjbG9ja3MsIHNldCB0aGUKKyAqIE5WX0NUUkxfR1BVX09QVElNQUxfQ0xPQ0tfRlJFUVNfREVU
RUNUSU9OIGF0dHJpYnV0ZSB0byBfQ0FOQ0VMCisgKgorICogTm90ZTogdW5sZXNzIE5WX0NUUkxf
R1BVX09WRVJDTE9DS0lOR19TVEFURSBpcyBzZXQgdG8gX01BTlVBTCwgdGhlCisgKiBvcHRpbWFs
IGNsb2NrIGRldGVjdGlvbiBwcm9jZXNzIGlzIHVuYXZhaWxhYmxlLgorICovCisKKyNkZWZpbmUg
TlZfQ1RSTF9HUFVfT1BUSU1BTF9DTE9DS19GUkVRU19ERVRFQ1RJT04gOTUgLyogLVctRyAqLwor
I2RlZmluZSBOVl9DVFJMX0dQVV9PUFRJTUFMX0NMT0NLX0ZSRVFTX0RFVEVDVElPTl9TVEFSVCAw
CisjZGVmaW5lIE5WX0NUUkxfR1BVX09QVElNQUxfQ0xPQ0tfRlJFUVNfREVURUNUSU9OX0NBTkNF
TCAxCisKKy8qCisgKiBOVl9DVFJMX0dQVV9PUFRJTUFMX0NMT0NLX0ZSRVFTX0RFVEVDVElPTl9T
VEFURSAtIHF1ZXJ5IHRoaXMKKyAqIHZhcmlhYmxlIHRvIGtub3cgaWYgYSB0ZXN0IGlzIGN1cnJl
bnRseSBiZWluZyBydW4gdG8KKyAqIGRldGVybWluZSB0aGUgb3B0aW1hbCAzRCBjbG9jayBmcmVx
dWVuY2llcy4gIF9CVVNZIG1lYW5zIGEKKyAqIHRlc3QgaXMgY3VycmVudGx5IHJ1bm5pbmcsIF9J
RExFIG1lYW5zIHRoZSB0ZXN0IGlzIG5vdCBydW5uaW5nLgorICoKKyAqIE5vdGU6IHVubGVzcyBO
Vl9DVFJMX0dQVV9PVkVSQ0xPQ0tJTkdfU1RBVEUgaXMgc2V0IHRvIF9NQU5VQUwsIHRoZQorICog
b3B0aW1hbCBjbG9jayBkZXRlY3Rpb24gcHJvY2VzcyBpcyB1bmF2YWlsYWJsZS4KKyAqLworCisj
ZGVmaW5lIE5WX0NUUkxfR1BVX09QVElNQUxfQ0xPQ0tfRlJFUVNfREVURUNUSU9OX1NUQVRFIDk2
IC8qIFItLUcgKi8KKyNkZWZpbmUgTlZfQ1RSTF9HUFVfT1BUSU1BTF9DTE9DS19GUkVRU19ERVRF
Q1RJT05fU1RBVEVfSURMRSAwCisjZGVmaW5lIE5WX0NUUkxfR1BVX09QVElNQUxfQ0xPQ0tfRlJF
UVNfREVURUNUSU9OX1NUQVRFX0JVU1kgMQorCisvKgorICogTlZfQ1RSTF9GTEFUUEFORUxfQ0hJ
UF9MT0NBVElPTiAtIGZvciB0aGUgc3BlY2lmaWVkIGRpc3BsYXkgZGV2aWNlLAorICogcmVwb3J0
IHdoZXRoZXIgdGhlIGZsYXQgcGFuZWwgaXMgZHJpdmVuIGJ5IHRoZSBvbi1jaGlwIGNvbnRyb2xs
ZXIsCisgKiBvciBhIHNlcGFyYXRlIGNvbnRyb2xsZXIgY2hpcCBlbHNld2hlcmUgb24gdGhlIGdy
YXBoaWNzIGJvYXJkLgorICogVGhpcyBhdHRyaWJ1dGUgaXMgb25seSBhdmFpbGFibGUgZm9yIGZs
YXQgcGFuZWxzLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9GTEFUUEFORUxfQ0hJUF9MT0NBVElP
TiAyMTUgLyogUi1ERyAqLworI2RlZmluZSBOVl9DVFJMX0ZMQVRQQU5FTF9DSElQX0xPQ0FUSU9O
X0lOVEVSTkFMIDAKKyNkZWZpbmUgTlZfQ1RSTF9GTEFUUEFORUxfQ0hJUF9MT0NBVElPTl9FWFRF
Uk5BTCAxCisKKy8qCisgKiBOVl9DVFJMX0ZMQVRQQU5FTF9MSU5LIC0gcmVwb3J0IHRoZSBudW1i
ZXIgb2YgbGlua3MgZm9yIGEgRFZJIGNvbm5lY3Rpb24sIG9yCisgKiB0aGUgbWFpbiBsaW5rJ3Mg
YWN0aXZlIGxhbmUgY291bnQgZm9yIERpc3BsYXlQb3J0LgorICogVGhpcyBhdHRyaWJ1dGUgaXMg
b25seSBhdmFpbGFibGUgZm9yIGZsYXQgcGFuZWxzLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9G
TEFUUEFORUxfTElOSyAyMTYgLyogUi1ERyAqLworI2RlZmluZSBOVl9DVFJMX0ZMQVRQQU5FTF9M
SU5LX1NJTkdMRSAwCisjZGVmaW5lIE5WX0NUUkxfRkxBVFBBTkVMX0xJTktfRFVBTCAxCisjZGVm
aW5lIE5WX0NUUkxfRkxBVFBBTkVMX0xJTktfUVVBRCAzCisKKy8qCisgKiBOVl9DVFJMX0ZMQVRQ
QU5FTF9TSUdOQUwgLSBmb3IgdGhlIHNwZWNpZmllZCBkaXNwbGF5IGRldmljZSwgcmVwb3J0Cisg
KiB3aGV0aGVyIHRoZSBmbGF0IHBhbmVsIGlzIGRyaXZlbiBieSBhbiBMVkRTLCBUTURTLCBvciBE
aXNwbGF5UG9ydCBzaWduYWwuCisgKiBUaGlzIGF0dHJpYnV0ZSBpcyBvbmx5IGF2YWlsYWJsZSBm
b3IgZmxhdCBwYW5lbHMuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0ZMQVRQQU5FTF9TSUdOQUwg
MjE3IC8qIFItREcgKi8KKyNkZWZpbmUgTlZfQ1RSTF9GTEFUUEFORUxfU0lHTkFMX0xWRFMgMAor
I2RlZmluZSBOVl9DVFJMX0ZMQVRQQU5FTF9TSUdOQUxfVE1EUyAxCisjZGVmaW5lIE5WX0NUUkxf
RkxBVFBBTkVMX1NJR05BTF9ESVNQTEFZUE9SVCAyCisKKy8qCisgKiBOVl9DVFJMX1VTRV9IT1VT
RV9TWU5DIC0gd2hlbiBUUlVFLCB0aGUgc2VydmVyIChtYXN0ZXIpIGZyYW1lIGxvY2sKKyAqIGRl
dmljZSB3aWxsIHByb3BhZ2F0ZSB0aGUgaW5jb21pbmcgaG91c2Ugc3luYyBzaWduYWwgYXMgdGhl
IG91dGdvaW5nCisgKiBmcmFtZSBsb2NrIHN5bmMgc2lnbmFsLiAgSWYgdGhlIGZyYW1lIGxvY2sg
ZGV2aWNlIGNhbm5vdCBkZXRlY3QgYQorICogZnJhbWUgbG9jayBzeW5jIHNpZ25hbCwgaXQgd2ls
bCBkZWZhdWx0IHRvIHVzaW5nIHRoZSBpbnRlcm5hbCB0aW1pbmdzCisgKiBmcm9tIHRoZSBHUFUg
Y29ubmVjdGVkIHRvIHRoZSBwcmltYXJ5IGNvbm5lY3Rvci4KKyAqCisgKiBUaGlzIGF0dHJpYnV0
ZSBtYXkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpCisg
KiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfRlJBTUVMT0NLIG9yIE5WX0NUUkxfVEFSR0VU
X1RZUEVfWF9TQ1JFRU4KKyAqIHRhcmdldC4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfVVNFX0hP
VVNFX1NZTkMgMjE4IC8qIFJXLUYgKi8KKyNkZWZpbmUgTlZfQ1RSTF9VU0VfSE9VU0VfU1lOQ19G
QUxTRSAwCisjZGVmaW5lIE5WX0NUUkxfVVNFX0hPVVNFX1NZTkNfVFJVRSAxCisKKy8qCisgKiBO
Vl9DVFJMX0VESURfQVZBSUxBQkxFIC0gcmVwb3J0IGlmIGFuIEVESUQgaXMgYXZhaWxhYmxlIGZv
ciB0aGUKKyAqIHNwZWNpZmllZCBkaXNwbGF5IGRldmljZS4KKyAqCisgKiBUaGlzIGF0dHJpYnV0
ZSBtYXkgYWxzbyBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRl
KCkKKyAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9HUFUgb3IgTlZfQ1RSTF9UQVJHRVRf
VFlQRV9YX1NDUkVFTgorICogdGFyZ2V0LgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9FRElEX0FW
QUlMQUJMRSAyMTkgLyogUi1ERyAqLworI2RlZmluZSBOVl9DVFJMX0VESURfQVZBSUxBQkxFX0ZB
TFNFIDAKKyNkZWZpbmUgTlZfQ1RSTF9FRElEX0FWQUlMQUJMRV9UUlVFIDEKKworLyoKKyAqIE5W
X0NUUkxfRk9SQ0VfU1RFUkVPIC0gd2hlbiBUUlVFLCBPcGVuR0wgd2lsbCBmb3JjZSBzdGVyZW8g
ZmxpcHBpbmcKKyAqIGV2ZW4gd2hlbiBubyBzdGVyZW8gZHJhd2FibGVzIGFyZSB2aXNpYmxlIChp
ZiB0aGUgZGV2aWNlIGlzIGNvbmZpZ3VyZWQKKyAqIHRvIHN1cHBvcnQgaXQsIHNlZSB0aGUgIlN0
ZXJlbyIgWCBjb25maWcgb3B0aW9uKS4KKyAqIFdoZW4gZmFsc2UsIGZhbGwgYmFjayB0byB0aGUg
ZGVmYXVsdCBiZWhhdmlvciBvZiBvbmx5IGZsaXBwaW5nIHdoZW4gYQorICogc3RlcmVvIGRyYXdh
YmxlIGlzIHZpc2libGUuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0ZPUkNFX1NURVJFTyAyMjAg
LyogUlctICovCisjZGVmaW5lIE5WX0NUUkxfRk9SQ0VfU1RFUkVPX0ZBTFNFIDAKKyNkZWZpbmUg
TlZfQ1RSTF9GT1JDRV9TVEVSRU9fVFJVRSAxCisKKy8qCisgKiBOVl9DVFJMX0lNQUdFX1NFVFRJ
TkdTIC0gdGhlIGltYWdlIHF1YWxpdHkgc2V0dGluZyBmb3IgT3BlbkdMIGNsaWVudHMuCisgKgor
ICogVGhpcyBzZXR0aW5nIGlzIG9ubHkgYXBwbGllZCB0byBPcGVuR0wgY2xpZW50cyB0aGF0IGFy
ZSBzdGFydGVkCisgKiBhZnRlciB0aGlzIHNldHRpbmcgaXMgYXBwbGllZC4KKyAqLworCisjZGVm
aW5lIE5WX0NUUkxfSU1BR0VfU0VUVElOR1MgMjIxIC8qIFJXLVggKi8KKyNkZWZpbmUgTlZfQ1RS
TF9JTUFHRV9TRVRUSU5HU19ISUdIX1FVQUxJVFkgMAorI2RlZmluZSBOVl9DVFJMX0lNQUdFX1NF
VFRJTkdTX1FVQUxJVFkgMQorI2RlZmluZSBOVl9DVFJMX0lNQUdFX1NFVFRJTkdTX1BFUkZPUk1B
TkNFIDIKKyNkZWZpbmUgTlZfQ1RSTF9JTUFHRV9TRVRUSU5HU19ISUdIX1BFUkZPUk1BTkNFIDMK
KworLyoKKyAqIE5WX0NUUkxfWElORVJBTUEgLSByZXR1cm4gd2hldGhlciB4aW5lcmFtYSBpcyBl
bmFibGVkCisgKi8KKworI2RlZmluZSBOVl9DVFJMX1hJTkVSQU1BIDIyMiAvKiBSLS1HICovCisj
ZGVmaW5lIE5WX0NUUkxfWElORVJBTUFfT0ZGIDAKKyNkZWZpbmUgTlZfQ1RSTF9YSU5FUkFNQV9P
TiAxCisKKy8qCisgKiBOVl9DVFJMX1hJTkVSQU1BX1NURVJFTyAtIHdoZW4gVFJVRSwgT3BlbkdM
IHdpbGwgYWxsb3cgc3RlcmVvIGZsaXBwaW5nCisgKiBvbiBtdWx0aXBsZSBYIHNjcmVlbnMgY29u
ZmlndXJlZCB3aXRoIFhpbmVyYW1hLgorICogV2hlbiBGQUxTRSwgZmxpcHBpbmcgaXMgYWxsb3dl
ZCBvbmx5IG9uIG9uZSBYIHNjcmVlbiBhdCBhIHRpbWUuCisgKi8KKworI2RlZmluZSBOVl9DVFJM
X1hJTkVSQU1BX1NURVJFTyAyMjMgLyogUlctICovCisjZGVmaW5lIE5WX0NUUkxfWElORVJBTUFf
U1RFUkVPX0ZBTFNFIDAKKyNkZWZpbmUgTlZfQ1RSTF9YSU5FUkFNQV9TVEVSRU9fVFJVRSAxCisK
Ky8qCisgKiBOVl9DVFJMX0JVU19SQVRFIC0gaWYgdGhlIGJ1cyB0eXBlIG9mIHRoZSBzcGVjaWZp
ZWQgZGV2aWNlIGlzIEFHUCwgdGhlbgorICogTlZfQ1RSTF9CVVNfUkFURSByZXR1cm5zIHRoZSBj
b25maWd1cmVkIEFHUCB0cmFuc2ZlciByYXRlLiAgSWYgdGhlIGJ1cyB0eXBlCisgKiBpcyBQQ0kg
RXhwcmVzcywgdGhlbiB0aGlzIGF0dHJpYnV0ZSByZXR1cm5zIHRoZSBtYXhpbXVtIGxpbmsgd2lk
dGguCisgKiBXaGVuIHRoaXMgYXR0cmlidXRlIGlzIHF1ZXJpZWQgb24gYW4gWCBzY3JlZW4gdGFy
Z2V0LCB0aGUgYnVzIHJhdGUgb2YgdGhlCisgKiBHUFUgZHJpdmluZyB0aGUgWCBzY3JlZW4gaXMg
cmV0dXJuZWQuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0JVU19SQVRFIDIyNCAvKiBSLS1HSSAq
LworCisvKgorICogTlZfQ1RSTF9HUFVfUENJRV9NQVhfTElOS19XSURUSCAtIHJldHVybnMgdGhl
IG1heGltdW0KKyAqIFBDSWUgbGluayB3aWR0aCwgaW4gbnVtYmVyIG9mIGxhbmVzLgorICovCisj
ZGVmaW5lIE5WX0NUUkxfR1BVX1BDSUVfTUFYX0xJTktfV0lEVEggTlZfQ1RSTF9CVVNfUkFURQor
CisvKgorICogTlZfQ1RSTF9TSE9XX1NMSV9IVUQgLSB3aGVuIFRSVUUsIE9wZW5HTCB3aWxsIGRy
YXcgaW5mb3JtYXRpb24gYWJvdXQgdGhlCisgKiBjdXJyZW50IFNMSSBtb2RlLgorICogUmVuYW1l
ZCB0aGlzIGF0dHJpYnV0ZSB0byBOVl9DVFJMX1NIT1dfU0xJX1ZJU1VBTF9JTkRJQ0FUT1IKKyAq
LworCisjZGVmaW5lIE5WX0NUUkxfU0hPV19TTElfSFVEIE5WX0NUUkxfU0hPV19TTElfVklTVUFM
X0lORElDQVRPUgorI2RlZmluZSBOVl9DVFJMX1NIT1dfU0xJX0hVRF9GQUxTRSBOVl9DVFJMX1NI
T1dfU0xJX1ZJU1VBTF9JTkRJQ0FUT1JfRkFMU0UKKyNkZWZpbmUgTlZfQ1RSTF9TSE9XX1NMSV9I
VURfVFJVRSBOVl9DVFJMX1NIT1dfU0xJX1ZJU1VBTF9JTkRJQ0FUT1JfVFJVRQorCisvKgorICog
TlZfQ1RSTF9TSE9XX1NMSV9WSVNVQUxfSU5ESUNBVE9SIC0gd2hlbiBUUlVFLCBPcGVuR0wgd2ls
bCBkcmF3IGluZm9ybWF0aW9uCisgKiBhYm91dCB0aGUgY3VycmVudCBTTEkgbW9kZS4KKyAqLwor
CisjZGVmaW5lIE5WX0NUUkxfU0hPV19TTElfVklTVUFMX0lORElDQVRPUiAyMjUgLyogUlctWCAq
LworI2RlZmluZSBOVl9DVFJMX1NIT1dfU0xJX1ZJU1VBTF9JTkRJQ0FUT1JfRkFMU0UgMAorI2Rl
ZmluZSBOVl9DVFJMX1NIT1dfU0xJX1ZJU1VBTF9JTkRJQ0FUT1JfVFJVRSAxCisKKy8qCisgKiBO
Vl9DVFJMX1hWX1NZTkNfVE9fRElTUExBWSAtIHRoaXMgY29udHJvbCBpcyB2YWxpZCB3aGVuIFR3
aW5WaWV3IGFuZAorICogWFZpZGVvIFN5bmMgVG8gVkJsYW5rIGFyZSBlbmFibGVkLgorICogSXQg
Y29udHJvbHMgd2hpY2ggZGlzcGxheSBkZXZpY2Ugd2lsbCBiZSBzeW5jaGVkIHRvLgorICovCisK
KyNkZWZpbmUgTlZfQ1RSTF9YVl9TWU5DX1RPX0RJU1BMQVkgMjI2IC8qIFJXLSAqLworCisvKgor
ICogTlZfQ1RSTF9HVklPX1JFUVVFU1RFRF9WSURFT19GT1JNQVQyIC0gdGhpcyBhdHRyaWJ1dGUg
aXMgb25seQorICogaW50ZW5kZWQgdG8gYmUgdXNlZCB0byBxdWVyeSB0aGUgVmFsaWRWYWx1ZXMg
Zm9yCisgKiBOVl9DVFJMX0dWSU9fUkVRVUVTVEVEX1ZJREVPX0ZPUk1BVCBmb3IgVklERU9fRk9S
TUFUIHZhbHVlcyBiZXR3ZWVuCisgKiAzMSBhbmQgNjMuICBTZWUgTlZfQ1RSTF9HVklPX1JFUVVF
U1RFRF9WSURFT19GT1JNQVQgZm9yIGRldGFpbHMuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0dW
SU9fUkVRVUVTVEVEX1ZJREVPX0ZPUk1BVDIgMjI3IC8qIC0tLUdJICovCisKKy8qCisgKiBUaGUg
Zm9sbG93aW5nIGlzIGRlcHJlY2F0ZWQ7IHVzZSBOVl9DVFJMX0dWSU9fUkVRVUVTVEVEX1ZJREVP
X0ZPUk1BVDIsCisgKiBpbnN0ZWFkCisgKi8KKyNkZWZpbmUgTlZfQ1RSTF9HVk9fT1VUUFVUX1ZJ
REVPX0ZPUk1BVDIgMjI3IC8qIC0tLSAqLworCisvKgorICogTlZfQ1RSTF9HVk9fT1ZFUlJJREVf
SFdfQ1NDIC0gT3ZlcnJpZGUgdGhlIFNESSBoYXJkd2FyZSdzIENvbG9yIFNwYWNlCisgKiBDb252
ZXJzaW9uIHdpdGggdGhlIHZhbHVlcyBjb250cm9sbGVkIHRocm91Z2gKKyAqIFhOVkNUUkxTZXRH
dm9Db2xvckNvbnZlcnNpb24oKSBhbmQgWE5WQ1RSTEdldEd2b0NvbG9yQ29udmVyc2lvbigpLiAg
SWYKKyAqIHRoaXMgYXR0cmlidXRlIGlzIEZBTFNFLCB0aGVuIHRoZSB2YWx1ZXMgc3BlY2lmaWVk
IHRocm91Z2gKKyAqIFhOVkNUUkxTZXRHdm9Db2xvckNvbnZlcnNpb24oKSBhcmUgaWdub3JlZC4K
KyAqLworCisjZGVmaW5lIE5WX0NUUkxfR1ZPX09WRVJSSURFX0hXX0NTQyAyMjggLyogUlctICov
CisjZGVmaW5lIE5WX0NUUkxfR1ZPX09WRVJSSURFX0hXX0NTQ19GQUxTRSAwCisjZGVmaW5lIE5W
X0NUUkxfR1ZPX09WRVJSSURFX0hXX0NTQ19UUlVFIDEKKworLyoKKyAqIE5WX0NUUkxfR1ZPX0NB
UEFCSUxJVElFUyAtIHRoaXMgcmVhZC1vbmx5IGF0dHJpYnV0ZSBkZXNjcmliZXMgR1ZPCisgKiBj
YXBhYmlsaXRpZXMgdGhhdCBkaWZmZXIgYmV0d2VlbiBOVklESUEgU0RJIHByb2R1Y3RzLiAgVGhp
cyB2YWx1ZQorICogaXMgYSBiaXRtYXNrIHdoZXJlIGVhY2ggYml0IGluZGljYXRlcyB3aGV0aGVy
IHRoYXQgY2FwYWJpbGl0eSBpcworICogYXZhaWxhYmxlLgorICoKKyAqIEFQUExZX0NTQ19JTU1F
RElBVEVMWSAtIHdoZXRoZXIgdGhlIENTQyBtYXRyaXgsIG9mZnNldCwgYW5kIHNjYWxlCisgKiBz
cGVjaWZpZWQgdGhyb3VnaCBYTlZDVFJMU2V0R3ZvQ29sb3JDb252ZXJzaW9uKCkgd2lsbCB0YWtl
IGFmZmVjdAorICogaW1tZWRpYXRlbHksIG9yIG9ubHkgYWZ0ZXIgU0RJIG91dHB1dCBpcyBkaXNh
YmxlZCBhbmQgZW5hYmxlZAorICogYWdhaW4uCisgKgorICogQVBQTFlfQ1NDX1RPX1hfU0NSRUVO
IC0gd2hldGhlciB0aGUgQ1NDIG1hdHJpeCwgb2Zmc2V0LCBhbmQgc2NhbGUKKyAqIHNwZWNpZmll
ZCB0aHJvdWdoIFhOVkNUUkxTZXRHdm9Db2xvckNvbnZlcnNpb24oKSB3aWxsIGFsc28gYXBwbHkK
KyAqIHRvIEdWTyBvdXRwdXQgb2YgYW4gWCBzY3JlZW4sIG9yIG9ubHkgdG8gT3BlbkdMIEdWTyBv
dXRwdXQsIGFzCisgKiBlbmFibGVkIHRocm91Z2ggdGhlIEdMWF9OVl92aWRlb19vdXQgZXh0ZW5z
aW9uLgorICoKKyAqIENPTVBPU0lURV9URVJNSU5BVElPTiAtIHdoZXRoZXIgdGhlIDc1IG9obSB0
ZXJtaW5hdGlvbiBvZiB0aGUKKyAqIFNESSBjb21wb3NpdGUgaW5wdXQgc2lnbmFsIGNhbiBiZSBw
cm9ncmFtbWVkIHRocm91Z2ggdGhlCisgKiBOVl9DVFJMX0dWT19DT01QT1NJVEVfVEVSTUlOQVRJ
T04gYXR0cmlidXRlLgorICoKKyAqIFNIQVJFRF9TWU5DX0JOQyAtIHdoZXRoZXIgdGhlIFNESSBk
ZXZpY2UgaGFzIGEgc2luZ2xlIEJOQworICogY29ubmVjdG9yIHVzZWQgZm9yIGJvdGggKFNESSAm
IENvbXBvc2l0ZSkgaW5jb21pbmcgc2lnbmFscy4KKyAqCisgKiBNVUxUSVJBVEVfU1lOQyAtIHdo
ZXRoZXIgdGhlIFNESSBkZXZpY2Ugc3VwcG9ydHMgc3luY2hyb25pemF0aW9uCisgKiBvZiBpbnB1
dCBhbmQgb3V0cHV0IHZpZGVvIG1vZGVzIHRoYXQgbWF0Y2ggaW4gYmVpbmcgb2RkIG9yIGV2ZW4K
KyAqIG1vZGVzIChpZSwgQUEuMDAgSHogbW9kZXMgY2FuIGJlIHN5bmNoZWQgdG8gb3RoZXIgQkIu
MDAgSHogbW9kZXMgYW5kCisgKiBBQS5YWCBIeiBjYW4gbWF0Y2ggdG8gQkIuWVkgSHogd2hlcmUg
LlhYIGFuZCAuWVkgYXJlIG5vdCAuMDApCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0dWT19DQVBB
QklMSVRJRVMgMjI5IC8qIFItLSAqLworI2RlZmluZSBOVl9DVFJMX0dWT19DQVBBQklMSVRJRVNf
QVBQTFlfQ1NDX0lNTUVESUFURUxZIDB4MDAwMDAwMDEKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fQ0FQ
QUJJTElUSUVTX0FQUExZX0NTQ19UT19YX1NDUkVFTiAweDAwMDAwMDAyCisjZGVmaW5lIE5WX0NU
UkxfR1ZPX0NBUEFCSUxJVElFU19DT01QT1NJVEVfVEVSTUlOQVRJT04gMHgwMDAwMDAwNAorI2Rl
ZmluZSBOVl9DVFJMX0dWT19DQVBBQklMSVRJRVNfU0hBUkVEX1NZTkNfQk5DIDB4MDAwMDAwMDgK
KyNkZWZpbmUgTlZfQ1RSTF9HVk9fQ0FQQUJJTElUSUVTX01VTFRJUkFURV9TWU5DIDB4MDAwMDAw
MTAKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fQ0FQQUJJTElUSUVTX0FEVkFOQ0VfU1lOQ19TS0VXIDB4
MDAwMDAwMjAKKworLyoKKyAqIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9URVJNSU5BVElPTiAtIGVu
YWJsZSBvciBkaXNhYmxlIDc1IG9obQorICogdGVybWluYXRpb24gb2YgdGhlIFNESSBjb21wb3Np
dGUgaW5wdXQgc2lnbmFsLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fQ09NUE9TSVRFX1RF
Uk1JTkFUSU9OIDIzMCAvKiBSVy0gKi8KKyNkZWZpbmUgTlZfQ1RSTF9HVk9fQ09NUE9TSVRFX1RF
Uk1JTkFUSU9OX0VOQUJMRSAxCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9URVJNSU5B
VElPTl9ESVNBQkxFIDAKKworLyoKKyAqIE5WX0NUUkxfQVNTT0NJQVRFRF9ESVNQTEFZX0RFVklD
RVMgLSBkaXNwbGF5IGRldmljZSBtYXNrIGluZGljYXRpbmcKKyAqIHdoaWNoIGRpc3BsYXkgZGV2
aWNlcyBhcmUgImFzc29jaWF0ZWQiIHdpdGggdGhlIHNwZWNpZmllZCBYIHNjcmVlbgorICogKGll
OiBhcmUgYXZhaWxhYmxlIHRvIHRoZSBYIHNjcmVlbiBmb3IgZGlzcGxheWluZyB0aGUgWCBzY3Jl
ZW4pLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9BU1NPQ0lBVEVEX0RJU1BMQVlfREVWSUNFUyAy
MzEgLyogUlctICovCisKKy8qCisgKiBOVl9DVFJMX0ZSQU1FTE9DS19TTEFWRVMgLSBnZXQvc2V0
IHdoZXRoZXIgdGhlIGRpc3BsYXkgZGV2aWNlKHMpCisgKiBnaXZlbiBzaG91bGQgbGlzdGVuIG9y
IGlnbm9yZSB0aGUgbWFzdGVyJ3Mgc3luYyBzaWduYWwuCisgKgorICogVGhpcyBhdHRyaWJ1dGUg
Y2FuIG9ubHkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgp
CisgKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfR1BVIHRhcmdldC4gIFRoaXMgYXR0cmli
dXRlIGNhbm5vdCBiZQorICogcXVlcmllZCB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9T
Q1JFRU4uCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19TTEFWRVMgMjMyIC8qIFJX
LUcgKi8KKworLyoKKyAqIE5WX0NUUkxfRlJBTUVMT0NLX01BU1RFUkFCTEUgLSBDYW4gYW55IG9m
IHRoZSBnaXZlbiBkaXNwbGF5IGRldmljZXMKKyAqIGJlIHNldCBhcyBtYXN0ZXIgb2YgdGhlIGZy
YW1lIGxvY2sgZ3JvdXAuICBSZXR1cm5zIGEgYml0bWFzayBvZiB0aGUKKyAqIGNvcnJlc3BvbmRp
bmcgZGlzcGxheSBkZXZpY2VzIHRoYXQgY2FuIGJlIHNldCBhcyBtYXN0ZXIuCisgKgorICogVGhp
cyBhdHRyaWJ1dGUgY2FuIG9ubHkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdl
dEF0dHJpYnV0ZSgpCisgKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfR1BVIHRhcmdldC4g
IFRoaXMgYXR0cmlidXRlIGNhbm5vdCBiZQorICogcXVlcmllZCB1c2luZyBhIE5WX0NUUkxfVEFS
R0VUX1RZUEVfWF9TQ1JFRU4uCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19NQVNU
RVJBQkxFIDIzMyAvKiBSLURHICovCisKKy8qCisgKiBOVl9DVFJMX1BST0JFX0RJU1BMQVlTIC0g
cmUtcHJvYmVzIHRoZSBoYXJkd2FyZSB0byBkZXRlY3Qgd2hhdAorICogZGlzcGxheSBkZXZpY2Vz
IGFyZSBjb25uZWN0ZWQgdG8gdGhlIEdQVSBvciBHUFUgZHJpdmluZyB0aGUKKyAqIHNwZWNpZmll
ZCBYIHNjcmVlbi4gIFJldHVybnMgYSBkaXNwbGF5IG1hc2suCisgKgorICogVGhpcyBhdHRyaWJ1
dGUgbWF5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUoKQor
ICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0dQVSBvciBOVl9DVFJMX1RBUkdFVF9UWVBF
X1hfU0NSRUVOIHRhcmdldC4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfUFJPQkVfRElTUExBWVMg
MjM0IC8qIFItLUcgKi8KKworLyoKKyAqIE5WX0NUUkxfUkVGUkVTSF9SQVRFIC0gUmV0dXJucyB0
aGUgcmVmcmVzaCByYXRlIG9mIHRoZSBzcGVjaWZpZWQKKyAqIGRpc3BsYXkgZGV2aWNlIGluIDEw
MCAqIEh6IChpZS4gdG8gZ2V0IHRoZSByZWZyZXNoIHJhdGUgaW4gSHosIGRpdmlkZQorICogdGhl
IHJldHVybmVkIHZhbHVlIGJ5IDEwMC4pCisgKgorICogVGhpcyBhdHRyaWJ1dGUgbWF5IGJlIHF1
ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUoKQorICogdXNpbmcgYSBO
Vl9DVFJMX1RBUkdFVF9UWVBFX0dQVSBvciBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOIHRh
cmdldC4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfUkVGUkVTSF9SQVRFIDIzNSAvKiBSLURHICov
CisKKy8qCisgKiBOVl9DVFJMX0dWT19GTElQX1FVRVVFX1NJWkUgLSBUaGUgR3JhcGhpY3MgdG8g
VmlkZW8gT3V0IGludGVyZmFjZQorICogZXhwb3NlZCB0aHJvdWdoIE5WLUNPTlRST0wgYW5kIHRo
ZSBHTFhfTlZfdmlkZW9fb3V0IGV4dGVuc2lvbiB1c2VzCisgKiBhbiBpbnRlcm5hbCBmbGlwIHF1
ZXVlIHdoZW4gcGJ1ZmZlcnMgYXJlIHNlbnQgdG8gdGhlIHZpZGVvIGRldmljZQorICogKHZpYSBn
bFhTZW5kUGJ1ZmZlclRvVmlkZW9OVigpKS4gIFRoZSBOVl9DVFJMX0dWT19GTElQX1FVRVVFX1NJ
WkUKKyAqIGNhbiBiZSB1c2VkIHRvIHF1ZXJ5IGFuZCBhc3NpZ24gdGhlIGZsaXAgcXVldWUgc2l6
ZS4gIFRoaXMKKyAqIGF0dHJpYnV0ZSBpcyBhcHBsaWVkIHRvIEdMWCB3aGVuIGdsWEdldFZpZGVv
RGV2aWNlTlYoKSBpcyBjYWxsZWQgYnkKKyAqIHRoZSBhcHBsaWNhdGlvbi4KKyAqLworCisjZGVm
aW5lIE5WX0NUUkxfR1ZPX0ZMSVBfUVVFVUVfU0laRSAyMzYgLyogUlctICovCisKKy8qCisgKiBO
Vl9DVFJMX0NVUlJFTlRfU0NBTkxJTkUgLSBxdWVyeSB0aGUgY3VycmVudCBzY2FubGluZSBmb3Ig
dGhlCisgKiBzcGVjaWZpZWQgZGlzcGxheSBkZXZpY2UuCisgKi8KKworI2RlZmluZSBOVl9DVFJM
X0NVUlJFTlRfU0NBTkxJTkUgMjM3IC8qIFItREcgKi8KKworLyoKKyAqIE5WX0NUUkxfSU5JVElB
TF9QSVhNQVBfUExBQ0VNRU5UIC0gQ29udHJvbHMgd2hlcmUgWCBwaXhtYXBzIGFyZSBpbml0aWFs
bHkKKyAqIGNyZWF0ZWQuCisgKgorICogTlZfQ1RSTF9JTklUSUFMX1BJWE1BUF9QTEFDRU1FTlRf
Rk9SQ0VfU1lTTUVNIGNhdXNlcyBwaXhtYXBzIHRvIHN0YXkgaW4KKyAqIHN5c3RlbSBtZW1vcnku
IFRoZXNlIHBpeG1hcHMgY2FuJ3QgYmUgYWNjZWxlcmF0ZWQgYnkgdGhlIE5WSURJQSBkcml2ZXI7
IHRoaXMKKyAqIHdpbGwgY2F1c2UgYmxhbmsgd2luZG93cyBpZiB1c2VkIHdpdGggYW4gT3BlbkdM
IGNvbXBvc2l0aW5nIG1hbmFnZXIuCisgKiBOVl9DVFJMX0lOSVRJQUxfUElYTUFQX1BMQUNFTUVO
VF9TWVNNRU0gY3JlYXRlcyBwaXhtYXBzIGluIHN5c3RlbSBtZW1vcnkKKyAqIGluaXRpYWxseSwg
YnV0IGFsbG93cyB0aGVtIHRvIG1pZ3JhdGUgdG8gdmlkZW8gbWVtb3J5LgorICogTlZfQ1RSTF9J
TklUSUFMX1BJWE1BUF9QTEFDRU1FTlRfVklETUVNIGNyZWF0ZXMgcGl4bWFwcyBpbiB2aWRlbyBt
ZW1vcnkKKyAqIHdoZW4gZW5vdWdoIHJlc291cmNlcyBhcmUgYXZhaWxhYmxlLgorICogTlZfQ1RS
TF9JTklUSUFMX1BJWE1BUF9QTEFDRU1FTlRfUkVTRVJWRUQgaXMgY3VycmVudGx5IHJlc2VydmVk
IGZvciBmdXR1cmUKKyAqIHVzZS4gIEJlaGF2aW9yIGlzIHVuZGVmaW5lZC4KKyAqIE5WX0NUUkxf
SU5JVElBTF9QSVhNQVBfUExBQ0VNRU5UX0dQVV9TWVNNRU0gY3JlYXRlcyBwaXhtYXBzIGluIEdQ
VSBhY2Nlc3NpYmxlCisgKiBzeXN0ZW0gbWVtb3J5IHdoZW4gZW5vdWdoIHJlc291cmNlcyBhcmUg
YXZhaWxhYmxlLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9JTklUSUFMX1BJWE1BUF9QTEFDRU1F
TlQgMjM4IC8qIFJXLSAqLworI2RlZmluZSBOVl9DVFJMX0lOSVRJQUxfUElYTUFQX1BMQUNFTUVO
VF9GT1JDRV9TWVNNRU0gMAorI2RlZmluZSBOVl9DVFJMX0lOSVRJQUxfUElYTUFQX1BMQUNFTUVO
VF9TWVNNRU0gMQorI2RlZmluZSBOVl9DVFJMX0lOSVRJQUxfUElYTUFQX1BMQUNFTUVOVF9WSURN
RU0gMgorI2RlZmluZSBOVl9DVFJMX0lOSVRJQUxfUElYTUFQX1BMQUNFTUVOVF9SRVNFUlZFRCAz
CisjZGVmaW5lIE5WX0NUUkxfSU5JVElBTF9QSVhNQVBfUExBQ0VNRU5UX0dQVV9TWVNNRU0gNAor
CisvKgorICogTlZfQ1RSTF9QQ0lfQlVTIC0gUmV0dXJucyB0aGUgUENJIGJ1cyBudW1iZXIgdGhl
IHNwZWNpZmllZCBkZXZpY2UgaXMgdXNpbmcuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX1BDSV9C
VVMgMjM5IC8qIFItLUdJICovCisKKy8qCisgKiBOVl9DVFJMX1BDSV9ERVZJQ0UgLSBSZXR1cm5z
IHRoZSBQQ0kgZGV2aWNlIG51bWJlciB0aGUgc3BlY2lmaWVkIGRldmljZSBpcworICogdXNpbmcu
CisgKi8KKworI2RlZmluZSBOVl9DVFJMX1BDSV9ERVZJQ0UgMjQwIC8qIFItLUdJICovCisKKy8q
CisgKiBOVl9DVFJMX1BDSV9GVU5DVElPTiAtIFJldHVybnMgdGhlIFBDSSBmdW5jdGlvbiBudW1i
ZXIgdGhlIHNwZWNpZmllZCBkZXZpY2UKKyAqIGlzIHVzaW5nLgorICovCisKKyNkZWZpbmUgTlZf
Q1RSTF9QQ0lfRlVOQ1RJT04gMjQxIC8qIFItLUdJICovCisKKy8qCisgKiBOVl9DVFJMX0ZSQU1F
TE9DS19GUEdBX1JFVklTSU9OIC0gUXVlcnlzIHRoZSBGUEdBIHJldmlzaW9uIG9mIHRoZQorICog
RnJhbWUgTG9jayBkZXZpY2UuCisgKgorICogVGhpcyBhdHRyaWJ1dGUgbXVzdCBiZSBxdWVyaWVk
IHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkKKyAqIHVzaW5nIGEgTlZfQ1RS
TF9UQVJHRVRfVFlQRV9GUkFNRUxPQ0sgdGFyZ2V0LgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9G
UkFNRUxPQ0tfRlBHQV9SRVZJU0lPTiAyNDIgLyogUi0tRiAqLworCisvKgorICogTlZfQ1RSTF9N
QVhfU0NSRUVOX3tXSURUSCxIRUlHSFR9IC0gdGhlIG1heGltdW0gYWxsb3dhYmxlIHNpemUsIGlu
CisgKiBwaXhlbHMsIG9mIGVpdGhlciB0aGUgc3BlY2lmaWVkIFggc2NyZWVuIChpZiB0aGUgdGFy
Z2V0X3R5cGUgb2YgdGhlCisgKiBxdWVyeSBpcyBhbiBYIHNjcmVlbiksIG9yIGFueSBYIHNjcmVl
biBvbiB0aGUgc3BlY2lmaWVkIEdQVSAoaWYgdGhlCisgKiB0YXJnZXRfdHlwZSBvZiB0aGUgcXVl
cnkgaXMgYSBHUFUpLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9NQVhfU0NSRUVOX1dJRFRIIDI0
MyAgLyogUi0tRyAqLworI2RlZmluZSBOVl9DVFJMX01BWF9TQ1JFRU5fSEVJR0hUIDI0NCAvKiBS
LS1HICovCisKKy8qCisgKiBOVl9DVFJMX01BWF9ESVNQTEFZUyAtIHRoZSBtYXhpbXVtIG51bWJl
ciBvZiBkaXNwbGF5IGRldmljZXMgdGhhdAorICogY2FuIGJlIGRyaXZlbiBzaW11bHRhbmVvdXNs
eSBvbiBhIEdQVSAoZS5nLiwgdGhhdCBjYW4gYmUgdXNlZCBpbiBhCisgKiBNZXRhTW9kZSBhdCBv
bmNlKS4gIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGluZGljYXRlIHRoZSBtYXhpbXVtCisgKiBu
dW1iZXIgb2YgYml0cyB0aGF0IGNhbiBiZSBzZXQgaW4gTlZfQ1RSTF9DT05ORUNURURfRElTUExB
WVMsCisgKiBiZWNhdXNlIG1vcmUgZGlzcGxheSBkZXZpY2VzIGNhbiBiZSBjb25uZWN0ZWQgdGhh
biBhcmUgYWN0aXZlbHkgaW4KKyAqIHVzZS4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfTUFYX0RJ
U1BMQVlTIDI0NSAvKiBSLS1HICovCisKKy8qCisgKiBOVl9DVFJMX0RZTkFNSUNfVFdJTlZJRVcg
LSBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBzY3JlZW4KKyAqIHN1cHBvcnRzIGR5bmFtaWMg
dHdpbnZpZXcuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0RZTkFNSUNfVFdJTlZJRVcgMjQ2IC8q
IFItLSAqLworCisvKgorICogTlZfQ1RSTF9NVUxUSUdQVV9ESVNQTEFZX09XTkVSIC0gUmV0dXJu
cyB0aGUgKE5WLUNPTlRST0wpIEdQVSBJRCBvZgorICogdGhlIEdQVSB0aGF0IGhhcyB0aGUgZGlz
cGxheSBkZXZpY2UocykgdXNlZCBmb3Igc2hvd2luZyB0aGUgWCBTY3JlZW4uCisgKi8KKworI2Rl
ZmluZSBOVl9DVFJMX01VTFRJR1BVX0RJU1BMQVlfT1dORVIgMjQ3IC8qIFItLSAqLworCisvKgor
ICogTlZfQ1RSTF9HUFVfU0NBTElORyAtIG5vdCBzdXBwb3J0ZWQKKyAqLworCisjZGVmaW5lIE5W
X0NUUkxfR1BVX1NDQUxJTkcgMjQ4IC8qIFJXREcgKi8KKworI2RlZmluZSBOVl9DVFJMX0dQVV9T
Q0FMSU5HX1RBUkdFVF9JTlZBTElEIDAKKyNkZWZpbmUgTlZfQ1RSTF9HUFVfU0NBTElOR19UQVJH
RVRfRkxBVFBBTkVMX0JFU1RfRklUIDEKKyNkZWZpbmUgTlZfQ1RSTF9HUFVfU0NBTElOR19UQVJH
RVRfRkxBVFBBTkVMX05BVElWRSAyCisKKyNkZWZpbmUgTlZfQ1RSTF9HUFVfU0NBTElOR19NRVRI
T0RfSU5WQUxJRCAwCisjZGVmaW5lIE5WX0NUUkxfR1BVX1NDQUxJTkdfTUVUSE9EX1NUUkVUQ0hF
RCAxCisjZGVmaW5lIE5WX0NUUkxfR1BVX1NDQUxJTkdfTUVUSE9EX0NFTlRFUkVEIDIKKyNkZWZp
bmUgTlZfQ1RSTF9HUFVfU0NBTElOR19NRVRIT0RfQVNQRUNUX1NDQUxFRCAzCisKKy8qCisgKiBO
Vl9DVFJMX0ZST05URU5EX1JFU09MVVRJT04gLSBub3Qgc3VwcG9ydGVkCisgKi8KKworI2RlZmlu
ZSBOVl9DVFJMX0ZST05URU5EX1JFU09MVVRJT04gMjQ5IC8qIFItREcgKi8KKworLyoKKyAqIE5W
X0NUUkxfQkFDS0VORF9SRVNPTFVUSU9OIC0gbm90IHN1cHBvcnRlZAorICovCisKKyNkZWZpbmUg
TlZfQ1RSTF9CQUNLRU5EX1JFU09MVVRJT04gMjUwIC8qIFItREcgKi8KKworLyoKKyAqIE5WX0NU
UkxfRkxBVFBBTkVMX05BVElWRV9SRVNPTFVUSU9OIC0gUmV0dXJucyB0aGUgZGltZW5zaW9ucyBv
ZiB0aGUKKyAqIG5hdGl2ZSByZXNvbHV0aW9uIG9mIHRoZSBmbGF0IHBhbmVsIGFzIGRldGVybWlu
ZWQgYnkgdGhlCisgKiBOVklESUEgWCBEcml2ZXIuCisgKgorICogVGhlIG5hdGl2ZSByZXNvbHV0
aW9uIGlzIHRoZSByZXNvbHV0aW9uIGF0IHdoaWNoIGEgZmxhdCBwYW5lbAorICogbXVzdCBkaXNw
bGF5IGFueSBpbWFnZS4gIEFsbCBvdGhlciByZXNvbHV0aW9ucyBtdXN0IGJlIHNjYWxlZCB0byB0
aGlzCisgKiByZXNvbHV0aW9uIHRocm91Z2ggR1BVIHNjYWxpbmcgb3IgdGhlIERGUCdzIG5hdGl2
ZSBzY2FsaW5nIGNhcGFiaWxpdGllcworICogaW4gb3JkZXIgdG8gYmUgZGlzcGxheWVkLgorICoK
KyAqIFRoaXMgYXR0cmlidXRlIGlzIG9ubHkgdmFsaWQgZm9yIGZsYXQgcGFuZWwgKERGUCkgZGlz
cGxheSBkZXZpY2VzLgorICoKKyAqIFRoaXMgYXR0cmlidXRlIGlzIGEgcGFja2VkIGludGVnZXI7
IHRoZSB3aWR0aCBpcyBwYWNrZWQgaW4gdGhlIHVwcGVyCisgKiAxNi1iaXRzIGFuZCB0aGUgaGVp
Z2h0IGlzIHBhY2tlZCBpbiB0aGUgbG93ZXIgMTYtYml0cy4KKyAqLworCisjZGVmaW5lIE5WX0NU
UkxfRkxBVFBBTkVMX05BVElWRV9SRVNPTFVUSU9OIDI1MSAvKiBSLURHICovCisKKy8qCisgKiBO
Vl9DVFJMX0ZMQVRQQU5FTF9CRVNUX0ZJVF9SRVNPTFVUSU9OIC0gbm90IHN1cHBvcnRlZAorICov
CisKKyNkZWZpbmUgTlZfQ1RSTF9GTEFUUEFORUxfQkVTVF9GSVRfUkVTT0xVVElPTiAyNTIgLyog
Ui1ERyAqLworCisvKgorICogTlZfQ1RSTF9HUFVfU0NBTElOR19BQ1RJVkUgLSBub3Qgc3VwcG9y
dGVkCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0dQVV9TQ0FMSU5HX0FDVElWRSAyNTMgLyogUi1E
RyAqLworCisvKgorICogTlZfQ1RSTF9ERlBfU0NBTElOR19BQ1RJVkUgLSBub3Qgc3VwcG9ydGVk
CisgKi8KKworI2RlZmluZSBOVl9DVFJMX0RGUF9TQ0FMSU5HX0FDVElWRSAyNTQgLyogUi1ERyAq
LworCisvKgorICogTlZfQ1RSTF9GU0FBX0FQUExJQ0FUSU9OX0VOSEFOQ0VEIC0gQ29udHJvbHMg
aG93IHRoZSBOVl9DVFJMX0ZTQUFfTU9ERQorICogaXMgYXBwbGllZCB3aGVuIE5WX0NUUkxfRlNB
QV9BUFBMSUNBVElPTl9DT05UUk9MTEVEIGlzIHNldCB0bworICogTlZfQ1RSTF9BUFBMSUNBVElP
Tl9DT05UUk9MTEVEX0RJU0FCTEVELiAgV2hlbgorICogTlZfQ1RSTF9GU0FBX0FQUExJQ0FUSU9O
X0VOSEFOQ0VEIGlzIF9ESVNBQkxFRCwgT3BlbkdMIGFwcGxpY2F0aW9ucyB3aWxsCisgKiBiZSBm
b3JjZWQgdG8gdXNlIHRoZSBGU0FBIG1vZGUgc3BlY2lmaWVkIGJ5IE5WX0NUUkxfRlNBQV9NT0RF
LiAgd2hlbiBzZXQKKyAqIHRvIF9FTkFCTEVELCBvbmx5IHRob3NlIGFwcGxpY2F0aW9ucyB0aGF0
IGhhdmUgc2VsZWN0ZWQgYSBtdWx0aXNhbXBsZQorICogRkJDb25maWcgd2lsbCBiZSBtYWRlIHRv
IHVzZSB0aGUgTlZfQ1RSTF9GU0FBX01PREUgc3BlY2lmaWVkLgorICoKKyAqIFRoaXMgYXR0cmli
dXRlIGlzIGlnbm9yZWQgd2hlbiBOVl9DVFJMX0ZTQUFfQVBQTElDQVRJT05fQ09OVFJPTExFRCBp
cworICogc2V0IHRvIE5WX0NUUkxfRlNBQV9BUFBMSUNBVElPTl9DT05UUk9MTEVEX0VOQUJMRUQu
CisgKi8KKworI2RlZmluZSBOVl9DVFJMX0ZTQUFfQVBQTElDQVRJT05fRU5IQU5DRUQgMjU1IC8q
IFJXLVggKi8KKyNkZWZpbmUgTlZfQ1RSTF9GU0FBX0FQUExJQ0FUSU9OX0VOSEFOQ0VEX0VOQUJM
RUQgMQorI2RlZmluZSBOVl9DVFJMX0ZTQUFfQVBQTElDQVRJT05fRU5IQU5DRURfRElTQUJMRUQg
MAorCisvKgorICogTlZfQ1RSTF9GUkFNRUxPQ0tfU1lOQ19SQVRFXzQgLSBUaGlzIGlzIHRoZSBy
ZWZyZXNoIHJhdGUgdGhhdCB0aGUKKyAqIGZyYW1lIGxvY2sgYm9hcmQgaXMgc2VuZGluZyB0byB0
aGUgR1BVIHdpdGggNCBkaWdpdHMgb2YgcHJlY2lzaW9uLgorICoKKyAqIFRoaXMgYXR0cmlidXRl
IG1heSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkKKyAq
IHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9GUkFNRUxPQ0suCisgKi8KKworI2RlZmluZSBO
Vl9DVFJMX0ZSQU1FTE9DS19TWU5DX1JBVEVfNCAyNTYgLyogUi0tRiAqLworCisvKgorICogTlZf
Q1RSTF9HVk9fTE9DS19PV05FUiAtIGluZGljYXRlcyB0aGF0IHRoZSBHVk8gZGV2aWNlIGlzIGF2
YWlsYWJsZQorICogb3IgaW4gdXNlIChieSBHTFggb3IgYW4gWCBzY3JlZW4pLgorICoKKyAqIFRo
ZSBHVk8gZGV2aWNlIGlzIGxvY2tlZCBieSBHTFggd2hlbiBlaXRoZXIgZ2xYR2V0VmlkZW9EZXZp
Y2VOVgorICogKHBhcnQgb2YgR0xYX05WX3ZpZGVvX291dCkgb3IgZ2xYQmluZFZpZGVvRGV2aWNl
TlYgKHBhcnQgb2YKKyAqIEdMWF9OVl9wcmVzZW50X3ZpZGVvKSBpcyBjYWxsZWQuICBBbGwgR1ZP
IG91dHB1dCByZXNvdXJjZXMgYXJlCisgKiBsb2NrZWQgdW50aWwgcmVsZWFzZWQgYnkgdGhlIEdM
WF9OVl92aWRlb19vdXQvR0xYX05WX3ByZXNlbnRfdmlkZW8KKyAqIGNsaWVudC4KKyAqCisgKiBU
aGUgR1ZPIGRldmljZSBpcyBsb2NrZWQvdW5sb2NrZWQgYnkgYW4gWCBzY3JlZW4sIHdoZW4gdGhl
IEdWTyBkZXZpY2UgaXMKKyAqIHVzZWQgaW4gYSBNZXRhTW9kZSBvbiBhbiBYIHNjcmVlbi4KKyAq
CisgKiBXaGVuIHRoZSBHVk8gZGV2aWNlIGlzIGxvY2tlZCwgc2V0dGluZyBvZiB0aGUgZm9sbG93
aW5nIEdWTyBOVi1DT05UUk9MCisgKiBhdHRyaWJ1dGVzIHdpbGwgbm90IGhhcHBlbiBpbW1lZGlh
dGVseSBhbmQgd2lsbCBpbnN0ZWFkIGJlIGNhY2hlZC4gIFRoZQorICogR1ZPIHJlc291cmNlIHdp
bGwgbmVlZCB0byBiZSBkaXNhYmxlZC9yZWxlYXNlZCBhbmQgcmUtZW5hYmxlZC9jbGFpbWVkIGZv
cgorICogdGhlIHZhbHVlcyB0byBiZSBmbHVzaGVkLiBUaGVzZSBhdHRyaWJ1dGVzIGFyZToKKyAq
CisgKiAgICBOVl9DVFJMX0dWSU9fUkVRVUVTVEVEX1ZJREVPX0ZPUk1BVAorICogICAgTlZfQ1RS
TF9HVk9fREFUQV9GT1JNQVQKKyAqICAgIE5WX0NUUkxfR1ZPX0ZMSVBfUVVFVUVfU0laRQorICov
CisKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fTE9DS19PV05FUiAyNTcgLyogUi0tICovCisjZGVmaW5l
IE5WX0NUUkxfR1ZPX0xPQ0tfT1dORVJfTk9ORSAwCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0xPQ0tf
T1dORVJfR0xYIDEKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fTE9DS19PV05FUl9DTE9ORSAvKiBubyBs
b25nZXIgc3VwcG9ydGVkICovIDIKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fTE9DS19PV05FUl9YX1ND
UkVFTiAzCisKKy8qCisgKiBOVl9DVFJMX0hXT1ZFUkxBWSAtIHdoZW4gYSB3b3Jrc3RhdGlvbiBv
dmVybGF5IGlzIGluIHVzZSwgcmVwb3J0cworICogd2hldGhlciB0aGUgaGFyZHdhcmUgb3Zlcmxh
eSBpcyB1c2VkLCBvciBpZiB0aGUgb3ZlcmxheSBpcyBlbXVsYXRlZC4KKyAqLworCisjZGVmaW5l
IE5WX0NUUkxfSFdPVkVSTEFZIDI1OCAvKiBSLS0gKi8KKyNkZWZpbmUgTlZfQ1RSTF9IV09WRVJM
QVlfRkFMU0UgMAorI2RlZmluZSBOVl9DVFJMX0hXT1ZFUkxBWV9UUlVFIDEKKworLyoKKyAqIE5W
X0NUUkxfTlVNX0dQVV9FUlJPUlNfUkVDT1ZFUkVEIC0gUmV0dXJucyB0aGUgbnVtYmVyIG9mIEdQ
VSBlcnJvcnMKKyAqIG9jY3VyZWQuIFRoaXMgYXR0cmlidXRlIG1heSBiZSBxdWVyaWVkIHRocm91
Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkKKyAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJH
RVRfVFlQRV9YX1NDUkVFTiB0YXJnZXQuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX05VTV9HUFVf
RVJST1JTX1JFQ09WRVJFRCAyNTkgLyogUi0tLSAqLworCisvKgorICogTlZfQ1RSTF9SRUZSRVNI
X1JBVEVfMyAtIFJldHVybnMgdGhlIHJlZnJlc2ggcmF0ZSBvZiB0aGUgc3BlY2lmaWVkCisgKiBk
aXNwbGF5IGRldmljZSBpbiAxMDAwICogSHogKGllLiB0byBnZXQgdGhlIHJlZnJlc2ggcmF0ZSBp
biBIeiwgZGl2aWRlCisgKiB0aGUgcmV0dXJuZWQgdmFsdWUgYnkgMTAwMC4pCisgKgorICogVGhp
cyBhdHRyaWJ1dGUgbWF5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRBdHRy
aWJ1dGUoKQorICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0dQVSBvciBOVl9DVFJMX1RB
UkdFVF9UWVBFX1hfU0NSRUVOIHRhcmdldC4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfUkVGUkVT
SF9SQVRFXzMgMjYwIC8qIFItREcgKi8KKworLyoKKyAqIE5WX0NUUkxfT05ERU1BTkRfVkJMQU5L
X0lOVEVSUlVQVFMgLSBpZiB0aGUgT25EZW1hbmRWQmxhbmtJbnRlcnJ1cHRzCisgKiBYIGRyaXZl
ciBvcHRpb24gaXMgc2V0IHRvIHRydWUsIHRoaXMgYXR0cmlidXRlIGNhbiBiZSB1c2VkIHRvCisg
KiBkZXRlcm1pbmUgaWYgb24tZGVtYW5kIFZCbGFuayBpbnRlcnJ1cHQgY29udHJvbCBpcyBlbmFi
bGVkIG9uIHRoZQorICogc3BlY2lmaWVkIEdQVSwgYXMgd2VsbCBhcyB0byBlbmFibGUgb3IgZGlz
YWJsZSB0aGlzIGZlYXR1cmUuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX09OREVNQU5EX1ZCTEFO
S19JTlRFUlJVUFRTIDI2MSAvKiBSVy1HICovCisjZGVmaW5lIE5WX0NUUkxfT05ERU1BTkRfVkJM
QU5LX0lOVEVSUlVQVFNfT0ZGIDAKKyNkZWZpbmUgTlZfQ1RSTF9PTkRFTUFORF9WQkxBTktfSU5U
RVJSVVBUU19PTiAxCisKKy8qCisgKiBOVl9DVFJMX0dQVV9QT1dFUl9TT1VSQ0UgcmVwb3J0cyB0
aGUgdHlwZSBvZiBwb3dlciBzb3VyY2UKKyAqIG9mIHRoZSBHUFUgZHJpdmluZyB0aGUgWCBzY3Jl
ZW4uCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0dQVV9QT1dFUl9TT1VSQ0UgMjYyIC8qIFItLUcg
Ki8KKyNkZWZpbmUgTlZfQ1RSTF9HUFVfUE9XRVJfU09VUkNFX0FDIDAKKyNkZWZpbmUgTlZfQ1RS
TF9HUFVfUE9XRVJfU09VUkNFX0JBVFRFUlkgMQorCisvKgorICogTlZfQ1RSTF9HUFVfQ1VSUkVO
VF9QRVJGT1JNQU5DRV9NT0RFIGlzIGRlcHJlY2F0ZWQKKyAqLworCisjZGVmaW5lIE5WX0NUUkxf
R1BVX0NVUlJFTlRfUEVSRk9STUFOQ0VfTU9ERSAyNjMgLyogUi0tRyAqLworI2RlZmluZSBOVl9D
VFJMX0dQVV9DVVJSRU5UX1BFUkZPUk1BTkNFX01PREVfREVTS1RPUCAwCisjZGVmaW5lIE5WX0NU
UkxfR1BVX0NVUlJFTlRfUEVSRk9STUFOQ0VfTU9ERV9NQVhQRVJGIDEKKworLyogTlZfQ1RSTF9H
TFlQSF9DQUNIRSAtIEVuYWJsZXMgUkVOREVSIEdseXBoIENhY2hpbmcgdG8gVlJBTSAqLworCisj
ZGVmaW5lIE5WX0NUUkxfR0xZUEhfQ0FDSEUgMjY0IC8qIFJXLSAqLworI2RlZmluZSBOVl9DVFJM
X0dMWVBIX0NBQ0hFX0RJU0FCTEVEIDAKKyNkZWZpbmUgTlZfQ1RSTF9HTFlQSF9DQUNIRV9FTkFC
TEVEIDEKKworLyoKKyAqIE5WX0NUUkxfR1BVX0NVUlJFTlRfUEVSRk9STUFOQ0VfTEVWRUwgcmVw
b3J0cyB0aGUgY3VycmVudAorICogUGVyZm9ybWFuY2UgbGV2ZWwgb2YgdGhlIEdQVSBkcml2aW5n
IHRoZSBYIHNjcmVlbi4gIEVhY2gKKyAqIFBlcmZvcm1hbmNlIGxldmVsIGhhcyBhc3NvY2lhdGVk
IE5WQ2xvY2sgYW5kIE1lbSBDbG9jayB2YWx1ZXMuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0dQ
VV9DVVJSRU5UX1BFUkZPUk1BTkNFX0xFVkVMIDI2NSAvKiBSLS1HICovCisKKy8qCisgKiBOVl9D
VFJMX0dQVV9BREFQVElWRV9DTE9DS19TVEFURSByZXBvcnRzIGlmIEFkYXB0aXZlIENsb2NraW5n
CisgKiBpcyBFbmFibGVkIG9uIHRoZSBHUFUgZHJpdmluZyB0aGUgWCBzY3JlZW4uCisgKi8KKwor
I2RlZmluZSBOVl9DVFJMX0dQVV9BREFQVElWRV9DTE9DS19TVEFURSAyNjYgLyogUi0tRyAqLwor
I2RlZmluZSBOVl9DVFJMX0dQVV9BREFQVElWRV9DTE9DS19TVEFURV9ESVNBQkxFRCAwCisjZGVm
aW5lIE5WX0NUUkxfR1BVX0FEQVBUSVZFX0NMT0NLX1NUQVRFX0VOQUJMRUQgMQorCisvKgorICog
TlZfQ1RSTF9HVk9fT1VUUFVUX1ZJREVPX0xPQ0tFRCAtIFJldHVybnMgd2hldGhlciBvciBub3Qg
dGhlIEdWTyBvdXRwdXQKKyAqIHZpZGVvIGlzIGxvY2tlZCB0byB0aGUgR1BVLgorICovCisKKyNk
ZWZpbmUgTlZfQ1RSTF9HVk9fT1VUUFVUX1ZJREVPX0xPQ0tFRCAyNjcgLyogUi0tLSAqLworI2Rl
ZmluZSBOVl9DVFJMX0dWT19PVVRQVVRfVklERU9fTE9DS0VEX0ZBTFNFIDAKKyNkZWZpbmUgTlZf
Q1RSTF9HVk9fT1VUUFVUX1ZJREVPX0xPQ0tFRF9UUlVFIDEKKworLyoKKyAqIE5WX0NUUkxfR1ZP
X1NZTkNfTE9DS19TVEFUVVMgLSBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBHVk8gZGV2aWNl
CisgKiBpcyBsb2NrZWQgdG8gdGhlIGlucHV0IHJlZiBzaWduYWwuICBJZiB0aGUgc3luYyBtb2Rl
IGlzIHNldCB0bworICogTlZfQ1RSTF9HVk9fU1lOQ19NT0RFX0dFTkxPQ0ssIHRoZW4gdGhpcyBy
ZXR1cm5zIHRoZSBnZW5sb2NrCisgKiBzeW5jIHN0YXR1cywgYW5kIGlmIHRoZSBzeW5jIG1vZGUg
aXMgc2V0IHRvIE5WX0NUUkxfR1ZPX1NZTkNfTU9ERV9GUkFNRUxPQ0ssCisgKiB0aGVuIHRoaXMg
cmVwb3J0cyB0aGUgZnJhbWUgbG9jayBzdGF0dXMuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0dW
T19TWU5DX0xPQ0tfU1RBVFVTIDI2OCAvKiBSLS0tICovCisjZGVmaW5lIE5WX0NUUkxfR1ZPX1NZ
TkNfTE9DS19TVEFUVVNfVU5MT0NLRUQgMAorI2RlZmluZSBOVl9DVFJMX0dWT19TWU5DX0xPQ0tf
U1RBVFVTX0xPQ0tFRCAxCisKKy8qCisgKiBOVl9DVFJMX0dWT19BTkNfVElNRV9DT0RFX0dFTkVS
QVRJT04gLSBBbGxvd3MgU0RJIGRldmljZSB0byBnZW5lcmF0ZQorICogdGltZSBjb2RlcyBpbiB0
aGUgQU5DIHJlZ2lvbiBvZiB0aGUgU0RJIHZpZGVvIG91dHB1dCBzdHJlYW0uCisgKi8KKworI2Rl
ZmluZSBOVl9DVFJMX0dWT19BTkNfVElNRV9DT0RFX0dFTkVSQVRJT04gMjY5IC8qIFJXLS0gKi8K
KyNkZWZpbmUgTlZfQ1RSTF9HVk9fQU5DX1RJTUVfQ09ERV9HRU5FUkFUSU9OX0RJU0FCTEUgMAor
I2RlZmluZSBOVl9DVFJMX0dWT19BTkNfVElNRV9DT0RFX0dFTkVSQVRJT05fRU5BQkxFIDEKKwor
LyoKKyAqIE5WX0NUUkxfR1ZPX0NPTVBPU0lURSAtIEVuYWJsZXMvRGlzYWJsZXMgU0RJIGNvbXBv
c2l0aW5nLiAgVGhpcyBhdHRyaWJ1dGUKKyAqIGlzIG9ubHkgYXZhaWxhYmxlIHdoZW4gYW4gU0RJ
IGlucHV0IHNvdXJjZSBpcyBkZXRlY3RlZCBhbmQgaXMgaW4gZ2VubG9jaworICogbW9kZS4KKyAq
LworCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0NPTVBPU0lURSAyNzAgLyogUlctLSAqLworI2RlZmlu
ZSBOVl9DVFJMX0dWT19DT01QT1NJVEVfRElTQUJMRSAwCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0NP
TVBPU0lURV9FTkFCTEUgMQorCisvKgorICogTlZfQ1RSTF9HVk9fQ09NUE9TSVRFX0FMUEhBX0tF
WSAtIFdoZW4gY29tcG9zaXRpbmcgaXMgZW5hYmxlZCwgdGhpcworICogZW5hYmxlcy9kaXNhYmxl
cyBhbHBoYSBibGVuZGluZy4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9B
TFBIQV9LRVkgMjcxIC8qIFJXLS0gKi8KKyNkZWZpbmUgTlZfQ1RSTF9HVk9fQ09NUE9TSVRFX0FM
UEhBX0tFWV9ESVNBQkxFIDAKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fQ09NUE9TSVRFX0FMUEhBX0tF
WV9FTkFCTEUgMQorCisvKgorICogTlZfQ1RSTF9HVk9fQ09NUE9TSVRFX0xVTUFfS0VZX1JBTkdF
IC0gU2V0IHRoZSB2YWx1ZXMgb2YgYSBsdW1hCisgKiBjaGFubmVsIHJhbmdlLiAgVGhpcyBpcyBh
IHBhY2tlZCBpbnQgdGhhdCBoYXMgdGhlIGZvbGxvd2luZyBmb3JtYXQKKyAqIChpbiBvcmRlciBv
ZiBoaWdoLWJpdHMgdG8gbG93IGJpdHMpOgorICoKKyAqIFJhbmdlICMgKDExIGJpdHMpLCAoRW5h
YmxlZCAxIGJpdCksIG1pbiB2YWx1ZSAoMTAgYml0cyksIG1heCB2YWx1ZSAoMTAgYml0cykKKyAq
CisgKiBUbyBxdWVyeSB0aGUgY3VycmVudCB2YWx1ZXMsIHBhc3MgdGhlIHJhbmdlICMgdGhyb3Vn
aHQgdGhlIGRpc3BsYXlfbWFzaworICogdmFyaWFibGUuCisgKi8KKworI2RlZmluZSBOVl9DVFJM
X0dWT19DT01QT1NJVEVfTFVNQV9LRVlfUkFOR0UgMjcyIC8qIFJXLS0gKi8KKworI2RlZmluZSBO
Vl9DVFJMX0dWT19DT01QT1NJVEVfTUFLRV9SQU5HRShyYW5nZSwgZW5hYmxlLCBtaW4sIG1heCkg
ICAgICAgICAgICBcCisgICAgKCgoKG1pbikmMHgzRkYpIDw8IDApIHwgKCgobWF4KSYweDNGRikg
PDwgMTApIHwgKCgoZW5hYmxlKSYweDEpIDw8IDIwKSB8IFwKKyAgICAgKCgocmFuZ2UpJjB4N0ZG
KSA8PCAyMSkpCisKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fQ09NUE9TSVRFX0dFVF9SQU5HRSh2YWws
IHJhbmdlLCBlbmFibGUsIG1pbiwgbWF4KSBcCisgICAgKG1pbikgPSAoKHZhbCkgPj4gMCkgJiAw
eDNGRjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChtYXgpID0g
KCh2YWwpID4+IDEwKSAmIDB4M0ZGOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAoZW5hYmxlKSA9ICgodmFsKSA+PiAyMCkgJiAweDE7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgKHJhbmdlKSA9ICgodmFsKSA+PiAyMSkgJiAweDdGRjsK
KworLyoKKyAqIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9DUl9LRVlfUkFOR0UgLSBTZXQgdGhlIHZh
bHVlcyBvZiBhIENSCisgKiBjaGFubmVsIHJhbmdlLiAgVGhpcyBpcyBhIHBhY2tlZCBpbnQgdGhh
dCBoYXMgdGhlIGZvbGxvd2luZyBmb3JtYXQKKyAqIChpbiBvcmRlciBvZiBoaWdoLWJpdHMgdG8g
bG93IGJpdHMpOgorICoKKyAqIFJhbmdlICMgKDExIGJpdHMpLCAoRW5hYmxlZCAxIGJpdCksIG1p
biB2YWx1ZSAoMTAgYml0cyksIG1heCB2YWx1ZSAoMTAgYml0cykKKyAqCisgKiBUbyBxdWVyeSB0
aGUgY3VycmVudCB2YWx1ZXMsIHBhc3MgdGhlIHJhbmdlICMgdGhyb3VnaHQgaGUgZGlzcGxheV9t
YXNrCisgKiB2YXJpYWJsZS4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9D
Ul9LRVlfUkFOR0UgMjczIC8qIFJXLS0gKi8KKworLyoKKyAqIE5WX0NUUkxfR1ZPX0NPTVBPU0lU
RV9DQl9LRVlfUkFOR0UgLSBTZXQgdGhlIHZhbHVlcyBvZiBhIENCCisgKiBjaGFubmVsIHJhbmdl
LiAgVGhpcyBpcyBhIHBhY2tlZCBpbnQgdGhhdCBoYXMgdGhlIGZvbGxvd2luZyBmb3JtYXQKKyAq
IChpbiBvcmRlciBvZiBoaWdoLWJpdHMgdG8gbG93IGJpdHMpOgorICoKKyAqIFJhbmdlICMgKDEx
IGJpdHMpLCAoRW5hYmxlZCAxIGJpdCksIG1pbiB2YWx1ZSAoMTAgYml0cyksIG1heCB2YWx1ZSAo
MTAgYml0cykKKyAqCisgKiBUbyBxdWVyeSB0aGUgY3VycmVudCB2YWx1ZXMsIHBhc3MgdGhlIHJh
bmdlICMgdGhyb3VnaHQgaGUgZGlzcGxheV9tYXNrCisgKiB2YXJpYWJsZS4KKyAqLworCisjZGVm
aW5lIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9DQl9LRVlfUkFOR0UgMjc0IC8qIFJXLS0gKi8KKwor
LyoKKyAqIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9OVU1fS0VZX1JBTkdFUyAtIFJldHVybnMgdGhl
IG51bWJlciBvZiByYW5nZXMKKyAqIGF2YWlsYWJsZSBmb3IgZWFjaCBjaGFubmVsIChZL0x1bWEs
IENyLCBhbmQgQ2IuKQorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fQ09NUE9TSVRFX05VTV9L
RVlfUkFOR0VTIDI3NSAvKiBSLS0tICovCisKKy8qCisgKiBOVl9DVFJMX1NXSVRDSF9UT19ESVNQ
TEFZUyAtIENhbiBiZSB1c2VkIHRvIHNlbGVjdCB3aGljaCBkaXNwbGF5cworICogdG8gc3dpdGNo
IHRvIChhcyBhIGhvdGtleSBldmVudCkuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX1NXSVRDSF9U
T19ESVNQTEFZUyAyNzYgLyogLVctICovCisKKy8qCisgKiBOVl9DVFJMX05PVEVCT09LX0RJU1BM
QVlfQ0hBTkdFX0xJRF9FVkVOVCAtIEV2ZW50IHRoYXQgbm90aWZpZXMKKyAqIHdoZW4gYSBub3Rl
Ym9vayBsaWQgY2hhbmdlIG9jY3VycyAoaS5lLiB3aGVuIHRoZSBsaWQgaXMgb3BlbmVkIG9yCisg
KiBjbG9zZWQuKSAgVGhpcyBhdHRyaWJ1dGUgY2FuIGJlIHF1ZXJpZWQgdG8gcmV0cmlldmUgdGhl
IGN1cnJlbnQKKyAqIG5vdGVib29rIGxpZCBzdGF0dXMgKG9wZW5lZC9jbG9zZWQuKQorICovCisK
KyNkZWZpbmUgTlZfQ1RSTF9OT1RFQk9PS19ESVNQTEFZX0NIQU5HRV9MSURfRVZFTlQgMjc3IC8q
IFJXLSAqLworI2RlZmluZSBOVl9DVFJMX05PVEVCT09LX0RJU1BMQVlfQ0hBTkdFX0xJRF9FVkVO
VF9DTE9TRSAwCisjZGVmaW5lIE5WX0NUUkxfTk9URUJPT0tfRElTUExBWV9DSEFOR0VfTElEX0VW
RU5UX09QRU4gMQorCisvKgorICogTlZfQ1RSTF9OT1RFQk9PS19JTlRFUk5BTF9MQ0QgLSBSZXR1
cm5zIHRoZSBkaXNwbGF5IGRldmljZSBtYXNrIG9mCisgKiB0aGUgaW50ZW5hbCBMQ0Qgb2YgYSBu
b3RlYm9vay4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfTk9URUJPT0tfSU5URVJOQUxfTENEIDI3
OCAvKiBSLS0gKi8KKworLyoKKyAqIE5WX0NUUkxfREVQVEhfMzBfQUxMT1dFRCAtIHJldHVybnMg
d2hldGhlciB0aGUgTlZJRElBIFggZHJpdmVyIHN1cHBvcnRzCisgKiBkZXB0aCAzMCBvbiB0aGUg
c3BlY2lmaWVkIFggc2NyZWVuIG9yIEdQVS4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfREVQVEhf
MzBfQUxMT1dFRCAyNzkgLyogUi0tRyAqLworCisvKgorICogTlZfQ1RSTF9NT0RFX1NFVF9FVkVO
VCBUaGlzIGF0dHJpYnV0ZSBpcyBzZW50IGFzIGFuIGV2ZW50CisgKiB3aGVuIGhvdGtleSwgY3Ry
bC1hbHQtKy8tIG9yIHJhbmRyIGV2ZW50IG9jY3Vycy4gIE5vdGUgdGhhdAorICogVGhpcyBhdHRy
aWJ1dGUgY2Fubm90IGJlIHNldCBvciBxdWVyaWVkIGFuZCBpcyBtZWFudCB0bworICogYmUgcmVj
ZWl2ZWQgYnkgY2xpZW50cyB0aGF0IHdpc2ggdG8gYmUgbm90aWZpZWQgb2Ygd2hlbgorICogbW9k
ZSBzZXQgZXZlbnRzIG9jY3VyLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9NT0RFX1NFVF9FVkVO
VCAyODAgLyogLS0tICovCisKKy8qCisgKiBOVl9DVFJMX09QRU5HTF9BQV9MSU5FX0dBTU1BX1ZB
TFVFIC0gdGhlIGdhbW1hIHZhbHVlIHVzZWQgYnkKKyAqIE9wZW5HTCB3aGVuIE5WX0NUUkxfT1BF
TkdMX0FBX0xJTkVfR0FNTUEgaXMgZW5hYmxlZAorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9PUEVO
R0xfQUFfTElORV9HQU1NQV9WQUxVRSAyODEgLyogUlctWCAqLworCisvKgorICogTlZfQ1RSTF9W
Q1NDX0hJR0hfUEVSRl9NT0RFIC0gSXMgdXNlZCB0byBib3RoIHF1ZXJ5IEhpZ2ggUGVyZm9ybWFu
Y2UgTW9kZQorICogc3RhdHVzIG9uIHRoZSBWaXN1YWwgQ29tcHV0aW5nIFN5c3RlbSwgYW5kIGFs
c28gdG8gZW5hYmxlIG9yIGRpc2FibGUgSGlnaAorICogUGVyZm9ybWFuY2UgTW9kZS4KKyAqLwor
CisjZGVmaW5lIE5WX0NUUkxfVkNTQ19ISUdIX1BFUkZfTU9ERSAyODIgLyogUlctViAqLworI2Rl
ZmluZSBOVl9DVFJMX1ZDU0NfSElHSF9QRVJGX01PREVfRElTQUJMRSAwCisjZGVmaW5lIE5WX0NU
UkxfVkNTQ19ISUdIX1BFUkZfTU9ERV9FTkFCTEUgMQorCisvKgorICogTlZfQ1RSTF9ESVNQTEFZ
UE9SVF9MSU5LX1JBVEUgLSByZXR1cm5zIHRoZSBuZWdvdGlhdGVkIGxhbmUgYmFuZHdpZHRoIG9m
IHRoZQorICogRGlzcGxheVBvcnQgbWFpbiBsaW5rLgorICogVGhpcyBhdHRyaWJ1dGUgaXMgb25s
eSBhdmFpbGFibGUgZm9yIERpc3BsYXlQb3J0IGZsYXQgcGFuZWxzLgorICovCisKKyNkZWZpbmUg
TlZfQ1RSTF9ESVNQTEFZUE9SVF9MSU5LX1JBVEUgMjkxIC8qIFItREcgKi8KKyNkZWZpbmUgTlZf
Q1RSTF9ESVNQTEFZUE9SVF9MSU5LX1JBVEVfRElTQUJMRUQgMHgwCisjZGVmaW5lIE5WX0NUUkxf
RElTUExBWVBPUlRfTElOS19SQVRFXzFfNjJHQlBTIDB4NgorI2RlZmluZSBOVl9DVFJMX0RJU1BM
QVlQT1JUX0xJTktfUkFURV8yXzcwR0JQUyAweEEKKworLyoKKyAqIE5WX0NUUkxfU1RFUkVPX0VZ
RVNfRVhDSEFOR0UgLSBDb250cm9scyB3aGV0aGVyIG9yIG5vdCB0aGUgbGVmdCBhbmQgcmlnaHQK
KyAqIGV5ZXMgb2YgYSBzdGVyZW8gaW1hZ2UgYXJlIGZsaXBwZWQuCisgKi8KKworI2RlZmluZSBO
Vl9DVFJMX1NURVJFT19FWUVTX0VYQ0hBTkdFIDI5MiAvKiBSVy1YICovCisjZGVmaW5lIE5WX0NU
UkxfU1RFUkVPX0VZRVNfRVhDSEFOR0VfT0ZGIDAKKyNkZWZpbmUgTlZfQ1RSTF9TVEVSRU9fRVlF
U19FWENIQU5HRV9PTiAxCisKKy8qCisgKiBOVl9DVFJMX05PX1NDQU5PVVQgLSByZXR1cm5zIHdo
ZXRoZXIgdGhlIHNwZWNpYWwgIk5vU2Nhbm91dCIgbW9kZSBpcworICogZW5hYmxlZCBvbiB0aGUg
c3BlY2lmaWVkIFggc2NyZWVuIG9yIEdQVTsgZm9yIGRldGFpbHMgb24gdGhpcyBtb2RlLAorICog
c2VlIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgIm5vbmUiIHZhbHVlIGZvciB0aGUgIlVzZURpc3Bs
YXlEZXZpY2UiCisgKiBYIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGluIHRoZSBOVklESUEgZHJpdmVy
IFJFQURNRS4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfTk9fU0NBTk9VVCAyOTMgLyogUi0tRyAq
LworI2RlZmluZSBOVl9DVFJMX05PX1NDQU5PVVRfRElTQUJMRUQgMAorI2RlZmluZSBOVl9DVFJM
X05PX1NDQU5PVVRfRU5BQkxFRCAxCisKKy8qCisgKiBOVl9DVFJMX0dWT19DU0NfQ0hBTkdFRF9F
VkVOVCBUaGlzIGF0dHJpYnV0ZSBpcyBzZW50IGFzIGFuIGV2ZW50CisgKiB3aGVuIHRoZSBjb2xv
ciBzcGFjZSBjb252ZXJzaW9uIG1hdHJpeCBoYXMgYmVlbiBhbHRlcmVkIGJ5IGFub3RoZXIKKyAq
IGNsaWVudC4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0NTQ19DSEFOR0VEX0VWRU5UIDI5
NCAvKiAtLS0gKi8KKworLyoKKyAqIE5WX0NUUkxfRlJBTUVMT0NLX1NMQVZFQUJMRSAtIFJldHVy
bnMgYSBiaXRtYXNrIG9mIHRoZSBkaXNwbGF5IGRldmljZXMKKyAqIHRoYXQgYXJlIChjdXJyZW50
bHkpIGFsbG93ZWQgdG8gYmUgc2VsZWN0ZWQgYXMgc2xhdmUgZGV2aWNlcyBmb3IgdGhlCisgKiBn
aXZlbiBHUFUKKyAqLworCisjZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX1NMQVZFQUJMRSAyOTUg
LyogUi1ERyAqLworCisvKgorICogTlZfQ1RSTF9HVk9fU1lOQ19UT19ESVNQTEFZIFRoaXMgYXR0
cmlidXRlIGNvbnRyb2xzIHdoZXRoZXIgb3Igbm90CisgKiB0aGUgbm9uLVNESSBkaXNwbGF5IGRl
dmljZSB3aWxsIGJlIHN5bmMnZWQgdG8gdGhlIFNESSBkaXNwbGF5IGRldmljZQorICogKHdoZW4g
Y29uZmlndXJlZCBpbiBUd2luVmlldywgQ2xvbmUgTW9kZSBvciB3aGVuIHVzaW5nIHRoZSBTREkg
ZGV2aWNlCisgKiB3aXRoIE9wZW5HTCkuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0dWT19TWU5D
X1RPX0RJU1BMQVkgMjk2IC8qIC0tLSAqLworI2RlZmluZSBOVl9DVFJMX0dWT19TWU5DX1RPX0RJ
U1BMQVlfRElTQUJMRSAwCisjZGVmaW5lIE5WX0NUUkxfR1ZPX1NZTkNfVE9fRElTUExBWV9FTkFC
TEUgMQorCisvKgorICogTlZfQ1RSTF9YX1NFUlZFUl9VTklRVUVfSUQgLSByZXR1cm5zIGEgcHNl
dWRvLXVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzCisgKiBYIHNlcnZlci4gSW50ZW5kZWQgZm9y
IHVzZSBpbiBjYXNlcyB3aGVyZSBhbiBOVi1DT05UUk9MIGNsaWVudCBjb21tdW5pY2F0ZXMKKyAq
IHdpdGggbXVsdGlwbGUgWCBzZXJ2ZXJzLCBhbmQgd2FudHMgc29tZSBsZXZlbCBvZiBjb25maWRl
bmNlIHRoYXQgdHdvCisgKiBYIERpc3BsYXkgY29ubmVjdGlvbnMgY29ycmVzcG9uZCB0byB0aGUg
c2FtZSBvciBkaWZmZXJlbnQgWCBzZXJ2ZXJzLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9YX1NF
UlZFUl9VTklRVUVfSUQgMjk3IC8qIFItLS0gKi8KKworLyoKKyAqIE5WX0NUUkxfUElYTUFQX0NB
Q0hFIC0gVGhpcyBhdHRyaWJ1dGUgY29udHJvbHMgd2hldGhlciB0aGUgZHJpdmVyIGF0dGVtcHRz
IHRvCisgKiBzdG9yZSB2aWRlbyBtZW1vcnkgcGl4bWFwcyBpbiBhIGNhY2hlLiAgVGhlIGNhY2hl
IHNwZWVkcyB1cCBhbGxvY2F0aW9uIGFuZAorICogZGVhbGxvY2F0aW9uIG9mIHBpeG1hcHMsIGJ1
dCBjb3VsZCB1c2UgbW9yZSBtZW1vcnkgdGhhbiB3aGVuIHRoZSBjYWNoZSBpcworICogZGlzYWJs
ZWQuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX1BJWE1BUF9DQUNIRSAyOTggLyogUlctWCAqLwor
I2RlZmluZSBOVl9DVFJMX1BJWE1BUF9DQUNIRV9ESVNBQkxFIDAKKyNkZWZpbmUgTlZfQ1RSTF9Q
SVhNQVBfQ0FDSEVfRU5BQkxFIDEKKworLyoKKyAqIE5WX0NUUkxfUElYTUFQX0NBQ0hFX1JPVU5E
SU5HX1NJWkVfS0IgLSBXaGVuIHRoZSBwaXhtYXAgY2FjaGUgaXMgZW5hYmxlZCBhbmQKKyAqIHRo
ZXJlIGlzIG5vdCBlbm91Z2ggZnJlZSBzcGFjZSBpbiB0aGUgY2FjaGUgdG8gZml0IGEgbmV3IHBp
eG1hcCwgdGhlIGRyaXZlcgorICogd2lsbCByb3VuZCB1cCB0byB0aGUgbmV4dCBtdWx0aXBsZSBv
ZiB0aGlzIG51bWJlciBvZiBraWxvYnl0ZXMgd2hlbgorICogYWxsb2NhdGluZyBtb3JlIG1lbW9y
eSBmb3IgdGhlIGNhY2hlLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9QSVhNQVBfQ0FDSEVfUk9V
TkRJTkdfU0laRV9LQiAyOTkgLyogUlctWCAqLworCisvKgorICogTlZfQ1RSTF9JU19HVk9fRElT
UExBWSAtIHJldHVybnMgd2hldGhlciBvciBub3QgYSBnaXZlbiBkaXNwbGF5IGlzIGFuCisgKiBT
REkgZGV2aWNlLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9JU19HVk9fRElTUExBWSAzMDAgLyog
Ui1EICovCisjZGVmaW5lIE5WX0NUUkxfSVNfR1ZPX0RJU1BMQVlfRkFMU0UgMAorI2RlZmluZSBO
Vl9DVFJMX0lTX0dWT19ESVNQTEFZX1RSVUUgMQorCisvKgorICogTlZfQ1RSTF9QQ0lfSUQgLSBS
ZXR1cm5zIHRoZSBQQ0kgdmVuZG9yIGFuZCBkZXZpY2UgSUQgb2YgdGhlIHNwZWNpZmllZAorICog
ZGV2aWNlLgorICoKKyAqIE5WX0NUUkxfUENJX0lEIGlzIGEgInBhY2tlZCIgaW50ZWdlciBhdHRy
aWJ1dGU7IHRoZSBQQ0kgdmVuZG9yIElEIGlzIHN0b3JlZAorICogaW4gdGhlIHVwcGVyIDE2IGJp
dHMgb2YgdGhlIGludGVnZXIsIGFuZCB0aGUgUENJIGRldmljZSBJRCBpcyBzdG9yZWQgaW4gdGhl
CisgKiBsb3dlciAxNiBiaXRzIG9mIHRoZSBpbnRlZ2VyLgorICovCisKKyNkZWZpbmUgTlZfQ1RS
TF9QQ0lfSUQgMzAxIC8qIFItLUdJICovCisKKy8qCisgKiBOVl9DVFJMX0dWT19GVUxMX1JBTkdF
X0NPTE9SIC0gQWxsb3cgZnVsbCByYW5nZSBjb2xvciBkYXRhIFs0LTEwMTldCisgKiB3aXRob3V0
IGNsYW1waW5nIHRvIFs2NC05NDBdLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HVk9fRlVMTF9S
QU5HRV9DT0xPUiAzMDIgLyogUlctICovCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0ZVTExfUkFOR0Vf
Q09MT1JfRElTQUJMRUQgMAorI2RlZmluZSBOVl9DVFJMX0dWT19GVUxMX1JBTkdFX0NPTE9SX0VO
QUJMRUQgMQorCisvKgorICogTlZfQ1RSTF9TTElfTU9TQUlDX01PREVfQVZBSUxBQkxFIC0gUmV0
dXJucyB3aGV0aGVyIG9yIG5vdAorICogU0xJIE1vc2FpYyBNb2RlIHN1cHBvcnRlZC4KKyAqLwor
CisjZGVmaW5lIE5WX0NUUkxfU0xJX01PU0FJQ19NT0RFX0FWQUlMQUJMRSAzMDMgLyogUi0tICov
CisjZGVmaW5lIE5WX0NUUkxfU0xJX01PU0FJQ19NT0RFX0FWQUlMQUJMRV9GQUxTRSAwCisjZGVm
aW5lIE5WX0NUUkxfU0xJX01PU0FJQ19NT0RFX0FWQUlMQUJMRV9UUlVFIDEKKworLyoKKyAqIE5W
X0NUUkxfR1ZPX0VOQUJMRV9SR0JfREFUQSAtIEFsbG93cyBjbGllbnRzIHRvIHNwZWNpZnkgd2hl
bgorICogdGhlIEdWTyBib2FyZCBzaG91bGQgcHJvY2VzcyBjb2xvcnMgYXMgUkdCIHdoZW4gdGhl
IG91dHB1dCBkYXRhCisgKiBmb3JtYXQgaXMgb25lIG9mIHRoZSBOVl9DVFJMX0dWT19EQVRBX0ZP
Uk1BVF8/Pz9fUEFTU1RSSFUgbW9kZXMuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0dWT19FTkFC
TEVfUkdCX0RBVEEgMzA0IC8qIFJXLSAqLworI2RlZmluZSBOVl9DVFJMX0dWT19FTkFCTEVfUkdC
X0RBVEFfRElTQUJMRSAwCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0VOQUJMRV9SR0JfREFUQV9FTkFC
TEUgMQorCisvKgorICogTlZfQ1RSTF9JTUFHRV9TSEFSUEVOSU5HX0RFRkFVTFQgLSBSZXR1cm5z
IGRlZmF1bHQgdmFsdWUgb2YKKyAqIEltYWdlIFNoYXJwZW5pbmcuCisgKi8KKworI2RlZmluZSBO
Vl9DVFJMX0lNQUdFX1NIQVJQRU5JTkdfREVGQVVMVCAzMDUgLyogUi0tICovCisKKy8qCisgKiBO
Vl9DVFJMX1BDSV9ET01BSU4gLSBSZXR1cm5zIHRoZSBQQ0kgZG9tYWluIG51bWJlciB0aGUgc3Bl
Y2lmaWVkIGRldmljZSBpcworICogdXNpbmcuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX1BDSV9E
T01BSU4gMzA2IC8qIFItLUdJICovCisKKy8qCisgKiBOVl9DVFJMX0dWSV9OVU1fSkFDS1MgLSBS
ZXR1cm5zIHRoZSBudW1iZXIgb2YgaW5wdXQgQk5DIGphY2tzIGF2YWlsYWJsZQorICogb24gYSBH
VkkgZGV2aWNlLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HVklfTlVNX0pBQ0tTIDMwNyAvKiBS
LS1JICovCisKKy8qCisgKiBOVl9DVFJMX0dWSV9NQVhfTElOS1NfUEVSX1NUUkVBTSAtIFJldHVy
bnMgdGhlIG1heGltdW0gc3VwcG9ydGVkIG51bWJlciBvZgorICogbGlua3MgdGhhdCBjYW4gYmUg
dGllZCB0byBvbmUgc3RyZWFtLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HVklfTUFYX0xJTktT
X1BFUl9TVFJFQU0gMzA4IC8qIFItLUkgKi8KKworLyoKKyAqIE5WX0NUUkxfR1ZJX0RFVEVDVEVE
X0NIQU5ORUxfQklUU19QRVJfQ09NUE9ORU5UIC0gUmV0dXJucyB0aGUgZGV0ZWN0ZWQKKyAqIG51
bWJlciBvZiBiaXRzIHBlciBjb21wb25lbnQgKEJQQykgb2YgZGF0YSBvbiB0aGUgZ2l2ZW4gaW5w
dXQgamFjaysKKyAqIGNoYW5uZWwuCisgKgorICogVGhlIGphY2sgbnVtYmVyIHNob3VsZCBiZSBz
cGVjaWZpZWQgaW4gdGhlIGxvd2VyIDE2IGJpdHMgb2YgdGhlCisgKiAiZGlzcGxheV9tYXNrIiBw
YXJhbWV0ZXIsIHdoaWxlIHRoZSBjaGFubmVsIG51bWJlciBzaG91bGQgYmUgc3BlY2lmaWVkIGlu
CisgKiB0aGUgdXBwZXIgMTYgYml0cy4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfR1ZJX0RFVEVD
VEVEX0NIQU5ORUxfQklUU19QRVJfQ09NUE9ORU5UIDMwOSAvKiBSLS1JICovCisjZGVmaW5lIE5W
X0NUUkxfR1ZJX0JJVFNfUEVSX0NPTVBPTkVOVF9VTktOT1dOIDAKKyNkZWZpbmUgTlZfQ1RSTF9H
VklfQklUU19QRVJfQ09NUE9ORU5UXzggMQorI2RlZmluZSBOVl9DVFJMX0dWSV9CSVRTX1BFUl9D
T01QT05FTlRfMTAgMgorI2RlZmluZSBOVl9DVFJMX0dWSV9CSVRTX1BFUl9DT01QT05FTlRfMTIg
MworCisvKgorICogTlZfQ1RSTF9HVklfUkVRVUVTVEVEX1NUUkVBTV9CSVRTX1BFUl9DT01QT05F
TlQgLSBTcGVjaWZ5IHRoZSBudW1iZXIgb2YKKyAqIGJpdHMgcGVyIGNvbXBvbmVudCAoQlBDKSBv
ZiBkYXRhIGZvciB0aGUgY2FwdHVyZWQgc3RyZWFtLgorICogVGhlIHN0cmVhbSBudW1iZXIgc2hv
dWxkIGJlIHNwZWNpZmllZCBpbiB0aGUgImRpc3BsYXlfbWFzayIgcGFyYW1ldGVyLgorICoKKyAq
IE5vdGU6IFNldHRpbmcgdGhpcyBhdHRyaWJ1dGUgbWF5IGFsc28gcmVzdWx0IGluIHRoZSBmb2xs
b3dpbmcKKyAqICAgICAgIE5WLUNPTlRST0wgYXR0cmlidXRlcyBiZWluZyByZXNldCBvbiB0aGUg
R1ZJIGRldmljZSAodG8gZW5zdXJlCisgKiAgICAgICB0aGUgY29uZmlndXJhdGlvbiByZW1haW5z
IHZhbGlkKToKKyAqICAgICAgICAgICBOVl9DVFJMX0dWSV9SRVFVRVNURURfU1RSRUFNX0NPTVBP
TkVOVF9TQU1QTElORworICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HVklfUkVRVUVTVEVEX1NUUkVB
TV9CSVRTX1BFUl9DT01QT05FTlQgMzEwIC8qIFJXLUkgKi8KKworLyoKKyAqIE5WX0NUUkxfR1ZJ
X0RFVEVDVEVEX0NIQU5ORUxfQ09NUE9ORU5UX1NBTVBMSU5HIC0gUmV0dXJucyB0aGUgZGV0ZWN0
ZWQKKyAqIHNhbXBsaW5nIGZvcm1hdCBmb3IgdGhlIGlucHV0IGphY2srY2hhbm5lbC4KKyAqCisg
KiBUaGUgamFjayBudW1iZXIgc2hvdWxkIGJlIHNwZWNpZmllZCBpbiB0aGUgbG93ZXIgMTYgYml0
cyBvZiB0aGUKKyAqICJkaXNwbGF5X21hc2siIHBhcmFtZXRlciwgd2hpbGUgdGhlIGNoYW5uZWwg
bnVtYmVyIHNob3VsZCBiZSBzcGVjaWZpZWQgaW4KKyAqIHRoZSB1cHBlciAxNiBiaXRzLgorICov
CisKKyNkZWZpbmUgTlZfQ1RSTF9HVklfREVURUNURURfQ0hBTk5FTF9DT01QT05FTlRfU0FNUExJ
TkcgMzExIC8qIFItLUkgKi8KKyNkZWZpbmUgTlZfQ1RSTF9HVklfQ09NUE9ORU5UX1NBTVBMSU5H
X1VOS05PV04gMAorI2RlZmluZSBOVl9DVFJMX0dWSV9DT01QT05FTlRfU0FNUExJTkdfNDQ0NCAx
CisjZGVmaW5lIE5WX0NUUkxfR1ZJX0NPTVBPTkVOVF9TQU1QTElOR180MjI0IDIKKyNkZWZpbmUg
TlZfQ1RSTF9HVklfQ09NUE9ORU5UX1NBTVBMSU5HXzQ0NCAzCisjZGVmaW5lIE5WX0NUUkxfR1ZJ
X0NPTVBPTkVOVF9TQU1QTElOR180MjIgNAorI2RlZmluZSBOVl9DVFJMX0dWSV9DT01QT05FTlRf
U0FNUExJTkdfNDIwIDUKKworLyoKKyAqIE5WX0NUUkxfR1ZJX1JFUVVFU1RFRF9DT01QT05FTlRf
U0FNUExJTkcgLSBTcGVjaWZ5IHRoZSBzYW1wbGluZyBmb3JtYXQgZm9yCisgKiB0aGUgY2FwdHVy
ZWQgc3RyZWFtLgorICogVGhlIHBvc3NpYmxlIHZhbHVlcyBhcmUgdGhlIE5WX0NUUkxfR1ZJX0RF
VEVDVEVEX0NPTVBPTkVOVF9TQU1QTElORworICogY29uc3RhbnRzLgorICogVGhlIHN0cmVhbSBu
dW1iZXIgc2hvdWxkIGJlIHNwZWNpZmllZCBpbiB0aGUgImRpc3BsYXlfbWFzayIgcGFyYW1ldGVy
LgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HVklfUkVRVUVTVEVEX1NUUkVBTV9DT01QT05FTlRf
U0FNUExJTkcgMzEyIC8qIFJXLUkgKi8KKworLyoKKyAqIE5WX0NUUkxfR1ZJX0NIUk9NQV9FWFBB
TkQgLSBFbmFibGUgb3IgZGlzYWJsZSA0OjI6MiAtPiA0OjQ6NCBjaHJvbWEKKyAqIGV4cGFuc2lv
biBmb3IgdGhlIGNhcHR1cmVkIHN0cmVhbS4gIFRoaXMgdmFsdWUgaXMgaWdub3JlZCB3aGVuIGEK
KyAqIENPTVBPTkVOVF9TQU1QTElORyBmb3JtYXQgaXMgc2VsZWN0ZWQgdGhhdCBkb2VzIG5vdCB1
c2UgY2hyb21hIHN1YnNhbXBsaW5nLAorICogb3IgaWYgYSBCSVRTX1BFUl9DT01QT05FTlQgdmFs
dWUgaXMgc2VsZWN0ZWQgdGhhdCBpcyBub3Qgc3VwcG9ydGVkLgorICogVGhlIHN0cmVhbSBudW1i
ZXIgc2hvdWxkIGJlIHNwZWNpZmllZCBpbiB0aGUgImRpc3BsYXlfbWFzayIgcGFyYW1ldGVyLgor
ICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HVklfUkVRVUVTVEVEX1NUUkVBTV9DSFJPTUFfRVhQQU5E
IDMxMyAvKiBSVy1JICovCisjZGVmaW5lIE5WX0NUUkxfR1ZJX0NIUk9NQV9FWFBBTkRfRkFMU0Ug
MAorI2RlZmluZSBOVl9DVFJMX0dWSV9DSFJPTUFfRVhQQU5EX1RSVUUgMQorCisvKgorICogTlZf
Q1RSTF9HVklfREVURUNURURfQ0hBTk5FTF9DT0xPUl9TUEFDRSAtIFJldHVybnMgdGhlIGRldGVj
dGVkIGNvbG9yIHNwYWNlCisgKiBvZiB0aGUgaW5wdXQgamFjaytjaGFubmVsLgorICoKKyAqIFRo
ZSBqYWNrIG51bWJlciBzaG91bGQgYmUgc3BlY2lmaWVkIGluIHRoZSBsb3dlciAxNiBiaXRzIG9m
IHRoZQorICogImRpc3BsYXlfbWFzayIgcGFyYW1ldGVyLCB3aGlsZSB0aGUgY2hhbm5lbCBudW1i
ZXIgc2hvdWxkIGJlIHNwZWNpZmllZCBpbgorICogdGhlIHVwcGVyIDE2IGJpdHMuCisgKi8KKwor
I2RlZmluZSBOVl9DVFJMX0dWSV9ERVRFQ1RFRF9DSEFOTkVMX0NPTE9SX1NQQUNFIDMxNCAvKiBS
LS1JICovCisjZGVmaW5lIE5WX0NUUkxfR1ZJX0NPTE9SX1NQQUNFX1VOS05PV04gMAorI2RlZmlu
ZSBOVl9DVFJMX0dWSV9DT0xPUl9TUEFDRV9HQlIgMQorI2RlZmluZSBOVl9DVFJMX0dWSV9DT0xP
Ul9TUEFDRV9HQlJBIDIKKyNkZWZpbmUgTlZfQ1RSTF9HVklfQ09MT1JfU1BBQ0VfR0JSRCAzCisj
ZGVmaW5lIE5WX0NUUkxfR1ZJX0NPTE9SX1NQQUNFX1lDQkNSIDQKKyNkZWZpbmUgTlZfQ1RSTF9H
VklfQ09MT1JfU1BBQ0VfWUNCQ1JBIDUKKyNkZWZpbmUgTlZfQ1RSTF9HVklfQ09MT1JfU1BBQ0Vf
WUNCQ1JEIDYKKworLyoKKyAqIE5WX0NUUkxfR1ZJX0RFVEVDVEVEX0NIQU5ORUxfTElOS19JRCAt
IFJldHVybnMgdGhlIGRldGVjdGVkIGxpbmsgaWRlbnRpZmllcgorICogZm9yIHRoZSBnaXZlbiBp
bnB1dCBqYWNrK2NoYW5uZWwuCisgKgorICogVGhlIGphY2sgbnVtYmVyIHNob3VsZCBiZSBzcGVj
aWZpZWQgaW4gdGhlIGxvd2VyIDE2IGJpdHMgb2YgdGhlCisgKiAiZGlzcGxheV9tYXNrIiBwYXJh
bWV0ZXIsIHdoaWxlIHRoZSBjaGFubmVsIG51bWJlciBzaG91bGQgYmUgc3BlY2lmaWVkIGluCisg
KiB0aGUgdXBwZXIgMTYgYml0cy4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfR1ZJX0RFVEVDVEVE
X0NIQU5ORUxfTElOS19JRCAzMTUgLyogUi0tSSAqLworI2RlZmluZSBOVl9DVFJMX0dWSV9MSU5L
X0lEX1VOS05PV04gMHhGRkZGCisKKy8qCisgKiBOVl9DVFJMX0dWSV9ERVRFQ1RFRF9DSEFOTkVM
X1NNUFRFMzUyX0lERU5USUZJRVIgLSBSZXR1cm5zIHRoZSA0LWJ5dGUKKyAqIFNNUFRFIDM1MiBp
ZGVudGlmaWVyIGZyb20gdGhlIGdpdmVuIGlucHV0IGphY2srY2hhbm5lbC4KKyAqCisgKiBUaGUg
amFjayBudW1iZXIgc2hvdWxkIGJlIHNwZWNpZmllZCBpbiB0aGUgbG93ZXIgMTYgYml0cyBvZiB0
aGUKKyAqICJkaXNwbGF5X21hc2siIHBhcmFtZXRlciwgd2hpbGUgdGhlIGNoYW5uZWwgbnVtYmVy
IHNob3VsZCBiZSBzcGVjaWZpZWQgaW4KKyAqIHRoZSB1cHBlciAxNiBiaXRzLgorICovCisKKyNk
ZWZpbmUgTlZfQ1RSTF9HVklfREVURUNURURfQ0hBTk5FTF9TTVBURTM1Ml9JREVOVElGSUVSIDMx
NiAvKiBSLS1JICovCisKKy8qCisgKiBOVl9DVFJMX0dWSV9HTE9CQUxfSURFTlRJRklFUiAtIFJl
dHVybnMgYSBnbG9iYWwgaWRlbnRpZmllciBmb3IgdGhlCisgKiBHVkkgZGV2aWNlLiAgVGhpcyBp
ZGVudGlmaWVyIGNhbiBiZSB1c2VkIHRvIHJlbGF0ZSBHVkkgZGV2aWNlcyBuYW1lZAorICogaW4g
TlYtQ09OVFJPTCB3aXRoIHRob3NlIGVudW1lcmF0ZWQgaW4gT3BlbkdMLgorICovCisKKyNkZWZp
bmUgTlZfQ1RSTF9HVklfR0xPQkFMX0lERU5USUZJRVIgMzE3IC8qIFItLUkgKi8KKworLyoKKyAq
IE5WX0NUUkxfRlJBTUVMT0NLX1NZTkNfREVMQVlfUkVTT0xVVElPTiAtIFJldHVybnMgdGhlIG51
bWJlciBvZiBuYW5vc2Vjb25kcworICogdGhhdCBvbmUgdW5pdCBvZiBOVl9DVFJMX0ZSQU1FTE9D
S19TWU5DX0RFTEFZIGNvcnJlc3BvbmRzIHRvLgorICovCisjZGVmaW5lIE5WX0NUUkxfRlJBTUVM
T0NLX1NZTkNfREVMQVlfUkVTT0xVVElPTiAzMTggLyogUi0tICovCisKKy8qCisgKiBOVl9DVFJM
X0dQVV9DT09MRVJfTUFOVUFMX0NPTlRST0wgLSBRdWVyeSB0aGUgY3VycmVudCBvciBzZXQgYSBu
ZXcKKyAqIGNvb2xlciBjb250cm9sIHN0YXRlOyB0aGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUg
Y29udHJvbHMgdGhlCisgKiBhdmFpbGFiaWxpdHkgb2YgYWRkaXRpb25hbCBjb29sZXIgY29udHJv
bCBhdHRyaWJ1dGVzIChzZWUgYmVsb3cpLgorICoKKyAqIE5vdGU6IHRoaXMgYXR0cmlidXRlIGlz
IHVuYXZhaWxhYmxlIHVubGVzcyBjb29sZXIgY29udHJvbCBzdXBwb3J0CisgKiBoYXMgYmVlbiBl
bmFibGVkIGluIHRoZSBYIHNlcnZlciAoYnkgdGhlIHVzZXIpLgorICovCisKKyNkZWZpbmUgTlZf
Q1RSTF9HUFVfQ09PTEVSX01BTlVBTF9DT05UUk9MIDMxOSAvKiBSVy1HICovCisjZGVmaW5lIE5W
X0NUUkxfR1BVX0NPT0xFUl9NQU5VQUxfQ09OVFJPTF9GQUxTRSAwCisjZGVmaW5lIE5WX0NUUkxf
R1BVX0NPT0xFUl9NQU5VQUxfQ09OVFJPTF9UUlVFIDEKKworLyoKKyAqIE5WX0NUUkxfVEhFUk1B
TF9DT09MRVJfTEVWRUwgLSBSZXR1cm5zIGNvb2xlcidzIGN1cnJlbnQgb3BlcmF0aW5nCisgKiBs
ZXZlbC4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfVEhFUk1BTF9DT09MRVJfTEVWRUwgMzIwIC8q
IFJXLUMgKi8KKworLyogTlZfQ1RSTF9USEVSTUFMX0NPT0xFUl9MRVZFTF9TRVRfREVGQVVMVCAt
IFNldHMgZGVmYXVsdCB2YWx1ZXMgb2YKKyAqIGNvb2xlci4KKyAqLworCisjZGVmaW5lIE5WX0NU
UkxfVEhFUk1BTF9DT09MRVJfTEVWRUxfU0VUX0RFRkFVTFQgMzIxIC8qIC1XLUMgKi8KKworLyoK
KyAqIE5WX0NUUkxfVEhFUk1BTF9DT09MRVJfQ09OVFJPTF9UWVBFIC0KKyAqIFJldHVybnMgYSBj
b29sZXIncyBjb250cm9sIHNpZ25hbCBjaGFyYWN0ZXJpc3RpY3MuCisgKiBUaGUgcG9zc2libGUg
dHlwZXMgYXJlIHJlc3RyaWN0ZWQsIFZhcmlhYmxlIGFuZCBUb2dnbGUuCisgKi8KKworI2RlZmlu
ZSBOVl9DVFJMX1RIRVJNQUxfQ09PTEVSX0NPTlRST0xfVFlQRSAzMjIgLyogUi0tQyAqLworI2Rl
ZmluZSBOVl9DVFJMX1RIRVJNQUxfQ09PTEVSX0NPTlRST0xfVFlQRV9OT05FIDAKKyNkZWZpbmUg
TlZfQ1RSTF9USEVSTUFMX0NPT0xFUl9DT05UUk9MX1RZUEVfVE9HR0xFIDEKKyNkZWZpbmUgTlZf
Q1RSTF9USEVSTUFMX0NPT0xFUl9DT05UUk9MX1RZUEVfVkFSSUFCTEUgMgorCisvKgorICogTlZf
Q1RSTF9USEVSTUFMX0NPT0xFUl9UQVJHRVQgLSBSZXR1cm5zIG9iamVjdHMgdGhhdCBjb29sZXIg
Y29vbHMuCisgKiBUYXJnZXRzIG1heSBiZSBHUFUsIE1lbW9yeSwgUG93ZXIgU3VwcGx5IG9yIEFs
bCBvZiB0aGVzZS4KKyAqIEdQVV9SRUxBVEVEID0gR1BVIHwgTUVNT1JZIHwgUE9XRVJfU1VQUExZ
CisgKgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9USEVSTUFMX0NPT0xFUl9UQVJHRVQgMzIzIC8q
IFItLUMgKi8KKyNkZWZpbmUgTlZfQ1RSTF9USEVSTUFMX0NPT0xFUl9UQVJHRVRfTk9ORSAwCisj
ZGVmaW5lIE5WX0NUUkxfVEhFUk1BTF9DT09MRVJfVEFSR0VUX0dQVSAxCisjZGVmaW5lIE5WX0NU
UkxfVEhFUk1BTF9DT09MRVJfVEFSR0VUX01FTU9SWSAyCisjZGVmaW5lIE5WX0NUUkxfVEhFUk1B
TF9DT09MRVJfVEFSR0VUX1BPV0VSX1NVUFBMWSA0CisjZGVmaW5lIE5WX0NUUkxfVEhFUk1BTF9D
T09MRVJfVEFSR0VUX0dQVV9SRUxBVEVEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAoTlZfQ1RSTF9USEVSTUFMX0NPT0xFUl9UQVJHRVRfR1BVIHwgTlZfQ1RSTF9USEVSTUFM
X0NPT0xFUl9UQVJHRVRfTUVNT1JZIHwgXAorICAgICBOVl9DVFJMX1RIRVJNQUxfQ09PTEVSX1RB
UkdFVF9QT1dFUl9TVVBQTFkpCisKKy8qCisgKiBOVl9DVFJMX0dQVV9FQ0NfU1VQUE9SVEVEIC0g
UmVwb3J0cyB3aGV0aGVyIEVDQyBpcyBzdXBwb3J0ZWQgYnkgdGhlCisgKiB0YXJnZXRlZCBHUFUu
CisgKi8KKyNkZWZpbmUgTlZfQ1RSTF9HUFVfRUNDX1NVUFBPUlRFRCAzMjQgLyogUi0tRyAqLwor
I2RlZmluZSBOVl9DVFJMX0dQVV9FQ0NfU1VQUE9SVEVEX0ZBTFNFIDAKKyNkZWZpbmUgTlZfQ1RS
TF9HUFVfRUNDX1NVUFBPUlRFRF9UUlVFIDEKKworLyoKKyAqIE5WX0NUUkxfR1BVX0VDQ19TVEFU
VVMgLSBSZXR1cm5zIHRoZSBjdXJyZW50IGhhcmR3YXJlIEVDQyBzZXR0aW5nCisgKiBmb3IgdGhl
IHRhcmdldGVkIEdQVS4KKyAqLworI2RlZmluZSBOVl9DVFJMX0dQVV9FQ0NfU1RBVFVTIDMyNSAv
KiBSLS1HICovCisjZGVmaW5lIE5WX0NUUkxfR1BVX0VDQ19TVEFUVVNfRElTQUJMRUQgMAorI2Rl
ZmluZSBOVl9DVFJMX0dQVV9FQ0NfU1RBVFVTX0VOQUJMRUQgMQorCisvKgorICogTlZfQ1RSTF9H
UFVfRUNDX0NPTkZJR1VSQVRJT04gLSBSZXBvcnRzIHdoZXRoZXIgRUNDIGNhbiBiZSBjb25maWd1
cmVkCisgKiBkeW5hbWljYWxseSBmb3IgdGhlIEdQVSBpbiBxdWVzdGlvbi4KKyAqLworI2RlZmlu
ZSBOVl9DVFJMX0dQVV9FQ0NfQ09ORklHVVJBVElPTl9TVVBQT1JURUQgMzI2IC8qIFItLUcgKi8K
KyNkZWZpbmUgTlZfQ1RSTF9HUFVfRUNDX0NPTkZJR1VSQVRJT05fU1VQUE9SVEVEX0ZBTFNFIDAK
KyNkZWZpbmUgTlZfQ1RSTF9HUFVfRUNDX0NPTkZJR1VSQVRJT05fU1VQUE9SVEVEX1RSVUUgMQor
CisvKgorICogTlZfQ1RSTF9HUFVfRUNDX0NPTkZJR1VSQVRJT05fU0VUVElORyAtIFJldHVybnMg
dGhlIGN1cnJlbnQgRUNDCisgKiBjb25maWd1cmF0aW9uIHNldHRpbmcgb3Igc3BlY2lmaWVzIG5l
dyBzZXR0aW5ncy4gIE5ldyBzZXR0aW5ncyBkbyBub3QKKyAqIHRha2UgZWZmZWN0IHVudGlsIHRo
ZSBuZXh0IFBPU1QuCisgKi8KKyNkZWZpbmUgTlZfQ1RSTF9HUFVfRUNDX0NPTkZJR1VSQVRJT04g
MzI3IC8qIFJXLUcgKi8KKyNkZWZpbmUgTlZfQ1RSTF9HUFVfRUNDX0NPTkZJR1VSQVRJT05fRElT
QUJMRUQgMAorI2RlZmluZSBOVl9DVFJMX0dQVV9FQ0NfQ09ORklHVVJBVElPTl9FTkFCTEVEIDEK
KworLyoKKyAqIE5WX0NUUkxfR1BVX0VDQ19ERUZBVUxUX0NPTkZJR1VSQVRJT05fU0VUVElORyAt
IFJldHVybnMgdGhlIGRlZmF1bHQKKyAqIEVDQyBjb25maWd1cmF0aW9uIHNldHRpbmcuCisgKi8K
KyNkZWZpbmUgTlZfQ1RSTF9HUFVfRUNDX0RFRkFVTFRfQ09ORklHVVJBVElPTiAzMjggLyogUi0t
RyAqLworI2RlZmluZSBOVl9DVFJMX0dQVV9FQ0NfREVGQVVMVF9DT05GSUdVUkFUSU9OX0RJU0FC
TEVEIDAKKyNkZWZpbmUgTlZfQ1RSTF9HUFVfRUNDX0RFRkFVTFRfQ09ORklHVVJBVElPTl9FTkFC
TEVEIDEKKworLyoKKyAqIE5WX0NUUkxfR1BVX0VDQ19TSU5HTEVfQklUX0VSUk9SUyAtIFJldHVy
bnMgdGhlIG51bWJlciBvZiBzaW5nbGUtYml0CisgKiBFQ0MgZXJyb3JzIGRldGVjdGVkIGJ5IHRo
ZSB0YXJnZXRlZCBHUFUgc2luY2UgdGhlIGxhc3QgUE9TVC4KKyAqIE5vdGU6IHRoaXMgYXR0cmli
dXRlIGlzIGEgNjQtYml0IGludGVnZXIgYXR0cmlidXRlLgorICovCisjZGVmaW5lIE5WX0NUUkxf
R1BVX0VDQ19TSU5HTEVfQklUX0VSUk9SUyAzMjkgLyogUi0tR1EgKi8KKworLyoKKyAqIE5WX0NU
UkxfR1BVX0VDQ19ET1VCTEVfQklUX0VSUk9SUyAtIFJldHVybnMgdGhlIG51bWJlciBvZiBkb3Vi
bGUtYml0CisgKiBFQ0MgZXJyb3JzIGRldGVjdGVkIGJ5IHRoZSB0YXJnZXRlZCBHUFUgc2luY2Ug
dGhlIGxhc3QgUE9TVC4KKyAqIE5vdGU6IHRoaXMgYXR0cmlidXRlIGlzIGEgNjQtYml0IGludGVn
ZXIgYXR0cmlidXRlLgorICovCisjZGVmaW5lIE5WX0NUUkxfR1BVX0VDQ19ET1VCTEVfQklUX0VS
Uk9SUyAzMzAgLyogUi0tR1EgKi8KKworLyoKKyAqIE5WX0NUUkxfR1BVX0VDQ19BR0dSRUdBVEVf
U0lOR0xFX0JJVF9FUlJPUlMgLSBSZXR1cm5zIHRoZSBudW1iZXIgb2YKKyAqIHNpbmdsZS1iaXQg
RUNDIGVycm9ycyBkZXRlY3RlZCBieSB0aGUgdGFyZ2V0ZWQgR1BVIHNpbmNlIHRoZQorICogbGFz
dCBjb3VudGVyIHJlc2V0LgorICogTm90ZTogdGhpcyBhdHRyaWJ1dGUgaXMgYSA2NC1iaXQgaW50
ZWdlciBhdHRyaWJ1dGUuCisgKi8KKyNkZWZpbmUgTlZfQ1RSTF9HUFVfRUNDX0FHR1JFR0FURV9T
SU5HTEVfQklUX0VSUk9SUyAzMzEgLyogUi0tR1EgKi8KKworLyoKKyAqIE5WX0NUUkxfR1BVX0VD
Q19BR0dSRUdBVEVfRE9VQkxFX0JJVF9FUlJPUlMgLSBSZXR1cm5zIHRoZSBudW1iZXIgb2YKKyAq
IGRvdWJsZS1iaXQgRUNDIGVycm9ycyBkZXRlY3RlZCBieSB0aGUgdGFyZ2V0ZWQgR1BVIHNpbmNl
IHRoZQorICogbGFzdCBjb3VudGVyIHJlc2V0LgorICogTm90ZTogdGhpcyBhdHRyaWJ1dGUgaXMg
YSA2NC1iaXQgaW50ZWdlciBhdHRyaWJ1dGUuCisgKi8KKyNkZWZpbmUgTlZfQ1RSTF9HUFVfRUND
X0FHR1JFR0FURV9ET1VCTEVfQklUX0VSUk9SUyAzMzIgLyogUi0tR1EgKi8KKworLyoKKyAqIE5W
X0NUUkxfR1BVX0VDQ19SRVNFVF9FUlJPUl9TVEFUVVMgLSBSZXNldHMgdGhlIHZvbGF0aWxlL2Fn
Z3JlZ2F0ZQorICogc2luZ2xlLWJpdCBhbmQgZG91YmxlLWJpdCBlcnJvciBjb3VudGVycy4gIFRo
aXMgYXR0cmlidXRlIGlzIGEKKyAqIGJpdG1hc2sgYXR0cmlidXRlLgorICovCisjZGVmaW5lIE5W
X0NUUkxfR1BVX0VDQ19SRVNFVF9FUlJPUl9TVEFUVVMgMzMzIC8qIC1XLUcgKi8KKyNkZWZpbmUg
TlZfQ1RSTF9HUFVfRUNDX1JFU0VUX0VSUk9SX1NUQVRVU19WT0xBVElMRSAweDAwMDAwMDAxCisj
ZGVmaW5lIE5WX0NUUkxfR1BVX0VDQ19SRVNFVF9FUlJPUl9TVEFUVVNfQUdHUkVHQVRFIDB4MDAw
MDAwMDIKKworLyoKKyAqIE5WX0NUUkxfR1BVX1BPV0VSX01JWkVSX01PREUgLSBQcm92aWRlcyBh
IGhpbnQgdG8gdGhlIGRyaXZlcgorICogYXMgdG8gaG93IHRvIG1hbmFnZSB0aGUgcGVyZm9ybWFu
Y2Ugb2YgdGhlIEdQVS4KKyAqCisgKiBBREFQVElWRSAgICAgICAgICAgICAgICAgICAgIC0gYWRq
dXN0IEdQVSBjbG9ja3MgYmFzZWQgb24gR1BVCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdXRpbGl6YXRpb24KKyAqIFBSRUZFUl9NQVhJTVVNX1BFUkZPUk1BTkNFICAgLSByYWlz
ZSBHUFUgY2xvY2tzIHRvIGZhdm9yCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWF4aW11bSBwZXJmb3JtYW5jZSwgdG8gdGhlIGV4dGVudAorICogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoYXQgdGhlcm1hbCBhbmQgb3RoZXIgY29uc3RyYWludHMKKyAqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvdworICovCisjZGVmaW5lIE5WX0NUUkxfR1BV
X1BPV0VSX01JWkVSX01PREUgMzM0IC8qIFJXLUcgKi8KKyNkZWZpbmUgTlZfQ1RSTF9HUFVfUE9X
RVJfTUlaRVJfTU9ERV9BREFQVElWRSAwCisjZGVmaW5lIE5WX0NUUkxfR1BVX1BPV0VSX01JWkVS
X01PREVfUFJFRkVSX01BWElNVU1fUEVSRk9STUFOQ0UgMQorCisvKgorICogTlZfQ1RSTF9HVklf
U1lOQ19PVVRQVVRfRk9STUFUIC0gUmV0dXJucyB0aGUgb3V0cHV0IHN5bmMgc2lnbmFsCisgKiBm
cm9tIHRoZSBHVkkgZGV2aWNlLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HVklfU1lOQ19PVVRQ
VVRfRk9STUFUIDMzNSAvKiBSLS1JICovCisKKy8qCisgKiBOVl9DVFJMX0dWSV9NQVhfQ0hBTk5F
TFNfUEVSX0pBQ0sgIC0gUmV0dXJucyB0aGUgbWF4aW11bQorICogc3VwcG9ydGVkIG51bWJlciBv
ZiAobG9naWNhbCkgY2hhbm5lbHMgd2l0aGluIGEgc2luZ2xlIHBoeXNpY2FsIGphY2sgb2YKKyAq
IGEgR1ZJIGRldmljZS4gIEZvciBtb3N0IFNESSB2aWRlbyBmb3JtYXRzLCB0aGVyZSBpcyBvbmx5
IG9uZSBjaGFubmVsCisgKiAoY2hhbm5lbCAwKS4gIEJ1dCBmb3IgM0cgdmlkZW8gZm9ybWF0cyAo
YXMgc3BlY2lmaWVkIGluIFNNUFRFIDQyNSksCisgKiBhcyBhbiBleGFtcGxlLCB0aGVyZSBhcmUg
dHdvIGNoYW5uZWxzIChjaGFubmVsIDAgYW5kIGNoYW5uZWwgMSkgcGVyCisgKiBwaHlzaWNhbCBq
YWNrLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HVklfTUFYX0NIQU5ORUxTX1BFUl9KQUNLIDMz
NiAvKiBSLS1JICovCisKKy8qCisgKiBOVl9DVFJMX0dWSV9NQVhfU1RSRUFNUyAgLSBSZXR1cm5z
IHRoZSBtYXhpbXVtIG51bWJlciBvZiBzdHJlYW1zCisgKiB0aGF0IGNhbiBiZSBjb25maWd1cmVk
IG9uIHRoZSBHVkkgZGV2aWNlLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9HVklfTUFYX1NUUkVB
TVMgMzM3IC8qIFItLUkgKi8KKworLyoKKyAqIE5WX0NUUkxfR1ZJX05VTV9DQVBUVVJFX1NVUkZB
Q0VTIC0gVGhlIEdWSSBpbnRlcmZhY2UgZXhwb3NlZCB0aHJvdWdoCisgKiBOVi1DT05UUk9MIGFu
ZCB0aGUgR0xYX05WX3ZpZGVvX2lucHV0IGV4dGVuc2lvbiB1c2VzIGludGVybmFsIGNhcHR1cmUK
KyAqIHN1cmZhY2VzIHdoZW4gZnJhbWVzIGFyZSByZWFkIGZyb20gdGhlIEdWSSBkZXZpY2UuICBU
aGUKKyAqIE5WX0NUUkxfR1ZJX05VTV9DQVBUVVJFX1NVUkZBQ0VTIGNhbiBiZSB1c2VkIHRvIHF1
ZXJ5IGFuZCBhc3NpZ24gdGhlCisgKiBudW1iZXIgb2YgY2FwdHVyZSBzdXJmYWNlcy4gIFRoaXMg
YXR0cmlidXRlIGlzIGFwcGxpZWQgd2hlbgorICogZ2xYQmluZFZpZGVvQ2FwdHVyZURldmljZU5W
KCkgaXMgY2FsbGVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4KKyAqCisgKiBBIGxvd2VyIG51bWJlciBv
ZiBjYXB0dXJlIHN1cmZhY2VzIHdpbGwgbWVhbiBsZXNzIHZpZGVvIG1lbW9yeSBpcyB1c2VkLAor
ICogYnV0IGNhbiByZXN1bHQgaW4gZnJhbWVzIGJlaW5nIGRyb3BwZWQgaWYgdGhlIGFwcGxpY2F0
aW9uIGNhbm5vdCBrZWVwIHVwCisgKiB3aXRoIHRoZSBjYXB0dXJlIGRldmljZS4gIEEgaGlnaGVy
IG51bWJlciB3aWxsIHByZXZlbnQgZnJhbWVzIGZyb20gYmVpbmcKKyAqIGRyb3BwZWQsIG1ha2lu
ZyBjYXB0dXJlIG1vcmUgcmVsaWFibGUgYnV0IHdpbGwgY29uc3VtZSBtb3ZlIHZpZGVvIG1lbW9y
eS4KKyAqLworI2RlZmluZSBOVl9DVFJMX0dWSV9OVU1fQ0FQVFVSRV9TVVJGQUNFUyAzMzggLyog
UlctSSAqLworCisvKgorICogTlZfQ1RSTF9PVkVSU0NBTl9DT01QRU5TQVRJT04gLSBub3Qgc3Vw
cG9ydGVkCisgKi8KKyNkZWZpbmUgTlZfQ1RSTF9PVkVSU0NBTl9DT01QRU5TQVRJT04gMzM5IC8q
IFJXREcgKi8KKworLyoKKyAqIE5WX0NUUkxfR1BVX1BDSUVfR0VORVJBVElPTiAtIFJlcG9ydHMg
dGhlIGN1cnJlbnQgUENJZSBnZW5lcmF0aW9uLgorICovCisjZGVmaW5lIE5WX0NUUkxfR1BVX1BD
SUVfR0VORVJBVElPTiAzNDEgLyogUi0tR0kgKi8KKyNkZWZpbmUgTlZfQ1RSTF9HUFVfUENJRV9H
RU5FUkFUSU9OMSAweDAwMDAwMDAxCisjZGVmaW5lIE5WX0NUUkxfR1BVX1BDSUVfR0VORVJBVElP
TjIgMHgwMDAwMDAwMgorI2RlZmluZSBOVl9DVFJMX0dQVV9QQ0lFX0dFTkVSQVRJT04zIDB4MDAw
MDAwMDMKKworLyoKKyAqIE5WX0NUUkxfR1ZJX0JPVU5EX0dQVSAtIFJldHVybnMgdGhlIE5WX0NU
UkxfVEFSR0VUX1RZUEVfR1BVIHRhcmdldF9pZCBvZgorICogdGhlIEdQVSBjdXJyZW50bHkgYm91
bmQgdG8gdGhlIEdWSSBkZXZpY2UuICBSZXR1cm5zIC0xIGlmIG5vIEdQVSBpcworICogY3VycmVu
dGx5IGJvdW5kIHRvIHRoZSBHVkkgZGV2aWNlLgorICovCisjZGVmaW5lIE5WX0NUUkxfR1ZJX0JP
VU5EX0dQVSAzNDIgLyogUi0tSSAqLworCisvKgorICogTlZfQ1RSTF9HVklPX1JFUVVFU1RFRF9W
SURFT19GT1JNQVQzIC0gdGhpcyBhdHRyaWJ1dGUgaXMgb25seQorICogaW50ZW5kZWQgdG8gYmUg
dXNlZCB0byBxdWVyeSB0aGUgVmFsaWRWYWx1ZXMgZm9yCisgKiBOVl9DVFJMX0dWSU9fUkVRVUVT
VEVEX1ZJREVPX0ZPUk1BVCBmb3IgVklERU9fRk9STUFUIHZhbHVlcyBiZXR3ZWVuCisgKiA2NCBh
bmQgOTUuICBTZWUgTlZfQ1RSTF9HVklPX1JFUVVFU1RFRF9WSURFT19GT1JNQVQgZm9yIGRldGFp
bHMuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0dWSU9fUkVRVUVTVEVEX1ZJREVPX0ZPUk1BVDMg
MzQzIC8qIC0tLUdJICovCisKKy8qCisgKiBOVl9DVFJMX0FDQ0VMRVJBVEVfVFJBUEVaT0lEUyAt
IFRvZ2dsZXMgUkVOREVSIFRyYXBlem9pZCBhY2NlbGVyYXRpb24KKyAqLworCisjZGVmaW5lIE5W
X0NUUkxfQUNDRUxFUkFURV9UUkFQRVpPSURTIDM0NCAvKiBSVy0gKi8KKyNkZWZpbmUgTlZfQ1RS
TF9BQ0NFTEVSQVRFX1RSQVBFWk9JRFNfRElTQUJMRSAwCisjZGVmaW5lIE5WX0NUUkxfQUNDRUxF
UkFURV9UUkFQRVpPSURTX0VOQUJMRSAxCisKKy8qCisgKiBOVl9DVFJMX0dQVV9DT1JFUyAtIFJl
dHVybnMgbnVtYmVyIG9mIEdQVSBjb3JlcyBzdXBwb3J0ZWQgYnkgdGhlIGdyYXBoaWNzCisgKiBw
aXBlbGluZS4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfR1BVX0NPUkVTIDM0NSAvKiBSLS1HICov
CisKKy8qCisgKiBOVl9DVFJMX0dQVV9NRU1PUllfQlVTX1dJRFRIIC0gUmV0dXJucyBtZW1vcnkg
YnVzIGJhbmR3aWR0aCBvbiB0aGUgYXNzb2NpYXRlZAorICogc3ViZGV2aWNlLgorICovCisKKyNk
ZWZpbmUgTlZfQ1RSTF9HUFVfTUVNT1JZX0JVU19XSURUSCAzNDYgLyogUi0tRyAqLworCisvKgor
ICogTlZfQ1RSTF9HVklfVEVTVF9NT0RFIC0gVGhpcyBhdHRyaWJ1dGUgY29udHJvbHMgdGhlIEdW
SSB0ZXN0IG1vZGUuICBXaGVuCisgKiBlbmFibGVkLCB0aGUgR1ZJIGRldmljZSB3aWxsIGdlbmVy
YXRlIGZha2UgZGF0YSBhcyBxdWlja2x5IGFzIHBvc3NpYmxlLiAgQWxsCisgKiBHVkkgc2V0dGlu
Z3MgYXJlIHN0aWxsIHZhbGlkIHdoZW4gdGhpcyBpcyBlbmFibGVkIChlLmcuLCB0aGUgcmVxdWVz
dGVkIHZpZGVvCisgKiBmb3JtYXQgaXMgaG9ub3JlZCBhbmQgc2V0cyB0aGUgdmlkZW8gc2l6ZSku
CisgKiBUaGlzIG1heSBiZSB1c2VkIHRvIHRlc3QgdGhlIHBpcGVsaW5lLgorICovCisKKyNkZWZp
bmUgTlZfQ1RSTF9HVklfVEVTVF9NT0RFIDM0NyAvKiBSLS1JICovCisjZGVmaW5lIE5WX0NUUkxf
R1ZJX1RFU1RfTU9ERV9ESVNBQkxFIDAKKyNkZWZpbmUgTlZfQ1RSTF9HVklfVEVTVF9NT0RFX0VO
QUJMRSAxCisKKy8qCisgKiBOVl9DVFJMX0NPTE9SX1NQQUNFIC0gVGhpcyBvcHRpb24gc2V0cyBj
b2xvciBzcGFjZSBvZiB0aGUgdmlkZW8KKyAqIHNpZ25hbC4KKyAqLworI2RlZmluZSBOVl9DVFJM
X0NPTE9SX1NQQUNFIDM0OCAvKiBSV0RHICovCisjZGVmaW5lIE5WX0NUUkxfQ09MT1JfU1BBQ0Vf
UkdCIDAKKyNkZWZpbmUgTlZfQ1RSTF9DT0xPUl9TUEFDRV9ZQ2JDcjQyMiAxCisjZGVmaW5lIE5W
X0NUUkxfQ09MT1JfU1BBQ0VfWUNiQ3I0NDQgMgorCisvKgorICogTlZfQ1RSTF9DT0xPUl9SQU5H
RSAtIFRoaXMgb3B0aW9uIHNldHMgY29sb3IgcmFuZ2Ugb2YgdGhlIHZpZGVvCisgKiBzaWduYWwu
CisgKi8KKyNkZWZpbmUgTlZfQ1RSTF9DT0xPUl9SQU5HRSAzNDkgLyogUldERyAqLworI2RlZmlu
ZSBOVl9DVFJMX0NPTE9SX1JBTkdFX0ZVTEwgMAorI2RlZmluZSBOVl9DVFJMX0NPTE9SX1JBTkdF
X0xJTUlURUQgMQorCisvKgorICogTlZfQ1RSTF9HUFVfU0NBTElOR19ERUZBVUxUX1RBUkdFVCAt
IG5vdCBzdXBwb3J0ZWQKKyAqCisgKiBOVl9DVFJMX0dQVV9TQ0FMSU5HX0RFRkFVTFRfTUVUSE9E
IC0gbm90IHN1cHBvcnRlZAorICovCisjZGVmaW5lIE5WX0NUUkxfR1BVX1NDQUxJTkdfREVGQVVM
VF9UQVJHRVQgMzUwIC8qIFItREcgKi8KKyNkZWZpbmUgTlZfQ1RSTF9HUFVfU0NBTElOR19ERUZB
VUxUX01FVEhPRCAzNTEgLyogUi1ERyAqLworCisvKgorICogTlZfQ1RSTF9ESVRIRVJJTkdfTU9E
RSAtIENvbnRyb2xzIHRoZSBkaXRoZXJpbmcgbW9kZSwgd2hlbgorICogTlZfQ1RSTF9DVVJSRU5U
X0RJVEhFUklORyBpcyBFbmFibGVkLgorICoKKyAqIEFVVE86IGFsbG93IHRoZSBkcml2ZXIgdG8g
Y2hvb3NlIHRoZSBkaXRoZXJpbmcgbW9kZSBhdXRvbWF0aWNhbGx5LgorICoKKyAqIERZTkFNSUNf
MlgyOiB1c2UgYSAyeDIgbWF0cml4IHRvIGRpdGhlciBmcm9tIHRoZSBHUFUncyBwaXhlbAorICog
cGlwZWxpbmUgdG8gdGhlIGJpdCBkZXB0aCBvZiB0aGUgZmxhdCBwYW5lbC4gIFRoZSBtYXRyaXgg
dmFsdWVzCisgKiBhcmUgY2hhbmdlZCBmcm9tIGZyYW1lIHRvIGZyYW1lLgorICoKKyAqIFNUQVRJ
Q18yWDI6IHVzZSBhIDJ4MiBtYXRyaXggdG8gZGl0aGVyIGZyb20gdGhlIEdQVSdzIHBpeGVsCisg
KiBwaXBlbGluZSB0byB0aGUgYml0IGRlcHRoIG9mIHRoZSBmbGF0IHBhbmVsLiAgVGhlIG1hdHJp
eCB2YWx1ZXMKKyAqIGRvIG5vdCBjaGFuZ2UgZnJvbSBmcmFtZSB0byBmcmFtZS4KKyAqCisgKiBU
RU1QT1JBTDogdXNlIGEgcHNldWRvcmFuZG9tIHZhbHVlIGZyb20gYSB1bmlmb3JtIGRpc3RyaWJ1
dGlvbiBjYWxjdWxhdGVkIGF0CisgKiBldmVyeSBwaXhlbCB0byBhY2hpZXZlIHN0b2NoYXN0aWMg
ZGl0aGVyaW5nLiAgVGhpcyBtZXRob2QgcHJvZHVjZXMgYSBiZXR0ZXIKKyAqIHZpc3VhbCByZXN1
bHQgdGhhbiAyeDIgbWF0cml4IGFwcHJvYWNoZXMuCisgKi8KKyNkZWZpbmUgTlZfQ1RSTF9ESVRI
RVJJTkdfTU9ERSAzNTIgLyogUldERyAqLworI2RlZmluZSBOVl9DVFJMX0RJVEhFUklOR19NT0RF
X0FVVE8gMAorI2RlZmluZSBOVl9DVFJMX0RJVEhFUklOR19NT0RFX0RZTkFNSUNfMlgyIDEKKyNk
ZWZpbmUgTlZfQ1RSTF9ESVRIRVJJTkdfTU9ERV9TVEFUSUNfMlgyIDIKKyNkZWZpbmUgTlZfQ1RS
TF9ESVRIRVJJTkdfTU9ERV9URU1QT1JBTCAzCisKKy8qCisgKiBOVl9DVFJMX0NVUlJFTlRfRElU
SEVSSU5HIC0gUmV0dXJucyB0aGUgY3VycmVudCBkaXRoZXJpbmcgc3RhdGUuCisgKi8KKyNkZWZp
bmUgTlZfQ1RSTF9DVVJSRU5UX0RJVEhFUklORyAzNTMgLyogUi1ERyAqLworI2RlZmluZSBOVl9D
VFJMX0NVUlJFTlRfRElUSEVSSU5HX0RJU0FCTEVEIDAKKyNkZWZpbmUgTlZfQ1RSTF9DVVJSRU5U
X0RJVEhFUklOR19FTkFCTEVEIDEKKworLyoKKyAqIE5WX0NUUkxfQ1VSUkVOVF9ESVRIRVJJTkdf
TU9ERSAtIFJldHVybnMgdGhlIGN1cnJlbnQgZGl0aGVyaW5nCisgKiBtb2RlLgorICovCisjZGVm
aW5lIE5WX0NUUkxfQ1VSUkVOVF9ESVRIRVJJTkdfTU9ERSAzNTQgLyogUi1ERyAqLworI2RlZmlu
ZSBOVl9DVFJMX0NVUlJFTlRfRElUSEVSSU5HX01PREVfTk9ORSAwCisjZGVmaW5lIE5WX0NUUkxf
Q1VSUkVOVF9ESVRIRVJJTkdfTU9ERV9EWU5BTUlDXzJYMiAxCisjZGVmaW5lIE5WX0NUUkxfQ1VS
UkVOVF9ESVRIRVJJTkdfTU9ERV9TVEFUSUNfMlgyIDIKKyNkZWZpbmUgTlZfQ1RSTF9DVVJSRU5U
X0RJVEhFUklOR19NT0RFX1RFTVBPUkFMIDMKKworLyoKKyAqIE5WX0NUUkxfVEhFUk1BTF9TRU5T
T1JfUkVBRElORyAtIFJldHVybnMgdGhlIHRoZXJtYWwgc2Vuc29yJ3MgY3VycmVudAorICogcmVh
ZGluZy4KKyAqLworI2RlZmluZSBOVl9DVFJMX1RIRVJNQUxfU0VOU09SX1JFQURJTkcgMzU1IC8q
IFItLVMgKi8KKworLyoKKyAqIE5WX0NUUkxfVEhFUk1BTF9TRU5TT1JfUFJPVklERVIgLSBSZXR1
cm5zIHRoZSBoYXJkd2FyZSBkZXZpY2UgdGhhdAorICogcHJvdmlkZXMgdGhlIHRoZXJtYWwgc2Vu
c29yLgorICovCisjZGVmaW5lIE5WX0NUUkxfVEhFUk1BTF9TRU5TT1JfUFJPVklERVIgMzU2IC8q
IFItLVMgKi8KKyNkZWZpbmUgTlZfQ1RSTF9USEVSTUFMX1NFTlNPUl9QUk9WSURFUl9OT05FIDAK
KyNkZWZpbmUgTlZfQ1RSTF9USEVSTUFMX1NFTlNPUl9QUk9WSURFUl9HUFVfSU5URVJOQUwgMQor
I2RlZmluZSBOVl9DVFJMX1RIRVJNQUxfU0VOU09SX1BST1ZJREVSX0FETTEwMzIgMgorI2RlZmlu
ZSBOVl9DVFJMX1RIRVJNQUxfU0VOU09SX1BST1ZJREVSX0FEVDc0NjEgMworI2RlZmluZSBOVl9D
VFJMX1RIRVJNQUxfU0VOU09SX1BST1ZJREVSX01BWDY2NDkgNAorI2RlZmluZSBOVl9DVFJMX1RI
RVJNQUxfU0VOU09SX1BST1ZJREVSX01BWDE2MTcgNQorI2RlZmluZSBOVl9DVFJMX1RIRVJNQUxf
U0VOU09SX1BST1ZJREVSX0xNOTkgNgorI2RlZmluZSBOVl9DVFJMX1RIRVJNQUxfU0VOU09SX1BS
T1ZJREVSX0xNODkgNworI2RlZmluZSBOVl9DVFJMX1RIRVJNQUxfU0VOU09SX1BST1ZJREVSX0xN
NjQgOAorI2RlZmluZSBOVl9DVFJMX1RIRVJNQUxfU0VOU09SX1BST1ZJREVSX0c3ODEgOQorI2Rl
ZmluZSBOVl9DVFJMX1RIRVJNQUxfU0VOU09SX1BST1ZJREVSX0FEVDc0NzMgMTAKKyNkZWZpbmUg
TlZfQ1RSTF9USEVSTUFMX1NFTlNPUl9QUk9WSURFUl9TQk1BWDY2NDkgMTEKKyNkZWZpbmUgTlZf
Q1RSTF9USEVSTUFMX1NFTlNPUl9QUk9WSURFUl9WQklPU0VWVCAxMgorI2RlZmluZSBOVl9DVFJM
X1RIRVJNQUxfU0VOU09SX1BST1ZJREVSX09TIDEzCisjZGVmaW5lIE5WX0NUUkxfVEhFUk1BTF9T
RU5TT1JfUFJPVklERVJfVU5LTk9XTiAweEZGRkZGRkZGCisKKy8qCisgKiBOVl9DVFJMX1RIRVJN
QUxfU0VOU09SX1RBUkdFVCAtIFJldHVybnMgd2hhdCBoYXJkd2FyZSBjb21wb25lbnQKKyAqIHRo
ZSB0aGVybWFsIHNlbnNvciBpcyBtZWFzdXJpbmcuCisgKi8KKyNkZWZpbmUgTlZfQ1RSTF9USEVS
TUFMX1NFTlNPUl9UQVJHRVQgMzU3IC8qIFItLVMgKi8KKyNkZWZpbmUgTlZfQ1RSTF9USEVSTUFM
X1NFTlNPUl9UQVJHRVRfTk9ORSAwCisjZGVmaW5lIE5WX0NUUkxfVEhFUk1BTF9TRU5TT1JfVEFS
R0VUX0dQVSAxCisjZGVmaW5lIE5WX0NUUkxfVEhFUk1BTF9TRU5TT1JfVEFSR0VUX01FTU9SWSAy
CisjZGVmaW5lIE5WX0NUUkxfVEhFUk1BTF9TRU5TT1JfVEFSR0VUX1BPV0VSX1NVUFBMWSA0Cisj
ZGVmaW5lIE5WX0NUUkxfVEhFUk1BTF9TRU5TT1JfVEFSR0VUX0JPQVJEIDgKKyNkZWZpbmUgTlZf
Q1RSTF9USEVSTUFMX1NFTlNPUl9UQVJHRVRfVU5LTk9XTiAweEZGRkZGRkZGCisKKy8qCisgKiBO
Vl9DVFJMX1NIT1dfTVVMVElHUFVfVklTVUFMX0lORElDQVRPUiAtIHdoZW4gVFJVRSwgT3BlbkdM
IHdpbGwKKyAqIGRyYXcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgTVVMVElHUFUgbW9k
ZS4KKyAqLworI2RlZmluZSBOVl9DVFJMX1NIT1dfTVVMVElHUFVfVklTVUFMX0lORElDQVRPUiAz
NTggLyogUlctWCAqLworI2RlZmluZSBOVl9DVFJMX1NIT1dfTVVMVElHUFVfVklTVUFMX0lORElD
QVRPUl9GQUxTRSAwCisjZGVmaW5lIE5WX0NUUkxfU0hPV19NVUxUSUdQVV9WSVNVQUxfSU5ESUNB
VE9SX1RSVUUgMQorCisvKgorICogTlZfQ1RSTF9HUFVfQ1VSUkVOVF9QUk9DRVNTT1JfQ0xPQ0tf
RlJFUVMgLSBSZXR1cm5zIEdQVSdzIHByb2Nlc3NvcgorICogY2xvY2sgZnJlcXMuCisgKi8KKyNk
ZWZpbmUgTlZfQ1RSTF9HUFVfQ1VSUkVOVF9QUk9DRVNTT1JfQ0xPQ0tfRlJFUVMgMzU5IC8qIFJX
LUcgKi8KKworLyoKKyAqIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfRkxBR1MgLSBxdWVyeSB0
aGUgZmxhZ3MgKHZhcmlvdXMgaW5mb3JtYXRpb24KKyAqIGZvciB0aGUgc3BlY2lmaWVkIE5WX0NU
UkxfR1ZJT19WSURFT19GT1JNQVRfKi4gIFNvIHRoYXQgdGhpcyBjYW4gYmUKKyAqIHF1ZXJpZWQg
d2l0aCBleGlzdGluZyBpbnRlcmZhY2VzLCB0aGUgdmlkZW8gZm9ybWF0IHNob3VsZCBiZSBzcGVj
aWZpZWQKKyAqIGluIHRoZSBkaXNwbGF5X21hc2sgZmllbGQ7IGVnOgorICoKKyAqIFhOVkNUUkxR
dWVyeVRhcmdldEF0dHJpYnV0ZShkcHksCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TlZfQ1RSTF9UQVJHRVRfVFlQRV9HVkksCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z3ZpLAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5WX0NUUkxfR1ZJT19WSURFT19G
T1JNQVRfNzIwUF82MF8wMF9TTVBURTI5NiwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUX0ZMQUdTLAorICogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZmbGFncyk7CisgKgorICogTm90ZTogVGhlIE5WX0NUUkxfR1ZJT19WSURFT19G
T1JNQVRfRkxBR1NfM0dfMTA4MFBfTk9fMTJCUEMgZmxhZyBpcyBzZXQKKyAqICAgICAgIGZvciB0
aG9zZSAxMDgwUCAzRyBtb2RlcyAobGV2ZWwgQSBhbmQgQikgdGhhdCBkbyBub3Qgc3VwcG9ydAor
ICogICAgICAgMTIgYml0cyBwZXIgY29tcG9uZW50ICh3aGVuIGNvbmZpZ3VyaW5nIGEgR1ZJIHN0
cmVhbS4pCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUX0ZMQUdTIDM2
MCAvKiBSLS1JICovCisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfRkxBR1NfTk9O
RSAweDAwMDAwMDAwCisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfRkxBR1NfSU5U
RVJMQUNFRCAweDAwMDAwMDAxCisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfRkxB
R1NfUFJPR1JFU1NJVkUgMHgwMDAwMDAwMgorI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9S
TUFUX0ZMQUdTX1BTRiAweDAwMDAwMDA0CisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JN
QVRfRkxBR1NfM0dfTEVWRUxfQSAweDAwMDAwMDA4CisjZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURF
T19GT1JNQVRfRkxBR1NfM0dfTEVWRUxfQiAweDAwMDAwMDEwCisjZGVmaW5lIE5WX0NUUkxfR1ZJ
T19WSURFT19GT1JNQVRfRkxBR1NfM0cgXAorICAgICgoTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1B
VF9GTEFHU18zR19MRVZFTF9BKSB8IChOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUX0ZMQUdTXzNH
X0xFVkVMX0IpKQorI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUX0ZMQUdTXzNHXzEw
ODBQX05PXzEyQlBDIDB4MDAwMDAwMjAKKworLyoKKyAqIE5WX0NUUkxfR1BVX1BDSUVfTUFYX0xJ
TktfU1BFRUQgLSByZXR1cm5zIG1heGltdW0gUENJZSBsaW5rIHNwZWVkLAorICogaW4gZ2lnYXRy
YW5zZmVycyBwZXIgc2Vjb25kIChHVC9zKS4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfR1BVX1BD
SUVfTUFYX0xJTktfU1BFRUQgMzYxIC8qIFItLUdJICovCisKKy8qCisgKiBOVl9DVFJMXzNEX1ZJ
U0lPTl9QUk9fUkVTRVRfVFJBTlNDRUlWRVJfVE9fRkFDVE9SWV9TRVRUSU5HUyAtIFJlc2V0cyB0
aGUKKyAqIDNEIFZpc2lvbiBQcm8gdHJhbnNjZWl2ZXIgdG8gaXRzIGZhY3Rvcnkgc2V0dGluZ3Mu
CisgKi8KKyNkZWZpbmUgTlZfQ1RSTF8zRF9WSVNJT05fUFJPX1JFU0VUX1RSQU5TQ0VJVkVSX1RP
X0ZBQ1RPUllfU0VUVElOR1MgMzYzIC8qIC1XLVQgKi8KKworLyoKKyAqIE5WX0NUUkxfM0RfVklT
SU9OX1BST19UUkFOU0NFSVZFUl9DSEFOTkVMIC0gQ29udHJvbHMgdGhlIGNoYW5uZWwgdGhhdCBp
cworICogY3VycmVudGx5IHVzZWQgYnkgdGhlIDNEIFZpc2lvbiBQcm8gdHJhbnNjZWl2ZXIuCisg
Ki8KKyNkZWZpbmUgTlZfQ1RSTF8zRF9WSVNJT05fUFJPX1RSQU5TQ0VJVkVSX0NIQU5ORUwgMzY0
IC8qIFJXLVQgKi8KKworLyoKKyAqIE5WX0NUUkxfM0RfVklTSU9OX1BST19UUkFOU0NFSVZFUl9N
T0RFIC0gQ29udHJvbHMgdGhlIG1vZGUgaW4gd2hpY2ggdGhlCisgKiAzRCBWaXNpb24gUHJvIHRy
YW5zY2VpdmVyIG9wZXJhdGVzLgorICogTlZfQ1RSTF8zRF9WSVNJT05fUFJPX1RNX0xPV19SQU5H
RSBpcyBiaWRpcmVjdGlvbmFsCisgKiBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fVE1fTUVESVVNX1JB
TkdFIGlzIGJpZGlyZWN0aW9uYWwKKyAqIE5WX0NUUkxfM0RfVklTSU9OX1BST19UTV9ISUdIX1JB
TkdFIG1heSBiZSBiaWRpcmVjdGlvbmFsIGp1c3QgdXAgdG8gYQorICogICAgIGdpdmVuIHJhbmdl
LCBhbmQgdW5pZGlyZWN0aW9uYWwgYmV5b25kIGl0CisgKiBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9f
VE1fQ09VTlQgaXMgdGhlIHRvdGFsIG51bWJlciBvZgorICogICAgIDNEIFZpc2lvbiBQcm8gdHJh
bnNjZWl2ZXIgbW9kZXMKKyAqLworI2RlZmluZSBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fVFJBTlND
RUlWRVJfTU9ERSAzNjUgLyogUlctVCAqLworI2RlZmluZSBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9f
VFJBTlNDRUlWRVJfTU9ERV9JTlZBTElEIDAKKyNkZWZpbmUgTlZfQ1RSTF8zRF9WSVNJT05fUFJP
X1RSQU5TQ0VJVkVSX01PREVfTE9XX1JBTkdFIDEKKyNkZWZpbmUgTlZfQ1RSTF8zRF9WSVNJT05f
UFJPX1RSQU5TQ0VJVkVSX01PREVfTUVESVVNX1JBTkdFIDIKKyNkZWZpbmUgTlZfQ1RSTF8zRF9W
SVNJT05fUFJPX1RSQU5TQ0VJVkVSX01PREVfSElHSF9SQU5HRSAzCisjZGVmaW5lIE5WX0NUUkxf
M0RfVklTSU9OX1BST19UUkFOU0NFSVZFUl9NT0RFX0NPVU5UIDQKKworLyoKKyAqIE5WX0NUUkxf
U1lOQ0hST05PVVNfUEFMRVRURV9VUERBVEVTIC0gY29udHJvbHMgd2hldGhlciB1cGRhdGVzIHRv
IHRoZSBjb2xvcgorICogbG9va3VwIHRhYmxlIChMVVQpIGFyZSBzeW5jaHJvbm91cyB3aXRoIHJl
c3BlY3QgdG8gWCByZW5kZXJpbmcuICBGb3IgZXhhbXBsZSwKKyAqIGlmIGFuIFggY2xpZW50IHNl
bmRzIFhTdG9yZUNvbG9ycyBmb2xsb3dlZCBieSBYRmlsbFJlY3RhbmdsZSwgdGhlIGRyaXZlciB3
aWxsCisgKiBndWFyYW50ZWUgdGhhdCB0aGUgRmlsbFJlY3RhbmdsZSByZXF1ZXN0IGlzIG5vdCBw
cm9jZXNzZWQgdW50aWwgYWZ0ZXIgdGhlCisgKiB1cGRhdGVkIExVVCBjb2xvcnMgYXJlIGFjdHVh
bGx5IHZpc2libGUgb24gdGhlIHNjcmVlbiBpZgorICogTlZfQ1RSTF9TWU5DSFJPTk9VU19QQUxF
VFRFX1VQREFURVMgaXMgZW5hYmxlZC4gIE90aGVyd2lzZSwgdGhlIHJlbmRlcmluZyBtYXkKKyAq
IG9jY3VyIGZpcnN0LgorICoKKyAqIFRoaXMgbWFrZXMgYSBkaWZmZXJlbmNlIGZvciBhcHBsaWNh
dGlvbnMgdGhhdCB1c2UgdGhlIExVVCB0byBhbmltYXRlLCBzdWNoIGFzCisgKiBYUGlsb3QuICBJ
ZiB5b3UgZXhwZXJpZW5jZSBmbGlja2VyaW5nIGluIGFwcGxpY2F0aW9ucyB0aGF0IHVzZSBMVVQK
KyAqIGFuaW1hdGlvbnMsIHRyeSBlbmFibGluZyB0aGlzIGF0dHJpYnV0ZS4KKyAqCisgKiBXaGVu
IHN5bmNocm9ub3VzIHVwZGF0ZXMgYXJlIGVuYWJsZWQsIFhTdG9yZUNvbG9ycyByZXF1ZXN0cyB3
aWxsIGJlIHByb2Nlc3NlZAorICogYXQgeW91ciBzY3JlZW4ncyByZWZyZXNoIHJhdGUuCisgKi8K
KworI2RlZmluZSBOVl9DVFJMX1NZTkNIUk9OT1VTX1BBTEVUVEVfVVBEQVRFUyAzNjcgLyogUldE
RyAqLworI2RlZmluZSBOVl9DVFJMX1NZTkNIUk9OT1VTX1BBTEVUVEVfVVBEQVRFU19ESVNBQkxF
IDAKKyNkZWZpbmUgTlZfQ1RSTF9TWU5DSFJPTk9VU19QQUxFVFRFX1VQREFURVNfRU5BQkxFIDEK
KworLyoKKyAqIE5WX0NUUkxfRElUSEVSSU5HX0RFUFRIIC0gQ29udHJvbHMgdGhlIGRpdGhlcmlu
ZyBkZXB0aCB3aGVuCisgKiBOVl9DVFJMX0NVUlJFTlRfRElUSEVSSU5HIGlzIEVOQUJMRUQuICBT
b21lIGRpc3BsYXlzIGNvbm5lY3RlZAorICogdG8gdGhlIEdQVSB2aWEgdGhlIERWSSBvciBMVkRT
IGludGVyZmFjZXMgY2Fubm90IGRpc3BsYXkgdGhlCisgKiBmdWxsIGNvbG9yIHJhbmdlIG9mIHRl
biBiaXRzIHBlciBjaGFubmVsLCBzbyB0aGUgR1BVIHdpbGwKKyAqIGRpdGhlciB0byBlaXRoZXIg
NiBvciA4IGJpdHMgcGVyIGNoYW5uZWwuCisgKi8KKyNkZWZpbmUgTlZfQ1RSTF9ESVRIRVJJTkdf
REVQVEggMzY4IC8qIFJXREcgKi8KKyNkZWZpbmUgTlZfQ1RSTF9ESVRIRVJJTkdfREVQVEhfQVVU
TyAwCisjZGVmaW5lIE5WX0NUUkxfRElUSEVSSU5HX0RFUFRIXzZfQklUUyAxCisjZGVmaW5lIE5W
X0NUUkxfRElUSEVSSU5HX0RFUFRIXzhfQklUUyAyCisKKy8qCisgKiBOVl9DVFJMX0NVUlJFTlRf
RElUSEVSSU5HX0RFUFRIIC0gUmV0dXJucyB0aGUgY3VycmVudCBkaXRoZXJpbmcKKyAqIGRlcHRo
IHZhbHVlLgorICovCisjZGVmaW5lIE5WX0NUUkxfQ1VSUkVOVF9ESVRIRVJJTkdfREVQVEggMzY5
IC8qIFItREcgKi8KKyNkZWZpbmUgTlZfQ1RSTF9DVVJSRU5UX0RJVEhFUklOR19ERVBUSF9OT05F
IDAKKyNkZWZpbmUgTlZfQ1RSTF9DVVJSRU5UX0RJVEhFUklOR19ERVBUSF82X0JJVFMgMQorI2Rl
ZmluZSBOVl9DVFJMX0NVUlJFTlRfRElUSEVSSU5HX0RFUFRIXzhfQklUUyAyCisKKy8qCisgKiBO
Vl9DVFJMXzNEX1ZJU0lPTl9QUk9fVFJBTlNDRUlWRVJfQ0hBTk5FTF9GUkVRVUVOQ1kgLSBSZXR1
cm5zIHRoZQorICogZnJlcXVlbmN5IG9mIHRoZSBjaGFubmVsKGluIGtIeikgb2YgdGhlIDNEIFZp
c2lvbiBQcm8gdHJhbnNjZWl2ZXIuCisgKiBVc2UgdGhlIGRpc3BsYXlfbWFzayBwYXJhbWV0ZXIg
dG8gc3BlY2lmeSB0aGUgY2hhbm5lbCBudW1iZXIuCisgKi8KKyNkZWZpbmUgTlZfQ1RSTF8zRF9W
SVNJT05fUFJPX1RSQU5TQ0VJVkVSX0NIQU5ORUxfRlJFUVVFTkNZIDM3MCAvKiBSLS1UICovCisK
Ky8qCisgKiBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fVFJBTlNDRUlWRVJfQ0hBTk5FTF9RVUFMSVRZ
IC0gUmV0dXJucyB0aGUKKyAqIHF1YWxpdHkgb2YgdGhlIGNoYW5uZWwoaW4gcGVyY2VudGFnZSkg
b2YgdGhlIDNEIFZpc2lvbiBQcm8gdHJhbnNjZWl2ZXIuCisgKiBVc2UgdGhlIGRpc3BsYXlfbWFz
ayBwYXJhbWV0ZXIgdG8gc3BlY2lmeSB0aGUgY2hhbm5lbCBudW1iZXIuCisgKi8KKyNkZWZpbmUg
TlZfQ1RSTF8zRF9WSVNJT05fUFJPX1RSQU5TQ0VJVkVSX0NIQU5ORUxfUVVBTElUWSAzNzEgLyog
Ui0tVCAqLworCisvKgorICogTlZfQ1RSTF8zRF9WSVNJT05fUFJPX1RSQU5TQ0VJVkVSX0NIQU5O
RUxfQ09VTlQgLSBSZXR1cm5zIHRoZSBudW1iZXIgb2YKKyAqIGNoYW5uZWxzIG9uIHRoZSAzRCBW
aXNpb24gUHJvIHRyYW5zY2VpdmVyLgorICovCisjZGVmaW5lIE5WX0NUUkxfM0RfVklTSU9OX1BS
T19UUkFOU0NFSVZFUl9DSEFOTkVMX0NPVU5UIDM3MiAvKiBSLS1UICovCisKKy8qCisgKiBOVl9D
VFJMXzNEX1ZJU0lPTl9QUk9fUEFJUl9HTEFTU0VTIC0gUHV0cyB0aGUgM0QgVmlzaW9uIFBybwor
ICogdHJhbnNjZWl2ZXIgaW50byBwYWlyaW5nIG1vZGUgdG8gZ2F0aGVyIGFkZGl0aW9uYWwgZ2xh
c3Nlcy4KKyAqIE5WX0NUUkxfM0RfVklTSU9OX1BST19QQUlSX0dMQVNTRVNfU1RPUCAtIHN0b3Bz
IGFueSBwYWlyaW5nCisgKiBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fUEFJUl9HTEFTU0VTX0JFQUNP
TiAtIHN0YXJ0cyBjb250aW51b3VzCisgKiAgICAgcGFpcmluZyB2aWEgYmVhY29uIG1vZGUKKyAq
IEFueSBvdGhlciB2YWx1ZSwgTiAtIFB1dHMgdGhlIDNEIFZpc2lvbiBQcm8gdHJhbnNjZWl2ZXIg
aW50bworICogICAgIGF1dGhlbnRpY2F0ZWQgcGFpcmluZyBtb2RlIGZvciBOIHNlY29uZHMuCisg
Ki8KKyNkZWZpbmUgTlZfQ1RSTF8zRF9WSVNJT05fUFJPX1BBSVJfR0xBU1NFUyAzNzMgLyogLVct
VCAqLworI2RlZmluZSBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fUEFJUl9HTEFTU0VTX1NUT1AgMAor
I2RlZmluZSBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fUEFJUl9HTEFTU0VTX0JFQUNPTiAweEZGRkZG
RkZGCisKKy8qCisgKiBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fVU5QQUlSX0dMQVNTRVMgLSBUZWxs
cyBhIHNwZWNpZmljIHBhaXIKKyAqIG9mIGdsYXNzZXMgdG8gdW5wYWlyLiBUaGUgZ2xhc3NlcyB3
aWxsICJmb3JnZXQiIHRoZSBhZGRyZXNzCisgKiBvZiB0aGUgM0QgVmlzaW9uIFBybyB0cmFuc2Nl
aXZlciB0byB3aGljaCB0aGV5IGhhdmUgYmVlbiBwYWlyZWQuCisgKiBUbyB1bnBhaXIgYWxsIHRo
ZSBjdXJyZW50bHkgcGFpcmVkIGdsYXNzZXMsIHNwZWNpZnkKKyAqIHRoZSBnbGFzc2VzIGlkIGFz
IDAuCisgKi8KKyNkZWZpbmUgTlZfQ1RSTF8zRF9WSVNJT05fUFJPX1VOUEFJUl9HTEFTU0VTIDM3
NCAvKiAtVy1UICovCisKKy8qCisgKiBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fRElTQ09WRVJfR0xB
U1NFUyAtIFRlbGxzIHRoZSAzRCBWaXNpb24gUHJvCisgKiB0cmFuc2NlaXZlciBhYm91dCB0aGUg
Z2xhc3NlcyB0aGF0IGhhdmUgYmVlbiBwYWlyZWQgdXNpbmcKKyAqIE5WX0NUUkxfM0RfVklTSU9O
X1BST19QQUlSX0dMQVNTRVNfQkVBQ09OLiBVbmxlc3MgdGhpcyBpcyBkb25lLAorICogdGhlIDNE
IFZpc2lvbiBQcm8gdHJhbnNjZWl2ZXIgd2lsbCBub3Qga25vdyBhYm91dCBnbGFzc2VzIHBhaXJl
ZCBpbgorICogYmVhY29uIG1vZGUuCisgKi8KKyNkZWZpbmUgTlZfQ1RSTF8zRF9WSVNJT05fUFJP
X0RJU0NPVkVSX0dMQVNTRVMgMzc1IC8qIC1XLVQgKi8KKworLyoKKyAqIE5WX0NUUkxfM0RfVklT
SU9OX1BST19JREVOVElGWV9HTEFTU0VTIC0gQ2F1c2VzIGdsYXNzZXMgTEVEcyB0bworICogZmxh
c2ggZm9yIGEgc2hvcnQgcGVyaW9kIG9mIHRpbWUuCisgKi8KKyNkZWZpbmUgTlZfQ1RSTF8zRF9W
SVNJT05fUFJPX0lERU5USUZZX0dMQVNTRVMgMzc2IC8qIC1XLVQgKi8KKworLyoKKyAqIE5WX0NU
UkxfM0RfVklTSU9OX1BST19HTEFTU0VTX1NZTkNfQ1lDTEUgLSBDb250cm9scyB0aGUKKyAqIHN5
bmMgY3ljbGUgZHVyYXRpb24oaW4gbWlsbGlzZWNvbmRzKSBvZiB0aGUgZ2xhc3Nlcy4KKyAqIFVz
ZSB0aGUgZGlzcGxheV9tYXNrIHBhcmFtZXRlciB0byBzcGVjaWZ5IHRoZSBnbGFzc2VzIGlkLgor
ICovCisjZGVmaW5lIE5WX0NUUkxfM0RfVklTSU9OX1BST19HTEFTU0VTX1NZTkNfQ1lDTEUgMzc4
IC8qIFJXLVQgKi8KKworLyoKKyAqIE5WX0NUUkxfM0RfVklTSU9OX1BST19HTEFTU0VTX01JU1NF
RF9TWU5DX0NZQ0xFUyAtIFJldHVybnMgdGhlCisgKiBudW1iZXIgb2Ygc3RhdGUgc3luYyBjeWNs
ZXMgcmVjZW50bHkgbWlzc2VkIGJ5IHRoZSBnbGFzc2VzLgorICogVXNlIHRoZSBkaXNwbGF5X21h
c2sgcGFyYW1ldGVyIHRvIHNwZWNpZnkgdGhlIGdsYXNzZXMgaWQuCisgKi8KKyNkZWZpbmUgTlZf
Q1RSTF8zRF9WSVNJT05fUFJPX0dMQVNTRVNfTUlTU0VEX1NZTkNfQ1lDTEVTIDM3OSAvKiBSLS1U
ICovCisKKy8qCisgKiBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fR0xBU1NFU19CQVRURVJZX0xFVkVM
IC0gUmV0dXJucyB0aGUKKyAqIGJhdHRlcnkgbGV2ZWwoaW4gcGVyY2VudGFnZSkgb2YgdGhlIGds
YXNzZXMuCisgKiBVc2UgdGhlIGRpc3BsYXlfbWFzayBwYXJhbWV0ZXIgdG8gc3BlY2lmeSB0aGUg
Z2xhc3NlcyBpZC4KKyAqLworI2RlZmluZSBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fR0xBU1NFU19C
QVRURVJZX0xFVkVMIDM4MCAvKiBSLS1UICovCisKKy8qCisgKiBOVl9DVFJMX0dWT19BTkNfUEFS
SVRZX0NPTVBVVEFUSU9OIC0gQ29udHJvbHMgdGhlIFNESSBkZXZpY2UncyBjb21wdXRhdGlvbgor
ICogb2YgdGhlIHBhcml0eSBiaXQgKGJpdCA4KSBmb3IgQU5DIGRhdGEgd29yZHMuCisgKi8KKwor
I2RlZmluZSBOVl9DVFJMX0dWT19BTkNfUEFSSVRZX0NPTVBVVEFUSU9OIDM4MSAvKiBSVy0tLSAq
LworI2RlZmluZSBOVl9DVFJMX0dWT19BTkNfUEFSSVRZX0NPTVBVVEFUSU9OX0FVVE8gMAorI2Rl
ZmluZSBOVl9DVFJMX0dWT19BTkNfUEFSSVRZX0NPTVBVVEFUSU9OX09OIDEKKyNkZWZpbmUgTlZf
Q1RSTF9HVk9fQU5DX1BBUklUWV9DT01QVVRBVElPTl9PRkYgMgorCisvKgorICogTlZfQ1RSTF8z
RF9WSVNJT05fUFJPX0dMQVNTRVNfUEFJUl9FVkVOVCAtIFRoaXMgYXR0cmlidXRlIGlzIHNlbnQK
KyAqIGFzIGFuIGV2ZW50IHdoZW4gZ2xhc3NlcyBnZXQgcGFpcmVkIGluIHJlc3BvbnNlIHRvIHBh
aXIgY29tbWFuZAorICogZnJvbSBhbnkgb2YgdGhlIGNsaWVudHMuCisgKi8KKyNkZWZpbmUgTlZf
Q1RSTF8zRF9WSVNJT05fUFJPX0dMQVNTRVNfUEFJUl9FVkVOVCAzODIgLyogLS0tVCAqLworCisv
KgorICogTlZfQ1RSTF8zRF9WSVNJT05fUFJPX0dMQVNTRVNfVU5QQUlSX0VWRU5UIC0gVGhpcyBh
dHRyaWJ1dGUgaXMgc2VudAorICogYXMgYW4gZXZlbnQgd2hlbiBnbGFzc2VzIGdldCB1bnBhaXJl
ZCBpbiByZXNwb25zZSB0byB1bnBhaXIgY29tbWFuZAorICogZnJvbSBhbnkgb2YgdGhlIGNsaWVu
dHMuCisgKi8KKyNkZWZpbmUgTlZfQ1RSTF8zRF9WSVNJT05fUFJPX0dMQVNTRVNfVU5QQUlSX0VW
RU5UIDM4MyAvKiAtLS1UICovCisKKy8qCisgKiBOVl9DVFJMX0dQVV9QQ0lFX0NVUlJFTlRfTElO
S19XSURUSCAtIHJldHVybnMgdGhlIGN1cnJlbnQKKyAqIFBDSWUgbGluayB3aWR0aCwgaW4gbnVt
YmVyIG9mIGxhbmVzLgorICovCisjZGVmaW5lIE5WX0NUUkxfR1BVX1BDSUVfQ1VSUkVOVF9MSU5L
X1dJRFRIIDM4NCAvKiBSLS1HSSAqLworCisvKgorICogTlZfQ1RSTF9HUFVfUENJRV9DVVJSRU5U
X0xJTktfU1BFRUQgLSByZXR1cm5zIHRoZSBjdXJyZW50CisgKiBQQ0llIGxpbmsgc3BlZWQsIGlu
IG1lZ2F0cmFuc2ZlcnMgcGVyIHNlY29uZCAoR1QvcykuCisgKi8KKyNkZWZpbmUgTlZfQ1RSTF9H
UFVfUENJRV9DVVJSRU5UX0xJTktfU1BFRUQgMzg1IC8qIFItLUdJICovCisKKy8qCisgKiBOVl9D
VFJMX0dWT19BVURJT19CTEFOS0lORyAtIHNwZWNpZmllcyB3aGV0aGVyIHRoZSBHVk8gZGV2aWNl
IHNob3VsZCBkZWxldGUKKyAqIGF1ZGlvIGFuY2lsbGFyeSBkYXRhIHBhY2tldHMgd2hlbiBmcmFt
ZXMgYXJlIHJlcGVhdGVkLgorICoKKyAqIFdoZW4gYSBuZXcgZnJhbWUgaXMgbm90IHJlYWR5IGlu
IHRpbWUsIHRoZSBjdXJyZW50IGZyYW1lLCBpbmNsdWRpbmcgYWxsCisgKiBhbmNpbGxhcnkgZGF0
YSBwYWNrZXRzLCBpcyByZXBlYXRlZC4gIFdoZW4gdGhpcyBkYXRhIGluY2x1ZGVzIGF1ZGlvIHBh
Y2tldHMsCisgKiB0aGlzIGNhbiByZXN1bHQgaW4gc3R1dHRlcnMgb3IgY2xpY2tzLiAgV2hlbiB0
aGlzIG9wdGlvbiBpcyBlbmFibGVkLCB0aGUgR1ZPCisgKiBkZXZpY2Ugd2lsbCBkZXRlY3Qgd2hl
biBmcmFtZXMgYXJlIHJlcGVhdGVkLCBpZGVudGlmeSBhdWRpbyBhbmNpbGxhcnkgZGF0YQorICog
cGFja2V0cywgYW5kIG1hcmsgdGhlbSBmb3IgZGVsZXRpb24uCisgKgorICogVGhpcyBvcHRpb24g
aXMgYXBwbGllZCB3aGVuIHRoZSBHVk8gZGV2aWNlIGlzIGJvdW5kLgorICovCisjZGVmaW5lIE5W
X0NUUkxfR1ZPX0FVRElPX0JMQU5LSU5HIDM4NiAvKiBSVy0gKi8KKyNkZWZpbmUgTlZfQ1RSTF9H
Vk9fQVVESU9fQkxBTktJTkdfRElTQUJMRSAwCisjZGVmaW5lIE5WX0NUUkxfR1ZPX0FVRElPX0JM
QU5LSU5HX0VOQUJMRSAxCisKKy8qCisgKiBOVl9DVFJMX0NVUlJFTlRfTUVUQU1PREVfSUQgLSBz
d2l0Y2ggbW9kZXMgdG8gdGhlIE1ldGFNb2RlIHdpdGgKKyAqIHRoZSBzcGVjaWZpZWQgSUQuCisg
Ki8KKyNkZWZpbmUgTlZfQ1RSTF9DVVJSRU5UX01FVEFNT0RFX0lEIDM4NyAvKiBSVy0gKi8KKwor
LyoKKyAqIE5WX0NUUkxfRElTUExBWV9FTkFCTEVEIC0gUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0
aGUgZGlzcGxheSBkZXZpY2UKKyAqIGlzIGN1cnJlbnRseSBlbmFibGVkLgorICovCisjZGVmaW5l
IE5WX0NUUkxfRElTUExBWV9FTkFCTEVEIDM4OCAvKiBSLUQgKi8KKyNkZWZpbmUgTlZfQ1RSTF9E
SVNQTEFZX0VOQUJMRURfVFJVRSAxCisjZGVmaW5lIE5WX0NUUkxfRElTUExBWV9FTkFCTEVEX0ZB
TFNFIDAKKworI2RlZmluZSBOVl9DVFJMX0xBU1RfQVRUUklCVVRFIE5WX0NUUkxfRElTUExBWV9F
TkFCTEVECisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIFN0cmluZyBBdHRyaWJ1dGVz
OgorICoKKyAqIFN0cmluZyBhdHRyaWJ1dGVzIGNhbiBiZSBxdWVyeWllZCB0aHJvdWdoIHRoZSBY
TlZDVFJMUXVlcnlTdHJpbmdBdHRyaWJ1dGUoKQorICogYW5kIFhOVkNUUkxRdWVyeVRhcmdldFN0
cmluZ0F0dHJpYnV0ZSgpIGZ1bmN0aW9uIGNhbGxzLgorICoKKyAqIFN0cmluZyBhdHRyaWJ1dGVz
IGNhbiBiZSBzZXQgdGhyb3VnaCB0aGUgWE5WQ1RSTFNldFN0cmluZ0F0dHJpYnV0ZSgpCisgKiBm
dW5jdGlvbiBjYWxsLiAgKFRoZXJlIGFyZSBjdXJyZW50bHkgbm8gc3RyaW5nIGF0dHJpYnV0ZXMg
dGhhdCBjYW4gYmUKKyAqIHNldCBvbiBub24tWCBTY3JlZW4gdGFyZ2V0cy4pCisgKgorICogVW5s
ZXNzIG90aGVyd2lzZSBub3RlZCwgYWxsIHN0cmluZyBhdHRyaWJ1dGVzIGNhbiBiZSBxdWVyaWVk
L3NldCB1c2luZyBhbgorICogTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiB0YXJnZXQuICBB
dHRyaWJ1dGVzIHRoYXQgY2Fubm90IHRha2UgYW4KKyAqIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9T
Q1JFRU4gdGFyZ2V0IGFsc28gY2Fubm90IGJlIHF1ZXJpZWQvc2V0IHRocm91Z2gKKyAqIFhOVkNU
UkxRdWVyeVN0cmluZ0F0dHJpYnV0ZSgpL1hOVkNUUkxTZXRTdHJpbmdBdHRyaWJ1dGUoKSAoU2lu
Y2UKKyAqIHRoZXNlIGFzc3VtZSBhbiBYIFNjcmVlbiB0YXJnZXQpLgorICovCisKKy8qCisgKiBO
Vl9DVFJMX1NUUklOR19QUk9EVUNUX05BTUUgLSB0aGUgR1BVIHByb2R1Y3QgbmFtZSBvbiB3aGlj
aCB0aGUKKyAqIHNwZWNpZmllZCBYIHNjcmVlbiBpcyBydW5uaW5nLgorICoKKyAqIFRoaXMgYXR0
cmlidXRlIG1heSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0U3RyaW5nQXR0
cmlidXRlKCkKKyAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9HUFUgb3IgTlZfQ1RSTF9U
QVJHRVRfVFlQRV9YX1NDUkVFTiB0YXJnZXQuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX1NUUklO
R19QUk9EVUNUX05BTUUgMCAvKiBSLS1HICovCisKKy8qCisgKiBOVl9DVFJMX1NUUklOR19WQklP
U19WRVJTSU9OIC0gdGhlIHZpZGVvIGJpb3MgdmVyc2lvbiBvbiB0aGUgR1BVIG9uCisgKiB3aGlj
aCB0aGUgc3BlY2lmaWVkIFggc2NyZWVuIGlzIHJ1bm5pbmcuCisgKi8KKworI2RlZmluZSBOVl9D
VFJMX1NUUklOR19WQklPU19WRVJTSU9OIDEgLyogUi0tRyAqLworCisvKgorICogTlZfQ1RSTF9T
VFJJTkdfTlZJRElBX0RSSVZFUl9WRVJTSU9OIC0gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRo
ZQorICogTlZJRElBIGRyaXZlciB2ZXJzaW9uIG51bWJlciBmb3IgdGhlIE5WSURJQSBYIGRyaXZl
ciBpbiB1c2UuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX1NUUklOR19OVklESUFfRFJJVkVSX1ZF
UlNJT04gMyAvKiBSLS1HICovCisKKy8qCisgKiBOVl9DVFJMX1NUUklOR19ESVNQTEFZX0RFVklD
RV9OQU1FIC0gbmFtZSBvZiB0aGUgZGlzcGxheSBkZXZpY2UKKyAqIHNwZWNpZmllZCBpbiB0aGUg
ZGlzcGxheV9tYXNrIGFyZ3VtZW50LgorICoKKyAqIFRoaXMgYXR0cmlidXRlIG1heSBiZSBxdWVy
aWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0U3RyaW5nQXR0cmlidXRlKCkKKyAqIHVzaW5n
IGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9HUFUgb3IgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVF
TiB0YXJnZXQuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX1NUUklOR19ESVNQTEFZX0RFVklDRV9O
QU1FIDQgLyogUi1ERyAqLworCisvKgorICogTlZfQ1RSTF9TVFJJTkdfVFZfRU5DT0RFUl9OQU1F
IC0gbmFtZSBvZiB0aGUgVFYgZW5jb2RlciB1c2VkIGJ5IHRoZQorICogc3BlY2lmaWVkIGRpc3Bs
YXkgZGV2aWNlOyBvbmx5IHZhbGlkIGlmIHRoZSBkaXNwbGF5IGRldmljZSBpcyBhIFRWLgorICov
CisKKyNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfVFZfRU5DT0RFUl9OQU1FIDUgLyogUi1ERyAqLwor
CisvKgorICogTlZfQ1RSTF9TVFJJTkdfR1ZJT19GSVJNV0FSRV9WRVJTSU9OIC0gaW5kaWNhdGVz
IHRoZSB2ZXJzaW9uIG9mIHRoZQorICogRmlybXdhcmUgb24gdGhlIEdWSU8gZGV2aWNlLgorICov
CisKKyNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfR1ZJT19GSVJNV0FSRV9WRVJTSU9OIDggLyogUi0t
SSAqLworCisvKgorICogVGhlIGZvbGxvd2luZyBpcyBkZXByZWNhdGVkOyB1c2UgTlZfQ1RSTF9T
VFJJTkdfR1ZJT19GSVJNV0FSRV9WRVJTSU9OLAorICogaW5zdGVhZAorICovCisjZGVmaW5lIE5W
X0NUUkxfU1RSSU5HX0dWT19GSVJNV0FSRV9WRVJTSU9OIDggLyogUi0tICovCisKKy8qCisgKiBO
Vl9DVFJMX1NUUklOR19DVVJSRU5UX01PREVMSU5FIC0gUmV0dXJuIHRoZSBNb2RlTGluZSBjdXJy
ZW50bHkKKyAqIGJlaW5nIHVzZWQgYnkgdGhlIHNwZWNpZmllZCBkaXNwbGF5IGRldmljZS4KKyAq
CisgKiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRh
cmdldFN0cmluZ0F0dHJpYnV0ZSgpCisgKiB1c2luZyBhbiBOVl9DVFJMX1RBUkdFVF9UWVBFX0dQ
VSBvciBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOIHRhcmdldC4KKyAqCisgKiBUaGUgTW9k
ZUxpbmUgc3RyaW5nIG1heSBiZSBwcmVwZW5kZWQgd2l0aCBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0
IG9mCisgKiAidG9rZW49dmFsdWUiIHBhaXJzLCBzZXBhcmF0ZWQgZnJvbSB0aGUgTW9kZUxpbmUg
c3RyaW5nIGJ5ICI6OiIuCisgKiBUaGlzICJ0b2tlbj12YWx1ZSIgc3ludGF4IGlzIHRoZSBzYW1l
IGFzIHRoYXQgdXNlZCBpbgorICogTlZfQ1RSTF9CSU5BUllfREFUQV9NT0RFTElORVMKKyAqLwor
CisjZGVmaW5lIE5WX0NUUkxfU1RSSU5HX0NVUlJFTlRfTU9ERUxJTkUgOSAvKiBSLURHICovCisK
Ky8qCisgKiBOVl9DVFJMX1NUUklOR19BRERfTU9ERUxJTkUgLSBBZGRzIGEgTW9kZUxpbmUgdG8g
dGhlIHNwZWNpZmllZAorICogZGlzcGxheSBkZXZpY2UuICBUaGUgTW9kZUxpbmUgaXMgbm90IGFk
ZGVkIGlmIHZhbGlkYXRpb24gZmFpbHMuCisgKgorICogVGhlIE1vZGVMaW5lIHN0cmluZyBzaG91
bGQgaGF2ZSB0aGUgc2FtZSBzeW50YXggYXMgYSBNb2RlTGluZSBpbgorICogdGhlIFggY29uZmln
dXJhdGlvbiBmaWxlOyBlLmcuLAorICoKKyAqICIxNjAweDEyMDAiICAyMjkuNSAgMTYwMCAxNjY0
IDE4NTYgMjE2MCAgMTIwMCAxMjAxIDEyMDQgMTI1MCAgK0hTeW5jICtWU3luYworICovCisKKyNk
ZWZpbmUgTlZfQ1RSTF9TVFJJTkdfQUREX01PREVMSU5FIDEwIC8qIC1XREcgKi8KKworLyoKKyAq
IE5WX0NUUkxfU1RSSU5HX0RFTEVURV9NT0RFTElORSAtIERlbGV0ZXMgYW4gZXhpc3RpbmcgTW9k
ZUxpbmUKKyAqIGZyb20gdGhlIHNwZWNpZmllZCBkaXNwbGF5IGRldmljZS4gIFRoZSBjdXJyZW50
bHkgc2VsZWN0ZWQKKyAqIE1vZGVMaW5lIGNhbm5vdCBiZSBkZWxldGVkLiAgKFRoaXMgYWxzbyBt
ZWFucyB5b3UgY2Fubm90IGRlbGV0ZQorICogdGhlIGxhc3QgTW9kZUxpbmUuKQorICoKKyAqIFRo
ZSBNb2RlTGluZSBzdHJpbmcgc2hvdWxkIGhhdmUgdGhlIHNhbWUgc3ludGF4IGFzIGEgTW9kZUxp
bmUgaW4KKyAqIHRoZSBYIGNvbmZpZ3VyYXRpb24gZmlsZTsgZS5nLiwKKyAqCisgKiAiMTYwMHgx
MjAwIiAgMjI5LjUgIDE2MDAgMTY2NCAxODU2IDIxNjAgIDEyMDAgMTIwMSAxMjA0IDEyNTAgICtI
U3luYyArVlN5bmMKKyAqLworCisjZGVmaW5lIE5WX0NUUkxfU1RSSU5HX0RFTEVURV9NT0RFTElO
RSAxMSAvKiAtV0RHICovCisKKy8qCisgKiBOVl9DVFJMX1NUUklOR19DVVJSRU5UX01FVEFNT0RF
IC0gUmV0dXJucyB0aGUgbWV0YW1vZGUgY3VycmVudGx5CisgKiBiZWluZyB1c2VkIGJ5IHRoZSBz
cGVjaWZpZWQgWCBzY3JlZW4uICBUaGUgTWV0YU1vZGUgc3RyaW5nIGhhcyB0aGUKKyAqIHNhbWUg
c3ludGF4IGFzIHRoZSBNZXRhTW9kZSBYIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBhcyBkb2N1bWVu
dGVkCisgKiBpbiB0aGUgTlZJRElBIGRyaXZlciBSRUFETUUuCisgKgorICogVGhlIHJldHVybmVk
IHN0cmluZyBtYXkgYmUgcHJlcGVuZGVkIHdpdGggYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZgor
ICogInRva2VuPXZhbHVlIiBwYWlycywgc2VwYXJhdGVkIGZyb20gdGhlIE1ldGFNb2RlIHN0cmlu
ZyBieSAiOjoiLgorICogVGhpcyAidG9rZW49dmFsdWUiIHN5bnRheCBpcyB0aGUgc2FtZSBhcyB0
aGF0IHVzZWQgaW4KKyAqIE5WX0NUUkxfQklOQVJZX0RBVEFfTUVUQU1PREVTLgorICovCisKKyNk
ZWZpbmUgTlZfQ1RSTF9TVFJJTkdfQ1VSUkVOVF9NRVRBTU9ERSAxMiAvKiBSVy0tICovCisjZGVm
aW5lIE5WX0NUUkxfU1RSSU5HX0NVUlJFTlRfTUVUQU1PREVfVkVSU0lPTl8xIE5WX0NUUkxfU1RS
SU5HX0NVUlJFTlRfTUVUQU1PREUKKworLyoKKyAqIE5WX0NUUkxfU1RSSU5HX0FERF9NRVRBTU9E
RSAtIEFkZHMgYSBNZXRhTW9kZSB0byB0aGUgc3BlY2lmaWVkCisgKiBYIFNjcmVlbi4KKyAqCisg
KiBJdCBpcyByZWNvbW1lbmRlZCB0byBub3QgdXNlIHRoaXMgYXR0cmlidXRlLCBidXQgaW5zdGVh
ZCB1c2UKKyAqIE5WX0NUUkxfU1RSSU5HX09QRVJBVElPTl9BRERfTUVUQU1PREUuCisgKi8KKwor
I2RlZmluZSBOVl9DVFJMX1NUUklOR19BRERfTUVUQU1PREUgMTMgLyogLVctLSAqLworCisvKgor
ICogTlZfQ1RSTF9TVFJJTkdfREVMRVRFX01FVEFNT0RFIC0gRGVsZXRlcyBhbiBleGlzdGluZyBN
ZXRhTW9kZSBmcm9tCisgKiB0aGUgc3BlY2lmaWVkIFggU2NyZWVuLiAgVGhlIGN1cnJlbnRseSBz
ZWxlY3RlZCBNZXRhTW9kZSBjYW5ub3QgYmUKKyAqIGRlbGV0ZWQuICAoVGhpcyBhbHNvIG1lYW5z
IHlvdSBjYW5ub3QgZGVsZXRlIHRoZSBsYXN0IE1ldGFNb2RlKS4KKyAqIFRoZSBNZXRhTW9kZSBz
dHJpbmcgc2hvdWxkIGhhdmUgdGhlIHNhbWUgc3ludGF4IGFzIHRoZSBNZXRhTW9kZSBYCisgKiBj
b25maWd1cmF0aW9uIG9wdGlvbiwgYXMgZG9jdW1lbnRlZCBpbiB0aGUgTlZJRElBIGRyaXZlciBS
RUFETUUuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX1NUUklOR19ERUxFVEVfTUVUQU1PREUgMTQg
LyogLVdELS0gKi8KKworLyoKKyAqIE5WX0NUUkxfU1RSSU5HX1ZDU0NfUFJPRFVDVF9OQU1FIC0g
UXVlcnlzIHRoZSBwcm9kdWN0IG5hbWUgb2YgdGhlCisgKiBWQ1NDIGRldmljZS4KKyAqCisgKiBU
aGlzIGF0dHJpYnV0ZSBtdXN0IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRT
dHJpbmdBdHRyaWJ1dGUoKQorICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX1ZDU0MgdGFy
Z2V0LgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfVkNTQ19QUk9EVUNUX05BTUUgMTUg
LyogUi0tLVYgKi8KKworLyoKKyAqIE5WX0NUUkxfU1RSSU5HX1ZDU0NfUFJPRFVDVF9JRCAtIFF1
ZXJ5cyB0aGUgcHJvZHVjdCBJRCBvZiB0aGUgVkNTQyBkZXZpY2UuCisgKgorICogVGhpcyBhdHRy
aWJ1dGUgbXVzdCBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0U3RyaW5nQXR0
cmlidXRlKCkKKyAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9WQ1NDIHRhcmdldC4KKyAq
LworCisjZGVmaW5lIE5WX0NUUkxfU1RSSU5HX1ZDU0NfUFJPRFVDVF9JRCAxNiAvKiBSLS0tViAq
LworCisvKgorICogTlZfQ1RSTF9TVFJJTkdfVkNTQ19TRVJJQUxfTlVNQkVSIC0gUXVlcnlzIHRo
ZSB1bmlxdWUgc2VyaWFsIG51bWJlcgorICogb2YgdGhlIFZDUyBkZXZpY2UuCisgKgorICogVGhp
cyBhdHRyaWJ1dGUgbXVzdCBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0U3Ry
aW5nQXR0cmlidXRlKCkKKyAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9WQ1NDIHRhcmdl
dC4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfU1RSSU5HX1ZDU0NfU0VSSUFMX05VTUJFUiAxNyAv
KiBSLS0tViAqLworCisvKgorICogTlZfQ1RSTF9TVFJJTkdfVkNTQ19CVUlMRF9EQVRFIC0gUXVl
cnlzIHRoZSBkYXRlIG9mIHRoZSBWQ1MgZGV2aWNlLgorICogdGhlIHJldHVybmVkIHN0cmluZyBp
cyBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDogIldlZWsuWWVhciIKKyAqCisgKiBUaGlzIGF0dHJp
YnV0ZSBtdXN0IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRTdHJpbmdBdHRy
aWJ1dGUoKQorICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX1ZDU0MgdGFyZ2V0LgorICov
CisKKyNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfVkNTQ19CVUlMRF9EQVRFIDE4IC8qIFItLS1WICov
CisKKy8qCisgKiBOVl9DVFJMX1NUUklOR19WQ1NDX0ZJUk1XQVJFX1ZFUlNJT04gLSBRdWVyeXMg
dGhlIGZpcm13YXJlIHZlcnNpb24KKyAqIG9mIHRoZSBWQ1MgZGV2aWNlLgorICoKKyAqIFRoaXMg
YXR0cmlidXRlIG11c3QgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldFN0cmlu
Z0F0dHJpYnV0ZSgpCisgKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfVkNTQyB0YXJnZXQu
CisgKi8KKworI2RlZmluZSBOVl9DVFJMX1NUUklOR19WQ1NDX0ZJUk1XQVJFX1ZFUlNJT04gMTkg
LyogUi0tLVYgKi8KKworLyoKKyAqIE5WX0NUUkxfU1RSSU5HX1ZDU0NfRklSTVdBUkVfUkVWSVNJ
T04gLSBRdWVyeXMgdGhlIGZpcm13YXJlIHJldmlzaW9uCisgKiBvZiB0aGUgVkNTIGRldmljZS4K
KyAqCisgKiBUaGlzIGF0dHJpYnV0ZSBtdXN0IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVl
cnlUYXJnZXRTdHJpbmdBdHRyaWJ1dGUoKQorICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBF
X1ZDUyB0YXJnZXQuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX1NUUklOR19WQ1NDX0ZJUk1XQVJF
X1JFVklTSU9OIDIwIC8qIFItLS1WICovCisKKy8qCisgKiBOVl9DVFJMX1NUUklOR19WQ1NDX0hB
UkRXQVJFX1ZFUlNJT04gLSBRdWVyeXMgdGhlIGhhcmR3YXJlIHZlcnNpb24KKyAqIG9mIHRoZSBW
Q1MgZGV2aWNlLgorICoKKyAqIFRoaXMgYXR0cmlidXRlIG11c3QgYmUgcXVlcmllZCB0aHJvdWdo
IFhOVkNUUkxRdWVyeVRhcmdldFN0cmluZ0F0dHJpYnV0ZSgpCisgKiB1c2luZyBhIE5WX0NUUkxf
VEFSR0VUX1RZUEVfVkNTQyB0YXJnZXQuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX1NUUklOR19W
Q1NDX0hBUkRXQVJFX1ZFUlNJT04gMjEgLyogUi0tLVYgKi8KKworLyoKKyAqIE5WX0NUUkxfU1RS
SU5HX1ZDU0NfSEFSRFdBUkVfUkVWSVNJT04gLSBRdWVyeXMgdGhlIGhhcmR3YXJlIHJldmlzaW9u
CisgKiBvZiB0aGUgVkNTIGRldmljZS4KKyAqCisgKiBUaGlzIGF0dHJpYnV0ZSBtdXN0IGJlIHF1
ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRTdHJpbmdBdHRyaWJ1dGUoKQorICogdXNp
bmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX1ZDU0MgdGFyZ2V0LgorICovCisKKyNkZWZpbmUgTlZf
Q1RSTF9TVFJJTkdfVkNTQ19IQVJEV0FSRV9SRVZJU0lPTiAyMiAvKiBSLS0tViAqLworCisvKgor
ICogTlZfQ1RSTF9TVFJJTkdfTU9WRV9NRVRBTU9ERSAtIE1vdmVzIGEgTWV0YU1vZGUgdG8gdGhl
IHNwZWNpZmllZAorICogaW5kZXggbG9jYXRpb24uICBUaGUgTWV0YU1vZGUgbXVzdCBhbHJlYWR5
IGV4aXN0IGluIHRoZSBYIFNjcmVlbidzCisgKiBsaXN0IG9mIE1ldGFNb2RlcyAoYXMgcmV0dXJu
ZWQgYnkgdGhlIE5WX0NUUkxfQklOQVJZX0RBVEFfTUVUQU1PREVTCisgKiBhdHRyaWJ1dGUpLiAg
SWYgdGhlIGluZGV4IGlzIGxhcmdlciB0aGFuIHRoZSBudW1iZXIgb2YgTWV0YU1vZGVzIGluCisg
KiB0aGUgbGlzdCwgdGhlIE1ldGFNb2RlIGlzIG1vdmVkIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3Qu
ICBUaGUKKyAqIE1ldGFNb2RlIHN0cmluZyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBzeW50YXggYXMg
dGhlIE1ldGFNb2RlIFgKKyAqIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBhcyBkb2N1bWVudGVkIGlu
IHRoZSBOVklESUEgZHJpdmVyIFJFQURNRS4KKworICogVGhlIE1ldGFNb2RlIHN0cmluZyBtdXN0
IGJlIHByZXBlbmRlZCB3aXRoIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QKKyAqIG9mICJ0b2tlbj12
YWx1ZSIgcGFpcnMsIHNlcGFyYXRlZCBmcm9tIHRoZSBNZXRhTW9kZSBzdHJpbmcgYnkgIjo6Ii4K
KyAqIEN1cnJlbnRseSwgdGhlIG9ubHkgdmFsaWQgdG9rZW4gaXMgImluZGV4Iiwgd2hpY2ggaW5k
aWNhdGVzIHdoZXJlCisgKiBpbiB0aGUgTWV0YU1vZGUgbGlzdCB0aGUgTWV0YU1vZGUgc2hvdWxk
IGJlIG1vdmVkIHRvLgorICoKKyAqIE90aGVyIHRva2VucyBtYXkgYmUgYWRkZWQgaW4gdGhlIGZ1
dHVyZS4KKyAqCisgKiBFLmcuLAorICogICJpbmRleD01IDo6IENSVC0wOiAxMDI0eDc2OCBAMTAy
NHg3NjggKzArMCIKKyAqLworCisjZGVmaW5lIE5WX0NUUkxfU1RSSU5HX01PVkVfTUVUQU1PREUg
MjMgLyogLVctLSAqLworCisvKgorICogTlZfQ1RSTF9TVFJJTkdfVkFMSURfSE9SSVpfU1lOQ19S
QU5HRVMgLSByZXR1cm5zIHRoZSB2YWxpZAorICogaG9yaXpvbnRhbCBzeW5jIHJhbmdlcyB1c2Vk
IHRvIHBlcmZvcm0gbW9kZSB2YWxpZGF0aW9uIGZvciB0aGUKKyAqIHNwZWNpZmllZCBkaXNwbGF5
IGRldmljZS4gIFRoZSByYW5nZXMgYXJlIGluIHRoZSBzYW1lIGZvcm1hdCBhcyB0aGUKKyAqICJI
b3JpelN5bmMiIFggY29uZmlnIG9wdGlvbjoKKyAqCisgKiAgICJob3JpenN5bmMtcmFuZ2UgbWF5
IGJlIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgZWl0aGVyIGRpc2NyZXRlCisgKiAgIHZhbHVl
cyBvciByYW5nZXMgb2YgdmFsdWVzLiAgQSByYW5nZSBvZiB2YWx1ZXMgaXMgdHdvIHZhbHVlcwor
ICogICBzZXBhcmF0ZWQgYnkgYSBkYXNoLiIKKyAqCisgKiBUaGUgdmFsdWVzIGFyZSBpbiBrSHou
CisgKgorICogQWRkaXRpb25hbGx5LCB0aGUgc3RyaW5nIG1heSBiZSBwcmVwZW5kZWQgd2l0aCBh
IGNvbW1hLXNlcGFyYXRlZAorICogbGlzdCBvZiAidG9rZW49dmFsdWUiIHBhaXJzLCBzZXBhcmF0
ZWQgZnJvbSB0aGUgSG9yaXpTeW5jIHN0cmluZyBieQorICogIjo6Ii4gIFZhbGlkIHRva2VuczoK
KyAqCisgKiAgICBUb2tlbiAgICAgVmFsdWUKKyAqICAgInNvdXJjZSIgICJlZGlkIiAgICAgLSBI
b3JpelN5bmMgaXMgZnJvbSB0aGUgZGlzcGxheSBkZXZpY2UncyBFRElECisgKiAgICAgICAgICAg
ICAieGNvbmZpZyIgIC0gSG9yaXpTeW5jIGlzIGZyb20gdGhlICJIb3JpelN5bmMiIGVudHJ5IGlu
CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIE1vbml0b3Igc2VjdGlvbiBvZiB0aGUg
WCBjb25maWcgZmlsZQorICogICAgICAgICAgICAgIm9wdGlvbiIgICAtIEhvcml6U3luYyBpcyBm
cm9tIHRoZSAiSG9yaXpTeW5jIiBOVklESUEgWAorICogICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbmZpZyBvcHRpb24KKyAqICAgICAgICAgICAgICJ0d2ludmlldyIgLSBIb3JpelN5bmMgaXMg
ZnJvbSB0aGUgIlNlY29uZE1vbml0b3JIb3JpelN5bmMiCisgKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgTlZJRElBIFggY29uZmlnIG9wdGlvbgorICogICAgICAgICAgICAgImJ1aWx0aW4iICAt
IEhvcml6U3luYyBpcyBmcm9tIE5WSURJQSBYIGRyaXZlciBidWlsdGluCisgKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdCB2YWx1ZXMKKyAqCisgKiBBZGRpdGlvbmFsIHRva2VucyBh
bmQvb3IgdmFsdWVzIG1heSBiZSBhZGRlZCBpbiB0aGUgZnV0dXJlLgorICoKKyAqIEV4YW1wbGU6
ICJzb3VyY2U9ZWRpZCA6OiAzMC4wMDAtNjIuMDAwIgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9T
VFJJTkdfVkFMSURfSE9SSVpfU1lOQ19SQU5HRVMgMjQgLyogUi1ERyAqLworCisvKgorICogTlZf
Q1RSTF9TVFJJTkdfVkFMSURfVkVSVF9SRUZSRVNIX1JBTkdFUyAtIHJldHVybnMgdGhlIHZhbGlk
CisgKiB2ZXJ0aWNhbCByZWZyZXNoIHJhbmdlcyB1c2VkIHRvIHBlcmZvcm0gbW9kZSB2YWxpZGF0
aW9uIGZvciB0aGUKKyAqIHNwZWNpZmllZCBkaXNwbGF5IGRldmljZS4gIFRoZSByYW5nZXMgYXJl
IGluIHRoZSBzYW1lIGZvcm1hdCBhcyB0aGUKKyAqICJWZXJ0UmVmcmVzaCIgWCBjb25maWcgb3B0
aW9uOgorICoKKyAqICAgInZlcnRyZWZyZXNoLXJhbmdlIG1heSBiZSBhIGNvbW1hIHNlcGFyYXRl
ZCBsaXN0IG9mIGVpdGhlciBkaXNjcmV0ZQorICogICAgdmFsdWVzIG9yIHJhbmdlcyBvZiB2YWx1
ZXMuICBBIHJhbmdlIG9mIHZhbHVlcyBpcyB0d28gdmFsdWVzCisgKiAgICBzZXBhcmF0ZWQgYnkg
YSBkYXNoLiIKKyAqCisgKiBUaGUgdmFsdWVzIGFyZSBpbiBIei4KKyAqCisgKiBBZGRpdGlvbmFs
bHksIHRoZSBzdHJpbmcgbWF5IGJlIHByZXBlbmRlZCB3aXRoIGEgY29tbWEtc2VwYXJhdGVkCisg
KiBsaXN0IG9mICJ0b2tlbj12YWx1ZSIgcGFpcnMsIHNlcGFyYXRlZCBmcm9tIHRoZSBWZXJ0UmVm
cmVzaCBzdHJpbmcgYnkKKyAqICI6OiIuICBWYWxpZCB0b2tlbnM6CisgKgorICogICAgVG9rZW4g
ICAgIFZhbHVlCisgKiAgICJzb3VyY2UiICAiZWRpZCIgICAgIC0gVmVydFJlZnJlc2ggaXMgZnJv
bSB0aGUgZGlzcGxheSBkZXZpY2UncyBFRElECisgKiAgICAgICAgICAgICAieGNvbmZpZyIgIC0g
VmVydFJlZnJlc2ggaXMgZnJvbSB0aGUgIlZlcnRSZWZyZXNoIiBlbnRyeSBpbgorICogICAgICAg
ICAgICAgICAgICAgICAgICAgIHRoZSBNb25pdG9yIHNlY3Rpb24gb2YgdGhlIFggY29uZmlnIGZp
bGUKKyAqICAgICAgICAgICAgICJvcHRpb24iICAgLSBWZXJ0UmVmcmVzaCBpcyBmcm9tIHRoZSAi
VmVydFJlZnJlc2giIE5WSURJQSBYCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmln
IG9wdGlvbgorICogICAgICAgICAgICAgInR3aW52aWV3IiAtIFZlcnRSZWZyZXNoIGlzIGZyb20g
dGhlICJTZWNvbmRNb25pdG9yVmVydFJlZnJlc2giCisgKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgTlZJRElBIFggY29uZmlnIG9wdGlvbgorICogICAgICAgICAgICAgImJ1aWx0aW4iICAtIFZl
cnRSZWZyZXNoIGlzIGZyb20gTlZJRElBIFggZHJpdmVyIGJ1aWx0aW4KKyAqICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0IHZhbHVlcworICoKKyAqIEFkZGl0aW9uYWwgdG9rZW5zIGFu
ZC9vciB2YWx1ZXMgbWF5IGJlIGFkZGVkIGluIHRoZSBmdXR1cmUuCisgKgorICogRXhhbXBsZTog
InNvdXJjZT1lZGlkIDo6IDUwLjAwMC03NS4wMDAiCisgKi8KKworI2RlZmluZSBOVl9DVFJMX1NU
UklOR19WQUxJRF9WRVJUX1JFRlJFU0hfUkFOR0VTIDI1IC8qIFItREcgKi8KKworLyoKKyAqIE5W
X0NUUkxfU1RSSU5HX1hJTkVSQU1BX1NDUkVFTl9JTkZPIC0gcmV0dXJucyB0aGUgcGh5c2ljYWwg
WCBTY3JlZW4ncworICogaW5pdGlhbCBwb3NpdGlvbiBhbmQgc2l6ZSAoaW4gYWJzb2x1dGUgY29v
cmRpbmF0ZXMpIHdpdGhpbiB0aGUgWGluZXJhbWEKKyAqIGRlc2t0b3AgYXMgdGhlICJ0b2tlbj12
YWx1ZSIgc3RyaW5nOiAgIng9IywgeT0jLCB3aWR0aD0jLCBoZWlnaHQ9IyIKKyAqCisgKiBRdWVy
eWluZyB0aGlzIGF0dHJpYnV0ZSByZXR1cm5zIEZBTFNFIGlmIE5WX0NUUkxfWElORVJBTUEgaXMg
bm90CisgKiBOVl9DVFJMX1hJTkVSQU1BX09OLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9TVFJJ
TkdfWElORVJBTUFfU0NSRUVOX0lORk8gMjYgLyogUi0tLSAqLworCisvKgorICogTlZfQ1RSTF9T
VFJJTkdfVFdJTlZJRVdfWElORVJBTUFfSU5GT19PUkRFUiAtIHVzZWQgdG8gc3BlY2lmeSB0aGUK
KyAqIG9yZGVyIHRoYXQgZGlzcGxheSBkZXZpY2VzIHdpbGwgYmUgcmV0dXJuZWQgdmlhIFhpbmVy
YW1hIHdoZW4KKyAqIG52aWRpYVhpbmVyYW1hSW5mbyBpcyBlbmFibGVkLiAgRm9sbG93cyB0aGUg
c2FtZSBzeW50YXggYXMgdGhlCisgKiBudmlkaWFYaW5lcmFtYUluZm9PcmRlciBYIGNvbmZpZyBv
cHRpb24uCisgKi8KKworI2RlZmluZSBOVl9DVFJMX1NUUklOR19OVklESUFfWElORVJBTUFfSU5G
T19PUkRFUiAyNyAvKiBSVy0tICovCisKKyNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfVFdJTlZJRVdf
WElORVJBTUFfSU5GT19PUkRFUiBcCisgICAgTlZfQ1RSTF9TVFJJTkdfTlZJRElBX1hJTkVSQU1B
X0lORk9fT1JERVIgLyogZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OiAqLworCisvKgorICog
TlZfQ1RSTF9TVFJJTkdfU0xJX01PREUgLSByZXR1cm5zIGEgc3RyaW5nIGRlc2NyaWJpbmcgdGhl
IGN1cnJlbnQKKyAqIFNMSSBtb2RlLCBpZiBhbnksIG9yIEZBTFNFIGlmIFNMSSBpcyBub3QgY3Vy
cmVudGx5IGVuYWJsZWQuCisgKgorICogVGhpcyBzdHJpbmcgc2hvdWxkIGJlIHVzZWQgZm9yIGlu
Zm9ybWF0aW9uYWwgcHVycG9zZXMgb25seSwgYW5kCisgKiBzaG91bGQgbm90IGJlIHVzZWQgdG8g
ZGlzdGluZ3Vpc2ggYmV0d2VlbiBTTEkgbW9kZXMsIG90aGVyIHRoYW4gdG8KKyAqIHJlY29nbml6
ZSB3aGVuIFNMSSBpcyBkaXNhYmxlZCAoRkFMU0UgaXMgcmV0dXJuZWQpIG9yCisgKiBlbmFibGVk
ICh0aGUgcmV0dXJuZWQgc3RyaW5nIGlzIG5vbi1OVUxMIGFuZCBkZXNjcmliZXMgdGhlIGN1cnJl
bnQKKyAqIFNMSSBjb25maWd1cmF0aW9uKS4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfU1RSSU5H
X1NMSV9NT0RFIDI4IC8qIFItLS0qLworCisvKgorICogTlZfQ1RSTF9TVFJJTkdfUEVSRk9STUFO
Q0VfTU9ERVMgLSByZXR1cm5zIGEgc3RyaW5nIHdpdGggYWxsIHRoZQorICogcGVyZm9ybWFuY2Ug
bW9kZXMgZGVmaW5lZCBmb3IgdGhpcyBHUFUgYWxvbmcgd2l0aCB0aGVpciBhc3NvY2lhdGVkCisg
KiBOViBDbG9jayBhbmQgTWVtb3J5IENsb2NrIHZhbHVlcy4KKyAqCisgKiBFYWNoIHBlcmZvcm1h
bmNlIG1vZGVzIGFyZSByZXR1cm5lZCBhcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mCisgKiAi
dG9rZW49dmFsdWUiIHBhaXJzLiAgRWFjaCBzZXQgb2YgcGVyZm9ybWFuY2UgbW9kZSB0b2tlbnMg
YXJlIHNlcGFyYXRlZAorICogYnkgYSAiOyIuICBWYWxpZCB0b2tlbnM6CisgKgorICogICAgVG9r
ZW4gICAgICBWYWx1ZQorICogICAicGVyZiIgICAgICBpbnRlZ2VyICAgLSB0aGUgUGVyZm9ybWFu
Y2UgbGV2ZWwKKyAqICAgIm52Y2xvY2siICAgaW50ZWdlciAgIC0gdGhlIEdQVSBjbG9ja3MgKGlu
IE1IeikgZm9yIHRoZSBwZXJmIGxldmVsCisgKiAgICJtZW1jbG9jayIgIGludGVnZXIgICAtIHRo
ZSBtZW1vcnkgY2xvY2tzIChpbiBNSHopIGZvciB0aGUgcGVyZiBsZXZlbAorICoKKyAqCisgKiBF
eGFtcGxlOgorICoKKyAqICAgcGVyZj0wLCBudmNsb2NrPTUwMCwgbWVtY2xvY2s9NTA1IDsgcGVy
Zj0xLCBudmNsb2NrPTY1MCwgbWVtY2xvY2s9NTA1CisgKgorICogVGhpcyBhdHRyaWJ1dGUgbWF5
IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRTdHJpbmdBdHRyaWJ1dGUoKQor
ICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0dQVSBvciBOVl9DVFJMX1RBUkdFVF9UWVBF
X1hfU0NSRUVOIHRhcmdldC4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfU1RSSU5HX1BFUkZPUk1B
TkNFX01PREVTIDI5IC8qIFItLUcgKi8KKworLyoKKyAqIE5WX0NUUkxfU1RSSU5HX1ZDU0NfRkFO
X1NUQVRVUyAtIHJldHVybnMgYSBzdHJpbmcgd2l0aCBzdGF0dXMgb2YgYWxsIHRoZQorICogZmFu
cyBpbiB0aGUgVmlzdWFsIENvbXB1dGluZyBTeXN0ZW0sIGlmIHN1Y2ggYSBxdWVyeSBpcyBzdXBw
b3J0ZWQuICBGYW4KKyAqIGluZm9ybWF0aW9uIGlzIHJlcG9ydGVkIGFsb25nIHdpdGggaXRzIHRh
Y2hvbWV0ZXIgcmVhZGluZyAoaW4gUlBNKSBhbmQgYQorICogZmxhZyBpbmRpY2F0aW5nIHdoZXRo
ZXIgdGhlIGZhbiBoYXMgZmFpbGVkIG9yIG5vdC4KKyAqCisgKiBWYWxpZCB0b2tlbnM6CisgKgor
ICogICAgVG9rZW4gICAgICBWYWx1ZQorICogICAiZmFuIiAgICAgICBpbnRlZ2VyICAgLSB0aGUg
RmFuIGluZGV4CisgKiAgICJzcGVlZCIgICAgIGludGVnZXIgICAtIHRoZSB0YWNob21ldGVyIHJl
YWRpbmcgb2YgdGhlIGZhbiBpbiBycG0KKyAqICAgImZhaWwiICAgICAgaW50ZWdlciAgIC0gZmxh
ZyB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBmYW4gaGFzIGZhaWxlZAorICoKKyAqIEV4YW1wbGU6
CisgKgorICogICBmYW49MCwgc3BlZWQ9Njk0LCBmYWlsPTAgOyBmYW49MSwgc3BlZWQ9NjkzLCBm
YWlsPTAKKyAqCisgKiBUaGlzIGF0dHJpYnV0ZSBtdXN0IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZD
VFJMUXVlcnlUYXJnZXRTdHJpbmdBdHRyaWJ1dGUoKQorICogdXNpbmcgYSBOVl9DVFJMX1RBUkdF
VF9UWVBFX1ZDU0MgdGFyZ2V0LgorICoKKyAqLworCisjZGVmaW5lIE5WX0NUUkxfU1RSSU5HX1ZD
U0NfRkFOX1NUQVRVUyAzMCAvKiBSLS0tViAqLworCisvKgorICogTlZfQ1RSTF9TVFJJTkdfVkNT
Q19URU1QRVJBVFVSRVMgLSByZXR1cm5zIGEgc3RyaW5nIHdpdGggYWxsIFRlbXBlcmF0dXJlCisg
KiByZWFkaW5ncyBpbiB0aGUgVmlzdWFsIENvbXB1dGluZyBTeXN0ZW0sIGlmIHN1Y2ggYSBxdWVy
eSBpcyBzdXBwb3J0ZWQuCisgKiBJbnRha2UsIEV4aGF1c3QgYW5kIEJvYXJkIFRlbXBlcmF0dXJl
IHZhbHVlcyBhcmUgcmVwb3J0ZWQgaW4gQ2VsY2l1cy4KKyAqCisgKiBWYWxpZCB0b2tlbnM6Cisg
KgorICogICAgVG9rZW4gICAgICBWYWx1ZQorICogICAiaW50YWtlIiAgICBpbnRlZ2VyICAgLSB0
aGUgaW50YWtlIHRlbXBlcmF0dXJlIGZvciB0aGUgVkNTCisgKiAgICJleGhhdXN0IiAgIGludGVn
ZXIgICAtIHRoZSBleGhhdXN0IHRlbXBlcmF0dXJlIGZvciB0aGUgVkNTCisgKiAgICJib2FyZCIg
ICAgIGludGVnZXIgICAtIHRoZSBib2FyZCB0ZW1wZXJhdHVyZSBvZiB0aGUgVkNTCisgKgorICog
RXhhbXBsZToKKyAqCisgKiAgIGludGFrZT0yOSwgZXhoYXVzdD00NiwgYm9hcmQ9NDEKKyAqCisg
KiBUaGlzIGF0dHJpYnV0ZSBtdXN0IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJn
ZXRTdHJpbmdBdHRyaWJ1dGUoKQorICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX1ZDU0Mg
dGFyZ2V0LgorICoKKyAqLworCisjZGVmaW5lIE5WX0NUUkxfU1RSSU5HX1ZDU0NfVEVNUEVSQVRV
UkVTIDMxIC8qIFItLS1WICovCisKKy8qCisgKiBOVl9DVFJMX1NUUklOR19WQ1NDX1BTVV9JTkZP
IC0gcmV0dXJucyBhIHN0cmluZyB3aXRoIGFsbCBQb3dlciBTdXBwbHkgVW5pdAorICogcmVsYXRl
ZCByZWFkaW5ncyBpbiB0aGUgVmlzdWFsIENvbXB1dGluZyBTeXN0ZW0sIGlmIHN1Y2ggYSBxdWVy
eSBpcworICogc3VwcG9ydGVkLiAgQ3VycmVudCBpbiBhbXBlcmVzLCBQb3dlciBpbiB3YXR0cywg
Vm9sdGFnZSBpbiB2b2x0cyBhbmQgUFNVCisgKiBzdGF0ZSBtYXkgYmUgcmVwb3J0ZWQuICBOb3Qg
YWxsIFBTVSB0eXBlcyBzdXBwb3J0IGFsbCBvZiB0aGVzZSB2YWx1ZXMsIGFuZAorICogdGhlcmVm
b3JlIHNvbWUgcmVhZGluZ3MgbWF5IGJlIHVua25vd24uCisgKgorICogVmFsaWQgdG9rZW5zOgor
ICoKKyAqICAgIFRva2VuICAgICAgVmFsdWUKKyAqICAgImN1cnJlbnQiICAgaW50ZWdlciAgIC0g
dGhlIGN1cnJlbnQgZHJhd24gaW4gYW1wZXJlcyBieSB0aGUgVkNTCisgKiAgICJwb3dlciIgICAg
IGludGVnZXIgICAtIHRoZSBwb3dlciBkcmF3biBpbiB3YXR0cyBieSB0aGUgVkNTCisgKiAgICJ2
b2x0YWdlIiAgIGludGVnZXIgICAtIHRoZSB2b2x0YWdlIHJlYWRpbmcgb2YgdGhlIFZDUworICog
ICAic3RhdGUiICAgICBpbnRlZ2VyICAgLSBmbGFnIHRvIGluZGljYXRlIHdoZXRoZXIgUFNVIGlz
IG9wZXJhdGluZyBub3JtYWxseQorICoKKyAqIEV4YW1wbGU6CisgKgorICogICBjdXJyZW50PTEw
LCBwb3dlcj0xNSwgdm9sdGFnZT11bmtub3duLCBzdGF0ZT1ub3JtYWwKKyAqCisgKiBUaGlzIGF0
dHJpYnV0ZSBtdXN0IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRTdHJpbmdB
dHRyaWJ1dGUoKQorICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX1ZDU0MgdGFyZ2V0Lgor
ICoKKyAqLworCisjZGVmaW5lIE5WX0NUUkxfU1RSSU5HX1ZDU0NfUFNVX0lORk8gMzIgLyogUi0t
LVYgKi8KKworLyoKKyAqIE5WX0NUUkxfU1RSSU5HX0dWSU9fVklERU9fRk9STUFUX05BTUUgLSBx
dWVyeSB0aGUgbmFtZSBmb3IgdGhlIHNwZWNpZmllZAorICogTlZfQ1RSTF9HVklPX1ZJREVPX0ZP
Uk1BVF8qLiAgU28gdGhhdCB0aGlzIGNhbiBiZSBxdWVyaWVkIHdpdGggZXhpc3RpbmcKKyAqIGlu
dGVyZmFjZXMsIFhOVkNUUkxRdWVyeVN0cmluZ0F0dHJpYnV0ZSgpIHNob3VsZCBiZSB1c2VkLCBh
bmQgdGhlIHZpZGVvCisgKiBmb3JtYXQgc3BlY2lmaWVkIGluIHRoZSBkaXNwbGF5X21hc2sgZmll
bGQ7IGVnOgorICoKKyAqIFhOVkNUUkxRdWVyeVN0cmluZ0F0dHJpYnV0ZShkcHksCisgKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2NyZWVuLAorICogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfNzIwUF82MF8wMF9TTVBURTI5NiwKKyAq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUX05B
TUUsCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWUpOworICovCisKKyNkZWZp
bmUgTlZfQ1RSTF9TVFJJTkdfR1ZJT19WSURFT19GT1JNQVRfTkFNRSAzMyAvKiBSLS1HSSAqLwor
CisvKgorICogVGhlIGZvbGxvd2luZyBpcyBkZXByZWNhdGVkOyB1c2UgTlZfQ1RSTF9TVFJJTkdf
R1ZJT19WSURFT19GT1JNQVRfTkFNRSwKKyAqIGluc3RlYWQKKyAqLworI2RlZmluZSBOVl9DVFJM
X1NUUklOR19HVk9fVklERU9fRk9STUFUX05BTUUgMzMgLyogUi0tLSAqLworCisvKgorICogTlZf
Q1RSTF9TVFJJTkdfR1BVX0NVUlJFTlRfQ0xPQ0tfRlJFUVMgLSByZXR1cm5zIGEgc3RyaW5nIHdp
dGggdGhlCisgKiBhc3NvY2lhdGVkIE5WIENsb2NrLCBNZW1vcnkgQ2xvY2sgYW5kIFByb2Nlc3Nv
ciBDbG9jayB2YWx1ZXMuCisgKgorICogQ3VycmVudCB2YWxpZCB0b2tlbnMgYXJlICJudmNsb2Nr
IiwgIm1lbWNsb2NrIiwgYW5kICJwcm9jZXNzb3JjbG9jayIuCisgKiBOb3QgYWxsIHRva2VucyB3
aWxsIGJlIHJlcG9ydGVkIG9uIGFsbCBHUFVzLCBhbmQgYWRkaXRpb25hbCB0b2tlbnMKKyAqIG1h
eSBiZSBhZGRlZCBpbiB0aGUgZnV0dXJlLgorICoKKyAqIENsb2NrIHZhbHVlcyBhcmUgcmV0dXJu
ZWQgYXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZgorICogInRva2VuPXZhbHVlIiBwYWlycy4K
KyAqIFZhbGlkIHRva2VuczoKKyAqCisgKiAgICBUb2tlbiAgICAgICAgICAgVmFsdWUKKyAqICAg
Im52Y2xvY2siICAgICAgICBpbnRlZ2VyIC0gdGhlIEdQVSBjbG9ja3MgKGluIE1IeikgZm9yIHRo
ZSBjdXJyZW50CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmYgbGV2ZWwKKyAq
ICAgIm1lbWNsb2NrIiAgICAgICBpbnRlZ2VyIC0gdGhlIG1lbW9yeSBjbG9ja3MgKGluIE1Ieikg
Zm9yIHRoZSBjdXJyZW50CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmYgbGV2
ZWwKKyAqICAgInByb2Nlc3NvcmNsb2NrIiBpbnRlZ2VyIC0gdGhlIHByb2Nlc3NvciBjbG9ja3Mg
KGluIE1IeikgZm9yIHRoZSBwZXJmIGxldmVsCisgKgorICoKKyAqIEV4YW1wbGU6CisgKgorICog
ICAgbnZjbG9jaz00NTksIG1lbWNsb2NrPTQwMCwgcHJvY2Vzc29yY2xvY2s9OTE4CisgKgorICog
VGhpcyBhdHRyaWJ1dGUgbWF5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRT
dHJpbmdBdHRyaWJ1dGUoKQorICogdXNpbmcgYW4gTlZfQ1RSTF9UQVJHRVRfVFlQRV9HUFUgb3Ig
TlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiB0YXJnZXQuCisgKi8KKworI2RlZmluZSBOVl9D
VFJMX1NUUklOR19HUFVfQ1VSUkVOVF9DTE9DS19GUkVRUyAzNCAvKiBSVy1HICovCisKKy8qCisg
KiBOVl9DVFJMX1NUUklOR18zRF9WSVNJT05fUFJPX1RSQU5TQ0VJVkVSX0hBUkRXQVJFX1JFVklT
SU9OIC0gUmV0dXJucyB0aGUKKyAqIGhhcmR3YXJlIHJldmlzaW9uIG9mIHRoZSAzRCBWaXNpb24g
UHJvIHRyYW5zY2VpdmVyLgorICovCisjZGVmaW5lIE5WX0NUUkxfU1RSSU5HXzNEX1ZJU0lPTl9Q
Uk9fVFJBTlNDRUlWRVJfSEFSRFdBUkVfUkVWSVNJT04gMzUgLyogUi0tVCAqLworCisvKgorICog
TlZfQ1RSTF9TVFJJTkdfM0RfVklTSU9OX1BST19UUkFOU0NFSVZFUl9GSVJNV0FSRV9WRVJTSU9O
X0EgLSBSZXR1cm5zIHRoZQorICogZmlybXdhcmUgdmVyc2lvbiBvZiBjaGlwIEEgb2YgdGhlIDNE
IFZpc2lvbiBQcm8gdHJhbnNjZWl2ZXIuCisgKi8KKyNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfM0Rf
VklTSU9OX1BST19UUkFOU0NFSVZFUl9GSVJNV0FSRV9WRVJTSU9OX0EgMzYgLyogUi0tVCAqLwor
CisvKgorICogTlZfQ1RSTF9TVFJJTkdfM0RfVklTSU9OX1BST19UUkFOU0NFSVZFUl9GSVJNV0FS
RV9EQVRFX0EgLSBSZXR1cm5zIHRoZQorICogZGF0ZSBvZiB0aGUgZmlybXdhcmUgb2YgY2hpcCBB
IG9mIHRoZSAzRCBWaXNpb24gUHJvIHRyYW5zY2VpdmVyLgorICovCisjZGVmaW5lIE5WX0NUUkxf
U1RSSU5HXzNEX1ZJU0lPTl9QUk9fVFJBTlNDRUlWRVJfRklSTVdBUkVfREFURV9BIDM3IC8qIFIt
LVQgKi8KKworLyoKKyAqIE5WX0NUUkxfU1RSSU5HXzNEX1ZJU0lPTl9QUk9fVFJBTlNDRUlWRVJf
RklSTVdBUkVfVkVSU0lPTl9CIC0gUmV0dXJucyB0aGUKKyAqIGZpcm13YXJlIHZlcnNpb24gb2Yg
Y2hpcCBCIG9mIHRoZSAzRCBWaXNpb24gUHJvIHRyYW5zY2VpdmVyLgorICovCisjZGVmaW5lIE5W
X0NUUkxfU1RSSU5HXzNEX1ZJU0lPTl9QUk9fVFJBTlNDRUlWRVJfRklSTVdBUkVfVkVSU0lPTl9C
IDM4IC8qIFItLVQgKi8KKworLyoKKyAqIE5WX0NUUkxfU1RSSU5HXzNEX1ZJU0lPTl9QUk9fVFJB
TlNDRUlWRVJfRklSTVdBUkVfREFURV9CIC0gUmV0dXJucyB0aGUKKyAqIGRhdGUgb2YgdGhlIGZp
cm13YXJlIG9mIGNoaXAgQiBvZiB0aGUgM0QgVmlzaW9uIFBybyB0cmFuc2NlaXZlci4KKyAqLwor
I2RlZmluZSBOVl9DVFJMX1NUUklOR18zRF9WSVNJT05fUFJPX1RSQU5TQ0VJVkVSX0ZJUk1XQVJF
X0RBVEVfQiAzOSAvKiBSLS1UICovCisKKy8qCisgKiBOVl9DVFJMX1NUUklOR18zRF9WSVNJT05f
UFJPX1RSQU5TQ0VJVkVSX0FERFJFU1MgLSBSZXR1cm5zIHRoZSBSRiBhZGRyZXNzCisgKiBvZiB0
aGUgM0QgVmlzaW9uIFBybyB0cmFuc2NlaXZlci4KKyAqLworI2RlZmluZSBOVl9DVFJMX1NUUklO
R18zRF9WSVNJT05fUFJPX1RSQU5TQ0VJVkVSX0FERFJFU1MgNDAgLyogUi0tVCAqLworCisvKgor
ICogTlZfQ1RSTF9TVFJJTkdfM0RfVklTSU9OX1BST19HTEFTU0VTX0ZJUk1XQVJFX1ZFUlNJT05f
QSAtIFJldHVybnMgdGhlCisgKiBmaXJtd2FyZSB2ZXJzaW9uIG9mIGNoaXAgQSBvZiB0aGUgZ2xh
c3Nlcy4KKyAqIFVzZSB0aGUgZGlzcGxheV9tYXNrIHBhcmFtZXRlciB0byBzcGVjaWZ5IHRoZSBn
bGFzc2VzIGlkLgorICovCisjZGVmaW5lIE5WX0NUUkxfU1RSSU5HXzNEX1ZJU0lPTl9QUk9fR0xB
U1NFU19GSVJNV0FSRV9WRVJTSU9OX0EgNDEgLyogUi0tVCAqLworCisvKgorICogTlZfQ1RSTF9T
VFJJTkdfM0RfVklTSU9OX1BST19HTEFTU0VTX0ZJUk1XQVJFX0RBVEVfQSAtIFJldHVybnMgdGhl
CisgKiBkYXRlIG9mIHRoZSBmaXJtd2FyZSBvZiBjaGlwIEEgb2YgdGhlIGdsYXNzZXMuCisgKiBV
c2UgdGhlIGRpc3BsYXlfbWFzayBwYXJhbWV0ZXIgdG8gc3BlY2lmeSB0aGUgZ2xhc3NlcyBpZC4K
KyAqLworI2RlZmluZSBOVl9DVFJMX1NUUklOR18zRF9WSVNJT05fUFJPX0dMQVNTRVNfRklSTVdB
UkVfREFURV9BIDQyIC8qIFItLVQgKi8KKworLyoKKyAqIE5WX0NUUkxfU1RSSU5HXzNEX1ZJU0lP
Tl9QUk9fR0xBU1NFU19BRERSRVNTIC0gUmV0dXJucyB0aGUgUkYgYWRkcmVzcworICogb2YgdGhl
IGdsYXNzZXMuCisgKiBVc2UgdGhlIGRpc3BsYXlfbWFzayBwYXJhbWV0ZXIgdG8gc3BlY2lmeSB0
aGUgZ2xhc3NlcyBpZC4KKyAqLworI2RlZmluZSBOVl9DVFJMX1NUUklOR18zRF9WSVNJT05fUFJP
X0dMQVNTRVNfQUREUkVTUyA0MyAvKiBSLS1UICovCisKKy8qCisgKiBOVl9DVFJMX1NUUklOR18z
RF9WSVNJT05fUFJPX0dMQVNTRVNfTkFNRSAtIENvbnRyb2xzIHRoZSBuYW1lIHRoZQorICogZ2xh
c3NlcyBzaG91bGQgdXNlLgorICogVXNlIHRoZSBkaXNwbGF5X21hc2sgcGFyYW1ldGVyIHRvIHNw
ZWNpZnkgdGhlIGdsYXNzZXMgaWQuCisgKiBHbGFzc2VzJyBuYW1lIHNob3VsZCBzdGFydCBhbmQg
ZW5kIHdpdGggYW4gYWxwaGEtbnVtZXJpYyBjaGFyYWN0ZXIuCisgKi8KKyNkZWZpbmUgTlZfQ1RS
TF9TVFJJTkdfM0RfVklTSU9OX1BST19HTEFTU0VTX05BTUUgNDQgLyogUlctVCAqLworCisvKgor
ICogTlZfQ1RSTF9TVFJJTkdfQ1VSUkVOVF9NRVRBTU9ERV9WRVJTSU9OXzIgLSBSZXR1cm5zIHRo
ZSBtZXRhbW9kZSBjdXJyZW50bHkKKyAqIGJlaW5nIHVzZWQgYnkgdGhlIHNwZWNpZmllZCBYIHNj
cmVlbi4gIFRoZSBNZXRhTW9kZSBzdHJpbmcgaGFzIHRoZSBzYW1lCisgKiBzeW50YXggYXMgdGhl
IE1ldGFNb2RlIFggY29uZmlndXJhdGlvbiBvcHRpb24sIGFzIGRvY3VtZW50ZWQgaW4gdGhlIE5W
SURJQQorICogZHJpdmVyIFJFQURNRS4gIEFsc28sIHNlZSBOVl9DVFJMX0JJTkFSWV9EQVRBX01F
VEFNT0RFU19WRVJTSU9OXzIgZm9yIG1vcmUKKyAqIGRldGFpbHMgb24gdGhlIGJhc2Ugc3ludGF4
LgorICoKKyAqIFRoZSByZXR1cm5lZCBzdHJpbmcgbWF5IGFsc28gYmUgcHJlcGVuZGVkIHdpdGgg
YSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZgorICogInRva2VuPXZhbHVlIiBwYWlycywgc2VwYXJh
dGVkIGZyb20gdGhlIE1ldGFNb2RlIHN0cmluZyBieSAiOjoiLgorICovCisjZGVmaW5lIE5WX0NU
UkxfU1RSSU5HX0NVUlJFTlRfTUVUQU1PREVfVkVSU0lPTl8yIDQ1IC8qIFJXLS0gKi8KKworLyoK
KyAqIE5WX0NUUkxfU1RSSU5HX0RJU1BMQVlfTkFNRV9UWVBFX0JBU0VOQU1FIC0gUmV0dXJucyBh
IHR5cGUgbmFtZSBmb3IgdGhlCisgKiBkaXNwbGF5IGRldmljZSAoIkNSVCIsICJERlAiLCBvciAi
VFYiKS4gIEhvd2V2ZXIsIG5vdGUgdGhhdCB0aGUgZGV0ZXJtaW5hdGlvbgorICogb2YgdGhlIG5h
bWUgaXMgYmFzZWQgb24gdGhlIHByb3RvY29sIHRocm91Z2ggd2hpY2ggdGhlIFggZHJpdmVyIGNv
bW11bmljYXRlcworICogdG8gdGhlIGRpc3BsYXkgZGV2aWNlLiAgRS5nLiwgaWYgdGhlIGRyaXZl
ciBjb21tdW5pY2F0ZXMgdXNpbmcgVkdBICx0aGVuIHRoZQorICogYmFzZW5hbWUgaXMgIkNSVCI7
IGlmIHRoZSBkcml2ZXIgY29tbXVuaWNhdGVzIHVzaW5nIFRNRFMsIExWRFMsIG9yIERQLCB0aGVu
CisgKiB0aGUgbmFtZSBpcyAiREZQIi4KKyAqLworI2RlZmluZSBOVl9DVFJMX1NUUklOR19ESVNQ
TEFZX05BTUVfVFlQRV9CQVNFTkFNRSA0NiAvKiBSLUQtICovCisKKy8qCisgKiBOVl9DVFJMX1NU
UklOR19ESVNQTEFZX05BTUVfVFlQRV9JRCAtIFJldHVybnMgdGhlIHR5cGUtYmFzZWQgbmFtZSAr
IElEIGZvcgorICogdGhlIGRpc3BsYXkgZGV2aWNlLCBlLmcuICJDUlQtMCIsICJERlAtMSIsICJU
Vi0yIi4gIElmIHRoaXMgZGV2aWNlIGlzIGEKKyAqIERpc3BsYXlQb3J0IDEuMiBkZXZpY2UsIHRo
ZW4gdGhpcyBuYW1lIHdpbGwgYWxzbyBiZSBwcmVwZW5kZWQgd2l0aCB0aGUKKyAqIGRldmljZSdz
IHBvcnQgYWRkcmVzcyBsaWtlIHNvOiAiREZQLTEuMC4xLjIuMyIuICBTZWUKKyAqIE5WX0NUUkxf
U1RSSU5HX0RJU1BMQVlfTkFNRV9UWVBFX0JBU0VOQU1FIGZvciBtb3JlIGluZm9ybWF0aW9uIGFi
b3V0IHRoZQorICogY29uc3RydWN0aW9uIG9mIHR5cGUtYmFzZWQgbmFtZXMuCisgKi8KKyNkZWZp
bmUgTlZfQ1RSTF9TVFJJTkdfRElTUExBWV9OQU1FX1RZUEVfSUQgNDcgLyogUi1ELSAqLworCisv
KgorICogTlZfQ1RSTF9TVFJJTkdfRElTUExBWV9OQU1FX0RQX0dVSUQgLSBSZXR1cm5zIHRoZSBH
VUlEIG9mIHRoZSBEaXNwbGF5UG9ydAorICogZGlzcGxheSBkZXZpY2UuICBlLmcuICJEUC1HVUlE
LWYxNmE1YmRlLTc5ZjMtMTFlMS1iMmFlLThiNWE4OTY5YmE5YyIKKyAqCisgKiBUaGUgZGlzcGxh
eSBkZXZpY2UgbXVzdCBiZSBhIERpc3BsYXlQb3J0IDEuMiBkZXZpY2UuCisgKi8KKyNkZWZpbmUg
TlZfQ1RSTF9TVFJJTkdfRElTUExBWV9OQU1FX0RQX0dVSUQgNDggLyogUi1ELSAqLworCisvKgor
ICogTlZfQ1RSTF9TVFJJTkdfRElTUExBWV9OQU1FX0VESURfSEFTSCAtIFJldHVybnMgdGhlIFNI
QS0xIGhhc2ggb2YgdGhlCisgKiBkaXNwbGF5IGRldmljZSdzIEVESUQgaW4gOC00LTQtNC0xMiBV
SUQgZm9ybWF0LiBlLmcuCisgKiAiRFBZLUVESUQtZjE2YTViZGUtNzlmMy0xMWUxLWIyYWUtOGI1
YTg5NjliYTljIgorICoKKyAqIFRoZSBkaXNwbGF5IGRldmljZSBtdXN0IGhhdmUgYSB2YWxpZCBF
RElELgorICovCisjZGVmaW5lIE5WX0NUUkxfU1RSSU5HX0RJU1BMQVlfTkFNRV9FRElEX0hBU0gg
NDkgLyogUi1ELSAqLworCisvKgorICogTlZfQ1RSTF9TVFJJTkdfRElTUExBWV9OQU1FX1RBUkdF
VF9JTkRFWCAtIFJldHVybnMgdGhlIGN1cnJlbnQgTlYtQ09OVFJPTAorICogdGFyZ2V0IElEIChu
YW1lKSBvZiB0aGUgZGlzcGxheSBkZXZpY2UuICBlLmcuICJEUFktMSIsICJEUFktNCIKKyAqCisg
KiBUaGlzIG5hbWUgZm9yIHRoZSBkaXNwbGF5IGRldmljZSBpcyBub3QgZ3VhcmVudGVlZCB0byBi
ZSB0aGUgc2FtZSBiZXR3ZWVuCisgKiBkaWZmZXJlbnQgcnVucyBvZiB0aGUgWCBzZXJ2ZXIuCisg
Ki8KKyNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfRElTUExBWV9OQU1FX1RBUkdFVF9JTkRFWCA1MCAv
KiBSLUQtICovCisKKy8qCisgKiBOVl9DVFJMX1NUUklOR19ESVNQTEFZX05BTUVfUkFORFIgLSBS
ZXR1cm5zIHRoZSBSYW5kUiBvdXRwdXQgbmFtZSBmb3IgdGhlCisgKiBkaXNwbGF5IGRldmljZS4g
IGUuZy4gICJWR0EtMSIsICJEVkktSS0wIiwgIkRWSS1ELTMiLCAiTFZEUy0xIiwgIkRQLTIiLAor
ICogIkhETUktMyIsICJlRFAtNiIuICBUaGlzIG5hbWUgc2hvdWxkIG1hdGNoICBJZiB0aGlzIGRl
dmljZSBpcyBhIERpc3BsYXlQb3J0CisgKiAxLjIgZGV2aWNlLCB0aGVuIHRoaXMgbmFtZSB3aWxs
IGFsc28gYmUgcHJlcGVuZGVkIHdpdGggdGhlIGRldmljZSdzIHBvcnQKKyAqIGFkZHJlc3MgbGlr
ZSBzbzogIkRWSS1JLTMuMC4xLjIuMyIKKyAqLworI2RlZmluZSBOVl9DVFJMX1NUUklOR19ESVNQ
TEFZX05BTUVfUkFORFIgNTEgLyogUi1ELSAqLworCisjZGVmaW5lIE5WX0NUUkxfU1RSSU5HX0xB
U1RfQVRUUklCVVRFIE5WX0NUUkxfU1RSSU5HX0RJU1BMQVlfTkFNRV9SQU5EUgorCisvKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKiovCisKKy8qCisgKiBCaW5hcnkgRGF0YSBBdHRyaWJ1dGVzOgorICoKKyAqIEJp
bmFyeSBkYXRhIGF0dHJpYnV0ZXMgY2FuIGJlIHF1ZXJ5aWVkIHRocm91Z2ggdGhlIFhOVkNUUkxR
dWVyeUJpbmFyeURhdGEoKQorICogYW5kIFhOVkNUUkxRdWVyeVRhcmdldEJpbmFyeURhdGEoKSBm
dW5jdGlvbiBjYWxscy4KKyAqCisgKiBUaGVyZSBhcmUgY3VycmVudGx5IG5vIGJpbmFyeSBkYXRh
IGF0dHJpYnV0ZXMgdGhhdCBjYW4gYmUgc2V0LgorICoKKyAqIFVubGVzcyBvdGhlcndpc2Ugbm90
ZWQsIGFsbCBCaW5hcnkgZGF0YSBhdHRyaWJ1dGVzIGNhbiBiZSBxdWVyaWVkCisgKiB1c2luZyBh
biBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOIHRhcmdldC4gIEF0dHJpYnV0ZXMgdGhhdCBj
YW5ub3QgdGFrZQorICogYW4gTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiB0YXJnZXQgYWxz
byBjYW5ub3QgYmUgcXVlcmllZCB0aHJvdWdoCisgKiBYTlZDVFJMUXVlcnlCaW5hcnlEYXRhKCkg
KFNpbmNlIGFuIFggU2NyZWVuIHRhcmdldCBpcyBhc3N1bWVkKS4KKyAqLworCisvKgorICogTlZf
Q1RSTF9CSU5BUllfREFUQV9FRElEIC0gUmV0dXJucyBhIGRpc3BsYXkgZGV2aWNlJ3MgRURJRCBp
bmZvcm1hdGlvbgorICogZGF0YS4KKyAqCisgKiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmll
ZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEJpbmFyeURhdGEoKQorICogdXNpbmcgYSBOVl9D
VFJMX1RBUkdFVF9UWVBFX0dQVSBvciBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOIHRhcmdl
dC4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfQklOQVJZX0RBVEFfRURJRCAwIC8qIFItREcgKi8K
KworLyoKKyAqIE5WX0NUUkxfQklOQVJZX0RBVEFfTU9ERUxJTkVTIC0gUmV0dXJucyBhIGRpc3Bs
YXkgZGV2aWNlJ3Mgc3VwcG9ydGVkCisgKiBNb2RlTGluZXMuICBNb2RlTGluZXMgYXJlIHJldHVy
bmVkIGluIGEgYnVmZmVyLCBzZXBhcmF0ZWQgYnkgYSBzaW5nbGUKKyAqICdcMCcgYW5kIHRlcm1p
bmF0ZWQgYnkgdHdvIGNvbnNlY3V0aXZlICdcMCcgcyBsaWtlIHNvOgorICoKKyAqICAiTW9kZUxp
bmUgMVwwTW9kZUxpbmUgMlwwTW9kZUxpbmUgM1wwTGFzdCBNb2RlTGluZVwwXDAiCisgKgorICog
VGhpcyBhdHRyaWJ1dGUgbWF5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRC
aW5hcnlEYXRhKCkKKyAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9HUFUgb3IgTlZfQ1RS
TF9UQVJHRVRfVFlQRV9YX1NDUkVFTiB0YXJnZXQuCisgKgorICogRWFjaCBNb2RlTGluZSBzdHJp
bmcgbWF5IGJlIHByZXBlbmRlZCB3aXRoIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QKKyAqIG9mICJ0
b2tlbj12YWx1ZSIgcGFpcnMsIHNlcGFyYXRlZCBmcm9tIHRoZSBNb2RlTGluZSBzdHJpbmcgd2l0
aCBhCisgKiAiOjoiLiAgVmFsaWQgdG9rZW5zOgorICoKKyAqICAgIFRva2VuICAgIFZhbHVlCisg
KiAgICJzb3VyY2UiICJ4c2VydmVyIiAgICAtIHRoZSBNb2RlTGluZSBpcyBmcm9tIHRoZSBjb3Jl
IFggc2VydmVyCisgKiAgICAgICAgICAgICJ4Y29uZmlnIiAgICAtIHRoZSBNb2RlTGluZSB3YXMg
c3BlY2lmaWVkIGluIHRoZSBYIGNvbmZpZyBmaWxlCisgKiAgICAgICAgICAgICJidWlsdGluIiAg
ICAtIHRoZSBOVklESUEgZHJpdmVyIHByb3ZpZGVkIHRoaXMgYnVpbHRpbiBNb2RlTGluZQorICog
ICAgICAgICAgICAidmVzYSIgICAgICAgLSB0aGlzIGlzIGEgVkVTQSBzdGFuZGFyZCBNb2RlTGlu
ZQorICogICAgICAgICAgICAiZWRpZCIgICAgICAgLSB0aGUgTW9kZUxpbmUgd2FzIGluIHRoZSBk
aXNwbGF5IGRldmljZSdzIEVESUQKKyAqICAgICAgICAgICAgIm52LWNvbnRyb2wiIC0gdGhlIE1v
ZGVMaW5lIHdhcyBzcGVjaWZpZWQgdmlhIE5WLUNPTlRST0wKKyAqCisgKiAgICJ4Y29uZmlnLW5h
bWUiICAgICAgICAtIGZvciBNb2RlTGluZXMgdGhhdCB3ZXJlIHNwZWNpZmllZCBpbiB0aGUgWCBj
b25maWcKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSwgdGhpcyBpcyB0aGUgbmFt
ZSB0aGUgWCBjb25maWcgZmlsZQorICogICAgICAgICAgICAgICAgICAgICAgICAgICBnYXZlIGZv
ciB0aGUgTW9kZUxpbmUuCisgKgorICogTm90ZSB0aGF0IGEgTW9kZUxpbmUgY2FuIGhhdmUgc2V2
ZXJhbCBzb3VyY2VzOyB0aGUgInNvdXJjZSIgdG9rZW4KKyAqIGNhbiBhcHBlYXIgbXVsdGlwbGUg
dGltZXMgaW4gdGhlICJ0b2tlbj12YWx1ZSIgcGFpcnMgbGlzdC4KKyAqIEFkZGl0aW9uYWwgc291
cmNlIHZhbHVlcyBtYXkgYmUgc3BlY2lmaWVkIGluIHRoZSBmdXR1cmUuCisgKgorICogQWRkaXRp
b25hbCB0b2tlbnMgbWF5IGJlIGFkZGVkIGluIHRoZSBmdXR1cmUsIHNvIGl0IGlzIHJlY29tbWVu
ZGVkCisgKiB0aGF0IGFueSB0b2tlbiBwYXJzZXIgcHJvY2Vzc2luZyB0aGUgcmV0dXJuZWQgc3Ry
aW5nIGZyb20KKyAqIE5WX0NUUkxfQklOQVJZX0RBVEFfTU9ERUxJTkVTIGJlIGltcGxlbWVudGVk
IHRvIGdyYWNlZnVsbHkgaWdub3JlCisgKiB1bnJlY29nbml6ZWQgdG9rZW5zLgorICoKKyAqIEUu
Zy4sCisgKgorICogInNvdXJjZT14c2VydmVyLCBzb3VyY2U9dmVzYSwgc291cmNlPWVkaWQgOjog
IjEwMjR4NzY4XzcwIiAgNzUuMCAgMTAyNCAxMDQ4IDExODQgMTMyOCAgNzY4IDc3MQorICogNzc3
IDgwNiAgLUhTeW5jIC1WU3luYyIKKyAqICJzb3VyY2U9eGNvbmZpZywgeGNvbmZpZy1uYW1lPTE2
MDB4MTIwMF82MC4wMCA6OiAiMTYwMHgxMjAwXzYwXzAiICAxNjEuMCAgMTYwMCAxNzA0IDE4ODAg
MjE2MAorICogMTIwMCAxMjAxIDEyMDQgMTI0MiAgLUhTeW5jICtWU3luYyIKKyAqLworCisjZGVm
aW5lIE5WX0NUUkxfQklOQVJZX0RBVEFfTU9ERUxJTkVTIDEgLyogUi1ERyAqLworCisvKgorICog
TlZfQ1RSTF9CSU5BUllfREFUQV9NRVRBTU9ERVMgLSBSZXR1cm5zIGFuIFggU2NyZWVuJ3Mgc3Vw
cG9ydGVkCisgKiBNZXRhTW9kZXMuICBNZXRhTW9kZXMgYXJlIHJldHVybmVkIGluIGEgYnVmZmVy
IHNlcGFyYXRlZCBieSBhCisgKiBzaW5nbGUgJ1wwJyBhbmQgdGVybWluYXRlZCBieSB0d28gY29u
c2VjdXRpdmUgJ1wwJyBzIGxpa2Ugc286CisgKgorICogICJNZXRhTW9kZSAxXDBNZXRhTW9kZSAy
XDBNZXRhTW9kZSAzXDBMYXN0IE1ldGFNb2RlXDBcMCIKKyAqCisgKiBUaGUgTWV0YU1vZGUgc3Ry
aW5nIHNob3VsZCBoYXZlIHRoZSBzYW1lIHN5bnRheCBhcyB0aGUgTWV0YU1vZGUgWAorICogY29u
ZmlndXJhdGlvbiBvcHRpb24sIGFzIGRvY3VtZW50ZWQgaW4gdGhlIE5WSURJQSBkcml2ZXIgUkVB
RE1FLgorCisgKiBFYWNoIE1ldGFNb2RlIHN0cmluZyBtYXkgYmUgcHJlcGVuZGVkIHdpdGggYSBj
b21tYS1zZXBhcmF0ZWQgbGlzdAorICogb2YgInRva2VuPXZhbHVlIiBwYWlycywgc2VwYXJhdGVk
IGZyb20gdGhlIE1ldGFNb2RlIHN0cmluZyB3aXRoCisgKiAiOjoiLiAgQ3VycmVudGx5LCB2YWxp
ZCB0b2tlbnMgYXJlOgorICoKKyAqICAgIFRva2VuICAgICAgICBWYWx1ZQorICogICAiaWQiICAg
ICAgICAgPG51bWJlcj4gICAgIC0gdGhlIGlkIG9mIHRoaXMgTWV0YU1vZGU7IHRoaXMgaXMgc3Rv
cmVkIGluCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgVmVydGljYWwgUmVm
cmVzaCBmaWVsZCwgYXMgdmlld2VkCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
eSB0aGUgWFJhbmRSIGFuZCBYRjg2VmlkTW9kZSBYICoKKyAqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4dGVuc2lvbnMuCisgKgorICogICAic3dpdGNoYWJsZSIgInllcyIvIm5vIiAg
IC0gd2hldGhlciB0aGlzIE1ldGFNb2RlIG1heSBiZSBzd2l0Y2hlZCB0byB2aWEKKyAqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGN0cmwtYWx0LSsvLTsgSW1wbGljaXQgTWV0YU1vZGVz
IChzZWUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSAiSW5jbHVkZUltcGxp
Y2l0TWV0YU1vZGVzIiBYCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcg
b3B0aW9uKSwgZm9yIGV4YW1wbGUsIGFyZSBub3QKKyAqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vcm1hbGx5IG1hZGUgYXZhaWxhYmxlIHRocm91Z2gKKyAqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGN0cmwtYWx0LSsvLS4KKyAqCisgKiAgICJzb3VyY2UiICAgICAieGNv
bmZpZyIgICAgLSB0aGUgTWV0YU1vZGUgd2FzIHNwZWNpZmllZCBpbiB0aGUgWAorICogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnIGZpbGUuCisgKiAgICAgICAgICAgICAgICAi
aW1wbGljaXQiICAgLSB0aGUgTWV0YU1vZGUgd2FzIGltcGxpY2l0bHkgYWRkZWQ7IHNlZSB0aGUK
KyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbmNsdWRlSW1wbGljaXRNZXRhTW9k
ZXMiIFggY29uZmlnIG9wdGlvbgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9y
IGRldGFpbHMuCisgKiAgICAgICAgICAgICAgICAibnYtY29udHJvbCIgLSB0aGUgTWV0YU1vZGUg
d2FzIGFkZGVkIHZpYSB0aGUgTlYtQ09OVFJPTCBYCisgKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleHRlbnNpb24gdG8gdGhlIGN1cnJlbnRseSBydW5uaW5nIFggc2VydmVyLgorICog
ICAgICAgICAgICAgICAgIlJhbmRSIiAgICAgIC0gdGhlIE1ldGFNb2RlIHdhcyBtb2RpZmllZCBp
biByZXNwb25zZSB0byBhbgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFuZFIg
UlJTZXRDcnRjQ29uZmlnIHJlcXVlc3QuCisgKgorICogQWRkaXRpb25hbCB0b2tlbnMgbWF5IGJl
IGFkZGVkIGluIHRoZSBmdXR1cmUsIHNvIGl0IGlzIHJlY29tbWVuZGVkCisgKiB0aGF0IGFueSB0
b2tlbiBwYXJzZXIgcHJvY2Vzc2luZyB0aGUgcmV0dXJuZWQgc3RyaW5nIGZyb20KKyAqIE5WX0NU
UkxfQklOQVJZX0RBVEFfTUVUQU1PREVTIGJlIGltcGxlbWVudGVkIHRvIGdyYWNlZnVsbHkgaWdu
b3JlCisgKiB1bnJlY29nbml6ZWQgdG9rZW5zLgorICoKKyAqIEUuZy4sCisgKgorICogICAiaWQ9
NTAsIHN3aXRjaGFibGU9eWVzLCBzb3VyY2U9eGNvbmZpZyA6OiBDUlQtMDogMTAyNHg3NjggQDEw
MjR4NzY4ICswKzAiCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0JJTkFSWV9EQVRBX01FVEFNT0RF
UyAyIC8qIFItRC0gKi8KKyNkZWZpbmUgTlZfQ1RSTF9CSU5BUllfREFUQV9NRVRBTU9ERVNfVkVS
U0lPTl8xIE5WX0NUUkxfQklOQVJZX0RBVEFfTUVUQU1PREVTCisKKy8qCisgKiBOVl9DVFJMX0JJ
TkFSWV9EQVRBX1hTQ1JFRU5TX1VTSU5HX0dQVSAtIFJldHVybnMgdGhlIGxpc3Qgb2YgWAorICog
c2NyZWVucyBjdXJyZW50bHkgZHJpdmVuIGJ5IHRoZSBnaXZlbiBHUFUuCisgKgorICogVGhlIGZv
cm1hdCBvZiB0aGUgcmV0dXJuZWQgZGF0YSBpczoKKyAqCisgKiAgICAgNCAgICAgICBDQVJEMzIg
bnVtYmVyIG9mIHNjcmVlbnMKKyAqICAgICA0ICogbiAgIENBUkQzMiBzY3JlZW4gaW5kaWNlcwor
ICoKKyAqIFRoaXMgYXR0cmlidXRlIGNhbiBvbmx5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJM
UXVlcnlUYXJnZXRCaW5hcnlEYXRhKCkKKyAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9H
UFUgdGFyZ2V0LiAgVGhpcyBhdHRyaWJ1dGUgY2Fubm90IGJlCisgKiBxdWVyaWVkIHVzaW5nIGEg
TlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTi4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfQklO
QVJZX0RBVEFfWFNDUkVFTlNfVVNJTkdfR1BVIDMgLyogUi1ERyAqLworCisvKgorICogTlZfQ1RS
TF9CSU5BUllfREFUQV9HUFVTX1VTRURfQllfWFNDUkVFTiAtIFJldHVybnMgdGhlIGxpc3Qgb2Yg
R1BVcworICogY3VycmVudGx5IGluIHVzZSBieSB0aGUgZ2l2ZW4gWCBzY3JlZW4uCisgKgorICog
VGhlIGZvcm1hdCBvZiB0aGUgcmV0dXJuZWQgZGF0YSBpczoKKyAqCisgKiAgICAgNCAgICAgICBD
QVJEMzIgbnVtYmVyIG9mIEdQVXMKKyAqICAgICA0ICogbiAgIENBUkQzMiBHUFUgaW5kaWNlcwor
ICovCisKKyNkZWZpbmUgTlZfQ1RSTF9CSU5BUllfREFUQV9HUFVTX1VTRURfQllfWFNDUkVFTiA0
IC8qIFItLS0gKi8KKworLyoKKyAqIE5WX0NUUkxfQklOQVJZX0RBVEFfR1BVU19VU0lOR19GUkFN
RUxPQ0sgLSBSZXR1cm5zIHRoZSBsaXN0IG9mCisgKiBHUFVzIGN1cnJlbnRseSBjb25uZWN0ZWQg
dG8gdGhlIGdpdmVuIGZyYW1lIGxvY2sgYm9hcmQuCisgKgorICogVGhlIGZvcm1hdCBvZiB0aGUg
cmV0dXJuZWQgZGF0YSBpczoKKyAqCisgKiAgICAgNCAgICAgICBDQVJEMzIgbnVtYmVyIG9mIEdQ
VXMKKyAqICAgICA0ICogbiAgIENBUkQzMiBHUFUgaW5kaWNlcworICoKKyAqIFRoaXMgYXR0cmli
dXRlIGNhbiBvbmx5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRCaW5hcnlE
YXRhKCkKKyAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9GUkFNRUxPQ0sgdGFyZ2V0LiAg
VGhpcyBhdHRyaWJ1dGUgY2Fubm90IGJlCisgKiBxdWVyaWVkIHVzaW5nIGEgTlZfQ1RSTF9UQVJH
RVRfVFlQRV9YX1NDUkVFTi4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfQklOQVJZX0RBVEFfR1BV
U19VU0lOR19GUkFNRUxPQ0sgNSAvKiBSLURGICovCisKKy8qCisgKiBOVl9DVFJMX0JJTkFSWV9E
QVRBX0RJU1BMQVlfVklFV1BPUlQgLSBSZXR1cm5zIHRoZSBEaXNwbGF5IERldmljZSdzCisgKiB2
aWV3cG9ydCBib3ggaW50byB0aGUgZ2l2ZW4gWCBTY3JlZW4gKGluIFggU2NyZWVuIGNvb3JkaW5h
dGVzLikKKyAqCisgKiBUaGUgZm9ybWF0IG9mIHRoZSByZXR1cm5lZCBkYXRhIGlzOgorICoKKyAq
ICAgICA0ICAgICAgIENBUkQzMiBPZmZzZXQgWAorICogICAgIDQgICAgICAgQ0FSRDMyIE9mZnNl
dCBZCisgKiAgICAgNCAgICAgICBDQVJEMzIgV2lkdGgKKyAqICAgICA0ICAgICAgIENBUkQzMiBI
ZWlnaHQKKyAqLworCisjZGVmaW5lIE5WX0NUUkxfQklOQVJZX0RBVEFfRElTUExBWV9WSUVXUE9S
VCA2IC8qIFItREcgKi8KKworLyoKKyAqIE5WX0NUUkxfQklOQVJZX0RBVEFfRlJBTUVMT0NLU19V
U0VEX0JZX0dQVSAtIFJldHVybnMgdGhlIGxpc3Qgb2YKKyAqIEZyYW1lbG9jayBkZXZpY2VzIGN1
cnJlbnRseSBjb25uZWN0ZWQgdG8gdGhlIGdpdmVuIEdQVS4KKyAqCisgKiBUaGUgZm9ybWF0IG9m
IHRoZSByZXR1cm5lZCBkYXRhIGlzOgorICoKKyAqICAgICA0ICAgICAgIENBUkQzMiBudW1iZXIg
b2YgRnJhbWVsb2NrcworICogICAgIDQgKiBuICAgQ0FSRDMyIEZyYW1lbG9jayBpbmRpY2VzCisg
KgorICogVGhpcyBhdHRyaWJ1dGUgY2FuIG9ubHkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxR
dWVyeVRhcmdldEJpbmFyeURhdGEoKQorICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0dQ
VSB0YXJnZXQuICBUaGlzIGF0dHJpYnV0ZSBjYW5ub3QgYmUKKyAqIHF1ZXJpZWQgdXNpbmcgYSBO
Vl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9CSU5B
UllfREFUQV9GUkFNRUxPQ0tTX1VTRURfQllfR1BVIDcgLyogUi1ERyAqLworCisvKgorICogTlZf
Q1RSTF9CSU5BUllfREFUQV9HUFVTX1VTSU5HX1ZDU0MgLSBSZXR1cm5zIHRoZSBsaXN0IG9mCisg
KiBHUFUgZGV2aWNlcyBjb25uZWN0ZWQgdG8gdGhlIGdpdmVuIFZDUy4KKyAqCisgKiBUaGUgZm9y
bWF0IG9mIHRoZSByZXR1cm5lZCBkYXRhIGlzOgorICoKKyAqICAgICA0ICAgICAgIENBUkQzMiBu
dW1iZXIgb2YgR1BVcworICogICAgIDQgKiBuICAgQ0FSRDMyIEdQVSBpbmRpY2VzCisgKgorICog
VGhpcyBhdHRyaWJ1dGUgY2FuIG9ubHkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRh
cmdldEJpbmFyeURhdGEoKQorICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX1ZDU0MgdGFy
Z2V0LiAgVGhpcyBhdHRyaWJ1dGUgY2Fubm90IGJlCisgKiBxdWVyaWVkIHVzaW5nIGEgTlZfQ1RS
TF9UQVJHRVRfVFlQRV9YX1NDUkVFTiBhbmQgY2Fubm90IGJlIHF1ZXJpZWQgdXNpbmcKKyAqIGEg
IE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9HUFUKKyAqLworCisjZGVmaW5lIE5WX0NUUkxfQklOQVJZ
X0RBVEFfR1BVU19VU0lOR19WQ1NDIDggLyogUi1EViAqLworCisvKgorICogTlZfQ1RSTF9CSU5B
UllfREFUQV9WQ1NDU19VU0VEX0JZX0dQVSAtIFJldHVybnMgdGhlIFZDU0MgZGV2aWNlCisgKiB0
aGF0IGlzIGNvbnRyb2xsaW5nIHRoZSBnaXZlbiBHUFUuCisgKgorICogVGhlIGZvcm1hdCBvZiB0
aGUgcmV0dXJuZWQgZGF0YSBpczoKKyAqCisgKiAgICAgNCAgICAgICBDQVJEMzIgbnVtYmVyIG9m
IFZDUyAoYWx3YXlzIDEpCisgKiAgICAgNCAqIG4gICBDQVJEMzIgVkNTIGluZGljZXMKKyAqCisg
KiBUaGlzIGF0dHJpYnV0ZSBjYW4gb25seSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5
VGFyZ2V0QmluYXJ5RGF0YSgpCisgKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfR1BVIHRh
cmdldC4gIFRoaXMgYXR0cmlidXRlIGNhbm5vdCBiZQorICogcXVlcmllZCB1c2luZyBhIE5WX0NU
UkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfQklOQVJZX0RB
VEFfVkNTQ1NfVVNFRF9CWV9HUFUgOSAvKiBSLURHICovCisKKy8qCisgKiBOVl9DVFJMX0JJTkFS
WV9EQVRBX0NPT0xFUlNfVVNFRF9CWV9HUFUgLSBSZXR1cm5zIHRoZSBjb29sZXJzIHRoYXQKKyAq
IGFyZSBjb29saW5nIHRoZSBnaXZlbiBHUFUuCisgKgorICogVGhlIGZvcm1hdCBvZiB0aGUgcmV0
dXJuZWQgZGF0YSBpczoKKyAqCisgKiAgICAgNCAgICAgICBDQVJEMzIgbnVtYmVyIG9mIENPT0xF
UgorICogICAgIDQgKiBuICAgQ0FSRDMyIENPT0xFUiBpbmRpY2VzCisgKgorICogVGhpcyBhdHRy
aWJ1dGUgY2FuIG9ubHkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEJpbmFy
eURhdGEoKQorICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0dQVSB0YXJnZXQuICBUaGlz
IGF0dHJpYnV0ZSBjYW5ub3QgYmUKKyAqIHF1ZXJpZWQgdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9U
WVBFX1hfU0NSRUVOCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0JJTkFSWV9EQVRBX0NPT0xFUlNf
VVNFRF9CWV9HUFUgMTAgLyogUi1ERyAqLworCisvKgorICogTlZfQ1RSTF9CSU5BUllfREFUQV9H
UFVTX1VTRURfQllfTE9HSUNBTF9YU0NSRUVOIC0gUmV0dXJucyB0aGUgbGlzdCBvZgorICogR1BV
cyBjdXJyZW50bHkgZHJpdmluZyB0aGUgZ2l2ZW4gWCBzY3JlZW4uICBJZiBYaW5lcmFtYSBpcyBl
bmFibGVkLCB0aGlzCisgKiB3aWxsIHJldHVybiBhbGwgR1BVcyB0aGF0IGFyZSBkcml2aW5nIGFu
eSBYIHNjcmVlbi4KKyAqCisgKiBUaGUgZm9ybWF0IG9mIHRoZSByZXR1cm5lZCBkYXRhIGlzOgor
ICoKKyAqICAgICA0ICAgICAgIENBUkQzMiBudW1iZXIgb2YgR1BVcworICogICAgIDQgKiBuICAg
Q0FSRDMyIEdQVSBpbmRpY2VzCisgKi8KKworI2RlZmluZSBOVl9DVFJMX0JJTkFSWV9EQVRBX0dQ
VVNfVVNFRF9CWV9MT0dJQ0FMX1hTQ1JFRU4gMTEgLyogUi0tLSAqLworCisvKgorICogTlZfQ1RS
TF9CSU5BUllfREFUQV9USEVSTUFMX1NFTlNPUlNfVVNFRF9CWV9HUFUgLSBSZXR1cm5zIHRoZSBz
ZW5zb3JzIHRoYXQKKyAqIGFyZSBhdHRhY2hlZCB0byB0aGUgZ2l2ZW4gR1BVLgorICoKKyAqIFRo
ZSBmb3JtYXQgb2YgdGhlIHJldHVybmVkIGRhdGEgaXM6CisgKgorICogICAgIDQgICAgICAgQ0FS
RDMyIG51bWJlciBvZiBTRU5TT1IKKyAqICAgICA0ICogbiAgIENBUkQzMiBTRU5TT1IgaW5kaWNl
cworICoKKyAqIFRoaXMgYXR0cmlidXRlIGNhbiBvbmx5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZD
VFJMUXVlcnlUYXJnZXRCaW5hcnlEYXRhKCkKKyAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQ
RV9HUFUgdGFyZ2V0LiAgVGhpcyBhdHRyaWJ1dGUgY2Fubm90IGJlCisgKiBxdWVyaWVkIHVzaW5n
IGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9C
SU5BUllfREFUQV9USEVSTUFMX1NFTlNPUlNfVVNFRF9CWV9HUFUgMTIgLyogUi0tRyAqLworCisv
KgorICogTlZfQ1RSTF9CSU5BUllfREFUQV9HTEFTU0VTX1BBSVJFRF9UT18zRF9WSVNJT05fUFJP
X1RSQU5TQ0VJVkVSIC0gUmV0dXJucworICogdGhlIGlkIG9mIHRoZSBnbGFzc2VzIHRoYXQgYXJl
IGN1cnJlbnRseSBwYWlyZWQgdG8gdGhlIGdpdmVuCisgKiAzRCBWaXNpb24gUHJvIHRyYW5zY2Vp
dmVyLgorICoKKyAqIFRoZSBmb3JtYXQgb2YgdGhlIHJldHVybmVkIGRhdGEgaXM6CisgKgorICog
ICAgIDQgICAgICAgQ0FSRDMyIG51bWJlciBvZiBnbGFzc2VzCisgKiAgICAgNCAqIG4gICBDQVJE
MzIgaWQgb2YgZ2xhc3NlcworICoKKyAqIFRoaXMgYXR0cmlidXRlIGNhbiBvbmx5IGJlIHF1ZXJp
ZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRCaW5hcnlEYXRhKCkKKyAqIHVzaW5nIGEgTlZf
Q1RSTF9UQVJHRVRfVFlQRV8zRF9WSVNJT05fUFJPX1RSQU5TQ0VJVkVSIHRhcmdldC4KKyAqLwor
I2RlZmluZSBOVl9DVFJMX0JJTkFSWV9EQVRBX0dMQVNTRVNfUEFJUkVEX1RPXzNEX1ZJU0lPTl9Q
Uk9fVFJBTlNDRUlWRVIgMTMgLyogUi0tVCAqLworCisvKgorICogTlZfQ1RSTF9CSU5BUllfREFU
QV9ESVNQTEFZX1RBUkdFVFMgLSBSZXR1cm5zIGFsbCB0aGUgZGlzcGxheSBkZXZpY2VzCisgKiBj
dXJyZW50bHkgY29ubmVjdGVkIHRvIGFueSBHUFUgb24gdGhlIFggc2VydmVyLgorICoKKyAqIFRo
ZSBmb3JtYXQgb2YgdGhlIHJldHVybmVkIGRhdGEgaXM6CisgKgorICogICAgIDQgICAgICAgQ0FS
RDMyIG51bWJlciBvZiBkaXNwbGF5IGRldmljZXMKKyAqICAgICA0ICogbiAgIENBUkQzMiBkaXNw
bGF5IGRldmljZSBpbmRpY2VzCisgKgorICogVGhpcyBhdHRyaWJ1dGUgY2FuIG9ubHkgYmUgcXVl
cmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEJpbmFyeURhdGEoKS4KKyAqLworCisjZGVm
aW5lIE5WX0NUUkxfQklOQVJZX0RBVEFfRElTUExBWV9UQVJHRVRTIDE0IC8qIFItLS0gKi8KKwor
LyoKKyAqIE5WX0NUUkxfQklOQVJZX0RBVEFfRElTUExBWVNfQ09OTkVDVEVEX1RPX0dQVSAtIFJl
dHVybnMgdGhlIGxpc3Qgb2YKKyAqIGRpc3BsYXkgZGV2aWNlcyB0aGF0IGFyZSBjb25uZWN0ZWQg
dG8gdGhlIEdQVSB0YXJnZXQuCisgKgorICogVGhlIGZvcm1hdCBvZiB0aGUgcmV0dXJuZWQgZGF0
YSBpczoKKyAqCisgKiAgICAgNCAgICAgICBDQVJEMzIgbnVtYmVyIG9mIGRpc3BsYXkgZGV2aWNl
cworICogICAgIDQgKiBuICAgQ0FSRDMyIGRpc3BsYXkgZGV2aWNlIGluZGljZXMKKyAqCisgKiBU
aGlzIGF0dHJpYnV0ZSBjYW4gb25seSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFy
Z2V0QmluYXJ5RGF0YSgpCisgKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfR1BVIHRhcmdl
dC4KKyAqLworCisjZGVmaW5lIE5WX0NUUkxfQklOQVJZX0RBVEFfRElTUExBWVNfQ09OTkVDVEVE
X1RPX0dQVSAxNSAvKiBSLS1HICovCisKKy8qCisgKiBOVl9DVFJMX0JJTkFSWV9EQVRBX01FVEFN
T0RFU19WRVJTSU9OXzIgIC0gUmV0dXJucyB2YWx1ZXMgc2ltaWxhciB0bworICogTlZfQ1RSTF9C
SU5BUllfREFUQV9NRVRBTU9ERVMoX1ZFUlNJT05fMSkgYnV0IGFsc28gcmV0dXJucyBleHRlbmRl
ZCBzeW50YXgKKyAqIGluZm9ybWF0aW9uIHRvIGluZGljYXRlIGEgc3BlY2lmaWMgZGlzcGxheSBk
ZXZpY2UsIGFzIHdlbGwgYXMgb3RoZXIgcGVyLQorICogZGlzcGxheSBkZXZpY2VmbGFncyBhcyAi
dG9rZW49dmFsdWUiIHBhaXJzLiAgRm9yIGV4YW1wbGU6CisgKgorICogICAiRFBZLTE6IDEyODB4
MTAyNCB7U3RlcmVvPVBhc3NpdmVMZWZ0fSwKKyAqICAgIERQWS0yOiAxMjgweDEwMjQge1N0ZXJl
bz1QYXNzaXZlUmlnaHR9LCIKKyAqCisgKiBUaGUgZGlzcGxheSBkZXZpY2UgbmFtZXMgaGF2ZSB0
aGUgZm9ybSAiRFBZLSVkIiwgd2hlcmUgdGhlIGludGVnZXIKKyAqIHBhcnQgb2YgdGhlIG5hbWUg
aXMgdGhlIE5WLUNPTlRST0wgdGFyZ2V0IElEIGZvciB0aGF0IGRpc3BsYXkgZGV2aWNlCisgKiBm
b3IgdGhpcyBpbnN0YW5jZSBvZiB0aGUgWCBzZXJ2ZXIuICBOb3RlIHRoYXQgZGlzcGxheSBkZXZp
Y2UgTlYtQ09OVFJPTAorICogdGFyZ2V0IElEcyBhcmUgbm90IGd1YXJhbnRlZWQgdG8gYmUgdGhl
IHNhbWUgZnJvbSBvbmUgcnVuIG9mIHRoZSBYCisgKiBzZXJ2ZXIgdG8gdGhlIG5leHQuCisgKi8K
KworI2RlZmluZSBOVl9DVFJMX0JJTkFSWV9EQVRBX01FVEFNT0RFU19WRVJTSU9OXzIgMTYgLyog
Ui1ELSAqLworCisvKgorICogTlZfQ1RSTF9CSU5BUllfREFUQV9ESVNQTEFZU19FTkFCTEVEX09O
X1hTQ1JFRU4gLSBSZXR1cm5zIHRoZSBsaXN0IG9mCisgKiBkaXNwbGF5IGRldmljZXMgdGhhdCBh
cmUgY3VycmVudGx5IHNjYW5uaW5nIG91dCB0aGUgWCBzY3JlZW4gdGFyZ2V0LgorICoKKyAqIFRo
ZSBmb3JtYXQgb2YgdGhlIHJldHVybmVkIGRhdGEgaXM6CisgKgorICogICAgIDQgICAgICAgQ0FS
RDMyIG51bWJlciBvZiBkaXNwbGF5IGRldmljZXMKKyAqICAgICA0ICogbiAgIENBUkQzMiBkaXNw
bGF5IGRldmljZSBpbmRpY2VzCisgKgorICogVGhpcyBhdHRyaWJ1dGUgY2FuIG9ubHkgYmUgcXVl
cmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEJpbmFyeURhdGEoKQorICogdXNpbmcgYSBO
Vl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOIHRhcmdldC4KKyAqLworCisjZGVmaW5lIE5WX0NU
UkxfQklOQVJZX0RBVEFfRElTUExBWVNfRU5BQkxFRF9PTl9YU0NSRUVOIDE3IC8qIFItLS0gKi8K
KworI2RlZmluZSBOVl9DVFJMX0JJTkFSWV9EQVRBX0xBU1RfQVRUUklCVVRFIE5WX0NUUkxfQklO
QVJZX0RBVEFfRElTUExBWVNfRU5BQkxFRF9PTl9YU0NSRUVOCisKKy8qKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Ki8KKworLyoKKyAqIFN0cmluZyBPcGVyYXRpb24gQXR0cmlidXRlczoKKyAqCisgKiBUaGVzZSBh
dHRyaWJ1dGVzIGFyZSB1c2VkIHdpdGggdGhlIFhOVkNUUkxTdHJpbmdPcGVyYXRpb24oKQorICog
ZnVuY3Rpb247IGEgc3RyaW5nIGlzIHNwZWNpZmllZCBhcyBpbnB1dCwgYW5kIGEgc3RyaW5nIGlz
IHJldHVybmVkCisgKiBhcyBvdXRwdXQuCisgKgorICogVW5sZXNzIG90aGVyd2lzZSBub3RlZCwg
YWxsIGF0dHJpYnV0ZXMgY2FuIGJlIG9wZXJhdGVkIHVwb24gdXNpbmcKKyAqIGFuIE5WX0NUUkxf
VEFSR0VUX1RZUEVfWF9TQ1JFRU4gdGFyZ2V0LgorICovCisKKy8qCisgKiBOVl9DVFJMX1NUUklO
R19PUEVSQVRJT05fQUREX01FVEFNT0RFIC0gcHJvdmlkZSBhIE1ldGFNb2RlIHN0cmluZworICog
YXMgaW5wdXQsIGFuZCByZXR1cm5zIGEgc3RyaW5nIGNvbnRhaW5pbmcgY29tbWEtc2VwYXJhdGVk
IGxpc3Qgb2YKKyAqICJ0b2tlbj12YWx1ZSIgcGFpcnMgYXMgb3V0cHV0LiAgQ3VycmVudGx5LCB0
aGUgb25seSBvdXRwdXQgdG9rZW4gaXMKKyAqICJpZCIsIHdoaWNoIGluZGljYXRlcyB0aGUgaWQg
dGhhdCB3YXMgYXNzaWduZWQgdG8gdGhlIE1ldGFNb2RlLgorICoKKyAqIEFsbCBNb2RlTGluZXMg
cmVmZXJlbmNlZCBpbiB0aGUgTWV0YU1vZGUgbXVzdCBhbHJlYWR5IGV4aXN0IGZvcgorICogZWFj
aCBkaXNwbGF5IGRldmljZSAoYXMgcmV0dXJuZWQgYnkgdGhlCisgKiBOVl9DVFJMX0JJTkFSWV9E
QVRBX01PREVMSU5FUyBhdHRyaWJ1dGUpLgorICoKKyAqIFRoZSBNZXRhTW9kZSBzdHJpbmcgc2hv
dWxkIGhhdmUgdGhlIHNhbWUgc3ludGF4IGFzIHRoZSBNZXRhTW9kZSBYCisgKiBjb25maWd1cmF0
aW9uIG9wdGlvbiwgYXMgZG9jdW1lbnRlZCBpbiB0aGUgTlZJRElBIGRyaXZlciBSRUFETUUuCisg
KgorICogVGhlIGlucHV0IHN0cmluZyBjYW4gb3B0aW9uYWxseSBiZSBwcmVwZW5kZWQgd2l0aCBh
IHN0cmluZyBvZgorICogY29tbWEtc2VwYXJhdGVkICJ0b2tlbj12YWx1ZSIgcGFpcnMsIHNlcGFy
YXRlZCBmcm9tIHRoZSBNZXRhTW9kZQorICogc3RyaW5nIGJ5ICI6OiIuICBDdXJyZW50bHksIHRo
ZSBvbmx5IHZhbGlkIHRva2VuIGlzICJpbmRleCIgd2hpY2gKKyAqIGluZGljYXRlcyB0aGUgaW5z
ZXJ0aW9uIGluZGV4IGZvciB0aGUgTWV0YU1vZGUuCisgKgorICogRS5nLiwKKyAqCisgKiBJbnB1
dDogImluZGV4PTUgOjogMTYwMHgxMjAwKzArMCwgMTYwMHgxMjAwKzE2MDArMCIKKyAqIE91dHB1
dDogImlkPTU4IgorICoKKyAqIHdoaWNoIGNhdXNlcyB0aGUgTWV0YU1vZGUgdG8gYmUgaW5zZXJ0
ZWQgYXQgcG9zaXRpb24gNSBpbiB0aGUKKyAqIE1ldGFNb2RlIGxpc3QgKGFsbCBlbnRyaWVzIGFm
dGVyIDUgd2lsbCBiZSBzaGlmdGVkIGRvd24gb25lIHNsb3QgaW4KKyAqIHRoZSBsaXN0KSwgYW5k
IHRoZSBYIHNlcnZlcidzIGNvbnRhaW5pbmcgbW9kZSBzdG9yZXMgNTggYXMgdGhlCisgKiBWUmVm
cmVzaCwgc28gdGhhdCB0aGUgTWV0YU1vZGUgY2FuIGJlIHVuaXF1ZWx5IGlkZW50aWZlZCB0aHJv
dWdoCisgKiBYUmFuZFIgYW5kIFhGODZWaWRNb2RlLgorICovCisKKyNkZWZpbmUgTlZfQ1RSTF9T
VFJJTkdfT1BFUkFUSU9OX0FERF9NRVRBTU9ERSAwCisKKy8qCisgKiBOVl9DVFJMX1NUUklOR19P
UEVSQVRJT05fR1RGX01PREVMSU5FIC0gcHJvdmlkZSBhcyBpbnB1dCBhIHN0cmluZworICogb2Yg
Y29tbWEtc2VwYXJhdGVkICJ0b2tlbj12YWx1ZSIgcGFpcnMsIGFuZCByZXR1cm5zIGEgTW9kZUxp
bmUKKyAqIHN0cmluZywgY29tcHV0ZWQgdXNpbmcgdGhlIEdURiBmb3JtdWxhIHVzaW5nIHRoZSBw
YXJhbWV0ZXJzIGZyb20KKyAqIHRoZSBpbnB1dCBzdHJpbmcuICBWYWxpZCB0b2tlbnMgZm9yIHRo
ZSBpbnB1dCBzdHJpbmcgYXJlICJ3aWR0aCIsCisgKiAiaGVpZ2h0IiwgYW5kICJyZWZyZXNocmF0
ZSIuCisgKgorICogRS5nLiwKKyAqCisgKiBJbnB1dDogIndpZHRoPTE2MDAsIGhlaWdodD0xMjAw
LCByZWZyZXNocmF0ZT02MCIKKyAqIE91dHB1dDogIjE2MC45NiAgMTYwMCAxNzA0IDE4ODAgMjE2
MCAgMTIwMCAxMjAxIDEyMDQgMTI0MiAgLUhTeW5jICtWU3luYyIKKyAqCisgKiBUaGlzIG9wZXJh
dGlvbiBkb2VzIG5vdCBoYXZlIGFueSBpbXBhY3Qgb24gYW55IGRpc3BsYXkgZGV2aWNlJ3MKKyAq
IG1vZGVQb29sLCBhbmQgdGhlIE1vZGVMaW5lIGlzIG5vdCB2YWxpZGF0ZWQ7IGl0IGlzIHNpbXBs
eSBpbnRlbmRlZAorICogZm9yIGdlbmVyYXRpbmcgTW9kZUxpbmVzLgorICovCisKKyNkZWZpbmUg
TlZfQ1RSTF9TVFJJTkdfT1BFUkFUSU9OX0dURl9NT0RFTElORSAxCisKKy8qCisgKiBOVl9DVFJM
X1NUUklOR19PUEVSQVRJT05fQ1ZUX01PREVMSU5FIC0gcHJvdmlkZSBhcyBpbnB1dCBhIHN0cmlu
ZworICogb2YgY29tbWEtc2VwYXJhdGVkICJ0b2tlbj12YWx1ZSIgcGFpcnMsIGFuZCByZXR1cm5z
IGEgTW9kZUxpbmUKKyAqIHN0cmluZywgY29tcHV0ZWQgdXNpbmcgdGhlIENWVCBmb3JtdWxhIHVz
aW5nIHRoZSBwYXJhbWV0ZXJzIGZyb20KKyAqIHRoZSBpbnB1dCBzdHJpbmcuICBWYWxpZCB0b2tl
bnMgZm9yIHRoZSBpbnB1dCBzdHJpbmcgYXJlICJ3aWR0aCIsCisgKiAiaGVpZ2h0IiwgInJlZnJl
c2hyYXRlIiwgYW5kICJyZWR1Y2VkLWJsYW5raW5nIi4gIFRoZQorICogInJlZHVjZWQtYmxhbmtp
bmciIGFyZ3VtZW50IGNhbiBiZSAiMCIgb3IgIjEiLCB0byBlbmFibGUgb3IgZGlzYWJsZQorICog
dXNlIG9mIHJlZHVjZWQgYmxhbmtpbmcgZm9yIHRoZSBDVlQgZm9ybXVsYS4KKyAqCisgKiBFLmcu
LAorICoKKyAqIElucHV0OiAid2lkdGg9MTYwMCwgaGVpZ2h0PTEyMDAsIHJlZnJlc2hyYXRlPTYw
LCByZWR1Y2VkLWJsYW5raW5nPTEiCisgKiBPdXRwdXQ6ICIxMzAuMjUgIDE2MDAgMTY0OCAxNjgw
IDE3NjAgIDEyMDAgMTIwMyAxMjA3IDEyMzUgICtIU3luYyAtVlN5bmMiCisgKgorICogVGhpcyBv
cGVyYXRpb24gZG9lcyBub3QgaGF2ZSBhbnkgaW1wYWN0IG9uIGFueSBkaXNwbGF5IGRldmljZSdz
CisgKiBtb2RlUG9vbCwgYW5kIHRoZSBNb2RlTGluZSBpcyBub3QgdmFsaWRhdGVkOyBpdCBpcyBz
aW1wbHkgaW50ZW5kZWQKKyAqIGZvciBnZW5lcmF0aW5nIE1vZGVMaW5lcy4KKyAqLworCisjZGVm
aW5lIE5WX0NUUkxfU1RSSU5HX09QRVJBVElPTl9DVlRfTU9ERUxJTkUgMgorCisvKgorICogTlZf
Q1RSTF9TVFJJTkdfT1BFUkFUSU9OX0JVSUxEX01PREVQT09MIC0gYnVpbGQgYSBNb2RlUG9vbCBm
b3IgdGhlCisgKiBzcGVjaWZpZWQgZGlzcGxheSBkZXZpY2Ugb24gdGhlIHNwZWNpZmllZCB0YXJn
ZXQgKGVpdGhlciBhbiBYCisgKiBzY3JlZW4gb3IgYSBHUFUpLiAgVGhpcyBpcyB0eXBpY2FsbHkg
dXNlZCB0byBnZW5lcmF0ZSBhIE1vZGVQb29sCisgKiBmb3IgYSBkaXNwbGF5IGRldmljZSBvbiBh
IEdQVSBvbiB3aGljaCBubyBYIHNjcmVlbnMgYXJlIHByZXNlbnQuCisgKgorICogQ3VycmVudGx5
LCBhIGRpc3BsYXkgZGV2aWNlJ3MgTW9kZVBvb2wgaXMgc3RhdGljIGZvciB0aGUgbGlmZSBvZgor
ICogdGhlIFggc2VydmVyLCBzbyBYTlZDVFJMU3RyaW5nT3BlcmF0aW9uIHdpbGwgcmV0dXJuIEZB
TFNFIGlmCisgKiByZXF1ZXN0ZWQgdG8gYnVpbGQgYSBNb2RlUG9vbCBvbiBhIGRpc3BsYXkgZGV2
aWNlIHRoYXQgYWxyZWFkeSBoYXMKKyAqIGEgTW9kZVBvb2wuCisgKgorICogVGhlIHN0cmluZyBp
bnB1dCB0byBCVUlMRF9NT0RFUE9PTCBtYXkgYmUgTlVMTC4gIElmIGl0IGlzIG5vdCBOVUxMLAor
ICogdGhlbiBpdCBpcyBpbnRlcnByZXRlZCBhcyBhIGRvdWJsZS1jb2xvbiAoIjo6Iikgc2VwYXJh
dGVkIGxpc3QKKyAqIG9mICJvcHRpb249dmFsdWUiIHBhaXJzLCB3aGVyZSB0aGUgb3B0aW9ucyBh
bmQgdGhlIHN5bnRheCBvZiB0aGVpcgorICogdmFsdWVzIGFyZSB0aGUgWCBjb25maWd1cmF0aW9u
IG9wdGlvbnMgdGhhdCBpbXBhY3QgdGhlIGJlaGF2aW9yIG9mCisgKiBtb2RlUG9vbCBjb25zdHJ1
Y3Rpb247IG5hbWVseToKKyAqCisgKiAgICAiTW9kZVZhbGlkYXRpb24iCisgKiAgICAiSG9yaXpT
eW5jIgorICogICAgIlZlcnRSZWZyZXNoIgorICogICAgIkZsYXRQYW5lbFByb3BlcnRpZXMiCisg
KiAgICAiVFZTdGFuZGFyZCIKKyAqICAgICJFeGFjdE1vZGVUaW1pbmdzRFZJIgorICogICAgIlVz
ZUVkaWRGcmVxcyIKKyAqCisgKiBBbiBleGFtcGxlIGlucHV0IHN0cmluZyBtaWdodCBsb29rIGxp
a2U6CisgKgorICogICAiTW9kZVZhbGlkYXRpb249Tm9WZXNhTW9kZXMgOjogSG9yaXpTeW5jPTUw
LTExMCA6OiBWZXJ0UmVmcmVzaD01MC0xNTAiCisgKgorICogVGhpcyByZXF1ZXN0IGN1cnJlbnRs
eSBkb2VzIG5vdCByZXR1cm4gYSBzdHJpbmcuCisgKi8KKworI2RlZmluZSBOVl9DVFJMX1NUUklO
R19PUEVSQVRJT05fQlVJTERfTU9ERVBPT0wgMyAvKiBERyAqLworCisvKgorICogTlZfQ1RSTF9T
VFJJTkdfT1BFUkFUSU9OX0dWSV9DT05GSUdVUkVfU1RSRUFNUyAtIENvbmZpZ3VyZSB0aGUgc3Ry
ZWFtcy0KKyAqIHRvLWphY2srY2hhbm5lbCB0b3BvbG9neSBmb3IgYSBHVkkgKEdyYXBoaWNzIGNh
cHR1cmUgYm9hcmQpLgorICoKKyAqIFRoZSBzdHJpbmcgaW5wdXQgdG8gR1ZJX0NPTkZJR1VSRV9T
VFJFQU1TIG1heSBiZSBOVUxMLiAgSWYgdGhpcyBpcyB0aGUKKyAqIGNhc2UsIHRoZW4gdGhlIGN1
cnJlbnQgdG9wb2xvZ3kgaXMgcmV0dXJuZWQuCisgKgorICogSWYgdGhlIGlucHV0IHN0cmluZyB0
byBHVklfQ09ORklHVVJFX1NUUkVBTVMgaXMgbm90IE5VTEwsIHRoZSBzdHJpbmcKKyAqIGlzIGlu
dGVycHJldGVkIGFzIGEgc2VtaWNvbG9uICgiOyIpIHNlcGFyYXRlZCBsaXN0IG9mIGNvbW1hLXNl
cGFyYXRlZAorICogbGlzdHMgb2YgIm9wdGlvbj12YWx1ZSIgcGFpcnMgdGhhdCBkZWZpbmUgYSBz
dHJlYW0ncyBjb21wb3NpdGlvbi4gIFRoZQorICogYXZhaWxhYmxlIG9wdGlvbnMgYW5kIHRoZWly
IHZhbHVlcyBhcmU6CisgKgorICogICAic3RyZWFtIjogRGVmaW5lcyB3aGljaCBzdHJlYW0gdGhp
cyBjb21tYS1zZXBhcmF0ZWQgbGlzdCBkZXNjcmliZXMuCisgKiAgICAgICAgICAgICBWYWxpZCB2
YWx1ZXMgYXJlIHRoZSBpbnRlZ2VycyBiZXR3ZWVuIDAgYW5kCisgKiAgICAgICAgICAgICBOVl9D
VFJMX0dWSV9OVU1fU1RSRUFNUy0xIChpbmNsdXNpdmUpLgorICoKKyAqICAgImxpbmtOIjogIERl
ZmluZXMgYSBqYWNrK2NoYW5uZWwgcGFpciB0byB1c2UgZm9yIHRoZSBnaXZlbiBsaW5rIE4uCisg
KiAgICAgICAgICAgICBWYWxpZCBvcHRpb25zIGFyZSB0aGUgc3RyaW5nICJsaW5rTiIsIHdoZXJl
IE4gaXMgYW4gaW50ZWdlcgorICogICAgICAgICAgICAgYmV0d2VlbiAwIGFuZCBOVl9DVFJMX0dW
SV9NQVhfTElOS1NfUEVSX1NUUkVBTS0xIChpbmNsdXNpdmUpLgorICogICAgICAgICAgICAgVmFs
aWQgdmFsdWVzIGZvciB0aGVzZSBvcHRpb25zIGFyZSBzdHJpbmdzIG9mIHRoZSBmb3JtCisgKiAg
ICAgICAgICAgICAiamFja1giIGFuZC9vciAiamFja1guWSIsIHdoZXJlIFggaXMgYW4gaW50ZWdl
ciBiZXR3ZWVuIDAgYW5kCisgKiAgICAgICAgICAgICBOVl9DVFJMX0dWSV9OVU1fSkFDS1MtMSAo
aW5jbHVzaXZlKSwgYW5kIFkgKG9wdGlvbmFsKSBpcyBhbgorICogICAgICAgICAgICAgaW50ZWdl
ciBiZXR3ZWVuIDAgYW5kIE5WX0NUUkxfR1ZJX01BWF9DSEFOTkVMU19QRVJfSkFDSy0xCisgKiAg
ICAgICAgICAgICAoaW5jbHVzaXZlKS4KKyAqCisgKiBBbiBleGFtcGxlIGlucHV0IHN0cmluZyBt
aWdodCBsb29rIGxpa2U6CisgKgorICogICAic3RyZWFtPTAsIGxpbmswPWphY2swLCBsaW5rMT1q
YWNrMTsgc3RyZWFtPTEsIGxpbmswPWphY2syLjEiCisgKgorICogICBUaGlzIGV4YW1wbGUgc3Bl
Y2lmaWVzIHR3byBzdHJlYW1zLCBzdHJlYW0gMCBhbmQgc3RyZWFtIDEuICBTdHJlYW0gMAorICog
ICBpcyBkZWZpbmVkIHRvIGNhcHR1cmUgbGluazAgZGF0YSBmcm9tIHRoZSBmaXJzdCBjaGFubmVs
IChjaGFubmVsIDApIG9mCisgKiAgIEJOQyBqYWNrIDAgYW5kIGxpbmsxIGRhdGEgZnJvbSB0aGUg
Zmlyc3QgY2hhbm5lbCBvZiBCTkMgamFjayAxLiAgVGhlCisgKiAgIHNlY29uZCBzdHJlYW0gKFN0
cmVhbSAxKSBpcyBkZWZpbmVkIHRvIGNhcHR1cmUgbGluazAgZGF0YSBmcm9tIGNoYW5uZWwgMQor
ICogICAoc2Vjb25kIGNoYW5uZWwpIG9mIEJOQyBqYWNrIDIuCisgKgorICogVGhpcyBleGFtcGxl
IHNob3dzIGEgcG9zc2libGUgY29uZmlndXJhdGlvbiBmb3IgY2FwdHVyaW5nIDNHIGlucHV0Ogor
ICoKKyAqICAgInN0cmVhbT0wLCBsaW5rMD1qYWNrMC4wLCBsaW5rMT1qYWNrMC4xIgorICoKKyAq
IEFwcGxpY2F0aW9ucyBzaG91bGQgcXVlcnkgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIHRvIGRl
dGVybWluZQorICogcG9zc2libGUgY29tYmluYXRpb25zOgorICoKKyAqICAgTlZfQ1RSTF9HVklf
TUFYX1NUUkVBTVMKKyAqICAgTlZfQ1RSTF9HVklfTUFYX0xJTktTX1BFUl9TVFJFQU0KKyAqICAg
TlZfQ1RSTF9HVklfTlVNX0pBQ0tTCisgKiAgIE5WX0NUUkxfR1ZJX01BWF9DSEFOTkVMU19QRVJf
SkFDSworICoKKyAqIE5vdGU6IEEgamFjaytjaGFubmVsIHBhaXIgY2FuIG9ubHkgYmUgdGllZCB0
byBvbmUgbGluay9zdHJlYW0uCisgKgorICogVXBvbiBzdWNjZXNzZnVsIGNvbmZpZ3VyYXRpb24g
b3IgcXVlcnlpbmcgb2YgdGhpcyBhdHRyaWJ1dGUsIGEgc3RyaW5nCisgKiByZXByZXNlbnRpbmcg
dGhlIGN1cnJlbnQgdG9wb2xvZ3kgZm9yIGFsbCBrbm93biBzdHJlYW1zIG9uIHRoZSBkZXZpY2UK
KyAqIHdpbGwgYmUgcmV0dXJuZWQuICBPbiBmYWlsdXJlLCBOVUxMIGlzIHJldHVybmVkLgorICoK
KyAqIE5vdGU6IFNldHRpbmcgdGhpcyBhdHRyaWJ1dGUgbWF5IGFsc28gcmVzdWx0IGluIHRoZSBm
b2xsb3dpbmcKKyAqICAgICAgIE5WLUNPTlRST0wgYXR0cmlidXRlcyBiZWluZyByZXNldCBvbiB0
aGUgR1ZJIGRldmljZSAodG8gZW5zdXJlCisgKiAgICAgICB0aGUgY29uZmlndXJhdGlvbiByZW1h
aW5zIHZhbGlkKToKKyAqICAgICAgICAgICBOVl9DVFJMX0dWSU9fUkVRVUVTVEVEX1ZJREVPX0ZP
Uk1BVAorICogICAgICAgICAgIE5WX0NUUkxfR1ZJX1JFUVVFU1RFRF9TVFJFQU1fQklUU19QRVJf
Q09NUE9ORU5UCisgKiAgICAgICAgICAgTlZfQ1RSTF9HVklfUkVRVUVTVEVEX1NUUkVBTV9DT01Q
T05FTlRfU0FNUExJTkcKKyAqLworCisjZGVmaW5lIE5WX0NUUkxfU1RSSU5HX09QRVJBVElPTl9H
VklfQ09ORklHVVJFX1NUUkVBTVMgNCAvKiBSVy1JICovCisKKyNkZWZpbmUgTlZfQ1RSTF9TVFJJ
TkdfT1BFUkFUSU9OX0xBU1RfQVRUUklCVVRFIE5WX0NUUkxfU1RSSU5HX09QRVJBVElPTl9HVklf
Q09ORklHVVJFX1NUUkVBTVMKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogQ1RSTEF0
dHJpYnV0ZVZhbGlkVmFsdWVzUmVjIC0KKyAqCisgKiBzdHJ1Y3R1cmUgYW5kIHJlbGF0ZWQgZGVm
aW5lcyB1c2VkIGJ5CisgKiBYTlZDVFJMUXVlcnlWYWxpZEF0dHJpYnV0ZVZhbHVlcygpIHRvIGRl
c2NyaWJlIHRoZSB2YWxpZCB2YWx1ZXMgb2YKKyAqIGEgcGFydGljdWxhciBhdHRyaWJ1dGUuICBU
aGUgdHlwZSBmaWVsZCB3aWxsIGJlIG9uZSBvZjoKKyAqCisgKiBBVFRSSUJVVEVfVFlQRV9JTlRF
R0VSIDogdGhlIGF0dHJpYnV0ZSBpcyBhbiBpbnRlZ2VyIHZhbHVlOyB0aGVyZQorICogaXMgbm8g
Zml4ZWQgcmFuZ2Ugb2YgdmFsaWQgdmFsdWVzLgorICoKKyAqIEFUVFJJQlVURV9UWVBFX0JJVE1B
U0sgOiB0aGUgYXR0cmlidXRlIGlzIGFuIGludGVnZXIgdmFsdWUsCisgKiBpbnRlcnByZXR0ZWQg
YXMgYSBiaXRtYXNrLgorICoKKyAqIEFUVFJJQlVURV9UWVBFX0JPT0wgOiB0aGUgYXR0cmlidXRl
IGlzIGEgYm9vbGVhbiwgdmFsaWQgdmFsdWVzIGFyZQorICogZWl0aGVyIDEgKG9uL3RydWUpIG9y
IDAgKG9mZi9mYWxzZSkuCisgKgorICogQVRUUklCVVRFX1RZUEVfUkFOR0UgOiB0aGUgYXR0cmli
dXRlIGNhbiBoYXZlIGFueSBpbnRlZ2VyIHZhbHVlCisgKiBiZXR3ZWVuIE5WQ1RSTEF0dHJpYnV0
ZVZhbGlkVmFsdWVzLnUucmFuZ2UubWluIGFuZAorICogTlZDVFJMQXR0cmlidXRlVmFsaWRWYWx1
ZXMudS5yYW5nZS5tYXggKGluY2x1c2l2ZSkuCisgKgorICogQVRUUklCVVRFX1RZUEVfSU5UX0JJ
VFMgOiB0aGUgYXR0cmlidXRlIGNhbiBvbmx5IGhhdmUgY2VydGFpbgorICogaW50ZWdlciB2YWx1
ZXMsIGluZGljYXRlZCBieSB3aGljaCBiaXRzIGluCisgKiBOVkNUUkxBdHRyaWJ1dGVWYWxpZFZh
bHVlcy51LmJpdHMuaW50cyBhcmUgb24gKGZvciBleGFtcGxlOiBpZiBiaXQKKyAqIDAgaXMgb24s
IHRoZW4gMCBpcyBhIHZhbGlkIHZhbHVlOyBpZiBiaXQgNSBpcyBvbiwgdGhlbiA1IGlzIGEgdmFs
aWQKKyAqIHZhbHVlLCBldGMpLiAgVGhpcyBpcyB1c2VmdWwgZm9yIGF0dHJpYnV0ZXMgbGlrZSBO
Vl9DVFJMX0ZTQUFfTU9ERSwKKyAqIHdoaWNoIGNhbiBvbmx5IGhhdmUgY2VydGFpbiB2YWx1ZXMs
IGRlcGVuZGluZyBvbiBHUFUuCisgKgorICogQVRUUklCVVRFX1RZUEVfNjRCSVRfSU5URUdFUiA6
IHRoZSBhdHRyaWJ1dGUgaXMgYSA2NCBiaXQgaW50ZWdlciB2YWx1ZTsKKyAqIHRoZXJlIGlzIG5v
IGZpeGVkIHJhbmdlIG9mIHZhbGlkIHZhbHVlcy4KKyAqCisgKiBBVFRSSUJVVEVfVFlQRV9TVFJJ
TkcgOiB0aGUgYXR0cmlidXRlIGlzIGEgc3RyaW5nIHZhbHVlOyB0aGVyZSBpcyBubyBmaXhlZAor
ICogcmFuZ2Ugb2YgdmFsaWQgdmFsdWVzLgorICoKKyAqIEFUVFJJQlVURV9UWVBFX0JJTkFSWV9E
QVRBIDogdGhlIGF0dHJpYnV0ZSBpcyBiaW5hcnkgZGF0YTsgdGhlcmUgaXMKKyAqIG5vIGZpeGVk
IHJhbmdlIG9mIHZhbGlkIHZhbHVlcy4KKyAqCisgKiBBVFRSSUJVVEVfVFlQRV9TVFJJTkdfT1BF
UkFUSU9OIDogdGhlIGF0dHJpYnV0ZSBpcyBhIHN0cmluZzsgdGhlcmUgaXMKKyAqIG5vIGZpeGVk
IHJhbmdlIG9mIHZhbGlkIHZhbHVlcy4KKyAqCisgKgorICogVGhlIHBlcm1pc3Npb25zIGZpZWxk
IG9mIE5WQ1RSTEF0dHJpYnV0ZVZhbGlkVmFsdWVzUmVjIGlzIGEgYml0bWFzaworICogdGhhdCBt
YXkgY29udGFpbjoKKyAqCisgKiBBVFRSSUJVVEVfVFlQRV9SRUFEICAgICAgLSBBdHRyaWJ1dGUg
bWF5IGJlIHJlYWQgKHF1ZXJpZWQuKQorICogQVRUUklCVVRFX1RZUEVfV1JJVEUgICAgIC0gQXR0
cmlidXRlIG1heSBiZSB3cml0dGVuIHRvIChzZXQuKQorICogQVRUUklCVVRFX1RZUEVfRElTUExB
WSAgIC0gQXR0cmlidXRlIGlzIHZhbGlkIGZvciBkaXNwbGF5IHRhcmdldCB0eXBlcworICogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHJlcXVpcmVzIGEgZGlzcGxheV9tYXNrIGlmIHF1ZXJp
ZWQgdmlhCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIEdQVSBvciBYIHNjcmVlbi4p
CisgKiBBVFRSSUJVVEVfVFlQRV9HUFUgICAgICAgLSBBdHRyaWJ1dGUgaXMgdmFsaWQgZm9yIEdQ
VSB0YXJnZXQgdHlwZXMuCisgKiBBVFRSSUJVVEVfVFlQRV9GUkFNRUxPQ0sgLSBBdHRyaWJ1dGUg
aXMgdmFsaWQgZm9yIEZyYW1lIExvY2sgdGFyZ2V0IHR5cGVzLgorICogQVRUUklCVVRFX1RZUEVf
WF9TQ1JFRU4gIC0gQXR0cmlidXRlIGlzIHZhbGlkIGZvciBYIFNjcmVlbiB0YXJnZXQgdHlwZXMu
CisgKiBBVFRSSUJVVEVfVFlQRV9YSU5FUkFNQSAgLSBBdHRyaWJ1dGUgd2lsbCBiZSBtYWRlIGNv
bnNpc3RlbnQgZm9yIGFsbAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgWCBTY3JlZW5z
IHdoZW4gdGhlIFhpbmVyYW1hIGV4dGVuc2lvbiBpcyBlbmFibGVkLgorICogQVRUUklCVVRFX1RZ
UEVfVkNTQyAgICAgIC0gQXR0cmlidXRlIGlzIHZhbGlkIGZvciBWaXN1YWwgQ29tcHV0aW5nIFN5
c3RlbQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IHR5cGVzLgorICogQVRU
UklCVVRFX1RZUEVfR1ZJICAgICAgIC0gQXR0cmlidXRlIGlzIHZhbGlkIGZvciBHcmFwaGljcyBW
aWRlbyBJbiB0YXJnZXQKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzLgorICog
QVRUUklCVVRFX1RZUEVfQ09PTEVSICAgIC0gQXR0cmlidXRlIGlzIHZhbGlkIGZvciBDb29sZXIg
dGFyZ2V0IHR5cGVzLgorICogQVRUUklCVVRFX1RZUEVfM0RfVklTSU9OX1BST19UUkFOU0NFSVZF
UiAtIEF0dHJpYnV0ZSBpcyB2YWxpZCBmb3IgM0QgVmlzaW9uCisgKiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvIFRyYW5zY2VpdmVyIHRhcmdldCB0eXBlcy4K
KyAqCisgKiBTZWUgJ0tleSB0byBJbnRlZ2VyIEF0dHJpYnV0ZSAiUGVybWlzc2lvbnMiJyBhdCB0
aGUgdG9wIG9mIHRoaXMKKyAqIGZpbGUgZm9yIGEgZGVzY3JpcHRpb24gb2Ygd2hhdCB0aGVzZSBw
ZXJtaXNzaW9uIGJpdHMgbWVhbi4KKyAqLworCisjZGVmaW5lIEFUVFJJQlVURV9UWVBFX1VOS05P
V04gMAorI2RlZmluZSBBVFRSSUJVVEVfVFlQRV9JTlRFR0VSIDEKKyNkZWZpbmUgQVRUUklCVVRF
X1RZUEVfQklUTUFTSyAyCisjZGVmaW5lIEFUVFJJQlVURV9UWVBFX0JPT0wgMworI2RlZmluZSBB
VFRSSUJVVEVfVFlQRV9SQU5HRSA0CisjZGVmaW5lIEFUVFJJQlVURV9UWVBFX0lOVF9CSVRTIDUK
KyNkZWZpbmUgQVRUUklCVVRFX1RZUEVfNjRCSVRfSU5URUdFUiA2CisjZGVmaW5lIEFUVFJJQlVU
RV9UWVBFX1NUUklORyA3CisjZGVmaW5lIEFUVFJJQlVURV9UWVBFX0JJTkFSWV9EQVRBIDgKKyNk
ZWZpbmUgQVRUUklCVVRFX1RZUEVfU1RSSU5HX09QRVJBVElPTiA5CisKKyNkZWZpbmUgQVRUUklC
VVRFX1RZUEVfUkVBRCAweDAwMQorI2RlZmluZSBBVFRSSUJVVEVfVFlQRV9XUklURSAweDAwMgor
I2RlZmluZSBBVFRSSUJVVEVfVFlQRV9ESVNQTEFZIDB4MDA0CisjZGVmaW5lIEFUVFJJQlVURV9U
WVBFX0dQVSAweDAwOAorI2RlZmluZSBBVFRSSUJVVEVfVFlQRV9GUkFNRUxPQ0sgMHgwMTAKKyNk
ZWZpbmUgQVRUUklCVVRFX1RZUEVfWF9TQ1JFRU4gMHgwMjAKKyNkZWZpbmUgQVRUUklCVVRFX1RZ
UEVfWElORVJBTUEgMHgwNDAKKyNkZWZpbmUgQVRUUklCVVRFX1RZUEVfVkNTQyAweDA4MAorI2Rl
ZmluZSBBVFRSSUJVVEVfVFlQRV9HVkkgMHgxMDAKKyNkZWZpbmUgQVRUUklCVVRFX1RZUEVfQ09P
TEVSIDB4MjAwCisjZGVmaW5lIEFUVFJJQlVURV9UWVBFX1RIRVJNQUxfU0VOU09SIDB4NDAwCisj
ZGVmaW5lIEFUVFJJQlVURV9UWVBFXzNEX1ZJU0lPTl9QUk9fVFJBTlNDRUlWRVIgMHg4MDAKKwor
I2RlZmluZSBBVFRSSUJVVEVfVFlQRV9BTExfVEFSR0VUUyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgoQVRUUklCVVRFX1RZUEVfRElTUExB
WSkgfCAoQVRUUklCVVRFX1RZUEVfR1BVKSB8IChBVFRSSUJVVEVfVFlQRV9GUkFNRUxPQ0spIHwg
XAorICAgICAoQVRUUklCVVRFX1RZUEVfWF9TQ1JFRU4pIHwgKEFUVFJJQlVURV9UWVBFX1ZDU0Mp
IHwgKEFUVFJJQlVURV9UWVBFX0dWSSkgfCAgICAgXAorICAgICAoQVRUUklCVVRFX1RZUEVfQ09P
TEVSKSB8IChBVFRSSUJVVEVfVFlQRV9USEVSTUFMX1NFTlNPUikgfCAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAoQVRUUklCVVRFX1RZUEVfM0RfVklTSU9OX1BST19UUkFOU0NFSVZFUikpCisK
K3R5cGVkZWYgc3RydWN0IF9OVkNUUkxBdHRyaWJ1dGVWYWxpZFZhbHVlcworeworICAgIGludCB0
eXBlOworICAgIHVuaW9uCisgICAgeworICAgICAgICBzdHJ1Y3QKKyAgICAgICAgeworICAgICAg
ICAgICAgaW50NjRfdCBtaW47CisgICAgICAgICAgICBpbnQ2NF90IG1heDsKKyAgICAgICAgfSBy
YW5nZTsKKyAgICAgICAgc3RydWN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCBpbnRzOworICAgICAgICB9IGJpdHM7CisgICAgfSB1OworICAgIHVuc2lnbmVkIGludCBwZXJt
aXNzaW9uczsKK30gTlZDVFJMQXR0cmlidXRlVmFsaWRWYWx1ZXNSZWM7CisKK3R5cGVkZWYgc3Ry
dWN0IF9OVkNUUkxBdHRyaWJ1dGVQZXJtaXNzaW9ucworeworICAgIGludCB0eXBlOworICAgIHVu
c2lnbmVkIGludCBwZXJtaXNzaW9uczsKK30gTlZDVFJMQXR0cmlidXRlUGVybWlzc2lvbnNSZWM7
CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIE5WLUNPTlRST0wgWCBldmVudCBub3Rp
ZmljYXRpb24uCisgKgorICogVG8gcmVjZWl2ZSBYIGV2ZW50IG5vdGlmaWNhdGlvbnMgZGVhbGlu
ZyB3aXRoIE5WLUNPTlRST0wsIHlvdSBzaG91bGQKKyAqIGNhbGwgWE5WQ3RybFNlbGVjdE5vdGlm
eSgpIHdpdGggb25lIG9mIHRoZSBmb2xsb3dpbmcgc2V0IGFzIHRoZSB0eXBlCisgKiBvZiBldmVu
dCB0byByZWNlaXZlIChzZWUgTlZDdHJsTGliLmggZm9yIG1vcmUgaW5mb3JtYXRpb24pOgorICov
CisKKyNkZWZpbmUgQVRUUklCVVRFX0NIQU5HRURfRVZFTlQgMAorI2RlZmluZSBUQVJHRVRfQVRU
UklCVVRFX0NIQU5HRURfRVZFTlQgMQorI2RlZmluZSBUQVJHRVRfQVRUUklCVVRFX0FWQUlMQUJJ
TElUWV9DSEFOR0VEX0VWRU5UIDIKKyNkZWZpbmUgVEFSR0VUX1NUUklOR19BVFRSSUJVVEVfQ0hB
TkdFRF9FVkVOVCAzCisjZGVmaW5lIFRBUkdFVF9CSU5BUllfQVRUUklCVVRFX0NIQU5HRURfRVZF
TlQgNAorCisjZW5kaWYgLyogX19OVkNUUkxfSCAqLwpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0cmwvTlZDdHJsTGliLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0cmwvTlZD
dHJsTGliLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Ro
aXJkX3BhcnR5L2xpYlhOVkN0cmwvTlZDdHJsTGliLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw3MDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDggTlZJRElBLCBDb3Jwb3JhdGlvbgor
ICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh
bnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29j
aWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCisgKiBp
biB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGlt
aXRhdGlvbiB0aGUgcmlnaHRzCisgKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxp
c2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCisgKiBjb3BpZXMgb2YgdGhl
IFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMK
KyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lv
biBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNs
dWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29m
dHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQg
V0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBC
VVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICog
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElO
IE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBM
SUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVU
SEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcg
RlJPTSwKKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRI
RSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCisgKiBTT0ZUV0FSRS4KKyAqLworCisjaWZu
ZGVmIF9fTlZDVFJMTElCX0gKKyNkZWZpbmUgX19OVkNUUkxMSUJfSAorCisjaW5jbHVkZSAiTlZD
dHJsLmgiCisKKyNpZiBkZWZpbmVkIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgor
CisvKgorICogIFhOVkNUUkxRdWVyeUV4dGVuc2lvbiAtCisgKgorICogIFJldHVybnMgVHJ1ZSBp
ZiB0aGUgZXh0ZW5zaW9uIGV4aXN0cywgcmV0dXJucyBGYWxzZSBvdGhlcndpc2UuCisgKiAgZXZl
bnRfYmFzZXAgYW5kIGVycm9yX2Jhc2VwIGFyZSB0aGUgZXh0ZW5zaW9uIGV2ZW50IGFuZCBlcnJv
cgorICogIGJhc2VzLiAgQ3VycmVudGx5LCBubyBleHRlbnNpb24gc3BlY2lmaWMgZXJyb3JzIG9y
IGV2ZW50cyBhcmUKKyAqICBkZWZpbmVkLgorICovCisKK0Jvb2wgWE5WQ1RSTFF1ZXJ5RXh0ZW5z
aW9uKERpc3BsYXkgKmRweSwgaW50ICpldmVudF9iYXNlcCwgaW50ICplcnJvcl9iYXNlcCk7CisK
Ky8qCisgKiAgWE5WQ1RSTFF1ZXJ5VmVyc2lvbiAtCisgKgorICogIFJldHVybnMgVHJ1ZSBpZiB0
aGUgZXh0ZW5zaW9uIGV4aXN0cywgcmV0dXJucyBGYWxzZSBvdGhlcndpc2UuCisgKiAgbWFqb3Ig
YW5kIG1pbm9yIGFyZSB0aGUgZXh0ZW5zaW9uJ3MgbWFqb3IgYW5kIG1pbm9yIHZlcnNpb24KKyAq
ICBudW1iZXJzLgorICovCisKK0Jvb2wgWE5WQ1RSTFF1ZXJ5VmVyc2lvbihEaXNwbGF5ICpkcHks
IGludCAqbWFqb3IsIGludCAqbWlub3IpOworCisvKgorICogIFhOVkNUUkxJc052U2NyZWVuCisg
KgorICogIFJldHVybnMgVHJ1ZSBpcyB0aGUgc3BlY2lmaWVkIHNjcmVlbiBpcyBjb250cm9sbGVk
IGJ5IHRoZSBOVklESUEKKyAqICBkcml2ZXIuICBSZXR1cm5zIEZhbHNlIG90aGVyd2lzZS4KKyAq
LworCitCb29sIFhOVkNUUkxJc052U2NyZWVuKERpc3BsYXkgKmRweSwgaW50IHNjcmVlbik7CisK
Ky8qCisgKiAgWE5WQ1RSTFF1ZXJ5VGFyZ2V0Q291bnQgLQorICoKKyAqICBSZXR1cm5zIFRydWUg
aWYgdGhlIHRhcmdldCB0eXBlIGV4aXN0cy4gIFJldHVybnMgRmFsc2Ugb3RoZXJ3aXNlLgorICog
IElmIFhOVkNUUkxRdWVyeVRhcmdldENvdW50IHJldHVybnMgVHJ1ZSwgdmFsdWUgd2lsbCBjb250
YWluIHRoZQorICogIGNvdW50IG9mIGV4aXN0aW5nIHRhcmdldHMgb24gdGhlIHNlcnZlciBvZiB0
aGUgc3BlY2lmaWVkIHRhcmdldAorICogIHR5cGUuCisgKgorICogIFBsZWFzZSBzZWUgIkF0dHJp
YnV0ZSBUYXJnZXRzIiBpbiBOVkN0cmwuaCBmb3IgdGhlIGxpc3Qgb2YgdmFsaWQKKyAqICB0YXJn
ZXQgdHlwZXMuCisgKgorICogIFBvc3NpYmxlIGVycm9yczoKKyAqICAgICBCYWRWYWx1ZSAtIFRo
ZSB0YXJnZXQgZG9lc24ndCBleGlzdC4KKyAqLworCitCb29sIFhOVkNUUkxRdWVyeVRhcmdldENv
dW50KERpc3BsYXkgKmRweSwgaW50IHRhcmdldF90eXBlLCBpbnQgKnZhbHVlKTsKKworLyoKKyAq
ICBYTlZDVFJMU2V0QXR0cmlidXRlIC0KKyAqCisgKiAgU2V0cyB0aGUgYXR0cmlidXRlIHRvIHRo
ZSBnaXZlbiB2YWx1ZS4gIFRoZSBhdHRyaWJ1dGVzIGFuZCB0aGVpcgorICogIHBvc3NpYmxlIHZh
bHVlcyBhcmUgbGlzdGVkIGluIE5WQ3RybC5oLgorICoKKyAqICBOb3QgYWxsIGF0dHJpYnV0ZXMg
cmVxdWlyZSB0aGUgZGlzcGxheV9tYXNrIHBhcmFtZXRlcjsgc2VlCisgKiAgTlZDdHJsLmggZm9y
IGRldGFpbHMuCisgKgorICogIENhbGxpbmcgdGhpcyBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRv
IGNhbGxpbmcgWE5WQ1RSTFNldFRhcmdldEF0dHJpYnV0ZSgpCisgKiAgd2l0aCB0aGUgdGFyZ2V0
X3R5cGUgc2V0IHRvIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4gYW5kCisgKiAgdGFyZ2V0
X2lkIHNldCB0byAnc2NyZWVuJy4KKyAqCisgKiAgUG9zc2libGUgZXJyb3JzOgorICogICAgIEJh
ZFZhbHVlIC0gVGhlIHNjcmVlbiBvciBhdHRyaWJ1dGUgZG9lc24ndCBleGlzdC4KKyAqICAgICBC
YWRNYXRjaCAtIFRoZSBOVklESUEgZHJpdmVyIGlzIG5vdCBwcmVzZW50IG9uIHRoYXQgc2NyZWVu
LgorICovCisKK3ZvaWQgWE5WQ1RSTFNldEF0dHJpYnV0ZShEaXNwbGF5ICpkcHksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHNjcmVlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBhdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZhbHVlKTsK
KworLyoKKyAqICBYTlZDVFJMU2V0VGFyZ2V0QXR0cmlidXRlIC0KKyAqCisgKiAgU2V0cyB0aGUg
YXR0cmlidXRlIHRvIHRoZSBnaXZlbiB2YWx1ZS4gIFRoZSBhdHRyaWJ1dGVzIGFuZCB0aGVpcgor
ICogIHBvc3NpYmxlIHZhbHVlcyBhcmUgbGlzdGVkIGluIE5WQ3RybC5oLgorICoKKyAqICBOb3Qg
YWxsIGF0dHJpYnV0ZXMgcmVxdWlyZSB0aGUgZGlzcGxheV9tYXNrIHBhcmFtZXRlcjsgc2VlCisg
KiAgTlZDdHJsLmggZm9yIGRldGFpbHMuCisgKgorICogIFBvc3NpYmxlIGVycm9yczoKKyAqICAg
ICBCYWRWYWx1ZSAtIFRoZSB0YXJnZXQgb3IgYXR0cmlidXRlIGRvZXNuJ3QgZXhpc3QuCisgKiAg
ICAgQmFkTWF0Y2ggLSBUaGUgTlZJRElBIGRyaXZlciBpcyBub3QgcHJlc2VudCBvbiB0aGF0IHRh
cmdldC4KKyAqLworCit2b2lkIFhOVkNUUkxTZXRUYXJnZXRBdHRyaWJ1dGUoRGlzcGxheSAqZHB5
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0YXJnZXRfdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0X2lkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkaXNwbGF5X21hc2ssCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgdmFsdWUpOworCisvKgorICogIFhOVkNUUkxTZXRBdHRyaWJ1
dGVBbmRHZXRTdGF0dXMgLQorICoKKyAqIFNhbWUgYXMgWE5WQ1RSTFNldEF0dHJpYnV0ZSgpLgor
ICogSW4gYWRkaXRpb24sIFhOVkNUUkxTZXRBdHRyaWJ1dGVBbmRHZXRTdGF0dXMoKSByZXR1cm5z
CisgKiBUcnVlIGlmIHRoZSBvcGVyYXRpb24gc3VjY2VlZHMsIEZhbHNlIG90aGVyd2lzZS4KKyAq
CisgKi8KKworQm9vbCBYTlZDVFJMU2V0QXR0cmlidXRlQW5kR2V0U3RhdHVzKERpc3BsYXkgKmRw
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2NyZWVuLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkaXNwbGF5X21h
c2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGF0
dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUp
OworCisvKgorICogIFhOVkNUUkxTZXRUYXJnZXRBdHRyaWJ1dGVBbmRHZXRTdGF0dXMgLQorICoK
KyAqIFNhbWUgYXMgWE5WQ1RSTFNldFRhcmdldEF0dHJpYnV0ZSgpLgorICogSW4gYWRkaXRpb24s
IFhOVkNUUkxTZXRUYXJnZXRBdHRyaWJ1dGVBbmRHZXRTdGF0dXMoKSByZXR1cm5zCisgKiBUcnVl
IGlmIHRoZSBvcGVyYXRpb24gc3VjY2VlZHMsIEZhbHNlIG90aGVyd2lzZS4KKyAqCisgKi8KKwor
Qm9vbCBYTlZDVFJMU2V0VGFyZ2V0QXR0cmlidXRlQW5kR2V0U3RhdHVzKERpc3BsYXkgKmRweSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0X3R5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRhcmdl
dF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgZGlzcGxheV9tYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHZhbHVlKTsKKworLyoKKyAqICBYTlZDVFJMUXVlcnlBdHRy
aWJ1dGUgLQorICoKKyAqICBSZXR1cm5zIFRydWUgaWYgdGhlIGF0dHJpYnV0ZSBleGlzdHMuICBS
ZXR1cm5zIEZhbHNlIG90aGVyd2lzZS4KKyAqICBJZiBYTlZDVFJMUXVlcnlBdHRyaWJ1dGUgcmV0
dXJucyBUcnVlLCB2YWx1ZSB3aWxsIGNvbnRhaW4gdGhlCisgKiAgdmFsdWUgb2YgdGhlIHNwZWNp
ZmllZCBhdHRyaWJ1dGUuCisgKgorICogIE5vdCBhbGwgYXR0cmlidXRlcyByZXF1aXJlIHRoZSBk
aXNwbGF5X21hc2sgcGFyYW1ldGVyOyBzZWUKKyAqICBOVkN0cmwuaCBmb3IgZGV0YWlscy4KKyAq
CisgKiAgQ2FsbGluZyB0aGlzIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZworICog
IFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpIHdpdGggdGhlIHRhcmdldF90eXBlIHNldCB0
bworICogIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4gYW5kIHRhcmdldF9pZCBzZXQgdG8g
J3NjcmVlbicuCisgKgorICogIFBvc3NpYmxlIGVycm9yczoKKyAqICAgICBCYWRWYWx1ZSAtIFRo
ZSBzY3JlZW4gZG9lc24ndCBleGlzdC4KKyAqICAgICBCYWRNYXRjaCAtIFRoZSBOVklESUEgZHJp
dmVyIGlzIG5vdCBwcmVzZW50IG9uIHRoYXQgc2NyZWVuLgorICovCisKK0Jvb2wgWE5WQ1RSTFF1
ZXJ5QXR0cmlidXRlKERpc3BsYXkgKmRweSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBzY3JlZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGlzcGxh
eV9tYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGF0dHJpYnV0
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqdmFsdWUpOworCisvKgorICogWE5W
Q1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlIC0KKyAqCisgKiAgUmV0dXJucyBUcnVlIGlmIHRoZSBh
dHRyaWJ1dGUgZXhpc3RzLiAgUmV0dXJucyBGYWxzZSBvdGhlcndpc2UuCisgKiAgSWYgWE5WQ1RS
TFF1ZXJ5VGFyZ2V0QXR0cmlidXRlIHJldHVybnMgVHJ1ZSwgdmFsdWUgd2lsbCBjb250YWluIHRo
ZQorICogIHZhbHVlIG9mIHRoZSBzcGVjaWZpZWQgYXR0cmlidXRlLgorICoKKyAqICBOb3QgYWxs
IGF0dHJpYnV0ZXMgcmVxdWlyZSB0aGUgZGlzcGxheV9tYXNrIHBhcmFtZXRlcjsgc2VlCisgKiAg
TlZDdHJsLmggZm9yIGRldGFpbHMuCisgKgorICogIFBvc3NpYmxlIGVycm9yczoKKyAqICAgICBC
YWRWYWx1ZSAtIFRoZSB0YXJnZXQgZG9lc24ndCBleGlzdC4KKyAqICAgICBCYWRNYXRjaCAtIFRo
ZSBOVklESUEgZHJpdmVyIGRvZXMgbm90IGNvbnRyb2wgdGhlIHRhcmdldC4KKyAqLworCitCb29s
IFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZShEaXNwbGF5ICpkcHksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0X1R5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgdGFyZ2V0X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgKnZhbHVlKTsKKworLyoKKyAqIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJp
YnV0ZTY0IC0KKyAqCisgKiAgUmV0dXJucyBUcnVlIGlmIHRoZSBhdHRyaWJ1dGUgZXhpc3RzLiAg
UmV0dXJucyBGYWxzZSBvdGhlcndpc2UuCisgKiAgSWYgWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmli
dXRlIHJldHVybnMgVHJ1ZSwgdmFsdWUgd2lsbCBjb250YWluIHRoZQorICogIHZhbHVlIG9mIHRo
ZSBzcGVjaWZpZWQgYXR0cmlidXRlLgorICoKKyAqICBOb3QgYWxsIGF0dHJpYnV0ZXMgcmVxdWly
ZSB0aGUgZGlzcGxheV9tYXNrIHBhcmFtZXRlcjsgc2VlCisgKiAgTlZDdHJsLmggZm9yIGRldGFp
bHMuCisgKgorICogIE5vdGU6IHRoaXMgZnVuY3Rpb24gYmVoYXZlcyBsaWtlIFhOVkNUUkxRdWVy
eVRhcmdldEF0dHJpYnV0ZSgpLAorICogIGJ1dCBzdXBwb3J0cyA2NC1iaXQgaW50ZWdlciBhdHRy
aWJ1dGVzLgorICoKKyAqICBQb3NzaWJsZSBlcnJvcnM6CisgKiAgICAgQmFkVmFsdWUgLSBUaGUg
dGFyZ2V0IGRvZXNuJ3QgZXhpc3QuCisgKiAgICAgQmFkTWF0Y2ggLSBUaGUgTlZJRElBIGRyaXZl
ciBkb2VzIG5vdCBjb250cm9sIHRoZSB0YXJnZXQuCisgKi8KKworQm9vbCBYTlZDVFJMUXVlcnlU
YXJnZXRBdHRyaWJ1dGU2NChEaXNwbGF5ICpkcHksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCB0YXJnZXRfVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IHRhcmdldF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50NjRfdCAqdmFsdWUpOworCisvKgorICogIFhOVkNUUkxRdWVyeVN0cmluZ0F0
dHJpYnV0ZSAtCisgKgorICogIFJldHVybnMgVHJ1ZSBpZiB0aGUgYXR0cmlidXRlIGV4aXN0cy4g
IFJldHVybnMgRmFsc2Ugb3RoZXJ3aXNlLgorICogIElmIFhOVkNUUkxRdWVyeVN0cmluZ0F0dHJp
YnV0ZSByZXR1cm5zIFRydWUsICpwdHIgd2lsbCBwb2ludCB0byBhbgorICogIGFsbG9jYXRlZCBz
dHJpbmcgY29udGFpbmluZyB0aGUgc3RyaW5nIGF0dHJpYnV0ZSByZXF1ZXN0ZWQuICBJdCBpcwor
ICogIHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0eSB0byBmcmVlIHRoZSBzdHJpbmcgd2hlbiBk
b25lLgorICoKKyAqICBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byBjYWxs
aW5nCisgKiAgWE5WQ1RSTFF1ZXJ5VGFyZ2V0U3RyaW5nQXR0cmlidXRlKCkgd2l0aCB0aGUgdGFy
Z2V0X3R5cGUgc2V0IHRvCisgKiAgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiBhbmQgdGFy
Z2V0X2lkIHNldCB0byAnc2NyZWVuJy4KKyAqCisgKiAgUG9zc2libGUgZXJyb3JzOgorICogICAg
IEJhZFZhbHVlIC0gVGhlIHNjcmVlbiBkb2Vzbid0IGV4aXN0LgorICogICAgIEJhZE1hdGNoIC0g
VGhlIE5WSURJQSBkcml2ZXIgaXMgbm90IHByZXNlbnQgb24gdGhhdCBzY3JlZW4uCisgKiAgICAg
QmFkQWxsb2MgLSBJbnN1ZmZpY2llbnQgcmVzb3VyY2VzIHRvIGZ1bGZpbGwgdGhlIHJlcXVlc3Qu
CisgKi8KKworQm9vbCBYTlZDVFJMUXVlcnlTdHJpbmdBdHRyaWJ1dGUoRGlzcGxheSAqZHB5LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNjcmVlbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkaXNwbGF5X21hc2ssCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKnB0cik7CisKKy8qCisgKiAgWE5WQ1RS
TFF1ZXJ5VGFyZ2V0U3RyaW5nQXR0cmlidXRlIC0KKyAqCisgKiAgUmV0dXJucyBUcnVlIGlmIHRo
ZSBhdHRyaWJ1dGUgZXhpc3RzLiAgUmV0dXJucyBGYWxzZSBvdGhlcndpc2UuCisgKiAgSWYgWE5W
Q1RSTFF1ZXJ5VGFyZ2V0U3RyaW5nQXR0cmlidXRlIHJldHVybnMgVHJ1ZSwgKnB0ciB3aWxsIHBv
aW50CisgKiAgdG8gYW4gYWxsb2NhdGVkIHN0cmluZyBjb250YWluaW5nIHRoZSBzdHJpbmcgYXR0
cmlidXRlIHJlcXVlc3RlZC4KKyAqICBJdCBpcyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkg
dG8gZnJlZSB0aGUgc3RyaW5nIHdoZW4gZG9uZS4KKyAqCisgKiAgUG9zc2libGUgZXJyb3JzOgor
ICogICAgIEJhZFZhbHVlIC0gVGhlIHRhcmdldCBkb2Vzbid0IGV4aXN0LgorICogICAgIEJhZE1h
dGNoIC0gVGhlIE5WSURJQSBkcml2ZXIgZG9lcyBub3QgY29udHJvbCB0aGUgdGFyZ2V0LgorICog
ICAgIEJhZEFsbG9jIC0gSW5zdWZmaWNpZW50IHJlc291cmNlcyB0byBmdWxmaWxsIHRoZSByZXF1
ZXN0LgorICovCisKK0Jvb2wgWE5WQ1RSTFF1ZXJ5VGFyZ2V0U3RyaW5nQXR0cmlidXRlKERpc3Bs
YXkgKmRweSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0YXJn
ZXRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0YXJn
ZXRfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgZGlzcGxheV9tYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYXIgKipwdHIpOworCisvKgorICogIFhOVkNUUkxTZXRTdHJpbmdBdHRyaWJ1dGUg
LQorICoKKyAqICBSZXR1cm5zIFRydWUgaWYgdGhlIG9wZXJhdGlvbiBzdWNjZWRlZC4gIFJldHVy
bnMgRmFsc2Ugb3RoZXJ3aXNlLgorICoKKyAqICBQb3NzaWJsZSBYIGVycm9yczoKKyAqICAgICBC
YWRWYWx1ZSAtIFRoZSBzY3JlZW4gZG9lc24ndCBleGlzdC4KKyAqICAgICBCYWRNYXRjaCAtIFRo
ZSBOVklESUEgZHJpdmVyIGlzIG5vdCBwcmVzZW50IG9uIHRoYXQgc2NyZWVuLgorICogICAgIEJh
ZEFsbG9jIC0gSW5zdWZmaWNpZW50IHJlc291cmNlcyB0byBmdWxmaWxsIHRoZSByZXF1ZXN0Lgor
ICovCisKK0Jvb2wgWE5WQ1RSTFNldFN0cmluZ0F0dHJpYnV0ZShEaXNwbGF5ICpkcHksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNjcmVlbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciAqcHRyKTsKKworLyoKKyAqICBYTlZDVFJMU2V0VGFyZ2V0U3Ry
aW5nQXR0cmlidXRlIC0KKyAqCisgKiAgUmV0dXJucyBUcnVlIGlmIHRoZSBvcGVyYXRpb24gc3Vj
Y2VkZWQuICBSZXR1cm5zIEZhbHNlIG90aGVyd2lzZS4KKyAqCisgKiAgUG9zc2libGUgWCBlcnJv
cnM6CisgKiAgICAgQmFkVmFsdWUgLSBUaGUgc2NyZWVuIGRvZXNuJ3QgZXhpc3QuCisgKiAgICAg
QmFkTWF0Y2ggLSBUaGUgTlZJRElBIGRyaXZlciBpcyBub3QgcHJlc2VudCBvbiB0aGF0IHNjcmVl
bi4KKyAqICAgICBCYWRBbGxvYyAtIEluc3VmZmljaWVudCByZXNvdXJjZXMgdG8gZnVsZmlsbCB0
aGUgcmVxdWVzdC4KKyAqLworCitCb29sIFhOVkNUUkxTZXRUYXJnZXRTdHJpbmdBdHRyaWJ1dGUo
RGlzcGxheSAqZHB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0
YXJnZXRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGFy
Z2V0X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCBkaXNwbGF5X21hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50IGF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyICpwdHIpOworCisvKgorICogWE5WQ1RSTFF1ZXJ5VmFsaWRBdHRyaWJ1dGVWYWx1ZXMg
LQorICoKKyAqIFJldHVybnMgVHJ1ZSBpZiB0aGUgYXR0cmlidXRlIGV4aXN0cy4gIFJldHVybnMg
RmFsc2Ugb3RoZXJ3aXNlLiAgSWYKKyAqIFhOVkNUUkxRdWVyeVZhbGlkQXR0cmlidXRlVmFsdWVz
IHJldHVybnMgVHJ1ZSwgdmFsdWVzIHdpbGwgaW5kaWNhdGUKKyAqIHRoZSB2YWxpZCB2YWx1ZXMg
Zm9yIHRoZSBzcGVjaWZpZWQgYXR0cmlidXRlOyBzZWUgdGhlIGRlc2NyaXB0aW9uCisgKiBvZiBO
VkNUUkxBdHRyaWJ1dGVWYWxpZFZhbHVlcyBpbiBOVkN0cmwuaC4KKyAqCisgKiAgQ2FsbGluZyB0
aGlzIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZworICogIFhOVkNUUkxRdWVyeVZh
bGlkVGFyZ2V0QXR0cmlidXRlVmFsdWVzKCkgd2l0aCB0aGUgdGFyZ2V0X3R5cGUgc2V0IHRvCisg
KiAgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiBhbmQgdGFyZ2V0X2lkIHNldCB0byAnc2Ny
ZWVuJy4KKyAqLworCitCb29sIFhOVkNUUkxRdWVyeVZhbGlkQXR0cmlidXRlVmFsdWVzKERpc3Bs
YXkgKmRweSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNjcmVl
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRp
c3BsYXlfbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IGF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TlZDVFJMQXR0cmlidXRlVmFsaWRWYWx1ZXNSZWMgKnZhbHVlcyk7CisKKy8qCisgKiBYTlZDVFJM
UXVlcnlWYWxpZFRhcmdldEF0dHJpYnV0ZVZhbHVlcyAtCisgKgorICogUmV0dXJucyBUcnVlIGlm
IHRoZSBhdHRyaWJ1dGUgZXhpc3RzLiAgUmV0dXJucyBGYWxzZSBvdGhlcndpc2UuICBJZgorICog
WE5WQ1RSTFF1ZXJ5VmFsaWRUYXJnZXRBdHRyaWJ1dGVWYWx1ZXMgcmV0dXJucyBUcnVlLCB2YWx1
ZXMgd2lsbCBpbmRpY2F0ZQorICogdGhlIHZhbGlkIHZhbHVlcyBmb3IgdGhlIHNwZWNpZmllZCBh
dHRyaWJ1dGUuCisgKi8KKworQm9vbCBYTlZDVFJMUXVlcnlWYWxpZFRhcmdldEF0dHJpYnV0ZVZh
bHVlcyhEaXNwbGF5ICpkcHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCB0YXJnZXRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IHRhcmdldF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlZDVFJMQXR0cmlidXRl
VmFsaWRWYWx1ZXNSZWMgKnZhbHVlcyk7CisKKy8qCisgKiBYTlZDVFJMUXVlcnlWYWxpZFRhcmdl
dFN0cmluZ0F0dHJpYnV0ZVZhbHVlcyAtCisgKgorICogUmV0dXJucyBUcnVlIGlmIHRoZSBhdHRy
aWJ1dGUgZXhpc3RzLiAgUmV0dXJucyBGYWxzZSBvdGhlcndpc2UuICBJZgorICogWE5WQ1RSTFF1
ZXJ5VmFsaWRUYXJnZXRTdHJpbmdBdHRyaWJ1dGVWYWx1ZXMgcmV0dXJucyBUcnVlLCB2YWx1ZXMg
d2lsbAorICogaW5kaWNhdGUgdGhlIHZhbGlkIHZhbHVlcyBmb3IgdGhlIHNwZWNpZmllZCBhdHRy
aWJ1dGUuCisgKi8KKworQm9vbCBYTlZDVFJMUXVlcnlWYWxpZFRhcmdldFN0cmluZ0F0dHJpYnV0
ZVZhbHVlcyhEaXNwbGF5ICpkcHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCB0YXJnZXRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRhcmdldF9pZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRpc3BsYXlf
bWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTlZDVFJMQXR0cmlidXRlVmFsaWRWYWx1ZXNSZWMgKnZhbHVlcyk7
CisKKy8qCisgKiBYTlZDVFJMUXVlcnlBdHRyaWJ1dGVQZXJtaXNzaW9ucyAtCisgKgorICogUmV0
dXJucyBUcnVlIGlmIHRoZSBhdHRyaWJ1dGUgZXhpc3RzLiAgUmV0dXJucyBGYWxzZSBvdGhlcndp
c2UuICBJZgorICogWE5WQ1RSTFF1ZXJ5QXR0cmlidXRlUGVybWlzc2lvbnMgcmV0dXJucyBUcnVl
LCBwZXJtaXNzaW9ucyB3aWxsCisgKiBpbmRpY2F0ZSB0aGUgcGVybWlzc2lvbiBmbGFncyBmb3Ig
dGhlIGF0dHJpYnV0ZS4KKyAqLworCitCb29sIFhOVkNUUkxRdWVyeUF0dHJpYnV0ZVBlcm1pc3Np
b25zKERpc3BsYXkgKmRweSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTlZDVFJMQXR0cmlidXRlUGVybWlzc2lvbnNSZWMgKnBlcm1pc3Npb25zKTsKKworLyoK
KyAqIFhOVkNUUkxRdWVyeVN0cmluZ0F0dHJpYnV0ZVBlcm1pc3Npb25zIC0KKyAqCisgKiBSZXR1
cm5zIFRydWUgaWYgdGhlIGF0dHJpYnV0ZSBleGlzdHMuICBSZXR1cm5zIEZhbHNlIG90aGVyd2lz
ZS4gIElmCisgKiBYTlZDVFJMUXVlcnlTdHJpbmdBdHRyaWJ1dGVQZXJtaXNzaW9ucyByZXR1cm5z
IFRydWUsIHBlcm1pc3Npb25zIHdpbGwKKyAqIGluZGljYXRlIHRoZSBwZXJtaXNzaW9uIGZsYWdz
IGZvciB0aGUgYXR0cmlidXRlLgorICovCisKK0Jvb2wgWE5WQ1RSTFF1ZXJ5U3RyaW5nQXR0cmli
dXRlUGVybWlzc2lvbnMoRGlzcGxheSAqZHB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVkNUUkxBdHRyaWJ1dGVQZXJtaXNzaW9uc1Jl
YyAqcGVybWlzc2lvbnMpOworCisvKgorICogWE5WQ1RSTFF1ZXJ5QmluYXJ5RGF0YUF0dHJpYnV0
ZVBlcm1pc3Npb25zIC0KKyAqCisgKiBSZXR1cm5zIFRydWUgaWYgdGhlIGF0dHJpYnV0ZSBleGlz
dHMuICBSZXR1cm5zIEZhbHNlIG90aGVyd2lzZS4gIElmCisgKiBYTlZDVFJMUXVlcnlCaW5hcnlE
YXRhQXR0cmlidXRlUGVybWlzc2lvbnMgcmV0dXJucyBUcnVlLCBwZXJtaXNzaW9ucworICogd2ls
bCBpbmRpY2F0ZSB0aGUgcGVybWlzc2lvbiBmbGFncyBmb3IgdGhlIGF0dHJpYnV0ZS4KKyAqLwor
CitCb29sIFhOVkNUUkxRdWVyeUJpbmFyeURhdGFBdHRyaWJ1dGVQZXJtaXNzaW9ucyhEaXNwbGF5
ICpkcHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgYXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTlZDVFJMQXR0cmlidXRlUGVybWlzc2lvbnNSZWMgKnBlcm1pc3Npb25z
KTsKKworLyoKKyAqIFhOVkNUUkxRdWVyeVN0cmluZ09wZXJhdGlvbkF0dHJpYnV0ZVBlcm1pc3Np
b25zIC0KKyAqCisgKiBSZXR1cm5zIFRydWUgaWYgdGhlIGF0dHJpYnV0ZSBleGlzdHMuICBSZXR1
cm5zIEZhbHNlIG90aGVyd2lzZS4gIElmCisgKiBYTlZDVFJMUXVlcnlTdHJpbmdPcGVyYXRpb25B
dHRyaWJ1dGVQZXJtaXNzaW9ucyByZXR1cm5zIFRydWUsCisgKiBwZXJtaXNzaW9ucyB3aWxsIGlu
ZGljYXRlIHRoZSBwZXJtaXNzaW9uIGZsYWdzIGZvciB0aGUgYXR0cmlidXRlLgorICovCisKK0Jv
b2wgWE5WQ1RSTFF1ZXJ5U3RyaW5nT3BlcmF0aW9uQXR0cmlidXRlUGVybWlzc2lvbnMoRGlzcGxh
eSAqZHB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOVkNUUkxBdHRyaWJ1dGVQZXJtaXNzaW9uc1JlYyAq
cGVybWlzc2lvbnMpOworCisvKgorICogIFhOVkNUUkxTZXRHdm9Db2xvckNvbnZlcnNpb24gLQor
ICoKKyAqICBTZXRzIHRoZSBjb2xvciBjb252ZXJzaW9uIG1hdHJpeCwgb2Zmc2V0LCBhbmQgc2Nh
bGUgdGhhdCBzaG91bGQgYmUKKyAqICB1c2VkIGZvciBHVk8gKEdyYXBoaWMgdG8gVmlkZW8gT3V0
KS4KKyAqCisgKiAgVGhlIENvbG9yIFNwYWNlIENvbnZlcnNpb24gZGF0YSBpcyBvcmRlcmVkIGxp
a2UgdGhpczoKKyAqCisgKiAgIGNvbG9yTWF0cml4WzBdWzBdIC8vIHIuWQorICogICBjb2xvck1h
dHJpeFswXVsxXSAvLyBnLlkKKyAqICAgY29sb3JNYXRyaXhbMF1bMl0gLy8gYi5ZCisgKgorICog
ICBjb2xvck1hdHJpeFsxXVswXSAvLyByLkNyCisgKiAgIGNvbG9yTWF0cml4WzFdWzFdIC8vIGcu
Q3IKKyAqICAgY29sb3JNYXRyaXhbMV1bMl0gLy8gYi5DcgorICoKKyAqICAgY29sb3JNYXRyaXhb
Ml1bMF0gLy8gci5DYgorICogICBjb2xvck1hdHJpeFsyXVsxXSAvLyBnLkNiCisgKiAgIGNvbG9y
TWF0cml4WzJdWzJdIC8vIGIuQ2IKKyAqCisgKiAgIGNvbG9yT2Zmc2V0WzBdICAgIC8vIFkKKyAq
ICAgY29sb3JPZmZzZXRbMV0gICAgLy8gQ3IKKyAqICAgY29sb3JPZmZzZXRbMl0gICAgLy8gQ2IK
KyAqCisgKiAgIGNvbG9yU2NhbGVbMF0gICAgIC8vIFkKKyAqICAgY29sb3JTY2FsZVsxXSAgICAg
Ly8gQ3IKKyAqICAgY29sb3JTY2FsZVsyXSAgICAgLy8gQ2IKKyAqCisgKiAgd2hlcmUgdGhlIGRh
dGEgaXMgdXNlZCBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyBmb3JtdWxhZToKKyAqCisgKiAg
IFkgID0gIGNvbG9yT2Zmc2V0WzBdICsgY29sb3JTY2FsZVswXSAqCisgKiAgICAgICAgICAgKFIg
KiBjb2xvck1hdHJpeFswXVswXSArCisgKiAgICAgICAgICAgIEcgKiBjb2xvck1hdHJpeFswXVsx
XSArCisgKiAgICAgICAgICAgIEIgKiBjb2xvck1hdHJpeFswXVsyXSk7CisgKgorICogICBDciA9
ICBjb2xvck9mZnNldFsxXSArIGNvbG9yU2NhbGVbMV0gKgorICogICAgICAgICAgIChSICogY29s
b3JNYXRyaXhbMV1bMF0gKworICogICAgICAgICAgICBHICogY29sb3JNYXRyaXhbMV1bMV0gKwor
ICogICAgICAgICAgICBCICogY29sb3JNYXRyaXhbMV1bMl0pOworICoKKyAqICAgQ2IgPSAgY29s
b3JPZmZzZXRbMl0gKyBjb2xvclNjYWxlWzJdICoKKyAqICAgICAgICAgICAoUiAqIGNvbG9yTWF0
cml4WzJdWzBdICsKKyAqICAgICAgICAgICAgRyAqIGNvbG9yTWF0cml4WzJdWzFdICsKKyAqICAg
ICAgICAgICAgQiAqIGNvbG9yTWF0cml4WzJdWzJdKTsKKyAqCisgKiAgUG9zc2libGUgZXJyb3Jz
OgorICogICAgIEJhZE1hdGNoIC0gVGhlIE5WSURJQSBkcml2ZXIgaXMgbm90IHByZXNlbnQgb24g
dGhhdCBzY3JlZW4uCisgKiAgICAgQmFkSW1wbGVtZW50YXRpb24gLSBHVk8gaXMgbm90IGF2YWls
YWJsZSBvbiB0aGF0IHNjcmVlbi4KKyAqLworCit2b2lkIFhOVkNUUkxTZXRHdm9Db2xvckNvbnZl
cnNpb24oRGlzcGxheSAqZHB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBzY3JlZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgY29sb3JN
YXRyaXhbM11bM10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgY29s
b3JPZmZzZXRbM10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgY29s
b3JTY2FsZVszXSk7CisKKy8qCisgKiAgWE5WQ1RSTFF1ZXJ5R3ZvQ29sb3JDb252ZXJzaW9uIC0K
KyAqCisgKiAgUmV0cmlldmVzIHRoZSBjb2xvciBjb252ZXJzaW9uIG1hdHJpeCBhbmQgY29sb3Ig
b2Zmc2V0CisgKiAgdGhhdCBhcmUgY3VycmVudGx5IGJlaW5nIHVzZWQgZm9yIEdWTyAoR3JhcGhp
YyB0byBWaWRlbyBPdXQpLgorICoKKyAqICBUaGUgdmFsdWVzIGFyZSBvcmRlcmVkIHdpdGhpbiB0
aGUgYXJyYXlzIGFjY29yZGluZyB0byB0aGUgY29tbWVudHMKKyAqICBmb3IgWE5WQ1RSTFNldEd2
b0NvbG9yQ29udmVyc2lvbigpLgorICoKKyAqICBQb3NzaWJsZSBlcnJvcnM6CisgKiAgICAgQmFk
TWF0Y2ggLSBUaGUgTlZJRElBIGRyaXZlciBpcyBub3QgcHJlc2VudCBvbiB0aGF0IHNjcmVlbi4K
KyAqICAgICBCYWRJbXBsZW1lbnRhdGlvbiAtIEdWTyBpcyBub3QgYXZhaWxhYmxlIG9uIHRoYXQg
c2NyZWVuLgorICovCisKK0Jvb2wgWE5WQ1RSTFF1ZXJ5R3ZvQ29sb3JDb252ZXJzaW9uKERpc3Bs
YXkgKmRweSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzY3JlZW4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBjb2xvck1hdHJpeFsz
XVszXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGNvbG9yT2Zm
c2V0WzNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgY29sb3JT
Y2FsZVszXSk7CisKKy8qCisgKiAgWE5WQ1RSTFF1ZXJ5QmluYXJ5RGF0YSAtCisgKgorICogIFJl
dHVybnMgVHJ1ZSBpZiB0aGUgYXR0cmlidXRlIGV4aXN0cy4gIFJldHVybnMgRmFsc2Ugb3RoZXJ3
aXNlLgorICogIElmIFhOVkNUUkxRdWVyeUJpbmFyeURhdGEgcmV0dXJucyBUcnVlLCAqcHRyIHdp
bGwgcG9pbnQgdG8gYW4KKyAqICBhbGxvY2F0ZWQgYmxvY2sgb2YgbWVtb3J5IGNvbnRhaW5pbmcg
dGhlIGJpbmFyeSBkYXRhIGF0dHJpYnV0ZQorICogIHJlcXVlc3RlZC4gIEl0IGlzIHRoZSBjYWxs
ZXIncyByZXNwb25zaWJpbGl0eSB0byBmcmVlIHRoZSBkYXRhCisgKiAgd2hlbiBkb25lLiAgbGVu
IHdpbGwgbGlzdCB0aGUgbGVuZ3RoIG9mIHRoZSBiaW5hcnkgZGF0YS4KKyAqCisgKiAgQ2FsbGlu
ZyB0aGlzIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZworICogIFhOVkNUUkxRdWVy
eVRhcmdldEJpbmFyeURhdGEoKSB3aXRoIHRoZSB0YXJnZXRfdHlwZSBzZXQgdG8KKyAqICBOVl9D
VFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOIGFuZCB0YXJnZXRfaWQgc2V0IHRvICdzY3JlZW4nLgor
ICoKKyAqICBQb3NzaWJsZSBlcnJvcnM6CisgKiAgICAgQmFkVmFsdWUgLSBUaGUgc2NyZWVuIGRv
ZXNuJ3QgZXhpc3QuCisgKiAgICAgQmFkTWF0Y2ggLSBUaGUgTlZJRElBIGRyaXZlciBpcyBub3Qg
cHJlc2VudCBvbiB0aGF0IHNjcmVlbi4KKyAqICAgICBCYWRBbGxvYyAtIEluc3VmZmljaWVudCBy
ZXNvdXJjZXMgdG8gZnVsZmlsbCB0aGUgcmVxdWVzdC4KKyAqLworCitCb29sIFhOVkNUUkxRdWVy
eUJpbmFyeURhdGEoRGlzcGxheSAqZHB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBzY3JlZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRpc3Bs
YXlfbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXR0cmli
dXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKipwdHIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpsZW4pOworCisvKgorICogWE5WQ1RSTFF1
ZXJ5VGFyZ2V0QmluYXJ5RGF0YSAtCisgKgorICogIFJldHVybnMgVHJ1ZSBpZiB0aGUgYXR0cmli
dXRlIGV4aXN0cy4gIFJldHVybnMgRmFsc2Ugb3RoZXJ3aXNlLgorICogIElmIFhOVkNUUkxRdWVy
eVRhcmdldEJpbmFyeURhdGEgcmV0dXJucyBUcnVlLCAqcHRyIHdpbGwgcG9pbnQgdG8gYW4KKyAq
ICBhbGxvY2F0ZWQgYmxvY2sgb2YgbWVtb3J5IGNvbnRhaW5pbmcgdGhlIGJpbmFyeSBkYXRhIGF0
dHJpYnV0ZQorICogIHJlcXVlc3RlZC4gIEl0IGlzIHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0
eSB0byBmcmVlIHRoZSBkYXRhCisgKiAgd2hlbiBkb25lLiAgbGVuIHdpbGwgbGlzdCB0aGUgbGVu
Z3RoIG9mIHRoZSBiaW5hcnkgZGF0YS4KKyAqCisgKiAgUG9zc2libGUgZXJyb3JzOgorICogICAg
IEJhZFZhbHVlIC0gVGhlIHRhcmdldCBkb2Vzbid0IGV4aXN0LgorICogICAgIEJhZE1hdGNoIC0g
VGhlIE5WSURJQSBkcml2ZXIgZG9lcyBub3QgY29udHJvbCB0aGUgdGFyZ2V0LgorICogICAgIEJh
ZEFsbG9jIC0gSW5zdWZmaWNpZW50IHJlc291cmNlcyB0byBmdWxmaWxsIHRoZSByZXF1ZXN0Lgor
ICovCisKK0Jvb2wgWE5WQ1RSTFF1ZXJ5VGFyZ2V0QmluYXJ5RGF0YShEaXNwbGF5ICpkcHksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRhcmdldF90eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0YXJnZXRfaWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKipwdHIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpsZW4pOworCisvKgorICogWE5WQ1RSTFN0
cmluZ09wZXJhdGlvbiAtCisgKgorICogVGFrZXMgYSBzdHJpbmcgYXMgaW5wdXQgYW5kIHJldHVy
bnMgYSBYbWFsbG9jJ2VkIHN0cmluZyBhcyBvdXRwdXQuCisgKiBSZXR1cm5zIFRydWUgb24gc3Vj
Y2VzcyBhbmQgRmFsc2Ugb24gZmFpbHVyZS4KKyAqLworCitCb29sIFhOVkNUUkxTdHJpbmdPcGVy
YXRpb24oRGlzcGxheSAqZHB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0YXJn
ZXRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0X2lkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkaXNwbGF5X21hc2ssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyICpwSW4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciAqKnBwT3V0KTsKKworLyoKKyAqIFhOVkN0cmxTZWxlY3ROb3RpZnkgLQorICoKKyAq
IFRoaXMgZW5hYmxlcy9kaXNhYmxlcyByZWNlaXZpbmcgb2YgTlYtQ09OVFJPTCBldmVudHMuICBU
aGUgdHlwZQorICogc3BlY2lmaWVzIHRoZSB0eXBlIG9mIGV2ZW50IHRvIGVuYWJsZSAoY3VycmVu
dGx5LCB0aGUgb25seQorICogdHlwZSB0aGF0IGNhbiBiZSByZXF1ZXN0ZWQgcGVyLXNjcmVlbiB3
aXRoIFhOVkN0cmxTZWxlY3ROb3RpZnkoKQorICogaXMgQVRUUklCVVRFX0NIQU5HRURfRVZFTlQp
OyBvbm9mZiBjb250cm9scyB3aGV0aGVyIHJlY2VpdmluZyB0aGlzCisgKiB0eXBlIG9mIGV2ZW50
IHNob3VsZCBiZSBlbmFibGVkIChUcnVlKSBvciBkaXNhYmxlZCAoRmFsc2UpLgorICoKKyAqIFJl
dHVybnMgVHJ1ZSBpZiBzdWNjZXNzZnVsLCBvciBGYWxzZSBpZiB0aGUgc2NyZWVuIGlzIG5vdAor
ICogY29udHJvbGxlZCBieSB0aGUgTlZJRElBIGRyaXZlci4KKyAqLworCitCb29sIFhOVkN0cmxT
ZWxlY3ROb3RpZnkoRGlzcGxheSAqZHB5LCBpbnQgc2NyZWVuLCBpbnQgdHlwZSwgQm9vbCBvbm9m
Zik7CisKKy8qCisgKiBYTlZDdHJsU2VsZWN0VGFyZ2V0Tm90aWZ5IC0KKyAqCisgKiBUaGlzIGVu
YWJsZXMvZGlzYWJsZXMgcmVjZWl2aW5nIG9mIE5WLUNPTlRST0wgZXZlbnRzIHRoYXQgaGFwcGVu
IG9uCisgKiB0aGUgc3BlY2lmaWVkIHRhcmdldC4gIFRoZSBub3RpZnlfdHlwZSBzcGVjaWZpZXMg
dGhlIHR5cGUgb2YgZXZlbnQgdG8KKyAqIGVuYWJsZSAoY3VycmVudGx5LCB0aGUgb25seSB0eXBl
IHRoYXQgY2FuIGJlIHJlcXVlc3RlZCBwZXItdGFyZ2V0IHdpdGgKKyAqIFhOVkN0cmxTZWxlY3RU
YXJnZXROb3RpZnkoKSBpcyBUQVJHRVRfQVRUUklCVVRFX0NIQU5HRURfRVZFTlQpOyBvbm9mZgor
ICogY29udHJvbHMgd2hldGhlciByZWNlaXZpbmcgdGhpcyB0eXBlIG9mIGV2ZW50IHNob3VsZCBi
ZSBlbmFibGVkIChUcnVlKQorICogb3IgZGlzYWJsZWQgKEZhbHNlKS4KKyAqCisgKiBSZXR1cm5z
IFRydWUgaWYgc3VjY2Vzc2Z1bCwgb3IgRmFsc2UgaWYgdGhlIHRhcmdldCBpcyBub3QKKyAqIGNv
bnRyb2xsZWQgYnkgdGhlIE5WSURJQSBkcml2ZXIuCisgKi8KKworQm9vbCBYTlZDdHJsU2VsZWN0
VGFyZ2V0Tm90aWZ5KERpc3BsYXkgKmRweSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgdGFyZ2V0X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRh
cmdldF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbm90aWZ5X3R5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQm9vbCBvbm9mZik7CisKKy8qCisgKiBY
TlZDdHJsRXZlbnQgc3RydWN0dXJlCisgKi8KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBpbnQg
dHlwZTsKKyAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKKyAgICBCb29sIHNlbmRfZXZlbnQ7IC8q
IGFsd2F5cyBGQUxTRSwgd2UgZG9uJ3QgYWxsb3cgc2VuZF9ldmVudHMgKi8KKyAgICBEaXNwbGF5
ICpkaXNwbGF5OworICAgIFRpbWUgdGltZTsKKyAgICBpbnQgc2NyZWVuOworICAgIHVuc2lnbmVk
IGludCBkaXNwbGF5X21hc2s7CisgICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZTsKKyAgICBpbnQg
dmFsdWU7Cit9IFhOVkN0cmxBdHRyaWJ1dGVDaGFuZ2VkRXZlbnQ7CisKK3R5cGVkZWYgdW5pb24K
K3sKKyAgICBpbnQgdHlwZTsKKyAgICBYTlZDdHJsQXR0cmlidXRlQ2hhbmdlZEV2ZW50IGF0dHJp
YnV0ZV9jaGFuZ2VkOworICAgIGxvbmcgcGFkWzI0XTsKK30gWE5WQ3RybEV2ZW50OworCisvKgor
ICogWE5WQ3RybEV2ZW50VGFyZ2V0IHN0cnVjdHVyZQorICovCisKK3R5cGVkZWYgc3RydWN0Cit7
CisgICAgaW50IHR5cGU7CisgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CisgICAgQm9vbCBzZW5k
X2V2ZW50OyAvKiBhbHdheXMgRkFMU0UsIHdlIGRvbid0IGFsbG93IHNlbmRfZXZlbnRzICovCisg
ICAgRGlzcGxheSAqZGlzcGxheTsKKyAgICBUaW1lIHRpbWU7CisgICAgaW50IHRhcmdldF90eXBl
OworICAgIGludCB0YXJnZXRfaWQ7CisgICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzazsKKyAg
ICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlOworICAgIGludCB2YWx1ZTsKK30gWE5WQ3RybEF0dHJp
YnV0ZUNoYW5nZWRFdmVudFRhcmdldDsKKwordHlwZWRlZiB1bmlvbgoreworICAgIGludCB0eXBl
OworICAgIFhOVkN0cmxBdHRyaWJ1dGVDaGFuZ2VkRXZlbnRUYXJnZXQgYXR0cmlidXRlX2NoYW5n
ZWQ7CisgICAgbG9uZyBwYWRbMjRdOworfSBYTlZDdHJsRXZlbnRUYXJnZXQ7CisKKy8qCisgKiBY
TlZDdHJsRXZlbnRUYXJnZXRBdmFpbGFiaWxpdHkgc3RydWN0dXJlCisgKi8KKwordHlwZWRlZiBz
dHJ1Y3QKK3sKKyAgICBpbnQgdHlwZTsKKyAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKKyAgICBC
b29sIHNlbmRfZXZlbnQ7IC8qIGFsd2F5cyBGQUxTRSwgd2UgZG9uJ3QgYWxsb3cgc2VuZF9ldmVu
dHMgKi8KKyAgICBEaXNwbGF5ICpkaXNwbGF5OworICAgIFRpbWUgdGltZTsKKyAgICBpbnQgdGFy
Z2V0X3R5cGU7CisgICAgaW50IHRhcmdldF9pZDsKKyAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9t
YXNrOworICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGU7CisgICAgaW50IHZhbHVlOworICAgIEJv
b2wgYXZhaWxhYmlsaXR5OworfSBYTlZDdHJsQXR0cmlidXRlQ2hhbmdlZEV2ZW50VGFyZ2V0QXZh
aWxhYmlsaXR5OworCit0eXBlZGVmIHVuaW9uCit7CisgICAgaW50IHR5cGU7CisgICAgWE5WQ3Ry
bEF0dHJpYnV0ZUNoYW5nZWRFdmVudFRhcmdldEF2YWlsYWJpbGl0eSBhdHRyaWJ1dGVfY2hhbmdl
ZDsKKyAgICBsb25nIHBhZFsyNF07Cit9IFhOVkN0cmxFdmVudFRhcmdldEF2YWlsYWJpbGl0eTsK
KworLyoKKyAqIFhOVkN0cmxTdHJpbmdFdmVudFRhcmdldCBzdHJ1Y3R1cmUKKyAqLworCit0eXBl
ZGVmIHN0cnVjdAoreworICAgIGludCB0eXBlOworICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwor
ICAgIEJvb2wgc2VuZF9ldmVudDsgLyogYWx3YXlzIEZBTFNFLCB3ZSBkb24ndCBhbGxvdyBzZW5k
X2V2ZW50cyAqLworICAgIERpc3BsYXkgKmRpc3BsYXk7CisgICAgVGltZSB0aW1lOworICAgIGlu
dCB0YXJnZXRfdHlwZTsKKyAgICBpbnQgdGFyZ2V0X2lkOworICAgIHVuc2lnbmVkIGludCBkaXNw
bGF5X21hc2s7CisgICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZTsKK30gWE5WQ3RybFN0cmluZ0F0
dHJpYnV0ZUNoYW5nZWRFdmVudFRhcmdldDsKKwordHlwZWRlZiB1bmlvbgoreworICAgIGludCB0
eXBlOworICAgIFhOVkN0cmxTdHJpbmdBdHRyaWJ1dGVDaGFuZ2VkRXZlbnRUYXJnZXQgYXR0cmli
dXRlX2NoYW5nZWQ7CisgICAgbG9uZyBwYWRbMjRdOworfSBYTlZDdHJsU3RyaW5nRXZlbnRUYXJn
ZXQ7CisKKy8qCisgKiBYTlZDdHJsQmluYXJ5RXZlbnRUYXJnZXQgc3RydWN0dXJlCisgKi8KKwor
dHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBpbnQgdHlwZTsKKyAgICB1bnNpZ25lZCBsb25nIHNlcmlh
bDsKKyAgICBCb29sIHNlbmRfZXZlbnQ7IC8qIGFsd2F5cyBGQUxTRSwgd2UgZG9uJ3QgYWxsb3cg
c2VuZF9ldmVudHMgKi8KKyAgICBEaXNwbGF5ICpkaXNwbGF5OworICAgIFRpbWUgdGltZTsKKyAg
ICBpbnQgdGFyZ2V0X3R5cGU7CisgICAgaW50IHRhcmdldF9pZDsKKyAgICB1bnNpZ25lZCBpbnQg
ZGlzcGxheV9tYXNrOworICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGU7Cit9IFhOVkN0cmxCaW5h
cnlBdHRyaWJ1dGVDaGFuZ2VkRXZlbnRUYXJnZXQ7CisKK3R5cGVkZWYgdW5pb24KK3sKKyAgICBp
bnQgdHlwZTsKKyAgICBYTlZDdHJsQmluYXJ5QXR0cmlidXRlQ2hhbmdlZEV2ZW50VGFyZ2V0IGF0
dHJpYnV0ZV9jaGFuZ2VkOworICAgIGxvbmcgcGFkWzI0XTsKK30gWE5WQ3RybEJpbmFyeUV2ZW50
VGFyZ2V0OworCisjaWYgZGVmaW5lZCBfX2NwbHVzcGx1cworfSAvKiBleHRlcm4gIkMiICovCisj
ZW5kaWYKKworI2VuZGlmIC8qIF9fTlZDVFJMTElCX0ggKi8KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9saWJYTlZDdHJsL1JFQURNRS5hbmdsZQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbGliWE5WQ3Ry
bC9SRUFETUUuYW5nbGUJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0cmwvUkVBRE1FLmFuZ2xlCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTQgQEAKK05hbWU6IE5WaWRpYSBDb250cm9sIFggRXh0ZW5zaW9uIExpYnJhcnkK
K1Nob3J0IE5hbWU6IGxpYlhOVkN0cmwKK1VSTDogaHR0cDovL2NnaXQuZnJlZWRlc2t0b3Aub3Jn
L35hcGxhdHRuZXIvbnZpZGlhLXNldHRpbmdzLworVmVyc2lvbjogdW5rbm93bgorRGF0ZTogMjAw
OAorTGljZW5zZTogTUlUCitTZWN1cml0eSBDcml0aWNhbDogbm8KKworRGVzY3JpcHRpb246CitU
aGlzIHBhY2thZ2UgcHJvdmlkZXMgYWNjZXNzIHRvIE5WaWRpYSBDb250cm9sIFggRXh0ZW5zaW9u
LiBJdCBpcyB1c2VkIHRvIGRldGVybWluZSB0aGUgdmVyc2lvbiBvZiB0aGUgTlZJRElBIGRyaXZl
ciBpbiB1c2UuCisKK1RoZSBjdXJyZW50IHZlcnNpb24gaXMgcHVsbGVkIGZyb20gbnZpZGlhLXNl
dHRpbmdzLTMwMi4xNy4KKworTG9jYWwgTW9kaWZpY2F0aW9uczoKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9saWJYTlZDdHJsL2xpYlhOVkN0cmwuZ3lwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9saWJY
TlZDdHJsL2xpYlhOVkN0cmwuZ3lwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9saWJYTlZDdHJsL2xpYlhOVkN0cmwuZ3lwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTggQEAKKyMgQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworeworICAgICd0YXJnZXRzJzoKKyAgICBbewor
ICAgICAgICAndGFyZ2V0X25hbWUnOiAnbGliWE5WQ3RybCcsCisgICAgICAgICd0eXBlJzogJ3N0
YXRpY19saWJyYXJ5JywKKyAgICAgICAgJ3NvdXJjZXMnOgorICAgICAgICBbCisgICAgICAgICAg
ICAnTlZDdHJsLmMnLAorICAgICAgICAgICAgJ05WQ3RybC5oJywKKyAgICAgICAgICAgICdOVkN0
cmxMaWIuaCcsCisgICAgICAgICAgICAnbnZfY29udHJvbC5oJywKKyAgICAgICAgXSwKKyAgICB9
XSwKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9saWJY
TlZDdHJsL252X2NvbnRyb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGhpcmRfcGFydHkvbGliWE5WQ3RybC9udl9jb250cm9sLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0cmwvbnZf
Y29udHJvbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjUyIEBACisvKgorICogQ29weXJp
Z2h0IChjKSAyMDA4IE5WSURJQSwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhl
cmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBj
b3B5CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmls
ZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAorICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQg
cmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cworICog
dG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNl
bnNlLCBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p
dCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28s
IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBj
b3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhl
IG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBz
dWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZU
V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF
WFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAq
IEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERB
TUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09O
VFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisgKiBPVVQgT0YgT1IgSU4g
Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdT
IElOIFRIRQorICogU09GVFdBUkUuCisgKgorICoKKyAqIE5WLUNPTlRST0wgUHJvdG9jb2wgVmVy
c2lvbiBIaXN0b3J5CisgKgorICogMS4wIC0gMS41ICAgTlZJRElBIEludGVybmFsIGRldmVsb3Bt
ZW50IHZlcnNpb25zCisgKiAxLjYgICAgICAgICBJbml0aWFsIHB1YmxpYyB2ZXJzaW9uCisgKiAx
LjcgICAgICAgICBBZGRlZCBRdWVyeUJpbmFyeURhdGEgcmVxdWVzdAorICogMS44ICAgICAgICAg
QWRkZWQgVGFyZ2V0VHlwZXMKKyAqIDEuOSAgICAgICAgIEFkZGVkIFF1ZXJ5VGFyZ2V0Q291bnQg
cmVxdWVzdAorICogMS4xMCAgICAgICAgRml4ZWQgdGFyZ2V0IHR5cGUvaWQgYnl0ZSBvcmRlcmlu
ZyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoCisgKiAgICAgICAgICAgICBwcmUtMS44IE5WLUNPTlRS
T0wgY2xpZW50cworICogMS4xMSAgICAgICAgTlZJRElBIEludGVybmFsIGRldmVsb3BtZW50IHZl
cnNpb24KKyAqIDEuMTIgICAgICAgIEFkZGVkIFN0cmluZ09wZXJhdGlvbiByZXF1ZXN0CisgKiAx
LjEzICAgICAgICBOVklESUEgSW50ZXJuYWwgZGV2ZWxvcG1lbnQgdmVyc2lvbgorICogMS4xNCAg
ICAgICAgRml4ZWQgYW4gTlZfQ1RSTF9CSU5BUllfREFUQV9NT0RFTElORVMgZG91YmxlIHNjYW4g
bW9kZWxpbmUKKyAqICAgICAgICAgICAgIHJlcG9ydGluZyBidWcgKHZzeW5jc3RhcnQsIHZzeW5j
ZW5kLCBhbmQgdnRvdGFsIHdlcmUgaW5jb3JyZWN0bHkKKyAqICAgICAgICAgICAgIGRvdWJsZWQp
CisgKiAxLjE1ICAgICAgICBBZGRlZCBBVkFJTEFCSUxJVFlfVEFSR0VUX0FUVFJJQlVURV9DSEFO
R0VEX0VWRU5UCisgKiAxLjE2ICAgICAgICBBZGRlZCBUQVJHRVRfU1RSSU5HX0FUVFJJQlVURV9D
SEFOR0VEX0VWRU5UCisgKiAxLjE3ICAgICAgICBBZGRlZCBUQVJHRVRfQklOQVJZX0FUVFJJQlVU
RV9DSEFOR0VEX0VWRU5UCisgKiAxLjE4ICAgICAgICBVcGRhdGVkIFF1ZXJ5VGFyZ2V0Q291bnQg
dG8gcmV0dXJuIGEgY291bnQgb2YgMCwgcmF0aGVyIHRoYW4KKyAqICAgICAgICAgICAgIEJhZE1h
dGNoLCBpZiBhbiB1bmtub3duIFRhcmdldFR5cGUgaXMgc3BlY2lmaWVkCisgKiAxLjE5ICAgICAg
ICBBZGRlZCBUYXJnZXRUeXBlIHN1cHBvcnQgZm9yIFNldEF0dHJpYnV0ZUFuZEdldFN0YXR1cyBh
bmQKKyAqICAgICAgICAgICAgIFNldFN0cmluZ0F0dHJpYnV0ZSByZXF1ZXN0cworICogMS4yMCAg
ICAgICAgQWRkZWQgQ09PTEVSIFRhcmdldFR5cGUKKyAqIDEuMjEgICAgICAgIEFkZGVkIGluaXRp
YWwgNjQtYml0IGludGVnZXIgYXR0cmlidXRlIHN1cHBvcnQgKHJlYWQtb25seSkKKyAqIDEuMjIg
ICAgICAgIEFkZGVkIFhfbnZDdHJsUXVlcnlWYWxpZFN0cmluZ0F0dHJpYnV0ZVZhbHVlcyB0byBj
aGVjaworICogICAgICAgICAgICAgc3RyaW5nIGF0dHJpYnV0ZSBwZXJtaXNzaW9ucy4KKyAqIDEu
MjMgICAgICAgIEFkZGVkIFNFTlNPUiBUYXJnZXRUeXBlCisgKiAxLjI0ICAgICAgICBGaXhlZCBh
IGJ1ZyB3aGVyZSBTTElfTU9TQUlDX01PREVfQVZBSUxBQkxFIGF0dHJpYnV0ZSB3b3VsZAorICog
ICAgICAgICAgICAgcmVwb3J0IGZhbHNlIHBvc2l0aXZlcyB2aWEgdGhlIEdQVSBhbmQgWCBzY3Jl
ZW4gdGFyZ2V0IHR5cGVzCisgKiAxLjI1ICAgICAgICBBZGRlZCAzRF9WSVNJT05fUFJPX1RSQU5T
Q0VJVkVSIFRhcmdldFR5cGUKKyAqIDEuMjYgICAgICAgIEFkZGVkIFhOVkNUUkxRdWVyeVhYWEF0
dHJpYnV0ZVBlcm1pc3Npb25zLgorICogMS4yNyAgICAgICAgQWRkZWQgRElTUExBWSBUYXJnZXRU
eXBlCisgKiAxLjI4ICAgICAgICBBZGRlZCBOVl9DVFJMX0NVUlJFTlRfTUVUQU1PREVfSUQ6IGNs
aWVudHMgc2hvdWxkIHVzZSB0aGlzCisgKiAgICAgICAgICAgICBhdHRyaWJ1dGUgdG8gc3dpdGNo
IE1ldGFNb2RlcywgcmF0aGVyIHRoYW4gcGFzcyB0aGUgTWV0YU1vZGUgSUQKKyAqICAgICAgICAg
ICAgIHRocm91Z2ggdGhlIFJSU2V0U2NyZWVuQ29uZmlnIHByb3RvY29sIHJlcXVlc3QuCisgKi8K
KworI2lmbmRlZiBfX05WQ09OVFJPTF9ICisjZGVmaW5lIF9fTlZDT05UUk9MX0gKKworI2RlZmlu
ZSBOVl9DT05UUk9MX0VSUk9SUyAwCisjZGVmaW5lIE5WX0NPTlRST0xfRVZFTlRTIDUKKyNkZWZp
bmUgTlZfQ09OVFJPTF9OQU1FICJOVi1DT05UUk9MIgorCisjZGVmaW5lIE5WX0NPTlRST0xfTUFK
T1IgMQorI2RlZmluZSBOVl9DT05UUk9MX01JTk9SIDI4CisKKyNkZWZpbmUgWF9udkN0cmxRdWVy
eUV4dGVuc2lvbiAwCisjZGVmaW5lIFhfbnZDdHJsSXNOdiAxCisjZGVmaW5lIFhfbnZDdHJsUXVl
cnlBdHRyaWJ1dGUgMgorI2RlZmluZSBYX252Q3RybFNldEF0dHJpYnV0ZSAzCisjZGVmaW5lIFhf
bnZDdHJsUXVlcnlTdHJpbmdBdHRyaWJ1dGUgNAorI2RlZmluZSBYX252Q3RybFF1ZXJ5VmFsaWRB
dHRyaWJ1dGVWYWx1ZXMgNQorI2RlZmluZSBYX252Q3RybFNlbGVjdE5vdGlmeSA2CisjZGVmaW5l
IFhfbnZDdHJsU2V0R3ZvQ29sb3JDb252ZXJzaW9uRGVwcmVjYXRlZCA3CisjZGVmaW5lIFhfbnZD
dHJsUXVlcnlHdm9Db2xvckNvbnZlcnNpb25EZXByZWNhdGVkIDgKKyNkZWZpbmUgWF9udkN0cmxT
ZXRTdHJpbmdBdHRyaWJ1dGUgOQorLyogU1RVQiBYX252Q3RybFF1ZXJ5RERDQ0lMdXRTaXplICAg
ICAgICAgICAgICAgICAgIDEwICovCisvKiBTVFVCIFhfbnZDdHJsUXVlcnlERENDSVNpbmdsZVBv
aW50THV0T3BlcmF0aW9uICAgMTEgKi8KKy8qIFNUVUIgWF9udkN0cmxTZXRERENDSVNpbmdsZVBv
aW50THV0T3BlcmF0aW9uICAgICAxMiAqLworLyogU1RVQiBYX252Q3RybFF1ZXJ5RERDQ0lCbG9j
a0x1dE9wZXJhdGlvbiAgICAgICAgIDEzICovCisvKiBTVFVCIFhfbnZDdHJsU2V0RERDQ0lCbG9j
a0x1dE9wZXJhdGlvbiAgICAgICAgICAgMTQgKi8KKy8qIFNUVUIgWF9udkN0cmxTZXRERENDSVJl
bW90ZVByb2NlZHVyZUNhbGwgICAgICAgICAxNSAqLworLyogU1RVQiBYX252Q3RybFF1ZXJ5RERD
Q0lEaXNwbGF5Q29udHJvbGxlclR5cGUgICAgIDE2ICovCisvKiBTVFVCIFhfbnZDdHJsUXVlcnlE
RENDSUNhcGFiaWxpdGllcyAgICAgICAgICAgICAgMTcgKi8KKy8qIFNUVUIgWF9udkN0cmxRdWVy
eUREQ0NJVGltaW5nUmVwb3J0ICAgICAgICAgICAgICAxOCAqLworI2RlZmluZSBYX252Q3RybFNl
dEF0dHJpYnV0ZUFuZEdldFN0YXR1cyAxOQorI2RlZmluZSBYX252Q3RybFF1ZXJ5QmluYXJ5RGF0
YSAyMAorI2RlZmluZSBYX252Q3RybFNldEd2b0NvbG9yQ29udmVyc2lvbiAyMQorI2RlZmluZSBY
X252Q3RybFF1ZXJ5R3ZvQ29sb3JDb252ZXJzaW9uIDIyCisjZGVmaW5lIFhfbnZDdHJsU2VsZWN0
VGFyZ2V0Tm90aWZ5IDIzCisjZGVmaW5lIFhfbnZDdHJsUXVlcnlUYXJnZXRDb3VudCAyNAorI2Rl
ZmluZSBYX252Q3RybFN0cmluZ09wZXJhdGlvbiAyNQorI2RlZmluZSBYX252Q3RybFF1ZXJ5VmFs
aWRBdHRyaWJ1dGVWYWx1ZXM2NCAyNgorI2RlZmluZSBYX252Q3RybFF1ZXJ5QXR0cmlidXRlNjQg
MjcKKyNkZWZpbmUgWF9udkN0cmxRdWVyeVZhbGlkU3RyaW5nQXR0cmlidXRlVmFsdWVzIDI4Cisj
ZGVmaW5lIFhfbnZDdHJsUXVlcnlBdHRyaWJ1dGVQZXJtaXNzaW9ucyAyOQorI2RlZmluZSBYX252
Q3RybFF1ZXJ5U3RyaW5nQXR0cmlidXRlUGVybWlzc2lvbnMgMzAKKyNkZWZpbmUgWF9udkN0cmxR
dWVyeUJpbmFyeURhdGFBdHRyaWJ1dGVQZXJtaXNzaW9ucyAzMQorI2RlZmluZSBYX252Q3RybFF1
ZXJ5U3RyaW5nT3BlcmF0aW9uQXR0cmlidXRlUGVybWlzc2lvbnMgMzIKKworI2RlZmluZSBYX252
Q3RybExhc3RSZXF1ZXN0IChYX252Q3RybFF1ZXJ5U3RyaW5nT3BlcmF0aW9uQXR0cmlidXRlUGVy
bWlzc2lvbnMgKyAxKQorCisvKiBEZWZpbmUgMzIgYml0IGZsb2F0cyAqLwordHlwZWRlZiBmbG9h
dCBGTE9BVDMyOworI2lmbmRlZiBGMzIKKyNkZWZpbmUgRjMyCisjZW5kaWYKKwordHlwZWRlZiBz
dHJ1Y3QKK3sKKyAgICBDQVJEOCByZXFUeXBlOworICAgIENBUkQ4IG52UmVxVHlwZTsKKyAgICBD
QVJEMTYgbGVuZ3RoIEIxNjsKK30geG52Q3RybFF1ZXJ5RXh0ZW5zaW9uUmVxOworI2RlZmluZSBz
el94bnZDdHJsUXVlcnlFeHRlbnNpb25SZXEgNAorCit0eXBlZGVmIHN0cnVjdAoreworICAgIEJZ
VEUgdHlwZTsgLyogWF9SZXBseSAqLworICAgIENBUkQ4IHBhZGIxOworICAgIENBUkQxNiBzZXF1
ZW5jZU51bWJlciBCMTY7CisgICAgQ0FSRDMyIGxlbmd0aCBCMzI7CisgICAgQ0FSRDE2IG1ham9y
IEIxNjsKKyAgICBDQVJEMTYgbWlub3IgQjE2OworICAgIENBUkQzMiBwYWRsNCBCMzI7CisgICAg
Q0FSRDMyIHBhZGw1IEIzMjsKKyAgICBDQVJEMzIgcGFkbDYgQjMyOworICAgIENBUkQzMiBwYWRs
NyBCMzI7CisgICAgQ0FSRDMyIHBhZGw4IEIzMjsKK30geG52Q3RybFF1ZXJ5RXh0ZW5zaW9uUmVw
bHk7CisjZGVmaW5lIHN6X3hudkN0cmxRdWVyeUV4dGVuc2lvblJlcGx5IDMyCisKK3R5cGVkZWYg
c3RydWN0Cit7CisgICAgQ0FSRDggcmVxVHlwZTsKKyAgICBDQVJEOCBudlJlcVR5cGU7CisgICAg
Q0FSRDE2IGxlbmd0aCBCMTY7CisgICAgQ0FSRDMyIHNjcmVlbiBCMzI7Cit9IHhudkN0cmxJc052
UmVxOworI2RlZmluZSBzel94bnZDdHJsSXNOdlJlcSA4CisKK3R5cGVkZWYgc3RydWN0Cit7Cisg
ICAgQllURSB0eXBlOyAvKiBYX1JlcGx5ICovCisgICAgQ0FSRDggcGFkYjE7CisgICAgQ0FSRDE2
IHNlcXVlbmNlTnVtYmVyIEIxNjsKKyAgICBDQVJEMzIgbGVuZ3RoIEIzMjsKKyAgICBDQVJEMzIg
aXNudiBCMzI7CisgICAgQ0FSRDMyIHBhZGw0IEIzMjsKKyAgICBDQVJEMzIgcGFkbDUgQjMyOwor
ICAgIENBUkQzMiBwYWRsNiBCMzI7CisgICAgQ0FSRDMyIHBhZGw3IEIzMjsKKyAgICBDQVJEMzIg
cGFkbDggQjMyOworfSB4bnZDdHJsSXNOdlJlcGx5OworI2RlZmluZSBzel94bnZDdHJsSXNOdlJl
cGx5IDMyCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgQ0FSRDggcmVxVHlwZTsKKyAgICBDQVJE
OCBudlJlcVR5cGU7CisgICAgQ0FSRDE2IGxlbmd0aCBCMTY7CisgICAgQ0FSRDMyIHRhcmdldF90
eXBlIEIzMjsKK30geG52Q3RybFF1ZXJ5VGFyZ2V0Q291bnRSZXE7CisjZGVmaW5lIHN6X3hudkN0
cmxRdWVyeVRhcmdldENvdW50UmVxIDgKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBCWVRFIHR5
cGU7IC8qIFhfUmVwbHkgKi8KKyAgICBDQVJEOCBwYWRiMTsKKyAgICBDQVJEMTYgc2VxdWVuY2VO
dW1iZXIgQjE2OworICAgIENBUkQzMiBsZW5ndGggQjMyOworICAgIENBUkQzMiBjb3VudCBCMzI7
CisgICAgQ0FSRDMyIHBhZGw0IEIzMjsKKyAgICBDQVJEMzIgcGFkbDUgQjMyOworICAgIENBUkQz
MiBwYWRsNiBCMzI7CisgICAgQ0FSRDMyIHBhZGw3IEIzMjsKKyAgICBDQVJEMzIgcGFkbDggQjMy
OworfSB4bnZDdHJsUXVlcnlUYXJnZXRDb3VudFJlcGx5OworI2RlZmluZSBzel94bnZDdHJsUXVl
cnlUYXJnZXRDb3VudFJlcGx5IDMyCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgQ0FSRDggcmVx
VHlwZTsKKyAgICBDQVJEOCBudlJlcVR5cGU7CisgICAgQ0FSRDE2IGxlbmd0aCBCMTY7CisgICAg
Q0FSRDE2IHRhcmdldF9pZCBCMTY7ICAgLyogWCBzY3JlZW4gbnVtYmVyIG9yIEdQVSBudW1iZXIg
Ki8KKyAgICBDQVJEMTYgdGFyZ2V0X3R5cGUgQjE2OyAvKiBYIHNjcmVlbiBvciBHUFUgKi8KKyAg
ICBDQVJEMzIgZGlzcGxheV9tYXNrIEIzMjsKKyAgICBDQVJEMzIgYXR0cmlidXRlIEIzMjsKK30g
eG52Q3RybFF1ZXJ5QXR0cmlidXRlUmVxOworI2RlZmluZSBzel94bnZDdHJsUXVlcnlBdHRyaWJ1
dGVSZXEgMTYKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBCWVRFIHR5cGU7CisgICAgQllURSBw
YWQwOworICAgIENBUkQxNiBzZXF1ZW5jZU51bWJlciBCMTY7CisgICAgQ0FSRDMyIGxlbmd0aCBC
MzI7CisgICAgQ0FSRDMyIGZsYWdzIEIzMjsKKyAgICBJTlQzMiB2YWx1ZSBCMzI7CisgICAgQ0FS
RDMyIHBhZDQgQjMyOworICAgIENBUkQzMiBwYWQ1IEIzMjsKKyAgICBDQVJEMzIgcGFkNiBCMzI7
CisgICAgQ0FSRDMyIHBhZDcgQjMyOworfSB4bnZDdHJsUXVlcnlBdHRyaWJ1dGVSZXBseTsKKyNk
ZWZpbmUgc3pfeG52Q3RybFF1ZXJ5QXR0cmlidXRlUmVwbHkgMzIKKwordHlwZWRlZiBzdHJ1Y3QK
K3sKKyAgICBCWVRFIHR5cGU7CisgICAgQllURSBwYWQwOworICAgIENBUkQxNiBzZXF1ZW5jZU51
bWJlciBCMTY7CisgICAgQ0FSRDMyIGxlbmd0aCBCMzI7CisgICAgQ0FSRDMyIGZsYWdzIEIzMjsK
KyAgICBDQVJEMzIgcGFkMyBCMzI7CisgICAgaW50NjRfdCB2YWx1ZV82NDsKKyAgICBDQVJEMzIg
cGFkNiBCMzI7CisgICAgQ0FSRDMyIHBhZDcgQjMyOworfSB4bnZDdHJsUXVlcnlBdHRyaWJ1dGU2
NFJlcGx5OworI2RlZmluZSBzel94bnZDdHJsUXVlcnlBdHRyaWJ1dGU2NFJlcGx5IDMyCisKK3R5
cGVkZWYgc3RydWN0Cit7CisgICAgQ0FSRDggcmVxVHlwZTsKKyAgICBDQVJEOCBudlJlcVR5cGU7
CisgICAgQ0FSRDE2IGxlbmd0aCBCMTY7CisgICAgQ0FSRDE2IHRhcmdldF9pZCBCMTY7CisgICAg
Q0FSRDE2IHRhcmdldF90eXBlIEIxNjsKKyAgICBDQVJEMzIgZGlzcGxheV9tYXNrIEIzMjsKKyAg
ICBDQVJEMzIgYXR0cmlidXRlIEIzMjsKKyAgICBJTlQzMiB2YWx1ZSBCMzI7Cit9IHhudkN0cmxT
ZXRBdHRyaWJ1dGVSZXE7CisjZGVmaW5lIHN6X3hudkN0cmxTZXRBdHRyaWJ1dGVSZXEgMjAKKwor
dHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBDQVJEOCByZXFUeXBlOworICAgIENBUkQ4IG52UmVxVHlw
ZTsKKyAgICBDQVJEMTYgbGVuZ3RoIEIxNjsKKyAgICBDQVJEMTYgdGFyZ2V0X2lkIEIxNjsKKyAg
ICBDQVJEMTYgdGFyZ2V0X3R5cGUgQjE2OworICAgIENBUkQzMiBkaXNwbGF5X21hc2sgQjMyOwor
ICAgIENBUkQzMiBhdHRyaWJ1dGUgQjMyOworICAgIElOVDMyIHZhbHVlIEIzMjsKK30geG52Q3Ry
bFNldEF0dHJpYnV0ZUFuZEdldFN0YXR1c1JlcTsKKyNkZWZpbmUgc3pfeG52Q3RybFNldEF0dHJp
YnV0ZUFuZEdldFN0YXR1c1JlcSAyMAorCit0eXBlZGVmIHN0cnVjdAoreworICAgIEJZVEUgdHlw
ZTsKKyAgICBCWVRFIHBhZDA7CisgICAgQ0FSRDE2IHNlcXVlbmNlTnVtYmVyIEIxNjsKKyAgICBD
QVJEMzIgbGVuZ3RoIEIzMjsKKyAgICBDQVJEMzIgZmxhZ3MgQjMyOworICAgIENBUkQzMiBwYWQz
IEIzMjsKKyAgICBDQVJEMzIgcGFkNCBCMzI7CisgICAgQ0FSRDMyIHBhZDUgQjMyOworICAgIENB
UkQzMiBwYWQ2IEIzMjsKKyAgICBDQVJEMzIgcGFkNyBCMzI7Cit9IHhudkN0cmxTZXRBdHRyaWJ1
dGVBbmRHZXRTdGF0dXNSZXBseTsKKyNkZWZpbmUgc3pfeG52Q3RybFNldEF0dHJpYnV0ZUFuZEdl
dFN0YXR1c1JlcGx5IDMyCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgQ0FSRDggcmVxVHlwZTsK
KyAgICBDQVJEOCBudlJlcVR5cGU7CisgICAgQ0FSRDE2IGxlbmd0aCBCMTY7CisgICAgQ0FSRDE2
IHRhcmdldF9pZCBCMTY7ICAgLyogWCBzY3JlZW4gbnVtYmVyIG9yIEdQVSBudW1iZXIgKi8KKyAg
ICBDQVJEMTYgdGFyZ2V0X3R5cGUgQjE2OyAvKiBYIHNjcmVlbiBvciBHUFUgKi8KKyAgICBDQVJE
MzIgZGlzcGxheV9tYXNrIEIzMjsKKyAgICBDQVJEMzIgYXR0cmlidXRlIEIzMjsKK30geG52Q3Ry
bFF1ZXJ5U3RyaW5nQXR0cmlidXRlUmVxOworI2RlZmluZSBzel94bnZDdHJsUXVlcnlTdHJpbmdB
dHRyaWJ1dGVSZXEgMTYKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBCWVRFIHR5cGU7CisgICAg
QllURSBwYWQwOworICAgIENBUkQxNiBzZXF1ZW5jZU51bWJlciBCMTY7CisgICAgQ0FSRDMyIGxl
bmd0aCBCMzI7CisgICAgQ0FSRDMyIGZsYWdzIEIzMjsKKyAgICBDQVJEMzIgbiBCMzI7IC8qIExl
bmd0aCBvZiBzdHJpbmcgKi8KKyAgICBDQVJEMzIgcGFkNCBCMzI7CisgICAgQ0FSRDMyIHBhZDUg
QjMyOworICAgIENBUkQzMiBwYWQ2IEIzMjsKKyAgICBDQVJEMzIgcGFkNyBCMzI7Cit9IHhudkN0
cmxRdWVyeVN0cmluZ0F0dHJpYnV0ZVJlcGx5OworI2RlZmluZSBzel94bnZDdHJsUXVlcnlTdHJp
bmdBdHRyaWJ1dGVSZXBseSAzMgorCit0eXBlZGVmIHN0cnVjdAoreworICAgIENBUkQ4IHJlcVR5
cGU7CisgICAgQ0FSRDggbnZSZXFUeXBlOworICAgIENBUkQxNiBsZW5ndGggQjE2OworICAgIENB
UkQxNiB0YXJnZXRfaWQgQjE2OworICAgIENBUkQxNiB0YXJnZXRfdHlwZSBCMTY7CisgICAgQ0FS
RDMyIGRpc3BsYXlfbWFzayBCMzI7CisgICAgQ0FSRDMyIGF0dHJpYnV0ZSBCMzI7CisgICAgQ0FS
RDMyIG51bV9ieXRlcyBCMzI7Cit9IHhudkN0cmxTZXRTdHJpbmdBdHRyaWJ1dGVSZXE7CisjZGVm
aW5lIHN6X3hudkN0cmxTZXRTdHJpbmdBdHRyaWJ1dGVSZXEgMjAKKwordHlwZWRlZiBzdHJ1Y3QK
K3sKKyAgICBCWVRFIHR5cGU7CisgICAgQllURSBwYWQwOworICAgIENBUkQxNiBzZXF1ZW5jZU51
bWJlciBCMTY7CisgICAgQ0FSRDMyIGxlbmd0aCBCMzI7CisgICAgQ0FSRDMyIGZsYWdzIEIzMjsK
KyAgICBDQVJEMzIgcGFkMyBCMzI7CisgICAgQ0FSRDMyIHBhZDQgQjMyOworICAgIENBUkQzMiBw
YWQ1IEIzMjsKKyAgICBDQVJEMzIgcGFkNiBCMzI7CisgICAgQ0FSRDMyIHBhZDcgQjMyOworfSB4
bnZDdHJsU2V0U3RyaW5nQXR0cmlidXRlUmVwbHk7CisjZGVmaW5lIHN6X3hudkN0cmxTZXRTdHJp
bmdBdHRyaWJ1dGVSZXBseSAzMgorCit0eXBlZGVmIHN0cnVjdAoreworICAgIENBUkQ4IHJlcVR5
cGU7CisgICAgQ0FSRDggbnZSZXFUeXBlOworICAgIENBUkQxNiBsZW5ndGggQjE2OworICAgIENB
UkQxNiB0YXJnZXRfaWQgQjE2OyAgIC8qIFggc2NyZWVuIG51bWJlciBvciBHUFUgbnVtYmVyICov
CisgICAgQ0FSRDE2IHRhcmdldF90eXBlIEIxNjsgLyogWCBzY3JlZW4gb3IgR1BVICovCisgICAg
Q0FSRDMyIGRpc3BsYXlfbWFzayBCMzI7CisgICAgQ0FSRDMyIGF0dHJpYnV0ZSBCMzI7Cit9IHhu
dkN0cmxRdWVyeVZhbGlkQXR0cmlidXRlVmFsdWVzUmVxOworI2RlZmluZSBzel94bnZDdHJsUXVl
cnlWYWxpZEF0dHJpYnV0ZVZhbHVlc1JlcSAxNgorCit0eXBlZGVmIHN0cnVjdAoreworICAgIEJZ
VEUgdHlwZTsKKyAgICBCWVRFIHBhZDA7CisgICAgQ0FSRDE2IHNlcXVlbmNlTnVtYmVyIEIxNjsK
KyAgICBDQVJEMzIgbGVuZ3RoIEIzMjsKKyAgICBDQVJEMzIgZmxhZ3MgQjMyOworICAgIElOVDMy
IGF0dHJfdHlwZSBCMzI7CisgICAgSU5UMzIgbWluIEIzMjsKKyAgICBJTlQzMiBtYXggQjMyOwor
ICAgIENBUkQzMiBiaXRzIEIzMjsKKyAgICBDQVJEMzIgcGVybXMgQjMyOworfSB4bnZDdHJsUXVl
cnlWYWxpZEF0dHJpYnV0ZVZhbHVlc1JlcGx5OworI2RlZmluZSBzel94bnZDdHJsUXVlcnlWYWxp
ZEF0dHJpYnV0ZVZhbHVlc1JlcGx5IDMyCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgQllURSB0
eXBlOworICAgIEJZVEUgcGFkMDsKKyAgICBDQVJEMTYgc2VxdWVuY2VOdW1iZXIgQjE2OworICAg
IENBUkQzMiBsZW5ndGggQjMyOworICAgIENBUkQzMiBmbGFncyBCMzI7CisgICAgSU5UMzIgYXR0
cl90eXBlIEIzMjsKKyAgICBpbnQ2NF90IG1pbl82NDsKKyAgICBpbnQ2NF90IG1heF82NDsKKyAg
ICBDQVJENjQgYml0c182NDsKKyAgICBDQVJEMzIgcGVybXMgQjMyOworICAgIENBUkQzMiBwYWQx
IEIzMjsKK30geG52Q3RybFF1ZXJ5VmFsaWRBdHRyaWJ1dGVWYWx1ZXM2NFJlcGx5OworI2RlZmlu
ZSBzel94bnZDdHJsUXVlcnlWYWxpZEF0dHJpYnV0ZVZhbHVlczY0UmVwbHkgNDgKKyNkZWZpbmUg
c3pfeG52Q3RybFF1ZXJ5VmFsaWRBdHRyaWJ1dGVWYWx1ZXM2NFJlcGx5X2V4dHJhICgoNDggLSAz
MikgPj4gMikKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBDQVJEOCByZXFUeXBlOworICAgIENB
UkQ4IG52UmVxVHlwZTsKKyAgICBDQVJEMTYgbGVuZ3RoIEIxNjsKKyAgICBDQVJEMzIgYXR0cmli
dXRlIEIzMjsKK30geG52Q3RybFF1ZXJ5QXR0cmlidXRlUGVybWlzc2lvbnNSZXE7CisjZGVmaW5l
IHN6X3hudkN0cmxRdWVyeUF0dHJpYnV0ZVBlcm1pc3Npb25zUmVxIDgKKwordHlwZWRlZiBzdHJ1
Y3QKK3sKKyAgICBCWVRFIHR5cGU7CisgICAgQllURSBwYWQwOworICAgIENBUkQxNiBzZXF1ZW5j
ZU51bWJlciBCMTY7CisgICAgQ0FSRDMyIGxlbmd0aCBCMzI7CisgICAgQ0FSRDMyIGZsYWdzIEIz
MjsKKyAgICBJTlQzMiBhdHRyX3R5cGUgQjMyOworICAgIENBUkQzMiBwZXJtcyBCMzI7CisgICAg
Q0FSRDMyIHBhZDUgQjMyOworICAgIENBUkQzMiBwYWQ2IEIzMjsKKyAgICBDQVJEMzIgcGFkNyBC
MzI7CisgICAgQ0FSRDMyIHBhZDggQjMyOworfSB4bnZDdHJsUXVlcnlBdHRyaWJ1dGVQZXJtaXNz
aW9uc1JlcGx5OworI2RlZmluZSBzel94bnZDdHJsUXVlcnlBdHRyaWJ1dGVQZXJtaXNzaW9uc1Jl
cGx5IDMyCisKKy8qIFNldCBHVk8gQ29sb3IgQ29udmVyc2lvbiByZXF1ZXN0IChkZXByZWNhdGVk
KSAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBDQVJEOCByZXFUeXBlOworICAgIENBUkQ4IG52
UmVxVHlwZTsKKyAgICBDQVJEMTYgbGVuZ3RoIEIxNjsKKyAgICBDQVJEMzIgc2NyZWVuIEIzMjsK
KyAgICBGTE9BVDMyIHJvdzFfY29sMSBGMzI7CisgICAgRkxPQVQzMiByb3cxX2NvbDIgRjMyOwor
ICAgIEZMT0FUMzIgcm93MV9jb2wzIEYzMjsKKyAgICBGTE9BVDMyIHJvdzFfY29sNCBGMzI7Cisg
ICAgRkxPQVQzMiByb3cyX2NvbDEgRjMyOworICAgIEZMT0FUMzIgcm93Ml9jb2wyIEYzMjsKKyAg
ICBGTE9BVDMyIHJvdzJfY29sMyBGMzI7CisgICAgRkxPQVQzMiByb3cyX2NvbDQgRjMyOworICAg
IEZMT0FUMzIgcm93M19jb2wxIEYzMjsKKyAgICBGTE9BVDMyIHJvdzNfY29sMiBGMzI7CisgICAg
RkxPQVQzMiByb3czX2NvbDMgRjMyOworICAgIEZMT0FUMzIgcm93M19jb2w0IEYzMjsKK30geG52
Q3RybFNldEd2b0NvbG9yQ29udmVyc2lvbkRlcHJlY2F0ZWRSZXE7CisjZGVmaW5lIHN6X3hudkN0
cmxTZXRHdm9Db2xvckNvbnZlcnNpb25EZXByZWNhdGVkUmVxIDU2CisKKy8qIFF1ZXJ5IEdWTyBD
b2xvciBDb252ZXJzaW9uIHJlcXVlc3QgKGRlcHJlY2F0ZWQpICovCit0eXBlZGVmIHN0cnVjdAor
eworICAgIENBUkQ4IHJlcVR5cGU7CisgICAgQ0FSRDggbnZSZXFUeXBlOworICAgIENBUkQxNiBs
ZW5ndGggQjE2OworICAgIENBUkQzMiBzY3JlZW4gQjMyOworfSB4bnZDdHJsUXVlcnlHdm9Db2xv
ckNvbnZlcnNpb25EZXByZWNhdGVkUmVxOworI2RlZmluZSBzel94bnZDdHJsUXVlcnlHdm9Db2xv
ckNvbnZlcnNpb25EZXByZWNhdGVkUmVxIDgKKworLyogUXVlcnkgR1ZPIENvbG9yIENvbnZlcnNp
b24gcmVwbHkgKGRlcHJlY2F0ZWQpICovCit0eXBlZGVmIHN0cnVjdAoreworICAgIEJZVEUgdHlw
ZTsgLyogWF9SZXBseSAqLworICAgIEJZVEUgcGFkMDsKKyAgICBDQVJEMTYgc2VxdWVuY2VOdW1i
ZXIgQjE2OworICAgIENBUkQzMiBsZW5ndGggQjMyOworICAgIENBUkQzMiBwYWQzIEIzMjsKKyAg
ICBDQVJEMzIgcGFkNCBCMzI7CisgICAgQ0FSRDMyIHBhZDUgQjMyOworICAgIENBUkQzMiBwYWQ2
IEIzMjsKKyAgICBDQVJEMzIgcGFkNyBCMzI7CisgICAgQ0FSRDMyIHBhZDggQjMyOworfSB4bnZD
dHJsUXVlcnlHdm9Db2xvckNvbnZlcnNpb25EZXByZWNhdGVkUmVwbHk7CisjZGVmaW5lIHN6X3hu
dkN0cmxRdWVyeUd2b0NvbG9yQ29udmVyc2lvbkRlcHJlY2F0ZWRSZXBseSAzMgorCisvKiBTZXQg
R1ZPIENvbG9yIENvbnZlcnNpb24gcmVxdWVzdCAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBD
QVJEOCByZXFUeXBlOworICAgIENBUkQ4IG52UmVxVHlwZTsKKyAgICBDQVJEMTYgbGVuZ3RoIEIx
NjsKKyAgICBDQVJEMzIgc2NyZWVuIEIzMjsKKworICAgIEZMT0FUMzIgY3NjTWF0cml4X3lfciBG
MzI7CisgICAgRkxPQVQzMiBjc2NNYXRyaXhfeV9nIEYzMjsKKyAgICBGTE9BVDMyIGNzY01hdHJp
eF95X2IgRjMyOworCisgICAgRkxPQVQzMiBjc2NNYXRyaXhfY3JfciBGMzI7CisgICAgRkxPQVQz
MiBjc2NNYXRyaXhfY3JfZyBGMzI7CisgICAgRkxPQVQzMiBjc2NNYXRyaXhfY3JfYiBGMzI7CisK
KyAgICBGTE9BVDMyIGNzY01hdHJpeF9jYl9yIEYzMjsKKyAgICBGTE9BVDMyIGNzY01hdHJpeF9j
Yl9nIEYzMjsKKyAgICBGTE9BVDMyIGNzY01hdHJpeF9jYl9iIEYzMjsKKworICAgIEZMT0FUMzIg
Y3NjT2Zmc2V0X3kgRjMyOworICAgIEZMT0FUMzIgY3NjT2Zmc2V0X2NyIEYzMjsKKyAgICBGTE9B
VDMyIGNzY09mZnNldF9jYiBGMzI7CisKKyAgICBGTE9BVDMyIGNzY1NjYWxlX3kgRjMyOworICAg
IEZMT0FUMzIgY3NjU2NhbGVfY3IgRjMyOworICAgIEZMT0FUMzIgY3NjU2NhbGVfY2IgRjMyOwor
Cit9IHhudkN0cmxTZXRHdm9Db2xvckNvbnZlcnNpb25SZXE7CisjZGVmaW5lIHN6X3hudkN0cmxT
ZXRHdm9Db2xvckNvbnZlcnNpb25SZXEgNjgKKworLyogUXVlcnkgR1ZPIENvbG9yIENvbnZlcnNp
b24gcmVxdWVzdCAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBDQVJEOCByZXFUeXBlOworICAg
IENBUkQ4IG52UmVxVHlwZTsKKyAgICBDQVJEMTYgbGVuZ3RoIEIxNjsKKyAgICBDQVJEMzIgc2Ny
ZWVuIEIzMjsKK30geG52Q3RybFF1ZXJ5R3ZvQ29sb3JDb252ZXJzaW9uUmVxOworI2RlZmluZSBz
el94bnZDdHJsUXVlcnlHdm9Db2xvckNvbnZlcnNpb25SZXEgOAorCisvKiBRdWVyeSBHVk8gQ29s
b3IgQ29udmVyc2lvbiByZXBseSAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBCWVRFIHR5cGU7
IC8qIFhfUmVwbHkgKi8KKyAgICBCWVRFIHBhZDA7CisgICAgQ0FSRDE2IHNlcXVlbmNlTnVtYmVy
IEIxNjsKKyAgICBDQVJEMzIgbGVuZ3RoIEIzMjsKKyAgICBDQVJEMzIgcGFkMyBCMzI7CisgICAg
Q0FSRDMyIHBhZDQgQjMyOworICAgIENBUkQzMiBwYWQ1IEIzMjsKKyAgICBDQVJEMzIgcGFkNiBC
MzI7CisgICAgQ0FSRDMyIHBhZDcgQjMyOworICAgIENBUkQzMiBwYWQ4IEIzMjsKK30geG52Q3Ry
bFF1ZXJ5R3ZvQ29sb3JDb252ZXJzaW9uUmVwbHk7CisjZGVmaW5lIHN6X3hudkN0cmxRdWVyeUd2
b0NvbG9yQ29udmVyc2lvblJlcGx5IDMyCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgQ0FSRDgg
cmVxVHlwZTsKKyAgICBDQVJEOCBudlJlcVR5cGU7CisgICAgQ0FSRDE2IGxlbmd0aCBCMTY7Cisg
ICAgQ0FSRDE2IHRhcmdldF9pZCBCMTY7ICAgLyogWCBzY3JlZW4gbnVtYmVyIG9yIEdQVSBudW1i
ZXIgKi8KKyAgICBDQVJEMTYgdGFyZ2V0X3R5cGUgQjE2OyAvKiBYIHNjcmVlbiBvciBHUFUgKi8K
KyAgICBDQVJEMzIgZGlzcGxheV9tYXNrIEIzMjsKKyAgICBDQVJEMzIgYXR0cmlidXRlIEIzMjsK
K30geG52Q3RybFF1ZXJ5QmluYXJ5RGF0YVJlcTsKKyNkZWZpbmUgc3pfeG52Q3RybFF1ZXJ5Qmlu
YXJ5RGF0YVJlcSAxNgorCit0eXBlZGVmIHN0cnVjdAoreworICAgIEJZVEUgdHlwZTsKKyAgICBC
WVRFIHBhZDA7CisgICAgQ0FSRDE2IHNlcXVlbmNlTnVtYmVyIEIxNjsKKyAgICBDQVJEMzIgbGVu
Z3RoIEIzMjsKKyAgICBDQVJEMzIgZmxhZ3MgQjMyOworICAgIENBUkQzMiBuIEIzMjsKKyAgICBD
QVJEMzIgcGFkNCBCMzI7CisgICAgQ0FSRDMyIHBhZDUgQjMyOworICAgIENBUkQzMiBwYWQ2IEIz
MjsKKyAgICBDQVJEMzIgcGFkNyBCMzI7Cit9IHhudkN0cmxRdWVyeUJpbmFyeURhdGFSZXBseTsK
KyNkZWZpbmUgc3pfeG52Q3RybFF1ZXJ5QmluYXJ5RGF0YVJlcGx5IDMyCisKK3R5cGVkZWYgc3Ry
dWN0Cit7CisgICAgQ0FSRDggcmVxVHlwZTsKKyAgICBDQVJEOCBudlJlcVR5cGU7CisgICAgQ0FS
RDE2IGxlbmd0aCBCMTY7CisgICAgQ0FSRDMyIHNjcmVlbiBCMzI7CisgICAgQ0FSRDE2IG5vdGlm
eVR5cGUgQjE2OworICAgIENBUkQxNiBvbm9mZiBCMTY7Cit9IHhudkN0cmxTZWxlY3ROb3RpZnlS
ZXE7CisjZGVmaW5lIHN6X3hudkN0cmxTZWxlY3ROb3RpZnlSZXEgMTIKKwordHlwZWRlZiBzdHJ1
Y3QKK3sKKyAgICBDQVJEOCByZXFUeXBlOworICAgIENBUkQ4IG52UmVxVHlwZTsKKyAgICBDQVJE
MTYgbGVuZ3RoIEIxNjsKKyAgICBDQVJEMTYgdGFyZ2V0X2lkIEIxNjsgICAvKiBYIHNjcmVlbiBu
dW1iZXIgb3IgR1BVIG51bWJlciAqLworICAgIENBUkQxNiB0YXJnZXRfdHlwZSBCMTY7IC8qIFgg
c2NyZWVuIG9yIEdQVSAqLworICAgIENBUkQzMiBkaXNwbGF5X21hc2sgQjMyOworICAgIENBUkQz
MiBhdHRyaWJ1dGUgQjMyOworICAgIENBUkQzMiBudW1fYnl0ZXMgQjMyOyAvKiBMZW5ndGggb2Yg
c3RyaW5nICovCit9IHhudkN0cmxTdHJpbmdPcGVyYXRpb25SZXE7CisjZGVmaW5lIHN6X3hudkN0
cmxTdHJpbmdPcGVyYXRpb25SZXEgMjAKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBCWVRFIHR5
cGU7IC8qIFhfUmVwbHkgKi8KKyAgICBDQVJEOCBwYWRiMTsKKyAgICBDQVJEMTYgc2VxdWVuY2VO
dW1iZXIgQjE2OworICAgIENBUkQzMiBsZW5ndGggQjMyOworICAgIENBUkQzMiByZXQgQjMyOwor
ICAgIENBUkQzMiBudW1fYnl0ZXMgQjMyOyAvKiBMZW5ndGggb2Ygc3RyaW5nICovCisgICAgQ0FS
RDMyIHBhZGw0IEIzMjsKKyAgICBDQVJEMzIgcGFkbDUgQjMyOworICAgIENBUkQzMiBwYWRsNiBC
MzI7CisgICAgQ0FSRDMyIHBhZGw3IEIzMjsKK30geG52Q3RybFN0cmluZ09wZXJhdGlvblJlcGx5
OworI2RlZmluZSBzel94bnZDdHJsU3RyaW5nT3BlcmF0aW9uUmVwbHkgMzIKKwordHlwZWRlZiBz
dHJ1Y3QKK3sKKyAgICB1bmlvbgorICAgIHsKKyAgICAgICAgc3RydWN0CisgICAgICAgIHsKKyAg
ICAgICAgICAgIEJZVEUgdHlwZTsKKyAgICAgICAgICAgIEJZVEUgZGV0YWlsOworICAgICAgICAg
ICAgQ0FSRDE2IHNlcXVlbmNlTnVtYmVyIEIxNjsKKyAgICAgICAgfSB1OworICAgICAgICBzdHJ1
Y3QKKyAgICAgICAgeworICAgICAgICAgICAgQllURSB0eXBlOworICAgICAgICAgICAgQllURSBk
ZXRhaWw7CisgICAgICAgICAgICBDQVJEMTYgc2VxdWVuY2VOdW1iZXIgQjE2OworICAgICAgICAg
ICAgQ0FSRDMyIHRpbWUgQjMyOworICAgICAgICAgICAgQ0FSRDMyIHNjcmVlbiBCMzI7CisgICAg
ICAgICAgICBDQVJEMzIgZGlzcGxheV9tYXNrIEIzMjsKKyAgICAgICAgICAgIENBUkQzMiBhdHRy
aWJ1dGUgQjMyOworICAgICAgICAgICAgQ0FSRDMyIHZhbHVlIEIzMjsKKyAgICAgICAgICAgIENB
UkQzMiBwYWQwIEIzMjsKKyAgICAgICAgICAgIENBUkQzMiBwYWQxIEIzMjsKKyAgICAgICAgfSBh
dHRyaWJ1dGVfY2hhbmdlZDsKKyAgICB9IHU7Cit9IHhudmN0cmxFdmVudDsKKworLyoKKyAqIExl
YXZlIHRhcmdldF90eXBlIGJlZm9yZSB0YXJnZXRfaWQgZm9yIHRoZQorICogeG52Q3RybFNlbGVj
dFRhcmdldE5vdGlmeVJlcSBhbmQgeG52Y3RybEV2ZW50VGFyZ2V0CisgKiBzdHJ1Y3R1cmVzLCBl
dmVuIHRob3VnaCBvdGhlciByZXF1ZXN0IHByb3RvY29sIHN0cnVjdHVyZXMKKyAqIHN0b3JlIHRh
cmdldF9pZCBpbiB0aGUgYm90dG9tIDE2LWJpdHMgb2YgdGhlIHNlY29uZCBEV09SRCBvZiB0aGUK
KyAqIHN0cnVjdHVyZXMuICBUaGUgZXZlbnQtcmVsYXRlZCBzdHJ1Y3R1cmVzIHdlcmUgYWRkZWQg
aW4gdmVyc2lvbgorICogMS44LCBhbmQgc28gdGhlcmUgaXMgbm8gcHJpb3IgdmVyc2lvbiB3aXRo
IHdoaWNoIHRvIG1haW50YWluCisgKiBjb21wYXRpYmlsaXR5LgorICovCit0eXBlZGVmIHN0cnVj
dAoreworICAgIENBUkQ4IHJlcVR5cGU7CisgICAgQ0FSRDggbnZSZXFUeXBlOworICAgIENBUkQx
NiBsZW5ndGggQjE2OworICAgIENBUkQxNiB0YXJnZXRfdHlwZSBCMTY7IC8qIERvbid0IHN3YXAg
dGhlc2UgKi8KKyAgICBDQVJEMTYgdGFyZ2V0X2lkIEIxNjsKKyAgICBDQVJEMTYgbm90aWZ5VHlw
ZSBCMTY7CisgICAgQ0FSRDE2IG9ub2ZmIEIxNjsKK30geG52Q3RybFNlbGVjdFRhcmdldE5vdGlm
eVJlcTsKKyNkZWZpbmUgc3pfeG52Q3RybFNlbGVjdFRhcmdldE5vdGlmeVJlcSAxMgorCit0eXBl
ZGVmIHN0cnVjdAoreworICAgIHVuaW9uCisgICAgeworICAgICAgICBzdHJ1Y3QKKyAgICAgICAg
eworICAgICAgICAgICAgQllURSB0eXBlOworICAgICAgICAgICAgQllURSBkZXRhaWw7CisgICAg
ICAgICAgICBDQVJEMTYgc2VxdWVuY2VOdW1iZXIgQjE2OworICAgICAgICB9IHU7CisgICAgICAg
IHN0cnVjdAorICAgICAgICB7CisgICAgICAgICAgICBCWVRFIHR5cGU7CisgICAgICAgICAgICBC
WVRFIGRldGFpbDsKKyAgICAgICAgICAgIENBUkQxNiBzZXF1ZW5jZU51bWJlciBCMTY7CisgICAg
ICAgICAgICBDQVJEMzIgdGltZSBCMzI7CisgICAgICAgICAgICBDQVJEMTYgdGFyZ2V0X3R5cGUg
QjE2OyAvKiBEb24ndCBzd2FwIHRoZXNlICovCisgICAgICAgICAgICBDQVJEMTYgdGFyZ2V0X2lk
IEIxNjsKKyAgICAgICAgICAgIENBUkQzMiBkaXNwbGF5X21hc2sgQjMyOworICAgICAgICAgICAg
Q0FSRDMyIGF0dHJpYnV0ZSBCMzI7CisgICAgICAgICAgICBDQVJEMzIgdmFsdWUgQjMyOworICAg
ICAgICAgICAgQ0FSRDMyIHBhZDAgQjMyOworICAgICAgICAgICAgQ0FSRDMyIHBhZDEgQjMyOwor
ICAgICAgICB9IGF0dHJpYnV0ZV9jaGFuZ2VkOworICAgICAgICBzdHJ1Y3QKKyAgICAgICAgewor
ICAgICAgICAgICAgQllURSB0eXBlOworICAgICAgICAgICAgQllURSBkZXRhaWw7CisgICAgICAg
ICAgICBDQVJEMTYgc2VxdWVuY2VOdW1iZXIgQjE2OworICAgICAgICAgICAgQ0FSRDMyIHRpbWUg
QjMyOworICAgICAgICAgICAgQ0FSRDE2IHRhcmdldF90eXBlIEIxNjsgLyogRG9uJ3Qgc3dhcCB0
aGVzZSAqLworICAgICAgICAgICAgQ0FSRDE2IHRhcmdldF9pZCBCMTY7CisgICAgICAgICAgICBD
QVJEMzIgZGlzcGxheV9tYXNrIEIzMjsKKyAgICAgICAgICAgIENBUkQzMiBhdHRyaWJ1dGUgQjMy
OworICAgICAgICAgICAgQ0FSRDMyIHZhbHVlIEIzMjsKKyAgICAgICAgICAgIENBUkQ4IGF2YWls
YWJpbGl0eTsKKyAgICAgICAgICAgIENBUkQ4IHBhZDA7CisgICAgICAgICAgICBDQVJEMTYgcGFk
MSBCMTY7CisgICAgICAgICAgICBDQVJEMzIgcGFkMiBCMzI7CisgICAgICAgIH0gYXZhaWxhYmls
aXR5X2NoYW5nZWQ7CisgICAgfSB1OworfSB4bnZjdHJsRXZlbnRUYXJnZXQ7CisKKyNlbmRpZiAv
KiBfX05WQ09OVFJPTF9IICovCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhp
cmRfcGFydHkvbXVybXVyaGFzaC9NdXJtdXJIYXNoMy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L211cm11cmhhc2gvTXVybXVySGFzaDMu
Y3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhp
cmRfcGFydHkvbXVybXVyaGFzaC9NdXJtdXJIYXNoMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2
LDIwICsxNiwyMCBAQAogCiAjaWYgZGVmaW5lZChfTVNDX1ZFUikKIAotI2RlZmluZSBGT1JDRV9J
TkxJTkUgX19mb3JjZWlubGluZQorI2RlZmluZSBGT1JDRV9JTkxJTkUJX19mb3JjZWlubGluZQog
CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAKLSNkZWZpbmUgUk9UTDMyKHgseSkgX3JvdGwoeCx5KQot
I2RlZmluZSBST1RMNjQoeCx5KSBfcm90bDY0KHgseSkKKyNkZWZpbmUgUk9UTDMyKHgseSkJX3Jv
dGwoeCx5KQorI2RlZmluZSBST1RMNjQoeCx5KQlfcm90bDY0KHgseSkKIAogI2RlZmluZSBCSUdf
Q09OU1RBTlQoeCkgKHgpCiAKIC8vIE90aGVyIGNvbXBpbGVycwogCi0jZWxzZSAvLyBkZWZpbmVk
KF9NU0NfVkVSKQorI2Vsc2UJLy8gZGVmaW5lZChfTVNDX1ZFUikKIAotI2RlZmluZSBGT1JDRV9J
TkxJTkUgaW5saW5lIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKQorI2RlZmluZQlGT1JD
RV9JTkxJTkUgaW5saW5lIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKQogCiBpbmxpbmUg
dWludDMyX3Qgcm90bDMyICggdWludDMyX3QgeCwgaW50OF90IHIgKQogewpAQCAtNDEsOCArNDEs
OCBAQAogICByZXR1cm4gKHggPDwgcikgfCAoeCA+PiAoNjQgLSByKSk7CiB9CiAKLSNkZWZpbmUg
Uk9UTDMyKHgseSkgcm90bDMyKHgseSkKLSNkZWZpbmUgUk9UTDY0KHgseSkgcm90bDY0KHgseSkK
KyNkZWZpbmUJUk9UTDMyKHgseSkJcm90bDMyKHgseSkKKyNkZWZpbmUgUk9UTDY0KHgseSkJcm90
bDY0KHgseSkKIAogI2RlZmluZSBCSUdfQ09OU1RBTlQoeCkgKHgjI0xMVSkKIApJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L211cm11cmhhc2gvTXVybXVySGFz
aDMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFy
dHkvbXVybXVyaGFzaC9NdXJtdXJIYXNoMy5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbXVybXVyaGFzaC9NdXJtdXJIYXNoMy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xOCw3ICsxOCw3IEBACiAKIC8vIE90aGVyIGNvbXBpbGVycwog
Ci0jZWxzZSAvLyBkZWZpbmVkKF9NU0NfVkVSKQorI2Vsc2UJLy8gZGVmaW5lZChfTVNDX1ZFUikK
IAogI2luY2x1ZGUgPHN0ZGludC5oPgogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90
aGlyZF9wYXJ0eS9kZXFwL1JFQURNRS5hbmdsZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS90aGlyZF9wYXJ0eS9kZXFwL1JFQURNRS5hbmdsZQkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90aGlyZF9wYXJ0eS9kZXFwL1JFQURNRS5hbmdsZQko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACitOYW1lOiBkcmF3RWxlbWVudHMgUXVhbGl0
eSBQcm9ncmFtCitTaG9ydCBOYW1lOiBkRVFQCitWZXJzaW9uOiAxLjAKK1VSTDogaHR0cHM6Ly9z
b3VyY2UuYW5kcm9pZC5jb20vZGV2aWNlcy9ncmFwaGljcy90ZXN0aW5nLmh0bWwKK1NPVVJDRSBD
T0RFOiBnaXQgY2xvbmUgLWIgZGVxcC1kZXYgaHR0cHM6Ly9hbmRyb2lkLmdvb2dsZXNvdXJjZS5j
b20vcGxhdGZvcm0vZXh0ZXJuYWwvZGVxcC8KK0RhdGU6IDIwLzA2LzIwMTYKK1JldmlzaW9uOiBm
NGYzZDgwNzllN2EzN2Q3Njc1YWI5MzU4M2U2NDM4ZDBiY2EwZTU4CitTZWN1cml0eSBDcml0aWNh
bDogbm8KK0xpY2Vuc2U6IEFwYWNoZSAyLjAKK0xpY2Vuc2UgRmlsZTogTElDRU5TRQorCitEZXNj
cmlwdGlvbjoKK2RFUVAgaXMgYSBzZXQgb2YgdGVzdHMgYW5kIHRlc3RpbmcgdG9vbHMgZm9yIEdQ
VXMgYW5kIHRoZWlyIGRyaXZlcnMuIEl0IGN1cnJlbnRseSBzdXBwb3J0cyBPcGVuR0wgRVMgMi4w
IC0gMy4xICYgQUVQIGFuZCBFR0wuIFRoZSBkRVFQIGhhcyBiZWVuIHBhcnQgb2YgdGhlIEFuZHJv
aWQgQ1RTIHNpbmNlIHRoZSBMIHJlbGVhc2UuCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS91dGlsL0VHTFdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvdXRpbC9FR0xXaW5kb3cuY3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS91dGlsL0VHTFdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsx
MTAsOCBAQAogICAgICAgbU11bHRpc2FtcGxlKGZhbHNlKSwKICAgICAgIG1EZWJ1ZyhmYWxzZSks
CiAgICAgICBtTm9FcnJvcihmYWxzZSksCisgICAgICBtV2ViR0xDb21wYXRpYmlsaXR5KGZhbHNl
KSwKKyAgICAgIG1CaW5kR2VuZXJhdGVzUmVzb3VyY2UodHJ1ZSksCiAgICAgICBtU3dhcEludGVy
dmFsKC0xKQogewogfQpAQCAtMjA3LDYgKzIwOSwyMiBAQAogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCisgICAgYm9vbCBoYXNXZWJHTENvbXBhdGliaWxpdHkgPQorICAgICAgICBzdHJz
dHIoZGlzcGxheUV4dGVuc2lvbnMsICJFR0xfQU5HTEVfY3JlYXRlX2NvbnRleHRfd2ViZ2xfY29t
cGF0aWJpbGl0eSIpICE9IG51bGxwdHI7CisgICAgaWYgKG1XZWJHTENvbXBhdGliaWxpdHkgJiYg
IWhhc1dlYkdMQ29tcGF0aWJpbGl0eSkKKyAgICB7CisgICAgICAgIGRlc3Ryb3lHTCgpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgYm9vbCBoYXNCaW5kR2VuZXJhdGVzUmVz
b3VyY2UgPQorICAgICAgICBzdHJzdHIoZGlzcGxheUV4dGVuc2lvbnMsICJFR0xfQ0hST01JVU1f
Y3JlYXRlX2NvbnRleHRfYmluZF9nZW5lcmF0ZXNfcmVzb3VyY2UiKSAhPSBudWxscHRyOworICAg
IGlmICghbUJpbmRHZW5lcmF0ZXNSZXNvdXJjZSAmJiAhaGFzQmluZEdlbmVyYXRlc1Jlc291cmNl
KQorICAgIHsKKyAgICAgICAgZGVzdHJveUdMKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKICAgICBlZ2xCaW5kQVBJKEVHTF9PUEVOR0xfRVNfQVBJKTsKICAgICBpZiAoZWdsR2V0
RXJyb3IoKSAhPSBFR0xfU1VDQ0VTUykKICAgICB7CkBAIC0yNzUsNiArMjkzLDE4IEBACiAKICAg
ICAgICAgY29udGV4dEF0dHJpYnV0ZXMucHVzaF9iYWNrKEVHTF9DT05URVhUX09QRU5HTF9OT19F
UlJPUl9LSFIpOwogICAgICAgICBjb250ZXh0QXR0cmlidXRlcy5wdXNoX2JhY2sobU5vRXJyb3Ig
PyBFR0xfVFJVRSA6IEVHTF9GQUxTRSk7CisKKyAgICAgICAgaWYgKGhhc1dlYkdMQ29tcGF0aWJp
bGl0eSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dEF0dHJpYnV0ZXMucHVzaF9iYWNr
KEVHTF9DT05URVhUX1dFQkdMX0NPTVBBVElCSUxJVFlfQU5HTEUpOworICAgICAgICAgICAgY29u
dGV4dEF0dHJpYnV0ZXMucHVzaF9iYWNrKG1XZWJHTENvbXBhdGliaWxpdHkgPyBFR0xfVFJVRSA6
IEVHTF9GQUxTRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaGFzQmluZEdlbmVyYXRlc1Jl
c291cmNlKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0QXR0cmlidXRlcy5wdXNoX2Jh
Y2soRUdMX0NPTlRFWFRfQklORF9HRU5FUkFURVNfUkVTT1VSQ0VfQ0hST01JVU0pOworICAgICAg
ICAgICAgY29udGV4dEF0dHJpYnV0ZXMucHVzaF9iYWNrKG1CaW5kR2VuZXJhdGVzUmVzb3VyY2Ug
PyBFR0xfVFJVRSA6IEVHTF9GQUxTRSk7CisgICAgICAgIH0KICAgICB9CiAgICAgY29udGV4dEF0
dHJpYnV0ZXMucHVzaF9iYWNrKEVHTF9OT05FKTsKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvdXRpbC9FR0xXaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS91dGlsL0VHTFdpbmRvdy5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS91dGlsL0VHTFdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw2ICsxMiw3
IEBACiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogCisjaW5jbHVkZSA8
ZXhwb3J0Lmg+CiAjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CiAjaW5jbHVkZSA8R0xFUzIvZ2wyZXh0
Lmg+CiAjaW5jbHVkZSA8R0xFUzMvZ2wzLmg+CkBAIC0yOCw3ICsyOSw3IEBACiAjZGVmaW5lIEVH
TF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9OVUxMX0FOR0xFIDB4NkFDMAogI2VuZGlmCiAK
LXN0cnVjdCBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMKK3N0cnVjdCBBTkdMRV9FWFBPUlQgRUdMUGxh
dGZvcm1QYXJhbWV0ZXJzCiB7CiAgICAgRUdMaW50IHJlbmRlcmVyOwogICAgIEVHTGludCBtYWpv
clZlcnNpb247CkBAIC00NiwxMCArNDcsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
RUdMaW50IHByZXNlbnRQYXRoKTsKIH07CiAKLWJvb2wgb3BlcmF0b3I8KGNvbnN0IEVHTFBsYXRm
b3JtUGFyYW1ldGVycyAmYSwgY29uc3QgRUdMUGxhdGZvcm1QYXJhbWV0ZXJzICZiKTsKLWJvb2wg
b3BlcmF0b3I9PShjb25zdCBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgJmEsIGNvbnN0IEVHTFBsYXRm
b3JtUGFyYW1ldGVycyAmYik7CitBTkdMRV9FWFBPUlQgYm9vbCBvcGVyYXRvcjwoY29uc3QgRUdM
UGxhdGZvcm1QYXJhbWV0ZXJzICZhLCBjb25zdCBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgJmIpOwor
QU5HTEVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMg
JmEsIGNvbnN0IEVHTFBsYXRmb3JtUGFyYW1ldGVycyAmYik7CiAKLWNsYXNzIEVHTFdpbmRvdyA6
IGFuZ2xlOjpOb25Db3B5YWJsZQorY2xhc3MgQU5HTEVfRVhQT1JUIEVHTFdpbmRvdyA6IGFuZ2xl
OjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6CiAgICAgRUdMV2luZG93KEVHTGludCBnbGVzTWFq
b3JWZXJzaW9uLApAQCAtNjcsNiArNjgsMTQgQEAKICAgICB2b2lkIHNldE11bHRpc2FtcGxlKGJv
b2wgbXVsdGlzYW1wbGUpIHsgbU11bHRpc2FtcGxlID0gbXVsdGlzYW1wbGU7IH0KICAgICB2b2lk
IHNldERlYnVnRW5hYmxlZChib29sIGRlYnVnKSB7IG1EZWJ1ZyA9IGRlYnVnOyB9CiAgICAgdm9p
ZCBzZXROb0Vycm9yRW5hYmxlZChib29sIG5vRXJyb3IpIHsgbU5vRXJyb3IgPSBub0Vycm9yOyB9
CisgICAgdm9pZCBzZXRXZWJHTENvbXBhdGliaWxpdHlFbmFibGVkKGJvb2wgd2ViZ2xDb21wYXRp
YmlsaXR5KQorICAgIHsKKyAgICAgICAgbVdlYkdMQ29tcGF0aWJpbGl0eSA9IHdlYmdsQ29tcGF0
aWJpbGl0eTsKKyAgICB9CisgICAgdm9pZCBzZXRCaW5kR2VuZXJhdGVzUmVzb3VyY2UoYm9vbCBi
aW5kR2VuZXJhdGVzUmVzb3VyY2UpCisgICAgeworICAgICAgICBtQmluZEdlbmVyYXRlc1Jlc291
cmNlID0gYmluZEdlbmVyYXRlc1Jlc291cmNlOworICAgIH0KICAgICB2b2lkIHNldFN3YXBJbnRl
cnZhbChFR0xpbnQgc3dhcEludGVydmFsKSB7IG1Td2FwSW50ZXJ2YWwgPSBzd2FwSW50ZXJ2YWw7
IH0KIAogICAgIHN0YXRpYyBFR0xCb29sZWFuIEZpbmRFR0xDb25maWcoRUdMRGlzcGxheSBkcHks
IGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QsIEVHTENvbmZpZyAqY29uZmlnKTsKQEAgLTExMiw2
ICsxMjEsOCBAQAogICAgIGJvb2wgbU11bHRpc2FtcGxlOwogICAgIGJvb2wgbURlYnVnOwogICAg
IGJvb2wgbU5vRXJyb3I7CisgICAgYm9vbCBtV2ViR0xDb21wYXRpYmlsaXR5OworICAgIGJvb2wg
bUJpbmRHZW5lcmF0ZXNSZXNvdXJjZTsKICAgICBFR0xpbnQgbVN3YXBJbnRlcnZhbDsKIH07CiAK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvTWF0cml4LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9NYXRyaXguaAkocmV2aXNpb24gMjA4MDIx
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9NYXRyaXguaAkod29ya2luZyBjb3B5
KQpAQCAtMTAsOSArMTAsMTEgQEAKICNpZm5kZWYgVVRJTF9NQVRSSVhfSAogI2RlZmluZSBVVElM
X01BVFJJWF9ICiAKKyNpbmNsdWRlIDxleHBvcnQuaD4KKwogI2luY2x1ZGUgIlZlY3Rvci5oIgog
Ci1zdHJ1Y3QgTWF0cml4NAorc3RydWN0IEFOR0xFX0VYUE9SVCBNYXRyaXg0CiB7CiAgICAgZmxv
YXQgZGF0YVsxNl07CiAKQEAgLTQ5LDEzICs1MSwxMyBAQAogICAgIHN0YXRpYyBWZWN0b3IzIHRy
YW5zZm9ybShjb25zdCBNYXRyaXg0ICZtYXQsIGNvbnN0IFZlY3RvcjQgJnB0KTsKIH07CiAKLU1h
dHJpeDQgb3BlcmF0b3IqKGNvbnN0IE1hdHJpeDQgJmEsIGNvbnN0IE1hdHJpeDQgJmIpOwotTWF0
cml4NCAmb3BlcmF0b3IqPShNYXRyaXg0ICZhLCBjb25zdCBNYXRyaXg0ICZiKTsKLU1hdHJpeDQg
b3BlcmF0b3IqKGNvbnN0IE1hdHJpeDQgJmEsIGZsb2F0IGIpOwotTWF0cml4NCAmb3BlcmF0b3Iq
PShNYXRyaXg0ICZhLCBmbG9hdCBiKTsKLVZlY3RvcjQgb3BlcmF0b3IqKGNvbnN0IE1hdHJpeDQg
JmEsIGNvbnN0IFZlY3RvcjQgJmIpOworQU5HTEVfRVhQT1JUIE1hdHJpeDQgb3BlcmF0b3IqKGNv
bnN0IE1hdHJpeDQgJmEsIGNvbnN0IE1hdHJpeDQgJmIpOworQU5HTEVfRVhQT1JUIE1hdHJpeDQg
Jm9wZXJhdG9yKj0oTWF0cml4NCAmYSwgY29uc3QgTWF0cml4NCAmYik7CitBTkdMRV9FWFBPUlQg
TWF0cml4NCBvcGVyYXRvciooY29uc3QgTWF0cml4NCAmYSwgZmxvYXQgYik7CitBTkdMRV9FWFBP
UlQgTWF0cml4NCAmb3BlcmF0b3IqPShNYXRyaXg0ICZhLCBmbG9hdCBiKTsKK0FOR0xFX0VYUE9S
VCBWZWN0b3I0IG9wZXJhdG9yKihjb25zdCBNYXRyaXg0ICZhLCBjb25zdCBWZWN0b3I0ICZiKTsK
IAotYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1hdHJpeDQgJmEsIGNvbnN0IE1hdHJpeDQgJmIpOwot
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IE1hdHJpeDQgJmEsIGNvbnN0IE1hdHJpeDQgJmIpOworQU5H
TEVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNYXRyaXg0ICZhLCBjb25zdCBNYXRyaXg0
ICZiKTsKK0FOR0xFX0VYUE9SVCBib29sIG9wZXJhdG9yIT0oY29uc3QgTWF0cml4NCAmYSwgY29u
c3QgTWF0cml4NCAmYik7CiAKICNlbmRpZiAgLy8gVVRJTF9NQVRSSVhfSApJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvdXRpbC9PU1BpeG1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3V0aWwvT1NQaXhtYXAuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9PU1BpeG1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MSwxMiArMTEsMTMgQEAKIAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogCisjaW5jbHVkZSA8ZXhwb3J0
Lmg+CiAjaW5jbHVkZSA8RUdML2VnbC5oPgogI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KIAogI2lu
Y2x1ZGUgIkV2ZW50LmgiCiAKLWNsYXNzIE9TUGl4bWFwCitjbGFzcyBBTkdMRV9FWFBPUlQgT1NQ
aXhtYXAKIHsKICAgcHVibGljOgogICAgIE9TUGl4bWFwKCkge30KQEAgLTI3LDYgKzI4LDYgQEAK
ICAgICB2aXJ0dWFsIEVHTE5hdGl2ZVBpeG1hcFR5cGUgZ2V0TmF0aXZlUGl4bWFwKCkgY29uc3Qg
PSAwOwogfTsKIAotT1NQaXhtYXAgKkNyZWF0ZU9TUGl4bWFwKCk7CitBTkdMRV9FWFBPUlQgT1NQ
aXhtYXAgKkNyZWF0ZU9TUGl4bWFwKCk7CiAKICNlbmRpZiAvLyBTQU1QTEVfVVRJTF9QSVhNQVBf
SF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvT1NXaW5kb3cuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL09TV2luZG93LmgJKHJldmlzaW9u
IDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvT1NXaW5kb3cuaAkod29y
a2luZyBjb3B5KQpAQCAtMTEsMTIgKzExLDEzIEBACiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5j
bHVkZSA8c3RyaW5nPgogCisjaW5jbHVkZSA8ZXhwb3J0Lmg+CiAjaW5jbHVkZSA8RUdML2VnbC5o
PgogI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KIAogI2luY2x1ZGUgIkV2ZW50LmgiCiAKLWNsYXNz
IE9TV2luZG93CitjbGFzcyBBTkdMRV9FWFBPUlQgT1NXaW5kb3cKIHsKICAgcHVibGljOgogICAg
IE9TV2luZG93KCk7CkBAIC02Myw2ICs2NCw2IEBACiAgICAgc3RkOjpsaXN0PEV2ZW50PiBtRXZl
bnRzOwogfTsKIAotT1NXaW5kb3cgKkNyZWF0ZU9TV2luZG93KCk7CitBTkdMRV9FWFBPUlQgT1NX
aW5kb3cgKkNyZWF0ZU9TV2luZG93KCk7CiAKICNlbmRpZiAvLyBTQU1QTEVfVVRJTF9XSU5ET1df
SApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9UaW1lci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvVGltZXIuaAkocmV2aXNpb24gMjA4MDIx
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9UaW1lci5oCSh3b3JraW5nIGNvcHkp
CkBAIC03LDcgKzcsOSBAQAogI2lmbmRlZiBTQU1QTEVfVVRJTF9USU1FUl9ICiAjZGVmaW5lIFNB
TVBMRV9VVElMX1RJTUVSX0gKIAotY2xhc3MgVGltZXIKKyNpbmNsdWRlIDxleHBvcnQuaD4KKwor
Y2xhc3MgQU5HTEVfRVhQT1JUIFRpbWVyCiB7CiAgIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5UaW1l
cigpIHt9CkBAIC0xNiw2ICsxOCw2IEBACiAgICAgdmlydHVhbCBkb3VibGUgZ2V0RWxhcHNlZFRp
bWUoKSBjb25zdCA9IDA7CiB9OwogCi1UaW1lciAqQ3JlYXRlVGltZXIoKTsKK0FOR0xFX0VYUE9S
VCBUaW1lciAqQ3JlYXRlVGltZXIoKTsKIAogI2VuZGlmIC8vIFNBTVBMRV9VVElMX1RJTUVSX0gK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvVmVjdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL1ZlY3Rvci5jcHAJKHJldmlzaW9uIDIw
ODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvVmVjdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTMyLDYgKzEzMiwxNiBAQAogICAgIHJldHVybiBWZWN0b3IzKGEueCAtIGIu
eCwgYS55IC0gYi55LCBhLnogLSBiLnopOwogfQogCitib29sIG9wZXJhdG9yPT0oY29uc3QgVmVj
dG9yMyAmYSwgY29uc3QgVmVjdG9yMyAmYikKK3sKKyAgICByZXR1cm4gKGEueCA9PSBiLnggJiYg
YS55ID09IGIueSAmJiBhLnogPT0gYi56KTsKK30KKworYm9vbCBvcGVyYXRvciE9KGNvbnN0IFZl
Y3RvcjMgJmEsIGNvbnN0IFZlY3RvcjMgJmIpCit7CisgICAgcmV0dXJuICEoYSA9PSBiKTsKK30K
KwogVmVjdG9yNDo6VmVjdG9yNCgpIDogeCgwLjBmKSwgeSgwLjBmKSwgeigwLjBmKSwgdygwLjBm
KQogewogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9WZWN0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL1ZlY3Rvci5oCShyZXZpc2lv
biAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL1ZlY3Rvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMiw3ICsxMiw5IEBACiAKICNpbmNsdWRlIDxvc3RyZWFtPgogCi1zdHJ1
Y3QgVmVjdG9yMgorI2luY2x1ZGUgPGV4cG9ydC5oPgorCitzdHJ1Y3QgQU5HTEVfRVhQT1JUIFZl
Y3RvcjIKIHsKICAgICBWZWN0b3IyKCk7CiAgICAgVmVjdG9yMihmbG9hdCB4LCBmbG9hdCB5KTsK
QEAgLTMxLDkgKzMzLDkgQEAKICAgICBmbG9hdCB4LCB5OwogfTsKIAotc3RkOjpvc3RyZWFtICZv
cGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmc3RyZWFtLCBjb25zdCBWZWN0b3IyICZ2ZWMpOworQU5H
TEVfRVhQT1JUIHN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJnN0cmVhbSwg
Y29uc3QgVmVjdG9yMiAmdmVjKTsKIAotc3RydWN0IFZlY3RvcjMKK3N0cnVjdCBBTkdMRV9FWFBP
UlQgVmVjdG9yMwogewogICAgIFZlY3RvcjMoKTsKICAgICBWZWN0b3IzKGZsb2F0IHgsIGZsb2F0
IHksIGZsb2F0IHopOwpAQCAtNTIsMTQgKzU0LDE2IEBACiAgICAgZmxvYXQgeCwgeSwgejsKIH07
CiAKLVZlY3RvcjMgb3BlcmF0b3IqKGNvbnN0IFZlY3RvcjMgJmEsIGNvbnN0IFZlY3RvcjMgJmIp
OwotVmVjdG9yMyBvcGVyYXRvciooY29uc3QgVmVjdG9yMyAmYSwgY29uc3QgZmxvYXQgJmIpOwot
VmVjdG9yMyBvcGVyYXRvci8oY29uc3QgVmVjdG9yMyAmYSwgY29uc3QgVmVjdG9yMyAmYik7Ci1W
ZWN0b3IzIG9wZXJhdG9yLyhjb25zdCBWZWN0b3IzICZhLCBjb25zdCBmbG9hdCAmYik7Ci1WZWN0
b3IzIG9wZXJhdG9yKyhjb25zdCBWZWN0b3IzICZhLCBjb25zdCBWZWN0b3IzICZiKTsKLVZlY3Rv
cjMgb3BlcmF0b3ItKGNvbnN0IFZlY3RvcjMgJmEsIGNvbnN0IFZlY3RvcjMgJmIpOworQU5HTEVf
RVhQT1JUIFZlY3RvcjMgb3BlcmF0b3IqKGNvbnN0IFZlY3RvcjMgJmEsIGNvbnN0IFZlY3RvcjMg
JmIpOworQU5HTEVfRVhQT1JUIFZlY3RvcjMgb3BlcmF0b3IqKGNvbnN0IFZlY3RvcjMgJmEsIGNv
bnN0IGZsb2F0ICZiKTsKK0FOR0xFX0VYUE9SVCBWZWN0b3IzIG9wZXJhdG9yLyhjb25zdCBWZWN0
b3IzICZhLCBjb25zdCBWZWN0b3IzICZiKTsKK0FOR0xFX0VYUE9SVCBWZWN0b3IzIG9wZXJhdG9y
Lyhjb25zdCBWZWN0b3IzICZhLCBjb25zdCBmbG9hdCAmYik7CitBTkdMRV9FWFBPUlQgVmVjdG9y
MyBvcGVyYXRvcisoY29uc3QgVmVjdG9yMyAmYSwgY29uc3QgVmVjdG9yMyAmYik7CitBTkdMRV9F
WFBPUlQgVmVjdG9yMyBvcGVyYXRvci0oY29uc3QgVmVjdG9yMyAmYSwgY29uc3QgVmVjdG9yMyAm
Yik7CitBTkdMRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZlY3RvcjMgJmEsIGNvbnN0
IFZlY3RvcjMgJmIpOworQU5HTEVfRVhQT1JUIGJvb2wgb3BlcmF0b3IhPShjb25zdCBWZWN0b3Iz
ICZhLCBjb25zdCBWZWN0b3IzICZiKTsKIAotc3RydWN0IFZlY3RvcjQKK3N0cnVjdCBBTkdMRV9F
WFBPUlQgVmVjdG9yNAogewogICAgIFZlY3RvcjQoKTsKICAgICBWZWN0b3I0KGZsb2F0IHgsIGZs
b2F0IHksIGZsb2F0IHosIGZsb2F0IHcpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
dXRpbC9hbmRyb2lkL0FuZHJvaWRQaXhtYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3V0aWwvYW5kcm9pZC9BbmRyb2lkUGl4bWFwLmNwcAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL2FuZHJvaWQvQW5kcm9pZFBpeG1hcC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykg
MjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEFu
ZHJvaWRQaXhtYXAuY3BwOiBJbXBsZW1lbnRhdGlvbiBvZiBPU1BpeG1hcCBmb3IgQW5kcm9pZAor
CisjaW5jbHVkZSAiT1NQaXhtYXAuaCIKKworT1NQaXhtYXAgKkNyZWF0ZU9TUGl4bWFwKCkKK3sK
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0
aWwvYW5kcm9pZC9BbmRyb2lkV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS91dGlsL2FuZHJvaWQvQW5kcm9pZFdpbmRvdy5jcHAJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9hbmRyb2lkL0FuZHJvaWRXaW5kb3cuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTU0IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAy
MDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gQW5k
cm9pZFdpbmRvdy5jcHA6IEltcGxlbWVudGF0aW9uIG9mIE9TV2luZG93IGZvciBBbmRyb2lkCisK
KyNpbmNsdWRlICJhbmRyb2lkL0FuZHJvaWRXaW5kb3cuaCIKKworI2luY2x1ZGUgPHB0aHJlYWQu
aD4KKworI2luY2x1ZGUgImFuZHJvaWQvdGhpcmRfcGFydHkvYW5kcm9pZF9uYXRpdmVfYXBwX2ds
dWUuaCIKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKworbmFtZXNwYWNlCit7CisgICAgc3Ry
dWN0IGFuZHJvaWRfYXBwICpzQXBwID0gbnVsbHB0cjsKKyAgICBwdGhyZWFkX211dGV4X3Qgc0lu
aXRXaW5kb3dNdXRleDsKKyAgICBwdGhyZWFkX2NvbmRfdCBzSW5pdFdpbmRvd0NvbmQ7CisgICAg
Ym9vbCBzSW5pdFdpbmRvd0RvbmUgPSBmYWxzZTsKK30gIC8vIG5hbWVzcGFjZQorCitBbmRyb2lk
V2luZG93OjpBbmRyb2lkV2luZG93KCkKK3sKK30KKworQW5kcm9pZFdpbmRvdzo6fkFuZHJvaWRX
aW5kb3coKQoreworfQorCitib29sIEFuZHJvaWRXaW5kb3c6OmluaXRpYWxpemUoY29uc3Qgc3Rk
OjpzdHJpbmcgJm5hbWUsIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCkKK3sKKyAgICByZXR1
cm4gcmVzaXplKHdpZHRoLCBoZWlnaHQpOworfQordm9pZCBBbmRyb2lkV2luZG93OjpkZXN0cm95
KCkKK3sKK30KKworRUdMTmF0aXZlV2luZG93VHlwZSBBbmRyb2lkV2luZG93OjpnZXROYXRpdmVX
aW5kb3coKSBjb25zdAoreworICAgIC8vIFJldHVybiB0aGUgZW50aXJlIEFjdGl2aXR5IFN1cmZh
Y2UgZm9yIG5vdworICAgIC8vIHNBcHAtPndpbmRvdyBpcyB2YWxpZCBvbmx5IGFmdGVyIHNJbml0
V2luZG93RG9uZSwgd2hpY2ggaXMgdHJ1ZSBhZnRlciBpbml0aWFsaXplKCkKKyAgICByZXR1cm4g
c0FwcC0+d2luZG93OworfQorCitFR0xOYXRpdmVEaXNwbGF5VHlwZSBBbmRyb2lkV2luZG93Ojpn
ZXROYXRpdmVEaXNwbGF5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gRUdMX0RFRkFVTFRfRElTUExB
WTsKK30KKwordm9pZCBBbmRyb2lkV2luZG93OjptZXNzYWdlTG9vcCgpCit7CisgICAgLy8gVE9E
TzogYWNjdW11bGF0ZSBldmVudHMgaW4gdGhlIHJlYWwgbWVzc2FnZSBsb29wIG9mIGFuZHJvaWRf
bWFpbiwKKyAgICAvLyBhbmQgcHJvY2VzcyB0aGVtIGhlcmUKK30KKwordm9pZCBBbmRyb2lkV2lu
ZG93OjpzZXRNb3VzZVBvc2l0aW9uKGludCB4LCBpbnQgeSkKK3sKKyAgICBVTklNUExFTUVOVEVE
KCk7Cit9CisKK2Jvb2wgQW5kcm9pZFdpbmRvdzo6c2V0UG9zaXRpb24oaW50IHgsIGludCB5KQor
eworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQW5k
cm9pZFdpbmRvdzo6cmVzaXplKGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICBtV2lkdGgg
PSB3aWR0aDsKKyAgICBtSGVpZ2h0ID0gaGVpZ2h0OworCisgICAgLy8gc0FwcC0+d2luZG93IHVz
ZWQgYmVsb3cgaXMgdmFsaWQgb25seSBhZnRlciBBY3Rpdml0eSBTdXJmYWNlIGlzIGNyZWF0ZWQK
KyAgICBwdGhyZWFkX211dGV4X2xvY2soJnNJbml0V2luZG93TXV0ZXgpOworICAgIHdoaWxlICgh
c0luaXRXaW5kb3dEb25lKQorICAgIHsKKyAgICAgICAgcHRocmVhZF9jb25kX3dhaXQoJnNJbml0
V2luZG93Q29uZCwgJnNJbml0V2luZG93TXV0ZXgpOworICAgIH0KKyAgICBwdGhyZWFkX211dGV4
X3VubG9jaygmc0luaXRXaW5kb3dNdXRleCk7CisKKyAgICAvLyBUT0RPOiBmaWd1cmUgb3V0IGEg
d2F5IHRvIHNldCB0aGUgZm9ybWF0IGFzIHdlbGwsCisgICAgLy8gd2hpY2ggaXMgYXZhaWxhYmxl
IG9ubHkgYWZ0ZXIgRUdMV2luZG93IGluaXRpYWxpemF0aW9uCisgICAgaW50MzJfdCBlcnIgPSBB
TmF0aXZlV2luZG93X3NldEJ1ZmZlcnNHZW9tZXRyeShzQXBwLT53aW5kb3csIG1XaWR0aCwgbUhl
aWdodCwgMCk7CisgICAgcmV0dXJuIGVyciA9PSAwOworfQorCit2b2lkIEFuZHJvaWRXaW5kb3c6
OnNldFZpc2libGUoYm9vbCBpc1Zpc2libGUpCit7Cit9CisKK3ZvaWQgQW5kcm9pZFdpbmRvdzo6
c2lnbmFsVGVzdEV2ZW50KCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK09TV2luZG93
ICpDcmVhdGVPU1dpbmRvdygpCit7CisgICAgLy8gVGhlcmUgc2hvdWxkIGJlIG9ubHkgb25lIGxp
dmUgaW5zdGFuY2Ugb2YgQW5kcm9pZFdpbmRvdyBhdCBhIHRpbWUsCisgICAgLy8gYXMgdGhlcmUg
aXMgb25seSBvbmUgQWN0aXZpdHkgU3VyZmFjZSBiZWhpbmQgaXQuCisgICAgLy8gQ3JlYXRpbmcg
YSBuZXcgQW5kcm9pZFdpbmRvdyBlYWNoIHRpbWUgd29ya3MgZm9yIEFOR0xFVGVzdCwKKyAgICAv
LyBhcyBpdCBkZXN0cm95cyBhbiBvbGQgd2luZG93IGJlZm9yZSBjcmVhdGluZyBhIG5ldyBvbmUu
CisgICAgLy8gVE9ETzogdXNlIEdMU3VyZmFjZVZpZXcgdG8gc3VwcG9ydCBtdWx0aXBsZSB3aW5k
b3dzCisgICAgcmV0dXJuIG5ldyBBbmRyb2lkV2luZG93KCk7Cit9CisKK3N0YXRpYyB2b2lkIG9u
QXBwQ21kKHN0cnVjdCBhbmRyb2lkX2FwcCAqYXBwLCBpbnQzMl90IGNtZCkKK3sKKyAgICBzd2l0
Y2ggKGNtZCkKKyAgICB7CisgICAgICAgIGNhc2UgQVBQX0NNRF9JTklUX1dJTkRPVzoKKyAgICAg
ICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmc0luaXRXaW5kb3dNdXRleCk7CisgICAgICAgICAg
ICBzSW5pdFdpbmRvd0RvbmUgPSB0cnVlOworICAgICAgICAgICAgcHRocmVhZF9jb25kX2Jyb2Fk
Y2FzdCgmc0luaXRXaW5kb3dDb25kKTsKKyAgICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2Nr
KCZzSW5pdFdpbmRvd011dGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAvLyBUT0RP
OiBwcm9jZXNzIG90aGVyIGNvbW1hbmRzIGFuZCBwYXNzIHRoZW0gdG8gQW5kcm9pZFdpbmRvdyBm
b3IgaGFuZGxpbmcKKyAgICAgICAgLy8gVE9ETzogZmlndXJlIG91dCBob3cgdG8gaGFuZGxlIEFQ
UF9DTURfUEFVU0UsCisgICAgICAgIC8vIHdoaWNoIHNob3VsZCBpbW1lZGlhdGVseSBoYWx0IGFs
bCB0aGUgcmVuZGVyaW5nLAorICAgICAgICAvLyBzaW5jZSBBY3Rpdml0eSBTdXJmYWNlIGlzIG5v
IGxvbmdlciBhdmFpbGFibGUuCisgICAgICAgIC8vIEN1cnJlbnRseSB0ZXN0cyBjcmFzaCB3aGVu
IHBhdXNlZCwgZm9yIGV4YW1wbGUsIGR1ZSB0byBkZXZpY2UgY2hhbmdpbmcgb3JpZW50YXRpb24K
KyAgICB9Cit9CisKK3N0YXRpYyBpbnQzMl90IG9uSW5wdXRFdmVudChzdHJ1Y3QgYW5kcm9pZF9h
cHAgKmFwcCwgQUlucHV0RXZlbnQgKmV2ZW50KQoreworICAgIC8vIFRPRE86IEhhbmRsZSBpbnB1
dCBldmVudHMKKyAgICByZXR1cm4gMDsgIC8vIDAgPT0gbm90IGhhbmRsZWQKK30KKwordm9pZCBh
bmRyb2lkX21haW4oc3RydWN0IGFuZHJvaWRfYXBwICphcHApCit7CisgICAgaW50IGV2ZW50czsK
KyAgICBzdHJ1Y3QgYW5kcm9pZF9wb2xsX3NvdXJjZSAqc291cmNlOworCisgICAgc0FwcCA9IGFw
cDsKKyAgICBwdGhyZWFkX211dGV4X2luaXQoJnNJbml0V2luZG93TXV0ZXgsIG51bGxwdHIpOwor
ICAgIHB0aHJlYWRfY29uZF9pbml0KCZzSW5pdFdpbmRvd0NvbmQsIG51bGxwdHIpOworCisgICAg
Ly8gRXZlbnQgaGFuZGxlcnMsIGludm9rZWQgZnJvbSBzb3VyY2UtPnByb2Nlc3MoKQorICAgIGFw
cC0+b25BcHBDbWQgPSBvbkFwcENtZDsKKyAgICBhcHAtPm9uSW5wdXRFdmVudCA9IG9uSW5wdXRF
dmVudDsKKworICAgIC8vIE1lc3NhZ2UgbG9vcCwgcG9sbGluZyBmb3IgZXZlbnRzIGluZGVmaW5p
dGVseSAoZHVlIHRvIC0xIHRpbWVvdXQpCisgICAgLy8gTXVzdCBiZSBoZXJlIGluIG9yZGVyIHRv
IGhhbmRsZSBBUFBfQ01EX0lOSVRfV0lORE9XIGV2ZW50LAorICAgIC8vIHdoaWNoIG9jY3VycyBh
ZnRlciBBbmRyb2lkV2luZG93Ojppbml0aWFsaXplKCksIGJ1dCBiZWZvcmUgQW5kcm9pZFdpbmRv
dzo6bWVzc2FnZUxvb3AKKyAgICB3aGlsZSAoQUxvb3Blcl9wb2xsQWxsKC0xLCBudWxscHRyLCAm
ZXZlbnRzLCByZWludGVycHJldF9jYXN0PHZvaWQgKio+KCZzb3VyY2UpKSA+PSAwKQorICAgIHsK
KyAgICAgICAgaWYgKHNvdXJjZSAhPSBudWxscHRyKQorICAgICAgICB7CisgICAgICAgICAgICBz
b3VyY2UtPnByb2Nlc3MoYXBwLCBzb3VyY2UpOworICAgICAgICB9CisgICAgfQorfQpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9hbmRyb2lkL0FuZHJvaWRXaW5kb3cuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL2FuZHJvaWQvQW5kcm9pZFdp
bmRvdy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvYW5k
cm9pZC9BbmRyb2lkV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBAQAorLy8K
Ky8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vCisKKy8vIEFuZHJvaWRXaW5kb3cuaDogRGVmaW5pdGlvbiBvZiB0aGUgaW1wbGVt
ZW50YXRpb24gb2YgT1NXaW5kb3cgZm9yIEFuZHJvaWQKKworI2lmbmRlZiBVVElMX0FORFJPSURf
V0lORE9XX0hfCisjZGVmaW5lIFVUSUxfQU5EUk9JRF9XSU5ET1dfSF8KKworI2luY2x1ZGUgIk9T
V2luZG93LmgiCisKK2NsYXNzIEFuZHJvaWRXaW5kb3cgOiBwdWJsaWMgT1NXaW5kb3cKK3sKKyAg
cHVibGljOgorICAgIEFuZHJvaWRXaW5kb3coKTsKKyAgICB+QW5kcm9pZFdpbmRvdygpIG92ZXJy
aWRlOworCisgICAgYm9vbCBpbml0aWFsaXplKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lLCBzaXpl
X3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQpIG92ZXJyaWRlOworICAgIHZvaWQgZGVzdHJveSgpIG92
ZXJyaWRlOworCisgICAgRUdMTmF0aXZlV2luZG93VHlwZSBnZXROYXRpdmVXaW5kb3coKSBjb25z
dCBvdmVycmlkZTsKKyAgICBFR0xOYXRpdmVEaXNwbGF5VHlwZSBnZXROYXRpdmVEaXNwbGF5KCkg
Y29uc3Qgb3ZlcnJpZGU7CisKKyAgICB2b2lkIG1lc3NhZ2VMb29wKCkgb3ZlcnJpZGU7CisKKyAg
ICB2b2lkIHNldE1vdXNlUG9zaXRpb24oaW50IHgsIGludCB5KSBvdmVycmlkZTsKKyAgICBib29s
IHNldFBvc2l0aW9uKGludCB4LCBpbnQgeSkgb3ZlcnJpZGU7CisgICAgYm9vbCByZXNpemUoaW50
IHdpZHRoLCBpbnQgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFZpc2libGUoYm9vbCBp
c1Zpc2libGUpIG92ZXJyaWRlOworCisgICAgdm9pZCBzaWduYWxUZXN0RXZlbnQoKSBvdmVycmlk
ZTsKK307CisKKyNlbmRpZiAvKiBVVElMX0FORFJPSURfV0lORE9XX0hfICovCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL2FuZHJvaWQvdGhpcmRfcGFydHkvUkVBRE1FLmFuZ2xl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvYW5kcm9pZC90aGly
ZF9wYXJ0eS9SRUFETUUuYW5nbGUJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvdXRpbC9hbmRyb2lkL3RoaXJkX3BhcnR5L1JFQURNRS5hbmdsZQkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDggQEAKK05hbWU6IGFuZHJvaWRfbmF0aXZlX2FwcF9nbHVlCitVUkw6IGh0
dHBzOi8vYW5kcm9pZC5nb29nbGVzb3VyY2UuY29tL3BsYXRmb3JtL25kay8rLzY1OTY2ZDUwMzNh
ZjM2MTM0MTM1ZDEzMDhiZGM2MmIyMTZhNWE0MTQvc291cmNlcy9hbmRyb2lkL25hdGl2ZV9hcHBf
Z2x1ZQorVmVyc2lvbjogNjU5NjZkNTAzM2FmMzYxMzQxMzVkMTMwOGJkYzYyYjIxNmE1YTQxNAor
TGljZW5zZTogQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wCitMaWNlbnNlIEZpbGU6IGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitEZXNjcmlwdGlvbjoKK0hl
bHBlciBnbHVlIGNvZGUgZm9yIEFOYXRpdmVBY3Rpdml0eSBpbXBsZW1lbnRhdGlvbnMKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGls
L2FuZHJvaWQvdGhpcmRfcGFydHkvYW5kcm9pZF9uYXRpdmVfYXBwX2dsdWUuYwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL2FuZHJvaWQvdGhpcmRfcGFydHkvYW5k
cm9pZF9uYXRpdmVfYXBwX2dsdWUuYwkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS91dGlsL2FuZHJvaWQvdGhpcmRfcGFydHkvYW5kcm9pZF9uYXRpdmVfYXBwX2dsdWUu
Ywkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisg
KiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAq
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworCisjaW5jbHVk
ZSA8am5pLmg+CisKKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2lu
Y2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN5cy9yZXNv
dXJjZS5oPgorCisjaW5jbHVkZSAiYW5kcm9pZF9uYXRpdmVfYXBwX2dsdWUuaCIKKyNpbmNsdWRl
IDxhbmRyb2lkL2xvZy5oPgorCisjZGVmaW5lIExPR0koLi4uKSAoKHZvaWQpX19hbmRyb2lkX2xv
Z19wcmludChBTkRST0lEX0xPR19JTkZPLCAidGhyZWFkZWRfYXBwIiwgX19WQV9BUkdTX18pKQor
I2RlZmluZSBMT0dFKC4uLikgKCh2b2lkKV9fYW5kcm9pZF9sb2dfcHJpbnQoQU5EUk9JRF9MT0df
RVJST1IsICJ0aHJlYWRlZF9hcHAiLCBfX1ZBX0FSR1NfXykpCisKKy8qIEZvciBkZWJ1ZyBidWls
ZHMsIGFsd2F5cyBlbmFibGUgdGhlIGRlYnVnIHRyYWNlcyBpbiB0aGlzIGxpYnJhcnkgKi8KKyNp
Zm5kZWYgTkRFQlVHCisjICBkZWZpbmUgTE9HViguLi4pICAoKHZvaWQpX19hbmRyb2lkX2xvZ19w
cmludChBTkRST0lEX0xPR19WRVJCT1NFLCAidGhyZWFkZWRfYXBwIiwgX19WQV9BUkdTX18pKQor
I2Vsc2UKKyMgIGRlZmluZSBMT0dWKC4uLikgICgodm9pZCkwKQorI2VuZGlmCisKK3N0YXRpYyB2
b2lkIGZyZWVfc2F2ZWRfc3RhdGUoc3RydWN0IGFuZHJvaWRfYXBwKiBhbmRyb2lkX2FwcCkgewor
ICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmYW5kcm9pZF9hcHAtPm11dGV4KTsKKyAgICBpZiAoYW5k
cm9pZF9hcHAtPnNhdmVkU3RhdGUgIT0gTlVMTCkgeworICAgICAgICBmcmVlKGFuZHJvaWRfYXBw
LT5zYXZlZFN0YXRlKTsKKyAgICAgICAgYW5kcm9pZF9hcHAtPnNhdmVkU3RhdGUgPSBOVUxMOwor
ICAgICAgICBhbmRyb2lkX2FwcC0+c2F2ZWRTdGF0ZVNpemUgPSAwOworICAgIH0KKyAgICBwdGhy
ZWFkX211dGV4X3VubG9jaygmYW5kcm9pZF9hcHAtPm11dGV4KTsKK30KKworaW50OF90IGFuZHJv
aWRfYXBwX3JlYWRfY21kKHN0cnVjdCBhbmRyb2lkX2FwcCogYW5kcm9pZF9hcHApIHsKKyAgICBp
bnQ4X3QgY21kOworICAgIGlmIChyZWFkKGFuZHJvaWRfYXBwLT5tc2dyZWFkLCAmY21kLCBzaXpl
b2YoY21kKSkgPT0gc2l6ZW9mKGNtZCkpIHsKKyAgICAgICAgc3dpdGNoIChjbWQpIHsKKyAgICAg
ICAgICAgIGNhc2UgQVBQX0NNRF9TQVZFX1NUQVRFOgorICAgICAgICAgICAgICAgIGZyZWVfc2F2
ZWRfc3RhdGUoYW5kcm9pZF9hcHApOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBjbWQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTE9HRSgiTm8gZGF0
YSBvbiBjb21tYW5kIHBpcGUhIik7CisgICAgfQorICAgIHJldHVybiAtMTsKK30KKworc3RhdGlj
IHZvaWQgcHJpbnRfY3VyX2NvbmZpZyhzdHJ1Y3QgYW5kcm9pZF9hcHAqIGFuZHJvaWRfYXBwKSB7
CisgICAgY2hhciBsYW5nWzJdLCBjb3VudHJ5WzJdOworICAgIEFDb25maWd1cmF0aW9uX2dldExh
bmd1YWdlKGFuZHJvaWRfYXBwLT5jb25maWcsIGxhbmcpOworICAgIEFDb25maWd1cmF0aW9uX2dl
dENvdW50cnkoYW5kcm9pZF9hcHAtPmNvbmZpZywgY291bnRyeSk7CisKKyAgICBMT0dWKCJDb25m
aWc6IG1jYz0lZCBtbmM9JWQgbGFuZz0lYyVjIGNudD0lYyVjIG9yaWVuPSVkIHRvdWNoPSVkIGRl
bnM9JWQgIgorICAgICAgICAgICAgImtleXM9JWQgbmF2PSVkIGtleXNIaWQ9JWQgbmF2SGlkPSVk
IHNkaz0lZCBzaXplPSVkIGxvbmc9JWQgIgorICAgICAgICAgICAgIm1vZGV0eXBlPSVkIG1vZGVu
aWdodD0lZCIsCisgICAgICAgICAgICBBQ29uZmlndXJhdGlvbl9nZXRNY2MoYW5kcm9pZF9hcHAt
PmNvbmZpZyksCisgICAgICAgICAgICBBQ29uZmlndXJhdGlvbl9nZXRNbmMoYW5kcm9pZF9hcHAt
PmNvbmZpZyksCisgICAgICAgICAgICBsYW5nWzBdLCBsYW5nWzFdLCBjb3VudHJ5WzBdLCBjb3Vu
dHJ5WzFdLAorICAgICAgICAgICAgQUNvbmZpZ3VyYXRpb25fZ2V0T3JpZW50YXRpb24oYW5kcm9p
ZF9hcHAtPmNvbmZpZyksCisgICAgICAgICAgICBBQ29uZmlndXJhdGlvbl9nZXRUb3VjaHNjcmVl
bihhbmRyb2lkX2FwcC0+Y29uZmlnKSwKKyAgICAgICAgICAgIEFDb25maWd1cmF0aW9uX2dldERl
bnNpdHkoYW5kcm9pZF9hcHAtPmNvbmZpZyksCisgICAgICAgICAgICBBQ29uZmlndXJhdGlvbl9n
ZXRLZXlib2FyZChhbmRyb2lkX2FwcC0+Y29uZmlnKSwKKyAgICAgICAgICAgIEFDb25maWd1cmF0
aW9uX2dldE5hdmlnYXRpb24oYW5kcm9pZF9hcHAtPmNvbmZpZyksCisgICAgICAgICAgICBBQ29u
ZmlndXJhdGlvbl9nZXRLZXlzSGlkZGVuKGFuZHJvaWRfYXBwLT5jb25maWcpLAorICAgICAgICAg
ICAgQUNvbmZpZ3VyYXRpb25fZ2V0TmF2SGlkZGVuKGFuZHJvaWRfYXBwLT5jb25maWcpLAorICAg
ICAgICAgICAgQUNvbmZpZ3VyYXRpb25fZ2V0U2RrVmVyc2lvbihhbmRyb2lkX2FwcC0+Y29uZmln
KSwKKyAgICAgICAgICAgIEFDb25maWd1cmF0aW9uX2dldFNjcmVlblNpemUoYW5kcm9pZF9hcHAt
PmNvbmZpZyksCisgICAgICAgICAgICBBQ29uZmlndXJhdGlvbl9nZXRTY3JlZW5Mb25nKGFuZHJv
aWRfYXBwLT5jb25maWcpLAorICAgICAgICAgICAgQUNvbmZpZ3VyYXRpb25fZ2V0VWlNb2RlVHlw
ZShhbmRyb2lkX2FwcC0+Y29uZmlnKSwKKyAgICAgICAgICAgIEFDb25maWd1cmF0aW9uX2dldFVp
TW9kZU5pZ2h0KGFuZHJvaWRfYXBwLT5jb25maWcpKTsKK30KKwordm9pZCBhbmRyb2lkX2FwcF9w
cmVfZXhlY19jbWQoc3RydWN0IGFuZHJvaWRfYXBwKiBhbmRyb2lkX2FwcCwgaW50OF90IGNtZCkg
eworICAgIHN3aXRjaCAoY21kKSB7CisgICAgICAgIGNhc2UgQVBQX0NNRF9JTlBVVF9DSEFOR0VE
OgorICAgICAgICAgICAgTE9HVigiQVBQX0NNRF9JTlBVVF9DSEFOR0VEXG4iKTsKKyAgICAgICAg
ICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmYW5kcm9pZF9hcHAtPm11dGV4KTsKKyAgICAgICAgICAg
IGlmIChhbmRyb2lkX2FwcC0+aW5wdXRRdWV1ZSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAg
QUlucHV0UXVldWVfZGV0YWNoTG9vcGVyKGFuZHJvaWRfYXBwLT5pbnB1dFF1ZXVlKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGFuZHJvaWRfYXBwLT5pbnB1dFF1ZXVlID0gYW5kcm9pZF9h
cHAtPnBlbmRpbmdJbnB1dFF1ZXVlOworICAgICAgICAgICAgaWYgKGFuZHJvaWRfYXBwLT5pbnB1
dFF1ZXVlICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBMT0dWKCJBdHRhY2hpbmcgaW5wdXQg
cXVldWUgdG8gbG9vcGVyIik7CisgICAgICAgICAgICAgICAgQUlucHV0UXVldWVfYXR0YWNoTG9v
cGVyKGFuZHJvaWRfYXBwLT5pbnB1dFF1ZXVlLAorICAgICAgICAgICAgICAgICAgICAgICAgYW5k
cm9pZF9hcHAtPmxvb3BlciwgTE9PUEVSX0lEX0lOUFVULCBOVUxMLAorICAgICAgICAgICAgICAg
ICAgICAgICAgJmFuZHJvaWRfYXBwLT5pbnB1dFBvbGxTb3VyY2UpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgcHRocmVhZF9jb25kX2Jyb2FkY2FzdCgmYW5kcm9pZF9hcHAtPmNvbmQpOwor
ICAgICAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmFuZHJvaWRfYXBwLT5tdXRleCk7Cisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEFQUF9DTURfSU5JVF9XSU5ET1c6Cisg
ICAgICAgICAgICBMT0dWKCJBUFBfQ01EX0lOSVRfV0lORE9XXG4iKTsKKyAgICAgICAgICAgIHB0
aHJlYWRfbXV0ZXhfbG9jaygmYW5kcm9pZF9hcHAtPm11dGV4KTsKKyAgICAgICAgICAgIGFuZHJv
aWRfYXBwLT53aW5kb3cgPSBhbmRyb2lkX2FwcC0+cGVuZGluZ1dpbmRvdzsKKyAgICAgICAgICAg
IHB0aHJlYWRfY29uZF9icm9hZGNhc3QoJmFuZHJvaWRfYXBwLT5jb25kKTsKKyAgICAgICAgICAg
IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZhbmRyb2lkX2FwcC0+bXV0ZXgpOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBBUFBfQ01EX1RFUk1fV0lORE9XOgorICAgICAgICAgICAg
TE9HVigiQVBQX0NNRF9URVJNX1dJTkRPV1xuIik7CisgICAgICAgICAgICBwdGhyZWFkX2NvbmRf
YnJvYWRjYXN0KCZhbmRyb2lkX2FwcC0+Y29uZCk7CisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBjYXNlIEFQUF9DTURfUkVTVU1FOgorICAgICAgICBjYXNlIEFQUF9DTURfU1RBUlQ6Cisg
ICAgICAgIGNhc2UgQVBQX0NNRF9QQVVTRToKKyAgICAgICAgY2FzZSBBUFBfQ01EX1NUT1A6Cisg
ICAgICAgICAgICBMT0dWKCJhY3Rpdml0eVN0YXRlPSVkXG4iLCBjbWQpOworICAgICAgICAgICAg
cHRocmVhZF9tdXRleF9sb2NrKCZhbmRyb2lkX2FwcC0+bXV0ZXgpOworICAgICAgICAgICAgYW5k
cm9pZF9hcHAtPmFjdGl2aXR5U3RhdGUgPSBjbWQ7CisgICAgICAgICAgICBwdGhyZWFkX2NvbmRf
YnJvYWRjYXN0KCZhbmRyb2lkX2FwcC0+Y29uZCk7CisgICAgICAgICAgICBwdGhyZWFkX211dGV4
X3VubG9jaygmYW5kcm9pZF9hcHAtPm11dGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2UgQVBQX0NNRF9DT05GSUdfQ0hBTkdFRDoKKyAgICAgICAgICAgIExPR1YoIkFQUF9D
TURfQ09ORklHX0NIQU5HRURcbiIpOworICAgICAgICAgICAgQUNvbmZpZ3VyYXRpb25fZnJvbUFz
c2V0TWFuYWdlcihhbmRyb2lkX2FwcC0+Y29uZmlnLAorICAgICAgICAgICAgICAgICAgICBhbmRy
b2lkX2FwcC0+YWN0aXZpdHktPmFzc2V0TWFuYWdlcik7CisgICAgICAgICAgICBwcmludF9jdXJf
Y29uZmlnKGFuZHJvaWRfYXBwKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug
QVBQX0NNRF9ERVNUUk9ZOgorICAgICAgICAgICAgTE9HVigiQVBQX0NNRF9ERVNUUk9ZXG4iKTsK
KyAgICAgICAgICAgIGFuZHJvaWRfYXBwLT5kZXN0cm95UmVxdWVzdGVkID0gMTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBhbmRyb2lkX2FwcF9wb3N0X2V4ZWNfY21kKHN0
cnVjdCBhbmRyb2lkX2FwcCogYW5kcm9pZF9hcHAsIGludDhfdCBjbWQpIHsKKyAgICBzd2l0Y2gg
KGNtZCkgeworICAgICAgICBjYXNlIEFQUF9DTURfVEVSTV9XSU5ET1c6CisgICAgICAgICAgICBM
T0dWKCJBUFBfQ01EX1RFUk1fV0lORE9XXG4iKTsKKyAgICAgICAgICAgIHB0aHJlYWRfbXV0ZXhf
bG9jaygmYW5kcm9pZF9hcHAtPm11dGV4KTsKKyAgICAgICAgICAgIGFuZHJvaWRfYXBwLT53aW5k
b3cgPSBOVUxMOworICAgICAgICAgICAgcHRocmVhZF9jb25kX2Jyb2FkY2FzdCgmYW5kcm9pZF9h
cHAtPmNvbmQpOworICAgICAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmFuZHJvaWRfYXBw
LT5tdXRleCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEFQUF9DTURfU0FW
RV9TVEFURToKKyAgICAgICAgICAgIExPR1YoIkFQUF9DTURfU0FWRV9TVEFURVxuIik7CisgICAg
ICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soJmFuZHJvaWRfYXBwLT5tdXRleCk7CisgICAgICAg
ICAgICBhbmRyb2lkX2FwcC0+c3RhdGVTYXZlZCA9IDE7CisgICAgICAgICAgICBwdGhyZWFkX2Nv
bmRfYnJvYWRjYXN0KCZhbmRyb2lkX2FwcC0+Y29uZCk7CisgICAgICAgICAgICBwdGhyZWFkX211
dGV4X3VubG9jaygmYW5kcm9pZF9hcHAtPm11dGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGNhc2UgQVBQX0NNRF9SRVNVTUU6CisgICAgICAgICAgICBmcmVlX3NhdmVkX3N0YXRl
KGFuZHJvaWRfYXBwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBhcHBf
ZHVtbXkoKSB7CisKK30KKworc3RhdGljIHZvaWQgYW5kcm9pZF9hcHBfZGVzdHJveShzdHJ1Y3Qg
YW5kcm9pZF9hcHAqIGFuZHJvaWRfYXBwKSB7CisgICAgTE9HVigiYW5kcm9pZF9hcHBfZGVzdHJv
eSEiKTsKKyAgICBmcmVlX3NhdmVkX3N0YXRlKGFuZHJvaWRfYXBwKTsKKyAgICBwdGhyZWFkX211
dGV4X2xvY2soJmFuZHJvaWRfYXBwLT5tdXRleCk7CisgICAgaWYgKGFuZHJvaWRfYXBwLT5pbnB1
dFF1ZXVlICE9IE5VTEwpIHsKKyAgICAgICAgQUlucHV0UXVldWVfZGV0YWNoTG9vcGVyKGFuZHJv
aWRfYXBwLT5pbnB1dFF1ZXVlKTsKKyAgICB9CisgICAgQUNvbmZpZ3VyYXRpb25fZGVsZXRlKGFu
ZHJvaWRfYXBwLT5jb25maWcpOworICAgIGFuZHJvaWRfYXBwLT5kZXN0cm95ZWQgPSAxOworICAg
IHB0aHJlYWRfY29uZF9icm9hZGNhc3QoJmFuZHJvaWRfYXBwLT5jb25kKTsKKyAgICBwdGhyZWFk
X211dGV4X3VubG9jaygmYW5kcm9pZF9hcHAtPm11dGV4KTsKKyAgICAvLyBDYW4ndCB0b3VjaCBh
bmRyb2lkX2FwcCBvYmplY3QgYWZ0ZXIgdGhpcy4KK30KKworc3RhdGljIHZvaWQgcHJvY2Vzc19p
bnB1dChzdHJ1Y3QgYW5kcm9pZF9hcHAqIGFwcCwgc3RydWN0IGFuZHJvaWRfcG9sbF9zb3VyY2Uq
IHNvdXJjZSkgeworICAgIEFJbnB1dEV2ZW50KiBldmVudCA9IE5VTEw7CisgICAgd2hpbGUgKEFJ
bnB1dFF1ZXVlX2dldEV2ZW50KGFwcC0+aW5wdXRRdWV1ZSwgJmV2ZW50KSA+PSAwKSB7CisgICAg
ICAgIExPR1YoIk5ldyBpbnB1dCBldmVudDogdHlwZT0lZFxuIiwgQUlucHV0RXZlbnRfZ2V0VHlw
ZShldmVudCkpOworICAgICAgICBpZiAoQUlucHV0UXVldWVfcHJlRGlzcGF0Y2hFdmVudChhcHAt
PmlucHV0UXVldWUsIGV2ZW50KSkgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KyAgICAgICAgaW50MzJfdCBoYW5kbGVkID0gMDsKKyAgICAgICAgaWYgKGFwcC0+b25JbnB1dEV2
ZW50ICE9IE5VTEwpIGhhbmRsZWQgPSBhcHAtPm9uSW5wdXRFdmVudChhcHAsIGV2ZW50KTsKKyAg
ICAgICAgQUlucHV0UXVldWVfZmluaXNoRXZlbnQoYXBwLT5pbnB1dFF1ZXVlLCBldmVudCwgaGFu
ZGxlZCk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBwcm9jZXNzX2NtZChzdHJ1Y3QgYW5kcm9p
ZF9hcHAqIGFwcCwgc3RydWN0IGFuZHJvaWRfcG9sbF9zb3VyY2UqIHNvdXJjZSkgeworICAgIGlu
dDhfdCBjbWQgPSBhbmRyb2lkX2FwcF9yZWFkX2NtZChhcHApOworICAgIGFuZHJvaWRfYXBwX3By
ZV9leGVjX2NtZChhcHAsIGNtZCk7CisgICAgaWYgKGFwcC0+b25BcHBDbWQgIT0gTlVMTCkgYXBw
LT5vbkFwcENtZChhcHAsIGNtZCk7CisgICAgYW5kcm9pZF9hcHBfcG9zdF9leGVjX2NtZChhcHAs
IGNtZCk7Cit9CisKK3N0YXRpYyB2b2lkKiBhbmRyb2lkX2FwcF9lbnRyeSh2b2lkKiBwYXJhbSkg
eworICAgIHN0cnVjdCBhbmRyb2lkX2FwcCogYW5kcm9pZF9hcHAgPSAoc3RydWN0IGFuZHJvaWRf
YXBwKilwYXJhbTsKKworICAgIGFuZHJvaWRfYXBwLT5jb25maWcgPSBBQ29uZmlndXJhdGlvbl9u
ZXcoKTsKKyAgICBBQ29uZmlndXJhdGlvbl9mcm9tQXNzZXRNYW5hZ2VyKGFuZHJvaWRfYXBwLT5j
b25maWcsIGFuZHJvaWRfYXBwLT5hY3Rpdml0eS0+YXNzZXRNYW5hZ2VyKTsKKworICAgIHByaW50
X2N1cl9jb25maWcoYW5kcm9pZF9hcHApOworCisgICAgYW5kcm9pZF9hcHAtPmNtZFBvbGxTb3Vy
Y2UuaWQgPSBMT09QRVJfSURfTUFJTjsKKyAgICBhbmRyb2lkX2FwcC0+Y21kUG9sbFNvdXJjZS5h
cHAgPSBhbmRyb2lkX2FwcDsKKyAgICBhbmRyb2lkX2FwcC0+Y21kUG9sbFNvdXJjZS5wcm9jZXNz
ID0gcHJvY2Vzc19jbWQ7CisgICAgYW5kcm9pZF9hcHAtPmlucHV0UG9sbFNvdXJjZS5pZCA9IExP
T1BFUl9JRF9JTlBVVDsKKyAgICBhbmRyb2lkX2FwcC0+aW5wdXRQb2xsU291cmNlLmFwcCA9IGFu
ZHJvaWRfYXBwOworICAgIGFuZHJvaWRfYXBwLT5pbnB1dFBvbGxTb3VyY2UucHJvY2VzcyA9IHBy
b2Nlc3NfaW5wdXQ7CisKKyAgICBBTG9vcGVyKiBsb29wZXIgPSBBTG9vcGVyX3ByZXBhcmUoQUxP
T1BFUl9QUkVQQVJFX0FMTE9XX05PTl9DQUxMQkFDS1MpOworICAgIEFMb29wZXJfYWRkRmQobG9v
cGVyLCBhbmRyb2lkX2FwcC0+bXNncmVhZCwgTE9PUEVSX0lEX01BSU4sIEFMT09QRVJfRVZFTlRf
SU5QVVQsIE5VTEwsCisgICAgICAgICAgICAmYW5kcm9pZF9hcHAtPmNtZFBvbGxTb3VyY2UpOwor
ICAgIGFuZHJvaWRfYXBwLT5sb29wZXIgPSBsb29wZXI7CisKKyAgICBwdGhyZWFkX211dGV4X2xv
Y2soJmFuZHJvaWRfYXBwLT5tdXRleCk7CisgICAgYW5kcm9pZF9hcHAtPnJ1bm5pbmcgPSAxOwor
ICAgIHB0aHJlYWRfY29uZF9icm9hZGNhc3QoJmFuZHJvaWRfYXBwLT5jb25kKTsKKyAgICBwdGhy
ZWFkX211dGV4X3VubG9jaygmYW5kcm9pZF9hcHAtPm11dGV4KTsKKworICAgIGFuZHJvaWRfbWFp
bihhbmRyb2lkX2FwcCk7CisKKyAgICBhbmRyb2lkX2FwcF9kZXN0cm95KGFuZHJvaWRfYXBwKTsK
KyAgICByZXR1cm4gTlVMTDsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIE5hdGl2ZSBhY3Rpdml0
eSBpbnRlcmFjdGlvbiAoY2FsbGVkIGZyb20gbWFpbiB0aHJlYWQpCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitzdGF0aWMgc3RydWN0IGFuZHJvaWRfYXBwKiBhbmRyb2lkX2FwcF9jcmVhdGUoQU5hdGl2ZUFj
dGl2aXR5KiBhY3Rpdml0eSwKKyAgICAgICAgdm9pZCogc2F2ZWRTdGF0ZSwgc2l6ZV90IHNhdmVk
U3RhdGVTaXplKSB7CisgICAgc3RydWN0IGFuZHJvaWRfYXBwKiBhbmRyb2lkX2FwcCA9IChzdHJ1
Y3QgYW5kcm9pZF9hcHAqKW1hbGxvYyhzaXplb2Yoc3RydWN0IGFuZHJvaWRfYXBwKSk7CisgICAg
bWVtc2V0KGFuZHJvaWRfYXBwLCAwLCBzaXplb2Yoc3RydWN0IGFuZHJvaWRfYXBwKSk7CisgICAg
YW5kcm9pZF9hcHAtPmFjdGl2aXR5ID0gYWN0aXZpdHk7CisKKyAgICBwdGhyZWFkX211dGV4X2lu
aXQoJmFuZHJvaWRfYXBwLT5tdXRleCwgTlVMTCk7CisgICAgcHRocmVhZF9jb25kX2luaXQoJmFu
ZHJvaWRfYXBwLT5jb25kLCBOVUxMKTsKKworICAgIGlmIChzYXZlZFN0YXRlICE9IE5VTEwpIHsK
KyAgICAgICAgYW5kcm9pZF9hcHAtPnNhdmVkU3RhdGUgPSBtYWxsb2Moc2F2ZWRTdGF0ZVNpemUp
OworICAgICAgICBhbmRyb2lkX2FwcC0+c2F2ZWRTdGF0ZVNpemUgPSBzYXZlZFN0YXRlU2l6ZTsK
KyAgICAgICAgbWVtY3B5KGFuZHJvaWRfYXBwLT5zYXZlZFN0YXRlLCBzYXZlZFN0YXRlLCBzYXZl
ZFN0YXRlU2l6ZSk7CisgICAgfQorCisgICAgaW50IG1zZ3BpcGVbMl07CisgICAgaWYgKHBpcGUo
bXNncGlwZSkpIHsKKyAgICAgICAgTE9HRSgiY291bGQgbm90IGNyZWF0ZSBwaXBlOiAlcyIsIHN0
cmVycm9yKGVycm5vKSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBhbmRyb2lk
X2FwcC0+bXNncmVhZCA9IG1zZ3BpcGVbMF07CisgICAgYW5kcm9pZF9hcHAtPm1zZ3dyaXRlID0g
bXNncGlwZVsxXTsKKworICAgIHB0aHJlYWRfYXR0cl90IGF0dHI7CisgICAgcHRocmVhZF9hdHRy
X2luaXQoJmF0dHIpOworICAgIHB0aHJlYWRfYXR0cl9zZXRkZXRhY2hzdGF0ZSgmYXR0ciwgUFRI
UkVBRF9DUkVBVEVfREVUQUNIRUQpOworICAgIHB0aHJlYWRfY3JlYXRlKCZhbmRyb2lkX2FwcC0+
dGhyZWFkLCAmYXR0ciwgYW5kcm9pZF9hcHBfZW50cnksIGFuZHJvaWRfYXBwKTsKKworICAgIC8v
IFdhaXQgZm9yIHRocmVhZCB0byBzdGFydC4KKyAgICBwdGhyZWFkX211dGV4X2xvY2soJmFuZHJv
aWRfYXBwLT5tdXRleCk7CisgICAgd2hpbGUgKCFhbmRyb2lkX2FwcC0+cnVubmluZykgeworICAg
ICAgICBwdGhyZWFkX2NvbmRfd2FpdCgmYW5kcm9pZF9hcHAtPmNvbmQsICZhbmRyb2lkX2FwcC0+
bXV0ZXgpOworICAgIH0KKyAgICBwdGhyZWFkX211dGV4X3VubG9jaygmYW5kcm9pZF9hcHAtPm11
dGV4KTsKKworICAgIHJldHVybiBhbmRyb2lkX2FwcDsKK30KKworc3RhdGljIHZvaWQgYW5kcm9p
ZF9hcHBfd3JpdGVfY21kKHN0cnVjdCBhbmRyb2lkX2FwcCogYW5kcm9pZF9hcHAsIGludDhfdCBj
bWQpIHsKKyAgICBpZiAod3JpdGUoYW5kcm9pZF9hcHAtPm1zZ3dyaXRlLCAmY21kLCBzaXplb2Yo
Y21kKSkgIT0gc2l6ZW9mKGNtZCkpIHsKKyAgICAgICAgTE9HRSgiRmFpbHVyZSB3cml0aW5nIGFu
ZHJvaWRfYXBwIGNtZDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7CisgICAgfQorfQorCitzdGF0
aWMgdm9pZCBhbmRyb2lkX2FwcF9zZXRfaW5wdXQoc3RydWN0IGFuZHJvaWRfYXBwKiBhbmRyb2lk
X2FwcCwgQUlucHV0UXVldWUqIGlucHV0UXVldWUpIHsKKyAgICBwdGhyZWFkX211dGV4X2xvY2so
JmFuZHJvaWRfYXBwLT5tdXRleCk7CisgICAgYW5kcm9pZF9hcHAtPnBlbmRpbmdJbnB1dFF1ZXVl
ID0gaW5wdXRRdWV1ZTsKKyAgICBhbmRyb2lkX2FwcF93cml0ZV9jbWQoYW5kcm9pZF9hcHAsIEFQ
UF9DTURfSU5QVVRfQ0hBTkdFRCk7CisgICAgd2hpbGUgKGFuZHJvaWRfYXBwLT5pbnB1dFF1ZXVl
ICE9IGFuZHJvaWRfYXBwLT5wZW5kaW5nSW5wdXRRdWV1ZSkgeworICAgICAgICBwdGhyZWFkX2Nv
bmRfd2FpdCgmYW5kcm9pZF9hcHAtPmNvbmQsICZhbmRyb2lkX2FwcC0+bXV0ZXgpOworICAgIH0K
KyAgICBwdGhyZWFkX211dGV4X3VubG9jaygmYW5kcm9pZF9hcHAtPm11dGV4KTsKK30KKworc3Rh
dGljIHZvaWQgYW5kcm9pZF9hcHBfc2V0X3dpbmRvdyhzdHJ1Y3QgYW5kcm9pZF9hcHAqIGFuZHJv
aWRfYXBwLCBBTmF0aXZlV2luZG93KiB3aW5kb3cpIHsKKyAgICBwdGhyZWFkX211dGV4X2xvY2so
JmFuZHJvaWRfYXBwLT5tdXRleCk7CisgICAgaWYgKGFuZHJvaWRfYXBwLT5wZW5kaW5nV2luZG93
ICE9IE5VTEwpIHsKKyAgICAgICAgYW5kcm9pZF9hcHBfd3JpdGVfY21kKGFuZHJvaWRfYXBwLCBB
UFBfQ01EX1RFUk1fV0lORE9XKTsKKyAgICB9CisgICAgYW5kcm9pZF9hcHAtPnBlbmRpbmdXaW5k
b3cgPSB3aW5kb3c7CisgICAgaWYgKHdpbmRvdyAhPSBOVUxMKSB7CisgICAgICAgIGFuZHJvaWRf
YXBwX3dyaXRlX2NtZChhbmRyb2lkX2FwcCwgQVBQX0NNRF9JTklUX1dJTkRPVyk7CisgICAgfQor
ICAgIHdoaWxlIChhbmRyb2lkX2FwcC0+d2luZG93ICE9IGFuZHJvaWRfYXBwLT5wZW5kaW5nV2lu
ZG93KSB7CisgICAgICAgIHB0aHJlYWRfY29uZF93YWl0KCZhbmRyb2lkX2FwcC0+Y29uZCwgJmFu
ZHJvaWRfYXBwLT5tdXRleCk7CisgICAgfQorICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZhbmRy
b2lkX2FwcC0+bXV0ZXgpOworfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX2FwcF9zZXRfYWN0aXZp
dHlfc3RhdGUoc3RydWN0IGFuZHJvaWRfYXBwKiBhbmRyb2lkX2FwcCwgaW50OF90IGNtZCkgewor
ICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmYW5kcm9pZF9hcHAtPm11dGV4KTsKKyAgICBhbmRyb2lk
X2FwcF93cml0ZV9jbWQoYW5kcm9pZF9hcHAsIGNtZCk7CisgICAgd2hpbGUgKGFuZHJvaWRfYXBw
LT5hY3Rpdml0eVN0YXRlICE9IGNtZCkgeworICAgICAgICBwdGhyZWFkX2NvbmRfd2FpdCgmYW5k
cm9pZF9hcHAtPmNvbmQsICZhbmRyb2lkX2FwcC0+bXV0ZXgpOworICAgIH0KKyAgICBwdGhyZWFk
X211dGV4X3VubG9jaygmYW5kcm9pZF9hcHAtPm11dGV4KTsKK30KKworc3RhdGljIHZvaWQgYW5k
cm9pZF9hcHBfZnJlZShzdHJ1Y3QgYW5kcm9pZF9hcHAqIGFuZHJvaWRfYXBwKSB7CisgICAgcHRo
cmVhZF9tdXRleF9sb2NrKCZhbmRyb2lkX2FwcC0+bXV0ZXgpOworICAgIGFuZHJvaWRfYXBwX3dy
aXRlX2NtZChhbmRyb2lkX2FwcCwgQVBQX0NNRF9ERVNUUk9ZKTsKKyAgICB3aGlsZSAoIWFuZHJv
aWRfYXBwLT5kZXN0cm95ZWQpIHsKKyAgICAgICAgcHRocmVhZF9jb25kX3dhaXQoJmFuZHJvaWRf
YXBwLT5jb25kLCAmYW5kcm9pZF9hcHAtPm11dGV4KTsKKyAgICB9CisgICAgcHRocmVhZF9tdXRl
eF91bmxvY2soJmFuZHJvaWRfYXBwLT5tdXRleCk7CisKKyAgICBjbG9zZShhbmRyb2lkX2FwcC0+
bXNncmVhZCk7CisgICAgY2xvc2UoYW5kcm9pZF9hcHAtPm1zZ3dyaXRlKTsKKyAgICBwdGhyZWFk
X2NvbmRfZGVzdHJveSgmYW5kcm9pZF9hcHAtPmNvbmQpOworICAgIHB0aHJlYWRfbXV0ZXhfZGVz
dHJveSgmYW5kcm9pZF9hcHAtPm11dGV4KTsKKyAgICBmcmVlKGFuZHJvaWRfYXBwKTsKK30KKwor
c3RhdGljIHZvaWQgb25EZXN0cm95KEFOYXRpdmVBY3Rpdml0eSogYWN0aXZpdHkpIHsKKyAgICBM
T0dWKCJEZXN0cm95OiAlcFxuIiwgYWN0aXZpdHkpOworICAgIGFuZHJvaWRfYXBwX2ZyZWUoKHN0
cnVjdCBhbmRyb2lkX2FwcCopYWN0aXZpdHktPmluc3RhbmNlKTsKK30KKworc3RhdGljIHZvaWQg
b25TdGFydChBTmF0aXZlQWN0aXZpdHkqIGFjdGl2aXR5KSB7CisgICAgTE9HVigiU3RhcnQ6ICVw
XG4iLCBhY3Rpdml0eSk7CisgICAgYW5kcm9pZF9hcHBfc2V0X2FjdGl2aXR5X3N0YXRlKChzdHJ1
Y3QgYW5kcm9pZF9hcHAqKWFjdGl2aXR5LT5pbnN0YW5jZSwgQVBQX0NNRF9TVEFSVCk7Cit9CisK
K3N0YXRpYyB2b2lkIG9uUmVzdW1lKEFOYXRpdmVBY3Rpdml0eSogYWN0aXZpdHkpIHsKKyAgICBM
T0dWKCJSZXN1bWU6ICVwXG4iLCBhY3Rpdml0eSk7CisgICAgYW5kcm9pZF9hcHBfc2V0X2FjdGl2
aXR5X3N0YXRlKChzdHJ1Y3QgYW5kcm9pZF9hcHAqKWFjdGl2aXR5LT5pbnN0YW5jZSwgQVBQX0NN
RF9SRVNVTUUpOworfQorCitzdGF0aWMgdm9pZCogb25TYXZlSW5zdGFuY2VTdGF0ZShBTmF0aXZl
QWN0aXZpdHkqIGFjdGl2aXR5LCBzaXplX3QqIG91dExlbikgeworICAgIHN0cnVjdCBhbmRyb2lk
X2FwcCogYW5kcm9pZF9hcHAgPSAoc3RydWN0IGFuZHJvaWRfYXBwKilhY3Rpdml0eS0+aW5zdGFu
Y2U7CisgICAgdm9pZCogc2F2ZWRTdGF0ZSA9IE5VTEw7CisKKyAgICBMT0dWKCJTYXZlSW5zdGFu
Y2VTdGF0ZTogJXBcbiIsIGFjdGl2aXR5KTsKKyAgICBwdGhyZWFkX211dGV4X2xvY2soJmFuZHJv
aWRfYXBwLT5tdXRleCk7CisgICAgYW5kcm9pZF9hcHAtPnN0YXRlU2F2ZWQgPSAwOworICAgIGFu
ZHJvaWRfYXBwX3dyaXRlX2NtZChhbmRyb2lkX2FwcCwgQVBQX0NNRF9TQVZFX1NUQVRFKTsKKyAg
ICB3aGlsZSAoIWFuZHJvaWRfYXBwLT5zdGF0ZVNhdmVkKSB7CisgICAgICAgIHB0aHJlYWRfY29u
ZF93YWl0KCZhbmRyb2lkX2FwcC0+Y29uZCwgJmFuZHJvaWRfYXBwLT5tdXRleCk7CisgICAgfQor
CisgICAgaWYgKGFuZHJvaWRfYXBwLT5zYXZlZFN0YXRlICE9IE5VTEwpIHsKKyAgICAgICAgc2F2
ZWRTdGF0ZSA9IGFuZHJvaWRfYXBwLT5zYXZlZFN0YXRlOworICAgICAgICAqb3V0TGVuID0gYW5k
cm9pZF9hcHAtPnNhdmVkU3RhdGVTaXplOworICAgICAgICBhbmRyb2lkX2FwcC0+c2F2ZWRTdGF0
ZSA9IE5VTEw7CisgICAgICAgIGFuZHJvaWRfYXBwLT5zYXZlZFN0YXRlU2l6ZSA9IDA7CisgICAg
fQorCisgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmFuZHJvaWRfYXBwLT5tdXRleCk7CisKKyAg
ICByZXR1cm4gc2F2ZWRTdGF0ZTsKK30KKworc3RhdGljIHZvaWQgb25QYXVzZShBTmF0aXZlQWN0
aXZpdHkqIGFjdGl2aXR5KSB7CisgICAgTE9HVigiUGF1c2U6ICVwXG4iLCBhY3Rpdml0eSk7Cisg
ICAgYW5kcm9pZF9hcHBfc2V0X2FjdGl2aXR5X3N0YXRlKChzdHJ1Y3QgYW5kcm9pZF9hcHAqKWFj
dGl2aXR5LT5pbnN0YW5jZSwgQVBQX0NNRF9QQVVTRSk7Cit9CisKK3N0YXRpYyB2b2lkIG9uU3Rv
cChBTmF0aXZlQWN0aXZpdHkqIGFjdGl2aXR5KSB7CisgICAgTE9HVigiU3RvcDogJXBcbiIsIGFj
dGl2aXR5KTsKKyAgICBhbmRyb2lkX2FwcF9zZXRfYWN0aXZpdHlfc3RhdGUoKHN0cnVjdCBhbmRy
b2lkX2FwcCopYWN0aXZpdHktPmluc3RhbmNlLCBBUFBfQ01EX1NUT1ApOworfQorCitzdGF0aWMg
dm9pZCBvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkKEFOYXRpdmVBY3Rpdml0eSogYWN0aXZpdHkpIHsK
KyAgICBzdHJ1Y3QgYW5kcm9pZF9hcHAqIGFuZHJvaWRfYXBwID0gKHN0cnVjdCBhbmRyb2lkX2Fw
cCopYWN0aXZpdHktPmluc3RhbmNlOworICAgIExPR1YoIkNvbmZpZ3VyYXRpb25DaGFuZ2VkOiAl
cFxuIiwgYWN0aXZpdHkpOworICAgIGFuZHJvaWRfYXBwX3dyaXRlX2NtZChhbmRyb2lkX2FwcCwg
QVBQX0NNRF9DT05GSUdfQ0hBTkdFRCk7Cit9CisKK3N0YXRpYyB2b2lkIG9uTG93TWVtb3J5KEFO
YXRpdmVBY3Rpdml0eSogYWN0aXZpdHkpIHsKKyAgICBzdHJ1Y3QgYW5kcm9pZF9hcHAqIGFuZHJv
aWRfYXBwID0gKHN0cnVjdCBhbmRyb2lkX2FwcCopYWN0aXZpdHktPmluc3RhbmNlOworICAgIExP
R1YoIkxvd01lbW9yeTogJXBcbiIsIGFjdGl2aXR5KTsKKyAgICBhbmRyb2lkX2FwcF93cml0ZV9j
bWQoYW5kcm9pZF9hcHAsIEFQUF9DTURfTE9XX01FTU9SWSk7Cit9CisKK3N0YXRpYyB2b2lkIG9u
V2luZG93Rm9jdXNDaGFuZ2VkKEFOYXRpdmVBY3Rpdml0eSogYWN0aXZpdHksIGludCBmb2N1c2Vk
KSB7CisgICAgTE9HVigiV2luZG93Rm9jdXNDaGFuZ2VkOiAlcCAtLSAlZFxuIiwgYWN0aXZpdHks
IGZvY3VzZWQpOworICAgIGFuZHJvaWRfYXBwX3dyaXRlX2NtZCgoc3RydWN0IGFuZHJvaWRfYXBw
KilhY3Rpdml0eS0+aW5zdGFuY2UsCisgICAgICAgICAgICBmb2N1c2VkID8gQVBQX0NNRF9HQUlO
RURfRk9DVVMgOiBBUFBfQ01EX0xPU1RfRk9DVVMpOworfQorCitzdGF0aWMgdm9pZCBvbk5hdGl2
ZVdpbmRvd0NyZWF0ZWQoQU5hdGl2ZUFjdGl2aXR5KiBhY3Rpdml0eSwgQU5hdGl2ZVdpbmRvdyog
d2luZG93KSB7CisgICAgTE9HVigiTmF0aXZlV2luZG93Q3JlYXRlZDogJXAgLS0gJXBcbiIsIGFj
dGl2aXR5LCB3aW5kb3cpOworICAgIGFuZHJvaWRfYXBwX3NldF93aW5kb3coKHN0cnVjdCBhbmRy
b2lkX2FwcCopYWN0aXZpdHktPmluc3RhbmNlLCB3aW5kb3cpOworfQorCitzdGF0aWMgdm9pZCBv
bk5hdGl2ZVdpbmRvd0Rlc3Ryb3llZChBTmF0aXZlQWN0aXZpdHkqIGFjdGl2aXR5LCBBTmF0aXZl
V2luZG93KiB3aW5kb3cpIHsKKyAgICBMT0dWKCJOYXRpdmVXaW5kb3dEZXN0cm95ZWQ6ICVwIC0t
ICVwXG4iLCBhY3Rpdml0eSwgd2luZG93KTsKKyAgICBhbmRyb2lkX2FwcF9zZXRfd2luZG93KChz
dHJ1Y3QgYW5kcm9pZF9hcHAqKWFjdGl2aXR5LT5pbnN0YW5jZSwgTlVMTCk7Cit9CisKK3N0YXRp
YyB2b2lkIG9uSW5wdXRRdWV1ZUNyZWF0ZWQoQU5hdGl2ZUFjdGl2aXR5KiBhY3Rpdml0eSwgQUlu
cHV0UXVldWUqIHF1ZXVlKSB7CisgICAgTE9HVigiSW5wdXRRdWV1ZUNyZWF0ZWQ6ICVwIC0tICVw
XG4iLCBhY3Rpdml0eSwgcXVldWUpOworICAgIGFuZHJvaWRfYXBwX3NldF9pbnB1dCgoc3RydWN0
IGFuZHJvaWRfYXBwKilhY3Rpdml0eS0+aW5zdGFuY2UsIHF1ZXVlKTsKK30KKworc3RhdGljIHZv
aWQgb25JbnB1dFF1ZXVlRGVzdHJveWVkKEFOYXRpdmVBY3Rpdml0eSogYWN0aXZpdHksIEFJbnB1
dFF1ZXVlKiBxdWV1ZSkgeworICAgIExPR1YoIklucHV0UXVldWVEZXN0cm95ZWQ6ICVwIC0tICVw
XG4iLCBhY3Rpdml0eSwgcXVldWUpOworICAgIGFuZHJvaWRfYXBwX3NldF9pbnB1dCgoc3RydWN0
IGFuZHJvaWRfYXBwKilhY3Rpdml0eS0+aW5zdGFuY2UsIE5VTEwpOworfQorCitfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSB2b2lkIEFOYXRpdmVBY3Rpdml0eV9vbkNyZWF0
ZShBTmF0aXZlQWN0aXZpdHkqIGFjdGl2aXR5LAorICAgICAgICB2b2lkKiBzYXZlZFN0YXRlLCBz
aXplX3Qgc2F2ZWRTdGF0ZVNpemUpIHsKKyAgICBMT0dWKCJDcmVhdGluZzogJXBcbiIsIGFjdGl2
aXR5KTsKKyAgICBhY3Rpdml0eS0+Y2FsbGJhY2tzLT5vbkRlc3Ryb3kgPSBvbkRlc3Ryb3k7Cisg
ICAgYWN0aXZpdHktPmNhbGxiYWNrcy0+b25TdGFydCA9IG9uU3RhcnQ7CisgICAgYWN0aXZpdHkt
PmNhbGxiYWNrcy0+b25SZXN1bWUgPSBvblJlc3VtZTsKKyAgICBhY3Rpdml0eS0+Y2FsbGJhY2tz
LT5vblNhdmVJbnN0YW5jZVN0YXRlID0gb25TYXZlSW5zdGFuY2VTdGF0ZTsKKyAgICBhY3Rpdml0
eS0+Y2FsbGJhY2tzLT5vblBhdXNlID0gb25QYXVzZTsKKyAgICBhY3Rpdml0eS0+Y2FsbGJhY2tz
LT5vblN0b3AgPSBvblN0b3A7CisgICAgYWN0aXZpdHktPmNhbGxiYWNrcy0+b25Db25maWd1cmF0
aW9uQ2hhbmdlZCA9IG9uQ29uZmlndXJhdGlvbkNoYW5nZWQ7CisgICAgYWN0aXZpdHktPmNhbGxi
YWNrcy0+b25Mb3dNZW1vcnkgPSBvbkxvd01lbW9yeTsKKyAgICBhY3Rpdml0eS0+Y2FsbGJhY2tz
LT5vbldpbmRvd0ZvY3VzQ2hhbmdlZCA9IG9uV2luZG93Rm9jdXNDaGFuZ2VkOworICAgIGFjdGl2
aXR5LT5jYWxsYmFja3MtPm9uTmF0aXZlV2luZG93Q3JlYXRlZCA9IG9uTmF0aXZlV2luZG93Q3Jl
YXRlZDsKKyAgICBhY3Rpdml0eS0+Y2FsbGJhY2tzLT5vbk5hdGl2ZVdpbmRvd0Rlc3Ryb3llZCA9
IG9uTmF0aXZlV2luZG93RGVzdHJveWVkOworICAgIGFjdGl2aXR5LT5jYWxsYmFja3MtPm9uSW5w
dXRRdWV1ZUNyZWF0ZWQgPSBvbklucHV0UXVldWVDcmVhdGVkOworICAgIGFjdGl2aXR5LT5jYWxs
YmFja3MtPm9uSW5wdXRRdWV1ZURlc3Ryb3llZCA9IG9uSW5wdXRRdWV1ZURlc3Ryb3llZDsKKwor
ICAgIGFjdGl2aXR5LT5pbnN0YW5jZSA9IGFuZHJvaWRfYXBwX2NyZWF0ZShhY3Rpdml0eSwgc2F2
ZWRTdGF0ZSwgc2F2ZWRTdGF0ZVNpemUpOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvdXRpbC9hbmRyb2lkL3RoaXJkX3BhcnR5L2FuZHJvaWRfbmF0aXZlX2FwcF9nbHVlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9hbmRyb2lkL3RoaXJkX3Bh
cnR5L2FuZHJvaWRfbmF0aXZlX2FwcF9nbHVlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvdXRpbC9hbmRyb2lkL3RoaXJkX3BhcnR5L2FuZHJvaWRfbmF0aXZlX2Fw
cF9nbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNDkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vu
c2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIp
OworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
KyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9S
IENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBT
ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKwor
I2lmbmRlZiBfQU5EUk9JRF9OQVRJVkVfQVBQX0dMVUVfSAorI2RlZmluZSBfQU5EUk9JRF9OQVRJ
VkVfQVBQX0dMVUVfSAorCisjaW5jbHVkZSA8cG9sbC5oPgorI2luY2x1ZGUgPHB0aHJlYWQuaD4K
KyNpbmNsdWRlIDxzY2hlZC5oPgorCisjaW5jbHVkZSA8YW5kcm9pZC9jb25maWd1cmF0aW9uLmg+
CisjaW5jbHVkZSA8YW5kcm9pZC9sb29wZXIuaD4KKyNpbmNsdWRlIDxhbmRyb2lkL25hdGl2ZV9h
Y3Rpdml0eS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisK
Ky8qKgorICogVGhlIG5hdGl2ZSBhY3Rpdml0eSBpbnRlcmZhY2UgcHJvdmlkZWQgYnkgPGFuZHJv
aWQvbmF0aXZlX2FjdGl2aXR5Lmg+CisgKiBpcyBiYXNlZCBvbiBhIHNldCBvZiBhcHBsaWNhdGlv
bi1wcm92aWRlZCBjYWxsYmFja3MgdGhhdCB3aWxsIGJlIGNhbGxlZAorICogYnkgdGhlIEFjdGl2
aXR5J3MgbWFpbiB0aHJlYWQgd2hlbiBjZXJ0YWluIGV2ZW50cyBvY2N1ci4KKyAqCisgKiBUaGlz
IG1lYW5zIHRoYXQgZWFjaCBvbmUgb2YgdGhpcyBjYWxsYmFja3MgX3Nob3VsZF8gX25vdF8gYmxv
Y2ssIG9yIHRoZXkKKyAqIHJpc2sgaGF2aW5nIHRoZSBzeXN0ZW0gZm9yY2UtY2xvc2UgdGhlIGFw
cGxpY2F0aW9uLiBUaGlzIHByb2dyYW1taW5nCisgKiBtb2RlbCBpcyBkaXJlY3QsIGxpZ2h0d2Vp
Z2h0LCBidXQgY29uc3RyYWluaW5nLgorICoKKyAqIFRoZSAnYW5kcm9pZF9uYXRpdmVfYXBwX2ds
dWUnIHN0YXRpYyBsaWJyYXJ5IGlzIHVzZWQgdG8gcHJvdmlkZSBhIGRpZmZlcmVudAorICogZXhl
Y3V0aW9uIG1vZGVsIHdoZXJlIHRoZSBhcHBsaWNhdGlvbiBjYW4gaW1wbGVtZW50IGl0cyBvd24g
bWFpbiBldmVudAorICogbG9vcCBpbiBhIGRpZmZlcmVudCB0aHJlYWQgaW5zdGVhZC4gSGVyZSdz
IGhvdyBpdCB3b3JrczoKKyAqCisgKiAxLyBUaGUgYXBwbGljYXRpb24gbXVzdCBwcm92aWRlIGEg
ZnVuY3Rpb24gbmFtZWQgImFuZHJvaWRfbWFpbigpIiB0aGF0CisgKiAgICB3aWxsIGJlIGNhbGxl
ZCB3aGVuIHRoZSBhY3Rpdml0eSBpcyBjcmVhdGVkLCBpbiBhIG5ldyB0aHJlYWQgdGhhdCBpcwor
ICogICAgZGlzdGluY3QgZnJvbSB0aGUgYWN0aXZpdHkncyBtYWluIHRocmVhZC4KKyAqCisgKiAy
LyBhbmRyb2lkX21haW4oKSByZWNlaXZlcyBhIHBvaW50ZXIgdG8gYSB2YWxpZCAiYW5kcm9pZF9h
cHAiIHN0cnVjdHVyZQorICogICAgdGhhdCBjb250YWlucyByZWZlcmVuY2VzIHRvIG90aGVyIGlt
cG9ydGFudCBvYmplY3RzLCBlLmcuIHRoZQorICogICAgQU5hdGl2ZUFjdGl2aXR5IG9iZWpjdCBp
bnN0YW5jZSB0aGUgYXBwbGljYXRpb24gaXMgcnVubmluZyBpbi4KKyAqCisgKiAzLyB0aGUgImFu
ZHJvaWRfYXBwIiBvYmplY3QgaG9sZHMgYW4gQUxvb3BlciBpbnN0YW5jZSB0aGF0IGFscmVhZHkK
KyAqICAgIGxpc3RlbnMgdG8gdHdvIGltcG9ydGFudCB0aGluZ3M6CisgKgorICogICAgICAtIGFj
dGl2aXR5IGxpZmVjeWNsZSBldmVudHMgKGUuZy4gInBhdXNlIiwgInJlc3VtZSIpLiBTZWUgQVBQ
X0NNRF9YWFgKKyAqICAgICAgICBkZWNsYXJhdGlvbnMgYmVsb3cuCisgKgorICogICAgICAtIGlu
cHV0IGV2ZW50cyBjb21pbmcgZnJvbSB0aGUgQUlucHV0UXVldWUgYXR0YWNoZWQgdG8gdGhlIGFj
dGl2aXR5LgorICoKKyAqICAgIEVhY2ggb2YgdGhlc2UgY29ycmVzcG9uZCB0byBhbiBBTG9vcGVy
IGlkZW50aWZpZXIgcmV0dXJuZWQgYnkKKyAqICAgIEFMb29wZXJfcG9sbE9uY2Ugd2l0aCB2YWx1
ZXMgb2YgTE9PUEVSX0lEX01BSU4gYW5kIExPT1BFUl9JRF9JTlBVVCwKKyAqICAgIHJlc3BlY3Rp
dmVseS4KKyAqCisgKiAgICBZb3VyIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlIHNhbWUgQUxvb3Bl
ciB0byBsaXN0ZW4gdG8gYWRkaXRpb25hbAorICogICAgZmlsZS1kZXNjcmlwdG9ycy4gIFRoZXkg
Y2FuIGVpdGhlciBiZSBjYWxsYmFjayBiYXNlZCwgb3Igd2l0aCByZXR1cm4KKyAqICAgIGlkZW50
aWZpZXJzIHN0YXJ0aW5nIHdpdGggTE9PUEVSX0lEX1VTRVIuCisgKgorICogNC8gV2hlbmV2ZXIg
eW91IHJlY2VpdmUgYSBMT09QRVJfSURfTUFJTiBvciBMT09QRVJfSURfSU5QVVQgZXZlbnQsCisg
KiAgICB0aGUgcmV0dXJuZWQgZGF0YSB3aWxsIHBvaW50IHRvIGFuIGFuZHJvaWRfcG9sbF9zb3Vy
Y2Ugc3RydWN0dXJlLiAgWW91CisgKiAgICBjYW4gY2FsbCB0aGUgcHJvY2VzcygpIGZ1bmN0aW9u
IG9uIGl0LCBhbmQgZmlsbCBpbiBhbmRyb2lkX2FwcC0+b25BcHBDbWQKKyAqICAgIGFuZCBhbmRy
b2lkX2FwcC0+b25JbnB1dEV2ZW50IHRvIGJlIGNhbGxlZCBmb3IgeW91ciBvd24gcHJvY2Vzc2lu
ZworICogICAgb2YgdGhlIGV2ZW50LgorICoKKyAqICAgIEFsdGVybmF0aXZlbHksIHlvdSBjYW4g
Y2FsbCB0aGUgbG93LWxldmVsIGZ1bmN0aW9ucyB0byByZWFkIGFuZCBwcm9jZXNzCisgKiAgICB0
aGUgZGF0YSBkaXJlY3RseS4uLiAgbG9vayBhdCB0aGUgcHJvY2Vzc19jbWQoKSBhbmQgcHJvY2Vz
c19pbnB1dCgpCisgKiAgICBpbXBsZW1lbnRhdGlvbnMgaW4gdGhlIGdsdWUgdG8gc2VlIGhvdyB0
byBkbyB0aGlzLgorICoKKyAqIFNlZSB0aGUgc2FtcGxlIG5hbWVkICJuYXRpdmUtYWN0aXZpdHki
IHRoYXQgY29tZXMgd2l0aCB0aGUgTkRLIHdpdGggYQorICogZnVsbCB1c2FnZSBleGFtcGxlLiAg
QWxzbyBsb29rIGF0IHRoZSBKYXZhRG9jIG9mIE5hdGl2ZUFjdGl2aXR5LgorICovCisKK3N0cnVj
dCBhbmRyb2lkX2FwcDsKKworLyoqCisgKiBEYXRhIGFzc29jaWF0ZWQgd2l0aCBhbiBBTG9vcGVy
IGZkIHRoYXQgd2lsbCBiZSByZXR1cm5lZCBhcyB0aGUgIm91dERhdGEiCisgKiB3aGVuIHRoYXQg
c291cmNlIGhhcyBkYXRhIHJlYWR5LgorICovCitzdHJ1Y3QgYW5kcm9pZF9wb2xsX3NvdXJjZSB7
CisgICAgLy8gVGhlIGlkZW50aWZpZXIgb2YgdGhpcyBzb3VyY2UuICBNYXkgYmUgTE9PUEVSX0lE
X01BSU4gb3IKKyAgICAvLyBMT09QRVJfSURfSU5QVVQuCisgICAgaW50MzJfdCBpZDsKKworICAg
IC8vIFRoZSBhbmRyb2lkX2FwcCB0aGlzIGlkZW50IGlzIGFzc29jaWF0ZWQgd2l0aC4KKyAgICBz
dHJ1Y3QgYW5kcm9pZF9hcHAqIGFwcDsKKworICAgIC8vIEZ1bmN0aW9uIHRvIGNhbGwgdG8gcGVy
Zm9ybSB0aGUgc3RhbmRhcmQgcHJvY2Vzc2luZyBvZiBkYXRhIGZyb20KKyAgICAvLyB0aGlzIHNv
dXJjZS4KKyAgICB2b2lkICgqcHJvY2Vzcykoc3RydWN0IGFuZHJvaWRfYXBwKiBhcHAsIHN0cnVj
dCBhbmRyb2lkX3BvbGxfc291cmNlKiBzb3VyY2UpOworfTsKKworLyoqCisgKiBUaGlzIGlzIHRo
ZSBpbnRlcmZhY2UgZm9yIHRoZSBzdGFuZGFyZCBnbHVlIGNvZGUgb2YgYSB0aHJlYWRlZAorICog
YXBwbGljYXRpb24uICBJbiB0aGlzIG1vZGVsLCB0aGUgYXBwbGljYXRpb24ncyBjb2RlIGlzIHJ1
bm5pbmcKKyAqIGluIGl0cyBvd24gdGhyZWFkIHNlcGFyYXRlIGZyb20gdGhlIG1haW4gdGhyZWFk
IG9mIHRoZSBwcm9jZXNzLgorICogSXQgaXMgbm90IHJlcXVpcmVkIHRoYXQgdGhpcyB0aHJlYWQg
YmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBKYXZhCisgKiBWTSwgYWx0aG91Z2ggaXQgd2lsbCBuZWVk
IHRvIGJlIGluIG9yZGVyIHRvIG1ha2UgSk5JIGNhbGxzIGFueQorICogSmF2YSBvYmplY3RzLgor
ICovCitzdHJ1Y3QgYW5kcm9pZF9hcHAgeworICAgIC8vIFRoZSBhcHBsaWNhdGlvbiBjYW4gcGxh
Y2UgYSBwb2ludGVyIHRvIGl0cyBvd24gc3RhdGUgb2JqZWN0CisgICAgLy8gaGVyZSBpZiBpdCBs
aWtlcy4KKyAgICB2b2lkKiB1c2VyRGF0YTsKKworICAgIC8vIEZpbGwgdGhpcyBpbiB3aXRoIHRo
ZSBmdW5jdGlvbiB0byBwcm9jZXNzIG1haW4gYXBwIGNvbW1hbmRzIChBUFBfQ01EXyopCisgICAg
dm9pZCAoKm9uQXBwQ21kKShzdHJ1Y3QgYW5kcm9pZF9hcHAqIGFwcCwgaW50MzJfdCBjbWQpOwor
CisgICAgLy8gRmlsbCB0aGlzIGluIHdpdGggdGhlIGZ1bmN0aW9uIHRvIHByb2Nlc3MgaW5wdXQg
ZXZlbnRzLiAgQXQgdGhpcyBwb2ludAorICAgIC8vIHRoZSBldmVudCBoYXMgYWxyZWFkeSBiZWVu
IHByZS1kaXNwYXRjaGVkLCBhbmQgaXQgd2lsbCBiZSBmaW5pc2hlZCB1cG9uCisgICAgLy8gcmV0
dXJuLiAgUmV0dXJuIDEgaWYgeW91IGhhdmUgaGFuZGxlZCB0aGUgZXZlbnQsIDAgZm9yIGFueSBk
ZWZhdWx0CisgICAgLy8gZGlzcGF0Y2hpbmcuCisgICAgaW50MzJfdCAoKm9uSW5wdXRFdmVudCko
c3RydWN0IGFuZHJvaWRfYXBwKiBhcHAsIEFJbnB1dEV2ZW50KiBldmVudCk7CisKKyAgICAvLyBU
aGUgQU5hdGl2ZUFjdGl2aXR5IG9iamVjdCBpbnN0YW5jZSB0aGF0IHRoaXMgYXBwIGlzIHJ1bm5p
bmcgaW4uCisgICAgQU5hdGl2ZUFjdGl2aXR5KiBhY3Rpdml0eTsKKworICAgIC8vIFRoZSBjdXJy
ZW50IGNvbmZpZ3VyYXRpb24gdGhlIGFwcCBpcyBydW5uaW5nIGluLgorICAgIEFDb25maWd1cmF0
aW9uKiBjb25maWc7CisKKyAgICAvLyBUaGlzIGlzIHRoZSBsYXN0IGluc3RhbmNlJ3Mgc2F2ZWQg
c3RhdGUsIGFzIHByb3ZpZGVkIGF0IGNyZWF0aW9uIHRpbWUuCisgICAgLy8gSXQgaXMgTlVMTCBp
ZiB0aGVyZSB3YXMgbm8gc3RhdGUuICBZb3UgY2FuIHVzZSB0aGlzIGFzIHlvdSBuZWVkOyB0aGUK
KyAgICAvLyBtZW1vcnkgd2lsbCByZW1haW4gYXJvdW5kIHVudGlsIHlvdSBjYWxsIGFuZHJvaWRf
YXBwX2V4ZWNfY21kKCkgZm9yCisgICAgLy8gQVBQX0NNRF9SRVNVTUUsIGF0IHdoaWNoIHBvaW50
IGl0IHdpbGwgYmUgZnJlZWQgYW5kIHNhdmVkU3RhdGUgc2V0IHRvIE5VTEwuCisgICAgLy8gVGhl
c2UgdmFyaWFibGVzIHNob3VsZCBvbmx5IGJlIGNoYW5nZWQgd2hlbiBwcm9jZXNzaW5nIGEgQVBQ
X0NNRF9TQVZFX1NUQVRFLAorICAgIC8vIGF0IHdoaWNoIHBvaW50IHRoZXkgd2lsbCBiZSBpbml0
aWFsaXplZCB0byBOVUxMIGFuZCB5b3UgY2FuIG1hbGxvYyB5b3VyCisgICAgLy8gc3RhdGUgYW5k
IHBsYWNlIHRoZSBpbmZvcm1hdGlvbiBoZXJlLiAgSW4gdGhhdCBjYXNlIHRoZSBtZW1vcnkgd2ls
bCBiZQorICAgIC8vIGZyZWVkIGZvciB5b3UgbGF0ZXIuCisgICAgdm9pZCogc2F2ZWRTdGF0ZTsK
KyAgICBzaXplX3Qgc2F2ZWRTdGF0ZVNpemU7CisKKyAgICAvLyBUaGUgQUxvb3BlciBhc3NvY2lh
dGVkIHdpdGggdGhlIGFwcCdzIHRocmVhZC4KKyAgICBBTG9vcGVyKiBsb29wZXI7CisKKyAgICAv
LyBXaGVuIG5vbi1OVUxMLCB0aGlzIGlzIHRoZSBpbnB1dCBxdWV1ZSBmcm9tIHdoaWNoIHRoZSBh
cHAgd2lsbAorICAgIC8vIHJlY2VpdmUgdXNlciBpbnB1dCBldmVudHMuCisgICAgQUlucHV0UXVl
dWUqIGlucHV0UXVldWU7CisKKyAgICAvLyBXaGVuIG5vbi1OVUxMLCB0aGlzIGlzIHRoZSB3aW5k
b3cgc3VyZmFjZSB0aGF0IHRoZSBhcHAgY2FuIGRyYXcgaW4uCisgICAgQU5hdGl2ZVdpbmRvdyog
d2luZG93OworCisgICAgLy8gQ3VycmVudCBjb250ZW50IHJlY3RhbmdsZSBvZiB0aGUgd2luZG93
OyB0aGlzIGlzIHRoZSBhcmVhIHdoZXJlIHRoZQorICAgIC8vIHdpbmRvdydzIGNvbnRlbnQgc2hv
dWxkIGJlIHBsYWNlZCB0byBiZSBzZWVuIGJ5IHRoZSB1c2VyLgorICAgIEFSZWN0IGNvbnRlbnRS
ZWN0OworCisgICAgLy8gQ3VycmVudCBzdGF0ZSBvZiB0aGUgYXBwJ3MgYWN0aXZpdHkuICBNYXkg
YmUgZWl0aGVyIEFQUF9DTURfU1RBUlQsCisgICAgLy8gQVBQX0NNRF9SRVNVTUUsIEFQUF9DTURf
UEFVU0UsIG9yIEFQUF9DTURfU1RPUDsgc2VlIGJlbG93LgorICAgIGludCBhY3Rpdml0eVN0YXRl
OworCisgICAgLy8gVGhpcyBpcyBub24temVybyB3aGVuIHRoZSBhcHBsaWNhdGlvbidzIE5hdGl2
ZUFjdGl2aXR5IGlzIGJlaW5nCisgICAgLy8gZGVzdHJveWVkIGFuZCB3YWl0aW5nIGZvciB0aGUg
YXBwIHRocmVhZCB0byBjb21wbGV0ZS4KKyAgICBpbnQgZGVzdHJveVJlcXVlc3RlZDsKKworICAg
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg
ICAvLyBCZWxvdyBhcmUgInByaXZhdGUiIGltcGxlbWVudGF0aW9uIG9mIHRoZSBnbHVlIGNvZGUu
CisKKyAgICBwdGhyZWFkX211dGV4X3QgbXV0ZXg7CisgICAgcHRocmVhZF9jb25kX3QgY29uZDsK
KworICAgIGludCBtc2dyZWFkOworICAgIGludCBtc2d3cml0ZTsKKworICAgIHB0aHJlYWRfdCB0
aHJlYWQ7CisKKyAgICBzdHJ1Y3QgYW5kcm9pZF9wb2xsX3NvdXJjZSBjbWRQb2xsU291cmNlOwor
ICAgIHN0cnVjdCBhbmRyb2lkX3BvbGxfc291cmNlIGlucHV0UG9sbFNvdXJjZTsKKworICAgIGlu
dCBydW5uaW5nOworICAgIGludCBzdGF0ZVNhdmVkOworICAgIGludCBkZXN0cm95ZWQ7CisgICAg
aW50IHJlZHJhd05lZWRlZDsKKyAgICBBSW5wdXRRdWV1ZSogcGVuZGluZ0lucHV0UXVldWU7Cisg
ICAgQU5hdGl2ZVdpbmRvdyogcGVuZGluZ1dpbmRvdzsKKyAgICBBUmVjdCBwZW5kaW5nQ29udGVu
dFJlY3Q7Cit9OworCitlbnVtIHsKKyAgICAvKioKKyAgICAgKiBMb29wZXIgZGF0YSBJRCBvZiBj
b21tYW5kcyBjb21pbmcgZnJvbSB0aGUgYXBwJ3MgbWFpbiB0aHJlYWQsIHdoaWNoCisgICAgICog
aXMgcmV0dXJuZWQgYXMgYW4gaWRlbnRpZmllciBmcm9tIEFMb29wZXJfcG9sbE9uY2UoKS4gIFRo
ZSBkYXRhIGZvciB0aGlzCisgICAgICogaWRlbnRpZmllciBpcyBhIHBvaW50ZXIgdG8gYW4gYW5k
cm9pZF9wb2xsX3NvdXJjZSBzdHJ1Y3R1cmUuCisgICAgICogVGhlc2UgY2FuIGJlIHJldHJpZXZl
ZCBhbmQgcHJvY2Vzc2VkIHdpdGggYW5kcm9pZF9hcHBfcmVhZF9jbWQoKQorICAgICAqIGFuZCBh
bmRyb2lkX2FwcF9leGVjX2NtZCgpLgorICAgICAqLworICAgIExPT1BFUl9JRF9NQUlOID0gMSwK
KworICAgIC8qKgorICAgICAqIExvb3BlciBkYXRhIElEIG9mIGV2ZW50cyBjb21pbmcgZnJvbSB0
aGUgQUlucHV0UXVldWUgb2YgdGhlCisgICAgICogYXBwbGljYXRpb24ncyB3aW5kb3csIHdoaWNo
IGlzIHJldHVybmVkIGFzIGFuIGlkZW50aWZpZXIgZnJvbQorICAgICAqIEFMb29wZXJfcG9sbE9u
Y2UoKS4gIFRoZSBkYXRhIGZvciB0aGlzIGlkZW50aWZpZXIgaXMgYSBwb2ludGVyIHRvIGFuCisg
ICAgICogYW5kcm9pZF9wb2xsX3NvdXJjZSBzdHJ1Y3R1cmUuICBUaGVzZSBjYW4gYmUgcmVhZCB2
aWEgdGhlIGlucHV0UXVldWUKKyAgICAgKiBvYmplY3Qgb2YgYW5kcm9pZF9hcHAuCisgICAgICov
CisgICAgTE9PUEVSX0lEX0lOUFVUID0gMiwKKworICAgIC8qKgorICAgICAqIFN0YXJ0IG9mIHVz
ZXItZGVmaW5lZCBBTG9vcGVyIGlkZW50aWZpZXJzLgorICAgICAqLworICAgIExPT1BFUl9JRF9V
U0VSID0gMywKK307CisKK2VudW0geworICAgIC8qKgorICAgICAqIENvbW1hbmQgZnJvbSBtYWlu
IHRocmVhZDogdGhlIEFJbnB1dFF1ZXVlIGhhcyBjaGFuZ2VkLiAgVXBvbiBwcm9jZXNzaW5nCisg
ICAgICogdGhpcyBjb21tYW5kLCBhbmRyb2lkX2FwcC0+aW5wdXRRdWV1ZSB3aWxsIGJlIHVwZGF0
ZWQgdG8gdGhlIG5ldyBxdWV1ZQorICAgICAqIChvciBOVUxMKS4KKyAgICAgKi8KKyAgICBBUFBf
Q01EX0lOUFVUX0NIQU5HRUQsCisKKyAgICAvKioKKyAgICAgKiBDb21tYW5kIGZyb20gbWFpbiB0
aHJlYWQ6IGEgbmV3IEFOYXRpdmVXaW5kb3cgaXMgcmVhZHkgZm9yIHVzZS4gIFVwb24KKyAgICAg
KiByZWNlaXZpbmcgdGhpcyBjb21tYW5kLCBhbmRyb2lkX2FwcC0+d2luZG93IHdpbGwgY29udGFp
biB0aGUgbmV3IHdpbmRvdworICAgICAqIHN1cmZhY2UuCisgICAgICovCisgICAgQVBQX0NNRF9J
TklUX1dJTkRPVywKKworICAgIC8qKgorICAgICAqIENvbW1hbmQgZnJvbSBtYWluIHRocmVhZDog
dGhlIGV4aXN0aW5nIEFOYXRpdmVXaW5kb3cgbmVlZHMgdG8gYmUKKyAgICAgKiB0ZXJtaW5hdGVk
LiAgVXBvbiByZWNlaXZpbmcgdGhpcyBjb21tYW5kLCBhbmRyb2lkX2FwcC0+d2luZG93IHN0aWxs
CisgICAgICogY29udGFpbnMgdGhlIGV4aXN0aW5nIHdpbmRvdzsgYWZ0ZXIgY2FsbGluZyBhbmRy
b2lkX2FwcF9leGVjX2NtZAorICAgICAqIGl0IHdpbGwgYmUgc2V0IHRvIE5VTEwuCisgICAgICov
CisgICAgQVBQX0NNRF9URVJNX1dJTkRPVywKKworICAgIC8qKgorICAgICAqIENvbW1hbmQgZnJv
bSBtYWluIHRocmVhZDogdGhlIGN1cnJlbnQgQU5hdGl2ZVdpbmRvdyBoYXMgYmVlbiByZXNpemVk
LgorICAgICAqIFBsZWFzZSByZWRyYXcgd2l0aCBpdHMgbmV3IHNpemUuCisgICAgICovCisgICAg
QVBQX0NNRF9XSU5ET1dfUkVTSVpFRCwKKworICAgIC8qKgorICAgICAqIENvbW1hbmQgZnJvbSBt
YWluIHRocmVhZDogdGhlIHN5c3RlbSBuZWVkcyB0aGF0IHRoZSBjdXJyZW50IEFOYXRpdmVXaW5k
b3cKKyAgICAgKiBiZSByZWRyYXduLiAgWW91IHNob3VsZCByZWRyYXcgdGhlIHdpbmRvdyBiZWZv
cmUgaGFuZGluZyB0aGlzIHRvCisgICAgICogYW5kcm9pZF9hcHBfZXhlY19jbWQoKSBpbiBvcmRl
ciB0byBhdm9pZCB0cmFuc2llbnQgZHJhd2luZyBnbGl0Y2hlcy4KKyAgICAgKi8KKyAgICBBUFBf
Q01EX1dJTkRPV19SRURSQVdfTkVFREVELAorCisgICAgLyoqCisgICAgICogQ29tbWFuZCBmcm9t
IG1haW4gdGhyZWFkOiB0aGUgY29udGVudCBhcmVhIG9mIHRoZSB3aW5kb3cgaGFzIGNoYW5nZWQs
CisgICAgICogc3VjaCBhcyBmcm9tIHRoZSBzb2Z0IGlucHV0IHdpbmRvdyBiZWluZyBzaG93biBv
ciBoaWRkZW4uICBZb3UgY2FuCisgICAgICogZmluZCB0aGUgbmV3IGNvbnRlbnQgcmVjdCBpbiBh
bmRyb2lkX2FwcDo6Y29udGVudFJlY3QuCisgICAgICovCisgICAgQVBQX0NNRF9DT05URU5UX1JF
Q1RfQ0hBTkdFRCwKKworICAgIC8qKgorICAgICAqIENvbW1hbmQgZnJvbSBtYWluIHRocmVhZDog
dGhlIGFwcCdzIGFjdGl2aXR5IHdpbmRvdyBoYXMgZ2FpbmVkCisgICAgICogaW5wdXQgZm9jdXMu
CisgICAgICovCisgICAgQVBQX0NNRF9HQUlORURfRk9DVVMsCisKKyAgICAvKioKKyAgICAgKiBD
b21tYW5kIGZyb20gbWFpbiB0aHJlYWQ6IHRoZSBhcHAncyBhY3Rpdml0eSB3aW5kb3cgaGFzIGxv
c3QKKyAgICAgKiBpbnB1dCBmb2N1cy4KKyAgICAgKi8KKyAgICBBUFBfQ01EX0xPU1RfRk9DVVMs
CisKKyAgICAvKioKKyAgICAgKiBDb21tYW5kIGZyb20gbWFpbiB0aHJlYWQ6IHRoZSBjdXJyZW50
IGRldmljZSBjb25maWd1cmF0aW9uIGhhcyBjaGFuZ2VkLgorICAgICAqLworICAgIEFQUF9DTURf
Q09ORklHX0NIQU5HRUQsCisKKyAgICAvKioKKyAgICAgKiBDb21tYW5kIGZyb20gbWFpbiB0aHJl
YWQ6IHRoZSBzeXN0ZW0gaXMgcnVubmluZyBsb3cgb24gbWVtb3J5LgorICAgICAqIFRyeSB0byBy
ZWR1Y2UgeW91ciBtZW1vcnkgdXNlLgorICAgICAqLworICAgIEFQUF9DTURfTE9XX01FTU9SWSwK
KworICAgIC8qKgorICAgICAqIENvbW1hbmQgZnJvbSBtYWluIHRocmVhZDogdGhlIGFwcCdzIGFj
dGl2aXR5IGhhcyBiZWVuIHN0YXJ0ZWQuCisgICAgICovCisgICAgQVBQX0NNRF9TVEFSVCwKKwor
ICAgIC8qKgorICAgICAqIENvbW1hbmQgZnJvbSBtYWluIHRocmVhZDogdGhlIGFwcCdzIGFjdGl2
aXR5IGhhcyBiZWVuIHJlc3VtZWQuCisgICAgICovCisgICAgQVBQX0NNRF9SRVNVTUUsCisKKyAg
ICAvKioKKyAgICAgKiBDb21tYW5kIGZyb20gbWFpbiB0aHJlYWQ6IHRoZSBhcHAgc2hvdWxkIGdl
bmVyYXRlIGEgbmV3IHNhdmVkIHN0YXRlCisgICAgICogZm9yIGl0c2VsZiwgdG8gcmVzdG9yZSBm
cm9tIGxhdGVyIGlmIG5lZWRlZC4gIElmIHlvdSBoYXZlIHNhdmVkIHN0YXRlLAorICAgICAqIGFs
bG9jYXRlIGl0IHdpdGggbWFsbG9jIGFuZCBwbGFjZSBpdCBpbiBhbmRyb2lkX2FwcC5zYXZlZFN0
YXRlIHdpdGgKKyAgICAgKiB0aGUgc2l6ZSBpbiBhbmRyb2lkX2FwcC5zYXZlZFN0YXRlU2l6ZS4g
IFRoZSB3aWxsIGJlIGZyZWVkIGZvciB5b3UKKyAgICAgKiBsYXRlci4KKyAgICAgKi8KKyAgICBB
UFBfQ01EX1NBVkVfU1RBVEUsCisKKyAgICAvKioKKyAgICAgKiBDb21tYW5kIGZyb20gbWFpbiB0
aHJlYWQ6IHRoZSBhcHAncyBhY3Rpdml0eSBoYXMgYmVlbiBwYXVzZWQuCisgICAgICovCisgICAg
QVBQX0NNRF9QQVVTRSwKKworICAgIC8qKgorICAgICAqIENvbW1hbmQgZnJvbSBtYWluIHRocmVh
ZDogdGhlIGFwcCdzIGFjdGl2aXR5IGhhcyBiZWVuIHN0b3BwZWQuCisgICAgICovCisgICAgQVBQ
X0NNRF9TVE9QLAorCisgICAgLyoqCisgICAgICogQ29tbWFuZCBmcm9tIG1haW4gdGhyZWFkOiB0
aGUgYXBwJ3MgYWN0aXZpdHkgaXMgYmVpbmcgZGVzdHJveWVkLAorICAgICAqIGFuZCB3YWl0aW5n
IGZvciB0aGUgYXBwIHRocmVhZCB0byBjbGVhbiB1cCBhbmQgZXhpdCBiZWZvcmUgcHJvY2VlZGlu
Zy4KKyAgICAgKi8KKyAgICBBUFBfQ01EX0RFU1RST1ksCit9OworCisvKioKKyAqIENhbGwgd2hl
biBBTG9vcGVyX3BvbGxBbGwoKSByZXR1cm5zIExPT1BFUl9JRF9NQUlOLCByZWFkaW5nIHRoZSBu
ZXh0CisgKiBhcHAgY29tbWFuZCBtZXNzYWdlLgorICovCitpbnQ4X3QgYW5kcm9pZF9hcHBfcmVh
ZF9jbWQoc3RydWN0IGFuZHJvaWRfYXBwKiBhbmRyb2lkX2FwcCk7CisKKy8qKgorICogQ2FsbCB3
aXRoIHRoZSBjb21tYW5kIHJldHVybmVkIGJ5IGFuZHJvaWRfYXBwX3JlYWRfY21kKCkgdG8gZG8g
dGhlCisgKiBpbml0aWFsIHByZS1wcm9jZXNzaW5nIG9mIHRoZSBnaXZlbiBjb21tYW5kLiAgWW91
IGNhbiBwZXJmb3JtIHlvdXIgb3duCisgKiBhY3Rpb25zIGZvciB0aGUgY29tbWFuZCBhZnRlciBj
YWxsaW5nIHRoaXMgZnVuY3Rpb24uCisgKi8KK3ZvaWQgYW5kcm9pZF9hcHBfcHJlX2V4ZWNfY21k
KHN0cnVjdCBhbmRyb2lkX2FwcCogYW5kcm9pZF9hcHAsIGludDhfdCBjbWQpOworCisvKioKKyAq
IENhbGwgd2l0aCB0aGUgY29tbWFuZCByZXR1cm5lZCBieSBhbmRyb2lkX2FwcF9yZWFkX2NtZCgp
IHRvIGRvIHRoZQorICogZmluYWwgcG9zdC1wcm9jZXNzaW5nIG9mIHRoZSBnaXZlbiBjb21tYW5k
LiAgWW91IG11c3QgaGF2ZSBkb25lIHlvdXIgb3duCisgKiBhY3Rpb25zIGZvciB0aGUgY29tbWFu
ZCBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgorICovCit2b2lkIGFuZHJvaWRfYXBwX3Bv
c3RfZXhlY19jbWQoc3RydWN0IGFuZHJvaWRfYXBwKiBhbmRyb2lkX2FwcCwgaW50OF90IGNtZCk7
CisKKy8qKgorICogRHVtbXkgZnVuY3Rpb24geW91IGNhbiBjYWxsIHRvIGVuc3VyZSBnbHVlIGNv
ZGUgaXNuJ3Qgc3RyaXBwZWQuCisgKi8KK3ZvaWQgYXBwX2R1bW15KCk7CisKKy8qKgorICogVGhp
cyBpcyB0aGUgZnVuY3Rpb24gdGhhdCBhcHBsaWNhdGlvbiBjb2RlIG11c3QgaW1wbGVtZW50LCBy
ZXByZXNlbnRpbmcKKyAqIHRoZSBtYWluIGVudHJ5IHRvIHRoZSBhcHAuCisgKi8KK2V4dGVybiB2
b2lkIGFuZHJvaWRfbWFpbihzdHJ1Y3QgYW5kcm9pZF9hcHAqIGFwcCk7CisKKyNpZmRlZiBfX2Nw
bHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBfQU5EUk9JRF9OQVRJVkVfQVBQX0dMVUVf
SCAqLwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9nZW9tZXRyeV91dGlscy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvZ2VvbWV0cnlfdXRp
bHMuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9n
ZW9tZXRyeV91dGlscy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMiwxMSArMTIsMTMgQEAKIAogI2lu
Y2x1ZGUgPGNzdGRkZWY+CiAjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSA8ZXhwb3J0Lmg+
CiAjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CiAKICNpbmNsdWRlICJWZWN0b3IuaCIKIAotc3RydWN0
IFNwaGVyZUdlb21ldHJ5CitzdHJ1Y3QgQU5HTEVfRVhQT1JUIFNwaGVyZUdlb21ldHJ5CiB7CiAg
ICAgc3RkOjp2ZWN0b3I8VmVjdG9yMz4gcG9zaXRpb25zOwogICAgIHN0ZDo6dmVjdG9yPFZlY3Rv
cjM+IG5vcm1hbHM7CkBAIC0yMyw5ICsyNSw5IEBACiAgICAgc3RkOjp2ZWN0b3I8R0x1c2hvcnQ+
IGluZGljZXM7CiB9OwogCi12b2lkIENyZWF0ZVNwaGVyZUdlb21ldHJ5KHNpemVfdCBzbGljZUNv
dW50LCBmbG9hdCByYWRpdXMsIFNwaGVyZUdlb21ldHJ5ICpyZXN1bHQpOworQU5HTEVfRVhQT1JU
IHZvaWQgQ3JlYXRlU3BoZXJlR2VvbWV0cnkoc2l6ZV90IHNsaWNlQ291bnQsIGZsb2F0IHJhZGl1
cywgU3BoZXJlR2VvbWV0cnkgKnJlc3VsdCk7CiAKLXN0cnVjdCBDdWJlR2VvbWV0cnkKK3N0cnVj
dCBBTkdMRV9FWFBPUlQgQ3ViZUdlb21ldHJ5CiB7CiAgICAgc3RkOjp2ZWN0b3I8VmVjdG9yMz4g
cG9zaXRpb25zOwogICAgIHN0ZDo6dmVjdG9yPFZlY3RvcjM+IG5vcm1hbHM7CkBAIC0zMyw2ICsz
NSw2IEBACiAgICAgc3RkOjp2ZWN0b3I8R0x1c2hvcnQ+IGluZGljZXM7CiB9OwogCi12b2lkIEdl
bmVyYXRlQ3ViZUdlb21ldHJ5KGZsb2F0IHJhZGl1cywgQ3ViZUdlb21ldHJ5ICpyZXN1bHQpOwor
QU5HTEVfRVhQT1JUIHZvaWQgR2VuZXJhdGVDdWJlR2VvbWV0cnkoZmxvYXQgcmFkaXVzLCBDdWJl
R2VvbWV0cnkgKnJlc3VsdCk7CiAKICNlbmRpZiAgLy8gVVRJTF9HRU9NRVRSWV9VVElMU19ICklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL2xpbnV4L0xpbnV4VGltZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvbGludXgvTGludXhUaW1l
ci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9saW51
eC9MaW51eFRpbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvLworLy8g
Q29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKworLy8gTGludXhUaW1lci5jcHA6IEltcGxlbWVudGF0aW9uIG9mIGEgaGlnaCBwcmVj
aXNpb24gdGltZXIgY2xhc3Mgb24gTGludXgKKworI2luY2x1ZGUgImxpbnV4L0xpbnV4VGltZXIu
aCIKKyNpbmNsdWRlIDxpb3N0cmVhbT4KKworTGludXhUaW1lcjo6TGludXhUaW1lcigpCisgICAg
OiBtUnVubmluZyhmYWxzZSkKK3sKK30KKwordm9pZCBMaW51eFRpbWVyOjpzdGFydCgpCit7Cisg
ICAgY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICZtU3RhcnRUaW1lKTsKKyAgICBtUnVu
bmluZyA9IHRydWU7Cit9CisKK3ZvaWQgTGludXhUaW1lcjo6c3RvcCgpCit7CisgICAgY2xvY2tf
Z2V0dGltZShDTE9DS19NT05PVE9OSUMsICZtU3RvcFRpbWUpOworICAgIG1SdW5uaW5nID0gZmFs
c2U7Cit9CisKK2RvdWJsZSBMaW51eFRpbWVyOjpnZXRFbGFwc2VkVGltZSgpIGNvbnN0Cit7Cisg
ICAgc3RydWN0IHRpbWVzcGVjIGVuZFRpbWU7CisgICAgaWYgKG1SdW5uaW5nKQorICAgIHsKKyAg
ICAgICAgY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICZlbmRUaW1lKTsKKyAgICB9Cisg
ICAgZWxzZQorICAgIHsKKyAgICAgICAgZW5kVGltZSA9IG1TdG9wVGltZTsKKyAgICB9CisKKyAg
ICBkb3VibGUgc3RhcnRTZWNvbmRzID0gbVN0YXJ0VGltZS50dl9zZWMgKyAoMS4wIC8gMTAwMDAw
MDAwMCkgKiBtU3RhcnRUaW1lLnR2X25zZWM7CisgICAgZG91YmxlIGVuZFNlY29uZHMgPSBlbmRU
aW1lLnR2X3NlYyArICgxLjAgLyAxMDAwMDAwMDAwKSAqIGVuZFRpbWUudHZfbnNlYzsKKyAgICBy
ZXR1cm4gZW5kU2Vjb25kcyAtIHN0YXJ0U2Vjb25kczsKK30KKworVGltZXIgKkNyZWF0ZVRpbWVy
KCkKK3sKKyAgICByZXR1cm4gbmV3IExpbnV4VGltZXIoKTsKK30KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3V0aWwvbGludXgvTGludXhUaW1lci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvbGludXgvTGludXhUaW1lci5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvbGludXgvTGludXhUaW1lci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMzEgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBMaW51eFRpbWVy
Lmg6IERlZmluaXRpb24gb2YgYSBoaWdoIHByZWNpc2lvbiB0aW1lciBjbGFzcyBvbiBMaW51eAor
CisjaWZuZGVmIFVUSUxfTElOVVhfVElNRVJfSAorI2RlZmluZSBVVElMX0xJTlVYX1RJTUVSX0gK
KworI2luY2x1ZGUgPHRpbWUuaD4KKworI2luY2x1ZGUgIlRpbWVyLmgiCisKK2NsYXNzIExpbnV4
VGltZXIgOiBwdWJsaWMgVGltZXIKK3sKKyAgcHVibGljOgorICAgIExpbnV4VGltZXIoKTsKKwor
ICAgIHZvaWQgc3RhcnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKKyAg
ICBkb3VibGUgZ2V0RWxhcHNlZFRpbWUoKSBjb25zdCBvdmVycmlkZTsKKworICBwcml2YXRlOgor
ICAgIGJvb2wgbVJ1bm5pbmc7CisgICAgc3RydWN0IHRpbWVzcGVjIG1TdGFydFRpbWU7CisgICAg
c3RydWN0IHRpbWVzcGVjIG1TdG9wVGltZTsKK307CisKKyNlbmRpZiAvLyBVVElMX0xJTlVYX1RJ
TUVSX0gKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvbGludXgvTGludXhfc3lz
dGVtX3V0aWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGls
L2xpbnV4L0xpbnV4X3N5c3RlbV91dGlscy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvdXRpbC9saW51eC9MaW51eF9zeXN0ZW1fdXRpbHMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNjQgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBMaW51eF9zeXN0ZW1f
dXRpbHMuY3BwOiBJbXBsZW1lbnRhdGlvbiBvZiBPUy1zcGVjaWZpYyBmdW5jdGlvbnMgZm9yIExp
bnV4CisKKyNpbmNsdWRlICJzeXN0ZW1fdXRpbHMuaCIKKworI2luY2x1ZGUgPHN5cy9zdGF0Lmg+
CisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRl
IDx1bmlzdGQuaD4KKworbmFtZXNwYWNlIGFuZ2xlCit7CisKK25hbWVzcGFjZQoreworCitzdGQ6
OnN0cmluZyBHZXRFeGVjdXRhYmxlUGF0aEltcGwoKQoreworICAgIC8vIFdlIGNhbm5vdCB1c2Ug
bHN0YXQgdG8gZ2V0IHRoZSBzaXplIG9mIC9wcm9jL3NlbGYvZXhlIGFzIGl0IGFsd2F5cyByZXR1
cm5zIDAKKyAgICAvLyBzbyB3ZSBqdXN0IHVzZSBhIGJpZyBidWZmZXIgYW5kIGhvcGUgdGhlIHBh
dGggZml0cyBpbiBpdC4KKyAgICBjaGFyIHBhdGhbNDA5Nl07CisKKyAgICBzc2l6ZV90IHJlc3Vs
dCA9IHJlYWRsaW5rKCIvcHJvYy9zZWxmL2V4ZSIsIHBhdGgsIHNpemVvZihwYXRoKSAtIDEpOwor
ICAgIGlmIChyZXN1bHQgPCAwIHx8IHN0YXRpY19jYXN0PHNpemVfdD4ocmVzdWx0KSA+PSBzaXpl
b2YocGF0aCkgLSAxKQorICAgIHsKKyAgICAgICAgcmV0dXJuICIiOworICAgIH0KKworICAgIHBh
dGhbcmVzdWx0XSA9ICdcMCc7CisgICAgcmV0dXJuIHBhdGg7Cit9CisKK3N0ZDo6c3RyaW5nIEdl
dEV4ZWN1dGFibGVEaXJlY3RvcnlJbXBsKCkKK3sKKyAgICBzdGQ6OnN0cmluZyBleGVjdXRhYmxl
UGF0aCA9IEdldEV4ZWN1dGFibGVQYXRoKCk7CisgICAgc2l6ZV90IGxhc3RQYXRoU2VwTG9jID0g
ZXhlY3V0YWJsZVBhdGguZmluZF9sYXN0X29mKCIvIik7CisgICAgcmV0dXJuIChsYXN0UGF0aFNl
cExvYyAhPSBzdGQ6OnN0cmluZzo6bnBvcykgPyBleGVjdXRhYmxlUGF0aC5zdWJzdHIoMCwgbGFz
dFBhdGhTZXBMb2MpIDogIiI7Cit9CisKK30gIC8vIGFub255bW91cyBuYW1lc3BhY2UKKworY29u
c3QgY2hhciAqR2V0RXhlY3V0YWJsZVBhdGgoKQoreworICAgIGNvbnN0IHN0YXRpYyBzdGQ6OnN0
cmluZyAmZXhlUGF0aCA9IEdldEV4ZWN1dGFibGVQYXRoSW1wbCgpOworICAgIHJldHVybiBleGVQ
YXRoLmNfc3RyKCk7Cit9CisKK2NvbnN0IGNoYXIgKkdldEV4ZWN1dGFibGVEaXJlY3RvcnkoKQor
eworICAgIGNvbnN0IHN0YXRpYyBzdGQ6OnN0cmluZyAmZXhlRGlyID0gR2V0RXhlY3V0YWJsZURp
cmVjdG9yeUltcGwoKTsKKyAgICByZXR1cm4gZXhlRGlyLmNfc3RyKCk7Cit9CisKK2NvbnN0IGNo
YXIgKkdldFNoYXJlZExpYnJhcnlFeHRlbnNpb24oKQoreworICAgIHJldHVybiAic28iOworfQor
Cit9IC8vIG5hbWVzcGFjZSBhbmdsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRp
bC9vc3gvT1NYUGl4bWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
dXRpbC9vc3gvT1NYUGl4bWFwLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvdXRpbC9vc3gvT1NYUGl4bWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBA
QAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKy8vCisKKy8vIE9TWFBpeG1hcC5oOiBEZWZpbml0aW9uIG9mIHRoZSBpbXBs
ZW1lbnRhdGlvbiBvZiBPU1BpeG1hcCBmb3IgT1NYCisKKyNpZm5kZWYgVVRJTF9PU1hfUElYTUFQ
X0hfCisjZGVmaW5lIFVUSUxfT1NYX1BJWE1BUF9IXworCisjaW5jbHVkZSAiT1NQaXhtYXAuaCIK
KworI2VuZGlmIC8vIFVUSUxfT1NYX1BJWE1BUF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvdXRpbC9vc3gvT1NYUGl4bWFwLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3V0aWwvb3N4L09TWFBpeG1hcC5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS91dGlsL29zeC9PU1hQaXhtYXAubW0JKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxNSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIE9TWFBpeG1hcC5jcHA6IEltcGxlbWVu
dGF0aW9uIG9mIE9TUGl4bWFwIGZvciBPU1gKKworI2luY2x1ZGUgIm9zeC9PU1hQaXhtYXAuaCIK
KworLy8gVE9ETyhjd2FsbGV6KSBmaW5kIG91dCB0aGUgbmF0aXZlIE9TWCBwaXhtYXAgdHlwZSBh
bmQgaW1wbGVtZW50IHRoaXMKK09TUGl4bWFwICpDcmVhdGVPU1BpeG1hcCgpCit7CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL29zeC9P
U1hUaW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9v
c3gvT1NYVGltZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3V0aWwvb3N4L09TWFRpbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYwIEBACisv
LworLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKworLy8gT1NYVGltZXIuY3BwOiBJbXBsZW1lbnRhdGlvbiBvZiBhIGhpZ2gg
cHJlY2lzaW9uIHRpbWVyIGNsYXNzIG9uIE9TWAorCisjaW5jbHVkZSAib3N4L09TWFRpbWVyLmgi
CisKKyNpbmNsdWRlIDxDb3JlU2VydmljZXMvQ29yZVNlcnZpY2VzLmg+CisjaW5jbHVkZSA8bWFj
aC9tYWNoLmg+CisjaW5jbHVkZSA8bWFjaC9tYWNoX3RpbWUuaD4KKworT1NYVGltZXI6Ok9TWFRp
bWVyKCkKKyAgICA6IG1SdW5uaW5nKGZhbHNlKQoreworfQorCit2b2lkIE9TWFRpbWVyOjpzdGFy
dCgpCit7CisgICAgbVN0YXJ0VGltZSA9IG1hY2hfYWJzb2x1dGVfdGltZSgpOworICAgIG1SdW5u
aW5nID0gdHJ1ZTsKK30KKwordm9pZCBPU1hUaW1lcjo6c3RvcCgpCit7CisgICAgbVN0b3BUaW1l
ID0gbWFjaF9hYnNvbHV0ZV90aW1lKCk7CisgICAgbVJ1bm5pbmcgPSBmYWxzZTsKK30KKworZG91
YmxlIE9TWFRpbWVyOjpnZXRFbGFwc2VkVGltZSgpIGNvbnN0Cit7CisgICAgLy8gSWYgdGhpcyBp
cyB0aGUgZmlyc3QgdGltZSB3ZSd2ZSBydW4sIGdldCB0aGUgdGltZWJhc2UuCisgICAgLy8gV2Ug
Y2FuIHVzZSBkZW5vbSA9PSAwIHRvIGluZGljYXRlIHRoYXQgc1RpbWViYXNlSW5mbyBpcworICAg
IC8vIHVuaW5pdGlhbGlzZWQgYmVjYXVzZSBpdCBtYWtlcyBubyBzZW5zZSB0byBoYXZlIGEgemVy
bworICAgIC8vIGRlbm9taW5hdG9yIGluIGEgZnJhY3Rpb24uCisgICAgc3RhdGljIG1hY2hfdGlt
ZWJhc2VfaW5mb19kYXRhX3QgdGltZWJhc2VJbmZvOworICAgIHN0YXRpYyBkb3VibGUgc2Vjb25k
Q29lZmY7CisKKyAgICBpZiAoIHRpbWViYXNlSW5mby5kZW5vbSA9PSAwICkKKyAgICB7CisgICAg
ICAgIG1hY2hfdGltZWJhc2VfaW5mbygmdGltZWJhc2VJbmZvKTsKKyAgICAgICAgc2Vjb25kQ29l
ZmYgPSB0aW1lYmFzZUluZm8ubnVtZXIgKiAoMS4wIC8gMTAwMDAwMDAwMCkgLyB0aW1lYmFzZUlu
Zm8uZGVub207CisgICAgfQorCisgICAgaWYgKG1SdW5uaW5nKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHNlY29uZENvZWZmICogKG1hY2hfYWJzb2x1dGVfdGltZSgpIC0gbVN0YXJ0VGltZSk7Cisg
ICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiBzZWNvbmRDb2VmZiAqIChtU3Rv
cFRpbWUgLSBtU3RhcnRUaW1lKTsKKyAgICB9Cit9CisKK1RpbWVyICpDcmVhdGVUaW1lcigpCit7
CisgICAgcmV0dXJuIG5ldyBPU1hUaW1lcigpOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvdXRpbC9vc3gvT1NYVGltZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS91dGlsL29zeC9PU1hUaW1lci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3V0aWwvb3N4L09TWFRpbWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwzMiBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIE9TWFRpbWVyLmg6IERlZmluaXRpb24gb2YgYSBo
aWdoIHByZWNpc2lvbiB0aW1lciBjbGFzcyBvbiBPU1gKKworI2lmbmRlZiBVVElMX09TWF9USU1F
Ul9IXworI2RlZmluZSBVVElMX09TWF9USU1FUl9IXworCisjaW5jbHVkZSA8c3RkaW50Lmg+Cisj
aW5jbHVkZSA8dGltZS5oPgorCisjaW5jbHVkZSAiVGltZXIuaCIKKworY2xhc3MgT1NYVGltZXIg
OiBwdWJsaWMgVGltZXIKK3sKKyAgcHVibGljOgorICAgIE9TWFRpbWVyKCk7CisKKyAgICB2b2lk
IHN0YXJ0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CisgICAgZG91Ymxl
IGdldEVsYXBzZWRUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgcHJpdmF0ZToKKyAgICBib29s
IG1SdW5uaW5nOworICAgIHVpbnQ2NF90IG1TdGFydFRpbWU7CisgICAgdWludDY0X3QgbVN0b3BU
aW1lOworfTsKKworI2VuZGlmIC8vIFVUSUxfT1NYX1RJTUVSX0hfCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS91dGlsL29zeC9PU1hXaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS91dGlsL29zeC9PU1hXaW5kb3cuaAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL29zeC9PU1hXaW5kb3cuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDYzIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gT1NYV2luZG93Lmg6IERlZmlu
aXRpb24gb2YgdGhlIGltcGxlbWVudGF0aW9uIG9mIE9TV2luZG93IGZvciBPU1gKKworI2lmbmRl
ZiBVVElMX09TWF9XSU5ET1dfSF8KKyNkZWZpbmUgVVRJTF9PU1hfV0lORE9XX0hfCisKKyNpbXBv
cnQgPENvY29hL0NvY29hLmg+CisKKyNpbmNsdWRlICJPU1dpbmRvdy5oIgorCitjbGFzcyBPU1hX
aW5kb3c7CisKK0BpbnRlcmZhY2UgV2luZG93RGVsZWdhdGUgOiBOU09iamVjdAoreworICAgIE9T
WFdpbmRvdyAqbVdpbmRvdzsKK30KKy0gKGlkKSBpbml0V2l0aFdpbmRvdzogKE9TWFdpbmRvdyop
IHdpbmRvdzsKK0BlbmQKKworQGludGVyZmFjZSBDb250ZW50VmlldyA6IE5TVmlldworeworICAg
IE9TWFdpbmRvdyAqbVdpbmRvdzsKKyAgICBOU1RyYWNraW5nQXJlYSAqbVRyYWNraW5nQXJlYTsK
KyAgICBpbnQgbUN1cnJlbnRNb2RpZmllcjsKK30KKy0gKGlkKSBpbml0V2l0aFdpbmRvdzogKE9T
WFdpbmRvdyopIHdpbmRvdzsKK0BlbmQKKworY2xhc3MgT1NYV2luZG93IDogcHVibGljIE9TV2lu
ZG93Cit7CisgIHB1YmxpYzoKKyAgICBPU1hXaW5kb3coKTsKKyAgICB+T1NYV2luZG93KCk7CisK
KyAgICBib29sIGluaXRpYWxpemUoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsIHNpemVfdCB3aWR0
aCwgc2l6ZV90IGhlaWdodCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXN0cm95KCkgb3ZlcnJpZGU7
CisKKyAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIGdldE5hdGl2ZVdpbmRvdygpIGNvbnN0IG92ZXJy
aWRlOworICAgIEVHTE5hdGl2ZURpc3BsYXlUeXBlIGdldE5hdGl2ZURpc3BsYXkoKSBjb25zdCBv
dmVycmlkZTsKKworICAgIHZvaWQgbWVzc2FnZUxvb3AoKSBvdmVycmlkZTsKKworICAgIHZvaWQg
c2V0TW91c2VQb3NpdGlvbihpbnQgeCwgaW50IHkpIG92ZXJyaWRlOworICAgIGJvb2wgc2V0UG9z
aXRpb24oaW50IHgsIGludCB5KSBvdmVycmlkZTsKKyAgICBib29sIHJlc2l6ZShpbnQgd2lkdGgs
IGludCBoZWlnaHQpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VmlzaWJsZShib29sIGlzVmlzaWJs
ZSkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNpZ25hbFRlc3RFdmVudCgpIG92ZXJyaWRlOworCisg
ICAgTlNXaW5kb3cgKmdldE5TV2luZG93KCkgY29uc3Q7CisKKyAgcHJpdmF0ZToKKyAgICBOU1dp
bmRvdyAqbVdpbmRvdzsKKyAgICBXaW5kb3dEZWxlZ2F0ZSAqbURlbGVnYXRlOworICAgIENvbnRl
bnRWaWV3ICptVmlldzsKK307CisKKyNlbmRpZiAvLyBVVElMX09TWF9XSU5ET1dfSF8KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvb3N4L09TWFdpbmRvdy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL29zeC9PU1hXaW5kb3cubW0JKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9vc3gvT1NYV2luZG93Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjg2IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAy
MDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gT1NY
V2luZG93Lm1tOiBJbXBsZW1lbnRhdGlvbiBvZiBPU1dpbmRvdyBmb3IgT1NYCisKKyNpbmNsdWRl
ICJvc3gvT1NYV2luZG93LmgiCisKKyNpbmNsdWRlIDxzZXQ+CisvLyBJbmNsdWRlIENhcmJvbiB0
byB1c2UgdGhlIGtleWNvZGUgbmFtZXMgaW4gQ2FyYm9uJ3MgRXZlbnQuaAorI2luY2x1ZGUgPENh
cmJvbi9DYXJib24uaD4KKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCisvLyBTb21lIGV2
ZW50cyBzdWNoIGFzICJTaG91bGRUZXJtaW5hdGUiIGFyZSBzZW50IHRvIHRoZSB3aG9sZSBhcHBs
aWNhdGlvbiBzbyB3ZSBrZWVwIGEgbGlzdCBvZgorLy8gYWxsIHRoZSB3aW5kb3dzIGluIG9yZGVy
IHRvIGZvcndhcmQgdGhlIGV2ZW50IHRvIGVhY2ggb2YgdGhlbS4gSG93ZXZlciB0aGlzIGFuZCBj
YWxsaW5nIHB1c2hFdmVudAorLy8gaW4gQXBwbGljYXRpb25EZWxlZ2F0ZSBpcyBpbmhlcmVudGx5
IHVuc2FmZSBpbiBhIG11bHRpdGhyZWFkZWQgZW52aXJvbm1lbnQuCitzdGF0aWMgc3RkOjpzZXQ8
T1NYV2luZG93Kj4gZ0FsbFdpbmRvd3M7CisKK0BpbnRlcmZhY2UgQXBwbGljYXRpb24gOiBOU0Fw
cGxpY2F0aW9uCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBBcHBsaWNhdGlvbgorICAgIC0gKHZv
aWQpIHNlbmRFdmVudDogKE5TRXZlbnQqKSBuc0V2ZW50CisgICAgeworICAgICAgICBpZiAoW25z
RXZlbnQgdHlwZV0gPT0gTlNBcHBsaWNhdGlvbkRlZmluZWQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGZvciAoYXV0byB3aW5kb3cgOiBnQWxsV2luZG93cykKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBpZiAoW3dpbmRvdy0+Z2V0TlNXaW5kb3coKSB3aW5kb3dOdW1iZXJdID09IFtu
c0V2ZW50IHdpbmRvd051bWJlcl0pCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBFdmVudCBldmVudDsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQuVHlwZSA9IEV2ZW50
OjpFVkVOVF9URVNUOworICAgICAgICAgICAgICAgICAgICB3aW5kb3ctPnB1c2hFdmVudChldmVu
dCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IFtzdXBlciBzZW5kRXZlbnQ6IG5zRXZlbnRdOworICAgIH0KK0BlbmQKKworLy8gVGhlIERlbGVn
YXRlIHJlY2VpdmluZyBhcHBsaWNhdGlvbi13aWRlIGV2ZW50cy4KK0BpbnRlcmZhY2UgQXBwbGlj
YXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBBcHBsaWNh
dGlvbkRlbGVnYXRlCisgICAgLSAoTlNBcHBsaWNhdGlvblRlcm1pbmF0ZVJlcGx5KSBhcHBsaWNh
dGlvblNob3VsZFRlcm1pbmF0ZTogKE5TQXBwbGljYXRpb24qKSBzZW5kZXIKKyAgICB7CisgICAg
ICAgIEV2ZW50IGV2ZW50OworICAgICAgICBldmVudC5UeXBlID0gRXZlbnQ6OkVWRU5UX0NMT1NF
RDsKKyAgICAgICAgZm9yIChhdXRvIHdpbmRvdyA6IGdBbGxXaW5kb3dzKQorICAgICAgICB7Cisg
ICAgICAgICAgICB3aW5kb3ctPnB1c2hFdmVudChldmVudCk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIE5TVGVybWluYXRlQ2FuY2VsOworICAgIH0KK0BlbmQKK3N0YXRpYyBBcHBsaWNhdGlv
bkRlbGVnYXRlICpnQXBwbGljYXRpb25EZWxlZ2F0ZSA9IG5pbDsKKworc3RhdGljIGJvb2wgSW5p
dGlhbGl6ZUFwcEtpdCgpCit7CisgICAgaWYgKE5TQXBwICE9IG5pbCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIEluaXRpYWxpemUgdGhlIGdsb2JhbCB2YXJp
YWJsZSAiTlNBcHAiCisgICAgW0FwcGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXTsKKworICAg
IC8vIE1ha2UgdXMgYXBwZWFyIGluIHRoZSBkb2NrCisgICAgW05TQXBwIHNldEFjdGl2YXRpb25Q
b2xpY3k6TlNBcHBsaWNhdGlvbkFjdGl2YXRpb25Qb2xpY3lSZWd1bGFyXTsKKworICAgIC8vIFJl
Z2lzdGVyIG91ciBnbG9iYWwgZXZlbnQgaGFuZGxlcgorICAgIGdBcHBsaWNhdGlvbkRlbGVnYXRl
ID0gW1tBcHBsaWNhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XTsKKyAgICBpZiAoZ0FwcGxpY2F0
aW9uRGVsZWdhdGUgPT0gbmlsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICBbTlNBcHAgc2V0RGVsZWdhdGU6IHN0YXRpY19jYXN0PGlkPihnQXBwbGljYXRpb25EZWxl
Z2F0ZSldOworCisgICAgLy8gU2V0IG91ciBzdGF0dXMgdG8gInN0YXJ0ZWQiIHNvIHdlIGFyZSBu
b3QgYm91bmNpbmcgaW4gdGhlIGRvYyBhbmQgY2FuIGFjdGl2YXRlCisgICAgW05TQXBwIGZpbmlz
aExhdW5jaGluZ107CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIE5TJ3MgYW5kIENHJ3MgY29v
cmRpbmF0ZSBzeXN0ZW1zIHN0YXJ0IGF0IHRoZSBib3R0b20gbGVmdCwgd2hpbGUgT1NXaW5kb3cn
cyBjb29yZGluYXRlCisvLyBzeXN0ZW0gc3RhcnRzIGF0IHRoZSB0b3AgbGVmdC4gVGhpcyBmdW5j
dGlvbiBjb252ZXJ0cyB0aGUgWSBjb29yZGluYXRlIGFjY29yZGluZ2x5Lgorc3RhdGljIGZsb2F0
IFlDb29yZFRvRnJvbUNHKGZsb2F0IHkpCit7CisgICAgZmxvYXQgc2NyZWVuSGVpZ2h0ID0gQ0dE
aXNwbGF5Qm91bmRzKENHTWFpbkRpc3BsYXlJRCgpKS5zaXplLmhlaWdodDsKKyAgICByZXR1cm4g
c2NyZWVuSGVpZ2h0IC0geTsKK30KKworLy8gRGVsZWdhdGUgZm9yIHdpbmRvdy13aWRlIGV2ZW50
cywgbm90ZSB0aGF0IHRoZSBwcm90b2NvbCBkb2Vzbid0IGNvbnRhaW4gYW55dGhpbmcgaW5wdXQg
cmVsYXRlZC4KK0BpbXBsZW1lbnRhdGlvbiBXaW5kb3dEZWxlZ2F0ZQorICAgIC0gKGlkKSBpbml0
V2l0aFdpbmRvdzogKE9TWFdpbmRvdyopIHdpbmRvdworICAgIHsKKyAgICAgICAgc2VsZiA9IFtz
dXBlciBpbml0XTsKKyAgICAgICAgaWYgKHNlbGYgIT0gbmlsKQorICAgICAgICB7CisgICAgICAg
ICAgICBtV2luZG93ID0gd2luZG93OworICAgICAgICB9CisgICAgICAgIHJldHVybiBzZWxmOwor
ICAgIH0KKworICAgIC0gKHZvaWQpIG9uT1NYV2luZG93RGVsZXRlZAorICAgIHsKKyAgICAgICAg
bVdpbmRvdyA9IG5pbDsKKyAgICB9CisKKyAgICAtIChCT09MKSB3aW5kb3dTaG91bGRDbG9zZTog
KGlkKSBzZW5kZXIKKyAgICB7CisgICAgICAgIEV2ZW50IGV2ZW50OworICAgICAgICBldmVudC5U
eXBlID0gRXZlbnQ6OkVWRU5UX0NMT1NFRDsKKyAgICAgICAgbVdpbmRvdy0+cHVzaEV2ZW50KGV2
ZW50KTsKKyAgICAgICAgcmV0dXJuIE5POworICAgIH0KKworICAgIC0gKHZvaWQpIHdpbmRvd0Rp
ZFJlc2l6ZTogKE5TTm90aWZpY2F0aW9uKikgbm90aWZpY2F0aW9uCisgICAgeworICAgICAgICBO
U1NpemUgd2luZG93U2l6ZSA9IFtbbVdpbmRvdy0+Z2V0TlNXaW5kb3coKSBjb250ZW50Vmlld10g
ZnJhbWVdLnNpemU7CisgICAgICAgIEV2ZW50IGV2ZW50OworICAgICAgICBldmVudC5UeXBlID0g
RXZlbnQ6OkVWRU5UX1JFU0laRUQ7CisgICAgICAgIGV2ZW50LlNpemUuV2lkdGggPSB3aW5kb3dT
aXplLndpZHRoOworICAgICAgICBldmVudC5TaXplLkhlaWdodCA9IHdpbmRvd1NpemUuaGVpZ2h0
OworICAgICAgICBtV2luZG93LT5wdXNoRXZlbnQoZXZlbnQpOworICAgIH0KKworICAgIC0gKHZv
aWQpIHdpbmRvd0RpZE1vdmU6IChOU05vdGlmaWNhdGlvbiopIG5vdGlmaWNhdGlvbgorICAgIHsK
KyAgICAgICAgTlNSZWN0IHNjcmVlbnNwYWNlID0gW21XaW5kb3ctPmdldE5TV2luZG93KCkgZnJh
bWVdOworICAgICAgICBFdmVudCBldmVudDsKKyAgICAgICAgZXZlbnQuVHlwZSA9IEV2ZW50OjpF
VkVOVF9NT1ZFRDsKKyAgICAgICAgZXZlbnQuTW92ZS5YID0gc2NyZWVuc3BhY2Uub3JpZ2luLng7
CisgICAgICAgIGV2ZW50Lk1vdmUuWSA9IFlDb29yZFRvRnJvbUNHKHNjcmVlbnNwYWNlLm9yaWdp
bi55ICsgc2NyZWVuc3BhY2Uuc2l6ZS5oZWlnaHQpOworICAgICAgICBtV2luZG93LT5wdXNoRXZl
bnQoZXZlbnQpOworICAgIH0KKworICAgIC0gKHZvaWQpIHdpbmRvd0RpZEJlY29tZUtleTogKE5T
Tm90aWZpY2F0aW9uKikgbm90aWZpY2F0aW9uCisgICAgeworICAgICAgICBFdmVudCBldmVudDsK
KyAgICAgICAgZXZlbnQuVHlwZSA9IEV2ZW50OjpFVkVOVF9HQUlORURfRk9DVVM7CisgICAgICAg
IG1XaW5kb3ctPnB1c2hFdmVudChldmVudCk7CisgICAgICAgIFtzZWxmIHJldGFpbl07CisgICAg
fQorCisgICAgLSAodm9pZCkgd2luZG93RGlkUmVzaWduS2V5OiAoTlNOb3RpZmljYXRpb24qKSBu
b3RpZmljYXRpb24KKyAgICB7CisgICAgICAgIGlmIChtV2luZG93ICE9IG5pbCkKKyAgICAgICAg
eworICAgICAgICAgICAgRXZlbnQgZXZlbnQ7CisgICAgICAgICAgICBldmVudC5UeXBlID0gRXZl
bnQ6OkVWRU5UX0xPU1RfRk9DVVM7CisgICAgICAgICAgICBtV2luZG93LT5wdXNoRXZlbnQoZXZl
bnQpOworICAgICAgICB9CisgICAgICAgIFtzZWxmIHJlbGVhc2VdOworICAgIH0KK0BlbmQKKwor
c3RhdGljIEtleSBOU0NvZGVUb0tleShpbnQga2V5Q29kZSkKK3sKKyAgICAvLyBNaXNzaW5nIEtF
WV9QQVVTRQorICAgIHN3aXRjaCAoa2V5Q29kZSkKKyAgICB7CisgICAgICBjYXNlIGtWS19TaGlm
dDogICAgICAgICAgICAgICByZXR1cm4gS0VZX0xTSElGVDsKKyAgICAgIGNhc2Uga1ZLX1JpZ2h0
U2hpZnQ6ICAgICAgICAgIHJldHVybiBLRVlfUlNISUZUOworICAgICAgY2FzZSBrVktfT3B0aW9u
OiAgICAgICAgICAgICAgcmV0dXJuIEtFWV9MQUxUOworICAgICAgY2FzZSBrVktfUmlnaHRPcHRp
b246ICAgICAgICAgcmV0dXJuIEtFWV9SQUxUOworICAgICAgY2FzZSBrVktfQ29udHJvbDogICAg
ICAgICAgICAgcmV0dXJuIEtFWV9MQ09OVFJPTDsKKyAgICAgIGNhc2Uga1ZLX1JpZ2h0Q29udHJv
bDogICAgICAgIHJldHVybiBLRVlfUkNPTlRST0w7CisgICAgICBjYXNlIGtWS19Db21tYW5kOiAg
ICAgICAgICAgICByZXR1cm4gS0VZX0xTWVNURU07CisgICAgICAvLyBSaWdodCBTeXN0ZW0gZG9l
c24ndCBoYXZlIGEgbmFtZSwgYnV0IHNob3dzIHVwIGFzIDB4MzYuCisgICAgICBjYXNlIDB4MzY6
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gS0VZX1JTWVNURU07CisgICAgICBjYXNlIGtWS19G
dW5jdGlvbjogICAgICAgICAgICByZXR1cm4gS0VZX01FTlU7CisKKyAgICAgIGNhc2Uga1ZLX0FO
U0lfU2VtaWNvbG9uOiAgICAgIHJldHVybiBLRVlfU0VNSUNPTE9OOworICAgICAgY2FzZSBrVktf
QU5TSV9TbGFzaDogICAgICAgICAgcmV0dXJuIEtFWV9TTEFTSDsKKyAgICAgIGNhc2Uga1ZLX0FO
U0lfRXF1YWw6ICAgICAgICAgIHJldHVybiBLRVlfRVFVQUw7CisgICAgICBjYXNlIGtWS19BTlNJ
X01pbnVzOiAgICAgICAgICByZXR1cm4gS0VZX0RBU0g7CisgICAgICBjYXNlIGtWS19BTlNJX0xl
ZnRCcmFja2V0OiAgICByZXR1cm4gS0VZX0xCUkFDS0VUOworICAgICAgY2FzZSBrVktfQU5TSV9S
aWdodEJyYWNrZXQ6ICAgcmV0dXJuIEtFWV9SQlJBQ0tFVDsKKyAgICAgIGNhc2Uga1ZLX0FOU0lf
Q29tbWE6ICAgICAgICAgIHJldHVybiBLRVlfQ09NTUE7CisgICAgICBjYXNlIGtWS19BTlNJX1Bl
cmlvZDogICAgICAgICByZXR1cm4gS0VZX1BFUklPRDsKKyAgICAgIGNhc2Uga1ZLX0FOU0lfQmFj
a3NsYXNoOiAgICAgIHJldHVybiBLRVlfQkFDS1NMQVNIOworICAgICAgY2FzZSBrVktfQU5TSV9H
cmF2ZTogICAgICAgICAgcmV0dXJuIEtFWV9USUxERTsKKyAgICAgIGNhc2Uga1ZLX0VzY2FwZTog
ICAgICAgICAgICAgIHJldHVybiBLRVlfRVNDQVBFOworICAgICAgY2FzZSBrVktfU3BhY2U6ICAg
ICAgICAgICAgICAgcmV0dXJuIEtFWV9TUEFDRTsKKyAgICAgIGNhc2Uga1ZLX1JldHVybjogICAg
ICAgICAgICAgIHJldHVybiBLRVlfUkVUVVJOOworICAgICAgY2FzZSBrVktfRGVsZXRlOiAgICAg
ICAgICAgICAgcmV0dXJuIEtFWV9CQUNLOworICAgICAgY2FzZSBrVktfVGFiOiAgICAgICAgICAg
ICAgICAgcmV0dXJuIEtFWV9UQUI7CisgICAgICBjYXNlIGtWS19QYWdlVXA6ICAgICAgICAgICAg
ICByZXR1cm4gS0VZX1BBR0VVUDsKKyAgICAgIGNhc2Uga1ZLX1BhZ2VEb3duOiAgICAgICAgICAg
IHJldHVybiBLRVlfUEFHRURPV047CisgICAgICBjYXNlIGtWS19FbmQ6ICAgICAgICAgICAgICAg
ICByZXR1cm4gS0VZX0VORDsKKyAgICAgIGNhc2Uga1ZLX0hvbWU6ICAgICAgICAgICAgICAgIHJl
dHVybiBLRVlfSE9NRTsKKyAgICAgIGNhc2Uga1ZLX0hlbHA6ICAgICAgICAgICAgICAgIHJldHVy
biBLRVlfSU5TRVJUOworICAgICAgY2FzZSBrVktfRm9yd2FyZERlbGV0ZTogICAgICAgcmV0dXJu
IEtFWV9ERUxFVEU7CisgICAgICBjYXNlIGtWS19BTlNJX0tleXBhZFBsdXM6ICAgICByZXR1cm4g
S0VZX0FERDsKKyAgICAgIGNhc2Uga1ZLX0FOU0lfS2V5cGFkTWludXM6ICAgIHJldHVybiBLRVlf
U1VCVFJBQ1Q7CisgICAgICBjYXNlIGtWS19BTlNJX0tleXBhZE11bHRpcGx5OiByZXR1cm4gS0VZ
X01VTFRJUExZOworICAgICAgY2FzZSBrVktfQU5TSV9LZXlwYWREaXZpZGU6ICAgcmV0dXJuIEtF
WV9ESVZJREU7CisKKyAgICAgIGNhc2Uga1ZLX0YxOiAgICAgICAgICAgICAgICAgIHJldHVybiBL
RVlfRjE7CisgICAgICBjYXNlIGtWS19GMjogICAgICAgICAgICAgICAgICByZXR1cm4gS0VZX0Yy
OworICAgICAgY2FzZSBrVktfRjM6ICAgICAgICAgICAgICAgICAgcmV0dXJuIEtFWV9GMzsKKyAg
ICAgIGNhc2Uga1ZLX0Y0OiAgICAgICAgICAgICAgICAgIHJldHVybiBLRVlfRjQ7CisgICAgICBj
YXNlIGtWS19GNTogICAgICAgICAgICAgICAgICByZXR1cm4gS0VZX0Y1OworICAgICAgY2FzZSBr
VktfRjY6ICAgICAgICAgICAgICAgICAgcmV0dXJuIEtFWV9GNjsKKyAgICAgIGNhc2Uga1ZLX0Y3
OiAgICAgICAgICAgICAgICAgIHJldHVybiBLRVlfRjc7CisgICAgICBjYXNlIGtWS19GODogICAg
ICAgICAgICAgICAgICByZXR1cm4gS0VZX0Y4OworICAgICAgY2FzZSBrVktfRjk6ICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEtFWV9GOTsKKyAgICAgIGNhc2Uga1ZLX0YxMDogICAgICAgICAgICAg
ICAgIHJldHVybiBLRVlfRjEwOworICAgICAgY2FzZSBrVktfRjExOiAgICAgICAgICAgICAgICAg
cmV0dXJuIEtFWV9GMTE7CisgICAgICBjYXNlIGtWS19GMTI6ICAgICAgICAgICAgICAgICByZXR1
cm4gS0VZX0YxMjsKKyAgICAgIGNhc2Uga1ZLX0YxMzogICAgICAgICAgICAgICAgIHJldHVybiBL
RVlfRjEzOworICAgICAgY2FzZSBrVktfRjE0OiAgICAgICAgICAgICAgICAgcmV0dXJuIEtFWV9G
MTQ7CisgICAgICBjYXNlIGtWS19GMTU6ICAgICAgICAgICAgICAgICByZXR1cm4gS0VZX0YxNTsK
KworICAgICAgY2FzZSBrVktfTGVmdEFycm93OiAgICAgICAgICAgcmV0dXJuIEtFWV9MRUZUOwor
ICAgICAgY2FzZSBrVktfUmlnaHRBcnJvdzogICAgICAgICAgcmV0dXJuIEtFWV9SSUdIVDsKKyAg
ICAgIGNhc2Uga1ZLX0Rvd25BcnJvdzogICAgICAgICAgIHJldHVybiBLRVlfRE9XTjsKKyAgICAg
IGNhc2Uga1ZLX1VwQXJyb3c6ICAgICAgICAgICAgIHJldHVybiBLRVlfVVA7CisKKyAgICAgIGNh
c2Uga1ZLX0FOU0lfS2V5cGFkMDogICAgICAgIHJldHVybiBLRVlfTlVNUEFEMDsKKyAgICAgIGNh
c2Uga1ZLX0FOU0lfS2V5cGFkMTogICAgICAgIHJldHVybiBLRVlfTlVNUEFEMTsKKyAgICAgIGNh
c2Uga1ZLX0FOU0lfS2V5cGFkMjogICAgICAgIHJldHVybiBLRVlfTlVNUEFEMjsKKyAgICAgIGNh
c2Uga1ZLX0FOU0lfS2V5cGFkMzogICAgICAgIHJldHVybiBLRVlfTlVNUEFEMzsKKyAgICAgIGNh
c2Uga1ZLX0FOU0lfS2V5cGFkNDogICAgICAgIHJldHVybiBLRVlfTlVNUEFENDsKKyAgICAgIGNh
c2Uga1ZLX0FOU0lfS2V5cGFkNTogICAgICAgIHJldHVybiBLRVlfTlVNUEFENTsKKyAgICAgIGNh
c2Uga1ZLX0FOU0lfS2V5cGFkNjogICAgICAgIHJldHVybiBLRVlfTlVNUEFENjsKKyAgICAgIGNh
c2Uga1ZLX0FOU0lfS2V5cGFkNzogICAgICAgIHJldHVybiBLRVlfTlVNUEFENzsKKyAgICAgIGNh
c2Uga1ZLX0FOU0lfS2V5cGFkODogICAgICAgIHJldHVybiBLRVlfTlVNUEFEODsKKyAgICAgIGNh
c2Uga1ZLX0FOU0lfS2V5cGFkOTogICAgICAgIHJldHVybiBLRVlfTlVNUEFEOTsKKworICAgICAg
Y2FzZSBrVktfQU5TSV9BOiAgICAgICAgICAgICAgcmV0dXJuIEtFWV9BOworICAgICAgY2FzZSBr
VktfQU5TSV9COiAgICAgICAgICAgICAgcmV0dXJuIEtFWV9COworICAgICAgY2FzZSBrVktfQU5T
SV9DOiAgICAgICAgICAgICAgcmV0dXJuIEtFWV9DOworICAgICAgY2FzZSBrVktfQU5TSV9EOiAg
ICAgICAgICAgICAgcmV0dXJuIEtFWV9EOworICAgICAgY2FzZSBrVktfQU5TSV9FOiAgICAgICAg
ICAgICAgcmV0dXJuIEtFWV9FOworICAgICAgY2FzZSBrVktfQU5TSV9GOiAgICAgICAgICAgICAg
cmV0dXJuIEtFWV9GOworICAgICAgY2FzZSBrVktfQU5TSV9HOiAgICAgICAgICAgICAgcmV0dXJu
IEtFWV9HOworICAgICAgY2FzZSBrVktfQU5TSV9IOiAgICAgICAgICAgICAgcmV0dXJuIEtFWV9I
OworICAgICAgY2FzZSBrVktfQU5TSV9JOiAgICAgICAgICAgICAgcmV0dXJuIEtFWV9JOworICAg
ICAgY2FzZSBrVktfQU5TSV9KOiAgICAgICAgICAgICAgcmV0dXJuIEtFWV9KOworICAgICAgY2Fz
ZSBrVktfQU5TSV9LOiAgICAgICAgICAgICAgcmV0dXJuIEtFWV9LOworICAgICAgY2FzZSBrVktf
QU5TSV9MOiAgICAgICAgICAgICAgcmV0dXJuIEtFWV9MOworICAgICAgY2FzZSBrVktfQU5TSV9N
OiAgICAgICAgICAgICAgcmV0dXJuIEtFWV9NOworICAgICAgY2FzZSBrVktfQU5TSV9OOiAgICAg
ICAgICAgICAgcmV0dXJuIEtFWV9OOworICAgICAgY2FzZSBrVktfQU5TSV9POiAgICAgICAgICAg
ICAgcmV0dXJuIEtFWV9POworICAgICAgY2FzZSBrVktfQU5TSV9QOiAgICAgICAgICAgICAgcmV0
dXJuIEtFWV9QOworICAgICAgY2FzZSBrVktfQU5TSV9ROiAgICAgICAgICAgICAgcmV0dXJuIEtF
WV9ROworICAgICAgY2FzZSBrVktfQU5TSV9SOiAgICAgICAgICAgICAgcmV0dXJuIEtFWV9SOwor
ICAgICAgY2FzZSBrVktfQU5TSV9TOiAgICAgICAgICAgICAgcmV0dXJuIEtFWV9TOworICAgICAg
Y2FzZSBrVktfQU5TSV9UOiAgICAgICAgICAgICAgcmV0dXJuIEtFWV9UOworICAgICAgY2FzZSBr
VktfQU5TSV9VOiAgICAgICAgICAgICAgcmV0dXJuIEtFWV9VOworICAgICAgY2FzZSBrVktfQU5T
SV9WOiAgICAgICAgICAgICAgcmV0dXJuIEtFWV9WOworICAgICAgY2FzZSBrVktfQU5TSV9XOiAg
ICAgICAgICAgICAgcmV0dXJuIEtFWV9XOworICAgICAgY2FzZSBrVktfQU5TSV9YOiAgICAgICAg
ICAgICAgcmV0dXJuIEtFWV9YOworICAgICAgY2FzZSBrVktfQU5TSV9ZOiAgICAgICAgICAgICAg
cmV0dXJuIEtFWV9ZOworICAgICAgY2FzZSBrVktfQU5TSV9aOiAgICAgICAgICAgICAgcmV0dXJu
IEtFWV9aOworCisgICAgICBjYXNlIGtWS19BTlNJXzE6ICAgICAgICAgICAgICByZXR1cm4gS0VZ
X05VTTE7CisgICAgICBjYXNlIGtWS19BTlNJXzI6ICAgICAgICAgICAgICByZXR1cm4gS0VZX05V
TTI7CisgICAgICBjYXNlIGtWS19BTlNJXzM6ICAgICAgICAgICAgICByZXR1cm4gS0VZX05VTTM7
CisgICAgICBjYXNlIGtWS19BTlNJXzQ6ICAgICAgICAgICAgICByZXR1cm4gS0VZX05VTTQ7Cisg
ICAgICBjYXNlIGtWS19BTlNJXzU6ICAgICAgICAgICAgICByZXR1cm4gS0VZX05VTTU7CisgICAg
ICBjYXNlIGtWS19BTlNJXzY6ICAgICAgICAgICAgICByZXR1cm4gS0VZX05VTTY7CisgICAgICBj
YXNlIGtWS19BTlNJXzc6ICAgICAgICAgICAgICByZXR1cm4gS0VZX05VTTc7CisgICAgICBjYXNl
IGtWS19BTlNJXzg6ICAgICAgICAgICAgICByZXR1cm4gS0VZX05VTTg7CisgICAgICBjYXNlIGtW
S19BTlNJXzk6ICAgICAgICAgICAgICByZXR1cm4gS0VZX05VTTk7CisgICAgICBjYXNlIGtWS19B
TlNJXzA6ICAgICAgICAgICAgICByZXR1cm4gS0VZX05VTTA7CisgICAgfQorCisgICAgcmV0dXJu
IEtleSgwKTsKK30KKworc3RhdGljIHZvaWQgQWRkTlNLZXlTdGF0ZVRvRXZlbnQoRXZlbnQgKmV2
ZW50LCBpbnQgc3RhdGUpCit7CisgICAgZXZlbnQtPktleS5TaGlmdCA9IHN0YXRlICYgTlNTaGlm
dEtleU1hc2s7CisgICAgZXZlbnQtPktleS5Db250cm9sID0gc3RhdGUgJiBOU0NvbnRyb2xLZXlN
YXNrOworICAgIGV2ZW50LT5LZXkuQWx0ID0gc3RhdGUgJiBOU0FsdGVybmF0ZUtleU1hc2s7Cisg
ICAgZXZlbnQtPktleS5TeXN0ZW0gPSBzdGF0ZSAmIE5TQ29tbWFuZEtleU1hc2s7Cit9CisKK3N0
YXRpYyBNb3VzZUJ1dHRvbiBUcmFuc2xhdGVNb3VzZUJ1dHRvbihpbnQgYnV0dG9uKQoreworICAg
IHN3aXRjaCAoYnV0dG9uKQorICAgIHsKKyAgICAgIGNhc2UgMjoKKyAgICAgICAgcmV0dXJuIE1P
VVNFQlVUVE9OX01JRERMRTsKKyAgICAgIGNhc2UgMzoKKyAgICAgICAgcmV0dXJuIE1PVVNFQlVU
VE9OX0JVVFRPTjQ7CisgICAgICBjYXNlIDQ6CisgICAgICAgIHJldHVybiBNT1VTRUJVVFRPTl9C
VVRUT041OworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIE1PVVNFQlVUVE9OX1VOS05P
V047CisgICAgfQorfQorCisvLyBEZWxlZ2F0ZSBmb3IgTlNWaWV3IGV2ZW50cywgbW9zdGx5IHRo
ZSBpbnB1dCBldmVudHMKK0BpbXBsZW1lbnRhdGlvbiBDb250ZW50VmlldworICAgIC0gKGlkKSBp
bml0V2l0aFdpbmRvdzogKE9TWFdpbmRvdyopIHdpbmRvdworICAgIHsKKyAgICAgICAgc2VsZiA9
IFtzdXBlciBpbml0XTsKKyAgICAgICAgaWYgKHNlbGYgIT0gbmlsKQorICAgICAgICB7CisgICAg
ICAgICAgICBtV2luZG93ID0gd2luZG93OworICAgICAgICAgICAgbVRyYWNraW5nQXJlYSA9IG5p
bDsKKyAgICAgICAgICAgIG1DdXJyZW50TW9kaWZpZXIgPSAwOworICAgICAgICAgICAgW3NlbGYg
dXBkYXRlVHJhY2tpbmdBcmVhc107CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHNlbGY7Cisg
ICAgfQorCisgICAgLSAodm9pZCkgZGVhbGxvYworICAgIHsKKyAgICAgICAgW21UcmFja2luZ0Fy
ZWEgcmVsZWFzZV07CisgICAgICAgIFtzdXBlciBkZWFsbG9jXTsKKyAgICB9CisKKyAgICAtICh2
b2lkKSB1cGRhdGVUcmFja2luZ0FyZWFzCisgICAgeworICAgICAgICBpZiAobVRyYWNraW5nQXJl
YSAhPSBuaWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIFtzZWxmIHJlbW92ZVRyYWNraW5nQXJl
YTogbVRyYWNraW5nQXJlYV07CisgICAgICAgICAgICBbbVRyYWNraW5nQXJlYSByZWxlYXNlXTsK
KyAgICAgICAgICAgIG1UcmFja2luZ0FyZWEgPSBuaWw7CisgICAgICAgIH0KKworICAgICAgICBO
U1JlY3QgYm91bmRzID0gW3NlbGYgYm91bmRzXTsKKyAgICAgICAgTlNUcmFja2luZ0FyZWFPcHRp
b25zIGZsYWdzID0gTlNUcmFja2luZ01vdXNlRW50ZXJlZEFuZEV4aXRlZCB8CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TVHJhY2tpbmdBY3RpdmVJbktleVdpbmRvdyB8
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TVHJhY2tpbmdDdXJzb3JV
cGRhdGUgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOU1RyYWNraW5n
SW5WaXNpYmxlUmVjdCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5T
VHJhY2tpbmdBc3N1bWVJbnNpZGU7CisgICAgICAgIG1UcmFja2luZ0FyZWEgPSBbW05TVHJhY2tp
bmdBcmVhIGFsbG9jXSBpbml0V2l0aFJlY3Q6IGJvdW5kcworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IGZsYWdzCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvd25lcjogc2VsZgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcklu
Zm86IG5pbF07CisKKyAgICAgICAgW3NlbGYgYWRkVHJhY2tpbmdBcmVhOiBtVHJhY2tpbmdBcmVh
XTsKKyAgICAgICAgW3N1cGVyIHVwZGF0ZVRyYWNraW5nQXJlYXNdOworICAgIH0KKworICAgIC8v
IEhlbHBzIHdpdGggcGVyZm9ybWFuY2UKKyAgICAtIChCT09MKSBpc09wYXF1ZQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIFlFUzsKKyAgICB9CisKKyAgICAtIChCT09MKSBjYW5CZWNvbWVLZXlWaWV3
CisgICAgeworICAgICAgICByZXR1cm4gWUVTOworICAgIH0KKworICAgIC0gKEJPT0wpIGFjY2Vw
dHNGaXJzdFJlc3BvbmRlcgorICAgIHsKKyAgICAgICAgcmV0dXJuIFlFUzsKKyAgICB9CisKKyAg
ICAvLyBIYW5kbGUgbW91c2UgZXZlbnRzIGZyb20gdGhlIE5TUmVzcG9uZGVyIHByb3RvY29sCisg
ICAgLSAoZmxvYXQpIHRyYW5zbGF0ZU1vdXNlWTogKGZsb2F0KSB5CisgICAgeworICAgICAgICBy
ZXR1cm4gW3NlbGYgZnJhbWVdLnNpemUuaGVpZ2h0IC0geTsKKyAgICB9CisKKyAgICAtICh2b2lk
KSBhZGRCdXR0b25FdmVudDogKE5TRXZlbnQqKSBuc0V2ZW50IHR5cGU6KEV2ZW50OjpFdmVudFR5
cGUpIGV2ZW50VHlwZSBidXR0b246KE1vdXNlQnV0dG9uKSBidXR0b24KKyAgICB7CisgICAgICAg
IEV2ZW50IGV2ZW50OworICAgICAgICBldmVudC5UeXBlID0gZXZlbnRUeXBlOworICAgICAgICBl
dmVudC5Nb3VzZUJ1dHRvbi5CdXR0b24gPSBidXR0b247CisgICAgICAgIGV2ZW50Lk1vdXNlQnV0
dG9uLlggPSBbbnNFdmVudCBsb2NhdGlvbkluV2luZG93XS54OworICAgICAgICBldmVudC5Nb3Vz
ZUJ1dHRvbi5ZID0gW3NlbGYgdHJhbnNsYXRlTW91c2VZOiBbbnNFdmVudCBsb2NhdGlvbkluV2lu
ZG93XS55XTsKKyAgICAgICAgbVdpbmRvdy0+cHVzaEV2ZW50KGV2ZW50KTsKKyAgICB9CisKKyAg
ICAtICh2b2lkKSBtb3VzZURvd246IChOU0V2ZW50KikgZXZlbnQKKyAgICB7CisgICAgICAgIFtz
ZWxmIGFkZEJ1dHRvbkV2ZW50OiBldmVudAorICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTog
RXZlbnQ6OkVWRU5UX01PVVNFX0JVVFRPTl9QUkVTU0VECisgICAgICAgICAgICAgICAgICAgICAg
YnV0dG9uOiBNT1VTRUJVVFRPTl9MRUZUXTsKKyAgICB9CisKKyAgICAtICh2b2lkKSBtb3VzZURy
YWdnZWQ6IChOU0V2ZW50KikgZXZlbnQKKyAgICB7CisgICAgICAgIFtzZWxmIG1vdXNlTW92ZWQ6
IGV2ZW50XTsKKyAgICB9CisKKyAgICAtICh2b2lkKSBtb3VzZVVwOiAoTlNFdmVudCopIGV2ZW50
CisgICAgeworICAgICAgICBbc2VsZiBhZGRCdXR0b25FdmVudDogZXZlbnQKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHR5cGU6IEV2ZW50OjpFVkVOVF9NT1VTRV9CVVRUT05fUkVMRUFTRUQKKyAg
ICAgICAgICAgICAgICAgICAgICBidXR0b246IE1PVVNFQlVUVE9OX0xFRlRdOworICAgIH0KKwor
ICAgIC0gKHZvaWQpIG1vdXNlTW92ZWQ6IChOU0V2ZW50KikgbnNFdmVudAorICAgIHsKKyAgICAg
ICAgRXZlbnQgZXZlbnQ7CisgICAgICAgIGV2ZW50LlR5cGUgPSBFdmVudDo6RVZFTlRfTU9VU0Vf
TU9WRUQ7CisgICAgICAgIGV2ZW50Lk1vdXNlTW92ZS5YID0gW25zRXZlbnQgbG9jYXRpb25Jbldp
bmRvd10ueDsKKyAgICAgICAgZXZlbnQuTW91c2VNb3ZlLlkgPSBbc2VsZiB0cmFuc2xhdGVNb3Vz
ZVk6IFtuc0V2ZW50IGxvY2F0aW9uSW5XaW5kb3ddLnldOworICAgICAgICBtV2luZG93LT5wdXNo
RXZlbnQoZXZlbnQpOworICAgIH0KKworICAgIC0gKHZvaWQpIG1vdXNlRW50ZXJlZDogKE5TRXZl
bnQqKSBuc0V2ZW50CisgICAgeworICAgICAgICBFdmVudCBldmVudDsKKyAgICAgICAgZXZlbnQu
VHlwZSA9IEV2ZW50OjpFVkVOVF9NT1VTRV9FTlRFUkVEOworICAgICAgICBtV2luZG93LT5wdXNo
RXZlbnQoZXZlbnQpOworICAgIH0KKworICAgIC0gKHZvaWQpIG1vdXNlRXhpdGVkOiAoTlNFdmVu
dCopIG5zRXZlbnQKKyAgICB7CisgICAgICAgIEV2ZW50IGV2ZW50OworICAgICAgICBldmVudC5U
eXBlID0gRXZlbnQ6OkVWRU5UX01PVVNFX0xFRlQ7CisgICAgICAgIG1XaW5kb3ctPnB1c2hFdmVu
dChldmVudCk7CisgICAgfQorCisgICAgLSAodm9pZClyaWdodE1vdXNlRG93bjooTlNFdmVudCAq
KWV2ZW50CisgICAgeworICAgICAgICBbc2VsZiBhZGRCdXR0b25FdmVudDogZXZlbnQKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHR5cGU6IEV2ZW50OjpFVkVOVF9NT1VTRV9CVVRUT05fUFJFU1NF
RAorICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogTU9VU0VCVVRUT05fUklHSFRdOworICAg
IH0KKworICAgIC0gKHZvaWQpIHJpZ2h0TW91c2VEcmFnZ2VkOiAoTlNFdmVudCopIGV2ZW50Cisg
ICAgeworICAgICAgICBbc2VsZiBtb3VzZU1vdmVkOiBldmVudF07CisgICAgfQorCisgICAgLSAo
dm9pZCkgcmlnaHRNb3VzZVVwOiAoTlNFdmVudCopZXZlbnQKKyAgICB7CisgICAgICAgIFtzZWxm
IGFkZEJ1dHRvbkV2ZW50OiBldmVudAorICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRXZl
bnQ6OkVWRU5UX01PVVNFX0JVVFRPTl9SRUxFQVNFRAorICAgICAgICAgICAgICAgICAgICAgIGJ1
dHRvbjogTU9VU0VCVVRUT05fUklHSFRdOworICAgIH0KKworICAgIC0gKHZvaWQpIG90aGVyTW91
c2VEb3duOiAoTlNFdmVudCopIGV2ZW50CisgICAgeworICAgICAgICBbc2VsZiBhZGRCdXR0b25F
dmVudDogZXZlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEV2ZW50OjpFVkVOVF9N
T1VTRV9CVVRUT05fUFJFU1NFRAorICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVHJhbnNs
YXRlTW91c2VCdXR0b24oW2V2ZW50IGJ1dHRvbk51bWJlcl0pXTsKKyAgICB9CisKKyAgICAtICh2
b2lkKSBvdGhlck1vdXNlRHJhZ2dlZDogKE5TRXZlbnQqKSBldmVudAorICAgIHsKKyAgICAgICAg
W3NlbGYgbW91c2VNb3ZlZDogZXZlbnRdOworICAgIH0KKworICAgIC0gKHZvaWQpIG90aGVyTW91
c2VVcDogKE5TRXZlbnQqKSBldmVudAorICAgIHsKKyAgICAgICAgW3NlbGYgYWRkQnV0dG9uRXZl
bnQ6IGV2ZW50CisgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBFdmVudDo6RVZFTlRfTU9V
U0VfQlVUVE9OX1JFTEVBU0VECisgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBUcmFuc2xh
dGVNb3VzZUJ1dHRvbihbZXZlbnQgYnV0dG9uTnVtYmVyXSldOworICAgIH0KKworICAgIC0gKHZv
aWQpIHNjcm9sbFdoZWVsOiAoTlNFdmVudCopIG5zRXZlbnQKKyAgICB7CisgICAgICAgIGlmIChz
dGF0aWNfY2FzdDxpbnQ+KFtuc0V2ZW50IGRlbHRhWV0pID09IDApCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEV2ZW50IGV2ZW50OworICAgICAg
ICBldmVudC5UeXBlID0gRXZlbnQ6OkVWRU5UX01PVVNFX1dIRUVMX01PVkVEOworICAgICAgICBl
dmVudC5Nb3VzZVdoZWVsLkRlbHRhID0gW25zRXZlbnQgZGVsdGFZXTsKKyAgICAgICAgbVdpbmRv
dy0+cHVzaEV2ZW50KGV2ZW50KTsKKyAgICB9CisKKyAgICAvLyBIYW5kbGUga2V5IGV2ZW50cyBm
cm9tIHRoZSBOU1Jlc3BvbmRlciBwcm90b2NvbAorICAgIC0gKHZvaWQpIGtleURvd246IChOU0V2
ZW50KikgbnNFdmVudAorICAgIHsKKyAgICAgICAgLy8gVE9ETyhjd2FsbGV6KSBhbHNvIHNlbmQg
dGV4dCBldmVudHMKKyAgICAgICAgRXZlbnQgZXZlbnQ7CisgICAgICAgIGV2ZW50LlR5cGUgPSBF
dmVudDo6RVZFTlRfS0VZX1BSRVNTRUQ7CisgICAgICAgIGV2ZW50LktleS5Db2RlID0gTlNDb2Rl
VG9LZXkoW25zRXZlbnQga2V5Q29kZV0pOworICAgICAgICBBZGROU0tleVN0YXRlVG9FdmVudCgm
ZXZlbnQsIFtuc0V2ZW50IG1vZGlmaWVyRmxhZ3NdKTsKKyAgICAgICAgbVdpbmRvdy0+cHVzaEV2
ZW50KGV2ZW50KTsKKyAgICB9CisKKyAgICAtICh2b2lkKSBrZXlVcDogKE5TRXZlbnQqKSBuc0V2
ZW50CisgICAgeworICAgICAgICBFdmVudCBldmVudDsKKyAgICAgICAgZXZlbnQuVHlwZSA9IEV2
ZW50OjpFVkVOVF9LRVlfUkVMRUFTRUQ7CisgICAgICAgIGV2ZW50LktleS5Db2RlID0gTlNDb2Rl
VG9LZXkoW25zRXZlbnQga2V5Q29kZV0pOworICAgICAgICBBZGROU0tleVN0YXRlVG9FdmVudCgm
ZXZlbnQsIFtuc0V2ZW50IG1vZGlmaWVyRmxhZ3NdKTsKKyAgICAgICAgbVdpbmRvdy0+cHVzaEV2
ZW50KGV2ZW50KTsKKyAgICB9CisKKyAgICAvLyBNb2RpZmllciBrZXlzIGRvIG5vdCB0cmlnZ2Vy
IGtleVVwL0Rvd24gZXZlbnRzIGJ1dCBvbmx5IGZsYWdzQ2hhbmdlZCBldmVudHMuCisgICAgLSAo
dm9pZCkgZmxhZ3NDaGFuZ2VkOiAoTlNFdmVudCopIG5zRXZlbnQKKyAgICB7CisgICAgICAgIEV2
ZW50IGV2ZW50OworCisgICAgICAgIC8vIEd1ZXNzIGlmIHRoZSBrZXkgaGFzIGJlZW4gcHJlc3Nl
ZCBvciByZWxlYXNlZCB3aXRoIHRoZSBjaGFuZ2Ugb2YgbW9kaWZpZXJzCisgICAgICAgIC8vIEl0
IGN1cnJlbnRseSBkb2Vzbid0IHdvcmsgd2hlbiBtb2RpZmllcnMgYXJlIHVuY2hhbmdlZCwgc3Vj
aCBhcyB3aGVuIHByZXNzaW5nCisgICAgICAgIC8vIGJvdGggc2hpZnQga2V5cy4gR0xGVyBoYXMg
YSBzb2x1dGlvbiBmb3IgdGhpcyBidXQgaXQgcmVxdWlyZXMgdHJhY2tpbmcgdGhlCisgICAgICAg
IC8vIHN0YXRlIG9mIHRoZSBrZXlzLiBJbXBsZW1lbnRpbmcgdGhpcyBpcyBzdGlsbCBUT0RPKGN3
YWxsZXopCisgICAgICAgIGludCBtb2RpZmllciA9IFtuc0V2ZW50IG1vZGlmaWVyRmxhZ3NdICYg
TlNEZXZpY2VJbmRlcGVuZGVudE1vZGlmaWVyRmxhZ3NNYXNrOworICAgICAgICBpZiAobW9kaWZp
ZXIgPCBtQ3VycmVudE1vZGlmaWVyKQorICAgICAgICB7CisgICAgICAgICAgICBldmVudC5UeXBl
ID0gRXZlbnQ6OkVWRU5UX0tFWV9SRUxFQVNFRDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGV2ZW50LlR5cGUgPSBFdmVudDo6RVZFTlRfS0VZX1BSRVNT
RUQ7CisgICAgICAgIH0KKyAgICAgICAgbUN1cnJlbnRNb2RpZmllciA9IG1vZGlmaWVyOworCisg
ICAgICAgIGV2ZW50LktleS5Db2RlID0gTlNDb2RlVG9LZXkoW25zRXZlbnQga2V5Q29kZV0pOwor
ICAgICAgICBBZGROU0tleVN0YXRlVG9FdmVudCgmZXZlbnQsIFtuc0V2ZW50IG1vZGlmaWVyRmxh
Z3NdKTsKKyAgICAgICAgbVdpbmRvdy0+cHVzaEV2ZW50KGV2ZW50KTsKKyAgICB9CitAZW5kCisK
K09TWFdpbmRvdzo6T1NYV2luZG93KCkKKyAgICA6IG1XaW5kb3cobmlsKSwKKyAgICAgIG1EZWxl
Z2F0ZShuaWwpLAorICAgICAgbVZpZXcobmlsKQoreworfQorCitPU1hXaW5kb3c6On5PU1hXaW5k
b3coKQoreworICAgIGRlc3Ryb3koKTsKK30KKworYm9vbCBPU1hXaW5kb3c6OmluaXRpYWxpemUo
Y29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCkKK3sK
KyAgICBpZiAoIUluaXRpYWxpemVBcHBLaXQoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBpbnQgc3R5bGVNYXNrID0gTlNUaXRsZWRXaW5kb3dN
YXNrIHwgTlNDbG9zYWJsZVdpbmRvd01hc2sgfCBOU1Jlc2l6YWJsZVdpbmRvd01hc2sgfAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOU01pbmlhdHVyaXphYmxlV2luZG93TWFzazsKKyAg
ICBtV2luZG93ID0gW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDogTlNNYWtl
UmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3R5bGVNYXNrOiBzdHlsZU1hc2sKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYmFja2luZzogTlNCYWNraW5nU3RvcmVCdWZmZXJlZAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVyOiBOT107CisK
KyAgICBpZiAobVdpbmRvdyA9PSBuaWwpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgbURlbGVnYXRlID0gW1tXaW5kb3dEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhX
aW5kb3c6IHRoaXNdOworICAgIGlmIChtRGVsZWdhdGUgPT0gbmlsKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBbbVdpbmRvdyBzZXREZWxlZ2F0ZTogc3RhdGljX2Nh
c3Q8aWQ+KG1EZWxlZ2F0ZSldOworCisgICAgbVZpZXcgPSBbW0NvbnRlbnRWaWV3IGFsbG9jXSBp
bml0V2l0aFdpbmRvdzogdGhpc107CisgICAgaWYgKG1WaWV3ID09IG5pbCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgW21WaWV3IHNldFdhbnRzTGF5ZXI6WUVTXTsK
KworICAgIFttV2luZG93IHNldENvbnRlbnRWaWV3OiBtVmlld107CisgICAgW21XaW5kb3cgc2V0
VGl0bGU6IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzogbmFtZS5jX3N0cigpXV07Cisg
ICAgW21XaW5kb3cgc2V0QWNjZXB0c01vdXNlTW92ZWRFdmVudHM6IFlFU107CisgICAgW21XaW5k
b3cgY2VudGVyXTsKKworICAgIFtOU0FwcCBhY3RpdmF0ZUlnbm9yaW5nT3RoZXJBcHBzOiBZRVNd
OworCisgICAgbVggPSAwOworICAgIG1ZID0gMDsKKyAgICBtV2lkdGggPSB3aWR0aDsKKyAgICBt
SGVpZ2h0ID0gaGVpZ2h0OworCisgICAgZ0FsbFdpbmRvd3MuaW5zZXJ0KHRoaXMpOworICAgIHJl
dHVybiB0cnVlOworfQorCit2b2lkIE9TWFdpbmRvdzo6ZGVzdHJveSgpCit7CisgICAgZ0FsbFdp
bmRvd3MuZXJhc2UodGhpcyk7CisKKyAgICBbbVZpZXcgcmVsZWFzZV07CisgICAgbVZpZXcgPSBu
aWw7CisgICAgW21EZWxlZ2F0ZSBvbk9TWFdpbmRvd0RlbGV0ZWRdOworICAgIFttRGVsZWdhdGUg
cmVsZWFzZV07CisgICAgbURlbGVnYXRlID0gbmlsOworICAgIFttV2luZG93IHJlbGVhc2VdOwor
ICAgIG1XaW5kb3cgPSBuaWw7Cit9CisKK0VHTE5hdGl2ZVdpbmRvd1R5cGUgT1NYV2luZG93Ojpn
ZXROYXRpdmVXaW5kb3coKSBjb25zdAoreworICAgIHJldHVybiBbbVZpZXcgbGF5ZXJdOworfQor
CitFR0xOYXRpdmVEaXNwbGF5VHlwZSBPU1hXaW5kb3c6OmdldE5hdGl2ZURpc3BsYXkoKSBjb25z
dAoreworICAgIC8vIFRPRE8oY3dhbGxleik6IGltcGxlbWVudCBpdCBvbmNlIHdlIGhhdmUgZGVm
aW5lZCB3aGF0IEVHTE5hdGl2ZURpc3BsYXlUeXBlIGlzCisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEVHTE5hdGl2ZURpc3BsYXlUeXBlPigwKTsKK30KKwordm9pZCBPU1hXaW5kb3c6Om1lc3NhZ2VM
b29wKCkKK3sKKyAgICBAYXV0b3JlbGVhc2Vwb29sCisgICAgeworICAgICAgICB3aGlsZSAodHJ1
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgTlNFdmVudCogZXZlbnQgPSBbTlNBcHAgbmV4dEV2
ZW50TWF0Y2hpbmdNYXNrOiBOU0FueUV2ZW50TWFzaworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW50aWxEYXRlOiBbTlNEYXRlIGRpc3RhbnRQYXN0XQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5Nb2Rl
OiBOU0RlZmF1bHRSdW5Mb29wTW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXF1ZXVlOiBZRVNdOworICAgICAgICAgICAgaWYgKGV2ZW50ID09
IG5pbCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIFtOU0FwcCBzZW5kRXZlbnQ6IGV2ZW50XTsKKyAgICAgICAgfQorICAg
IH0KK30KKwordm9pZCBPU1hXaW5kb3c6OnNldE1vdXNlUG9zaXRpb24oaW50IHgsIGludCB5KQor
eworICAgIHkgPSBbbVdpbmRvdyBmcmFtZV0uc2l6ZS5oZWlnaHQgLSB5IC0xOworICAgIE5TUG9p
bnQgc2NyZWVuc3BhY2U7CisKKyAgICAjaWYgTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
PCBNQUNfT1NfWF9WRVJTSU9OXzEwXzcKKyAgICAgICAgc2NyZWVuc3BhY2UgPSBbbVdpbmRvdyBj
b252ZXJ0QmFzZVRvU2NyZWVuOiBOU01ha2VQb2ludCh4LCB5KV07CisgICAgI2Vsc2UKKyAgICAg
ICAgc2NyZWVuc3BhY2UgPSBbbVdpbmRvdyBjb252ZXJ0UmVjdFRvU2NyZWVuOiBOU01ha2VSZWN0
KHgsIHksIDAsIDApXS5vcmlnaW47CisgICAgI2VuZGlmCisgICAgQ0dXYXJwTW91c2VDdXJzb3JQ
b3NpdGlvbihDR1BvaW50TWFrZShzY3JlZW5zcGFjZS54LCBZQ29vcmRUb0Zyb21DRyhzY3JlZW5z
cGFjZS55KSkpOworfQorCitib29sIE9TWFdpbmRvdzo6c2V0UG9zaXRpb24oaW50IHgsIGludCB5
KQoreworICAgIC8vIEdpdmVuIENHIGFuZCBOUydzIGNvb3JkaW5hdGUgc3lzdGVtLCB0aGUgIlki
IHBvc2l0aW9uIG9mIGEgd2luZG93IGlzIHRoZSBZIGNvb3JkaW5hdGUKKyAgICAvLyBvZiB0aGUg
Ym90dG9tIG9mIHRoZSB3aW5kb3cuCisgICAgaW50IG5ld0JvdHRvbSA9IFttV2luZG93IGZyYW1l
XS5zaXplLmhlaWdodCArIHk7CisgICAgTlNSZWN0IGVtcHR5UmVjdCA9IE5TTWFrZVJlY3QoeCwg
WUNvb3JkVG9Gcm9tQ0cobmV3Qm90dG9tKSwgMCwgMCk7CisgICAgW21XaW5kb3cgc2V0RnJhbWVP
cmlnaW46IFttV2luZG93IGZyYW1lUmVjdEZvckNvbnRlbnRSZWN0OiBlbXB0eVJlY3RdLm9yaWdp
bl07CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgT1NYV2luZG93OjpyZXNpemUoaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIFttV2luZG93IHNldENvbnRlbnRTaXplOiBOU01ha2VT
aXplKHdpZHRoLCBoZWlnaHQpXTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBPU1hXaW5k
b3c6OnNldFZpc2libGUoYm9vbCBpc1Zpc2libGUpCit7CisgICAgaWYgKGlzVmlzaWJsZSkKKyAg
ICB7CisgICAgICAgIFttV2luZG93IG1ha2VLZXlBbmRPcmRlckZyb250OiBuaWxdOworICAgIH0K
KyAgICBlbHNlCisgICAgeworICAgICAgICBbbVdpbmRvdyBvcmRlck91dDogbmlsXTsKKyAgICB9
Cit9CisKK3ZvaWQgT1NYV2luZG93OjpzaWduYWxUZXN0RXZlbnQoKQoreworICAgIEBhdXRvcmVs
ZWFzZXBvb2wKKyAgICB7CisgICAgICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TRXZlbnQgb3RoZXJF
dmVudFdpdGhUeXBlOiBOU0FwcGxpY2F0aW9uRGVmaW5lZAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjogTlNNYWtlUG9pbnQoMCwgMCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6IDAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IDAuMAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd051bWJlcjogW21XaW5k
b3cgd2luZG93TnVtYmVyXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dDogbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdWJ0eXBlOiAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGExOiAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGEyOiAwXTsKKyAgICAgICAgW05TQXBwIHBvc3RFdmVudDogZXZlbnQgYXRT
dGFydDogWUVTXTsKKyAgICB9Cit9CisKK05TV2luZG93KiBPU1hXaW5kb3c6OmdldE5TV2luZG93
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVdpbmRvdzsKK30KKworT1NXaW5kb3cgKkNyZWF0ZU9T
V2luZG93KCkKK3sKKyAgICByZXR1cm4gbmV3IE9TWFdpbmRvdzsKK30KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3V0aWwvb3N4L09TWF9zeXN0ZW1fdXRpbHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvb3N4L09TWF9zeXN0ZW1fdXRpbHMuY3Bw
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvb3N4L09TWF9z
eXN0ZW1fdXRpbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjcgQEAKKy8vCisvLyBD
b3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisvLworCisvLyBPU1hfc3lzdGVtX3V0aWxzLmNwcDogSW1wbGVtZW50YXRpb24gb2YgT1Mtc3Bl
Y2lmaWMgZnVuY3Rpb25zIGZvciBPU1gKKworI2luY2x1ZGUgInN5c3RlbV91dGlscy5oIgorCisj
aW5jbHVkZSA8Y3N0ZGxpYj4KKyNpbmNsdWRlIDxtYWNoLW8vZHlsZC5oPgorI2luY2x1ZGUgPHZl
Y3Rvcj4KKworbmFtZXNwYWNlIGFuZ2xlCit7CisKK25hbWVzcGFjZQoreworCitzdGQ6OnN0cmlu
ZyBHZXRFeGVjdXRhYmxlUGF0aEltcGwoKQoreworICAgIHN0ZDo6c3RyaW5nIHJlc3VsdDsKKwor
ICAgIHVpbnQzMl90IHNpemUgPSAwOworICAgIF9OU0dldEV4ZWN1dGFibGVQYXRoKG51bGxwdHIs
ICZzaXplKTsKKworICAgIHN0ZDo6dmVjdG9yPGNoYXI+IGJ1ZmZlcjsKKyAgICBidWZmZXIucmVz
aXplKHNpemUgKyAxKTsKKworICAgIF9OU0dldEV4ZWN1dGFibGVQYXRoKGJ1ZmZlci5kYXRhKCks
ICZzaXplKTsKKyAgICBidWZmZXJbc2l6ZV0gPSAnXDAnOworCisgICAgaWYgKCFzdHJyY2hyKGJ1
ZmZlci5kYXRhKCksICcvJykpCisgICAgeworICAgICAgICByZXR1cm4gIiI7CisgICAgfQorICAg
IHJldHVybiBidWZmZXIuZGF0YSgpOworfQorCitzdGQ6OnN0cmluZyBHZXRFeGVjdXRhYmxlRGly
ZWN0b3J5SW1wbCgpCit7CisgICAgc3RkOjpzdHJpbmcgZXhlY3V0YWJsZVBhdGggPSBHZXRFeGVj
dXRhYmxlUGF0aCgpOworICAgIHNpemVfdCBsYXN0UGF0aFNlcExvYyA9IGV4ZWN1dGFibGVQYXRo
LmZpbmRfbGFzdF9vZigiLyIpOworICAgIHJldHVybiAobGFzdFBhdGhTZXBMb2MgIT0gc3RkOjpz
dHJpbmc6Om5wb3MpID8gZXhlY3V0YWJsZVBhdGguc3Vic3RyKDAsIGxhc3RQYXRoU2VwTG9jKSA6
ICIiOworfQorCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK2NvbnN0IGNoYXIgKkdldEV4
ZWN1dGFibGVQYXRoKCkKK3sKKyAgICBjb25zdCBzdGF0aWMgc3RkOjpzdHJpbmcgJmV4ZVBhdGgg
PSBHZXRFeGVjdXRhYmxlUGF0aEltcGwoKTsKKyAgICByZXR1cm4gZXhlUGF0aC5jX3N0cigpOwor
fQorCitjb25zdCBjaGFyICpHZXRFeGVjdXRhYmxlRGlyZWN0b3J5KCkKK3sKKyAgICBjb25zdCBz
dGF0aWMgc3RkOjpzdHJpbmcgJmV4ZURpciA9IEdldEV4ZWN1dGFibGVEaXJlY3RvcnlJbXBsKCk7
CisgICAgcmV0dXJuIGV4ZURpci5jX3N0cigpOworfQorCitjb25zdCBjaGFyICpHZXRTaGFyZWRM
aWJyYXJ5RXh0ZW5zaW9uKCkKK3sKKyAgICByZXR1cm4gImR5bGliIjsKK30KKworfSAvLyBuYW1l
c3BhY2UgYW5nbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvb3pvbmUvT3pv
bmVQaXhtYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwv
b3pvbmUvT3pvbmVQaXhtYXAuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3V0aWwvb3pvbmUvT3pvbmVQaXhtYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTIgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAiT1NQaXhtYXAuaCIKKworT1NQaXht
YXAgKkNyZWF0ZU9TUGl4bWFwKCkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvb3pvbmUvT3pvbmVXaW5kb3cuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvb3pvbmUvT3pvbmVXaW5kb3cuY3Bw
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvb3pvbmUvT3pv
bmVXaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODIgQEAKKy8vCisvLyBDb3B5
cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworCisvLyBPem9uZVdpbmRvdy5jcHA6IEltcGxlbWVudGF0aW9uIG9mIE9TV2luZG93IGZvciBP
em9uZQorCisjaW5jbHVkZSAib3pvbmUvT3pvbmVXaW5kb3cuaCIKKworaW50IE96b25lV2luZG93
OjpzTGFzdERlcHRoID0gMDsKKworT3pvbmVXaW5kb3c6Ok96b25lV2luZG93KCkKK3sKK30KKwor
T3pvbmVXaW5kb3c6On5Pem9uZVdpbmRvdygpCit7Cit9CisKK2Jvb2wgT3pvbmVXaW5kb3c6Omlu
aXRpYWxpemUoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhl
aWdodCkKK3sKKyAgICBtTmF0aXZlLnggPSBtWCA9IDA7CisgICAgbU5hdGl2ZS55ID0gbVkgPSAw
OworICAgIG1OYXRpdmUud2lkdGggPSBtV2lkdGggPSB3aWR0aDsKKyAgICBtTmF0aXZlLmhlaWdo
dCA9IG1IZWlnaHQgPSBoZWlnaHQ7CisgICAgbU5hdGl2ZS5ib3JkZXJXaWR0aCAgPSA1OworICAg
IG1OYXRpdmUuYm9yZGVySGVpZ2h0ID0gNTsKKyAgICBtTmF0aXZlLnZpc2libGUgICAgICA9IDA7
CisgICAgbU5hdGl2ZS5kZXB0aCAgICAgICAgPSBzTGFzdERlcHRoKys7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3ZvaWQgT3pvbmVXaW5kb3c6OmRlc3Ryb3koKQoreworfQorCitFR0xOYXRpdmVX
aW5kb3dUeXBlIE96b25lV2luZG93OjpnZXROYXRpdmVXaW5kb3coKSBjb25zdAoreworICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PEVHTE5hdGl2ZVdpbmRvd1R5cGU+KCZtTmF0aXZlKTsKK30K
KworRUdMTmF0aXZlRGlzcGxheVR5cGUgT3pvbmVXaW5kb3c6OmdldE5hdGl2ZURpc3BsYXkoKSBj
b25zdAoreworICAgIHJldHVybiBFR0xfREVGQVVMVF9ESVNQTEFZOworfQorCit2b2lkIE96b25l
V2luZG93OjptZXNzYWdlTG9vcCgpCit7Cit9CisKK3ZvaWQgT3pvbmVXaW5kb3c6OnNldE1vdXNl
UG9zaXRpb24oaW50IHgsIGludCB5KQoreworfQorCitib29sIE96b25lV2luZG93OjpzZXRQb3Np
dGlvbihpbnQgeCwgaW50IHkpCit7CisgICAgbU5hdGl2ZS54ID0gbVggPSB4OworICAgIG1OYXRp
dmUueSA9IG1ZID0geTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBPem9uZVdpbmRvdzo6
cmVzaXplKGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICBtTmF0aXZlLndpZHRoID0gbVdp
ZHRoID0gd2lkdGg7CisgICAgbU5hdGl2ZS5oZWlnaHQgPSBtSGVpZ2h0ID0gaGVpZ2h0OworICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIE96b25lV2luZG93OjpzZXRWaXNpYmxlKGJvb2wgaXNW
aXNpYmxlKQoreworICAgIG1OYXRpdmUudmlzaWJsZSA9IGlzVmlzaWJsZTsKK30KKwordm9pZCBP
em9uZVdpbmRvdzo6c2lnbmFsVGVzdEV2ZW50KCkKK3sKK30KKworT1NXaW5kb3cgKkNyZWF0ZU9T
V2luZG93KCkKK3sKKyAgICByZXR1cm4gbmV3IE96b25lV2luZG93KCk7Cit9CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL296b25lL096b25lV2luZG93LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9vem9uZS9Pem9uZVdpbmRvdy5oCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvb3pvbmUvT3pvbmVXaW5k
b3cuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU0IEBACisvLworLy8gQ29weXJpZ2h0IChj
KSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8g
T3pvbmVXaW5kb3cuaDogRGVmaW5pdGlvbiBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgT1NXaW5k
b3cgZm9yIE96b25lCisKKyNpZm5kZWYgVVRJTF9PWk9ORV9XSU5ET1dfSAorI2RlZmluZSBVVElM
X09aT05FX1dJTkRPV19ICisKKyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJPU1dpbmRv
dy5oIgorCitjbGFzcyBPem9uZVdpbmRvdyA6IHB1YmxpYyBPU1dpbmRvdworeworICBwdWJsaWM6
CisgICAgT3pvbmVXaW5kb3coKTsKKyAgICB+T3pvbmVXaW5kb3coKTsKKworICAgIGJvb2wgaW5p
dGlhbGl6ZShjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSwgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVp
Z2h0KSBvdmVycmlkZTsKKyAgICB2b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsKKworICAgIEVHTE5h
dGl2ZVdpbmRvd1R5cGUgZ2V0TmF0aXZlV2luZG93KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRUdM
TmF0aXZlRGlzcGxheVR5cGUgZ2V0TmF0aXZlRGlzcGxheSgpIGNvbnN0IG92ZXJyaWRlOworCisg
ICAgdm9pZCBtZXNzYWdlTG9vcCgpIG92ZXJyaWRlOworCisgICAgdm9pZCBzZXRNb3VzZVBvc2l0
aW9uKGludCB4LCBpbnQgeSkgb3ZlcnJpZGU7CisgICAgYm9vbCBzZXRQb3NpdGlvbihpbnQgeCwg
aW50IHkpIG92ZXJyaWRlOworICAgIGJvb2wgcmVzaXplKGludCB3aWR0aCwgaW50IGhlaWdodCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wgaXNWaXNpYmxlKSBvdmVycmlkZTsK
KworICAgIHZvaWQgc2lnbmFsVGVzdEV2ZW50KCkgb3ZlcnJpZGU7CisKKyAgcHJpdmF0ZToKKyAg
ICBzdHJ1Y3QgTmF0aXZlCisgICAgeworICAgICAgICBpbnQzMl90IHg7CisgICAgICAgIGludDMy
X3QgeTsKKyAgICAgICAgaW50MzJfdCB3aWR0aDsKKyAgICAgICAgaW50MzJfdCBoZWlnaHQ7Cisg
ICAgICAgIGludDMyX3QgYm9yZGVyV2lkdGg7CisgICAgICAgIGludDMyX3QgYm9yZGVySGVpZ2h0
OworICAgICAgICBpbnQzMl90IHZpc2libGU7CisgICAgICAgIGludDMyX3QgZGVwdGg7CisgICAg
fTsKKworICAgIE5hdGl2ZSBtTmF0aXZlOworICAgIHN0YXRpYyBpbnQgc0xhc3REZXB0aDsKK307
CisKKyNlbmRpZiAgLy8gVVRJTF9PWk9ORV9XSU5ET1dfSApJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvdXRpbC9wYXRoX3V0aWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvdXRpbC9wYXRoX3V0aWxzLmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3V0aWwvcGF0aF91dGlscy5oCShub25leGlzdGVudCkKQEAgLTEsMTUg
KzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpZm5kZWYgU0FNUExFX1VUSUxfUEFUSF9VVElMU19I
Ci0jZGVmaW5lIFNBTVBMRV9VVElMX1BBVEhfVVRJTFNfSAotCi0jaW5jbHVkZSA8c3RyaW5nPgot
Ci1zdGQ6OnN0cmluZyBHZXRFeGVjdXRhYmxlUGF0aCgpOwotc3RkOjpzdHJpbmcgR2V0RXhlY3V0
YWJsZURpcmVjdG9yeSgpOwotCi0jZW5kaWYgLy8gU0FNUExFX1VUSUxfUEFUSF9VVElMU19ICklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3Bvc2l4L1Bvc2l4X3N5c3RlbV91dGls
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9wb3NpeC9Q
b3NpeF9zeXN0ZW1fdXRpbHMuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3V0aWwvcG9zaXgvUG9zaXhfc3lzdGVtX3V0aWxzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDkxIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gUG9zaXhfc3lzdGVtX3V0aWxzLmNw
cDogSW1wbGVtZW50YXRpb24gb2YgT1Mtc3BlY2lmaWMgZnVuY3Rpb25zIGZvciBQb3NpeCBzeXN0
ZW1zCisKKyNpbmNsdWRlICJzeXN0ZW1fdXRpbHMuaCIKKworI2luY2x1ZGUgPHN5cy9yZXNvdXJj
ZS5oPgorI2luY2x1ZGUgPGRsZmNuLmg+CisjaW5jbHVkZSA8c2NoZWQuaD4KKyNpbmNsdWRlIDx0
aW1lLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKK25hbWVzcGFjZSBhbmdsZQoreworCit2b2lk
IFNsZWVwKHVuc2lnbmVkIGludCBtaWxsaXNlY29uZHMpCit7CisgICAgLy8gT24gV2luZG93cyBT
bGVlcCgwKSB5aWVsZHMgd2hpbGUgaXQgaXNuJ3QgZ3VhcmFudGVlZCBieSBQb3NpeCdzIHNsZWVw
CisgICAgLy8gc28gd2UgcmVwbGljYXRlIFdpbmRvd3MnIGJlaGF2aW9yIHdpdGggYW4gZXhwbGlj
aXQgeWllbGQuCisgICAgaWYgKG1pbGxpc2Vjb25kcyA9PSAwKQorICAgIHsKKyAgICAgICAgc2No
ZWRfeWllbGQoKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgdGltZXNwZWMgc2xl
ZXBUaW1lID0KKyAgICAgICAgeworICAgICAgICAgICAgLnR2X3NlYyA9IG1pbGxpc2Vjb25kcyAv
IDEwMDAsCisgICAgICAgICAgICAudHZfbnNlYyA9IChtaWxsaXNlY29uZHMgJSAxMDAwKSAqIDEw
MDAwMDAsCisgICAgICAgIH07CisKKyAgICAgICAgbmFub3NsZWVwKCZzbGVlcFRpbWUsIG51bGxw
dHIpOworICAgIH0KK30KKwordm9pZCBTZXRMb3dQcmlvcml0eVByb2Nlc3MoKQoreworICAgIHNl
dHByaW9yaXR5KFBSSU9fUFJPQ0VTUywgZ2V0cGlkKCksIDEwKTsKK30KKwordm9pZCBXcml0ZURl
YnVnTWVzc2FnZShjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKK3sKKyAgICAvLyBUT0RPKGptYWRp
bGwpOiBJbXBsZW1lbnQgdGhpcworfQorCitjbGFzcyBQb3NpeExpYnJhcnkgOiBwdWJsaWMgTGli
cmFyeQoreworICBwdWJsaWM6CisgICAgUG9zaXhMaWJyYXJ5KGNvbnN0IHN0ZDo6c3RyaW5nICZs
aWJyYXJ5TmFtZSk7CisgICAgflBvc2l4TGlicmFyeSgpIG92ZXJyaWRlOworCisgICAgdm9pZCAq
Z2V0U3ltYm9sKGNvbnN0IHN0ZDo6c3RyaW5nICZzeW1ib2xOYW1lKSBvdmVycmlkZTsKKworICBw
cml2YXRlOgorICAgIHZvaWQgKm1Nb2R1bGU7Cit9OworCitQb3NpeExpYnJhcnk6OlBvc2l4TGli
cmFyeShjb25zdCBzdGQ6OnN0cmluZyAmbGlicmFyeU5hbWUpIDogbU1vZHVsZShudWxscHRyKQor
eworICAgIGNvbnN0IGF1dG8gJmZ1bGxOYW1lID0gbGlicmFyeU5hbWUgKyAiLiIgKyBHZXRTaGFy
ZWRMaWJyYXJ5RXh0ZW5zaW9uKCk7CisgICAgbU1vZHVsZSAgICAgICAgICAgICAgPSBkbG9wZW4o
ZnVsbE5hbWUuY19zdHIoKSwgUlRMRF9OT1cpOworfQorCitQb3NpeExpYnJhcnk6On5Qb3NpeExp
YnJhcnkoKQoreworICAgIGlmIChtTW9kdWxlKQorICAgIHsKKyAgICAgICAgZGxjbG9zZShtTW9k
dWxlKTsKKyAgICB9Cit9CisKK3ZvaWQgKlBvc2l4TGlicmFyeTo6Z2V0U3ltYm9sKGNvbnN0IHN0
ZDo6c3RyaW5nICZzeW1ib2xOYW1lKQoreworICAgIGlmICghbU1vZHVsZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiBkbHN5bShtTW9kdWxlLCBz
eW1ib2xOYW1lLmNfc3RyKCkpOworfQorCitMaWJyYXJ5ICpsb2FkTGlicmFyeShjb25zdCBzdGQ6
OnN0cmluZyAmbGlicmFyeU5hbWUpCit7CisgICAgcmV0dXJuIG5ldyBQb3NpeExpYnJhcnkobGli
cmFyeU5hbWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBhbmdsZQpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvdXRpbC9yYW5kb21fdXRpbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS91dGlsL3JhbmRvbV91dGlscy5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3JhbmRvbV91dGlscy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMywxMCArMTMsMTIgQEAKIC8vIFRPRE8oam1hZGlsbCk6IFJld29yayB0aGlzIGlmIENo
cm9taXVtIGRlY2lkZXMgdG8gYmFuIDxyYW5kb20+CiAjaW5jbHVkZSA8cmFuZG9tPgogCisjaW5j
bHVkZSA8ZXhwb3J0Lmg+CisKIG5hbWVzcGFjZSBhbmdsZQogewogCi1jbGFzcyBSTkcKK2NsYXNz
IEFOR0xFX0VYUE9SVCBSTkcKIHsKICAgcHVibGljOgogICAgIC8vIFNlZWQgZnJvbSBjbG9jawpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9zaGFkZXJfdXRpbHMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvc2hhZGVyX3V0aWxzLmNwcAko
cmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9zaGFkZXJf
dXRpbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw2ICs3Nyw0MCBAQAogICAgIHJldHVybiBD
b21waWxlU2hhZGVyKHR5cGUsIHNvdXJjZSk7CiB9CiAKK0dMdWludCBDaGVja0xpbmtTdGF0dXNB
bmRSZXR1cm5Qcm9ncmFtKEdMdWludCBwcm9ncmFtLCBib29sIG91dHB1dEVycm9yTWVzc2FnZXMp
Cit7CisgICAgR0xpbnQgbGlua1N0YXR1czsKKyAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBH
TF9MSU5LX1NUQVRVUywgJmxpbmtTdGF0dXMpOworICAgIGlmIChsaW5rU3RhdHVzID09IDApCisg
ICAgeworICAgICAgICBpZiAob3V0cHV0RXJyb3JNZXNzYWdlcykKKyAgICAgICAgeworICAgICAg
ICAgICAgR0xpbnQgaW5mb0xvZ0xlbmd0aDsKKyAgICAgICAgICAgIGdsR2V0UHJvZ3JhbWl2KHBy
b2dyYW0sIEdMX0lORk9fTE9HX0xFTkdUSCwgJmluZm9Mb2dMZW5ndGgpOworCisgICAgICAgICAg
ICAvLyBJbmZvIGxvZyBsZW5ndGggaW5jbHVkZXMgdGhlIG51bGwgdGVybWluYXRvciwgc28gMSBt
ZWFucyB0aGF0IHRoZSBpbmZvIGxvZyBpcyBhbgorICAgICAgICAgICAgLy8gZW1wdHkgc3RyaW5n
LgorICAgICAgICAgICAgaWYgKGluZm9Mb2dMZW5ndGggPiAxKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPEdMY2hhcj4gaW5mb0xvZyhpbmZvTG9nTGVuZ3RoKTsK
KyAgICAgICAgICAgICAgICBnbEdldFByb2dyYW1JbmZvTG9nKHByb2dyYW0sIHN0YXRpY19jYXN0
PEdMc2l6ZWk+KGluZm9Mb2cuc2l6ZSgpKSwgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZpbmZvTG9nWzBdKTsKKworICAgICAgICAgICAgICAgIHN0ZDo6Y2Vy
ciA8PCAicHJvZ3JhbSBsaW5rIGZhaWxlZDogIiA8PCAmaW5mb0xvZ1swXTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzdGQ6
OmNlcnIgPDwgInByb2dyYW0gbGluayBmYWlsZWQuIDxFbXB0eSBsb2cgbWVzc2FnZT4iOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKHByb2dyYW0p
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4gcHJvZ3JhbTsKK30KKwog
R0x1aW50IENvbXBpbGVQcm9ncmFtV2l0aFRyYW5zZm9ybUZlZWRiYWNrKAogICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZ2c1NvdXJjZSwKICAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnNTb3VyY2UsCkBA
IC0xMTcsMzMgKzE1MSw3IEBACiAKICAgICBnbExpbmtQcm9ncmFtKHByb2dyYW0pOwogCi0gICAg
R0xpbnQgbGlua1N0YXR1czsKLSAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9MSU5LX1NU
QVRVUywgJmxpbmtTdGF0dXMpOwotCi0gICAgaWYgKGxpbmtTdGF0dXMgPT0gMCkKLSAgICB7Ci0g
ICAgICAgIEdMaW50IGluZm9Mb2dMZW5ndGg7Ci0gICAgICAgIGdsR2V0UHJvZ3JhbWl2KHByb2dy
YW0sIEdMX0lORk9fTE9HX0xFTkdUSCwgJmluZm9Mb2dMZW5ndGgpOwotCi0gICAgICAgIC8vIElu
Zm8gbG9nIGxlbmd0aCBpbmNsdWRlcyB0aGUgbnVsbCB0ZXJtaW5hdG9yLCBzbyAxIG1lYW5zIHRo
YXQgdGhlIGluZm8gbG9nIGlzIGFuIGVtcHR5Ci0gICAgICAgIC8vIHN0cmluZy4KLSAgICAgICAg
aWYgKGluZm9Mb2dMZW5ndGggPiAxKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OnZlY3Rv
cjxHTGNoYXI+IGluZm9Mb2coaW5mb0xvZ0xlbmd0aCk7Ci0gICAgICAgICAgICBnbEdldFByb2dy
YW1JbmZvTG9nKHByb2dyYW0sIHN0YXRpY19jYXN0PEdMc2l6ZWk+KGluZm9Mb2cuc2l6ZSgpKSwg
bnVsbHB0ciwgJmluZm9Mb2dbMF0pOwotCi0gICAgICAgICAgICBzdGQ6OmNlcnIgPDwgInByb2dy
YW0gbGluayBmYWlsZWQ6ICIgPDwgJmluZm9Mb2dbMF07Ci0gICAgICAgIH0KLSAgICAgICAgZWxz
ZQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OmNlcnIgPDwgInByb2dyYW0gbGluayBmYWls
ZWQuIDxFbXB0eSBsb2cgbWVzc2FnZT4iOwotICAgICAgICB9Ci0KLSAgICAgICAgZ2xEZWxldGVQ
cm9ncmFtKHByb2dyYW0pOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICByZXR1cm4g
cHJvZ3JhbTsKKyAgICByZXR1cm4gQ2hlY2tMaW5rU3RhdHVzQW5kUmV0dXJuUHJvZ3JhbShwcm9n
cmFtLCB0cnVlKTsKIH0KIAogR0x1aW50IENvbXBpbGVQcm9ncmFtKGNvbnN0IHN0ZDo6c3RyaW5n
ICZ2c1NvdXJjZSwgY29uc3Qgc3RkOjpzdHJpbmcgJmZzU291cmNlKQpAQCAtMTYzLDMgKzE3MSwy
MSBAQAogCiAgICAgcmV0dXJuIENvbXBpbGVQcm9ncmFtKHZzU291cmNlLCBmc1NvdXJjZSk7CiB9
CisKK0dMdWludCBDb21waWxlQ29tcHV0ZVByb2dyYW0oY29uc3Qgc3RkOjpzdHJpbmcgJmNzU291
cmNlLCBib29sIG91dHB1dEVycm9yTWVzc2FnZXMpCit7CisgICAgR0x1aW50IHByb2dyYW0gPSBn
bENyZWF0ZVByb2dyYW0oKTsKKworICAgIEdMdWludCBjcyA9IENvbXBpbGVTaGFkZXIoR0xfQ09N
UFVURV9TSEFERVIsIGNzU291cmNlKTsKKyAgICBpZiAoY3MgPT0gMCkKKyAgICB7CisgICAgICAg
IGdsRGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisg
ICAgZ2xBdHRhY2hTaGFkZXIocHJvZ3JhbSwgY3MpOworCisgICAgZ2xMaW5rUHJvZ3JhbShwcm9n
cmFtKTsKKworICAgIHJldHVybiBDaGVja0xpbmtTdGF0dXNBbmRSZXR1cm5Qcm9ncmFtKHByb2dy
YW0sIG91dHB1dEVycm9yTWVzc2FnZXMpOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvdXRpbC9zaGFkZXJfdXRpbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS91dGlsL3NoYWRlcl91dGlscy5oCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS91dGlsL3NoYWRlcl91dGlscy5oCSh3b3JraW5nIGNvcHkpCkBAIC03LDYg
KzcsOCBAQAogI2lmbmRlZiBTQU1QTEVfVVRJTF9TSEFERVJfVVRJTFNfSAogI2RlZmluZSBTQU1Q
TEVfVVRJTF9TSEFERVJfVVRJTFNfSAogCisjaW5jbHVkZSA8ZXhwb3J0Lmg+CisjaW5jbHVkZSA8
R0xFUzMvZ2wzMS5oPgogI2luY2x1ZGUgPEdMRVMzL2dsMy5oPgogI2luY2x1ZGUgPEdMRVMyL2ds
Mi5oPgogI2luY2x1ZGUgPEdMRVMyL2dsMmV4dC5oPgpAQCAtMTgsMTUgKzIwLDE3IEBACiAKICNk
ZWZpbmUgU0hBREVSX1NPVVJDRSguLi4pICNfX1ZBX0FSR1NfXwogCi1HTHVpbnQgQ29tcGlsZVNo
YWRlcihHTGVudW0gdHlwZSwgY29uc3Qgc3RkOjpzdHJpbmcgJnNvdXJjZSk7Ci1HTHVpbnQgQ29t
cGlsZVNoYWRlckZyb21GaWxlKEdMZW51bSB0eXBlLCBjb25zdCBzdGQ6OnN0cmluZyAmc291cmNl
UGF0aCk7CitBTkdMRV9FWFBPUlQgR0x1aW50IENvbXBpbGVTaGFkZXIoR0xlbnVtIHR5cGUsIGNv
bnN0IHN0ZDo6c3RyaW5nICZzb3VyY2UpOworQU5HTEVfRVhQT1JUIEdMdWludCBDb21waWxlU2hh
ZGVyRnJvbUZpbGUoR0xlbnVtIHR5cGUsIGNvbnN0IHN0ZDo6c3RyaW5nICZzb3VyY2VQYXRoKTsK
IAotR0x1aW50IENvbXBpbGVQcm9ncmFtV2l0aFRyYW5zZm9ybUZlZWRiYWNrKAotICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZ2c1NvdXJjZSwKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnNTb3VyY2Us
Ci0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+ICZ0cmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmdzLAotICAgIEdMZW51bSBidWZmZXJNb2RlKTsKLUdMdWludCBDb21waWxlUHJvZ3JhbShj
b25zdCBzdGQ6OnN0cmluZyAmdnNTb3VyY2UsIGNvbnN0IHN0ZDo6c3RyaW5nICZmc1NvdXJjZSk7
Ci1HTHVpbnQgQ29tcGlsZVByb2dyYW1Gcm9tRmlsZXMoY29uc3Qgc3RkOjpzdHJpbmcgJnZzUGF0
aCwgY29uc3Qgc3RkOjpzdHJpbmcgJmZzUGF0aCk7CitBTkdMRV9FWFBPUlQgR0x1aW50CitDb21w
aWxlUHJvZ3JhbVdpdGhUcmFuc2Zvcm1GZWVkYmFjayhjb25zdCBzdGQ6OnN0cmluZyAmdnNTb3Vy
Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyAmZnNTb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gJnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYnVmZmVyTW9kZSk7CitBTkdM
RV9FWFBPUlQgR0x1aW50IENvbXBpbGVQcm9ncmFtKGNvbnN0IHN0ZDo6c3RyaW5nICZ2c1NvdXJj
ZSwgY29uc3Qgc3RkOjpzdHJpbmcgJmZzU291cmNlKTsKK0FOR0xFX0VYUE9SVCBHTHVpbnQgQ29t
cGlsZVByb2dyYW1Gcm9tRmlsZXMoY29uc3Qgc3RkOjpzdHJpbmcgJnZzUGF0aCwgY29uc3Qgc3Rk
OjpzdHJpbmcgJmZzUGF0aCk7CitBTkdMRV9FWFBPUlQgR0x1aW50IENvbXBpbGVDb21wdXRlUHJv
Z3JhbShjb25zdCBzdGQ6OnN0cmluZyAmY3NTb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIG91dHB1dEVycm9yTWVzc2FnZXMgPSB0cnVlKTsKIAog
I2VuZGlmIC8vIFNBTVBMRV9VVElMX1NIQURFUl9VVElMU19ICkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS91dGlsL3N5c3RlbV91dGlscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3V0aWwvc3lzdGVtX3V0aWxzLmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvc3lzdGVtX3V0aWxzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTYsMjUgKzYsMzkgQEAKIAogLy8gc3lzdGVtX3V0aWxzLmg6IGRlY2xhcmF0aW9uIG9mIE9T
LXNwZWNpZmljIHV0aWxpdHkgZnVuY3Rpb25zCiAKLSNpZm5kZWYgU0FNUExFX1VUSUxfUEFUSF9V
VElMU19ICi0jZGVmaW5lIFNBTVBMRV9VVElMX1BBVEhfVVRJTFNfSAorI2lmbmRlZiBVVElMX1NZ
U1RFTV9VVElMU19IXworI2RlZmluZSBVVElMX1NZU1RFTV9VVElMU19IXwogCiAjaW5jbHVkZSA8
c3RyaW5nPgogCisjaW5jbHVkZSA8ZXhwb3J0Lmg+CisKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1
dGlscy5oIgorCiBuYW1lc3BhY2UgYW5nbGUKIHsKIAotc3RkOjpzdHJpbmcgR2V0RXhlY3V0YWJs
ZVBhdGgoKTsKLXN0ZDo6c3RyaW5nIEdldEV4ZWN1dGFibGVEaXJlY3RvcnkoKTsKK0FOR0xFX0VY
UE9SVCBjb25zdCBjaGFyICpHZXRFeGVjdXRhYmxlUGF0aCgpOworQU5HTEVfRVhQT1JUIGNvbnN0
IGNoYXIgKkdldEV4ZWN1dGFibGVEaXJlY3RvcnkoKTsKK0FOR0xFX0VYUE9SVCBjb25zdCBjaGFy
ICpHZXRTaGFyZWRMaWJyYXJ5RXh0ZW5zaW9uKCk7CiAKIC8vIENyb3NzIHBsYXRmb3JtIGVxdWl2
YWxlbnQgb2YgdGhlIFdpbmRvd3MgU2xlZXAgZnVuY3Rpb24KLXZvaWQgU2xlZXAodW5zaWduZWQg
aW50IG1pbGxpc2Vjb25kcyk7CitBTkdMRV9FWFBPUlQgdm9pZCBTbGVlcCh1bnNpZ25lZCBpbnQg
bWlsbGlzZWNvbmRzKTsKIAotdm9pZCBTZXRMb3dQcmlvcml0eVByb2Nlc3MoKTsKK0FOR0xFX0VY
UE9SVCB2b2lkIFNldExvd1ByaW9yaXR5UHJvY2VzcygpOwogCiAvLyBXcml0ZSBhIGRlYnVnIG1l
c3NhZ2UsIGVpdGhlciB0byBhIHN0YW5kYXJkIG91dHB1dCBvciBEZWJ1ZyB3aW5kb3cuCi12b2lk
IFdyaXRlRGVidWdNZXNzYWdlKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKK0FOR0xFX0VYUE9S
VCB2b2lkIFdyaXRlRGVidWdNZXNzYWdlKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKIAorY2xh
c3MgQU5HTEVfRVhQT1JUIExpYnJhcnkgOiBhbmdsZTo6Tm9uQ29weWFibGUKK3sKKyAgcHVibGlj
OgorICAgIHZpcnR1YWwgfkxpYnJhcnkoKSB7fQorICAgIHZpcnR1YWwgdm9pZCAqZ2V0U3ltYm9s
KGNvbnN0IHN0ZDo6c3RyaW5nICZzeW1ib2xOYW1lKSA9IDA7Cit9OworCitBTkdMRV9FWFBPUlQg
TGlicmFyeSAqbG9hZExpYnJhcnkoY29uc3Qgc3RkOjpzdHJpbmcgJmxpYnJhcnlOYW1lKTsKKwog
fSAvLyBuYW1lc3BhY2UgYW5nbGUKIAotI2VuZGlmIC8vIFNBTVBMRV9VVElMX1BBVEhfVVRJTFNf
SAorI2VuZGlmICAvLyBVVElMX1NZU1RFTV9VVElMU19IXwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvdXRpbC90ZXN0Zml4dHVyZXR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvdXRpbC90ZXN0Zml4dHVyZXR5cGVzLmgJKHJldmlzaW9uIDIwODAyMSkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvdGVzdGZpeHR1cmV0eXBlcy5oCShub25l
eGlzdGVudCkKQEAgLTEsMTIxICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaWZuZGVmIFVUSUxf
VEVTVF9GSVhUVVJFX1RZUEVTX0gKLSNkZWZpbmUgVVRJTF9URVNUX0ZJWFRVUkVfVFlQRVNfSAot
Ci0jaW5jbHVkZSAiRUdMV2luZG93LmgiCi0KLSNpbmNsdWRlIDxFR0wvZWdsLmg+Ci0jaW5jbHVk
ZSA8RUdML2VnbGV4dC5oPgotCi10ZW1wbGF0ZTxFR0xpbnQgcGxhdGZvcm0sIEVHTGludCBwbGF0
Zm9ybU1ham9yVmVyc2lvbiwgRUdMaW50IHBsYXRmb3JtTWlub3JWZXJzaW9uLCBFR0xpbnQgd2Fy
cD4KLXN0cnVjdCBQbGF0Zm9ybQotewotICAgIHN0YXRpYyBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMg
R2V0UGxhdGZvcm0oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVy
cyhwbGF0Zm9ybSwgcGxhdGZvcm1NYWpvclZlcnNpb24sIHBsYXRmb3JtTWlub3JWZXJzaW9uLCB3
YXJwKTsKLSAgICB9Ci19OwotCi0vLyBUeXBlZGVmcyBvZiBjb21tb24gcGxhdGZvcm0gdHlwZXMK
LSNkZWZpbmUgREVGSU5FX0FOR0xFX1RFU1RfUExBVEZPUk0obmFtZSwgcGxhdGZvcm0sIG1ham9y
VmVyc2lvbiwgbWlub3JWZXJzaW9uLCB1c2VXYXJwKSBcCi0gICAgc3RydWN0IG5hbWUgOiBwdWJs
aWMgUGxhdGZvcm08cGxhdGZvcm0sIG1ham9yVmVyc2lvbiwgbWlub3JWZXJzaW9uLCB1c2VXYXJw
PiB7IH0KLQotREVGSU5FX0FOR0xFX1RFU1RfUExBVEZPUk0oRDNEOSwgICAgICAgICAgICAgICAg
ICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEOV9BTkdMRSwgICAgIEVHTF9ET05UX0NBUkUs
IEVHTF9ET05UX0NBUkUsIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9IQVJEV0FSRV9B
TkdMRSk7Ci1ERUZJTkVfQU5HTEVfVEVTVF9QTEFURk9STShEM0Q5X1JFRkVSRU5DRSwgICAgICAg
ICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0Q5X0FOR0xFLCAgICAgRUdMX0RPTlRfQ0FSRSwg
RUdMX0RPTlRfQ0FSRSwgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX1JFRkVSRU5DRV9B
TkdMRSk7Ci0KLURFRklORV9BTkdMRV9URVNUX1BMQVRGT1JNKEQzRDExLCAgICAgICAgICAgICAg
ICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFLCAgICBFR0xfRE9OVF9DQVJF
LCBFR0xfRE9OVF9DQVJFLCBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfSEFSRFdBUkVf
QU5HTEUpOwotREVGSU5FX0FOR0xFX1RFU1RfUExBVEZPUk0oRDNEMTFfRkwxMV8xLCAgICAgICAg
ICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUsICAgICAgICAgICAgICAgMTEs
ICAgICAgICAgICAgIDEsIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9IQVJEV0FSRV9B
TkdMRSk7Ci1ERUZJTkVfQU5HTEVfVEVTVF9QTEFURk9STShEM0QxMV9GTDExXzAsICAgICAgICAg
ICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwgICAgICAgICAgICAgICAxMSwg
ICAgICAgICAgICAgMCwgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0hBUkRXQVJFX0FO
R0xFKTsKLURFRklORV9BTkdMRV9URVNUX1BMQVRGT1JNKEQzRDExX0ZMMTBfMSwgICAgICAgICAg
IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFLCAgICAgICAgICAgICAgIDEwLCAg
ICAgICAgICAgICAxLCBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfSEFSRFdBUkVfQU5H
TEUpOwotREVGSU5FX0FOR0xFX1RFU1RfUExBVEZPUk0oRDNEMTFfRkwxMF8wLCAgICAgICAgICAg
RUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUsICAgICAgICAgICAgICAgMTAsICAg
ICAgICAgICAgIDAsIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9IQVJEV0FSRV9BTkdM
RSk7Ci1ERUZJTkVfQU5HTEVfVEVTVF9QTEFURk9STShEM0QxMV9GTDlfMywgICAgICAgICAgICBF
R0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwgICAgICAgICAgICAgICAgOSwgICAg
ICAgICAgICAgMywgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0hBUkRXQVJFX0FOR0xF
KTsKLQotREVGSU5FX0FOR0xFX1RFU1RfUExBVEZPUk0oRDNEMTFfV0FSUCwgICAgICAgICAgICAg
RUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUsICAgIEVHTF9ET05UX0NBUkUsIEVH
TF9ET05UX0NBUkUsIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9XQVJQX0FOR0xFKTsK
LURFRklORV9BTkdMRV9URVNUX1BMQVRGT1JNKEQzRDExX0ZMMTFfMV9XQVJQLCAgICAgIEVHTF9Q
TEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFLCAgICAgICAgICAgICAgIDExLCAgICAgICAg
ICAgICAxLCBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfV0FSUF9BTkdMRSk7Ci1ERUZJ
TkVfQU5HTEVfVEVTVF9QTEFURk9STShEM0QxMV9GTDExXzBfV0FSUCwgICAgICBFR0xfUExBVEZP
Uk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwgICAgICAgICAgICAgICAxMSwgICAgICAgICAgICAg
MCwgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX1dBUlBfQU5HTEUpOwotREVGSU5FX0FO
R0xFX1RFU1RfUExBVEZPUk0oRDNEMTFfRkwxMF8xX1dBUlAsICAgICAgRUdMX1BMQVRGT1JNX0FO
R0xFX1RZUEVfRDNEMTFfQU5HTEUsICAgICAgICAgICAgICAgMTAsICAgICAgICAgICAgIDEsIEVH
TF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9XQVJQX0FOR0xFKTsKLURFRklORV9BTkdMRV9U
RVNUX1BMQVRGT1JNKEQzRDExX0ZMMTBfMF9XQVJQLCAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9U
WVBFX0QzRDExX0FOR0xFLCAgICAgICAgICAgICAgIDEwLCAgICAgICAgICAgICAwLCBFR0xfUExB
VEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfV0FSUF9BTkdMRSk7Ci1ERUZJTkVfQU5HTEVfVEVTVF9Q
TEFURk9STShEM0QxMV9GTDlfM19XQVJQLCAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9E
M0QxMV9BTkdMRSwgICAgICAgICAgICAgICAgOSwgICAgICAgICAgICAgMywgRUdMX1BMQVRGT1JN
X0FOR0xFX0RFVklDRV9UWVBFX1dBUlBfQU5HTEUpOwotCi1ERUZJTkVfQU5HTEVfVEVTVF9QTEFU
Rk9STShEM0QxMV9SRUZFUkVOQ0UsICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0Qx
MV9BTkdMRSwgICAgRUdMX0RPTlRfQ0FSRSwgRUdMX0RPTlRfQ0FSRSwgRUdMX1BMQVRGT1JNX0FO
R0xFX0RFVklDRV9UWVBFX1JFRkVSRU5DRV9BTkdMRSk7Ci1ERUZJTkVfQU5HTEVfVEVTVF9QTEFU
Rk9STShEM0QxMV9GTDExXzFfUkVGRVJFTkNFLCBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0Qx
MV9BTkdMRSwgICAgICAgICAgICAgICAxMSwgICAgICAgICAgICAgMSwgRUdMX1BMQVRGT1JNX0FO
R0xFX0RFVklDRV9UWVBFX1JFRkVSRU5DRV9BTkdMRSk7Ci1ERUZJTkVfQU5HTEVfVEVTVF9QTEFU
Rk9STShEM0QxMV9GTDExXzBfUkVGRVJFTkNFLCBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0Qx
MV9BTkdMRSwgICAgICAgICAgICAgICAxMSwgICAgICAgICAgICAgMCwgRUdMX1BMQVRGT1JNX0FO
R0xFX0RFVklDRV9UWVBFX1JFRkVSRU5DRV9BTkdMRSk7Ci1ERUZJTkVfQU5HTEVfVEVTVF9QTEFU
Rk9STShEM0QxMV9GTDEwXzFfUkVGRVJFTkNFLCBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0Qx
MV9BTkdMRSwgICAgICAgICAgICAgICAxMCwgICAgICAgICAgICAgMSwgRUdMX1BMQVRGT1JNX0FO
R0xFX0RFVklDRV9UWVBFX1JFRkVSRU5DRV9BTkdMRSk7Ci1ERUZJTkVfQU5HTEVfVEVTVF9QTEFU
Rk9STShEM0QxMV9GTDEwXzBfUkVGRVJFTkNFLCBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0Qx
MV9BTkdMRSwgICAgICAgICAgICAgICAxMCwgICAgICAgICAgICAgMCwgRUdMX1BMQVRGT1JNX0FO
R0xFX0RFVklDRV9UWVBFX1JFRkVSRU5DRV9BTkdMRSk7Ci1ERUZJTkVfQU5HTEVfVEVTVF9QTEFU
Rk9STShEM0QxMV9GTDlfM19SRUZFUkVOQ0UsICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0Qx
MV9BTkdMRSwgICAgICAgICAgICAgICAgOSwgICAgICAgICAgICAgMywgRUdMX1BMQVRGT1JNX0FO
R0xFX0RFVklDRV9UWVBFX1JFRkVSRU5DRV9BTkdMRSk7Ci0KLURFRklORV9BTkdMRV9URVNUX1BM
QVRGT1JNKE9QRU5HTCwgICAgICAgICAgICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09Q
RU5HTF9BTkdMRSwgICBFR0xfRE9OVF9DQVJFLCBFR0xfRE9OVF9DQVJFLCBFR0xfUExBVEZPUk1f
QU5HTEVfREVWSUNFX1RZUEVfSEFSRFdBUkVfQU5HTEUpOwotREVGSU5FX0FOR0xFX1RFU1RfUExB
VEZPUk0oT1BFTkdMRVMsICAgICAgICAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BF
TkdMRVNfQU5HTEUsIEVHTF9ET05UX0NBUkUsIEVHTF9ET05UX0NBUkUsIEVHTF9QTEFURk9STV9B
TkdMRV9ERVZJQ0VfVFlQRV9IQVJEV0FSRV9BTkdMRSk7Ci0KLSN1bmRlZiBERUZJTkVfQU5HTEVf
VEVTVF9QTEFURk9STQotCi0vLyBUZXN0IEZpeHR1cmUgVHlwZQotdGVtcGxhdGU8R0xpbnQgR0xF
U01ham9yVmVyc2lvbiwgdHlwZW5hbWUgcGxhdGZvcm1UPgotc3RydWN0IFRlc3RGaXh0dXJlCi17
Ci0gICAgc3RhdGljIEVHTGludCBHZXRHbGVzTWFqb3JWZXJzaW9uKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBHTEVTTWFqb3JWZXJzaW9uOwotICAgIH0KLQotICAgIHN0YXRpYyBFR0xQbGF0Zm9y
bVBhcmFtZXRlcnMgR2V0UGxhdGZvcm0oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHBsYXRmb3Jt
VDo6R2V0UGxhdGZvcm0oKTsKLSAgICB9Ci19OwotCi0vLyBUeXBlZGVmcyBvZiBjb21tb24gZml4
dHVyZSB0eXBlcwotdHlwZWRlZiBUZXN0Rml4dHVyZTwyLCBEM0Q5PiAgICAgICAgICAgICAgICAg
ICBFUzJfRDNEOTsKLXR5cGVkZWYgVGVzdEZpeHR1cmU8MiwgRDNEOV9SRUZFUkVOQ0U+ICAgICAg
ICAgRVMyX0QzRDlfUkVGRVJFTkNFOwotCi10eXBlZGVmIFRlc3RGaXh0dXJlPDIsIEQzRDExPiAg
ICAgICAgICAgICAgICAgIEVTMl9EM0QxMTsKLXR5cGVkZWYgVGVzdEZpeHR1cmU8MiwgRDNEMTFf
RkwxMV8wPiAgICAgICAgICAgRVMyX0QzRDExX0ZMMTFfMDsKLXR5cGVkZWYgVGVzdEZpeHR1cmU8
MiwgRDNEMTFfRkwxMF8xPiAgICAgICAgICAgRVMyX0QzRDExX0ZMMTBfMTsKLXR5cGVkZWYgVGVz
dEZpeHR1cmU8MiwgRDNEMTFfRkwxMF8wPiAgICAgICAgICAgRVMyX0QzRDExX0ZMMTBfMDsKLXR5
cGVkZWYgVGVzdEZpeHR1cmU8MiwgRDNEMTFfRkw5XzM+ICAgICAgICAgICAgRVMyX0QzRDExX0ZM
OV8zOwotCi10eXBlZGVmIFRlc3RGaXh0dXJlPDIsIEQzRDExX1dBUlA+ICAgICAgICAgICAgIEVT
Ml9EM0QxMV9XQVJQOwotdHlwZWRlZiBUZXN0Rml4dHVyZTwyLCBEM0QxMV9GTDExXzBfV0FSUD4g
ICAgICBFUzJfRDNEMTFfRkwxMV8wX1dBUlA7Ci10eXBlZGVmIFRlc3RGaXh0dXJlPDIsIEQzRDEx
X0ZMMTBfMV9XQVJQPiAgICAgIEVTMl9EM0QxMV9GTDEwXzFfV0FSUDsKLXR5cGVkZWYgVGVzdEZp
eHR1cmU8MiwgRDNEMTFfRkwxMF8wX1dBUlA+ICAgICAgRVMyX0QzRDExX0ZMMTBfMF9XQVJQOwot
dHlwZWRlZiBUZXN0Rml4dHVyZTwyLCBEM0QxMV9GTDlfM19XQVJQPiAgICAgICBFUzJfRDNEMTFf
Rkw5XzNfV0FSUDsKLQotdHlwZWRlZiBUZXN0Rml4dHVyZTwyLCBEM0QxMV9SRUZFUkVOQ0U+ICAg
ICAgICBFUzJfRDNEMTFfUkVGRVJFTkNFOwotdHlwZWRlZiBUZXN0Rml4dHVyZTwyLCBEM0QxMV9G
TDExXzBfUkVGRVJFTkNFPiBFUzJfRDNEMTFfRkwxMV8wX1JFRkVSRU5DRTsKLXR5cGVkZWYgVGVz
dEZpeHR1cmU8MiwgRDNEMTFfRkwxMF8xX1JFRkVSRU5DRT4gRVMyX0QzRDExX0ZMMTBfMV9SRUZF
UkVOQ0U7Ci10eXBlZGVmIFRlc3RGaXh0dXJlPDIsIEQzRDExX0ZMMTBfMF9SRUZFUkVOQ0U+IEVT
Ml9EM0QxMV9GTDEwXzBfUkVGRVJFTkNFOwotdHlwZWRlZiBUZXN0Rml4dHVyZTwyLCBEM0QxMV9G
TDlfM19SRUZFUkVOQ0U+ICBFUzJfRDNEMTFfRkw5XzNfUkVGRVJFTkNFOwotCi10eXBlZGVmIFRl
c3RGaXh0dXJlPDIsIE9QRU5HTD4gICAgICAgICAgICAgICAgIEVTMl9PUEVOR0w7Ci10eXBlZGVm
IFRlc3RGaXh0dXJlPDIsIE9QRU5HTEVTPiAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUzsKLQot
dHlwZWRlZiBUZXN0Rml4dHVyZTwzLCBEM0QxMT4gICAgICAgICAgICAgICAgICBFUzNfRDNEMTE7
Ci10eXBlZGVmIFRlc3RGaXh0dXJlPDMsIEQzRDExX0ZMMTFfMT4gICAgICAgICAgIEVTM19EM0Qx
MV9GTDExXzE7Ci10eXBlZGVmIFRlc3RGaXh0dXJlPDMsIEQzRDExX0ZMMTFfMD4gICAgICAgICAg
IEVTM19EM0QxMV9GTDExXzA7Ci10eXBlZGVmIFRlc3RGaXh0dXJlPDMsIEQzRDExX0ZMMTBfMT4g
ICAgICAgICAgIEVTM19EM0QxMV9GTDEwXzE7Ci10eXBlZGVmIFRlc3RGaXh0dXJlPDMsIEQzRDEx
X0ZMMTBfMD4gICAgICAgICAgIEVTM19EM0QxMV9GTDEwXzA7Ci0KLXR5cGVkZWYgVGVzdEZpeHR1
cmU8MywgRDNEMTFfV0FSUD4gICAgICAgICAgICAgRVMzX0QzRDExX1dBUlA7Ci10eXBlZGVmIFRl
c3RGaXh0dXJlPDMsIEQzRDExX0ZMMTFfMF9XQVJQPiAgICAgIEVTM19EM0QxMV9GTDExXzBfV0FS
UDsKLXR5cGVkZWYgVGVzdEZpeHR1cmU8MywgRDNEMTFfRkwxMF8xX1dBUlA+ICAgICAgRVMzX0Qz
RDExX0ZMMTBfMV9XQVJQOwotdHlwZWRlZiBUZXN0Rml4dHVyZTwzLCBEM0QxMV9GTDEwXzBfV0FS
UD4gICAgICBFUzNfRDNEMTFfRkwxMF8wX1dBUlA7Ci0KLXR5cGVkZWYgVGVzdEZpeHR1cmU8Mywg
RDNEMTFfUkVGRVJFTkNFPiAgICAgICAgRVMzX0QzRDExX1JFRkVSRU5DRTsKLXR5cGVkZWYgVGVz
dEZpeHR1cmU8MywgRDNEMTFfRkwxMV8xX1JFRkVSRU5DRT4gRVMzX0QzRDExX0ZMMTFfMV9SRUZF
UkVOQ0U7Ci10eXBlZGVmIFRlc3RGaXh0dXJlPDMsIEQzRDExX0ZMMTFfMF9SRUZFUkVOQ0U+IEVT
M19EM0QxMV9GTDExXzBfUkVGRVJFTkNFOwotdHlwZWRlZiBUZXN0Rml4dHVyZTwzLCBEM0QxMV9G
TDEwXzFfUkVGRVJFTkNFPiBFUzNfRDNEMTFfRkwxMF8xX1JFRkVSRU5DRTsKLXR5cGVkZWYgVGVz
dEZpeHR1cmU8MywgRDNEMTFfRkwxMF8wX1JFRkVSRU5DRT4gRVMzX0QzRDExX0ZMMTBfMF9SRUZF
UkVOQ0U7Ci0KLXR5cGVkZWYgVGVzdEZpeHR1cmU8MywgT1BFTkdMPiAgICAgICAgICAgICAgICAg
RVMzX09QRU5HTDsKLXR5cGVkZWYgVGVzdEZpeHR1cmU8MywgT1BFTkdMRVM+ICAgICAgICAgICAg
ICAgRVMzX09QRU5HTEVTOwotCi0jZGVmaW5lIEFOR0xFX1RZUEVEX1RFU1RfQ0FTRSh0ZXN0TmFt
ZSwgLi4uKSBcCi0gICAgdHlwZWRlZiA6OnRlc3Rpbmc6OlR5cGVzPF9fVkFfQVJHU19fPiBIZWxw
ZXIjI3Rlc3ROYW1lOyBcCi0gICAgVFlQRURfVEVTVF9DQVNFKHRlc3ROYW1lLCBIZWxwZXIjI3Rl
c3ROYW1lKTsKLQotI2VuZGlmIC8vIFVUSUxfVEVTVF9GSVhUVVJFX1RZUEVTX0gKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvdXRpbC5neXAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvdXRpbC91dGlsLmd5cAkocmV2aXNpb24gMjA4MDIxKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC91dGlsLmd5cAkod29ya2luZyBjb3B5KQpAQCAtNjYs
NiArNjYsMTIgQEAKICAgICAgICAgICAgICd4MTEvWDExV2luZG93LmNwcCcsCiAgICAgICAgICAg
ICAneDExL1gxMVdpbmRvdy5oJywKICAgICAgICAgXSwKKyAgICAgICAgJ3V0aWxfb3pvbmVfc291
cmNlcyc6CisgICAgICAgIFsKKyAgICAgICAgICAgICdvem9uZS9Pem9uZVBpeG1hcC5jcHAnLAor
ICAgICAgICAgICAgJ296b25lL096b25lV2luZG93LmNwcCcsCisgICAgICAgICAgICAnb3pvbmUv
T3pvbmVXaW5kb3cuaCcsCisgICAgICAgIF0sCiAgICAgICAgICd1dGlsX29zeF9zb3VyY2VzJzoK
ICAgICAgICAgWwogICAgICAgICAgICAgJ29zeC9PU1hfc3lzdGVtX3V0aWxzLmNwcCcsCkBAIC03
NywxMiArODMsMjAgQEAKICAgICAgICAgICAgICdvc3gvT1NYV2luZG93LmgnLAogICAgICAgICAg
ICAgJ3Bvc2l4L1Bvc2l4X3N5c3RlbV91dGlscy5jcHAnLAogICAgICAgICBdLAorICAgICAgICAn
dXRpbF9hbmRyb2lkX3NvdXJjZXMnOgorICAgICAgICBbCisgICAgICAgICAgICAnYW5kcm9pZC9B
bmRyb2lkUGl4bWFwLmNwcCcsCisgICAgICAgICAgICAnYW5kcm9pZC9BbmRyb2lkV2luZG93LmNw
cCcsCisgICAgICAgICAgICAnYW5kcm9pZC9BbmRyb2lkV2luZG93LmgnLAorICAgICAgICAgICAg
J2FuZHJvaWQvdGhpcmRfcGFydHkvYW5kcm9pZF9uYXRpdmVfYXBwX2dsdWUuYycsCisgICAgICAg
ICAgICAnYW5kcm9pZC90aGlyZF9wYXJ0eS9hbmRyb2lkX25hdGl2ZV9hcHBfZ2x1ZS5oJywKKyAg
ICAgICAgXSwKICAgICB9LAogICAgICd0YXJnZXRzJzoKICAgICBbCiAgICAgICAgIHsKICAgICAg
ICAgICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV91dGlsJywKLSAgICAgICAgICAgICd0eXBlJzog
J3N0YXRpY19saWJyYXJ5JywKKyAgICAgICAgICAgICd0eXBlJzogJ3NoYXJlZF9saWJyYXJ5JywK
ICAgICAgICAgICAgICdpbmNsdWRlcyc6IFsgJy4uL2J1aWxkL2NvbW1vbl9kZWZpbmVzLmd5cGkn
LCBdLAogICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6CiAgICAgICAgICAgICBbCkBAIC0xMDcs
NiArMTIxLDcgQEAKICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAnR0xfR0xFWFRfUFJP
VE9UWVBFUycsCiAgICAgICAgICAgICAgICAgJ0VHTF9FR0xFWFRfUFJPVE9UWVBFUycsCisgICAg
ICAgICAgICAgICAgJ0xJQkFOR0xFX1VUSUxfSU1QTEVNRU5UQVRJT04nLAogICAgICAgICAgICAg
XSwKICAgICAgICAgICAgICdkaXJlY3RfZGVwZW5kZW50X3NldHRpbmdzJzoKICAgICAgICAgICAg
IHsKQEAgLTE0Myw2ICsxNTgsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAg
ICAgICAgICAgICAgICAgJzxAKHV0aWxfbGludXhfc291cmNlcyknLAogICAgICAgICAgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgICAgICAgICAnbGlua19zZXR0aW5ncyc6CisgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICdsaWJyYXJpZXMnOgorICAgICAg
ICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICctbGRsJywK
KyAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgIH0sCiAgICAg
ICAgICAgICAgICAgfV0sCiAgICAgICAgICAgICAgICAgWyd1c2VfeDExPT0xJywKICAgICAgICAg
ICAgICAgICB7CkBAIC0xNjIsNiArMTg0LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBd
LAogICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIH1dLAorICAgICAgICAg
ICAgICAgIFsndXNlX296b25lPT0xJywKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgICdzb3VyY2VzJzoKKyAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAg
ICAgICAgICAgJzxAKHV0aWxfb3pvbmVfc291cmNlcyknLAorICAgICAgICAgICAgICAgICAgICBd
LAorICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgIFsnT1M9PSJtYWMiJywKICAg
ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICdzb3VyY2VzJzoKQEAgLTE2OCw2
ICsxOTcsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAg
ICAgJzxAKHV0aWxfb3N4X3NvdXJjZXMpJywKICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAg
ICAgICAgICAgICAgICAgJ3hjb2RlX3NldHRpbmdzJzoKKyAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgJ0RZTElCX0lOU1RBTExfTkFNRV9CQVNFJzogJ0BycGF0
aCcsCisgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICdsaW5rX3Nl
dHRpbmdzJzoKICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAg
J2xpYnJhcmllcyc6CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3dpbjMyL1dp
bjMyVGltZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwv
d2luMzIvV2luMzJUaW1lci5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3V0aWwvd2luMzIvV2luMzJUaW1lci5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw1
OCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgIndpbjMyL1dpbjMyVGltZXIuaCIK
LQotV2luMzJUaW1lcjo6V2luMzJUaW1lcigpCi0gICAgOiBtUnVubmluZyhmYWxzZSksCi0gICAg
ICBtU3RhcnRUaW1lKDApLAotICAgICAgbVN0b3BUaW1lKDApCi17Ci19Ci0KLXZvaWQgV2luMzJU
aW1lcjo6c3RhcnQoKQotewotICAgIExBUkdFX0lOVEVHRVIgZnJlcXVlbmN5OwotICAgIFF1ZXJ5
UGVyZm9ybWFuY2VGcmVxdWVuY3koJmZyZXF1ZW5jeSk7Ci0gICAgbUZyZXF1ZW5jeSA9IGZyZXF1
ZW5jeS5RdWFkUGFydDsKLQotICAgIExBUkdFX0lOVEVHRVIgY3VyVGltZTsKLSAgICBRdWVyeVBl
cmZvcm1hbmNlQ291bnRlcigmY3VyVGltZSk7Ci0gICAgbVN0YXJ0VGltZSA9IGN1clRpbWUuUXVh
ZFBhcnQ7Ci0KLSAgICBtUnVubmluZyA9IHRydWU7Ci19Ci0KLXZvaWQgV2luMzJUaW1lcjo6c3Rv
cCgpCi17Ci0gICAgTEFSR0VfSU5URUdFUiBjdXJUaW1lOwotICAgIFF1ZXJ5UGVyZm9ybWFuY2VD
b3VudGVyKCZjdXJUaW1lKTsKLSAgICBtU3RvcFRpbWUgPSBjdXJUaW1lLlF1YWRQYXJ0OwotCi0g
ICAgbVJ1bm5pbmcgPSBmYWxzZTsKLX0KLQotZG91YmxlIFdpbjMyVGltZXI6OmdldEVsYXBzZWRU
aW1lKCkgY29uc3QKLXsKLSAgICBMT05HTE9ORyBlbmRUaW1lOwotICAgIGlmIChtUnVubmluZykK
LSAgICB7Ci0gICAgICAgIExBUkdFX0lOVEVHRVIgY3VyVGltZTsKLSAgICAgICAgUXVlcnlQZXJm
b3JtYW5jZUNvdW50ZXIoJmN1clRpbWUpOwotICAgICAgICBlbmRUaW1lID0gY3VyVGltZS5RdWFk
UGFydDsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgZW5kVGltZSA9IG1TdG9wVGlt
ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihlbmRUaW1lIC0gbVN0
YXJ0VGltZSkgLyBtRnJlcXVlbmN5OwotfQotCi1UaW1lciAqQ3JlYXRlVGltZXIoKQotewotICAg
IHJldHVybiBuZXcgV2luMzJUaW1lcigpOwotfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvdXRpbC93aW4zMi9XaW4zMlRpbWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvdXRpbC93aW4zMi9XaW4zMlRpbWVyLmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvd2luMzIvV2luMzJUaW1lci5oCShub25leGlzdGVu
dCkKQEAgLTEsMzAgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxNCBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQot
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpZm5kZWYgU0FNUExFX1VUSUxf
V0lOMzJfVElNRVJfSAotI2RlZmluZSBTQU1QTEVfVVRJTF9XSU4zMl9USU1FUl9ICi0KLSNpbmNs
dWRlICJUaW1lci5oIgotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLQotY2xhc3MgV2luMzJUaW1lciA6
IHB1YmxpYyBUaW1lcgotewotICBwdWJsaWM6Ci0gICAgV2luMzJUaW1lcigpOwotCi0gICAgdm9p
ZCBzdGFydCgpOwotICAgIHZvaWQgc3RvcCgpOwotICAgIGRvdWJsZSBnZXRFbGFwc2VkVGltZSgp
IGNvbnN0IDsKLQotICBwcml2YXRlOgotICAgIGJvb2wgbVJ1bm5pbmc7Ci0gICAgTE9OR0xPTkcg
bVN0YXJ0VGltZTsKLSAgICBMT05HTE9ORyBtU3RvcFRpbWU7Ci0KLSAgICBMT05HTE9ORyBtRnJl
cXVlbmN5OwotfTsKLQotI2VuZGlmIC8vIFNBTVBMRV9VVElMX1dJTjMyX1RJTUVSX0gKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvd2luMzIvV2luMzJXaW5kb3cuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvd2luMzIvV2luMzJXaW5kb3cu
Y3BwCShyZXZpc2lvbiAyMDgwMjEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3dp
bjMyL1dpbjMyV2luZG93LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDU5OSArMCwwIEBACi0vLwot
Ly8gQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgotLy8KLQotI2luY2x1ZGUgIndpbjMyL1dpbjMyV2luZG93LmgiCi0KLSNpbmNsdWRlIDxz
c3RyZWFtPgotCi1LZXkgVmlydHVhbEtleUNvZGVUb0tleShXUEFSQU0ga2V5LCBMUEFSQU0gZmxh
Z3MpCi17Ci0gICAgc3dpdGNoIChrZXkpCi0gICAgewotICAgICAgICAvLyBDaGVjayB0aGUgc2Nh
bmNvZGUgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBsZWZ0IGFuZCByaWdodCBzaGlmdAotICAgICAg
Y2FzZSBWS19TSElGVDoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGlu
dCBsU2hpZnQgPSBNYXBWaXJ0dWFsS2V5KFZLX0xTSElGVCwgTUFQVktfVktfVE9fVlNDKTsKLSAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBzY2FuY29kZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGlu
dD4oKGZsYWdzICYgKDB4RkYgPDwgMTYpKSA+PiAxNik7Ci0gICAgICAgICAgICByZXR1cm4gc2Nh
bmNvZGUgPT0gbFNoaWZ0ID8gS0VZX0xTSElGVCA6IEtFWV9SU0hJRlQ7Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBDaGVjayB0aGUgImV4dGVuZGVkIiBmbGFnIHRvIGRpc3Rpbmd1aXNoIGJldHdl
ZW4gbGVmdCBhbmQgcmlnaHQgYWx0Ci0gICAgICBjYXNlIFZLX01FTlU6ICAgICAgIHJldHVybiAo
SElXT1JEKGZsYWdzKSAmIEtGX0VYVEVOREVEKSA/IEtFWV9SQUxUIDogS0VZX0xBTFQ7Ci0KLSAg
ICAgICAgLy8gQ2hlY2sgdGhlICJleHRlbmRlZCIgZmxhZyB0byBkaXN0aW5ndWlzaCBiZXR3ZWVu
IGxlZnQgYW5kIHJpZ2h0IGNvbnRyb2wKLSAgICAgIGNhc2UgVktfQ09OVFJPTDogICAgcmV0dXJu
IChISVdPUkQoZmxhZ3MpICYgS0ZfRVhURU5ERUQpID8gS0VZX1JDT05UUk9MIDogS0VZX0xDT05U
Uk9MOwotCi0gICAgICAgIC8vIE90aGVyIGtleXMgYXJlIHJlcG9ydGVkIHByb3Blcmx5Ci0gICAg
ICBjYXNlIFZLX0xXSU46ICAgICAgIHJldHVybiBLRVlfTFNZU1RFTTsKLSAgICAgIGNhc2UgVktf
UldJTjogICAgICAgcmV0dXJuIEtFWV9SU1lTVEVNOwotICAgICAgY2FzZSBWS19BUFBTOiAgICAg
ICByZXR1cm4gS0VZX01FTlU7Ci0gICAgICBjYXNlIFZLX09FTV8xOiAgICAgIHJldHVybiBLRVlf
U0VNSUNPTE9OOwotICAgICAgY2FzZSBWS19PRU1fMjogICAgICByZXR1cm4gS0VZX1NMQVNIOwot
ICAgICAgY2FzZSBWS19PRU1fUExVUzogICByZXR1cm4gS0VZX0VRVUFMOwotICAgICAgY2FzZSBW
S19PRU1fTUlOVVM6ICByZXR1cm4gS0VZX0RBU0g7Ci0gICAgICBjYXNlIFZLX09FTV80OiAgICAg
IHJldHVybiBLRVlfTEJSQUNLRVQ7Ci0gICAgICBjYXNlIFZLX09FTV82OiAgICAgIHJldHVybiBL
RVlfUkJSQUNLRVQ7Ci0gICAgICBjYXNlIFZLX09FTV9DT01NQTogIHJldHVybiBLRVlfQ09NTUE7
Ci0gICAgICBjYXNlIFZLX09FTV9QRVJJT0Q6IHJldHVybiBLRVlfUEVSSU9EOwotICAgICAgY2Fz
ZSBWS19PRU1fNzogICAgICByZXR1cm4gS0VZX1FVT1RFOwotICAgICAgY2FzZSBWS19PRU1fNTog
ICAgICByZXR1cm4gS0VZX0JBQ0tTTEFTSDsKLSAgICAgIGNhc2UgVktfT0VNXzM6ICAgICAgcmV0
dXJuIEtFWV9USUxERTsKLSAgICAgIGNhc2UgVktfRVNDQVBFOiAgICAgcmV0dXJuIEtFWV9FU0NB
UEU7Ci0gICAgICBjYXNlIFZLX1NQQUNFOiAgICAgIHJldHVybiBLRVlfU1BBQ0U7Ci0gICAgICBj
YXNlIFZLX1JFVFVSTjogICAgIHJldHVybiBLRVlfUkVUVVJOOwotICAgICAgY2FzZSBWS19CQUNL
OiAgICAgICByZXR1cm4gS0VZX0JBQ0s7Ci0gICAgICBjYXNlIFZLX1RBQjogICAgICAgIHJldHVy
biBLRVlfVEFCOwotICAgICAgY2FzZSBWS19QUklPUjogICAgICByZXR1cm4gS0VZX1BBR0VVUDsK
LSAgICAgIGNhc2UgVktfTkVYVDogICAgICAgcmV0dXJuIEtFWV9QQUdFRE9XTjsKLSAgICAgIGNh
c2UgVktfRU5EOiAgICAgICAgcmV0dXJuIEtFWV9FTkQ7Ci0gICAgICBjYXNlIFZLX0hPTUU6ICAg
ICAgIHJldHVybiBLRVlfSE9NRTsKLSAgICAgIGNhc2UgVktfSU5TRVJUOiAgICAgcmV0dXJuIEtF
WV9JTlNFUlQ7Ci0gICAgICBjYXNlIFZLX0RFTEVURTogICAgIHJldHVybiBLRVlfREVMRVRFOwot
ICAgICAgY2FzZSBWS19BREQ6ICAgICAgICByZXR1cm4gS0VZX0FERDsKLSAgICAgIGNhc2UgVktf
U1VCVFJBQ1Q6ICAgcmV0dXJuIEtFWV9TVUJUUkFDVDsKLSAgICAgIGNhc2UgVktfTVVMVElQTFk6
ICAgcmV0dXJuIEtFWV9NVUxUSVBMWTsKLSAgICAgIGNhc2UgVktfRElWSURFOiAgICAgcmV0dXJu
IEtFWV9ESVZJREU7Ci0gICAgICBjYXNlIFZLX1BBVVNFOiAgICAgIHJldHVybiBLRVlfUEFVU0U7
Ci0gICAgICBjYXNlIFZLX0YxOiAgICAgICAgIHJldHVybiBLRVlfRjE7Ci0gICAgICBjYXNlIFZL
X0YyOiAgICAgICAgIHJldHVybiBLRVlfRjI7Ci0gICAgICBjYXNlIFZLX0YzOiAgICAgICAgIHJl
dHVybiBLRVlfRjM7Ci0gICAgICBjYXNlIFZLX0Y0OiAgICAgICAgIHJldHVybiBLRVlfRjQ7Ci0g
ICAgICBjYXNlIFZLX0Y1OiAgICAgICAgIHJldHVybiBLRVlfRjU7Ci0gICAgICBjYXNlIFZLX0Y2
OiAgICAgICAgIHJldHVybiBLRVlfRjY7Ci0gICAgICBjYXNlIFZLX0Y3OiAgICAgICAgIHJldHVy
biBLRVlfRjc7Ci0gICAgICBjYXNlIFZLX0Y4OiAgICAgICAgIHJldHVybiBLRVlfRjg7Ci0gICAg
ICBjYXNlIFZLX0Y5OiAgICAgICAgIHJldHVybiBLRVlfRjk7Ci0gICAgICBjYXNlIFZLX0YxMDog
ICAgICAgIHJldHVybiBLRVlfRjEwOwotICAgICAgY2FzZSBWS19GMTE6ICAgICAgICByZXR1cm4g
S0VZX0YxMTsKLSAgICAgIGNhc2UgVktfRjEyOiAgICAgICAgcmV0dXJuIEtFWV9GMTI7Ci0gICAg
ICBjYXNlIFZLX0YxMzogICAgICAgIHJldHVybiBLRVlfRjEzOwotICAgICAgY2FzZSBWS19GMTQ6
ICAgICAgICByZXR1cm4gS0VZX0YxNDsKLSAgICAgIGNhc2UgVktfRjE1OiAgICAgICAgcmV0dXJu
IEtFWV9GMTU7Ci0gICAgICBjYXNlIFZLX0xFRlQ6ICAgICAgIHJldHVybiBLRVlfTEVGVDsKLSAg
ICAgIGNhc2UgVktfUklHSFQ6ICAgICAgcmV0dXJuIEtFWV9SSUdIVDsKLSAgICAgIGNhc2UgVktf
VVA6ICAgICAgICAgcmV0dXJuIEtFWV9VUDsKLSAgICAgIGNhc2UgVktfRE9XTjogICAgICAgcmV0
dXJuIEtFWV9ET1dOOwotICAgICAgY2FzZSBWS19OVU1QQUQwOiAgICByZXR1cm4gS0VZX05VTVBB
RDA7Ci0gICAgICBjYXNlIFZLX05VTVBBRDE6ICAgIHJldHVybiBLRVlfTlVNUEFEMTsKLSAgICAg
IGNhc2UgVktfTlVNUEFEMjogICAgcmV0dXJuIEtFWV9OVU1QQUQyOwotICAgICAgY2FzZSBWS19O
VU1QQUQzOiAgICByZXR1cm4gS0VZX05VTVBBRDM7Ci0gICAgICBjYXNlIFZLX05VTVBBRDQ6ICAg
IHJldHVybiBLRVlfTlVNUEFENDsKLSAgICAgIGNhc2UgVktfTlVNUEFENTogICAgcmV0dXJuIEtF
WV9OVU1QQUQ1OwotICAgICAgY2FzZSBWS19OVU1QQUQ2OiAgICByZXR1cm4gS0VZX05VTVBBRDY7
Ci0gICAgICBjYXNlIFZLX05VTVBBRDc6ICAgIHJldHVybiBLRVlfTlVNUEFENzsKLSAgICAgIGNh
c2UgVktfTlVNUEFEODogICAgcmV0dXJuIEtFWV9OVU1QQUQ4OwotICAgICAgY2FzZSBWS19OVU1Q
QUQ5OiAgICByZXR1cm4gS0VZX05VTVBBRDk7Ci0gICAgICBjYXNlICdBJzogICAgICAgICAgIHJl
dHVybiBLRVlfQTsKLSAgICAgIGNhc2UgJ1onOiAgICAgICAgICAgcmV0dXJuIEtFWV9aOwotICAg
ICAgY2FzZSAnRSc6ICAgICAgICAgICByZXR1cm4gS0VZX0U7Ci0gICAgICBjYXNlICdSJzogICAg
ICAgICAgIHJldHVybiBLRVlfUjsKLSAgICAgIGNhc2UgJ1QnOiAgICAgICAgICAgcmV0dXJuIEtF
WV9UOwotICAgICAgY2FzZSAnWSc6ICAgICAgICAgICByZXR1cm4gS0VZX1k7Ci0gICAgICBjYXNl
ICdVJzogICAgICAgICAgIHJldHVybiBLRVlfVTsKLSAgICAgIGNhc2UgJ0knOiAgICAgICAgICAg
cmV0dXJuIEtFWV9JOwotICAgICAgY2FzZSAnTyc6ICAgICAgICAgICByZXR1cm4gS0VZX087Ci0g
ICAgICBjYXNlICdQJzogICAgICAgICAgIHJldHVybiBLRVlfUDsKLSAgICAgIGNhc2UgJ1EnOiAg
ICAgICAgICAgcmV0dXJuIEtFWV9ROwotICAgICAgY2FzZSAnUyc6ICAgICAgICAgICByZXR1cm4g
S0VZX1M7Ci0gICAgICBjYXNlICdEJzogICAgICAgICAgIHJldHVybiBLRVlfRDsKLSAgICAgIGNh
c2UgJ0YnOiAgICAgICAgICAgcmV0dXJuIEtFWV9GOwotICAgICAgY2FzZSAnRyc6ICAgICAgICAg
ICByZXR1cm4gS0VZX0c7Ci0gICAgICBjYXNlICdIJzogICAgICAgICAgIHJldHVybiBLRVlfSDsK
LSAgICAgIGNhc2UgJ0onOiAgICAgICAgICAgcmV0dXJuIEtFWV9KOwotICAgICAgY2FzZSAnSyc6
ICAgICAgICAgICByZXR1cm4gS0VZX0s7Ci0gICAgICBjYXNlICdMJzogICAgICAgICAgIHJldHVy
biBLRVlfTDsKLSAgICAgIGNhc2UgJ00nOiAgICAgICAgICAgcmV0dXJuIEtFWV9NOwotICAgICAg
Y2FzZSAnVyc6ICAgICAgICAgICByZXR1cm4gS0VZX1c7Ci0gICAgICBjYXNlICdYJzogICAgICAg
ICAgIHJldHVybiBLRVlfWDsKLSAgICAgIGNhc2UgJ0MnOiAgICAgICAgICAgcmV0dXJuIEtFWV9D
OwotICAgICAgY2FzZSAnVic6ICAgICAgICAgICByZXR1cm4gS0VZX1Y7Ci0gICAgICBjYXNlICdC
JzogICAgICAgICAgIHJldHVybiBLRVlfQjsKLSAgICAgIGNhc2UgJ04nOiAgICAgICAgICAgcmV0
dXJuIEtFWV9OOwotICAgICAgY2FzZSAnMCc6ICAgICAgICAgICByZXR1cm4gS0VZX05VTTA7Ci0g
ICAgICBjYXNlICcxJzogICAgICAgICAgIHJldHVybiBLRVlfTlVNMTsKLSAgICAgIGNhc2UgJzIn
OiAgICAgICAgICAgcmV0dXJuIEtFWV9OVU0yOwotICAgICAgY2FzZSAnMyc6ICAgICAgICAgICBy
ZXR1cm4gS0VZX05VTTM7Ci0gICAgICBjYXNlICc0JzogICAgICAgICAgIHJldHVybiBLRVlfTlVN
NDsKLSAgICAgIGNhc2UgJzUnOiAgICAgICAgICAgcmV0dXJuIEtFWV9OVU01OwotICAgICAgY2Fz
ZSAnNic6ICAgICAgICAgICByZXR1cm4gS0VZX05VTTY7Ci0gICAgICBjYXNlICc3JzogICAgICAg
ICAgIHJldHVybiBLRVlfTlVNNzsKLSAgICAgIGNhc2UgJzgnOiAgICAgICAgICAgcmV0dXJuIEtF
WV9OVU04OwotICAgICAgY2FzZSAnOSc6ICAgICAgICAgICByZXR1cm4gS0VZX05VTTk7Ci0gICAg
fQotCi0gICAgcmV0dXJuIEtleSgwKTsKLX0KLQotTFJFU1VMVCBDQUxMQkFDSyBXbmRQcm9jKEhX
TkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQotewot
ICAgIHN3aXRjaChtZXNzYWdlKQotICAgIHsKLSAgICAgIGNhc2UgV01fTkNDUkVBVEU6Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIExQQ1JFQVRFU1RSVUNUIHBDcmVhdGVTdHJ1Y3QgPSByZWludGVy
cHJldF9jYXN0PExQQ1JFQVRFU1RSVUNUPihsUGFyYW0pOwotICAgICAgICAgICAgU2V0V2luZG93
TG9uZ1B0cihoV25kLCBHV0xQX1VTRVJEQVRBLCByZWludGVycHJldF9jYXN0PExPTkdfUFRSPihw
Q3JlYXRlU3RydWN0LT5scENyZWF0ZVBhcmFtcykpOwotICAgICAgICAgICAgcmV0dXJuIERlZldp
bmRvd1Byb2NBKGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIFdpbjMyV2luZG93ICp3aW5kb3cgPSByZWludGVycHJldF9jYXN0PFdpbjMyV2lu
ZG93Kj4oR2V0V2luZG93TG9uZ1B0cihoV25kLCBHV0xQX1VTRVJEQVRBKSk7Ci0gICAgaWYgKHdp
bmRvdykKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAobWVzc2FnZSkKLSAgICAgICAgewotICAgICAg
ICAgIGNhc2UgV01fREVTVFJPWToKLSAgICAgICAgICBjYXNlIFdNX0NMT1NFOgotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIEV2ZW50IGV2ZW50OwotICAgICAgICAgICAgICAgIGV2ZW50
LlR5cGUgPSBFdmVudDo6RVZFTlRfQ0xPU0VEOwotICAgICAgICAgICAgICAgIHdpbmRvdy0+cHVz
aEV2ZW50KGV2ZW50KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgIGNhc2UgV01fTU9WRToKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBS
RUNUIHdpblJlY3Q7Ci0gICAgICAgICAgICAgICAgR2V0Q2xpZW50UmVjdChoV25kLCAmd2luUmVj
dCk7Ci0KLSAgICAgICAgICAgICAgICBQT0lOVCB0b3BMZWZ0OwotICAgICAgICAgICAgICAgIHRv
cExlZnQueCA9IHdpblJlY3QubGVmdDsKLSAgICAgICAgICAgICAgICB0b3BMZWZ0LnkgPSB3aW5S
ZWN0LnRvcDsKLSAgICAgICAgICAgICAgICBDbGllbnRUb1NjcmVlbihoV25kLCAmdG9wTGVmdCk7
Ci0KLSAgICAgICAgICAgICAgICBFdmVudCBldmVudDsKLSAgICAgICAgICAgICAgICBldmVudC5U
eXBlICAgICAgICA9IEV2ZW50OjpFVkVOVF9NT1ZFRDsKLSAgICAgICAgICAgICAgICBldmVudC5N
b3ZlLlggICAgICA9IHRvcExlZnQueDsKLSAgICAgICAgICAgICAgICBldmVudC5Nb3ZlLlkgICAg
ICA9IHRvcExlZnQueTsKLSAgICAgICAgICAgICAgICB3aW5kb3ctPnB1c2hFdmVudChldmVudCk7
Ci0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgIGNh
c2UgV01fU0laRToKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBSRUNUIHdpblJlY3Q7
Ci0gICAgICAgICAgICAgICAgR2V0Q2xpZW50UmVjdChoV25kLCAmd2luUmVjdCk7Ci0KLSAgICAg
ICAgICAgICAgICBQT0lOVCB0b3BMZWZ0OwotICAgICAgICAgICAgICAgIHRvcExlZnQueCA9IHdp
blJlY3QubGVmdDsKLSAgICAgICAgICAgICAgICB0b3BMZWZ0LnkgPSB3aW5SZWN0LnRvcDsKLSAg
ICAgICAgICAgICAgICBDbGllbnRUb1NjcmVlbihoV25kLCAmdG9wTGVmdCk7Ci0KLSAgICAgICAg
ICAgICAgICBQT0lOVCBib3RSaWdodDsKLSAgICAgICAgICAgICAgICBib3RSaWdodC54ID0gd2lu
UmVjdC5yaWdodDsKLSAgICAgICAgICAgICAgICBib3RSaWdodC55ID0gd2luUmVjdC5ib3R0b207
Ci0gICAgICAgICAgICAgICAgQ2xpZW50VG9TY3JlZW4oaFduZCwgJmJvdFJpZ2h0KTsKLQotICAg
ICAgICAgICAgICAgIEV2ZW50IGV2ZW50OwotICAgICAgICAgICAgICAgIGV2ZW50LlR5cGUgICAg
ICAgID0gRXZlbnQ6OkVWRU5UX1JFU0laRUQ7Ci0gICAgICAgICAgICAgICAgZXZlbnQuU2l6ZS5X
aWR0aCAgPSBib3RSaWdodC54IC0gdG9wTGVmdC54OwotICAgICAgICAgICAgICAgIGV2ZW50LlNp
emUuSGVpZ2h0ID0gYm90UmlnaHQueSAtIHRvcExlZnQueTsKLSAgICAgICAgICAgICAgICB3aW5k
b3ctPnB1c2hFdmVudChldmVudCk7Ci0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgIGNhc2UgV01fU0VURk9DVVM6Ci0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgRXZlbnQgZXZlbnQ7Ci0gICAgICAgICAgICAgICAgZXZlbnQuVHlwZSA9IEV2
ZW50OjpFVkVOVF9HQUlORURfRk9DVVM7Ci0gICAgICAgICAgICAgICAgd2luZG93LT5wdXNoRXZl
bnQoZXZlbnQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgY2FzZSBXTV9LSUxMRk9DVVM6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
RXZlbnQgZXZlbnQ7Ci0gICAgICAgICAgICAgICAgZXZlbnQuVHlwZSA9IEV2ZW50OjpFVkVOVF9M
T1NUX0ZPQ1VTOwotICAgICAgICAgICAgICAgIHdpbmRvdy0+cHVzaEV2ZW50KGV2ZW50KTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgIGNhc2UgV01f
S0VZRE9XTjoKLSAgICAgICAgICBjYXNlIFdNX1NZU0tFWURPV046Ci0gICAgICAgICAgY2FzZSBX
TV9LRVlVUDoKLSAgICAgICAgICBjYXNlIFdNX1NZU0tFWVVQOgotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGJvb2wgZG93biA9IChtZXNzYWdlID09IFdNX0tFWURPV04gfHwgbWVzc2Fn
ZSA9PSBXTV9TWVNLRVlET1dOKTsKLQotICAgICAgICAgICAgICAgIEV2ZW50IGV2ZW50OwotICAg
ICAgICAgICAgICAgIGV2ZW50LlR5cGUgICAgICAgID0gZG93biA/IEV2ZW50OjpFVkVOVF9LRVlf
UFJFU1NFRCA6IEV2ZW50OjpFVkVOVF9LRVlfUkVMRUFTRUQ7Ci0gICAgICAgICAgICAgICAgZXZl
bnQuS2V5LkFsdCAgICAgPSBISVdPUkQoR2V0QXN5bmNLZXlTdGF0ZShWS19NRU5VKSkgICAgIT0g
MDsKLSAgICAgICAgICAgICAgICBldmVudC5LZXkuQ29udHJvbCA9IEhJV09SRChHZXRBc3luY0tl
eVN0YXRlKFZLX0NPTlRST0wpKSAhPSAwOwotICAgICAgICAgICAgICAgIGV2ZW50LktleS5TaGlm
dCAgID0gSElXT1JEKEdldEFzeW5jS2V5U3RhdGUoVktfU0hJRlQpKSAgICE9IDA7Ci0gICAgICAg
ICAgICAgICAgZXZlbnQuS2V5LlN5c3RlbSAgPSBISVdPUkQoR2V0QXN5bmNLZXlTdGF0ZShWS19M
V0lOKSkgfHwgSElXT1JEKEdldEFzeW5jS2V5U3RhdGUoVktfUldJTikpOwotICAgICAgICAgICAg
ICAgIGV2ZW50LktleS5Db2RlICAgID0gVmlydHVhbEtleUNvZGVUb0tleSh3UGFyYW0sIGxQYXJh
bSk7Ci0gICAgICAgICAgICAgICAgd2luZG93LT5wdXNoRXZlbnQoZXZlbnQpOwotCi0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICBjYXNlIFdNX01PVVNF
V0hFRUw6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgRXZlbnQgZXZlbnQ7Ci0gICAg
ICAgICAgICAgICAgZXZlbnQuVHlwZSA9IEV2ZW50OjpFVkVOVF9NT1VTRV9XSEVFTF9NT1ZFRDsK
LSAgICAgICAgICAgICAgICBldmVudC5Nb3VzZVdoZWVsLkRlbHRhID0gc3RhdGljX2Nhc3Q8c2hv
cnQ+KEhJV09SRCh3UGFyYW0pKSAvIDEyMDsKLSAgICAgICAgICAgICAgICB3aW5kb3ctPnB1c2hF
dmVudChldmVudCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICBjYXNlIFdNX0xCVVRUT05ET1dOOgotICAgICAgICAgIGNhc2UgV01fTEJVVFRPTkRC
TENMSzoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBFdmVudCBldmVudDsKLSAgICAg
ICAgICAgICAgICBldmVudC5UeXBlICAgICAgICAgICAgICAgPSBFdmVudDo6RVZFTlRfTU9VU0Vf
QlVUVE9OX1BSRVNTRUQ7Ci0gICAgICAgICAgICAgICAgZXZlbnQuTW91c2VCdXR0b24uQnV0dG9u
ID0gTU9VU0VCVVRUT05fTEVGVDsKLSAgICAgICAgICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5Y
ICAgICAgPSBzdGF0aWNfY2FzdDxzaG9ydD4oTE9XT1JEKGxQYXJhbSkpOwotICAgICAgICAgICAg
ICAgIGV2ZW50Lk1vdXNlQnV0dG9uLlkgICAgICA9IHN0YXRpY19jYXN0PHNob3J0PihISVdPUkQo
bFBhcmFtKSk7Ci0gICAgICAgICAgICAgICAgd2luZG93LT5wdXNoRXZlbnQoZXZlbnQpOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgY2FzZSBXTV9M
QlVUVE9OVVA6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgRXZlbnQgZXZlbnQ7Ci0g
ICAgICAgICAgICAgICAgZXZlbnQuVHlwZSAgICAgICAgICAgICAgID0gRXZlbnQ6OkVWRU5UX01P
VVNFX0JVVFRPTl9SRUxFQVNFRDsKLSAgICAgICAgICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5C
dXR0b24gPSBNT1VTRUJVVFRPTl9MRUZUOwotICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNlQnV0
dG9uLlggICAgICA9IHN0YXRpY19jYXN0PHNob3J0PihMT1dPUkQobFBhcmFtKSk7Ci0gICAgICAg
ICAgICAgICAgZXZlbnQuTW91c2VCdXR0b24uWSAgICAgID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KEhJ
V09SRChsUGFyYW0pKTsKLSAgICAgICAgICAgICAgICB3aW5kb3ctPnB1c2hFdmVudChldmVudCk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICBjYXNl
IFdNX1JCVVRUT05ET1dOOgotICAgICAgICAgIGNhc2UgV01fUkJVVFRPTkRCTENMSzoKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBFdmVudCBldmVudDsKLSAgICAgICAgICAgICAgICBl
dmVudC5UeXBlICAgICAgICAgICAgICAgPSBFdmVudDo6RVZFTlRfTU9VU0VfQlVUVE9OX1BSRVNT
RUQ7Ci0gICAgICAgICAgICAgICAgZXZlbnQuTW91c2VCdXR0b24uQnV0dG9uID0gTU9VU0VCVVRU
T05fUklHSFQ7Ci0gICAgICAgICAgICAgICAgZXZlbnQuTW91c2VCdXR0b24uWCAgICAgID0gc3Rh
dGljX2Nhc3Q8c2hvcnQ+KExPV09SRChsUGFyYW0pKTsKLSAgICAgICAgICAgICAgICBldmVudC5N
b3VzZUJ1dHRvbi5ZICAgICAgPSBzdGF0aWNfY2FzdDxzaG9ydD4oSElXT1JEKGxQYXJhbSkpOwot
ICAgICAgICAgICAgICAgIHdpbmRvdy0+cHVzaEV2ZW50KGV2ZW50KTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gTW91c2UgcmlnaHQgYnV0
dG9uIHVwIGV2ZW50Ci0gICAgICAgICAgY2FzZSBXTV9SQlVUVE9OVVA6Ci0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgRXZlbnQgZXZlbnQ7Ci0gICAgICAgICAgICAgICAgZXZlbnQuVHlw
ZSAgICAgICAgICAgICAgID0gRXZlbnQ6OkVWRU5UX01PVVNFX0JVVFRPTl9SRUxFQVNFRDsKLSAg
ICAgICAgICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5CdXR0b24gPSBNT1VTRUJVVFRPTl9SSUdI
VDsKLSAgICAgICAgICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5YICAgICAgPSBzdGF0aWNfY2Fz
dDxzaG9ydD4oTE9XT1JEKGxQYXJhbSkpOwotICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNlQnV0
dG9uLlkgICAgICA9IHN0YXRpY19jYXN0PHNob3J0PihISVdPUkQobFBhcmFtKSk7Ci0gICAgICAg
ICAgICAgICAgd2luZG93LT5wdXNoRXZlbnQoZXZlbnQpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBNb3VzZSB3aGVlbCBidXR0b24gZG93
biBldmVudAotICAgICAgICAgIGNhc2UgV01fTUJVVFRPTkRPV046Ci0gICAgICAgICAgY2FzZSBX
TV9NQlVUVE9OREJMQ0xLOgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEV2ZW50IGV2
ZW50OwotICAgICAgICAgICAgICAgIGV2ZW50LlR5cGUgICAgICAgICAgICAgICA9IEV2ZW50OjpF
VkVOVF9NT1VTRV9CVVRUT05fUFJFU1NFRDsKLSAgICAgICAgICAgICAgICBldmVudC5Nb3VzZUJ1
dHRvbi5CdXR0b24gPSBNT1VTRUJVVFRPTl9NSURETEU7Ci0gICAgICAgICAgICAgICAgZXZlbnQu
TW91c2VCdXR0b24uWCAgICAgID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KExPV09SRChsUGFyYW0pKTsK
LSAgICAgICAgICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5ZICAgICAgPSBzdGF0aWNfY2FzdDxz
aG9ydD4oSElXT1JEKGxQYXJhbSkpOwotICAgICAgICAgICAgICAgIHdpbmRvdy0+cHVzaEV2ZW50
KGV2ZW50KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgLy8gTW91c2Ugd2hlZWwgYnV0dG9uIHVwIGV2ZW50Ci0gICAgICAgICAgY2FzZSBXTV9N
QlVUVE9OVVA6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgRXZlbnQgZXZlbnQ7Ci0g
ICAgICAgICAgICAgICAgZXZlbnQuVHlwZSAgICAgICAgICAgICAgID0gRXZlbnQ6OkVWRU5UX01P
VVNFX0JVVFRPTl9SRUxFQVNFRDsKLSAgICAgICAgICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5C
dXR0b24gPSBNT1VTRUJVVFRPTl9NSURETEU7Ci0gICAgICAgICAgICAgICAgZXZlbnQuTW91c2VC
dXR0b24uWCAgICAgID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KExPV09SRChsUGFyYW0pKTsKLSAgICAg
ICAgICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5ZICAgICAgPSBzdGF0aWNfY2FzdDxzaG9ydD4o
SElXT1JEKGxQYXJhbSkpOwotICAgICAgICAgICAgICAgIHdpbmRvdy0+cHVzaEV2ZW50KGV2ZW50
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
Ly8gTW91c2UgWCBidXR0b24gZG93biBldmVudAotICAgICAgICAgIGNhc2UgV01fWEJVVFRPTkRP
V046Ci0gICAgICAgICAgY2FzZSBXTV9YQlVUVE9OREJMQ0xLOgotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIEV2ZW50IGV2ZW50OwotICAgICAgICAgICAgICAgIGV2ZW50LlR5cGUgICAg
ICAgICAgICAgICA9IEV2ZW50OjpFVkVOVF9NT1VTRV9CVVRUT05fUFJFU1NFRDsKLSAgICAgICAg
ICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5CdXR0b24gPSAoSElXT1JEKHdQYXJhbSkgPT0gWEJV
VFRPTjEpID8gTU9VU0VCVVRUT05fQlVUVE9ONCA6IE1PVVNFQlVUVE9OX0JVVFRPTjU7Ci0gICAg
ICAgICAgICAgICAgZXZlbnQuTW91c2VCdXR0b24uWCAgICAgID0gc3RhdGljX2Nhc3Q8c2hvcnQ+
KExPV09SRChsUGFyYW0pKTsKLSAgICAgICAgICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5ZICAg
ICAgPSBzdGF0aWNfY2FzdDxzaG9ydD4oSElXT1JEKGxQYXJhbSkpOwotICAgICAgICAgICAgICAg
IHdpbmRvdy0+cHVzaEV2ZW50KGV2ZW50KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgLy8gTW91c2UgWCBidXR0b24gdXAgZXZlbnQKLSAgICAg
ICAgICBjYXNlIFdNX1hCVVRUT05VUDoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBF
dmVudCBldmVudDsKLSAgICAgICAgICAgICAgICBldmVudC5UeXBlICAgICAgICAgICAgICAgPSBF
dmVudDo6RVZFTlRfTU9VU0VfQlVUVE9OX1JFTEVBU0VEOwotICAgICAgICAgICAgICAgIGV2ZW50
Lk1vdXNlQnV0dG9uLkJ1dHRvbiA9IChISVdPUkQod1BhcmFtKSA9PSBYQlVUVE9OMSkgPyBNT1VT
RUJVVFRPTl9CVVRUT040IDogTU9VU0VCVVRUT05fQlVUVE9ONTsKLSAgICAgICAgICAgICAgICBl
dmVudC5Nb3VzZUJ1dHRvbi5YICAgICAgPSBzdGF0aWNfY2FzdDxzaG9ydD4oTE9XT1JEKGxQYXJh
bSkpOwotICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNlQnV0dG9uLlkgICAgICA9IHN0YXRpY19j
YXN0PHNob3J0PihISVdPUkQobFBhcmFtKSk7Ci0gICAgICAgICAgICAgICAgd2luZG93LT5wdXNo
RXZlbnQoZXZlbnQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgY2FzZSBXTV9NT1VTRU1PVkU6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgaW50IG1vdXNlWCA9IHN0YXRpY19jYXN0PHNob3J0PihMT1dPUkQobFBhcmFtKSk7Ci0gICAg
ICAgICAgICAgICAgaW50IG1vdXNlWSA9IHN0YXRpY19jYXN0PHNob3J0PihISVdPUkQobFBhcmFt
KSk7Ci0KLSAgICAgICAgICAgICAgICBFdmVudCBldmVudDsKLSAgICAgICAgICAgICAgICBldmVu
dC5UeXBlICAgICAgICA9IEV2ZW50OjpFVkVOVF9NT1VTRV9NT1ZFRDsKLSAgICAgICAgICAgICAg
ICBldmVudC5Nb3VzZU1vdmUuWCA9IG1vdXNlWDsKLSAgICAgICAgICAgICAgICBldmVudC5Nb3Vz
ZU1vdmUuWSA9IG1vdXNlWTsKLSAgICAgICAgICAgICAgICB3aW5kb3ctPnB1c2hFdmVudChldmVu
dCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICBj
YXNlIFdNX01PVVNFTEVBVkU6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgRXZlbnQg
ZXZlbnQ7Ci0gICAgICAgICAgICAgICAgZXZlbnQuVHlwZSA9IEV2ZW50OjpFVkVOVF9NT1VTRV9M
RUZUOwotICAgICAgICAgICAgICAgIHdpbmRvdy0+cHVzaEV2ZW50KGV2ZW50KTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgIGNhc2UgV01fVVNFUjoK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBFdmVudCB0ZXN0RXZlbnQ7Ci0gICAgICAg
ICAgICAgICAgdGVzdEV2ZW50LlR5cGUgPSBFdmVudDo6RVZFTlRfVEVTVDsKLSAgICAgICAgICAg
ICAgICB3aW5kb3ctPnB1c2hFdmVudCh0ZXN0RXZlbnQpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICB9Ci0gICAgcmV0dXJuIERlZldpbmRv
d1Byb2NBKGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsKLX0KLQotV2luMzJXaW5kb3c6
OldpbjMyV2luZG93KCkKLSAgICA6IG1OYXRpdmVXaW5kb3coMCksCi0gICAgICBtUGFyZW50V2lu
ZG93KDApLAotICAgICAgbU5hdGl2ZURpc3BsYXkoMCkKLXsKLX0KLQotV2luMzJXaW5kb3c6On5X
aW4zMldpbmRvdygpCi17Ci0gICAgZGVzdHJveSgpOwotfQotCi1ib29sIFdpbjMyV2luZG93Ojpp
bml0aWFsaXplKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lLCBzaXplX3Qgd2lkdGgsIHNpemVfdCBo
ZWlnaHQpCi17Ci0gICAgZGVzdHJveSgpOwotCi0gICAgLy8gVXNlIGEgbmV3IHdpbmRvdyBjbGFz
cyBuYW1lIGZvciBldmVyIHdpbmRvdyB0byBlbnN1cmUgdGhhdCBhIG5ldyB3aW5kb3cgY2FuIGJl
IGNyZWF0ZWQKLSAgICAvLyBldmVuIGlmIHRoZSBsYXN0IG9uZSB3YXMgbm90IHByb3Blcmx5IGRl
c3Ryb3llZAotICAgIHN0YXRpYyBzaXplX3Qgd2luZG93SWR4ID0gMDsKLSAgICBzdGQ6Om9zdHJp
bmdzdHJlYW0gbmFtZVN0cmVhbTsKLSAgICBuYW1lU3RyZWFtIDw8IG5hbWUgPDwgIl8iIDw8IHdp
bmRvd0lkeCsrOwotCi0gICAgbVBhcmVudENsYXNzTmFtZSA9IG5hbWVTdHJlYW0uc3RyKCk7Ci0g
ICAgbUNoaWxkQ2xhc3NOYW1lID0gbVBhcmVudENsYXNzTmFtZSArICJfQ2hpbGQiOwotCi0gICAg
Ly8gV29yayBhcm91bmQgY29tcGlsZSBlcnJvciBmcm9tIG5vdCBkZWZpbmluZyAiVU5JQ09ERSIg
d2hpbGUgQ2hyb21pdW0gZG9lcwotICAgIGNvbnN0IExQU1RSIGlkY0Fycm93ID0gTUFLRUlOVFJF
U09VUkNFQSgzMjUxMik7Ci0KLSAgICBXTkRDTEFTU0VYQSBwYXJlbnRXaW5kb3dDbGFzcyA9IHsg
MCB9OwotICAgIHBhcmVudFdpbmRvd0NsYXNzLmNiU2l6ZSA9IHNpemVvZihXTkRDTEFTU0VYQSk7
Ci0gICAgcGFyZW50V2luZG93Q2xhc3Muc3R5bGUgPSAwOwotICAgIHBhcmVudFdpbmRvd0NsYXNz
LmxwZm5XbmRQcm9jID0gV25kUHJvYzsKLSAgICBwYXJlbnRXaW5kb3dDbGFzcy5jYkNsc0V4dHJh
ID0gMDsKLSAgICBwYXJlbnRXaW5kb3dDbGFzcy5jYlduZEV4dHJhID0gMDsKLSAgICBwYXJlbnRX
aW5kb3dDbGFzcy5oSW5zdGFuY2UgPSBHZXRNb2R1bGVIYW5kbGUoTlVMTCk7Ci0gICAgcGFyZW50
V2luZG93Q2xhc3MuaEljb24gPSBOVUxMOwotICAgIHBhcmVudFdpbmRvd0NsYXNzLmhDdXJzb3Ig
PSBMb2FkQ3Vyc29yQShOVUxMLCBpZGNBcnJvdyk7Ci0gICAgcGFyZW50V2luZG93Q2xhc3MuaGJy
QmFja2dyb3VuZCA9IDA7Ci0gICAgcGFyZW50V2luZG93Q2xhc3MubHBzek1lbnVOYW1lID0gTlVM
TDsKLSAgICBwYXJlbnRXaW5kb3dDbGFzcy5scHN6Q2xhc3NOYW1lID0gbVBhcmVudENsYXNzTmFt
ZS5jX3N0cigpOwotICAgIGlmICghUmVnaXN0ZXJDbGFzc0V4QSgmcGFyZW50V2luZG93Q2xhc3Mp
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIFdORENMQVNTRVhB
IGNoaWxkV2luZG93Q2xhc3MgPSB7IDAgfTsKLSAgICBjaGlsZFdpbmRvd0NsYXNzLmNiU2l6ZSA9
IHNpemVvZihXTkRDTEFTU0VYQSk7Ci0gICAgY2hpbGRXaW5kb3dDbGFzcy5zdHlsZSA9IENTX09X
TkRDOwotICAgIGNoaWxkV2luZG93Q2xhc3MubHBmblduZFByb2MgPSBXbmRQcm9jOwotICAgIGNo
aWxkV2luZG93Q2xhc3MuY2JDbHNFeHRyYSA9IDA7Ci0gICAgY2hpbGRXaW5kb3dDbGFzcy5jYldu
ZEV4dHJhID0gMDsKLSAgICBjaGlsZFdpbmRvd0NsYXNzLmhJbnN0YW5jZSA9IEdldE1vZHVsZUhh
bmRsZShOVUxMKTsKLSAgICBjaGlsZFdpbmRvd0NsYXNzLmhJY29uID0gTlVMTDsKLSAgICBjaGls
ZFdpbmRvd0NsYXNzLmhDdXJzb3IgPSBMb2FkQ3Vyc29yQShOVUxMLCBpZGNBcnJvdyk7Ci0gICAg
Y2hpbGRXaW5kb3dDbGFzcy5oYnJCYWNrZ3JvdW5kID0gMDsKLSAgICBjaGlsZFdpbmRvd0NsYXNz
Lmxwc3pNZW51TmFtZSA9IE5VTEw7Ci0gICAgY2hpbGRXaW5kb3dDbGFzcy5scHN6Q2xhc3NOYW1l
ID0gbUNoaWxkQ2xhc3NOYW1lLmNfc3RyKCk7Ci0gICAgaWYgKCFSZWdpc3RlckNsYXNzRXhBKCZj
aGlsZFdpbmRvd0NsYXNzKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0K
LSAgICBEV09SRCBwYXJlbnRTdHlsZSA9IFdTX0NBUFRJT04gfCBXU19USElDS0ZSQU1FIHwgV1Nf
TUlOSU1JWkVCT1ggfCBXU19NQVhJTUlaRUJPWCB8IFdTX1NZU01FTlU7Ci0gICAgRFdPUkQgcGFy
ZW50RXh0ZW5kZWRTdHlsZSA9IFdTX0VYX0FQUFdJTkRPVzsKLQotICAgIFJFQ1Qgc2l6ZVJlY3Qg
PSB7IDAsIDAsIHdpZHRoLCBoZWlnaHQgfTsKLSAgICBBZGp1c3RXaW5kb3dSZWN0RXgoJnNpemVS
ZWN0LCBwYXJlbnRTdHlsZSwgRkFMU0UsIHBhcmVudEV4dGVuZGVkU3R5bGUpOwotCi0gICAgbVBh
cmVudFdpbmRvdyA9IENyZWF0ZVdpbmRvd0V4QShwYXJlbnRFeHRlbmRlZFN0eWxlLCBtUGFyZW50
Q2xhc3NOYW1lLmNfc3RyKCksIG5hbWUuY19zdHIoKSwgcGFyZW50U3R5bGUsIENXX1VTRURFRkFV
TFQsIENXX1VTRURFRkFVTFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplUmVjdC5yaWdodCAtIHNpemVSZWN0LmxlZnQsIHNpemVSZWN0LmJvdHRvbSAtIHNpemVSZWN0
LnRvcCwgTlVMTCwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdl
dE1vZHVsZUhhbmRsZShOVUxMKSwgdGhpcyk7Ci0KLSAgICBtTmF0aXZlV2luZG93ID0gQ3JlYXRl
V2luZG93RXhBKDAsIG1DaGlsZENsYXNzTmFtZS5jX3N0cigpLCBuYW1lLmNfc3RyKCksIFdTX0NI
SUxELCAwLCAwLCB3aWR0aCwgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbVBhcmVudFdpbmRvdywgTlVMTCwgR2V0TW9kdWxlSGFuZGxlKE5VTEwpLCB0aGlzKTsK
LQotICAgIG1OYXRpdmVEaXNwbGF5ID0gR2V0REMobU5hdGl2ZVdpbmRvdyk7Ci0gICAgaWYgKCFt
TmF0aXZlRGlzcGxheSkKLSAgICB7Ci0gICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFdpbjMyV2luZG93
OjpkZXN0cm95KCkKLXsKLSAgICBpZiAobU5hdGl2ZURpc3BsYXkpCi0gICAgewotICAgICAgICBS
ZWxlYXNlREMobU5hdGl2ZVdpbmRvdywgbU5hdGl2ZURpc3BsYXkpOwotICAgICAgICBtTmF0aXZl
RGlzcGxheSA9IDA7Ci0gICAgfQotCi0gICAgaWYgKG1OYXRpdmVXaW5kb3cpCi0gICAgewotICAg
ICAgICBEZXN0cm95V2luZG93KG1OYXRpdmVXaW5kb3cpOwotICAgICAgICBtTmF0aXZlV2luZG93
ID0gMDsKLSAgICB9Ci0KLSAgICBpZiAobVBhcmVudFdpbmRvdykKLSAgICB7Ci0gICAgICAgIERl
c3Ryb3lXaW5kb3cobVBhcmVudFdpbmRvdyk7Ci0gICAgICAgIG1QYXJlbnRXaW5kb3cgPSAwOwot
ICAgIH0KLQotICAgIFVucmVnaXN0ZXJDbGFzc0EobVBhcmVudENsYXNzTmFtZS5jX3N0cigpLCBO
VUxMKTsKLSAgICBVbnJlZ2lzdGVyQ2xhc3NBKG1DaGlsZENsYXNzTmFtZS5jX3N0cigpLCBOVUxM
KTsKLX0KLQotRUdMTmF0aXZlV2luZG93VHlwZSBXaW4zMldpbmRvdzo6Z2V0TmF0aXZlV2luZG93
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbU5hdGl2ZVdpbmRvdzsKLX0KLQotRUdMTmF0aXZlRGlz
cGxheVR5cGUgV2luMzJXaW5kb3c6OmdldE5hdGl2ZURpc3BsYXkoKSBjb25zdAotewotICAgIHJl
dHVybiBtTmF0aXZlRGlzcGxheTsKLX0KLQotdm9pZCBXaW4zMldpbmRvdzo6bWVzc2FnZUxvb3Ao
KQotewotICAgIE1TRyBtc2c7Ci0gICAgd2hpbGUgKFBlZWtNZXNzYWdlKCZtc2csIE5VTEwsIDAs
IDAsIFBNX1JFTU9WRSkpCi0gICAgewotICAgICAgICBUcmFuc2xhdGVNZXNzYWdlKCZtc2cpOwot
ICAgICAgICBEaXNwYXRjaE1lc3NhZ2UoJm1zZyk7Ci0gICAgfQotfQotCi12b2lkIFdpbjMyV2lu
ZG93OjpzZXRNb3VzZVBvc2l0aW9uKGludCB4LCBpbnQgeSkKLXsKLSAgICBSRUNUIHdpblJlY3Q7
Ci0gICAgR2V0Q2xpZW50UmVjdChtTmF0aXZlV2luZG93LCAmd2luUmVjdCk7Ci0KLSAgICBQT0lO
VCB0b3BMZWZ0OwotICAgIHRvcExlZnQueCA9IHdpblJlY3QubGVmdDsKLSAgICB0b3BMZWZ0Lnkg
PSB3aW5SZWN0LnRvcDsKLSAgICBDbGllbnRUb1NjcmVlbihtTmF0aXZlV2luZG93LCAmdG9wTGVm
dCk7Ci0KLSAgICBTZXRDdXJzb3JQb3ModG9wTGVmdC54ICsgeCwgdG9wTGVmdC55ICsgeSk7Ci19
Ci0KLU9TV2luZG93ICpDcmVhdGVPU1dpbmRvdygpCi17Ci0gICAgcmV0dXJuIG5ldyBXaW4zMldp
bmRvdygpOwotfQotCi1ib29sIFdpbjMyV2luZG93OjpzZXRQb3NpdGlvbihpbnQgeCwgaW50IHkp
Ci17Ci0gICAgaWYgKG1YID09IHggJiYgbVkgPT0gbVkpCi0gICAgewotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0KLSAgICBSRUNUIHdpbmRvd1JlY3Q7Ci0gICAgaWYgKCFHZXRXaW5kb3dS
ZWN0KG1QYXJlbnRXaW5kb3csICZ3aW5kb3dSZWN0KSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoIU1vdmVXaW5kb3cobVBhcmVudFdpbmRvdywgeCwgeSwg
d2luZG93UmVjdC5yaWdodCAtIHdpbmRvd1JlY3QubGVmdCwgd2luZG93UmVjdC5ib3R0b20gLSB3
aW5kb3dSZWN0LnRvcCwgVFJVRSkpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgV2luMzJXaW5kb3c6OnJlc2l6ZShpbnQg
d2lkdGgsIGludCBoZWlnaHQpCi17Ci0gICAgaWYgKHdpZHRoID09IG1XaWR0aCAmJiBoZWlnaHQg
PT0gbUhlaWdodCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIFJF
Q1Qgd2luZG93UmVjdDsKLSAgICBpZiAoIUdldFdpbmRvd1JlY3QobVBhcmVudFdpbmRvdywgJndp
bmRvd1JlY3QpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIFJF
Q1QgY2xpZW50UmVjdDsKLSAgICBpZiAoIUdldENsaWVudFJlY3QobVBhcmVudFdpbmRvdywgJmNs
aWVudFJlY3QpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIExP
TkcgZGlmZlggPSAod2luZG93UmVjdC5yaWdodCAtIHdpbmRvd1JlY3QubGVmdCkgLSBjbGllbnRS
ZWN0LnJpZ2h0OwotICAgIExPTkcgZGlmZlkgPSAod2luZG93UmVjdC5ib3R0b20gLSB3aW5kb3dS
ZWN0LnRvcCkgLSBjbGllbnRSZWN0LmJvdHRvbTsKLSAgICBpZiAoIU1vdmVXaW5kb3cobVBhcmVu
dFdpbmRvdywgd2luZG93UmVjdC5sZWZ0LCB3aW5kb3dSZWN0LnRvcCwgd2lkdGggKyBkaWZmWCwg
aGVpZ2h0ICsgZGlmZlksIFRSVUUpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLQotICAgIGlmICghTW92ZVdpbmRvdyhtTmF0aXZlV2luZG93LCAwLCAwLCB3aWR0aCwgaGVp
Z2h0LCBGQUxTRSkpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgV2luMzJXaW5kb3c6OnNldFZpc2libGUoYm9vbCBpc1Zp
c2libGUpCi17Ci0gICAgaW50IGZsYWcgPSAoaXNWaXNpYmxlID8gU1dfU0hPVyA6IFNXX0hJREUp
OwotCi0gICAgU2hvd1dpbmRvdyhtUGFyZW50V2luZG93LCBmbGFnKTsKLSAgICBTaG93V2luZG93
KG1OYXRpdmVXaW5kb3csIGZsYWcpOwotfQotCi12b2lkIFdpbjMyV2luZG93OjpwdXNoRXZlbnQo
RXZlbnQgZXZlbnQpCi17Ci0gICAgT1NXaW5kb3c6OnB1c2hFdmVudChldmVudCk7Ci0KLSAgICBz
d2l0Y2ggKGV2ZW50LlR5cGUpCi0gICAgewotICAgICAgY2FzZSBFdmVudDo6RVZFTlRfUkVTSVpF
RDoKLSAgICAgICAgTW92ZVdpbmRvdyhtTmF0aXZlV2luZG93LCAwLCAwLCBtV2lkdGgsIG1IZWln
aHQsIEZBTFNFKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi12b2lkIFdpbjMyV2luZG93
OjpzaWduYWxUZXN0RXZlbnQoKQotewotICAgIFBvc3RNZXNzYWdlKG1OYXRpdmVXaW5kb3csIFdN
X1VTRVIsIDAsIDApOwotfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC93aW4z
Mi9XaW4zMldpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0
aWwvd2luMzIvV2luMzJXaW5kb3cuaAkocmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvdXRpbC93aW4zMi9XaW4zMldpbmRvdy5oCShub25leGlzdGVudCkKQEAgLTEs
NDYgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpZm5kZWYgU0FNUExFX1VUSUxfV0lOMzJfV0lO
RE9XX0gKLSNkZWZpbmUgU0FNUExFX1VUSUxfV0lOMzJfV0lORE9XX0gKLQotI2luY2x1ZGUgIk9T
V2luZG93LmgiCi0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLQotY2xh
c3MgV2luMzJXaW5kb3cgOiBwdWJsaWMgT1NXaW5kb3cKLXsKLSAgcHVibGljOgotICAgIFdpbjMy
V2luZG93KCk7Ci0gICAgfldpbjMyV2luZG93KCk7Ci0KLSAgICBib29sIGluaXRpYWxpemUoY29u
c3Qgc3RkOjpzdHJpbmcgJm5hbWUsIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkZXN0cm95KCkgb3ZlcnJpZGU7Ci0KLSAgICBFR0xOYXRpdmVXaW5kb3dU
eXBlIGdldE5hdGl2ZVdpbmRvdygpIGNvbnN0IG92ZXJyaWRlOwotICAgIEVHTE5hdGl2ZURpc3Bs
YXlUeXBlIGdldE5hdGl2ZURpc3BsYXkoKSBjb25zdCBvdmVycmlkZTsKLQotICAgIHZvaWQgbWVz
c2FnZUxvb3AoKSBvdmVycmlkZTsKLQotICAgIHZvaWQgcHVzaEV2ZW50KEV2ZW50IGV2ZW50KSBv
dmVycmlkZTsKLQotICAgIHZvaWQgc2V0TW91c2VQb3NpdGlvbihpbnQgeCwgaW50IHkpIG92ZXJy
aWRlOwotICAgIGJvb2wgc2V0UG9zaXRpb24oaW50IHgsIGludCB5KSBvdmVycmlkZTsKLSAgICBi
b29sIHJlc2l6ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0
VmlzaWJsZShib29sIGlzVmlzaWJsZSkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIHNpZ25hbFRlc3RF
dmVudCgpIG92ZXJyaWRlOwotCi0gIHByaXZhdGU6Ci0gICAgc3RkOjpzdHJpbmcgbVBhcmVudENs
YXNzTmFtZTsKLSAgICBzdGQ6OnN0cmluZyBtQ2hpbGRDbGFzc05hbWU7Ci0KLSAgICBFR0xOYXRp
dmVXaW5kb3dUeXBlIG1OYXRpdmVXaW5kb3c7Ci0gICAgRUdMTmF0aXZlV2luZG93VHlwZSBtUGFy
ZW50V2luZG93OwotICAgIEVHTE5hdGl2ZURpc3BsYXlUeXBlIG1OYXRpdmVEaXNwbGF5OwotfTsK
LQotI2VuZGlmIC8vIFNBTVBMRV9VVElMX1dJTkRPV19ICkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS91dGlsL3dpbjMyL1dpbjMyX3BhdGhfdXRpbHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvd2luMzIvV2luMzJfcGF0aF91dGlscy5jcHAJKHJl
dmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvd2luMzIvV2lu
MzJfcGF0aF91dGlscy5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMyArMCwwIEBACi0vLwotLy8g
Q29weXJpZ2h0IChjKSAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgotLy8KLQotI2luY2x1ZGUgInBhdGhfdXRpbHMuaCIKLSNpbmNsdWRlIDxhcnJheT4KLSNpbmNs
dWRlIDx3aW5kb3dzLmg+Ci0KLXN0ZDo6c3RyaW5nIEdldEV4ZWN1dGFibGVQYXRoKCkKLXsKLSAg
ICBzdGQ6OmFycmF5PGNoYXIsIE1BWF9QQVRIPiBleGVjdXRhYmxlRmlsZUJ1ZjsKLSAgICBEV09S
RCBleGVjdXRhYmxlUGF0aExlbiA9IEdldE1vZHVsZUZpbGVOYW1lQShOVUxMLCBleGVjdXRhYmxl
RmlsZUJ1Zi5kYXRhKCksIGV4ZWN1dGFibGVGaWxlQnVmLnNpemUoKSk7Ci0gICAgcmV0dXJuIChl
eGVjdXRhYmxlUGF0aExlbiA+IDAgPyBzdGQ6OnN0cmluZyhleGVjdXRhYmxlRmlsZUJ1Zi5kYXRh
KCkpIDogIiIpOwotfQotCi1zdGQ6OnN0cmluZyBHZXRFeGVjdXRhYmxlRGlyZWN0b3J5KCkKLXsK
LSAgICBzdGQ6OnN0cmluZyBleGVjdXRhYmxlUGF0aCA9IEdldEV4ZWN1dGFibGVQYXRoKCk7Ci0g
ICAgc2l6ZV90IGxhc3RQYXRoU2VwTG9jID0gZXhlY3V0YWJsZVBhdGguZmluZF9sYXN0X29mKCJc
XC8iKTsKLSAgICByZXR1cm4gKGxhc3RQYXRoU2VwTG9jICE9IHN0ZDo6c3RyaW5nOjpucG9zKSA/
IGV4ZWN1dGFibGVQYXRoLnN1YnN0cigwLCBsYXN0UGF0aFNlcExvYykgOiAiIjsKLX0KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvd2luZG93cy9XaW5kb3dzVGltZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvd2luZG93cy9XaW5kb3dz
VGltZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwv
d2luZG93cy9XaW5kb3dzVGltZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTcgQEAK
Ky8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworCisvLyBXaW5kb3dzVGltZXIuY3BwOiBJbXBsZW1lbnRhdGlvbiBvZiBh
IGhpZ2ggcHJlY2lzaW9uIHRpbWVyIGNsYXNzIG9uIFdpbmRvd3MKKworI2luY2x1ZGUgIndpbmRv
d3MvV2luZG93c1RpbWVyLmgiCisKK1dpbmRvd3NUaW1lcjo6V2luZG93c1RpbWVyKCkgOiBtUnVu
bmluZyhmYWxzZSksIG1TdGFydFRpbWUoMCksIG1TdG9wVGltZSgwKQoreworfQorCit2b2lkIFdp
bmRvd3NUaW1lcjo6c3RhcnQoKQoreworICAgIExBUkdFX0lOVEVHRVIgZnJlcXVlbmN5OworICAg
IFF1ZXJ5UGVyZm9ybWFuY2VGcmVxdWVuY3koJmZyZXF1ZW5jeSk7CisgICAgbUZyZXF1ZW5jeSA9
IGZyZXF1ZW5jeS5RdWFkUGFydDsKKworICAgIExBUkdFX0lOVEVHRVIgY3VyVGltZTsKKyAgICBR
dWVyeVBlcmZvcm1hbmNlQ291bnRlcigmY3VyVGltZSk7CisgICAgbVN0YXJ0VGltZSA9IGN1clRp
bWUuUXVhZFBhcnQ7CisKKyAgICBtUnVubmluZyA9IHRydWU7Cit9CisKK3ZvaWQgV2luZG93c1Rp
bWVyOjpzdG9wKCkKK3sKKyAgICBMQVJHRV9JTlRFR0VSIGN1clRpbWU7CisgICAgUXVlcnlQZXJm
b3JtYW5jZUNvdW50ZXIoJmN1clRpbWUpOworICAgIG1TdG9wVGltZSA9IGN1clRpbWUuUXVhZFBh
cnQ7CisKKyAgICBtUnVubmluZyA9IGZhbHNlOworfQorCitkb3VibGUgV2luZG93c1RpbWVyOjpn
ZXRFbGFwc2VkVGltZSgpIGNvbnN0Cit7CisgICAgTE9OR0xPTkcgZW5kVGltZTsKKyAgICBpZiAo
bVJ1bm5pbmcpCisgICAgeworICAgICAgICBMQVJHRV9JTlRFR0VSIGN1clRpbWU7CisgICAgICAg
IFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyKCZjdXJUaW1lKTsKKyAgICAgICAgZW5kVGltZSA9IGN1
clRpbWUuUXVhZFBhcnQ7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGVuZFRpbWUg
PSBtU3RvcFRpbWU7CisgICAgfQorCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oZW5k
VGltZSAtIG1TdGFydFRpbWUpIC8gbUZyZXF1ZW5jeTsKK30KKworVGltZXIgKkNyZWF0ZVRpbWVy
KCkKK3sKKyAgICByZXR1cm4gbmV3IFdpbmRvd3NUaW1lcigpOworfQpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvdXRpbC93aW5kb3dzL1dpbmRvd3NUaW1lci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvd2luZG93cy9XaW5kb3dzVGltZXIuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3dpbmRvd3MvV2luZG93
c1RpbWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMyBAQAorLy8KKy8vIENvcHlyaWdo
dCAoYykgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisK
Ky8vIFdpbmRvd3NUaW1lci5oOiBEZWZpbml0aW9uIG9mIGEgaGlnaCBwcmVjaXNpb24gdGltZXIg
Y2xhc3Mgb24gV2luZG93cworCisjaWZuZGVmIFVUSUxfV0lORE9XU19USU1FUl9ICisjZGVmaW5l
IFVUSUxfV0lORE9XU19USU1FUl9ICisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisKKyNpbmNsdWRl
ICJUaW1lci5oIgorCitjbGFzcyBXaW5kb3dzVGltZXIgOiBwdWJsaWMgVGltZXIKK3sKKyAgcHVi
bGljOgorICAgIFdpbmRvd3NUaW1lcigpOworCisgICAgdm9pZCBzdGFydCgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOworICAgIGRvdWJsZSBnZXRFbGFwc2VkVGltZSgpIGNv
bnN0IG92ZXJyaWRlOworCisgIHByaXZhdGU6CisgICAgYm9vbCBtUnVubmluZzsKKyAgICBMT05H
TE9ORyBtU3RhcnRUaW1lOworICAgIExPTkdMT05HIG1TdG9wVGltZTsKKworICAgIExPTkdMT05H
IG1GcmVxdWVuY3k7Cit9OworCisjZW5kaWYgIC8vIFVUSUxfV0lORE9XU19USU1FUl9ICkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3dpbmRvd3MvV2luZG93c19zeXN0ZW1fdXRp
bHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvd2luZG93
cy9XaW5kb3dzX3N5c3RlbV91dGlscy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvdXRpbC93aW5kb3dzL1dpbmRvd3Nfc3lzdGVtX3V0aWxzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDc2IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gV2luZG93c19zeXN0
ZW1fdXRpbHMuY3BwOiBJbXBsZW1lbnRhdGlvbiBvZiBPUy1zcGVjaWZpYyBmdW5jdGlvbnMgZm9y
IFdpbmRvd3MKKworI2luY2x1ZGUgInN5c3RlbV91dGlscy5oIgorCisjaW5jbHVkZSA8c3RkYXJn
Lmg+CisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPHZl
Y3Rvcj4KKworbmFtZXNwYWNlIGFuZ2xlCit7CisKK25hbWVzcGFjZQoreworCitzdGQ6OnN0cmlu
ZyBHZXRFeGVjdXRhYmxlUGF0aEltcGwoKQoreworICAgIHN0ZDo6YXJyYXk8Y2hhciwgTUFYX1BB
VEg+IGV4ZWN1dGFibGVGaWxlQnVmOworICAgIERXT1JEIGV4ZWN1dGFibGVQYXRoTGVuID0gR2V0
TW9kdWxlRmlsZU5hbWVBKE5VTEwsIGV4ZWN1dGFibGVGaWxlQnVmLmRhdGEoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxEV09S
RD4oZXhlY3V0YWJsZUZpbGVCdWYuc2l6ZSgpKSk7CisgICAgcmV0dXJuIChleGVjdXRhYmxlUGF0
aExlbiA+IDAgPyBzdGQ6OnN0cmluZyhleGVjdXRhYmxlRmlsZUJ1Zi5kYXRhKCkpIDogIiIpOwor
fQorCitzdGQ6OnN0cmluZyBHZXRFeGVjdXRhYmxlRGlyZWN0b3J5SW1wbCgpCit7CisgICAgc3Rk
OjpzdHJpbmcgZXhlY3V0YWJsZVBhdGggPSBHZXRFeGVjdXRhYmxlUGF0aCgpOworICAgIHNpemVf
dCBsYXN0UGF0aFNlcExvYyA9IGV4ZWN1dGFibGVQYXRoLmZpbmRfbGFzdF9vZigiXFwvIik7Cisg
ICAgcmV0dXJuIChsYXN0UGF0aFNlcExvYyAhPSBzdGQ6OnN0cmluZzo6bnBvcykgPyBleGVjdXRh
YmxlUGF0aC5zdWJzdHIoMCwgbGFzdFBhdGhTZXBMb2MpIDogIiI7Cit9CisKK30gIC8vIGFub255
bW91cyBuYW1lc3BhY2UKKworY29uc3QgY2hhciAqR2V0RXhlY3V0YWJsZVBhdGgoKQoreworICAg
IGNvbnN0IHN0YXRpYyBzdGQ6OnN0cmluZyAmZXhlUGF0aCA9IEdldEV4ZWN1dGFibGVQYXRoSW1w
bCgpOworICAgIHJldHVybiBleGVQYXRoLmNfc3RyKCk7Cit9CisKK2NvbnN0IGNoYXIgKkdldEV4
ZWN1dGFibGVEaXJlY3RvcnkoKQoreworICAgIGNvbnN0IHN0YXRpYyBzdGQ6OnN0cmluZyAmZXhl
RGlyID0gR2V0RXhlY3V0YWJsZURpcmVjdG9yeUltcGwoKTsKKyAgICByZXR1cm4gZXhlRGlyLmNf
c3RyKCk7Cit9CisKK2NvbnN0IGNoYXIgKkdldFNoYXJlZExpYnJhcnlFeHRlbnNpb24oKQorewor
ICAgIHJldHVybiAiZGxsIjsKK30KKwordm9pZCBTbGVlcCh1bnNpZ25lZCBpbnQgbWlsbGlzZWNv
bmRzKQoreworICAgIDo6U2xlZXAoc3RhdGljX2Nhc3Q8RFdPUkQ+KG1pbGxpc2Vjb25kcykpOwor
fQorCit2b2lkIFdyaXRlRGVidWdNZXNzYWdlKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQorewor
ICAgIHZhX2xpc3QgYXJnczsKKyAgICB2YV9zdGFydChhcmdzLCBmb3JtYXQpOworICAgIGludCBz
aXplID0gdnNucHJpbnRmKG51bGxwdHIsIDAsIGZvcm1hdCwgYXJncyk7CisgICAgdmFfZW5kKGFy
Z3MpOworCisgICAgc3RkOjp2ZWN0b3I8Y2hhcj4gYnVmZmVyKHNpemUgKyAyKTsKKyAgICB2YV9z
dGFydChhcmdzLCBmb3JtYXQpOworICAgIHZzbnByaW50ZihidWZmZXIuZGF0YSgpLCBzaXplICsg
MSwgZm9ybWF0LCBhcmdzKTsKKyAgICB2YV9lbmQoYXJncyk7CisKKyAgICBPdXRwdXREZWJ1Z1N0
cmluZ0EoYnVmZmVyLmRhdGEoKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmdsZQpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC93aW5kb3dzL3dpbjMyL1dpbjMyUGl4bWFwLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3dpbmRvd3Mvd2lu
MzIvV2luMzJQaXhtYXAuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3V0aWwvd2luZG93cy93aW4zMi9XaW4zMlBpeG1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw1OSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFdpbjMyUGl4bWFwLmNwcDogSW1wbGVt
ZW50YXRpb24gb2YgT1NQaXhtYXAgZm9yIFdpbjMyIChXaW5kb3dzKQorCisjaW5jbHVkZSAid2lu
ZG93cy93aW4zMi9XaW4zMlBpeG1hcC5oIgorCitXaW4zMlBpeG1hcDo6V2luMzJQaXhtYXAoKSA6
IG1CaXRtYXAobnVsbHB0cikKK3sKK30KKworV2luMzJQaXhtYXA6On5XaW4zMlBpeG1hcCgpCit7
CisgICAgaWYgKG1CaXRtYXApCisgICAgeworICAgICAgICBEZWxldGVPYmplY3QobUJpdG1hcCk7
CisgICAgfQorfQorCitib29sIFdpbjMyUGl4bWFwOjppbml0aWFsaXplKEVHTE5hdGl2ZURpc3Bs
YXlUeXBlIGRpc3BsYXksIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgaW50IGRlcHRoKQor
eworICAgIEJJVE1BUElORk8gYml0bWFwSW5mbzsKKyAgICBtZW1zZXQoJmJpdG1hcEluZm8sIDAs
IHNpemVvZihiaXRtYXBJbmZvKSk7CisKKyAgICBpZiAoZGVwdGggIT0gMjQgJiYgZGVwdGggIT0g
MzIpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgYml0bWFwSW5m
by5ibWlIZWFkZXIuYmlTaXplICAgICAgICAgID0gc2l6ZW9mKGJpdG1hcEluZm8pOworICAgIGJp
dG1hcEluZm8uYm1pSGVhZGVyLmJpV2lkdGggICAgICAgICA9IHN0YXRpY19jYXN0PExPTkc+KHdp
ZHRoKTsKKyAgICBiaXRtYXBJbmZvLmJtaUhlYWRlci5iaUhlaWdodCAgICAgICAgPSBzdGF0aWNf
Y2FzdDxMT05HPihoZWlnaHQpOworICAgIGJpdG1hcEluZm8uYm1pSGVhZGVyLmJpUGxhbmVzICAg
ICAgICA9IDE7CisgICAgYml0bWFwSW5mby5ibWlIZWFkZXIuYmlCaXRDb3VudCAgICAgID0gc3Rh
dGljX2Nhc3Q8V09SRD4oZGVwdGgpOworICAgIGJpdG1hcEluZm8uYm1pSGVhZGVyLmJpQ29tcHJl
c3Npb24gICA9IEJJX1JHQjsKKyAgICBiaXRtYXBJbmZvLmJtaUhlYWRlci5iaVNpemVJbWFnZSAg
ICAgPSAwOworICAgIGJpdG1hcEluZm8uYm1pSGVhZGVyLmJpWFBlbHNQZXJNZXRlciA9IDE7Cisg
ICAgYml0bWFwSW5mby5ibWlIZWFkZXIuYmlZUGVsc1Blck1ldGVyID0gMTsKKyAgICBiaXRtYXBJ
bmZvLmJtaUhlYWRlci5iaUNsclVzZWQgICAgICAgPSAwOworICAgIGJpdG1hcEluZm8uYm1pSGVh
ZGVyLmJpQ2xySW1wb3J0YW50ICA9IDA7CisKKyAgICB2b2lkICpiaXRtYXBQdHIgPSBudWxscHRy
OworICAgIG1CaXRtYXAgICAgICAgICA9IENyZWF0ZURJQlNlY3Rpb24oZGlzcGxheSwgJmJpdG1h
cEluZm8sIERJQl9SR0JfQ09MT1JTLCAmYml0bWFwUHRyLCBudWxscHRyLCAwKTsKKworICAgIHJl
dHVybiBtQml0bWFwICE9IG51bGxwdHI7Cit9CisKK0VHTE5hdGl2ZVBpeG1hcFR5cGUgV2luMzJQ
aXhtYXA6OmdldE5hdGl2ZVBpeG1hcCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1CaXRtYXA7Cit9
CisKK09TUGl4bWFwICpDcmVhdGVPU1BpeG1hcCgpCit7CisgICAgcmV0dXJuIG5ldyBXaW4zMlBp
eG1hcCgpOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC93aW5kb3dzL3dp
bjMyL1dpbjMyUGl4bWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
dXRpbC93aW5kb3dzL3dpbjMyL1dpbjMyUGl4bWFwLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvdXRpbC93aW5kb3dzL3dpbjMyL1dpbjMyUGl4bWFwLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwzMCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNSBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFdpbjMyUGl4bWFw
Lmg6IERlZmluaXRpb24gb2YgdGhlIGltcGxlbWVudGF0aW9uIG9mIE9TUGl4bWFwIGZvciBXaW4z
MiAoV2luZG93cykKKworI2lmbmRlZiBVVElMX1dJTjMyX1BJWE1BUF9IXworI2RlZmluZSBVVElM
X1dJTjMyX1BJWE1BUF9IXworCisjaW5jbHVkZSA8d2luZG93cy5oPgorCisjaW5jbHVkZSAiT1NQ
aXhtYXAuaCIKKworY2xhc3MgV2luMzJQaXhtYXAgOiBwdWJsaWMgT1NQaXhtYXAKK3sKKyAgcHVi
bGljOgorICAgIFdpbjMyUGl4bWFwKCk7CisgICAgfldpbjMyUGl4bWFwKCkgb3ZlcnJpZGU7CisK
KyAgICBib29sIGluaXRpYWxpemUoRUdMTmF0aXZlRGlzcGxheVR5cGUgZGlzcGxheSwgc2l6ZV90
IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBpbnQgZGVwdGgpIG92ZXJyaWRlOworCisgICAgRUdMTmF0
aXZlUGl4bWFwVHlwZSBnZXROYXRpdmVQaXhtYXAoKSBjb25zdCBvdmVycmlkZTsKKworICBwcml2
YXRlOgorICAgIEhCSVRNQVAgbUJpdG1hcDsKK307CisKKyNlbmRpZiAgLy8gVVRJTF9XSU4zMl9Q
SVhNQVBfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvd2luZG93cy93aW4z
Mi9XaW4zMldpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
dXRpbC93aW5kb3dzL3dpbjMyL1dpbjMyV2luZG93LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3dpbmRvd3Mvd2luMzIvV2luMzJXaW5kb3cuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODMxIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE0
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gV2luMzJX
aW5kb3cuY3BwOiBJbXBsZW1lbnRhdGlvbiBvZiBPU1dpbmRvdyBmb3IgV2luMzIgKFdpbmRvd3Mp
CisKKyNpbmNsdWRlICJ3aW5kb3dzL3dpbjMyL1dpbjMyV2luZG93LmgiCisKKyNpbmNsdWRlIDxz
c3RyZWFtPgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK0tleSBWaXJ0dWFsS2V5Q29k
ZVRvS2V5KFdQQVJBTSBrZXksIExQQVJBTSBmbGFncykKK3sKKyAgICBzd2l0Y2ggKGtleSkKKyAg
ICB7CisgICAgICAgIC8vIENoZWNrIHRoZSBzY2FuY29kZSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVu
IGxlZnQgYW5kIHJpZ2h0IHNoaWZ0CisgICAgICAgIGNhc2UgVktfU0hJRlQ6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgbFNoaWZ0ID0gTWFwVmlydHVhbEtleShW
S19MU0hJRlQsIE1BUFZLX1ZLX1RPX1ZTQyk7CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2Nh
bmNvZGUgICAgICA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oKGZsYWdzICYgKDB4RkYgPDwg
MTYpKSA+PiAxNik7CisgICAgICAgICAgICByZXR1cm4gc2NhbmNvZGUgPT0gbFNoaWZ0ID8gS0VZ
X0xTSElGVCA6IEtFWV9SU0hJRlQ7CisgICAgICAgIH0KKworICAgICAgICAvLyBDaGVjayB0aGUg
ImV4dGVuZGVkIiBmbGFnIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gbGVmdCBhbmQgcmlnaHQgYWx0
CisgICAgICAgIGNhc2UgVktfTUVOVToKKyAgICAgICAgICAgIHJldHVybiAoSElXT1JEKGZsYWdz
KSAmIEtGX0VYVEVOREVEKSA/IEtFWV9SQUxUIDogS0VZX0xBTFQ7CisKKyAgICAgICAgLy8gQ2hl
Y2sgdGhlICJleHRlbmRlZCIgZmxhZyB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIGxlZnQgYW5kIHJp
Z2h0IGNvbnRyb2wKKyAgICAgICAgY2FzZSBWS19DT05UUk9MOgorICAgICAgICAgICAgcmV0dXJu
IChISVdPUkQoZmxhZ3MpICYgS0ZfRVhURU5ERUQpID8gS0VZX1JDT05UUk9MIDogS0VZX0xDT05U
Uk9MOworCisgICAgICAgIC8vIE90aGVyIGtleXMgYXJlIHJlcG9ydGVkIHByb3Blcmx5CisgICAg
ICAgIGNhc2UgVktfTFdJTjoKKyAgICAgICAgICAgIHJldHVybiBLRVlfTFNZU1RFTTsKKyAgICAg
ICAgY2FzZSBWS19SV0lOOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9SU1lTVEVNOworICAgICAg
ICBjYXNlIFZLX0FQUFM6CisgICAgICAgICAgICByZXR1cm4gS0VZX01FTlU7CisgICAgICAgIGNh
c2UgVktfT0VNXzE6CisgICAgICAgICAgICByZXR1cm4gS0VZX1NFTUlDT0xPTjsKKyAgICAgICAg
Y2FzZSBWS19PRU1fMjoKKyAgICAgICAgICAgIHJldHVybiBLRVlfU0xBU0g7CisgICAgICAgIGNh
c2UgVktfT0VNX1BMVVM6CisgICAgICAgICAgICByZXR1cm4gS0VZX0VRVUFMOworICAgICAgICBj
YXNlIFZLX09FTV9NSU5VUzoKKyAgICAgICAgICAgIHJldHVybiBLRVlfREFTSDsKKyAgICAgICAg
Y2FzZSBWS19PRU1fNDoKKyAgICAgICAgICAgIHJldHVybiBLRVlfTEJSQUNLRVQ7CisgICAgICAg
IGNhc2UgVktfT0VNXzY6CisgICAgICAgICAgICByZXR1cm4gS0VZX1JCUkFDS0VUOworICAgICAg
ICBjYXNlIFZLX09FTV9DT01NQToKKyAgICAgICAgICAgIHJldHVybiBLRVlfQ09NTUE7CisgICAg
ICAgIGNhc2UgVktfT0VNX1BFUklPRDoKKyAgICAgICAgICAgIHJldHVybiBLRVlfUEVSSU9EOwor
ICAgICAgICBjYXNlIFZLX09FTV83OgorICAgICAgICAgICAgcmV0dXJuIEtFWV9RVU9URTsKKyAg
ICAgICAgY2FzZSBWS19PRU1fNToKKyAgICAgICAgICAgIHJldHVybiBLRVlfQkFDS1NMQVNIOwor
ICAgICAgICBjYXNlIFZLX09FTV8zOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9USUxERTsKKyAg
ICAgICAgY2FzZSBWS19FU0NBUEU6CisgICAgICAgICAgICByZXR1cm4gS0VZX0VTQ0FQRTsKKyAg
ICAgICAgY2FzZSBWS19TUEFDRToKKyAgICAgICAgICAgIHJldHVybiBLRVlfU1BBQ0U7CisgICAg
ICAgIGNhc2UgVktfUkVUVVJOOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9SRVRVUk47CisgICAg
ICAgIGNhc2UgVktfQkFDSzoKKyAgICAgICAgICAgIHJldHVybiBLRVlfQkFDSzsKKyAgICAgICAg
Y2FzZSBWS19UQUI6CisgICAgICAgICAgICByZXR1cm4gS0VZX1RBQjsKKyAgICAgICAgY2FzZSBW
S19QUklPUjoKKyAgICAgICAgICAgIHJldHVybiBLRVlfUEFHRVVQOworICAgICAgICBjYXNlIFZL
X05FWFQ6CisgICAgICAgICAgICByZXR1cm4gS0VZX1BBR0VET1dOOworICAgICAgICBjYXNlIFZL
X0VORDoKKyAgICAgICAgICAgIHJldHVybiBLRVlfRU5EOworICAgICAgICBjYXNlIFZLX0hPTUU6
CisgICAgICAgICAgICByZXR1cm4gS0VZX0hPTUU7CisgICAgICAgIGNhc2UgVktfSU5TRVJUOgor
ICAgICAgICAgICAgcmV0dXJuIEtFWV9JTlNFUlQ7CisgICAgICAgIGNhc2UgVktfREVMRVRFOgor
ICAgICAgICAgICAgcmV0dXJuIEtFWV9ERUxFVEU7CisgICAgICAgIGNhc2UgVktfQUREOgorICAg
ICAgICAgICAgcmV0dXJuIEtFWV9BREQ7CisgICAgICAgIGNhc2UgVktfU1VCVFJBQ1Q6CisgICAg
ICAgICAgICByZXR1cm4gS0VZX1NVQlRSQUNUOworICAgICAgICBjYXNlIFZLX01VTFRJUExZOgor
ICAgICAgICAgICAgcmV0dXJuIEtFWV9NVUxUSVBMWTsKKyAgICAgICAgY2FzZSBWS19ESVZJREU6
CisgICAgICAgICAgICByZXR1cm4gS0VZX0RJVklERTsKKyAgICAgICAgY2FzZSBWS19QQVVTRToK
KyAgICAgICAgICAgIHJldHVybiBLRVlfUEFVU0U7CisgICAgICAgIGNhc2UgVktfRjE6CisgICAg
ICAgICAgICByZXR1cm4gS0VZX0YxOworICAgICAgICBjYXNlIFZLX0YyOgorICAgICAgICAgICAg
cmV0dXJuIEtFWV9GMjsKKyAgICAgICAgY2FzZSBWS19GMzoKKyAgICAgICAgICAgIHJldHVybiBL
RVlfRjM7CisgICAgICAgIGNhc2UgVktfRjQ6CisgICAgICAgICAgICByZXR1cm4gS0VZX0Y0Owor
ICAgICAgICBjYXNlIFZLX0Y1OgorICAgICAgICAgICAgcmV0dXJuIEtFWV9GNTsKKyAgICAgICAg
Y2FzZSBWS19GNjoKKyAgICAgICAgICAgIHJldHVybiBLRVlfRjY7CisgICAgICAgIGNhc2UgVktf
Rjc6CisgICAgICAgICAgICByZXR1cm4gS0VZX0Y3OworICAgICAgICBjYXNlIFZLX0Y4OgorICAg
ICAgICAgICAgcmV0dXJuIEtFWV9GODsKKyAgICAgICAgY2FzZSBWS19GOToKKyAgICAgICAgICAg
IHJldHVybiBLRVlfRjk7CisgICAgICAgIGNhc2UgVktfRjEwOgorICAgICAgICAgICAgcmV0dXJu
IEtFWV9GMTA7CisgICAgICAgIGNhc2UgVktfRjExOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9G
MTE7CisgICAgICAgIGNhc2UgVktfRjEyOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9GMTI7Cisg
ICAgICAgIGNhc2UgVktfRjEzOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9GMTM7CisgICAgICAg
IGNhc2UgVktfRjE0OgorICAgICAgICAgICAgcmV0dXJuIEtFWV9GMTQ7CisgICAgICAgIGNhc2Ug
VktfRjE1OgorICAgICAgICAgICAgcmV0dXJuIEtFWV9GMTU7CisgICAgICAgIGNhc2UgVktfTEVG
VDoKKyAgICAgICAgICAgIHJldHVybiBLRVlfTEVGVDsKKyAgICAgICAgY2FzZSBWS19SSUdIVDoK
KyAgICAgICAgICAgIHJldHVybiBLRVlfUklHSFQ7CisgICAgICAgIGNhc2UgVktfVVA6CisgICAg
ICAgICAgICByZXR1cm4gS0VZX1VQOworICAgICAgICBjYXNlIFZLX0RPV046CisgICAgICAgICAg
ICByZXR1cm4gS0VZX0RPV047CisgICAgICAgIGNhc2UgVktfTlVNUEFEMDoKKyAgICAgICAgICAg
IHJldHVybiBLRVlfTlVNUEFEMDsKKyAgICAgICAgY2FzZSBWS19OVU1QQUQxOgorICAgICAgICAg
ICAgcmV0dXJuIEtFWV9OVU1QQUQxOworICAgICAgICBjYXNlIFZLX05VTVBBRDI6CisgICAgICAg
ICAgICByZXR1cm4gS0VZX05VTVBBRDI7CisgICAgICAgIGNhc2UgVktfTlVNUEFEMzoKKyAgICAg
ICAgICAgIHJldHVybiBLRVlfTlVNUEFEMzsKKyAgICAgICAgY2FzZSBWS19OVU1QQUQ0OgorICAg
ICAgICAgICAgcmV0dXJuIEtFWV9OVU1QQUQ0OworICAgICAgICBjYXNlIFZLX05VTVBBRDU6Cisg
ICAgICAgICAgICByZXR1cm4gS0VZX05VTVBBRDU7CisgICAgICAgIGNhc2UgVktfTlVNUEFENjoK
KyAgICAgICAgICAgIHJldHVybiBLRVlfTlVNUEFENjsKKyAgICAgICAgY2FzZSBWS19OVU1QQUQ3
OgorICAgICAgICAgICAgcmV0dXJuIEtFWV9OVU1QQUQ3OworICAgICAgICBjYXNlIFZLX05VTVBB
RDg6CisgICAgICAgICAgICByZXR1cm4gS0VZX05VTVBBRDg7CisgICAgICAgIGNhc2UgVktfTlVN
UEFEOToKKyAgICAgICAgICAgIHJldHVybiBLRVlfTlVNUEFEOTsKKyAgICAgICAgY2FzZSAnQSc6
CisgICAgICAgICAgICByZXR1cm4gS0VZX0E7CisgICAgICAgIGNhc2UgJ1onOgorICAgICAgICAg
ICAgcmV0dXJuIEtFWV9aOworICAgICAgICBjYXNlICdFJzoKKyAgICAgICAgICAgIHJldHVybiBL
RVlfRTsKKyAgICAgICAgY2FzZSAnUic6CisgICAgICAgICAgICByZXR1cm4gS0VZX1I7CisgICAg
ICAgIGNhc2UgJ1QnOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9UOworICAgICAgICBjYXNlICdZ
JzoKKyAgICAgICAgICAgIHJldHVybiBLRVlfWTsKKyAgICAgICAgY2FzZSAnVSc6CisgICAgICAg
ICAgICByZXR1cm4gS0VZX1U7CisgICAgICAgIGNhc2UgJ0knOgorICAgICAgICAgICAgcmV0dXJu
IEtFWV9JOworICAgICAgICBjYXNlICdPJzoKKyAgICAgICAgICAgIHJldHVybiBLRVlfTzsKKyAg
ICAgICAgY2FzZSAnUCc6CisgICAgICAgICAgICByZXR1cm4gS0VZX1A7CisgICAgICAgIGNhc2Ug
J1EnOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9ROworICAgICAgICBjYXNlICdTJzoKKyAgICAg
ICAgICAgIHJldHVybiBLRVlfUzsKKyAgICAgICAgY2FzZSAnRCc6CisgICAgICAgICAgICByZXR1
cm4gS0VZX0Q7CisgICAgICAgIGNhc2UgJ0YnOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9GOwor
ICAgICAgICBjYXNlICdHJzoKKyAgICAgICAgICAgIHJldHVybiBLRVlfRzsKKyAgICAgICAgY2Fz
ZSAnSCc6CisgICAgICAgICAgICByZXR1cm4gS0VZX0g7CisgICAgICAgIGNhc2UgJ0onOgorICAg
ICAgICAgICAgcmV0dXJuIEtFWV9KOworICAgICAgICBjYXNlICdLJzoKKyAgICAgICAgICAgIHJl
dHVybiBLRVlfSzsKKyAgICAgICAgY2FzZSAnTCc6CisgICAgICAgICAgICByZXR1cm4gS0VZX0w7
CisgICAgICAgIGNhc2UgJ00nOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9NOworICAgICAgICBj
YXNlICdXJzoKKyAgICAgICAgICAgIHJldHVybiBLRVlfVzsKKyAgICAgICAgY2FzZSAnWCc6Cisg
ICAgICAgICAgICByZXR1cm4gS0VZX1g7CisgICAgICAgIGNhc2UgJ0MnOgorICAgICAgICAgICAg
cmV0dXJuIEtFWV9DOworICAgICAgICBjYXNlICdWJzoKKyAgICAgICAgICAgIHJldHVybiBLRVlf
VjsKKyAgICAgICAgY2FzZSAnQic6CisgICAgICAgICAgICByZXR1cm4gS0VZX0I7CisgICAgICAg
IGNhc2UgJ04nOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9OOworICAgICAgICBjYXNlICcwJzoK
KyAgICAgICAgICAgIHJldHVybiBLRVlfTlVNMDsKKyAgICAgICAgY2FzZSAnMSc6CisgICAgICAg
ICAgICByZXR1cm4gS0VZX05VTTE7CisgICAgICAgIGNhc2UgJzInOgorICAgICAgICAgICAgcmV0
dXJuIEtFWV9OVU0yOworICAgICAgICBjYXNlICczJzoKKyAgICAgICAgICAgIHJldHVybiBLRVlf
TlVNMzsKKyAgICAgICAgY2FzZSAnNCc6CisgICAgICAgICAgICByZXR1cm4gS0VZX05VTTQ7Cisg
ICAgICAgIGNhc2UgJzUnOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9OVU01OworICAgICAgICBj
YXNlICc2JzoKKyAgICAgICAgICAgIHJldHVybiBLRVlfTlVNNjsKKyAgICAgICAgY2FzZSAnNyc6
CisgICAgICAgICAgICByZXR1cm4gS0VZX05VTTc7CisgICAgICAgIGNhc2UgJzgnOgorICAgICAg
ICAgICAgcmV0dXJuIEtFWV9OVU04OworICAgICAgICBjYXNlICc5JzoKKyAgICAgICAgICAgIHJl
dHVybiBLRVlfTlVNOTsKKyAgICB9CisKKyAgICByZXR1cm4gS2V5KDApOworfQorCitMUkVTVUxU
IENBTExCQUNLIFdpbjMyV2luZG93OjpXbmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBX
UEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQoreworICAgIHN3aXRjaCAobWVzc2FnZSkKKyAg
ICB7CisgICAgICAgIGNhc2UgV01fTkNDUkVBVEU6CisgICAgICAgIHsKKyAgICAgICAgICAgIExQ
Q1JFQVRFU1RSVUNUIHBDcmVhdGVTdHJ1Y3QgPSByZWludGVycHJldF9jYXN0PExQQ1JFQVRFU1RS
VUNUPihsUGFyYW0pOworICAgICAgICAgICAgU2V0V2luZG93TG9uZ1B0cihoV25kLCBHV0xQX1VT
RVJEQVRBLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PExP
TkdfUFRSPihwQ3JlYXRlU3RydWN0LT5scENyZWF0ZVBhcmFtcykpOworICAgICAgICAgICAgcmV0
dXJuIERlZldpbmRvd1Byb2NBKGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIFdpbjMyV2luZG93ICp3aW5kb3cgPSByZWludGVycHJldF9jYXN0
PFdpbjMyV2luZG93ICo+KEdldFdpbmRvd0xvbmdQdHIoaFduZCwgR1dMUF9VU0VSREFUQSkpOwor
ICAgIGlmICh3aW5kb3cpCisgICAgeworICAgICAgICBzd2l0Y2ggKG1lc3NhZ2UpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGNhc2UgV01fREVTVFJPWToKKyAgICAgICAgICAgIGNhc2UgV01fQ0xP
U0U6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRXZlbnQgZXZlbnQ7CisgICAgICAg
ICAgICAgICAgZXZlbnQuVHlwZSA9IEV2ZW50OjpFVkVOVF9DTE9TRUQ7CisgICAgICAgICAgICAg
ICAgd2luZG93LT5wdXNoRXZlbnQoZXZlbnQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlIFdNX01PVkU6CisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgUkVDVCB3aW5SZWN0OworICAgICAgICAgICAgICAgIEdldENsaWVudFJl
Y3QoaFduZCwgJndpblJlY3QpOworCisgICAgICAgICAgICAgICAgUE9JTlQgdG9wTGVmdDsKKyAg
ICAgICAgICAgICAgICB0b3BMZWZ0LnggPSB3aW5SZWN0LmxlZnQ7CisgICAgICAgICAgICAgICAg
dG9wTGVmdC55ID0gd2luUmVjdC50b3A7CisgICAgICAgICAgICAgICAgQ2xpZW50VG9TY3JlZW4o
aFduZCwgJnRvcExlZnQpOworCisgICAgICAgICAgICAgICAgRXZlbnQgZXZlbnQ7CisgICAgICAg
ICAgICAgICAgZXZlbnQuVHlwZSAgID0gRXZlbnQ6OkVWRU5UX01PVkVEOworICAgICAgICAgICAg
ICAgIGV2ZW50Lk1vdmUuWCA9IHRvcExlZnQueDsKKyAgICAgICAgICAgICAgICBldmVudC5Nb3Zl
LlkgPSB0b3BMZWZ0Lnk7CisgICAgICAgICAgICAgICAgd2luZG93LT5wdXNoRXZlbnQoZXZlbnQp
OworCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGNhc2UgV01fU0laRToKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBSRUNUIHdpblJl
Y3Q7CisgICAgICAgICAgICAgICAgR2V0Q2xpZW50UmVjdChoV25kLCAmd2luUmVjdCk7CisKKyAg
ICAgICAgICAgICAgICBQT0lOVCB0b3BMZWZ0OworICAgICAgICAgICAgICAgIHRvcExlZnQueCA9
IHdpblJlY3QubGVmdDsKKyAgICAgICAgICAgICAgICB0b3BMZWZ0LnkgPSB3aW5SZWN0LnRvcDsK
KyAgICAgICAgICAgICAgICBDbGllbnRUb1NjcmVlbihoV25kLCAmdG9wTGVmdCk7CisKKyAgICAg
ICAgICAgICAgICBQT0lOVCBib3RSaWdodDsKKyAgICAgICAgICAgICAgICBib3RSaWdodC54ID0g
d2luUmVjdC5yaWdodDsKKyAgICAgICAgICAgICAgICBib3RSaWdodC55ID0gd2luUmVjdC5ib3R0
b207CisgICAgICAgICAgICAgICAgQ2xpZW50VG9TY3JlZW4oaFduZCwgJmJvdFJpZ2h0KTsKKwor
ICAgICAgICAgICAgICAgIEV2ZW50IGV2ZW50OworICAgICAgICAgICAgICAgIGV2ZW50LlR5cGUg
ICAgICAgID0gRXZlbnQ6OkVWRU5UX1JFU0laRUQ7CisgICAgICAgICAgICAgICAgZXZlbnQuU2l6
ZS5XaWR0aCAgPSBib3RSaWdodC54IC0gdG9wTGVmdC54OworICAgICAgICAgICAgICAgIGV2ZW50
LlNpemUuSGVpZ2h0ID0gYm90UmlnaHQueSAtIHRvcExlZnQueTsKKyAgICAgICAgICAgICAgICB3
aW5kb3ctPnB1c2hFdmVudChldmVudCk7CisKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSBXTV9TRVRGT0NVUzoKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBFdmVudCBldmVudDsKKyAgICAgICAgICAgICAgICBldmVudC5UeXBl
ID0gRXZlbnQ6OkVWRU5UX0dBSU5FRF9GT0NVUzsKKyAgICAgICAgICAgICAgICB3aW5kb3ctPnB1
c2hFdmVudChldmVudCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGNhc2UgV01fS0lMTEZPQ1VTOgorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIEV2ZW50IGV2ZW50OworICAgICAgICAgICAgICAgIGV2ZW50LlR5cGUgPSBFdmVudDo6
RVZFTlRfTE9TVF9GT0NVUzsKKyAgICAgICAgICAgICAgICB3aW5kb3ctPnB1c2hFdmVudChldmVu
dCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGNhc2UgV01fS0VZRE9XTjoKKyAgICAgICAgICAgIGNhc2UgV01fU1lTS0VZRE9XTjoKKyAgICAg
ICAgICAgIGNhc2UgV01fS0VZVVA6CisgICAgICAgICAgICBjYXNlIFdNX1NZU0tFWVVQOgorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGJvb2wgZG93biA9IChtZXNzYWdlID09IFdNX0tF
WURPV04gfHwgbWVzc2FnZSA9PSBXTV9TWVNLRVlET1dOKTsKKworICAgICAgICAgICAgICAgIEV2
ZW50IGV2ZW50OworICAgICAgICAgICAgICAgIGV2ZW50LlR5cGUgICAgICAgID0gZG93biA/IEV2
ZW50OjpFVkVOVF9LRVlfUFJFU1NFRCA6IEV2ZW50OjpFVkVOVF9LRVlfUkVMRUFTRUQ7CisgICAg
ICAgICAgICAgICAgZXZlbnQuS2V5LkFsdCAgICAgPSBISVdPUkQoR2V0QXN5bmNLZXlTdGF0ZShW
S19NRU5VKSkgIT0gMDsKKyAgICAgICAgICAgICAgICBldmVudC5LZXkuQ29udHJvbCA9IEhJV09S
RChHZXRBc3luY0tleVN0YXRlKFZLX0NPTlRST0wpKSAhPSAwOworICAgICAgICAgICAgICAgIGV2
ZW50LktleS5TaGlmdCA9IEhJV09SRChHZXRBc3luY0tleVN0YXRlKFZLX1NISUZUKSkgIT0gMDsK
KyAgICAgICAgICAgICAgICBldmVudC5LZXkuU3lzdGVtID0KKyAgICAgICAgICAgICAgICAgICAg
SElXT1JEKEdldEFzeW5jS2V5U3RhdGUoVktfTFdJTikpIHx8IEhJV09SRChHZXRBc3luY0tleVN0
YXRlKFZLX1JXSU4pKTsKKyAgICAgICAgICAgICAgICBldmVudC5LZXkuQ29kZSA9IFZpcnR1YWxL
ZXlDb2RlVG9LZXkod1BhcmFtLCBsUGFyYW0pOworICAgICAgICAgICAgICAgIHdpbmRvdy0+cHVz
aEV2ZW50KGV2ZW50KTsKKworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBjYXNlIFdNX01PVVNFV0hFRUw6CisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgRXZlbnQgZXZlbnQ7CisgICAgICAgICAgICAgICAgZXZlbnQuVHlwZSAgICAgICAg
ICAgICA9IEV2ZW50OjpFVkVOVF9NT1VTRV9XSEVFTF9NT1ZFRDsKKyAgICAgICAgICAgICAgICBl
dmVudC5Nb3VzZVdoZWVsLkRlbHRhID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KEhJV09SRCh3UGFyYW0p
KSAvIDEyMDsKKyAgICAgICAgICAgICAgICB3aW5kb3ctPnB1c2hFdmVudChldmVudCk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgV01f
TEJVVFRPTkRPV046CisgICAgICAgICAgICBjYXNlIFdNX0xCVVRUT05EQkxDTEs6CisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgRXZlbnQgZXZlbnQ7CisgICAgICAgICAgICAgICAgZXZl
bnQuVHlwZSAgICAgICAgICAgICAgID0gRXZlbnQ6OkVWRU5UX01PVVNFX0JVVFRPTl9QUkVTU0VE
OworICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNlQnV0dG9uLkJ1dHRvbiA9IE1PVVNFQlVUVE9O
X0xFRlQ7CisgICAgICAgICAgICAgICAgZXZlbnQuTW91c2VCdXR0b24uWCAgICAgID0gc3RhdGlj
X2Nhc3Q8c2hvcnQ+KExPV09SRChsUGFyYW0pKTsKKyAgICAgICAgICAgICAgICBldmVudC5Nb3Vz
ZUJ1dHRvbi5ZID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KEhJV09SRChsUGFyYW0pKTsKKyAgICAgICAg
ICAgICAgICB3aW5kb3ctPnB1c2hFdmVudChldmVudCk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgV01fTEJVVFRPTlVQOgorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIEV2ZW50IGV2ZW50OworICAgICAgICAgICAgICAgIGV2
ZW50LlR5cGUgICAgICAgICAgICAgICA9IEV2ZW50OjpFVkVOVF9NT1VTRV9CVVRUT05fUkVMRUFT
RUQ7CisgICAgICAgICAgICAgICAgZXZlbnQuTW91c2VCdXR0b24uQnV0dG9uID0gTU9VU0VCVVRU
T05fTEVGVDsKKyAgICAgICAgICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5YICAgICAgPSBzdGF0
aWNfY2FzdDxzaG9ydD4oTE9XT1JEKGxQYXJhbSkpOworICAgICAgICAgICAgICAgIGV2ZW50Lk1v
dXNlQnV0dG9uLlkgPSBzdGF0aWNfY2FzdDxzaG9ydD4oSElXT1JEKGxQYXJhbSkpOworICAgICAg
ICAgICAgICAgIHdpbmRvdy0+cHVzaEV2ZW50KGV2ZW50KTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSBXTV9SQlVUVE9ORE9XTjoKKyAg
ICAgICAgICAgIGNhc2UgV01fUkJVVFRPTkRCTENMSzoKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBFdmVudCBldmVudDsKKyAgICAgICAgICAgICAgICBldmVudC5UeXBlICAgICAgICAg
ICAgICAgPSBFdmVudDo6RVZFTlRfTU9VU0VfQlVUVE9OX1BSRVNTRUQ7CisgICAgICAgICAgICAg
ICAgZXZlbnQuTW91c2VCdXR0b24uQnV0dG9uID0gTU9VU0VCVVRUT05fUklHSFQ7CisgICAgICAg
ICAgICAgICAgZXZlbnQuTW91c2VCdXR0b24uWCAgICAgID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KExP
V09SRChsUGFyYW0pKTsKKyAgICAgICAgICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5ZID0gc3Rh
dGljX2Nhc3Q8c2hvcnQ+KEhJV09SRChsUGFyYW0pKTsKKyAgICAgICAgICAgICAgICB3aW5kb3ct
PnB1c2hFdmVudChldmVudCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIE1vdXNlIHJpZ2h0IGJ1dHRvbiB1cCBldmVudAorICAgICAgICAg
ICAgY2FzZSBXTV9SQlVUVE9OVVA6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRXZl
bnQgZXZlbnQ7CisgICAgICAgICAgICAgICAgZXZlbnQuVHlwZSAgICAgICAgICAgICAgID0gRXZl
bnQ6OkVWRU5UX01PVVNFX0JVVFRPTl9SRUxFQVNFRDsKKyAgICAgICAgICAgICAgICBldmVudC5N
b3VzZUJ1dHRvbi5CdXR0b24gPSBNT1VTRUJVVFRPTl9SSUdIVDsKKyAgICAgICAgICAgICAgICBl
dmVudC5Nb3VzZUJ1dHRvbi5YICAgICAgPSBzdGF0aWNfY2FzdDxzaG9ydD4oTE9XT1JEKGxQYXJh
bSkpOworICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNlQnV0dG9uLlkgPSBzdGF0aWNfY2FzdDxz
aG9ydD4oSElXT1JEKGxQYXJhbSkpOworICAgICAgICAgICAgICAgIHdpbmRvdy0+cHVzaEV2ZW50
KGV2ZW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gTW91c2Ugd2hlZWwgYnV0dG9uIGRvd24gZXZlbnQKKyAgICAgICAgICAgIGNhc2Ug
V01fTUJVVFRPTkRPV046CisgICAgICAgICAgICBjYXNlIFdNX01CVVRUT05EQkxDTEs6CisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgRXZlbnQgZXZlbnQ7CisgICAgICAgICAgICAgICAg
ZXZlbnQuVHlwZSAgICAgICAgICAgICAgID0gRXZlbnQ6OkVWRU5UX01PVVNFX0JVVFRPTl9QUkVT
U0VEOworICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNlQnV0dG9uLkJ1dHRvbiA9IE1PVVNFQlVU
VE9OX01JRERMRTsKKyAgICAgICAgICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5YICAgICAgPSBz
dGF0aWNfY2FzdDxzaG9ydD4oTE9XT1JEKGxQYXJhbSkpOworICAgICAgICAgICAgICAgIGV2ZW50
Lk1vdXNlQnV0dG9uLlkgPSBzdGF0aWNfY2FzdDxzaG9ydD4oSElXT1JEKGxQYXJhbSkpOworICAg
ICAgICAgICAgICAgIHdpbmRvdy0+cHVzaEV2ZW50KGV2ZW50KTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gTW91c2Ugd2hlZWwgYnV0dG9u
IHVwIGV2ZW50CisgICAgICAgICAgICBjYXNlIFdNX01CVVRUT05VUDoKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBFdmVudCBldmVudDsKKyAgICAgICAgICAgICAgICBldmVudC5UeXBl
ICAgICAgICAgICAgICAgPSBFdmVudDo6RVZFTlRfTU9VU0VfQlVUVE9OX1JFTEVBU0VEOworICAg
ICAgICAgICAgICAgIGV2ZW50Lk1vdXNlQnV0dG9uLkJ1dHRvbiA9IE1PVVNFQlVUVE9OX01JRERM
RTsKKyAgICAgICAgICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5YICAgICAgPSBzdGF0aWNfY2Fz
dDxzaG9ydD4oTE9XT1JEKGxQYXJhbSkpOworICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNlQnV0
dG9uLlkgPSBzdGF0aWNfY2FzdDxzaG9ydD4oSElXT1JEKGxQYXJhbSkpOworICAgICAgICAgICAg
ICAgIHdpbmRvdy0+cHVzaEV2ZW50KGV2ZW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gTW91c2UgWCBidXR0b24gZG93biBldmVudAor
ICAgICAgICAgICAgY2FzZSBXTV9YQlVUVE9ORE9XTjoKKyAgICAgICAgICAgIGNhc2UgV01fWEJV
VFRPTkRCTENMSzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBFdmVudCBldmVudDsK
KyAgICAgICAgICAgICAgICBldmVudC5UeXBlID0gRXZlbnQ6OkVWRU5UX01PVVNFX0JVVFRPTl9Q
UkVTU0VEOworICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNlQnV0dG9uLkJ1dHRvbiA9CisgICAg
ICAgICAgICAgICAgICAgIChISVdPUkQod1BhcmFtKSA9PSBYQlVUVE9OMSkgPyBNT1VTRUJVVFRP
Tl9CVVRUT040IDogTU9VU0VCVVRUT05fQlVUVE9ONTsKKyAgICAgICAgICAgICAgICBldmVudC5N
b3VzZUJ1dHRvbi5YID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KExPV09SRChsUGFyYW0pKTsKKyAgICAg
ICAgICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5ZID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KEhJV09S
RChsUGFyYW0pKTsKKyAgICAgICAgICAgICAgICB3aW5kb3ctPnB1c2hFdmVudChldmVudCk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIE1v
dXNlIFggYnV0dG9uIHVwIGV2ZW50CisgICAgICAgICAgICBjYXNlIFdNX1hCVVRUT05VUDoKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBFdmVudCBldmVudDsKKyAgICAgICAgICAgICAg
ICBldmVudC5UeXBlID0gRXZlbnQ6OkVWRU5UX01PVVNFX0JVVFRPTl9SRUxFQVNFRDsKKyAgICAg
ICAgICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5CdXR0b24gPQorICAgICAgICAgICAgICAgICAg
ICAoSElXT1JEKHdQYXJhbSkgPT0gWEJVVFRPTjEpID8gTU9VU0VCVVRUT05fQlVUVE9ONCA6IE1P
VVNFQlVUVE9OX0JVVFRPTjU7CisgICAgICAgICAgICAgICAgZXZlbnQuTW91c2VCdXR0b24uWCA9
IHN0YXRpY19jYXN0PHNob3J0PihMT1dPUkQobFBhcmFtKSk7CisgICAgICAgICAgICAgICAgZXZl
bnQuTW91c2VCdXR0b24uWSA9IHN0YXRpY19jYXN0PHNob3J0PihISVdPUkQobFBhcmFtKSk7Cisg
ICAgICAgICAgICAgICAgd2luZG93LT5wdXNoRXZlbnQoZXZlbnQpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlIFdNX01PVVNFTU9WRToK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoIXdpbmRvdy0+bUlzTW91c2VJbldp
bmRvdykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHdpbmRvdy0+bUlz
TW91c2VJbldpbmRvdyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIEV2ZW50IGV2ZW50Owor
ICAgICAgICAgICAgICAgICAgICBldmVudC5UeXBlID0gRXZlbnQ6OkVWRU5UX01PVVNFX0VOVEVS
RUQ7CisgICAgICAgICAgICAgICAgICAgIHdpbmRvdy0+cHVzaEV2ZW50KGV2ZW50KTsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpbnQgbW91c2VYID0gc3RhdGljX2Nhc3Q8
c2hvcnQ+KExPV09SRChsUGFyYW0pKTsKKyAgICAgICAgICAgICAgICBpbnQgbW91c2VZID0gc3Rh
dGljX2Nhc3Q8c2hvcnQ+KEhJV09SRChsUGFyYW0pKTsKKworICAgICAgICAgICAgICAgIEV2ZW50
IGV2ZW50OworICAgICAgICAgICAgICAgIGV2ZW50LlR5cGUgICAgICAgID0gRXZlbnQ6OkVWRU5U
X01PVVNFX01PVkVEOworICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNlTW92ZS5YID0gbW91c2VY
OworICAgICAgICAgICAgICAgIGV2ZW50Lk1vdXNlTW92ZS5ZID0gbW91c2VZOworICAgICAgICAg
ICAgICAgIHdpbmRvdy0+cHVzaEV2ZW50KGV2ZW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSBXTV9NT1VTRUxFQVZFOgorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIEV2ZW50IGV2ZW50OworICAgICAgICAgICAgICAgIGV2
ZW50LlR5cGUgPSBFdmVudDo6RVZFTlRfTU9VU0VfTEVGVDsKKyAgICAgICAgICAgICAgICB3aW5k
b3ctPnB1c2hFdmVudChldmVudCk7CisgICAgICAgICAgICAgICAgd2luZG93LT5tSXNNb3VzZUlu
V2luZG93ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGNhc2UgV01fVVNFUjoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBFdmVudCB0ZXN0RXZlbnQ7CisgICAgICAgICAgICAgICAgdGVzdEV2ZW50LlR5cGUgPSBFdmVu
dDo6RVZFTlRfVEVTVDsKKyAgICAgICAgICAgICAgICB3aW5kb3ctPnB1c2hFdmVudCh0ZXN0RXZl
bnQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorICAgIHJldHVybiBEZWZXaW5kb3dQcm9jQShoV25kLCBtZXNzYWdlLCB3UGFyYW0sIGxQ
YXJhbSk7Cit9CisKK1dpbjMyV2luZG93OjpXaW4zMldpbmRvdygpCisgICAgOiBtSXNWaXNpYmxl
KGZhbHNlKSwKKyAgICAgIG1TZXRWaXNpYmxlVGltZXIoQ3JlYXRlVGltZXIoKSksCisgICAgICBt
SXNNb3VzZUluV2luZG93KGZhbHNlKSwKKyAgICAgIG1OYXRpdmVXaW5kb3coMCksCisgICAgICBt
UGFyZW50V2luZG93KDApLAorICAgICAgbU5hdGl2ZURpc3BsYXkoMCkKK3sKK30KKworV2luMzJX
aW5kb3c6On5XaW4zMldpbmRvdygpCit7CisgICAgZGVzdHJveSgpOworICAgIGRlbGV0ZSBtU2V0
VmlzaWJsZVRpbWVyOworfQorCitib29sIFdpbjMyV2luZG93Ojppbml0aWFsaXplKGNvbnN0IHN0
ZDo6c3RyaW5nICZuYW1lLCBzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQpCit7CisgICAgZGVz
dHJveSgpOworCisgICAgLy8gVXNlIGEgbmV3IHdpbmRvdyBjbGFzcyBuYW1lIGZvciBldmVyIHdp
bmRvdyB0byBlbnN1cmUgdGhhdCBhIG5ldyB3aW5kb3cgY2FuIGJlIGNyZWF0ZWQKKyAgICAvLyBl
dmVuIGlmIHRoZSBsYXN0IG9uZSB3YXMgbm90IHByb3Blcmx5IGRlc3Ryb3llZAorICAgIHN0YXRp
YyBzaXplX3Qgd2luZG93SWR4ID0gMDsKKyAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gbmFtZVN0cmVh
bTsKKyAgICBuYW1lU3RyZWFtIDw8IG5hbWUgPDwgIl8iIDw8IHdpbmRvd0lkeCsrOworCisgICAg
bVBhcmVudENsYXNzTmFtZSA9IG5hbWVTdHJlYW0uc3RyKCk7CisgICAgbUNoaWxkQ2xhc3NOYW1l
ICA9IG1QYXJlbnRDbGFzc05hbWUgKyAiX0NoaWxkIjsKKworICAgIC8vIFdvcmsgYXJvdW5kIGNv
bXBpbGUgZXJyb3IgZnJvbSBub3QgZGVmaW5pbmcgIlVOSUNPREUiIHdoaWxlIENocm9taXVtIGRv
ZXMKKyAgICBjb25zdCBMUFNUUiBpZGNBcnJvdyA9IE1BS0VJTlRSRVNPVVJDRUEoMzI1MTIpOwor
CisgICAgV05EQ0xBU1NFWEEgcGFyZW50V2luZG93Q2xhc3MgICA9IHswfTsKKyAgICBwYXJlbnRX
aW5kb3dDbGFzcy5jYlNpemUgICAgICAgID0gc2l6ZW9mKFdORENMQVNTRVhBKTsKKyAgICBwYXJl
bnRXaW5kb3dDbGFzcy5zdHlsZSAgICAgICAgID0gMDsKKyAgICBwYXJlbnRXaW5kb3dDbGFzcy5s
cGZuV25kUHJvYyAgID0gV25kUHJvYzsKKyAgICBwYXJlbnRXaW5kb3dDbGFzcy5jYkNsc0V4dHJh
ICAgID0gMDsKKyAgICBwYXJlbnRXaW5kb3dDbGFzcy5jYlduZEV4dHJhICAgID0gMDsKKyAgICBw
YXJlbnRXaW5kb3dDbGFzcy5oSW5zdGFuY2UgICAgID0gR2V0TW9kdWxlSGFuZGxlKE5VTEwpOwor
ICAgIHBhcmVudFdpbmRvd0NsYXNzLmhJY29uICAgICAgICAgPSBOVUxMOworICAgIHBhcmVudFdp
bmRvd0NsYXNzLmhDdXJzb3IgICAgICAgPSBMb2FkQ3Vyc29yQShOVUxMLCBpZGNBcnJvdyk7Cisg
ICAgcGFyZW50V2luZG93Q2xhc3MuaGJyQmFja2dyb3VuZCA9IDA7CisgICAgcGFyZW50V2luZG93
Q2xhc3MubHBzek1lbnVOYW1lICA9IE5VTEw7CisgICAgcGFyZW50V2luZG93Q2xhc3MubHBzekNs
YXNzTmFtZSA9IG1QYXJlbnRDbGFzc05hbWUuY19zdHIoKTsKKyAgICBpZiAoIVJlZ2lzdGVyQ2xh
c3NFeEEoJnBhcmVudFdpbmRvd0NsYXNzKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBXTkRDTEFTU0VYQSBjaGlsZFdpbmRvd0NsYXNzICAgPSB7MH07CisgICAg
Y2hpbGRXaW5kb3dDbGFzcy5jYlNpemUgICAgICAgID0gc2l6ZW9mKFdORENMQVNTRVhBKTsKKyAg
ICBjaGlsZFdpbmRvd0NsYXNzLnN0eWxlICAgICAgICAgPSBDU19PV05EQzsKKyAgICBjaGlsZFdp
bmRvd0NsYXNzLmxwZm5XbmRQcm9jICAgPSBXbmRQcm9jOworICAgIGNoaWxkV2luZG93Q2xhc3Mu
Y2JDbHNFeHRyYSAgICA9IDA7CisgICAgY2hpbGRXaW5kb3dDbGFzcy5jYlduZEV4dHJhICAgID0g
MDsKKyAgICBjaGlsZFdpbmRvd0NsYXNzLmhJbnN0YW5jZSAgICAgPSBHZXRNb2R1bGVIYW5kbGUo
TlVMTCk7CisgICAgY2hpbGRXaW5kb3dDbGFzcy5oSWNvbiAgICAgICAgID0gTlVMTDsKKyAgICBj
aGlsZFdpbmRvd0NsYXNzLmhDdXJzb3IgICAgICAgPSBMb2FkQ3Vyc29yQShOVUxMLCBpZGNBcnJv
dyk7CisgICAgY2hpbGRXaW5kb3dDbGFzcy5oYnJCYWNrZ3JvdW5kID0gMDsKKyAgICBjaGlsZFdp
bmRvd0NsYXNzLmxwc3pNZW51TmFtZSAgPSBOVUxMOworICAgIGNoaWxkV2luZG93Q2xhc3MubHBz
ekNsYXNzTmFtZSA9IG1DaGlsZENsYXNzTmFtZS5jX3N0cigpOworICAgIGlmICghUmVnaXN0ZXJD
bGFzc0V4QSgmY2hpbGRXaW5kb3dDbGFzcykpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgRFdPUkQgcGFyZW50U3R5bGUgICAgICAgICA9IFdTX0NBUFRJT04gfCBX
U19USElDS0ZSQU1FIHwgV1NfTUlOSU1JWkVCT1ggfCBXU19NQVhJTUlaRUJPWCB8IFdTX1NZU01F
TlU7CisgICAgRFdPUkQgcGFyZW50RXh0ZW5kZWRTdHlsZSA9IFdTX0VYX0FQUFdJTkRPVzsKKwor
ICAgIFJFQ1Qgc2l6ZVJlY3QgPSB7MCwgMCwgc3RhdGljX2Nhc3Q8TE9ORz4od2lkdGgpLCBzdGF0
aWNfY2FzdDxMT05HPihoZWlnaHQpfTsKKyAgICBBZGp1c3RXaW5kb3dSZWN0RXgoJnNpemVSZWN0
LCBwYXJlbnRTdHlsZSwgRkFMU0UsIHBhcmVudEV4dGVuZGVkU3R5bGUpOworCisgICAgbVBhcmVu
dFdpbmRvdyA9CisgICAgICAgIENyZWF0ZVdpbmRvd0V4QShwYXJlbnRFeHRlbmRlZFN0eWxlLCBt
UGFyZW50Q2xhc3NOYW1lLmNfc3RyKCksIG5hbWUuY19zdHIoKSwgcGFyZW50U3R5bGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICBDV19VU0VERUZBVUxULCBDV19VU0VERUZBVUxULCBzaXplUmVj
dC5yaWdodCAtIHNpemVSZWN0LmxlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplUmVj
dC5ib3R0b20gLSBzaXplUmVjdC50b3AsIE5VTEwsIE5VTEwsIEdldE1vZHVsZUhhbmRsZShOVUxM
KSwgdGhpcyk7CisKKyAgICBtTmF0aXZlV2luZG93ID0gQ3JlYXRlV2luZG93RXhBKDAsIG1DaGls
ZENsYXNzTmFtZS5jX3N0cigpLCBuYW1lLmNfc3RyKCksIFdTX0NISUxELCAwLCAwLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pih3aWR0aCksIHN0
YXRpY19jYXN0PGludD4oaGVpZ2h0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1QYXJlbnRXaW5kb3csIE5VTEwsIEdldE1vZHVsZUhhbmRsZShOVUxMKSwgdGhpcyk7CisK
KyAgICBtTmF0aXZlRGlzcGxheSA9IEdldERDKG1OYXRpdmVXaW5kb3cpOworICAgIGlmICghbU5h
dGl2ZURpc3BsYXkpCisgICAgeworICAgICAgICBkZXN0cm95KCk7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXaW4zMldpbmRvdzo6
ZGVzdHJveSgpCit7CisgICAgaWYgKG1OYXRpdmVEaXNwbGF5KQorICAgIHsKKyAgICAgICAgUmVs
ZWFzZURDKG1OYXRpdmVXaW5kb3csIG1OYXRpdmVEaXNwbGF5KTsKKyAgICAgICAgbU5hdGl2ZURp
c3BsYXkgPSAwOworICAgIH0KKworICAgIGlmIChtTmF0aXZlV2luZG93KQorICAgIHsKKyAgICAg
ICAgRGVzdHJveVdpbmRvdyhtTmF0aXZlV2luZG93KTsKKyAgICAgICAgbU5hdGl2ZVdpbmRvdyA9
IDA7CisgICAgfQorCisgICAgaWYgKG1QYXJlbnRXaW5kb3cpCisgICAgeworICAgICAgICBEZXN0
cm95V2luZG93KG1QYXJlbnRXaW5kb3cpOworICAgICAgICBtUGFyZW50V2luZG93ID0gMDsKKyAg
ICB9CisKKyAgICBVbnJlZ2lzdGVyQ2xhc3NBKG1QYXJlbnRDbGFzc05hbWUuY19zdHIoKSwgTlVM
TCk7CisgICAgVW5yZWdpc3RlckNsYXNzQShtQ2hpbGRDbGFzc05hbWUuY19zdHIoKSwgTlVMTCk7
Cit9CisKK2Jvb2wgV2luMzJXaW5kb3c6OnRha2VTY3JlZW5zaG90KHVpbnQ4X3QgKnBpeGVsRGF0
YSkKK3sKKyAgICBpZiAobUlzVmlzaWJsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBib29sIGVycm9yID0gZmFsc2U7CisKKyAgICAvLyBIYWNrIGZvciBEV006
IFRoZXJlIGlzIG5vIHdheSB0byB3YWl0IGZvciBEV00gYW5pbWF0aW9ucyB0byBmaW5pc2gsIHNv
IHdlIGp1c3QgaGF2ZSB0byB3YWl0CisgICAgLy8gZm9yIGEgd2hpbGUgYmVmb3JlIGlzc3Vpbmcg
c2NyZWVuc2hvdCBpZiB3aW5kb3cgd2FzIGp1c3QgbWFkZSB2aXNpYmxlLgorICAgIHsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IGRvdWJsZSBXQUlUX1dJTkRPV19WSVNJQkxFX01TID0gMC41OyAgLy8g
SGFsZiBhIHNlY29uZCBmb3IgdGhlIGFuaW1hdGlvbgorICAgICAgICBkb3VibGUgdGltZVNpbmNl
VmlzaWJsZSAgICAgICAgICAgICAgICAgICAgPSBtU2V0VmlzaWJsZVRpbWVyLT5nZXRFbGFwc2Vk
VGltZSgpOworCisgICAgICAgIGlmICh0aW1lU2luY2VWaXNpYmxlIDwgV0FJVF9XSU5ET1dfVklT
SUJMRV9NUykKKyAgICAgICAgeworICAgICAgICAgICAgU2xlZXAoc3RhdGljX2Nhc3Q8RFdPUkQ+
KChXQUlUX1dJTkRPV19WSVNJQkxFX01TIC0gdGltZVNpbmNlVmlzaWJsZSkgKiAxMDAwKSk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBIREMgc2NyZWVuREMgICAgICA9IG51bGxwdHI7CisgICAg
SERDIHdpbmRvd0RDICAgICAgPSBudWxscHRyOworICAgIEhEQyB0bXBEQyAgICAgICAgID0gbnVs
bHB0cjsKKyAgICBIQklUTUFQIHRtcEJpdG1hcCA9IG51bGxwdHI7CisKKyAgICBpZiAoIWVycm9y
KQorICAgIHsKKyAgICAgICAgc2NyZWVuREMgPSBHZXREQyhudWxscHRyKTsKKyAgICAgICAgZXJy
b3IgICAgPSBzY3JlZW5EQyA9PSBudWxscHRyOworICAgIH0KKworICAgIGlmICghZXJyb3IpCisg
ICAgeworICAgICAgICB3aW5kb3dEQyA9IEdldERDKG1OYXRpdmVXaW5kb3cpOworICAgICAgICBl
cnJvciAgICA9IHdpbmRvd0RDID09IG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKCFlcnJvcikK
KyAgICB7CisgICAgICAgIHRtcERDID0gQ3JlYXRlQ29tcGF0aWJsZURDKHNjcmVlbkRDKTsKKyAg
ICAgICAgZXJyb3IgPSB0bXBEQyA9PSBudWxscHRyOworICAgIH0KKworICAgIGlmICghZXJyb3Ip
CisgICAgeworICAgICAgICB0bXBCaXRtYXAgPSBDcmVhdGVDb21wYXRpYmxlQml0bWFwKHNjcmVl
bkRDLCBtV2lkdGgsIG1IZWlnaHQpOworICAgICAgICBlcnJvciAgICAgPSB0bXBCaXRtYXAgPT0g
bnVsbHB0cjsKKyAgICB9CisKKyAgICBSRUNUIHJlY3QgPSB7MCwgMCwgMCwgMH07CisgICAgaWYg
KCFlcnJvcikKKyAgICB7CisgICAgICAgIE1hcFdpbmRvd1BvaW50cyhtTmF0aXZlV2luZG93LCBu
dWxscHRyLCByZWludGVycHJldF9jYXN0PExQUE9JTlQ+KCZyZWN0KSwgMCk7CisKKyAgICAgICAg
ZXJyb3IgPSBTZWxlY3RPYmplY3QodG1wREMsIHRtcEJpdG1hcCkgPT0gbnVsbHB0cjsKKyAgICB9
CisKKyAgICBpZiAoIWVycm9yKQorICAgIHsKKyAgICAgICAgZXJyb3IgPQorICAgICAgICAgICAg
Qml0Qmx0KHRtcERDLCAwLCAwLCBtV2lkdGgsIG1IZWlnaHQsIHNjcmVlbkRDLCByZWN0LmxlZnQs
IHJlY3QudG9wLCBTUkNDT1BZKSA9PSBUUlVFOworICAgIH0KKworICAgIGlmICghZXJyb3IpCisg
ICAgeworICAgICAgICBCSVRNQVBJTkZPSEVBREVSIGJpdG1hcEluZm87CisgICAgICAgIGJpdG1h
cEluZm8uYmlTaXplICAgICAgICAgID0gc2l6ZW9mKEJJVE1BUElORk9IRUFERVIpOworICAgICAg
ICBiaXRtYXBJbmZvLmJpV2lkdGggICAgICAgICA9IG1XaWR0aDsKKyAgICAgICAgYml0bWFwSW5m
by5iaUhlaWdodCAgICAgICAgPSAtbUhlaWdodDsKKyAgICAgICAgYml0bWFwSW5mby5iaVBsYW5l
cyAgICAgICAgPSAxOworICAgICAgICBiaXRtYXBJbmZvLmJpQml0Q291bnQgICAgICA9IDMyOwor
ICAgICAgICBiaXRtYXBJbmZvLmJpQ29tcHJlc3Npb24gICA9IEJJX1JHQjsKKyAgICAgICAgYml0
bWFwSW5mby5iaVNpemVJbWFnZSAgICAgPSAwOworICAgICAgICBiaXRtYXBJbmZvLmJpWFBlbHNQ
ZXJNZXRlciA9IDA7CisgICAgICAgIGJpdG1hcEluZm8uYmlZUGVsc1Blck1ldGVyID0gMDsKKyAg
ICAgICAgYml0bWFwSW5mby5iaUNsclVzZWQgICAgICAgPSAwOworICAgICAgICBiaXRtYXBJbmZv
LmJpQ2xySW1wb3J0YW50ICA9IDA7CisgICAgICAgIGludCBnZXRCaXRzUmVzdWx0ID0gR2V0RElC
aXRzKHNjcmVlbkRDLCB0bXBCaXRtYXAsIDAsIG1IZWlnaHQsIHBpeGVsRGF0YSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxCSVRNQVBJTkZP
ICo+KCZiaXRtYXBJbmZvKSwgRElCX1JHQl9DT0xPUlMpOworICAgICAgICBlcnJvciA9IGdldEJp
dHNSZXN1bHQgIT0gMDsKKyAgICB9CisKKyAgICBpZiAodG1wQml0bWFwICE9IG51bGxwdHIpCisg
ICAgeworICAgICAgICBEZWxldGVPYmplY3QodG1wQml0bWFwKTsKKyAgICB9CisgICAgaWYgKHRt
cERDICE9IG51bGxwdHIpCisgICAgeworICAgICAgICBEZWxldGVEQyh0bXBEQyk7CisgICAgfQor
ICAgIGlmIChzY3JlZW5EQyAhPSBudWxscHRyKQorICAgIHsKKyAgICAgICAgUmVsZWFzZURDKG51
bGxwdHIsIHNjcmVlbkRDKTsKKyAgICB9CisgICAgaWYgKHdpbmRvd0RDICE9IG51bGxwdHIpCisg
ICAgeworICAgICAgICBSZWxlYXNlREMobU5hdGl2ZVdpbmRvdywgd2luZG93REMpOworICAgIH0K
KworICAgIHJldHVybiAhZXJyb3I7Cit9CisKK0VHTE5hdGl2ZVdpbmRvd1R5cGUgV2luMzJXaW5k
b3c6OmdldE5hdGl2ZVdpbmRvdygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1OYXRpdmVXaW5kb3c7
Cit9CisKK0VHTE5hdGl2ZURpc3BsYXlUeXBlIFdpbjMyV2luZG93OjpnZXROYXRpdmVEaXNwbGF5
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbU5hdGl2ZURpc3BsYXk7Cit9CisKK3ZvaWQgV2luMzJX
aW5kb3c6Om1lc3NhZ2VMb29wKCkKK3sKKyAgICBNU0cgbXNnOworICAgIHdoaWxlIChQZWVrTWVz
c2FnZSgmbXNnLCBOVUxMLCAwLCAwLCBQTV9SRU1PVkUpKQorICAgIHsKKyAgICAgICAgVHJhbnNs
YXRlTWVzc2FnZSgmbXNnKTsKKyAgICAgICAgRGlzcGF0Y2hNZXNzYWdlKCZtc2cpOworICAgIH0K
K30KKwordm9pZCBXaW4zMldpbmRvdzo6c2V0TW91c2VQb3NpdGlvbihpbnQgeCwgaW50IHkpCit7
CisgICAgUkVDVCB3aW5SZWN0OworICAgIEdldENsaWVudFJlY3QobU5hdGl2ZVdpbmRvdywgJndp
blJlY3QpOworCisgICAgUE9JTlQgdG9wTGVmdDsKKyAgICB0b3BMZWZ0LnggPSB3aW5SZWN0Lmxl
ZnQ7CisgICAgdG9wTGVmdC55ID0gd2luUmVjdC50b3A7CisgICAgQ2xpZW50VG9TY3JlZW4obU5h
dGl2ZVdpbmRvdywgJnRvcExlZnQpOworCisgICAgU2V0Q3Vyc29yUG9zKHRvcExlZnQueCArIHgs
IHRvcExlZnQueSArIHkpOworfQorCitPU1dpbmRvdyAqQ3JlYXRlT1NXaW5kb3coKQoreworICAg
IHJldHVybiBuZXcgV2luMzJXaW5kb3coKTsKK30KKworYm9vbCBXaW4zMldpbmRvdzo6c2V0UG9z
aXRpb24oaW50IHgsIGludCB5KQoreworICAgIGlmIChtWCA9PSB4ICYmIG1ZID09IHkpCisgICAg
eworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBSRUNUIHdpbmRvd1JlY3Q7Cisg
ICAgaWYgKCFHZXRXaW5kb3dSZWN0KG1QYXJlbnRXaW5kb3csICZ3aW5kb3dSZWN0KSkKKyAgICB7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIU1vdmVXaW5kb3cobVBh
cmVudFdpbmRvdywgeCwgeSwgd2luZG93UmVjdC5yaWdodCAtIHdpbmRvd1JlY3QubGVmdCwKKyAg
ICAgICAgICAgICAgICAgICAgd2luZG93UmVjdC5ib3R0b20gLSB3aW5kb3dSZWN0LnRvcCwgVFJV
RSkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgV2luMzJXaW5kb3c6OnJlc2l6ZShpbnQgd2lkdGgsIGludCBoZWlnaHQp
Cit7CisgICAgaWYgKHdpZHRoID09IG1XaWR0aCAmJiBoZWlnaHQgPT0gbUhlaWdodCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIFJFQ1Qgd2luZG93UmVjdDsKKyAg
ICBpZiAoIUdldFdpbmRvd1JlY3QobVBhcmVudFdpbmRvdywgJndpbmRvd1JlY3QpKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFJFQ1QgY2xpZW50UmVjdDsKKyAg
ICBpZiAoIUdldENsaWVudFJlY3QobVBhcmVudFdpbmRvdywgJmNsaWVudFJlY3QpKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIExPTkcgZGlmZlggPSAod2luZG93
UmVjdC5yaWdodCAtIHdpbmRvd1JlY3QubGVmdCkgLSBjbGllbnRSZWN0LnJpZ2h0OworICAgIExP
TkcgZGlmZlkgPSAod2luZG93UmVjdC5ib3R0b20gLSB3aW5kb3dSZWN0LnRvcCkgLSBjbGllbnRS
ZWN0LmJvdHRvbTsKKyAgICBpZiAoIU1vdmVXaW5kb3cobVBhcmVudFdpbmRvdywgd2luZG93UmVj
dC5sZWZ0LCB3aW5kb3dSZWN0LnRvcCwgd2lkdGggKyBkaWZmWCwgaGVpZ2h0ICsgZGlmZlksCisg
ICAgICAgICAgICAgICAgICAgIFRSVUUpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGlmICghTW92ZVdpbmRvdyhtTmF0aXZlV2luZG93LCAwLCAwLCB3aWR0aCwg
aGVpZ2h0LCBGQUxTRSkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2luMzJXaW5kb3c6OnNldFZpc2libGUoYm9vbCBp
c1Zpc2libGUpCit7CisgICAgaW50IGZsYWcgPSAoaXNWaXNpYmxlID8gU1dfU0hPVyA6IFNXX0hJ
REUpOworCisgICAgU2hvd1dpbmRvdyhtUGFyZW50V2luZG93LCBmbGFnKTsKKyAgICBTaG93V2lu
ZG93KG1OYXRpdmVXaW5kb3csIGZsYWcpOworCisgICAgaWYgKGlzVmlzaWJsZSkKKyAgICB7Cisg
ICAgICAgIG1TZXRWaXNpYmxlVGltZXItPnN0b3AoKTsKKyAgICAgICAgbVNldFZpc2libGVUaW1l
ci0+c3RhcnQoKTsKKyAgICB9Cit9CisKK3ZvaWQgV2luMzJXaW5kb3c6OnB1c2hFdmVudChFdmVu
dCBldmVudCkKK3sKKyAgICBPU1dpbmRvdzo6cHVzaEV2ZW50KGV2ZW50KTsKKworICAgIHN3aXRj
aCAoZXZlbnQuVHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgRXZlbnQ6OkVWRU5UX1JFU0laRUQ6
CisgICAgICAgICAgICBNb3ZlV2luZG93KG1OYXRpdmVXaW5kb3csIDAsIDAsIG1XaWR0aCwgbUhl
aWdodCwgRkFMU0UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgV2luMzJXaW5kb3c6OnNpZ25hbFRlc3RF
dmVudCgpCit7CisgICAgUG9zdE1lc3NhZ2UobU5hdGl2ZVdpbmRvdywgV01fVVNFUiwgMCwgMCk7
Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3dpbmRvd3Mvd2luMzIvV2lu
MzJXaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3dp
bmRvd3Mvd2luMzIvV2luMzJXaW5kb3cuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS91dGlsL3dpbmRvd3Mvd2luMzIvV2luMzJXaW5kb3cuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDU5IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gV2luMzJXaW5kb3cuaDogRGVm
aW5pdGlvbiBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgT1NXaW5kb3cgZm9yIFdpbjMyIChXaW5k
b3dzKQorCisjaWZuZGVmIFVUSUxfV0lOMzJfV0lORE9XX0gKKyNkZWZpbmUgVVRJTF9XSU4zMl9X
SU5ET1dfSAorCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHN0cmluZz4KKworI2lu
Y2x1ZGUgIk9TV2luZG93LmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKworY2xhc3MgV2luMzJXaW5k
b3cgOiBwdWJsaWMgT1NXaW5kb3cKK3sKKyAgcHVibGljOgorICAgIFdpbjMyV2luZG93KCk7Cisg
ICAgfldpbjMyV2luZG93KCkgb3ZlcnJpZGU7CisKKyAgICBib29sIGluaXRpYWxpemUoY29uc3Qg
c3RkOjpzdHJpbmcgJm5hbWUsIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkZXN0cm95KCkgb3ZlcnJpZGU7CisKKyAgICBib29sIHRha2VTY3JlZW5zaG90
KHVpbnQ4X3QgKnBpeGVsRGF0YSkgb3ZlcnJpZGU7CisKKyAgICBFR0xOYXRpdmVXaW5kb3dUeXBl
IGdldE5hdGl2ZVdpbmRvdygpIGNvbnN0IG92ZXJyaWRlOworICAgIEVHTE5hdGl2ZURpc3BsYXlU
eXBlIGdldE5hdGl2ZURpc3BsYXkoKSBjb25zdCBvdmVycmlkZTsKKworICAgIHZvaWQgbWVzc2Fn
ZUxvb3AoKSBvdmVycmlkZTsKKworICAgIHZvaWQgcHVzaEV2ZW50KEV2ZW50IGV2ZW50KSBvdmVy
cmlkZTsKKworICAgIHZvaWQgc2V0TW91c2VQb3NpdGlvbihpbnQgeCwgaW50IHkpIG92ZXJyaWRl
OworICAgIGJvb2wgc2V0UG9zaXRpb24oaW50IHgsIGludCB5KSBvdmVycmlkZTsKKyAgICBib29s
IHJlc2l6ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Vmlz
aWJsZShib29sIGlzVmlzaWJsZSkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNpZ25hbFRlc3RFdmVu
dCgpIG92ZXJyaWRlOworCisgIHByaXZhdGU6CisgICAgc3RhdGljIExSRVNVTFQgQ0FMTEJBQ0sg
V25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQ
YXJhbSk7CisKKyAgICBzdGQ6OnN0cmluZyBtUGFyZW50Q2xhc3NOYW1lOworICAgIHN0ZDo6c3Ry
aW5nIG1DaGlsZENsYXNzTmFtZTsKKworICAgIGJvb2wgbUlzVmlzaWJsZTsKKyAgICBUaW1lciAq
bVNldFZpc2libGVUaW1lcjsKKworICAgIGJvb2wgbUlzTW91c2VJbldpbmRvdzsKKworICAgIEVH
TE5hdGl2ZVdpbmRvd1R5cGUgbU5hdGl2ZVdpbmRvdzsKKyAgICBFR0xOYXRpdmVXaW5kb3dUeXBl
IG1QYXJlbnRXaW5kb3c7CisgICAgRUdMTmF0aXZlRGlzcGxheVR5cGUgbU5hdGl2ZURpc3BsYXk7
Cit9OworCisjZW5kaWYgIC8vIFVUSUxfV0lOMzJfV0lORE9XX0gKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3V0aWwvd2luZG93cy93aW4zMi9XaW4zMl9zeXN0ZW1fdXRpbHMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvd2luZG93cy93aW4zMi9X
aW4zMl9zeXN0ZW1fdXRpbHMuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3V0aWwvd2luZG93cy93aW4zMi9XaW4zMl9zeXN0ZW1fdXRpbHMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNjMgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBXaW4zMl9zeXN0ZW1f
dXRpbHMuY3BwOiBJbXBsZW1lbnRhdGlvbiBvZiBPUy1zcGVjaWZpYyBmdW5jdGlvbnMgZm9yIFdp
bjMyIChXaW5kb3dzKQorCisjaW5jbHVkZSAic3lzdGVtX3V0aWxzLmgiCisKKyNpbmNsdWRlIDx3
aW5kb3dzLmg+CisjaW5jbHVkZSA8YXJyYXk+CisKK25hbWVzcGFjZSBhbmdsZQoreworCit2b2lk
IFNldExvd1ByaW9yaXR5UHJvY2VzcygpCit7CisgICAgU2V0UHJpb3JpdHlDbGFzcyhHZXRDdXJy
ZW50UHJvY2VzcygpLCBCRUxPV19OT1JNQUxfUFJJT1JJVFlfQ0xBU1MpOworfQorCitjbGFzcyBX
aW4zMkxpYnJhcnkgOiBwdWJsaWMgTGlicmFyeQoreworICBwdWJsaWM6CisgICAgV2luMzJMaWJy
YXJ5KGNvbnN0IHN0ZDo6c3RyaW5nICZsaWJyYXJ5TmFtZSk7CisgICAgfldpbjMyTGlicmFyeSgp
IG92ZXJyaWRlOworCisgICAgdm9pZCAqZ2V0U3ltYm9sKGNvbnN0IHN0ZDo6c3RyaW5nICZzeW1i
b2xOYW1lKSBvdmVycmlkZTsKKworICBwcml2YXRlOgorICAgIEhNT0RVTEUgbU1vZHVsZTsKK307
CisKK1dpbjMyTGlicmFyeTo6V2luMzJMaWJyYXJ5KGNvbnN0IHN0ZDo6c3RyaW5nICZsaWJyYXJ5
TmFtZSkgOiBtTW9kdWxlKG51bGxwdHIpCit7CisgICAgY29uc3QgYXV0byAmZnVsbE5hbWUgPSBs
aWJyYXJ5TmFtZSArICIuIiArIEdldFNoYXJlZExpYnJhcnlFeHRlbnNpb24oKTsKKyAgICBtTW9k
dWxlICAgICAgICAgICAgICA9IExvYWRMaWJyYXJ5QShmdWxsTmFtZS5jX3N0cigpKTsKK30KKwor
V2luMzJMaWJyYXJ5Ojp+V2luMzJMaWJyYXJ5KCkKK3sKKyAgICBpZiAobU1vZHVsZSkKKyAgICB7
CisgICAgICAgIEZyZWVMaWJyYXJ5KG1Nb2R1bGUpOworICAgIH0KK30KKwordm9pZCAqV2luMzJM
aWJyYXJ5OjpnZXRTeW1ib2woY29uc3Qgc3RkOjpzdHJpbmcgJnN5bWJvbE5hbWUpCit7CisgICAg
aWYgKCFtTW9kdWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisg
ICAgcmV0dXJuIEdldFByb2NBZGRyZXNzKG1Nb2R1bGUsIHN5bWJvbE5hbWUuY19zdHIoKSk7Cit9
CisKK0xpYnJhcnkgKmxvYWRMaWJyYXJ5KGNvbnN0IHN0ZDo6c3RyaW5nICZsaWJyYXJ5TmFtZSkK
K3sKKyAgICByZXR1cm4gbmV3IFdpbjMyTGlicmFyeShsaWJyYXJ5TmFtZSk7Cit9CisKK30gIC8v
IG5hbWVzcGFjZSBhbmdsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC93aW5k
b3dzL3dpbnJ0L1dpblJUUGl4bWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS91dGlsL3dpbmRvd3Mvd2lucnQvV2luUlRQaXhtYXAuY3BwCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvd2luZG93cy93aW5ydC9XaW5SVFBpeG1h
cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNyBAQAorLy8KKy8vIENvcHlyaWdodCAo
YykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8v
IFdpblJUUGl4bWFwLmNwcDogU3R1YiBpbXBsZW1lbnRhdGlvbiBvZiBPU1BpeG1hcCBmdW5jdGlv
bnMgZm9yIFdpblJUIChXaW5kb3dzKQorCisjaW5jbHVkZSAiT1NQaXhtYXAuaCIKKworI2luY2x1
ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCitPU1BpeG1hcCAqQ3JlYXRlT1NQaXhtYXAoKQoreworICAg
IFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3dpbmRvd3Mv
d2lucnQvV2luUlRXaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3V0aWwvd2luZG93cy93aW5ydC9XaW5SVFdpbmRvdy5jcHAJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC93aW5kb3dzL3dpbnJ0L1dpblJUV2luZG93LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4NCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykg
MjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFdp
blJUV2luZG93LmNwcDogSW1wbGVtZW50YXRpb24gb2YgT1NXaW5kb3cgZm9yIFdpblJUIChXaW5k
b3dzKQorCisjaW5jbHVkZSAid2luZG93cy93aW5ydC9XaW5SVFdpbmRvdy5oIgorCisjaW5jbHVk
ZSA8d3JsLmg+CisjaW5jbHVkZSA8d2luZG93cy5hcHBsaWNhdGlvbm1vZGVsLmNvcmUuaD4KKyNp
bmNsdWRlIDx3aW5kb3dzLnVpLnhhbWwuaD4KKworI2luY2x1ZGUgImFuZ2xlX3dpbmRvd3NzdG9y
ZS5oIgorI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCit1c2luZyBuYW1lc3BhY2UgQUJJOjpX
aW5kb3dzOjpBcHBsaWNhdGlvbk1vZGVsOjpDb3JlOwordXNpbmcgbmFtZXNwYWNlIEFCSTo6V2lu
ZG93czo6Rm91bmRhdGlvbjsKK3VzaW5nIG5hbWVzcGFjZSBBQkk6OldpbmRvd3M6OkZvdW5kYXRp
b246OkNvbGxlY3Rpb25zOwordXNpbmcgbmFtZXNwYWNlIEFCSTo6V2luZG93czo6VUk6OkNvcmU7
Cit1c2luZyBuYW1lc3BhY2UgTWljcm9zb2Z0OjpXUkw7Cit1c2luZyBuYW1lc3BhY2UgTWljcm9z
b2Z0OjpXUkw6OldyYXBwZXJzOworCitXaW5SVFdpbmRvdzo6V2luUlRXaW5kb3coKSA6IG1OYXRp
dmVXaW5kb3cobnVsbHB0cikKK3sKK30KKworV2luUlRXaW5kb3c6On5XaW5SVFdpbmRvdygpCit7
CisgICAgZGVzdHJveSgpOworfQorCitib29sIFdpblJUV2luZG93Ojppbml0aWFsaXplKGNvbnN0
IHN0ZDo6c3RyaW5nICZuYW1lLCBzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQpCit7CisgICAg
Q29tUHRyPElDb3JlV2luZG93U3RhdGljPiBjb3JlV2luZG93U3RhdGljOworICAgIENvbVB0cjxJ
QWN0aXZhdGlvbkZhY3Rvcnk+IHByb3BlcnR5U2V0RmFjdG9yeTsKKyAgICBDb21QdHI8SVByb3Bl
cnR5VmFsdWVTdGF0aWNzPiBwcm9wZXJ0eVZhbHVlU3RhdGljczsKKworICAgIENvbVB0cjxJQ29y
ZUFwcGxpY2F0aW9uPiBjb3JlQXBwbGljYXRpb247CisgICAgQ29tUHRyPElQcm9wZXJ0eVNldD4g
Y29yZUFwcGxpY2F0aW9uUHJvcGVydGllczsKKyAgICBDb21QdHI8SU1hcDxIU1RSSU5HLCBJSW5z
cGVjdGFibGUgKj4+IGNvcmVBcHBsaWNhdGlvblByb3BlcnRpZXNBc01hcDsKKworICAgIENvbVB0
cjxJTWFwPEhTVFJJTkcsIElJbnNwZWN0YWJsZSAqPj4gbmF0aXZlV2luZG93QXNNYXA7CisgICAg
Q29tUHRyPElJbnNwZWN0YWJsZT4gc2l6ZVZhbHVlOworCisgICAgSFJFU1VMVCByZXN1bHQgICAg
ICAgICAgID0gU19PSzsKKyAgICBib29sZWFuIHByb3BlcnR5UmVwbGFjZWQgPSBmYWxzZTsKKwor
ICAgIGRlc3Ryb3koKTsKKworICAgIC8vIEdldCBhbGwgdGhlIHJlbGV2YW50IGFjdGl2YXRpb24g
ZmFjdG9yaWVzCisgICAgcmVzdWx0ID0gR2V0QWN0aXZhdGlvbkZhY3RvcnkoCisgICAgICAgIEhT
dHJpbmdSZWZlcmVuY2UoUnVudGltZUNsYXNzX1dpbmRvd3NfVUlfQ29yZV9Db3JlV2luZG93KS5H
ZXQoKSwgJmNvcmVXaW5kb3dTdGF0aWMpOworICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICB7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXN1bHQgPSBHZXRBY3RpdmF0
aW9uRmFjdG9yeSgKKyAgICAgICAgSFN0cmluZ1JlZmVyZW5jZShSdW50aW1lQ2xhc3NfV2luZG93
c19Gb3VuZGF0aW9uX0NvbGxlY3Rpb25zX1Byb3BlcnR5U2V0KS5HZXQoKSwKKyAgICAgICAgJnBy
b3BlcnR5U2V0RmFjdG9yeSk7CisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJlc3VsdCA9CisgICAgICAgIEdldEFjdGl2
YXRpb25GYWN0b3J5KEhTdHJpbmdSZWZlcmVuY2UoUnVudGltZUNsYXNzX1dpbmRvd3NfRm91bmRh
dGlvbl9Qcm9wZXJ0eVZhbHVlKS5HZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JnByb3BlcnR5VmFsdWVTdGF0aWNzKTsKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgewor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmVzdWx0ID0gR2V0QWN0aXZhdGlv
bkZhY3RvcnkoCisgICAgICAgIEhTdHJpbmdSZWZlcmVuY2UoUnVudGltZUNsYXNzX1dpbmRvd3Nf
QXBwbGljYXRpb25Nb2RlbF9Db3JlX0NvcmVBcHBsaWNhdGlvbikuR2V0KCksCisgICAgICAgICZj
b3JlQXBwbGljYXRpb24pOworICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICB7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBDcmVhdGUgYSBQcm9wZXJ0eVNldCB0byBi
ZSB1c2VkIGFzIHRoZSBuYXRpdmUgd2luZG93CisgICAgcmVzdWx0ID0gcHJvcGVydHlTZXRGYWN0
b3J5LT5BY3RpdmF0ZUluc3RhbmNlKCZtTmF0aXZlV2luZG93KTsKKyAgICBpZiAoRkFJTEVEKHJl
c3VsdCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gR2V0
IHRoZSBQcm9wZXJ0eVNldCBhcyBhIG1hcCwgc28gd2UgY2FuIEluc2VydCB0aGluZ3MgaW50byBp
dCBsYXRlcgorICAgIENvbVB0cjxJSW5zcGVjdGFibGU+IHRlbXBOYXRpdmVXaW5kb3cgPSBtTmF0
aXZlV2luZG93OworICAgIHJlc3VsdCA9IHRlbXBOYXRpdmVXaW5kb3cuQXMoJm5hdGl2ZVdpbmRv
d0FzTWFwKTsKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgLy8gR2V0IHRoZSBDb3JlQXBwbGljYXRpb24gcHJvcGVydGll
cworICAgIHJlc3VsdCA9IGNvcmVBcHBsaWNhdGlvbi0+Z2V0X1Byb3BlcnRpZXMoY29yZUFwcGxp
Y2F0aW9uUHJvcGVydGllcy5HZXRBZGRyZXNzT2YoKSk7CisgICAgaWYgKEZBSUxFRChyZXN1bHQp
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIEdldCB0aGUg
Q29yZUFwcGxpY2F0aW9uIHByb3BlcnRpZXMgYXMgYSBtYXAKKyAgICByZXN1bHQgPSBjb3JlQXBw
bGljYXRpb25Qcm9wZXJ0aWVzLkFzKCZjb3JlQXBwbGljYXRpb25Qcm9wZXJ0aWVzQXNNYXApOwor
ICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICAvLyBTZWUgaWYgdGhlIGFwcGxpY2F0aW9uIHByb3BlcnRpZXMgY29udGFpbiBh
biBFR0xOYXRpdmVXaW5kb3dUeXBlUHJvcGVydHkKKyAgICBib29sZWFuIGhhc0VHTE5hdGl2ZVdp
bmRvd1R5cGVQcm9wZXJ0eTsKKyAgICByZXN1bHQgPSBjb3JlQXBwbGljYXRpb25Qcm9wZXJ0aWVz
QXNNYXAtPkhhc0tleSgKKyAgICAgICAgSFN0cmluZ1JlZmVyZW5jZShFR0xOYXRpdmVXaW5kb3dU
eXBlUHJvcGVydHkpLkdldCgpLCAmaGFzRUdMTmF0aXZlV2luZG93VHlwZVByb3BlcnR5KTsKKyAg
ICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgLy8gSWYgYW4gRUdMTmF0aXZlV2luZG93VHlwZVByb3BlcnR5IGlzIGlucHV0dGVk
IHRoZW4gdXNlIGl0CisgICAgaWYgKGhhc0VHTE5hdGl2ZVdpbmRvd1R5cGVQcm9wZXJ0eSkKKyAg
ICB7CisgICAgICAgIENvbVB0cjxJSW5zcGVjdGFibGU+IGNvcmVBcHBsaWNhdGlvblByb3BlcnR5
TmF0aXZlV2luZG93OworCisgICAgICAgIHJlc3VsdCA9IGNvcmVBcHBsaWNhdGlvblByb3BlcnRp
ZXNBc01hcC0+TG9va3VwKAorICAgICAgICAgICAgSFN0cmluZ1JlZmVyZW5jZShFR0xOYXRpdmVX
aW5kb3dUeXBlUHJvcGVydHkpLkdldCgpLAorICAgICAgICAgICAgJmNvcmVBcHBsaWNhdGlvblBy
b3BlcnR5TmF0aXZlV2luZG93KTsKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICAvLyBT
ZWUgaWYgdGhlIGlucHV0dGVkIHdpbmRvdyB3YXMgYSBDb3JlV2luZG93CisgICAgICAgIENvbVB0
cjxJQ29yZVdpbmRvdz4gYXBwbGljYXRpb25Qcm9wZXJ0eUNvcmVXaW5kb3c7CisgICAgICAgIGlm
IChTVUNDRUVERUQoY29yZUFwcGxpY2F0aW9uUHJvcGVydHlOYXRpdmVXaW5kb3cuQXMoJmFwcGxp
Y2F0aW9uUHJvcGVydHlDb3JlV2luZG93KSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFN0
b3JlIGF3YXkgdGhlIENvcmVXaW5kb3cncyBkaXNwYXRjaGVyLCB0byBiZSB1c2VkIGxhdGVyIHRv
IHByb2Nlc3MgbWVzc2FnZXMKKyAgICAgICAgICAgIHJlc3VsdCA9IGFwcGxpY2F0aW9uUHJvcGVy
dHlDb3JlV2luZG93LT5nZXRfRGlzcGF0Y2hlcigmbUNvcmVEaXNwYXRjaGVyKTsKKyAgICAgICAg
ICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAg
ICAgICB7CisgICAgICAgICAgICBDb21QdHI8SVByb3BlcnR5U2V0PiBwcm9wU2V0OworCisgICAg
ICAgICAgICAvLyBEaXNhbGxvdyBQcm9wZXJ0eSBTZXRzIGhlcmUsIHNpbmNlIHdlIHdhbnQgdG8g
d3JhcCB0aGlzIHdpbmRvdyBpbgorICAgICAgICAgICAgLy8gYSBwcm9wZXJ0eSBzZXQgd2l0aCB0
aGUgc2l6ZSBwcm9wZXJ0eSBiZWxvdworICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChjb3JlQXBw
bGljYXRpb25Qcm9wZXJ0eU5hdGl2ZVdpbmRvdy5BcygmcHJvcFNldCkpKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgIC8vIEFkZCB0aGUgd2luZG93IHRvIHRoZSBtYXAKKyAgICAgICAgcmVzdWx0
ID0KKyAgICAgICAgICAgIG5hdGl2ZVdpbmRvd0FzTWFwLT5JbnNlcnQoSFN0cmluZ1JlZmVyZW5j
ZShFR0xOYXRpdmVXaW5kb3dUeXBlUHJvcGVydHkpLkdldCgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb3JlQXBwbGljYXRpb25Qcm9wZXJ0eU5hdGl2ZVdpbmRvdy5H
ZXQoKSwgJnByb3BlcnR5UmVwbGFjZWQpOworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBlbHNlCisgICAgeworICAgICAgICBDb21QdHI8SUNvcmVXaW5kb3c+IGN1cnJlbnRUaHJlYWRD
b3JlV2luZG93OworCisgICAgICAgIC8vIEdldCB0aGUgQ29yZVdpbmRvdyBmb3IgdGhlIGN1cnJl
bnQgdGhyZWFkCisgICAgICAgIHJlc3VsdCA9IGNvcmVXaW5kb3dTdGF0aWMtPkdldEZvckN1cnJl
bnRUaHJlYWQoJmN1cnJlbnRUaHJlYWRDb3JlV2luZG93KTsKKyAgICAgICAgaWYgKEZBSUxFRChy
ZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KworICAgICAgICAvLyBCeSBkZWZhdWx0LCBqdXN0IGFkZCB0aGlzIHRocmVhZCdzIENvcmVXaW5k
b3cgdG8gdGhlIFByb3BlcnR5U2V0CisgICAgICAgIHJlc3VsdCA9IG5hdGl2ZVdpbmRvd0FzTWFw
LT5JbnNlcnQoSFN0cmluZ1JlZmVyZW5jZShFR0xOYXRpdmVXaW5kb3dUeXBlUHJvcGVydHkpLkdl
dCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRU
aHJlYWRDb3JlV2luZG93LkdldCgpLCAmcHJvcGVydHlSZXBsYWNlZCk7CisgICAgICAgIGlmIChG
QUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gU3RvcmUgYXdheSB0aGUgQ29yZVdpbmRvdydzIGRpc3BhdGNo
ZXIsIHRvIGJlIHVzZWQgbGF0ZXIgdG8gcHJvY2VzcyBtZXNzYWdlcworICAgICAgICByZXN1bHQg
PSBjdXJyZW50VGhyZWFkQ29yZVdpbmRvdy0+Z2V0X0Rpc3BhdGNoZXIoJm1Db3JlRGlzcGF0Y2hl
cik7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gQ3JlYXRlIGEgU2l6ZSB0
byByZXByZXNlbnQgdGhlIE5hdGl2ZSBXaW5kb3cncyBzaXplCisgICAgU2l6ZSByZW5kZXJTaXpl
OworICAgIHJlbmRlclNpemUuV2lkdGggID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHdpZHRoKTsKKyAg
ICByZW5kZXJTaXplLkhlaWdodCA9IHN0YXRpY19jYXN0PGZsb2F0PihoZWlnaHQpOworICAgIHJl
c3VsdCA9IHByb3BlcnR5VmFsdWVTdGF0aWNzLT5DcmVhdGVTaXplKHJlbmRlclNpemUsIHNpemVW
YWx1ZS5HZXRBZGRyZXNzT2YoKSk7CisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIEFkZCB0aGUgU2l6ZSB0byB0aGUg
UHJvcGVydHlTZXQKKyAgICByZXN1bHQgPSBuYXRpdmVXaW5kb3dBc01hcC0+SW5zZXJ0KEhTdHJp
bmdSZWZlcmVuY2UoRUdMUmVuZGVyU3VyZmFjZVNpemVQcm9wZXJ0eSkuR2V0KCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplVmFsdWUuR2V0KCksICZwcm9wZXJ0
eVJlcGxhY2VkKTsKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9OworCit2b2lkIFdpblJUV2lu
ZG93OjpkZXN0cm95KCkKK3sKKyAgICBTYWZlUmVsZWFzZShtTmF0aXZlV2luZG93KTsKKworICAg
IG1Db3JlRGlzcGF0Y2hlci5SZXNldCgpOworfQorCitFR0xOYXRpdmVXaW5kb3dUeXBlIFdpblJU
V2luZG93OjpnZXROYXRpdmVXaW5kb3coKSBjb25zdAoreworICAgIHJldHVybiBtTmF0aXZlV2lu
ZG93OworfQorCitFR0xOYXRpdmVEaXNwbGF5VHlwZSBXaW5SVFdpbmRvdzo6Z2V0TmF0aXZlRGlz
cGxheSgpIGNvbnN0Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxFR0xOYXRpdmVEaXNwbGF5VHlwZT4oMCk7Cit9CisKK3ZvaWQgV2luUlRXaW5kb3c6Om1l
c3NhZ2VMb29wKCkKK3sKKyAgICAvLyBJZiB3ZSBoYXZlIGEgQ29yZURpc3BhdGNoZXIgdGhlbiB1
c2UgaXQgdG8gcHJvY2VzcyBldmVudHMKKyAgICBpZiAobUNvcmVEaXNwYXRjaGVyKQorICAgIHsK
KyAgICAgICAgSFJFU1VMVCByZXN1bHQgPQorICAgICAgICAgICAgbUNvcmVEaXNwYXRjaGVyLT5Q
cm9jZXNzRXZlbnRzKENvcmVQcm9jZXNzRXZlbnRzT3B0aW9uX1Byb2Nlc3NBbGxJZlByZXNlbnQp
OworICAgICAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKHJlc3VsdCk7CisgICAgICAgIEFT
U0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisgICAgfQorfQorCit2b2lkIFdpblJUV2luZG93Ojpz
ZXRNb3VzZVBvc2l0aW9uKGludCAvKiB4ICovLCBpbnQgLyogeSAqLykKK3sKKyAgICBVTklNUExF
TUVOVEVEKCk7Cit9CisKK2Jvb2wgV2luUlRXaW5kb3c6OnNldFBvc2l0aW9uKGludCAvKiB4ICov
LCBpbnQgLyogeSAqLykKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIFdpblJUV2luZG93OjpyZXNpemUoaW50IC8qIHdpZHRoICovLCBpbnQgLyog
aGVpZ2h0ICovKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3ZvaWQgV2luUlRXaW5kb3c6OnNldFZpc2libGUoYm9vbCBpc1Zpc2libGUpCit7CisgICAg
aWYgKGlzVmlzaWJsZSkKKyAgICB7CisgICAgICAgIC8vIEFscmVhZHkgdmlzaWJsZSBieSBkZWZh
dWx0CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgLy8g
Tm90IGltcGxlbWVudGVkIGluIFdpblJUCisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9
Cit9CisKK3ZvaWQgV2luUlRXaW5kb3c6OnNpZ25hbFRlc3RFdmVudCgpCit7CisgICAgVU5JTVBM
RU1FTlRFRCgpOworfQorCitPU1dpbmRvdyAqQ3JlYXRlT1NXaW5kb3coKQoreworICAgIHJldHVy
biBuZXcgV2luUlRXaW5kb3coKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3dpbmRvd3Mvd2lucnQvV2luUlRXaW5kb3cu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3dpbmRvd3Mvd2lu
cnQvV2luUlRXaW5kb3cuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS91dGlsL3dpbmRvd3Mvd2lucnQvV2luUlRXaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQ1IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gV2luUlRXaW5kb3cuaDogRGVmaW5pdGlvbiBv
ZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgT1NXaW5kb3cgZm9yIFdpblJUIChXaW5kb3dzKQorCisj
aWZuZGVmIFVUSUxfV0lOUlRfV0lORE9XX0gKKyNkZWZpbmUgVVRJTF9XSU5SVF9XSU5ET1dfSAor
CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3aW5k
b3dzLmFwcGxpY2F0aW9ubW9kZWwuY29yZS5oPgorI2luY2x1ZGUgPHdybC5oPgorCisjaW5jbHVk
ZSAiT1NXaW5kb3cuaCIKKworY2xhc3MgV2luUlRXaW5kb3cgOiBwdWJsaWMgT1NXaW5kb3cKK3sK
KyAgcHVibGljOgorICAgIFdpblJUV2luZG93KCk7CisgICAgfldpblJUV2luZG93KCkgb3ZlcnJp
ZGU7CisKKyAgICBib29sIGluaXRpYWxpemUoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsIHNpemVf
dCB3aWR0aCwgc2l6ZV90IGhlaWdodCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXN0cm95KCkgb3Zl
cnJpZGU7CisKKyAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIGdldE5hdGl2ZVdpbmRvdygpIGNvbnN0
IG92ZXJyaWRlOworICAgIEVHTE5hdGl2ZURpc3BsYXlUeXBlIGdldE5hdGl2ZURpc3BsYXkoKSBj
b25zdCBvdmVycmlkZTsKKworICAgIHZvaWQgbWVzc2FnZUxvb3AoKSBvdmVycmlkZTsKKworICAg
IHZvaWQgc2V0TW91c2VQb3NpdGlvbihpbnQgeCwgaW50IHkpIG92ZXJyaWRlOworICAgIGJvb2wg
c2V0UG9zaXRpb24oaW50IHgsIGludCB5KSBvdmVycmlkZTsKKyAgICBib29sIHJlc2l6ZShpbnQg
d2lkdGgsIGludCBoZWlnaHQpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VmlzaWJsZShib29sIGlz
VmlzaWJsZSkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNpZ25hbFRlc3RFdmVudCgpIG92ZXJyaWRl
OworCisgIHByaXZhdGU6CisgICAgRUdMTmF0aXZlV2luZG93VHlwZSBtTmF0aXZlV2luZG93Owor
ICAgIE1pY3Jvc29mdDo6V1JMOjpDb21QdHI8QUJJOjpXaW5kb3dzOjpVSTo6Q29yZTo6SUNvcmVE
aXNwYXRjaGVyPiBtQ29yZURpc3BhdGNoZXI7Cit9OworCisjZW5kaWYgIC8vIFVUSUxfV0lOUlRf
V0lORE9XX0gKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvd2luZG93cy93aW5y
dC9XaW5SVF9zeXN0ZW1fdXRpbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3V0aWwvd2luZG93cy93aW5ydC9XaW5SVF9zeXN0ZW1fdXRpbHMuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvd2luZG93cy93aW5ydC9XaW5S
VF9zeXN0ZW1fdXRpbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjggQEAKKy8vCisv
LyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworCisvLyBXaW5SVF9zeXN0ZW1fdXRpbHMuY3BwOiBJbXBsZW1lbnRhdGlvbiBvZiBP
Uy1zcGVjaWZpYyBmdW5jdGlvbnMgZm9yIFdpblJUIChXaW5kb3dzKQorCisjaW5jbHVkZSAic3lz
dGVtX3V0aWxzLmgiCisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8YXJyYXk+CisK
K25hbWVzcGFjZSBhbmdsZQoreworCit2b2lkIFNldExvd1ByaW9yaXR5UHJvY2VzcygpCit7Cisg
ICAgLy8gTm8gZXF1aXZhbGVudCB0byB0aGlzIGluIFdpblJUCit9CisKK0xpYnJhcnkgKmxvYWRM
aWJyYXJ5KGNvbnN0IHN0ZDo6c3RyaW5nICZsaWJyYXJ5TmFtZSkKK3sKKyAgICAvLyBXaW5SVCBj
YW5ub3QgbG9hZCBjb2RlIGR5bmFtaWNhbGx5LgorICAgIHJldHVybiBudWxscHRyOworfQorCit9
ICAvLyBuYW1lc3BhY2UgYW5nbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwv
eDExL1gxMVBpeG1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
dXRpbC94MTEvWDExUGl4bWFwLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS91dGlsL3gxMS9YMTFQaXhtYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NDUgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBYMTFQaXhtYXAuY3BwOiBJbXBsZW1lbnRhdGlvbiBv
ZiBPU1BpeG1hcCBmb3IgWDExCisKKyNpbmNsdWRlICJ4MTEvWDExUGl4bWFwLmgiCisKK1gxMVBp
eG1hcDo6WDExUGl4bWFwKCkKKyAgOiBtUGl4bWFwKDApLAorICAgIG1EaXNwbGF5KG51bGxwdHIp
Cit7Cit9CisKK1gxMVBpeG1hcDo6flgxMVBpeG1hcCgpCit7CisgICAgaWYgKG1QaXhtYXApCisg
ICAgeworICAgICAgICBYRnJlZVBpeG1hcChtRGlzcGxheSwgbVBpeG1hcCk7CisgICAgfQorfQor
Citib29sIFgxMVBpeG1hcDo6aW5pdGlhbGl6ZShFR0xOYXRpdmVEaXNwbGF5VHlwZSBkaXNwbGF5
LCBzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIGludCBkZXB0aCkKK3sKKyAgICBtRGlzcGxh
eSA9IGRpc3BsYXk7CisKKyAgICBpbnQgc2NyZWVuID0gRGVmYXVsdFNjcmVlbihtRGlzcGxheSk7
CisgICAgV2luZG93IHJvb3QgPSBSb290V2luZG93KG1EaXNwbGF5LCBzY3JlZW4pOworCisgICAg
bVBpeG1hcCA9IFhDcmVhdGVQaXhtYXAobURpc3BsYXksIHJvb3QsIHdpZHRoLCBoZWlnaHQsIGRl
cHRoKTsKKworICAgIHJldHVybiBtUGl4bWFwICE9IDA7Cit9CisKK0VHTE5hdGl2ZVBpeG1hcFR5
cGUgWDExUGl4bWFwOjpnZXROYXRpdmVQaXhtYXAoKSBjb25zdAoreworICAgIHJldHVybiBtUGl4
bWFwOworfQorCitPU1BpeG1hcCAqQ3JlYXRlT1NQaXhtYXAoKQoreworICAgIHJldHVybiBuZXcg
WDExUGl4bWFwKCk7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3gxMS9Y
MTFQaXhtYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3gx
MS9YMTFQaXhtYXAuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91
dGlsL3gxMS9YMTFQaXhtYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyIEBACisvLwor
Ly8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgorLy8KKworLy8gWDExUGl4bWFwLmg6IERlZmluaXRpb24gb2YgdGhlIGltcGxlbWVudGF0
aW9uIG9mIE9TUGl4bWFwIGZvciBYMTEKKworI2lmbmRlZiBVVElMX1gxMV9QSVhNQVBfSF8KKyNk
ZWZpbmUgVVRJTF9YMTFfUElYTUFQX0hfCisKKyNpbmNsdWRlIDxYMTEvWGxpYi5oPgorI2luY2x1
ZGUgPFgxMS9YdXRpbC5oPgorCisjaW5jbHVkZSAiT1NQaXhtYXAuaCIKKworY2xhc3MgWDExUGl4
bWFwIDogcHVibGljIE9TUGl4bWFwCit7CisgIHB1YmxpYzoKKyAgICBYMTFQaXhtYXAoKTsKKyAg
ICB+WDExUGl4bWFwKCkgb3ZlcnJpZGU7CisKKyAgICBib29sIGluaXRpYWxpemUoRUdMTmF0aXZl
RGlzcGxheVR5cGUgZGlzcGxheSwgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBpbnQgZGVw
dGgpIG92ZXJyaWRlOworCisgICAgRUdMTmF0aXZlUGl4bWFwVHlwZSBnZXROYXRpdmVQaXhtYXAo
KSBjb25zdCBvdmVycmlkZTsKKworICBwcml2YXRlOgorICAgIFBpeG1hcCBtUGl4bWFwOworICAg
IERpc3BsYXkgKm1EaXNwbGF5OworfTsKKworI2VuZGlmIC8vIFVUSUxfWDExX1BJWE1BUF9IXwpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC94MTEvWDExV2luZG93LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3gxMS9YMTFXaW5kb3cuY3Bw
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwveDExL1gxMVdp
bmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MTEgQEAKKy8vCisvLyBDb3B5cmln
aHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLwor
CisvLyBYMTFXaW5kb3cuY3BwOiBJbXBsZW1lbnRhdGlvbiBvZiBPU1dpbmRvdyBmb3IgWDExCisK
KyNpbmNsdWRlICJ4MTEvWDExV2luZG93LmgiCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIK
KyNpbmNsdWRlICJzeXN0ZW1fdXRpbHMuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorCituYW1lc3Bh
Y2UgeworCitCb29sIFdhaXRGb3JNYXBOb3RpZnkoRGlzcGxheSAqZHB5LCBYRXZlbnQgKmV2ZW50
LCBYUG9pbnRlciB3aW5kb3cpCit7CisgICAgcmV0dXJuIGV2ZW50LT50eXBlID09IE1hcE5vdGlm
eSAmJiBldmVudC0+eG1hcC53aW5kb3cgPT0gcmVpbnRlcnByZXRfY2FzdDxXaW5kb3c+KHdpbmRv
dyk7Cit9CisKK3N0YXRpYyBLZXkgWDExQ29kZVRvS2V5KERpc3BsYXkgKmRpc3BsYXksIHVuc2ln
bmVkIGludCBzY2FuY29kZSkKK3sKKyAgICBpbnQgdGVtcDsKKyAgICBLZXlTeW0gKmtleVN5bWJv
bHM7CisgICAga2V5U3ltYm9scyA9IFhHZXRLZXlib2FyZE1hcHBpbmcoZGlzcGxheSwgc2NhbmNv
ZGUsIDEsICZ0ZW1wKTsKKworICAgIHVuc2lnbmVkIGludCBrZXlTeW1ib2wgPSBrZXlTeW1ib2xz
WzBdOworICAgIFhGcmVlKGtleVN5bWJvbHMpOworCisgICAgc3dpdGNoIChrZXlTeW1ib2wpCisg
ICAgeworICAgICAgY2FzZSBYS19TaGlmdF9MOiAgICAgcmV0dXJuIEtFWV9MU0hJRlQ7CisgICAg
ICBjYXNlIFhLX1NoaWZ0X1I6ICAgICByZXR1cm4gS0VZX1JTSElGVDsKKyAgICAgIGNhc2UgWEtf
QWx0X0w6ICAgICAgIHJldHVybiBLRVlfTEFMVDsKKyAgICAgIGNhc2UgWEtfQWx0X1I6ICAgICAg
IHJldHVybiBLRVlfUkFMVDsKKyAgICAgIGNhc2UgWEtfQ29udHJvbF9MOiAgIHJldHVybiBLRVlf
TENPTlRST0w7CisgICAgICBjYXNlIFhLX0NvbnRyb2xfUjogICByZXR1cm4gS0VZX1JDT05UUk9M
OworICAgICAgY2FzZSBYS19TdXBlcl9MOiAgICAgcmV0dXJuIEtFWV9MU1lTVEVNOworICAgICAg
Y2FzZSBYS19TdXBlcl9SOiAgICAgcmV0dXJuIEtFWV9SU1lTVEVNOworICAgICAgY2FzZSBYS19N
ZW51OiAgICAgICAgcmV0dXJuIEtFWV9NRU5VOworCisgICAgICBjYXNlIFhLX3NlbWljb2xvbjog
ICByZXR1cm4gS0VZX1NFTUlDT0xPTjsKKyAgICAgIGNhc2UgWEtfc2xhc2g6ICAgICAgIHJldHVy
biBLRVlfU0xBU0g7CisgICAgICBjYXNlIFhLX2VxdWFsOiAgICAgICByZXR1cm4gS0VZX0VRVUFM
OworICAgICAgY2FzZSBYS19taW51czogICAgICAgcmV0dXJuIEtFWV9EQVNIOworICAgICAgY2Fz
ZSBYS19icmFja2V0bGVmdDogcmV0dXJuIEtFWV9MQlJBQ0tFVDsKKyAgICAgIGNhc2UgWEtfYnJh
Y2tldHJpZ2h0OnJldHVybiBLRVlfUkJSQUNLRVQ7CisgICAgICBjYXNlIFhLX2NvbW1hOiAgICAg
ICByZXR1cm4gS0VZX0NPTU1BOworICAgICAgY2FzZSBYS19wZXJpb2Q6ICAgICAgcmV0dXJuIEtF
WV9QRVJJT0Q7CisgICAgICBjYXNlIFhLX2JhY2tzbGFzaDogICByZXR1cm4gS0VZX0JBQ0tTTEFT
SDsKKyAgICAgIGNhc2UgWEtfYXNjaWl0aWxkZTogIHJldHVybiBLRVlfVElMREU7CisgICAgICBj
YXNlIFhLX0VzY2FwZTogICAgICByZXR1cm4gS0VZX0VTQ0FQRTsKKyAgICAgIGNhc2UgWEtfc3Bh
Y2U6ICAgICAgIHJldHVybiBLRVlfU1BBQ0U7CisgICAgICBjYXNlIFhLX1JldHVybjogICAgICBy
ZXR1cm4gS0VZX1JFVFVSTjsKKyAgICAgIGNhc2UgWEtfQmFja1NwYWNlOiAgIHJldHVybiBLRVlf
QkFDSzsKKyAgICAgIGNhc2UgWEtfVGFiOiAgICAgICAgIHJldHVybiBLRVlfVEFCOworICAgICAg
Y2FzZSBYS19QYWdlX1VwOiAgICAgcmV0dXJuIEtFWV9QQUdFVVA7CisgICAgICBjYXNlIFhLX1Bh
Z2VfRG93bjogICByZXR1cm4gS0VZX1BBR0VET1dOOworICAgICAgY2FzZSBYS19FbmQ6ICAgICAg
ICAgcmV0dXJuIEtFWV9FTkQ7CisgICAgICBjYXNlIFhLX0hvbWU6ICAgICAgICByZXR1cm4gS0VZ
X0hPTUU7CisgICAgICBjYXNlIFhLX0luc2VydDogICAgICByZXR1cm4gS0VZX0lOU0VSVDsKKyAg
ICAgIGNhc2UgWEtfRGVsZXRlOiAgICAgIHJldHVybiBLRVlfREVMRVRFOworICAgICAgY2FzZSBY
S19LUF9BZGQ6ICAgICAgcmV0dXJuIEtFWV9BREQ7CisgICAgICBjYXNlIFhLX0tQX1N1YnRyYWN0
OiByZXR1cm4gS0VZX1NVQlRSQUNUOworICAgICAgY2FzZSBYS19LUF9NdWx0aXBseTogcmV0dXJu
IEtFWV9NVUxUSVBMWTsKKyAgICAgIGNhc2UgWEtfS1BfRGl2aWRlOiAgIHJldHVybiBLRVlfRElW
SURFOworICAgICAgY2FzZSBYS19QYXVzZTogICAgICAgcmV0dXJuIEtFWV9QQVVTRTsKKworICAg
ICAgY2FzZSBYS19GMTogICAgICAgICAgcmV0dXJuIEtFWV9GMTsKKyAgICAgIGNhc2UgWEtfRjI6
ICAgICAgICAgIHJldHVybiBLRVlfRjI7CisgICAgICBjYXNlIFhLX0YzOiAgICAgICAgICByZXR1
cm4gS0VZX0YzOworICAgICAgY2FzZSBYS19GNDogICAgICAgICAgcmV0dXJuIEtFWV9GNDsKKyAg
ICAgIGNhc2UgWEtfRjU6ICAgICAgICAgIHJldHVybiBLRVlfRjU7CisgICAgICBjYXNlIFhLX0Y2
OiAgICAgICAgICByZXR1cm4gS0VZX0Y2OworICAgICAgY2FzZSBYS19GNzogICAgICAgICAgcmV0
dXJuIEtFWV9GNzsKKyAgICAgIGNhc2UgWEtfRjg6ICAgICAgICAgIHJldHVybiBLRVlfRjg7Cisg
ICAgICBjYXNlIFhLX0Y5OiAgICAgICAgICByZXR1cm4gS0VZX0Y5OworICAgICAgY2FzZSBYS19G
MTA6ICAgICAgICAgcmV0dXJuIEtFWV9GMTA7CisgICAgICBjYXNlIFhLX0YxMTogICAgICAgICBy
ZXR1cm4gS0VZX0YxMTsKKyAgICAgIGNhc2UgWEtfRjEyOiAgICAgICAgIHJldHVybiBLRVlfRjEy
OworICAgICAgY2FzZSBYS19GMTM6ICAgICAgICAgcmV0dXJuIEtFWV9GMTM7CisgICAgICBjYXNl
IFhLX0YxNDogICAgICAgICByZXR1cm4gS0VZX0YxNDsKKyAgICAgIGNhc2UgWEtfRjE1OiAgICAg
ICAgIHJldHVybiBLRVlfRjE1OworCisgICAgICBjYXNlIFhLX0xlZnQ6ICAgICAgICByZXR1cm4g
S0VZX0xFRlQ7CisgICAgICBjYXNlIFhLX1JpZ2h0OiAgICAgICByZXR1cm4gS0VZX1JJR0hUOwor
ICAgICAgY2FzZSBYS19Eb3duOiAgICAgICAgcmV0dXJuIEtFWV9ET1dOOworICAgICAgY2FzZSBY
S19VcDogICAgICAgICAgcmV0dXJuIEtFWV9VUDsKKworICAgICAgY2FzZSBYS19LUF9JbnNlcnQ6
ICAgcmV0dXJuIEtFWV9OVU1QQUQwOworICAgICAgY2FzZSBYS19LUF9FbmQ6ICAgICAgcmV0dXJu
IEtFWV9OVU1QQUQxOworICAgICAgY2FzZSBYS19LUF9Eb3duOiAgICAgcmV0dXJuIEtFWV9OVU1Q
QUQyOworICAgICAgY2FzZSBYS19LUF9QYWdlX0Rvd246cmV0dXJuIEtFWV9OVU1QQUQzOworICAg
ICAgY2FzZSBYS19LUF9MZWZ0OiAgICAgcmV0dXJuIEtFWV9OVU1QQUQ0OworICAgICAgY2FzZSBY
S19LUF81OiAgICAgICAgcmV0dXJuIEtFWV9OVU1QQUQ1OworICAgICAgY2FzZSBYS19LUF9SaWdo
dDogICAgcmV0dXJuIEtFWV9OVU1QQUQ2OworICAgICAgY2FzZSBYS19LUF9Ib21lOiAgICAgcmV0
dXJuIEtFWV9OVU1QQUQ3OworICAgICAgY2FzZSBYS19LUF9VcDogICAgICAgcmV0dXJuIEtFWV9O
VU1QQUQ4OworICAgICAgY2FzZSBYS19LUF9QYWdlX1VwOiAgcmV0dXJuIEtFWV9OVU1QQUQ5Owor
CisgICAgICBjYXNlIFhLX2E6ICAgICAgICAgICByZXR1cm4gS0VZX0E7CisgICAgICBjYXNlIFhL
X2I6ICAgICAgICAgICByZXR1cm4gS0VZX0I7CisgICAgICBjYXNlIFhLX2M6ICAgICAgICAgICBy
ZXR1cm4gS0VZX0M7CisgICAgICBjYXNlIFhLX2Q6ICAgICAgICAgICByZXR1cm4gS0VZX0Q7Cisg
ICAgICBjYXNlIFhLX2U6ICAgICAgICAgICByZXR1cm4gS0VZX0U7CisgICAgICBjYXNlIFhLX2Y6
ICAgICAgICAgICByZXR1cm4gS0VZX0Y7CisgICAgICBjYXNlIFhLX2c6ICAgICAgICAgICByZXR1
cm4gS0VZX0c7CisgICAgICBjYXNlIFhLX2g6ICAgICAgICAgICByZXR1cm4gS0VZX0g7CisgICAg
ICBjYXNlIFhLX2k6ICAgICAgICAgICByZXR1cm4gS0VZX0k7CisgICAgICBjYXNlIFhLX2o6ICAg
ICAgICAgICByZXR1cm4gS0VZX0o7CisgICAgICBjYXNlIFhLX2s6ICAgICAgICAgICByZXR1cm4g
S0VZX0s7CisgICAgICBjYXNlIFhLX2w6ICAgICAgICAgICByZXR1cm4gS0VZX0w7CisgICAgICBj
YXNlIFhLX206ICAgICAgICAgICByZXR1cm4gS0VZX007CisgICAgICBjYXNlIFhLX246ICAgICAg
ICAgICByZXR1cm4gS0VZX047CisgICAgICBjYXNlIFhLX286ICAgICAgICAgICByZXR1cm4gS0VZ
X087CisgICAgICBjYXNlIFhLX3A6ICAgICAgICAgICByZXR1cm4gS0VZX1A7CisgICAgICBjYXNl
IFhLX3E6ICAgICAgICAgICByZXR1cm4gS0VZX1E7CisgICAgICBjYXNlIFhLX3I6ICAgICAgICAg
ICByZXR1cm4gS0VZX1I7CisgICAgICBjYXNlIFhLX3M6ICAgICAgICAgICByZXR1cm4gS0VZX1M7
CisgICAgICBjYXNlIFhLX3Q6ICAgICAgICAgICByZXR1cm4gS0VZX1Q7CisgICAgICBjYXNlIFhL
X3U6ICAgICAgICAgICByZXR1cm4gS0VZX1U7CisgICAgICBjYXNlIFhLX3Y6ICAgICAgICAgICBy
ZXR1cm4gS0VZX1Y7CisgICAgICBjYXNlIFhLX3c6ICAgICAgICAgICByZXR1cm4gS0VZX1c7Cisg
ICAgICBjYXNlIFhLX3g6ICAgICAgICAgICByZXR1cm4gS0VZX1g7CisgICAgICBjYXNlIFhLX3k6
ICAgICAgICAgICByZXR1cm4gS0VZX1k7CisgICAgICBjYXNlIFhLX3o6ICAgICAgICAgICByZXR1
cm4gS0VZX1o7CisKKyAgICAgIGNhc2UgWEtfMTogICAgICAgICAgIHJldHVybiBLRVlfTlVNMTsK
KyAgICAgIGNhc2UgWEtfMjogICAgICAgICAgIHJldHVybiBLRVlfTlVNMjsKKyAgICAgIGNhc2Ug
WEtfMzogICAgICAgICAgIHJldHVybiBLRVlfTlVNMzsKKyAgICAgIGNhc2UgWEtfNDogICAgICAg
ICAgIHJldHVybiBLRVlfTlVNNDsKKyAgICAgIGNhc2UgWEtfNTogICAgICAgICAgIHJldHVybiBL
RVlfTlVNNTsKKyAgICAgIGNhc2UgWEtfNjogICAgICAgICAgIHJldHVybiBLRVlfTlVNNjsKKyAg
ICAgIGNhc2UgWEtfNzogICAgICAgICAgIHJldHVybiBLRVlfTlVNNzsKKyAgICAgIGNhc2UgWEtf
ODogICAgICAgICAgIHJldHVybiBLRVlfTlVNODsKKyAgICAgIGNhc2UgWEtfOTogICAgICAgICAg
IHJldHVybiBLRVlfTlVNOTsKKyAgICAgIGNhc2UgWEtfMDogICAgICAgICAgIHJldHVybiBLRVlf
TlVNMDsKKyAgICB9CisKKyAgICByZXR1cm4gS2V5KDApOworfQorCitzdGF0aWMgdm9pZCBBZGRY
MTFLZXlTdGF0ZVRvRXZlbnQoRXZlbnQgKmV2ZW50LCB1bnNpZ25lZCBpbnQgc3RhdGUpCit7Cisg
ICAgZXZlbnQtPktleS5TaGlmdCA9IHN0YXRlICYgU2hpZnRNYXNrOworICAgIGV2ZW50LT5LZXku
Q29udHJvbCA9IHN0YXRlICYgQ29udHJvbE1hc2s7CisgICAgZXZlbnQtPktleS5BbHQgPSBzdGF0
ZSAmIE1vZDFNYXNrOworICAgIGV2ZW50LT5LZXkuU3lzdGVtID0gc3RhdGUgJiBNb2Q0TWFzazsK
K30KKworfQorCitYMTFXaW5kb3c6OlgxMVdpbmRvdygpCisgICAgOiBXTV9ERUxFVEVfV0lORE9X
KE5vbmUpLAorICAgICAgV01fUFJPVE9DT0xTKE5vbmUpLAorICAgICAgVEVTVF9FVkVOVChOb25l
KSwKKyAgICAgIG1EaXNwbGF5KG51bGxwdHIpLAorICAgICAgbVdpbmRvdygwKSwKKyAgICAgIG1S
ZXF1ZXN0ZWRWaXN1YWxJZCgtMSksCisgICAgICBtVmlzaWJsZShmYWxzZSkKK3sKK30KKworWDEx
V2luZG93OjpYMTFXaW5kb3coaW50IHZpc3VhbElkKQorICAgIDogV01fREVMRVRFX1dJTkRPVyhO
b25lKSwKKyAgICAgIFdNX1BST1RPQ09MUyhOb25lKSwKKyAgICAgIFRFU1RfRVZFTlQoTm9uZSks
CisgICAgICBtRGlzcGxheShudWxscHRyKSwKKyAgICAgIG1XaW5kb3coMCksCisgICAgICBtUmVx
dWVzdGVkVmlzdWFsSWQodmlzdWFsSWQpLAorICAgICAgbVZpc2libGUoZmFsc2UpCit7Cit9CisK
K1gxMVdpbmRvdzo6flgxMVdpbmRvdygpCit7CisgICAgZGVzdHJveSgpOworfQorCitib29sIFgx
MVdpbmRvdzo6aW5pdGlhbGl6ZShjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSwgc2l6ZV90IHdpZHRo
LCBzaXplX3QgaGVpZ2h0KQoreworICAgIGRlc3Ryb3koKTsKKworICAgIG1EaXNwbGF5ID0gWE9w
ZW5EaXNwbGF5KE5VTEwpOworICAgIGlmICghbURpc3BsYXkpCisgICAgeworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgeworICAgICAgICBpbnQgc2NyZWVuID0gRGVmYXVsdFNj
cmVlbihtRGlzcGxheSk7CisgICAgICAgIFdpbmRvdyByb290ID0gUm9vdFdpbmRvdyhtRGlzcGxh
eSwgc2NyZWVuKTsKKworICAgICAgICBWaXN1YWwgKnZpc3VhbDsKKyAgICAgICAgaWYgKG1SZXF1
ZXN0ZWRWaXN1YWxJZCA9PSAtMSkKKyAgICAgICAgeworICAgICAgICAgICAgdmlzdWFsID0gRGVm
YXVsdFZpc3VhbChtRGlzcGxheSwgc2NyZWVuKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisg
ICAgICAgIHsKKyAgICAgICAgICAgIFhWaXN1YWxJbmZvIHZpc3VhbFRlbXBsYXRlOworICAgICAg
ICAgICAgdmlzdWFsVGVtcGxhdGUudmlzdWFsaWQgPSBtUmVxdWVzdGVkVmlzdWFsSWQ7CisKKyAg
ICAgICAgICAgIGludCBudW1WaXN1YWxzICAgICAgID0gMDsKKyAgICAgICAgICAgIFhWaXN1YWxJ
bmZvICp2aXN1YWxzID0gWEdldFZpc3VhbEluZm8obURpc3BsYXksIFZpc3VhbElETWFzaywgJnZp
c3VhbFRlbXBsYXRlLCAmbnVtVmlzdWFscyk7CisgICAgICAgICAgICBpZiAobnVtVmlzdWFscyA8
PSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVChudW1WaXN1YWxzID09IDEpOworCisgICAgICAg
ICAgICB2aXN1YWwgPSB2aXN1YWxzWzBdLnZpc3VhbDsKKyAgICAgICAgICAgIFhGcmVlKHZpc3Vh
bHMpOworICAgICAgICB9CisKKyAgICAgICAgaW50IGRlcHRoID0gRGVmYXVsdERlcHRoKG1EaXNw
bGF5LCBzY3JlZW4pOworICAgICAgICBDb2xvcm1hcCBjb2xvcm1hcCA9IFhDcmVhdGVDb2xvcm1h
cChtRGlzcGxheSwgcm9vdCwgdmlzdWFsLCBBbGxvY05vbmUpOworCisgICAgICAgIFhTZXRXaW5k
b3dBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgYXR0cmlidXRl
TWFzayA9IENXQm9yZGVyUGl4ZWwgfCBDV0NvbG9ybWFwIHwgQ1dFdmVudE1hc2s7CisKKyAgICAg
ICAgYXR0cmlidXRlcy5ldmVudF9tYXNrID0gU3RydWN0dXJlTm90aWZ5TWFzayB8IFBvaW50ZXJN
b3Rpb25NYXNrIHwgQnV0dG9uUHJlc3NNYXNrIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQnV0dG9uUmVsZWFzZU1hc2sgfCBGb2N1c0NoYW5nZU1hc2sgfCBFbnRlcldpbmRvd01h
c2sgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZWF2ZVdpbmRvd01hc2sgfCBL
ZXlQcmVzc01hc2sgfCBLZXlSZWxlYXNlTWFzazsKKyAgICAgICAgYXR0cmlidXRlcy5ib3JkZXJf
cGl4ZWwgPSAwOworICAgICAgICBhdHRyaWJ1dGVzLmNvbG9ybWFwID0gY29sb3JtYXA7CisKKyAg
ICAgICAgbVdpbmRvdyA9IFhDcmVhdGVXaW5kb3cobURpc3BsYXksIHJvb3QsIDAsIDAsIHdpZHRo
LCBoZWlnaHQsIDAsIGRlcHRoLCBJbnB1dE91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmlzdWFsLCBhdHRyaWJ1dGVNYXNrLCAmYXR0cmlidXRlcyk7CisgICAgICAgIFhG
cmVlQ29sb3JtYXAobURpc3BsYXksIGNvbG9ybWFwKTsKKyAgICB9CisKKyAgICBpZiAoIW1XaW5k
b3cpCisgICAgeworICAgICAgICBkZXN0cm95KCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICAvLyBUZWxsIHRoZSB3aW5kb3cgbWFuYWdlciB0byBub3RpZnkgdXMgd2hlbiB0
aGUgdXNlciB3YW50cyB0byBjbG9zZSB0aGUKKyAgICAvLyB3aW5kb3cgc28gd2UgY2FuIGRvIGl0
IG91cnNlbHZlcy4KKyAgICBXTV9ERUxFVEVfV0lORE9XID0gWEludGVybkF0b20obURpc3BsYXks
ICJXTV9ERUxFVEVfV0lORE9XIiwgRmFsc2UpOworICAgIFdNX1BST1RPQ09MUyA9IFhJbnRlcm5B
dG9tKG1EaXNwbGF5LCAiV01fUFJPVE9DT0xTIiwgRmFsc2UpOworICAgIGlmIChXTV9ERUxFVEVf
V0lORE9XID09IE5vbmUgfHwgV01fUFJPVE9DT0xTID09IE5vbmUpCisgICAgeworICAgICAgICBk
ZXN0cm95KCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZihYU2V0V01Q
cm90b2NvbHMobURpc3BsYXksIG1XaW5kb3csICZXTV9ERUxFVEVfV0lORE9XLCAxKSA9PSAwKQor
ICAgIHsKKyAgICAgICAgZGVzdHJveSgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgLy8gQ3JlYXRlIGFuIGF0b20gdG8gaWRlbnRpZnkgb3VyIHRlc3QgZXZlbnQKKyAgICBU
RVNUX0VWRU5UID0gWEludGVybkF0b20obURpc3BsYXksICJBTkdMRV9URVNUX0VWRU5UIiwgRmFs
c2UpOworICAgIGlmIChURVNUX0VWRU5UID09IE5vbmUpCisgICAgeworICAgICAgICBkZXN0cm95
KCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBYRmx1c2gobURpc3BsYXkp
OworCisgICAgbVggPSAwOworICAgIG1ZID0gMDsKKyAgICBtV2lkdGggPSB3aWR0aDsKKyAgICBt
SGVpZ2h0ID0gaGVpZ2h0OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgWDExV2luZG93
OjpkZXN0cm95KCkKK3sKKyAgICBpZiAobVdpbmRvdykKKyAgICB7CisgICAgICAgIFhEZXN0cm95
V2luZG93KG1EaXNwbGF5LCBtV2luZG93KTsKKyAgICAgICAgbVdpbmRvdyA9IDA7CisgICAgfQor
ICAgIGlmIChtRGlzcGxheSkKKyAgICB7CisgICAgICAgIFhDbG9zZURpc3BsYXkobURpc3BsYXkp
OworICAgICAgICBtRGlzcGxheSA9IG51bGxwdHI7CisgICAgfQorICAgIFdNX0RFTEVURV9XSU5E
T1cgPSBOb25lOworICAgIFdNX1BST1RPQ09MUyA9IE5vbmU7Cit9CisKK0VHTE5hdGl2ZVdpbmRv
d1R5cGUgWDExV2luZG93OjpnZXROYXRpdmVXaW5kb3coKSBjb25zdAoreworICAgIHJldHVybiBt
V2luZG93OworfQorCitFR0xOYXRpdmVEaXNwbGF5VHlwZSBYMTFXaW5kb3c6OmdldE5hdGl2ZURp
c3BsYXkoKSBjb25zdAoreworICAgIHJldHVybiBtRGlzcGxheTsKK30KKwordm9pZCBYMTFXaW5k
b3c6Om1lc3NhZ2VMb29wKCkKK3sKKyAgICBpbnQgZXZlbnRDb3VudCA9IFhQZW5kaW5nKG1EaXNw
bGF5KTsKKyAgICB3aGlsZSAoZXZlbnRDb3VudC0tKQorICAgIHsKKyAgICAgICAgWEV2ZW50IGV2
ZW50OworICAgICAgICBYTmV4dEV2ZW50KG1EaXNwbGF5LCAmZXZlbnQpOworICAgICAgICBwcm9j
ZXNzRXZlbnQoZXZlbnQpOworICAgIH0KK30KKwordm9pZCBYMTFXaW5kb3c6OnNldE1vdXNlUG9z
aXRpb24oaW50IHgsIGludCB5KQoreworICAgIFhXYXJwUG9pbnRlcihtRGlzcGxheSwgTm9uZSwg
bVdpbmRvdywgMCwgMCwgMCwgMCwgeCwgeSk7Cit9CisKK09TV2luZG93ICpDcmVhdGVPU1dpbmRv
dygpCit7CisgICAgcmV0dXJuIG5ldyBYMTFXaW5kb3coKTsKK30KKworYm9vbCBYMTFXaW5kb3c6
OnNldFBvc2l0aW9uKGludCB4LCBpbnQgeSkKK3sKKyAgICBYTW92ZVdpbmRvdyhtRGlzcGxheSwg
bVdpbmRvdywgeCwgeSk7CisgICAgWEZsdXNoKG1EaXNwbGF5KTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBYMTFXaW5kb3c6OnJlc2l6ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7Cisg
ICAgWFJlc2l6ZVdpbmRvdyhtRGlzcGxheSwgbVdpbmRvdywgd2lkdGgsIGhlaWdodCk7CisgICAg
WEZsdXNoKG1EaXNwbGF5KTsKKworICAgIFRpbWVyKiB0aW1lciA9IENyZWF0ZVRpbWVyKCk7Cisg
ICAgdGltZXItPnN0YXJ0KCk7CisKKyAgICAvLyBXYWl0IHVudGlsIHRoZSB3aW5kb3cgYXMgYWN0
dWFsbHkgYmVlbiByZXNpemVkIHNvIHRoYXQgdGhlIGNvZGUgY2FsbGluZyByZXNpemUKKyAgICAv
LyBjYW4gYXNzdW1lIHRoZSB3aW5kb3cgaGFzIGJlZW4gcmVzaXplZC4KKyAgICBjb25zdCBkb3Vi
bGUga1Jlc2l6ZVdhaXREZWxheSA9IDAuMjsKKyAgICB3aGlsZSAobUhlaWdodCAhPSBoZWlnaHQg
JiYgbVdpZHRoICE9IHdpZHRoICYmIHRpbWVyLT5nZXRFbGFwc2VkVGltZSgpIDwga1Jlc2l6ZVdh
aXREZWxheSkKKyAgICB7CisgICAgICAgIG1lc3NhZ2VMb29wKCk7CisgICAgICAgIGFuZ2xlOjpT
bGVlcCgxMCk7CisgICAgfQorCisgICAgZGVsZXRlIHRpbWVyOworCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgWDExV2luZG93OjpzZXRWaXNpYmxlKGJvb2wgaXNWaXNpYmxlKQoreworICAg
IGlmIChtVmlzaWJsZSA9PSBpc1Zpc2libGUpCisgICAgeworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKGlzVmlzaWJsZSkKKyAgICB7CisgICAgICAgIFhNYXBXaW5kb3cobURpc3Bs
YXksIG1XaW5kb3cpOworCisgICAgICAgIC8vIFdhaXQgdW50aWwgd2UgZ2V0IGFuIGV2ZW50IHNh
eWluZyB0aGlzIHdpbmRvdyBpcyBtYXBwZWQgc28gdGhhdCB0aGUKKyAgICAgICAgLy8gY29kZSBj
YWxsaW5nIHNldFZpc2libGUgY2FuIGFzc3VtZSB0aGUgd2luZG93IGlzIHZpc2libGUuCisgICAg
ICAgIC8vIFRoaXMgaXMgaW1wb3J0YW50IHdoZW4gY3JlYXRpbmcgYSBmcmFtZWJ1ZmZlciBhcyB0
aGUgZnJhbWVidWZmZXIgY29udGVudAorICAgICAgICAvLyBpcyB1bmRlZmluZWQgd2hlbiB0aGUg
d2luZG93IGlzIG5vdCB2aXNpYmxlLgorICAgICAgICBYRXZlbnQgZHVtbXlFdmVudDsKKyAgICAg
ICAgWElmRXZlbnQobURpc3BsYXksICZkdW1teUV2ZW50LCBXYWl0Rm9yTWFwTm90aWZ5LCByZWlu
dGVycHJldF9jYXN0PFhQb2ludGVyPihtV2luZG93KSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7
CisgICAgICAgIFhVbm1hcFdpbmRvdyhtRGlzcGxheSwgbVdpbmRvdyk7CisgICAgICAgIFhGbHVz
aChtRGlzcGxheSk7CisgICAgfQorICAgIG1WaXNpYmxlID0gaXNWaXNpYmxlOworfQorCit2b2lk
IFgxMVdpbmRvdzo6c2lnbmFsVGVzdEV2ZW50KCkKK3sKKyAgICBYRXZlbnQgZXZlbnQ7CisgICAg
ZXZlbnQudHlwZSA9IENsaWVudE1lc3NhZ2U7CisgICAgZXZlbnQueGNsaWVudC5tZXNzYWdlX3R5
cGUgPSBURVNUX0VWRU5UOworICAgIC8vIEZvcm1hdCBuZWVkcyB0byBiZSB2YWxpZCBvciBhIEJh
ZFZhbHVlIGlzIGdlbmVyYXRlZAorICAgIGV2ZW50LnhjbGllbnQuZm9ybWF0ID0gMzI7CisKKyAg
ICAvLyBIaWphY2sgU3RydWN0dXJlTm90aWZ5TWFzayBhcyB3ZSBrbm93IHdlIHdpbGwgYmUgbGlz
dGVuaW5nIGZvciBpdC4KKyAgICBYU2VuZEV2ZW50KG1EaXNwbGF5LCBtV2luZG93LCBGYWxzZSwg
U3RydWN0dXJlTm90aWZ5TWFzaywgJmV2ZW50KTsKK30KKwordm9pZCBYMTFXaW5kb3c6OnByb2Nl
c3NFdmVudChjb25zdCBYRXZlbnQgJnhFdmVudCkKK3sKKyAgICAvLyBUT0RPKGN3YWxsZXopIHRl
eHQgZXZlbnRzCisgICAgc3dpdGNoICh4RXZlbnQudHlwZSkKKyAgICB7CisgICAgICBjYXNlIEJ1
dHRvblByZXNzOgorICAgICAgICB7CisgICAgICAgICAgICBFdmVudCBldmVudDsKKyAgICAgICAg
ICAgIE1vdXNlQnV0dG9uIGJ1dHRvbiA9IE1PVVNFQlVUVE9OX1VOS05PV047CisgICAgICAgICAg
ICBpbnQgd2hlZWxYID0gMDsKKyAgICAgICAgICAgIGludCB3aGVlbFkgPSAwOworCisgICAgICAg
ICAgICAvLyBUaGUgbW91c2Ugd2hlZWwgdXBkYXRlcyBhcmUgc2VudCB2aWEgYnV0dG9uIGV2ZW50
cy4KKyAgICAgICAgICAgIHN3aXRjaCAoeEV2ZW50LnhidXR0b24uYnV0dG9uKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICBjYXNlIEJ1dHRvbjQ6CisgICAgICAgICAgICAgICAgd2hlZWxZ
ID0gMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBCdXR0b241
OgorICAgICAgICAgICAgICAgIHdoZWVsWSA9IC0xOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICBjYXNlIDY6CisgICAgICAgICAgICAgICAgd2hlZWxYID0gMTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSA3OgorICAgICAgICAgICAgICAg
IHdoZWVsWCA9IC0xOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgIGNh
c2UgQnV0dG9uMToKKyAgICAgICAgICAgICAgICBidXR0b24gPSBNT1VTRUJVVFRPTl9MRUZUOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEJ1dHRvbjI6CisgICAg
ICAgICAgICAgICAgYnV0dG9uID0gTU9VU0VCVVRUT05fTUlERExFOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEJ1dHRvbjM6CisgICAgICAgICAgICAgICAgYnV0
dG9uID0gTU9VU0VCVVRUT05fUklHSFQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgIGNhc2UgODoKKyAgICAgICAgICAgICAgICBidXR0b24gPSBNT1VTRUJVVFRPTl9CVVRU
T040OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDk6CisgICAg
ICAgICAgICAgICAgYnV0dG9uID0gTU9VU0VCVVRUT05fQlVUVE9ONTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAod2hlZWxZICE9IDApCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgZXZlbnQuVHlwZSA9IEV2ZW50OjpFVkVOVF9NT1VTRV9X
SEVFTF9NT1ZFRDsKKyAgICAgICAgICAgICAgICBldmVudC5Nb3VzZVdoZWVsLkRlbHRhID0gd2hl
ZWxZOworICAgICAgICAgICAgICAgIHB1c2hFdmVudChldmVudCk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmIChidXR0b24gIT0gTU9VU0VCVVRUT05fVU5LTk9XTikKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBldmVudC5UeXBlID0gRXZlbnQ6OkVWRU5UX01PVVNFX0JV
VFRPTl9SRUxFQVNFRDsKKyAgICAgICAgICAgICAgICBldmVudC5Nb3VzZUJ1dHRvbi5CdXR0b24g
PSBidXR0b247CisgICAgICAgICAgICAgICAgZXZlbnQuTW91c2VCdXR0b24uWCA9IHhFdmVudC54
YnV0dG9uLng7CisgICAgICAgICAgICAgICAgZXZlbnQuTW91c2VCdXR0b24uWSA9IHhFdmVudC54
YnV0dG9uLnk7CisgICAgICAgICAgICAgICAgcHVzaEV2ZW50KGV2ZW50KTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBCdXR0b25SZWxlYXNl
OgorICAgICAgICB7CisgICAgICAgICAgICBFdmVudCBldmVudDsKKyAgICAgICAgICAgIE1vdXNl
QnV0dG9uIGJ1dHRvbiA9IE1PVVNFQlVUVE9OX1VOS05PV047CisKKyAgICAgICAgICAgIHN3aXRj
aCAoeEV2ZW50LnhidXR0b24uYnV0dG9uKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBj
YXNlIEJ1dHRvbjE6CisgICAgICAgICAgICAgICAgYnV0dG9uID0gTU9VU0VCVVRUT05fTEVGVDsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBCdXR0b24yOgorICAg
ICAgICAgICAgICAgIGJ1dHRvbiA9IE1PVVNFQlVUVE9OX01JRERMRTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBCdXR0b24zOgorICAgICAgICAgICAgICAgIGJ1
dHRvbiA9IE1PVVNFQlVUVE9OX1JJR0hUOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICBjYXNlIDg6CisgICAgICAgICAgICAgICAgYnV0dG9uID0gTU9VU0VCVVRUT05fQlVU
VE9ONDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSA5OgorICAg
ICAgICAgICAgICAgIGJ1dHRvbiA9IE1PVVNFQlVUVE9OX0JVVFRPTjU7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGJ1dHRvbiAhPSBNT1VTRUJVVFRP
Tl9VTktOT1dOKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGV2ZW50LlR5cGUgPSBF
dmVudDo6RVZFTlRfTU9VU0VfQlVUVE9OX1JFTEVBU0VEOworICAgICAgICAgICAgICAgIGV2ZW50
Lk1vdXNlQnV0dG9uLkJ1dHRvbiA9IGJ1dHRvbjsKKyAgICAgICAgICAgICAgICBldmVudC5Nb3Vz
ZUJ1dHRvbi5YID0geEV2ZW50LnhidXR0b24ueDsKKyAgICAgICAgICAgICAgICBldmVudC5Nb3Vz
ZUJ1dHRvbi5ZID0geEV2ZW50LnhidXR0b24ueTsKKyAgICAgICAgICAgICAgICBwdXNoRXZlbnQo
ZXZlbnQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAg
ICBjYXNlIEtleVByZXNzOgorICAgICAgICB7CisgICAgICAgICAgICBFdmVudCBldmVudDsKKyAg
ICAgICAgICAgIGV2ZW50LlR5cGUgPSBFdmVudDo6RVZFTlRfS0VZX1BSRVNTRUQ7CisgICAgICAg
ICAgICBldmVudC5LZXkuQ29kZSA9IFgxMUNvZGVUb0tleShtRGlzcGxheSwgeEV2ZW50LnhrZXku
a2V5Y29kZSk7CisgICAgICAgICAgICBBZGRYMTFLZXlTdGF0ZVRvRXZlbnQoJmV2ZW50LCB4RXZl
bnQueGtleS5zdGF0ZSk7CisgICAgICAgICAgICBwdXNoRXZlbnQoZXZlbnQpOworICAgICAgICB9
CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEtleVJlbGVhc2U6CisgICAgICAgIHsKKyAg
ICAgICAgICAgIEV2ZW50IGV2ZW50OworICAgICAgICAgICAgZXZlbnQuVHlwZSA9IEV2ZW50OjpF
VkVOVF9LRVlfUkVMRUFTRUQ7CisgICAgICAgICAgICBldmVudC5LZXkuQ29kZSA9IFgxMUNvZGVU
b0tleShtRGlzcGxheSwgeEV2ZW50LnhrZXkua2V5Y29kZSk7CisgICAgICAgICAgICBBZGRYMTFL
ZXlTdGF0ZVRvRXZlbnQoJmV2ZW50LCB4RXZlbnQueGtleS5zdGF0ZSk7CisgICAgICAgICAgICBw
dXNoRXZlbnQoZXZlbnQpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNl
IEVudGVyTm90aWZ5OgorICAgICAgICB7CisgICAgICAgICAgICBFdmVudCBldmVudDsKKyAgICAg
ICAgICAgIGV2ZW50LlR5cGUgPSBFdmVudDo6RVZFTlRfTU9VU0VfRU5URVJFRDsKKyAgICAgICAg
ICAgIHB1c2hFdmVudChldmVudCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAg
IGNhc2UgTGVhdmVOb3RpZnk6CisgICAgICAgIHsKKyAgICAgICAgICAgIEV2ZW50IGV2ZW50Owor
ICAgICAgICAgICAgZXZlbnQuVHlwZSA9IEV2ZW50OjpFVkVOVF9NT1VTRV9MRUZUOworICAgICAg
ICAgICAgcHVzaEV2ZW50KGV2ZW50KTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAg
ICAgY2FzZSBNb3Rpb25Ob3RpZnk6CisgICAgICAgIHsKKyAgICAgICAgICAgIEV2ZW50IGV2ZW50
OworICAgICAgICAgICAgZXZlbnQuVHlwZSA9IEV2ZW50OjpFVkVOVF9NT1VTRV9NT1ZFRDsKKyAg
ICAgICAgICAgIGV2ZW50Lk1vdXNlTW92ZS5YID0geEV2ZW50Lnhtb3Rpb24ueDsKKyAgICAgICAg
ICAgIGV2ZW50Lk1vdXNlTW92ZS5ZID0geEV2ZW50Lnhtb3Rpb24ueTsKKyAgICAgICAgICAgIHB1
c2hFdmVudChldmVudCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2Ug
Q29uZmlndXJlTm90aWZ5OgorICAgICAgICB7CisgICAgICAgICAgICBpZiAoeEV2ZW50Lnhjb25m
aWd1cmUud2lkdGggIT0gbVdpZHRoIHx8IHhFdmVudC54Y29uZmlndXJlLmhlaWdodCAhPSBtSGVp
Z2h0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEV2ZW50IGV2ZW50OworICAgICAg
ICAgICAgICAgIGV2ZW50LlR5cGUgPSBFdmVudDo6RVZFTlRfUkVTSVpFRDsKKyAgICAgICAgICAg
ICAgICBldmVudC5TaXplLldpZHRoID0geEV2ZW50Lnhjb25maWd1cmUud2lkdGg7CisgICAgICAg
ICAgICAgICAgZXZlbnQuU2l6ZS5IZWlnaHQgPSB4RXZlbnQueGNvbmZpZ3VyZS5oZWlnaHQ7Cisg
ICAgICAgICAgICAgICAgcHVzaEV2ZW50KGV2ZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmICh4RXZlbnQueGNvbmZpZ3VyZS54ICE9IG1YIHx8IHhFdmVudC54Y29uZmlndXJlLnkg
IT0gbVkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gU29tZXRpbWVzLCB0aGUg
d2luZG93IG1hbmFnZXIgcmVwYXJlbnRzIG91ciB3aW5kb3cgKGZvciBleGFtcGxlCisgICAgICAg
ICAgICAgICAgLy8gd2hlbiByZXNpemluZykgdGhlbiB0aGUgWCBhbmQgWSBjb29yZGluYXRlcyB3
aWxsIGJlIHdpdGggcmVzcGVjdCB0bworICAgICAgICAgICAgICAgIC8vIHRoZSBuZXcgcGFyZW50
IGFuZCBub3Qgd2hhdCB0aGUgdXNlciB3YW50cyB0byBrbm93LiBVc2UKKyAgICAgICAgICAgICAg
ICAvLyBYVHJhbnNsYXRlQ29vcmRpbmF0ZXMgdG8gZ2V0IHRoZSBjb29yZGluYXRlcyBvbiB0aGUg
c2NyZWVuLgorICAgICAgICAgICAgICAgIGludCBzY3JlZW4gPSBEZWZhdWx0U2NyZWVuKG1EaXNw
bGF5KTsKKyAgICAgICAgICAgICAgICBXaW5kb3cgcm9vdCA9IFJvb3RXaW5kb3cobURpc3BsYXks
IHNjcmVlbik7CisKKyAgICAgICAgICAgICAgICBpbnQgeCwgeTsKKyAgICAgICAgICAgICAgICBX
aW5kb3cgY2hpbGQ7CisgICAgICAgICAgICAgICAgWFRyYW5zbGF0ZUNvb3JkaW5hdGVzKG1EaXNw
bGF5LCBtV2luZG93LCByb290LCAwLCAwLCAmeCwgJnksICZjaGlsZCk7CisKKyAgICAgICAgICAg
ICAgICBpZiAoeCAhPSBtWCB8fCB5ICE9IG1ZKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgRXZlbnQgZXZlbnQ7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50LlR5cGUg
PSBFdmVudDo6RVZFTlRfTU9WRUQ7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50Lk1vdmUuWCA9
IHg7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50Lk1vdmUuWSA9IHk7CisgICAgICAgICAgICAg
ICAgICAgIHB1c2hFdmVudChldmVudCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEZvY3VzSW46CisgICAg
ICAgIGlmICh4RXZlbnQueGZvY3VzLm1vZGUgPT0gTm90aWZ5Tm9ybWFsIHx8IHhFdmVudC54Zm9j
dXMubW9kZSA9PSBOb3RpZnlXaGlsZUdyYWJiZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEV2
ZW50IGV2ZW50OworICAgICAgICAgICAgZXZlbnQuVHlwZSA9IEV2ZW50OjpFVkVOVF9HQUlORURf
Rk9DVVM7CisgICAgICAgICAgICBwdXNoRXZlbnQoZXZlbnQpOworICAgICAgICB9CisgICAgICAg
IGJyZWFrOworCisgICAgICBjYXNlIEZvY3VzT3V0OgorICAgICAgICBpZiAoeEV2ZW50Lnhmb2N1
cy5tb2RlID09IE5vdGlmeU5vcm1hbCB8fCB4RXZlbnQueGZvY3VzLm1vZGUgPT0gTm90aWZ5V2hp
bGVHcmFiYmVkKQorICAgICAgICB7CisgICAgICAgICAgICBFdmVudCBldmVudDsKKyAgICAgICAg
ICAgIGV2ZW50LlR5cGUgPSBFdmVudDo6RVZFTlRfTE9TVF9GT0NVUzsKKyAgICAgICAgICAgIHB1
c2hFdmVudChldmVudCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2Ug
RGVzdHJveU5vdGlmeToKKyAgICAgICAgLy8gV2UgYWxyZWFkeSByZWNlaXZlZCBXTV9ERUxFVEVf
V0lORE9XCisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIENsaWVudE1lc3NhZ2U6CisgICAg
ICAgIGlmICh4RXZlbnQueGNsaWVudC5tZXNzYWdlX3R5cGUgPT0gV01fUFJPVE9DT0xTICYmCisg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxBdG9tPih4RXZlbnQueGNsaWVudC5kYXRhLmxbMF0pID09
IFdNX0RFTEVURV9XSU5ET1cpCisgICAgICAgIHsKKyAgICAgICAgICAgIEV2ZW50IGV2ZW50Owor
ICAgICAgICAgICAgZXZlbnQuVHlwZSA9IEV2ZW50OjpFVkVOVF9DTE9TRUQ7CisgICAgICAgICAg
ICBwdXNoRXZlbnQoZXZlbnQpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHhFdmVudC54
Y2xpZW50Lm1lc3NhZ2VfdHlwZSA9PSBURVNUX0VWRU5UKQorICAgICAgICB7CisgICAgICAgICAg
ICBFdmVudCBldmVudDsKKyAgICAgICAgICAgIGV2ZW50LlR5cGUgPSBFdmVudDo6RVZFTlRfVEVT
VDsKKyAgICAgICAgICAgIHB1c2hFdmVudChldmVudCk7CisgICAgICAgIH0KKyAgICAgICAgYnJl
YWs7CisgICAgfQorfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC94MTEvWDEx
V2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC94MTEv
WDExV2luZG93LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRp
bC94MTEvWDExV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorLy8KKy8v
IENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisKKy8vIFgxMVdpbmRvdy5oOiBEZWZpbml0aW9uIG9mIHRoZSBpbXBsZW1lbnRhdGlv
biBvZiBPU1dpbmRvdyBmb3IgWDExCisKKyNpZm5kZWYgVVRJTF9YMTFfV0lORE9XX0gKKyNkZWZp
bmUgVVRJTF9YMTFfV0lORE9XX0gKKworI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDxYMTEv
WGxpYi5oPgorI2luY2x1ZGUgPFgxMS9YdXRpbC5oPgorI2luY2x1ZGUgPFgxMS9YcmVzb3VyY2Uu
aD4KKworI2luY2x1ZGUgPGV4cG9ydC5oPgorCisjaW5jbHVkZSAiT1NXaW5kb3cuaCIKKworY2xh
c3MgQU5HTEVfRVhQT1JUIFgxMVdpbmRvdyA6IHB1YmxpYyBPU1dpbmRvdworeworICBwdWJsaWM6
CisgICAgWDExV2luZG93KCk7CisgICAgWDExV2luZG93KGludCB2aXN1YWxJZCk7CisgICAgflgx
MVdpbmRvdygpOworCisgICAgYm9vbCBpbml0aWFsaXplKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1l
LCBzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQpIG92ZXJyaWRlOworICAgIHZvaWQgZGVzdHJv
eSgpIG92ZXJyaWRlOworCisgICAgRUdMTmF0aXZlV2luZG93VHlwZSBnZXROYXRpdmVXaW5kb3co
KSBjb25zdCBvdmVycmlkZTsKKyAgICBFR0xOYXRpdmVEaXNwbGF5VHlwZSBnZXROYXRpdmVEaXNw
bGF5KCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICB2b2lkIG1lc3NhZ2VMb29wKCkgb3ZlcnJpZGU7
CisKKyAgICB2b2lkIHNldE1vdXNlUG9zaXRpb24oaW50IHgsIGludCB5KSBvdmVycmlkZTsKKyAg
ICBib29sIHNldFBvc2l0aW9uKGludCB4LCBpbnQgeSkgb3ZlcnJpZGU7CisgICAgYm9vbCByZXNp
emUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFZpc2libGUo
Ym9vbCBpc1Zpc2libGUpIG92ZXJyaWRlOworCisgICAgdm9pZCBzaWduYWxUZXN0RXZlbnQoKSBv
dmVycmlkZTsKKworICBwcml2YXRlOgorICAgIHZvaWQgcHJvY2Vzc0V2ZW50KGNvbnN0IFhFdmVu
dCAmZXZlbnQpOworCisgICAgQXRvbSBXTV9ERUxFVEVfV0lORE9XOworICAgIEF0b20gV01fUFJP
VE9DT0xTOworICAgIEF0b20gVEVTVF9FVkVOVDsKKworICAgIERpc3BsYXkgKm1EaXNwbGF5Owor
ICAgIFdpbmRvdyBtV2luZG93OworICAgIGludCBtUmVxdWVzdGVkVmlzdWFsSWQ7CisgICAgYm9v
bCBtVmlzaWJsZTsKK307CisKKyNlbmRpZiAvLyBVVElMX1gxMV9XSU5ET1dfSApJbmRleDogU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMjU5LDYgKzMyNTksNyBAQAogICAgICAgICAk
e1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tbW9uL3V0aWxpdGllcy5jcHAKICAgICAgICAg
JHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbW1vbi90bHMuY3BwCiAKKyAgICAgICAgJHtU
SElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQWRkQW5kVHJ1ZVRv
TG9vcENvbmRpdGlvbi5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvQXJyYXlSZXR1cm5WYWx1ZVRvT3V0UGFyYW1ldGVyLmNwcAogICAg
ICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9BU1RN
ZXRhZGF0YUhMU0wuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL2Jsb2NrbGF5b3V0LmNwcApAQCAtMzI3MCw5ICszMjcxLDExIEBACiAg
ICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0Nh
bGxEQUcuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL0NvZGVHZW4uY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL0NvbXBpbGVyLmNwcAorICAgICAgICAke1RISVJEUEFSVFlf
RElSfS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db25zdGFudFVuaW9uLmNwcAogICAg
ICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9EZWZl
ckdsb2JhbEluaXRpYWxpemVycy5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRGlhZ25vc3RpY3MuY3BwCiAgICAgICAgICR7VEhJUkRQ
QVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0RpcmVjdGl2ZUhhbmRsZXIu
Y3BwCisgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL0VtdWxhdGVHTEZyYWdDb2xvckJyb2FkY2FzdC5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZ
X0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRW11bGF0ZVByZWNpc2lvbi5jcHAK
ICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
RXh0ZW5zaW9uR0xTTC5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZ19sZXguY3BwCkBAIC0zMjk3LDYgKzMzMDAsNyBAQAog
ICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Q
YXJzZUNvbnRleHQuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1Bvb2xBbGxvYy5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0v
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUHJ1bmVFbXB0eURlY2xhcmF0aW9ucy5jcHAK
KyAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
UXVhbGlmaWVyVHlwZXMuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL1JlY29yZENvbnN0YW50UHJlY2lzaW9uLmNwcAogICAgICAgICAk
e1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZWdlbmVyYXRl
U3RydWN0TmFtZXMuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1JlbW92ZUR5bmFtaWNJbmRleGluZy5jcHAKQEAgLTMzMDQsNiArMzMw
OCw3IEBACiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1JlbW92ZVN3aXRjaEZhbGxUaHJvdWdoLmNwcAogICAgICAgICAke1RISVJEUEFSVFlf
RElSfS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlRG9XaGlsZS5jcHAKICAg
ICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3
cml0ZUVsc2VCbG9ja3MuY3BwCisgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVUZXhlbEZldGNoT2Zmc2V0LmNwcAogICAgICAgICAk
e1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TY2FsYXJpemVW
ZWNBbmRNYXRDb25zdHJ1Y3RvckFyZ3MuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NlYXJjaFN5bWJvbC5jcHAKICAgICAgICAgJHtU
SElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVBcnJh
eUluaXRpYWxpemF0aW9uLmNwcApAQCAtMzMyMCw2ICszMzI1LDcgQEAKICAgICAgICAgJHtUSElS
RFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVW5mb2xkU2hvcnRDaXJj
dWl0QVNULmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9VbmZvbGRTaG9ydENpcmN1aXRUb0lmLmNwcAogICAgICAgICAke1RISVJEUEFS
VFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Vbmlmb3JtSExTTC5jcHAKKyAg
ICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVXNl
SW50ZXJmYWNlQmxvY2tGaWVsZHMuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL3V0aWwuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9E
SVJ9L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1V0aWxzSExTTC5jcHAKICAgICAgICAg
JHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVH
bG9iYWxJbml0aWFsaXplci5jcHAKQEAgLTMzMzEsMTEgKzMzMzcsNiBAQAogICAgICAgICAke1RI
SVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYXJpYWJsZVBhY2tl
ci5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvVmVyc2lvbkdMU0wuY3BwCiAKLSAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoLmNwcAotICAg
ICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9kZXBn
cmFwaC9EZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcAotICAgICAgICAke1RISVJEUEFSVFlfRElS
fS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhP
dXRwdXQuY3BwCi0gICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaFRyYXZlcnNlLmNwcAotCiAgICAgICAg
ICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRGlhZ25v
c3RpY3NCYXNlLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGls
ZXIvcHJlcHJvY2Vzc29yL0RpcmVjdGl2ZUhhbmRsZXJCYXNlLmNwcAogICAgICAgICAke1RISVJE
UEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpcmVjdGl2ZVBhcnNl
ci5jcHAKQEAgLTMzNDgsOSArMzM0OSw2IEBACiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FO
R0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uY3BwCiAgICAgICAgICR7VEhJUkRQ
QVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmNwcAog
Ci0gICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L3RpbWluZy9SZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nLmNwcAotICAgICAgICAke1RISVJE
UEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci90aW1pbmcvUmVzdHJpY3RW
ZXJ0ZXhTaGFkZXJUaW1pbmcuY3BwCi0KICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUv
c3JjL2xpYkFOR0xFL1BsYXRmb3JtLmNwcAogCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FO
R0xFL3NyYy90aGlyZF9wYXJ0eS9jb21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIuY3BwCkBAIC0z
ODg2LDYgKzM4ODQsNyBAQAogICAgIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKEFOR0xFU3Vw
cG9ydCBQUklWQVRFCiAgICAgICAgICIke1RISVJEUEFSVFlfRElSfS9BTkdMRS9pbmNsdWRlIgog
ICAgICAgICAiJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjIgorICAgICAgICAiJHtUSElSRFBB
UlRZX0RJUn0vQU5HTEUvc3JjL2NvbW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcyIKICAgICApCiAg
ICAgbGlzdChBUFBFTkQgV2ViQ29yZV9MSUJSQVJJRVMgQU5HTEVTdXBwb3J0KQogICAgIFdFQktJ
VF9TRVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoQU5HTEVTdXBwb3J0IElHTk9SRUNYWF9XQVJOSU5H
UykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDE2LTEwLTI3ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXBkYXRl
IEFOR0xFCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjQxMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
aENoZWNrVmFyaWFibGVzV2l0aGluUGFja2luZ0xpbWl0cyBoYXMgY2hhbmdlZCBzaWduYXR1cmVz
IGZyb20gdGFraW5nIGEgU2hWYXJpYWJsZUluZm8qIGFuZCBsZW5ndGgKKyAgICAgICAgdG8gdGFr
aW5nIGEgc3RkOjp2ZWN0b3I8c2g6OlNoYWRlclZhcmlhYmxlPiB3aGljaCByZXF1aXJlcyBtb3Jl
IGluZm9ybWF0aW9uIGFib3V0IHRoZSBzaGFkZXIgdmFyaWFibGVzCisgICAgICAgIHRoYW4gd2Ug
a2VwdCBpbiBHcmFwaGljc0NvbnRleHQzRDo6U3ltYm9sSW5mby4gIEkgcmVtb3ZlZCB0aGUgU3lt
Ym9sSW5mbyBjbGFzcyBiZWNhdXNlIGl0IHdhcyByZWR1bmRhbnQKKyAgICAgICAgd2l0aCBBTkdM
RSdzIHNoOjpTaGFkZXJWYXJpYWJsZSBhbmQgbm93IHVudXNlZC4KKworICAgICAgICBDb3ZlcmVk
IGJ5IGV4aXN0aW5nIFdlYkdMIHRlc3RzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1XaW4uY21ha2U6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6YXBwZW5kU3ltYm9sKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFN0cnVj
dEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6Z2V0U3ltYm9sSW5mbyk6CisgICAgICAgIChXZWJD
b3JlOjpBTkdMRVdlYktpdEJyaWRnZTo6Y29tcGlsZVNoYWRlclNvdXJjZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkFOR0xFU2hhZGVyU3ltYm9sOjppc1NhbXBsZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6U3ltYm9sSW5mbzo6U3ltYm9sSW5mbyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6U3ltYm9sSW5mbzo6b3BlcmF0b3I9PSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9w
ZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RPcGVuR0xDb21t
b246OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjaGVja1ZhcnlpbmdzUGFja2luZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cHJlY2lzaW9uc01hdGNoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjptYXBwZWRTeW1ib2xOYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpvcmlnaW5hbFN5bWJvbE5hbWUpOgor
CiAyMDE2LTEwLTI3ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAK
ICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHdpZGUgZ2FtdXQgZm9yIFNoYXJlYWJsZUJpdG1hcCBm
b3IgaW1hZ2UgcG9wb3ZlcnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCShyZXZpc2lv
biAyMDgwMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQkod29ya2luZyBj
b3B5KQpAQCAtNTg3LDYgKzU4Nyw3IEBACiAgICAgTW9kdWxlcy9hcHBsZXBheQogICAgIE1vZHVs
ZXMvZ2VvbG9jYXRpb24KICAgICBNb2R1bGVzL2luZGV4ZWRkYgorICAgIE1vZHVsZXMvbWVkaWFz
dHJlYW0KICAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNl
CiAgICAgTW9kdWxlcy93ZWJzb2NrZXRzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdp
bi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQko
cmV2aXNpb24gMjA4MDIxKQorKysgU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UJKHdv
cmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi1hZGRfZGVmaW5pdGlvbnMoL2JpZ29iaikKK2Fk
ZF9kZWZpbml0aW9ucygvYmlnb2JqIC1EX19TVERDX0NPTlNUQU5UX01BQ1JPUykKIAogbGlzdChB
UFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L0Zv
cndhcmRpbmdIZWFkZXJzIgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
QU5HTEVXZWJLaXRCcmlkZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcAkocmV2aXNpb24gMjA4MDIxKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSwxMSArMzUsMTQgQEAKIAogLy8gRklYTUU6IFRoaXMgaXMgYXdm
dWwuIEdldCByaWQgb2YgQU5HTEVXZWJLaXRCcmlkZ2UgY29tcGxldGVseSBhbmQgY2FsbCB0aGUg
bGliQU5HTEUgQVBJIGRpcmVjdGx5IHRvIHZhbGlkYXRlIHNoYWRlcnMuCiAKLXN0YXRpYyB2b2lk
IGFwcGVuZFN5bWJvbChjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUmIHZhcmlhYmxlLCBBTkdMRVNo
YWRlclN5bWJvbFR5cGUgc3ltYm9sVHlwZSwgVmVjdG9yPEFOR0xFU2hhZGVyU3ltYm9sPiYgc3lt
Ym9scywgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsIGNvbnN0IHN0ZDo6c3RyaW5nJiBtYXBwZWRO
YW1lKQorc3RhdGljIHZvaWQgYXBwZW5kU3ltYm9sKGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSYg
dmFyaWFibGUsIEFOR0xFU2hhZGVyU3ltYm9sVHlwZSBzeW1ib2xUeXBlLCBWZWN0b3I8c3RkOjpw
YWlyPEFOR0xFU2hhZGVyU3ltYm9sVHlwZSwgc2g6OlNoYWRlclZhcmlhYmxlPj4mIHN5bWJvbHMs
IGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLCBjb25zdCBzdGQ6OnN0cmluZyYgbWFwcGVkTmFtZSkK
IHsKICAgICBMT0coV2ViR0wsICJNYXAgc2hhZGVyIHN5bWJvbCAlcyAtPiAlc1xuIiwgbmFtZS5j
X3N0cigpLCBtYXBwZWROYW1lLmNfc3RyKCkpOwogICAgIAotICAgIHN5bWJvbHMuYXBwZW5kKEFO
R0xFU2hhZGVyU3ltYm9sKHtzeW1ib2xUeXBlLCBuYW1lLmNfc3RyKCksIG1hcHBlZE5hbWUuY19z
dHIoKSwgdmFyaWFibGUudHlwZSwgdmFyaWFibGUuYXJyYXlTaXplLCB2YXJpYWJsZS5wcmVjaXNp
b24sIHZhcmlhYmxlLnN0YXRpY1VzZX0pKTsKKyAgICBzaDo6U2hhZGVyVmFyaWFibGUgdmFyaWFi
bGVUb0FwcGVuZCA9IHZhcmlhYmxlOworICAgIHZhcmlhYmxlVG9BcHBlbmQubmFtZSA9IG5hbWU7
CisgICAgdmFyaWFibGVUb0FwcGVuZC5tYXBwZWROYW1lID0gbWFwcGVkTmFtZTsKKyAgICBzeW1i
b2xzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihzeW1ib2xUeXBlLCB2YXJpYWJsZVRvQXBwZW5kKSk7
CiAgICAgCiAgICAgaWYgKHZhcmlhYmxlLmlzQXJyYXkoKSkgewogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgdmFyaWFibGUuZWxlbWVudENvdW50KCk7IGkrKykgewpAQCAtNDcsMTMg
KzUwLDE0IEBACiAgICAgICAgICAgICBzdGQ6OnN0cmluZyBhcnJheU5hbWUgPSBuYW1lICsgYXJy
YXlCcmFja2V0czsKICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGFycmF5TWFwcGVkTmFtZSA9IG1h
cHBlZE5hbWUgKyBhcnJheUJyYWNrZXRzOwogICAgICAgICAgICAgTE9HKFdlYkdMLCAiTWFwIHNo
YWRlciBzeW1ib2wgJXMgLT4gJXNcbiIsIGFycmF5TmFtZS5jX3N0cigpLCBhcnJheU1hcHBlZE5h
bWUuY19zdHIoKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHN5bWJvbHMuYXBwZW5kKHtz
eW1ib2xUeXBlLCBhcnJheU5hbWUuY19zdHIoKSwgYXJyYXlNYXBwZWROYW1lLmNfc3RyKCksIHZh
cmlhYmxlLnR5cGUsIHZhcmlhYmxlLmFycmF5U2l6ZSwgdmFyaWFibGUucHJlY2lzaW9uLCB2YXJp
YWJsZS5zdGF0aWNVc2V9KTsKKyAgICAgICAgICAgIHZhcmlhYmxlVG9BcHBlbmQubmFtZSA9IGFy
cmF5TmFtZTsKKyAgICAgICAgICAgIHZhcmlhYmxlVG9BcHBlbmQubWFwcGVkTmFtZSA9IGFycmF5
TWFwcGVkTmFtZTsKKyAgICAgICAgICAgIHN5bWJvbHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHN5
bWJvbFR5cGUsIHZhcmlhYmxlVG9BcHBlbmQpKTsKICAgICAgICAgfQogICAgIH0KIH0KIAotc3Rh
dGljIHZvaWQgZ2V0U3RydWN0SW5mbyhjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUmIGZpZWxkLCBB
TkdMRVNoYWRlclN5bWJvbFR5cGUgc3ltYm9sVHlwZSwgVmVjdG9yPEFOR0xFU2hhZGVyU3ltYm9s
PiYgc3ltYm9scywgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWVQcmVmaXgsIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBtYXBwZWROYW1lUHJlZml4KQorc3RhdGljIHZvaWQgZ2V0U3RydWN0SW5mbyhjb25zdCBz
aDo6U2hhZGVyVmFyaWFibGUmIGZpZWxkLCBBTkdMRVNoYWRlclN5bWJvbFR5cGUgc3ltYm9sVHlw
ZSwgVmVjdG9yPHN0ZDo6cGFpcjxBTkdMRVNoYWRlclN5bWJvbFR5cGUsIHNoOjpTaGFkZXJWYXJp
YWJsZT4+JiBzeW1ib2xzLCBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZVByZWZpeCwgY29uc3Qgc3Rk
OjpzdHJpbmcmIG1hcHBlZE5hbWVQcmVmaXgpCiB7CiAgICAgc3RkOjpzdHJpbmcgbmFtZSA9IG5h
bWVQcmVmaXggKyAnLicgKyBmaWVsZC5uYW1lOwogICAgIHN0ZDo6c3RyaW5nIG1hcHBlZE5hbWUg
PSBtYXBwZWROYW1lUHJlZml4ICsgJy4nICsgZmllbGQubWFwcGVkTmFtZTsKQEAgLTY3LDcgKzcx
LDcgQEAKICAgICAgICAgYXBwZW5kU3ltYm9sKGZpZWxkLCBzeW1ib2xUeXBlLCBzeW1ib2xzLCBu
YW1lLCBtYXBwZWROYW1lKTsKIH0KIAotc3RhdGljIHZvaWQgZ2V0U3ltYm9sSW5mbyhjb25zdCBz
aDo6U2hhZGVyVmFyaWFibGUmIHZhcmlhYmxlLCBBTkdMRVNoYWRlclN5bWJvbFR5cGUgc3ltYm9s
VHlwZSwgVmVjdG9yPEFOR0xFU2hhZGVyU3ltYm9sPiYgc3ltYm9scykKK3N0YXRpYyB2b2lkIGdl
dFN5bWJvbEluZm8oY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlJiB2YXJpYWJsZSwgQU5HTEVTaGFk
ZXJTeW1ib2xUeXBlIHN5bWJvbFR5cGUsIFZlY3RvcjxzdGQ6OnBhaXI8QU5HTEVTaGFkZXJTeW1i
b2xUeXBlLCBzaDo6U2hhZGVyVmFyaWFibGU+PiYgc3ltYm9scykKIHsKICAgICBpZiAodmFyaWFi
bGUuaXNTdHJ1Y3QoKSkgewogICAgICAgICBpZiAodmFyaWFibGUuaXNBcnJheSgpKSB7CkBAIC04
Niw3ICs5MCw3IEBACiAgICAgICAgIGFwcGVuZFN5bWJvbCh2YXJpYWJsZSwgc3ltYm9sVHlwZSwg
c3ltYm9scywgdmFyaWFibGUubmFtZSwgdmFyaWFibGUubWFwcGVkTmFtZSk7CiB9CiAKLXN0YXRp
YyBib29sIGdldFN5bWJvbEluZm8oU2hIYW5kbGUgY29tcGlsZXIsIEFOR0xFU2hhZGVyU3ltYm9s
VHlwZSBzeW1ib2xUeXBlLCBWZWN0b3I8QU5HTEVTaGFkZXJTeW1ib2w+JiBzeW1ib2xzKQorc3Rh
dGljIGJvb2wgZ2V0U3ltYm9sSW5mbyhTaEhhbmRsZSBjb21waWxlciwgQU5HTEVTaGFkZXJTeW1i
b2xUeXBlIHN5bWJvbFR5cGUsIFZlY3RvcjxzdGQ6OnBhaXI8QU5HTEVTaGFkZXJTeW1ib2xUeXBl
LCBzaDo6U2hhZGVyVmFyaWFibGU+PiYgc3ltYm9scykKIHsKICAgICBzd2l0Y2ggKHN5bWJvbFR5
cGUpIHsKICAgICBjYXNlIFNIQURFUl9TWU1CT0xfVFlQRV9VTklGT1JNOiB7CkBAIC0xNTYsNyAr
MTYwLDcgQEAKICAgICBtX3Jlc291cmNlcyA9IHJlc291cmNlczsKIH0KIAotYm9vbCBBTkdMRVdl
YktpdEJyaWRnZTo6Y29tcGlsZVNoYWRlclNvdXJjZShjb25zdCBjaGFyKiBzaGFkZXJTb3VyY2Us
IEFOR0xFU2hhZGVyVHlwZSBzaGFkZXJUeXBlLCBTdHJpbmcmIHRyYW5zbGF0ZWRTaGFkZXJTb3Vy
Y2UsIFN0cmluZyYgc2hhZGVyVmFsaWRhdGlvbkxvZywgVmVjdG9yPEFOR0xFU2hhZGVyU3ltYm9s
PiYgc3ltYm9scywgaW50IGV4dHJhQ29tcGlsZU9wdGlvbnMpCitib29sIEFOR0xFV2ViS2l0QnJp
ZGdlOjpjb21waWxlU2hhZGVyU291cmNlKGNvbnN0IGNoYXIqIHNoYWRlclNvdXJjZSwgQU5HTEVT
aGFkZXJUeXBlIHNoYWRlclR5cGUsIFN0cmluZyYgdHJhbnNsYXRlZFNoYWRlclNvdXJjZSwgU3Ry
aW5nJiBzaGFkZXJWYWxpZGF0aW9uTG9nLCBWZWN0b3I8c3RkOjpwYWlyPEFOR0xFU2hhZGVyU3lt
Ym9sVHlwZSwgc2g6OlNoYWRlclZhcmlhYmxlPj4mIHN5bWJvbHMsIGludCBleHRyYUNvbXBpbGVP
cHRpb25zKQogewogICAgIGlmICghYnVpbHRDb21waWxlcnMpIHsKICAgICAgICAgbV9mcmFnbWVu
dENvbXBpbGVyID0gU2hDb25zdHJ1Y3RDb21waWxlcihHTF9GUkFHTUVOVF9TSEFERVIsIG1fc2hh
ZGVyU3BlYywgbV9zaGFkZXJPdXRwdXQsICZtX3Jlc291cmNlcyk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmgJKHJl
dmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xF
V2ViS2l0QnJpZGdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDI3ICs1Nyw2IEBACiAgICAgU0hB
REVSX1NZTUJPTF9UWVBFX1ZBUllJTkcKIH07CiAKLXN0cnVjdCBBTkdMRVNoYWRlclN5bWJvbCB7
Ci0gICAgQU5HTEVTaGFkZXJTeW1ib2xUeXBlIHN5bWJvbFR5cGU7Ci0gICAgU3RyaW5nIG5hbWU7
Ci0gICAgU3RyaW5nIG1hcHBlZE5hbWU7Ci0gICAgc2g6OkdMZW51bSBkYXRhVHlwZTsKLSAgICB1
bnNpZ25lZCBzaXplOwotICAgIHNoOjpHTGVudW0gcHJlY2lzaW9uOwotICAgIGludCBzdGF0aWNV
c2U7Ci0KLSAgICBib29sIGlzU2FtcGxlcigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
c3ltYm9sVHlwZSA9PSBTSEFERVJfU1lNQk9MX1RZUEVfVU5JRk9STQotICAgICAgICAgICAgJiYg
KGRhdGFUeXBlID09IEdMX1NBTVBMRVJfMkQKLSAgICAgICAgICAgIHx8IGRhdGFUeXBlID09IEdM
X1NBTVBMRVJfQ1VCRQotI2lmICFQTEFURk9STShJT1MpICYmICEoKFBMQVRGT1JNKEVGTCkgfHwg
UExBVEZPUk0oR1RLKSkgJiYgVVNFKE9QRU5HTF9FU18yKSkKLSAgICAgICAgICAgIHx8IGRhdGFU
eXBlID09IEdMX1NBTVBMRVJfMkRfUkVDVF9BUkIKLSNlbmRpZgotICAgICAgICAgICAgKTsKLSAg
ICB9Ci19OwotCiBjbGFzcyBBTkdMRVdlYktpdEJyaWRnZSB7CiBwdWJsaWM6CiAKQEAgLTg3LDcg
KzY2LDcgQEAKICAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgZ2V0UmVzb3VyY2VzKCkgeyByZXR1cm4g
bV9yZXNvdXJjZXM7IH0KICAgICB2b2lkIHNldFJlc291cmNlcyhTaEJ1aWx0SW5SZXNvdXJjZXMp
OwogICAgIAotICAgIGJvb2wgY29tcGlsZVNoYWRlclNvdXJjZShjb25zdCBjaGFyKiBzaGFkZXJT
b3VyY2UsIEFOR0xFU2hhZGVyVHlwZSwgU3RyaW5nJiB0cmFuc2xhdGVkU2hhZGVyU291cmNlLCBT
dHJpbmcmIHNoYWRlclZhbGlkYXRpb25Mb2csIFZlY3RvcjxBTkdMRVNoYWRlclN5bWJvbD4mIHN5
bWJvbHMsIGludCBleHRyYUNvbXBpbGVPcHRpb25zID0gMCk7CisgICAgYm9vbCBjb21waWxlU2hh
ZGVyU291cmNlKGNvbnN0IGNoYXIqIHNoYWRlclNvdXJjZSwgQU5HTEVTaGFkZXJUeXBlLCBTdHJp
bmcmIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UsIFN0cmluZyYgc2hhZGVyVmFsaWRhdGlvbkxvZywg
VmVjdG9yPHN0ZDo6cGFpcjxBTkdMRVNoYWRlclN5bWJvbFR5cGUsIHNoOjpTaGFkZXJWYXJpYWJs
ZT4+JiBzeW1ib2xzLCBpbnQgZXh0cmFDb21waWxlT3B0aW9ucyA9IDApOwogCiBwcml2YXRlOgog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmgJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOTgs
MzggKzEyOTgsOCBAQAogICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IG1fd2ViR0xMYXllcjsK
ICNlbmRpZgogCi0gICAgc3RydWN0IFN5bWJvbEluZm8gewotICAgICAgICBTeW1ib2xJbmZvKCkK
LSAgICAgICAgICAgIDogdHlwZSgwKQotICAgICAgICAgICAgLCBzaXplKDApCi0gICAgICAgICAg
ICAsIHByZWNpc2lvbihHTF9OT05FKSAvLyBJbnZhbGlkIHByZWNpc2lvbi4KLSAgICAgICAgICAg
ICwgc3RhdGljVXNlKDApCi0gICAgICAgIHsKLSAgICAgICAgfQorICAgIHR5cGVkZWYgSGFzaE1h
cDxTdHJpbmcsIHNoOjpTaGFkZXJWYXJpYWJsZT4gU2hhZGVyU3ltYm9sTWFwOwogCi0gICAgICAg
IFN5bWJvbEluZm8oR0MzRGVudW0gdHlwZSwgaW50IHNpemUsIGNvbnN0IFN0cmluZyYgbWFwcGVk
TmFtZSwgc2g6OkdMZW51bSBwcmVjaXNpb24sIGludCBzdGF0aWNVc2UpCi0gICAgICAgICAgICA6
IHR5cGUodHlwZSkKLSAgICAgICAgICAgICwgc2l6ZShzaXplKQotICAgICAgICAgICAgLCBtYXBw
ZWROYW1lKG1hcHBlZE5hbWUpCi0gICAgICAgICAgICAsIHByZWNpc2lvbihwcmVjaXNpb24pCi0g
ICAgICAgICAgICAsIHN0YXRpY1VzZShzdGF0aWNVc2UpCi0gICAgICAgIHsKLSAgICAgICAgfQot
Ci0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShTeW1ib2xJbmZvJiBvdGhlcikgY29uc3QKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIHR5cGUgPT0gb3RoZXIudHlwZSAmJiBzaXplID09IG90
aGVyLnNpemUgJiYgbWFwcGVkTmFtZSA9PSBvdGhlci5tYXBwZWROYW1lOwotICAgICAgICB9Ci0K
LSAgICAgICAgR0MzRGVudW0gdHlwZTsKLSAgICAgICAgaW50IHNpemU7Ci0gICAgICAgIFN0cmlu
ZyBtYXBwZWROYW1lOwotICAgICAgICBzaDo6R0xlbnVtIHByZWNpc2lvbjsKLSAgICAgICAgaW50
IHN0YXRpY1VzZTsKLSAgICB9OwotCi0gICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgU3ltYm9s
SW5mbz4gU2hhZGVyU3ltYm9sTWFwOwotCiAgICAgc3RydWN0IFNoYWRlclNvdXJjZUVudHJ5IHsK
ICAgICAgICAgR0MzRGVudW0gdHlwZTsKICAgICAgICAgU3RyaW5nIHNvdXJjZTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xD
b21tb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uY3BwCShyZXZpc2lvbiAyMDgwMjEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3Bl
bkdMQ29tbW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDIyICsxODAsMjAgQEAKIAogICAg
IFN0cmluZyB0cmFuc2xhdGVkU2hhZGVyU291cmNlOwogICAgIFN0cmluZyBzaGFkZXJJbmZvTG9n
OwotICAgIGludCBleHRyYUNvbXBpbGVPcHRpb25zID0gU0hfQ0xBTVBfSU5ESVJFQ1RfQVJSQVlf
Qk9VTkRTIHwgU0hfVU5GT0xEX1NIT1JUX0NJUkNVSVQgfCBTSF9FTkZPUkNFX1BBQ0tJTkdfUkVT
VFJJQ1RJT05TIHwgU0hfSU5JVF9WQVJZSU5HU19XSVRIT1VUX1NUQVRJQ19VU0UgfCBTSF9MSU1J
VF9FWFBSRVNTSU9OX0NPTVBMRVhJVFkgfCBTSF9MSU1JVF9DQUxMX1NUQUNLX0RFUFRIOworICAg
IGludCBleHRyYUNvbXBpbGVPcHRpb25zID0gU0hfQ0xBTVBfSU5ESVJFQ1RfQVJSQVlfQk9VTkRT
IHwgU0hfVU5GT0xEX1NIT1JUX0NJUkNVSVQgfCBTSF9JTklUX09VVFBVVF9WQVJJQUJMRVMgfCBT
SF9FTkZPUkNFX1BBQ0tJTkdfUkVTVFJJQ1RJT05TIHwgU0hfTElNSVRfRVhQUkVTU0lPTl9DT01Q
TEVYSVRZIHwgU0hfTElNSVRfQ0FMTF9TVEFDS19ERVBUSDsKIAogICAgIGlmIChtX3JlcXVpcmVz
QnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKQotICAgICAgICBleHRyYUNvbXBpbGVPcHRpb25zIHw9
IFNIX0VNVUxBVEVfQlVJTFRfSU5fRlVOQ1RJT05TOworICAgICAgICBleHRyYUNvbXBpbGVPcHRp
b25zIHw9IFNIX0VNVUxBVEVfQUJTX0lOVF9GVU5DVElPTjsKIAotICAgIFZlY3RvcjxBTkdMRVNo
YWRlclN5bWJvbD4gc3ltYm9sczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPEFOR0xFU2hhZGVyU3lt
Ym9sVHlwZSwgc2g6OlNoYWRlclZhcmlhYmxlPj4gc3ltYm9sczsKICAgICBib29sIGlzVmFsaWQg
PSBjb21waWxlci5jb21waWxlU2hhZGVyU291cmNlKGVudHJ5LnNvdXJjZS51dGY4KCkuZGF0YSgp
LCBzaGFkZXJUeXBlLCB0cmFuc2xhdGVkU2hhZGVyU291cmNlLCBzaGFkZXJJbmZvTG9nLCBzeW1i
b2xzLCBleHRyYUNvbXBpbGVPcHRpb25zKTsKIAogICAgIGVudHJ5LmxvZyA9IHNoYWRlckluZm9M
b2c7CiAgICAgZW50cnkuaXNWYWxpZCA9IGlzVmFsaWQ7CiAKLSAgICBzaXplX3QgbnVtU3ltYm9s
cyA9IHN5bWJvbHMuc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtU3ltYm9s
czsgKytpKSB7Ci0gICAgICAgIEFOR0xFU2hhZGVyU3ltYm9sIHNoYWRlclN5bWJvbCA9IHN5bWJv
bHNbaV07Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpTeW1ib2xJbmZvIHN5bWJvbEluZm8o
c2hhZGVyU3ltYm9sLmRhdGFUeXBlLCBzaGFkZXJTeW1ib2wuc2l6ZSwgc2hhZGVyU3ltYm9sLm1h
cHBlZE5hbWUsIHNoYWRlclN5bWJvbC5wcmVjaXNpb24sIHNoYWRlclN5bWJvbC5zdGF0aWNVc2Up
OwotICAgICAgICBlbnRyeS5zeW1ib2xNYXAoc2hhZGVyU3ltYm9sLnN5bWJvbFR5cGUpLnNldChz
aGFkZXJTeW1ib2wubmFtZSwgc3ltYm9sSW5mbyk7CisgICAgZm9yIChjb25zdCBzdGQ6OnBhaXI8
QU5HTEVTaGFkZXJTeW1ib2xUeXBlLCBzaDo6U2hhZGVyVmFyaWFibGU+JiBwYWlyIDogc3ltYm9s
cykgeworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSA9IHBhaXIuc2Vjb25kLm5hbWU7
CisgICAgICAgIGVudHJ5LnN5bWJvbE1hcChwYWlyLmZpcnN0KS5zZXQoU3RyaW5nKG5hbWUuY19z
dHIoKSwgbmFtZS5sZW5ndGgoKSksIHBhaXIuc2Vjb25kKTsKICAgICB9CiAKICAgICBpZiAoIWlz
VmFsaWQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1v
bi5jcHAJKHJldmlzaW9uIDIwODAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM3Niw3ICszNzYsNyBAQAogICAgIGNvbnN0IGF1dG8mIHZlcnRleEVudHJ5ID0gbV9z
aGFkZXJTb3VyY2VNYXAuZmluZCh2ZXJ0ZXhTaGFkZXIpLT52YWx1ZTsKICAgICBjb25zdCBhdXRv
JiBmcmFnbWVudEVudHJ5ID0gbV9zaGFkZXJTb3VyY2VNYXAuZmluZChmcmFnbWVudFNoYWRlcikt
PnZhbHVlOwogCi0gICAgSGFzaE1hcDxTdHJpbmcsIFNoVmFyaWFibGVJbmZvPiBjb21iaW5lZFZh
cnlpbmdzOworICAgIEhhc2hNYXA8U3RyaW5nLCBzaDo6U2hhZGVyVmFyaWFibGU+IGNvbWJpbmVk
VmFyeWluZ3M7CiAgICAgZm9yIChjb25zdCBhdXRvJiB2ZXJ0ZXhTeW1ib2wgOiB2ZXJ0ZXhFbnRy
eS52YXJ5aW5nTWFwKSB7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgc3ltYm9sTmFtZSA9IHZlcnRl
eFN5bWJvbC5rZXk7CiAgICAgICAgIC8vIFRoZSB2YXJ5aW5nIG1hcCBpbmNsdWRlcyB2YXJpYWJs
ZXMgZm9yIGVhY2ggaW5kZXggb2YgYW4gYXJyYXkgdmFyaWFibGUuCkBAIC0zODksMTMgKzM4OSw4
IEBACiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBjb25zdCBhdXRvJiBmcmFnbWVu
dFN5bWJvbCA9IGZyYWdtZW50RW50cnkudmFyeWluZ01hcC5maW5kKHN5bWJvbE5hbWUpOwotICAg
ICAgICBpZiAoZnJhZ21lbnRTeW1ib2wgIT0gZnJhZ21lbnRFbnRyeS52YXJ5aW5nTWFwLmVuZCgp
KSB7Ci0gICAgICAgICAgICBTaFZhcmlhYmxlSW5mbyBzeW1ib2xJbmZvOwotICAgICAgICAgICAg
c3ltYm9sSW5mby50eXBlID0gKGZyYWdtZW50U3ltYm9sLT52YWx1ZSkudHlwZTsKLSAgICAgICAg
ICAgIC8vIFRoZSBhcnJheXMgYXJlIGFscmVhZHkgc3BsaXQgdXAuCi0gICAgICAgICAgICBzeW1i
b2xJbmZvLnNpemUgPSAoZnJhZ21lbnRTeW1ib2wtPnZhbHVlKS5zaXplOwotICAgICAgICAgICAg
Y29tYmluZWRWYXJ5aW5ncy5hZGQoc3ltYm9sTmFtZSwgc3ltYm9sSW5mbyk7Ci0gICAgICAgIH0K
KyAgICAgICAgaWYgKGZyYWdtZW50U3ltYm9sICE9IGZyYWdtZW50RW50cnkudmFyeWluZ01hcC5l
bmQoKSkKKyAgICAgICAgICAgIGNvbWJpbmVkVmFyeWluZ3MuYWRkKHN5bWJvbE5hbWUsIGZyYWdt
ZW50U3ltYm9sLT52YWx1ZSk7CiAgICAgfQogCiAgICAgc2l6ZV90IG51bVZhcnlpbmdzID0gY29t
YmluZWRWYXJ5aW5ncy5zaXplKCk7CkBAIC00MDIsMTIgKzM5NywxMCBAQAogICAgIGlmICghbnVt
VmFyeWluZ3MpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgU2hWYXJpYWJsZUluZm8qIHZh
cmlhYmxlcyA9IG5ldyBTaFZhcmlhYmxlSW5mb1tudW1WYXJ5aW5nc107Ci0gICAgaW50IGluZGV4
ID0gMDsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHZhcnlpbmdTeW1ib2wgOiBjb21iaW5lZFZhcnlp
bmdzKSB7Ci0gICAgICAgIHZhcmlhYmxlc1tpbmRleF0gPSB2YXJ5aW5nU3ltYm9sLnZhbHVlOwot
ICAgICAgICBpbmRleCsrOwotICAgIH0KKyAgICBzdGQ6OnZlY3RvcjxzaDo6U2hhZGVyVmFyaWFi
bGU+IHZhcmlhYmxlczsKKyAgICB2YXJpYWJsZXMucmVzZXJ2ZShjb21iaW5lZFZhcnlpbmdzLnNp
emUoKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiB2YXJ5aW5nU3ltYm9sIDogY29tYmluZWRWYXJ5
aW5ncy52YWx1ZXMoKSkKKyAgICAgICAgdmFyaWFibGVzLnB1c2hfYmFjayh2YXJ5aW5nU3ltYm9s
KTsKIAogICAgIEdDM0RpbnQgbWF4VmFyeWluZ1ZlY3RvcnMgPSAwOwogI2lmICFQTEFURk9STShJ
T1MpICYmICEoKFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oR1RLKSkgJiYgVVNFKE9QRU5HTF9F
U18yKSkKQEAgLTQxNyw5ICs0MTAsNyBAQAogI2Vsc2UKICAgICA6OmdsR2V0SW50ZWdlcnYoTUFY
X1ZBUllJTkdfVkVDVE9SUywgJm1heFZhcnlpbmdWZWN0b3JzKTsKICNlbmRpZgotICAgIGludCBy
ZXN1bHQgPSBTaENoZWNrVmFyaWFibGVzV2l0aGluUGFja2luZ0xpbWl0cyhtYXhWYXJ5aW5nVmVj
dG9ycywgdmFyaWFibGVzLCBudW1WYXJ5aW5ncyk7Ci0gICAgZGVsZXRlW10gdmFyaWFibGVzOwot
ICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFNoQ2hlY2tWYXJpYWJsZXNXaXRoaW5QYWNr
aW5nTGltaXRzKG1heFZhcnlpbmdWZWN0b3JzLCB2YXJpYWJsZXMpOwogfQogCiBib29sIEdyYXBo
aWNzQ29udGV4dDNEOjpwcmVjaXNpb25zTWF0Y2goUGxhdGZvcm0zRE9iamVjdCB2ZXJ0ZXhTaGFk
ZXIsIFBsYXRmb3JtM0RPYmplY3QgZnJhZ21lbnRTaGFkZXIpIGNvbnN0CkBAIC00MzEsMTEgKzQy
MiwxNCBAQAogCiAgICAgSGFzaE1hcDxTdHJpbmcsIHNoOjpHTGVudW0+IHZlcnRleFN5bWJvbFBy
ZWNpc2lvbk1hcDsKIAotICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiB2ZXJ0ZXhFbnRyeS51
bmlmb3JtTWFwKQotICAgICAgICB2ZXJ0ZXhTeW1ib2xQcmVjaXNpb25NYXAuYWRkKGVudHJ5LnZh
bHVlLm1hcHBlZE5hbWUsIGVudHJ5LnZhbHVlLnByZWNpc2lvbik7CisgICAgZm9yIChjb25zdCBh
dXRvJiBlbnRyeSA6IHZlcnRleEVudHJ5LnVuaWZvcm1NYXApIHsKKyAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIG1hcHBlZE5hbWUgPSBlbnRyeS52YWx1ZS5tYXBwZWROYW1lOworICAgICAgICB2
ZXJ0ZXhTeW1ib2xQcmVjaXNpb25NYXAuYWRkKFN0cmluZyhtYXBwZWROYW1lLmNfc3RyKCksIG1h
cHBlZE5hbWUubGVuZ3RoKCkpLCBlbnRyeS52YWx1ZS5wcmVjaXNpb24pOworICAgIH0KIAogICAg
IGZvciAoY29uc3QgYXV0byYgZW50cnkgOiBmcmFnbWVudEVudHJ5LnVuaWZvcm1NYXApIHsKLSAg
ICAgICAgY29uc3QgYXV0byYgdmVydGV4U3ltYm9sID0gdmVydGV4U3ltYm9sUHJlY2lzaW9uTWFw
LmZpbmQoZW50cnkudmFsdWUubWFwcGVkTmFtZSk7CisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBtYXBwZWROYW1lID0gZW50cnkudmFsdWUubWFwcGVkTmFtZTsKKyAgICAgICAgY29uc3QgYXV0
byYgdmVydGV4U3ltYm9sID0gdmVydGV4U3ltYm9sUHJlY2lzaW9uTWFwLmZpbmQoU3RyaW5nKG1h
cHBlZE5hbWUuY19zdHIoKSwgbWFwcGVkTmFtZS5sZW5ndGgoKSkpOwogICAgICAgICBpZiAodmVy
dGV4U3ltYm9sICE9IHZlcnRleFN5bWJvbFByZWNpc2lvbk1hcC5lbmQoKSAmJiB2ZXJ0ZXhTeW1i
b2wtPnZhbHVlICE9IGVudHJ5LnZhbHVlLnByZWNpc2lvbikKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CkBAIC05MDEsOCArODk1LDEwIEBACiAKICAgICAgICAgY29uc3QgU2hhZGVy
U3ltYm9sTWFwJiBzeW1ib2xNYXAgPSByZXN1bHQtPnZhbHVlLnN5bWJvbE1hcChzeW1ib2xUeXBl
KTsKICAgICAgICAgU2hhZGVyU3ltYm9sTWFwOjpjb25zdF9pdGVyYXRvciBzeW1ib2xFbnRyeSA9
IHN5bWJvbE1hcC5maW5kKG5hbWUpOwotICAgICAgICBpZiAoc3ltYm9sRW50cnkgIT0gc3ltYm9s
TWFwLmVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIHN5bWJvbEVudHJ5LT52YWx1ZS5tYXBwZWRO
YW1lOworICAgICAgICBpZiAoc3ltYm9sRW50cnkgIT0gc3ltYm9sTWFwLmVuZCgpKSB7CisgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWFwcGVkTmFtZSA9IHN5bWJvbEVudHJ5LT52YWx1
ZS5tYXBwZWROYW1lOworICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhtYXBwZWROYW1lLmNfc3Ry
KCksIG1hcHBlZE5hbWUubGVuZ3RoKCkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKHN5
bWJvbFR5cGUgPT0gU0hBREVSX1NZTUJPTF9UWVBFX0FUVFJJQlVURSAmJiAhbmFtZS5pc0VtcHR5
KCkpIHsKQEAgLTkzNyw3ICs5MzMsNyBAQAogICAgICAgICAKICAgICAgICAgY29uc3QgU2hhZGVy
U3ltYm9sTWFwJiBzeW1ib2xNYXAgPSByZXN1bHQtPnZhbHVlLnN5bWJvbE1hcChzeW1ib2xUeXBl
KTsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzeW1ib2xFbnRyeSA6IHN5bWJvbE1hcCkgewot
ICAgICAgICAgICAgaWYgKHN5bWJvbEVudHJ5LnZhbHVlLm1hcHBlZE5hbWUgPT0gbmFtZSkKKyAg
ICAgICAgICAgIGlmIChuYW1lID09IHN5bWJvbEVudHJ5LnZhbHVlLm1hcHBlZE5hbWUuY19zdHIo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sRW50cnkua2V5OwogICAgICAgICB9CiAg
ICAgfQpAQCAtOTY0LDcgKzk2MCw3IEBACiAgICAgICAgICAgICAKICAgICAgICAgICAgIGNvbnN0
IFNoYWRlclN5bWJvbE1hcCYgc3ltYm9sTWFwID0gcmVzdWx0LT52YWx1ZS5zeW1ib2xNYXAoc3Rh
dGljX2Nhc3Q8ZW51bSBBTkdMRVNoYWRlclN5bWJvbFR5cGU+KHN5bWJvbFR5cGUpKTsKICAgICAg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgc3ltYm9sRW50cnkgOiBzeW1ib2xNYXApIHsKLSAgICAg
ICAgICAgICAgICBpZiAoc3ltYm9sRW50cnkudmFsdWUubWFwcGVkTmFtZSA9PSBuYW1lKQorICAg
ICAgICAgICAgICAgIGlmIChuYW1lID09IHN5bWJvbEVudHJ5LnZhbHVlLm1hcHBlZE5hbWUuY19z
dHIoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbEVudHJ5LmtleTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQo=
</data>
<flag name="review"
          id="316035"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>